Built motion from commit 775e2a94.|2.6.3 2.6.3
authorAndrea Bianco <andrea.bianco@xcally.com>
Thu, 24 Feb 2022 07:30:39 +0000 (08:30 +0100)
committerAndrea Bianco <andrea.bianco@xcally.com>
Thu, 24 Feb 2022 07:30:39 +0000 (08:30 +0100)
1323 files changed:
apidoc/api_data.js
apidoc/api_data.json
apidoc/api_project.js
apidoc/api_project.json
package.json
public/app/forgot/i18n/pt-BR.json
public/app/login/i18n/pt-BR.json
public/app/main/apps/analytics/i18n/de.json
public/app/main/apps/analytics/i18n/nl.json
public/app/main/apps/analytics/i18n/pt-BR.json
public/app/main/apps/callysquare/i18n/de.json
public/app/main/apps/callysquare/i18n/nl.json
public/app/main/apps/callysquare/i18n/pt-BR.json
public/app/main/apps/chat/i18n/de.json
public/app/main/apps/chat/i18n/nl.json
public/app/main/apps/chat/i18n/pt-BR.json
public/app/main/apps/contactmanager/i18n/de.json
public/app/main/apps/contactmanager/i18n/nl.json
public/app/main/apps/contactmanager/i18n/pt-BR.json
public/app/main/apps/dashboards/i18n/ar.json
public/app/main/apps/dashboards/i18n/cs.json
public/app/main/apps/dashboards/i18n/da.json
public/app/main/apps/dashboards/i18n/de.json
public/app/main/apps/dashboards/i18n/en.json
public/app/main/apps/dashboards/i18n/es.json
public/app/main/apps/dashboards/i18n/et.json
public/app/main/apps/dashboards/i18n/fa.json
public/app/main/apps/dashboards/i18n/fi.json
public/app/main/apps/dashboards/i18n/fr.json
public/app/main/apps/dashboards/i18n/he.json
public/app/main/apps/dashboards/i18n/hi.json
public/app/main/apps/dashboards/i18n/hu.json
public/app/main/apps/dashboards/i18n/id.json
public/app/main/apps/dashboards/i18n/it.json
public/app/main/apps/dashboards/i18n/ja.json
public/app/main/apps/dashboards/i18n/ko.json
public/app/main/apps/dashboards/i18n/lt.json
public/app/main/apps/dashboards/i18n/lv.json
public/app/main/apps/dashboards/i18n/nl.json
public/app/main/apps/dashboards/i18n/no.json
public/app/main/apps/dashboards/i18n/pl.json
public/app/main/apps/dashboards/i18n/pt-BR.json
public/app/main/apps/dashboards/i18n/pt-PT.json
public/app/main/apps/dashboards/i18n/ru.json
public/app/main/apps/dashboards/i18n/sv.json
public/app/main/apps/dashboards/i18n/tr.json
public/app/main/apps/dashboards/i18n/zh-CN.json
public/app/main/apps/dashboards/i18n/zh-TW.json
public/app/main/apps/fax/i18n/de.json
public/app/main/apps/fax/i18n/nl.json
public/app/main/apps/fax/i18n/pt-BR.json
public/app/main/apps/help/i18n/pt-BR.json
public/app/main/apps/integrations/i18n/nl.json
public/app/main/apps/integrations/i18n/pt-BR.json
public/app/main/apps/jscripty/i18n/de.json
public/app/main/apps/jscripty/i18n/pt-BR.json
public/app/main/apps/mail/i18n/de.json
public/app/main/apps/mail/i18n/pt-BR.json
public/app/main/apps/motiondialer/i18n/de.json
public/app/main/apps/motiondialer/i18n/pt-BR.json
public/app/main/apps/openchannel/i18n/de.json
public/app/main/apps/openchannel/i18n/pt-BR.json
public/app/main/apps/settings/i18n/ar.json
public/app/main/apps/settings/i18n/cs.json
public/app/main/apps/settings/i18n/da.json
public/app/main/apps/settings/i18n/de.json
public/app/main/apps/settings/i18n/en.json
public/app/main/apps/settings/i18n/es.json
public/app/main/apps/settings/i18n/et.json
public/app/main/apps/settings/i18n/fa.json
public/app/main/apps/settings/i18n/fi.json
public/app/main/apps/settings/i18n/fr.json
public/app/main/apps/settings/i18n/he.json
public/app/main/apps/settings/i18n/hi.json
public/app/main/apps/settings/i18n/hu.json
public/app/main/apps/settings/i18n/id.json
public/app/main/apps/settings/i18n/it.json
public/app/main/apps/settings/i18n/ja.json
public/app/main/apps/settings/i18n/ko.json
public/app/main/apps/settings/i18n/lt.json
public/app/main/apps/settings/i18n/lv.json
public/app/main/apps/settings/i18n/nl.json
public/app/main/apps/settings/i18n/no.json
public/app/main/apps/settings/i18n/pl.json
public/app/main/apps/settings/i18n/pt-BR.json
public/app/main/apps/settings/i18n/pt-PT.json
public/app/main/apps/settings/i18n/ru.json
public/app/main/apps/settings/i18n/sv.json
public/app/main/apps/settings/i18n/tr.json
public/app/main/apps/settings/i18n/zh-CN.json
public/app/main/apps/settings/i18n/zh-TW.json
public/app/main/apps/sms/i18n/de.json
public/app/main/apps/sms/i18n/pt-BR.json
public/app/main/apps/staff/i18n/de.json
public/app/main/apps/staff/i18n/en.json
public/app/main/apps/staff/i18n/pt-BR.json
public/app/main/apps/tools/i18n/de.json
public/app/main/apps/tools/i18n/pt-BR.json
public/app/main/apps/voice/i18n/de.json
public/app/main/apps/voice/i18n/pt-BR.json
public/app/main/apps/whatsapp/i18n/de.json
public/app/main/apps/whatsapp/i18n/pt-BR.json
public/app/quick-panel/i18n/pt-BR.json
public/app/toolbar/i18n/ar.json
public/app/toolbar/i18n/cs.json
public/app/toolbar/i18n/da.json
public/app/toolbar/i18n/de.json
public/app/toolbar/i18n/en.json
public/app/toolbar/i18n/es.json
public/app/toolbar/i18n/et.json
public/app/toolbar/i18n/fa.json
public/app/toolbar/i18n/fi.json
public/app/toolbar/i18n/fr.json
public/app/toolbar/i18n/he.json
public/app/toolbar/i18n/hi.json
public/app/toolbar/i18n/hu.json
public/app/toolbar/i18n/id.json
public/app/toolbar/i18n/it.json
public/app/toolbar/i18n/ja.json
public/app/toolbar/i18n/ko.json
public/app/toolbar/i18n/lt.json
public/app/toolbar/i18n/lv.json
public/app/toolbar/i18n/nl.json
public/app/toolbar/i18n/no.json
public/app/toolbar/i18n/pl.json
public/app/toolbar/i18n/pt-BR.json
public/app/toolbar/i18n/pt-PT.json
public/app/toolbar/i18n/ru.json
public/app/toolbar/i18n/sv.json
public/app/toolbar/i18n/tr.json
public/app/toolbar/i18n/zh-CN.json
public/app/toolbar/i18n/zh-TW.json
public/index.html
public/scripts/app.4132798e.js [moved from public/scripts/app.4e198ed1.js with 54% 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/authActiveDirectory/authActiveDirectory.controller.js
server/api/authActiveDirectory/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.events.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/client-side-logs.js
server/api/cloudProvider/cloudProvider.attributes.js
server/api/cloudProvider/cloudProvider.controller.js
server/api/cloudProvider/cloudProvider.model.js
server/api/cloudProvider/cloudProvider.oauth.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/cmContactHasItem/cmContactHasItem.attributes.js
server/api/cmContactHasItem/cmContactHasItem.controller.js
server/api/cmContactHasItem/cmContactHasItem.model.js
server/api/cmContactHasItem/cmContactHasItem.rpc.js
server/api/cmContactHasItem/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/cmHopperAdditionalPhone/cmHopperAdditionalPhone.attributes.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.controller.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model.js
server/api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc.js
server/api/cmHopperAdditionalPhone/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/contactItemType/contactItemType.attributes.js
server/api/contactItemType/contactItemType.controller.js
server/api/contactItemType/contactItemType.model.js
server/api/contactItemType/contactItemType.rpc.js
server/api/contactItemType/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-setting/index.js
server/api/user-setting/user-setting.attributes.js
server/api/user-setting/user-setting.controller.js
server/api/user-setting/user-setting.events.js
server/api/user-setting/user-setting.model.js
server/api/user-setting/user-setting.socket.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/import/cm/csvUpdates.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/cloud-provider.js
server/config/schedule/index.js
server/config/schedule/transcribe.js
server/config/schedule/whatsapp.js
server/config/seedContact.js
server/config/seedUsers.js
server/config/socketio.js
server/config/triggers/index.js
server/config/utils.js
server/errors/api.js [new file with mode: 0644]
server/errors/index.js
server/migrations/2.6.3.js [new file with mode: 0644]
server/mysqldb/index.js
server/routes.js
server/rpc/index.js
server/services/agi/channel.js
server/services/agi/error.js
server/services/agi/events.js [new file with mode: 0644]
server/services/agi/graph/index.js
server/services/agi/index.js
server/services/agi/mailRpc/index.js
server/services/agi/project.js [new file with mode: 0644]
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/additionalPhone.js [deleted file]
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/cmHopperAdditionalPhone.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
server/utils/client-side-logger.js
server/utils/loggers.js
server/utils/mask-sensitive-data.js
server/utils/safe-template.js

index ec0fdb3..1cb4386 100644 (file)
@@ -7722,13 +7722,13 @@ define({ "api": [
     "groupTitle": "Cm_Hopper"
   },
   {
-    "type": "post",
-    "url": "/api/cm/hopper/previewrecall",
+    "type": "get",
+    "url": "/api/cm/hopper/{id}/previewrecall",
     "title": "Gets Preview Dialer Contacts for Recall",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/cm/hopper/previewrecall -d '{\"hopperId\": 1}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X GET",
+        "content": "curl https://{domain}/api/cm/hopper/{id}/previewrecall \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X GET",
         "type": "json"
       }
     ],
index f239020..6174362 100644 (file)
     "groupTitle": "Cm_Hopper"
   },
   {
-    "type": "post",
-    "url": "/api/cm/hopper/previewrecall",
+    "type": "get",
+    "url": "/api/cm/hopper/{id}/previewrecall",
     "title": "Gets Preview Dialer Contacts for Recall",
     "examples": [
       {
         "title": "Example usage:",
-        "content": "curl https://{domain}/api/cm/hopper/previewrecall -d '{\"hopperId\": 1}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X GET",
+        "content": "curl https://{domain}/api/cm/hopper/{id}/previewrecall \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X GET",
         "type": "json"
       }
     ],
index 2cda193..ee5d70e 100644 (file)
@@ -1,6 +1,6 @@
 define({
   "name": "xCALLY Motion API",
-  "version": "2.6.2",
+  "version": "2.6.3",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
@@ -17,7 +17,7 @@ define({
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-02-10T09:02:47.613Z",
+    "time": "2022-02-24T07:25:07.991Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 07b31ab..9a24a04 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "xCALLY Motion API",
-  "version": "2.6.2",
+  "version": "2.6.3",
   "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
   "title": "xCALLY MOTION API",
   "header": {
@@ -17,7 +17,7 @@
   "apidoc": "0.3.0",
   "generator": {
     "name": "apidoc",
-    "time": "2022-02-10T09:02:47.613Z",
+    "time": "2022-02-24T07:25:07.991Z",
     "url": "http://apidocjs.com",
     "version": "0.24.0"
   }
index 361d6b4..740648b 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.6.2",
+  "version": "2.6.3",
   "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.",
   "main": "server/app.js",
   "engines": {
index caa1d08..f024ec7 100644 (file)
@@ -2,7 +2,7 @@
   "FORGOTPASSWORD": {
     "TITLE": "Recupere sua senha",
     "EMAIL_ADRESS": "Endereço de e-mail",
-    "SEND_RESET_LINK": "ENVIAR LINK PARA RESET",
+    "SEND_RESET_LINK": "Enviar link para reset",
     "GO_BACK": "Volte para o login",
     "LINK_SENT": "Link enviado",
     "LINNK_SENT_MESSAGE": "Um e-mail contendo um link para redefinir sua senha foi enviado para o seu endereço!",
index bffb47d..d9f974d 100644 (file)
@@ -10,7 +10,7 @@
     "REMEMBER_ME": "Lembrar-me",
     "FORGOT_PASSWORD": "Esqueceu a senha?",
     "LOG_IN": "Entrar",
-    "OR": "OU",
+    "OR": "Ou",
     "WITH_GOOGLE": "Logar com o Google",
     "WITH_FACEBOOK": "Logar com o Facebook",
     "DONT_HAVE_ACCOUNT": "Não tem conta?",
index f771c4b..e6b577a 100644 (file)
@@ -1,20 +1,20 @@
 {
   "ANALYTICS": {
     "NAME": "Name",
-    "ANALYTICS": "Reporting",
-    "METRICS": "Eigene Kennzahlen",
-    "ID": "ID",
+    "ANALYTICS": "Analytics",
+    "METRICS": "Kennzahlen",
+    "ID": "Id",
     "TABLE": "Tabelle",
     "DESCRIPTION": "Beschreibung",
     "SEARCH_FOR_ANYONE": "Suche",
-    "METRIC": "MYSQL-Ausdruck. Beispiel: DATE(queuecallerjoinat)",
+    "METRIC": "Metrik",
     "ERRORS": {
-      "NAME_REQUIRED": "Name erforderlich",
-      "METRIC_REQUIRED": "Metrik erforderlich",
-      "COLUMN_REQUIRED": "Spalte erforderlich",
-      "VALUE_REQUIRED": "Wert erforderlich",
-      "CUSTOM_METRIC_REQUIRED": "Benutzerdef. Metrik erforderlich",
-      "ALIAS_REQUIRED": "Alias erforderlich"
+      "NAME_REQUIRED": "Pflichtfeld",
+      "METRIC_REQUIRED": "Pflichtfeld",
+      "COLUMN_REQUIRED": "Pflichtfeld",
+      "VALUE_REQUIRED": "Pflichtfeld",
+      "CUSTOM_METRIC_REQUIRED": "Pflichtfeld",
+      "ALIAS_REQUIRED": "Pflichtfeld"
     },
     "NEW_METRIC": "Neue Metrik",
     "ADD_METRIC": "Metrik hinzufügen",
     "DELETE_METRIC": "Metrik löschen",
     "SAVE": "Speichern",
     "BACK": "Zurück",
-    "SELECTED": "Ausgewählt",
+    "SELECTED": "Ausgewählte",
     "SELECT_ALL": "Alles auswählen",
     "SELECT_NONE": "Nichts auswählen",
     "TYPE": "Typ",
-    "EXTRACTEDREPORTS": "Ausgeführte Berichte",
+    "EXTRACTEDREPORTS": "Extrahierte Berichte",
     "DATE_RANGE_FROM": "Datum von",
     "DATE_RANGE_TO": "Datum bis",
     "GENERATED_AT": "Generiert am",
@@ -38,7 +38,7 @@
     "NEW_REPORT": "Neuer Bericht",
     "ADD_REPORT": "Bericht hinzufügen",
     "COPY_REPORT": "Bericht kopieren",
-    "PREVIEW_REPORT": "Vorschau Bericht",
+    "PREVIEW_REPORT": "Berichtvorschau",
     "RUN_REPORT": "Bericht ausführen",
     "DOWNLOAD_JSON_REPORT": "Bericht exportieren JSON",
     "EDIT_REPORT": "Bericht bearbeiten",
@@ -50,7 +50,7 @@
     "ERROR": "Fehler",
     "QUERY_ERROR": "Abfragefehler",
     "MESSAGE": "Nachricht",
-    "CLOSE": "Schließen",
+    "CLOSE": "Schliessen",
     "FORMAT": "Format",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
@@ -61,7 +61,7 @@
     "COLUMN": "Spalte",
     "VALUE": "Wert",
     "PREVIEW": "Vorschau",
-    "LIMITED_RESULT": "Ansicht begrenzt",
+    "LIMITED_RESULT": "Ergebins begrenzt",
     "NO_DATA": "Keine Daten",
     "CONDITIONS": "Bedingungen",
     "ALIAS": "Alias",
@@ -75,9 +75,9 @@
     "NO_METRIC_FOUND": "Keine Metrik gefunden",
     "NO_AVAILABLE_INFO": "keine Informationen verfügbar",
     "CUSTOM_METRIC": "Benutzerdefinierte Metrik",
-    "DELETE_EXTRACTEDREPORT": "Bericht löschen",
-    "EDIT_EXTRACTEDREPORT": "Bericht bearbeiten",
-    "DOWNLOAD_EXTRACTEDREPORT": "Bericht herunterladen",
+    "DELETE_EXTRACTEDREPORT": "Extrahierte Berichte löschen",
+    "EDIT_EXTRACTEDREPORT": "Extrahierte Berichte bearbeiten",
+    "DOWNLOAD_EXTRACTEDREPORT": "Extrahierte Berichte herunterladen",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
     "OF": "von",
index 784ce48..c214138 100644 (file)
@@ -1,56 +1,56 @@
 {
   "ANALYTICS": {
     "NAME": "Naam",
-    "ANALYTICS": "Analyses",
-    "METRICS": "Statistieken",
+    "ANALYTICS": "Analytics",
+    "METRICS": "Metrieken",
     "ID": "Id",
     "TABLE": "Tabel",
     "DESCRIPTION": "Beschrijving",
-    "SEARCH_FOR_ANYONE": "Zoeken",
-    "METRIC": "Statistiek",
+    "SEARCH_FOR_ANYONE": "Zoeken voor iedereen",
+    "METRIC": "Metrisch",
     "ERRORS": {
-      "NAME_REQUIRED": "Verplicht veld",
-      "METRIC_REQUIRED": "Verplicht veld",
-      "COLUMN_REQUIRED": "Verplicht veld",
-      "VALUE_REQUIRED": "Verplicht veld",
-      "CUSTOM_METRIC_REQUIRED": "Verplicht veld",
-      "ALIAS_REQUIRED": "Verplicht veld"
+      "NAME_REQUIRED": "De naam is verplicht",
+      "METRIC_REQUIRED": "De metrische is vereist",
+      "COLUMN_REQUIRED": "De kolom is vereist",
+      "VALUE_REQUIRED": "De waarde is vereist",
+      "CUSTOM_METRIC_REQUIRED": "De aangepaste metrisch is vereist",
+      "ALIAS_REQUIRED": "De alias is vereist"
     },
-    "NEW_METRIC": "Nieuwe Statistiek",
-    "ADD_METRIC": "Statistiek Toevoegen",
-    "EDIT_METRIC": "Statistiek Bewerken",
-    "DELETE_METRIC": "Statistiek Verwijderen",
+    "NEW_METRIC": "Nieuwe metrisch",
+    "ADD_METRIC": "Voeg metrisch",
+    "EDIT_METRIC": "Edit metrisch",
+    "DELETE_METRIC": "Verwijder metrisch",
     "SAVE": "Opslaan",
     "BACK": "Terug",
     "SELECTED": "Geselecteerd",
-    "SELECT_ALL": "Selecteer Alles",
-    "SELECT_NONE": "Selecteer Geen",
+    "SELECT_ALL": "Alles selecteren",
+    "SELECT_NONE": "Selecteer None (Geen).",
     "TYPE": "Type",
-    "EXTRACTEDREPORTS": "Resultaten",
+    "EXTRACTEDREPORTS": "Uitgepakte rapporten",
     "DATE_RANGE_FROM": "Datumbereik Van",
     "DATE_RANGE_TO": "Datumbereik Tot",
-    "GENERATED_AT": "Gegenereerd Op",
+    "GENERATED_AT": "Gegenereerd.",
     "STATUS": "Status",
-    "OUTPUT": "Resultaat",
+    "OUTPUT": "Uitgang",
     "REPORTS": "Rapporten",
     "SEARCH_FOR_FOLDER": "Zoeken naar map",
-    "CREATED_AT": "Gegenereerd Op",
-    "NEW_REPORT": "Nieuw Rapport",
-    "ADD_REPORT": "Rapport Toevoegen",
-    "COPY_REPORT": "Raport Kopiëren",
-    "PREVIEW_REPORT": "Voorbeeldrapport",
-    "RUN_REPORT": "Rapport Genereren",
-    "DOWNLOAD_JSON_REPORT": "Rapportgegevens Exporteren JSON",
-    "EDIT_REPORT": "Rapport Bewerken",
-    "DELETE_REPORT": "Rapport Verwijderen",
-    "CREATE": "Map Nanmaken",
-    "RENAME": "Map Hernoemen",
-    "REMOVE": "Map Verwijderen",
-    "SELECT_NODE": "Map Selecteren",
+    "CREATED_AT": "Gemaakt op",
+    "NEW_REPORT": "Nieuw rapport",
+    "ADD_REPORT": "Rapport toevoegen",
+    "COPY_REPORT": "Kopie rapport",
+    "PREVIEW_REPORT": "Voorbeeldrapport.",
+    "RUN_REPORT": "Rapport uitvoeren",
+    "DOWNLOAD_JSON_REPORT": "Rapportgegevens exporteren JSON",
+    "EDIT_REPORT": "Rapport bewerken",
+    "DELETE_REPORT": "Rapport verwijderen",
+    "CREATE": "Map maken",
+    "RENAME": "Naam van map wijzigen",
+    "REMOVE": "Map verwijderen",
+    "SELECT_NODE": "Map selecteren",
     "ERROR": "Fout",
     "QUERY_ERROR": "Query fout",
     "MESSAGE": "Bericht",
-    "CLOSE": "Sluiten",
+    "CLOSE": "Dicht",
     "FORMAT": "Formaat",
     "SETTINGS": "Instellingen",
     "GENERAL": "Algemeen",
     "VALUE": "Waarde",
     "PREVIEW": "Afdrukvoorbeeld",
     "LIMITED_RESULT": "*Beperkte resultaten",
-    "NO_DATA": "Geen resultaten gevonden",
+    "NO_DATA": "Geen gegevens resultaten",
     "CONDITIONS": "Voorwaarden",
     "ALIAS": "Alias",
     "FUNCTION": "Functie",
-    "GROUP_BY": "Groeperen Op",
-    "ORDER_BY": "Sorteren op Op",
+    "GROUP_BY": "Groeperen op",
+    "ORDER_BY": "Order By",
     "ADD_REPORTFIELD": "Veld toevoegen",
-    "EDIT_REPORTFIELD": "Invoerveld Bewerken",
-    "DELETE_REPORTFIELD": "Veld Verwijderen",
-    "METRIC_NAME": "Statistiek",
-    "NO_METRIC_FOUND": "Geen statistieken gevonden",
+    "EDIT_REPORTFIELD": "Invoerveld",
+    "DELETE_REPORTFIELD": "Veld wissen",
+    "METRIC_NAME": "Metrisch",
+    "NO_METRIC_FOUND": "Geen metrische gevonden",
     "NO_AVAILABLE_INFO": "Geen beschikbare informatie",
-    "CUSTOM_METRIC": "Aangepaste Statistiek",
-    "DELETE_EXTRACTEDREPORT": "Rapport Verwijderen",
-    "EDIT_EXTRACTEDREPORT": "Rapport Bewerken",
-    "DOWNLOAD_EXTRACTEDREPORT": "Rapport Downloaden",
+    "CUSTOM_METRIC": "Aangepaste metrisch",
+    "DELETE_EXTRACTEDREPORT": "Verwijder geëxtraheerd verslag",
+    "EDIT_EXTRACTEDREPORT": "Edit geëxtraheerd verslag",
+    "DOWNLOAD_EXTRACTEDREPORT": "Download geëxtraheerd verslag",
     "PAGE": "Pagina",
     "ROWSPERPAGE": "Rijen per pagina",
     "OF": "Van",
index 4a4f088..c1efa84 100644 (file)
@@ -41,7 +41,7 @@
     "NEW_REPORT": "Novo relatório",
     "ADD_REPORT": "Adicionar relatório",
     "COPY_REPORT": "Copiar relatório",
-    "PREVIEW_REPORT": "Relatório de pré-visualização",
+    "PREVIEW_REPORT": "Pré-visualização do relatório",
     "RUN_REPORT": "Executar relatório",
     "DOWNLOAD_JSON_REPORT": "Exportar relatório JSON",
     "EDIT_REPORT": "Editar relatório",
@@ -84,6 +84,6 @@
     "PAGE": "Página",
     "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
-    "WEB_REPORT": "Relatório da web"
+    "WEB_REPORT": "Relatório web"
   }
 }
index e40e468..43d5be6 100644 (file)
@@ -1,20 +1,20 @@
 {
   "CALLYSQUARE": {
-    "ACCOUNT_ID": "Konto",
-    "ADDUSER_PROJECTS": "Benutzer zum Projekt hinzufügen",
+    "ACCOUNT_ID": "Account",
+    "ADDUSER_PROJECTS": "Benutzer zu dem Projekt hinzufügen",
     "ADD_ODBC": "ODBC hinzufügen",
     "ADD_PROJECT": "Projekt hinzufügen",
-    "ADD_VARIABLE": "Variabel hinzufügen",
+    "ADD_VARIABLE": "Variable hinzufügen",
     "AGENTS": "Agenten",
-    "AGI": "Skript",
+    "AGI": "AGI",
     "ALL_USERS": "Alle Benutzer",
     "ANSWER": "Antwort",
     "APIKEY": "API-Schlüssel",
     "APPID": "App-ID",
-    "APPLICATION": "Anwendung",
-    "APPSECRET": "App-Secret",
-    "ARGS": "Argumente",
-    "ATTACHMENT_NAME": "Anhangsname",
+    "APPLICATION": "Application",
+    "APPSECRET": "App Geheimnis",
+    "ARGS": "Arguments",
+    "ATTACHMENT_NAME": "Name des Anhangs",
     "ATTACHMENT_PATH": "Anhangspfad",
     "ATTACHMENT_TYPE": "Anhangstyp",
     "AUDIO": "Audio",
     "AWSLEX": "Amazon Lex",
     "AWSPOLLY": "AWS Polly",
     "AWS_ACCESS_KEY_ID": "Zugangsschlüssel-ID",
-    "AWS_BOT_NAME": "BOT-Name",
-    "AWS_LEX_REGION": "Lex-Region",
-    "AWS_POLLY_REGION": "Polly-Region",
-    "AWS_POLLY_VOICE": "Polly-Sprache",
+    "AWS_BOT_NAME": "Bot-Name",
+    "AWS_LEX_REGION": "Region",
+    "AWS_POLLY_REGION": "Region",
+    "AWS_POLLY_VOICE": "Sprache",
     "AWS_SECRET_ACCESS_KEY": "Geheimer Zugangsschlüssel",
     "AWS_TEXT_TYPE": "Texttyp",
     "BACK": "Zurück",
     "BODY": "Body",
     "CALLBACK": "Rückruf",
     "CALLBACK_PRIORITY": "Priorität",
-    "CALLYSQUARE": "Callflow-Editor",
+    "CALLYSQUARE": "Cally Square",
     "CC": "CC",
     "CHOOSE_ATTACHMENT": "Anhang wählen",
     "CLOSE": "Schließen",
-    "COMMAND": "Eingabe",
-    "COMPUTEDVARIABLES": "Skriptpfad für berechnete Variabeln",
-    "CONDITION": "Bedingung",
+    "COMMAND": "Befehlen",
+    "COMPUTEDVARIABLES": "Skriptpfad für berechnete Variablen",
+    "CONDITION": "Voraussetzung",
     "CONTEXT": "Kontext",
     "COPY": "Kopieren",
     "COPY_PROJECT": "Projekt kopieren",
@@ -61,7 +61,7 @@
     "DIGIT": "Maximale Ziffern",
     "DIGITS": "Ziffern",
     "DOWNLOAD_SQUARERECORDING": "Aufnahme hochladen",
-    "DROP_TO_UPLOAD": "HIER ABLEGEN ZUM UPLOADEN",
+    "DROP_TO_UPLOAD": "ABLEGEN ZUM UPLOADEN",
     "DROP_TO_UPLOAD_MESSAGE": "Sie können hier auch Dateien hochladen. Nur XML- max.5 MB",
     "DSN": "DSN",
     "EDIT": "Bearbeiten",
     "EDIT_XML": "XML bearbeiten",
     "END": "Ende",
     "ERRORS": {
-      "DSN_REQUIRED": "DSN erforderlich",
-      "FIELD_REQUIRED": "Feld erforderlich",
-      "NAME_REQUIRED": "Name erforderlich",
-      "PROJECT_REQUIRED": "Projekt erforderlich",
-      "URL_REQUIRED": "URL erforderlich"
+      "DSN_REQUIRED": "Pflichtfeld",
+      "FIELD_REQUIRED": "Pflichtfeld",
+      "NAME_REQUIRED": "Pflichtfeld",
+      "PROJECT_REQUIRED": "Pflichtfeld",
+      "URL_REQUIRED": "Pflichtfeld"
     },
     "ESCAPE_DIGITS": "Escape Digits",
     "EXTEN": "Erweitern",
-    "EXTENSION": "Nebenstelle/Ziel",
+    "EXTENSION": "Erweiterung",
     "EXT_DIAL": "Wählen extern",
-    "FILE": "Datei",
+    "FILE": "Dateiname",
     "FILENAME": "Dateiname",
-    "FILE_ID": "Datei ID",
-    "FINALLY": "Am Ende",
+    "FILE_ID": "Audio",
+    "FINALLY": "Schliesslich",
     "FINDBY": "Suchen nach",
     "GETDIGITS": "Ziffern erhalten",
     "GETSECRETDIGITS": "Geheime Ziffern erhalten",
     "LUMENVOXTTS": "Lumenvox Text-To-Speech",
     "MACRO": "Macro",
     "MAILBOX": "Mailbox",
-    "MATH": "Mathematik",
+    "MATH": "Math",
     "MAXDIGIT": "Maximum Ziffern",
     "MENU": "Menü",
     "METHOD": "Methode",
     "OPERATION": "Operation",
     "OPTIONS": "Optionen",
     "OPTS": "Optionen",
-    "OUTPUT": "Ausgabe",
+    "OUTPUT": "Ausgang",
     "PAGE": "Seite",
     "PASSWORD": "Passwort",
     "PAUSE": "Pause",
-    "PAUSE_ID": "Pausen ID",
+    "PAUSE_ID": "Pause ID",
     "PERMISSIONADD_PROJECTS": "Benutzer zu dem Projekt hinzufügen",
     "PHONE": "Telefon",
     "PLAYBACK": "Wiedergabe",
     "PRIORITY": "Priorität",
     "PROJECT": "Projekt",
     "PROJECTS": "Projekte",
-    "PROJECT_ID": "Projekt ID",
-    "QUERY": "Query",
+    "PROJECT_ID": "Projekt",
+    "QUERY": "Abfrage",
     "QUEUE": "Warteschlange",
-    "QUEUE_ID": "Warteschlangen ID",
-    "RAWBODY": "Textkörper",
+    "QUEUE_ID": "Warteschlange ID",
+    "RAWBODY": "Body",
     "RAWHEADERS": "Überschriften",
-    "RECORD": "Aufzeichnung",
-    "RECORDINGFORMAT": "Aufzeichnungsformat",
+    "RECORD": "Aufnahme",
+    "RECORDINGFORMAT": "Aufnahme Format",
     "RESPONSE": "Antwort Timeout",
     "RESTAPI": "Rest API",
-    "RETRY": "Wiederholen",
+    "RETRY": "Wiederholungen",
     "ROWSPERPAGE": "Zeilen pro Seite",
     "SAVE": "Speichern",
-    "SAYDIGITS": "Ziffern sagen",
-    "SAYNUMBER": "Nummer sagen",
-    "SAYPHONETIC": "Phonetische Ansage",
+    "SAYDIGITS": "Say Digits",
+    "SAYNUMBER": "Say number",
+    "SAYPHONETIC": "Say Phonetics",
     "SEARCH_FOR_ANYONE": "Suchen",
     "SELECTED": "Ausgewählt",
     "SELECTED_USERS": "Ausgewählte Benutzer",
     "SESTEKTTS": "Sestek TTS",
     "SET": "Set",
     "SIP_ID": "SIP",
-    "SMS_ACCOUNT_ID": "ID Konto für SMS",
+    "SMS_ACCOUNT_ID": "Konto",
     "SMS_TEXT": "Text",
-    "SPEED": "Geschwindigkeit",
-    "SQUARERECORDINGS": "Aufzeichnungen",
-    "SSMLGENDER": "Geschlecht Stimme",
+    "SPEED": "Speed",
+    "SQUARERECORDINGS": "Aufnahmen",
+    "SSMLGENDER": "Geschlecht",
     "START": "Start",
     "SUBJECT": "Betreff",
     "SUBPROJECT": "Sub-Projekt",
     "SYSTEM": "System",
     "TELEPHONES": "Telefone",
-    "TEMPLATE_ID": "Vorlagen ID",
+    "TEMPLATE_ID": "Vorlage",
     "TEST_ODBC": "Test ODBC",
     "TEXT": "Text",
     "TILDEASR": "Tilde ASR",
     "TIMEOUT": "Timeout",
-    "TO": "An",
+    "TO": "To",
     "TRUNK_NAME": "Trunk",
     "TTS": "Google Text-To-Speech",
     "UNIQUEID": "Eindeutige ID",
     "UNPAUSE": "Pause beenden",
-    "UPDATE_DESCRIPTION": "Beschreibung aktualisieren",
+    "UPDATE_DESCRIPTION": "Update Beschreibung",
     "UPDATE_INFO": "Info aktualisieren",
     "URI": "URI",
     "URL": "URL",
     "DIALOGFLOWV2": "DialogflowV2",
     "DIALOGFLOWV2_LANGUAGE": "Sprache",
     "DIALOGFLOWV2_PROJECT_ID": "Projekt-ID",
-    "PRIVATE_KEY": "Privater Schlüssel",
+    "PRIVATE_KEY": "Privat Schlüssel",
     "DIALTIMEZONE": "Zeitzone wählen"
   }
 }
index dbe19f3..0f1fe4e 100644 (file)
   "CALLYSQUARE": {
     "ACCOUNT_ID": "Account",
     "ADDUSER_PROJECTS": "Gebruikers toevoegen aan project",
-    "ADD_ODBC": "ODBC Toevoegen",
-    "ADD_PROJECT": "Project Toevoegen",
-    "ADD_VARIABLE": "Variabele Toevoegen",
+    "ADD_ODBC": "Voeg ODBC",
+    "ADD_PROJECT": "Voeg Project",
+    "ADD_VARIABLE": "Variabele toevoegen",
     "AGENTS": "Agenten",
     "AGI": "AGI",
     "ALL_USERS": "Alle gebruikers",
-    "ANSWER": "Antwoorden",
-    "APIKEY": "API key",
+    "ANSWER": "Answer",
+    "APIKEY": "API sleutel",
     "APPID": "App ID",
-    "APPLICATION": "Applicatie",
-    "APPSECRET": "App secret",
+    "APPLICATION": "Application",
+    "APPSECRET": "App geheim",
     "ARGS": "Arguments",
     "ATTACHMENT_NAME": "Bijlagenaam",
-    "ATTACHMENT_PATH": "Bijlage pad",
-    "ATTACHMENT_TYPE": "Type bijlage",
+    "ATTACHMENT_PATH": "Attachment pad",
+    "ATTACHMENT_TYPE": "Type aansluiting",
     "AUDIO": "Audio",
     "AUDIOENCODING": "Audiocodering",
     "AWSLEX": "Amazon Lex",
-    "AWSPOLLY": "Amazon Polly",
-    "AWS_ACCESS_KEY_ID": "Access key ID",
+    "AWSPOLLY": "AWS Polly",
+    "AWS_ACCESS_KEY_ID": "Toegangstoets ID",
     "AWS_BOT_NAME": "Botnaam",
     "AWS_LEX_REGION": "Regio",
     "AWS_POLLY_REGION": "Regio",
     "AWS_POLLY_VOICE": "Spraak",
-    "AWS_SECRET_ACCESS_KEY": "Access key",
-    "AWS_TEXT_TYPE": "Soort bericht",
+    "AWS_SECRET_ACCESS_KEY": "Geheime sleutel",
+    "AWS_TEXT_TYPE": "Bericht soort",
     "BACK": "Terug",
     "BCC": "BCC",
     "BEEP": "Beep",
-    "BODY": "Inhoud",
-    "CALLBACK": "Terugbellen",
+    "BODY": "Lichaam",
+    "CALLBACK": "Callback",
     "CALLBACK_PRIORITY": "Prioriteit",
-    "CALLYSQUARE": "Cally Square",
+    "CALLYSQUARE": "Schrijfsnelheid Square",
     "CC": "CC",
-    "CHOOSE_ATTACHMENT": "Kies een bijlage",
-    "CLOSE": "Sluiten",
-    "COMMAND": "Commando",
+    "CHOOSE_ATTACHMENT": "Kies voorzetstuk",
+    "CLOSE": "Dicht",
+    "COMMAND": "Command",
     "COMPUTEDVARIABLES": "Scriptpad voor berekende variabelen",
-    "CONDITION": "Voorwaarde",
+    "CONDITION": "Condition",
     "CONTEXT": "Context",
     "COPY": "Kopiëren",
-    "COPY_PROJECT": "Project Kopiëren",
-    "CREATED_AT": "Gemaakt Op",
-    "CUSTOM_ACTION": "Aangepaste Actie",
-    "CUSTOM_ACTION_DATA": "Aangepaste Actiegegevens",
-    "CUSTOM_APP": "Aangepaste Applicatie",
+    "COPY_PROJECT": "Kopieer Project",
+    "CREATED_AT": "Gemaakt op",
+    "CUSTOM_ACTION": "Aangepaste actie",
+    "CUSTOM_ACTION_DATA": "Aangepaste actiegegevens",
+    "CUSTOM_APP": "Custom Application",
     "DATABASE": "Database",
-    "DELAY": "Vertraging",
+    "DELAY": "Delay",
     "DELETE": "Verwijderen",
-    "DELETE_ODBC": "ODBC Verwijderen",
-    "DELETE_PROJECT": "Project Verwijderen",
-    "DELETE_SQUARERECORDING": "Opname Verwijderen",
+    "DELETE_ODBC": "Verwijderen van ODBC",
+    "DELETE_PROJECT": "Project verwijderen",
+    "DELETE_SQUARERECORDING": "Wis vierkant opnemen",
     "DESCRIPTION": "Beschrijving",
-    "DIAL": "Bel",
-    "DIALOGFLOW": "Dialoogstroom",
+    "DIAL": "Dial",
+    "DIALOGFLOW": "Dialogflow",
     "DIALOGFLOW_LANGUAGE": "Taal",
-    "DIGIT": "Maximaal aantal cijfers",
-    "DIGITS": "Cijfers",
-    "DOWNLOAD_SQUARERECORDING": "Opnames Downloaden",
-    "DROP_TO_UPLOAD": "Bestanden slepen om te uploaden",
-    "DROP_TO_UPLOAD_MESSAGE": "U kunt ook bestanden hiernaartoe slepen om ze te uploaden. Alleen XML - Max. 5MB",
+    "DIGIT": "Max Digits",
+    "DIGITS": "Digits",
+    "DOWNLOAD_SQUARERECORDING": "Download vierkante opnemen",
+    "DROP_TO_UPLOAD": "DROP om te uploaden",
+    "DROP_TO_UPLOAD_MESSAGE": "U kunt ook bestanden hier neer te uploaden. Alleen XML - Max. 5MB",
     "DSN": "DSN",
-    "EDIT": "Bewerken",
-    "EDIT_ODBC": "ODBC Bewerken",
-    "EDIT_PROJECT": "Project Bewerken",
-    "EDIT_SQUARERECORDING": "Opnames Bewerken",
-    "EDIT_XML": "XML aanpassen",
-    "END": "Einde",
+    "EDIT": "Edit",
+    "EDIT_ODBC": "Edit ODBC",
+    "EDIT_PROJECT": "Edit Project",
+    "EDIT_SQUARERECORDING": "Edit plein opnemen",
+    "EDIT_XML": "Edit XML",
+    "END": "End",
     "ERRORS": {
-      "DSN_REQUIRED": "Verplicht veld",
-      "FIELD_REQUIRED": "Verplicht veld",
-      "NAME_REQUIRED": "Verplicht veld",
-      "PROJECT_REQUIRED": "Verplicht veld",
+      "DSN_REQUIRED": "Het DSN is vereist",
+      "FIELD_REQUIRED": "Het is een verplicht veld",
+      "NAME_REQUIRED": "De naam is verplicht",
+      "PROJECT_REQUIRED": "Het project is vereist",
       "URL_REQUIRED": "Verplicht veld"
     },
-    "ESCAPE_DIGITS": "Escape cijfers",
+    "ESCAPE_DIGITS": "Escape Digits",
     "EXTEN": "Uitbreiding",
-    "EXTENSION": "Extensie",
-    "EXT_DIAL": "Bellen naar extern",
-    "FILE": "Bestand",
+    "EXTENSION": "Extension",
+    "EXT_DIAL": "External Dial",
+    "FILE": "Filename",
     "FILENAME": "Bestandsnaam",
     "FILE_ID": "Audio",
-    "FINALLY": "Ten slotte",
+    "FINALLY": "Finally",
     "FINDBY": "Zoek naar",
-    "GETDIGITS": "Cijfers opvragen",
-    "GETSECRETDIGITS": "Geheime cijfers opvragen",
-    "GOAL": "Doel",
-    "GOALNAME": "Doelnaam",
+    "GETDIGITS": "Get Digits",
+    "GETSECRETDIGITS": "Get Secret Digits",
+    "GOAL": "Goal",
+    "GOALNAME": "Goal Name",
     "GOOGLEASR": "GoogleASR",
     "GOOGLE_ASR_LANGUAGE": "Taal",
     "GOOGLE_CLOUD_TTS": "Google Cloud TTS",
-    "GOOGLE_CLOUD_TTS_TEXT_TYPE": "Soort bericht",
-    "GOOGLE_TTS_LANGUAGE": "Taal",
+    "GOOGLE_CLOUD_TTS_TEXT_TYPE": "Bericht soort",
+    "GOOGLE_TTS_LANGUAGE": "Language",
     "GOSUB": "GoSub",
     "GOTOC": "GoTo",
     "GOTOIF": "GoToIf",
     "GOTOIFTIME": "GoToIfTime",
     "GO_TO_PROJECTS": "Ga naar projecten",
     "GRAMMAR": "Grammatica",
-    "HANGUP": "Ophangen",
+    "HANGUP": "Hangup",
     "HEADERS": "Kopteksten",
     "HELP": {
-      "BCC": "U kunt meerdere adressen toevoegen door ze te scheiden met een komma (bijvoorbeeld John.doe@xcally.com, jane.miller@xcally.com)",
-      "CC": "U kunt meerdere adressen toevoegen door ze te scheiden met een komma (bijvoorbeeld John.doe@xcally.com, jane.miller@xcally.com)",
+      "BCC": "U kunt meerdere adressen met een komma (bijvoorbeeld John.doe@xcally.com, jane.miller@xcally.com)",
+      "CC": "U kunt meerdere adressen met een komma (bijvoorbeeld John.doe@xcally.com, jane.miller@xcally.com)",
       "DSN": "Voorbeeld: DRIVER=MySQL;SERVER=127.0.0.1;uid=xcall;pwd=wachtwoord;DATABASE=motion",
       "MAILBOX": "Mailbox@context",
       "MAX_TEXT_TTS": "Het maximale aantal ondersteunde tekens is 200",
-      "TO": "U kunt meerdere adressen toevoegen door ze te scheiden met een komma  (bijvoorbeeld John.doe@xcally.com, jane.miller@xcally.com)"
+      "TO": "U kunt meerdere adressen met een komma (bijvoorbeeld John.doe@xcally.com, jane.miller@xcally.com)"
     },
-    "HIDDENDIGITSNUM": "Verborgen Cijfer Nummer",
-    "HIDDENDIGITSPOS": "Verborgen Cijfer Positie",
-    "ID": "ID",
+    "HIDDENDIGITSNUM": "Hiddden Digits Number",
+    "HIDDENDIGITSPOS": "Hidden Digits Position",
+    "ID": "Id",
     "IMPORT": "Importeren",
-    "IMPORT_XML": "Importeer XML",
+    "IMPORT_XML": "Import XML",
     "INTERVAL_ID": "Interval",
-    "INTKEY": "Toets voor onderbreken",
+    "INTKEY": "Interrupt Key",
     "ISPEECHASR": "ISpeech ASR",
     "ISPEECHTTS": "ISpeech Text-To-Speech",
-    "ISPEECH_ASR_LANGUAGE": "Taal",
-    "ISPEECH_TTS_LANGUAGE": "Taal",
-    "KEY": "Sleutel",
+    "ISPEECH_ASR_LANGUAGE": "Language",
+    "ISPEECH_TTS_LANGUAGE": "Language",
+    "KEY": "Key",
     "LABEL": "Label",
     "LANGUAGECODE": "Taalcode",
-    "LASTNAME": "Achternaam",
-    "LIST_ID": "Lijst",
-    "LOGIN": "Inloggen",
+    "LASTNAME": "Last Name",
+    "LIST_ID": "List",
+    "LOGIN": "Log in",
     "LOGOUT": "Uitloggen",
     "LUMENVOXASR": "Lumenvox ASR",
     "LUMENVOXTTS": "Lumenvox Text-To-Speech",
     "MACRO": "Macro",
     "MAILBOX": "Mailbox",
-    "MATH": "Wiskundefuncties",
-    "MAXDIGIT": "Maximaal aantal cijfers",
+    "MATH": "Math",
+    "MAXDIGIT": "Maximum Digits",
     "MENU": "Menu",
     "METHOD": "Methode",
-    "MINDIGIT": "Minimaal aantal cijfers",
+    "MINDIGIT": "Minimum Digits",
     "MODEL": "Model",
     "MRCPRECOG": "MRCPRecog",
     "MRCPSYNTH": "MRCPSynth",
     "NAME": "Naam",
     "NDAACTIVITY_TYPE": "Soort activiteit",
-    "NDAGENERATE_AUDIO": "Audiobestand genereren",
+    "NDAGENERATE_AUDIO": "Genereer audiobestand",
     "NDASSISTANT_URL": "NDASSISTANT URL",
     "NDAUTH_URL": "NDAUTH-URL",
-    "NEW": "Nieuw",
-    "NEW_ODBC": "Nieuwe ODBC Verbinding",
-    "NEW_PROJECT": "Nieuw Project",
-    "NEW_VARIABLE": "Nieuwe Variabele",
+    "NEW": "Nieuwe",
+    "NEW_ODBC": "Nieuwe ODBC verbinding",
+    "NEW_PROJECT": "Nieuw project",
+    "NEW_VARIABLE": "Nieuwe variabele",
     "NOOP": "NoOp",
     "NOTES": "Aantekeningen",
     "NO_AVAILABLE_INFO": "Geen beschikbare informatie",
-    "NUMBER": "Nummer",
+    "NUMBER": "Number",
     "ODBC": "ODBC",
-    "ODBC_ID": "ODBC Verbinding",
+    "ODBC_ID": "ODBC Connection",
     "OF": "Van",
     "OPEN": "Open",
     "OPEN_NEW_WINDOW": "Open in een nieuw venster",
-    "OPEN_PROJECT": "Project Openen",
-    "OPERATION": "Operatie",
-    "OPTIONS": "Opties",
-    "OPTS": "Opties",
-    "OUTPUT": "Resultaat",
+    "OPEN_PROJECT": "Project openen",
+    "OPERATION": "Operation",
+    "OPTIONS": "Options",
+    "OPTS": "Options",
+    "OUTPUT": "Output",
     "PAGE": "Pagina",
     "PASSWORD": "Wachtwoord",
     "PAUSE": "Pauze",
-    "PAUSE_ID": "Soort pauze",
+    "PAUSE_ID": "Pauzeer type",
     "PERMISSIONADD_PROJECTS": "Gebruikers toevoegen aan project",
     "PHONE": "Telefoon",
-    "PLAYBACK": "Afspelen",
-    "POSITION": "Positie",
-    "PRIORITY": "Prioriteit",
+    "PLAYBACK": "Playback",
+    "POSITION": "Position",
+    "PRIORITY": "Priority",
     "PROJECT": "Project",
     "PROJECTS": "Projecten",
     "PROJECT_ID": "Project",
     "QUERY": "Query",
     "QUEUE": "Queue",
     "QUEUE_ID": "Queue",
-    "RAWBODY": "Inhoud",
+    "RAWBODY": "Lichaam",
     "RAWHEADERS": "Kopteksten",
-    "RECORD": "Opname",
-    "RECORDINGFORMAT": "Opnameformaat",
-    "RESPONSE": "Reactie Timeout",
+    "RECORD": "Record",
+    "RECORDINGFORMAT": "Recording Format",
+    "RESPONSE": "Response Timeout",
     "RESTAPI": "Rest API",
-    "RETRY": "Pogingen",
+    "RETRY": "Retries",
     "ROWSPERPAGE": "Rijen per pagina",
     "SAVE": "Opslaan",
-    "SAYDIGITS": "Cijfers uitspreken",
-    "SAYNUMBER": "Nummer uitspreken",
-    "SAYPHONETIC": "Fonetisch uitspreken",
-    "SEARCH_FOR_ANYONE": "Zoeken",
+    "SAYDIGITS": "Say Digits",
+    "SAYNUMBER": "Say number",
+    "SAYPHONETIC": "Say Phonetics",
+    "SEARCH_FOR_ANYONE": "Zoeken voor iedereen",
     "SELECTED": "Geselecteerd",
-    "SELECTED_USERS": "Geselecteerde Gebruikers",
-    "SELECT_ALL": "Selecteer Alles ",
-    "SELECT_NONE": "Selecteer Geen.",
+    "SELECTED_USERS": "Geselecteerde gebruikers",
+    "SELECT_ALL": "Alles selecteren",
+    "SELECT_NONE": "Selecteer None (Geen).",
     "SENDFAX": "Fax verzenden",
-    "SENDMAIL": "Mail verzenden",
-    "SENDSMS": "SMS verzenden",
+    "SENDMAIL": "Send Mail",
+    "SENDSMS": "Send SMS",
     "SESTEKASR": "Sestek ASR",
     "SESTEKNDA": "Sestek NDA",
     "SESTEKTTS": "Sestek TTS",
     "SMS_ACCOUNT_ID": "Account",
     "SMS_TEXT": "Text",
     "SPEED": "Speed",
-    "SQUARERECORDINGS": "Opnames",
+    "SQUARERECORDINGS": "Vierkante opnamen",
     "SSMLGENDER": "Geslacht",
     "START": "Start",
-    "SUBJECT": "Onderwerp",
+    "SUBJECT": "Subject",
     "SUBPROJECT": "Sub Project",
-    "SYSTEM": "Systeem",
+    "SYSTEM": "System",
     "TELEPHONES": "Telefoons",
-    "TEMPLATE_ID": "Sjabloon",
+    "TEMPLATE_ID": "Template",
     "TEST_ODBC": "Test ODBC",
     "TEXT": "Text",
     "TILDEASR": "Tilde ASR",
     "TIMEOUT": "Timeout",
-    "TO": "Naar",
+    "TO": "To",
     "TRUNK_NAME": "Trunk",
     "TTS": "Google Text-To-Speech",
     "UNIQUEID": "Unieke ID",
     "UNPAUSE": "Einde pauze",
     "UPDATE_DESCRIPTION": "Beschrijving van update",
-    "UPDATE_INFO": "Gegevens Bijwerken",
+    "UPDATE_INFO": "Gegevens bijwerken",
     "URI": "URI",
     "URL": "URL",
     "USERNAME": "Gebruikersnaam",
     "USERS": "Gebruikers",
-    "VARIABLE_ID": "Variabele",
-    "VARIABLE_VALUE": "Waarde",
+    "VARIABLE_ID": "Variable",
+    "VARIABLE_VALUE": "Value",
     "VOICEMAIL": "Voicemail",
-    "VSWITCH": "Variabele schakelaar",
+    "VSWITCH": "Variable Switch",
     "CLIENT_EMAIL": "E-mail van de klant",
     "DIALOGFLOWV2": "DialogflowV2",
     "DIALOGFLOWV2_LANGUAGE": "Taal",
     "DIALOGFLOWV2_PROJECT_ID": "Project-ID",
-    "PRIVATE_KEY": "Geheime sleutel",
+    "PRIVATE_KEY": "Prive sleutel",
     "DIALTIMEZONE": "Kies tijdzone"
   }
 }
index 4b5a0df..42dd4c2 100644 (file)
@@ -3,8 +3,8 @@
     "ACCOUNT_ID": "Conta",
     "ADDUSER_PROJECTS": "Adicionar usuários ao projeto",
     "ADD_ODBC": "Adicionar ODBC",
-    "ADD_PROJECT": "Adicionar Projeto",
-    "ADD_VARIABLE": "Adicionar Variável",
+    "ADD_PROJECT": "Adicionar projeto",
+    "ADD_VARIABLE": "Adicionar variável",
     "AGENTS": "Agentes",
     "AGI": "AGI",
     "ALL_USERS": "Todos os usuários",
     "APPLICATION": "Aplicação",
     "APPSECRET": "App Secret",
     "ARGS": "Argumentos",
-    "ATTACHMENT_NAME": "Nome do Anexo",
-    "ATTACHMENT_PATH": "Caminho de Anexos",
-    "ATTACHMENT_TYPE": "Tipo de Anexo",
-    "AUDIO": "Audio",
+    "ATTACHMENT_NAME": "Nome do anexo",
+    "ATTACHMENT_PATH": "Caminho de anexos",
+    "ATTACHMENT_TYPE": "Tipo de anexo",
+    "AUDIO": "Áudio",
     "AUDIOENCODING": "Codificação de áudio",
-    "AWSLEX": "Amazon Lex",
+    "AWSLEX": "AWS Lex",
     "AWSPOLLY": "AWS Polly",
-    "AWS_ACCESS_KEY_ID": "Access Key ID",
+    "AWS_ACCESS_KEY_ID": "Access key ID",
     "AWS_BOT_NAME": "Nome BOT",
     "AWS_LEX_REGION": "Região",
     "AWS_POLLY_REGION": "Região",
     "AWS_POLLY_VOICE": "Voz",
-    "AWS_SECRET_ACCESS_KEY": "Secret Access Key",
+    "AWS_SECRET_ACCESS_KEY": "AWS Secret Access Key",
     "AWS_TEXT_TYPE": "Tipo de texto",
     "BACK": "Voltar",
     "BCC": "BCC",
     "COPY": "Copiar",
     "COPY_PROJECT": "Copiar projeto",
     "CREATED_AT": "Criado em",
-    "CUSTOM_ACTION": "Ação Personalizada",
+    "CUSTOM_ACTION": "Ação personalizada",
     "CUSTOM_ACTION_DATA": "Dados de ação personalizada",
-    "CUSTOM_APP": "Aplicativo Personalizado",
+    "CUSTOM_APP": "Aplicativo personalizado",
     "DATABASE": "Base de dados",
-    "DELAY": "delay [min]",
+    "DELAY": "Delay [min]",
     "DELETE": "Excluir",
     "DELETE_ODBC": "Deletar ODBC",
-    "DELETE_PROJECT": "Deletar Projeto",
+    "DELETE_PROJECT": "Deletar projeto",
     "DELETE_SQUARERECORDING": "Excluir gravação",
     "DESCRIPTION": "Descrição",
     "DIAL": "Discar",
     "DIALOGFLOW": "Dialogflow",
     "DIALOGFLOW_LANGUAGE": "Idioma",
-    "DIGIT": "Max Dígitos",
+    "DIGIT": "Max dígitos",
     "DIGITS": "Dígitos",
-    "DOWNLOAD_SQUARERECORDING": "Download Gravação",
-    "DROP_TO_UPLOAD": "DROP TO UPLOAD",
+    "DOWNLOAD_SQUARERECORDING": "Download gravação",
+    "DROP_TO_UPLOAD": "Soltar para upload",
     "DROP_TO_UPLOAD_MESSAGE": "Você também pode soltar arquivos aqui para fazer o upload. Apenas XML - Máx. 5MB",
     "DSN": "DSN",
     "EDIT": "Editar",
     "EDIT_ODBC": "Editar ODBC",
-    "EDIT_PROJECT": "Editar Projeto",
+    "EDIT_PROJECT": "Editar projeto",
     "EDIT_SQUARERECORDING": "Editar gravação",
     "EDIT_XML": "Editar XML",
     "END": "Fim",
       "PROJECT_REQUIRED": "Campo obrigatório",
       "URL_REQUIRED": "Campo obrigatório"
     },
-    "ESCAPE_DIGITS": "Dígitos de Escape",
+    "ESCAPE_DIGITS": "Dígitos de escape",
     "EXTEN": "Exten",
     "EXTENSION": "Extensão",
-    "EXT_DIAL": "Discagem Externa",
+    "EXT_DIAL": "Discagem externa",
     "FILE": "Nome do arquivo",
     "FILENAME": "Nome do arquivo",
     "FILE_ID": "Audio",
     "IMPORT": "Importar",
     "IMPORT_XML": "Importar XML",
     "INTERVAL_ID": "Intervalo",
-    "INTKEY": "Interrupt Key",
+    "INTKEY": "Interrupt key",
     "ISPEECHASR": "iSpeech ASR",
-    "ISPEECHTTS": "iSpeech Text-To-Speech",
+    "ISPEECHTTS": "iSpeech TTS",
     "ISPEECH_ASR_LANGUAGE": "Idioma",
     "ISPEECH_TTS_LANGUAGE": "Idioma",
     "KEY": "Key",
     "LOGIN": "Login",
     "LOGOUT": "Logout",
     "LUMENVOXASR": "Lumenvox ASR",
-    "LUMENVOXTTS": "Lumenvox Text-To-Speech",
+    "LUMENVOXTTS": "Lumenvox TTS",
     "MACRO": "Macro",
     "MAILBOX": "Caixa de correio",
     "MATH": "Math",
-    "MAXDIGIT": "Dígitos Máximos",
+    "MAXDIGIT": "Dígitos máximos",
     "MENU": "Menu",
     "METHOD": "Método",
-    "MINDIGIT": "Dígitos Mínimos",
+    "MINDIGIT": "Dígitos mínimos",
     "MODEL": "Modelo",
     "MRCPRECOG": "MRCPRecog",
     "MRCPSYNTH": "MRCPSynth",
     "NEW": "Novo",
     "NEW_ODBC": "Nova conexão ODBC",
     "NEW_PROJECT": "Novo projeto",
-    "NEW_VARIABLE": "Nova Variável",
+    "NEW_VARIABLE": "Nova variável",
     "NOOP": "NoOp",
     "NOTES": "Notas",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "SAYPHONETIC": "Say Phonetics",
     "SEARCH_FOR_ANYONE": "Procurar",
     "SELECTED": "Selecionado",
-    "SELECTED_USERS": "Usuários Selecionados",
+    "SELECTED_USERS": "Usuários selecionados",
     "SELECT_ALL": "Selecionar tudo",
     "SELECT_NONE": "Selecione nenhum",
-    "SENDFAX": "Enviar Fax",
-    "SENDMAIL": "Enviar Email",
+    "SENDFAX": "Enviar fax",
+    "SENDMAIL": "Enviar email",
     "SENDSMS": "Enviar SMS",
     "SESTEKASR": "Sestek ASR",
     "SESTEKNDA": "Sestek NDA",
     "TIMEOUT": "Timeout",
     "TO": "To",
     "TRUNK_NAME": "Tronco",
-    "TTS": "Google Text-To-Speech",
+    "TTS": "Google TTS",
     "UNIQUEID": "Unique ID",
     "UNPAUSE": "Fim da Pausa",
     "UPDATE_DESCRIPTION": "Atualizar descrição",
     "VARIABLE_ID": "Variável",
     "VARIABLE_VALUE": "Valor",
     "VOICEMAIL": "Correio de voz",
-    "VSWITCH": "Variable Switch",
+    "VSWITCH": "Variable switch",
     "CLIENT_EMAIL": "Email do cliente",
     "DIALOGFLOWV2": "DialogflowV2",
     "DIALOGFLOWV2_LANGUAGE": "Língua",
     "DIALOGFLOWV2_PROJECT_ID": "ID do projeto",
     "PRIVATE_KEY": "Chave privada",
-    "DIALTIMEZONE": "Disque fuso horário"
+    "DIALTIMEZONE": "Fuso horário de discagem"
   }
 }
index 112cad3..9fd2be8 100644 (file)
   "CHAT": {
     "AMAZONLEX": "Amazon Lex",
     "TEXT": "Text",
-    "TIMES": "Anzeigehäufigkeit automatische Antwort",
+    "TIMES": "Anzahl der Zeiten pro Interaktion",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
     "AUTOREPLY": "Automatische Antwort",
     "NEW_CHATDISPOSITION": "Neue Chat-Qualifizierung",
-    "ENABLECUSTOMERATTACHMENT": "Kunde darf Anhänge im Chat hochladen",
-    "OFFLINE_CHAT_BUTTON": "Text auf dem Button zum Hinterlassen einer Nachricht, wenn Chat offline",
-    "OFFLINESTATUS": "Verhalten - Chat ist offline (Außerhalb Geschäftszeiten)",
+    "ENABLECUSTOMERATTACHMENT": "Kundenanhänge aktivieren",
+    "OFFLINE_CHAT_BUTTON": "Button Chat offline",
+    "OFFLINESTATUS": "Offline Status",
     "NAME": "Name",
     "CHATQUEUES": "Chat-Warteschlangen",
     "SEARCH_FOR_ANYONE": "Suche",
-    "STRATEGY": "Verteilungsstrategie an freie Agenten",
-    "AGENT_TIMEOUT": "Klingelzeit (in Sekunden), bevor Weiterleitung an den nächsten Agenten erfolgt",
+    "STRATEGY": "Strategie",
+    "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "KEY": "Kurzname",
+    "KEY": "Schlüssel",
     "ALIAS": "Alias-Name",
-    "VARIABLE": "Variabel",
-    "INTERVAL": "Zeitplanung",
-    "EDIT_CLOSE": "Interaktion schließen und Qualifizierung hinzufügen",
+    "VARIABLE": "Variable",
+    "INTERVAL": "Intervall",
+    "EDIT_CLOSE": "Bearbeitung abschließen",
     "TIMEZONE": "Zeitzone",
     "MESSAGE": "Nachricht",
-    "ADVANCED": "Skript und Zeitplanung",
-    "FORWARDTRANSCRIPT": "Kunde kann Chatverlauf per E-Mail anfordern",
-    "FORWARDTRANSCRIPTMESSAGE": "Einleitungstext für die automatische E-Mail",
-    "SKIPMESSAGEBUTTON": "Text auf dem Button zum Überspringen der Bewertung/Feedback nach einem Chat",
+    "ADVANCED": "Erweitert",
+    "FORWARDTRANSCRIPT": "Transkript weiterleiten",
+    "FORWARDTRANSCRIPTMESSAGE": "Transkript-Nachricht weiterleiten",
+    "SKIPMESSAGEBUTTON": "Nachrichtenbutton überspringen",
     "EDIT_MESSAGE": "Nachricht bearbeiten",
-    "CONDITION_AGREEMENT": "Chatbedingungen zustimmen",
+    "CONDITION_AGREEMENT": "Konditionelle Vereinbarung",
     "NONE": "Nichts",
     "PRIORITY": "Priorität",
-    "ONLINESTATUS": "Verhalten - Chat ist online",
-    "UNMANAGEDSTATUS": "Verhalten - Chat ist nicht verfügbar",
-    "AUTOCLOSE": "Automatisches Abweisen, wenn kein Agent verfügbar",
-    "ENABLEUNMANAGEDNOTE": "Automatische Nachricht, wenn Chat nicht verfügbar",
-    "UNMANAGEDMESSAGE": "Hier Nachricht für den Kunden eingeben, wenn der Chat nicht verfügbar ist",
-    "SKIPUNMANAGED": "Text auf dem Button zum Beenden des Chats ohne Hinterlassen einer Nachricht",
-    "SENDUNMANAGED": "Text auf dem Button zum Beenden des Chats mit Hinterlassen einer Nachricht",
+    "ONLINESTATUS": "Online Status",
+    "UNMANAGEDSTATUS": "Status nicht bearbeitet",
+    "AUTOCLOSE": "Automatisches Schließen aktivieren",
+    "ENABLEUNMANAGEDNOTE": "Unbearbeitete Nachricht aktivieren",
+    "UNMANAGEDMESSAGE": "Unbearbeitete Nachricht",
+    "SKIPUNMANAGED": "Nachricht überspringen",
+    "SENDUNMANAGED": "Nachricht senden",
     "WEBSITESCRIPT": "Webseiten-Skript",
     "DELETE_OFFLINEMESSAGE": "Löschen",
-    "OFFLINEMESSAGES": "Offline-Nachrichten",
-    "FORWARD_OFFLINE": "Offline-Nachrichten per E-Mail weiterleiten (extern)",
+    "OFFLINEMESSAGES": "Offline Nachrichten",
+    "FORWARD_OFFLINE": "Offline weiterleiten",
     "SHOW_OFFLINEMESSAGE": "Anzeigen",
-    "FORWARD_OFFLINE_ADDRESS": "Empfängeradresse eingeben",
-    "CLOSINGFORM": "Verhalten bei Chatende",
-    "ENABLERATING": "Bewertung ermöglichen",
+    "FORWARD_OFFLINE_ADDRESS": "Offline-Adresse weiterleiten",
+    "CLOSINGFORM": "Formular schließen",
+    "ENABLERATING": "Bewertung aktivieren",
     "ENABLECUSTOMERWRITING": "Kunde kann schreiben, bevor Chat akzeptiert wird",
-    "ENABLEFEEDBACK": "Feedback ermöglichen",
+    "ENABLEFEEDBACK": "Feedback aktivieren",
     "RATINGTYPE": "Bewertungstyp",
-    "CLOSINGMESSAGE": "Nachricht bei Chatende",
-    "CLOSINGMESSAGEBUTTON": "Text auf dem Button zum Beenden des Chats",
-    "RATINGSTARSNUMBER": "Anzahl der Bewertungssterne (1-5)",
-    "EDIT_GOTOIF": "Bedingung bearbeiten und Priorität zuweisen",
+    "CLOSINGMESSAGE": "Abschluss Nachricht",
+    "CLOSINGMESSAGEBUTTON": "Button für Abschluss Nachricht",
+    "RATINGSTARSNUMBER": "Anzahl der Bewertungssterne",
+    "EDIT_GOTOIF": "GotoIf bearbeiten",
     "CONDITION": "Bedingung",
-    "TRUEPRIORITY": "Priorität, wenn erfüllt (true)",
-    "FALSEPRIORITY": "Priorität, wenn nicht erfüllt (false)",
+    "TRUEPRIORITY": "Wahre Priorität",
+    "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "WEBSITEALIAS": "Website-Alias",
     "ERRORS": {
-      "TEXT_REQUIRED": "Text erforderlich",
-      "SENDUNMANAGED_REQUIRED": "Text erforderlich",
-      "SENDUNMANAGED_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
-      "SKIPUNMANAGED_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
-      "UNMANAGEDMESSAGE_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
-      "WEBSITEALIAS_MAX_LENGTH": "Name darf nicht länger als {{max}} Zeichen sein",
-      "AGENT_REQUIRED": "Agent erforderlich",
-      "QUEUE_REQUIRED": "Warteschlange erforderlich",
-      "CONDITION_REQUIRED": "Bedingung (Variabel oder Wert) erforderlich",
-      "PRIORITY_REQUIRED": "Priorität erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Priorität bei zutreffender Bedingung erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Priorität bei nicht zutreffender Bedingung erforderlich",
-      "NAME_REQUIRED": "Name erforderlich",
-      "LIST_REQUIRED": "Liste erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Zeitüberschreitung Agent erforderlich",
-      "MOTIONADDRESS_REQUIRED": "Adresse erforderlich",
-      "DISPOSITION_REQUIRED": "Qualifizierung erforderlich",
-      "MOTIONADDRESS_MUST_VALID_URL": "URL Format ungültig",
-      "EMAIL_MUST_BE_VALID": "E-Mail Format ungültig",
-      "ADDRESS_REQUIRED": "Adresse erforderlich",
-      "ADDRESS_MUST_VALID_URL": "URL Format ungültig",
-      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "E-Mail Adresse erforderlich",
-      "ACCEPTURL_MUST_VALID_URL": "URL Format ungültig",
-      "TIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
-      "REJECTURL_MUST_VALID_URL": "URL Format ungültig",
-      "CLOSEURL_MUST_VALID_URL": "URL Format ungültig",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität muss größer oder gleich sein als",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität bei Bedingung erfüllt muss größer oder gleich sein als",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität bei Bedingung nicht erfüllt muss größer oder gleich sein als",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
-      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Aktualisierungsintervall muss größer oder gleich sein als",
-      "WAITINGMESSAGE_REQUIRED": "Wartenachricht erforderlich",
-      "WAITINGTITLE_REQUIRED": "Titel während Warten erforderlich",
-      "KEY_MAX_LENGTH": "Wert darf nicht länger als {{max}} Zeichen sein",
-      "KEY_REQUIRED": "Eingabe erforderlich",
-      "WAITINGMESSAGE_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
-      "WAITINGTITLE_MAX_LENGTH": "Titel darf nicht länger als {{max}} Zeichen sein",
-      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Anzahl muss größer oder gleich sein als",
-      "HEADER_OFFLINE_MAX_LENGTH": "Titel darf nicht länger als {{max}} Zeichen sein",
-      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
-      "CLOSINGQUESTION_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
-      "TEXT_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
-      "VALUE_REQUIRED": "Wert erforderlich",
-      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
-      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
-      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
-      "NOTETITLE_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
-      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
-      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Schriftgröße muss größer oder gleich sein als",
-      "FONTSIZE_REQUIRED": "Schriftgröße erforderlich",
-      "COMMAND_REQUIRED": "Eingabe erforderlich",
+      "TEXT_REQUIRED": "Pflichtfeld",
+      "SENDUNMANAGED_REQUIRED": "Pflichtfeld",
+      "SENDUNMANAGED_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "SKIPUNMANAGED_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "UNMANAGEDMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "WEBSITEALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "AGENT_REQUIRED": "Pflichtfeld",
+      "QUEUE_REQUIRED": "Pflichtfeld",
+      "CONDITION_REQUIRED": "Pflichtfeld",
+      "PRIORITY_REQUIRED": "Pflichtfeld",
+      "TRUEPRIORITY_REQUIRED": "Pflichtfeld",
+      "FALSEPRIORITY_REQUIRED": "Pflichtfeld",
+      "NAME_REQUIRED": "Pflichtfeld",
+      "LIST_REQUIRED": "Pflichtfeld",
+      "AGENT_TIMEOUT_REQUIRED": "Pflichtfeld",
+      "MOTIONADDRESS_REQUIRED": "Pflichtfeld",
+      "DISPOSITION_REQUIRED": "Pflichtfeld",
+      "MOTIONADDRESS_MUST_VALID_URL": "Falsches Format",
+      "EMAIL_MUST_BE_VALID": "Falsches Format",
+      "ADDRESS_REQUIRED": "Pflichtfeld",
+      "ADDRESS_MUST_VALID_URL": "Falsches Format",
+      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Pflichtfeld",
+      "ACCEPTURL_MUST_VALID_URL": "Falsches Format",
+      "TIMEOUT_REQUIRED": "Pflichtfeld",
+      "REJECTURL_MUST_VALID_URL": "Falsches Format",
+      "CLOSEURL_MUST_VALID_URL": "Falsches Format",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "WAITINGMESSAGE_REQUIRED": "Pflichtfeld",
+      "WAITINGTITLE_REQUIRED": "Pflichtfeld",
+      "KEY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "KEY_REQUIRED": "Pflichtfeld",
+      "WAITINGMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "WAITINGTITLE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "HEADER_OFFLINE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "CLOSINGQUESTION_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "TEXT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "VALUE_REQUIRED": "Pflichtfeld",
+      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "OFFLINEMESSAGEBODY_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "PLACEHOLDERMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "NOTETITLE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "FONTSIZE_REQUIRED": "Pflichtfeld",
+      "COMMAND_REQUIRED": "Pflichtfeld",
       "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "NAME_MUST_VALID_PATTERN": "Ungültiges Format Name",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Agent muss kleiner oder gleich sein als",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Agent muss kleiner oder gleich sein als",
+      "NAME_MUST_VALID_PATTERN": "Falsches Format",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Auf zugewiesenen Agenten warten erforderlich",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
       "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
       "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "VERTICALPOSITION_REQUIRED": "Eingabe erforderlich",
-      "CUSTOMERALIAS_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
-      "TAG_REQUIRED": "Eingabe erforderlich",
-      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Schriftgröße muss größer oder gleich sein als",
-      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Schriftgröße muss kleiner oder gleich sein als",
-      "MESSAGEFONTSIZE_REQUIRED": "Schriftgröße erforderlich",
-      "AGENTALIAS_REQUIRED": "Agenten-Alias erforderlich",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
-      "CUSTOMERALIAS_REQUIRED": "Kunden-Alias erforderlich",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
-      "SYSTEMALIAS_MAX_LENGTH": "Name darf nicht länger als {{max}} Zeichen sein",
-      "SYSTEMALIAS_REQUIRED": "System-Alias erforderlich",
-      "ACCESSKEYID_REQUIRED": "ZugangsID erforderlich",
-      "BOTNAME_REQUIRED": "Name des BOT-Assistenten erforderlich",
-      "SECRETACCESSKEY_REQUIRED": "Eingabe erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "PausenID während Qualifizierung erforderlich",
-      "VIDAOOAPIKEY_REQUIRED": "Vidaoo API-Zugang erforderlich",
-      "CLIENTEMAIL_REQUIRED": "E-Mail des Kunden erforderlich",
-      "PRIVATEKEY_REQUIRED": "Privater Schlüssel erforderlich",
-      "PROJECTID_REQUIRED": "Projekt-ID erforderlich",
-      "VIDAOOTOPIC_REQUIRED": "Vidaoo-Thema erforderlich",
-      "EMAIL_ACCOUNT_REQUIRED": "E-Mail erforderlich"
+      "VERTICALPOSITION_REQUIRED": "Pflichtfeld",
+      "CUSTOMERALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "TAG_REQUIRED": "Pflichtfeld",
+      "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "MESSAGEFONTSIZE_REQUIRED": "Pflichtfeld",
+      "AGENTALIAS_REQUIRED": "Pflichtfeld",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
+      "CUSTOMERALIAS_REQUIRED": "Pflichtfeld",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
+      "SYSTEMALIAS_MAX_LENGTH": "Wert darf eine maximale Länge haben von {{max}} ",
+      "SYSTEMALIAS_REQUIRED": "Pflichtfeld",
+      "ACCESSKEYID_REQUIRED": "Pflichtfeld",
+      "BOTNAME_REQUIRED": "Pflichtfeld",
+      "SECRETACCESSKEY_REQUIRED": "Pflichtfeld",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
+      "VIDAOOAPIKEY_REQUIRED": "Pflichtfeld",
+      "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
+      "PRIVATEKEY_REQUIRED": "Pflichtfeld",
+      "PROJECTID_REQUIRED": "Pflichtfeld",
+      "VIDAOOTOPIC_REQUIRED": "Pflichtfeld",
+      "EMAIL_ACCOUNT_REQUIRED": "Pflichtfeld"
     },
     "CM_FIELD": "Kontaktmanager-Feld",
     "CHATPROACTIVEACTIONS": "Proaktive Anfragen",
     "NO_CHATPROACTIVEACTION_AVAILABLE": "Keine proaktiven Anfragen verfügbar",
     "NO_OFFLINEMESSAGE_AVAILABLE": "Keine Offline-Nachrichten verfügbar",
     "MOUSEOVER": "Mouse-Over",
-    "TIMEOUT": "Zeitüberschreitung",
+    "TIMEOUT": "Timeout",
     "TYPE": "Typ",
-    "SELECTOR": "Auswahl/Bereich",
+    "SELECTOR": "Selektion",
     "AGENT": "Agent",
-    "GOTO": "GeheZu (GoTo)",
-    "GOTOIF": "GeheZuWenn (GoToIf)",
-    "NOOP": "Log erstellen (NoOp)",
+    "GOTO": "Goto",
+    "GOTOIF": "GotoIf",
+    "NOOP": "Noop",
     "QUEUE": "Warteschlange",
-    "BUILDER": "Formularerstellung",
+    "BUILDER": "Builder",
     "PREVIEW": "Vorschau",
     "EDIT_AGENT": "Agenten bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "EDIT_GOTO": "GeheZu bearbeiten",
-    "EDIT_GOTOIf": "GeheZuWenn bearbeiten",
-    "EDIT_NOOP": "Log-Erstellung bearbeiten",
+    "EDIT_GOTO": "Goto bearbeiten",
+    "EDIT_GOTOIf": "GotoIf bearbeiten",
+    "EDIT_NOOP": "Noop bearbeiten",
     "ADD_CHATQUEUE": "Chat-Warteschlange hinzufügen",
     "EDIT_CHATQUEUE": "Chat-Warteschlange bearbeiten",
     "DELETE_CHATQUEUE": "Chat-Warteschlange löschen",
-    "SETTINGS": "Allg. Einstellungen",
+    "SETTINGS": "Einstellungen",
     "SAVE": "Speichern",
     "SCRIPT": "Skript",
     "TOKEN": "Token",
     "EDIT_CHATWEBSITE": "Chat-Webseite bearbeiten",
     "DELETE_CHATWEBSITE": "Chat-Webseite löschen",
     "LIST": "Liste",
-    "SNIPPET": "Chat-Widget",
+    "SNIPPET": "Snippet",
     "FORMS": "Formulare",
     "UP": "Nach Oben",
     "DOWN": "Nach Unten",
     "PROACTIVEACTIONS": "Proaktive Anfragen",
     "DISPOSITIONS": "Qualifizierungen",
     "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Routing",
+    "ACTIONS": "Aktionen",
     "FIDELITY": "Treue",
-    "APPEARANCE": "Darstellung Widget",
+    "APPEARANCE": "Darstellung",
     "MAINCOLOR": "Hauptfarbe",
     "FOCUSCOLOR": "Fokusfarbe",
     "BUTTONCOLOR": "Buttonfarbe",
     "DEFAULT": "Standard",
     "WHITELABEL": "White Label",
     "LOGO": "Logo",
-    "DOWNLOADTRANSCRIPT": "Kunde darf Chatverlauf herunterladen (.csv-Datei)",
-    "ENQUIRY_ENABLE": "Anfrage ermöglichen",
+    "DOWNLOADTRANSCRIPT": "Transkript herunterladen",
+    "ENQUIRY_ENABLE": "Anfrage aktivieren",
     "ENQUIRY_FORWARDING": "Weiterleitung von Anfragen",
-    "ENQUIRY_FORWARDING_ADDRESS": "Weiterleitungsadresse für Anfragen",
+    "ENQUIRY_FORWARDING_ADDRESS": "Anfrage-Weiterleitungsadresse",
     "LABELS": "Labels",
-    "HEADER_ONLINE": "Kopfzeile auf Widget, wenn Chat geöffnet",
-    "ONLINE_MESSAGE": "Nachricht wenn online",
-    "NAME_TITLE": "Titel",
-    "USERNAME_PLACEHOLDER": "Nutzernamen",
+    "HEADER_ONLINE": "Online-Kopfzeile",
+    "ONLINE_MESSAGE": "Online Nachricht",
+    "NAME_TITLE": "Name Titel",
+    "USERNAME_PLACEHOLDER": "Platzhalter für Nutzernamen",
     "EMAIL_TITLE": "E-Mail Titel",
-    "EMAIL_PLACEHOLDER": "E-Mail Adresse",
-    "START_CHAT_BUTTON": "Text auf dem Button zum Starten des Chats",
-    "AGENTS_BUSY": "Alle Agenten besetzt",
-    "HEADER_OFFLINE": "Kopfzeile auf Widget, wenn Chat nicht geöffnet",
-    "OFFLINE_MESSAGE": "Nachricht wenn offline",
-    "MESSAGE_TITLE": "Titel der Nachricht",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Nachricht",
-    "ENQUIRY_BUTTON": "Text auf dem Button zum Starten der Anfrage",
-    "RATING_MESSAGE": "Nachricht zur Bewertung",
-    "RATING_SEND": "Bewertung absenden",
-    "RATING_SKIP": "Bewertung überspringen",
-    "ONLINE": "Formularbuilder online",
-    "OFFLINE": "Formularbuilder offline",
-    "PROACTIVE": "Proaktive Anfrage",
+    "EMAIL_PLACEHOLDER": "Platzhalter für E-Mail Adresse",
+    "START_CHAT_BUTTON": "'Chat starten' Button",
+    "AGENTS_BUSY": "Agenten besetzt",
+    "HEADER_OFFLINE": "Offline-Kopfzeile",
+    "OFFLINE_MESSAGE": "Offline Nachricht",
+    "MESSAGE_TITLE": "Nachricht Titel",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Platzhalter für Nachrichteneingabe",
+    "ENQUIRY_BUTTON": "Anfrage-Button",
+    "RATING_MESSAGE": "Bewertungsnachricht",
+    "RATING_SEND": "Button Bewertung senden",
+    "RATING_SKIP": "Button Bewertung überspringen",
+    "ONLINE": "Online",
+    "OFFLINE": "Offline",
+    "PROACTIVE": "Proaktiv",
     "ACCEPT": "Akzeptieren",
     "ACCEPTMETHOD": "Methode akzeptieren",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen und Qualifizieren",
+    "CLOSE": "Schließen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
     "EMBEDDING": "Einbetten",
     "GENERAL": "Allgemein",
-    "SELECTED": "Ausgewählt",
+    "SELECTED": "Ausgewählte",
     "SELECT_ALL": "Alles auswählen",
     "SELECT_NONE": "Nichts auswählen",
     "BACK": "Zurück",
     "HELP": {
       "MAPKEY": "Das folgende Feld aus dem Kontaktmanager:",
-      "FROMKEY": "wird in dem Chat-Widget wie folgt zugeordnet:",
+      "FROMKEY": "wird in dem Chat-Snippet wie folgt zugeordnet:",
       "TOKEN": "Automatisch generierter Token zur Verwendung im Skript",
       "COPYSCRIPTTOCLIPBOARD": "Kopieren Sie den Skripttext und fügen Sie ihn in Ihre Website ein",
-      "FORWARD_OFFLINE": "Sie können mehrere durch Kommas getrennte Adressen hinzufügen (z. B. john.doe@test.com, jane.miller@test.com)",
+      "FORWARD_OFFLINE": "Sie können mehrere durch Kommas getrennte Adressen hinzufügen (z. B. john.doe@xcally.com, jane.miller@xcally.com)",
       "MOTIONADDRESS": "Das Feld muss das folgende Format haben: ≪protocol>://<IP-Adresse>[:<port>]. Beispiel: https://X.Y.Z.W",
       "MOTIONPROXY": "Das Feld muss das folgende Format haben: ≪Protocol>:// ≪IP-Adresse>: ≪port>]. Beispiel: https://X.Y.Z.W",
-      "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt",
+      "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "LIST": "Liste für die Zuordnung aus dem Kontaktmanager",
-      "KEY": "Der Kurzname der Chat-Webseite (max. 5 Zeichen), welcher im Agententab bei eingehender Interaktion angezeigt wird",
-      "INTEVAL": "Wählen Sie hier aus einem in den Werkzeugen definiertem Zeitintervall aus",
+      "KEY": "Website-Kurzname (5 Zeichen), der auf der Registerkarte \"Agent\" angezeigt wird",
+      "INTEVAL": "Wählen aus der Liste der verfügbaren Intervalle",
       "TIMEZONE": "Zeitzone auswählen (Standard = lokale Zeitzone)",
       "ENABLERATING": "Bewertung nach Chat durch Kunden aktivieren",
       "ENABLEFEEDBACK": "Feedback nach Chat durch Kunden aktivieren (Max. 150 Zeichen)",
-      "FORWARDTRANSCRIPT": "Dem Kunden anbieten, den Chatverlauf nach Abschluss per E-Mail zu versenden",
-      "AUTOCLOSE": "Trennt die Verbindung zum Chat, wenn innerhalb der Öffnungszeiten kein Agent verfügbar ist. Der Kunde kann optional eine Nachricht hinterlassen",
+      "FORWARDTRANSCRIPT": "Chatprotokoll nach Abschluss per E-Mail senden",
+      "AUTOCLOSE": "Aktivieren Sie diese Option, wenn Chat-Sitzungen als nicht bearbeitet geschlossen werden sollen, sofern kein Agent verfügbar ist.",
       "ENABLEUNMANAGEDNOTE": "Automatische Nachricht an den Kunden, wenn alle Agenten besetzt sind und somit der Chat nicht verfügbar ist",
-      "ENABLECUSTOMERWRITING": "Legt fest, ob der Kunde bereits im Chat schreiben kann, bevor ein Agent den Chat entgegen nimmt. Hinweis: Hierdurch werden keine Chats in den Status \"unbearbeitet\" gesetzt",
-      "INTERVAL": "Zeitintervall auswählen",
-      "HIDEWHENOFFLINE": "Blendet das Widget aus, wenn der Chat offline ist",
-      "AGENTIDENTIFIER": "Agentenkennung innerhalb der Chat-Sitzung im Widget",
+      "ENABLECUSTOMERWRITING": "Legt fest, ob der Kunde bereits im Chat schreiben kann, bevor ein Agent den Chat entgegen nimmmt. Hinweis: Dadurch kein Status \"unbearbeitet\"",
+      "INTERVAL": "Bitte aus der Liste wählen",
+      "HIDEWHENOFFLINE": "Snippet ausblenden, wenn offline",
+      "AGENTIDENTIFIER": "Agentenkennung innerhalb der Chat-Sitzung im Snippet",
       "WEBSITEALIAS": "Ein Präfix, mit dem der Agentenname (Präfix + Agenten-ID) erstellt wird, der dem Webbesucher während der Chat-Sitzung angezeigt wird",
       "VERTICALPOSITION": "Prozentualer Abstand in Prozent vom oberen Bildschirmrand",
-      "WELCOMEMESSAGE": "Automatische Begrüßungsnachricht. Leer lassen, um keine automatische Nachricht zu senden",
+      "WELCOMEMESSAGE": "Leer lassen, um keine Nachricht zu senden",
       "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
       "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung"
     },
     "ADDRESS": "Adresse",
-    "ONLINESTATE": "Status Online",
-    "OFFLINESTATE": "Status Offline",
-    "RATINGSTATE": "Status Bewertung",
+    "ONLINESTATE": "Online Status",
+    "OFFLINESTATE": "Offline Status",
+    "RATINGSTATE": "Bewertungsstatus",
     "ENQUIRY": "Anfrage",
-    "OFFLINETEMPLATE": "Vorlage wenn offline",
+    "OFFLINETEMPLATE": "Offline Vorlage",
     "CHATDISPOSITIONS": "Chat-Qualifizierungen",
     "NO_CHATDISPOSITION_AVAILABLE": "Keine Qualifizierung verfügbar",
     "ADD_CHATDISPOSITION": "Qualifizierung hinzufügen",
     "NOTES": "Notizen",
     "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
     "SELECTED_WEBSITE": "Ausgewählte Webseite",
-    "GOTOP": "Priorität setzen (GoToP)",
-    "EDIT_GOTOP": "GoToP bearbeiten",
+    "GOTOP": "Gotop",
+    "EDIT_GOTOP": "Gotop bearbeiten",
     "SELECT_WEBSITE": "Webseite auswählen",
     "INFO": "Info",
-    "OFFLINEMESSAGES_CHATWEBSITE": "Direkt zu Offline-Nachrichten",
-    "WAITINGTITLE": "Kopfzeile während auf einen freien Agenten gewartet wird",
-    "WAITINGMESSAGE": "Nachricht während Warten",
+    "OFFLINEMESSAGES_CHATWEBSITE": "Zu Offline-Nachrichten gehen",
+    "WAITINGTITLE": "Titel während Warten",
+    "WAITINGMESSAGE": "Wartenachricht",
     "RATING": "Bewertung",
     "NO_RATINGVALUE": "Keine Bewertung",
     "AGENTSADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "AGENTS": "Agenten",
     "FULLNAME": "Vollständiger Name",
     "INTERNAL": "Intern",
-    "PHONE_STATE": "Status Nebenstelle",
-    "PHONE_STATUS": "Status SIP",
+    "PHONE_STATE": "Telefonstatus",
+    "PHONE_STATUS": "Telefonstatus",
     "LOGOUT": "Abmelden",
     "UNPAUSE": "Pause beenden",
     "AGENTADD_QUEUE": "Agenten zur Chat-Warteschlange hinzufügen",
     "IN_USE": "In Verwendung",
     "VOICE": "Anrufe",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_CHATQUEUE": "Direkt zur Echtzeit-Warteschlange",
+    "GOTOREALTIME_CHATQUEUE": "Zur Echtzeit-Warteschlange für Chat gehen",
     "PARTIALPAUSE": "Teilpause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
-    "IDLE": "Leerlauf",
+    "IDLE": "Inaktiv",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
     "SHOWAGENTAVATAR": "Persönlichen Agenten-Avatar anzeigen",
     "AGENTAVATAR": "Agenten-Avatar",
-    "SPYINTERACTION": "Chat anzeigen",
-    "INTERACTIONS_CHATWEBSITE": "Direkt zu Interaktionen",
+    "SPYINTERACTION": "Mitlesen",
+    "INTERACTIONS_CHATWEBSITE": "Zu den Interaktionen gehen",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "CLOSINGQUESTION": "Frage beim Beenden des Chats",
+    "CLOSINGQUESTION": "Abschlussfrage",
     "WEBSCRIPT": "Webskript",
     "NO_CHATCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
     "NEW_CHATCANNEDANSWER": "Neue Textvorlage",
     "ADD_CHATCANNEDANSWER": "Textvorlage hinzufügen",
     "EDIT_CHATCANNEDANSWER": "Textvorlage bearbeiten",
     "DELETE_CHATCANNEDANSWER": "Textvorlage löschen",
-    "OFFLINEMESSAGESUBJECT": "Betreff der Nachricht für Offline-Interaktionen",
-    "OFFLINEMESSAGEBODY": "Text der Nachricht für Offline-Interaktionen",
-    "FORMSUBMITSUCCESSMESSAGE": "Nachricht, wenn Formular erfolgreich versendet",
-    "FORMSUBMITFAILUREMESSAGE": "Nachricht bei Fehlern im Formular",
-    "PLACEHOLDERMESSAGE": "Nachricht",
-    "NOTETITLE": "Text für Nachrichtenbereich",
+    "OFFLINEMESSAGESUBJECT": "Betreff der Nachricht bei Offline",
+    "OFFLINEMESSAGEBODY": "Test der Nachricht bei Offline",
+    "FORMSUBMITSUCCESSMESSAGE": "Meldung Formular erfolgreich gesendet",
+    "FORMSUBMITFAILUREMESSAGE": "Meldung Fehler beim Senden des Formulars",
+    "PLACEHOLDERMESSAGE": "Nachricht für Platzhalter",
+    "NOTETITLE": "Titel der Notiz",
     "DELETE_INTERACTION": "Interaktion löschen",
     "FONTSIZE": "Schriftgröße",
     "TEXTCOLOR": "Textfarbe",
     "COMMAND": "Eingabe",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
-    "NOTIFICATION": "Benachrichtigung für Agenten",
+    "NOTIFICATION": "Benachrichtigung",
     "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Sound abspielen",
+    "NOTIFICATIONSOUND": "Klingeln",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "HIDEWHENOFFLINE": "Ausblenden, wenn offline",
     "INSERT_MESSAGE_HERE": "Nachricht hier eingeben",
-    "AGENTALIAS": "Agenten-Alias",
+    "AGENTALIAS": "Agent Alias",
     "AGENTFULLNAME": "Vollständiger Name des Agenten",
-    "AGENTIDENTIFIER": "Identifikation Agent",
-    "WAITFORTHEASSIGNEDAGENT": "Zeit (in Sekunden), wie lange ein aktiver Chat bei einem Agenten verbleibt, wenn sich dieser abmeldet",
-    "ALIGNMENT": "Ausrichtung Widget",
-    "BOTTOM_RIGHT": "Unten Rechts",
-    "LEFT": "Linker Bildschirmrand",
-    "RIGHT": "Linker Bildschirmrand",
+    "AGENTIDENTIFIER": "Identifikator",
+    "WAITFORTHEASSIGNEDAGENT": "Warten auf den zugewiesenen Mitarbeiter",
+    "ALIGNMENT": "Ausrichtung",
+    "BOTTOM_RIGHT": "Unten rechts",
+    "LEFT": "Links",
+    "RIGHT": "Richtig",
     "VERTICALALIGNMENT": "Vertikale Ausrichtung",
     "POSITION": "Position",
     "VERTICALPOSITION": "Vertikale Position",
-    "SNIPPETSWIPEOUT": "Widget ausklappen",
-    "ALTERNATE": "Abwechselnd",
+    "SNIPPETSWIPEOUT": "Snippet ausschieben",
+    "ALTERNATE": "Wechseln",
     "CENTERED": "Zentriert",
     "CUSTOMERAVATAR": "Kunden-Avatar",
     "DEFAULTTITLE": "Standardtitel",
     "AGENTADD_CHATWEBSITE": "Agenten zur Chat-Website hinzufügen",
     "BACKGROUNDCOLOR": "Hintergrundfarbe",
     "MESSAGEFONTSIZE": "Schriftgröße der Nachricht",
-    "AGENTTRANSFER": "Transfer an Agenten erlauben",
-    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "DIALOGFLOW": "Google Dialogflow",
+    "AGENTTRANSFER": "Agententransfer",
+    "AGENTTRANSFERTIMEOUT": "Agententransfer-Timeout",
+    "DIALOGFLOW": "Dialogflow",
     "EDIT_DIALOGFLOW": "Dialogflow bearbeiten",
     "LANGUAGE": "Sprache",
-    "QUEUETRANSFER": "Transfer in Warteschlange erlauben",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
-    "SYSTEMALIAS": "System-Alias",
+    "QUEUETRANSFER": "Transfer in Warteschlange",
+    "QUEUETRANSFERTIMEOUT": "Timeout bei der Warteschlangenübertragung",
+    "SYSTEMALIAS": "Systemalias",
     "SYSTEMAVATAR": "System-Avatar",
     "TRANSFER": "Transfer",
     "WELCOMEMESSAGE": "Willkommensnachricht",
-    "ENABLECUSTOMERCHECKMARKS": "Bestätigung Nachricht erhalten/gelesen anzeigen",
+    "ENABLECUSTOMERCHECKMARKS": "Bestätigung Nachricht erhalten/gelesen",
     "CANNEDANSWERS": "Textvorlagen",
-    "CHATCANNEDANSWERS": "Chat-Textbausteine",
+    "CHATCANNEDANSWERS": "Textvorlagen",
     "DOWNLOAD_INTERACTION": "Herunterladen",
     "LOGIN_TIME": "Zeit angemeldet",
     "PAUSE_TIME": "Zeit in Pause",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
-    "BOTNAME": "Name des BOTs",
+    "BOTNAME": "Botname",
     "EDIT_AMAZONLEX": "Amazon Lex bearbeiten",
     "LEXREGION": "Region",
     "SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
     "TEAMS_ASSOCIATION": "Teamzuweisung",
     "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "PausenID während Qualifizierung",
-    "ENABLESENDBUTTON": "\"Nachricht senden\" Button für Kunden anzeigen (ansonsten Senden nur durch ENTER)",
-    "FEEDBACKTITLE": "Text auf dem Button für Feedback",
+    "MANDATORYDISPOSITIONPAUSEID": "PausenID, wenn Qualifizierung erforderlich",
+    "ENABLESENDBUTTON": "Senden-Button aktivieren",
+    "FEEDBACKTITLE": "Feedback-Titel",
     "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
     "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
     "VIDAOOESCALATION": "Videoanruf starten",
     "VIDAOOSESSION": "Videoanruf starten",
     "VIDEO": "Video",
-    "CLIENTEMAIL": "E-Mail des Kunden",
-    "DIALOGFLOWV2": "Google Dialogflow V2",
+    "CLIENTEMAIL": "Kunden-E-Mail",
+    "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
     "PRIVATEKEY": "Privater Schlüssel",
     "PROJECTID": "Projekt-ID",
-    "EMAIL_ACCOUNT": "E-Mail Konto",
-    "OPEN_NEW_INTERACTION": "Offline-Nachrichten per E-Mail innerhalb des Systems verwalten",
+    "EMAIL_ACCOUNT": "Email-Konto",
+    "OPEN_NEW_INTERACTION": "Neue Interaktion öffnen",
     "SUBJECT": "Betreff",
     "ADD_NOTE": "Notiz hinzufügen",
     "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
     "VIDAOOTOPIC": "Vidaoo-Thema",
     "CHANNELID": "Kanal ID",
     "EDIT_TVOX": "TVox bearbeiten",
-    "MOTIONTITLE": "Motion-Titel",
-    "MOTIONURL": "Motion-URL",
-    "MOTIONURLONANSWER": "Motion-URLL bei Antwort",
-    "MOTIONURLONRING": "Motion-URL bei Klingeln",
+    "MOTIONTITLE": "Bewegungstitel",
+    "MOTIONURL": "Bewegungs-URL",
+    "MOTIONURLONANSWER": "Bewegungs-URL bei Antwort",
+    "MOTIONURLONRING": "Bewegungs-URL auf Ring",
     "SERVICEID": "Service-ID",
-    "SERVICENAME": "Servicename",
+    "SERVICENAME": "Dienstname",
     "TVOX": "TVox",
     "TVOXIP": "TVox IP-Adresse",
     "TVOXLOGINURL": "TVox-Login-REST-URL",
index 20f6e0a..d094697 100644 (file)
@@ -3,15 +3,15 @@
     "AMAZONLEX": "Amazon Lex",
     "TEXT": "Tekst",
     "TIMES": "Aantal keren per interactie",
-    "EDIT_AUTOREPLY": "Automatisch Antwoord Bewerken",
-    "AUTOREPLY": "Automatisch Antwoord",
-    "NEW_CHATDISPOSITION": "Nieuwe Chat Dispositie",
-    "ENABLECUSTOMERATTACHMENT": "Klantbijlage Inschakelen",
+    "EDIT_AUTOREPLY": "Edit automatisch antwoord",
+    "AUTOREPLY": "Automatisch antwoord",
+    "NEW_CHATDISPOSITION": "Nieuwe chat dispositie",
+    "ENABLECUSTOMERATTACHMENT": "Kan een klant voorzetstukken",
     "OFFLINE_CHAT_BUTTON": "'Offline Chat' knop",
-    "OFFLINESTATUS": "Status Offline",
+    "OFFLINESTATUS": "Status offline",
     "NAME": "Naam",
     "CHATQUEUES": "Chatwachtrijen",
-    "SEARCH_FOR_ANYONE": "Zoeken",
+    "SEARCH_FOR_ANYONE": "Zoeken voor iedereen",
     "STRATEGY": "Strategie",
     "AGENT_TIMEOUT": "Time-out agent",
     "DESCRIPTION": "Beschrijving",
     "ALIAS": "Alias",
     "VARIABLE": "Variabele",
     "INTERVAL": "Interval",
-    "EDIT_CLOSE": "Bewerken Sluiten",
+    "EDIT_CLOSE": "Edit dicht",
     "TIMEZONE": "Tijdzone",
     "MESSAGE": "Bericht",
     "ADVANCED": "Geavanceerd",
-    "FORWARDTRANSCRIPT": "Transcriptie doorsturen",
-    "FORWARDTRANSCRIPTMESSAGE": "Transcriptie bericht doorsturen",
-    "SKIPMESSAGEBUTTON": "Bericht Overslaan Knop",
-    "EDIT_MESSAGE": "Bericht Bewerken",
-    "CONDITION_AGREEMENT": "Akkoord met de voorwaarden",
+    "FORWARDTRANSCRIPT": "Vooruit transcript",
+    "FORWARDTRANSCRIPTMESSAGE": "Vooruit Transcript bericht",
+    "SKIPMESSAGEBUTTON": "Bericht overslaan knop",
+    "EDIT_MESSAGE": "Bericht wijzigen",
+    "CONDITION_AGREEMENT": "Voorwaarde akkoord",
     "NONE": "Geen",
     "PRIORITY": "Prioriteit",
-    "ONLINESTATUS": "Online Status",
+    "ONLINESTATUS": "Online status",
     "UNMANAGEDSTATUS": "Onbeheerde Status",
-    "AUTOCLOSE": "Automatisch Sluiten Inschakelen",
-    "ENABLEUNMANAGEDNOTE": "Onbeheerd Bericht Inschakelen",
+    "AUTOCLOSE": "Autoclose inschakelen",
+    "ENABLEUNMANAGEDNOTE": "Om onbeheerde bericht",
     "UNMANAGEDMESSAGE": "Bericht",
     "SKIPUNMANAGED": "Bericht overslaan",
     "SENDUNMANAGED": "Bericht verzenden",
     "WEBSITESCRIPT": "Website Script",
     "DELETE_OFFLINEMESSAGE": "Verwijderen",
     "OFFLINEMESSAGES": "Offline berichten",
-    "FORWARD_OFFLINE": "Offline doorsturen",
-    "SHOW_OFFLINEMESSAGE": "Offline Bericht Weergeven",
-    "FORWARD_OFFLINE_ADDRESS": "Offline adresboek doorsturen",
-    "CLOSINGFORM": "Formulier Sluiten",
-    "ENABLERATING": "Rating Inschakelen",
-    "ENABLECUSTOMERWRITING": "Laat de klant schrijven voordat de agent accepteert",
+    "FORWARD_OFFLINE": "Vooruit Offline",
+    "SHOW_OFFLINEMESSAGE": "Toon",
+    "FORWARD_OFFLINE_ADDRESS": "Vooruit Offline adresboek",
+    "CLOSINGFORM": "Formulier sluiten",
+    "ENABLERATING": "Rating inschakelen",
+    "ENABLECUSTOMERWRITING": "Laat de klant tevoren schriftelijk gemachtigde accepteren",
     "ENABLEFEEDBACK": "Feedback mogelijk",
-    "RATINGTYPE": "Type Rating",
+    "RATINGTYPE": "Waardering Type",
     "CLOSINGMESSAGE": "Bericht sluiten",
-    "CLOSINGMESSAGEBUTTON": "Knop om het bericht te sluiten",
-    "RATINGSTARSNUMBER": "Rating",
-    "EDIT_GOTOIF": "GotoIf Bewerken",
+    "CLOSINGMESSAGEBUTTON": "Sluiten Berichtentoets",
+    "RATINGSTARSNUMBER": "Rating Stars nummer",
+    "EDIT_GOTOIF": "GotoIf bewerken",
     "CONDITION": "Voorwaarde",
-    "TRUEPRIORITY": "Prioriteit",
-    "FALSEPRIORITY": "Geen prioriteit",
+    "TRUEPRIORITY": "Echte prioriteit",
+    "FALSEPRIORITY": "False prioriteit",
     "VALUE": "Waarde",
     "WEBSITEALIAS": "Website Alias",
     "ERRORS": {
-      "TEXT_REQUIRED": "Verplicht veld",
-      "SENDUNMANAGED_REQUIRED": "Verplicht veld",
-      "SENDUNMANAGED_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
-      "SKIPUNMANAGED_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
-      "UNMANAGEDMESSAGE_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
-      "WEBSITEALIAS_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
-      "AGENT_REQUIRED": "Verplicht veld",
-      "QUEUE_REQUIRED": "Verplicht veld",
-      "CONDITION_REQUIRED": "Verplicht veld",
-      "PRIORITY_REQUIRED": "Verplicht veld",
-      "TRUEPRIORITY_REQUIRED": "Verplicht veld",
-      "FALSEPRIORITY_REQUIRED": "Verplicht veld",
-      "NAME_REQUIRED": "Verplicht veld",
-      "LIST_REQUIRED": "Verplicht veld",
-      "AGENT_TIMEOUT_REQUIRED": "Verplicht veld",
-      "MOTIONADDRESS_REQUIRED": "Verplicht veld",
-      "DISPOSITION_REQUIRED": "Verplicht veld",
-      "MOTIONADDRESS_MUST_VALID_URL": "Ongeldig formaat",
-      "EMAIL_MUST_BE_VALID": "Verplicht veld",
-      "ADDRESS_REQUIRED": "Verplicht veld",
-      "ADDRESS_MUST_VALID_URL": "Ongeldig formaat",
-      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Verplicht veld",
-      "ACCEPTURL_MUST_VALID_URL": "Ongeldig formaat",
-      "TIMEOUT_REQUIRED": "Verplicht veld",
-      "REJECTURL_MUST_VALID_URL": "Ongeldig formaat",
-      "CLOSEURL_MUST_VALID_URL": "Ongeldig formaat",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter zijn dan of gelijk aan",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter zijn dan of gelijk aan",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter zijn dan of gelijk aan",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter zijn dan of gelijk aann",
-      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter zijn dan of gelijk aan",
-      "WAITINGMESSAGE_REQUIRED": "Verplicht veld",
-      "WAITINGTITLE_REQUIRED": "Verplicht veld",
-      "KEY_MAX_LENGTH": "Verplicht veld",
-      "KEY_REQUIRED": "Verplicht veld",
-      "WAITINGMESSAGE_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
-      "WAITINGTITLE_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
-      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk aan",
-      "HEADER_OFFLINE_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
-      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
-      "CLOSINGQUESTION_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
-      "TEXT_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
+      "TEXT_REQUIRED": "De tekst is vereist",
+      "SENDUNMANAGED_REQUIRED": "Het is een verplicht veld",
+      "SENDUNMANAGED_MAX_LENGTH": "Het gebied moet een maximale lengte van {{max.}}",
+      "SKIPUNMANAGED_MAX_LENGTH": "Het gebied moet een maximale lengte van {{max.}}",
+      "UNMANAGEDMESSAGE_MAX_LENGTH": "Het gebied moet een maximale lengte van {{max.}}",
+      "WEBSITEALIAS_MAX_LENGTH": "Alias moet hebben een maximale lengte van {{max.}}",
+      "AGENT_REQUIRED": "De Agent is vereist",
+      "QUEUE_REQUIRED": "De wachtrij is vereist",
+      "CONDITION_REQUIRED": "De conditie is vereist",
+      "PRIORITY_REQUIRED": "De prioriteit is vereist.",
+      "TRUEPRIORITY_REQUIRED": "De prioriteit is vereist.",
+      "FALSEPRIORITY_REQUIRED": "De prioriteit is vereist.",
+      "NAME_REQUIRED": "De naam is verplicht",
+      "LIST_REQUIRED": "De lijst is vereist",
+      "AGENT_TIMEOUT_REQUIRED": "De Agent Timeout is vereist",
+      "MOTIONADDRESS_REQUIRED": "De Motion Adres is vereist.",
+      "DISPOSITION_REQUIRED": "De Dispositie is vereist",
+      "MOTIONADDRESS_MUST_VALID_URL": "De Motion adres moet worden geschreven in een geldige indeling",
+      "EMAIL_MUST_BE_VALID": "E-mail moet een geldig e-mailadres in.",
+      "ADDRESS_REQUIRED": "Het adres is vereist.",
+      "ADDRESS_MUST_VALID_URL": "Het adres moet worden geschreven in een geldige indeling",
+      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Het onderzoek Doorstuuradres is vereist",
+      "ACCEPTURL_MUST_VALID_URL": "Accepteer URL moet worden geschreven in een geldige indeling",
+      "TIMEOUT_REQUIRED": "De timeout is vereist",
+      "REJECTURL_MUST_VALID_URL": "De afwijzing URL moet worden geschreven in een geldige indeling",
+      "CLOSEURL_MUST_VALID_URL": "De nauwe URL moet worden geschreven in een geldige indeling",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De prioriteit moet groter zijn dan of gelijk aan",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De echte prioriteit moet groter zijn dan of gelijk aan",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De valse prioriteit moet groter zijn dan of gelijk aan",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De time-out moet groter zijn dan of gelijk aan",
+      "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De polling moet groter zijn dan of gelijk aan",
+      "WAITINGMESSAGE_REQUIRED": "De Wachtmelding is vereist",
+      "WAITINGTITLE_REQUIRED": "De wachtende Titel is vereist",
+      "KEY_MAX_LENGTH": "Sleutel moet een lengte gelijk aan {{max.}}",
+      "KEY_REQUIRED": "De sleutel is vereist",
+      "WAITINGMESSAGE_MAX_LENGTH": "De Wachtmelding moet beschikken over een maximale lengte van {{max.}}",
+      "WAITINGTITLE_MAX_LENGTH": "De wachtende titel moeten een maximale lengte van {{max.}}",
+      "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De Rating Stars nummer moet kleiner dan of gelijk aan",
+      "HEADER_OFFLINE_MAX_LENGTH": "De waarde moet hebben een maximale lengte van {{max.}}",
+      "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "De waarde moet hebben een maximale lengte van {{max.}}",
+      "CLOSINGQUESTION_MAX_LENGTH": "De waarde moet hebben een maximale lengte van {{max.}}",
+      "TEXT_MAX_LENGTH": "De waarde moet een maximale lengte hebben die gelijk is aan {{max}}",
       "VALUE_REQUIRED": "Verplicht veld",
-      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
-      "OFFLINEMESSAGEBODY_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
-      "PLACEHOLDERMESSAGE_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
-      "NOTETITLE_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
-      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
-      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
+      "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "De waarde moet een maximale lengte hebben die gelijk is aan {{max}}",
+      "OFFLINEMESSAGEBODY_MAX_LENGTH": "De waarde moet een maximale lengte hebben die gelijk is aan {{max}}",
+      "PLACEHOLDERMESSAGE_MAX_LENGTH": "De waarde moet een maximale lengte hebben die gelijk is aan {{max}}",
+      "NOTETITLE_MAX_LENGTH": "De waarde moet een maximale lengte hebben die gelijk is aan {{max}}",
+      "FORMSUBMITSUCCESSMESSAGE_MAX_LENGTH": "De waarde moet een maximale lengte hebben die gelijk is aan {{max}}",
+      "FORMSUBMITFAILUREMESSAGE_MAX_LENGTH": "De waarde moet een maximale lengte hebben die gelijk is aan {{max}}",
       "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter zijn dan of gelijk aan",
       "FONTSIZE_REQUIRED": "Verplicht veld",
       "COMMAND_REQUIRED": "Verplicht veld",
       "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter zijn dan of gelijk aan",
       "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk aan",
       "VERTICALPOSITION_REQUIRED": "Verplicht veld",
-      "CUSTOMERALIAS_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
+      "CUSTOMERALIAS_MAX_LENGTH": "De waarde moet een maximale lengte hebben die gelijk is aan {{max}}",
       "TAG_REQUIRED": "Verplicht veld",
       "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter zijn dan of gelijk aan",
       "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk aan",
       "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter zijn dan of gelijk aan",
       "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk aan",
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Verplicht veld",
-      "SYSTEMALIAS_MAX_LENGTH": "De waarde mag maximaal {{max.}} karakters lang zijn",
+      "SYSTEMALIAS_MAX_LENGTH": "De waarde moet een maximale lengte hebben die gelijk is aan {{max}}",
       "SYSTEMALIAS_REQUIRED": "Verplicht veld",
       "ACCESSKEYID_REQUIRED": "Verplicht veld",
       "BOTNAME_REQUIRED": "Verplicht veld",
       "EMAIL_ACCOUNT_REQUIRED": "Verplicht veld"
     },
     "CM_FIELD": "Contact Manager veld",
-    "CHATPROACTIVEACTIONS": "Proactieve Acties",
-    "NEW_CHATPROACTIVEACTION": "Nieuwe Proactieve Actie",
-    "EDIT_CHATPROACTIVEACTION": "Proactieve Actie Bewerken",
-    "DELETE_CHATPROACTIVEACTION": "Proactieve Actie Verwijderen",
-    "ADD_CHATPROACTIVEACTION": "Proactieve Actie Toevoegen",
+    "CHATPROACTIVEACTIONS": "Proactieve acties",
+    "NEW_CHATPROACTIVEACTION": "Nieuwe proactieve actie",
+    "EDIT_CHATPROACTIVEACTION": "Edit Pro-actief optreden",
+    "DELETE_CHATPROACTIVEACTION": "Verwijder proactief optreden",
+    "ADD_CHATPROACTIVEACTION": "Voeg proactief optreden",
     "NO_CHATPROACTIVEACTION_AVAILABLE": "Geen proactieve acties beschikbaar.",
-    "NO_OFFLINEMESSAGE_AVAILABLE": "Geen offline berichten beschikbaar.",
+    "NO_OFFLINEMESSAGE_AVAILABLE": "Geen Offline berichten beschikbaar.",
     "MOUSEOVER": "Muis Over",
     "TIMEOUT": "Timeout",
     "TYPE": "Type",
     "QUEUE": "Wachtrij",
     "BUILDER": "Builder",
     "PREVIEW": "Afdrukvoorbeeld",
-    "EDIT_AGENT": "Agent Bewerken",
-    "EDIT_QUEUE": "Wachtrij Bewerken",
-    "EDIT_GOTO": "Ga naar Bewerken",
-    "EDIT_GOTOIf": "GotoIf Bewerken",
-    "EDIT_NOOP": "Noop Bewerken",
-    "ADD_CHATQUEUE": "Chat Wachtrij Toevoegen",
-    "EDIT_CHATQUEUE": "Chat Wachtrij Bewerken",
-    "DELETE_CHATQUEUE": "Chat wachtrij Verwijderen",
+    "EDIT_AGENT": "Edit Agent",
+    "EDIT_QUEUE": "Wachtrij bewerken",
+    "EDIT_GOTO": "Ga naar bewerken",
+    "EDIT_GOTOIf": "GotoIf bewerken",
+    "EDIT_NOOP": "Noop bewerken",
+    "ADD_CHATQUEUE": "Voeg wachtrij voor chatten",
+    "EDIT_CHATQUEUE": "Edit wachtrij voor chatten",
+    "DELETE_CHATQUEUE": "Verwijder Chat wachtrij",
     "SETTINGS": "Instellingen",
     "SAVE": "Opslaan",
     "SCRIPT": "Script",
     "CHATWEBSITES": "Chat websites",
     "MOTIONADDRESS": "Motion adres",
     "MOTIONPROXY": "Proxy of Motion domein",
-    "ADD_CHATWEBSITE": "Chat Website Toevoegen",
-    "EDIT_CHATWEBSITE": "Chat Website Bewerken",
-    "DELETE_CHATWEBSITE": "Chat Website verwijderen",
+    "ADD_CHATWEBSITE": "Voeg Chat Website",
+    "EDIT_CHATWEBSITE": "Edit Chat Website",
+    "DELETE_CHATWEBSITE": "Verwijder Chat Website",
     "LIST": "Lijst",
     "SNIPPET": "Snapshot",
     "FORMS": "Formulieren",
     "MAINCOLOR": "Hoofdkleur",
     "FOCUSCOLOR": "Focuskleur",
     "BUTTONCOLOR": "Kleur",
-    "HEADERSHAPE": "Koptekst opmaak",
+    "HEADERSHAPE": "Vorm van het maaibord",
     "ANIMATION": "Animatie",
     "DEFAULT": "Standaard",
     "WHITELABEL": "White Label",
     "LOGO": "Logo",
-    "DOWNLOADTRANSCRIPT": "Transcriptie downloaden",
-    "ENQUIRY_ENABLE": "Navragen inschakelen",
-    "ENQUIRY_FORWARDING": "Navraag doorsturen",
-    "ENQUIRY_FORWARDING_ADDRESS": "Doorstuuradres voor navraag",
+    "DOWNLOADTRANSCRIPT": "Download transcript",
+    "ENQUIRY_ENABLE": "Onderzoek inschakelen",
+    "ENQUIRY_FORWARDING": "Onderzoek doorsturen",
+    "ENQUIRY_FORWARDING_ADDRESS": "Onderzoek Doorstuuradres",
     "LABELS": "Labels",
-    "HEADER_ONLINE": "Online koptekst",
+    "HEADER_ONLINE": "Online voorzetstuk",
     "ONLINE_MESSAGE": "Online bericht",
-    "NAME_TITLE": "Naam Label",
-    "USERNAME_PLACEHOLDER": "Gebruikersnaam Placeholder",
-    "EMAIL_TITLE": "E-mail label",
-    "EMAIL_PLACEHOLDER": "E-mail Placeholder",
+    "NAME_TITLE": "Naam Input Label",
+    "USERNAME_PLACEHOLDER": "Gebruikersnaam Input Placeholder",
+    "EMAIL_TITLE": "E-mail input label",
+    "EMAIL_PLACEHOLDER": "E-mail Input Placeholder",
     "START_CHAT_BUTTON": "'Start Chat' knop",
-    "AGENTS_BUSY": "Agent zijn drukbezet bericht",
-    "HEADER_OFFLINE": "Offline koptekst",
+    "AGENTS_BUSY": "Drukbezette Agents bericht",
+    "HEADER_OFFLINE": "Offline voorzetstuk",
     "OFFLINE_MESSAGE": "Offline berichten",
     "MESSAGE_TITLE": "Bericht Label",
-    "ENQUIRY_MESSAGE_PLACEHOLDER": "Navraag bericht Placeholder",
-    "ENQUIRY_BUTTON": "Navraag knoptekst",
-    "RATING_MESSAGE": "Rating Bericht",
-    "RATING_SEND": "Rating Verzendknop Tekst",
-    "RATING_SKIP": "Rating Overslaan Knoptekst",
+    "ENQUIRY_MESSAGE_PLACEHOLDER": "Onderzoek bericht Input Placeholder",
+    "ENQUIRY_BUTTON": "Onderzoek knop tekst",
+    "RATING_MESSAGE": "Waardering bericht",
+    "RATING_SEND": "Rating Verzendknop tekst",
+    "RATING_SKIP": "Rating Skip knop tekst",
     "ONLINE": "Online",
     "OFFLINE": "Offline",
     "PROACTIVE": "Proactief",
     "ACCEPT": "Accepteren",
-    "ACCEPTMETHOD": "Methode accepteren",
+    "ACCEPTMETHOD": "Accepteren methode",
     "ACCEPTURL": "URL accepteren",
     "REJECT": "Afwijzen",
     "REJECTMETHOD": "Methode afwijzen",
     "REJECTURL": "URL afwijzen",
     "CLOSE": "Dicht",
-    "CLOSEMETHOD": "Methode sluiten",
-    "CLOSEURL": "URL sluiten",
+    "CLOSEMETHOD": "Sluit methode",
+    "CLOSEURL": "Sluit URL",
     "EMBEDDING": "Insluiten",
     "GENERAL": "Algemeen",
     "SELECTED": "Geselecteerd",
-    "SELECT_ALL": "Selecteer Alles",
-    "SELECT_NONE": "Selecteer Geen",
+    "SELECT_ALL": "Alles selecteren",
+    "SELECT_NONE": "Selecteer None (Geen).",
     "BACK": "Terug",
     "HELP": {
-      "MAPKEY": "Het volgende Motion Contact Manager veld:",
-      "FROMKEY": "zal worden toegewezen aan uw Motion Chat snippet als:",
+      "MAPKEY": "De volgende motie Contact Manager veld:",
+      "FROMKEY": "Wordt toegewezen die u in uw ontwerpresolutie Chat fragment zoals:",
       "TOKEN": "Website Motion Token",
       "COPYSCRIPTTOCLIPBOARD": "Kopieer en plak dit script in uw website",
-      "FORWARD_OFFLINE": "U kunt meerdere adressen toevoegen door ze te scheiden met een komma (bijvoorbeeld John.doe@xcally.com, jane.miller@xcally.com)",
-      "MOTIONADDRESS": "Gebruik de volgende notatie: <protocol>://<ipaddress>[:<port>]. Voorbeeld: https://X.Y.Z.W",
-      "MOTIONPROXY": "Gebruik volgende notatie: <protocol>://<ipaddress>[:<port>]. Voorbeeld: https://X.Y.Z.W",
+      "FORWARD_OFFLINE": "U kunt meerdere adressen met een komma (bijvoorbeeld John.doe@xcally.com, jane.miller@xcally.com)",
+      "MOTIONADDRESS": "Voer in de volgende notatie: <protocol>://<ipaddress>[:<port>]. Voorbeeld: https://X.Y.Z.W",
+      "MOTIONPROXY": "Voer in de volgende notatie: <protocol>://<ipaddress>[:<port>]. Voorbeeld: https://X.Y.Z.W",
       "NAME": "Alleen cijfers, letters en speciale tekens (_) worden ondersteund",
-      "LIST": "Contact Manager lijst wordt gebruikt om contactpersonen te koppelen",
-      "KEY": "De korte naam (5 tekens) van de Website die wordt weergegeven op het Agent tabblad",
-      "INTEVAL": "Moet worden geselecteerd uit de lijst van beschikbare intervallen",
+      "LIST": "Contact Manager lijst gebruikt om contactpersonen koppelen",
+      "KEY": "Website korte naam (5 tekens) weergegeven op het tabblad Agent",
+      "INTEVAL": "Die moeten worden gekozen uit de lijst van beschikbare intervallen",
       "TIMEZONE": "Selecteer één optie in de lijst (standaard=local timezone)",
-      "ENABLERATING": "Inschakelen als u wilt dat de website bezoeker een Rating kan achterlaten",
-      "ENABLEFEEDBACK": "Inschakelen als u wilt dat de website bezoeker feedback kan achterlaten (maximaal 150 tekens)",
-      "FORWARDTRANSCRIPT": "Inschakelen als u wilt dat de website bezoeker wordt gevraagd om de een transcriptie van de chat te ontvangen via e-mail",
-      "AUTOCLOSE": "Inschakelen als u dat wilt chatsessies worden gesloten als Onbeheerd indien er geen agent beschikbaar is. Meer informatie over: https://wiki.xcallymotion.com/display/XMV/Chat Websites#ChatWebsites-Snippet",
-      "ENABLEUNMANAGEDNOTE": "Inschakelen als u wilt dat de bezoeker een bericht ontvangt wanneer alle agenten bezet zijn en de chat onbeheerd is",
-      "ENABLECUSTOMERWRITING": "Inschakelen als u wilt dat de chat begint zonder te wachten op een beschikbare agent (let op: wanneer ingeschakeld, zullen chats nooit onbeheerd zijn). Meer informatie vindt u op: https://wiki.xcallymotion.com/display/XMV/Chat Websites#ChatWebsites-Snippet",
+      "ENABLERATING": "Het inschakelen als u wilt dat de website bezoeker kan de interactie op het einde",
+      "ENABLEFEEDBACK": "Het inschakelen als u wilt dat de website bezoeker kan een terugkoppeling (maximaal 150 tekens) aan het einde",
+      "FORWARDTRANSCRIPT": "Het inschakelen als u wilt dat de website bezoeker wordt gevraagd een Transcript voor chatten via mail",
+      "AUTOCLOSE": "Inschakelen als u dat wilt chatsessies worden gesloten als onbeheerde indien er geen agent beschikbaar is. Meer informatie over: https://wiki.xcallymotion.com/display/XMV/Chat Websites#ChatWebsites-Snippet",
+      "ENABLEUNMANAGEDNOTE": "Het inschakelen als u wilt dat de bezoeker een bericht wanneer alle agenten bezig zijn en de chat gets onbeheerde",
+      "ENABLECUSTOMERWRITING": "Het inschakelen als u wilt dat de chat begint zonder te wachten op een beschikbare agent (let op: als u, uw chats nooit onbeheerd). Meer informatie vindt u op: https://wiki.xcallymotion.com/display/XMV/Chat Websites#ChatWebsites-Snippet",
       "INTERVAL": "Selecteer één optie in de lijst",
-      "HIDEWHENOFFLINE": "Verbergt de Chat snippet wanneer deze offline is",
-      "AGENTIDENTIFIER": "Vertegenwoordigt de agent-ID in de chatsessie in de Chat snippet",
-      "WEBSITEALIAS": "Een prefix voor het samenstellen van de agentnaam (prefix + Agentnummer) zichtbaar voor de web bezoeker tijdens de chatsessie",
+      "HIDEWHENOFFLINE": "Verbergt het fragment wanneer het offline is",
+      "AGENTIDENTIFIER": "Vertegenwoordigt de agent-ID in de chatsessie in het fragment",
+      "WEBSITEALIAS": "Een voorvoegsel gebruikt om samen de agentnaam (voorvoegsel Agentnummer) afgebeeld op het web bezoeker tijdens de chatsessie",
       "VERTICALPOSITION": "Vertegenwoordigt de afstand in percentage vanaf de bovenkant",
-      "WELCOMEMESSAGE": "Leeglaten als u geen welkomstbericht wilt verzenden",
-      "MANDATORYDISPOSITION": "Verplichte Dispositie",
+      "WELCOMEMESSAGE": "Laat leeg als u geen welkomstbericht wilt verzenden",
+      "MANDATORYDISPOSITION": "Verplichte regeling",
       "MANDATORYDISPOSITIONPAUSEID": "Pauze om te gebruiken als verplichte dispositie is ingeschakeld"
     },
     "ADDRESS": "Adres",
-    "ONLINESTATE": "Online status",
-    "OFFLINESTATE": "Offline status",
-    "RATINGSTATE": "Waarding status",
-    "ENQUIRY": "Navraag",
-    "OFFLINETEMPLATE": "Offline sjabloon",
-    "CHATDISPOSITIONS": "Chat Disposities",
-    "NO_CHATDISPOSITION_AVAILABLE": "Geen disposities beschikbaar voor chat",
-    "ADD_CHATDISPOSITION": "Chat dispositie Toevoegen",
+    "ONLINESTATE": "De status Online (Actief)",
+    "OFFLINESTATE": "Offline staat",
+    "RATINGSTATE": "Rating staat",
+    "ENQUIRY": "Onderzoek",
+    "OFFLINETEMPLATE": "Offline Template",
+    "CHATDISPOSITIONS": "Chat dispositieven",
+    "NO_CHATDISPOSITION_AVAILABLE": "No Chat Dispositieven beschikbaar",
+    "ADD_CHATDISPOSITION": "Voeg Chat dispositie",
     "DELETE": "Verwijderen",
-    "EDIT_CHATDISPOSITION": "Chat dispositie Bewerken",
-    "DELETE_CHATDISPOSITION": "Chat dispositie Verwijderen",
+    "EDIT_CHATDISPOSITION": "Edit Chat dispositie",
+    "DELETE_CHATDISPOSITION": "Verwijder Chat dispositie",
     "CHAT": "Chat",
     "ID": "Id",
-    "NEW_CHATQUEUE": "Nieuwe chat wachtrij",
+    "NEW_CHATQUEUE": "Nieuwe wachtrij voor chatten",
     "NEW_CHATWEBSITE": "Nieuwe Chat Website",
     "ROUNDED": "Afgerond",
     "SQUARED": "Kwadraat",
     "SELECT_STATUS": "Selecteer een status",
     "FILTER": "Filter",
     "FILTERS": "Filters",
-    "TEAMADD_CHATQUEUE": "Team aan chat wachtrij Toevoegen",
-    "AGENTADD_CHATQUEUE": "Agent aan chat wachtrij Toevoegen",
+    "TEAMADD_CHATQUEUE": "Toevoegen aan wachtrij voor chatten",
+    "AGENTADD_CHATQUEUE": "Voeg Agent naar wachtrij voor chatten",
     "ALL_AGENTS": "Alle gebruikers zijn agenten",
     "SELECTED_AGENTS": "Geselecteerde agenten",
     "CLOSEDAT": "Gesloten",
     "CREATEDAT": "Gemaakt op",
     "NOTES": "Aantekeningen",
     "NO_INTERACTION_AVAILABLE": "Geen interacties beschikbaar",
-    "SELECTED_WEBSITE": "Selecteer een website",
+    "SELECTED_WEBSITE": "Kies een website",
     "GOTOP": "Gotop",
-    "EDIT_GOTOP": "Gotop Bewerken",
-    "SELECT_WEBSITE": "Selecteer een website",
+    "EDIT_GOTOP": "Gotop bewerken",
+    "SELECT_WEBSITE": "Kies een website",
     "INFO": "Info",
     "OFFLINEMESSAGES_CHATWEBSITE": "Ga naar offline-meldingen",
-    "WAITINGTITLE": "Wachtmelding titel",
+    "WAITINGTITLE": "Waiting titel",
     "WAITINGMESSAGE": "Wachtmelding",
-    "RATING": "Rating",
-    "NO_RATINGVALUE": "Geen Rating",
-    "AGENTSADD_QUEUE": "Agent aan chat wachtrij toevoegen",
+    "RATING": "Waardering",
+    "NO_RATINGVALUE": "Geen waardering",
+    "AGENTSADD_QUEUE": "Voeg Agent naar wachtrij voor chatten",
     "QUEUES": "Wachtrijen",
     "LOGGED_IN": "Aangemeld",
     "PAUSED": "Gepauzeerd",
     "PHONE_STATUS": "Telefoonstatus",
     "LOGOUT": "Afmelden",
     "UNPAUSE": "Einde pauze",
-    "AGENTADD_QUEUE": "Agent toevoegen aan chat wachtrij",
+    "AGENTADD_QUEUE": "Voeg Agent naar wachtrij voor chatten",
     "DEFAULT_PAUSE": "Standaardinstellingen voor pauze",
     "UNKNOWN": "Onbekend",
-    "UNREGISTERED": "Niet geregistreerd",
+    "UNREGISTERED": "Unregistered",
     "UNAVAILABLE": "Niet beschikbaar",
     "NOT_INUSE": "Niet in gebruik",
     "REACHABLE": "Bereikbaar",
     "VOICE": "Spraak",
     "NO_AGENT_ONLINE": "Geen Agent Online",
     "GOTOREALTIME_CHATQUEUE": "Ga naar Realtime wachtrij voor chatten",
-    "PARTIALPAUSE": "Tijdelijk onderbreken",
+    "PARTIALPAUSE": "Gedeeltelijk onderbreken",
     "BUSY": "Bezet",
     "TIMER": "Timer",
-    "IDLE": "Idle",
+    "IDLE": "Stationair toerental",
     "CAPACITY": "Capaciteit",
     "TAGS": "Tags",
-    "SHOWAGENTAVATAR": "Agent Avatar Weergeven",
+    "SHOWAGENTAVATAR": "Persoonlijke agent avatar",
     "AGENTAVATAR": "Agent Avatar",
     "SPYINTERACTION": "Spy",
     "INTERACTIONS_CHATWEBSITE": "Ga naar interacties",
-    "REFRESH_INTERACTIONS": "Interacties Vernieuwen",
-    "CLOSINGQUESTION": "Vraag Sluiten",
+    "REFRESH_INTERACTIONS": "Interacties vernieuwen",
+    "CLOSINGQUESTION": "Sluiten vraag",
     "WEBSCRIPT": "Web Script",
-    "NO_CHATCANNEDANSWER_AVAILABLE": "Geen standaard antwoorden beschikbaar",
-    "NEW_CHATCANNEDANSWER": "Nieuw Standaard Antwoord",
-    "ADD_CHATCANNEDANSWER": "Standaard Antwoord Toevoegen",
-    "EDIT_CHATCANNEDANSWER": "Standaard Antwoord Bewerken",
-    "DELETE_CHATCANNEDANSWER": "Standaard Antwoord Verwijderen",
-    "OFFLINEMESSAGESUBJECT": "Onderwerp",
-    "OFFLINEMESSAGEBODY": "Inhoud",
-    "FORMSUBMITSUCCESSMESSAGE": "Formulier verzenden succesbericht",
+    "NO_CHATCANNEDANSWER_AVAILABLE": "Geen ingeblikte antwoorden beschikbaar",
+    "NEW_CHATCANNEDANSWER": "Nieuw ingebouwd antwoord",
+    "ADD_CHATCANNEDANSWER": "Voeg ingebed antwoord toe",
+    "EDIT_CHATCANNEDANSWER": "Bewerk",
+    "DELETE_CHATCANNEDANSWER": "Verwijder",
+    "OFFLINEMESSAGESUBJECT": "Bericht Onderwerp",
+    "OFFLINEMESSAGEBODY": "Bericht lichaam",
+    "FORMSUBMITSUCCESSMESSAGE": "Formulier verzendingssuccesbericht",
     "FORMSUBMITFAILUREMESSAGE": "Formulier verzenden mislukt bericht",
-    "PLACEHOLDERMESSAGE": "Placeholder bericht",
-    "NOTETITLE": "Notitie Titel",
-    "DELETE_INTERACTION": "Interactie Verwijderen",
+    "PLACEHOLDERMESSAGE": "Plaatsaanduiding voor berichten",
+    "NOTETITLE": "De titel van Note",
+    "DELETE_INTERACTION": "Interactie verwijderen",
     "FONTSIZE": "Lettertypegrootte",
     "TEXTCOLOR": "Tekst kleur",
     "COMMAND": "Opdracht",
-    "EDIT_SYSTEM": "Systeem Bewerken",
+    "EDIT_SYSTEM": "Systeem bewerken",
     "SYSTEM": "Systeem",
     "NOTIFICATION": "Kennisgeving",
     "NOTIFICATIONSHAKE": "Schudden",
     "HIDEWHENOFFLINE": "Verbergen",
     "INSERT_MESSAGE_HERE": "Voer hier uw sms-bericht in",
     "AGENTALIAS": "Agent Alias",
-    "AGENTFULLNAME": "Agent volledige naam",
+    "AGENTFULLNAME": "Agent Volledige naam",
     "AGENTIDENTIFIER": "Identifier",
     "WAITFORTHEASSIGNEDAGENT": "Wacht op de toegewezen agent",
-    "ALIGNMENT": "Uitlijning",
+    "ALIGNMENT": "opstelling",
     "BOTTOM_RIGHT": "Rechts onder",
     "LEFT": "Links",
     "RIGHT": "Rechts",
     "CENTERED": "centered",
     "CUSTOMERAVATAR": "Avatar klant",
     "DEFAULTTITLE": "Standaard titel",
-    "MESSAGESALIGNMENT": "Bericht Uitlijning",
-    "SHOWCUSTOMERAVATAR": "Klantavatar Weergeven",
+    "MESSAGESALIGNMENT": "Berichten Afstemming",
+    "SHOWCUSTOMERAVATAR": "Toon klantavatar",
     "EDIT_TAG": "Bewerk label",
     "TAG": "Label",
     "CUSTOMERALIAS": "Klantalias",
-    "AGENTADD_CHATWEBSITE": "Agent aan chatwebsite Toevoegen",
+    "AGENTADD_CHATWEBSITE": "Agent toevoegen aan chatwebsite",
     "BACKGROUNDCOLOR": "Achtergrond kleur",
     "MESSAGEFONTSIZE": "Grootte van berichtlettertype",
     "AGENTTRANSFER": "Agent Transfer",
     "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
     "DIALOGFLOW": "Dialogflow",
-    "EDIT_DIALOGFLOW": "Dialogflow Bewerken",
+    "EDIT_DIALOGFLOW": "Bewerk Dialogflow",
     "LANGUAGE": "Taal",
-    "QUEUETRANSFER": "Wachtrij Overdracht",
-    "QUEUETRANSFERTIMEOUT": "Wachtrij Overdracht Timeout",
+    "QUEUETRANSFER": "Wachtrijoverdracht",
+    "QUEUETRANSFERTIMEOUT": "Wachtrij Transfer Timeout",
     "SYSTEMALIAS": "Systeemalias",
     "SYSTEMAVATAR": "Systeemavatar",
     "TRANSFER": "Overdracht",
-    "WELCOMEMESSAGE": "Welkomstbericht",
-    "ENABLECUSTOMERCHECKMARKS": "Afgeleverd/gelezen door klant melding inschakelen",
-    "CANNEDANSWERS": "Standaard Antwoorden",
-    "CHATCANNEDANSWERS": "Standaard Antwoorden",
-    "DOWNLOAD_INTERACTION": "Interactie Downloaden",
+    "WELCOMEMESSAGE": "Welkoms bericht",
+    "ENABLECUSTOMERCHECKMARKS": "Schakel door klant geleverde / gelezen meldingen in",
+    "CANNEDANSWERS": "Ingeblikte antwoorden",
+    "CHATCANNEDANSWERS": "Ingeblikte antwoorden",
+    "DOWNLOAD_INTERACTION": "Download",
     "LOGIN_TIME": "Aanmeldtijd",
     "PAUSE_TIME": "Pauzetijd",
     "ACCESSKEYID": "Toegang Key ID",
     "BOTNAME": "Botnaam",
     "EDIT_AMAZONLEX": "Bewerk Amazon Lex",
     "LEXREGION": "Regio",
-    "SECRETACCESSKEY": "Geheime Sleutel",
+    "SECRETACCESSKEY": "Geheime toegangssleutel",
     "TEAMS_ASSOCIATION": "Teams Association",
     "MANDATORYDISPOSITION": "Verplichte regeling",
     "MANDATORYDISPOSITIONPAUSEID": "Pauze om te gebruiken als verplichte dispositie is ingeschakeld",
-    "ENABLESENDBUTTON": "Verzendknop Inschakelen",
+    "ENABLESENDBUTTON": "Schakel de verzendknop in",
     "FEEDBACKTITLE": "Feedbacktitel",
     "TOOLTIP_SCREENRECORDING_OFF": "Schermopname beschikbaar",
     "TOOLTIP_SCREENRECORDING_ON": "Schermopname bezig",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Zonder bijlagen Downloaden",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Met bijlagen Downloaden",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download zonder bijlagen",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Download met bijlagen",
     "LASTMESSAGE": "Laatste bericht",
     "VIDAOO": "Vidaoo",
     "VIDAOOAPIKEY": "Vidaoo Api-sleutel",
     "VIDEO": "Video",
     "CLIENTEMAIL": "E-mail van de klant",
     "DIALOGFLOWV2": "Dialogflow V2",
-    "EDIT_DIALOGFLOWV2": "Dialogflow V2 Bewerken",
-    "PRIVATEKEY": "Privé-sleutel",
+    "EDIT_DIALOGFLOWV2": "Bewerk Dialogflow V2",
+    "PRIVATEKEY": "Prive sleutel",
     "PROJECTID": "Project-ID",
     "EMAIL_ACCOUNT": "Email account",
-    "OPEN_NEW_INTERACTION": "Nieuwe interactie Openen",
+    "OPEN_NEW_INTERACTION": "Open nieuwe interactie",
     "SUBJECT": "Onderwerpen",
-    "ADD_NOTE": "Notitie Toevoegen",
+    "ADD_NOTE": "Notitie toevoegen",
     "CANNED_ANSWER_NOT_FOUND": "Er zijn geen standaardantwoorden gevonden",
     "NOTE": "Opmerking",
     "VIDAOOMETADATA": "Vidaoo-metagegevens",
     "VIDAOONOTE": "Vidaoo Opmerking",
     "VIDAOOTOPIC": "Vidaoo-onderwerp",
     "CHANNELID": "Kanaal Nr",
-    "EDIT_TVOX": "TVox Bewerken",
-    "MOTIONTITLE": "Titel",
+    "EDIT_TVOX": "TVox bewerken",
+    "MOTIONTITLE": "Bewegingstitel",
     "MOTIONURL": "Bewegings-URL",
     "MOTIONURLONANSWER": "Bewegings-URL bij antwoord",
     "MOTIONURLONRING": "Bewegings-URL op bel",
index 8a05182..ffaddae 100644 (file)
@@ -5,7 +5,7 @@
     "ACCESSKEYID": "Access Key ID",
     "SECRETACCESSKEY": "Secret Access Key",
     "LEXREGION": "Região",
-    "BOTNAME": "Nome do bot",
+    "BOTNAME": "Nome do BOT",
     "LOGIN_TIME": "Tempo de login",
     "PAUSE_TIME": "Tempo de pausa",
     "DOWNLOAD_INTERACTION": "Download",
@@ -13,7 +13,7 @@
     "TRANSFER": "Transferir",
     "QUEUETRANSFER": "Transferência de fila",
     "QUEUETRANSFERTIMEOUT": "Tempo limite de transferência da fila",
-    "AGENTTRANSFER": "Transferência de Agente",
+    "AGENTTRANSFER": "Transferência de agente",
     "AGENTTRANSFERTIMEOUT": "Tempo limite de transferência do agente",
     "SYSTEMAVATAR": "Avatar do sistema",
     "SYSTEMALIAS": "Apelido do sistema",
     "BACKGROUNDCOLOR": "Cor de fundo",
     "MESSAGEFONTSIZE": "Tamanho da fonte da mensagem",
     "TAG": "Tag",
-    "EDIT_TAG": "Editar Tag",
+    "EDIT_TAG": "Editar tag",
     "CUSTOMERALIAS": "Apelido \200b\200bdo cliente",
     "SNIPPETSWIPEOUT": "Snippet deslize para fora",
     "CUSTOMERAVATAR": "Avatar do cliente",
     "SHOWCUSTOMERAVATAR": "Mostrar avatar do cliente",
-    "DEFAULTTITLE": "Título Padrão",
-    "MESSAGESALIGNMENT": "Alinhamento de Mensagens",
+    "DEFAULTTITLE": "Título padrão",
+    "MESSAGESALIGNMENT": "Alinhamento de mensagens",
     "ALTERNATE": "Alternar",
     "CENTERED": "Centralizado",
     "POSITION": "Posição",
@@ -43,8 +43,8 @@
     "WAITFORTHEASSIGNEDAGENT": "Aguarde o agente atribuído",
     "AGENTIDENTIFIER": "Identificador",
     "WEBSITEALIAS": "Nome do site",
-    "AGENTALIAS": "Nome do Agente",
-    "AGENTFULLNAME": "Nome Completo do Agente",
+    "AGENTALIAS": "Nome do agente",
+    "AGENTFULLNAME": "Nome completo do agente",
     "INSERT_MESSAGE_HERE": "Insira sua mensagem de texto aqui",
     "HIDEWHENOFFLINE": "Ocultar",
     "NOTIFICATION": "Notificação",
     "NOTIFICATIONSHAKE": "Vibrar",
     "NOTIFICATIONTEMPLATE": "Modelo",
     "SYSTEM": "Sistema",
-    "EDIT_SYSTEM": "Editar Sistema",
+    "EDIT_SYSTEM": "Editar sistema",
     "COMMAND": "Comando",
     "TEXTCOLOR": "Cor do texto",
     "FONTSIZE": "Tamanho da fonte",
-    "WEBSCRIPT": "Web Script",
+    "WEBSCRIPT": "Web script",
     "CANNEDANSWERS": "Modelo de resposta",
     "CHATCANNEDANSWERS": "Modelo de resposta",
     "NO_CHATCANNEDANSWER_AVAILABLE": "Não há respostas prontas disponíveis",
     "SPYINTERACTION": "Spy",
     "NO_AGENT_ONLINE": "Nenhum agente online",
     "GOTOREALTIME_CHATQUEUE": "Ir para a fila de chat em tempo real",
-    "PARTIALPAUSE": "Pausa Parcial",
+    "PARTIALPAUSE": "Pausa parcial",
     "BUSY": "Ocupado",
     "TIMER": "Cronômetro",
-    "IDLE": "Ocioso",
+    "IDLE": "Disponível",
     "CAPACITY": "Capacidade",
     "AGENTSADD_QUEUE": "Adicionar agente à fila de chat",
     "QUEUES": "Filas",
     "ALIAS": "Alias",
     "VARIABLE": "Variável",
     "INTERVAL": "Intervalo",
-    "EDIT_CLOSE": "Editar Fechar",
+    "EDIT_CLOSE": "Editar encerramento",
     "TIMEZONE": "Fuso horário",
     "MESSAGE": "Messagem",
     "ADVANCED": "Avançado",
-    "FORWARDTRANSCRIPT": "Encaminhar Transcrição",
-    "FORWARDTRANSCRIPTMESSAGE": "Mensagem de Transcrição Direta",
+    "FORWARDTRANSCRIPT": "Encaminhar transcrição",
+    "FORWARDTRANSCRIPTMESSAGE": "Mensagem de transcrição direta",
     "SKIPMESSAGEBUTTON": "Ignorar botão de mensagem",
     "EDIT_MESSAGE": "Editar mensagem",
-    "CONDITION_AGREEMENT": "Contrato de Condição",
+    "CONDITION_AGREEMENT": "Contrato de condição",
     "NONE": "Nenhum",
     "PRIORITY": "Prioridade",
     "ONLINESTATUS": "Status online",
     "UNMANAGEDMESSAGE": "Messagem",
     "SKIPUNMANAGED": "Pular Mensagem",
     "SENDUNMANAGED": "Enviar mensagem",
-    "WEBSITESCRIPT": "Website Script",
+    "WEBSITESCRIPT": "Website script",
     "DELETE_OFFLINEMESSAGE": "Excluir",
-    "OFFLINEMESSAGES": "Mensagens Offline",
-    "FORWARD_OFFLINE": "Encaminhar off-line",
+    "OFFLINEMESSAGES": "Mensagens offline",
+    "FORWARD_OFFLINE": "Encaminhar offline",
     "SHOW_OFFLINEMESSAGE": "Mostrar",
     "FORWARD_OFFLINE_ADDRESS": "Endereço offline de encaminhamento",
-    "CLOSINGFORM": "Formulário de Fechamento",
-    "ENABLERATING": "Ativar Classificação",
+    "CLOSINGFORM": "Formulário de encerramento",
+    "ENABLERATING": "Ativar classificação",
     "ENABLECUSTOMERWRITING": "Permitir que o cliente escreva antes de aceitar o agente",
     "ENABLEFEEDBACK": "Ativar feedback",
-    "RATINGTYPE": "Tipo de Avaliação",
-    "CLOSINGMESSAGE": "Mensagem de Encerramento",
+    "RATINGTYPE": "Tipo de avaliação",
+    "CLOSINGMESSAGE": "Mensagem de encerramento",
     "CLOSINGMESSAGEBUTTON": "Fechando o botão da mensagem",
     "RATINGSTARSNUMBER": "Número de estrelas de avaliação",
     "EDIT_GOTOIF": "Editar GotoIf",
     "CONDITION": "Condição",
     "TRUEPRIORITY": "Verdadeira prioridade",
-    "FALSEPRIORITY": "Falsa Prioridade",
+    "FALSEPRIORITY": "Falsa prioridade",
     "VALUE": "Valor",
     "ERRORS": {
-      "BOTNAME_REQUIRED": "Campo Obrigatório",
-      "SECRETACCESSKEY_REQUIRED": "Campo Obrigatório",
-      "ACCESSKEYID_REQUIRED": "Campo Obrigatório",
+      "BOTNAME_REQUIRED": "Campo obrigatório",
+      "SECRETACCESSKEY_REQUIRED": "Campo obrigatório",
+      "ACCESSKEYID_REQUIRED": "Campo obrigatório",
       "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Campo Obrigatório",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Campo obrigatório",
       "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Campo Obrigatório",
-      "CUSTOMERALIAS_REQUIRED": "Campo Obrigatório",
-      "AGENTALIAS_REQUIRED": "Campo Obrigatório",
-      "SYSTEMALIAS_REQUIRED": "Campo Obrigatório",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Campo obrigatório",
+      "CUSTOMERALIAS_REQUIRED": "Campo obrigatório",
+      "AGENTALIAS_REQUIRED": "Campo obrigatório",
+      "SYSTEMALIAS_REQUIRED": "Campo obrigatório",
       "MESSAGEFONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "MESSAGEFONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "MESSAGEFONTSIZE_REQUIRED": "Campo Obrigatório",
-      "TAG_REQUIRED": "Campo Obrigatório",
-      "VERTICALPOSITION_REQUIRED": "Campo Obrigatório",
+      "MESSAGEFONTSIZE_REQUIRED": "Campo obrigatório",
+      "TAG_REQUIRED": "Campo obrigatório",
+      "VERTICALPOSITION_REQUIRED": "Campo obrigatório",
       "VERTICALPOSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "VERTICALPOSITION_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "NAME_MUST_VALID_PATTERN": "Formato incorreto",
-      "COMMAND_REQUIRED": "Campo Obrigatório",
+      "COMMAND_REQUIRED": "Campo obrigatório",
       "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "FONTSIZE_REQUIRED": "Campo Obrigatório",
+      "FONTSIZE_REQUIRED": "Campo obrigatório",
       "TEXT_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "VALUE_REQUIRED": "Campo Obrigatório",
+      "VALUE_REQUIRED": "Campo obrigatório",
       "CUSTOMERALIAS_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "SYSTEMALIAS_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "OFFLINEMESSAGESUBJECT_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "CLOSINGQUESTION_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "HEADER_OFFLINE_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "OFFLINE_CHAT_BUTTON_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "TEXT_REQUIRED": "Campo Obrigatório",
-      "SENDUNMANAGED_REQUIRED": "Campo Obrigatório",
+      "TEXT_REQUIRED": "Campo obrigatório",
+      "SENDUNMANAGED_REQUIRED": "Campo obrigatório",
       "SENDUNMANAGED_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "SKIPUNMANAGED_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "UNMANAGEDMESSAGE_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "WEBSITEALIAS_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "AGENT_REQUIRED": "Campo Obrigatório",
-      "QUEUE_REQUIRED": "Campo Obrigatório",
-      "CONDITION_REQUIRED": "Campo Obrigatório",
-      "PRIORITY_REQUIRED": "Campo Obrigatório",
-      "TRUEPRIORITY_REQUIRED": "Campo Obrigatório",
-      "FALSEPRIORITY_REQUIRED": "Campo Obrigatório",
-      "NAME_REQUIRED": "Campo Obrigatório",
-      "LIST_REQUIRED": "Campo Obrigatório",
-      "AGENT_TIMEOUT_REQUIRED": "Campo Obrigatório",
-      "MOTIONADDRESS_REQUIRED": "Campo Obrigatório",
-      "DISPOSITION_REQUIRED": "Campo Obrigatório",
+      "AGENT_REQUIRED": "Campo obrigatório",
+      "QUEUE_REQUIRED": "Campo obrigatório",
+      "CONDITION_REQUIRED": "Campo obrigatório",
+      "PRIORITY_REQUIRED": "Campo obrigatório",
+      "TRUEPRIORITY_REQUIRED": "Campo obrigatório",
+      "FALSEPRIORITY_REQUIRED": "Campo obrigatório",
+      "NAME_REQUIRED": "Campo obrigatório",
+      "LIST_REQUIRED": "Campo obrigatório",
+      "AGENT_TIMEOUT_REQUIRED": "Campo obrigatório",
+      "MOTIONADDRESS_REQUIRED": "Campo obrigatório",
+      "DISPOSITION_REQUIRED": "Campo obrigatório",
       "MOTIONADDRESS_MUST_VALID_URL": "Formato incorreto",
       "EMAIL_MUST_BE_VALID": "Formato incorreto",
-      "ADDRESS_REQUIRED": "Campo Obrigatório",
+      "ADDRESS_REQUIRED": "Campo obrigatório",
       "ADDRESS_MUST_VALID_URL": "Formato incorreto",
-      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Campo Obrigatório",
+      "ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Campo obrigatório",
       "ACCEPTURL_MUST_VALID_URL": "Formato incorreto",
-      "TIMEOUT_REQUIRED": "Campo Obrigatório",
+      "TIMEOUT_REQUIRED": "Campo obrigatório",
       "REJECTURL_MUST_VALID_URL": "Formato incorreto",
       "CLOSEURL_MUST_VALID_URL": "Formato incorreto",
       "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "WAITINGMESSAGE_REQUIRED": "Campo Obrigatório",
-      "WAITINGTITLE_REQUIRED": "Campo Obrigatório",
+      "WAITINGMESSAGE_REQUIRED": "Campo obrigatório",
+      "WAITINGTITLE_REQUIRED": "Campo obrigatório",
       "KEY_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "KEY_REQUIRED": "Campo Obrigatório",
+      "KEY_REQUIRED": "Campo obrigatório",
       "WAITINGMESSAGE_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "WAITINGTITLE_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obrigatório",
-      "VIDAOOAPIKEY_REQUIRED": "Campo Obrigatório",
-      "CLIENTEMAIL_REQUIRED": "Campo Obrigatório",
-      "PRIVATEKEY_REQUIRED": "Campo Obrigatório",
-      "PROJECTID_REQUIRED": "Campo Obrigatório",
-      "VIDAOOTOPIC_REQUIRED": "Campo Obrigatório",
+      "VIDAOOAPIKEY_REQUIRED": "Campo obrigatório",
+      "CLIENTEMAIL_REQUIRED": "Campo obrigatório",
+      "PRIVATEKEY_REQUIRED": "Campo obrigatório",
+      "PROJECTID_REQUIRED": "Campo obrigatório",
+      "VIDAOOTOPIC_REQUIRED": "Campo obrigatório",
       "EMAIL_ACCOUNT_REQUIRED": "Campo obrigatório"
     },
-    "CM_FIELD": "Contact Manager Field",
+    "CM_FIELD": "Campo Contact Manager",
     "CHATPROACTIVEACTIONS": "Ações proativas",
     "NEW_CHATPROACTIVEACTION": "Nova ação proativa",
     "EDIT_CHATPROACTIVEACTION": "Editar ação proativa",
     "DELETE_CHATPROACTIVEACTION": "Excluir ação proativa",
     "ADD_CHATPROACTIVEACTION": "Adicionar ação proativa",
     "NO_CHATPROACTIVEACTION_AVAILABLE": "Nenhuma ação proativa disponível",
-    "NO_OFFLINEMESSAGE_AVAILABLE": "Nenhuma mensagem off-line disponível",
-    "MOUSEOVER": "Mouse Over",
+    "NO_OFFLINEMESSAGE_AVAILABLE": "Nenhuma mensagem offline disponível",
+    "MOUSEOVER": "Mouse over",
     "TIMEOUT": "Tempo esgotado",
     "TYPE": "Tipo",
     "SELECTOR": "Seletor",
     "ACTIONS": "Ações",
     "FIDELITY": "Fidelidade",
     "APPEARANCE": "Aparência",
-    "MAINCOLOR": "Cor Principal",
+    "MAINCOLOR": "Cor principal",
     "FOCUSCOLOR": "Cor de foco",
-    "BUTTONCOLOR": "Cor do botao",
+    "BUTTONCOLOR": "Cor do botão",
     "HEADERSHAPE": "Forma de cabeçalho",
     "ANIMATION": "Animação",
     "DEFAULT": "Padrão",
     "WHITELABEL": "White Label",
     "LOGO": "Logo",
-    "DOWNLOADTRANSCRIPT": "Download Transcrição",
+    "DOWNLOADTRANSCRIPT": "Download transcrição",
     "ENQUIRY_ENABLE": "Enquiry Enable",
     "ENQUIRY_FORWARDING": "Enquiry Forwarding",
     "ENQUIRY_FORWARDING_ADDRESS": "Enquiry Forwarding Address",
     "LABELS": "Labels",
-    "HEADER_ONLINE": "Cabeçalho on-line",
-    "ONLINE_MESSAGE": "Mensagem Online",
+    "HEADER_ONLINE": "Cabeçalho online",
+    "ONLINE_MESSAGE": "Mensagem online",
     "NAME_TITLE": "Nome da etiqueta de entrada",
     "USERNAME_PLACEHOLDER": "Local de entrada de nome de usuário",
     "EMAIL_TITLE": "Etiqueta de entrada de e-mail",
     "EMAIL_PLACEHOLDER": "Espaço reservado para entrada de e-mail",
     "START_CHAT_BUTTON": "Botão 'Iniciar chat'",
-    "AGENTS_BUSY": "Mensagem de Agentes Ocupados",
-    "HEADER_OFFLINE": "Cabeçalho Offline",
-    "OFFLINE_MESSAGE": "Mensagem Offline",
-    "MESSAGE_TITLE": "Rótulo de Mensagem",
+    "AGENTS_BUSY": "Mensagem de agentes ocupados",
+    "HEADER_OFFLINE": "Cabeçalho offline",
+    "OFFLINE_MESSAGE": "Mensagem offline",
+    "MESSAGE_TITLE": "Título de Mensagem",
     "ENQUIRY_MESSAGE_PLACEHOLDER": "Espaço reservado para entrada de mensagem de consulta",
     "ENQUIRY_BUTTON": "Texto do botão de consulta",
-    "RATING_MESSAGE": "Mensagem de Avaliação",
+    "RATING_MESSAGE": "Mensagem de avaliação",
     "RATING_SEND": "Texto do botão de envio de classificação",
-    "RATING_SKIP": "Texto do botão Ignorar classificação",
+    "RATING_SKIP": "Texto do botão ignorar classificação",
     "ONLINE": "Online",
     "OFFLINE": "Offline",
     "PROACTIVE": "Proativo",
     "ACCEPTMETHOD": "Aceitar Metodo",
     "ACCEPTURL": "Aceitar URL",
     "REJECT": "Rejeitar",
-    "REJECTMETHOD": "Rejeitar Metodo",
+    "REJECTMETHOD": "Rejeitar método",
     "REJECTURL": "Rejeitar URL",
     "CLOSE": "Fechar",
-    "CLOSEMETHOD": "Fechar Metodo",
+    "CLOSEMETHOD": "Fechar método",
     "CLOSEURL": "Fechar URL",
     "EMBEDDING": "Incorporação",
     "GENERAL": "Geral",
       "MOTIONADDRESS": "O campo deve ter o seguinte formato: <protocol>: // <ipaddress> [: <port>]. Exemplo: https: //X.Y.Z.W",
       "MOTIONPROXY": "O campo deve ter o seguinte formato: <protocol>: // <ipaddress> [: <port>]. Exemplo: https: //X.Y.Z.W",
       "NAME": "Somente números, letras e caracteres específicos (._) são suportados",
-      "LIST": "Lista do Gerenciador de contatos usada para associar os contatos",
+      "LIST": "Lista do Gerenciar Contatos",
       "INTERVAL": "Selecione um da lista",
       "WELCOMEMESSAGE": "Deixe em branco se não quiser enviar nenhuma mensagem de boas-vindas",
       "MANDATORYDISPOSITION": "Disposição obrigatória",
     },
     "ADDRESS": "Endereço",
     "ONLINESTATE": "Status online",
-    "OFFLINESTATE": "Status Offline",
-    "RATINGSTATE": "Status de Avaliação",
+    "OFFLINESTATE": "Status offline",
+    "RATINGSTATE": "Status de avaliação",
     "ENQUIRY": "Enquiry",
-    "OFFLINETEMPLATE": "Modelo Offline",
-    "CHATDISPOSITIONS": "Disposições de Chat",
+    "OFFLINETEMPLATE": "Modelo offline",
+    "CHATDISPOSITIONS": "Disposições de chat",
     "NO_CHATDISPOSITION_AVAILABLE": "Nenhuma disposição de chat disponível",
     "ADD_CHATDISPOSITION": "Adicionar disposição de chat",
     "DELETE": "Excluir",
     "SQUARED": "Squared",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "ALL_TEAMS": "Todas as equipes",
-    "SELECTED_TEAMS": "Equipes Selecionadas",
-    "PAGE": "Pagina",
+    "SELECTED_TEAMS": "Equipes selecionadas",
+    "PAGE": "Página",
     "ROWSPERPAGE": "Linhas por página",
     "OF": "of",
     "CONTACT": "Contato",
     "TEAMADD_CHATQUEUE": "Adicionar equipe à fila de chat",
     "AGENTADD_CHATQUEUE": "Adicionar agente à fila de chat",
     "ALL_AGENTS": "Todos os agentes",
-    "SELECTED_AGENTS": "Agentes Selecionados",
+    "SELECTED_AGENTS": "Agentes selecionados",
     "CLOSEDAT": "Fechado em",
     "DISPOSITION": "Disposição",
     "CREATEDAT": "Criado em",
     "SELECT_WEBSITE": "Selecione um site",
     "INFO": "Info",
     "OFFLINEMESSAGES_CHATWEBSITE": "Ir para mensagens off-line",
-    "WAITINGTITLE": "Esperando Título",
+    "WAITINGTITLE": "Esperando título",
     "WAITINGMESSAGE": "Mensagem de espera",
     "RATING": "Avaliação",
     "NO_RATINGVALUE": "Sem avaliação",
-    "DEFAULT_PAUSE": "Pausa Padrão",
+    "DEFAULT_PAUSE": "Pausa padrão",
     "UNKNOWN": "Desconhecido",
     "UNREGISTERED": "Não registrado",
     "UNAVAILABLE": "Indisponível",
     "TEAMS_ASSOCIATION": "Associação de equipes",
     "MANDATORYDISPOSITION": "Disposição obrigatória",
     "MANDATORYDISPOSITIONPAUSEID": "Pausar para usar se a disposição obrigatória estiver ativada",
-    "ENABLESENDBUTTON": "Ativar botão Enviar",
-    "FEEDBACKTITLE": "Título do Feedback",
+    "ENABLESENDBUTTON": "Ativar botão enviar",
+    "FEEDBACKTITLE": "Título do feedback",
     "TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível",
     "TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download sem anexos",
     "DOWNLOAD_WITH_ATTACHMENTS": "Download com anexos",
     "LASTMESSAGE": "Última mensagem",
     "VIDAOO": "Vidaoo",
-    "VIDAOOAPIKEY": "Vidaoo Api Key",
+    "VIDAOOAPIKEY": "Vidaoo API Key",
     "VIDAOOESCALATION": "Iniciar videochamada",
     "VIDAOOSESSION": "Iniciar videochamada",
     "VIDEO": "Vídeo",
     "VIDAOOTOPIC": "Tema Vidaoo",
     "CHANNELID": "ID do canal",
     "EDIT_TVOX": "Editar TVox",
-    "MOTIONTITLE": "Título de Movimento",
-    "MOTIONURL": "URL de movimento",
-    "MOTIONURLONANSWER": "URL de movimento na resposta",
-    "MOTIONURLONRING": "URL de movimento no anel",
+    "MOTIONTITLE": "Título Motion",
+    "MOTIONURL": "URL Motion",
+    "MOTIONURLONANSWER": "Motion URL answer",
+    "MOTIONURLONRING": "Motion URL ring",
     "SERVICEID": "ID de serviço",
-    "SERVICENAME": "Nome do Serviço",
+    "SERVICENAME": "Nome do serviço",
     "TVOX": "TVox",
     "TVOXIP": "Endereço IP da TVox",
     "TVOXLOGINURL": "URL REST de login da TVox",
index c3d27cc..dc22557 100644 (file)
@@ -1,6 +1,6 @@
 {
   "CONTACTMANAGER": {
-    "VOICEQUEUEID": "ID Anruf-Warteschlange",
+    "VOICEQUEUEID": "ID Warteschlange für Sprachanrufe",
     "CAMPAIGNID": "Kampagnen-ID",
     "STATE": "Status",
     "NAME": "Name",
@@ -9,36 +9,36 @@
     "STATUS": "Status",
     "STARTTIME": "Startzeit",
     "ENDTIME": "Endzeit",
-    "MOTION_BULL": "Outbound-Dialer",
-    "HOPPER": "Kontakte in Ausführung",
-    "FINAL": "Kontakte abgeschlossen",
-    "HISTORY": "Kontaktverlauf",
+    "MOTION_BULL": "Motion Bull",
+    "HOPPER": "Hopper",
+    "FINAL": "Hopper final",
+    "HISTORY": "Hopper historisch",
     "SCHEDULEDAT": "Geplant am",
     "SEARCH_FOR_ANYONE": "Suche",
     "EDIT_LIST": "Liste bearbeiten",
-    "EDIT_HOPPER": "Kontakte in Ausführung bearbeiten",
+    "EDIT_HOPPER": "Hopper bearbeiten",
     "DELETE_LIST": "Liste löschen",
-    "DELETE_HOPPER": "Kontakte in Ausführung löschen",
-    "RELOAD": "Neu Laden",
-    "NO_COMPANIES": "Keine Unternehmen vorhanden",
+    "DELETE_HOPPER": "Hopper löschen",
+    "RELOAD": "Neu laden",
+    "NO_COMPANIES": "Kein Unternehmen",
     "NO_AVAILABLE_ITEMS": "Keine Einträge verfügbar",
     "ADD": "Hinzufügen",
     "ERRORS": {
-      "NAME_REQUIRED": "Nachname erforderlich",
-      "FIRSTNAME_REQUIRED": "Vorname erforderlich",
-      "PHONE_REQUIRED": "Telefonnummer erforderlich",
-      "ALIAS_REQUIRED": "Alias erforderlich",
-      "VALUE_REQUIRED": "Wert erforderlich",
-      "EMAIL_MUST_VALID": "Ungültiges Format E-Mail",
+      "NAME_REQUIRED": "Name ist erforderlich",
+      "FIRSTNAME_REQUIRED": "Vorname ist erforderlich",
+      "PHONE_REQUIRED": "Telefonnummer ist erforderlich",
+      "ALIAS_REQUIRED": "Alias ist erforderlich",
+      "VALUE_REQUIRED": "Wert ist erforderlich",
+      "EMAIL_MUST_VALID": "Falsches Format",
       "PHONEBAR_API": "Statusprüfung für die MotionBar und des Remote-Switches für den Agenten",
-      "ACTIONTYPE_REQUIRED": "Aktionstyp erforderlich",
-      "CLICKTOACTION_REQUIRED": "Aktion bei Klick erforderlich"
+      "ACTIONTYPE_REQUIRED": "Pflichtfeld",
+      "CLICKTOACTION_REQUIRED": "Pflichtfeld"
     },
     "DESCRIPTION": "Beschreibung",
     "DISPOSITION": "Qualifizierung",
     "DISPOSITIONS": "Qualifizierungen",
-    "VOICEDISPOSITIONS": "Anruf-Qualifizierungen",
-    "NEW_VOICEDISPOSITION": "Neue Qualifizierung",
+    "VOICEDISPOSITIONS": "Anrufqualifizierungen",
+    "NEW_VOICEDISPOSITION": "Neue Anrufqualifizierung",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "ADD_LIST": "Liste hinzufügen",
     "BACK": "Zurück",
@@ -64,8 +64,8 @@
     "DELETE_CONTACT": "Kontakt löschen",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
-    "DETAIL": "Details",
-    "PERSONAL_INFO": "Persönliche Informationen",
+    "DETAIL": "Detail",
+    "PERSONAL_INFO": "Persönliche Infos",
     "MOBILE": "Mobiltelefon",
     "FAX": "Fax",
     "TAGS": "Tags",
@@ -84,7 +84,7 @@
     "CUSTOMFIELDS": "Benutzerdefinierte Felder",
     "NO_CUSTOMFIELD_AVAILABLE": "Keine benutzerdefinierten Felder verfügbar",
     "ADD_TAG": "Tag hinzufügen",
-    "NO_TAG": "Keine Tags vorhanden",
+    "NO_TAG": "Keine Tags",
     "ALIAS": "Alias",
     "TYPE": "Typ",
     "VALUE": "Wert",
     "POSTAL_CODE": "Postleitzahl",
     "SHIPMENTADDRESS": "Lieferadresse",
     "COPY_CONTACT": "Kontakt kopieren",
-    "GOTOCONTACTS_LIST": "Zur Kontaktliste gehen",
+    "GOTOCONTACTS_LIST": "Kontakte anzeigen",
     "GOTOCONTACTS_COMPANY": "Kontakte anzeigen",
     "ADD_AGENT_TO_LIST": "Agenten zur Liste hinzufügen",
     "AGENTADD_LIST": "Agenten zur Liste hinzufügen",
     "NONE": "Nichts",
     "FULLNAME": "Vollständiger Name",
     "CHECK_DUPLICATES": "auf Duplikate prüfen",
-    "DUPLICATES": "Duplikate prüfen",
+    "DUPLICATES": "Duplikate",
     "UPLOAD_CSV": "Hochladen von CSV-Datei",
     "TAG": "Tag",
     "UPLOAD": "Hochladen",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
     "OF": "von",
-    "SOCIAL": "Social Media",
+    "SOCIAL": "Social",
     "ROW": "Reihe",
     "EXPORT_ERRORS": "Fehler-Log exportieren",
     "UPLOAD_COMPLETED": "Hochladen abgeschlossen",
-    "STOP": "Anhalten",
+    "STOP": "Stopp",
     "SELECT_FILE": "Datei auswählen",
     "IMPORT_CONTACTS": "Kontakte importieren",
-    "MOTIONDIALER": "Outbound-Dialer",
+    "MOTIONDIALER": "Motion Bull",
     "PREFIX": "Vorwahl wählen",
     "PRIORITY": "Priorität",
     "USERID": "Agent-ID abrufen",
index caf032b..6a8b39d 100644 (file)
     "ENDTIME": "Eindtijd",
     "MOTION_BULL": "Motion Bull",
     "HOPPER": "Trechter",
-    "FINAL": "Trechter def.",
-    "HISTORY": "Trechter Geschiedenis",
+    "FINAL": "Hopper def.",
+    "HISTORY": "Hopper Geschiedenis",
     "SCHEDULEDAT": "Gepland op",
-    "SEARCH_FOR_ANYONE": "Zoeken",
-    "EDIT_LIST": "Lijst bewerken Bewerken",
-    "EDIT_HOPPER": "Trechter",
-    "DELETE_LIST": "Lijst Verwijderen",
-    "DELETE_HOPPER": "Trechter Verwijderen",
-    "RELOAD": "Herladen",
+    "SEARCH_FOR_ANYONE": "Zoeken voor iedereen",
+    "EDIT_LIST": "Edit List (Lijst bewerken",
+    "EDIT_HOPPER": "Edit Hopper",
+    "DELETE_LIST": "Lijst wissen",
+    "DELETE_HOPPER": "Hopper verwijderen",
+    "RELOAD": "Reload",
     "NO_COMPANIES": "Geen enkele onderneming",
     "NO_AVAILABLE_ITEMS": "Geen beschikbare items",
     "ADD": "Toevoegen",
     "ERRORS": {
-      "NAME_REQUIRED": "Verplicht veld",
-      "FIRSTNAME_REQUIRED": "Verplicht veld",
-      "PHONE_REQUIRED": "Verplicht veld",
-      "ALIAS_REQUIRED": "Verplicht veld",
-      "VALUE_REQUIRED": "Verplicht veld",
-      "EMAIL_MUST_VALID": "Ongeldig formaat",
+      "NAME_REQUIRED": "De naam is verplicht",
+      "FIRSTNAME_REQUIRED": "De Voornaam is verplicht",
+      "PHONE_REQUIRED": "Het telefoonnummer is verplicht",
+      "ALIAS_REQUIRED": "De alias is vereist",
+      "VALUE_REQUIRED": "De waarde is vereist",
+      "EMAIL_MUST_VALID": "Het e-mailadres moet worden geschreven in een geldige indeling",
       "PHONEBAR_API": "Controleer of de MotionBar draait en dat de afstandsbediening voor de agent is ingeschakeld",
       "ACTIONTYPE_REQUIRED": "Verplicht veld",
       "CLICKTOACTION_REQUIRED": "Verplicht veld"
     },
     "DESCRIPTION": "Beschrijving",
-    "DISPOSITION": "Dispositie",
-    "DISPOSITIONS": "Disposities",
-    "VOICEDISPOSITIONS": "Spraak disposities",
-    "NEW_VOICEDISPOSITION": "Nieuw spraak dispositie",
-    "CUSTOM_FIELDS": "Aangepaste Velden",
-    "ADD_LIST": "Lijst Toevoegen",
+    "DISPOSITION": "Afvoeren",
+    "DISPOSITIONS": "Dispositions",
+    "VOICEDISPOSITIONS": "Voice dispositieven",
+    "NEW_VOICEDISPOSITION": "Nieuw spraakbericht dispositie",
+    "CUSTOM_FIELDS": "Aangepaste velden",
+    "ADD_LIST": "Lijst toevoegen",
     "BACK": "Terug",
     "SELECTED": "Geselecteerd",
-    "SELECT_ALL": "Selecteer Alles",
-    "SELECT_NONE": "Selecteer Geen",
+    "SELECT_ALL": "Alles selecteren",
+    "SELECT_NONE": "Selecteer None (Geen).",
     "COMPANIES": "Bedrijven",
-    "EDIT_COMPANY": "Bedrijf Bewerken",
-    "DELETE_COMPANY": "Bedrijf Verwijderen",
+    "EDIT_COMPANY": "Bedrijf wijzigen",
+    "DELETE_COMPANY": "Bedrijf verwijderen",
     "PHONE": "Telefoon",
     "EMAIL": "E-mail",
-    "ADD_COMPANY": "Bedrijf Toevoegen",
+    "ADD_COMPANY": "Bedrijf toevoegen",
     "CONTACTS": "Contactpersonen",
-    "NEW_LIST": "Nieuwe Lijst",
+    "NEW_LIST": "Nieuwe lijst",
     "FIRSTNAME": "Voornaam",
     "LASTNAME": "Achternaam",
     "LIST": "Lijst",
     "COMPANY": "Bedrijf",
-    "ADD_CONTACT": "Contactpersoon Toevoegen",
-    "EDIT_CONTACT": "Contactpersoon Bewerken",
+    "ADD_CONTACT": "Contactpersoon toevoegen",
+    "EDIT_CONTACT": "Contactpersoon bewerken",
     "MERGE_CONTACT": "Merge Contact",
     "DUPLICATE_CONTACT": "Dubbele contactpersoon",
-    "DELETE_CONTACT": "Contactpersoon Verwijderen",
+    "DELETE_CONTACT": "Contactpersoon verwijderen",
     "CREATED_AT": "Gemaakt op",
     "SAVE": "Opslaan",
     "DETAIL": "Detail",
     "STREET": "Straat",
     "POSTALCODE": "Postcode",
     "DELETE": "Verwijderen",
-    "DELETE_ALL": "Alles Verwijderen",
+    "DELETE_ALL": "Alles verwijderen",
     "CONTACTMANAGER": "Contact Manager",
     "ID": "Id",
     "SETTINGS": "Instellingen",
     "GENERAL": "Algemeen",
-    "CUSTOMFIELDS": "Aangepaste Velden",
+    "CUSTOMFIELDS": "Aangepaste velden",
     "NO_CUSTOMFIELD_AVAILABLE": "Geen aangepaste velden",
-    "ADD_TAG": "Tag Toevoegen",
+    "ADD_TAG": "Tag toevoegen",
     "NO_TAG": "Geen Tags",
     "ALIAS": "Alias",
     "TYPE": "Type",
     "VALUE": "Waarde",
-    "ADD_CUSTOMFIELD": "Aangepast veld Toevoegen",
-    "EDIT_CUSTOMFIELD": "Aangepaste veld Bewerken",
-    "DELETE_CUSTOMFIELD": "Aangepaste veld Bewerken",
+    "ADD_CUSTOMFIELD": "Aangepast veld toevoegen",
+    "EDIT_CUSTOMFIELD": "Bewerk aangepaste veld",
+    "DELETE_CUSTOMFIELD": "Verwijder aangepaste veld",
     "NEW_COMPANY": "Nieuwe onderneming",
     "NEW_CONTACT": "Nieuwe contactpersoon",
     "NEW_TAG": "Nieuwe Tag",
-    "UPLOAD_CONTACTS": "Contact uploadeden",
-    "FINISH": "Voltooid",
+    "UPLOAD_CONTACTS": "Upload Contact",
+    "FINISH": "Afwerking",
     "SUCCESS": "Succes",
     "FAILURE": "Defect",
     "ALL_CONTACTS": "Alle contactpersonen",
     "NEW_CUSTOMFIELD": "Nieuwe aangepaste veld",
-    "NO_VOICEDISPOSITION_AVAILABLE": "Geen spraakmemo disposities beschikbaar",
-    "ADD_VOICEDISPOSITION": "Spraak dispositie Toevoegen",
-    "EDIT_VOICEDISPOSITION": "Spraak dispositie Bewerken",
-    "DELETE_VOICEDISPOSITION": "Spraak dispositie Verwijderen",
+    "NO_VOICEDISPOSITION_AVAILABLE": "Geen spraakmemo dispositieven beschikbaar",
+    "ADD_VOICEDISPOSITION": "Voeg spraak dispositie",
+    "EDIT_VOICEDISPOSITION": "Edit Voice dispositie",
+    "DELETE_VOICEDISPOSITION": "Alle spraakberichten dispositie",
     "VAT": "Btw",
     "COMPANYID": "Bedrijf ID",
     "WEBSITE": "Website",
     "DATEOFBIRTH": "Geboortedatum",
     "NOTES": "Aantekeningen",
     "EXPORTCSVCONTACTS_LIST": "Exporteren naar CSV",
-    "GOTO_LIST": "Contactpersonen Weergeven",
-    "GOTO_COMPANY": "Contactpersonen Weergeven",
+    "GOTO_LIST": "Contactpersonen weergeven",
+    "GOTO_COMPANY": "Contactpersonen weergeven",
     "REQUIRED": "Vereist",
-    "GLOBALCUSTOMFIELDS": "Aangepaste Velden",
-    "NEW_GLOBALCUSTOMFIELD": "Nieuw aangepast veld",
-    "ADD_GLOBALCUSTOMFIELD": "Aangepast veld Toevoegen",
-    "EDIT_GLOBALCUSTOMFIELD": "Aangepaste veld Bewerken",
-    "DELETE_GLOBALCUSTOMFIELD": "Aangepaste veld Verwijderen",
+    "GLOBALCUSTOMFIELDS": "Wereldwijde Aangepaste velden",
+    "NEW_GLOBALCUSTOMFIELD": "Nieuwe aangepaste velden",
+    "ADD_GLOBALCUSTOMFIELD": "Aangepast veld toevoegen",
+    "EDIT_GLOBALCUSTOMFIELD": "Bewerk aangepaste veld",
+    "DELETE_GLOBALCUSTOMFIELD": "Verwijder aangepaste veld",
     "JSCRIPTY": "Jscripty",
     "SESSIONS": "Sessies",
     "AGENT": "Agent",
     "SELECT_TAGS": "Selecteer één of meer tags",
     "HELP": {
       "PHONEBAR_API": "Om klik-en-bel een telefoonnummer en controleert u of de afstandsbediening is ingeschakeld voor de agent",
-      "PHONEBAR_API_MESSAGE": "Als u click-to-call wilt inschakelen, voegt u een telefoonnummer in en vinkt u het bedienen op afstand aan om de agent in te schakelen"
+      "PHONEBAR_API_MESSAGE": "Als u click-to-call wilt inschakelen, voegt u een telefoonnummer in en vinkt u de afstandsbedieningsschakelaar aan om de agent in te schakelen"
     },
     "PAGE": "Pagina",
     "ROWSPERPAGE": "Rijen per pagina",
     "CUSTOMER_JOURNEY": "Customer Journey",
     "SELECT_TAG": "Selecteer tags",
     "ALL": "Allemaal",
-    "BILLINGINFORMATION": "Facturatie gegevens",
+    "BILLINGINFORMATION": "facturatie gegevens",
     "COMPANY_FISCAL_TYPE": "Bedrijf Fiscaal Type",
-    "CREATE": "Aanmaken",
+    "CREATE": "creëren",
     "EUROPE": "Europa",
     "EXPIREDAY": "Vervaldagen",
     "FLATDISCOUNT": "Bedrijfskorting",
index b84d6b8..c7f8a2f 100644 (file)
@@ -1,18 +1,18 @@
 {
   "CONTACTMANAGER": {
     "SELECT_TAG": "Selecione tags",
-    "CUSTOMER_JOURNEY": "Jornada do Cliente",
+    "CUSTOMER_JOURNEY": "Jornada do cliente",
     "USERID": "Lembrar ID do agente",
     "PRIORITY": "Prioridade",
     "MOTIONDIALER": "Motion Bull",
-    "IMPORT_CONTACTS": "Importar Contatos",
+    "IMPORT_CONTACTS": "Importar contatos",
     "PREFIX": "Prefixo de discagem",
-    "VOICEQUEUEID": "ID da Fila de Voz",
+    "VOICEQUEUEID": "ID da fila de voz",
     "CAMPAIGNID": "ID da campanha",
     "STATE": "Estado",
     "NAME": "Nome",
     "LISTS": "Listas",
-    "UNIQUEID": "ID unico",
+    "UNIQUEID": "ID único",
     "STATUS": "Status",
     "STARTTIME": "Início",
     "ENDTIME": "Fim",
     "HISTORY": "História do funil",
     "SCHEDULEDAT": "Agendado em",
     "SEARCH_FOR_ANYONE": "Procurar",
-    "EDIT_LIST": "Editar Lista",
-    "EDIT_HOPPER": "Editar Funil",
-    "DELETE_LIST": "Excluir Lista",
-    "DELETE_HOPPER": "Excluir Funil",
+    "EDIT_LIST": "Editar lista",
+    "EDIT_HOPPER": "Editar funil",
+    "DELETE_LIST": "Excluir lista",
+    "DELETE_HOPPER": "Excluir funil",
     "RELOAD": "Recarregar",
     "NO_COMPANIES": "Nenhuma empresa",
     "NO_AVAILABLE_ITEMS": "Nenhum item disponível",
       "CLICKTOACTION_REQUIRED": "Campo obrigatório"
     },
     "DESCRIPTION": "Descrição",
-    "DISPOSITION": "Descrição",
-    "DISPOSITIONS": "Descrição",
+    "DISPOSITION": "Disposição",
+    "DISPOSITIONS": "Disposições",
     "VOICEDISPOSITIONS": "Disposições de voz",
     "NEW_VOICEDISPOSITION": "Nova disposição de voz",
     "CUSTOM_FIELDS": "Os campos personalizados",
-    "ADD_LIST": "Adicionar Lista",
+    "ADD_LIST": "Adicionar lista",
     "BACK": "Voltar",
     "SELECTED": "Selecionado",
     "SELECT_ALL": "Selecionar todos",
-    "SELECT_NONE": "Selecionar Nenhum",
+    "SELECT_NONE": "Selecionar nenhum",
     "COMPANIES": "Empresas",
-    "EDIT_COMPANY": "Editar Empresa",
-    "DELETE_COMPANY": "Excluir Empresa",
+    "EDIT_COMPANY": "Editar empresa",
+    "DELETE_COMPANY": "Excluir empresa",
     "PHONE": "Telefone",
     "EMAIL": "Email",
-    "ADD_COMPANY": "Adicionar Empresa",
+    "ADD_COMPANY": "Adicionar empresa",
     "CONTACTS": "Contatos",
-    "NEW_LIST": "Nova Lista",
-    "FIRSTNAME": "Primeiro Nome",
+    "NEW_LIST": "Nova lista",
+    "FIRSTNAME": "Primeiro nome",
     "LASTNAME": "Sobrenome",
     "LIST": "Lista",
     "COMPANY": "Empresa",
-    "ADD_CONTACT": "Adicionar Contato",
-    "EDIT_CONTACT": "Editar Contato",
-    "MERGE_CONTACT": "Mesclar Contato",
-    "DUPLICATE_CONTACT": "Duplicar Contato",
-    "DELETE_CONTACT": "Excluir Contato",
+    "ADD_CONTACT": "Adicionar contato",
+    "EDIT_CONTACT": "Editar contato",
+    "MERGE_CONTACT": "Mesclar contato",
+    "DUPLICATE_CONTACT": "Duplicar contato",
+    "DELETE_CONTACT": "Excluir contato",
     "CREATED_AT": "Criado em",
     "SAVE": "Salvar",
     "DETAIL": "Detalhes",
-    "PERSONAL_INFO": "Informação Pessoal",
+    "PERSONAL_INFO": "Informação pessoal",
     "MOBILE": "Celular",
     "FAX": "Fax",
     "TAGS": "Tags",
     "POSTALCODE": "CEP",
     "DELETE": "Excluir",
     "DELETE_ALL": "Excluir tudo",
-    "CONTACTMANAGER": "Gerente de contatos",
+    "CONTACTMANAGER": "Gerenciar contatos",
     "ID": "Id",
     "SETTINGS": "Configurações",
     "GENERAL": "Geral",
-    "CUSTOMFIELDS": "Os campos personalizados",
+    "CUSTOMFIELDS": "Campos personalizados",
     "NO_CUSTOMFIELD_AVAILABLE": "Nenhum campo personalizado disponível",
-    "ADD_TAG": "Adicionar Tag",
-    "NO_TAG": "Sem Tags",
+    "ADD_TAG": "Adicionar tag",
+    "NO_TAG": "Sem tags",
     "ALIAS": "Apelido",
     "TYPE": "Tipo",
     "VALUE": "Valor",
     "ADD_CUSTOMFIELD": "Adicionar campo personalizado",
     "EDIT_CUSTOMFIELD": "Editar campo personalizado",
     "DELETE_CUSTOMFIELD": "Excluir campo personalizado",
-    "NEW_COMPANY": "Nova Empresa",
-    "NEW_CONTACT": "Novo Contato",
-    "NEW_TAG": "Nova Tag",
-    "UPLOAD_CONTACTS": "Atualizar Contatos",
+    "NEW_COMPANY": "Nova empresa",
+    "NEW_CONTACT": "Novo contato",
+    "NEW_TAG": "Nova tag",
+    "UPLOAD_CONTACTS": "Atualizar contatos",
     "FINISH": "Terminar",
     "SUCCESS": "Sucesso",
     "FAILURE": "Falha",
-    "ALL_CONTACTS": "Todos os Contatos",
+    "ALL_CONTACTS": "Todos os contatos",
     "NEW_CUSTOMFIELD": "Novo campo personalizado",
     "NO_VOICEDISPOSITION_AVAILABLE": "Nenhuma disposição de voz disponível",
     "ADD_VOICEDISPOSITION": "Adicionar disposição de voz",
     "EDIT_VOICEDISPOSITION": "Editar disposição de voz",
     "DELETE_VOICEDISPOSITION": "Excluir disposição de voz",
     "VAT": "VAT",
-    "COMPANYID": "ID Empresa",
+    "COMPANYID": "ID empresa",
     "WEBSITE": "Website",
     "EMAIL_DOMAIN": "Domínio de email",
     "ADDRESS": "Endereço",
     "POSTAL_CODE": "CEP",
-    "SHIPMENTADDRESS": "Endereço de Envio",
+    "SHIPMENTADDRESS": "Endereço de envio",
     "COPY_CONTACT": "Copiar contato",
     "GOTOCONTACTS_LIST": "Mostrar contatos",
     "GOTOCONTACTS_COMPANY": "Mostrar contatos",
     "AGENTADD_LIST": "Adicionar agentes à lista",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "NONE": "Nenhum",
-    "FULLNAME": "Nome COmpleto",
+    "FULLNAME": "Nome completo",
     "CHECK_DUPLICATES": "Verificar duplicados",
     "DUPLICATES": "Duplicatas",
     "UPLOAD_CSV": "Envio CSV",
     "TAG": "Tag",
     "UPLOAD": "Envio",
     "ALL_AGENTS": "Todos os agentes",
-    "SELECTED_AGENTS": "Agentes Selecionados",
+    "SELECTED_AGENTS": "Agentes selecionados",
     "DATE_OF_BIRTH": "Data de nascimento",
     "DATEOFBIRTH": "Data de nascimento",
     "NOTES": "Notas",
     "GOTO_COMPANY": "Mostrar contatos",
     "REQUIRED": "Requeridos",
     "GLOBALCUSTOMFIELDS": "Campos personalizados globais",
-    "NEW_GLOBALCUSTOMFIELD": "Novos campos personalizados",
-    "ADD_GLOBALCUSTOMFIELD": "Adicionar campo personalizado",
-    "EDIT_GLOBALCUSTOMFIELD": "Editar campo personalizado",
-    "DELETE_GLOBALCUSTOMFIELD": "Excluir campo personalizado",
+    "NEW_GLOBALCUSTOMFIELD": "Novo campo personalizado global",
+    "ADD_GLOBALCUSTOMFIELD": "Adicionar campo personalizado global",
+    "EDIT_GLOBALCUSTOMFIELD": "Editar campo personalizado global",
+    "DELETE_GLOBALCUSTOMFIELD": "Excluir campo personalizado global",
     "JSCRIPTY": "Jscripty",
     "SESSIONS": "Sessões",
     "AGENT": "Agente",
     "COMPANY_FISCAL_TYPE": "Tipo fiscal da empresa",
     "CREATE": "Crio",
     "EUROPE": "Europa",
-    "EXPIREDAY": "Dias de Vencimento",
+    "EXPIREDAY": "Dias de vencimento",
     "FLATDISCOUNT": "Desconto da empresa",
-    "INVOICEARTICLE": "Artigos de Direito",
-    "ISOCODE": "Código Nacional ISO",
+    "INVOICEARTICLE": "Artigos de fatura",
+    "ISOCODE": "Código nacional ISO",
     "PAYMENTMETHOD": "Forma de pagamento",
     "PIVA": "Número de IVA",
     "RELATIONSHIP": "Relacionamento ...",
     "RELATIONSHIPCOMPANY": " ... com",
     "SDICODE": "Código SDI",
     "SOCIAL_CAPITAL": "Capital social",
-    "VATNUMBER_CF": "Codice Fiscale / IVA",
+    "VATNUMBER_CF": "Código VAT / IVA",
     "RECALLME": "Lembre-me",
     "ACTIONTYPE": "Tipo de acão",
     "CLICKTOACTION": "Clique para ação",
index 66b070f..b372a50 100644 (file)
     "LIMIT_TABS_REACHED": "تم بلوغ الحد الأقصى لعدد علامات التبويب المفتوحة",
     "LIST_NAME": "اسم القائمة",
     "PREVIEW_CALL": "معاينة المكالمة",
-    "PREVIEW_CALL_FOR": "دعوة المعاينة القادمة لـ",
-    "SCHEDULED_AT": "من المقرر في",
-    "SYSTEM_TIME": "وقت النظام"
+    "SYSTEM_TIME": "وقت النظام",
+    "CONTACT_NAME": "اسم جهة الاتصال",
+    "CONTACT_PHONE": "هاتف الاتصال",
+    "RECALLME_CALL_REMINDER": "تذكرني مكالمة تذكير",
+    "SCHEDULED_TIME": "جدول زمني",
+    "UPCOMING_RECALLME_CALL": "القادمة تذكرني المكالمة"
   }
 }
index 2e6b107..e0a66cd 100644 (file)
     "LIMIT_TABS_REACHED": "Bylo dosaženo maximálního počtu otevřených karet",
     "LIST_NAME": "Název seznamu",
     "PREVIEW_CALL": "Náhled hovoru",
-    "PREVIEW_CALL_FOR": "Nadcházející výzva k náhledu",
-    "SCHEDULED_AT": "naplánováno na",
-    "SYSTEM_TIME": "systémový čas"
+    "SYSTEM_TIME": "systémový čas",
+    "CONTACT_NAME": "kontaktní jméno",
+    "CONTACT_PHONE": "Kontaktní Telefon",
+    "RECALLME_CALL_REMINDER": "Připomenutí hovoru Recall Me",
+    "SCHEDULED_TIME": "Naplánovaný čas",
+    "UPCOMING_RECALLME_CALL": "Nadcházející volání Recall Me"
   }
 }
index 20d801e..20b67fd 100644 (file)
     "LIMIT_TABS_REACHED": "Det maksimale antal åbne faner er nået",
     "LIST_NAME": "Listenavn",
     "PREVIEW_CALL": "Forhåndsvisning af opkald",
-    "PREVIEW_CALL_FOR": "Kommende preview-opkald vedr",
-    "SCHEDULED_AT": "planlagt kl",
-    "SYSTEM_TIME": "System tid"
+    "SYSTEM_TIME": "System tid",
+    "CONTACT_NAME": "Kontakt navn",
+    "CONTACT_PHONE": "Kontakt telefon",
+    "RECALLME_CALL_REMINDER": "Husk mig opkaldspåmindelse",
+    "SCHEDULED_TIME": "Planlagt tid",
+    "UPCOMING_RECALLME_CALL": "Kommende Recall Me-opkald"
   }
 }
index 51bdbb5..6015548 100644 (file)
     "SUBJECT": "Betreff",
     "REFERER": "Referer",
     "ACCOUNT": "Konto",
-    "WEBSITE": "Webseite",
+    "WEBSITE": "Website",
     "AGENT": "Agent",
     "CREATED_AT": "Erstellt am",
     "CLOSED_AT": "Geschlossen am",
     "DISPOSITION": "Qualifizierung",
     "CONTACT": "Kontakt",
     "INTERACTION": "Interaktion",
-    "BROWSER_NAME": "Name Browser",
-    "BROWSER_VERSION": "Version Broweer",
-    "OS_NAME": "Name Betriebssystem",
-    "OS_VERSION": "Version Betriebssystem",
+    "BROWSER_NAME": "Browser Name",
+    "BROWSER_VERSION": "Browser Version",
+    "OS_NAME": "Betriebssystem Name",
+    "OS_VERSION": "Betriebssystem Version",
     "DEVICE_MODEL": "Gerätemodell",
     "DEVICE_VENDOR": "Gerätehersteller",
     "DEVICE_TYPE": "Gerätetyp",
-    "RECALLME": "Pers. Wiedervorlage",
-    "DROP_RATE": "Drop-Rate",
-    "DROPPED": "Abgebrochen (Drop)",
-    "DROPPED_TEXT": "Anzahl vom System aufgelegt",
-    "DETAIL": "Details",
-    "MOTION_BULL": "Outbound Dialer",
+    "RECALLME": "Rückruf anfordern",
+    "DROP_RATE": "Abbruchrate Anrufe",
+    "DROPPED": "Abgebrochen",
+    "DROPPED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
+    "DETAIL": "Detail",
+    "MOTION_BULL": "Motion Bull",
     "LIMITED": "Limitiert",
     "LIMITED_TEXT": "IVR-Kampagnen Anrufe getätigt/limitiert",
     "DASHBOARDS": "Dashboards",
     "RECORDINGS": "Aufzeichnungen",
-    "TODAY_MOTION_BULL_STATS": "Tagesstatistiken - ausgehende Warteschlangen",
-    "ORIGINATED": "Angewählt",
-    "ORIGINATED_TEXT": "Anzahl angewählter Anrufe",
+    "TODAY_MOTION_BULL_STATS": "Tagesstatistiken Warteschlangen",
+    "ORIGINATED": "Gewählt",
+    "ORIGINATED_TEXT": "Anrufe aus der Warteschlange gewählt",
     "UPDATE": "Aktualisieren",
     "MORE": "Mehr",
-    "MOTIONDIALER": "Outbound Dialer",
+    "MOTIONDIALER": "Motion Dialer",
     "DISPOSE": "Qualifizieren",
     "QUEUES": "Warteschlangen",
     "DIALER_CALL": "Dialer-Anruf",
@@ -58,8 +58,8 @@
     "PERSONAL_INFO": "Persönliche Infos",
     "SOLD": "Verkauft",
     "SPECIAL": "Speziell",
-    "BLACKLIST": "Schwarze Liste",
-    "RESCHEDULE": "Allg. Wiedervorlage",
+    "BLACKLIST": "Blacklist",
+    "RESCHEDULE": "erneut Planen",
     "FIRSTNAME": "Vorname",
     "LASTNAME": "Nachname",
     "MOBILE": "Mobilnummer",
     "CUSTOM_FIELDS": "Benutzerdefinierte Felder",
     "GENERAL": "Allgemein",
     "VOICE": "Sprachanrufe",
-    "TODAY_IVR_CAMPAIGNS_STATS": "Tagesstatistiken - IVR-Kampagnen",
+    "TODAY_IVR_CAMPAIGNS_STATS": "IVR-Tagesstatistiken",
     "TODAY_INBOUND_STATS": "Tagesstatistiken - eingehende Warteschlangen",
     "TODAY_OUTBOUND_STATS": "Tagesstatistiken - ausgehende Warteschlangen",
-    "WAITING": "Wartend",
+    "WAITING": "Anrufe in Warteschlange",
     "TALKING": "Im Gespräch",
     "INBOUND_ANSWERED": "Angenommen eingehend",
     "OUTBOUND_ANSWERED": "Angenommen ausgehend",
     "ABANDONED": "Abgebrochen",
     "TOTAL_OFFERED": "Gesamt angeboten",
-    "AVG_HOLD_TIME": "DS. Wartezeit",
+    "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
     "INBOUND_ANSWER_RATE": "Antwortrate eingehend",
     "OUTBOUND_ANSWER_RATE": "Antwortrate ausgehend",
     "ABANDON_RATE": "Abbruchrate",
     "TOT_DURATION": "Gesamtdauer",
     "AVG_DURATION": "Durchschnittliche Dauer",
     "HELP": {
-      "ORIGINATEDLIMITED": "Übersicht zu automatischen Outbound-Kampagnen per IVR. Anzahl Anrufe gewählt zu Anzahl Anrufe unvollständig (keine freien Leitungen, keine Agenten, etc.)",
-      "DROPPED": "Gesamtzahl der vom System aufgelegten Anrufe, weil zum Zeitpunkt der Verbindung kein Agent frei war (Drop-Call)",
-      "DROP_RATE": "Abbruchrate der vom System aufgelegten Anrufe (Drop-Calls) im Vergleich zu allen Anrufen ",
-      "WAITING": "Gesamtzahl aller wartenden Interaktionen in der Warteschlange",
-      "OUTBOUND_ANSWERED": "Gesamtzahl aller ausgehenden Anrufe, welche von der Gegenstelle beantwortet wurden",
-      "ABANDONED": "Gesamtzahl der Chats, welche vom Kunden nicht beendet wurden",
-      "TOTAL_OFFERED": "Gesamtanzahl aller angebotenen Interaktionen. (Je nach Kanal Summe aus \"Geöffnet\", \"Bearbeitet\", \"Ausgelaufen\" und \"nicht Bearbeitet\")",
+      "ORIGINATEDLIMITED": "IVR Kampagnen gewählt/limitiert",
+      "DROPPED": "Gesamtzahl abgebrochener Anrufe innerhalb der Warteschlange",
+      "DROP_RATE": "Abbruchrate aller Anrufe in der Warteschlange",
+      "WAITING": "Gesamtzahl der wartenden Anrufe aus der Warteschlange",
+      "OUTBOUND_ANSWERED": "Gesamtzahl der angenommenen ausgehenden Anrufe",
+      "ABANDONED": "Gesamtzahl der abgebrochenen Anrufe innerhalb der Warteschlange",
+      "TOTAL_OFFERED": "Gesamtzahl der angebotenen Anrufe in der Warteschlange (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
       "AVG_HOLD_TIME": "Durchschnittliche Wartezeit einer Interaktion bis zur Beantwortung durch einen Agenten.",
-      "OUTBOUND_ANSWER_RATE": "Rate aller ausgehenden Anrufe mit Antwort der Gegenstelle im Vergleich zu allen ausgehenden Anrufen",
-      "ABANDON_RATE": "Rate aller eingehenden Anrufe, bei denen der Kunde aufgelegt hat, bevor mit einem Agenten gesprochen wurde im Vergleich zu allen eingehenden Anrufen",
-      "UNMANAGED": "Gesamtzahl aller Chats, welche vom Kunden abgebrochen wurden, bevor ein Agent verfügbar war.",
-      "TOTAL": "Gesamtzahl aller ausgehenden Anrufe, welche von Agenten gewählt wurden",
-      "TOT_DURATION": "esamtdauer aller ausgehenden Anrufe, welche von Agenten gewählt wurden",
-      "AVG_DURATION": "Durchschnittliche Dauer aller ausgehenden Anrufe",
-      "ORIGINATED": "Gesamtzahl aller Wählversuche für ausgehende Anrufe. Beinhaltet auch Systemergebnisse wie z.B. \"Besetzt\", Anrufbeantworter\", etc.",
-      "ABANDONED_RATE": "Rate aller eingehenden Chats, welche vor der Verbindung mit einem Agenten vom Kunden abgebrochen wurden im Vergleich zu allen eingehenden Chats",
-      "AVG_MANAGED_TIME": "Die durchschnittliche Zeit welche ein Agent für die Bearbeitung eines Chats benötigt hat. (Klingeln beim Agenten + Bearbeitung des Chats + Nacharbeit)",
-      "MANAGED": "Gesamtzahl der durch einen Agenten bearbeiteten Interaktionen. (Status: geschlossen)",
-      "MANAGED_RATE": "Rate aller bearbeiteten Interaktionen (Status: geschlossen) im Vergleich zu allen eingehenden Interaktionen",
-      "OPENED": "Gesamtanzahl aller derzeit geöffneten Interaktionen",
-      "UNMANAGED_RATE": "Rate der heutigen Interaktionen, welche noch nicht bearbeitet wurden im Vergleich zu allen eingegangenen Interaktionen",
-      "VOICE_ABANDONED": "Gesamtzahl aller in der Warteschlange abgebrochenen Anrufe im Vergleich zu allen eingehenden Anrufen. Hinweis: Anrufe, die wegen voreingestellter Zeitüberschreitung und \"Betreten der Warteschlange, obwohl keine Agenten angemeldet waren\" abgebrochen sind, werden nicht berücksichtigt.",
-      "VOICE_ANSWERED": "Gesamtanzahl aller eingehenden Anrufe, welche durch einen Agenten entgegengenommen wurden",
-      "VOICE_ANSWER_RATE": "Rate aller durch einen Agenten beantworteten Anrufe im Vergleich zu allen eingehenden Anrufen",
-      "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit in der Warteschlange bis zur Beantwortung des Anrufes durch einen Agenten",
-      "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit für alle eingehenden Anrufe",
-      "VOICE_TALKING": "Gesamtzahl der aktiven Gespräche über alle eingehenden Warteschlangen",
-      "VOICE_TOTAL_OFFERED": "Gesamtzahl aller angebotenen Anrufe (\"Abgeschlossen\", \"Verloren\" und \"nicht Bearbeitet\"). Hinweis: Anrufe, welche bereits in der IVR abgebrochen sind, werden nicht berücksichtigt.",
-      "VOICE_UNMANAGED": "Gesamtzahl aller nicht bearbeiteten Anrufe, welche durch die Systemeinstellungen abgebrochen wurden. (Bsp: Zeitüberschreitung innerhalb der Warteschlange; Überlauf in eine andere Warteschlange; Betreten oder Verbleiben in der Warteschlange, wenn keine Agenten mehr angemeldet sind.)",
-      "VOICE_WAITING": "Gesamtzahl der aktuell wartenden Anrufe über alle eingehenden Warteschlangen",
+      "OUTBOUND_ANSWER_RATE": "Rate aller angenommenen ausgehenden Anrufe",
+      "ABANDON_RATE": "Rate aller abgebrochener Anrufe innerhalb der Warteschlange",
+      "UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
+      "TOTAL": "Gesamtzahl der ausgehenden Anrufe",
+      "TOT_DURATION": "Gesamtdauer aller ausgehenden Anrufe",
+      "AVG_DURATION": "Durchschnittliche Dauer aller angenommenen ausgehenden Anrufe",
+      "ORIGINATED": "Gesamtzahl der in den Warteschlangen-Kampagnen gewählten Anrufe",
+      "ABANDONED_RATE": "Rate aller abgebrochenen Interaktionen",
+      "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit einer Interaktion",
+      "MANAGED": "Gesamtzahl der abgeschlossenen Interaktionen",
+      "MANAGED_RATE": "Rate aller bearbeiteten Anrufe",
+      "OPENED": "Gesamtzahl der aktiven Interaktionen",
+      "UNMANAGED_RATE": "Rate aller unbearbeiteten Interaktionen",
+      "VOICE_ABANDONED": "Gesamtzahl der abgebrochenen Anrufe in der Warteschlange unter Berücksichtigung aller vorhandenen Warteschlangen. Hinweis: Anrufe, die wegen Timeout und joinempty abgebrochen wurden, werden nicht berücksichtigt.",
+      "VOICE_ANSWERED": "Gesamtzahl der abgeschlossenen Anrufe für alle vorhandenen Warteschlangen",
+      "VOICE_ANSWER_RATE": "Antwortrate aller Anrufe in der Warteschlange",
+      "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit bis zur Beantwortung durch einen Agenten für alle vorhandenen Warteschlangen",
+      "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit für alle Anrufe aus der Warteschlange ",
+      "VOICE_TALKING": "Gesamtzahl der aktiven Anrufe für alle vorhandenen Warteschlangen",
+      "VOICE_TOTAL_OFFERED": "Gesamtzahl der Anrufe der Warteschlangen (angenommen + abgebrochen + nicht bearbeitet in der letzten Warteschlange des Callflows). Hinweis: Anrufe innerhalb der IVR werden nicht berücksichtigt.",
+      "VOICE_UNMANAGED": "Gesamtzahl der nicht bearbeiteten Anrufe für alle vorhandenen Warteschlangen. Enthält die Anrufe, die durch Timeout, Joinempty, Leavewhenempty und Exitwithkey abgebrochen wurden (siehe Asterisk-Dokumentation für weitere Informationen).",
+      "VOICE_WAITING": "Gesamtanzahl der aktuell wartenden Anrufe für alle vorhandenen Warteschlangen",
       "MANDATORY_DISPOSITION_ENABLED": "Kontaktqualifizierung erforderlich",
-      "EXACT_MATCH_FILTER": "Genaue Übereinstimmung der Suchbegriffe",
-      "LIKE_FILTER": "Variable Übereinstimmung der Suchbegriffe"
+      "EXACT_MATCH_FILTER": "Suche nach einer genauen Übereinstimmung der Suchbegriffe",
+      "LIKE_FILTER": "Suche nach variablen Übereinstimmungen der Suchbegriffe"
     },
     "ERRORS": {
-      "FIRSTNAME_REQUIRED": "Vorname erforderlich",
-      "PHONE_REQUIRED": "Telefonnummer erforderlich",
-      "DISPOSITION_REQUIRED": "Qualifizierung erforderlich",
-      "AGENT_REQUIRED": "Agent erforderlich",
-      "QUEUE_REQUIRED": "Warteschlange erforderlich",
-      "CAMPAIGN_REQUIRED": "Kampagne erforderlich",
-      "FAILED_INITIALIZATION": "Fehler während Initialisierung"
+      "FIRSTNAME_REQUIRED": "Der erste Name ist erforderlich",
+      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
+      "DISPOSITION_REQUIRED": "Pflichtfeld",
+      "AGENT_REQUIRED": "Pflichtfeld",
+      "QUEUE_REQUIRED": "Pflichtfeld",
+      "CAMPAIGN_REQUIRED": "Pflichtfeld",
+      "FAILED_INITIALIZATION": "Fehler während der Initialisierung"
     },
-    "NO_AVAILABLE_INFO": "Keine Informationen vorhanden",
-    "WELCOME_TO_MOTION": "Willkommen!",
+    "NO_AVAILABLE_INFO": "Keine Information vorhanden",
+    "WELCOME_TO_MOTION": "Willkommen zu Motion",
     "WELCOME_MESSAGE": "Verwenden Sie die linke Seitenleiste, um durch die verfügbaren Abschnitte zu navigieren",
     "ADD": "Hinzufügen",
     "CONTACTMANAGER": "Kontaktmanager",
     "NEW_CONTACT": "Neuer Kontakt",
     "PHONE": "Telefon",
     "SAVE": "Speichern",
-    "INBOUND_WAITING_CALLS": "Liste der wartenden Anrufe",
-    "CONTACTS": "Globale Kontakte",
-    "MYCONTACTS": "Von mir bearbeitete Kontakte",
+    "INBOUND_WAITING_CALLS": "Wartende Anrufe (Eingehend)",
+    "CONTACTS": "Kontakte",
+    "MYCONTACTS": "Meine Kontakte",
     "ADD_CONTACT": "Kontakt hinzufügen",
     "RELOAD": "Neu Laden",
     "WAITING_TEXT": "Wartende Interaktionen",
     "TALKING_TEXT": "Aktive Anrufe",
     "INBOUND_ANSWERED_TEXT": "Angenommene Anrufe",
-    "ABANDONED_TEXT": "Gesamt abgebrochene Interaktionen",
-    "DROP_RATE_TEXT": "Rate vom System aufgelegt",
+    "ABANDONED_TEXT": "Abgebrochene Anrufe",
+    "DROP_RATE_TEXT": "Abbruchrate",
     "TOTAL_OFFERED_TEXT": "Gesamt angebotene Interaktionen",
     "AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit",
     "AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit",
     "TOTAL_TEXT": "Gesamt ausgehende Anrufe",
     "OUTBOUND_ANSWERED_TEXT": "Beantwortete Anrufe (Ausgehend) ",
     "TOT_DURATION_TEXT": "Gesamtdauer ausgehender Anrufe ",
-    "AVG_DURATION_TEXT": "Durchschnittl. Dauer (Ausgehend)",
-    "OUTBOUND_ANSWER_RATE_TEXT": "Antwortrate ausgehende Anrufe",
+    "AVG_DURATION_TEXT": "Durchschnittliche Dauer ausgehender Anrufe",
+    "OUTBOUND_ANSWER_RATE_TEXT": "Rate angenommener ausgehender Anrufe",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
     "OF": "von",
-    "REPLY_PLACEHOLDER": "Text eingeben und Senden mit Eingabetaste",
+    "REPLY_PLACEHOLDER": "Text eingeben und ENTER drücken zum Senden",
     "CONTACT_INFO": "Kontaktinformationen",
     "CLOSE_AND_DISPOSE": "Schließen und Qualifizieren",
     "DISPOSITIONS": "Qualifizierungen",
     "REJECT": "Ablehnen",
     "CLOSED": "Geschlossen",
     "INFO": "Information",
-    "NOTE": "Anmerkung",
+    "NOTE": "Hinweis",
     "ACCEPT_ELSEWHERE": "Von anderem Teilnehmer angenommen",
     "ATTENTION": "Achtung",
-    "SOCIAL": "Social-Media",
+    "SOCIAL": "Sozial",
     "NO_JSCRIPTY_PROJECTS_AVAILABLE": "Keine Jscripty-Projekte verfügbar",
     "OPENED": "Geöffnet",
     "FILTER": "Filter",
     "INTERACTIONS": "Interaktionen",
     "STARTEDAT": "Begonnen am",
     "STATUS": "Status",
-    "OPEN": "Offen",
+    "OPEN": "Öffnen",
     "SHOW": "Anzeigen",
     "ME": "ICH",
     "NOT_ASSIGNED": "Nicht zugewiesen",
     "HIDE_DETAILS": "Details ausblenden",
     "EXTERNAL_URL": "Externer Link",
     "SET_AS": "Festlegen als",
-    "PENDING": "Warten auf Rückmeldung",
+    "PENDING": "Ausstehend",
     "CANNED_ANSWER_NOT_FOUND": "Keine Textbausteine gefunden",
     "CANNED_ANSWER_SEARCH": "Hier nach einem Textbaustein suchen",
     "NO_MAIL_ACCOUNTS_AVAILABLE": "Keine E-Mail-Konten verfügbar",
     "NO_FAX_ACCOUNTS_AVAILABLE": "Keine Fax-Konten verfügbar",
     "NO_SMS_ACCOUNTS_AVAILABLE": "Keine SMS-Konten verfügbar",
-    "FILTER_VOICE_QUEUES": "Warteschlangen filtern",
+    "FILTER_VOICE_QUEUES": "Anrufwarteschlangen filtern",
     "LOADING_INTERACTION": "Interaktion wird geladen",
     "JANUARY": "Januar",
     "FEBRUARY": "Februar",
     "YESTERDAY": "Gestern",
     "TODAY": "Heute",
     "SELECT_DATE": "Datum auswählen",
-    "SELECT_DATE_RANGE": "Datumsbereich wählen",
-    "CLEAR": "Zurücksetzen",
-    "CALL_NUMBER": "Nummer Anrufen",
-    "TRANSFER_NUMBER": "Transfer an Nummer",
+    "SELECT_DATE_RANGE": "Wählen Sie einen Datumsbereich",
+    "CLEAR": "Löschen",
+    "CALL_NUMBER": "Anrufen",
+    "TRANSFER_NUMBER": "Transfer",
     "CALL_SAVED": "Anruf erfolgreich gespeichert",
     "CALL_DISPOSED": "Anruf erfolgreich qualifiziert",
-    "CHANNEL_WAITING_TEXT": "Liste der wartenden Interaktionen",
+    "CHANNEL_WAITING_TEXT": "Wartende Interaktionen",
     "CHANNEL_QUEUE": "Warteschlange",
-    "CHANNEL_FROM": "Von",
+    "CHANNEL_FROM": "von",
     "MARK_AS_UNREAD": "Als ungelesen markieren",
     "SELECT_AGENT": "Agenten auswählen",
     "READ": "Gelesen",
     "SELECT_READ_UNREAD": "Wählen ob Lesen/Ungelesen",
     "SELECT_SUBSTATUS": "Zwischenstatus auswählen",
     "UNREAD": "Ungelesen",
-    "ABANDONAT": "Abgebrochen am",
+    "ABANDONAT": "Abgebrochen",
     "ABANDONEDQUEUECALLS": "Abgebrochene Anrufe",
     "FREE": "Frei",
     "LASTASSIGNEDTO": "Zuletzt zugewiesen an",
     "QUEUE": "Warteschlange",
-    "QUEUECALLEREXITAT": "Warteschlange verlassen am",
+    "QUEUECALLEREXITAT": "Abgebrochen",
     "QUEUECALLEREXITREASON": "Grund",
     "RESERVED": "Reserviert",
     "SELECT_CAMPAIGN": "Warteschlange auswählen",
     "ASSIGNTO": "Zuweisen",
-    "CLICKRELOAD": "Sie haben neue verpasste Anrufe. Bitte Seite neu Laden.",
+    "CLICKRELOAD": "Verpasste Anrufe! Bitte Seite erneut laden",
     "NOTAVAILABLE": "Nicht verfügbar",
     "CURRENTLY_IN_USE_BY": "Derzeit verwendet von",
     "CUSTOMER_JOURNEY": "Kundenhistorie",
     "NO_DATA_AVAILABLE": "Keine Daten verfügbar",
     "AGENTS": "Agenten",
     "TRANSFER": "Transfer",
-    "NO_DISPOSITION_SET": "Keine Qualifizierung ausgewählt",
-    "ABANDONED_RATE": "Abbruchrate Chat",
-    "ABANDONED_RATE_TEXT": "Abgebrochene Chats",
-    "AVG_MANAGED_TIME": "DS. Bearbeitungszeit",
-    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Bearbeitungszeit",
+    "NO_DISPOSITION_SET": "Keine Qualifizierungen definiert",
+    "ABANDONED_RATE": "Abbruchrate",
+    "ABANDONED_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
+    "AVG_MANAGED_TIME": "Durchschnittliche Bearbeitungszeit",
+    "AVG_MANAGED_TIME_TEXT": "Durchschnittliche Bearbeitungszeit aller Interkationen",
     "MANAGED": "Bearbeitet",
     "MANAGED_RATE": "Bearbeitungsrate",
-    "MANAGED_RATE_TEXT": "Rate bearbeitete Interaktionen",
-    "MANAGED_TEXT": "Ges. Interaktionen bearbeitet",
-    "OPENED_TEXT": "Ges. Interaktionen geöffnet",
-    "TODAY_INTERACTIONS_STATS": "Tagesstatistiken - weitere Kanäle",
+    "MANAGED_RATE_TEXT": "Rate der bearbeiteten Interaktionen",
+    "MANAGED_TEXT": "Interaktionen bearbeitet",
+    "OPENED_TEXT": "Interaktionen geöffnet",
+    "TODAY_INTERACTIONS_STATS": "Interaktionen Tagesstatistiken",
     "UNMANAGED_RATE": "Rate nicht Bearbeitet",
-    "UNMANAGED_RATE_TEXT": "Rate nicht bearbeitete Interaktionen",
-    "VOICE_ABANDONED": "Gesamt Abgebrochen",
-    "VOICE_ABANDONED_TEXT": "Gesamt abgebrochene Anrufe",
+    "UNMANAGED_RATE_TEXT": "Rate der nicht bearbeiteten Interaktionen in der Warteschlange",
+    "VOICE_ABANDONED": "Abgebrochen",
+    "VOICE_ABANDONED_TEXT": "Abgebrochene Anrufe innerhalb der Warteschlange",
     "VOICE_ABANDON_RATE": "Abbruchrate",
-    "VOICE_ABANDON_RATE_TEXT": "Rate abgebrochene Anrufe",
-    "VOICE_ANSWERED": "Gesamt Angenommen",
-    "VOICE_ANSWERED_TEXT": "Gesamt angenommene Anrufe",
+    "VOICE_ABANDON_RATE_TEXT": "Rate der abgebrochenen Anrufe innerhalb der Warteschlange",
+    "VOICE_ANSWERED": "Angenommen",
+    "VOICE_ANSWERED_TEXT": "Angenommene Anrufe in der Warteschlange",
     "VOICE_ANSWER_RATE": "Antwortrate",
-    "VOICE_ANSWER_RATE_TEXT": "Rate angenommener Anrufe",
-    "VOICE_AVG_HOLD_TIME": "DS. Wartezeit",
-    "VOICE_AVG_HOLD_TIME_TEXT": "DS. Wartezeit (Eingehend)",
-    "VOICE_AVG_TALK_TIME": "DS. Gesprächszeit",
-    "VOICE_AVG_TALK_TIME_TEXT": "Durchschnittl. Gesprächszeit",
-    "VOICE_TALKING": "Derzeit im Gespräch",
-    "VOICE_TALKING_TEXT": "Gesamt aktive Anrufe",
+    "VOICE_ANSWER_RATE_TEXT": "Rate angenommener Anrufe in der Warteschlange",
+    "VOICE_AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
+    "VOICE_AVG_HOLD_TIME_TEXT": "Durchschnittliche Wartezeit aller Sprachanrufe",
+    "VOICE_AVG_TALK_TIME": "Durchschnittliche Gesprächszeit",
+    "VOICE_AVG_TALK_TIME_TEXT": "Durchschnittliche Gesprächszeit aller Anrufe nach der Warteschleife",
+    "VOICE_TALKING": "IM GESPRÄCH",
+    "VOICE_TALKING_TEXT": "Aktive Anrufe in der Warteschlange",
     "VOICE_TOTAL_OFFERED": "Gesamt angeboten",
-    "VOICE_TOTAL_OFFERED_TEXT": "Gesamt angebotene Anrufe (Eingehend)",
+    "VOICE_TOTAL_OFFERED_TEXT": "Gesamtzahl der angebotenen Anrufe in der Warteschlange",
     "VOICE_UNMANAGED": "Nicht bearbeitet",
-    "VOICE_UNMANAGED_TEXT": "Ges. nicht bearbeitete Anrufe",
+    "VOICE_UNMANAGED_TEXT": "Nicht bearbeitete Anrufe in der Warteschlange",
     "VOICE_WAITING": "Wartende Anrufe",
-    "VOICE_WAITING_TEXT": "Gesamt wartende Anrufe",
+    "VOICE_WAITING_TEXT": "Wartende Anrufe in der Warteschlange",
     "DOWNLOAD": "Herunterladen",
     "SCHEDULED_CALLS": "Geplante Anrufe",
     "PRIVATE": "Persönlich",
     "INTERACTION_CLOSED": "Interaktion erfolgreich geschlossen",
     "INTERACTION_CLOSED_DISPOSED": "Interaktion erfolgreich geschlossen und qualifiziert",
     "INTERACTION_DISPOSED": "Interaktion erfolgreich qualifiziert",
-    "ASSIGNED_TO_OTHERS": "Einem anderen Nutzer zugewiesen",
+    "ASSIGNED_TO_OTHERS": "An Andere zugewiesen",
     "SELECT_ALL": "Alles auswählen",
-    "CHAT_INTERACTIONS": "Interaktionen per Chat",
-    "FAX_INTERACTIONS": "Interaktionen per Fax",
+    "CHAT_INTERACTIONS": "Chat-Interaktionen",
+    "FAX_INTERACTIONS": "Fax-Interaktionen",
     "ID": "ID",
-    "MAIL_INTERACTIONS": "Interaktionen per E-Mail",
-    "OPENCHANNEL_INTERACTIONS": "Interaktionen über den offenen Kanal",
-    "SMS_INTERACTIONS": "Interaktionen per SMS",
+    "MAIL_INTERACTIONS": "E-Mail-Interaktionen",
+    "OPENCHANNEL_INTERACTIONS": "Offener-Kanal-Interaktionen",
+    "SMS_INTERACTIONS": "SMS-Interaktionen",
     "CANCEL": "Abbrechen",
     "DRAFT": "Entwurf speichern",
     "DRAFT_SAVE_WARNING_MESSAGE": "Für diese Interaktion ist bereits ein Entwurf gespeichert. Möchten Sie diesen überschreiben?",
     "ADD_PRODUCTPRICELIST": "PRODUKT HINZUFÜGEN",
     "AGENTFULLNAME": "Agent",
     "ALL_COMPANIES": "Alle Unternehmen",
-    "ALL_PRODUCTS": "Alle Produkte",
-    "ALL_STATUS": "Alle Status",
-    "ALL_STEP": "Alle Schritte",
+    "ALL_PRODUCTS": "Alles",
+    "ALL_STATUS": "Alles",
+    "ALL_STEP": "Alles",
     "ALL_WORKFLOW": "Alle Arbeitsabläufe",
     "ATTENDACELASTINVOICE": "Letzte Rechnung",
     "ATTENDACENEXTINVOICE": "Nächste Rechnung",
     "COMPANYCITY": "Stadt",
     "COMPANYCOUNTRY": "Land",
     "COMPANYDESC": "Beschreibung",
-    "COMPANYEMAIL": "E-Mail",
+    "COMPANYEMAIL": "Email",
     "COMPANYFAX": "Fax",
     "COMPANYNAME": "Unternehmen",
     "COMPANYNATION": "Staat",
     "DOSSIER_INFO": "Information",
     "ENDDATE": "Ablaufdatum",
     "FROM": "von",
-    "GRAPHINVOICES": "Diagramm der Rechnung",
+    "GRAPHINVOICES": "Diagramm der Rechnungsemission",
     "INASSET": "Kapital",
     "INVOICE": "RECHNUNG",
     "INVOICEDETAILS": "RECHNUNGS-DETAILS",
     "NEXTINVOICE": "Nächste Rechnung",
     "NOTES": "Notizen",
     "NO_PRODUCTINVOICE_AVAILABLE": "Kein Produkt verfügbar",
-    "NO_PRODUCTPRICELIST_AVAILABLE": "Keine Preislisten verfügbar",
-    "NO_PRODUCTPROFORMA_AVAILABLE": "Keine Pro-Forma verfügbar",
+    "NO_PRODUCTPRICELIST_AVAILABLE": "Keine Daten verfügbar",
+    "NO_PRODUCTPROFORMA_AVAILABLE": "Keine Daten verfügbar",
     "NUMBER": "Nummer",
     "OPENDATE": "Öffnungsdatum",
     "ORDER": "Bestellung",
     "ORDERCLIENTCODE": "Kundennummer",
-    "ORDERID": "Bestellnummer",
+    "ORDERID": "Bestellung ID ",
     "ORDERNOTES": "Notizen",
     "ORDERSTATUS": "Status",
     "ORDER_INFO": "Bestellung",
     "SELECT_WORKFLOWSTEPS": "Arbeitsablaufstatus auswählen",
     "STARTDATE": "Rechnungsdatum",
     "STATE": "Status",
-    "STEP": "Schritt",
+    "STEP": "Stufe",
     "SUBSCRIPTIONDETAIL": "Detail",
     "SUBSCRIPTIONNAME": "Abonnement",
     "SUBSCRIPTIONS": "KUNDENPLAN",
     "TAX": "MwSt",
-    "TO": "auf",
+    "TO": "Zu",
     "TOTALPAYMENTS": "Gesamtzahlungen",
     "UPDATED_AT": "Geändert am",
     "UPDATE_PRODUCT": "Produkt aktualisieren",
     "ENDING_DATE": "Enddatum",
     "ENDING_VALUE": "Endwert",
     "ENDS_WITH": "endet mit",
-    "EQUALS": "ist gleich",
+    "EQUALS": "gleich",
     "IS_AMONG": "ist unter",
     "IS_BETWEEN": "ist zwischen",
     "IS_GREATER_THAN": "ist größer als",
     "SELECT_QUEUE": "Warteschlange auswählen",
     "VIDAOOSESSION": "Videoanruf starten",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPP_INTERACTIONS": "Interaktionen per WhatsApp",
+    "WHATSAPP_INTERACTIONS": "WhatsApp-Interaktionen",
     "LAST_UPDATED": "Zuletzt aktualisiert",
     "MATCHING_FIELD": "Übereinstimmendes Feld",
     "MULTIPLE_CONTACTS_FOUND": "Mehrere Kontakte für Nummer gefunden",
     "SELECT_CONTACT": "Kontakt auswählen",
     "WHICH_ONE_TO_USE": "Welcher Eintrag soll verwendet werden?",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Kein WhatsApp-Konto verfügbar",
-    "SECOND_LEVEL_DISPOSITION": "Qualifizierung Ebene 2",
-    "THIRD_LEVEL_DISPOSITION": "Qualifizierung Ebene 3",
+    "SECOND_LEVEL_DISPOSITION": "Qualifizierung der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Qualifizierung der dritten Ebene",
     "LICENSE_EXPIRE_REMAINING_DAYS": "Ihre Lizenz läuft bald ab! Bitte wenden Sie sich an Ihren Administrator",
-    "CREATEDAT": "Erstellt am",
+    "CREATEDAT": "Hergestellt in",
     "ELAPSED_ANSWERED": "Verstrichene Zeit seit dem Start des Anrufs",
     "ELAPSED_DISPOSED": "Verstrichene Zeit seit Beendigung des Anrufs",
     "LOST_CONNECTION": "Probleme mit der Netzwerkkonnektivität. Bitte Internetverbindung prüfen.",
     "NO_RESULTS_AVAILABLE": "Keine Ergebnisse verfügbar",
-    "AVAILABLE": "Verfügbar",
+    "AVAILABLE": "Erhältlich",
     "CONFIRM": "Bestätigen Sie",
     "FILTERS": "Filter",
     "FILTER_CHAT_WEBSITES": "Chat-Websites filtern",
     "LIMIT_TABS_REACHED": "Maximale Anzahl geöffneter Tabs erreicht",
     "LIST_NAME": "Listennamen",
     "PREVIEW_CALL": "Anrufvorschau",
-    "PREVIEW_CALL_FOR": "Bevorstehender Aufruf zur Vorschau für",
-    "SCHEDULED_AT": "geplant um",
-    "SYSTEM_TIME": "Systemzeit"
+    "SYSTEM_TIME": "Systemzeit",
+    "CONTACT_NAME": "Kontaktname",
+    "CONTACT_PHONE": "Kontakt-Telefon",
+    "RECALLME_CALL_REMINDER": "Recall Me Anruferinnerung",
+    "SCHEDULED_TIME": "Geplante Zeit",
+    "UPCOMING_RECALLME_CALL": "Anstehender Recall Me-Anruf"
   }
 }
index 03673b4..3169c3f 100644 (file)
     "DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments",
     "UNMANAGED_RATE": "Unmanaged Rate",
-    "PREVIEW_CALL_FOR": "Upcoming preview call for ",
-    "PREVIEW_CALL": "Preview call ",
-    "SCHEDULED_AT": "scheduled at ",
+    "UPCOMING_RECALLME_CALL": "Upcoming Recall Me call",
+    "RECALLME_CALL_REMINDER": "Recall Me call reminder",
+    "CONTACT_NAME": "Contact Name",
+    "CONTACT_PHONE": "Contact Phone",
+    "SCHEDULED_TIME": "Scheduled time",
     "LIST_NAME": "List name",
     "UNMANAGED_RATE_TEXT": "Interactions Unmanaged Rate",
     "VOICE_WAITING": "WAITING",
index 9dacd2a..abbb32f 100644 (file)
     "LIMIT_TABS_REACHED": "Se alcanzó el número máximo de pestañas abiertas",
     "LIST_NAME": "Lista de nombres",
     "PREVIEW_CALL": "Vista previa de la llamada",
-    "PREVIEW_CALL_FOR": "Próxima llamada de vista previa para",
-    "SCHEDULED_AT": "programado en",
-    "SYSTEM_TIME": "hora del sistema"
+    "SYSTEM_TIME": "hora del sistema",
+    "CONTACT_NAME": "Nombre de contacto",
+    "CONTACT_PHONE": "teléfono de contacto",
+    "RECALLME_CALL_REMINDER": "Recuérdame recordatorio de llamada",
+    "SCHEDULED_TIME": "Hora programada",
+    "UPCOMING_RECALLME_CALL": "Próxima llamada de Recall Me"
   }
 }
index c81e5a3..0a5b7eb 100644 (file)
     "LIMIT_TABS_REACHED": "Avatud vahelehtede maksimaalne arv on täis",
     "LIST_NAME": "Loendi nimi",
     "PREVIEW_CALL": "Kõne eelvaade",
-    "PREVIEW_CALL_FOR": "Tulevane eelvaatekutse",
-    "SCHEDULED_AT": "kavas kl",
-    "SYSTEM_TIME": "Süsteemi aeg"
+    "SYSTEM_TIME": "Süsteemi aeg",
+    "CONTACT_NAME": "kontaktisiku nimi",
+    "CONTACT_PHONE": "Kontakt Telefon",
+    "RECALLME_CALL_REMINDER": "Helista mulle meeldetuletus",
+    "SCHEDULED_TIME": "Planeeritud aeg",
+    "UPCOMING_RECALLME_CALL": "Tulevane Recall Me kõne"
   }
 }
index 9380263..76aa749 100644 (file)
     "LIMIT_TABS_REACHED": "به حداکثر تعداد برگه های باز رسیده است",
     "LIST_NAME": "نام لیست",
     "PREVIEW_CALL": "پیش نمایش تماس",
-    "PREVIEW_CALL_FOR": "تماس پیش نمایش آینده برای",
-    "SCHEDULED_AT": "برنامه ریزی شده در",
-    "SYSTEM_TIME": "زمان سیستم"
+    "SYSTEM_TIME": "زمان سیستم",
+    "CONTACT_NAME": "نام تماس",
+    "CONTACT_PHONE": "تلفن تماس",
+    "RECALLME_CALL_REMINDER": "یادآوری تماس مرا Recall Me",
+    "SCHEDULED_TIME": "زمان برنامه ریزی شده",
+    "UPCOMING_RECALLME_CALL": "تماس بعدی Recall Me"
   }
 }
index 5f31762..59d46ce 100644 (file)
     "LIMIT_TABS_REACHED": "Avointen välilehtien enimmäismäärä saavutettu",
     "LIST_NAME": "Listanimi",
     "PREVIEW_CALL": "Esikatsele puhelu",
-    "PREVIEW_CALL_FOR": "Tuleva esikatselupyyntö",
-    "SCHEDULED_AT": "suunniteltu klo",
-    "SYSTEM_TIME": "järjestelmän aika"
+    "SYSTEM_TIME": "järjestelmän aika",
+    "CONTACT_NAME": "Yhteyshenkilön nimi",
+    "CONTACT_PHONE": "Yhteyspuhelinnumero",
+    "RECALLME_CALL_REMINDER": "Recall Me -soittomuistutus",
+    "SCHEDULED_TIME": "Sovittu aika",
+    "UPCOMING_RECALLME_CALL": "Tuleva Recall Me -puhelu"
   }
 }
index 6558717..40bf467 100644 (file)
     "LIMIT_TABS_REACHED": "Nombre maximum d'onglets ouverts atteint",
     "LIST_NAME": "Liste de noms",
     "PREVIEW_CALL": "Aperçu de l'appel",
-    "PREVIEW_CALL_FOR": "Appel de prévisualisation à venir pour",
-    "SCHEDULED_AT": "prévu à",
-    "SYSTEM_TIME": "Le temps du système"
+    "SYSTEM_TIME": "Le temps du système",
+    "CONTACT_NAME": "Nom du contact",
+    "CONTACT_PHONE": "Numéro du contact",
+    "RECALLME_CALL_REMINDER": "rappelez-moi rappel d'appel",
+    "SCHEDULED_TIME": "Heure prévue",
+    "UPCOMING_RECALLME_CALL": "Appel de rappel à venir"
   }
 }
index ec0c75f..fff6efe 100644 (file)
     "LIMIT_TABS_REACHED": "הגעת למספר המרבי של כרטיסיות פתוחות",
     "LIST_NAME": "רשימת שמות",
     "PREVIEW_CALL": "תצוגה מקדימה של שיחה",
-    "PREVIEW_CALL_FOR": "שיחת תצוגה מקדימה בקרוב עבור",
-    "SCHEDULED_AT": "מתוכנן ב",
-    "SYSTEM_TIME": "זמן מערכת"
+    "SYSTEM_TIME": "זמן מערכת",
+    "CONTACT_NAME": "שם איש קשר",
+    "CONTACT_PHONE": "טלפון ליצירת קשר",
+    "RECALLME_CALL_REMINDER": "תזכורת להתקשרות זכור לי",
+    "SCHEDULED_TIME": "זמן מתוכנן",
+    "UPCOMING_RECALLME_CALL": "שיחת Recall Me הקרובה"
   }
 }
index d257f5c..fa4b16a 100644 (file)
     "LIMIT_TABS_REACHED": "खुले टैब की अधिकतम संख्या तक पहुंच गया",
     "LIST_NAME": "सूची का नाम",
     "PREVIEW_CALL": "पूर्वावलोकन कॉल",
-    "PREVIEW_CALL_FOR": "आगामी पूर्वावलोकन कॉल",
-    "SCHEDULED_AT": "पर अनुसूचित",
-    "SYSTEM_TIME": "सिस्टम का समय"
+    "SYSTEM_TIME": "सिस्टम का समय",
+    "CONTACT_NAME": "संपर्क नाम",
+    "CONTACT_PHONE": "संपर्क फ़ोन",
+    "RECALLME_CALL_REMINDER": "रिकॉल मी कॉल रिमाइंडर",
+    "SCHEDULED_TIME": "निर्धारित समय",
+    "UPCOMING_RECALLME_CALL": "अपकमिंग रिकॉल मी कॉल"
   }
 }
index f43adc1..e6dc890 100644 (file)
     "LIMIT_TABS_REACHED": "Elérte a megnyitott lapok maximális számát",
     "LIST_NAME": "Lista név",
     "PREVIEW_CALL": "Hívás előnézete",
-    "PREVIEW_CALL_FOR": "Közelgő előnézeti felhívás",
-    "SCHEDULED_AT": "időpontra ütemezve",
     "SETFILTERS": "Szűrők beállítása",
-    "SYSTEM_TIME": "rendszeridő"
+    "SYSTEM_TIME": "rendszeridő",
+    "CONTACT_NAME": "Kapcsolattartó neve",
+    "CONTACT_PHONE": "Kapcsolat Telefon",
+    "RECALLME_CALL_REMINDER": "Recall Me hívás emlékeztető",
+    "SCHEDULED_TIME": "Menetrendszeri idő",
+    "UPCOMING_RECALLME_CALL": "Közelgő Recall Me hívás"
   }
 }
index f186bb7..a6dfab9 100644 (file)
     "LIMIT_TABS_REACHED": "Jumlah maksimum tab terbuka tercapai",
     "LIST_NAME": "Daftar nama",
     "PREVIEW_CALL": "Pratinjau panggilan",
-    "PREVIEW_CALL_FOR": "Panggilan pratinjau yang akan datang untuk",
-    "SCHEDULED_AT": "dijadwalkan pada",
-    "SYSTEM_TIME": "Waktu sistem"
+    "SYSTEM_TIME": "Waktu sistem",
+    "CONTACT_NAME": "Nama Kontak",
+    "CONTACT_PHONE": "Hubungi Telepon",
+    "RECALLME_CALL_REMINDER": "Ingatkan Saya pengingat panggilan",
+    "SCHEDULED_TIME": "Waktu yang dijadwalkan",
+    "UPCOMING_RECALLME_CALL": "Panggilan Recall Me yang akan datang"
   }
 }
index b888d0b..1fd5cad 100644 (file)
     "LIMIT_TABS_REACHED": "Numero massimo di tab aperti raggiunto",
     "LIST_NAME": "Lista nome",
     "PREVIEW_CALL": "Anteprima chiamata",
-    "PREVIEW_CALL_FOR": "Prossima chiamata in anteprima per",
-    "SCHEDULED_AT": "in programma alle"
+    "CONTACT_NAME": "Nome del contatto",
+    "CONTACT_PHONE": "Contatto telefonico",
+    "RECALLME_CALL_REMINDER": "Ricordami di chiamare il promemoria",
+    "SCHEDULED_TIME": "Orario pianificato",
+    "UPCOMING_RECALLME_CALL": "Prossima chiamata Richiamami"
   }
 }
index a12e5f2..7971add 100644 (file)
     "LIMIT_TABS_REACHED": "開いているタブの最大数に達しました",
     "LIST_NAME": "リスト名",
     "PREVIEW_CALL": "プレビュー通話",
-    "PREVIEW_CALL_FOR": "今後のプレビューコール",
-    "SCHEDULED_AT": "で予定",
-    "SYSTEM_TIME": "システム時刻"
+    "SYSTEM_TIME": "システム時刻",
+    "CONTACT_NAME": "連絡先",
+    "CONTACT_PHONE": "電話に連絡する",
+    "RECALLME_CALL_REMINDER": "リコールミーコールリマインダー",
+    "SCHEDULED_TIME": "予定時間",
+    "UPCOMING_RECALLME_CALL": "今後のリコールミーコール"
   }
 }
index eb85459..bfd643f 100644 (file)
     "LIMIT_TABS_REACHED": "열린 탭의 최대 수에 도달했습니다.",
     "LIST_NAME": "목록 이름",
     "PREVIEW_CALL": "통화 미리보기",
-    "PREVIEW_CALL_FOR": "예정된 미리보기 호출",
-    "SCHEDULED_AT": "예정된",
-    "SYSTEM_TIME": "시스템 시간"
+    "SYSTEM_TIME": "시스템 시간",
+    "CONTACT_NAME": "담당자 이름",
+    "CONTACT_PHONE": "연락 전화 번호",
+    "RECALLME_CALL_REMINDER": "나에게 전화 걸기 알림",
+    "SCHEDULED_TIME": "예정된 시간",
+    "UPCOMING_RECALLME_CALL": "리콜 미 콜 예정"
   }
 }
index 3129e5a..21fa3cd 100644 (file)
     "LIMIT_TABS_REACHED": "Pasiektas maksimalus atidarytų skirtukų skaičius",
     "LIST_NAME": "Sąrašo pavadinimas",
     "PREVIEW_CALL": "Peržiūrėti skambutį",
-    "PREVIEW_CALL_FOR": "Būsimas peržiūros skambutis",
-    "SCHEDULED_AT": "numatytas val",
-    "SYSTEM_TIME": "Sistemos laikas"
+    "SYSTEM_TIME": "Sistemos laikas",
+    "CONTACT_NAME": "Kontaktinis vardas",
+    "CONTACT_PHONE": "Kontaktinis Telefonas",
+    "RECALLME_CALL_REMINDER": "„Recall Me“ skambučio priminimas",
+    "SCHEDULED_TIME": "Numatytas laikas",
+    "UPCOMING_RECALLME_CALL": "Būsimas „Recall Me“ skambutis"
   }
 }
index 2550194..f70d78b 100644 (file)
     "LIMIT_TABS_REACHED": "Sasniegts maksimālais atvērto ciļņu skaits",
     "LIST_NAME": "Saraksta nosaukums",
     "PREVIEW_CALL": "Priekšskatīt zvanu",
-    "PREVIEW_CALL_FOR": "Gaidāmais priekšskatījuma aicinājums",
-    "SCHEDULED_AT": "plānots plkst",
-    "SYSTEM_TIME": "Sistēmas laiks"
+    "SYSTEM_TIME": "Sistēmas laiks",
+    "CONTACT_NAME": "Kontakta vārds",
+    "CONTACT_PHONE": "Kontakttālrunis",
+    "RECALLME_CALL_REMINDER": "Atgādināt man zvanu atgādinājums",
+    "SCHEDULED_TIME": "Plānotais laiks",
+    "UPCOMING_RECALLME_CALL": "Gaidāmais Recall Me zvans"
   }
 }
index 95af833..55e3cf9 100644 (file)
@@ -2,48 +2,48 @@
   "DASHBOARDS": {
     "HOME": "Home",
     "CHAT": "Chat",
-    "MAIL": "E-mail",
+    "MAIL": "Email",
     "SMS": "Sms",
-    "OPENCHANNEL": "Open Kanaal",
+    "OPENCHANNEL": "Open Channel",
     "FAX": "Fax",
-    "RATING": "Rating",
+    "RATING": "Waardering",
     "FEEDBACK": "Feedback",
     "SUBJECT": "Onderwerp",
-    "REFERER": "Referentie",
+    "REFERER": "Referer",
     "ACCOUNT": "Account",
     "WEBSITE": "Website",
     "AGENT": "Agent",
     "CREATED_AT": "Gemaakt op",
     "CLOSED_AT": "Gesloten",
-    "DISPOSITION": "Dispositie",
+    "DISPOSITION": "Afvoeren",
     "CONTACT": "Neem contact op met",
     "INTERACTION": "Interactie",
     "BROWSER_NAME": "Browsernaam",
     "BROWSER_VERSION": "Browserversie",
     "OS_NAME": "Naam besturingssysteem",
     "OS_VERSION": "Versie van besturingssysteem",
-    "DEVICE_MODEL": "Apparaat model",
+    "DEVICE_MODEL": "Apparaatmodel",
     "DEVICE_VENDOR": "Apparaat",
-    "DEVICE_TYPE": "Apparaat type",
-    "RECALLME": "Bel mij terug",
-    "DROP_RATE": "Wegvalpercentage",
+    "DEVICE_TYPE": "Apparaattype",
+    "RECALLME": "Recall Me",
+    "DROP_RATE": "Daalsnelheid",
     "DROPPED": "Weggevallen",
-    "DROPPED_TEXT": "Weggevallen wachtrij oproepen",
+    "DROPPED_TEXT": "Verbrede Wachtrij oproepen",
     "DETAIL": "Detail",
     "MOTION_BULL": "Motion Bull",
     "LIMITED": "Beperkt",
-    "LIMITED_TEXT": "Afkomst/limiet gesprekken afkomstig uit IVR-Campagnes",
+    "LIMITED_TEXT": "Campagnes afkomstige gesprekken/Limited",
     "DASHBOARDS": "Dashboards",
     "RECORDINGS": "Opnamen",
-    "TODAY_MOTION_BULL_STATS": "De Motion Bull stats. van vandaag",
+    "TODAY_MOTION_BULL_STATS": "Vandaag Motion Bull Stats",
     "ORIGINATED": "Oorsprong",
-    "ORIGINATED_TEXT": "Gesprekken afkomstig uit wachtrij",
+    "ORIGINATED_TEXT": "Wachtrij afkomstige gesprekken",
     "UPDATE": "Update",
     "MORE": "Meer",
     "MOTIONDIALER": "Motion Bull",
-    "DISPOSE": "Opruimen",
+    "DISPOSE": "Afvoeren",
     "QUEUES": "Wachtrijen",
-    "DIALER_CALL": "Dialer",
+    "DIALER_CALL": "Oproepen beller",
     "ELAPSED_TIME": "Verstreken tijd",
     "EDIT": "Bewerken",
     "MERGE": "Samenvoegen",
     "POSTALCODE": "Postcode",
     "CUSTOM_FIELDS": "Aangepaste velden",
     "GENERAL": "Algemeen",
-    "VOICE": "Telefonie",
-    "TODAY_IVR_CAMPAIGNS_STATS": "IVR-campagne Statistieken Van vandaag",
-    "TODAY_INBOUND_STATS": "Inkomende Statistieken (Wachtrij) Van Vandaag",
-    "TODAY_OUTBOUND_STATS": "Uitgaande Statistieken Van Vandaag ",
-    "WAITING": "Wachtend",
-    "TALKING": "In gesprek",
+    "VOICE": "Spraak",
+    "TODAY_IVR_CAMPAIGNS_STATS": "Vandaag Ivr campagnes Stats",
+    "TODAY_INBOUND_STATS": "Vandaag Inbound Stats",
+    "TODAY_OUTBOUND_STATS": "Vandaag Outbound Stats",
+    "WAITING": "Wachten",
+    "TALKING": "Spreken",
     "INBOUND_ANSWERED": "Beantwoord",
     "OUTBOUND_ANSWERED": "Beantwoord",
     "ABANDONED": "Verlaten",
-    "TOTAL_OFFERED": "Tot. aangeboden",
-    "AVG_HOLD_TIME": "Gem. wachttijd",
-    "INBOUND_ANSWER_RATE": "Antwoordpercentage",
-    "OUTBOUND_ANSWER_RATE": "Antwoordpercentage",
-    "ABANDON_RATE": "Verlatingspercentage",
-    "UNMANAGED": "Onbeheerd",
+    "TOTAL_OFFERED": "Totaal beschikbaar",
+    "AVG_HOLD_TIME": "Gemiddelde wachttijd",
+    "INBOUND_ANSWER_RATE": "Antwoord tarief",
+    "OUTBOUND_ANSWER_RATE": "Antwoord tarief",
+    "ABANDON_RATE": "Snelheid verlaten",
+    "UNMANAGED": "Onbeheerde",
     "TOTAL": "Totaal",
     "TOT_DURATION": "Totale duur",
     "AVG_DURATION": "Gemiddelde duur",
     "HELP": {
       "ORIGINATEDLIMITED": "Campagnes afkomstige gesprekken/Limited",
-      "DROPPED": "Het totale aantal weggevallen wachtrij oproepen, gezien alle gemaakte wachtrijen.",
-      "DROP_RATE": "Het wegvalpercentage van wachtrij oproepen",
-      "WAITING": "Het totale aantal wachtrij oproepen, gezien alle gemaakte wachtrijen",
+      "DROPPED": "Het totale aantal daalde wachtrij oproepen, gezien alle gemaakte wachtrijen.",
+      "DROP_RATE": "Om de terugvalsnelheid van de wachtrij oproepen",
+      "WAITING": "Het totale aantal Wachtrij oproepen, gezien alle gemaakte wachtrijen",
       "OUTBOUND_ANSWERED": "Het totale aantal voltooide uitgaande gesprekken",
-      "ABANDONED": "Het totale aantal verlaten wachtrij oproepen, gezien alle gemaakte wachtrijen. Oproepen die worden verlaten voor time-out en joinempty worden niet meegeteld bij deze waarde",
-      "TOTAL_OFFERED": "Het totale aantal aangeboden wachtrij oproepen (voltooide + verlaten). Gesprekken die eindigde in de IVR en niet in de wachtrij komen, worden niet meegeteld bij deze waarde",
-      "AVG_HOLD_TIME": "De gemiddelde wachttijd van de wachtrij, gemiddelde wachttijd van het gesprek voor het door een agent wordt beantwoord, gezien alle wachtrijen",
-      "OUTBOUND_ANSWER_RATE": "Het antwoordpercentage van van alle uitgaande oproepen",
-      "ABANDON_RATE": "Het verlatingspercentage van alle wachtrij oproepen",
+      "ABANDONED": "Het totale aantal verlaten oproepen wachtrij, gezien alle gemaakte wachtrijen. Merk op dat de oproepen die worden verlaten voor time-out en joinempty worden niet meegeteld bij deze waarde",
+      "TOTAL_OFFERED": "Het totale aantal oproepen wachtrij (voltooide verlaten). Merk op dat de gesprekken die eindigde in de IVR, zonder dat u in de wachtrij, worden niet meegeteld bij deze waarde",
+      "AVG_HOLD_TIME": "De gemiddelde wachtrij wachttijd, zijnde de gemiddelde tijd van het gesprek te wachten voor een agent wordt beantwoord, gezien alle wachtrijen",
+      "OUTBOUND_ANSWER_RATE": "Het antwoord van alle uitgaande oproepen",
+      "ABANDON_RATE": "De Snelheid verlaten van alle Oproepen wachtrij",
       "UNMANAGED": "Het totale aantal onbeheerde wachtrij oproepen, gezien alle gemaakte wachtrijen. Het bevat de oproepen die worden verlaten voor time-out, joinempty, leavewhenempty en exitwithkey",
       "TOTAL": "Het totale aantal uitgaande gesprekken",
       "TOT_DURATION": "De totale duur van alle uitgaande oproepen",
       "AVG_DURATION": "De gemiddelde duur van alle uitgaande oproepen",
-      "ORIGINATED": "Het totale aantal gesprekken uit de wachtrij",
-      "ABANDONED_RATE": "De verlatingsperentage van alle interacties",
-      "AVG_MANAGED_TIME": "De gemiddelde interactie tijd, de gemiddelde tijd doorgebracht tijdens een gesprek",
+      "ORIGINATED": "Het totale aantal gesprekken dat uit de wachtrij campagnes",
+      "ABANDONED_RATE": "De vertrekfrequentie van alle interacties",
+      "AVG_MANAGED_TIME": "De gemiddelde interactie Beheerde tijd, namelijk de gemiddelde tijd doorgebracht tijdens een gesprek",
       "MANAGED": "Het totale aantal voltooide interacties",
-      "MANAGED_RATE": "De beheerde afhandelingssnelheid van alle interacties",
+      "MANAGED_RATE": "De beheerde snelheid van alle interacties",
       "OPENED": "Het totale aantal actieve interacties",
-      "UNMANAGED_RATE": "De onbeheerde afhandelingssnelheid van alle interacties",
-      "VOICE_ABANDONED": "Het totale aantal verlaten wachtrij oproepen, rekening houdend met alle bestaande wachtrijen. Oproepen die worden verlaten wegens time-out en joinempty niet worden overwogen",
-      "VOICE_ANSWERED": "Het totale aantal voltooide wachtrij oproepen, voor alle bestaande wachtrijen",
-      "VOICE_ANSWER_RATE": "Het antwoordpercentage van alle wachtrij oproepen",
-      "VOICE_AVG_HOLD_TIME": "De gemiddelde wachttijd voor wachtrij oproepen, de gemiddelde besteden tijd bij het wachten op een agent, voor alle bestaande wachtrijen",
-      "VOICE_AVG_TALK_TIME": "De gemiddelde gespreksduur van wachtrij oproepen, namelijk de gemiddelde tijd die tijdens het gesprek is doorgebracht, voor alle bestaande wachtrijen",
-      "VOICE_TALKING": "Het totale aantal actieve wachtrij oproepen voor alle bestaande wachtrijen",
-      "VOICE_TOTAL_OFFERED": "Het totale aantal wachtrijgesprekken (voltooid + verlaten). Oproepen die binnenkomen in een IVR en niet uitkomen in een wachtrij, niet zullen worden beschouwd",
-      "VOICE_UNMANAGED": "Het totale aantal onbeheerde wachtrij oproepen, voor alle bestaande wachtrijen. Het bevat de oproepen die worden verlaten wegens time-out, joinempty, leavewhenempty en exitwithkey (zie asterisk-document voor meer informatie)",
-      "VOICE_WAITING": "Het totale aantal wachtende wachtrij oproepen, voor alle bestaande wachtrijen",
+      "UNMANAGED_RATE": "De onbeheerde snelheid van alle interacties",
+      "VOICE_ABANDONED": "Het totale aantal verlaten wachtrij-oproepen, rekening houdend met alle bestaande wachtrijen. Merk op dat de oproepen die worden verlaten wegens time-out en joinempty niet worden overwogen",
+      "VOICE_ANSWERED": "Het totale aantal voltooide wachtrij-oproepen, voor alle bestaande wachtrijen",
+      "VOICE_ANSWER_RATE": "Het antwoordpercentage van alle wachtrijsoproepen",
+      "VOICE_AVG_HOLD_TIME": "De wachttijd van de gemiddelde wachtrij, namelijk de gemiddelde tijd besteed aan het wachten op een agent om te antwoorden, voor alle bestaande wachtrijen",
+      "VOICE_AVG_TALK_TIME": "De gemiddelde wachttijd voor de wachtrij, namelijk de gemiddelde tijd die tijdens het gesprek is doorgebracht, voor alle bestaande wachtrijen",
+      "VOICE_TALKING": "Het totale aantal actieve wachtrij-oproepen voor alle bestaande wachtrijen",
+      "VOICE_TOTAL_OFFERED": "Het totale aantal wachtrijgesprekken (voltooid + verlaten). Merk op dat de oproepen die binnenkomen in een IVR en niet in een wachtrij, niet zullen worden beschouwd",
+      "VOICE_UNMANAGED": "Het totale aantal onbeheerde wachtrij-oproepen, voor alle bestaande wachtrijen. Het bevat de oproepen die worden verlaten wegens time-out, joinempty, leavewanneerempty en exitwithkey (zie asterisk-document voor meer informatie)",
+      "VOICE_WAITING": "Het totale aantal wachtende wachtrij-oproepen, voor alle bestaande wachtrijen",
       "MANDATORY_DISPOSITION_ENABLED": "Verplichte plaatsing ingeschakeld voor dit account",
       "EXACT_MATCH_FILTER": "Zoek naar een exacte overeenkomst",
       "LIKE_FILTER": "Zoek naar het opgegeven patroon"
     },
     "ERRORS": {
-      "FIRSTNAME_REQUIRED": "Verplicht veld",
-      "PHONE_REQUIRED": "Verplicht veld",
+      "FIRSTNAME_REQUIRED": "De Voornaam is verplicht",
+      "PHONE_REQUIRED": "Het telefoonnummer is verplicht",
       "DISPOSITION_REQUIRED": "Verplicht veld",
       "AGENT_REQUIRED": "Verplicht veld",
       "QUEUE_REQUIRED": "Verplicht veld",
     "ADD": "Toevoegen",
     "CONTACTMANAGER": "Contact Manager",
     "DASHBOARD": "Dashboard",
-    "EDIT_CONTACT": "Contactpersoon Bewerken",
+    "EDIT_CONTACT": "Contactpersoon bewerken",
     "EMAIL": "E-mail",
-    "FULLNAME": "Volledige naam",
+    "FULLNAME": "Fullname",
     "LIST": "Lijst",
-    "NEW_CONTACT": "Nieuw contactpersoon",
+    "NEW_CONTACT": "Nieuwe contactpersoon",
     "PHONE": "Telefoon",
     "SAVE": "Opslaan",
-    "INBOUND_WAITING_CALLS": "Inkomende oproepen in wachtstand",
+    "INBOUND_WAITING_CALLS": "Inkomende gesprekken in wachtstand",
     "CONTACTS": "Contactpersonen",
     "MYCONTACTS": "Mijn contactpersonen",
-    "ADD_CONTACT": "Contactpersoon Toevoegen",
-    "RELOAD": "Herladen",
+    "ADD_CONTACT": "Contactpersoon toevoegen",
+    "RELOAD": "Reload",
     "WAITING_TEXT": "Wachtrij oproepen",
     "TALKING_TEXT": "Actieve Wachtrij oproepen",
-    "INBOUND_ANSWERED_TEXT": "Beantwoorde wachtrij oproepen",
+    "INBOUND_ANSWERED_TEXT": "Beantwoord oproepen wachtrij",
     "ABANDONED_TEXT": "Wachtrij verlaten oproepen",
-    "DROP_RATE_TEXT": "Oproepen wachtrij wegvalsnelheid",
+    "DROP_RATE_TEXT": "Oproepen wachtrij daalsnelheid",
     "TOTAL_OFFERED_TEXT": "Totale gesprekken",
     "AVG_HOLD_TIME_TEXT": "Wachtrij gesprekken - Gem. tijd in wacht",
     "AVG_TALK_TIME_TEXT": "Wachtrij Spreektijd gesprekken",
-    "INBOUND_ANSWER_RATE_TEXT": "Antwoordpercentage wachtrij oproepen",
+    "INBOUND_ANSWER_RATE_TEXT": "Wachtrij oproepen beantwoorden tarief",
     "UNMANAGED_TEXT": "Onbeheerde Wachtrij oproepen",
     "TOTAL_TEXT": "Totaal uitgaande gesprekken",
     "OUTBOUND_ANSWERED_TEXT": "Uitgaande beantwoorde gesprekken",
     "OF": "Van",
     "REPLY_PLACEHOLDER": "Typ en druk op enter om een bericht te verzenden.",
     "CONTACT_INFO": "Contact Info",
-    "CLOSE_AND_DISPOSE": "Afronden",
-    "DISPOSITIONS": "Disposities",
+    "CLOSE_AND_DISPOSE": "Dicht en afvoeren",
+    "DISPOSITIONS": "Dispositions",
     "CLOSE_WITHOUT_DISPOSE": "Sluiten zonder lever",
     "ACCEPT": "Accepteren",
     "REJECT": "Afwijzen",
     "OPENED": "Open",
     "FILTER": "Filter",
     "SELECT_STATUS": "Selecteer Status.",
-    "SELECT_ACCOUNT": "Selecteren Account",
-    "SELECT_WEBSITE": "Selecteer Website",
+    "SELECT_ACCOUNT": "Account selecteren",
+    "SELECT_WEBSITE": "Selecteer website",
     "ALL": "Alle",
     "INTERACTIONS": "Interacties",
     "STARTEDAT": "Gestart op",
     "STATUS": "Status",
     "OPEN": "Open",
-    "SHOW": "Weergeven",
+    "SHOW": "Toon",
     "ME": "Me",
     "NOT_ASSIGNED": "Niet toegewezen",
     "UNKNOWN": "Onbekend",
     "LAST_MESSAGE": "Laatste bericht",
     "USER": "Gebruiker",
     "TAGS": "Tags",
-    "SELECT_TAG": "Selecteer Label",
+    "SELECT_TAG": "Selecteer label",
     "TYPE": "Type",
     "SOURCE": "Bron",
     "DESTINATION": "Bestemming",
     "CALLERID": "Beller-ID",
     "END_AT": "Eindigt op",
     "DURATION": "Duur",
-    "SHOW_DETAILS": "Details Weergeven",
-    "HIDE_DETAILS": "Details Verbergen",
+    "SHOW_DETAILS": "Details weergeven",
+    "HIDE_DETAILS": "Details verbergen",
     "EXTERNAL_URL": "Externe link",
     "SET_AS": "Instellen als",
     "PENDING": "In afwachting",
-    "CANNED_ANSWER_NOT_FOUND": "Geen standaard antwoorden gevonden",
-    "CANNED_ANSWER_SEARCH": "Voer een tekst in om te zoeken in een standaard antwoord",
+    "CANNED_ANSWER_NOT_FOUND": "Geen ingeblikte antwoorden gevonden",
+    "CANNED_ANSWER_SEARCH": "Voer een tekst te zoeken in een ingeblikt antwoord",
     "NO_MAIL_ACCOUNTS_AVAILABLE": "Geen e-mailaccounts beschikbaar",
     "NO_FAX_ACCOUNTS_AVAILABLE": "Geen Fax rekeningen beschikbaar",
     "NO_SMS_ACCOUNTS_AVAILABLE": "Geen SMS Accounts beschikbaar",
-    "FILTER_VOICE_QUEUES": "Filter voice wachtrijen",
+    "FILTER_VOICE_QUEUES": "Filter Voice Wachtrijen",
     "LOADING_INTERACTION": "We laden de interactie ...",
-    "JANUARY": "Januari",
-    "FEBRUARY": "Februari",
-    "MARCH": "Maart",
-    "APRIL": "April",
-    "MAY": "Mei",
-    "JUNE": "Juni",
-    "JULY": "Juli",
-    "AUGUST": "Augustus",
-    "SEPTEMBER": "September",
-    "OCTOBER": "Oktober",
-    "NOVEMBER": "November",
-    "DECEMBER": "December",
-    "MON": "Ma",
-    "TUE": "Di",
-    "WED": "Wo",
-    "THU": "Do",
-    "FRI": "Vr",
+    "JANUARY": "januari-",
+    "FEBRUARY": "februari",
+    "MARCH": "maart",
+    "APRIL": "april",
+    "MAY": "mei",
+    "JUNE": "juni-",
+    "JULY": "juli-",
+    "AUGUST": "augustus",
+    "SEPTEMBER": "september",
+    "OCTOBER": "oktober",
+    "NOVEMBER": "november",
+    "DECEMBER": "december",
+    "MON": "ma",
+    "TUE": "Din",
+    "WED": "trouwen",
+    "THU": "Don",
+    "FRI": "vr",
     "SAT": "Za",
-    "SUN": "Zo",
+    "SUN": "Zon",
     "DELETE": "Verwijder",
     "LAST_3_DAYS": "Laatste 3 dagen",
     "LAST_YEAR": "Afgelopen jaar",
     "YESTERDAY": "Gisteren",
     "TODAY": "Vandaag",
     "SELECT_DATE": "Selecteer Startdatum",
-    "SELECT_DATE_RANGE": "Selecteer Datumbereik",
-    "CLEAR": "Leegmaken",
-    "CALL_NUMBER": "Telefoonnummer",
-    "TRANSFER_NUMBER": "Overdrachtsnummer",
-    "CALL_SAVED": "Gesprek correct opgeslagen",
-    "CALL_DISPOSED": "Gesprec correct afgesloten",
-    "CHANNEL_WAITING_TEXT": "Wachtende interacties",
+    "SELECT_DATE_RANGE": "Selecteer datumbereik",
+    "CLEAR": "Duidelijk",
+    "CALL_NUMBER": "telefoontje",
+    "TRANSFER_NUMBER": "Overdracht",
+    "CALL_SAVED": "Bel correct opgeslagen",
+    "CALL_DISPOSED": "Roep op de juiste manier",
+    "CHANNEL_WAITING_TEXT": "Waiting Queue Interactions",
     "CHANNEL_QUEUE": "Wachtrij",
     "CHANNEL_FROM": "Van",
-    "MARK_AS_UNREAD": "Markeren als Ongelezen",
+    "MARK_AS_UNREAD": "markeren als ongelezen",
     "SELECT_AGENT": "Selecteer Agent",
     "READ": "Lezen",
-    "SELECT_READ_UNREAD": "Selecteer gelezen / ongelezen",
+    "SELECT_READ_UNREAD": "Selecteer Lezen / ongelezen",
     "SELECT_SUBSTATUS": "Selecteer Substatus",
     "UNREAD": "Ongelezen",
     "ABANDONAT": "Verlaten",
     "FREE": "Gratis",
     "LASTASSIGNEDTO": "Laatst toegewezen aan",
     "QUEUE": "Wachtrij",
-    "QUEUECALLEREXITAT": "Beller heeft wachtrij verlaten om",
+    "QUEUECALLEREXITAT": "Liet vallen",
     "QUEUECALLEREXITREASON": "Reden",
     "RESERVED": "Gereserveerd",
-    "SELECT_CAMPAIGN": "Selecteer een Wachtrij",
+    "SELECT_CAMPAIGN": "Selecteer een wachtrij",
     "ASSIGNTO": "Toewijzen",
-    "CLICKRELOAD": "Nieuwe verlaten oproepenu0021 Herladen alstublieft",
+    "CLICKRELOAD": "Nieuwe achtergelaten oproepen! Herladen alstublieft",
     "NOTAVAILABLE": "Niet beschikbaar",
     "CURRENTLY_IN_USE_BY": "Momenteel in gebruik door",
     "CUSTOMER_JOURNEY": "Customer Journey",
     "NO_DATA_AVAILABLE": "Geen gegevens beschikbaar",
-    "AGENTS": "Agenten",
+    "AGENTS": "agenten",
     "TRANSFER": "Overdracht",
     "NO_DISPOSITION_SET": "Geen dispositie ingesteld",
     "ABANDONED_RATE": "Verlaten tarief",
     "INTERACTION_CLOSED_DISPOSED": "Interactie correct gesloten en weggegooid",
     "INTERACTION_DISPOSED": "Interactie correct verwijderd",
     "ASSIGNED_TO_OTHERS": "Toegewezen aan anderen",
-    "SELECT_ALL": "Selecteer Alles",
+    "SELECT_ALL": "Selecteer alles",
     "CHAT_INTERACTIONS": "Chat interacties",
     "FAX_INTERACTIONS": "Fax interacties",
     "ID": "ID",
     "MAIL_INTERACTIONS": "E-mail interacties",
     "OPENCHANNEL_INTERACTIONS": "Open kanaal interacties",
     "SMS_INTERACTIONS": "SMS-interacties",
-    "CANCEL": "Annuleren",
+    "CANCEL": "annuleren",
     "DRAFT": "Droogte",
     "DRAFT_SAVE_WARNING_MESSAGE": "Er is al een concept opgeslagen voor deze interactie. Weet je zeker dat je het wilt overschrijven?",
     "DRAFT_SAVE_WARNING_TITLE": "Bestaand concept overschrijven?",
-    "OVERWRITE": "Overschrijven",
+    "OVERWRITE": "overschrijven",
     "SAVE_AS_DRAFT": "Opslaan als concept",
     "UNTITLED": "Ongetiteld",
-    "UPDATE_DRAFT": "Concept Bijwerken",
+    "UPDATE_DRAFT": "Concept bijwerken",
     "NO_AVAILABLE_INTERACTION": "Geen beschikbare interactie",
     "ACCOUNTINGDOC": "boekhouding",
-    "ADD_PRODUCTPRICELIST": "Product Toevoegen",
-    "AGENTFULLNAME": "Agent",
+    "ADD_PRODUCTPRICELIST": "PRODUCT TOEVOEGEN",
+    "AGENTFULLNAME": "Middel",
     "ALL_COMPANIES": "Alle bedrijven",
     "ALL_PRODUCTS": "Allemaal",
     "ALL_STATUS": "Allemaal",
     "CREDITNOTE": "KREDIET NOTA",
     "CREDITNOTEDETAILS": "Detail creditnota",
     "CREDITNOTE_INFO": "Credit Note",
-    "DELETE_PRODUCT": "Product Verwijderen",
+    "DELETE_PRODUCT": "Product verwijderen",
     "DEPOSIT": "STORTING",
     "DETAILS": "Details",
     "DISCOUNT": "Korting",
     "REQUESTNAME": "Verzoek naam",
     "REQUESTNOTES": "Verzoek om opmerkingen",
     "REQUEST_INFO": "Verzoek",
-    "SELECT_COMPANY": "Selecteer Bedrijf",
-    "SELECT_PERIOD": "Selecteer Bereik",
+    "SELECT_COMPANY": "Selecteer bedrijf",
+    "SELECT_PERIOD": "Selecteer bereik",
     "SELECT_PERIOD_CREATION": "Selecteer Aanmaakdatum",
     "SELECT_PERIOD_EXPIRE": "Selecteer Vervaldatum",
-    "SELECT_PERIOD_START": "Selecteer een Datum",
-    "SELECT_PRODUCT": "Selecteer Product",
-    "SELECT_PRODUCTTYPE": "Selecteer Type",
-    "SELECT_WORKFLOW": "Selecteer Workflow",
-    "SELECT_WORKFLOWSTEPS": "Selecteer Workflow stappen",
+    "SELECT_PERIOD_START": "Selecteer een datum",
+    "SELECT_PRODUCT": "Selecteer product",
+    "SELECT_PRODUCTTYPE": "Selecteer type",
+    "SELECT_WORKFLOW": "Selecteer workflow",
+    "SELECT_WORKFLOWSTEPS": "Selecteer Werkstroomstatus",
     "STARTDATE": "Factuur datum",
     "STATE": "Staat",
     "STEP": "Stap",
     "SUBSCRIPTIONDETAIL": "Detail",
     "SUBSCRIPTIONNAME": "Abonnement",
-    "SUBSCRIPTIONS": "Abonnementen",
+    "SUBSCRIPTIONS": "KLANTenschema",
     "TAX": "Belasting",
     "TO": "Naar",
     "TOTALPAYMENTS": "Totaal betalingen",
     "UPDATED_AT": "Gewijzigd op",
-    "UPDATE_PRODUCT": "Product Bijwerken",
+    "UPDATE_PRODUCT": "Product bijwerken",
     "WORKFLOW": "Selecteer workflow",
     "YEARS": "jaren",
     "CUSTOMER_IP": "Oorspronkelijk IP-adres",
     "IS_NOT_EQUAL": "Is niet gelijk aan",
     "MEET_ALL_CONDITIONS": "Voldoe aan alle voorwaarden",
     "MEET_ANY_CONDITIONS": "Voldoe aan minstens één voorwaarde",
-    "NEW_CONDITION": "nieuwe voorwaarden",
-    "SELECT_FIELD": "Selecteer Veld",
-    "SELECT_OPERATOR": "Selecteer Operator",
+    "NEW_CONDITION": "nieuwe conditie",
+    "SELECT_FIELD": "Selecteer veld",
+    "SELECT_OPERATOR": "Selecteer operator",
     "STARTING_DATE": "Begin datum",
     "STARTING_VALUE": "Startwaarde",
     "STARTS_WITH": "Begint met",
     "CHOOSE": "Kiezen",
     "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download zonder bijlagen",
     "DOWNLOAD_WITH_ATTACHMENTS": "Download met bijlagen",
-    "SELECT_QUEUE": "Selecteer een Wachtrij",
+    "SELECT_QUEUE": "Selecteer een wachtrij",
     "VIDAOOSESSION": "Start videogesprek",
     "WHATSAPP": "WhatsApp-aansluiting",
     "WHATSAPP_INTERACTIONS": "WhatsApp Connector-interacties",
     "MATCHING_FIELD": "Overeenkomend veld",
     "MULTIPLE_CONTACTS_FOUND": "Meerdere contacten gevonden voor nummer",
     "SELECT": "Selecteer",
-    "SELECT_CONTACT": "Selecteer Contact",
+    "SELECT_CONTACT": "Selecteer contact",
     "WHICH_ONE_TO_USE": "Welke wil je gebruiken?",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Geen Whatsapp-account beschikbaar",
     "SECOND_LEVEL_DISPOSITION": "Tweede niveau dispositie",
     "THIRD_LEVEL_DISPOSITION": "Dispositie op het derde niveau",
-    "LICENSE_EXPIRE_REMAINING_DAYS": "Uw licentie verloopt bijnau0021 Neem contact op met uw beheerder",
+    "LICENSE_EXPIRE_REMAINING_DAYS": "Uw licentie verloopt bijna! Neem contact op met uw beheerder",
     "CREATEDAT": "Gemaakt bij",
     "ELAPSED_ANSWERED": "Verstreken tijd sinds het gesprek is gestart",
     "ELAPSED_DISPOSED": "Verstreken tijd sinds het gesprek is beëindigd",
     "LOST_CONNECTION": "Problemen met netwerkconnectiviteit ervaren. Controleer uw internetverbinding.",
     "NO_RESULTS_AVAILABLE": "Geen resultaten beschikbaar",
-    "AUTOCLOSE": "Het contacttabblad automatisch sluiten na verwijdering",
+    "AUTOCLOSE": "Sluit het contacttabblad automatisch na verwijdering",
     "AGENT_PRESENCE": "Aanwezigheid van agent",
-    "SELECT_TEAM": "Selecteer Team",
+    "SELECT_TEAM": "Selecteer team",
     "AVAILABLE": "Beschikbaar",
     "CONFIRM": "Bevestigen",
     "FILTERS": "Filters",
     "LIMIT_TABS_REACHED": "Maximaal aantal geopende tabbladen bereikt",
     "LIST_NAME": "Lijstnaam",
     "PREVIEW_CALL": "Voorbeeldgesprek",
-    "PREVIEW_CALL_FOR": "Aankomende preview-oproep voor",
-    "SCHEDULED_AT": "gepland om",
-    "SYSTEM_TIME": "Systeemtijd"
+    "SYSTEM_TIME": "Systeemtijd",
+    "CONTACT_NAME": "contactnaam",
+    "CONTACT_PHONE": "Neem contact op met telefoon",
+    "RECALLME_CALL_REMINDER": "Herinner mij oproepherinnering",
+    "SCHEDULED_TIME": "Geplande tijd",
+    "UPCOMING_RECALLME_CALL": "Aankomende oproep voor terugroepactie"
   }
 }
index e4ec378..9d354d3 100644 (file)
     "LIMIT_TABS_REACHED": "Maksimalt antall åpne faner nådd",
     "LIST_NAME": "Liste navn",
     "PREVIEW_CALL": "Forhåndsvis samtale",
-    "PREVIEW_CALL_FOR": "Kommende forhåndsvisningssamtale for",
-    "SCHEDULED_AT": "planlagt kl",
-    "SYSTEM_TIME": "system tid"
+    "SYSTEM_TIME": "system tid",
+    "CONTACT_NAME": "kontakt navn",
+    "CONTACT_PHONE": "kontakt telefon",
+    "RECALLME_CALL_REMINDER": "Tilbakekall meg ringepåminnelse",
+    "SCHEDULED_TIME": "Planlagt tid",
+    "UPCOMING_RECALLME_CALL": "Kommende Recall Me-samtale"
   }
 }
index 9ec35e2..b032714 100644 (file)
     "LIMIT_TABS_REACHED": "Osiągnięto maksymalną liczbę otwartych kart",
     "LIST_NAME": "Nazwa listy",
     "PREVIEW_CALL": "Podgląd rozmowy",
-    "PREVIEW_CALL_FOR": "Nadchodzące wezwanie do podglądu",
-    "SCHEDULED_AT": "zaplanowane na",
-    "SYSTEM_TIME": "czas systemu"
+    "SYSTEM_TIME": "czas systemu",
+    "CONTACT_NAME": "Nazwa Kontaktu",
+    "CONTACT_PHONE": "telefon kontaktowy",
+    "RECALLME_CALL_REMINDER": "Przypomnij mi przypomnienie o połączeniu",
+    "SCHEDULED_TIME": "Zaplanowany czas",
+    "UPCOMING_RECALLME_CALL": "Nadchodzące połączenie Przypomnij mnie"
   }
 }
index 97d4f67..760ba7d 100644 (file)
     "LIMIT_TABS_REACHED": "Número máximo de guias abertas atingido",
     "LIST_NAME": "Lista de nomes",
     "PREVIEW_CALL": "Pré-visualizar chamada",
-    "PREVIEW_CALL_FOR": "Próxima chamada de pré-visualização para",
-    "SCHEDULED_AT": "agendado para",
-    "SYSTEM_TIME": "Hora do sistema"
+    "SYSTEM_TIME": "Hora do sistema",
+    "CONTACT_NAME": "Nome de contato",
+    "CONTACT_PHONE": "telefone de contato",
+    "RECALLME_CALL_REMINDER": "Lembrete de chamada de Recall Me",
+    "SCHEDULED_TIME": "Hora marcada",
+    "UPCOMING_RECALLME_CALL": "Próxima chamada de Recall Me"
   }
 }
index 37875f1..1931296 100644 (file)
     "LIMIT_TABS_REACHED": "Número máximo de guias abertas atingido",
     "LIST_NAME": "Lista de nomes",
     "PREVIEW_CALL": "Pré-visualizar chamada",
-    "PREVIEW_CALL_FOR": "Próxima chamada de pré-visualização para",
-    "SCHEDULED_AT": "agendado para",
-    "SYSTEM_TIME": "Hora do sistema"
+    "SYSTEM_TIME": "Hora do sistema",
+    "CONTACT_NAME": "Nome de contato",
+    "CONTACT_PHONE": "telefone de contato",
+    "RECALLME_CALL_REMINDER": "Lembrete de chamada de Recall Me",
+    "SCHEDULED_TIME": "Hora marcada",
+    "UPCOMING_RECALLME_CALL": "Próxima chamada de Recall Me"
   }
 }
index 1b95267..76debab 100644 (file)
     "LIMIT_TABS_REACHED": "Достигнуто максимальное количество открытых вкладок",
     "LIST_NAME": "Имя списка",
     "PREVIEW_CALL": "Предварительный просмотр звонка",
-    "PREVIEW_CALL_FOR": "Предстоящий предварительный просмотр для",
-    "SCHEDULED_AT": "запланировано на",
-    "SYSTEM_TIME": "Системное время"
+    "SYSTEM_TIME": "Системное время",
+    "CONTACT_NAME": "Контактное лицо",
+    "CONTACT_PHONE": "Контактный телефон",
+    "RECALLME_CALL_REMINDER": "Напомнить мне о звонке",
+    "SCHEDULED_TIME": "Запланированное время",
+    "UPCOMING_RECALLME_CALL": "Предстоящий вызов «Напомнить мне»"
   }
 }
index 369650c..cdc4504 100644 (file)
     "LIMIT_TABS_REACHED": "Maximalt antal öppna flikar har uppnåtts",
     "LIST_NAME": "Namnlista",
     "PREVIEW_CALL": "Förhandsgranska samtalet",
-    "PREVIEW_CALL_FOR": "Kommande förhandsvisningssamtal för",
-    "SCHEDULED_AT": "planerad kl",
-    "SYSTEM_TIME": "system tid"
+    "SYSTEM_TIME": "system tid",
+    "CONTACT_NAME": "Kontaktnamn",
+    "CONTACT_PHONE": "Kontakt Telefon",
+    "RECALLME_CALL_REMINDER": "Ring mig påminnelse",
+    "SCHEDULED_TIME": "Schemalagd tid",
+    "UPCOMING_RECALLME_CALL": "Kommande Recall Me-samtal"
   }
 }
index 46cca08..b5b8081 100644 (file)
     "LIMIT_TABS_REACHED": "Maksimum açık sekme sayısına ulaşıldı",
     "LIST_NAME": "Liste adı",
     "PREVIEW_CALL": "Önizleme araması",
-    "PREVIEW_CALL_FOR": "için yaklaşan önizleme çağrısı",
-    "SCHEDULED_AT": "planlanmış",
-    "SYSTEM_TIME": "Sistem zamanı"
+    "SYSTEM_TIME": "Sistem zamanı",
+    "CONTACT_NAME": "Kişi Adı",
+    "CONTACT_PHONE": "İletişim Telefonu",
+    "RECALLME_CALL_REMINDER": "Beni Hatırla çağrı hatırlatıcısı",
+    "SCHEDULED_TIME": "Planlanmış zaman",
+    "UPCOMING_RECALLME_CALL": "Yaklaşan Beni Geri Çağır araması"
   }
 }
index 1c48b38..4a3630d 100644 (file)
     "LIMIT_TABS_REACHED": "已达到打开选项卡的最大数量",
     "LIST_NAME": "列表名称",
     "PREVIEW_CALL": "预览通话",
-    "PREVIEW_CALL_FOR": "即将到来的预览电话",
-    "SCHEDULED_AT": "预定于",
-    "SYSTEM_TIME": "系统时间"
+    "SYSTEM_TIME": "系统时间",
+    "CONTACT_NAME": "联系人姓名",
+    "CONTACT_PHONE": "联系电话",
+    "RECALLME_CALL_REMINDER": "Recall Me 来电提醒",
+    "SCHEDULED_TIME": "计划的时间",
+    "UPCOMING_RECALLME_CALL": "即将到来的 Recall Me 电话"
   }
 }
index 512e13d..2d4380f 100644 (file)
     "LIMIT_TABS_REACHED": "已達到打開選項卡的最大數量",
     "LIST_NAME": "列表名稱",
     "PREVIEW_CALL": "預覽通話",
-    "PREVIEW_CALL_FOR": "即將到來的預覽電話",
-    "SCHEDULED_AT": "預定於",
-    "SYSTEM_TIME": "系統時間"
+    "SYSTEM_TIME": "系統時間",
+    "CONTACT_NAME": "聯繫人姓名",
+    "CONTACT_PHONE": "聯繫電話",
+    "RECALLME_CALL_REMINDER": "Recall Me 來電提醒",
+    "SCHEDULED_TIME": "計劃的時間",
+    "UPCOMING_RECALLME_CALL": "即將到來的 Recall Me 電話"
   }
 }
index d1303ac..e63ae66 100644 (file)
@@ -1,88 +1,88 @@
 {
   "FAX": {
-    "TEAMADD_FAXQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_FAXQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "TEAMADD_FAXQUEUE": "Team zur Faxwarteschlange hinzufügen",
+    "AGENTADD_FAXQUEUE": "Agent Fax Warteschlange hinzufügen",
     "NAME": "Name",
-    "FAXQUEUES": "Fax-Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "FAXQUEUES": "Fax Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "ERRORS": {
-      "NAME_REQUIRED": "Name erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Zeitüberschreitung Agent erforderlich",
-      "MOTIONADDRESS_REQUIRED": "Adresse erforderlich",
-      "MOTIONADDRESS_MUST_VALID_URL": "Ungültiges Format Adresse",
-      "LOCALSTATIONID_REQUIRED": "Lokale Nebenstelle erforderlich",
-      "MODEM_REQUIRED": "Modem/Fax-Adapter erforderlich",
-      "GATEWAY_REQUIRED": "Gateway erforderlich",
-      "FAXDETECT_REQUIRED": "FAX-Erkennung erforderlich",
-      "T38TIMEOUT_REQUIRED": "T.38-Timeout erforderlich",
-      "TIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
-      "HEADERINFO_REQUIRED": "Kopfzeile erforderlich",
-      "TRUNK_REQUIRED": "Trunk erforderlich",
-      "LIST_REQUIRED": "Liste erforderlich",
-      "KEY_MAX_LENGTH": "Wert darf nicht länger als {{max}} Zeichen sein",
-      "KEY_REQUIRED": "Schlüssel erforderlich",
-      "AGENT_REQUIRED": "Agent erforderlich",
-      "QUEUE_REQUIRED": "Warteschlange erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Priorität bei zutreffender Bedingung erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Priorität bei nicht zutreffender Bedingung erforderlich",
-      "CONDITION_REQUIRED": "Bedingung erforderlich",
-      "PRIORITY_REQUIRED": "Priorität erforderlich",
-      "DISPOSITION_REQUIRED": "Qualifizierung erforderlich",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität muss größer oder gleich sein als",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität bei Bedingung erfüllt muss größer oder gleich sein als",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität bei Bedingung nicht erfüllt muss größer oder gleich sein als",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
-      "TEXT_MAX_LENGTH": "Wert darf nicht länger als {{max}} Zeichen sein",
-      "TEXT_REQUIRED": "Text erforderlich",
-      "VALUE_REQUIRED": "Wert erforderlich",
-      "COMMAND_REQUIRED": "Eingabe erforderlich",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "NAME_MUST_VALID_PATTERN": "Ungültiges Format Name",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Agent muss kleiner oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Auf zugewiesenen Agenten warten erforderlich",
-      "TAG_REQUIRED": "Tag erforderlich",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung Agententransfer erforderlich",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung Warteschlangentransfer erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "PausenID während Qualifizierung erforderlich"
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
+      "MOTIONADDRESS_REQUIRED": "Die Adresse ist erforderlich",
+      "MOTIONADDRESS_MUST_VALID_URL": "Die Adresse muss in einem gültigen Format",
+      "LOCALSTATIONID_REQUIRED": "Die lokale Station-ID ist erforderlich",
+      "MODEM_REQUIRED": "Das Modem erforderlich.",
+      "GATEWAY_REQUIRED": "Das Gateway ist erforderlich",
+      "FAXDETECT_REQUIRED": "Die FAX Erkennung erforderlich ist",
+      "T38TIMEOUT_REQUIRED": "Die T.38-Timeout ist erforderlich",
+      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
+      "HEADERINFO_REQUIRED": "Die Information in der Kopfzeile sind erforderlich",
+      "TRUNK_REQUIRED": "Der Stamm ist erforderlich",
+      "LIST_REQUIRED": "Die Liste ist erforderlich",
+      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
+      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
+      "AGENT_REQUIRED": "Pflichtfeld",
+      "QUEUE_REQUIRED": "Pflichtfeld",
+      "TRUEPRIORITY_REQUIRED": "Pflichtfeld",
+      "FALSEPRIORITY_REQUIRED": "Pflichtfeld",
+      "CONDITION_REQUIRED": "Pflichtfeld",
+      "PRIORITY_REQUIRED": "Pflichtfeld",
+      "DISPOSITION_REQUIRED": "Pflichtfeld",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "TEXT_REQUIRED": "Pflichtfeld",
+      "VALUE_REQUIRED": "Pflichtfeld",
+      "COMMAND_REQUIRED": "Pflichtfeld",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "NAME_MUST_VALID_PATTERN": "Falsches Format",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
+      "TAG_REQUIRED": "Pflichtfeld",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Sie sollten einen Pausenstatus angeben, wenn Sie eine Zwangsdisposition haben"
     },
-    "STRATEGY": "Verteilungsstrategie",
-    "AGENT_TIMEOUT": "Zeitüberschreitung Agent",
+    "STRATEGY": "Strategie",
+    "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "ADD_FAXQUEUE": "Fax-Warteschlange hinzufügen",
-    "EDIT_FAXQUEUE": "Fax-Warteschlange bearbeiten",
-    "DELETE_FAXQUEUE": "Fax-Warteschlange löschen",
+    "ADD_FAXQUEUE": "Warteschlange hinzufügen Fax",
+    "EDIT_FAXQUEUE": "Bearbeiten Fax Warteschlange",
+    "DELETE_FAXQUEUE": "Fax Löschen der Warteschlange",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
-    "FAXACCOUNTS": "Fax-Konten",
+    "FAXACCOUNTS": "Fax Konten",
     "MOTIONADDRESS": "Motion Adresse",
-    "ADD_FAXACCOUNT": "Fax-Konto hinzufügen",
-    "EDIT_FAXACCOUNT": "Fax-Konto bearbeiten",
-    "DELETE_FAXACCOUNT": "Fax-Konto löschen",
-    "DISPOSITIONS": "Bedingungen",
+    "ADD_FAXACCOUNT": "Fax Konto hinzufügen",
+    "EDIT_FAXACCOUNT": "Fax Konto bearbeiten",
+    "DELETE_FAXACCOUNT": "Fax Konto löschen.",
+    "DISPOSITIONS": "Bestimmungen",
     "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Routing",
+    "ACTIONS": "Aktionen",
     "LIST": "Liste",
     "FIDELITY": "Treue",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Die Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen und Qualifizieren",
-    "CLOSEMETHOD": "Methode schließen",
-    "CLOSEURL": "URL schließen",
-    "TRUNK": "SIP-Trunk",
-    "LOCALSTATIONID": "ID lokale Nebenstelle",
+    "CLOSE": "In der Nähe",
+    "CLOSEMETHOD": "In der Nähe Methode",
+    "CLOSEURL": "Der URL",
+    "TRUNK": "Amtsleitung",
+    "LOCALSTATIONID": "Lokale Station Identifier",
     "HELP": {
       "LOCALSTATIONID": "Lokale Station Identifier (Telefonnummer).",
       "HEADERINFO": "Ausgehende Faxkopfzeile.",
       "MINRATE": "Minimale Übertragungsrate eingestellt, bevor das Getriebe. Mögliche Werte sind: 2400, 4800, 7200, 9600, 12000 oder 14400.",
       "MAXRATE": "Maximale Übertragungsrate eingestellt, bevor das Getriebe. Mögliche Werte sind: 2400, 4800, 7200, 9600, 12000 oder 14400.",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus während der Qualifizierung"
+      "MANDATORYDISPOSITION": "Zwingende Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Status für Zwangsdisposition anhalten"
     },
-    "ADVANCED": "Erweitert",
+    "ADVANCED": "Erweiterte",
     "ECM": "ECM",
     "MINRATE": "Min. Geschwindigkeit",
     "MAXRATE": "Max. Geschwindigkeit",
     "GATEWAY": "Gateway",
     "FAXDETECT": "Fax Erkennung",
     "T38TIMEOUT": "T.38-Timeout",
-    "SIP": "SIP",
+    "SIP": "Technologie",
     "HEADERINFO": "Header-info",
-    "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECTED": "Ausgewählte",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "FAX": "Fax",
-    "ID": "ID",
-    "TIMEOUT": "Zeitüberschreitung",
-    "FAXDISPOSITIONS": "Qualifizierung",
-    "NO_FAXDISPOSITION_AVAILABLE": "Keine Qualifizierung verfügbar",
-    "NEW_FAXDISPOSITION": "Neue Qualifizierung",
-    "ADD_FAXDISPOSITION": "Qualifizierung hinzufügen",
-    "EDIT_FAXDISPOSITION": "Qualifizierung bearbeiten",
-    "DELETE_FAXDISPOSITION": "Qualifizierung löschen",
+    "ID": "Id",
+    "TIMEOUT": "Timeout",
+    "FAXDISPOSITIONS": "Fax Disposition",
+    "NO_FAXDISPOSITION_AVAILABLE": "Kein Fax Dispositionen verfügbar",
+    "NEW_FAXDISPOSITION": "Neue Fax Disposition",
+    "ADD_FAXDISPOSITION": "Fax Disposition hinzufügen",
+    "EDIT_FAXDISPOSITION": "Fax Disposition bearbeiten",
+    "DELETE_FAXDISPOSITION": "Fax Disposition löschen",
     "NEW_FAXQUEUE": "Neue Warteschlange",
-    "NEW_FAXACCOUNT": "Neues Fax-Konto",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "ALL_TEAMS": "Alle Teams",
+    "NEW_FAXACCOUNT": "Neue Fax Konto",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "DELETE": "Löschen",
     "KEY": "Schlüssel",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "FILTER": "Filter",
     "SELECT_STATUS": "Status auswählen",
-    "ALL": "Alles",
+    "ALL": "Alle",
     "CLOSED": "Geschlossen",
-    "OPENED": "Offen",
+    "OPENED": "Geöffnet",
     "SELECT_ACCOUNT": "Konto auswählen",
-    "INTERACTIONS": "Interaktionen",
+    "INTERACTIONS": "Wechselwirkungen",
     "CONTACT": "Kontakt",
     "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "ACCOUNT": "Konto",
-    "GOTO_FAXACCOUNT": "Direkt zur Echtzeit-Warteschlange",
+    "GOTO_FAXACCOUNT": "In Echtzeit, Faxgerät",
     "ACCOUNTS": "Konten",
-    "GOTOREALTIME_FAXACCOUNT": "Direkt zur Echtzeitansicht Fax-Konten",
+    "GOTOREALTIME_FAXACCOUNT": "In Echtzeit, Faxgerät",
     "TRUNK_STATUS": "Trunk Status",
-    "TRUNKS": "SIP-Trunks",
+    "TRUNKS": "Amtsleitungen",
     "REGISTRY": "Registrierung",
-    "NO_REGISTRY": "Nicht registriert",
+    "NO_REGISTRY": "Keine Registry",
     "PAUSE": "Pause",
-    "INFO": "Informationen",
-    "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
-    "PHONE_STATE": "Statis Nebenstelle",
-    "PHONE_STATUS": "SIP-Status Nebenstelle",
+    "INFO": "Info",
+    "FULLNAME": "Fullname",
+    "INTERNAL": "Interne",
+    "PHONE_STATE": "Telefonstatus",
+    "PHONE_STATUS": "Telefonstatus",
     "LOGOUT": "An-/Abmelden",
-    "DEFAULT_PAUSE": "Standardpause",
-    "AGENTADD_QUEUE": "Agent zur Warteschlange hinzufügen",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "UNPAUSE": "Pause abbrechen",
+    "DEFAULT_PAUSE": "Standard Pause",
+    "AGENTADD_QUEUE": "Agent Fax Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zu Fax Warteschlange hinzufügen",
+    "UNPAUSE": "Pause",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
     "LOGGED_IN": "Angemeldet",
-    "PAUSED": "in Pause",
+    "PAUSED": "Angehalten",
     "READY": "Bereit",
     "WAITING": "Warten",
     "PRIORITY": "Priorität",
-    "CONDITION": "Bedingung",
-    "TRUEPRIORITY": "Priorität, wenn erfüllt (true)",
-    "FALSEPRIORITY": "Priorität, wenn nicht erfüllt (false)",
+    "CONDITION": "Zustand",
+    "TRUEPRIORITY": "Wahre Priorität",
+    "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
-    "EDIT_AGENT": "Agenten bearbeiten",
-    "EDIT_GOTO": "\"GeheZu\" bearbeiten",
-    "EDIT_NOOP": "Log-Erstellung bearbeiten",
-    "EDIT_GOTOP": "GoToP bearbeiten",
-    "EDIT_GOTOIF": "Bedingung bearbeiten und Priorität zuweisen",
-    "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "EDIT_CLOSE": "Verhalten bei Schließen bearbeiten",
+    "EDIT_AGENT": "Agent bearbeiten",
+    "EDIT_GOTO": "Bearbeiten Gehe zu",
+    "EDIT_NOOP": "Bearbeiten Noop",
+    "EDIT_GOTOP": "GotoP bearbeiten",
+    "EDIT_GOTOIF": "Bearbeiten GotoIf",
+    "EDIT_QUEUE": "Fax Warteschlange bearbeiten",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
     "QUEUE": "Warteschlange",
-    "GOTOIF": "GeheZuWenn (GoToIf)",
-    "GOTOP": "Priorität zuweisen (GoToP)",
-    "NOOP": "Log erstellen (NoOp)",
+    "GOTOIF": "GotoIf",
+    "GOTOP": "GotoP",
+    "NOOP": "Noop",
     "AGENT": "Agent",
-    "NOTES": "Anmerkungen",
-    "CLOSEDAT": "Geschlossen am",
-    "DISPOSITION": "Qualifizierung",
+    "NOTES": "Hinweise",
+    "CLOSEDAT": "Geschlossen",
+    "DISPOSITION": "Disposition",
     "REALTIME": "Echtzeit",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
-    "VOICE": "Anrufe",
+    "IN_USE": "Im Einsatz",
+    "VOICE": "Voice",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_FAXQUEUE": "Zur Echtzeitansicht Warteschlange",
-    "EDIT_TRUNK": "Trunk bearbeiten",
+    "GOTOREALTIME_FAXQUEUE": "In Echtzeit Fax Warteschlange",
+    "EDIT_TRUNK": "Bearbeiten Trunk",
     "REGISTERED": "Registriert",
-    "EDIT_ACCOUNT": "Fax-Konto bearbeiten",
-    "PARTIALPAUSE": "Teilpause",
+    "EDIT_ACCOUNT": "Fax Konto bearbeiten",
+    "PARTIALPAUSE": "Teilweise Pause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
-    "TOTAL": "Gesamt",
-    "IN": "Eingehend",
-    "OUT": "Ausgehend",
-    "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
+    "TOTAL": "Insgesamt",
+    "IN": "In",
+    "OUT": "Aus",
+    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
     "TAGS": "Tags",
     "REPLY": "Antwort",
     "SEND": "Senden",
-    "TO": "An",
+    "TO": "Zu",
     "FROM": "Von",
-    "INTERACTIONS_FAXACCOUNT": "Direkt zu den Interaktionen",
-    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "NO_FAXCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NEW_FAXCANNEDANSWER": "Neue Textvorlage",
-    "ADD_FAXCANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_CHATCANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_CHATCANNEDANSWER": "Textvorlage löschen",
-    "SPYINTERACTION": "Anzeigen",
+    "INTERACTIONS_FAXACCOUNT": "Zu Wechselwirkungen gehen",
+    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
+    "NO_FAXCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
+    "NEW_FAXCANNEDANSWER": "Neue vordefinierte Antwort",
+    "ADD_FAXCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_CHATCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "DELETE_CHATCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "SPYINTERACTION": "Spion",
     "DELETE_INTERACTION": "Interaktion löschen",
-    "COMMAND": "Eingabe",
+    "COMMAND": "Befehl",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
-    "VARIABLE": "Variabel",
+    "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Sound abspielen",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klingen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "WAITFORTHEASSIGNEDAGENT": "Auf zugewiesenen Agenten warten",
+    "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Tag",
-    "AGENTADD_FAXACCOUNT": "Agenten zum Fax-Konto hinzufügen",
-    "AGENTTRANSFER": "Transfer an Agenten erlauben",
+    "TAG": "Etikett",
+    "AGENTADD_FAXACCOUNT": "Fügen Sie dem Faxkonto einen Agenten hinzu",
+    "AGENTTRANSFER": "Agent Transfer",
     "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "QUEUETRANSFER": "Transfer in Warteschlange erlauben",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFERTIMEOUT": "Warteschlangenübertragungs-Timeout",
     "TRANSFER": "Transfer",
-    "CANNEDANSWERS": "Textvorlagen",
-    "DOWNLOAD_INTERACTION": "Interaktion herunterladen",
-    "FAXCANNEDANSWERS": "Textvorlagen für Fax",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "PausenID während Qualifizierung",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschiemaufzeichnung verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "DOWNLOAD_INTERACTION": "Herunterladen",
+    "FAXCANNEDANSWERS": "Vordefinierte Antworten",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Zwingende Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Status pausieren, wenn die Disposition obligatorisch ist",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
     "LASTMESSAGE": "Letzte Nachricht"
   }
 }
index 5eed611..1bff537 100644 (file)
@@ -1,26 +1,26 @@
 {
   "FAX": {
-    "TEAMADD_FAXQUEUE": "Team aan Fax wachtrij Toevoegen",
-    "AGENTADD_FAXQUEUE": "Agent aan Fax wachtrij Toevoegen",
+    "TEAMADD_FAXQUEUE": "Voeg Team Fax wachtrij",
+    "AGENTADD_FAXQUEUE": "Voeg Agent Fax wachtrij",
     "NAME": "Naam",
     "FAXQUEUES": "Faxwachtrijen",
-    "SEARCH_FOR_ANYONE": "Zoeken",
+    "SEARCH_FOR_ANYONE": "Zoeken voor iedereen",
     "ERRORS": {
-      "NAME_REQUIRED": "Verplicht veld",
-      "AGENT_TIMEOUT_REQUIRED": "Verplicht veld",
-      "MOTIONADDRESS_REQUIRED": "Verplicht veld",
-      "MOTIONADDRESS_MUST_VALID_URL": "Verplicht veld",
-      "LOCALSTATIONID_REQUIRED": "Verplicht veld",
-      "MODEM_REQUIRED": "Verplicht veld",
-      "GATEWAY_REQUIRED": "Verplicht veld",
-      "FAXDETECT_REQUIRED": "Verplicht veld",
-      "T38TIMEOUT_REQUIRED": "Verplicht veld",
-      "TIMEOUT_REQUIRED": "Verplicht veld",
-      "HEADERINFO_REQUIRED": "Verplicht veld",
-      "TRUNK_REQUIRED": "Verplicht veld",
-      "LIST_REQUIRED": "Verplicht veld",
+      "NAME_REQUIRED": "De naam is verplicht",
+      "AGENT_TIMEOUT_REQUIRED": "De Agent Timeout is vereist",
+      "MOTIONADDRESS_REQUIRED": "De Motion Adres is vereist.",
+      "MOTIONADDRESS_MUST_VALID_URL": "De Motion adres moet worden geschreven in een geldige indeling",
+      "LOCALSTATIONID_REQUIRED": "Het lokale station-id is vereist",
+      "MODEM_REQUIRED": "De modem vereist.",
+      "GATEWAY_REQUIRED": "De gateway is vereist",
+      "FAXDETECT_REQUIRED": "De Fax detectie is vereist",
+      "T38TIMEOUT_REQUIRED": "Het T.38 Timeout is vereist",
+      "TIMEOUT_REQUIRED": "De timeout is vereist",
+      "HEADERINFO_REQUIRED": "De header info zijn vereist",
+      "TRUNK_REQUIRED": "De kofferruimte is vereist",
+      "LIST_REQUIRED": "De lijst is vereist",
       "KEY_MAX_LENGTH": "Sleutel moet een lengte gelijk aan {{max.}}",
-      "KEY_REQUIRED": "Verplicht veld",
+      "KEY_REQUIRED": "De sleutel is vereist",
       "AGENT_REQUIRED": "Verplicht veld",
       "QUEUE_REQUIRED": "Verplicht veld",
       "TRUEPRIORITY_REQUIRED": "Verplicht veld",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "U moet een pauzestatus opgeven wanneer u zich in een verplichte opstelling bevindt"
     },
     "STRATEGY": "Strategie",
-    "AGENT_TIMEOUT": "Time-out Agent",
+    "AGENT_TIMEOUT": "Time-out agent",
     "DESCRIPTION": "Beschrijving",
-    "ADD_FAXQUEUE": "Fax Wachtrij Toevoegen",
-    "EDIT_FAXQUEUE": "Fax Wachtrij Bewerken",
-    "DELETE_FAXQUEUE": "Fax Wachtrij Verwijderen",
+    "ADD_FAXQUEUE": "Voeg Fax wachtrij",
+    "EDIT_FAXQUEUE": "Edit Fax wachtrij",
+    "DELETE_FAXQUEUE": "Verwijder Fax wachtrij",
     "CREATED_AT": "Gemaakt op",
     "SAVE": "Opslaan",
     "SETTINGS": "Instellingen",
     "GENERAL": "Algemeen",
     "FAXACCOUNTS": "Fax Accounts",
-    "MOTIONADDRESS": "Motion Adres",
-    "ADD_FAXACCOUNT": "Fax Account Toevoegen",
-    "EDIT_FAXACCOUNT": "Fax Account Bewerken",
-    "DELETE_FAXACCOUNT": "Fax Account Verwijderen",
+    "MOTIONADDRESS": "Motion adres",
+    "ADD_FAXACCOUNT": "Voeg Fax Account",
+    "EDIT_FAXACCOUNT": "Edit Fax Account",
+    "DELETE_FAXACCOUNT": "Verwijder Fax Account",
     "DISPOSITIONS": "Dispositions",
     "WEBHOOKS": "WebHooks",
     "ACTIONS": "Acties",
     "LIST": "Lijst",
     "FIDELITY": "Hifi-geluid",
     "ACCEPT": "Accepteren",
-    "ACCEPTMETHOD": "Mehode Accepteren",
-    "ACCEPTURL": "URL Sccepteren",
+    "ACCEPTMETHOD": "Accepteren methode",
+    "ACCEPTURL": "URL accepteren",
     "REJECT": "Afwijzen",
     "REJECTMETHOD": "Methode afwijzen",
     "REJECTURL": "URL afwijzen",
     "CLOSE": "Dicht",
-    "CLOSEMETHOD": "Methode Sluiten",
-    "CLOSEURL": "URL Sluiten",
-    "TRUNK": "Trunk",
+    "CLOSEMETHOD": "Sluit methode",
+    "CLOSEURL": "Sluit URL",
+    "TRUNK": "Transmissielijn",
     "LOCALSTATIONID": "Lokaal station Identifier",
     "HELP": {
       "LOCALSTATIONID": "Lokaal station Identifier (telefoonnummer).",
       "FAXDETECT": "Fax inschakelen detectie met optionele timeout in seconden (ja/t38/CNG/[out]/NO).",
       "T38TIMEOUT": "De time-out wordt gebruikt voor T.38 onderhandeling. De minimumwaarde is 1000.",
       "ECM": "Fout Connection Mode (ECM).",
-      "MINRATE": "Min overdrachtssnelheid instellen. Mogelijke waarden zijn: 2400, 4800, 7200, 9600, 12000 of 14400.",
+      "MINRATE": "Min overdrachtssnelheid instellen voordat de versnellingsbak. Mogelijke waarden zijn: 2400, 4800, 7200, 9600, 12000 of 14400.",
       "MAXRATE": "Maximale overdrachtsnelheid ingesteld voor verzending. Mogelijke waarden zijn: 2400, 4800, 7200, 9600, 12000 of 14400.",
       "NAME": "Alleen cijfers, letters en speciale tekens (_) worden ondersteund",
       "MANDATORYDISPOSITION": "Verplichte regeling",
-      "MANDATORYDISPOSITIONPAUSEID": "Pauzestatus voor verplichte Dispositie"
+      "MANDATORYDISPOSITIONPAUSEID": "Pauzestatus voor verplichte dispositie"
     },
     "ADVANCED": "Geavanceerd",
     "ECM": "ECM",
     "SIP": "Technologie",
     "HEADERINFO": "Header Info",
     "SELECTED": "Geselecteerd",
-    "SELECT_ALL": "Selecteer Alles",
-    "SELECT_NONE": "Selecteer Geen",
+    "SELECT_ALL": "Alles selecteren",
+    "SELECT_NONE": "Selecteer None (Geen).",
     "BACK": "Terug",
     "FAX": "Fax",
     "ID": "Id",
     "TIMEOUT": "Timeout",
-    "FAXDISPOSITIONS": "Fax Disposities",
-    "NO_FAXDISPOSITION_AVAILABLE": "Geen Fax Disposities beschikbaar",
-    "NEW_FAXDISPOSITION": "Nieuwe Fax Dispositie",
+    "FAXDISPOSITIONS": "Fax dispositieven",
+    "NO_FAXDISPOSITION_AVAILABLE": "Geen Fax Dispositieven beschikbaar",
+    "NEW_FAXDISPOSITION": "Nieuwe fax dispositie",
     "ADD_FAXDISPOSITION": "Voeg Fax dispositie",
-    "EDIT_FAXDISPOSITION": "Edit Fax Dispositie",
-    "DELETE_FAXDISPOSITION": "Verwijder Fax Dispositie",
-    "NEW_FAXQUEUE": "Nieuwe Fax Wachtrij",
-    "NEW_FAXACCOUNT": "Nieuw Fax Account",
+    "EDIT_FAXDISPOSITION": "Edit Fax dispositie",
+    "DELETE_FAXDISPOSITION": "Verwijder Fax dispositie",
+    "NEW_FAXQUEUE": "Nieuwe fax wachtrij",
+    "NEW_FAXACCOUNT": "Nieuwe fax Account",
     "NO_AVAILABLE_INFO": "Geen beschikbare informatie",
-    "ALL_TEAMS": "Alle Teams",
-    "SELECTED_TEAMS": "Geselecteerde Teams",
+    "ALL_TEAMS": "Alle teams",
+    "SELECTED_TEAMS": "Geselecteerde teams",
     "PAGE": "Pagina",
     "ROWSPERPAGE": "Rijen per pagina",
     "OF": "Van",
     "DELETE": "Verwijderen",
     "KEY": "Sleutel",
     "ALL_AGENTS": "Alle gebruikers zijn agenten",
-    "SELECTED_AGENTS": "Geselecteerde Agenten",
+    "SELECTED_AGENTS": "Geselecteerde agenten",
     "FILTER": "Filter",
     "SELECT_STATUS": "Selecteer Status.",
     "ALL": "Alle",
     "CLOSED": "Gesloten",
     "OPENED": "Geopend",
-    "SELECT_ACCOUNT": "Selecteer Account",
+    "SELECT_ACCOUNT": "Account selecteren",
     "INTERACTIONS": "Interacties",
     "CONTACT": "Neem contact op met",
     "STARTEDAT": "Gestart op",
     "TRUEPRIORITY": "Echte prioriteit",
     "FALSEPRIORITY": "False prioriteit",
     "VALUE": "Waarde",
-    "EDIT_AGENT": "Agent Bewerken",
-    "EDIT_GOTO": "Ga naar Bewerken",
+    "EDIT_AGENT": "Edit Agent",
+    "EDIT_GOTO": "Ga naar bewerken",
     "EDIT_NOOP": "Noop bewerken",
     "EDIT_GOTOP": "GotoP bewerken",
     "EDIT_GOTOIF": "GotoIf bewerken",
-    "EDIT_QUEUE": "Fax wachtrij Bewerken",
-    "EDIT_CLOSE": "Bewerken Sluiten",
+    "EDIT_QUEUE": "Edit Fax wachtrij",
+    "EDIT_CLOSE": "Edit dicht",
     "QUEUE": "Wachtrij",
     "GOTOIF": "GotoIf",
     "GOTOP": "GotoP",
     "DISPOSITION": "Afvoeren",
     "REALTIME": "Realtime",
     "UNKNOWN": "Onbekend",
-    "UNREGISTERED": "Niet geregistreerd",
+    "UNREGISTERED": "Unregistered",
     "UNAVAILABLE": "Niet beschikbaar",
     "NOT_INUSE": "Niet in gebruik",
     "REACHABLE": "Bereikbaar",
     "IN_USE": "In gebruik",
-    "VOICE": "Telefonie",
+    "VOICE": "Spraak",
     "CHAT": "Chat",
     "MAIL": "Mail",
     "SMS": "SMS",
     "REFRESH_INTERACTIONS": "Interacties vernieuwen",
     "NO_FAXCANNEDANSWER_AVAILABLE": "Geen ingeblikte antwoorden beschikbaar",
     "NEW_FAXCANNEDANSWER": "Nieuw ingebouwd antwoord",
-    "ADD_FAXCANNEDANSWER": "Standaard antwoord Toevoegen",
-    "EDIT_CHATCANNEDANSWER": "Standaard antwoord bewerken",
-    "DELETE_CHATCANNEDANSWER": "Standaard antwoord verwijderen",
+    "ADD_FAXCANNEDANSWER": "Voeg ingebed antwoord toe",
+    "EDIT_CHATCANNEDANSWER": "Ingebouwd antwoord bewerken",
+    "DELETE_CHATCANNEDANSWER": "Ingebouwd antwoord verwijderen",
     "SPYINTERACTION": "Spion",
-    "DELETE_INTERACTION": "Interactie Verwijderen",
+    "DELETE_INTERACTION": "Interactie verwijderen",
     "COMMAND": "Opdracht",
-    "EDIT_SYSTEM": "Systeem Bewerken",
+    "EDIT_SYSTEM": "Systeem bewerken",
     "SYSTEM": "Systeem",
     "VARIABLE": "veranderlijk",
     "NOTIFICATION": "Kennisgeving",
     "NOTIFICATIONSOUND": "Geluid",
     "NOTIFICATIONTEMPLATE": "Sjabloon",
     "WAITFORTHEASSIGNEDAGENT": "Wacht op de toegewezen agent",
-    "EDIT_TAG": "Label Bewerken",
+    "EDIT_TAG": "Bewerk label",
     "TAG": "Label",
-    "AGENTADD_FAXACCOUNT": "Agent aan faxaccount Toevoegen",
+    "AGENTADD_FAXACCOUNT": "Agent toevoegen aan faxaccount",
     "AGENTTRANSFER": "Agent Transfer",
     "AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
     "QUEUETRANSFER": "Wachtrijoverdracht",
     "QUEUETRANSFERTIMEOUT": "Wachtrij Transfer Timeout",
     "TRANSFER": "Overdracht",
-    "CANNEDANSWERS": "Standaard antwoorden",
+    "CANNEDANSWERS": "Ingeblikte antwoorden",
     "DOWNLOAD_INTERACTION": "Download",
-    "FAXCANNEDANSWERS": "Standaard antwoorden",
+    "FAXCANNEDANSWERS": "Ingeblikte antwoorden",
     "LOGIN_TIME": "Aanmeldtijd",
     "PAUSE_TIME": "Pauzetijd",
     "TEAMS_ASSOCIATION": "Teams Association",
index 3b562c6..0b91115 100644 (file)
@@ -41,7 +41,7 @@
     "PARTIALPAUSE": "Pausa Parcial",
     "BUSY": "Ocupado",
     "TIMER": "Tempo",
-    "IDLE": "Ocioso",
+    "IDLE": "Disponível",
     "CAPACITY": "Capacidade",
     "GOTO_FAXACCOUNT": "Ir para fax em tempo real",
     "ACCOUNTS": "Contas",
index 3f58330..86fc6e0 100644 (file)
@@ -1,8 +1,8 @@
 {
   "HELP": {
     "ABOUT": "Sobre",
-    "CONTACT_US": "Contate-Nos",
+    "CONTACT_US": "Fale conosco",
     "HELP": "Ajuda",
-    "USEFUL_LINKS": "Links Úteis"
+    "USEFUL_LINKS": "Links úteis"
   }
 }
index f907009..387af87 100644 (file)
@@ -8,42 +8,42 @@
     "URI": "URL",
     "BACK": "Terug",
     "SELECTED": "Geselecteerd",
-    "SELECT_ALL": "Selecteer Alles",
-    "SELECT_NONE": "Selecteer Geen",
-    "EDIT_ZENDESKACCOUNT": "Zendesk Account Bewerken",
-    "DELETE_ZENDESKACCOUNT": "Zendesk Account Verwijderen",
-    "NEW_ZENDESKACCOUNT": "Nieuw Zendesk Account",
+    "SELECT_ALL": "Alles selecteren",
+    "SELECT_NONE": "Selecteer None (Geen).",
+    "EDIT_ZENDESKACCOUNT": "Edit Zendesk Account",
+    "DELETE_ZENDESKACCOUNT": "Verwijder Zendesk Account",
+    "NEW_ZENDESKACCOUNT": "Nieuwe Zendesk Account",
     "AUTHTYPE": "Authentication Type (Verificatietype)",
     "PASSWORD": "Wachtwoord",
-    "CONFIRM_PASSWORD": "Wachtwoord Bevestigen",
+    "CONFIRM_PASSWORD": "Wachtwoord bevestigen",
     "TOKEN": "Token",
-    "MOTIONPROXYADDRESS": "Motion of Proxy IP Adres",
+    "MOTIONPROXYADDRESS": "Beweging of Proxy IP Adres",
     "DESCRIPTION": "Beschrijving",
-    "ADD_ZENDESKACCOUNT": "Zendesk Account Toevoegen",
+    "ADD_ZENDESKACCOUNT": "Voeg Zendesk Account",
     "ERRORS": {
-      "NAME_REQUIRED": "Verplicht veld",
-      "USERNAME_REQUIRED": "Verplicht veld",
-      "URI_REQUIRED": "Verplicht veld",
+      "NAME_REQUIRED": "De naam is verplicht",
+      "USERNAME_REQUIRED": "De gebruikersnaam is vereist",
+      "URI_REQUIRED": "De URL is vereist",
       "URI_MUST_VALID_URL": "De URL (Uniform Resource Identifier) moet worden geschreven in een geldige indeling",
-      "PASSWORD_REQUIRED": "Verplicht veld",
-      "CONFIRM_NOT_MATCH": "De wachtwoorden komen niet overeen",
+      "PASSWORD_REQUIRED": "Het wachtwoord is vereist",
+      "CONFIRM_NOT_MATCH": "De wachtwoorden Don' t match",
       "TOKEN_REQUIRED": "Het token is vereist",
       "MOTIONPROXYADDRESS_MUST_VALID_URL": "Het adres moet worden geschreven in een geldige indeling",
       "CLIENTID_REQUIRED": "De klant-ID is vereist.",
       "CLIENTSECRET_REQUIRED": "De Cliënt geheim is vereist",
       "SECURITYTOKEN_REQUIRED": "De Security token is vereist",
-      "APIKEY_REQUIRED": "Verplicht veld",
-      "CONTENT_REQUIRED": "Verplicht veld",
-      "VARIABLENAME_REQUIRED": "Verplicht veld",
-      "KEY_REQUIRED": "Verplicht veld",
-      "TYPE_REQUIRED": "Verplicht veld",
-      "VALUE_REQUIRED": "Verplicht veld",
-      "FIELD_REQUIRED": "Verplicht veld",
-      "CONSUMERKEY_REQUIRED": "Verplicht veld",
-      "CONSUMERSECRET_REQUIRED": "Verplicht veld",
-      "TOKENSECRET_REQUIRED": "Verplicht veld",
-      "HOST_REQUIRED": "Verplicht veld",
-      "AUTHTOKEN_REQUIRED": "Verplicht veld",
+      "APIKEY_REQUIRED": "De API Key nodig",
+      "CONTENT_REQUIRED": "De inhoud is vereist",
+      "VARIABLENAME_REQUIRED": "De variabele is vereist",
+      "KEY_REQUIRED": "De sleutel is vereist",
+      "TYPE_REQUIRED": "Het type is vereist",
+      "VALUE_REQUIRED": "De waarde is vereist",
+      "FIELD_REQUIRED": "Het is een verplicht veld",
+      "CONSUMERKEY_REQUIRED": "De consument sleutel is vereist",
+      "CONSUMERSECRET_REQUIRED": "De consument geheim is vereist",
+      "TOKENSECRET_REQUIRED": "Het token geheim is vereist",
+      "HOST_REQUIRED": "De host is vereist",
+      "AUTHTOKEN_REQUIRED": "De exporteur Token is vereist",
       "ACCESS_KEY_REQUIRED": "Verplicht veld",
       "VTIGER_USER_NAME_REQUIRED": "Verplicht veld",
       "TENANTID_REQUIRED": "Verplicht veld",
     "GENERAL": "Algemeen",
     "CREATED_AT": "Gemaakt op",
     "SAVE": "Opslaan",
-    "NO_ZENDESKCONFIGURATION_AVAILABLE": "Geen Zendesk configuraties beschikbaar",
+    "NO_ZENDESKCONFIGURATION_AVAILABLE": "Nee Zendesk configuraties beschikbaar",
     "NEW_ZENDESKCONFIGURATION": "Nieuwe Zendesk configuratie",
-    "ADD_ZENDESKCONFIGURATION": "Zendesk configuratie Toevoegen",
-    "EDIT_ZENDESKCONFIGURATION": "Zendesk configuratie Bewerken",
-    "DELETE_ZENDESKCONFIGURATION": "Zendesk configuratie Verwijderen",
+    "ADD_ZENDESKCONFIGURATION": "Voeg Zendesk configuratie",
+    "EDIT_ZENDESKCONFIGURATION": "Edit Zendesk configuratie",
+    "DELETE_ZENDESKCONFIGURATION": "Verwijder Zendesk configuratie",
     "NO_SALESFORCECONFIGURATION_AVAILABLE": "Geen Salesforce-configuraties beschikbaar",
     "NEW_SALESFORCECONFIGURATION": "Nieuwe Salesforce-configuratie",
-    "ADD_SALESFORCECONFIGURATION": "Salesforce-configuratie Toevoegen",
-    "EDIT_SALESFORCECONFIGURATION": "Salesforce-configuratie Bewerken",
-    "DELETE_SALESFORCECONFIGURATION": "Salesforce-configuratie Verwijderen",
-    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "Geen SugarCRM configuraties beschikbaar",
+    "ADD_SALESFORCECONFIGURATION": "Voeg Salesforce-configuratie",
+    "EDIT_SALESFORCECONFIGURATION": "Edit Salesforce-configuratie",
+    "DELETE_SALESFORCECONFIGURATION": "Verwijder Salesforce-configuratie",
+    "NO_SUGARCRMCONFIGURATION_AVAILABLE": "Nee SugarCRM configuraties beschikbaar",
     "NEW_SUGARCRMCONFIGURATION": "Nieuwe SugarCRM Configuratie",
-    "ADD_SUGARCRMCONFIGURATION": "SugarCRM Configuratie Toevoegen",
-    "EDIT_SUGARCRMCONFIGURATION": "SugarCRM Configuratie Bewerken",
-    "DELETE_SUGARCRMCONFIGURATION": "SugarCRM Configuratie Verwijderen",
-    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Geen Freshdesk configuraties beschikbaar",
+    "ADD_SUGARCRMCONFIGURATION": "Voeg SugarCRM Configuratie",
+    "EDIT_SUGARCRMCONFIGURATION": "Edit SugarCRM Configuratie",
+    "DELETE_SUGARCRMCONFIGURATION": "Verwijder SugarCRM Configuratie",
+    "NO_FRESHDESKCONFIGURATION_AVAILABLE": "Nee Freshdesk configuraties beschikbaar",
     "NEW_FRESHDESKCONFIGURATION": "Nieuwe Freshdesk configuratie",
-    "ADD_FRESHDESKCONFIGURATION": "Freshdesk configuratie Toevoegen",
-    "EDIT_FRESHDESKCONFIGURATION": "Freshdesk configuratie Bewerken",
-    "DELETE_FRESHDESKCONFIGURATION": "Freshdesk configuratie Verwijderen",
+    "ADD_FRESHDESKCONFIGURATION": "Voeg Freshdesk configuratie",
+    "EDIT_FRESHDESKCONFIGURATION": "Edit Freshdesk configuratie",
+    "DELETE_FRESHDESKCONFIGURATION": "Verwijder Freshdesk configuratie",
     "SALESFORCEACCOUNTS": "Salesforce-accounts",
-    "EDIT_SALESFORCEACCOUNT": "Salesforce-account Bewerken",
-    "DELETE_SALESFORCEACCOUNT": "Salesforce-account Verwijderen",
-    "NEW_SALESFORCEACCOUNT": "Nieuw Salesforce-account",
-    "ADD_SALESFORCEACCOUNT": "Salesforce-account Toevoegen",
+    "EDIT_SALESFORCEACCOUNT": "Edit Salesforce-account",
+    "DELETE_SALESFORCEACCOUNT": "Verwijder Salesforce-account",
+    "NEW_SALESFORCEACCOUNT": "Nieuwe Salesforce-account",
+    "ADD_SALESFORCEACCOUNT": "Voeg Salesforce-account",
     "CLIENTID": "Klantnr.",
     "CLIENTSECRET": "Opdrachtgever geheim",
     "SECURITYTOKEN": "Beveiligingstoken",
     "SEARCH_FOR_ANYONE": "Zoeken voor iedereen",
     "APIKEY": "Api-sleutel",
     "FRESHDESKACCOUNTS": "Freshdesk Accounts",
-    "EDIT_FRESHDESKACCOUNT": "Freshdesk Account Bewerken",
-    "DELETE_FRESHDESKACCOUNT": "Freshdesk Account Verwijderen",
-    "NEW_FRESHDESKACCOUNT": "Nieuw Freshdesk Account",
-    "ADD_FRESHDESKACCOUNT": "Freshdesk Account Toevoegen",
+    "EDIT_FRESHDESKACCOUNT": "Edit Freshdesk Account",
+    "DELETE_FRESHDESKACCOUNT": "Verwijder Freshdesk Account",
+    "NEW_FRESHDESKACCOUNT": "Nieuwe Freshdesk Account",
+    "ADD_FRESHDESKACCOUNT": "Voeg Freshdesk Account",
     "SUGARCRMACCOUNTS": "SugarCRM Accounts",
-    "EDIT_SUGARCRMACCOUNT": "SugarCRM Account Bewerken",
-    "DELETE_SUGARCRMACCOUNT": "SugarCRM Account Verwijderen",
-    "NEW_SUGARCRMACCOUNT": "Nieuw SugarCRM Account",
-    "ADD_SUGARCRMACCOUNT": "SugarCRM Account Toevoegen",
+    "EDIT_SUGARCRMACCOUNT": "Edit SugarCRM Account",
+    "DELETE_SUGARCRMACCOUNT": "Verwijder SugarCRM Account",
+    "NEW_SUGARCRMACCOUNT": "Nieuwe SugarCRM Account",
+    "ADD_SUGARCRMACCOUNT": "Voeg SugarCRM Account",
     "CONFIGURATIONS": "Configuraties",
     "NO_CONFIGURATION_AVAILABLE": "Geen configuraties beschikbaar",
     "NEW_CONFIGURATION": "Nieuwe configuratie",
-    "ADD_CONFIGURATION": "Dialoogvenster Configuratie Toevoegen",
-    "EDIT_CONFIGURATION": "Configuratie Bewerken",
-    "DELETE_CONFIGURATION": "Configuratie Verwijderen",
+    "ADD_CONFIGURATION": "Dialoogvenster Configuratie toevoegen",
+    "EDIT_CONFIGURATION": "Configuratie bewerken",
+    "DELETE_CONFIGURATION": "Configuratie verwijderen",
     "SUBJECTS": "Onderwerpen",
     "DESCRIPTIONS": "Beschrijvingen",
     "FIELDS": "Velden",
     "TAGS": "Tags",
     "TYPE": "Type",
     "CONTENT": "Inhoud",
-    "EDIT_SUBJECT": "Onderwerp Bewerken",
-    "DELETE_SUBJECT": "Onderwerp Verwijderen",
+    "EDIT_SUBJECT": "Onderwerp bewerken",
+    "DELETE_SUBJECT": "Onderwerp verwijderen",
     "NEW_SUBJECT": "Nieuw onderwerp",
-    "ADD_SUBJECT": "Onderwerp Toevoegen",
-    "EDIT_DESCRIPTION": "Beschrijving Bewerken",
-    "DELETE_DESCRIPTION": "Beschrijving Verwijderen",
+    "ADD_SUBJECT": "Onderwerp toevoegen",
+    "EDIT_DESCRIPTION": "Edit description (beschrijving bewerken)",
+    "DELETE_DESCRIPTION": "Beschrijving verwijderen",
     "NEW_DESCRIPTION": "Nieuwe beschrijving",
-    "ADD_DESCRIPTION": "Beschrijving Toevoegen",
-    "EDIT_FIELD": "Invoerveld Bewerken",
-    "DELETE_FIELD": "Veld Verwijderen",
+    "ADD_DESCRIPTION": "Voeg de beschrijving",
+    "EDIT_FIELD": "Invoerveld",
+    "DELETE_FIELD": "Veld wissen",
     "NEW_FIELD": "Nieuw veld",
-    "ADD_FIELD": "Veld Toevoegen",
+    "ADD_FIELD": "Veld toevoegen",
     "ADD": "Toevoegen",
     "VOICE": "Spraak",
     "MAIL": "Mail",
     "INTEGRATION_TAB": "Tabblad integratie",
     "NEW_TAB": "Nieuw tabblad",
     "DESKACCOUNTS": "Bureau Accounts",
-    "EDIT_DESKACCOUNT": "Desk Account Bewerken",
+    "EDIT_DESKACCOUNT": "Edit Desk Account",
     "TEST_DESKACCOUNT": "Test Desk Account",
-    "DELETE_DESKACCOUNT": "Desk Account Verwijderen",
+    "DELETE_DESKACCOUNT": "Verwijder Desk Account",
     "CONSUMERKEY": "Toets voor consumenten",
     "CONSUMERSECRET": "Consument geheim",
     "TOKENSECRET": "Token geheim",
-    "ADD_DESKACCOUNT": "Desk Account Toevoegen",
-    "NEW_DESKACCOUNT": "Nieuw Desk Account",
-    "ADD_DESKCONFIGURATION": "Desk-configuratie Toevoegen",
+    "ADD_DESKACCOUNT": "Voeg Desk Account",
+    "NEW_DESKACCOUNT": "Nieuwe Desk Account",
+    "ADD_DESKCONFIGURATION": "Voeg Desk-configuratie",
     "NEW_DESKCONFIGURATION": "Nieuwe Desk-configuratie",
-    "DELETE_DESKCONFIGURATION": "Desk-configuratie Verwijderen",
+    "DELETE_DESKCONFIGURATION": "Verwijder Desk-configuratie",
     "ZOHOACCOUNTS": "Zoho Accounts",
-    "EDIT_ZOHOACCOUNT": "Zoho Account Bewerken",
+    "EDIT_ZOHOACCOUNT": "Edit Zoho Account",
     "TEST_ZOHOACCOUNT": "Test Zoho Account",
-    "DELETE_ZOHOACCOUNT": "Zoho Account Verwijderen",
-    "ADD_ZOHOACCOUNT": "Zoho Account Toevoegen",
-    "NEW_ZOHOACCOUNT": "Nieuw Zoho Account",
-    "ADD_ZOHOCONFIGURATION": "Zoho configuratie Toevoegen",
+    "DELETE_ZOHOACCOUNT": "Verwijder Zoho Account",
+    "ADD_ZOHOACCOUNT": "Voeg Zoho Account",
+    "NEW_ZOHOACCOUNT": "Nieuwe Zoho Account",
+    "ADD_ZOHOCONFIGURATION": "Voeg Zoho configuratie",
     "NEW_ZOHOCONFIGURATION": "Nieuwe Zoho configuratie",
     "AUTHTOKEN": "Autorisatie Token",
     "HOST": "Host",
-    "DELETE_ZOHOCONFIGURATION": "Zoho configuratie Verwijderen",
+    "DELETE_ZOHOCONFIGURATION": "Verwijder Zoho configuratie",
     "PAGE": "Pagina",
     "ROWSPERPAGE": "Rijen per pagina",
     "OF": "Van",
     "MODULE_SEARCH": "Module zoeken",
     "MODULE_CREATE": "Module aanmaken",
     "ACCESS_KEY": "vTiger Toegangssleutel",
-    "ADD_VTIGERACCOUNT": "vTiger-account Toevoegen",
-    "ADD_VTIGERCONFIGURATION": "vTiger-configuratie Toevoegen",
-    "DELETE_VTIGERACCOUNT": "vTiger Account Verwijderen",
-    "DELETE_VTIGERCONFIGURATION": "vTiger-configuratie Verwijderen",
-    "EDIT_VTIGERACCOUNT": "vTiger-account Bewerken",
+    "ADD_VTIGERACCOUNT": "Voeg een nieuw vTiger-account toe",
+    "ADD_VTIGERCONFIGURATION": "Voeg vTiger-configuratie toe",
+    "DELETE_VTIGERACCOUNT": "Verwijder vTiger Account",
+    "DELETE_VTIGERCONFIGURATION": "Verwijder vTiger-configuratie",
+    "EDIT_VTIGERACCOUNT": "Bewerk vTiger-account",
     "MODULE_NAME": "vTiger Module naam",
     "NEW_VTIGERACCOUNT": "Nieuw vTiger-account",
-    "NEW_VTIGERCONFIGURATION": "Nieuwe vTiger-configuratie",
+    "NEW_VTIGERCONFIGURATION": "Maak vTiger-configuratie",
     "TEST_VTIGERACCOUNT": "Test vTiger-account",
     "VTIGERACCOUNTS": "vTiger-accounts",
     "VTIGER_USER_NAME": "vTiger-gebruikersnaam",
-    "ADD_DYNAMICS365ACCOUNT": "Dynamics365-account Toevoegen",
-    "ADD_DYNAMICS365CONFIGURATION": "Dynamics365-configuratie Toevoegen",
+    "ADD_DYNAMICS365ACCOUNT": "Voeg een nieuw Dynamics365-account toe",
+    "ADD_DYNAMICS365CONFIGURATION": "Dynamics365-configuratie toevoegen",
     "CASE": "Geval",
-    "DELETE_DYNAMICS365ACCOUNT": "Dynamics365-account Verwijderen",
-    "DELETE_DYNAMICS365CONFIGURATION": "Dynamics365-configuratie Verwijderen",
+    "DELETE_DYNAMICS365ACCOUNT": "Dynamics365-account verwijderen",
+    "DELETE_DYNAMICS365CONFIGURATION": "Dynamics365-configuratie verwijderen",
     "DYNAMICS365ACCOUNTS": "Dynamics365-accounts",
-    "EDIT_DYNAMICS365ACCOUNT": "Dynamics365-account Bewerken",
+    "EDIT_DYNAMICS365ACCOUNT": "Dynamics365-account bewerken",
     "NEW_DYNAMICS365ACCOUNT": "Nieuw Dynamics365-account",
-    "NEW_DYNAMICS365CONFIGURATION": "Nieuwe Dynamics365-configuratie",
+    "NEW_DYNAMICS365CONFIGURATION": "Maak een Dynamics365-configuratie",
     "PHONECALL": "Telefoongesprek",
     "TENANTID": "Huurder-ID",
     "TEST_DYNAMICS365ACCOUNT": "Test Dynamics365-account",
     "TICKETTYPE": "Tickettype",
-    "ADD_SERVICENOWACCOUNT": "Nieuw ServiceNow-account Toevoegen",
-    "ADD_SERVICENOWCONFIGURATION": "ServiceNow-configuratie Toevoegen",
-    "DELETE_SERVICENOWACCOUNT": "ServiceNow-account Verwijderen",
-    "DELETE_SERVICENOWCONFIGURATION": "ServiceNow-configuratie Verwijderen",
-    "EDIT_SERVICENOWACCOUNT": "ServiceNow-account Bewerken",
+    "ADD_SERVICENOWACCOUNT": "Nieuw ServiceNow-account toevoegen",
+    "ADD_SERVICENOWCONFIGURATION": "ServiceNow-configuratie toevoegen",
+    "DELETE_SERVICENOWACCOUNT": "ServiceNow-account verwijderen",
+    "DELETE_SERVICENOWCONFIGURATION": "ServiceNow-configuratie verwijderen",
+    "EDIT_SERVICENOWACCOUNT": "ServiceNow-account bewerken",
     "EMAIL": "E-mail",
     "NEW_SERVICENOWACCOUNT": "Nieuw ServiceNow-account",
-    "NEW_SERVICENOWCONFIGURATION": "Nieuw ServiceNow-configuratie",
+    "NEW_SERVICENOWCONFIGURATION": "Maak ServiceNow-configuratie",
     "SERVICENOWACCOUNTS": "ServiceNow Accounts",
     "TEST_SERVICENOWACCOUNT": "Test ServiceNow Account",
     "TASK": "Taak",
     "CONTACTS": "Contact",
     "LEADS": "Lood",
     "MODULECREATE": "Module maken",
-    "ADD_FRESHSALESACCOUNT": "Freshsales-account Toevoegen",
-    "ADD_FRESHSALESCONFIGURATION": "Freshsales-configuratie Toevoegen",
-    "DELETE_FRESHSALESACCOUNT": "Freshsales-account Verwijderen",
-    "DELETE_FRESHSALESCONFIGURATION": "Freshsales Configuration Verwijderen",
-    "EDIT_FRESHSALESACCOUNT": "Freshsales-account Bewerken",
-    "EDIT_FRESHSALESCONFIGURATION": "Freshsales-configuratie Bewerken",
+    "ADD_FRESHSALESACCOUNT": "Voeg Freshsales-account toe",
+    "ADD_FRESHSALESCONFIGURATION": "Voeg Freshsales-configuratie toe",
+    "DELETE_FRESHSALESACCOUNT": "Freshsales-account verwijderen",
+    "DELETE_FRESHSALESCONFIGURATION": "Verwijder Freshsales Configuration",
+    "EDIT_FRESHSALESACCOUNT": "Bewerk Freshsales-account",
+    "EDIT_FRESHSALESCONFIGURATION": "Bewerk Freshsales-configuratie",
     "FRESHSALESACCOUNTS": "Freshsales Accounts",
     "NEW_FRESHSALESACCOUNT": "Nieuw Freshsales-account",
     "NEW_FRESHSALESCONFIGURATION": "Nieuwe Freshsales-configuratie",
index 7c99ef6..66c41f9 100644 (file)
     "TEST_SALESFORCEACCOUNT": "Testar conta do Salesforce",
     "INTEGRATION_TAB": "Guia Integração",
     "NEW_TAB": "Nova aba",
-    "DESKACCOUNTS": "Contas de mesa",
-    "EDIT_DESKACCOUNT": "Editar conta de mesa",
-    "TEST_DESKACCOUNT": "Conta de teste de mesa",
-    "DELETE_DESKACCOUNT": "Excluir conta de mesa",
+    "DESKACCOUNTS": "Contas Desk.com",
+    "EDIT_DESKACCOUNT": "Editar conta Desk.com",
+    "TEST_DESKACCOUNT": "Testar conta Desk.com",
+    "DELETE_DESKACCOUNT": "Excluir conta Desk.com",
     "CONSUMERKEY": "Chave do consumidor",
     "CONSUMERSECRET": "Consumidor secreto",
     "TOKENSECRET": "Segredo do Token",
-    "ADD_DESKACCOUNT": "Adicionar conta de mesa",
-    "NEW_DESKACCOUNT": "Nova conta de mesa",
-    "ADD_DESKCONFIGURATION": "Adicionar configuração de mesa",
-    "NEW_DESKCONFIGURATION": "Nova configuração de mesa",
-    "DELETE_DESKCONFIGURATION": "Excluir configuração da mesa",
+    "ADD_DESKACCOUNT": "Adicionar conta Desk.com",
+    "NEW_DESKACCOUNT": "Nova conta Desk.com",
+    "ADD_DESKCONFIGURATION": "Adicionar configuração Desk.com",
+    "NEW_DESKCONFIGURATION": "Nova configuração Desk.com",
+    "DELETE_DESKCONFIGURATION": "Excluir configuração Desk.com",
     "ZOHOACCOUNTS": "Contas Zoho",
     "EDIT_ZOHOACCOUNT": "Editar conta Zoho",
     "TEST_ZOHOACCOUNT": "Testar Conta Zoho",
     "LEADS": "Conduzir",
     "MODULECREATE": "Criar módulo",
     "ADD_FRESHSALESACCOUNT": "Adicionar conta Freshsales",
-    "ADD_FRESHSALESCONFIGURATION": "Adicionar configuração de vendas frescas",
+    "ADD_FRESHSALESCONFIGURATION": "Adicionar configuração Freshsales",
     "DELETE_FRESHSALESACCOUNT": "Excluir conta Freshsales",
-    "DELETE_FRESHSALESCONFIGURATION": "Excluir configuração de vendas recentes",
-    "EDIT_FRESHSALESACCOUNT": "Editar conta de vendas frescas",
-    "EDIT_FRESHSALESCONFIGURATION": "Editar configuração de vendas frescas",
-    "FRESHSALESACCOUNTS": "Contas de vendas frescas",
-    "NEW_FRESHSALESACCOUNT": "Nova conta de vendas frescas",
-    "NEW_FRESHSALESCONFIGURATION": "Nova configuração de vendas frescas",
-    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Nenhuma configuração de vendas frescas disponível",
-    "TEST_FRESHSALESACCOUNT": "Conta de teste de vendas frescas",
+    "DELETE_FRESHSALESCONFIGURATION": "Excluir configuração Freshsales",
+    "EDIT_FRESHSALESACCOUNT": "Editar conta Freshsales",
+    "EDIT_FRESHSALESCONFIGURATION": "Editar configuração Freshsales",
+    "FRESHSALESACCOUNTS": "Contas Freshsales",
+    "NEW_FRESHSALESACCOUNT": "Nova conta Freshsales",
+    "NEW_FRESHSALESCONFIGURATION": "Nova configuração Freshsales",
+    "NO_FRESHSALESCONFIGURATION_AVAILABLE": "Nenhuma configuração Freshsales disponível",
+    "TEST_FRESHSALESACCOUNT": "Testar conta Freshsales",
     "ADDITIONALSEARCHACCOUNT": "Conta de pesquisa adicional",
     "ADDITIONALSEARCHCONTACT": "Contato de pesquisa adicional",
     "ADDITIONALSEARCHLEAD": "Lead de pesquisa adicional",
index 25c5da4..40b33e8 100644 (file)
@@ -1,17 +1,17 @@
 {
   "JSCRIPTY": {
     "NAME": "Name",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "BACK": "Zurück",
-    "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECTED": "Ausgewählte",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "DESCRIPTION": "Beschreibung",
     "ERRORS": {
-      "NAME_REQUIRED": "Name erforderlich",
-      "PROJECT_REQUIRED": "Projekt erforderlich",
-      "FIELD_REQUIRED": "Feld erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Ungültiges Format Name"
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "PROJECT_REQUIRED": "Das Projekt ist erforderlich",
+      "FIELD_REQUIRED": "Das Feld ist erforderlich.",
+      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden"
     },
     "SAVE": "Speichern",
     "PROJECTS": "Projekte",
@@ -19,7 +19,7 @@
     "EDIT_PROJECT": "Projekt bearbeiten",
     "DELETE_PROJECT": "Projekt löschen",
     "JSCRIPTY": "Jscripty",
-    "ID": "ID",
+    "ID": "Id",
     "PROJECT": "Projekt",
     "CREATED_AT": "Erstellt am",
     "NEW_PROJECT": "Neues Projekt",
     "OPEN_CONTACT": "Kontakt öffnen",
     "HELP": {
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "ENABLEUNCOMPLETESAVE": "Speichert die Eingaben, auch wenn Formular noch nicht abgeschlossen",
-      "SENDUNPAUSEONSUBMIT": "Agentenpause nach Absenden des Formulars beenden"
+      "ENABLEUNCOMPLETESAVE": "Die dem Bedienplatz-Sitzung zu speichern, auch wenn die Umfrage ist noch nicht abgeschlossen",
+      "SENDUNPAUSEONSUBMIT": "Beenden Sie am Ende der Umfrage automatisch die Pause des Agenten"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
-    "JSCRIPTYSESSIONS": "Script-Sitzungen",
+    "OF": "Von",
+    "JSCRIPTYSESSIONS": "Projektsitzungen",
     "SESSIONS": "Sitzungen",
     "STARTTIME": "Startzeit",
     "ENDTIME": "Endzeit",
     "MEMBERNAME": "Mitgliedsname",
-    "CALLERIDNUM": "Telefonnummer des Anrufers",
+    "CALLERIDNUM": "Rufnummer des Anrufers",
     "NO_SESSION_AVAILABLE": "Keine Sitzungen verfügbar",
-    "SESSION_RESULTS": "Ergebnisse",
-    "SHOW_QUESTIONS_SESSION": "Ergebnisse anzeigen",
+    "SESSION_RESULTS": "Sitzung Ergebnisse",
+    "SHOW_QUESTIONS_SESSION": "Sitzung Ergebnisse anzeigen",
     "ANSWERS": "Antworten",
     "NO_RESULTS_AVAILABLE": "Keine Ergebnisse verfügbar",
-    "TOTAL": "Gesamt",
+    "TOTAL": "Insgesamt",
     "ANSWER": "Antwort",
-    "EXPORT_TO_CSV": "In CSV-Datei exportieren",
+    "EXPORT_TO_CSV": "Export in CSV",
     "NO_ANSWERS_AVAILABLE": "Keine Antworten vorhanden",
-    "DELETE_SESSION": "Sitzung löschen",
+    "DELETE_SESSION": "Session löschen",
     "RESET_SESSION": "Sitzung neu starten",
     "YES": "Ja",
-    "NO": "Nein",
-    "DO_YOU_WANT_TO_RESET_SESSION": "Sitzung wirklich zurücksetzen?",
+    "NO": "Keine",
+    "DO_YOU_WANT_TO_RESET_SESSION": "Möchten Sie die Sitzung zurücksetzen?",
     "ALL_SURVEY_DATA_WILL_BE_LOST": "Alle Antworten auf die Umfragen gehen verloren!",
-    "ENABLEUNCOMPLETESAVE": "Speichern wenn unvollständig",
+    "ENABLEUNCOMPLETESAVE": "Aktivieren Sie unvollständig speichern",
     "SUBMIT": "Senden",
     "PROJECT_NOT_AVAILABLE": "Projekt ist nicht verfügbar. Bitte wenden Sie sich an den Administrator",
-    "COMPLETE": "Abgeschlossen",
-    "CLONE_PROJECT": "Projekt duplizieren",
-    "SESSIONS_PROJECT": "Direkt zu den Sitzungen gehen",
-    "SENDUNPAUSEONSUBMIT": "Agentenpause nach Absenden beenden"
+    "COMPLETE": "Komplette",
+    "CLONE_PROJECT": "Klonprojekt",
+    "SESSIONS_PROJECT": "Gehe zu den Sitzungen",
+    "SENDUNPAUSEONSUBMIT": "Agent beim Senden abschalten"
   },
   "mwForm": {
     "form": {
-      "name": "Titel",
-      "name.placeholder": "Titel hier eingeben",
-      "description": "Beschreibung"
+      "name": "Title",
+      "name.placeholder": "Form title",
+      "description": "Description"
     },
     "buttons": {
-      "addPage": "Seite hinzufügen",
-      "moveDown": "Nach Unten bewegen",
-      "moveUp": "Nach Oben bewegen",
-      "removePage": "Seite löschen",
-      "remove": "Löschen",
-      "addElement": "Element hinzufügen",
-      "questionReady": "Bereit",
-      "next": "Weiter",
-      "back": "Zurück",
-      "submit": "Übermitteln",
-      "begin": "Start",
-      "fold": "Einklappen",
-      "unfold": "Ausklappen",
-      "edit": "Anpassen",
-      "clone": "Duplizieren",
-      "view": "Ansicht"
+      "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": "Seite {{page}} von {{allPages}}"
+        "heading": "Page {{page}} of {{allPages}}"
       },
       "elements": {
-        "empty": "Leere Seite"
+        "empty": "Empty page"
       },
-      "pageWithNameCheckbox": "Benannt",
-      "name": "Seitenname"
+      "pageWithNameCheckbox": "named",
+      "name": "Page name"
     },
     "pageFlow": {
-      "afterPage": "Nächste Seite {{page}}:",
-      "afterQuestionAnswer": "Seitenwechsel basierend auf Antwort",
-      "goToPage": "Gehe zu Seite {{page.number}}",
-      "goToNextPage": "Zur nächsten Seite",
-      "submitForm": "Formular übermitteln"
+      "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": "Frage",
-      "image": "Bild",
-      "paragraph": "Paragraf"
+      "question": "Question",
+      "image": "Image",
+      "paragraph": "Paragraph"
     },
     "question": {
       "types": {
         "text": {
-          "name": "Kurztext"
+          "name": "Short text"
         },
         "textarea": {
-          "name": "Langer Text"
+          "name": "Long text"
         },
         "radio": {
-          "name": "Radio-Button"
+          "name": "Radio"
         },
         "select": {
-          "name": "Auswahl"
+          "name": "Select"
         },
         "checkbox": {
-          "name": "Checkboxen"
+          "name": "Checkboxes"
         },
         "grid": {
-          "name": "Raster"
+          "name": "Grid"
         },
         "priority": {
-          "name": "Priorität"
+          "name": "Priority"
         },
         "division": {
-          "name": "Abteilung"
+          "name": "Division"
         },
         "number": {
-          "name": "Nummer"
+          "name": "Number"
         },
         "date": {
-          "name": "Datum"
+          "name": "Date"
         },
         "datetime": {
-          "name": "Zeitstempel"
+          "name": "Datetime"
         },
         "time": {
-          "name": "Zeit"
+          "name": "Time"
         },
         "email": {
-          "name": "E-Mail"
+          "name": "Email"
         },
         "range": {
-          "name": "Bereich"
+          "name": "Range"
         },
         "url": {
           "name": "URL"
         }
       },
-      "text": "Fragetext",
-      "type": "Fragetyp",
-      "required": "Erforderlich",
+      "text": "Question text",
+      "type": "Question type",
+      "required": "Required",
       "preview": {
-        "text": "Kurztext",
-        "textarea": "Langer Text",
-        "otherAnswer": "Weitere"
+        "text": "Short answer text",
+        "textarea": "Long answer text",
+        "otherAnswer": "Other"
       },
       "division": {
-        "quantity": "Anzahl",
-        "unit": "Einheit",
-        "assignedSumLabel": "Label Zugewiesen",
-        "fromRequiredLabel": "Label Absender erforderlich"
+        "quantity": "Quantity",
+        "unit": "Unit label",
+        "assignedSumLabel": "Assigned",
+        "fromRequiredLabel": "from required"
       },
       "priority": {
-        "sorted": "Sortiert",
-        "available": "Verfügbar",
-        "clickToAddItem": "Klicken, um Element hinzuzufügen"
+        "sorted": "Sorted",
+        "available": "Available",
+        "clickToAddItem": "Click to add item"
       },
       "grid": {
-        "cellInputType": "Eingabetyp",
+        "cellInputType": "Cell input type",
         "cellInputTypes": {
-          "radio": "Radio-Button",
+          "radio": "Radio",
           "checkbox": "Checkbox",
           "text": "Text",
-          "number": "Checkbox",
-          "date": "Datum",
-          "time": "Zeit"
+          "number": "Number",
+          "date": "Date",
+          "time": "Time"
         },
-        "rowLabel": "Zeile {{row}}",
-        "clickToAddRow": "Klicken, um Zeile hinzuzufügen",
-        "columnLabel": "Spalte {{col}}",
-        "clickToAddColumn": "Klicken, um Spalte hinzuzufügen"
+        "rowLabel": "Row {{row}}",
+        "clickToAddRow": "Click to add row",
+        "columnLabel": "Column {{col}}",
+        "clickToAddColumn": "Click to add column"
       },
       "range": {
-        "from": "Bereich von",
-        "to": "bis"
+        "from": "Range from",
+        "to": "to"
       },
       "number": {
         "min": "Min",
         "max": "Max"
       },
-      "orLabel": "oder ",
-      "otherLabel": "Weitere: ",
-      "userAnswer": "Antwort Nutzer",
+      "orLabel": "or ",
+      "otherLabel": "Other: ",
+      "userAnswer": "User answer",
       "buttons": {
-        "addOption": "Klicken, um Option hinzuzufügen",
-        "addOther": "Weitere hinzufügen"
+        "addOption": "Click to add option",
+        "addOther": "Add 'Other'"
       }
     },
     "image": {
-      "selectImageButton": "Bild auswählen",
-      "caption": "Screenshot einfügen"
+      "selectImageButton": "Select image",
+      "caption": "Image caption"
     },
     "paragraph": {
-      "placeholder": "Text für Paragrafen eingeben"
+      "placeholder": "Enter paragraph text"
     },
     "confirmationPage": {
-      "title": "Bestätigungsseite",
-      "customMessage": "Nachricht erfolgreiche Übermittlung",
-      "defaultMessage": "Ihre Eingaben wurden gespeichert",
-      "errorMessage": "Fehler beim Speichern Ihrer Eingaben",
-      "pendingMessage": "Ihre Eingaben werden gespeichert"
+      "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."
     }
   }
 }
index a39d9fd..1aa6dcf 100644 (file)
@@ -1,6 +1,6 @@
 {
   "JSCRIPTY": {
-    "CLONE_PROJECT": "Projeto Clone",
+    "CLONE_PROJECT": "Clonar projeto",
     "NAME": "Nome",
     "SEARCH_FOR_ANYONE": "Procurar",
     "BACK": "Voltar",
     },
     "SAVE": "Salvar",
     "PROJECTS": "Projetos",
-    "ADD_PROJECT": "Adicionar Projeto",
-    "EDIT_PROJECT": "Editar Projeto",
-    "DELETE_PROJECT": "Excluir Projeto",
+    "ADD_PROJECT": "Adicionar projeto",
+    "EDIT_PROJECT": "Editar projeto",
+    "DELETE_PROJECT": "Excluir projeto",
     "JSCRIPTY": "Jscripty",
     "ID": "Id",
     "PROJECT": "Projeto",
     "CREATED_AT": "Criado em",
-    "NEW_PROJECT": "Novo Projeto",
+    "NEW_PROJECT": "Novo projeto",
     "EDIT": "Editar",
     "SETTINGS": "Configurações",
-    "GENERAL": "Feral",
+    "GENERAL": "General",
     "BUILDER": "Builder",
     "PREVIEW": "Visualizar",
     "OPEN_CONTACT": "Contato aberto",
index c2b9ea0..e258a20 100644 (file)
 {
   "MAIL": {
     "TEXT": "Text",
-    "TIMES": "Zeitstempel",
-    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
+    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
+    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
     "AUTOREPLY": "Automatische Antwort",
-    "SHOW_AUTOREPLY": "Automatische Antwort anzeigen",
+    "SHOW_AUTOREPLY": "Die automatische Antwort anzeigen",
     "SHOW_DETAILS": "Details anzeigen",
     "HIDE_DETAILS": "Details ausblenden",
-    "TO": "An",
+    "TO": "Zu",
     "FROM": "Von",
     "DATE": "Datum",
-    "CC": "CC",
-    "REPLY": "Antworten",
+    "CC": "Cc",
+    "REPLY": "Antwort",
     "REPLY_ALL": "Allen antworten",
-    "FORWARD": "Weiterleiten",
+    "FORWARD": "Vorwärts",
     "SUBJECT": "Betreff",
-    "BCC": "BCC",
+    "BCC": "Bcc",
     "SEND": "Senden",
     "ATTACHMENT": "Anhang",
     "ATTACHMENTS": "Anhänge",
     "NAME": "Name",
     "MAILQUEUES": "E-Mail Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "STRATEGY": "Strategie",
     "ERRORS": {
-      "TEXT_REQUIRED": "Text erforderlich",
-      "NAME_REQUIRED": "Name erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Zeitüberschreitung Agent erforderlich",
-      "EMAIL_ADDRESS_REQUIRED": "E-Mail Adresse erforderlich",
-      "EMAIL_ADDRESS_MUST_VALID": "Ungültiges Format E-Mail",
-      "HOST_REQUIRED": "Host erforderlich",
-      "USERNAME_REQUIRED": "Nutzername erforderlich",
-      "PORT_REQUIRED": "Port erforderlich",
-      "CONNTIMEOUT_REQUIRED": "Zeitüberschreitung Verbindung erforderlich",
-      "AUTHTIMEOUT_REQUIRED": "Zeitüberschreitung für Authentifizierung erforderlich",
-      "ACCEPTURL_MUST_VALID_URL": "Format ungültig URL",
-      "TIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
-      "REJECTURL_MUST_VALID_URL": "Format Ungültig URL bei Ablehnen",
-      "CLOSEURL_MUST_VALID_URL": "Format ungültig URL bei Schließen",
-      "AGENT_REQUIRED": "Agent erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
-      "DISPOSITION_REQUIRED": "Qualifizierung erforderlich",
-      "CONDITION_REQUIRED": "Bedingung erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Priorität bei \"true\" erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Priorität bei \"false\" erforderlich",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität bei \"true\" muss größer oder gleich sein als",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität bei \"false\" muss größer oder gleich sein als",
-      "PRIORITY_REQUIRED": "Priorität erforderlich",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität muss größer oder gleich sein als",
-      "QUEUE_REQUIRED": "Warteschlange erforderlich",
-      "LIST_REQUIRED": "Liste erforderlich",
-      "PASSWORD_REQUIRED": "Passwort erforderlich",
-      "SERVICE_REQUIRED": "Dienst erforderlich,",
-      "IMAP_HOST_REQUIRED": "IMAP-Host erforderlich",
-      "IMAP_PORT_REQUIRED": "IMAP-Port erforderlich",
-      "SMTP_HOST_REQUIRED": "SMTP-Host erforderlich",
-      "SMTP_PORT_REQUIRED": "SMTP-Port erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "KEY_MAX_LENGTH": "Schlüssel darf eine maximale Länge von {{max}} haben",
-      "KEY_REQUIRED": "Schlüssel erforderlich",
-      "TEXT_MAX_LENGTH": "Text darf eine maximale Länge von {{max}} haben",
-      "VALUE_REQUIRED": "Wert erforderlich",
-      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Schriftgröße muss größer oder gleich sein als",
-      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Schriftgröße muss kleiner oder gleich sein als",
-      "FONT_SIZE_REQUIRED": "Schriftgröße erforderlich",
-      "COMMAND_REQUIRED": "Eingabe erforderlich",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung Agent muss größer oder gleich sein als",
-      "NAME_MUST_VALID_PATTERN": "Format ungültig Name",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Agent muss kleiner oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wartezeit Agent muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartezeit Agent muss kleiner oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Wartezeit Agent erforderlich",
-      "TAG_REQUIRED": "Tag erforderlich",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung Transfer an Agent muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Transfer an Agent muss kleiner oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung Transfer an Agent erforderlich",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung Transfer an Warteschlange muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Transfer an Warteschlange muss kleiner oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung Transfer an Warteschlange erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "PausenID bei Qualifizierung erforderlich",
-      "REPLY_TYPE_REQUIRED": "Antworttyp erforderlich",
+      "TEXT_REQUIRED": "Das Feld \"Text\" ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
+      "EMAIL_ADDRESS_REQUIRED": "Die E-Mail-Adresse ist erforderlich",
+      "EMAIL_ADDRESS_MUST_VALID": "Die E-Mail Adresse muss in einem gültigen Format",
+      "HOST_REQUIRED": "Der Host wird benötigt",
+      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
+      "PORT_REQUIRED": "Der Port ist erforderlich",
+      "CONNTIMEOUT_REQUIRED": "Timeout der Verbindung ist erforderlich",
+      "AUTHTIMEOUT_REQUIRED": "Das Zeitlimit für die Authentifizierung erforderlich ist",
+      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
+      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "AGENT_REQUIRED": "Der Agent ist erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich",
+      "DISPOSITION_REQUIRED": "Die Disposition ist erforderlich",
+      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die wahre Priorität muss größer als oder gleich",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die falsche Priorität muss größer als oder gleich",
+      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Priorität muss größer als oder gleich",
+      "QUEUE_REQUIRED": "Die Warteschlange ist erforderlich",
+      "LIST_REQUIRED": "Die Liste ist erforderlich",
+      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
+      "SERVICE_REQUIRED": "Der Dienst ist erforderlich,",
+      "IMAP_HOST_REQUIRED": "Der IMAP-Host wird benötigt",
+      "IMAP_PORT_REQUIRED": "Der IMAP-Anschluss erforderlich",
+      "SMTP_HOST_REQUIRED": "Der SMTP-Host ist erforderlich",
+      "SMTP_PORT_REQUIRED": "Der SMTP-Port ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Passwörter nicht übereinstimmen",
+      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
+      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
+      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "VALUE_REQUIRED": "Pflichtfeld",
+      "FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "FONT_SIZE_REQUIRED": "Pflichtfeld",
+      "COMMAND_REQUIRED": "Pflichtfeld",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "NAME_MUST_VALID_PATTERN": "Falsches Format",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
+      "TAG_REQUIRED": "Pflichtfeld",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
+      "REPLY_TYPE_REQUIRED": "Pflichtfeld",
       "FIELD_REQUIRED": "Pflichtfeld"
     },
-    "AGENT_TIMEOUT": "Zeitüberschreitung Agent",
+    "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
     "ADD_MAILQUEUE": "E-Mail Warteschlange hinzufügen",
     "EDIT_MAILQUEUE": "E-Mail Warteschlange bearbeiten",
     "DELETE_MAILQUEUE": "E-Mail Warteschlange löschen",
     "SETTINGS": "Einstellungen",
-    "GENERAL": "Allgemeine Einstellungen",
+    "GENERAL": "Allgemein",
     "SAVE": "Speichern",
     "MAILACCOUNTS": "E-Mail Konten",
     "EMAIL_ADDRESS": "E-Mail Adresse",
     "ADD_MAILACCOUNT": "E-Mail Konto hinzufügen",
-    "EDIT_MAILACCOUNT": "E-Mail Konto bearbeiten",
-    "DELETE_MAILACCOUNT": "E-Mail Konto löschen",
-    "DISPOSITIONS": "Qualifizierungen",
+    "EDIT_MAILACCOUNT": "E-Mail-Konto bearbeiten",
+    "DELETE_MAILACCOUNT": "E-Mail-Konten löschen",
+    "DISPOSITIONS": "Bestimmungen",
     "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Routing",
-    "OTHERS": "Weitere",
+    "ACTIONS": "Aktionen",
+    "OTHERS": "Andere",
     "LIST": "Liste",
     "TEMPLATE": "Vorlage",
     "FIDELITY": "Treue",
-    "SERVICE": "Dienst",
+    "SERVICE": "Service",
     "CREATED_AT": "Erstellt am",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Die Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
-    "CLOSEMETHOD": "Methode schließen",
-    "CLOSEURL": "URL schließen",
-    "WHITELABEL": "WhiteLabel",
-    "SIGNATURE": "Signatur",
+    "CLOSE": "In der Nähe",
+    "CLOSEMETHOD": "In der Nähe Methode",
+    "CLOSEURL": "Der URL",
+    "WHITELABEL": "White Label",
+    "SIGNATURE": "Unterschrift",
     "IMAP": "IMAP",
     "HOST": "Host",
-    "USERNAME": "Nutzername",
-    "PORT": "Port",
+    "USERNAME": "Benutzername",
+    "PORT": "Hafen",
     "MAILBOX": "Mailbox",
     "FILTER": "Filter",
-    "CONNTIMEOUT": "Zeitüberschreitung Verbindung (Sek)",
-    "AUTHTIMEOUT": "Zeitüberschreitung Authentifizierung (Sek)",
+    "CONNTIMEOUT": "Connection Timeout [sek]",
+    "AUTHTIMEOUT": "Authentication Timeout [sek]",
     "DELETE": "E-Mails vom Server löschen",
     "SSL": "SSL",
     "KEEPALIVE": "Keepalive",
-    "POLLING": "Abfrageintervall",
+    "POLLING": "Polling",
     "SMTP": "SMTP",
-    "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECTED": "Ausgewählte",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "MAIL": "E-Mail",
-    "ID": "ID",
-    "TIMEOUT": "Zeitüberschreitung",
+    "ID": "Id",
+    "TIMEOUT": "Timeout",
     "PASSWORD": "Passwort",
-    "NO_MAILDISPOSITION_AVAILABLE": "Keine E-Mail Qualifizierung verfügbar",
-    "ADD_MAILDISPOSITION": "Qualifizierung hinzufügen",
-    "NEW_MAILDISPOSITION": "Neue E-Mail Qualifizierung",
-    "EDIT_MAILDISPOSITION": "Qualifizierung bearbeiten",
-    "DELETE_MAILDISPOSITION": "Qualifizierung löschen",
-    "MAILDISPOSITIONS": "E-Mail Qualifizierungen",
+    "NO_MAILDISPOSITION_AVAILABLE": "Keine E-Mail zur Verfügung Verfügungen",
+    "ADD_MAILDISPOSITION": "E-Mail hinzufügen Disposition",
+    "NEW_MAILDISPOSITION": "Neue E-Mail zur Verfügung",
+    "EDIT_MAILDISPOSITION": "Bearbeiten von E-Mail zur Verfügung",
+    "DELETE_MAILDISPOSITION": "Löschen von E-Mail zur Verfügung",
+    "MAILDISPOSITIONS": "E-Mail Verfügungen",
     "NEW_MAILQUEUE": "Neue E-Mail Warteschlange",
-    "NEW_MAILACCOUNT": "Neues E-Mail Konto",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "ALL_TEAMS": "Alle Teams",
+    "NEW_MAILACCOUNT": "Neue E-Mail Konto",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "HELP": {
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "USERNAME": "Benutzername für die Authentifizierung",
-      "PASSWORD": "Passwort für die Authentifizierung",
-      "SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zum Server aufgebaut wird",
-      "FONT_FAMILY": "Standard-Schriften",
+      "USERNAME": "Benutzername für die Authentifizierung verwendet werden",
+      "PASSWORD": "Kennwort für die Authentifizierung verwendet werden",
+      "SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zu Server",
+      "FONT_FAMILY": "Standardschriftfamilie",
       "FONT_SIZE": "Standard Schriftgröße",
-      "MARK_AS_UNREAD": "Deaktivieren/Aktivieren um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID während Qualifizierung",
+      "MARK_AS_UNREAD": "Agent aktivieren / deaktivieren, um die letzte Nachricht einer Interaktion als ungelesen zu markieren",
+      "MANDATORYDISPOSITION": "Zwingende Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Anhalten, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
       "CLOUD_PROVIDER": "Für die Authentifizierung verwendeter Cloud-Anbieter"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
-    "TEAMADD_MAILQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_MAILQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "OF": "Von",
+    "TEAMADD_MAILQUEUE": "Team Chat Warteschlange hinzufügen",
+    "AGENTADD_MAILQUEUE": "Agent zu Chatten Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "AGENT": "Agent",
-    "EDIT_AGENT": "Agenten bearbeiten",
-    "EDIT_CLOSE": "Verhalten bei Schließen bearbeiten",
-    "DISPOSITION": "Qualifizierung",
-    "GOTOIF": "GeheZuWenn (GoToIf)",
-    "EDIT_GOTOIF": "Bedingung bearbeiten und Priorität zuweisen",
-    "CONDITION": "Bedingung",
-    "TRUEPRIORITY": "Priorität, wenn erfüllt (true)",
-    "FALSEPRIORITY": "Priorität, wenn nicht erfüllt (false)",
-    "GOTOP": "Priorität setzen (GoToP)",
-    "EDIT_GOTOP": "GoToP bearbeiten",
+    "EDIT_AGENT": "Agent bearbeiten",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "DISPOSITION": "Disposition",
+    "GOTOIF": "GotoIf",
+    "EDIT_GOTOIF": "Bearbeiten GotoIf",
+    "CONDITION": "Zustand",
+    "TRUEPRIORITY": "Wahre Priorität",
+    "FALSEPRIORITY": "Falsche Priorität",
+    "GOTOP": "GotoP",
+    "EDIT_GOTOP": "GotoP bearbeiten",
     "PRIORITY": "Priorität",
-    "NOOP": "Log erstellen (NoOp)",
-    "EDIT_NOOP": "Log-Erstellung bearbeiten",
+    "NOOP": "Noop",
+    "EDIT_NOOP": "Bearbeiten Noop",
     "VALUE": "Wert",
     "QUEUE": "Warteschlange",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "INTERACTIONS": "Interaktionen",
-    "STARTEDAT": "Startdatum",
+    "INTERACTIONS": "Wechselwirkungen",
+    "STARTEDAT": "Gestartet am",
     "CONTACT": "Kontakt",
-    "CLOSEDAT": "Geschlossen am",
-    "NOTES": "Anmerkungen",
-    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
+    "CLOSEDAT": "Geschlossen",
+    "NOTES": "Hinweise",
+    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
     "ACTIVE": "Aktiv",
-    "SECURE": "Sicher",
+    "SECURE": "Sichere",
     "AUTHENTICATION": "Authentifizierung",
     "SMTP_HOST": "SMTP-Host",
     "SMTP_PORT": "SMTP-Port",
     "IMAP_PORT": "IMAP-Port",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "SELECT_STATUS": "Status auswählen",
-    "OPENED": "Geöffnet",
+    "OPENED": "Öffnen",
     "CLOSED": "Geschlossen",
     "ALL": "Alle",
     "SELECT_ACCOUNT": "Konto auswählen",
     "STATUS": "Status",
     "ACCOUNT": "Konto",
-    "OPEN": "Offen",
+    "OPEN": "Öffnen",
     "KEY": "Schlüssel",
     "SMTPSERVICE": "SMTP-Dienst",
-    "UNPAUSE": "Pause abbrechen",
-    "DEFAULT_PAUSE": "Standardpause",
+    "UNPAUSE": "Pause beenden",
+    "DEFAULT_PAUSE": "Standard Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "VOICE": "Anrufe",
+    "AGENTADD_QUEUE": "Agent E-Mail Warteschlange hinzufügen",
+    "VOICE": "Voice",
     "CHAT": "Chat",
-    "SMS": "SMS",
-    "OPENCHANNEL": "Offener Kanal",
+    "SMS": "Sms",
+    "OPENCHANNEL": "Channel öffnen",
     "FAX": "Fax",
     "REALTIME": "Echtzeit",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
     "ACCOUNTS": "Konten",
-    "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
-    "PHONE_STATE": "Status Nebenstelle",
-    "PHONE_STATUS": "SIP-Status Nebenstelle",
+    "FULLNAME": "Voller Name",
+    "INTERNAL": "Interne",
+    "PHONE_STATE": "Telefonstatus",
+    "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
     "READY": "Bereit",
     "WAITING": "Warten",
-    "TOTAL": "Gesamt",
-    "IN": "Eingehend",
-    "OUT": "Ausgehend",
+    "TOTAL": "Insgesamt",
+    "IN": "In",
+    "OUT": "Aus",
     "IMAP_STATUS": "IMAP-Status",
     "SMTP_STATUS": "SMTP-Status",
     "DISABLED": "Deaktiviert",
     "CONNECTED": "Verbunden",
-    "NEVER_VERIFIED": "Noch nicht verifiziert",
+    "NEVER_VERIFIED": "Nie verifiziert",
     "ERROR": "Fehler",
     "EDIT_ACCOUNT": "Konto bearbeiten",
-    "VERIFY_SMTP": "SMTP-Einstellungen prüfen",
+    "VERIFY_SMTP": "Überprüfen Sie die SMTP-",
     "VERIFIED": "Überprüft",
-    "VERIFYSMTP_MAILACCOUNT": "SMTP-Accounteinstellungen prüfen",
-    "GOTOREALTIME_MAILACCOUNT": "Direkt zur Echtzeitansicht Konto",
-    "GOTO_MAILACCOUNT": "Zum E-Mail Konto gehen",
+    "VERIFYSMTP_MAILACCOUNT": "Überprüfen Sie die SMTP-",
+    "GOTOREALTIME_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
+    "GOTO_MAILACCOUNT": "In Echtzeit, E-Mail Konto",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "INFO": "Information",
+    "IN_USE": "Im Einsatz",
+    "AGENTSADD_QUEUE": "Agenten zu Warteschlange hinzufügen",
+    "INFO": "Info",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_MAILQUEUE": "Direkt zur Echtzeit-Warteschlange",
-    "PARTIALPAUSE": "Teilpause",
+    "GOTOREALTIME_MAILQUEUE": "In Echtzeit, E-Mail Warteschlange",
+    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
-    "SPYINTERACTION": "Anzeigen",
+    "SPYINTERACTION": "Spy",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Notiz",
+    "NOTE": "Hinweis",
     "TAGS": "Tags",
-    "INTERACTIONS_MAILACCOUNT": "Direkt zu den Interaktionen",
-    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "PENDING": "Warten auf Rückmeldung",
-    "SEND_AS_PENDING": "Senden und auf Rückmeldung warten",
-    "SEND_AND_CLOSE": "Senden und schließen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
-    "NO_MAILCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NEW_MAILCANNEDANSWER": "Neue Textvorlage",
-    "ADD_MAILCANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_MAILCANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_MAILCANNEDANSWER": "Textvorlage löschen",
+    "INTERACTIONS_MAILACCOUNT": "Zu Wechselwirkungen gehen",
+    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
+    "PENDING": "Ausstehend",
+    "SEND_AS_PENDING": "Senden als Ausstehend",
+    "SEND_AND_CLOSE": "Senden und Schließen",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "NO_MAILCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
+    "NEW_MAILCANNEDANSWER": "Neue vordefinierte Antowrt",
+    "ADD_MAILCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_MAILCANNEDANSWER": "Vordefiierte Antwort bearbeiten",
+    "DELETE_MAILCANNEDANSWER": "Vordefinierte Antwort löschen",
     "SHOW_ORIGINAL_MESSAGE": "Ursprüngliche Nachricht anzeigen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "ACCEPTED": "Akzeptiert",
     "FONT_FAMILY": "Schriftfamilie",
     "FONT_SIZE": "Schriftgröße",
-    "MARK_AS_UNREAD": "Als ungelesen markieren",
-    "ADD_MAILSUBSTATUS": "Zwischenstatus hinzufügen",
-    "DELETE_MAILSUBSTATUS": "Zwischenstatus löschen",
-    "EDIT_MAILSUBSTATUS": "Zwischenstatus bearbeiten",
-    "MAILSUBSTATUSES": "E-Mail Zwischenstatus",
-    "NEW_MAILSUBSTATUS": "Neuer Zwischenstatus",
-    "SEND_AS": "Senden als",
-    "COMMAND": "Eingabe",
+    "MARK_AS_UNREAD": "als ungelesen markieren",
+    "ADD_MAILSUBSTATUS": "Unterstatus hinzufügen",
+    "DELETE_MAILSUBSTATUS": "Löschen",
+    "EDIT_MAILSUBSTATUS": "Bearbeiten",
+    "MAILSUBSTATUSES": "E-Mail-Unterstatus",
+    "NEW_MAILSUBSTATUS": "Neuer Unterstatus",
+    "SEND_AS": "Senden Als",
+    "COMMAND": "Befehl",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
-    "VARIABLE": "Variabel",
+    "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Sound abspielen",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klingen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "WAITFORTHEASSIGNEDAGENT": "Auf zugewiesenen Agenten warten",
+    "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Tag",
-    "AGENTTRANSFER": "Transfer an Agenten erlauben",
-    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "QUEUETRANSFER": "Transfer in Warteschlange erlauben",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
-    "TRANSFER": "Weiterleitung",
-    "AGENTADD_MAILACCOUNT": "Agenten zum E-Mail Konto hinzufügen",
+    "TAG": "Etikett",
+    "AGENTTRANSFER": "Agentenübertragung",
+    "AGENTTRANSFERTIMEOUT": "Zeitlimit für Agentenübertragungen",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
+    "TRANSFER": "Transfer",
+    "AGENTADD_MAILACCOUNT": "Fügen Sie dem E-Mail-Konto Agent hinzu",
     "YOU_ARE_REGISTERED_AS_A": "Sie sind registriert als",
-    "CANNEDANSWERS": "Textvorlagen",
-    "DOWNLOAD_INTERACTION": "Interaktion herunterladen",
-    "MAILCANNEDANSWERS": "E-Mail Textvorlagen",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "DOWNLOAD_INTERACTION": "Herunterladen",
+    "MAILCANNEDANSWERS": "Vordefinierte Antworten",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "DOWNLOAD": "Herunterladen",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "PausenID während Qualifizierung",
-    "ADVANCED": "Erweitert",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung angehalten",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Herunterladen ohne Anhang",
-    "DOWNLOAD_WITH_ATTACHMENT": "Herunterladen inkl. Anhang",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Zwingende Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
+    "ADVANCED": "Fortgeschritten",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Ohne Anhang herunterladen",
+    "DOWNLOAD_WITH_ATTACHMENT": "Download mit Anhang",
     "LASTMESSAGE": "Letzte Nachricht",
     "REPLY_TYPE": "Antworttyp",
     "CLOUD_PROVIDER": "Cloud-Anbieter",
index 0c88a32..3c1e70e 100644 (file)
@@ -55,7 +55,7 @@
     "PARTIALPAUSE": "Pausa Parcial",
     "BUSY": "Ocupado",
     "TIMER": "Cronômetro",
-    "IDLE": "Ocioso",
+    "IDLE": "Disponível",
     "CAPACITY": "Capacidade",
     "UNPAUSE": "Fim da Pausa",
     "DEFAULT_PAUSE": "Pausa Padrão",
@@ -66,7 +66,7 @@
     "SMS": "Sms",
     "OPENCHANNEL": "Open channel",
     "FAX": "Fax",
-    "REALTIME": "Tempo Real",
+    "REALTIME": "Tempo real",
     "AGENTS": "Agentes",
     "QUEUES": "Filas",
     "ACCOUNTS": "Contas",
     "EDIT_GOTOIF": "Editar GotoIf",
     "CONDITION": "Condição",
     "TRUEPRIORITY": "Verdadeira prioridade",
-    "FALSEPRIORITY": "Falsa Prioridade",
+    "FALSEPRIORITY": "Falsa prioridade",
     "GOTOP": "GotoP",
     "EDIT_GOTOP": "Editar GotoP",
     "PRIORITY": "Prioridade",
     "DOWNLOAD_WITHOUT_ATTACHMENT": "Download sem anexo",
     "DOWNLOAD_WITH_ATTACHMENT": "Download com anexo",
     "LASTMESSAGE": "Última mensagem",
-    "REPLY_TYPE": "Tipo de Resposta",
+    "REPLY_TYPE": "Tipo de resposta",
     "CLOUD_PROVIDER": "Provedor de nuvem",
     "CREDENTIALS": "Credenciais",
     "CUSTOM": "Personalizado",
-    "MODERN_AUTHENTICATION": "Autenticação Moderna"
+    "MODERN_AUTHENTICATION": "Autenticação moderna"
   }
 }
index 3c09c82..52050f2 100644 (file)
 {
   "MOTIONDIALER": {
-    "MOVE_HOPPERFINAL": "Kontakt bewegen zu Abgeschlossen",
+    "MOVE_HOPPERFINAL": "Kontakt wiederherstellen",
     "RESTORECONTACTS": "Kontakte wiederherstellen",
-    "NO_SUCH_NUMBER": "Gegenstelle nicht gefunden",
-    "DIALORDERBYSCHEDULEDAT": "Reihenfolge Wählen nach Planungsdatum",
-    "ASC": "Aufsteigend",
-    "DESC": "Absteigend",
-    "RECALLAGENT": "Agenten erneut anrufen",
-    "DIALRECALLINQUEUE": "In der Warteschlange anrufen",
-    "DIALRECALLMETIMEOUT": "Zeitlimit Reservierung Anruf [min]",
-    "RECALLME": "Wiedervorlage an Agenten",
+    "NO_SUCH_NUMBER": "Keine solche Nummer",
+    "DIALORDERBYSCHEDULEDAT": "Bestellung Durch scheduledat",
+    "ASC": "ASC",
+    "DESC": "DESC",
+    "RECALLAGENT": "Agent abrufen",
+    "DIALRECALLINQUEUE": "In der Warteschlange abrufen",
+    "DIALRECALLMETIMEOUT": "Erinnere mich Timeout [min]",
+    "RECALLME": "Mich erinnern",
     "RECALLFAILEDTIMEOUT": "Rückruf fehlgeschlagen",
-    "PREVIEW_CAMPAIGN": "Vorschau-Kampagne",
-    "PREVIEW_CAMPAIGNS": "Vorschau-Kampagnen",
-    "AMD": "Anrufbeantwortererkennung (AMD)",
-    "AMDTOTALANALYSISTIME": "Zeit für Analyse AB",
-    "AMDACTIVE": "AB-Erkennung aktiv",
-    "AMDINITIALSILENCE": "AB-Erkennung Stille bei Aufbau",
-    "AMDGREETING": "AB-Erkennung Nachricht",
+    "PREVIEW_CAMPAIGN": "Vorschau Kampagnen",
+    "PREVIEW_CAMPAIGNS": "Vorschau Kampagnen",
+    "AMD": "Sternchen Anrufbeantwortererkennung (AMD)",
+    "AMDTOTALANALYSISTIME": "Insgesamt Analyse Zeit",
+    "AMDACTIVE": "AMD",
+    "AMDINITIALSILENCE": "Erste Stille",
+    "AMDGREETING": "Gruß",
     "AMDAFTERGREETINGSILENCE": "Stille nach Begrüßung",
-    "AMDSILENCETHRESHOLD": "Stille Schwellwert",
-    "AMDMINWORDLENGTH": "Min. Wortlänge",
-    "AMDBETWEENWORDSSILENCE": "Stille zwischen 2 Worten",
-    "AMDMAXIMUMWORDLENGTH": "Max. Wortlänge",
-    "AMDMAXIMUMNUMBEROFWORDS": "Maximale Anzahl Wörter",
-    "GOTO_QUEUECAMPAIGN": "Direkt zur Warteschlange",
-    "GOTOREALTIME_QUEUECAMPAIGN": "Direkt zur Echtzeit-Warteschlange",
-    "GOTO_IVRCAMPAIGN": "Direkt zur IVR-Kampagne",
-    "GOTOREALTIME_IVRCAMPAIGN": "Direkt zur Echtzeit-Warteschlange (IVR)",
+    "AMDSILENCETHRESHOLD": "Stille Schwellenwert",
+    "AMDMINWORDLENGTH": "Min. Wort Länge",
+    "AMDBETWEENWORDSSILENCE": "Die Stille zwischen den Worten",
+    "AMDMAXIMUMWORDLENGTH": "Maximale Wortlänge",
+    "AMDMAXIMUMNUMBEROFWORDS": "Maximale Anzahl der Wörter",
+    "GOTO_QUEUECAMPAIGN": "In Echtzeit, wenn Warteschlange Kampagnen gehen",
+    "GOTOREALTIME_QUEUECAMPAIGN": "In Echtzeit, wenn Warteschlange Kampagnen gehen",
+    "GOTO_IVRCAMPAIGN": "In Echtzeit, Ivr-Kampagnen gehen",
+    "GOTOREALTIME_IVRCAMPAIGN": "In Echtzeit, Ivr-Kampagnen gehen",
     "LOGOUT": "An-/Abmelden",
     "EDIT_CAMPAIGN": "Kampagne bearbeiten",
-    "LIMITED": "Limitiert",
-    "IVR_CAMPAIGNS": "IVR-Kampagnen",
-    "MOTIONDIALER": "Outbound-Dialer",
-    "QUEUECAMPAIGNS": "Kampagnen",
+    "LIMITED": "Begrenzt",
+    "IVR_CAMPAIGNS": "Ivr-Kampagnen",
+    "MOTIONDIALER": "Motion Bull",
+    "QUEUECAMPAIGNS": "Warteschlange Kampagnen",
     "IVRCAMPAIGNS": "IVR-Kampagnen",
     "MANAGED": "Verwaltet",
     "AVAILABLE_CONTACTS_FINISHED": "Kontakte abgeschlossen",
-    "HISTORY": "Verlauf",
-    "SCHEDULEDAT": "Geplant am",
-    "HOPPERBLACKS": "Schwarze Liste Kontakte in Ausführung",
-    "NO_HOPPERBLACK_AVAILABLE": "Keine Einträge vorhanden",
-    "HOPPERFINALS": "Kontakte abgeschlossen",
-    "NO_HOPPERFINAL_AVAILABLE": "Keine Einträge vorhanden",
-    "HOPPERHISTORIES": "Kontaktverlauf",
-    "NO_HOPPERHISTORY_AVAILABLE": "Keine Einträge vorhanden",
-    "DELETE_HOPPERHISTORY": "Verlauf löschen",
-    "DELETE_HOPPERFINAL": "Abgeschlossenen Kontakt löschen",
-    "CONTACTID": "KontaktID",
+    "HISTORY": "Geschichte",
+    "SCHEDULEDAT": "Geplant für",
+    "HOPPERBLACKS": "Hopper Blacklist",
+    "NO_HOPPERBLACK_AVAILABLE": "Keine Reihen verfügbar",
+    "HOPPERFINALS": "Hopper Endg.",
+    "NO_HOPPERFINAL_AVAILABLE": "Keine Reihen verfügbar",
+    "HOPPERHISTORIES": "Hopper Geschichte",
+    "NO_HOPPERHISTORY_AVAILABLE": "Keine Reihen verfügbar",
+    "DELETE_HOPPERHISTORY": "Löschen",
+    "DELETE_HOPPERFINAL": "Löschen",
+    "CONTACTID": "Kontakt-ID",
     "STARTTIME": "Startzeit",
-    "RESPONSETIME": "Antwortzeit",
+    "RESPONSETIME": "Reaktionszeit",
     "ENDTIME": "Endzeit",
     "STATUS": "Status",
-    "HOPPERS": "Kontakte in Ausführung",
-    "NO_HOPPER_AVAILABLE": "Keine Informationen verfügbar",
-    "EDIT_HOPPER": "Kontakte in Ausführung bearbeiten",
-    "DELETE_HOPPER": "Kontakte in Ausführung löschen",
-    "FINAL": "Abgeschlossen",
+    "HOPPERS": "Hopper",
+    "NO_HOPPER_AVAILABLE": "Keine Reihen verfügbar",
+    "EDIT_HOPPER": "Bearbeiten Hopper",
+    "DELETE_HOPPER": "Löschen Hopper",
+    "FINAL": "Endg.",
     "BLACKLIST": "Schwarze Liste",
     "NAME": "Name",
-    "VOICEQUEUES": "Anruf-Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "VOICEQUEUES": "Voice Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "BACK": "Zurück",
-    "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
-    "DELETE_VOICEDISPOSITION": "Qualifizierung für Anrufe löschen",
-    "EDIT_VOICEDISPOSITION": "Qualifizierung für Anrufe bearbeiten",
-    "EDIT_VOICEQUEUE": "Warteschlange bearbeiten",
+    "SELECTED": "Ausgewählte",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "DELETE_VOICEDISPOSITION": "Löschen Stimme Disposition",
+    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
+    "EDIT_VOICEQUEUE": "Edit Voice Warteschlange",
     "DELETE_VOICEQUEUE": "Warteschlange löschen",
-    "MOHSOUNDS": "Wartemusik",
+    "MOHSOUNDS": "Moh-Sounds",
     "STRATEGY": "Strategie",
     "DESCRIPTION": "Beschreibung",
     "INTERVAL": "Zeitintervall",
-    "ADD_VOICEQUEUE": "Anruf-Warteschlange hinzufügen",
-    "NEW_QUEUECAMPAIGN": "Neue Warteschlangen-Kampagne",
+    "ADD_VOICEQUEUE": "Voice Warteschlange hinzufügen",
+    "NEW_QUEUECAMPAIGN": "Neue Warteschlange Kampagne",
     "ACTIVE": "Aktiv",
     "METHOD": "Methode",
-    "POWERLEVEL": "Level Power-Dialing",
-    "DROPRATE": "Droprate",
-    "AGENTBUSYFACTOR": "Faktor Agent besetzt",
-    "PREDICTIVEOPTIMIZATION": "Optimierung Predictive-Dialing",
-    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Prozentsatz Optimierung Predictive-Dialing",
-    "PREDICTIVEINTERVAL": "Intervall Predictive-Dialing",
-    "ADD_QUEUECAMPAIGN": "Kampagne hinzufügen",
+    "POWERLEVEL": "Leistung",
+    "DROPRATE": "Absenkgeschwindigkeit",
+    "AGENTBUSYFACTOR": "Agent besetzt Faktor",
+    "PREDICTIVEOPTIMIZATION": "Prädiktive Optimierung",
+    "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Prädiktive Optimierung Prozentsatz",
+    "PREDICTIVEINTERVAL": "Predictive Intervall",
+    "ADD_QUEUECAMPAIGN": "Warteschlange hinzufügen Kampagne",
     "CAMPAIGN": "Kampagne",
     "MAXCONCURRENTCALLS": "Max. Anzahl gleichzeitiger Anrufe",
-    "CONCURRENTCALLS": "Anzahl gleichzeitiger Anrufe",
-    "ORIGINATE": "Rufaufbau",
-    "ORIGINATECALLERIDNAME": "Name Anrufer-ID",
-    "ORIGINATECALLERIDNUMBER": "Angezeigte Nummer",
-    "ORIGINATETIMEOUT": "Zeitüberschreitung Rufaufbau",
+    "CONCURRENTCALLS": "Max. Anzahl gleichzeitiger Anrufe",
+    "ORIGINATE": "Stammen",
+    "ORIGINATECALLERIDNAME": "Die Anrufer-ID-Namen",
+    "ORIGINATECALLERIDNUMBER": "Anrufer-ID-Nummer",
+    "ORIGINATETIMEOUT": "Stammen Timeout",
     "QUEUEOPTIONS": "Warteschlangenoptionen",
-    "QUEUETIMEOUT": "Zeitüberschreitung Warteschlange",
-    "CALLYSQUAREPROJECT": "Call-Flow Projekt",
-    "RETRYANDFREQUENCY": "Automatische Wiedervorlage",
+    "QUEUETIMEOUT": "Warteschlange Timeout",
+    "CALLYSQUAREPROJECT": "Cally Square Projekt",
+    "RETRYANDFREQUENCY": "Wiederholen Sie Einstellungen",
     "GLOBAL": "Global",
-    "GLOBALMAXRETRY": "Max. Wiederversuche",
-    "CONGESTION": "Leitungen belegt",
-    "CONGESTIONMAXRETRY": "Max. Wiederversuche bei \"Leitungen belegt\"",
-    "CONGESTIONRETRYTIME": "Erneuter Versuch nach (Minuten)",
-    "BUSYMAXRETRY": "Max. Wiederversuche bei \"Besetzt\"",
-    "BUSYRETRYTIME": "Erneuter Versuch nach (Minuten)",
+    "GLOBALMAXRETRY": "Max. Wiederholungen",
+    "CONGESTION": "Überlastung",
+    "CONGESTIONMAXRETRY": "Max. Wiederholungen",
+    "CONGESTIONRETRYTIME": "Wiederholen Zeit [min]",
+    "BUSYMAXRETRY": "Max. Wiederholungen",
+    "BUSYRETRYTIME": "Wiederholen Zeit [min]",
     "NOANSWER": "Keine Antwort",
-    "NOANSWERMAXRETRY": "Max. Wiederversuche bei \"keine Antwort\"",
-    "NOANSWERRETRYTIME": "Erneuter Versuch nach (Minuten)",
-    "QUEUE_PARAMS": "Warteschlangen-Parameter",
-    "ORIGINATED": "Ursprung",
+    "NOANSWERMAXRETRY": "Max. Wiederholungen",
+    "NOANSWERRETRYTIME": "Wiederholen Zeit [min]",
+    "QUEUE_PARAMS": "Queue Parameter",
+    "ORIGINATED": "Entstanden",
     "MESSAGE": "Nachricht",
-    "DROPPED": "Vom System aufgelegt (Drop)",
+    "DROPPED": "Zurück",
     "CREATED_AT": "Erstellt am",
     "LEGEND": {
       "CUSTOM_APPLICATION": "(*) - Benutzerdefinierte Anwendung."
     },
     "ERRORS": {
-      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss gröpßer oder gleich sein als",
-      "DIALRECALLMETIMEOUT_REQUIRED": "Zeitüberschreitung Wiederversuch erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Ungültiges Format Name",
-      "PREFIX_MUST_VALID_PATTERN": "Ungültiges Format Präfix",
-      "NAME_REQUIRED": "Name erforderlich",
-      "TIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
-      "PHONENUMBER_REQUIRED": "Telefonnummer erforderlich",
-      "CONTEXT_REQUIRED": "Kontext erforderlich",
-      "DESTINATIONPATTERN_REQUIRED": "Ziel-Pattern erforderlich",
-      "FULLNAME_REQUIRED": "Vollständiger Name erforderlich",
-      "EMAIL_REQUUIRED": "E-Mail erforderlich",
-      "EMAIL_MUST_VALID": "Ungültiges Format E-Mail",
-      "MAILBOX_REQUIRED": "Mailbox erforderlich",
-      "PASSWORD_REQUIRED": "Passwort erforderlich",
+      "DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "DIALRECALLMETIMEOUT_REQUIRED": "Pflichtfeld",
+      "NAME_MUST_VALID_PATTERN": "Name gültig sein muss eine gültige Muster",
+      "PREFIX_MUST_VALID_PATTERN": "Präfix gültig sein muss eine gültige Muster",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
+      "PHONENUMBER_REQUIRED": "Die Telefonnummer ist erforderlich",
+      "CONTEXT_REQUIRED": "Der Kontext ist erforderlich",
+      "DESTINATIONPATTERN_REQUIRED": "Das Ziel-pattern ist erforderlich",
+      "FULLNAME_REQUIRED": "Der vollständige Name ist erforderlich",
+      "EMAIL_REQUUIRED": "Die E-Mail ist erforderlich",
+      "EMAIL_MUST_VALID": "Die E-Mail muss ein gültiges Format geschrieben werden",
+      "MAILBOX_REQUIRED": "Die Mailbox muss angegeben werden",
+      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
       "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein.",
-      "TIMEZONE_REQUIRED": "Zeitzone erforderlich",
-      "PREFIX_REQUIRED": "Präfix erforderlich",
-      "OPTIONS_REQUIRED": "Optionen erforderlich",
-      "AFTERCALLWORKDURATION_REQUIRED": "Dauer Nacharbeit erforderlich",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Ressource erforderlich",
-      "PHONE_REQUIRED": "Telefonnummer erforderlich",
-      "VALUE_REQUIRED": "Wert erforderlich",
-      "EXTENSION_REQUIRED": "Nebenstelle erforderlich",
-      "PRIORITY_REQUIRED": "Priorität erforderlich",
-      "GLOBALMAXRETRY_REQUIRED": "Max. Wiederversuche erforderlich",
-      "CONGESTIONMAXRETRY_REQUIRED": "Max. Wiederversuche erforderlich",
-      "CONGESTIONRETRYTIME_REQUIRED": "Zeit für frühesten Wiederversuch erforderlich",
-      "BUSYMAXRETRY_REQUIRED": "Max. Wiederversuche erforderlich",
-      "BUSYRETRYTIME_REQUIRED": "Zeit für frühesten Wiederversuch erforderlich",
-      "NOANSWERMAXRETRY_REQUIRED": "Max. Wiederversuche erforderlich",
-      "NOANSWERRETRYTIME_REQUIRED": "Zeit für frühesten Wiederversuch erforderlich",
-      "QUEUETIMEOUT_REQUIRED": "Zeitüberschreitung Warteschlange erforderlich",
-      "ORIGINATETIMEOUT_REQUIRED": "Zeitüberschreitung Rufaufbau erforderlich",
-      "GLOBALINTERVAL_REQUIRED": "Globale Zeitplanung erforderlich",
-      "MAXCONCURRENTCALLS_REQUIRED": "Wert für max. Anzahl gleichzeitiger Anrufe erforderlich",
-      "CONCURRENTCALLS_REQUIRED": "Wert für Anzahl gleichzeitiger Anrufe erforderlich",
-      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Optimierung Predictive-Dialing muss größer oder gleich sein als",
-      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Intervall Predictive-Dialing muss größer oder gleich sein als",
-      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Anzahl gleichzeitiger Anrufe muss größer oder gleich sein als",
-      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung Rufaufbau muss größer oder gleich sein als",
-      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung Warteschlange muss größer oder gleich sein als",
-      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung Agent muss größer oder gleich sein als",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederversuch muss größer oder gleich sein als",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeitszeit muss größer oder gleich sein als",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gewichtung muss größer oder gleich sein als",
-      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Globaler Wert für Wiederholungen muss größer oder gleich sein als",
-      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Wiederversuche bei Leitungsstau muss größer oder gleich sein als",
-      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeit für Wiederversuche bei Leitungsstau muss größer oder gleich sein als",
-      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Anzahl Wiederversuche bei Besetzt muss größer oder gleich sein als",
-      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeit für Wiederversuch bei Besetzt muss größer oder gleich sein als",
-      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Anzahl Wiederversuche bei keiner Antwort muss größer oder gleich sein als",
-      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung bei keiner Antwort muss größer oder gleich sein als",
-      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert gleichzeitige Anrufe muss größer oder gleich sein als",
-      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Level bei Power-Dialing muss kleiner oder gleich sein als",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Prozentsatz Optimierung Predictive-Dialing muss kleiner oder gleich sein als",
-      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Intervall bei Predictive-Dialing muss kleiner oder gleich sein als",
-      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Anzahl gleichzeitiger Anrufe muss kleiner oder gleich sein als",
-      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung bei Rufaufbau muss kleiner oder gleich sein als",
-      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Warteschlange muss kleiner oder gleich sein als",
-      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Anzahl globaler Wiederversuche muss kleiner oder gleich sein als",
-      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Wiederversuche bei Leitungsstau muss kleiner oder gleich sein als",
-      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung bei Leitungsstau muss kleiner oder gleich sein als",
-      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Anzahl Wiederversuche bei Besetzt muss kleiner oder gleich sein als",
-      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeit Wiederversuch bei Besetzt muss kleiner oder gleich sein als",
-      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Anzahl Wiederversuche bei keiner Antwort muss kleiner oder gleich sein als",
-      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung bei keiner Antwort muss kleiner oder gleich sein als",
-      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Anzahl gleichzeitiger Anrufe muss kleiner oder gleich sein als",
-      "EMAIL_REQUIRED": "E-Mail erforderlich",
-      "AGENTTIMEOUT_REQUIRED": "Zeitüberschreitung Agent erforderlich",
-      "INTERVAL_REQUIRED": "Zeitintervall erforderlich",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zufällige letzte Ziffer muss kleiner oder gleich sein als",
-      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Zufällige letzte Ziffer erforderlich",
-      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Abgeschnittene Nummer muss größer oder gleich sein als",
-      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Abgeschnittene Nummer muss kleiner oder gleich sein als",
-      "CUTDIGIT_REQUIRED": "Abgeschnittene Nummer erforderlich",
-      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "AGENT_REQUIRED": "Agent erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pausen-ID bei Qualifizierung erforderlich",
-      "ABANDONEDMAXRETRY_REQUIRED": "Wert erforderlich",
-      "ABANDONEDRETRYTIME_REQUIRED": "Wert erforderlich",
-      "AGENTREJECTMAXRETRY_REQUIRED": "Max. Wiederversuche Agent erforderlich",
-      "AGENTREJECTRETRYTIME_REQUIRED": "Zeitüberschreitung Agent erforderlich",
-      "DROPMAXRETRY_REQUIRED": "Max. Drop-Rate erforderlich",
-      "DROPRETRYTIME_REQUIRED": "Zeit für Wiederversuch bei Drop-Call erforderlich",
-      "MACHINEMAXRETRY_REQUIRED": "Max. Anzahl Wiederversuche bei Anrufbeantworter erforderlich",
-      "MACHINERETRYTIME_REQUIRED": "Zeitüberschreitung bei Anrufbeantworter erforderlich",
-      "NOSUCHNUMBERMAXRETRY_REQUIRED": "Max. Anzahl Wiederversuche bei falscher Nummer erforderlich",
-      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Zeit nach falscher Nummer erforderlich",
-      "CALLYSQUAREPROJECT_REQUIRED": "Call-Flow Projekt erforderlich",
-      "TRUNK_REQUIRED": "SIP-Trunk erforderlich",
-      "ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Anzahl Wiederversuche bei Nummer nicht erreicht muss kleiner oder gleich sein als",
-      "ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeit bei Nummer nicht erreicht muss kleiner oder gleich sein als",
-      "AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Anzahl Wiederversuche bei Ablehnung durch Agenten muss kleiner oder gleich sein als",
-      "AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeit bei Ablehnung durch Agenten muss kleiner oder gleich sein als",
-      "DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Wiederversuche bei Drop-Call muss kleiner oder gleich sein als",
-      "DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeit nach Drop-Call muss kleiner oder gleich sein als",
-      "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Anzahl Wiederversuche bei Anrufbeantworter muss kleiner oder gleich sein als",
-      "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeit bei Anrufbeantworter muss kleiner oder gleich sein als",
-      "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Anzahl Wiederversuche bei falscher Nummer muss kleiner oder gleich sein als",
-      "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeit bei falscher Nummer muss kleiner oder gleich sein als",
+      "TIMEZONE_REQUIRED": "Die Zeitzone ist erforderlich",
+      "PREFIX_REQUIRED": "Das Präfix ist erforderlich,",
+      "OPTIONS_REQUIRED": "Die Optionen sind Erforderlich",
+      "AFTERCALLWORKDURATION_REQUIRED": "Die Arbeit nach Anruf Dauer ist erforderlich",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Die Technologie/Ressource ist erforderlich",
+      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
+      "VALUE_REQUIRED": "Der Wert ist erforderlich",
+      "EXTENSION_REQUIRED": "Die Verlängerung ist erforderlich",
+      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
+      "GLOBALMAXRETRY_REQUIRED": "Max. Wiederholungen ist erforderlich",
+      "CONGESTIONMAXRETRY_REQUIRED": "Max. Wiederholungen ist erforderlich",
+      "CONGESTIONRETRYTIME_REQUIRED": "Zeit für Wiederholungen ist erforderlich",
+      "BUSYMAXRETRY_REQUIRED": "Max. Wiederholungen ist erforderlich",
+      "BUSYRETRYTIME_REQUIRED": "Zeit für Wiederholungen ist erforderlich",
+      "NOANSWERMAXRETRY_REQUIRED": "Max. Wiederholungen ist erforderlich",
+      "NOANSWERRETRYTIME_REQUIRED": "Zeit für Wiederholungen ist erforderlich",
+      "QUEUETIMEOUT_REQUIRED": "Warteschlange Timeout ist erforderlich",
+      "ORIGINATETIMEOUT_REQUIRED": "Stammen Timeout ist erforderlich",
+      "GLOBALINTERVAL_REQUIRED": "Globale Intervall ist erforderlich",
+      "MAXCONCURRENTCALLS_REQUIRED": "Der Wert für die maximale Anzahl gleichzeitiger Anrufe ist erforderlich",
+      "CONCURRENTCALLS_REQUIRED": "Der Wert für die Anzahl gleichzeitiger Anrufe ist erforderlich",
+      "POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Leistung muss größer als oder gleich",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die prädiktive Optimierung Prozentsatz muss größer als oder gleich",
+      "PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die prädiktive Intervall muss größer als oder gleich",
+      "MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die maximale Anzahl gleichzeitiger Anrufe muss größer als oder gleich",
+      "ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die stammen Timeout muss größer als oder gleich",
+      "QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Warteschlange Timeout muss größer als oder gleich",
+      "AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Agent Timeout muss größer als oder gleich",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Wiederholung muss größer als oder gleich",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Nachlese Zeit muss größer als oder gleich",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Gewicht muss größer als oder gleich",
+      "GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die globale Max wiederholen muss größer als oder gleich",
+      "CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Überlastung Max wiederholen muss größer als oder gleich",
+      "CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Verkehrsüberlastung erneut Zeit muss größer als oder gleich",
+      "BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die geschäftige Max wiederholen muss größer als oder gleich",
+      "BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die geschäftige Zeit für Wiederholungen muss größer als oder gleich",
+      "NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Antwort Nein Max wiederholen muss größer als oder gleich",
+      "NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Zeitüberschreitung für keine Antwort Zeit für Wiederholungen muss größer als oder gleich",
+      "CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die gleichzeitige Anrufe muss größer als oder gleich",
+      "POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Leistung muss kleiner als oder gleich",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die prädiktive Optimierung Prozentsatz muss kleiner als oder gleich",
+      "PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die prädiktive Intervall muss kleiner als oder gleich",
+      "MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die maximale Anzahl gleichzeitiger Anrufe muss kleiner als oder gleich",
+      "ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die stammen Timeout muss kleiner als oder gleich",
+      "QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Warteschlange Timeout muss kleiner als oder gleich",
+      "GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die globale Max wiederholen muss kleiner als oder gleich",
+      "CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Überlastung Max wiederholen muss kleiner als oder gleich",
+      "CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Überlastung Zeit für Wiederholungen muss kleiner als oder gleich",
+      "BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die geschäftige Max wiederholen muss kleiner als oder gleich",
+      "BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die geschäftige Zeit für Wiederholungen muss kleiner als oder gleich",
+      "NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Antwort Nein Max wiederholen muss kleiner als oder gleich",
+      "NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Zeitüberschreitung für keine Antwort Zeit für Wiederholungen muss kleiner als oder gleich",
+      "CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die gleichzeitige Anrufe muss kleiner als oder gleich",
+      "EMAIL_REQUIRED": "Pflichtfeld",
+      "AGENTTIMEOUT_REQUIRED": "Pflichtfeld",
+      "INTERVAL_REQUIRED": "Pflichtfeld",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Pflichtfeld",
+      "CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "CUTDIGIT_REQUIRED": "Pflichtfeld",
+      "RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENT_REQUIRED": "Pflichtfeld",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
+      "ABANDONEDMAXRETRY_REQUIRED": "Pflichtfeld",
+      "ABANDONEDRETRYTIME_REQUIRED": "Pflichtfeld",
+      "AGENTREJECTMAXRETRY_REQUIRED": "Pflichtfeld",
+      "AGENTREJECTRETRYTIME_REQUIRED": "Pflichtfeld",
+      "DROPMAXRETRY_REQUIRED": "Pflichtfeld",
+      "DROPRETRYTIME_REQUIRED": "Pflichtfeld",
+      "MACHINEMAXRETRY_REQUIRED": "Pflichtfeld",
+      "MACHINERETRYTIME_REQUIRED": "Pflichtfeld",
+      "NOSUCHNUMBERMAXRETRY_REQUIRED": "Pflichtfeld",
+      "NOSUCHNUMBERRETRYTIME_REQUIRED": "Pflichtfeld",
+      "CALLYSQUAREPROJECT_REQUIRED": "Pflichtfeld",
+      "TRUNK_REQUIRED": "Pflichtfeld",
+      "ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
       "CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Rufen Sie add.phone nach min. sollte größer oder gleich sein",
       "CALLADDITIONALPHONEAFTERMIN_REQUIRED": "Pflichtfeld"
     },
     "GENERAL": "Allgemein",
-    "AGENTTIMEOUT": "Zeitüberschreitung Agent",
+    "AGENTTIMEOUT": "Agent Timeout",
     "MAXLENGTH": "Maximale Länge",
     "RETRY": "Erneut versuchen",
-    "WRAPUPTIME": "Zeit Nacharbeit",
-    "WEIGHT": "Gewichtung",
-    "JOINWHENEMPTY": "Beitreten, wenn leer",
+    "WRAPUPTIME": "Wrapup Zeit",
+    "WEIGHT": "Gewicht",
+    "JOINWHENEMPTY": "Melden Sie wenn sie leer",
     "LEAVEWHENEMPTY": "Verlassen, wenn leer",
     "HELP": {
-      "DIALORDERBYSCHEDULEDAT": "Reihenfolge Anwahl nach Planung",
-      "DIALRECALLINQUEUE": "Anwahl in Warteschlange",
-      "DIALRECALLMETIMEOUT": "Zeit (Min) für Reservierung des Anrufes an Agenten",
-      "PRIORITY": "Priorität",
-      "AMDMAXIMUMWORDLENGTH": "Maximale Wortlänge für die Anrufbeantworter-Erkennung",
-      "AMDMINWORDLENGTH": "Minimale Wortlänge für die Anrufbeantworter-Erkennung",
-      "AMDSILENCETHRESHOLD": "Sobald die durchschnittliche Lautstärke von Geräuschen diesen Wert (Skala 0 bis 32767) unterschreitet, wird Stille interpretiert",
-      "AMDTOTALANALYSISTIME": "Maximale Zeit für eine Erkennung von Anrufbeantworter oder reale Person",
-      "AMDAFTERGREETINGSILENCE": "Stille nach der Feststellung einer Begrüßung. Wenn überschritten, wird der Anruf als \"reale Person\" klassifiziert",
-      "AMDGREETING": "Maximale Länge für eine Begrüßungsnachricht. Wenn überschritten, wird der Anruf als Anrufbeantworter klassifiziert",
-      "AMDINITIALSILENCE": "Maximale Stille vor der Begrüßungsnachricht. Wenn überschritten, wird der Anruf als Anrufbeantworter klassifiziert",
-      "AMDACTIVE": "Aktivieren oder Deaktivieren der Anrufbeantworter-Erkennung",
-      "AMDBETWEENWORDSSILENCE": "Minimale Dauer der Pause nach einem Wort, bevor ein neues Wort erkannt werden kann",
-      "AMDMAXIMUMNUMBEROFWORDS": "Maximale Anzahl der Wörter in der Begrüßung. Wenn erreicht, wird der Anruf als Anrufbeantworter klassifiziert",
-      "CALLYSQUAREPROJECT": "Legen Sie hier einen Call-Flow für den ausgehenden Anruf fest, bevor dieser in die Warteschleife geleitet wird",
-      "PREFIX": "Vorwahl (Präfix)",
+      "DIALORDERBYSCHEDULEDAT": "Sie Kontakte von Hopper (absteigend oder aufsteigend).",
+      "DIALRECALLINQUEUE": "Planen Sie für die Agenten in der Warteschlange",
+      "DIALRECALLMETIMEOUT": "Zeitintervall (in Minuten), für die mir der Gültigkeitsdauer",
+      "PRIORITY": "Priorität in der Liste",
+      "AMDMAXIMUMWORDLENGTH": "Zulässige Höchstdauer von einer einzigen Stimme auszusprechen.",
+      "AMDMINWORDLENGTH": "Minimale Dauer eines Voice ein Wort betrachtet zu werden.",
+      "AMDSILENCETHRESHOLD": "Wenn die durchschnittliche Höhe der Lärm in einer Probe, die diesen Wert nicht erreichen, aus einer Skala von 0 bis 32767, dann werden wir es als Stille betrachten",
+      "AMDTOTALANALYSISTIME": "Maximale Zeit für den Algorithmus, ob die Audio stellt ein Mensch oder eine Maschine zu entscheiden erlaubt",
+      "AMDAFTERGREETINGSILENCE": "Stille nach der Feststellung einer Begrüßung. Wenn die Zeit überschritten wird, dann ist das Ergebnis der Erkennung als Mensch",
+      "AMDGREETING": "Maximale Länge für eine Grußansage. Wenn die Zeit überschritten wird, dann ist das Ergebnis der Erkennung als Maschine",
+      "AMDINITIALSILENCE": "\"Längstmögliche Stille Dauer, bevor Sie die Grußansage auf. Wenn die Zeit überschritten wird, dann ist das Ergebnis der Erkennung als Maschine",
+      "AMDACTIVE": "Aktivieren oder Deaktivieren von Anrufbeantwortern Erkennung Versuche",
+      "AMDBETWEENWORDSSILENCE": "Minimale Dauer der Stille nach einem Wort, die Audio, die als neues Wort folgt in Betracht zu ziehen",
+      "AMDMAXIMUMNUMBEROFWORDS": "Maximale Anzahl der Wörter in der Begrüßung. Wenn es erreicht wird, dann ist das Ergebnis der Erkennung als Maschine",
+      "CALLYSQUAREPROJECT": "Wenn Sie ein IVR-Projekt aus der Liste aus, das Wählsystem den Anruf an den IVR-Dienst, bevor Sie ihn in einer Warteschlange.",
+      "PREFIX": "Vorwahl",
       "ACTIVE": "Aktiv",
-      "AGENTTIMEOUT": "Definiert die Zeit (in Sekunden), in der die Nebenstelle des Agenten klingelt",
-      "MAXLENGTH": "Maximale Anzahl von Anrufen in der Warteschlange (0 = keine Begrenzung)",
-      "RETRY": "Definiert wie Lange (Sekunden) auf eine Antwort des Agenten gewartet wird, bevor der Anruf beim nächsten Agenten klingelt",
-      "WRAPUPTIME": "Zeit (in Sekunden), in welcher der Agent nach einem Anruf nicht verfügbar ist",
-      "WEIGHT": "Gewichtung der Warteschlangen untereinander, sofern die Agenten auf mehr als einer Warteschlange arbeiten",
-      "JOINWHENEMPTY": "Definiert, ob ein Anruf in die Warteschleife eintreten kann, wenn keine Agenten verfügbar sind",
-      "LEAVEWHENEMPTY": "Trennt den Anruf in der Warteschleife, sofern keine Agenten verfügbar sind",
-      "ANNOUNCEFREQUENCY": "Definiert, wie oft dem Anrufer die aktuelle Warteposition und/oder die erwartete Wartezeit angesagt wird. (0 zum Deaktivieren dieser Funktion)",
-      "MINANNOUNCEFREQUENCY": "Minimale Ansage der Warteposition/Wartezeit. Nützlich, wenn der Anrufer die Warteposition oft wechselt",
-      "PERIODICANNOUNCEFREQUENCY": "Intervall für sich Widerholende Ansagen an den Anrufer",
-      "ANNOUNCEPOSITIONLIMIT": "Warteposition wird nur ab dem eingestellten Wert angesagt",
-      "AFTERCALLWORKDURATION": "Die Dauer der Nacharbeit nach einem Anruf (Sekunden)",
-      "MEMBERDELAY": "Verzögert die Zustellung des Anrufes an den Agenten um den eingestellten Wert (Sekunden)",
-      "MUSICONHOLD": "Definiert die Wartemusik innerhalb der Warteschlange",
-      "ANNOUNCETOAGENT": "Spielt dem Agenten eine Mitteilung über den Ursprung des Anrufes vor der Annahme",
-      "RANDOMPERIODICANNOUNCE": "Bei \"Ja\" werden die definierten Ansagen in einer zufälligen Reihenfolge abgespielt",
-      "ANNOUNCEHOLDTIME": "Definiert, ob die geschätzte Wartezeit zusätzlich zur Wartemusik abgespielt wird. (Ja/Nein/nur ein Mal)",
-      "ANNOUNCECALLERPOSITION": "Definiert, ob die aktuelle Warteposition des Anrufers angesagt wird. Nein = Niemals; Ja = Immer; Limit = nur wenn innerhalb des Limits für Warteposition; Mehr = wenn überhalb des Limits für Warteposition",
-      "REPORTHOLDTIMEAGENT": "Ermöglicht dem Agenten, die Wartezeit des Anrufers zu hören",
-      "PERIODICANNOUNCE": "Reihenfolge der Ansagen innerhalb der Warteschlange",
-      "HOLDTIMEANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für die Ansage der Wartezeit. Bsp: \"Ihre geschätzte Wartezeit beträgt\" Wenn leer, wird keine Ansage abgespielt",
-      "YOUARENEXTANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für die Ansage der ersten Position in der Warteschlange. Bsp: \"Der nächste freie Mitarbeiter wird Ihren Anruf in Kürze entgegennehmen\" Wenn leer, wird keine Ansage abgespielt",
-      "THEREAREANNOUNCE": "Erster Teil der Ansage für die bereits wartenden Anrufe. Bsp: \"Vor Ihnen befinden sich noch..:\"; Wenn leer, wird keine Ansage abgespielt",
-      "WAITINGCALLSANNOUNCE": "Zweiter Teil der Ansage für die bereits wartenden Anrufe. Bsp: \"...Anrufe in der Warteschlange\"; Wenn leer, wird keine Ansage abgespielt",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für die Ansage der geschätzten Wartezeit. Bsp: \"Ihre aktuelle Wartezeit beträgt ca....\" Wenn leer, wird keine Ansage abgespielt",
-      "MINUTESANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für das Wort \"Minuten\". Wenn leer, wird keine Ansage abgespielt",
-      "MINUTEANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für das Wort \"Minute\". Wenn leer, wird keine Ansage abgespielt",
-      "SECONDSANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für das Wort \"Sekunden\". Wenn leer, wird keine Ansage abgespielt",
-      "THANKYOUANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für eine Ansage zum Dank. Bsp: \"Vielen Dank für Ihre Geduld\" Wenn leer, wird keine Ansage abgespielt",
-      "AFTERCALLWORK": "Wenn aktiviert, wird der Agent nach jedem Anruf in eine definierbare Pause zur Nacharbeit gesetzt",
-      "AUTOPAUSE": "Legt fest, ob der Agent in eine automatische pause gesetzt wird, sofern dieser den aktuellen Anruf nicht innerhalb der definierten Zeit entgegennimmt. Wenn ja, wird der Agent in allen zugewiesenen Kampagnen auf Pause gesetzt. ",
-      "RINGINUSE": "Aktivieren/Deaktivieren der Anrufzustellung wenn der Status der Nebenstelle Besetzt ist",
-      "TIMEOUTRESTART": "Wenn ja, wird die Zeitüberschreitung bei Agenten mit \"Besetzt\" oder \"Verbindungsfehler\"-Status übersprungen",
-      "MONITORFORMAT": "Definiert das Dateiformat für Gesprächsaufzeichnungen. Wenn leer, findet keine Gesprächsaufzeichnung statt.",
-      "CONTEXT": "Ermöglicht einem Anrufer, durch Drücken einer einzelnen Taste, die Warteschlange zu verlassen.",
-      "SETINTERFACEVARIABLES": "Wenn aktiviert, können aufgenommene Variabeln vor einem Anruf an den Agenten weitergegeben werden. (Siehe Wiki)",
-      "SETQUEUEVARIABLES": "Wenn aktiviert, können aufgenommene Variabeln nach dem Verlassen der Warteschlange an den Agenten weitergegeben werden. (Siehe Wiki)",
-      "SETQUEUEENTRYVARIABLES": "Wenn aktiviert, können aufgenommene Variabeln beim Eintreten in die Warteschlange an den Agenten weitergegeben werden. (Siehe Wiki)",
-      "RECORDING": "Automatische Gesprächsaufzeichnung Deaktivieren/Aktivieren",
-      "VOICEMAIL_CONTEXT": "Kontext für Voicemail",
-      "METHOD": "Wählform für Outbound-Dialing",
-      "POWERLEVEL": "Anzahl der anzurufenden Kontakte pro verfügbarem Agent",
-      "PREDICTIVEOPTIMIZATION": "Faktor zur Optimierung des Predictive-Dialing",
-      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Prozentsatz basierend auf dem eingestellten Optimierungsfaktor",
-      "PREDICTIVEINTERVAL": "Zeitintervall (in Minuten) innerhalb dessen die Berechnung der angebotenen (Predictive-) Anrufe stattfindet",
-      "MAXCONCURRENTCALLS": "Maximale Anzahl gleichzeitiger Anwahlen für die Outboundkampagne (0 = keine Begrenzung)",
-      "CONCURRENTCALLS": "Anzahl gleichzeitiger Anwahlen für die Outboundkampagne",
-      "ORIGINATECALLERIDNAME": "Name (ID) des ausgehenden Anrufes",
-      "ORIGINATECALLERIDNUMBER": "Angezeigte Nummer des ausgehenden Anrufes",
-      "ORIGINATETIMEOUT": "Zeit (in Sekunden) für die Entgegennahme eines ausgehenden Anrufes. Nach Ablauf der Zeit wird der Anruf als \"keine Antwort\" klassifiziert",
-      "QUEUETIMEOUT": "Zeit (in Sekunden) in welcher ein ausgehender Anruf in der Warteschleife gehalten wird, bevor das System auflegt (Drop-Call). Min: 1 Sek - Max: 999 Sek",
-      "GLOBALMAXRETRY": "Maximale Anzahl an Anrufversuchen, bevor der Kontakt verworfen wird",
-      "CONGESTIONMAXRETRY": "Maximale Anzahl an Anrufversuchen, bevor der Kontakt verworfen wird. (Sofern der Anruf in einen Leitungsstau führt)",
-      "CONGESTIONRETRYTIME": "Zeit (in Minuten), bevor ein Anruf resultierend aus Leitungsstau erneut gewählt wird.",
-      "NOANSWERMAXRETRY": "Maximale Anzahl Wiederversuche bei keiner Antwort",
-      "NOANSWERRETRYTIME": "Min. Zeit (in Minuten), für einen Wiederversuch nach Ergebnis \"keine Antwort\"",
-      "GLOBALINTERVAL": "Globales Zeitintervall, in welchem der Dialer ausgehende Anrufe tätigt. ",
+      "AGENTTIMEOUT": "Gibt die Anzahl von Sekunden, die ein Agent Gerät klingeln.",
+      "MAXLENGTH": "Gibt die maximale Anzahl der Anrufer in der Wartezeit in der Warteschlange. Ein Wert von Null bedeutet, dass eine unbegrenzte Anzahl von Anrufern in der Warteschlange erlaubt sind.",
+      "RETRY": "Gibt die Anzahl der Sekunden, bevor das nächste Mitglied in der Warteschlange, wenn der Wert für das Zeitlimit ausgeschöpft ist, während versucht wird, eine Mitglied der Warteschlange, um an den Zahnkranz zu warten.",
+      "WRAPUPTIME": "Die Anzahl der Sekunden, die ein Mitglied in einer Warteschlange nicht mehr verfügbar, nachdem Sie einen Anruf halten.",
+      "WEIGHT": "Legt das Gewicht einer Warteschlange. Eine Warteschlange mit einem höheren Gewicht definiert wird erste Priorität erhalten, wenn die Mitglieder mit mehreren Warteschlangen zugeordnet sind.",
+      "JOINWHENEMPTY": "Steuert, ob ein Anrufer in der Warteschlange hinzugefügt wird, wenn keine Mitglieder vorhanden sind.",
+      "LEAVEWHENEMPTY": "Verwendet, um zu steuern, ob Anrufer aus der Warteschlange gekickt werden, wenn Mitglieder nicht mehr Anrufe verfügbar sind.",
+      "ANNOUNCEFREQUENCY": "Legt fest, wie oft wir die Position des Anrufers und/verkünden sollten oder geschätzte Wartezeit in der Warteschlange. Stellen Sie diesen Wert auf Null zu deaktivieren.",
+      "MINANNOUNCEFREQUENCY": "Gibt die minimale Zeit, die verstreichen muss, bevor wir die Position des Anrufers in der Warteschlange erneut zu verkünden. Dies wird verwendet, wenn der Anrufer häufig ändern kann, wird der Anrufer hören mehrere Updates in einem kurzen Zeitraum zu verhindern.",
+      "PERIODICANNOUNCEFREQUENCY": "Gibt an, wie oft wir in regelmäßigen Abständen Mitteilungen an den Anrufer machen sollte.",
+      "ANNOUNCEPOSITIONLIMIT": "Wenn Sie definiert haben verkünden - Position als entweder einzuschränken oder mehr.",
+      "AFTERCALLWORKDURATION": "Die Dauer der Pause durch die Option \"Arbeit nach Anruf ausgelöst",
+      "MEMBERDELAY": "Verwendet, wenn es eine Verzögerung, bevor der Anrufer und Warteschlange Mitglied miteinander verbunden werden möchten.",
+      "MUSICONHOLD": "Setzt die Musik klasse von einer bestimmten Warteschlange verwendet werden.",
+      "ANNOUNCETOAGENT": "Für das Spielen eine Ansage, die auf den Agenten, der den Anruf entgegengenommen, in der Regel verwendet, um ihn wissen zu lassen, was der Anrufer Warteschlange kommt.",
+      "RANDOMPERIODICANNOUNCE": "Wenn \"yes\" festgelegt ist, wird die definierte in regelmäßigen Abständen Mitteilungen in einer zufälligen Reihenfolge wiedergeben.",
+      "ANNOUNCEHOLDTIME": "Legt fest, ob die geschätzte Wartezeit zusammen mit dem in regelmäßigen Abständen Mitteilungen gespielt werden sollte.",
+      "ANNOUNCECALLERPOSITION": "Legt fest, ob die Position des Anrufers in der Warteschlange zu Ihrem angekündigt werden sollte. Ist Nein eingestellt, wird die Position wird nie bekannt gegeben. Wenn Sie auf \"Ja\" setzen, wird die Position des Anrufers wird immer bekannt gegeben werden. Wenn der Wert eingestellt ist, wird der Anrufer ihre Position in der Warteschlange hört nur, wenn er sich innerhalb der Grenze von verkünden - Position - Grenzwert festgelegt werden. Wenn der Wert auf mehr eingestellt ist, wird der Anrufer ihre Position zu hören, wenn Sie über die Anzahl von verkünden - Position - Grenzwert definiert ist.",
+      "REPORTHOLDTIMEAGENT": "Ermöglicht die Berichterstattung des Anrufers Haltezeit auf die Warteschlange, die vor dem Bridging.",
+      "PERIODICANNOUNCE": "Eine Reihe von in regelmäßigen Abständen Mitteilungen gespielt zu werden, spielte in der Reihenfolge, in der sie definiert sind.",
+      "HOLDTIMEANNOUNCE": "Wenn nicht angegeben, wird der Standardwert spielen (\"hold\"). Wenn auf einen leeren Wert gesetzt ist, wird die Aufforderung nicht gespielt werden.",
+      "YOUARENEXTANNOUNCE": "Wenn nicht angegeben, wird der Standardwert (\" Jetzt sind Sie in erster Linie\"). Wenn auf einen leeren Wert gesetzt ist, wird die Aufforderung nicht gespielt werden.",
+      "THEREAREANNOUNCE": "Wenn nicht angegeben, wird der Standardwert spielen (\"Es gibt\"). Wenn auf einen leeren Wert gesetzt ist, wird die Aufforderung nicht gespielt werden.",
+      "WAITINGCALLSANNOUNCE": "Wenn nicht angegeben, wird der Standardwert (\"Wartende Anrufe\"). Wenn auf einen leeren Wert gesetzt ist, wird die Aufforderung nicht gespielt werden.",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Wenn nicht angegeben, wird der Standardwert spielen (\"Das Voraussichtliche Wartezeit\"). Wenn auf einen leeren Wert gesetzt ist, wird die Aufforderung nicht gespielt werden.",
+      "MINUTESANNOUNCE": "Wenn nicht angegeben, wird der Standardwert spielen (\"min\"). Wenn auf einen leeren Wert gesetzt ist, wird die Aufforderung nicht gespielt werden.",
+      "MINUTEANNOUNCE": "Wenn nicht angegeben, wird der Standardwert (\"Minute\"). Wenn auf einen leeren Wert gesetzt ist, wird die Aufforderung nicht gespielt werden.",
+      "SECONDSANNOUNCE": "Wenn nicht angegeben, wird der Standardwert spielen (\"Sekunden\"). Wenn auf einen leeren Wert gesetzt ist, wird die Aufforderung nicht gespielt werden.",
+      "THANKYOUANNOUNCE": "Wenn nicht angegeben, wird der Standardwert spielen (\"Vielen Dank für Ihr Geduld\"). Wenn auf einen leeren Wert gesetzt ist, wird die Aufforderung nicht gespielt werden.",
+      "AFTERCALLWORK": "Wenn aktiv, wird für den Agenten in Pause nach einer abgeschlossenen Anruf in die Warteschlange eingestellt werden.",
+      "AUTOPAUSE": "Aktiviert/deaktiviert das automatische Anhalten der Mitglieder, die es versäumen, um einen Anruf zu beantworten. Wenn aktiv Ursachen dieses Mitglied in allen Warteschlangen er ist Mitglied der angehalten zu werden.",
+      "RINGINUSE": "Verwendet Senden von Anrufen an Mitglieder, deren Status im Einsatz ist zu vermeiden.",
+      "TIMEOUTRESTART": "Wenn die Einstellung Ja lautet, setzt den Timeout für einen Agenten zu beantworten, wenn entweder ein Besetztzeichen oder Staus Status aus dem Kanal empfangen wird.",
+      "MONITORFORMAT": "Gibt das Dateiformat zu verwenden, wenn Sie die Aufnahme. Wenn der Monitor-Format deaktiviert ist, werden die Anrufe nicht aufgezeichnet werden.",
+      "CONTEXT": "Kann ein Anrufer in die Warteschlange verlassen Sie durch Drücken einer einzigen MFV-Ziffer. Wenn ein Kontext angegeben ist und der Anrufer gibt eine Reihe, kann diese Ziffer wird der Versuch unternommen, im Rahmen angegebenen ausgeziffert werden, und Nummernplan Ausführung wird es weiter.",
+      "SETINTERFACEVARIABLES": "Wenn die Einstellung Ja lautet, gerade vor der Anrufer mit einer Warteschlange Mitglied überbrückt werden einige Variablen gesetzt werden (siehe Wiki)",
+      "SETQUEUEVARIABLES": "Wenn die Einstellung Ja lautet, gerade vor der Anrufer mit einer Warteschlange Mitglied überbrückt werden, und kurz vor dem Anrufer die Warteschlange verlassen einige Variablen gesetzt werden (siehe Wiki)",
+      "SETQUEUEENTRYVARIABLES": "Wenn die Einstellung Ja lautet, gerade vor der Anrufer mit einer Warteschlange Mitglied überbrückt werden einige Variablen gesetzt werden (siehe Wiki)",
+      "RECORDING": "Die Anrufaufzeichnung aktivieren",
+      "VOICEMAIL_CONTEXT": "Im Zusammenhang mit der relativen Erweiterung.",
+      "METHOD": "Outbound Dialer Methode.",
+      "POWERLEVEL": "Anzahl der Kontakte, für einen verfügbaren Agenten.",
+      "PREDICTIVEOPTIMIZATION": "Ein Faktor in der vorbestimmten Algorithmus zu optimieren.",
+      "PREDICTIVEOPTIMIZATIONPERCENTAGE": "Prozentsatz, der auf die ausgewählten prädiktive Optimierung Faktor",
+      "PREDICTIVEINTERVAL": "Zeitintervall in Minuten mit prädiktiver Algorithmus berücksichtigt werden Anrufe zu berechnen für die Optimierung der prädiktive Optimierung Faktor zu generieren",
+      "MAXCONCURRENTCALLS": "Die maximale Anzahl gleichzeitiger Anrufe, die vom Outbound Dialer entstanden sein wird.",
+      "CONCURRENTCALLS": "Die maximale Anzahl gleichzeitiger Anrufe, die vom Outbound Dialer für diese Kampagne entstanden sein wird.",
+      "ORIGINATECALLERIDNAME": "Ausgehende Anrufer-ID-Namen",
+      "ORIGINATECALLERIDNUMBER": "Ausgehende Anrufer-ID-Nummer",
+      "ORIGINATETIMEOUT": "Zeit in Sekunden, die ausgehende Anrufe mit Ursprung Verbindung herzustellen. Wenn die Busverbindungen nicht hergestellt ist, wird der Status stammen, wird keine Antwort sein.",
+      "QUEUETIMEOUT": "Zeit (in Sekunden) ein Anruf in der Warteschlange warten, bevor es gelöscht wird (Min 1 und Max. 999)",
+      "GLOBALMAXRETRY": "Maximale Anzahl, wie oft ein Kontakt genannt wird, bevor es geschlossen",
+      "CONGESTIONMAXRETRY": "Maximale Anzahl, wie oft ein Kontakt konnte nicht für Staus Grund genannt wird, bevor es geschlossen",
+      "CONGESTIONRETRYTIME": "Zeit in Minuten, bevor Sie es erneut versuchen einen Kontakt für Staus Grund fehlgeschlagen zu erreichen.",
+      "NOANSWERMAXRETRY": "Maximale Anzahl, wie oft ein Kontakt konnte nicht für Keine Antwort Grund genannt wird, bevor es geschlossen",
+      "NOANSWERRETRYTIME": "Zeit in Minuten, bevor Sie es erneut versuchen einen Kontakt für Keine Antwort Reason zu erreichen.",
+      "GLOBALINTERVAL": "Globale Zeit, in der sich der Dialer erlaubt ist, Kontakte zu nennen. Bitte achten Sie, wenn Sie dieses Feld nicht ändern. Wir sind nicht verantwortlich oder haftbar für die Nichteinhaltung mit Autodialer Gesetze und Bestimmungen einzuhalten.",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "TIMEOUT": "Anzahl Sekunden in denen ein Anruf bei einem Agenten klingelt, bevor der nächste Agent angefragt wird",
-      "CALLYSQUAREPROJECTPREVIEW": "Call-Flow wird vor der Zustellung an einen Agenten verwendet (Outbound-IVR)",
-      "CALLYSQUAREPROJECTPREVIEW2": "Call-Flow für den Transfer, wenn Anrufer aufgelegt hat oder nicht erreichbar ist",
-      "RUNIFHANGUPAGENT": "Call-Flow auch dann starten, wenn der Agent aufgelegt hat",
-      "CALLYSQUAREPROJECT2": "Call-Flow zur Weiterleitung des Anrufes nach der Warteschlange - Definiert durch Zeitüberschreitung",
-      "RANDOMLASTDIGITCALLERIDNUMBER": "Wenn der Wert größer als 0, werden die jeweils letzten Ziffern der ausgehenden Nummer zufällig generiert. (Hinweis: es dürfen nur real existierende und registrierte Nummern verwendet werden)",
-      "BUSYMAXRETRY": "Maximale Anzahl Wiederversuche bei \"Besetzt\" oder \"Fehlgeschlagen\"",
-      "BUSYRETRYTIME": "Zeit (in Minuten), für Wiederversuch bei \"Besetzt\" oder \"Fehlgeschlagen\"",
-      "MANDATORYDISPOSITIONPAUSEID": "Agentenstatus während der Qualifizierung eines Kontaktes",
-      "PREDICTIVEMAXTHRESHOLD": "Sofern der Prozentsatz der freien Agenten innerhalb des definierten Zeitraumes höher als der vorhergesagte Zeitraum ist, findet eine neue Kalkulation statt.",
-      "PREDICTIVEMINTHRESHOLD": "Sofern der Prozentsatz der freien Agenten innerhalb des definierten Zeitraumes niedriger als der vorhergesagte Zeitraum ist, findet eine neue Kalkulation statt.",
-      "ABANDONEDMAXRETRY": "Maximale Anzahl Wiederversuche bei \"Verlassen\"",
-      "ABANDONEDRETRYTIME": "Zeit (in Minuten), für Wiederversuch bei \"Verlassen\"",
-      "AGENTREJECTMAXRETRY": "Maximale Anzahl Wiederversuche, sofern der Anruf von einem Agenten abgelehnt wurde",
-      "AGENTREJECTRETRYTIME": "Zeit (in Minuten), vor einem Wiederversuch, wenn der Anruf von einem Agenten abgelehnt wurde",
-      "DROPMAXRETRY": "Maximale Anzahl Wiederversuche, beim Auflegen des System (Drop-Call)",
-      "DROPRETRYTIME": "Zeit (in Minuten), vor einem Wiederversuch beim Auflegen des Systems (Drop-Call)",
-      "MACHINEMAXRETRY": "Maximale Anzahl Wiederversuche wenn ein Anrufbeantworter erkannt wurde",
-      "MACHINERETRYTIME": "Zeit (in Minuten), vor einem Wiederversuch wenn ein Anrufbeantworter erkannt wurde",
-      "NOSUCHNUMBERETRYTIME": "Zeit (in Minuten), vor einem Wiederversuch bei \"Nummer falsch\" ",
-      "NOSUCHNUMBERMAXRETRY": "Maximale Anzahl Wiederversuche bei \"Nummer falsch\"",
-      "NOSUCHNUMBERRETRYTIME": "Zeit (in Minuten), vor einem Wiederversuch bei \"Nummer falsch\" ",
+      "TIMEOUT": "Gibt die Anzahl von Sekunden an, die ein Gerät klingeln.",
+      "CALLYSQUAREPROJECTPREVIEW": "Wenn Sie ein IVR-Projekt auswählen, leitet der Dialer den Anruf an das IVR weiter, wenn ein Agent antwortet (das IVR wird an den Agenten weitergeleitet).",
+      "CALLYSQUAREPROJECTPREVIEW2": "Wenn Sie ein IVR-Projekt auswählen, leitet der Dialer den Anruf an das IVR weiter, wenn ein Client aufgelegt oder nicht erreichbar ist (das IVR wird an den Agenten weitergeleitet).",
+      "RUNIFHANGUPAGENT": "Führen Sie Cally Square Project nach, auch wenn der Agent den Anruf auflegt",
+      "CALLYSQUAREPROJECT2": "Wenn Sie ein IVR-Projekt auswählen, leitet der Dialer den Anruf nach der Warteschlange an das IVR weiter. (Wenn die Warteschlange nach einer Zeitüberschreitung endet)",
+      "RANDOMLASTDIGITCALLERIDNUMBER": "Wenn es größer als 0 ist, erzeugt es die letzten Nummern zufällig aus der Nummer der abgehenden Anrufer-ID",
+      "BUSYMAXRETRY": "Maximale Anzahl, wie oft ein Kontakt angerufen wird, bevor er als geschlossen betrachtet wird, wenn der Anruf wegen Besetzt fehlschlägt",
+      "BUSYRETRYTIME": "Zeit in Minuten, bevor erneut versucht wird, einen fehlgeschlagenen Kontakt anzurufen, weil er beschäftigt ist",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, der während der Zwangsdisposition festgelegt werden soll",
+      "PREDICTIVEMAXTHRESHOLD": "Wenn der Prozentsatz der im Zeitfenster verfügbaren Agenten im Vergleich zu den zum Zeitpunkt der Vorhersage verfügbaren Agenten den konfigurierten Maximalwert überschreitet, berechnet die Vorhersage die Vorhersage neu.",
+      "PREDICTIVEMINTHRESHOLD": "Wenn der Prozentsatz der im Zeitfenster verfügbaren Agenten im Vergleich zu den zum Zeitpunkt der Vorhersage verfügbaren Agenten den konfigurierten Mindestgrenzwert überschreitet, berechnet die Vorhersage die Vorhersage neu.",
+      "ABANDONEDMAXRETRY": "Maximale Häufigkeit, mit der ein Kontakt angerufen wird, bevor er als geschlossen betrachtet wird, wenn der Anruf zum Abbrechen fehlgeschlagen ist",
+      "ABANDONEDRETRYTIME": "Zeit in Minuten, bevor versucht wird, einen fehlgeschlagenen Kontakt aufgrund eines Abbruchs erneut anzurufen",
+      "AGENTREJECTMAXRETRY": "Maximale Häufigkeit, mit der ein Kontakt angerufen wird, bevor er als geschlossen betrachtet wird, wenn der Anruf für die Ablehnung des Agenten fehlgeschlagen ist",
+      "AGENTREJECTRETRYTIME": "Zeit in Minuten, bevor versucht wird, einen fehlgeschlagenen Kontakt aufgrund einer Ablehnung des Agenten erneut anzurufen",
+      "DROPMAXRETRY": "Maximale Häufigkeit, mit der ein Kontakt angerufen wird, bevor er als geschlossen betrachtet wird, wenn der Anruf nicht beendet werden konnte",
+      "DROPRETRYTIME": "Zeit in Minuten, bevor versucht wird, einen fehlgeschlagenen Kontakt aufgrund eines Verbindungsabbruchs erneut anzurufen",
+      "MACHINEMAXRETRY": "Maximale Häufigkeit, mit der ein Kontakt angerufen wird, bevor er als geschlossen betrachtet wird, wenn der Anruf für die Maschine fehlgeschlagen ist",
+      "MACHINERETRYTIME": "Zeit in Minuten, bevor versucht wird, einen fehlgeschlagenen Kontakt aufgrund der Maschine erneut anzurufen",
+      "NOSUCHNUMBERETRYTIME": "Zeit in Minuten, bevor versucht wird, einen fehlgeschlagenen Kontakt erneut anzurufen, da keine solche Nummer vorhanden ist",
+      "NOSUCHNUMBERMAXRETRY": "Maximale Häufigkeit, mit der ein Kontakt angerufen wird, bevor er als geschlossen betrachtet wird, wenn der Anruf für keine solche Nummer fehlgeschlagen ist",
+      "NOSUCHNUMBERRETRYTIME": "Zeit in Minuten, bevor versucht wird, einen fehlgeschlagenen Kontakt erneut anzurufen, da keine solche Nummer vorhanden ist",
       "PREVIEW_AUTO_RECALL_ME": "Wenn aktiviert, generiert das System automatisch die Wiederanrufe für den Agent automatisch. Wenn deaktiviert, müssen diese Anrufe manuell geplant werden",
       "PREVIEW_RECALL_ME_REMINDER": "Wenn aktiviert, sendet das System n Minuten (entsprechend dem in den allgemeinen Einstellungen eingestellten Zeitintervall) eine Benachrichtigung an den Agenten, bevor die Rückrufnachricht generiert wird",
       "TIMEZONE": "Zeitzone angeben"
     },
-    "MUSICONHOLD": "Wartemusik",
-    "ANNOUNCETOAGENT": "Ansagenachricht für Agenten",
-    "ANNOUNCEMENTS": "Ansagen",
-    "ADVANCEDPREVIEW": "Erweitert",
-    "ADVANCED": "Erweiterte Einstellungen",
-    "ADVANCE": "Erweitert",
-    "ANNOUNCEFREQUENCY": "Ansagefrequenz",
-    "MINANNOUNCEFREQUENCY": "Min. Frequenz Ansage",
-    "PERIODICANNOUNCEFREQUENCY": "Frequenz wiederkehrende Ansagen",
-    "RANDOMPERIODICANNOUNCE": "Zufälliges Abspielen der Ansagen",
-    "ANNOUNCEHOLDTIME": "Wartezeit ansagen",
-    "ANNOUNCECALLERPOSITION": "Warteposition ansagen",
-    "ANNOUNCEPOSITIONLIMIT": "Limit für Ansage Warteposition",
-    "REPORTHOLDTIMEAGENT": "Wartezeit dem Agenten ansagen",
-    "PERIODICANNOUNCE": "Wiederkehrende Ansagen",
-    "HOLDTIMEANNOUNCE": "Audiodatei für Ansage Wartezeit",
-    "YOUARENEXTANNOUNCE": "Audiodatei für Ansage der ersten Position",
-    "THEREAREANNOUNCE": "1. Teil Audiodatei für Ansage der bereits wartenden Anrufer",
-    "WAITINGCALLSANNOUNCE": "2. Teil Audiodatei für Ansage der bereits wartenden Anrufer",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Audiodatei für die Information zur geschätzten Wartezeit",
-    "MINUTESANNOUNCE": "Audiodatei für die Ansage \"Minuten\"",
-    "MINUTEANNOUNCE": "Audiodatei für die Ansage \"Minute\" ",
-    "SECONDSANNOUNCE": "Audiodatei für die Ansage \"Sekunden\"",
-    "THANKYOUANNOUNCE": "Audiodatei für die Ansage mit Dank für Geduld",
-    "AUTOPAUSE": "Automatische Pause bei keiner Antwort",
-    "AFTERCALLWORK": "Nacharbeit",
-    "AFTERCALLWORKDURATION": "Dauer Nacharbeit",
-    "RINGINUSE": "Klingeln bei Besetzt",
-    "MEMBERDELAY": "Anrufsverzögerung",
-    "TIMEOUTRESTART": "Zeitüberschreitung neu Starten",
-    "MONITORFORMAT": "Format für Gesprächsaufzeichnungen",
-    "SETINTERFACEVARIABLES": "Interface Variabeln definieren",
-    "SETQUEUEVARIABLES": "Warteschlangenvariabeln definieren",
-    "SETQUEUEENTRYVARIABLES": "Variabeln bei Eintritt definieren",
-    "CONTEXT": "Kontext Austritt aus Warteschlange",
+    "MUSICONHOLD": "Musik auf Halten",
+    "ANNOUNCETOAGENT": "Verkünden auf Agenten",
+    "ANNOUNCEMENTS": "Ankündigungen",
+    "ADVANCEDPREVIEW": "Erweiterte",
+    "ADVANCED": "Erweiterte",
+    "ADVANCE": "Erweiterte",
+    "ANNOUNCEFREQUENCY": "Frequenz ankündigen",
+    "MINANNOUNCEFREQUENCY": "Minimale verkünden Frequenz",
+    "PERIODICANNOUNCEFREQUENCY": "Periodische verkünden Frequenz",
+    "RANDOMPERIODICANNOUNCE": "Random Periodische verkünden",
+    "ANNOUNCEHOLDTIME": "Verkünden. Haltezeit",
+    "ANNOUNCECALLERPOSITION": "Verkünden Anrufer Position",
+    "ANNOUNCEPOSITIONLIMIT": "Verkünden Position Limit",
+    "REPORTHOLDTIMEAGENT": "Bericht Bedienplatz Haltezeit",
+    "PERIODICANNOUNCE": "Periodische verkünden",
+    "HOLDTIMEANNOUNCE": "Hold Zeit verkünden",
+    "YOUARENEXTANNOUNCE": "\"Sie sind weiter' verkünden",
+    "THEREAREANNOUNCE": "'Es gibt' verkünden",
+    "WAITINGCALLSANNOUNCE": "Wartende Anrufe verkünden",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Halten Sie die geschätzte Zeit verkünden",
+    "MINUTESANNOUNCE": "Minuten ankündigen",
+    "MINUTEANNOUNCE": "Minute verkünden",
+    "SECONDSANNOUNCE": "Sekunden verkünden",
+    "THANKYOUANNOUNCE": "\"Danke\" ankündigen",
+    "AUTOPAUSE": "Auto Pause",
+    "AFTERCALLWORK": "Arbeit nach Anruf",
+    "AFTERCALLWORKDURATION": "Arbeit nach Anruf Dauer",
+    "RINGINUSE": "Ring im Einsatz",
+    "MEMBERDELAY": "Die Verzögerung",
+    "TIMEOUTRESTART": "Timeout neu starten",
+    "MONITORFORMAT": "Aufzeichnungsformat",
+    "SETINTERFACEVARIABLES": "Set Interface Variablen",
+    "SETQUEUEVARIABLES": "Stellen Variablen",
+    "SETQUEUEENTRYVARIABLES": "Stellen ENTRY-Variablen",
+    "CONTEXT": "Kontext",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
-    "INBOUNDROUTES": "Eingehende Routen",
+    "INBOUNDROUTES": "Ankommende Routen",
     "PHONENUMBER": "Telefonnummer",
-    "ADD_INBOUNDROUTE": "Eingehende Route hinzufügen",
-    "EDIT_INBOUNDROUTE": "Eingehende Route bearbeiten",
-    "DELETE_INBOUNDROUTE": "Eingehende Route löschen",
-    "ACTIONS": "Routing",
-    "OUTBOUNDROUTES": "Ausgehende Routen",
-    "DESTINATIONPATTERN": "Ziel-Pattern",
-    "ADD_OUTBOUNDROUTE": "Ausgehende Route hinzufügen",
-    "EDIT_OUTBOUNDROUTE": "Ausgehende Route bearbeiten",
-    "DELETE_OUTBOUNDROUTE": "Ausgehende Route löschen",
-    "CUTDIGITS": "Ziffern abschneiden",
-    "RECORDING": "Gesprächsaufzeichnung",
+    "ADD_INBOUNDROUTE": "Ankommende Route hinzufügen",
+    "EDIT_INBOUNDROUTE": "Bearbeiten Sie Eingehende Route",
+    "DELETE_INBOUNDROUTE": "Löschen Sie Eingehende Route",
+    "ACTIONS": "Aktionen",
+    "OUTBOUNDROUTES": "Abgehende Routen",
+    "DESTINATIONPATTERN": "Ziel Muster",
+    "ADD_OUTBOUNDROUTE": "Abgehende Route hinzufügen",
+    "EDIT_OUTBOUNDROUTE": "Abgehende Route bearbeiten",
+    "DELETE_OUTBOUNDROUTE": "Abgehende Route löschen",
+    "CUTDIGITS": "Schneiden Sie Ziffern",
+    "RECORDING": "Aufnahme",
     "RECORDINGFORMAT": "Aufzeichnungsformat",
     "INTERNALROUTES": "Interne Routen",
-    "ADD_INTERNALROUTE": "Interne Route hinzufügen",
+    "ADD_INTERNALROUTE": "Fügen Sie interne Route",
     "EDIT_INTERNALROUTE": "Interne Route bearbeiten",
     "DELETE_INTERNALROUTE": "Interne Route löschen",
     "CONTEXTS": "Kontexte",
-    "ADD_CONTEXT": "Kontext hinzufügen",
-    "EDIT_CONTEXT": "Kontext bearbeiten",
-    "DELETE_CONTEXT": "Kontext löschen",
+    "ADD_CONTEXT": "Rahmen hinzufügen",
+    "EDIT_CONTEXT": "Bearbeiten Kontext",
+    "DELETE_CONTEXT": "Löschen von Rahmen",
     "VOICEMAILS": "Voicemails",
     "ADD_VOICEMAIL": "Voicemail hinzufügen",
-    "EDIT_VOICEMAIL": "Voicemail bearbeiten",
+    "EDIT_VOICEMAIL": "Bearbeiten von Voicemail",
     "DELETE_VOICEMAIL": "Voicemail löschen",
-    "FULLNAME": "Vollständiger Name",
+    "FULLNAME": "Voller Name",
     "EMAIL": "E-Mail",
     "MAILBOX": "Mailbox",
-    "PASSWORD": "Passwort",
+    "PASSWORD": "Kennwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "TIMEZONE": "Zeitzone",
-    "ATTACH": "Voicemail als E-Mail-Anhang senden",
-    "ENVELOPE": "Zeit und Datum ansagen",
+    "ATTACH": "Befestigen",
+    "ENVELOPE": "Umschlag",
     "DELETE": "Löschen",
-    "EMAILBODY": "E-Mail Text",
+    "EMAILBODY": "E-Mail-Text",
     "EMAILSUBJECT": "E-Mail Betreff",
-    "MAXSECONDS": "Max. Dauer (Sekunden) Voicemail",
-    "MAXMESSAGES": "Max. Nachrichten pro Mailbox",
+    "MAXSECONDS": "Max Sekunden",
+    "MAXMESSAGES": "Max. Nachrichten",
     "MESSAGES": "Nachrichten",
     "SORT": "Sortieren",
-    "ADD_MUSICONHOLD": "Wartemusik hinzufügen",
-    "MUSICONHOLDS": "Wartemusik",
-    "EDIT_MUSICONHOLD": "Wartemusik bearbeiten",
-    "DELETE_MUSICONHOLD": "Wartemusik löschen",
-    "DIRECTORY": "Lokales Verzeichnis",
+    "ADD_MUSICONHOLD": "Musik auf Halten",
+    "MUSICONHOLDS": "Musik auf Halten",
+    "EDIT_MUSICONHOLD": "Bearbeiten Musik auf Halten",
+    "DELETE_MUSICONHOLD": "Löschen Sie Musik auf Halten",
+    "DIRECTORY": "Verzeichnis",
     "AUDIOFILES": "Audiodateien",
-    "RECORDINGS": "Aufzeichnungen",
-    "CHANSPY": "Listen-In (Chanspy)",
+    "RECORDINGS": "Aufnahmen",
+    "CHANSPY": "ChanSpy",
     "PREFIX": "Präfix",
     "OPTIONS": "Optionen",
-    "AUTH": "Authentifizierung",
-    "ADD_CHANSPY": "Listen-In hinzufügen",
-    "EDIT_CHANSPY": "Listen-In bearbeiten",
-    "DELETE_CHANSPY": "Listen-In löschen",
+    "AUTH": "Auth",
+    "ADD_CHANSPY": "Chanspy hinzufügen",
+    "EDIT_CHANSPY": "Bearbeiten ChanSpy",
+    "DELETE_CHANSPY": "Löschen ChanSpy",
     "AGENTS": "Agenten",
     "TELEPHONES": "Telefone",
     "QUEUES": "Warteschlangen",
-    "QUEUE_CALLS": "Anrufe in Warteschlange",
-    "QUEUE_PARAMETERS": "Warteschlangen-Parameter",
+    "QUEUE_CALLS": "Anrufe aus der Warteschlange",
+    "QUEUE_PARAMETERS": "Queue Parameter",
     "ABANDONED_CALLS": "Abgebrochene Anrufe",
     "OUTBOUND_CALLS": "Ausgehende Anrufe",
-    "AGI": "Skript",
+    "AGI": "AGI",
     "DIAL": "Wählen",
-    "INTERNALDIAL": "Intern wählen",
-    "EXTERNALDIAL": "Extern wählen",
-    "RINGGROUP": "Rufgruppe zuweisen",
+    "INTERNALDIAL": "Interne Wahl",
+    "EXTERNALDIAL": "Externes Wählen",
+    "RINGGROUP": "Ring Gruppe",
     "PLAYBACK": "Wiedergabe",
     "QUEUE": "Warteschlange",
-    "SET": "Einstellen (Set)",
+    "SET": "Einstellen",
     "VOICEMAIL": "Voicemail",
     "GOTO": "Gehe zu",
     "HANGUP": "Auflegen",
-    "CUSTOM": "Benutzerdefiniert",
-    "PROJECT": "Call-Flow Projekt",
-    "TECHNOLOGY/RESOURCE": "Technologie / Ressource (z.B.: SIP/1003)",
+    "CUSTOM": "Benutzerdefinierte",
+    "PROJECT": "Cally-Square Projekt",
+    "TECHNOLOGY/RESOURCE": "Technologie / Ressource",
     "URL": "URL",
-    "EDIT_APP": "Anwendung bearbeiten",
-    "EDIT_INTERVAL": "Zeitintervall bearbeiten",
+    "EDIT_APP": "Bearbeiten Anwendung",
+    "EDIT_INTERVAL": "Bearbeiten Intervall",
     "DELETE_APP": "Anwendung löschen",
-    "INTERVALS": "Zeitintervalle",
+    "INTERVALS": "Intervalle",
     "USER": "Benutzer",
-    "TRUNK": "SIP-Trunk",
+    "TRUNK": "Amtsleitung",
     "PHONE": "Telefon",
     "AUDIO_FILES": "Audiodateien",
-    "ANNOUNCE_OVERRIDES": "Ansage überschreiben",
+    "ANNOUNCE_OVERRIDES": "Verkünden überschreibt",
     "MACRO": "Makro",
     "GOSUB": "GoSub",
     "RULE": "Regel",
     "POSITION": "Position",
     "ANSWER": "Antwort",
     "VALUE": "Wert",
-    "MAILBOX@CONTEXT": "Mailbox@Context",
-    "EXTENSION": "Nebenstelle",
+    "MAILBOX@CONTEXT": "Mailbox @ Rahmen",
+    "EXTENSION": "Erweiterung",
     "PRIORITY": "Priorität",
-    "HANGUP_CAUSE": "Auflegegrund",
-    "OUTBOUNDDIAL": "Ausgehend wählen",
+    "HANGUP_CAUSE": "Auflegen verursachen",
+    "OUTBOUNDDIAL": "Für ausgehende Anrufe wählen",
     "CALLER_ID": "Anrufer-ID",
     "NO_MESSAGE_AVAILABLE": "Keine Meldungen vorhanden",
     "NO_SOUND_AVAILABLE": "Kein Ton verfügbar",
-    "VOICERECORDINGS": "Sprachaufzeichnungen",
-    "CHANSPIES": "Listen-Ins",
-    "VOICE": "Anrufe",
+    "VOICERECORDINGS": "Sprachaufnahmen",
+    "CHANSPIES": "ChanSpy",
+    "VOICE": "Voice",
     "REALTIME": "Echtzeit",
-    "ID": "ID",
+    "ID": "Id",
     "VOICEMAIL_CONTEXT": "Kontext",
     "NO_MOHSOUND_AVAILABLE": "Keine Wartemusik verfügbar",
     "FILE": "Datei",
-    "ADD_MOHSOUND": "Wartemusik hinzufügen",
-    "DOWNLOAD_MOHSOUND": "Wartemusik herunterladen",
-    "DELETE_MOHSOUND": "Wartemusik löschen",
+    "ADD_MOHSOUND": "Musik hinzufügen Auf Klang",
+    "DOWNLOAD_MOHSOUND": "Download Music On Hold Sound",
+    "DELETE_MOHSOUND": "Löschen Sie Musik auf Halten Sound",
     "UNIQUEID": "Eindeutige ID",
     "AGENT": "Agent",
     "TYPE": "Typ",
     "RATING": "Bewertung",
     "AUDIO": "Audio",
     "DATE": "Datum",
-    "NEW_VOICEQUEUE": "Neue Anruf-Warteschlange",
+    "NEW_VOICEQUEUE": "Neue Stimme Warteschlange",
     "NEW_INBOUNDROUTE": "Neue eingehende Route",
     "NEW_OUTBOUNDROUTE": "Neue ausgehende Route",
     "NEW_INTERNALROUTE": "Neue interne Route",
-    "NEW_CONTEXT": "Neuer Kontext",
+    "NEW_CONTEXT": "Neuen Kontext",
     "NEW_VOICEMAIL": "Neue Voicemail",
-    "NEW_MUSICONHOLD": "Neue Wartemusik",
-    "NEW_CHANSPY": "Neues Listen-In",
-    "PENALTY": "Verzögerung",
-    "ADD_TEAM_TO_VOICEQUEUE": "Team zu Warteschlange hinzufügen",
-    "ADD_AGENT_TO_VOICEQUEUE": "Agenten zu Warteschlange hinzufügen",
+    "NEW_MUSICONHOLD": "Neue Musik auf Halten",
+    "NEW_CHANSPY": "Neue ChanSpy",
+    "PENALTY": "Strafe",
+    "ADD_TEAM_TO_VOICEQUEUE": "Team Voice Warteschlange hinzufügen",
+    "ADD_AGENT_TO_VOICEQUEUE": "Agent Voice Warteschlange hinzufügen",
     "EDIT_DIAL": "Kurzwahl bearbeiten",
-    "EDIT_AGI": "Skript bearbeiten",
+    "EDIT_AGI": "Bearbeiten AGI",
     "EDIT_INTERNALDIAL": "Interne Kurzwahl bearbeiten",
     "EDIT_EXTERNALDIAL": "Externe Kurzwahl bearbeiten",
-    "EDIT_RINGGROUP": "Rufgruppe bearbeiten",
-    "EDIT_PLAYBACK": "Wiedergabe bearbeiten",
+    "EDIT_RINGGROUP": "Gruppe bearbeiten",
+    "EDIT_PLAYBACK": "Bearbeiten Wiedergabe",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_SET": "Bearbeiten",
-    "EDIT_GOTO": "\"Gehe-zu\" bearbeiten",
-    "EDIT_HANGUP": "Auflegen bearbeiten",
-    "EDIT_CUSTOM": "Benutzerdef. Einstellungen bearbeiten",
+    "EDIT_GOTO": "Bearbeiten Gehe zu",
+    "EDIT_HANGUP": "Bearbeiten auflegen",
+    "EDIT_CUSTOM": "Bearbeiten Benutzerdefinierte",
     "DURATION": "Dauer",
     "RECEIVED_AT": "Eingegangen am",
     "YES": "Ja",
-    "NO": "Nein",
-    "HANGUPCAUSE_1": "1 = Nummer nicht zugewiesen",
-    "HANGUPCAUSE_16": "16 = Beenden durch Nutzer",
-    "HANGUPCAUSE_17": "17 = Besetzt",
-    "HANGUPCAUSE_18": "18 = Keine Antwort (Nebenstelle nicht verbunden)",
-    "HANGUPCAUSE_21": "21 = Anruf abgelehnt",
-    "HANGUPCAUSE_22": "22 = Nummer geändert",
-    "HANGUPCAUSE_27": "27 = Ziel außer Funktion",
+    "NO": "Keine",
+    "HANGUPCAUSE_1": "1 = Nicht zugewiesene Nummer",
+    "HANGUPCAUSE_16": "16=Normail Anruf löschen",
+    "HANGUPCAUSE_17": "17 = Benutzer besetzt",
+    "HANGUPCAUSE_18": "18 = Kein Benutzer reagiert (Telefon Gerät nicht angeschlossen)",
+    "HANGUPCAUSE_21": "21 = Anruf abgewiesen",
+    "HANGUPCAUSE_22": "22 = Anzahl geändert",
+    "HANGUPCAUSE_27": "27 = Ziel nicht in Ordnung",
     "HANGUPCAUSE_38": "38 = Netzwerk nicht in der richtigen Reihenfolge",
     "HANGUPCAUSE_41": "41 = Temporärer Ausfall",
-    "RANDOM": "Zufall",
+    "RANDOM": "Random",
     "ALPHABETICAL": "Alphabetisch",
     "NO_APPS_AVAILABLE": "Keine Anwendungen verfügbar",
-    "DOWNLOAD_VOICERECORDING": "Sprachaufzeichnung herunterladen",
-    "DELETE_VOICERECORDING": "Sprachaufzeichnung löschen",
-    "INTERNAL": "Intern",
-    "PHONE_STATE": "Status Nebenstelle",
-    "PHONE_STATUS": "SIP-Status Nebenstelle",
+    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
+    "DELETE_VOICERECORDING": "Löschen Sprachaufzeichnung",
+    "INTERNAL": "Interne",
+    "PHONE_STATE": "Telefonstatus",
+    "PHONE_STATUS": "Telefonstatus",
     "REGISTERED": "Registriert",
-    "UNREGISTERED": "Nicht registriert",
-    "LAGGED": "Verzögert",
+    "UNREGISTERED": "Unregistrierte",
+    "LAGGED": "Zurück",
     "REACHABLE": "Erreichbar",
     "UNREACHABLE": "Nicht erreichbar",
     "UNKNOWN": "Unbekannt",
-    "NOT_INUSE": "Nicht in Verwendung",
-    "INUSE": "In Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
+    "INUSE": "Im Einsatz",
     "BUSY": "Besetzt",
     "INVALID": "Ungültig",
     "UNAVAILABLE": "Nicht verfügbar",
     "RINGING": "Klingeln",
-    "ONHOLD": "Halten",
-    "RING": "Klingeln",
-    "UP": "Status",
-    "INFO": "Information",
-    "TRUNKS": "SIP-Trunks",
+    "ONHOLD": "Auf Halten",
+    "RING": "Ring",
+    "UP": "Bis",
+    "INFO": "Info",
+    "TRUNKS": "Amtsleitungen",
     "REGISTRY": "Registrierung",
-    "NO_REGISTRY": "Keine Registrierung",
+    "NO_REGISTRY": "Keine registry",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
-    "DISPOSITION": "Qualifizierung",
+    "DISPOSITION": "Disposition",
     "WAITING": "Warten",
-    "TALKING": "Im Gespräch",
-    "DID": "DID",
+    "TALKING": "Sprechen",
+    "DID": "Haben",
     "CALLER": "Anrufer",
-    "TOTAL": "Gesamt",
+    "TOTAL": "Insgesamt",
     "ANSWERED": "Beantwortet",
     "ABANDONED": "Abgebrochen",
-    "UNMANAGED": "Nicht verwaltet",
+    "UNMANAGED": "Nicht verwaltete",
     "REDIRECT_TO_NUMBER": "Umleitung zu einer Nummer",
-    "REDIRECT_TO_AGENT": "Umleiten zu einem Agenten",
+    "REDIRECT_TO_AGENT": "Umleiten zu: Ein Agent",
     "CLOSING": "Schließen",
-    "AVG_HOLD_TIME": "Durchschnittl. Wartezeit",
-    "AVG_DURATION": "Durchschnittl. Dauer",
-    "AVG_BILLABLE": "Durchschnittl. fakturierbar",
+    "AVG_HOLD_TIME": "Durchschnittl. Warteschleifenzeit",
+    "AVG_DURATION": "Av-Dauer",
+    "AVG_BILLABLE": "Avg Fakturierbaren",
     "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "REJECTED": "Abgelehnt",
     "FAILED": "Fehlgeschlagen",
-    "CALLED": "Angerufen",
+    "CALLED": "Aufgerufen",
     "CONNECTED": "Verbunden",
     "NO_RATING": "Keine Bewertung",
-    "EDIT_VOICERECORDING": "Sprachaufzeichnung bearbeiten/bewerten",
+    "EDIT_VOICERECORDING": "Edit Voice Recording",
     "APPLICATION_NAME": "Name der Anwendung",
     "ARGUMENTS": "Argumente",
     "EDIT_QUEUECAMPAIGN": "Kampagne bearbeiten",
     "LISTADD_QUEUECAMPAIGN": "Liste hinzufügen",
-    "BLACKLISTADD_QUEUECAMPAIGN": "Schwarze Liste hinzufügen",
-    "TEAMADD_QUEUECAMPAIGN": "Team hinzufügen",
+    "BLACKLISTADD_QUEUECAMPAIGN": "Blacklist hinzufügen",
+    "TEAMADD_QUEUECAMPAIGN": "Gruppe hinzufügen",
     "AGENTADD_QUEUECAMPAIGN": "Agent hinzufügen",
     "DELETE_QUEUECAMPAIGN": "Kampagne löschen",
-    "DELETE_IVRCAMPAIGN": "IVR-Kampagne löschen",
+    "DELETE_IVRCAMPAIGN": "Kampagne löschen",
     "EDIT_IVRCAMPAIGN": "Kampagne bearbeiten",
     "NEW_IVRCAMPAIGN": "Neue IVR-Kampagne",
-    "ADD_IVRCAMPAIGN": "IVR-Kampagne hinzufügen",
+    "ADD_IVRCAMPAIGN": "Hinzufügen IVR-Kampagne",
     "LISTADD_IVRCAMPAIGN": "Liste hinzufügen",
-    "BLACKLISTADD_IVRCAMPAIGN": "Schwarze Liste hinzufügen",
-    "ENABLED": "Aktiv",
+    "BLACKLISTADD_IVRCAMPAIGN": "Blacklist hinzufügen",
+    "ENABLED": "Aktiviert",
     "READY": "Bereit",
     "PAUSE": "Pause",
-    "UNPAUSE": "Pause abbrechen",
-    "DEFAULT_PAUSE": "Standardpause",
-    "AGENTADD_QUEUE": "Agent zur Warteschlange hinzufügen",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "ALL_TEAMS": "Alle Teams",
+    "UNPAUSE": "Pause",
+    "DEFAULT_PAUSE": "Standard Pause",
+    "AGENTADD_QUEUE": "Kampagne hinzufügen Agent in der Warteschlange",
+    "AGENTSADD_QUEUE": "Agents hinzufügen Kampagne in die Warteschlange",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "ALL_LISTS": "Alle Listen",
     "SELECTED_LISTS": "Ausgewählte Listen",
     "WAITING_FOR_AGENT": "Warten auf Agenten",
     "TOTAL_OFFERED": "Insgesamt",
     "RUNNING": "Ausgeführt",
-    "TRUNK_IS_NOT_REACHABLE": "SIP-Trunk nicht erreichbar",
-    "AGENTS_NOT_LOGGED": "Keine Agenten angemeldet",
+    "TRUNK_IS_NOT_REACHABLE": "Trunk ist nicht erreichbar.",
+    "AGENTS_NOT_LOGGED": "Agent nicht angemeldet",
     "NOT_ACTIVE": "Nicht Aktiv",
-    "IS_DISACTIVED": "Deaktiviert",
-    "BACKUPTRUNK": "Backup SIP-Trunk",
-    "GLOBALINTERVAL": "Globales Intervall",
-    "RESCHEDULED_CONTACTS": "Erneut geplante Kontakte",
-    "INTERVAL_IS_OVERTIME": "Intervall außerhalb der Begrenzung",
-    "GLOBAL_INTERVAL_IS_OVERTIME": "Globales Intervall außerhalb der Begrenzung",
+    "IS_DISACTIVED": "Ist Disactived",
+    "BACKUPTRUNK": "Backup Trunk",
+    "GLOBALINTERVAL": "Globale Intervall",
+    "RESCHEDULED_CONTACTS": "Neu geplanten Kontakte",
+    "INTERVAL_IS_OVERTIME": "Intervall ist Überstunden",
+    "GLOBAL_INTERVAL_IS_OVERTIME": "Aus Intervall (Global)",
     "INTERVAL_IS_NULL": "Intervall ist Null",
-    "TIMEZONE_UNKNOW": "Zeitzone unbekannt",
+    "TIMEZONE_UNKNOW": "Zeitzone Unknow",
     "INTERVAL_IS_EMPTY": "Intervall ist leer",
-    "TOTAL_MANAGED": "Insgesamt bearbeitet",
-    "OPEN": "Offen",
-    "FRESH": "Neu",
+    "TOTAL_MANAGED": "Insgesamt verwaltet",
+    "OPEN": "Öffnen",
+    "FRESH": "Frische",
     "CLOSED": "Geschlossen",
     "ALWAYS": "Immer",
-    "NEVER": "Niemals",
+    "NEVER": "Nie",
     "ONLY_IF_OPEN": "Nur wenn offen",
-    "CHECKDUPLICATE": "Auf Duplikate prüfen",
+    "CHECKDUPLICATE": "Duplizieren",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
-    "TIMEOUT": "Zeitüberschreitung",
+    "OF": "Von",
+    "TIMEOUT": "Timeout",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "PARTIALPAUSE": "Teilpause",
+    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
     "ALL": "Alle",
     "IDLE": "Leerlauf",
     "TIMER": "Timer",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "CALLYSQUAREPROJECTPREVIEW": "Call-Flow bei Vorschau ",
-    "CALLYSQUAREPROJECTPREVIEW2": "Call-Flow nach Vorschau",
-    "RUNIFHANGUPAGENT": "Ausführen, nachdem Agent aufgelegt hat",
-    "CALLYSQUAREPROJECT2": "Call-Flow nach Warteschlange",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
+    "CALLYSQUAREPROJECTPREVIEW": "Cally Square Projektvorschau",
+    "CALLYSQUAREPROJECTPREVIEW2": "Cally Square Projekt nach Vorschau",
+    "RUNIFHANGUPAGENT": "Führen Sie Cally Square Project nach, auch wenn der Agent den Anruf auflegt",
+    "CALLYSQUAREPROJECT2": "Cally Square Projekt nach der Warteschlange",
     "RESET": "Zurücksetzen",
-    "RESETLIST": "Liste zurücksetzen",
-    "RESETLIST_IVRCAMPAIGN": "Listen IVR-Kampagne zurücksetzen ",
-    "RESETLIST_QUEUECAMPAIGN": "Listen Kampagne zurücksetzen",
-    "SELECTALL": "Alles auswählen",
-    "UNSELECTALL": "Nichts auswählen",
+    "RESETLIST": "Listen zurücksetzen",
+    "RESETLIST_IVRCAMPAIGN": "Listen zurücksetzen",
+    "RESETLIST_QUEUECAMPAIGN": "Listen zurücksetzen",
+    "SELECTALL": "Wählen Sie Alle",
+    "UNSELECTALL": "Alles wiederufen",
     "HOPPERWIDGET": "Zusammenfassung",
-    "ABANDONEDCALLS": "Abgebrochene Anrufe",
-    "CLONE_QUEUECAMPAIGN": "Kampagne duplizieren",
-    "CLONE_IVRCAMPAIGN": "IVR-Kampagne duplizieren",
-    "RANDOMLASTDIGITCALLERIDNUMBER": "Zufällige letzte Ziffer ausgehende Nummer",
-    "CUTDIGIT": "Ziffern abschneiden",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "ABANDONEDCALLS": "Verlassene Warteschlangenanrufe",
+    "CLONE_QUEUECAMPAIGN": "Warteschlangen-Kampagne klonen",
+    "CLONE_IVRCAMPAIGN": "Kampagne klonen",
+    "RANDOMLASTDIGITCALLERIDNUMBER": "Zufällige ausgehende Anrufer-ID-Nummer",
+    "CUTDIGIT": "Ziffern ausschneiden",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "RECALLINQUEUE": "Rückruf in der Warteschlange",
     "REFRESH_SCHEDULED_CALLS": "Geplante Anrufe aktualisieren",
     "SCHEDULED_CALLS": "Geplante Anrufe",
-    "SELECT_CAMPAIGN": "Kampagne auswählen",
+    "SELECT_CAMPAIGN": "Wählen Sie Kampagne",
     "SELECT_DATE": "Datum auswählen",
-    "SELECT_TYPE": "Typ auswählen",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
-    "ANSWERING_MACHINE": "Anrufbeantworter",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "Pause während Qualifizierung",
+    "SELECT_TYPE": "Art auswählen",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "ANSWERING_MACHINE": "Antwortmaschine",
+    "MANDATORYDISPOSITION": "Zwingende Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Status der obligatorischen Dispositionspause",
     "ANSWERED_CALLS": "Beantwortete Anrufe",
     "AVG_TALK_TIME": "Durchschnittliche Gesprächszeit",
     "CURRENT_INTERVAL": "Aktuelles Intervall",
     "DATA_COLLECTION_IN_PROGRESSIVE": "Datenerfassung in Progressive",
-    "ONE_CALL_EVERY": "Ein Anruf pro Teilnehmer",
-    "PREDICTIVEMAXTHRESHOLD": "Max Schwellwert für Predictive (%)",
-    "PREDICTIVEMINTHRESHOLD": "Min Schwellwert für Predictive (%)",
-    "PREDICTIVE_IS_NOT_RUNNING": "Predictive-Dialing nicht aktiv",
-    "PREDICTIVE_IS_RUNNING": "Predictive-Dialing aktiv",
+    "ONE_CALL_EVERY": "Ein Anruf für jeden",
+    "PREDICTIVEMAXTHRESHOLD": "Voraussagender maximaler Schwellenwert [%]",
+    "PREDICTIVEMINTHRESHOLD": "Predictive Min Threshold [%]",
+    "PREDICTIVE_IS_NOT_RUNNING": "Predictive läuft nicht",
+    "PREDICTIVE_IS_RUNNING": "Predictive läuft",
     "PREVIOUS_INTERVAL": "Vorheriges Intervall",
-    "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Informationen bei Vorschau zeigen",
-    "THRESHOLDS": "Schwellwerte",
-    "TOTAL_CALLS": "Anrufe gesamt",
-    "ABANDONEDMAXRETRY": "Max. Wiederversuche bei \"Abandon\"",
-    "ABANDONEDRETRYTIME": "Frühester Wiederversuch nach (Min)",
-    "AGENTREJECT": "Ablehnung durch Agenten",
-    "AGENTREJECTMAXRETRY": "Max. Wiederversuche bei \"Ablehnung durch Agenten\"",
-    "AGENTREJECTRETRYTIME": "Frühester Wiederversuch nach (Min)",
-    "DROP": "Aufgelegt vom System (Drop-Call)",
-    "DROPMAXRETRY": "Max Wiederversuche bei Drop-Calls",
-    "DROPRETRYTIME": "Frühester Wiederversuch nach (Min)",
-    "MACHINE": "Anrufbeantworter",
-    "MACHINEMAXRETRY": "Max Wiederversuche bei Anrufbeantworter",
-    "MACHINERETRYTIME": "Frühester Wiederversuch nach (Min)",
-    "NOSUCHNUMBER": "Gegenstelle nicht gefunden",
-    "NOSUCHNUMBERMAXRETRY": "Max Wiederversuche bei Gegenstelle nicht gefunden",
-    "NOSUCHNUMBERRETRYTIME": "Frühester Wiederversuch nach (Min)",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
-    "SECOND_LEVEL_DISPOSITION": "Qualifizierung 2. Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Qualifikation 3. Ebene",
+    "SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Vorhersage-Info anzeigen",
+    "THRESHOLDS": "Schwellenwerte",
+    "TOTAL_CALLS": "Anrufe insgesamt",
+    "ABANDONEDMAXRETRY": "Max Wiederholungen",
+    "ABANDONEDRETRYTIME": "Wiederholungszeit [min]",
+    "AGENTREJECT": "Agent ablehnen",
+    "AGENTREJECTMAXRETRY": "Max Wiederholungen",
+    "AGENTREJECTRETRYTIME": "Wiederholungszeit [min]",
+    "DROP": "Fallen",
+    "DROPMAXRETRY": "Max Wiederholungen",
+    "DROPRETRYTIME": "Wiederholungszeit [min]",
+    "MACHINE": "Maschine",
+    "MACHINEMAXRETRY": "Max Wiederholungen",
+    "MACHINERETRYTIME": "Wiederholungszeit [min]",
+    "NOSUCHNUMBER": "Keine solche Nummer",
+    "NOSUCHNUMBERMAXRETRY": "Max Wiederholungen",
+    "NOSUCHNUMBERRETRYTIME": "Wiederholungszeit [min]",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
     "PREVIEW_AUTO_RECALL_ME": "Rückrufe automatisieren",
     "PREVIEW_RECALL_ME_REMINDER": "Recall Me Erinnerung",
     "ADDITIONALPHONES": "Zusätzliche Telefone",
index 6f70beb..b761bec 100644 (file)
@@ -23,7 +23,7 @@
     "NO_AGENT_ONLINE": "Nenhum agente online",
     "PARTIALPAUSE": "Pausa Parcial",
     "ALL": "Todos",
-    "IDLE": "Ocioso",
+    "IDLE": "Disponível",
     "TIMER": "Tempo",
     "MOVE_HOPPERFINAL": "Restaurar contato",
     "RESTORECONTACTS": "Restaurar Contatos",
index d234e7a..0ef1225 100644 (file)
 {
   "OPENCHANNEL": {
     "TEXT": "Text",
-    "TIMES": "Zeitstempel",
-    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
+    "TIMES": "Die Anzahl der Zeiten pro Interaktion",
+    "EDIT_AUTOREPLY": "Bearbeiten Sie automatische Antwort",
     "AUTOREPLY": "Automatische Antwort",
     "NAME": "Name",
-    "OPENCHANNELQUEUES": "Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "OPENCHANNELQUEUES": "Offener Kanal Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "ERRORS": {
-      "TEXT_REQUIRED": "Text erforderlich",
-      "NAME_REQUIRED": "Name erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Zeitüberschreitung Agent erforderlich",
-      "MOTIONADDRESS_REQUIRED": "Adresse erforderlich",
-      "MOTIONADDRESS_MUST_VALID_URL": "Ungültiges Format Adresse",
-      "ACCEPTURL_MUST_VALID_URL": "Ungültiges Format URL",
-      "TIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
-      "REJECTURL_MUST_VALID_URL": "Ungültiges Format URL bei Erhalt",
-      "CLOSEURL_MUST_VALID_URL": "Ungültiges Format URL bei Schließen",
-      "REPLYURI_REQUIRED": "URL bei Antwort erforderlich",
-      "REPLYURI_MUST_VALID_URL": "Ungültiges Format URL bei Antwort",
-      "PRIORITY_REQUIRED": "Priorität erforderlich",
-      "CONDITION_REQUIRED": "Bedingung erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Priorität bei zutreffender Bedingung erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Priorität bei nicht zutreffender Bedingung erforderlich",
-      "AGENT_REQUIRED": "Agent erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität muss größer oder gleich sein als",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität bei Bedingung erfüllt muss größer oder gleich sein als",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität bei Bedingung nicht erfüllt muss größer oder gleich sein als",
-      "DISPOSITION_REQUIRED": "Qualifizierung erforderlich",
-      "QUEUE_REQUIRED": "Warteschlange erforderlich",
-      "KEY_MAX_LENGTH": "Wert darf nicht länger als {{max}} Zeichen sein",
-      "TEXT_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
-      "VALUE_REQUIRED": "Wert erforderlich",
-      "COMMAND_REQUIRED": "Eingabe erforderlich",
-      "LIST_REQUIRED": "Liste erforderlich",
-      "KEY_REQUIRED": "Schlüssel erforderlich",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung Agent muss größer oder gleich sein als",
-      "NAME_MUST_VALID_PATTERN": "Ungültiges Format Name",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Agent muss kleiner oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Auf zugewiesenen Agenten warten erforderlich",
-      "TAG_REQUIRED": "Tag erforderlich",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung Agententransfer erforderlich",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung Warteschlangentransfer erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "PausenID während Qualifizierung erforderlich",
-      "ACCESSKEYID_REQUIRED": "Zugangsschlüssel-ID erforderlich",
-      "BOTNAME_REQUIRED": "BOT-Name erforderlich",
-      "SECRETACCESSKEY_REQUIRED": "Geheimer Schlüssel erforderlich",
-      "CLIENTEMAIL_REQUIRED": "Kunden E-Mail erforderlich",
-      "PRIVATEKEY_REQUIRED": "Privater Schlüssel erforderlich",
-      "PROJECTID_REQUIRED": "ProjektID erforderlich"
+      "TEXT_REQUIRED": "Das Feld \"Text\" ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
+      "MOTIONADDRESS_REQUIRED": "Die Adresse ist erforderlich",
+      "MOTIONADDRESS_MUST_VALID_URL": "Die Adresse muss in einem gültigen Format",
+      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
+      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "REPLYURI_REQUIRED": "Die Antwort URL ist erforderlich",
+      "REPLYURI_MUST_VALID_URL": "Die Antwort URL muss im gültigen Format geschrieben werden",
+      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
+      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
+      "AGENT_REQUIRED": "Pflichtfeld",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "DISPOSITION_REQUIRED": "Pflichtfeld",
+      "QUEUE_REQUIRED": "Pflichtfeld",
+      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
+      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "VALUE_REQUIRED": "Pflichtfeld",
+      "COMMAND_REQUIRED": "Pflichtfeld",
+      "LIST_REQUIRED": "Pflichtfeld",
+      "KEY_REQUIRED": "Pflichtfeld",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "NAME_MUST_VALID_PATTERN": "Falsches Format",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
+      "TAG_REQUIRED": "Pflichtfeld",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
+      "ACCESSKEYID_REQUIRED": "Zugangsschlüssel-ID ist erforderlich",
+      "BOTNAME_REQUIRED": "Der Bot-Name ist erforderlich",
+      "SECRETACCESSKEY_REQUIRED": "Zugangsschlüssel geheim ist erforderlich",
+      "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
+      "PRIVATEKEY_REQUIRED": "Pflichtfeld",
+      "PROJECTID_REQUIRED": "Pflichtfeld"
     },
-    "STRATEGY": "Verteilungsstrategie",
+    "STRATEGY": "Strategie",
     "AGENT": "Agent",
-    "GOTO": "GeheZu (GoTo)",
-    "GOTOIF": "GeheZuWenn (GoToIf)",
-    "NOOP": "Log erstellen (NoOp)",
+    "GOTO": "Gehe zu",
+    "GOTOIF": "Gotoif",
+    "NOOP": "Noop",
     "QUEUE": "Warteschlange",
-    "EDIT_AGENT": "Agenten bearbeiten",
-    "EDIT_GOTO": "\"GeheZu\" bearbeiten",
-    "EDIT_NOOP": "Log-Erstellung bearbeiten",
-    "EDIT_GOTOIF": "Bedingung bearbeiten und Priorität zuweisen",
+    "EDIT_AGENT": "Agent bearbeiten",
+    "EDIT_GOTO": "Bearbeiten Gehe zu",
+    "EDIT_NOOP": "Bearbeiten Noop",
+    "EDIT_GOTOIF": "Bearbeiten Gotoif",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "CONDITION": "Bedingung",
-    "TRUEPRIORITY": "Priorität, wenn erfüllt (true)",
-    "FALSEPRIORITY": "Priorität, wenn nicht erfüllt (false)",
+    "CONDITION": "Zustand",
+    "TRUEPRIORITY": "Wahre Priorität",
+    "FALSEPRIORITY": "Falsche Priorität",
     "VALUE": "Wert",
     "PRIORITY": "Priorität",
-    "AGENT_TIMEOUT": "Zeitüberschreitung Agent",
+    "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
-    "ADD_OPENCHANNELQUEUE": "Warteschlange hinzufügen",
-    "EDIT_OPENCHANNELQUEUE": "Warteschlange bearbeiten",
-    "DELETE_OPENCHANNELQUEUE": "Warteschlange löschen",
-    "PENALTY": "Verzögerung",
+    "ADD_OPENCHANNELQUEUE": "Fügen Sie im Offenen Kanal Warteschlange",
+    "EDIT_OPENCHANNELQUEUE": "Offener Kanal Warteschlange bearbeiten",
+    "DELETE_OPENCHANNELQUEUE": "Löschen der Warteschlange im Offenen Kanal",
+    "PENALTY": "Strafe",
     "TEAMADD_OPENCHANNELQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_OPENCHANNELQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTADD_OPENCHANNELQUEUE": "Agent zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
-    "OPENCHANNELACCOUNTS": "Konten offener Kanal",
+    "OPENCHANNELACCOUNTS": "Offener Kanal Konten",
     "MOTIONADDRESS": "Motion Adresse",
-    "ADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
-    "EDIT_OPENCHANNELACCOUNT": "Konto offener Kanal bearbeiten",
-    "DELETE_OPENCHANNELACCOUNT": "Konto offener Kanal löschen",
+    "ADD_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account hinzufügen",
+    "EDIT_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account bearbeiten",
+    "DELETE_OPENCHANNELACCOUNT": "Öffnen Sie den Channel Account löschen.",
     "API": "API",
-    "DISPOSITIONS": "Qualifizierungen",
+    "DISPOSITIONS": "Bestimmungen",
     "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Routing",
+    "ACTIONS": "Aktionen",
     "LIST": "Liste",
     "FIDELITY": "Treue",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Die Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen",
-    "CLOSEMETHOD": "Methode schließen",
-    "CLOSEURL": "URL schließen",
-    "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "CLOSE": "In der Nähe",
+    "CLOSEMETHOD": "In der Nähe Methode",
+    "CLOSEURL": "Der URL",
+    "SELECTED": "Ausgewählte",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "OPENCHANNEL": "Offener Kanal",
-    "ID": "ID",
-    "TIMEOUT": "Zeitüberschreitung",
-    "OPENCHANNELDISPOSITIONS": "Qualifizierungen offener Kanal",
-    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Keine Qualifizierungen verfügbar",
-    "NEW_OPENCHANNELDISPOSITION": "Neue Qualifizierung",
-    "ADD_OPENCHANNELDISPOSITION": "Qualifizierung hinzufügen",
-    "EDIT_OPENCHANNELDISPOSITION": "Qualifizierung bearbeiten",
-    "DELETE_OPENCHANNELDISPOSITION": "Qualifizierung löschen",
-    "NEW_OPENCHANNELQUEUE": "Neue Warteschlange offener Kanal",
-    "NEW_OPENCHANNELACCOUNT": "Neues Konto offener Kanal",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "ALL_TEAMS": "Alle Teams",
+    "ID": "Id",
+    "TIMEOUT": "Timeout",
+    "OPENCHANNELDISPOSITIONS": "Offener Kanal Verfügungen",
+    "NO_OPENCHANNELDISPOSITION_AVAILABLE": "Keine offenen Kanal Dispositionen verfügbar",
+    "NEW_OPENCHANNELDISPOSITION": "Neue Offene Kanal inspektion",
+    "ADD_OPENCHANNELDISPOSITION": "Fügen Sie im Offenen Kanal inspektion",
+    "EDIT_OPENCHANNELDISPOSITION": "Bearbeiten Sie im Offenen Kanal inspektion",
+    "DELETE_OPENCHANNELDISPOSITION": "Löschen Sie im Offenen Kanal inspektion",
+    "NEW_OPENCHANNELQUEUE": "Neue Offene Kanal Warteschlange",
+    "NEW_OPENCHANNELACCOUNT": "Neue Open Channel Account",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "REPLYURI": "Antwort URL",
-    "RECEIVEURI": "URL bei Erhalt",
+    "RECEIVEURI": "Erhalten URL",
     "HELP": {
-      "RECEIVEURI": "Automatisch generierter API-String, um die Nachrichten über den offenen Kanal zu erhalten (POST-Methode). Zum Kopieren in die Zwischenablage klicken",
-      "REPLYURI": "URL des offenen Kanals zum Senden und Empfangen von Nachrichten",
+      "RECEIVEURI": "Dies ist die automatisch generierte API-String müssen Sie die Nachrichten in Ihrem offenen Kanal zu erhalten von der externen Anwendung (POST-Methode verwendet werden muss). Drücken Sie die Zwischenablage, um Sie in die Zwischenablage zu kopieren.",
+      "REPLYURI": "Dies ist die URL der Offene Kanal wird beim Senden oder Beantworten von Nachrichten",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "LIST": "Contact Manager Liste zu verknüpfen von Kontakten",
       "TOKEN": "Fügen Sie diese Eigenschaft als Abfragezeichenfolge in Ihrer Web-Service-URL hinzu. Weitere Informationen finden Sie im Dokument doc <a target = \"_ blank\" href = \"https://wiki.xcallymotion.com/display/XMV/New Channels Configuration Steps",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
-      "WELCOMEMESSAGE": "Willkommensnachricht beim Eintreffen der ersten Anfrage"
+      "MANDATORYDISPOSITION": "Zwingende Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
+      "WELCOMEMESSAGE": "Dies ist die erste Nachricht, die an das Schütz gesendet wird"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "CONTACT": "Kontakt",
-    "STARTEDAT": "Startdatum",
+    "STARTEDAT": "Gestartet am",
     "STATUS": "Status",
     "CLOSED": "Geschlossen",
-    "OPENED": "Geöffnet",
-    "OPEN": "Offen",
+    "OPENED": "Öffnen",
+    "OPEN": "Öffnen",
     "ACCOUNT": "Konto",
     "INTERACTION": "Interaktion",
-    "INTERACTIONS": "Interaktionen",
+    "INTERACTIONS": "Wechselwirkungen",
     "ALL": "Alle",
-    "SELECT_STATUS": "Status auswählen",
+    "SELECT_STATUS": "Wählen Sie einen Status",
     "FILTER": "Filter",
     "FILTERS": "Filter",
     "CLOSEDAT": "Geschlossen",
-    "DISPOSITION": "Qualifizierung",
-    "NOTES": "Anmerkungen",
-    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
-    "SELECT_ACCOUNT": "Konto auswählen",
-    "GOTOP": "Priorität zuweisen (GoToP)",
-    "EDIT_GOTOP": "GoToP bearbeiten",
-    "EDIT_CLOSE": "Verhalten bei Schließen bearbeiten",
-    "INFO": "Information",
+    "DISPOSITION": "Disposition",
+    "NOTES": "Hinweise",
+    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
+    "SELECT_ACCOUNT": "Wählen Sie ein Konto",
+    "GOTOP": "Gotop",
+    "EDIT_GOTOP": "Gotop bearbeiten",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "INFO": "Info",
     "KEY": "Schlüssel",
     "REALTIME": "Echtzeit",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
+    "IN_USE": "Im Einsatz",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
-    "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
-    "PHONE_STATE": "Status Nebenstelle",
-    "PHONE_STATUS": "SIP-Status Nebenstelle",
+    "FULLNAME": "Fullname",
+    "INTERNAL": "Interne",
+    "PHONE_STATE": "Telefonstatus",
+    "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange offener Kanal hinzufügen",
-    "UNPAUSE": "Pause abbrechen",
-    "DEFAULT_PAUSE": "Standardpause",
+    "AGENTADD_QUEUE": "Agent zu Offenen Kanal Warteschlange hinzufügen",
+    "UNPAUSE": "Pause beenden",
+    "DEFAULT_PAUSE": "Standard Pause",
     "LOGGED_IN": "Angemeldet",
-    "PAUSED": "in Pause",
+    "PAUSED": "Angehalten",
     "READY": "Bereit",
     "WAITING": "Warten",
-    "VOICE": "Anrufe",
+    "VOICE": "Voice",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "SMS": "SMS",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten, die Offenen Kanal Warteschlange hinzufügen",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_OPENCHANNELQUEUE": "Direkt zur Echtzeit-Warteschlange",
-    "PARTIALPAUSE": "Teilpause",
+    "GOTOREALTIME_OPENCHANNELQUEUE": "In Echtzeit, offenen Kanal Warteschlange",
+    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
     "TAGS": "Tags",
-    "SPYINTERACTION": "Anzeigen",
-    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu den Interaktionen gehen",
-    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
+    "SPYINTERACTION": "Spy",
+    "INTERACTIONS_OPENCHANNELACCOUNT": "Zu Wechselwirkungen gehen",
+    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
     "DELETE": "Löschen",
-    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NEW_OPENCHANNELCANNEDANSWER": "Neue Textvorlage",
-    "ADD_OPENCHANNELCANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_OPENCHANNELCANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_OPENCHANNELCANNEDANSWER": "Textvorlage löschen",
-    "DELIVERYREPORTURL": "URL für Zustellungsbericht",
+    "NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
+    "NEW_OPENCHANNELCANNEDANSWER": "Neue vordefinierte Antwort",
+    "ADD_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "DELETE_OPENCHANNELCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "DELIVERYREPORTURL": "Zustellungsbericht-URL",
     "DELETE_INTERACTION": "Interaktion löschen",
-    "COMMAND": "Eingabe",
+    "COMMAND": "Befehl",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
-    "VARIABLE": "Variabel",
+    "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Sound abspielen",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klingen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "INSERT_MESSAGE_HERE": "Textnachricht hier eingeben",
-    "WAITFORTHEASSIGNEDAGENT": "Auf zugewiesenen Agenten warten",
-    "ADVANCED": "Erweitert",
+    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
+    "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
+    "ADVANCED": "Fortgeschritten",
     "PROXY": "Proxy",
-    "TOKEN": "Token",
+    "TOKEN": "Zeichen",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Tag",
-    "AGENTADD_OPENCHANNELACCOUNT": "Konto offener Kanal hinzufügen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
-    "MAPKEY": "MAP-KEY",
+    "TAG": "Etikett",
+    "AGENTADD_OPENCHANNELACCOUNT": "Fügen Sie Agent zu Openchannel Account hinzu",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
+    "MAPKEY": "Karten Schlüssel",
     "SEND": "Senden",
-    "TO": "An",
-    "AGENTTRANSFER": "Transfer an Agenten erlauben",
+    "TO": "Zu",
+    "AGENTTRANSFER": "Agent Transfer",
     "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "QUEUETRANSFER": "Transfer in Warteschlange erlauben",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
-    "TRANSFER": "Weiterleitung",
-    "CANNEDANSWERS": "Textvorlagen",
-    "DOWNLOAD_INTERACTION": "Interaktion herunterladen",
-    "OPENCHANNELCANNEDANSWERS": "Textvorlagen offener Kanal",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "PausenID während Qualifizierung",
-    "DIALOGFLOW": "Google DialogFlow",
-    "EDIT_DIALOGFLOW": "DialogFlow bearbeiten",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFERTIMEOUT": "Warteschlangenübertragungs-Timeout",
+    "TRANSFER": "Transfer",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "DOWNLOAD_INTERACTION": "Herunterladen",
+    "OPENCHANNELCANNEDANSWERS": "Vordefinierte Antworten",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Zwingende Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause zur Verwendung, wenn die obligatorische Disposition aktiviert ist",
+    "DIALOGFLOW": "Dialogablauf",
+    "EDIT_DIALOGFLOW": "Bearbeiten Sie die Dialogflow-Konfiguration",
     "LANGUAGE": "Sprache",
-    "WELCOMEMESSAGE": "Willkommensnachricht",
+    "WELCOMEMESSAGE": "Willkommen Messsage",
     "ACCESSKEYID": "Zugangsschlüssel-ID",
     "AMAZONLEX": "AmazonLex",
-    "BOTNAME": "BOT-Name",
-    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
-    "LEXREGION": "Lex Region",
-    "SECRETACCESSKEY": "Geheimer Schlüssel",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung angehalten",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
+    "BOTNAME": "Bot-Name",
+    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
+    "LEXREGION": "Region",
+    "SECRETACCESSKEY": "Zugangsschlüssel geheim",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
     "LASTMESSAGE": "Letzte Nachricht",
-    "CLIENTEMAIL": "Kunden E-Mail",
+    "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privater Schlüssel",
+    "PRIVATEKEY": "Privat Schlüssel",
     "PROJECTID": "Projekt-ID",
     "ADD_NOTE": "Notiz hinzufügen",
-    "NOTE": "Notiz"
+    "NOTE": "Hinweis"
   }
 }
index f0036b7..125aa6c 100644 (file)
     "PARTIALPAUSE": "Pausa parcial",
     "BUSY": "Ocupado",
     "TIMER": "Cronômetro",
-    "IDLE": "Ocioso",
+    "IDLE": "Disponível",
     "CAPACITY": "Capacidade",
-    "REALTIME": "Tempo Real",
+    "REALTIME": "Tempo real",
     "TEXT": "Texto",
     "TIMES": "Número de vezes por interação",
     "EDIT_AUTOREPLY": "Editar resposta automática",
-    "AUTOREPLY": "Resposta automatica",
+    "AUTOREPLY": "Resposta automática",
     "NAME": "Nome",
     "OPENCHANNELQUEUES": "Filas Open Channel",
     "SEARCH_FOR_ANYONE": "Procurar",
@@ -55,8 +55,8 @@
       "QUEUETRANSFERTIMEOUT_REQUIRED": "Campo Obrigatório",
       "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Campo Obrigatório",
-      "TAG_REQUIRED": "Campo Obrigatório",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Campo obrigatório",
+      "TAG_REQUIRED": "Campo obrigatório",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Campo Obrigatório",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
       "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "NAME_MUST_VALID_PATTERN": "Formato incorreto",
-      "KEY_REQUIRED": "Campo Obrigatório",
-      "LIST_REQUIRED": "Campo Obrigatório",
-      "COMMAND_REQUIRED": "Campo Obrigatório",
+      "KEY_REQUIRED": "Campo obrigatório",
+      "LIST_REQUIRED": "Campo obrigatório",
+      "COMMAND_REQUIRED": "Campo obrigatório",
       "TEXT_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
-      "VALUE_REQUIRED": "Campo Obrigatório",
+      "VALUE_REQUIRED": "Campo obrigatório",
       "TEXT_REQUIRED": "O texto do campo é obrigatório",
-      "NAME_REQUIRED": "Campo Obrigatório",
-      "AGENT_TIMEOUT_REQUIRED": "Campo Obrigatório",
-      "MOTIONADDRESS_REQUIRED": "Campo Obrigatório",
+      "NAME_REQUIRED": "Campo obrigatório",
+      "AGENT_TIMEOUT_REQUIRED": "Campo obrigatório",
+      "MOTIONADDRESS_REQUIRED": "Campo obrigatório",
       "MOTIONADDRESS_MUST_VALID_URL": "Formato incorreto",
       "ACCEPTURL_MUST_VALID_URL": "Formato incorreto",
-      "TIMEOUT_REQUIRED": "Campo Obrigatório",
+      "TIMEOUT_REQUIRED": "Campo obrigatório",
       "REJECTURL_MUST_VALID_URL": "Formato incorreto",
       "CLOSEURL_MUST_VALID_URL": "Formato incorreto",
-      "REPLYURI_REQUIRED": "Campo Obrigatório",
+      "REPLYURI_REQUIRED": "Campo obrigatório",
       "REPLYURI_MUST_VALID_URL": "Formato incorreto",
-      "PRIORITY_REQUIRED": "Campo Obrigatório",
-      "CONDITION_REQUIRED": "Campo Obrigatório",
-      "TRUEPRIORITY_REQUIRED": "Campo Obrigatório",
-      "FALSEPRIORITY_REQUIRED": "Campo Obrigatório",
-      "AGENT_REQUIRED": "Campo Obrigatório",
+      "PRIORITY_REQUIRED": "Campo obrigatório",
+      "CONDITION_REQUIRED": "Campo obrigatório",
+      "TRUEPRIORITY_REQUIRED": "Campo obrigatório",
+      "FALSEPRIORITY_REQUIRED": "Campo obrigatório",
+      "AGENT_REQUIRED": "Campo obrigatório",
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "DISPOSITION_REQUIRED": "Campo Obrigatório",
-      "QUEUE_REQUIRED": "Campo Obrigatório",
+      "DISPOSITION_REQUIRED": "Campo obrigatório",
+      "QUEUE_REQUIRED": "Campo obrigatório",
       "KEY_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
       "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obrigatório",
       "ACCESSKEYID_REQUIRED": "O código da chave de acesso é obrigatório",
       "BOTNAME_REQUIRED": "O nome do bot é obrigatório",
-      "SECRETACCESSKEY_REQUIRED": "É necessário segredo da chave de acesso",
-      "CLIENTEMAIL_REQUIRED": "Campo Obrigatório",
-      "PRIVATEKEY_REQUIRED": "Campo Obrigatório",
-      "PROJECTID_REQUIRED": "Campo Obrigatório"
+      "SECRETACCESSKEY_REQUIRED": "É necessário Scret Access Key",
+      "CLIENTEMAIL_REQUIRED": "Campo obrigatório",
+      "PRIVATEKEY_REQUIRED": "Campo obrigatório",
+      "PROJECTID_REQUIRED": "Campo obrigatório"
     },
     "STRATEGY": "Estratégia",
     "AGENT": "Agente",
     "EDIT_QUEUE": "Editar Fila",
     "CONDITION": "Condição",
     "TRUEPRIORITY": "Verdadeira prioridade",
-    "FALSEPRIORITY": "Falsa Prioridade",
+    "FALSEPRIORITY": "Falsa prioridade",
     "VALUE": "Valor",
     "PRIORITY": "Prioridade",
     "AGENT_TIMEOUT": "Tempo limite do agente",
index b2781d4..824a393 100644 (file)
@@ -45,7 +45,8 @@
       "TRANSCRIBEREGION_REQUIRED": "حقل الزامي",
       "FIELD_REQUIRED": "حقل الزامي",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "حقل الزامي",
-      "WRONG_FORMAT": "صيغة خاطئة"
+      "WRONG_FORMAT": "صيغة خاطئة",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أكبر من أو تساوي"
     },
     "HELP": {
       "ADDRESS": "العنوان",
index 670c786..d7222bc 100644 (file)
       "USERNAME_REQUIRED": "Povinné pole",
       "FIELD_REQUIRED": "Povinné pole",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Povinné pole",
-      "WRONG_FORMAT": "Špatný formát"
+      "WRONG_FORMAT": "Špatný formát",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Hodnota musí být větší nebo rovna"
     },
     "EDIT_NETWORK": "Edit Network",
     "DELETE_NETWORK": "Delete Network",
index e1732d7..6dcd159 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Obligatorisk felt",
       "FIELD_REQUIRED": "Obligatorisk felt",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Obligatorisk felt",
-      "WRONG_FORMAT": "Forkert format"
+      "WRONG_FORMAT": "Forkert format",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Værdien skal være større end eller lig med"
     },
     "EDIT_NETWORK": "Edit Network",
     "DELETE_NETWORK": "Delete Network",
index c44d7a7..aa643d6 100644 (file)
@@ -1,69 +1,69 @@
 {
   "SETTINGS": {
-    "PREFERRED": "Bevorzugtes Logo",
-    "DEFAULT_PREFERRED": "Standard bevorzugtes Logo",
+    "PREFERRED": "Preferred Logo",
+    "DEFAULT_PREFERRED": "Default Preferred Logo",
     "MOTIONBAR": "Motionbar",
     "WEBRTC": "WebRTC",
     "RELOAD": "Neu laden",
-    "VERIFY": "Einstellungen testen",
+    "VERIFY": "Überprüfen Sie, ob",
     "INTERFACE": "Schnittstelle",
     "UPDATING": "Aktualisierung",
     "REMOTE_VERSION": "Remote-Version",
     "NO_NEW_VERSION_AVAILABLE": "Keine neue Version verfügbar",
-    "TOP_N_PROCESSES": "Top {{value}} Prozesse",
-    "SYSTEM": "System und Server",
-    "FILE_SYSTEM": "Dateisystem",
+    "TOP_N_PROCESSES": "Top {{Wert}} Prozesse",
+    "SYSTEM": "System",
+    "FILE_SYSTEM": "File System",
     "PROCESSES": "Prozesse",
-    "MOUNT_POINT": "Mount",
-    "AVG_LOAD": "Durchschnittliche Auslastung",
+    "MOUNT_POINT": "Berg",
+    "AVG_LOAD": "AVG Laden",
     "TOTAL": "Gesamt",
-    "USED": "in Verwendung",
-    "FREE": "Frei",
+    "USED": "Verwendet",
+    "FREE": "Kostenlos",
     "NAME": "Name",
     "STATE": "Zustand",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
-    "MESSAGING": "SMS",
+    "MESSAGING": "Sms",
     "FAX": "Fax",
     "OPENCHANNEL": "Offener Kanal",
     "AGENTS": "Agenten",
     "USERS": "Benutzer",
-    "TELEPHONES": "Endgeräte",
+    "TELEPHONES": "Telefone",
     "STAFF": "Personal",
-    "CHANNELS": "Kanäle",
+    "CHANNELS": "Tv",
     "MODULES": "Module",
-    "CM": "Kontaktmanager",
+    "CM": "Contacts Manager",
     "DIALER": "Dialer",
     "JSCRIPTY": "Jscripty",
-    "CUSTOM": "WhiteLabel",
-    "UPDATE": "Aktualisieren",
+    "CUSTOM": "Anpassung",
+    "UPDATE": "Update",
     "OTHERS": "Andere",
     "SETTINGS": "Einstellungen",
     "GENERAL": "Allgemein",
-    "SMTP": "SMTP-Einstellungen",
+    "SMTP": "SMTP",
     "NETWORKS": "Netzwerke",
-    "UPDATES": "System-Updates",
+    "UPDATES": "Aktuelles",
     "LICENSE": "Lizenz",
-    "ID": "ID",
-    "MIN_INTERNAL": "Min. interne Durchwahl",
-    "MIN_MAILBOX": "Min Mailbox-ID",
+    "ID": "Id",
+    "MIN_INTERNAL": "Min. Interne",
+    "MIN_MAILBOX": "Min Mailbox",
     "INSTALLED_AT": "Installiert",
-    "SEARCH_FOR_ANYONE": "Suche",
-    "EDIT_GENERAL": "Bearbeiten Allgemein",
-    "SECURE_PASSWORD": "Sicheres Passwort",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "EDIT_GENERAL": "Allgemein bearbeiten",
+    "SECURE_PASSWORD": "Sicheres Kennwort",
     "LOGO": "Logo",
-    "DEFAULT_LOGO": "Logo für Anwendung",
-    "DEFAULT_LOGIN_LOGO": "Logo auf Anmeldebildschirm",
-    "WHITELABEL": "WhiteLabel",
+    "DEFAULT_LOGO": "Standard Logo",
+    "DEFAULT_LOGIN_LOGO": "Login Logo",
+    "WHITELABEL": "White Label",
     "CREATED_AT": "Erstellt am",
     "SAVE": "Speichern",
-    "SMTP_SERVICE": "SMTP-Dienst",
+    "SMTP_SERVICE": "Service",
     "SMTP_HOST": "SMTP-Host",
     "SMTP_USERNAME": "SMTP-Benutzername",
     "DESCRIPTION": "Beschreibung",
     "SMTP_PASSWORD": "SMTP-Passwort",
     "SMTP_PORT": "SMTP-Port",
-    "SMTP_SECURE": "Sicheren SMTP verwenden",
+    "SMTP_SECURE": "Sichere",
     "TYPE": "Typ",
     "ADDRESS": "Adresse",
     "NEW_NETWORK": "Neues Netzwerk",
     "HELP": {
       "ADDRESS": "Die Adresse des Netzwerks",
       "LOCALNETADDRESS": "IP-Adresse/Subnetzmaske",
-      "SMTP_SECURE": "TLS für SMTP deaktivieren/aktivieren",
-      "SMTP_USERNAME": "Nutzername für die Authentifizierung",
-      "SMTP_PASSWORD": "Passwort für die Authentifizierung",
-      "EMAILADDRESS": "E-Mail Adresse für die Authentifizierung (Von-Feld)",
+      "SMTP_SECURE": "Bei true wird die Verbindung TLS verwenden, wenn eine Verbindung zu Server",
+      "SMTP_USERNAME": "Benutzername für die Authentifizierung verwendet werden",
+      "SMTP_PASSWORD": "Kennwort für die Authentifizierung verwendet werden",
+      "EMAILADDRESS": "Geben Sie die E-Mail-Adresse der Nachricht (von)",
       "SECURITY_SUITE": "Aktiviert das sichere Passwort-Format, das obligatorische Zurücksetzen des Passworts nach der ersten Anmeldung und den Ablauf des Passworts nach 90 Tagen",
-      "MOTIONBARREMEMBERME": "Aktivieren/Deaktivieren der Funktion \"Merken\" in MotionPhonebar",
+      "MOTIONBARREMEMBERME": "Aktivieren / Deaktivieren der Funktion \"Merken\" in Motion Phonebar",
       "RTLSUPPORT": "Aktiviert die RTL-Unterstützung für Arabisch, Persisch und Hebräisch",
-      "DEFAULTSCREENRECORDINGPATH": "Interner Pfad für die Speicherung von Bildschirmaufzeichnungen (leer lassen für den Standardpfad des Videoordners)",
-      "LOGINMAILFREQUENCY": "Bitte den E-Mail Dienst nach Änderung der Frequenz neu starten",
+      "DEFAULTSCREENRECORDINGPATH": "Geben Sie den Pfad ein, in dem die Bildschirmaufzeichnungsdateien auf dem Agent-Computer gespeichert werden sollen (leer lassen für den Standardpfad für den Videoordner).",
+      "LOGINMAILFREQUENCY": "Bitte denken Sie daran, den EMAIL-Dienst jedes Mal neu zu starten, wenn dieser Parameter geändert wurde",
       "PASSWORD": "Passwort",
       "USERNAME": "Nutzername",
-      "ENFORCE_PASSWORD_HISTORY": "Passwortverlauf prüfen",
-      "PASSWORD_HISTORY_LIMIT": "Max. Anzahl der zuletzt verwendeten Passwörter",
-      "SEARCH_ON_ENTER_KEY": "Suche nach Drücken der Eingabetaste starten",
-      "INTERACTIONS_RELOAD_TIMEOUT": "Zeitintervall in Sekunden, in welchem Interaktionen neu geladen werden (0 = Echtzeitaktualisierung)",
+      "ENFORCE_PASSWORD_HISTORY": "Aktiviert die Validierung anhand zuvor verwendeter Kennwörter",
+      "PASSWORD_HISTORY_LIMIT": "Anzahl der zuletzt zu überprüfenden eindeutigen Kennwörter",
+      "SEARCH_ON_ENTER_KEY": "Beginnen Sie erst mit der Suche, nachdem der Agent die Eingabetaste gedrückt hat",
+      "INTERACTIONS_RELOAD_TIMEOUT": "Zeitintervall in Sekunden, nach dem Interaktionen neu geladen werden (0 = Echtzeitaktualisierung)",
       "PRIVACY_POLICY": "Anzahl der Zeichen, die durch ein Sternchen (*) ersetzt werden (0 = alle Zeichen)",
       "CLIENT_SECRET": "Das Geheimnis ist nach dem Speichern der Konfiguration nicht mehr sichtbar. Bewahren Sie es sicher auf, wenn Sie es woanders verwenden möchten.",
       "LIMIT_TABS": "Maximale Anzahl möglicher geöffneter Interaktionsregisterkarten",
       "PREVIEW_RECALLME_REMINDER_INTERVAL": "Zeitintervall in Minuten, vor dem eine Benachrichtigung an den Agenten gesendet wird, die ihn über den durchzuführenden Vorschaurückruf informiert"
     },
     "ERRORS": {
-      "ADDRESS_REQUIRED": "Adresse erforderlich",
-      "MIN_INTERNAL_REQUIRED": "Minimale interne Durchwahl erforderlich",
-      "MIN_MAILBOX_REQUIRED": "Mailbox erforderlich",
-      "NAME_REQUIRED": "Name erforderlich",
-      "HEADER_WHITELABEL_REQUIRED": "WhiteLabel erforderlich",
+      "ADDRESS_REQUIRED": "Die Adresse ist erforderlich",
+      "MIN_INTERNAL_REQUIRED": "Die minimale interne ist erforderlich",
+      "MIN_MAILBOX_REQUIRED": "Die Mailbox ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "HEADER_WHITELABEL_REQUIRED": "Die whitelabel ist erforderlich",
       "LOCALNETADDRESS_REQUIRED": "Localnet Adresse erforderlich",
-      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Ungültiges Format Localnet Adresse",
-      "ADDRESS_MUST_VALID_PATTERN": "Ungültiges Format Adresse",
-      "ACCOUNTNAME_REQUIRED": "Kontoname erforderlich",
-      "SMTP_USERNAME_REQUIRED": "Benutzername erforderlich",
-      "PASSWORD_REQUIRED": "Passwort erforderlich",
-      "SMTP_HOST_REQUIRED": "SMTP-Host erforderlich",
-      "SMTP_PORT_REQUIRED": "SMTP-Port erforderlich",
-      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min. interne Durchwahl muss größer oder gleich sein als",
-      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min. Mailbox muss größer oder gleich sein als",
-      "PAGE_TITLE_REQUIRED": "Seitentitel erforderlich",
-      "EMAIL_REQUIRED": "E-Mail erforderlich",
-      "PLAN_REQUIRED": "Plan erforderlich",
-      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Ungültiges Format URL",
-      "MOTIONBARAUTOUPDATERURL_REQUIRED": "URL MotionBar erforderlich",
-      "EMAIL_MUST_VALID": "Ungültiges Format E-Mail",
-      "LICENSE_REQUIRED": "Lizenz erforderlich",
-      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "CHATTIMEOUT_REQUIRED": "Zeitüberschreitung Chat erforderlich",
-      "ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "ALLOWEDLOGINATTEMPTS_REQUIRED": "Max. Anzahl Anmeldeversuche erforderlich",
-      "BLOCKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "BLOCKDURATION_REQUIRED": "Dauer der Sperrung erforderlich",
-      "LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
-      "LOGINMAILFREQUENCY_REQUIRED": "Frequenz für Abrufen E-Mail erforderlich",
-      "USERNAME_REQUIRED": "Nutzername erforderlich",
-      "ACCESSKEY_REQUIRED": "Zugangsschlüssel erforderlich",
-      "BUCKET_REQUIRED": "Eingabe erforderlich",
-      "LANGUAGE_REQUIRED": "Sprache erforderlich",
-      "SECRETACCESSKEY_REQUIRED": "Geheimer Zugangsschlüssel erforderlich",
-      "SENTIMENTACCOUNT_REQUIRED": "Konto für Sentimentanalyse erforderlich",
-      "SENTIMENTREGION_REQUIRED": "Region für Sentimentanalyse erforderlich",
-      "SERVICE_REQUIRED": "Dienst erforderlich",
-      "TRANSCRIBEACCOUNT_REQUIRED": "Konto zur Transkribierung erforderlich",
-      "TRANSCRIBEREGION_REQUIRED": "Region für Transkribierung erforderlich",
+      "LOCALNETADDRESS_MUST_VALID_PATTERN": "Localnet gültig sein muss eine gültige Muster",
+      "ADDRESS_MUST_VALID_PATTERN": "Adresse muss eine gültige Muster sein",
+      "ACCOUNTNAME_REQUIRED": "Das Konto Name ist erforderlich",
+      "SMTP_USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
+      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
+      "SMTP_HOST_REQUIRED": "Der Host wird benötigt",
+      "SMTP_PORT_REQUIRED": "Der Port ist erforderlich",
+      "MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Min-internen muss größer als oder gleich",
+      "MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Min-Mailbox muss größer als oder gleich",
+      "PAGE_TITLE_REQUIRED": "Pflichtfeld",
+      "EMAIL_REQUIRED": "Pflichtfeld",
+      "PLAN_REQUIRED": "Pflichtfeld",
+      "MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Falsches Format",
+      "MOTIONBARAUTOUPDATERURL_REQUIRED": "Pflichtfeld",
+      "EMAIL_MUST_VALID": "Falsches Format",
+      "LICENSE_REQUIRED": "Pflichtfeld",
+      "CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "CHATTIMEOUT_REQUIRED": "Pflichtfeld",
+      "ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "ALLOWEDLOGINATTEMPTS_REQUIRED": "Pflichtfeld",
+      "BLOCKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "BLOCKDURATION_REQUIRED": "Pflichtfeld",
+      "LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "LOGINMAILFREQUENCY_REQUIRED": "Pflichtfeld",
+      "USERNAME_REQUIRED": "Pflichtfeld",
+      "ACCESSKEY_REQUIRED": "Pflichtfeld",
+      "BUCKET_REQUIRED": "Pflichtfeld",
+      "LANGUAGE_REQUIRED": "Pflichtfeld",
+      "SECRETACCESSKEY_REQUIRED": "Pflichtfeld",
+      "SENTIMENTACCOUNT_REQUIRED": "Pflichtfeld",
+      "SENTIMENTREGION_REQUIRED": "Pflichtfeld",
+      "SERVICE_REQUIRED": "Pflichtfeld",
+      "TRANSCRIBEACCOUNT_REQUIRED": "Pflichtfeld",
+      "TRANSCRIBEREGION_REQUIRED": "Pflichtfeld",
       "FIELD_REQUIRED": "Pflichtfeld",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Pflichtfeld",
-      "WRONG_FORMAT": "Falsches Format"
+      "WRONG_FORMAT": "Falsches Format",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein"
     },
     "EDIT_NETWORK": "Netzwerk bearbeiten",
     "DELETE_NETWORK": "Netzwerk löschen",
     "BACK": "Zurück",
-    "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECTED": "Ausgewählte",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "EXPIRATION_DATE": "Ablaufdatum",
     "REQUEST_LICENSE": "Lizenz anfordern",
     "EMAIL": "E-Mail",
     "SEND": "Senden",
     "PLAN": "Plan",
-    "MONTH_TO_MONTH": "Monatlich",
-    "MOTION_PROCESS_MANAGEMENT": "Prozessverwaltung",
+    "MONTH_TO_MONTH": "Von Monat zu Monat",
+    "MOTION_PROCESS_MANAGEMENT": "Motion Process Management",
     "USEFUL_COMMANDS": "Nützliche Befehle",
     "COMMAND": "Befehl",
     "PM2_LIST": "Eine Liste aller Prozesse",
     "PM2_START": "Starten eines Prozesses durch ID oder Name",
-    "PM2_STOP": "Stoppen Sie einen Prozess-ID oder Name, fügen Sie\n\"All\", um alle aktiven Prozesse zu stoppen",
+    "PM2_STOP": "Stoppen Sie einen Prozess-ID oder Name, fügen Sie \"Alle\", um alle aktiven Prozesse",
     "PM2_RESTART": "Starten Sie einen Prozess, durch ID oder Name",
     "PM2_LOGS": "Alle Protokolle Stream Datei, oder spezifische eines Prozess-ID oder Name",
     "PASSWORD": "Passwort",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "STUNADDR": "STUN-Adresse",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "STUNADDR": "Die STUN-Adresse",
     "CHANGELOG": "Changelog",
     "CURRENT_VERSION": "Aktuelle Version",
-    "CUSTOMIZATIONS": "WhiteLabel",
+    "CUSTOMIZATIONS": "Anpassungen",
     "LOCALNETADDRESS": "Localnet Adresse",
     "NEW_VERSION": "Neue Version",
     "TRIAL_VERSION": "Testversion",
     "TOKEN": "Token",
-    "NEW_TOKEN_DETECTED": "Neuer Token erkannt",
-    "EXPIRATION_GRAY_PERIOD": "Ablauf Testperiode",
-    "NEW_TOKEN": "Neuer Token",
+    "NEW_TOKEN_DETECTED": "Neue Token erkannt",
+    "EXPIRATION_GRAY_PERIOD": "Grau Zeitraum Ablauf",
+    "NEW_TOKEN": "Neue Token",
     "PRICES": "Preise",
     "UPDATE_LICENSE": "Lizenz aktualisieren",
-    "LOGOLOGIN": "Login-Logo",
-    "EXPIRATION_REASON": "Ablaufgrund",
-    "GLOBAL": "Globale Einstellungen",
+    "LOGOLOGIN": "Login Logo",
+    "EXPIRATION_REASON": "Ablauf Grund",
+    "GLOBAL": "Global",
     "SMTP_AUTHENTICATION": "Authentifizierung",
-    "LICENSE_REQUEST_SENT": "Vielen Dank! Die Lizenz wurde angefragt. Bei Fragen wenden Sie sich bitte an unseren Support.",
-    "ACCOUNTNAME": "Kontoname",
-    "EMAILADDRESS": "E-Mail Adresse",
-    "OLD_TOKEN": "Alter Token",
+    "LICENSE_REQUEST_SENT": "Vielen Dank! Die Lizenzierung Team wird Sie in Ihrem Konto so schnell wie möglich um Ihre Wünsche zu genehmigen: erhalten Sie eine e-Mail, wenn die Änderungen wirksam werden. Lesen Sie bitte für weitere Informationen an License@xcally.com.",
+    "ACCOUNTNAME": "Konto Name",
+    "EMAILADDRESS": "E-mail Adresse",
+    "OLD_TOKEN": "Alte Token",
     "SEND_EMAIL_TO": "E-Mail senden an",
-    "JIRA_ERROR_MESSAGE": "Fehler bei der Anforderung der Lizenz. Bitte kontaktieren Sie unseren Support.",
+    "JIRA_ERROR_MESSAGE": "Fehler während der Lizenz anfordern. Bitte kontaktieren Sie unser Team bei License@xcally.com mit Ihrer Anfrage",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
-    "SMTP_SSL": "SMTP verwendet SSL-Verschlüsselung",
+    "OF": "Von",
+    "SMTP_SSL": "SMTP-SSL",
     "ENABLED": "Aktiviert",
     "DISABLED": "Deaktiviert",
     "UNLIMITED_CHANNELS": "Unbegrenzte Anzahl von Kanälen",
-    "PAGE_TITLE": "Seitentitel",
-    "DEFAULT_PAGE_TITLE": "Standard-Seitentitel",
-    "CALLYSQUARE": "CallySquare",
-    "DEFAULT_HEADER_WHITELABEL": "WhiteLabel Standardfußzeile",
-    "HEADER_WHITELABEL": "WhiteLabel Fußzeile",
-    "EXPIRATION_REASON_MESSAGE_CHANGED": "Die eindeutige ID des Systems wurde aufgrund der Änderungen aktualisiert. Bitte kontaktieren Sie unseren Support.",
-    "CALL_RECORDING_ENCRYPTION": "Verschlüsselung Gesprächsaufzeichnungen",
-    "TURNADDR": "TURN-Adresse",
-    "TURN_USERNAME": "TURN-Nutzername",
-    "TURN_PASSWORD": "TURN-Passwort",
-    "PERPETUAL": "Dauerlizenz",
+    "PAGE_TITLE": "Titel der Seite",
+    "DEFAULT_PAGE_TITLE": "Standard Seitentitel",
+    "CALLYSQUARE": "Cally Square",
+    "DEFAULT_HEADER_WHITELABEL": "White Label Standardfußzeile",
+    "HEADER_WHITELABEL": "White Label Fußzeile",
+    "EXPIRATION_REASON_MESSAGE_CHANGED": "Ihre Maschine eindeutige Id wurde aufgrund einer Änderung an Ihrem System aktualisiert. Kontakt xCALLY Motion Support Team Ihre alte und Ihre neue uuid zu senden.",
+    "CALL_RECORDING_ENCRYPTION": "Sprachaufnahme-Verschlüsselung",
+    "TURNADDR": "Adresse",
+    "TURN_USERNAME": "TURN Benutzername",
+    "TURN_PASSWORD": "Passwort ändern",
+    "PERPETUAL": "Unaufhörlich",
     "SECURITY_SUITE": "Sicherheitssuite",
     "ANNUALLY": "Jährlich",
-    "MOTIONBARAUTOUPDATER": "Automatisches Updates MotionBar",
-    "MOTIONBARAUTOUPDATERURL": "URL für automatische Updates",
-    "JAWS": "JAWS",
+    "MOTIONBARAUTOUPDATER": "Automatischer Updater",
+    "MOTIONBARAUTOUPDATERURL": "Automatische Updater-URL",
+    "JAWS": "Jaws",
     "ENABLEEMAILPREVIEW": "E-Mail-Vorschau aktivieren",
     "REPORT": "Bericht",
-    "SPLIT": "Teilen",
-    "SPLITSIZECSV": "Berichtgröße teilen [CSV-Format]",
-    "SPLITSIZEPDF": "Berichtgröße teilen [PDF-Format]",
-    "SPLITSIZEXLSX": "Berichtgröße teilen [XLSX-Format]",
-    "AGENTOMNIDESKTOPINTERFACE": "Omnichannel Agentenanwendung",
+    "SPLIT": "Bericht teilen",
+    "SPLITSIZECSV": "Berichtgröße teilen [CSV-Datensätze]",
+    "SPLITSIZEPDF": "Split-Berichtsgröße [PDF-Datensätze]",
+    "SPLITSIZEXLSX": "Split-Berichtsgröße [XLSX-Datensätze]",
+    "AGENTOMNIDESKTOPINTERFACE": "Agent Omni Desktopschnittstelle",
     "MESSAGESALIGNMENT": "Nachrichtenausrichtung",
-    "ENTER_LICENSE": "Lizenz einfügen",
-    "EXPIRATION_CHANGED_ADVISE": "Bitte wenden Sie sich an unseren Support und halten Sie Ihre alte und neue UUID bereit.",
+    "ENTER_LICENSE": "Geben Sie Ihre Lizenz ein",
+    "EXPIRATION_CHANGED_ADVISE": "Wenden Sie sich an das xCALLY Motion License Team und senden Sie Ihre alte und Ihre neue Uuid.",
     "EXPIRATION_REASON_MESSAGE_DISABLED": "Ihre Lizenz wurde deaktiviert.",
     "UPDATE_LICENSE_MANUALLY": "Möchten Sie Ihre Lizenz manuell aktualisieren?",
     "ADDONS": "Add-Ons",
     "SESSIONS": "Sitzungen",
-    "VIRTUAL": "Chat",
-    "VOICE": "Sprachanrufe",
-    "CHATTIMEOUT": "Automatisches Schließen Chat nach",
-    "MOTIONBARREMEMBERME": "Anmeldedaten merken",
+    "VIRTUAL": "Plaudern",
+    "VOICE": "Stimme",
+    "CHATTIMEOUT": "Chat schließt Interaktionszeitlimit",
+    "MOTIONBARREMEMBERME": "Erinnere dich an mich",
     "RTLSUPPORT": "RTL-Unterstützung",
-    "DEFAULTSCREENRECORDINGPATH": "Pfad für Bildschirmaufzeichnungen",
-    "SCREENRECORDING": "Bildschirmaufzeichnung",
+    "DEFAULTSCREENRECORDINGPATH": "Bildschirmaufzeichnungspfad",
+    "SCREENRECORDING": "Bildschirmaufnahme",
     "VIDEO": "Video",
-    "BLOCKDURATION": "Dauer automatisches Sperren (Minuten)",
+    "BLOCKDURATION": "Minuten vor dem automatischen Entsperren warten",
     "SECURITY": "Sicherheit",
-    "ALLOWEDLOGINATTEMPTS": "Zulässige Anmeldeversuche vor dem Sperren des Benutzers/Agenten",
+    "ALLOWEDLOGINATTEMPTS": "Zulässige Anmeldeversuche vor dem Sperren des Benutzers / Agenten",
     "DEFAULT_FAVICON": "Standard-Favicon",
     "FAVICON": "Favicon",
-    "IMAPGENERALSETTINGS": "IMAP-Einstellungen",
-    "LOGINMAILFREQUENCY": "Frequenz Mail-Login (Sek.)",
+    "IMAPGENERALSETTINGS": "IMAP",
+    "LOGINMAILFREQUENCY": "Anmelde-Mail-Häufigkeit (Sek.)",
     "USERNAME": "Nutzername",
     "GOOGLE_SSO_ENABLED": "Google SSO aktiviert",
     "SSO": "SSO",
     "AI": "A.I. Werkzeuge",
     "AITOOLS": "A.I. Werkzeuge",
     "APPZONE": "App Zone",
-    "BUCKET": "Korb",
+    "BUCKET": "Eimer",
     "DELETE": "Löschen",
     "DELETE_CLOUDPROVIDER": "Konto löschen",
     "EDIT_CLOUDPROVIDER": "Konto bearbeiten",
     "LANGUAGE": "Sprache",
     "NEW_CLOUDPROVIDER": "Neues Konto",
     "SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
-    "SENTIMENTACCOUNT": "Konto für Sentimentanalyse",
-    "SENTIMENTANALYSIS": "Sentimentanalyse",
-    "SENTIMENTREGION": "Region für Sentimentanalyse",
-    "SERVICE": "Dienst",
+    "SENTIMENTACCOUNT": "Sentiment Analysis Account",
+    "SENTIMENTANALYSIS": "Stimmungsanalyse",
+    "SENTIMENTREGION": "Sentiment Analysis Region",
+    "SERVICE": "Bedienung",
     "TRANSCRIBE": "Transkribieren",
-    "TRANSCRIBEACCOUNT": "Transkription Konto",
-    "TRANSCRIBEREGION": "Transkription Region",
+    "TRANSCRIBEACCOUNT": "Konto transkribieren",
+    "TRANSCRIBEREGION": "Region transkribieren",
     "WHATSAPP": "WhatsApp Connector",
-    "ENFORCE_PASSWORD_HISTORY": "Speichern Passwortverlauf",
-    "PASSWORD_HISTORY_LIMIT": "Max gespeicherte Passwörter",
-    "SEARCH_ON_ENTER_KEY": "Suche durch Drücken der Eingabetaste starten",
-    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Zeitlimit für das erneute Laden von Chat-Interaktionen",
+    "ENFORCE_PASSWORD_HISTORY": "Kennwortverlauf erzwingen",
+    "PASSWORD_HISTORY_LIMIT": "Kennwortverlaufslimit",
+    "SEARCH_ON_ENTER_KEY": "Suchen Sie mit der Eingabetaste",
+    "CHAT_INTERACTIONS_RELOAD_TIMEOUT": "Zeitüberschreitung beim erneuten Laden von Chat-Interaktionen",
     "MAIL_INTERACTIONS_RELOAD_TIMEOUT": "Zeitlimit für das erneute Laden von E-Mail-Interaktionen",
-    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Zeitlimit für das erneute Laden von Open Channel-Interaktionen",
-    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "Zeitlimit für das erneute Laden von SMS-Interaktionen",
-    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "Zeitlimit für das erneute Laden von WhatsApp-Interaktionen ",
-    "PRIVACY_POLICY_EMAIL": "Maskierung von E-Mail Adressen",
-    "PRIVACY_POLICY_NAME": "Maskierung von Kundennamen",
-    "PRIVACY_POLICY_NUMBER": "Maskierung von Nummern",
-    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Gesprächsaufzeichnung bei Transfer stoppen",
+    "OPENCHANNEL_INTERACTIONS_RELOAD_TIMEOUT": "Zeitüberschreitung beim erneuten Laden von Open Channel-Interaktionen",
+    "SMS_INTERACTIONS_RELOAD_TIMEOUT": "Zeitüberschreitung beim erneuten Laden von SMS-Interaktionen",
+    "WHATSAPP_INTERACTIONS_RELOAD_TIMEOUT": "WhatsApp Connector-Interaktionen laden das Zeitlimit neu",
+    "PRIVACY_POLICY_EMAIL": "Datenschutzerklärung für E-Mail-Adressen",
+    "PRIVACY_POLICY_NAME": "Datenschutzerklärung für Namen",
+    "PRIVACY_POLICY_NUMBER": "Datenschutzerklärung für Nummern",
+    "STOP_RECORDING_ON_VOICE_CALL_TRANSFER": "Beenden Sie die Aufzeichnung bei Sprachanrufweiterleitung",
     "AD_SSO_ENABLED": "Active Directory SSO aktiviert",
     "APPLICATION_ID": "Anwendungs-ID",
     "AUTHENTICATE": "Authentifizieren",
index 3a692ac..6a12726 100644 (file)
       "SENTIMENTACCOUNT_REQUIRED": "Mandatory field",
       "USERNAME_REQUIRED": "Mandatory field",
       "FIELD_REQUIRED": "Mandatory field",
-      "WRONG_FORMAT": "Wrong format"
+      "WRONG_FORMAT": "Wrong format",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to"
     },
     "NOTIFICATIONS": {
       "MICROSOFT_AUTHENTICATION_SUCCESS": "Authentication to the Microsoft Identity Platform completed successfully",
index dd6a643..64234bb 100644 (file)
@@ -68,7 +68,8 @@
       "TRANSCRIBEREGION_REQUIRED": "Campo obligatorio",
       "FIELD_REQUIRED": "Campo obligatorio",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Campo obligatorio",
-      "WRONG_FORMAT": "Formato erróneo"
+      "WRONG_FORMAT": "Formato erróneo",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El valor debe ser mayor o igual que"
     },
     "ACCOUNTNAME": "Nombre de la cuenta",
     "ADDRESS": "Dirección",
index e6e0fd1..054b0d7 100644 (file)
       "USERNAME_REQUIRED": "Kohustuslik väli",
       "FIELD_REQUIRED": "Kohustuslik väli",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Kohustuslik väli",
-      "WRONG_FORMAT": "Vale formaat"
+      "WRONG_FORMAT": "Vale formaat",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Väärtus peab olema suurem või võrdne sellega"
     },
     "EDIT_NETWORK": "Edit Network",
     "DELETE_NETWORK": "Delete Network",
index 46dcdbc..c43a818 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "زمینه اجباری",
       "FIELD_REQUIRED": "فیلد اجباری",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "فیلد اجباری",
-      "WRONG_FORMAT": "فرمت اشتباه"
+      "WRONG_FORMAT": "فرمت اشتباه",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "مقدار باید بزرگتر یا مساوی باشد"
     },
     "EDIT_NETWORK": "ویرایش شبکه",
     "DELETE_NETWORK": "شبکه را حذف کنید",
index 67b307b..ad64216 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Pakollinen kenttä",
       "FIELD_REQUIRED": "Pakollinen kenttä",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Pakollinen kenttä",
-      "WRONG_FORMAT": "Väärä formaatti"
+      "WRONG_FORMAT": "Väärä formaatti",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Arvon on oltava suurempi tai yhtä suuri kuin"
     },
     "EDIT_NETWORK": "Muokkaa verkko",
     "DELETE_NETWORK": "Poista verkko",
index 189a41c..d5dcba5 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Champ obligatoire",
       "FIELD_REQUIRED": "Champ obligatoire",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Champ obligatoire",
-      "WRONG_FORMAT": "Mauvais format"
+      "WRONG_FORMAT": "Mauvais format",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La valeur doit être supérieure ou égale à"
     },
     "EDIT_NETWORK": "Modifier un réseau",
     "DELETE_NETWORK": "Supprimer réseau",
index 06ba444..ce0293c 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "שדה חובה",
       "FIELD_REQUIRED": "שדה חובה",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "שדה חובה",
-      "WRONG_FORMAT": "פורמט שגוי"
+      "WRONG_FORMAT": "פורמט שגוי",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "הערך חייב להיות גדול או שווה ל"
     },
     "EDIT_NETWORK": "ערוך רשת",
     "DELETE_NETWORK": "מחק רשת",
index 9caabb6..f66cb23 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "आवश्यक स्थान",
       "FIELD_REQUIRED": "अनिवार्य क्षेत्र",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "अनिवार्य क्षेत्र",
-      "WRONG_FORMAT": "गलत प्रारूप"
+      "WRONG_FORMAT": "गलत प्रारूप",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "मान से बड़ा या उसके बराबर होना चाहिए"
     },
     "EDIT_NETWORK": "नेटवर्क संपादित करें",
     "DELETE_NETWORK": "नेटवर्क हटाएं",
index 98728dd..97ab5ac 100644 (file)
       "USERNAME_REQUIRED": "Mandatory field",
       "FIELD_REQUIRED": "Kötelezően kitöltendő mező",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Kötelezően kitöltendő mező",
-      "WRONG_FORMAT": "Hibás formátum"
+      "WRONG_FORMAT": "Hibás formátum",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Az értéknek nagyobbnak vagy egyenlőnek kell lennie, mint"
     },
     "AD_SSO_ENABLED": "Active Directory SSO engedélyezve",
     "APPLICATION_ID": "Alkalmazásazonosító",
index 22a8658..507ce52 100644 (file)
@@ -45,7 +45,8 @@
       "TRANSCRIBEREGION_REQUIRED": "Bidang wajib",
       "FIELD_REQUIRED": "Bidang wajib",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Bidang wajib",
-      "WRONG_FORMAT": "Format yang salah"
+      "WRONG_FORMAT": "Format yang salah",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nilai harus lebih besar dari atau sama dengan"
     },
     "HELP": {
       "ADDRESS": "Alamat ip eksternal (publik)",
index 4cfe1e4..9f67454 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Campo obbligatorio",
       "USERNAME_REQUIRED": "Campo obbligatorio",
       "FIELD_REQUIRED": "Campo obbligatorio",
-      "WRONG_FORMAT": "Il campo deve avere un formato valido"
+      "WRONG_FORMAT": "Il campo deve avere un formato valido",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore deve essere maggiore o uguale a"
     },
     "NOTIFICATIONS": {
       "MICROSOFT_AUTHENTICATION_SUCCESS": "Autenticazione a Microsoft Identity Platform completata con successo",
index 1174383..7bb05de 100644 (file)
@@ -45,7 +45,8 @@
       "TRANSCRIBEREGION_REQUIRED": "必須フィールド",
       "FIELD_REQUIRED": "必須フィールド",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "必須フィールド",
-      "WRONG_FORMAT": "間違ったフォーマット"
+      "WRONG_FORMAT": "間違ったフォーマット",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "値は以上である必要があります"
     },
     "HELP": {
       "ADDRESS": "外部(パブリック)IPアドレス",
index 31d3849..dd3d58d 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "필수 필드",
       "FIELD_REQUIRED": "필수 필드",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "필수 필드",
-      "WRONG_FORMAT": "잘못된 형식"
+      "WRONG_FORMAT": "잘못된 형식",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "값은 다음보다 크거나 같아야 합니다."
     },
     "EDIT_NETWORK": "네트워크 수정",
     "DELETE_NETWORK": "네트워크 삭제",
index 0cf41d7..ace5dab 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Privalomas laukas",
       "FIELD_REQUIRED": "Privalomas laukas",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Privalomas laukas",
-      "WRONG_FORMAT": "Blogas formatas"
+      "WRONG_FORMAT": "Blogas formatas",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Vertė turi būti didesnė arba lygi"
     },
     "EDIT_NETWORK": "Redaguoti tinklą",
     "DELETE_NETWORK": "Ištrinti tinklą",
index 835cc3a..2f9623a 100644 (file)
@@ -46,7 +46,8 @@
       "TRANSCRIBEREGION_REQUIRED": "Obligāts lauks",
       "FIELD_REQUIRED": "Obligāts lauks",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Obligāts lauks",
-      "WRONG_FORMAT": "Nepareizs formāts"
+      "WRONG_FORMAT": "Nepareizs formāts",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Vērtībai ir jābūt lielākai par vai vienādai ar"
     },
     "HELP": {
       "ADDRESS": "Ārējā (publiskā) IP adrese",
index e18e566..737a152 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Verplicht veld",
       "FIELD_REQUIRED": "Verplicht veld",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Verplicht veld",
-      "WRONG_FORMAT": "Verkeerd formaat"
+      "WRONG_FORMAT": "Verkeerd formaat",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter zijn dan of gelijk zijn aan"
     },
     "EDIT_NETWORK": "Edit netwerk",
     "DELETE_NETWORK": "Netwerk verwijderen",
index 6d72d16..60da4e1 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Obligatoriske felt",
       "FIELD_REQUIRED": "Obligatoriske felt",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Obligatoriske felt",
-      "WRONG_FORMAT": "Feil format"
+      "WRONG_FORMAT": "Feil format",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Verdien må være større enn eller lik"
     },
     "EDIT_NETWORK": "Endre nettverk",
     "DELETE_NETWORK": "Slette nettverket",
index d198040..9ba80fb 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Pole obowiązkowe",
       "FIELD_REQUIRED": "Pole obowiązkowe",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Pole obowiązkowe",
-      "WRONG_FORMAT": "Zły format"
+      "WRONG_FORMAT": "Zły format",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wartość musi być większa lub równa"
     },
     "EDIT_NETWORK": "Edycja sieci",
     "DELETE_NETWORK": "Usuń sieć",
index 7cec298..58f29ba 100644 (file)
@@ -1,6 +1,6 @@
 {
   "SETTINGS": {
-    "PREFERRED": "Logotipo Preferido",
+    "PREFERRED": "Logotipo preferido",
     "DEFAULT_PREFERRED": "Logotipo preferido padrão",
     "MOTIONBARREMEMBERME": "Lembre de mim",
     "CHATTIMEOUT": "Tempo limite de interação de fechamento de chat",
@@ -27,7 +27,7 @@
     "CALLYSQUARE": "Cally Square",
     "ENABLED": "Ativado",
     "DISABLED": "Desativado",
-    "UNLIMITED_CHANNELS": "Canais Ilimitados",
+    "UNLIMITED_CHANNELS": "Canais ilimitados",
     "RELOAD": "Recarregar",
     "VERIFY": "Verificar",
     "INTERFACE": "Interface",
       "TRANSCRIBEREGION_REQUIRED": "Campo obrigatório",
       "FIELD_REQUIRED": "Campo obrigatório",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Campo obrigatório",
-      "WRONG_FORMAT": "Formato incorreto"
+      "WRONG_FORMAT": "Formato incorreto",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a"
     },
     "EDIT_NETWORK": "Editar rede",
     "DELETE_NETWORK": "Excluir rede",
index 182811a..e542c6b 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Campo obrigatório",
       "FIELD_REQUIRED": "Campo obrigatório",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Campo obrigatório",
-      "WRONG_FORMAT": "Formato incorreto"
+      "WRONG_FORMAT": "Formato incorreto",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a"
     },
     "EDIT_NETWORK": "Editar rede",
     "DELETE_NETWORK": "Excluir redes",
index 9335943..3a4a490 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Обязательное поле",
       "FIELD_REQUIRED": "Обязательное поле",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Обязательное поле",
-      "WRONG_FORMAT": "Неправильный формат"
+      "WRONG_FORMAT": "Неправильный формат",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно"
     },
     "EDIT_NETWORK": "Редактировать сети",
     "DELETE_NETWORK": "Удалить сеть",
index 2a59c4d..2d5a75c 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Obligatoriskt fält",
       "FIELD_REQUIRED": "Obligatoriskt fält",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Obligatoriskt fält",
-      "WRONG_FORMAT": "Fel format"
+      "WRONG_FORMAT": "Fel format",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Värdet måste vara större än eller lika med"
     },
     "EDIT_NETWORK": "Edit Network",
     "DELETE_NETWORK": "Ta bort nätverket",
index 84187a6..9d44523 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "Zorunlu alan",
       "FIELD_REQUIRED": "Zorunlu alan",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "Zorunlu alan",
-      "WRONG_FORMAT": "Yanlış format"
+      "WRONG_FORMAT": "Yanlış format",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Değer, bundan büyük veya ona eşit olmalıdır"
     },
     "EDIT_NETWORK": "Edit Ağ",
     "DELETE_NETWORK": "Delete Ağ",
index 2bd7475..d273953 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "必填项",
       "FIELD_REQUIRED": "必填项",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "必填项",
-      "WRONG_FORMAT": "格式错误"
+      "WRONG_FORMAT": "格式错误",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "该值必须大于或等于"
     },
     "EDIT_NETWORK": "编辑网络",
     "DELETE_NETWORK": "删除网络",
index a7cec5c..2a1715c 100644 (file)
       "TRANSCRIBEREGION_REQUIRED": "必填項",
       "FIELD_REQUIRED": "必填項",
       "PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED": "必填項",
-      "WRONG_FORMAT": "格式錯誤"
+      "WRONG_FORMAT": "格式錯誤",
+      "PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "該值必須大於或等於"
     },
     "EDIT_NETWORK": "編輯網路",
     "DELETE_NETWORK": "刪除網路",
index 9a01507..cddbe68 100644 (file)
@@ -3,72 +3,72 @@
     "KEY": "Schlüssel",
     "NAME": "Name",
     "SMSQUEUES": "SMS-Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche",
-    "STRATEGY": "Verteilungsstrategie",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
+    "STRATEGY": "Strategie",
     "ERRORS": {
-      "KEY_MAX_LENGTH": "Wert darf nicht länger als {{max}} Zeichen sein",
-      "KEY_REQUIRED": "Schlüssel erforderlich",
-      "NAME_REQUIRED": "Name erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Zeitüberschreitung Agent erforderlich",
-      "PHONE_REQUIRED": "Telefonnummer erforderlich",
-      "SID_REQUIRED": "SID erforderlich",
-      "TOKEN_REQUIRED": "Token erforderlich",
-      "USERNAME_REQUIRED": "Nutzername erforderlich",
-      "PASSWORD_REQUIRED": "Passwort erforderlich",
-      "MOTIONADDRESS_REQUIRED": "Adresse erforderlich",
-      "MOTIONADDRESS_MUST_VALID_URL": "Ungültiges Format Adresse",
-      "ACCEPTURL_MUST_VALID_URL": "Ungültiges Format URL",
-      "TIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
-      "REJECTURL_MUST_VALID_URL": "Ungültiges Format URL bei Ablehnen",
-      "CLOSEURL_MUST_VALID_URL": "Ungültiges Format URL bei Schließen",
-      "TYPE_REQUIRED": "Typ erforderlich",
-      "LIST_REQUIRED": "Liste erforderlich",
-      "PRIORITY_REQUIRED": "Priorität erforderlich",
-      "CONDITION_REQUIRED": "Bedingung erforderlich",
-      "TRUEPRIORITY_REQUIRED": "Priorität bei zutreffender Bedingung erforderlich",
-      "FALSEPRIORITY_REQUIRED": "Priorität bei nicht zutreffender Bedingung erforderlich",
-      "AGENT_REQUIRED": "Agent erforderlich",
-      "QUEUE_REQUIRED": "Warteschlange erforderlich",
-      "DISPOSITION_REQUIRED": "Qualifizierung erforderlich",
-      "ACCOUNTSID_REQUIRED": "Konto-SID erforderlich",
-      "AUTHTOKEN_REQUIRED": "Token für Authentifizierung erforderlich",
-      "MOTIONPROXY_REQUIRED": "Proxy erforderlich",
-      "MOTIONPROXY_MUST_VALID_URL": "Ungültiges Format Proxy",
-      "TEXT_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
-      "TEXT_REQUIRED": "Text erforderlich",
-      "VALUE_REQUIRED": "Wert erforderlich",
-      "SENDERSTRING_MAX_LENGTH": "Wert darf nicht länger als {{max}} Zeichen sein",
-      "SENDERSTRING_MUST_VALID_PATTERN": "Ungültiges Format SENDER",
-      "METHOD_REQUIRED": "Methode erforderlich",
-      "AUTHID_REQUIRED": "AUTH_ID erforderlich",
-      "COMMAND_REQUIRED": "Eingabe erforderlich",
-      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung Agent muss größer oder gleich sein als",
-      "NAME_MUST_VALID_PATTERN": "Ungültiges Format Name",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
-      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Agent muss kleiner oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Auf zugewiesenen Agenten warten erforderlich",
-      "TAG_REQUIRED": "Tag erforderlich",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung Agententransfer erforderlich",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung Warteschlangentransfer erforderlich",
-      "APIKEY_REQUIRED": "API-Key erforderlich",
-      "BASEURL_REQUIRED": "Base_URL erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "PausenID während Qualifizierung erforderlich",
-      "ACCESSKEYID_REQUIRED": "Zugangsschlüssel-ID erforderlich",
-      "BOTNAME_REQUIRED": "BOTName erforderlich",
-      "SECRETACCESSKEY_REQUIRED": "Geheimer Zugangsschlüssen erforderlich",
-      "CLIENTEMAIL_REQUIRED": "Kunden E-Mail erforderlich",
-      "PRIVATEKEY_REQUIRED": "Privater Schlüssel erforderlich",
-      "PROJECTID_REQUIRED": "ProjektID erforderlich",
-      "ACCOUNTID_REQUIRED": "AccountID erforderlich",
-      "APPLICATIONID_REQUIRED": "AnwendungsID erforderlich"
+      "KEY_MAX_LENGTH": "Schlüssel muss eine maximale Länge von {{max}}",
+      "KEY_REQUIRED": "Schlüssel ist erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "AGENT_TIMEOUT_REQUIRED": "Der Agent Timeout ist erforderlich",
+      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
+      "SID_REQUIRED": "Die SID ist erforderlich",
+      "TOKEN_REQUIRED": "Das Token ist erforderlich",
+      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
+      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
+      "MOTIONADDRESS_REQUIRED": "Die Adresse ist erforderlich",
+      "MOTIONADDRESS_MUST_VALID_URL": "Die Adresse muss in einem gültigen Format",
+      "ACCEPTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
+      "REJECTURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "CLOSEURL_MUST_VALID_URL": "Die URL muss in einem gültigen Format",
+      "TYPE_REQUIRED": "Der Typ ist erforderlich",
+      "LIST_REQUIRED": "Die Liste ist erforderlich",
+      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
+      "CONDITION_REQUIRED": "Der Zustand ist erforderlich",
+      "TRUEPRIORITY_REQUIRED": "Die wahre Priorität ist erforderlich",
+      "FALSEPRIORITY_REQUIRED": "Die falsche Priorität ist erforderlich",
+      "AGENT_REQUIRED": "Der Agent ist erforderlich",
+      "QUEUE_REQUIRED": "Die Warteschlange ist erforderlich",
+      "DISPOSITION_REQUIRED": "Die Disposition ist erforderlich",
+      "ACCOUNTSID_REQUIRED": "Konto SID ist erforderlich",
+      "AUTHTOKEN_REQUIRED": "Auth Token ist erforderlich",
+      "MOTIONPROXY_REQUIRED": "Pflichtfeld",
+      "MOTIONPROXY_MUST_VALID_URL": "Falsches Format",
+      "TEXT_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "TEXT_REQUIRED": "Pflichtfeld",
+      "VALUE_REQUIRED": "Pflichtfeld",
+      "SENDERSTRING_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "SENDERSTRING_MUST_VALID_PATTERN": "Falsches Format",
+      "METHOD_REQUIRED": "Pflichtfeld",
+      "AUTHID_REQUIRED": "Pflichtfeld",
+      "COMMAND_REQUIRED": "Pflichtfeld",
+      "AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "NAME_MUST_VALID_PATTERN": "Falsches Format",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
+      "TAG_REQUIRED": "Pflichtfeld",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
+      "APIKEY_REQUIRED": "Pflichtfeld",
+      "BASEURL_REQUIRED": "Pflichtfeld",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
+      "ACCESSKEYID_REQUIRED": "Die Zugangsschlüssel-ID ist erforderlich",
+      "BOTNAME_REQUIRED": "Bot Name ist erforderlich",
+      "SECRETACCESSKEY_REQUIRED": "Zugriffsschlüsselgeheimnis ist erforderlich",
+      "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
+      "PRIVATEKEY_REQUIRED": "Pflichtfeld",
+      "PROJECTID_REQUIRED": "Pflichtfeld",
+      "ACCOUNTID_REQUIRED": "Pflichtfeld",
+      "APPLICATIONID_REQUIRED": "Pflichtfeld"
     },
-    "AGENT_TIMEOUT": "Zeitüberschreitung Agent",
+    "AGENT_TIMEOUT": "Agent Timeout",
     "DESCRIPTION": "Beschreibung",
     "ADD_SMSQUEUE": "SMS-Warteschlange hinzufügen",
     "EDIT_SMSQUEUE": "SMS-Warteschlange bearbeiten",
     "SID": "SID",
     "TOKEN": "Token",
     "SMSTYPE": "SMS-Typ",
-    "USERNAME": "Nutzername",
+    "USERNAME": "Benutzername",
     "PASSWORD": "Passwort",
     "MOTIONADDRESS": "Motion Adresse",
     "ADD_SMSACCOUNT": "SMS-Konto hinzufügen",
     "EDIT_SMSACCOUNT": "SMS-Konto bearbeiten",
-    "DELETE_SMSACCOUNT": "SMS-Konto löschen",
+    "DELETE_SMSACCOUNT": "SMS-Konto löschen.",
     "LIST": "Liste",
     "FIDELITY": "Treue",
     "API": "API",
-    "DISPOSITIONS": "Qualifizierungen",
+    "DISPOSITIONS": "Bestimmungen",
     "WEBHOOKS": "WebHooks",
-    "ACTIONS": "Routing",
+    "ACTIONS": "Aktionen",
     "ACCEPT": "Akzeptieren",
-    "ACCEPTMETHOD": "Methode akzeptieren",
+    "ACCEPTMETHOD": "Die Methode",
     "ACCEPTURL": "URL akzeptieren",
     "REJECT": "Ablehnen",
     "REJECTMETHOD": "Methode ablehnen",
     "REJECTURL": "URL ablehnen",
-    "CLOSE": "Schließen und Qualifizieren",
-    "CLOSEMETHOD": "Methode schließen",
-    "CLOSEURL": "URL schließen",
-    "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "CLOSE": "In der Nähe",
+    "CLOSEMETHOD": "In der Nähe Methode",
+    "CLOSEURL": "Der URL",
+    "SELECTED": "Ausgewählte",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "BACK": "Zurück",
     "SMS": "SMS",
-    "ID": "ID",
+    "ID": "Id",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
-    "SMSDISPOSITIONS": "SMS-Qualifizierungen",
-    "NO_SMSDISPOSITION_AVAILABLE": "Keine Qualifizierungen vorhanden",
-    "NEW_SMSDISPOSITION": "Neue Qualifizierung",
-    "ADD_SMSDISPOSITION": "Qualifizierung hinzufügen",
-    "EDIT_SMSDISPOSITION": "Qualifizierung bearbeiten",
-    "DELETE_SMSDISPOSITION": "Qualifizierung löschen",
+    "SMSDISPOSITIONS": "SMS-Bestimmungen",
+    "NO_SMSDISPOSITION_AVAILABLE": "Keine SMS-Verfügungen zur Verfügung",
+    "NEW_SMSDISPOSITION": "Neue SMS-Disposition",
+    "ADD_SMSDISPOSITION": "SMS-Disposition",
+    "EDIT_SMSDISPOSITION": "Bearbeiten Sie SMS-Disposition",
+    "DELETE_SMSDISPOSITION": "SMS löschen Disposition",
     "NEW_SMSQUEUE": "Neue SMS-Warteschlange",
     "NEW_SMSACCOUNT": "Neue SMS-Konto",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "ALL_TEAMS": "Alle Teams",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "HELP": {
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "LIST": "Kontaktmanage- Liste zu verknüpfen von Kontakten",
+      "LIST": "Contact Manager Liste zu verknüpfen von Kontakten",
       "RECEIVEURL": "Dies ist die automatisch generierte API-String müssen Sie die Nachrichten in Ihrem Konto von Ihrem SMS-Anbieter zu erhalten (POST-Methode verwendet werden muss). Drücken Sie die Zwischenablage, um Sie in die Zwischenablage zu kopieren.",
       "MOTIONPROXY": "Das Feld muss das folgende Format haben: <Protokoll>://<IP-Adresse>[:<Port>]. Beispiel: https://X.Y.Z.W",
       "DELIVERYREPORTURL": "Dies ist die automatisch generierte API-Zeichenfolge, die Sie verwenden müssen, um den Zustellungsbericht gesendeter Nachrichten von Ihrem SMS-Anbieter zu empfangen (die POST-Methode muss verwendet werden): Klicken Sie auf die Zwischenablage, um sie zu kopieren",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus während der Qualifizierung",
-      "WELCOMEMESSAGE": "Erste Nachricht bei neuen Interaktionen"
+      "MANDATORYDISPOSITION": "Zwingende Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Anhalten, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
+      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, die an neue Interaktionen gesendet wird"
     },
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "TEAMADD_SMSQUEUE": "Team zur Warteschlange hinzufügen",
-    "AGENTADD_SMSQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTADD_SMSQUEUE": "Agent zur Warteschlange hinzufügen",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
-    "RECEIVEURL": "URL erhalten",
+    "RECEIVEURL": "Erhalten URL",
     "INTERACTION": "Interaktion",
-    "INTERACTIONS": "Interaktionen",
-    "NO_INTERACTION_AVAILABLE": "Keine Interaktionen vorhanden",
+    "INTERACTIONS": "Wechselwirkungen",
+    "NO_INTERACTION_AVAILABLE": "Es sind keine Wechselwirkungen zur Verfügung",
     "CONTACT": "Kontakt",
     "STARTEDAT": "Gestartet am",
     "AGENT": "Agent",
-    "CLOSEDAT": "Geschlossen am",
-    "DISPOSITION": "Qualifizierung",
-    "NOTES": "Anmerkungen",
-    "GOTO": "GeheZu (GoTo)",
-    "GOTOIF": "GeheZuWenn (GoToIf)",
-    "NOOP": "Log erstellen (NoOp)",
+    "CLOSEDAT": "Geschlossen",
+    "DISPOSITION": "Disposition",
+    "NOTES": "Hinweise",
+    "GOTO": "Gehe zu",
+    "GOTOIF": "Gotoif",
+    "NOOP": "Noop",
     "QUEUE": "Warteschlange",
-    "TIMEOUT": "Zeitüberschreitung",
+    "TIMEOUT": "Timeout",
     "VALUE": "Wert",
-    "EDIT_AGENT": "Agenten bearbeiten",
-    "EDIT_GOTO": "\"GeheZu\" bearbeiten",
-    "EDIT_NOOP": "Log-Erstellung bearbeiten",
-    "EDIT_GOTOIF": "Bedingung bearbeiten und Priorität zuweisen",
+    "EDIT_AGENT": "Agent bearbeiten",
+    "EDIT_GOTO": "Bearbeiten Gehe zu",
+    "EDIT_NOOP": "Bearbeiten Noop",
+    "EDIT_GOTOIF": "Bearbeiten Gotoif",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "CONDITION": "Bedingung",
-    "TRUEPRIORITY": "Priorität bei zutreffender Bedingung erforderlich",
-    "FALSEPRIORITY": "Priorität bei nicht zutreffender Bedingung erforderlich",
+    "CONDITION": "Zustand",
+    "TRUEPRIORITY": "Wahre Priorität",
+    "FALSEPRIORITY": "Falsche Priorität",
     "PRIORITY": "Priorität",
-    "GOTOP": "Priorität zuweisen (GoToP)",
-    "EDIT_GOTOP": "GoToP bearbeiten",
-    "EDIT_CLOSE": "Verhalten bei Schließen bearbeiten",
+    "GOTOP": "Gotop",
+    "EDIT_GOTOP": "Gotop bearbeiten",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
     "FILTER": "Filter",
-    "SELECT_STATUS": "Status wählen",
-    "ALL": "Alles",
-    "SELECT_ACCOUNT": "Konto wählen",
-    "OPENED": "Geöffnet",
+    "SELECT_STATUS": "Wählen Sie einen Status",
+    "ALL": "Alle",
+    "SELECT_ACCOUNT": "Wählen Sie ein Konto",
+    "OPENED": "Öffnen",
     "CLOSED": "Geschlossen",
     "STATUS": "Status",
     "ACCOUNT": "Konto",
-    "OPEN": "Offen",
-    "INFO": "Information",
+    "OPEN": "Öffnen",
+    "INFO": "Info",
     "ACCOUNTSID": "Konto SID",
     "AUTHTOKEN": "Auth Token",
     "PROXY": "Proxy",
-    "ADVANCED": "Erweitert",
+    "ADVANCED": "Erweiterte",
     "MOTIONPROXY": "Proxy oder Motion Domain",
     "REALTIME": "Echtzeit",
     "UNKNOWN": "Unbekannt",
-    "UNREGISTERED": "Nicht registriert",
+    "UNREGISTERED": "Unregistrierte",
     "UNAVAILABLE": "Nicht verfügbar",
-    "NOT_INUSE": "Nicht in Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
     "REACHABLE": "Erreichbar",
-    "IN_USE": "In Verwendung",
+    "IN_USE": "Im Einsatz",
     "AGENTS": "Agenten",
     "QUEUES": "Warteschlangen",
-    "FULLNAME": "Vollständiger Name",
-    "INTERNAL": "Intern",
-    "PHONE_STATE": "Status Nebenstelle",
-    "PHONE_STATUS": "SIP-Status Nebenstelle",
+    "FULLNAME": "Fullname",
+    "INTERNAL": "Interne",
+    "PHONE_STATE": "Telefonstatus",
+    "PHONE_STATUS": "Telefonstatus",
     "PAUSE": "Pause",
     "LOGOUT": "An-/Abmelden",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "UNPAUSE": "Pause abbrechen",
-    "DEFAULT_PAUSE": "Standardpause",
+    "AGENTADD_QUEUE": "Agent SMS-Warteschlange hinzufügen",
+    "UNPAUSE": "Pause beenden",
+    "DEFAULT_PAUSE": "Standard Pause",
     "LOGGED_IN": "Angemeldet",
-    "PAUSED": "in Pause",
+    "PAUSED": "Angehalten",
     "READY": "Bereit",
     "WAITING": "Warten",
-    "VOICE": "Anrufe",
+    "VOICE": "Voice",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
-    "OPENCHANNEL": "Offener Kanal",
+    "OPENCHANNEL": "Channel öffnen",
     "FAX": "Fax",
-    "AGENTSADD_QUEUE": "Agenten zur SMS-Warteschlange hinzufügen",
+    "AGENTSADD_QUEUE": "Agenten zu SMS-Warteschlange hinzufügen",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "GOTOREALTIME_SMSQUEUE": "Direkt zur Echtzeit-Warteschlange",
-    "PARTIALPAUSE": "Teilpause",
+    "GOTOREALTIME_SMSQUEUE": "In Echtzeit, SMS-Warteschlange",
+    "PARTIALPAUSE": "Lastschriftzahlung teilweise Pause",
     "BUSY": "Besetzt",
     "TIMER": "Timer",
     "IDLE": "Leerlauf",
     "CAPACITY": "Kapazität",
     "SEND": "Senden",
-    "TO": "An",
+    "TO": "Zu",
     "MESSAGE": "Nachricht",
     "TAGS": "Tags",
-    "INTERACTIONS_SMSACCOUNT": "Zu den Interaktionen gehen",
-    "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen verfügbar",
-    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
-    "NO_SMSDISPOSITIONS_AVAILABLE": "Keine Qualifizierungen verfügbar",
-    "NO_SMSCANNEDANSWER_AVAILABLE": "Keine Textvorlagen vorhanden",
-    "NEW_SMSCANNEDANSWER": "Neue Textvorlage",
-    "ADD_SMSCANNEDANSWER": "Textvorlage hinzufügen",
-    "EDIT_SMSCANNEDANSWER": "Textvorlage bearbeiten",
-    "DELETE_SMSCANNEDANSWER": "Textvorlage löschen",
-    "DELIVERYREPORTURL": "URL bei Erhalt",
+    "INTERACTIONS_SMSACCOUNT": "Zu Wechselwirkungen gehen",
+    "REFRESH_INTERACTIONS": "Aktualisieren Interaktionen",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinerte Antwort zu suchen",
+    "NO_SMSDISPOSITIONS_AVAILABLE": "Keine Sms-Disposition verfügbar",
+    "NO_SMSCANNEDANSWER_AVAILABLE": "Keine vordefinierten Antworten verfügbar",
+    "NEW_SMSCANNEDANSWER": "Neue vordefinierte Antwort",
+    "ADD_SMSCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_SMSCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "DELETE_SMSCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "DELIVERYREPORTURL": "Zustellungsbericht-URL",
     "DELETE": "Löschen",
-    "SENDERSTRING": "Absenderkennung",
+    "SENDERSTRING": "Absenderzeichenfolge",
     "DELIVERYREPORT": "Sendebericht",
     "METHOD": "Methode",
     "ADD_NOTE": "Notiz hinzufügen",
     "NOTE": "Hinweis",
-    "SPYINTERACTION": "Anzeigen",
+    "SPYINTERACTION": "Spion",
     "AUTOREPLY": "Automatische Antwort",
-    "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
-    "TIMES": "Zeiten",
+    "EDIT_AUTOREPLY": "Bearbeiten Sie die automatische Antwort",
+    "TIMES": "Anzahl der Male pro Interaktion",
     "TEXT": "Text",
-    "INSERT_MESSAGE_HERE": "Nachricht hier einfügen",
+    "INSERT_MESSAGE_HERE": "Fügen Sie hier Ihre Textnachricht ein",
     "DELETE_INTERACTION": "Interaktion löschen",
     "AUTHID": "Authentifizierungs-ID",
-    "COMMAND": "Eingabe",
+    "COMMAND": "Befehl",
     "EDIT_SYSTEM": "System bearbeiten",
     "SYSTEM": "System",
-    "VARIABLE": "Variabel",
+    "VARIABLE": "Variable",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Sound abspielen",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klingen",
     "NOTIFICATIONTEMPLATE": "Vorlage",
-    "WAITFORTHEASSIGNEDAGENT": "Auf zugewiesenen Agenten warten",
+    "WAITFORTHEASSIGNEDAGENT": "Warte auf den zugewiesenen Agenten",
     "EDIT_TAG": "Tag bearbeiten",
-    "TAG": "Tag",
-    "AGENTADD_SMSACCOUNT": "Agenten zum SMS-Konto hinzufügen",
-    "AGENTTRANSFER": "Transfer an Agenten erlauben",
+    "TAG": "Etikett",
+    "AGENTADD_SMSACCOUNT": "Fügen Sie einen Agenten zum SMS-Konto hinzu",
+    "AGENTTRANSFER": "Agent Transfer",
     "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung für Agententransfer",
-    "QUEUETRANSFER": "Transfer in Warteschlange erlauben",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFERTIMEOUT": "Warteschlangenübertragungs-Timeout",
     "TRANSFER": "Transfer",
-    "CANNEDANSWERS": "Textvorlagen",
-    "DOWNLOAD_INTERACTION": "Interaktion herunterladen",
-    "SMSCANNEDANSWERS": "SMS-Textvorlagen",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "DOWNLOAD_INTERACTION": "Herunterladen",
+    "SMSCANNEDANSWERS": "Vordefinierte Antworten",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "APIKEY": "API-Schlüssel",
-    "BASEURL": "Base_URL",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "PausenID während Qualifizierung",
+    "BASEURL": "Basis-URL",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
+    "MANDATORYDISPOSITION": "Zwingende Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Anhalten, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
     "ACCESSKEYID": "Zugriffsschlüssel-ID",
     "AMAZONLEX": "AmazonLex",
-    "BOTNAME": "BOT-Name",
-    "DIALOGFLOW": "Google DialogFlow",
-    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
-    "EDIT_DIALOGFLOW": "DialogFlow-Konfiguration bearbeiten",
+    "BOTNAME": "Bot Name",
+    "DIALOGFLOW": "DialogFlow",
+    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
+    "EDIT_DIALOGFLOW": "Bearbeiten Sie die DialogFlow-Konfiguration",
     "LANGUAGE": "Sprache",
-    "LEXREGION": "Lex Region",
-    "SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
+    "LEXREGION": "Region",
+    "SECRETACCESSKEY": "Zugriffsschlüsselgeheimnis",
     "WELCOMEMESSAGE": "Willkommensnachricht",
-    "DOWNLOAD_WITHOUT_ATTACHMENT": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENT": "Herunterladen inkl. Anhänge",
+    "DOWNLOAD_WITHOUT_ATTACHMENT": "Ohne Anhang herunterladen",
+    "DOWNLOAD_WITH_ATTACHMENT": "Download mit Anhang",
     "LASTMESSAGE": "Letzte Nachricht",
-    "CLIENTEMAIL": "Kunden E-Mail",
+    "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privater Schlüssel",
+    "PRIVATEKEY": "Privat Schlüssel",
     "PROJECTID": "Projekt-ID",
     "ACCOUNTID": "Konto-ID",
     "APPLICATIONID": "Anwendungs-ID"
index 6d60e30..bca1c51 100644 (file)
     "PARTIALPAUSE": "Pausa parcial",
     "BUSY": "Ocupado",
     "TIMER": "Tempo",
-    "IDLE": "Ocioso",
+    "IDLE": "Disponível",
     "CAPACITY": "Capacidade",
     "PROXY": "Proxy",
     "ADVANCED": "Avançado",
     "MOTIONPROXY": "Proxy ou Dominio do Motion",
-    "REALTIME": "Tempo Real",
+    "REALTIME": "Tempo real",
     "KEY": "Key",
     "NAME": "Nome",
     "SMSQUEUES": "Filas de SMS",
index 163a056..a46e611 100644 (file)
 {
   "STAFF": {
-    "CONTEXT": "Kontext (Wählplan)",
-    "RINGINUSE": "Nebenstelle klingelt auch wenn Nutzer Besetzt",
+    "CONTEXT": "Kontext",
+    "RINGINUSE": "Ring im Einsatz",
     "USERS": "Benutzer",
     "AGENTS": "Agenten",
-    "TOGGLE_SIDENAV": "Navigationsleiste umschalten",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "TOGGLE_SIDENAV": "Um sidenav",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "BACK": "Zurück",
-    "MULTI_SELECT_TOGGLE": "Mehrfachauswahl ja/nein",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
-    "SELECTED": "Ausgewählt",
+    "MULTI_SELECT_TOGGLE": "Wählen Sie toggle multi",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "SELECTED": "Ausgewählte",
     "DELETE_SELECTED": "Auswahl löschen",
     "EXPORT_SELECTED": "Auswahl exportieren",
     "ALL_USERS": "Alle Benutzer",
     "ALL_AGENTS": "Alle Agenten",
     "SORT": "Sortieren",
     "NAME": "Name",
-    "FULLNAME": "Vollständiger Name",
+    "FULLNAME": "Voller Name",
     "A_TO_Z": "(A bis Z)",
     "Z_TO_A": "(Z bis A)",
     "MORE": "Mehr",
     "DELETE_USER": "Benutzer löschen",
     "EDIT_USER": "Benutzer bearbeiten",
-    "DELETE_AGENT": "Agenten löschen",
-    "EDIT_AGENT": "Agenten bearbeiten",
+    "DELETE_AGENT": "Bedienplatz löschen",
+    "EDIT_AGENT": "Agent bearbeiten",
     "DELETE": "Löschen",
     "SAVE": "Speichern",
     "ADD_USER": "Benutzer hinzufügen",
     "ADD_AGENT": "AGENT HINZUFÜGEN",
-    "NO_RESULTS": "Keine Ergebnisse",
+    "NO_RESULTS": "Keine Ergebnisse.",
     "CLOSE_DIALOG": "Dialog schließen",
-    "NAME_REQUIRED": "Name (erforderlich)",
-    "USERNAME": "Nutzername",
+    "NAME_REQUIRED": "Name (erforderlich).",
+    "USERNAME": "Benutzername",
     "SHOW_ALL_FIELDS": "Alle Felder anzeigen",
     "PHONE_NUMBER": "Telefonnummer",
     "EMAIL": "E-Mail",
     "PASSWORD": "Passwort",
     "ERRORS": {
-      "FULLNAME_REQUIRED": "Vollständiger Name erforderlich",
-      "USERNAME_REQUIRED": "Benutzername erforderlich",
-      "EMAIL_REQUIRED": "E-Mail erforderlich",
-      "PASSWORD_REQUIRED": "Passwort erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "EMAIL_MUST_VALID": "E-Mail Format ungültig",
-      "ACCOUNTNAME_REQUIRED": "Konto erforderlich",
-      "NAME_REQUIRED": "Name erforderlich",
-      "HOST_REQUIRED": "Host erforderlich",
-      "CHATCAPACITY_REQUIRED": "Kapazität Chat erforderlich",
-      "MAILCAPACITY_REQUIRED": "Kapazität E-Msil erforderlich",
-      "FAXCAPACITY_REQUIRED": "Kapazität Fax erforderlich",
-      "SMSCAPACITY_REQUIRED": "Kapazität SMS erforderlich",
-      "OPENCHANNELCAPACITY_REQUIRED": "Kapazität offener Kanal erforderlich",
-      "SIPEXPIRES_REQUIRED": "SIP-Ablaufdatum erforderlich",
-      "SIPPORT_REQUIRED": "SIP-Port erforderlich",
-      "UNCONDITIONALNUMBER_REQUIRED": "Zielrufnummer erforderlich",
-      "NOREPLYNUMBER_REQUIRED": "Nummer bei keiner Antwort erforderlich",
-      "BUSYNUMBER_REQUIRED": "Nummer bei Besetzt erforderlich",
-      "USERNAME_MUST_VALID_PATTERN": "Benutzername ungültig {{regex}}.",
-      "REMOTECONTROLPORT_REQUIRED": "Port für Remote erforderlich",
-      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität Chat muss größer oder gleich sein als",
-      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität E-Mail muss größer oder gleich sein als",
-      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität Fax muss größer oder gleich sein als",
-      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Kapazität offener Kanal muss größer oder gleich sein als",
-      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "AUTOANSWERDELAY_REQUIRED": "Verzögerung bei automatischer Antwort erforderlich",
-      "MONITOREXTENSION_REQUIRED": "Nebenstelle erforderlich",
+      "FULLNAME_REQUIRED": "Der Fullname ist erforderlich",
+      "USERNAME_REQUIRED": "Der Benutzername ist erforderlich",
+      "EMAIL_REQUIRED": "Die E-Mail ist erforderlich",
+      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Kennwörter stimmen nicht überein.",
+      "EMAIL_MUST_VALID": "Die e-Mail muss in einem gültigen Format",
+      "ACCOUNTNAME_REQUIRED": "Der Account ist erforderlich.",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "HOST_REQUIRED": "Der Host wird benötigt",
+      "CHATCAPACITY_REQUIRED": "Die Kapazität ist erforderlich",
+      "MAILCAPACITY_REQUIRED": "Die E-Mail Kapazität erforderlich ist",
+      "FAXCAPACITY_REQUIRED": "Die Kapazität ist erforderlich",
+      "SMSCAPACITY_REQUIRED": "Die SMS-Kapazität erforderlich ist",
+      "OPENCHANNELCAPACITY_REQUIRED": "Der Offene Kanal Kapazität erforderlich ist",
+      "SIPEXPIRES_REQUIRED": "Der SIP-Ablauf ist erforderlich",
+      "SIPPORT_REQUIRED": "Die SIP-Port erforderlich.",
+      "UNCONDITIONALNUMBER_REQUIRED": "Die Zielrufnummer ist erforderlich",
+      "NOREPLYNUMBER_REQUIRED": "Die Nummer ist keine Antwort erforderlich",
+      "BUSYNUMBER_REQUIRED": "Die besetzt ist erforderlich",
+      "USERNAME_MUST_VALID_PATTERN": "Der Benutzername muss gültige {{regex}}.",
+      "REMOTECONTROLPORT_REQUIRED": "Die Fernbedienung Anschluss erforderlich",
+      "CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Chat Kapazität muss größer als oder gleich",
+      "MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die E-Mail Kapazität muss größer als oder gleich",
+      "FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Fax Kapazität muss größer als oder gleich",
+      "OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der offene Kanal Kapazität muss größer als oder gleich",
+      "AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer als oder gleich",
+      "AUTOANSWERDELAY_REQUIRED": "Pflichtfeld",
+      "MONITOREXTENSION_REQUIRED": "Pflichtfeld",
       "ENCRYPTION": "SRTP (Secure Realtime Protocol) Verschlüsselung",
-      "DTLSCERTFILE_REQUIRED": "Zertifikat erforderlich",
-      "DTLSPRIVATEKEY_REQUIRED": "Privater Schlüssel erforderlich",
-      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstaben, 1 Großbuchstaben, 1 Zahl und 1 Sonderzeichen enthalten",
-      "ALLOWCODECS_REQUIRED": "Erlaubte Codecs erforderlich",
-      "CRUDPERMISSIONS_REQUIRED": "Berechtigungen erforderlich",
-      "USERPROFILE_REQUIRED": "Nutzerprofil erforderlich",
-      "PASSWORD_OLDPASSWORD_MATCH": "Neues und altes Passwort dürfen nicht gleich sein",
-      "CONFIRM_REQUIRED": "Bestätigung erforderlich",
-      "WHATSAPPCAPACITY_REQUIRED": "Kapazität WhatsApp erforderlich"
+      "DTLSCERTFILE_REQUIRED": "Pflichtfeld",
+      "DTLSPRIVATEKEY_REQUIRED": "Pflichtfeld",
+      "SECURE_PASSWORD_PATTERN": "Das Passwort muss mindestens 8 Zeichen lang sein und 1 Kleinbuchstabe, 1 Großbuchstabe, 1 Zahl und 1 Sonderzeichen haben ~! @",
+      "ALLOWCODECS_REQUIRED": "Pflichtfeld",
+      "CRUDPERMISSIONS_REQUIRED": "Pflichtfeld",
+      "USERPROFILE_REQUIRED": "Pflichtfeld",
+      "PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden",
+      "CONFIRM_REQUIRED": "Pflichtfeld",
+      "WHATSAPPCAPACITY_REQUIRED": "Pflichtfeld"
     },
-    "ACCOUNT": "Nutzerdaten",
-    "VOICE": "Einstellungen Telefonie",
+    "ACCOUNT": "Konto",
+    "VOICE": "Voice",
     "CREATED_AT": "Erstellt am",
     "ROLE": "Rolle",
-    "PERSONAL_INFO": "Persönliche Informationen",
+    "PERSONAL_INFO": "Persönliche Infos",
     "DESCRIPTION": "Beschreibung",
-    "CHANGE_AVATAR": "Avatar ändern",
+    "CHANGE_AVATAR": "Avatar ändern.",
     "GENERAL": "Allgemein",
-    "INTERNAL": "Interne Durchwahl",
-    "TRANSPORT": "Transport",
-    "ALLOWCODECS": "Erlaubte Codecs",
+    "INTERNAL": "Interne",
+    "TRANSPORT": "Verkehr",
+    "ALLOWCODECS": "Codecs erlaubt",
     "HELP": {
-      "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge der Auflistung",
-      "TRANSPORT": "Festlegen der Standardeinstellungen für das Transportprotokoll. Die Reihenfolge bestimmt den primären Standard.",
-      "HOST": "Definiert die Ermittlung des Clients. Wenn sich die Nebenstelle selbst registrieren soll \"dynamic\" anstelle der Host-IP verwenden ",
-      "NAT": "Ändert das Verhaltes des Asterisk-Telefonieservers für Nebenstellen hinter einer Firewall- Sofern eine der per Komma getrennten Optionen 'no', werden alle anderen Einstellungen ignoriert und der Server setzt ein 'nat=no'",
+      "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz",
+      "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
+      "HOST": "Wie finden Sie die Client-IP oder den Host-Namen. Wenn Sie möchten, dass das Telefon zu registrieren, verwenden Sie das Schlüsselwort Dynamic anstelle von Host-IP.",
+      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall.Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
       "SIPEXPIRES": "Standardeinstellung: 160",
       "SIPPORT": "Standardeinstellung: 5160",
-      "TYPE": "Definiert die Rolle des SIP innerhalb des Telefoniservers. User: eingehende Authentifizierung - Peer: ausgehende Authentifizierung - Friend: beide Varianten",
-      "CHATCAPACITY": "Maximale Anzahl an gleichzeitigen Chat-Interaktionen pro Agent. (0 = unbegrenzt)",
-      "MAILCAPACITY": "Maximale Anzahl an gleichzeitigen E-Mail-Interaktionen pro Agent. (0 = unbegrenzt)",
-      "FAXCAPACITY": "Maximale Anzahl an gleichzeitigen Fax-Interaktionen pro Agent. (0 = unbegrenzt)",
-      "SMSCAPACITY": "Maximale Anzahl an gleichzeitigen SMS-Interaktionen pro Agent. (0 = unbegrenzt)",
-      "OPENCHANNELCAPACITY": "Maximale Anzahl an gleichzeitigen Interaktionen im offenen Kanal pro Agent. (0 = unbegrenzt)",
-      "CALLGROUP": "Rufgruppe",
-      "PICKUPGROUP": "Übernahmegruppe",
+      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: Wird verwendet, um die Authentifizierung für eingehende - Peer: für ausgehende Anrufe - Freund: Deckt sowohl die Eigenschaften der oben genannten.",
+      "CHATCAPACITY": "Null bedeutet unbegrenzt.",
+      "MAILCAPACITY": "Null bedeutet unbegrenzt.",
+      "FAXCAPACITY": "Null bedeutet unbegrenzt.",
+      "SMSCAPACITY": "Null bedeutet unbegrenzt.",
+      "OPENCHANNELCAPACITY": "Null bedeutet unbegrenzt.",
+      "CALLGROUP": "Legt der Agent callgroup",
+      "PICKUPGROUP": "Definiert die Gruppen in denen der Agent Anrufe annehmen können",
       "USERNAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "ENCRYPTION": "SRTP (Secure Realtime Protocol) Verschlüsselung",
       "LAST_PASSWORD_RESET_AT": "Letztes Datum und Uhrzeit, zu der das Passwort geändert wurde. Wenn die Allgemeinen Einstellungen für Secure Suite aktiviert sind, läuft das Passwort nach 90 Tagen ab.",
-      "DTLSCERTFILE": "Verknüpfen Sie das gültige TLS-Zertifikat (.crt-Datei). Standardwert: '/etc/pki/tls/certs/motion.crt'.",
-      "DTLSPRIVATEKEY": "Verknüpfen Sie den privaten Schlüssel des Zertifikats (.key-Datei). Standardwert: '/etc/pki/tls/private/motion.key'.",
+      "DTLSCERTFILE": "Verknüpfen Sie mit dem gültigen TLS-Zertifikat (.crt-Datei). Standardwert: '/etc/pki/tls/certs/motion.crt'.",
+      "DTLSPRIVATEKEY": "Verknüpfen Sie mit dem privaten Schlüssel des Zertifikats (.key-Datei). Standardwert: '/etc/pki/tls/private/motion.key'.",
       "SAVE_PERMISSIONS": "Jeder Abschnitt, der ausstehende Änderungen enthält, wird gespeichert",
-      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Werkzeuge-Modul verwaltet",
+      "CUSTOM_DASHBOARDS_PERMISSIONS": "Berechtigungen für benutzerdefinierte Dashboards werden im Modul Tools verwaltet",
       "APIKEY": "Verwenden Sie die Schaltfläche \"API-Schlüsselmanager\" in der Symbolleiste, um diesen Schlüssel zu verwalten",
-      "ENABLEAUTOMATICSCREENRECORDING": "Funktionalität ist nur für Sprachkanäle verfügbar",
-      "BLOCKED": "Zugriff auf System ermöglichen/sperren",
-      "DISABLED": "Nutzer Aktivieren/Deaktivieren",
-      "WHATSAPPCAPACITY": "Maximale Anzahl an gleichzeitigen WhatsApp-Interaktionen pro Agent. 0 für unbegrenzt",
+      "ENABLEAUTOMATICSCREENRECORDING": "Die Funktionalität ist nur für Sprachkanäle verfügbar",
+      "BLOCKED": "Zugriff sperren / entsperren",
+      "DISABLED": "Zum Deaktivieren auswählen / Zum Reaktivieren deaktivieren",
+      "WHATSAPPCAPACITY": "Maximale Anzahl gleichzeitiger Kanalinteraktionen pro Agent (0 = unbegrenzt)",
       "MASK_SENSITIVE_DATA": "Maskieren Sie vertrauliche Daten in der gesamten Anwendung (z. B. Telefonnummern und E-Mail-Adressen).",
       "WSS_PORT": "Standard: 8089",
       "AD_SSO_ENABLED": "Melden Sie sich mit Ihren Active Directory-Anmeldeinformationen an"
     },
-    "NEW_PASSWORD": "Neues Passwort",
+    "NEW_PASSWORD": "Neues Kennwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "CHANGE_PASSWORD": "Passwort ändern",
-    "CHANGEPASSWORD_AGENT": "Passwort für Agenten ändern",
-    "CHANGEPASSWORD_USER": "Passwort für Nutzer ändern",
-    "CHANGEPASSWORD_TELEPHONE": "Passwort für Endgerät ändern",
-    "LOGININPAUSE": "Pause nach Anmelden",
+    "CHANGEPASSWORD_AGENT": "Passwort ändern",
+    "CHANGEPASSWORD_USER": "Passwort ändern",
+    "CHANGEPASSWORD_TELEPHONE": "Passwort ändern",
+    "LOGININPAUSE": "Geben Sie Ihren Benutzernamen und Ihr Passwort In der Pause",
     "HOST": "Host",
     "NAT": "NAT",
-    "CHANSPY": "Mithören zulassen",
-    "OTHER_CHANNELS": "Parallele Kanäle",
-    "CHATCAPACITY": "Kapazität Chat",
-    "MAILCAPACITY": "Kapazität E-Mail",
-    "FAXCAPACITY": "Kapazität Fax",
-    "SMSCAPACITY": "Kapazität SMS",
-    "OPENCHANNELCAPACITY": "Kapazität offener Kanal",
+    "CHANSPY": "ChanSpy",
+    "OTHER_CHANNELS": "Andere Kanäle",
+    "CHATCAPACITY": "Chat Kapazität",
+    "MAILCAPACITY": "E-Kapazität",
+    "FAXCAPACITY": "Fax Kapazität",
+    "SMSCAPACITY": "Sms-Kapazität",
+    "OPENCHANNELCAPACITY": "Offener Kanal Kapazität",
     "MOTIONBAR": "Motion Bar",
     "SETTINGS": "Einstellungen",
-    "AUTOANSWER": "Anruf automatisch annehmen",
-    "ENABLESETTINGS": "Darf Einstellungen sehen",
+    "AUTOANSWER": "\"Autom. Antwort\"",
+    "ENABLESETTINGS": "Einstellungen aktivieren",
     "CALL_FORWARDING": "Anrufweiterleitung",
-    "UNCONDITIONAL": "Generelle Anrufweiterleitung",
-    "UNCONDITIONALNUMBER": "Nummer für generelle Weiterleitung",
-    "NOREPLY": "Bei keiner Antwort",
-    "NOREPLYNUMBER": "Nummer Weiterleitung keine Antwort",
-    "BUSY": "Bei Besetzt",
-    "BUSYNUMBER": "Nummer Weiterleitung Besetzt",
-    "REMOTE_CONTROL": "Externe Steuerung (z.B. für Click2Dial)",
-    "REMOTECONTROL": "Externe Steuerung erlauben",
-    "REMOTECONTROLPORT": "Port für externe Steuerung (Standard: 9888)",
+    "UNCONDITIONAL": "Unbedingte",
+    "UNCONDITIONALNUMBER": "Uneingeschränkte Anzahl",
+    "NOREPLY": "Keine Antwort",
+    "NOREPLYNUMBER": "\"Keine Antwort\"-Nummer",
+    "BUSY": "Besetzt",
+    "BUSYNUMBER": "Nummer besetzt",
+    "REMOTE_CONTROL": "Fernbedienung",
+    "REMOTECONTROL": "Fernbedienung",
+    "REMOTECONTROLPORT": "Fernbedienung",
     "SIP": "SIP",
-    "SIPEXPIRES": "SIP-Aktualisierungsintervall",
+    "SIPEXPIRES": "SIP läuft [sec]",
     "SIPPORT": "SIP-Port",
-    "PENALTY": "Verzögerung",
-    "ACCOUNTNAME": "Kontoname",
-    "ADD_TELEPHONE": "Endgerät hinzufügen",
-    "EDIT_TELEPHONE": "Endgerät bearbeiten",
-    "DELETE_TELEPHONE": "Endgerät löschen",
+    "PENALTY": "Strafe",
+    "ACCOUNTNAME": "Account Name",
+    "ADD_TELEPHONE": "Telefon hinzufügen",
+    "EDIT_TELEPHONE": "Telefon bearbeiten",
+    "DELETE_TELEPHONE": "Telefon löschen",
     "TEAMS": "Teams",
     "DELETE_TEAM": "Team löschen",
-    "AGENTADD_TEAM": "Agenten zu einem Team hinzufügen",
-    "EDIT_TEAM": "Team bearbeiten",
+    "AGENTADD_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
+    "EDIT_TEAM": "Team bearbeiten.",
     "TYPE": "Typ",
-    "TELEPHONES": "Endgeräte",
-    "CALLERID": "Standard angezeigte Nummer (Caller-ID)",
-    "ENABLERECORDING": "Darf Aufzeichnung starten/stoppen",
+    "TELEPHONES": "Telefone",
+    "CALLERID": "Die Anrufer-ID",
+    "ENABLERECORDING": "Aktivieren der Aufzeichnung",
     "STAFF": "Personal",
-    "ID": "ID",
+    "ID": "Id",
     "NEW_USER": "Neuer Benutzer",
     "NEW_AGENT": "Neuer Agent",
     "NEW_TELEPHONE": "Neues Telefon",
     "NEW_TEAM": "Neues Team",
     "ADD_TEAM": "Team hinzufügen",
-    "JOIN_QUEUE": "In Warteschlange beitreten",
-    "CAPACITY": "Gleichzeitige Bearbeitung der Kommunikationskanäle",
+    "JOIN_QUEUE": "Melden Sie Warteschlange",
+    "CAPACITY": "Kapazität",
     "AUTOINTERNAL": "Interne Nummer automatisch generieren",
-    "ADD_AGENT_TO_TEAM": "Agenten zum Team hinzufügen",
-    "TEAMADD_AGENT": "Zum Team hinzufügen",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "ADD_AGENT_TO_TEAM": "Hinzufügen von Agenten zu einer Gruppe",
+    "TEAMADD_AGENT": "Agent zu Gruppe hinzufügen",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
     "PERMISSIONS": "Berechtigungen",
-    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
+    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
     "ALL_MODULES_AVAILABLE": "Alle Module verfügbar",
-    "CALLGROUP": "Anrufgruppe",
-    "PICKUPGROUP": "Pick-Up Gruppe",
+    "CALLGROUP": "Gruppenruf",
+    "PICKUPGROUP": "Übernahmegruppe",
     "ADD_AGENT_TO_QUEUE_CAMPAIGNS": "Agenten hinzufügen - ausgehende Anrufe",
     "ADD_AGENT_TO_VOICE_QUEUES": "Agenten hinzufügen - eingehende Anrufe",
     "ADD_AGENT_TO_CHAT_QUEUES": "Agenten hinzufügen - Chat-Warteschlangen",
     "ADD_AGENT_TO_SMS_QUEUES": "Agenten hinzufügen - SMS-Warteschlangen",
     "ADD_AGENT_TO_OPENCHANNEL_QUEUES": "Agenten hinzufügen - offener Kanal-Warteschlangen",
     "ADD_AGENT_TO_FAX_QUEUES": "Agenten hinzufügen - Fax-Warteschlangen",
-    "QUEUEADD_USER_VOICE_INBOUND": "Nutzer hinzufügen - eingehende Anrufe",
-    "QUEUEADD_USER_CHAT_INBOUND": "Nutzer hinzufügen - eingehende Chats",
-    "QUEUEADD_USER_MAIL_INBOUND": "Nutzer hinzufügen - eingehende E-Mails",
-    "QUEUEADD_USER_SMS_INBOUND": "Nutzer hinzufügen - eingehende SMS",
-    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Nutzer hinzufügen - eingehender offener Kanal",
-    "QUEUEADD_USER_FAX_INBOUND": "Nutzer hinzufügen - eingehende Faxe",
-    "ALL_TEAMS": "Alle Teams",
+    "QUEUEADD_USER_VOICE_INBOUND": "Benutzer stimme Warteschlangen hinzufügen",
+    "QUEUEADD_USER_CHAT_INBOUND": "Benutzer zu chatten Warteschlangen hinzufügen",
+    "QUEUEADD_USER_MAIL_INBOUND": "Benutzer Mail Warteschlangen hinzufügen",
+    "QUEUEADD_USER_SMS_INBOUND": "Benutzer von SMS-Warteschlangen hinzufügen",
+    "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Benutzer zum offenen Kanal Warteschlangen hinzufügen",
+    "QUEUEADD_USER_FAX_INBOUND": "Benutzer fax Warteschlangen hinzufügen",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "ALL_QUEUE_CAMPAIGNS": "Alle Warteschlangen - ausgehende Anrufe",
     "ALL_FAX_QUEUES": "Alle Warteschlangen - Fax",
     "SELECTED_FAX_QUEUES": "Ausgewählte Warteschlangen - Fax",
     "VOICEMAIL": "Voicemail",
-    "SHOWWEBCONTROL": "Verbindungstyp",
+    "SHOWWEBCONTROL": "Anzeigen Web Control",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
+    "OF": "Von",
     "CALLFORWARDING": "Anrufweiterleitung",
-    "DND": "Darf \"Nicht Stören\" Status setzen",
-    "UNANSWEREDCALLBADGE": "Unbeantwortete Anrufe im Icon anzeigen",
-    "ENABLEDTMFTONE": "Darf DTMF-Töne senden",
-    "AUTOANSWERDELAY": "Automatische Antwort nach",
+    "DND": "Während der Pause nicht stören",
+    "UNANSWEREDCALLBADGE": "Zeige unbeantwortete Anruf Abzeichen",
+    "ENABLEDTMFTONE": "Dtmf-Töne aktivieren",
+    "AUTOANSWERDELAY": "Auto Antwortverzögerung",
     "ENCRYPTION": "Verschlüsselung",
     "CHANNELS": "Kanäle",
     "CHAT": "Chat",
-    "SMS": "SMS",
+    "SMS": "Sms",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
-    "QUEUEADD_USER_VOICE_OUTBOUND": "Nutzer zu ausgehender Warteschlange hinzufügen",
-    "MONITOREXTENSION": "Nebenstelle des Nutzers aufzeichnen",
+    "QUEUEADD_USER_VOICE_OUTBOUND": "Benutzer in Warteschlange Kampagnen hinzufügen",
+    "MONITOREXTENSION": "Anrufe an die Nebenstelle des Benutzers aufzeichnen",
     "NO_PASSWORD_CHANGE": "Keine Passwortänderung",
     "SECURITY_SUITE": "Sicherheitssuite",
-    "LAST_PASSWORD_RESET_AT": "Passwort zuletzt zurückgesetzt am:",
-    "SIP_WEBRTC": "SIP/WebRTC",
-    "SETTINGS_WEBRTC": "Einstellungen",
+    "LAST_PASSWORD_RESET_AT": "Letzte Passwort zurücksetzen um",
+    "SIP_WEBRTC": "Schluck",
+    "SETTINGS_WEBRTC": "die Einstellungen",
     "WEBRTC": "WebRTC",
     "DTLSCERTFILE": "TLS-Zertifikat",
-    "DTLSPRIVATEKEY": "Privater Schlüssel des TLS-Zertifikats",
-    "EDITPERMISSIONS": "Berechtigungen verwalten",
-    "READANDEDIT": "Lesen und Bearbeiten",
-    "READANDEDITANDDELETE": "Lesen, Bearbeiten und Löschen",
-    "GENERAL_PERMISSIONS": "Allgemein",
-    "ENABLEMESSENGER": "Internen Messenger aktivieren",
-    "OUTBOUNDPROXY": "Outbound-Proxy",
+    "DTLSPRIVATEKEY": "Der private Schlüssel des TLS-Zertifikats",
+    "EDITPERMISSIONS": "Bearbeiten von Berechtigungen",
+    "READANDEDIT": "Lesen, Bearbeiten",
+    "READANDEDITANDDELETE": "Lesen, Bearbeiten, Löschen",
+    "GENERAL_PERMISSIONS": "Allgemeines",
+    "ENABLEMESSENGER": "Aktivieren Sie den internen Messenger",
+    "OUTBOUNDPROXY": "Oubound-Proxy",
     "PHONE": "Telefon",
     "MOBILE": "Handy, Mobiltelefon",
     "ALIAS": "Alias",
     "ENABLEJAWSINTEGRATION": "Jaws-Integration aktivieren",
     "PREFIXREQUIRED": "Präfix erforderlich",
-    "ENABLEVIDEORECORDING": "Videoaufzeichnung aktivieren",
+    "ENABLEVIDEORECORDING": "Aktiviere Videoaufnahme",
     "OLD_PASSWORD": "Altes Passwort",
     "ALL_CHATQUEUES": "Alle Chat-Warteschlangen",
-    "ALL_CHATWEBSITES": "Alle Chat-Webseiten",
-    "ALL_FAXACCOUNTS": "Alle Fax-Konten",
-    "ALL_FAXQUEUES": "Alle Fax-Warteschlangen",
+    "ALL_CHATWEBSITES": "Alle Chat-Websites",
+    "ALL_FAXACCOUNTS": "Alle Faxkonten",
+    "ALL_FAXQUEUES": "Alle Faxwarteschlangen",
     "ALL_MAILACCOUNTS": "Alle E-Mail-Konten",
     "ALL_MAILQUEUES": "Alle E-Mail-Warteschlangen",
-    "ALL_OPENCHANNELACCOUNTS": "Alle offener Kanal-Konten",
-    "ALL_OPENCHANNELQUEUES": "Alle offener Kanal-Warteschlangen",
+    "ALL_OPENCHANNELACCOUNTS": "Alle offenen Channel-Konten",
+    "ALL_OPENCHANNELQUEUES": "Alle offenen Kanalwarteschlangen",
     "ALL_PROJECTS": "Alle Cally Square-Projekte",
     "ALL_QUEUECAMPAIGNS": "Alle Queue-Kampagnen",
     "ALL_SMSACCOUNTS": "Alle SMS-Konten",
     "MANAGE_PERMISSIONS": "Berechtigungen verwalten",
     "SELECTED_CHATQUEUES": "Ausgewählte E-Mail-Warteschlangen",
     "SELECTED_CHATWEBSITES": "Ausgewählte Chat-Websites",
-    "SELECTED_FAXACCOUNTS": "Ausgewählte Fax-Konten",
-    "SELECTED_FAXQUEUES": "Ausgewählte Fax-Warteschlangen",
+    "SELECTED_FAXACCOUNTS": "Ausgewählte Faxkonten",
+    "SELECTED_FAXQUEUES": "Ausgewählte Faxwarteschlangen",
     "SELECTED_MAILACCOUNTS": "Ausgewählte E-Mail-Konten",
     "SELECTED_MAILQUEUES": "Ausgewählte Chat-Warteschlangen",
-    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offener Kanal-Konten",
-    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanal-Warteschlangen",
+    "SELECTED_OPENCHANNELACCOUNTS": "Ausgewählte offene Channel-Konten",
+    "SELECTED_OPENCHANNELQUEUES": "Ausgewählte offene Kanalwarteschlangen",
     "SELECTED_PROJECTS": "Ausgewählte Projekte von Cally Square",
     "SELECTED_QUEUECAMPAIGNS": "Ausgewählte Queue-Kampagnen",
     "SELECTED_SMSACCOUNTS": "Ausgewählte SMS-Konten",
     "SELECTED_SMSQUEUES": "Ausgewählte SMS-Warteschlangen",
-    "SELECTED_VOICEQUEUES": "Ausgewählte Anruf-Warteschlangen",
+    "SELECTED_VOICEQUEUES": "Ausgewählte Sprachwarteschlangen",
     "USERADD_CHATQUEUES": "Chat-Warteschlange zum Benutzer hinzufügen",
     "USERADD_CHATWEBSITES": "Chat-Website zum Benutzer hinzufügen",
     "USERADD_FAXACCOUNTS": "Faxkonto zum Benutzer hinzufügen",
-    "USERADD_FAXQUEUES": "Fax-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_FAXQUEUES": "Faxwarteschlange zum Benutzer hinzufügen",
     "USERADD_MAILACCOUNTS": "E-Mail-Konto zum Benutzer hinzufügen",
     "USERADD_MAILQUEUES": "E-Mail-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELACCOUNTS": "Offener Kanal-Konto zum Benutzer hinzufügen",
-    "USERADD_OPENCHANNELQUEUES": "Offener Kanal-Warteschlange zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELACCOUNTS": "Open Channel-Konto zum Benutzer hinzufügen",
+    "USERADD_OPENCHANNELQUEUES": "Open Channel-Warteschlange zum Benutzer hinzufügen",
     "USERADD_PROJECTS": "Cally Square-Projekt zum Benutzer hinzufügen",
     "USERADD_QUEUECAMPAIGNS": "Queue-Kampagne zum Benutzer hinzufügen",
     "USERADD_SMSACCOUNTS": "SMS-Konto zum Benutzer hinzufügen",
     "USERADD_SMSQUEUES": "SMS-Warteschlange zum Benutzer hinzufügen",
-    "USERADD_VOICEQUEUES": "Anruf-Warteschlange zum Benutzer hinzufügen",
-    "HOTDESK": "Wechselnder Arbeitsplatz",
+    "USERADD_VOICEQUEUES": "Sprachwarteschlange zum Benutzer hinzufügen",
+    "HOTDESK": "Heißer Schreibtisch",
     "ADD_USERPROFILE": "Benutzerprofil hinzufügen",
-    "CANCEL": "Abbrechen",
+    "CANCEL": "Stornieren",
     "CLONE_USERPROFILE": "Benutzerprofil klonen",
     "CLOSE": "Schließen",
     "CONFIRM": "Bestätigen",
     "PERMISSIONS_ALL_RESOURCES": "Alle Ressourcen",
     "PERMISSIONS_AUTO_ASSOCIATION_INFO": "Ordnen Sie dem Benutzerprofil automatisch alle aktuellen und zukünftigen Ressourcen dieses Abschnitts zu",
     "PERMISSIONS_MANAGE": "Verwalten",
-    "PERMISSIONS_PLACEHOLDER_SEARCH": "Suche",
+    "PERMISSIONS_PLACEHOLDER_SEARCH": "Suche...",
     "PERMISSIONS_SECTION_HIDE": "Abschnitt für den Benutzer ausblenden",
     "PERMISSIONS_SECTION_SHOW": "Abschnitt dem Benutzer anzeigen",
     "PERMISSIONS_SECTION_TITLE": "{{sectionName}} Berechtigungen",
     "PERMISSIONS_SELECTED_RESOURCES": "Ausgewählte Ressourcen",
-    "PERMISSIONS_SELECT_REPORT_TYPE": "Berichtstyp wählen",
-    "PERMISSIONS_SELECT_SECTION": "Abschnitt auswählen",
-    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Kein Zugriff auf den ausgewählten Bereich",
+    "PERMISSIONS_SELECT_REPORT_TYPE": "Wählen Sie den Berichtstyp",
+    "PERMISSIONS_SELECT_SECTION": "Wählen Sie einen Abschnitt aus",
+    "PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Sie dürfen nicht auf den ausgewählten Bereich zugreifen",
     "PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Unbefugte Handlung",
-    "PERMISSIONS_WARNING_CLOSE": "Es wurden Änderungen nicht gespeichert. Fortfahren?",
+    "PERMISSIONS_WARNING_CLOSE": "Du hast nicht gespeicherte Änderungen. Möchten Sie den Vorgang wirklich ohne Speichern beenden?",
     "PERMISSIONS_WARNING_ENABLE_ALL": "Alle {{sectionName}} Unterabschnitte und ihre Ressourcen werden aktiviert. Sind Sie sicher, dass Sie fortfahren möchten?",
-    "QUEUES_ASSOCIATION": "{{channel}} Warteschlangen-Zuweisung",
+    "QUEUES_ASSOCIATION": "{{channel}} Queues Association",
     "READ_PERMISSION": "Lesen",
     "REPORT_TYPE": "Berichtstyp",
     "SECTIONS": "Abschnitte",
     "SUMMARY": "Zusammenfassung",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
     "USERPROFILE": "Benutzerprofil",
-    "USERPROFILES": "Benutzerprofile",
-    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Keine Berechtigung zum Erstellen der Ressource",
-    "VIDEOSUPPORT": "Videounterstützung aktivieren",
+    "USERPROFILES": "Benutzerprofil",
+    "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Sie dürfen die Ressource nicht erstellen",
+    "VIDEOSUPPORT": "Video-Unterstützung",
     "APIKEY": "API-Schlüssel",
-    "APIKEYMANAGER_USER": "API-Schlüsselverwaltung",
-    "GENERATE": "Erneut generieren",
+    "APIKEYMANAGER_USER": "API Key Manager",
+    "GENERATE": "(Regenerieren",
     "MANAGE_API_KEY": "API-Schlüsselmanager",
-    "REMOVE": "Entfernen",
-    "ENABLEAUTOMATICSCREENRECORDING": "Automatische Bildschirmaufzeichnung aktivieren",
-    "ENABLESCREENRECORDINGBYAGENT": "Bildschirmaufzeichnung durch Agenten aktivieren",
-    "ENABLEVIDEOECORDING": "Videoaufzeichnung aktivieren",
+    "REMOVE": "Löschen",
+    "ENABLEAUTOMATICSCREENRECORDING": "Aktivieren Sie die automatische Bildschirmaufnahme",
+    "ENABLESCREENRECORDINGBYAGENT": "Aktivieren Sie die Bildschirmaufzeichnung nach Agent",
+    "ENABLEVIDEOECORDING": "Videoaufnahme aktivieren",
     "BLOCKED": "Gesperrt",
     "DISABLED": "Deaktiviert",
-    "REGENERATE": "Erneut generieren",
+    "REGENERATE": "Regenerieren",
     "ALL_WHATSAPP_QUEUES": "Alle WhatsApp-Warteschlangen",
     "ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-Konten",
     "ALL_WHATSAPPQUEUES": "Alle Whataspp-Warteschlangen",
     "SELECTED_WHATSAPPACCOUNTS": "Ausgewählte WhatsApp-Konten",
     "SELECTED_WHATSAPPQUEUES": "Ausgewählte WhatsApp-Warteschlangen",
     "USERADD_WHATSAPPACCOUNTS": "WhatsApp-Konto zum Benutzer hinzufügen",
-    "USERADD_WHATSAPPQUEUES": "Whataspp-Warteschlange dem Benutzer hinzufügen",
+    "USERADD_WHATSAPPQUEUES": "Fügen Sie dem Benutzer die Whataspp-Warteschlange hinzu",
     "WHATSAPP": "WhatsApp Connector",
-    "WHATSAPPCAPACITY": "Kapazität Whatsapp",
-    "MASK_SENSITIVE_DATA": "Pers. Kundendaten verbergen",
+    "WHATSAPPCAPACITY": "WhatsApp Connector-Kapazität",
+    "MASK_SENSITIVE_DATA": "Sensitive Daten maskieren",
     "WSS_PORT": "WSS-Port",
-    "ATTACHMENTS": "Darf Anhänge herunterladen",
-    "CALLYSQUARE_RECORDINGS": "Darf Aufzeichnungen aus dem CallFlow herunterladen",
-    "CONTACT_MANAGER_LISTS": "Darf Listen aus dem Kontaktmanager herunterladen",
+    "ATTACHMENTS": "Anhänge",
+    "CALLYSQUARE_RECORDINGS": "Cally Square-Aufnahmen",
+    "CONTACT_MANAGER_LISTS": "Kontaktmanagerlisten",
     "DOWNLOADS": "Downloads",
     "DOWNLOAD_PERMISSIONS": "Download-Berechtigungen",
-    "JSCRIPTY_SESSIONS": "Darf Jscripty-Sitzungen herunterladen",
-    "OMNICHANNEL_INTERACTIONS": "Darf alle Kanalübergreifenden Interaktionen herunterladen",
-    "SCREEN_RECORDINGS": "Darf Bildschirmaufzeichnungen herunterladen",
-    "VOICE_RECORDINGS": "Darf Sprachaufzeichnungen herunterladen",
+    "JSCRIPTY_SESSIONS": "Jscripty-Sitzungen",
+    "OMNICHANNEL_INTERACTIONS": "Omnichannel-Interaktionen",
+    "SCREEN_RECORDINGS": "Bildschirmaufnahmen",
+    "VOICE_RECORDINGS": "Sprachaufnahmen",
     "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Darf Outbound-Preview auch während Pause durchführen",
     "SELECT_RECALLME_CAMPAIGN": "Darf Auswahl für Outbound-Kampagne treffen",
-    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agenten hinzufügen - ausgehende Anrufe",
-    "QUEUEADD_AGENT_VOICE_INBOUND": "Agenten hinzufügen - eingehende Anrufe",
-    "QUEUEADD_AGENT_CHAT_INBOUND": "Agenten hinzufügen - Chat-Warteschlangen",
-    "QUEUEADD_AGENT_MAIL_INBOUND": "Agenten hinzufügen - E-Mail-Warteschlangen",
-    "QUEUEADD_AGENT_SMS_INBOUND": "Agenten hinzufügen - SMS-Warteschlangen",
-    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agenten hinzufügen - offener Kanal-Warteschlangen",
-    "QUEUEADD_AGENT_FAX_INBOUND": "Agenten hinzufügen - Fax-Warteschlangen",
-    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Warteschlangen - ausgehende Anrufe",
-    "SELECTED_QUEUES_VOICE_OUTBOUND": "Gewählte Warteschlangen - ausgehende Anrufe",
-    "ALL_QUEUES_VOICE_INBOUND": "Alle Warteschlangen - eingehende Anrufe",
-    "SELECTED_QUEUES_VOICE_INBOUND": "Ausgewählte Warteschlangen - eingehende Anrufe",
-    "ALL_QUEUES_CHAT_INBOUND": "Alle Warteschlangen - Chat",
-    "SELECTED_QUEUES_CHAT_INBOUND": "Ausgewählte Warteschlangen - Chat",
-    "ALL_QUEUES_MAIL_INBOUND": "Alle Warteschlangen - E-Mail",
-    "SELECTED_QUEUES_MAIL_INBOUND": "Ausgewählte Warteschlangen - E-Mail",
-    "ALL_QUEUES_SMS_INBOUND": "Alle Warteschlangen - SMS",
-    "SELECTED_QUEUES_SMS_INBOUND": "Ausgewählte Warteschlangen - SMS",
-    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle Warteschlangen - offener Kanal",
-    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Ausgewählte Warteschlangen - offener Kanal",
-    "ALL_QUEUES_FAX_INBOUND": "Alle Warteschlangen - Fax",
-    "SELECTED_QUEUES_FAX_INBOUND": "Ausgewählte Warteschlangen - Fax",
+    "QUEUEADD_AGENT_VOICE_OUTBOUND": "Agent in der Warteschlange Kampagnen hinzufügen",
+    "QUEUEADD_AGENT_VOICE_INBOUND": "Agent Voice Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_CHAT_INBOUND": "Agent zu chatten Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_MAIL_INBOUND": "Agent Mail Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_SMS_INBOUND": "Agent sms-Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Agent zu offenen Kanal Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_FAX_INBOUND": "Agent fax Warteschlangen hinzufügen",
+    "ALL_QUEUES_VOICE_OUTBOUND": "Alle Queue Kampagnen",
+    "SELECTED_QUEUES_VOICE_OUTBOUND": "Ausgewählte Warteschlange Kampagnen",
+    "ALL_QUEUES_VOICE_INBOUND": "Alle Warteschlangen",
+    "SELECTED_QUEUES_VOICE_INBOUND": "Ausgewählte Voice Warteschlangen",
+    "ALL_QUEUES_CHAT_INBOUND": "Alle Chat Warteschlangen",
+    "SELECTED_QUEUES_CHAT_INBOUND": "Ausgewählte Chat-warteschlangen",
+    "ALL_QUEUES_MAIL_INBOUND": "Alle E-Mail-Warteschlangen",
+    "SELECTED_QUEUES_MAIL_INBOUND": "Ausgewählte Mail Warteschlangen",
+    "ALL_QUEUES_SMS_INBOUND": "Alle SMS-Warteschlangen",
+    "SELECTED_QUEUES_SMS_INBOUND": "Ausgewählte SMS-Warteschlangen",
+    "ALL_QUEUES_OPENCHANNEL_INBOUND": "Alle offenen Kanal Warteschlangen",
+    "SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Ausgewählten Offenen Kanal Warteschlangen",
+    "ALL_QUEUES_FAX_INBOUND": "Alle Fax Warteschlangen",
+    "SELECTED_QUEUES_FAX_INBOUND": "Ausgewählte Fax Warteschlangen",
     "ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-Warteschlangen",
-    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agenten zu WhatsApp-Warteschlangen hinzufügen",
+    "QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agent zu WhatsApp-Warteschlangen hinzufügen",
     "SELECTED_QUEUES_WHATSAPP_INBOUND": "Ausgewählte WhatsApp-Warteschlangen",
     "AD_SSO_ENABLED": "Active Directory-SSO",
     "AUTHENTICATION": "Authentifizierung",
index 171233d..16c4dd6 100644 (file)
@@ -27,8 +27,8 @@
     "OPENCHANNEL_AUTOANSWERDELAY": "Openchannel auto answer delay [s]",
     "FAX_AUTOANSWER": "Fax auto answer",
     "FAX_AUTOANSWERDELAY": "Fax auto answer delay [s]",
-    "WHATSAPP_AUTOANSWER": "Whatsapp auto answer",
-    "WHATSAPP_AUTOANSWERDELAY": "Whatsapp auto answer delay [s]",
+    "WHATSAPP_AUTOANSWER": "Whatsapp connector auto answer",
+    "WHATSAPP_AUTOANSWERDELAY": "Whatsapp connector auto answer delay [s]",
     "LAST_PASSWORD_RESET_AT": "Last Password Reset At",
     "SIP_WEBRTC": "Sip",
     "SETTINGS_WEBRTC": "Settings",
index 31c8d9c..7bfe301 100644 (file)
@@ -2,11 +2,11 @@
   "STAFF": {
     "HOTDESK": "Hot desk",
     "ENABLEVIDEORECORDING": "Ativar gravação de vídeo",
-    "OLD_PASSWORD": "Senha Antiga",
-    "ENABLEJAWSINTEGRATION": "Ativar Integração de Jaws",
+    "OLD_PASSWORD": "Senha antiga",
+    "ENABLEJAWSINTEGRATION": "Ativar integração de Jaws",
     "ALIAS": "Alias",
     "NO_PASSWORD_CHANGE": "Nenhuma mudança de senha",
-    "SECURITY_SUITE": "Suíte de Segurança",
+    "SECURITY_SUITE": "Suíte de segurança",
     "LAST_PASSWORD_RESET_AT": "Última redefinição de senha em",
     "SIP_WEBRTC": "Sip",
     "SETTINGS_WEBRTC": "Definições",
@@ -20,7 +20,7 @@
     "TOGGLE_SIDENAV": "Toggle sidenav",
     "SEARCH_FOR_ANYONE": "Procurar",
     "BACK": "Voltar",
-    "MULTI_SELECT_TOGGLE": "multi select toggle",
+    "MULTI_SELECT_TOGGLE": "Multi select toggle",
     "SELECT_ALL": "Selecionar tudo",
     "SELECT_NONE": "Selecione nenhum",
     "SELECTED": "Selecionado",
     "EXPORT_SELECTED": "Exportar selecionado",
     "ALL_USERS": "Todos os usuários",
     "ALL_AGENTS": "Todos os agentes",
-    "SORT": "ordenar",
+    "SORT": "Ordenar",
     "NAME": "Nome",
-    "FULLNAME": "Nome Completo",
+    "FULLNAME": "Nome completo",
     "A_TO_Z": "(A a Z)",
     "Z_TO_A": "(Z a A)",
     "MORE": "Mais",
-    "DELETE_USER": "Excluir Usuário",
-    "EDIT_USER": "Editar Usuário",
-    "DELETE_AGENT": "Excluir Agente",
-    "EDIT_AGENT": "Editar Agente",
+    "DELETE_USER": "Excluir usuário",
+    "EDIT_USER": "Editar usuário",
+    "DELETE_AGENT": "Excluir agente",
+    "EDIT_AGENT": "Editar agente",
     "DELETE": "Excluir",
     "SAVE": "Salvar",
-    "ADD_USER": "Adicionar Usuário",
-    "ADD_AGENT": "Adicionar Agente",
+    "ADD_USER": "Adicionar usuário",
+    "ADD_AGENT": "Adicionar agente",
     "NO_RESULTS": "Nenhum resultado ..",
     "CLOSE_DIALOG": "Fechar a caixa de diálogo",
     "NAME_REQUIRED": "Nome (obrigatório)",
     "CHATCAPACITY": "Capacidade do Chat",
     "MAILCAPACITY": "Capacidade de Email",
     "FAXCAPACITY": "Capacidade do Fax",
-    "SMSCAPACITY": "Capacidade do Sms",
-    "OPENCHANNELCAPACITY": "Capacidade do Open Channel",
+    "SMSCAPACITY": "Capacidade do SMS",
+    "OPENCHANNELCAPACITY": "Capacidade do OpenChannel",
     "MOTIONBAR": "Motion Bar",
     "SETTINGS": "Definições",
     "AUTOANSWER": "Resposta automática",
-    "ENABLESETTINGS": "Habilitar Definições",
-    "CALL_FORWARDING": "Encaminhamento de Chamadas",
+    "ENABLESETTINGS": "Habilitar configurações",
+    "CALL_FORWARDING": "Encaminhamento de chamadas",
     "UNCONDITIONAL": "Incondicional",
-    "UNCONDITIONALNUMBER": "Número Incondicional",
+    "UNCONDITIONALNUMBER": "Número incondicional",
     "NOREPLY": "Sem resposta",
     "NOREPLYNUMBER": "Nenhum número de resposta",
     "BUSY": "Ocupado",
-    "BUSYNUMBER": "Número Ocupado",
+    "BUSYNUMBER": "Número ocupado",
     "REMOTE_CONTROL": "Controle remoto",
     "REMOTECONTROL": "Controle remoto",
-    "REMOTECONTROLPORT": "Porta de Controle remoto",
+    "REMOTECONTROLPORT": "Porta de controle remoto",
     "SIP": "SIP",
     "SIPEXPIRES": "SIP Expira [seg]",
     "SIPPORT": "Porta SIP",
     "PENALTY": "Prioridade",
     "ACCOUNTNAME": "Nome da conta",
-    "ADD_TELEPHONE": "Adicionar Ramal",
-    "EDIT_TELEPHONE": "Editar Ramal",
-    "DELETE_TELEPHONE": "Excluir Ramal",
-    "TEAMS": "Grupos",
-    "DELETE_TEAM": "Excluir Grupo",
-    "AGENTADD_TEAM": "Adicionar agentes no grupo",
-    "EDIT_TEAM": "Editar Grupo",
+    "ADD_TELEPHONE": "Adicionar Ramal Adm",
+    "EDIT_TELEPHONE": "Editar Ramal Adm",
+    "DELETE_TELEPHONE": "Excluir Ramal Adm",
+    "TEAMS": "Equipes",
+    "DELETE_TEAM": "Excluir Equipe",
+    "AGENTADD_TEAM": "Adicionar agentes na equipe",
+    "EDIT_TEAM": "Editar Equipe",
     "TYPE": "Tipo",
-    "TELEPHONES": "Ramais",
+    "TELEPHONES": "Ramais Adm",
     "CALLERID": "Identificador de chamadas",
     "ENABLERECORDING": "Ativar gravação",
-    "STAFF": "Equipe",
+    "STAFF": "Colaboradores",
     "ID": "Id",
-    "NEW_USER": "Novo Usuário",
-    "NEW_AGENT": "Novo Agente",
-    "NEW_TELEPHONE": "Novo Ramal",
-    "NEW_TEAM": "Novo Grupo",
-    "ADD_TEAM": "Adicionar Grupo",
+    "NEW_USER": "Novo usuário",
+    "NEW_AGENT": "Novo agente",
+    "NEW_TELEPHONE": "Novo ramal adm",
+    "NEW_TEAM": "Nova equipe",
+    "ADD_TEAM": "Adicionar equipe",
     "JOIN_QUEUE": "Junte-se à fila",
     "CAPACITY": "Capacidade",
     "AUTOINTERNAL": "Auto gerar número interno",
-    "ADD_AGENT_TO_TEAM": "Adicionar agente no grupo",
-    "TEAMADD_AGENT": "Adicionar agente no grupo",
+    "ADD_AGENT_TO_TEAM": "Adicionar agente na equipe",
+    "TEAMADD_AGENT": "Adicionar agente na equipe",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "PERMISSIONS": "Permissões",
     "ADD_AGENT_TO_QUEUE": "Adicionar agente à fila",
     "QUEUEADD_USER_SMS_INBOUND": "Adicionar usuário às filas do SMS",
     "QUEUEADD_USER_OPENCHANNEL_INBOUND": "Adicionar usuário para filas do Open Channel",
     "QUEUEADD_USER_FAX_INBOUND": "Adicionar usuário às filas de fax",
-    "ALL_TEAMS": "Todos os grupos",
-    "SELECTED_TEAMS": "Grupos Selecionados",
+    "ALL_TEAMS": "Todas as equipes",
+    "SELECTED_TEAMS": "Equipes Selecionadas",
     "SELECTED_AGENTS": "Agentes Selecionados",
     "ALL_QUEUE_CAMPAIGNS": "Todas as campanhas de filas",
     "SELECTED_QUEUE_CAMPAIGNS": "Campanhas de Filas Selecionadas",
     "ENCRYPTION": "Encriptação",
     "CHANNELS": "Canais",
     "CHAT": "Chat",
-    "SMS": "Sms",
-    "OPENCHANNEL": "Open Channel",
+    "SMS": "SMS",
+    "OPENCHANNEL": "OpenChannel",
     "FAX": "Fax",
     "QUEUEADD_USER_VOICE_OUTBOUND": "Adicionar usuário a campanhas de fila",
     "MONITOREXTENSION": "Gravar chamadas para a extensão do usuário",
     "OUTBOUNDPROXY": "Proxy de saída",
     "PHONE": "Telefone",
     "MOBILE": "Celular",
-    "PREFIXREQUIRED": "Prefixo Obrigatório",
+    "PREFIXREQUIRED": "Prefixo obrigatório",
     "MANAGE_PERMISSIONS": "Gerenciar Permissões",
     "USERADD_VOICEQUEUES": "Adicionar fila de voz ao usuário",
     "ALL_VOICEQUEUES": "Todas as filas de voz",
     "REPORT_TYPE": "Tipo de relatório",
     "SECTIONS": "Seções",
     "SUMMARY": "Resumo",
-    "TEAMS_ASSOCIATION": "Associação de grupos",
+    "TEAMS_ASSOCIATION": "Associação de equipes",
     "USERPROFILE": "Perfil de usuário",
     "USERPROFILES": "Perfis de usuário",
     "PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Você não tem permissão para criar o recurso",
     "VIDEOSUPPORT": "Suporte de vídeo",
     "APIKEY": "Chave API",
     "APIKEYMANAGER_USER": "Gerenciador de chaves da API",
-    "GENERATE": "(Regenerado",
+    "GENERATE": "Generate",
     "MANAGE_API_KEY": "Gerenciador de chaves da API",
     "REMOVE": "Remover",
     "ENABLEAUTOMATICSCREENRECORDING": "Ativar gravação automática de tela",
     "ENABLEVIDEOECORDING": "Ativar gravação de vídeo",
     "BLOCKED": "Bloqueado",
     "DISABLED": "Desativado",
-    "REGENERATE": "Regenerado",
+    "REGENERATE": "Regenerate",
     "ALL_WHATSAPP_QUEUES": "Todas as filas de WhatsApp",
     "ALL_WHATSAPPACCOUNTS": "Todas as contas WhatsApp",
     "ALL_WHATSAPPQUEUES": "Todas as filas Whataspp",
     "WSS_PORT": "Porta WSS",
     "ATTACHMENTS": "Anexos",
     "CALLYSQUARE_RECORDINGS": "Gravações da Cally Square",
-    "CONTACT_MANAGER_LISTS": "Listas de gerenciadores de contatos",
-    "DOWNLOADS": "Transferências",
+    "CONTACT_MANAGER_LISTS": "Listas de gestão de contatos",
+    "DOWNLOADS": "Downloads",
     "DOWNLOAD_PERMISSIONS": "Permissões de download",
     "JSCRIPTY_SESSIONS": "Sessões Jscripty",
     "OMNICHANNEL_INTERACTIONS": "Interações Omnichannel",
     "SCREEN_RECORDINGS": "Gravações de tela",
-    "VOICE_RECORDINGS": "Gravações de Voz",
+    "VOICE_RECORDINGS": "Gravações de voz",
     "IGNORE_AGENT_BREAK_STATUS_FOR_PREVIEW_CALLS": "Ignorar o status de interrupção do agente para chamadas de visualização",
     "SELECT_RECALLME_CAMPAIGN": "Selecione a campanha Recall Me",
     "QUEUEADD_AGENT_VOICE_OUTBOUND": "Adicionar agente a campanhas de fila",
index 4489cf0..4904d14 100644 (file)
 {
   "TOOLS": {
-    "BOT": "BOT",
+    "BOT": "Voicebot",
     "CALL": "Anruf",
     "NAME": "Name",
-    "TRUNKS": "SIP-Trunks",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "TRUNKS": "Amtsleitungen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "ERRORS": {
-      "NAME_REQUIRED": "Name erforderlich",
-      "HOST_REQUIRED": "Host erforderlich",
-      "DEFAULTUSER_REQUIRED": "Standardnutzer erforderlich",
-      "CALLERID_REQUIRED": "CallerID erforderlich",
-      "KEY_REQUIRED": "Schlüssel erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "VALIDITYSTART_REQUIRED": "Startzeit erforderlich",
-      "VALIDITYEND_REQUIRED": "Endzeit erforderlich",
-      "MONTHDAY_REQUIRED": "Monats-Tag erforderlich",
-      "HOUR_REQUIRED": "Stunde erforderlich",
-      "CONTENT_REQUIRED": "Inhalt erforderlich",
-      "URL_REQUIRED": "URL erfoderlich",
-      "URL_MUST_VALID_URL": "Ungültiges Format URL",
-      "APPLICATION_REQUIRED": "Anwendung erforderlich",
-      "ARGUMENTS_REQUIRED": "Bedingungen erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Ungültiges Format Name",
-      "POLLING_INTERVAL_REQUIRED": "Abfrageintervall erforderlich",
-      "TITLE_REQUIRED": "Titel erforderlich",
-      "EMAILADDRESS_REQUIRED": "E-Mail Adresse erforderlich",
-      "EVENTVARIABLES_REQUIRED": "Variablen erforderlich",
-      "TYPE_REQUIRED": "Typ erforderlich",
-      "VALUE_REQUIRED": "Wert erforderlich",
-      "ACCOUNT_REQUIRED": "Konto erforderlich",
-      "FIELD_REQUIRED": "Feld erforderlich",
-      "INTEGRATION_REQUIRED": "Integration erforderlich",
-      "LIST_REQUIRED": "Liste erforderlich",
-      "TEMPLATE_REQUIRED": "Vorlage erforderlich",
-      "AUTOCREATECONTACT_REQUIRED": "Kontakterstellung erforderlich",
-      "OUTBOUNDROUTE_REQUIRED": "Ausgehende Route erforderlich",
-      "QUEUE_REQUIRED": "Warteschlange erforderlich",
-      "TIME_RANGE_TO_REQUIRED": "Zeitintervall erforderlich",
-      "WEEK_DAYS_TO_REQUIRED": "Wochentage erforderlich",
-      "MONTH_DAYS_TO_REQUIRED": "Monats-Tag erforderlich",
-      "MONTH_TO_REQUIRED": "Monat erforderlich",
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "HOST_REQUIRED": "Der Host wird benötigt",
+      "DEFAULTUSER_REQUIRED": "Der Standardbenutzer ist erforderlich",
+      "CALLERID_REQUIRED": "Die Anrufer-ID ist erforderlich",
+      "KEY_REQUIRED": "Der Schlüssel ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Kennwörter nicht übereinstimmen",
+      "VALIDITYSTART_REQUIRED": "Die Startzeit ist erforderlich",
+      "VALIDITYEND_REQUIRED": "Das Ende der Zeit ist erforderlich",
+      "MONTHDAY_REQUIRED": "Tag des Monats ist erforderlich",
+      "HOUR_REQUIRED": "Die Stunde ist erforderlich",
+      "CONTENT_REQUIRED": "Der Inhalt ist erforderlich",
+      "URL_REQUIRED": "Die URL ist erforderlich",
+      "URL_MUST_VALID_URL": "Die URL muss gültig sein",
+      "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich",
+      "ARGUMENTS_REQUIRED": "Die Argumente sind erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden",
+      "POLLING_INTERVAL_REQUIRED": "Das Abfrageintervall ist erforderlich",
+      "TITLE_REQUIRED": "Der Titel ist erforderlich",
+      "EMAILADDRESS_REQUIRED": "Die E-Mail Adresse ist erforderlich",
+      "EVENTVARIABLES_REQUIRED": "Pflichtfeld",
+      "TYPE_REQUIRED": "Pflichtfeld",
+      "VALUE_REQUIRED": "Pflichtfeld",
+      "ACCOUNT_REQUIRED": "Pflichtfeld",
+      "FIELD_REQUIRED": "Pflichtfeld",
+      "INTEGRATION_REQUIRED": "Pflichtfeld",
+      "LIST_REQUIRED": "Pflichtfeld",
+      "TEMPLATE_REQUIRED": "Pflichtfeld",
+      "AUTOCREATECONTACT_REQUIRED": "Pflichtfeld",
+      "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
+      "QUEUE_REQUIRED": "Pflichtfeld",
+      "TIME_RANGE_TO_REQUIRED": "Pflichtfeld",
+      "WEEK_DAYS_TO_REQUIRED": "Pflichtfeld",
+      "MONTH_DAYS_TO_REQUIRED": "Pflichtfeld",
+      "MONTH_TO_REQUIRED": "Pflichtfeld",
       "TIME_RANGE_FROM_INVALID": "Falsches Format",
       "TIME_RANGE_TO_INVALID": "Falsches Format",
       "CHANNEL_REQUIRED": "Pflichtfeld",
-      "ACTION_REQUIRED": "Aktion erforderlich",
-      "CONFIGURATION_REQUIRED": "Konfiguration erforderlich",
-      "PROJECT_REQUIRED": "Projekt erforderlich",
-      "LOCATION_REQUIRED": "Standort erforderlich",
-      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "FONTSIZE_REQUIRED": "Schriftgröße erforderlich",
-      "PATH_REQUIRED": "Pfad erforderlich",
-      "FORMAT_REQUIRED": "Format erforderlich",
-      "REPORT_REQUIRED": "Report erforderlich",
-      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "REFRESH_REQUIRED": "Aktualisierungsintervall erforderlich",
-      "TITLE_MAX_LENGTH": "Titel darf eine maximale Länge von {{max}} haben",
-      "NAME_MAX_LENGTH": "Name darf eine maximale Länge von {{max}} haben",
-      "OUTPUT_REQUIRED": "Ausgabeformat erforderlich",
-      "REPORTFOLDER_REQUIRED": "Ordner erforderlich",
-      "REPORTSUBFOLDER_REQUIRED": "Unterordner erforderlich",
-      "REPORTTYPE_REQUIRED": "Reporttyp erforderlich",
-      "AGENT_REQUIRED": "Agent erforderlich",
-      "INFO_REQUIRED": "Information erforderlich",
-      "SCRIPT_REQUIRED": "Skript erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "TIMEOUT_REQUIRED": "Timeout erforderlich",
-      "AUTOCREATE_FIELD_REQUIRED": "Automatisches Erstellen erforderlich",
+      "ACTION_REQUIRED": "Pflichtfeld",
+      "CONFIGURATION_REQUIRED": "Pflichtfeld",
+      "PROJECT_REQUIRED": "Pflichtfeld",
+      "LOCATION_REQUIRED": "Pflichtfeld",
+      "FONTSIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "FONTSIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "FONTSIZE_REQUIRED": "Pflichtfeld",
+      "PATH_REQUIRED": "Pflichtfeld",
+      "FORMAT_REQUIRED": "Pflichtfeld",
+      "REPORT_REQUIRED": "Pflichtfeld",
+      "REFRESH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "REFRESH_REQUIRED": "Pflichtfeld",
+      "TITLE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "NAME_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "OUTPUT_REQUIRED": "Pflichtfeld",
+      "REPORTFOLDER_REQUIRED": "Pflichtfeld",
+      "REPORTSUBFOLDER_REQUIRED": "Pflichtfeld",
+      "REPORTTYPE_REQUIRED": "Pflichtfeld",
+      "AGENT_REQUIRED": "Pflichtfeld",
+      "INFO_REQUIRED": "Pflichtfeld",
+      "SCRIPT_REQUIRED": "Pflichtfeld",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "TIMEOUT_REQUIRED": "Pflichtfeld",
+      "AUTOCREATE_FIELD_REQUIRED": "Pflichtfeld",
       "IGNOREDIALERCONTACTID_REQUIRED": "KontaktID erforderlich"
     },
     "HOST": "Host",
-    "SECRET": "Secret",
-    "DEFAULTUSER": "Standardnutzer",
+    "SECRET": "Geheimnis",
+    "DEFAULTUSER": "Default User",
     "DESCRIPTION": "Beschreibung",
-    "ADD_TRUNK": "Trunk hinzufügen",
+    "ADD_TRUNK": "Amtsleitung hinzufügen",
     "HELP": {
-      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Systemadministrator.",
+      "SECRET": "Kennwort für die Authentifizierung, wenden Sie sich an den Anbieter.",
       "HOST": "Die Domäne oder den Hostnamen für den Anbieter.",
-      "DEFAULTUSER": "Authentifizierung Benutzername, wenden Sie sich an Ihren Anbieter.",
+      "DEFAULTUSER": "Authentifizierung Benutzernamen, wenden Sie sich an den Anbieter.",
       "CALLERID": "Die Anrufer-ID im Format \"name\" <Nummer>.",
-      "REGISTRY": "Die SIP-Registry, in der Regel: defaultuser:Secret@host.",
-      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client).",
-      "FROMUSER": "SIP-Nutzereinstellungen. Nur gültig für den Typ=peer.",
-      "OUTBOUNDPROXY": "IP-Adresse oder DNS-SRV-Ressourceneintrag. Senden Sie ausgehende Anrufe zu diesem Server, anstelle direkt zum Endgerät. Nur gültig für Typ \"Peer\".",
-      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten.",
-      "CONTEXT": "Der zu verwendende Kontext für den Trunk",
-      "TYPE": "Definiert die SIP-Rolle innerhalb der Anwendung. User: Authentifizierung für eingehende Verbindungen; Peer: für ausgehende Verbindungen - Friend: Beide Eigenschaften werden erfüllt",
-      "DTMFMODE": "Sendeart von DTMF-Tönen (Dual-Tone Multi-Frequency): RFC2833: Standardeinstellung, DMTF wird über RTP gesendet (außerhalb des Audiostreams) - INBAND DTMF wird innerhalb des Audiostreams gesendet, über die Lautsprecher hörbar. Dadurch höhere CPU-Belastung",
-      "NAT": "Ändert das Verhaltes des Asterisk-Telefonieservers für Nebenstellen hinter einer Firewall- Sofern eine der per Komma getrennten Optionen 'no', werden alle anderen Einstellungen ignoriert und der Server setzt ein 'nat=no'",
-      "QUALIFY": "Wenn aktiv, sendet der Telefonieserver in regelmäßigen Abständen ein Kommando, um die Erreichbarkeit der Gegenstelle zu überwachen",
-      "ALLOWCODECS": "Erlaubte Codecs in der Reihenfolge der Auflistung",
-      "INSECURE": "Erlaubt unsichere Einstellungen für peer",
-      "CALL_LIMIT": "Maximale Anzahl aller gleichzeitigen Anrufe (Ein- und Ausgehend)",
-      "DIRECTMEDIA": "Der Asterisk versucht, den RTP-Stream im Standard direkt zwischen dem Anrufer und dem Angerufenen aufzubauen. Manche Geräte (z.B. Firewalls) unterstützen diese Funktion nicht. Daher kann hier eine Umstellung erfolgen.",
-      "CALLCOUNTER": "Aktivieren der Anrufzähler für die Geräte",
-      "ADD_PHONE_TO_URI": "Fügt im SIP den user=phone zur URL hinzu",
-      "TRUST_REMOTE_PARTY_ID": "Soll der URL der anderen Partei vertraut werden?",
-      "SEND_REMOTE_PARTY_ID_HEADER": "Soll die ID der anderen Partei gesendet werden?",
-      "ENCRYPTION": "Legt fest, ob die Verbindung über SRTP verschlüsselt vorliegt. Sollte das peer kein SRTP unterstützen, werden Anrufe mit dem HANGUPCAUSE=58 beendet.",
+      "REGISTRY": "Die amtsleitung Registry, die von einigen Anbietern, die in der Regel defaultuser:Secret@host.",
+      "FROMDOMAIN": "Legt Standardeinstellungen von:domain in SIP-Nachrichten als SIP-ua (Client). Einige Ziele können die obligatorische Identität Name anstatt nur die IP-Adresse.",
+      "FROMUSER": "Rovider wie ihr sie kennt. Dies ist der Benutzer, um anstelle der Anrufer-ID beim Tätigen von Anrufen zu anderen Peer (SIP-Proxy). Nur gültig für den Typ=peer.",
+      "OUTBOUNDPROXY": "IP-Adresse oder DNS-SRV-Ressourceneintrag name (ausgenommen die _sip._udp-Präfix): SRV Name, den Hostnamen oder die IP-Adresse des ausgehenden SIP-Proxy. Senden Sie ausgehende Signale zu diesem Proxy und nicht direkt an die Geräte. Nur gültig für den Typ=peer.",
+      "PORT": "Die Nummer des Ports, zu dem Sie eine Verbindung herstellen möchten wir auf der anderen Seite.",
+      "CONTEXT": "Die nutzbaren Rahmen für den Trunk.",
+      "TYPE": "Legt das SIP-Rolle innerhalb der Sternchen. User: Wird verwendet, um die Authentifizierung für eingehende - Peer: für ausgehende Anrufe - Freund: Deckt sowohl die Eigenschaften der oben genannten.",
+      "DTMFMODE": "Wie DTMF (Dual-Tone Multi-Frequency): RFC2833: Die Standardeinstellung, die DTMF gesendet mit RTP, aber außerhalb der Audio Stream. INBAND DTMF gesendet wird: Die in der Audio Stream des aktuellen Gesprächs, wird über die Lautsprecher hörbar. Erfordert eine hohe CPU-Last. INFO: Diese Methode ist zwar sehr zuverlässig, es ist nicht für alle TK-Anlagen und viele SIP-Trunk.",
+      "NAT": "Ändert das Verhalten von Sternchen für Clients hinter einer Firewall.Wenn der Komma-getrennten Optionen ist \"Nein\", Asterisk ignoriert alle anderen Einstellungen und die nat=No.",
+      "QUALIFY": "Legt fest, wann die SIP erreichbar ist.",
+      "ALLOWCODECS": "Erlaubt Codecs in der Reihenfolge ihrer Präferenz.",
+      "INSECURE": "Legt fest, wie Verbindungen mit Peer, dass unsichere Einstellungen.",
+      "CALL_LIMIT": "Die Anzahl der eingehenden und abgehenden Anrufe, die zu einer Zeit.",
+      "DIRECTMEDIA": "Sternchen standardmäßig versucht, die RTP-Stream direkt aus den Anrufer an den Angerufenen. Einige Geräte werden nicht unterstützt wird (vor allem, wenn einer von Ihnen hinter einem NAT-Gerät befindet). Die Standardeinstellung ist Ja. Wenn Sie alle Clients hinter einem NAT-Gerät befindet, oder aus einem anderen Grund nicht möchten, dass Sternchen in der Audiospur, können Sie diese ausschalten.",
+      "CALLCOUNTER": "Aktivieren Sie die Zähler auf Geräte.",
+      "ADD_PHONE_TO_URI": "Legen Sie fest, ob die Provider ';user=Telefon\" an den URL.",
+      "TRUST_REMOTE_PARTY_ID": "Wenn Remote-Party-ID definieren sollte.",
+      "SEND_REMOTE_PARTY_ID_HEADER": "Status",
+      "ENCRYPTION": "Festlegen, ob die Remote-Party-ID gesendet werden soll (standardmäßig auf Nein).",
       "TRANSPORT": "Festlegen der Standardeinstellungen für Transporte. Die Reihenfolge bestimmt den primären Standard.",
-      "OTHERFIELDS": "Weitere Felder zum Konfiguration des SIP-Trunks hinzufügen. Standard Asterisk-Format (key=value). Neue Zeile erstellen pro neuem Feld",
-      "EMAILADDRESS": "Mehrere Adressen mit Komma getrennt eingeben: (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
+      "OTHERFIELDS": "Weitere Felder hinzufügen, in der Amtsleitungen conf-Dateien. In Sternchen format (key=value), jedes Feld auf einer Zeile.",
+      "EMAILADDRESS": "Sie können mehrere Adressen mit Kommata (z. b. John.doe@xcally.com, jane.miller@xcally.com)",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
-      "EVENTVARIABLES": "Fügt die Event-Variablen der URL hinzu",
+      "EVENTVARIABLES": "Wenn aktiviert, Es fügt alle Event Variablen an die Url",
       "T38PT_UDPTL": "Es: Ja, Redundanz, maxdatagram = 400",
       "EMAILBCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
       "EMAILCCADDRESS": "Fügen Sie eine oder mehrere durch Kommas getrennte Adressen hinzu (z. B. john.doe@xcally.com, jane.miller@xcally.com).",
-      "BODY": "(RAW-JSON-Format) Wenn nicht ausgefüllt, wird der Standardwert verwendet",
+      "BODY": "Wenn nicht ausgefüllt, wird der Standardwert gesendet",
       "INFO": "Titel einfügen",
       "SCRIPT": "Skript einfügen",
       "SCRIPT_INFO": "Fügen Sie eine Beschreibung für das Skript ein",
       "SCRIPT_TYPE": "Geben Sie eine Typologie für das Skript ein (zB curl, bash ...)",
       "MANAGED": "Die Gesamtzahl der abgeschlossenen Interaktionen",
       "OPENED": "Die Gesamtzahl der aktiven Interaktionen",
-      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen. Hinweis: Wenn nicht ausgefüllt, wird der Standardwert verwendet",
-      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen - Standardwert ist 5."
+      "HEADERS": "Hinweis: Der Header-Abschnitt muss im RAW-JSON-Format {\"key\": \"value\"} vorliegen.\nHinweis: Wenn nicht ausgefüllt, wird der Standardwert gesendet",
+      "TIMEOUT": "Zeitüberschreitung in Sekunden anfordern. Der Wert muss zwischen 1 und 10 liegen und der Standardwert ist 5."
     },
     "EDIT_TRUNK": "Trunk bearbeiten",
-    "DELETE_TRUNK": "Trunk löschen",
+    "DELETE_TRUNK": "Löschen Sie Trunk",
     "CREATED_AT": "Erstellt am",
     "SETTINGS": "Einstellungen",
-    "ADVANCED": "Erweitert",
+    "ADVANCED": "Erweiterte",
     "OTHER": "Andere",
     "ACTIVE": "Aktiv",
     "CONTEXT": "Kontext",
-    "CALLERID": "Anruferidentifikation (Caller-ID)",
+    "CALLERID": "Die Anrufer-ID",
     "TYPE": "Typ",
-    "DTMFMODE": "DTMF-Modus",
+    "DTMFMODE": "Mfv-Modus",
     "NAT": "NAT",
-    "QUALIFY": "Trunk überwachen (SIP-Qualify)",
-    "ALLOWCODECS": "Erlaubte Codecs",
+    "QUALIFY": "Qualifizieren",
+    "ALLOWCODECS": "Codecs erlaubt",
     "INSECURE": "Unsicher",
     "REGISTRY": "Registrierung",
-    "DIRECTMEDIA": "Direct Media",
+    "DIRECTMEDIA": "Direkte Medien",
     "CALLCOUNTER": "Anrufzähler",
-    "FROMDOMAIN": "From Domain",
-    "FROMUSER": "From Nutzer",
-    "OUTBOUNDPROXY": "Outbound Proxy",
-    "ADD_PHONE_TO_URI": "Telefon zur URL hinzufügen",
-    "TRUST_REMOTE_PARTY_ID": "Trust Remote Party ID",
-    "SEND_REMOTE_PARTY_ID_HEADER": "Remote Party im Header senden",
+    "FROMDOMAIN": "Aus der Domäne",
+    "FROMUSER": "Vom Benutzer",
+    "OUTBOUNDPROXY": "Ausgehender Proxy",
+    "ADD_PHONE_TO_URI": "Telefon hinzufügen, URL",
+    "TRUST_REMOTE_PARTY_ID": "Vertrauen Gegenstelle ID",
+    "SEND_REMOTE_PARTY_ID_HEADER": "Senden einer Partner-ID Header",
     "ENCRYPTION": "Verschlüsselung",
-    "PORT": "Port",
-    "TRANSPORT": "Transport",
+    "PORT": "Hafen",
+    "TRANSPORT": "Verkehr",
     "SAVE": "Speichern",
-    "VARIABLES": "Variabeln",
-    "ADD_VARIABLE": "Variabel hinzufügen",
-    "EDIT_VARIABLE": "Variabel bearbeiten",
-    "DELETE_VARIABLE": "Variabel löschen",
-    "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "VARIABLES": "Variablen",
+    "ADD_VARIABLE": "Variable hinzufügen",
+    "EDIT_VARIABLE": "Variable bearbeiten",
+    "DELETE_VARIABLE": "Variable löschen",
+    "SELECTED": "Ausgewählte",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
     "TAGS": "Tags",
-    "ADD_TAG": "Tag hinzufügen",
-    "EDIT_TAG": "Tag bearbeiten",
-    "DELETE_TAG": "Tag löschen",
+    "ADD_TAG": "Variable hinzufügen",
+    "EDIT_TAG": "Variable bearbeiten",
+    "DELETE_TAG": "Variable löschen",
     "PAUSES": "Pausen",
     "ADD_PAUSE": "Pause hinzufügen",
     "EDIT_PAUSE": "Pause bearbeiten",
     "DELETE_PAUSE": "Pause löschen",
-    "ADD_CANNEDANSWER": "Textbaustein hinzufügen",
-    "EDIT_CANNEDANSWER": "Textbaustein bearbeiten",
-    "DELETE_CANNEDANSWER": "Textbaustein löschen",
+    "ADD_CANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "EDIT_CANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "DELETE_CANNEDANSWER": "Vordefinierte Antwort löschen",
     "KEY": "Schlüssel",
     "VALUE": "Wert",
-    "SOUNDS": "Audiodateien",
-    "EDIT_SOUND": "Audiodatei bearbeiten",
-    "DELETE_SOUND": "Audiodatei löschen",
-    "FINISH": "Beenden",
-    "DROP_TO_UPLOAD": "Hier hineinziehen für Upload",
+    "SOUNDS": "Sounds",
+    "EDIT_SOUND": "Ton bearbeiten",
+    "DELETE_SOUND": "Sound löschen",
+    "FINISH": "Fertig stellen",
+    "DROP_TO_UPLOAD": "Drop hochladen",
     "TRIGGERS": "Trigger",
-    "EDIT_TRIGGER": "Trigger bearbeiten",
-    "DELETE_TRIGGER": "Trigger löschen",
+    "EDIT_TRIGGER": "Auslöser bearbeiten",
+    "DELETE_TRIGGER": "Auslöser löschen",
     "ADD_TRIGGER": "Trigger hinzufügen",
     "DELETE": "Löschen",
-    "AUTOMATIONS": "Automation",
-    "EDIT_AUTOMATION": "Automation bearbeiten",
+    "AUTOMATIONS": "Automatisierungen",
+    "EDIT_AUTOMATION": "Bearbeiten einer Automation",
     "DELETE_AUTOMATION": "Automation löschen",
     "ADD_AUTOMATION": "Automation hinzufügen",
-    "INTERVALS": "Zeitintervalle",
+    "INTERVALS": "Intervalle",
     "EDIT_INTERVAL": "Intervall bearbeiten",
-    "DELETE_INTERVAL": "Intervall löschen",
+    "DELETE_INTERVAL": "Intervall für Löschen.",
     "ADD_INTERVAL": "Intervall hinzufügen",
     "TOOLS": "Werkzeuge",
-    "ID": "ID",
+    "ID": "Id",
     "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Audiodatei herunterladen",
-    "UPLOAD_SOUND": "Audiodatei hochladen",
+    "DOWNLOAD_SOUND": "Download Sound",
+    "UPLOAD_SOUND": "Werkzeuge",
     "CHANNEL": "Kanal",
-    "NEW_TRIGGER": "Neuer Trigger",
+    "NEW_TRIGGER": "Neue Trigger",
     "GENERAL": "Allgemein",
-    "STATUS": "Trigger aktiv",
+    "STATUS": "Status",
     "CONDITIONS&ACTIONS": "Bedingungen und Aktionen",
-    "ALLCONDITIONS": "Alle Bedingungen werden erfüllt",
-    "ANYCONDITIONS": "Einige Bedingungen werden erfüllt",
-    "ACTIONS": "Aktionen",
+    "ALLCONDITIONS": "Alle diese Bedingungen erfüllen:",
+    "ANYCONDITIONS": "Treffen diese Voraussetzungen:",
+    "ACTIONS": "Aktionen:",
     "NEW_AUTOMATION": "Neue Automation",
-    "TIMEOUT": "Zeitüberschreitung",
+    "TIMEOUT": "Timeout",
     "PEERSTATUS": "Peer Status",
-    "CALL_LIMIT": "Anrufe limitieren",
-    "OTHERFIELDS": "Zusätzliche SIP-Felder",
-    "NEW_VARIABLE": "Neue Variabel",
+    "CALL_LIMIT": "Anrufe beschränken",
+    "OTHERFIELDS": "Andere Felder",
+    "NEW_VARIABLE": "Neue Variable",
     "NEW_TAG": "Neuer Tag",
     "NEW_PAUSE": "Neue Pause",
-    "NEW_CANNEDANSWER": "Neue Textvorlage",
+    "NEW_CANNEDANSWER": "Neue vordefinierte Antwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
-    "NEW_TRUNK": "Neuer Trunk",
-    "FROM": "von",
-    "TO": "an",
-    "WEEKDAY": "Wochentag",
-    "MONTHDAY": "Monatstag",
+    "NEW_TRUNK": "Neue Leitung",
+    "FROM": "Von",
+    "TO": "Zu",
+    "WEEKDAY": "Woche Tag",
+    "MONTHDAY": "Monat Tag",
     "MONTH": "Monat",
     "ALWAYS": "Immer",
     "MON": "Montag",
     "NOV": "November",
     "DEC": "Dezember",
     "PASSWORD": "Passwort",
-    "CUSTOMDASHBOARDS": "Benutzerdef. Dashboards",
+    "CUSTOMDASHBOARDS": "Benutzerdefinierte Dashboards",
     "NEW_CUSTOMDASHBOARD": "Neues benutzerdefiniertes Dashboard",
-    "ADD_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard hinzufügen",
-    "EDIT_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard bearbeiten",
-    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen",
-    "SCHEDULER": "Berichtsplanung",
-    "NEW_SCHEDULE": "Neue Planung",
-    "ADD_SCHEDULE": "Planung hinzufügen",
-    "EDIT_SCHEDULE": "Planung bearbeiten",
-    "DELETE_SCHEDULE": "Planung löschen",
+    "ADD_CUSTOMDASHBOARD": "Hinzufügen von benutzerdefinierten Dashboard",
+    "EDIT_CUSTOMDASHBOARD": "Benutzerdefinierte Dashboards bearbeiten",
+    "DELETE_CUSTOMDASHBOARD": "Benutzerdefiniertes Dashboard löschen.",
+    "SCHEDULER": "Scheduler",
+    "NEW_SCHEDULE": "Neuer Zeitplan",
+    "ADD_SCHEDULE": "Zeitplan hinzufügen",
+    "EDIT_SCHEDULE": "Zeitplan bearbeiten",
+    "DELETE_SCHEDULE": "Zeitplan löschen",
     "SENDMAIL": "E-Mail senden",
     "CONFIGURATION": "Konfiguration",
     "MAIL": "E-Mail",
     "REPORTTYPE": "Berichtstyp",
     "REPORT": "Bericht",
-    "OUTPUT": "Ausgabeformat",
+    "OUTPUT": "Ausgang",
     "EXECUTEON": "Ausführung",
-    "REPORTRANGE": "Bereich",
+    "REPORTRANGE": "Berichtsbereich",
     "VALIDITYSTART": "Startzeit",
     "VALIDITYEND": "Endzeit",
     "EXECUTEEVERY": "Alle ausführen",
     "WEEKLY": "Wöchentlich",
     "MONTHLY": "Monatlich",
     "PREVIOUS_DAY": "Vorheriger Tag",
-    "LAST_SEVEN_DAYS": "Letzte 7 Tage",
-    "LAST_THIRTY_DAYS": "Letzte 30 Tage",
+    "LAST_SEVEN_DAYS": "Letzte sieben Tage",
+    "LAST_THIRTY_DAYS": "33 verbotenen letzte Tage",
     "LAST_MONTH": "Letzter Monat",
-    "WEEKDAYS": "Wochentage",
+    "WEEKDAYS": "Woche Tage",
     "HOUR": "Stunde",
     "DEFAULT": "Standard",
     "CSV": "CSV",
     "15MIN": "15 Minuten",
     "30MIN": "30 Minuten",
     "1H": "1 Stunde",
-    "VOICE": "Sprachanrufe",
+    "VOICE": "Voice",
     "CHAT": "Chat",
     "SMS": "SMS",
     "OPENCHANNEL": "Offener Kanal",
     "ADD_TEMPLATE": "Vorlage hinzufügen",
     "CONTENT": "Inhalt",
     "FIELD": "Feld",
-    "NO_ANYCONDITION_AVAILABLE": "Keine Bedingung verfügbar",
-    "NO_ALLCONDITION_AVAILABLE": "Keine Bedingung verfügbar",
+    "NO_ANYCONDITION_AVAILABLE": "Keine Bedingungen verfügbar",
+    "NO_ALLCONDITION_AVAILABLE": "Keine Bedingungen verfügbar",
     "NO_ACTION_AVAILABLE": "Keine Aktionen verfügbar",
     "ACTION": "Aktion",
     "EDIT_ANYCONDITION": "Bedingung bearbeiten",
     "ADD_ALLCONDITION": "Bedingung hinzufügen",
     "EDIT_ACTION": "Aktion bearbeiten",
     "DELETE_ACTION": "Aktion löschen",
-    "NEW_ACTION": "Neue Aktion",
+    "NEW_ACTION": "Neue Maßnahme",
     "ADD_ACTION": "Aktion hinzufügen",
     "QUEUE": "Warteschlange",
     "CALL_STATUS": "Anrufstatus",
-    "OUTBOUNDROUTE": "Ausgehende Routen",
-    "EQUALS": "ist gleich",
-    "NOT_EQUALS": "ist nicht gleich",
-    "CONTACT_MANAGER": "Kontaktmanager",
+    "OUTBOUNDROUTE": "Abgehende Routen",
+    "EQUALS": "Ist gleich",
+    "NOT_EQUALS": "Nicht gleich",
+    "CONTACT_MANAGER": "Contacts Manager",
     "INTEGRATIONS": "Integrationen",
     "MOTIONBAR": "Motion Bar",
     "JSCRIPTY": "Jscripty",
-    "URL_FORWARD": "URL-Weiterleitung",
-    "WEB_POPUP": "Web-Popup",
+    "URL_FORWARD": "URL Weiterleitung",
+    "WEB_POPUP": "Web Popup",
     "LIST": "Liste",
     "INTEGRATION": "Integration",
     "TEMPLATE": "Vorlage",
     "ARGUMENTS": "Argumente",
     "NO_APPS_AVAILABLE": "Keine Anwendungen verfügbar",
     "NEW_INTERVAL": "Neues Intervall",
-    "OPERATOR": "Operator",
+    "OPERATOR": "Betreiber",
     "NO_INTERVALS_AVAILABLE": "Keine Intervalle zur Verfügung",
     "YES": "Ja",
-    "NO": "Nein",
+    "NO": "Keine",
     "SUBJECT": "Betreff",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
     "BROWSER": "Browser",
     "INTERVAL": "Intervall",
-    "INFO": "Information",
+    "INFO": "Info",
     "TIME_RANGE": "Zeitbereich",
-    "WEEK_DAYS": "Wochentage",
-    "MONTH_DAYS": "Monatstage",
+    "WEEK_DAYS": "Woche Tage",
+    "MONTH_DAYS": "Monat Tage",
     "MONTHS": "Monate",
-    "DROP_TO_UPLOAD_MESSAGE": "Dateien hier hinein ziehen zum Hochladen. Unterstütze Formate: .mp3, .wav, .gsm; Max. Dateigröße: 15 MB",
+    "DROP_TO_UPLOAD_MESSAGE": "Sie können auch Audiodateien hier ablegen\" hochzuladen. Nur MP3-, WAV-, GSM-Max. 15 MB",
     "POLLING_INTERVAL": "Abfrageintervall (Sekunden)",
-    "DASHBOARD": "Dashboard",
-    "NEW_DASHBOARDITEM": "Neues Dashboard-Widget",
+    "DASHBOARD": "Armaturenbrett",
+    "NEW_DASHBOARDITEM": "Neue Dashboard Widget",
     "COUNTER": "Zähler",
     "IFRAME": "IFrame",
     "CLOCK": "Uhr",
-    "ADD_DASHBOARDITEM": "Dashboard-Widget hinzufügen",
-    "EDIT_WIDGET": "Widget bearbeiten",
-    "DELETE_WIDGET": "Widget löschen",
-    "FLIP_WIDGET": "Widget drehen",
+    "ADD_DASHBOARDITEM": "Dashboard Widget hinzufügen",
+    "EDIT_WIDGET": "Bearbeiten Widget",
+    "DELETE_WIDGET": "Löschen Widget",
+    "FLIP_WIDGET": "Flip Widget",
     "TITLE": "Titel",
     "UPDATE": "Aktualisieren",
     "LAYOUT": "Layout",
     "BACKGROUND_COLOR": "Hintergrundfarbe",
     "FOREGROUND_COLOR": "Vordergrundfarbe",
-    "FOREGROUND_TITLE_COLOR": "Titelfarbe",
-    "THEME": "Design-Thema",
-    "LIGHT": "Hell",
+    "FOREGROUND_TITLE_COLOR": "Vordergrund Titel Farbe",
+    "THEME": "Thema",
+    "LIGHT": "Licht",
     "DARK": "Dunkel",
     "TIMEZONE": "Zeitzone",
-    "DIGITAL_FORMAT": "Digitales Datumsformat",
+    "DIGITAL_FORMAT": "Digitale Datum Format",
     "TOOLS_QUERY": "Abfrage",
-    "SELECT": "Auswählen",
-    "WHERE": "where",
+    "SELECT": "Wählen Sie",
+    "WHERE": "Wo",
     "BACK": "Zurück",
     "PROJECT": "Projekt",
-    "GOTOREALTIME_TRUNK": "Direkt zum Echtzeitmonitoring für SIP-Trunks",
-    "GOTO_TRUNK": "Direkt zum SIP-Trunk gehen",
-    "CRON": "Versand",
+    "GOTOREALTIME_TRUNK": "In Echtzeit, Trunk gehen",
+    "GOTO_TRUNK": "Um die Leitungsbündel gehen",
+    "CRON": "Cron",
     "MINUTES": "Minuten",
     "HOURLY": "Stündlich",
     "YEARLY": "Jährlich",
-    "EVERY": "Jede(n)",
+    "EVERY": "Jede",
     "MINUTE": "Minute",
-    "ON_SECOND": "Zur Sekunde",
-    "HOUR_ON_MINUTE": "Stunde zur Minute",
-    "AND_SECOND": "und Sekunde",
-    "DAY_AT": "Am Tag",
+    "ON_SECOND": "Im 2.",
+    "HOUR_ON_MINUTE": "Stunde Minute",
+    "AND_SECOND": "Und 2.",
+    "DAY_AT": "Tag an",
     "START_TIME": "Startzeit",
-    "ON_THE": "Am",
-    "OF_EVERY": "An jedem",
+    "ON_THE": "Auf der",
+    "OF_EVERY": "Jedes",
     "MONTH_AT": "Monat",
-    "AT": "um",
+    "AT": "An",
     "LAST": "Letzte",
     "LASTUNIT": "Einheit",
     "MAILACCOUNT": "E-Mail Konto",
-    "OF": "von",
-    "PAST_THE_HOUR": "Minuten nach voller Stunde",
+    "OF": "Von",
+    "PAST_THE_HOUR": "Nach der vollen Stunde",
     "DAY": "Tag",
     "WEEK": "Woche",
     "YEAR": "Jahr",
-    "ON": "Am",
+    "ON": "Auf",
     "PAI": "P-Asserted-Identity",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OUTBOUND_ROUTE": "Ausgehende Routen",
-    "EVENTVARIABLES": "Event-Variablen",
+    "OUTBOUND_ROUTE": "Abgehende Routen",
+    "EVENTVARIABLES": "Bei Variablen",
     "FAX": "Fax",
     "INTERACTION": "Interaktion",
     "MESSAGE": "Nachricht",
-    "T38PT_UDPTL": "Redundanz, maxdatagram = 400",
-    "AUTOCREATECONTACT": "Automatische Kontakterstellung",
+    "T38PT_UDPTL": "T38 pt Udptl",
+    "AUTOCREATECONTACT": "Erstellen Sie automatisch",
     "COLOR": "Farbe",
-    "LOCATION": "Standort",
-    "NEW_TAB": "Neuer Tab",
+    "LOCATION": "Lage",
+    "NEW_TAB": "Neue Registerkarte",
     "NEW_WINDOW": "Neues Fenster",
-    "WINDOWWIDTH": "Fensterbreite (px)",
+    "WINDOWWIDTH": "Fenster Breite (px)",
     "WINDOWHEIGHT": "Fensterhöhe (px)",
     "EDIT_DASHBOARDITEM": "Dashboard-Widget bearbeiten",
     "FONTSIZE": "Schriftgröße",
     "FOREGROUND": "Vordergrund",
     "NONE": "Keiner",
     "TOTAL": "Gesamt",
-    "ABANDONED": "Abgebrochen",
+    "ABANDONED": "Verlassen",
     "WAITING": "Warten",
-    "TALKING": "im Gespräch",
-    "ANSWERED": "Beantwortet",
-    "UNMANAGED": "Nicht bearbeitet",
+    "TALKING": "Reden",
+    "ANSWERED": "Antwortete",
+    "UNMANAGED": "Nicht verwaltet",
     "CUSTOMTYPE": "Benutzerdefiniert [Pfad]",
-    "WEBREPORT": "Interner Report",
+    "WEBREPORT": "Webbericht",
     "PIECHART": "Kuchendiagramm",
     "MULTIBARCHART": "Multibar-Diagramm",
     "MOVE_WIDGET": "Widget verschieben",
-    "USERADD_CUSTOMDASHBOARD": "Berechtigungen hinzufügen",
-    "GOTODASHBOARD_CUSTOMDASHBOARD": "Vorschau Dashboard",
-    "GOTO_CUSTOMDASHBOARD": "Vorschau Dashboard",
-    "METRIC": "Metrik",
-    "FILTERVOICEQUEUES": "Anruf-Warteschlangen filtern",
+    "USERADD_CUSTOMDASHBOARD": "Hinzufügen von Benutzerberechtigungen",
+    "GOTODASHBOARD_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
+    "GOTO_CUSTOMDASHBOARD": "Gehe zum Vorschau-Dashboard",
+    "METRIC": "Metrisch",
+    "FILTERVOICEQUEUES": "Voice-Warteschlangen filtern",
     "SERIE1": "Serie 1",
     "SERIE2": "Serie 2",
     "SERIE3": "Serie 3",
-    "REFRESH": "Aktualisieren [S]",
+    "REFRESH": "Aktualisieren [s]",
     "FORMAT": "Format",
     "PATH": "Absoluter Pfad",
     "ALL_USERS": "Alle Nutzer",
-    "SELECTED_USERS": "Ausgewählte Nutzer",
+    "SELECTED_USERS": "Ausgewählte Benutzer",
     "ADD_WIDGET": "Widget hinzufügen",
-    "NEXTCONTACT": "Nächster Kontakt",
+    "NEXTCONTACT": "Nächster",
     "SENDIFEMPTY": "Senden, wenn leer",
-    "CANCEL": "Abbrechen",
+    "CANCEL": "Stornieren",
     "UPLOADING": "Hochladen",
-    "EMAILBCCADDRESS": "BCC",
-    "EMAILCCADDRESS": "CC",
-    "RUN_SCHEDULE": "Ausführen",
-    "ADD_DISPOSITION": "Qualifizierung hinzufügen",
-    "DELETE_DISPOSITION": "Qualifizierung löschen",
-    "DISPOSITIONS": "Qualifizierungen",
-    "EDIT_DISPOSITION": "Qualifizierung bearbeiten",
-    "NEW_DISPOSITION": "Neue Qualifizierung",
-    "CLONE_TRUNK": "Trunk klonen",
-    "BODY": "Textinhalt",
-    "CANNEDANSWERS": "Globale Textbausteine",
+    "EMAILBCCADDRESS": "Bcc",
+    "EMAILCCADDRESS": "Cc",
+    "RUN_SCHEDULE": "Zeitplan ausführen",
+    "ADD_DISPOSITION": "Disposition hinzufügen",
+    "DELETE_DISPOSITION": "Disposition löschen",
+    "DISPOSITIONS": "Dispositionen",
+    "EDIT_DISPOSITION": "Disposition bearbeiten",
+    "NEW_DISPOSITION": "Neue Disposition",
+    "CLONE_TRUNK": "Klon-Trunk",
+    "BODY": "Karosserie",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
     "REPORTFOLDER": "Berichtsordner",
-    "REPORTSUBFOLDER": "Unterordner",
-    "PREVIOUSCONTACT": "Vorheriger Kontakt",
+    "REPORTSUBFOLDER": "Unterordner melden",
+    "PREVIOUSCONTACT": "Bisherige",
     "VIDEOSUPPORT": "Video-Unterstützung",
     "AGENT": "Agent",
     "HEADERS": "Überschriften",
     "SCRIPT": "Skript",
-    "SCRIPT_INFO": "Information",
+    "SCRIPT_INFO": "Info",
     "SCRIPT_TYPE": "Art",
     "MOTION_TAB": "Neue Registerkarte \"Agent Dashboard\"",
     "WHATSAPP": "WhatsApp Connector",
     "AUTOCREATE_FIELD": "Feld automatisch erstellen",
-    "GLOBALS": "Globale Werte",
+    "GLOBALS": "Globals",
     "SEARCH_FIELDS": "Suchfelder",
     "STANDARD": "Standard",
     "MOTION_BAR": "Motion Bar",
     "ALL": "Alle",
-    "ALL_DISPOSITIONS": "Alle Qualifizierungen",
-    "FIRST_LEVEL_DISPOSITION": "Qualifizierung Ebene 1",
-    "LEVEL": "Ebene",
-    "SECOND_LEVEL_DISPOSITION": "Qualifizierung Ebene 2",
-    "SELECT_LEVEL": "Ebene auswählen",
-    "TITLEFONTSIZE": "Schriftgröße Titel",
+    "ALL_DISPOSITIONS": "Alle Dispositionen",
+    "FIRST_LEVEL_DISPOSITION": "First Level Disposition",
+    "LEVEL": "Niveau",
+    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
+    "SELECT_LEVEL": "Wählen Sie eine Ebene",
+    "TITLEFONTSIZE": "Schrifttitelgröße",
     "ADD_CONTACTITEMTYPE": "Hinzufügen",
     "CONTACTITEMTYPE": "Kontaktartikeltypen",
     "NEW_CONTACTITEMTYPE": "Neuer Kontaktelementtyp",
index 89475fd..60b1a08 100644 (file)
@@ -1,16 +1,16 @@
 {
   "TOOLS": {
     "BOT": "Voicebot",
-    "CLONE_TRUNK": "Clonar Tronco",
+    "CLONE_TRUNK": "Clonar tronco",
     "DISPOSITIONS": "Disposições",
-    "NEW_DISPOSITION": "Nova Disposição",
-    "ADD_DISPOSITION": "Adicionar Disposição",
-    "EDIT_DISPOSITION": "Editar Disposição",
-    "DELETE_DISPOSITION": "Excluir Disposição",
+    "NEW_DISPOSITION": "Nova disposição",
+    "ADD_DISPOSITION": "Adicionar disposição",
+    "EDIT_DISPOSITION": "Editar disposição",
+    "DELETE_DISPOSITION": "Excluir disposição",
     "RUN_SCHEDULE": "Horário de execução",
     "SENDIFEMPTY": "Enviar se vazio",
     "NEXTCONTACT": "Próximo",
-    "OUTBOUND_ROUTE": "Rota de Saída",
+    "OUTBOUND_ROUTE": "Rota de saída",
     "EDIT_DASHBOARDITEM": "Editar widget do painel",
     "FONTSIZE": "Tamanho da fonte",
     "CLONE_CUSTOMDASHBOARD": "Clonar Dashboard Personalizado",
@@ -41,8 +41,8 @@
     "FORMAT": "Formato",
     "PATH": "Caminho absoluto",
     "ALL_USERS": "Todos os usuários",
-    "SELECTED_USERS": "Usuários Selecionados",
-    "ADD_WIDGET": "Adicionar Widget",
+    "SELECTED_USERS": "Usuários selecionados",
+    "ADD_WIDGET": "Adicionar widget",
     "COLOR": "Cor",
     "FAX": "Fax",
     "INTERACTION": "Interação",
       "MANAGED": "O número total de interações concluídas",
       "OPENED": "O número total de interações ativas"
     },
-    "EDIT_TRUNK": "Editar Tronco",
-    "DELETE_TRUNK": "Excluir Tronco",
+    "EDIT_TRUNK": "Editar tronco",
+    "DELETE_TRUNK": "Excluir tronco",
     "CREATED_AT": "Criado em",
     "SETTINGS": "Definições",
     "ADVANCED": "Avançado",
     "ALLOWCODECS": "Codecs permitidos",
     "INSECURE": "Inseguro",
     "REGISTRY": "Registro",
-    "DIRECTMEDIA": "Mídia Direta",
+    "DIRECTMEDIA": "Direct media",
     "CALLCOUNTER": "Contador de chamadas",
     "FROMDOMAIN": "Do domínio",
     "FROMUSER": "Do usuário",
     "TRANSPORT": "Transporte",
     "SAVE": "Salvar",
     "VARIABLES": "Variáveis",
-    "ADD_VARIABLE": "Adicionar Variáveis",
-    "EDIT_VARIABLE": "Editar Variáveis",
-    "DELETE_VARIABLE": "Excluir Variáveis",
+    "ADD_VARIABLE": "Adicionar variáveis",
+    "EDIT_VARIABLE": "Editar variáveis",
+    "DELETE_VARIABLE": "Excluir variáveis",
     "SELECTED": "Selecionado",
     "SELECT_ALL": "Selecione todos",
     "SELECT_NONE": "Selecione nenhum",
     "EDIT_TAG": "Editar Tag",
     "DELETE_TAG": "Excluir Tag",
     "PAUSES": "Pausas",
-    "ADD_PAUSE": "Adicionar Pausas",
-    "EDIT_PAUSE": "Editar Pausas",
-    "DELETE_PAUSE": "Excluir Pausas",
-    "CANNEDANSWERS": "Respostas Prontas",
-    "ADD_CANNEDANSWER": "Adicionar Resposta Pronta",
-    "EDIT_CANNEDANSWER": "Editar Resposta Pronta",
-    "DELETE_CANNEDANSWER": "Excluir Resposta Pronta",
+    "ADD_PAUSE": "Adicionar pausas",
+    "EDIT_PAUSE": "Editar pausas",
+    "DELETE_PAUSE": "Excluir pausas",
+    "CANNEDANSWERS": "Respostas pré-definidas",
+    "ADD_CANNEDANSWER": "Adicionar resposta pré-definida",
+    "EDIT_CANNEDANSWER": "Editar resposta pré-definida",
+    "DELETE_CANNEDANSWER": "Excluir resposta pré-definida",
     "KEY": "Key",
     "VALUE": "Valor",
-    "SOUNDS": "Sons",
-    "EDIT_SOUND": "Editar Som",
-    "DELETE_SOUND": " Ecluir Som",
+    "SOUNDS": "Áudios",
+    "EDIT_SOUND": "Editar áudio",
+    "DELETE_SOUND": " Ecluir áudio",
     "CANCEL": "Cancelar",
     "FINISH": "Finalizar",
-    "DROP_TO_UPLOAD": "Largar para fazer o upload",
+    "DROP_TO_UPLOAD": "Soltar para fazer o upload",
     "UPLOADING": "Uploading",
-    "TRIGGERS": "Gatilhos",
-    "EDIT_TRIGGER": "Editar Gatilhos",
-    "DELETE_TRIGGER": "Excluir Gatilhos",
-    "ADD_TRIGGER": "Adicionar Gatilhos",
+    "TRIGGERS": "Triggers",
+    "EDIT_TRIGGER": "Editar trigger",
+    "DELETE_TRIGGER": "Excluir trigger",
+    "ADD_TRIGGER": "Adicionar trigger",
     "DELETE": "Excluir",
     "AUTOMATIONS": "Automações",
-    "EDIT_AUTOMATION": "Editar Automações",
-    "DELETE_AUTOMATION": "Excluir Automações",
-    "ADD_AUTOMATION": "Adicionar Automações",
+    "EDIT_AUTOMATION": "Editar automações",
+    "DELETE_AUTOMATION": "Excluir automações",
+    "ADD_AUTOMATION": "Adicionar automações",
     "INTERVALS": "Intervalos",
-    "EDIT_INTERVAL": "Editar Intervalo",
-    "DELETE_INTERVAL": "Excluir Intervalo",
-    "ADD_INTERVAL": "Adicionar Intervalo",
+    "EDIT_INTERVAL": "Editar intervalo",
+    "DELETE_INTERVAL": "Excluir intervalo",
+    "ADD_INTERVAL": "Adicionar intervalo",
     "TOOLS": "Ferramentas",
     "ID": "Id",
-    "AUDIO": "Audio",
-    "DOWNLOAD_SOUND": "Download Som",
+    "AUDIO": "Áudio",
+    "DOWNLOAD_SOUND": "Download áudio",
     "UPLOAD_SOUND": "Ferramentas",
     "CHANNEL": "Canal",
-    "NEW_TRIGGER": "Novo Gatilho",
+    "NEW_TRIGGER": "Nova trigger",
     "GENERAL": "Geral",
     "STATUS": "Status",
     "CONDITIONS&ACTIONS": "Condições e ações",
     "ALLCONDITIONS": "Conheça todas estas condições:",
     "ANYCONDITIONS": "Conheça qualquer uma destas condições:",
     "ACTIONS": "Ações:",
-    "NEW_AUTOMATION": "Nova Automação",
+    "NEW_AUTOMATION": "Nova automação",
     "TIMEOUT": "Tempo esgotado",
-    "PEERSTATUS": "Status de par Status",
+    "PEERSTATUS": "Peer status",
     "CALL_LIMIT": "Limite de chamadas",
     "OTHERFIELDS": "Outros campos",
-    "NEW_VARIABLE": "Nova Variável",
-    "NEW_TAG": "Nova Tag",
-    "NEW_PAUSE": "Nova Pausa",
-    "NEW_CANNEDANSWER": "Nova Resposta Pronta",
-    "CONFIRM_PASSWORD": "Confirme a Senha",
-    "NEW_TRUNK": "Novo Tronco",
+    "NEW_VARIABLE": "Nova variável",
+    "NEW_TAG": "Nova tag",
+    "NEW_PAUSE": "Nova pausa",
+    "NEW_CANNEDANSWER": "Nova resposta pré-definida",
+    "CONFIRM_PASSWORD": "Confirme a senha",
+    "NEW_TRUNK": "Novo tronco",
     "FROM": "De ",
     "TO": "Para",
     "WEEKDAY": "Dia da semana",
     "ADD_SCHEDULE": "Adicionar Agendador",
     "EDIT_SCHEDULE": "Editar Agendador",
     "DELETE_SCHEDULE": "Excluir Agendador",
-    "SENDMAIL": "Enviar Email",
+    "SENDMAIL": "Enviar email",
     "CONFIGURATION": "Configuração",
     "MAIL": "Email",
     "REPORTTYPE": "Tipo de relatório",
     "NEW_ALLCONDITION": "Nova condição",
     "ADD_ALLCONDITION": "Adicionar condição",
     "EDIT_ACTION": "Editar Ação",
-    "DELETE_ACTION": "Excluir Ação",
-    "NEW_ACTION": "Nova Ação",
-    "ADD_ACTION": "Adicionar Ação",
+    "DELETE_ACTION": "Excluir ação",
+    "NEW_ACTION": "Nova ação",
+    "ADD_ACTION": "Adicionar ação",
     "QUEUE": "Fila",
-    "CALL_STATUS": "Status da Chamada",
-    "OUTBOUNDROUTE": "Rota de Saída",
+    "CALL_STATUS": "Status da chamada",
+    "OUTBOUNDROUTE": "Rota de saída",
     "EQUALS": "Igual a",
     "NOT_EQUALS": "Não é igual a",
-    "CONTACT_MANAGER": "Gerente de contatos",
+    "CONTACT_MANAGER": "Gestão Contatos",
     "INTEGRATIONS": "Integrações",
     "MOTIONBAR": "Motion Bar",
     "JSCRIPTY": "Jscripty",
index 0339802..832ae56 100644 (file)
 {
   "VOICE": {
-    "GOTO_VOICEQUEUE": "Zur Anruf-Warteschlange gehen",
-    "GOTOREALTIME_VOICEQUEUE": "Direkt zur Echtzeit-Warteschlange",
+    "GOTO_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
+    "GOTOREALTIME_VOICEQUEUE": "Zu Realtime Voice Warteschlangen gehen",
     "NAME": "Name",
     "LOGOUT": "An-/Abmelden",
-    "VOICEQUEUES": "Warteschlangen",
-    "SEARCH_FOR_ANYONE": "Suche",
+    "VOICEQUEUES": "Voice Warteschlangen",
+    "SEARCH_FOR_ANYONE": "Suche für Jedermann",
     "BACK": "Zurück",
-    "SELECTED": "Ausgewählt",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
-    "DELETE_VOICEDISPOSITION": "Qualifizierung löschen",
-    "EDIT_VOICEDISPOSITION": "Qualifizierung bearbeiten",
-    "EDIT_VOICEQUEUE": "Warteschlange bearbeiten",
+    "SELECTED": "Ausgewählte",
+    "SELECT_ALL": "Alle auswählen",
+    "SELECT_NONE": "Wählen Sie \"Keine\"",
+    "DELETE_VOICEDISPOSITION": "Disposition löschen",
+    "EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
+    "EDIT_VOICEQUEUE": "Edit Voice Warteschlange",
     "DELETE_VOICEQUEUE": "Warteschlange löschen",
-    "MOHSOUNDS": "Wartemusik",
-    "STRATEGY": "Verteilungsstrategie",
+    "MOHSOUNDS": "Die MOH-Sounds",
+    "STRATEGY": "Strategie",
     "DESCRIPTION": "Beschreibung",
-    "ADD_VOICEQUEUE": "Warteschlangen hinzufügen",
+    "ADD_VOICEQUEUE": "Hinzufügen von Warteschlangen",
     "CREATED_AT": "Erstellt am",
-    "CANT_PLAY_GSM_AUDIO_FILES": "GMS-Audiodateien können nicht abgespielt werden",
+    "CANT_PLAY_GSM_AUDIO_FILES": "Nicht gsm-Audiodateien",
     "APPLICATIONS_LIST": "Liste der Anwendungen",
     "LEGEND": {
       "CUSTOM_APPLICATION": "(*) - Benutzerdefinierte Anwendung."
     },
     "ERRORS": {
-      "NAME_REQUIRED": "Name erforderlich",
-      "APPLICATION_NAME_REQUIRED": "Name der Anwendung erforderlich",
-      "TIMEOUT_REQUIRED": "Timeout erforderlich",
-      "PHONENUMBER_REQUIRED": "Telefonnummer erforderlich",
-      "CONTEXT_REQUIRED": "Kontext erforderlich",
-      "DESTINATIONPATTERN_REQUIRED": "Ziel-Pattern erforderlich",
-      "FULLNAME_REQUIRED": "Vollständiger Name erforderlich",
-      "EMAIL_REQUIRED": "E-Mail erforderlich",
-      "EMAIL_MUST_VALID": "Ungültiges Format E-Mail",
-      "MAILBOX_REQUIRED": "Mailbox erforderlich",
-      "PASSWORD_REQUIRED": "Passwort erforderlich",
-      "CONFIRM_NOT_MATCH": "Die Passwörter stimmen nicht überein",
-      "TIMEZONE_REQUIRED": "Zeitzone erforderlich",
-      "PREFIX_REQUIRED": "Präfix erforderlich",
-      "OPTIONS_REQUIRED": "Bedingungen  Erforderlich",
-      "AFTERCALLWORKDURATION_REQUIRED": "Dauer Nacharbeit erforderlich",
-      "TECHNOLOGY/RESOURCE_REQUIRED": "Ressource erforderlich",
-      "PHONE_REQUIRED": "Telefonnummer erforderlich",
-      "VALUE_REQUIRED": "Wert erforderlich",
-      "EXTENSION_REQUIRED": "Nebenstelle erforderlich",
-      "PRIORITY_REQUIRED": "Priorität erforderlich",
-      "NAME_MUST_VALID_PATTERN": "Ungültiger Name Format",
-      "APPLICATION_REQUIRED": "Anwendung erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Timeout muss größer oder gleich sein als",
-      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die max. Länge muss größer oder gleich sein als",
-      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederversuche muss größer oder gleich sein als",
-      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeit Zeit muss größer oder gleich sein als",
-      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Gewichtung muss größer oder gleich sein als",
-      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Frequenz der Ansagen muss größer oder gleich sein als",
-      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Min. Frequenz der Ansagen muss größer oder gleich sein als",
-      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wiederholende Frequenz der Ansagen muss größer oder gleich sein als",
-      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nacharbeit Zeit muss größer oder gleich sein als",
-      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Verzögerung muss größer oder gleich sein als",
-      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Position muss größer oder gleich sein als",
-      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Schnitt muss größer oder gleich sein als",
-      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Sekundenmuss größer oder gleich sein als",
-      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max. Nachrichten muss größer oder gleich sein als",
-      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max. Nachrichten muss kleiner oder gleich sein als",
-      "CALLERIDALL_MUST_VALID_PATTERN": "Format ungültig Anrufer-ID (alle)",
-      "OUTBOUNDROUTE_REQUIRED": "Ausgehende Route erforderlich",
-      "VARIABLE_REQUIRED": "Variabel erforderlich",
-      "CALLER_ID_MUST_VALID_PATTERN": "Format ungültig Anrufer-ID",
-      "TRUNK_REQUIRED": "SIP-Trunk erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "PausenID während Qualifizierung erforderlich",
-      "PROJECT_REQUIRED": "Projekt erforderlich",
-      "PENALTY_REQUIRED": "Wert für Verzögerung erforderlich"
+      "NAME_REQUIRED": "Der Name ist erforderlich",
+      "APPLICATION_NAME_REQUIRED": "Der Name der Anwendung ist erforderlich",
+      "TIMEOUT_REQUIRED": "Der Timeout ist erforderlich",
+      "PHONENUMBER_REQUIRED": "Die Telefonnummer ist erforderlich",
+      "CONTEXT_REQUIRED": "Der Rahmen ist erforderlich",
+      "DESTINATIONPATTERN_REQUIRED": "Das Ziel-pattern ist erforderlich",
+      "FULLNAME_REQUIRED": "Der vollständige Name ist erforderlich",
+      "EMAIL_REQUIRED": "Die E-Mail ist erforderlich",
+      "EMAIL_MUST_VALID": "Die e-Mail muss in einem gültigen Format",
+      "MAILBOX_REQUIRED": "Die Mailbox ist erforderlich",
+      "PASSWORD_REQUIRED": "Das Kennwort ist erforderlich",
+      "CONFIRM_NOT_MATCH": "Die Kennwörter stimmen nicht überein.",
+      "TIMEZONE_REQUIRED": "Die Zeitzone ist erforderlich",
+      "PREFIX_REQUIRED": "Das Präfix ist erforderlich",
+      "OPTIONS_REQUIRED": "Die Optionen sind Erforderlich",
+      "AFTERCALLWORKDURATION_REQUIRED": "Die Arbeit nach Anruf Dauer ist erforderlich",
+      "TECHNOLOGY/RESOURCE_REQUIRED": "Die Technologie/Ressource erforderlich ist",
+      "PHONE_REQUIRED": "Die Telefonnummer ist erforderlich",
+      "VALUE_REQUIRED": "Der Wert ist erforderlich",
+      "EXTENSION_REQUIRED": "Die Verlängerung ist erforderlich",
+      "PRIORITY_REQUIRED": "Die Priorität ist erforderlich",
+      "NAME_MUST_VALID_PATTERN": "Der Name muss in einem gültigen Format geschrieben werden",
+      "APPLICATION_REQUIRED": "Die Anwendung ist erforderlich",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Timeout muss größer als oder gleich",
+      "MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die max. Länge muss größer als oder gleich",
+      "RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Wiederholung muss größer als oder gleich",
+      "WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Nachlese Zeit muss größer als oder gleich",
+      "WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Das Gewicht muss größer als oder gleich",
+      "ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Häufigkeit verkünden muss größer als oder gleich",
+      "MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Min Frequenz ankündigen muss größer als oder gleich",
+      "PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die periodische Frequenz ankündigen muss größer als oder gleich",
+      "AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Arbeit nach Anruf Dauer muss größer als oder gleich",
+      "MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Verzögerung muss größer als oder gleich",
+      "POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Position muss größer als oder gleich",
+      "CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Den Schnitt stellen muss größer als oder gleich",
+      "MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Muss die Max Sekunden größer als oder gleich",
+      "MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Die Max Meldungen muss größer als oder gleich",
+      "MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Die Max Meldungen muss kleiner als oder gleich",
+      "CALLERIDALL_MUST_VALID_PATTERN": "Falsches Format",
+      "OUTBOUNDROUTE_REQUIRED": "Pflichtfeld",
+      "VARIABLE_REQUIRED": "Pflichtfeld",
+      "CALLER_ID_MUST_VALID_PATTERN": "Falsches Format",
+      "TRUNK_REQUIRED": "Pflichtfeld",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
+      "PROJECT_REQUIRED": "Pflichtfeld",
+      "PENALTY_REQUIRED": "Sie müssen einen Wert für die Strafe angeben"
     },
     "GENERAL": "Allgemein",
-    "TIMEOUT": "Max. Klingelzeit Nebenstelle",
+    "TIMEOUT": "Timeout",
     "MAXLENGTH": "Maximale Länge",
-    "RETRY": "Erneut versuchen",
-    "WRAPUPTIME": "Nacharbeitszeit",
-    "WEIGHT": "Gewichtung",
-    "JOINWHENEMPTY": "Beitreten, wenn leer",
-    "LEAVEWHENEMPTY": "Verlassen, wenn leer",
+    "RETRY": "Versuchen Sie es erneut",
+    "WRAPUPTIME": "-Zeit",
+    "WEIGHT": "Gewicht",
+    "JOINWHENEMPTY": "Melden Sie wenn sie leer sind",
+    "LEAVEWHENEMPTY": "Wenn sie leer lassen",
     "HELP": {
-      "TIMEOUT": "Zeitüberschreitung Klingeln (Sekunden)",
-      "MAXLENGTH": "Maximaler Anrufer in der Warteschlange. Wenn Wert 0, dann keine Begrenzung.",
-      "RETRY": "Definiert wie Lange (Sekunden) auf eine Antwort des Agenten gewartet wird, bevor der Anruf beim nächsten Agenten klingelt",
-      "WRAPUPTIME": "Zeit (in Sekunden), in welcher der Agent nach einem Anruf nicht verfügbar ist",
-      "WEIGHT": "Gewichtung der Warteschlangen untereinander, sofern die Agenten auf mehr als einer Warteschlange arbeiten",
-      "JOINWHENEMPTY": "Definiert, ob ein Anruf in die Warteschleife eintreten kann, wenn keine Agenten verfügbar sind",
-      "LEAVEWHENEMPTY": "Trennt den Anruf in der Warteschleife, sofern keine Agenten verfügbar sind",
-      "ANNOUNCEFREQUENCY": "Definiert, wie oft dem Anrufer die aktuelle Warteposition und/oder die erwartete Wartezeit angesagt wird. (0 zum Deaktivieren dieser Funktion)",
-      "MINANNOUNCEFREQUENCY": "Minimale Ansage der Warteposition/Wartezeit. Nützlich, wenn der Anrufer die Warteposition oft wechselt",
-      "PERIODICANNOUNCEFREQUENCY": "Intervall für sich Wiederholende Ansagen an den Anrufer",
-      "ANNOUNCEPOSITIONLIMIT": "Warteposition wird nur ab dem eingestellten Wert angesagt",
-      "AFTERCALLWORKDURATION": "Die Dauer der Nacharbeit nach einem Anruf (Sekunden)",
-      "MEMBERDELAY": "Verzögert die Zustellung des Anrufes an den Agenten um den eingestellten Wert (Sekunden)",
-      "MUSICONHOLD": "Definiert die Wartemusik innerhalb der Warteschlange",
-      "ANNOUNCETOAGENT": "Spielt dem Agenten eine Mitteilung über den Ursprung des Anrufes vor der Annahme",
-      "RANDOMPERIODICANNOUNCE": "Bei \"Ja\" werden die definierten Ansagen in einer zufälligen Reihenfolge abgespielt",
-      "ANNOUNCEHOLDTIME": "Definiert, ob die geschätzte Wartezeit zusätzlich zur Wartemusik abgespielt wird. (Ja/Nein/nur ein Mal)",
-      "ANNOUNCECALLERPOSITION": "Definiert, ob die aktuelle Warteposition des Anrufers angesagt wird. Nein = Niemals; Ja = Immer; Limit = nur wenn innerhalb des Limits für Warteposition; Mehr = wenn überhalb des Limits für Warteposition",
-      "REPORTHOLDTIMEAGENT": "Der Agent bekommt nach dem Annehmen und Verbinden des Anrufes die Wartezeit des Kunden angesagt",
-      "PERIODICANNOUNCE": "Reihenfolge der Ansagen innerhalb der Warteschlange",
-      "HOLDTIMEANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für die Ansage der Wartezeit. Bsp: \"Ihre geschätzte Wartezeit beträgt\" Wenn leer, wird keine Ansage abgespielt",
-      "YOUARENEXTANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für die Ansage der ersten Position in der Warteschlange. Bsp: \"Der nächste freie Mitarbeiter wird Ihren Anruf in Kürze entgegennehmen\" Wenn leer, wird keine Ansage abgespielt",
-      "THEREAREANNOUNCE": "Erster Teil der Ansage für die bereits wartenden Anrufe. Bsp: \"Vor Ihnen befinden sich noch..:\"; Wenn leer, wird keine Ansage abgespielt",
-      "WAITINGCALLSANNOUNCE": "Zweiter Teil der Ansage für die bereits wartenden Anrufe. Bsp: \"...Anrufe in der Warteschlange\"; Wenn leer, wird keine Ansage abgespielt",
-      "ESTIMATEDHOLDTIMEANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für die Ansage der geschätzten Wartezeit. Bsp: \"Ihre aktuelle Wartezeit beträgt ca....\" Wenn leer, wird keine Ansage abgespielt",
-      "MINUTESANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für das Wort \"Minuten\". Wenn leer, wird keine Ansage abgespielt",
-      "MINUTEANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für das Wort \"Minute\". Wenn leer, wird keine Ansage abgespielt",
-      "SECONDSANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für das Wort \"Sekunden\". Wenn leer, wird keine Ansage abgespielt",
-      "THANKYOUANNOUNCE": "Wählt die Audiodatei (Hochladen einer Datei im Menü \"Werkzeuge\") für eine Ansage zum Dank. Bsp: \"Vielen Dank für Ihre Geduld\" Wenn leer, wird keine Ansage abgespielt",
-      "AFTERCALLWORK": "Wenn aktiviert, wird der Agent nach jedem Anruf in eine zeitlich definierbare Pause zur Nacharbeit gesetzt",
-      "AUTOPAUSE": "Legt fest, ob der Agent in eine automatische Pause gesetzt wird, sofern dieser den aktuellen Anruf nicht innerhalb der definierten Zeit entgegennimmt. Wenn ja, wird der Agent in allen zugewiesenen Kampagnen auf Pause gesetzt. ",
-      "RINGINUSE": "Aktivieren/Deaktivieren der Anrufzustellung wenn der Status der Nebenstelle Besetzt ist",
-      "TIMEOUTRESTART": "Wenn ja, wird die Zeitüberschreitung bei Agenten mit \"Besetzt\" oder \"Verbindungsfehler\"-Status übersprungen",
-      "CONTEXT": "Ermöglicht einem Anrufer, durch Drücken einer einzelnen Taste, die Warteschlange zu verlassen.",
-      "SETINTERFACEVARIABLES": "Wenn aktiviert, können aufgenommene Variabeln vor einem Anruf an den Agenten weitergegeben werden. (Siehe Wiki)",
-      "SETQUEUEVARIABLES": "Wenn aktiviert, können aufgenommene Variabeln nach dem Verlassen der Warteschlange an den Agenten weitergegeben werden. (Siehe Wiki)",
-      "SETQUEUEENTRYVARIABLES": "Wenn aktiviert, können aufgenommene Variabeln beim Eintreten in die Warteschlange an den Agenten weitergegeben werden. (Siehe Wiki)",
-      "RECORDING": "Automatische Gesprächsaufzeichnung Aktivieren/Deaktivieren",
-      "VOICEMAIL_CONTEXT": "Kontext für Voicemail",
+      "TIMEOUT": "Gibt die Anzahl von Sekunden an, die das Gerät.",
+      "MAXLENGTH": "Gibt die maximale Anzahl der Anrufer, die in der Warteschlange. Ein Wert von Null bedeutet, dass eine unbegrenzte Anzahl von Anrufern in der Warteschlange sind erlaubt.",
+      "RETRY": "Gibt die Anzahl der Sekunden, die gewartet wird, bevor das nächste Mitglied in die Warteschlange, wenn der Wert für die Zeitüberschreitung erschöpft ist, während versucht wird, den ein Mitglied der Warteschlange.",
+      "WRAPUPTIME": "Die Anzahl der Sekunden, die ein Mitglied in einer Warteschlange verfügbar, nachdem Sie einen Anruf.",
+      "WEIGHT": "Legt das Gewicht einer Warteschlange. Eine Warteschlange mit einem höheren Gewicht definiert werden erste Priorität, wenn Mitglieder, die mit mehreren Warteschlangen.",
+      "JOINWHENEMPTY": "Steuert, ob ein Anrufer wird zur Warteschlange hinzugefügt werden, wenn keine Mitglieder verfügbar sind.",
+      "LEAVEWHENEMPTY": "Zur Kontrolle, ob die Anrufer aus der Warteschlange, wenn die Mitglieder nicht mehr bereit sind, Anrufe zu beantworten.",
+      "ANNOUNCEFREQUENCY": "Legt fest, wie oft sollten wir den Anrufer ankündigen und/oder geschätzte Wartezeit in der Warteschlange. Setzen Sie diesen Wert auf Null, um die Funktion zu deaktivieren.",
+      "MINANNOUNCEFREQUENCY": "Gibt die minimale Zeit, die verstreichen müssen, bevor wir Ihnen die Anrufer in der Warteschlange wieder. Dieser wird verwendet, wenn der Anrufer die Position kann sich häufig ändern, um zu verhindern, dass der Anrufer hören mehrere Updates in einem kurzen Zeitraum.",
+      "PERIODICANNOUNCEFREQUENCY": "Gibt an, wie oft wir sollten regelmäßige Ansagen, die dem Anrufer vorgespielt werden.",
+      "ANNOUNCEPOSITIONLIMIT": "Sie kann verwendet werden, wenn Sie definiert haben, verkünden-Position entweder als Begrenzung oder mehr.",
+      "AFTERCALLWORKDURATION": "Die Dauer der Pause durch die Option \"Arbeit nach Anruf",
+      "MEMBERDELAY": "Sie kann verwendet werden, wenn Sie wollen, dass es eine Verzögerung, bevor der Anrufer und Mitglied der Warteschlange, die miteinander verbunden sind.",
+      "MUSICONHOLD": "Setzt die Musik klasse verwendet werden, die von einer bestimmten Warteschlange an.",
+      "ANNOUNCETOAGENT": "Für die Wiedergabe einer Ansage auf den Agenten, der den Anruf entgegengenommen hat, ihn wissen zu lassen, was der Anrufer die Warteschlange aus.",
+      "RANDOMPERIODICANNOUNCE": "Falls auf Ja eingestellt, wird die festgelegte regelmäßige Mitteilungen in einer zufälligen Reihenfolge.",
+      "ANNOUNCEHOLDTIME": "Legt fest, ob die geschätzte Wartezeit gespielt werden sollte zusammen mit den regelmäßigen Ankündigungen.",
+      "ANNOUNCECALLERPOSITION": "Legt fest, ob es sich bei dem Anrufer seine Position in der Warteschlange mitgeteilt werden sollten. Wenn die Einstellung Nein lautet, die Position wird nicht bekannt gegeben. Falls auf Ja eingestellt, wird die Position des Anrufers wird immer bekannt gegeben. Wenn der Wert überschritten wird, wird der Anrufer hört ihre Position in der Warteschlange nur, wenn er sich innerhalb der Grenze von AK-Position. Wenn der Wert auf Mehr, hört der Anrufer ihre Position, wenn es über die Zahl von AK-Position.",
+      "REPORTHOLDTIMEAGENT": "Die Berichterstattung über die CLI des Anrufers mit der Zeit in der Warteschleife in der Warteschlange vor.",
+      "PERIODICANNOUNCE": "Eine Reihe von regelmäßigen Mitteilungen gespielt zu werden, in der Reihenfolge wiedergegeben, in der sie definiert sind.",
+      "HOLDTIMEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Hold\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "YOUARENEXTANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Sie sind jetzt in erster Linie\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "THEREAREANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Es gibt\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "WAITINGCALLSANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Wartende Anrufe\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "ESTIMATEDHOLDTIMEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Die voraussichtliche Wartezeit ist\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "MINUTESANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"min\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "MINUTEANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"min\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "SECONDSANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Sekunden\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "THANKYOUANNOUNCE": "Wenn nicht definiert, wird die Standardeinstellung (\"Vielen Dank für Ihre Geduld.\"). Wenn Sie auf einen leeren Wert, wird die Aufforderung werden nicht gespielt.",
+      "AFTERCALLWORK": "Wenn der Agent aktiv ist, wird auf eine Pause nach einer abgeschlossenen Anruf in der Warteschlange",
+      "AUTOPAUSE": "Aktiviert/Deaktiviert die automatische Unterbrechung der Mitglieder, die es versäumen, um einen Anruf zu beantworten. Wenn aktiv, wird diese Mitgliedstaaten angehalten zu werden in allen Warteschlangen er Mitglied ist.",
+      "RINGINUSE": "Verwendet werden, um zu vermeiden, Senden von Anrufen an Mitglieder, deren Status im Einsatz ist.",
+      "TIMEOUTRESTART": "Falls auf Ja eingestellt, wird das Timeout für einen Agenten zu beantworten, wenn entweder ein Besetztzeichen oder wird mit dem Status \"Überlastung des Kanals.",
+      "CONTEXT": "Ermöglicht einem Anrufer zu beenden, die die Warteschlange durch Drücken einer einzigen Taste MFV-Ziffer. Wenn Sie einen Kontext angegeben ist und der Anrufer gibt eine Zahl, Ziffer wird versuchen, die angepasst werden können, im Rahmen festgelegt, und es wird auch weiterhin die Ausführung Nummernplan.",
+      "SETINTERFACEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)",
+      "SETQUEUEVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange und kurz vor dem Anrufer die Warteschlange verlassen einige Variablen werden(siehe wiki)",
+      "SETQUEUEENTRYVARIABLES": "Falls auf Ja eingestellt, kurz vor dem Anrufer, die mit einer Warteschlange, die einige Variablen werden(siehe wiki)",
+      "RECORDING": "Aktivieren der Aufzeichnung",
+      "VOICEMAIL_CONTEXT": "Im Rahmen der relativen Erweiterung.",
       "NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
       "CALLERIDALL": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
       "CALLER_ID": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
-      "MANDATORYDISPOSITIONPAUSEID": "Agentenstatus während der Qualifizierung eines Kontaktes",
-      "SERVICELEVEL": "Einstellungen für Service-Level (Standard = 0, kein SL).  (Anrufe werden innerhalb des Service Level-Zeitrahmens beantwortet)",
-      "MONITORFORMAT": "Definiert das Dateiformat für Gesprächsaufzeichnungen. Wenn leer, findet keine Gesprächsaufzeichnung statt.",
+      "MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, der während der Zwangsdisposition festgelegt werden soll",
+      "SERVICELEVEL": "Zweite Einstellungen für Service Level (Standard = 0, kein SL). Wird für Service Level-Statistiken verwendet (Anrufe werden innerhalb des Service Level-Zeitrahmens beantwortet)",
+      "MONITORFORMAT": "Gibt das Format der Aufnahmedatei an. Wenn es auf 'inaktiv' gesetzt ist, werden Anrufe nicht aufgezeichnet",
       "SAVE_ROUTES": "Die Einstellungen der Route wurden geändert. Bitte nicht vergessen, zu Speichern."
     },
-    "MUSICONHOLD": "Wartemusik",
-    "ANNOUNCETOAGENT": "Ansagenachricht für Agenten",
-    "ANNOUNCEMENTS": "Ansagen",
-    "ADVANCED": "Erweitert",
-    "ANNOUNCEFREQUENCY": "Ansagefrequenz",
-    "MINANNOUNCEFREQUENCY": "Min. Frequenz Ansage",
-    "PERIODICANNOUNCEFREQUENCY": "Frequenz wiederkehrende Ansagen",
-    "RANDOMPERIODICANNOUNCE": "Zufälliges Abspielen der Ansagen",
-    "ANNOUNCEHOLDTIME": "Wartezeit ansagen",
-    "ANNOUNCECALLERPOSITION": "Warteposition ansagen",
-    "ANNOUNCEPOSITIONLIMIT": "Limit für Ansage Warteposition",
-    "REPORTHOLDTIMEAGENT": "Wartezeit dem Agenten ansagen",
-    "PERIODICANNOUNCE": "Wiederkehrende Ansagen",
-    "HOLDTIMEANNOUNCE": "Audiodatei für Ansage Wartezeit",
-    "YOUARENEXTANNOUNCE": "Audiodatei für Ansage der ersten Position",
-    "THEREAREANNOUNCE": "1. Teil Audiodatei für Ansage der bereits wartenden Anrufer",
-    "WAITINGCALLSANNOUNCE": "2. Teil Audiodatei für Ansage der bereits wartenden Anrufer",
-    "ESTIMATEDHOLDTIMEANNOUNCE": "Audiodatei für die Information zur geschätzten Wartezeit",
-    "MINUTESANNOUNCE": "Audiodatei für die Ansage \"Minuten\"",
-    "MINUTEANNOUNCE": "Audiodatei für die Ansage \"Minute\" ",
-    "SECONDSANNOUNCE": "Audiodatei für die Ansage \"Sekunden\"",
-    "THANKYOUANNOUNCE": "Audiodatei für die Ansage mit Dank für Geduld",
-    "AUTOPAUSE": "Automatische Pause bei keiner Antwort",
-    "AFTERCALLWORK": "Nacharbeit",
-    "AFTERCALLWORKDURATION": "Dauer Nacharbeit",
-    "RINGINUSE": "Klingeln bei Besetzt",
-    "MEMBERDELAY": "Anrufsverzögerung",
-    "TIMEOUTRESTART": "Zeitüberschreitung neu Starten",
-    "MONITORFORMAT": "Format für Gesprächsaufzeichnungen",
-    "SETINTERFACEVARIABLES": "Interface Variabeln definieren",
-    "SETQUEUEVARIABLES": "Warteschlangenvariabeln definieren",
-    "SETQUEUEENTRYVARIABLES": "Variabeln bei Eintritt definieren",
+    "MUSICONHOLD": "Musik auf Halten",
+    "ANNOUNCETOAGENT": "Geben Sie Agent",
+    "ANNOUNCEMENTS": "Ankündigungen",
+    "ADVANCED": "Erweiterte",
+    "ANNOUNCEFREQUENCY": "Frequenz ankündigen",
+    "MINANNOUNCEFREQUENCY": "Minimale Frequenz ankündigen",
+    "PERIODICANNOUNCEFREQUENCY": "Periodische Frequenz ankündigen",
+    "RANDOMPERIODICANNOUNCE": "Random Periodische verkünden",
+    "ANNOUNCEHOLDTIME": "Geben Sie Zeit",
+    "ANNOUNCECALLERPOSITION": "Position des Anrufers bekannt",
+    "ANNOUNCEPOSITIONLIMIT": "Geben Position Limit",
+    "REPORTHOLDTIMEAGENT": "Bericht Agenten",
+    "PERIODICANNOUNCE": "Periodische verkünden",
+    "HOLDTIMEANNOUNCE": "Zeit in der Warteschleife verkünden",
+    "YOUARENEXTANNOUNCE": "\"Sie sind weiter' verkünden",
+    "THEREAREANNOUNCE": "'Es gibt' verkünden",
+    "WAITINGCALLSANNOUNCE": "Wartende Anrufe,",
+    "ESTIMATEDHOLDTIMEANNOUNCE": "Geschätzte Zeit halten,",
+    "MINUTESANNOUNCE": "Minuten ankündigen",
+    "MINUTEANNOUNCE": "Minute verkünden",
+    "SECONDSANNOUNCE": "Sekunden,",
+    "THANKYOUANNOUNCE": "'Vielen Dank' verkünden",
+    "AUTOPAUSE": "Auto Pause",
+    "AFTERCALLWORK": "Arbeit nach Anruf",
+    "AFTERCALLWORKDURATION": "Arbeit nach Anruf Dauer",
+    "RINGINUSE": "Ring in Verwendung",
+    "MEMBERDELAY": "Die Verzögerung",
+    "TIMEOUTRESTART": "Timeout starten",
+    "MONITORFORMAT": "Aufzeichnungsformat",
+    "SETINTERFACEVARIABLES": "Die Interface- Variablen",
+    "SETQUEUEVARIABLES": "Die Warteschlange Variablen",
+    "SETQUEUEENTRYVARIABLES": "Die Warteschlange ENTRY-Variablen",
     "VARIABLE": "Variable",
-    "CONTEXT": "Kontext Austritt aus Warteschlange",
+    "CONTEXT": "Kontext",
     "SAVE": "Speichern",
     "SETTINGS": "Einstellungen",
-    "INBOUNDROUTES": "Eingehende Routen",
+    "INBOUNDROUTES": "Ankommende Routen",
     "PHONENUMBER": "Telefonnummer",
     "ADD_INBOUNDROUTE": "Eingehende Route hinzufügen",
-    "EDIT_INBOUNDROUTE": "Eingehende Route bearbeiten",
-    "DELETE_INBOUNDROUTE": "Eingehende Route löschen",
-    "ACTIONS": "Routing",
-    "OUTBOUNDROUTES": "Ausgehende Routen",
-    "DESTINATIONPATTERN": "Ziel-Pattern",
+    "EDIT_INBOUNDROUTE": "Route für eingehende Anrufe bearbeiten.",
+    "DELETE_INBOUNDROUTE": "Löschen der Route für eingehende Anrufe",
+    "ACTIONS": "Aktionen",
+    "OUTBOUNDROUTES": "Abgehende Routen",
+    "DESTINATIONPATTERN": "Ziel Muster",
     "ADD_OUTBOUNDROUTE": "Ausgehende Route hinzufügen",
-    "EDIT_OUTBOUNDROUTE": "Ausgehende Route bearbeiten",
-    "DELETE_OUTBOUNDROUTE": "Ausgehende Route löschen",
-    "CUTDIGITS": "Ziffern abschneiden",
-    "RECORDING": "Aufzeichnung",
+    "EDIT_OUTBOUNDROUTE": "Abgehende Route bearbeiten",
+    "DELETE_OUTBOUNDROUTE": "Abgehende Route löschen",
+    "CUTDIGITS": "Die Ziffern",
+    "RECORDING": "Aufnahme",
     "RECORDINGFORMAT": "Aufzeichnungsformat",
     "INTERNALROUTES": "Interne Routen",
-    "ADD_INTERNALROUTE": "Interne Route hinzufügen",
+    "ADD_INTERNALROUTE": "Fügen Sie interne Routen",
     "EDIT_INTERNALROUTE": "Interne Route bearbeiten",
-    "DELETE_INTERNALROUTE": "Interne Route löschen",
+    "DELETE_INTERNALROUTE": "Interne Routen löschen",
     "CONTEXTS": "Kontexte",
-    "ADD_CONTEXT": "Kontext hinzufügen",
+    "ADD_CONTEXT": "Rahmen hinzufügen",
     "EDIT_CONTEXT": "Kontext bearbeiten",
-    "DELETE_CONTEXT": "Kontext löschen",
-    "VOICEMAILS": "Voicemails",
-    "ADD_VOICEMAIL": "Voicemail hinzufügen",
-    "EDIT_VOICEMAIL": "Voicemail bearbeiten",
+    "DELETE_CONTEXT": "Löschen von Rahmen",
+    "VOICEMAILS": "Von Voicemails",
+    "ADD_VOICEMAIL": "Fügen Sie Voicemail",
+    "EDIT_VOICEMAIL": "Bearbeiten von Voicemail",
     "DELETE_VOICEMAIL": "Voicemail löschen",
-    "FULLNAME": "Vollständiger Name",
+    "FULLNAME": "Voller Name",
     "EMAIL": "E-Mail",
     "MAILBOX": "Mailbox",
     "PASSWORD": "Passwort",
     "CONFIRM_PASSWORD": "Passwort bestätigen",
     "TIMEZONE": "Zeitzone",
-    "ATTACH": "Anhang",
-    "ENVELOPE": "Datum und Zeit ansagen",
-    "DELETE": "Datei Löschen nach E-Mailversand",
+    "ATTACH": "Befestigen Sie",
+    "ENVELOPE": "Umschlag",
+    "DELETE": "Löschen",
     "EMAILBODY": "E-Mail-Text",
-    "EMAILSUBJECT": "E-Mail Betreff",
-    "MAXSECONDS": "Max. Länge der Nachricht (Sekunden)",
-    "MAXMESSAGES": "Max. Nachrichten in Mailbox",
+    "EMAILSUBJECT": "Betreff der E-Mail",
+    "MAXSECONDS": "In Sekunden",
+    "MAXMESSAGES": "Max. Nachrichten",
     "MESSAGES": "Nachrichten",
     "SORT": "Sortieren",
-    "ADD_MUSICONHOLD": "Wartemusik hinzufügen",
-    "MUSICONHOLDS": "Wartemusik",
-    "EDIT_MUSICONHOLD": "Wartemusik bearbeiten",
-    "DELETE_MUSICONHOLD": "Wartemusik löschen",
+    "ADD_MUSICONHOLD": "Hinzufügen von Musik auf Halten",
+    "MUSICONHOLDS": "Musik auf Halten",
+    "EDIT_MUSICONHOLD": "Bearbeiten Musik auf Halten",
+    "DELETE_MUSICONHOLD": "Löschen Sie Musik auf Halten",
     "DIRECTORY": "Verzeichnis",
     "AUDIOFILES": "Audiodateien",
-    "RECORDINGS": "Aufzeichnungen",
-    "CHANSPY": "Listen-In (Chanspy)",
+    "RECORDINGS": "Aufnahmen",
+    "CHANSPY": "ChanSpy",
     "PREFIX": "Präfix",
     "OPTIONS": "Optionen",
-    "AUTH": "Authentifizierung",
-    "ADD_CHANSPY": "Listen-In hinzufügen",
-    "EDIT_CHANSPY": "Listen-In bearbeiten",
-    "DELETE_CHANSPY": "Listen-In löschen",
+    "AUTH": "Auth",
+    "ADD_CHANSPY": "Fügen Sie ChanSpy",
+    "EDIT_CHANSPY": "Bearbeiten Sie ChanSpy",
+    "DELETE_CHANSPY": "Löschen Sie ChanSpy",
     "AGENTS": "Agenten",
     "TELEPHONES": "Telefone",
     "QUEUES": "Warteschlangen",
-    "QUEUE_CALLS": "Anrufe in Warteschlange",
-    "QUEUE_PARAMETERS": "Warteschlangen-Parameter",
+    "QUEUE_CALLS": "Anrufe aus einer Warteschlange",
+    "QUEUE_PARAMETERS": "Queue Parameter",
     "ABANDONED_CALLS": "Abgebrochene Anrufe",
     "OUTBOUND_CALLS": "Ausgehende Anrufe",
     "AGI": "AGI",
-    "DIAL": "Wählen",
+    "DIAL": "Kurzwahl",
     "CALLYSQUARE": "CallySquare",
-    "INTERNALDIAL": "Intern wählen",
-    "EXTERNALDIAL": "Extern wählen",
-    "RINGGROUP": "Rufgruppe",
+    "INTERNALDIAL": "Interne Wahl",
+    "EXTERNALDIAL": "Externes Wählen",
+    "RINGGROUP": "Ring-Gruppe",
     "PLAYBACK": "Wiedergabe",
     "QUEUE": "Warteschlange",
-    "SET": "Einstellen (Set)",
+    "SET": "Set",
     "VOICEMAIL": "Voicemail",
     "GOTO": "Gehe zu",
     "HANGUP": "Auflegen",
-    "CUSTOM": "Benutzerdefiniert",
-    "PROJECT": "Call-Flow Projekt",
-    "TECHNOLOGY/RESOURCE": "Technologie-/Ressource (Z.B. SIP/1003)",
+    "CUSTOM": "Benutzerdefinierte",
+    "PROJECT": "Cally-Square Projekt",
+    "TECHNOLOGY/RESOURCE": "Technologie-/Ressourcen",
     "URL": "URL",
-    "EDIT_APP": "Anwendung bearbeiten",
-    "EDIT_INTERVAL": "Zeitintervall bearbeiten",
+    "EDIT_APP": "Anwendung bearbeiten.",
+    "EDIT_INTERVAL": "Intervall bearbeiten",
     "DELETE_APP": "Anwendung löschen",
-    "INTERVALS": "Zeitintervalle",
+    "INTERVALS": "Intervalle",
     "USER": "Benutzer",
-    "TRUNK": "SIP-Trunk",
+    "TRUNK": "Amtsleitung",
     "PHONE": "Telefon",
     "AUDIO_FILES": "Audiodateien",
-    "ANNOUNCE_OVERRIDES": "Ansage überschreiben",
+    "ANNOUNCE_OVERRIDES": "Überschreibt ankündigen",
     "MACRO": "Makro",
     "GOSUB": "GoSub",
     "RULE": "Regel",
     "POSITION": "Position",
-    "ANSWER": "Antwort vom System",
+    "ANSWER": "Antwort",
     "VALUE": "Wert",
     "MAILBOX@CONTEXT": "Mailbox@Kontext",
-    "EXTENSION": "Nebenstelle",
+    "EXTENSION": "Erweiterung",
     "PRIORITY": "Priorität",
-    "HANGUP_CAUSE": "Auflegegrund",
-    "OUTBOUNDDIAL": "Ausgehend wählen",
-    "CALLER_ID": "Anrufer-ID",
+    "HANGUP_CAUSE": "Ursache auflegen",
+    "OUTBOUNDDIAL": "Wählen Sie für abgehende Anrufe",
+    "CALLER_ID": "Die Anrufer-ID",
     "NO_MESSAGE_AVAILABLE": "Keine Meldungen vorhanden",
     "NO_SOUND_AVAILABLE": "Kein Ton verfügbar",
-    "VOICERECORDINGS": "Sprachaufzeichnungen",
-    "CHANSPIES": "Listen-Ins",
-    "VOICE": "Anrufe",
+    "VOICERECORDINGS": "Sprachaufnahmen",
+    "CHANSPIES": "Chan Spies",
+    "VOICE": "Voice",
     "REALTIME": "Echtzeit",
-    "ID": "ID",
+    "ID": "Id",
     "VOICEMAIL_CONTEXT": "Kontext",
     "NO_MOHSOUND_AVAILABLE": "Keine Wartemusik verfügbar",
     "FILE": "Datei",
-    "ADD_MOHSOUND": "Wartemusik hinzufügen",
-    "DOWNLOAD_MOHSOUND": "Wartemusik herunterladen",
-    "DELETE_MOHSOUND": "Wartemusik löschen",
+    "ADD_MOHSOUND": "Hinzufügen von Musik auf Halten sound",
+    "DOWNLOAD_MOHSOUND": "Download Music-on-Hold sound",
+    "DELETE_MOHSOUND": "Löschen Sie Music On Hold sound",
     "UNIQUEID": "Eindeutige ID",
     "AGENT": "Agent",
     "TYPE": "Typ",
     "RATING": "Bewertung",
     "AUDIO": "Audio",
     "DATE": "Datum",
-    "NEW_VOICEQUEUE": "Neue Anruf-Warteschlange",
-    "NEW_INBOUNDROUTE": "Neue eingehende Route",
-    "NEW_OUTBOUNDROUTE": "Neue ausgehende Route",
-    "NEW_INTERNALROUTE": "Neue interne Route",
-    "NEW_CONTEXT": "Neuer Kontext",
+    "NEW_VOICEQUEUE": "Neue Stimme der Warteschlange",
+    "NEW_INBOUNDROUTE": "Neue Route für eingehende Anrufe",
+    "NEW_OUTBOUNDROUTE": "Neue abgehende Route",
+    "NEW_INTERNALROUTE": "Neue interne Routen",
+    "NEW_CONTEXT": "Neue Kontext",
     "NEW_VOICEMAIL": "Neue Voicemail",
-    "NEW_MUSICONHOLD": "Neue Wartemusik",
-    "NEW_CHANSPY": "Neues Listen-In",
-    "PENALTY": "Verzögerung",
-    "ADD_TEAM_TO_VOICEQUEUE": "Team zur Warteschlange hinzufügen",
-    "ADD_AGENT_TO_VOICEQUEUE": "Agenten zur Warteschlange hinzufügen",
-    "EDIT_DIAL": "Kurzwahl bearbeiten",
+    "NEW_MUSICONHOLD": "Neue Musik auf Halten",
+    "NEW_CHANSPY": "Neue ChanSpy",
+    "PENALTY": "Strafe",
+    "ADD_TEAM_TO_VOICEQUEUE": "Team hinzufügen, Warteschlange",
+    "ADD_AGENT_TO_VOICEQUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
+    "EDIT_DIAL": "Wählen Sie Bearbeiten.",
     "EDIT_AGI": "AGI bearbeiten",
-    "EDIT_INTERNALDIAL": "Interne Kurzwahl bearbeiten",
-    "EDIT_EXTERNALDIAL": "Externe Kurzwahl bearbeiten",
-    "EDIT_RINGGROUP": "Rufgruppe bearbeiten",
-    "EDIT_PLAYBACK": "Wiedergabe bearbeiten",
-    "EDIT_QUEUE": "Warteschlange bearbeiten",
-    "EDIT_SET": "Set bearbeiten",
-    "EDIT_GOTO": "\"Gehe-zu\" bearbeiten",
-    "EDIT_HANGUP": "Auflegen bearbeiten",
-    "EDIT_CUSTOM": "Benutzerdef. Einstellungen bearbeiten",
+    "EDIT_INTERNALDIAL": "Interne Wahl bearbeiten.",
+    "EDIT_EXTERNALDIAL": "Wählen Sie Externen bearbeiten",
+    "EDIT_RINGGROUP": "Gruppe bearbeiten",
+    "EDIT_PLAYBACK": "Bearbeiten Sie die Wiedergabe",
+    "EDIT_QUEUE": "Bearbeiten von Warteschlangen",
+    "EDIT_SET": "Bearbeiten",
+    "EDIT_GOTO": "Gehe zu bearbeiten.",
+    "EDIT_HANGUP": "Bearbeiten Sie Auflegen",
+    "EDIT_CUSTOM": "Bearbeiten von benutzerdefinierten",
     "DURATION": "Dauer",
-    "RECEIVED_AT": "Eingegangen am",
+    "RECEIVED_AT": "Empfangen am",
     "YES": "Ja",
-    "NO": "Nein",
-    "HANGUPCAUSE_1": "1 = Nummer nicht zugewiesen",
-    "HANGUPCAUSE_16": "16 = Beenden durch Nutzer",
-    "HANGUPCAUSE_17": "17 = Besetzt",
-    "HANGUPCAUSE_18": "18 = Keine Antwort (Nebenstelle nicht verbunden)",
+    "NO": "Keine",
+    "HANGUPCAUSE_1": "1 = Nicht zugewiesene Nummer",
+    "HANGUPCAUSE_16": "16 = Normail Anruf löschen",
+    "HANGUPCAUSE_17": "17 = Benutzer besetzt",
+    "HANGUPCAUSE_18": "18 = Keine Reaktion (Telefon Gerät nicht verbunden)",
     "HANGUPCAUSE_21": "21 = Anruf abgelehnt",
-    "HANGUPCAUSE_22": "22 = Nummer geändert",
-    "HANGUPCAUSE_27": "27 = Ziel nicht verfügbar",
-    "HANGUPCAUSE_38": "38 = Netzwerk nicht verfügbar",
+    "HANGUPCAUSE_22": "22 = Anzahl geändert",
+    "HANGUPCAUSE_27": "27 = Ziel nicht in Ordnung",
+    "HANGUPCAUSE_38": "38 = Netzwerk aus, um",
     "HANGUPCAUSE_41": "41 = vorübergehende Störung",
-    "RANDOM": "Zufall",
+    "RANDOM": "Random",
     "ALPHABETICAL": "Alphabetisch",
     "NO_APPS_AVAILABLE": "Keine Anwendungen verfügbar",
-    "DOWNLOAD_VOICERECORDING": "Sprachaufzeichnung herunterladen",
-    "DELETE_VOICERECORDING": "Sprachaufzeichnung löschen",
-    "INTERNAL": "Intern",
-    "PHONE_STATE": "Status Nebenstelle",
-    "PHONE_STATUS": "SIP-Status Nebenstelle",
-    "TRUNK_STATUS": "Status Trunk",
+    "DOWNLOAD_VOICERECORDING": "Download Voice Recording",
+    "DELETE_VOICERECORDING": "Löschen von Voice Recording",
+    "INTERNAL": "Interne",
+    "PHONE_STATE": "Telefonstatus",
+    "PHONE_STATUS": "Telefonstatus",
+    "TRUNK_STATUS": "Trunk Status",
     "REGISTERED": "Registriert",
-    "UNREGISTERED": "Nicht registriert",
-    "LAGGED": "Verzögert",
+    "UNREGISTERED": "Unregistrierte",
+    "LAGGED": "Zurück",
     "REACHABLE": "Erreichbar",
     "UNREACHABLE": "Nicht erreichbar",
     "UNKNOWN": "Unbekannt",
-    "NOT_INUSE": "Nicht in Verwendung",
-    "INUSE": "In Verwendung",
+    "NOT_INUSE": "Nicht in Gebrauch",
+    "INUSE": "Im Einsatz",
     "BUSY": "Besetzt",
     "INVALID": "Ungültig",
     "UNAVAILABLE": "Nicht verfügbar",
     "RINGING": "Klingeln",
-    "ONHOLD": "Halten",
-    "RING": "Klingeln",
-    "UP": "Status",
-    "INFO": "Information",
-    "TRUNKS": "SIP-Trunks",
+    "ONHOLD": "Auf Halten",
+    "RING": "Ring",
+    "UP": "Bis",
+    "INFO": "Info",
+    "TRUNKS": "Amtsleitungen",
     "REGISTRY": "Registrierung",
-    "NO_REGISTRY": "Keine Registrierung",
+    "NO_REGISTRY": "Keine registry",
     "LOGGED_IN": "Angemeldet",
     "PAUSED": "Angehalten",
-    "WAITING": "Wartezustand",
-    "TALKING": "Im Gespräch",
-    "DID": "DID",
+    "WAITING": "Warten",
+    "TALKING": "Sprechen",
+    "DID": "Haben",
     "CALLER": "Anrufer",
-    "TOTAL": "Gesamt",
+    "TOTAL": "Insgesamt",
     "ANSWERED": "Beantwortet",
     "ABANDONED": "Abgebrochen",
-    "UNMANAGED": "Nicht bearbeitet",
-    "AVG_HOLD_TIME": "Durchschnittliche Wartezeit",
-    "AVG_DURATION": "Durchschnittliche Dauer",
-    "AVG_BILLABLE": "Durchschnittliche abrechenbare Zeit",
-    "SOURCE": "Ursprung",
+    "UNMANAGED": "Nicht verwaltete",
+    "AVG_HOLD_TIME": "Durchschnittl. Warteschleifenzeit",
+    "AVG_DURATION": "Av-Dauer",
+    "AVG_BILLABLE": "Avg Fakturierbaren",
+    "SOURCE": "Quelle",
     "DESTINATION": "Ziel",
     "REJECTED": "Abgelehnt",
     "FAILED": "Fehlgeschlagen",
-    "CALLED": "Angerufen",
+    "CALLED": "Aufgerufen",
     "CONNECTED": "Verbunden",
     "NO_RATING": "Keine Bewertung",
-    "EDIT_VOICERECORDING": "Sprachaufzeichnung bearbeiten",
+    "EDIT_VOICERECORDING": "Edit Voice Recording",
     "APPLICATION_NAME": "Name der Anwendung",
     "ARGUMENTS": "Argumente",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "ADD_AGENT_TO_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "DEFAULT_PAUSE": "Standard Pause",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Info",
+    "ADD_AGENT_TO_QUEUE": "Agent zur Warteschlange hinzufügen",
+    "DEFAULT_PAUSE": "Standard PAUSE",
     "PAUSE": "Pause",
-    "UNPAUSE": "Fortsetzen",
-    "REDIRECT_TO_NUMBER": "Weiterleiten an Nummer",
-    "REDIRECT_TO_AGENT": "Weiterleiten an Agenten",
-    "AGENTADD_VOICEQUEUE": "Agenten zu Warteschlange hinzufügen",
+    "UNPAUSE": "Pause",
+    "REDIRECT_TO_NUMBER": "Umleiten zu: Anzahl",
+    "REDIRECT_TO_AGENT": "Umleiten zu: Agent",
+    "AGENTADD_VOICEQUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
     "APPLICATION": "Anwendung",
     "FILES": "Dateien",
     "FORMAT": "Format",
     "MODE": "Modus",
     "RECORD": "Datensatz",
-    "TEAMADD_VOICEQUEUE": "Team zur Warteschlange hinzufügen",
-    "NEW_MOHSOUND": "Neue Wartemusik",
-    "DOWNLOAD_MESSAGE": "Herunterladen",
+    "TEAMADD_VOICEQUEUE": "Hinzufügen Team voicequeue",
+    "NEW_MOHSOUND": "Neue Musik auf Halten",
+    "DOWNLOAD_MESSAGE": "Download",
     "DELETE_MESSAGE": "Löschen",
     "QUEUE_PARAMS": "Queue Parameter",
-    "TOTAL_OFFERED": "Gesamt",
+    "TOTAL_OFFERED": "Insgesamt",
     "READY": "Bereit",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlangen hinzufügen",
-    "ALL_TEAMS": "Alle Teams",
+    "AGENTADD_QUEUE": "Agent hinzufügen Warteschlangen zu Voice",
+    "AGENTSADD_QUEUE": "Hinzufügen von Agenten der Warteschlange an die Mailbox",
+    "ALL_TEAMS": "Alle Mannschaften",
     "SELECTED_TEAMS": "Ausgewählte Teams",
     "ALL_AGENTS": "Alle Agenten",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "CLOSING": "Schließen",
     "TAGS": "Tags",
     "WAITING_FOR_AGENT": "Warten auf Agenten",
-    "EDIT_OUTBOUNDDIAL": "Wählverhalten ausgehend bearbeiten",
-    "ACCOUNTNAME": "Kontoname",
+    "EDIT_OUTBOUNDDIAL": "Bearbeiten ausgehenden DFÜ",
+    "ACCOUNTNAME": "Konto Name",
     "PAGE": "Seite",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "OF": "von",
-    "DISPOSITION": "Qualifizierung",
+    "OF": "Von",
+    "DISPOSITION": "Disposition",
     "WAITING_FOR_AGENTS": "Warten auf Agenten",
     "CHAT": "Chat",
     "MAIL": "E-Mail",
     "OPENCHANNEL": "Offener Kanal",
     "FAX": "Fax",
     "NO_AGENT_ONLINE": "Kein Agent Online",
-    "PARTIALPAUSE": "Teilpause",
+    "PARTIALPAUSE": "Teilweise Pause",
     "STATUS": "Status",
     "TIMER": "Timer",
     "ALL": "Alle",
     "IDLE": "Leerlauf",
-    "EDIT_TRUNK": "Trunk bearbeiten",
+    "EDIT_TRUNK": "Bearbeiten Trunk",
     "ACTIVE": "Aktiv",
-    "CLEAR": "Leeren",
+    "CLEAR": "klar",
     "CALLS": "Anrufe",
-    "STARTEDAT": "Startdatum",
-    "ENDEDAT": "Enddatum",
-    "TAG": "Tag",
-    "DETAILS": "Details",
+    "STARTEDAT": "Fing an bei",
+    "ENDEDAT": "Beendet bei",
+    "TAG": "Etikett",
+    "DETAILS": "Einzelheiten",
     "BILLABLESECONDS": "Abrechenbare Sekunden",
-    "ANSWEREDAT": "Beantwortet am",
-    "NOTE": "Notiz",
+    "ANSWEREDAT": "Beantwortet bei",
+    "NOTE": "Hinweis",
     "CLOSE": "Schließen",
-    "SELECT_DATE": "Startdatum auswählen",
-    "SELECT_TYPE": "Typ auswählen",
-    "ABANDONEDCALLS": "Abgebrochene Anrufe",
+    "SELECT_DATE": "Wählen Sie Startdatum",
+    "SELECT_TYPE": "Art auswählen",
+    "ABANDONEDCALLS": "Verlassene Warteschlangenanrufe",
     "ADD_VOICEPREFIX": "Präfix hinzufügen",
-    "AGENTADD_VOICEPREFIX": "Agentenpräfix hinzufügen",
+    "AGENTADD_VOICEPREFIX": "Fügen Sie Agent zu Präfix hinzu",
     "DELETE_VOICEPREFIX": "Präfix löschen",
     "EDIT_VOICEPREFIX": "Präfix bearbeiten",
     "NEW_VOICEPREFIX": "Neues Präfix",
-    "VOICEPREFIXES": "Präfixe für Sprachanrufe",
+    "VOICEPREFIXES": "Vorgegebene Präfixe",
     "CALLERIDALL": "Anruferidentifikation",
     "OUTBOUNDROUTE": "Ausgehende Route",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "PAUSE_TIME": "Zeit in Pause",
+    "LOGIN_TIME": "Login-Zeit",
+    "PAUSE_TIME": "Pausenzeit",
     "DIALER": "Dialer",
-    "INBOUND": "Eingehend",
+    "INBOUND": "Eingehende",
     "OUTBOUND": "Ausgehend",
-    "MANDATORYDISPOSITION": "Qualifikation erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "MANDATORYDISPOSITION": "Zwingende Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Status der obligatorischen Dispositionspause",
+    "TEAMS_ASSOCIATION": "Vereinigung der Mannschaften",
     "CANT_DOWNLOAD_THIS_FILE": "Diese Datei kann nicht heruntergeladen werden",
     "FILE_NOT_FOUND": "Datei nicht gefunden",
     "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
-    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
-    "STOP_SCREENRECORDING": "Bildschirmaufzeichnung beenden",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
-    "WRONG_EXTENSION": "Ungültige Dateiendung",
+    "START_SCREENRECORDING": "Starten Sie die Bildschirmaufnahme",
+    "STOP_SCREENRECORDING": "Beenden Sie die Bildschirmaufnahme",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "WRONG_EXTENSION": "Die Datei weist die falsche Erweiterung auf",
     "DOWNLOADTRANSCRIBE_VOICERECORDING": "Transkript herunterladen",
     "FAILUREREASON": "Fehlergrund",
-    "RUNSENTIMENT_VOICERECORDING": "Starten Sprachaufzeichnung inkl. Sentiment",
-    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Transkription und Sentinemtaufzeichnung starten",
-    "RUNTRANSCRIBE_VOICERECORDING": "Transkription starten",
-    "SENTIMENT": "Sentiment",
-    "SENTIMENTANALYSIS": "Sentiment-Analyse",
+    "RUNSENTIMENT_VOICERECORDING": "Führen Sie Sentiment",
+    "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Führen Sie Transcribe & Sentiment aus",
+    "RUNTRANSCRIBE_VOICERECORDING": "Führen Sie Transcribe aus",
+    "SENTIMENT": "Gefühl",
+    "SENTIMENTANALYSIS": "Stimmungsanalyse",
     "SENTIMENT_MIXED": "Gemischt",
     "SENTIMENT_NEGATIVE": "Negativ",
     "SENTIMENT_NEUTRAL": "Neutral",
     "SENTIMENT_POSITIVE": "Positiv",
     "TEXT": "Text",
     "TRANSCRIBE": "Transkribieren",
-    "TRANSCRIBESTATUS_COMPLETED": "Transkription abgeschlossen",
-    "TRANSCRIBESTATUS_FAILED": "Transkription fehlgeschlagen",
+    "TRANSCRIBESTATUS_COMPLETED": "Abgeschlossen",
+    "TRANSCRIBESTATUS_FAILED": "Gescheitert",
     "TRANSCRIBESTATUS_IN_PROGRESS": "In Bearbeitung",
     "TRANSCRIBESTATUS_NEW": "Neu",
     "TRANSCRIPT": "Transkript",
     "TRANSCRIPTANALYSIS": "Transkript & Analyse",
     "SERVICELEVEL": "Service Level",
-    "SECOND_LEVEL_DISPOSITION": "Qualifizierung 2. Ebene",
-    "THIRD_LEVEL_DISPOSITION": "Qualifizierung 3. Ebene",
+    "SECOND_LEVEL_DISPOSITION": "Disposition der zweiten Ebene",
+    "THIRD_LEVEL_DISPOSITION": "Disposition der dritten Ebene",
     "TEAMADD_VOICEPREFIX": "Team zum Präfix hinzufügen",
     "ALIAS": "Alias",
     "MAXCAPACITY": "Max. Kapazität erreicht",
index 971bf53..9a6a538 100644 (file)
@@ -11,7 +11,7 @@
     "TIMER": "Cronômetro",
     "ALL": "Todos",
     "IDLE": "Ocioso",
-    "EDIT_TRUNK": "Editar Tronco",
+    "EDIT_TRUNK": "Editar tronco",
     "GOTO_VOICEQUEUE": "Ir para filas de voz em tempo real",
     "GOTOREALTIME_VOICEQUEUE": "Ir para filas de voz em tempo real",
     "NAME": "Nome",
     "TRUNK": "Tronco",
     "PHONE": "Telefone",
     "AUDIO_FILES": "Arquivos de áudio",
-    "ANNOUNCE_OVERRIDES": "Anunciar Substituto",
+    "ANNOUNCE_OVERRIDES": "Anuncio substituto",
     "MACRO": "Macro",
     "GOSUB": "GoSub",
     "RULE": "Regra",
     "VOICERECORDINGS": "Gravações de voz",
     "CHANSPIES": "Espião",
     "VOICE": "Voz",
-    "REALTIME": "Tempo Real",
+    "REALTIME": "Tempo real",
     "ID": "Id",
     "VOICEMAIL_CONTEXT": "Contexto",
     "NO_MOHSOUND_AVAILABLE": "Não há música na espera disponível",
     "RANDOM": "Aleatória",
     "ALPHABETICAL": "Alfabético",
     "NO_APPS_AVAILABLE": "Não há aplicativos disponíveis",
-    "DOWNLOAD_VOICERECORDING": "Download Gravação de Voz",
+    "DOWNLOAD_VOICERECORDING": "Download gravação de voz",
     "DELETE_VOICERECORDING": "Excluir gravação de voz",
     "INTERNAL": "Interno",
     "PHONE_STATE": "Estado do telefone",
     "PHONE_STATUS": "Status do telefone",
-    "TRUNK_STATUS": "Status do Tronco",
+    "TRUNK_STATUS": "Status do tronco",
     "REGISTERED": "Registrado",
     "UNREGISTERED": "Não registrado",
     "LAGGED": "Atrasado",
     "RINGING": "Tocando",
     "ONHOLD": "Em espera",
     "RING": "Tocar",
-    "UP": "Cima",
+    "UP": "Up",
     "INFO": "Informação",
-    "TRUNKS": "Trunks",
+    "TRUNKS": "Troncos",
     "REGISTRY": "Registro",
     "NO_REGISTRY": "Nenhum registro",
     "LOGGED_IN": "Conectado (SIP conectado)",
     "CONNECTED": "Conectado",
     "NO_RATING": "Sem avaliação",
     "EDIT_VOICERECORDING": "Editar gravação de voz",
-    "APPLICATION_NAME": "Nome da Aplicação",
+    "APPLICATION_NAME": "Nome da aplicação",
     "ARGUMENTS": "Argumentos",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
     "ADD_AGENT_TO_QUEUE": "Adicionar agente à fila",
-    "DEFAULT_PAUSE": "PAUSA PADRÃO",
+    "DEFAULT_PAUSE": "Pausa Padrão",
     "PAUSE": "Pausa",
     "UNPAUSE": "Fim Pausa",
     "REDIRECT_TO_NUMBER": "Redirecionar para número",
     "AGENTADD_QUEUE": "Adicionar agente à fila de voz",
     "AGENTSADD_QUEUE": "Adicionar agentes à fila de voz",
     "ALL_TEAMS": "Todas as equipes",
-    "SELECTED_TEAMS": "Equipes Selecionadas",
+    "SELECTED_TEAMS": "Equipes selecionadas",
     "ALL_AGENTS": "Todos os agentes",
-    "SELECTED_AGENTS": "Agentes Selecionados",
+    "SELECTED_AGENTS": "Agentes selecionados",
     "CLOSING": "Fechamento",
     "TAGS": "Tags",
-    "WAITING_FOR_AGENT": "Aguardando Agentes",
+    "WAITING_FOR_AGENT": "Aguardando agentes",
     "EDIT_OUTBOUNDDIAL": "Editar discagem de saída",
     "ACCOUNTNAME": "Nome da conta",
     "PAGE": "Página",
-    "ROWSPERPAGE": "Linhas por Página",
+    "ROWSPERPAGE": "Linhas por página",
     "OF": "do",
     "DISPOSITION": "Disposição",
     "CHAT": "Chat",
     "WRONG_EXTENSION": "O arquivo apresenta a extensão incorreta",
     "DOWNLOADTRANSCRIBE_VOICERECORDING": "Baixar transcrição",
     "FAILUREREASON": "Razão da falha",
-    "RUNSENTIMENT_VOICERECORDING": "Executar Sentiment",
+    "RUNSENTIMENT_VOICERECORDING": "Executar sentimento",
     "RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Executar transcrição e sentimento",
     "RUNTRANSCRIBE_VOICERECORDING": "Executar a transcrição",
     "SENTIMENT": "Sentimento",
     "TRANSCRIPT": "Transcrição",
     "TRANSCRIPTANALYSIS": "Transcrição e Análise",
     "SERVICELEVEL": "Nível de serviço",
-    "SECOND_LEVEL_DISPOSITION": "Disposição de Segundo Nível",
+    "SECOND_LEVEL_DISPOSITION": "Disposição de segundo Nível",
     "THIRD_LEVEL_DISPOSITION": "Disposição de terceiro nível",
     "TEAMADD_VOICEPREFIX": "Adicionar equipe ao prefixo",
     "ALIAS": "Pseudônimo",
index be4500b..978ed15 100644 (file)
 {
   "WHATSAPP": {
     "ERRORS": {
-      "ACCESSKEYID_REQUIRED": "Zugangsschlüssel erforderlich",
-      "ACCOUNTSID_REQUIRED": "Konto-ID erforderlich",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung Transfer muss größer oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Transfer muss kleiner oder gleich sein als",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
-      "AGENT_REQUIRED": "Agent erforderlich",
-      "AGENT_TIMEOUT_REQUIRED": "Zeitüberschreitung Agent erforderlich",
-      "AUTHTOKEN_REQUIRED": "Token für Authentifizierung erforderlich",
-      "BOTNAME_REQUIRED": "BOT-Name erforderlich",
-      "COMMAND_REQUIRED": "Eingabe erforderlich",
-      "CONDITION_REQUIRED": "Bedingung erforderlich",
-      "DESCRIPTION_REQUIRED": "Beschreibung erforderlich",
-      "DISPOSITION_REQUIRED": "Qualifizierung erforderlich",
-      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität bei Bedingung nicht erfüllt muss größer oder gleich sein als",
-      "FALSEPRIORITY_REQUIRED": "Priorität bei nicht zutreffender Bedingung erforderlich",
-      "KEY_MAX_LENGTH": "Wert darf nicht länger als {{max}} Zeichen sein",
-      "KEY_REQUIRED": "Schlüssel erforderlich",
-      "LANGUAGE_REQUIRED": "Sprache erforderlich",
-      "LEXREGION_REQUIRED": "Lex-Region erforderlich",
-      "LIST_REQUIRED": "Liste erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "PausenID während Qualifizierung erforderlich",
-      "NAME_REQUIRED": "Name erforderlich",
-      "PHONE_REQUIRED": "Telefonnummer erforderlich",
-      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "PRIORITY_REQUIRED": "Priorität erforderlich",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung Warteschlangentransfer muss größer oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung Warteschlangentransfer muss kleiner oder gleich sein als",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
-      "QUEUE_REQUIRED": "Warteschlange erforderlich",
-      "SECRETACCESSKEY_REQUIRED": "Geheimer Zugangsschlüssel erforderlich",
-      "TAG_REQUIRED": "Tag erforderlich",
-      "TEXT_REQUIRED": "Text erforderlich",
-      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss größer oder gleich sein als",
-      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Zeitüberschreitung muss kleiner oder gleich sein als",
-      "TIMEOUT_REQUIRED": "Zeitüberschreitung erforderlich",
-      "TIMES_REQUIRED": "Zeiten erforderlich",
-      "TOKEN_REQUIRED": "Token erforderlich",
-      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Priorität bei Bedingung erfüllt muss größer oder gleich sein als",
-      "TRUEPRIORITY_REQUIRED": "Priorität bei zutreffender Bedingung erforderlich",
-      "TYPE_REQUIRED": "Typ erforderlich",
-      "VALUE_REQUIRED": "Wert erforderlich",
-      "VARIABLE_REQUIRED": "Variabel erforderlich",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wert muss größer oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wert muss kleiner oder gleich sein als",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Auf zugewiesenen Agenten warten erforderlich",
-      "WELCOMEMESSAGE_MAX_LENGTH": "Text darf nicht länger als {{max}} Zeichen sein",
-      "WELCOMEMESSAGE_REQUIRED": "Willkommensnachricht erforderlich",
-      "CLIENTEMAIL_REQUIRED": "Kunden E-Mail erforderlich",
-      "PRIVATEKEY_REQUIRED": "Privater Schlüssel erforderlich",
-      "PROJECTID_REQUIRED": "Projekt-ID erforderlich",
+      "ACCESSKEYID_REQUIRED": "Pflichtfeld",
+      "ACCOUNTSID_REQUIRED": "Pflichtfeld",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
+      "AGENT_REQUIRED": "Pflichtfeld",
+      "AGENT_TIMEOUT_REQUIRED": "Pflichtfeld",
+      "AUTHTOKEN_REQUIRED": "Pflichtfeld",
+      "BOTNAME_REQUIRED": "Pflichtfeld",
+      "COMMAND_REQUIRED": "Pflichtfeld",
+      "CONDITION_REQUIRED": "Pflichtfeld",
+      "DESCRIPTION_REQUIRED": "Pflichtfeld",
+      "DISPOSITION_REQUIRED": "Pflichtfeld",
+      "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "FALSEPRIORITY_REQUIRED": "Pflichtfeld",
+      "KEY_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "KEY_REQUIRED": "Pflichtfeld",
+      "LANGUAGE_REQUIRED": "Pflichtfeld",
+      "LEXREGION_REQUIRED": "Pflichtfeld",
+      "LIST_REQUIRED": "Pflichtfeld",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
+      "NAME_REQUIRED": "Pflichtfeld",
+      "PHONE_REQUIRED": "Pflichtfeld",
+      "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "PRIORITY_REQUIRED": "Pflichtfeld",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Pflichtfeld",
+      "QUEUE_REQUIRED": "Pflichtfeld",
+      "SECRETACCESSKEY_REQUIRED": "Pflichtfeld",
+      "TAG_REQUIRED": "Pflichtfeld",
+      "TEXT_REQUIRED": "Pflichtfeld",
+      "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "TIMEOUT_REQUIRED": "Pflichtfeld",
+      "TIMES_REQUIRED": "Pflichtfeld",
+      "TOKEN_REQUIRED": "Pflichtfeld",
+      "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "TRUEPRIORITY_REQUIRED": "Pflichtfeld",
+      "TYPE_REQUIRED": "Pflichtfeld",
+      "VALUE_REQUIRED": "Pflichtfeld",
+      "VARIABLE_REQUIRED": "Pflichtfeld",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein als",
+      "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Pflichtfeld",
+      "WELCOMEMESSAGE_MAX_LENGTH": "Der Wert muss eine maximale Länge von {{max}} haben",
+      "WELCOMEMESSAGE_REQUIRED": "Pflichtfeld",
+      "CLIENTEMAIL_REQUIRED": "Pflichtfeld",
+      "PRIVATEKEY_REQUIRED": "Pflichtfeld",
+      "PROJECTID_REQUIRED": "Pflichtfeld",
       "BASEURL_REQUIRED": "Base_URL erforderlich"
     },
     "HELP": {
-      "LIST": "Liste für die Zuordnung von Kontakten",
-      "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-      "MANDATORYDISPOSITIONPAUSEID": "PausenID bei erforderlicher Qualifizierung",
+      "LIST": "Kontaktmanagerliste zum Zuordnen von Kontakten",
+      "MANDATORYDISPOSITION": "Obligatorische Disposition",
+      "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
       "MOTIONPROXY": "Das Feld muss das folgende Format haben: <Protokoll>: // <IP-Adresse> [: <Port>]. Beispiel: https: //X.Y.Z.W",
-      "NAME": "Es werden nur Zahlen, Buchstaben und Sonderzeichen (._) unterstützt",
+      "NAME": "Es werden nur Zahlen, Buchstaben und bestimmte Zeichen (._) unterstützt",
       "RECEIVEURL": "Dies ist die automatisch generierte API-Zeichenfolge, die Sie zum Empfangen der Nachrichten in Ihrem Konto von Ihrem WhatsApp Connector-Anbieter verwenden müssen (POST-Methode muss verwendet werden): Klicken Sie auf die Schaltfläche in der Zwischenablage, um sie zu kopieren",
-      "WELCOMEMESSAGE": "Erste Nachricht bei eintreffen einer neuen Interaktion"
+      "WELCOMEMESSAGE": "Dies ist die erste Antwortnachricht, die an neue Interaktionen gesendet wird"
     },
-    "ACCESSKEYID": "Access-Key ID",
-    "ACCOUNTSID": "Konto-ID",
-    "ACTIONS": "Routing",
+    "ACCESSKEYID": "Zugriffsschlüssel-ID",
+    "ACCOUNTSID": "Konto-SID",
+    "ACTIONS": "Aktionen",
     "ADD_NOTE": "Notiz hinzufügen",
-    "ADD_WHATSAPPACCOUNT": "WhatsApp-Konto hinzufügen",
-    "ADD_WHATSAPPCANNEDANSWER": "WhatsApp Textvorlage hinzufügen",
-    "ADD_WHATSAPPDISPOSITION": "WhatsApp Qualifizierung hinzufügen",
+    "ADD_WHATSAPPACCOUNT": "Hinzufügen",
+    "ADD_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort hinzufügen",
+    "ADD_WHATSAPPDISPOSITION": "WhatsApp Disposition hinzufügen",
     "ADD_WHATSAPPQUEUE": "WhatsApp-Warteschlange hinzufügen",
-    "ADVANCED": "Erweitert",
+    "ADVANCED": "Fortgeschrittene",
     "AGENT": "Agent",
-    "AGENTADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "AGENTADD_WHATSAPPACCOUNT": "Agenten zum WhatsApp-Konto hinzufügen",
-    "AGENTADD_WHATSAPPQUEUE": "Agenten zur Warteschlange hinzufügen",
+    "AGENTADD_QUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
+    "AGENTADD_WHATSAPPACCOUNT": "Agent zum WhatsApp-Konto hinzufügen",
+    "AGENTADD_WHATSAPPQUEUE": "Agent zur WhatsApp-Warteschlange hinzufügen",
     "AGENTS": "Agenten",
-    "AGENTSADD_QUEUE": "Agenten zur Warteschlange hinzufügen",
-    "AGENTTRANSFER": "Transfer an Agenten erlauben",
-    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung Agententransfer",
-    "AGENT_TIMEOUT": "Zeitüberschreitung Agent",
+    "AGENTSADD_QUEUE": "Hinzufügen von Agenten zur WhatsApp-Warteschlange",
+    "AGENTTRANSFER": "Agententransfer",
+    "AGENTTRANSFERTIMEOUT": "Zeitüberschreitung bei der Agentenübertragung",
+    "AGENT_TIMEOUT": "Agent Timeout",
     "ALL": "Alles",
     "ALL_AGENTS": "Alle Agenten",
     "ALL_TEAMS": "Alle Teams",
     "AMAZONLEX": "AmazonLex",
-    "AUTHTOKEN": "Authentifizierungs-Token",
+    "AUTHTOKEN": "Auth Token",
     "AUTOREPLY": "Automatische Antwort",
     "BACK": "Zurück",
-    "BOTNAME": "BOT-Name",
+    "BOTNAME": "Bot Name",
     "BUSY": "Beschäftigt",
-    "CANNEDANSWERS": "Textvorlagen",
-    "CANNED_ANSWER_NOT_FOUND": "Keine Textvorlagen gefunden",
-    "CANNED_ANSWER_SEARCH": "Nach Textvorlagen suchen",
+    "CANNEDANSWERS": "Vordefinierte Antworten",
+    "CANNED_ANSWER_NOT_FOUND": "Es wurden keine vordefinierten Antworten gefunden",
+    "CANNED_ANSWER_SEARCH": "Geben Sie einen Text ein, um eine vordefinierte Antwort zu suchen",
     "CAPACITY": "Kapazität",
     "CLOSE": "Schließen",
     "CLOSED": "Geschlossen",
     "CLOSEMETHOD": "Methode schließen",
     "CLOSEURL": "URL schließen",
-    "COMMAND": "Eingabe",
+    "COMMAND": "Befehl",
     "CONDITION": "Bedingung",
     "CONTACT": "Kontakt",
-    "CREATED_AT": "Erstellt am",
-    "DEFAULT_PAUSE": "Standardpause",
+    "CREATED_AT": "Hergestellt in",
+    "DEFAULT_PAUSE": "STANDARD PAUSE",
     "DELETE": "Löschen",
     "DELETE_INTERACTION": "Interaktion löschen",
     "DELETE_SELECTED": "Ausgewählte löschen",
     "DELETE_WHATSAPPACCOUNT": "WhatsApp-Konto löschen",
-    "DELETE_WHATSAPPCANNEDANSWER": "Textvorlage löschen",
-    "DELETE_WHATSAPPDISPOSITION": "Qualifizierung löschen",
+    "DELETE_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort löschen",
+    "DELETE_WHATSAPPDISPOSITION": "WhatsApp-Disposition löschen",
     "DELETE_WHATSAPPQUEUE": "WhatsApp-Warteschlange löschen",
     "DESCRIPTION": "Beschreibung",
-    "DIALOGFLOW": "Google DialogFlow",
-    "DISPOSITION": "Qualifizierung",
-    "DISPOSITIONS": "Qualifizierungen",
-    "DOWNLOAD_INTERACTION": "Interaktion herunterladen",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Herunterladen ohne Anhänge",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Herunterladen inkl. Anhänge",
-    "EDIT_AGENT": "Agenten bearbeiten",
-    "EDIT_AMAZONLEX": "Lex-Konfiguration bearbeiten",
+    "DIALOGFLOW": "DialogFlow",
+    "DISPOSITION": "Anordnung",
+    "DISPOSITIONS": "Dispositionen",
+    "DOWNLOAD_INTERACTION": "Herunterladen",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Ohne Anhänge herunterladen",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+    "EDIT_AGENT": "Agent bearbeiten",
+    "EDIT_AMAZONLEX": "Bearbeiten Sie die Lex-Konfiguration",
     "EDIT_AUTOREPLY": "Automatische Antwort bearbeiten",
-    "EDIT_CLOSE": "Bearbeitung abschließen",
-    "EDIT_DIALOGFLOW": "DialogFlow-Konfiguration bearbeiten",
-    "EDIT_GOTOIF": "Bedingung bearbeiten und Priorität zuweisen",
-    "EDIT_GOTOP": "\"GeheZu\" bearbeiten",
-    "EDIT_NOOP": "Log-Erstellung bearbeiten",
+    "EDIT_CLOSE": "Bearbeiten Schließen",
+    "EDIT_DIALOGFLOW": "Bearbeiten Sie die DialogFlow-Konfiguration",
+    "EDIT_GOTOIF": "Bearbeiten Sie Gotoif",
+    "EDIT_GOTOP": "Gotop bearbeiten",
+    "EDIT_NOOP": "Noop bearbeiten",
     "EDIT_QUEUE": "Warteschlange bearbeiten",
     "EDIT_SYSTEM": "System bearbeiten",
     "EDIT_TAG": "Tag bearbeiten",
     "EDIT_WHATSAPPACCOUNT": "WhatsApp-Konto bearbeiten",
-    "EDIT_WHATSAPPCANNEDANSWER": "Textvorlage bearbeiten",
-    "EDIT_WHATSAPPDISPOSITION": "Whatsapp-Qualifizierung bearbeiten",
-    "EDIT_WHATSAPPQUEUE": "Whatsapp Warteschlange bearbeiten",
-    "FALSEPRIORITY": "Priorität, wenn nicht erfüllt (false)",
-    "GENERAL": "Allgemein",
-    "GOTOIF": "GeheZuWenn (GoToIf)",
-    "GOTOP": "Priorität zuweisen (GoToP)",
-    "GOTOREALTIME_WHATSAPPQUEUE": "Direkt zur Echtzeit-Warteschlange",
-    "GO_TO_WHATSAPPACCOUNTS": "Direkt zum WhatsApp-Konto",
-    "ID": "ID",
+    "EDIT_WHATSAPPCANNEDANSWER": "Vordefinierte Antwort bearbeiten",
+    "EDIT_WHATSAPPDISPOSITION": "WhatsApp-Disposition bearbeiten",
+    "EDIT_WHATSAPPQUEUE": "Bearbeiten Sie die WhatsApp-Warteschlange",
+    "FALSEPRIORITY": "Falsche Priorität",
+    "GENERAL": "Allgemeines",
+    "GOTOIF": "Gotoif",
+    "GOTOP": "Zum Seitenanfang",
+    "GOTOREALTIME_WHATSAPPQUEUE": "Wechseln Sie zur WhatsApp-Warteschlange in Echtzeit",
+    "GO_TO_WHATSAPPACCOUNTS": "Gehe zu Konto",
+    "ID": "Ich würde",
     "IDLE": "Leerlauf",
     "INSERT_MESSAGE_HERE": "Nachricht hier einfügen",
     "INTERACTIONS": "Interaktionen",
-    "INTERACTIONS_WHATSAPPACCOUNT": "Zu den Interaktionen gehen",
+    "INTERACTIONS_WHATSAPPACCOUNT": "Gehen Sie zu Interaktionen",
     "KEY": "Schlüssel",
     "LANGUAGE": "Sprache",
     "LASTMESSAGE": "Letzte Nachricht",
-    "LEXREGION": "LexRegion",
-    "LIST": "Liste",
-    "LOGGED_IN": "Angemeldet",
-    "LOGIN_TIME": "Zeit angemeldet",
-    "LOGOUT": "Abgemeldet",
-    "MANDATORYDISPOSITION": "Qualifizierung erforderlich",
-    "MANDATORYDISPOSITIONPAUSEID": "PausenID während Qualifizierung",
+    "LEXREGION": "Region",
+    "LIST": "Aufführen",
+    "LOGGED_IN": "Eingeloggt (SIP verbunden)",
+    "LOGIN_TIME": "Anmeldezeit",
+    "LOGOUT": "Ausloggen",
+    "MANDATORYDISPOSITION": "Obligatorische Disposition",
+    "MANDATORYDISPOSITIONPAUSEID": "Pause, um zu verwenden, wenn die obligatorische Disposition aktiviert ist",
     "MORE": "Mehr",
-    "MOTIONPROXY": "Proxy",
+    "MOTIONPROXY": "Proxy- oder Bewegungsdomäne",
     "MULTI_SELECT_TOGGLE": "Mehrfachauswahl umschalten",
     "NAME": "Name",
     "NEW_WHATSAPPACCOUNT": "Neues WhatsApp-Konto",
-    "NEW_WHATSAPPCANNEDANSWER": "Neue WhatsApp-Textvorlage",
-    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Qualifizierung",
+    "NEW_WHATSAPPCANNEDANSWER": "Neue vordefinierte WhatsApp-Antwort",
+    "NEW_WHATSAPPDISPOSITION": "Neue WhatsApp-Disposition",
     "NEW_WHATSAPPQUEUE": "Neue WhatsApp-Warteschlange",
-    "NOOP": "Log erstellen (NoOp)",
-    "NOTE": "Anmerkung",
+    "NOOP": "Noop",
+    "NOTE": "Hinweis",
     "NOTIFICATION": "Benachrichtigung",
-    "NOTIFICATIONSHAKE": "Schütteln",
-    "NOTIFICATIONSOUND": "Sound abspielen",
+    "NOTIFICATIONSHAKE": "Shake",
+    "NOTIFICATIONSOUND": "Klang",
     "NOTIFICATIONTEMPLATE": "Vorlage",
     "NO_AGENT_ONLINE": "Kein Agent online",
-    "NO_AVAILABLE_INFO": "Keine Informationen verfügbar",
-    "NO_INTERACTION_AVAILABLE": "Keine neuen Interaktionen verfügbar",
-    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Keine Textvorlagen verfügbar",
-    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Keine Qualifizierungen verfügbar",
+    "NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
+    "NO_INTERACTION_AVAILABLE": "Keine Interaktionen verfügbar",
+    "NO_WHATSAPPCANNEDANSWER_AVAILABLE": "Keine vordefinierten WhatsApp-Antworten verfügbar",
+    "NO_WHATSAPPDISPOSITION_AVAILABLE": "Keine WhatsApp-Dispositionen verfügbar",
     "NO_WHATSAPP_ACCOUNTS_AVAILABLE": "Keine WhatsApp-Konten verfügbar",
     "OF": "von",
     "OPENED": "Geöffnet",
     "PAGE": "Seite",
     "PARTIALPAUSE": "Teilpause",
     "PAUSE": "Pause",
-    "PAUSED": "in Pause",
-    "PAUSE_TIME": "Zeit in Pause",
+    "PAUSED": "Pause",
+    "PAUSE_TIME": "Pausenzeit",
     "PHONE": "Telefon",
     "PRIORITY": "Priorität",
     "PROXY": "Proxy",
     "QUEUE": "Warteschlange",
     "QUEUES": "Warteschlangen",
-    "QUEUETRANSFER": "Transfer an Warteschlange erlauben",
-    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung für Warteschlangentransfer",
+    "QUEUETRANSFER": "Warteschlangenübertragung",
+    "QUEUETRANSFERTIMEOUT": "Zeitüberschreitung bei der Warteschlangenübertragung",
     "READY": "Bereit",
     "REALTIME": "Echtzeit",
-    "RECEIVEURL": "URL für Erhalt",
+    "RECEIVEURL": "URL erhalten",
     "REFRESH_INTERACTIONS": "Interaktionen aktualisieren",
-    "REMOTE": "Remote",
+    "REMOTE": "Fernbedienung",
     "ROWSPERPAGE": "Zeilen pro Seite",
-    "SAVE": "Speichern",
-    "SCREENRECORDING": "Bildschirmaufzeichnung",
+    "SAVE": "sparen",
+    "SCREENRECORDING": "Bildschirmaufzeichnung verwalten",
     "SEARCH_FOR_ANYONE": "Suche",
-    "SECRETACCESSKEY": "Geheimer Schlüssel",
+    "SECRETACCESSKEY": "Zugriffsschlüsselgeheimnis",
     "SELECTED": "Ausgewählt",
     "SELECTED_AGENTS": "Ausgewählte Agenten",
     "SELECTED_TEAMS": "Ausgewählte Teams",
-    "SELECT_ALL": "Alles auswählen",
-    "SELECT_NONE": "Nichts auswählen",
+    "SELECT_ALL": "Wählen Sie Alle",
+    "SELECT_NONE": "Nichts ausgewählt",
     "SEND": "Senden",
-    "SETTINGS": "Einstellungen",
-    "SPYINTERACTION": "Anzeigen",
-    "STARTEDAT": "Startdatum",
-    "START_SCREENRECORDING": "Bildschirmaufzeichnung starten",
+    "SETTINGS": "die Einstellungen",
+    "SPYINTERACTION": "Spionage-Interaktion",
+    "STARTEDAT": "Fing an bei",
+    "START_SCREENRECORDING": "Bildschirmaufnahme starten",
     "STATUS": "Status",
     "STOP_SCREENRECORDING": "Bildschirmaufzeichnung stoppen",
-    "STRATEGY": "Verteilungsstrategie",
+    "STRATEGY": "Strategie",
     "SYSTEM": "System",
-    "TAG": "Tag",
-    "TAGS": "Tags",
+    "TAG": "Etikett",
+    "TAGS": "Stichworte",
     "TEAMADD_WHATSAPPQUEUE": "Team zur WhatsApp-Warteschlange hinzufügen",
-    "TEAMS_ASSOCIATION": "Teamzuweisung",
+    "TEAMS_ASSOCIATION": "Mannschaftsverband",
     "TEXT": "Text",
-    "TIMEOUT": "Zeitüberschreitung",
+    "TIMEOUT": "Auszeit",
     "TIMER": "Timer",
-    "TIMES": "Zeiten",
-    "TO": "an",
-    "TOKEN": "Token",
-    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufzeichnung verfügbar",
-    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufzeichnung läuft",
-    "TRANSFER": "Weiterleiten",
-    "TRUEPRIORITY": "Priorität, wenn erfüllt (true)",
-    "TYPE": "Typ",
-    "UNPAUSE": "Pause abbrechen",
+    "TIMES": "Mal",
+    "TO": "Zu",
+    "TOKEN": "Zeichen",
+    "TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
+    "TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
+    "TRANSFER": "Transfer",
+    "TRUEPRIORITY": "Wahre Priorität",
+    "TYPE": "Art",
+    "UNPAUSE": "Pause beenden",
     "VALUE": "Wert",
-    "VARIABLE": "Variabel",
-    "WAITFORTHEASSIGNEDAGENT": "Auf zugewiesenen Agenten warten",
+    "VARIABLE": "Variable",
+    "WAITFORTHEASSIGNEDAGENT": "Warten Sie auf den zugewiesenen Agenten",
     "WAITING": "Warten",
     "WELCOMEMESSAGE": "Willkommensnachricht",
     "WHATSAPP": "WhatsApp Connector",
     "WHATSAPPACCOUNTS": "WhatsApp-Konten",
-    "WHATSAPPCANNEDANSWERS": "WhatsApp-Textvorlagen",
-    "WHATSAPPDISPOSITIONS": "WhatsApp-Qualifizierungen",
+    "WHATSAPPCANNEDANSWERS": "WhatsApp vordefinierte Antworten",
+    "WHATSAPPDISPOSITIONS": "WhatsApp Dispositionen",
     "WHATSAPPQUEUES": "WhatsApp-Warteschlangen",
-    "CLIENTEMAIL": "Kunden E-Mail",
+    "CLIENTEMAIL": "Kunden-E-Mail",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Dialogflow V2 bearbeiten",
-    "PRIVATEKEY": "Privater Schlüssel",
+    "PRIVATEKEY": "Privat Schlüssel",
     "PROJECTID": "Projekt-ID",
     "BASEURL": "Base_URL",
     "DELIVERYREPORTURL": "URL für Erhalt"
index 97549f4..8d833e7 100644 (file)
@@ -1,60 +1,60 @@
 {
   "WHATSAPP": {
     "ERRORS": {
-      "ACCESSKEYID_REQUIRED": "Campo Obrigatório",
-      "ACCOUNTSID_REQUIRED": "Campo Obrigatório",
+      "ACCESSKEYID_REQUIRED": "Campo obrigatório",
+      "ACCOUNTSID_REQUIRED": "Campo obrigatório",
       "AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
-      "AGENTTRANSFERTIMEOUT_REQUIRED": "Campo Obrigatório",
-      "AGENT_REQUIRED": "Campo Obrigatório",
-      "AGENT_TIMEOUT_REQUIRED": "Campo Obrigatório",
-      "AUTHTOKEN_REQUIRED": "Campo Obrigatório",
-      "BOTNAME_REQUIRED": "Campo Obrigatório",
-      "COMMAND_REQUIRED": "Campo Obrigatório",
-      "CONDITION_REQUIRED": "Campo Obrigatório",
-      "DESCRIPTION_REQUIRED": "Campo Obrigatório",
-      "DISPOSITION_REQUIRED": "Campo Obrigatório",
+      "AGENTTRANSFERTIMEOUT_REQUIRED": "Campo obrigatório",
+      "AGENT_REQUIRED": "Campo obrigatório",
+      "AGENT_TIMEOUT_REQUIRED": "Campo obrigatório",
+      "AUTHTOKEN_REQUIRED": "Campo obrigatório",
+      "BOTNAME_REQUIRED": "Campo obrigatório",
+      "COMMAND_REQUIRED": "Campo obrigatório",
+      "CONDITION_REQUIRED": "Campo obrigatório",
+      "DESCRIPTION_REQUIRED": "Campo obrigatório",
+      "DISPOSITION_REQUIRED": "Campo obrigatório",
       "FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "FALSEPRIORITY_REQUIRED": "Campo Obrigatório",
+      "FALSEPRIORITY_REQUIRED": "Campo obrigatório",
       "KEY_MAX_LENGTH": "O valor deve ter um comprimento máximo igual a {{max}}",
-      "KEY_REQUIRED": "Campo Obrigatório",
-      "LANGUAGE_REQUIRED": "Campo Mandtório",
-      "LEXREGION_REQUIRED": "Campo Obrigatório",
-      "LIST_REQUIRED": "Campo Obrigatório",
-      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo Obrigatório",
-      "NAME_REQUIRED": "Campo Obrigatório",
-      "PHONE_REQUIRED": "Campo Obrigatório",
+      "KEY_REQUIRED": "Campo obrigatório",
+      "LANGUAGE_REQUIRED": "Campo obrigatório",
+      "LEXREGION_REQUIRED": "Campo obrigatório",
+      "LIST_REQUIRED": "Campo obrigatório",
+      "MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obrigatório",
+      "NAME_REQUIRED": "Campo obrigatório",
+      "PHONE_REQUIRED": "Campo obrigatório",
       "PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "PRIORITY_REQUIRED": "Campo Obrigatório",
+      "PRIORITY_REQUIRED": "Campo obrigatório",
       "QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
-      "QUEUETRANSFERTIMEOUT_REQUIRED": "Campo Obrigatório",
-      "QUEUE_REQUIRED": "Campo Obrigatório",
-      "SECRETACCESSKEY_REQUIRED": "Campo Obrigatório",
-      "TAG_REQUIRED": "Campo Obrigatório",
-      "TEXT_REQUIRED": "Campo Obrigatório",
+      "QUEUETRANSFERTIMEOUT_REQUIRED": "Campo obrigatório",
+      "QUEUE_REQUIRED": "Campo obrigatório",
+      "SECRETACCESSKEY_REQUIRED": "Campo obrigatório",
+      "TAG_REQUIRED": "Campo obrigatório",
+      "TEXT_REQUIRED": "Campo obrigatório",
       "TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
-      "TIMEOUT_REQUIRED": "Campo Obrigatório",
-      "TIMES_REQUIRED": "Campo Obrigatório",
-      "TOKEN_REQUIRED": "Campo Obrigatório",
+      "TIMEOUT_REQUIRED": "Campo obrigatório",
+      "TIMES_REQUIRED": "Campo obrigatório",
+      "TOKEN_REQUIRED": "Campo obrigatório",
       "TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
-      "TRUEPRIORITY_REQUIRED": "Campo Obrigatório",
-      "TYPE_REQUIRED": "Campo Obrigatório",
-      "VALUE_REQUIRED": "Campo Obrigatório",
-      "VARIABLE_REQUIRED": "Campo Obrigatório",
+      "TRUEPRIORITY_REQUIRED": "Campo obrigatório",
+      "TYPE_REQUIRED": "Campo obrigatório",
+      "VALUE_REQUIRED": "Campo obrigatório",
+      "VARIABLE_REQUIRED": "Campo obrigatório",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
       "WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
-      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Campo Obrigatório",
+      "WAITFORTHEASSIGNEDAGENT_REQUIRED": "Campo obrigatório",
       "WELCOMEMESSAGE_MAX_LENGTH": "O valor deve ter um comprimento máximo igual a {{max}}",
-      "WELCOMEMESSAGE_REQUIRED": "Campo Obrigatório",
-      "CLIENTEMAIL_REQUIRED": "Campo Obrigatório",
-      "PRIVATEKEY_REQUIRED": "Campo Obrigatório",
-      "PROJECTID_REQUIRED": "Campo Obrigatório",
+      "WELCOMEMESSAGE_REQUIRED": "Campo obrigatório",
+      "CLIENTEMAIL_REQUIRED": "Campo obrigatório",
+      "PRIVATEKEY_REQUIRED": "Campo obrigatório",
+      "PROJECTID_REQUIRED": "Campo obrigatório",
       "BASEURL_REQUIRED": "Campo Obrigatório"
     },
     "HELP": {
-      "LIST": "Lista do gerenciador de contatos usada para associar contatos",
+      "LIST": "Lista do Gestão de Contatos usada para associar contatos",
       "MANDATORYDISPOSITION": "Disposição obrigatória",
       "MANDATORYDISPOSITIONPAUSEID": "Faça uma pausa para usar quando a disposição obrigatória estiver habilitada",
       "MOTIONPROXY": "O campo deve ter o seguinte formato: <protocol>: // <ipaddress> [: <port>]. Exemplo: https: //X.Y.Z.W",
     "BACK": "Costas",
     "BOTNAME": "Nome do bot",
     "BUSY": "Ocupado",
-    "CANNEDANSWERS": "Respostas enlatadas",
-    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta automática foi encontrada",
-    "CANNED_ANSWER_SEARCH": "Insira um texto para pesquisar uma resposta automática",
+    "CANNEDANSWERS": "Respostas pré-definidas",
+    "CANNED_ANSWER_NOT_FOUND": "Nenhuma resposta pré-definidas foi encontrada",
+    "CANNED_ANSWER_SEARCH": "Insira um texto para pesquisar uma resposta pré-definidas",
     "CAPACITY": "Capacidade",
     "CLOSE": "Perto",
     "CLOSED": "Fechadas",
     "CLOSEMETHOD": "Método Fechar",
     "CLOSEURL": "Fechar URL",
     "COMMAND": "Comando",
-    "CONDITION": "Doença",
+    "CONDITION": "Condição",
     "CONTACT": "Contato",
     "CREATED_AT": "Criado em",
-    "DEFAULT_PAUSE": "PAUSA PADRÃO",
+    "DEFAULT_PAUSE": "Pausa pafrão",
     "DELETE": "Excluir",
     "DELETE_INTERACTION": "Excluir interação",
     "DELETE_SELECTED": "Excluir selecionado",
     "DIALOGFLOW": "DialogFlow",
     "DISPOSITION": "Disposição",
     "DISPOSITIONS": "Disposições",
-    "DOWNLOAD_INTERACTION": "Baixar",
-    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Baixar sem anexos",
-    "DOWNLOAD_WITH_ATTACHMENTS": "Baixar com anexos",
-    "EDIT_AGENT": "Editar Agente",
-    "EDIT_AMAZONLEX": "Editar configuração Lex",
+    "DOWNLOAD_INTERACTION": "Download",
+    "DOWNLOAD_WITHOUT_ATTACHMENTS": "Download sem anexos",
+    "DOWNLOAD_WITH_ATTACHMENTS": "Download com anexos",
+    "EDIT_AGENT": "Editar agente",
+    "EDIT_AMAZONLEX": "Editar configuração AmazonLex",
     "EDIT_AUTOREPLY": "Editar resposta automática",
-    "EDIT_CLOSE": "Editar Fechar",
+    "EDIT_CLOSE": "Editar encerramento",
     "EDIT_DIALOGFLOW": "Editar configuração do DialogFlow",
     "EDIT_GOTOIF": "Editar Gotoif",
     "EDIT_GOTOP": "Editar Gotop",
     "EDIT_NOOP": "Editar Noop",
     "EDIT_QUEUE": "Editar fila",
-    "EDIT_SYSTEM": "Editar Sistema",
-    "EDIT_TAG": "Editar etiqueta",
+    "EDIT_SYSTEM": "Editar sistema",
+    "EDIT_TAG": "Editar TAG",
     "EDIT_WHATSAPPACCOUNT": "Editar conta WhatsApp",
     "EDIT_WHATSAPPCANNEDANSWER": "Editar",
     "EDIT_WHATSAPPDISPOSITION": "Editar disposição do WhatsApp",
     "EDIT_WHATSAPPQUEUE": "Editar fila de WhatsApp",
-    "FALSEPRIORITY": "Falsa Prioridade",
+    "FALSEPRIORITY": "Falsa prioridade",
     "GENERAL": "Geral",
     "GOTOIF": "Gotoif",
     "GOTOP": "Seja o melhor",
     "GOTOREALTIME_WHATSAPPQUEUE": "Vá para a fila de WhatsApp em tempo real",
     "GO_TO_WHATSAPPACCOUNTS": "Ir para a conta",
-    "ID": "Eu iria",
-    "IDLE": "Ocioso",
+    "ID": "Id",
+    "IDLE": "Disponível",
     "INSERT_MESSAGE_HERE": "Insira a mensagem aqui",
     "INTERACTIONS": "Interações",
     "INTERACTIONS_WHATSAPPACCOUNT": "Vá para Interações",
     "LEXREGION": "Região",
     "LIST": "Lista",
     "LOGGED_IN": "Conectado (SIP conectado)",
-    "LOGIN_TIME": "Hora de Login",
+    "LOGIN_TIME": "Hora de login",
     "LOGOUT": "Sair",
-    "MANDATORYDISPOSITION": "Disposição Obrigatória",
+    "MANDATORYDISPOSITION": "Disposição obrigatória",
     "MANDATORYDISPOSITIONPAUSEID": "Faça uma pausa para usar quando a disposição obrigatória estiver habilitada",
     "MORE": "Mais",
-    "MOTIONPROXY": "Domínio de proxy ou movimento",
+    "MOTIONPROXY": "Motion Proxy",
     "MULTI_SELECT_TOGGLE": "Alternância de seleção múltipla",
     "NAME": "Nome",
     "NEW_WHATSAPPACCOUNT": "Nova conta WhatsApp",
-    "NEW_WHATSAPPCANNEDANSWER": "Nova resposta predeterminada do WhatsApp",
+    "NEW_WHATSAPPCANNEDANSWER": "Nova resposta pré-definidas do WhatsApp",
     "NEW_WHATSAPPDISPOSITION": "Nova disposição do WhatsApp",
     "NEW_WHATSAPPQUEUE": "Nova fila de WhatsApp",
     "NOOP": "Noop",
     "SEARCH_FOR_ANYONE": "Procurar",
     "SECRETACCESSKEY": "Chave secreta de acesso",
     "SELECTED": "Selecionado",
-    "SELECTED_AGENTS": "Agentes Selecionados",
-    "SELECTED_TEAMS": "Times Selecionados",
+    "SELECTED_AGENTS": "Agentes selecionados",
+    "SELECTED_TEAMS": "Equipes selecionados",
     "SELECT_ALL": "Selecionar tudo",
     "SELECT_NONE": "Selecione nenhum",
     "SEND": "Enviar",
     "SETTINGS": "Configurações",
-    "SPYINTERACTION": "Interação de espião",
+    "SPYINTERACTION": "Espionar interação",
     "STARTEDAT": "Começou às",
     "START_SCREENRECORDING": "Iniciar gravação de tela",
     "STATUS": "Status",
     "WELCOMEMESSAGE": "Mensagem de boas-vindas",
     "WHATSAPP": "Conector WhatsApp",
     "WHATSAPPACCOUNTS": "Contas WhatsApp",
-    "WHATSAPPCANNEDANSWERS": "Respostas predeterminadas do WhatsApp",
-    "WHATSAPPDISPOSITIONS": "Dispositivos do WhatsApp",
-    "WHATSAPPQUEUES": "WhatsApp Queues",
+    "WHATSAPPCANNEDANSWERS": "Respostas pré-definidas do WhatsApp",
+    "WHATSAPPDISPOSITIONS": "Disposições do WhatsApp",
+    "WHATSAPPQUEUES": "WhatsApp Filas",
     "CLIENTEMAIL": "Email do cliente",
     "DIALOGFLOWV2": "Dialogflow V2",
     "EDIT_DIALOGFLOWV2": "Editar Dialogflow V2",
index 477aad5..c7b067f 100644 (file)
@@ -35,7 +35,7 @@
     "NOVEMBER": "Novembro",
     "DECEMBER": "Dezembro",
     "CHAT": "CHAT",
-    "ACTIVITY": "ATIVIDADE",
+    "ACTIVITY": "Atividade",
     "FRIENDS": "Amigos",
     "APP_SERVERS": "Servidores de Aplicativos",
     "USER_STATS": "Estatísticas do usuário",
     "NOTES": "Notas",
     "QUICK_SETTINGS": "Configurações rápidas",
     "NOTIFICATIONS": "Notificações",
-    "CLOUD_SYNC": "Sincronizar Nuvem",
-    "RETRO_THRUSTERS": "Retro Propulsores",
+    "CLOUD_SYNC": "Sincronizar nuvem",
+    "RETRO_THRUSTERS": "Retro propulsores",
     "RECENT": "Recente",
     "START_NEW_CHAT": "Começar novo Chat",
     "BACK": "Voltar",
     "CALL": "Chamada",
     "MORE": "Mais",
-    "SEND_MESSAGE": "Enviar Mensagem",
+    "SEND_MESSAGE": "Enviar mensagem",
     "REPLY_PLACEHOLDER": "Digite e aperte enter para enviar mensagem",
     "CONTACT_XCALLY_MOTION_SUPPORT": "Entre em contato com xCALLY Motion Support",
     "EXPIRATION_DATE": "Data de validade",
@@ -67,7 +67,7 @@
     "MESSENGER_DISABLED": "A mensagem interna está desativada para este agente!",
     "WARNING": "Aviso",
     "ERRORS": {
-      "NAME_REQUIRED": "Campo Obrigatório"
+      "NAME_REQUIRED": "Campo obrigatório"
     }
   }
 }
index 6af6092..c07a784 100644 (file)
     "NUM_NOTIFICATIONS": "إشعارات",
     "OPENCHANNEL": "اتمنا من كل زوجه قناة فتح",
     "SMS": "رسالة قصيرة",
-    "WHATSAPP": "ال WhatsApp"
+    "WHATSAPP": "ال WhatsApp",
+    "NO_AUTOANSWER_CONFIGURED": "لم يتم تكوين الرد التلقائي للقنوات"
   }
 }
index eac0bd8..62d6c2e 100644 (file)
     "NUM_NOTIFICATIONS": "Oznámení",
     "OPENCHANNEL": "Otevřený kanál",
     "SMS": "SMS",
-    "WHATSAPP": "Whatsapp"
+    "WHATSAPP": "Whatsapp",
+    "NO_AUTOANSWER_CONFIGURED": "Pro kanály není nakonfigurována žádná automatická odpověď"
   }
 }
index ffbb285..0d38f05 100644 (file)
     "NUM_NOTIFICATIONS": "Meddelelser",
     "OPENCHANNEL": "Åben kanal",
     "SMS": "SMS",
-    "WHATSAPP": "Whatsapp"
+    "WHATSAPP": "Whatsapp",
+    "NO_AUTOANSWER_CONFIGURED": "Intet autosvar konfigureret for kanaler"
   }
 }
index 0adf4ba..1e32641 100644 (file)
     "NUM_NOTIFICATIONS": "Benachrichtigungen",
     "OPENCHANNEL": "Offener Kanal",
     "SMS": "SMS",
-    "WHATSAPP": "WhatsApp"
+    "WHATSAPP": "WhatsApp",
+    "NO_AUTOANSWER_CONFIGURED": "Keine automatische Antwort für Kanäle konfiguriert"
   }
 }
index c1c3ad7..6099ef3 100644 (file)
@@ -29,7 +29,7 @@
     "SMS": "SMS",
     "OPENCHANNEL": "Openchannel",
     "FAX": "Fax",
-    "WHATSAPP": "Whatsapp",
+    "WHATSAPP": "Whatsapp connector",
     "WEBRTCSUPPORT": "WebRTC Support",
     "REGISTERED": "Registered",
     "NOT_REGISTERED": "Not registered",
@@ -40,6 +40,7 @@
     "CANCEL": "Cancel",
     "FILENAME": "File name",
     "STATUS": "Status",
+    "NO_AUTOANSWER_CONFIGURED": "No autoanswer configured for channels",
     "ACTIONS": "Actions",
     "SPEAKER": "Speaker",
     "RINGING": "Ringing tone",
index 1d7cc9a..a04a322 100644 (file)
     "NUM_NOTIFICATIONS": "Notificaciones",
     "OPENCHANNEL": "Canal abierto",
     "SMS": "SMS",
-    "WHATSAPP": "Whatsapp"
+    "WHATSAPP": "Whatsapp",
+    "NO_AUTOANSWER_CONFIGURED": "No hay respuesta automática configurada para los canales"
   }
 }
index 184add3..1c71c2f 100644 (file)
     "NUM_NOTIFICATIONS": "Märguanded",
     "OPENCHANNEL": "Avatud kanal",
     "SMS": "SMS",
-    "WHATSAPP": "Whatsapp"
+    "WHATSAPP": "Whatsapp",
+    "NO_AUTOANSWER_CONFIGURED": "Kanalite jaoks pole automaatset vastust seadistatud"
   }
 }
index cfe1d34..cc734a2 100644 (file)
     "NUM_NOTIFICATIONS": "اطلاعیه",
     "OPENCHANNEL": "کانال باز",
     "SMS": "پیامک",
-    "WHATSAPP": "واتساپ"
+    "WHATSAPP": "واتساپ",
+    "NO_AUTOANSWER_CONFIGURED": "هیچ پاسخ خودکار برای کانال ها پیکربندی نشده است"
   }
 }
index 3d92e58..e5e9d6c 100644 (file)
     "NUM_NOTIFICATIONS": "Ilmoitukset",
     "OPENCHANNEL": "Avoin kanava",
     "SMS": "tekstiviesti",
-    "WHATSAPP": "Whatsapp"
+    "WHATSAPP": "Whatsapp",
+    "NO_AUTOANSWER_CONFIGURED": "Kanaville ei ole määritetty automaattista vastausta"
   }
 }
index 9bbcaf5..baa128c 100644 (file)
     "NUM_NOTIFICATIONS": "Avis",
     "OPENCHANNEL": "Canal ouvert",
     "SMS": "SMS",
-    "WHATSAPP": "WhatsApp"
+    "WHATSAPP": "WhatsApp",
+    "NO_AUTOANSWER_CONFIGURED": "Aucune réponse automatique configurée pour les canaux"
   }
 }
index 069ce4f..d07d8c9 100644 (file)
     "NUM_NOTIFICATIONS": "התראות",
     "OPENCHANNEL": "ערוץ פתוח",
     "SMS": "סמס",
-    "WHATSAPP": "וואטסאפ"
+    "WHATSAPP": "וואטסאפ",
+    "NO_AUTOANSWER_CONFIGURED": "לא הוגדר תשובה אוטומטית עבור ערוצים"
   }
 }
index 665a579..253fd27 100644 (file)
     "NUM_NOTIFICATIONS": "सूचनाएं",
     "OPENCHANNEL": "ओपनचैनल",
     "SMS": "एसएमएस",
-    "WHATSAPP": "Whatsapp"
+    "WHATSAPP": "Whatsapp",
+    "NO_AUTOANSWER_CONFIGURED": "चैनलों के लिए कोई स्वतः उत्तर कॉन्फ़िगर नहीं किया गया"
   }
 }
index 5305370..d568d12 100644 (file)
     "OPENCHANNEL": "Nyílt csatorna",
     "SMS": "SMS",
     "WHATSAPP": "Whatsapp",
-    "PHONE2CALL": "Telefon a híváshoz"
+    "PHONE2CALL": "Telefon a híváshoz",
+    "NO_AUTOANSWER_CONFIGURED": "Nincs automatikus válasz konfigurálva a csatornákhoz"
   }
 }
index cdb770f..fdf5ce9 100644 (file)
     "NUM_NOTIFICATIONS": "Notifikasi",
     "OPENCHANNEL": "saluran terbuka",
     "SMS": "SMS",
-    "WHATSAPP": "ada apa"
+    "WHATSAPP": "ada apa",
+    "NO_AUTOANSWER_CONFIGURED": "Tidak ada jawaban otomatis yang dikonfigurasi untuk saluran"
   }
 }
index 6ae4616..d0b30a9 100644 (file)
     "NUM_NOTIFICATIONS": "Notifiche",
     "OPENCHANNEL": "Canale aperto",
     "SMS": "sms",
-    "WHATSAPP": "WhatsApp"
+    "WHATSAPP": "WhatsApp",
+    "NO_AUTOANSWER_CONFIGURED": "Nessuna risposta automatica configurata per i canali"
   }
 }
index 61673c4..28d1936 100644 (file)
     "NUM_NOTIFICATIONS": "通知",
     "OPENCHANNEL": "オープンチャネル",
     "SMS": "SMS",
-    "WHATSAPP": "Whatsapp"
+    "WHATSAPP": "Whatsapp",
+    "NO_AUTOANSWER_CONFIGURED": "チャネルに自動応答が設定されていません"
   }
 }
index 6a67e36..e7bb9e6 100644 (file)
     "NUM_NOTIFICATIONS": "알림",
     "OPENCHANNEL": "오픈채널",
     "SMS": "SMS",
-    "WHATSAPP": "왓츠앱"
+    "WHATSAPP": "왓츠앱",
+    "NO_AUTOANSWER_CONFIGURED": "채널에 대해 구성된 자동 응답이 없습니다."
   }
 }
index 0817df8..39081b5 100644 (file)
     "NUM_NOTIFICATIONS": "Pranešimai",
     "OPENCHANNEL": "Atviras kanalas",
     "SMS": "trumpoji žinutė",
-    "WHATSAPP": "Whatsapp"
+    "WHATSAPP": "Whatsapp",
+    "NO_AUTOANSWER_CONFIGURED": "Automatinis atsakymas kanalams nesukonfigūruotas"
   }
 }
index 2074cd1..593e563 100644 (file)
     "NUM_NOTIFICATIONS": "Paziņojumi",
     "OPENCHANNEL": "Atvērts kanāls",
     "SMS": "īsziņa",
-    "WHATSAPP": "Whatsapp"
+    "WHATSAPP": "Whatsapp",
+    "NO_AUTOANSWER_CONFIGURED": "Kanāliem nav konfigurēta automātiskā atbilde"
   }
 }
index 7b95ad0..6fd6f5b 100644 (file)
     "NUM_NOTIFICATIONS": "Meldingen",
     "OPENCHANNEL": "Open kanaal",
     "SMS": "sms",
-    "WHATSAPP": "Whatsapp"
+    "WHATSAPP": "Whatsapp",
+    "NO_AUTOANSWER_CONFIGURED": "Geen automatisch antwoord geconfigureerd voor kanalen"
   }
 }
index 7fbfe21..2de53b6 100644 (file)
     "NUM_NOTIFICATIONS": "Varsler",
     "OPENCHANNEL": "Åpen kanal",
     "SMS": "tekstmelding",
-    "WHATSAPP": "Hva skjer"
+    "WHATSAPP": "Hva skjer",
+    "NO_AUTOANSWER_CONFIGURED": "Ingen autosvar konfigurert for kanaler"
   }
 }
index 97af4b4..09d65fc 100644 (file)
     "NUM_NOTIFICATIONS": "Powiadomienia",
     "OPENCHANNEL": "Otwarty kanał",
     "SMS": "SMS",
-    "WHATSAPP": "Whatsapp"
+    "WHATSAPP": "Whatsapp",
+    "NO_AUTOANSWER_CONFIGURED": "Brak automatycznej odpowiedzi skonfigurowanej dla kanałów"
   }
 }
index 4f000e1..5ce0d41 100644 (file)
@@ -2,9 +2,9 @@
   "TOOLBAR": {
     "PREFIXES": "Prefixos",
     "CALL": "Chamada",
-    "ARABIC": "Árabe",
+    "ARABIC": "Arabic",
     "INDONESIAN": "Indonésio",
-    "RESETPASSWORD": "Redefinir Senha",
+    "RESETPASSWORD": "Redefinir senha",
     "PASSWORD_EXPIRE_REMAINING_DAYS": "Dias restantes antes de sua senha expirar",
     "BROWSER_COMPATIBILITY": "Compatibilidade do navegador [Chrome, Opera, Safari]",
     "RECORDING": "Gravação",
     "REGISTERED": "Registrado",
     "NOT_REGISTERED": "Não registrado",
     "WEBRTC_LICENSE_NOT_ENABELD": "A licença WebRTC não está ativada",
-    "ATTENDED_TRANSFER": "Transferência Assistida",
+    "ATTENDED_TRANSFER": "Transferência assistida",
     "TRANSFER": "Transferir",
     "TARGET": "Objetivo",
     "CANCEL": "Cancelar",
-    "FILENAME": "Nome do Arquivo",
+    "FILENAME": "Nome do arquivo",
     "STATUS": "Status",
     "ACTIONS": "Ações",
-    "SPEAKER": "Alto falante",
+    "SPEAKER": "Alto-falante",
     "RINGING": "Toque de celular",
     "MICROPHONE": "Microfone",
     "PROFILE": "Perfil",
     "SERVICES": "Serviços",
-    "AUDIO": "Audio",
+    "AUDIO": "Áudio",
     "FULLNAME": "Nome completo",
     "NAME": "Nome",
     "INTERNAL": "Interno",
@@ -46,7 +46,7 @@
     "SEARCH": "Procurar",
     "USER_SETTINGS": "Configurações do usuário",
     "TOGGLE_QUICK_PANEL": "Alternar painel rápido",
-    "SOMEONE_LOGGED_YOU_OUT": "Alguém desconectou, você quer ficar logado?",
+    "SOMEONE_LOGGED_YOU_OUT": "Alguém desconectou você, quer ficar logado?",
     "STAY_LOGGED": "Fique logado",
     "WARNING": "Aviso",
     "ENGLISH": "Inglês",
     "FRENCH": "Frances",
     "KOREAN": "Coreano",
     "SPANISH": "Espanhol",
-    "SWEDISH": "Sueco",
+    "SWEDISH": "Swedish",
     "RUSSIAN": "Russo",
     "GERMAN": "Alemão",
     "JAPANESE": "Japonês",
     "CHINESESIMPLIFIED": "Chinês simplificado",
     "CHINESETRADITIONAL": "Chinês tradicional",
-    "DUTCH": "Holandês",
+    "DUTCH": "Dutch",
     "FINNISH": "Finlandês",
-    "DANISH": "Dinamarquês",
-    "PORTUGUESE": "Portugues",
+    "DANISH": "Danish",
+    "PORTUGUESE": "Português(PT)",
     "NORWEGIAN": "Norueguês",
     "HINDI": "Hindi",
     "TURKISH": "Turco",
     "PERSIAN": "Persa",
     "LATVIAN": "Latvian",
     "POLISH": "Polonês",
-    "LOGIN_TIME": "Hora do Login",
+    "LOGIN_TIME": "Hora do login",
     "PAUSE_TIME": "Tempo de pausa",
     "PREVIEW": "Visualizar",
-    "CONFIRM_PASSWORD": "Confirme a Senha",
+    "CONFIRM_PASSWORD": "Confirme a senha",
     "NEW_PASSWORD": "Nova senha",
-    "OLD_PASSWORD": "Senha Antiga",
+    "OLD_PASSWORD": "Senha antiga",
     "SAVE": "Salvar",
     "TRIAL_VERSION": "Versão de teste",
     "PAUSE": "Pausa",
-    "RESUME": "Fim de Pausa",
+    "RESUME": "Fim de pausa",
     "NO_PAUSES_AVAILABLE": "Não há pausas disponíveis",
     "ERRORS": {
-      "FIELD_REQUIRED": "Campo Obrigatório",
-      "PASSWORD_REQUIRED": "Campo Obrigatório",
+      "FIELD_REQUIRED": "Campo obrigatório",
+      "PASSWORD_REQUIRED": "Campo obrigatório",
       "CONFIRM_NOT_MATCH": "As senhas não combinam",
       "SECURE_PASSWORD_PATTERN": "A senha deve ter pelo menos 8 caracteres e ter 1 caractere minúsculo, 1 caractere maiúsculo, 1 número e 1 caractere especial ~!? * @ # $% ^ & -_ = + [{]}.",
       "PASSWORD_OLDPASSWORD_MATCH": "A nova senha deve ser diferente da anterior"
     },
     "HEBREW": "Hebraico",
-    "BRAZILIAN": "Brasileiro",
+    "BRAZILIAN": "Português(BR)",
     "CZECH": "Tcheco",
-    "ESTONIAN": "estoniano",
+    "ESTONIAN": "Estonian",
     "CONFERENCE": "Conferência com 2 sessões ativas",
     "CHANGE_LANGUAGE_MESSAGE": "Lembre-se de atualizar a página para aplicar o suporte RTL (se ativado)",
     "CHANGE_LANGUAGE_TITLE": "Mudar idioma",
@@ -99,7 +99,7 @@
     "WEBRTC_MICROPHONE_NOT_AVAILABLE": "Nenhum microfone disponível",
     "WEBRTC_SPEAKER_NOT_AVAILABLE": "Nenhum alto-falante disponível",
     "NO_AVAILABLE_INFO": "Nenhuma informação disponível",
-    "LITHUANIAN": "lituano",
+    "LITHUANIAN": "Lituano",
     "NOTIFICATION_TITLE": "Nova notificação de {{sender}}",
     "NOTIFICATION_TITLE_RECIPIENT": "para {{destinatário}}",
     "USER_FORCE_LOGOUT": "{{ip}} fez login com suas credenciais.\nVários logins não são permitidos",
     "NUM_NOTIFICATIONS": "Notificações",
     "OPENCHANNEL": "Canal aberto",
     "SMS": "SMS",
-    "WHATSAPP": "Whatsapp"
+    "WHATSAPP": "Whatsapp",
+    "NO_AUTOANSWER_CONFIGURED": "Nenhuma resposta automática configurada para canais"
   }
 }
index c4a4134..116f014 100644 (file)
     "NUM_NOTIFICATIONS": "Notificações",
     "OPENCHANNEL": "Canal aberto",
     "SMS": "SMS",
-    "WHATSAPP": "Whatsapp"
+    "WHATSAPP": "Whatsapp",
+    "NO_AUTOANSWER_CONFIGURED": "Nenhuma resposta automática configurada para canais"
   }
 }
index c935b01..bdf5e94 100644 (file)
     "NUM_NOTIFICATIONS": "Уведомления",
     "OPENCHANNEL": "Открытый канал",
     "SMS": "смс",
-    "WHATSAPP": "WhatsApp"
+    "WHATSAPP": "WhatsApp",
+    "NO_AUTOANSWER_CONFIGURED": "Для каналов не настроен автоответчик"
   }
 }
index 0a7354c..242cd09 100644 (file)
     "NUM_NOTIFICATIONS": "Aviseringar",
     "OPENCHANNEL": "Öppen kanal",
     "SMS": "SMS",
-    "WHATSAPP": "Whatsapp"
+    "WHATSAPP": "Whatsapp",
+    "NO_AUTOANSWER_CONFIGURED": "Inget autosvar konfigurerat för kanaler"
   }
 }
index 6bd9402..b820917 100644 (file)
     "NUM_NOTIFICATIONS": "Bildirimler",
     "OPENCHANNEL": "açık kanal",
     "SMS": "SMS",
-    "WHATSAPP": "Naber"
+    "WHATSAPP": "Naber",
+    "NO_AUTOANSWER_CONFIGURED": "Kanallar için yapılandırılmamış otomatik yanıt yok"
   }
 }
index 69d5010..7c3c986 100644 (file)
     "NUM_NOTIFICATIONS": "通知",
     "OPENCHANNEL": "开放渠道",
     "SMS": "短信",
-    "WHATSAPP": "Whatsapp"
+    "WHATSAPP": "Whatsapp",
+    "NO_AUTOANSWER_CONFIGURED": "没有为频道配置自动应答"
   }
 }
index 5da9717..d0b7953 100644 (file)
     "NUM_NOTIFICATIONS": "通知",
     "OPENCHANNEL": "開放渠道",
     "SMS": "短信",
-    "WHATSAPP": "Whatsapp"
+    "WHATSAPP": "Whatsapp",
+    "NO_AUTOANSWER_CONFIGURED": "沒有為頻道配置自動應答"
   }
 }
index 2c51fce..85f6fcf 100644 (file)
@@ -66,7 +66,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.4e198ed1.js"></script>
+  <script src="scripts/app.4132798e.js"></script>
 
   <!-- CKEDITOR -->
   <script src="assets/plugins/ckeditor/ckeditor.js"></script>
similarity index 54%
rename from public/scripts/app.4e198ed1.js
rename to public/scripts/app.4132798e.js
index f61886d..f243986 100644 (file)
@@ -1 +1 @@
-!function(){"use strict";angular.module("app.auth",[])}(),function(){"use strict";angular.module("app.client-side-logging",[])}(),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","app.user-setting","app.client-side-logging"])}(),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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,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 t,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 t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],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","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,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,provider,key,email,ListId,active,service,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,provider,key,email,ListId,active,service,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,modernAuthentication,CloudProviderId",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})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",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,modernAuthentication,CloudProviderId",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],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){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,provider,key,email,ListId,active,service,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,provider,key,email,ListId,active,service,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,provider,key,email,ListId,active,service,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})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],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",function(e){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"],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,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",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,callAdditionalPhoneAfterMin,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,dialPreviewRecallmeReminder,callAdditionalPhoneAfterMin",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.hopperdate",{url:"/hopperdate",views:{"hopperdate@app":{templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",controller:"HopperdateController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1500,bodyClass:"motiondialer"})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.hopperdate",[]).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,level,ParentId",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){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,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs",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:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},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,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"admin,user",sort:"-updatedAt",userSetting:!0,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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",userSetting:!0,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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],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"}).state("app.tools.contact_item_types",{url:"/contact_item_types",views:{"content@app":{templateUrl:"app/main/apps/tools/views/contact_item_types/contact_item_types.html",controller:"ContactItemTypesController as vm"}},resolve:{contact_item_types:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("contactItemType@get",{fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ContactItemType",fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",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:1013})}]},authenticate:!0,permissionId:1013,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",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: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,level,ParentId",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";angular.module("app.user-setting",[])}(),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,i,s,r,l,d,c){var m;return{getToken:n,getCurrentUser:u,getPermissions:A,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){f()?a(!0):r.userProfileSection.get({userProfileId:m.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={};f()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:m.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!!m&&m.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:m.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 E().then(function(){_.includes(m.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!f())return E().then(function(){a.forEach(function(e){_.includes(m.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:h,isAdmin:f,isLoggedIn:function(){return!!n()},isTelephone:function(){return"telephone"===m.role},isUser:b,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("LOCAL_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.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 h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(v(),e()):o.resolve().then(function(){return h()&&0!==m.showWebBar?o(function(e,n){r.user.logout({id:m.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):f()||b()?g(!1):void 0}).then(function(){v(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return f()?{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:p,reloadPermissions:E,removeCookies:v,retrieveUser:function(){return o(function(n,t){r.user.whoami({userSetting:!0}).$promise.then(function(n){return"user"===n.role?A(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(m=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){m=_.merge(m,e)},getAuthenticationType:function(){var e=u(),n=i.localStorage.getItem("motion2.user:"+e.id);if(n)return JSON.parse(n).authenticationType;return"NONE"},loginSSO:function(e){"google"!==e&&y("SSO_LOGIN");return"/api/auth/"+e},loginAD:function(e){return o(function(n,t){r.auth.activedirectory(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("SSO_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.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 h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(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:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(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 E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}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";function e(e,n,t){var a={initLogger:function(){return i.init({uri:t.baseUrl+"logs/client-logs",initial_state_name:"client-logs",flushInterval:6e4,debounceInterval:10,sizeLimit:300,silent:!1,autoLog:["error"],heartbeat:!1,logUnload:!1,logPerformance:!1}),i.addHeaderBuilder(function(){return(e=n.get("motion.token"))?{Authorization:"Bearer "+e}:{};var e}),i}},i=e.$logger;if(!i)throw new Error("Beaver Logger not found");return a}function n(d,e,t){var n={getLogger:function(l){var e=function(r){return function(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];var a=n[0],i=n.slice(1),s="string"!=typeof a||"string"==typeof a&&0===i.length?l:a,o=1<n.length&&"string"==typeof a?i:n;(function(e,n,t){if(!d.isLoggedIn())return;var a=d.getCurrentUser();if(!a||!a.userSetting.clientSideLoggingEnabled)return;if(i=e,!(c.indexOf(i)>=c.indexOf(m)))return;var i;var s=n,o=t;"string"==typeof n&&void 0===t&&(s=e,o=n);u[e].call(u,s,{data:p(o)})}).call(this,r,s,o)}};return{error:e("error"),warn:e("warn"),info:e("info"),debug:e("debug")}},getLoggingColors:function(){return{disabled:{color:"#616161"},debug:{color:"#283593"},info:{color:"#000000"},warning:{color:"#FBC02D"},error:{color:"#FF5252"}}},flush:a},c=["debug","info","warn","error"],m="debug",u=e.initLogger();function p(t){return Array.isArray(t)?t.map(p):null===t||"object"!=typeof t?t:_.isPlainObject(t)?t:t&&"function"==typeof t.toJSON?t.toJSON():t instanceof Error?Object.getOwnPropertyNames(t).reduce(function(e,n){return e[n]=p(t[n]),e},{}):JSON.parse(JSON.stringifyOnce(t))}function a(){return u.flush()}return t.$on("local:user-setting-updated",function(e,n){n.clientSideLoggingEnabled?t.$broadcast("client-side-logging:enabled"):(a(),t.$broadcast("client-side-logging:disabled")),m=n.clientSideLoggingLevel}),t.$on("local:user-logout",function(){m="debug"}),JSON.stringifyOnce=function(i,s,e){var o=[],r=[];return e||(e=2),JSON.stringify(i,function(e,t){if(2e3<o.length)return"object too long";var a=!1;if(o.forEach(function(e,n){e===t&&(a=n)}),""==e)return o.push(i),r.push("root"),t;if(a+""!="false"&&"object"==typeof t)return"root"==r[a]?"(pointer to root)":"(see "+(t&&t.constructor?t.constructor.name.toLowerCase():typeof t)+" with key "+r[a]+")";var n=e||"(empty key)";return o.push(t),r.push(n),s?s(e,t):t},e)},n}e.$inject=["$window","$cookies","api"],n.$inject=["Auth","clientSideLogger","$rootScope"],angular.module("app.client-side-logging").factory("clientSideLogger",e).service("ClientSideLoggingService",n)}(),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){n.debugEnabled(!0),e.config({tabindex:!1}),t.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0})}e.$inject=["$ariaProvider","$logProvider","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(s,o,e,t){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 l(n){return e[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return 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=e[r.selectedField.options.searchFields[n]]||"";e.displayValue+=t+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return o.when(n)}).catch(function(e){t.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()})})}function a(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator?r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0:r.isValidCondition=!1}function i(){"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),a()}function d(){var e=m();r.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),p(),r.pendingCondition.style=null,r.pendingCondition=void 0}function m(){return{name:r.selectedField.name,operator:s.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:u(r.value),displayEndValue:u(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||"name";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 u(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 p(){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=d,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=c,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(){{if(r.selectedField.options.routes&&Array.isArray(r.selectedField.options.routes)){var e=angular.copy(r.selectedField.options.routes),n=_.map(e,function(e){return l(e)});return o.all(n).then(function(e){r.selectedField.values=_.flatten(e)})}var t=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var a=0;a<Object.keys(t.params).length;a++){var i=Object.keys(t.params)[a];"@autocomplete"===t.params[i]&&(t.params[i]=r.searchText)}if(!r.selectedField.values)return l(t).then(function(e){r.selectedField.values=_.flatten(e)});r.selectedField.values.forEach(function(e){e.translate&&(e.name=s.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||(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})));a()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?i():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),a()):a()},r.checkRange=i,r.handleKeyboardAction=function(){r.pendingCondition?c():d()}}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";n.$inject=["ClientSideLoggingService","$rootScope","$translate"];var e={bindings:{user:"<"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html"};function n(e,n,t){var a=this,i=e.getLoggingColors();function s(){a.tooltipHTML=a.user.userSetting.clientSideLoggingEnabled?[t.instant("STAFF.CLIENT_LOGS_ENABLED"),t.instant("STAFF.CLIENT_LOGS_LOGLEVEL",{logLevel:a.user.userSetting.clientSideLoggingLevel}),t.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(a.user.userSetting.clientSideLoggingEnabledSince).format("LLLL")})].join("<br>"):t.instant("STAFF.CLIENT_LOGS_DISABLED")}a.tooltipHTML=t.instant("STAFF.CLIENT_LOGS_DISABLED"),a.styleColor=i.disabled,a.styleIcon=a.user.userSetting&&a.user.userSetting.clientSideLoggingEnabled?"icon-checkbox-marked-circle":"icon-close",a.$onInit=function(){if(!a.user.userSetting)return;var e=a.user.userSetting.clientSideLoggingEnabled?a.user.userSetting.clientSideLoggingLevel:"disabled";a.styleColor=i[e],"info"===e&&(a.styleIcon="icon-checkbox-marked-circle-outline");return s()},a.$onDestroy=function(){o()};var o=n.$on("$translateChangeSuccess",s)}angular.module("app.core").component("msClientSideLoggingIcon",e)}(),function(){"use strict";n.$inject=["ClientSideLoggingService","UserSettingService","$q","$translate","$rootScope","$interval"];var e={bindings:{user:"<",onUserUpdate:"&"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging.html"};function n(e,t,n,a,i,s){var o=this,r=e.getLoggingColors(),l=null;function d(){l&&s.cancel(l)}o.styleProperties=r.disabled,o.clientSideLoggingEnabledSince="",o.$onInit=function(){m().then(function(){d(),l=s(u,6e4)})},o.$onChanges=function(e){e&&n.resolve().then(m)},o.$onDestroy=function(){d(),c()},o.onEnabledSwitchChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;return p(e,n)},o.onLogLevelSelectionChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;p(e,n)},o.computeStyleForLoggingLevel=function(e){return r[e]};var c=i.$on("$translateChangeSuccess",u);function m(){o.availableClientSideLoggingLevels=Object.keys(r).filter(function(e){return"disabled"!==e});var e=o.user.userSetting&&o.user.userSetting.clientSideLoggingEnabled?o.user.userSetting.clientSideLoggingLevel:"disabled";return o.styleProperties=r[e],u()}function u(){if(o.user.userSetting)return o.user.userSetting.clientSideLoggingEnabled?void(o.clientSideLoggingEnabledSince=a.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(moment(o.user.userSetting.clientSideLoggingEnabledSince).format()).fromNow()})):o.clientSideLoggingEnabledSince=""}function p(e,n){return t.updateUserSettingById(o.user.userSetting.id,{clientSideLoggingEnabled:e,clientSideLoggingLevel:n}).then(function(){"function"==typeof o.onUserUpdate&&o.onUserUpdate()})}}angular.module("app.core").component("msClientSideLogging",e)}(),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,l){var E=this,d=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],c=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};e(function(){},999);var y=l.getLogger("jssip","ms-phonebar");function m(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){y.error(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,x("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 x("speaker",!1)}).then(function(){return x("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)&&(y.info("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):y.error("Unable to find a valid call to answer",e):y.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){x("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,x("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){y.warn("Error initializing Jabra integration",e)})}).catch(function(e){y.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,S(),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 S(){c.webrtc=_.pick(E.conf,d),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(c))}function T(e,n,t){y.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 I(e){y.debug("answer -> session",e._request),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 O(e,n){y.debug("terminate -> session",e._request),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 y.debug("getVoiceChannels -> session",t._request),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 w(e){y.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function R(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function x(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&&S()}).catch(function(e){y.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&&S()}).catch(function(e){y.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&&S();break;default:y.info("unknown device")}}function N(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function D(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 P(){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){y.error(e)})}}function L(e,n,t,a){return y.debug("onReferCallback -> session, textContent, position, delay",e._request,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),O(e)}}function k(n){return y.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function M(e,n){return y.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}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(c.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(){m(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(!(E.isJabraEnabled=!1))}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!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){y.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,T(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){y.debug("getNotification -> session",n._request);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(){I(n)},function(){O(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){y.error("Error creating notification for incoming call",e)})}(e.session),T(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),y.debug("xAnswerMode",l),y.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;y.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},u)}}r?(o.call_id=e.request.call_id,n&&M(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=w.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){y.debug("onProgress -> session, data",e._request,n),y.error("onProgress -> session, data",e._request,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){y.error(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&M(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){y.debug("onConfirmed -> session, data",e._request,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=w.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){y.error("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){y.debug("onHold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){y.debug("onUnhold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(y.debug("onEnded -> session, data",e._request,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(R(),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(y.debug("onFailed -> session, data",e._request,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&R(),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){y.debug("onIcecandidate -> session, data",e._request,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),y.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):O(o,486)}.bind(this)),r.on("webbar:originate",function(e){y.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){y.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];y.info("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;y.debug("answerHook -> payload",e),n=e.sessionId?k(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&y.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){y.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.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){y.debug("unholdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.unhold(a)}}.bind(this)),r.on("webbar:transfer",function(e){if(y.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=k(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}}):y.warn("call with session Id "+e.sessionId+" not found")}else y.error("transferNumber required");else y.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){y.error(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 D(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){N()})}},E.hold=function(e){y.debug("hold -> session",e._request),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){y.debug("refer -> session",n._request);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 D(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}})})},E.record=function(e){y.debug("record -> session",e._request),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){y.debug("unhold -> session",e._request),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=I,E.terminate=O,E.selectSession=function(e){y.debug("selectSession -> session",e._request),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){y.debug("referAttended -> session",e._request),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=x,E.putOtherCallsOnHold=function(e){if(y.debug("putOtherCallsOnHold -> session",e._request),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):N():N()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),N())},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(){P()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){P()},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){y.error(e)})})},E.patchConference=P,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,m(E.isJabraEnabled=!1)}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!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){y.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(y.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 D(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:L(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:L(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){y.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","ClientSideLoggingService"],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(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"></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:"=",ngChange:"&"},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"]}]}],link:function(e,n,t,a){e.updateModel=function(e){a.$setViewValue(e)}},templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var s=this;s.filter=[],s.filtered=!1,s.fontSize=20,s.label="",s.getCount=function(a){var i=0;if(a){s.fontSize=a.attrs[2]&&a.attrs[2].value?parseInt(a.attrs[2].value)-parseInt(a.attrs[2].value)%2:20;var e=a.attrs.find(function(e){return"attrChannel"===e.name});e||a.attrs.push({name:"attrChannel",value:"voice"}),a.attrs.forEach(function(e,n){if("voice"!==a.attrs[3].value?"talking"===a.attrs[0].value?s.label="Opened":"answered"===a.attrs[0].value?s.label="Managed":s.label=a.attrs[0].value:s.label=a.attrs[0].value,!_.isEmpty(e.value))if(e.name.toLowerCase().includes("voice")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.voiceQueuesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.voiceQueuesSelected);for(var t=0;t<a.voiceQueues.rows.length;t+=1)_.includes(s.filter,a.voiceQueues.rows[t].id)&&(i+=a.voiceQueues.rows[t][a.attrs[0].value]?parseInt(a.voiceQueues.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("chat")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.chatWebsitesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.chatWebsitesSelected);for(var t=0;t<a.chatWebsites.rows.length;t+=1)_.includes(s.filter,a.chatWebsites.rows[t].id)&&(i+=a.chatWebsites.rows[t][a.attrs[0].value]?parseInt(a.chatWebsites.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("fax")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.faxAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.faxAccountsSelected);for(var t=0;t<a.faxAccounts.rows.length;t+=1)_.includes(s.filter,a.faxAccounts.rows[t].id)&&(i+=a.faxAccounts.rows[t][a.attrs[0].value]?parseInt(a.faxAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("mail")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.mailAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.mailAccountsSelected);for(var t=0;t<a.mailAccounts.rows.length;t+=1)_.includes(s.filter,a.mailAccounts.rows[t].id)&&(i+=a.mailAccounts.rows[t][a.attrs[0].value]?parseInt(a.mailAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("openchannel")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.openchannelAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.openchannelAccountsSelected);for(var t=0;t<a.openchannelAccounts.rows.length;t+=1)_.includes(s.filter,a.openchannelAccounts.rows[t].id)&&(i+=a.openchannelAccounts.rows[t][a.attrs[0].value]?parseInt(a.openchannelAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("whatsapp")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.whatsappAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.whatsappAccountsSelected);for(var t=0;t<a.whatsappAccounts.rows.length;t+=1)_.includes(s.filter,a.whatsappAccounts.rows[t].id)&&(i+=a.whatsappAccounts.rows[t][a.attrs[0].value]?parseInt(a.whatsappAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("sms")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.smsAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.smsAccountsSelected);for(var t=0;t<a.smsAccounts.rows.length;t+=1)_.includes(s.filter,a.smsAccounts.rows[t].id)&&(i+=a.smsAccounts.rows[t][a.attrs[0].value]?parseInt(a.smsAccounts.rows[t][a.attrs[0].value]):0)}})}return i}})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.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"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.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){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":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);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default: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){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":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);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default: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(s){var o=[];return function(n,e){e||(e="global-exception");var t,a=s.get("ClientSideLoggingService").getLogger("global-exception"),i=o.findIndex(function(e){return e===n});-1<i?(t=i,o.splice(t,1)):(!function(e){if(100<=o.length){var n=o.length-100+1;o.splice(0,n)}o.push(e)}(n),a.error(e,n))}}e.$inject=["$injector"],angular.module("app.core").factory("$exceptionHandler",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(n,e,t){if(void 0===n)return"";if(!e)return"";t||(t="option");var a=_.find(e,function(e){return e.value==n});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()}},getEmailProviders:function(){return[{name:"Custom",value:"custom"},{name:"Gmail",value:"gmail"},{name:"Hotmail",value:"hotmail"},{name:"Yahoo",value:"yahoo"},{name:"Outlook365",value:"outlook365"}]}}}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,t){var a=this;a.currentUser=e.getCurrentUser(),a.cookieAlertHide=n.get("motion.cookieAlertHide:"+a.currentUser.id)||!1,a.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+a.currentUser.id,!0)},a.onInit=function(){t.setting.get({id:1}).$promise.then(function(e){e&&(a.cookieAlertHide=!e.disabledCookie)})},a.onInit()}e.$inject=["Auth","$cookies","api"],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"},activedirectory:{method:"post",url:r.baseUrl+"auth/activedirectory"}}),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"},setAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/phones"},getAdditionalPhones:{isArray:!0,method:"get",url:r.baseUrl+"cm/contacts/:id/phones"},duplicateAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/duplicateAdditionalPhones"},rescheduleAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/rescheduleAdditionalPhones"},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"},importUpdates:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/uploadUpdates/: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"},getPreviewRecall:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/previewrecall"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"},getTimezones:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/timezones"},getTimezone:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/timezone"}}),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.contactItemType=e(r.baseUrl+"contact_item_types/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"contact_item_types/describe"},clone:{method:"post",url:r.baseUrl+"contact_item_types/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmContactHasItem=e(r.baseUrl+"cm_contact_has_items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_contact_has_items/describe"},clone:{method:"post",url:r.baseUrl+"cm_contact_has_items/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperAdditionalPhone=e(r.baseUrl+"cm_hopper_additional_phones/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_hopper_additional_phones/describe"},clone:{method:"post",url:r.baseUrl+"cm_hopper_additional_phones/: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"}},downloadLogFile:{isArray:!1,method:"get",url:r.baseUrl+"license/download_log_file",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),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"},getGlobalCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/global_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"}},oauth2MicrosoftAuthorize:{method:"get",url:r.baseUrl+"cloudProviders/:id/oauth2/microsoft/authorize"}}),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.userSetting=e(r.baseUrl+"user-settings/:id",{id:"@id"},{update:{method:"put",isArray:!1}}),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.adSsoEnabled=!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.loginAD=function(){return l.progresslogin=!0,l.message="",s.loginAD(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.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",n.params.token,{secure:!0,sameSite:"none"}):r.set("motion.token",n.params.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.adSsoEnabled=o.adSsoEnabled},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,a,i;"rename_node"===e.type&&(a=(t=n).node.id,i="","custom"===t.node.parent?t.node.id.includes("custom_report_")||(i="custom_report_"+t.text):i=t.node.parent+"_"+t.text,p.treeCustomInstance.jstree(!0).set_id(t.node,"custom_report_"+i.toLowerCase()),t.node.a_attr.id=t.node.a_attr.id.replace(a,t.node.id),t.node.li_attr.id=t.node.id);var s=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:s}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=s),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,O,C,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(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"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(O,"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(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"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(C,"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(O,"id","name"),pause_id:U(C,"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:"Zeina",option:"Zeina (Arabic, Female)"},{value:"Zhiyu",option:"Zhiyu (Chinese, Mandarin, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Nicole",option:"Nicole (English, Australian, Female)"},{value:"Olivia",option:"Olivia (English, Austrialian, Female)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Amy",option:"Amy (English, British, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Aditi",option:"Aditi (English, Indian, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Aria",option:"Aria (English, New Zealand, Female)"},{value:"Ayanda",option:"Ayanda (English, South African, Female)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Kevin",option:"Kevin (English, US, Male)"},{value:"Matthew",option:"Matthew (English, US, Male)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Léa",option:"Léa (French, Male)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Gabrielle",option:"Gabrielle (French, Canadian, Female)"},{value:"Vicki",option:"Vicki (German , Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Aditi",option:"Aditi (Hindi , Female)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Bianca",option:"Bianca (Italian, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Takumi",option:"Takumi (Japanese, Male)"},{value:"Seoyeon",option:"Seoyeon (Korean, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Camila",option:"Camila (Portuguese, Brazilian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Conchita",option:"Conchita (Spanish, European, Female)"},{value:"Lucia",option:"Lucia (Spanish, European, Female)"},{value:"Enrique",option:"Enrique (Spanish, European, Male)"},{value:"Mia",option:"Mia (Spanish, Mexican, Female)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Lupe",option:"Lupe (Spanish, US, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Gwyneth",option:"Gwyneth (Welsh , 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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,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,labelText:"CHAT",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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(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||g(),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 h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getChatWebsiteInteractions=g,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,g()}}).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=v,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){v(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(){O(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=O,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){O(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.importContactsUpdates=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsUpdatesDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/importUpdates.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 O(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,e,a,n,i,s,o,r,l,d,c){var m=this;if(m.errors=[],m.title="CONTACTMANAGER.EDIT_CONTACT",m.crudPermissions=c,m.contact=angular.copy(o),m.additionalItemTypes=[],m.additionalItems=[],m.contacts=n||{rows:[],count:0},m.lists=i||{rows:[],count:0},m.companies=s||{rows:[],count:0},m.customFields={rows:[],count:0},m.newContact=!1,m.newPhone=function(e){return{phone:e,color:"gray"}},m.contactItemTypes=[],m.contact)delete m.contact.List,f(m.contact.ListId),d.cmContact.getAdditionalPhones({id:o.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");m.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");m.additionalItems=[];for(var s=0;s<n.length;s++)m.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)});else{m.contact={ListId:r?parseInt(r,10):void 0,CompanyId:l?parseInt(l,10):void 0};var u=_.map(m.contact.Phones,"item"),p=_.map(m.contact.Phones,"description");m.additionalItemTypes=_.map(m.contact.Phones,"ItemTypeId");var g=_.map(m.contact.Phones,"ItemType.rgbBackgroundColor"),v=_.map(m.contact.Phones,"ItemType.name");m.additionalItems=[];for(var h=0;h<u.length;h++)m.additionalItems.push({phone:u[h],type:v[h],color:g[h],description:p[h]});m.title="CONTACTMANAGER.NEW_CONTACT",m.newContact=!0,b()}function f(e){if(e)return d.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){m.customFields=e;var n=_.map(m.customFields.rows,function(e){return"cf_"+e.id});return d.cmContact.get({id:m.contact.id,attributes:n,raw:!0}).$promise.then(function(e){m.contact=_.merge(m.contact,e)})}}).then(function(){m.customFields.rows.forEach(function(e){"datetime"===e.type&&m.contact["cf_"+e.id]&&(m.contact["cf_"+e.id]=A(m.contact["cf_"+e.id]))}),Object.keys(m.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(m.customFields.rows,["id",Number(n)])||delete m.contact["cf_"+n]}})}).catch(function(e){console.error(e)});m.customFields={rows:[],count:0}}function b(){return d.cmList.getGlobalCustomFields().$promise.then(function(e){if(e){m.customFields=e;_.map(m.customFields.rows,function(e){return"cf_"+e.id})}else;}).catch(function(e){console.error(e)})}function A(e){return null===e?void 0:new Date(e)}function E(){t.hide()}d.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){m.contactItemTypes=e.rows}),m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){m.contacts.unshift(e),d.cmContact.setAdditionalPhones({id:e.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly created",msg:m.contact.name?m.contact.name+" has been created!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.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()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){var n=_.find(m.contacts,{id:e.id});n&&_.merge(n,e)}).then(function(){return d.cmContact.setAdditionalPhones({id:o.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly saved!",msg:m.contact.name?m.contact.name+" has been saved!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.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()})})},m.deleteContact=function(e){m.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(){d.cmContact.delete({id:m.contact.id}).$promise.then(function(){_.remove(m.contacts,{id:m.contact.id}),a.success({title:"Contact properly deleted!",msg:m.contact.name?m.contact.name+" has been deleted!":""}),E()}).catch(function(e){console.error(e),m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},m.closeDialog=E,m.getCustomFields=f,m.getDateFromString=A,e.$watch("vm.contact.ListId",function(e,n){_.isNil(e)&&b()})}e.$inject=["$mdDialog","$scope","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[];var n=o.contact.id;delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){return a.unshift(e),s.cmContact.duplicateAdditionalPhones({id:n,fromContactId:n,toContactId:e.id}).$promise.then(function(){t.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(a,t,e,i,s,n,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 O(){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 C(){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.additionalItems=[],S.additionalItemTypes=[],S.contactItemTypes=[],S.firstDayMonth=new Date(moment().startOf("month").subtract(1,"seconds").utcOffset(0,!0).format()),S.lastDayMonth=new Date(moment().endOf("month").subtract(1,"day").utcOffset(0,!0).format()),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=e.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");var n=_.map(S.contact.Phones,"item"),t=_.map(S.contact.Phones,"description");S.additionalItemTypes=_.map(S.contact.Phones,"ItemTypeId");var a=_.map(S.contact.Phones,"ItemType.rgbBackgroundColor"),i=_.map(S.contact.Phones,"ItemType.name"),s=_.map(S.contact.Phones,"ItemType.id");S.additionalItems=[];for(var o=0;o<n.length;o++)S.additionalItems.push({phone:n[o],type:i[o],ItemTypeId:s[o],color:a[o],description:t[o]})}).then(function(e){r.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){S.contactItemTypes=e.rows})}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){e.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){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:{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}).then(function(){return r.cmContact.setAdditionalPhones({id:S.contact.id,items:S.additionalItems}).$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});s.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(i.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=s.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 s.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=O,S.getHistories=C,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=s.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");s.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){s.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.newPhone=function(e){return{phone:e,color:"gray"}},S.getCustomerJourney=w,S.loadMoreJourney=function(){return n(function(e,n){var t=S.journey.length;return e(w(t))})},S.moveUp=function(e){N(e,e-1)},S.moveDown=function(e){N(e,e+1)};var R=!0,x=1;function N(e,n){var t=S.additionalItems[n];S.additionalItems[n]=S.additionalItems[e],S.additionalItems[e]=t,a.additionalPhonesForm.$setDirty()}a.$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())}),a.$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),O())}),a.$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),C())})}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).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),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},{key:"dialTimezone",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){var n=e.rows;console.log(n);for(var t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,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(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:"id",required:!0},{key:"firstName",required:!1},{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.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){for(var n=e.rows,t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,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.importUpdates({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("ImportContactsUpdatesDialogController",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,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.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=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,s,i,o,r,l,a,n,d,t,c,m,u,p,g,v,h,f,b,A,E){var y=this;y.license=v,y.setting=h,y.detectBrowser=b.detectBrowser(),y.user=n.getCurrentUser(),y.currentTab=0,y.notifications={},y.tabs={},y.agentCapacity={},y.autoClose=!1,y.globalUserLists=m||{count:0,rows:[]},y.globalLists=u||{count:0,rows:[]},y.globalCompanies=p||{count:0,rows:[]},y.globalTags=g||{count:0,rows:[]};var S=E.getLogger("dashboard","agent.general.contact");function T(e){var n={};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&(n[t]=_.pick(y.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(y.tabs[t].contact)||(n[t].contact=_.pick(y.tabs[t].contact,["id","ListId"])),_.isNil(y.tabs[t].calls)||(n[t].calls=y.tabs[t].calls),y.tabs[t].interaction&&(n[t].interaction=_.pick(y.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(i.localStorage.getItem("motion2.user:"+y.user.id));a?(a.tabs=n,a.currentTab=y.currentTab,a.autoClose=y.autoClose):a={tabs:n,currentTab:y.currentTab,autoClose:y.autoClose},i.localStorage.setItem("motion2.user:"+y.user.id,JSON.stringify(a)),e&&I(e)}function I(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:y.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 y.tabs)y.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(y.tabs[t].channel)&&y.tabs[t].interaction&&!y.tabs[t].interaction.closed&&(n.capacity[y.tabs[t].channel]+=1,n.interaction[y.tabs[t].channel].push(y.tabs[t].interaction.id));if(!_.isEqual(y.agentCapacity,n.capacity))return y.agentCapacity=n.capacity,d.rpc.setAgentCapacity(n)}}function O(e){y.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)d.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:y.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){S.error(e)})}(y.tabs[e.id]),delete y.tabs[e.id],y.currentTab=0,T(e))}function C(e){Object.keys(y.tabs).length!==y.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,y.tabs[e.id]=e,y.currentTab=e.id,T(e)):c.warning({title:"",msg:o.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function w(n){return _.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function R(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=y.user.privacyEnabled?A.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)&&k(t)),n){var s=_.find(y.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];y.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(M()).finally(function(){C(i)});C(i)}}else C(i)}function x(n,t){var e=_.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,y.currentTab=e.id):C(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 N(t){f.isSupported()?f.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},f.show(e.title,n)},function(e){S.error("Please enable browser notifications!",e)}):S.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}function D(e){e&&e.uniqueid&&y.notifications[e.uniqueid]&&(c.clear(y.notifications[e.uniqueid]),delete y.notifications[e.uniqueid])}function P(n){var t=n.uniqueid;for(var e in S.debug("onVoiceChannelRemove -> evt",n),y.tabs)if(y.tabs.hasOwnProperty(e)){var a=y.tabs[e];if(a.calls){S.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?(S.debug("Allowing disposition for call %s",a.calls[i].uniqueid),k(a.calls[i])):S.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&l(L(t,a.contact.id,a),1e3)}}T()}function L(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){S.error(e)})}}function k(e){e.disposedAt=new Date}function M(){return function(e){if(404===e.status)c.warning({title:o.instant("DASHBOARDS.ATTENTION"),msg:o.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){y.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];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:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}y.onClickTab=function(e){y.currentTab=e,T(y.tabs[e])},y.isActiveTab=function(e){return e===y.currentTab},y.alreadyExistsTab=w,y.addContactTab=R,y.addInteractionTab=x,y.addTab=C,y.removeTab=O,y.updateLocalStorage=T,y.closeTab=function(e){var n=!1,t=s.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 a=y.user.voicePause||y.user.chatPause||y.user.mailPause||y.user.openchannelPause||y.user.faxPause;return"interaction"===e.type&&(n=e.interaction.Account.mandatoryDisposition),s.show(t).then(function(){"interaction"===e.type&&s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(r.body),onRemoving:function(){y.user&&n&&!a&&d.user.unpause({id:y.user.id}).$promise.catch(function(e){S.error(e)})},clickOutsideToClose:!n,escapeToClose:!n,locals:{user:y.user,channel:e.channel,interaction:e.interaction}}),O(e)}).catch(function(){"interaction"===e.type&&O(e)})}if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(n=!0)}),"contact"===e.type&&0<e.calls.length){if(!n)return t._options.textContent="There is a call that hasn't been disposed yet.",s.show(t).then(function(){O(e)});var i=s.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK");s.show(i).finally(function(){i=void 0})}else O(e)}},y.dialPreviewRecallReminder=function(e){var n=a("formatdate")(e.hopper.scheduledat),t="<div>"+o.instant("DASHBOARDS.PREVIEW_CALL_FOR")+"<b>"+e.hopper.Contact.firstName+" "+e.hopper.Contact.lastName+"</b> "+o.instant("DASHBOARDS.SCHEDULED_AT")+"<b>"+n+"</b></div>";t+="<div>"+o.instant("DASHBOARDS.LIST_NAME")+": "+e.hopper.List.name+"</div>",t+="<div style='margin-top:20px;margin-bottom:40px'>",t+="<div class='preview_cancel'><a href='#' onclick='dismissToasty("+e.hopper.id+")'>"+o.instant("DASHBOARDS.CANCEL")+"</a></div>",t+="<div class='preview_open'><a href='#' onclick='openContactTab("+e.hopper.id+")'>"+o.instant("DASHBOARDS.OPEN")+"</a></div>",t+="</div>",c.info({title:o.instant("DASHBOARDS.PREVIEW_CALL"),msg:t,showClose:!0,timeout:2e4,html:!0,onAdd:function(){y.notifications[e.hopper.id]=this.id}})},y.openContactTab=function(e){y.openPreviewDialog(e),n=e,y.toasty.clear(y.notifications[n]),delete y.notifications[n];var n},y.openPreviewDialog=function(e){d.cmHopper.getPreviewRecall({hopperId:e}).$promise.then(function(e){s.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(r.body),clickOutsideToClose:!0,locals:{preview:e,currentUser:y.user},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})})},y.toasty=c,function(){var e=i.localStorage.getItem("motion2.user:"+y.user.id);if(e)try{e=JSON.parse(e),y.tabs=e.tabs?e.tabs:{},y.currentTab=e.currentTab?e.currentTab:0,y.autoClose=!!e.autoClose&&e.autoClose,I(y.tabs[y.currentTab]),S.debug("Tabs initiated correctly")}catch(e){S.error(e)}}(),e.$on("$destroy",function(){for(var e in y.notifications)y.notifications.hasOwnProperty(e)&&D({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")}),t.on("trigger:contactmanager",function(n){_.isNil(n.contacts)||1!==n.contacts.length?s.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){R(e,n.evt)}):R(n.contact,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:y.user,contact:e}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(M());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(M())}),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&&C({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":i.open(e.uri);break;case"1":i.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":C({type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri});break;default:i.open(e.uri)}else i.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&C({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(e){if(e&&e.uniqueid){N(e);var n=w(e);if(n){if(d[e.channel+"Message"])return y.currentTab!==n.id&&(n.badges+=1),d[e.channel+"Message"].accept({id:e.id,UserId:y.user.id}).$promise.catch(M())}else{var t="mail"==e.channel?"email":e.channel;y.user[t+"Autoanswer"]?l(function(){if(d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){x(e.channel,e.interaction)}).catch(M())},y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0):c.wait({title:e.title,msg:e.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:e.sound,html:!0,shake:e.shake||!1,onAdd:function(){y.notifications[e.uniqueid]=this.id},onAccept:function(){if(D(e),d[e.channel+"Message"])return d[e.channel+"Message"].accept({id:e.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){x(e.channel,e.interaction),c.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(M())},onReject:function(){if(D(e),d[e.channel+"Message"])return d[e.channel+"Message"].reject({id:e.id,UserId:y.user.id}).$promise.then(function(){c.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(M())}})}}}),t.on("notification:remove",D),t.on("voice_queue_channel:remove",P),t.on("voice_outbound_channel:remove",P),t.on("user:dialPreviewRecallReminder",y.dialPreviewRecallReminder)}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","$filter","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","ClientSideLoggingService"],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,l,n){var g=this;g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.additionalItemTypes=[],g.additionalItems=[],g.contactItemTypes=[],g.newPhone=function(e){return{phone:e,color:"gray"}},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=h,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(){return u.cmContact.setAdditionalPhones({id:g.contact.id,items:g.additionalItems,item_types:g.additionalItemTypes}).$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(){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.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=y,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){v.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=b,g.getFinals=A,g.getHistories=E,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(){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.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){}u.contactItemType.get({}).$promise.then(function(e){g.contactItemTypes=e.rows}).then(function(){u.cmContact.getAdditionalPhones({id:g.contact.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");g.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");g.additionalItems=[];for(var s=0;s<n.length;s++)g.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)})}),b(),A(),E()}).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?h():void 0}).finally(function(){g.contact&&g.contact.id&&(S(),g.contact.dateOfBirth=y(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=S,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(S(n))})};var v=n.getLogger("agent.general.contact");function h(){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 f(n){return function(e){g[n]=e||{count:0,rows:[]}}}function b(){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,f("hoppers")).$promise)}function A(){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,f("finals")).$promise)}function E(){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,f("histories")).$promise)}function y(e){return null===e?void 0:new Date(e)}function S(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})}m.$on("$destroy",function(){}),m.$watch("currentTab",function(){1===g.currentTab&&(b(),A(),E())});var T=!0,I=1;m.$watch("queryHopper.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=I),b())}),m.$watch("queryFinal.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=I),A())}),m.$watch("queryHistory.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=I),E())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","privacyManager","ClientSideLoggingService"],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,p,g){var v=this;v.user=d.getCurrentUser(),v.isReschedule=!1,v.recallme=!1,v.queueCampaign=void 0,v.queueCampaigns={count:0,rows:[]},v.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),v.contact=l,v.call=r,v.note=v.call.note||void 0,v.dialerCall=!1,v.hasBlackLists=!1,v.contactTZTime,v.availableCalls=m,v.autoClose=u,v.recalcTZTime=b,v.hopper={minDate:new Date,dateTime:new Date,scheduledAt:new Date},p.$watch("vm.contact.dialTimezone",function(){b()});var h=g.getLogger("dashboard","agent.general.contact.dispose");function f(){return i(function(n){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){h.error(e),s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function b(){var e=v.dialerCall?Number(v.call["xmd-voicequeueid"]):v.queueCampaign?v.queueCampaign.id:v.call["xmd-campaignid"]?Number(v.call["xmd-campaignid"]):null;if(e)o.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,_.isNil(v.contact.dialTimezone)&&(v.contact.dialTimezone=v.hopper.dialTimezone),n)o.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}function A(){var e=v.selectedDisposition?v.selectedDisposition.name.toLowerCase():void 0;return{id:v.call.uniqueid,disposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,secondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,thirdDisposition:v.thirdLevelDisposition?v.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 E(e){t.hide([e,v.autoClose])}v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]?(v.dialerCall=!0,o.voiceQueue.getBlackLists({id:v.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(v.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()})})):f(),v.onDispositionChange=function(e){switch(e){case"first":v.selectedDisposition=v.firstLevelDisposition,v.anySecondLevelDisposition=_.some(v.dispositions,["ParentId",v.firstLevelDisposition.id]),v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.anyThirdLevelDisposition=!1;break;case"second":v.selectedDisposition=v.secondLevelDisposition,v.anyThirdLevelDisposition=_.some(v.dispositions,["ParentId",v.secondLevelDisposition.id]);break;case"third":v.selectedDisposition=v.thirdLevelDisposition}},v.clearDispositionSelection=function(e){"second"===e?(v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.selectedDisposition=v.firstLevelDisposition):"third"===e&&(v.thirdLevelDisposition=void 0,v.selectedDisposition=v.secondLevelDisposition)},v.saveDisposition=function(e){v.selectedDisposition=_.isNil(e)?v.selectedDisposition:{name:e},e&&(v.firstLevelDisposition=v.selectedDisposition);v.call.note=v.note,o.voiceCallReport.update({id:v.call.uniqueid,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,note:v.note,UserId:d.getCurrentUser().id,ContactId:v.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:v.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:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.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()})}),v.dialerCall&&(o.cmHopperFinal.update(A()).$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(A()).$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(v.selectedDisposition))E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"");else switch(v.selectedDisposition.name.toLowerCase()){case"blacklist":v.call&&v.call.variables&&v.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(v.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")+" "+v.selectedDisposition}),v.selectedDisposition=void 0}).then(function(e){e&&E(v.selectedDisposition?v.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()}),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}(v.call.variables["xmd-voicequeueid"]);break;case"reschedule":v.isReschedule=!0,v.recallme=!1;break;case"recallme":v.isReschedule=!0,v.recallme=!0,v.user.selectRecallMeCampaign&&f().then(function(){v.originalCampaign=_.find(v.queueCampaigns.rows,["id",v.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));v.queueCampaign=e.previewCampaignId?_.find(v.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):v.originalCampaign});break;default:E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}},v.closeDialog=function(){t.cancel()},v.saveReschedule=function(){v.disable=!0;var e=null;v.queueCampaign?e=v.queueCampaign.id:v.dialerCall&&(e=Number(v.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:v.contact.phone,UserId:v.recallme?d.getCurrentUser().id:null,ContactId:v.contact.id,ListId:v.contact.ListId,VoiceQueueId:e,scheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),dialTimezone:v.contact.dialTimezone,priority:3,recallme:v.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(e){o.cmContact.rescheduleAdditionalPhones({id:v.contact.id,hopperId:e.id}).$promise.catch(function(e){console.log(e)})}).then(function(){if(v.dialerCall&&(o.cmHopperFinal.update({id:v.call.uniqueid,rescheduled:!0,rescheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),recallme:v.recallme}).$promise.catch(function(e){h.error(e)}),v.user.selectRecallMeCampaign)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));e.previewCampaignId=v.queueCampaign.id,n.localStorage.setItem("motion2.user:"+v.user.id,JSON.stringify(e))}}).then(function(){return o.cmContact.update({id:v.contact.id,dialTimezone:v.contact.dialTimezone})}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(v.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h.error(e),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).finally(function(){v.disable=!1,E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose","$scope","ClientSideLoggingService"],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;function o(){var e=angular.element(".agent-general-home-navbar button.current")[0];e&&e.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}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)},angular.element(a).on("resize",o),n.$on("$destroy",function(){angular.element(a).off("resize",o)}),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(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(c.chatAccounts.rows,function(e){return{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function u(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&E(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)g(c.chatInteractions.rows[n])}function p(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,u).$promise}function g(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function v(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 h(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function f(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&&p(c.query.page)}}function b(e){if(e){var n=_.find(c.chatInteractions.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(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 E(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||p()},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.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"}],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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:m("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:m("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:m("third")}}]}}).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",f),l.on("chatInteraction:update",f),l.on("chatInteractionTags:save",b),l.on("chatMessage:save",A),l.on("chatMessage:update",A),l.on("user_has_chat_interactions:save",v),l.on("user_has_chat_interactions:remove",h),p(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&E()})},c.success=u,c.getChatInteractions=p,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=g,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,p())}).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(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(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||g()},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)v(m.faxInteractions.rows[n])}function g(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,p).$promise}function v(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function h(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 f(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(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 g(m.query.page)}}function A(e){if(e){var n=_.find(m.faxInteractions.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(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.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"}],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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).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",b),l.on("faxInteraction:update",b),l.on("faxInteractionTags:save",A),l.on("faxMessage:save",E),l.on("faxMessage:update",E),l.on("user_has_fax_interactions:save",h),l.on("user_has_fax_interactions:remove",f),g(m.query.page)})},m.success=p,m.getFaxInteractions=g,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=v,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,g())}).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,m,t,d,e,a,c,u){var p=this;function i(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(p.mailAccounts.rows,function(e){return{model:"mailAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function s(e){!p.reloadingInteractions&&0<p.setting.mailInteractionsReloadTimeout&&S(!0),p.searchInProgress=!1,p.reloadingInteractions=!1,p.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<p.mailInteractions.rows.length;n+=1)h(p.mailInteractions.rows[n])}function g(e,n){p.searchInProgress=!0,e||(p.query.page=1),(void 0===p.query.closed||null===p.query.closed||p.query.closed)&&delete p.query.substatus,p.query.offset=(p.query.page-1)*p.query.limit;var t=m.localStorage.getItem("motion2.home.mail:"+p.user.id);(t=t?JSON.parse(t):{}).query=p.query,m.localStorage.setItem("motion2.home.mail:"+p.user.id,JSON.stringify(t)),p.promise=d.mailInteraction.get(p.query,s).$promise}function v(e,n){o.$parent.vm.addInteractionTab("mail",n)}function h(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 f(e){var n=_.find(p.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function b(e){var n=_.find(p.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function A(e){if(e){var n=_.find(p.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),p.query.sort){var t=_.startsWith(p.query.sort,"-")?"desc":"asc";p.mailInteractions.rows=_.orderBy(p.mailInteractions.rows,_.trimStart(p.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===p.setting.mailInteractionsReloadTimeout&&g(p.query.page)}}function E(e){if(e){var n=_.find(p.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function y(e){if(e&&!e.secret){var n=_.find(p.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 S(e){e&&p.interactionsInterval&&n.cancel(p.interactionsInterval),p.interactionsInterval=n(function(){p.reloadingInteractions=!0,p.searchInProgress||g()},1e3*p.setting.mailInteractionsReloadTimeout)}p.user=e.getCurrentUser(),p.license={},p.setting={},p.tags={count:0,rows:[]},p.mailInteractions={count:0,rows:[]},p.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},p.sectionColor="teal",p.onInit=function(e,n){return p.license=e,p.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:p.user.id,nolimit:!0}).$promise.then(function(e){return p.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){p.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){p.subStatuses=e||{count:0,rows:[]}}).then(function(){p.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:p.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:p.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:p.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:p.tags.rows,placeholder:"DASHBOARDS.TAGS"}],p.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:p.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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:i("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:i("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:i("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=m.localStorage.getItem("motion2.home.mail:"+p.user.id);if(e)try{(e=JSON.parse(e)).query&&(p.query=_.merge(p.query,e.query),_.isEmpty(p.mailAccounts.rows)?p.query.MailAccountId=[]:_.isEmpty(p.query.MailAccountId)&&(p.query.MailAccountId=_(p.mailAccounts.rows).map("id").take().value()),p.query.sort&&0<=p.query.sort.indexOf("lastMessage")&&(p.query=_.omit(p.query,"sort")),p.query.includeAll=!0,p.isSearchBarVisible=!(p.query.search||!p.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(p.mailAccounts.rows,"id"),createdAt:n};p.query=_.merge(p.query,t)}a.on("mailInteraction:save",A),a.on("mailInteraction:update",A),a.on("mailInteractionTags:save",E),a.on("mailMessage:save",y),a.on("mailMessage:update",y),a.on("user_has_mail_interactions:save",f),a.on("user_has_mail_interactions:remove",b),g(p.query.page),0<p.setting.mailInteractionsReloadTimeout&&S()})},p.success=s,p.getMailInteractions=g,p.showMailInteraction=v,p.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()})})},p.disposeInteraction=function(e,t){var a=p.user.voicePause||p.user.chatPause||p.user.mailPause||p.user.openchannelPause||p.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){p.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:p.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:p.user,channel:"mail",interaction:t}})},p.getContactLabel=h,p.getAgentLabel=function(e){if(e.UserId)return e.UserId===p.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},p.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},p.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=p.user.voicePause||p.user.chatPause||p.user.mailPause||p.user.openchannelPause||p.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){p.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:p.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:p.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};u.add(n)}})},p.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:p.sectionColor,fields:p.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){p.isSearchBarVisible=!(e.value||!p.query.filter),e.apply&&(p.query.search=e.value,g())}).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,v(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(u.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=p.user.voicePause||p.user.chatPause||p.user.mailPause||p.user.openchannelPause||p.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){p.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:p.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:p.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};u.update(n)}})}),p.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},p.adjustTooltipPosition=function(e){var n=angular.element(e.currentTarget).children(),t=n[0],a=n[1],i=angular.element(t),s=angular.element(a),o=m.innerHeight,r=i.offset(),l=r.top,d=r.left,c=o<216+l;s.css("left",d),c?(s.css("top",""),s.css("bottom",o-l)):(s.css("bottom",""),s.css("top",l))},o.$on("$destroy",function(){a.removeAllListeners("mailMessage:save"),a.removeAllListeners("mailMessage:update"),a.removeAllListeners("mailInteraction:save"),a.removeAllListeners("mailInteractionTags:save"),a.removeAllListeners("mailInteraction:update"),a.removeAllListeners("user_has_mail_interactions:save"),a.removeAllListeners("user_has_mail_interactions:remove"),p.interactionsInterval&&n.cancel(p.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(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&y(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)v(m.openchannelInteractions.rows[n])}function g(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,p).$promise}function v(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(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 f(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(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&&g(m.query.page)}}function A(e){if(e){var n=_.find(m.openchannelInteractions.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(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 y(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||g()},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.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"}],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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).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",b),l.on("openchannelInteraction:update",b),l.on("openchannelInteractionTags:save",A),l.on("openchannelMessage:save",E),l.on("openchannelMessage:update",E),l.on("user_has_openchannel_interactions:save",h),l.on("user_has_openchannel_interactions:remove",f),g(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&y()})},m.success=p,m.getOpenchannelInteractions=g,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=v,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,g())}).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,dialTimezone",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,l.query.fields="id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone";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(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&y(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)v(m.smsInteractions.rows[n])}function g(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,p).$promise}function v(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(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 f(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(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&&g(m.query.page)}}function A(e){if(e){var n=_.find(m.smsInteractions.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(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 y(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||g()},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.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"}],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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).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",b),l.on("smsInteraction:update",b),l.on("smsInteractionTags:save",A),l.on("smsMessage:save",E),l.on("smsMessage:update",E),l.on("user_has_sms_interactions:save",h),l.on("user_has_sms_interactions:remove",f),g(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&y()})},m.success=p,m.getSmsInteractions=g,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=v,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,g())}).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(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&y(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)v(m.whatsappInteractions.rows[n])}function g(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,p).$promise}function v(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function h(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 f(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(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&&g(m.query.page)}}function A(e){if(e){var n=_.find(m.whatsappInteractions.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(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 y(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||g()},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.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"}],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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).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",b),l.on("whatsappInteraction:update",b),l.on("whatsappInteractionTags:save",A),l.on("whatsappMessage:save",E),l.on("whatsappMessage:update",E),l.on("user_has_whatsapp_interactions:save",h),l.on("user_has_whatsapp_interactions:remove",f),g(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&y()})},m.success=p,m.getWhatsappInteractions=g,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=v,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,g())}).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.trim()))},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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"faxAccount",action:"getDispositions",field:"name",params:{id:m.faxAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,p).$promise}function v(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||g(),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 h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getFaxAccountInteractions=g,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,g()}}).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=v,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){v(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,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",v.dynamics365Account=angular.copy(l),v.dynamics365Accounts=r,v.cloudProviders=d,v.newDynamics365Account=!1,v.dynamics365Account||(v.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),modernAuthentication:!1},v.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",v.newDynamics365Account=!0),v.addNewDynamics365Account=function(){v.errors=[],c.intDynamics365Account.save(v.dynamics365Account).$promise.then(function(e){v.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.saveDynamics365Account=function(){v.errors=[],c.intDynamics365Account.update({id:v.dynamics365Account.id},v.dynamics365Account).$promise.then(function(e){var n=_.find(v.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.deleteDynamics365Account=function(e){v.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(){c.intDynamics365Account.delete({id:v.dynamics365Account.id}).$promise.then(function(){_.remove(v.dynamics365Accounts,{id:v.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(v.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),h(v.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","cloudProviders","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,f){var b=this;b.license=h,b.setting=f,b.currentUser=v.getCurrentUser(),b.dynamics365Accounts=l||{count:0,rows:[]},b.cloudProviders=d||{count:0,rows:[]},b.userProfile=c,b.userProfileSection=m&&1==m.count?m.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dynamics365Accounts",b.listOrder="",b.listOrderAsc=null,b.selectedDynamics365Accounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,n){return u.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){g.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){g.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},b.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(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDynamics365Accounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,v.hasRole("admin")?b.promise=u.intDynamics365Account.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dynamics365Accounts",b.promise=u.userProfile.getResources(b.query,y).$promise)},b.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:b.dynamics365Accounts.rows,cloudProviders:b.cloudProviders.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDynamics365Account=S,b.exportSelectedDynamics365Accounts=function(){var e=angular.copy(b.selectedDynamics365Accounts);return b.selectedDynamics365Accounts=[],e},b.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+b.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedDynamics365Accounts.forEach(function(e){S(e)}),b.selectedDynamics365Accounts=[]})},b.deselectDynamics365Accounts=function(){b.selectedDynamics365Accounts=[]},b.selectAllDynamics365Accounts=function(){b.selectedDynamics365Accounts=b.dynamics365Accounts.rows};var A=!0,E=1;function y(e){b.dynamics365Accounts=e||{count:0,rows:[]}}function S(e){u.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(b.dynamics365Accounts.rows,{id:e.id}),b.dynamics365Accounts.count-=1,b.dynamics365Accounts.rows.length||b.getDynamics365Accounts(),g.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)g.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else g.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){A?o(function(){A=!1}):(n||(E=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=E),b.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","cloudProviders","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.advancedForm&&o.advancedForm.$setPristine();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.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.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.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},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,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.dynamics365Account=c||e.params.dynamics365Account||{},p.cloudProviders=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.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},p.saveDynamics365Account=function(){r.intDynamics365Account.update({id:p.dynamics365Account.id},p.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:p.dynamics365Account.name?p.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","cloudProviders","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,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.newMailAccount=!0),e.params.id&&(g.mailAccount.MailAccountId=e.params.id),g.addNewMailAccount=function(){g.errors=[],r.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_CREATED_SUCCESS_TITLE")}),v(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)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.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],r.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()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")}),v(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++)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.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return i.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=t.confirm().title(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:g.mailAccount.name})).ariaLabel("Delete Mail Account").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")}),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++)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.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.onProviderChange=function(){"custom"!==g.mailAccount.provider&&(g.mailAccount.authentication=!0);"outlook365"!==g.mailAccount.provider&&(g.mailAccount.modernAuthentication=!1)},g.closeDialog=v,p=[{key:"id",value:Number(g.mailAccount.ListId)}],r.getResourcesByRole(g.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},p).then(function(e){g.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()})})}e.$inject=["$state","$mdDialog","$translate","toasty","mailAccounts","mailAccount","cloudProviders","api","Auth","license","setting","crudPermissions","msUtils"],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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"mailAccount",action:"getDispositions",field:"name",params:{id:m.mailAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){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,p).$promise}function v(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||g(),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 h(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 f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getMailAccountInteractions=g,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,g()}}).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=v,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){v(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,a,i,s,e,n,o,r,l,d,c,m,u,p,g){var v,h,f=this;f.currentUser=d.getCurrentUser(),f.license=n,f.setting=o,f.passwordPattern=f.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",f.mailAccount=c||t.params.mailAccount||{},f.cloudProviders=m||{rows:[],count:0},f.userProfile=u,f.userProfileSection=p&&1==p.count?p.rows[0]:null,f.crudPermissions=d.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.hasModulePermissions={},f.selectedTab=t.params.tab||0,f.providers=g.getEmailProviders(),f.originalProvider=f.mailAccount.provider,f.goToRealtime=function(){return d.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return 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()})})},f.addAgent=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:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.goToMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},f.saveMailAccount=function(){var e=angular.copy(f.mailAccount);"custom"===e.provider?e.provider=null:(f.originalProvider!==e.provider&&(e.Imap.modernAuthentication?e.Imap.password=null:e.Imap.CloudProviderId=null),e.Smtp.user=e.Imap.user,e.Smtp.pass=e.Imap.password,e.Imap.modernAuthentication||(e.Imap.CloudProviderId=null),e.Smtp.modernAuthentication=e.Imap.modernAuthentication,e.Smtp.CloudProviderId=e.Imap.CloudProviderId,e.Imap=_.omit(e.Imap,["host","port","service"]),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));r.mailAccount.update({id:f.mailAccount.id},e).$promise.then(function(){f.originalProvider=e.provider,l.success({title:s.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.onProviderChange=function(){"custom"!==f.mailAccount.provider&&(f.mailAccount.authentication=!0);"outlook365"!==f.mailAccount.provider&&(f.mailAccount.Imap.modernAuthentication=!1)},e.all((h=[{key:"id",value:Number(f.mailAccount.ListId)}],r.getResourcesByRole(f.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},h).then(function(e){f.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()})})),(v=[{key:"id",value:Number(f.mailAccount.mandatoryDispositionPauseId)}],r.getResourcesByRole(f.currentUser,"pause",{fields:"id,name",sort:"name",nolimit:"true"},v).then(function(e){f.pauses=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()})})))}e.$inject=["$state","$mdDialog","$document","$translate","$q","license","setting","api","toasty","Auth","mailAccount","cloudProviders","userProfile","userProfileSection","msUtils"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u,p){var g=this;function v(e){g.mailAccounts=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.hasRole("admin")?g.promise=d.mailAccount.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="MailAccounts",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){if(e.service)return c.error({msg:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_SERVICE_DELETE")});d.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(g.mailAccounts.rows,{id:e.id}),g.mailAccounts.count-=1,g.mailAccounts.rows.length||h(),c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_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:DELETEmailAccount"}];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:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.mailAccounts=n||{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.selectedMailAccounts=[],g.query={fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,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},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=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:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(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","mailAccounts","userProfile","userProfileSection","api","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,g){var v=this;function h(e){a.hide(e)}v.currentUser=c.getCurrentUser(),v.errors=[],v.setting=u,v.license=m,v.crudPermissions=p,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="MOTIONDIALER.EDIT_HOPPER",v.hopper=angular.copy(l),v.hoppers=r,v.newHopper=!1,v.contact,v.dateTime,v.hopper||(v.hopper={},v.title="MOTIONDIALER.NEW_HOPPER",v.newHopper=!0),n.params.id&&("IvrCampaign"===g?v.hopper.CampaignId=n.params.id:"QueueCampaign"==g?v.hopper.VoiceQueueId=n.params.id:v.hopper.ContactId=n.params.id),v.addNewHopper=function(){v.errors=[],d.cmHopper.save(v.hopper).$promise.then(function(e){v.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:v.hopper.name?v.hopper.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.saveHopper=function(){var t,a,i,s;v.errors=[],v.hopper.UserId=v.hopper.recallme?v.hopper.UserId:null,v.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:v.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(){v.hopper.dialTimezone=v.contact.dialTimezone,d.cmHopper.update({id:v.hopper.id},_.omit(v.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}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:v.contact.dialTimezone})})})});var n=_.find(v.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:v.hopper.name?v.hopper.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})})},v.deleteHopper=function(e){v.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:v.hopper.id}).$promise.then(function(){_.remove(v.hoppers,{id:v.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(v.hopper.name||"hopper")+" has been deleted!"}),h(v.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h,v.recalcTZTime=function(){if(_.isNil(v.hopper.VoiceQueueId)){var e=v.hopper.CampaignId;d.campaign.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}else{var e=v.hopper.VoiceQueueId;e&&d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.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){v.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:v.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(v.agents,{id:e.resourceId})}),t=null;if(v.hopper&&(t=_.find(v.agents,{id:Number(v.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(v.agents,{id:t.id});a.canSelect=!1,n.push(a)}v.agents=n})}else{var t=[],a=null;v.hopper&&(a=_.find(v.agents,{id:Number(v.hopper.UserId)}));for(var i=0;i<v.agents.length;i++)a&&v.agents[i].id===a.id&&(v.agents[i].canSelect=!1,t.push(v.agents[i]));v.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()})}),d.cmContact.get({id:v.hopper.ContactId,fields:"dialTimezone"}).$promise.then(function(e){var n;v.contact=e,_.isNil(v.hopper.VoiceQueueId)?(n=v.hopper.CampaignId)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=v.hopper.VoiceQueueId)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions","from"],angular.module("app.motiondialer").controller("HopperdateController",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:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.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,from:"IvrCampaign"}})},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,callAdditionalPhoneAfterMin:3,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:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.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,from:"QueueCampaign"}})},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)}function h(){console.log("recalcTZTime hopper",g.hopper);var e=g.hopper.Queue.id;if(e)d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(g.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})});else{d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})}});else{d.cmHopper.getTimezone({id:g.hopper.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}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.recalcTZTime=h,e.$watch("vm.contact.dialTimezone",function(){h()}),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,g.hopper.dialTimezone=g.contact.dialTimezone,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}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:g.contact.dialTimezone})})})});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.dateTime,g.contact,d.cmContact.get({id:g.hopper.Contact.id,fields:"dialTimezone"}).$promise.then(function(e){var n;g.contact=e,console.log("initTZTime hopper",g.hopper),_.isNil(g.hopper.Queue.id)?(n=g.hopper.Campaign.id)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=g.hopper.Queue.id)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})}),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,callAdditionalPhoneAfterMin,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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:m.openchannelAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,p).$promise}function v(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||g(),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 h(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getOpenchannelAccountInteractions=g,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,g()}}).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=v,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){v(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(){b()}function E(e){_.remove(v.agents.rows,["id",e.UserId])}function y(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,sort:"fullname",globalStatusFilter:"",pauseTypeFilter:"",globalQueueFilter:[],channel:v.channel},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(){y(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()})})},v.clearSelection=function(){v.query.globalQueueFilter=[]},v.selectAll=function(){_.forEach(v.queues.rows,function(e){v.query.globalQueueFilter.push(e.name)})},v.getQueuesByChannel=function(){if(v.queues&&0<v.queues.count)return;var e={type:v.queueType||"inbound",fields:"id,name",sort:"name",nolimit:"true"},n=v.channel+"Queue";return l.getResourcesByRole(v.currentUser,n,e,null).then(function(e){v.queues=e}).catch(function(e){c.error({title:s.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):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),(0<v.query.globalQueueFilter.length||!_.isEmpty(v.query.globalStatusFilter))&&b()):e.online&&b()}),d.on("user:update",function(e){var n=_.find(v.agents.rows,["id",e.id]);if(n){if(!1===e.online)return y(n);b()}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"]))}(0<v.query.globalQueueFilter.length||!_.isEmpty(v.query.globalStatusFilter))&&b()}),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);(0<v.query.globalQueueFilter.length||!_.isEmpty(v.query.globalStatusFilter))&&b()}),d.on("userVoiceQueue:save",A),d.on("userVoiceQueue:remove",E),d.on("userChatQueue:save",A),d.on("userChatQueue:remove",E),d.on("userSmsQueue:save",A),d.on("userSmsQueue:remove",E),d.on("userMailQueue:save",A),d.on("userMailQueue:remove",E),d.on("userFaxQueue:save",A),d.on("userFaxQueue:remove",E),d.on("userOpenchannelQueue:save",A),d.on("userOpenchannelQueue:remove",E),d.on("userWhatsappQueue:save",A),d.on("userWhatsappQueue:remove",E),f(),e.$on("$destroy",function(){d.removeAllListeners("user:save"),d.removeAllListeners("user:update"),d.removeAllListeners("user:agentconnect"),d.removeAllListeners("user:agentcomplete"),d.removeAllListeners("userVoiceQueue:save"),d.removeAllListeners("userVoiceQueue:remove"),d.removeAllListeners("userChatQueue:save"),d.removeAllListeners("userChatQueue:remove"),d.removeAllListeners("userSmsQueue:save"),d.removeAllListeners("userSmsQueue:remove"),d.removeAllListeners("userMailQueue:save"),d.removeAllListeners("userMailQueue:remove"),d.removeAllListeners("userFaxQueue:save"),d.removeAllListeners("userFaxQueue:remove"),d.removeAllListeners("userOpenchannelQueue:save"),d.removeAllListeners("userOpenchannelQueue:remove"),d.removeAllListeners("userWhatsappQueue:save"),d.removeAllListeners("userWhatsappQueue:remove"),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,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];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:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});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.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];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.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",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,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.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"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.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"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.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:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.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}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$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","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],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(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.originalProvider=l.mailAccount.provider,l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:(l.originalProvider!==e.provider&&(e.Smtp.modernAuthentication?e.Smtp.pass=null:e.Smtp.CloudProviderId=null),e.Smtp.modernAuthentication||(e.Smtp.CloudProviderId=null),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){l.originalProvider=e.provider,i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"smsAccount",action:"getDispositions",field:"name",params:{id:m.smsAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,p).$promise}function v(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||g(),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 h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getSmsAccountInteractions=g,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,g()}}).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=v,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){v(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,p){var g=this;function v(e){g.agents=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="Agents",g.promise=l.userProfile.getResources(g.query,v).$promise)}function f(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.agents.rows,{id:e.id}),g.agents.count-=1,g.agents.rows.length||g.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){g.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()})})}g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.agents=s||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedAgents=[],g.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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay",role:"agent",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],g.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:g.crudPermissions})},g.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:g.agents?g.agents.rows:[],crudPermissions:g.crudPermissions}})},g.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(){f(e)})},g.success=v,g.getAgents=h,g.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:g.agents.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteAgent=f,g.exportSelectedAgents=function(){var e=angular.copy(g.selectedAgents);return g.selectedAgents=[],e},g.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+g.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedAgents.forEach(function(e){f(e)}),g.selectedAgents=[]})},g.deselectAgents=function(){g.selectedAgents=[]},g.selectAllAgents=function(){g.selectedAgents=g.agents.rows};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),g.getAgents())}),p.on("user-setting:update",h),e.$on("$destroy",function(){p.removeListener("user-setting:update",h)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_AGENT",m.agent=angular.copy(i),m.agents=n,m.newAgent=!1,m.agent||(m.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},m.title="STAFF.NEW_AGENT",m.newAgent=!0),m.addNewAgent=function(){m.errors=[],s.user.save(m.agent).$promise.then(function(e){m.agents.unshift(e.toJSON()),a.success({title:"Agent properly created",msg:m.agent.name?m.agent.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];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.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveAgent=function(){m.errors=[],s.user.update({id:m.agent.id},m.agent).$promise.then(function(e){var n=_.find(m.agents,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"Agent properly saved!",msg:m.agent.name?m.agent.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.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.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteAgent=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.agent.id}).$promise.then(function(){_.remove(m.agents,{id:m.agent.id}),a.success({title:"Agent properly deleted!",msg:(m.agent.name||"agent")+" has been deleted!"}),p(m.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];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.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p;var g="user-setting:update:user-"+m.agent.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","agents","agent","api","Auth","license","setting","crudPermissions","socket"],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){var m=this;m.currentUser=l.getCurrentUser(),m.license=t,m.setting=a,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.agent=d||e.params.agent||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.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:m.agents?m.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:m.crudPermissions}})},m.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:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.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:a,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){m.agent.phoneBarEnableScreenRecordingByAgent&&(m.agent[e]=!m.agent.phoneBarEnableScreenRecordingByAgent)})},m.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){m.agent.phoneBarEnableAutomaticScreenRecording&&(m.agent[e]=!m.agent.phoneBarEnableAutomaticScreenRecording)})},m.alert=r.info,m.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},m.saveAgent=function(){m.agent=_.omit(m.agent,"userpic"),o.user.update({id:m.agent.id},m.agent).$promise.then(function(){r.success({title:"Agent updated!",msg:m.agent.name?m.agent.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshAgent=function(){return o.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})},l.hasRole("admin")?o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.contexts,{id:e.resourceId})}),t=null;if(m.agent&&(t=_.find(m.contexts,{name:m.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(m.contexts,{id:t.id});a.canSelect=!1,n.push(a)}m.contexts=n}):o.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){m.contexts=e.rows||[]})}).catch(function(e){r.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","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,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.user=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_USER",m.user=angular.copy(i),m.users=n,m.newUser=!1,m.user||(m.user={role:"user",autointernal:!0,context:"from-sip"},m.title="STAFF.NEW_USER",m.newUser=!0),m.addNewUser=function(){m.errors=[],s.user.save(m.user).$promise.then(function(e){m.users.unshift(e.toJSON()),a.success({title:"User properly created",msg:m.user.name?m.user.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];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.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveUser=function(){m.errors=[],s.user.update({id:m.user.id},m.user).$promise.then(function(e){var n=_.find(m.users,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"User properly saved!",msg:m.user.name?m.user.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.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.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteUser=function(e){if(o.getCurrentUser().id===m.user.id)return a.error({title:"User not deleted!",msg:"You can't remove yourself"});m.errors=[];var n=t.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.user.id}).$promise.then(function(){_.remove(m.users,{id:m.user.id}),a.success({title:"User properly deleted!",msg:(m.user.name||"user")+" has been deleted!"}),p(m.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];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.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p,s.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var g="user-setting:update:user-"+m.user.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","users","user","api","Auth","license","setting","crudPermissions","socket"],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){var m=this;m.currentUser=l.getCurrentUser(),m.license=i,m.setting=s,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.user=d||e.params.user||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.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:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.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:s,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.alert=r.info,m.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},m.saveUser=function(){m.user=_.omit(m.user,"userpic"),o.user.update({id:m.user.id},m.user).$promise.then(function(){r.success({title:"User updated!",msg:m.user.name?m.user.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshUser=function(){return o.user.get({id:m.user.id,userSetting:!0}).$promise.then(function(e){m.user=e})},o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.user.getApiKey({id:m.user.id}).$promise.then(function(e){m.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){r.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","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,t,a,i,s,n,o,r,l,d,c,m,u,p){var g=this;g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.users=n||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.table="users",g.listOrder="",g.listOrderAsc=null,g.selectedUsers=[],g.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,adSsoEnabled",role:"admin,user",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.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"),"")}),g.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"),"")}),g.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"),"")}),g.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:g.crudPermissions})},g.deleteconfirm=function(e,n){var t=a.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");a.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},g.success=f,g.getUsers=b,g.createOrEditUser=function(e,n){a.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:g.users.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteUser=A,g.exportSelectedUsers=function(){var e=angular.copy(g.selectedUsers);return g.selectedUsers=[],e},g.deleteSelectedUsers=function(e){var n=a.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+g.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedUsers.forEach(function(e){A(e)}),g.selectedUsers=[]})},g.deselectUsers=function(){g.selectedUsers=[]},g.selectAllUsers=function(){g.selectedUsers=g.users.rows},l.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=!0,h=1;function f(e){g.users=e||{count:0,rows:[]}}function b(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,f).$promise:(g.query.id=g.userProfile.id,g.query.section="Users",g.promise=l.userProfile.getResources(g.query,f).$promise)}function A(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.users.rows,{id:e.id}),g.users.count-=1,g.users.rows.length||g.getUsers(),d.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){g.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()})})}e.$watch("vm.query.filter",function(e,n){v?s(function(){v=!1}):(n||(h=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=h),g.getUsers())}),p.on("user-setting:update",b),e.$on("$destroy",function(){p.removeListener("user-setting:update",b)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","users","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],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,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contact_item_types=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="contact_item_types",f.listOrder="",f.listOrderAsc=null,f.selectedContactItemType=[],f.query={fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{contactItemType:e,contact_item_types:f.contact_item_types.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("contactItemType")+"?").htmlContent("<b>"+(e.name||"contactItemType")+"</b> will be deleted.").ariaLabel("delete contactItemType").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContactItemType=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.contactItemType.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ContactItemType",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContactItemType=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{contactItemType:n,contact_item_types:f.contact_item_types.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContactItemType=y,f.exportSelectedContactItemType=function(){var e=angular.copy(f.selectedContactItemType);return f.selectedContactItemType=[],e},f.deleteSelectedContactItemType=function(e){var n=i.confirm().title("Are you sure want to delete the selected contact_item_types?").htmlContent("<b>"+f.selectedContactItemType.length+" selected</b> will be deleted.").ariaLabel("delete ContactItemTypes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContactItemType.forEach(function(e){y(e)}),f.selectedContactItemType=[]})},f.deselectContactItemType=function(){f.selectedContactItemType=[]},f.selectAllContactItemType=function(){f.selectedContactItemType=f.contact_item_types.rows};var b=!0,A=1;function E(e){f.contact_item_types=e||{count:0,rows:[]}}function y(e){m.contactItemType.delete({id:e.id}).$promise.then(function(){_.remove(f.contact_item_types.rows,{id:e.id}),f.contact_item_types.count-=1,f.contact_item_types.rows.length||f.getContactItemType(),p.success({title:_.startCase("ContactItemType")+" 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:DELETEcontactItemType"}];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:DELETEcontactItemType",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.getContactItemType())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contact_item_types","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("ContactItemTypesController",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_CONTACTITEMTYPE",g.contactItemType=angular.copy(l),g.contact_item_types=r,g.newContactItemType=!1,g.contactItemType||(g.contactItemType={rgbBackgroundColor:"#2196f3"},g.title="TOOLS.NEW_CONTACTITEMTYPE",g.newContactItemType=!0),g.addNewContactItemType=function(){g.errors=[],d.contactItemType.save(g.contactItemType).$promise.then(function(e){g.contact_item_types.unshift(e.toJSON()),o.success({title:"ContactItemType properly created",msg:g.contactItemType.name?g.contactItemType.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.contactItemType.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.contactItemType.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContactItemType=function(){g.errors=[],isNaN(g.contactItemType.OrderBy)?alert(s.instant("TOOLS.ORDER_BY_NUMERIC")):d.contactItemType.update({id:g.contactItemType.id},g.contactItemType).$promise.then(function(e){var n=_.find(g.contact_item_types,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ContactItemType properly saved!",msg:g.contactItemType.name?g.contactItemType.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.contactItemType.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.contactItemType.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContactItemType=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The contactItemType will be deleted.").ariaLabel("Delete ContactItemType").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.contactItemType.delete({id:g.contactItemType.id}).$promise.then(function(){_.remove(g.contact_item_types,{id:g.contactItemType.id}),o.success({title:"ContactItemType properly deleted!",msg:(g.contactItemType.name||"contactItemType")+" has been deleted!"}),v(g.contactItemType)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.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.contactItemType.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","contact_item_types","contactItemType","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactItemTypeDialogController",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,i,s,o){var r=this;function l(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.customDashboard={},r.init=function(e,n){r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:l},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:l},r.customDashboard.widgets=[];var t=_.map(["chat","fax","mail","openchannel","sms","voice","whatsapp"],function(e){return"voice"===e?o.rpc.getVoiceQueues({fields:"id,name"}).$promise.then(function(e){r.voiceQueues=e}):(a=(t="chat"===(n=e)?n+"Website":n+"Account")+"s",o[t].get({fields:"id,name"}).$promise.then(function(e){r[a]=e||{count:0,rows:[]}}));var n,t,a});return i.all(t).then(function(){return o.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=r.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),e.rows[n].smsAccounts=r.smsAccounts,e.rows[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),e.rows[n].faxAccounts=r.faxAccounts,e.rows[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),e.rows[n].mailAccounts=r.mailAccounts,e.rows[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=r.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=r.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=r.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.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",r.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})})},r.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:r.customDashboard.widgets,license:null,setting:null,crudPermissions:r.crudPermissions}}).then(function(e){if(e)for(var n=0;n<r.customDashboard.widgets.length;n+=1)r.customDashboard.widgets[n].id===e.id&&(r.customDashboard.widgets[n].attrs=e.attrs,r.customDashboard.widgets[n].voiceQueues=r.voiceQueues,r.customDashboard.widgets[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),r.customDashboard.widgets[n].smsAccounts=r.smsAccounts,r.customDashboard.widgets[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),r.customDashboard.widgets[n].faxAccounts=r.faxAccounts,r.customDashboard.widgets[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),r.customDashboard.widgets[n].mailAccounts=r.mailAccounts,r.customDashboard.widgets[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),r.customDashboard.widgets[n].openchannelAccounts=r.openchannelAccounts,r.customDashboard.widgets[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),r.customDashboard.widgets[n].chatWebsites=r.chatWebsites,r.customDashboard.widgets[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),r.customDashboard.widgets[n].whatsappAccounts=r.whatsappAccounts,r.customDashboard.widgets[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),r.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+r.customDashboard.widgets[n].type+"/ms-widget-engine."+r.customDashboard.widgets[n].type+".html")})},r.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 o.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(r.customDashboard.widgets,{id:n.id}),s.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){r.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];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:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","$q","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",attrChannel:"voice",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.onTypeChange=function(){["web-report","iframe","clock","custom"].includes(g.dashboarditem.type)&&(g.dashboarditem.attrEmailAccounts=null,g.dashboarditem.attrFaxAccounts=null,g.dashboarditem.attrSmsAccounts=null,g.dashboarditem.attrOpenchannelAccounts=null,g.dashboarditem.attrWhatsappAccounts=null,g.dashboarditem.attrChatWebsites=null)},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()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:MailAccounts}).$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.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:FaxAccounts}).$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.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:SmsAccounts}).$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.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:OpenchannelAccounts}).$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.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:WhatsappAccounts}).$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.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:ChatWebsites}).$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.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",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",offlineMessage:"Offline_Message"},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",offlineMessage:"Offline_Message"},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(){O(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=O,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){O(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 O(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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:m.whatsappAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,p).$promise}function v(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||g(),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 h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getWhatsappAccountInteractions=g,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,g()}}).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=v,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){v(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,a,o,i,s,r,l,d,c,m,u){var p=this;function g(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function v(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function h(e,n){var t={user:_.pick(r.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),i.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!r.hasPermission(e)}})}function f(e){return _.map(e.children,function(e){return e.id})}s.clear(),p.isAgent=function(){return r.getCurrentUser()&&r.hasRole("agent")},o.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return r.hasRole("agent")}}),d.version.get().$promise.then(function(e){p.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(){p.version="UNKNOWN"}).finally(function(){o.saveItem("version",{title:"VERSION "+p.version,group:!0,weight:2,hidden:function(){return r.hasRole("agent")}})}),r.isLoggedIn()&&(null===m.userSettings&&m.getUserSettingForUser(),l.gray&&s.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),d.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,o.saveItem("apps.dashboards.custom_"+n,g(n,e.rows[t]))}),d.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){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,o.saveItem("apps.plugins.plugin_"+n,v(n,t[a]));o.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(var s=0;s<i.length;s+=1)h(n=88888+i[s].id,i[s])}})),l.custom&&!c.defaultPageTitle&&c.pageTitle&&angular.element("#pageTitle").html(c.pageTitle),o.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(101)&&!r.hasRole("admin")}}),o.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||r.hasRole("user")||!r.hasPermission(201)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(202)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(203)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(204)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(205)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!l.cm||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(301)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(302)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(304)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(303)&&!r.hasRole("admin")}}),o.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(401)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(405)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(406)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(407)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(408)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(409)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(410)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(402)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(403)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(404)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(411)&&!r.hasRole("admin")}}),o.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!l.chat||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(501)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(502)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(510)&&!r.hasRole("admin")}}),o.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!l.mail||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(601)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(602)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(603)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(610)&&!r.hasRole("admin")}}),o.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!l.messaging||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(701)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(702)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(710)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!l.openchannel||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(801)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(802)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(810)&&!r.hasRole("admin")}}),o.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!l.fax||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(901)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(902)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(910)&&!r.hasRole("admin")}}),o.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1001)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1003)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1004)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1005)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1006)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1007)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1008)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1009)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1011)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1012)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.contact_item_types",{id:1013,title:"ContactItemType",route:"contactItemType",translate:"TOOLS.CONTACTITEMTYPE",state:"app.tools.contact_item_types",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1013)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1002)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1010)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1101)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1102)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1103)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1201)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1202)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1203)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1301)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1302)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1303)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1305)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1306)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1307)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1308)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1309)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1310)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1304)&&!r.hasRole("admin")}}),o.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")||r.hasRole("admin")&&!r.getCurrentUser().settingsEnabled}}),o.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!l.custom||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.CLOUD_PROVIDERS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!l.update||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!l.dialer||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1501)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1502)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1510)&&!r.hasRole("admin")}}),o.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!c.viewHelpSection||r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!l.jscripty||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1701)&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1801)&&!r.hasRole("admin")}}),o.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!l.screenrecording||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(2001)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!l.whatsapp||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2101)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2102)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(2110)&&!r.hasRole("admin")}}),o.sort(),i.saveItem("apps",{title:"APPS",group:!0,weight:1}),i.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),i.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!r.hasPermission(101)}}),i.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!r.hasPermission(115)}}),i.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!l.cm||!r.hasPermission(102)}}),i.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!l.cm||!r.hasPermission(103)}}),i.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!l.dialer||!r.hasPermission(113)}}),i.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!l.voice||!r.hasPermission(110)}}),i.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!l.voice||!r.hasPermission(111)}}),i.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!l.voice||!r.hasPermission(104)}}),i.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!l.chat||!r.hasPermission(105)}}),i.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!l.mail||!r.hasPermission(106)}}),i.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!l.messaging||!r.hasPermission(107)}}),i.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!l.openchannel||!r.hasPermission(108)}}),i.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!l.fax||!r.hasPermission(109)}}),i.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!l.whatsapp||!r.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(s.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||s.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})}),n.$on("client-side-logging:enabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_ENABLED_MSG")})}),n.$on("client-side-logging:disabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_DISABLED_MSG")})}),a.onbeforeunload=function(){r.isTelephone()||u.flush()}}e.$inject=["$scope","$rootScope","$translate","$window","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","UserSettingService","ClientSideLoggingService"],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.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(e,n,t,a,i,s,o,r,l){this.items=[{font_icon:"icon-hangouts",class:"green-700-fg",label:"chat",title:"TOOLBAR.CHAT",value:"chat",permission:r.chat,enabled:l.chatAutoanswer,delay:l.chatAutoanswerDelay},{font_icon:"icon-email",class:"teal-fg",label:"email",title:"TOOLBAR.EMAIL",value:"email",permission:r.mail,enabled:l.emailAutoanswer,delay:l.emailAutoanswerDelay},{font_icon:"icon-message-text",class:"orange-fg",label:"sms",title:"TOOLBAR.SMS",value:"sms",permission:r.messaging,enabled:l.smsAutoanswer,delay:l.smsAutoanswerDelay},{font_icon:"icon-google-earth",class:"amber-fg",label:"openchannel",title:"TOOLBAR.OPENCHANNEL",value:"openchannel",permission:r.openchannel,enabled:l.openchannelAutoanswer,delay:l.openchannelAutoanswerDelay},{font_icon:"icon-deskphone",class:"grey-A200-fg",label:"fax",title:"TOOLBAR.FAX",value:"fax",permission:r.fax,enabled:l.faxAutoanswer,delay:l.faxAutoanswerDelay},{font_icon:"icon-whatsapp",class:"lime-A700-fg",label:"whatsapp",title:"TOOLBAR.WHATSAPP",value:"whatsapp",permission:r.whatsapp,enabled:l.whatsappAutoanswer,delay:l.whatsappAutoanswerDelay}],this.closeDialog=function(){a.hide()}}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","socket","license","user"],angular.module("app.toolbar").controller("AutoAnswerNotificationsDialogController",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()}function c(e){return s.cmContact.getAdditionalPhones({id:e}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");l.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");l.additionalItems=[];for(var s=0;s<n.length;s++)l.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})})}l.customFieldsMap=r&&r.rows?_.mapValues(_.keyBy(r.rows,function(e){return"cf_"+e.id}),"name"):{},l.errors=[],l.hopperIds=[],l.additionalItems=[],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(){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"})):(c(e.Contact.id),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"})):(c(e.Contact.id),_.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"})):(c(e.Contact.id),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","dialTimezone","utcOffset","AdditionalPhones","additionalPhones","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},l.isNil=function(e){return _.isNil(e)},_.isNil(l.preview)||c(l.preview.Contact.id),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).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),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,S){var T,I=this;I.voiceQueues={},I.polling=!0,t.global={search:""},I.pauses=[],I.license=b,I.currentUser=v.getCurrentUser(),I.unreadTotalMessages=0,I.unreadTotalGroupMessages=0,I.contacts=0,"agent"===I.currentUser.role&&(T=E(function(){_.some(I.voiceQueues,{dialMethod:"preview",dialActive:!0})&&I.license.dialer&&I.polling?(I.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(I.contacts=e.contacts)}).finally(function(){I.polling=!0})):I.contacts=0},14999)),I.setting=A,I.bodyEl=angular.element("body"),I.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:I.license.webrtc,phoneBarExpires:I.currentUser.phoneBarExpires,phoneBarPrefixRequired:I.currentUser.phoneBarPrefixRequired,wssPort:I.currentUser.wssPort},I.webRTCSessions=[],I.autoanswerIconColor=I.currentUser.chatAutoanswer||I.currentUser.faxAutoanswer||I.currentUser.smsAutoanswer||I.currentUser.emailAutoanswer||I.currentUser.openchannelAutoanswer||I.currentUser.whatsappAutoanswer?"green-700-fg":"gray-700-fg",I.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},I.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"}],I.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 O=["ar","fa","he"],C=S.getLogger("toolbar");function w(){h.connect(),h.on("user:update",I.onUserUpdate),h.on("user:called",I.onUserCalled),h.on("chatInternalMessage:save",I.onInternalMessageSave),h.on("chatInternalMessage:update",I.onInternalMessageUpdate),h.on("userVoiceQueue:save",I.onUserVoiceQueue),h.on("voiceQueue:save",I.onVoiceQueue),h.on("userVoiceQueue:remove",I.onUserVoiceQueue),h.on("voiceQueue:remove",I.onVoiceQueue),h.on("voiceQueue:update",I.onVoiceQueue),h.on("user:forcelogout",L),h.on("userNotification:send",k)}function R(){h.disconnect("logout")}function x(e){I.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function N(){I.promise=f.user.getQueues(I.query,x).$promise}function D(e){return R(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(e)}).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){C.error(e)})}function P(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:I.user,setting:A,reset:n}})}function L(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return R(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return 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){C.error(e)})}function k(e){var n=e;if(I.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})}}I.toggleSidenav=function(e){i(e).toggle()},I.logout=D,I.changeLanguage=function(e){if(!I.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"})}I.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=O.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"},I.setUserStatus=function(e){I.userStatus=e},I.toggleHorizontalMobileMenu=function(){I.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},I.toggleMsNavigationFolded=function(){g.toggleFolded()},I.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},I.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},I.openSettings=function(){t.$broadcast("webrtc::settings")},I.changePassword=P,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.onUserUpdate=function(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;R();var t=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(){n=setTimeout(function(){c.cancel()},6e4)}});c.show(t).then(function(){return clearTimeout(n),v.queueLogin().then(function(){w(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),D(!0)})}else D(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)},I.onUserCalled=function(e){if(2===I.currentUser.showWebBar&&"agent"===I.currentUser.role){var n=I.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.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},I.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(I.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:I.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()})})},I.unpause=function(){return f.user.unpause({id:I.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()})})},I.preview=function(n){return I.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:I.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){I.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(){I.disable=!1})},I.autoAnswerNotificationsDialog=function(e){I.autoanswerNotifications;c.show({controller:"AutoAnswerNotificationsDialogController",controllerAs:"vm",templateUrl:"app/toolbar/autoanswers/dialog.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:I.license,user:I.currentUser}})},I.getLogo=function(){return I.setting.defaultHeaderWhiteLabel?"xCALLY Motion":I.setting.headerWhiteLabel},I.userIsNotPhonebar=function(){return"admin"===I.currentUser.role||"user"===I.currentUser.role||"agent"===I.currentUser.role&&0!==I.currentUser.showWebBar},I.onInternalMessageSave=function(e){e.ToId!==I.currentUser.id||e.ChatGroupId||(I.unreadTotalMessages+=1);e.ToId===I.currentUser.id&&e.FromId!==I.currentUser.id&&!e.read&&e.ChatGroupId&&I.unreadTotalGroupMessages++},I.onInternalMessageUpdate=function(e){e.ToId===I.currentUser.id&&e.read&&0<I.unreadTotalMessages&&!e.ChatGroupId&&(I.unreadTotalMessages-=1);e.ToId===I.currentUser.id&&e.read&&e.ChatGroupId&&0<I.unreadTotalGroupMessages&&I.unreadTotalGroupMessages--},I.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&N()},I.onVoiceQueue=function(){N()},function(){I.user=v.getCurrentUser(),I.conf.ha1=I.user.md5secret,I.conf.id=I.user.id,I.conf.name=I.user.name,I.conf.fullname=I.user.fullname,I.conf.internal=I.user.internal,I.conf.recording=I.user.phoneBarEnableRecording,I.conf.autoAnswer=I.user.phoneBarAutoAnswer,I.conf.enableSettings=I.user.phoneBarEnableSettings,I.conf.enableDtmfTone=I.user.phoneBarEnableDtmfTone,I.conf.autoAnswerDelay=I.user.phoneBarAutoAnswerDelay,I.userStatus=I.userStatusOptions[0];var e=u.get("motion.language");e&&I.languages.hasOwnProperty(e)?I.selectedLanguage=I.languages[e]:I.selectedLanguage=I.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){I.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()&&I.setting.securePassword)if(I.user.passwordResetAt){var n=moment(I.user.passwordResetAt).add(I.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?P(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 P(null,!0)}(),N(),w(),f.chatInternalMessage.get({fields:"FromId",ToId:I.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){I.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"),h.removeAllListeners("userAutoanswerNotification:send"),T&&(E.cancel(T),T=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","ClientSideLoggingService"],angular.module("app.toolbar").controller("ToolbarController",e)}(),function(){"use strict";function e(a,i,t,s,e){var n={updateUserSettingById:function(e,n){if("number"==typeof e)return i.userSetting.update({id:e},n).$promise;throw new Error("User setting id is missing")}},o=!1,r=a.getCurrentUser(),l=r?r.userSetting:null,d=function(e){var n="user-setting:update:user-"+e;t.$on("local:user-updated",c),s.on(n,c)};function c(){return o?e(function(e){e(l)}):(o=!0,function(e){var n=a.getCurrentUser(),t=null;t="admin"===n.role&&"number"==typeof e?i.user.get({id:e,userSetting:!0}).$promise:i.user.whoami({userSetting:!0}).$promise;return t.then(function(e){return a.setCurrentUser(e),e.userSetting})}().then(function(e){l=e,t.$emit("local:user-setting-updated",l)}).finally(function(){o=!1}))}return r&&d(r.id),t.$on("local:user-login",d),t.$on("local:user-logout",function(e){var n="user-setting:update:user-"+e;s.removeListener(n,c),l=null}),n}e.$inject=["Auth","api","$rootScope","socket","$q"],angular.module("app.user-setting").service("UserSettingService",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","dialTimezone","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-client-side-logging/ms-client-side-logging-icon.html",'<md-icon ng-style="vm.styleColor" md-font-icon="{{ vm.styleIcon }}">\n  <md-tooltip class="client-side-logging-tooltip">\n    <span ng-bind-html="vm.tooltipHTML"></span>\n  </md-tooltip>\n</md-icon>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging.html",'<md-content layout="column">\n  <form name="clientSideLoggingSettingsForm">\n    <div flex layout="column" layout-align="stretch center">\n      <div ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-amber-500-bg p-10" layout="row" layout-align="start center">\n        <span class="no-margin font-size-14 line-height-30" translate="STAFF.CLIENT_LOGS_ALL_ENABLED_WARNING" flex></span>\n      </div>\n      <md-input-container>\n        <md-switch ng-model="vm.user.userSetting.clientSideLoggingEnabled" aria-label="Manage client side logging" ng-change="vm.onEnabledSwitchChange()">\n          {{ vm.user.userSetting.clientSideLoggingEnabled ? \'STAFF.CLIENT_LOGS_ENABLED\' : \'STAFF.CLIENT_LOGS_DISABLED\' | translate }}\n        </md-switch>\n      </md-input-container>\n      <h2 ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-subhead mt-0">{{ vm.clientSideLoggingEnabledSince }}</h2>\n    </div>\n    <div layout="column" layout-align="stretch center">\n      <md-input-container ng-if="vm.user.userSetting.clientSideLoggingEnabled">\n        <label>{{ \'STAFF.CLIENT_LOGS_LOGLEVEL_SELECT\' | translate }}</label>\n        <md-select ng-if="vm.user.userSetting.clientSideLoggingEnabled" ng-model="vm.user.userSetting.clientSideLoggingLevel" placeholder="Debugging level" ng-change="vm.onLogLevelSelectionChange()" flex="30">\n          <md-option ng-value="loggingLevel" ng-repeat="loggingLevel in vm.availableClientSideLoggingLevels">\n            <md-icon ng-style="vm.computeStyleForLoggingLevel(loggingLevel)" md-font-icon="{{ loggingLevel === \'info\' ? \'icon-checkbox-blank-circle-outline\' : \'icon-checkbox-blank-circle\' }}"></md-icon>\n            {{ loggingLevel }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </div>\n  </form>\n</md-content>'),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">\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"></angucomplete-alt>\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">\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">\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" 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" >\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" ng-change="ngChange()">\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.\' +  vm.label | 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="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="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" 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="md-hue-2" 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" 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" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" 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" 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" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" 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" 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" 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="md-hue-2" 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" 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" 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">\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 || vm.adSsoEnabled" 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\n      <md-button ng-if="vm.adSsoEnabled" ng-click="vm.loginAD()" class="md-raised ad">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fas fa-ad" class="s16"></md-icon>\n            <span style="text-transform: none" translate="LOGIN.WITH_AD">Log in with Active Directory</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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" 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>\n      <div class="error-list">\n        <div ng-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.textButtonColor" label="{{\'CHAT.TEXT_BUTTON_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              <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\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LABELTEXT">labelText</label>\n                <input type="text" name="labelText" ng-model="vm.chatWebsite.labelText" md-maxlength="6" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'labelText\'].$error" ng-show="appearanceForm[\'labelText\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LABELTEXT_REQUIRED">labelText field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.LABELTEXT_MAX_LENGTH" translate-values=\'{max: 6}\'>labelText\n                      must have a maximum length equal to 6</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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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-primary" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContactsUpdates($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.UPDATES_EXISTING_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.UPDATE_EXISTING_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-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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        <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      <md-input-container class="md-block" flex-gt-sm="">\n        <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n          <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n            {{ $chip.phone }}\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n      <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="100">\n        <div class="pb-16" layout="column" layout-align="start center">\n          <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n        </div>\n        <form flex name="additionalPhonesForm" novalidate>\n          <div ng-repeat="additionalPhone in vm.additionalItems">\n            <div layout="row" flex="1">\n              <md-input-container class="md-block" flex="50">\n                <label>{{$index}} - {{additionalPhone.phone}}</label>\n                <md-select ng-model="vm.additionalItemTypes[$index]" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-block" flex="50">\n                <input ng-model="additionalPhone.description" ng-cloak>\n              </md-input-container>\n            </div>\n          </div>\n        </form>\n      </div>\n\n      <md-input-container>\n        <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n        <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone"></ms-timezone>\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        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</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">{{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          <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 && additionalPhonesForm.$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                  </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">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n                      <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\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="CONTACTMANAGER.ADDITIONAL_PHONES">Additional Phones</label>\n                      <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                        <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                          {{ $chip.phone }}\n                        </md-chip-template>\n                      </md-chips>\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\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.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n              </div>\n              <form name="additionalPhonesForm" novalidate>\n                <div ng-repeat="additionalPhone in vm.additionalItems">\n                  <div layout="row">\n                    <md-button class="md-icon-button" ng-show="!$first" ng-click="vm.moveUp($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_UP\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-up"></md-icon>\n                    </md-button>\n                    <md-button class="md-icon-button md-primary" ng-show="!$last" ng-click="vm.moveDown($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_DOWN\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-down"></md-icon>\n                    </md-button>\n                  </div>\n                  <div layout="column" style="margin-bottom:5px;border-bottom: 1px solid gray;">\n                    <md-input-container class="md-block">\n                      <label>{{$index}} - {{additionalPhone.phone}}</label>\n                      <md-select ng-model="additionalPhone.ItemTypeId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                      </md-select>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                      <input ng-model="additionalPhone.description" ng-cloak>\n                    </md-input-container>\n                  </div>\n                </div>\n              </form>\n            </div>\n\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\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/import/importUpdates.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.UPDATE_EXISTING_CONTACTS">Update Existing 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 class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\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/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\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.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),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  \x3c!-- home --\x3e\n  <div layout="row" class="agent-content overflow-hidden" ng-if="vm.isActiveTab(0)" 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  \x3c!-- other tabs --\x3e\n  <div ng-if="tab.id !== 0 && vm.isActiveTab(tab.id)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type" flex layout="column">\n    <div ng-switch-when="contact" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" flex layout="column" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div flex layout="column" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="iframe" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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 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 ng-if="(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum}).length>0">\n                      <span ng-style="{\'color\':(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].color} ">\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].description }} -\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].type }}\n                      </span>\n                    </div>\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                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                      <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                        {{ $chip.phone }}\n                      </md-chip-template>\n                    </md-chips>\n                  </md-input-container>\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.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n                    </div>\n                    <form name="additionalPhonesForm" novalidate>\n                      <div ng-repeat="additionalPhone in vm.additionalItems" layout="column">\n                        <md-input-container class="md-block">\n                          <label>{{$index}} - {{additionalPhone.phone}}</label>\n                          <md-select ng-model="vm.additionalItemTypes[$index]">\n                            <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                          </md-select>\n                        </md-input-container>\n                        <md-input-container class="md-block">\n                          <input ng-model="additionalPhone.description" ng-cloak>\n                        </md-input-container>\n                      </div>\n                    </form>\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                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n                    <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\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>\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" ng-change="vm.recalcTZTime()" 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" ng-change="vm.recalcTZTime()" 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 layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledAt}}">\n            </md-input-container>\n          </div>\n        </div>\n        <div ng-if="(!vm.dialer || (vm.dialer && vm.recallme && vm.user.selectRecallMeCampaign)) && vm.queueCampaigns.rows.length > 0" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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">\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>\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="agent-general-home-navbar md-primary-bg width-50">\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 class="agent-general-home-sections" layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto; overflow-x: hidden" flex>\n      <div ng-switch-when="agentPresence" class="home-agent-presence">\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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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 class="home-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" ng-mouseleave="vm.resetTooltipPosition($event)" ng-mouseenter="vm.adjustTooltipPosition($event)">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\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"><span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span></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 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-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>\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 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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n          <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n        </md-switch>\n        \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n      </md-input-container>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\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" ng-required="true">\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\n      </div>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n            <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders">{{provider.name}}</md-option>\n          </md-select>\n        </md-input-container>\n      </div>\n\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        <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 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">\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="modernAuthentication">{{ \'INTEGRATIONS.MODERN_AUTHENTICATION\' | 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="modernAuthentication ">\n                  <md-icon md-colors="{color: {{dynamics365Account.modernAuthentication ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{dynamics365Account.modernAuthentication ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n                  <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n                </md-switch>\n                \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n                  <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n                    <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders.rows">{{provider.name}}</md-option>\n                  </md-select>\n                </md-input-container>\n              </div>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.USERNAME">Username</label>\n                  \x3c!-- <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit"> --\x3e\n                  <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\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\n\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" ng-required="vm.dynamics365Account.modernAuthentication == false">\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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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              </div>\n\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\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                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">ADVANCED</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div class="dynamics365Account-detail-form-container general md-background-bg">\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="INTEGRATIONS.ADVANCED">ADVANCED</div>\n                        </div>\n                        <form name="vm_cc.advancedForm" novalidate>\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.MODULECREATE">Module Create</label>\n                            <md-select name="type" ng-model="vm_cc.dynamics365Configuration.moduleCreate" required>\n                              <md-option ng-value="\'contact\'">{{\'INTEGRATIONS.DYNAMIC365CONTACT\' | translate}}</md-option>\n                              <md-option ng-value="\'nothing\'">{{\'INTEGRATIONS.DYNAMIC365NOTHING\' | translate}}</md-option>\n                            </md-select>\n                            <div ng-messages="vm_cc.advancedForm[\'moduleCreate\'].$error" ng-show="vm_cc.advancedForm[\'moduleCreate\'].$touched" role="alert">\n                              <div ng-message="required">\n                                <span translate="INTEGRATIONS.ERRORS.MODULECREATE_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.ADDITIONALSEARCHCONTACT">Additional search contact</label>\n                            <input type="" name="additionalSearchContact" ng-model="vm_cc.dynamics365Configuration.additionalSearchContact" autofocus>\n                          </md-input-container>\n                          <div layout="row" layout-align="end center">\n                            <md-button type="submit" ng-click="vm_cc.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="vm_cc.advancedForm.$invalid || vm_cc.advancedForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                              SAVE\n                            </md-button>\n                          </div>\n                        </form>\n                      </div>\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.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          </div>\n\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\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 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">\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.newMailAccount ? \'MAIL.NEW_MAILACCOUNT\' : \'MAIL.EDIT_MAILACCOUNT\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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      <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="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n          <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'provider\'].$error" ng-show="mailAccountForm[\'provider\'].$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      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\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            <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 class="md-block mb-0">\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            <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        </div>\n      </div>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\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            <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 class="md-block mb-0">\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            <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        </div>\n      </div>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'" class="md-block pt-0">\n        <md-switch ng-model="vm.mailAccount.authentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'outlook365\'" class="md-block">\n        <md-switch ng-model="vm.mailAccount.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n      </md-input-container>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.authentication && vm.mailAccount.provider">\n        <md-input-container class="md-block">\n          <label translate="MAIL.USERNAME">Username</label>\n          <input type="text" name="username" ng-model="vm.mailAccount.username" ng-required="true">\n          <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n          <div ng-messages="mailAccountForm[\'username\'].$error" ng-show="mailAccountForm[\'username\'].$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 ng-if="vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select name="cloudProvider" ng-model="vm.mailAccount.CloudProviderId" required>\n            <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n          </md-select>\n          <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n          <div ng-messages="mailAccountForm[\'cloudProvider\'].$error" ng-show="mailAccountForm[\'cloudProvider\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="!vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.mailAccount.password" translate-attr-placeholder="MAIL.PASSWORD" required>\n          <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n          <div ng-messages="mailAccountForm[\'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      </div>\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        <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 MAIL ACCOUNT\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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  <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.goToRealtime()" 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.addAgent(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) || (credentialsForm.$invalid) || (templateForm.$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\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.SERVICE">Service</label>\n                <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" class="mb-20" required>\n                  <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</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                <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                <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            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider !== \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.AUTHENTICATION">Authentication</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container authentication 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.CREDENTIALS">Credentials</div>\n            </div>\n            <form name="credentialsForm" novalidate>\n              <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="credentialsForm[\'username\'].$error" ng-show="credentialsForm[\'username\'].$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 ng-if="vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n                <md-select name="cloudProvider" ng-model="vm.mailAccount.Imap.CloudProviderId" required>\n                  <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n                <div ng-messages="credentialsForm[\'cloudProvider\'].$error" ng-show="credentialsForm[\'cloudProvider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="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="credentialsForm[\'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            </form>\n          </div>\n\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                <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 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                <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">Connection Timeout</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                <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">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout 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">Authorization Timeout</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                <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">Authorizazion Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorizazion Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\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.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                <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 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                <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 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" 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                <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">\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              <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                <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">Connection Timeout</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                <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">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout 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">Authorization Timeout</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                <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">Authorization Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorization Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\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.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 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 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 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" 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">\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            </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 template 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.TEMPLATE">TEMPLATE</div>\n            </div>\n            <form name="templateForm" novalidate>\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="templateForm[\'fontFamily\'].$error" ng-show="templateForm[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="templateForm[\'fontSize\'].$error" ng-show="templateForm[\'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            </form>\n          </div>\n\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\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\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" 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" 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</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\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-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</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="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header 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\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\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 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="provider">{{ \'MAIL.SERVICE\' | 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" ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)">\n                <td md-cell class="id">{{mailAccount.id}}</td>\n                <td md-cell class="name">{{mailAccount.name}}</td>\n                <td md-cell class="provider">{{ mailAccount.provider ? (mailAccount.provider | startcase) : (\'MAIL.CUSTOM\' | translate) }}</td>\n                <td md-cell class="key">{{mailAccount.key}}</td>\n                <td md-cell class="email">{{mailAccount.email}}</td>\n                <td 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 md-cell class="description ">{{mailAccount.description}}</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                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(mailAccount, $event)" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.verifySMTP(mailAccount, $event)" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          Verify SMTP\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToInteractions(mailAccount, $event)" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Go To Interactions\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToRealtime()" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          Go To Realtime\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.addAgent(mailAccount, $event)" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          Add Agent To Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event)" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete Email 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: \'{{\'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    </div>\n  </div>\n\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\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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/hopperdate/hopperdate.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" ng-change="vm.recalcTZTime()" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime">\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" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime">\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\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-change="vm.recalcTZTime()" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n            </md-input-container>\n          </div>\n        </div>\n      </md-input-container>\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\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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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.dateTime" ng-change="vm.recalcTZTime()">\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.dateTime" ng-change="vm.recalcTZTime()">\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      <div layout="row">\n        <div flex class="md-block">\n          <md-input-container class="md-block" flex-gt-sm="">\n            <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n            <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n          </md-input-container>\n        </div>\n        <div flex class="md-block">\n          <md-input-container class="md-block">\n            <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n            <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n          </md-input-container>\n        </div>\n      </div>\n\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) || (additionalphonesForm.$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          <div class="queueCampaign-detail-form-container additionalphones 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.ADDITIONALPHONES">ADDITIONALPHONES</div>\n            </div>\n            <form name="additionalphonesForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLADDITIONALPHONEAFTERMIN">CallAdditionalPhoneAfterMin</label>\n                <input type="number" name="callAdditionalPhoneAfterMin" ng-model="vm.queueCampaign.callAdditionalPhoneAfterMin" min="1" max="99999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$error" ng-show="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_REQUIRED">CallAdditionalPhoneAfterMin field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_LESS_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin 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              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewRecallmeReminder" aria-label="Preview_Recall_Me_Reminder" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_RECALL_ME_REMINDER">Preview_Recall_Me_Reminder</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_RECALL_ME_REMINDER"></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 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">\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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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 quick-filter-container">\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    <md-select ng-model="vm.query.globalQueueFilter" multiple class="md-caption margin-left-10 mw-150" placeholder="{{ \'DASHBOARDS.SELECT_QUEUE\' | translate }}" md-on-open="vm.getQueuesByChannel()" md-on-close="vm.getAgents()">\n      <md-button ng-click="vm.selectAll()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows">{{\n        queue.name }}</md-option>\n      <md-button ng-click="vm.clearSelection()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\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            <span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">{{ 'VOICE.PAUSE' | translate | uppercase }} (</span>{{\n              ['pause', '*pause'].includes(agent.globalStatus) ? \n                ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n                ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase) }}<span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">)</span>\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=\"['pause', '*pause'].includes(agent.globalStatus)\" 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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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=\"['pause', '*pause'].includes(agent.globalStatus)\">\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.rows.length}}\" 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.CLOUD_PROVIDERS">Cloud Providers</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 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">\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 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.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\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                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\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: \'{{\'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.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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      <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-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</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\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'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\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 ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</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.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</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.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-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/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret 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">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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">\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        </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            <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          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n            </div>\n          </md-input-container>\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></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          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\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          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_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">\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                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></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 ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </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 id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\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\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.mailAccount.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\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    <div class="main scrollable">\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\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">Name</label>\n            <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Name field required</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.mailAccount.description">\n          </md-input-container>\n\n          <md-input-container class="md-block mt-0">\n            <label translate="SETTINGS.EMAILADDRESS">Email Address</label>\n            <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\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.FIELD_REQUIRED">Email Address field required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.WRONG_FORMAT">Email Address must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block mt-30">\n            <label translate="SETTINGS.SMTP_SERVICE">Service</label>\n            <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n              <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Service field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <div ng-if="vm.mailAccount.provider === \'custom\'">\n            <md-input-container class="md-block mt-30">\n              <label translate="SETTINGS.SMTP_HOST">Host</label>\n              <input type="text" name="host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n              <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Host field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_PORT">Port</label>\n              <input type="number" name="port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n              <div ng-messages="generalForm[\'port\'].$error" ng-show="generalForm[\'port\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Port field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="SMTP Secure"><span translate="SETTINGS.SMTP_SECURE">Secure</span></md-switch>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="SMTP Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">Authentication</span></md-switch>\n            </md-input-container>\n          </div>\n\n          <div ng-if="vm.mailAccount.Smtp.authentication || (vm.mailAccount.provider && vm.mailAccount.provider !== \'custom\')">\n            <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_USERNAME">Username</label>\n              <input type="text" name="username" ng-model="vm.mailAccount.Smtp.user" ng-required="true">\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n              <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Username field required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n              <md-select name="cloudProvider" ng-model="vm.mailAccount.Smtp.CloudProviderId" required>\n                <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n              </md-select>\n              <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n              <div ng-messages="generalForm[\'cloudProvider\'].$error" ng-show="generalForm[\'cloudProvider\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="!vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="SETTINGS.SMTP_PASSWORD">Password</label>\n              <input type="password" name="password" ng-model="vm.mailAccount.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[\'password\'].$error" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Password field required</span>\n                </div>\n              </div>\n            </md-input-container>\n          </div>\n        </form>\n      </div>\n    </div>\n\n  </div>\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>\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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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  \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-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    <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 md-accent-bg" layout="row" layout-align="start center">\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    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.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="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      <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    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\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>{{ \'STAFF.CLIENT_LOGS\' | 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                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="agent"></ms-client-side-logging-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="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="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item>\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\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(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\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: \'{{\'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      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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      <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      <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 class="md-block" ng-if="vm.agent.userSetting">\n        <ms-client-side-logging user="vm.agent"></ms-client-side-logging>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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      <div layout="row" layout-align="start center">\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\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    <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    <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) || (autoAnswerForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\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                <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                <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                <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                <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                <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                <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                <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            </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                <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                <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            </form>\n          </div>\n          <div class="agent-detail-form-container authentication 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.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\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              <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                <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                <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                <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                    <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          </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                <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                <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                <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                <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                <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            </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                <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                <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                <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                <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                <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                <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            </form>\n          </div>\n          <div class="agent-detail-form-container auto_answer 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.AUTO_ANSWER">AUTO_ANSWER</div>\n            </div>\n            <form name="autoAnswerForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <md-switch ng-model="vm.agent.chatAutoanswer" aria-label="chatAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.CHAT_AUTOANSWER">ChatAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.chatAutoanswer" class="md-block">\n                  <label translate="STAFF.CHAT_AUTOANSWERDELAY">ChatAutoAnswerDelay</label>\n                  <input type="number" name="chatAutoAnswerDelay" ng-model="vm.agent.chatAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <md-switch ng-model="vm.agent.emailAutoanswer" aria-label="emailAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.EMAIL_AUTOANSWER">EmailAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.emailAutoanswer" class="md-block">\n                  <label translate="STAFF.EMAIL_AUTOANSWERDELAY">EmailAutoAnswerDelay</label>\n                  <input type="number" name="emailAutoAnswerDelay" ng-model="vm.agent.emailAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <md-switch ng-model="vm.agent.smsAutoanswer" aria-label="smsAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.SMS_AUTOANSWER">SmsAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.smsAutoanswer" class="md-block">\n                  <label translate="STAFF.SMS_AUTOANSWERDELAY">SmsAutoAnswerDelay</label>\n                  <input type="number" name="smsAutoAnswerDelay" ng-model="vm.agent.smsAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <md-switch ng-model="vm.agent.openchannelAutoanswer" aria-label="openchannelAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.OPENCHANNEL_AUTOANSWER">openchannelAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.openchannelAutoanswer" class="md-block">\n                  <label translate="STAFF.OPENCHANNEL_AUTOANSWERDELAY">openchannelAutoAnswerDelay</label>\n                  <input type="number" name="openchannelAutoAnswerDelay" ng-model="vm.agent.openchannelAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <md-switch ng-model="vm.agent.faxAutoanswer" aria-label="faxAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.FAX_AUTOANSWER">faxAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.faxAutoanswer" class="md-block">\n                  <label translate="STAFF.FAX_AUTOANSWERDELAY">faxAutoAnswerDelay</label>\n                  <input type="number" name="faxAutoAnswerDelay" ng-model="vm.agent.faxAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <md-switch ng-model="vm.agent.whatsappAutoanswer" aria-label="whatsappAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.WHATSAPP_AUTOANSWER">whatsappAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.whatsappAutoanswer" class="md-block">\n                  <label translate="STAFF.WHATSAPP_AUTOANSWERDELAY">whatsappAutoAnswerDelay</label>\n                  <input type="number" name="whatsappAutoAnswerDelay" ng-model="vm.agent.whatsappAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\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                <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                <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            </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                <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                <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            </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                <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            </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                <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                <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                <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                <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                <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            </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            </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            </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              \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      <md-divider></md-divider>\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              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container client_logs 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.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.agent" on-user-update="vm.refreshAgent()"></ms-client-side-logging>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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      <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      <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      <md-input-container class="md-block" ng-if="vm.user.userSetting">\n        <ms-client-side-logging user="vm.user"></ms-client-side-logging>\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" 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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  \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      <div layout="row" layout-align="start center">\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\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    <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    <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  </div>\n  \x3c!-- / HEADER --\x3e\n\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="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                <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                <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                <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                <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                <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                <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            </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                <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                <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            </form>\n          </div>\n          <div class="user-detail-form-container authentication 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.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></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              <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                <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                <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                <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                    <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          </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                <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                <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                <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.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            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container client_logs 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.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.user" on-user-update="vm.refreshUser()"></ms-client-side-logging>\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/users/users.html",'<div id="users" 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-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    <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 md-accent-bg" layout="row" layout-align="start center">\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    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.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="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      <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    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\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>{{ \'STAFF.CLIENT_LOGS\' | 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"><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                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditAgent($event, user)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="user"></ms-client-side-logging-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="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="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\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: \'{{\'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      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/contact_item_types/contact_item_types.html",'<div id="contact_item_types" 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.CONTACTITEMTYPE">ContactItemType</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.selectedContactItemType.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.selectedContactItemType =[]">\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-contact_item_types-count">\n          <span>{{vm.selectedContactItemType.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.selectAllContactItemType()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContactItemType()" 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.exportSelectedContactItemType" csv-label="true" filename="contact_item_types.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.deleteSelectedContactItemType($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!-- CONTACTITEMTYPE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContactItemType" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContactItemType">\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="OrderBy">{{ \'TOOLS.ORDER_BY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contact_item_types.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="contactItemType" md-select-id="id" ng-repeat="contactItemType in vm.contact_item_types.rows">\n                <td md-cell ng-if="contactItemType.userpic"><img class="avatar" alt="{{contactItemType.name}}" ng-src="api/users/{{contactItemType.id}}/avatar" /></td>\n                <td md-cell ng-if="!contactItemType.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{contactItemType.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="id ">{{contactItemType.id}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="name ">{{contactItemType.name}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="OrderBy ">{{contactItemType.OrderBy}}</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(contactItemType, $event    )" translate="TOOLS.EDIT_CONTACTITEMTYPE">\n                          Edit ContactItemType\n                        </md-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(contactItemType, $event    )" translate="TOOLS.DELETE_CONTACTITEMTYPE">\n                          Delete ContactItemType\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.contact_item_types.count}}" md-on-paginate="vm.getContactItemType" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTACTITEMTYPE 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 CONTACTITEMTYPE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-contactItemType-button" ng-click="vm.createOrEditContactItemType($event)" aria-label="add contactItemType" translate translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTACTITEMTYPE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/contact_item_types/create/dialog.html",'<md-dialog class="contactItemType-dialog" aria-label="New ContactItemType">\n  <form name="contactItemTypeForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.contactItemType.name" ng-required="true" autofocus>\n\n        <div ng-messages="contactItemTypeForm[\'name\'].$error" ng-show="contactItemTypeForm[\'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.ORDER_BY">Order_by</label>\n        <input type="integer" name="OrderBy" ng-model="vm.contactItemType.OrderBy" ng-required="true">\n\n        <div ng-messages="contactItemTypeForm[\'OrderBy\'].$error" ng-show="contactItemTypeForm[\'OrderBy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ORDER_BY_REQUIRED">Order_by field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.contactItemType.rgbBackgroundColor" label="{{\'TOOLS.RGBBACKGROUNDCOLOR\' | 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.newContactItemType" ng-click="vm.saveContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid || contactItemTypeForm.$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.newContactItemType" ng-click="vm.addNewContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CONTACTITEMTYPE" translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n          ADD CONTACTITEMTYPE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContactItemType" ng-click="vm.deleteContactItemType($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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" ng-change="vm.onTypeChange()" 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 ng-if="[\'multibar-chart\', \'pie-chart\',\'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="attrChannel" ng-model="vm.dashboarditem.attrChannel" required>\n\n          <md-option ng-value="\'chat\'"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n          <md-option ng-value="\'mail\'"> {{ \'TOOLS.EMAIL\' | translate }} </md-option>\n\n          <md-option ng-value="\'sms\'"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n          <md-option ng-value="\'openchannel\'"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n          <md-option ng-value="\'fax\'"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n          <md-option ng-value="\'whatsapp\'"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChannel\'].$error" ng-show="dashboarditemForm[\'attrChannel\'].$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      <div ng-if="![\'web-report\', \'iframe\',\'clock\', \'custom\'].includes(vm.dashboarditem.type)">\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'mail\'" class="md-block">\n          <label translate="TOOLS.FILTEREMAILACCOUNTS">FilterEmailAccounts</label>\n          <md-select name="attrEmailAccounts" ng-model="vm.dashboarditem.attrEmailAccounts" multiple>\n            <md-option ng-value="attrEmailAccounts.id" ng-repeat="attrEmailAccounts in vm.mailAccount" ng-disabled="attrEmailAccounts.canSelect === false">{{ attrEmailAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrEmailAccounts\'].$error" ng-show="dashboarditemForm[\'attrEmailAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEREMAILACCOUNTS_REQUIRED">FilterEmailAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'fax\'" class="md-block">\n          <label translate="TOOLS.FILTERFAXACCOUNTS">FilterFaxAccounts</label>\n          <md-select name="attrFaxAccounts" ng-model="vm.dashboarditem.attrFaxAccounts" multiple>\n            <md-option ng-value="attrFaxAccounts.id" ng-repeat="attrFaxAccounts in vm.faxAccount" ng-disabled="attrFaxAccounts.canSelect === false">{{ attrFaxAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrFaxAccounts\'].$error" ng-show="dashboarditemForm[\'attrFaxAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERFAXACCOUNTS_REQUIRED">FilterFaxAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'sms\'" class="md-block">\n          <label translate="TOOLS.FILTERSMSACCOUNTS">FilterSmsAccounts</label>\n          <md-select name="attrSmsAccounts" ng-model="vm.dashboarditem.attrSmsAccounts" multiple>\n            <md-option ng-value="attrSmsAccounts.id" ng-repeat="attrSmsAccounts in vm.smsAccount" ng-disabled="attrSmsAccounts.canSelect === false">{{ attrSmsAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrSmsAccounts\'].$error" ng-show="dashboarditemForm[\'attrSmsAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERSMSACCOUNTS_REQUIRED">FilterSmsAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'openchannel\'" class="md-block">\n          <label translate="TOOLS.FILTEROPENCHANNELACCOUNTS">FilterOpenchannelAccounts</label>\n          <md-select name="attrOpenchannelAccounts" ng-model="vm.dashboarditem.attrOpenchannelAccounts" multiple>\n            <md-option ng-value="attrOpenchannelAccounts.id" ng-repeat="attrOpenchannelAccounts in vm.openchannelAccount" ng-disabled="attrOpenchannelAccounts.canSelect === false">{{ attrOpenchannelAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrOpenchannelAccounts\'].$error" ng-show="dashboarditemForm[\'attrOpenchannelAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEROPENCHANNELACCOUNTS_REQUIRED">FilterOpenchannelAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'whatsapp\'" class="md-block">\n          <label translate="TOOLS.FILTERWHATSAPPACCOUNTS">FilterWhatsappAccounts</label>\n          <md-select name="attrWhatsappAccounts" ng-model="vm.dashboarditem.attrWhatsappAccounts" multiple>\n            <md-option ng-value="attrWhatsappAccounts.id" ng-repeat="attrWhatsappAccounts in vm.whatsappAccount" ng-disabled="attrWhatsappAccounts.canSelect === false">{{ attrWhatsappAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrWhatsappAccounts\'].$error" ng-show="dashboarditemForm[\'attrWhatsappAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERWHATSAPPACCOUNTS_REQUIRED">FilterWhatsappAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'chat\'" class="md-block">\n          <label translate="TOOLS.FILTERCHATWEBSITES">FilterChatWebsites</label>\n          <md-select name="attrChatWebsites" ng-model="vm.dashboarditem.attrChatWebsites" multiple>\n            <md-option ng-value="attrChatWebsites.id" ng-repeat="attrChatWebsites in vm.chatWebsite" ng-disabled="attrChatWebsites.canSelect === false">{{ attrChatWebsites.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrChatWebsites\'].$error" ng-show="dashboarditemForm[\'attrChatWebsites\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERCHATWEBSITES_REQUIRED">FilterChatWebsites field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type) && vm.dashboarditem.attrChannel === \'voice\'" 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 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\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | 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\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | 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\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | 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\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | 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="[\'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">\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">\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>\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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">\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">\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\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>\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)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'offlineMessage\'" md-cell>\n            {{allCondition.value}} </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>\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-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | 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      <md-input-container ng-if="vm.allCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'created\'">Created</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)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'offlineMessage\'" md-cell>\n            {{anyCondition.value}} </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>\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-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | 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      <md-input-container ng-if="vm.anyCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'created\'">Created</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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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">\n      <div class="error-list">\n        <div ng-repeat="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>\n      <div class="error-list">\n        <div ng-repeat="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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" 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 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">\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="8">\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>\n          <span>{{channel.calleridname}}, {{channel.calleridnum}}</span>\n        </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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" 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" 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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-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-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" 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" 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" 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" 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" 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 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>\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" 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" 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 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>\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()">\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/autoanswers/dialog.html",'<md-dialog class="autoanswers-dialog" aria-label="autoanswers">\n  <form name="autoanswerForm" 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.AUTOANSWER_NOTIFICATIONS\' | translate)  }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content layout-padding>\n      <md-table-container>\n        <table md-table multiple>\n          <thead md-head>\n            <tr md-row>\n              <th></th>\n              <th md-column>{{ \'TOOLBAR.CHANNEL\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.NOTIFICATIONS\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.DELAY\' | translate }}</th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-repeat="item in vm.items" ng-if="item.permission">\n              <td>\n                <md-icon md-font-icon="{{item.font_icon}}" class="icon {{item.class}} {{item.font_icon}}" aria-label="{{item.label}}"></md-icon>\n              </td>\n              <td md-cell>\n                <div layout="row">\n                  <span translate="{{item.title}}"></span>\n                </div>\n              </td>\n              <td md-cell align="center">\n                <div layout="row" layout-align="center">\n                  <md-icon ng-if="item.enabled" md-font-icon="icon-check-circle" class="icon green-700-fg"></md-icon>\n                  <span ng-if="!item.enabled" style="color:red">X</span>\n                </div>\n              </td>\n              <td md-cell align="right">\n                <div layout="row" layout-align="end">\n                  <span ng-if="item.enabled">{{item.delay}}</span>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.chat || vm.license.mail || vm.license.messaging || vm.license.openchannel || vm.license.fax || vm.license.whatsapp)" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.autoAnswerNotificationsDialog($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <md-icon md-font-icon="icon-reply" class="icon {{ vm.autoanswerIconColor }}"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.AUTOANSWER_NOTIFICATIONS">Notifications</span></md-tooltip>\n    </md-button>\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>\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\n            <md-input-container ng-if="vm.additionalItems.length>0" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional phones</label>\n              <md-chips ng-model="vm.additionalItems" placeholder="Phone numbers" readonly="true">\n                <md-chip-template custom-chip alt="{{$chip.type}} {{$chip.description}}" title="{{$chip.type}} {{$chip.description}}">\n                  {{ $chip.phone }}\n                </md-chip-template>\n              </md-chips>\n            </md-input-container>\n\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.client-side-logging",[])}(),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","app.user-setting","app.client-side-logging"])}(),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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,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 t,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 t=e,n.resolve("rpc@getVoiceQueues",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)t&&t.id===e.rows[n].id?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged,a.abandoned+=e.rows[n].abandoned):(a=_.find(t.rows,{id:e.rows[n].id}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged","abandoned"]));return t})}],faxAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("faxAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"FaxAccounts",mergeResources:!0,fields:"id,name",channel:"fax",nolimit:!0})).then(function(e){return t=e,n.resolve("faxInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].FaxAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].FaxAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],chatWebsites:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("chatWebsite@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"ChatWebsites",mergeResources:!0,fields:"id,name",channel:"chat",nolimit:!0})).then(function(e){return t=e,n.resolve("chatInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].ChatWebsiteId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.abandoned+=e.rows[n].abandoned,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].ChatWebsiteId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","abandoned","unmanaged"]));return t})}],smsAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("smsAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"SmsAccounts",mergeResources:!0,fields:"id,name",channel:"sms",nolimit:!0})).then(function(e){return t=e,n.resolve("smsInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].SmsAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].SmsAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],openchannelAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("openchannelAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"OpenchannelAccounts",mergeResources:!0,fields:"id,name",channel:"openchannel",nolimit:!0})).then(function(e){return t=e,n.resolve("openchannelInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].OpenchannelAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].OpenchannelAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],mailAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("mailAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"MailAccounts",mergeResources:!0,fields:"id,name",channel:"mail",nolimit:!0})).then(function(e){return t=e,n.resolve("mailInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].MailAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].MailAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],whatsappAccounts:["apiResolver","Auth",function(n,e){var t,a;return(e.hasRole("admin")?n.resolve("whatsappAccount@get",{fields:"id,name",nolimit:!0}):n.resolve("userProfile@getResources",{id:e.getCurrentUser().userProfileId,section:"WhatsappAccounts",mergeResources:!0,fields:"id,name",channel:"whatsapp",nolimit:!0})).then(function(e){return t=e,n.resolve("whatsappInteraction@get",{createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0})}).then(function(e){if(e&&0<e.count)for(var n=0;n<e.rows.length;n+=1)a&&a.id===e.rows[n].WhatsappAccountId?(a.total+=e.rows[n].total,a.waiting+=e.rows[n].waiting,a.talking+=e.rows[n].talking,a.answered+=e.rows[n].answered,a.unmanaged+=e.rows[n].unmanaged):(a=_.find(t.rows,{id:e.rows[n].WhatsappAccountId}))&&_.merge(a,_.pick(e.rows[n],["waiting","total","talking","answered","unmanaged"]));return t})}],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","$window",function(e,n,t,a){var i=t.getCurrentUser();return null===a.localStorage.getItem("motion2.user:"+i.id)&&a.localStorage.setItem("motion2.user:"+i.id,JSON.stringify({authenticationType:"google"})),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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,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,provider,key,email,ListId,active,service,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,provider,key,email,ListId,active,service,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,modernAuthentication,CloudProviderId",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})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",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,modernAuthentication,CloudProviderId",id:n.id})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data7",sort:"-updatedAt",type:"Dynamics365",limit:10,offset:0})}],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){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,provider,key,email,ListId,active,service,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,provider,key,email,ListId,active,service,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,provider,key,email,ListId,active,service,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})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}],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",function(e){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"],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,callAdditionalPhoneAfterMin,description,mandatoryDisposition,mandatoryDispositionPauseId,dialPredictiveIntervalMaxThreshold,dialPredictiveIntervalMinThreshold,dialPreviewAutoRecallMe,dialPreviewRecallmeReminder",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,callAdditionalPhoneAfterMin,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,dialPreviewRecallmeReminder,callAdditionalPhoneAfterMin",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.hopperdate",{url:"/hopperdate",views:{"hopperdate@app":{templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",controller:"HopperdateController as vm"}},resolve:{info:["apiResolver",function(e){return e.resolve("version@get")}]},authenticate:!0,permissionId:1500,bodyClass:"motiondialer"})}e.$inject=["$stateProvider"],angular.module("app.motiondialer.hopperdate",[]).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,level,ParentId",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){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,adSsoEnabled,disabledCookie,previewRecallmeReminderInterval,limitTabs",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:{mailAccounts:["apiResolver",function(e){return e.resolve("mailAccount@get",{fields:"createdAt,updatedAt,id,service,provider,name,email,Smtp.service,Smtp.host,Smtp.port,Smtp.secure,Smtp.authentication,Smtp.user,Smtp.pass,description",service:"1",limit:10,offset:0})}],cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]},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,type,data1,data2,data3,data4,data7",sort:"-updatedAt",limit:10,offset:0})}]},authenticate:!0,permissionId:1400,bodyClass:"settings"}),n.addPart("app/main/apps/settings")}e.$inject=["$stateProvider","$translatePartialLoaderProvider"],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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"admin,user",sort:"-updatedAt",userSetting:!0,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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",role:"agent",sort:"-updatedAt",userSetting:!0,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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay,emailAutoanswer,emailAutoanswerDelay,smsAutoanswer,smsAutoanswerDelay,faxAutoanswer,faxAutoanswerDelay,whatsappAutoanswer,whatsappAutoanswerDelay,openchannelAutoanswer,openchannelAutoanswerDelay",id:n.id,userSetting:!0})}],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"}).state("app.tools.contact_item_types",{url:"/contact_item_types",views:{"content@app":{templateUrl:"app/main/apps/tools/views/contact_item_types/contact_item_types.html",controller:"ContactItemTypesController as vm"}},resolve:{contact_item_types:["apiResolver","Auth",function(e,n){return n.hasRole("admin")?e.resolve("contactItemType@get",{fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,offset:0}):e.resolve("userProfile@getResources",{id:n.getCurrentUser().userProfileId,section:"ContactItemType",fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",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:1013})}]},authenticate:!0,permissionId:1013,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",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: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,level,ParentId",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";angular.module("app.user-setting",[])}(),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,i,s,r,l,d,c){var m;return{getToken:n,getCurrentUser:u,getPermissions:A,hasChildrenPermissions:function(e){return!!e&&_.some(e,function(e){return t(e)})},hasModulePermissions:function(i){return o(function(a,n){f()?a(!0):r.userProfileSection.get({userProfileId:m.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={};f()?(s.forEach(function(e){i[e]=!0}),a(i)):r.userProfileSection.get({userProfileId:m.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!!m&&m.role===e},hasPermission:t,hasResourcePermission:function(e,s){return o(function(a,i){return r.userProfileSection.get({userProfileId:m.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 E().then(function(){_.includes(m.permissions,a)&&(t[a]=!0),e(t)}).catch(function(e){n(e)})})},hasSectionsPermissions:function(a){return o(function(e,n){var t={};if(!f())return E().then(function(){a.forEach(function(e){_.includes(m.permissions,e)&&(t[e]=!0)}),e(t)}).catch(function(e){n(e)});a.forEach(function(e){t[e]=!0}),e(t)})},isAgent:h,isAdmin:f,isLoggedIn:function(){return!!n()},isTelephone:function(){return"telephone"===m.role},isUser:b,login:function(e){return o(function(n,t){r.auth.local(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("LOCAL_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.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 h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})},logout:function(t){return o(function(e,n){t?(v(),e()):o.resolve().then(function(){return h()&&0!==m.showWebBar?o(function(e,n){r.user.logout({id:m.id,device:"web"}).$promise.then(function(){e()}).catch(function(e){n(e)})}):f()||b()?g(!1):void 0}).then(function(){v(),e()}).catch(function(e){n(e)})})},parseCrudPermissions:function(e){return f()?{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:p,reloadPermissions:E,removeCookies:v,retrieveUser:function(){return o(function(n,t){r.user.whoami({userSetting:!0}).$promise.then(function(n){return"user"===n.role?A(n.userProfileId).then(function(e){return n.permissions=e,n}):n}).then(function(e){n(m=e)}).catch(function(e){t(e)})})},setCurrentUser:function(e){m=_.merge(m,e)},getAuthenticationType:function(){var e=u(),n=i.localStorage.getItem("motion2.user:"+e.id);if(n)return JSON.parse(n).authenticationType;return"NONE"},loginSSO:function(e){"google"!==e&&y("SSO_LOGIN");return"/api/auth/"+e},loginAD:function(e){return o(function(n,t){r.auth.activedirectory(e).$promise.then(function(e){return d.get().secureCookieEnabled?c.set("motion.token",e.token,{secure:!0,sameSite:"none"}):c.set("motion.token",e.token),r.user.get({id:e.id}).$promise}).then(function(e){(m=e).lastLoginAt=moment().format("YYYY-MM-DD HH:mm:ss"),y("SSO_LOGIN")}).then(function(){if(h()&&1===m.showWebBar&&m.hotdesk)return a.show({controller:"HotDeskDialogController",controllerAs:"vm",templateUrl:"app/auth/services/hotdesk/dialog.html",parent:angular.element(s.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 h()&&0!==m.showWebBar?p(e):f()||b()?g(!0):void 0}).then(function(e){m=_.assign(m,e),n()}).catch(function(e){t(e)})})}};function n(){return e.get("motion.token")}function u(){return m}function p(e){return o(function(n,t){r.user.login({id:m.id,device:"web",intrf:e}).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function g(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:m.id},e).$promise.then(function(e){n(e)}).catch(function(e){t(e)})})}function v(){e.remove("motion.token"),m&&(i.localStorage.removeItem("motion.user:"+m.id),m=null)}function h(){return"agent"===m.role}function f(){return"admin"===m.role}function b(){return"user"===m.role}function t(e){return!!m&&_.includes(m.permissions,e)}function A(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 E(){return o(function(n,t){A(m.userProfileId).then(function(e){m.permissions=e,n()}).catch(function(e){t(e)})})}function y(e){var n=u(),t={authenticationType:e};i.localStorage.setItem("motion2.user:"+n.id,JSON.stringify(t))}}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";function e(e,n,t){var a={initLogger:function(){return i.init({uri:t.baseUrl+"logs/client-logs",initial_state_name:"client-logs",flushInterval:6e4,debounceInterval:10,sizeLimit:300,silent:!1,autoLog:["error"],heartbeat:!1,logUnload:!1,logPerformance:!1}),i.addHeaderBuilder(function(){return(e=n.get("motion.token"))?{Authorization:"Bearer "+e}:{};var e}),i}},i=e.$logger;if(!i)throw new Error("Beaver Logger not found");return a}function n(d,e,t){var n={getLogger:function(l){var e=function(r){return function(){for(var e=arguments.length,n=Array(e),t=0;t<e;t++)n[t]=arguments[t];var a=n[0],i=n.slice(1),s="string"!=typeof a||"string"==typeof a&&0===i.length?l:a,o=1<n.length&&"string"==typeof a?i:n;(function(e,n,t){if(!d.isLoggedIn())return;var a=d.getCurrentUser();if(!a||!a.userSetting.clientSideLoggingEnabled)return;if(i=e,!(c.indexOf(i)>=c.indexOf(m)))return;var i;var s=n,o=t;"string"==typeof n&&void 0===t&&(s=e,o=n);u[e].call(u,s,{data:p(o)})}).call(this,r,s,o)}};return{error:e("error"),warn:e("warn"),info:e("info"),debug:e("debug")}},getLoggingColors:function(){return{disabled:{color:"#616161"},debug:{color:"#283593"},info:{color:"#000000"},warning:{color:"#FBC02D"},error:{color:"#FF5252"}}},flush:a},c=["debug","info","warn","error"],m="debug",u=e.initLogger();function p(t){return Array.isArray(t)?t.map(p):null===t||"object"!=typeof t?t:_.isPlainObject(t)?t:t&&"function"==typeof t.toJSON?t.toJSON():t instanceof Error?Object.getOwnPropertyNames(t).reduce(function(e,n){return e[n]=p(t[n]),e},{}):JSON.parse(JSON.stringifyOnce(t))}function a(){return u.flush()}return t.$on("local:user-setting-updated",function(e,n){n.clientSideLoggingEnabled?t.$broadcast("client-side-logging:enabled"):(a(),t.$broadcast("client-side-logging:disabled")),m=n.clientSideLoggingLevel}),t.$on("local:user-logout",function(){m="debug"}),JSON.stringifyOnce=function(i,s,e){var o=[],r=[];return e||(e=2),JSON.stringify(i,function(e,t){if(2e3<o.length)return"object too long";var a=!1;if(o.forEach(function(e,n){e===t&&(a=n)}),""==e)return o.push(i),r.push("root"),t;if(a+""!="false"&&"object"==typeof t)return"root"==r[a]?"(pointer to root)":"(see "+(t&&t.constructor?t.constructor.name.toLowerCase():typeof t)+" with key "+r[a]+")";var n=e||"(empty key)";return o.push(t),r.push(n),s?s(e,t):t},e)},n}e.$inject=["$window","$cookies","api"],n.$inject=["Auth","clientSideLogger","$rootScope"],angular.module("app.client-side-logging").factory("clientSideLogger",e).service("ClientSideLoggingService",n)}(),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){n.debugEnabled(!0),e.config({tabindex:!1}),t.config({disableCustomScrollbars:!1,disableCustomScrollbarsOnMobile:!0,disableMdInkRippleOnMobile:!0})}e.$inject=["$ariaProvider","$logProvider","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(s,o,e,t){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 l(n){return e[n.model][n.action](n.params).$promise.then(function(e){if("autocomplete"!==r.selectedField.type)return 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=e[r.selectedField.options.searchFields[n]]||"";e.displayValue+=t+" "}return _.trimEnd(e.displayValue),_.includes(e.displayValue.toLowerCase(),r.searchText.toLowerCase())}):[];return o.when(n)}).catch(function(e){t.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()})})}function a(){!r.value||_.isArray(r.value)&&_.isEmpty(r.value)?r.isValidCondition=!1:r.selectedOperator?r.selectedOperator&&"$between"===r.selectedOperator.type?r.isValidCondition=!(!r.endRangeValue||!r.isValidRange):r.isValidCondition=!0:r.isValidCondition=!1}function i(){"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),a()}function d(){var e=m();r.options.conditions.push(e),p()}function c(){var e=m(),n=_.findIndex(r.options.conditions,"style");r.options.conditions.splice(n,1,e),p(),r.pendingCondition.style=null,r.pendingCondition=void 0}function m(){return{name:r.selectedField.name,operator:s.instant("DASHBOARDS."+r.selectedOperator.translate),value:r.value,endValue:r.endRangeValue,displayValue:u(r.value),displayEndValue:u(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||"name";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 u(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 p(){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=d,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=c,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(){{if(r.selectedField.options.routes&&Array.isArray(r.selectedField.options.routes)){var e=angular.copy(r.selectedField.options.routes),n=_.map(e,function(e){return l(e)});return o.all(n).then(function(e){r.selectedField.values=_.flatten(e)})}var t=angular.copy(r.selectedField.options.route);if("autocomplete"===r.selectedField.type)for(var a=0;a<Object.keys(t.params).length;a++){var i=Object.keys(t.params)[a];"@autocomplete"===t.params[i]&&(t.params[i]=r.searchText)}if(!r.selectedField.values)return l(t).then(function(e){r.selectedField.values=_.flatten(e)});r.selectedField.values.forEach(function(e){e.translate&&(e.name=s.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||(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})));a()},r.onValueChange=function(){r.selectedOperator&&"$between"===r.selectedOperator.type?"number"===r.selectedField.type?i():"date"===r.selectedField.type&&(r.minDateRange=moment(r.value).add(1,"day"),a()):a()},r.checkRange=i,r.handleKeyboardAction=function(){r.pendingCondition?c():d()}}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";n.$inject=["ClientSideLoggingService","$rootScope","$translate"];var e={bindings:{user:"<"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging-icon.html"};function n(e,n,t){var a=this,i=e.getLoggingColors();function s(){a.tooltipHTML=a.user.userSetting.clientSideLoggingEnabled?[t.instant("STAFF.CLIENT_LOGS_ENABLED"),t.instant("STAFF.CLIENT_LOGS_LOGLEVEL",{logLevel:a.user.userSetting.clientSideLoggingLevel}),t.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(a.user.userSetting.clientSideLoggingEnabledSince).format("LLLL")})].join("<br>"):t.instant("STAFF.CLIENT_LOGS_DISABLED")}a.tooltipHTML=t.instant("STAFF.CLIENT_LOGS_DISABLED"),a.styleColor=i.disabled,a.styleIcon=a.user.userSetting&&a.user.userSetting.clientSideLoggingEnabled?"icon-checkbox-marked-circle":"icon-close",a.$onInit=function(){if(!a.user.userSetting)return;var e=a.user.userSetting.clientSideLoggingEnabled?a.user.userSetting.clientSideLoggingLevel:"disabled";a.styleColor=i[e],"info"===e&&(a.styleIcon="icon-checkbox-marked-circle-outline");return s()},a.$onDestroy=function(){o()};var o=n.$on("$translateChangeSuccess",s)}angular.module("app.core").component("msClientSideLoggingIcon",e)}(),function(){"use strict";n.$inject=["ClientSideLoggingService","UserSettingService","$q","$translate","$rootScope","$interval"];var e={bindings:{user:"<",onUserUpdate:"&"},controller:n,controllerAs:"vm",templateUrl:"app/core/directives/ms-client-side-logging/ms-client-side-logging.html"};function n(e,t,n,a,i,s){var o=this,r=e.getLoggingColors(),l=null;function d(){l&&s.cancel(l)}o.styleProperties=r.disabled,o.clientSideLoggingEnabledSince="",o.$onInit=function(){m().then(function(){d(),l=s(u,6e4)})},o.$onChanges=function(e){e&&n.resolve().then(m)},o.$onDestroy=function(){d(),c()},o.onEnabledSwitchChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;return p(e,n)},o.onLogLevelSelectionChange=function(){var e=o.user.userSetting.clientSideLoggingEnabled,n=o.user.userSetting.clientSideLoggingLevel;p(e,n)},o.computeStyleForLoggingLevel=function(e){return r[e]};var c=i.$on("$translateChangeSuccess",u);function m(){o.availableClientSideLoggingLevels=Object.keys(r).filter(function(e){return"disabled"!==e});var e=o.user.userSetting&&o.user.userSetting.clientSideLoggingEnabled?o.user.userSetting.clientSideLoggingLevel:"disabled";return o.styleProperties=r[e],u()}function u(){if(o.user.userSetting)return o.user.userSetting.clientSideLoggingEnabled?void(o.clientSideLoggingEnabledSince=a.instant("STAFF.CLIENT_LOGS_ENABLED_SINCE",{enabledSince:moment(moment(o.user.userSetting.clientSideLoggingEnabledSince).format()).fromNow()})):o.clientSideLoggingEnabledSince=""}function p(e,n){return t.updateUserSettingById(o.user.userSetting.id,{clientSideLoggingEnabled:e,clientSideLoggingLevel:n}).then(function(){"function"==typeof o.onUserUpdate&&o.onUserUpdate()})}}angular.module("app.core").component("msClientSideLogging",e)}(),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,l){var E=this,d=["ringingId","speakerId","microphoneId","ringingVolume","speakerVolume","microphoneVolume","ringingMute","speakerMute","microphoneMute"],c=JSON.parse(n.localStorage.getItem("motion2.user:"+E.conf.id))||{webrtc:{ringingVolume:.5,speakerVolume:.5,microphoneVolume:1,ringingMute:!1,speakerMute:!1,microphoneMute:!1}};e(function(){},999);var y=l.getLogger("jssip","ms-phonebar");function m(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){y.error(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,x("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 x("speaker",!1)}).then(function(){return x("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)&&(y.info("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):y.error("Unable to find a valid call to answer",e):y.error("Unable to answer the call",e)}.bind(this)),jabra.addEventListener("mute",function(){x("microphone",E.conf.microphoneMute=!0)}.bind(this)),jabra.addEventListener("unmute",function(){E.conf.microphoneMute=!1,x("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){y.warn("Error initializing Jabra integration",e)})}).catch(function(e){y.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,S(),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 S(){c.webrtc=_.pick(E.conf,d),n.localStorage.setItem("motion2.user:"+E.conf.id,JSON.stringify(c))}function T(e,n,t){y.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 I(e){y.debug("answer -> session",e._request),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 O(e,n){y.debug("terminate -> session",e._request),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 y.debug("getVoiceChannels -> session",t._request),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 w(e){y.debug("onAddstream -> data",e),this.remotePlayer.srcObject=e.stream,this.remotePlayer.play()}function R(){E.canGoInConference=!1,E.isInConference=!1,E.currentconferenceSessions=[]}function x(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&&S()}).catch(function(e){y.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&&S()}).catch(function(e){y.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&&S();break;default:y.info("unknown device")}}function N(){E.target="",document.getElementById("ms-target").blur(),document.getElementById("ms-target").value="",p.$broadcast("angucomplete-alt:clearInput","ms-target-wrap")}function D(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 P(){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){y.error(e)})}}function L(e,n,t,a){return y.debug("onReferCallback -> session, textContent, position, delay",e._request,n,t,a),function(){i.show(i.simple().textContent(n).position(t).hideDelay(a)),O(e)}}function k(n){return y.debug("findSessionBySessionId -> sessionId, vm_pb.sessions",n,E.sessions),_.find(E.sessions,function(e){return e.call_id==n})}function M(e,n){return y.debug("callCallback -> url, params",e,n),s({url:e,method:"GET",params:n})}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(c.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(){m(!1),navigator.mediaDevices.ondevicechange=function(){E.initDeviceInProgress||(E.initDeviceInProgress=!0,jabra&&E.isJabraInitialized?jabra.shutdown().then(function(){E.isJabraInitialized=!1,m(!(E.isJabraEnabled=!1))}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!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){y.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,T(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){y.debug("getNotification -> session",n._request);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(){I(n)},function(){O(n)},E.conf.autoAnswer).then(function(e){n.notification=e}).catch(function(e){y.error("Error creating notification for incoming call",e)})}(e.session),T(e.session.user,!0),E.isJabraEnabled&&jabra.ring(),E.conf.autoAnswer&&g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},E.conf.autoAnswerDelay?1e3*E.conf.autoAnswerDelay:0),y.debug("xAnswerMode",l),y.debug("xAnswerAfterSec",d),"auto"==l.toLowerCase())){var u=0==d?500:1e3*d;y.debug("auto answer enabled after:"+u+" ms"),g(function(){o.isInProgress()&&(o.autoAnswer=!0,I(o))},u)}}r?(o.call_id=e.request.call_id,n&&M(E.callbackQueue[o.call_id]=n,{call_id:o.call_id}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}),o.connection&&(o.connection.onaddstream=w.bind(this)),o.iceCandidateTimeout=null,o.on("progress",function(e,n){y.debug("onProgress -> session, data",e._request,n),y.error("onProgress -> session, data",e._request,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){y.error(e.message)})),C(e).then(function(){var n=E.callbackQueue[e.call_id];n&&M(n,{uniqueid:e.uniqueid,call_id:e.call_id,number_called:e.user}).then(function(){y.info('callbackurl:"'+n+'" called successfully')}).catch(function(e){y.error('fail callbackurl:"'+n+'" err:',e)}).finally(function(){delete E.callbackQueue[e.call_id]})}).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("confirmed",function(e,n){y.debug("onConfirmed -> session, data",e._request,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=w.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){y.error("Unable to play autoAnswer notification",e)})),E.canGoInConference=2==E.sessions.length,C(e).catch(function(e){y.error("Unable to retrieve voice channels",e)})}.bind(this,o)),o.on("hold",function(e,n){y.debug("onHold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!0)}.bind(this,o)),o.on("unhold",function(e,n){y.debug("onUnhold -> session, data",e._request,n),"local"===n.originator&&(e.localHold=!1)}.bind(this,o)),o.on("ended",function(e,n){if(y.debug("onEnded -> session, data",e._request,n),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&(R(),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(y.debug("onFailed -> session, data",e._request,n),this.soundPlayer.pause(),this.soundPlayer.loop=null,e.notification&&e.notification.close(),E.isInConference&&_.includes(E.currentConferenceSessions,e.id)&&R(),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){y.debug("onIcecandidate -> session, data",e._request,n),null!==e.iceCandidateTimeout&&clearTimeout(e.iceCandidateTimeout),e.iceCandidateTimeout=setTimeout(n.ready,1e3)}.bind(this,o)),E.sessions.push(o),g(function(){p.$apply(),y.debug("onNewRTCSession -> vm_pb.sessions",E.sessions)})):O(o,486)}.bind(this)),r.on("webbar:originate",function(e){y.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){y.debug("hangupHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];y.info("hangupHook -> sessionToHangup",a),E.terminate(a)}}.bind(this)),r.on("webbar:answer",function(e){var n;y.debug("answerHook -> payload",e),n=e.sessionId?k(e.sessionId):_.find(E.sessions,function(e){return e.incoming&&!e.confirmed}),e.sessionId&&!n&&y.warn("call with session Id "+e.sessionId+" not found"),n&&E.answer(n)}.bind(this)),r.on("webbar:hold",function(e){y.debug("holdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.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){y.debug("unholdHook -> payload",e);var n=E.sessions;if(e.sessionId&&((n=[]).push(k(e.sessionId)),0==n.length))y.warn("call with session Id "+e.sessionId+" not found");else for(var t=0;t<n.length;t++){var a=n[t];E.unhold(a)}}.bind(this)),r.on("webbar:transfer",function(e){if(y.debug("transferHook -> payload",e),e.sessionId)if(e.transferNumber){var n=k(e.sessionId);n?n.refer(e.transferNumber,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}}):y.warn("call with session Id "+e.sessionId+" not found")}else y.error("transferNumber required");else y.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){y.error(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 D(e=(e=e.replace(/\(/g,"")).replace(/\)/g,"")).then(function(e){e&&E.ua.call(e,E.sessionConf)}).then(function(){N()})}},E.hold=function(e){y.debug("hold -> session",e._request),e.hold({useUpdate:!1}),E.isJabraEnabled&&(jabra.hold(),jabra.onHook())},E.refer=function(n){y.debug("refer -> session",n._request);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 D(e.replace(/ /g,"").replace(/\(/g,"").replace(/\)/g,""))}).then(function(e){n.refer(e,{eventHandlers:{requestSucceeded:L(n,"requestSucceeded","top right",3e3),requestFailed:L(n,"requestFailed","top right",3e3)}})})},E.record=function(e){y.debug("record -> session",e._request),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){y.debug("unhold -> session",e._request),e.unhold({useUpdate:!1}),E.putOtherCallsOnHold(e),E.isJabraEnabled&&(jabra.offHook(),jabra.resume())},E.answer=I,E.terminate=O,E.selectSession=function(e){y.debug("selectSession -> session",e._request),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){y.debug("referAttended -> session",e._request),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=x,E.putOtherCallsOnHold=function(e){if(y.debug("putOtherCallsOnHold -> session",e._request),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):N():N()},E.targetSelected=function(e){e&&(E.target=e.originalObject.target,E.call(),N())},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(){P()},1e3)},!1);var a=E.sessions[1].connection.getSenders()[0],i=E.sessions[1].connection.getReceivers()[0];i.track.addEventListener("unmute",function(){setTimeout(function(){P()},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){y.error(e)})})},E.patchConference=P,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,m(E.isJabraEnabled=!1)}).catch(function(e){y.error("Unable to shutdown Jabra library",e)}):m(!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){y.debug("onRemoteCall -> evt, data",e,n),n.target&&(E.target=n.target,E.call())}),p.$on("webrtc::transfer",function(e,n){if(y.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 D(n.target).then(function(e){e&&E.sessions[t].refer(e,{eventHandlers:{requestSucceeded:L(E.sessions[t],"requestSucceeded","top right",3e3),requestFailed:L(E.sessions[t],"requestFailed","top right",3e3)}})})}),p.$on("$destroy",function(){y.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","ClientSideLoggingService"],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(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"></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:"=",ngChange:"&"},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"]}]}],link:function(e,n,t,a){e.updateModel=function(e){a.$setViewValue(e)}},templateUrl:"app/core/directives/ms-timezone/ms-timezone.html"}})}(),function(){"use strict";angular.module("app.core").controller("MsWidgetEngineCounterController",function(){var s=this;s.filter=[],s.filtered=!1,s.fontSize=20,s.label="",s.getCount=function(a){var i=0;if(a){s.fontSize=a.attrs[2]&&a.attrs[2].value?parseInt(a.attrs[2].value)-parseInt(a.attrs[2].value)%2:20;var e=a.attrs.find(function(e){return"attrChannel"===e.name});e||a.attrs.push({name:"attrChannel",value:"voice"}),a.attrs.forEach(function(e,n){if("voice"!==a.attrs[3].value?"talking"===a.attrs[0].value?s.label="Opened":"answered"===a.attrs[0].value?s.label="Managed":s.label=a.attrs[0].value:s.label=a.attrs[0].value,!_.isEmpty(e.value))if(e.name.toLowerCase().includes("voice")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.voiceQueuesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.voiceQueuesSelected);for(var t=0;t<a.voiceQueues.rows.length;t+=1)_.includes(s.filter,a.voiceQueues.rows[t].id)&&(i+=a.voiceQueues.rows[t][a.attrs[0].value]?parseInt(a.voiceQueues.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("chat")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.chatWebsitesSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.chatWebsitesSelected);for(var t=0;t<a.chatWebsites.rows.length;t+=1)_.includes(s.filter,a.chatWebsites.rows[t].id)&&(i+=a.chatWebsites.rows[t][a.attrs[0].value]?parseInt(a.chatWebsites.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("fax")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.faxAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.faxAccountsSelected);for(var t=0;t<a.faxAccounts.rows.length;t+=1)_.includes(s.filter,a.faxAccounts.rows[t].id)&&(i+=a.faxAccounts.rows[t][a.attrs[0].value]?parseInt(a.faxAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("mail")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.mailAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.mailAccountsSelected);for(var t=0;t<a.mailAccounts.rows.length;t+=1)_.includes(s.filter,a.mailAccounts.rows[t].id)&&(i+=a.mailAccounts.rows[t][a.attrs[0].value]?parseInt(a.mailAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("openchannel")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.openchannelAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.openchannelAccountsSelected);for(var t=0;t<a.openchannelAccounts.rows.length;t+=1)_.includes(s.filter,a.openchannelAccounts.rows[t].id)&&(i+=a.openchannelAccounts.rows[t][a.attrs[0].value]?parseInt(a.openchannelAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("whatsapp")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.whatsappAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.whatsappAccountsSelected);for(var t=0;t<a.whatsappAccounts.rows.length;t+=1)_.includes(s.filter,a.whatsappAccounts.rows[t].id)&&(i+=a.whatsappAccounts.rows[t][a.attrs[0].value]?parseInt(a.whatsappAccounts.rows[t][a.attrs[0].value]):0)}else if(e.name.toLowerCase().includes("sms")){a.attrs[n].value&&a.attrs[n].value.length?(s.filtered=!0,s.filter=_.intersection(a.smsAccountsSelected,a.attrs[n].value)):(s.filtered=!1,s.filter=a.smsAccountsSelected);for(var t=0;t<a.smsAccounts.rows.length;t+=1)_.includes(s.filter,a.smsAccounts.rows[t].id)&&(i+=a.smsAccounts.rows[t][a.attrs[0].value]?parseInt(a.smsAccounts.rows[t][a.attrs[0].value]):0)}})}return i}})}(),function(){"use strict";function e(r,e){var l=this;l.filter=[],l.filtered=!1,l.properties=[],l.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"}}]}}},l.getMultiBarChart=function(e){e&&(e.attrs&&function(e){switch(l.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(l.filtered=!0,l.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(l.filtered=!1,l.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(l.filtered=!0,l.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(l.filtered=!1,l.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(l.filtered=!0,l.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(l.filtered=!1,l.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(l.filtered=!0,l.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(l.filtered=!1,l.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(l.filtered=!0,l.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(l.filtered=!1,l.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(l.filtered=!0,l.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(l.filtered=!1,l.filter=e.whatsappAccountsSelected);break;default:e.attrs[3].value&&e.attrs[3].value.length?(l.filtered=!0,l.filter=_.intersection(e.voiceQueuesSelected,e.attrs[3].value)):(l.filtered=!1,l.filter=e.voiceQueuesSelected)}if(l.multiBarChart.series.length>l.properties.length){var n=l.multiBarChart.series.length-l.properties.length;l.multiBarChart.series.splice(0,n),l.multiBarChart.data.splice(0,n)}for(var t=0;t<l.properties.length;t+=1){var a="";if(a="voice"!==e.attrs[4].value?"talking"===l.properties[t]?"Opened":"answered"===l.properties[t]?"Managed":l.properties[t]:l.properties[t],l.multiBarChart.series[t]=r.instant("TOOLS."+a.toUpperCase()),_.isNil(l.multiBarChart.data[t])&&(l.multiBarChart.data[t]=[]),l.multiBarChart.labels.length>l.filter.length){var i=l.multiBarChart.labels.length-l.filter.length;l.multiBarChart.labels.splice(0,i),l.multiBarChart.data[t].splice(0,i)}switch(e.attrs[4].value){case"voice":for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1);break;case"sms":for(var s=0,o=0;s<e.smsAccounts.rows.length;s+=1)_.includes(l.filter,e.smsAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.smsAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.smsAccounts.rows[s][l.properties[t]]?parseInt(e.smsAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"chat":for(var s=0,o=0;s<e.chatWebsites.rows.length;s+=1)_.includes(l.filter,e.chatWebsites.rows[s].id)&&(l.multiBarChart.labels[o]=e.chatWebsites.rows[s].name,l.multiBarChart.data[t][o]=e.chatWebsites.rows[s][l.properties[t]]?parseInt(e.chatWebsites.rows[s][l.properties[t]]):0,o+=1);break;case"fax":for(var s=0,o=0;s<e.faxAccounts.rows.length;s+=1)_.includes(l.filter,e.faxAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.faxAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.faxAccounts.rows[s][l.properties[t]]?parseInt(e.faxAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"mail":for(var s=0,o=0;s<e.mailAccounts.rows.length;s+=1)_.includes(l.filter,e.mailAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.mailAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.mailAccounts.rows[s][l.properties[t]]?parseInt(e.mailAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"openchannel":for(var s=0,o=0;s<e.openchannelAccounts.rows.length;s+=1)_.includes(l.filter,e.openchannelAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.openchannelAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.openchannelAccounts.rows[s][l.properties[t]]?parseInt(e.openchannelAccounts.rows[s][l.properties[t]]):0,o+=1);break;case"whatsapp":for(var s=0,o=0;s<e.whatsappAccounts.rows.length;s+=1)_.includes(l.filter,e.whatsappAccounts.rows[s].id)&&(l.multiBarChart.labels[o]=e.whatsappAccounts.rows[s].name,l.multiBarChart.data[t][o]=e.whatsappAccounts.rows[s][l.properties[t]]?parseInt(e.whatsappAccounts.rows[s][l.properties[t]]):0,o+=1);break;default:for(var s=0,o=0;s<e.voiceQueues.rows.length;s+=1)_.includes(l.filter,e.voiceQueues.rows[s].id)&&(l.multiBarChart.labels[o]=e.voiceQueues.rows[s].name,l.multiBarChart.data[t][o]=e.voiceQueues.rows[s][l.properties[t]]?parseInt(e.voiceQueues.rows[s][l.properties[t]]):0,o+=1)}}}(e),e.foreground&&function(e){l.multiBarChart.options.legend.fontColor=e.foreground;for(var n=0;n<l.multiBarChart.options.scales.xAxes.length;n+=1)l.multiBarChart.options.scales.xAxes[n].ticks.fontColor=e.foreground;for(var t=0;t<l.multiBarChart.options.scales.yAxes.length;t+=1)l.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){switch(o.properties=_.map(_.filter(e.attrs,function(e){return e.name&&0<=e.name.indexOf("attrSerie")&&e.value&&"null"!==e.value}),"value"),e.attrs[4].value){case"voice":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);break;case"sms":e.attrs[7].value&&e.attrs[7].value.length?(o.filtered=!0,o.filter=_.intersection(e.smsAccountsSelected,e.attrs[7].value)):(o.filtered=!1,o.filter=e.smsAccountsSelected);break;case"mail":e.attrs[5].value&&e.attrs[5].value.length?(o.filtered=!0,o.filter=_.intersection(e.mailAccountsSelected,e.attrs[5].value)):(o.filtered=!1,o.filter=e.mailAccountsSelected);break;case"chat":e.attrs[10].value&&e.attrs[10].value.length?(o.filtered=!0,o.filter=_.intersection(e.chatWebsitesSelected,e.attrs[10].value)):(o.filtered=!1,o.filter=e.chatWebsitesSelected);break;case"fax":e.attrs[6].value&&e.attrs[6].value.length?(o.filtered=!0,o.filter=_.intersection(e.faxAccountsSelected,e.attrs[6].value)):(o.filtered=!1,o.filter=e.faxAccountsSelected);break;case"openchannel":e.attrs[8].value&&e.attrs[8].value.length?(o.filtered=!0,o.filter=_.intersection(e.openchannelAccountsSelected,e.attrs[8].value)):(o.filtered=!1,o.filter=e.openchannelAccountsSelected);break;case"whatsapp":e.attrs[9].value&&e.attrs[9].value.length?(o.filtered=!0,o.filter=_.intersection(e.whatsappAccountsSelected,e.attrs[9].value)):(o.filtered=!1,o.filter=e.whatsappAccountsSelected);break;default: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){switch("voice"!==e.attrs[4].value?"talking"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.OPENED"):"answered"===o.properties[t]?o.pieChart.labels[t]=s.instant("TOOLS.MANAGED"):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()):o.pieChart.labels[t]=s.instant("TOOLS."+o.properties[t].toUpperCase()),e.attrs[4].value){case"voice":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);break;case"sms":for(var i=0;i<e.smsAccounts.rows.length;i+=1)_.includes(o.filter,e.smsAccounts.rows[i].id)&&(a+=e.smsAccounts.rows[i][o.properties[t]]?parseInt(e.smsAccounts.rows[i][o.properties[t]]):0);break;case"chat":for(var i=0;i<e.chatWebsites.rows.length;i+=1)_.includes(o.filter,e.chatWebsites.rows[i].id)&&(a+=e.chatWebsites.rows[i][o.properties[t]]?parseInt(e.chatWebsites.rows[i][o.properties[t]]):0);break;case"fax":for(var i=0;i<e.faxAccounts.rows.length;i+=1)_.includes(o.filter,e.faxAccounts.rows[i].id)&&(a+=e.faxAccounts.rows[i][o.properties[t]]?parseInt(e.faxAccounts.rows[i][o.properties[t]]):0);break;case"mail":for(var i=0;i<e.mailAccounts.rows.length;i+=1)_.includes(o.filter,e.mailAccounts.rows[i].id)&&(a+=e.mailAccounts.rows[i][o.properties[t]]?parseInt(e.mailAccounts.rows[i][o.properties[t]]):0);break;case"openchannel":for(var i=0;i<e.openchannelAccounts.rows.length;i+=1)_.includes(o.filter,e.openchannelAccounts.rows[i].id)&&(a+=e.openchannelAccounts.rows[i][o.properties[t]]?parseInt(e.openchannelAccounts.rows[i][o.properties[t]]):0);break;case"whatsapp":for(var i=0;i<e.whatsappAccounts.rows.length;i+=1)_.includes(o.filter,e.whatsappAccounts.rows[i].id)&&(a+=e.whatsappAccounts.rows[i][o.properties[t]]?parseInt(e.whatsappAccounts.rows[i][o.properties[t]]):0);break;default: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(s){var o=[];return function(n,e){e||(e="global-exception");var t,a=s.get("ClientSideLoggingService").getLogger("global-exception"),i=o.findIndex(function(e){return e===n});-1<i?(t=i,o.splice(t,1)):(!function(e){if(100<=o.length){var n=o.length-100+1;o.splice(0,n)}o.push(e)}(n),a.error(e,n))}}e.$inject=["$injector"],angular.module("app.core").factory("$exceptionHandler",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(n,e,t){if(void 0===n)return"";if(!e)return"";t||(t="option");var a=_.find(e,function(e){return e.value==n});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()}},getEmailProviders:function(){return[{name:"Custom",value:"custom"},{name:"Gmail",value:"gmail"},{name:"Hotmail",value:"hotmail"},{name:"Yahoo",value:"yahoo"},{name:"Outlook365",value:"outlook365"}]}}}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,t){var a=this;a.currentUser=e.getCurrentUser(),a.cookieAlertHide=n.get("motion.cookieAlertHide:"+a.currentUser.id)||!1,a.cookieAlertOnClose=function(){n.put("motion.cookieAlertHide:"+a.currentUser.id,!0)},a.onInit=function(){t.setting.get({id:1}).$promise.then(function(e){e&&(a.cookieAlertHide=!e.disabledCookie)})},a.onInit()}e.$inject=["Auth","$cookies","api"],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"},activedirectory:{method:"post",url:r.baseUrl+"auth/activedirectory"}}),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"},setAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/phones"},getAdditionalPhones:{isArray:!0,method:"get",url:r.baseUrl+"cm/contacts/:id/phones"},duplicateAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/duplicateAdditionalPhones"},rescheduleAdditionalPhones:{isArray:!0,method:"post",url:r.baseUrl+"cm/contacts/:id/rescheduleAdditionalPhones"},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"},importUpdates:{isArray:!1,method:"post",url:r.baseUrl+"cm/contacts/uploadUpdates/: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"},getPreviewRecall:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/:id/previewrecall"},getOpenContacts:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/opencontacts"},getTimezones:{isArray:!1,method:"get",url:r.baseUrl+"cm/hopper/timezones"},getTimezone:{isArray:!1,method:"post",url:r.baseUrl+"cm/hopper/timezone"}}),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.contactItemType=e(r.baseUrl+"contact_item_types/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"contact_item_types/describe"},clone:{method:"post",url:r.baseUrl+"contact_item_types/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmContactHasItem=e(r.baseUrl+"cm_contact_has_items/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_contact_has_items/describe"},clone:{method:"post",url:r.baseUrl+"cm_contact_has_items/:id/clone",params:{includeAll:"@includeAll"}}}),r.cmHopperAdditionalPhone=e(r.baseUrl+"cm_hopper_additional_phones/:id",{id:"@id"},{update:{method:"put"},describe:{method:"get",url:r.baseUrl+"cm_hopper_additional_phones/describe"},clone:{method:"post",url:r.baseUrl+"cm_hopper_additional_phones/: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"}},downloadLogFile:{isArray:!1,method:"get",url:r.baseUrl+"license/download_log_file",responseType:"arraybuffer",cache:!1,transformResponse:function(e,n){var t=n();return{type:t["content-type"],length:t["content-length"],buffer:e}}}}),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"},getGlobalCustomFields:{isArray:!1,method:"get",url:r.baseUrl+"cm/lists/global_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"}},oauth2MicrosoftAuthorize:{method:"get",url:r.baseUrl+"cloudProviders/:id/oauth2/microsoft/authorize"}}),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.userSetting=e(r.baseUrl+"user-settings/:id",{id:"@id"},{update:{method:"put",isArray:!1}}),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.adSsoEnabled=!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.loginAD=function(){return l.progresslogin=!0,l.message="",s.loginAD(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.onInit=function(){{if(n.params.token&&n.params.userId)return s.removeCookies(),l.progresslogin=!0,o.secureCookieEnabled?r.set("motion.token",n.params.token,{secure:!0,sameSite:"none"}):r.set("motion.token",n.params.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.adSsoEnabled=o.adSsoEnabled},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,a,i;"rename_node"===e.type&&(a=(t=n).node.id,i="","custom"===t.node.parent?t.node.id.includes("custom_report_")||(i="custom_report_"+t.text):i=t.node.parent+"_"+t.text,p.treeCustomInstance.jstree(!0).set_id(t.node,"custom_report_"+i.toLowerCase()),t.node.a_attr.id=t.node.a_attr.id.replace(a,t.node.id),t.node.li_attr.id=t.node.id);var s=angular.toJson(p.treeCustomInstance.jstree(!0).get_json("#"));d.analyticTreeReport.update({id:2,tree:s}).$promise.then(function(){c.rows[1]&&(c.rows[1].tree=s),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,O,C,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(O,{id:e})&&0<e)return t.smsAccount.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,O.push(n),P.values.sms_account_id=U(O,"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(O,"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(C,{id:e})&&0<e)return t.pause.get({id:e,fields:"id,name"}).$promise.then(function(e){var n=e.toJSON();n.canSelect=!1,C.push(n),P.values.pause_id=U(C,"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(C,"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(O,"id","name"),pause_id:U(C,"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:"Zeina",option:"Zeina (Arabic, Female)"},{value:"Zhiyu",option:"Zhiyu (Chinese, Mandarin, Female)"},{value:"Naja",option:"Naja (Danish, Female)"},{value:"Mads",option:"Mads (Danish, Male)"},{value:"Lotte",option:"Lotte (Dutch, Female)"},{value:"Ruben",option:"Ruben (Dutch, Male)"},{value:"Nicole",option:"Nicole (English, Australian, Female)"},{value:"Olivia",option:"Olivia (English, Austrialian, Female)"},{value:"Russell",option:"Russell (English, Austrialian, Male)"},{value:"Amy",option:"Amy (English, British, Female)"},{value:"Emma",option:"Emma (English, British, Female)"},{value:"Brian",option:"Brian (English, British, Male)"},{value:"Aditi",option:"Aditi (English, Indian, Female)"},{value:"Raveena",option:"Raveena (English, Indian, Female)"},{value:"Aria",option:"Aria (English, New Zealand, Female)"},{value:"Ayanda",option:"Ayanda (English, South African, Female)"},{value:"Joanna",option:"Joanna (English, US, Female)"},{value:"Ivy",option:"Ivy (English, US, Female)"},{value:"Joey",option:"Joey (English, US, Male)"},{value:"Justin",option:"Justin (English, US, Male)"},{value:"Kendra",option:"Kendra (English, US, Female)"},{value:"Kimberly",option:"Kimberly (English, US, Female)"},{value:"Salli",option:"Salli (English, US, Female)"},{value:"Kevin",option:"Kevin (English, US, Male)"},{value:"Matthew",option:"Matthew (English, US, Male)"},{value:"Geraint",option:"Geraint (English, Welsh, Male)"},{value:"Celine",option:"Celine (French, Female)"},{value:"Mathieu",option:"Mathieu (French, Male)"},{value:"Léa",option:"Léa (French, Male)"},{value:"Chantal",option:"Chantal (French, Canadian, Female)"},{value:"Gabrielle",option:"Gabrielle (French, Canadian, Female)"},{value:"Vicki",option:"Vicki (German , Female)"},{value:"Hans",option:"Hans (German, Male)"},{value:"Marlene",option:"Marlene (German, Female)"},{value:"Aditi",option:"Aditi (Hindi , Female)"},{value:"Karl",option:"Karl (Icelandic, Male)"},{value:"Dora",option:"Dora (Icelandic, Female)"},{value:"Carla",option:"Carla (Italian, Female)"},{value:"Giorgio",option:"Giorgio (Italian, Male)"},{value:"Bianca",option:"Bianca (Italian, Male)"},{value:"Mizuki",option:"Mizuki (Japanese, Female)"},{value:"Takumi",option:"Takumi (Japanese, Male)"},{value:"Seoyeon",option:"Seoyeon (Korean, Female)"},{value:"Liv",option:"Liv (Norwegian, Female)"},{value:"Ewa",option:"Ewa (Polish, Female)"},{value:"Jacek",option:"Jacek (Polish, Male)"},{value:"Jan",option:"Jan (Polish, Male)"},{value:"Maja",option:"Maja (Polish, Female)"},{value:"Camila",option:"Camila (Portuguese, Brazilian, Female)"},{value:"Ricardo",option:"Ricardo (Portuguese, Brazilian, Male)"},{value:"Vitoria",option:"Vitoria (Portuguese, Brazilian, Female)"},{value:"Cristiano",option:"Cristiano (Portuguese, Male)"},{value:"Ines",option:"Ines (Portuguese, Female)"},{value:"Carmen",option:"Carmen (Romanian, Female)"},{value:"Maxim",option:"Maxim (Russian, Male)"},{value:"Tatyana",option:"Tatyana (Russian, Female)"},{value:"Conchita",option:"Conchita (Spanish, European, Female)"},{value:"Lucia",option:"Lucia (Spanish, European, Female)"},{value:"Enrique",option:"Enrique (Spanish, European, Male)"},{value:"Mia",option:"Mia (Spanish, Mexican, Female)"},{value:"Miguel",option:"Miguel (Spanish, US, Male)"},{value:"Penelope",option:"Penelope (Spanish, US, Female)"},{value:"Lupe",option:"Lupe (Spanish, US, Female)"},{value:"Astrid",option:"Astrid (Swedish, Female)"},{value:"Filiz",option:"Filiz (Turkish, Female)"},{value:"Gwyneth",option:"Gwyneth (Welsh , 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,textButtonColor,backgroundColor,fontSize,header_shape,showAgentAvatar,showCustomerAvatar,alignment,verticalAlignment,labelText,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,labelText:"CHAT",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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:m.chatWebsite.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.chatWebsiteInteractions=e||{count:0,rows:[]};for(var n=0;n<m.chatWebsiteInteractions.rows.length;n+=1){var t=m.chatWebsiteInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.chatInteraction.get(m.query,p).$promise}function v(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||g(),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 h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getChatWebsiteInteractions=g,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,g()}}).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=v,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){v(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(){O(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=O,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){O(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.importContactsUpdates=function(e,n,t){var a=JSON.parse(n);s.show({controller:"ImportContactsUpdatesDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/contacts/import/importUpdates.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 O(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,e,a,n,i,s,o,r,l,d,c){var m=this;if(m.errors=[],m.title="CONTACTMANAGER.EDIT_CONTACT",m.crudPermissions=c,m.contact=angular.copy(o),m.additionalItemTypes=[],m.additionalItems=[],m.contacts=n||{rows:[],count:0},m.lists=i||{rows:[],count:0},m.companies=s||{rows:[],count:0},m.customFields={rows:[],count:0},m.newContact=!1,m.newPhone=function(e){return{phone:e,color:"gray"}},m.contactItemTypes=[],m.contact)delete m.contact.List,f(m.contact.ListId),d.cmContact.getAdditionalPhones({id:o.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");m.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");m.additionalItems=[];for(var s=0;s<n.length;s++)m.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)});else{m.contact={ListId:r?parseInt(r,10):void 0,CompanyId:l?parseInt(l,10):void 0};var u=_.map(m.contact.Phones,"item"),p=_.map(m.contact.Phones,"description");m.additionalItemTypes=_.map(m.contact.Phones,"ItemTypeId");var g=_.map(m.contact.Phones,"ItemType.rgbBackgroundColor"),v=_.map(m.contact.Phones,"ItemType.name");m.additionalItems=[];for(var h=0;h<u.length;h++)m.additionalItems.push({phone:u[h],type:v[h],color:g[h],description:p[h]});m.title="CONTACTMANAGER.NEW_CONTACT",m.newContact=!0,b()}function f(e){if(e)return d.cmList.getCustomFields({id:e}).$promise.then(function(e){if(e){m.customFields=e;var n=_.map(m.customFields.rows,function(e){return"cf_"+e.id});return d.cmContact.get({id:m.contact.id,attributes:n,raw:!0}).$promise.then(function(e){m.contact=_.merge(m.contact,e)})}}).then(function(){m.customFields.rows.forEach(function(e){"datetime"===e.type&&m.contact["cf_"+e.id]&&(m.contact["cf_"+e.id]=A(m.contact["cf_"+e.id]))}),Object.keys(m.contact).forEach(function(e){if(_.startsWith(e,"cf_")){var n=e.split("_")[1];_.some(m.customFields.rows,["id",Number(n)])||delete m.contact["cf_"+n]}})}).catch(function(e){console.error(e)});m.customFields={rows:[],count:0}}function b(){return d.cmList.getGlobalCustomFields().$promise.then(function(e){if(e){m.customFields=e;_.map(m.customFields.rows,function(e){return"cf_"+e.id})}else;}).catch(function(e){console.error(e)})}function A(e){return null===e?void 0:new Date(e)}function E(){t.hide()}d.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){m.contactItemTypes=e.rows}),m.addNewContact=function(){m.errors=[],d.cmContact.save(m.contact).$promise.then(function(e){m.contacts.unshift(e),d.cmContact.setAdditionalPhones({id:e.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly created",msg:m.contact.name?m.contact.name+" has been created!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.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()})})},m.saveContact=function(){m.errors=[],d.cmContact.update({id:m.contact.id},m.contact).$promise.then(function(e){var n=_.find(m.contacts,{id:e.id});n&&_.merge(n,e)}).then(function(){return d.cmContact.setAdditionalPhones({id:o.id,items:m.additionalItems,item_types:m.additionalItemTypes}).$promise.then(function(){a.success({title:"Contact properly saved!",msg:m.contact.name?m.contact.name+" has been saved!":""}),E()})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.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()})})},m.deleteContact=function(e){m.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(){d.cmContact.delete({id:m.contact.id}).$promise.then(function(){_.remove(m.contacts,{id:m.contact.id}),a.success({title:"Contact properly deleted!",msg:m.contact.name?m.contact.name+" has been deleted!":""}),E()}).catch(function(e){console.error(e),m.errors=e.data.errors||[{message:e.toString(),type:"api.contact.delete"}]})},function(){})},m.closeDialog=E,m.getCustomFields=f,m.getDateFromString=A,e.$watch("vm.contact.ListId",function(e,n){_.isNil(e)&&b()})}e.$inject=["$mdDialog","$scope","toasty","contacts","lists","companies","contact","ListId","CompanyId","api","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),function(){"use strict";function e(e,t,n,a,i,s){var o=this;function r(){e.hide()}o.errors=[],o.title="CONTACTMANAGER.COPY_CONTACT",o.contact=angular.copy(n),o.lists=i||{rows:[],count:0},o.addNewContact=function(){o.errors=[];var n=o.contact.id;delete o.contact.id,o.contact.tags&&!o.contact.tags.length&&delete o.contact.tags;s.cmContact.save(o.contact).$promise.then(function(e){return a.unshift(e),s.cmContact.duplicateAdditionalPhones({id:n,fromContactId:n,toContactId:e.id}).$promise.then(function(){t.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(a,t,e,i,s,n,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 O(){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 C(){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.additionalItems=[],S.additionalItemTypes=[],S.contactItemTypes=[],S.firstDayMonth=new Date(moment().startOf("month").subtract(1,"seconds").utcOffset(0,!0).format()),S.lastDayMonth=new Date(moment().endOf("month").subtract(1,"day").utcOffset(0,!0).format()),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=e.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");var n=_.map(S.contact.Phones,"item"),t=_.map(S.contact.Phones,"description");S.additionalItemTypes=_.map(S.contact.Phones,"ItemTypeId");var a=_.map(S.contact.Phones,"ItemType.rgbBackgroundColor"),i=_.map(S.contact.Phones,"ItemType.name"),s=_.map(S.contact.Phones,"ItemType.id");S.additionalItems=[];for(var o=0;o<n.length;o++)S.additionalItems.push({phone:n[o],type:i[o],ItemTypeId:s[o],color:a[o],description:t[o]})}).then(function(e){r.contactItemType.get({fields:"id,name,rgbBackgroundColor"}).$promise.then(function(e){S.contactItemTypes=e.rows})}).finally(function(){S.contact&&w()})},S.gotoContacts=function(){e.go("app.contactmanager.contacts",{},{reload:!0,notify:!0})},S.duplicateContact=function(e){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:{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}).then(function(){return r.cmContact.setAdditionalPhones({id:S.contact.id,items:S.additionalItems}).$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});s.show({controller:"CreateOrEditCompanyDialogController",controllerAs:"vm",templateUrl:"app/main/apps/contactmanager/views/companies/create/dialog.html",parent:angular.element(i.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=s.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 s.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=O,S.getHistories=C,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=s.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");s.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){s.show({controller:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.createOrEditIvrCampaignHopper=function(e,n){s.show({controller:"CreateOrEditHopperCampaignIdDialogController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/ivrCampaigns/edit/hoppers/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{hopper:n,hoppers:S.hoppers.rows,license:null,setting:null,crudPermissions:S.crudPermissions}})},S.newPhone=function(e){return{phone:e,color:"gray"}},S.getCustomerJourney=w,S.loadMoreJourney=function(){return n(function(e,n){var t=S.journey.length;return e(w(t))})},S.moveUp=function(e){N(e,e-1)},S.moveDown=function(e){N(e,e+1)};var R=!0,x=1;function N(e,n){var t=S.additionalItems[n];S.additionalItems[n]=S.additionalItems[e],S.additionalItems[e]=t,a.additionalPhonesForm.$setDirty()}a.$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())}),a.$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),O())}),a.$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),C())})}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).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),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},{key:"dialTimezone",required:!1}],g.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){var n=e.rows;console.log(n);for(var t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,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(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:"id",required:!0},{key:"firstName",required:!1},{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.contactItemTypes=[],l.contactItemType.get({fields:"id,name,orderBy"}).$promise.then(function(e){for(var n=e.rows,t=0;t<n.length;t++)g.contactItemTypes.push({key:n[t].name,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.importUpdates({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("ImportContactsUpdatesDialogController",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,d,c,m,u,p,g,v,h){var f=this;function b(){return a.smsAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.smsAccounts=e,a.smsInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].SmsAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.smsAccounts.rows,{id:e.rows[t].SmsAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.smsAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.smsAccounts=n})})}function A(){return a.faxAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.faxAccounts=e,a.faxInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].FaxAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.faxAccounts.rows,{id:e.rows[t].FaxAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.faxAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.faxAccounts=n})})}function E(){return a.openchannelAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.openchannelAccounts=e,a.openchannelInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].OpenchannelAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.openchannelAccounts.rows,{id:e.rows[t].OpenchannelAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.openchannelAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.openchannelAccounts=n})})}function y(){return a.whatsappAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.whatsappAccounts=e,a.whatsappInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].WhatsappAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.whatsappAccounts.rows,{id:e.rows[t].WhatsappAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.whatsappAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.whatsappAccounts=n})})}function S(){return a.chatWebsite.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.chatWebsites=e,a.chatInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].ChatWebsiteId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.abandoned+=e.rows[t].abandoned,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.chatWebsites.rows,{id:e.rows[t].ChatWebsiteId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","abandoned","unmanaged"]));return f.chatWebsites}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.chatWebsites=n})})}function T(){return a.mailAccount.get({fields:"id,name",nolimit:!0}).$promise.then(function(e){return f.mailAccounts=e,a.mailInteraction.get({createdAt:{$gte:moment().startOf("day").utcOffset(0,!0).format(),$lte:moment().endOf("day").utcOffset(0,!0).format()},nolimit:!0}).$promise}).then(function(e){var n;if(e&&0<e.count)for(var t=0;t<e.rows.length;t+=1)n&&n.id===e.rows[t].MailAccountId?(n.total+=e.rows[t].total,n.waiting+=e.rows[t].waiting,n.talking+=e.rows[t].talking,n.answered+=e.rows[t].answered,n.unmanaged+=e.rows[t].unmanaged):(n=_.find(f.mailAccounts.rows,{id:e.rows[t].MailAccountId}))&&_.merge(n,_.pick(e.rows[t],["waiting","total","talking","answered","unmanaged"]));return f.mailAccounts}).then(function(n){f.customDashboard.widgets.forEach(function(e){e.mailAccounts=n})})}function I(){for(var e=0;e<f.customDashboard.widgets.length;e+=1)f.customDashboard.widgets[e].voiceQueuesSelected=f.voiceQueuesSelected,f.customDashboard.widgets[e].chatWebsitesSelected=f.chatWebsitesSelected,f.customDashboard.widgets[e].smsAccountsSelected=f.smsAccountsSelected,f.customDashboard.widgets[e].faxAccountsSelected=f.faxAccountsSelected,f.customDashboard.widgets[e].mailAccountsSelected=f.mailAccountsSelected,f.customDashboard.widgets[e].openchannelAccountsSelected=f.openchannelAccountsSelected,f.customDashboard.widgets[e].whatsappAccountsSelected=f.whatsappAccountsSelected}f.currentUser=s.getCurrentUser(),f.userProfile=v,f.userProfileSection=h&&1===h.count?h.rows[0]:null,f.crudPermissions=s.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.customDashboard={},f.voiceQueues=l&&l.count?l:{count:0,rows:[]},f.voiceQueuesSelected=l&&l.count?_.map(l.rows,"id"):[],f.faxAccounts=d&&d.count?d:{count:0,rows:[]},f.faxAccountsSelected=d&&d.count?_.map(d.rows,"id"):[],f.chatWebsites=c&&c.count?c:{count:0,rows:[]},f.chatWebsitesSelected=c&&c.count?_.map(c.rows,"id"):[],f.smsAccounts=m&&m.count?m:{count:0,rows:[]},f.smsAccountsSelected=m&&m.count?_.map(m.rows,"id"):[],f.mailAccounts=u&&u.count?u:{count:0,rows:[]},f.mailAccountsSelected=u&&u.count?_.map(u.rows,"id"):[],f.openchannelAccounts=p&&p.count?p:{count:0,rows:[]},f.openchannelAccountsSelected=p&&p.count?_.map(p.rows,"id"):[],f.whatsappAccounts=g&&g.count?g:{count:0,rows:[]},f.whatsappAccountsSelected=g&&g.count?_.map(g.rows,"id"):[],f.interval=n(function(){},1e3),f.goToEdit=function(){e.go("app.tools.customDashboards.edit",{customDashboard:f.customDashboard,id:f.customDashboard.id,tab:1})},f.setFilter=function(e){o.show({controller:"FilterDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/custom/filter/dialog.html",parent:angular.element(r.body),targetEvent:e,clickOutsideToClose:!0,locals:{vm_parent:f}}).then(function(e){f=e,I()})},f.updateWidget=I,i.onWithoutApply("voice_queue:save",function(e){var n=_.find(f.voiceQueues.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.onWithoutApply("sms_account:save",function(e){var n=_.find(f.smsAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("smsInteraction:update",b),i.on("smsInteraction:save",b),i.onWithoutApply("fax_account:save",function(e){var n=_.find(f.faxAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("faxInteraction:update",A),i.on("faxInteraction:save",A),i.onWithoutApply("mail_account:save",function(e){var n=_.find(f.mailAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("mailInteraction:update",T),i.on("mailInteraction:save",T),i.onWithoutApply("openchannel_account:save",function(e){var n=_.find(f.openchannelAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("openchannelInteraction:update",E),i.on("openchannelInteraction:save",E),i.onWithoutApply("whatsapp_account:save",function(e){var n=_.find(f.whatsappAccounts.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("whatsappInteraction:update",y),i.on("whatsappInteraction:save",y),i.onWithoutApply("chat_website:save",function(e){var n=_.find(f.chatWebsites.rows,{id:e.id});n&&_.merge(n,_.pick(e,_.keys(n)))}),i.on("chatInteraction:update",S),i.on("chatInteraction:save",S),a.dashboard.get({id:e.params.id}).$promise.then(function(e){if(e)return f.customDashboard=e,f.customDashboard.widgets=[],f.customDashboard.preview=!0,f.customDashboard.draggable={enabled:!1},f.customDashboard.resizable={enabled:!1},a.dashboard.getItems({id:f.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=f.voiceQueues,e.rows[n].voiceQueuesSelected=f.voiceQueuesSelected,e.rows[n].faxAccounts=f.faxAccounts,e.rows[n].faxAccountsSelected=f.faxAccountsSelected,e.rows[n].mailAccounts=f.mailAccounts,e.rows[n].mailAccountsSelected=f.mailAccountsSelected,e.rows[n].smsAccounts=f.smsAccounts,e.rows[n].smsAccountsSelected=f.smsAccountsSelected,e.rows[n].chatWebsites=f.chatWebsites,e.rows[n].chatWebsitesSelected=f.chatWebsitesSelected,e.rows[n].openchannelAccounts=f.openchannelAccounts,e.rows[n].openchannelAccountsSelected=f.openchannelAccountsSelected,e.rows[n].whatsappAccounts=f.whatsappAccounts,e.rows[n].whatsappAccountsSelected=f.whatsappAccountsSelected,f.customDashboard.widgets.push(e.rows[n])}).catch(function(){f.customDashboard=void 0}),t.$on("$destroy",function(){i.removeAllListeners("voice_queue:save"),i.removeAllListeners("sms_account:save"),i.removeAllListeners("fax_account:save"),i.removeAllListeners("mail_account:save"),i.removeAllListeners("openchannel_account:save"),i.removeAllListeners("whatsapp_account:save"),i.removeAllListeners("chat_website:save"),i.removeAllListeners("chatInteraction:save"),i.removeAllListeners("chatInteraction:update"),i.removeAllListeners("smsInteraction:save"),i.removeAllListeners("smsInteraction:update"),i.removeAllListeners("openchannelInteraction:save"),i.removeAllListeners("openchannelInteraction:update"),i.removeAllListeners("mailInteraction:save"),i.removeAllListeners("mailInteraction:update"),i.removeAllListeners("faxInteraction:save"),i.removeAllListeners("faxInteraction:update"),i.removeAllListeners("whatsappInteraction:save"),i.removeAllListeners("whatsappInteraction:update"),f.interval&&n.cancel(f.interval)})}e.$inject=["$state","$interval","$scope","api","socket","Auth","$mdDialog","$document","voiceQueues","faxAccounts","chatWebsites","smsAccounts","mailAccounts","openchannelAccounts","whatsappAccounts","userProfile","userProfileSection"],angular.module("app.dashboards.custom").controller("DashboardCustomController",e)}(),function(){"use strict";function e(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){a.hide(c.parent)}c.title="DASHBOARDS.SETFILTERS",c.currentUser=l.getCurrentUser(),c.parent=d,c.onChangeFilter=function(e){for(var n=0;n<c.parent.customDashboard.widgets.length;n+=1)switch(e){case"voice":c.parent.customDashboard.widgets[n].voiceQueuesSelected=c.parent.voiceQueuesSelected;break;case"sms":c.parent.customDashboard.widgets[n].smsAccountsSelected=c.parent.smsAccountsSelected;break;case"chat":c.parent.customDashboard.widgets[n].chatAccountsSelected=c.parent.chatAccountsSelected;break;case"fax":c.parent.customDashboard.widgets[n].faxAccountsSelected=c.parent.faxAccountsSelected;break;case"mail":c.parent.customDashboard.widgets[n].mailAccountsSelected=c.parent.mailAccountsSelected;break;case"openchannel":c.parent.customDashboard.widgets[n].openchannelAccountsSelected=c.parent.openchannelAccountsSelected;break;case"whatsapp":c.parent.customDashboard.widgets[n].whatsappAccountsSelected=c.parent.whatsappAccountsSelected}},c.confirm=function(){m()},c.closeDialog=m}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","api","Auth","vm_parent"],angular.module("app.tools").controller("FilterDialogController",e)}(),function(){"use strict";function e(e,s,i,c,o,r,m,n,l,t,u,a,d,p,g,v,h,f,b,A,E){var y=this;y.license=v,y.setting=h,y.detectBrowser=b.detectBrowser(),y.user=n.getCurrentUser(),y.currentTab=0,y.notifications={},y.tabs={},y.agentCapacity={},y.autoClose=!1,y.acceptedNotifications=[],y.autoanswerTimeout,y.globalUserLists=a||{count:0,rows:[]},y.globalLists=d||{count:0,rows:[]},y.globalCompanies=p||{count:0,rows:[]},y.globalTags=g||{count:0,rows:[]};var S=E.getLogger("dashboard","agent.general.contact");function T(e){var n={};for(var t in y.tabs)y.tabs.hasOwnProperty(t)&&(n[t]=_.pick(y.tabs[t],["type","title","channel","icon","color","autoCreate","id","saved","badges","openedAt"]),_.isNil(y.tabs[t].contact)||(n[t].contact=_.pick(y.tabs[t].contact,["id","ListId"])),_.isNil(y.tabs[t].calls)||(n[t].calls=y.tabs[t].calls),y.tabs[t].interaction&&(n[t].interaction=_.pick(y.tabs[t].interaction,["id","OpenchannelAccountId","MailAccountId","ChatWebsiteId","FaxAccountId","SmsAccountId","WhatsappAccountId","closed","draft"])));var a=JSON.parse(i.localStorage.getItem("motion2.user:"+y.user.id));a?(a.tabs=n,a.currentTab=y.currentTab,a.autoClose=y.autoClose):a={tabs:n,currentTab:y.currentTab,autoClose:y.autoClose},i.localStorage.setItem("motion2.user:"+y.user.id,JSON.stringify(a)),e&&I(e)}function I(e){if(_.isNil(e)||e&&"interaction"===e.type){var n={id:y.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 y.tabs)y.tabs.hasOwnProperty(t)&&n.capacity.hasOwnProperty(y.tabs[t].channel)&&y.tabs[t].interaction&&!y.tabs[t].interaction.closed&&(n.capacity[y.tabs[t].channel]+=1,n.interaction[y.tabs[t].channel].push(y.tabs[t].interaction.id));if(!_.isEqual(y.agentCapacity,n.capacity))return y.agentCapacity=n.capacity,l.rpc.setAgentCapacity(n)}}function O(e){y.tabs[e.id]&&(!function(e){if(e.channel&&e.interaction)l.user["remove"+_.upperFirst(e.channel)+"Interactions"]({id:y.user.id,ids:[e.interaction.id]}).$promise.catch(function(e){S.error(e)})}(y.tabs[e.id]),delete y.tabs[e.id],y.currentTab=0,T(e))}function C(e){Object.keys(y.tabs).length!==y.setting.limitTabs?(e.id=_.random(1e10),e.openedAt=(new Date).toISOString(),e.saved=!1,e.badges=0,y.tabs[e.id]=e,y.currentTab=e.id,T(e)):u.warning({title:"",msg:c.instant("DASHBOARD.LIMIT_TABS_REACHED")})}function w(n){return _.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id==n.interactionId&&e.channel==n.channel})}function R(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=y.user.privacyEnabled?A.mask(a):a):c.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)&&U(t)),n){var s=_.find(y.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 l.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];y.currentTab=s.id})}else{if(n.ListId)return l.disposition.get({ListId:n.ListId,nolimit:!0}).$promise.then(function(e){return i.dispositions=e,l.cmList.getCustomFields({id:n.ListId,nolimit:!0}).$promise}).then(function(e){i.customFields=e}).catch(F()).finally(function(){C(i)});C(i)}}else C(i)}function x(n,t){var e=_.find(y.tabs,function(e){return"interaction"===e.type&&e.interaction&&e.interaction.id===t.id&&e.channel===n});e?(e.isDraft=t.isDraft||!1,y.currentTab=e.id):C(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 N(e){var n=0;switch(e){case"chat":n=105;break;case"mail":n=106;break;case"sms":n=107;break;case"openchannel":n=108;break;case"fax":n=109;break;case"whatsapp":n=114}return 0<n&&_.includes(y.user.permissions,n)}function D(t){f.isSupported()?f.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},f.show(e.title,n)},function(e){S.error("Please enable browser notifications!",e)}):S.error("Browser notifications are not supported by the browser. Normal notifications will be used.")}function P(n){u.wait({title:n.title,msg:n.msg||"",showClose:!1,clickToClose:!1,timeout:!1,sound:n.sound,html:!0,shake:n.shake||!1,onAdd:function(){y.notifications[n.uniqueid]=this.id},onAccept:function(){if(L(n),l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),y.autoanswerTimeout=null,x(e.channel,e.interaction),u.success({title:"Message properly accepted!",msg:"Message has been accepted!"})}).catch(F())},onReject:function(){if(L(n),_.isNil(y.autoanswerTimeout)||(r.cancel(y.autoanswerTimeout),y.autoanswerTimeout=null),l[n.channel+"Message"])return l[n.channel+"Message"].reject({id:n.id,UserId:y.user.id}).$promise.then(function(){u.success({title:"Message properly rejected!",msg:"Message has been rejected!"})}).catch(F())}})}function L(e){e&&e.uniqueid&&y.notifications[e.uniqueid]&&(u.clear(y.notifications[e.uniqueid]),delete y.notifications[e.uniqueid])}function k(n){var t=n.uniqueid;for(var e in S.debug("onVoiceChannelRemove -> evt",n),y.tabs)if(y.tabs.hasOwnProperty(e)){var a=y.tabs[e];if(a.calls){S.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?(S.debug("Allowing disposition for call %s",a.calls[i].uniqueid),U(a.calls[i])):S.debug("Call %s not found or already completed",a.calls[i].uniqueid),a.contact&&a.contact.id&&r(M(t,a.contact.id,a),1e3)}}T()}function M(n,e,t){return function(){if(_.find(t.calls,function(e){return e.uniqueid===n}))return l.voiceCallReport.update({id:n,ContactId:e}).$promise.catch(function(e){S.error(e)})}}function U(e){e.disposedAt=new Date}function F(){return function(e){if(404===e.status)u.warning({title:c.instant("DASHBOARDS.ATTENTION"),msg:c.instant("DASHBOARDS.ACCEPT_ELSEWHERE")});else if(e.data&&e.data.errors&&e.data.errors.length){y.errors=e.data.errors||[{message:e.toString(),type:"api.openchannelMessage.accept"}];for(var n=0;n<e.data.errors.length;n+=1)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:"api.openchannelMessage.accept",msg:e.data?JSON.stringify(e.data.message):e.toString()})}}function $(e){l.cmHopper.update({id:e,recallmeNotifiedDate:null}).$promise.then(function(e){S.debug(e)}).catch(function(e){S.error(e)}).finally(function(){q(e)})}function q(e){y.toasty.clear(y.notifications[e])}y.onClickTab=function(e){y.currentTab=e,T(y.tabs[e])},y.isActiveTab=function(e){return e===y.currentTab},y.alreadyExistsTab=w,y.addContactTab=R,y.addInteractionTab=x,y.addTab=C,y.removeTab=O,y.updateLocalStorage=T,y.closeTab=function(e){var n=!1,t=s.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 a=y.user.voicePause||y.user.chatPause||y.user.mailPause||y.user.openchannelPause||y.user.faxPause;return"interaction"===e.type&&(n=e.interaction.Account.mandatoryDisposition),s.show(t).then(function(){"interaction"===e.type&&s.show({controller:"DisposeInteractionDialogController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/interaction/dispose/dialog.html",parent:angular.element(o.body),onRemoving:function(){y.user&&n&&!a&&l.user.unpause({id:y.user.id}).$promise.catch(function(e){S.error(e)})},clickOutsideToClose:!n,escapeToClose:!n,locals:{user:y.user,channel:e.channel,interaction:e.interaction}}),O(e)}).catch(function(){"interaction"===e.type&&O(e)})}if(_.forEach(e.calls,function(e){e.mandatoryDisposition&&(n=!0)}),"contact"===e.type&&0<e.calls.length){if(!n)return t._options.textContent="There is a call that hasn't been disposed yet.",s.show(t).then(function(){O(e)});var i=s.alert().title("Warning").textContent("There is a call that hasn't been disposed yet.").ok("OK");s.show(i).finally(function(){i=void 0})}else O(e)}},y.dialPreviewRecallReminder=function(e){var n,t,a,i,s;if(e&&e.hopper){if(i=m("formatdate")(e.hopper.scheduledat),s=e.hopper,e.hopper.Contact&&(n=e.hopper.Contact),e.hopper.List&&(t=e.hopper.List),e.hopper.id&&(a=e.hopper.id),a&&n&&t&&n.firstName){var o=n.firstName;n.lastName&&(o=o+" "+n.lastName);var r=s.phone||n.phone;y.user.privacyEnabled&&(o=A.mask(o),r=A.mask(r));var l=c.instant("DASHBOARDS.RECALLME_CALL_REMINDER"),d="<div>          <span>"+c.instant("DASHBOARDS.UPCOMING_RECALLME_CALL")+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_NAME")+": "+o+"</span><br>          <span>"+c.instant("DASHBOARDS.CONTACT_PHONE")+": "+r+"</span><br>          <span>"+c.instant("DASHBOARDS.SCHEDULED_TIME")+": "+i+"</span><br>          <span>"+c.instant("DASHBOARDS.LIST_NAME")+": "+t.name+"</span><br>          </div>";S.debug(e),u.info({title:l,msg:d,showClose:!0,clickToClose:!0,timeout:6e4,html:!0,onAdd:function(){y.notifications[a]=this.id},onAccept:function(){delete y.notifications[a],y.openContactTab(a)},onReject:function(){delete y.notifications[a],$(a)},onRemove:function(){setTimeout(function(){y.notifications[a]&&(delete y.notifications[a],$(a))},1e3)}})}}else S.warn("Response does not contain hopper",e)},y.openContactTab=function(e){y.openPreviewDialog(e),q(e)},y.openPreviewDialog=function(e){l.cmHopper.getPreviewRecall({id:e}).$promise.then(function(e){var n=angular.element("#toolbar").scope();n&&n.vm.openPreviewDialog(e,!0)})},y.toasty=u,function(){var e=i.localStorage.getItem("motion2.user:"+y.user.id);if(e)try{e=JSON.parse(e),y.tabs=e.tabs?e.tabs:{},y.currentTab=e.currentTab?e.currentTab:0,y.autoClose=!!e.autoClose&&e.autoClose,I(y.tabs[y.currentTab]),S.debug("Tabs initiated correctly")}catch(e){S.error(e)}}(),e.$on("$destroy",function(){for(var e in y.notifications)y.notifications.hasOwnProperty(e)&&L({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")}),t.on("trigger:contactmanager",function(n){_.isNil(n.contacts)||1!==n.contacts.length?s.show({controller:"ContactSelectionController",controllerAs:"vm",templateUrl:"app/main/apps/dashboards/views/general/agent/contact/selection/dialog.html",parent:angular.element(o.body),locals:{contacts:n.contacts,callNumber:n.evt.routeId?n.evt.destcalleridnum:n.evt.calleridnum}}).then(function(e){R(e,n.evt)}):R(n.contact,n.evt)}),t.on("trigger:jscripty",function(t){return l.jscriptyProject.get({id:t.ProjectId}).$promise.then(function(n){if(n){if(!_.isUndefined(t["xmd-contactid"]))return l.cmContact.get({id:t["xmd-contactid"]}).$promise.then(function(e){try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user,contact:e}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t,contact:e})}).catch(F());try{n.formData=Mustache.render(n.formData,_.merge(t,{user:y.user}))}catch(e){S.error(e)}C({type:"jscripty",title:n.name,icon:"icon-script",color:"grey",project:n,call:t})}}).catch(F())}),t.on("trigger:bot",function(n){var t=n.calleridname&&"<unknown>"!==n.calleridname?n.calleridname:n.calleridnum,a=n.calleridnum;return l.squareMessage.get({fields:"id",limit:1,offset:0,uniqueid:n.uniqueid}).$promise.then(function(e){e.count&&C({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":i.open(e.uri);break;case"1":i.open(e.uri,"_blank","width="+(e.windowWidth||"800")+",height="+e.windowHeight||"600");break;case"2":C({type:"iframe",title:e.uri,icon:"icon-google-earth",color:"blue",src:e.uri});break;default:i.open(e.uri)}else i.open(e.uri)}),t.on("trigger:browser:popup",function(e){e&&e.html&&C({type:"popup",title:e.calleridnum||"popup",icon:"icon-tablet",color:"grey",html:e.html})}),t.on("notification:save",function(n){if(N(n.channel)&&n&&n.uniqueid){D(n);var e=w(n);if(e){if(l[n.channel+"Message"])return y.currentTab!==e.id&&(e.badges+=1),y.acceptedNotifications.push(n.id),l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id}).$promise.catch(F())}else{var t="mail"==n.channel?"email":n.channel,a=y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0;if(y.user[t+"Autoanswer"]&&y.license[n.channel]&&N(n.channel)){if(0<a)P(n),y.autoanswerTimeout=r(function(){if(l[n.channel+"Message"]&&!_.includes(y.acceptedNotifications,n.id))return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction),L(n)}).catch(F())},y.user[t+"AutoanswerDelay"]?1e3*y.user[t+"AutoanswerDelay"]:0);else if(l[n.channel+"Message"])return l[n.channel+"Message"].accept({id:n.id,UserId:y.user.id,manual:!0}).$promise.then(function(e){y.acceptedNotifications.push(n.id),x(e.channel,e.interaction)}).catch(F())}else P(n)}}}),t.on("notification:remove",L),t.on("voice_queue_channel:remove",k),t.on("voice_outbound_channel:remove",k),t.on("user:dialPreviewRecallReminder",y.dialPreviewRecallReminder)}e.$inject=["$scope","$mdDialog","$window","$translate","$document","$timeout","$filter","Auth","api","socket","toasty","globalUserLists","globalLists","globalCompanies","globalTags","license","setting","desktopNotification","msUtils","privacyManager","ClientSideLoggingService"],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,l,n){var g=this;g.user=s.getCurrentUser(),g.detectBrowser=e.detectBrowser(),g.additionalItemTypes=[],g.additionalItems=[],g.contactItemTypes=[],g.newPhone=function(e){return{phone:e,color:"gray"}},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=h,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(){return u.cmContact.setAdditionalPhones({id:g.contact.id,items:g.additionalItems,item_types:g.additionalItemTypes}).$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(){g.user&&i.mandatoryDisposition&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.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=y,g.addJscriptyTab=function(e){try{e.formData=Mustache.render(e.formData,{contact:g.contact,user:g.user})}catch(e){v.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=b,g.getFinals=A,g.getHistories=E,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(){g.user&&r.mandatoryDisposition&&!i&&u.user.unpause({id:g.user.id}).$promise.catch(function(e){v.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){}u.contactItemType.get({}).$promise.then(function(e){g.contactItemTypes=e.rows}).then(function(){u.cmContact.getAdditionalPhones({id:g.contact.id}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");g.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");g.additionalItems=[];for(var s=0;s<n.length;s++)g.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})}).catch(function(e){console.log(e)})}),b(),A(),E()}).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?h():void 0}).finally(function(){g.contact&&g.contact.id&&(S(),g.contact.dateOfBirth=y(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=S,g.loadMoreJourney=function(){return i(function(e){var n=g.journey.length;return e(S(n))})};var v=n.getLogger("agent.general.contact");function h(){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 f(n){return function(e){g[n]=e||{count:0,rows:[]}}}function b(){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,f("hoppers")).$promise)}function A(){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,f("finals")).$promise)}function E(){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,f("histories")).$promise)}function y(e){return null===e?void 0:new Date(e)}function S(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})}m.$on("$destroy",function(){}),m.$watch("currentTab",function(){1===g.currentTab&&(b(),A(),E())});var T=!0,I=1;m.$watch("queryHopper.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHopper.page),e!==n&&(g.queryHopper.page=1),e||(g.queryHopper.page=I),b())}),m.$watch("queryFinal.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryFinal.page),e!==n&&(g.queryFinal.page=1),e||(g.queryFinal.page=I),A())}),m.$watch("queryHistory.filter",function(e,n){T?t(function(){T=!1}):(n||(I=g.queryHistory.page),e!==n&&(g.queryHistory.page=1),e||(g.queryHistory.page=I),E())})}e.$inject=["$window","$mdDialog","$document","$timeout","$scope","$q","api","toasty","Auth","$translate","msUtils","customerJourneyManager","privacyManager","ClientSideLoggingService"],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,p,g){var v=this;v.user=d.getCurrentUser(),v.isReschedule=!1,v.recallme=!1,v.queueCampaign=void 0,v.queueCampaigns={count:0,rows:[]},v.dispositions=_.orderBy(_.concat([],e.rows,a.rows),["name"],["asc"]),v.contact=l,v.call=r,v.note=v.call.note||void 0,v.dialerCall=!1,v.hasBlackLists=!1,v.contactTZTime,v.availableCalls=m,v.autoClose=u,v.recalcTZTime=b,v.hopper={minDate:new Date,dateTime:new Date,scheduledAt:new Date},p.$watch("vm.contact.dialTimezone",function(){b()});var h=g.getLogger("dashboard","agent.general.contact.dispose");function f(){return i(function(n){o.user.getQueues({id:d.getCurrentUser().id,fields:"id,name,dialActive,dialMethod",channel:"voice",type:"outbound",nolimit:!0}).$promise.then(function(e){v.queueCampaigns=e||{count:0,rows:[]},n()}).catch(function(e){h.error(e),s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api.voiceQueue.getBlackLists",msg:e.data?JSON.stringify(e.data):e.toString()})})})}function b(){var e=v.dialerCall?Number(v.call["xmd-voicequeueid"]):v.queueCampaign?v.queueCampaign.id:v.call["xmd-campaignid"]?Number(v.call["xmd-campaignid"]):null;if(e)o.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,_.isNil(v.contact.dialTimezone)&&(v.contact.dialTimezone=v.hopper.dialTimezone),n)o.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}});else{o.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledAt=moment(v.hopper.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}function A(){var e=v.selectedDisposition?v.selectedDisposition.name.toLowerCase():void 0;return{id:v.call.uniqueid,disposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,secondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,thirdDisposition:v.thirdLevelDisposition?v.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 E(e){t.hide([e,v.autoClose])}v.call&&v.call.variables&&v.call.variables["xmd-voicequeueid"]?(v.dialerCall=!0,o.voiceQueue.getBlackLists({id:v.call.variables["xmd-voicequeueid"]}).$promise.then(function(e){e&&e.rows&&0<e.rows.length&&(v.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()})})):f(),v.onDispositionChange=function(e){switch(e){case"first":v.selectedDisposition=v.firstLevelDisposition,v.anySecondLevelDisposition=_.some(v.dispositions,["ParentId",v.firstLevelDisposition.id]),v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.anyThirdLevelDisposition=!1;break;case"second":v.selectedDisposition=v.secondLevelDisposition,v.anyThirdLevelDisposition=_.some(v.dispositions,["ParentId",v.secondLevelDisposition.id]);break;case"third":v.selectedDisposition=v.thirdLevelDisposition}},v.clearDispositionSelection=function(e){"second"===e?(v.secondLevelDisposition=void 0,v.thirdLevelDisposition=void 0,v.selectedDisposition=v.firstLevelDisposition):"third"===e&&(v.thirdLevelDisposition=void 0,v.selectedDisposition=v.secondLevelDisposition)},v.saveDisposition=function(e){v.selectedDisposition=_.isNil(e)?v.selectedDisposition:{name:e},e&&(v.firstLevelDisposition=v.selectedDisposition);v.call.note=v.note,o.voiceCallReport.update({id:v.call.uniqueid,userDisposition:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.thirdLevelDisposition.name:null,note:v.note,UserId:d.getCurrentUser().id,ContactId:v.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:v.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:v.firstLevelDisposition?v.firstLevelDisposition.name:null,userSecondDisposition:v.secondLevelDisposition?v.secondLevelDisposition.name:null,userThirdDisposition:v.thirdLevelDisposition?v.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()})}),v.dialerCall&&(o.cmHopperFinal.update(A()).$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(A()).$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(v.selectedDisposition))E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"");else switch(v.selectedDisposition.name.toLowerCase()){case"blacklist":v.call&&v.call.variables&&v.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(v.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")+" "+v.selectedDisposition}),v.selectedDisposition=void 0}).then(function(e){e&&E(v.selectedDisposition?v.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()}),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}(v.call.variables["xmd-voicequeueid"]);break;case"reschedule":v.isReschedule=!0,v.recallme=!1;break;case"recallme":v.isReschedule=!0,v.recallme=!0,v.user.selectRecallMeCampaign&&f().then(function(){v.originalCampaign=_.find(v.queueCampaigns.rows,["id",v.call.variables["xmd-voicequeueid"]]);var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));v.queueCampaign=e.previewCampaignId?_.find(v.queueCampaigns.rows,["id",Number(e.previewCampaignId)]):v.originalCampaign});break;default:E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}},v.closeDialog=function(){t.cancel()},v.saveReschedule=function(){v.disable=!0;var e=null;v.queueCampaign?e=v.queueCampaign.id:v.dialerCall&&(e=Number(v.call["xmd-voicequeueid"]));return o.cmHopper.save({phone:v.contact.phone,UserId:v.recallme?d.getCurrentUser().id:null,ContactId:v.contact.id,ListId:v.contact.ListId,VoiceQueueId:e,scheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),dialTimezone:v.contact.dialTimezone,priority:3,recallme:v.recallme,OwnerId:d.getCurrentUser().id}).$promise.then(function(e){o.cmContact.rescheduleAdditionalPhones({id:v.contact.id,hopperId:e.id}).$promise.catch(function(e){console.log(e)})}).then(function(){if(v.dialerCall&&(o.cmHopperFinal.update({id:v.call.uniqueid,rescheduled:!0,rescheduledat:moment(v.hopper.scheduledAt).format("YYYY-MM-DD HH:mm:ss"),recallme:v.recallme}).$promise.catch(function(e){h.error(e)}),v.user.selectRecallMeCampaign)){var e=JSON.parse(n.localStorage.getItem("motion2.user:"+v.user.id));e.previewCampaignId=v.queueCampaign.id,n.localStorage.setItem("motion2.user:"+v.user.id,JSON.stringify(e))}}).then(function(){return o.cmContact.update({id:v.contact.id,dialTimezone:v.contact.dialTimezone})}).then(function(){s.success({title:c.instant("DASHBOARDS.INFO"),msg:c.instant("DASHBOARDS.CALL_DISPOSED")+" "+(v.recallme?c.instant("DASHBOARDS.RECALLME"):c.instant("DASHBOARDS.RESCHEDULE"))})}).catch(function(e){h.error(e),E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")}).finally(function(){v.disable=!1,E(v.selectedDisposition?v.selectedDisposition.name.toUpperCase():"")})}}e.$inject=["$window","$mdDialog","$q","toasty","api","dispositions","globalDispositions","call","contact","Auth","$translate","availableCalls","autoClose","$scope","ClientSideLoggingService"],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;function o(){var e=angular.element(".agent-general-home-navbar button.current")[0];e&&e.scrollIntoView({behavior:"smooth",block:"center",inline:"nearest"})}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)},angular.element(a).on("resize",o),n.$on("$destroy",function(){angular.element(a).off("resize",o)}),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(){var e={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},n={ChatWebsiteId:_.map(c.chatAccounts.rows,"id"),createdAt:e};c.query=_.merge(c.query,n)}function u(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(c.chatAccounts.rows,function(e){return{model:"chatWebsite",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function p(e){!c.reloadingInteractions&&0<c.setting.chatInteractionsReloadTimeout&&y(!0),c.searchInProgress=!1,c.reloadingInteractions=!1,c.chatInteractions=e||{count:0,rows:[]};for(var n=0;n<c.chatInteractions.rows.length;n+=1)v(c.chatInteractions.rows[n])}function g(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,p).$promise}function v(e){"Unknown"===e.contactName&&(e.contactName=o.instant("DASHBOARDS.UNKNOWN"))}function h(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 f(e){var n=_.find(c.chatInteractions.rows,{id:e.ChatInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function b(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&&g(c.query.page)}}function A(e){if(e){var n=_.find(c.chatInteractions.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(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 y(e){e&&c.interactionsInterval&&n.cancel(c.interactionsInterval),c.interactionsInterval=n(function(){c.reloadingInteractions=!0,c.searchInProgress||g()},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.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"}],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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]}}).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);var n=_.map(c.chatAccounts.rows,function(e){return e.id});_.isEqual(n,e.query.ChatWebsiteId)?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)):m()}catch(e){console.error(e)}else m();l.on("chatInteraction:save",b),l.on("chatInteraction:update",b),l.on("chatInteractionTags:save",A),l.on("chatMessage:save",E),l.on("chatMessage:update",E),l.on("user_has_chat_interactions:save",h),l.on("user_has_chat_interactions:remove",f),g(c.query.page),0<c.setting.chatInteractionsReloadTimeout&&y()})},c.success=p,c.getChatInteractions=g,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=v,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,g())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.on("userChatWebsite:save",function(e){var n=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(n){var t=(n=JSON.parse(n)).query.ChatWebsiteId.indexOf(e.ChatWebsiteId);t<0&&(n.query.ChatWebsiteId.push(e.ChatWebsiteId),c.query.ChatWebsiteId=n.query.ChatWebsiteId)}}),l.on("userChatWebsite:remove",function(e){var n=a.localStorage.getItem("motion2.home.chat:"+c.user.id);if(n){var t=(n=JSON.parse(n)).query.ChatWebsiteId.indexOf(e.ChatWebsiteId);-1<t&&(n.query.ChatWebsiteId.splice(t,1),c.query.ChatWebsiteId=n.query.ChatWebsiteId)}}),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(){var e={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},n={FaxAccountId:_.map(m.faxAccounts.rows,"id"),createdAt:e};m.query=_.merge(m.query,n)}function p(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.faxAccounts.rows,function(e){return{model:"faxAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function g(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||v()},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)h(m.faxInteractions.rows[n])}function v(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,g).$promise}function h(e){e.contactInfo=e.Contact?e.Contact.fax:void 0,"Unknown"===e.contactName&&(e.contactName=n.instant("DASHBOARDS.UNKNOWN"))}function f(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 b(e){var n=_.find(m.faxInteractions.rows,{id:e.FaxInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function A(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 v(m.query.page)}}function E(e){if(e){var n=_.find(m.faxInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function y(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.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"}],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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:p("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:p("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:p("third")}}]}}).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);var n=_.map(m.faxAccounts.rows,function(e){return e.id});_.isEqual(n,e.query.FaxAccountId)?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)):u()}catch(e){console.error(e)}else u();l.on("faxInteraction:save",A),l.on("faxInteraction:update",A),l.on("faxInteractionTags:save",E),l.on("faxMessage:save",y),l.on("faxMessage:update",y),l.on("user_has_fax_interactions:save",f),l.on("user_has_fax_interactions:remove",b),v(m.query.page)})},m.success=g,m.getFaxInteractions=v,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=h,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,v())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.on("userFaxAccount:save",function(e){var n=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(n){var t=(n=JSON.parse(n)).query.FaxAccountId.indexOf(e.FaxAccountId);t<0&&(n.query.FaxAccountId.push(e.FaxAccountId),m.query.FaxAccountId=n.query.FaxAccountId)}}),l.on("userFaxAccount:remove",function(e){var n=a.localStorage.getItem("motion2.home.fax:"+m.user.id);if(n){var t=(n=JSON.parse(n)).query.FaxAccountId.indexOf(e.FaxAccountId);-1<t&&(n.query.FaxAccountId.splice(t,1),m.query.FaxAccountId=n.query.FaxAccountId)}}),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,m,t,d,e,a,c,u){var p=this;function i(){var e={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},n={MailAccountId:_.map(p.mailAccounts.rows,"id"),createdAt:e};p.query=_.merge(p.query,n)}function s(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(p.mailAccounts.rows,function(e){return{model:"mailAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function g(e){!p.reloadingInteractions&&0<p.setting.mailInteractionsReloadTimeout&&T(!0),p.searchInProgress=!1,p.reloadingInteractions=!1,p.mailInteractions=e||{count:0,rows:[]};for(var n=0;n<p.mailInteractions.rows.length;n+=1)f(p.mailInteractions.rows[n])}function v(e,n){p.searchInProgress=!0,e||(p.query.page=1),(void 0===p.query.closed||null===p.query.closed||p.query.closed)&&delete p.query.substatus,p.query.offset=(p.query.page-1)*p.query.limit;var t=m.localStorage.getItem("motion2.home.mail:"+p.user.id);(t=t?JSON.parse(t):{}).query=p.query,m.localStorage.setItem("motion2.home.mail:"+p.user.id,JSON.stringify(t)),p.promise=d.mailInteraction.get(p.query,g).$promise}function h(e,n){o.$parent.vm.addInteractionTab("mail",n)}function f(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 b(e){var n=_.find(p.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&(_.find(n.Users,{id:e.UserId})||n.Users.push({id:e.UserId}))}function A(e){var n=_.find(p.mailInteractions.rows,{id:e.MailInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function E(e){if(e){var n=_.find(p.mailInteractions.rows,{id:e.id});if(n){if(n.Users=[],e.closed&&(n.unreadMessages=0),p.query.sort){var t=_.startsWith(p.query.sort,"-")?"desc":"asc";p.mailInteractions.rows=_.orderBy(p.mailInteractions.rows,_.trimStart(p.query.sort,"-"),t)}_.merge(n,_.pick(e,_.keys(n)))}else 0===p.setting.mailInteractionsReloadTimeout&&v(p.query.page)}}function y(e){if(e){var n=_.find(p.mailInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function S(e){if(e&&!e.secret){var n=_.find(p.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 T(e){e&&p.interactionsInterval&&n.cancel(p.interactionsInterval),p.interactionsInterval=n(function(){p.reloadingInteractions=!0,p.searchInProgress||v()},1e3*p.setting.mailInteractionsReloadTimeout)}p.user=e.getCurrentUser(),p.license={},p.setting={},p.tags={count:0,rows:[]},p.mailInteractions={count:0,rows:[]},p.query={includeAll:!0,sort:"-updatedAt",limit:10,page:1,read:null,closed:null},p.sectionColor="teal",p.onInit=function(e,n){return p.license=e,p.setting=n,d.user["get"+_.upperFirst("mailAccounts")]({id:p.user.id,nolimit:!0}).$promise.then(function(e){return p.mailAccounts=e||{count:0,rows:[]},d.tag.get({sort:"name"}).$promise}).then(function(e){p.tags=e||{count:0,rows:[]}}).then(function(){return d.mailSubstatus.get({nolimit:!0}).$promise}).then(function(e){p.subStatuses=e||{count:0,rows:[]}}).then(function(){p.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:p.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:p.mailAccounts.rows,clearAll:!1},{name:"Agent",key:"UserId",type:"select",label:"DASHBOARDS.SELECT_AGENT",customOptions:[{value:p.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:p.tags.rows,placeholder:"DASHBOARDS.TAGS"}],p.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:p.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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:s("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:s("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:s("third")}}]}}).catch(function(e){console.error(e)}).finally(function(){var e=m.localStorage.getItem("motion2.home.mail:"+p.user.id);if(e)try{e=JSON.parse(e);var n=_.map(p.mailAccounts.rows,function(e){return e.id});_.isEqual(n,e.query.MailAccountId)?e.query&&(p.query=_.merge(p.query,e.query),_.isEmpty(p.mailAccounts.rows)?p.query.MailAccountId=[]:_.isEmpty(p.query.MailAccountId)&&(p.query.MailAccountId=_(p.mailAccounts.rows).map("id").take().value()),p.query.sort&&0<=p.query.sort.indexOf("lastMessage")&&(p.query=_.omit(p.query,"sort")),p.query.includeAll=!0,p.isSearchBarVisible=!(p.query.search||!p.query.filter)):i()}catch(e){console.error(e)}else i();a.on("mailInteraction:save",E),a.on("mailInteraction:update",E),a.on("mailInteractionTags:save",y),a.on("mailMessage:save",S),a.on("mailMessage:update",S),a.on("user_has_mail_interactions:save",b),a.on("user_has_mail_interactions:remove",A),v(p.query.page),0<p.setting.mailInteractionsReloadTimeout&&T()})},p.success=g,p.getMailInteractions=v,p.showMailInteraction=h,p.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()})})},p.disposeInteraction=function(e,t){var a=p.user.voicePause||p.user.chatPause||p.user.mailPause||p.user.openchannelPause||p.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){p.user&&t.Account.mandatoryDisposition&&!a&&d.user.unpause({id:p.user.id}).$promise.catch(function(e){console.error(e)})},locals:{user:p.user,channel:"mail",interaction:t}})},p.getContactLabel=f,p.getAgentLabel=function(e){if(e.UserId)return e.UserId===p.user.id?t.instant("DASHBOARDS.ME"):e.Owner.fullname+" <"+e.Owner.internal+">";return t.instant("DASHBOARDS.NOT_ASSIGNED")},p.getMailAccountLabel=function(e){if(e.Account)return e.Account.key;return t.instant("DASHBOARDS.UNKNOWN")},p.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=p.user.voicePause||p.user.chatPause||p.user.mailPause||p.user.openchannelPause||p.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){p.user&&s.mandatoryDisposition&&!a&&d.user.unpause({id:p.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:p.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};u.add(n)}})},p.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:p.sectionColor,fields:p.advancedSearch.fields,storagePath:"home.mail"},fullscreen:!0}).then(function(e){p.isSearchBarVisible=!(e.value||!p.query.filter),e.apply&&(p.query.search=e.value,v())}).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,h(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(u.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=p.user.voicePause||p.user.chatPause||p.user.mailPause||p.user.openchannelPause||p.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){p.user&&s.account.mandatoryDisposition&&!a&&d.user.unpause({id:p.user.id}).$promise.catch(function(e){console.error(e)})},clickOutsideToClose:t,escapeToClose:t,locals:{user:p.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};u.update(n)}})}),a.on("userMailAccount:save",function(e){var n=m.localStorage.getItem("motion2.home.mail:"+p.user.id);if(n){var t=(n=JSON.parse(n)).query.MailAccountId.indexOf(e.MailAccountId);t<0&&(n.query.MailAccountId.push(e.MailAccountId),p.query.MailAccountId=n.query.MailAccountId)}}),a.on("userMailAccount:remove",function(e){var n=m.localStorage.getItem("motion2.home.mail:"+p.user.id);if(n){var t=(n=JSON.parse(n)).query.MailAccountId.indexOf(e.MailAccountId);-1<t&&(n.query.MailAccountId.splice(t,1),p.query.MailAccountId=n.query.MailAccountId)}}),p.resetTooltipPosition=function(e){var n=angular.element(e.currentTarget).children()[1],t=angular.element(n);t.css("top",""),t.css("left",""),t.css("bottom","")},p.adjustTooltipPosition=function(e){var n=angular.element(e.currentTarget).children(),t=n[0],a=n[1],i=angular.element(t),s=angular.element(a),o=m.innerHeight,r=i.offset(),l=r.top,d=r.left,c=o<216+l;s.css("left",d),c?(s.css("top",""),s.css("bottom",o-l)):(s.css("bottom",""),s.css("top",l))},o.$on("$destroy",function(){a.removeAllListeners("mailMessage:save"),a.removeAllListeners("mailMessage:update"),a.removeAllListeners("mailInteraction:save"),a.removeAllListeners("mailInteractionTags:save"),a.removeAllListeners("mailInteraction:update"),a.removeAllListeners("user_has_mail_interactions:save"),a.removeAllListeners("user_has_mail_interactions:remove"),p.interactionsInterval&&n.cancel(p.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(){var e={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},n={OpenchannelAccountId:_.map(m.openchannelAccounts.rows,"id"),createdAt:e};m.query=_.merge(m.query,n)}function p(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.openchannelAccounts.rows,function(e){return{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function g(e){!m.reloadingInteractions&&0<m.setting.openchannelInteractionsReloadTimeout&&S(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.openchannelInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelInteractions.rows.length;n+=1)h(m.openchannelInteractions.rows[n])}function v(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,g).$promise}function h(e){"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function f(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 b(e){var n=_.find(m.openchannelInteractions.rows,{id:e.OpenchannelInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function A(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&&v(m.query.page)}}function E(e){if(e){var n=_.find(m.openchannelInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function y(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 S(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||v()},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.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"}],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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:p("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:p("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:p("third")}}]}}).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);var n=_.map(m.openchannelAccounts.rows,function(e){return e.id});_.isEqual(n,e.query.openchannel)?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)):u()}catch(e){console.error(e)}else u();l.on("openchannelInteraction:save",A),l.on("openchannelInteraction:update",A),l.on("openchannelInteractionTags:save",E),l.on("openchannelMessage:save",y),l.on("openchannelMessage:update",y),l.on("user_has_openchannel_interactions:save",f),l.on("user_has_openchannel_interactions:remove",b),v(m.query.page),0<m.setting.openchannelInteractionsReloadTimeout&&S()})},m.success=g,m.getOpenchannelInteractions=v,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=h,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,v())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.on("useropenchannelAccount:save",function(e){var n=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(n){var t=(n=JSON.parse(n)).query.OpenchannelAccountId.indexOf(e.OpenchannelAccountId);t<0&&(n.query.OpenchannelAccountId.push(e.OpenchannelAccountId),m.query.OpenchannelAccountId=n.query.OpenchannelAccountId)}}),l.on("useropenchannelAccount:remove",function(e){var n=a.localStorage.getItem("motion2.home.openchannel:"+m.user.id);if(n){var t=(n=JSON.parse(n)).query.OpenchannelAccountId.indexOf(e.OpenchannelAccountId);-1<t&&(n.query.OpenchannelAccountId.splice(t,1),m.query.OpenchannelAccountId=n.query.OpenchannelAccountId)}}),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,dialTimezone",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,l.query.fields="id,phone,scheduledat,recallme,priority,UserId,OwnerId,dialTimezone";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(){var e={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},n={SmsAccountId:_.map(m.smsAccounts.rows,"id"),createdAt:e};m.query=_.merge(m.query,n)}function p(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.smsAccounts.rows,function(e){return{model:"smsAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function g(e){!m.reloadingInteractions&&0<m.setting.smsInteractionsReloadTimeout&&S(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.smsInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsInteractions.rows.length;n+=1)h(m.smsInteractions.rows[n])}function v(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,g).$promise}function h(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function f(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 b(e){var n=_.find(m.smsInteractions.rows,{id:e.SmsInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function A(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&&v(m.query.page)}}function E(e){if(e){var n=_.find(m.smsInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function y(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 S(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||v()},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.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"}],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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:p("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:p("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:p("third")}}]}}).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);var n=_.map(m.smsAccounts.rows,function(e){return e.id});_.isEqual(n,e.query.SmsAccountId)?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)):u()}catch(e){console.error(e)}else u();l.on("smsInteraction:save",A),l.on("smsInteraction:update",A),l.on("smsInteractionTags:save",E),l.on("smsMessage:save",y),l.on("smsMessage:update",y),l.on("user_has_sms_interactions:save",f),l.on("user_has_sms_interactions:remove",b),v(m.query.page),0<m.setting.smsInteractionsReloadTimeout&&S()})},m.success=g,m.getSmsInteractions=v,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=h,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,v())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.on("userSmsAccount:save",function(e){var n=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(n){var t=(n=JSON.parse(n)).query.SmsAccountId.indexOf(e.SmsAccountId);t<0&&(n.query.SmsAccountId.push(e.SmsAccountId),m.query.SmsAccountId=n.query.SmsAccountId)}}),l.on("userSmsAccount:remove",function(e){var n=a.localStorage.getItem("motion2.home.sms:"+m.user.id);if(n){var t=(n=JSON.parse(n)).query.SmsAccountId.indexOf(e.SmsAccountId);-1<t&&(n.query.SmsAccountId.splice(t,1),m.query.SmsAccountId=n.query.SmsAccountId)}}),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(){var e={$gte:moment().startOf("month").utcOffset(0,!0).format(),$lte:moment().endOf("month").utcOffset(0,!0).format()},n={WhatsappAccountId:_.map(m.whatsappAccounts.rows,"id"),createdAt:e};m.query=_.merge(m.query,n)}function p(n){var e=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:n,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=_.map(m.whatsappAccounts.rows,function(e){return{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:e.id,field:"name,level",level:n,nolimit:!0}}});return _.concat(t,e)}function g(e){!m.reloadingInteractions&&0<m.setting.whatsappInteractionsReloadTimeout&&S(!0),m.searchInProgress=!1,m.reloadingInteractions=!1,m.whatsappInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappInteractions.rows.length;n+=1)h(m.whatsappInteractions.rows[n])}function v(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,g).$promise}function h(e){e.contactInfo=e.Contact?e.Contact.mobile:void 0,"Unknown"===e.contactName&&(e.contactName=t.instant("DASHBOARDS.UNKNOWN"))}function f(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 b(e){var n=_.find(m.whatsappInteractions.rows,{id:e.WhatsappInteractionId});n&&n.Users&&_.remove(n.Users,{id:e.UserId})}function A(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&&v(m.query.page)}}function E(e){if(e){var n=_.find(m.whatsappInteractions.rows,{id:e.id});n&&(n.Tags=e.tags||[],_.merge(n,_.pick(e,_.keys(n))))}}function y(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 S(e){e&&m.interactionsInterval&&n.cancel(m.interactionsInterval),m.interactionsInterval=n(function(){m.reloadingInteractions=!0,m.searchInProgress||v()},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.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"}],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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:p("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:p("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:p("third")}}]}}).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);var n=_.map(m.whatsappAccounts.rows,function(e){return e.id});_.isEqual(n,e.query.WhatsappAccountId)?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)):u()}catch(e){console.error(e)}else u();l.on("whatsappInteraction:save",A),l.on("whatsappInteraction:update",A),l.on("whatsappInteractionTags:save",E),l.on("whatsappMessage:save",y),l.on("whatsappMessage:update",y),l.on("user_has_whatsapp_interactions:save",f),l.on("user_has_whatsapp_interactions:remove",b),v(m.query.page),0<m.setting.whatsappInteractionsReloadTimeout&&S()})},m.success=g,m.getWhatsappInteractions=v,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=h,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,v())}).catch(function(e){d.error({title:"ERROR",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.on("userWhatsappAccount:save",function(e){var n=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(n){var t=(n=JSON.parse(n)).query.WhatsappAccountId.indexOf(e.WhatsappAccountId);t<0&&(n.query.WhatsappAccountId.push(e.WhatsappAccountId),m.query.WhatsappAccountId=n.query.WhatsappAccountId)}}),l.on("userWhatsappAccount:remove",function(e){var n=a.localStorage.getItem("motion2.home.whatsapp:"+m.user.id);if(n){var t=(n=JSON.parse(n)).query.WhatsappAccountId.indexOf(e.WhatsappAccountId);-1<t&&(n.query.WhatsappAccountId.splice(t,1),m.query.WhatsappAccountId=n.query.WhatsappAccountId)}}),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.trim()))},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.isDraft?g.message.body+T(g.message.type):g.message.body,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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"faxAccount",action:"getDispositions",field:"name",params:{id:m.faxAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.faxAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.faxAccountInteractions.rows.length;n+=1){var t=m.faxAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.faxInteraction.get(m.query,p).$promise}function v(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||g(),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 h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.fax):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getFaxAccountInteractions=g,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,g()}}).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=v,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){v(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,g){var v=this;function h(e){a.hide(e)}v.currentUser=m.getCurrentUser(),v.errors=[],v.setting=p,v.license=u,v.crudPermissions=g,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="INTEGRATIONS.EDIT_DYNAMICS365ACCOUNT",v.dynamics365Account=angular.copy(l),v.dynamics365Accounts=r,v.cloudProviders=d,v.newDynamics365Account=!1,v.dynamics365Account||(v.dynamics365Account={serverUrl:t.protocol()+"://"+t.host()+(t.port()?":"+t.port():""),modernAuthentication:!1},v.title="INTEGRATIONS.NEW_DYNAMICS365ACCOUNT",v.newDynamics365Account=!0),v.addNewDynamics365Account=function(){v.errors=[],c.intDynamics365Account.save(v.dynamics365Account).$promise.then(function(e){v.dynamics365Accounts.unshift(e.toJSON()),o.success({title:"Dynamics365Account properly created",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.saveDynamics365Account=function(){v.errors=[],c.intDynamics365Account.update({id:v.dynamics365Account.id},v.dynamics365Account).$promise.then(function(e){var n=_.find(v.dynamics365Accounts,{id:e.id});n&&_.merge(n,e.toJSON()),o.success({title:"Dynamics365Account properly saved!",msg:v.dynamics365Account.name?v.dynamics365Account.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.deleteDynamics365Account=function(e){v.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(){c.intDynamics365Account.delete({id:v.dynamics365Account.id}).$promise.then(function(){_.remove(v.dynamics365Accounts,{id:v.dynamics365Account.id}),o.success({title:"Dynamics365Account properly deleted!",msg:(v.dynamics365Account.name||"dynamics365Account")+" has been deleted!"}),h(v.dynamics365Account)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","dynamics365Accounts","dynamics365Account","cloudProviders","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,f){var b=this;b.license=h,b.setting=f,b.currentUser=v.getCurrentUser(),b.dynamics365Accounts=l||{count:0,rows:[]},b.cloudProviders=d||{count:0,rows:[]},b.userProfile=c,b.userProfileSection=m&&1==m.count?m.rows[0]:null,b.crudPermissions=v.parseCrudPermissions(b.userProfileSection?b.userProfileSection.crudPermissions:null),b.table="dynamics365Accounts",b.listOrder="",b.listOrderAsc=null,b.selectedDynamics365Accounts=[],b.query={fields:"createdAt,updatedAt,id,name,username,password,remoteUri,tenantId,clientId,clientSecret,serverUrl,description,modernAuthentication",sort:"-updatedAt",limit:10,page:1},b.editstate=function(e,n){t.go("app.integrations.dynamics365Accounts.edit",{id:e.id,dynamics365Account:e,crudPermissions:b.crudPermissions})},b.testtestintegrationaccount=function(e,n){return u.intDynamics365Account.getFields({id:e.id,test:!0}).$promise.then(function(){g.success({title:"Dynamics365Account properly tested",msg:"Connection succeded!"})}).catch(function(e){g.error({title:"Dynamics365Account properly tested",msg:e.data?e.data.message?e.data.message:JSON.stringify(e.data):e.toString()})})},b.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(){S(e)},function(){console.log("CANCEL")})},b.success=y,b.getDynamics365Accounts=function(){b.query.offset=(b.query.page-1)*b.query.limit,v.hasRole("admin")?b.promise=u.intDynamics365Account.get(b.query,y).$promise:(b.query.id=b.userProfile.id,b.query.section="Dynamics365Accounts",b.promise=u.userProfile.getResources(b.query,y).$promise)},b.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:b.dynamics365Accounts.rows,cloudProviders:b.cloudProviders.rows,license:b.license,setting:b.setting,crudPermissions:b.crudPermissions}})},b.deleteDynamics365Account=S,b.exportSelectedDynamics365Accounts=function(){var e=angular.copy(b.selectedDynamics365Accounts);return b.selectedDynamics365Accounts=[],e},b.deleteSelectedDynamics365Accounts=function(e){var n=i.confirm().title("Are you sure want to delete the selected dynamics365Accounts?").htmlContent("<b>"+b.selectedDynamics365Accounts.length+" selected</b> will be deleted.").ariaLabel("delete Dynamics365Accounts").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){b.selectedDynamics365Accounts.forEach(function(e){S(e)}),b.selectedDynamics365Accounts=[]})},b.deselectDynamics365Accounts=function(){b.selectedDynamics365Accounts=[]},b.selectAllDynamics365Accounts=function(){b.selectedDynamics365Accounts=b.dynamics365Accounts.rows};var A=!0,E=1;function y(e){b.dynamics365Accounts=e||{count:0,rows:[]}}function S(e){u.intDynamics365Account.delete({id:e.id}).$promise.then(function(){_.remove(b.dynamics365Accounts.rows,{id:e.id}),b.dynamics365Accounts.count-=1,b.dynamics365Accounts.rows.length||b.getDynamics365Accounts(),g.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){b.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEintDynamics365Account"}];for(var n=0;n<e.data.errors.length;n++)g.error({title:e.data.errors[n].type,msg:e.data.errors[n].message})}else g.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){A?o(function(){A=!1}):(n||(E=b.query.page),e!==n&&(b.query.page=1),e||(b.query.page=E),b.getDynamics365Accounts())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","dynamics365Accounts","cloudProviders","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.advancedForm&&o.advancedForm.$setPristine();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.saveDynamics365Configuration=function(){o.errors=[],i.intDynamics365Configuration.update({id:o.dynamics365Configuration.id},o.dynamics365Configuration).$promise.then(function(e){var n=_.find(o.configurations,{id:e.id});n&&_.merge(n,e.toJSON()),o.advancedForm.$setPristine(),s.success({title:"Dynamics365Configuration properly saved!",msg:o.dynamics365Configuration.name?o.dynamics365Configuration.name+" has been saved!":""})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){o.errors=e.data.errors||[{message:e.toString(),type:"api.intDynamics365Configuration.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.intDynamics365Configuration.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},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,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.dynamics365Account=c||e.params.dynamics365Account||{},p.cloudProviders=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.gotoDynamics365Accounts=function(){e.go("app.integrations.dynamics365Accounts",{},{reload:"app.integrations.dynamics365Accounts"})},p.saveDynamics365Account=function(){r.intDynamics365Account.update({id:p.dynamics365Account.id},p.dynamics365Account).$promise.then(function(){l.success({title:"Dynamics365Account updated!",msg:p.dynamics365Account.name?p.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","cloudProviders","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,t,a,i,n,s,o,r,l,d,c,m,u){var p,g=this;function v(e){t.hide(e)}g.currentUser=l.getCurrentUser(),g.errors=[],g.setting=c,g.license=d,g.crudPermissions=m,g.hasModulePermissions={},g.passwordPattern=g.setting&&g.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",g.mailAccount=angular.copy(s),g.mailAccounts=n,g.cloudProviders=o,g.providers=u.getEmailProviders(),g.newMailAccount=!1,g.mailAccount||(g.mailAccount={active:!0,service:"null",authentication:!0,fontSize:13,waitForTheAssignedAgent:10,notificationSound:!0,queueTransferTimeout:300,agentTransferTimeout:300},g.newMailAccount=!0),e.params.id&&(g.mailAccount.MailAccountId=e.params.id),g.addNewMailAccount=function(){g.errors=[],r.mailAccount.save(g.mailAccount).$promise.then(function(e){g.mailAccounts.unshift(e.toJSON()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_CREATED_SUCCESS_TITLE")}),v(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)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.mailAccount.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveMailAccount=function(){g.errors=[],r.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()),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")}),v(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++)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.mailAccount.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteMailAccount=function(e){if(g.mailAccount.service)return i.error({title:"Mail Account not deleted!",msg:"You can't remove service account"});g.errors=[];var n=t.confirm().title(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:g.mailAccount.name})).ariaLabel("Delete Mail Account").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){r.mailAccount.delete({id:g.mailAccount.id}).$promise.then(function(){_.remove(g.mailAccounts,{id:g.mailAccount.id}),i.success({title:a.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETED_SUCCESS_TITLE")}),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++)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.mailAccount.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},g.onProviderChange=function(){"custom"!==g.mailAccount.provider&&(g.mailAccount.authentication=!0);"outlook365"!==g.mailAccount.provider&&(g.mailAccount.modernAuthentication=!1)},g.closeDialog=v,p=[{key:"id",value:Number(g.mailAccount.ListId)}],r.getResourcesByRole(g.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},p).then(function(e){g.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()})})}e.$inject=["$state","$mdDialog","$translate","toasty","mailAccounts","mailAccount","cloudProviders","api","Auth","license","setting","crudPermissions","msUtils"],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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"mailAccount",action:"getDispositions",field:"name",params:{id:m.mailAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.mailAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.mailAccountInteractions.rows.length;n+=1){var t=m.mailAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){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,p).$promise}function v(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||g(),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 h(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 f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getMailAccountInteractions=g,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,g()}}).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=v,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){v(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,a,i,s,e,n,o,r,l,d,c,m,u,p,g){var v,h,f=this;f.currentUser=d.getCurrentUser(),f.license=n,f.setting=o,f.passwordPattern=f.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",f.mailAccount=c||t.params.mailAccount||{},f.cloudProviders=m||{rows:[],count:0},f.userProfile=u,f.userProfileSection=p&&1==p.count?p.rows[0]:null,f.crudPermissions=d.parseCrudPermissions(f.userProfileSection?f.userProfileSection.crudPermissions:null),f.hasModulePermissions={},f.selectedTab=t.params.tab||0,f.providers=g.getEmailProviders(),f.originalProvider=f.mailAccount.provider,f.goToRealtime=function(){return d.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):r.userProfileSection.get({userProfileId:d.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return 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()})})},f.addAgent=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:f.mailAccounts?f.mailAccounts.rows:[],crudPermissions:f.crudPermissions,realtime:!1}})},f.goToMailAccounts=function(){t.go("app.mail.mailAccounts",{},{reload:"app.mail.mailAccounts"})},f.saveMailAccount=function(){var e=angular.copy(f.mailAccount);"custom"===e.provider?e.provider=null:(f.originalProvider!==e.provider&&(e.Imap.modernAuthentication?e.Imap.password=null:e.Imap.CloudProviderId=null),e.Smtp.user=e.Imap.user,e.Smtp.pass=e.Imap.password,e.Imap.modernAuthentication||(e.Imap.CloudProviderId=null),e.Smtp.modernAuthentication=e.Imap.modernAuthentication,e.Smtp.CloudProviderId=e.Imap.CloudProviderId,e.Imap=_.omit(e.Imap,["host","port","service"]),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));r.mailAccount.update({id:f.mailAccount.id},e).$promise.then(function(){f.originalProvider=e.provider,l.success({title:s.instant("MAIL.NOTIFICATIONS.ACCOUNT_SAVED_SUCCESS_TITLE")})}).catch(function(e){l.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},f.onProviderChange=function(){"custom"!==f.mailAccount.provider&&(f.mailAccount.authentication=!0);"outlook365"!==f.mailAccount.provider&&(f.mailAccount.Imap.modernAuthentication=!1)},e.all((h=[{key:"id",value:Number(f.mailAccount.ListId)}],r.getResourcesByRole(f.currentUser,"cmList",{fields:"id,name",sort:"name",nolimit:"true"},h).then(function(e){f.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()})})),(v=[{key:"id",value:Number(f.mailAccount.mandatoryDispositionPauseId)}],r.getResourcesByRole(f.currentUser,"pause",{fields:"id,name",sort:"name",nolimit:"true"},v).then(function(e){f.pauses=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()})})))}e.$inject=["$state","$mdDialog","$document","$translate","$q","license","setting","api","toasty","Auth","mailAccount","cloudProviders","userProfile","userProfileSection","msUtils"],angular.module("app.mail").controller("MailAccountController",e)}(),function(){"use strict";function e(e,t,a,i,s,o,n,r,l,d,c,m,u,p){var g=this;function v(e){g.mailAccounts=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,m.hasRole("admin")?g.promise=d.mailAccount.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="MailAccounts",g.promise=d.userProfile.getResources(g.query,v).$promise)}function f(e){if(e.service)return c.error({msg:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_SERVICE_DELETE")});d.mailAccount.delete({id:e.id}).$promise.then(function(){_.remove(g.mailAccounts.rows,{id:e.id}),g.mailAccounts.count-=1,g.mailAccounts.rows.length||h(),c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNT_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:DELETEmailAccount"}];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:DELETEmailAccount",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}g.license=u,g.setting=p,g.currentUser=m.getCurrentUser(),g.mailAccounts=n||{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.selectedMailAccounts=[],g.query={fields:"createdAt,updatedAt,id,name,provider,key,email,ListId,active,service,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},g.editstate=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,mailAccount:e,crudPermissions:g.crudPermissions})},g.verifySMTP=function(e){return e&&e.id?d.mailAccount.verifySmtp({id:e.id}).$promise.then(function(){c.success({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString()})}):c.error({title:o.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:o.instant("MAIL.NOTIFICATIONS.UNKNOWN_SMTP_SERVER")})},g.goToInteractions=function(e){t.go("app.mail.mailAccounts.edit",{id:e.id,tab:"custom"===e.provider?7:6})},g.goToRealtime=function(){return m.hasRole("admin")?t.go("app.mail.realtime.accounts",{}):d.userProfileSection.get({userProfileId:m.getCurrentUser().userProfileId,sectionId:610}).$promise.then(function(e){var n=e&&e.rows?e.rows[0]:null;if(n&&n.enabled)return t.go("app.mail.realtime.accounts",{});c.info({title:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE"),msg:o.instant("STAFF.PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE")})}).catch(function(e){c.error({title:e.status?"API:"+e.status+" - "+e.statusText:"USERPROFILE:GET_SECTION",msg:e.status?JSON.stringify(e.data):e.toString()})})},g.addAgent=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:g.mailAccounts?g.mailAccounts.rows:[],crudPermissions:g.crudPermissions,realtime:!1}})},g.deleteconfirm=function(e,n){var t=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNT_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete mail account").targetEvent(n).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(t).then(function(){f(e)})},g.success=v,g.getMailAccounts=h,g.createOrEditMailAccount=function(e,n){a.show({controller:"CreateOrEditMailAccountDialogController",controllerAs:"vm",templateUrl:"app/main/apps/mail/views/mailAccounts/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{mailAccount:n,mailAccounts:g.mailAccounts.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions},resolve:{cloudProviders:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,name",sort:"name",type:"outlook365"})}]}})},g.deleteMailAccount=f,g.exportSelectedMailAccounts=function(){var e=angular.copy(g.selectedMailAccounts);return g.selectedMailAccounts=[],e},g.deleteSelectedMailAccounts=function(e){var n=a.confirm().title(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_TITLE")).content(o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETE_MESSAGE",{total:g.selectedMailAccounts.length})).ariaLabel("delete mail accounts").targetEvent(e).ok("OK").cancel(o.instant("TOOLS.CANCEL"));a.show(n).then(function(){g.selectedMailAccounts.forEach(function(e){f(e)}),g.selectedMailAccounts=[],c.success({title:o.instant("MAIL.NOTIFICATIONS.ACCOUNTS_DELETED_SUCCESS_TITLE")})})},g.deselectMailAccounts=function(){g.selectedMailAccounts=[]},g.selectAllMailAccounts=function(){g.selectedMailAccounts=g.mailAccounts.rows};var b=!0,A=1;e.$watch("vm.query.filter",function(e,n){b?s(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","mailAccounts","userProfile","userProfileSection","api","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,g){var v=this;function h(e){a.hide(e)}v.currentUser=c.getCurrentUser(),v.errors=[],v.setting=u,v.license=m,v.crudPermissions=p,v.hasModulePermissions={},v.passwordPattern=v.setting&&v.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",v.title="MOTIONDIALER.EDIT_HOPPER",v.hopper=angular.copy(l),v.hoppers=r,v.newHopper=!1,v.contact,v.dateTime,v.hopper||(v.hopper={},v.title="MOTIONDIALER.NEW_HOPPER",v.newHopper=!0),n.params.id&&("IvrCampaign"===g?v.hopper.CampaignId=n.params.id:"QueueCampaign"==g?v.hopper.VoiceQueueId=n.params.id:v.hopper.ContactId=n.params.id),v.addNewHopper=function(){v.errors=[],d.cmHopper.save(v.hopper).$promise.then(function(e){v.hoppers.unshift(e.toJSON()),o.success({title:"Hopper properly created",msg:v.hopper.name?v.hopper.name+" has been created!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})},v.saveHopper=function(){var t,a,i,s;v.errors=[],v.hopper.UserId=v.hopper.recallme?v.hopper.UserId:null,v.hopper.OwnerId=c.getCurrentUser().id,d.cmHopper.get({id:v.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(){v.hopper.dialTimezone=v.contact.dialTimezone,d.cmHopper.update({id:v.hopper.id},_.omit(v.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}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:v.contact.dialTimezone})})})});var n=_.find(v.hoppers,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"Hopper properly saved!",msg:v.hopper.name?v.hopper.name+" has been saved!":""}),h(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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()})})})},v.deleteHopper=function(e){v.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:v.hopper.id}).$promise.then(function(){_.remove(v.hoppers,{id:v.hopper.id}),o.success({title:"Hopper properly deleted!",msg:(v.hopper.name||"hopper")+" has been deleted!"}),h(v.hopper)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){v.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(){})},v.getDateFromString=function(e){return null===e?void 0:new Date(e)},v.closeDialog=h,v.recalcTZTime=function(){if(_.isNil(v.hopper.VoiceQueueId)){var e=v.hopper.CampaignId;d.campaign.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}else{var e=v.hopper.VoiceQueueId;e&&d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(v.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.hopper.scheduledat=moment(v.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})});else{d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.hopper.scheduledat=moment(v.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}})}},c.hasRole("admin")?d.user.get({fields:"id,name",role:"agent",sort:"name",nolimit:"true"}).$promise.then(function(e){v.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){v.agents=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:v.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(v.agents,{id:e.resourceId})}),t=null;if(v.hopper&&(t=_.find(v.agents,{id:Number(v.hopper.UserId)})),t&&!_.some(n,["id",t.id])){var a=_.find(v.agents,{id:t.id});a.canSelect=!1,n.push(a)}v.agents=n})}else{var t=[],a=null;v.hopper&&(a=_.find(v.agents,{id:Number(v.hopper.UserId)}));for(var i=0;i<v.agents.length;i++)a&&v.agents[i].id===a.id&&(v.agents[i].canSelect=!1,t.push(v.agents[i]));v.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()})}),d.cmContact.get({id:v.hopper.ContactId,fields:"dialTimezone"}).$promise.then(function(e){var n;v.contact=e,_.isNil(v.hopper.VoiceQueueId)?(n=v.hopper.CampaignId)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=v.hopper.VoiceQueueId)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;v.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;v.dateTime=moment(v.hopper.scheduledat).add(n-t,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:v.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),v.dateTime=moment(v.hopper.scheduledat).add(n-0,"minutes").toDate(),v.hopper.scheduledat=moment(v.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})})}e.$inject=["$scope","$state","$location","$mdDialog","$q","$translate","toasty","hoppers","hopper","api","Auth","license","setting","crudPermissions","from"],angular.module("app.motiondialer").controller("HopperdateController",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:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.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,from:"IvrCampaign"}})},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,callAdditionalPhoneAfterMin:3,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:"HopperdateController",controllerAs:"vm",templateUrl:"app/main/apps/motiondialer/views/hopperdate/hopperdate.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,from:"QueueCampaign"}})},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)}function h(){console.log("recalcTZTime hopper",g.hopper);var e=g.hopper.Queue.id;if(e)d.voiceQueue.get({id:e,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;if(g.hopper.dialTimezone=e.dialTimezone,n)d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(t-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})});else{d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),_.isNil(g.dateTime)||(g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss"))})}});else{d.cmHopper.getTimezone({id:g.hopper.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.hopper.scheduledat=moment(g.dateTime).add(0-n,"minutes").format("YYYY-MM-DD HH:mm:ss")})}}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.recalcTZTime=h,e.$watch("vm.contact.dialTimezone",function(){h()}),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,g.hopper.dialTimezone=g.contact.dialTimezone,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}).$promise.then(function(){d.cmContact.update({id:a.ContactId,dialTimezone:g.contact.dialTimezone})})})});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.dateTime,g.contact,d.cmContact.get({id:g.hopper.Contact.id,fields:"dialTimezone"}).$promise.then(function(e){var n;g.contact=e,console.log("initTZTime hopper",g.hopper),_.isNil(g.hopper.Queue.id)?(n=g.hopper.Campaign.id)&&d.campaign.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):(n=g.hopper.Queue.id)&&d.voiceQueue.get({id:n,fields:"dialTimezone"}).$promise.then(function(e){var n=e.dialTimezone;g.hopper.dialTimezone=e.dialTimezone,n?d.cmHopper.getTimezone({id:n}).$promise.then(function(e){var t=e.utcOffset;d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;g.dateTime=moment(g.hopper.scheduledat).add(n-t,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})}):d.cmHopper.getTimezone({id:g.contact.dialTimezone}).$promise.then(function(e){var n=e.utcOffset;_.isNil(n)&&(n=0),g.dateTime=moment(g.hopper.scheduledat).add(n-0,"minutes").toDate(),g.hopper.scheduledat=moment(g.hopper.scheduledat).format("YYYY-MM-DD HH:mm:ss")})})}),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,callAdditionalPhoneAfterMin,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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"openchannelAccount",action:"getDispositions",field:"name",params:{id:m.openchannelAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.openchannelAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.openchannelAccountInteractions.rows.length;n+=1){var t=m.openchannelAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.openchannelInteraction.get(m.query,p).$promise}function v(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||g(),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 h(e){e.from?e.contactName=e.from:e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("OPENCHANNEL.UNKNOWN")}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getOpenchannelAccountInteractions=g,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,g()}}).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=v,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){v(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(){b()}function E(e){_.remove(v.agents.rows,["id",e.UserId])}function y(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,sort:"fullname",globalStatusFilter:"",pauseTypeFilter:"",globalQueueFilter:[],channel:v.channel},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(){y(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()})})},v.clearSelection=function(){v.query.globalQueueFilter=[]},v.selectAll=function(){_.forEach(v.queues.rows,function(e){v.query.globalQueueFilter.push(e.name)})},v.getQueuesByChannel=function(){if(v.queues&&0<v.queues.count)return;var e={type:v.queueType||"inbound",fields:"id,name",sort:"name",nolimit:"true"},n=v.channel+"Queue";return l.getResourcesByRole(v.currentUser,n,e,null).then(function(e){v.queues=e}).catch(function(e){c.error({title:s.instant("VOICE.QUEUES"),msg:e.status?JSON.stringify(e.data):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),(0<v.query.globalQueueFilter.length||!_.isEmpty(v.query.globalStatusFilter))&&b()):e.online&&b()}),d.on("user:update",function(e){var n=_.find(v.agents.rows,["id",e.id]);if(n){if(!1===e.online)return y(n);b()}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"]))}(0<v.query.globalQueueFilter.length||!_.isEmpty(v.query.globalStatusFilter))&&b()}),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);(0<v.query.globalQueueFilter.length||!_.isEmpty(v.query.globalStatusFilter))&&b()}),d.on("userVoiceQueue:save",A),d.on("userVoiceQueue:remove",E),d.on("userChatQueue:save",A),d.on("userChatQueue:remove",E),d.on("userSmsQueue:save",A),d.on("userSmsQueue:remove",E),d.on("userMailQueue:save",A),d.on("userMailQueue:remove",E),d.on("userFaxQueue:save",A),d.on("userFaxQueue:remove",E),d.on("userOpenchannelQueue:save",A),d.on("userOpenchannelQueue:remove",E),d.on("userWhatsappQueue:save",A),d.on("userWhatsappQueue:remove",E),f(),e.$on("$destroy",function(){d.removeAllListeners("user:save"),d.removeAllListeners("user:update"),d.removeAllListeners("user:agentconnect"),d.removeAllListeners("user:agentcomplete"),d.removeAllListeners("userVoiceQueue:save"),d.removeAllListeners("userVoiceQueue:remove"),d.removeAllListeners("userChatQueue:save"),d.removeAllListeners("userChatQueue:remove"),d.removeAllListeners("userSmsQueue:save"),d.removeAllListeners("userSmsQueue:remove"),d.removeAllListeners("userMailQueue:save"),d.removeAllListeners("userMailQueue:remove"),d.removeAllListeners("userFaxQueue:save"),d.removeAllListeners("userFaxQueue:remove"),d.removeAllListeners("userOpenchannelQueue:save"),d.removeAllListeners("userOpenchannelQueue:remove"),d.removeAllListeners("userWhatsappQueue:save"),d.removeAllListeners("userWhatsappQueue:remove"),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,a,t,i,s,o,r,l,d,c,m,u){var p=this;function g(e){p.cloudProviders=e||{count:0,rows:[]}}function v(e){r.cloudProvider.delete({id:e.id}).$promise.then(function(){_.remove(p.cloudProviders.rows,{id:e.id}),p.cloudProviders.count-=1,p.cloudProviders.rows.length||p.getAiTools(),d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")})}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){p.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETEcloudProvider"}];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:DELETEcloudProvider",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})}p.license=m,p.setting=u,p.currentUser=c.getCurrentUser(),p.cloudProviders=o||{count:0,rows:[]},p.selectedAiTools=[],p.query={fields:"createdAt,updatedAt,id,name,service,type,data1,data2,data3,data4,data5,data6",sort:"-updatedAt",limit:10,page:1},p.services={AmazonAWS:"AmazonAWS",MicrosoftAzure:"Microsoft Azure"},p.editdialog=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:n,clickOutsideToClose:!0,locals:{cloudProvider:e,cloudProviders:p.cloudProviders.rows,license:p.license,setting:null,crudPermissions:p.crudPermissions}})},p.deleteconfirm=function(e,n){var t=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:e.name})).ariaLabel("delete cloud provider").targetEvent(n).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(t).then(function(){v(e)})},p.success=g,p.getAiTools=function(){p.query.offset=(p.query.page-1)*p.query.limit,c.hasRole("admin")?p.promise=r.cloudProvider.get(p.query,g).$promise:(p.query.id=p.userProfile.id,p.query.section="AiTools",p.promise=r.userProfile.getResources(p.query,g).$promise)},p.createOrEditCloudProvider=function(e,n){a.show({controller:"CreateOrEditCloudProviderDialogController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/create/dialog.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,locals:{cloudProvider:n,cloudProviders:p.cloudProviders.rows,license:p.license,setting:p.setting,crudPermissions:p.crudPermissions}})},p.deleteCloudProvider=v,p.exportSelectedAiTools=function(){var e=angular.copy(p.selectedAiTools);return p.selectedAiTools=[],e},p.deleteSelectedAiTools=function(e){var n=a.confirm().title(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_TITLE")).content(s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETE_MESSAGE",{total:p.selectedAiTools.length})).ariaLabel("delete CloudProviders").targetEvent(e).ok("OK").cancel(s.instant("TOOLS.CANCEL"));a.show(n).then(function(){p.selectedAiTools.forEach(function(e){v(e)}),p.selectedAiTools=[],d.success({title:s.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDERS_DELETED_SUCCESS_TITLE")})})},p.deselectAiTools=function(){p.selectedAiTools=[]},p.selectAllAiTools=function(){p.selectedAiTools=p.cloudProviders.rows},p.authenticateToMicrosoftIdentityPlatform=function(e){return r.cloudProvider.oauth2MicrosoftAuthorize({id:e.id}).$promise.then(function(e){p.loginWindow=n.open(e.url,"_blank","width=800,height=600")})},p.updateClientSecret=function(n,e){return a.show({controller:"UpdateClientSecretController",controllerAs:"vm",templateUrl:"app/main/apps/settings/views/cloudProviders/updateSecret/updateSecret.html",parent:angular.element(t.body),targetEvent:e,clickOutsideToClose:!0,resolve:{cloudProvider:["apiResolver",function(e){return e.resolve("cloudProvider@get",{fields:"id,service,data3",id:n.id})}]}})},l.on("microsoftAuthorization:success",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.success({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_SUCCESS")}))}),l.on("microsoftAuthorization:error",function(e){p.currentUser.id===e.id&&(p.loginWindow.close(),d.error({msg:s.instant("SETTINGS.NOTIFICATIONS.MICROSOFT_AUTHENTICATION_FAIL")}))}),e.$on("$destroy",function(){l.removeAllListeners("microsoftAuthorization:success"),l.removeAllListeners("microsoftAuthorization:error")});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.getAiTools())})}e.$inject=["$scope","$window","$mdDialog","$document","$timeout","$translate","cloudProviders","api","socket","toasty","Auth","license","setting"],angular.module("app.settings").controller("CloudProvidersController",e)}(),function(){"use strict";function e(t,a,i,e,n,s,o,r){var l=this;function d(e){t.hide(e)}l.currentUser=o.getCurrentUser(),l.license=r,l.cloudProvider=angular.copy(n),l.cloudProviders=e,l.newCloudProvider=!1,l.errors=[],l.cloudProvider||(l.cloudProvider={},l.newCloudProvider=!0),l.addNewCloudProvider=function(){l.errors=[],s.cloudProvider.save(l.cloudProvider).$promise.then(function(e){l.cloudProviders.unshift(e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_CREATED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.saveCloudProvider=function(){l.errors=[],s.cloudProvider.update({id:l.cloudProvider.id},l.cloudProvider).$promise.then(function(e){var n=_.find(l.cloudProviders,{id:e.id});n&&_.merge(n,e.toJSON()),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SAVED_SUCCESS_TITLE")}),d(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},l.deleteCloudProvider=function(e){l.errors=[];var n=t.confirm().title(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_TITLE")).content(a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETE_MESSAGE",{name:l.cloudProvider.name})).ariaLabel("Delete Cloud Provider").ok(a.instant("TOOLS.DELETE")).cancel(a.instant("TOOLS.CANCEL")).targetEvent(e);t.show(n).then(function(){s.cloudProvider.delete({id:l.cloudProvider.id}).$promise.then(function(){_.remove(l.cloudProviders,{id:l.cloudProvider.id}),i.success({title:a.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_DELETED_SUCCESS_TITLE")}),d(l.cloudProvider)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){l.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.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.cloudProvider.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},l.closeDialog=d}e.$inject=["$mdDialog","$translate","toasty","cloudProviders","cloudProvider","api","Auth","license"],angular.module("app.settings").controller("CreateOrEditCloudProviderDialogController",e)}(),function(){"use strict";function e(e,n,t,a,i){var s=this;function o(){e.hide()}s.cloudProvider=i,s.errors=[],s.saveSecret=function(){return s.errors=[],a.cloudProvider.update({id:i.id},{data3:s.newSecret}).$promise.then(function(){t.success({title:n.instant("SETTINGS.NOTIFICATIONS.CLOUD_PROVIDER_SECRET_UPDATE_SUCCESS_TITLE")}),o()}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){s.errors=e.data.errors||[{message:e.toString(),type:"api.cloudProvider.update"}];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.cloudProvider.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},s.closeDialog=o}e.$inject=["$mdDialog","$translate","toasty","api","cloudProvider"],angular.module("app.settings").controller("UpdateClientSecretController",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,e,t,a,i,s,o,r,l){var d=this;d.license=i||{},d.agents=0,d.users=0,d.telephones=0,d.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"}],d.modules=[{name:"cm",icon:"icon-account-circle"},{name:"dialer",icon:"icon-crosshairs"},{name:"jscripty",icon:"icon-console"}],d.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"}],d.sessions=[{name:"callysquare",icon:"icon-sitemap",restart:!0,label:"channels",enabled:"voice"},{name:"virtual",icon:"icon-dots-horizontal",restart:!1,label:"sessions",enabled:"chat"}],d.others=[{name:"update",icon:"icon-cloud-download"}],d.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:d.channels,modules:d.modules,addons:d.addons,sessions:d.sessions,others:d.others}})},d.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}})},d.gotoProcess=function(e){a.go("app.settings.system",{tab:1})},d.alert=s.info,d.downloadLogFile=function(){return o.license.downloadLogFile().$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","license-info.log"),document.body.appendChild(a),a.click(),s.success({title:l.instant("SETTINGS.LICENSE_LOG_FILE"),msg:l.instant("SETTINGS.LICENSE_LOG_FILE_DOWNLOADED")})}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:DOWNLOADJSON",msg:e.data?JSON.stringify(e.data):e.toString()})})},d.isAdmin=r.isAdmin(),o.user.get({fields:"id",role:"agent",online:!0}).$promise.then(function(e){return d.agents=e&&e.count?e.count:0,o.user.get({fields:"id",role:"user,admin"}).$promise}).then(function(e){return d.users=e&&e.count?e.count:0,o.user.get({fields:"id",role:"telephone"}).$promise}).then(function(e){d.telephones=e&&e.count?e.count:0}).catch(function(e){console.log(e)})}e.$inject=["$document","$window","$mdDialog","$state","license","toasty","api","Auth","$translate"],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(n,e,t,a,i,s,o,r){var l=this;l.currentUser=o.getCurrentUser(),l.license=s,l.providers=r.getEmailProviders(),l.mailAccounts=e||{rows:[],count:0},l.cloudProviders=t||{rows:[],count:0},l.mailAccount={service:!0,Smtp:{}},0<l.mailAccounts.count&&(l.mailAccount=l.mailAccounts.rows[0]),l.originalProvider=l.mailAccount.provider,l.saveSmtp=function(){var e=angular.copy(l.mailAccount);"custom"===e.provider?e.provider=null:(l.originalProvider!==e.provider&&(e.Smtp.modernAuthentication?e.Smtp.pass=null:e.Smtp.CloudProviderId=null),e.Smtp.modernAuthentication||(e.Smtp.CloudProviderId=null),e.Smtp=_.omit(e.Smtp,["host","port","secure","service"]));l.mailAccount.id?a.mailAccount.update({id:l.mailAccount.id},e).$promise.then(function(){l.originalProvider=e.provider,i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}):a.mailAccount.save(e).$promise.then(function(e){_.merge(l.mailAccount,e),i.success({msg:n.instant("SETTINGS.NOTIFICATIONS.SMTP_SAVED_SUCCESS_TITLE")})}).catch(function(e){i.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})})},l.verifySmtp=function(){a.mailAccount.verifySmtp({id:l.mailAccount.id}).$promise.then(function(){i.success({msg:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_SUCCESS_TITLE")})}).catch(function(e){i.error({title:n.instant("MAIL.NOTIFICATIONS.SMTP_CONNECTION_FAIL_TITLE"),msg:e.data?JSON.stringify(e.data):e.toString(),timeout:1e4})})},l.onProviderChange=function(){"custom"!==l.mailAccount.provider&&(l.mailAccount.authentication=!0);"outlook365"!==l.mailAccount.provider&&(l.mailAccount.Smtp.modernAuthentication=!1)}}e.$inject=["$translate","mailAccounts","cloudProviders","api","toasty","license","Auth","msUtils"],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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"smsAccount",action:"getDispositions",field:"name",params:{id:m.smsAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.smsAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.smsAccountInteractions.rows.length;n+=1){var t=m.smsAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.smsInteraction.get(m.query,p).$promise}function v(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||g(),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 h(e){e.Contact?(e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""),e.contactInfo=e.Contact.mobile):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getSmsAccountInteractions=g,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,g()}}).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=v,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){v(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,p){var g=this;function v(e){g.agents=e||{count:0,rows:[]}}function h(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,v).$promise:(g.query.id=g.userProfile.id,g.query.section="Agents",g.promise=l.userProfile.getResources(g.query,v).$promise)}function f(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.agents.rows,{id:e.id}),g.agents.count-=1,g.agents.rows.length||g.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){g.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()})})}g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.agents=s||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.selectedAgents=[],g.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,adSsoEnabled,chatAutoanswer,chatAutoanswerDelay",role:"agent",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.showWebBarOptions=[{option:"Phonebar",value:0},{option:"External",value:1},{option:"WebRTC",value:2}],g.editstate=function(e){n.go("app.staff.agents.edit",{id:e.id,agent:e,crudPermissions:g.crudPermissions})},g.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:g.agents?g.agents.rows:[],crudPermissions:g.crudPermissions}})},g.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(){f(e)})},g.success=v,g.getAgents=h,g.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:g.agents.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteAgent=f,g.exportSelectedAgents=function(){var e=angular.copy(g.selectedAgents);return g.selectedAgents=[],e},g.deleteSelectedAgents=function(e){var n=a.confirm().title("Are you sure want to delete the selected agents?").htmlContent("<b>"+g.selectedAgents.length+" selected</b> will be deleted.").ariaLabel("delete Agents").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedAgents.forEach(function(e){f(e)}),g.selectedAgents=[]})},g.deselectAgents=function(){g.selectedAgents=[]},g.selectAllAgents=function(){g.selectedAgents=g.agents.rows};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),g.getAgents())}),p.on("user-setting:update",h),e.$on("$destroy",function(){p.removeListener("user-setting:update",h)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","agents","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],angular.module("app.staff").controller("AgentsController",e)}(),function(){"use strict";function e(e,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_AGENT",m.agent=angular.copy(i),m.agents=n,m.newAgent=!1,m.agent||(m.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},m.title="STAFF.NEW_AGENT",m.newAgent=!0),m.addNewAgent=function(){m.errors=[],s.user.save(m.agent).$promise.then(function(e){m.agents.unshift(e.toJSON()),a.success({title:"Agent properly created",msg:m.agent.name?m.agent.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];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.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveAgent=function(){m.errors=[],s.user.update({id:m.agent.id},m.agent).$promise.then(function(e){var n=_.find(m.agents,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"Agent properly saved!",msg:m.agent.name?m.agent.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.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.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteAgent=function(e){m.errors=[];var n=t.confirm().title("Are you sure?").content("The agent will be deleted.").ariaLabel("Delete Agent").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.agent.id}).$promise.then(function(){_.remove(m.agents,{id:m.agent.id}),a.success({title:"Agent properly deleted!",msg:(m.agent.name||"agent")+" has been deleted!"}),p(m.agent)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];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.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p;var g="user-setting:update:user-"+m.agent.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","agents","agent","api","Auth","license","setting","crudPermissions","socket"],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){var m=this;m.currentUser=l.getCurrentUser(),m.license=t,m.setting=a,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.agent=d||e.params.agent||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.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:m.agents?m.agents.rows:[],channel:n,direction:a||"inbound",crudPermissions:m.crudPermissions}})},m.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:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.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:a,agents:m.agents?m.agents.rows:[],crudPermissions:m.crudPermissions}})},m.onEnableScreenRecordingByAgentSelection=function(){["phoneBarEnableAutomaticScreenRecording"].forEach(function(e){m.agent.phoneBarEnableScreenRecordingByAgent&&(m.agent[e]=!m.agent.phoneBarEnableScreenRecordingByAgent)})},m.onEnableAutomaticScreenRecordingSelection=function(){["phoneBarEnableScreenRecordingByAgent"].forEach(function(e){m.agent.phoneBarEnableAutomaticScreenRecording&&(m.agent[e]=!m.agent.phoneBarEnableAutomaticScreenRecording)})},m.alert=r.info,m.gotoAgents=function(){e.go("app.staff.agents",{},{reload:"app.staff.agents"})},m.saveAgent=function(){m.agent=_.omit(m.agent,"userpic"),o.user.update({id:m.agent.id},m.agent).$promise.then(function(){r.success({title:"Agent updated!",msg:m.agent.name?m.agent.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshAgent=function(){return o.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.agent=e})},l.hasRole("admin")?o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}):o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).then(function(){return o.userProfileSection.get({userProfileId:m.currentUser.userProfileId,sectionId:405}).$promise}).then(function(e){var n=e&&e.rows?e.rows[0]:null;return n?n.autoAssociation?void 0:o.userProfileResource.get({sectionId:n.id}).$promise.then(function(e){var n=_.map(e.rows,function(e){return _.find(m.contexts,{id:e.resourceId})}),t=null;if(m.agent&&(t=_.find(m.contexts,{name:m.agent.context})),t&&!_.some(n,["id",t.id])){var a=_.find(m.contexts,{id:t.id});a.canSelect=!1,n.push(a)}m.contexts=n}):o.voiceContext.get({fields:"id,name",sort:"name",defaultEntry:1}).$promise.then(function(e){m.contexts=e.rows||[]})}).catch(function(e){r.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","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,t,a,n,i,s,o,r,l,d,c){var m=this;function u(){return s.user.get({id:m.agent.id,userSetting:!0}).$promise.then(function(e){m.user=e})}function p(e){t.hide(e)}m.currentUser=o.getCurrentUser(),m.errors=[],m.setting=l,m.license=r,m.crudPermissions=d,m.hasModulePermissions={},m.passwordPattern=m.setting&&m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.title="STAFF.EDIT_USER",m.user=angular.copy(i),m.users=n,m.newUser=!1,m.user||(m.user={role:"user",autointernal:!0,context:"from-sip"},m.title="STAFF.NEW_USER",m.newUser=!0),m.addNewUser=function(){m.errors=[],s.user.save(m.user).$promise.then(function(e){m.users.unshift(e.toJSON()),a.success({title:"User properly created",msg:m.user.name?m.user.name+" has been created!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.save"}];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.user.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.saveUser=function(){m.errors=[],s.user.update({id:m.user.id},m.user).$promise.then(function(e){var n=_.find(m.users,{id:e.id});n&&_.merge(n,e.toJSON()),a.success({title:"User properly saved!",msg:m.user.name?m.user.name+" has been saved!":""}),p(e)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.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.user.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},m.deleteUser=function(e){if(o.getCurrentUser().id===m.user.id)return a.error({title:"User not deleted!",msg:"You can't remove yourself"});m.errors=[];var n=t.confirm().title("Are you sure?").content("The user will be deleted.").ariaLabel("Delete User").ok("Delete").cancel("Cancel").targetEvent(e);t.show(n).then(function(){s.user.delete({id:m.user.id}).$promise.then(function(){_.remove(m.users,{id:m.user.id}),a.success({title:"User properly deleted!",msg:(m.user.name||"user")+" has been deleted!"}),p(m.user)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){m.errors=e.data.errors||[{message:e.toString(),type:"api.user.delete"}];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.user.delete",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()})})},function(){})},m.getDateFromString=function(e){return null===e?void 0:new Date(e)},m.closeDialog=p,s.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var g="user-setting:update:user-"+m.user.id;c.on(g,u),e.$on("$destroy",function(){c.removeListener(g,u)})}e.$inject=["$scope","$mdDialog","toasty","users","user","api","Auth","license","setting","crudPermissions","socket"],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){var m=this;m.currentUser=l.getCurrentUser(),m.license=i,m.setting=s,m.passwordPattern=m.setting.securePassword?/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/:"",m.location=n.protocol()+"://"+n.host(),m.user=d||e.params.user||{},m.userProfileSection=c&&1==c.count?c.rows[0]:null,m.crudPermissions=l.parseCrudPermissions(m.userProfileSection?m.userProfileSection.crudPermissions:null),m.hasModulePermissions={},m.selectedTab=e.params.tab||0,m.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:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.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:s,users:m.users?m.users.rows:[],crudPermissions:m.crudPermissions}})},m.alert=r.info,m.gotoUsers=function(){e.go("app.staff.users",{},{reload:"app.staff.users"})},m.saveUser=function(){m.user=_.omit(m.user,"userpic"),o.user.update({id:m.user.id},m.user).$promise.then(function(){r.success({title:"User updated!",msg:m.user.name?m.user.name+" has been updated!":""})}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETuser",msg:e.data?JSON.stringify(e.data):e.toString()})})},m.refreshUser=function(){return o.user.get({id:m.user.id,userSetting:!0}).$promise.then(function(e){m.user=e})},o.voiceContext.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.contexts=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CONTEXTS",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){m.userProfiles=e.rows||[]}).catch(function(e){r.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})}),o.user.getApiKey({id:m.user.id}).$promise.then(function(e){m.user.apiKey=e.api_key?e.api_key:"N/A"}).catch(function(e){r.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","license","setting","api","toasty","Auth","user","userProfileSection"],angular.module("app.staff").controller("UserController",e)}(),function(){"use strict";function e(e,t,a,i,s,n,o,r,l,d,c,m,u,p){var g=this;g.license=m,g.setting=u,g.currentUser=c.getCurrentUser(),g.users=n||{count:0,rows:[]},g.userProfile=o,g.userProfileSection=r&&1==r.count?r.rows[0]:null,g.crudPermissions=c.parseCrudPermissions(g.userProfileSection?g.userProfileSection.crudPermissions:null),g.table="users",g.listOrder="",g.listOrderAsc=null,g.selectedUsers=[],g.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,adSsoEnabled",role:"admin,user",userSetting:!0,sort:"-updatedAt",limit:10,page:1},g.arrayrole=_.keyBy([{option:"Admin",value:"'admin'"},{option:"User",value:"'user'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.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"),"")}),g.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"),"")}),g.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"),"")}),g.arrayvideosupport=_.keyBy([{option:"Yes",value:"'yes'"},{option:"No",value:"'no'"},{option:"Always",value:"'always'"}],function(e){return _.replace(e.value,new RegExp("'","g"),"")}),g.editstate=function(e,n){t.go("app.staff.users.edit",{id:e.id,user:e,crudPermissions:g.crudPermissions})},g.deleteconfirm=function(e,n){var t=a.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");a.show(t).then(function(){A(e)},function(){console.log("CANCEL")})},g.success=f,g.getUsers=b,g.createOrEditUser=function(e,n){a.show({controller:"CreateOrEditUserDialogController",controllerAs:"vm",templateUrl:"app/main/apps/staff/views/users/create/dialog.html",parent:angular.element(i.body),targetEvent:e,clickOutsideToClose:!0,locals:{user:n,users:g.users.rows,license:g.license,setting:g.setting,crudPermissions:g.crudPermissions}})},g.deleteUser=A,g.exportSelectedUsers=function(){var e=angular.copy(g.selectedUsers);return g.selectedUsers=[],e},g.deleteSelectedUsers=function(e){var n=a.confirm().title("Are you sure want to delete the selected users?").htmlContent("<b>"+g.selectedUsers.length+" selected</b> will be deleted.").ariaLabel("delete Users").targetEvent(e).ok("OK").cancel("CANCEL");a.show(n).then(function(){g.selectedUsers.forEach(function(e){A(e)}),g.selectedUsers=[]})},g.deselectUsers=function(){g.selectedUsers=[]},g.selectAllUsers=function(){g.selectedUsers=g.users.rows},l.userProfile.get({fields:"id,name",sort:"name"}).$promise.then(function(e){g.userProfiles=e.rows||[]}).catch(function(e){d.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_USERPROFILES",msg:e.data?JSON.stringify(e.data):e.toString()})});var v=!0,h=1;function f(e){g.users=e||{count:0,rows:[]}}function b(){g.query.offset=(g.query.page-1)*g.query.limit,c.hasRole("admin")?g.promise=l.user.get(g.query,f).$promise:(g.query.id=g.userProfile.id,g.query.section="Users",g.promise=l.userProfile.getResources(g.query,f).$promise)}function A(e){l.user.delete({id:e.id}).$promise.then(function(){_.remove(g.users.rows,{id:e.id}),g.users.count-=1,g.users.rows.length||g.getUsers(),d.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){g.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()})})}e.$watch("vm.query.filter",function(e,n){v?s(function(){v=!1}):(n||(h=g.query.page),e!==n&&(g.query.page=1),e||(g.query.page=h),g.getUsers())}),p.on("user-setting:update",b),e.$on("$destroy",function(){p.removeListener("user-setting:update",b)})}e.$inject=["$scope","$state","$mdDialog","$document","$timeout","users","userProfile","userProfileSection","api","toasty","Auth","license","setting","socket"],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,g,v,h){var f=this;f.license=v,f.setting=h,f.currentUser=g.getCurrentUser(),f.contact_item_types=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="contact_item_types",f.listOrder="",f.listOrderAsc=null,f.selectedContactItemType=[],f.query={fields:"createdAt,updatedAt,id,name,OrderBy,rgbBackgroundColor",sort:"-updatedAt",limit:10,page:1},f.editdialog=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:n,clickOutsideToClose:!0,locals:{contactItemType:e,contact_item_types:f.contact_item_types.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("contactItemType")+"?").htmlContent("<b>"+(e.name||"contactItemType")+"</b> will be deleted.").ariaLabel("delete contactItemType").targetEvent(n).ok("OK").cancel("CANCEL");i.show(t).then(function(){y(e)},function(){console.log("CANCEL")})},f.success=E,f.getContactItemType=function(){f.query.offset=(f.query.page-1)*f.query.limit,g.hasRole("admin")?f.promise=m.contactItemType.get(f.query,E).$promise:(f.query.id=f.userProfile.id,f.query.section="ContactItemType",f.promise=m.userProfile.getResources(f.query,E).$promise)},f.createOrEditContactItemType=function(e,n){i.show({controller:"CreateOrEditContactItemTypeDialogController",controllerAs:"vm",templateUrl:"app/main/apps/tools/views/contact_item_types/create/dialog.html",parent:angular.element(s.body),targetEvent:e,clickOutsideToClose:!0,locals:{contactItemType:n,contact_item_types:f.contact_item_types.rows,license:f.license,setting:f.setting,crudPermissions:f.crudPermissions}})},f.deleteContactItemType=y,f.exportSelectedContactItemType=function(){var e=angular.copy(f.selectedContactItemType);return f.selectedContactItemType=[],e},f.deleteSelectedContactItemType=function(e){var n=i.confirm().title("Are you sure want to delete the selected contact_item_types?").htmlContent("<b>"+f.selectedContactItemType.length+" selected</b> will be deleted.").ariaLabel("delete ContactItemTypes").targetEvent(e).ok("OK").cancel("CANCEL");i.show(n).then(function(){f.selectedContactItemType.forEach(function(e){y(e)}),f.selectedContactItemType=[]})},f.deselectContactItemType=function(){f.selectedContactItemType=[]},f.selectAllContactItemType=function(){f.selectedContactItemType=f.contact_item_types.rows};var b=!0,A=1;function E(e){f.contact_item_types=e||{count:0,rows:[]}}function y(e){m.contactItemType.delete({id:e.id}).$promise.then(function(){_.remove(f.contact_item_types.rows,{id:e.id}),f.contact_item_types.count-=1,f.contact_item_types.rows.length||f.getContactItemType(),p.success({title:_.startCase("ContactItemType")+" 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:DELETEcontactItemType"}];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:DELETEcontactItemType",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.getContactItemType())})}e.$inject=["$scope","$window","$state","$mdSidenav","$mdDialog","$document","$timeout","$translate","contact_item_types","userProfile","userProfileSection","api","msUtils","toasty","Auth","license","setting"],angular.module("app.tools").controller("ContactItemTypesController",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_CONTACTITEMTYPE",g.contactItemType=angular.copy(l),g.contact_item_types=r,g.newContactItemType=!1,g.contactItemType||(g.contactItemType={rgbBackgroundColor:"#2196f3"},g.title="TOOLS.NEW_CONTACTITEMTYPE",g.newContactItemType=!0),g.addNewContactItemType=function(){g.errors=[],d.contactItemType.save(g.contactItemType).$promise.then(function(e){g.contact_item_types.unshift(e.toJSON()),o.success({title:"ContactItemType properly created",msg:g.contactItemType.name?g.contactItemType.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.contactItemType.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.contactItemType.save",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.saveContactItemType=function(){g.errors=[],isNaN(g.contactItemType.OrderBy)?alert(s.instant("TOOLS.ORDER_BY_NUMERIC")):d.contactItemType.update({id:g.contactItemType.id},g.contactItemType).$promise.then(function(e){var n=_.find(g.contact_item_types,{id:e.id});n&&_.merge(n,_.pick(e.toJSON(),_.keys(n))),o.success({title:"ContactItemType properly saved!",msg:g.contactItemType.name?g.contactItemType.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.contactItemType.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.contactItemType.update",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},g.deleteContactItemType=function(e){g.errors=[];var n=a.confirm().title("Are you sure?").content("The contactItemType will be deleted.").ariaLabel("Delete ContactItemType").ok("Delete").cancel("Cancel").targetEvent(e);a.show(n).then(function(){d.contactItemType.delete({id:g.contactItemType.id}).$promise.then(function(){_.remove(g.contact_item_types,{id:g.contactItemType.id}),o.success({title:"ContactItemType properly deleted!",msg:(g.contactItemType.name||"contactItemType")+" has been deleted!"}),v(g.contactItemType)}).catch(function(e){if(e.data&&e.data.errors&&e.data.errors.length){g.errors=e.data.errors||[{message:e.toString(),type:"api.contactItemType.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.contactItemType.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","contact_item_types","contactItemType","api","Auth","license","setting","crudPermissions"],angular.module("app.tools").controller("CreateOrEditContactItemTypeDialogController",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,i,s,o){var r=this;function l(e,n,t){return o.dashboardItem.update(t).$promise.catch(function(e){console.error(e)})}r.customDashboard={},r.init=function(e,n){r.crudPermissions=void 0!==n?n:{readOnly:!0,canEdit:!1,canDelete:!1},r.customDashboard=e,r.customDashboard.draggable={enabled:!0,handle:".draggable",stop:l},r.customDashboard.resizable={enabled:!0,handle:".resizable",stop:l},r.customDashboard.widgets=[];var t=_.map(["chat","fax","mail","openchannel","sms","voice","whatsapp"],function(e){return"voice"===e?o.rpc.getVoiceQueues({fields:"id,name"}).$promise.then(function(e){r.voiceQueues=e}):(a=(t="chat"===(n=e)?n+"Website":n+"Account")+"s",o[t].get({fields:"id,name"}).$promise.then(function(e){r[a]=e||{count:0,rows:[]}}));var n,t,a});return i.all(t).then(function(){return o.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=r.voiceQueues,e.rows[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),e.rows[n].smsAccounts=r.smsAccounts,e.rows[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),e.rows[n].faxAccounts=r.faxAccounts,e.rows[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),e.rows[n].mailAccounts=r.mailAccounts,e.rows[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),e.rows[n].openchannelAccounts=r.openchannelAccounts,e.rows[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),e.rows[n].chatWebsites=r.chatWebsites,e.rows[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),e.rows[n].whatsappAccounts=r.whatsappAccounts,e.rows[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.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",r.customDashboard.widgets.push(e.rows[n])}).catch(function(e){console.error(e)})})},r.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:r.customDashboard.widgets,license:null,setting:null,crudPermissions:r.crudPermissions}}).then(function(e){if(e)for(var n=0;n<r.customDashboard.widgets.length;n+=1)r.customDashboard.widgets[n].id===e.id&&(r.customDashboard.widgets[n].attrs=e.attrs,r.customDashboard.widgets[n].voiceQueues=r.voiceQueues,r.customDashboard.widgets[n].voiceQueuesSelected=_.map(r.voiceQueues.rows,"id"),r.customDashboard.widgets[n].smsAccounts=r.smsAccounts,r.customDashboard.widgets[n].smsAccountsSelected=_.map(r.smsAccounts.rows,"id"),r.customDashboard.widgets[n].faxAccounts=r.faxAccounts,r.customDashboard.widgets[n].faxAccountsSelected=_.map(r.faxAccounts.rows,"id"),r.customDashboard.widgets[n].mailAccounts=r.mailAccounts,r.customDashboard.widgets[n].mailAccountsSelected=_.map(r.mailAccounts.rows,"id"),r.customDashboard.widgets[n].openchannelAccounts=r.openchannelAccounts,r.customDashboard.widgets[n].openchannelAccountsSelected=_.map(r.openchannelAccounts.rows,"id"),r.customDashboard.widgets[n].chatWebsites=r.chatWebsites,r.customDashboard.widgets[n].chatWebsitesSelected=_.map(r.chatWebsites.rows,"id"),r.customDashboard.widgets[n].whatsappAccounts=r.whatsappAccounts,r.customDashboard.widgets[n].whatsappAccountsSelected=_.map(r.whatsappAccounts.rows,"id"),r.customDashboard.widgets[n].templateUrl="app/core/directives/ms-widget-engine/ms-widget-engine-"+r.customDashboard.widgets[n].type+"/ms-widget-engine."+r.customDashboard.widgets[n].type+".html")})},r.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 o.dashboardItem.delete({id:n.id}).$promise.then(function(e){_.remove(r.customDashboard.widgets,{id:n.id}),s.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){r.errors=e.data.errors||[{message:e.toString(),type:"SYSTEM:DELETE.customDashboard"}];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:DELETEdashboard",msg:e.data?JSON.stringify(e.data.message):e.message||e.toString()});console.error(e)})})}}e.$inject=["$mdDialog","$document","$q","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",attrChannel:"voice",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.onTypeChange=function(){["web-report","iframe","clock","custom"].includes(g.dashboarditem.type)&&(g.dashboarditem.attrEmailAccounts=null,g.dashboarditem.attrFaxAccounts=null,g.dashboarditem.attrSmsAccounts=null,g.dashboarditem.attrOpenchannelAccounts=null,g.dashboarditem.attrWhatsappAccounts=null,g.dashboarditem.attrChatWebsites=null)},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()})}),c.hasRole("admin")?d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_MAILACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.mailAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.mailAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:MailAccounts}).$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.mailAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.mailAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.mailAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.mailAccount,{id:Number(g.dashboarditem.attrEmailAccounts)}));for(var i=0;i<g.mailAccount.length;i++)a&&g.mailAccount[i].id===a.id&&(g.mailAccount[i].canSelect=!1,t.push(g.mailAccount[i]));g.mailAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETmailAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_FAXACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.faxAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.faxAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:FaxAccounts}).$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.faxAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.faxAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.faxAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.faxAccount,{id:Number(g.dashboarditem.attrFaxAccounts)}));for(var i=0;i<g.faxAccount.length;i++)a&&g.faxAccount[i].id===a.id&&(g.faxAccount[i].canSelect=!1,t.push(g.faxAccount[i]));g.faxAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETfaxAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_SMSACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.smsAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.smsAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:SmsAccounts}).$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.smsAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.smsAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.smsAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.smsAccount,{id:Number(g.dashboarditem.attrSmsAccounts)}));for(var i=0;i<g.smsAccount.length;i++)a&&g.smsAccount[i].id===a.id&&(g.smsAccount[i].canSelect=!1,t.push(g.smsAccount[i]));g.smsAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETsmsAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_OPENCHANNELACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.openchannelAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.openchannelAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:OpenchannelAccounts}).$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.openchannelAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.openchannelAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.openchannelAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.openchannelAccount,{id:Number(g.dashboarditem.attrOpenchannelAccounts)}));for(var i=0;i<g.openchannelAccount.length;i++)a&&g.openchannelAccount[i].id===a.id&&(g.openchannelAccount[i].canSelect=!1,t.push(g.openchannelAccount[i]));g.openchannelAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETopenchannelAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_WHATSAPPACCOUNT",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.whatsappAccount.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.whatsappAccount=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:WhatsappAccounts}).$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.whatsappAccount,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.whatsappAccount,{id:t.id});a.canSelect=!1,n.push(a)}g.whatsappAccount=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.whatsappAccount,{id:Number(g.dashboarditem.attrWhatsappAccounts)}));for(var i=0;i<g.whatsappAccount.length;i++)a&&g.whatsappAccount[i].id===a.id&&(g.whatsappAccount[i].canSelect=!1,t.push(g.whatsappAccount[i]));g.whatsappAccount=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETwhatsappAccount",msg:e.data?JSON.stringify(e.data):e.toString()})}),c.hasRole("admin")?d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GET_CHATWEBSITE",msg:e.data?JSON.stringify(e.data):e.toString()})}):d.chatWebsite.get({fields:"id,name",sort:"name",nolimit:"true"}).$promise.then(function(e){g.chatWebsite=e.rows||[]}).then(function(){return d.userProfileSection.get({userProfileId:g.currentUser.userProfileId,sectionId:ChatWebsites}).$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.chatWebsite,{id:e.resourceId})}),t=null;if(g.dashboarditem&&(t=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)})),t&&!_.some(n,["id",t.id])){var a=_.find(g.chatWebsite,{id:t.id});a.canSelect=!1,n.push(a)}g.chatWebsite=n})}else{var t=[],a=null;g.dashboarditem&&(a=_.find(g.chatWebsite,{id:Number(g.dashboarditem.attrChatWebsites)}));for(var i=0;i<g.chatWebsite.length;i++)a&&g.chatWebsite[i].id===a.id&&(g.chatWebsite[i].canSelect=!1,t.push(g.chatWebsite[i]));g.chatWebsite=t}}).catch(function(e){s.error({title:e.status?"API:"+e.status+" - "+e.statusText:"SYSTEM:GETchatWebsite",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",offlineMessage:"Offline_Message"},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",offlineMessage:"Offline_Message"},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(){O(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=O,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){O(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 O(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){var n=[{model:"disposition",action:"get",field:"name",params:{field:"name,level",level:e,MailAccountId:"null",SmsAccountId:"null",ChatWebsiteId:"null",OpenchannelAccountId:"null",WhatsappAccountId:"null",FaxAccountId:"null",ListId:"null",nolimit:!0}}],t=[{model:"whatsappAccount",action:"getDispositions",field:"name",params:{id:m.whatsappAccount.id,field:"name,level",level:e,nolimit:!0}}];return _.concat(t,n)}function p(e){m.whatsappAccountInteractions=e||{count:0,rows:[]};for(var n=0;n<m.whatsappAccountInteractions.rows.length;n+=1){var t=m.whatsappAccountInteractions.rows[n];h(t),t.Owner.name=f(t)}}function g(){m.query.offset=(m.query.page-1)*m.query.limit,m.promise=d.whatsappInteraction.get(m.query,p).$promise}function v(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||g(),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 h(e){e.Contact?e.contactName=(e.Contact.firstName||"")+" "+(e.Contact.lastName||""):e.contactName=i.instant("DASHBOARDS.UNKNOWN")}function f(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"]}},{name:"Disposition",column:"disposition",type:"multiselect",options:{routes:u("first")}},{name:"Second Disposition",column:"secondDisposition",type:"multiselect",options:{routes:u("second")}},{name:"Third Disposition",column:"thirdDisposition",type:"multiselect",options:{routes:u("third")}}]},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(){v(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=p,m.getWhatsappAccountInteractions=g,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,g()}}).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=v,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){v(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,a,o,i,s,r,l,d,c,m,u){var p=this;function g(e,n){return{id:e,title:n.name||"NONAME",state:"app.dashboards.custom",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function v(e,n){return{id:e,title:n.name||"NONAME",state:"app.plugins.plugin",stateParams:n,weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(e)&&!r.hasRole("admin")}}}function h(e,n){var t={user:_.pick(r.getCurrentUser(),["id","name","fullname","email","role","internal","interface"])};n.agentUrl=Mustache.render(n.agentUrl,t),i.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!r.hasPermission(e)}})}function f(e){return _.map(e.children,function(e){return e.id})}s.clear(),p.isAgent=function(){return r.getCurrentUser()&&r.hasRole("agent")},o.saveItem("apps",{title:"APPS",group:!0,weight:1,hidden:function(){return r.hasRole("agent")}}),d.version.get().$promise.then(function(e){p.version=e&&e.current?e.current:"UNKNOWN"}).catch(function(){p.version="UNKNOWN"}).finally(function(){o.saveItem("version",{title:"VERSION "+p.version,group:!0,weight:2,hidden:function(){return r.hasRole("agent")}})}),r.isLoggedIn()&&(null===m.userSettings&&m.getUserSettingForUser(),l.gray&&s.warning({msg:e.instant("DASHBOARDS.LICENSE_EXPIRE_REMAINING_DAYS"),showClose:!0,timeout:!1}),d.dashboard.get().$promise.then(function(e){for(var n=0,t=0;t<e.rows.length;t+=1)n=99999+e.rows[t].id,o.saveItem("apps.dashboards.custom_"+n,g(n,e.rows[t]))}),d.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){o.saveItem("apps.plugins",{id:1900,title:"Plugins",translate:"PLUGINS.PLUGINS",icon:"icon-apps",permissions:{hidden:!0},weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}});for(var a=0;a<t.length;a+=1)n=88888+t[a].id,o.saveItem("apps.plugins.plugin_"+n,v(n,t[a]));o.sort()}var i=_.filter(e.rows,function(e){return"never"!=e.sidebar&&"adminOnly"!=e.sidebar});if(0<i.length)for(var s=0;s<i.length;s+=1)h(n=88888+i[s].id,i[s])}})),l.custom&&!c.defaultPageTitle&&c.pageTitle&&angular.element("#pageTitle").html(c.pageTitle),o.saveItem("apps.dashboards",{id:100,title:"Dashboards",translate:"DASHBOARDS.DASHBOARDS",icon:"icon-tile-four",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.dashboards.general",{id:101,title:"General",route:"",translate:"DASHBOARDS.GENERAL",state:"app.dashboards.general",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(101)&&!r.hasRole("admin")}}),o.saveItem("apps.staff",{id:200,title:"Staff",translate:"STAFF.STAFF",icon:"icon-account-multiple",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||r.hasRole("user")||!r.hasPermission(201)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.agents",{id:202,title:"Agents",route:"user",translate:"STAFF.AGENTS",state:"app.staff.agents",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(202)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.telephones",{id:203,title:"Telephones",route:"user",translate:"STAFF.TELEPHONES",state:"app.staff.telephones",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(203)&&!r.hasRole("admin")}}),o.saveItem("apps.staff.teams",{id:204,title:"Teams",route:"team",translate:"STAFF.TEAMS",state:"app.staff.teams",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(204)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(205)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager",{id:300,title:"ContactManager",translate:"CONTACTMANAGER.CONTACTMANAGER",icon:"icon-account-circle",license:"cm",weight:4,hidden:function(){return!l.cm||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.lists",{id:301,title:"Lists",route:"cmList",translate:"CONTACTMANAGER.LISTS",state:"app.contactmanager.lists",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(301)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.companies",{id:302,title:"Companies",route:"cmCompany",translate:"CONTACTMANAGER.COMPANIES",state:"app.contactmanager.companies",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(302)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(304)&&!r.hasRole("admin")}}),o.saveItem("apps.contactmanager.contacts",{id:303,title:"Contacts",route:"",translate:"CONTACTMANAGER.CONTACTS",state:"app.contactmanager.contacts",permissions:{association:!1},weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(303)&&!r.hasRole("admin")}}),o.saveItem("apps.voice",{id:400,title:"Voice",translate:"VOICE.VOICE",icon:"icon-phone",license:"voice",weight:5,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voiceQueues",{id:401,title:"VoiceQueues",route:"voiceQueue",channel:"voice",translate:"VOICE.VOICEQUEUES",state:"app.voice.voiceQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(401)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.contexts",{id:405,title:"Contexts",route:"voiceContext",translate:"VOICE.CONTEXTS",state:"app.voice.contexts",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(405)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicemails",{id:406,title:"Voicemails",route:"voiceMail",translate:"VOICE.VOICEMAILS",state:"app.voice.voicemails",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(406)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.musiconholds",{id:407,title:"MusicOnHolds",route:"voiceMusicOnHold",translate:"VOICE.MUSICONHOLDS",state:"app.voice.musiconholds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(407)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(408)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.chanSpies",{id:409,title:"ChanSpies",route:"voiceChanSpy",translate:"VOICE.CHANSPIES",state:"app.voice.chanSpies",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(409)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.voicePrefixes",{id:410,title:"VoicePrefixes",route:"voicePrefix",translate:"VOICE.VOICEPREFIXES",state:"app.voice.voicePrefixes",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(410)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.inboundRoutes",{id:402,title:"InboundRoutes",route:"voiceExtension",translate:"VOICE.INBOUNDROUTES",state:"app.voice.inboundRoutes",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(402)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.outboundRoutes",{id:403,title:"OutboundRoutes",route:"voiceExtension",translate:"VOICE.OUTBOUNDROUTES",state:"app.voice.outboundRoutes",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(403)&&!r.hasRole("admin")}}),o.saveItem("apps.voice.internalRoutes",{id:404,title:"InternalRoutes",route:"voiceExtension",translate:"VOICE.INTERNALROUTES",state:"app.voice.internalRoutes",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(404)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(411)&&!r.hasRole("admin")}}),o.saveItem("apps.chat",{id:500,title:"Chat",translate:"CHAT.CHAT",icon:"icon-hangouts",license:"chat",weight:6,hidden:function(){return!l.chat||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatQueues",{id:501,title:"ChatQueues",route:"chatQueue",channel:"chat",translate:"CHAT.CHATQUEUES",state:"app.chat.chatQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(501)&&!r.hasRole("admin")}}),o.saveItem("apps.chat.chatWebsites",{id:502,title:"ChatWebsites",route:"chatWebsite",channel:"chat",translate:"CHAT.CHATWEBSITES",state:"app.chat.chatWebsites",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(502)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(510)&&!r.hasRole("admin")}}),o.saveItem("apps.mail",{id:600,title:"Mail",translate:"MAIL.MAIL",icon:"icon-email",license:"mail",weight:7,hidden:function(){return!l.mail||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailQueues",{id:601,title:"MailQueues",route:"mailQueue",channel:"mail",translate:"MAIL.MAILQUEUES",state:"app.mail.mailQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(601)&&!r.hasRole("admin")}}),o.saveItem("apps.mail.mailAccounts",{id:602,title:"MailAccounts",route:"mailAccount",channel:"mail",translate:"MAIL.MAILACCOUNTS",state:"app.mail.mailAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(602)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(603)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(610)&&!r.hasRole("admin")}}),o.saveItem("apps.sms",{id:700,title:"Sms",translate:"SMS.SMS",icon:"icon-message-text",license:"messaging",weight:8,hidden:function(){return!l.messaging||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsQueues",{id:701,title:"SmsQueues",route:"smsQueue",channel:"sms",translate:"SMS.SMSQUEUES",state:"app.sms.smsQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(701)&&!r.hasRole("admin")}}),o.saveItem("apps.sms.smsAccounts",{id:702,title:"SmsAccounts",route:"smsAccount",channel:"sms",translate:"SMS.SMSACCOUNTS",state:"app.sms.smsAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(702)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(710)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel",{id:800,title:"Openchannel",translate:"OPENCHANNEL.OPENCHANNEL",icon:"icon-google-earth",license:"openchannel",weight:9,hidden:function(){return!l.openchannel||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelQueues",{id:801,title:"OpenchannelQueues",route:"openchannelQueue",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELQUEUES",state:"app.openchannel.openchannelQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(801)&&!r.hasRole("admin")}}),o.saveItem("apps.openchannel.openchannelAccounts",{id:802,title:"OpenchannelAccounts",route:"openchannelAccount",channel:"openChannel",translate:"OPENCHANNEL.OPENCHANNELACCOUNTS",state:"app.openchannel.openchannelAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(802)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(810)&&!r.hasRole("admin")}}),o.saveItem("apps.fax",{id:900,title:"Fax",translate:"FAX.FAX",icon:"icon-deskphone",license:"fax",weight:10,hidden:function(){return!l.fax||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxQueues",{id:901,title:"FaxQueues",route:"faxQueue",channel:"fax",translate:"FAX.FAXQUEUES",state:"app.fax.faxQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(901)&&!r.hasRole("admin")}}),o.saveItem("apps.fax.faxAccounts",{id:902,title:"FaxAccounts",route:"faxAccount",channel:"fax",translate:"FAX.FAXACCOUNTS",state:"app.fax.faxAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(902)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(910)&&!r.hasRole("admin")}}),o.saveItem("apps.tools",{id:1e3,title:"Tools",translate:"TOOLS.TOOLS",icon:"icon-auto-fix",weight:15,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.tools.cannedAnswers",{id:1001,title:"CannedAnswers",route:"cannedAnswer",translate:"TOOLS.CANNEDANSWERS",state:"app.tools.cannedAnswers",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1001)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.customDashboards",{id:1003,title:"CustomDashboards",route:"dashboard",translate:"TOOLS.CUSTOMDASHBOARDS",state:"app.tools.customDashboards",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1003)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.intervals",{id:1004,title:"Intervals",route:"interval",translate:"TOOLS.INTERVALS",state:"app.tools.intervals",weight:4,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1004)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.pauses",{id:1005,title:"Pauses",route:"pause",translate:"TOOLS.PAUSES",state:"app.tools.pauses",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1005)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.schedules",{id:1006,title:"Scheduler",route:"schedule",translate:"TOOLS.SCHEDULER",state:"app.tools.schedules",weight:6,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1006)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.sounds",{id:1007,title:"Sounds",route:"sound",translate:"TOOLS.SOUNDS",state:"app.tools.sounds",weight:7,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1007)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.tags",{id:1008,title:"Tags",route:"tag",translate:"TOOLS.TAGS",state:"app.tools.tags",weight:8,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1008)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.templates",{id:1009,title:"Templates",route:"template",translate:"TOOLS.TEMPLATES",state:"app.tools.templates",weight:9,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1009)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.trunks",{id:1011,title:"Trunks",route:"trunk",translate:"TOOLS.TRUNKS",state:"app.tools.trunks",weight:11,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1011)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.variables",{id:1012,title:"Variables",route:"variable",translate:"TOOLS.VARIABLES",state:"app.tools.variables",weight:12,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1012)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.contact_item_types",{id:1013,title:"ContactItemType",route:"contactItemType",translate:"TOOLS.CONTACTITEMTYPE",state:"app.tools.contact_item_types",weight:5,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1013)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.dispositions",{id:1002,title:"Dispositions",route:"disposition",translate:"TOOLS.DISPOSITIONS",state:"app.tools.dispositions",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1002)&&!r.hasRole("admin")}}),o.saveItem("apps.tools.triggers",{id:1010,title:"Triggers",route:"trigger",translate:"TOOLS.TRIGGERS",state:"app.tools.triggers",weight:10,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1010)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare",{id:1100,title:"CallySquare",translate:"CALLYSQUARE.CALLYSQUARE",icon:"icon-sitemap",license:"voice",weight:13,hidden:function(){return!l.voice||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.odbcs",{id:1101,title:"ODBC",route:"squareOdbc",translate:"CALLYSQUARE.ODBC",state:"app.callysquare.odbcs",weight:2,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1101)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1102)&&!r.hasRole("admin")}}),o.saveItem("apps.callysquare.projects",{id:1103,title:"Projects",route:"squareProject",translate:"CALLYSQUARE.PROJECTS",state:"app.callysquare.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1103)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics",{id:1200,title:"Analytics",translate:"ANALYTICS.ANALYTICS",icon:"icon-chart-line",weight:16,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.metrics",{id:1201,title:"Metrics",route:"analyticMetric",translate:"ANALYTICS.METRICS",state:"app.analytics.metrics",weight:3,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1201)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1202)&&!r.hasRole("admin")}}),o.saveItem("apps.analytics.reports",{id:1203,title:"Reports",route:"",translate:"ANALYTICS.REPORTS",state:"app.analytics.reports",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1203)&&!r.hasRole("admin")}}),o.saveItem("apps.integrations",{id:1300,title:"Integrations",translate:"INTEGRATIONS.INTEGRATIONS",icon:"icon-heart",weight:17,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1301)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1302)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1303)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1305)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1306)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1307)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1308)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1309)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1310)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1304)&&!r.hasRole("admin")}}),o.saveItem("apps.settings",{id:1400,title:"Settings",translate:"SETTINGS.SETTINGS",icon:"icon-cog",permissions:{hidden:!0},weight:20,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")||r.hasRole("admin")&&!r.getCurrentUser().settingsEnabled}}),o.saveItem("apps.settings.generals",{id:1401,title:"General",route:"setting",translate:"SETTINGS.GENERAL",state:"app.settings.generals",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.smtps",{id:1402,title:"Smtp",route:"mailAccount",translate:"SETTINGS.SMTP",state:"app.settings.smtps",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.networks",{id:1403,title:"Networks",route:"network",translate:"SETTINGS.NETWORKS",state:"app.settings.networks",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.customizations",{id:1407,title:"Customizations",route:"setting",translate:"SETTINGS.CUSTOMIZATIONS",state:"app.settings.customizations",weight:1,hidden:function(){return!l.custom||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.cloudProviders",{id:1408,title:"AiTools",route:"cloudProvider",translate:"SETTINGS.CLOUD_PROVIDERS",state:"app.settings.cloudProviders",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.updates",{id:1404,title:"Updates",route:"",translate:"SETTINGS.UPDATES",state:"app.settings.updates",weight:1,hidden:function(){return!l.update||r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.license",{id:1405,title:"License",route:"",translate:"SETTINGS.LICENSE",state:"app.settings.license",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.settings.system",{id:1406,title:"System",route:"",translate:"SETTINGS.SYSTEM",state:"app.settings.system",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1400)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer",{id:1500,title:"MotionDialer",translate:"MOTIONDIALER.MOTIONDIALER",icon:"icon-fire",license:"dialer",weight:5,hidden:function(){return!l.dialer||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.queueCampaigns",{id:1501,title:"QueueCampaigns",route:"voiceQueue",channel:"bull",translate:"MOTIONDIALER.QUEUECAMPAIGNS",state:"app.motiondialer.queueCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1501)&&!r.hasRole("admin")}}),o.saveItem("apps.motiondialer.ivrCampaigns",{id:1502,title:"IvrCampaigns",route:"campaign",translate:"MOTIONDIALER.IVRCAMPAIGNS",state:"app.motiondialer.ivrCampaigns",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1502)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(1510)&&!r.hasRole("admin")}}),o.saveItem("apps.help",{id:1600,title:"Help",translate:"HELP.HELP",icon:"icon-help",permissions:{association:!1},weight:21,hidden:function(){return!c.viewHelpSection||r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.help.about",{id:1601,title:"About",route:"",translate:"HELP.ABOUT",state:"app.help.about",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1600)&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty",{id:1700,title:"jscripty",translate:"JSCRIPTY.JSCRIPTY",icon:"icon-script",license:"jscripty",weight:14,hidden:function(){return!l.jscripty||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.jscripty.projects",{id:1701,title:"Projects",route:"jscriptyProject",translate:"JSCRIPTY.PROJECTS",state:"app.jscripty.projects",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1701)&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace",{id:1800,title:"Marketplace",translate:"MARKETPLACE.MARKETPLACE",icon:"icon-cart",weight:18,hidden:function(){return r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.marketplace.plugins",{id:1801,title:"Plugins",route:"plugin",translate:"MARKETPLACE.PLUGINS",state:"app.marketplace.plugins",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(1801)&&!r.hasRole("admin")}}),o.saveItem("apps.video",{id:2e3,title:"Video",translate:"VIDEO.VIDEO",icon:"icon-video",license:"screenrecording",weight:12,hidden:function(){return!l.screenrecording||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(2001)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp",{id:2100,title:"Whatsapp",translate:"WHATSAPP.WHATSAPP",icon:"icon-whatsapp",license:"whatsapp",weight:11,hidden:function(){return!l.whatsapp||r.hasRole("agent")||!r.hasChildrenPermissions(f(this))&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappQueues",{id:2101,title:"WhatsappQueues",route:"whatsappQueue",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPQUEUES",state:"app.whatsapp.whatsappQueues",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2101)&&!r.hasRole("admin")}}),o.saveItem("apps.whatsapp.whatsappAccounts",{id:2102,title:"WhatsappAccounts",route:"whatsappAccount",channel:"whatsapp",translate:"WHATSAPP.WHATSAPPACCOUNTS",state:"app.whatsapp.whatsappAccounts",weight:1,hidden:function(){return r.hasRole("agent")||!r.hasPermission(2102)&&!r.hasRole("admin")}}),o.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 r.hasRole("agent")||!r.hasPermission(2110)&&!r.hasRole("admin")}}),o.sort(),i.saveItem("apps",{title:"APPS",group:!0,weight:1}),i.saveItem("apps.home",{id:100,title:"Home",translate:"DASHBOARDS.HOME",icon:"icon-home",weight:1}),i.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!r.hasPermission(101)}}),i.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!r.hasPermission(115)}}),i.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!l.cm||!r.hasPermission(102)}}),i.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!l.cm||!r.hasPermission(103)}}),i.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!l.dialer||!r.hasPermission(113)}}),i.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!l.voice||!r.hasPermission(110)}}),i.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!l.voice||!r.hasPermission(111)}}),i.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!l.voice||!r.hasPermission(104)}}),i.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!l.chat||!r.hasPermission(105)}}),i.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!l.mail||!r.hasPermission(106)}}),i.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!l.messaging||!r.hasPermission(107)}}),i.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!l.openchannel||!r.hasPermission(108)}}),i.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!l.fax||!r.hasPermission(109)}}),i.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!l.whatsapp||!r.hasPermission(114)}}),n.$on("$viewContentAnimationEnded",function(e){e.targetScope.$id===n.$id&&t.$broadcast("msSplashScreen::remove")}),n.$on("socket:connect",function(){t.toastySocketLost&&(s.clear(t.toastySocketLost),t.toastySocketLost=void 0)}),n.$on("socket:disconnect",function(){t.toastySocketLost||s.warning({title:e.instant("TOOLBAR.WARNING"),msg:e.instant("DASHBOARDS.LOST_CONNECTION"),timeout:!1,onAdd:function(){t.toastySocketLost=this.id}})}),n.$on("client-side-logging:enabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_ENABLED_MSG")})}),n.$on("client-side-logging:disabled",function(){"admin"!==r.getCurrentUser().role&&s.info({title:e.instant("STAFF.CLIENT_LOGS"),msg:e.instant("STAFF.CLIENT_LOGS_DISABLED_MSG")})}),a.onbeforeunload=function(){r.isTelephone()||u.flush()}}e.$inject=["$scope","$rootScope","$translate","$window","msNavigationService","msNavigationAgentService","toasty","Auth","license","api","setting","UserSettingService","ClientSideLoggingService"],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.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(e,n,t,a,i,s,o,r,l,d){var c=this;function m(){u()}function u(){s.user.get({id:c.user.id}).$promise.then(function(e){c.user.permissions=e.permissions,c.items=[{font_icon:"icon-hangouts",class:"green-700-fg",label:"chat",title:"TOOLBAR.CHAT",value:"chat",permission:r.chat&&(p(105)||e.chatAutoanswer),enabled:e.chatAutoanswer,delay:e.chatAutoanswerDelay},{font_icon:"icon-email",class:"teal-fg",label:"email",title:"TOOLBAR.EMAIL",value:"email",permission:r.mail&&(p(106)||e.emailAutoanswer),enabled:e.emailAutoanswer,delay:e.emailAutoanswerDelay},{font_icon:"icon-message-text",class:"orange-fg",label:"sms",title:"TOOLBAR.SMS",value:"sms",permission:r.messaging&&(p(107)||e.smsAutoanswer),enabled:e.smsAutoanswer,delay:e.smsAutoanswerDelay},{font_icon:"icon-google-earth",class:"amber-fg",label:"openchannel",title:"TOOLBAR.OPENCHANNEL",value:"openchannel",permission:r.openchannel&&(p(108)||e.openchannelAutoanswer),enabled:e.openchannelAutoanswer,delay:e.openchannelAutoanswerDelay},{font_icon:"icon-deskphone",class:"grey-A200-fg",label:"fax",title:"TOOLBAR.FAX",value:"fax",permission:r.fax&&(p(109)||e.faxAutoanswer),enabled:e.faxAutoanswer,delay:e.faxAutoanswerDelay},{font_icon:"icon-whatsapp",class:"lime-A700-fg",label:"whatsapp",title:"TOOLBAR.WHATSAPP",value:"whatsapp",permission:r.whatsapp&&(p(114)||e.whatsappAutoanswer),enabled:e.whatsappAutoanswer,delay:e.whatsappAutoanswerDelay}]})}function p(e){return _.includes(c.user.permissions,e)}c.items=[],c.closeDialog=function(){a.hide()},c.user=d.getCurrentUser(),u(),o.connect(),o.on("userNotification:recalc:"+c.user.id,m)}e.$inject=["$scope","$state","$location","$mdDialog","toasty","api","socket","license","user","Auth"],angular.module("app.toolbar").controller("AutoAnswerNotificationsDialogController",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,t,a,i,n,s,o){var r=this;function l(e,n){var t={id:e.id};n?t.recallmeNotifiedDate=null:r.isRecallNotification?t.recallmeNotifiedDate=null:e.recallme||(t.UserId=null),i.cmHopper.update(t)}function d(e){var n=!1;_.isNil(e)||(n=e),l(r.preview,n),t.hide()}function c(e){return i.cmContact.getAdditionalPhones({id:e}).$promise.then(function(e){var n=_.map(e,"item"),t=_.map(e,"description");r.additionalItemTypes=_.map(e,"ItemTypeId");var a=_.map(e,"ItemType.rgbBackgroundColor"),i=_.map(e,"ItemType.name");r.additionalItems=[];for(var s=0;s<n.length;s++)r.additionalItems.push({phone:n[s],type:i[s],color:a[s],description:t[s]})})}r.customFieldsMap=s&&s.rows?_.mapValues(_.keyBy(s.rows,function(e){return"cf_"+e.id}),"name"):{},r.errors=[],r.hopperIds=[],r.additionalItems=[],r.preview=n,r.isRecallNotification=o,r.originated=!1,r.disable=!1,r.disableGetContact=!1,r.hopperIds.push(r.preview.id),r.originatePreview=function(){r.originated=!0,r.disable=!0,_.isEmpty(r.preview)?(a.error({title:"Message",msg:"Contact not available"}),r.disable=!1,r.hopperIds=[],d(!0)):i.rpc.getVoiceQueuesPreview({id:r.preview.id}).$promise.then(function(){d(!0)}).catch(function(e){a.error({title:"Message",msg:e.data}),d(!0)}).finally(function(){r.disable=!1,r.hopperIds=[]})},r.closeDialog=d,r.nextContact=function(){return r.disableGetContact=!0,i.cmHopper.getPreview({hopperIds:r.hopperIds,direction:"next"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(r.disableGetContact=!1,r.hopperIds=[],404===e.status)r.getFirstAvailableContact();else if(e.data&&e.data.errors&&e.data.errors.length){t.hide();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 t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})},r.previousContact=function(){if(r.disableGetContact=!0,1<r.hopperIds.length){var e=_.without(r.hopperIds,r.preview.id);return i.cmHopper.getPreview({hopperIds:e,direction:"prev"}).$promise.then(function(e){r.disableGetContact=!1,_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(r.hopperIds=[],t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),_.remove(r.hopperIds,function(e){return e==r.preview.id}),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e)}).catch(function(e){if(404===e.status)r.hopperIds=[r.preview.id],a.info({title:"PREVIEW",msg:"PREVIOUS CONTACTS NOT AVAILABLE"});else if(e.data&&e.data.errors&&e.data.errors.length){r.hopperIds=[],t.hide();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 r.hopperIds=[],t.hide(),a.error({title:e.status?"API:"+e.status+" - "+e.statusText:"api preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})})}},r.getFirstAvailableContact=function(){return r.disableGetContact=!0,a.info({title:"PREVIEW",msg:"CONTACTS NOT AVAILABLE. REWINDING THE LIST"}),i.cmHopper.getPreview({hopperIds:[r.preview.id],direction:"next"}).$promise.then(function(e){_.isNil(e)||_.isNil(e.Queue)||!e.Queue.dialActive?(t.hide(),a.info({title:"PREVIEW",msg:"CAMPAIGN NOT ACTIVE"})):(c(e.Contact.id),r.originated||i.cmHopper.update({id:r.preview.id,UserId:null}),r.preview=e,r.hopperIds.push(r.preview.id))}).catch(function(e){if(t.hide(),404===e.status)a.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)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 preview",msg:e.data?JSON.stringify(e.data.message):e.toString()})}).finally(function(){r.disableGetContact=!1})},r.isCustomField=function(e){return _.startsWith(e,"cf_")},r.isHiddenField=function(e){return _.includes(["Company","CompanyId","ListId","UserId","createdAt","deletedAt","id","dialTimezone","utcOffset","AdditionalPhones","additionalPhones","priority","scheduledat","tags","updatedAt","facebook","twitter","skype","wechat","teams","viber","line","telegram"],e)},r.isNil=function(e){return _.isNil(e)},_.isNil(r.preview)||c(r.preview.Contact.id),e.$on("$destroy",function(){r.originated||l(r.preview,!1)})}e.$inject=["$scope","$mdDialog","toasty","api","preview","customFields","isRecallNotification"],angular.module("app.toolbar").controller("PreviewDialogController",e).directive("customChip",function(){return{restrict:"A",scope:!1,link:function(e,n,t){n.parent().parent().css("background",e.$chip.color)}}})}(),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,S){var T,I=this;I.voiceQueues={},I.polling=!0,t.global={search:""},I.pauses=[],I.license=b,I.currentUser=v.getCurrentUser(),I.unreadTotalMessages=0,I.unreadTotalGroupMessages=0,I.contacts=0,"agent"===I.currentUser.role&&(T=E(function(){_.some(I.voiceQueues,{dialMethod:"preview",dialActive:!0})&&I.license.dialer&&I.polling?(I.polling=!1,f.cmHopper.getOpenContacts().$promise.then(function(e){e&&_.isNumber(e.contacts)&&(I.contacts=e.contacts)}).finally(function(){I.polling=!0})):I.contacts=0},14999)),I.setting=A,I.bodyEl=angular.element("body"),I.conf={realm:"asterisk",host:e.host(),protocol:e.protocol(),soundPlayerId:"local-audio",remotePlayerId:"remote-audio",ua:"Motion WebRTC Bar 0.2.0",license:I.license.webrtc,phoneBarExpires:I.currentUser.phoneBarExpires,phoneBarPrefixRequired:I.currentUser.phoneBarPrefixRequired,wssPort:I.currentUser.wssPort},I.webRTCSessions=[],I.autoanswerIconColor="green-700-fg",I.query={id:v.getCurrentUser().id,fields:"id,name,type,dialMethod,dialActive",channel:"voice",nolimit:!0},I.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"}],I.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 O=["ar","fa","he"],C=S.getLogger("toolbar");function w(){h.connect(),h.on("user:update",I.onUserUpdate),h.on("user:called",I.onUserCalled),h.on("chatInternalMessage:save",I.onInternalMessageSave),h.on("chatInternalMessage:update",I.onInternalMessageUpdate),h.on("userVoiceQueue:save",I.onUserVoiceQueue),h.on("voiceQueue:save",I.onVoiceQueue),h.on("userVoiceQueue:remove",I.onUserVoiceQueue),h.on("voiceQueue:remove",I.onVoiceQueue),h.on("voiceQueue:update",I.onVoiceQueue),h.on("user:forcelogout",M),h.on("userNotification:send",U),h.on("userNotification:recalc:"+I.user.id,F)}function R(){h.disconnect("logout")}function x(e){I.voiceQueues=e?_.keyBy(e.rows?e.rows:[],"id"):{}}function N(){I.promise=f.user.getQueues(I.query,x).$promise}function D(e,n,t){n||(n=!1),t||(t={type:"click",target:"button.preview-button"}),c.show({controller:"PreviewDialogController",controllerAs:"vm",templateUrl:"app/toolbar/preview/dialog.html",parent:angular.element(m.body),targetEvent:t,clickOutsideToClose:!0,locals:{preview:e,currentUser:I.currentUser,isRecallNotification:n},resolve:{customFields:["apiResolver",function(e){return e.resolve("cmCustomField@get",{nolimit:!0})}]}})}function P(){return I.license.chat&&(I.hasPermission(105)||I.currentUser.chatAutoanswer)||I.license.mail&&I.hasPermission(106)||I.currentUser.emailAutoanswer||I.license.messaging&&I.hasPermission(107)||I.currentUser.smsAutoanswer||I.license.openchannel&&I.hasPermission(108)||I.currentUser.openchannelAutoanswer||I.license.fax&&I.hasPermission(109)||I.currentUser.faxAutoanswer||I.license.whatsapp&&(I.hasPermission(114)||I.currentUser.whatsappAutoanswer)}function L(e){return R(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return v.logout(e)}).then(function(){return t.$broadcast("webrtc::logout"),a.go("app.login")}).catch(function(e){C.error(e)})}function k(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:I.user,setting:A,reset:n}})}function M(e){if(C.debug("onForceLogout -> data",e),e.user.id===I.user.id&&0!==I.user.showWebBar)return R(),s.resolve().then(function(){if(!v.isTelephone())return S.flush()}).then(function(){return 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){C.error(e)})}function U(e){var n=e;if(I.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})}}function F(e){f.user.get({id:I.currentUser.id}).$promise.then(function(e){I.currentUser.permissions=e.permissions,I.autoanswerIconColor=P()?"green-700-fg":"gray-700-fg"})}I.toggleSidenav=function(e){i(e).toggle()},I.logout=L,I.changeLanguage=function(e){if(!I.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"})}I.selectedLanguage=e,u.put("motion.language",e.code),r.use(e.code),"app.callysquare.projects.edit"===a.current.name&&d.location.reload();0<=O.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"},I.setUserStatus=function(e){I.userStatus=e},I.toggleHorizontalMobileMenu=function(){I.bodyEl.toggleClass("ms-navigation-horizontal-mobile-menu-active")},I.toggleMsNavigationFolded=function(){g.toggleFolded()},I.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},I.searchResultClick=function(e){e.uisref&&(e.stateParams?a.go(e.state,e.stateParams):a.go(e.state))},I.openSettings=function(){t.$broadcast("webrtc::settings")},I.changePassword=k,I.isAgent=function(){return v.getCurrentUser()&&v.hasRole("agent")},I.onUserUpdate=function(e){if(e.id===I.user.id)if("agent"===e.role&&_.isBoolean(e.online)&&!e.online)if(0!==I.user.showWebBar){var n;R();var t=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(){n=setTimeout(function(){c.cancel()},6e4)}});c.show(t).then(function(){return clearTimeout(n),v.queueLogin().then(function(){w(),_.merge(I.user,e),v.setCurrentUser(I.user)})}).catch(function(){clearTimeout(n),L(!0)})}else L(!0);else _.merge(I.user,e),v.setCurrentUser(I.user)},I.onUserCalled=function(e){if(2===I.currentUser.showWebBar&&"agent"===I.currentUser.role){var n=I.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.extravar?e.variables.extravar:"Not defined")+"</span><br>            </div>",showClose:!0,timeout:1e4,html:!0})}},I.pause=function(e){var n=e||"DEFAULT PAUSE";_.some(I.webRTCSessions,["confirmed",!0])&&(n="#"+n);return f.user.pause({id:I.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()})})},I.unpause=function(){return f.user.unpause({id:I.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()})})},I.preview=function(n){return I.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"}):D(e,!1,n)}).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){I.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(){I.disable=!1})},I.autoAnswerNotificationsDialog=function(e){if(P()){I.autoanswerNotifications;c.show({controller:"AutoAnswerNotificationsDialogController",controllerAs:"vm",templateUrl:"app/toolbar/autoanswers/dialog.html",parent:angular.element(m.body),targetEvent:e,clickOutsideToClose:!0,locals:{license:I.license,user:I.currentUser}})}else alert(r.instant("TOOLBAR.NO_AUTOANSWER_CONFIGURED"))},I.getLogo=function(){return I.setting.defaultHeaderWhiteLabel?"xCALLY Motion":I.setting.headerWhiteLabel},I.userIsNotPhonebar=function(){return"admin"===I.currentUser.role||"user"===I.currentUser.role||"agent"===I.currentUser.role&&0!==I.currentUser.showWebBar},I.onInternalMessageSave=function(e){e.ToId!==I.currentUser.id||e.ChatGroupId||(I.unreadTotalMessages+=1);e.ToId===I.currentUser.id&&e.FromId!==I.currentUser.id&&!e.read&&e.ChatGroupId&&I.unreadTotalGroupMessages++},I.onInternalMessageUpdate=function(e){e.ToId===I.currentUser.id&&e.read&&0<I.unreadTotalMessages&&!e.ChatGroupId&&(I.unreadTotalMessages-=1);e.ToId===I.currentUser.id&&e.read&&e.ChatGroupId&&0<I.unreadTotalGroupMessages&&I.unreadTotalGroupMessages--},I.onUserVoiceQueue=function(e){_.toInteger(e.UserId)===v.getCurrentUser().id&&N()},I.onVoiceQueue=function(){N()},I.hasPermission=function(e){return _.includes(I.currentUser.permissions,e)},function(){I.user=v.getCurrentUser(),I.conf.ha1=I.user.md5secret,I.conf.id=I.user.id,I.conf.name=I.user.name,I.conf.fullname=I.user.fullname,I.conf.internal=I.user.internal,I.conf.recording=I.user.phoneBarEnableRecording,I.conf.autoAnswer=I.user.phoneBarAutoAnswer,I.conf.enableSettings=I.user.phoneBarEnableSettings,I.conf.enableDtmfTone=I.user.phoneBarEnableDtmfTone,I.conf.autoAnswerDelay=I.user.phoneBarAutoAnswerDelay,I.userStatus=I.userStatusOptions[0];var e=u.get("motion.language");e&&I.languages.hasOwnProperty(e)?I.selectedLanguage=I.languages[e]:I.selectedLanguage=I.languages[r.preferredLanguage()];if(f.pause.get({fields:"name",nolimit:!0}).$promise.then(function(e){I.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()&&I.setting.securePassword)if(I.user.passwordResetAt){var n=moment(I.user.passwordResetAt).add(I.setting.passwordExpiresDays||90,"day");moment().isAfter(n)?k(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 k(null,!0);F()}(),N(),w(),I.openPreviewDialog=D,f.chatInternalMessage.get({fields:"FromId",ToId:I.currentUser.id,read:!1,nolimit:!0}).$promise.then(function(e){I.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"),h.removeAllListeners("userAutoanswerNotification:send"),T&&(E.cancel(T),T=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","ClientSideLoggingService"],angular.module("app.toolbar").controller("ToolbarController",e)}(),function(){"use strict";function e(a,i,t,s,e){var n={updateUserSettingById:function(e,n){if("number"==typeof e)return i.userSetting.update({id:e},n).$promise;throw new Error("User setting id is missing")}},o=!1,r=a.getCurrentUser(),l=r?r.userSetting:null,d=function(e){var n="user-setting:update:user-"+e;t.$on("local:user-updated",c),s.on(n,c)};function c(){return o?e(function(e){e(l)}):(o=!0,function(e){var n=a.getCurrentUser(),t=null;t="admin"===n.role&&"number"==typeof e?i.user.get({id:e,userSetting:!0}).$promise:i.user.whoami({userSetting:!0}).$promise;return t.then(function(e){return a.setCurrentUser(e),e.userSetting})}().then(function(e){l=e,t.$emit("local:user-setting-updated",l)}).finally(function(){o=!1}))}return r&&d(r.id),t.$on("local:user-login",d),t.$on("local:user-logout",function(e){var n="user-setting:update:user-"+e;s.removeListener(n,c),l=null}),n}e.$inject=["Auth","api","$rootScope","socket","$q"],angular.module("app.user-setting").service("UserSettingService",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","dialTimezone","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-client-side-logging/ms-client-side-logging-icon.html",'<md-icon ng-style="vm.styleColor" md-font-icon="{{ vm.styleIcon }}">\n  <md-tooltip class="client-side-logging-tooltip">\n    <span ng-bind-html="vm.tooltipHTML"></span>\n  </md-tooltip>\n</md-icon>'),e.put("app/core/directives/ms-client-side-logging/ms-client-side-logging.html",'<md-content layout="column">\n  <form name="clientSideLoggingSettingsForm">\n    <div flex layout="column" layout-align="stretch center">\n      <div ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-amber-500-bg p-10" layout="row" layout-align="start center">\n        <span class="no-margin font-size-14 line-height-30" translate="STAFF.CLIENT_LOGS_ALL_ENABLED_WARNING" flex></span>\n      </div>\n      <md-input-container>\n        <md-switch ng-model="vm.user.userSetting.clientSideLoggingEnabled" aria-label="Manage client side logging" ng-change="vm.onEnabledSwitchChange()">\n          {{ vm.user.userSetting.clientSideLoggingEnabled ? \'STAFF.CLIENT_LOGS_ENABLED\' : \'STAFF.CLIENT_LOGS_DISABLED\' | translate }}\n        </md-switch>\n      </md-input-container>\n      <h2 ng-if="vm.user.userSetting.clientSideLoggingEnabled" class="md-subhead mt-0">{{ vm.clientSideLoggingEnabledSince }}</h2>\n    </div>\n    <div layout="column" layout-align="stretch center">\n      <md-input-container ng-if="vm.user.userSetting.clientSideLoggingEnabled">\n        <label>{{ \'STAFF.CLIENT_LOGS_LOGLEVEL_SELECT\' | translate }}</label>\n        <md-select ng-if="vm.user.userSetting.clientSideLoggingEnabled" ng-model="vm.user.userSetting.clientSideLoggingLevel" placeholder="Debugging level" ng-change="vm.onLogLevelSelectionChange()" flex="30">\n          <md-option ng-value="loggingLevel" ng-repeat="loggingLevel in vm.availableClientSideLoggingLevels">\n            <md-icon ng-style="vm.computeStyleForLoggingLevel(loggingLevel)" md-font-icon="{{ loggingLevel === \'info\' ? \'icon-checkbox-blank-circle-outline\' : \'icon-checkbox-blank-circle\' }}"></md-icon>\n            {{ loggingLevel }}\n          </md-option>\n        </md-select>\n      </md-input-container>\n    </div>\n  </form>\n</md-content>'),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">\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"></angucomplete-alt>\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">\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">\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" 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" >\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" ng-change="ngChange()">\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.\' +  vm.label | 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="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="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" 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="md-hue-2" 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" 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" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" 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" 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" ui-view="navigation"></md-sidenav>\n\n    <div id="content-container" flex layout="column">\n      <md-content id="content" class="md-hue-2" 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" 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" 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="md-hue-2" 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" 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" 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">\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 || vm.adSsoEnabled" 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\n      <md-button ng-if="vm.adSsoEnabled" ng-click="vm.loginAD()" class="md-raised ad">\n        <div layout="row" layout-align="center center">\n          <span>\n            <md-icon md-font-icon="fas fa-ad" class="s16"></md-icon>\n            <span style="text-transform: none" translate="LOGIN.WITH_AD">Log in with Active Directory</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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" 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>\n      <div class="error-list">\n        <div ng-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.textButtonColor" label="{{\'CHAT.TEXT_BUTTON_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              <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\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="CHAT.LABELTEXT">labelText</label>\n                <input type="text" name="labelText" ng-model="vm.chatWebsite.labelText" md-maxlength="6" ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="appearanceForm[\'labelText\'].$error" ng-show="appearanceForm[\'labelText\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="CHAT.ERRORS.LABELTEXT_REQUIRED">labelText field is required</span>\n                  </div>\n                  <div ng-message="md-maxlength">\n                    <span translate="CHAT.ERRORS.LABELTEXT_MAX_LENGTH" translate-values=\'{max: 6}\'>labelText\n                      must have a maximum length equal to 6</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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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-primary" flow-btn flow-init="vm.ngFlowOptions" flow-files-submitted="$flow.upload()" flow-file-success="vm.importContactsUpdates($file, $message, $flow)" flow-file-added="vm.fileAdded($file)" aria-label="Select File" translate translate-attr-aria-label="CONTACTMANAGER.UPDATES_EXISTING_CONTACTS">\n        <md-tooltip md-direction="left" md-visible="tooltipVisible" md-autohide="false">\n          {{\'CONTACTMANAGER.UPDATE_EXISTING_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-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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        <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      <md-input-container class="md-block" flex-gt-sm="">\n        <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n          <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n            {{ $chip.phone }}\n          </md-chip-template>\n        </md-chips>\n      </md-input-container>\n      <div class="contact-detail-form-container personal_info md-background-bg md-whiteframe-1dp" flex="100">\n        <div class="pb-16" layout="column" layout-align="start center">\n          <div class="h2 secondary-text text-truncate" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n        </div>\n        <form flex name="additionalPhonesForm" novalidate>\n          <div ng-repeat="additionalPhone in vm.additionalItems">\n            <div layout="row" flex="1">\n              <md-input-container class="md-block" flex="50">\n                <label>{{$index}} - {{additionalPhone.phone}}</label>\n                <md-select ng-model="vm.additionalItemTypes[$index]" ng-disabled="!vm.crudPermissions.canEdit">\n                  <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                  <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-block" flex="50">\n                <input ng-model="additionalPhone.description" ng-cloak>\n              </md-input-container>\n            </div>\n          </div>\n        </form>\n      </div>\n\n      <md-input-container>\n        <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n        <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone"></ms-timezone>\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        </div>\n\n        <div ng-switch-when="select">\n          <label>{{customField.alias}}</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">{{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          <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 && additionalPhonesForm.$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                  </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">\n                    <md-input-container class="md-block" flex-gt-sm="">\n                      <label translate="CONTACTMANAGER.TIMEZONE">Timezone</label>\n                      <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-disabled="!vm.crudPermissions.canEdit"></ms-timezone>\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="CONTACTMANAGER.ADDITIONAL_PHONES">Additional Phones</label>\n                      <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                        <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                          {{ $chip.phone }}\n                        </md-chip-template>\n                      </md-chips>\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\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.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n              </div>\n              <form name="additionalPhonesForm" novalidate>\n                <div ng-repeat="additionalPhone in vm.additionalItems">\n                  <div layout="row">\n                    <md-button class="md-icon-button" ng-show="!$first" ng-click="vm.moveUp($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_UP\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-up"></md-icon>\n                    </md-button>\n                    <md-button class="md-icon-button md-primary" ng-show="!$last" ng-click="vm.moveDown($index)">\n                      <md-tooltip>{{\'CONTACTMANAGER.MOVE_DOWN\' | translate}}</md-tooltip>\n                      <md-icon md-font-icon="icon-arrow-down"></md-icon>\n                    </md-button>\n                  </div>\n                  <div layout="column" style="margin-bottom:5px;border-bottom: 1px solid gray;">\n                    <md-input-container class="md-block">\n                      <label>{{$index}} - {{additionalPhone.phone}}</label>\n                      <md-select ng-model="additionalPhone.ItemTypeId" ng-disabled="!vm.crudPermissions.canEdit">\n                        <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                        <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                      </md-select>\n                    </md-input-container>\n                    <md-input-container class="md-block">\n                      <input ng-model="additionalPhone.description" ng-cloak>\n                    </md-input-container>\n                  </div>\n                </div>\n              </form>\n            </div>\n\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\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/import/importUpdates.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.UPDATE_EXISTING_CONTACTS">Update Existing 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 class="form-title" translate="CONTACTMANAGER.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n            <div layout="row" ng-repeat="additionalPhone in vm.contactItemTypes" flex>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key}}" ng-model="vm.binding[additionalPhone.key]" placeholder="{{additionalPhone.key}}" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n              <md-input-container class="md-icon-float md-block" flex="50">\n                <md-select multiple="true" name="{{additionalPhone.key+\'_description\'}}" ng-model="vm.binding[additionalPhone.key+\'_description\']" placeholder="{{additionalPhone.key}} description" ng-required="additionalPhone.required">\n                  <md-option ng-value="field" ng-repeat="field in vm.fields">{{ field }}</md-option>\n                  </md-option>\n                </md-select>\n              </md-input-container>\n            </div>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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        <md-button ng-click="vm.setFilter($event)">\n          <md-tooltip md-direction="top"><span translate="DASHBOARDS.FILTERS"></span></md-tooltip>\n          <md-icon md-font-icon="icon-filter" ng-class=""></md-icon>\n        </md-button>\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/custom/filter/dialog.html",'<md-dialog class="cm-contact-dialog" aria-label="Set Filter">\n  <form name="FilterForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content style="padding:30px;">\n      <div layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-phone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_VOICE_QUEUES">Filter Voice Queues</span>\n          </div>\n          <md-select placeholder="Select one or more queues" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'voice\')" ng-model="vm.parent.voiceQueuesSelected" multiple aria-label="voiceQueues">\n            <md-option ng-value="voiceQueue.id" ng-repeat="voiceQueue in vm.parent.voiceQueues.rows">{{\n                            voiceQueue.name }}\n            </md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-hangouts"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_CHAT_WEBSITES">Filter Chat\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'chat\')" ng-model="vm.parent.chatWebsitesSelected" multiple aria-label="chatWebsite">\n            <md-option ng-value="chatWebsite.id" ng-repeat="chatWebsite in vm.parent.chatWebsites.rows">{{\n                            chatWebsite.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-message-text"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_SMS_ACCOUNTS">Filter Sms Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'sms\')" ng-model="vm.parent.smsAccountsSelected" multiple aria-label="smsAccount">\n            <md-option ng-value="smsAccount.id" ng-repeat="smsAccount in vm.parent.smsAccounts.rows">{{\n                            smsAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-deskphone"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_FAX_ACCOUNTS">Filter Fax Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'fax\')" ng-model="vm.parent.faxAccountsSelected" multiple aria-label="faxAccount">\n            <md-option ng-value="faxAccount.id" ng-repeat="faxAccount in vm.parent.faxAccounts.rows">{{\n                            faxAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-email"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_MAIL_ACCOUNTS">Filter Mail\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'mail\')" ng-model="vm.parent.mailAccountsSelected" multiple aria-label="mailAccount">\n            <md-option ng-value="mailAccount.id" ng-repeat="mailAccount in vm.parent.mailAccounts.rows">{{\n                            mailAccount.name }}</md-option>\n          </md-select>\n        </div>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-google-earth"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_OPENCHANNEL_ACCOUNTS">Filter Openchannel\n              Websites</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'openchannel\')" ng-model="vm.parent.openchannelAccountsSelected" multiple aria-label="openchannelAccount">\n            <md-option ng-value="openchannelAccount.id" ng-repeat="openchannelAccount in vm.parent.openchannelAccounts.rows">{{\n                            openchannelAccount.name }}</md-option>\n          </md-select>\n        </div>\n      </div>\n      <div class="margin-top-30" layout="row" flex layout-align="space-between" layout-fill>\n        <div layout="column">\n          <div>\n            <i class="icon s16 icon-whatsapp"></i>\n            <span class="font-size-12" translate="DASHBOARDS.FILTER_WHATSAPP_ACCOUNTS">Filter Whatsapp\n              Accounts</span>\n          </div>\n          <md-select placeholder="Select one or more interaction" class="font-size-12 no-margin w-200" md-on-close="vm.parent.onChangeFilter(\'whatsapp\')" ng-model="vm.parent.whatsappAccountsSelected" multiple aria-label="whatsappAccount">\n            <md-option ng-value="whatsappAccount.id" ng-repeat="whatsappAccount in vm.parent.whatsappAccounts.rows">\n              {{whatsappAccount.name }}</md-option>\n          </md-select>\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.confirm()" class="send-button md-accent md-raised" aria-label="CONFIRM" translate="DASHBOARDS.CONFIRM" translate-attr-aria-label="DASHBOARDS.CONFIRM">\n          CONFIRM\n        </md-button>\n      </div>\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),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  \x3c!-- home --\x3e\n  <div layout="row" class="agent-content overflow-hidden" ng-if="vm.isActiveTab(0)" 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  \x3c!-- other tabs --\x3e\n  <div ng-if="tab.id !== 0 && vm.isActiveTab(tab.id)" ng-repeat="(key, tab) in vm.tabs | orderByDate " ng-switch="tab.type" flex layout="column">\n    <div ng-switch-when="contact" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" flex layout="column" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div flex layout="column" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div class="agent-content" ng-if="vm.isActiveTab(tab.id)" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="interaction-app" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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" ng-class="{{tab.type}}" flex layout="column">\n      <div id="iframe" flex layout="column" ng-if="vm.isActiveTab(tab.id)" class="agent-content" 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 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 ng-if="(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum}).length>0">\n                      <span ng-style="{\'color\':(vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].color} ">\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].description }} -\n                        {{ (vm.additionalItems | filter : {\'phone\':call.routeId ? call.destcalleridnum : call.calleridnum})[0].type }}\n                      </span>\n                    </div>\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                <div layout-gt-sm="row" class="layout-gt-sm-row">\n                  <md-input-container class="md-block" flex-gt-sm="">\n                    <md-chips ng-model="vm.additionalItems" md-transform-chip="vm.newPhone($chip)" placeholder="Phone numbers">\n                      <md-chip-template custom-chip alt="{{$chip.type}}" title="{{$chip.type}}">\n                        {{ $chip.phone }}\n                      </md-chip-template>\n                    </md-chips>\n                  </md-input-container>\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.ADDITIONAL_PHONES">ADDITIONAL_PHONES</div>\n                    </div>\n                    <form name="additionalPhonesForm" novalidate>\n                      <div ng-repeat="additionalPhone in vm.additionalItems" layout="column">\n                        <md-input-container class="md-block">\n                          <label>{{$index}} - {{additionalPhone.phone}}</label>\n                          <md-select ng-model="vm.additionalItemTypes[$index]">\n                            <md-option ng-repeat="value in vm.contactItemTypes" ng-value="value.id">{{value.name}}</md-option>\n                            <md-option ng-value="null"><em translate="CONTACTMANAGER.NONE">None</em></md-option>\n                          </md-select>\n                        </md-input-container>\n                        <md-input-container class="md-block">\n                          <input ng-model="additionalPhone.description" ng-cloak>\n                        </md-input-container>\n                      </div>\n                    </form>\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                  <md-input-container class="md-block" flex-gt-sm="">\n                    <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n                    <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\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>\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" ng-change="vm.recalcTZTime()" 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" ng-change="vm.recalcTZTime()" 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 layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledAt}}">\n            </md-input-container>\n          </div>\n        </div>\n        <div ng-if="(!vm.dialer || (vm.dialer && vm.recallme && vm.user.selectRecallMeCampaign)) && vm.queueCampaigns.rows.length > 0" layout="row" layout-align="start center">\n          <md-input-container class="md-block" flex>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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">\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>\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="agent-general-home-navbar md-primary-bg width-50">\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 class="agent-general-home-sections" layout="column" flex>\n  <div layout="column" flex>\n    <div ng-switch="vm_home.sidebar" style="overflow-y: auto; overflow-x: hidden" flex>\n      <div ng-switch-when="agentPresence" class="home-agent-presence">\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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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" class="home-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 class="home-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" ng-mouseleave="vm.resetTooltipPosition($event)" ng-mouseenter="vm.adjustTooltipPosition($event)">\n              <span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span>\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"><span class="text-truncate font-size-12 subject-text">{{ interaction.subject }}</span></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 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-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>\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 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>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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\n      <md-input-container class="md-block">\n        <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n          <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n        </md-switch>\n        \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n      </md-input-container>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\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" ng-required="true">\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\n      </div>\n\n      <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n        <md-input-container class="md-block">\n          <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n            <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders">{{provider.name}}</md-option>\n          </md-select>\n        </md-input-container>\n      </div>\n\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        <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 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">\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="modernAuthentication">{{ \'INTEGRATIONS.MODERN_AUTHENTICATION\' | 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="modernAuthentication ">\n                  <md-icon md-colors="{color: {{dynamics365Account.modernAuthentication ? \'\\\'green\\\'\' : \'\\\'grey\\\'\'}}}" md-font-icon="{{dynamics365Account.modernAuthentication ? \'icon-check\' : \'icon-close\'}}"></md-icon>\n                </td>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.dynamics365Account.modernAuthentication">\n                  <span translate="INTEGRATIONS.MODERN_AUTHENTICATION">Modern Authentication</span>\n                </md-switch>\n                \x3c!-- <div class="hint"><span translate="INTEGRATIONS.HELP.MODERN_AUTHENTICATION"></span></div> --\x3e\n              </md-input-container>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == true">\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.CLOUD_PROVIDER">Cloud Provider</label>\n                  <md-select ng-model="vm.dynamics365Account.CloudProviderId" placeholder="Cloud Provider connection" ng-required="true">\n                    <md-option value="{{provider.id}}" ng-repeat="provider in vm.cloudProviders.rows">{{provider.name}}</md-option>\n                  </md-select>\n                </md-input-container>\n              </div>\n\n              <div ng-if="vm.dynamics365Account.modernAuthentication == false">\n\n                <md-input-container class="md-block">\n                  <label translate="INTEGRATIONS.USERNAME">Username</label>\n                  \x3c!-- <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit"> --\x3e\n                  <input type="text" name="username" ng-model="vm.dynamics365Account.username" ng-required="vm.dynamics365Account.modernAuthentication == false" ng-disabled="!vm.crudPermissions.canEdit">\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\n\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" ng-required="vm.dynamics365Account.modernAuthentication == false">\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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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="vm.dynamics365Account.modernAuthentication == false" 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              </div>\n\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\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                  <md-tab>\n                    <md-tab-label>\n                      <span translate="INTEGRATIONS.ADVANCED">ADVANCED</span>\n                    </md-tab-label>\n                    <md-tab-body>\n                      <div class="dynamics365Account-detail-form-container general md-background-bg">\n                        <div class="pb-16" layout="row" layout-align="start center">\n                          <div class="h2 secondary-text" translate="INTEGRATIONS.ADVANCED">ADVANCED</div>\n                        </div>\n                        <form name="vm_cc.advancedForm" novalidate>\n                          <md-input-container class="md-block">\n                            <label translate="INTEGRATIONS.MODULECREATE">Module Create</label>\n                            <md-select name="type" ng-model="vm_cc.dynamics365Configuration.moduleCreate" required>\n                              <md-option ng-value="\'contact\'">{{\'INTEGRATIONS.DYNAMIC365CONTACT\' | translate}}</md-option>\n                              <md-option ng-value="\'nothing\'">{{\'INTEGRATIONS.DYNAMIC365NOTHING\' | translate}}</md-option>\n                            </md-select>\n                            <div ng-messages="vm_cc.advancedForm[\'moduleCreate\'].$error" ng-show="vm_cc.advancedForm[\'moduleCreate\'].$touched" role="alert">\n                              <div ng-message="required">\n                                <span translate="INTEGRATIONS.ERRORS.MODULECREATE_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.ADDITIONALSEARCHCONTACT">Additional search contact</label>\n                            <input type="" name="additionalSearchContact" ng-model="vm_cc.dynamics365Configuration.additionalSearchContact" autofocus>\n                          </md-input-container>\n                          <div layout="row" layout-align="end center">\n                            <md-button type="submit" ng-click="vm_cc.saveDynamics365Configuration()" class="send-button md-accent md-raised" ng-disabled="vm_cc.advancedForm.$invalid || vm_cc.advancedForm.$pristine" aria-label="SAVE" translate="INTEGRATIONS.SAVE" translate-attr-aria-label="INTEGRATIONS.SAVE">\n                              SAVE\n                            </md-button>\n                          </div>\n                        </form>\n                      </div>\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.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          </div>\n\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\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 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">\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.newMailAccount ? \'MAIL.NEW_MAILACCOUNT\' : \'MAIL.EDIT_MAILACCOUNT\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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      <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="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n          <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n        </md-select>\n        <div ng-messages="mailAccountForm[\'provider\'].$error" ng-show="mailAccountForm[\'provider\'].$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      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\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            <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 class="md-block mb-0">\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            <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        </div>\n      </div>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'">\n        <div layout="row">\n          <md-input-container class="md-block mr-20 mb-0" flex>\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            <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 class="md-block mb-0">\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            <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        </div>\n      </div>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'custom\'" class="md-block pt-0">\n        <md-switch ng-model="vm.mailAccount.authentication" aria-label="Authentication"><span translate="MAIL.AUTHENTICATION">Authentication</span></md-switch>\n      </md-input-container>\n\n      <md-input-container ng-if="vm.newMailAccount && vm.mailAccount.provider === \'outlook365\'" class="md-block">\n        <md-switch ng-model="vm.mailAccount.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n      </md-input-container>\n\n      <div ng-if="vm.newMailAccount && vm.mailAccount.authentication && vm.mailAccount.provider">\n        <md-input-container class="md-block">\n          <label translate="MAIL.USERNAME">Username</label>\n          <input type="text" name="username" ng-model="vm.mailAccount.username" ng-required="true">\n          <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n          <div ng-messages="mailAccountForm[\'username\'].$error" ng-show="mailAccountForm[\'username\'].$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 ng-if="vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n          <md-select name="cloudProvider" ng-model="vm.mailAccount.CloudProviderId" required>\n            <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n          </md-select>\n          <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n          <div ng-messages="mailAccountForm[\'cloudProvider\'].$error" ng-show="mailAccountForm[\'cloudProvider\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="!vm.mailAccount.modernAuthentication" class="md-block">\n          <label translate="MAIL.PASSWORD">Password</label>\n          <input type="password" name="password" ng-model="vm.mailAccount.password" translate-attr-placeholder="MAIL.PASSWORD" required>\n          <div class="hint"><span translate="MAIL.HELP.PASSWORD"></span></div>\n          <div ng-messages="mailAccountForm[\'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      </div>\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        <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 MAIL ACCOUNT\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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  <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.goToRealtime()" 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.addAgent(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) || (credentialsForm.$invalid) || (templateForm.$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\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.SERVICE">Service</label>\n                <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" class="mb-20" required>\n                  <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n                </md-select>\n                <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</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                <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                <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            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider !== \'custom\'">\n        <md-tab-label>\n          <span translate="MAIL.AUTHENTICATION">Authentication</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="mailAccount-detail-form-container authentication 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.CREDENTIALS">Credentials</div>\n            </div>\n            <form name="credentialsForm" novalidate>\n              <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n                <md-switch ng-model="vm.mailAccount.Imap.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n              </md-input-container>\n              <md-input-container class="md-block">\n                <label translate="MAIL.USERNAME">Username</label>\n                <input type="text" name="username" ng-model="vm.mailAccount.Imap.user" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                <div class="hint"><span translate="MAIL.HELP.USERNAME"></span></div>\n                <div ng-messages="credentialsForm[\'username\'].$error" ng-show="credentialsForm[\'username\'].$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 ng-if="vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n                <md-select name="cloudProvider" ng-model="vm.mailAccount.Imap.CloudProviderId" required>\n                  <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n                </md-select>\n                <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n                <div ng-messages="credentialsForm[\'cloudProvider\'].$error" ng-show="credentialsForm[\'cloudProvider\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                  </div>\n                </div>\n              </md-input-container>\n              <md-input-container ng-if="!vm.mailAccount.Imap.modernAuthentication" class="md-block">\n                <label translate="MAIL.PASSWORD">Password</label>\n                <input type="password" name="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="credentialsForm[\'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            </form>\n          </div>\n\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                <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 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                <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">Connection Timeout</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                <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">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout 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">Authorization Timeout</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                <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">Authorizazion Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorizazion Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\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.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                <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 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                <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 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" 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                <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">\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              <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                <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">Connection Timeout</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                <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">Connection Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.CONNTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Connection Timeout 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">Authorization Timeout</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                <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">Authorization Timeout field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MAIL.ERRORS.AUTHTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Authorization Timeout must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                </div>\n              </md-input-container>\n            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab ng-if="vm.mailAccount.provider === \'custom\'">\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.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 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 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 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" 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">\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            </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 template 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.TEMPLATE">TEMPLATE</div>\n            </div>\n            <form name="templateForm" novalidate>\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="templateForm[\'fontFamily\'].$error" ng-show="templateForm[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="templateForm[\'fontSize\'].$error" ng-show="templateForm[\'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            </form>\n          </div>\n\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\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\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" 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" 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</div>'),e.put("app/main/apps/mail/views/mailAccounts/mailAccounts.html",'<div id="mailAccounts" class="page-layout simple left-sidenav inner-sidenav">\n\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-email" class="s24"></md-icon>\n        </span>\n        <span class="logo-text" translate="MAIL.MAILACCOUNTS">MailAccounts</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="MAIL.SEARCH_FOR_ANYONE">\n        </md-input-container>\n      </div>\n    </div>\n  </div>\n\n  <div ng-show="vm.selectedMailAccounts.length > 0" class="selected-bar header 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\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n    <div class="main scrollable">\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 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="provider">{{ \'MAIL.SERVICE\' | 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" ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(mailAccount, ev) : vm.createOrEditMailAccount($event, mailAccount)">\n                <td md-cell class="id">{{mailAccount.id}}</td>\n                <td md-cell class="name">{{mailAccount.name}}</td>\n                <td md-cell class="provider">{{ mailAccount.provider ? (mailAccount.provider | startcase) : (\'MAIL.CUSTOM\' | translate) }}</td>\n                <td md-cell class="key">{{mailAccount.key}}</td>\n                <td md-cell class="email">{{mailAccount.email}}</td>\n                <td 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 md-cell class="description ">{{mailAccount.description}}</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                    <md-menu-content width="3">\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(mailAccount, $event)" translate="MAIL.EDIT_MAILACCOUNT">\n                          Edit Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.verifySMTP(mailAccount, $event)" translate="MAIL.VERIFYSMTP_MAILACCOUNT">\n                          Verify SMTP\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToInteractions(mailAccount, $event)" translate="MAIL.INTERACTIONS_MAILACCOUNT">\n                          Go To Interactions\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.goToRealtime()" translate="MAIL.GOTOREALTIME_MAILACCOUNT">\n                          Go To Realtime\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item>\n                        <md-button ng-click="vm.addAgent(mailAccount, $event)" translate="MAIL.AGENTADD_MAILACCOUNT">\n                          Add Agent To Email Account\n                        </md-button>\n                      </md-menu-item>\n                      <md-menu-item ng-if="vm.crudPermissions.canDelete">\n                        <md-button ng-click="vm.deleteconfirm(mailAccount, $event)" translate="MAIL.DELETE_MAILACCOUNT">\n                          Delete Email 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: \'{{\'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    </div>\n  </div>\n\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\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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/hopperdate/hopperdate.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" ng-change="vm.recalcTZTime()" mdp-format="YYYY-MM-DD" ng-model="vm.dateTime">\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" ng-change="vm.recalcTZTime()" mdp-format="HH:mm:ss" mdp-auto-switch="true" ng-model="vm.dateTime">\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\n        </md-content>\n      </div>\n      <md-input-container class="md-block">\n        <div layout="row">\n          <div flex class="md-block">\n            <md-input-container class="md-block" flex-gt-sm="">\n              <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n              <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" ng-change="vm.recalcTZTime()" autofocus>\n            </md-input-container>\n          </div>\n          <div flex class="md-block">\n            <md-input-container class="md-block">\n              <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n              <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n            </md-input-container>\n          </div>\n        </div>\n      </md-input-container>\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\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/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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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.dateTime" ng-change="vm.recalcTZTime()">\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.dateTime" ng-change="vm.recalcTZTime()">\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      <div layout="row">\n        <div flex class="md-block">\n          <md-input-container class="md-block" flex-gt-sm="">\n            <label translate="DASHBOARDS.DIAL_TIMEZONE">Dial Timezone</label>\n            <ms-timezone name="dialTimezone" ng-model="vm.contact.dialTimezone" autofocus>\n          </md-input-container>\n        </div>\n        <div flex class="md-block">\n          <md-input-container class="md-block">\n            <label translate="DASHBOARDS.SYSTEM_TIME">System time</label>\n            <input type="text" readonly value="{{vm.hopper.scheduledat}}">\n          </md-input-container>\n        </div>\n      </div>\n\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) || (additionalphonesForm.$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          <div class="queueCampaign-detail-form-container additionalphones 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.ADDITIONALPHONES">ADDITIONALPHONES</div>\n            </div>\n            <form name="additionalphonesForm" novalidate>\n              <md-input-container class="md-block">\n                <label translate="MOTIONDIALER.CALLADDITIONALPHONEAFTERMIN">CallAdditionalPhoneAfterMin</label>\n                <input type="number" name="callAdditionalPhoneAfterMin" ng-model="vm.queueCampaign.callAdditionalPhoneAfterMin" min="1" max="99999" value="3" ng-required="true" autofocus ng-disabled="!vm.crudPermissions.canEdit">\n\n                <div ng-messages="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$error" ng-show="additionalphonesForm[\'callAdditionalPhoneAfterMin\'].$touched" role="alert">\n                  <div ng-message="required">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_REQUIRED">CallAdditionalPhoneAfterMin field is required</span>\n                  </div>\n                  <div ng-message="min">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_GREATER_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin must be a valid greater or equal than</span> <span>1</span>\n                  </div>\n                  <div ng-message="max">\n                    <span translate="MOTIONDIALER.ERRORS.CALLADDITIONALPHONEAFTERMIN_MUST_BE_LESS_THAN_OR_EQUAL_TO">CallAdditionalPhoneAfterMin 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              <md-input-container ng-if="vm.queueCampaign.dialMethod == \'preview\'" class="md-block">\n                <md-switch ng-model="vm.queueCampaign.dialPreviewRecallmeReminder" aria-label="Preview_Recall_Me_Reminder" ng-disabled="!vm.crudPermissions.canEdit"><span translate="MOTIONDIALER.PREVIEW_RECALL_ME_REMINDER">Preview_Recall_Me_Reminder</span></md-switch>\n                <div class="hint"><span translate="MOTIONDIALER.HELP.PREVIEW_RECALL_ME_REMINDER"></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 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">\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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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 quick-filter-container">\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    <md-select ng-model="vm.query.globalQueueFilter" multiple class="md-caption margin-left-10 mw-150" placeholder="{{ \'DASHBOARDS.SELECT_QUEUE\' | translate }}" md-on-open="vm.getQueuesByChannel()" md-on-close="vm.getAgents()">\n      <md-button ng-click="vm.selectAll()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.SELECT_ALL\' | translate}}</md-button>\n      <md-option ng-value="queue.name" ng-repeat="queue in vm.queues.rows">{{\n        queue.name }}</md-option>\n      <md-button ng-click="vm.clearSelection()" md-no-ink class="md-primary" layout-fill>\n        {{\'DASHBOARDS.CLEAR\' | translate}}</md-button>\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            <span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">{{ 'VOICE.PAUSE' | translate | uppercase }} (</span>{{\n              ['pause', '*pause'].includes(agent.globalStatus) ? \n                ((agent.globalStatusDisplayValue === 'DEFAULT PAUSE' ? ('VOICE.DEFAULT_PAUSE' | translate) : agent.globalStatusDisplayValue) | uppercase) : \n                ('VOICE.' + (agent.globalStatusDisplayValue | uppercase) | translate | uppercase) }}<span ng-if=\"['pause', '*pause'].includes(agent.globalStatus)\">)</span>\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=\"['pause', '*pause'].includes(agent.globalStatus)\" 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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\">{{\n              agent.queue }}</span>\n            <span ng-if=\"agent.destconnectedlinenum\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-fg'}[agent.voiceStatus]\" privacy ng-cloak>{{\n              agent.destconnectedlinenum }}</span>\n            <span ng-if=\"agent.routealias\" class=\"padding-5\" ng-class=\"{'idle':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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':'dark-lime-fg','maxcapacity':'dark-red-fg','working':'iron-fg','pause':'light-brown-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=\"['pause', '*pause'].includes(agent.globalStatus)\">\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.rows.length}}\" 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.CLOUD_PROVIDERS">Cloud Providers</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 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">\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 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.services[cloudProvider.service] }}</td>\n\n                <td md-cell class="actions">\n                  <md-menu>\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                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.authenticateToMicrosoftIdentityPlatform(cloudProvider)" translate="SETTINGS.AUTHENTICATE">\n                          Authenticate\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item ng-if="cloudProvider.service === \'MicrosoftAzure\'">\n                        <md-button ng-click="vm.updateClientSecret(cloudProvider, $event)" translate="SETTINGS.UPDATE_CLIENT_SECRET">\n                          Update Client Secret\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.editdialog(cloudProvider, $event)" translate="SETTINGS.EDIT_CLOUDPROVIDER">\n                          Edit CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\n                      <md-menu-item>\n                        <md-button ng-click="vm.deleteconfirm(cloudProvider, $event)" translate="SETTINGS.DELETE_CLOUDPROVIDER">\n                          Delete CloudProvider\n                        </md-button>\n                      </md-menu-item>\n\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: \'{{\'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.newCloudProvider ? \'SETTINGS.NEW_CLOUDPROVIDER\' : \'SETTINGS.EDIT_CLOUDPROVIDER\') | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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      <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-if="vm.license.ai" ng-value="\'AmazonAWS\'">AmazonAWS</md-option>\n          <md-option ng-value="\'MicrosoftAzure\'">Microsoft Azure</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\n      <md-input-container ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'" class="md-block">\n        <label translate="SETTINGS.TYPE">Type</label>\n        <md-select name="service" ng-model="vm.cloudProvider.type" required ng-disabled="!vm.newCloudProvider">\n          <md-option ng-value="\'Outlook365\'">Outlook365</md-option>\n          <md-option ng-value="\'Dynamics365\'">Dynamics365</md-option>\n        </md-select>\n        <div ng-messages="cloudProviderForm[\'type\'].$error" ng-show="cloudProviderForm[\'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\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 ng-if="vm.cloudProvider.service == \'MicrosoftAzure\'">\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.APPLICATION_ID">Application Id</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.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.TENANT_ID">Tenant Id</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.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.newCloudProvider" class="md-block">\n          <label translate="SETTINGS.CLIENT_SECRET">Client Secret</label>\n          <input type="password" name="data3" ng-model="vm.cloudProvider.data3" ng-required="true">\n          <div class="hint"><span translate="SETTINGS.HELP.CLIENT_SECRET"></span></div>\n\n          <div ng-messages="cloudProviderForm[\'data3\'].$error" ng-show="cloudProviderForm[\'data3\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container class="md-block">\n          <label translate="SETTINGS.REDIRECT_URI">Redirect Uri</label>\n          <input type="url" name="data4" ng-model="vm.cloudProvider.data4" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data4\'].$error" ng-show="cloudProviderForm[\'data4\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n\n        <md-input-container ng-if="vm.cloudProvider.type == \'Dynamics365\'" class="md-block">\n          <label translate="SETTINGS.REMOTE_URI">Remote Uri</label>\n          <input type="url" name="data7" ng-model="vm.cloudProvider.data7" ng-required="true">\n\n          <div ng-messages="cloudProviderForm[\'data7\'].$error" ng-show="cloudProviderForm[\'data7\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="SETTINGS.ERRORS.FIELD_REQUIRED"></span>\n            </div>\n            <div ng-message="url">\n              <span translate="SETTINGS.ERRORS.WRONG_FORMAT"></span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n\n\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-label="alert error" class="s16"></md-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/cloudProviders/updateSecret/updateSecret.html",'<md-dialog class="cloudProvider-dialog" aria-label="update client secret">\n  <form name="updateSecretForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ \'SETTINGS.UPDATE_CLIENT_SECRET\' | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon 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      <md-input-container class="md-block" ng-if="vm.currentUser.id == vm.user.id">\n        <label translate="SETTINGS.CLIENT_SECRET">Current Client Secret</label>\n        <input type="text" name="currentSecret" ng-model="vm.cloudProvider.data3" disabled>\n      </md-input-container>\n      <md-input-container class="md-block">\n        <label translate="SETTINGS.NEW_CLIENT_SECRET">New Client Secret</label>\n        <input type="password" name="secret" ng-model="vm.newSecret" required>\n        <div ng-messages="updateSecretForm.secret.$error" role="alert">\n          <div ng-message="required">\n            <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">New Client Secret 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">\n      <div layout="row" layout-align="start center">\n        <md-button type="submit" ng-click="vm.saveSecret()" class="send-button md-accent md-raised" ng-disabled="updateSecretForm.$invalid || updateSecretForm.$pristine" aria-label="SAVE" translate="SETTINGS.SAVE" translate-attr-aria-label="SETTINGS.SAVE">\n          SAVE\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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">\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        </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            <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          <md-input-container class="md-block">\n            <label translate="SETTINGS.PREVIEW_RECALLME_REMINDER_INTERVAL">Preview_Recallme_Reminder_Interval</label>\n            <input type="number" name="previewRecallmeReminderInterval" ng-model="vm.general.previewRecallmeReminderInterval" min="1">\n            <div class="hint"><span translate="SETTINGS.HELP.PREVIEW_RECALLME_REMINDER_INTERVAL"></span></div>\n            <div ng-messages="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$error" ng-show="agentOmniDesktopInterfaceForm[\'previewRecallmeReminderInterval\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_REQUIRED">Preview_Recallme_Reminder_Interval field is required</span>\n              </div>\n              <div ng-message="min">\n                <span translate="SETTINGS.ERRORS.PREVIEW_RECALLME_REMINDER_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO">Preview_Recallme_Reminder_Interval 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="SETTINGS.LIMIT_TABS">limitTabs</label>\n            <input type="number" name="limitTabs" ng-model="vm.general.limitTabs" min="0" value="20">\n            <div class="hint"><span translate="SETTINGS.HELP.LIMIT_TABS"></span></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          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.disabledCookie" aria-label="Disabled_Cookie"><span translate="SETTINGS.DISABLED_COOKIE">Disabled_Cookie</span></md-switch>\n          </md-input-container>\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          <md-input-container class="md-block">\n            <md-switch ng-model="vm.general.adSsoEnabled" aria-label="AD_SSO_enabled"><span translate="SETTINGS.AD_SSO_ENABLED">AD_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">\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                <md-button type="submit" ng-if="vm.isAdmin" ng-click="vm.downloadLogFile()" class="md-button md-fab md-accent">\n                  <md-tooltip><span translate="SETTINGS.DOWNLOAD_LICENSE_LOG_FILE">Download license log file</span></md-tooltip>\n                  <md-icon md-font-icon="icon-download"></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 ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" id="licenseUuid" class="hover-token text-italic text-bold">{{vm.license.uuid}}</span>\n            \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n            <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>\n            <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n          </md-button>--\x3e\n          </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 id="licenseMachineUuid" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});" class="hover-token text-italic text-bold">{{vm.license.machineUuid}}</span>\n              \x3c!--<md-button class="md-button md-fab md-accent" ngclipboard data-clipboard-target="#licenseMachineUuid" ngclipboard-success="vm.alert({title: \'clipboard\',  msg: \'Token copied!\' });" ngclipboard-error="vm.alert({title: \'error\', msg: \'copy to clipboard failed\'});">\n                <md-tooltip><span translate="SETTINGS.COPY_LICENSE">Copy</span></md-tooltip>                \n                <md-icon md-font-icon="icon-clipboard-text"></md-icon>\n              </md-button>--\x3e\n            </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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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/smtps.html",'<div id="smtps" class="page-layout simple left-sidenav inner-sidenav">\n\n  <div class="header md-accent-bg" layout="row" layout-align="space-between center">\n\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\n    <div>\n      <md-button type="submit" ng-click="vm.verifySmtp()" ng-disabled="!vm.mailAccount.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\n  <div class="content" md-background-bg layout="row" layout-align="start start">\n\n    <div class="main scrollable">\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\n          <md-input-container class="md-block">\n            <label translate="SETTINGS.ACCOUNTNAME">Name</label>\n            <input type="text" name="name" ng-model="vm.mailAccount.name" ng-required="true" autofocus>\n            <div ng-messages="generalForm[\'name\'].$error" ng-show="generalForm[\'name\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Name field required</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.mailAccount.description">\n          </md-input-container>\n\n          <md-input-container class="md-block mt-0">\n            <label translate="SETTINGS.EMAILADDRESS">Email Address</label>\n            <input type="email" name="email" ng-model="vm.mailAccount.email" ng-required="true">\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.FIELD_REQUIRED">Email Address field required</span>\n              </div>\n              <div ng-message="email">\n                <span translate="SETTINGS.ERRORS.WRONG_FORMAT">Email Address must be a valid e-mail address</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <md-input-container class="md-block mt-30">\n            <label translate="SETTINGS.SMTP_SERVICE">Service</label>\n            <md-select name="provider" ng-model="vm.mailAccount.provider" ng-change="vm.onProviderChange()" required>\n              <md-option ng-value="provider.value" ng-repeat="provider in vm.providers">{{ provider.name }}</md-option>\n            </md-select>\n            <div ng-messages="generalForm[\'provider\'].$error" ng-show="generalForm[\'provider\'].$touched" role="alert">\n              <div ng-message="required">\n                <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Service field required</span>\n              </div>\n            </div>\n          </md-input-container>\n\n          <div ng-if="vm.mailAccount.provider === \'custom\'">\n            <md-input-container class="md-block mt-30">\n              <label translate="SETTINGS.SMTP_HOST">Host</label>\n              <input type="text" name="host" ng-model="vm.mailAccount.Smtp.host" ng-required="true">\n              <div ng-messages="generalForm[\'host\'].$error" ng-show="generalForm[\'host\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Host field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_PORT">Port</label>\n              <input type="number" name="port" ng-model="vm.mailAccount.Smtp.port" value="465" ng-required="true">\n              <div ng-messages="generalForm[\'port\'].$error" ng-show="generalForm[\'port\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Port field required</span>\n                </div>\n              </div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.secure" aria-label="SMTP Secure"><span translate="SETTINGS.SMTP_SECURE">Secure</span></md-switch>\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_SECURE"></span></div>\n            </md-input-container>\n            <md-input-container class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.authentication" aria-label="SMTP Authentication"><span translate="SETTINGS.SMTP_AUTHENTICATION">Authentication</span></md-switch>\n            </md-input-container>\n          </div>\n\n          <div ng-if="vm.mailAccount.Smtp.authentication || (vm.mailAccount.provider && vm.mailAccount.provider !== \'custom\')">\n            <md-input-container ng-if="vm.mailAccount.provider === \'outlook365\'" class="md-block">\n              <md-switch ng-model="vm.mailAccount.Smtp.modernAuthentication" aria-label="Modern Authentication" class="no-margin-bottom"><span translate="MAIL.MODERN_AUTHENTICATION">Modern Authentication</span></md-switch>\n            </md-input-container>\n\n            <md-input-container class="md-block">\n              <label translate="SETTINGS.SMTP_USERNAME">Username</label>\n              <input type="text" name="username" ng-model="vm.mailAccount.Smtp.user" ng-required="true">\n              <div class="hint"><span translate="SETTINGS.HELP.SMTP_USERNAME"></span></div>\n              <div ng-messages="generalForm[\'username\'].$error" ng-show="generalForm[\'username\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Username field required</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="MAIL.CLOUD_PROVIDER">Cloud Provider</label>\n              <md-select name="cloudProvider" ng-model="vm.mailAccount.Smtp.CloudProviderId" required>\n                <md-option ng-value="cloudProvider.id" ng-repeat="cloudProvider in vm.cloudProviders.rows">{{ cloudProvider.name }}</md-option>\n              </md-select>\n              <div class="hint"><span translate="MAIL.HELP.CLOUD_PROVIDER"></span></div>\n              <div ng-messages="generalForm[\'cloudProvider\'].$error" ng-show="generalForm[\'cloudProvider\'].$touched" role="alert">\n                <div ng-message="required">\n                  <span translate="MAIL.ERRORS.FIELD_REQUIRED">Mandatory field</span>\n                </div>\n              </div>\n            </md-input-container>\n\n            <md-input-container ng-if="!vm.mailAccount.Smtp.modernAuthentication" class="md-block">\n              <label translate="SETTINGS.SMTP_PASSWORD">Password</label>\n              <input type="password" name="password" ng-model="vm.mailAccount.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[\'password\'].$error" role="alert">\n                <div ng-message="required">\n                  <span translate="SETTINGS.ERRORS.FIELD_REQUIRED">Password field required</span>\n                </div>\n              </div>\n            </md-input-container>\n          </div>\n        </form>\n      </div>\n    </div>\n\n  </div>\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>\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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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  \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-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    <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 md-accent-bg" layout="row" layout-align="start center">\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    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-agents-count">\n          <span>{{vm.selectedAgents.length}}</span>\n          <span translate="STAFF.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="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      <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    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\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>{{ \'STAFF.CLIENT_LOGS\' | 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                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(agent, ev) : vm.createOrEditAgent($event, agent)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="agent"></ms-client-side-logging-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="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="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(agent, $event    )" translate="STAFF.EDIT_AGENT">\n                          Edit Agent\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item>\n                        <md-button ng-click="vm.teamadddialog(agent, $event    )" translate="STAFF.TEAMADD_AGENT">\n                          teamadd Agent\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(agent, $event    )" translate="STAFF.DELETE_AGENT">\n                          Delete Agent\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: \'{{\'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      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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      <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      <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 class="md-block" ng-if="vm.agent.userSetting">\n        <ms-client-side-logging user="vm.agent"></ms-client-side-logging>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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      <div layout="row" layout-align="start center">\n        <div class="agent-image" hide-xs>\n          <img ng-src="assets/images/business/agents.jpg">\n        </div>\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    <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    <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) || (autoAnswerForm.$invalid)" translate="STAFF.SAVE" translate-attr-aria-label="STAFF.SAVE">\n        SAVE\n      </md-button>\n    </div>\n  </div>\n  \x3c!-- / HEADER --\x3e\n\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                <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                <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                <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                <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                <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                <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                <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            </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                <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                <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            </form>\n          </div>\n          <div class="agent-detail-form-container authentication 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.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.agent.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></span></div>\n              </md-input-container>\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              <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                <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                <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                <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                    <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          </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                <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                <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                <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                <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                <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            </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                <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                <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                <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                <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                <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                <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            </form>\n          </div>\n          <div class="agent-detail-form-container auto_answer 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.AUTO_ANSWER">AUTO_ANSWER</div>\n            </div>\n            <form name="autoAnswerForm" novalidate>\n              <md-input-container ng-if="vm.license.chat" class="md-block">\n                <md-switch ng-model="vm.agent.chatAutoanswer" aria-label="chatAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.CHAT_AUTOANSWER">ChatAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.chatAutoanswer" class="md-block">\n                  <label translate="STAFF.CHAT_AUTOANSWERDELAY">ChatAutoAnswerDelay</label>\n                  <input type="number" name="chatAutoAnswerDelay" ng-model="vm.agent.chatAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.mail" class="md-block">\n                <md-switch ng-model="vm.agent.emailAutoanswer" aria-label="emailAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.EMAIL_AUTOANSWER">EmailAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.emailAutoanswer" class="md-block">\n                  <label translate="STAFF.EMAIL_AUTOANSWERDELAY">EmailAutoAnswerDelay</label>\n                  <input type="number" name="emailAutoAnswerDelay" ng-model="vm.agent.emailAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.messaging" class="md-block">\n                <md-switch ng-model="vm.agent.smsAutoanswer" aria-label="smsAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.SMS_AUTOANSWER">SmsAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.smsAutoanswer" class="md-block">\n                  <label translate="STAFF.SMS_AUTOANSWERDELAY">SmsAutoAnswerDelay</label>\n                  <input type="number" name="smsAutoAnswerDelay" ng-model="vm.agent.smsAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.openchannel" class="md-block">\n                <md-switch ng-model="vm.agent.openchannelAutoanswer" aria-label="openchannelAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.OPENCHANNEL_AUTOANSWER">openchannelAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.openchannelAutoanswer" class="md-block">\n                  <label translate="STAFF.OPENCHANNEL_AUTOANSWERDELAY">openchannelAutoAnswerDelay</label>\n                  <input type="number" name="openchannelAutoAnswerDelay" ng-model="vm.agent.openchannelAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.fax" class="md-block">\n                <md-switch ng-model="vm.agent.faxAutoanswer" aria-label="faxAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.FAX_AUTOANSWER">faxAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.faxAutoanswer" class="md-block">\n                  <label translate="STAFF.FAX_AUTOANSWERDELAY">faxAutoAnswerDelay</label>\n                  <input type="number" name="faxAutoAnswerDelay" ng-model="vm.agent.faxAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\n              <md-input-container ng-if="vm.license.whatsapp" class="md-block">\n                <md-switch ng-model="vm.agent.whatsappAutoanswer" aria-label="whatsappAutoanswer" ng-disabled="!vm.crudPermissions.canEdit">\n                  <span translate="STAFF.WHATSAPP_AUTOANSWER">whatsappAutoAnswer</span>\n                </md-switch>\n                <md-input-container ng-if="vm.agent.whatsappAutoanswer" class="md-block">\n                  <label translate="STAFF.WHATSAPP_AUTOANSWERDELAY">whatsappAutoAnswerDelay</label>\n                  <input type="number" name="whatsappAutoAnswerDelay" ng-model="vm.agent.whatsappAutoanswerDelay" min="0" value="0" ng-required="true" ng-disabled="!vm.crudPermissions.canEdit">\n                </md-input-container>\n              </md-input-container>\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                <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                <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            </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                <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                <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            </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                <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            </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                <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                <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                <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                <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                <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            </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            </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            </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              \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      <md-divider></md-divider>\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              <span ng-if="vm_pc.agent.role === \'admin\'" class="md-headline" translate="STAFF.ALL_MODULES_AVAILABLE">All modules are already available.</span>\n            </div>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="agent-detail-form-container client_logs 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.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.agent" on-user-update="vm.refreshAgent()"></ms-client-side-logging>\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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      <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      <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      <md-input-container class="md-block" ng-if="vm.user.userSetting">\n        <ms-client-side-logging user="vm.user"></ms-client-side-logging>\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" 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-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  \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      <div layout="row" layout-align="start center">\n        <div class="user-image" hide-xs>\n          <img ng-src="assets/images/business/users.jpg">\n        </div>\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    <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    <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  </div>\n  \x3c!-- / HEADER --\x3e\n\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="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                <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                <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                <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                <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                <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                <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            </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                <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                <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            </form>\n          </div>\n          <div class="user-detail-form-container authentication 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.AUTHENTICATION">AUTHENTICATION</div>\n            </div>\n            <form name="authenticationForm" novalidate>\n              <md-input-container class="md-block">\n                <md-switch ng-model="vm.user.adSsoEnabled" aria-label="AD_SSO_Enabled" ng-disabled="!vm.crudPermissions.canEdit"><span translate="STAFF.AD_SSO_ENABLED">AD_SSO_Enabled</span></md-switch>\n                <div class="hint"><span translate="STAFF.HELP.AD_SSO_ENABLED"></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              <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                <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                <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                <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                    <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          </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                <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                <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                <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.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            </form>\n          </div>\n        </md-tab-body>\n      </md-tab>\n      <md-tab>\n        <md-tab-label>\n          <span translate="STAFF.CLIENT_LOGS">CLIENT-SIDE LOGS</span>\n        </md-tab-label>\n        <md-tab-body>\n          <div class="user-detail-form-container client_logs 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.CLIENT_LOGS">\n                CLIENT-SIDE LOGS\n              </div>\n            </div>\n            <ms-client-side-logging user="vm.user" on-user-update="vm.refreshUser()"></ms-client-side-logging>\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/users/users.html",'<div id="users" 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-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    <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 md-accent-bg" layout="row" layout-align="start center">\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    <div flex layout="row" layout-align="space-between center">\n      <div>\n        <span class="selected-users-count">\n          <span>{{vm.selectedUsers.length}}</span>\n          <span translate="STAFF.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="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      <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    \x3c!-- MAIN --\x3e\n    <div class="main scrollable">\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>{{ \'STAFF.CLIENT_LOGS\' | 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"><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                <td ng-click="vm.crudPermissions.readOnly || (vm.crudPermissions.canDelete && !vm.crudPermissions.canEdit) ? vm.editstate(user, ev) : vm.createOrEditAgent($event, user)" md-cell class="client-side-logging">\n                  <ms-client-side-logging-icon user="user"></ms-client-side-logging-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="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="3">\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.crudPermissions.canEdit">\n                        <md-button ng-click="vm.editstate(user, $event    )" translate="STAFF.EDIT_USER">\n                          Edit User\n                        </md-button>\n                      </md-menu-item>\n                      \x3c!-- SUBACTIONS --\x3e\n                      \x3c!-- ACTIONS --\x3e\n                      <md-menu-item ng-if="vm.currentUser.role === \'admin\' && user.id !== vm.currentUser.id">\n                        <md-button ng-click="vm.deleteconfirm(user, $event    )" translate="STAFF.DELETE_USER">\n                          Delete User\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: \'{{\'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      \x3c!-- / NO RESULTS --\x3e\n    </div>\n    \x3c!-- / MAIN --\x3e\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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/contact_item_types/contact_item_types.html",'<div id="contact_item_types" 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.CONTACTITEMTYPE">ContactItemType</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.selectedContactItemType.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.selectedContactItemType =[]">\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-contact_item_types-count">\n          <span>{{vm.selectedContactItemType.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.selectAllContactItemType()" translate="TOOLS.SELECT_ALL">\n                Select all\n              </md-button>\n            </md-menu-item>\n            <md-menu-item>\n              <md-button ng-click="vm.deselectContactItemType()" 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.exportSelectedContactItemType" csv-label="true" filename="contact_item_types.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.deleteSelectedContactItemType($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!-- CONTACTITEMTYPE TABLE --\x3e\n      <md-card>\n        <md-table-container>\n          <table md-table md-row-select multiple ng-model="vm.selectedContactItemType" md-progress="vm.promise">\n            <thead md-head md-order="vm.query.sort" md-on-reorder="vm.getContactItemType">\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="OrderBy">{{ \'TOOLS.ORDER_BY\' | translate }}</th>\n                <th md-column width="10px"></th>\n              </tr>\n            </thead>\n            <tbody md-body>\n              <tr md-row ng-hide="vm.contact_item_types.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="contactItemType" md-select-id="id" ng-repeat="contactItemType in vm.contact_item_types.rows">\n                <td md-cell ng-if="contactItemType.userpic"><img class="avatar" alt="{{contactItemType.name}}" ng-src="api/users/{{contactItemType.id}}/avatar" /></td>\n                <td md-cell ng-if="!contactItemType.userpic && (vm.table == \'users\' || vm.table == \'agents\')"><img class="avatar" alt="{{contactItemType.name}}" ng-src="assets/images/avatars/profile.png" /></td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="id ">{{contactItemType.id}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="name ">{{contactItemType.name}}</td>\n                <td ng-click="vm.createOrEditContactItemType($event, contactItemType)" md-cell class="OrderBy ">{{contactItemType.OrderBy}}</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(contactItemType, $event    )" translate="TOOLS.EDIT_CONTACTITEMTYPE">\n                          Edit ContactItemType\n                        </md-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(contactItemType, $event    )" translate="TOOLS.DELETE_CONTACTITEMTYPE">\n                          Delete ContactItemType\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.contact_item_types.count}}" md-on-paginate="vm.getContactItemType" md-page-select></md-table-pagination>\n      </md-card>\n      \x3c!-- / CONTACTITEMTYPE 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 CONTACTITEMTYPE BUTTON --\x3e\n  <md-button ng-if="vm.crudPermissions.canEdit" class="md-fab md-accent" id="add-contactItemType-button" ng-click="vm.createOrEditContactItemType($event)" aria-label="add contactItemType" translate translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n    <md-icon md-font-icon="icon-plus"></md-icon>\n  </md-button>\n  \x3c!-- / ADD CONTACTITEMTYPE BUTTON --\x3e\n</div>'),e.put("app/main/apps/tools/views/contact_item_types/create/dialog.html",'<md-dialog class="contactItemType-dialog" aria-label="New ContactItemType">\n  <form name="contactItemTypeForm" class="md-inline-form" novalidate>\n    <md-toolbar class="md-accent md-hue-2">\n      <div class="md-toolbar-tools" layout="row" layout-align="space-between center">\n        <span class="title">{{ vm.title | translate }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content ms-scroll>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.contactItemType.name" ng-required="true" autofocus>\n\n        <div ng-messages="contactItemTypeForm[\'name\'].$error" ng-show="contactItemTypeForm[\'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.ORDER_BY">Order_by</label>\n        <input type="integer" name="OrderBy" ng-model="vm.contactItemType.OrderBy" ng-required="true">\n\n        <div ng-messages="contactItemTypeForm[\'OrderBy\'].$error" ng-show="contactItemTypeForm[\'OrderBy\'].$touched" role="alert">\n          <div ng-message="required">\n            <span translate="TOOLS.ERRORS.ORDER_BY_REQUIRED">Order_by field is required</span>\n          </div>\n        </div>\n      </md-input-container>\n      <div flex md-color-picker ng-model="vm.contactItemType.rgbBackgroundColor" label="{{\'TOOLS.RGBBACKGROUNDCOLOR\' | 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.newContactItemType" ng-click="vm.saveContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid || contactItemTypeForm.$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.newContactItemType" ng-click="vm.addNewContactItemType()" class="send-button md-accent md-raised" ng-disabled="contactItemTypeForm.$invalid" aria-label="ADD" translate="TOOLS.ADD_CONTACTITEMTYPE" translate-attr-aria-label="TOOLS.ADD_CONTACTITEMTYPE">\n          ADD CONTACTITEMTYPE\n        </md-button>\n      </div>\n      <div layout="row">\n        <md-button class="md-icon-button" ng-if="vm.crudPermissions.canDelete && !vm.newContactItemType" ng-click="vm.deleteContactItemType($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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" ng-change="vm.onTypeChange()" 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 ng-if="[\'multibar-chart\', \'pie-chart\',\'counter\'].includes(vm.dashboarditem.type)" class="md-block">\n        <label translate="TOOLS.CHANNEL">Channel</label>\n        <md-select name="attrChannel" ng-model="vm.dashboarditem.attrChannel" required>\n\n          <md-option ng-value="\'chat\'"> {{ \'TOOLS.CHAT\' | translate }} </md-option>\n\n          <md-option ng-value="\'mail\'"> {{ \'TOOLS.EMAIL\' | translate }} </md-option>\n\n          <md-option ng-value="\'sms\'"> {{ \'TOOLS.SMS\' | translate }} </md-option>\n\n          <md-option ng-value="\'openchannel\'"> {{ \'TOOLS.OPENCHANNEL\' | translate }} </md-option>\n\n          <md-option ng-value="\'fax\'"> {{ \'TOOLS.FAX\' | translate }} </md-option>\n\n          <md-option ng-value="\'voice\'"> {{ \'TOOLS.VOICE\' | translate }} </md-option>\n\n          <md-option ng-value="\'whatsapp\'"> {{ \'TOOLS.WHATSAPP\' | translate }} </md-option>\n        </md-select>\n        <div ng-messages="dashboarditemForm[\'attrChannel\'].$error" ng-show="dashboarditemForm[\'attrChannel\'].$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      <div ng-if="![\'web-report\', \'iframe\',\'clock\', \'custom\'].includes(vm.dashboarditem.type)">\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'mail\'" class="md-block">\n          <label translate="TOOLS.FILTEREMAILACCOUNTS">FilterEmailAccounts</label>\n          <md-select name="attrEmailAccounts" ng-model="vm.dashboarditem.attrEmailAccounts" multiple>\n            <md-option ng-value="attrEmailAccounts.id" ng-repeat="attrEmailAccounts in vm.mailAccount" ng-disabled="attrEmailAccounts.canSelect === false">{{ attrEmailAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrEmailAccounts\'].$error" ng-show="dashboarditemForm[\'attrEmailAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEREMAILACCOUNTS_REQUIRED">FilterEmailAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'fax\'" class="md-block">\n          <label translate="TOOLS.FILTERFAXACCOUNTS">FilterFaxAccounts</label>\n          <md-select name="attrFaxAccounts" ng-model="vm.dashboarditem.attrFaxAccounts" multiple>\n            <md-option ng-value="attrFaxAccounts.id" ng-repeat="attrFaxAccounts in vm.faxAccount" ng-disabled="attrFaxAccounts.canSelect === false">{{ attrFaxAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrFaxAccounts\'].$error" ng-show="dashboarditemForm[\'attrFaxAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERFAXACCOUNTS_REQUIRED">FilterFaxAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'sms\'" class="md-block">\n          <label translate="TOOLS.FILTERSMSACCOUNTS">FilterSmsAccounts</label>\n          <md-select name="attrSmsAccounts" ng-model="vm.dashboarditem.attrSmsAccounts" multiple>\n            <md-option ng-value="attrSmsAccounts.id" ng-repeat="attrSmsAccounts in vm.smsAccount" ng-disabled="attrSmsAccounts.canSelect === false">{{ attrSmsAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrSmsAccounts\'].$error" ng-show="dashboarditemForm[\'attrSmsAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERSMSACCOUNTS_REQUIRED">FilterSmsAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'openchannel\'" class="md-block">\n          <label translate="TOOLS.FILTEROPENCHANNELACCOUNTS">FilterOpenchannelAccounts</label>\n          <md-select name="attrOpenchannelAccounts" ng-model="vm.dashboarditem.attrOpenchannelAccounts" multiple>\n            <md-option ng-value="attrOpenchannelAccounts.id" ng-repeat="attrOpenchannelAccounts in vm.openchannelAccount" ng-disabled="attrOpenchannelAccounts.canSelect === false">{{ attrOpenchannelAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrOpenchannelAccounts\'].$error" ng-show="dashboarditemForm[\'attrOpenchannelAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTEROPENCHANNELACCOUNTS_REQUIRED">FilterOpenchannelAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'whatsapp\'" class="md-block">\n          <label translate="TOOLS.FILTERWHATSAPPACCOUNTS">FilterWhatsappAccounts</label>\n          <md-select name="attrWhatsappAccounts" ng-model="vm.dashboarditem.attrWhatsappAccounts" multiple>\n            <md-option ng-value="attrWhatsappAccounts.id" ng-repeat="attrWhatsappAccounts in vm.whatsappAccount" ng-disabled="attrWhatsappAccounts.canSelect === false">{{ attrWhatsappAccounts.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrWhatsappAccounts\'].$error" ng-show="dashboarditemForm[\'attrWhatsappAccounts\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERWHATSAPPACCOUNTS_REQUIRED">FilterWhatsappAccounts field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n        <md-input-container ng-if="vm.dashboarditem.attrChannel === \'chat\'" class="md-block">\n          <label translate="TOOLS.FILTERCHATWEBSITES">FilterChatWebsites</label>\n          <md-select name="attrChatWebsites" ng-model="vm.dashboarditem.attrChatWebsites" multiple>\n            <md-option ng-value="attrChatWebsites.id" ng-repeat="attrChatWebsites in vm.chatWebsite" ng-disabled="attrChatWebsites.canSelect === false">{{ attrChatWebsites.name }}</md-option>\n          </md-select>\n          <div ng-messages="dashboarditemForm[\'attrChatWebsites\'].$error" ng-show="dashboarditemForm[\'attrChatWebsites\'].$touched" role="alert">\n            <div ng-message="required">\n              <span translate="TOOLS.ERRORS.FILTERCHATWEBSITES_REQUIRED">FilterChatWebsites field is required</span>\n            </div>\n          </div>\n        </md-input-container>\n      </div>\n      <md-input-container ng-if="[\'multibar-chart\', \'pie-chart\', \'counter\'].includes(vm.dashboarditem.type) && vm.dashboarditem.attrChannel === \'voice\'" 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 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\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'unmanaged\'"> {{ \'TOOLS.UNMANAGED\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | 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\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | 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\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | 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\'" ng-if="vm.dashboarditem.attrChannel === \'voice\' || vm.dashboarditem.attrChannel === \'chat\'"> {{ \'TOOLS.ABANDONED\' | translate }} </md-option>\n\n          <md-option ng-value="\'waiting\'"> {{ \'TOOLS.WAITING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.TALKING\' | translate }} </md-option>\n\n          <md-option ng-value="\'talking\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.OPENED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel === \'voice\'"> {{ \'TOOLS.ANSWERED\' | translate }} </md-option>\n\n          <md-option ng-value="\'answered\'" ng-if="vm.dashboarditem.attrChannel !== \'voice\'"> {{ \'TOOLS.MANAGED\' | 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="[\'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">\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">\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>\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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">\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">\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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\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>\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)" ng-if="vm.trigger.channel == \'chat\' && allCondition.field == \'offlineMessage\'" md-cell>\n            {{allCondition.value}} </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>\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-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | 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      <md-input-container ng-if="vm.allCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.allCondition.value" required>\n          <md-option ng-value="\'created\'">Created</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)" ng-if="vm.trigger.channel == \'chat\' && anyCondition.field == \'offlineMessage\'" md-cell>\n            {{anyCondition.value}} </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>\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-option ng-value="\'offlineMessage\'" ng-if="vm.trigger.channel == \'chat\'"> {{ \'TOOLS.OFFLINE_MESSAGE\' | 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      <md-input-container ng-if="vm.anyCondition.field == \'offlineMessage\' && vm.trigger.channel == \'chat\'" class="md-block">\n        <label translate="TOOLS.CHAT">Chat</label>\n        <md-select name="value" ng-model="vm.anyCondition.value" required>\n          <md-option ng-value="\'created\'">Created</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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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">\n      <div class="error-list">\n        <div ng-repeat="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>\n      <div class="error-list">\n        <div ng-repeat="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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" 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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="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" 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" 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 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">\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="8">\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>\n          <span>{{channel.calleridname}}, {{channel.calleridnum}}</span>\n        </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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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" 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" 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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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 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">\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-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-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" 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" 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" 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" 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" 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 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>\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" 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" 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 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>\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()">\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/autoanswers/dialog.html",'<md-dialog class="autoanswers-dialog" aria-label="autoanswers">\n  <form name="autoanswerForm" 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.AUTOANSWER_NOTIFICATIONS\' | translate)  }}</span>\n        <md-button class="md-icon-button" ng-click="vm.closeDialog()">\n          <md-icon md-font-icon="icon-close" aria-label="Close dialog"></md-icon>\n        </md-button>\n      </div>\n    </md-toolbar>\n\n    <md-dialog-content layout-padding>\n      <md-table-container>\n        <table md-table multiple>\n          <thead md-head>\n            <tr md-row>\n              <th></th>\n              <th md-column>{{ \'TOOLBAR.CHANNEL\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.NOTIFICATIONS\' | translate }}</th>\n              <th md-column>{{ \'TOOLBAR.DELAY\' | translate }}</th>\n            </tr>\n          </thead>\n          <tbody md-body>\n            <tr md-row ng-repeat="item in vm.items" ng-if="item.permission">\n              <td>\n                <md-icon md-font-icon="{{item.font_icon}}" class="icon {{item.class}} {{item.font_icon}}" aria-label="{{item.label}}"></md-icon>\n              </td>\n              <td md-cell>\n                <div layout="row">\n                  <span translate="{{item.title}}"></span>\n                </div>\n              </td>\n              <td md-cell align="center">\n                <div layout="row" layout-align="center">\n                  <md-icon ng-if="item.enabled" md-font-icon="icon-check-circle" class="icon green-700-fg"></md-icon>\n                  <span ng-if="!item.enabled" style="color:red">X</span>\n                </div>\n              </td>\n              <td md-cell align="right">\n                <div layout="row" layout-align="end">\n                  <span ng-if="item.enabled">{{item.delay}}</span>\n                </div>\n              </td>\n            </tr>\n          </tbody>\n        </table>\n      </md-table-container>\n    </md-dialog-content>\n\n    <md-dialog-actions class="md-dialog-action-center padding-rigth-15">\n    </md-dialog-actions>\n  </form>\n</md-dialog>'),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>\n      <div class="error-list">\n        <div ng-repeat="error in vm.errors" class="error" layout="row" layout-align="space-between center">\n          <div>\n            <span class="message">{{error.message}}</span>\n            <span class="type">({{error.type}})</span>\n          </div>\n          <md-button class="md-icon-button">\n            <md-icon md-font-icon="icon-alert-box" aria-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.chat || vm.license.mail || vm.license.messaging || vm.license.openchannel || vm.license.fax || vm.license.whatsapp)" class="preview-button no-margin" ng-disabled="vm.disable" ng-click="vm.autoAnswerNotificationsDialog($event)" aria-label="Language" md-menu-origin md-menu-align-target>\n      <md-icon md-font-icon="icon-reply" class="icon {{ vm.autoanswerIconColor }}"></md-icon>\n      <md-tooltip><span translate="TOOLBAR.AUTOANSWER_NOTIFICATIONS">Notifications</span></md-tooltip>\n    </md-button>\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>\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\n            <md-input-container ng-if="vm.additionalItems.length>0" class="md-block no-margin">\n              <label translate="CONTACTMANAGER.ADDITIONAL_PHONES">Additional phones</label>\n              <md-chips ng-model="vm.additionalItems" placeholder="Phone numbers" readonly="true">\n                <md-chip-template custom-chip alt="{{$chip.type}} {{$chip.description}}" title="{{$chip.type}} {{$chip.description}}">\n                  {{ $chip.phone }}\n                </md-chip-template>\n              </md-chips>\n            </md-input-container>\n\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-if="!vm.isRecallNotification" 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-if="!vm.isRecallNotification" 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 31163f9..2561ec8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b97=['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)]','browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[headers],\x20browser[wsindowHeight]','urlForward[body]','exports','VIRTUAL','getDataValue','STRING','contactManager','motionbar','jscripty','urlForward','bot','Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'];(function(_0xcc6ce4,_0x2979cf){var _0x29566e=function(_0x4811bd){while(--_0x4811bd){_0xcc6ce4['push'](_0xcc6ce4['shift']());}};_0x29566e(++_0x2979cf);}(_0x7b97,0x1c1));var _0x77b9=function(_0x2df1f2,_0x58d388){_0x2df1f2=_0x2df1f2-0x0;var _0x38652b=_0x7b97[_0x2df1f2];return _0x38652b;};'use strict';var Sequelize=require('sequelize');module[_0x77b9('0x0')]={'name':{'type':Sequelize[_0x77b9('0x1')],'get':function(_0xdf1976){return this[_0x77b9('0x2')]('action');}},'action':{'type':Sequelize[_0x77b9('0x3')],'allowNull':![],'validate':{'isIn':{'args':[[_0x77b9('0x4'),'integration',_0x77b9('0x5'),_0x77b9('0x6'),_0x77b9('0x7'),'browser',_0x77b9('0x8'),'script']],'msg':_0x77b9('0x9')}},'comment':_0x77b9('0x9')},'data1':{'type':Sequelize['STRING'](0x1000),'comment':_0x77b9('0xa')},'data2':{'type':Sequelize[_0x77b9('0x3')](0x1000),'comment':_0x77b9('0xb')},'data3':{'type':Sequelize[_0x77b9('0x3')](0x1000),'comment':_0x77b9('0xc')},'data4':{'type':Sequelize[_0x77b9('0x3')](0x1000),'comments':_0x77b9('0xd')},'data5':{'type':Sequelize[_0x77b9('0x3')](0x1000),'comments':_0x77b9('0xe')},'data6':{'type':Sequelize[_0x77b9('0x3')],'comments':_0x77b9('0xf')},'data7':{'type':Sequelize['TEXT'],'comments':_0x77b9('0x10')}};
\ No newline at end of file
+var _0x7bb9=['browser[location(0=NewTab,1=NewWindow,2=MotionTab)],\x20contactManager[autoCreateField]','urlForward[timeout],\x20browser[windowWidth],\x20contactManager[ignoreDialerContactId]','urlForward[headers],\x20browser[wsindowHeight]','TEXT','urlForward[body]','sequelize','exports','VIRTUAL','getDataValue','STRING','contactManager','integration','motionbar','jscripty','urlForward','browser','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)]'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x7bb9,0x89));var _0x97bb=function(_0x36eaaa,_0x326732){_0x36eaaa=_0x36eaaa-0x0;var _0x461349=_0x7bb9[_0x36eaaa];return _0x461349;};'use strict';var Sequelize=require(_0x97bb('0x0'));module[_0x97bb('0x1')]={'name':{'type':Sequelize[_0x97bb('0x2')],'get':function(_0x2f6976){return this[_0x97bb('0x3')]('action');}},'action':{'type':Sequelize[_0x97bb('0x4')],'allowNull':![],'validate':{'isIn':{'args':[[_0x97bb('0x5'),_0x97bb('0x6'),_0x97bb('0x7'),_0x97bb('0x8'),_0x97bb('0x9'),_0x97bb('0xa'),_0x97bb('0xb'),_0x97bb('0xc')]],'msg':_0x97bb('0xd')}},'comment':'Allowed\x20values:\x20contactManager,\x20integration,\x20motionbar,\x20jscripty,\x20urlForward,\x20browser,\x20bot,\x20script'},'data1':{'type':Sequelize[_0x97bb('0x4')](0x1000),'comment':_0x97bb('0xe')},'data2':{'type':Sequelize[_0x97bb('0x4')](0x1000),'comment':_0x97bb('0xf')},'data3':{'type':Sequelize['STRING'](0x1000),'comment':_0x97bb('0x10')},'data4':{'type':Sequelize[_0x97bb('0x4')](0x1000),'comments':_0x97bb('0x11')},'data5':{'type':Sequelize[_0x97bb('0x4')](0x1000),'comments':_0x97bb('0x12')},'data6':{'type':Sequelize['STRING'],'comments':_0x97bb('0x13')},'data7':{'type':Sequelize[_0x97bb('0x14')],'comments':_0x97bb('0x15')}};
\ No newline at end of file
index 36d0091..3e64f67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a8a=['util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','body','Action','find','params','catch','eml-format','rimraf','request-promise','bluebird','mustache'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x4a8a,0x115));var _0xa4a8=function(_0x27e811,_0x20137c){_0x27e811=_0x27e811-0x0;var _0x1627fa=_0x4a8a[_0x27e811];return _0x1627fa;};'use strict';var emlformat=require(_0xa4a8('0x0'));var rimraf=require(_0xa4a8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa4a8('0x2'));var moment=require('moment');var BPromise=require(_0xa4a8('0x3'));var Mustache=require(_0xa4a8('0x4'));var util=require(_0xa4a8('0x5'));var path=require(_0xa4a8('0x6'));var sox=require('sox');var csv=require(_0xa4a8('0x7'));var ejs=require(_0xa4a8('0x8'));var fs=require('fs');var fs_extra=require(_0xa4a8('0x9'));var _=require(_0xa4a8('0xa'));var squel=require(_0xa4a8('0xb'));var crypto=require(_0xa4a8('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xa4a8('0xd'));var toCsv=require('to-csv');var querystring=require(_0xa4a8('0xe'));var Papa=require(_0xa4a8('0xf'));var Redis=require(_0xa4a8('0x10'));var authService=require(_0xa4a8('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa4a8('0x12'));var hardwareService=require(_0xa4a8('0x13'));var logger=require('../../config/logger')(_0xa4a8('0x14'));var utils=require('../../config/utils');var config=require(_0xa4a8('0x15'));var licenseUtil=require(_0xa4a8('0x16'));var db=require(_0xa4a8('0x17'))['db'];function respondWithStatusCode(_0x5f2960,_0x4bd167){_0x4bd167=_0x4bd167||0xcc;return function(_0x37baa3){if(_0x37baa3){return _0x5f2960[_0xa4a8('0x18')](_0x4bd167);}return _0x5f2960['status'](_0x4bd167)[_0xa4a8('0x19')]();};}function respondWithResult(_0x4698e0,_0x54712f){_0x54712f=_0x54712f||0xc8;return function(_0x9a5e32){if(_0x9a5e32){return _0x4698e0[_0xa4a8('0x1a')](_0x54712f)[_0xa4a8('0x1b')](_0x9a5e32);}};}function respondWithFilteredResult(_0x3b15af,_0xe59a5b){return function(_0x4a1f71){if(_0x4a1f71){var _0x11c1f9=typeof _0xe59a5b['offset']===_0xa4a8('0x1c')&&typeof _0xe59a5b[_0xa4a8('0x1d')]==='undefined';var _0x226f06=_0x4a1f71[_0xa4a8('0x1e')];var _0x3d1582=_0x11c1f9?0x0:_0xe59a5b['offset'];var _0x53ebe4=_0x11c1f9?_0x4a1f71['count']:_0xe59a5b[_0xa4a8('0x1f')]+_0xe59a5b[_0xa4a8('0x1d')];var _0x4372ef;if(_0x53ebe4>=_0x226f06){_0x53ebe4=_0x226f06;_0x4372ef=0xc8;}else{_0x4372ef=0xce;}_0x3b15af[_0xa4a8('0x1a')](_0x4372ef);return _0x3b15af['set'](_0xa4a8('0x20'),_0x3d1582+'-'+_0x53ebe4+'/'+_0x226f06)[_0xa4a8('0x1b')](_0x4a1f71);}return null;};}function patchUpdates(_0x3e5964){return function(_0x486089){try{jsonpatch[_0xa4a8('0x21')](_0x486089,_0x3e5964,!![]);}catch(_0x4e4478){return BPromise[_0xa4a8('0x22')](_0x4e4478);}return _0x486089[_0xa4a8('0x23')]();};}function saveUpdates(_0x351d4f,_0x27fdb0){return function(_0x59319e){if(_0x59319e){return _0x59319e[_0xa4a8('0x24')](_0x351d4f)[_0xa4a8('0x25')](function(_0x4905b8){return _0x4905b8;});}return null;};}function removeEntity(_0x46e8e3,_0x35584a){return function(_0x58fd74){if(_0x58fd74){return _0x58fd74[_0xa4a8('0x26')]()[_0xa4a8('0x25')](function(){_0x46e8e3[_0xa4a8('0x1a')](0xcc)[_0xa4a8('0x19')]();});}};}function handleEntityNotFound(_0x37be3e,_0x2a3759){return function(_0x5c0622){if(!_0x5c0622){_0x37be3e[_0xa4a8('0x18')](0x194);}return _0x5c0622;};}function handleError(_0x536d13,_0x563850){_0x563850=_0x563850||0x1f4;return function(_0x4cfd73){logger[_0xa4a8('0x27')](_0x4cfd73[_0xa4a8('0x28')]);if(_0x4cfd73['name']){delete _0x4cfd73['name'];}_0x536d13[_0xa4a8('0x1a')](_0x563850)[_0xa4a8('0x29')](_0x4cfd73);};}exports[_0xa4a8('0x24')]=function(_0x1c8d56,_0x265adf){if(_0x1c8d56[_0xa4a8('0x2a')]['id']){delete _0x1c8d56[_0xa4a8('0x2a')]['id'];}return db[_0xa4a8('0x2b')][_0xa4a8('0x2c')]({'where':{'id':_0x1c8d56[_0xa4a8('0x2d')]['id']}})[_0xa4a8('0x25')](handleEntityNotFound(_0x265adf,null))[_0xa4a8('0x25')](saveUpdates(_0x1c8d56[_0xa4a8('0x2a')],null))[_0xa4a8('0x25')](respondWithResult(_0x265adf,null))[_0xa4a8('0x2e')](handleError(_0x265adf,null));};exports[_0xa4a8('0x26')]=function(_0xe0cce4,_0x497c7a){return db['Action'][_0xa4a8('0x2c')]({'where':{'id':_0xe0cce4[_0xa4a8('0x2d')]['id']}})['then'](handleEntityNotFound(_0x497c7a,null))[_0xa4a8('0x25')](removeEntity(_0x497c7a,null))[_0xa4a8('0x2e')](handleError(_0x497c7a,null));};
\ No newline at end of file
+var _0xd0f3=['../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','apply','reject','save','then','sendStatus','error','stack','name','send','update','body','Action','find','catch','destroy','params','rimraf','zip-dir','request-promise','moment','mustache','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','papaparse'];(function(_0x4154a6,_0x2c0b8e){var _0x3b2786=function(_0x2f5936){while(--_0x2f5936){_0x4154a6['push'](_0x4154a6['shift']());}};_0x3b2786(++_0x2c0b8e);}(_0xd0f3,0xcd));var _0x3d0f=function(_0x51b80a,_0x355fe3){_0x51b80a=_0x51b80a-0x0;var _0x22fdf0=_0xd0f3[_0x51b80a];return _0x22fdf0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3d0f('0x0'));var zipdir=require(_0x3d0f('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3d0f('0x2'));var moment=require(_0x3d0f('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x3d0f('0x4'));var util=require(_0x3d0f('0x5'));var path=require(_0x3d0f('0x6'));var sox=require(_0x3d0f('0x7'));var csv=require(_0x3d0f('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3d0f('0x9'));var _=require('lodash');var squel=require(_0x3d0f('0xa'));var crypto=require(_0x3d0f('0xb'));var jsforce=require(_0x3d0f('0xc'));var deskjs=require(_0x3d0f('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x3d0f('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x3d0f('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x3d0f('0x10'))(_0x3d0f('0x11'));var utils=require(_0x3d0f('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0x3d0f('0x13'));var db=require(_0x3d0f('0x14'))['db'];function respondWithStatusCode(_0x5e2b8e,_0x39a6e5){_0x39a6e5=_0x39a6e5||0xcc;return function(_0x159d95){if(_0x159d95){return _0x5e2b8e['sendStatus'](_0x39a6e5);}return _0x5e2b8e[_0x3d0f('0x15')](_0x39a6e5)[_0x3d0f('0x16')]();};}function respondWithResult(_0x5e6d52,_0x3d1bb6){_0x3d1bb6=_0x3d1bb6||0xc8;return function(_0x55964c){if(_0x55964c){return _0x5e6d52[_0x3d0f('0x15')](_0x3d1bb6)[_0x3d0f('0x17')](_0x55964c);}};}function respondWithFilteredResult(_0x243c85,_0x2e1021){return function(_0x225143){if(_0x225143){var _0x3ecbf4=typeof _0x2e1021[_0x3d0f('0x18')]===_0x3d0f('0x19')&&typeof _0x2e1021[_0x3d0f('0x1a')]===_0x3d0f('0x19');var _0x58c8a0=_0x225143[_0x3d0f('0x1b')];var _0x1c6c0d=_0x3ecbf4?0x0:_0x2e1021['offset'];var _0x33a86e=_0x3ecbf4?_0x225143[_0x3d0f('0x1b')]:_0x2e1021[_0x3d0f('0x18')]+_0x2e1021['limit'];var _0x5a18f2;if(_0x33a86e>=_0x58c8a0){_0x33a86e=_0x58c8a0;_0x5a18f2=0xc8;}else{_0x5a18f2=0xce;}_0x243c85[_0x3d0f('0x15')](_0x5a18f2);return _0x243c85['set']('Content-Range',_0x1c6c0d+'-'+_0x33a86e+'/'+_0x58c8a0)['json'](_0x225143);}return null;};}function patchUpdates(_0x33bb4a){return function(_0x5dc708){try{jsonpatch[_0x3d0f('0x1c')](_0x5dc708,_0x33bb4a,!![]);}catch(_0x460665){return BPromise[_0x3d0f('0x1d')](_0x460665);}return _0x5dc708[_0x3d0f('0x1e')]();};}function saveUpdates(_0x2969bf,_0x4e98db){return function(_0xbd3589){if(_0xbd3589){return _0xbd3589['update'](_0x2969bf)[_0x3d0f('0x1f')](function(_0x241b00){return _0x241b00;});}return null;};}function removeEntity(_0x168904,_0x1fc65d){return function(_0x318dc3){if(_0x318dc3){return _0x318dc3['destroy']()[_0x3d0f('0x1f')](function(){_0x168904[_0x3d0f('0x15')](0xcc)[_0x3d0f('0x16')]();});}};}function handleEntityNotFound(_0x4de604,_0x44f9cb){return function(_0x408c0d){if(!_0x408c0d){_0x4de604[_0x3d0f('0x20')](0x194);}return _0x408c0d;};}function handleError(_0x182ada,_0x5ec213){_0x5ec213=_0x5ec213||0x1f4;return function(_0x178d7e){logger[_0x3d0f('0x21')](_0x178d7e[_0x3d0f('0x22')]);if(_0x178d7e[_0x3d0f('0x23')]){delete _0x178d7e[_0x3d0f('0x23')];}_0x182ada['status'](_0x5ec213)[_0x3d0f('0x24')](_0x178d7e);};}exports[_0x3d0f('0x25')]=function(_0x3579df,_0x1cbf57){if(_0x3579df[_0x3d0f('0x26')]['id']){delete _0x3579df[_0x3d0f('0x26')]['id'];}return db[_0x3d0f('0x27')][_0x3d0f('0x28')]({'where':{'id':_0x3579df['params']['id']}})['then'](handleEntityNotFound(_0x1cbf57,null))[_0x3d0f('0x1f')](saveUpdates(_0x3579df[_0x3d0f('0x26')],null))[_0x3d0f('0x1f')](respondWithResult(_0x1cbf57,null))[_0x3d0f('0x29')](handleError(_0x1cbf57,null));};exports[_0x3d0f('0x2a')]=function(_0x387650,_0x549238){return db[_0x3d0f('0x27')][_0x3d0f('0x28')]({'where':{'id':_0x387650[_0x3d0f('0x2b')]['id']}})[_0x3d0f('0x1f')](handleEntityNotFound(_0x549238,null))['then'](removeEntity(_0x549238,null))[_0x3d0f('0x29')](handleError(_0x549238,null));};
\ No newline at end of file
index 860c2fb..c01ebd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa835=['moment','bluebird','request-promise','path','../../config/environment','exports','define','Action','tools_actions','lodash','util','../../config/logger','api'];(function(_0x121140,_0x555af3){var _0x25cda6=function(_0x4f2f25){while(--_0x4f2f25){_0x121140['push'](_0x121140['shift']());}};_0x25cda6(++_0x555af3);}(_0xa835,0x14e));var _0x5a83=function(_0x9c7389,_0x395978){_0x9c7389=_0x9c7389-0x0;var _0x1f8044=_0xa835[_0x9c7389];return _0x1f8044;};'use strict';var _=require(_0x5a83('0x0'));var util=require(_0x5a83('0x1'));var logger=require(_0x5a83('0x2'))(_0x5a83('0x3'));var moment=require(_0x5a83('0x4'));var BPromise=require(_0x5a83('0x5'));var rp=require(_0x5a83('0x6'));var fs=require('fs');var path=require(_0x5a83('0x7'));var rimraf=require('rimraf');var config=require(_0x5a83('0x8'));var attributes=require('./action.attributes');module[_0x5a83('0x9')]=function(_0x4dfedc,_0x54eb31){return _0x4dfedc[_0x5a83('0xa')](_0x5a83('0xb'),attributes,{'tableName':_0x5a83('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x69db=['./action.attributes','exports','define','Action','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf'];(function(_0x323673,_0x3d692a){var _0x699ca2=function(_0x2a3b42){while(--_0x2a3b42){_0x323673['push'](_0x323673['shift']());}};_0x699ca2(++_0x3d692a);}(_0x69db,0xb4));var _0xb69d=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0x69db[_0x167cc1];return _0x10bc4b;};'use strict';var _=require(_0xb69d('0x0'));var util=require(_0xb69d('0x1'));var logger=require(_0xb69d('0x2'))('api');var moment=require('moment');var BPromise=require(_0xb69d('0x3'));var rp=require(_0xb69d('0x4'));var fs=require('fs');var path=require(_0xb69d('0x5'));var rimraf=require(_0xb69d('0x6'));var config=require('../../config/environment');var attributes=require(_0xb69d('0x7'));module[_0xb69d('0x8')]=function(_0x8d936b,_0x109c12){return _0x8d936b[_0xb69d('0x9')](_0xb69d('0xa'),attributes,{'tableName':'tools_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6fa951b..2fd1841 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x53ec=['error','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','request','then','info','Action,\x20%s,\x20%s','request\x20sent','debug','stringify','code'];(function(_0x47fd36,_0x41535d){var _0x21a0fc=function(_0x44c07c){while(--_0x44c07c){_0x47fd36['push'](_0x47fd36['shift']());}};_0x21a0fc(++_0x41535d);}(_0x53ec,0x192));var _0xc53e=function(_0x903ca9,_0x2fbc2a){_0x903ca9=_0x903ca9-0x0;var _0x370719=_0x53ec[_0x903ca9];return _0x370719;};'use strict';var _=require(_0xc53e('0x0'));var util=require(_0xc53e('0x1'));var moment=require(_0xc53e('0x2'));var BPromise=require(_0xc53e('0x3'));var rs=require(_0xc53e('0x4'));var fs=require('fs');var Redis=require(_0xc53e('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc53e('0x6'));var logger=require('../../config/logger')(_0xc53e('0x7'));var config=require(_0xc53e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xc53e('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41a9e8,_0x2de88b,_0x5d3b28){return new BPromise(function(_0x1616ac,_0x1ac6c0){return client[_0xc53e('0xa')](_0x41a9e8,_0x5d3b28)[_0xc53e('0xb')](function(_0xd9612){logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));logger[_0xc53e('0xf')]('Action,\x20%s,\x20%s,\x20%s',_0x2de88b,'request\x20sent',JSON[_0xc53e('0x10')](_0xd9612));if(_0xd9612['error']){if(_0xd9612['error'][_0xc53e('0x11')]===0x1f4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')]['message']);return _0x1ac6c0(_0xd9612['error'][_0xc53e('0x13')]);}logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);return _0x1616ac(_0xd9612[_0xc53e('0x12')][_0xc53e('0x13')]);}else{logger[_0xc53e('0xc')](_0xc53e('0xd'),_0x2de88b,_0xc53e('0xe'));_0x1616ac(_0xd9612['result'][_0xc53e('0x13')]);}})[_0xc53e('0x14')](function(_0x535cd4){logger[_0xc53e('0x12')](_0xc53e('0xd'),_0x2de88b,_0x535cd4);_0x1ac6c0(_0x535cd4);});});}
\ No newline at end of file
+var _0x4975=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','Action,\x20%s,\x20%s','request\x20sent','debug','Action,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring'];(function(_0x4e1d03,_0x786f3a){var _0x362d4b=function(_0x1924d2){while(--_0x1924d2){_0x4e1d03['push'](_0x4e1d03['shift']());}};_0x362d4b(++_0x786f3a);}(_0x4975,0x86));var _0x5497=function(_0x5d35a7,_0x1fda86){_0x5d35a7=_0x5d35a7-0x0;var _0x235b1a=_0x4975[_0x5d35a7];return _0x235b1a;};'use strict';var _=require(_0x5497('0x0'));var util=require('util');var moment=require(_0x5497('0x1'));var BPromise=require(_0x5497('0x2'));var rs=require(_0x5497('0x3'));var fs=require('fs');var Redis=require(_0x5497('0x4'));var db=require(_0x5497('0x5'))['db'];var utils=require(_0x5497('0x6'));var logger=require(_0x5497('0x7'))(_0x5497('0x8'));var config=require(_0x5497('0x9'));var jayson=require(_0x5497('0xa'));var client=jayson['client'][_0x5497('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4f563d,_0x1d0019,_0x674a2a){return new BPromise(function(_0x368e8b,_0x57f930){return client[_0x5497('0xc')](_0x4f563d,_0x674a2a)['then'](function(_0x1f63d8){logger[_0x5497('0xd')](_0x5497('0xe'),_0x1d0019,_0x5497('0xf'));logger[_0x5497('0x10')](_0x5497('0x11'),_0x1d0019,_0x5497('0xf'),JSON[_0x5497('0x12')](_0x1f63d8));if(_0x1f63d8['error']){if(_0x1f63d8['error']['code']===0x1f4){logger[_0x5497('0x13')](_0x5497('0xe'),_0x1d0019,_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);return _0x57f930(_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);}logger[_0x5497('0x13')](_0x5497('0xe'),_0x1d0019,_0x1f63d8[_0x5497('0x13')][_0x5497('0x14')]);return _0x368e8b(_0x1f63d8['error'][_0x5497('0x14')]);}else{logger['info'](_0x5497('0xe'),_0x1d0019,_0x5497('0xf'));_0x368e8b(_0x1f63d8[_0x5497('0x15')][_0x5497('0x14')]);}})[_0x5497('0x16')](function(_0x4073e6){logger[_0x5497('0x13')]('Action,\x20%s,\x20%s',_0x1d0019,_0x4073e6);_0x57f930(_0x4073e6);});});}
\ No newline at end of file
index 6ebb4fe..5ad3095 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dd4=['put','isAuthenticated','delete','exports','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./action.controller'];(function(_0x479edf,_0x2d8938){var _0x4ec9b7=function(_0x1e1b34){while(--_0x1e1b34){_0x479edf['push'](_0x479edf['shift']());}};_0x4ec9b7(++_0x2d8938);}(_0x3dd4,0x143));var _0x43dd=function(_0x112f67,_0xadac1b){_0x112f67=_0x112f67-0x0;var _0x4a1a23=_0x3dd4[_0x112f67];return _0x4a1a23;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x43dd('0x0'));var timeout=require(_0x43dd('0x1'));var express=require(_0x43dd('0x2'));var router=express[_0x43dd('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x43dd('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x43dd('0x5'));var controller=require(_0x43dd('0x6'));router[_0x43dd('0x7')]('/:id',auth[_0x43dd('0x8')](),controller['update']);router[_0x43dd('0x9')]('/:id',auth[_0x43dd('0x8')](),controller['destroy']);module[_0x43dd('0xa')]=router;
\ No newline at end of file
+var _0x5355=['update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','put','/:id','isAuthenticated'];(function(_0x41ea22,_0x3b31f4){var _0x9694d3=function(_0x19a86d){while(--_0x19a86d){_0x41ea22['push'](_0x41ea22['shift']());}};_0x9694d3(++_0x3b31f4);}(_0x5355,0xd5));var _0x5535=function(_0x1b959e,_0x5b2d5f){_0x1b959e=_0x1b959e-0x0;var _0xa5ecea=_0x5355[_0x1b959e];return _0xa5ecea;};'use strict';var multer=require(_0x5535('0x0'));var util=require(_0x5535('0x1'));var path=require(_0x5535('0x2'));var timeout=require(_0x5535('0x3'));var express=require(_0x5535('0x4'));var router=express[_0x5535('0x5')]();var fs_extra=require(_0x5535('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x5535('0x7'));var config=require(_0x5535('0x8'));var controller=require('./action.controller');router[_0x5535('0x9')](_0x5535('0xa'),auth[_0x5535('0xb')](),controller[_0x5535('0xc')]);router[_0x5535('0xd')]('/:id',auth[_0x5535('0xb')](),controller['destroy']);module[_0x5535('0xe')]=router;
\ No newline at end of file
index be0e57e..c25ae55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['exports','STRING','TEXT','sequelize'];(function(_0x15667d,_0x17a7f7){var _0x3a61bc=function(_0x58c88b){while(--_0x58c88b){_0x15667d['push'](_0x15667d['shift']());}};_0x3a61bc(++_0x17a7f7);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'use strict';var Sequelize=require(_0x7995('0x0'));module[_0x7995('0x1')]={'name':{'type':Sequelize[_0x7995('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x7995('0x2')]},'parent':{'type':Sequelize['STRING']},'table':{'type':Sequelize[_0x7995('0x2')]},'conditions':{'type':Sequelize[_0x7995('0x3')]},'joins':{'type':Sequelize[_0x7995('0x3')]}};
\ No newline at end of file
+var _0x7c09=['exports','STRING','TEXT'];(function(_0x471afd,_0x155975){var _0x1eb6ae=function(_0x196ad8){while(--_0x196ad8){_0x471afd['push'](_0x471afd['shift']());}};_0x1eb6ae(++_0x155975);}(_0x7c09,0x102));var _0x97c0=function(_0x19b561,_0x2f9851){_0x19b561=_0x19b561-0x0;var _0x5e39a1=_0x7c09[_0x19b561];return _0x5e39a1;};'use strict';var Sequelize=require('sequelize');module[_0x97c0('0x0')]={'name':{'type':Sequelize[_0x97c0('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0x97c0('0x1')]},'table':{'type':Sequelize[_0x97c0('0x1')]},'conditions':{'type':Sequelize[_0x97c0('0x2')]},'joins':{'type':Sequelize[_0x97c0('0x2')]}};
\ No newline at end of file
index b545fea..bc5d206 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c5a=['filters','intersection','fields','attributes','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','type','options','AnalyticCustomReport','includeAll','include','findAll','rows','keys','length','find','catch','create','body','user','role','get','Reports','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','preview','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)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20NOT\x20EMPTY','rules','group','field','condition','getFields','Sequelize','Please\x20insert\x20at\x20least\x20one\x20field','AnalyticMetric','keyBy','from','MetricId','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','foreignTable','foreignKey','%s.%s\x20=\x20%s.%s','parentKey','conditions','clone','debug','Limited\x20Query:','toString','sequelize','QueryTypes','left_join','SEC_TO_TIME(%s)','ROUND(%s)','IS\x20EMPTY','operator','ValidationErrorItem','select','table','metric','output','fullPath','%s-%s.%s','randomstring','generate','csv','custom','AnalyticExtractedReport','cdr','startDate','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','info','child_process','../../files/reports','savename','countTable','COUNT(*)','SELECT','run','runReport','value','eml-format','rimraf','fast-json-patch','request-promise','bluebird','mustache','path','ejs','fs-extra','lodash','squel','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/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','status','json','offset','undefined','count','set','Content-Range','reject','update','destroy','UserProfileResource','then','end','name','send','index','map','rawAttributes','fieldName','key','model','query'];(function(_0x3d2534,_0x4d5dcc){var _0x3f38c0=function(_0x51d1f6){while(--_0x51d1f6){_0x3d2534['push'](_0x3d2534['shift']());}};_0x3f38c0(++_0x4d5dcc);}(_0x4c5a,0x1c0));var _0xa4c5=function(_0x1c2ad4,_0x42b3bb){_0x1c2ad4=_0x1c2ad4-0x0;var _0x129a4e=_0x4c5a[_0x1c2ad4];return _0x129a4e;};'use strict';var emlformat=require(_0xa4c5('0x0'));var rimraf=require(_0xa4c5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa4c5('0x2'));var rp=require(_0xa4c5('0x3'));var moment=require('moment');var BPromise=require(_0xa4c5('0x4'));var Mustache=require(_0xa4c5('0x5'));var util=require('util');var path=require(_0xa4c5('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xa4c5('0x7'));var fs=require('fs');var fs_extra=require(_0xa4c5('0x8'));var _=require(_0xa4c5('0x9'));var squel=require(_0xa4c5('0xa'));var crypto=require('crypto');var jsforce=require(_0xa4c5('0xb'));var deskjs=require(_0xa4c5('0xc'));var toCsv=require(_0xa4c5('0xd'));var querystring=require(_0xa4c5('0xe'));var Papa=require('papaparse');var Redis=require(_0xa4c5('0xf'));var authService=require(_0xa4c5('0x10'));var qs=require(_0xa4c5('0x11'));var as=require(_0xa4c5('0x12'));var hardwareService=require(_0xa4c5('0x13'));var logger=require(_0xa4c5('0x14'))(_0xa4c5('0x15'));var utils=require(_0xa4c5('0x16'));var config=require(_0xa4c5('0x17'));var licenseUtil=require(_0xa4c5('0x18'));var db=require(_0xa4c5('0x19'))['db'];var dbH=require('../../mysqldb')[_0xa4c5('0x1a')];function respondWithStatusCode(_0x1ee5b6,_0x405327){_0x405327=_0x405327||0xcc;return function(_0x73d01c){if(_0x73d01c){return _0x1ee5b6[_0xa4c5('0x1b')](_0x405327);}return _0x1ee5b6[_0xa4c5('0x1c')](_0x405327)['end']();};}function respondWithResult(_0x44c912,_0x4dcc51){_0x4dcc51=_0x4dcc51||0xc8;return function(_0x29fbf7){if(_0x29fbf7){return _0x44c912['status'](_0x4dcc51)[_0xa4c5('0x1d')](_0x29fbf7);}};}function respondWithFilteredResult(_0x47bc0c,_0x2b4099){return function(_0x2a4950){if(_0x2a4950){var _0xad448f=typeof _0x2b4099[_0xa4c5('0x1e')]===_0xa4c5('0x1f')&&typeof _0x2b4099['limit']===_0xa4c5('0x1f');var _0x3daeab=_0x2a4950[_0xa4c5('0x20')];var _0x5769d8=_0xad448f?0x0:_0x2b4099['offset'];var _0x6c85b2=_0xad448f?_0x2a4950[_0xa4c5('0x20')]:_0x2b4099[_0xa4c5('0x1e')]+_0x2b4099['limit'];var _0x379fc2;if(_0x6c85b2>=_0x3daeab){_0x6c85b2=_0x3daeab;_0x379fc2=0xc8;}else{_0x379fc2=0xce;}_0x47bc0c[_0xa4c5('0x1c')](_0x379fc2);return _0x47bc0c[_0xa4c5('0x21')](_0xa4c5('0x22'),_0x5769d8+'-'+_0x6c85b2+'/'+_0x3daeab)[_0xa4c5('0x1d')](_0x2a4950);}return null;};}function patchUpdates(_0x4890c1){return function(_0x109546){try{jsonpatch['apply'](_0x109546,_0x4890c1,!![]);}catch(_0x547c2a){return BPromise[_0xa4c5('0x23')](_0x547c2a);}return _0x109546['save']();};}function saveUpdates(_0x47fd8e,_0x565c99){return function(_0x15fdd2){if(_0x15fdd2){return _0x15fdd2[_0xa4c5('0x24')](_0x47fd8e)['then'](function(_0x4aa906){return _0x4aa906;});}return null;};}function removeEntity(_0x287d99,_0x5de749){return function(_0x129d79){if(_0x129d79){return _0x129d79[_0xa4c5('0x25')]()['then'](function(){var _0x5acedf=_0x129d79['get']({'plain':!![]});var _0xdcf314='CustomReports';return db[_0xa4c5('0x26')]['destroy']({'where':{'type':_0xdcf314,'resourceId':_0x5acedf['id']}})[_0xa4c5('0x27')](function(){return _0x129d79;});})[_0xa4c5('0x27')](function(){_0x287d99['status'](0xcc)[_0xa4c5('0x28')]();});}};}function handleEntityNotFound(_0x56ab35,_0x8a4c13){return function(_0x1106f1){if(!_0x1106f1){_0x56ab35[_0xa4c5('0x1b')](0x194);}return _0x1106f1;};}function handleError(_0x38a3cc,_0x4b5620){_0x4b5620=_0x4b5620||0x1f4;return function(_0x271706){logger['error'](_0x271706['stack']);if(_0x271706[_0xa4c5('0x29')]){delete _0x271706[_0xa4c5('0x29')];}_0x38a3cc[_0xa4c5('0x1c')](_0x4b5620)[_0xa4c5('0x2a')](_0x271706);};}exports[_0xa4c5('0x2b')]=function(_0x281754,_0x1b57c9){var _0x57abe3={},_0x40c039={},_0xe6993f={'count':0x0,'rows':[]};var _0x21051e=_[_0xa4c5('0x2c')](db['AnalyticCustomReport'][_0xa4c5('0x2d')],function(_0x287257){return{'name':_0x287257[_0xa4c5('0x2e')],'type':_0x287257['type'][_0xa4c5('0x2f')]};});_0x40c039[_0xa4c5('0x30')]=_['map'](_0x21051e,'name');_0x40c039[_0xa4c5('0x31')]=_['keys'](_0x281754[_0xa4c5('0x31')]);_0x40c039[_0xa4c5('0x32')]=_[_0xa4c5('0x33')](_0x40c039['model'],_0x40c039['query']);_0x57abe3['attributes']=_[_0xa4c5('0x33')](_0x40c039[_0xa4c5('0x30')],qs[_0xa4c5('0x34')](_0x281754[_0xa4c5('0x31')][_0xa4c5('0x34')]));_0x57abe3[_0xa4c5('0x35')]=_0x57abe3[_0xa4c5('0x35')]['length']?_0x57abe3[_0xa4c5('0x35')]:_0x40c039[_0xa4c5('0x30')];if(!_0x281754['query'][_0xa4c5('0x36')](_0xa4c5('0x37'))){_0x57abe3[_0xa4c5('0x38')]=qs[_0xa4c5('0x38')](_0x281754[_0xa4c5('0x31')]['limit']);_0x57abe3[_0xa4c5('0x1e')]=qs[_0xa4c5('0x1e')](_0x281754['query']['offset']);}_0x57abe3[_0xa4c5('0x39')]=qs[_0xa4c5('0x3a')](_0x281754[_0xa4c5('0x31')][_0xa4c5('0x3a')]);_0x57abe3[_0xa4c5('0x3b')]=qs[_0xa4c5('0x32')](_[_0xa4c5('0x3c')](_0x281754['query'],_0x40c039[_0xa4c5('0x32')]),_0x21051e);if(_0x281754[_0xa4c5('0x31')]['filter']){_0x57abe3[_0xa4c5('0x3b')]=_[_0xa4c5('0x3d')](_0x57abe3[_0xa4c5('0x3b')],{'$or':_[_0xa4c5('0x2c')](_0x21051e,function(_0x568c4d){if(_0x568c4d[_0xa4c5('0x3e')]!=='VIRTUAL'){var _0x2363fd={};_0x2363fd[_0x568c4d['name']]={'$like':'%'+_0x281754[_0xa4c5('0x31')]['filter']+'%'};return _0x2363fd;}})});}_0x57abe3=_[_0xa4c5('0x3d')]({},_0x57abe3,_0x281754[_0xa4c5('0x3f')]);var _0x1a9bb3={'where':_0x57abe3[_0xa4c5('0x3b')]};return db[_0xa4c5('0x40')]['count'](_0x1a9bb3)[_0xa4c5('0x27')](function(_0x588e84){_0xe6993f[_0xa4c5('0x20')]=_0x588e84;if(_0x281754[_0xa4c5('0x31')][_0xa4c5('0x41')]){_0x57abe3[_0xa4c5('0x42')]=[{'all':!![]}];}return db['AnalyticCustomReport'][_0xa4c5('0x43')](_0x57abe3);})['then'](function(_0x410fde){_0xe6993f[_0xa4c5('0x44')]=_0x410fde;return _0xe6993f;})['then'](respondWithFilteredResult(_0x1b57c9,_0x57abe3))['catch'](handleError(_0x1b57c9,null));};exports['show']=function(_0x448cca,_0x40618f){var _0xadf767={'raw':![],'where':{'id':_0x448cca['params']['id']}},_0xe8ed15={};_0xe8ed15[_0xa4c5('0x30')]=_[_0xa4c5('0x45')](db['AnalyticCustomReport']['rawAttributes']);_0xe8ed15['query']=_[_0xa4c5('0x45')](_0x448cca[_0xa4c5('0x31')]);_0xe8ed15[_0xa4c5('0x32')]=_['intersection'](_0xe8ed15['model'],_0xe8ed15[_0xa4c5('0x31')]);_0xadf767['attributes']=_[_0xa4c5('0x33')](_0xe8ed15['model'],qs[_0xa4c5('0x34')](_0x448cca[_0xa4c5('0x31')][_0xa4c5('0x34')]));_0xadf767[_0xa4c5('0x35')]=_0xadf767[_0xa4c5('0x35')][_0xa4c5('0x46')]?_0xadf767[_0xa4c5('0x35')]:_0xe8ed15['model'];if(_0x448cca[_0xa4c5('0x31')]['includeAll']){_0xadf767['include']=[{'all':!![]}];}_0xadf767=_['merge']({},_0xadf767,_0x448cca[_0xa4c5('0x3f')]);return db[_0xa4c5('0x40')][_0xa4c5('0x47')](_0xadf767)['then'](handleEntityNotFound(_0x40618f,null))['then'](respondWithResult(_0x40618f,null))[_0xa4c5('0x48')](handleError(_0x40618f,null));};exports[_0xa4c5('0x49')]=function(_0x353496,_0x4e2503){return db[_0xa4c5('0x40')][_0xa4c5('0x49')](_0x353496[_0xa4c5('0x4a')],{})[_0xa4c5('0x27')](function(_0x1dcbcf){var _0x393ef7=_0x353496[_0xa4c5('0x4b')]['get']({'plain':!![]});if(!_0x393ef7)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x393ef7[_0xa4c5('0x4c')]==='user'){var _0x4a084e=_0x1dcbcf[_0xa4c5('0x4d')]({'plain':!![]});var _0x16a54c=_0xa4c5('0x4e');return db[_0xa4c5('0x4f')][_0xa4c5('0x47')]({'where':{'name':_0x16a54c,'userProfileId':_0x393ef7[_0xa4c5('0x50')]},'raw':!![]})[_0xa4c5('0x27')](function(_0x351215){if(_0x351215&&_0x351215[_0xa4c5('0x51')]===0x0){return db[_0xa4c5('0x26')][_0xa4c5('0x49')]({'name':_0x4a084e['name'],'resourceId':_0x4a084e['id'],'type':'CustomReports','sectionId':_0x351215['id']},{})[_0xa4c5('0x27')](function(){return _0x1dcbcf;});}else{return _0x1dcbcf;}})[_0xa4c5('0x48')](function(_0x5a0b2d){logger[_0xa4c5('0x52')](_0xa4c5('0x53'),_0x5a0b2d);throw _0x5a0b2d;});}return _0x1dcbcf;})[_0xa4c5('0x27')](respondWithResult(_0x4e2503,0xc9))[_0xa4c5('0x48')](handleError(_0x4e2503,null));};exports[_0xa4c5('0x24')]=function(_0x47c018,_0x419bb2){if(_0x47c018['body']['id']){delete _0x47c018[_0xa4c5('0x4a')]['id'];}return db[_0xa4c5('0x40')]['find']({'where':{'id':_0x47c018[_0xa4c5('0x54')]['id']}})['then'](handleEntityNotFound(_0x419bb2,null))['then'](saveUpdates(_0x47c018[_0xa4c5('0x4a')],null))[_0xa4c5('0x27')](respondWithResult(_0x419bb2,null))[_0xa4c5('0x48')](handleError(_0x419bb2,null));};exports['destroy']=function(_0x50f370,_0x774ce6){return db[_0xa4c5('0x40')]['find']({'where':{'id':_0x50f370[_0xa4c5('0x54')]['id']}})[_0xa4c5('0x27')](handleEntityNotFound(_0x774ce6,null))[_0xa4c5('0x27')](removeEntity(_0x774ce6,null))[_0xa4c5('0x48')](handleError(_0x774ce6,null));};exports[_0xa4c5('0x55')]=function(_0x274cb4,_0x5c9bdc){var _0x2ff696=0xa;var _0x568766=[_0xa4c5('0x56'),'left_join',_0xa4c5('0x57'),_0xa4c5('0x58')];var _0x31c37a={'SUM':_0xa4c5('0x59'),'COUNT':_0xa4c5('0x5a'),'COUNT DISTINCT':_0xa4c5('0x5b'),'MAX':'MAX(%s)','MIN':_0xa4c5('0x5c'),'AVG':_0xa4c5('0x5d'),'GROUP_CONCAT':_0xa4c5('0x5e'),'GROUP_CONCAT ASC':_0xa4c5('0x5f'),'GROUP_CONCAT DESC':_0xa4c5('0x60')};var _0xd2a4f2={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xa4c5('0x61'),'HOUR':_0xa4c5('0x62'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0xa4c5('0x63')};var _0x7dd707=function(_0xe85930){return!_[_0xa4c5('0x64')]([_0xa4c5('0x65'),_0xa4c5('0x66'),'IS\x20EMPTY',_0xa4c5('0x67')],_0xe85930);};var _0x135bba=function(_0x27ad75){if(!_0x27ad75||!_0x27ad75[_0xa4c5('0x68')][_0xa4c5('0x46')]){return'';}for(var _0xe4b3f4='(',_0x5386b9=0x0;_0x5386b9<_0x27ad75[_0xa4c5('0x68')][_0xa4c5('0x46')];_0x5386b9+=0x1){_0x5386b9>0x0&&(_0xe4b3f4+='\x20'+_0x27ad75['operator']+'\x20');_0xe4b3f4+=_0x27ad75['rules'][_0x5386b9][_0xa4c5('0x69')]?_0x135bba(_0x27ad75[_0xa4c5('0x68')][_0x5386b9][_0xa4c5('0x69')]):_0x27ad75['rules'][_0x5386b9][_0xa4c5('0x6a')]+'\x20'+_0x27ad75[_0xa4c5('0x68')][_0x5386b9]['condition']+(_0x7dd707(_0x27ad75[_0xa4c5('0x68')][_0x5386b9][_0xa4c5('0x6b')])?'\x20'+_0x27ad75['rules'][_0x5386b9]['value']:'');}return _0xe4b3f4+')';};var _0x141a95={'where':{'id':_0x274cb4[_0xa4c5('0x54')]['id']}},_0x1449ae,_0x5ae88e,_0x128805,_0x1e5cf8,_0x54efe4;_0x141a95=_[_0xa4c5('0x3d')]({},_0x141a95,_0x274cb4[_0xa4c5('0x3f')]);return db[_0xa4c5('0x40')][_0xa4c5('0x47')](_0x141a95)[_0xa4c5('0x27')](function(_0x2ff202){if(_0x2ff202){_0x1449ae=_0x2ff202;return _0x2ff202[_0xa4c5('0x6c')]();}return null;})[_0xa4c5('0x27')](function(_0x4d1551){if(_0x4d1551){if(!_0x4d1551[_0xa4c5('0x46')]){throw new db[(_0xa4c5('0x6d'))]['ValidationErrorItem'](_0xa4c5('0x6e'),0x193);}_0x5ae88e=_0x4d1551;return db[_0xa4c5('0x6f')][_0xa4c5('0x43')]({'raw':!![]});}return null;})[_0xa4c5('0x27')](function(_0x5c19d4){if(_0x5c19d4){_0x128805=_[_0xa4c5('0x70')](_0x5c19d4,'id');var _0x1da8b7;var _0x4c7b6e=squel['select']();_0x4c7b6e[_0xa4c5('0x71')](_0x1449ae['table']);for(var _0xf299ba=0x0;_0xf299ba<_0x5ae88e[_0xa4c5('0x46')];_0xf299ba+=0x1){_0x1da8b7=_0x5ae88e[_0xf299ba][_0xa4c5('0x72')]?_0x128805[_0x5ae88e[_0xf299ba][_0xa4c5('0x72')]]['metric']:_0x5ae88e[_0xf299ba]['field'];_0x1da8b7=_0x5ae88e[_0xf299ba][_0xa4c5('0x73')]?_[_0xa4c5('0x74')](_0x31c37a[_0x5ae88e[_0xf299ba][_0xa4c5('0x73')]],'%s',_0x1da8b7):_0x1da8b7;_0x1da8b7=_0x5ae88e[_0xf299ba][_0xa4c5('0x75')]?_[_0xa4c5('0x74')](_0xd2a4f2[_0x5ae88e[_0xf299ba][_0xa4c5('0x75')]],'%s',_0x1da8b7):_0x1da8b7;if(_0x5ae88e[_0xf299ba][_0xa4c5('0x76')]){_0x4c7b6e[_0xa4c5('0x69')](_0x1da8b7);}_0x5ae88e[_0xf299ba][_0xa4c5('0x77')]&&_0x4c7b6e['order'](_0x1da8b7,_0x5ae88e[_0xf299ba][_0xa4c5('0x77')]===_0xa4c5('0x78')?![]:!![]);_0x4c7b6e[_0xa4c5('0x6a')](_0x1da8b7,_0x5ae88e[_0xf299ba][_0xa4c5('0x79')]||_0x1da8b7);}if(_0x1449ae[_0xa4c5('0x7a')]){_0x1449ae['joins']=JSON[_0xa4c5('0x7b')](_0x1449ae[_0xa4c5('0x7a')]);for(var _0x3d357d=0x0;_0x3d357d<_0x1449ae['joins'][_0xa4c5('0x46')];_0x3d357d+=0x1){if(_0x1449ae[_0xa4c5('0x7a')][_0x3d357d][_0xa4c5('0x3e')]&&_[_0xa4c5('0x64')](_0x568766,_0x1449ae['joins'][_0x3d357d][_0xa4c5('0x3e')])&&_0x1449ae[_0xa4c5('0x7a')][_0x3d357d]['parentKey']&&_0x1449ae['joins'][_0x3d357d][_0xa4c5('0x7c')]&&_0x1449ae['joins'][_0x3d357d][_0xa4c5('0x7d')]){_0x4c7b6e[_0x1449ae[_0xa4c5('0x7a')][_0x3d357d][_0xa4c5('0x3e')]](_0x1449ae[_0xa4c5('0x7a')][_0x3d357d][_0xa4c5('0x7c')],null,util[_0xa4c5('0x75')](_0xa4c5('0x7e'),_0x1449ae['table'],_0x1449ae['joins'][_0x3d357d][_0xa4c5('0x7f')],_0x1449ae[_0xa4c5('0x7a')][_0x3d357d][_0xa4c5('0x7c')],_0x1449ae['joins'][_0x3d357d]['foreignKey']));}}}if(_0x1449ae['conditions']){_0x1449ae[_0xa4c5('0x80')]=JSON['parse'](_0x1449ae[_0xa4c5('0x80')]);_0x4c7b6e[_0xa4c5('0x3b')](_0x135bba(_0x1449ae[_0xa4c5('0x80')]['group']));}_0x54efe4=_0x4c7b6e[_0xa4c5('0x81')]();_0x4c7b6e['limit'](_0x2ff696);_0x4c7b6e[_0xa4c5('0x1e')](0x0);logger[_0xa4c5('0x82')](_0xa4c5('0x83'),_0x4c7b6e[_0xa4c5('0x84')]());return dbH['sequelize'][_0xa4c5('0x31')](_0x4c7b6e['toString'](),{'type':dbH[_0xa4c5('0x85')][_0xa4c5('0x86')]['SELECT']});}})[_0xa4c5('0x27')](respondWithResult(_0x5c9bdc,null))[_0xa4c5('0x48')](handleError(_0x5c9bdc,null));};function runReport(_0x129780,_0x470a0b,_0x7c17d8){var _0x114f35=_0x470a0b[_0xa4c5('0x29')];var _0x40c2af=0xa;var _0x14f818=[_0xa4c5('0x56'),_0xa4c5('0x87'),_0xa4c5('0x57'),'cross_join'];var _0x2264b0={'SUM':_0xa4c5('0x59'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xa4c5('0x5b'),'MAX':'MAX(%s)','MIN':_0xa4c5('0x5c'),'AVG':_0xa4c5('0x5d'),'GROUP_CONCAT':_0xa4c5('0x5e'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xa4c5('0x60')};var _0x15f9f5={'SEC_TO_TIME':_0xa4c5('0x88'),'DATE':_0xa4c5('0x61'),'HOUR':_0xa4c5('0x62'),'ROUND':_0xa4c5('0x89'),'UNIX_TIMESTAMP':'UNIX_TIMESTAMP(%s)'};var _0x2a5209=function(_0x46318b){return!_['includes'](['IS\x20NULL',_0xa4c5('0x66'),_0xa4c5('0x8a'),_0xa4c5('0x67')],_0x46318b);};var _0x160424=function(_0x33e58b){if(!_0x33e58b||!_0x33e58b[_0xa4c5('0x68')][_0xa4c5('0x46')]){return'';}for(var _0x4ee1f7='(',_0x382c64=0x0;_0x382c64<_0x33e58b[_0xa4c5('0x68')][_0xa4c5('0x46')];_0x382c64+=0x1){_0x382c64>0x0&&(_0x4ee1f7+='\x20'+_0x33e58b[_0xa4c5('0x8b')]+'\x20');_0x4ee1f7+=_0x33e58b['rules'][_0x382c64][_0xa4c5('0x69')]?_0x160424(_0x33e58b[_0xa4c5('0x68')][_0x382c64][_0xa4c5('0x69')]):_0x33e58b[_0xa4c5('0x68')][_0x382c64][_0xa4c5('0x6a')]+'\x20'+_0x33e58b[_0xa4c5('0x68')][_0x382c64][_0xa4c5('0x6b')]+(_0x2a5209(_0x33e58b[_0xa4c5('0x68')][_0x382c64][_0xa4c5('0x6b')])?'\x20'+_0x33e58b[_0xa4c5('0x68')][_0x382c64]['value']:'');}return _0x4ee1f7+')';};var _0x3f7df6={'where':{'id':_0x129780['id']}},_0x5d8983,_0x8de116,_0x4a911f,_0x4fca6b,_0x33212a;_0x3f7df6=_['merge']({},_0x3f7df6,_0x7c17d8);return db[_0xa4c5('0x40')][_0xa4c5('0x47')](_0x3f7df6)[_0xa4c5('0x27')](function(_0x13b9a0){if(_0x13b9a0){_0x5d8983=_0x13b9a0;return _0x13b9a0[_0xa4c5('0x6c')]();}return null;})[_0xa4c5('0x27')](function(_0x3b7847){if(_0x3b7847){if(!_0x3b7847[_0xa4c5('0x46')]){throw new db[(_0xa4c5('0x6d'))][(_0xa4c5('0x8c'))](_0xa4c5('0x6e'),0x193);}_0x8de116=_0x3b7847;return db[_0xa4c5('0x6f')][_0xa4c5('0x43')]({'raw':!![]});}return null;})['then'](function(_0x3315c6){if(_0x3315c6){_0x4a911f=_[_0xa4c5('0x70')](_0x3315c6,'id');var _0x2ee764;var _0x11735c=squel[_0xa4c5('0x8d')]();_0x11735c['from'](_0x5d8983[_0xa4c5('0x8e')]);for(var _0xe1055=0x0;_0xe1055<_0x8de116[_0xa4c5('0x46')];_0xe1055+=0x1){_0x2ee764=_0x8de116[_0xe1055][_0xa4c5('0x72')]?_0x4a911f[_0x8de116[_0xe1055][_0xa4c5('0x72')]][_0xa4c5('0x8f')]:_0x8de116[_0xe1055][_0xa4c5('0x6a')];_0x2ee764=_0x8de116[_0xe1055][_0xa4c5('0x73')]?_[_0xa4c5('0x74')](_0x2264b0[_0x8de116[_0xe1055][_0xa4c5('0x73')]],'%s',_0x2ee764):_0x2ee764;_0x2ee764=_0x8de116[_0xe1055][_0xa4c5('0x75')]?_[_0xa4c5('0x74')](_0x15f9f5[_0x8de116[_0xe1055]['format']],'%s',_0x2ee764):_0x2ee764;if(_0x8de116[_0xe1055][_0xa4c5('0x76')]){_0x11735c[_0xa4c5('0x69')](_0x2ee764);}_0x8de116[_0xe1055][_0xa4c5('0x77')]&&_0x11735c['order'](_0x2ee764,_0x8de116[_0xe1055][_0xa4c5('0x77')]===_0xa4c5('0x78')?![]:!![]);_0x11735c[_0xa4c5('0x6a')](_0x2ee764,_0x8de116[_0xe1055][_0xa4c5('0x79')]||_0x2ee764);}if(_0x5d8983[_0xa4c5('0x7a')]){_0x5d8983[_0xa4c5('0x7a')]=JSON['parse'](_0x5d8983[_0xa4c5('0x7a')]);for(var _0x512de7=0x0;_0x512de7<_0x5d8983[_0xa4c5('0x7a')][_0xa4c5('0x46')];_0x512de7+=0x1){if(_0x5d8983[_0xa4c5('0x7a')][_0x512de7][_0xa4c5('0x3e')]&&_[_0xa4c5('0x64')](_0x14f818,_0x5d8983[_0xa4c5('0x7a')][_0x512de7][_0xa4c5('0x3e')])&&_0x5d8983['joins'][_0x512de7]['parentKey']&&_0x5d8983['joins'][_0x512de7]['foreignTable']&&_0x5d8983['joins'][_0x512de7][_0xa4c5('0x7d')]){_0x11735c[_0x5d8983[_0xa4c5('0x7a')][_0x512de7]['type']](_0x5d8983[_0xa4c5('0x7a')][_0x512de7][_0xa4c5('0x7c')],null,util[_0xa4c5('0x75')](_0xa4c5('0x7e'),_0x5d8983[_0xa4c5('0x8e')],_0x5d8983['joins'][_0x512de7]['parentKey'],_0x5d8983[_0xa4c5('0x7a')][_0x512de7][_0xa4c5('0x7c')],_0x5d8983[_0xa4c5('0x7a')][_0x512de7][_0xa4c5('0x7d')]));}}}if(_0x5d8983[_0xa4c5('0x80')]){_0x5d8983[_0xa4c5('0x80')]=JSON['parse'](_0x5d8983[_0xa4c5('0x80')]);_0x11735c[_0xa4c5('0x3b')](_0x160424(_0x5d8983[_0xa4c5('0x80')][_0xa4c5('0x69')]));}_0x33212a=_0x11735c['clone']();_0x11735c[_0xa4c5('0x38')](_0x40c2af);_0x11735c[_0xa4c5('0x1e')](0x0);return;}})['then'](function(){if(_0x470a0b[_0xa4c5('0x90')]==='web'){return null;}var _0x5a43a3=_[_0xa4c5('0x3d')](_0x470a0b,{'name':_0x470a0b[_0xa4c5('0x91')]||_0x470a0b['name']||_0x5d8983['name'],'basename':_0x114f35,'savename':util[_0xa4c5('0x75')](_0xa4c5('0x92'),_0x470a0b['name']||_0x5d8983['name'],require(_0xa4c5('0x93'))[_0xa4c5('0x94')](0x4),_0x470a0b['output']||_0xa4c5('0x95')),'reportId':_0x5d8983['id'],'reportType':_0xa4c5('0x96')});return db[_0xa4c5('0x97')][_0xa4c5('0x49')](_0x5a43a3,{'raw':!![]});})['then'](function(_0x33d8b2){if(_0x5d8983[_0xa4c5('0x8e')]===_0xa4c5('0x98')){_0x33212a[_0xa4c5('0x3b')](_0x5d8983[_0xa4c5('0x8e')]+'.calldate\x20BETWEEN\x20?\x20AND\x20?',_0x470a0b[_0xa4c5('0x99')],_0x470a0b[_0xa4c5('0x9a')]);}else{_0x33212a['where'](_0x5d8983[_0xa4c5('0x8e')]+_0xa4c5('0x9b'),_0x470a0b['startDate'],_0x470a0b[_0xa4c5('0x9a')]);}if(_0x33d8b2){logger[_0xa4c5('0x9c')]('Run\x20Query:',_0x33212a[_0xa4c5('0x84')]());require(_0xa4c5('0x9d'))['fork'](path['join'](__dirname,'../../components/export/',_0x33d8b2[_0xa4c5('0x90')]),[_0x33d8b2['id'],_0x33212a[_0xa4c5('0x84')](),path['join'](__dirname,_0xa4c5('0x9e'),_0x33d8b2[_0xa4c5('0x9f')]),_0x114f35]);return _0x33d8b2;}else{var _0xff61e7=squel[_0xa4c5('0x8d')]();_0xff61e7['from']('('+_0x33212a[_0xa4c5('0x84')]()+')',_0xa4c5('0xa0'));_0xff61e7['field'](_0xa4c5('0xa1'),'count');_0x33212a[_0xa4c5('0x38')](_0x470a0b[_0xa4c5('0x38')]||_0x40c2af);_0x33212a[_0xa4c5('0x1e')](_0x470a0b['offset']||0x0);return dbH[_0xa4c5('0x85')]['query'](_0xff61e7[_0xa4c5('0x84')](),{'type':dbH['sequelize'][_0xa4c5('0x86')][_0xa4c5('0xa2')]})['then'](function(_0x67a6bb){if(!_0x67a6bb[_0xa4c5('0x46')]){_0x4fca6b=0x0;}else{_0x4fca6b=_0x67a6bb[0x0]['count']||0x0;}return dbH[_0xa4c5('0x85')][_0xa4c5('0x31')](_0x33212a[_0xa4c5('0x84')](),{'type':dbH[_0xa4c5('0x85')]['QueryTypes'][_0xa4c5('0xa2')]});})[_0xa4c5('0x27')](function(_0x20c0a4){return{'rows':_0x20c0a4||[],'count':_0x4fca6b};});}});}exports[_0xa4c5('0xa3')]=function(_0x8cfa2e,_0x1339b4){return runReport(_0x8cfa2e[_0xa4c5('0x54')],_0x8cfa2e['query'],_0x8cfa2e[_0xa4c5('0x3f')])['then'](respondWithResult(_0x1339b4,null))[_0xa4c5('0x48')](handleError(_0x1339b4,null));};exports[_0xa4c5('0xa4')]=runReport;exports[_0xa4c5('0x31')]=function(_0x570bfc,_0x23e4ad){var _0x462819=0xa;var _0x41c038=['join','left_join',_0xa4c5('0x57'),_0xa4c5('0x58')];var _0x4b074a={'SUM':_0xa4c5('0x59'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0xa4c5('0x5c'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xa4c5('0x5e'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xa4c5('0x60')};var _0x9f119c={'SEC_TO_TIME':_0xa4c5('0x88'),'DATE':_0xa4c5('0x61'),'HOUR':_0xa4c5('0x62'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0xa4c5('0x63')};var _0x118a17=function(_0xafc6ce){return!_[_0xa4c5('0x64')]([_0xa4c5('0x65'),'IS\x20NOT\x20NULL',_0xa4c5('0x8a'),_0xa4c5('0x67')],_0xafc6ce);};var _0x1a7cf6=function(_0xab9063){if(!_0xab9063||!_0xab9063[_0xa4c5('0x68')][_0xa4c5('0x46')]){return'';}for(var _0x2c5918='(',_0x43ed39=0x0;_0x43ed39<_0xab9063[_0xa4c5('0x68')][_0xa4c5('0x46')];_0x43ed39+=0x1){_0x43ed39>0x0&&(_0x2c5918+='\x20'+_0xab9063['operator']+'\x20');_0x2c5918+=_0xab9063['rules'][_0x43ed39]['group']?_0x1a7cf6(_0xab9063[_0xa4c5('0x68')][_0x43ed39][_0xa4c5('0x69')]):_0xab9063[_0xa4c5('0x68')][_0x43ed39][_0xa4c5('0x6a')]+'\x20'+_0xab9063['rules'][_0x43ed39][_0xa4c5('0x6b')]+(_0x118a17(_0xab9063[_0xa4c5('0x68')][_0x43ed39][_0xa4c5('0x6b')])?'\x20'+_0xab9063['rules'][_0x43ed39][_0xa4c5('0xa5')]:'');}return _0x2c5918+')';};var _0x25425f={'where':{'id':_0x570bfc[_0xa4c5('0x54')]['id']}},_0x55046e,_0x4cd138,_0x1794d6,_0x523163,_0x599026;_0x25425f=_[_0xa4c5('0x3d')]({},_0x25425f,_0x570bfc[_0xa4c5('0x3f')]);return db['AnalyticCustomReport'][_0xa4c5('0x47')](_0x25425f)[_0xa4c5('0x27')](function(_0x95b18c){if(_0x95b18c){_0x55046e=_0x95b18c;return _0x95b18c[_0xa4c5('0x6c')]();}return null;})[_0xa4c5('0x27')](function(_0x43bc8b){if(_0x43bc8b){if(!_0x43bc8b[_0xa4c5('0x46')]){throw new db[(_0xa4c5('0x6d'))][(_0xa4c5('0x8c'))](_0xa4c5('0x6e'),0x193);}_0x4cd138=_0x43bc8b;return db['AnalyticMetric']['findAll']({'raw':!![]});}return null;})[_0xa4c5('0x27')](function(_0x5b6c3f){if(_0x5b6c3f){_0x1794d6=_['keyBy'](_0x5b6c3f,'id');var _0x4143c4;var _0x99b1da=squel['select']();_0x99b1da[_0xa4c5('0x71')](_0x55046e[_0xa4c5('0x8e')]);for(var _0x124ab1=0x0;_0x124ab1<_0x4cd138[_0xa4c5('0x46')];_0x124ab1+=0x1){_0x4143c4=_0x4cd138[_0x124ab1][_0xa4c5('0x72')]?_0x1794d6[_0x4cd138[_0x124ab1]['MetricId']][_0xa4c5('0x8f')]:_0x4cd138[_0x124ab1][_0xa4c5('0x6a')];_0x4143c4=_0x4cd138[_0x124ab1][_0xa4c5('0x73')]?_[_0xa4c5('0x74')](_0x4b074a[_0x4cd138[_0x124ab1][_0xa4c5('0x73')]],'%s',_0x4143c4):_0x4143c4;_0x4143c4=_0x4cd138[_0x124ab1][_0xa4c5('0x75')]?_[_0xa4c5('0x74')](_0x9f119c[_0x4cd138[_0x124ab1][_0xa4c5('0x75')]],'%s',_0x4143c4):_0x4143c4;if(_0x4cd138[_0x124ab1]['groupBy']){_0x99b1da[_0xa4c5('0x69')](_0x4143c4);}_0x4cd138[_0x124ab1][_0xa4c5('0x77')]&&_0x99b1da[_0xa4c5('0x39')](_0x4143c4,_0x4cd138[_0x124ab1][_0xa4c5('0x77')]===_0xa4c5('0x78')?![]:!![]);_0x99b1da[_0xa4c5('0x6a')](_0x4143c4,_0x4cd138[_0x124ab1]['alias']||_0x4143c4);}if(_0x55046e[_0xa4c5('0x7a')]){_0x55046e['joins']=JSON[_0xa4c5('0x7b')](_0x55046e[_0xa4c5('0x7a')]);for(var _0x260821=0x0;_0x260821<_0x55046e[_0xa4c5('0x7a')][_0xa4c5('0x46')];_0x260821+=0x1){if(_0x55046e[_0xa4c5('0x7a')][_0x260821][_0xa4c5('0x3e')]&&_[_0xa4c5('0x64')](_0x41c038,_0x55046e[_0xa4c5('0x7a')][_0x260821][_0xa4c5('0x3e')])&&_0x55046e['joins'][_0x260821][_0xa4c5('0x7f')]&&_0x55046e['joins'][_0x260821][_0xa4c5('0x7c')]&&_0x55046e[_0xa4c5('0x7a')][_0x260821][_0xa4c5('0x7d')]){_0x99b1da[_0x55046e[_0xa4c5('0x7a')][_0x260821][_0xa4c5('0x3e')]](_0x55046e[_0xa4c5('0x7a')][_0x260821][_0xa4c5('0x7c')],null,util[_0xa4c5('0x75')]('%s.%s\x20=\x20%s.%s',_0x55046e['table'],_0x55046e['joins'][_0x260821][_0xa4c5('0x7f')],_0x55046e[_0xa4c5('0x7a')][_0x260821][_0xa4c5('0x7c')],_0x55046e[_0xa4c5('0x7a')][_0x260821][_0xa4c5('0x7d')]));}}}if(_0x55046e[_0xa4c5('0x80')]){_0x55046e['conditions']=JSON[_0xa4c5('0x7b')](_0x55046e[_0xa4c5('0x80')]);_0x99b1da[_0xa4c5('0x3b')](_0x1a7cf6(_0x55046e[_0xa4c5('0x80')][_0xa4c5('0x69')]));}_0x599026=_0x99b1da[_0xa4c5('0x81')]();_0x99b1da[_0xa4c5('0x38')](_0x462819);_0x99b1da['offset'](0x0);logger[_0xa4c5('0x82')](_0xa4c5('0x83'),_0x99b1da[_0xa4c5('0x84')]());return dbH['sequelize'][_0xa4c5('0x31')](_0x99b1da['toString'](),{'type':dbH[_0xa4c5('0x85')][_0xa4c5('0x86')]['SELECT']});}})[_0xa4c5('0x27')](function(){return{'sql':_0x599026[_0xa4c5('0x84')]()};})['then'](respondWithResult(_0x23e4ad,null))[_0xa4c5('0x48')](handleError(_0x23e4ad,null));};
\ No newline at end of file
+var _0x2b70=['toString','sequelize','QueryTypes','SELECT','SUM(%s)','SEC_TO_TIME(%s)','ROUND(%s)','operator','Please\x20insert\x20at\x20least\x20one\x20field','select','output','%s-%s.%s','randomstring','csv','custom','AnalyticExtractedReport','cdr','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','.createdAt\x20BETWEEN\x20?\x20AND\x20?','startDate','Run\x20Query:','fork','../../files/reports','savename','COUNT(*)','runReport','AnalyticMetric','clone','rimraf','fast-json-patch','request-promise','bluebird','util','sox','to-csv','ejs','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','dbH','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','destroy','get','CustomReports','UserProfileResource','error','stack','send','index','AnalyticCustomReport','rawAttributes','type','key','model','map','name','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Reports','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','preview','join','left_join','right_join','cross_join','COUNT(%s)','COUNT(DISTINCT\x20%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)','UNIX_TIMESTAMP(%s)','includes','IS\x20NULL','IS\x20NOT\x20NULL','IS\x20EMPTY','IS\x20NOT\x20EMPTY','rules','group','field','condition','value','getFields','Sequelize','ValidationErrorItem','findAll','keyBy','from','table','MetricId','metric','function','replace','format','groupBy','orderBy','DESC','alias','joins','parse','parentKey','foreignKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','debug','Limited\x20Query:'];(function(_0x2452d4,_0x4ad3ef){var _0x5f27ac=function(_0x482223){while(--_0x482223){_0x2452d4['push'](_0x2452d4['shift']());}};_0x5f27ac(++_0x4ad3ef);}(_0x2b70,0xc0));var _0x02b7=function(_0x4547d5,_0x91d898){_0x4547d5=_0x4547d5-0x0;var _0x81ad1f=_0x2b70[_0x4547d5];return _0x81ad1f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x02b7('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x02b7('0x1'));var rp=require(_0x02b7('0x2'));var moment=require('moment');var BPromise=require(_0x02b7('0x3'));var Mustache=require('mustache');var util=require(_0x02b7('0x4'));var path=require('path');var sox=require(_0x02b7('0x5'));var csv=require(_0x02b7('0x6'));var ejs=require(_0x02b7('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x02b7('0x8'));var squel=require(_0x02b7('0x9'));var crypto=require(_0x02b7('0xa'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x02b7('0x6'));var querystring=require(_0x02b7('0xb'));var Papa=require(_0x02b7('0xc'));var Redis=require(_0x02b7('0xd'));var authService=require(_0x02b7('0xe'));var qs=require(_0x02b7('0xf'));var as=require(_0x02b7('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x02b7('0x11'))(_0x02b7('0x12'));var utils=require('../../config/utils');var config=require(_0x02b7('0x13'));var licenseUtil=require(_0x02b7('0x14'));var db=require('../../mysqldb')['db'];var dbH=require(_0x02b7('0x15'))[_0x02b7('0x16')];function respondWithStatusCode(_0x39491a,_0x4554fc){_0x4554fc=_0x4554fc||0xcc;return function(_0x47af4b){if(_0x47af4b){return _0x39491a[_0x02b7('0x17')](_0x4554fc);}return _0x39491a['status'](_0x4554fc)[_0x02b7('0x18')]();};}function respondWithResult(_0x531043,_0x50f094){_0x50f094=_0x50f094||0xc8;return function(_0x4e5dc5){if(_0x4e5dc5){return _0x531043[_0x02b7('0x19')](_0x50f094)[_0x02b7('0x1a')](_0x4e5dc5);}};}function respondWithFilteredResult(_0x5aac92,_0x5d5ef3){return function(_0x1afe35){if(_0x1afe35){var _0x4124b1=typeof _0x5d5ef3[_0x02b7('0x1b')]===_0x02b7('0x1c')&&typeof _0x5d5ef3[_0x02b7('0x1d')]===_0x02b7('0x1c');var _0xcef925=_0x1afe35[_0x02b7('0x1e')];var _0x19ac85=_0x4124b1?0x0:_0x5d5ef3[_0x02b7('0x1b')];var _0x1fe5a1=_0x4124b1?_0x1afe35[_0x02b7('0x1e')]:_0x5d5ef3['offset']+_0x5d5ef3[_0x02b7('0x1d')];var _0x586ddb;if(_0x1fe5a1>=_0xcef925){_0x1fe5a1=_0xcef925;_0x586ddb=0xc8;}else{_0x586ddb=0xce;}_0x5aac92[_0x02b7('0x19')](_0x586ddb);return _0x5aac92['set'](_0x02b7('0x1f'),_0x19ac85+'-'+_0x1fe5a1+'/'+_0xcef925)[_0x02b7('0x1a')](_0x1afe35);}return null;};}function patchUpdates(_0x6fb2da){return function(_0x5c1736){try{jsonpatch['apply'](_0x5c1736,_0x6fb2da,!![]);}catch(_0x4cafcc){return BPromise[_0x02b7('0x20')](_0x4cafcc);}return _0x5c1736[_0x02b7('0x21')]();};}function saveUpdates(_0x418847,_0x5228f4){return function(_0x208ef0){if(_0x208ef0){return _0x208ef0[_0x02b7('0x22')](_0x418847)[_0x02b7('0x23')](function(_0x4462a9){return _0x4462a9;});}return null;};}function removeEntity(_0x18c71d,_0x2f66d8){return function(_0xe4c8e2){if(_0xe4c8e2){return _0xe4c8e2[_0x02b7('0x24')]()[_0x02b7('0x23')](function(){var _0x138851=_0xe4c8e2[_0x02b7('0x25')]({'plain':!![]});var _0x408483=_0x02b7('0x26');return db[_0x02b7('0x27')][_0x02b7('0x24')]({'where':{'type':_0x408483,'resourceId':_0x138851['id']}})['then'](function(){return _0xe4c8e2;});})[_0x02b7('0x23')](function(){_0x18c71d[_0x02b7('0x19')](0xcc)[_0x02b7('0x18')]();});}};}function handleEntityNotFound(_0x5ea42f,_0x5543be){return function(_0x2fa2b0){if(!_0x2fa2b0){_0x5ea42f[_0x02b7('0x17')](0x194);}return _0x2fa2b0;};}function handleError(_0x55a5a3,_0x3c6a6a){_0x3c6a6a=_0x3c6a6a||0x1f4;return function(_0x5f20a3){logger[_0x02b7('0x28')](_0x5f20a3[_0x02b7('0x29')]);if(_0x5f20a3['name']){delete _0x5f20a3['name'];}_0x55a5a3['status'](_0x3c6a6a)[_0x02b7('0x2a')](_0x5f20a3);};}exports[_0x02b7('0x2b')]=function(_0x206f2d,_0x46fd93){var _0x3dd543={},_0x44d0d8={},_0x23b0d4={'count':0x0,'rows':[]};var _0x485368=_['map'](db[_0x02b7('0x2c')][_0x02b7('0x2d')],function(_0x277489){return{'name':_0x277489['fieldName'],'type':_0x277489[_0x02b7('0x2e')][_0x02b7('0x2f')]};});_0x44d0d8[_0x02b7('0x30')]=_[_0x02b7('0x31')](_0x485368,_0x02b7('0x32'));_0x44d0d8['query']=_[_0x02b7('0x33')](_0x206f2d[_0x02b7('0x34')]);_0x44d0d8['filters']=_[_0x02b7('0x35')](_0x44d0d8[_0x02b7('0x30')],_0x44d0d8['query']);_0x3dd543[_0x02b7('0x36')]=_[_0x02b7('0x35')](_0x44d0d8[_0x02b7('0x30')],qs[_0x02b7('0x37')](_0x206f2d[_0x02b7('0x34')][_0x02b7('0x37')]));_0x3dd543['attributes']=_0x3dd543[_0x02b7('0x36')][_0x02b7('0x38')]?_0x3dd543[_0x02b7('0x36')]:_0x44d0d8[_0x02b7('0x30')];if(!_0x206f2d[_0x02b7('0x34')][_0x02b7('0x39')](_0x02b7('0x3a'))){_0x3dd543[_0x02b7('0x1d')]=qs[_0x02b7('0x1d')](_0x206f2d['query'][_0x02b7('0x1d')]);_0x3dd543['offset']=qs[_0x02b7('0x1b')](_0x206f2d[_0x02b7('0x34')][_0x02b7('0x1b')]);}_0x3dd543[_0x02b7('0x3b')]=qs[_0x02b7('0x3c')](_0x206f2d[_0x02b7('0x34')]['sort']);_0x3dd543[_0x02b7('0x3d')]=qs[_0x02b7('0x3e')](_[_0x02b7('0x3f')](_0x206f2d['query'],_0x44d0d8['filters']),_0x485368);if(_0x206f2d[_0x02b7('0x34')][_0x02b7('0x40')]){_0x3dd543[_0x02b7('0x3d')]=_[_0x02b7('0x41')](_0x3dd543[_0x02b7('0x3d')],{'$or':_[_0x02b7('0x31')](_0x485368,function(_0x2b367f){if(_0x2b367f[_0x02b7('0x2e')]!==_0x02b7('0x42')){var _0x56a1b2={};_0x56a1b2[_0x2b367f[_0x02b7('0x32')]]={'$like':'%'+_0x206f2d[_0x02b7('0x34')][_0x02b7('0x40')]+'%'};return _0x56a1b2;}})});}_0x3dd543=_['merge']({},_0x3dd543,_0x206f2d[_0x02b7('0x43')]);var _0xf26f32={'where':_0x3dd543['where']};return db[_0x02b7('0x2c')][_0x02b7('0x1e')](_0xf26f32)[_0x02b7('0x23')](function(_0x4fee4e){_0x23b0d4[_0x02b7('0x1e')]=_0x4fee4e;if(_0x206f2d[_0x02b7('0x34')][_0x02b7('0x44')]){_0x3dd543[_0x02b7('0x45')]=[{'all':!![]}];}return db[_0x02b7('0x2c')]['findAll'](_0x3dd543);})[_0x02b7('0x23')](function(_0x3b8278){_0x23b0d4[_0x02b7('0x46')]=_0x3b8278;return _0x23b0d4;})[_0x02b7('0x23')](respondWithFilteredResult(_0x46fd93,_0x3dd543))[_0x02b7('0x47')](handleError(_0x46fd93,null));};exports[_0x02b7('0x48')]=function(_0x9c0da0,_0xffff47){var _0x3273cf={'raw':![],'where':{'id':_0x9c0da0[_0x02b7('0x49')]['id']}},_0x579db2={};_0x579db2[_0x02b7('0x30')]=_['keys'](db[_0x02b7('0x2c')][_0x02b7('0x2d')]);_0x579db2[_0x02b7('0x34')]=_[_0x02b7('0x33')](_0x9c0da0[_0x02b7('0x34')]);_0x579db2[_0x02b7('0x3e')]=_['intersection'](_0x579db2['model'],_0x579db2[_0x02b7('0x34')]);_0x3273cf[_0x02b7('0x36')]=_[_0x02b7('0x35')](_0x579db2[_0x02b7('0x30')],qs['fields'](_0x9c0da0[_0x02b7('0x34')]['fields']));_0x3273cf[_0x02b7('0x36')]=_0x3273cf['attributes'][_0x02b7('0x38')]?_0x3273cf[_0x02b7('0x36')]:_0x579db2[_0x02b7('0x30')];if(_0x9c0da0[_0x02b7('0x34')][_0x02b7('0x44')]){_0x3273cf[_0x02b7('0x45')]=[{'all':!![]}];}_0x3273cf=_[_0x02b7('0x41')]({},_0x3273cf,_0x9c0da0['options']);return db[_0x02b7('0x2c')][_0x02b7('0x4a')](_0x3273cf)[_0x02b7('0x23')](handleEntityNotFound(_0xffff47,null))[_0x02b7('0x23')](respondWithResult(_0xffff47,null))['catch'](handleError(_0xffff47,null));};exports[_0x02b7('0x4b')]=function(_0x367c4b,_0x454feb){return db[_0x02b7('0x2c')][_0x02b7('0x4b')](_0x367c4b[_0x02b7('0x4c')],{})[_0x02b7('0x23')](function(_0x588439){var _0x5dbbfb=_0x367c4b[_0x02b7('0x4d')]['get']({'plain':!![]});if(!_0x5dbbfb)throw new Error(_0x02b7('0x4e'));if(_0x5dbbfb['role']===_0x02b7('0x4d')){var _0x1c579f=_0x588439[_0x02b7('0x25')]({'plain':!![]});var _0x1f4876=_0x02b7('0x4f');return db[_0x02b7('0x50')][_0x02b7('0x4a')]({'where':{'name':_0x1f4876,'userProfileId':_0x5dbbfb[_0x02b7('0x51')]},'raw':!![]})[_0x02b7('0x23')](function(_0x288ae6){if(_0x288ae6&&_0x288ae6['autoAssociation']===0x0){return db[_0x02b7('0x27')][_0x02b7('0x4b')]({'name':_0x1c579f[_0x02b7('0x32')],'resourceId':_0x1c579f['id'],'type':_0x02b7('0x26'),'sectionId':_0x288ae6['id']},{})[_0x02b7('0x23')](function(){return _0x588439;});}else{return _0x588439;}})[_0x02b7('0x47')](function(_0x489317){logger[_0x02b7('0x28')](_0x02b7('0x52'),_0x489317);throw _0x489317;});}return _0x588439;})[_0x02b7('0x23')](respondWithResult(_0x454feb,0xc9))[_0x02b7('0x47')](handleError(_0x454feb,null));};exports[_0x02b7('0x22')]=function(_0x228d53,_0x2f6275){if(_0x228d53[_0x02b7('0x4c')]['id']){delete _0x228d53[_0x02b7('0x4c')]['id'];}return db['AnalyticCustomReport'][_0x02b7('0x4a')]({'where':{'id':_0x228d53[_0x02b7('0x49')]['id']}})[_0x02b7('0x23')](handleEntityNotFound(_0x2f6275,null))['then'](saveUpdates(_0x228d53[_0x02b7('0x4c')],null))[_0x02b7('0x23')](respondWithResult(_0x2f6275,null))[_0x02b7('0x47')](handleError(_0x2f6275,null));};exports[_0x02b7('0x24')]=function(_0x3d5dc5,_0x4ef949){return db['AnalyticCustomReport']['find']({'where':{'id':_0x3d5dc5[_0x02b7('0x49')]['id']}})['then'](handleEntityNotFound(_0x4ef949,null))[_0x02b7('0x23')](removeEntity(_0x4ef949,null))['catch'](handleError(_0x4ef949,null));};exports[_0x02b7('0x53')]=function(_0x1ad092,_0x2d041b){var _0xa52f09=0xa;var _0x202a44=[_0x02b7('0x54'),_0x02b7('0x55'),_0x02b7('0x56'),_0x02b7('0x57')];var _0x7e13e8={'SUM':'SUM(%s)','COUNT':_0x02b7('0x58'),'COUNT DISTINCT':_0x02b7('0x59'),'MAX':_0x02b7('0x5a'),'MIN':_0x02b7('0x5b'),'AVG':_0x02b7('0x5c'),'GROUP_CONCAT':_0x02b7('0x5d'),'GROUP_CONCAT ASC':_0x02b7('0x5e'),'GROUP_CONCAT DESC':_0x02b7('0x5f')};var _0x1984dc={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0x02b7('0x60'),'HOUR':_0x02b7('0x61'),'ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0x02b7('0x62')};var _0x2955ef=function(_0x9cb996){return!_[_0x02b7('0x63')]([_0x02b7('0x64'),_0x02b7('0x65'),_0x02b7('0x66'),_0x02b7('0x67')],_0x9cb996);};var _0x287e79=function(_0x14dbca){if(!_0x14dbca||!_0x14dbca['rules']['length']){return'';}for(var _0x4bd498='(',_0xb5028a=0x0;_0xb5028a<_0x14dbca[_0x02b7('0x68')]['length'];_0xb5028a+=0x1){_0xb5028a>0x0&&(_0x4bd498+='\x20'+_0x14dbca['operator']+'\x20');_0x4bd498+=_0x14dbca['rules'][_0xb5028a]['group']?_0x287e79(_0x14dbca[_0x02b7('0x68')][_0xb5028a][_0x02b7('0x69')]):_0x14dbca[_0x02b7('0x68')][_0xb5028a][_0x02b7('0x6a')]+'\x20'+_0x14dbca['rules'][_0xb5028a][_0x02b7('0x6b')]+(_0x2955ef(_0x14dbca[_0x02b7('0x68')][_0xb5028a][_0x02b7('0x6b')])?'\x20'+_0x14dbca[_0x02b7('0x68')][_0xb5028a][_0x02b7('0x6c')]:'');}return _0x4bd498+')';};var _0x170dff={'where':{'id':_0x1ad092[_0x02b7('0x49')]['id']}},_0xea8fd5,_0x401b32,_0x872e1e,_0x5bfb8c,_0x5daa3e;_0x170dff=_[_0x02b7('0x41')]({},_0x170dff,_0x1ad092[_0x02b7('0x43')]);return db[_0x02b7('0x2c')][_0x02b7('0x4a')](_0x170dff)[_0x02b7('0x23')](function(_0x3cd771){if(_0x3cd771){_0xea8fd5=_0x3cd771;return _0x3cd771[_0x02b7('0x6d')]();}return null;})['then'](function(_0x36cbab){if(_0x36cbab){if(!_0x36cbab[_0x02b7('0x38')]){throw new db[(_0x02b7('0x6e'))][(_0x02b7('0x6f'))]('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x401b32=_0x36cbab;return db['AnalyticMetric'][_0x02b7('0x70')]({'raw':!![]});}return null;})[_0x02b7('0x23')](function(_0x544ad4){if(_0x544ad4){_0x872e1e=_[_0x02b7('0x71')](_0x544ad4,'id');var _0x1f01aa;var _0x401265=squel['select']();_0x401265[_0x02b7('0x72')](_0xea8fd5[_0x02b7('0x73')]);for(var _0x264fdb=0x0;_0x264fdb<_0x401b32['length'];_0x264fdb+=0x1){_0x1f01aa=_0x401b32[_0x264fdb][_0x02b7('0x74')]?_0x872e1e[_0x401b32[_0x264fdb][_0x02b7('0x74')]][_0x02b7('0x75')]:_0x401b32[_0x264fdb][_0x02b7('0x6a')];_0x1f01aa=_0x401b32[_0x264fdb][_0x02b7('0x76')]?_[_0x02b7('0x77')](_0x7e13e8[_0x401b32[_0x264fdb]['function']],'%s',_0x1f01aa):_0x1f01aa;_0x1f01aa=_0x401b32[_0x264fdb][_0x02b7('0x78')]?_[_0x02b7('0x77')](_0x1984dc[_0x401b32[_0x264fdb][_0x02b7('0x78')]],'%s',_0x1f01aa):_0x1f01aa;if(_0x401b32[_0x264fdb][_0x02b7('0x79')]){_0x401265['group'](_0x1f01aa);}_0x401b32[_0x264fdb][_0x02b7('0x7a')]&&_0x401265['order'](_0x1f01aa,_0x401b32[_0x264fdb]['orderBy']===_0x02b7('0x7b')?![]:!![]);_0x401265[_0x02b7('0x6a')](_0x1f01aa,_0x401b32[_0x264fdb][_0x02b7('0x7c')]||_0x1f01aa);}if(_0xea8fd5[_0x02b7('0x7d')]){_0xea8fd5[_0x02b7('0x7d')]=JSON[_0x02b7('0x7e')](_0xea8fd5[_0x02b7('0x7d')]);for(var _0x476b43=0x0;_0x476b43<_0xea8fd5['joins']['length'];_0x476b43+=0x1){if(_0xea8fd5['joins'][_0x476b43][_0x02b7('0x2e')]&&_[_0x02b7('0x63')](_0x202a44,_0xea8fd5[_0x02b7('0x7d')][_0x476b43][_0x02b7('0x2e')])&&_0xea8fd5['joins'][_0x476b43][_0x02b7('0x7f')]&&_0xea8fd5[_0x02b7('0x7d')][_0x476b43]['foreignTable']&&_0xea8fd5[_0x02b7('0x7d')][_0x476b43][_0x02b7('0x80')]){_0x401265[_0xea8fd5[_0x02b7('0x7d')][_0x476b43][_0x02b7('0x2e')]](_0xea8fd5['joins'][_0x476b43][_0x02b7('0x81')],null,util[_0x02b7('0x78')](_0x02b7('0x82'),_0xea8fd5['table'],_0xea8fd5[_0x02b7('0x7d')][_0x476b43]['parentKey'],_0xea8fd5[_0x02b7('0x7d')][_0x476b43][_0x02b7('0x81')],_0xea8fd5[_0x02b7('0x7d')][_0x476b43][_0x02b7('0x80')]));}}}if(_0xea8fd5['conditions']){_0xea8fd5['conditions']=JSON['parse'](_0xea8fd5[_0x02b7('0x83')]);_0x401265[_0x02b7('0x3d')](_0x287e79(_0xea8fd5['conditions'][_0x02b7('0x69')]));}_0x5daa3e=_0x401265['clone']();_0x401265[_0x02b7('0x1d')](_0xa52f09);_0x401265[_0x02b7('0x1b')](0x0);logger[_0x02b7('0x84')](_0x02b7('0x85'),_0x401265[_0x02b7('0x86')]());return dbH[_0x02b7('0x87')][_0x02b7('0x34')](_0x401265[_0x02b7('0x86')](),{'type':dbH['sequelize'][_0x02b7('0x88')][_0x02b7('0x89')]});}})[_0x02b7('0x23')](respondWithResult(_0x2d041b,null))['catch'](handleError(_0x2d041b,null));};function runReport(_0x460acf,_0x19eba3,_0x2b5816){var _0x7db747=_0x19eba3['name'];var _0x44e510=0xa;var _0x3edae4=[_0x02b7('0x54'),_0x02b7('0x55'),_0x02b7('0x56'),_0x02b7('0x57')];var _0x3366e6={'SUM':_0x02b7('0x8a'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0x02b7('0x59'),'MAX':_0x02b7('0x5a'),'MIN':_0x02b7('0x5b'),'AVG':_0x02b7('0x5c'),'GROUP_CONCAT':_0x02b7('0x5d'),'GROUP_CONCAT ASC':_0x02b7('0x5e'),'GROUP_CONCAT DESC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)'};var _0x2d719d={'SEC_TO_TIME':_0x02b7('0x8b'),'DATE':_0x02b7('0x60'),'HOUR':_0x02b7('0x61'),'ROUND':_0x02b7('0x8c'),'UNIX_TIMESTAMP':_0x02b7('0x62')};var _0x1809e5=function(_0x51134e){return!_['includes']([_0x02b7('0x64'),_0x02b7('0x65'),_0x02b7('0x66'),_0x02b7('0x67')],_0x51134e);};var _0x13164f=function(_0x595231){if(!_0x595231||!_0x595231['rules']['length']){return'';}for(var _0x252841='(',_0x1f3c24=0x0;_0x1f3c24<_0x595231[_0x02b7('0x68')][_0x02b7('0x38')];_0x1f3c24+=0x1){_0x1f3c24>0x0&&(_0x252841+='\x20'+_0x595231[_0x02b7('0x8d')]+'\x20');_0x252841+=_0x595231[_0x02b7('0x68')][_0x1f3c24][_0x02b7('0x69')]?_0x13164f(_0x595231['rules'][_0x1f3c24]['group']):_0x595231[_0x02b7('0x68')][_0x1f3c24]['field']+'\x20'+_0x595231[_0x02b7('0x68')][_0x1f3c24][_0x02b7('0x6b')]+(_0x1809e5(_0x595231[_0x02b7('0x68')][_0x1f3c24][_0x02b7('0x6b')])?'\x20'+_0x595231[_0x02b7('0x68')][_0x1f3c24][_0x02b7('0x6c')]:'');}return _0x252841+')';};var _0x36415c={'where':{'id':_0x460acf['id']}},_0xf8907b,_0x126694,_0x564ba0,_0x2eaf31,_0x1badcb;_0x36415c=_[_0x02b7('0x41')]({},_0x36415c,_0x2b5816);return db[_0x02b7('0x2c')][_0x02b7('0x4a')](_0x36415c)[_0x02b7('0x23')](function(_0x71bb6){if(_0x71bb6){_0xf8907b=_0x71bb6;return _0x71bb6[_0x02b7('0x6d')]();}return null;})[_0x02b7('0x23')](function(_0x1e38d5){if(_0x1e38d5){if(!_0x1e38d5[_0x02b7('0x38')]){throw new db[(_0x02b7('0x6e'))]['ValidationErrorItem'](_0x02b7('0x8e'),0x193);}_0x126694=_0x1e38d5;return db['AnalyticMetric'][_0x02b7('0x70')]({'raw':!![]});}return null;})[_0x02b7('0x23')](function(_0x542d79){if(_0x542d79){_0x564ba0=_[_0x02b7('0x71')](_0x542d79,'id');var _0x4adcea;var _0x3d39ee=squel[_0x02b7('0x8f')]();_0x3d39ee['from'](_0xf8907b[_0x02b7('0x73')]);for(var _0x45657e=0x0;_0x45657e<_0x126694[_0x02b7('0x38')];_0x45657e+=0x1){_0x4adcea=_0x126694[_0x45657e][_0x02b7('0x74')]?_0x564ba0[_0x126694[_0x45657e]['MetricId']][_0x02b7('0x75')]:_0x126694[_0x45657e]['field'];_0x4adcea=_0x126694[_0x45657e][_0x02b7('0x76')]?_[_0x02b7('0x77')](_0x3366e6[_0x126694[_0x45657e][_0x02b7('0x76')]],'%s',_0x4adcea):_0x4adcea;_0x4adcea=_0x126694[_0x45657e][_0x02b7('0x78')]?_[_0x02b7('0x77')](_0x2d719d[_0x126694[_0x45657e][_0x02b7('0x78')]],'%s',_0x4adcea):_0x4adcea;if(_0x126694[_0x45657e][_0x02b7('0x79')]){_0x3d39ee['group'](_0x4adcea);}_0x126694[_0x45657e][_0x02b7('0x7a')]&&_0x3d39ee['order'](_0x4adcea,_0x126694[_0x45657e][_0x02b7('0x7a')]==='DESC'?![]:!![]);_0x3d39ee[_0x02b7('0x6a')](_0x4adcea,_0x126694[_0x45657e][_0x02b7('0x7c')]||_0x4adcea);}if(_0xf8907b[_0x02b7('0x7d')]){_0xf8907b[_0x02b7('0x7d')]=JSON['parse'](_0xf8907b[_0x02b7('0x7d')]);for(var _0x1c2a7c=0x0;_0x1c2a7c<_0xf8907b[_0x02b7('0x7d')][_0x02b7('0x38')];_0x1c2a7c+=0x1){if(_0xf8907b[_0x02b7('0x7d')][_0x1c2a7c][_0x02b7('0x2e')]&&_['includes'](_0x3edae4,_0xf8907b['joins'][_0x1c2a7c][_0x02b7('0x2e')])&&_0xf8907b[_0x02b7('0x7d')][_0x1c2a7c][_0x02b7('0x7f')]&&_0xf8907b[_0x02b7('0x7d')][_0x1c2a7c]['foreignTable']&&_0xf8907b['joins'][_0x1c2a7c][_0x02b7('0x80')]){_0x3d39ee[_0xf8907b[_0x02b7('0x7d')][_0x1c2a7c][_0x02b7('0x2e')]](_0xf8907b[_0x02b7('0x7d')][_0x1c2a7c][_0x02b7('0x81')],null,util['format'](_0x02b7('0x82'),_0xf8907b[_0x02b7('0x73')],_0xf8907b[_0x02b7('0x7d')][_0x1c2a7c]['parentKey'],_0xf8907b[_0x02b7('0x7d')][_0x1c2a7c]['foreignTable'],_0xf8907b[_0x02b7('0x7d')][_0x1c2a7c]['foreignKey']));}}}if(_0xf8907b[_0x02b7('0x83')]){_0xf8907b[_0x02b7('0x83')]=JSON[_0x02b7('0x7e')](_0xf8907b[_0x02b7('0x83')]);_0x3d39ee[_0x02b7('0x3d')](_0x13164f(_0xf8907b[_0x02b7('0x83')]['group']));}_0x1badcb=_0x3d39ee['clone']();_0x3d39ee[_0x02b7('0x1d')](_0x44e510);_0x3d39ee[_0x02b7('0x1b')](0x0);return;}})[_0x02b7('0x23')](function(){if(_0x19eba3[_0x02b7('0x90')]==='web'){return null;}var _0x26be8d=_[_0x02b7('0x41')](_0x19eba3,{'name':_0x19eba3['fullPath']||_0x19eba3[_0x02b7('0x32')]||_0xf8907b[_0x02b7('0x32')],'basename':_0x7db747,'savename':util[_0x02b7('0x78')](_0x02b7('0x91'),_0x19eba3['name']||_0xf8907b[_0x02b7('0x32')],require(_0x02b7('0x92'))['generate'](0x4),_0x19eba3[_0x02b7('0x90')]||_0x02b7('0x93')),'reportId':_0xf8907b['id'],'reportType':_0x02b7('0x94')});return db[_0x02b7('0x95')][_0x02b7('0x4b')](_0x26be8d,{'raw':!![]});})[_0x02b7('0x23')](function(_0x2cf701){if(_0xf8907b[_0x02b7('0x73')]===_0x02b7('0x96')){_0x1badcb['where'](_0xf8907b[_0x02b7('0x73')]+_0x02b7('0x97'),_0x19eba3['startDate'],_0x19eba3[_0x02b7('0x98')]);}else{_0x1badcb[_0x02b7('0x3d')](_0xf8907b[_0x02b7('0x73')]+_0x02b7('0x99'),_0x19eba3[_0x02b7('0x9a')],_0x19eba3[_0x02b7('0x98')]);}if(_0x2cf701){logger['info'](_0x02b7('0x9b'),_0x1badcb['toString']());require('child_process')[_0x02b7('0x9c')](path[_0x02b7('0x54')](__dirname,'../../components/export/',_0x2cf701[_0x02b7('0x90')]),[_0x2cf701['id'],_0x1badcb[_0x02b7('0x86')](),path[_0x02b7('0x54')](__dirname,_0x02b7('0x9d'),_0x2cf701[_0x02b7('0x9e')]),_0x7db747]);return _0x2cf701;}else{var _0x572acf=squel[_0x02b7('0x8f')]();_0x572acf[_0x02b7('0x72')]('('+_0x1badcb['toString']()+')','countTable');_0x572acf[_0x02b7('0x6a')](_0x02b7('0x9f'),'count');_0x1badcb[_0x02b7('0x1d')](_0x19eba3['limit']||_0x44e510);_0x1badcb[_0x02b7('0x1b')](_0x19eba3['offset']||0x0);return dbH['sequelize'][_0x02b7('0x34')](_0x572acf[_0x02b7('0x86')](),{'type':dbH[_0x02b7('0x87')][_0x02b7('0x88')][_0x02b7('0x89')]})['then'](function(_0x5b8745){if(!_0x5b8745[_0x02b7('0x38')]){_0x2eaf31=0x0;}else{_0x2eaf31=_0x5b8745[0x0]['count']||0x0;}return dbH['sequelize'][_0x02b7('0x34')](_0x1badcb[_0x02b7('0x86')](),{'type':dbH['sequelize'][_0x02b7('0x88')][_0x02b7('0x89')]});})[_0x02b7('0x23')](function(_0x13caa5){return{'rows':_0x13caa5||[],'count':_0x2eaf31};});}});}exports['run']=function(_0x2aed11,_0xe25770){return runReport(_0x2aed11[_0x02b7('0x49')],_0x2aed11[_0x02b7('0x34')],_0x2aed11[_0x02b7('0x43')])[_0x02b7('0x23')](respondWithResult(_0xe25770,null))[_0x02b7('0x47')](handleError(_0xe25770,null));};exports[_0x02b7('0xa0')]=runReport;exports[_0x02b7('0x34')]=function(_0x31761e,_0x4dde4b){var _0x10dd4c=0xa;var _0x16c7a5=[_0x02b7('0x54'),'left_join',_0x02b7('0x56'),_0x02b7('0x57')];var _0x3e451d={'SUM':'SUM(%s)','COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0x02b7('0x5a'),'MIN':_0x02b7('0x5b'),'AVG':'AVG(%s)','GROUP_CONCAT':_0x02b7('0x5d'),'GROUP_CONCAT ASC':_0x02b7('0x5e'),'GROUP_CONCAT DESC':_0x02b7('0x5f')};var _0x46bd40={'SEC_TO_TIME':_0x02b7('0x8b'),'DATE':'DATE(%s)','HOUR':_0x02b7('0x61'),'ROUND':_0x02b7('0x8c'),'UNIX_TIMESTAMP':_0x02b7('0x62')};var _0x1697a0=function(_0x7988c1){return!_['includes']([_0x02b7('0x64'),'IS\x20NOT\x20NULL',_0x02b7('0x66'),_0x02b7('0x67')],_0x7988c1);};var _0x2ae9d3=function(_0x883095){if(!_0x883095||!_0x883095[_0x02b7('0x68')]['length']){return'';}for(var _0x23a254='(',_0x935f9=0x0;_0x935f9<_0x883095[_0x02b7('0x68')]['length'];_0x935f9+=0x1){_0x935f9>0x0&&(_0x23a254+='\x20'+_0x883095[_0x02b7('0x8d')]+'\x20');_0x23a254+=_0x883095[_0x02b7('0x68')][_0x935f9][_0x02b7('0x69')]?_0x2ae9d3(_0x883095[_0x02b7('0x68')][_0x935f9]['group']):_0x883095[_0x02b7('0x68')][_0x935f9][_0x02b7('0x6a')]+'\x20'+_0x883095['rules'][_0x935f9][_0x02b7('0x6b')]+(_0x1697a0(_0x883095[_0x02b7('0x68')][_0x935f9]['condition'])?'\x20'+_0x883095['rules'][_0x935f9][_0x02b7('0x6c')]:'');}return _0x23a254+')';};var _0x19fd21={'where':{'id':_0x31761e[_0x02b7('0x49')]['id']}},_0x2a01e4,_0x598d9c,_0x52288a,_0x27f080,_0xdd30b4;_0x19fd21=_['merge']({},_0x19fd21,_0x31761e[_0x02b7('0x43')]);return db[_0x02b7('0x2c')][_0x02b7('0x4a')](_0x19fd21)['then'](function(_0x5d7744){if(_0x5d7744){_0x2a01e4=_0x5d7744;return _0x5d7744[_0x02b7('0x6d')]();}return null;})['then'](function(_0x4be029){if(_0x4be029){if(!_0x4be029['length']){throw new db[(_0x02b7('0x6e'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x598d9c=_0x4be029;return db[_0x02b7('0xa1')][_0x02b7('0x70')]({'raw':!![]});}return null;})[_0x02b7('0x23')](function(_0x4e2737){if(_0x4e2737){_0x52288a=_[_0x02b7('0x71')](_0x4e2737,'id');var _0x37e535;var _0x4eed59=squel['select']();_0x4eed59['from'](_0x2a01e4[_0x02b7('0x73')]);for(var _0x3492bd=0x0;_0x3492bd<_0x598d9c[_0x02b7('0x38')];_0x3492bd+=0x1){_0x37e535=_0x598d9c[_0x3492bd][_0x02b7('0x74')]?_0x52288a[_0x598d9c[_0x3492bd]['MetricId']][_0x02b7('0x75')]:_0x598d9c[_0x3492bd]['field'];_0x37e535=_0x598d9c[_0x3492bd][_0x02b7('0x76')]?_['replace'](_0x3e451d[_0x598d9c[_0x3492bd][_0x02b7('0x76')]],'%s',_0x37e535):_0x37e535;_0x37e535=_0x598d9c[_0x3492bd][_0x02b7('0x78')]?_[_0x02b7('0x77')](_0x46bd40[_0x598d9c[_0x3492bd]['format']],'%s',_0x37e535):_0x37e535;if(_0x598d9c[_0x3492bd][_0x02b7('0x79')]){_0x4eed59['group'](_0x37e535);}_0x598d9c[_0x3492bd][_0x02b7('0x7a')]&&_0x4eed59[_0x02b7('0x3b')](_0x37e535,_0x598d9c[_0x3492bd]['orderBy']===_0x02b7('0x7b')?![]:!![]);_0x4eed59['field'](_0x37e535,_0x598d9c[_0x3492bd]['alias']||_0x37e535);}if(_0x2a01e4['joins']){_0x2a01e4[_0x02b7('0x7d')]=JSON[_0x02b7('0x7e')](_0x2a01e4[_0x02b7('0x7d')]);for(var _0x5f1f0d=0x0;_0x5f1f0d<_0x2a01e4[_0x02b7('0x7d')][_0x02b7('0x38')];_0x5f1f0d+=0x1){if(_0x2a01e4[_0x02b7('0x7d')][_0x5f1f0d][_0x02b7('0x2e')]&&_['includes'](_0x16c7a5,_0x2a01e4[_0x02b7('0x7d')][_0x5f1f0d][_0x02b7('0x2e')])&&_0x2a01e4[_0x02b7('0x7d')][_0x5f1f0d][_0x02b7('0x7f')]&&_0x2a01e4[_0x02b7('0x7d')][_0x5f1f0d][_0x02b7('0x81')]&&_0x2a01e4[_0x02b7('0x7d')][_0x5f1f0d][_0x02b7('0x80')]){_0x4eed59[_0x2a01e4[_0x02b7('0x7d')][_0x5f1f0d]['type']](_0x2a01e4[_0x02b7('0x7d')][_0x5f1f0d][_0x02b7('0x81')],null,util[_0x02b7('0x78')](_0x02b7('0x82'),_0x2a01e4['table'],_0x2a01e4['joins'][_0x5f1f0d][_0x02b7('0x7f')],_0x2a01e4[_0x02b7('0x7d')][_0x5f1f0d][_0x02b7('0x81')],_0x2a01e4[_0x02b7('0x7d')][_0x5f1f0d][_0x02b7('0x80')]));}}}if(_0x2a01e4[_0x02b7('0x83')]){_0x2a01e4['conditions']=JSON['parse'](_0x2a01e4['conditions']);_0x4eed59['where'](_0x2ae9d3(_0x2a01e4[_0x02b7('0x83')][_0x02b7('0x69')]));}_0xdd30b4=_0x4eed59[_0x02b7('0xa2')]();_0x4eed59[_0x02b7('0x1d')](_0x10dd4c);_0x4eed59[_0x02b7('0x1b')](0x0);logger['debug'](_0x02b7('0x85'),_0x4eed59[_0x02b7('0x86')]());return dbH[_0x02b7('0x87')][_0x02b7('0x34')](_0x4eed59[_0x02b7('0x86')](),{'type':dbH['sequelize']['QueryTypes'][_0x02b7('0x89')]});}})[_0x02b7('0x23')](function(){return{'sql':_0xdd30b4[_0x02b7('0x86')]()};})[_0x02b7('0x23')](respondWithResult(_0x4dde4b,null))[_0x02b7('0x47')](handleError(_0x4dde4b,null));};
\ No newline at end of file
index f43782c..14a5fe8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04ae=['request-promise','rimraf','../../config/environment','./analyticCustomReport.attributes','define','AnalyticCustomReport','util','../../config/logger','api','bluebird'];(function(_0x4f5133,_0xc1f0c6){var _0x433f83=function(_0x426624){while(--_0x426624){_0x4f5133['push'](_0x4f5133['shift']());}};_0x433f83(++_0xc1f0c6);}(_0x04ae,0x13c));var _0xe04a=function(_0x1eeaea,_0x2229c6){_0x1eeaea=_0x1eeaea-0x0;var _0x3bc340=_0x04ae[_0x1eeaea];return _0x3bc340;};'use strict';var _=require('lodash');var util=require(_0xe04a('0x0'));var logger=require(_0xe04a('0x1'))(_0xe04a('0x2'));var moment=require('moment');var BPromise=require(_0xe04a('0x3'));var rp=require(_0xe04a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe04a('0x5'));var config=require(_0xe04a('0x6'));var attributes=require(_0xe04a('0x7'));module['exports']=function(_0x142476,_0x14f9e1){return _0x142476[_0xe04a('0x8')](_0xe04a('0x9'),attributes,{'tableName':'analytics_custom_reports','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb3de=['path','rimraf','./analyticCustomReport.attributes','exports','AnalyticCustomReport','analytics_custom_reports','lodash','util','api','moment','request-promise'];(function(_0x47300d,_0x3d42d9){var _0x2a6e5e=function(_0x4770fd){while(--_0x4770fd){_0x47300d['push'](_0x47300d['shift']());}};_0x2a6e5e(++_0x3d42d9);}(_0xb3de,0x1c9));var _0xeb3d=function(_0x1c854d,_0x1b5d57){_0x1c854d=_0x1c854d-0x0;var _0x1f946a=_0xb3de[_0x1c854d];return _0x1f946a;};'use strict';var _=require(_0xeb3d('0x0'));var util=require(_0xeb3d('0x1'));var logger=require('../../config/logger')(_0xeb3d('0x2'));var moment=require(_0xeb3d('0x3'));var BPromise=require('bluebird');var rp=require(_0xeb3d('0x4'));var fs=require('fs');var path=require(_0xeb3d('0x5'));var rimraf=require(_0xeb3d('0x6'));var config=require('../../config/environment');var attributes=require(_0xeb3d('0x7'));module[_0xeb3d('0x8')]=function(_0x29e296,_0x1f8c6c){return _0x29e296['define'](_0xeb3d('0x9'),attributes,{'tableName':_0xeb3d('0xa'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fb21a73..c733c78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x684c=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','lodash','util','bluebird','randomstring','ioredis'];(function(_0x52143a,_0x51e712){var _0x44bbf4=function(_0x48a6c6){while(--_0x48a6c6){_0x52143a['push'](_0x52143a['shift']());}};_0x44bbf4(++_0x51e712);}(_0x684c,0x1b3));var _0xc684=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x684c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xc684('0x0'));var util=require(_0xc684('0x1'));var moment=require('moment');var BPromise=require(_0xc684('0x2'));var rs=require(_0xc684('0x3'));var fs=require('fs');var Redis=require(_0xc684('0x4'));var db=require(_0xc684('0x5'))['db'];var utils=require(_0xc684('0x6'));var logger=require('../../config/logger')(_0xc684('0x7'));var config=require(_0xc684('0x8'));var jayson=require(_0xc684('0x9'));var client=jayson[_0xc684('0xa')][_0xc684('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x57a63c,_0x23bd1c,_0x1a96ea){return new BPromise(function(_0x146733,_0xccb771){return client[_0xc684('0xc')](_0x57a63c,_0x1a96ea)[_0xc684('0xd')](function(_0x3b3bc0){logger[_0xc684('0xe')](_0xc684('0xf'),_0x23bd1c,_0xc684('0x10'));logger[_0xc684('0x11')]('AnalyticCustomReport,\x20%s,\x20%s,\x20%s',_0x23bd1c,_0xc684('0x10'),JSON[_0xc684('0x12')](_0x3b3bc0));if(_0x3b3bc0[_0xc684('0x13')]){if(_0x3b3bc0[_0xc684('0x13')][_0xc684('0x14')]===0x1f4){logger[_0xc684('0x13')]('AnalyticCustomReport,\x20%s,\x20%s',_0x23bd1c,_0x3b3bc0[_0xc684('0x13')][_0xc684('0x15')]);return _0xccb771(_0x3b3bc0['error']['message']);}logger[_0xc684('0x13')](_0xc684('0xf'),_0x23bd1c,_0x3b3bc0[_0xc684('0x13')][_0xc684('0x15')]);return _0x146733(_0x3b3bc0[_0xc684('0x13')][_0xc684('0x15')]);}else{logger['info']('AnalyticCustomReport,\x20%s,\x20%s',_0x23bd1c,_0xc684('0x10'));_0x146733(_0x3b3bc0['result']['message']);}})['catch'](function(_0x47a8eb){logger['error'](_0xc684('0xf'),_0x23bd1c,_0x47a8eb);_0xccb771(_0x47a8eb);});});}
\ No newline at end of file
+var _0xf316=['../../config/environment','AnalyticCustomReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticCustomReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','util','randomstring','ioredis','../../mysqldb','../../config/logger'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xf316,0x1ab));var _0x6f31=function(_0xdcf442,_0x228421){_0xdcf442=_0xdcf442-0x0;var _0x2d3572=_0xf316[_0xdcf442];return _0x2d3572;};'use strict';var _=require('lodash');var util=require(_0x6f31('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x6f31('0x1'));var fs=require('fs');var Redis=require(_0x6f31('0x2'));var db=require(_0x6f31('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x6f31('0x4'))('rpc');var config=require(_0x6f31('0x5'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1070ca,_0x251943,_0x3de697){return new BPromise(function(_0x341ca2,_0x405b47){return client['request'](_0x1070ca,_0x3de697)['then'](function(_0x461485){logger['info'](_0x6f31('0x6'),_0x251943,_0x6f31('0x7'));logger[_0x6f31('0x8')](_0x6f31('0x9'),_0x251943,_0x6f31('0x7'),JSON[_0x6f31('0xa')](_0x461485));if(_0x461485[_0x6f31('0xb')]){if(_0x461485['error']['code']===0x1f4){logger[_0x6f31('0xb')]('AnalyticCustomReport,\x20%s,\x20%s',_0x251943,_0x461485[_0x6f31('0xb')][_0x6f31('0xc')]);return _0x405b47(_0x461485['error'][_0x6f31('0xc')]);}logger['error']('AnalyticCustomReport,\x20%s,\x20%s',_0x251943,_0x461485[_0x6f31('0xb')][_0x6f31('0xc')]);return _0x341ca2(_0x461485[_0x6f31('0xb')][_0x6f31('0xc')]);}else{logger[_0x6f31('0xd')](_0x6f31('0x6'),_0x251943,_0x6f31('0x7'));_0x341ca2(_0x461485[_0x6f31('0xe')][_0x6f31('0xc')]);}})[_0x6f31('0xf')](function(_0x5bc870){logger[_0x6f31('0xb')](_0x6f31('0x6'),_0x251943,_0x5bc870);_0x405b47(_0x5bc870);});});}
\ No newline at end of file
index c6f8a35..0b1ec0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf757=['preview','/:id/run','run','/:id/query','put','/:id','update','delete','util','path','connect-timeout','express','Router','../../config/environment','get','index','show','isAuthenticated'];(function(_0x10c259,_0x4e7cf0){var _0xe9c815=function(_0x475b1c){while(--_0x475b1c){_0x10c259['push'](_0x10c259['shift']());}};_0xe9c815(++_0x4e7cf0);}(_0xf757,0xe0));var _0x7f75=function(_0x588011,_0x5e9d11){_0x588011=_0x588011-0x0;var _0x3b3773=_0xf757[_0x588011];return _0x3b3773;};'use strict';var multer=require('multer');var util=require(_0x7f75('0x0'));var path=require(_0x7f75('0x1'));var timeout=require(_0x7f75('0x2'));var express=require(_0x7f75('0x3'));var router=express[_0x7f75('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x7f75('0x5'));var controller=require('./analyticCustomReport.controller');router[_0x7f75('0x6')]('/',auth['isAuthenticated'](),controller[_0x7f75('0x7')]);router['get']('/:id',auth['isAuthenticated'](),controller[_0x7f75('0x8')]);router['get']('/:id/preview',auth[_0x7f75('0x9')](),controller[_0x7f75('0xa')]);router[_0x7f75('0x6')](_0x7f75('0xb'),auth['isAuthenticated'](),controller[_0x7f75('0xc')]);router[_0x7f75('0x6')](_0x7f75('0xd'),auth[_0x7f75('0x9')](),controller['query']);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x7f75('0xe')](_0x7f75('0xf'),auth[_0x7f75('0x9')](),controller[_0x7f75('0x10')]);router[_0x7f75('0x11')](_0x7f75('0xf'),auth[_0x7f75('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x2cbd=['show','/:id/preview','preview','/:id/run','run','/:id/query','query','create','put','/:id','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticCustomReport.controller','get','isAuthenticated','index'];(function(_0x24c341,_0x4390ad){var _0x4f1e10=function(_0x33216d){while(--_0x33216d){_0x24c341['push'](_0x24c341['shift']());}};_0x4f1e10(++_0x4390ad);}(_0x2cbd,0x112));var _0xd2cb=function(_0x42c6f1,_0x338d7b){_0x42c6f1=_0x42c6f1-0x0;var _0x3c7398=_0x2cbd[_0x42c6f1];return _0x3c7398;};'use strict';var multer=require(_0xd2cb('0x0'));var util=require(_0xd2cb('0x1'));var path=require(_0xd2cb('0x2'));var timeout=require('connect-timeout');var express=require(_0xd2cb('0x3'));var router=express[_0xd2cb('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd2cb('0x5'));var interaction=require(_0xd2cb('0x6'));var config=require(_0xd2cb('0x7'));var controller=require(_0xd2cb('0x8'));router[_0xd2cb('0x9')]('/',auth[_0xd2cb('0xa')](),controller[_0xd2cb('0xb')]);router[_0xd2cb('0x9')]('/:id',auth[_0xd2cb('0xa')](),controller[_0xd2cb('0xc')]);router['get'](_0xd2cb('0xd'),auth[_0xd2cb('0xa')](),controller[_0xd2cb('0xe')]);router[_0xd2cb('0x9')](_0xd2cb('0xf'),auth[_0xd2cb('0xa')](),controller[_0xd2cb('0x10')]);router['get'](_0xd2cb('0x11'),auth[_0xd2cb('0xa')](),controller[_0xd2cb('0x12')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd2cb('0x13')]);router[_0xd2cb('0x14')](_0xd2cb('0x15'),auth[_0xd2cb('0xa')](),controller[_0xd2cb('0x16')]);router[_0xd2cb('0x17')](_0xd2cb('0x15'),auth[_0xd2cb('0xa')](),controller[_0xd2cb('0x18')]);module[_0xd2cb('0x19')]=router;
\ No newline at end of file
index ce445b2..a8fec4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['exports','STRING','TEXT','sequelize'];(function(_0x261e57,_0x408001){var _0xfdce0e=function(_0x49479d){while(--_0x49479d){_0x261e57['push'](_0x261e57['shift']());}};_0xfdce0e(++_0x408001);}(_0xe14b,0x93));var _0xbe14=function(_0x507458,_0x1096bf){_0x507458=_0x507458-0x0;var _0x5f43ad=_0xe14b[_0x507458];return _0x5f43ad;};'use strict';var Sequelize=require(_0xbe14('0x0'));module[_0xbe14('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'parent':{'type':Sequelize[_0xbe14('0x2')]},'table':{'type':Sequelize[_0xbe14('0x2')]},'conditions':{'type':Sequelize['TEXT']},'joins':{'type':Sequelize[_0xbe14('0x3')]}};
\ No newline at end of file
+var _0x425d=['sequelize','STRING','TEXT'];(function(_0x438415,_0x5ee367){var _0x5d254c=function(_0x29040c){while(--_0x29040c){_0x438415['push'](_0x438415['shift']());}};_0x5d254c(++_0x5ee367);}(_0x425d,0x1e0));var _0xd425=function(_0xd2e6bd,_0x558a85){_0xd2e6bd=_0xd2e6bd-0x0;var _0x50028b=_0x425d[_0xd2e6bd];return _0x50028b;};'use strict';var Sequelize=require(_0xd425('0x0'));module['exports']={'name':{'type':Sequelize[_0xd425('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xd425('0x1')]},'parent':{'type':Sequelize[_0xd425('0x1')]},'table':{'type':Sequelize[_0xd425('0x1')]},'conditions':{'type':Sequelize[_0xd425('0x2')]},'joins':{'type':Sequelize[_0xd425('0x2')]}};
\ No newline at end of file
index 6812c7b..09e7e9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4aa=['Content-Range','apply','reject','save','update','then','destroy','get','DefaultReports','UserProfileResource','name','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','AnalyticDefaultReport','findAll','rows','catch','show','length','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','IS\x20NULL','IS\x20EMPTY','rules','operator','group','field','condition','getFields','Sequelize','AnalyticMetric','keyBy','select','from','table','MetricId','metric','function','replace','format','orderBy','joins','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','parse','clone','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','COUNT(%s)','MAX(%s)','AVG(%s)','SEC_TO_TIME(%s)','IS\x20NOT\x20EMPTY','value','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','groupBy','alias','includes','foreignKey','output','web','fullPath','%s-%s.%s','randomstring','default','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','startDate','info','Run\x20Query:','child_process','fork','countTable','runReport','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','IS\x20NOT\x20NULL','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set'];(function(_0x39d980,_0x15c127){var _0x33fcbc=function(_0x32548a){while(--_0x32548a){_0x39d980['push'](_0x39d980['shift']());}};_0x33fcbc(++_0x15c127);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0xc4aa[_0x36c5b0];return _0xf19333;};'use strict';var emlformat=require(_0xac4a('0x0'));var rimraf=require(_0xac4a('0x1'));var zipdir=require(_0xac4a('0x2'));var jsonpatch=require(_0xac4a('0x3'));var rp=require(_0xac4a('0x4'));var moment=require(_0xac4a('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xac4a('0x6'));var sox=require(_0xac4a('0x7'));var csv=require(_0xac4a('0x8'));var ejs=require(_0xac4a('0x9'));var fs=require('fs');var fs_extra=require(_0xac4a('0xa'));var _=require(_0xac4a('0xb'));var squel=require(_0xac4a('0xc'));var crypto=require(_0xac4a('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xac4a('0x8'));var querystring=require(_0xac4a('0xe'));var Papa=require(_0xac4a('0xf'));var Redis=require('ioredis');var authService=require(_0xac4a('0x10'));var qs=require(_0xac4a('0x11'));var as=require(_0xac4a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xac4a('0x13'))('api');var utils=require(_0xac4a('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xac4a('0x15'));var db=require(_0xac4a('0x16'))['db'];var dbH=require(_0xac4a('0x16'))['dbH'];function respondWithStatusCode(_0x21a79,_0x68424a){_0x68424a=_0x68424a||0xcc;return function(_0x247b78){if(_0x247b78){return _0x21a79[_0xac4a('0x17')](_0x68424a);}return _0x21a79[_0xac4a('0x18')](_0x68424a)[_0xac4a('0x19')]();};}function respondWithResult(_0x34bc01,_0x33c287){_0x33c287=_0x33c287||0xc8;return function(_0x190418){if(_0x190418){return _0x34bc01[_0xac4a('0x18')](_0x33c287)[_0xac4a('0x1a')](_0x190418);}};}function respondWithFilteredResult(_0x26dbb8,_0x4a2119){return function(_0x402fff){if(_0x402fff){var _0x34d797=typeof _0x4a2119[_0xac4a('0x1b')]===_0xac4a('0x1c')&&typeof _0x4a2119[_0xac4a('0x1d')]===_0xac4a('0x1c');var _0x28e304=_0x402fff[_0xac4a('0x1e')];var _0x546c5d=_0x34d797?0x0:_0x4a2119['offset'];var _0x21a729=_0x34d797?_0x402fff[_0xac4a('0x1e')]:_0x4a2119[_0xac4a('0x1b')]+_0x4a2119['limit'];var _0x39e83e;if(_0x21a729>=_0x28e304){_0x21a729=_0x28e304;_0x39e83e=0xc8;}else{_0x39e83e=0xce;}_0x26dbb8[_0xac4a('0x18')](_0x39e83e);return _0x26dbb8[_0xac4a('0x1f')](_0xac4a('0x20'),_0x546c5d+'-'+_0x21a729+'/'+_0x28e304)[_0xac4a('0x1a')](_0x402fff);}return null;};}function patchUpdates(_0x3e829c){return function(_0xe38996){try{jsonpatch[_0xac4a('0x21')](_0xe38996,_0x3e829c,!![]);}catch(_0x534092){return BPromise[_0xac4a('0x22')](_0x534092);}return _0xe38996[_0xac4a('0x23')]();};}function saveUpdates(_0x599787,_0x3d7ce0){return function(_0x4169c0){if(_0x4169c0){return _0x4169c0[_0xac4a('0x24')](_0x599787)[_0xac4a('0x25')](function(_0x4d2d6c){return _0x4d2d6c;});}return null;};}function removeEntity(_0x1b7998,_0x2503d8){return function(_0x15435c){if(_0x15435c){return _0x15435c[_0xac4a('0x26')]()[_0xac4a('0x25')](function(){var _0x2b0dc2=_0x15435c[_0xac4a('0x27')]({'plain':!![]});var _0x36054a=_0xac4a('0x28');return db[_0xac4a('0x29')][_0xac4a('0x26')]({'where':{'type':_0x36054a,'resourceId':_0x2b0dc2['id']}})[_0xac4a('0x25')](function(){return _0x15435c;});})[_0xac4a('0x25')](function(){_0x1b7998[_0xac4a('0x18')](0xcc)[_0xac4a('0x19')]();});}};}function handleEntityNotFound(_0x20202c,_0x4e17ce){return function(_0x23b061){if(!_0x23b061){_0x20202c[_0xac4a('0x17')](0x194);}return _0x23b061;};}function handleError(_0x42a33c,_0x2772fe){_0x2772fe=_0x2772fe||0x1f4;return function(_0x116700){logger['error'](_0x116700['stack']);if(_0x116700[_0xac4a('0x2a')]){delete _0x116700[_0xac4a('0x2a')];}_0x42a33c[_0xac4a('0x18')](_0x2772fe)['send'](_0x116700);};}exports['index']=function(_0x355755,_0x2896bc){var _0x228629={},_0x432066={},_0x17118e={'count':0x0,'rows':[]};var _0x53d3a5=_[_0xac4a('0x2b')](db['AnalyticDefaultReport'][_0xac4a('0x2c')],function(_0x57adcf){return{'name':_0x57adcf[_0xac4a('0x2d')],'type':_0x57adcf[_0xac4a('0x2e')][_0xac4a('0x2f')]};});_0x432066[_0xac4a('0x30')]=_[_0xac4a('0x2b')](_0x53d3a5,_0xac4a('0x2a'));_0x432066[_0xac4a('0x31')]=_[_0xac4a('0x32')](_0x355755[_0xac4a('0x31')]);_0x432066[_0xac4a('0x33')]=_[_0xac4a('0x34')](_0x432066[_0xac4a('0x30')],_0x432066[_0xac4a('0x31')]);_0x228629[_0xac4a('0x35')]=_['intersection'](_0x432066[_0xac4a('0x30')],qs[_0xac4a('0x36')](_0x355755['query'][_0xac4a('0x36')]));_0x228629[_0xac4a('0x35')]=_0x228629['attributes']['length']?_0x228629[_0xac4a('0x35')]:_0x432066[_0xac4a('0x30')];if(!_0x355755[_0xac4a('0x31')][_0xac4a('0x37')]('nolimit')){_0x228629[_0xac4a('0x1d')]=qs[_0xac4a('0x1d')](_0x355755['query'][_0xac4a('0x1d')]);_0x228629[_0xac4a('0x1b')]=qs[_0xac4a('0x1b')](_0x355755['query'][_0xac4a('0x1b')]);}_0x228629[_0xac4a('0x38')]=qs[_0xac4a('0x39')](_0x355755['query'][_0xac4a('0x39')]);_0x228629[_0xac4a('0x3a')]=qs['filters'](_['pick'](_0x355755[_0xac4a('0x31')],_0x432066['filters']),_0x53d3a5);if(_0x355755['query']['filter']){_0x228629['where']=_[_0xac4a('0x3b')](_0x228629[_0xac4a('0x3a')],{'$or':_[_0xac4a('0x2b')](_0x53d3a5,function(_0x472484){if(_0x472484[_0xac4a('0x2e')]!==_0xac4a('0x3c')){var _0x4220e2={};_0x4220e2[_0x472484[_0xac4a('0x2a')]]={'$like':'%'+_0x355755[_0xac4a('0x31')][_0xac4a('0x3d')]+'%'};return _0x4220e2;}})});}_0x228629=_[_0xac4a('0x3b')]({},_0x228629,_0x355755[_0xac4a('0x3e')]);var _0x4e4994={'where':_0x228629['where']};return db['AnalyticDefaultReport'][_0xac4a('0x1e')](_0x4e4994)[_0xac4a('0x25')](function(_0x14e80b){_0x17118e[_0xac4a('0x1e')]=_0x14e80b;if(_0x355755[_0xac4a('0x31')][_0xac4a('0x3f')]){_0x228629[_0xac4a('0x40')]=[{'all':!![]}];}return db[_0xac4a('0x41')][_0xac4a('0x42')](_0x228629);})[_0xac4a('0x25')](function(_0x561cb7){_0x17118e[_0xac4a('0x43')]=_0x561cb7;return _0x17118e;})[_0xac4a('0x25')](respondWithFilteredResult(_0x2896bc,_0x228629))[_0xac4a('0x44')](handleError(_0x2896bc,null));};exports[_0xac4a('0x45')]=function(_0x1a96cf,_0x57b879){var _0x8700b4={'raw':!![],'where':{'id':_0x1a96cf['params']['id']}},_0x1b77bb={};_0x1b77bb[_0xac4a('0x30')]=_['keys'](db[_0xac4a('0x41')][_0xac4a('0x2c')]);_0x1b77bb[_0xac4a('0x31')]=_[_0xac4a('0x32')](_0x1a96cf[_0xac4a('0x31')]);_0x1b77bb[_0xac4a('0x33')]=_[_0xac4a('0x34')](_0x1b77bb[_0xac4a('0x30')],_0x1b77bb[_0xac4a('0x31')]);_0x8700b4[_0xac4a('0x35')]=_[_0xac4a('0x34')](_0x1b77bb[_0xac4a('0x30')],qs['fields'](_0x1a96cf[_0xac4a('0x31')][_0xac4a('0x36')]));_0x8700b4[_0xac4a('0x35')]=_0x8700b4['attributes'][_0xac4a('0x46')]?_0x8700b4[_0xac4a('0x35')]:_0x1b77bb['model'];if(_0x1a96cf[_0xac4a('0x31')]['includeAll']){_0x8700b4[_0xac4a('0x40')]=[{'all':!![]}];}_0x8700b4=_[_0xac4a('0x3b')]({},_0x8700b4,_0x1a96cf[_0xac4a('0x3e')]);return db['AnalyticDefaultReport']['find'](_0x8700b4)[_0xac4a('0x25')](handleEntityNotFound(_0x57b879,null))['then'](respondWithResult(_0x57b879,null))[_0xac4a('0x44')](handleError(_0x57b879,null));};exports['create']=function(_0x3d2aaf,_0x530bbb){return db[_0xac4a('0x41')][_0xac4a('0x47')](_0x3d2aaf[_0xac4a('0x48')],{})[_0xac4a('0x25')](function(_0x54782f){var _0x31c794=_0x3d2aaf[_0xac4a('0x49')][_0xac4a('0x27')]({'plain':!![]});if(!_0x31c794)throw new Error(_0xac4a('0x4a'));if(_0x31c794[_0xac4a('0x4b')]===_0xac4a('0x49')){var _0x187306=_0x54782f['get']({'plain':!![]});var _0x35dee5=_0xac4a('0x4c');return db['UserProfileSection'][_0xac4a('0x4d')]({'where':{'name':_0x35dee5,'userProfileId':_0x31c794[_0xac4a('0x4e')]},'raw':!![]})[_0xac4a('0x25')](function(_0x3ac36e){if(_0x3ac36e&&_0x3ac36e['autoAssociation']===0x0){return db[_0xac4a('0x29')][_0xac4a('0x47')]({'name':_0x187306[_0xac4a('0x2a')],'resourceId':_0x187306['id'],'type':_0xac4a('0x28'),'sectionId':_0x3ac36e['id']},{})[_0xac4a('0x25')](function(){return _0x54782f;});}else{return _0x54782f;}})['catch'](function(_0x179373){logger['error'](_0xac4a('0x4f'),_0x179373);throw _0x179373;});}return _0x54782f;})[_0xac4a('0x25')](respondWithResult(_0x530bbb,0xc9))['catch'](handleError(_0x530bbb,null));};exports['update']=function(_0x437466,_0x70fdc3){if(_0x437466['body']['id']){delete _0x437466[_0xac4a('0x48')]['id'];}return db[_0xac4a('0x41')][_0xac4a('0x4d')]({'where':{'id':_0x437466[_0xac4a('0x50')]['id']}})['then'](handleEntityNotFound(_0x70fdc3,null))[_0xac4a('0x25')](saveUpdates(_0x437466[_0xac4a('0x48')],null))[_0xac4a('0x25')](respondWithResult(_0x70fdc3,null))[_0xac4a('0x44')](handleError(_0x70fdc3,null));};exports[_0xac4a('0x26')]=function(_0x411547,_0x36179a){return db['AnalyticDefaultReport'][_0xac4a('0x4d')]({'where':{'id':_0x411547[_0xac4a('0x50')]['id']}})[_0xac4a('0x25')](handleEntityNotFound(_0x36179a,null))[_0xac4a('0x25')](removeEntity(_0x36179a,null))[_0xac4a('0x44')](handleError(_0x36179a,null));};exports[_0xac4a('0x51')]=function(_0x213df2,_0x236f57){var _0x159e43=0xa;var _0x786d9=[_0xac4a('0x52'),_0xac4a('0x53'),_0xac4a('0x54'),_0xac4a('0x55')];var _0x5222f3={'SUM':_0xac4a('0x56'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xac4a('0x57'),'MAX':'MAX(%s)','MIN':_0xac4a('0x58'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xac4a('0x59'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xac4a('0x5a')};var _0x5cac9b={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xac4a('0x5b'),'HOUR':_0xac4a('0x5c'),'ROUND':_0xac4a('0x5d'),'UNIX_TIMESTAMP':_0xac4a('0x5e')};var _0x2f9940=function(_0xb7b884){return!_['includes']([_0xac4a('0x5f'),'IS\x20NOT\x20NULL',_0xac4a('0x60'),'IS\x20NOT\x20EMPTY'],_0xb7b884);};var _0x347880=function(_0x19ce2c){if(!_0x19ce2c||!_0x19ce2c[_0xac4a('0x61')][_0xac4a('0x46')]){return'';}for(var _0x429273='(',_0x2bc39a=0x0;_0x2bc39a<_0x19ce2c[_0xac4a('0x61')][_0xac4a('0x46')];_0x2bc39a+=0x1){_0x2bc39a>0x0&&(_0x429273+='\x20'+_0x19ce2c[_0xac4a('0x62')]+'\x20');_0x429273+=_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x63')]?_0x347880(_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x63')]):_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x64')]+'\x20'+_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x65')]+(_0x2f9940(_0x19ce2c['rules'][_0x2bc39a][_0xac4a('0x65')])?'\x20'+_0x19ce2c[_0xac4a('0x61')][_0x2bc39a]['value']:'');}return _0x429273+')';};var _0x3c3576={'where':{'id':_0x213df2['params']['id']}},_0x34bd1c,_0x2d24c7,_0x2b8562,_0x357cac,_0x4d1440;_0x3c3576=_[_0xac4a('0x3b')]({},_0x3c3576,_0x213df2[_0xac4a('0x3e')]);return db[_0xac4a('0x41')][_0xac4a('0x4d')](_0x3c3576)[_0xac4a('0x25')](function(_0x21ef8b){if(_0x21ef8b){_0x34bd1c=_0x21ef8b;return _0x21ef8b[_0xac4a('0x66')]();}return null;})[_0xac4a('0x25')](function(_0x44c60b){if(_0x44c60b){if(!_0x44c60b[_0xac4a('0x46')]){throw new db[(_0xac4a('0x67'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x2d24c7=_0x44c60b;return db[_0xac4a('0x68')][_0xac4a('0x42')]({'raw':!![]});}return null;})[_0xac4a('0x25')](function(_0x423f70){if(_0x423f70){_0x2b8562=_[_0xac4a('0x69')](_0x423f70,'id');var _0x283107;var _0x1d24bb=squel[_0xac4a('0x6a')]();_0x1d24bb[_0xac4a('0x6b')](_0x34bd1c[_0xac4a('0x6c')]);for(var _0xb09b89=0x0;_0xb09b89<_0x2d24c7[_0xac4a('0x46')];_0xb09b89+=0x1){_0x283107=_0x2d24c7[_0xb09b89]['MetricId']?_0x2b8562[_0x2d24c7[_0xb09b89][_0xac4a('0x6d')]][_0xac4a('0x6e')]:_0x2d24c7[_0xb09b89][_0xac4a('0x64')];_0x283107=_0x2d24c7[_0xb09b89][_0xac4a('0x6f')]?_['replace'](_0x5222f3[_0x2d24c7[_0xb09b89][_0xac4a('0x6f')]],'%s',_0x283107):_0x283107;_0x283107=_0x2d24c7[_0xb09b89]['format']?_[_0xac4a('0x70')](_0x5cac9b[_0x2d24c7[_0xb09b89][_0xac4a('0x71')]],'%s',_0x283107):_0x283107;if(_0x2d24c7[_0xb09b89]['groupBy']){_0x1d24bb['group'](_0x283107);}_0x2d24c7[_0xb09b89][_0xac4a('0x72')]&&_0x1d24bb[_0xac4a('0x38')](_0x283107,_0x2d24c7[_0xb09b89][_0xac4a('0x72')]==='DESC'?![]:!![]);_0x1d24bb[_0xac4a('0x64')](_0x283107,_0x2d24c7[_0xb09b89]['alias']||_0x283107);}if(_0x34bd1c[_0xac4a('0x73')]){_0x34bd1c['joins']=JSON['parse'](_0x34bd1c[_0xac4a('0x73')]);for(var _0x56ef2a=0x0;_0x56ef2a<_0x34bd1c[_0xac4a('0x73')]['length'];_0x56ef2a+=0x1){if(_0x34bd1c[_0xac4a('0x73')][_0x56ef2a][_0xac4a('0x2e')]&&_['includes'](_0x786d9,_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['type'])&&_0x34bd1c[_0xac4a('0x73')][_0x56ef2a][_0xac4a('0x74')]&&_0x34bd1c['joins'][_0x56ef2a][_0xac4a('0x75')]&&_0x34bd1c['joins'][_0x56ef2a]['foreignKey']){_0x1d24bb[_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['type']](_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['foreignTable'],null,util['format'](_0xac4a('0x76'),_0x34bd1c[_0xac4a('0x6c')],_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['parentKey'],_0x34bd1c['joins'][_0x56ef2a][_0xac4a('0x75')],_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['foreignKey']));}}}if(_0x34bd1c['conditions']){_0x34bd1c[_0xac4a('0x77')]=JSON[_0xac4a('0x78')](_0x34bd1c[_0xac4a('0x77')]);_0x1d24bb[_0xac4a('0x3a')](_0x347880(_0x34bd1c[_0xac4a('0x77')][_0xac4a('0x63')]));}_0x4d1440=_0x1d24bb[_0xac4a('0x79')]();_0x1d24bb[_0xac4a('0x1d')](_0x159e43);_0x1d24bb[_0xac4a('0x1b')](0x0);logger['debug'](_0xac4a('0x7a'),_0x1d24bb[_0xac4a('0x7b')]());return dbH[_0xac4a('0x7c')]['query'](_0x1d24bb[_0xac4a('0x7b')](),{'type':dbH[_0xac4a('0x7c')][_0xac4a('0x7d')][_0xac4a('0x7e')]});}})[_0xac4a('0x25')](respondWithResult(_0x236f57,null))['catch'](handleError(_0x236f57,null));};function runReport(_0x290a73,_0x19ce24,_0xc9d040){var _0x37e519=_0x19ce24[_0xac4a('0x2a')];var _0x451248=0xa;var _0xd7bdd6=['join',_0xac4a('0x53'),_0xac4a('0x54'),_0xac4a('0x55')];var _0x35a97c={'SUM':_0xac4a('0x56'),'COUNT':_0xac4a('0x7f'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xac4a('0x80'),'MIN':_0xac4a('0x58'),'AVG':_0xac4a('0x81'),'GROUP_CONCAT':_0xac4a('0x59'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xac4a('0x5a')};var _0x56a934={'SEC_TO_TIME':_0xac4a('0x82'),'DATE':_0xac4a('0x5b'),'HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0xac4a('0x5e')};var _0x212a22=function(_0x1fe86a){return!_['includes']([_0xac4a('0x5f'),'IS\x20NOT\x20NULL',_0xac4a('0x60'),_0xac4a('0x83')],_0x1fe86a);};var _0x406b64=function(_0x35328e){if(!_0x35328e||!_0x35328e[_0xac4a('0x61')]['length']){return'';}for(var _0x50f471='(',_0x31cda0=0x0;_0x31cda0<_0x35328e[_0xac4a('0x61')][_0xac4a('0x46')];_0x31cda0+=0x1){_0x31cda0>0x0&&(_0x50f471+='\x20'+_0x35328e[_0xac4a('0x62')]+'\x20');_0x50f471+=_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x63')]?_0x406b64(_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x63')]):_0x35328e['rules'][_0x31cda0]['field']+'\x20'+_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x65')]+(_0x212a22(_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x65')])?'\x20'+_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x84')]:'');}return _0x50f471+')';};var _0xdaa2ef={'where':{'id':_0x290a73['id']}},_0x2e704b,_0x540d8e,_0x5e0be4,_0x32fd0c,_0x168f30;_0xdaa2ef=_[_0xac4a('0x3b')]({},_0xdaa2ef,_0xc9d040);return db[_0xac4a('0x41')][_0xac4a('0x4d')](_0xdaa2ef)[_0xac4a('0x25')](function(_0x338af3){if(_0x338af3){_0x2e704b=_0x338af3;return _0x338af3['getFields']();}return null;})[_0xac4a('0x25')](function(_0x1bacf2){if(_0x1bacf2){if(!_0x1bacf2[_0xac4a('0x46')]){throw new db['Sequelize'][(_0xac4a('0x85'))](_0xac4a('0x86'),0x193);}_0x540d8e=_0x1bacf2;return db[_0xac4a('0x68')][_0xac4a('0x42')]({'raw':!![]});}return null;})[_0xac4a('0x25')](function(_0x27d023){if(_0x27d023){_0x5e0be4=_[_0xac4a('0x69')](_0x27d023,'id');var _0x2ef42a;var _0x322465=squel['select']();_0x322465[_0xac4a('0x6b')](_0x2e704b['table']);for(var _0x203321=0x0;_0x203321<_0x540d8e[_0xac4a('0x46')];_0x203321+=0x1){_0x2ef42a=_0x540d8e[_0x203321][_0xac4a('0x6d')]?_0x5e0be4[_0x540d8e[_0x203321][_0xac4a('0x6d')]][_0xac4a('0x6e')]:_0x540d8e[_0x203321][_0xac4a('0x64')];_0x2ef42a=_0x540d8e[_0x203321][_0xac4a('0x6f')]?_['replace'](_0x35a97c[_0x540d8e[_0x203321][_0xac4a('0x6f')]],'%s',_0x2ef42a):_0x2ef42a;_0x2ef42a=_0x540d8e[_0x203321][_0xac4a('0x71')]?_[_0xac4a('0x70')](_0x56a934[_0x540d8e[_0x203321][_0xac4a('0x71')]],'%s',_0x2ef42a):_0x2ef42a;if(_0x540d8e[_0x203321][_0xac4a('0x87')]){_0x322465['group'](_0x2ef42a);}_0x540d8e[_0x203321][_0xac4a('0x72')]&&_0x322465[_0xac4a('0x38')](_0x2ef42a,_0x540d8e[_0x203321]['orderBy']==='DESC'?![]:!![]);_0x322465[_0xac4a('0x64')](_0x2ef42a,_0x540d8e[_0x203321][_0xac4a('0x88')]||_0x2ef42a);}if(_0x2e704b['joins']){_0x2e704b[_0xac4a('0x73')]=JSON[_0xac4a('0x78')](_0x2e704b[_0xac4a('0x73')]);for(var _0x37657e=0x0;_0x37657e<_0x2e704b[_0xac4a('0x73')][_0xac4a('0x46')];_0x37657e+=0x1){if(_0x2e704b['joins'][_0x37657e][_0xac4a('0x2e')]&&_[_0xac4a('0x89')](_0xd7bdd6,_0x2e704b[_0xac4a('0x73')][_0x37657e]['type'])&&_0x2e704b[_0xac4a('0x73')][_0x37657e][_0xac4a('0x74')]&&_0x2e704b[_0xac4a('0x73')][_0x37657e][_0xac4a('0x75')]&&_0x2e704b[_0xac4a('0x73')][_0x37657e][_0xac4a('0x8a')]){_0x322465[_0x2e704b['joins'][_0x37657e][_0xac4a('0x2e')]](_0x2e704b[_0xac4a('0x73')][_0x37657e]['foreignTable'],null,util[_0xac4a('0x71')]('%s.%s\x20=\x20%s.%s',_0x2e704b[_0xac4a('0x6c')],_0x2e704b[_0xac4a('0x73')][_0x37657e]['parentKey'],_0x2e704b[_0xac4a('0x73')][_0x37657e]['foreignTable'],_0x2e704b[_0xac4a('0x73')][_0x37657e]['foreignKey']));}}}if(_0x2e704b[_0xac4a('0x77')]){_0x2e704b[_0xac4a('0x77')]=JSON[_0xac4a('0x78')](_0x2e704b[_0xac4a('0x77')]);_0x322465[_0xac4a('0x3a')](_0x406b64(_0x2e704b[_0xac4a('0x77')][_0xac4a('0x63')]));}_0x168f30=_0x322465[_0xac4a('0x79')]();_0x322465[_0xac4a('0x1d')](_0x451248);_0x322465[_0xac4a('0x1b')](0x0);return;}})[_0xac4a('0x25')](function(){if(_0x19ce24[_0xac4a('0x8b')]===_0xac4a('0x8c')){return null;}var _0x4217df=_['merge'](_0x19ce24,{'name':_0x19ce24[_0xac4a('0x8d')]||_0x19ce24[_0xac4a('0x2a')]||_0x2e704b['name'],'basename':_0x37e519,'savename':util[_0xac4a('0x71')](_0xac4a('0x8e'),_0x19ce24[_0xac4a('0x2a')]||_0x2e704b[_0xac4a('0x2a')],require(_0xac4a('0x8f'))['generate'](0x4),_0x19ce24[_0xac4a('0x8b')]||'csv'),'reportId':_0x2e704b['id'],'reportType':_0xac4a('0x90')});return db[_0xac4a('0x91')][_0xac4a('0x47')](_0x4217df,{'raw':!![]});})[_0xac4a('0x25')](function(_0x53f23d){if(_0x2e704b[_0xac4a('0x6c')]==='cdr'){_0x168f30[_0xac4a('0x3a')](_0x2e704b[_0xac4a('0x6c')]+_0xac4a('0x92'),_0x19ce24['startDate'],_0x19ce24[_0xac4a('0x93')]);}else{_0x168f30[_0xac4a('0x3a')](_0x2e704b[_0xac4a('0x6c')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x19ce24[_0xac4a('0x94')],_0x19ce24[_0xac4a('0x93')]);}if(_0x53f23d){logger[_0xac4a('0x95')](_0xac4a('0x96'),_0x168f30[_0xac4a('0x7b')]());require(_0xac4a('0x97'))[_0xac4a('0x98')](path[_0xac4a('0x52')](__dirname,'../../components/export/',_0x53f23d[_0xac4a('0x8b')]),[_0x53f23d['id'],_0x168f30['toString'](),path['join'](__dirname,'../../files/reports',_0x53f23d['savename']),_0x37e519]);return _0x53f23d;}else{var _0x502275=squel[_0xac4a('0x6a')]();_0x502275[_0xac4a('0x6b')]('('+_0x168f30[_0xac4a('0x7b')]()+')',_0xac4a('0x99'));_0x502275[_0xac4a('0x64')]('COUNT(*)',_0xac4a('0x1e'));_0x168f30[_0xac4a('0x1d')](_0x19ce24[_0xac4a('0x1d')]||_0x451248);_0x168f30[_0xac4a('0x1b')](_0x19ce24[_0xac4a('0x1b')]||0x0);return dbH[_0xac4a('0x7c')][_0xac4a('0x31')](_0x502275[_0xac4a('0x7b')](),{'type':dbH['sequelize'][_0xac4a('0x7d')][_0xac4a('0x7e')]})[_0xac4a('0x25')](function(_0x25331f){if(!_0x25331f[_0xac4a('0x46')]){_0x32fd0c=0x0;}else{_0x32fd0c=_0x25331f[0x0][_0xac4a('0x1e')]||0x0;}return dbH[_0xac4a('0x7c')]['query'](_0x168f30['toString'](),{'type':dbH[_0xac4a('0x7c')][_0xac4a('0x7d')]['SELECT']});})[_0xac4a('0x25')](function(_0x366f5a){return{'rows':_0x366f5a||[],'count':_0x32fd0c};});}});}exports['run']=function(_0x5bd013,_0x2fe103){return runReport(_0x5bd013[_0xac4a('0x50')],_0x5bd013[_0xac4a('0x31')],_0x5bd013[_0xac4a('0x3e')])[_0xac4a('0x25')](respondWithResult(_0x2fe103,null))['catch'](handleError(_0x2fe103,null));};exports[_0xac4a('0x9a')]=runReport;exports['query']=function(_0x4f2d85,_0x538cfd){var _0x63c30=0xa;var _0x4301c3=[_0xac4a('0x52'),_0xac4a('0x53'),_0xac4a('0x54'),_0xac4a('0x55')];var _0xcad25d={'SUM':_0xac4a('0x56'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0xac4a('0x58'),'AVG':_0xac4a('0x81'),'GROUP_CONCAT':_0xac4a('0x59'),'GROUP_CONCAT ASC':_0xac4a('0x9b'),'GROUP_CONCAT DESC':_0xac4a('0x5a')};var _0xcd140e={'SEC_TO_TIME':_0xac4a('0x82'),'DATE':_0xac4a('0x5b'),'HOUR':_0xac4a('0x5c'),'ROUND':_0xac4a('0x5d'),'UNIX_TIMESTAMP':_0xac4a('0x5e')};var _0x37cb49=function(_0xe0fd57){return!_[_0xac4a('0x89')]([_0xac4a('0x5f'),_0xac4a('0x9c'),_0xac4a('0x60'),_0xac4a('0x83')],_0xe0fd57);};var _0x41cdb5=function(_0x172d03){if(!_0x172d03||!_0x172d03[_0xac4a('0x61')][_0xac4a('0x46')]){return'';}for(var _0x3e2575='(',_0x4cc581=0x0;_0x4cc581<_0x172d03[_0xac4a('0x61')][_0xac4a('0x46')];_0x4cc581+=0x1){_0x4cc581>0x0&&(_0x3e2575+='\x20'+_0x172d03[_0xac4a('0x62')]+'\x20');_0x3e2575+=_0x172d03[_0xac4a('0x61')][_0x4cc581][_0xac4a('0x63')]?_0x41cdb5(_0x172d03[_0xac4a('0x61')][_0x4cc581][_0xac4a('0x63')]):_0x172d03[_0xac4a('0x61')][_0x4cc581]['field']+'\x20'+_0x172d03['rules'][_0x4cc581][_0xac4a('0x65')]+(_0x37cb49(_0x172d03[_0xac4a('0x61')][_0x4cc581][_0xac4a('0x65')])?'\x20'+_0x172d03['rules'][_0x4cc581]['value']:'');}return _0x3e2575+')';};var _0x5de198={'where':{'id':_0x4f2d85[_0xac4a('0x50')]['id']}},_0x2b6773,_0x52df82,_0x59e82c,_0x216055,_0x52963c;_0x5de198=_['merge']({},_0x5de198,_0x4f2d85[_0xac4a('0x3e')]);return db[_0xac4a('0x41')][_0xac4a('0x4d')](_0x5de198)[_0xac4a('0x25')](function(_0x403a16){if(_0x403a16){_0x2b6773=_0x403a16;return _0x403a16[_0xac4a('0x66')]();}return null;})['then'](function(_0x25bf23){if(_0x25bf23){if(!_0x25bf23[_0xac4a('0x46')]){throw new db[(_0xac4a('0x67'))]['ValidationErrorItem'](_0xac4a('0x86'),0x193);}_0x52df82=_0x25bf23;return db[_0xac4a('0x68')][_0xac4a('0x42')]({'raw':!![]});}return null;})[_0xac4a('0x25')](function(_0x5bb911){if(_0x5bb911){_0x59e82c=_[_0xac4a('0x69')](_0x5bb911,'id');var _0x403f5a;var _0x3eae2f=squel[_0xac4a('0x6a')]();_0x3eae2f[_0xac4a('0x6b')](_0x2b6773[_0xac4a('0x6c')]);for(var _0x4a0cd9=0x0;_0x4a0cd9<_0x52df82['length'];_0x4a0cd9+=0x1){_0x403f5a=_0x52df82[_0x4a0cd9][_0xac4a('0x6d')]?_0x59e82c[_0x52df82[_0x4a0cd9][_0xac4a('0x6d')]][_0xac4a('0x6e')]:_0x52df82[_0x4a0cd9][_0xac4a('0x64')];_0x403f5a=_0x52df82[_0x4a0cd9][_0xac4a('0x6f')]?_[_0xac4a('0x70')](_0xcad25d[_0x52df82[_0x4a0cd9]['function']],'%s',_0x403f5a):_0x403f5a;_0x403f5a=_0x52df82[_0x4a0cd9][_0xac4a('0x71')]?_['replace'](_0xcd140e[_0x52df82[_0x4a0cd9][_0xac4a('0x71')]],'%s',_0x403f5a):_0x403f5a;if(_0x52df82[_0x4a0cd9]['groupBy']){_0x3eae2f[_0xac4a('0x63')](_0x403f5a);}_0x52df82[_0x4a0cd9][_0xac4a('0x72')]&&_0x3eae2f[_0xac4a('0x38')](_0x403f5a,_0x52df82[_0x4a0cd9][_0xac4a('0x72')]==='DESC'?![]:!![]);_0x3eae2f[_0xac4a('0x64')](_0x403f5a,_0x52df82[_0x4a0cd9][_0xac4a('0x88')]||_0x403f5a);}if(_0x2b6773[_0xac4a('0x73')]){_0x2b6773[_0xac4a('0x73')]=JSON[_0xac4a('0x78')](_0x2b6773['joins']);for(var _0x3dd60a=0x0;_0x3dd60a<_0x2b6773[_0xac4a('0x73')][_0xac4a('0x46')];_0x3dd60a+=0x1){if(_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x2e')]&&_['includes'](_0x4301c3,_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x2e')])&&_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x74')]&&_0x2b6773[_0xac4a('0x73')][_0x3dd60a]['foreignTable']&&_0x2b6773['joins'][_0x3dd60a]['foreignKey']){_0x3eae2f[_0x2b6773['joins'][_0x3dd60a][_0xac4a('0x2e')]](_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x75')],null,util[_0xac4a('0x71')](_0xac4a('0x76'),_0x2b6773['table'],_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x74')],_0x2b6773['joins'][_0x3dd60a][_0xac4a('0x75')],_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x8a')]));}}}if(_0x2b6773['conditions']){_0x2b6773[_0xac4a('0x77')]=JSON[_0xac4a('0x78')](_0x2b6773[_0xac4a('0x77')]);_0x3eae2f[_0xac4a('0x3a')](_0x41cdb5(_0x2b6773[_0xac4a('0x77')][_0xac4a('0x63')]));}_0x52963c=_0x3eae2f[_0xac4a('0x79')]();_0x3eae2f[_0xac4a('0x1d')](_0x63c30);_0x3eae2f[_0xac4a('0x1b')](0x0);logger['debug'](_0xac4a('0x7a'),_0x3eae2f[_0xac4a('0x7b')]());return dbH['sequelize'][_0xac4a('0x31')](_0x3eae2f['toString'](),{'type':dbH[_0xac4a('0x7c')][_0xac4a('0x7d')]['SELECT']});}})[_0xac4a('0x25')](function(){return{'sql':_0x52963c[_0xac4a('0x7b')]()};})[_0xac4a('0x25')](respondWithResult(_0x538cfd,null))[_0xac4a('0x44')](handleError(_0x538cfd,null));};
\ No newline at end of file
+var _0xc4aa=['Content-Range','apply','reject','save','update','then','destroy','get','DefaultReports','UserProfileResource','name','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','AnalyticDefaultReport','findAll','rows','catch','show','length','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Reports','find','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','preview','join','left_join','right_join','cross_join','SUM(%s)','COUNT(DISTINCT\x20%s)','MIN(%s)','GROUP_CONCAT(%s)','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20DESC)','DATE(%s)','HOUR(%s)','ROUND(%s)','UNIX_TIMESTAMP(%s)','IS\x20NULL','IS\x20EMPTY','rules','operator','group','field','condition','getFields','Sequelize','AnalyticMetric','keyBy','select','from','table','MetricId','metric','function','replace','format','orderBy','joins','parentKey','foreignTable','%s.%s\x20=\x20%s.%s','conditions','parse','clone','Limited\x20Query:','toString','sequelize','QueryTypes','SELECT','COUNT(%s)','MAX(%s)','AVG(%s)','SEC_TO_TIME(%s)','IS\x20NOT\x20EMPTY','value','ValidationErrorItem','Please\x20insert\x20at\x20least\x20one\x20field','groupBy','alias','includes','foreignKey','output','web','fullPath','%s-%s.%s','randomstring','default','AnalyticExtractedReport','.calldate\x20BETWEEN\x20?\x20AND\x20?','endDate','startDate','info','Run\x20Query:','child_process','fork','countTable','runReport','GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','IS\x20NOT\x20NULL','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set'];(function(_0x911353,_0x1648ed){var _0x2f05fa=function(_0x4a00a4){while(--_0x4a00a4){_0x911353['push'](_0x911353['shift']());}};_0x2f05fa(++_0x1648ed);}(_0xc4aa,0x1b7));var _0xac4a=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xc4aa[_0x4b369d];return _0x571a98;};'use strict';var emlformat=require(_0xac4a('0x0'));var rimraf=require(_0xac4a('0x1'));var zipdir=require(_0xac4a('0x2'));var jsonpatch=require(_0xac4a('0x3'));var rp=require(_0xac4a('0x4'));var moment=require(_0xac4a('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xac4a('0x6'));var sox=require(_0xac4a('0x7'));var csv=require(_0xac4a('0x8'));var ejs=require(_0xac4a('0x9'));var fs=require('fs');var fs_extra=require(_0xac4a('0xa'));var _=require(_0xac4a('0xb'));var squel=require(_0xac4a('0xc'));var crypto=require(_0xac4a('0xd'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xac4a('0x8'));var querystring=require(_0xac4a('0xe'));var Papa=require(_0xac4a('0xf'));var Redis=require('ioredis');var authService=require(_0xac4a('0x10'));var qs=require(_0xac4a('0x11'));var as=require(_0xac4a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xac4a('0x13'))('api');var utils=require(_0xac4a('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xac4a('0x15'));var db=require(_0xac4a('0x16'))['db'];var dbH=require(_0xac4a('0x16'))['dbH'];function respondWithStatusCode(_0x21a79,_0x68424a){_0x68424a=_0x68424a||0xcc;return function(_0x247b78){if(_0x247b78){return _0x21a79[_0xac4a('0x17')](_0x68424a);}return _0x21a79[_0xac4a('0x18')](_0x68424a)[_0xac4a('0x19')]();};}function respondWithResult(_0x34bc01,_0x33c287){_0x33c287=_0x33c287||0xc8;return function(_0x190418){if(_0x190418){return _0x34bc01[_0xac4a('0x18')](_0x33c287)[_0xac4a('0x1a')](_0x190418);}};}function respondWithFilteredResult(_0x26dbb8,_0x4a2119){return function(_0x402fff){if(_0x402fff){var _0x34d797=typeof _0x4a2119[_0xac4a('0x1b')]===_0xac4a('0x1c')&&typeof _0x4a2119[_0xac4a('0x1d')]===_0xac4a('0x1c');var _0x28e304=_0x402fff[_0xac4a('0x1e')];var _0x546c5d=_0x34d797?0x0:_0x4a2119['offset'];var _0x21a729=_0x34d797?_0x402fff[_0xac4a('0x1e')]:_0x4a2119[_0xac4a('0x1b')]+_0x4a2119['limit'];var _0x39e83e;if(_0x21a729>=_0x28e304){_0x21a729=_0x28e304;_0x39e83e=0xc8;}else{_0x39e83e=0xce;}_0x26dbb8[_0xac4a('0x18')](_0x39e83e);return _0x26dbb8[_0xac4a('0x1f')](_0xac4a('0x20'),_0x546c5d+'-'+_0x21a729+'/'+_0x28e304)[_0xac4a('0x1a')](_0x402fff);}return null;};}function patchUpdates(_0x3e829c){return function(_0xe38996){try{jsonpatch[_0xac4a('0x21')](_0xe38996,_0x3e829c,!![]);}catch(_0x534092){return BPromise[_0xac4a('0x22')](_0x534092);}return _0xe38996[_0xac4a('0x23')]();};}function saveUpdates(_0x599787,_0x3d7ce0){return function(_0x4169c0){if(_0x4169c0){return _0x4169c0[_0xac4a('0x24')](_0x599787)[_0xac4a('0x25')](function(_0x4d2d6c){return _0x4d2d6c;});}return null;};}function removeEntity(_0x1b7998,_0x2503d8){return function(_0x15435c){if(_0x15435c){return _0x15435c[_0xac4a('0x26')]()[_0xac4a('0x25')](function(){var _0x2b0dc2=_0x15435c[_0xac4a('0x27')]({'plain':!![]});var _0x36054a=_0xac4a('0x28');return db[_0xac4a('0x29')][_0xac4a('0x26')]({'where':{'type':_0x36054a,'resourceId':_0x2b0dc2['id']}})[_0xac4a('0x25')](function(){return _0x15435c;});})[_0xac4a('0x25')](function(){_0x1b7998[_0xac4a('0x18')](0xcc)[_0xac4a('0x19')]();});}};}function handleEntityNotFound(_0x20202c,_0x4e17ce){return function(_0x23b061){if(!_0x23b061){_0x20202c[_0xac4a('0x17')](0x194);}return _0x23b061;};}function handleError(_0x42a33c,_0x2772fe){_0x2772fe=_0x2772fe||0x1f4;return function(_0x116700){logger['error'](_0x116700['stack']);if(_0x116700[_0xac4a('0x2a')]){delete _0x116700[_0xac4a('0x2a')];}_0x42a33c[_0xac4a('0x18')](_0x2772fe)['send'](_0x116700);};}exports['index']=function(_0x355755,_0x2896bc){var _0x228629={},_0x432066={},_0x17118e={'count':0x0,'rows':[]};var _0x53d3a5=_[_0xac4a('0x2b')](db['AnalyticDefaultReport'][_0xac4a('0x2c')],function(_0x57adcf){return{'name':_0x57adcf[_0xac4a('0x2d')],'type':_0x57adcf[_0xac4a('0x2e')][_0xac4a('0x2f')]};});_0x432066[_0xac4a('0x30')]=_[_0xac4a('0x2b')](_0x53d3a5,_0xac4a('0x2a'));_0x432066[_0xac4a('0x31')]=_[_0xac4a('0x32')](_0x355755[_0xac4a('0x31')]);_0x432066[_0xac4a('0x33')]=_[_0xac4a('0x34')](_0x432066[_0xac4a('0x30')],_0x432066[_0xac4a('0x31')]);_0x228629[_0xac4a('0x35')]=_['intersection'](_0x432066[_0xac4a('0x30')],qs[_0xac4a('0x36')](_0x355755['query'][_0xac4a('0x36')]));_0x228629[_0xac4a('0x35')]=_0x228629['attributes']['length']?_0x228629[_0xac4a('0x35')]:_0x432066[_0xac4a('0x30')];if(!_0x355755[_0xac4a('0x31')][_0xac4a('0x37')]('nolimit')){_0x228629[_0xac4a('0x1d')]=qs[_0xac4a('0x1d')](_0x355755['query'][_0xac4a('0x1d')]);_0x228629[_0xac4a('0x1b')]=qs[_0xac4a('0x1b')](_0x355755['query'][_0xac4a('0x1b')]);}_0x228629[_0xac4a('0x38')]=qs[_0xac4a('0x39')](_0x355755['query'][_0xac4a('0x39')]);_0x228629[_0xac4a('0x3a')]=qs['filters'](_['pick'](_0x355755[_0xac4a('0x31')],_0x432066['filters']),_0x53d3a5);if(_0x355755['query']['filter']){_0x228629['where']=_[_0xac4a('0x3b')](_0x228629[_0xac4a('0x3a')],{'$or':_[_0xac4a('0x2b')](_0x53d3a5,function(_0x472484){if(_0x472484[_0xac4a('0x2e')]!==_0xac4a('0x3c')){var _0x4220e2={};_0x4220e2[_0x472484[_0xac4a('0x2a')]]={'$like':'%'+_0x355755[_0xac4a('0x31')][_0xac4a('0x3d')]+'%'};return _0x4220e2;}})});}_0x228629=_[_0xac4a('0x3b')]({},_0x228629,_0x355755[_0xac4a('0x3e')]);var _0x4e4994={'where':_0x228629['where']};return db['AnalyticDefaultReport'][_0xac4a('0x1e')](_0x4e4994)[_0xac4a('0x25')](function(_0x14e80b){_0x17118e[_0xac4a('0x1e')]=_0x14e80b;if(_0x355755[_0xac4a('0x31')][_0xac4a('0x3f')]){_0x228629[_0xac4a('0x40')]=[{'all':!![]}];}return db[_0xac4a('0x41')][_0xac4a('0x42')](_0x228629);})[_0xac4a('0x25')](function(_0x561cb7){_0x17118e[_0xac4a('0x43')]=_0x561cb7;return _0x17118e;})[_0xac4a('0x25')](respondWithFilteredResult(_0x2896bc,_0x228629))[_0xac4a('0x44')](handleError(_0x2896bc,null));};exports[_0xac4a('0x45')]=function(_0x1a96cf,_0x57b879){var _0x8700b4={'raw':!![],'where':{'id':_0x1a96cf['params']['id']}},_0x1b77bb={};_0x1b77bb[_0xac4a('0x30')]=_['keys'](db[_0xac4a('0x41')][_0xac4a('0x2c')]);_0x1b77bb[_0xac4a('0x31')]=_[_0xac4a('0x32')](_0x1a96cf[_0xac4a('0x31')]);_0x1b77bb[_0xac4a('0x33')]=_[_0xac4a('0x34')](_0x1b77bb[_0xac4a('0x30')],_0x1b77bb[_0xac4a('0x31')]);_0x8700b4[_0xac4a('0x35')]=_[_0xac4a('0x34')](_0x1b77bb[_0xac4a('0x30')],qs['fields'](_0x1a96cf[_0xac4a('0x31')][_0xac4a('0x36')]));_0x8700b4[_0xac4a('0x35')]=_0x8700b4['attributes'][_0xac4a('0x46')]?_0x8700b4[_0xac4a('0x35')]:_0x1b77bb['model'];if(_0x1a96cf[_0xac4a('0x31')]['includeAll']){_0x8700b4[_0xac4a('0x40')]=[{'all':!![]}];}_0x8700b4=_[_0xac4a('0x3b')]({},_0x8700b4,_0x1a96cf[_0xac4a('0x3e')]);return db['AnalyticDefaultReport']['find'](_0x8700b4)[_0xac4a('0x25')](handleEntityNotFound(_0x57b879,null))['then'](respondWithResult(_0x57b879,null))[_0xac4a('0x44')](handleError(_0x57b879,null));};exports['create']=function(_0x3d2aaf,_0x530bbb){return db[_0xac4a('0x41')][_0xac4a('0x47')](_0x3d2aaf[_0xac4a('0x48')],{})[_0xac4a('0x25')](function(_0x54782f){var _0x31c794=_0x3d2aaf[_0xac4a('0x49')][_0xac4a('0x27')]({'plain':!![]});if(!_0x31c794)throw new Error(_0xac4a('0x4a'));if(_0x31c794[_0xac4a('0x4b')]===_0xac4a('0x49')){var _0x187306=_0x54782f['get']({'plain':!![]});var _0x35dee5=_0xac4a('0x4c');return db['UserProfileSection'][_0xac4a('0x4d')]({'where':{'name':_0x35dee5,'userProfileId':_0x31c794[_0xac4a('0x4e')]},'raw':!![]})[_0xac4a('0x25')](function(_0x3ac36e){if(_0x3ac36e&&_0x3ac36e['autoAssociation']===0x0){return db[_0xac4a('0x29')][_0xac4a('0x47')]({'name':_0x187306[_0xac4a('0x2a')],'resourceId':_0x187306['id'],'type':_0xac4a('0x28'),'sectionId':_0x3ac36e['id']},{})[_0xac4a('0x25')](function(){return _0x54782f;});}else{return _0x54782f;}})['catch'](function(_0x179373){logger['error'](_0xac4a('0x4f'),_0x179373);throw _0x179373;});}return _0x54782f;})[_0xac4a('0x25')](respondWithResult(_0x530bbb,0xc9))['catch'](handleError(_0x530bbb,null));};exports['update']=function(_0x437466,_0x70fdc3){if(_0x437466['body']['id']){delete _0x437466[_0xac4a('0x48')]['id'];}return db[_0xac4a('0x41')][_0xac4a('0x4d')]({'where':{'id':_0x437466[_0xac4a('0x50')]['id']}})['then'](handleEntityNotFound(_0x70fdc3,null))[_0xac4a('0x25')](saveUpdates(_0x437466[_0xac4a('0x48')],null))[_0xac4a('0x25')](respondWithResult(_0x70fdc3,null))[_0xac4a('0x44')](handleError(_0x70fdc3,null));};exports[_0xac4a('0x26')]=function(_0x411547,_0x36179a){return db['AnalyticDefaultReport'][_0xac4a('0x4d')]({'where':{'id':_0x411547[_0xac4a('0x50')]['id']}})[_0xac4a('0x25')](handleEntityNotFound(_0x36179a,null))[_0xac4a('0x25')](removeEntity(_0x36179a,null))[_0xac4a('0x44')](handleError(_0x36179a,null));};exports[_0xac4a('0x51')]=function(_0x213df2,_0x236f57){var _0x159e43=0xa;var _0x786d9=[_0xac4a('0x52'),_0xac4a('0x53'),_0xac4a('0x54'),_0xac4a('0x55')];var _0x5222f3={'SUM':_0xac4a('0x56'),'COUNT':'COUNT(%s)','COUNT DISTINCT':_0xac4a('0x57'),'MAX':'MAX(%s)','MIN':_0xac4a('0x58'),'AVG':'AVG(%s)','GROUP_CONCAT':_0xac4a('0x59'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xac4a('0x5a')};var _0x5cac9b={'SEC_TO_TIME':'SEC_TO_TIME(%s)','DATE':_0xac4a('0x5b'),'HOUR':_0xac4a('0x5c'),'ROUND':_0xac4a('0x5d'),'UNIX_TIMESTAMP':_0xac4a('0x5e')};var _0x2f9940=function(_0xb7b884){return!_['includes']([_0xac4a('0x5f'),'IS\x20NOT\x20NULL',_0xac4a('0x60'),'IS\x20NOT\x20EMPTY'],_0xb7b884);};var _0x347880=function(_0x19ce2c){if(!_0x19ce2c||!_0x19ce2c[_0xac4a('0x61')][_0xac4a('0x46')]){return'';}for(var _0x429273='(',_0x2bc39a=0x0;_0x2bc39a<_0x19ce2c[_0xac4a('0x61')][_0xac4a('0x46')];_0x2bc39a+=0x1){_0x2bc39a>0x0&&(_0x429273+='\x20'+_0x19ce2c[_0xac4a('0x62')]+'\x20');_0x429273+=_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x63')]?_0x347880(_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x63')]):_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x64')]+'\x20'+_0x19ce2c[_0xac4a('0x61')][_0x2bc39a][_0xac4a('0x65')]+(_0x2f9940(_0x19ce2c['rules'][_0x2bc39a][_0xac4a('0x65')])?'\x20'+_0x19ce2c[_0xac4a('0x61')][_0x2bc39a]['value']:'');}return _0x429273+')';};var _0x3c3576={'where':{'id':_0x213df2['params']['id']}},_0x34bd1c,_0x2d24c7,_0x2b8562,_0x357cac,_0x4d1440;_0x3c3576=_[_0xac4a('0x3b')]({},_0x3c3576,_0x213df2[_0xac4a('0x3e')]);return db[_0xac4a('0x41')][_0xac4a('0x4d')](_0x3c3576)[_0xac4a('0x25')](function(_0x21ef8b){if(_0x21ef8b){_0x34bd1c=_0x21ef8b;return _0x21ef8b[_0xac4a('0x66')]();}return null;})[_0xac4a('0x25')](function(_0x44c60b){if(_0x44c60b){if(!_0x44c60b[_0xac4a('0x46')]){throw new db[(_0xac4a('0x67'))]['ValidationErrorItem']('Please\x20insert\x20at\x20least\x20one\x20field',0x193);}_0x2d24c7=_0x44c60b;return db[_0xac4a('0x68')][_0xac4a('0x42')]({'raw':!![]});}return null;})[_0xac4a('0x25')](function(_0x423f70){if(_0x423f70){_0x2b8562=_[_0xac4a('0x69')](_0x423f70,'id');var _0x283107;var _0x1d24bb=squel[_0xac4a('0x6a')]();_0x1d24bb[_0xac4a('0x6b')](_0x34bd1c[_0xac4a('0x6c')]);for(var _0xb09b89=0x0;_0xb09b89<_0x2d24c7[_0xac4a('0x46')];_0xb09b89+=0x1){_0x283107=_0x2d24c7[_0xb09b89]['MetricId']?_0x2b8562[_0x2d24c7[_0xb09b89][_0xac4a('0x6d')]][_0xac4a('0x6e')]:_0x2d24c7[_0xb09b89][_0xac4a('0x64')];_0x283107=_0x2d24c7[_0xb09b89][_0xac4a('0x6f')]?_['replace'](_0x5222f3[_0x2d24c7[_0xb09b89][_0xac4a('0x6f')]],'%s',_0x283107):_0x283107;_0x283107=_0x2d24c7[_0xb09b89]['format']?_[_0xac4a('0x70')](_0x5cac9b[_0x2d24c7[_0xb09b89][_0xac4a('0x71')]],'%s',_0x283107):_0x283107;if(_0x2d24c7[_0xb09b89]['groupBy']){_0x1d24bb['group'](_0x283107);}_0x2d24c7[_0xb09b89][_0xac4a('0x72')]&&_0x1d24bb[_0xac4a('0x38')](_0x283107,_0x2d24c7[_0xb09b89][_0xac4a('0x72')]==='DESC'?![]:!![]);_0x1d24bb[_0xac4a('0x64')](_0x283107,_0x2d24c7[_0xb09b89]['alias']||_0x283107);}if(_0x34bd1c[_0xac4a('0x73')]){_0x34bd1c['joins']=JSON['parse'](_0x34bd1c[_0xac4a('0x73')]);for(var _0x56ef2a=0x0;_0x56ef2a<_0x34bd1c[_0xac4a('0x73')]['length'];_0x56ef2a+=0x1){if(_0x34bd1c[_0xac4a('0x73')][_0x56ef2a][_0xac4a('0x2e')]&&_['includes'](_0x786d9,_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['type'])&&_0x34bd1c[_0xac4a('0x73')][_0x56ef2a][_0xac4a('0x74')]&&_0x34bd1c['joins'][_0x56ef2a][_0xac4a('0x75')]&&_0x34bd1c['joins'][_0x56ef2a]['foreignKey']){_0x1d24bb[_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['type']](_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['foreignTable'],null,util['format'](_0xac4a('0x76'),_0x34bd1c[_0xac4a('0x6c')],_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['parentKey'],_0x34bd1c['joins'][_0x56ef2a][_0xac4a('0x75')],_0x34bd1c[_0xac4a('0x73')][_0x56ef2a]['foreignKey']));}}}if(_0x34bd1c['conditions']){_0x34bd1c[_0xac4a('0x77')]=JSON[_0xac4a('0x78')](_0x34bd1c[_0xac4a('0x77')]);_0x1d24bb[_0xac4a('0x3a')](_0x347880(_0x34bd1c[_0xac4a('0x77')][_0xac4a('0x63')]));}_0x4d1440=_0x1d24bb[_0xac4a('0x79')]();_0x1d24bb[_0xac4a('0x1d')](_0x159e43);_0x1d24bb[_0xac4a('0x1b')](0x0);logger['debug'](_0xac4a('0x7a'),_0x1d24bb[_0xac4a('0x7b')]());return dbH[_0xac4a('0x7c')]['query'](_0x1d24bb[_0xac4a('0x7b')](),{'type':dbH[_0xac4a('0x7c')][_0xac4a('0x7d')][_0xac4a('0x7e')]});}})[_0xac4a('0x25')](respondWithResult(_0x236f57,null))['catch'](handleError(_0x236f57,null));};function runReport(_0x290a73,_0x19ce24,_0xc9d040){var _0x37e519=_0x19ce24[_0xac4a('0x2a')];var _0x451248=0xa;var _0xd7bdd6=['join',_0xac4a('0x53'),_0xac4a('0x54'),_0xac4a('0x55')];var _0x35a97c={'SUM':_0xac4a('0x56'),'COUNT':_0xac4a('0x7f'),'COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':_0xac4a('0x80'),'MIN':_0xac4a('0x58'),'AVG':_0xac4a('0x81'),'GROUP_CONCAT':_0xac4a('0x59'),'GROUP_CONCAT ASC':'GROUP_CONCAT(%s\x20ORDER\x20BY\x20%s\x20ASC)','GROUP_CONCAT DESC':_0xac4a('0x5a')};var _0x56a934={'SEC_TO_TIME':_0xac4a('0x82'),'DATE':_0xac4a('0x5b'),'HOUR':'HOUR(%s)','ROUND':'ROUND(%s)','UNIX_TIMESTAMP':_0xac4a('0x5e')};var _0x212a22=function(_0x1fe86a){return!_['includes']([_0xac4a('0x5f'),'IS\x20NOT\x20NULL',_0xac4a('0x60'),_0xac4a('0x83')],_0x1fe86a);};var _0x406b64=function(_0x35328e){if(!_0x35328e||!_0x35328e[_0xac4a('0x61')]['length']){return'';}for(var _0x50f471='(',_0x31cda0=0x0;_0x31cda0<_0x35328e[_0xac4a('0x61')][_0xac4a('0x46')];_0x31cda0+=0x1){_0x31cda0>0x0&&(_0x50f471+='\x20'+_0x35328e[_0xac4a('0x62')]+'\x20');_0x50f471+=_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x63')]?_0x406b64(_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x63')]):_0x35328e['rules'][_0x31cda0]['field']+'\x20'+_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x65')]+(_0x212a22(_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x65')])?'\x20'+_0x35328e[_0xac4a('0x61')][_0x31cda0][_0xac4a('0x84')]:'');}return _0x50f471+')';};var _0xdaa2ef={'where':{'id':_0x290a73['id']}},_0x2e704b,_0x540d8e,_0x5e0be4,_0x32fd0c,_0x168f30;_0xdaa2ef=_[_0xac4a('0x3b')]({},_0xdaa2ef,_0xc9d040);return db[_0xac4a('0x41')][_0xac4a('0x4d')](_0xdaa2ef)[_0xac4a('0x25')](function(_0x338af3){if(_0x338af3){_0x2e704b=_0x338af3;return _0x338af3['getFields']();}return null;})[_0xac4a('0x25')](function(_0x1bacf2){if(_0x1bacf2){if(!_0x1bacf2[_0xac4a('0x46')]){throw new db['Sequelize'][(_0xac4a('0x85'))](_0xac4a('0x86'),0x193);}_0x540d8e=_0x1bacf2;return db[_0xac4a('0x68')][_0xac4a('0x42')]({'raw':!![]});}return null;})[_0xac4a('0x25')](function(_0x27d023){if(_0x27d023){_0x5e0be4=_[_0xac4a('0x69')](_0x27d023,'id');var _0x2ef42a;var _0x322465=squel['select']();_0x322465[_0xac4a('0x6b')](_0x2e704b['table']);for(var _0x203321=0x0;_0x203321<_0x540d8e[_0xac4a('0x46')];_0x203321+=0x1){_0x2ef42a=_0x540d8e[_0x203321][_0xac4a('0x6d')]?_0x5e0be4[_0x540d8e[_0x203321][_0xac4a('0x6d')]][_0xac4a('0x6e')]:_0x540d8e[_0x203321][_0xac4a('0x64')];_0x2ef42a=_0x540d8e[_0x203321][_0xac4a('0x6f')]?_['replace'](_0x35a97c[_0x540d8e[_0x203321][_0xac4a('0x6f')]],'%s',_0x2ef42a):_0x2ef42a;_0x2ef42a=_0x540d8e[_0x203321][_0xac4a('0x71')]?_[_0xac4a('0x70')](_0x56a934[_0x540d8e[_0x203321][_0xac4a('0x71')]],'%s',_0x2ef42a):_0x2ef42a;if(_0x540d8e[_0x203321][_0xac4a('0x87')]){_0x322465['group'](_0x2ef42a);}_0x540d8e[_0x203321][_0xac4a('0x72')]&&_0x322465[_0xac4a('0x38')](_0x2ef42a,_0x540d8e[_0x203321]['orderBy']==='DESC'?![]:!![]);_0x322465[_0xac4a('0x64')](_0x2ef42a,_0x540d8e[_0x203321][_0xac4a('0x88')]||_0x2ef42a);}if(_0x2e704b['joins']){_0x2e704b[_0xac4a('0x73')]=JSON[_0xac4a('0x78')](_0x2e704b[_0xac4a('0x73')]);for(var _0x37657e=0x0;_0x37657e<_0x2e704b[_0xac4a('0x73')][_0xac4a('0x46')];_0x37657e+=0x1){if(_0x2e704b['joins'][_0x37657e][_0xac4a('0x2e')]&&_[_0xac4a('0x89')](_0xd7bdd6,_0x2e704b[_0xac4a('0x73')][_0x37657e]['type'])&&_0x2e704b[_0xac4a('0x73')][_0x37657e][_0xac4a('0x74')]&&_0x2e704b[_0xac4a('0x73')][_0x37657e][_0xac4a('0x75')]&&_0x2e704b[_0xac4a('0x73')][_0x37657e][_0xac4a('0x8a')]){_0x322465[_0x2e704b['joins'][_0x37657e][_0xac4a('0x2e')]](_0x2e704b[_0xac4a('0x73')][_0x37657e]['foreignTable'],null,util[_0xac4a('0x71')]('%s.%s\x20=\x20%s.%s',_0x2e704b[_0xac4a('0x6c')],_0x2e704b[_0xac4a('0x73')][_0x37657e]['parentKey'],_0x2e704b[_0xac4a('0x73')][_0x37657e]['foreignTable'],_0x2e704b[_0xac4a('0x73')][_0x37657e]['foreignKey']));}}}if(_0x2e704b[_0xac4a('0x77')]){_0x2e704b[_0xac4a('0x77')]=JSON[_0xac4a('0x78')](_0x2e704b[_0xac4a('0x77')]);_0x322465[_0xac4a('0x3a')](_0x406b64(_0x2e704b[_0xac4a('0x77')][_0xac4a('0x63')]));}_0x168f30=_0x322465[_0xac4a('0x79')]();_0x322465[_0xac4a('0x1d')](_0x451248);_0x322465[_0xac4a('0x1b')](0x0);return;}})[_0xac4a('0x25')](function(){if(_0x19ce24[_0xac4a('0x8b')]===_0xac4a('0x8c')){return null;}var _0x4217df=_['merge'](_0x19ce24,{'name':_0x19ce24[_0xac4a('0x8d')]||_0x19ce24[_0xac4a('0x2a')]||_0x2e704b['name'],'basename':_0x37e519,'savename':util[_0xac4a('0x71')](_0xac4a('0x8e'),_0x19ce24[_0xac4a('0x2a')]||_0x2e704b[_0xac4a('0x2a')],require(_0xac4a('0x8f'))['generate'](0x4),_0x19ce24[_0xac4a('0x8b')]||'csv'),'reportId':_0x2e704b['id'],'reportType':_0xac4a('0x90')});return db[_0xac4a('0x91')][_0xac4a('0x47')](_0x4217df,{'raw':!![]});})[_0xac4a('0x25')](function(_0x53f23d){if(_0x2e704b[_0xac4a('0x6c')]==='cdr'){_0x168f30[_0xac4a('0x3a')](_0x2e704b[_0xac4a('0x6c')]+_0xac4a('0x92'),_0x19ce24['startDate'],_0x19ce24[_0xac4a('0x93')]);}else{_0x168f30[_0xac4a('0x3a')](_0x2e704b[_0xac4a('0x6c')]+'.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x19ce24[_0xac4a('0x94')],_0x19ce24[_0xac4a('0x93')]);}if(_0x53f23d){logger[_0xac4a('0x95')](_0xac4a('0x96'),_0x168f30[_0xac4a('0x7b')]());require(_0xac4a('0x97'))[_0xac4a('0x98')](path[_0xac4a('0x52')](__dirname,'../../components/export/',_0x53f23d[_0xac4a('0x8b')]),[_0x53f23d['id'],_0x168f30['toString'](),path['join'](__dirname,'../../files/reports',_0x53f23d['savename']),_0x37e519]);return _0x53f23d;}else{var _0x502275=squel[_0xac4a('0x6a')]();_0x502275[_0xac4a('0x6b')]('('+_0x168f30[_0xac4a('0x7b')]()+')',_0xac4a('0x99'));_0x502275[_0xac4a('0x64')]('COUNT(*)',_0xac4a('0x1e'));_0x168f30[_0xac4a('0x1d')](_0x19ce24[_0xac4a('0x1d')]||_0x451248);_0x168f30[_0xac4a('0x1b')](_0x19ce24[_0xac4a('0x1b')]||0x0);return dbH[_0xac4a('0x7c')][_0xac4a('0x31')](_0x502275[_0xac4a('0x7b')](),{'type':dbH['sequelize'][_0xac4a('0x7d')][_0xac4a('0x7e')]})[_0xac4a('0x25')](function(_0x25331f){if(!_0x25331f[_0xac4a('0x46')]){_0x32fd0c=0x0;}else{_0x32fd0c=_0x25331f[0x0][_0xac4a('0x1e')]||0x0;}return dbH[_0xac4a('0x7c')]['query'](_0x168f30['toString'](),{'type':dbH[_0xac4a('0x7c')][_0xac4a('0x7d')]['SELECT']});})[_0xac4a('0x25')](function(_0x366f5a){return{'rows':_0x366f5a||[],'count':_0x32fd0c};});}});}exports['run']=function(_0x5bd013,_0x2fe103){return runReport(_0x5bd013[_0xac4a('0x50')],_0x5bd013[_0xac4a('0x31')],_0x5bd013[_0xac4a('0x3e')])[_0xac4a('0x25')](respondWithResult(_0x2fe103,null))['catch'](handleError(_0x2fe103,null));};exports[_0xac4a('0x9a')]=runReport;exports['query']=function(_0x4f2d85,_0x538cfd){var _0x63c30=0xa;var _0x4301c3=[_0xac4a('0x52'),_0xac4a('0x53'),_0xac4a('0x54'),_0xac4a('0x55')];var _0xcad25d={'SUM':_0xac4a('0x56'),'COUNT':'COUNT(%s)','COUNT DISTINCT':'COUNT(DISTINCT\x20%s)','MAX':'MAX(%s)','MIN':_0xac4a('0x58'),'AVG':_0xac4a('0x81'),'GROUP_CONCAT':_0xac4a('0x59'),'GROUP_CONCAT ASC':_0xac4a('0x9b'),'GROUP_CONCAT DESC':_0xac4a('0x5a')};var _0xcd140e={'SEC_TO_TIME':_0xac4a('0x82'),'DATE':_0xac4a('0x5b'),'HOUR':_0xac4a('0x5c'),'ROUND':_0xac4a('0x5d'),'UNIX_TIMESTAMP':_0xac4a('0x5e')};var _0x37cb49=function(_0xe0fd57){return!_[_0xac4a('0x89')]([_0xac4a('0x5f'),_0xac4a('0x9c'),_0xac4a('0x60'),_0xac4a('0x83')],_0xe0fd57);};var _0x41cdb5=function(_0x172d03){if(!_0x172d03||!_0x172d03[_0xac4a('0x61')][_0xac4a('0x46')]){return'';}for(var _0x3e2575='(',_0x4cc581=0x0;_0x4cc581<_0x172d03[_0xac4a('0x61')][_0xac4a('0x46')];_0x4cc581+=0x1){_0x4cc581>0x0&&(_0x3e2575+='\x20'+_0x172d03[_0xac4a('0x62')]+'\x20');_0x3e2575+=_0x172d03[_0xac4a('0x61')][_0x4cc581][_0xac4a('0x63')]?_0x41cdb5(_0x172d03[_0xac4a('0x61')][_0x4cc581][_0xac4a('0x63')]):_0x172d03[_0xac4a('0x61')][_0x4cc581]['field']+'\x20'+_0x172d03['rules'][_0x4cc581][_0xac4a('0x65')]+(_0x37cb49(_0x172d03[_0xac4a('0x61')][_0x4cc581][_0xac4a('0x65')])?'\x20'+_0x172d03['rules'][_0x4cc581]['value']:'');}return _0x3e2575+')';};var _0x5de198={'where':{'id':_0x4f2d85[_0xac4a('0x50')]['id']}},_0x2b6773,_0x52df82,_0x59e82c,_0x216055,_0x52963c;_0x5de198=_['merge']({},_0x5de198,_0x4f2d85[_0xac4a('0x3e')]);return db[_0xac4a('0x41')][_0xac4a('0x4d')](_0x5de198)[_0xac4a('0x25')](function(_0x403a16){if(_0x403a16){_0x2b6773=_0x403a16;return _0x403a16[_0xac4a('0x66')]();}return null;})['then'](function(_0x25bf23){if(_0x25bf23){if(!_0x25bf23[_0xac4a('0x46')]){throw new db[(_0xac4a('0x67'))]['ValidationErrorItem'](_0xac4a('0x86'),0x193);}_0x52df82=_0x25bf23;return db[_0xac4a('0x68')][_0xac4a('0x42')]({'raw':!![]});}return null;})[_0xac4a('0x25')](function(_0x5bb911){if(_0x5bb911){_0x59e82c=_[_0xac4a('0x69')](_0x5bb911,'id');var _0x403f5a;var _0x3eae2f=squel[_0xac4a('0x6a')]();_0x3eae2f[_0xac4a('0x6b')](_0x2b6773[_0xac4a('0x6c')]);for(var _0x4a0cd9=0x0;_0x4a0cd9<_0x52df82['length'];_0x4a0cd9+=0x1){_0x403f5a=_0x52df82[_0x4a0cd9][_0xac4a('0x6d')]?_0x59e82c[_0x52df82[_0x4a0cd9][_0xac4a('0x6d')]][_0xac4a('0x6e')]:_0x52df82[_0x4a0cd9][_0xac4a('0x64')];_0x403f5a=_0x52df82[_0x4a0cd9][_0xac4a('0x6f')]?_[_0xac4a('0x70')](_0xcad25d[_0x52df82[_0x4a0cd9]['function']],'%s',_0x403f5a):_0x403f5a;_0x403f5a=_0x52df82[_0x4a0cd9][_0xac4a('0x71')]?_['replace'](_0xcd140e[_0x52df82[_0x4a0cd9][_0xac4a('0x71')]],'%s',_0x403f5a):_0x403f5a;if(_0x52df82[_0x4a0cd9]['groupBy']){_0x3eae2f[_0xac4a('0x63')](_0x403f5a);}_0x52df82[_0x4a0cd9][_0xac4a('0x72')]&&_0x3eae2f[_0xac4a('0x38')](_0x403f5a,_0x52df82[_0x4a0cd9][_0xac4a('0x72')]==='DESC'?![]:!![]);_0x3eae2f[_0xac4a('0x64')](_0x403f5a,_0x52df82[_0x4a0cd9][_0xac4a('0x88')]||_0x403f5a);}if(_0x2b6773[_0xac4a('0x73')]){_0x2b6773[_0xac4a('0x73')]=JSON[_0xac4a('0x78')](_0x2b6773['joins']);for(var _0x3dd60a=0x0;_0x3dd60a<_0x2b6773[_0xac4a('0x73')][_0xac4a('0x46')];_0x3dd60a+=0x1){if(_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x2e')]&&_['includes'](_0x4301c3,_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x2e')])&&_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x74')]&&_0x2b6773[_0xac4a('0x73')][_0x3dd60a]['foreignTable']&&_0x2b6773['joins'][_0x3dd60a]['foreignKey']){_0x3eae2f[_0x2b6773['joins'][_0x3dd60a][_0xac4a('0x2e')]](_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x75')],null,util[_0xac4a('0x71')](_0xac4a('0x76'),_0x2b6773['table'],_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x74')],_0x2b6773['joins'][_0x3dd60a][_0xac4a('0x75')],_0x2b6773[_0xac4a('0x73')][_0x3dd60a][_0xac4a('0x8a')]));}}}if(_0x2b6773['conditions']){_0x2b6773[_0xac4a('0x77')]=JSON[_0xac4a('0x78')](_0x2b6773[_0xac4a('0x77')]);_0x3eae2f[_0xac4a('0x3a')](_0x41cdb5(_0x2b6773[_0xac4a('0x77')][_0xac4a('0x63')]));}_0x52963c=_0x3eae2f[_0xac4a('0x79')]();_0x3eae2f[_0xac4a('0x1d')](_0x63c30);_0x3eae2f[_0xac4a('0x1b')](0x0);logger['debug'](_0xac4a('0x7a'),_0x3eae2f[_0xac4a('0x7b')]());return dbH['sequelize'][_0xac4a('0x31')](_0x3eae2f['toString'](),{'type':dbH[_0xac4a('0x7c')][_0xac4a('0x7d')]['SELECT']});}})[_0xac4a('0x25')](function(){return{'sql':_0x52963c[_0xac4a('0x7b')]()};})[_0xac4a('0x25')](respondWithResult(_0x538cfd,null))[_0xac4a('0x44')](handleError(_0x538cfd,null));};
\ No newline at end of file
index 6290829..623df7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbccb=['path','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','define','analytics_default_reports','lodash','util','api','bluebird'];(function(_0x493552,_0x2cd527){var _0x243ea8=function(_0x531f6e){while(--_0x531f6e){_0x493552['push'](_0x493552['shift']());}};_0x243ea8(++_0x2cd527);}(_0xbccb,0x125));var _0xbbcc=function(_0x2fc012,_0x503e5b){_0x2fc012=_0x2fc012-0x0;var _0x2891f9=_0xbccb[_0x2fc012];return _0x2891f9;};'use strict';var _=require(_0xbbcc('0x0'));var util=require(_0xbbcc('0x1'));var logger=require('../../config/logger')(_0xbbcc('0x2'));var moment=require('moment');var BPromise=require(_0xbbcc('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbbcc('0x4'));var rimraf=require(_0xbbcc('0x5'));var config=require(_0xbbcc('0x6'));var attributes=require(_0xbbcc('0x7'));module[_0xbbcc('0x8')]=function(_0x34e3c4,_0x139e70){return _0x34e3c4[_0xbbcc('0x9')]('AnalyticDefaultReport',attributes,{'tableName':_0xbbcc('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2f66=['request-promise','path','rimraf','../../config/environment','./analyticDefaultReport.attributes','exports','define','AnalyticDefaultReport','analytics_default_reports','lodash','util','../../config/logger','api','moment'];(function(_0x53ad58,_0x3fb489){var _0x554b03=function(_0x5769ba){while(--_0x5769ba){_0x53ad58['push'](_0x53ad58['shift']());}};_0x554b03(++_0x3fb489);}(_0x2f66,0xdb));var _0x62f6=function(_0x3eaf5e,_0x3c9120){_0x3eaf5e=_0x3eaf5e-0x0;var _0x2e7aad=_0x2f66[_0x3eaf5e];return _0x2e7aad;};'use strict';var _=require(_0x62f6('0x0'));var util=require(_0x62f6('0x1'));var logger=require(_0x62f6('0x2'))(_0x62f6('0x3'));var moment=require(_0x62f6('0x4'));var BPromise=require('bluebird');var rp=require(_0x62f6('0x5'));var fs=require('fs');var path=require(_0x62f6('0x6'));var rimraf=require(_0x62f6('0x7'));var config=require(_0x62f6('0x8'));var attributes=require(_0x62f6('0x9'));module[_0x62f6('0xa')]=function(_0x13e31c,_0xd5edde){return _0x13e31c[_0x62f6('0xb')](_0x62f6('0xc'),attributes,{'tableName':_0x62f6('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9ac775b..500f1ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d22=['../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','AnalyticDefaultReport,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','info','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x37164a,_0x2ddfad){var _0x13e138=function(_0x209cef){while(--_0x209cef){_0x37164a['push'](_0x37164a['shift']());}};_0x13e138(++_0x2ddfad);}(_0x1d22,0x1c7));var _0x21d2=function(_0x405ae5,_0x3fd161){_0x405ae5=_0x405ae5-0x0;var _0x2fe107=_0x1d22[_0x405ae5];return _0x2fe107;};'use strict';var _=require(_0x21d2('0x0'));var util=require(_0x21d2('0x1'));var moment=require(_0x21d2('0x2'));var BPromise=require(_0x21d2('0x3'));var rs=require(_0x21d2('0x4'));var fs=require('fs');var Redis=require(_0x21d2('0x5'));var db=require(_0x21d2('0x6'))['db'];var utils=require(_0x21d2('0x7'));var logger=require('../../config/logger')(_0x21d2('0x8'));var config=require(_0x21d2('0x9'));var jayson=require(_0x21d2('0xa'));var client=jayson[_0x21d2('0xb')][_0x21d2('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x170b2f,_0x2bbb57,_0xc33bee){return new BPromise(function(_0x4517e6,_0x142a0c){return client['request'](_0x170b2f,_0xc33bee)[_0x21d2('0xd')](function(_0x26705b){logger['info'](_0x21d2('0xe'),_0x2bbb57,_0x21d2('0xf'));logger[_0x21d2('0x10')]('AnalyticDefaultReport,\x20%s,\x20%s,\x20%s',_0x2bbb57,'request\x20sent',JSON[_0x21d2('0x11')](_0x26705b));if(_0x26705b[_0x21d2('0x12')]){if(_0x26705b[_0x21d2('0x12')]['code']===0x1f4){logger['error']('AnalyticDefaultReport,\x20%s,\x20%s',_0x2bbb57,_0x26705b['error'][_0x21d2('0x13')]);return _0x142a0c(_0x26705b['error'][_0x21d2('0x13')]);}logger[_0x21d2('0x12')](_0x21d2('0xe'),_0x2bbb57,_0x26705b[_0x21d2('0x12')][_0x21d2('0x13')]);return _0x4517e6(_0x26705b['error']['message']);}else{logger[_0x21d2('0x14')](_0x21d2('0xe'),_0x2bbb57,_0x21d2('0xf'));_0x4517e6(_0x26705b[_0x21d2('0x15')][_0x21d2('0x13')]);}})['catch'](function(_0x27bbe6){logger['error'](_0x21d2('0xe'),_0x2bbb57,_0x27bbe6);_0x142a0c(_0x27bbe6);});});}
\ No newline at end of file
+var _0xe371=['stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','jayson/promise','client','request','then','info','AnalyticDefaultReport,\x20%s,\x20%s','debug','AnalyticDefaultReport,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x5c8dca,_0x1ecbf1){var _0x5d1e32=function(_0x54001c){while(--_0x54001c){_0x5c8dca['push'](_0x5c8dca['shift']());}};_0x5d1e32(++_0x1ecbf1);}(_0xe371,0x89));var _0x1e37=function(_0x1c3cae,_0x4c4ee9){_0x1c3cae=_0x1c3cae-0x0;var _0x27150a=_0xe371[_0x1c3cae];return _0x27150a;};'use strict';var _=require(_0x1e37('0x0'));var util=require(_0x1e37('0x1'));var moment=require(_0x1e37('0x2'));var BPromise=require(_0x1e37('0x3'));var rs=require(_0x1e37('0x4'));var fs=require('fs');var Redis=require(_0x1e37('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x1e37('0x6'))(_0x1e37('0x7'));var config=require('../../config/environment');var jayson=require(_0x1e37('0x8'));var client=jayson[_0x1e37('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x55d5cb,_0x202153,_0x118f7b){return new BPromise(function(_0x40d4e9,_0x1f687e){return client[_0x1e37('0xa')](_0x55d5cb,_0x118f7b)[_0x1e37('0xb')](function(_0x5a5773){logger[_0x1e37('0xc')](_0x1e37('0xd'),_0x202153,'request\x20sent');logger[_0x1e37('0xe')](_0x1e37('0xf'),_0x202153,_0x1e37('0x10'),JSON[_0x1e37('0x11')](_0x5a5773));if(_0x5a5773[_0x1e37('0x12')]){if(_0x5a5773['error'][_0x1e37('0x13')]===0x1f4){logger['error'](_0x1e37('0xd'),_0x202153,_0x5a5773['error'][_0x1e37('0x14')]);return _0x1f687e(_0x5a5773[_0x1e37('0x12')][_0x1e37('0x14')]);}logger[_0x1e37('0x12')](_0x1e37('0xd'),_0x202153,_0x5a5773[_0x1e37('0x12')]['message']);return _0x40d4e9(_0x5a5773[_0x1e37('0x12')][_0x1e37('0x14')]);}else{logger[_0x1e37('0xc')](_0x1e37('0xd'),_0x202153,_0x1e37('0x10'));_0x40d4e9(_0x5a5773[_0x1e37('0x15')][_0x1e37('0x14')]);}})['catch'](function(_0x573cb5){logger[_0x1e37('0x12')](_0x1e37('0xd'),_0x202153,_0x573cb5);_0x1f687e(_0x573cb5);});});}
\ No newline at end of file
index 92e7011..88f84a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6a0=['isAuthenticated','index','show','preview','/:id/run','run','/:id/query','query','create','/:id','exports','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','get'];(function(_0xfc40e6,_0x7f95d7){var _0x4c5cdb=function(_0x31c99e){while(--_0x31c99e){_0xfc40e6['push'](_0xfc40e6['shift']());}};_0x4c5cdb(++_0x7f95d7);}(_0xc6a0,0x170));var _0x0c6a=function(_0x298530,_0x47514c){_0x298530=_0x298530-0x0;var _0x3c069c=_0xc6a0[_0x298530];return _0x3c069c;};'use strict';var multer=require(_0x0c6a('0x0'));var util=require(_0x0c6a('0x1'));var path=require(_0x0c6a('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0c6a('0x3')]();var fs_extra=require(_0x0c6a('0x4'));var auth=require(_0x0c6a('0x5'));var interaction=require(_0x0c6a('0x6'));var config=require(_0x0c6a('0x7'));var controller=require(_0x0c6a('0x8'));router[_0x0c6a('0x9')]('/',auth[_0x0c6a('0xa')](),controller[_0x0c6a('0xb')]);router[_0x0c6a('0x9')]('/:id',auth[_0x0c6a('0xa')](),controller[_0x0c6a('0xc')]);router[_0x0c6a('0x9')]('/:id/preview',auth[_0x0c6a('0xa')](),controller[_0x0c6a('0xd')]);router[_0x0c6a('0x9')](_0x0c6a('0xe'),auth[_0x0c6a('0xa')](),controller[_0x0c6a('0xf')]);router[_0x0c6a('0x9')](_0x0c6a('0x10'),auth['isAuthenticated'](),controller[_0x0c6a('0x11')]);router['post']('/',auth[_0x0c6a('0xa')](),controller[_0x0c6a('0x12')]);router['put'](_0x0c6a('0x13'),auth[_0x0c6a('0xa')](),controller['update']);router['delete']('/:id',auth[_0x0c6a('0xa')](),controller['destroy']);module[_0x0c6a('0x14')]=router;
\ No newline at end of file
+var _0x73ed=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./analyticDefaultReport.controller','get','isAuthenticated','/:id','preview','/:id/run','run','/:id/query','create','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x313e36,_0x132483){var _0x21e6ab=function(_0xd66b8f){while(--_0xd66b8f){_0x313e36['push'](_0x313e36['shift']());}};_0x21e6ab(++_0x132483);}(_0x73ed,0x175));var _0xd73e=function(_0x131921,_0x4351bb){_0x131921=_0x131921-0x0;var _0x208ca9=_0x73ed[_0x131921];return _0x208ca9;};'use strict';var multer=require(_0xd73e('0x0'));var util=require(_0xd73e('0x1'));var path=require(_0xd73e('0x2'));var timeout=require(_0xd73e('0x3'));var express=require(_0xd73e('0x4'));var router=express[_0xd73e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xd73e('0x6'));var interaction=require(_0xd73e('0x7'));var config=require(_0xd73e('0x8'));var controller=require(_0xd73e('0x9'));router[_0xd73e('0xa')]('/',auth[_0xd73e('0xb')](),controller['index']);router[_0xd73e('0xa')](_0xd73e('0xc'),auth[_0xd73e('0xb')](),controller['show']);router[_0xd73e('0xa')]('/:id/preview',auth[_0xd73e('0xb')](),controller[_0xd73e('0xd')]);router[_0xd73e('0xa')](_0xd73e('0xe'),auth[_0xd73e('0xb')](),controller[_0xd73e('0xf')]);router[_0xd73e('0xa')](_0xd73e('0x10'),auth[_0xd73e('0xb')](),controller['query']);router['post']('/',auth[_0xd73e('0xb')](),controller[_0xd73e('0x11')]);router['put'](_0xd73e('0xc'),auth[_0xd73e('0xb')](),controller['update']);router[_0xd73e('0x12')](_0xd73e('0xc'),auth[_0xd73e('0xb')](),controller[_0xd73e('0x13')]);module[_0xd73e('0x14')]=router;
\ No newline at end of file
index c67f3e0..612f075 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa723=['csv','pdf','xlsx','DATE','Loading','manual','scheduled','INTEGER','UNSIGNED','sequelize','moment','exports','STRING','ENUM'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa723,0x1ad));var _0x3a72=function(_0x45fc6a,_0x166adb){_0x45fc6a=_0x45fc6a-0x0;var _0x14bcfd=_0xa723[_0x45fc6a];return _0x14bcfd;};'use strict';var Sequelize=require(_0x3a72('0x0'));var moment=require(_0x3a72('0x1'));module[_0x3a72('0x2')]={'name':{'type':Sequelize[_0x3a72('0x3')],'allowNull':![]},'basename':{'type':Sequelize[_0x3a72('0x3')],'allowNull':![]},'output':{'type':Sequelize[_0x3a72('0x4')](_0x3a72('0x5'),_0x3a72('0x6'),_0x3a72('0x7')),'allowNull':![],'defaultValue':'csv'},'savename':{'type':Sequelize[_0x3a72('0x3')],'allowNull':![]},'startDate':{'type':Sequelize[_0x3a72('0x8')]},'endDate':{'type':Sequelize['DATE']},'status':{'type':Sequelize[_0x3a72('0x3')],'defaultValue':_0x3a72('0x9')},'type':{'type':Sequelize[_0x3a72('0x4')](_0x3a72('0xa'),_0x3a72('0xb')),'allowNull':![],'defaultValue':_0x3a72('0xa')},'reportId':{'type':Sequelize[_0x3a72('0xc')](0xb)[_0x3a72('0xd')]},'reportType':{'type':Sequelize[_0x3a72('0x3')]}};
\ No newline at end of file
+var _0x9af4=['scheduled','INTEGER','sequelize','moment','STRING','ENUM','csv','pdf','xlsx','DATE','Loading','manual'];(function(_0x3e145e,_0x594eab){var _0x4b4150=function(_0x7b0c9d){while(--_0x7b0c9d){_0x3e145e['push'](_0x3e145e['shift']());}};_0x4b4150(++_0x594eab);}(_0x9af4,0x146));var _0x49af=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0x9af4[_0x2b10c6];return _0x3789d2;};'use strict';var Sequelize=require(_0x49af('0x0'));var moment=require(_0x49af('0x1'));module['exports']={'name':{'type':Sequelize[_0x49af('0x2')],'allowNull':![]},'basename':{'type':Sequelize[_0x49af('0x2')],'allowNull':![]},'output':{'type':Sequelize[_0x49af('0x3')](_0x49af('0x4'),_0x49af('0x5'),_0x49af('0x6')),'allowNull':![],'defaultValue':_0x49af('0x4')},'savename':{'type':Sequelize[_0x49af('0x2')],'allowNull':![]},'startDate':{'type':Sequelize[_0x49af('0x7')]},'endDate':{'type':Sequelize['DATE']},'status':{'type':Sequelize[_0x49af('0x2')],'defaultValue':_0x49af('0x8')},'type':{'type':Sequelize['ENUM'](_0x49af('0x9'),_0x49af('0xa')),'allowNull':![],'defaultValue':_0x49af('0x9')},'reportId':{'type':Sequelize[_0x49af('0xb')](0xb)['UNSIGNED']},'reportType':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 04ce703..c0a8822 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12ee=['../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','get','ExtractedReports','UserProfileResource','destroy','error','name','send','AnalyticExtractedReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','basename','savename','output','root','server/files/reports','Sequelize','ValidationError','Report\x20not\x20found\x20or\x20empty','exists','download','join','%s.%s','toLowerCase','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','ejs','lodash','desk.js','to-csv','querystring','ioredis','../../components/auth/service'];(function(_0x5893e5,_0x1436cc){var _0x2a35b0=function(_0x510e59){while(--_0x510e59){_0x5893e5['push'](_0x5893e5['shift']());}};_0x2a35b0(++_0x1436cc);}(_0x12ee,0xac));var _0xe12e=function(_0x1a80ae,_0x168cbd){_0x1a80ae=_0x1a80ae-0x0;var _0x2c8b41=_0x12ee[_0x1a80ae];return _0x2c8b41;};'use strict';var emlformat=require(_0xe12e('0x0'));var rimraf=require(_0xe12e('0x1'));var zipdir=require(_0xe12e('0x2'));var jsonpatch=require(_0xe12e('0x3'));var rp=require(_0xe12e('0x4'));var moment=require(_0xe12e('0x5'));var BPromise=require(_0xe12e('0x6'));var Mustache=require(_0xe12e('0x7'));var util=require(_0xe12e('0x8'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xe12e('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe12e('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xe12e('0xb'));var toCsv=require(_0xe12e('0xc'));var querystring=require(_0xe12e('0xd'));var Papa=require('papaparse');var Redis=require(_0xe12e('0xe'));var authService=require(_0xe12e('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xe12e('0x10'));var hardwareService=require(_0xe12e('0x11'));var logger=require('../../config/logger')(_0xe12e('0x12'));var utils=require(_0xe12e('0x13'));var config=require(_0xe12e('0x14'));var licenseUtil=require(_0xe12e('0x15'));var db=require(_0xe12e('0x16'))['db'];function respondWithStatusCode(_0x289029,_0x93e244){_0x93e244=_0x93e244||0xcc;return function(_0x5abc4c){if(_0x5abc4c){return _0x289029[_0xe12e('0x17')](_0x93e244);}return _0x289029['status'](_0x93e244)[_0xe12e('0x18')]();};}function respondWithResult(_0x3d3bdd,_0x1c69bd){_0x1c69bd=_0x1c69bd||0xc8;return function(_0x2e049f){if(_0x2e049f){return _0x3d3bdd[_0xe12e('0x19')](_0x1c69bd)[_0xe12e('0x1a')](_0x2e049f);}};}function respondWithFilteredResult(_0x5d4ccd,_0xbcf48e){return function(_0x381e23){if(_0x381e23){var _0x140fee=typeof _0xbcf48e[_0xe12e('0x1b')]==='undefined'&&typeof _0xbcf48e['limit']===_0xe12e('0x1c');var _0x3f482a=_0x381e23['count'];var _0x57a025=_0x140fee?0x0:_0xbcf48e[_0xe12e('0x1b')];var _0x5b76b7=_0x140fee?_0x381e23[_0xe12e('0x1d')]:_0xbcf48e[_0xe12e('0x1b')]+_0xbcf48e[_0xe12e('0x1e')];var _0x20fab1;if(_0x5b76b7>=_0x3f482a){_0x5b76b7=_0x3f482a;_0x20fab1=0xc8;}else{_0x20fab1=0xce;}_0x5d4ccd['status'](_0x20fab1);return _0x5d4ccd[_0xe12e('0x1f')](_0xe12e('0x20'),_0x57a025+'-'+_0x5b76b7+'/'+_0x3f482a)[_0xe12e('0x1a')](_0x381e23);}return null;};}function patchUpdates(_0xa7b7f1){return function(_0x1696f4){try{jsonpatch[_0xe12e('0x21')](_0x1696f4,_0xa7b7f1,!![]);}catch(_0x125bce){return BPromise[_0xe12e('0x22')](_0x125bce);}return _0x1696f4['save']();};}function saveUpdates(_0x2eb44b,_0x3dad02){return function(_0x208259){if(_0x208259){return _0x208259[_0xe12e('0x23')](_0x2eb44b)[_0xe12e('0x24')](function(_0x37dba6){return _0x37dba6;});}return null;};}function removeEntity(_0x45f900,_0x10062e){return function(_0x125365){if(_0x125365){return _0x125365['destroy']()['then'](function(){var _0x2fa80e=_0x125365[_0xe12e('0x25')]({'plain':!![]});var _0x393bd4=_0xe12e('0x26');return db[_0xe12e('0x27')][_0xe12e('0x28')]({'where':{'type':_0x393bd4,'resourceId':_0x2fa80e['id']}})[_0xe12e('0x24')](function(){return _0x125365;});})[_0xe12e('0x24')](function(){_0x45f900[_0xe12e('0x19')](0xcc)[_0xe12e('0x18')]();});}};}function handleEntityNotFound(_0xde27f6,_0x2748f3){return function(_0xe38fa){if(!_0xe38fa){_0xde27f6['sendStatus'](0x194);}return _0xe38fa;};}function handleError(_0x1f4fd2,_0x1eee7c){_0x1eee7c=_0x1eee7c||0x1f4;return function(_0x4858a4){logger[_0xe12e('0x29')](_0x4858a4['stack']);if(_0x4858a4[_0xe12e('0x2a')]){delete _0x4858a4['name'];}_0x1f4fd2[_0xe12e('0x19')](_0x1eee7c)[_0xe12e('0x2b')](_0x4858a4);};}exports['index']=function(_0x55c140,_0x2a763c){var _0x431f4d={},_0x498704={},_0x4cf402={'count':0x0,'rows':[]};var _0xd317a9=_['map'](db[_0xe12e('0x2c')][_0xe12e('0x2d')],function(_0x16236c){return{'name':_0x16236c[_0xe12e('0x2e')],'type':_0x16236c['type'][_0xe12e('0x2f')]};});_0x498704[_0xe12e('0x30')]=_[_0xe12e('0x31')](_0xd317a9,_0xe12e('0x2a'));_0x498704[_0xe12e('0x32')]=_[_0xe12e('0x33')](_0x55c140[_0xe12e('0x32')]);_0x498704[_0xe12e('0x34')]=_[_0xe12e('0x35')](_0x498704[_0xe12e('0x30')],_0x498704[_0xe12e('0x32')]);_0x431f4d[_0xe12e('0x36')]=_[_0xe12e('0x35')](_0x498704[_0xe12e('0x30')],qs['fields'](_0x55c140[_0xe12e('0x32')][_0xe12e('0x37')]));_0x431f4d['attributes']=_0x431f4d[_0xe12e('0x36')][_0xe12e('0x38')]?_0x431f4d['attributes']:_0x498704[_0xe12e('0x30')];if(!_0x55c140['query'][_0xe12e('0x39')](_0xe12e('0x3a'))){_0x431f4d['limit']=qs[_0xe12e('0x1e')](_0x55c140[_0xe12e('0x32')][_0xe12e('0x1e')]);_0x431f4d['offset']=qs[_0xe12e('0x1b')](_0x55c140[_0xe12e('0x32')][_0xe12e('0x1b')]);}_0x431f4d['order']=qs[_0xe12e('0x3b')](_0x55c140['query'][_0xe12e('0x3b')]);_0x431f4d[_0xe12e('0x3c')]=qs[_0xe12e('0x34')](_[_0xe12e('0x3d')](_0x55c140[_0xe12e('0x32')],_0x498704['filters']),_0xd317a9);if(_0x55c140[_0xe12e('0x32')][_0xe12e('0x3e')]){_0x431f4d['where']=_['merge'](_0x431f4d[_0xe12e('0x3c')],{'$or':_[_0xe12e('0x31')](_0xd317a9,function(_0x2cae6e){if(_0x2cae6e[_0xe12e('0x3f')]!==_0xe12e('0x40')){var _0x308af1={};_0x308af1[_0x2cae6e[_0xe12e('0x2a')]]={'$like':'%'+_0x55c140[_0xe12e('0x32')][_0xe12e('0x3e')]+'%'};return _0x308af1;}})});}_0x431f4d=_[_0xe12e('0x41')]({},_0x431f4d,_0x55c140[_0xe12e('0x42')]);var _0x4101c3={'where':_0x431f4d[_0xe12e('0x3c')]};return db[_0xe12e('0x2c')][_0xe12e('0x1d')](_0x4101c3)[_0xe12e('0x24')](function(_0x359651){_0x4cf402[_0xe12e('0x1d')]=_0x359651;if(_0x55c140[_0xe12e('0x32')][_0xe12e('0x43')]){_0x431f4d[_0xe12e('0x44')]=[{'all':!![]}];}return db[_0xe12e('0x2c')][_0xe12e('0x45')](_0x431f4d);})['then'](function(_0xc4e65f){_0x4cf402[_0xe12e('0x46')]=_0xc4e65f;return _0x4cf402;})[_0xe12e('0x24')](respondWithFilteredResult(_0x2a763c,_0x431f4d))[_0xe12e('0x47')](handleError(_0x2a763c,null));};exports[_0xe12e('0x48')]=function(_0x5f52f0,_0x149d3e){var _0x4d1e95={'raw':!![],'where':{'id':_0x5f52f0[_0xe12e('0x49')]['id']}},_0x1d503f={};_0x1d503f['model']=_[_0xe12e('0x33')](db[_0xe12e('0x2c')]['rawAttributes']);_0x1d503f[_0xe12e('0x32')]=_[_0xe12e('0x33')](_0x5f52f0[_0xe12e('0x32')]);_0x1d503f['filters']=_[_0xe12e('0x35')](_0x1d503f[_0xe12e('0x30')],_0x1d503f[_0xe12e('0x32')]);_0x4d1e95[_0xe12e('0x36')]=_['intersection'](_0x1d503f[_0xe12e('0x30')],qs['fields'](_0x5f52f0[_0xe12e('0x32')]['fields']));_0x4d1e95[_0xe12e('0x36')]=_0x4d1e95[_0xe12e('0x36')][_0xe12e('0x38')]?_0x4d1e95[_0xe12e('0x36')]:_0x1d503f[_0xe12e('0x30')];if(_0x5f52f0[_0xe12e('0x32')][_0xe12e('0x43')]){_0x4d1e95[_0xe12e('0x44')]=[{'all':!![]}];}_0x4d1e95=_[_0xe12e('0x41')]({},_0x4d1e95,_0x5f52f0[_0xe12e('0x42')]);return db[_0xe12e('0x2c')][_0xe12e('0x4a')](_0x4d1e95)[_0xe12e('0x24')](handleEntityNotFound(_0x149d3e,null))[_0xe12e('0x24')](respondWithResult(_0x149d3e,null))[_0xe12e('0x47')](handleError(_0x149d3e,null));};exports[_0xe12e('0x4b')]=function(_0x47a711,_0x5c22b9){return db['AnalyticExtractedReport']['create'](_0x47a711[_0xe12e('0x4c')],{})[_0xe12e('0x24')](function(_0x361b73){var _0x1e20d0=_0x47a711[_0xe12e('0x4d')][_0xe12e('0x25')]({'plain':!![]});if(!_0x1e20d0)throw new Error(_0xe12e('0x4e'));if(_0x1e20d0[_0xe12e('0x4f')]===_0xe12e('0x4d')){var _0x4e3d4b=_0x361b73[_0xe12e('0x25')]({'plain':!![]});var _0x444428='ExtractedReports';return db['UserProfileSection'][_0xe12e('0x4a')]({'where':{'name':_0x444428,'userProfileId':_0x1e20d0[_0xe12e('0x50')]},'raw':!![]})['then'](function(_0x4ad36f){if(_0x4ad36f&&_0x4ad36f['autoAssociation']===0x0){return db['UserProfileResource'][_0xe12e('0x4b')]({'name':_0x4e3d4b[_0xe12e('0x2a')],'resourceId':_0x4e3d4b['id'],'type':_0x4ad36f[_0xe12e('0x2a')],'sectionId':_0x4ad36f['id']},{})[_0xe12e('0x24')](function(){return _0x361b73;});}else{return _0x361b73;}})[_0xe12e('0x47')](function(_0xfefbe2){logger[_0xe12e('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xfefbe2);throw _0xfefbe2;});}return _0x361b73;})[_0xe12e('0x24')](respondWithResult(_0x5c22b9,0xc9))[_0xe12e('0x47')](handleError(_0x5c22b9,null));};exports[_0xe12e('0x23')]=function(_0x522a32,_0x3035d2){if(_0x522a32[_0xe12e('0x4c')]['id']){delete _0x522a32[_0xe12e('0x4c')]['id'];}return db[_0xe12e('0x2c')][_0xe12e('0x4a')]({'where':{'id':_0x522a32[_0xe12e('0x49')]['id']}})[_0xe12e('0x24')](handleEntityNotFound(_0x3035d2,null))[_0xe12e('0x24')](saveUpdates(_0x522a32['body'],null))[_0xe12e('0x24')](respondWithResult(_0x3035d2,null))[_0xe12e('0x47')](handleError(_0x3035d2,null));};exports['destroy']=function(_0x33720e,_0x10fcdb){return db[_0xe12e('0x2c')][_0xe12e('0x4a')]({'where':{'id':_0x33720e['params']['id']}})['then'](handleEntityNotFound(_0x10fcdb,null))[_0xe12e('0x24')](removeEntity(_0x10fcdb,null))['catch'](handleError(_0x10fcdb,null));};exports['download']=function(_0x4578ca,_0x3d94f4,_0x3ca16c){return db['AnalyticExtractedReport'][_0xe12e('0x4a')]({'where':{'id':_0x4578ca['params']['id']},'attributes':[_0xe12e('0x2a'),_0xe12e('0x51'),_0xe12e('0x52'),_0xe12e('0x53')],'raw':!![]})[_0xe12e('0x24')](handleEntityNotFound(_0x3d94f4,null))[_0xe12e('0x24')](function(_0x200de3){if(_0x200de3){if(!fs['existsSync'](path['join'](config[_0xe12e('0x54')],_0xe12e('0x55'),_0x200de3['savename']))){throw new db[(_0xe12e('0x56'))][(_0xe12e('0x57'))](_0xe12e('0x58'));}if(_0x4578ca[_0xe12e('0x32')][_0xe12e('0x59')]){return _0x3d94f4[_0xe12e('0x17')](0xc8);}return _0x3d94f4[_0xe12e('0x5a')](path[_0xe12e('0x5b')](config[_0xe12e('0x54')],_0xe12e('0x55'),_0x200de3[_0xe12e('0x52')]),util['format'](_0xe12e('0x5c'),_0x200de3[_0xe12e('0x51')]||_0x200de3['name'],_0x200de3[_0xe12e('0x53')][_0xe12e('0x5d')]()));}})[_0xe12e('0x47')](handleError(_0x3d94f4,null));};
\ No newline at end of file
+var _0xbe6b=['mustache','util','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','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','Content-Range','apply','reject','save','update','then','destroy','get','ExtractedReports','UserProfileResource','error','name','send','index','AnalyticExtractedReport','type','key','model','query','intersection','fields','attributes','length','limit','order','sort','where','filters','pick','filter','merge','map','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','options','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','download','basename','savename','existsSync','join','root','server/files/reports','Sequelize','Report\x20not\x20found\x20or\x20empty','exists','format','%s.%s','output','toLowerCase','rimraf','zip-dir','fast-json-patch','request-promise','bluebird'];(function(_0x2d7ff9,_0x57c025){var _0x3d7f85=function(_0x934aab){while(--_0x934aab){_0x2d7ff9['push'](_0x2d7ff9['shift']());}};_0x3d7f85(++_0x57c025);}(_0xbe6b,0x124));var _0xbbe6=function(_0x54f945,_0xdf3da8){_0x54f945=_0x54f945-0x0;var _0xe011ca=_0xbe6b[_0x54f945];return _0xe011ca;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbbe6('0x0'));var zipdir=require(_0xbbe6('0x1'));var jsonpatch=require(_0xbbe6('0x2'));var rp=require(_0xbbe6('0x3'));var moment=require('moment');var BPromise=require(_0xbbe6('0x4'));var Mustache=require(_0xbbe6('0x5'));var util=require(_0xbbe6('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0xbbe6('0x7'));var ejs=require(_0xbbe6('0x8'));var fs=require('fs');var fs_extra=require(_0xbbe6('0x9'));var _=require('lodash');var squel=require(_0xbbe6('0xa'));var crypto=require(_0xbbe6('0xb'));var jsforce=require(_0xbbe6('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xbbe6('0x7'));var querystring=require(_0xbbe6('0xd'));var Papa=require('papaparse');var Redis=require(_0xbbe6('0xe'));var authService=require(_0xbbe6('0xf'));var qs=require(_0xbbe6('0x10'));var as=require(_0xbbe6('0x11'));var hardwareService=require(_0xbbe6('0x12'));var logger=require(_0xbbe6('0x13'))(_0xbbe6('0x14'));var utils=require(_0xbbe6('0x15'));var config=require(_0xbbe6('0x16'));var licenseUtil=require(_0xbbe6('0x17'));var db=require(_0xbbe6('0x18'))['db'];function respondWithStatusCode(_0x51aa86,_0x52016d){_0x52016d=_0x52016d||0xcc;return function(_0x1ccf00){if(_0x1ccf00){return _0x51aa86[_0xbbe6('0x19')](_0x52016d);}return _0x51aa86[_0xbbe6('0x1a')](_0x52016d)[_0xbbe6('0x1b')]();};}function respondWithResult(_0x33b8f8,_0x4deff9){_0x4deff9=_0x4deff9||0xc8;return function(_0x4db2f3){if(_0x4db2f3){return _0x33b8f8[_0xbbe6('0x1a')](_0x4deff9)[_0xbbe6('0x1c')](_0x4db2f3);}};}function respondWithFilteredResult(_0x20c24c,_0x5ede0e){return function(_0x1f0f25){if(_0x1f0f25){var _0x1ffd3d=typeof _0x5ede0e[_0xbbe6('0x1d')]===_0xbbe6('0x1e')&&typeof _0x5ede0e['limit']==='undefined';var _0x2293b8=_0x1f0f25[_0xbbe6('0x1f')];var _0x40fe17=_0x1ffd3d?0x0:_0x5ede0e[_0xbbe6('0x1d')];var _0x505d12=_0x1ffd3d?_0x1f0f25[_0xbbe6('0x1f')]:_0x5ede0e[_0xbbe6('0x1d')]+_0x5ede0e['limit'];var _0x1e6de7;if(_0x505d12>=_0x2293b8){_0x505d12=_0x2293b8;_0x1e6de7=0xc8;}else{_0x1e6de7=0xce;}_0x20c24c['status'](_0x1e6de7);return _0x20c24c[_0xbbe6('0x20')](_0xbbe6('0x21'),_0x40fe17+'-'+_0x505d12+'/'+_0x2293b8)['json'](_0x1f0f25);}return null;};}function patchUpdates(_0x17f56c){return function(_0x465896){try{jsonpatch[_0xbbe6('0x22')](_0x465896,_0x17f56c,!![]);}catch(_0x361e68){return BPromise[_0xbbe6('0x23')](_0x361e68);}return _0x465896[_0xbbe6('0x24')]();};}function saveUpdates(_0x235e7d,_0x111a5c){return function(_0x3e2f33){if(_0x3e2f33){return _0x3e2f33[_0xbbe6('0x25')](_0x235e7d)[_0xbbe6('0x26')](function(_0x251a08){return _0x251a08;});}return null;};}function removeEntity(_0x43dfa4,_0x865bfa){return function(_0x109de8){if(_0x109de8){return _0x109de8[_0xbbe6('0x27')]()[_0xbbe6('0x26')](function(){var _0x366b0b=_0x109de8[_0xbbe6('0x28')]({'plain':!![]});var _0x1e5076=_0xbbe6('0x29');return db[_0xbbe6('0x2a')][_0xbbe6('0x27')]({'where':{'type':_0x1e5076,'resourceId':_0x366b0b['id']}})['then'](function(){return _0x109de8;});})[_0xbbe6('0x26')](function(){_0x43dfa4['status'](0xcc)[_0xbbe6('0x1b')]();});}};}function handleEntityNotFound(_0x304f5e,_0xd570cc){return function(_0xb1fe11){if(!_0xb1fe11){_0x304f5e['sendStatus'](0x194);}return _0xb1fe11;};}function handleError(_0x2292a1,_0x4c6bfa){_0x4c6bfa=_0x4c6bfa||0x1f4;return function(_0x392450){logger[_0xbbe6('0x2b')](_0x392450['stack']);if(_0x392450[_0xbbe6('0x2c')]){delete _0x392450['name'];}_0x2292a1[_0xbbe6('0x1a')](_0x4c6bfa)[_0xbbe6('0x2d')](_0x392450);};}exports[_0xbbe6('0x2e')]=function(_0x11d595,_0x276ac6){var _0x20ab1b={},_0x5d19a1={},_0x43b5d6={'count':0x0,'rows':[]};var _0x5f3916=_['map'](db[_0xbbe6('0x2f')]['rawAttributes'],function(_0x516328){return{'name':_0x516328['fieldName'],'type':_0x516328[_0xbbe6('0x30')][_0xbbe6('0x31')]};});_0x5d19a1[_0xbbe6('0x32')]=_['map'](_0x5f3916,_0xbbe6('0x2c'));_0x5d19a1[_0xbbe6('0x33')]=_['keys'](_0x11d595[_0xbbe6('0x33')]);_0x5d19a1['filters']=_[_0xbbe6('0x34')](_0x5d19a1[_0xbbe6('0x32')],_0x5d19a1['query']);_0x20ab1b['attributes']=_[_0xbbe6('0x34')](_0x5d19a1[_0xbbe6('0x32')],qs[_0xbbe6('0x35')](_0x11d595[_0xbbe6('0x33')][_0xbbe6('0x35')]));_0x20ab1b[_0xbbe6('0x36')]=_0x20ab1b[_0xbbe6('0x36')][_0xbbe6('0x37')]?_0x20ab1b[_0xbbe6('0x36')]:_0x5d19a1[_0xbbe6('0x32')];if(!_0x11d595[_0xbbe6('0x33')]['hasOwnProperty']('nolimit')){_0x20ab1b[_0xbbe6('0x38')]=qs[_0xbbe6('0x38')](_0x11d595['query']['limit']);_0x20ab1b[_0xbbe6('0x1d')]=qs[_0xbbe6('0x1d')](_0x11d595[_0xbbe6('0x33')][_0xbbe6('0x1d')]);}_0x20ab1b[_0xbbe6('0x39')]=qs[_0xbbe6('0x3a')](_0x11d595['query'][_0xbbe6('0x3a')]);_0x20ab1b[_0xbbe6('0x3b')]=qs[_0xbbe6('0x3c')](_[_0xbbe6('0x3d')](_0x11d595[_0xbbe6('0x33')],_0x5d19a1[_0xbbe6('0x3c')]),_0x5f3916);if(_0x11d595[_0xbbe6('0x33')][_0xbbe6('0x3e')]){_0x20ab1b['where']=_[_0xbbe6('0x3f')](_0x20ab1b['where'],{'$or':_[_0xbbe6('0x40')](_0x5f3916,function(_0x2c021a){if(_0x2c021a['type']!==_0xbbe6('0x41')){var _0x4008e3={};_0x4008e3[_0x2c021a[_0xbbe6('0x2c')]]={'$like':'%'+_0x11d595['query']['filter']+'%'};return _0x4008e3;}})});}_0x20ab1b=_[_0xbbe6('0x3f')]({},_0x20ab1b,_0x11d595['options']);var _0x130387={'where':_0x20ab1b[_0xbbe6('0x3b')]};return db[_0xbbe6('0x2f')]['count'](_0x130387)[_0xbbe6('0x26')](function(_0x51eaef){_0x43b5d6[_0xbbe6('0x1f')]=_0x51eaef;if(_0x11d595[_0xbbe6('0x33')][_0xbbe6('0x42')]){_0x20ab1b[_0xbbe6('0x43')]=[{'all':!![]}];}return db['AnalyticExtractedReport'][_0xbbe6('0x44')](_0x20ab1b);})[_0xbbe6('0x26')](function(_0x304df3){_0x43b5d6[_0xbbe6('0x45')]=_0x304df3;return _0x43b5d6;})[_0xbbe6('0x26')](respondWithFilteredResult(_0x276ac6,_0x20ab1b))[_0xbbe6('0x46')](handleError(_0x276ac6,null));};exports[_0xbbe6('0x47')]=function(_0x3dffd2,_0x280b0f){var _0x2599f3={'raw':!![],'where':{'id':_0x3dffd2[_0xbbe6('0x48')]['id']}},_0x331b51={};_0x331b51[_0xbbe6('0x32')]=_[_0xbbe6('0x49')](db[_0xbbe6('0x2f')][_0xbbe6('0x4a')]);_0x331b51[_0xbbe6('0x33')]=_[_0xbbe6('0x49')](_0x3dffd2[_0xbbe6('0x33')]);_0x331b51[_0xbbe6('0x3c')]=_[_0xbbe6('0x34')](_0x331b51[_0xbbe6('0x32')],_0x331b51[_0xbbe6('0x33')]);_0x2599f3['attributes']=_[_0xbbe6('0x34')](_0x331b51['model'],qs['fields'](_0x3dffd2['query'][_0xbbe6('0x35')]));_0x2599f3['attributes']=_0x2599f3['attributes']['length']?_0x2599f3['attributes']:_0x331b51[_0xbbe6('0x32')];if(_0x3dffd2[_0xbbe6('0x33')][_0xbbe6('0x42')]){_0x2599f3['include']=[{'all':!![]}];}_0x2599f3=_['merge']({},_0x2599f3,_0x3dffd2[_0xbbe6('0x4b')]);return db[_0xbbe6('0x2f')]['find'](_0x2599f3)[_0xbbe6('0x26')](handleEntityNotFound(_0x280b0f,null))[_0xbbe6('0x26')](respondWithResult(_0x280b0f,null))[_0xbbe6('0x46')](handleError(_0x280b0f,null));};exports[_0xbbe6('0x4c')]=function(_0x493f80,_0x32c980){return db['AnalyticExtractedReport']['create'](_0x493f80[_0xbbe6('0x4d')],{})[_0xbbe6('0x26')](function(_0x4f9634){var _0x28d3aa=_0x493f80[_0xbbe6('0x4e')][_0xbbe6('0x28')]({'plain':!![]});if(!_0x28d3aa)throw new Error(_0xbbe6('0x4f'));if(_0x28d3aa[_0xbbe6('0x50')]===_0xbbe6('0x4e')){var _0x45daad=_0x4f9634[_0xbbe6('0x28')]({'plain':!![]});var _0x1bcb29=_0xbbe6('0x29');return db[_0xbbe6('0x51')]['find']({'where':{'name':_0x1bcb29,'userProfileId':_0x28d3aa[_0xbbe6('0x52')]},'raw':!![]})[_0xbbe6('0x26')](function(_0x1a5b15){if(_0x1a5b15&&_0x1a5b15['autoAssociation']===0x0){return db[_0xbbe6('0x2a')][_0xbbe6('0x4c')]({'name':_0x45daad['name'],'resourceId':_0x45daad['id'],'type':_0x1a5b15[_0xbbe6('0x2c')],'sectionId':_0x1a5b15['id']},{})[_0xbbe6('0x26')](function(){return _0x4f9634;});}else{return _0x4f9634;}})[_0xbbe6('0x46')](function(_0xdd1465){logger[_0xbbe6('0x2b')](_0xbbe6('0x53'),_0xdd1465);throw _0xdd1465;});}return _0x4f9634;})[_0xbbe6('0x26')](respondWithResult(_0x32c980,0xc9))[_0xbbe6('0x46')](handleError(_0x32c980,null));};exports['update']=function(_0x1baf70,_0x4cdddd){if(_0x1baf70[_0xbbe6('0x4d')]['id']){delete _0x1baf70['body']['id'];}return db[_0xbbe6('0x2f')]['find']({'where':{'id':_0x1baf70[_0xbbe6('0x48')]['id']}})[_0xbbe6('0x26')](handleEntityNotFound(_0x4cdddd,null))[_0xbbe6('0x26')](saveUpdates(_0x1baf70[_0xbbe6('0x4d')],null))['then'](respondWithResult(_0x4cdddd,null))[_0xbbe6('0x46')](handleError(_0x4cdddd,null));};exports[_0xbbe6('0x27')]=function(_0x46f165,_0x3afb09){return db[_0xbbe6('0x2f')][_0xbbe6('0x54')]({'where':{'id':_0x46f165[_0xbbe6('0x48')]['id']}})[_0xbbe6('0x26')](handleEntityNotFound(_0x3afb09,null))[_0xbbe6('0x26')](removeEntity(_0x3afb09,null))[_0xbbe6('0x46')](handleError(_0x3afb09,null));};exports[_0xbbe6('0x55')]=function(_0x43717e,_0x528ca4,_0x3a18ee){return db[_0xbbe6('0x2f')]['find']({'where':{'id':_0x43717e[_0xbbe6('0x48')]['id']},'attributes':[_0xbbe6('0x2c'),_0xbbe6('0x56'),_0xbbe6('0x57'),'output'],'raw':!![]})[_0xbbe6('0x26')](handleEntityNotFound(_0x528ca4,null))[_0xbbe6('0x26')](function(_0xbce471){if(_0xbce471){if(!fs[_0xbbe6('0x58')](path[_0xbbe6('0x59')](config[_0xbbe6('0x5a')],_0xbbe6('0x5b'),_0xbce471[_0xbbe6('0x57')]))){throw new db[(_0xbbe6('0x5c'))]['ValidationError'](_0xbbe6('0x5d'));}if(_0x43717e['query'][_0xbbe6('0x5e')]){return _0x528ca4[_0xbbe6('0x19')](0xc8);}return _0x528ca4[_0xbbe6('0x55')](path[_0xbbe6('0x59')](config['root'],'server/files/reports',_0xbce471[_0xbbe6('0x57')]),util[_0xbbe6('0x5f')](_0xbbe6('0x60'),_0xbce471[_0xbbe6('0x56')]||_0xbce471[_0xbbe6('0x2c')],_0xbce471[_0xbbe6('0x61')][_0xbbe6('0x62')]()));}})['catch'](handleError(_0x528ca4,null));};
\ No newline at end of file
index d4d0abe..d0335e4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xace8=['api','moment','bluebird','request-promise','rimraf','./analyticExtractedReport.attributes','exports','define','AnalyticExtractedReport','lodash','util','../../config/logger'];(function(_0x1e47e8,_0x2c3c2d){var _0x4c9ed9=function(_0x46df2d){while(--_0x46df2d){_0x1e47e8['push'](_0x1e47e8['shift']());}};_0x4c9ed9(++_0x2c3c2d);}(_0xace8,0x129));var _0x8ace=function(_0xba0394,_0x2c6844){_0xba0394=_0xba0394-0x0;var _0x1789dd=_0xace8[_0xba0394];return _0x1789dd;};'use strict';var _=require(_0x8ace('0x0'));var util=require(_0x8ace('0x1'));var logger=require(_0x8ace('0x2'))(_0x8ace('0x3'));var moment=require(_0x8ace('0x4'));var BPromise=require(_0x8ace('0x5'));var rp=require(_0x8ace('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8ace('0x7'));var config=require('../../config/environment');var attributes=require(_0x8ace('0x8'));module[_0x8ace('0x9')]=function(_0x34104f,_0x179f48){return _0x34104f[_0x8ace('0xa')](_0x8ace('0xb'),attributes,{'tableName':'analytics_extracted_reports','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x67fd=['../../config/environment','./analyticExtractedReport.attributes','exports','define','AnalyticExtractedReport','analytics_extracted_reports','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x67fd,0xd8));var _0xd67f=function(_0x518fc9,_0xc716f){_0x518fc9=_0x518fc9-0x0;var _0x245271=_0x67fd[_0x518fc9];return _0x245271;};'use strict';var _=require(_0xd67f('0x0'));var util=require(_0xd67f('0x1'));var logger=require(_0xd67f('0x2'))(_0xd67f('0x3'));var moment=require(_0xd67f('0x4'));var BPromise=require(_0xd67f('0x5'));var rp=require(_0xd67f('0x6'));var fs=require('fs');var path=require(_0xd67f('0x7'));var rimraf=require('rimraf');var config=require(_0xd67f('0x8'));var attributes=require(_0xd67f('0x9'));module[_0xd67f('0xa')]=function(_0x1119e8,_0x5b5d9c){return _0x1119e8[_0xd67f('0xb')](_0xd67f('0xc'),attributes,{'tableName':_0xd67f('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 362d9ed..41c79fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb12c=['result','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/environment','jayson/promise','client','http','request','then','info','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x53e3de,_0x13da7b){var _0x7b905b=function(_0x29b56a){while(--_0x29b56a){_0x53e3de['push'](_0x53e3de['shift']());}};_0x7b905b(++_0x13da7b);}(_0xb12c,0xaa));var _0xcb12=function(_0x14a154,_0x5b0ee6){_0x14a154=_0x14a154-0x0;var _0x1be512=_0xb12c[_0x14a154];return _0x1be512;};'use strict';var _=require(_0xcb12('0x0'));var util=require(_0xcb12('0x1'));var moment=require('moment');var BPromise=require(_0xcb12('0x2'));var rs=require(_0xcb12('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xcb12('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xcb12('0x5'));var jayson=require(_0xcb12('0x6'));var client=jayson[_0xcb12('0x7')][_0xcb12('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x27d925,_0x567cae,_0x92f248){return new BPromise(function(_0x36bfdd,_0x2717b3){return client[_0xcb12('0x9')](_0x27d925,_0x92f248)[_0xcb12('0xa')](function(_0x346f47){logger[_0xcb12('0xb')](_0xcb12('0xc'),_0x567cae,_0xcb12('0xd'));logger['debug'](_0xcb12('0xe'),_0x567cae,_0xcb12('0xd'),JSON[_0xcb12('0xf')](_0x346f47));if(_0x346f47[_0xcb12('0x10')]){if(_0x346f47[_0xcb12('0x10')][_0xcb12('0x11')]===0x1f4){logger[_0xcb12('0x10')](_0xcb12('0xc'),_0x567cae,_0x346f47['error'][_0xcb12('0x12')]);return _0x2717b3(_0x346f47[_0xcb12('0x10')]['message']);}logger['error'](_0xcb12('0xc'),_0x567cae,_0x346f47['error'][_0xcb12('0x12')]);return _0x36bfdd(_0x346f47[_0xcb12('0x10')][_0xcb12('0x12')]);}else{logger[_0xcb12('0xb')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x567cae,'request\x20sent');_0x36bfdd(_0x346f47[_0xcb12('0x13')][_0xcb12('0x12')]);}})[_0xcb12('0x14')](function(_0x327224){logger[_0xcb12('0x10')](_0xcb12('0xc'),_0x567cae,_0x327224);_0x2717b3(_0x327224);});});}
\ No newline at end of file
+var _0xd609=['lodash','util','moment','randomstring','ioredis','../../config/logger','jayson/promise','request','AnalyticExtractedReport,\x20%s,\x20%s','request\x20sent','AnalyticExtractedReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','catch'];(function(_0x5d9a0f,_0x2e8ec0){var _0x58b171=function(_0x2de433){while(--_0x2de433){_0x5d9a0f['push'](_0x5d9a0f['shift']());}};_0x58b171(++_0x2e8ec0);}(_0xd609,0x110));var _0x9d60=function(_0x434bd2,_0xe1eb35){_0x434bd2=_0x434bd2-0x0;var _0x5c3e7e=_0xd609[_0x434bd2];return _0x5c3e7e;};'use strict';var _=require(_0x9d60('0x0'));var util=require(_0x9d60('0x1'));var moment=require(_0x9d60('0x2'));var BPromise=require('bluebird');var rs=require(_0x9d60('0x3'));var fs=require('fs');var Redis=require(_0x9d60('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9d60('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x9d60('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x40d4bc,_0x1ad698,_0x105a2a){return new BPromise(function(_0x554d9e,_0x4d6f42){return client[_0x9d60('0x7')](_0x40d4bc,_0x105a2a)['then'](function(_0x6ff277){logger['info'](_0x9d60('0x8'),_0x1ad698,_0x9d60('0x9'));logger['debug'](_0x9d60('0xa'),_0x1ad698,_0x9d60('0x9'),JSON[_0x9d60('0xb')](_0x6ff277));if(_0x6ff277[_0x9d60('0xc')]){if(_0x6ff277['error'][_0x9d60('0xd')]===0x1f4){logger[_0x9d60('0xc')](_0x9d60('0x8'),_0x1ad698,_0x6ff277[_0x9d60('0xc')][_0x9d60('0xe')]);return _0x4d6f42(_0x6ff277[_0x9d60('0xc')]['message']);}logger[_0x9d60('0xc')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x1ad698,_0x6ff277[_0x9d60('0xc')][_0x9d60('0xe')]);return _0x554d9e(_0x6ff277[_0x9d60('0xc')][_0x9d60('0xe')]);}else{logger[_0x9d60('0xf')]('AnalyticExtractedReport,\x20%s,\x20%s',_0x1ad698,_0x9d60('0x9'));_0x554d9e(_0x6ff277['result']['message']);}})[_0x9d60('0x10')](function(_0x379583){logger[_0x9d60('0xc')](_0x9d60('0x8'),_0x1ad698,_0x379583);_0x4d6f42(_0x379583);});});}
\ No newline at end of file
index 8059976..1a5cf8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fc9=['put','update','delete','destroy','exports','multer','util','path','Router','../../components/interaction/service','./analyticExtractedReport.controller','get','isAuthenticated','index','/:id','show','/:id/download','create'];(function(_0x2f4d2c,_0x52dffe){var _0x1c8a66=function(_0x20208e){while(--_0x20208e){_0x2f4d2c['push'](_0x2f4d2c['shift']());}};_0x1c8a66(++_0x52dffe);}(_0x8fc9,0x125));var _0x98fc=function(_0xb0f7c3,_0x4eae95){_0xb0f7c3=_0xb0f7c3-0x0;var _0x28ea68=_0x8fc9[_0xb0f7c3];return _0x28ea68;};'use strict';var multer=require(_0x98fc('0x0'));var util=require(_0x98fc('0x1'));var path=require(_0x98fc('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x98fc('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x98fc('0x4'));var config=require('../../config/environment');var controller=require(_0x98fc('0x5'));router[_0x98fc('0x6')]('/',auth[_0x98fc('0x7')](),controller[_0x98fc('0x8')]);router['get'](_0x98fc('0x9'),auth['isAuthenticated'](),controller[_0x98fc('0xa')]);router[_0x98fc('0x6')](_0x98fc('0xb'),auth[_0x98fc('0x7')](),controller['download']);router['post']('/',auth[_0x98fc('0x7')](),controller[_0x98fc('0xc')]);router[_0x98fc('0xd')]('/:id',auth[_0x98fc('0x7')](),controller[_0x98fc('0xe')]);router[_0x98fc('0xf')](_0x98fc('0x9'),auth[_0x98fc('0x7')](),controller[_0x98fc('0x10')]);module[_0x98fc('0x11')]=router;
\ No newline at end of file
+var _0x2b80=['exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id/download','download','isAuthenticated','create','update','delete','/:id','destroy'];(function(_0x38ff46,_0x5ae3c0){var _0x1596c7=function(_0x290c79){while(--_0x290c79){_0x38ff46['push'](_0x38ff46['shift']());}};_0x1596c7(++_0x5ae3c0);}(_0x2b80,0x131));var _0x02b8=function(_0x15108f,_0x5119b0){_0x15108f=_0x15108f-0x0;var _0x17aafb=_0x2b80[_0x15108f];return _0x17aafb;};'use strict';var multer=require(_0x02b8('0x0'));var util=require(_0x02b8('0x1'));var path=require('path');var timeout=require(_0x02b8('0x2'));var express=require(_0x02b8('0x3'));var router=express['Router']();var fs_extra=require(_0x02b8('0x4'));var auth=require(_0x02b8('0x5'));var interaction=require(_0x02b8('0x6'));var config=require(_0x02b8('0x7'));var controller=require('./analyticExtractedReport.controller');router[_0x02b8('0x8')]('/',auth['isAuthenticated'](),controller[_0x02b8('0x9')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0x02b8('0x8')](_0x02b8('0xa'),auth['isAuthenticated'](),controller[_0x02b8('0xb')]);router['post']('/',auth[_0x02b8('0xc')](),controller[_0x02b8('0xd')]);router['put']('/:id',auth[_0x02b8('0xc')](),controller[_0x02b8('0xe')]);router[_0x02b8('0xf')](_0x02b8('0x10'),auth[_0x02b8('0xc')](),controller[_0x02b8('0x11')]);module[_0x02b8('0x12')]=router;
\ No newline at end of file
index a736a39..11cec60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf2b=['exports','STRING','BOOLEAN','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xaf2b,0x183));var _0xbaf2=function(_0x417570,_0x414ca3){_0x417570=_0x417570-0x0;var _0x11087e=_0xaf2b[_0x417570];return _0x11087e;};'use strict';var Sequelize=require(_0xbaf2('0x0'));module[_0xbaf2('0x1')]={'field':{'type':Sequelize['TEXT']},'alias':{'type':Sequelize['STRING']},'function':{'type':Sequelize[_0xbaf2('0x2')]},'format':{'type':Sequelize[_0xbaf2('0x2')]},'groupBy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'orderBy':{'type':Sequelize['STRING']},'custom':{'type':Sequelize[_0xbaf2('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x1763=['BOOLEAN','exports','TEXT','STRING'];(function(_0x4e9851,_0xeed435){var _0x7d286b=function(_0x1e117e){while(--_0x1e117e){_0x4e9851['push'](_0x4e9851['shift']());}};_0x7d286b(++_0xeed435);}(_0x1763,0xc9));var _0x3176=function(_0x5be621,_0x5b9112){_0x5be621=_0x5be621-0x0;var _0x2f0c1e=_0x1763[_0x5be621];return _0x2f0c1e;};'use strict';var Sequelize=require('sequelize');module[_0x3176('0x0')]={'field':{'type':Sequelize[_0x3176('0x1')]},'alias':{'type':Sequelize[_0x3176('0x2')]},'function':{'type':Sequelize[_0x3176('0x2')]},'format':{'type':Sequelize[_0x3176('0x2')]},'groupBy':{'type':Sequelize[_0x3176('0x3')],'defaultValue':![]},'orderBy':{'type':Sequelize[_0x3176('0x2')]},'custom':{'type':Sequelize[_0x3176('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 5a62e2c..a6bde49 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa45f=['length','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','show','params','include','find','catch','create','body','bulkCreate','bulkDestroy','ids','findOne','sequelize','rimraf','fast-json-patch','request-promise','moment','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../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','reject','save','update','then','destroy','error','send','map','AnalyticFieldReport','rawAttributes','fieldName','type','key','model','name','query','keys','filters','attributes','intersection','fields'];(function(_0xea17a7,_0x3f7d93){var _0x247ed5=function(_0x54e1be){while(--_0x54e1be){_0xea17a7['push'](_0xea17a7['shift']());}};_0x247ed5(++_0x3f7d93);}(_0xa45f,0x1f3));var _0xfa45=function(_0x5d8cbc,_0x15a072){_0x5d8cbc=_0x5d8cbc-0x0;var _0x47dd71=_0xa45f[_0x5d8cbc];return _0x47dd71;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xfa45('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xfa45('0x1'));var rp=require(_0xfa45('0x2'));var moment=require(_0xfa45('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xfa45('0x4'));var util=require(_0xfa45('0x5'));var path=require(_0xfa45('0x6'));var sox=require('sox');var csv=require(_0xfa45('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfa45('0x8'));var _=require(_0xfa45('0x9'));var squel=require(_0xfa45('0xa'));var crypto=require(_0xfa45('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xfa45('0x7'));var querystring=require(_0xfa45('0xc'));var Papa=require(_0xfa45('0xd'));var Redis=require(_0xfa45('0xe'));var authService=require(_0xfa45('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xfa45('0x10'));var hardwareService=require(_0xfa45('0x11'));var logger=require(_0xfa45('0x12'))('api');var utils=require(_0xfa45('0x13'));var config=require(_0xfa45('0x14'));var licenseUtil=require(_0xfa45('0x15'));var db=require(_0xfa45('0x16'))['db'];function respondWithStatusCode(_0x4b299c,_0x4e7468){_0x4e7468=_0x4e7468||0xcc;return function(_0x27c421){if(_0x27c421){return _0x4b299c[_0xfa45('0x17')](_0x4e7468);}return _0x4b299c[_0xfa45('0x18')](_0x4e7468)[_0xfa45('0x19')]();};}function respondWithResult(_0x1a9b12,_0x1bc148){_0x1bc148=_0x1bc148||0xc8;return function(_0x59108d){if(_0x59108d){return _0x1a9b12[_0xfa45('0x18')](_0x1bc148)[_0xfa45('0x1a')](_0x59108d);}};}function respondWithFilteredResult(_0xe9a5f3,_0x3298e9){return function(_0x52ca34){if(_0x52ca34){var _0x3e38aa=typeof _0x3298e9[_0xfa45('0x1b')]===_0xfa45('0x1c')&&typeof _0x3298e9[_0xfa45('0x1d')]===_0xfa45('0x1c');var _0x3545e4=_0x52ca34[_0xfa45('0x1e')];var _0x235b78=_0x3e38aa?0x0:_0x3298e9['offset'];var _0x73974e=_0x3e38aa?_0x52ca34[_0xfa45('0x1e')]:_0x3298e9[_0xfa45('0x1b')]+_0x3298e9['limit'];var _0x16e0fe;if(_0x73974e>=_0x3545e4){_0x73974e=_0x3545e4;_0x16e0fe=0xc8;}else{_0x16e0fe=0xce;}_0xe9a5f3[_0xfa45('0x18')](_0x16e0fe);return _0xe9a5f3[_0xfa45('0x1f')](_0xfa45('0x20'),_0x235b78+'-'+_0x73974e+'/'+_0x3545e4)[_0xfa45('0x1a')](_0x52ca34);}return null;};}function patchUpdates(_0x4f300){return function(_0x49e0c9){try{jsonpatch['apply'](_0x49e0c9,_0x4f300,!![]);}catch(_0x30519d){return BPromise[_0xfa45('0x21')](_0x30519d);}return _0x49e0c9[_0xfa45('0x22')]();};}function saveUpdates(_0x17c2cb,_0x294fd0){return function(_0x1de3ef){if(_0x1de3ef){return _0x1de3ef[_0xfa45('0x23')](_0x17c2cb)[_0xfa45('0x24')](function(_0x307f30){return _0x307f30;});}return null;};}function removeEntity(_0x26319d,_0xd7d880){return function(_0x343a84){if(_0x343a84){return _0x343a84[_0xfa45('0x25')]()['then'](function(){_0x26319d[_0xfa45('0x18')](0xcc)[_0xfa45('0x19')]();});}};}function handleEntityNotFound(_0x246869,_0x3eefe9){return function(_0x5b4c64){if(!_0x5b4c64){_0x246869[_0xfa45('0x17')](0x194);}return _0x5b4c64;};}function handleError(_0x14ca2c,_0x305856){_0x305856=_0x305856||0x1f4;return function(_0x58fab2){logger[_0xfa45('0x26')](_0x58fab2['stack']);if(_0x58fab2['name']){delete _0x58fab2['name'];}_0x14ca2c['status'](_0x305856)[_0xfa45('0x27')](_0x58fab2);};}exports['index']=function(_0xf11c5a,_0x2df444){var _0x59cf7a={},_0x46093b={},_0x3bd127={'count':0x0,'rows':[]};var _0x46a301=_[_0xfa45('0x28')](db[_0xfa45('0x29')][_0xfa45('0x2a')],function(_0x3fccfb){return{'name':_0x3fccfb[_0xfa45('0x2b')],'type':_0x3fccfb[_0xfa45('0x2c')][_0xfa45('0x2d')]};});_0x46093b[_0xfa45('0x2e')]=_['map'](_0x46a301,_0xfa45('0x2f'));_0x46093b[_0xfa45('0x30')]=_[_0xfa45('0x31')](_0xf11c5a[_0xfa45('0x30')]);_0x46093b[_0xfa45('0x32')]=_['intersection'](_0x46093b['model'],_0x46093b[_0xfa45('0x30')]);_0x59cf7a[_0xfa45('0x33')]=_[_0xfa45('0x34')](_0x46093b[_0xfa45('0x2e')],qs[_0xfa45('0x35')](_0xf11c5a[_0xfa45('0x30')][_0xfa45('0x35')]));_0x59cf7a[_0xfa45('0x33')]=_0x59cf7a['attributes'][_0xfa45('0x36')]?_0x59cf7a[_0xfa45('0x33')]:_0x46093b['model'];if(!_0xf11c5a[_0xfa45('0x30')][_0xfa45('0x37')]('nolimit')){_0x59cf7a['limit']=qs[_0xfa45('0x1d')](_0xf11c5a[_0xfa45('0x30')]['limit']);_0x59cf7a[_0xfa45('0x1b')]=qs[_0xfa45('0x1b')](_0xf11c5a[_0xfa45('0x30')][_0xfa45('0x1b')]);}_0x59cf7a[_0xfa45('0x38')]=qs['sort'](_0xf11c5a['query'][_0xfa45('0x39')]);_0x59cf7a[_0xfa45('0x3a')]=qs[_0xfa45('0x32')](_[_0xfa45('0x3b')](_0xf11c5a[_0xfa45('0x30')],_0x46093b[_0xfa45('0x32')]),_0x46a301);if(_0xf11c5a[_0xfa45('0x30')][_0xfa45('0x3c')]){_0x59cf7a[_0xfa45('0x3a')]=_[_0xfa45('0x3d')](_0x59cf7a[_0xfa45('0x3a')],{'$or':_[_0xfa45('0x28')](_0x46a301,function(_0x394017){if(_0x394017[_0xfa45('0x2c')]!==_0xfa45('0x3e')){var _0x465391={};_0x465391[_0x394017[_0xfa45('0x2f')]]={'$like':'%'+_0xf11c5a[_0xfa45('0x30')][_0xfa45('0x3c')]+'%'};return _0x465391;}})});}_0x59cf7a=_['merge']({},_0x59cf7a,_0xf11c5a[_0xfa45('0x3f')]);var _0x50cb3b={'where':_0x59cf7a[_0xfa45('0x3a')]};return db[_0xfa45('0x29')]['count'](_0x50cb3b)[_0xfa45('0x24')](function(_0x454453){_0x3bd127[_0xfa45('0x1e')]=_0x454453;if(_0xf11c5a[_0xfa45('0x30')][_0xfa45('0x40')]){_0x59cf7a['include']=[{'all':!![]}];}return db[_0xfa45('0x29')][_0xfa45('0x41')](_0x59cf7a);})['then'](function(_0x342211){_0x3bd127[_0xfa45('0x42')]=_0x342211;return _0x3bd127;})[_0xfa45('0x24')](respondWithFilteredResult(_0x2df444,_0x59cf7a))['catch'](handleError(_0x2df444,null));};exports[_0xfa45('0x43')]=function(_0x13589e,_0x2fc815){var _0x32bcab={'raw':![],'where':{'id':_0x13589e[_0xfa45('0x44')]['id']}},_0x2351c7={};_0x2351c7[_0xfa45('0x2e')]=_[_0xfa45('0x31')](db[_0xfa45('0x29')][_0xfa45('0x2a')]);_0x2351c7[_0xfa45('0x30')]=_['keys'](_0x13589e[_0xfa45('0x30')]);_0x2351c7['filters']=_[_0xfa45('0x34')](_0x2351c7[_0xfa45('0x2e')],_0x2351c7['query']);_0x32bcab['attributes']=_[_0xfa45('0x34')](_0x2351c7[_0xfa45('0x2e')],qs[_0xfa45('0x35')](_0x13589e[_0xfa45('0x30')][_0xfa45('0x35')]));_0x32bcab[_0xfa45('0x33')]=_0x32bcab[_0xfa45('0x33')][_0xfa45('0x36')]?_0x32bcab[_0xfa45('0x33')]:_0x2351c7[_0xfa45('0x2e')];if(_0x13589e[_0xfa45('0x30')][_0xfa45('0x40')]){_0x32bcab[_0xfa45('0x45')]=[{'all':!![]}];}_0x32bcab=_[_0xfa45('0x3d')]({},_0x32bcab,_0x13589e['options']);return db['AnalyticFieldReport'][_0xfa45('0x46')](_0x32bcab)[_0xfa45('0x24')](handleEntityNotFound(_0x2fc815,null))['then'](respondWithResult(_0x2fc815,null))[_0xfa45('0x47')](handleError(_0x2fc815,null));};exports[_0xfa45('0x48')]=function(_0x5c8ee0,_0x3d3992){return db[_0xfa45('0x29')]['create'](_0x5c8ee0[_0xfa45('0x49')],{})['then'](respondWithResult(_0x3d3992,0xc9))[_0xfa45('0x47')](handleError(_0x3d3992,null));};exports[_0xfa45('0x4a')]=function(_0x27e6fd,_0x493629){return db[_0xfa45('0x29')]['bulkCreate'](_0x27e6fd[_0xfa45('0x49')],{'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x493629,0xc9))[_0xfa45('0x47')](handleError(_0x493629,null));};exports[_0xfa45('0x23')]=function(_0x4d72a2,_0x5ba377){if(_0x4d72a2['body']['id']){delete _0x4d72a2[_0xfa45('0x49')]['id'];}return db[_0xfa45('0x29')][_0xfa45('0x46')]({'where':{'id':_0x4d72a2[_0xfa45('0x44')]['id']}})['then'](handleEntityNotFound(_0x5ba377,null))[_0xfa45('0x24')](saveUpdates(_0x4d72a2[_0xfa45('0x49')],null))[_0xfa45('0x24')](respondWithResult(_0x5ba377,null))[_0xfa45('0x47')](handleError(_0x5ba377,null));};exports['destroy']=function(_0x5764c4,_0x44b1be){return db[_0xfa45('0x29')]['find']({'where':{'id':_0x5764c4[_0xfa45('0x44')]['id']}})[_0xfa45('0x24')](handleEntityNotFound(_0x44b1be,null))[_0xfa45('0x24')](removeEntity(_0x44b1be,null))[_0xfa45('0x47')](handleError(_0x44b1be,null));};exports[_0xfa45('0x4b')]=function(_0x4d9f3f,_0x2244bf){return db[_0xfa45('0x29')][_0xfa45('0x25')]({'where':{'id':_0x4d9f3f[_0xfa45('0x30')][_0xfa45('0x4c')]||[]},'raw':![],'individualHooks':!![]})['then'](respondWithResult(_0x2244bf,0xcc))[_0xfa45('0x47')](handleError(_0x2244bf,null));};exports['addFields']=function(_0xf2b1a,_0x13e4dc,_0x155c37){return db['AnalyticCustomReport'][_0xfa45('0x4d')]({'where':{'id':_0xf2b1a['params']['id']}})[_0xfa45('0x24')](handleEntityNotFound(_0x13e4dc,null))[_0xfa45('0x24')](function(_0x265b44){if(_0x265b44){return db[_0xfa45('0x4e')]['transaction'](function(_0xd155ef){return db[_0xfa45('0x29')][_0xfa45('0x25')]({'where':{'CustomReportId':_0xf2b1a[_0xfa45('0x44')]['id']},'transaction':_0xd155ef})['then'](function(_0x21023c){var _0x18d513=_[_0xfa45('0x28')](_0xf2b1a[_0xfa45('0x49')],function(_0x1b1b64){delete _0x1b1b64['id'];_0x1b1b64['CustomReportId']=_0xf2b1a[_0xfa45('0x44')]['id'];return _0x1b1b64;});return db[_0xfa45('0x29')][_0xfa45('0x4a')](_0x18d513,{'transaction':_0xd155ef});});})['then'](function(){return db[_0xfa45('0x29')][_0xfa45('0x41')]({'where':{'CustomReportId':_0xf2b1a[_0xfa45('0x44')]['id']}});});}})[_0xfa45('0x24')](respondWithResult(_0x13e4dc,null))[_0xfa45('0x47')](handleError(_0x13e4dc,null));};
\ No newline at end of file
+var _0xfbce=['stack','name','send','index','map','AnalyticFieldReport','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','include','findAll','rows','show','keys','includeAll','find','catch','create','body','bulkCreate','params','bulkDestroy','findOne','sequelize','transaction','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','save','update','then','destroy','error'];(function(_0x80f51a,_0x32e95e){var _0x327148=function(_0x16f788){while(--_0x16f788){_0x80f51a['push'](_0x80f51a['shift']());}};_0x327148(++_0x32e95e);}(_0xfbce,0xd5));var _0xefbc=function(_0x3a2d5a,_0xd856d7){_0x3a2d5a=_0x3a2d5a-0x0;var _0x571e32=_0xfbce[_0x3a2d5a];return _0x571e32;};'use strict';var emlformat=require(_0xefbc('0x0'));var rimraf=require(_0xefbc('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xefbc('0x2'));var rp=require(_0xefbc('0x3'));var moment=require(_0xefbc('0x4'));var BPromise=require(_0xefbc('0x5'));var Mustache=require(_0xefbc('0x6'));var util=require(_0xefbc('0x7'));var path=require(_0xefbc('0x8'));var sox=require(_0xefbc('0x9'));var csv=require(_0xefbc('0xa'));var ejs=require(_0xefbc('0xb'));var fs=require('fs');var fs_extra=require(_0xefbc('0xc'));var _=require(_0xefbc('0xd'));var squel=require('squel');var crypto=require(_0xefbc('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xefbc('0xf'));var toCsv=require(_0xefbc('0xa'));var querystring=require(_0xefbc('0x10'));var Papa=require('papaparse');var Redis=require(_0xefbc('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xefbc('0x12'));var as=require(_0xefbc('0x13'));var hardwareService=require(_0xefbc('0x14'));var logger=require(_0xefbc('0x15'))(_0xefbc('0x16'));var utils=require(_0xefbc('0x17'));var config=require(_0xefbc('0x18'));var licenseUtil=require(_0xefbc('0x19'));var db=require(_0xefbc('0x1a'))['db'];function respondWithStatusCode(_0x5b661f,_0x90ad4){_0x90ad4=_0x90ad4||0xcc;return function(_0x2650b6){if(_0x2650b6){return _0x5b661f[_0xefbc('0x1b')](_0x90ad4);}return _0x5b661f[_0xefbc('0x1c')](_0x90ad4)[_0xefbc('0x1d')]();};}function respondWithResult(_0x5ae300,_0x56ab47){_0x56ab47=_0x56ab47||0xc8;return function(_0x1eed8e){if(_0x1eed8e){return _0x5ae300[_0xefbc('0x1c')](_0x56ab47)['json'](_0x1eed8e);}};}function respondWithFilteredResult(_0x3de0c0,_0x389f4f){return function(_0x57e547){if(_0x57e547){var _0x1b6e13=typeof _0x389f4f[_0xefbc('0x1e')]===_0xefbc('0x1f')&&typeof _0x389f4f[_0xefbc('0x20')]===_0xefbc('0x1f');var _0x3c1312=_0x57e547['count'];var _0x4480a7=_0x1b6e13?0x0:_0x389f4f[_0xefbc('0x1e')];var _0x497238=_0x1b6e13?_0x57e547[_0xefbc('0x21')]:_0x389f4f[_0xefbc('0x1e')]+_0x389f4f[_0xefbc('0x20')];var _0x3e7379;if(_0x497238>=_0x3c1312){_0x497238=_0x3c1312;_0x3e7379=0xc8;}else{_0x3e7379=0xce;}_0x3de0c0['status'](_0x3e7379);return _0x3de0c0[_0xefbc('0x22')](_0xefbc('0x23'),_0x4480a7+'-'+_0x497238+'/'+_0x3c1312)[_0xefbc('0x24')](_0x57e547);}return null;};}function patchUpdates(_0x18c5e7){return function(_0x1f83ec){try{jsonpatch['apply'](_0x1f83ec,_0x18c5e7,!![]);}catch(_0x7820c8){return BPromise['reject'](_0x7820c8);}return _0x1f83ec[_0xefbc('0x25')]();};}function saveUpdates(_0x57238c,_0x4e2e86){return function(_0x6f96cc){if(_0x6f96cc){return _0x6f96cc[_0xefbc('0x26')](_0x57238c)[_0xefbc('0x27')](function(_0x56e236){return _0x56e236;});}return null;};}function removeEntity(_0x1caec3,_0x511fee){return function(_0x463f5d){if(_0x463f5d){return _0x463f5d[_0xefbc('0x28')]()[_0xefbc('0x27')](function(){_0x1caec3[_0xefbc('0x1c')](0xcc)[_0xefbc('0x1d')]();});}};}function handleEntityNotFound(_0x19b178,_0x62c184){return function(_0x189aa2){if(!_0x189aa2){_0x19b178[_0xefbc('0x1b')](0x194);}return _0x189aa2;};}function handleError(_0x56a78a,_0x5a9c1f){_0x5a9c1f=_0x5a9c1f||0x1f4;return function(_0x3fa119){logger[_0xefbc('0x29')](_0x3fa119[_0xefbc('0x2a')]);if(_0x3fa119[_0xefbc('0x2b')]){delete _0x3fa119[_0xefbc('0x2b')];}_0x56a78a[_0xefbc('0x1c')](_0x5a9c1f)[_0xefbc('0x2c')](_0x3fa119);};}exports[_0xefbc('0x2d')]=function(_0x2e3bbe,_0x17e963){var _0xecbbce={},_0x4e7fff={},_0x302866={'count':0x0,'rows':[]};var _0x54d522=_[_0xefbc('0x2e')](db[_0xefbc('0x2f')][_0xefbc('0x30')],function(_0x387eef){return{'name':_0x387eef[_0xefbc('0x31')],'type':_0x387eef[_0xefbc('0x32')][_0xefbc('0x33')]};});_0x4e7fff[_0xefbc('0x34')]=_[_0xefbc('0x2e')](_0x54d522,_0xefbc('0x2b'));_0x4e7fff[_0xefbc('0x35')]=_['keys'](_0x2e3bbe[_0xefbc('0x35')]);_0x4e7fff[_0xefbc('0x36')]=_['intersection'](_0x4e7fff[_0xefbc('0x34')],_0x4e7fff[_0xefbc('0x35')]);_0xecbbce[_0xefbc('0x37')]=_[_0xefbc('0x38')](_0x4e7fff[_0xefbc('0x34')],qs['fields'](_0x2e3bbe[_0xefbc('0x35')][_0xefbc('0x39')]));_0xecbbce['attributes']=_0xecbbce[_0xefbc('0x37')][_0xefbc('0x3a')]?_0xecbbce['attributes']:_0x4e7fff[_0xefbc('0x34')];if(!_0x2e3bbe['query'][_0xefbc('0x3b')](_0xefbc('0x3c'))){_0xecbbce[_0xefbc('0x20')]=qs[_0xefbc('0x20')](_0x2e3bbe[_0xefbc('0x35')][_0xefbc('0x20')]);_0xecbbce[_0xefbc('0x1e')]=qs[_0xefbc('0x1e')](_0x2e3bbe[_0xefbc('0x35')]['offset']);}_0xecbbce[_0xefbc('0x3d')]=qs['sort'](_0x2e3bbe['query'][_0xefbc('0x3e')]);_0xecbbce['where']=qs['filters'](_[_0xefbc('0x3f')](_0x2e3bbe[_0xefbc('0x35')],_0x4e7fff[_0xefbc('0x36')]),_0x54d522);if(_0x2e3bbe[_0xefbc('0x35')][_0xefbc('0x40')]){_0xecbbce[_0xefbc('0x41')]=_[_0xefbc('0x42')](_0xecbbce[_0xefbc('0x41')],{'$or':_[_0xefbc('0x2e')](_0x54d522,function(_0x5ce77f){if(_0x5ce77f[_0xefbc('0x32')]!==_0xefbc('0x43')){var _0x41d2e1={};_0x41d2e1[_0x5ce77f[_0xefbc('0x2b')]]={'$like':'%'+_0x2e3bbe[_0xefbc('0x35')]['filter']+'%'};return _0x41d2e1;}})});}_0xecbbce=_[_0xefbc('0x42')]({},_0xecbbce,_0x2e3bbe[_0xefbc('0x44')]);var _0x43036b={'where':_0xecbbce[_0xefbc('0x41')]};return db[_0xefbc('0x2f')]['count'](_0x43036b)[_0xefbc('0x27')](function(_0x1eb23e){_0x302866[_0xefbc('0x21')]=_0x1eb23e;if(_0x2e3bbe[_0xefbc('0x35')]['includeAll']){_0xecbbce[_0xefbc('0x45')]=[{'all':!![]}];}return db[_0xefbc('0x2f')][_0xefbc('0x46')](_0xecbbce);})[_0xefbc('0x27')](function(_0x5d9e97){_0x302866[_0xefbc('0x47')]=_0x5d9e97;return _0x302866;})[_0xefbc('0x27')](respondWithFilteredResult(_0x17e963,_0xecbbce))['catch'](handleError(_0x17e963,null));};exports[_0xefbc('0x48')]=function(_0x588a41,_0xb40302){var _0x3bcdf7={'raw':![],'where':{'id':_0x588a41['params']['id']}},_0x56964d={};_0x56964d[_0xefbc('0x34')]=_[_0xefbc('0x49')](db[_0xefbc('0x2f')][_0xefbc('0x30')]);_0x56964d[_0xefbc('0x35')]=_[_0xefbc('0x49')](_0x588a41[_0xefbc('0x35')]);_0x56964d['filters']=_[_0xefbc('0x38')](_0x56964d[_0xefbc('0x34')],_0x56964d['query']);_0x3bcdf7['attributes']=_[_0xefbc('0x38')](_0x56964d['model'],qs['fields'](_0x588a41[_0xefbc('0x35')]['fields']));_0x3bcdf7['attributes']=_0x3bcdf7[_0xefbc('0x37')]['length']?_0x3bcdf7[_0xefbc('0x37')]:_0x56964d[_0xefbc('0x34')];if(_0x588a41['query'][_0xefbc('0x4a')]){_0x3bcdf7['include']=[{'all':!![]}];}_0x3bcdf7=_[_0xefbc('0x42')]({},_0x3bcdf7,_0x588a41[_0xefbc('0x44')]);return db[_0xefbc('0x2f')][_0xefbc('0x4b')](_0x3bcdf7)[_0xefbc('0x27')](handleEntityNotFound(_0xb40302,null))[_0xefbc('0x27')](respondWithResult(_0xb40302,null))[_0xefbc('0x4c')](handleError(_0xb40302,null));};exports[_0xefbc('0x4d')]=function(_0xb7c78,_0x2700ed){return db[_0xefbc('0x2f')][_0xefbc('0x4d')](_0xb7c78[_0xefbc('0x4e')],{})[_0xefbc('0x27')](respondWithResult(_0x2700ed,0xc9))[_0xefbc('0x4c')](handleError(_0x2700ed,null));};exports[_0xefbc('0x4f')]=function(_0x3ede7b,_0xab6347){return db['AnalyticFieldReport'][_0xefbc('0x4f')](_0x3ede7b[_0xefbc('0x4e')],{'raw':![],'individualHooks':!![]})[_0xefbc('0x27')](respondWithResult(_0xab6347,0xc9))[_0xefbc('0x4c')](handleError(_0xab6347,null));};exports[_0xefbc('0x26')]=function(_0x4fa83e,_0xec2c22){if(_0x4fa83e['body']['id']){delete _0x4fa83e['body']['id'];}return db[_0xefbc('0x2f')][_0xefbc('0x4b')]({'where':{'id':_0x4fa83e[_0xefbc('0x50')]['id']}})['then'](handleEntityNotFound(_0xec2c22,null))[_0xefbc('0x27')](saveUpdates(_0x4fa83e['body'],null))[_0xefbc('0x27')](respondWithResult(_0xec2c22,null))[_0xefbc('0x4c')](handleError(_0xec2c22,null));};exports[_0xefbc('0x28')]=function(_0x2f569e,_0xd314bd){return db['AnalyticFieldReport']['find']({'where':{'id':_0x2f569e[_0xefbc('0x50')]['id']}})[_0xefbc('0x27')](handleEntityNotFound(_0xd314bd,null))[_0xefbc('0x27')](removeEntity(_0xd314bd,null))[_0xefbc('0x4c')](handleError(_0xd314bd,null));};exports[_0xefbc('0x51')]=function(_0x27d9b0,_0x3fdbb7){return db[_0xefbc('0x2f')]['destroy']({'where':{'id':_0x27d9b0[_0xefbc('0x35')]['ids']||[]},'raw':![],'individualHooks':!![]})[_0xefbc('0x27')](respondWithResult(_0x3fdbb7,0xcc))[_0xefbc('0x4c')](handleError(_0x3fdbb7,null));};exports['addFields']=function(_0x3ae77d,_0x350f68,_0x509648){return db['AnalyticCustomReport'][_0xefbc('0x52')]({'where':{'id':_0x3ae77d[_0xefbc('0x50')]['id']}})[_0xefbc('0x27')](handleEntityNotFound(_0x350f68,null))['then'](function(_0x2d5346){if(_0x2d5346){return db[_0xefbc('0x53')][_0xefbc('0x54')](function(_0x153def){return db[_0xefbc('0x2f')][_0xefbc('0x28')]({'where':{'CustomReportId':_0x3ae77d[_0xefbc('0x50')]['id']},'transaction':_0x153def})[_0xefbc('0x27')](function(_0x4b1403){var _0x7aa00c=_['map'](_0x3ae77d[_0xefbc('0x4e')],function(_0x3dbbab){delete _0x3dbbab['id'];_0x3dbbab['CustomReportId']=_0x3ae77d['params']['id'];return _0x3dbbab;});return db[_0xefbc('0x2f')][_0xefbc('0x4f')](_0x7aa00c,{'transaction':_0x153def});});})[_0xefbc('0x27')](function(){return db[_0xefbc('0x2f')][_0xefbc('0x46')]({'where':{'CustomReportId':_0x3ae77d[_0xefbc('0x50')]['id']}});});}})[_0xefbc('0x27')](respondWithResult(_0x350f68,null))[_0xefbc('0x4c')](handleError(_0x350f68,null));};
\ No newline at end of file
index f3e9818..b1530bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2465=['analytics_report_fields','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./analyticFieldReport.attributes','exports','AnalyticFieldReport'];(function(_0x2ec755,_0x42b28a){var _0x26028e=function(_0x1b35ae){while(--_0x1b35ae){_0x2ec755['push'](_0x2ec755['shift']());}};_0x26028e(++_0x42b28a);}(_0x2465,0x1bb));var _0x5246=function(_0x4920f9,_0x4e83af){_0x4920f9=_0x4920f9-0x0;var _0x5ab591=_0x2465[_0x4920f9];return _0x5ab591;};'use strict';var _=require(_0x5246('0x0'));var util=require(_0x5246('0x1'));var logger=require(_0x5246('0x2'))('api');var moment=require(_0x5246('0x3'));var BPromise=require(_0x5246('0x4'));var rp=require(_0x5246('0x5'));var fs=require('fs');var path=require(_0x5246('0x6'));var rimraf=require(_0x5246('0x7'));var config=require(_0x5246('0x8'));var attributes=require(_0x5246('0x9'));module[_0x5246('0xa')]=function(_0x1074a0,_0x6e1d6a){return _0x1074a0['define'](_0x5246('0xb'),attributes,{'tableName':_0x5246('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7aaa=['./analyticFieldReport.attributes','exports','define','analytics_report_fields','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x18946e,_0x2241d1){var _0x1a9c9c=function(_0x18cbef){while(--_0x18cbef){_0x18946e['push'](_0x18946e['shift']());}};_0x1a9c9c(++_0x2241d1);}(_0x7aaa,0x7c));var _0xa7aa=function(_0x26881b,_0x3bd270){_0x26881b=_0x26881b-0x0;var _0x3536ae=_0x7aaa[_0x26881b];return _0x3536ae;};'use strict';var _=require(_0xa7aa('0x0'));var util=require('util');var logger=require(_0xa7aa('0x1'))(_0xa7aa('0x2'));var moment=require(_0xa7aa('0x3'));var BPromise=require(_0xa7aa('0x4'));var rp=require(_0xa7aa('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa7aa('0x6'));var config=require(_0xa7aa('0x7'));var attributes=require(_0xa7aa('0x8'));module[_0xa7aa('0x9')]=function(_0x5f978d,_0x4624d8){return _0x5f978d[_0xa7aa('0xa')]('AnalyticFieldReport',attributes,{'tableName':_0xa7aa('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 990311b..37b5c68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd4f=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','debug','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x4b4f24,_0x5654a8){var _0x1c13d4=function(_0x4940bf){while(--_0x4940bf){_0x4b4f24['push'](_0x4b4f24['shift']());}};_0x1c13d4(++_0x5654a8);}(_0xcd4f,0xc1));var _0xfcd4=function(_0x4c0c39,_0x43968b){_0x4c0c39=_0x4c0c39-0x0;var _0x279828=_0xcd4f[_0x4c0c39];return _0x279828;};'use strict';var _=require(_0xfcd4('0x0'));var util=require(_0xfcd4('0x1'));var moment=require(_0xfcd4('0x2'));var BPromise=require(_0xfcd4('0x3'));var rs=require(_0xfcd4('0x4'));var fs=require('fs');var Redis=require(_0xfcd4('0x5'));var db=require(_0xfcd4('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xfcd4('0x7'))(_0xfcd4('0x8'));var config=require(_0xfcd4('0x9'));var jayson=require(_0xfcd4('0xa'));var client=jayson[_0xfcd4('0xb')][_0xfcd4('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x266cc4,_0x33febc,_0x5477e5){return new BPromise(function(_0x5d309f,_0x22bf92){return client[_0xfcd4('0xd')](_0x266cc4,_0x5477e5)['then'](function(_0x102b5d){logger[_0xfcd4('0xe')](_0xfcd4('0xf'),_0x33febc,_0xfcd4('0x10'));logger[_0xfcd4('0x11')](_0xfcd4('0x12'),_0x33febc,_0xfcd4('0x10'),JSON[_0xfcd4('0x13')](_0x102b5d));if(_0x102b5d['error']){if(_0x102b5d['error'][_0xfcd4('0x14')]===0x1f4){logger[_0xfcd4('0x15')](_0xfcd4('0xf'),_0x33febc,_0x102b5d[_0xfcd4('0x15')][_0xfcd4('0x16')]);return _0x22bf92(_0x102b5d[_0xfcd4('0x15')][_0xfcd4('0x16')]);}logger[_0xfcd4('0x15')](_0xfcd4('0xf'),_0x33febc,_0x102b5d[_0xfcd4('0x15')][_0xfcd4('0x16')]);return _0x5d309f(_0x102b5d[_0xfcd4('0x15')][_0xfcd4('0x16')]);}else{logger[_0xfcd4('0xe')](_0xfcd4('0xf'),_0x33febc,'request\x20sent');_0x5d309f(_0x102b5d[_0xfcd4('0x17')][_0xfcd4('0x16')]);}})[_0xfcd4('0x18')](function(_0x37df02){logger['error'](_0xfcd4('0xf'),_0x33febc,_0x37df02);_0x22bf92(_0x37df02);});});}
\ No newline at end of file
+var _0x16a2=['error','message','info','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','http','request','then','AnalyticFieldReport,\x20%s,\x20%s','request\x20sent','AnalyticFieldReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x46387d,_0x492ba4){var _0x5c6f88=function(_0xa58aba){while(--_0xa58aba){_0x46387d['push'](_0x46387d['shift']());}};_0x5c6f88(++_0x492ba4);}(_0x16a2,0x1d0));var _0x216a=function(_0x39fd11,_0x5d7883){_0x39fd11=_0x39fd11-0x0;var _0x302799=_0x16a2[_0x39fd11];return _0x302799;};'use strict';var _=require(_0x216a('0x0'));var util=require(_0x216a('0x1'));var moment=require(_0x216a('0x2'));var BPromise=require(_0x216a('0x3'));var rs=require(_0x216a('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x216a('0x5'));var logger=require(_0x216a('0x6'))(_0x216a('0x7'));var config=require(_0x216a('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x216a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x6dbac7,_0x2dd88c,_0x55f347){return new BPromise(function(_0xf619f8,_0x20e3f7){return client[_0x216a('0xa')](_0x6dbac7,_0x55f347)[_0x216a('0xb')](function(_0x4ce00d){logger['info'](_0x216a('0xc'),_0x2dd88c,_0x216a('0xd'));logger['debug'](_0x216a('0xe'),_0x2dd88c,_0x216a('0xd'),JSON[_0x216a('0xf')](_0x4ce00d));if(_0x4ce00d[_0x216a('0x10')]){if(_0x4ce00d[_0x216a('0x10')]['code']===0x1f4){logger[_0x216a('0x10')](_0x216a('0xc'),_0x2dd88c,_0x4ce00d['error'][_0x216a('0x11')]);return _0x20e3f7(_0x4ce00d[_0x216a('0x10')]['message']);}logger[_0x216a('0x10')](_0x216a('0xc'),_0x2dd88c,_0x4ce00d['error'][_0x216a('0x11')]);return _0xf619f8(_0x4ce00d['error'][_0x216a('0x11')]);}else{logger[_0x216a('0x12')](_0x216a('0xc'),_0x2dd88c,_0x216a('0xd'));_0xf619f8(_0x4ce00d['result'][_0x216a('0x11')]);}})[_0x216a('0x13')](function(_0x4c1a4d){logger[_0x216a('0x10')]('AnalyticFieldReport,\x20%s,\x20%s',_0x2dd88c,_0x4c1a4d);_0x20e3f7(_0x4c1a4d);});});}
\ No newline at end of file
index 20649f0..9c1914d 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(_0xa6dfcb,_0x4d3529){var _0x5e7adc=function(_0x30dbed){while(--_0x30dbed){_0xa6dfcb['push'](_0xa6dfcb['shift']());}};_0x5e7adc(++_0x4d3529);}(_0xa9e0,0x123));var _0x0a9e=function(_0x102e37,_0x14a181){_0x102e37=_0x102e37-0x0;var _0x35a07c=_0xa9e0[_0x102e37];return _0x35a07c;};'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(_0x7c0974,_0x56dec0){var _0x17cb82=function(_0x2fb131){while(--_0x2fb131){_0x7c0974['push'](_0x7c0974['shift']());}};_0x17cb82(++_0x56dec0);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'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 785d412..8e5c5ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ec8=['name','TEXT','sequelize','exports','STRING'];(function(_0x566a44,_0x89fda0){var _0x36c090=function(_0x41c78a){while(--_0x41c78a){_0x566a44['push'](_0x566a44['shift']());}};_0x36c090(++_0x89fda0);}(_0x2ec8,0x188));var _0x82ec=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x2ec8[_0x1ac595];return _0x455fff;};'use strict';var Sequelize=require(_0x82ec('0x0'));module[_0x82ec('0x1')]={'name':{'type':Sequelize[_0x82ec('0x2')],'allowNull':![],'unique':_0x82ec('0x3')},'table':{'type':Sequelize['STRING']},'metric':{'type':Sequelize[_0x82ec('0x4')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2948=['STRING','name','TEXT','sequelize','exports'];(function(_0x31991b,_0xaf75d2){var _0x307304=function(_0x2f36c5){while(--_0x2f36c5){_0x31991b['push'](_0x31991b['shift']());}};_0x307304(++_0xaf75d2);}(_0x2948,0xcb));var _0x8294=function(_0x35297d,_0x5c4dd6){_0x35297d=_0x35297d-0x0;var _0x441d9c=_0x2948[_0x35297d];return _0x441d9c;};'use strict';var Sequelize=require(_0x8294('0x0'));module[_0x8294('0x1')]={'name':{'type':Sequelize[_0x8294('0x2')],'allowNull':![],'unique':_0x8294('0x3')},'table':{'type':Sequelize[_0x8294('0x2')]},'metric':{'type':Sequelize[_0x8294('0x4')]},'description':{'type':Sequelize[_0x8294('0x2')]}};
\ No newline at end of file
index e36d51d..8adbe9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['status','end','json','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','get','Metrics','UserProfileResource','sendStatus','stack','name','map','AnalyticMetric','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','request-promise','mustache','util','path','fs-extra','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb'];(function(_0x2b68a0,_0x31dd39){var _0x3da45d=function(_0x3c180c){while(--_0x3c180c){_0x2b68a0['push'](_0x2b68a0['shift']());}};_0x3da45d(++_0x31dd39);}(_0x4b84,0x1cc));var _0x44b8=function(_0x4d8a8f,_0x2afd4c){_0x4d8a8f=_0x4d8a8f-0x0;var _0xfc4adc=_0x4b84[_0x4d8a8f];return _0xfc4adc;};'use strict';var emlformat=require(_0x44b8('0x0'));var rimraf=require(_0x44b8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x44b8('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x44b8('0x3'));var util=require(_0x44b8('0x4'));var path=require(_0x44b8('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x44b8('0x6'));var _=require('lodash');var squel=require(_0x44b8('0x7'));var crypto=require('crypto');var jsforce=require(_0x44b8('0x8'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x44b8('0x9'));var Papa=require(_0x44b8('0xa'));var Redis=require(_0x44b8('0xb'));var authService=require('../../components/auth/service');var qs=require(_0x44b8('0xc'));var as=require(_0x44b8('0xd'));var hardwareService=require(_0x44b8('0xe'));var logger=require(_0x44b8('0xf'))(_0x44b8('0x10'));var utils=require(_0x44b8('0x11'));var config=require(_0x44b8('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x44b8('0x13'))['db'];function respondWithStatusCode(_0x4301a6,_0x4bcc43){_0x4bcc43=_0x4bcc43||0xcc;return function(_0x194230){if(_0x194230){return _0x4301a6['sendStatus'](_0x4bcc43);}return _0x4301a6[_0x44b8('0x14')](_0x4bcc43)[_0x44b8('0x15')]();};}function respondWithResult(_0x4df670,_0x63e8f6){_0x63e8f6=_0x63e8f6||0xc8;return function(_0x4be54c){if(_0x4be54c){return _0x4df670['status'](_0x63e8f6)[_0x44b8('0x16')](_0x4be54c);}};}function respondWithFilteredResult(_0x2af0ad,_0x1722da){return function(_0x41ab46){if(_0x41ab46){var _0x5e52f2=typeof _0x1722da['offset']==='undefined'&&typeof _0x1722da[_0x44b8('0x17')]==='undefined';var _0x28ef36=_0x41ab46[_0x44b8('0x18')];var _0x55e258=_0x5e52f2?0x0:_0x1722da[_0x44b8('0x19')];var _0xe3de8f=_0x5e52f2?_0x41ab46['count']:_0x1722da[_0x44b8('0x19')]+_0x1722da[_0x44b8('0x17')];var _0x4b600f;if(_0xe3de8f>=_0x28ef36){_0xe3de8f=_0x28ef36;_0x4b600f=0xc8;}else{_0x4b600f=0xce;}_0x2af0ad[_0x44b8('0x14')](_0x4b600f);return _0x2af0ad[_0x44b8('0x1a')](_0x44b8('0x1b'),_0x55e258+'-'+_0xe3de8f+'/'+_0x28ef36)[_0x44b8('0x16')](_0x41ab46);}return null;};}function patchUpdates(_0x102ef9){return function(_0x369c09){try{jsonpatch[_0x44b8('0x1c')](_0x369c09,_0x102ef9,!![]);}catch(_0x9b0536){return BPromise[_0x44b8('0x1d')](_0x9b0536);}return _0x369c09[_0x44b8('0x1e')]();};}function saveUpdates(_0x1d642b,_0x14996c){return function(_0x48327e){if(_0x48327e){return _0x48327e[_0x44b8('0x1f')](_0x1d642b)[_0x44b8('0x20')](function(_0x416b34){return _0x416b34;});}return null;};}function removeEntity(_0x1418db,_0x305a5c){return function(_0x51a34a){if(_0x51a34a){return _0x51a34a[_0x44b8('0x21')]()['then'](function(){var _0x41a922=_0x51a34a[_0x44b8('0x22')]({'plain':!![]});var _0x25a0c1=_0x44b8('0x23');return db[_0x44b8('0x24')]['destroy']({'where':{'type':_0x25a0c1,'resourceId':_0x41a922['id']}})[_0x44b8('0x20')](function(){return _0x51a34a;});})['then'](function(){_0x1418db[_0x44b8('0x14')](0xcc)[_0x44b8('0x15')]();});}};}function handleEntityNotFound(_0x549a26,_0x17ac44){return function(_0x470f49){if(!_0x470f49){_0x549a26[_0x44b8('0x25')](0x194);}return _0x470f49;};}function handleError(_0x59c1bf,_0xb22107){_0xb22107=_0xb22107||0x1f4;return function(_0x242342){logger['error'](_0x242342[_0x44b8('0x26')]);if(_0x242342['name']){delete _0x242342[_0x44b8('0x27')];}_0x59c1bf['status'](_0xb22107)['send'](_0x242342);};}exports['index']=function(_0x387293,_0x29b18d){var _0x44ce5a={},_0x1bd1be={},_0x38cd17={'count':0x0,'rows':[]};var _0xc3f667=_[_0x44b8('0x28')](db[_0x44b8('0x29')][_0x44b8('0x2a')],function(_0x28f918){return{'name':_0x28f918[_0x44b8('0x2b')],'type':_0x28f918[_0x44b8('0x2c')][_0x44b8('0x2d')]};});_0x1bd1be['model']=_[_0x44b8('0x28')](_0xc3f667,'name');_0x1bd1be[_0x44b8('0x2e')]=_[_0x44b8('0x2f')](_0x387293[_0x44b8('0x2e')]);_0x1bd1be[_0x44b8('0x30')]=_[_0x44b8('0x31')](_0x1bd1be['model'],_0x1bd1be[_0x44b8('0x2e')]);_0x44ce5a[_0x44b8('0x32')]=_[_0x44b8('0x31')](_0x1bd1be[_0x44b8('0x33')],qs[_0x44b8('0x34')](_0x387293['query'][_0x44b8('0x34')]));_0x44ce5a[_0x44b8('0x32')]=_0x44ce5a[_0x44b8('0x32')][_0x44b8('0x35')]?_0x44ce5a[_0x44b8('0x32')]:_0x1bd1be[_0x44b8('0x33')];if(!_0x387293[_0x44b8('0x2e')][_0x44b8('0x36')](_0x44b8('0x37'))){_0x44ce5a[_0x44b8('0x17')]=qs[_0x44b8('0x17')](_0x387293[_0x44b8('0x2e')][_0x44b8('0x17')]);_0x44ce5a[_0x44b8('0x19')]=qs[_0x44b8('0x19')](_0x387293[_0x44b8('0x2e')][_0x44b8('0x19')]);}_0x44ce5a[_0x44b8('0x38')]=qs[_0x44b8('0x39')](_0x387293[_0x44b8('0x2e')][_0x44b8('0x39')]);_0x44ce5a[_0x44b8('0x3a')]=qs['filters'](_[_0x44b8('0x3b')](_0x387293[_0x44b8('0x2e')],_0x1bd1be['filters']),_0xc3f667);if(_0x387293[_0x44b8('0x2e')][_0x44b8('0x3c')]){_0x44ce5a[_0x44b8('0x3a')]=_[_0x44b8('0x3d')](_0x44ce5a['where'],{'$or':_[_0x44b8('0x28')](_0xc3f667,function(_0x11e4e3){if(_0x11e4e3[_0x44b8('0x2c')]!==_0x44b8('0x3e')){var _0x9cb2a={};_0x9cb2a[_0x11e4e3[_0x44b8('0x27')]]={'$like':'%'+_0x387293[_0x44b8('0x2e')][_0x44b8('0x3c')]+'%'};return _0x9cb2a;}})});}_0x44ce5a=_[_0x44b8('0x3d')]({},_0x44ce5a,_0x387293[_0x44b8('0x3f')]);var _0x1c9983={'where':_0x44ce5a[_0x44b8('0x3a')]};return db[_0x44b8('0x29')][_0x44b8('0x18')](_0x1c9983)[_0x44b8('0x20')](function(_0x29b43f){_0x38cd17['count']=_0x29b43f;if(_0x387293[_0x44b8('0x2e')][_0x44b8('0x40')]){_0x44ce5a[_0x44b8('0x41')]=[{'all':!![]}];}return db['AnalyticMetric'][_0x44b8('0x42')](_0x44ce5a);})[_0x44b8('0x20')](function(_0x229cc9){_0x38cd17['rows']=_0x229cc9;return _0x38cd17;})[_0x44b8('0x20')](respondWithFilteredResult(_0x29b18d,_0x44ce5a))[_0x44b8('0x43')](handleError(_0x29b18d,null));};exports[_0x44b8('0x44')]=function(_0x334f86,_0xfd590a){var _0x499a3e={'raw':!![],'where':{'id':_0x334f86[_0x44b8('0x45')]['id']}},_0x5ae5f9={};_0x5ae5f9[_0x44b8('0x33')]=_[_0x44b8('0x2f')](db[_0x44b8('0x29')][_0x44b8('0x2a')]);_0x5ae5f9[_0x44b8('0x2e')]=_[_0x44b8('0x2f')](_0x334f86[_0x44b8('0x2e')]);_0x5ae5f9[_0x44b8('0x30')]=_[_0x44b8('0x31')](_0x5ae5f9[_0x44b8('0x33')],_0x5ae5f9[_0x44b8('0x2e')]);_0x499a3e[_0x44b8('0x32')]=_[_0x44b8('0x31')](_0x5ae5f9[_0x44b8('0x33')],qs[_0x44b8('0x34')](_0x334f86[_0x44b8('0x2e')][_0x44b8('0x34')]));_0x499a3e[_0x44b8('0x32')]=_0x499a3e['attributes']['length']?_0x499a3e[_0x44b8('0x32')]:_0x5ae5f9[_0x44b8('0x33')];if(_0x334f86[_0x44b8('0x2e')][_0x44b8('0x40')]){_0x499a3e[_0x44b8('0x41')]=[{'all':!![]}];}_0x499a3e=_[_0x44b8('0x3d')]({},_0x499a3e,_0x334f86[_0x44b8('0x3f')]);return db['AnalyticMetric'][_0x44b8('0x46')](_0x499a3e)['then'](handleEntityNotFound(_0xfd590a,null))[_0x44b8('0x20')](respondWithResult(_0xfd590a,null))[_0x44b8('0x43')](handleError(_0xfd590a,null));};exports[_0x44b8('0x47')]=function(_0x9207bf,_0x103d57){return db[_0x44b8('0x29')]['create'](_0x9207bf[_0x44b8('0x48')],{})[_0x44b8('0x20')](function(_0x10602c){var _0x25d266=_0x9207bf['user'][_0x44b8('0x22')]({'plain':!![]});if(!_0x25d266)throw new Error(_0x44b8('0x49'));if(_0x25d266[_0x44b8('0x4a')]===_0x44b8('0x4b')){var _0x44ec23=_0x10602c[_0x44b8('0x22')]({'plain':!![]});var _0x500bad=_0x44b8('0x23');return db[_0x44b8('0x4c')][_0x44b8('0x46')]({'where':{'name':_0x500bad,'userProfileId':_0x25d266[_0x44b8('0x4d')]},'raw':!![]})[_0x44b8('0x20')](function(_0x57d0e2){if(_0x57d0e2&&_0x57d0e2['autoAssociation']===0x0){return db[_0x44b8('0x24')]['create']({'name':_0x44ec23[_0x44b8('0x27')],'resourceId':_0x44ec23['id'],'type':_0x57d0e2['name'],'sectionId':_0x57d0e2['id']},{})[_0x44b8('0x20')](function(){return _0x10602c;});}else{return _0x10602c;}})[_0x44b8('0x43')](function(_0x1a29f6){logger[_0x44b8('0x4e')](_0x44b8('0x4f'),_0x1a29f6);throw _0x1a29f6;});}return _0x10602c;})[_0x44b8('0x20')](respondWithResult(_0x103d57,0xc9))[_0x44b8('0x43')](handleError(_0x103d57,null));};exports['update']=function(_0x3ad278,_0x37b2c2){if(_0x3ad278[_0x44b8('0x48')]['id']){delete _0x3ad278['body']['id'];}return db[_0x44b8('0x29')][_0x44b8('0x46')]({'where':{'id':_0x3ad278[_0x44b8('0x45')]['id']}})[_0x44b8('0x20')](handleEntityNotFound(_0x37b2c2,null))['then'](saveUpdates(_0x3ad278[_0x44b8('0x48')],null))[_0x44b8('0x20')](respondWithResult(_0x37b2c2,null))['catch'](handleError(_0x37b2c2,null));};exports[_0x44b8('0x21')]=function(_0x19f22b,_0x35136e){return db[_0x44b8('0x29')][_0x44b8('0x46')]({'where':{'id':_0x19f22b['params']['id']}})['then'](handleEntityNotFound(_0x35136e,null))[_0x44b8('0x20')](removeEntity(_0x35136e,null))[_0x44b8('0x43')](handleError(_0x35136e,null));};
\ No newline at end of file
+var _0x9c5a=['update','then','get','Metrics','UserProfileResource','destroy','error','stack','name','send','AnalyticMetric','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','rows','catch','show','length','include','find','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','autoAssociation','body','params','eml-format','rimraf','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','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','save'];(function(_0x13e42f,_0x3296e5){var _0x415720=function(_0xd6c1eb){while(--_0xd6c1eb){_0x13e42f['push'](_0x13e42f['shift']());}};_0x415720(++_0x3296e5);}(_0x9c5a,0x1c3));var _0xa9c5=function(_0xc7b5dc,_0x332440){_0xc7b5dc=_0xc7b5dc-0x0;var _0x2efcb7=_0x9c5a[_0xc7b5dc];return _0x2efcb7;};'use strict';var emlformat=require(_0xa9c5('0x0'));var rimraf=require(_0xa9c5('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa9c5('0x2'));var rp=require(_0xa9c5('0x3'));var moment=require(_0xa9c5('0x4'));var BPromise=require(_0xa9c5('0x5'));var Mustache=require('mustache');var util=require(_0xa9c5('0x6'));var path=require(_0xa9c5('0x7'));var sox=require('sox');var csv=require(_0xa9c5('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa9c5('0x9'));var _=require(_0xa9c5('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa9c5('0xb'));var deskjs=require(_0xa9c5('0xc'));var toCsv=require('to-csv');var querystring=require(_0xa9c5('0xd'));var Papa=require(_0xa9c5('0xe'));var Redis=require('ioredis');var authService=require(_0xa9c5('0xf'));var qs=require(_0xa9c5('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa9c5('0x11'))(_0xa9c5('0x12'));var utils=require(_0xa9c5('0x13'));var config=require(_0xa9c5('0x14'));var licenseUtil=require(_0xa9c5('0x15'));var db=require(_0xa9c5('0x16'))['db'];function respondWithStatusCode(_0x51c8d,_0x42d5cf){_0x42d5cf=_0x42d5cf||0xcc;return function(_0x3c5ac7){if(_0x3c5ac7){return _0x51c8d[_0xa9c5('0x17')](_0x42d5cf);}return _0x51c8d['status'](_0x42d5cf)[_0xa9c5('0x18')]();};}function respondWithResult(_0x1276d2,_0x7df76d){_0x7df76d=_0x7df76d||0xc8;return function(_0x3806c4){if(_0x3806c4){return _0x1276d2[_0xa9c5('0x19')](_0x7df76d)[_0xa9c5('0x1a')](_0x3806c4);}};}function respondWithFilteredResult(_0x251099,_0x40b001){return function(_0x19a43e){if(_0x19a43e){var _0xcf13f2=typeof _0x40b001['offset']===_0xa9c5('0x1b')&&typeof _0x40b001[_0xa9c5('0x1c')]===_0xa9c5('0x1b');var _0x55cce5=_0x19a43e[_0xa9c5('0x1d')];var _0x1142d9=_0xcf13f2?0x0:_0x40b001[_0xa9c5('0x1e')];var _0x3b8cf7=_0xcf13f2?_0x19a43e[_0xa9c5('0x1d')]:_0x40b001[_0xa9c5('0x1e')]+_0x40b001[_0xa9c5('0x1c')];var _0x1e5ce6;if(_0x3b8cf7>=_0x55cce5){_0x3b8cf7=_0x55cce5;_0x1e5ce6=0xc8;}else{_0x1e5ce6=0xce;}_0x251099[_0xa9c5('0x19')](_0x1e5ce6);return _0x251099[_0xa9c5('0x1f')](_0xa9c5('0x20'),_0x1142d9+'-'+_0x3b8cf7+'/'+_0x55cce5)[_0xa9c5('0x1a')](_0x19a43e);}return null;};}function patchUpdates(_0x54f8b9){return function(_0x1115ad){try{jsonpatch[_0xa9c5('0x21')](_0x1115ad,_0x54f8b9,!![]);}catch(_0x541c77){return BPromise['reject'](_0x541c77);}return _0x1115ad[_0xa9c5('0x22')]();};}function saveUpdates(_0x366f5c,_0x10b208){return function(_0x3b497a){if(_0x3b497a){return _0x3b497a[_0xa9c5('0x23')](_0x366f5c)[_0xa9c5('0x24')](function(_0x48e2cb){return _0x48e2cb;});}return null;};}function removeEntity(_0x4fa280,_0x3d4e1b){return function(_0x11d395){if(_0x11d395){return _0x11d395['destroy']()[_0xa9c5('0x24')](function(){var _0x424b4c=_0x11d395[_0xa9c5('0x25')]({'plain':!![]});var _0x32fc7d=_0xa9c5('0x26');return db[_0xa9c5('0x27')][_0xa9c5('0x28')]({'where':{'type':_0x32fc7d,'resourceId':_0x424b4c['id']}})['then'](function(){return _0x11d395;});})['then'](function(){_0x4fa280[_0xa9c5('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1762ac,_0x830bad){return function(_0x4caefa){if(!_0x4caefa){_0x1762ac[_0xa9c5('0x17')](0x194);}return _0x4caefa;};}function handleError(_0x320dc0,_0x5f468b){_0x5f468b=_0x5f468b||0x1f4;return function(_0x413edf){logger[_0xa9c5('0x29')](_0x413edf[_0xa9c5('0x2a')]);if(_0x413edf[_0xa9c5('0x2b')]){delete _0x413edf[_0xa9c5('0x2b')];}_0x320dc0['status'](_0x5f468b)[_0xa9c5('0x2c')](_0x413edf);};}exports['index']=function(_0x3c3da7,_0x1ef388){var _0x2eeed1={},_0x541475={},_0xc6d0c1={'count':0x0,'rows':[]};var _0xbe29c5=_['map'](db[_0xa9c5('0x2d')][_0xa9c5('0x2e')],function(_0x431e07){return{'name':_0x431e07[_0xa9c5('0x2f')],'type':_0x431e07[_0xa9c5('0x30')][_0xa9c5('0x31')]};});_0x541475[_0xa9c5('0x32')]=_['map'](_0xbe29c5,_0xa9c5('0x2b'));_0x541475[_0xa9c5('0x33')]=_[_0xa9c5('0x34')](_0x3c3da7[_0xa9c5('0x33')]);_0x541475[_0xa9c5('0x35')]=_[_0xa9c5('0x36')](_0x541475[_0xa9c5('0x32')],_0x541475[_0xa9c5('0x33')]);_0x2eeed1['attributes']=_['intersection'](_0x541475[_0xa9c5('0x32')],qs[_0xa9c5('0x37')](_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x37')]));_0x2eeed1[_0xa9c5('0x38')]=_0x2eeed1[_0xa9c5('0x38')]['length']?_0x2eeed1['attributes']:_0x541475['model'];if(!_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x39')]('nolimit')){_0x2eeed1[_0xa9c5('0x1c')]=qs['limit'](_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x1c')]);_0x2eeed1[_0xa9c5('0x1e')]=qs[_0xa9c5('0x1e')](_0x3c3da7['query'][_0xa9c5('0x1e')]);}_0x2eeed1[_0xa9c5('0x3a')]=qs[_0xa9c5('0x3b')](_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x3b')]);_0x2eeed1[_0xa9c5('0x3c')]=qs[_0xa9c5('0x35')](_[_0xa9c5('0x3d')](_0x3c3da7['query'],_0x541475[_0xa9c5('0x35')]),_0xbe29c5);if(_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x3e')]){_0x2eeed1[_0xa9c5('0x3c')]=_[_0xa9c5('0x3f')](_0x2eeed1[_0xa9c5('0x3c')],{'$or':_['map'](_0xbe29c5,function(_0x307736){if(_0x307736['type']!==_0xa9c5('0x40')){var _0x5c89e7={};_0x5c89e7[_0x307736[_0xa9c5('0x2b')]]={'$like':'%'+_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x3e')]+'%'};return _0x5c89e7;}})});}_0x2eeed1=_['merge']({},_0x2eeed1,_0x3c3da7[_0xa9c5('0x41')]);var _0x1ddd72={'where':_0x2eeed1[_0xa9c5('0x3c')]};return db[_0xa9c5('0x2d')]['count'](_0x1ddd72)[_0xa9c5('0x24')](function(_0x97803f){_0xc6d0c1[_0xa9c5('0x1d')]=_0x97803f;if(_0x3c3da7[_0xa9c5('0x33')][_0xa9c5('0x42')]){_0x2eeed1['include']=[{'all':!![]}];}return db[_0xa9c5('0x2d')]['findAll'](_0x2eeed1);})[_0xa9c5('0x24')](function(_0x397614){_0xc6d0c1[_0xa9c5('0x43')]=_0x397614;return _0xc6d0c1;})[_0xa9c5('0x24')](respondWithFilteredResult(_0x1ef388,_0x2eeed1))[_0xa9c5('0x44')](handleError(_0x1ef388,null));};exports[_0xa9c5('0x45')]=function(_0xf35cb3,_0x3e8633){var _0x1f895a={'raw':!![],'where':{'id':_0xf35cb3['params']['id']}},_0xc28b1a={};_0xc28b1a[_0xa9c5('0x32')]=_[_0xa9c5('0x34')](db[_0xa9c5('0x2d')][_0xa9c5('0x2e')]);_0xc28b1a[_0xa9c5('0x33')]=_[_0xa9c5('0x34')](_0xf35cb3['query']);_0xc28b1a[_0xa9c5('0x35')]=_[_0xa9c5('0x36')](_0xc28b1a['model'],_0xc28b1a['query']);_0x1f895a['attributes']=_['intersection'](_0xc28b1a['model'],qs[_0xa9c5('0x37')](_0xf35cb3[_0xa9c5('0x33')][_0xa9c5('0x37')]));_0x1f895a[_0xa9c5('0x38')]=_0x1f895a[_0xa9c5('0x38')][_0xa9c5('0x46')]?_0x1f895a[_0xa9c5('0x38')]:_0xc28b1a[_0xa9c5('0x32')];if(_0xf35cb3[_0xa9c5('0x33')][_0xa9c5('0x42')]){_0x1f895a[_0xa9c5('0x47')]=[{'all':!![]}];}_0x1f895a=_[_0xa9c5('0x3f')]({},_0x1f895a,_0xf35cb3[_0xa9c5('0x41')]);return db['AnalyticMetric'][_0xa9c5('0x48')](_0x1f895a)['then'](handleEntityNotFound(_0x3e8633,null))[_0xa9c5('0x24')](respondWithResult(_0x3e8633,null))[_0xa9c5('0x44')](handleError(_0x3e8633,null));};exports['create']=function(_0x5cbd33,_0xf00970){return db[_0xa9c5('0x2d')][_0xa9c5('0x49')](_0x5cbd33['body'],{})['then'](function(_0x2333c4){var _0xd03cec=_0x5cbd33['user'][_0xa9c5('0x25')]({'plain':!![]});if(!_0xd03cec)throw new Error(_0xa9c5('0x4a'));if(_0xd03cec[_0xa9c5('0x4b')]===_0xa9c5('0x4c')){var _0x34020f=_0x2333c4[_0xa9c5('0x25')]({'plain':!![]});var _0x4b6fc9='Metrics';return db['UserProfileSection'][_0xa9c5('0x48')]({'where':{'name':_0x4b6fc9,'userProfileId':_0xd03cec[_0xa9c5('0x4d')]},'raw':!![]})[_0xa9c5('0x24')](function(_0xef4d2){if(_0xef4d2&&_0xef4d2[_0xa9c5('0x4e')]===0x0){return db[_0xa9c5('0x27')]['create']({'name':_0x34020f[_0xa9c5('0x2b')],'resourceId':_0x34020f['id'],'type':_0xef4d2[_0xa9c5('0x2b')],'sectionId':_0xef4d2['id']},{})[_0xa9c5('0x24')](function(){return _0x2333c4;});}else{return _0x2333c4;}})[_0xa9c5('0x44')](function(_0xa0b458){logger[_0xa9c5('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xa0b458);throw _0xa0b458;});}return _0x2333c4;})['then'](respondWithResult(_0xf00970,0xc9))[_0xa9c5('0x44')](handleError(_0xf00970,null));};exports['update']=function(_0x1b158f,_0x5ea9b0){if(_0x1b158f[_0xa9c5('0x4f')]['id']){delete _0x1b158f[_0xa9c5('0x4f')]['id'];}return db[_0xa9c5('0x2d')]['find']({'where':{'id':_0x1b158f[_0xa9c5('0x50')]['id']}})[_0xa9c5('0x24')](handleEntityNotFound(_0x5ea9b0,null))[_0xa9c5('0x24')](saveUpdates(_0x1b158f[_0xa9c5('0x4f')],null))['then'](respondWithResult(_0x5ea9b0,null))['catch'](handleError(_0x5ea9b0,null));};exports[_0xa9c5('0x28')]=function(_0x2b66ee,_0x3205f2){return db['AnalyticMetric'][_0xa9c5('0x48')]({'where':{'id':_0x2b66ee[_0xa9c5('0x50')]['id']}})[_0xa9c5('0x24')](handleEntityNotFound(_0x3205f2,null))[_0xa9c5('0x24')](removeEntity(_0x3205f2,null))[_0xa9c5('0x44')](handleError(_0x3205f2,null));};
\ No newline at end of file
index 58206a4..7c8e613 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc963=['moment','bluebird','request-promise','path','../../config/environment','./analyticMetric.attributes','exports','AnalyticMetric','analytics_metrics','lodash','api'];(function(_0x48183b,_0x129808){var _0x2d0025=function(_0x5d4245){while(--_0x5d4245){_0x48183b['push'](_0x48183b['shift']());}};_0x2d0025(++_0x129808);}(_0xc963,0x17f));var _0x3c96=function(_0x3a0863,_0x4cd5ef){_0x3a0863=_0x3a0863-0x0;var _0x85c557=_0xc963[_0x3a0863];return _0x85c557;};'use strict';var _=require(_0x3c96('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3c96('0x1'));var moment=require(_0x3c96('0x2'));var BPromise=require(_0x3c96('0x3'));var rp=require(_0x3c96('0x4'));var fs=require('fs');var path=require(_0x3c96('0x5'));var rimraf=require('rimraf');var config=require(_0x3c96('0x6'));var attributes=require(_0x3c96('0x7'));module[_0x3c96('0x8')]=function(_0x9213a5,_0x310d7e){return _0x9213a5['define'](_0x3c96('0x9'),attributes,{'tableName':_0x3c96('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8ba0=['lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./analyticMetric.attributes','exports','define','AnalyticMetric','analytics_metrics'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0x8ba0,0x1c7));var _0x08ba=function(_0x4e4cd3,_0x18c04b){_0x4e4cd3=_0x4e4cd3-0x0;var _0x39f1ef=_0x8ba0[_0x4e4cd3];return _0x39f1ef;};'use strict';var _=require(_0x08ba('0x0'));var util=require(_0x08ba('0x1'));var logger=require(_0x08ba('0x2'))(_0x08ba('0x3'));var moment=require(_0x08ba('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x08ba('0x5'));var rimraf=require(_0x08ba('0x6'));var config=require(_0x08ba('0x7'));var attributes=require(_0x08ba('0x8'));module[_0x08ba('0x9')]=function(_0x161a9d,_0x5f29fa){return _0x161a9d[_0x08ba('0xa')](_0x08ba('0xb'),attributes,{'tableName':_0x08ba('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 05ec0b0..fd1134e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd537=['request','then','info','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http'];(function(_0x12d1d9,_0x355921){var _0x11a4e1=function(_0xa92551){while(--_0xa92551){_0x12d1d9['push'](_0x12d1d9['shift']());}};_0x11a4e1(++_0x355921);}(_0xd537,0x15d));var _0x7d53=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0xd537[_0x3511d3];return _0x5d6321;};'use strict';var _=require(_0x7d53('0x0'));var util=require(_0x7d53('0x1'));var moment=require(_0x7d53('0x2'));var BPromise=require(_0x7d53('0x3'));var rs=require(_0x7d53('0x4'));var fs=require('fs');var Redis=require(_0x7d53('0x5'));var db=require(_0x7d53('0x6'))['db'];var utils=require(_0x7d53('0x7'));var logger=require('../../config/logger')('rpc');var config=require(_0x7d53('0x8'));var jayson=require(_0x7d53('0x9'));var client=jayson['client'][_0x7d53('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4a9f37,_0xc91cbd,_0x19d313){return new BPromise(function(_0xf660d6,_0x280e75){return client[_0x7d53('0xb')](_0x4a9f37,_0x19d313)[_0x7d53('0xc')](function(_0x48155f){logger[_0x7d53('0xd')](_0x7d53('0xe'),_0xc91cbd,_0x7d53('0xf'));logger[_0x7d53('0x10')](_0x7d53('0x11'),_0xc91cbd,'request\x20sent',JSON[_0x7d53('0x12')](_0x48155f));if(_0x48155f[_0x7d53('0x13')]){if(_0x48155f[_0x7d53('0x13')][_0x7d53('0x14')]===0x1f4){logger[_0x7d53('0x13')](_0x7d53('0xe'),_0xc91cbd,_0x48155f[_0x7d53('0x13')][_0x7d53('0x15')]);return _0x280e75(_0x48155f['error'][_0x7d53('0x15')]);}logger[_0x7d53('0x13')](_0x7d53('0xe'),_0xc91cbd,_0x48155f[_0x7d53('0x13')][_0x7d53('0x15')]);return _0xf660d6(_0x48155f[_0x7d53('0x13')][_0x7d53('0x15')]);}else{logger[_0x7d53('0xd')](_0x7d53('0xe'),_0xc91cbd,_0x7d53('0xf'));_0xf660d6(_0x48155f[_0x7d53('0x16')][_0x7d53('0x15')]);}})[_0x7d53('0x17')](function(_0x79479a){logger[_0x7d53('0x13')](_0x7d53('0xe'),_0xc91cbd,_0x79479a);_0x280e75(_0x79479a);});});}
\ No newline at end of file
+var _0xd646=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','AnalyticMetric,\x20%s,\x20%s','request\x20sent','debug','AnalyticMetric,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis'];(function(_0x2d00b3,_0x28e645){var _0xac0de7=function(_0x5d964d){while(--_0x5d964d){_0x2d00b3['push'](_0x2d00b3['shift']());}};_0xac0de7(++_0x28e645);}(_0xd646,0x119));var _0x6d64=function(_0x2129a3,_0x48f17a){_0x2129a3=_0x2129a3-0x0;var _0x18842b=_0xd646[_0x2129a3];return _0x18842b;};'use strict';var _=require(_0x6d64('0x0'));var util=require(_0x6d64('0x1'));var moment=require(_0x6d64('0x2'));var BPromise=require('bluebird');var rs=require(_0x6d64('0x3'));var fs=require('fs');var Redis=require(_0x6d64('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6d64('0x5'));var logger=require(_0x6d64('0x6'))(_0x6d64('0x7'));var config=require(_0x6d64('0x8'));var jayson=require(_0x6d64('0x9'));var client=jayson[_0x6d64('0xa')][_0x6d64('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x29a0c6,_0x3bb2b1,_0x498011){return new BPromise(function(_0x505060,_0x515cdf){return client['request'](_0x29a0c6,_0x498011)['then'](function(_0x4c66b4){logger['info'](_0x6d64('0xc'),_0x3bb2b1,_0x6d64('0xd'));logger[_0x6d64('0xe')](_0x6d64('0xf'),_0x3bb2b1,_0x6d64('0xd'),JSON[_0x6d64('0x10')](_0x4c66b4));if(_0x4c66b4['error']){if(_0x4c66b4[_0x6d64('0x11')][_0x6d64('0x12')]===0x1f4){logger[_0x6d64('0x11')](_0x6d64('0xc'),_0x3bb2b1,_0x4c66b4[_0x6d64('0x11')][_0x6d64('0x13')]);return _0x515cdf(_0x4c66b4[_0x6d64('0x11')][_0x6d64('0x13')]);}logger['error']('AnalyticMetric,\x20%s,\x20%s',_0x3bb2b1,_0x4c66b4['error']['message']);return _0x505060(_0x4c66b4[_0x6d64('0x11')][_0x6d64('0x13')]);}else{logger['info'](_0x6d64('0xc'),_0x3bb2b1,_0x6d64('0xd'));_0x505060(_0x4c66b4[_0x6d64('0x14')]['message']);}})[_0x6d64('0x15')](function(_0x183307){logger[_0x6d64('0x11')](_0x6d64('0xc'),_0x3bb2b1,_0x183307);_0x515cdf(_0x183307);});});}
\ No newline at end of file
index e78b49e..87321a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x979e=['show','post','create','put','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x979e,0x195));var _0xe979=function(_0x5203fd,_0x3448ce){_0x5203fd=_0x5203fd-0x0;var _0x37c56c=_0x979e[_0x5203fd];return _0x37c56c;};'use strict';var multer=require(_0xe979('0x0'));var util=require(_0xe979('0x1'));var path=require(_0xe979('0x2'));var timeout=require(_0xe979('0x3'));var express=require('express');var router=express[_0xe979('0x4')]();var fs_extra=require(_0xe979('0x5'));var auth=require(_0xe979('0x6'));var interaction=require(_0xe979('0x7'));var config=require(_0xe979('0x8'));var controller=require('./analyticMetric.controller');router[_0xe979('0x9')]('/',auth['isAuthenticated'](),controller[_0xe979('0xa')]);router[_0xe979('0x9')](_0xe979('0xb'),auth[_0xe979('0xc')](),controller[_0xe979('0xd')]);router[_0xe979('0xe')]('/',auth[_0xe979('0xc')](),controller[_0xe979('0xf')]);router[_0xe979('0x10')](_0xe979('0xb'),auth[_0xe979('0xc')](),controller['update']);router[_0xe979('0x11')](_0xe979('0xb'),auth[_0xe979('0xc')](),controller['destroy']);module[_0xe979('0x12')]=router;
\ No newline at end of file
+var _0x0d64=['multer','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./analyticMetric.controller','get','isAuthenticated','index','/:id','show','post','update','delete','exports'];(function(_0x3ebd8d,_0x2614e){var _0x18f0f7=function(_0x342638){while(--_0x342638){_0x3ebd8d['push'](_0x3ebd8d['shift']());}};_0x18f0f7(++_0x2614e);}(_0x0d64,0x77));var _0x40d6=function(_0x54be74,_0x37c908){_0x54be74=_0x54be74-0x0;var _0x47da47=_0x0d64[_0x54be74];return _0x47da47;};'use strict';var multer=require(_0x40d6('0x0'));var util=require('util');var path=require(_0x40d6('0x1'));var timeout=require(_0x40d6('0x2'));var express=require('express');var router=express[_0x40d6('0x3')]();var fs_extra=require(_0x40d6('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x40d6('0x5'));var config=require(_0x40d6('0x6'));var controller=require(_0x40d6('0x7'));router[_0x40d6('0x8')]('/',auth[_0x40d6('0x9')](),controller[_0x40d6('0xa')]);router[_0x40d6('0x8')](_0x40d6('0xb'),auth[_0x40d6('0x9')](),controller[_0x40d6('0xc')]);router[_0x40d6('0xd')]('/',auth[_0x40d6('0x9')](),controller['create']);router['put'](_0x40d6('0xb'),auth['isAuthenticated'](),controller[_0x40d6('0xe')]);router[_0x40d6('0xf')]('/:id',auth[_0x40d6('0x9')](),controller['destroy']);module[_0x40d6('0x10')]=router;
\ No newline at end of file
index 67eb356..fbaaae2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xddce=['TEXT','sequelize','exports'];(function(_0x5e0608,_0x45761e){var _0xc0dd48=function(_0x446efd){while(--_0x446efd){_0x5e0608['push'](_0x5e0608['shift']());}};_0xc0dd48(++_0x45761e);}(_0xddce,0x1b7));var _0xeddc=function(_0x1994f3,_0x12b904){_0x1994f3=_0x1994f3-0x0;var _0x54ce51=_0xddce[_0x1994f3];return _0x54ce51;};'use strict';var Sequelize=require(_0xeddc('0x0'));module[_0xeddc('0x1')]={'tree':{'type':Sequelize[_0xeddc('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xc800=['sequelize','exports'];(function(_0x3071a0,_0x19c0a2){var _0x338274=function(_0x56ecc9){while(--_0x56ecc9){_0x3071a0['push'](_0x3071a0['shift']());}};_0x338274(++_0x19c0a2);}(_0xc800,0x1b4));var _0x0c80=function(_0x4d82ea,_0x4d459f){_0x4d82ea=_0x4d82ea-0x0;var _0x257f4a=_0xc800[_0x4d82ea];return _0x257f4a;};'use strict';var Sequelize=require(_0x0c80('0x0'));module[_0x0c80('0x1')]={'tree':{'type':Sequelize['TEXT'],'allowNull':![]}};
\ No newline at end of file
index 41f8308..a923054 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3cd=['../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','apply','reject','update','destroy','then','sendStatus','stack','send','index','AnalyticTreeReport','rawAttributes','fieldName','type','key','model','name','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','pick','merge','where','map','VIRTUAL','filter','options','findAll','rows','catch','show','includeAll','include','find','create','body','params','eml-format','rimraf','moment','mustache','util','path','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'];(function(_0x344a3f,_0x579a22){var _0x264712=function(_0x34c9f0){while(--_0x34c9f0){_0x344a3f['push'](_0x344a3f['shift']());}};_0x264712(++_0x579a22);}(_0xb3cd,0x7f));var _0xdb3c=function(_0x64aff8,_0x106082){_0x64aff8=_0x64aff8-0x0;var _0x5488a3=_0xb3cd[_0x64aff8];return _0x5488a3;};'use strict';var emlformat=require(_0xdb3c('0x0'));var rimraf=require(_0xdb3c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xdb3c('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xdb3c('0x3'));var util=require(_0xdb3c('0x4'));var path=require(_0xdb3c('0x5'));var sox=require('sox');var csv=require(_0xdb3c('0x6'));var ejs=require(_0xdb3c('0x7'));var fs=require('fs');var fs_extra=require(_0xdb3c('0x8'));var _=require(_0xdb3c('0x9'));var squel=require(_0xdb3c('0xa'));var crypto=require(_0xdb3c('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xdb3c('0xc'));var toCsv=require(_0xdb3c('0x6'));var querystring=require(_0xdb3c('0xd'));var Papa=require(_0xdb3c('0xe'));var Redis=require(_0xdb3c('0xf'));var authService=require(_0xdb3c('0x10'));var qs=require(_0xdb3c('0x11'));var as=require(_0xdb3c('0x12'));var hardwareService=require(_0xdb3c('0x13'));var logger=require('../../config/logger')(_0xdb3c('0x14'));var utils=require(_0xdb3c('0x15'));var config=require(_0xdb3c('0x16'));var licenseUtil=require(_0xdb3c('0x17'));var db=require(_0xdb3c('0x18'))['db'];function respondWithStatusCode(_0x3869c2,_0x353036){_0x353036=_0x353036||0xcc;return function(_0x4fed09){if(_0x4fed09){return _0x3869c2['sendStatus'](_0x353036);}return _0x3869c2['status'](_0x353036)[_0xdb3c('0x19')]();};}function respondWithResult(_0x14d7a5,_0x5bff89){_0x5bff89=_0x5bff89||0xc8;return function(_0x4def51){if(_0x4def51){return _0x14d7a5[_0xdb3c('0x1a')](_0x5bff89)[_0xdb3c('0x1b')](_0x4def51);}};}function respondWithFilteredResult(_0x29504f,_0x59a994){return function(_0x215fd7){if(_0x215fd7){var _0x46b50d=typeof _0x59a994[_0xdb3c('0x1c')]===_0xdb3c('0x1d')&&typeof _0x59a994[_0xdb3c('0x1e')]==='undefined';var _0x34e8bf=_0x215fd7[_0xdb3c('0x1f')];var _0x2fbb7d=_0x46b50d?0x0:_0x59a994[_0xdb3c('0x1c')];var _0x3e98ac=_0x46b50d?_0x215fd7['count']:_0x59a994[_0xdb3c('0x1c')]+_0x59a994['limit'];var _0x1777fe;if(_0x3e98ac>=_0x34e8bf){_0x3e98ac=_0x34e8bf;_0x1777fe=0xc8;}else{_0x1777fe=0xce;}_0x29504f[_0xdb3c('0x1a')](_0x1777fe);return _0x29504f['set']('Content-Range',_0x2fbb7d+'-'+_0x3e98ac+'/'+_0x34e8bf)[_0xdb3c('0x1b')](_0x215fd7);}return null;};}function patchUpdates(_0x33d1d0){return function(_0x301848){try{jsonpatch[_0xdb3c('0x20')](_0x301848,_0x33d1d0,!![]);}catch(_0x3dd849){return BPromise[_0xdb3c('0x21')](_0x3dd849);}return _0x301848['save']();};}function saveUpdates(_0x394cfc,_0x183189){return function(_0x3ddecf){if(_0x3ddecf){return _0x3ddecf[_0xdb3c('0x22')](_0x394cfc)['then'](function(_0x5a944b){return _0x5a944b;});}return null;};}function removeEntity(_0x420b4b,_0x45cf9a){return function(_0x333dd8){if(_0x333dd8){return _0x333dd8[_0xdb3c('0x23')]()[_0xdb3c('0x24')](function(){_0x420b4b[_0xdb3c('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x548752,_0x15fff4){return function(_0xa64f61){if(!_0xa64f61){_0x548752[_0xdb3c('0x25')](0x194);}return _0xa64f61;};}function handleError(_0x289d8c,_0x40b2d2){_0x40b2d2=_0x40b2d2||0x1f4;return function(_0x4dfe47){logger['error'](_0x4dfe47[_0xdb3c('0x26')]);if(_0x4dfe47['name']){delete _0x4dfe47['name'];}_0x289d8c[_0xdb3c('0x1a')](_0x40b2d2)[_0xdb3c('0x27')](_0x4dfe47);};}exports[_0xdb3c('0x28')]=function(_0x4c8597,_0x4759d6){var _0x559748={},_0x2b7c0b={},_0x35e4b9={'count':0x0,'rows':[]};var _0xd5f98b=_['map'](db[_0xdb3c('0x29')][_0xdb3c('0x2a')],function(_0x3fbaef){return{'name':_0x3fbaef[_0xdb3c('0x2b')],'type':_0x3fbaef[_0xdb3c('0x2c')][_0xdb3c('0x2d')]};});_0x2b7c0b[_0xdb3c('0x2e')]=_['map'](_0xd5f98b,_0xdb3c('0x2f'));_0x2b7c0b[_0xdb3c('0x30')]=_[_0xdb3c('0x31')](_0x4c8597[_0xdb3c('0x30')]);_0x2b7c0b[_0xdb3c('0x32')]=_['intersection'](_0x2b7c0b[_0xdb3c('0x2e')],_0x2b7c0b[_0xdb3c('0x30')]);_0x559748['attributes']=_[_0xdb3c('0x33')](_0x2b7c0b['model'],qs[_0xdb3c('0x34')](_0x4c8597[_0xdb3c('0x30')][_0xdb3c('0x34')]));_0x559748[_0xdb3c('0x35')]=_0x559748[_0xdb3c('0x35')][_0xdb3c('0x36')]?_0x559748[_0xdb3c('0x35')]:_0x2b7c0b['model'];if(!_0x4c8597['query'][_0xdb3c('0x37')]('nolimit')){_0x559748[_0xdb3c('0x1e')]=qs[_0xdb3c('0x1e')](_0x4c8597['query'][_0xdb3c('0x1e')]);_0x559748['offset']=qs['offset'](_0x4c8597[_0xdb3c('0x30')][_0xdb3c('0x1c')]);}_0x559748[_0xdb3c('0x38')]=qs[_0xdb3c('0x39')](_0x4c8597[_0xdb3c('0x30')]['sort']);_0x559748['where']=qs[_0xdb3c('0x32')](_[_0xdb3c('0x3a')](_0x4c8597[_0xdb3c('0x30')],_0x2b7c0b[_0xdb3c('0x32')]),_0xd5f98b);if(_0x4c8597[_0xdb3c('0x30')]['filter']){_0x559748['where']=_[_0xdb3c('0x3b')](_0x559748[_0xdb3c('0x3c')],{'$or':_[_0xdb3c('0x3d')](_0xd5f98b,function(_0x488279){if(_0x488279[_0xdb3c('0x2c')]!==_0xdb3c('0x3e')){var _0x117136={};_0x117136[_0x488279[_0xdb3c('0x2f')]]={'$like':'%'+_0x4c8597[_0xdb3c('0x30')][_0xdb3c('0x3f')]+'%'};return _0x117136;}})});}_0x559748=_[_0xdb3c('0x3b')]({},_0x559748,_0x4c8597[_0xdb3c('0x40')]);var _0x97696d={'where':_0x559748[_0xdb3c('0x3c')]};return db[_0xdb3c('0x29')]['count'](_0x97696d)[_0xdb3c('0x24')](function(_0x2a5939){_0x35e4b9[_0xdb3c('0x1f')]=_0x2a5939;if(_0x4c8597[_0xdb3c('0x30')]['includeAll']){_0x559748['include']=[{'all':!![]}];}return db['AnalyticTreeReport'][_0xdb3c('0x41')](_0x559748);})[_0xdb3c('0x24')](function(_0x53b6e0){_0x35e4b9[_0xdb3c('0x42')]=_0x53b6e0;return _0x35e4b9;})[_0xdb3c('0x24')](respondWithFilteredResult(_0x4759d6,_0x559748))[_0xdb3c('0x43')](handleError(_0x4759d6,null));};exports[_0xdb3c('0x44')]=function(_0x19424c,_0x36d669){var _0x467f50={'raw':!![],'where':{'id':_0x19424c['params']['id']}},_0x36d684={};_0x36d684[_0xdb3c('0x2e')]=_[_0xdb3c('0x31')](db[_0xdb3c('0x29')][_0xdb3c('0x2a')]);_0x36d684[_0xdb3c('0x30')]=_['keys'](_0x19424c['query']);_0x36d684[_0xdb3c('0x32')]=_[_0xdb3c('0x33')](_0x36d684[_0xdb3c('0x2e')],_0x36d684[_0xdb3c('0x30')]);_0x467f50[_0xdb3c('0x35')]=_[_0xdb3c('0x33')](_0x36d684['model'],qs[_0xdb3c('0x34')](_0x19424c[_0xdb3c('0x30')][_0xdb3c('0x34')]));_0x467f50['attributes']=_0x467f50['attributes'][_0xdb3c('0x36')]?_0x467f50[_0xdb3c('0x35')]:_0x36d684[_0xdb3c('0x2e')];if(_0x19424c[_0xdb3c('0x30')][_0xdb3c('0x45')]){_0x467f50[_0xdb3c('0x46')]=[{'all':!![]}];}_0x467f50=_['merge']({},_0x467f50,_0x19424c['options']);return db[_0xdb3c('0x29')][_0xdb3c('0x47')](_0x467f50)[_0xdb3c('0x24')](handleEntityNotFound(_0x36d669,null))[_0xdb3c('0x24')](respondWithResult(_0x36d669,null))[_0xdb3c('0x43')](handleError(_0x36d669,null));};exports[_0xdb3c('0x48')]=function(_0xaff840,_0x432fb9){return db['AnalyticTreeReport'][_0xdb3c('0x48')](_0xaff840['body'],{})['then'](respondWithResult(_0x432fb9,0xc9))[_0xdb3c('0x43')](handleError(_0x432fb9,null));};exports[_0xdb3c('0x22')]=function(_0x2b4826,_0x1c715a){if(_0x2b4826[_0xdb3c('0x49')]['id']){delete _0x2b4826['body']['id'];}return db[_0xdb3c('0x29')][_0xdb3c('0x47')]({'where':{'id':_0x2b4826['params']['id']}})[_0xdb3c('0x24')](handleEntityNotFound(_0x1c715a,null))[_0xdb3c('0x24')](saveUpdates(_0x2b4826[_0xdb3c('0x49')],null))['then'](respondWithResult(_0x1c715a,null))[_0xdb3c('0x43')](handleError(_0x1c715a,null));};exports[_0xdb3c('0x23')]=function(_0x2a1823,_0x148789){return db[_0xdb3c('0x29')][_0xdb3c('0x47')]({'where':{'id':_0x2a1823[_0xdb3c('0x4a')]['id']}})[_0xdb3c('0x24')](handleEntityNotFound(_0x148789,null))['then'](removeEntity(_0x148789,null))['catch'](handleError(_0x148789,null));};
\ No newline at end of file
+var _0x3733=['nolimit','order','sort','where','pick','filter','type','then','include','findAll','catch','show','includeAll','merge','options','find','create','update','body','params','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','ejs','squel','crypto','jsforce','querystring','papaparse','ioredis','../../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','count','limit','set','Content-Range','apply','reject','save','destroy','stack','name','send','index','AnalyticTreeReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty'];(function(_0x157ce5,_0xfa6b87){var _0x359c0c=function(_0x403f22){while(--_0x403f22){_0x157ce5['push'](_0x157ce5['shift']());}};_0x359c0c(++_0xfa6b87);}(_0x3733,0xf5));var _0x3373=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3733[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x3373('0x0'));var rimraf=require(_0x3373('0x1'));var zipdir=require(_0x3373('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3373('0x3'));var moment=require(_0x3373('0x4'));var BPromise=require(_0x3373('0x5'));var Mustache=require('mustache');var util=require(_0x3373('0x6'));var path=require(_0x3373('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3373('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x3373('0x9'));var crypto=require(_0x3373('0xa'));var jsforce=require(_0x3373('0xb'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3373('0xc'));var Papa=require(_0x3373('0xd'));var Redis=require(_0x3373('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x3373('0xf'));var as=require(_0x3373('0x10'));var hardwareService=require(_0x3373('0x11'));var logger=require(_0x3373('0x12'))(_0x3373('0x13'));var utils=require(_0x3373('0x14'));var config=require(_0x3373('0x15'));var licenseUtil=require(_0x3373('0x16'));var db=require(_0x3373('0x17'))['db'];function respondWithStatusCode(_0x5840c3,_0x228595){_0x228595=_0x228595||0xcc;return function(_0x4fe740){if(_0x4fe740){return _0x5840c3['sendStatus'](_0x228595);}return _0x5840c3[_0x3373('0x18')](_0x228595)[_0x3373('0x19')]();};}function respondWithResult(_0xeaa94b,_0x1f3c11){_0x1f3c11=_0x1f3c11||0xc8;return function(_0x27d847){if(_0x27d847){return _0xeaa94b[_0x3373('0x18')](_0x1f3c11)[_0x3373('0x1a')](_0x27d847);}};}function respondWithFilteredResult(_0x39f557,_0xeeaa1e){return function(_0x55f491){if(_0x55f491){var _0x3eea0e=typeof _0xeeaa1e[_0x3373('0x1b')]===_0x3373('0x1c')&&typeof _0xeeaa1e['limit']===_0x3373('0x1c');var _0x4e7c5e=_0x55f491[_0x3373('0x1d')];var _0x27d475=_0x3eea0e?0x0:_0xeeaa1e[_0x3373('0x1b')];var _0x3cb1f3=_0x3eea0e?_0x55f491[_0x3373('0x1d')]:_0xeeaa1e[_0x3373('0x1b')]+_0xeeaa1e[_0x3373('0x1e')];var _0xbcea93;if(_0x3cb1f3>=_0x4e7c5e){_0x3cb1f3=_0x4e7c5e;_0xbcea93=0xc8;}else{_0xbcea93=0xce;}_0x39f557[_0x3373('0x18')](_0xbcea93);return _0x39f557[_0x3373('0x1f')](_0x3373('0x20'),_0x27d475+'-'+_0x3cb1f3+'/'+_0x4e7c5e)[_0x3373('0x1a')](_0x55f491);}return null;};}function patchUpdates(_0x533a63){return function(_0x271378){try{jsonpatch[_0x3373('0x21')](_0x271378,_0x533a63,!![]);}catch(_0x594a31){return BPromise[_0x3373('0x22')](_0x594a31);}return _0x271378[_0x3373('0x23')]();};}function saveUpdates(_0x35e540,_0x2695f9){return function(_0x16ddd9){if(_0x16ddd9){return _0x16ddd9['update'](_0x35e540)['then'](function(_0x446eb3){return _0x446eb3;});}return null;};}function removeEntity(_0xc06d1a,_0x3566cb){return function(_0x44c7d9){if(_0x44c7d9){return _0x44c7d9[_0x3373('0x24')]()['then'](function(){_0xc06d1a[_0x3373('0x18')](0xcc)[_0x3373('0x19')]();});}};}function handleEntityNotFound(_0x12ecfc,_0x2218a4){return function(_0x31ecf8){if(!_0x31ecf8){_0x12ecfc['sendStatus'](0x194);}return _0x31ecf8;};}function handleError(_0x193d49,_0x992b4f){_0x992b4f=_0x992b4f||0x1f4;return function(_0x137d30){logger['error'](_0x137d30[_0x3373('0x25')]);if(_0x137d30[_0x3373('0x26')]){delete _0x137d30[_0x3373('0x26')];}_0x193d49[_0x3373('0x18')](_0x992b4f)[_0x3373('0x27')](_0x137d30);};}exports[_0x3373('0x28')]=function(_0x29a506,_0x431929){var _0x511a50={},_0x469981={},_0x3aafc3={'count':0x0,'rows':[]};var _0x172795=_['map'](db[_0x3373('0x29')][_0x3373('0x2a')],function(_0x56456b){return{'name':_0x56456b[_0x3373('0x2b')],'type':_0x56456b['type'][_0x3373('0x2c')]};});_0x469981[_0x3373('0x2d')]=_[_0x3373('0x2e')](_0x172795,_0x3373('0x26'));_0x469981[_0x3373('0x2f')]=_[_0x3373('0x30')](_0x29a506[_0x3373('0x2f')]);_0x469981[_0x3373('0x31')]=_[_0x3373('0x32')](_0x469981[_0x3373('0x2d')],_0x469981[_0x3373('0x2f')]);_0x511a50[_0x3373('0x33')]=_[_0x3373('0x32')](_0x469981['model'],qs['fields'](_0x29a506[_0x3373('0x2f')][_0x3373('0x34')]));_0x511a50[_0x3373('0x33')]=_0x511a50['attributes'][_0x3373('0x35')]?_0x511a50['attributes']:_0x469981[_0x3373('0x2d')];if(!_0x29a506[_0x3373('0x2f')][_0x3373('0x36')](_0x3373('0x37'))){_0x511a50[_0x3373('0x1e')]=qs[_0x3373('0x1e')](_0x29a506[_0x3373('0x2f')][_0x3373('0x1e')]);_0x511a50[_0x3373('0x1b')]=qs[_0x3373('0x1b')](_0x29a506[_0x3373('0x2f')][_0x3373('0x1b')]);}_0x511a50[_0x3373('0x38')]=qs[_0x3373('0x39')](_0x29a506[_0x3373('0x2f')][_0x3373('0x39')]);_0x511a50[_0x3373('0x3a')]=qs[_0x3373('0x31')](_[_0x3373('0x3b')](_0x29a506[_0x3373('0x2f')],_0x469981[_0x3373('0x31')]),_0x172795);if(_0x29a506[_0x3373('0x2f')][_0x3373('0x3c')]){_0x511a50[_0x3373('0x3a')]=_['merge'](_0x511a50[_0x3373('0x3a')],{'$or':_[_0x3373('0x2e')](_0x172795,function(_0x1d3bd6){if(_0x1d3bd6[_0x3373('0x3d')]!=='VIRTUAL'){var _0x12b757={};_0x12b757[_0x1d3bd6['name']]={'$like':'%'+_0x29a506['query'][_0x3373('0x3c')]+'%'};return _0x12b757;}})});}_0x511a50=_['merge']({},_0x511a50,_0x29a506['options']);var _0x58aba2={'where':_0x511a50[_0x3373('0x3a')]};return db['AnalyticTreeReport'][_0x3373('0x1d')](_0x58aba2)[_0x3373('0x3e')](function(_0x403c11){_0x3aafc3[_0x3373('0x1d')]=_0x403c11;if(_0x29a506[_0x3373('0x2f')]['includeAll']){_0x511a50[_0x3373('0x3f')]=[{'all':!![]}];}return db[_0x3373('0x29')][_0x3373('0x40')](_0x511a50);})[_0x3373('0x3e')](function(_0x3738c4){_0x3aafc3['rows']=_0x3738c4;return _0x3aafc3;})[_0x3373('0x3e')](respondWithFilteredResult(_0x431929,_0x511a50))[_0x3373('0x41')](handleError(_0x431929,null));};exports[_0x3373('0x42')]=function(_0x6295ea,_0xcaf0f0){var _0x121199={'raw':!![],'where':{'id':_0x6295ea['params']['id']}},_0x3fe5b1={};_0x3fe5b1[_0x3373('0x2d')]=_[_0x3373('0x30')](db[_0x3373('0x29')]['rawAttributes']);_0x3fe5b1[_0x3373('0x2f')]=_[_0x3373('0x30')](_0x6295ea[_0x3373('0x2f')]);_0x3fe5b1[_0x3373('0x31')]=_['intersection'](_0x3fe5b1[_0x3373('0x2d')],_0x3fe5b1[_0x3373('0x2f')]);_0x121199[_0x3373('0x33')]=_[_0x3373('0x32')](_0x3fe5b1[_0x3373('0x2d')],qs[_0x3373('0x34')](_0x6295ea[_0x3373('0x2f')]['fields']));_0x121199['attributes']=_0x121199['attributes']['length']?_0x121199[_0x3373('0x33')]:_0x3fe5b1[_0x3373('0x2d')];if(_0x6295ea['query'][_0x3373('0x43')]){_0x121199['include']=[{'all':!![]}];}_0x121199=_[_0x3373('0x44')]({},_0x121199,_0x6295ea[_0x3373('0x45')]);return db['AnalyticTreeReport'][_0x3373('0x46')](_0x121199)[_0x3373('0x3e')](handleEntityNotFound(_0xcaf0f0,null))[_0x3373('0x3e')](respondWithResult(_0xcaf0f0,null))['catch'](handleError(_0xcaf0f0,null));};exports[_0x3373('0x47')]=function(_0x382742,_0x24a653){return db[_0x3373('0x29')][_0x3373('0x47')](_0x382742['body'],{})[_0x3373('0x3e')](respondWithResult(_0x24a653,0xc9))[_0x3373('0x41')](handleError(_0x24a653,null));};exports[_0x3373('0x48')]=function(_0x1281b2,_0x365fc9){if(_0x1281b2['body']['id']){delete _0x1281b2[_0x3373('0x49')]['id'];}return db['AnalyticTreeReport'][_0x3373('0x46')]({'where':{'id':_0x1281b2[_0x3373('0x4a')]['id']}})[_0x3373('0x3e')](handleEntityNotFound(_0x365fc9,null))['then'](saveUpdates(_0x1281b2['body'],null))[_0x3373('0x3e')](respondWithResult(_0x365fc9,null))['catch'](handleError(_0x365fc9,null));};exports[_0x3373('0x24')]=function(_0x19353b,_0x289b02){return db['AnalyticTreeReport'][_0x3373('0x46')]({'where':{'id':_0x19353b[_0x3373('0x4a')]['id']}})[_0x3373('0x3e')](handleEntityNotFound(_0x289b02,null))[_0x3373('0x3e')](removeEntity(_0x289b02,null))[_0x3373('0x41')](handleError(_0x289b02,null));};
\ No newline at end of file
index 7e76aef..bbc53ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa5cf=['bluebird','request-promise','path','rimraf','../../config/environment','exports','define','AnalyticTreeReport','lodash','../../config/logger','api'];(function(_0x4d672c,_0x15a6e0){var _0x22dc61=function(_0x1cc2f8){while(--_0x1cc2f8){_0x4d672c['push'](_0x4d672c['shift']());}};_0x22dc61(++_0x15a6e0);}(_0xa5cf,0x147));var _0xfa5c=function(_0x18f303,_0x11193d){_0x18f303=_0x18f303-0x0;var _0x140e66=_0xa5cf[_0x18f303];return _0x140e66;};'use strict';var _=require(_0xfa5c('0x0'));var util=require('util');var logger=require(_0xfa5c('0x1'))(_0xfa5c('0x2'));var moment=require('moment');var BPromise=require(_0xfa5c('0x3'));var rp=require(_0xfa5c('0x4'));var fs=require('fs');var path=require(_0xfa5c('0x5'));var rimraf=require(_0xfa5c('0x6'));var config=require(_0xfa5c('0x7'));var attributes=require('./analyticTreeReport.attributes');module[_0xfa5c('0x8')]=function(_0x208e2f,_0x4a074e){return _0x208e2f[_0xfa5c('0x9')](_0xfa5c('0xa'),attributes,{'tableName':'analytics_report_trees','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc3b5=['exports','define','AnalyticTreeReport','analytics_report_trees','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./analyticTreeReport.attributes'];(function(_0x496467,_0x546296){var _0x4bc682=function(_0x35f6c9){while(--_0x35f6c9){_0x496467['push'](_0x496467['shift']());}};_0x4bc682(++_0x546296);}(_0xc3b5,0xfb));var _0x5c3b=function(_0x1b2b18,_0x53b2bb){_0x1b2b18=_0x1b2b18-0x0;var _0x1e97ee=_0xc3b5[_0x1b2b18];return _0x1e97ee;};'use strict';var _=require('lodash');var util=require(_0x5c3b('0x0'));var logger=require(_0x5c3b('0x1'))(_0x5c3b('0x2'));var moment=require(_0x5c3b('0x3'));var BPromise=require(_0x5c3b('0x4'));var rp=require(_0x5c3b('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5c3b('0x6'));var config=require(_0x5c3b('0x7'));var attributes=require(_0x5c3b('0x8'));module[_0x5c3b('0x9')]=function(_0x34eb0f,_0x452bd8){return _0x34eb0f[_0x5c3b('0xa')](_0x5c3b('0xb'),attributes,{'tableName':_0x5c3b('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 66478cb..ada3b96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment'];(function(_0x2e0763,_0x37e6e4){var _0x189643=function(_0x20802b){while(--_0x20802b){_0x2e0763['push'](_0x2e0763['shift']());}};_0x189643(++_0x37e6e4);}(_0x2ef3,0xba));var _0x32ef=function(_0x2f1408,_0x744f53){_0x2f1408=_0x2f1408-0x0;var _0xfe1bfd=_0x2ef3[_0x2f1408];return _0xfe1bfd;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('AnalyticTreeReport,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('AnalyticTreeReport,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}
\ No newline at end of file
+var _0x2ef3=['bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','AnalyticTreeReport,\x20%s,\x20%s','AnalyticTreeReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment'];(function(_0xfa4aa2,_0x2f92b6){var _0x228b11=function(_0x3a991f){while(--_0x3a991f){_0xfa4aa2['push'](_0xfa4aa2['shift']());}};_0x228b11(++_0x2f92b6);}(_0x2ef3,0xba));var _0x32ef=function(_0x8dc7d0,_0x49b323){_0x8dc7d0=_0x8dc7d0-0x0;var _0x52070f=_0x2ef3[_0x8dc7d0];return _0x52070f;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2c0089,_0x4bfcf8,_0x367c39){return new BPromise(function(_0x2fb8eb,_0x234863){return client[_0x32ef('0xa')](_0x2c0089,_0x367c39)[_0x32ef('0xb')](function(_0x2bbb50){logger[_0x32ef('0xc')](_0x32ef('0xd'),_0x4bfcf8,'request\x20sent');logger['debug'](_0x32ef('0xe'),_0x4bfcf8,_0x32ef('0xf'),JSON[_0x32ef('0x10')](_0x2bbb50));if(_0x2bbb50[_0x32ef('0x11')]){if(_0x2bbb50['error'][_0x32ef('0x12')]===0x1f4){logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x234863(_0x2bbb50[_0x32ef('0x11')]['message']);}logger['error'](_0x32ef('0xd'),_0x4bfcf8,_0x2bbb50['error'][_0x32ef('0x13')]);return _0x2fb8eb(_0x2bbb50[_0x32ef('0x11')][_0x32ef('0x13')]);}else{logger[_0x32ef('0xc')]('AnalyticTreeReport,\x20%s,\x20%s',_0x4bfcf8,'request\x20sent');_0x2fb8eb(_0x2bbb50['result'][_0x32ef('0x13')]);}})[_0x32ef('0x14')](function(_0xb5aed2){logger['error']('AnalyticTreeReport,\x20%s,\x20%s',_0x4bfcf8,_0xb5aed2);_0x234863(_0xb5aed2);});});}
\ No newline at end of file
index 660188b..d5359ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc99f=['Router','fs-extra','../../components/interaction/service','../../config/environment','./analyticTreeReport.controller','isAuthenticated','/:id','create','put','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x21da75,_0x5c12f5){var _0x5ce5d6=function(_0xfcbd00){while(--_0xfcbd00){_0x21da75['push'](_0x21da75['shift']());}};_0x5ce5d6(++_0x5c12f5);}(_0xc99f,0x15b));var _0xfc99=function(_0x4cefbc,_0x3ffa6c){_0x4cefbc=_0x4cefbc-0x0;var _0x423c86=_0xc99f[_0x4cefbc];return _0x423c86;};'use strict';var multer=require(_0xfc99('0x0'));var util=require(_0xfc99('0x1'));var path=require(_0xfc99('0x2'));var timeout=require(_0xfc99('0x3'));var express=require(_0xfc99('0x4'));var router=express[_0xfc99('0x5')]();var fs_extra=require(_0xfc99('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xfc99('0x7'));var config=require(_0xfc99('0x8'));var controller=require(_0xfc99('0x9'));router['get']('/',auth[_0xfc99('0xa')](),controller['index']);router['get'](_0xfc99('0xb'),auth[_0xfc99('0xa')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xfc99('0xc')]);router[_0xfc99('0xd')](_0xfc99('0xb'),auth[_0xfc99('0xa')](),controller['update']);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xfc99('0xe')]);module[_0xfc99('0xf')]=router;
\ No newline at end of file
+var _0x81c8=['get','isAuthenticated','index','/:id','show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x37c22c,_0x28a70d){var _0x119d79=function(_0x243a13){while(--_0x243a13){_0x37c22c['push'](_0x37c22c['shift']());}};_0x119d79(++_0x28a70d);}(_0x81c8,0x97));var _0x881c=function(_0x3c5e6f,_0x5c1615){_0x3c5e6f=_0x3c5e6f-0x0;var _0x34b27c=_0x81c8[_0x3c5e6f];return _0x34b27c;};'use strict';var multer=require(_0x881c('0x0'));var util=require(_0x881c('0x1'));var path=require(_0x881c('0x2'));var timeout=require(_0x881c('0x3'));var express=require(_0x881c('0x4'));var router=express[_0x881c('0x5')]();var fs_extra=require(_0x881c('0x6'));var auth=require(_0x881c('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x881c('0x8'));var controller=require('./analyticTreeReport.controller');router[_0x881c('0x9')]('/',auth[_0x881c('0xa')](),controller[_0x881c('0xb')]);router['get'](_0x881c('0xc'),auth['isAuthenticated'](),controller[_0x881c('0xd')]);router[_0x881c('0xe')]('/',auth[_0x881c('0xa')](),controller[_0x881c('0xf')]);router[_0x881c('0x10')](_0x881c('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x881c('0x11')]('/:id',auth[_0x881c('0xa')](),controller[_0x881c('0x12')]);module[_0x881c('0x13')]=router;
\ No newline at end of file
index 484fa79..0e6eb9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3de0=['STRING','sequelize'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x3de0,0x143));var _0x03de=function(_0x5e8591,_0x36d1a7){_0x5e8591=_0x5e8591-0x0;var _0x4e8b8c=_0x3de0[_0x5e8591];return _0x4e8b8c;};'use strict';var Sequelize=require(_0x03de('0x0'));module['exports']={'name':{'type':Sequelize[_0x03de('0x1')]},'basename':{'type':Sequelize[_0x03de('0x1')]},'type':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x8fed=['STRING'];(function(_0x1dd7db,_0x43c3c8){var _0x772dbd=function(_0x12f917){while(--_0x12f917){_0x1dd7db['push'](_0x1dd7db['shift']());}};_0x772dbd(++_0x43c3c8);}(_0x8fed,0xf5));var _0xd8fe=function(_0x2fc01a,_0xe26628){_0x2fc01a=_0x2fc01a-0x0;var _0x4b6a6e=_0x8fed[_0x2fc01a];return _0x4b6a6e;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xd8fe('0x0')]},'basename':{'type':Sequelize[_0xd8fe('0x0')]},'type':{'type':Sequelize[_0xd8fe('0x0')]}};
\ No newline at end of file
index 0a9530a..21283dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb055=['params','keys','find','catch','get','omit','body','createdAt','create','update','file','originalname','basename','filename','type','mimetype','download','findOne','ChatOfflineMessageId','join','server/files/attachments/','offline-chat/','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','end','error','name','map','Attachment','rawAttributes','fieldName','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show'];(function(_0x2da7d0,_0x414fdc){var _0x223698=function(_0x882e80){while(--_0x882e80){_0x2da7d0['push'](_0x2da7d0['shift']());}};_0x223698(++_0x414fdc);}(_0xb055,0x1dd));var _0x5b05=function(_0x5bce1b,_0x22b3e1){_0x5bce1b=_0x5bce1b-0x0;var _0x264ccb=_0xb055[_0x5bce1b];return _0x264ccb;};'use strict';var emlformat=require(_0x5b05('0x0'));var rimraf=require(_0x5b05('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5b05('0x2'));var rp=require(_0x5b05('0x3'));var moment=require(_0x5b05('0x4'));var BPromise=require(_0x5b05('0x5'));var Mustache=require(_0x5b05('0x6'));var util=require(_0x5b05('0x7'));var path=require(_0x5b05('0x8'));var sox=require(_0x5b05('0x9'));var csv=require(_0x5b05('0xa'));var ejs=require(_0x5b05('0xb'));var fs=require('fs');var fs_extra=require(_0x5b05('0xc'));var _=require(_0x5b05('0xd'));var squel=require(_0x5b05('0xe'));var crypto=require('crypto');var jsforce=require(_0x5b05('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x5b05('0xa'));var querystring=require(_0x5b05('0x10'));var Papa=require('papaparse');var Redis=require(_0x5b05('0x11'));var authService=require(_0x5b05('0x12'));var qs=require(_0x5b05('0x13'));var as=require(_0x5b05('0x14'));var hardwareService=require(_0x5b05('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x5b05('0x16'));var config=require(_0x5b05('0x17'));var licenseUtil=require(_0x5b05('0x18'));var db=require(_0x5b05('0x19'))['db'];function respondWithStatusCode(_0x383672,_0x5d18f7){_0x5d18f7=_0x5d18f7||0xcc;return function(_0x225663){if(_0x225663){return _0x383672[_0x5b05('0x1a')](_0x5d18f7);}return _0x383672[_0x5b05('0x1b')](_0x5d18f7)['end']();};}function respondWithResult(_0x52631a,_0x36c4b5){_0x36c4b5=_0x36c4b5||0xc8;return function(_0x4f21f0){if(_0x4f21f0){return _0x52631a[_0x5b05('0x1b')](_0x36c4b5)[_0x5b05('0x1c')](_0x4f21f0);}};}function respondWithFilteredResult(_0x21d654,_0x2cfedf){return function(_0x50052b){if(_0x50052b){var _0x1c812c=typeof _0x2cfedf[_0x5b05('0x1d')]===_0x5b05('0x1e')&&typeof _0x2cfedf[_0x5b05('0x1f')]===_0x5b05('0x1e');var _0x503d03=_0x50052b[_0x5b05('0x20')];var _0x161ddc=_0x1c812c?0x0:_0x2cfedf[_0x5b05('0x1d')];var _0x41d4da=_0x1c812c?_0x50052b[_0x5b05('0x20')]:_0x2cfedf[_0x5b05('0x1d')]+_0x2cfedf[_0x5b05('0x1f')];var _0xe8e58d;if(_0x41d4da>=_0x503d03){_0x41d4da=_0x503d03;_0xe8e58d=0xc8;}else{_0xe8e58d=0xce;}_0x21d654[_0x5b05('0x1b')](_0xe8e58d);return _0x21d654[_0x5b05('0x21')](_0x5b05('0x22'),_0x161ddc+'-'+_0x41d4da+'/'+_0x503d03)[_0x5b05('0x1c')](_0x50052b);}return null;};}function patchUpdates(_0x50a8be){return function(_0x3953fe){try{jsonpatch['apply'](_0x3953fe,_0x50a8be,!![]);}catch(_0x297983){return BPromise[_0x5b05('0x23')](_0x297983);}return _0x3953fe[_0x5b05('0x24')]();};}function saveUpdates(_0x296e7f,_0x101a64){return function(_0x12dcb1){if(_0x12dcb1){return _0x12dcb1['update'](_0x296e7f)[_0x5b05('0x25')](function(_0x2fbad4){return _0x2fbad4;});}return null;};}function removeEntity(_0x47d14e,_0x1f6bf){return function(_0x3719bf){if(_0x3719bf){return _0x3719bf[_0x5b05('0x26')]()['then'](function(){_0x47d14e[_0x5b05('0x1b')](0xcc)[_0x5b05('0x27')]();});}};}function handleEntityNotFound(_0xe5b138,_0x4f85d6){return function(_0x2dda07){if(!_0x2dda07){_0xe5b138['sendStatus'](0x194);}return _0x2dda07;};}function handleError(_0x3dd700,_0x3e1738){_0x3e1738=_0x3e1738||0x1f4;return function(_0x25c21c){logger[_0x5b05('0x28')](_0x25c21c['stack']);if(_0x25c21c[_0x5b05('0x29')]){delete _0x25c21c[_0x5b05('0x29')];}_0x3dd700[_0x5b05('0x1b')](_0x3e1738)['send'](_0x25c21c);};}exports['index']=function(_0x3200b1,_0x25fbbf){var _0x358a0d={},_0x2d98ac={},_0x3315b9={'count':0x0,'rows':[]};var _0x5a4fc0=_[_0x5b05('0x2a')](db[_0x5b05('0x2b')][_0x5b05('0x2c')],function(_0x4daa56){return{'name':_0x4daa56[_0x5b05('0x2d')],'type':_0x4daa56['type'][_0x5b05('0x2e')]};});_0x2d98ac[_0x5b05('0x2f')]=_[_0x5b05('0x2a')](_0x5a4fc0,_0x5b05('0x29'));_0x2d98ac['query']=_['keys'](_0x3200b1[_0x5b05('0x30')]);_0x2d98ac['filters']=_[_0x5b05('0x31')](_0x2d98ac[_0x5b05('0x2f')],_0x2d98ac[_0x5b05('0x30')]);_0x358a0d[_0x5b05('0x32')]=_[_0x5b05('0x31')](_0x2d98ac[_0x5b05('0x2f')],qs[_0x5b05('0x33')](_0x3200b1[_0x5b05('0x30')][_0x5b05('0x33')]));_0x358a0d[_0x5b05('0x32')]=_0x358a0d[_0x5b05('0x32')][_0x5b05('0x34')]?_0x358a0d[_0x5b05('0x32')]:_0x2d98ac[_0x5b05('0x2f')];if(!_0x3200b1[_0x5b05('0x30')][_0x5b05('0x35')](_0x5b05('0x36'))){_0x358a0d['limit']=qs[_0x5b05('0x1f')](_0x3200b1['query']['limit']);_0x358a0d[_0x5b05('0x1d')]=qs['offset'](_0x3200b1['query'][_0x5b05('0x1d')]);}_0x358a0d[_0x5b05('0x37')]=qs[_0x5b05('0x38')](_0x3200b1[_0x5b05('0x30')][_0x5b05('0x38')]);_0x358a0d[_0x5b05('0x39')]=qs[_0x5b05('0x3a')](_[_0x5b05('0x3b')](_0x3200b1[_0x5b05('0x30')],_0x2d98ac[_0x5b05('0x3a')]),_0x5a4fc0);if(_0x3200b1[_0x5b05('0x30')][_0x5b05('0x3c')]){_0x358a0d[_0x5b05('0x39')]=_['merge'](_0x358a0d[_0x5b05('0x39')],{'$or':_[_0x5b05('0x2a')](_0x5a4fc0,function(_0x1a274a){if(_0x1a274a['type']!==_0x5b05('0x3d')){var _0x485e2d={};_0x485e2d[_0x1a274a[_0x5b05('0x29')]]={'$like':'%'+_0x3200b1['query']['filter']+'%'};return _0x485e2d;}})});}_0x358a0d=_[_0x5b05('0x3e')]({},_0x358a0d,_0x3200b1[_0x5b05('0x3f')]);var _0x55f3d2={'where':_0x358a0d[_0x5b05('0x39')]};return db[_0x5b05('0x2b')]['count'](_0x55f3d2)[_0x5b05('0x25')](function(_0x2a5f21){_0x3315b9[_0x5b05('0x20')]=_0x2a5f21;if(_0x3200b1[_0x5b05('0x30')][_0x5b05('0x40')]){_0x358a0d[_0x5b05('0x41')]=[{'all':!![]}];}return db['Attachment'][_0x5b05('0x42')](_0x358a0d);})['then'](function(_0x93a095){_0x3315b9[_0x5b05('0x43')]=_0x93a095;return _0x3315b9;})['then'](respondWithFilteredResult(_0x25fbbf,_0x358a0d))['catch'](handleError(_0x25fbbf,null));};exports[_0x5b05('0x44')]=function(_0x5b14e6,_0x26e29f){var _0x27418d={'raw':!![],'where':{'id':_0x5b14e6[_0x5b05('0x45')]['id']}},_0xcdea13={};_0xcdea13[_0x5b05('0x2f')]=_[_0x5b05('0x46')](db[_0x5b05('0x2b')][_0x5b05('0x2c')]);_0xcdea13[_0x5b05('0x30')]=_[_0x5b05('0x46')](_0x5b14e6['query']);_0xcdea13[_0x5b05('0x3a')]=_[_0x5b05('0x31')](_0xcdea13[_0x5b05('0x2f')],_0xcdea13[_0x5b05('0x30')]);_0x27418d[_0x5b05('0x32')]=_[_0x5b05('0x31')](_0xcdea13[_0x5b05('0x2f')],qs[_0x5b05('0x33')](_0x5b14e6[_0x5b05('0x30')][_0x5b05('0x33')]));_0x27418d[_0x5b05('0x32')]=_0x27418d['attributes']['length']?_0x27418d[_0x5b05('0x32')]:_0xcdea13[_0x5b05('0x2f')];if(_0x5b14e6[_0x5b05('0x30')][_0x5b05('0x40')]){_0x27418d['include']=[{'all':!![]}];}_0x27418d=_[_0x5b05('0x3e')]({},_0x27418d,_0x5b14e6[_0x5b05('0x3f')]);return db['Attachment'][_0x5b05('0x47')](_0x27418d)['then'](handleEntityNotFound(_0x26e29f,null))[_0x5b05('0x25')](respondWithResult(_0x26e29f,null))[_0x5b05('0x48')](handleError(_0x26e29f,null));};exports['clone']=function(_0x383300,_0x301c9d){var _0x2a811a={'where':{'id':_0x383300[_0x5b05('0x45')]['id']}},_0x5bae91={};_0x5bae91[_0x5b05('0x2f')]=_['keys'](db['Attachment']['rawAttributes']);_0x2a811a['attributes']=_[_0x5b05('0x31')](_0x5bae91[_0x5b05('0x2f')],qs[_0x5b05('0x33')](_0x383300[_0x5b05('0x30')][_0x5b05('0x33')]));_0x2a811a[_0x5b05('0x32')]=_0x2a811a['attributes'][_0x5b05('0x34')]?_0x2a811a[_0x5b05('0x32')]:_0x5bae91[_0x5b05('0x2f')];if(_0x383300['query']['includeAll']){_0x2a811a[_0x5b05('0x41')]=[{'all':!![]}];}_0x2a811a=_[_0x5b05('0x3e')]({},_0x2a811a,_0x383300['options']);return db[_0x5b05('0x2b')][_0x5b05('0x47')](_0x2a811a)['then'](handleEntityNotFound(_0x301c9d,null))[_0x5b05('0x25')](function(_0x380d7e){if(_0x380d7e){var _0x2f0a03=_0x380d7e[_0x5b05('0x49')]({'plain':!![]});_0x2f0a03=qs[_0x5b05('0x4a')](_0x2f0a03,['id','createdAt','updatedAt']);_0x383300[_0x5b05('0x4b')]=_[_0x5b05('0x4a')](_0x383300[_0x5b05('0x4b')],['id',_0x5b05('0x4c'),'updatedAt']);return db[_0x5b05('0x2b')][_0x5b05('0x4d')](_[_0x5b05('0x3e')](_0x2f0a03,_0x383300[_0x5b05('0x4b')]),{'include':_0x383300['query'][_0x5b05('0x40')]?[{'all':!![]}]:undefined});}})[_0x5b05('0x25')](respondWithResult(_0x301c9d,0xc9))['catch'](handleError(_0x301c9d,null));};exports[_0x5b05('0x4e')]=function(_0x54a6e3,_0x45cdf1){if(_0x54a6e3[_0x5b05('0x4b')]['id']){delete _0x54a6e3[_0x5b05('0x4b')]['id'];}return db['Attachment']['find']({'where':{'id':_0x54a6e3[_0x5b05('0x45')]['id']}})['then'](handleEntityNotFound(_0x45cdf1,null))[_0x5b05('0x25')](saveUpdates(_0x54a6e3['body'],null))[_0x5b05('0x25')](respondWithResult(_0x45cdf1,null))[_0x5b05('0x48')](handleError(_0x45cdf1,null));};exports['destroy']=function(_0x589e16,_0x3bca10){return db[_0x5b05('0x2b')][_0x5b05('0x47')]({'where':{'id':_0x589e16[_0x5b05('0x45')]['id']}})[_0x5b05('0x25')](handleEntityNotFound(_0x3bca10,null))[_0x5b05('0x25')](removeEntity(_0x3bca10,null))[_0x5b05('0x48')](handleError(_0x3bca10,null));};exports[_0x5b05('0x4d')]=function(_0x17c93c,_0x4cf360,_0x2bcfa7){_0x17c93c[_0x5b05('0x4b')][_0x5b05('0x29')]=_0x17c93c[_0x5b05('0x4f')][_0x5b05('0x50')];_0x17c93c['body'][_0x5b05('0x51')]=_0x17c93c['file'][_0x5b05('0x52')];_0x17c93c[_0x5b05('0x4b')][_0x5b05('0x53')]=_0x17c93c[_0x5b05('0x4f')][_0x5b05('0x54')];return db[_0x5b05('0x2b')][_0x5b05('0x4d')](_0x17c93c[_0x5b05('0x4b')])[_0x5b05('0x25')](respondWithResult(_0x4cf360,0xc9))[_0x5b05('0x48')](handleError(_0x4cf360,null));};exports[_0x5b05('0x55')]=function(_0x5697de,_0x2a3223,_0x11430d){return db[_0x5b05('0x2b')][_0x5b05('0x56')]({'where':{'id':_0x5697de[_0x5b05('0x45')]['id']},'raw':!![]})[_0x5b05('0x25')](handleEntityNotFound(_0x2a3223,null))[_0x5b05('0x25')](function(_0xdb96e2){if(_0xdb96e2){var _0x7c9cce=_0xdb96e2[_0x5b05('0x57')]!==null;var _0x508985=path[_0x5b05('0x58')](config['root'],_0x5b05('0x59'));if(_0x7c9cce){_0x508985=path[_0x5b05('0x58')](_0x508985,_0x5b05('0x5a'));}var _0x11efc0=path['join'](_0x508985,_0xdb96e2[_0x5b05('0x51')]);return _0x2a3223[_0x5b05('0x55')](_0x11efc0);}})[_0x5b05('0x48')](handleError(_0x2a3223,null));};
\ No newline at end of file
+var _0x6706=['basename','file','filename','mimetype','findOne','root','server/files/attachments/','offline-chat/','download','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','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','offset','undefined','count','limit','set','Content-Range','reject','save','update','destroy','error','stack','send','index','map','Attachment','rawAttributes','fieldName','type','model','name','keys','filters','intersection','fields','query','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','then','includeAll','include','findAll','show','params','catch','clone','find','get','omit','createdAt','updatedAt','body','create','originalname'];(function(_0x1cbcb2,_0x1237a3){var _0x41ac9f=function(_0xe32e6f){while(--_0xe32e6f){_0x1cbcb2['push'](_0x1cbcb2['shift']());}};_0x41ac9f(++_0x1237a3);}(_0x6706,0x181));var _0x6670=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x6706[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x6670('0x0'));var rimraf=require(_0x6670('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6670('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x6670('0x3'));var Mustache=require(_0x6670('0x4'));var util=require(_0x6670('0x5'));var path=require(_0x6670('0x6'));var sox=require(_0x6670('0x7'));var csv=require('to-csv');var ejs=require(_0x6670('0x8'));var fs=require('fs');var fs_extra=require(_0x6670('0x9'));var _=require(_0x6670('0xa'));var squel=require(_0x6670('0xb'));var crypto=require(_0x6670('0xc'));var jsforce=require(_0x6670('0xd'));var deskjs=require(_0x6670('0xe'));var toCsv=require(_0x6670('0xf'));var querystring=require(_0x6670('0x10'));var Papa=require(_0x6670('0x11'));var Redis=require('ioredis');var authService=require(_0x6670('0x12'));var qs=require(_0x6670('0x13'));var as=require(_0x6670('0x14'));var hardwareService=require(_0x6670('0x15'));var logger=require(_0x6670('0x16'))(_0x6670('0x17'));var utils=require(_0x6670('0x18'));var config=require(_0x6670('0x19'));var licenseUtil=require(_0x6670('0x1a'));var db=require(_0x6670('0x1b'))['db'];function respondWithStatusCode(_0x18a508,_0x1c40a8){_0x1c40a8=_0x1c40a8||0xcc;return function(_0x16806a){if(_0x16806a){return _0x18a508[_0x6670('0x1c')](_0x1c40a8);}return _0x18a508[_0x6670('0x1d')](_0x1c40a8)[_0x6670('0x1e')]();};}function respondWithResult(_0x5a510e,_0x497e1a){_0x497e1a=_0x497e1a||0xc8;return function(_0x40b0a5){if(_0x40b0a5){return _0x5a510e[_0x6670('0x1d')](_0x497e1a)[_0x6670('0x1f')](_0x40b0a5);}};}function respondWithFilteredResult(_0x55973f,_0x81e63){return function(_0x21b96f){if(_0x21b96f){var _0x3cbbae=typeof _0x81e63[_0x6670('0x20')]===_0x6670('0x21')&&typeof _0x81e63['limit']===_0x6670('0x21');var _0x2dfb6f=_0x21b96f[_0x6670('0x22')];var _0x5ece22=_0x3cbbae?0x0:_0x81e63[_0x6670('0x20')];var _0x32a7c7=_0x3cbbae?_0x21b96f[_0x6670('0x22')]:_0x81e63[_0x6670('0x20')]+_0x81e63[_0x6670('0x23')];var _0x3d1e8c;if(_0x32a7c7>=_0x2dfb6f){_0x32a7c7=_0x2dfb6f;_0x3d1e8c=0xc8;}else{_0x3d1e8c=0xce;}_0x55973f['status'](_0x3d1e8c);return _0x55973f[_0x6670('0x24')](_0x6670('0x25'),_0x5ece22+'-'+_0x32a7c7+'/'+_0x2dfb6f)[_0x6670('0x1f')](_0x21b96f);}return null;};}function patchUpdates(_0x36b68d){return function(_0x1370c8){try{jsonpatch['apply'](_0x1370c8,_0x36b68d,!![]);}catch(_0x298595){return BPromise[_0x6670('0x26')](_0x298595);}return _0x1370c8[_0x6670('0x27')]();};}function saveUpdates(_0x45beaa,_0x25d1ad){return function(_0x2ba99a){if(_0x2ba99a){return _0x2ba99a[_0x6670('0x28')](_0x45beaa)['then'](function(_0x1bc780){return _0x1bc780;});}return null;};}function removeEntity(_0x4e2547,_0x3fb274){return function(_0x359b84){if(_0x359b84){return _0x359b84[_0x6670('0x29')]()['then'](function(){_0x4e2547['status'](0xcc)[_0x6670('0x1e')]();});}};}function handleEntityNotFound(_0x2815ea,_0x3b8d99){return function(_0x4f0743){if(!_0x4f0743){_0x2815ea['sendStatus'](0x194);}return _0x4f0743;};}function handleError(_0x510357,_0x1deb5b){_0x1deb5b=_0x1deb5b||0x1f4;return function(_0x3a8d5b){logger[_0x6670('0x2a')](_0x3a8d5b[_0x6670('0x2b')]);if(_0x3a8d5b['name']){delete _0x3a8d5b['name'];}_0x510357[_0x6670('0x1d')](_0x1deb5b)[_0x6670('0x2c')](_0x3a8d5b);};}exports[_0x6670('0x2d')]=function(_0x308bd8,_0x45f50b){var _0x20d562={},_0x4ceb09={},_0x1a4889={'count':0x0,'rows':[]};var _0x4f2fd8=_[_0x6670('0x2e')](db[_0x6670('0x2f')][_0x6670('0x30')],function(_0x1dcb5f){return{'name':_0x1dcb5f[_0x6670('0x31')],'type':_0x1dcb5f[_0x6670('0x32')]['key']};});_0x4ceb09[_0x6670('0x33')]=_[_0x6670('0x2e')](_0x4f2fd8,_0x6670('0x34'));_0x4ceb09['query']=_[_0x6670('0x35')](_0x308bd8['query']);_0x4ceb09[_0x6670('0x36')]=_[_0x6670('0x37')](_0x4ceb09[_0x6670('0x33')],_0x4ceb09['query']);_0x20d562['attributes']=_[_0x6670('0x37')](_0x4ceb09['model'],qs[_0x6670('0x38')](_0x308bd8[_0x6670('0x39')][_0x6670('0x38')]));_0x20d562['attributes']=_0x20d562[_0x6670('0x3a')][_0x6670('0x3b')]?_0x20d562[_0x6670('0x3a')]:_0x4ceb09[_0x6670('0x33')];if(!_0x308bd8[_0x6670('0x39')][_0x6670('0x3c')](_0x6670('0x3d'))){_0x20d562[_0x6670('0x23')]=qs['limit'](_0x308bd8[_0x6670('0x39')]['limit']);_0x20d562[_0x6670('0x20')]=qs[_0x6670('0x20')](_0x308bd8[_0x6670('0x39')][_0x6670('0x20')]);}_0x20d562[_0x6670('0x3e')]=qs[_0x6670('0x3f')](_0x308bd8[_0x6670('0x39')][_0x6670('0x3f')]);_0x20d562[_0x6670('0x40')]=qs[_0x6670('0x36')](_['pick'](_0x308bd8['query'],_0x4ceb09['filters']),_0x4f2fd8);if(_0x308bd8[_0x6670('0x39')][_0x6670('0x41')]){_0x20d562['where']=_[_0x6670('0x42')](_0x20d562[_0x6670('0x40')],{'$or':_['map'](_0x4f2fd8,function(_0x5192ac){if(_0x5192ac['type']!==_0x6670('0x43')){var _0xc38d58={};_0xc38d58[_0x5192ac[_0x6670('0x34')]]={'$like':'%'+_0x308bd8[_0x6670('0x39')][_0x6670('0x41')]+'%'};return _0xc38d58;}})});}_0x20d562=_[_0x6670('0x42')]({},_0x20d562,_0x308bd8[_0x6670('0x44')]);var _0x428f0a={'where':_0x20d562['where']};return db[_0x6670('0x2f')][_0x6670('0x22')](_0x428f0a)[_0x6670('0x45')](function(_0x520f15){_0x1a4889[_0x6670('0x22')]=_0x520f15;if(_0x308bd8[_0x6670('0x39')][_0x6670('0x46')]){_0x20d562[_0x6670('0x47')]=[{'all':!![]}];}return db[_0x6670('0x2f')][_0x6670('0x48')](_0x20d562);})['then'](function(_0x50e43c){_0x1a4889['rows']=_0x50e43c;return _0x1a4889;})[_0x6670('0x45')](respondWithFilteredResult(_0x45f50b,_0x20d562))['catch'](handleError(_0x45f50b,null));};exports[_0x6670('0x49')]=function(_0x39d56e,_0x13c49b){var _0x2186f9={'raw':!![],'where':{'id':_0x39d56e[_0x6670('0x4a')]['id']}},_0x328ef5={};_0x328ef5['model']=_['keys'](db[_0x6670('0x2f')][_0x6670('0x30')]);_0x328ef5['query']=_['keys'](_0x39d56e[_0x6670('0x39')]);_0x328ef5['filters']=_[_0x6670('0x37')](_0x328ef5[_0x6670('0x33')],_0x328ef5[_0x6670('0x39')]);_0x2186f9['attributes']=_['intersection'](_0x328ef5[_0x6670('0x33')],qs[_0x6670('0x38')](_0x39d56e[_0x6670('0x39')][_0x6670('0x38')]));_0x2186f9[_0x6670('0x3a')]=_0x2186f9[_0x6670('0x3a')][_0x6670('0x3b')]?_0x2186f9[_0x6670('0x3a')]:_0x328ef5['model'];if(_0x39d56e[_0x6670('0x39')]['includeAll']){_0x2186f9[_0x6670('0x47')]=[{'all':!![]}];}_0x2186f9=_[_0x6670('0x42')]({},_0x2186f9,_0x39d56e[_0x6670('0x44')]);return db[_0x6670('0x2f')]['find'](_0x2186f9)[_0x6670('0x45')](handleEntityNotFound(_0x13c49b,null))[_0x6670('0x45')](respondWithResult(_0x13c49b,null))[_0x6670('0x4b')](handleError(_0x13c49b,null));};exports[_0x6670('0x4c')]=function(_0x310b43,_0xb50f79){var _0x1fa1a5={'where':{'id':_0x310b43[_0x6670('0x4a')]['id']}},_0x329683={};_0x329683[_0x6670('0x33')]=_[_0x6670('0x35')](db[_0x6670('0x2f')][_0x6670('0x30')]);_0x1fa1a5[_0x6670('0x3a')]=_[_0x6670('0x37')](_0x329683[_0x6670('0x33')],qs[_0x6670('0x38')](_0x310b43['query'][_0x6670('0x38')]));_0x1fa1a5['attributes']=_0x1fa1a5[_0x6670('0x3a')]['length']?_0x1fa1a5['attributes']:_0x329683['model'];if(_0x310b43[_0x6670('0x39')][_0x6670('0x46')]){_0x1fa1a5[_0x6670('0x47')]=[{'all':!![]}];}_0x1fa1a5=_['merge']({},_0x1fa1a5,_0x310b43[_0x6670('0x44')]);return db['Attachment'][_0x6670('0x4d')](_0x1fa1a5)[_0x6670('0x45')](handleEntityNotFound(_0xb50f79,null))[_0x6670('0x45')](function(_0x286936){if(_0x286936){var _0x2b1867=_0x286936[_0x6670('0x4e')]({'plain':!![]});_0x2b1867=qs[_0x6670('0x4f')](_0x2b1867,['id',_0x6670('0x50'),_0x6670('0x51')]);_0x310b43[_0x6670('0x52')]=_[_0x6670('0x4f')](_0x310b43[_0x6670('0x52')],['id','createdAt','updatedAt']);return db[_0x6670('0x2f')][_0x6670('0x53')](_[_0x6670('0x42')](_0x2b1867,_0x310b43['body']),{'include':_0x310b43['query']['includeAll']?[{'all':!![]}]:undefined});}})[_0x6670('0x45')](respondWithResult(_0xb50f79,0xc9))[_0x6670('0x4b')](handleError(_0xb50f79,null));};exports[_0x6670('0x28')]=function(_0x575d2c,_0x46febc){if(_0x575d2c['body']['id']){delete _0x575d2c['body']['id'];}return db['Attachment']['find']({'where':{'id':_0x575d2c[_0x6670('0x4a')]['id']}})['then'](handleEntityNotFound(_0x46febc,null))[_0x6670('0x45')](saveUpdates(_0x575d2c[_0x6670('0x52')],null))[_0x6670('0x45')](respondWithResult(_0x46febc,null))[_0x6670('0x4b')](handleError(_0x46febc,null));};exports[_0x6670('0x29')]=function(_0x20547d,_0x51ee67){return db[_0x6670('0x2f')]['find']({'where':{'id':_0x20547d['params']['id']}})['then'](handleEntityNotFound(_0x51ee67,null))[_0x6670('0x45')](removeEntity(_0x51ee67,null))[_0x6670('0x4b')](handleError(_0x51ee67,null));};exports['create']=function(_0x5430a5,_0x1c4203,_0x54e411){_0x5430a5[_0x6670('0x52')][_0x6670('0x34')]=_0x5430a5['file'][_0x6670('0x54')];_0x5430a5['body'][_0x6670('0x55')]=_0x5430a5[_0x6670('0x56')][_0x6670('0x57')];_0x5430a5['body'][_0x6670('0x32')]=_0x5430a5['file'][_0x6670('0x58')];return db[_0x6670('0x2f')]['create'](_0x5430a5[_0x6670('0x52')])[_0x6670('0x45')](respondWithResult(_0x1c4203,0xc9))['catch'](handleError(_0x1c4203,null));};exports['download']=function(_0x4486c4,_0x2090fa,_0x841af3){return db[_0x6670('0x2f')][_0x6670('0x59')]({'where':{'id':_0x4486c4[_0x6670('0x4a')]['id']},'raw':!![]})[_0x6670('0x45')](handleEntityNotFound(_0x2090fa,null))[_0x6670('0x45')](function(_0x9877ab){if(_0x9877ab){var _0x2c5652=_0x9877ab['ChatOfflineMessageId']!==null;var _0x3fa17f=path['join'](config[_0x6670('0x5a')],_0x6670('0x5b'));if(_0x2c5652){_0x3fa17f=path['join'](_0x3fa17f,_0x6670('0x5c'));}var _0x1c6bf3=path['join'](_0x3fa17f,_0x9877ab['basename']);return _0x2090fa[_0x6670('0x5d')](_0x1c6bf3);}})['catch'](handleError(_0x2090fa,null));};
\ No newline at end of file
index 9cc78ac..a60a80d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9246=['api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./attachment.attributes','exports','define','Attachment','attachments','lodash','util','../../config/logger'];(function(_0x1cf1c7,_0x1e0f72){var _0x362b0a=function(_0xfec7cd){while(--_0xfec7cd){_0x1cf1c7['push'](_0x1cf1c7['shift']());}};_0x362b0a(++_0x1e0f72);}(_0x9246,0x138));var _0x6924=function(_0x39e283,_0x247e6b){_0x39e283=_0x39e283-0x0;var _0x7de89f=_0x9246[_0x39e283];return _0x7de89f;};'use strict';var _=require(_0x6924('0x0'));var util=require(_0x6924('0x1'));var logger=require(_0x6924('0x2'))(_0x6924('0x3'));var moment=require(_0x6924('0x4'));var BPromise=require(_0x6924('0x5'));var rp=require(_0x6924('0x6'));var fs=require('fs');var path=require(_0x6924('0x7'));var rimraf=require(_0x6924('0x8'));var config=require(_0x6924('0x9'));var attributes=require(_0x6924('0xa'));module[_0x6924('0xb')]=function(_0x55a1f7,_0x448de1){return _0x55a1f7[_0x6924('0xc')](_0x6924('0xd'),attributes,{'tableName':_0x6924('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x795f=['moment','bluebird','request-promise','rimraf','exports','Attachment','util'];(function(_0x53b497,_0x2815a1){var _0x2b9b63=function(_0x34d9ab){while(--_0x34d9ab){_0x53b497['push'](_0x53b497['shift']());}};_0x2b9b63(++_0x2815a1);}(_0x795f,0x68));var _0xf795=function(_0x227d6b,_0x4deec6){_0x227d6b=_0x227d6b-0x0;var _0x64ffd=_0x795f[_0x227d6b];return _0x64ffd;};'use strict';var _=require('lodash');var util=require(_0xf795('0x0'));var logger=require('../../config/logger')('api');var moment=require(_0xf795('0x1'));var BPromise=require(_0xf795('0x2'));var rp=require(_0xf795('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf795('0x4'));var config=require('../../config/environment');var attributes=require('./attachment.attributes');module[_0xf795('0x5')]=function(_0x4bdb11,_0x4502c3){return _0x4bdb11['define'](_0xf795('0x6'),attributes,{'tableName':'attachments','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c12b40a..738bb76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9ad=['Attachment,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','Attachment','body','options','raw','CreateAttachment','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info'];(function(_0x25c1a7,_0x451c36){var _0x908943=function(_0x24d71b){while(--_0x24d71b){_0x25c1a7['push'](_0x25c1a7['shift']());}};_0x908943(++_0x451c36);}(_0xe9ad,0x82));var _0xde9a=function(_0x2ffc46,_0x35ce3c){_0x2ffc46=_0x2ffc46-0x0;var _0x1eda8f=_0xe9ad[_0x2ffc46];return _0x1eda8f;};'use strict';var _=require(_0xde9a('0x0'));var util=require(_0xde9a('0x1'));var moment=require(_0xde9a('0x2'));var BPromise=require(_0xde9a('0x3'));var rs=require(_0xde9a('0x4'));var fs=require('fs');var Redis=require(_0xde9a('0x5'));var db=require(_0xde9a('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0xde9a('0x7'))(_0xde9a('0x8'));var config=require(_0xde9a('0x9'));var jayson=require(_0xde9a('0xa'));var client=jayson['client'][_0xde9a('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2bb666,_0xd47b9c,_0x5d4412){return new BPromise(function(_0x45d4a7,_0x17f89b){return client[_0xde9a('0xc')](_0x2bb666,_0x5d4412)[_0xde9a('0xd')](function(_0x297975){logger[_0xde9a('0xe')](_0xde9a('0xf'),_0xd47b9c,_0xde9a('0x10'));logger[_0xde9a('0x11')]('Attachment,\x20%s,\x20%s,\x20%s',_0xd47b9c,_0xde9a('0x10'),JSON[_0xde9a('0x12')](_0x297975));if(_0x297975[_0xde9a('0x13')]){if(_0x297975[_0xde9a('0x13')][_0xde9a('0x14')]===0x1f4){logger[_0xde9a('0x13')](_0xde9a('0xf'),_0xd47b9c,_0x297975[_0xde9a('0x13')][_0xde9a('0x15')]);return _0x17f89b(_0x297975['error'][_0xde9a('0x15')]);}logger[_0xde9a('0x13')](_0xde9a('0xf'),_0xd47b9c,_0x297975[_0xde9a('0x13')][_0xde9a('0x15')]);return _0x45d4a7(_0x297975[_0xde9a('0x13')][_0xde9a('0x15')]);}else{logger[_0xde9a('0xe')](_0xde9a('0xf'),_0xd47b9c,_0xde9a('0x10'));_0x45d4a7(_0x297975[_0xde9a('0x16')][_0xde9a('0x15')]);}})[_0xde9a('0x17')](function(_0x39e1d0){logger[_0xde9a('0x13')](_0xde9a('0xf'),_0xd47b9c,_0x39e1d0);_0x17f89b(_0x39e1d0);});});}exports['CreateAttachment']=function(_0x12ba7f){var _0x2714a9=this;return new Promise(function(_0x3b89ef,_0x57613b){return db[_0xde9a('0x18')]['create'](_0x12ba7f[_0xde9a('0x19')],{'raw':_0x12ba7f['options']?_0x12ba7f[_0xde9a('0x1a')][_0xde9a('0x1b')]===undefined?!![]:![]:!![]})[_0xde9a('0xd')](function(_0x4add81){logger[_0xde9a('0xe')](_0xde9a('0x1c'),_0x12ba7f);logger['debug']('CreateAttachment',_0x12ba7f,JSON[_0xde9a('0x12')](_0x4add81));_0x3b89ef(_0x4add81);})[_0xde9a('0x17')](function(_0x56550b){logger[_0xde9a('0x13')](_0xde9a('0x1c'),_0x56550b[_0xde9a('0x15')],_0x12ba7f);_0x57613b(_0x2714a9[_0xde9a('0x13')](0x1f4,_0x56550b[_0xde9a('0x15')]));});});};
\ No newline at end of file
+var _0x9990=['request\x20sent','Attachment,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateAttachment','Attachment','create','body','options','raw','debug','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','info','Attachment,\x20%s,\x20%s'];(function(_0x2d0bd4,_0x3aa559){var _0x5b5893=function(_0x44d2cb){while(--_0x44d2cb){_0x2d0bd4['push'](_0x2d0bd4['shift']());}};_0x5b5893(++_0x3aa559);}(_0x9990,0xf6));var _0x0999=function(_0x1cd095,_0x43af58){_0x1cd095=_0x1cd095-0x0;var _0x2b1bcb=_0x9990[_0x1cd095];return _0x2b1bcb;};'use strict';var _=require('lodash');var util=require(_0x0999('0x0'));var moment=require(_0x0999('0x1'));var BPromise=require(_0x0999('0x2'));var rs=require(_0x0999('0x3'));var fs=require('fs');var Redis=require(_0x0999('0x4'));var db=require(_0x0999('0x5'))['db'];var utils=require(_0x0999('0x6'));var logger=require(_0x0999('0x7'))('rpc');var config=require(_0x0999('0x8'));var jayson=require(_0x0999('0x9'));var client=jayson[_0x0999('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1a6f23,_0xb1d8f9,_0x3fe805){return new BPromise(function(_0x304f75,_0x384a4e){return client[_0x0999('0xb')](_0x1a6f23,_0x3fe805)[_0x0999('0xc')](function(_0x52d196){logger[_0x0999('0xd')](_0x0999('0xe'),_0xb1d8f9,_0x0999('0xf'));logger['debug'](_0x0999('0x10'),_0xb1d8f9,_0x0999('0xf'),JSON[_0x0999('0x11')](_0x52d196));if(_0x52d196['error']){if(_0x52d196[_0x0999('0x12')]['code']===0x1f4){logger[_0x0999('0x12')](_0x0999('0xe'),_0xb1d8f9,_0x52d196[_0x0999('0x12')][_0x0999('0x13')]);return _0x384a4e(_0x52d196[_0x0999('0x12')]['message']);}logger[_0x0999('0x12')](_0x0999('0xe'),_0xb1d8f9,_0x52d196[_0x0999('0x12')][_0x0999('0x13')]);return _0x304f75(_0x52d196[_0x0999('0x12')]['message']);}else{logger[_0x0999('0xd')](_0x0999('0xe'),_0xb1d8f9,_0x0999('0xf'));_0x304f75(_0x52d196[_0x0999('0x14')][_0x0999('0x13')]);}})[_0x0999('0x15')](function(_0x2fa43e){logger['error'](_0x0999('0xe'),_0xb1d8f9,_0x2fa43e);_0x384a4e(_0x2fa43e);});});}exports[_0x0999('0x16')]=function(_0x4f6440){var _0x107573=this;return new Promise(function(_0x5b14a3,_0x56373e){return db[_0x0999('0x17')][_0x0999('0x18')](_0x4f6440[_0x0999('0x19')],{'raw':_0x4f6440[_0x0999('0x1a')]?_0x4f6440[_0x0999('0x1a')][_0x0999('0x1b')]===undefined?!![]:![]:!![]})[_0x0999('0xc')](function(_0x113017){logger[_0x0999('0xd')]('CreateAttachment',_0x4f6440);logger[_0x0999('0x1c')](_0x0999('0x16'),_0x4f6440,JSON['stringify'](_0x113017));_0x5b14a3(_0x113017);})['catch'](function(_0x19ddc0){logger[_0x0999('0x12')](_0x0999('0x16'),_0x19ddc0[_0x0999('0x13')],_0x4f6440);_0x56373e(_0x107573[_0x0999('0x12')](0x1f4,_0x19ddc0[_0x0999('0x13')]));});});};
\ No newline at end of file
index 3603616..735fba2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['./attachment.controller','get','isAuthenticated','index','/:id','show','download','/:id/clone','clone','root','server/files/attachments/','now','post','single','file','create','put','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment'];(function(_0x5d7f6a,_0x23efa0){var _0x2227b0=function(_0x4369c9){while(--_0x4369c9){_0x5d7f6a['push'](_0x5d7f6a['shift']());}};_0x2227b0(++_0x23efa0);}(_0x2032,0xd9));var _0x2203=function(_0x500dd4,_0x1f92f0){_0x500dd4=_0x500dd4-0x0;var _0xd96dfc=_0x2032[_0x500dd4];return _0xd96dfc;};'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('0x8')]('/:id/download',auth['isAuthenticated'](),controller[_0x2203('0xd')]);router['post'](_0x2203('0xe'),auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x849049,_0x4a6832,_0x3f690a){_0x3f690a(null,path['join'](config[_0x2203('0x10')],_0x2203('0x11')));},'filename':function(_0x4b9376,_0x583bc7,_0x585c76){_0x585c76(null,util['format']('%s-%s',Date[_0x2203('0x12')](),_0x583bc7['originalname']['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x2203('0x13')]('/',upload[_0x2203('0x14')](_0x2203('0x15')),controller[_0x2203('0x16')]);router[_0x2203('0x17')](_0x2203('0xb'),auth[_0x2203('0x9')](),controller[_0x2203('0x18')]);router[_0x2203('0x19')](_0x2203('0xb'),auth['isAuthenticated'](),controller[_0x2203('0x1a')]);module[_0x2203('0x1b')]=router;
\ No newline at end of file
+var _0x5f2f=['show','/:id/download','download','post','/:id/clone','clone','root','server/files/attachments/','format','now','originalname','replace','single','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./attachment.controller','get','isAuthenticated','index','/:id'];(function(_0x403f57,_0x4caf23){var _0x46404d=function(_0x29acdd){while(--_0x29acdd){_0x403f57['push'](_0x403f57['shift']());}};_0x46404d(++_0x4caf23);}(_0x5f2f,0x73));var _0xf5f2=function(_0x4e7bb6,_0x1898dc){_0x4e7bb6=_0x4e7bb6-0x0;var _0x2614ab=_0x5f2f[_0x4e7bb6];return _0x2614ab;};'use strict';var multer=require(_0xf5f2('0x0'));var util=require(_0xf5f2('0x1'));var path=require(_0xf5f2('0x2'));var timeout=require(_0xf5f2('0x3'));var express=require(_0xf5f2('0x4'));var router=express[_0xf5f2('0x5')]();var fs_extra=require(_0xf5f2('0x6'));var auth=require(_0xf5f2('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xf5f2('0x8'));router[_0xf5f2('0x9')]('/',auth[_0xf5f2('0xa')](),controller[_0xf5f2('0xb')]);router[_0xf5f2('0x9')](_0xf5f2('0xc'),auth['isAuthenticated'](),controller[_0xf5f2('0xd')]);router[_0xf5f2('0x9')](_0xf5f2('0xe'),auth['isAuthenticated'](),controller[_0xf5f2('0xf')]);router[_0xf5f2('0x10')](_0xf5f2('0x11'),auth['isAuthenticated'](),controller[_0xf5f2('0x12')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x53fb33,_0xa7e1a6,_0x151aba){_0x151aba(null,path['join'](config[_0xf5f2('0x13')],_0xf5f2('0x14')));},'filename':function(_0x331482,_0x3f2997,_0x59bb6c){_0x59bb6c(null,util[_0xf5f2('0x15')]('%s-%s',Date[_0xf5f2('0x16')](),_0x3f2997[_0xf5f2('0x17')][_0xf5f2('0x18')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0xf5f2('0x10')]('/',upload[_0xf5f2('0x19')]('file'),controller[_0xf5f2('0x1a')]);router[_0xf5f2('0x1b')](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x1c')]);router[_0xf5f2('0x1d')](_0xf5f2('0xc'),auth[_0xf5f2('0xa')](),controller[_0xf5f2('0x1e')]);module[_0xf5f2('0x1f')]=router;
\ No newline at end of file
index f19f86e..a35c4cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2093=['../../config/environment','../../config/logger','activedirectory','undefined','domain','error','inspect','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','Error\x20authenticate\x20%s:\x20Wrong\x20credentials','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','Setting','blockDuration','then','adSsoEnabled','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','findOne','salt','disabled','blocked','blockedAt','online','admin','user','agent','name','add','minutes','clearBlockUser','getLicense','status','send','message','login','authenticate','ad-login','role','signToken','use','password','User','passport','passport-local','Strategy','moment','activedirectory2','bluebird','../../mysqldb','../../components/auth/service'];(function(_0x42d264,_0xb9dc6f){var _0x597f1b=function(_0x479fdb){while(--_0x479fdb){_0x42d264['push'](_0x42d264['shift']());}};_0x597f1b(++_0xb9dc6f);}(_0x2093,0xe8));var _0x3209=function(_0x65959d,_0x4dd888){_0x65959d=_0x65959d-0x0;var _0x2d71aa=_0x2093[_0x65959d];return _0x2d71aa;};'use strict';var passport=require(_0x3209('0x0'));var LocalStrategy=require(_0x3209('0x1'))[_0x3209('0x2')];var moment=require(_0x3209('0x3'));var ActiveDirectory=require(_0x3209('0x4'));var BPromise=require(_0x3209('0x5'));var util=require('util');var db=require(_0x3209('0x6'))['db'];var authService=require(_0x3209('0x7'));var utils=require('../../config/utils');var config=require(_0x3209('0x8'));var logger=require(_0x3209('0x9'))('api');function isActiveDirectoryConfigured(_0x22c2e7){var _0x13b6d4=![];if(typeof _0x22c2e7[_0x3209('0xa')]!==_0x3209('0xb')){_0x13b6d4=_0x22c2e7['activedirectory']['baseDN']&&_0x22c2e7[_0x3209('0xa')]['url']&&_0x22c2e7[_0x3209('0xa')][_0x3209('0xc')];}return _0x13b6d4;}function adAuthenticate(_0x29e22b,_0x41292c,_0x15fe58){return new BPromise(function(_0x5f4faa,_0x1e9a3d){try{var _0x1cae44=new ActiveDirectory(_0x29e22b);_0x1cae44['authenticate'](_0x41292c,_0x15fe58,function(_0x1535a8,_0x2031ca){if(_0x1535a8){logger[_0x3209('0xd')]('Error\x20authenticate\x20%s:\x20%s',_0x41292c,util[_0x3209('0xe')](_0x1535a8,{'showHidden':![],'depth':null}));_0x1e9a3d(_0x3209('0xf'));}else if(!_0x2031ca){logger['error'](_0x3209('0x10'),_0x41292c);_0x1e9a3d(_0x3209('0xf'));}else{_0x5f4faa(_0x2031ca);}});}catch(_0x54eb5e){_0x1e9a3d(_0x54eb5e);}});}function ActiveDirectoryAuthenticate(_0x1128ba,_0x204e9d,_0x2e01a8,_0x40180b){var _0x14afe7,_0x223424;if(!isActiveDirectoryConfigured(config)){logger[_0x3209('0xd')](_0x3209('0x11'),_0x204e9d);return _0x40180b(null,![],{'message':_0x3209('0xf')});}return db[_0x3209('0x12')]['findOne']({'where':{'id':0x1},'attributes':['adSsoEnabled',_0x3209('0x13')],'raw':!![]})[_0x3209('0x14')](function(_0xca9787){_0x14afe7=_0xca9787;if(!_0x14afe7[_0x3209('0x15')]){logger[_0x3209('0xd')](_0x3209('0x16'),_0x204e9d);throw new Error(_0x3209('0xf'));}return _0x1128ba[_0x3209('0x17')]({'logging':!![],'attributes':['id','name','password',_0x3209('0x18'),'role',_0x3209('0x19'),_0x3209('0x1a'),_0x3209('0x1b'),_0x3209('0x1c')],'where':{'name':_0x204e9d,'role':{'$or':[_0x3209('0x1d'),_0x3209('0x1e'),_0x3209('0x1f')]},'adSsoEnabled':!![]}});})[_0x3209('0x14')](function(_0x4d65a8){if(!_0x4d65a8||_0x4d65a8&&_0x4d65a8[_0x3209('0x20')]!==_0x204e9d){throw new Error(_0x3209('0xf'));}_0x223424=_0x4d65a8;var _0x3e8ec3=_0x223424[_0x3209('0x20')]+'@'+config[_0x3209('0xa')]['domain'];return adAuthenticate(config['activedirectory'],_0x3e8ec3,_0x2e01a8);})[_0x3209('0x14')](function(_0x4e26ae){if(_0x223424['disabled']){throw new Error(_0x3209('0xf'));}if(_0x14afe7['blockDuration']>0x0){if(_0x223424['blocked']){if(moment(_0x223424['blockedAt'])[_0x3209('0x21')](_0x14afe7[_0x3209('0x13')],_0x3209('0x22'))>moment()){throw new Error(_0x3209('0xf'));}return utils[_0x3209('0x23')](_0x223424,0x0,![],null)[_0x3209('0x14')](function(){return utils[_0x3209('0x24')](_0x223424);})[_0x3209('0x14')](function(){return _0x40180b(null,_0x223424);});}else{return utils[_0x3209('0x24')](_0x223424)['then'](function(){return _0x40180b(null,_0x223424);});}}else{return utils['getLicense'](_0x223424)['then'](function(){return _0x40180b(null,_0x223424);});}})['catch'](function(_0x162180){return _0x40180b(null,![],_0x162180);});}function handleError(_0x4fa9d7,_0x2ed60d,_0x280e56){return _0x4fa9d7[_0x3209('0x25')](_0x2ed60d||0x1f4)[_0x3209('0x26')]({'message':_0x280e56?_0x280e56[_0x3209('0x27')]||_0x280e56:''});}exports[_0x3209('0x28')]=function(_0x56cf4d,_0x249c18,_0x3ea92f){passport[_0x3209('0x29')](_0x3209('0x2a'),function(_0x49f701,_0x2ab6e1,_0x1afbc7){var _0x55e9bb=_0x49f701||_0x1afbc7;if(_0x55e9bb){return handleError(_0x249c18,0x191,_0x55e9bb);}if(!_0x2ab6e1){return handleError(_0x249c18,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x28d924={'payload':{'id':_0x2ab6e1['id'],'role':_0x2ab6e1[_0x3209('0x2b')]},'options':{'expiresIn':0x15180}};return authService[_0x3209('0x2c')](_0x28d924)[_0x3209('0x14')](function(_0x33c2f7){_0x249c18['json']({'id':_0x2ab6e1['id'],'token':_0x33c2f7,'statusCall':'','isAlreadyLogged':_0x2ab6e1[_0x3209('0x1c')]});});}})(_0x56cf4d,_0x249c18,_0x3ea92f);};passport[_0x3209('0x2d')](_0x3209('0x2a'),new LocalStrategy({'usernameField':'name','passwordField':_0x3209('0x2e')},function(_0x1a6ca2,_0x43287b,_0x69a599){return ActiveDirectoryAuthenticate(db[_0x3209('0x2f')],_0x1a6ca2,_0x43287b,_0x69a599);}));
\ No newline at end of file
+var _0x72a4=['use','ad-login','User','passport-local','Strategy','moment','bluebird','util','../../mysqldb','../../components/auth/service','../../config/environment','../../config/logger','api','activedirectory','undefined','url','domain','authenticate','Error\x20authenticate\x20%s:\x20%s','inspect','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','error','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20configured','findOne','adSsoEnabled','then','Error\x20authenticate\x20%s:\x20Active\x20Directory\x20not\x20enabled','name','salt','blocked','online','admin','agent','disabled','blockDuration','blockedAt','clearBlockUser','getLicense','catch','status','send','message','login','signToken','json'];(function(_0x46b46d,_0x3758ff){var _0x49b2d6=function(_0x113f56){while(--_0x113f56){_0x46b46d['push'](_0x46b46d['shift']());}};_0x49b2d6(++_0x3758ff);}(_0x72a4,0x1c5));var _0x472a=function(_0x1c9f8c,_0x39c5e3){_0x1c9f8c=_0x1c9f8c-0x0;var _0x5bcb6e=_0x72a4[_0x1c9f8c];return _0x5bcb6e;};'use strict';var passport=require('passport');var LocalStrategy=require(_0x472a('0x0'))[_0x472a('0x1')];var moment=require(_0x472a('0x2'));var ActiveDirectory=require('activedirectory2');var BPromise=require(_0x472a('0x3'));var util=require(_0x472a('0x4'));var db=require(_0x472a('0x5'))['db'];var authService=require(_0x472a('0x6'));var utils=require('../../config/utils');var config=require(_0x472a('0x7'));var logger=require(_0x472a('0x8'))(_0x472a('0x9'));function isActiveDirectoryConfigured(_0x584734){var _0xfb3ba6=![];if(typeof _0x584734[_0x472a('0xa')]!==_0x472a('0xb')){_0xfb3ba6=_0x584734[_0x472a('0xa')]['baseDN']&&_0x584734['activedirectory'][_0x472a('0xc')]&&_0x584734[_0x472a('0xa')][_0x472a('0xd')];}return _0xfb3ba6;}function adAuthenticate(_0x3f8d81,_0x491a09,_0x59eab8){return new BPromise(function(_0x72a0be,_0x5108f1){try{var _0x42d3bf=new ActiveDirectory(_0x3f8d81);_0x42d3bf[_0x472a('0xe')](_0x491a09,_0x59eab8,function(_0x2471c9,_0x3ec493){if(_0x2471c9){logger['error'](_0x472a('0xf'),_0x491a09,util[_0x472a('0x10')](_0x2471c9,{'showHidden':![],'depth':null}));_0x5108f1(_0x472a('0x11'));}else if(!_0x3ec493){logger[_0x472a('0x12')]('Error\x20authenticate\x20%s:\x20Wrong\x20credentials',_0x491a09);_0x5108f1(_0x472a('0x11'));}else{_0x72a0be(_0x3ec493);}});}catch(_0x383f95){_0x5108f1(_0x383f95);}});}function ActiveDirectoryAuthenticate(_0x3bddc5,_0x54799e,_0x19583a,_0x197e49){var _0x2167b4,_0x529b68;if(!isActiveDirectoryConfigured(config)){logger[_0x472a('0x12')](_0x472a('0x13'),_0x54799e);return _0x197e49(null,![],{'message':_0x472a('0x11')});}return db['Setting'][_0x472a('0x14')]({'where':{'id':0x1},'attributes':[_0x472a('0x15'),'blockDuration'],'raw':!![]})[_0x472a('0x16')](function(_0x51fd08){_0x2167b4=_0x51fd08;if(!_0x2167b4['adSsoEnabled']){logger[_0x472a('0x12')](_0x472a('0x17'),_0x54799e);throw new Error(_0x472a('0x11'));}return _0x3bddc5[_0x472a('0x14')]({'attributes':['id',_0x472a('0x18'),'password',_0x472a('0x19'),'role','disabled',_0x472a('0x1a'),'blockedAt',_0x472a('0x1b')],'where':{'name':_0x54799e,'role':{'$or':[_0x472a('0x1c'),'user',_0x472a('0x1d')]},'adSsoEnabled':!![]}});})[_0x472a('0x16')](function(_0x5866e1){if(!_0x5866e1||_0x5866e1&&_0x5866e1[_0x472a('0x18')]!==_0x54799e){throw new Error(_0x472a('0x11'));}_0x529b68=_0x5866e1;var _0x1bdc0d=_0x529b68['name']+'@'+config[_0x472a('0xa')][_0x472a('0xd')];return adAuthenticate(config[_0x472a('0xa')],_0x1bdc0d,_0x19583a);})[_0x472a('0x16')](function(_0xdf0b73){if(_0x529b68[_0x472a('0x1e')]){throw new Error(_0x472a('0x11'));}if(_0x2167b4[_0x472a('0x1f')]>0x0){if(_0x529b68[_0x472a('0x1a')]){if(moment(_0x529b68[_0x472a('0x20')])['add'](_0x2167b4[_0x472a('0x1f')],'minutes')>moment()){throw new Error(_0x472a('0x11'));}return utils[_0x472a('0x21')](_0x529b68,0x0,![],null)[_0x472a('0x16')](function(){return utils[_0x472a('0x22')](_0x529b68);})[_0x472a('0x16')](function(){return _0x197e49(null,_0x529b68);});}else{return utils[_0x472a('0x22')](_0x529b68)[_0x472a('0x16')](function(){return _0x197e49(null,_0x529b68);});}}else{return utils[_0x472a('0x22')](_0x529b68)[_0x472a('0x16')](function(){return _0x197e49(null,_0x529b68);});}})[_0x472a('0x23')](function(_0x132b8){return _0x197e49(null,![],_0x132b8);});}function handleError(_0x1c2dd4,_0x548327,_0x41ae29){return _0x1c2dd4[_0x472a('0x24')](_0x548327||0x1f4)[_0x472a('0x25')]({'message':_0x41ae29?_0x41ae29[_0x472a('0x26')]||_0x41ae29:''});}exports[_0x472a('0x27')]=function(_0x3905f4,_0x3f64d0,_0x17d5eb){passport[_0x472a('0xe')]('ad-login',function(_0x56bb32,_0x49f16a,_0x591b36){var _0x35e4dc=_0x56bb32||_0x591b36;if(_0x35e4dc){return handleError(_0x3f64d0,0x191,_0x35e4dc);}if(!_0x49f16a){return handleError(_0x3f64d0,0x194,{'message':'Something\x20went\x20wrong,\x20please\x20try\x20again.'});}else{var _0x3783ae={'payload':{'id':_0x49f16a['id'],'role':_0x49f16a['role']},'options':{'expiresIn':0x15180}};return authService[_0x472a('0x28')](_0x3783ae)['then'](function(_0x17b276){_0x3f64d0[_0x472a('0x29')]({'id':_0x49f16a['id'],'token':_0x17b276,'statusCall':'','isAlreadyLogged':_0x49f16a['online']});});}})(_0x3905f4,_0x3f64d0,_0x17d5eb);};passport[_0x472a('0x2a')](_0x472a('0x2b'),new LocalStrategy({'usernameField':_0x472a('0x18'),'passwordField':'password'},function(_0x57a04f,_0x35182f,_0x18c873){return ActiveDirectoryAuthenticate(db[_0x472a('0x2c')],_0x57a04f,_0x35182f,_0x18c873);}));
\ No newline at end of file
index 038d9ad..3a7b2f4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2780=['post','login','Router','./authActiveDirectory.controller'];(function(_0x4081e9,_0x157feb){var _0x35cf25=function(_0x3952e0){while(--_0x3952e0){_0x4081e9['push'](_0x4081e9['shift']());}};_0x35cf25(++_0x157feb);}(_0x2780,0x1c2));var _0x0278=function(_0x1bf201,_0x55e400){_0x1bf201=_0x1bf201-0x0;var _0xbd43ac=_0x2780[_0x1bf201];return _0xbd43ac;};'use strict';var express=require('express');var router=express[_0x0278('0x0')]();var controller=require(_0x0278('0x1'));router[_0x0278('0x2')]('/',controller[_0x0278('0x3')]);module['exports']=router;
\ No newline at end of file
+var _0xd075=['./authActiveDirectory.controller','login','exports'];(function(_0xf79582,_0x3d872a){var _0x2b7049=function(_0x46bcdc){while(--_0x46bcdc){_0xf79582['push'](_0xf79582['shift']());}};_0x2b7049(++_0x3d872a);}(_0xd075,0xbd));var _0x5d07=function(_0x463484,_0x22531f){_0x463484=_0x463484-0x0;var _0x477304=_0xd075[_0x463484];return _0x477304;};'use strict';var express=require('express');var router=express['Router']();var controller=require(_0x5d07('0x0'));router['post']('/',controller[_0x5d07('0x1')]);module[_0x5d07('0x2')]=router;
\ No newline at end of file
index d7684f4..61d3257 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['../../config/environment','../../config/utils','login','google','/login','profile','email','callback','authenticate','use','clientID','clientSecret','secret','callbackURL','Setting','findOne','allowedLoginAttempts','User','find','map','emails','value','admin','user','then','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockDuration','blocked','blockedAt','add','getLicense','catch','lodash','passport','passport-google-oauth20','Strategy','../../mysqldb'];(function(_0x5e3c77,_0x127e2f){var _0x31f93b=function(_0x3fec1a){while(--_0x3fec1a){_0x5e3c77['push'](_0x5e3c77['shift']());}};_0x31f93b(++_0x127e2f);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var _=require(_0x7995('0x0'));var passport=require(_0x7995('0x1'));var GoogleStrategy=require(_0x7995('0x2'))[_0x7995('0x3')];var moment=require('moment');var db=require(_0x7995('0x4'))['db'];var config=require(_0x7995('0x5'));var utils=require(_0x7995('0x6'));exports[_0x7995('0x7')]=passport['authenticate'](_0x7995('0x8'),{'failureRedirect':_0x7995('0x9'),'scope':[_0x7995('0xa'),_0x7995('0xb')],'session':![]});exports[_0x7995('0xc')]=passport[_0x7995('0xd')]('google',{'failureRedirect':_0x7995('0x9'),'session':![]});passport[_0x7995('0xe')](new GoogleStrategy({'clientID':config['google']?config[_0x7995('0x8')][_0x7995('0xf')]:'id','clientSecret':config[_0x7995('0x8')]?config[_0x7995('0x8')][_0x7995('0x10')]:_0x7995('0x11'),'callbackURL':config[_0x7995('0x8')]?config['google'][_0x7995('0x12')]:''},function(_0x41c652,_0x581f22,_0xb0c872,_0x2cb37a){var _0x19a27e,_0x385f00;return db[_0x7995('0x13')][_0x7995('0x14')]({'where':{'id':0x1},'attributes':[_0x7995('0x15'),'blockDuration'],'raw':!![]})['then'](function(_0x2b4e94){_0x19a27e=_0x2b4e94;return db[_0x7995('0x16')][_0x7995('0x17')]({'where':{'email':_[_0x7995('0x18')](_0xb0c872[_0x7995('0x19')],_0x7995('0x1a')),'role':{'$or':[_0x7995('0x1b'),_0x7995('0x1c'),'agent']}}});})[_0x7995('0x1d')](function(_0x565d97){_0x385f00=_0x565d97;if(_0x385f00){if(_0x385f00[_0x7995('0x1e')]){return _0x2cb37a(_0x7995('0x1f'));}else if(_0x19a27e[_0x7995('0x20')]>0x0){if(_0x385f00[_0x7995('0x21')]){if(moment(_0x385f00[_0x7995('0x22')])[_0x7995('0x23')](_0x19a27e['blockDuration'],'minutes')>moment()){return _0x2cb37a(_0x7995('0x1f'));}else{return utils['clearBlockUser'](_0x385f00,0x0,![],null)['then'](function(){return utils[_0x7995('0x24')](_0x385f00);})[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)['then'](function(){return _0x2cb37a(null,_0x385f00);});}}return _0x2cb37a(_0x7995('0x1f'));})[_0x7995('0x25')](function(_0x350fd9){_0x2cb37a(_0x350fd9);});}));
\ No newline at end of file
+var _0x9957=['../../config/environment','../../config/utils','login','google','/login','profile','email','callback','authenticate','use','clientID','clientSecret','secret','callbackURL','Setting','findOne','allowedLoginAttempts','User','find','map','emails','value','admin','user','then','disabled','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','blockDuration','blocked','blockedAt','add','getLicense','catch','lodash','passport','passport-google-oauth20','Strategy','../../mysqldb'];(function(_0x4de8c4,_0x75f17f){var _0x276b10=function(_0x1645e9){while(--_0x1645e9){_0x4de8c4['push'](_0x4de8c4['shift']());}};_0x276b10(++_0x75f17f);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'use strict';var _=require(_0x7995('0x0'));var passport=require(_0x7995('0x1'));var GoogleStrategy=require(_0x7995('0x2'))[_0x7995('0x3')];var moment=require('moment');var db=require(_0x7995('0x4'))['db'];var config=require(_0x7995('0x5'));var utils=require(_0x7995('0x6'));exports[_0x7995('0x7')]=passport['authenticate'](_0x7995('0x8'),{'failureRedirect':_0x7995('0x9'),'scope':[_0x7995('0xa'),_0x7995('0xb')],'session':![]});exports[_0x7995('0xc')]=passport[_0x7995('0xd')]('google',{'failureRedirect':_0x7995('0x9'),'session':![]});passport[_0x7995('0xe')](new GoogleStrategy({'clientID':config['google']?config[_0x7995('0x8')][_0x7995('0xf')]:'id','clientSecret':config[_0x7995('0x8')]?config[_0x7995('0x8')][_0x7995('0x10')]:_0x7995('0x11'),'callbackURL':config[_0x7995('0x8')]?config['google'][_0x7995('0x12')]:''},function(_0x41c652,_0x581f22,_0xb0c872,_0x2cb37a){var _0x19a27e,_0x385f00;return db[_0x7995('0x13')][_0x7995('0x14')]({'where':{'id':0x1},'attributes':[_0x7995('0x15'),'blockDuration'],'raw':!![]})['then'](function(_0x2b4e94){_0x19a27e=_0x2b4e94;return db[_0x7995('0x16')][_0x7995('0x17')]({'where':{'email':_[_0x7995('0x18')](_0xb0c872[_0x7995('0x19')],_0x7995('0x1a')),'role':{'$or':[_0x7995('0x1b'),_0x7995('0x1c'),'agent']}}});})[_0x7995('0x1d')](function(_0x565d97){_0x385f00=_0x565d97;if(_0x385f00){if(_0x385f00[_0x7995('0x1e')]){return _0x2cb37a(_0x7995('0x1f'));}else if(_0x19a27e[_0x7995('0x20')]>0x0){if(_0x385f00[_0x7995('0x21')]){if(moment(_0x385f00[_0x7995('0x22')])[_0x7995('0x23')](_0x19a27e['blockDuration'],'minutes')>moment()){return _0x2cb37a(_0x7995('0x1f'));}else{return utils['clearBlockUser'](_0x385f00,0x0,![],null)['then'](function(){return utils[_0x7995('0x24')](_0x385f00);})[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)[_0x7995('0x1d')](function(){return _0x2cb37a(null,_0x385f00);});}}else{return utils['getLicense'](_0x385f00)['then'](function(){return _0x2cb37a(null,_0x385f00);});}}return _0x2cb37a(_0x7995('0x1f'));})[_0x7995('0x25')](function(_0x350fd9){_0x2cb37a(_0x350fd9);});}));
\ No newline at end of file
index aeb22d0..82cddff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x399c=['login','/callback','callback','isMiddleware','setTokenCookie','express','passport','Router','./authGoogle.controller','../user/user.controller.js','../../components/auth/service','get'];(function(_0x993f24,_0x227b78){var _0x3064db=function(_0x5c0d9e){while(--_0x5c0d9e){_0x993f24['push'](_0x993f24['shift']());}};_0x3064db(++_0x227b78);}(_0x399c,0x10d));var _0xc399=function(_0xb881ee,_0x261343){_0xb881ee=_0xb881ee-0x0;var _0x1ce61=_0x399c[_0xb881ee];return _0x1ce61;};'use strict';var express=require(_0xc399('0x0'));var passport=require(_0xc399('0x1'));var router=express[_0xc399('0x2')]();var controller=require(_0xc399('0x3'));var userController=require(_0xc399('0x4'));var authService=require(_0xc399('0x5'));router[_0xc399('0x6')]('/',controller[_0xc399('0x7')]);router[_0xc399('0x6')](_0xc399('0x8'),controller[_0xc399('0x9')],authService[_0xc399('0xa')],userController['login'],authService[_0xc399('0xb')]);module['exports']=router;
\ No newline at end of file
+var _0xcde0=['/callback','callback','isMiddleware','login','setTokenCookie','exports','express','passport','Router','../user/user.controller.js','../../components/auth/service','get'];(function(_0x30ef18,_0x263844){var _0xfd7890=function(_0x41c79c){while(--_0x41c79c){_0x30ef18['push'](_0x30ef18['shift']());}};_0xfd7890(++_0x263844);}(_0xcde0,0x14a));var _0x0cde=function(_0x196db2,_0x10bc19){_0x196db2=_0x196db2-0x0;var _0x2f593b=_0xcde0[_0x196db2];return _0x2f593b;};'use strict';var express=require(_0x0cde('0x0'));var passport=require(_0x0cde('0x1'));var router=express[_0x0cde('0x2')]();var controller=require('./authGoogle.controller');var userController=require(_0x0cde('0x3'));var authService=require(_0x0cde('0x4'));router[_0x0cde('0x5')]('/',controller['login']);router[_0x0cde('0x5')](_0x0cde('0x6'),controller[_0x0cde('0x7')],authService[_0x0cde('0x8')],userController[_0x0cde('0x9')],authService[_0x0cde('0xa')]);module[_0x0cde('0xb')]=router;
\ No newline at end of file
index ec8dca5..bc04727 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbce9=['getLicense','catch','MailAccount','find','email','MailServerOut','Smtp','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','merge','format','\x22%s\x22\x20<%s>','request','error','stringify','status','send','message','login','authenticate','local-login','Something\x20went\x20wrong,\x20please\x20try\x20again.','role','signToken','json','forgot','body','Email\x20parameter\x20is\x20missing','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','xCally\x20Motion\x20Password\x20Reset','host','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','params','token','Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.','securePassword','enforcePasswordHistory','passwordHistoryLimit','validatePasswordPattern','validatePasswordHistory','password','previousPasswords','save','Password\x20reset!','util','passport','passport-local','lodash','randomstring','moment','../../mysqldb','../../config/utils','client','http','Setting','findOne','blockDuration','then','name','disabled','blocked','blockedAt','admin','user','agent','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','loginAttempts','allowedLoginAttempts','minutes','clearBlockUser','add'];(function(_0x172747,_0x1732bd){var _0x509692=function(_0x448c56){while(--_0x448c56){_0x172747['push'](_0x172747['shift']());}};_0x509692(++_0x1732bd);}(_0xbce9,0x83));var _0x9bce=function(_0x1f9bcc,_0x400cb8){_0x1f9bcc=_0x1f9bcc-0x0;var _0x12831a=_0xbce9[_0x1f9bcc];return _0x12831a;};'use strict';var util=require(_0x9bce('0x0'));var passport=require(_0x9bce('0x1'));var LocalStrategy=require(_0x9bce('0x2'))['Strategy'];var jayson=require('jayson/promise');var _=require(_0x9bce('0x3'));var rs=require(_0x9bce('0x4'));var moment=require(_0x9bce('0x5'));var db=require(_0x9bce('0x6'))['db'];var authService=require('../../components/auth/service');var utils=require(_0x9bce('0x7'));var client=jayson[_0x9bce('0x8')][_0x9bce('0x9')]({'port':0x232b});function localAuthenticate(_0x299226,_0x44156e,_0x478f8c,_0x5661ef){var _0x3847fd,_0x41f56a;return db[_0x9bce('0xa')][_0x9bce('0xb')]({'where':{'id':0x1},'attributes':['allowedLoginAttempts',_0x9bce('0xc')],'raw':!![]})[_0x9bce('0xd')](function(_0x257e20){_0x3847fd=_0x257e20;return _0x299226['findOne']({'attributes':['id',_0x9bce('0xe'),'password','salt','role',_0x9bce('0xf'),_0x9bce('0x10'),_0x9bce('0x11'),'loginAttempts'],'where':{'name':_0x44156e,'role':{'$or':[_0x9bce('0x12'),_0x9bce('0x13'),_0x9bce('0x14')]}}});})[_0x9bce('0xd')](function(_0x5b65df){if(!_0x5b65df||_0x5b65df&&_0x5b65df[_0x9bce('0xe')]!==_0x44156e){throw new Error(_0x9bce('0x15'));}else{_0x41f56a=_0x5b65df;return _0x41f56a;}})['then'](function(){_0x41f56a['authenticate'](_0x478f8c,function(_0x26149f,_0x3fae2a){var _0x83d079=_0x41f56a[_0x9bce('0x16')]+0x1;if(_0x26149f){return _0x5661ef(_0x26149f);}else if(!_0x3fae2a){if(_0x41f56a['disabled']){return _0x5661ef(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0x3847fd[_0x9bce('0x17')]>0x0){if(_0x41f56a['blocked']){if(_0x3847fd[_0x9bce('0xc')]>0x0){if(moment(_0x41f56a[_0x9bce('0x11')])['add'](_0x3847fd[_0x9bce('0xc')],_0x9bce('0x18'))>moment()){return _0x5661ef(null,![],{'message':_0x9bce('0x15')});}else{return utils['clearBlockUser'](_0x41f56a,_0x83d079,![],null)[_0x9bce('0xd')](function(){return _0x5661ef(null,![],{'message':_0x9bce('0x15')});});}}else{return _0x5661ef(null,![],{'message':_0x9bce('0x15')});}}else{if(_0x83d079>=_0x3847fd[_0x9bce('0x17')]){return utils[_0x9bce('0x19')](_0x41f56a,0x0,!![],moment())[_0x9bce('0xd')](function(){return _0x5661ef(null,![],{'message':_0x9bce('0x15')});});}else{return utils[_0x9bce('0x19')](_0x41f56a,_0x83d079,![],null)[_0x9bce('0xd')](function(){return _0x5661ef(null,![],{'message':_0x9bce('0x15')});});}}}else{return _0x5661ef(null,![],{'message':_0x9bce('0x15')});}}else{if(_0x41f56a['disabled']){return _0x5661ef(null,![],{'message':_0x9bce('0x15')});}else if(_0x3847fd[_0x9bce('0x17')]>0x0){if(_0x41f56a[_0x9bce('0x10')]){if(_0x3847fd[_0x9bce('0xc')]>0x0){if(moment(_0x41f56a['blockedAt'])[_0x9bce('0x1a')](_0x3847fd['blockDuration'],'minutes')>moment()){return _0x5661ef(null,![],{'message':_0x9bce('0x15')});}else{return utils[_0x9bce('0x19')](_0x41f56a,0x0,![],null)[_0x9bce('0xd')](function(){return utils[_0x9bce('0x1b')](_0x41f56a);})[_0x9bce('0xd')](function(){return _0x5661ef(null,_0x41f56a);});}}else{return _0x5661ef(null,![],{'message':_0x9bce('0x15')});}}else{return utils[_0x9bce('0x19')](_0x41f56a,0x0,![],null)[_0x9bce('0xd')](function(){return utils[_0x9bce('0x1b')](_0x41f56a);})[_0x9bce('0xd')](function(){return _0x5661ef(null,_0x41f56a);})[_0x9bce('0x1c')](function(_0x344921){return _0x5661ef(null,![],_0x344921);});}}else{if(_0x41f56a['blocked']){return _0x5661ef(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else{return utils[_0x9bce('0x1b')](_0x41f56a)[_0x9bce('0xd')](function(){return _0x5661ef(null,_0x41f56a);});}}}});})[_0x9bce('0x1c')](function(_0x4ea0de){return _0x5661ef(null,![],_0x4ea0de);});}function sendServiceMail(_0x200d5c){return db[_0x9bce('0x1d')][_0x9bce('0x1e')]({'where':{'service':!![]},'attributes':['id',_0x9bce('0xe'),_0x9bce('0x1f')],'include':[{'model':db[_0x9bce('0x20')],'as':_0x9bce('0x21'),'include':[{'model':db[_0x9bce('0x22')],'as':_0x9bce('0x22')}]}]})[_0x9bce('0xd')](function(_0x2735b1){if(!_0x2735b1){throw new Error(_0x9bce('0x23'));}var _0x4ac4a6=_0x2735b1[_0x9bce('0x24')]();var _0x1c26b3={'account':_0x4ac4a6,'message':_[_0x9bce('0x25')]({'from':util[_0x9bce('0x26')](_0x9bce('0x27'),_0x2735b1[_0x9bce('0xe')],_0x2735b1[_0x9bce('0x1f')]||_0x2735b1['Smtp']['user'])},_0x200d5c)};return client[_0x9bce('0x28')]('SendMail',_0x1c26b3);})['then'](function(_0x19b02d){if(_0x19b02d[_0x9bce('0x29')]){throw new Error(util[_0x9bce('0x26')]('SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!',_0x19b02d[_0x9bce('0x29')]['message']||JSON[_0x9bce('0x2a')](_0x19b02d[_0x9bce('0x29')])));}return!![];});}function handleError(_0x163479,_0xadf1a2,_0x3b73a3){return _0x163479[_0x9bce('0x2b')](_0xadf1a2||0x1f4)[_0x9bce('0x2c')]({'message':_0x3b73a3?_0x3b73a3[_0x9bce('0x2d')]||_0x3b73a3:''});}exports[_0x9bce('0x2e')]=function(_0x14a7f1,_0x3a4623,_0x3a75ad){passport[_0x9bce('0x2f')](_0x9bce('0x30'),function(_0x309bd6,_0x56baef,_0x3e4d9d){var _0xe606c=_0x309bd6||_0x3e4d9d;if(_0xe606c){return handleError(_0x3a4623,0x191,_0xe606c);}if(!_0x56baef){return handleError(_0x3a4623,0x194,{'message':_0x9bce('0x31')});}else{var _0x9a0e2c={'payload':{'id':_0x56baef['id'],'role':_0x56baef[_0x9bce('0x32')]},'options':{'expiresIn':0x15180}};return authService[_0x9bce('0x33')](_0x9a0e2c)['then'](function(_0x12800b){_0x3a4623[_0x9bce('0x34')]({'id':_0x56baef['id'],'token':_0x12800b,'statusCall':'','isAlreadyLogged':_0x56baef['online']});});}})(_0x14a7f1,_0x3a4623,_0x3a75ad);};exports[_0x9bce('0x35')]=function(_0x49e26e,_0x2f7b51){if(!_0x49e26e[_0x9bce('0x36')][_0x9bce('0x1f')]){return handleError(_0x2f7b51,0x1f4,{'message':_0x9bce('0x37')});}var _0x123072=rs['generate']();_0x49e26e[_0x9bce('0x36')][_0x9bce('0x1f')]=_0x49e26e[_0x9bce('0x36')][_0x9bce('0x1f')]['trim']()['toLowerCase']();var _0x173e15;return db['Setting']['findOne']({'where':{'id':0x1},'attributes':[_0x9bce('0x17'),_0x9bce('0xc')],'raw':!![]})['then'](function(_0x2ca360){_0x173e15=_0x2ca360;return db[_0x9bce('0x38')][_0x9bce('0x1e')]({'where':{'email':_0x49e26e[_0x9bce('0x36')][_0x9bce('0x1f')]}});})['then'](function(_0xc716ab){if(!_0xc716ab){throw new Error(_0x9bce('0x39'));}if(_0xc716ab['disabled']){throw new Error('The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.');}if(_0xc716ab[_0x9bce('0x10')]){if(moment(_0xc716ab[_0x9bce('0x11')])[_0x9bce('0x1a')](_0x173e15[_0x9bce('0xc')],_0x9bce('0x18'))>moment()){throw new Error(_0x9bce('0x3a'));}else{_0xc716ab['blocked']=![];_0xc716ab['blockedAt']=null;}}_0xc716ab[_0x9bce('0x3b')]=_0x123072;_0xc716ab[_0x9bce('0x3c')]=Date[_0x9bce('0x3d')]()+0x36ee80;return _0xc716ab['save']();})[_0x9bce('0xd')](function(){return sendServiceMail({'to':_0x49e26e[_0x9bce('0x36')][_0x9bce('0x1f')],'subject':_0x9bce('0x3e'),'text':'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://'+_0x49e26e['headers'][_0x9bce('0x3f')]+'/reset/'+_0x123072+'\x0a\x0a'+_0x9bce('0x40')});})[_0x9bce('0xd')](function(){_0x2f7b51['status'](0xc8)['send']({'message':_0x9bce('0x41')});})[_0x9bce('0x1c')](function(_0xe79c82){return handleError(_0x2f7b51,0x1f4,_0xe79c82);});};exports[_0x9bce('0x42')]=function(_0x4fcbe5,_0x183f58){return db[_0x9bce('0x38')][_0x9bce('0x1e')]({'where':{'resetPasswordToken':_0x4fcbe5[_0x9bce('0x43')][_0x9bce('0x44')],'resetPasswordExpires':{'$gt':Date['now']()}}})['then'](function(_0xdc0384){if(!_0xdc0384){throw new Error(_0x9bce('0x45'));}return db['Setting'][_0x9bce('0xb')]({'attributes':['id',_0x9bce('0x46'),_0x9bce('0x47'),_0x9bce('0x48')]})[_0x9bce('0xd')](function(_0x11b1c9){if(_0x11b1c9[_0x9bce('0x46')])authService[_0x9bce('0x49')](_0x4fcbe5['body']['password']);if(!_0x11b1c9[_0x9bce('0x47')]||!_0xdc0384['previousPasswords'])return _0xdc0384;authService[_0x9bce('0x4a')](_0x4fcbe5[_0x9bce('0x36')][_0x9bce('0x4b')],_0xdc0384[_0x9bce('0x4c')],_0x11b1c9[_0x9bce('0x48')]);return _0xdc0384;})['then'](function(){_0xdc0384[_0x9bce('0x4b')]=_0x4fcbe5['body'][_0x9bce('0x4b')];_0xdc0384[_0x9bce('0x3b')]=null;_0xdc0384[_0x9bce('0x3c')]=null;return _0xdc0384[_0x9bce('0x4d')]();});})[_0x9bce('0xd')](function(){_0x183f58[_0x9bce('0x2b')](0xc8)[_0x9bce('0x2c')]({'message':_0x9bce('0x4e')});})[_0x9bce('0x1c')](function(_0x54d174){return handleError(_0x183f58,0x1f4,_0x54d174);});};passport['use'](_0x9bce('0x30'),new LocalStrategy({'usernameField':'name','passwordField':_0x9bce('0x4b')},function(_0x1ab069,_0xc334a8,_0x1c7ddc){return localAuthenticate(db[_0x9bce('0x38')],_0x1ab069,_0xc334a8,_0x1c7ddc);}));
\ No newline at end of file
+var _0x6061=['minutes','Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.','clearBlockUser','getLicense','catch','MailAccount','email','MailServerOut','CloudProvider','Unable\x20to\x20find\x20a\x20configured\x20SMTP\x20service!','getSmtpOptions','merge','format','\x22%s\x22\x20<%s>','SendMail','error','message','stringify','status','send','login','Something\x20went\x20wrong,\x20please\x20try\x20again.','role','json','forgot','body','Email\x20parameter\x20is\x20missing','generate','trim','toLowerCase','findOne','User','This\x20email\x20is\x20not\x20registered.','The\x20user\x20is\x20disabled.\x20Please\x20contact\x20the\x20administrator.','The\x20user\x20is\x20blocked.\x20Please\x20contact\x20the\x20administrator.','resetPasswordToken','resetPasswordExpires','now','save','xCally\x20Motion\x20Password\x20Reset','https://','headers','host','/reset/','If\x20you\x20did\x20not\x20request\x20this,\x20please\x20ignore\x20this\x20email\x20and\x20your\x20password\x20will\x20remain\x20unchanged.\x0a','Reset\x20Email\x20sent!','reset','find','params','token','enforcePasswordHistory','passwordHistoryLimit','securePassword','validatePasswordPattern','previousPasswords','Password\x20reset!','passport','jayson/promise','lodash','randomstring','../../mysqldb','../../components/auth/service','../../config/utils','client','http','Setting','allowedLoginAttempts','blockDuration','then','name','password','salt','disabled','blocked','blockedAt','admin','user','agent','authenticate','add'];(function(_0x1e07de,_0x5d0da2){var _0x4e80ab=function(_0x20c63e){while(--_0x20c63e){_0x1e07de['push'](_0x1e07de['shift']());}};_0x4e80ab(++_0x5d0da2);}(_0x6061,0xd8));var _0x1606=function(_0x443173,_0x5f1e71){_0x443173=_0x443173-0x0;var _0x38d7d7=_0x6061[_0x443173];return _0x38d7d7;};'use strict';var util=require('util');var passport=require(_0x1606('0x0'));var LocalStrategy=require('passport-local')['Strategy'];var jayson=require(_0x1606('0x1'));var _=require(_0x1606('0x2'));var rs=require(_0x1606('0x3'));var moment=require('moment');var db=require(_0x1606('0x4'))['db'];var authService=require(_0x1606('0x5'));var utils=require(_0x1606('0x6'));var client=jayson[_0x1606('0x7')][_0x1606('0x8')]({'port':0x232b});function localAuthenticate(_0x2b318e,_0x32a334,_0x8e8344,_0x3e0022){var _0xaa69a8,_0x41bc78;return db[_0x1606('0x9')]['findOne']({'where':{'id':0x1},'attributes':[_0x1606('0xa'),_0x1606('0xb')],'raw':!![]})[_0x1606('0xc')](function(_0x186586){_0xaa69a8=_0x186586;return _0x2b318e['findOne']({'attributes':['id',_0x1606('0xd'),_0x1606('0xe'),_0x1606('0xf'),'role',_0x1606('0x10'),_0x1606('0x11'),_0x1606('0x12'),'loginAttempts'],'where':{'name':_0x32a334,'role':{'$or':[_0x1606('0x13'),_0x1606('0x14'),_0x1606('0x15')]}}});})[_0x1606('0xc')](function(_0x398d59){if(!_0x398d59||_0x398d59&&_0x398d59['name']!==_0x32a334){throw new Error('Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.');}else{_0x41bc78=_0x398d59;return _0x41bc78;}})[_0x1606('0xc')](function(){_0x41bc78[_0x1606('0x16')](_0x8e8344,function(_0x35547c,_0x5e85c8){var _0x2acac6=_0x41bc78['loginAttempts']+0x1;if(_0x35547c){return _0x3e0022(_0x35547c);}else if(!_0x5e85c8){if(_0x41bc78[_0x1606('0x10')]){return _0x3e0022(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0xaa69a8[_0x1606('0xa')]>0x0){if(_0x41bc78['blocked']){if(_0xaa69a8['blockDuration']>0x0){if(moment(_0x41bc78[_0x1606('0x12')])[_0x1606('0x17')](_0xaa69a8['blockDuration'],_0x1606('0x18'))>moment()){return _0x3e0022(null,![],{'message':_0x1606('0x19')});}else{return utils[_0x1606('0x1a')](_0x41bc78,_0x2acac6,![],null)['then'](function(){return _0x3e0022(null,![],{'message':_0x1606('0x19')});});}}else{return _0x3e0022(null,![],{'message':_0x1606('0x19')});}}else{if(_0x2acac6>=_0xaa69a8[_0x1606('0xa')]){return utils[_0x1606('0x1a')](_0x41bc78,0x0,!![],moment())[_0x1606('0xc')](function(){return _0x3e0022(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}else{return utils[_0x1606('0x1a')](_0x41bc78,_0x2acac6,![],null)[_0x1606('0xc')](function(){return _0x3e0022(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});});}}}else{return _0x3e0022(null,![],{'message':_0x1606('0x19')});}}else{if(_0x41bc78[_0x1606('0x10')]){return _0x3e0022(null,![],{'message':'Incorrect\x20username\x20and/or\x20password.\x20Please\x20retry\x20again\x20or\x20contact\x20the\x20administrator.'});}else if(_0xaa69a8[_0x1606('0xa')]>0x0){if(_0x41bc78[_0x1606('0x11')]){if(_0xaa69a8[_0x1606('0xb')]>0x0){if(moment(_0x41bc78[_0x1606('0x12')])[_0x1606('0x17')](_0xaa69a8[_0x1606('0xb')],_0x1606('0x18'))>moment()){return _0x3e0022(null,![],{'message':_0x1606('0x19')});}else{return utils['clearBlockUser'](_0x41bc78,0x0,![],null)['then'](function(){return utils['getLicense'](_0x41bc78);})['then'](function(){return _0x3e0022(null,_0x41bc78);});}}else{return _0x3e0022(null,![],{'message':_0x1606('0x19')});}}else{return utils['clearBlockUser'](_0x41bc78,0x0,![],null)[_0x1606('0xc')](function(){return utils[_0x1606('0x1b')](_0x41bc78);})[_0x1606('0xc')](function(){return _0x3e0022(null,_0x41bc78);})['catch'](function(_0x18c581){return _0x3e0022(null,![],_0x18c581);});}}else{if(_0x41bc78[_0x1606('0x11')]){return _0x3e0022(null,![],{'message':_0x1606('0x19')});}else{return utils[_0x1606('0x1b')](_0x41bc78)['then'](function(){return _0x3e0022(null,_0x41bc78);});}}}});})[_0x1606('0x1c')](function(_0x5a0020){return _0x3e0022(null,![],_0x5a0020);});}function sendServiceMail(_0x145906){return db[_0x1606('0x1d')]['find']({'where':{'service':!![]},'attributes':['id',_0x1606('0xd'),_0x1606('0x1e')],'include':[{'model':db[_0x1606('0x1f')],'as':'Smtp','include':[{'model':db[_0x1606('0x20')],'as':'CloudProvider'}]}]})[_0x1606('0xc')](function(_0x22d65e){if(!_0x22d65e){throw new Error(_0x1606('0x21'));}var _0x207ee9=_0x22d65e[_0x1606('0x22')]();var _0x5c5841={'account':_0x207ee9,'message':_[_0x1606('0x23')]({'from':util[_0x1606('0x24')](_0x1606('0x25'),_0x22d65e[_0x1606('0xd')],_0x22d65e[_0x1606('0x1e')]||_0x22d65e['Smtp'][_0x1606('0x14')])},_0x145906)};return client['request'](_0x1606('0x26'),_0x5c5841);})[_0x1606('0xc')](function(_0x1a1444){if(_0x1a1444[_0x1606('0x27')]){throw new Error(util[_0x1606('0x24')]('SendMail\x20error:\x20%s.\x20Please\x20contact\x20your\x20Administrator!',_0x1a1444[_0x1606('0x27')][_0x1606('0x28')]||JSON[_0x1606('0x29')](_0x1a1444[_0x1606('0x27')])));}return!![];});}function handleError(_0x1e9118,_0x31bebf,_0x4023d2){return _0x1e9118[_0x1606('0x2a')](_0x31bebf||0x1f4)[_0x1606('0x2b')]({'message':_0x4023d2?_0x4023d2[_0x1606('0x28')]||_0x4023d2:''});}exports[_0x1606('0x2c')]=function(_0x114c74,_0x470612,_0x4c6c74){passport[_0x1606('0x16')]('local-login',function(_0x4f4645,_0x31f383,_0x3c4b8c){var _0x179adb=_0x4f4645||_0x3c4b8c;if(_0x179adb){return handleError(_0x470612,0x191,_0x179adb);}if(!_0x31f383){return handleError(_0x470612,0x194,{'message':_0x1606('0x2d')});}else{var _0x461a95={'payload':{'id':_0x31f383['id'],'role':_0x31f383[_0x1606('0x2e')]},'options':{'expiresIn':0x15180}};return authService['signToken'](_0x461a95)[_0x1606('0xc')](function(_0x411207){_0x470612[_0x1606('0x2f')]({'id':_0x31f383['id'],'token':_0x411207,'statusCall':'','isAlreadyLogged':_0x31f383['online']});});}})(_0x114c74,_0x470612,_0x4c6c74);};exports[_0x1606('0x30')]=function(_0x271cef,_0x49b35a){if(!_0x271cef[_0x1606('0x31')][_0x1606('0x1e')]){return handleError(_0x49b35a,0x1f4,{'message':_0x1606('0x32')});}var _0xcd6852=rs[_0x1606('0x33')]();_0x271cef[_0x1606('0x31')][_0x1606('0x1e')]=_0x271cef['body'][_0x1606('0x1e')][_0x1606('0x34')]()[_0x1606('0x35')]();var _0x70af2c;return db[_0x1606('0x9')][_0x1606('0x36')]({'where':{'id':0x1},'attributes':[_0x1606('0xa'),_0x1606('0xb')],'raw':!![]})[_0x1606('0xc')](function(_0x2678db){_0x70af2c=_0x2678db;return db[_0x1606('0x37')]['find']({'where':{'email':_0x271cef['body'][_0x1606('0x1e')]}});})[_0x1606('0xc')](function(_0x4d1e0b){if(!_0x4d1e0b){throw new Error(_0x1606('0x38'));}if(_0x4d1e0b[_0x1606('0x10')]){throw new Error(_0x1606('0x39'));}if(_0x4d1e0b['blocked']){if(moment(_0x4d1e0b['blockedAt'])[_0x1606('0x17')](_0x70af2c['blockDuration'],_0x1606('0x18'))>moment()){throw new Error(_0x1606('0x3a'));}else{_0x4d1e0b[_0x1606('0x11')]=![];_0x4d1e0b[_0x1606('0x12')]=null;}}_0x4d1e0b[_0x1606('0x3b')]=_0xcd6852;_0x4d1e0b[_0x1606('0x3c')]=Date[_0x1606('0x3d')]()+0x36ee80;return _0x4d1e0b[_0x1606('0x3e')]();})[_0x1606('0xc')](function(){return sendServiceMail({'to':_0x271cef['body'][_0x1606('0x1e')],'subject':_0x1606('0x3f'),'text':'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'+_0x1606('0x40')+_0x271cef[_0x1606('0x41')][_0x1606('0x42')]+_0x1606('0x43')+_0xcd6852+'\x0a\x0a'+_0x1606('0x44')});})[_0x1606('0xc')](function(){_0x49b35a[_0x1606('0x2a')](0xc8)[_0x1606('0x2b')]({'message':_0x1606('0x45')});})['catch'](function(_0x16871d){return handleError(_0x49b35a,0x1f4,_0x16871d);});};exports[_0x1606('0x46')]=function(_0x24af68,_0x312566){return db['User'][_0x1606('0x47')]({'where':{'resetPasswordToken':_0x24af68[_0x1606('0x48')][_0x1606('0x49')],'resetPasswordExpires':{'$gt':Date['now']()}}})['then'](function(_0x42a928){if(!_0x42a928){throw new Error('Password\x20reset\x20token\x20is\x20invalid\x20or\x20has\x20expired.');}return db['Setting'][_0x1606('0x36')]({'attributes':['id','securePassword',_0x1606('0x4a'),_0x1606('0x4b')]})['then'](function(_0x3c07f6){if(_0x3c07f6[_0x1606('0x4c')])authService[_0x1606('0x4d')](_0x24af68[_0x1606('0x31')]['password']);if(!_0x3c07f6['enforcePasswordHistory']||!_0x42a928[_0x1606('0x4e')])return _0x42a928;authService['validatePasswordHistory'](_0x24af68[_0x1606('0x31')]['password'],_0x42a928[_0x1606('0x4e')],_0x3c07f6[_0x1606('0x4b')]);return _0x42a928;})[_0x1606('0xc')](function(){_0x42a928[_0x1606('0xe')]=_0x24af68[_0x1606('0x31')][_0x1606('0xe')];_0x42a928[_0x1606('0x3b')]=null;_0x42a928[_0x1606('0x3c')]=null;return _0x42a928['save']();});})[_0x1606('0xc')](function(){_0x312566[_0x1606('0x2a')](0xc8)['send']({'message':_0x1606('0x4f')});})['catch'](function(_0x2bfaef){return handleError(_0x312566,0x1f4,_0x2bfaef);});};passport['use']('local-login',new LocalStrategy({'usernameField':'name','passwordField':_0x1606('0xe')},function(_0x544a90,_0xacf04,_0x14ec1d){return localAuthenticate(db[_0x1606('0x37')],_0x544a90,_0xacf04,_0x14ec1d);}));
\ No newline at end of file
index 864a9e1..f3b20b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8209=['Router','./authLocal.controller','post','login','/forgot','/reset/:token','reset','exports','express'];(function(_0x4f1e77,_0x4f1629){var _0x35c573=function(_0x262991){while(--_0x262991){_0x4f1e77['push'](_0x4f1e77['shift']());}};_0x35c573(++_0x4f1629);}(_0x8209,0x1c1));var _0x9820=function(_0x3e38ba,_0x515be9){_0x3e38ba=_0x3e38ba-0x0;var _0x2282f9=_0x8209[_0x3e38ba];return _0x2282f9;};'use strict';var express=require(_0x9820('0x0'));var router=express[_0x9820('0x1')]();var controller=require(_0x9820('0x2'));router[_0x9820('0x3')]('/',controller[_0x9820('0x4')]);router[_0x9820('0x3')](_0x9820('0x5'),controller['forgot']);router['post'](_0x9820('0x6'),controller[_0x9820('0x7')]);module[_0x9820('0x8')]=router;
\ No newline at end of file
+var _0x77cf=['./authLocal.controller','/forgot','/reset/:token','reset','exports','Router'];(function(_0xb313bf,_0xaf4396){var _0x407e02=function(_0x598cea){while(--_0x598cea){_0xb313bf['push'](_0xb313bf['shift']());}};_0x407e02(++_0xaf4396);}(_0x77cf,0x155));var _0xf77c=function(_0x537f2e,_0x4debe3){_0x537f2e=_0x537f2e-0x0;var _0x51f3e5=_0x77cf[_0x537f2e];return _0x51f3e5;};'use strict';var express=require('express');var router=express[_0xf77c('0x0')]();var controller=require(_0xf77c('0x1'));router['post']('/',controller['login']);router['post'](_0xf77c('0x2'),controller['forgot']);router['post'](_0xf77c('0x3'),controller[_0xf77c('0x4')]);module[_0xf77c('0x5')]=router;
\ No newline at end of file
index 0f813e9..d790d00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc57=['INTEGER','sequelize','STRING','BOOLEAN'];(function(_0x51c69e,_0x15f5c6){var _0x289677=function(_0x2badbf){while(--_0x2badbf){_0x51c69e['push'](_0x51c69e['shift']());}};_0x289677(++_0x15f5c6);}(_0xcc57,0xc9));var _0x7cc5=function(_0x255e87,_0x1df4e9){_0x255e87=_0x255e87-0x0;var _0x1c090c=_0xcc57[_0x255e87];return _0x1c090c;};'use strict';var Sequelize=require(_0x7cc5('0x0'));module['exports']={'name':{'type':Sequelize[_0x7cc5('0x1')],'allowNull':![]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x7cc5('0x1')]},'status':{'type':Sequelize[_0x7cc5('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize[_0x7cc5('0x3')],'defaultValue':0xa}};
\ No newline at end of file
+var _0x052a=['BOOLEAN','INTEGER','exports','STRING'];(function(_0x358806,_0x322b66){var _0x19fdcb=function(_0xe01b8d){while(--_0xe01b8d){_0x358806['push'](_0x358806['shift']());}};_0x19fdcb(++_0x322b66);}(_0x052a,0x17e));var _0xa052=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0x052a[_0x32d457];return _0x338386;};'use strict';var Sequelize=require('sequelize');module[_0xa052('0x0')]={'name':{'type':Sequelize[_0xa052('0x1')],'allowNull':![]},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xa052('0x1')]},'status':{'type':Sequelize[_0xa052('0x2')],'defaultValue':![]},'timeout':{'type':Sequelize[_0xa052('0x3')],'defaultValue':0xa}};
\ No newline at end of file
index cc8d13e..d0038d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd3d=['keys','intersection','model','attributes','fields','nolimit','order','sort','pick','filters','filter','where','merge','type','VIRTUAL','options','includeAll','findAll','rows','catch','show','params','length','include','body','find','addConditions','Condition','omit','ids','getConditions','findOne','hasOwnProperty','addActions','Action','getActions','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','json','offset','undefined','limit','count','set','apply','save','update','then','destroy','end','error','name','send','map','Automation','rawAttributes','fieldName','key','query'];(function(_0x245c4f,_0x34b70f){var _0x3157a1=function(_0x18bfc7){while(--_0x18bfc7){_0x245c4f['push'](_0x245c4f['shift']());}};_0x3157a1(++_0x34b70f);}(_0xfd3d,0xcc));var _0xdfd3=function(_0x5d8edc,_0x48f6cd){_0x5d8edc=_0x5d8edc-0x0;var _0x1802d3=_0xfd3d[_0x5d8edc];return _0x1802d3;};'use strict';var emlformat=require(_0xdfd3('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdfd3('0x1'));var jsonpatch=require(_0xdfd3('0x2'));var rp=require(_0xdfd3('0x3'));var moment=require(_0xdfd3('0x4'));var BPromise=require(_0xdfd3('0x5'));var Mustache=require(_0xdfd3('0x6'));var util=require(_0xdfd3('0x7'));var path=require(_0xdfd3('0x8'));var sox=require(_0xdfd3('0x9'));var csv=require(_0xdfd3('0xa'));var ejs=require(_0xdfd3('0xb'));var fs=require('fs');var fs_extra=require(_0xdfd3('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xdfd3('0xd'));var jsforce=require(_0xdfd3('0xe'));var deskjs=require(_0xdfd3('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xdfd3('0x10'));var Redis=require(_0xdfd3('0x11'));var authService=require(_0xdfd3('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xdfd3('0x13'));var hardwareService=require(_0xdfd3('0x14'));var logger=require(_0xdfd3('0x15'))(_0xdfd3('0x16'));var utils=require(_0xdfd3('0x17'));var config=require(_0xdfd3('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4bff62,_0x2646eb){_0x2646eb=_0x2646eb||0xcc;return function(_0x4d6265){if(_0x4d6265){return _0x4bff62[_0xdfd3('0x19')](_0x2646eb);}return _0x4bff62[_0xdfd3('0x1a')](_0x2646eb)['end']();};}function respondWithResult(_0x122717,_0x5b362e){_0x5b362e=_0x5b362e||0xc8;return function(_0xa801c1){if(_0xa801c1){return _0x122717[_0xdfd3('0x1a')](_0x5b362e)[_0xdfd3('0x1b')](_0xa801c1);}};}function respondWithFilteredResult(_0x40786c,_0x425d35){return function(_0x4ed9e6){if(_0x4ed9e6){var _0x2867d2=typeof _0x425d35[_0xdfd3('0x1c')]===_0xdfd3('0x1d')&&typeof _0x425d35[_0xdfd3('0x1e')]===_0xdfd3('0x1d');var _0x4a4313=_0x4ed9e6[_0xdfd3('0x1f')];var _0x1981cf=_0x2867d2?0x0:_0x425d35[_0xdfd3('0x1c')];var _0x5df88b=_0x2867d2?_0x4ed9e6['count']:_0x425d35[_0xdfd3('0x1c')]+_0x425d35[_0xdfd3('0x1e')];var _0x54ce4e;if(_0x5df88b>=_0x4a4313){_0x5df88b=_0x4a4313;_0x54ce4e=0xc8;}else{_0x54ce4e=0xce;}_0x40786c['status'](_0x54ce4e);return _0x40786c[_0xdfd3('0x20')]('Content-Range',_0x1981cf+'-'+_0x5df88b+'/'+_0x4a4313)[_0xdfd3('0x1b')](_0x4ed9e6);}return null;};}function patchUpdates(_0x18aa04){return function(_0x659891){try{jsonpatch[_0xdfd3('0x21')](_0x659891,_0x18aa04,!![]);}catch(_0x10dcf9){return BPromise['reject'](_0x10dcf9);}return _0x659891[_0xdfd3('0x22')]();};}function saveUpdates(_0x396319,_0x23e48a){return function(_0x65a4a4){if(_0x65a4a4){return _0x65a4a4[_0xdfd3('0x23')](_0x396319)[_0xdfd3('0x24')](function(_0x158018){return _0x158018;});}return null;};}function removeEntity(_0x478b02,_0x4acef4){return function(_0x3e7022){if(_0x3e7022){return _0x3e7022[_0xdfd3('0x25')]()[_0xdfd3('0x24')](function(){_0x478b02[_0xdfd3('0x1a')](0xcc)[_0xdfd3('0x26')]();});}};}function handleEntityNotFound(_0x5523dd,_0x5c7db6){return function(_0x404846){if(!_0x404846){_0x5523dd[_0xdfd3('0x19')](0x194);}return _0x404846;};}function handleError(_0x3a8d45,_0x525d57){_0x525d57=_0x525d57||0x1f4;return function(_0x4a4784){logger[_0xdfd3('0x27')](_0x4a4784['stack']);if(_0x4a4784[_0xdfd3('0x28')]){delete _0x4a4784['name'];}_0x3a8d45[_0xdfd3('0x1a')](_0x525d57)[_0xdfd3('0x29')](_0x4a4784);};}exports['index']=function(_0x375b3c,_0x509bd1){var _0x15893a={},_0x5579a6={},_0x1475b5={'count':0x0,'rows':[]};var _0x2b47de=_[_0xdfd3('0x2a')](db[_0xdfd3('0x2b')][_0xdfd3('0x2c')],function(_0xd8c2e1){return{'name':_0xd8c2e1[_0xdfd3('0x2d')],'type':_0xd8c2e1['type'][_0xdfd3('0x2e')]};});_0x5579a6['model']=_[_0xdfd3('0x2a')](_0x2b47de,_0xdfd3('0x28'));_0x5579a6[_0xdfd3('0x2f')]=_[_0xdfd3('0x30')](_0x375b3c[_0xdfd3('0x2f')]);_0x5579a6['filters']=_[_0xdfd3('0x31')](_0x5579a6[_0xdfd3('0x32')],_0x5579a6[_0xdfd3('0x2f')]);_0x15893a[_0xdfd3('0x33')]=_[_0xdfd3('0x31')](_0x5579a6[_0xdfd3('0x32')],qs[_0xdfd3('0x34')](_0x375b3c['query'][_0xdfd3('0x34')]));_0x15893a[_0xdfd3('0x33')]=_0x15893a[_0xdfd3('0x33')]['length']?_0x15893a[_0xdfd3('0x33')]:_0x5579a6[_0xdfd3('0x32')];if(!_0x375b3c[_0xdfd3('0x2f')]['hasOwnProperty'](_0xdfd3('0x35'))){_0x15893a[_0xdfd3('0x1e')]=qs[_0xdfd3('0x1e')](_0x375b3c[_0xdfd3('0x2f')][_0xdfd3('0x1e')]);_0x15893a[_0xdfd3('0x1c')]=qs[_0xdfd3('0x1c')](_0x375b3c['query']['offset']);}_0x15893a[_0xdfd3('0x36')]=qs[_0xdfd3('0x37')](_0x375b3c[_0xdfd3('0x2f')][_0xdfd3('0x37')]);_0x15893a['where']=qs['filters'](_[_0xdfd3('0x38')](_0x375b3c[_0xdfd3('0x2f')],_0x5579a6[_0xdfd3('0x39')]),_0x2b47de);if(_0x375b3c[_0xdfd3('0x2f')][_0xdfd3('0x3a')]){_0x15893a[_0xdfd3('0x3b')]=_[_0xdfd3('0x3c')](_0x15893a[_0xdfd3('0x3b')],{'$or':_[_0xdfd3('0x2a')](_0x2b47de,function(_0x4342f5){if(_0x4342f5[_0xdfd3('0x3d')]!==_0xdfd3('0x3e')){var _0x4231ad={};_0x4231ad[_0x4342f5[_0xdfd3('0x28')]]={'$like':'%'+_0x375b3c[_0xdfd3('0x2f')][_0xdfd3('0x3a')]+'%'};return _0x4231ad;}})});}_0x15893a=_[_0xdfd3('0x3c')]({},_0x15893a,_0x375b3c[_0xdfd3('0x3f')]);var _0x2a6b80={'where':_0x15893a[_0xdfd3('0x3b')]};return db[_0xdfd3('0x2b')]['count'](_0x2a6b80)[_0xdfd3('0x24')](function(_0x55c61a){_0x1475b5[_0xdfd3('0x1f')]=_0x55c61a;if(_0x375b3c[_0xdfd3('0x2f')][_0xdfd3('0x40')]){_0x15893a['include']=[{'all':!![]}];}return db[_0xdfd3('0x2b')][_0xdfd3('0x41')](_0x15893a);})['then'](function(_0x3b22b0){_0x1475b5[_0xdfd3('0x42')]=_0x3b22b0;return _0x1475b5;})[_0xdfd3('0x24')](respondWithFilteredResult(_0x509bd1,_0x15893a))[_0xdfd3('0x43')](handleError(_0x509bd1,null));};exports[_0xdfd3('0x44')]=function(_0x3491cf,_0x5f04a9){var _0x22ef82={'raw':![],'where':{'id':_0x3491cf[_0xdfd3('0x45')]['id']}},_0x10db9a={};_0x10db9a[_0xdfd3('0x32')]=_[_0xdfd3('0x30')](db['Automation'][_0xdfd3('0x2c')]);_0x10db9a[_0xdfd3('0x2f')]=_[_0xdfd3('0x30')](_0x3491cf['query']);_0x10db9a[_0xdfd3('0x39')]=_['intersection'](_0x10db9a[_0xdfd3('0x32')],_0x10db9a['query']);_0x22ef82[_0xdfd3('0x33')]=_[_0xdfd3('0x31')](_0x10db9a[_0xdfd3('0x32')],qs[_0xdfd3('0x34')](_0x3491cf['query'][_0xdfd3('0x34')]));_0x22ef82[_0xdfd3('0x33')]=_0x22ef82['attributes'][_0xdfd3('0x46')]?_0x22ef82['attributes']:_0x10db9a[_0xdfd3('0x32')];if(_0x3491cf[_0xdfd3('0x2f')][_0xdfd3('0x40')]){_0x22ef82[_0xdfd3('0x47')]=[{'all':!![]}];}_0x22ef82=_[_0xdfd3('0x3c')]({},_0x22ef82,_0x3491cf[_0xdfd3('0x3f')]);return db[_0xdfd3('0x2b')]['find'](_0x22ef82)[_0xdfd3('0x24')](handleEntityNotFound(_0x5f04a9,null))[_0xdfd3('0x24')](respondWithResult(_0x5f04a9,null))[_0xdfd3('0x43')](handleError(_0x5f04a9,null));};exports['create']=function(_0x315a0a,_0x289e0f){return db[_0xdfd3('0x2b')]['create'](_0x315a0a['body'],{})[_0xdfd3('0x24')](respondWithResult(_0x289e0f,0xc9))[_0xdfd3('0x43')](handleError(_0x289e0f,null));};exports[_0xdfd3('0x23')]=function(_0x50f656,_0x4b4f78){if(_0x50f656[_0xdfd3('0x48')]['id']){delete _0x50f656['body']['id'];}return db[_0xdfd3('0x2b')][_0xdfd3('0x49')]({'where':{'id':_0x50f656[_0xdfd3('0x45')]['id']}})[_0xdfd3('0x24')](handleEntityNotFound(_0x4b4f78,null))['then'](saveUpdates(_0x50f656[_0xdfd3('0x48')],null))[_0xdfd3('0x24')](respondWithResult(_0x4b4f78,null))[_0xdfd3('0x43')](handleError(_0x4b4f78,null));};exports[_0xdfd3('0x25')]=function(_0x54f455,_0x4857d4){return db[_0xdfd3('0x2b')][_0xdfd3('0x49')]({'where':{'id':_0x54f455['params']['id']}})[_0xdfd3('0x24')](handleEntityNotFound(_0x4857d4,null))[_0xdfd3('0x24')](removeEntity(_0x4857d4,null))[_0xdfd3('0x43')](handleError(_0x4857d4,null));};exports[_0xdfd3('0x4a')]=function(_0x1e32fc,_0xf712b5,_0x9c6576){return db[_0xdfd3('0x4b')]['find']({'where':{'id':_0x1e32fc[_0xdfd3('0x45')]['id']}})[_0xdfd3('0x24')](handleEntityNotFound(_0xf712b5,null))[_0xdfd3('0x24')](function(_0x419f58){if(_0x419f58){return _0x419f58['addConditions'](_0x1e32fc[_0xdfd3('0x48')]['ids'],_[_0xdfd3('0x4c')](_0x1e32fc[_0xdfd3('0x48')],[_0xdfd3('0x4d'),'id'])||{});}})[_0xdfd3('0x24')](respondWithResult(_0xf712b5,null))[_0xdfd3('0x43')](handleError(_0xf712b5,null));};exports[_0xdfd3('0x4e')]=function(_0x59ead7,_0x512c42,_0x5092ef){var _0x36d042={};var _0x1de748={};var _0x22c2b3;var _0x3145a2;return db[_0xdfd3('0x2b')][_0xdfd3('0x4f')]({'where':{'id':_0x59ead7[_0xdfd3('0x45')]['id']}})['then'](handleEntityNotFound(_0x512c42,null))[_0xdfd3('0x24')](function(_0x21987c){if(_0x21987c){_0x22c2b3=_0x21987c;_0x1de748[_0xdfd3('0x32')]=_['keys'](db[_0xdfd3('0x4b')][_0xdfd3('0x2c')]);_0x1de748[_0xdfd3('0x2f')]=_[_0xdfd3('0x30')](_0x59ead7[_0xdfd3('0x2f')]);_0x1de748['filters']=_['intersection'](_0x1de748[_0xdfd3('0x32')],_0x1de748[_0xdfd3('0x2f')]);_0x36d042['attributes']=_['intersection'](_0x1de748[_0xdfd3('0x32')],qs[_0xdfd3('0x34')](_0x59ead7[_0xdfd3('0x2f')][_0xdfd3('0x34')]));_0x36d042[_0xdfd3('0x33')]=_0x36d042['attributes'][_0xdfd3('0x46')]?_0x36d042[_0xdfd3('0x33')]:_0x1de748[_0xdfd3('0x32')];_0x36d042[_0xdfd3('0x36')]=qs[_0xdfd3('0x37')](_0x59ead7[_0xdfd3('0x2f')][_0xdfd3('0x37')]);_0x36d042[_0xdfd3('0x3b')]=qs['filters'](_[_0xdfd3('0x38')](_0x59ead7[_0xdfd3('0x2f')],_0x1de748[_0xdfd3('0x39')]));if(_0x59ead7['query'][_0xdfd3('0x3a')]){_0x36d042[_0xdfd3('0x3b')]=_[_0xdfd3('0x3c')](_0x36d042[_0xdfd3('0x3b')],{'$or':_[_0xdfd3('0x2a')](_0x36d042[_0xdfd3('0x33')],function(_0x2f9d81){var _0x3b23c3={};_0x3b23c3[_0x2f9d81]={'$like':'%'+_0x59ead7[_0xdfd3('0x2f')][_0xdfd3('0x3a')]+'%'};return _0x3b23c3;})});}_0x36d042=_['merge']({},_0x36d042,_0x59ead7[_0xdfd3('0x3f')]);return _0x22c2b3['getConditions'](_0x36d042);}})[_0xdfd3('0x24')](function(_0x141a37){if(_0x141a37){_0x3145a2=_0x141a37[_0xdfd3('0x46')];if(!_0x59ead7[_0xdfd3('0x2f')][_0xdfd3('0x50')](_0xdfd3('0x35'))){_0x36d042[_0xdfd3('0x1e')]=qs[_0xdfd3('0x1e')](_0x59ead7[_0xdfd3('0x2f')][_0xdfd3('0x1e')]);_0x36d042[_0xdfd3('0x1c')]=qs['offset'](_0x59ead7[_0xdfd3('0x2f')][_0xdfd3('0x1c')]);}return _0x22c2b3[_0xdfd3('0x4e')](_0x36d042);}})['then'](function(_0x2a2041){if(_0x2a2041){return _0x2a2041?{'count':_0x3145a2,'rows':_0x2a2041}:null;}})['then'](respondWithResult(_0x512c42,null))[_0xdfd3('0x43')](handleError(_0x512c42,null));};exports[_0xdfd3('0x51')]=function(_0x19627d,_0x44ec3c,_0x533e89){return db[_0xdfd3('0x52')][_0xdfd3('0x49')]({'where':{'id':_0x19627d[_0xdfd3('0x45')]['id']}})['then'](handleEntityNotFound(_0x44ec3c,null))[_0xdfd3('0x24')](function(_0x36dffe){if(_0x36dffe){return _0x36dffe[_0xdfd3('0x51')](_0x19627d['body'][_0xdfd3('0x4d')],_[_0xdfd3('0x4c')](_0x19627d[_0xdfd3('0x48')],[_0xdfd3('0x4d'),'id'])||{});}})[_0xdfd3('0x24')](respondWithResult(_0x44ec3c,null))[_0xdfd3('0x43')](handleError(_0x44ec3c,null));};exports[_0xdfd3('0x53')]=function(_0x2030a2,_0x382b29,_0x11c4a1){var _0x5061f2={};var _0x4e271f={};var _0x5aaf8e;var _0x3ffd5e;return db[_0xdfd3('0x2b')]['findOne']({'where':{'id':_0x2030a2[_0xdfd3('0x45')]['id']}})[_0xdfd3('0x24')](handleEntityNotFound(_0x382b29,null))['then'](function(_0x282cdd){if(_0x282cdd){_0x5aaf8e=_0x282cdd;_0x4e271f[_0xdfd3('0x32')]=_[_0xdfd3('0x30')](db[_0xdfd3('0x52')][_0xdfd3('0x2c')]);_0x4e271f[_0xdfd3('0x2f')]=_[_0xdfd3('0x30')](_0x2030a2[_0xdfd3('0x2f')]);_0x4e271f[_0xdfd3('0x39')]=_[_0xdfd3('0x31')](_0x4e271f[_0xdfd3('0x32')],_0x4e271f[_0xdfd3('0x2f')]);_0x5061f2[_0xdfd3('0x33')]=_['intersection'](_0x4e271f[_0xdfd3('0x32')],qs[_0xdfd3('0x34')](_0x2030a2[_0xdfd3('0x2f')][_0xdfd3('0x34')]));_0x5061f2[_0xdfd3('0x33')]=_0x5061f2[_0xdfd3('0x33')][_0xdfd3('0x46')]?_0x5061f2[_0xdfd3('0x33')]:_0x4e271f[_0xdfd3('0x32')];_0x5061f2[_0xdfd3('0x36')]=qs['sort'](_0x2030a2[_0xdfd3('0x2f')][_0xdfd3('0x37')]);_0x5061f2[_0xdfd3('0x3b')]=qs[_0xdfd3('0x39')](_[_0xdfd3('0x38')](_0x2030a2[_0xdfd3('0x2f')],_0x4e271f[_0xdfd3('0x39')]));if(_0x2030a2[_0xdfd3('0x2f')][_0xdfd3('0x3a')]){_0x5061f2[_0xdfd3('0x3b')]=_[_0xdfd3('0x3c')](_0x5061f2['where'],{'$or':_[_0xdfd3('0x2a')](_0x5061f2['attributes'],function(_0x4e3df4){var _0x1e3621={};_0x1e3621[_0x4e3df4]={'$like':'%'+_0x2030a2[_0xdfd3('0x2f')][_0xdfd3('0x3a')]+'%'};return _0x1e3621;})});}_0x5061f2=_['merge']({},_0x5061f2,_0x2030a2[_0xdfd3('0x3f')]);return _0x5aaf8e[_0xdfd3('0x53')](_0x5061f2);}})[_0xdfd3('0x24')](function(_0x19e10c){if(_0x19e10c){_0x3ffd5e=_0x19e10c[_0xdfd3('0x46')];if(!_0x2030a2[_0xdfd3('0x2f')]['hasOwnProperty'](_0xdfd3('0x35'))){_0x5061f2[_0xdfd3('0x1e')]=qs[_0xdfd3('0x1e')](_0x2030a2[_0xdfd3('0x2f')][_0xdfd3('0x1e')]);_0x5061f2[_0xdfd3('0x1c')]=qs['offset'](_0x2030a2[_0xdfd3('0x2f')][_0xdfd3('0x1c')]);}return _0x5aaf8e[_0xdfd3('0x53')](_0x5061f2);}})[_0xdfd3('0x24')](function(_0x1d1c09){if(_0x1d1c09){return _0x1d1c09?{'count':_0x3ffd5e,'rows':_0x1d1c09}:null;}})[_0xdfd3('0x24')](respondWithResult(_0x382b29,null))[_0xdfd3('0x43')](handleError(_0x382b29,null));};
\ No newline at end of file
+var _0x78e9=['order','getActions','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','stack','name','send','map','rawAttributes','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','pick','merge','VIRTUAL','Automation','includeAll','include','catch','show','params','options','find','create','body','addConditions','Condition','ids','omit','getConditions','findOne','filter','nolimit','addActions'];(function(_0x2cbc47,_0x2daf86){var _0x2b429e=function(_0x2e5582){while(--_0x2e5582){_0x2cbc47['push'](_0x2cbc47['shift']());}};_0x2b429e(++_0x2daf86);}(_0x78e9,0x19c));var _0x978e=function(_0x383643,_0x9202f8){_0x383643=_0x383643-0x0;var _0xdb0467=_0x78e9[_0x383643];return _0xdb0467;};'use strict';var emlformat=require(_0x978e('0x0'));var rimraf=require(_0x978e('0x1'));var zipdir=require(_0x978e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x978e('0x3'));var moment=require(_0x978e('0x4'));var BPromise=require(_0x978e('0x5'));var Mustache=require(_0x978e('0x6'));var util=require(_0x978e('0x7'));var path=require('path');var sox=require(_0x978e('0x8'));var csv=require('to-csv');var ejs=require(_0x978e('0x9'));var fs=require('fs');var fs_extra=require(_0x978e('0xa'));var _=require(_0x978e('0xb'));var squel=require(_0x978e('0xc'));var crypto=require(_0x978e('0xd'));var jsforce=require(_0x978e('0xe'));var deskjs=require(_0x978e('0xf'));var toCsv=require(_0x978e('0x10'));var querystring=require(_0x978e('0x11'));var Papa=require(_0x978e('0x12'));var Redis=require(_0x978e('0x13'));var authService=require(_0x978e('0x14'));var qs=require(_0x978e('0x15'));var as=require(_0x978e('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x978e('0x17'))('api');var utils=require(_0x978e('0x18'));var config=require(_0x978e('0x19'));var licenseUtil=require(_0x978e('0x1a'));var db=require(_0x978e('0x1b'))['db'];function respondWithStatusCode(_0x176f42,_0x43fd42){_0x43fd42=_0x43fd42||0xcc;return function(_0xc349c7){if(_0xc349c7){return _0x176f42['sendStatus'](_0x43fd42);}return _0x176f42[_0x978e('0x1c')](_0x43fd42)[_0x978e('0x1d')]();};}function respondWithResult(_0x365f32,_0x2dc69f){_0x2dc69f=_0x2dc69f||0xc8;return function(_0x403b5b){if(_0x403b5b){return _0x365f32[_0x978e('0x1c')](_0x2dc69f)[_0x978e('0x1e')](_0x403b5b);}};}function respondWithFilteredResult(_0x3cab67,_0x104e5f){return function(_0x569c52){if(_0x569c52){var _0x28f20d=typeof _0x104e5f[_0x978e('0x1f')]===_0x978e('0x20')&&typeof _0x104e5f[_0x978e('0x21')]===_0x978e('0x20');var _0x26cebc=_0x569c52['count'];var _0x339fca=_0x28f20d?0x0:_0x104e5f['offset'];var _0x43f14a=_0x28f20d?_0x569c52[_0x978e('0x22')]:_0x104e5f['offset']+_0x104e5f[_0x978e('0x21')];var _0x413907;if(_0x43f14a>=_0x26cebc){_0x43f14a=_0x26cebc;_0x413907=0xc8;}else{_0x413907=0xce;}_0x3cab67[_0x978e('0x1c')](_0x413907);return _0x3cab67[_0x978e('0x23')]('Content-Range',_0x339fca+'-'+_0x43f14a+'/'+_0x26cebc)[_0x978e('0x1e')](_0x569c52);}return null;};}function patchUpdates(_0x3816b2){return function(_0x491a70){try{jsonpatch[_0x978e('0x24')](_0x491a70,_0x3816b2,!![]);}catch(_0x194613){return BPromise[_0x978e('0x25')](_0x194613);}return _0x491a70[_0x978e('0x26')]();};}function saveUpdates(_0x2d966c,_0x45520c){return function(_0x3b6c02){if(_0x3b6c02){return _0x3b6c02[_0x978e('0x27')](_0x2d966c)['then'](function(_0x53afce){return _0x53afce;});}return null;};}function removeEntity(_0x3a40fc,_0x6a7432){return function(_0x31b60f){if(_0x31b60f){return _0x31b60f['destroy']()[_0x978e('0x28')](function(){_0x3a40fc[_0x978e('0x1c')](0xcc)[_0x978e('0x1d')]();});}};}function handleEntityNotFound(_0x2cda5a,_0x5e6fe4){return function(_0x4cf5b0){if(!_0x4cf5b0){_0x2cda5a['sendStatus'](0x194);}return _0x4cf5b0;};}function handleError(_0x4a3550,_0x1bb55c){_0x1bb55c=_0x1bb55c||0x1f4;return function(_0x11c021){logger['error'](_0x11c021[_0x978e('0x29')]);if(_0x11c021[_0x978e('0x2a')]){delete _0x11c021['name'];}_0x4a3550['status'](_0x1bb55c)[_0x978e('0x2b')](_0x11c021);};}exports['index']=function(_0x3438c4,_0x495018){var _0x2e655={},_0x4971f3={},_0x356529={'count':0x0,'rows':[]};var _0x1ba755=_[_0x978e('0x2c')](db['Automation'][_0x978e('0x2d')],function(_0x284ca0){return{'name':_0x284ca0['fieldName'],'type':_0x284ca0['type'][_0x978e('0x2e')]};});_0x4971f3[_0x978e('0x2f')]=_[_0x978e('0x2c')](_0x1ba755,_0x978e('0x2a'));_0x4971f3['query']=_[_0x978e('0x30')](_0x3438c4[_0x978e('0x31')]);_0x4971f3['filters']=_[_0x978e('0x32')](_0x4971f3[_0x978e('0x2f')],_0x4971f3[_0x978e('0x31')]);_0x2e655[_0x978e('0x33')]=_[_0x978e('0x32')](_0x4971f3[_0x978e('0x2f')],qs[_0x978e('0x34')](_0x3438c4[_0x978e('0x31')][_0x978e('0x34')]));_0x2e655[_0x978e('0x33')]=_0x2e655['attributes'][_0x978e('0x35')]?_0x2e655[_0x978e('0x33')]:_0x4971f3[_0x978e('0x2f')];if(!_0x3438c4['query'][_0x978e('0x36')]('nolimit')){_0x2e655[_0x978e('0x21')]=qs['limit'](_0x3438c4['query'][_0x978e('0x21')]);_0x2e655['offset']=qs[_0x978e('0x1f')](_0x3438c4[_0x978e('0x31')][_0x978e('0x1f')]);}_0x2e655['order']=qs[_0x978e('0x37')](_0x3438c4[_0x978e('0x31')]['sort']);_0x2e655[_0x978e('0x38')]=qs[_0x978e('0x39')](_[_0x978e('0x3a')](_0x3438c4[_0x978e('0x31')],_0x4971f3[_0x978e('0x39')]),_0x1ba755);if(_0x3438c4[_0x978e('0x31')]['filter']){_0x2e655['where']=_[_0x978e('0x3b')](_0x2e655[_0x978e('0x38')],{'$or':_[_0x978e('0x2c')](_0x1ba755,function(_0x2d3da6){if(_0x2d3da6['type']!==_0x978e('0x3c')){var _0x42c721={};_0x42c721[_0x2d3da6[_0x978e('0x2a')]]={'$like':'%'+_0x3438c4[_0x978e('0x31')]['filter']+'%'};return _0x42c721;}})});}_0x2e655=_[_0x978e('0x3b')]({},_0x2e655,_0x3438c4['options']);var _0x45e56a={'where':_0x2e655['where']};return db[_0x978e('0x3d')][_0x978e('0x22')](_0x45e56a)[_0x978e('0x28')](function(_0x160052){_0x356529[_0x978e('0x22')]=_0x160052;if(_0x3438c4[_0x978e('0x31')][_0x978e('0x3e')]){_0x2e655[_0x978e('0x3f')]=[{'all':!![]}];}return db['Automation']['findAll'](_0x2e655);})[_0x978e('0x28')](function(_0x1909db){_0x356529['rows']=_0x1909db;return _0x356529;})[_0x978e('0x28')](respondWithFilteredResult(_0x495018,_0x2e655))[_0x978e('0x40')](handleError(_0x495018,null));};exports[_0x978e('0x41')]=function(_0x5364f7,_0x14fd49){var _0x1001a3={'raw':![],'where':{'id':_0x5364f7[_0x978e('0x42')]['id']}},_0x4259fd={};_0x4259fd[_0x978e('0x2f')]=_[_0x978e('0x30')](db['Automation'][_0x978e('0x2d')]);_0x4259fd['query']=_[_0x978e('0x30')](_0x5364f7[_0x978e('0x31')]);_0x4259fd[_0x978e('0x39')]=_[_0x978e('0x32')](_0x4259fd['model'],_0x4259fd[_0x978e('0x31')]);_0x1001a3[_0x978e('0x33')]=_[_0x978e('0x32')](_0x4259fd['model'],qs[_0x978e('0x34')](_0x5364f7[_0x978e('0x31')][_0x978e('0x34')]));_0x1001a3['attributes']=_0x1001a3[_0x978e('0x33')][_0x978e('0x35')]?_0x1001a3[_0x978e('0x33')]:_0x4259fd[_0x978e('0x2f')];if(_0x5364f7[_0x978e('0x31')][_0x978e('0x3e')]){_0x1001a3[_0x978e('0x3f')]=[{'all':!![]}];}_0x1001a3=_[_0x978e('0x3b')]({},_0x1001a3,_0x5364f7[_0x978e('0x43')]);return db[_0x978e('0x3d')][_0x978e('0x44')](_0x1001a3)[_0x978e('0x28')](handleEntityNotFound(_0x14fd49,null))['then'](respondWithResult(_0x14fd49,null))[_0x978e('0x40')](handleError(_0x14fd49,null));};exports[_0x978e('0x45')]=function(_0x4d3555,_0xc8623e){return db[_0x978e('0x3d')][_0x978e('0x45')](_0x4d3555[_0x978e('0x46')],{})[_0x978e('0x28')](respondWithResult(_0xc8623e,0xc9))[_0x978e('0x40')](handleError(_0xc8623e,null));};exports[_0x978e('0x27')]=function(_0x28e918,_0x4706ab){if(_0x28e918[_0x978e('0x46')]['id']){delete _0x28e918[_0x978e('0x46')]['id'];}return db[_0x978e('0x3d')]['find']({'where':{'id':_0x28e918[_0x978e('0x42')]['id']}})[_0x978e('0x28')](handleEntityNotFound(_0x4706ab,null))['then'](saveUpdates(_0x28e918[_0x978e('0x46')],null))[_0x978e('0x28')](respondWithResult(_0x4706ab,null))[_0x978e('0x40')](handleError(_0x4706ab,null));};exports['destroy']=function(_0x3c6732,_0x4bf823){return db['Automation']['find']({'where':{'id':_0x3c6732[_0x978e('0x42')]['id']}})['then'](handleEntityNotFound(_0x4bf823,null))[_0x978e('0x28')](removeEntity(_0x4bf823,null))[_0x978e('0x40')](handleError(_0x4bf823,null));};exports[_0x978e('0x47')]=function(_0x2f1fb6,_0x259370,_0x3d29f0){return db[_0x978e('0x48')][_0x978e('0x44')]({'where':{'id':_0x2f1fb6[_0x978e('0x42')]['id']}})[_0x978e('0x28')](handleEntityNotFound(_0x259370,null))[_0x978e('0x28')](function(_0x1fe633){if(_0x1fe633){return _0x1fe633[_0x978e('0x47')](_0x2f1fb6['body'][_0x978e('0x49')],_[_0x978e('0x4a')](_0x2f1fb6['body'],[_0x978e('0x49'),'id'])||{});}})['then'](respondWithResult(_0x259370,null))[_0x978e('0x40')](handleError(_0x259370,null));};exports[_0x978e('0x4b')]=function(_0x3f1d67,_0x298ae8,_0x105aa8){var _0x2ff7db={};var _0x57dd9f={};var _0x5ad6ba;var _0x4e6706;return db[_0x978e('0x3d')][_0x978e('0x4c')]({'where':{'id':_0x3f1d67[_0x978e('0x42')]['id']}})[_0x978e('0x28')](handleEntityNotFound(_0x298ae8,null))[_0x978e('0x28')](function(_0x32e509){if(_0x32e509){_0x5ad6ba=_0x32e509;_0x57dd9f[_0x978e('0x2f')]=_[_0x978e('0x30')](db[_0x978e('0x48')][_0x978e('0x2d')]);_0x57dd9f[_0x978e('0x31')]=_[_0x978e('0x30')](_0x3f1d67['query']);_0x57dd9f[_0x978e('0x39')]=_[_0x978e('0x32')](_0x57dd9f[_0x978e('0x2f')],_0x57dd9f[_0x978e('0x31')]);_0x2ff7db[_0x978e('0x33')]=_[_0x978e('0x32')](_0x57dd9f[_0x978e('0x2f')],qs[_0x978e('0x34')](_0x3f1d67[_0x978e('0x31')][_0x978e('0x34')]));_0x2ff7db[_0x978e('0x33')]=_0x2ff7db['attributes'][_0x978e('0x35')]?_0x2ff7db['attributes']:_0x57dd9f[_0x978e('0x2f')];_0x2ff7db['order']=qs[_0x978e('0x37')](_0x3f1d67[_0x978e('0x31')][_0x978e('0x37')]);_0x2ff7db[_0x978e('0x38')]=qs[_0x978e('0x39')](_['pick'](_0x3f1d67[_0x978e('0x31')],_0x57dd9f[_0x978e('0x39')]));if(_0x3f1d67[_0x978e('0x31')][_0x978e('0x4d')]){_0x2ff7db[_0x978e('0x38')]=_[_0x978e('0x3b')](_0x2ff7db['where'],{'$or':_[_0x978e('0x2c')](_0x2ff7db[_0x978e('0x33')],function(_0xef707f){var _0x74a7ed={};_0x74a7ed[_0xef707f]={'$like':'%'+_0x3f1d67[_0x978e('0x31')][_0x978e('0x4d')]+'%'};return _0x74a7ed;})});}_0x2ff7db=_[_0x978e('0x3b')]({},_0x2ff7db,_0x3f1d67[_0x978e('0x43')]);return _0x5ad6ba[_0x978e('0x4b')](_0x2ff7db);}})[_0x978e('0x28')](function(_0xe996eb){if(_0xe996eb){_0x4e6706=_0xe996eb['length'];if(!_0x3f1d67['query'][_0x978e('0x36')](_0x978e('0x4e'))){_0x2ff7db['limit']=qs[_0x978e('0x21')](_0x3f1d67[_0x978e('0x31')][_0x978e('0x21')]);_0x2ff7db[_0x978e('0x1f')]=qs[_0x978e('0x1f')](_0x3f1d67[_0x978e('0x31')][_0x978e('0x1f')]);}return _0x5ad6ba[_0x978e('0x4b')](_0x2ff7db);}})[_0x978e('0x28')](function(_0x2f0bb3){if(_0x2f0bb3){return _0x2f0bb3?{'count':_0x4e6706,'rows':_0x2f0bb3}:null;}})[_0x978e('0x28')](respondWithResult(_0x298ae8,null))[_0x978e('0x40')](handleError(_0x298ae8,null));};exports[_0x978e('0x4f')]=function(_0xefbe2b,_0x2d50ec,_0x58d312){return db['Action'][_0x978e('0x44')]({'where':{'id':_0xefbe2b['params']['id']}})[_0x978e('0x28')](handleEntityNotFound(_0x2d50ec,null))['then'](function(_0xe0cee){if(_0xe0cee){return _0xe0cee['addActions'](_0xefbe2b[_0x978e('0x46')][_0x978e('0x49')],_[_0x978e('0x4a')](_0xefbe2b['body'],[_0x978e('0x49'),'id'])||{});}})[_0x978e('0x28')](respondWithResult(_0x2d50ec,null))[_0x978e('0x40')](handleError(_0x2d50ec,null));};exports['getActions']=function(_0x5425f5,_0x3d0142,_0x586d64){var _0x190ab5={};var _0xff704e={};var _0x2f6478;var _0x1d6ec4;return db[_0x978e('0x3d')][_0x978e('0x4c')]({'where':{'id':_0x5425f5[_0x978e('0x42')]['id']}})[_0x978e('0x28')](handleEntityNotFound(_0x3d0142,null))[_0x978e('0x28')](function(_0x2c536f){if(_0x2c536f){_0x2f6478=_0x2c536f;_0xff704e['model']=_[_0x978e('0x30')](db['Action'][_0x978e('0x2d')]);_0xff704e[_0x978e('0x31')]=_[_0x978e('0x30')](_0x5425f5[_0x978e('0x31')]);_0xff704e['filters']=_[_0x978e('0x32')](_0xff704e[_0x978e('0x2f')],_0xff704e[_0x978e('0x31')]);_0x190ab5[_0x978e('0x33')]=_[_0x978e('0x32')](_0xff704e[_0x978e('0x2f')],qs[_0x978e('0x34')](_0x5425f5[_0x978e('0x31')]['fields']));_0x190ab5['attributes']=_0x190ab5[_0x978e('0x33')]['length']?_0x190ab5[_0x978e('0x33')]:_0xff704e[_0x978e('0x2f')];_0x190ab5[_0x978e('0x50')]=qs[_0x978e('0x37')](_0x5425f5[_0x978e('0x31')][_0x978e('0x37')]);_0x190ab5[_0x978e('0x38')]=qs['filters'](_[_0x978e('0x3a')](_0x5425f5[_0x978e('0x31')],_0xff704e[_0x978e('0x39')]));if(_0x5425f5[_0x978e('0x31')]['filter']){_0x190ab5['where']=_[_0x978e('0x3b')](_0x190ab5[_0x978e('0x38')],{'$or':_['map'](_0x190ab5[_0x978e('0x33')],function(_0x5c735b){var _0x18c4ff={};_0x18c4ff[_0x5c735b]={'$like':'%'+_0x5425f5[_0x978e('0x31')]['filter']+'%'};return _0x18c4ff;})});}_0x190ab5=_[_0x978e('0x3b')]({},_0x190ab5,_0x5425f5['options']);return _0x2f6478[_0x978e('0x51')](_0x190ab5);}})['then'](function(_0xea937){if(_0xea937){_0x1d6ec4=_0xea937[_0x978e('0x35')];if(!_0x5425f5[_0x978e('0x31')]['hasOwnProperty'](_0x978e('0x4e'))){_0x190ab5[_0x978e('0x21')]=qs['limit'](_0x5425f5[_0x978e('0x31')][_0x978e('0x21')]);_0x190ab5[_0x978e('0x1f')]=qs[_0x978e('0x1f')](_0x5425f5[_0x978e('0x31')]['offset']);}return _0x2f6478[_0x978e('0x51')](_0x190ab5);}})[_0x978e('0x28')](function(_0x45e4f9){if(_0x45e4f9){return _0x45e4f9?{'count':_0x1d6ec4,'rows':_0x45e4f9}:null;}})[_0x978e('0x28')](respondWithResult(_0x3d0142,null))[_0x978e('0x40')](handleError(_0x3d0142,null));};
\ No newline at end of file
index 84e561d..287f34b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0645=['Automation','tools_automations','lodash','util','api','bluebird','request-promise','path','rimraf','./automation.attributes','define'];(function(_0x38cd7c,_0x2442dd){var _0x2be652=function(_0xebe18a){while(--_0xebe18a){_0x38cd7c['push'](_0x38cd7c['shift']());}};_0x2be652(++_0x2442dd);}(_0x0645,0x1c5));var _0x5064=function(_0xeaf582,_0xe6f279){_0xeaf582=_0xeaf582-0x0;var _0x182374=_0x0645[_0xeaf582];return _0x182374;};'use strict';var _=require(_0x5064('0x0'));var util=require(_0x5064('0x1'));var logger=require('../../config/logger')(_0x5064('0x2'));var moment=require('moment');var BPromise=require(_0x5064('0x3'));var rp=require(_0x5064('0x4'));var fs=require('fs');var path=require(_0x5064('0x5'));var rimraf=require(_0x5064('0x6'));var config=require('../../config/environment');var attributes=require(_0x5064('0x7'));module['exports']=function(_0x37c18c,_0x20a261){return _0x37c18c[_0x5064('0x8')](_0x5064('0x9'),attributes,{'tableName':_0x5064('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2119=['util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./automation.attributes','exports','define','Automation','tools_automations','lodash'];(function(_0x289802,_0x537d3e){var _0x2db8fc=function(_0x115ea9){while(--_0x115ea9){_0x289802['push'](_0x289802['shift']());}};_0x2db8fc(++_0x537d3e);}(_0x2119,0x16b));var _0x9211=function(_0x2ce914,_0xcd8f3c){_0x2ce914=_0x2ce914-0x0;var _0x459bb7=_0x2119[_0x2ce914];return _0x459bb7;};'use strict';var _=require(_0x9211('0x0'));var util=require(_0x9211('0x1'));var logger=require('../../config/logger')(_0x9211('0x2'));var moment=require(_0x9211('0x3'));var BPromise=require(_0x9211('0x4'));var rp=require(_0x9211('0x5'));var fs=require('fs');var path=require(_0x9211('0x6'));var rimraf=require(_0x9211('0x7'));var config=require(_0x9211('0x8'));var attributes=require(_0x9211('0x9'));module[_0x9211('0xa')]=function(_0x5d929e,_0x21e465){return _0x5d929e[_0x9211('0xb')](_0x9211('0xc'),attributes,{'tableName':_0x9211('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 422ef27..95d4a6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x556a=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','Automation,\x20%s,\x20%s','request\x20sent','debug','Automation,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x2a7d88,_0x655229){var _0x26a5bb=function(_0x1f96e1){while(--_0x1f96e1){_0x2a7d88['push'](_0x2a7d88['shift']());}};_0x26a5bb(++_0x655229);}(_0x556a,0x1dd));var _0xa556=function(_0x45e83a,_0x430070){_0x45e83a=_0x45e83a-0x0;var _0x2e46e9=_0x556a[_0x45e83a];return _0x2e46e9;};'use strict';var _=require(_0xa556('0x0'));var util=require(_0xa556('0x1'));var moment=require(_0xa556('0x2'));var BPromise=require(_0xa556('0x3'));var rs=require(_0xa556('0x4'));var fs=require('fs');var Redis=require(_0xa556('0x5'));var db=require(_0xa556('0x6'))['db'];var utils=require(_0xa556('0x7'));var logger=require(_0xa556('0x8'))('rpc');var config=require(_0xa556('0x9'));var jayson=require(_0xa556('0xa'));var client=jayson[_0xa556('0xb')][_0xa556('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x358b8c,_0x5a745c,_0x2c9a0c){return new BPromise(function(_0x644538,_0x17c2c2){return client[_0xa556('0xd')](_0x358b8c,_0x2c9a0c)['then'](function(_0x44ea8e){logger[_0xa556('0xe')](_0xa556('0xf'),_0x5a745c,_0xa556('0x10'));logger[_0xa556('0x11')](_0xa556('0x12'),_0x5a745c,_0xa556('0x10'),JSON[_0xa556('0x13')](_0x44ea8e));if(_0x44ea8e['error']){if(_0x44ea8e[_0xa556('0x14')]['code']===0x1f4){logger[_0xa556('0x14')]('Automation,\x20%s,\x20%s',_0x5a745c,_0x44ea8e['error'][_0xa556('0x15')]);return _0x17c2c2(_0x44ea8e[_0xa556('0x14')][_0xa556('0x15')]);}logger[_0xa556('0x14')]('Automation,\x20%s,\x20%s',_0x5a745c,_0x44ea8e[_0xa556('0x14')][_0xa556('0x15')]);return _0x644538(_0x44ea8e[_0xa556('0x14')][_0xa556('0x15')]);}else{logger[_0xa556('0xe')]('Automation,\x20%s,\x20%s',_0x5a745c,'request\x20sent');_0x644538(_0x44ea8e[_0xa556('0x16')][_0xa556('0x15')]);}})['catch'](function(_0x3f8bd7){logger['error']('Automation,\x20%s,\x20%s',_0x5a745c,_0x3f8bd7);_0x17c2c2(_0x3f8bd7);});});}
\ No newline at end of file
+var _0x7d06=['Automation,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','then','info'];(function(_0x4b2436,_0x452299){var _0x4f5ab2=function(_0x5c6679){while(--_0x5c6679){_0x4b2436['push'](_0x4b2436['shift']());}};_0x4f5ab2(++_0x452299);}(_0x7d06,0x158));var _0x67d0=function(_0x1b81c2,_0x4438eb){_0x1b81c2=_0x1b81c2-0x0;var _0x368748=_0x7d06[_0x1b81c2];return _0x368748;};'use strict';var _=require(_0x67d0('0x0'));var util=require(_0x67d0('0x1'));var moment=require(_0x67d0('0x2'));var BPromise=require(_0x67d0('0x3'));var rs=require(_0x67d0('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x67d0('0x5'))['db'];var utils=require(_0x67d0('0x6'));var logger=require(_0x67d0('0x7'))('rpc');var config=require(_0x67d0('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x67d0('0x9')][_0x67d0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x367f1d,_0xe4789b,_0x3c9976){return new BPromise(function(_0x481a08,_0x358986){return client['request'](_0x367f1d,_0x3c9976)[_0x67d0('0xb')](function(_0x5916d0){logger[_0x67d0('0xc')](_0x67d0('0xd'),_0xe4789b,_0x67d0('0xe'));logger[_0x67d0('0xf')]('Automation,\x20%s,\x20%s,\x20%s',_0xe4789b,_0x67d0('0xe'),JSON['stringify'](_0x5916d0));if(_0x5916d0['error']){if(_0x5916d0[_0x67d0('0x10')][_0x67d0('0x11')]===0x1f4){logger['error'](_0x67d0('0xd'),_0xe4789b,_0x5916d0[_0x67d0('0x10')]['message']);return _0x358986(_0x5916d0[_0x67d0('0x10')]['message']);}logger[_0x67d0('0x10')](_0x67d0('0xd'),_0xe4789b,_0x5916d0[_0x67d0('0x10')][_0x67d0('0x12')]);return _0x481a08(_0x5916d0[_0x67d0('0x10')][_0x67d0('0x12')]);}else{logger[_0x67d0('0xc')](_0x67d0('0xd'),_0xe4789b,_0x67d0('0xe'));_0x481a08(_0x5916d0[_0x67d0('0x13')]['message']);}})[_0x67d0('0x14')](function(_0xa1b889){logger['error'](_0x67d0('0xd'),_0xe4789b,_0xa1b889);_0x358986(_0xa1b889);});});}
\ No newline at end of file
index 425d2c7..f491648 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bbd=['delete','destroy','multer','util','path','connect-timeout','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/conditions','/:id/actions','getActions','create','post','put'];(function(_0x5e6515,_0x2954b1){var _0xd33ce2=function(_0x5ce7ea){while(--_0x5ce7ea){_0x5e6515['push'](_0x5e6515['shift']());}};_0xd33ce2(++_0x2954b1);}(_0x7bbd,0x11f));var _0xd7bb=function(_0x5e9fdf,_0x366cb4){_0x5e9fdf=_0x5e9fdf-0x0;var _0x71cdc7=_0x7bbd[_0x5e9fdf];return _0x71cdc7;};'use strict';var multer=require(_0xd7bb('0x0'));var util=require(_0xd7bb('0x1'));var path=require(_0xd7bb('0x2'));var timeout=require(_0xd7bb('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xd7bb('0x4'));var config=require(_0xd7bb('0x5'));var controller=require('./automation.controller');router[_0xd7bb('0x6')]('/',auth[_0xd7bb('0x7')](),controller[_0xd7bb('0x8')]);router[_0xd7bb('0x6')](_0xd7bb('0x9'),auth[_0xd7bb('0x7')](),controller[_0xd7bb('0xa')]);router[_0xd7bb('0x6')](_0xd7bb('0xb'),auth[_0xd7bb('0x7')](),controller['getConditions']);router[_0xd7bb('0x6')](_0xd7bb('0xc'),auth[_0xd7bb('0x7')](),controller[_0xd7bb('0xd')]);router['post']('/',auth[_0xd7bb('0x7')](),controller[_0xd7bb('0xe')]);router['post']('/:id/conditions',auth[_0xd7bb('0x7')](),controller['addConditions']);router[_0xd7bb('0xf')]('/:id/actions',auth[_0xd7bb('0x7')](),controller['addActions']);router[_0xd7bb('0x10')](_0xd7bb('0x9'),auth[_0xd7bb('0x7')](),controller['update']);router[_0xd7bb('0x11')]('/:id',auth[_0xd7bb('0x7')](),controller[_0xd7bb('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x43f5=['/:id','delete','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./automation.controller','get','isAuthenticated','index','show','/:id/conditions','getActions','create','post','/:id/actions','put'];(function(_0x24fa1a,_0x16d9c2){var _0xc5621f=function(_0x5616ac){while(--_0x5616ac){_0x24fa1a['push'](_0x24fa1a['shift']());}};_0xc5621f(++_0x16d9c2);}(_0x43f5,0x9d));var _0x543f=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0x43f5[_0x46e363];return _0x3fb059;};'use strict';var multer=require(_0x543f('0x0'));var util=require(_0x543f('0x1'));var path=require('path');var timeout=require(_0x543f('0x2'));var express=require(_0x543f('0x3'));var router=express[_0x543f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x543f('0x5'));var interaction=require(_0x543f('0x6'));var config=require(_0x543f('0x7'));var controller=require(_0x543f('0x8'));router[_0x543f('0x9')]('/',auth[_0x543f('0xa')](),controller[_0x543f('0xb')]);router[_0x543f('0x9')]('/:id',auth[_0x543f('0xa')](),controller[_0x543f('0xc')]);router[_0x543f('0x9')](_0x543f('0xd'),auth[_0x543f('0xa')](),controller['getConditions']);router[_0x543f('0x9')]('/:id/actions',auth['isAuthenticated'](),controller[_0x543f('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x543f('0xf')]);router[_0x543f('0x10')]('/:id/conditions',auth['isAuthenticated'](),controller['addConditions']);router[_0x543f('0x10')](_0x543f('0x11'),auth[_0x543f('0xa')](),controller['addActions']);router[_0x543f('0x12')](_0x543f('0x13'),auth[_0x543f('0xa')](),controller['update']);router[_0x543f('0x14')](_0x543f('0x13'),auth['isAuthenticated'](),controller['destroy']);module[_0x543f('0x15')]=router;
\ No newline at end of file
index 22a3ad8..11b6bf1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc305=['#Abandoned\x20Retry\x20(min:1,\x20max:999)','#Machine\x20Retry\x20(min:1,\x20max:999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','STRING','name','ENUM','ivr','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','#Congestion\x20Retry\x20(min:1,\x20max:999)','Congestion\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','#Busy\x20Retry\x20(min:1,\x20max:999)','#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','BOOLEAN','Active/Disactive\x20AMD','#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)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Drop\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'];(function(_0x56b719,_0x57555b){var _0x567ddb=function(_0x34600f){while(--_0x34600f){_0x56b719['push'](_0x56b719['shift']());}};_0x567ddb(++_0x57555b);}(_0xc305,0x6d));var _0x5c30=function(_0x2ca616,_0x384ec8){_0x2ca616=_0x2ca616-0x0;var _0x53155f=_0xc305[_0x2ca616];return _0x53155f;};'use strict';var Sequelize=require(_0x5c30('0x0'));module[_0x5c30('0x1')]={'name':{'type':Sequelize[_0x5c30('0x2')],'unique':_0x5c30('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize[_0x5c30('0x4')]('ivr'),'allowNull':![],'defaultValue':_0x5c30('0x5')},'description':{'type':Sequelize['STRING']},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0x5c30('0x6')},'limitCalls':{'type':Sequelize[_0x5c30('0x7')](0x4)[_0x5c30('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0x5c30('0x9')},'dialOriginateCallerIdName':{'type':Sequelize[_0x5c30('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0x5c30('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0x5c30('0x7')](0x3)[_0x5c30('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5c30('0xa')},'dialCongestionMaxRetry':{'type':Sequelize[_0x5c30('0x7')](0x3)[_0x5c30('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5c30('0xb')},'dialCongestionRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0x5c30('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5c30('0xc')},'dialBusyMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5c30('0xd')},'dialBusyRetryFrequency':{'type':Sequelize[_0x5c30('0x7')](0x5)[_0x5c30('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Busy\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialNoAnswerMaxRetry':{'type':Sequelize[_0x5c30('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0x5c30('0xe')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0x5c30('0x7')](0x5)[_0x5c30('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5c30('0xf')},'dialGlobalMaxRetry':{'type':Sequelize[_0x5c30('0x7')](0x3)[_0x5c30('0x8')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0x5c30('0x10')},'dialTimezone':{'type':Sequelize[_0x5c30('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0x5c30('0x2')],'defaultValue':_0x5c30('0x11')},'dialCheckDuplicateType':{'type':Sequelize[_0x5c30('0x4')]('always',_0x5c30('0x12'),'onlyIfOpen'),'defaultValue':'always'},'dialAMDActive':{'type':Sequelize[_0x5c30('0x13')],'defaultValue':0x0,'comment':_0x5c30('0x14')},'dialAMDInitialSilence':{'type':Sequelize[_0x5c30('0x7')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':'#AMD\x20Initial\x20Silence'},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0x5c30('0x8')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0x5c30('0x7')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0x5c30('0x7')](0x9)[_0x5c30('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Total\x20Analysis\x20Time'},'dialAMDMinWordLength':{'type':Sequelize[_0x5c30('0x7')](0x9)[_0x5c30('0x8')],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0x5c30('0x7')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0x5c30('0x7')](0x9)[_0x5c30('0x8')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0x5c30('0x15')},'dialAMDSilenceThreshold':{'type':Sequelize[_0x5c30('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0x5c30('0x16')},'dialAMDMaximumWordLength':{'type':Sequelize[_0x5c30('0x7')](0x9)[_0x5c30('0x8')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0x5c30('0x17')},'dialOrderByScheduledAt':{'type':Sequelize[_0x5c30('0x4')](_0x5c30('0x18'),_0x5c30('0x19')),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize[_0x5c30('0x2')],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0x5c30('0x7')](0x3)[_0x5c30('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x5c30('0x1a')},'dialCutDigit':{'type':Sequelize['INTEGER'](0x3)[_0x5c30('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0x5c30('0x1b')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0x5c30('0x7')](0x3)[_0x5c30('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5c30('0x1c')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0x5c30('0x7')](0x5)[_0x5c30('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5c30('0x1d')},'dialDropMaxRetry':{'type':Sequelize[_0x5c30('0x7')](0x3)[_0x5c30('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize[_0x5c30('0x7')](0x5)[_0x5c30('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5c30('0x1e')},'dialAbandonedMaxRetry':{'type':Sequelize[_0x5c30('0x7')](0x3)[_0x5c30('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5c30('0x1f')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0x5c30('0x7')](0x5)[_0x5c30('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Abandoned\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialMachineMaxRetry':{'type':Sequelize[_0x5c30('0x7')](0x3)[_0x5c30('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5c30('0x20')},'dialMachineRetryFrequency':{'type':Sequelize[_0x5c30('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize[_0x5c30('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0x5c30('0x21')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0x5c30('0x7')](0x5)[_0x5c30('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0x5c30('0x22')}};
\ No newline at end of file
+var _0xdb5e=['name','ivr','BOOLEAN','Active/Disactive\x20Campaign','INTEGER','UNSIGNED','Max\x20200\x20calls.','Originate\x20Timeout\x20Seconds\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)','ENUM','always','never','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20Greeting','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Min\x20Word\x20Length','#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)','Cut\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\x20(min:1,\x20max:999)','Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','sequelize','exports','STRING'];(function(_0x311e98,_0xf9e3a2){var _0x1648ad=function(_0x550890){while(--_0x550890){_0x311e98['push'](_0x311e98['shift']());}};_0x1648ad(++_0xf9e3a2);}(_0xdb5e,0x197));var _0xedb5=function(_0x56f06e,_0x1d0576){_0x56f06e=_0x56f06e-0x0;var _0x413f51=_0xdb5e[_0x56f06e];return _0x413f51;};'use strict';var Sequelize=require(_0xedb5('0x0'));module[_0xedb5('0x1')]={'name':{'type':Sequelize[_0xedb5('0x2')],'unique':_0xedb5('0x3'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'type':{'type':Sequelize['ENUM']('ivr'),'allowNull':![],'defaultValue':_0xedb5('0x4')},'description':{'type':Sequelize[_0xedb5('0x2')]},'active':{'type':Sequelize[_0xedb5('0x5')],'defaultValue':0x0,'comment':_0xedb5('0x6')},'limitCalls':{'type':Sequelize[_0xedb5('0x7')](0x4)[_0xedb5('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0xc8},'comment':_0xedb5('0x9')},'dialOriginateCallerIdName':{'type':Sequelize[_0xedb5('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize['STRING']},'dialOriginateTimeout':{'type':Sequelize['INTEGER'](0x3)[_0xedb5('0x8')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xedb5('0xa')},'dialCongestionMaxRetry':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0xedb5('0x7')](0x5)[_0xedb5('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xedb5('0xb')},'dialBusyMaxRetry':{'type':Sequelize[_0xedb5('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xedb5('0xc')},'dialBusyRetryFrequency':{'type':Sequelize[_0xedb5('0x7')](0x5)[_0xedb5('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xedb5('0xd')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xedb5('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'comment':_0xedb5('0xe')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xedb5('0x7')](0x5)[_0xedb5('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xedb5('0xf')},'dialGlobalMaxRetry':{'type':Sequelize[_0xedb5('0x7')](0x3)[_0xedb5('0x8')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':'#Global\x20Max\x20Retry\x20(min:1,\x20max:999)'},'dialTimezone':{'type':Sequelize[_0xedb5('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':'07:00-22:00,*,*,*'},'dialCheckDuplicateType':{'type':Sequelize[_0xedb5('0x10')](_0xedb5('0x11'),_0xedb5('0x12'),_0xedb5('0x13')),'defaultValue':_0xedb5('0x11')},'dialAMDActive':{'type':Sequelize[_0xedb5('0x5')],'defaultValue':0x0,'comment':_0xedb5('0x14')},'dialAMDInitialSilence':{'type':Sequelize[_0xedb5('0x7')](0x9)['UNSIGNED'],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xedb5('0x15')},'dialAMDGreeting':{'type':Sequelize[_0xedb5('0x7')](0x9)[_0xedb5('0x8')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':_0xedb5('0x16')},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xedb5('0x7')](0x9)[_0xedb5('0x8')],'defaultValue':0x320,'validate':{'min':0x0},'comment':'#AMD\x20After\x20Greeting\x20Silence'},'dialAMDTotalAnalysisTime':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xedb5('0x17')},'dialAMDMinWordLength':{'type':Sequelize[_0xedb5('0x7')](0x9)[_0xedb5('0x8')],'defaultValue':0x64,'validate':{'min':0x0},'comment':_0xedb5('0x18')},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xedb5('0x7')](0x9)[_0xedb5('0x8')],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xedb5('0x7')](0x9)[_0xedb5('0x8')],'defaultValue':0x3,'validate':{'min':0x0},'comment':_0xedb5('0x19')},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xedb5('0x1a')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xedb5('0x7')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xedb5('0x1b')},'dialOrderByScheduledAt':{'type':Sequelize[_0xedb5('0x10')](_0xedb5('0x1c'),_0xedb5('0x1d')),'defaultValue':'DESC'},'dialPrefix':{'type':Sequelize['STRING'],'defaultValue':null},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)['UNSIGNED'],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xedb5('0x1e')},'dialCutDigit':{'type':Sequelize[_0xedb5('0x7')](0x3)[_0xedb5('0x8')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xedb5('0x1f')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xedb5('0x7')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xedb5('0x20')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xedb5('0x7')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xedb5('0x21')},'dialDropMaxRetry':{'type':Sequelize[_0xedb5('0x7')](0x3)[_0xedb5('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xedb5('0x22')},'dialDropRetryFrequency':{'type':Sequelize[_0xedb5('0x7')](0x5)[_0xedb5('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xedb5('0x23')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xedb5('0x7')](0x3)[_0xedb5('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xedb5('0x24')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xedb5('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xedb5('0x25')},'dialMachineMaxRetry':{'type':Sequelize[_0xedb5('0x7')](0x3)[_0xedb5('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xedb5('0x26')},'dialMachineRetryFrequency':{'type':Sequelize[_0xedb5('0x7')](0x5)[_0xedb5('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xedb5('0x27')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xedb5('0x7')](0x3)[_0xedb5('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#AgentReject\x20Retry\x20(min:1,\x20max:999)'},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xedb5('0x7')](0x5)[_0xedb5('0x8')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xedb5('0x28')}};
\ No newline at end of file
index ce96989..f0aacfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0833=['cm_contact_has_items','join','h.ContactId\x20=\x20ci.CmContactId','h.ListId\x20=\x20?','h.CampaignId=?','h.createdAt\x20=\x20?','push','sequelize','all','removeLists','ids','getBlackLists','CmList','addBlackLists','spread','removeBlackLists','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','sox','to-csv','ejs','lodash','squel','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','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','error','name','send','map','Campaign','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','include','findAll','catch','show','params','find','create','body','get','role','user','IvrCampaigns','UserProfileSection','userProfileId','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','omit','createdAt','updatedAt','autoAssociation','getHoppers','findOne','pick','CampaignId','CmHopper','CmHopperHistory','rows','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','format','addLists','dialCheckDuplicateType','always','insert','into','scheduledAt','ContactId','ListId','select','phone','field','NOW()','CmListId','toString','cm_contacts','deletedAt\x20IS\x20NULL','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','from','cm_hopper_final','CampaignId\x20=\x20?','COALESCE(phone,\x27\x27)','cm_hopper','onlyIfOpen','fromQuery','ListId\x20=\x20?','cm_hopper_additional_phones','OrderBy','ci.OrderBY'];(function(_0x3624cb,_0x16341f){var _0x40dc2f=function(_0x15ddb7){while(--_0x15ddb7){_0x3624cb['push'](_0x3624cb['shift']());}};_0x40dc2f(++_0x16341f);}(_0x0833,0x1bd));var _0x3083=function(_0x2f7484,_0x59e23e){_0x2f7484=_0x2f7484-0x0;var _0x61fcd1=_0x0833[_0x2f7484];return _0x61fcd1;};'use strict';var emlformat=require(_0x3083('0x0'));var rimraf=require(_0x3083('0x1'));var zipdir=require(_0x3083('0x2'));var jsonpatch=require(_0x3083('0x3'));var rp=require(_0x3083('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x3083('0x5'));var path=require('path');var sox=require(_0x3083('0x6'));var csv=require(_0x3083('0x7'));var ejs=require(_0x3083('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x3083('0x9'));var squel=require(_0x3083('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x3083('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x3083('0xb'));var authService=require(_0x3083('0xc'));var qs=require(_0x3083('0xd'));var as=require(_0x3083('0xe'));var hardwareService=require(_0x3083('0xf'));var logger=require(_0x3083('0x10'))(_0x3083('0x11'));var utils=require(_0x3083('0x12'));var config=require(_0x3083('0x13'));var licenseUtil=require(_0x3083('0x14'));var db=require(_0x3083('0x15'))['db'];function respondWithStatusCode(_0x4960f9,_0x126765){_0x126765=_0x126765||0xcc;return function(_0x2dc6ab){if(_0x2dc6ab){return _0x4960f9[_0x3083('0x16')](_0x126765);}return _0x4960f9['status'](_0x126765)[_0x3083('0x17')]();};}function respondWithResult(_0x2a8cd0,_0x5f39e3){_0x5f39e3=_0x5f39e3||0xc8;return function(_0x203aad){if(_0x203aad){return _0x2a8cd0[_0x3083('0x18')](_0x5f39e3)['json'](_0x203aad);}};}function respondWithFilteredResult(_0x293ca0,_0x20cc31){return function(_0x1b6955){if(_0x1b6955){var _0x143cac=typeof _0x20cc31[_0x3083('0x19')]===_0x3083('0x1a')&&typeof _0x20cc31[_0x3083('0x1b')]==='undefined';var _0x5c23ea=_0x1b6955['count'];var _0x424c59=_0x143cac?0x0:_0x20cc31['offset'];var _0x3bbfe3=_0x143cac?_0x1b6955[_0x3083('0x1c')]:_0x20cc31[_0x3083('0x19')]+_0x20cc31[_0x3083('0x1b')];var _0x3bc7f0;if(_0x3bbfe3>=_0x5c23ea){_0x3bbfe3=_0x5c23ea;_0x3bc7f0=0xc8;}else{_0x3bc7f0=0xce;}_0x293ca0[_0x3083('0x18')](_0x3bc7f0);return _0x293ca0[_0x3083('0x1d')](_0x3083('0x1e'),_0x424c59+'-'+_0x3bbfe3+'/'+_0x5c23ea)[_0x3083('0x1f')](_0x1b6955);}return null;};}function patchUpdates(_0x164988){return function(_0x3d9d42){try{jsonpatch[_0x3083('0x20')](_0x3d9d42,_0x164988,!![]);}catch(_0x9a4aed){return BPromise[_0x3083('0x21')](_0x9a4aed);}return _0x3d9d42['save']();};}function saveUpdates(_0x4c2a0b,_0x4dc9ad){return function(_0x4dbe6b){if(_0x4dbe6b){return _0x4dbe6b[_0x3083('0x22')](_0x4c2a0b)[_0x3083('0x23')](function(_0x3e4f5a){return _0x3e4f5a;});}return null;};}function removeEntity(_0x3187f3,_0x1767d4){return function(_0x4170ab){if(_0x4170ab){return _0x4170ab[_0x3083('0x24')]()[_0x3083('0x23')](function(){var _0x4501b2=_0x4170ab['get']({'plain':!![]});var _0x3b11d1='IvrCampaigns';return db['UserProfileResource'][_0x3083('0x24')]({'where':{'type':_0x3b11d1,'resourceId':_0x4501b2['id']}})[_0x3083('0x23')](function(){return _0x4170ab;});})[_0x3083('0x23')](function(){_0x3187f3[_0x3083('0x18')](0xcc)[_0x3083('0x17')]();});}};}function handleEntityNotFound(_0x27eb38,_0x5369f4){return function(_0xd38b35){if(!_0xd38b35){_0x27eb38[_0x3083('0x16')](0x194);}return _0xd38b35;};}function handleError(_0x1d8600,_0xe59325){_0xe59325=_0xe59325||0x1f4;return function(_0x52d4c7){logger[_0x3083('0x25')](_0x52d4c7['stack']);if(_0x52d4c7['name']){delete _0x52d4c7[_0x3083('0x26')];}_0x1d8600[_0x3083('0x18')](_0xe59325)[_0x3083('0x27')](_0x52d4c7);};}exports['index']=function(_0x1a8b75,_0x235c09){var _0x153aac={},_0x470805={},_0x3e9150={'count':0x0,'rows':[]};var _0x29146b=_[_0x3083('0x28')](db[_0x3083('0x29')][_0x3083('0x2a')],function(_0x328d8f){return{'name':_0x328d8f[_0x3083('0x2b')],'type':_0x328d8f[_0x3083('0x2c')][_0x3083('0x2d')]};});_0x470805[_0x3083('0x2e')]=_[_0x3083('0x28')](_0x29146b,_0x3083('0x26'));_0x470805[_0x3083('0x2f')]=_[_0x3083('0x30')](_0x1a8b75[_0x3083('0x2f')]);_0x470805[_0x3083('0x31')]=_['intersection'](_0x470805[_0x3083('0x2e')],_0x470805[_0x3083('0x2f')]);_0x153aac['attributes']=_[_0x3083('0x32')](_0x470805[_0x3083('0x2e')],qs['fields'](_0x1a8b75['query'][_0x3083('0x33')]));_0x153aac[_0x3083('0x34')]=_0x153aac[_0x3083('0x34')][_0x3083('0x35')]?_0x153aac['attributes']:_0x470805['model'];if(!_0x1a8b75[_0x3083('0x2f')][_0x3083('0x36')](_0x3083('0x37'))){_0x153aac['limit']=qs[_0x3083('0x1b')](_0x1a8b75[_0x3083('0x2f')][_0x3083('0x1b')]);_0x153aac[_0x3083('0x19')]=qs[_0x3083('0x19')](_0x1a8b75['query']['offset']);}_0x153aac[_0x3083('0x38')]=qs['sort'](_0x1a8b75[_0x3083('0x2f')][_0x3083('0x39')]);_0x153aac[_0x3083('0x3a')]=qs[_0x3083('0x31')](_['pick'](_0x1a8b75[_0x3083('0x2f')],_0x470805[_0x3083('0x31')]),_0x29146b);if(_0x1a8b75[_0x3083('0x2f')]['filter']){_0x153aac[_0x3083('0x3a')]=_['merge'](_0x153aac[_0x3083('0x3a')],{'$or':_[_0x3083('0x28')](_0x29146b,function(_0x357d73){if(_0x357d73[_0x3083('0x2c')]!=='VIRTUAL'){var _0x10380f={};_0x10380f[_0x357d73['name']]={'$like':'%'+_0x1a8b75[_0x3083('0x2f')][_0x3083('0x3b')]+'%'};return _0x10380f;}})});}_0x153aac=_[_0x3083('0x3c')]({},_0x153aac,_0x1a8b75[_0x3083('0x3d')]);var _0x4597e5={'where':_0x153aac['where']};return db[_0x3083('0x29')][_0x3083('0x1c')](_0x4597e5)[_0x3083('0x23')](function(_0x460604){_0x3e9150[_0x3083('0x1c')]=_0x460604;if(_0x1a8b75[_0x3083('0x2f')][_0x3083('0x3e')]){_0x153aac[_0x3083('0x3f')]=[{'all':!![]}];}return db[_0x3083('0x29')][_0x3083('0x40')](_0x153aac);})['then'](function(_0x406d89){_0x3e9150['rows']=_0x406d89;return _0x3e9150;})['then'](respondWithFilteredResult(_0x235c09,_0x153aac))[_0x3083('0x41')](handleError(_0x235c09,null));};exports[_0x3083('0x42')]=function(_0x19b17a,_0x56da70){var _0x318c0b={'raw':![],'where':{'id':_0x19b17a[_0x3083('0x43')]['id']}},_0xa4d89a={};_0xa4d89a['model']=_[_0x3083('0x30')](db['Campaign'][_0x3083('0x2a')]);_0xa4d89a['query']=_[_0x3083('0x30')](_0x19b17a['query']);_0xa4d89a['filters']=_['intersection'](_0xa4d89a['model'],_0xa4d89a[_0x3083('0x2f')]);_0x318c0b[_0x3083('0x34')]=_[_0x3083('0x32')](_0xa4d89a[_0x3083('0x2e')],qs[_0x3083('0x33')](_0x19b17a[_0x3083('0x2f')][_0x3083('0x33')]));_0x318c0b[_0x3083('0x34')]=_0x318c0b[_0x3083('0x34')][_0x3083('0x35')]?_0x318c0b['attributes']:_0xa4d89a[_0x3083('0x2e')];if(_0x19b17a[_0x3083('0x2f')][_0x3083('0x3e')]){_0x318c0b[_0x3083('0x3f')]=[{'all':!![]}];}_0x318c0b=_['merge']({},_0x318c0b,_0x19b17a[_0x3083('0x3d')]);return db[_0x3083('0x29')][_0x3083('0x44')](_0x318c0b)[_0x3083('0x23')](handleEntityNotFound(_0x56da70,null))[_0x3083('0x23')](respondWithResult(_0x56da70,null))[_0x3083('0x41')](handleError(_0x56da70,null));};exports[_0x3083('0x45')]=function(_0x5cf5cd,_0x3af432){return db[_0x3083('0x29')][_0x3083('0x45')](_0x5cf5cd[_0x3083('0x46')],{})[_0x3083('0x23')](function(_0x340a86){var _0x5dbfd2=_0x5cf5cd['user'][_0x3083('0x47')]({'plain':!![]});if(!_0x5dbfd2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5dbfd2[_0x3083('0x48')]===_0x3083('0x49')){var _0x1c4135=_0x340a86[_0x3083('0x47')]({'plain':!![]});var _0xbf78cf=_0x3083('0x4a');return db[_0x3083('0x4b')]['find']({'where':{'name':_0xbf78cf,'userProfileId':_0x5dbfd2[_0x3083('0x4c')]},'raw':!![]})[_0x3083('0x23')](function(_0x28e8e1){if(_0x28e8e1&&_0x28e8e1['autoAssociation']===0x0){return db[_0x3083('0x4d')]['create']({'name':_0x1c4135[_0x3083('0x26')],'resourceId':_0x1c4135['id'],'type':_0x28e8e1[_0x3083('0x26')],'sectionId':_0x28e8e1['id']},{})['then'](function(){return _0x340a86;});}else{return _0x340a86;}})[_0x3083('0x41')](function(_0x2182ef){logger[_0x3083('0x25')](_0x3083('0x4e'),_0x2182ef);throw _0x2182ef;});}return _0x340a86;})['then'](respondWithResult(_0x3af432,0xc9))['catch'](handleError(_0x3af432,null));};exports[_0x3083('0x4f')]=function(_0x70eaef,_0x22a51c){var _0x12b014={'where':{'id':_0x70eaef[_0x3083('0x43')]['id']}},_0x15e33e={};_0x15e33e[_0x3083('0x2e')]=_['keys'](db['Campaign'][_0x3083('0x2a')]);_0x12b014[_0x3083('0x34')]=_['intersection'](_0x15e33e[_0x3083('0x2e')],qs[_0x3083('0x33')](_0x70eaef[_0x3083('0x2f')][_0x3083('0x33')]));_0x12b014[_0x3083('0x34')]=_0x12b014[_0x3083('0x34')]['length']?_0x12b014[_0x3083('0x34')]:_0x15e33e[_0x3083('0x2e')];if(_0x70eaef['query'][_0x3083('0x3e')]){_0x12b014['include']=[{'all':!![]}];}_0x12b014=_[_0x3083('0x3c')]({},_0x12b014,_0x70eaef['options']);return db['Campaign']['find'](_0x12b014)[_0x3083('0x23')](handleEntityNotFound(_0x22a51c,null))[_0x3083('0x23')](function(_0x30fb2b){if(_0x30fb2b){var _0x953e2f=_0x30fb2b[_0x3083('0x47')]({'plain':!![]});_0x953e2f=qs[_0x3083('0x50')](_0x953e2f,['id','createdAt','updatedAt']);_0x70eaef[_0x3083('0x46')]=_['omit'](_0x70eaef[_0x3083('0x46')],['id',_0x3083('0x51'),_0x3083('0x52')]);return db[_0x3083('0x29')][_0x3083('0x45')](_[_0x3083('0x3c')](_0x953e2f,_0x70eaef[_0x3083('0x46')]),{'include':_0x70eaef['query']['includeAll']?[{'all':!![]}]:undefined})[_0x3083('0x23')](function(_0x10a5be){var _0x377406=_0x70eaef[_0x3083('0x49')][_0x3083('0x47')]({'plain':!![]});if(!_0x377406)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x377406[_0x3083('0x48')]===_0x3083('0x49')){var _0x4fb5cb=_0x10a5be[_0x3083('0x47')]({'plain':!![]});var _0x2c2bec=_0x3083('0x4a');return db[_0x3083('0x4b')][_0x3083('0x44')]({'where':{'name':_0x2c2bec,'userProfileId':_0x377406[_0x3083('0x4c')]},'raw':!![]})[_0x3083('0x23')](function(_0x21c832){if(_0x21c832&&_0x21c832[_0x3083('0x53')]===0x0){return db['UserProfileResource'][_0x3083('0x45')]({'name':_0x4fb5cb[_0x3083('0x26')],'resourceId':_0x4fb5cb['id'],'type':_0x21c832[_0x3083('0x26')],'sectionId':_0x21c832['id']},{})[_0x3083('0x23')](function(){return _0x10a5be;});}else{return _0x10a5be;}})[_0x3083('0x41')](function(_0x1615e8){logger[_0x3083('0x25')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1615e8);throw _0x1615e8;});}return _0x10a5be;});}})[_0x3083('0x23')](respondWithResult(_0x22a51c,0xc9))['catch'](handleError(_0x22a51c,null));};exports[_0x3083('0x22')]=function(_0x45e3ed,_0x3f4ca9){if(_0x45e3ed[_0x3083('0x46')]['id']){delete _0x45e3ed[_0x3083('0x46')]['id'];}return db['Campaign'][_0x3083('0x44')]({'where':{'id':_0x45e3ed[_0x3083('0x43')]['id']}})[_0x3083('0x23')](handleEntityNotFound(_0x3f4ca9,null))['then'](saveUpdates(_0x45e3ed[_0x3083('0x46')],null))[_0x3083('0x23')](respondWithResult(_0x3f4ca9,null))[_0x3083('0x41')](handleError(_0x3f4ca9,null));};exports[_0x3083('0x24')]=function(_0x2af73d,_0x194d61){return db['Campaign'][_0x3083('0x44')]({'where':{'id':_0x2af73d[_0x3083('0x43')]['id']}})[_0x3083('0x23')](handleEntityNotFound(_0x194d61,null))[_0x3083('0x23')](removeEntity(_0x194d61,null))['catch'](handleError(_0x194d61,null));};exports[_0x3083('0x54')]=function(_0x98e85d,_0xe8293a,_0x17f3f0){var _0x18c61e={'raw':!![],'where':{}};var _0x27cd38={};var _0x3b3d9b={'count':0x0,'rows':[]};return db['Campaign'][_0x3083('0x55')]({'where':{'id':_0x98e85d[_0x3083('0x43')]['id']}})['then'](handleEntityNotFound(_0xe8293a,null))[_0x3083('0x23')](function(_0x531124){if(_0x531124){_0x27cd38['model']=_[_0x3083('0x30')](db['CmHopper'][_0x3083('0x2a')]);_0x27cd38[_0x3083('0x2f')]=_[_0x3083('0x30')](_0x98e85d['query']);_0x27cd38['filters']=_[_0x3083('0x32')](_0x27cd38[_0x3083('0x2e')],_0x27cd38[_0x3083('0x2f')]);_0x18c61e[_0x3083('0x34')]=_['intersection'](_0x27cd38[_0x3083('0x2e')],qs[_0x3083('0x33')](_0x98e85d[_0x3083('0x2f')][_0x3083('0x33')]));_0x18c61e[_0x3083('0x34')]=_0x18c61e[_0x3083('0x34')][_0x3083('0x35')]?_0x18c61e[_0x3083('0x34')]:_0x27cd38['model'];if(!_0x98e85d[_0x3083('0x2f')][_0x3083('0x36')](_0x3083('0x37'))){_0x18c61e['limit']=qs[_0x3083('0x1b')](_0x98e85d[_0x3083('0x2f')]['limit']);_0x18c61e['offset']=qs[_0x3083('0x19')](_0x98e85d[_0x3083('0x2f')][_0x3083('0x19')]);}_0x18c61e['order']=qs[_0x3083('0x39')](_0x98e85d[_0x3083('0x2f')][_0x3083('0x39')]);_0x18c61e[_0x3083('0x3a')]=qs[_0x3083('0x31')](_[_0x3083('0x56')](_0x98e85d[_0x3083('0x2f')],_0x27cd38['filters']));_0x18c61e[_0x3083('0x3a')][_0x3083('0x57')]=_0x531124['id'];if(_0x98e85d[_0x3083('0x2f')][_0x3083('0x3b')]){_0x18c61e[_0x3083('0x3a')]=_[_0x3083('0x3c')](_0x18c61e['where'],{'$or':_[_0x3083('0x28')](_0x18c61e[_0x3083('0x34')],function(_0x41f8d2){var _0x68705d={};_0x68705d[_0x41f8d2]={'$like':'%'+_0x98e85d[_0x3083('0x2f')][_0x3083('0x3b')]+'%'};return _0x68705d;})});}_0x18c61e=_[_0x3083('0x3c')]({},_0x18c61e,_0x98e85d['options']);return db[_0x3083('0x58')][_0x3083('0x1c')]({'where':_0x18c61e[_0x3083('0x3a')]})[_0x3083('0x23')](function(_0x2406b0){_0x3b3d9b[_0x3083('0x1c')]=_0x2406b0;if(_0x98e85d[_0x3083('0x2f')]['includeAll']){_0x18c61e[_0x3083('0x3f')]=[{'all':!![]}];}return db[_0x3083('0x58')]['findAll'](_0x18c61e);})[_0x3083('0x23')](function(_0x5759bd){_0x3b3d9b['rows']=_0x5759bd;return _0x3b3d9b;});}})[_0x3083('0x23')](respondWithFilteredResult(_0xe8293a,_0x18c61e))['catch'](handleError(_0xe8293a,null));};exports['getHopperHistories']=function(_0x1472b2,_0x3c2d05,_0x47f9a4){var _0x5b56c5={'raw':!![],'where':{}};var _0x357db9={};var _0x3ec0f7={'count':0x0,'rows':[]};return db[_0x3083('0x29')]['findOne']({'where':{'id':_0x1472b2['params']['id']}})[_0x3083('0x23')](handleEntityNotFound(_0x3c2d05,null))[_0x3083('0x23')](function(_0x236267){if(_0x236267){_0x357db9[_0x3083('0x2e')]=_['keys'](db['CmHopperHistory'][_0x3083('0x2a')]);_0x357db9[_0x3083('0x2f')]=_[_0x3083('0x30')](_0x1472b2[_0x3083('0x2f')]);_0x357db9['filters']=_[_0x3083('0x32')](_0x357db9[_0x3083('0x2e')],_0x357db9['query']);_0x5b56c5[_0x3083('0x34')]=_['intersection'](_0x357db9['model'],qs['fields'](_0x1472b2['query'][_0x3083('0x33')]));_0x5b56c5[_0x3083('0x34')]=_0x5b56c5[_0x3083('0x34')][_0x3083('0x35')]?_0x5b56c5[_0x3083('0x34')]:_0x357db9[_0x3083('0x2e')];if(!_0x1472b2[_0x3083('0x2f')]['hasOwnProperty'](_0x3083('0x37'))){_0x5b56c5[_0x3083('0x1b')]=qs[_0x3083('0x1b')](_0x1472b2[_0x3083('0x2f')][_0x3083('0x1b')]);_0x5b56c5[_0x3083('0x19')]=qs[_0x3083('0x19')](_0x1472b2[_0x3083('0x2f')][_0x3083('0x19')]);}_0x5b56c5[_0x3083('0x38')]=qs[_0x3083('0x39')](_0x1472b2[_0x3083('0x2f')]['sort']);_0x5b56c5[_0x3083('0x3a')]=qs[_0x3083('0x31')](_[_0x3083('0x56')](_0x1472b2[_0x3083('0x2f')],_0x357db9[_0x3083('0x31')]));_0x5b56c5[_0x3083('0x3a')][_0x3083('0x57')]=_0x236267['id'];if(_0x1472b2[_0x3083('0x2f')]['filter']){_0x5b56c5['where']=_[_0x3083('0x3c')](_0x5b56c5[_0x3083('0x3a')],{'$or':_[_0x3083('0x28')](_0x5b56c5['attributes'],function(_0x198544){var _0x4a4fe6={};_0x4a4fe6[_0x198544]={'$like':'%'+_0x1472b2[_0x3083('0x2f')][_0x3083('0x3b')]+'%'};return _0x4a4fe6;})});}_0x5b56c5=_[_0x3083('0x3c')]({},_0x5b56c5,_0x1472b2['options']);return db[_0x3083('0x59')]['count']({'where':_0x5b56c5[_0x3083('0x3a')]})['then'](function(_0x4a96db){_0x3ec0f7[_0x3083('0x1c')]=_0x4a96db;if(_0x1472b2[_0x3083('0x2f')]['includeAll']){_0x5b56c5[_0x3083('0x3f')]=[{'all':!![]}];}return db[_0x3083('0x59')]['findAll'](_0x5b56c5);})[_0x3083('0x23')](function(_0x1685bf){_0x3ec0f7[_0x3083('0x5a')]=_0x1685bf;return _0x3ec0f7;});}})['then'](respondWithFilteredResult(_0x3c2d05,_0x5b56c5))['catch'](handleError(_0x3c2d05,null));};exports[_0x3083('0x5b')]=function(_0x321c1b,_0x382fc5,_0x167f84){var _0x14fb60={'raw':!![],'where':{}};var _0x144b92={};var _0x525752={'count':0x0,'rows':[]};return db[_0x3083('0x29')][_0x3083('0x55')]({'where':{'id':_0x321c1b[_0x3083('0x43')]['id']}})[_0x3083('0x23')](handleEntityNotFound(_0x382fc5,null))['then'](function(_0x3a6ab3){if(_0x3a6ab3){_0x144b92[_0x3083('0x2e')]=_[_0x3083('0x30')](db[_0x3083('0x5c')]['rawAttributes']);_0x144b92['query']=_[_0x3083('0x30')](_0x321c1b[_0x3083('0x2f')]);_0x144b92[_0x3083('0x31')]=_['intersection'](_0x144b92['model'],_0x144b92[_0x3083('0x2f')]);_0x14fb60[_0x3083('0x34')]=_[_0x3083('0x32')](_0x144b92[_0x3083('0x2e')],qs[_0x3083('0x33')](_0x321c1b[_0x3083('0x2f')][_0x3083('0x33')]));_0x14fb60[_0x3083('0x34')]=_0x14fb60[_0x3083('0x34')][_0x3083('0x35')]?_0x14fb60[_0x3083('0x34')]:_0x144b92[_0x3083('0x2e')];if(!_0x321c1b[_0x3083('0x2f')][_0x3083('0x36')](_0x3083('0x37'))){_0x14fb60[_0x3083('0x1b')]=qs[_0x3083('0x1b')](_0x321c1b[_0x3083('0x2f')]['limit']);_0x14fb60['offset']=qs['offset'](_0x321c1b['query']['offset']);}_0x14fb60['order']=qs[_0x3083('0x39')](_0x321c1b[_0x3083('0x2f')][_0x3083('0x39')]);_0x14fb60['where']=qs[_0x3083('0x31')](_[_0x3083('0x56')](_0x321c1b[_0x3083('0x2f')],_0x144b92[_0x3083('0x31')]));_0x14fb60['where'][_0x3083('0x57')]=_0x3a6ab3['id'];if(_0x321c1b['query']['filter']){_0x14fb60[_0x3083('0x3a')]=_[_0x3083('0x3c')](_0x14fb60[_0x3083('0x3a')],{'$or':_[_0x3083('0x28')](_0x14fb60[_0x3083('0x34')],function(_0x1fe107){var _0x5e359b={};_0x5e359b[_0x1fe107]={'$like':'%'+_0x321c1b[_0x3083('0x2f')][_0x3083('0x3b')]+'%'};return _0x5e359b;})});}_0x14fb60=_[_0x3083('0x3c')]({},_0x14fb60,_0x321c1b['options']);return db['CmHopperFinal'][_0x3083('0x1c')]({'where':_0x14fb60[_0x3083('0x3a')]})['then'](function(_0x1a620c){_0x525752[_0x3083('0x1c')]=_0x1a620c;if(_0x321c1b[_0x3083('0x2f')][_0x3083('0x3e')]){_0x14fb60[_0x3083('0x3f')]=[{'all':!![]}];}return db[_0x3083('0x5c')]['findAll'](_0x14fb60);})[_0x3083('0x23')](function(_0x1e6278){_0x525752['rows']=_0x1e6278;return _0x525752;});}})[_0x3083('0x23')](respondWithFilteredResult(_0x382fc5,_0x14fb60))[_0x3083('0x41')](handleError(_0x382fc5,null));};exports[_0x3083('0x5d')]=function(_0x1416c3,_0x4ea3d4,_0x41227b){var _0x14f033={'raw':!![],'where':{}};var _0x57425b={};var _0x13f557={'count':0x0,'rows':[]};return db[_0x3083('0x29')]['findOne']({'where':{'id':_0x1416c3[_0x3083('0x43')]['id']}})[_0x3083('0x23')](handleEntityNotFound(_0x4ea3d4,null))[_0x3083('0x23')](function(_0x508113){if(_0x508113){_0x57425b[_0x3083('0x2e')]=_[_0x3083('0x30')](db['CmHopperBlack'][_0x3083('0x2a')]);_0x57425b[_0x3083('0x2f')]=_[_0x3083('0x30')](_0x1416c3['query']);_0x57425b[_0x3083('0x31')]=_[_0x3083('0x32')](_0x57425b['model'],_0x57425b[_0x3083('0x2f')]);_0x14f033[_0x3083('0x34')]=_[_0x3083('0x32')](_0x57425b['model'],qs[_0x3083('0x33')](_0x1416c3[_0x3083('0x2f')][_0x3083('0x33')]));_0x14f033[_0x3083('0x34')]=_0x14f033['attributes']['length']?_0x14f033['attributes']:_0x57425b[_0x3083('0x2e')];if(!_0x1416c3[_0x3083('0x2f')][_0x3083('0x36')](_0x3083('0x37'))){_0x14f033['limit']=qs['limit'](_0x1416c3[_0x3083('0x2f')][_0x3083('0x1b')]);_0x14f033[_0x3083('0x19')]=qs[_0x3083('0x19')](_0x1416c3[_0x3083('0x2f')][_0x3083('0x19')]);}_0x14f033[_0x3083('0x38')]=qs[_0x3083('0x39')](_0x1416c3[_0x3083('0x2f')][_0x3083('0x39')]);_0x14f033[_0x3083('0x3a')]=qs[_0x3083('0x31')](_[_0x3083('0x56')](_0x1416c3['query'],_0x57425b[_0x3083('0x31')]));_0x14f033['where']['CampaignId']=_0x508113['id'];if(_0x1416c3[_0x3083('0x2f')][_0x3083('0x3b')]){_0x14f033[_0x3083('0x3a')]=_[_0x3083('0x3c')](_0x14f033[_0x3083('0x3a')],{'$or':_[_0x3083('0x28')](_0x14f033[_0x3083('0x34')],function(_0x26ef8b){var _0xc01a36={};_0xc01a36[_0x26ef8b]={'$like':'%'+_0x1416c3[_0x3083('0x2f')][_0x3083('0x3b')]+'%'};return _0xc01a36;})});}_0x14f033=_[_0x3083('0x3c')]({},_0x14f033,_0x1416c3['options']);return db[_0x3083('0x5e')][_0x3083('0x1c')]({'where':_0x14f033['where']})[_0x3083('0x23')](function(_0x1ec80c){_0x13f557[_0x3083('0x1c')]=_0x1ec80c;if(_0x1416c3[_0x3083('0x2f')][_0x3083('0x3e')]){_0x14f033[_0x3083('0x3f')]=[{'all':!![]}];}return db['CmHopperBlack']['findAll'](_0x14f033);})[_0x3083('0x23')](function(_0x4a577d){_0x13f557[_0x3083('0x5a')]=_0x4a577d;return _0x13f557;});}})[_0x3083('0x23')](respondWithFilteredResult(_0x4ea3d4,_0x14f033))[_0x3083('0x41')](handleError(_0x4ea3d4,null));};exports[_0x3083('0x5f')]=function(_0x535424,_0x217ac3,_0x3d11da){var _0x3e96a0={};var _0x5f3e8d={};var _0x4d588f;var _0x33741f;return db['Campaign']['findOne']({'where':{'id':_0x535424['params']['id']}})['then'](handleEntityNotFound(_0x217ac3,null))[_0x3083('0x23')](function(_0x19a0ec){if(_0x19a0ec){_0x4d588f=_0x19a0ec;_0x5f3e8d[_0x3083('0x2e')]=_[_0x3083('0x30')](db['CmList'][_0x3083('0x2a')]);_0x5f3e8d[_0x3083('0x2f')]=_[_0x3083('0x30')](_0x535424['query']);_0x5f3e8d[_0x3083('0x31')]=_[_0x3083('0x32')](_0x5f3e8d['model'],_0x5f3e8d['query']);_0x3e96a0[_0x3083('0x34')]=_['intersection'](_0x5f3e8d['model'],qs[_0x3083('0x33')](_0x535424[_0x3083('0x2f')][_0x3083('0x33')]));_0x3e96a0['attributes']=_0x3e96a0['attributes']['length']?_0x3e96a0[_0x3083('0x34')]:_0x5f3e8d[_0x3083('0x2e')];_0x3e96a0[_0x3083('0x38')]=qs['sort'](_0x535424[_0x3083('0x2f')][_0x3083('0x39')]);_0x3e96a0[_0x3083('0x3a')]=qs['filters'](_[_0x3083('0x56')](_0x535424[_0x3083('0x2f')],_0x5f3e8d[_0x3083('0x31')]));if(_0x535424[_0x3083('0x2f')][_0x3083('0x3b')]){_0x3e96a0[_0x3083('0x3a')]=_[_0x3083('0x3c')](_0x3e96a0[_0x3083('0x3a')],{'$or':_['map'](_0x3e96a0[_0x3083('0x34')],function(_0x20bfc8){var _0x5a9dca={};_0x5a9dca[_0x20bfc8]={'$like':'%'+_0x535424[_0x3083('0x2f')][_0x3083('0x3b')]+'%'};return _0x5a9dca;})});}_0x3e96a0=_[_0x3083('0x3c')]({},_0x3e96a0,_0x535424['options']);return _0x4d588f[_0x3083('0x5f')](_0x3e96a0);}})['then'](function(_0xd81d28){if(_0xd81d28){_0x33741f=_0xd81d28[_0x3083('0x35')];if(!_0x535424['query']['hasOwnProperty'](_0x3083('0x37'))){_0x3e96a0[_0x3083('0x1b')]=qs[_0x3083('0x1b')](_0x535424[_0x3083('0x2f')][_0x3083('0x1b')]);_0x3e96a0['offset']=qs['offset'](_0x535424['query'][_0x3083('0x19')]);}return _0x4d588f[_0x3083('0x5f')](_0x3e96a0);}})[_0x3083('0x23')](function(_0xc91ad6){if(_0xc91ad6){return _0xc91ad6?{'count':_0x33741f,'rows':_0xc91ad6}:null;}})[_0x3083('0x23')](respondWithResult(_0x217ac3,null))[_0x3083('0x41')](handleError(_0x217ac3,null));};exports['addLists']=function(_0x12a2c8,_0x3b286f,_0x5b9b44){var _0x25625f,_0x17f8ed;var _0x2de0e1=[];var _0x570645=moment()[_0x3083('0x60')]('YYYY-MM-DD\x20HH:mm:ss');return db[_0x3083('0x29')][_0x3083('0x44')]({'where':{'id':_0x12a2c8['params']['id']}})['then'](handleEntityNotFound(_0x3b286f,null))[_0x3083('0x23')](function(_0x3d2ea8){if(_0x3d2ea8){_0x17f8ed=_0x3d2ea8;return _0x3d2ea8[_0x3083('0x61')](_0x12a2c8[_0x3083('0x46')]['ids'],_[_0x3083('0x50')](_0x12a2c8[_0x3083('0x46')],['ids','id'])||{});}return null;})['spread'](function(_0x1ff17b){var _0x93799a;var _0x3bdff7;_0x25625f=_0x1ff17b||[];var _0x2b0fd4=[];if(_0x1ff17b){for(var _0x186e01=0x0;_0x186e01<_0x1ff17b[_0x3083('0x35')];_0x186e01+=0x1){var _0x2f7045=_0x1ff17b[_0x186e01]['get']({'plain':!![]});_0x17f8ed[_0x3083('0x62')]=_0x12a2c8[_0x3083('0x46')][_0x3083('0x62')]?_0x12a2c8['body']['dialCheckDuplicateType']:_0x17f8ed[_0x3083('0x62')];switch(_0x17f8ed[_0x3083('0x62')]){case _0x3083('0x63'):_0x93799a=squel[_0x3083('0x64')]()[_0x3083('0x65')]('cm_hopper')['fromQuery'](['phone',_0x3083('0x66'),_0x3083('0x67'),_0x3083('0x68'),_0x3083('0x57'),_0x3083('0x51'),_0x3083('0x52')],squel[_0x3083('0x69')]()['field']('phone',_0x3083('0x6a'))[_0x3083('0x6b')](_0x3083('0x6c'),_0x3083('0x66'))[_0x3083('0x6b')]('id',_0x3083('0x67'))[_0x3083('0x6b')](_0x2f7045[_0x3083('0x6d')][_0x3083('0x6e')](),'ListId')[_0x3083('0x6b')](_0x12a2c8['params']['id'][_0x3083('0x6e')](),_0x3083('0x57'))['field']('\x27'+_0x570645+'\x27',_0x3083('0x51'))[_0x3083('0x6b')]('\x27'+_0x570645+'\x27',_0x3083('0x52'))['from'](_0x3083('0x6f'))['where'](_0x3083('0x70'))['where']('ListId\x20=\x20?',_0x2f7045[_0x3083('0x6d')][_0x3083('0x6e')]())[_0x3083('0x3a')](_0x3083('0x71'))['where'](_0x3083('0x72'),squel['select']()[_0x3083('0x6b')](_0x3083('0x73'))[_0x3083('0x74')](_0x3083('0x75'))['where'](_0x3083('0x76'),_0x12a2c8[_0x3083('0x43')]['id'][_0x3083('0x6e')]()))['where'](_0x3083('0x72'),squel[_0x3083('0x69')]()[_0x3083('0x6b')](_0x3083('0x77'))[_0x3083('0x74')](_0x3083('0x78'))[_0x3083('0x3a')](_0x3083('0x76'),_0x12a2c8[_0x3083('0x43')]['id']['toString']())))[_0x3083('0x6e')]();break;case _0x3083('0x79'):_0x93799a=squel['insert']()[_0x3083('0x65')](_0x3083('0x78'))[_0x3083('0x7a')]([_0x3083('0x6a'),_0x3083('0x66'),_0x3083('0x67'),_0x3083('0x68'),_0x3083('0x57'),_0x3083('0x51'),'updatedAt'],squel[_0x3083('0x69')]()[_0x3083('0x6b')](_0x3083('0x6a'),_0x3083('0x6a'))[_0x3083('0x6b')](_0x3083('0x6c'),'scheduledAt')[_0x3083('0x6b')]('id',_0x3083('0x67'))[_0x3083('0x6b')](_0x2f7045[_0x3083('0x6d')][_0x3083('0x6e')](),_0x3083('0x68'))[_0x3083('0x6b')](_0x12a2c8[_0x3083('0x43')]['id']['toString'](),_0x3083('0x57'))[_0x3083('0x6b')]('\x27'+_0x570645+'\x27',_0x3083('0x51'))[_0x3083('0x6b')]('\x27'+_0x570645+'\x27',_0x3083('0x52'))[_0x3083('0x74')](_0x3083('0x6f'))[_0x3083('0x3a')]('deletedAt\x20IS\x20NULL')[_0x3083('0x3a')](_0x3083('0x7b'),_0x2f7045[_0x3083('0x6d')]['toString']())['where']('phone\x20IS\x20NOT\x20NULL')['where'](_0x3083('0x72'),squel[_0x3083('0x69')]()['field'](_0x3083('0x77'))[_0x3083('0x74')]('cm_hopper')['where']('CampaignId\x20=\x20?',_0x12a2c8[_0x3083('0x43')]['id'][_0x3083('0x6e')]())))[_0x3083('0x6e')]();break;default:_0x93799a=squel[_0x3083('0x64')]()['into'](_0x3083('0x78'))[_0x3083('0x7a')](['phone',_0x3083('0x66'),_0x3083('0x67'),'ListId',_0x3083('0x57'),_0x3083('0x51'),'updatedAt'],squel[_0x3083('0x69')]()[_0x3083('0x6b')](_0x3083('0x6a'),'phone')[_0x3083('0x6b')](_0x3083('0x6c'),_0x3083('0x66'))['field']('id',_0x3083('0x67'))[_0x3083('0x6b')](_0x2f7045[_0x3083('0x6d')][_0x3083('0x6e')](),'ListId')[_0x3083('0x6b')](_0x12a2c8[_0x3083('0x43')]['id'][_0x3083('0x6e')](),_0x3083('0x57'))[_0x3083('0x6b')]('\x27'+_0x570645+'\x27',_0x3083('0x51'))[_0x3083('0x6b')]('\x27'+_0x570645+'\x27',_0x3083('0x52'))[_0x3083('0x74')]('cm_contacts')['where'](_0x3083('0x70'))[_0x3083('0x3a')](_0x3083('0x7b'),_0x2f7045[_0x3083('0x6d')][_0x3083('0x6e')]())[_0x3083('0x3a')](_0x3083('0x71')))[_0x3083('0x6e')]();}_0x3bdff7=squel[_0x3083('0x64')]()['into'](_0x3083('0x7c'))['fromQuery'](['cmHopperId','scheduledAt',_0x3083('0x6a'),_0x3083('0x7d'),'createdAt',_0x3083('0x52')],squel[_0x3083('0x69')]()[_0x3083('0x6b')]('h.id','id')[_0x3083('0x6b')](_0x3083('0x6c'),_0x3083('0x66'))[_0x3083('0x6b')]('ci.item',_0x3083('0x6a'))['field'](_0x3083('0x7e'),'OrderBy')[_0x3083('0x6b')]('\x27'+_0x570645+'\x27',_0x3083('0x51'))[_0x3083('0x6b')]('\x27'+_0x570645+'\x27',_0x3083('0x52'))[_0x3083('0x74')](_0x3083('0x7f'),'ci')[_0x3083('0x80')]('cm_hopper','h',_0x3083('0x81'))['where'](_0x3083('0x82'),_0x2f7045['CmListId'][_0x3083('0x6e')]())[_0x3083('0x3a')](_0x3083('0x83'),_0x12a2c8[_0x3083('0x43')]['id'][_0x3083('0x6e')]())[_0x3083('0x3a')](_0x3083('0x84'),_0x570645))[_0x3083('0x6e')]();_0x2b0fd4[_0x3083('0x85')](db['sequelize']['query'](_0x93799a));_0x2de0e1[_0x3083('0x85')](db[_0x3083('0x86')][_0x3083('0x2f')](_0x3bdff7));}return BPromise['all'](_0x2b0fd4);}})[_0x3083('0x23')](function(){return BPromise[_0x3083('0x87')](_0x2de0e1);})[_0x3083('0x23')](function(){return _0x25625f;})[_0x3083('0x23')](respondWithResult(_0x3b286f,null))[_0x3083('0x41')](handleError(_0x3b286f,null));};exports['removeLists']=function(_0x3af875,_0x171533,_0x20e1d1){return db[_0x3083('0x29')]['find']({'where':{'id':_0x3af875[_0x3083('0x43')]['id']}})[_0x3083('0x23')](handleEntityNotFound(_0x171533,null))[_0x3083('0x23')](function(_0x2b48c0){if(_0x2b48c0){return _0x2b48c0[_0x3083('0x88')](_0x3af875[_0x3083('0x2f')][_0x3083('0x89')]);}})[_0x3083('0x23')](function(_0x1bf54d){if(_0x1bf54d){return db[_0x3083('0x58')][_0x3083('0x24')]({'where':{'ListId':_0x3af875[_0x3083('0x2f')]['ids'],'CampaignId':_0x3af875[_0x3083('0x43')]['id']}})['then'](function(){return _0x1bf54d;});}})['then'](respondWithStatusCode(_0x171533,null))[_0x3083('0x41')](handleError(_0x171533,null));};exports[_0x3083('0x8a')]=function(_0x3a1cac,_0x32eb80,_0x3ec2b4){var _0xe59f47={};var _0x21be0f={};var _0x46efc2;var _0x50cbe4;return db['Campaign'][_0x3083('0x55')]({'where':{'id':_0x3a1cac[_0x3083('0x43')]['id']}})['then'](handleEntityNotFound(_0x32eb80,null))[_0x3083('0x23')](function(_0x175def){if(_0x175def){_0x46efc2=_0x175def;_0x21be0f[_0x3083('0x2e')]=_[_0x3083('0x30')](db[_0x3083('0x8b')]['rawAttributes']);_0x21be0f[_0x3083('0x2f')]=_['keys'](_0x3a1cac[_0x3083('0x2f')]);_0x21be0f[_0x3083('0x31')]=_['intersection'](_0x21be0f['model'],_0x21be0f[_0x3083('0x2f')]);_0xe59f47[_0x3083('0x34')]=_['intersection'](_0x21be0f[_0x3083('0x2e')],qs[_0x3083('0x33')](_0x3a1cac[_0x3083('0x2f')][_0x3083('0x33')]));_0xe59f47[_0x3083('0x34')]=_0xe59f47[_0x3083('0x34')]['length']?_0xe59f47[_0x3083('0x34')]:_0x21be0f['model'];_0xe59f47['order']=qs[_0x3083('0x39')](_0x3a1cac[_0x3083('0x2f')]['sort']);_0xe59f47[_0x3083('0x3a')]=qs[_0x3083('0x31')](_[_0x3083('0x56')](_0x3a1cac[_0x3083('0x2f')],_0x21be0f['filters']));if(_0x3a1cac['query'][_0x3083('0x3b')]){_0xe59f47[_0x3083('0x3a')]=_[_0x3083('0x3c')](_0xe59f47[_0x3083('0x3a')],{'$or':_['map'](_0xe59f47[_0x3083('0x34')],function(_0x1050ee){var _0x21718b={};_0x21718b[_0x1050ee]={'$like':'%'+_0x3a1cac[_0x3083('0x2f')][_0x3083('0x3b')]+'%'};return _0x21718b;})});}_0xe59f47=_[_0x3083('0x3c')]({},_0xe59f47,_0x3a1cac['options']);return _0x46efc2[_0x3083('0x8a')](_0xe59f47);}})['then'](function(_0x574395){if(_0x574395){_0x50cbe4=_0x574395[_0x3083('0x35')];if(!_0x3a1cac[_0x3083('0x2f')][_0x3083('0x36')]('nolimit')){_0xe59f47[_0x3083('0x1b')]=qs[_0x3083('0x1b')](_0x3a1cac['query']['limit']);_0xe59f47[_0x3083('0x19')]=qs[_0x3083('0x19')](_0x3a1cac['query'][_0x3083('0x19')]);}return _0x46efc2[_0x3083('0x8a')](_0xe59f47);}})[_0x3083('0x23')](function(_0x59505a){if(_0x59505a){return _0x59505a?{'count':_0x50cbe4,'rows':_0x59505a}:null;}})[_0x3083('0x23')](respondWithResult(_0x32eb80,null))[_0x3083('0x41')](handleError(_0x32eb80,null));};exports[_0x3083('0x8c')]=function(_0x34d39b,_0x4501bb,_0x8d6a0b){var _0x5e6014,_0x4f14e9;var _0x166fbf=[];var _0x367473=moment()[_0x3083('0x60')]('YYYY-MM-DD\x20HH:mm:ss');return db[_0x3083('0x29')][_0x3083('0x44')]({'where':{'id':_0x34d39b[_0x3083('0x43')]['id']}})[_0x3083('0x23')](handleEntityNotFound(_0x4501bb,null))['then'](function(_0x45930d){if(_0x45930d){_0x4f14e9=_0x45930d;return _0x45930d['addBlackLists'](_0x34d39b[_0x3083('0x46')]['ids'],_[_0x3083('0x50')](_0x34d39b['body'],['ids','id'])||{});}return null;})[_0x3083('0x8d')](function(_0x2cb558){var _0x584ade;var _0x56cb66;_0x5e6014=_0x2cb558||[];var _0x313194=[];if(_0x2cb558){for(var _0x14c874=0x0;_0x14c874<_0x2cb558['length'];_0x14c874+=0x1){var _0x42199e=_0x2cb558[_0x14c874][_0x3083('0x47')]({'plain':!![]});_0x584ade=squel[_0x3083('0x64')]()[_0x3083('0x65')]('cm_hopper_black')[_0x3083('0x7a')]([_0x3083('0x6a'),'ContactId',_0x3083('0x68'),_0x3083('0x57'),_0x3083('0x51'),_0x3083('0x52')],squel[_0x3083('0x69')]()[_0x3083('0x6b')](_0x3083('0x6a'),'phone')[_0x3083('0x6b')]('id',_0x3083('0x67'))[_0x3083('0x6b')](_0x42199e[_0x3083('0x6d')]['toString'](),_0x3083('0x68'))[_0x3083('0x6b')](_0x34d39b[_0x3083('0x43')]['id'][_0x3083('0x6e')](),_0x3083('0x57'))['field'](_0x3083('0x6c'),'createdAt')['field'](_0x3083('0x6c'),_0x3083('0x52'))[_0x3083('0x74')]('cm_contacts')['where'](_0x3083('0x70'))['where'](_0x3083('0x7b'),_0x42199e[_0x3083('0x6d')][_0x3083('0x6e')]())['where'](_0x3083('0x71')))[_0x3083('0x6e')]();_0x313194[_0x3083('0x85')](db['sequelize'][_0x3083('0x2f')](_0x584ade));}return BPromise['all'](_0x313194);}})[_0x3083('0x23')](function(){return _0x5e6014;})[_0x3083('0x23')](respondWithResult(_0x4501bb,null))[_0x3083('0x41')](handleError(_0x4501bb,null));};exports[_0x3083('0x8e')]=function(_0x22821e,_0x33fbc8,_0xc9538d){return db[_0x3083('0x29')][_0x3083('0x44')]({'where':{'id':_0x22821e[_0x3083('0x43')]['id']}})['then'](handleEntityNotFound(_0x33fbc8,null))[_0x3083('0x23')](function(_0xd1a3b4){if(_0xd1a3b4){return _0xd1a3b4[_0x3083('0x8e')](_0x22821e[_0x3083('0x2f')][_0x3083('0x89')]);}})['then'](function(_0x1e3257){if(_0x1e3257){return db[_0x3083('0x5e')]['destroy']({'where':{'ListId':_0x22821e['query']['ids'],'CampaignId':_0x22821e[_0x3083('0x43')]['id']}})['then'](function(){return _0x1e3257;});}})['then'](respondWithStatusCode(_0x33fbc8,null))['catch'](handleError(_0x33fbc8,null));};
\ No newline at end of file
+var _0x76c0=['ejs','fs-extra','lodash','squel','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','get','IvrCampaigns','UserProfileResource','error','stack','name','index','map','Campaign','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','filter','where','VIRTUAL','options','include','findAll','show','includeAll','merge','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','clone','params','length','omit','createdAt','updatedAt','UserProfileSection','CmHopper','pick','CampaignId','rows','findOne','CmHopperHistory','getHopperFinals','CmHopperFinal','getHopperBlacks','CmHopperBlack','getLists','CmList','format','YYYY-MM-DD\x20HH:mm:ss','addLists','ids','spread','dialCheckDuplicateType','always','into','fromQuery','phone','scheduledAt','ContactId','ListId','select','field','NOW()','toString','from','cm_contacts','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','CampaignId\x20=\x20?','cm_hopper','onlyIfOpen','insert','CmListId','COALESCE(phone,\x27\x27)','cm_hopper_additional_phones','cmHopperId','h.id','ci.item','ci.OrderBY','cm_contact_has_items','h.ListId\x20=\x20?','h.CampaignId=?','push','sequelize','all','removeLists','getBlackLists','addBlackLists','removeBlackLists','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv'];(function(_0x237b85,_0x34ff88){var _0x169191=function(_0x3fed2d){while(--_0x3fed2d){_0x237b85['push'](_0x237b85['shift']());}};_0x169191(++_0x34ff88);}(_0x76c0,0x84));var _0x076c=function(_0x1c3702,_0x27a4fb){_0x1c3702=_0x1c3702-0x0;var _0x6f03c8=_0x76c0[_0x1c3702];return _0x6f03c8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x076c('0x0'));var zipdir=require(_0x076c('0x1'));var jsonpatch=require(_0x076c('0x2'));var rp=require(_0x076c('0x3'));var moment=require(_0x076c('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x076c('0x5'));var path=require(_0x076c('0x6'));var sox=require(_0x076c('0x7'));var csv=require(_0x076c('0x8'));var ejs=require(_0x076c('0x9'));var fs=require('fs');var fs_extra=require(_0x076c('0xa'));var _=require(_0x076c('0xb'));var squel=require(_0x076c('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x076c('0xd'));var toCsv=require('to-csv');var querystring=require(_0x076c('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x076c('0xf'));var as=require(_0x076c('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x076c('0x11'))(_0x076c('0x12'));var utils=require(_0x076c('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4c5476,_0x458ff3){_0x458ff3=_0x458ff3||0xcc;return function(_0x35d998){if(_0x35d998){return _0x4c5476[_0x076c('0x14')](_0x458ff3);}return _0x4c5476[_0x076c('0x15')](_0x458ff3)[_0x076c('0x16')]();};}function respondWithResult(_0x11c306,_0x49ec85){_0x49ec85=_0x49ec85||0xc8;return function(_0x379cae){if(_0x379cae){return _0x11c306[_0x076c('0x15')](_0x49ec85)['json'](_0x379cae);}};}function respondWithFilteredResult(_0x174c99,_0x5d1983){return function(_0x33c942){if(_0x33c942){var _0x31c9a3=typeof _0x5d1983[_0x076c('0x17')]===_0x076c('0x18')&&typeof _0x5d1983[_0x076c('0x19')]==='undefined';var _0x370181=_0x33c942[_0x076c('0x1a')];var _0x5e381f=_0x31c9a3?0x0:_0x5d1983['offset'];var _0x16abb6=_0x31c9a3?_0x33c942['count']:_0x5d1983[_0x076c('0x17')]+_0x5d1983[_0x076c('0x19')];var _0x2a2e0c;if(_0x16abb6>=_0x370181){_0x16abb6=_0x370181;_0x2a2e0c=0xc8;}else{_0x2a2e0c=0xce;}_0x174c99[_0x076c('0x15')](_0x2a2e0c);return _0x174c99[_0x076c('0x1b')](_0x076c('0x1c'),_0x5e381f+'-'+_0x16abb6+'/'+_0x370181)['json'](_0x33c942);}return null;};}function patchUpdates(_0x42c4fe){return function(_0x245e4f){try{jsonpatch[_0x076c('0x1d')](_0x245e4f,_0x42c4fe,!![]);}catch(_0x3fb574){return BPromise[_0x076c('0x1e')](_0x3fb574);}return _0x245e4f[_0x076c('0x1f')]();};}function saveUpdates(_0x4305ff,_0x145a46){return function(_0x373a51){if(_0x373a51){return _0x373a51[_0x076c('0x20')](_0x4305ff)[_0x076c('0x21')](function(_0x1d1285){return _0x1d1285;});}return null;};}function removeEntity(_0x240155,_0x1a29f8){return function(_0x3a827d){if(_0x3a827d){return _0x3a827d[_0x076c('0x22')]()[_0x076c('0x21')](function(){var _0x310b9f=_0x3a827d[_0x076c('0x23')]({'plain':!![]});var _0x4ac8e4=_0x076c('0x24');return db[_0x076c('0x25')]['destroy']({'where':{'type':_0x4ac8e4,'resourceId':_0x310b9f['id']}})['then'](function(){return _0x3a827d;});})['then'](function(){_0x240155[_0x076c('0x15')](0xcc)[_0x076c('0x16')]();});}};}function handleEntityNotFound(_0x5e8319,_0x2ca408){return function(_0x2a7636){if(!_0x2a7636){_0x5e8319[_0x076c('0x14')](0x194);}return _0x2a7636;};}function handleError(_0x1c5a83,_0x1238a1){_0x1238a1=_0x1238a1||0x1f4;return function(_0x1a4e83){logger[_0x076c('0x26')](_0x1a4e83[_0x076c('0x27')]);if(_0x1a4e83[_0x076c('0x28')]){delete _0x1a4e83[_0x076c('0x28')];}_0x1c5a83[_0x076c('0x15')](_0x1238a1)['send'](_0x1a4e83);};}exports[_0x076c('0x29')]=function(_0x504e7c,_0x5cdd8c){var _0x405ae0={},_0x4e72d5={},_0x4fb3ba={'count':0x0,'rows':[]};var _0x5e0f43=_[_0x076c('0x2a')](db[_0x076c('0x2b')][_0x076c('0x2c')],function(_0x7eb598){return{'name':_0x7eb598[_0x076c('0x2d')],'type':_0x7eb598[_0x076c('0x2e')][_0x076c('0x2f')]};});_0x4e72d5[_0x076c('0x30')]=_[_0x076c('0x2a')](_0x5e0f43,_0x076c('0x28'));_0x4e72d5['query']=_[_0x076c('0x31')](_0x504e7c[_0x076c('0x32')]);_0x4e72d5['filters']=_[_0x076c('0x33')](_0x4e72d5[_0x076c('0x30')],_0x4e72d5['query']);_0x405ae0[_0x076c('0x34')]=_['intersection'](_0x4e72d5[_0x076c('0x30')],qs[_0x076c('0x35')](_0x504e7c[_0x076c('0x32')][_0x076c('0x35')]));_0x405ae0[_0x076c('0x34')]=_0x405ae0[_0x076c('0x34')]['length']?_0x405ae0[_0x076c('0x34')]:_0x4e72d5[_0x076c('0x30')];if(!_0x504e7c[_0x076c('0x32')][_0x076c('0x36')](_0x076c('0x37'))){_0x405ae0[_0x076c('0x19')]=qs[_0x076c('0x19')](_0x504e7c['query'][_0x076c('0x19')]);_0x405ae0[_0x076c('0x17')]=qs['offset'](_0x504e7c['query'][_0x076c('0x17')]);}_0x405ae0[_0x076c('0x38')]=qs[_0x076c('0x39')](_0x504e7c['query']['sort']);_0x405ae0['where']=qs[_0x076c('0x3a')](_['pick'](_0x504e7c[_0x076c('0x32')],_0x4e72d5[_0x076c('0x3a')]),_0x5e0f43);if(_0x504e7c[_0x076c('0x32')][_0x076c('0x3b')]){_0x405ae0[_0x076c('0x3c')]=_['merge'](_0x405ae0['where'],{'$or':_[_0x076c('0x2a')](_0x5e0f43,function(_0x16c3dc){if(_0x16c3dc[_0x076c('0x2e')]!==_0x076c('0x3d')){var _0x270a24={};_0x270a24[_0x16c3dc['name']]={'$like':'%'+_0x504e7c[_0x076c('0x32')][_0x076c('0x3b')]+'%'};return _0x270a24;}})});}_0x405ae0=_['merge']({},_0x405ae0,_0x504e7c[_0x076c('0x3e')]);var _0x5456f9={'where':_0x405ae0[_0x076c('0x3c')]};return db[_0x076c('0x2b')][_0x076c('0x1a')](_0x5456f9)[_0x076c('0x21')](function(_0x49ab12){_0x4fb3ba[_0x076c('0x1a')]=_0x49ab12;if(_0x504e7c['query']['includeAll']){_0x405ae0[_0x076c('0x3f')]=[{'all':!![]}];}return db[_0x076c('0x2b')][_0x076c('0x40')](_0x405ae0);})['then'](function(_0x2a1f2c){_0x4fb3ba['rows']=_0x2a1f2c;return _0x4fb3ba;})['then'](respondWithFilteredResult(_0x5cdd8c,_0x405ae0))['catch'](handleError(_0x5cdd8c,null));};exports[_0x076c('0x41')]=function(_0x1f239d,_0x33a483){var _0x3db335={'raw':![],'where':{'id':_0x1f239d['params']['id']}},_0x31d89f={};_0x31d89f[_0x076c('0x30')]=_[_0x076c('0x31')](db['Campaign']['rawAttributes']);_0x31d89f[_0x076c('0x32')]=_[_0x076c('0x31')](_0x1f239d[_0x076c('0x32')]);_0x31d89f[_0x076c('0x3a')]=_[_0x076c('0x33')](_0x31d89f[_0x076c('0x30')],_0x31d89f[_0x076c('0x32')]);_0x3db335[_0x076c('0x34')]=_[_0x076c('0x33')](_0x31d89f[_0x076c('0x30')],qs[_0x076c('0x35')](_0x1f239d[_0x076c('0x32')][_0x076c('0x35')]));_0x3db335[_0x076c('0x34')]=_0x3db335[_0x076c('0x34')]['length']?_0x3db335[_0x076c('0x34')]:_0x31d89f[_0x076c('0x30')];if(_0x1f239d['query'][_0x076c('0x42')]){_0x3db335[_0x076c('0x3f')]=[{'all':!![]}];}_0x3db335=_[_0x076c('0x43')]({},_0x3db335,_0x1f239d['options']);return db[_0x076c('0x2b')][_0x076c('0x44')](_0x3db335)[_0x076c('0x21')](handleEntityNotFound(_0x33a483,null))[_0x076c('0x21')](respondWithResult(_0x33a483,null))[_0x076c('0x45')](handleError(_0x33a483,null));};exports[_0x076c('0x46')]=function(_0x4e0e17,_0x2169ba){return db[_0x076c('0x2b')]['create'](_0x4e0e17[_0x076c('0x47')],{})[_0x076c('0x21')](function(_0x19df0b){var _0x1b0f33=_0x4e0e17[_0x076c('0x48')][_0x076c('0x23')]({'plain':!![]});if(!_0x1b0f33)throw new Error(_0x076c('0x49'));if(_0x1b0f33[_0x076c('0x4a')]===_0x076c('0x48')){var _0x241e7c=_0x19df0b[_0x076c('0x23')]({'plain':!![]});var _0x237169='IvrCampaigns';return db['UserProfileSection'][_0x076c('0x44')]({'where':{'name':_0x237169,'userProfileId':_0x1b0f33[_0x076c('0x4b')]},'raw':!![]})[_0x076c('0x21')](function(_0x2f6e05){if(_0x2f6e05&&_0x2f6e05[_0x076c('0x4c')]===0x0){return db[_0x076c('0x25')][_0x076c('0x46')]({'name':_0x241e7c['name'],'resourceId':_0x241e7c['id'],'type':_0x2f6e05[_0x076c('0x28')],'sectionId':_0x2f6e05['id']},{})[_0x076c('0x21')](function(){return _0x19df0b;});}else{return _0x19df0b;}})[_0x076c('0x45')](function(_0x3ff49c){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3ff49c);throw _0x3ff49c;});}return _0x19df0b;})[_0x076c('0x21')](respondWithResult(_0x2169ba,0xc9))[_0x076c('0x45')](handleError(_0x2169ba,null));};exports[_0x076c('0x4d')]=function(_0x676a54,_0x1c143e){var _0x3f6fb6={'where':{'id':_0x676a54[_0x076c('0x4e')]['id']}},_0x354d18={};_0x354d18[_0x076c('0x30')]=_[_0x076c('0x31')](db[_0x076c('0x2b')][_0x076c('0x2c')]);_0x3f6fb6[_0x076c('0x34')]=_['intersection'](_0x354d18[_0x076c('0x30')],qs[_0x076c('0x35')](_0x676a54[_0x076c('0x32')]['fields']));_0x3f6fb6[_0x076c('0x34')]=_0x3f6fb6[_0x076c('0x34')][_0x076c('0x4f')]?_0x3f6fb6[_0x076c('0x34')]:_0x354d18[_0x076c('0x30')];if(_0x676a54[_0x076c('0x32')][_0x076c('0x42')]){_0x3f6fb6[_0x076c('0x3f')]=[{'all':!![]}];}_0x3f6fb6=_[_0x076c('0x43')]({},_0x3f6fb6,_0x676a54[_0x076c('0x3e')]);return db[_0x076c('0x2b')][_0x076c('0x44')](_0x3f6fb6)[_0x076c('0x21')](handleEntityNotFound(_0x1c143e,null))[_0x076c('0x21')](function(_0x3ebce0){if(_0x3ebce0){var _0x4638a5=_0x3ebce0[_0x076c('0x23')]({'plain':!![]});_0x4638a5=qs[_0x076c('0x50')](_0x4638a5,['id',_0x076c('0x51'),_0x076c('0x52')]);_0x676a54[_0x076c('0x47')]=_[_0x076c('0x50')](_0x676a54[_0x076c('0x47')],['id','createdAt',_0x076c('0x52')]);return db[_0x076c('0x2b')]['create'](_['merge'](_0x4638a5,_0x676a54[_0x076c('0x47')]),{'include':_0x676a54[_0x076c('0x32')][_0x076c('0x42')]?[{'all':!![]}]:undefined})[_0x076c('0x21')](function(_0xfbf88){var _0x48e8d1=_0x676a54[_0x076c('0x48')][_0x076c('0x23')]({'plain':!![]});if(!_0x48e8d1)throw new Error(_0x076c('0x49'));if(_0x48e8d1[_0x076c('0x4a')]===_0x076c('0x48')){var _0x54727b=_0xfbf88[_0x076c('0x23')]({'plain':!![]});var _0x2eb751='IvrCampaigns';return db[_0x076c('0x53')][_0x076c('0x44')]({'where':{'name':_0x2eb751,'userProfileId':_0x48e8d1[_0x076c('0x4b')]},'raw':!![]})[_0x076c('0x21')](function(_0x504a34){if(_0x504a34&&_0x504a34['autoAssociation']===0x0){return db[_0x076c('0x25')]['create']({'name':_0x54727b[_0x076c('0x28')],'resourceId':_0x54727b['id'],'type':_0x504a34['name'],'sectionId':_0x504a34['id']},{})[_0x076c('0x21')](function(){return _0xfbf88;});}else{return _0xfbf88;}})[_0x076c('0x45')](function(_0x299c6d){logger[_0x076c('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x299c6d);throw _0x299c6d;});}return _0xfbf88;});}})[_0x076c('0x21')](respondWithResult(_0x1c143e,0xc9))['catch'](handleError(_0x1c143e,null));};exports[_0x076c('0x20')]=function(_0x51e38a,_0x553e0e){if(_0x51e38a[_0x076c('0x47')]['id']){delete _0x51e38a[_0x076c('0x47')]['id'];}return db[_0x076c('0x2b')][_0x076c('0x44')]({'where':{'id':_0x51e38a['params']['id']}})[_0x076c('0x21')](handleEntityNotFound(_0x553e0e,null))['then'](saveUpdates(_0x51e38a[_0x076c('0x47')],null))[_0x076c('0x21')](respondWithResult(_0x553e0e,null))[_0x076c('0x45')](handleError(_0x553e0e,null));};exports[_0x076c('0x22')]=function(_0x5258a1,_0x3d150c){return db[_0x076c('0x2b')][_0x076c('0x44')]({'where':{'id':_0x5258a1['params']['id']}})[_0x076c('0x21')](handleEntityNotFound(_0x3d150c,null))[_0x076c('0x21')](removeEntity(_0x3d150c,null))[_0x076c('0x45')](handleError(_0x3d150c,null));};exports['getHoppers']=function(_0x31ca10,_0x67ec22,_0xa15e52){var _0xa1b1f1={'raw':!![],'where':{}};var _0x31b238={};var _0x54158d={'count':0x0,'rows':[]};return db[_0x076c('0x2b')]['findOne']({'where':{'id':_0x31ca10[_0x076c('0x4e')]['id']}})[_0x076c('0x21')](handleEntityNotFound(_0x67ec22,null))[_0x076c('0x21')](function(_0x59f451){if(_0x59f451){_0x31b238['model']=_[_0x076c('0x31')](db[_0x076c('0x54')]['rawAttributes']);_0x31b238[_0x076c('0x32')]=_[_0x076c('0x31')](_0x31ca10['query']);_0x31b238['filters']=_[_0x076c('0x33')](_0x31b238[_0x076c('0x30')],_0x31b238['query']);_0xa1b1f1['attributes']=_[_0x076c('0x33')](_0x31b238['model'],qs[_0x076c('0x35')](_0x31ca10[_0x076c('0x32')][_0x076c('0x35')]));_0xa1b1f1[_0x076c('0x34')]=_0xa1b1f1[_0x076c('0x34')][_0x076c('0x4f')]?_0xa1b1f1['attributes']:_0x31b238[_0x076c('0x30')];if(!_0x31ca10['query']['hasOwnProperty']('nolimit')){_0xa1b1f1[_0x076c('0x19')]=qs[_0x076c('0x19')](_0x31ca10['query'][_0x076c('0x19')]);_0xa1b1f1[_0x076c('0x17')]=qs[_0x076c('0x17')](_0x31ca10[_0x076c('0x32')][_0x076c('0x17')]);}_0xa1b1f1[_0x076c('0x38')]=qs[_0x076c('0x39')](_0x31ca10[_0x076c('0x32')][_0x076c('0x39')]);_0xa1b1f1[_0x076c('0x3c')]=qs[_0x076c('0x3a')](_[_0x076c('0x55')](_0x31ca10[_0x076c('0x32')],_0x31b238[_0x076c('0x3a')]));_0xa1b1f1['where'][_0x076c('0x56')]=_0x59f451['id'];if(_0x31ca10['query'][_0x076c('0x3b')]){_0xa1b1f1[_0x076c('0x3c')]=_[_0x076c('0x43')](_0xa1b1f1['where'],{'$or':_[_0x076c('0x2a')](_0xa1b1f1[_0x076c('0x34')],function(_0x72db73){var _0x3c4b91={};_0x3c4b91[_0x72db73]={'$like':'%'+_0x31ca10[_0x076c('0x32')][_0x076c('0x3b')]+'%'};return _0x3c4b91;})});}_0xa1b1f1=_[_0x076c('0x43')]({},_0xa1b1f1,_0x31ca10[_0x076c('0x3e')]);return db[_0x076c('0x54')][_0x076c('0x1a')]({'where':_0xa1b1f1['where']})[_0x076c('0x21')](function(_0x1111df){_0x54158d['count']=_0x1111df;if(_0x31ca10[_0x076c('0x32')][_0x076c('0x42')]){_0xa1b1f1[_0x076c('0x3f')]=[{'all':!![]}];}return db[_0x076c('0x54')][_0x076c('0x40')](_0xa1b1f1);})[_0x076c('0x21')](function(_0x453339){_0x54158d[_0x076c('0x57')]=_0x453339;return _0x54158d;});}})[_0x076c('0x21')](respondWithFilteredResult(_0x67ec22,_0xa1b1f1))[_0x076c('0x45')](handleError(_0x67ec22,null));};exports['getHopperHistories']=function(_0x2d5533,_0x5b46f2,_0x5526ea){var _0x2be3ae={'raw':!![],'where':{}};var _0x5f340f={};var _0x4c7e21={'count':0x0,'rows':[]};return db['Campaign'][_0x076c('0x58')]({'where':{'id':_0x2d5533[_0x076c('0x4e')]['id']}})[_0x076c('0x21')](handleEntityNotFound(_0x5b46f2,null))[_0x076c('0x21')](function(_0x389cb7){if(_0x389cb7){_0x5f340f[_0x076c('0x30')]=_[_0x076c('0x31')](db['CmHopperHistory']['rawAttributes']);_0x5f340f['query']=_[_0x076c('0x31')](_0x2d5533['query']);_0x5f340f['filters']=_['intersection'](_0x5f340f[_0x076c('0x30')],_0x5f340f['query']);_0x2be3ae[_0x076c('0x34')]=_[_0x076c('0x33')](_0x5f340f[_0x076c('0x30')],qs[_0x076c('0x35')](_0x2d5533[_0x076c('0x32')][_0x076c('0x35')]));_0x2be3ae[_0x076c('0x34')]=_0x2be3ae[_0x076c('0x34')][_0x076c('0x4f')]?_0x2be3ae[_0x076c('0x34')]:_0x5f340f[_0x076c('0x30')];if(!_0x2d5533[_0x076c('0x32')][_0x076c('0x36')]('nolimit')){_0x2be3ae['limit']=qs[_0x076c('0x19')](_0x2d5533[_0x076c('0x32')][_0x076c('0x19')]);_0x2be3ae['offset']=qs[_0x076c('0x17')](_0x2d5533[_0x076c('0x32')]['offset']);}_0x2be3ae[_0x076c('0x38')]=qs[_0x076c('0x39')](_0x2d5533[_0x076c('0x32')][_0x076c('0x39')]);_0x2be3ae['where']=qs[_0x076c('0x3a')](_[_0x076c('0x55')](_0x2d5533[_0x076c('0x32')],_0x5f340f[_0x076c('0x3a')]));_0x2be3ae[_0x076c('0x3c')][_0x076c('0x56')]=_0x389cb7['id'];if(_0x2d5533['query'][_0x076c('0x3b')]){_0x2be3ae[_0x076c('0x3c')]=_[_0x076c('0x43')](_0x2be3ae[_0x076c('0x3c')],{'$or':_[_0x076c('0x2a')](_0x2be3ae[_0x076c('0x34')],function(_0x295ef8){var _0x2277da={};_0x2277da[_0x295ef8]={'$like':'%'+_0x2d5533['query']['filter']+'%'};return _0x2277da;})});}_0x2be3ae=_['merge']({},_0x2be3ae,_0x2d5533[_0x076c('0x3e')]);return db[_0x076c('0x59')]['count']({'where':_0x2be3ae[_0x076c('0x3c')]})[_0x076c('0x21')](function(_0x42b932){_0x4c7e21[_0x076c('0x1a')]=_0x42b932;if(_0x2d5533[_0x076c('0x32')][_0x076c('0x42')]){_0x2be3ae[_0x076c('0x3f')]=[{'all':!![]}];}return db[_0x076c('0x59')][_0x076c('0x40')](_0x2be3ae);})[_0x076c('0x21')](function(_0x5d304d){_0x4c7e21[_0x076c('0x57')]=_0x5d304d;return _0x4c7e21;});}})[_0x076c('0x21')](respondWithFilteredResult(_0x5b46f2,_0x2be3ae))[_0x076c('0x45')](handleError(_0x5b46f2,null));};exports[_0x076c('0x5a')]=function(_0x2bf1e0,_0x492fc2,_0x1b71f0){var _0x38fbfe={'raw':!![],'where':{}};var _0x16f730={};var _0x429ba8={'count':0x0,'rows':[]};return db[_0x076c('0x2b')][_0x076c('0x58')]({'where':{'id':_0x2bf1e0[_0x076c('0x4e')]['id']}})[_0x076c('0x21')](handleEntityNotFound(_0x492fc2,null))[_0x076c('0x21')](function(_0x5e601d){if(_0x5e601d){_0x16f730['model']=_[_0x076c('0x31')](db[_0x076c('0x5b')][_0x076c('0x2c')]);_0x16f730['query']=_[_0x076c('0x31')](_0x2bf1e0[_0x076c('0x32')]);_0x16f730[_0x076c('0x3a')]=_[_0x076c('0x33')](_0x16f730[_0x076c('0x30')],_0x16f730[_0x076c('0x32')]);_0x38fbfe[_0x076c('0x34')]=_[_0x076c('0x33')](_0x16f730['model'],qs[_0x076c('0x35')](_0x2bf1e0[_0x076c('0x32')][_0x076c('0x35')]));_0x38fbfe[_0x076c('0x34')]=_0x38fbfe[_0x076c('0x34')][_0x076c('0x4f')]?_0x38fbfe[_0x076c('0x34')]:_0x16f730[_0x076c('0x30')];if(!_0x2bf1e0[_0x076c('0x32')][_0x076c('0x36')]('nolimit')){_0x38fbfe[_0x076c('0x19')]=qs['limit'](_0x2bf1e0['query'][_0x076c('0x19')]);_0x38fbfe[_0x076c('0x17')]=qs['offset'](_0x2bf1e0[_0x076c('0x32')][_0x076c('0x17')]);}_0x38fbfe['order']=qs[_0x076c('0x39')](_0x2bf1e0[_0x076c('0x32')]['sort']);_0x38fbfe[_0x076c('0x3c')]=qs[_0x076c('0x3a')](_[_0x076c('0x55')](_0x2bf1e0[_0x076c('0x32')],_0x16f730[_0x076c('0x3a')]));_0x38fbfe[_0x076c('0x3c')][_0x076c('0x56')]=_0x5e601d['id'];if(_0x2bf1e0[_0x076c('0x32')][_0x076c('0x3b')]){_0x38fbfe[_0x076c('0x3c')]=_['merge'](_0x38fbfe['where'],{'$or':_[_0x076c('0x2a')](_0x38fbfe[_0x076c('0x34')],function(_0x48dee8){var _0x1d539a={};_0x1d539a[_0x48dee8]={'$like':'%'+_0x2bf1e0[_0x076c('0x32')][_0x076c('0x3b')]+'%'};return _0x1d539a;})});}_0x38fbfe=_[_0x076c('0x43')]({},_0x38fbfe,_0x2bf1e0['options']);return db['CmHopperFinal']['count']({'where':_0x38fbfe[_0x076c('0x3c')]})[_0x076c('0x21')](function(_0xed4f2d){_0x429ba8[_0x076c('0x1a')]=_0xed4f2d;if(_0x2bf1e0[_0x076c('0x32')][_0x076c('0x42')]){_0x38fbfe[_0x076c('0x3f')]=[{'all':!![]}];}return db[_0x076c('0x5b')]['findAll'](_0x38fbfe);})['then'](function(_0x41bc76){_0x429ba8[_0x076c('0x57')]=_0x41bc76;return _0x429ba8;});}})['then'](respondWithFilteredResult(_0x492fc2,_0x38fbfe))[_0x076c('0x45')](handleError(_0x492fc2,null));};exports[_0x076c('0x5c')]=function(_0x3fa693,_0x34f474,_0x251f63){var _0x41cc48={'raw':!![],'where':{}};var _0x535a52={};var _0x58cd85={'count':0x0,'rows':[]};return db[_0x076c('0x2b')]['findOne']({'where':{'id':_0x3fa693[_0x076c('0x4e')]['id']}})[_0x076c('0x21')](handleEntityNotFound(_0x34f474,null))[_0x076c('0x21')](function(_0x5d5308){if(_0x5d5308){_0x535a52[_0x076c('0x30')]=_['keys'](db[_0x076c('0x5d')][_0x076c('0x2c')]);_0x535a52['query']=_[_0x076c('0x31')](_0x3fa693[_0x076c('0x32')]);_0x535a52[_0x076c('0x3a')]=_[_0x076c('0x33')](_0x535a52[_0x076c('0x30')],_0x535a52[_0x076c('0x32')]);_0x41cc48[_0x076c('0x34')]=_[_0x076c('0x33')](_0x535a52['model'],qs[_0x076c('0x35')](_0x3fa693[_0x076c('0x32')][_0x076c('0x35')]));_0x41cc48['attributes']=_0x41cc48[_0x076c('0x34')][_0x076c('0x4f')]?_0x41cc48['attributes']:_0x535a52[_0x076c('0x30')];if(!_0x3fa693[_0x076c('0x32')][_0x076c('0x36')]('nolimit')){_0x41cc48[_0x076c('0x19')]=qs[_0x076c('0x19')](_0x3fa693[_0x076c('0x32')]['limit']);_0x41cc48['offset']=qs[_0x076c('0x17')](_0x3fa693['query'][_0x076c('0x17')]);}_0x41cc48[_0x076c('0x38')]=qs[_0x076c('0x39')](_0x3fa693[_0x076c('0x32')]['sort']);_0x41cc48['where']=qs[_0x076c('0x3a')](_[_0x076c('0x55')](_0x3fa693[_0x076c('0x32')],_0x535a52[_0x076c('0x3a')]));_0x41cc48[_0x076c('0x3c')][_0x076c('0x56')]=_0x5d5308['id'];if(_0x3fa693[_0x076c('0x32')][_0x076c('0x3b')]){_0x41cc48[_0x076c('0x3c')]=_[_0x076c('0x43')](_0x41cc48[_0x076c('0x3c')],{'$or':_['map'](_0x41cc48['attributes'],function(_0x56a10c){var _0x4e90a5={};_0x4e90a5[_0x56a10c]={'$like':'%'+_0x3fa693[_0x076c('0x32')][_0x076c('0x3b')]+'%'};return _0x4e90a5;})});}_0x41cc48=_['merge']({},_0x41cc48,_0x3fa693[_0x076c('0x3e')]);return db[_0x076c('0x5d')][_0x076c('0x1a')]({'where':_0x41cc48[_0x076c('0x3c')]})['then'](function(_0x119426){_0x58cd85[_0x076c('0x1a')]=_0x119426;if(_0x3fa693['query'][_0x076c('0x42')]){_0x41cc48[_0x076c('0x3f')]=[{'all':!![]}];}return db[_0x076c('0x5d')][_0x076c('0x40')](_0x41cc48);})[_0x076c('0x21')](function(_0x54ba07){_0x58cd85[_0x076c('0x57')]=_0x54ba07;return _0x58cd85;});}})['then'](respondWithFilteredResult(_0x34f474,_0x41cc48))[_0x076c('0x45')](handleError(_0x34f474,null));};exports[_0x076c('0x5e')]=function(_0x3583af,_0x41e45c,_0x6f1104){var _0x43b175={};var _0x3fba11={};var _0x509d27;var _0x91b664;return db[_0x076c('0x2b')][_0x076c('0x58')]({'where':{'id':_0x3583af[_0x076c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x41e45c,null))[_0x076c('0x21')](function(_0x334271){if(_0x334271){_0x509d27=_0x334271;_0x3fba11[_0x076c('0x30')]=_[_0x076c('0x31')](db[_0x076c('0x5f')][_0x076c('0x2c')]);_0x3fba11[_0x076c('0x32')]=_[_0x076c('0x31')](_0x3583af[_0x076c('0x32')]);_0x3fba11[_0x076c('0x3a')]=_[_0x076c('0x33')](_0x3fba11[_0x076c('0x30')],_0x3fba11[_0x076c('0x32')]);_0x43b175[_0x076c('0x34')]=_[_0x076c('0x33')](_0x3fba11[_0x076c('0x30')],qs[_0x076c('0x35')](_0x3583af['query'][_0x076c('0x35')]));_0x43b175[_0x076c('0x34')]=_0x43b175[_0x076c('0x34')][_0x076c('0x4f')]?_0x43b175[_0x076c('0x34')]:_0x3fba11['model'];_0x43b175[_0x076c('0x38')]=qs['sort'](_0x3583af[_0x076c('0x32')][_0x076c('0x39')]);_0x43b175[_0x076c('0x3c')]=qs[_0x076c('0x3a')](_['pick'](_0x3583af['query'],_0x3fba11[_0x076c('0x3a')]));if(_0x3583af[_0x076c('0x32')][_0x076c('0x3b')]){_0x43b175[_0x076c('0x3c')]=_[_0x076c('0x43')](_0x43b175['where'],{'$or':_[_0x076c('0x2a')](_0x43b175[_0x076c('0x34')],function(_0x3316e5){var _0x10fd94={};_0x10fd94[_0x3316e5]={'$like':'%'+_0x3583af['query'][_0x076c('0x3b')]+'%'};return _0x10fd94;})});}_0x43b175=_[_0x076c('0x43')]({},_0x43b175,_0x3583af['options']);return _0x509d27[_0x076c('0x5e')](_0x43b175);}})[_0x076c('0x21')](function(_0x580652){if(_0x580652){_0x91b664=_0x580652[_0x076c('0x4f')];if(!_0x3583af[_0x076c('0x32')][_0x076c('0x36')](_0x076c('0x37'))){_0x43b175[_0x076c('0x19')]=qs['limit'](_0x3583af[_0x076c('0x32')][_0x076c('0x19')]);_0x43b175[_0x076c('0x17')]=qs[_0x076c('0x17')](_0x3583af['query'][_0x076c('0x17')]);}return _0x509d27[_0x076c('0x5e')](_0x43b175);}})[_0x076c('0x21')](function(_0x33a5df){if(_0x33a5df){return _0x33a5df?{'count':_0x91b664,'rows':_0x33a5df}:null;}})[_0x076c('0x21')](respondWithResult(_0x41e45c,null))['catch'](handleError(_0x41e45c,null));};exports['addLists']=function(_0x4a92ab,_0x5b73f8,_0x25a350){var _0x4553c0,_0x4c1831;var _0x77b532=[];var _0x31f22b=moment()[_0x076c('0x60')](_0x076c('0x61'));return db['Campaign'][_0x076c('0x44')]({'where':{'id':_0x4a92ab[_0x076c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x5b73f8,null))[_0x076c('0x21')](function(_0x51d921){if(_0x51d921){_0x4c1831=_0x51d921;return _0x51d921[_0x076c('0x62')](_0x4a92ab[_0x076c('0x47')][_0x076c('0x63')],_[_0x076c('0x50')](_0x4a92ab['body'],['ids','id'])||{});}return null;})[_0x076c('0x64')](function(_0x54797){var _0x106bc4;var _0x1fd04d;_0x4553c0=_0x54797||[];var _0x370bff=[];if(_0x54797){for(var _0x488220=0x0;_0x488220<_0x54797[_0x076c('0x4f')];_0x488220+=0x1){var _0x35e619=_0x54797[_0x488220][_0x076c('0x23')]({'plain':!![]});_0x4c1831[_0x076c('0x65')]=_0x4a92ab[_0x076c('0x47')][_0x076c('0x65')]?_0x4a92ab['body'][_0x076c('0x65')]:_0x4c1831['dialCheckDuplicateType'];switch(_0x4c1831[_0x076c('0x65')]){case _0x076c('0x66'):_0x106bc4=squel['insert']()[_0x076c('0x67')]('cm_hopper')[_0x076c('0x68')]([_0x076c('0x69'),_0x076c('0x6a'),_0x076c('0x6b'),_0x076c('0x6c'),_0x076c('0x56'),'createdAt',_0x076c('0x52')],squel[_0x076c('0x6d')]()['field']('phone',_0x076c('0x69'))[_0x076c('0x6e')](_0x076c('0x6f'),_0x076c('0x6a'))['field']('id','ContactId')['field'](_0x35e619['CmListId'][_0x076c('0x70')](),_0x076c('0x6c'))[_0x076c('0x6e')](_0x4a92ab['params']['id'][_0x076c('0x70')](),_0x076c('0x56'))[_0x076c('0x6e')]('\x27'+_0x31f22b+'\x27',_0x076c('0x51'))[_0x076c('0x6e')]('\x27'+_0x31f22b+'\x27',_0x076c('0x52'))[_0x076c('0x71')](_0x076c('0x72'))[_0x076c('0x3c')](_0x076c('0x73'))[_0x076c('0x3c')](_0x076c('0x74'),_0x35e619['CmListId'][_0x076c('0x70')]())[_0x076c('0x3c')](_0x076c('0x75'))['where'](_0x076c('0x76'),squel[_0x076c('0x6d')]()[_0x076c('0x6e')](_0x076c('0x77'))[_0x076c('0x71')]('cm_hopper_final')[_0x076c('0x3c')](_0x076c('0x78'),_0x4a92ab['params']['id'][_0x076c('0x70')]()))[_0x076c('0x3c')](_0x076c('0x76'),squel[_0x076c('0x6d')]()['field']('COALESCE(phone,\x27\x27)')['from'](_0x076c('0x79'))[_0x076c('0x3c')](_0x076c('0x78'),_0x4a92ab[_0x076c('0x4e')]['id'][_0x076c('0x70')]())))[_0x076c('0x70')]();break;case _0x076c('0x7a'):_0x106bc4=squel[_0x076c('0x7b')]()[_0x076c('0x67')]('cm_hopper')[_0x076c('0x68')]([_0x076c('0x69'),'scheduledAt',_0x076c('0x6b'),_0x076c('0x6c'),_0x076c('0x56'),_0x076c('0x51'),_0x076c('0x52')],squel['select']()[_0x076c('0x6e')](_0x076c('0x69'),_0x076c('0x69'))[_0x076c('0x6e')](_0x076c('0x6f'),_0x076c('0x6a'))[_0x076c('0x6e')]('id',_0x076c('0x6b'))['field'](_0x35e619['CmListId'][_0x076c('0x70')](),_0x076c('0x6c'))[_0x076c('0x6e')](_0x4a92ab[_0x076c('0x4e')]['id']['toString'](),_0x076c('0x56'))['field']('\x27'+_0x31f22b+'\x27',_0x076c('0x51'))[_0x076c('0x6e')]('\x27'+_0x31f22b+'\x27','updatedAt')['from']('cm_contacts')[_0x076c('0x3c')](_0x076c('0x73'))[_0x076c('0x3c')](_0x076c('0x74'),_0x35e619[_0x076c('0x7c')][_0x076c('0x70')]())['where'](_0x076c('0x75'))[_0x076c('0x3c')](_0x076c('0x76'),squel[_0x076c('0x6d')]()[_0x076c('0x6e')](_0x076c('0x7d'))['from'](_0x076c('0x79'))[_0x076c('0x3c')](_0x076c('0x78'),_0x4a92ab[_0x076c('0x4e')]['id'][_0x076c('0x70')]())))[_0x076c('0x70')]();break;default:_0x106bc4=squel['insert']()['into'](_0x076c('0x79'))['fromQuery'](['phone','scheduledAt','ContactId',_0x076c('0x6c'),'CampaignId',_0x076c('0x51'),'updatedAt'],squel[_0x076c('0x6d')]()[_0x076c('0x6e')](_0x076c('0x69'),_0x076c('0x69'))[_0x076c('0x6e')](_0x076c('0x6f'),'scheduledAt')[_0x076c('0x6e')]('id','ContactId')[_0x076c('0x6e')](_0x35e619['CmListId'][_0x076c('0x70')](),_0x076c('0x6c'))['field'](_0x4a92ab[_0x076c('0x4e')]['id'][_0x076c('0x70')](),_0x076c('0x56'))[_0x076c('0x6e')]('\x27'+_0x31f22b+'\x27','createdAt')[_0x076c('0x6e')]('\x27'+_0x31f22b+'\x27','updatedAt')[_0x076c('0x71')](_0x076c('0x72'))[_0x076c('0x3c')](_0x076c('0x73'))[_0x076c('0x3c')](_0x076c('0x74'),_0x35e619[_0x076c('0x7c')]['toString']())[_0x076c('0x3c')](_0x076c('0x75')))[_0x076c('0x70')]();}_0x1fd04d=squel[_0x076c('0x7b')]()[_0x076c('0x67')](_0x076c('0x7e'))['fromQuery']([_0x076c('0x7f'),_0x076c('0x6a'),'phone','OrderBy','createdAt',_0x076c('0x52')],squel[_0x076c('0x6d')]()['field'](_0x076c('0x80'),'id')[_0x076c('0x6e')](_0x076c('0x6f'),_0x076c('0x6a'))['field'](_0x076c('0x81'),_0x076c('0x69'))[_0x076c('0x6e')](_0x076c('0x82'),'OrderBy')[_0x076c('0x6e')]('\x27'+_0x31f22b+'\x27',_0x076c('0x51'))[_0x076c('0x6e')]('\x27'+_0x31f22b+'\x27',_0x076c('0x52'))[_0x076c('0x71')](_0x076c('0x83'),'ci')['join'](_0x076c('0x79'),'h','h.ContactId\x20=\x20ci.CmContactId')['where'](_0x076c('0x84'),_0x35e619['CmListId'][_0x076c('0x70')]())[_0x076c('0x3c')](_0x076c('0x85'),_0x4a92ab[_0x076c('0x4e')]['id']['toString']())[_0x076c('0x3c')]('h.createdAt\x20=\x20?',_0x31f22b))[_0x076c('0x70')]();_0x370bff[_0x076c('0x86')](db[_0x076c('0x87')][_0x076c('0x32')](_0x106bc4));_0x77b532[_0x076c('0x86')](db['sequelize'][_0x076c('0x32')](_0x1fd04d));}return BPromise['all'](_0x370bff);}})[_0x076c('0x21')](function(){return BPromise[_0x076c('0x88')](_0x77b532);})['then'](function(){return _0x4553c0;})[_0x076c('0x21')](respondWithResult(_0x5b73f8,null))['catch'](handleError(_0x5b73f8,null));};exports[_0x076c('0x89')]=function(_0x5797d8,_0xde269d,_0x55020b){return db[_0x076c('0x2b')][_0x076c('0x44')]({'where':{'id':_0x5797d8[_0x076c('0x4e')]['id']}})[_0x076c('0x21')](handleEntityNotFound(_0xde269d,null))[_0x076c('0x21')](function(_0x5e962d){if(_0x5e962d){return _0x5e962d[_0x076c('0x89')](_0x5797d8['query']['ids']);}})[_0x076c('0x21')](function(_0x595c8f){if(_0x595c8f){return db[_0x076c('0x54')]['destroy']({'where':{'ListId':_0x5797d8[_0x076c('0x32')][_0x076c('0x63')],'CampaignId':_0x5797d8[_0x076c('0x4e')]['id']}})[_0x076c('0x21')](function(){return _0x595c8f;});}})[_0x076c('0x21')](respondWithStatusCode(_0xde269d,null))['catch'](handleError(_0xde269d,null));};exports[_0x076c('0x8a')]=function(_0x786d65,_0x2f17fc,_0x5b5e9e){var _0x35af4a={};var _0x542c9c={};var _0x2c6e6f;var _0x101ced;return db[_0x076c('0x2b')][_0x076c('0x58')]({'where':{'id':_0x786d65[_0x076c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x2f17fc,null))[_0x076c('0x21')](function(_0x5168e4){if(_0x5168e4){_0x2c6e6f=_0x5168e4;_0x542c9c[_0x076c('0x30')]=_[_0x076c('0x31')](db[_0x076c('0x5f')][_0x076c('0x2c')]);_0x542c9c['query']=_[_0x076c('0x31')](_0x786d65['query']);_0x542c9c['filters']=_[_0x076c('0x33')](_0x542c9c[_0x076c('0x30')],_0x542c9c[_0x076c('0x32')]);_0x35af4a[_0x076c('0x34')]=_[_0x076c('0x33')](_0x542c9c[_0x076c('0x30')],qs[_0x076c('0x35')](_0x786d65[_0x076c('0x32')][_0x076c('0x35')]));_0x35af4a[_0x076c('0x34')]=_0x35af4a['attributes'][_0x076c('0x4f')]?_0x35af4a[_0x076c('0x34')]:_0x542c9c[_0x076c('0x30')];_0x35af4a['order']=qs[_0x076c('0x39')](_0x786d65[_0x076c('0x32')][_0x076c('0x39')]);_0x35af4a[_0x076c('0x3c')]=qs[_0x076c('0x3a')](_[_0x076c('0x55')](_0x786d65[_0x076c('0x32')],_0x542c9c[_0x076c('0x3a')]));if(_0x786d65[_0x076c('0x32')]['filter']){_0x35af4a['where']=_['merge'](_0x35af4a[_0x076c('0x3c')],{'$or':_[_0x076c('0x2a')](_0x35af4a[_0x076c('0x34')],function(_0x5da5c6){var _0x4fc4e6={};_0x4fc4e6[_0x5da5c6]={'$like':'%'+_0x786d65['query']['filter']+'%'};return _0x4fc4e6;})});}_0x35af4a=_[_0x076c('0x43')]({},_0x35af4a,_0x786d65[_0x076c('0x3e')]);return _0x2c6e6f[_0x076c('0x8a')](_0x35af4a);}})[_0x076c('0x21')](function(_0xfe720b){if(_0xfe720b){_0x101ced=_0xfe720b[_0x076c('0x4f')];if(!_0x786d65['query'][_0x076c('0x36')](_0x076c('0x37'))){_0x35af4a[_0x076c('0x19')]=qs[_0x076c('0x19')](_0x786d65[_0x076c('0x32')][_0x076c('0x19')]);_0x35af4a[_0x076c('0x17')]=qs[_0x076c('0x17')](_0x786d65[_0x076c('0x32')][_0x076c('0x17')]);}return _0x2c6e6f[_0x076c('0x8a')](_0x35af4a);}})[_0x076c('0x21')](function(_0x50dadf){if(_0x50dadf){return _0x50dadf?{'count':_0x101ced,'rows':_0x50dadf}:null;}})['then'](respondWithResult(_0x2f17fc,null))[_0x076c('0x45')](handleError(_0x2f17fc,null));};exports[_0x076c('0x8b')]=function(_0x3b346a,_0x478f2d,_0x3debdb){var _0x240e89,_0x36171a;var _0x15fda6=[];var _0x4dc90e=moment()[_0x076c('0x60')]('YYYY-MM-DD\x20HH:mm:ss');return db['Campaign']['find']({'where':{'id':_0x3b346a['params']['id']}})[_0x076c('0x21')](handleEntityNotFound(_0x478f2d,null))[_0x076c('0x21')](function(_0x319f1a){if(_0x319f1a){_0x36171a=_0x319f1a;return _0x319f1a[_0x076c('0x8b')](_0x3b346a[_0x076c('0x47')][_0x076c('0x63')],_[_0x076c('0x50')](_0x3b346a[_0x076c('0x47')],[_0x076c('0x63'),'id'])||{});}return null;})[_0x076c('0x64')](function(_0x2e6634){var _0x321227;var _0x3d3986;_0x240e89=_0x2e6634||[];var _0x18c050=[];if(_0x2e6634){for(var _0x4721e0=0x0;_0x4721e0<_0x2e6634[_0x076c('0x4f')];_0x4721e0+=0x1){var _0x5c7e27=_0x2e6634[_0x4721e0][_0x076c('0x23')]({'plain':!![]});_0x321227=squel[_0x076c('0x7b')]()[_0x076c('0x67')]('cm_hopper_black')['fromQuery']([_0x076c('0x69'),_0x076c('0x6b'),'ListId','CampaignId',_0x076c('0x51'),'updatedAt'],squel[_0x076c('0x6d')]()[_0x076c('0x6e')]('phone','phone')[_0x076c('0x6e')]('id',_0x076c('0x6b'))[_0x076c('0x6e')](_0x5c7e27['CmListId'][_0x076c('0x70')](),_0x076c('0x6c'))[_0x076c('0x6e')](_0x3b346a[_0x076c('0x4e')]['id'][_0x076c('0x70')](),_0x076c('0x56'))[_0x076c('0x6e')](_0x076c('0x6f'),_0x076c('0x51'))[_0x076c('0x6e')](_0x076c('0x6f'),_0x076c('0x52'))['from'](_0x076c('0x72'))[_0x076c('0x3c')](_0x076c('0x73'))[_0x076c('0x3c')]('ListId\x20=\x20?',_0x5c7e27['CmListId'][_0x076c('0x70')]())[_0x076c('0x3c')](_0x076c('0x75')))['toString']();_0x18c050['push'](db[_0x076c('0x87')][_0x076c('0x32')](_0x321227));}return BPromise[_0x076c('0x88')](_0x18c050);}})['then'](function(){return _0x240e89;})['then'](respondWithResult(_0x478f2d,null))[_0x076c('0x45')](handleError(_0x478f2d,null));};exports[_0x076c('0x8c')]=function(_0x3c7d84,_0x45b70b,_0x1e80f2){return db[_0x076c('0x2b')]['find']({'where':{'id':_0x3c7d84[_0x076c('0x4e')]['id']}})['then'](handleEntityNotFound(_0x45b70b,null))[_0x076c('0x21')](function(_0x1a18f4){if(_0x1a18f4){return _0x1a18f4[_0x076c('0x8c')](_0x3c7d84[_0x076c('0x32')][_0x076c('0x63')]);}})[_0x076c('0x21')](function(_0x32502a){if(_0x32502a){return db['CmHopperBlack'][_0x076c('0x22')]({'where':{'ListId':_0x3c7d84[_0x076c('0x32')][_0x076c('0x63')],'CampaignId':_0x3c7d84[_0x076c('0x4e')]['id']}})[_0x076c('0x21')](function(){return _0x32502a;});}})[_0x076c('0x21')](respondWithStatusCode(_0x45b70b,null))[_0x076c('0x45')](handleError(_0x45b70b,null));};
\ No newline at end of file
index 234422f..678c1ae 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(_0x4424d7,_0x518a2c){var _0x513d98=function(_0x28ccd8){while(--_0x28ccd8){_0x4424d7['push'](_0x4424d7['shift']());}};_0x513d98(++_0x518a2c);}(_0x7a54,0x106));var _0x47a5=function(_0x38075a,_0x4ae6fe){_0x38075a=_0x38075a-0x0;var _0x500794=_0x7a54[_0x38075a];return _0x500794;};'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(_0x13eddd,_0x2bb439){var _0x3125b5=function(_0x5c2188){while(--_0x5c2188){_0x13eddd['push'](_0x13eddd['shift']());}};_0x3125b5(++_0x2bb439);}(_0x7a54,0x106));var _0x47a5=function(_0xb8d15a,_0x16eb43){_0xb8d15a=_0xb8d15a-0x0;var _0x573c20=_0x7a54[_0xb8d15a];return _0x573c20;};'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 25e5e83..20de104 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf1a=['../../config/environment','http','request','then','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetCampaign','Campaign','findAll','options','raw','where','attributes','include','map','model','stringify','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc'];(function(_0x172747,_0x1732bd){var _0x509692=function(_0x448c56){while(--_0x448c56){_0x172747['push'](_0x172747['shift']());}};_0x509692(++_0x1732bd);}(_0xbf1a,0x7c));var _0xabf1=function(_0x43a17f,_0x555897){_0x43a17f=_0x43a17f-0x0;var _0x60edac=_0xbf1a[_0x43a17f];return _0x60edac;};'use strict';var _=require(_0xabf1('0x0'));var util=require(_0xabf1('0x1'));var moment=require(_0xabf1('0x2'));var BPromise=require(_0xabf1('0x3'));var rs=require(_0xabf1('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xabf1('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xabf1('0x6'))(_0xabf1('0x7'));var config=require(_0xabf1('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xabf1('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4f5b53,_0x3bdf07,_0x1cc1f6){return new BPromise(function(_0x1f48f5,_0x3eb992){return client[_0xabf1('0xa')](_0x4f5b53,_0x1cc1f6)[_0xabf1('0xb')](function(_0x59a7a2){logger[_0xabf1('0xc')](_0xabf1('0xd'),_0x3bdf07,_0xabf1('0xe'));logger[_0xabf1('0xf')](_0xabf1('0x10'),_0x3bdf07,_0xabf1('0xe'),JSON['stringify'](_0x59a7a2));if(_0x59a7a2[_0xabf1('0x11')]){if(_0x59a7a2[_0xabf1('0x11')][_0xabf1('0x12')]===0x1f4){logger[_0xabf1('0x11')](_0xabf1('0xd'),_0x3bdf07,_0x59a7a2[_0xabf1('0x11')][_0xabf1('0x13')]);return _0x3eb992(_0x59a7a2[_0xabf1('0x11')][_0xabf1('0x13')]);}logger[_0xabf1('0x11')]('Campaign,\x20%s,\x20%s',_0x3bdf07,_0x59a7a2[_0xabf1('0x11')][_0xabf1('0x13')]);return _0x1f48f5(_0x59a7a2[_0xabf1('0x11')]['message']);}else{logger[_0xabf1('0xc')](_0xabf1('0xd'),_0x3bdf07,_0xabf1('0xe'));_0x1f48f5(_0x59a7a2[_0xabf1('0x14')]['message']);}})[_0xabf1('0x15')](function(_0x4b138d){logger[_0xabf1('0x11')](_0xabf1('0xd'),_0x3bdf07,_0x4b138d);_0x3eb992(_0x4b138d);});});}exports[_0xabf1('0x16')]=function(_0x363c21){var _0x26e9f8=this;return new Promise(function(_0xd5dc16,_0x3cfc35){return db[_0xabf1('0x17')][_0xabf1('0x18')]({'raw':_0x363c21[_0xabf1('0x19')]?_0x363c21[_0xabf1('0x19')][_0xabf1('0x1a')]===undefined?!![]:![]:!![],'where':_0x363c21[_0xabf1('0x19')]?_0x363c21[_0xabf1('0x19')][_0xabf1('0x1b')]||null:null,'attributes':_0x363c21['options']?_0x363c21['options'][_0xabf1('0x1c')]||null:null,'limit':_0x363c21[_0xabf1('0x19')]?_0x363c21[_0xabf1('0x19')]['limit']||null:null,'include':_0x363c21[_0xabf1('0x19')]?_0x363c21[_0xabf1('0x19')][_0xabf1('0x1d')]?_['map'](_0x363c21[_0xabf1('0x19')]['include'],function(_0x30fac8){return{'model':db[_0x30fac8['model']],'as':_0x30fac8['as'],'attributes':_0x30fac8['attributes'],'include':_0x30fac8['include']?_[_0xabf1('0x1e')](_0x30fac8[_0xabf1('0x1d')],function(_0x4939cd){return{'model':db[_0x4939cd[_0xabf1('0x1f')]],'as':_0x4939cd['as'],'attributes':_0x4939cd[_0xabf1('0x1c')],'include':_0x4939cd['include']?_['map'](_0x4939cd[_0xabf1('0x1d')],function(_0x175678){return{'model':db[_0x175678[_0xabf1('0x1f')]],'as':_0x175678['as'],'attributes':_0x175678[_0xabf1('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xabf1('0xb')](function(_0x555593){logger[_0xabf1('0xc')]('GetCampaign',_0x363c21);logger[_0xabf1('0xf')]('GetCampaign',_0x363c21,JSON[_0xabf1('0x20')](_0x555593));_0xd5dc16(_0x555593);})['catch'](function(_0x45e64f){logger[_0xabf1('0x11')](_0xabf1('0x16'),_0x45e64f[_0xabf1('0x13')],_0x363c21);_0x3cfc35(_0x26e9f8['error'](0x1f4,_0x45e64f[_0xabf1('0x13')]));});});};
\ No newline at end of file
+var _0x7daf=['limit','map','include','model','catch','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','request','then','info','Campaign,\x20%s,\x20%s','request\x20sent','debug','Campaign,\x20%s,\x20%s,\x20%s','stringify','code','error','message','GetCampaign','Campaign','findAll','options','raw','where','attributes'];(function(_0x46bfab,_0x29834f){var _0x298002=function(_0x3c2f10){while(--_0x3c2f10){_0x46bfab['push'](_0x46bfab['shift']());}};_0x298002(++_0x29834f);}(_0x7daf,0xaa));var _0xf7da=function(_0x4aab29,_0xe600b8){_0x4aab29=_0x4aab29-0x0;var _0x521231=_0x7daf[_0x4aab29];return _0x521231;};'use strict';var _=require('lodash');var util=require(_0xf7da('0x0'));var moment=require('moment');var BPromise=require(_0xf7da('0x1'));var rs=require(_0xf7da('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf7da('0x3'))['db'];var utils=require(_0xf7da('0x4'));var logger=require(_0xf7da('0x5'))(_0xf7da('0x6'));var config=require(_0xf7da('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xf7da('0x8')][_0xf7da('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1b35ec,_0x110cad,_0x2c70ad){return new BPromise(function(_0x468ca3,_0x53d71f){return client[_0xf7da('0xa')](_0x1b35ec,_0x2c70ad)[_0xf7da('0xb')](function(_0x326ff5){logger[_0xf7da('0xc')](_0xf7da('0xd'),_0x110cad,_0xf7da('0xe'));logger[_0xf7da('0xf')](_0xf7da('0x10'),_0x110cad,_0xf7da('0xe'),JSON[_0xf7da('0x11')](_0x326ff5));if(_0x326ff5['error']){if(_0x326ff5['error'][_0xf7da('0x12')]===0x1f4){logger[_0xf7da('0x13')](_0xf7da('0xd'),_0x110cad,_0x326ff5[_0xf7da('0x13')][_0xf7da('0x14')]);return _0x53d71f(_0x326ff5[_0xf7da('0x13')]['message']);}logger[_0xf7da('0x13')](_0xf7da('0xd'),_0x110cad,_0x326ff5['error'][_0xf7da('0x14')]);return _0x468ca3(_0x326ff5[_0xf7da('0x13')][_0xf7da('0x14')]);}else{logger[_0xf7da('0xc')](_0xf7da('0xd'),_0x110cad,_0xf7da('0xe'));_0x468ca3(_0x326ff5['result']['message']);}})['catch'](function(_0x39d9c0){logger[_0xf7da('0x13')](_0xf7da('0xd'),_0x110cad,_0x39d9c0);_0x53d71f(_0x39d9c0);});});}exports[_0xf7da('0x15')]=function(_0x336fca){var _0x1f3d53=this;return new Promise(function(_0xb75a2c,_0x13cd4a){return db[_0xf7da('0x16')][_0xf7da('0x17')]({'raw':_0x336fca[_0xf7da('0x18')]?_0x336fca[_0xf7da('0x18')][_0xf7da('0x19')]===undefined?!![]:![]:!![],'where':_0x336fca[_0xf7da('0x18')]?_0x336fca['options'][_0xf7da('0x1a')]||null:null,'attributes':_0x336fca[_0xf7da('0x18')]?_0x336fca[_0xf7da('0x18')][_0xf7da('0x1b')]||null:null,'limit':_0x336fca[_0xf7da('0x18')]?_0x336fca[_0xf7da('0x18')][_0xf7da('0x1c')]||null:null,'include':_0x336fca[_0xf7da('0x18')]?_0x336fca[_0xf7da('0x18')]['include']?_[_0xf7da('0x1d')](_0x336fca[_0xf7da('0x18')][_0xf7da('0x1e')],function(_0x4b627e){return{'model':db[_0x4b627e[_0xf7da('0x1f')]],'as':_0x4b627e['as'],'attributes':_0x4b627e[_0xf7da('0x1b')],'include':_0x4b627e[_0xf7da('0x1e')]?_[_0xf7da('0x1d')](_0x4b627e[_0xf7da('0x1e')],function(_0x9d2da){return{'model':db[_0x9d2da['model']],'as':_0x9d2da['as'],'attributes':_0x9d2da[_0xf7da('0x1b')],'include':_0x9d2da[_0xf7da('0x1e')]?_[_0xf7da('0x1d')](_0x9d2da['include'],function(_0x13ace4){return{'model':db[_0x13ace4[_0xf7da('0x1f')]],'as':_0x13ace4['as'],'attributes':_0x13ace4[_0xf7da('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xf7da('0xb')](function(_0x13dc9f){logger['info'](_0xf7da('0x15'),_0x336fca);logger['debug'](_0xf7da('0x15'),_0x336fca,JSON[_0xf7da('0x11')](_0x13dc9f));_0xb75a2c(_0x13dc9f);})[_0xf7da('0x20')](function(_0x23a27e){logger['error'](_0xf7da('0x15'),_0x23a27e[_0xf7da('0x14')],_0x336fca);_0x13cd4a(_0x1f3d53[_0xf7da('0x13')](0x1f4,_0x23a27e[_0xf7da('0x14')]));});});};
\ No newline at end of file
index 23c6e68..e40d311 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9102=['exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','isAuthenticated','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','/:id/hopper_finals','getHopperFinals','getHopperBlacks','/:id/lists','getLists','/:id/blacklists','getBlackLists','post','create','/:id/clone','clone','addLists','addBlackLists','put','update','delete','destroy','removeBlackLists'];(function(_0x222100,_0x17d27d){var _0x47f2a8=function(_0x2e7985){while(--_0x2e7985){_0x222100['push'](_0x222100['shift']());}};_0x47f2a8(++_0x17d27d);}(_0x9102,0x133));var _0x2910=function(_0x5ce8b9,_0x5cded8){_0x5ce8b9=_0x5ce8b9-0x0;var _0xe34be0=_0x9102[_0x5ce8b9];return _0xe34be0;};'use strict';var multer=require('multer');var util=require(_0x2910('0x0'));var path=require('path');var timeout=require(_0x2910('0x1'));var express=require(_0x2910('0x2'));var router=express[_0x2910('0x3')]();var fs_extra=require(_0x2910('0x4'));var auth=require(_0x2910('0x5'));var interaction=require(_0x2910('0x6'));var config=require(_0x2910('0x7'));var controller=require('./campaign.controller');router[_0x2910('0x8')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x2910('0x9'),auth[_0x2910('0xa')](),controller['show']);router[_0x2910('0x8')](_0x2910('0xb'),auth[_0x2910('0xa')](),controller[_0x2910('0xc')]);router[_0x2910('0x8')](_0x2910('0xd'),auth[_0x2910('0xa')](),controller[_0x2910('0xe')]);router['get'](_0x2910('0xf'),auth[_0x2910('0xa')](),controller[_0x2910('0x10')]);router[_0x2910('0x8')]('/:id/hopper_black',auth['isAuthenticated'](),controller[_0x2910('0x11')]);router['get'](_0x2910('0x12'),auth[_0x2910('0xa')](),controller[_0x2910('0x13')]);router[_0x2910('0x8')](_0x2910('0x14'),auth[_0x2910('0xa')](),controller[_0x2910('0x15')]);router[_0x2910('0x16')]('/',auth[_0x2910('0xa')](),controller[_0x2910('0x17')]);router[_0x2910('0x16')](_0x2910('0x18'),auth[_0x2910('0xa')](),controller[_0x2910('0x19')]);router['post'](_0x2910('0x12'),auth[_0x2910('0xa')](),controller[_0x2910('0x1a')]);router[_0x2910('0x16')](_0x2910('0x14'),auth[_0x2910('0xa')](),controller[_0x2910('0x1b')]);router[_0x2910('0x1c')](_0x2910('0x9'),auth[_0x2910('0xa')](),controller[_0x2910('0x1d')]);router[_0x2910('0x1e')](_0x2910('0x9'),auth['isAuthenticated'](),controller[_0x2910('0x1f')]);router[_0x2910('0x1e')](_0x2910('0x12'),auth[_0x2910('0xa')](),controller['removeLists']);router['delete'](_0x2910('0x14'),auth[_0x2910('0xa')](),controller[_0x2910('0x20')]);module[_0x2910('0x21')]=router;
\ No newline at end of file
+var _0x2ac4=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./campaign.controller','get','isAuthenticated','index','/:id','/:id/hoppers','getHoppers','/:id/hopper_histories','getHopperHistories','getHopperFinals','/:id/hopper_black','/:id/lists','getLists','/:id/blacklists','getBlackLists','create','post','addLists','addBlackLists','put','update','delete','destroy','removeLists','exports','multer','util'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x2ac4,0x130));var _0x42ac=function(_0x1249f4,_0x27226c){_0x1249f4=_0x1249f4-0x0;var _0x47c8a9=_0x2ac4[_0x1249f4];return _0x47c8a9;};'use strict';var multer=require(_0x42ac('0x0'));var util=require(_0x42ac('0x1'));var path=require(_0x42ac('0x2'));var timeout=require(_0x42ac('0x3'));var express=require(_0x42ac('0x4'));var router=express[_0x42ac('0x5')]();var fs_extra=require(_0x42ac('0x6'));var auth=require(_0x42ac('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x42ac('0x8'));var controller=require(_0x42ac('0x9'));router[_0x42ac('0xa')]('/',auth[_0x42ac('0xb')](),controller[_0x42ac('0xc')]);router[_0x42ac('0xa')](_0x42ac('0xd'),auth[_0x42ac('0xb')](),controller['show']);router['get'](_0x42ac('0xe'),auth['isAuthenticated'](),controller[_0x42ac('0xf')]);router['get'](_0x42ac('0x10'),auth[_0x42ac('0xb')](),controller[_0x42ac('0x11')]);router['get']('/:id/hopper_finals',auth[_0x42ac('0xb')](),controller[_0x42ac('0x12')]);router[_0x42ac('0xa')](_0x42ac('0x13'),auth[_0x42ac('0xb')](),controller['getHopperBlacks']);router['get'](_0x42ac('0x14'),auth[_0x42ac('0xb')](),controller[_0x42ac('0x15')]);router['get'](_0x42ac('0x16'),auth['isAuthenticated'](),controller[_0x42ac('0x17')]);router['post']('/',auth[_0x42ac('0xb')](),controller[_0x42ac('0x18')]);router[_0x42ac('0x19')]('/:id/clone',auth['isAuthenticated'](),controller['clone']);router[_0x42ac('0x19')](_0x42ac('0x14'),auth[_0x42ac('0xb')](),controller[_0x42ac('0x1a')]);router['post'](_0x42ac('0x16'),auth[_0x42ac('0xb')](),controller[_0x42ac('0x1b')]);router[_0x42ac('0x1c')](_0x42ac('0xd'),auth[_0x42ac('0xb')](),controller[_0x42ac('0x1d')]);router[_0x42ac('0x1e')](_0x42ac('0xd'),auth[_0x42ac('0xb')](),controller[_0x42ac('0x1f')]);router[_0x42ac('0x1e')](_0x42ac('0x14'),auth['isAuthenticated'](),controller[_0x42ac('0x20')]);router['delete']('/:id/blacklists',auth[_0x42ac('0xb')](),controller['removeBlackLists']);module[_0x42ac('0x21')]=router;
\ No newline at end of file
index b9b11eb..bdd6def 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x163f=['sequelize','STRING','TEXT','getDataValue','key'];(function(_0x47311c,_0x2a26b3){var _0x54653e=function(_0x1ddf12){while(--_0x1ddf12){_0x47311c['push'](_0x47311c['shift']());}};_0x54653e(++_0x2a26b3);}(_0x163f,0x104));var _0xf163=function(_0x45d3f0,_0x4be53f){_0x45d3f0=_0x45d3f0-0x0;var _0x314b79=_0x163f[_0x45d3f0];return _0x314b79;};'use strict';var Sequelize=require(_0xf163('0x0'));module['exports']={'key':{'type':Sequelize[_0xf163('0x1')],'allowNull':![]},'value':{'type':Sequelize[_0xf163('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0xf163('0x1')]},'name':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0xf163('0x3')](_0xf163('0x4'));}}};
\ No newline at end of file
+var _0xe153=['STRING','TEXT','VIRTUAL','key','exports'];(function(_0x438caa,_0x3c6bb9){var _0x9757e4=function(_0x37ecf1){while(--_0x37ecf1){_0x438caa['push'](_0x438caa['shift']());}};_0x9757e4(++_0x3c6bb9);}(_0xe153,0x17b));var _0x3e15=function(_0x46e363,_0x45d7e2){_0x46e363=_0x46e363-0x0;var _0x3fb059=_0xe153[_0x46e363];return _0x3fb059;};'use strict';var Sequelize=require('sequelize');module[_0x3e15('0x0')]={'key':{'type':Sequelize[_0x3e15('0x1')],'allowNull':![]},'value':{'type':Sequelize[_0x3e15('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize[_0x3e15('0x3')],'get':function(){return this['getDataValue'](_0x3e15('0x4'));}}};
\ No newline at end of file
index bdbeec0..2bd6763 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc171=['set','save','update','then','get','CannedAnswers','UserProfileResource','destroy','stack','name','send','map','CannedAnswer','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','filter','options','include','findAll','rows','params','fields','includeAll','find','catch','body','create','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','fs-extra','squel','jsforce','desk.js','to-csv','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset'];(function(_0xdf807a,_0x20b0d1){var _0x134c07=function(_0xb0a74c){while(--_0xb0a74c){_0xdf807a['push'](_0xdf807a['shift']());}};_0x134c07(++_0x20b0d1);}(_0xc171,0x12c));var _0x1c17=function(_0x1c7b4c,_0x5b85b2){_0x1c7b4c=_0x1c7b4c-0x0;var _0x18daf6=_0xc171[_0x1c7b4c];return _0x18daf6;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x1c17('0x0'));var zipdir=require(_0x1c17('0x1'));var jsonpatch=require(_0x1c17('0x2'));var rp=require('request-promise');var moment=require(_0x1c17('0x3'));var BPromise=require(_0x1c17('0x4'));var Mustache=require(_0x1c17('0x5'));var util=require(_0x1c17('0x6'));var path=require(_0x1c17('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x1c17('0x8'));var _=require('lodash');var squel=require(_0x1c17('0x9'));var crypto=require('crypto');var jsforce=require(_0x1c17('0xa'));var deskjs=require(_0x1c17('0xb'));var toCsv=require(_0x1c17('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x1c17('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x1c17('0xe'));var hardwareService=require(_0x1c17('0xf'));var logger=require('../../config/logger')(_0x1c17('0x10'));var utils=require('../../config/utils');var config=require(_0x1c17('0x11'));var licenseUtil=require(_0x1c17('0x12'));var db=require(_0x1c17('0x13'))['db'];function respondWithStatusCode(_0x358e21,_0x1353c7){_0x1353c7=_0x1353c7||0xcc;return function(_0x1e5cba){if(_0x1e5cba){return _0x358e21[_0x1c17('0x14')](_0x1353c7);}return _0x358e21[_0x1c17('0x15')](_0x1353c7)[_0x1c17('0x16')]();};}function respondWithResult(_0x3aa921,_0x4a3533){_0x4a3533=_0x4a3533||0xc8;return function(_0x54b708){if(_0x54b708){return _0x3aa921[_0x1c17('0x15')](_0x4a3533)[_0x1c17('0x17')](_0x54b708);}};}function respondWithFilteredResult(_0x17032d,_0x5afa20){return function(_0x394434){if(_0x394434){var _0x116c1e=typeof _0x5afa20['offset']===_0x1c17('0x18')&&typeof _0x5afa20[_0x1c17('0x19')]===_0x1c17('0x18');var _0x5c8152=_0x394434[_0x1c17('0x1a')];var _0x3c53d1=_0x116c1e?0x0:_0x5afa20[_0x1c17('0x1b')];var _0x1d13b1=_0x116c1e?_0x394434[_0x1c17('0x1a')]:_0x5afa20['offset']+_0x5afa20['limit'];var _0x5d7b04;if(_0x1d13b1>=_0x5c8152){_0x1d13b1=_0x5c8152;_0x5d7b04=0xc8;}else{_0x5d7b04=0xce;}_0x17032d[_0x1c17('0x15')](_0x5d7b04);return _0x17032d[_0x1c17('0x1c')]('Content-Range',_0x3c53d1+'-'+_0x1d13b1+'/'+_0x5c8152)[_0x1c17('0x17')](_0x394434);}return null;};}function patchUpdates(_0x3d884d){return function(_0x145c1e){try{jsonpatch['apply'](_0x145c1e,_0x3d884d,!![]);}catch(_0x50e555){return BPromise['reject'](_0x50e555);}return _0x145c1e[_0x1c17('0x1d')]();};}function saveUpdates(_0x4358b9,_0x28be2f){return function(_0x543104){if(_0x543104){return _0x543104[_0x1c17('0x1e')](_0x4358b9)[_0x1c17('0x1f')](function(_0x554596){return _0x554596;});}return null;};}function removeEntity(_0x5404b7,_0x84f0b3){return function(_0x16974f){if(_0x16974f){return _0x16974f['destroy']()['then'](function(){var _0x501471=_0x16974f[_0x1c17('0x20')]({'plain':!![]});var _0x33d232=_0x1c17('0x21');return db[_0x1c17('0x22')][_0x1c17('0x23')]({'where':{'type':_0x33d232,'resourceId':_0x501471['id']}})[_0x1c17('0x1f')](function(){return _0x16974f;});})[_0x1c17('0x1f')](function(){_0x5404b7[_0x1c17('0x15')](0xcc)[_0x1c17('0x16')]();});}};}function handleEntityNotFound(_0x379c99,_0x2cf10b){return function(_0x3787a3){if(!_0x3787a3){_0x379c99[_0x1c17('0x14')](0x194);}return _0x3787a3;};}function handleError(_0x3006b6,_0x30a848){_0x30a848=_0x30a848||0x1f4;return function(_0x364964){logger['error'](_0x364964[_0x1c17('0x24')]);if(_0x364964['name']){delete _0x364964[_0x1c17('0x25')];}_0x3006b6[_0x1c17('0x15')](_0x30a848)[_0x1c17('0x26')](_0x364964);};}exports['index']=function(_0x3ec737,_0x51d001){var _0x4d3e82={},_0x4a3252={},_0xdd86f8={'count':0x0,'rows':[]};var _0x373b64=_[_0x1c17('0x27')](db[_0x1c17('0x28')][_0x1c17('0x29')],function(_0x46805d){return{'name':_0x46805d['fieldName'],'type':_0x46805d[_0x1c17('0x2a')][_0x1c17('0x2b')]};});_0x4a3252[_0x1c17('0x2c')]=_['map'](_0x373b64,_0x1c17('0x25'));_0x4a3252[_0x1c17('0x2d')]=_[_0x1c17('0x2e')](_0x3ec737[_0x1c17('0x2d')]);_0x4a3252[_0x1c17('0x2f')]=_[_0x1c17('0x30')](_0x4a3252[_0x1c17('0x2c')],_0x4a3252[_0x1c17('0x2d')]);_0x4d3e82[_0x1c17('0x31')]=_[_0x1c17('0x30')](_0x4a3252[_0x1c17('0x2c')],qs['fields'](_0x3ec737[_0x1c17('0x2d')]['fields']));_0x4d3e82[_0x1c17('0x31')]=_0x4d3e82[_0x1c17('0x31')][_0x1c17('0x32')]?_0x4d3e82['attributes']:_0x4a3252['model'];if(!_0x3ec737['query'][_0x1c17('0x33')](_0x1c17('0x34'))){_0x4d3e82[_0x1c17('0x19')]=qs[_0x1c17('0x19')](_0x3ec737[_0x1c17('0x2d')]['limit']);_0x4d3e82[_0x1c17('0x1b')]=qs[_0x1c17('0x1b')](_0x3ec737['query'][_0x1c17('0x1b')]);}_0x4d3e82[_0x1c17('0x35')]=qs[_0x1c17('0x36')](_0x3ec737[_0x1c17('0x2d')][_0x1c17('0x36')]);_0x4d3e82[_0x1c17('0x37')]=qs[_0x1c17('0x2f')](_['pick'](_0x3ec737[_0x1c17('0x2d')],_0x4a3252[_0x1c17('0x2f')]),_0x373b64);if(_0x3ec737[_0x1c17('0x2d')]['filter']){_0x4d3e82[_0x1c17('0x37')]=_[_0x1c17('0x38')](_0x4d3e82['where'],{'$or':[{'key':{'$like':'%'+_0x3ec737[_0x1c17('0x2d')]['filter']+'%'}},{'value':{'$like':'%'+_0x3ec737[_0x1c17('0x2d')][_0x1c17('0x39')]+'%'}}]});}_0x4d3e82=_[_0x1c17('0x38')]({},_0x4d3e82,_0x3ec737[_0x1c17('0x3a')]);var _0x369c27={'where':_0x4d3e82[_0x1c17('0x37')]};return db['CannedAnswer'][_0x1c17('0x1a')](_0x369c27)['then'](function(_0x37b583){_0xdd86f8[_0x1c17('0x1a')]=_0x37b583;if(_0x3ec737[_0x1c17('0x2d')]['includeAll']){_0x4d3e82[_0x1c17('0x3b')]=[{'all':!![]}];}return db['CannedAnswer'][_0x1c17('0x3c')](_0x4d3e82);})[_0x1c17('0x1f')](function(_0x965ab1){_0xdd86f8[_0x1c17('0x3d')]=_0x965ab1;return _0xdd86f8;})['then'](respondWithFilteredResult(_0x51d001,_0x4d3e82))['catch'](handleError(_0x51d001,null));};exports['show']=function(_0x2a856a,_0x59d0cb){var _0x517592={'raw':!![],'where':{'id':_0x2a856a[_0x1c17('0x3e')]['id']}},_0x2ea407={};_0x2ea407[_0x1c17('0x2c')]=_[_0x1c17('0x2e')](db['CannedAnswer'][_0x1c17('0x29')]);_0x2ea407[_0x1c17('0x2d')]=_[_0x1c17('0x2e')](_0x2a856a[_0x1c17('0x2d')]);_0x2ea407[_0x1c17('0x2f')]=_[_0x1c17('0x30')](_0x2ea407[_0x1c17('0x2c')],_0x2ea407[_0x1c17('0x2d')]);_0x517592[_0x1c17('0x31')]=_['intersection'](_0x2ea407[_0x1c17('0x2c')],qs[_0x1c17('0x3f')](_0x2a856a[_0x1c17('0x2d')][_0x1c17('0x3f')]));_0x517592['attributes']=_0x517592[_0x1c17('0x31')][_0x1c17('0x32')]?_0x517592[_0x1c17('0x31')]:_0x2ea407[_0x1c17('0x2c')];if(_0x2a856a[_0x1c17('0x2d')][_0x1c17('0x40')]){_0x517592[_0x1c17('0x3b')]=[{'all':!![]}];}_0x517592=_[_0x1c17('0x38')]({},_0x517592,_0x2a856a[_0x1c17('0x3a')]);return db[_0x1c17('0x28')][_0x1c17('0x41')](_0x517592)['then'](handleEntityNotFound(_0x59d0cb,null))[_0x1c17('0x1f')](respondWithResult(_0x59d0cb,null))[_0x1c17('0x42')](handleError(_0x59d0cb,null));};exports[_0x1c17('0x1e')]=function(_0x4af0b4,_0x43a9da){if(_0x4af0b4['body']['id']){delete _0x4af0b4[_0x1c17('0x43')]['id'];}return db[_0x1c17('0x28')][_0x1c17('0x41')]({'where':{'id':_0x4af0b4[_0x1c17('0x3e')]['id']}})['then'](handleEntityNotFound(_0x43a9da,null))[_0x1c17('0x1f')](saveUpdates(_0x4af0b4['body'],null))['then'](respondWithResult(_0x43a9da,null))[_0x1c17('0x42')](handleError(_0x43a9da,null));};exports[_0x1c17('0x23')]=function(_0x240b10,_0x5aa4d6){return db[_0x1c17('0x28')]['find']({'where':{'id':_0x240b10[_0x1c17('0x3e')]['id']}})[_0x1c17('0x1f')](handleEntityNotFound(_0x5aa4d6,null))['then'](removeEntity(_0x5aa4d6,null))['catch'](handleError(_0x5aa4d6,null));};exports[_0x1c17('0x44')]=function(_0x152326,_0x58ab4b){var _0x38b074={'key':_0x152326[_0x1c17('0x43')]['key']};if(_0x152326['body'][_0x1c17('0x45')]){_0x38b074[_0x1c17('0x45')]=_0x152326[_0x1c17('0x43')][_0x1c17('0x45')];}else if(_0x152326[_0x1c17('0x43')][_0x1c17('0x46')]){_0x38b074['SmsAccountId']=_0x152326[_0x1c17('0x43')][_0x1c17('0x46')];}else if(_0x152326[_0x1c17('0x43')][_0x1c17('0x47')]){_0x38b074[_0x1c17('0x47')]=_0x152326[_0x1c17('0x43')][_0x1c17('0x47')];}else if(_0x152326['body'][_0x1c17('0x48')]){_0x38b074[_0x1c17('0x48')]=_0x152326[_0x1c17('0x43')][_0x1c17('0x48')];}return db[_0x1c17('0x28')]['find']({'where':_0x38b074})[_0x1c17('0x1f')](function(_0x13a51b){if(_0x13a51b){throw new db[(_0x1c17('0x49'))][(_0x1c17('0x4a'))](_0x1c17('0x4b'));}return db[_0x1c17('0x28')]['create'](_0x152326[_0x1c17('0x43')]);})[_0x1c17('0x1f')](function(_0x353c97){var _0x222f04=_0x152326[_0x1c17('0x4c')][_0x1c17('0x20')]({'plain':!![]});if(!_0x222f04)throw new Error(_0x1c17('0x4d'));if(_0x222f04['role']==='user'){var _0x300b2b=_0x353c97[_0x1c17('0x20')]({'plain':!![]});return db[_0x1c17('0x4e')][_0x1c17('0x41')]({'where':{'name':_0x1c17('0x21'),'userProfileId':_0x222f04['userProfileId']},'raw':!![]})[_0x1c17('0x1f')](function(_0x3180e0){if(_0x3180e0&&_0x3180e0[_0x1c17('0x4f')]===0x0){return db[_0x1c17('0x22')][_0x1c17('0x44')]({'name':_0x300b2b[_0x1c17('0x25')],'resourceId':_0x300b2b['id'],'type':_0x3180e0['name'],'sectionId':_0x3180e0['id']},{})[_0x1c17('0x1f')](function(){return _0x353c97;});}else{return _0x353c97;}})['catch'](function(_0x3d64aa){logger[_0x1c17('0x50')](_0x1c17('0x51'),_0x3d64aa);throw _0x3d64aa;});}return _0x353c97;})[_0x1c17('0x1f')](respondWithResult(_0x58ab4b,0xc9))['catch'](handleError(_0x58ab4b,null));};
\ No newline at end of file
+var _0x8128=['autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../mysqldb','end','status','json','offset','limit','undefined','count','set','apply','reject','save','then','destroy','get','CannedAnswers','UserProfileResource','sendStatus','name','send','index','map','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','CannedAnswer','includeAll','include','findAll','rows','catch','show','params','find','body','create','key','MailAccountId','SmsAccountId','OpenchannelAccountId','ChatWebsiteId','Sequelize','ValidationError','The\x20inserted\x20key\x20already\x20exists.','user','UserProfileSection','userProfileId'];(function(_0x39f957,_0x1fa435){var _0x9d17ef=function(_0x435d73){while(--_0x435d73){_0x39f957['push'](_0x39f957['shift']());}};_0x9d17ef(++_0x1fa435);}(_0x8128,0xa9));var _0x8812=function(_0x543084,_0x4337f5){_0x543084=_0x543084-0x0;var _0x306a57=_0x8128[_0x543084];return _0x306a57;};'use strict';var emlformat=require(_0x8812('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8812('0x1'));var jsonpatch=require(_0x8812('0x2'));var rp=require(_0x8812('0x3'));var moment=require(_0x8812('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x8812('0x5'));var util=require('util');var path=require(_0x8812('0x6'));var sox=require(_0x8812('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8812('0x8'));var _=require(_0x8812('0x9'));var squel=require(_0x8812('0xa'));var crypto=require(_0x8812('0xb'));var jsforce=require(_0x8812('0xc'));var deskjs=require(_0x8812('0xd'));var toCsv=require('to-csv');var querystring=require(_0x8812('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8812('0xf'));var hardwareService=require(_0x8812('0x10'));var logger=require('../../config/logger')(_0x8812('0x11'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x8812('0x12'))['db'];function respondWithStatusCode(_0x261535,_0x2b5bcb){_0x2b5bcb=_0x2b5bcb||0xcc;return function(_0x4bca00){if(_0x4bca00){return _0x261535['sendStatus'](_0x2b5bcb);}return _0x261535['status'](_0x2b5bcb)[_0x8812('0x13')]();};}function respondWithResult(_0x3aa3db,_0x30e2bb){_0x30e2bb=_0x30e2bb||0xc8;return function(_0x3d4257){if(_0x3d4257){return _0x3aa3db[_0x8812('0x14')](_0x30e2bb)[_0x8812('0x15')](_0x3d4257);}};}function respondWithFilteredResult(_0x28e35e,_0x1930a2){return function(_0x121730){if(_0x121730){var _0x11ae09=typeof _0x1930a2[_0x8812('0x16')]==='undefined'&&typeof _0x1930a2[_0x8812('0x17')]===_0x8812('0x18');var _0x599389=_0x121730[_0x8812('0x19')];var _0x5c4fb2=_0x11ae09?0x0:_0x1930a2[_0x8812('0x16')];var _0x448a41=_0x11ae09?_0x121730[_0x8812('0x19')]:_0x1930a2[_0x8812('0x16')]+_0x1930a2['limit'];var _0x215879;if(_0x448a41>=_0x599389){_0x448a41=_0x599389;_0x215879=0xc8;}else{_0x215879=0xce;}_0x28e35e[_0x8812('0x14')](_0x215879);return _0x28e35e[_0x8812('0x1a')]('Content-Range',_0x5c4fb2+'-'+_0x448a41+'/'+_0x599389)['json'](_0x121730);}return null;};}function patchUpdates(_0x81a585){return function(_0x26768a){try{jsonpatch[_0x8812('0x1b')](_0x26768a,_0x81a585,!![]);}catch(_0x30e29a){return BPromise[_0x8812('0x1c')](_0x30e29a);}return _0x26768a[_0x8812('0x1d')]();};}function saveUpdates(_0x3dac9b,_0x361aa1){return function(_0x555825){if(_0x555825){return _0x555825['update'](_0x3dac9b)[_0x8812('0x1e')](function(_0x2e93af){return _0x2e93af;});}return null;};}function removeEntity(_0x4834d4,_0x32bb3b){return function(_0x52174e){if(_0x52174e){return _0x52174e[_0x8812('0x1f')]()['then'](function(){var _0x2eec12=_0x52174e[_0x8812('0x20')]({'plain':!![]});var _0x1453a4=_0x8812('0x21');return db[_0x8812('0x22')][_0x8812('0x1f')]({'where':{'type':_0x1453a4,'resourceId':_0x2eec12['id']}})['then'](function(){return _0x52174e;});})[_0x8812('0x1e')](function(){_0x4834d4['status'](0xcc)[_0x8812('0x13')]();});}};}function handleEntityNotFound(_0x32ba8a,_0x17f226){return function(_0x1ab4fd){if(!_0x1ab4fd){_0x32ba8a[_0x8812('0x23')](0x194);}return _0x1ab4fd;};}function handleError(_0x584f4e,_0x3b9c63){_0x3b9c63=_0x3b9c63||0x1f4;return function(_0x15d37c){logger['error'](_0x15d37c['stack']);if(_0x15d37c[_0x8812('0x24')]){delete _0x15d37c[_0x8812('0x24')];}_0x584f4e[_0x8812('0x14')](_0x3b9c63)[_0x8812('0x25')](_0x15d37c);};}exports[_0x8812('0x26')]=function(_0x2d7016,_0xb661b3){var _0x2af812={},_0x49c8a5={},_0x482904={'count':0x0,'rows':[]};var _0x181d72=_[_0x8812('0x27')](db['CannedAnswer'][_0x8812('0x28')],function(_0x2b3106){return{'name':_0x2b3106[_0x8812('0x29')],'type':_0x2b3106['type']['key']};});_0x49c8a5[_0x8812('0x2a')]=_[_0x8812('0x27')](_0x181d72,'name');_0x49c8a5[_0x8812('0x2b')]=_[_0x8812('0x2c')](_0x2d7016['query']);_0x49c8a5[_0x8812('0x2d')]=_[_0x8812('0x2e')](_0x49c8a5[_0x8812('0x2a')],_0x49c8a5[_0x8812('0x2b')]);_0x2af812[_0x8812('0x2f')]=_[_0x8812('0x2e')](_0x49c8a5['model'],qs['fields'](_0x2d7016['query'][_0x8812('0x30')]));_0x2af812['attributes']=_0x2af812[_0x8812('0x2f')][_0x8812('0x31')]?_0x2af812[_0x8812('0x2f')]:_0x49c8a5[_0x8812('0x2a')];if(!_0x2d7016[_0x8812('0x2b')][_0x8812('0x32')](_0x8812('0x33'))){_0x2af812[_0x8812('0x17')]=qs['limit'](_0x2d7016[_0x8812('0x2b')][_0x8812('0x17')]);_0x2af812[_0x8812('0x16')]=qs[_0x8812('0x16')](_0x2d7016['query'][_0x8812('0x16')]);}_0x2af812[_0x8812('0x34')]=qs['sort'](_0x2d7016[_0x8812('0x2b')][_0x8812('0x35')]);_0x2af812[_0x8812('0x36')]=qs['filters'](_['pick'](_0x2d7016[_0x8812('0x2b')],_0x49c8a5['filters']),_0x181d72);if(_0x2d7016['query'][_0x8812('0x37')]){_0x2af812[_0x8812('0x36')]=_[_0x8812('0x38')](_0x2af812['where'],{'$or':[{'key':{'$like':'%'+_0x2d7016[_0x8812('0x2b')][_0x8812('0x37')]+'%'}},{'value':{'$like':'%'+_0x2d7016[_0x8812('0x2b')][_0x8812('0x37')]+'%'}}]});}_0x2af812=_[_0x8812('0x38')]({},_0x2af812,_0x2d7016[_0x8812('0x39')]);var _0x360e78={'where':_0x2af812['where']};return db[_0x8812('0x3a')]['count'](_0x360e78)[_0x8812('0x1e')](function(_0x5db5ff){_0x482904[_0x8812('0x19')]=_0x5db5ff;if(_0x2d7016[_0x8812('0x2b')][_0x8812('0x3b')]){_0x2af812[_0x8812('0x3c')]=[{'all':!![]}];}return db['CannedAnswer'][_0x8812('0x3d')](_0x2af812);})[_0x8812('0x1e')](function(_0x5c5890){_0x482904[_0x8812('0x3e')]=_0x5c5890;return _0x482904;})[_0x8812('0x1e')](respondWithFilteredResult(_0xb661b3,_0x2af812))[_0x8812('0x3f')](handleError(_0xb661b3,null));};exports[_0x8812('0x40')]=function(_0x446ba8,_0x49db62){var _0x424371={'raw':!![],'where':{'id':_0x446ba8[_0x8812('0x41')]['id']}},_0x2fb736={};_0x2fb736[_0x8812('0x2a')]=_['keys'](db[_0x8812('0x3a')][_0x8812('0x28')]);_0x2fb736['query']=_[_0x8812('0x2c')](_0x446ba8[_0x8812('0x2b')]);_0x2fb736[_0x8812('0x2d')]=_[_0x8812('0x2e')](_0x2fb736[_0x8812('0x2a')],_0x2fb736[_0x8812('0x2b')]);_0x424371[_0x8812('0x2f')]=_[_0x8812('0x2e')](_0x2fb736[_0x8812('0x2a')],qs[_0x8812('0x30')](_0x446ba8[_0x8812('0x2b')]['fields']));_0x424371[_0x8812('0x2f')]=_0x424371['attributes']['length']?_0x424371[_0x8812('0x2f')]:_0x2fb736['model'];if(_0x446ba8['query'][_0x8812('0x3b')]){_0x424371[_0x8812('0x3c')]=[{'all':!![]}];}_0x424371=_[_0x8812('0x38')]({},_0x424371,_0x446ba8[_0x8812('0x39')]);return db[_0x8812('0x3a')][_0x8812('0x42')](_0x424371)[_0x8812('0x1e')](handleEntityNotFound(_0x49db62,null))[_0x8812('0x1e')](respondWithResult(_0x49db62,null))[_0x8812('0x3f')](handleError(_0x49db62,null));};exports['update']=function(_0x140d02,_0x4cb4a8){if(_0x140d02[_0x8812('0x43')]['id']){delete _0x140d02[_0x8812('0x43')]['id'];}return db[_0x8812('0x3a')][_0x8812('0x42')]({'where':{'id':_0x140d02['params']['id']}})[_0x8812('0x1e')](handleEntityNotFound(_0x4cb4a8,null))[_0x8812('0x1e')](saveUpdates(_0x140d02['body'],null))[_0x8812('0x1e')](respondWithResult(_0x4cb4a8,null))[_0x8812('0x3f')](handleError(_0x4cb4a8,null));};exports[_0x8812('0x1f')]=function(_0x310b14,_0x4cd1f1){return db[_0x8812('0x3a')][_0x8812('0x42')]({'where':{'id':_0x310b14[_0x8812('0x41')]['id']}})['then'](handleEntityNotFound(_0x4cd1f1,null))[_0x8812('0x1e')](removeEntity(_0x4cd1f1,null))[_0x8812('0x3f')](handleError(_0x4cd1f1,null));};exports[_0x8812('0x44')]=function(_0x489004,_0x13a4b0){var _0x1ba674={'key':_0x489004[_0x8812('0x43')][_0x8812('0x45')]};if(_0x489004[_0x8812('0x43')]['MailAccountId']){_0x1ba674[_0x8812('0x46')]=_0x489004[_0x8812('0x43')][_0x8812('0x46')];}else if(_0x489004[_0x8812('0x43')][_0x8812('0x47')]){_0x1ba674[_0x8812('0x47')]=_0x489004[_0x8812('0x43')]['SmsAccountId'];}else if(_0x489004['body'][_0x8812('0x48')]){_0x1ba674[_0x8812('0x48')]=_0x489004[_0x8812('0x43')][_0x8812('0x48')];}else if(_0x489004['body']['ChatWebsiteId']){_0x1ba674[_0x8812('0x49')]=_0x489004[_0x8812('0x43')][_0x8812('0x49')];}return db[_0x8812('0x3a')]['find']({'where':_0x1ba674})[_0x8812('0x1e')](function(_0x48aef0){if(_0x48aef0){throw new db[(_0x8812('0x4a'))][(_0x8812('0x4b'))](_0x8812('0x4c'));}return db[_0x8812('0x3a')][_0x8812('0x44')](_0x489004[_0x8812('0x43')]);})[_0x8812('0x1e')](function(_0x164382){var _0x195aa0=_0x489004[_0x8812('0x4d')][_0x8812('0x20')]({'plain':!![]});if(!_0x195aa0)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x195aa0['role']===_0x8812('0x4d')){var _0x368ef5=_0x164382[_0x8812('0x20')]({'plain':!![]});return db[_0x8812('0x4e')][_0x8812('0x42')]({'where':{'name':_0x8812('0x21'),'userProfileId':_0x195aa0[_0x8812('0x4f')]},'raw':!![]})[_0x8812('0x1e')](function(_0x365a36){if(_0x365a36&&_0x365a36[_0x8812('0x50')]===0x0){return db[_0x8812('0x22')][_0x8812('0x44')]({'name':_0x368ef5[_0x8812('0x24')],'resourceId':_0x368ef5['id'],'type':_0x365a36[_0x8812('0x24')],'sectionId':_0x365a36['id']},{})[_0x8812('0x1e')](function(){return _0x164382;});}else{return _0x164382;}})[_0x8812('0x3f')](function(_0x43bb26){logger[_0x8812('0x51')](_0x8812('0x52'),_0x43bb26);throw _0x43bb26;});}return _0x164382;})[_0x8812('0x1e')](respondWithResult(_0x13a4b0,0xc9))[_0x8812('0x3f')](handleError(_0x13a4b0,null));};
\ No newline at end of file
index f5a4f56..ec9ea78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc55=['../../config/environment','./cannedAnswer.attributes','exports','define','CannedAnswer','tools_canned_answers','utf8mb4_unicode_ci','util','../../config/logger','api','moment','request-promise','path'];(function(_0x3440b3,_0x15a34e){var _0x1f6b6a=function(_0x1fb526){while(--_0x1fb526){_0x3440b3['push'](_0x3440b3['shift']());}};_0x1f6b6a(++_0x15a34e);}(_0xcc55,0x173));var _0x5cc5=function(_0x5f17f2,_0x26b7cf){_0x5f17f2=_0x5f17f2-0x0;var _0x5544f4=_0xcc55[_0x5f17f2];return _0x5544f4;};'use strict';var _=require('lodash');var util=require(_0x5cc5('0x0'));var logger=require(_0x5cc5('0x1'))(_0x5cc5('0x2'));var moment=require(_0x5cc5('0x3'));var BPromise=require('bluebird');var rp=require(_0x5cc5('0x4'));var fs=require('fs');var path=require(_0x5cc5('0x5'));var rimraf=require('rimraf');var config=require(_0x5cc5('0x6'));var attributes=require(_0x5cc5('0x7'));module[_0x5cc5('0x8')]=function(_0x2647d3,_0x3a51c4){return _0x2647d3[_0x5cc5('0x9')](_0x5cc5('0xa'),attributes,{'tableName':_0x5cc5('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x5cc5('0xc')});};
\ No newline at end of file
+var _0x85e5=['path','rimraf','../../config/environment','./cannedAnswer.attributes','exports','tools_canned_answers','utf8mb4','lodash','../../config/logger','api','request-promise'];(function(_0xdec6ac,_0x2d454f){var _0x2d5ddd=function(_0x3a5b04){while(--_0x3a5b04){_0xdec6ac['push'](_0xdec6ac['shift']());}};_0x2d5ddd(++_0x2d454f);}(_0x85e5,0x1b4));var _0x585e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x85e5[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0x585e('0x0'));var util=require('util');var logger=require(_0x585e('0x1'))(_0x585e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x585e('0x3'));var fs=require('fs');var path=require(_0x585e('0x4'));var rimraf=require(_0x585e('0x5'));var config=require(_0x585e('0x6'));var attributes=require(_0x585e('0x7'));module[_0x585e('0x8')]=function(_0x450ef6,_0xc3a0fc){return _0x450ef6['define']('CannedAnswer',attributes,{'tableName':_0x585e('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x585e('0xa'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 435bc50..c25de9b 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(_0x41a0c6,_0x4a45b0){var _0x5d2cf9=function(_0x5412d1){while(--_0x5412d1){_0x41a0c6['push'](_0x41a0c6['shift']());}};_0x5d2cf9(++_0x4a45b0);}(_0xa9e0,0x123));var _0x0a9e=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0xa9e0[_0x32d457];return _0x338386;};'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(_0xe8da1c,_0x17543a){var _0x149192=function(_0x1fbf8b){while(--_0x1fbf8b){_0xe8da1c['push'](_0xe8da1c['shift']());}};_0x149192(++_0x17543a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xa9e0[_0x5c3c0b];return _0x52ecd2;};'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 43014f0..cdcb332 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf4e=['multer','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cannedAnswer.controller','get','isAuthenticated','index','show','post','create','put','update','/:id','destroy','exports'];(function(_0x315f9e,_0x51f9ff){var _0x4de6b4=function(_0x3603ee){while(--_0x3603ee){_0x315f9e['push'](_0x315f9e['shift']());}};_0x4de6b4(++_0x51f9ff);}(_0xaf4e,0xd1));var _0xeaf4=function(_0x13465b,_0x158194){_0x13465b=_0x13465b-0x0;var _0x6714e8=_0xaf4e[_0x13465b];return _0x6714e8;};'use strict';var multer=require(_0xeaf4('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xeaf4('0x1'));var express=require(_0xeaf4('0x2'));var router=express[_0xeaf4('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xeaf4('0x4'));var interaction=require(_0xeaf4('0x5'));var config=require(_0xeaf4('0x6'));var controller=require(_0xeaf4('0x7'));router[_0xeaf4('0x8')]('/',auth[_0xeaf4('0x9')](),controller[_0xeaf4('0xa')]);router[_0xeaf4('0x8')]('/:id',auth[_0xeaf4('0x9')](),controller[_0xeaf4('0xb')]);router[_0xeaf4('0xc')]('/',auth['isAuthenticated'](),controller[_0xeaf4('0xd')]);router[_0xeaf4('0xe')]('/:id',auth['isAuthenticated'](),controller[_0xeaf4('0xf')]);router['delete'](_0xeaf4('0x10'),auth[_0xeaf4('0x9')](),controller[_0xeaf4('0x11')]);module[_0xeaf4('0x12')]=router;
\ No newline at end of file
+var _0xc7a6=['../../components/interaction/service','../../config/environment','./cannedAnswer.controller','get','isAuthenticated','index','create','put','/:id','update','delete','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x43e4b3,_0x1444de){var _0x10c655=function(_0x56c01d){while(--_0x56c01d){_0x43e4b3['push'](_0x43e4b3['shift']());}};_0x10c655(++_0x1444de);}(_0xc7a6,0x150));var _0x6c7a=function(_0x7f0a45,_0x522e9a){_0x7f0a45=_0x7f0a45-0x0;var _0x2baeb3=_0xc7a6[_0x7f0a45];return _0x2baeb3;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6c7a('0x0'));var timeout=require(_0x6c7a('0x1'));var express=require(_0x6c7a('0x2'));var router=express[_0x6c7a('0x3')]();var fs_extra=require(_0x6c7a('0x4'));var auth=require(_0x6c7a('0x5'));var interaction=require(_0x6c7a('0x6'));var config=require(_0x6c7a('0x7'));var controller=require(_0x6c7a('0x8'));router[_0x6c7a('0x9')]('/',auth[_0x6c7a('0xa')](),controller[_0x6c7a('0xb')]);router['get']('/:id',auth[_0x6c7a('0xa')](),controller['show']);router['post']('/',auth[_0x6c7a('0xa')](),controller[_0x6c7a('0xc')]);router[_0x6c7a('0xd')](_0x6c7a('0xe'),auth[_0x6c7a('0xa')](),controller[_0x6c7a('0xf')]);router[_0x6c7a('0x10')](_0x6c7a('0xe'),auth['isAuthenticated'](),controller[_0x6c7a('0x11')]);module[_0x6c7a('0x12')]=router;
\ No newline at end of file
index a29d8a3..a628966 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf93=['INTEGER','sequelize','exports','STRING'];(function(_0x2a336f,_0x4f3a70){var _0x2f0184=function(_0x5494a8){while(--_0x5494a8){_0x2a336f['push'](_0x2a336f['shift']());}};_0x2f0184(++_0x4f3a70);}(_0xaf93,0x151));var _0x3af9=function(_0x3f73b2,_0x57c771){_0x3f73b2=_0x3f73b2-0x0;var _0x202dd8=_0xaf93[_0x3f73b2];return _0x202dd8;};'use strict';var Sequelize=require(_0x3af9('0x0'));module[_0x3af9('0x1')]={'calldate':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':'1970-01-01\x2000:00:01'},'clid':{'type':Sequelize[_0x3af9('0x2')]},'src':{'type':Sequelize[_0x3af9('0x2')]},'dst':{'type':Sequelize['STRING']},'dcontext':{'type':Sequelize[_0x3af9('0x2')]},'channel':{'type':Sequelize[_0x3af9('0x2')]},'dstchannel':{'type':Sequelize[_0x3af9('0x2')]},'lastapp':{'type':Sequelize[_0x3af9('0x2')]},'lastdata':{'type':Sequelize[_0x3af9('0x2')]},'duration':{'type':Sequelize[_0x3af9('0x3')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize[_0x3af9('0x3')],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize[_0x3af9('0x3')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize[_0x3af9('0x2')]},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize['STRING']},'sequence':{'type':Sequelize[_0x3af9('0x2')]},'peeraccount':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'tag':{'type':Sequelize[_0x3af9('0x2')]}};
\ No newline at end of file
+var _0xb63f=['1970-01-01\x2000:00:01','STRING','INTEGER','DATE'];(function(_0x1fc67a,_0xa49187){var _0x3c5fb9=function(_0x5aad9d){while(--_0x5aad9d){_0x1fc67a['push'](_0x1fc67a['shift']());}};_0x3c5fb9(++_0xa49187);}(_0xb63f,0xa3));var _0xfb63=function(_0x587dd0,_0x273922){_0x587dd0=_0x587dd0-0x0;var _0x56f153=_0xb63f[_0x587dd0];return _0x56f153;};'use strict';var Sequelize=require('sequelize');module['exports']={'calldate':{'type':Sequelize[_0xfb63('0x0')],'allowNull':![],'defaultValue':_0xfb63('0x1')},'clid':{'type':Sequelize[_0xfb63('0x2')]},'src':{'type':Sequelize[_0xfb63('0x2')]},'dst':{'type':Sequelize[_0xfb63('0x2')]},'dcontext':{'type':Sequelize[_0xfb63('0x2')]},'channel':{'type':Sequelize[_0xfb63('0x2')]},'dstchannel':{'type':Sequelize[_0xfb63('0x2')]},'lastapp':{'type':Sequelize[_0xfb63('0x2')]},'lastdata':{'type':Sequelize['STRING']},'duration':{'type':Sequelize[_0xfb63('0x3')],'allowNull':![],'defaultValue':0x0},'billsec':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x0},'disposition':{'type':Sequelize[_0xfb63('0x2')]},'amaflags':{'type':Sequelize[_0xfb63('0x3')],'allowNull':![],'defaultValue':0x0},'accountcode':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'linkedid':{'type':Sequelize[_0xfb63('0x2')]},'sequence':{'type':Sequelize[_0xfb63('0x2')]},'peeraccount':{'type':Sequelize[_0xfb63('0x2')]},'type':{'type':Sequelize['STRING']},'tag':{'type':Sequelize[_0xfb63('0x2')]}};
\ No newline at end of file
index 21a5dc4..a91031c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43fd=['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','undefined','limit','offset','Content-Range','json','reject','save','update','then','stack','name','send','Cdr','rawAttributes','fieldName','model','map','keys','query','attributes','intersection','fields','length','nolimit','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','show','find','create','body','params','destroy','describe','rimraf','request-promise','moment','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce'];(function(_0x58cde9,_0x4de2eb){var _0x1551c6=function(_0x38aea9){while(--_0x38aea9){_0x58cde9['push'](_0x58cde9['shift']());}};_0x1551c6(++_0x4de2eb);}(_0x43fd,0x1ec));var _0xd43f=function(_0x497037,_0xfb5031){_0x497037=_0x497037-0x0;var _0x35f516=_0x43fd[_0x497037];return _0x35f516;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd43f('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd43f('0x1'));var moment=require(_0xd43f('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xd43f('0x3'));var util=require('util');var path=require(_0xd43f('0x4'));var sox=require(_0xd43f('0x5'));var csv=require(_0xd43f('0x6'));var ejs=require(_0xd43f('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xd43f('0x8'));var squel=require(_0xd43f('0x9'));var crypto=require(_0xd43f('0xa'));var jsforce=require(_0xd43f('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xd43f('0x6'));var querystring=require(_0xd43f('0xc'));var Papa=require('papaparse');var Redis=require(_0xd43f('0xd'));var authService=require(_0xd43f('0xe'));var qs=require(_0xd43f('0xf'));var as=require(_0xd43f('0x10'));var hardwareService=require(_0xd43f('0x11'));var logger=require('../../config/logger')(_0xd43f('0x12'));var utils=require(_0xd43f('0x13'));var config=require(_0xd43f('0x14'));var licenseUtil=require(_0xd43f('0x15'));var db=require(_0xd43f('0x16'))['db'];function respondWithStatusCode(_0x396916,_0x22f057){_0x22f057=_0x22f057||0xcc;return function(_0x1a72f1){if(_0x1a72f1){return _0x396916[_0xd43f('0x17')](_0x22f057);}return _0x396916[_0xd43f('0x18')](_0x22f057)[_0xd43f('0x19')]();};}function respondWithResult(_0x504568,_0x3d979d){_0x3d979d=_0x3d979d||0xc8;return function(_0x922f49){if(_0x922f49){return _0x504568[_0xd43f('0x18')](_0x3d979d)['json'](_0x922f49);}};}function respondWithFilteredResult(_0x4c576e,_0x4a2b49){return function(_0x1c729a){if(_0x1c729a){var _0x3ca2d4=typeof _0x4a2b49['offset']===_0xd43f('0x1a')&&typeof _0x4a2b49[_0xd43f('0x1b')]==='undefined';var _0x5ced70=_0x1c729a['count'];var _0x54bbcd=_0x3ca2d4?0x0:_0x4a2b49[_0xd43f('0x1c')];var _0x19784f=_0x3ca2d4?_0x1c729a['count']:_0x4a2b49[_0xd43f('0x1c')]+_0x4a2b49[_0xd43f('0x1b')];var _0x18b862;if(_0x19784f>=_0x5ced70){_0x19784f=_0x5ced70;_0x18b862=0xc8;}else{_0x18b862=0xce;}_0x4c576e[_0xd43f('0x18')](_0x18b862);return _0x4c576e['set'](_0xd43f('0x1d'),_0x54bbcd+'-'+_0x19784f+'/'+_0x5ced70)[_0xd43f('0x1e')](_0x1c729a);}return null;};}function patchUpdates(_0xb37d52){return function(_0x564261){try{jsonpatch['apply'](_0x564261,_0xb37d52,!![]);}catch(_0x5683dc){return BPromise[_0xd43f('0x1f')](_0x5683dc);}return _0x564261[_0xd43f('0x20')]();};}function saveUpdates(_0x2c1ba9,_0x399cb8){return function(_0x3b1094){if(_0x3b1094){return _0x3b1094[_0xd43f('0x21')](_0x2c1ba9)[_0xd43f('0x22')](function(_0x5a5c10){return _0x5a5c10;});}return null;};}function removeEntity(_0x262023,_0x4a1d8b){return function(_0x352102){if(_0x352102){return _0x352102['destroy']()['then'](function(){_0x262023[_0xd43f('0x18')](0xcc)[_0xd43f('0x19')]();});}};}function handleEntityNotFound(_0x2a9ce4,_0x2a38f6){return function(_0x35acd0){if(!_0x35acd0){_0x2a9ce4[_0xd43f('0x17')](0x194);}return _0x35acd0;};}function handleError(_0x2563c0,_0xc2e3da){_0xc2e3da=_0xc2e3da||0x1f4;return function(_0x2dcbf2){logger['error'](_0x2dcbf2[_0xd43f('0x23')]);if(_0x2dcbf2[_0xd43f('0x24')]){delete _0x2dcbf2[_0xd43f('0x24')];}_0x2563c0[_0xd43f('0x18')](_0xc2e3da)[_0xd43f('0x25')](_0x2dcbf2);};}exports['index']=function(_0x161540,_0x7b6761){var _0x285b86={},_0x1dd81f={},_0x1ee70d={'count':0x0,'rows':[]};var _0x5a7580=_['map'](db[_0xd43f('0x26')][_0xd43f('0x27')],function(_0x5efbbd){return{'name':_0x5efbbd[_0xd43f('0x28')],'type':_0x5efbbd['type']['key']};});_0x1dd81f[_0xd43f('0x29')]=_[_0xd43f('0x2a')](_0x5a7580,_0xd43f('0x24'));_0x1dd81f['query']=_[_0xd43f('0x2b')](_0x161540[_0xd43f('0x2c')]);_0x1dd81f['filters']=_['intersection'](_0x1dd81f[_0xd43f('0x29')],_0x1dd81f[_0xd43f('0x2c')]);_0x285b86[_0xd43f('0x2d')]=_[_0xd43f('0x2e')](_0x1dd81f['model'],qs[_0xd43f('0x2f')](_0x161540[_0xd43f('0x2c')][_0xd43f('0x2f')]));_0x285b86[_0xd43f('0x2d')]=_0x285b86[_0xd43f('0x2d')][_0xd43f('0x30')]?_0x285b86[_0xd43f('0x2d')]:_0x1dd81f['model'];if(!_0x161540[_0xd43f('0x2c')]['hasOwnProperty'](_0xd43f('0x31'))){_0x285b86[_0xd43f('0x1b')]=qs[_0xd43f('0x1b')](_0x161540['query'][_0xd43f('0x1b')]);_0x285b86[_0xd43f('0x1c')]=qs['offset'](_0x161540[_0xd43f('0x2c')][_0xd43f('0x1c')]);}_0x285b86[_0xd43f('0x32')]=qs['sort'](_0x161540[_0xd43f('0x2c')][_0xd43f('0x33')]);_0x285b86[_0xd43f('0x34')]=qs[_0xd43f('0x35')](_[_0xd43f('0x36')](_0x161540['query'],_0x1dd81f[_0xd43f('0x35')]),_0x5a7580);if(_0x161540['query'][_0xd43f('0x37')]){_0x285b86[_0xd43f('0x34')]=_[_0xd43f('0x38')](_0x285b86['where'],{'$or':_[_0xd43f('0x2a')](_0x5a7580,function(_0x428da4){if(_0x428da4['type']!==_0xd43f('0x39')){var _0x53c8bf={};_0x53c8bf[_0x428da4['name']]={'$like':'%'+_0x161540[_0xd43f('0x2c')]['filter']+'%'};return _0x53c8bf;}})});}_0x285b86=_['merge']({},_0x285b86,_0x161540[_0xd43f('0x3a')]);var _0x57c338={'where':_0x285b86['where']};return db[_0xd43f('0x26')][_0xd43f('0x3b')](_0x57c338)[_0xd43f('0x22')](function(_0x92b404){_0x1ee70d[_0xd43f('0x3b')]=_0x92b404;if(_0x161540['query'][_0xd43f('0x3c')]){_0x285b86[_0xd43f('0x3d')]=[{'all':!![]}];}return db[_0xd43f('0x26')][_0xd43f('0x3e')](_0x285b86);})[_0xd43f('0x22')](function(_0x3ab035){_0x1ee70d[_0xd43f('0x3f')]=_0x3ab035;return _0x1ee70d;})[_0xd43f('0x22')](respondWithFilteredResult(_0x7b6761,_0x285b86))[_0xd43f('0x40')](handleError(_0x7b6761,null));};exports[_0xd43f('0x41')]=function(_0x37f496,_0x5105d2){var _0x3c23cd={'raw':!![],'where':{'id':_0x37f496['params']['id']}},_0x33c4b5={};_0x33c4b5['model']=_[_0xd43f('0x2b')](db[_0xd43f('0x26')][_0xd43f('0x27')]);_0x33c4b5['query']=_[_0xd43f('0x2b')](_0x37f496[_0xd43f('0x2c')]);_0x33c4b5[_0xd43f('0x35')]=_[_0xd43f('0x2e')](_0x33c4b5['model'],_0x33c4b5['query']);_0x3c23cd[_0xd43f('0x2d')]=_[_0xd43f('0x2e')](_0x33c4b5[_0xd43f('0x29')],qs['fields'](_0x37f496[_0xd43f('0x2c')][_0xd43f('0x2f')]));_0x3c23cd[_0xd43f('0x2d')]=_0x3c23cd[_0xd43f('0x2d')][_0xd43f('0x30')]?_0x3c23cd[_0xd43f('0x2d')]:_0x33c4b5[_0xd43f('0x29')];if(_0x37f496[_0xd43f('0x2c')]['includeAll']){_0x3c23cd[_0xd43f('0x3d')]=[{'all':!![]}];}_0x3c23cd=_[_0xd43f('0x38')]({},_0x3c23cd,_0x37f496[_0xd43f('0x3a')]);return db[_0xd43f('0x26')][_0xd43f('0x42')](_0x3c23cd)[_0xd43f('0x22')](handleEntityNotFound(_0x5105d2,null))[_0xd43f('0x22')](respondWithResult(_0x5105d2,null))[_0xd43f('0x40')](handleError(_0x5105d2,null));};exports[_0xd43f('0x43')]=function(_0x32537a,_0x3a17fe){return db['Cdr'][_0xd43f('0x43')](_0x32537a[_0xd43f('0x44')],{})[_0xd43f('0x22')](respondWithResult(_0x3a17fe,0xc9))[_0xd43f('0x40')](handleError(_0x3a17fe,null));};exports[_0xd43f('0x21')]=function(_0x4763b7,_0x54eaa2){if(_0x4763b7[_0xd43f('0x44')]['id']){delete _0x4763b7['body']['id'];}return db[_0xd43f('0x26')]['find']({'where':{'id':_0x4763b7[_0xd43f('0x45')]['id']}})[_0xd43f('0x22')](handleEntityNotFound(_0x54eaa2,null))[_0xd43f('0x22')](saveUpdates(_0x4763b7[_0xd43f('0x44')],null))[_0xd43f('0x22')](respondWithResult(_0x54eaa2,null))[_0xd43f('0x40')](handleError(_0x54eaa2,null));};exports[_0xd43f('0x46')]=function(_0x31b9cc,_0x1f7b2f){return db['Cdr'][_0xd43f('0x42')]({'where':{'id':_0x31b9cc[_0xd43f('0x45')]['id']}})[_0xd43f('0x22')](handleEntityNotFound(_0x1f7b2f,null))[_0xd43f('0x22')](removeEntity(_0x1f7b2f,null))[_0xd43f('0x40')](handleError(_0x1f7b2f,null));};exports[_0xd43f('0x47')]=function(_0x39bee7,_0x3489f9){return db[_0xd43f('0x26')][_0xd43f('0x47')]()[_0xd43f('0x22')](respondWithResult(_0x3489f9,null))['catch'](handleError(_0x3489f9,null));};
\ No newline at end of file
+var _0x5d17=['to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../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','apply','reject','save','then','name','send','index','Cdr','rawAttributes','fieldName','type','model','map','query','intersection','attributes','fields','length','nolimit','sort','where','filters','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','create','update','body','find','describe','eml-format','rimraf','request-promise','moment','bluebird','util','path','sox'];(function(_0x27b903,_0x34851b){var _0x557205=function(_0x3dc671){while(--_0x3dc671){_0x27b903['push'](_0x27b903['shift']());}};_0x557205(++_0x34851b);}(_0x5d17,0x114));var _0x75d1=function(_0xc67528,_0x24e2fb){_0xc67528=_0xc67528-0x0;var _0x38e26d=_0x5d17[_0xc67528];return _0x38e26d;};'use strict';var emlformat=require(_0x75d1('0x0'));var rimraf=require(_0x75d1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x75d1('0x2'));var moment=require(_0x75d1('0x3'));var BPromise=require(_0x75d1('0x4'));var Mustache=require('mustache');var util=require(_0x75d1('0x5'));var path=require(_0x75d1('0x6'));var sox=require(_0x75d1('0x7'));var csv=require(_0x75d1('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x75d1('0x9'));var _=require(_0x75d1('0xa'));var squel=require(_0x75d1('0xb'));var crypto=require(_0x75d1('0xc'));var jsforce=require(_0x75d1('0xd'));var deskjs=require(_0x75d1('0xe'));var toCsv=require(_0x75d1('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x75d1('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x75d1('0x10'));var hardwareService=require(_0x75d1('0x11'));var logger=require('../../config/logger')(_0x75d1('0x12'));var utils=require(_0x75d1('0x13'));var config=require(_0x75d1('0x14'));var licenseUtil=require(_0x75d1('0x15'));var db=require(_0x75d1('0x16'))['db'];function respondWithStatusCode(_0xd089cf,_0x49667a){_0x49667a=_0x49667a||0xcc;return function(_0x19e825){if(_0x19e825){return _0xd089cf[_0x75d1('0x17')](_0x49667a);}return _0xd089cf[_0x75d1('0x18')](_0x49667a)[_0x75d1('0x19')]();};}function respondWithResult(_0x49d723,_0x553697){_0x553697=_0x553697||0xc8;return function(_0x55b8a0){if(_0x55b8a0){return _0x49d723[_0x75d1('0x18')](_0x553697)[_0x75d1('0x1a')](_0x55b8a0);}};}function respondWithFilteredResult(_0x2fd022,_0x52e649){return function(_0x1f9620){if(_0x1f9620){var _0x3fff9b=typeof _0x52e649[_0x75d1('0x1b')]===_0x75d1('0x1c')&&typeof _0x52e649[_0x75d1('0x1d')]===_0x75d1('0x1c');var _0x2845bc=_0x1f9620[_0x75d1('0x1e')];var _0x1bc5de=_0x3fff9b?0x0:_0x52e649[_0x75d1('0x1b')];var _0x2c2a6d=_0x3fff9b?_0x1f9620['count']:_0x52e649['offset']+_0x52e649[_0x75d1('0x1d')];var _0x42b7ac;if(_0x2c2a6d>=_0x2845bc){_0x2c2a6d=_0x2845bc;_0x42b7ac=0xc8;}else{_0x42b7ac=0xce;}_0x2fd022['status'](_0x42b7ac);return _0x2fd022[_0x75d1('0x1f')](_0x75d1('0x20'),_0x1bc5de+'-'+_0x2c2a6d+'/'+_0x2845bc)[_0x75d1('0x1a')](_0x1f9620);}return null;};}function patchUpdates(_0xf6cc70){return function(_0xa42dbe){try{jsonpatch[_0x75d1('0x21')](_0xa42dbe,_0xf6cc70,!![]);}catch(_0x51d3b0){return BPromise[_0x75d1('0x22')](_0x51d3b0);}return _0xa42dbe[_0x75d1('0x23')]();};}function saveUpdates(_0x501cc7,_0x1cb58c){return function(_0x641ea4){if(_0x641ea4){return _0x641ea4['update'](_0x501cc7)[_0x75d1('0x24')](function(_0x5e70ec){return _0x5e70ec;});}return null;};}function removeEntity(_0x3a85c0,_0xc256af){return function(_0x345cf5){if(_0x345cf5){return _0x345cf5['destroy']()['then'](function(){_0x3a85c0[_0x75d1('0x18')](0xcc)[_0x75d1('0x19')]();});}};}function handleEntityNotFound(_0x315ce5,_0x18184b){return function(_0x51d043){if(!_0x51d043){_0x315ce5[_0x75d1('0x17')](0x194);}return _0x51d043;};}function handleError(_0x2b5848,_0x367238){_0x367238=_0x367238||0x1f4;return function(_0x51138e){logger['error'](_0x51138e['stack']);if(_0x51138e[_0x75d1('0x25')]){delete _0x51138e[_0x75d1('0x25')];}_0x2b5848[_0x75d1('0x18')](_0x367238)[_0x75d1('0x26')](_0x51138e);};}exports[_0x75d1('0x27')]=function(_0x519ceb,_0x4d292e){var _0x410e16={},_0x197f52={},_0x4967b5={'count':0x0,'rows':[]};var _0x2408b6=_['map'](db[_0x75d1('0x28')][_0x75d1('0x29')],function(_0x91e7c9){return{'name':_0x91e7c9[_0x75d1('0x2a')],'type':_0x91e7c9[_0x75d1('0x2b')]['key']};});_0x197f52[_0x75d1('0x2c')]=_[_0x75d1('0x2d')](_0x2408b6,_0x75d1('0x25'));_0x197f52[_0x75d1('0x2e')]=_['keys'](_0x519ceb[_0x75d1('0x2e')]);_0x197f52['filters']=_[_0x75d1('0x2f')](_0x197f52[_0x75d1('0x2c')],_0x197f52['query']);_0x410e16[_0x75d1('0x30')]=_[_0x75d1('0x2f')](_0x197f52[_0x75d1('0x2c')],qs[_0x75d1('0x31')](_0x519ceb[_0x75d1('0x2e')]['fields']));_0x410e16[_0x75d1('0x30')]=_0x410e16[_0x75d1('0x30')][_0x75d1('0x32')]?_0x410e16[_0x75d1('0x30')]:_0x197f52['model'];if(!_0x519ceb['query']['hasOwnProperty'](_0x75d1('0x33'))){_0x410e16[_0x75d1('0x1d')]=qs[_0x75d1('0x1d')](_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x1d')]);_0x410e16[_0x75d1('0x1b')]=qs[_0x75d1('0x1b')](_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x1b')]);}_0x410e16['order']=qs[_0x75d1('0x34')](_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x34')]);_0x410e16[_0x75d1('0x35')]=qs[_0x75d1('0x36')](_['pick'](_0x519ceb['query'],_0x197f52['filters']),_0x2408b6);if(_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x37')]){_0x410e16[_0x75d1('0x35')]=_[_0x75d1('0x38')](_0x410e16[_0x75d1('0x35')],{'$or':_[_0x75d1('0x2d')](_0x2408b6,function(_0x48f9f3){if(_0x48f9f3['type']!=='VIRTUAL'){var _0x3f2569={};_0x3f2569[_0x48f9f3['name']]={'$like':'%'+_0x519ceb['query'][_0x75d1('0x37')]+'%'};return _0x3f2569;}})});}_0x410e16=_[_0x75d1('0x38')]({},_0x410e16,_0x519ceb[_0x75d1('0x39')]);var _0x46854c={'where':_0x410e16['where']};return db[_0x75d1('0x28')][_0x75d1('0x1e')](_0x46854c)[_0x75d1('0x24')](function(_0x3d4137){_0x4967b5[_0x75d1('0x1e')]=_0x3d4137;if(_0x519ceb[_0x75d1('0x2e')][_0x75d1('0x3a')]){_0x410e16[_0x75d1('0x3b')]=[{'all':!![]}];}return db[_0x75d1('0x28')][_0x75d1('0x3c')](_0x410e16);})[_0x75d1('0x24')](function(_0x93922f){_0x4967b5[_0x75d1('0x3d')]=_0x93922f;return _0x4967b5;})[_0x75d1('0x24')](respondWithFilteredResult(_0x4d292e,_0x410e16))[_0x75d1('0x3e')](handleError(_0x4d292e,null));};exports[_0x75d1('0x3f')]=function(_0x25f689,_0x2ad3ef){var _0x42c18c={'raw':!![],'where':{'id':_0x25f689[_0x75d1('0x40')]['id']}},_0x2384aa={};_0x2384aa[_0x75d1('0x2c')]=_['keys'](db['Cdr'][_0x75d1('0x29')]);_0x2384aa[_0x75d1('0x2e')]=_[_0x75d1('0x41')](_0x25f689[_0x75d1('0x2e')]);_0x2384aa['filters']=_[_0x75d1('0x2f')](_0x2384aa[_0x75d1('0x2c')],_0x2384aa[_0x75d1('0x2e')]);_0x42c18c[_0x75d1('0x30')]=_['intersection'](_0x2384aa[_0x75d1('0x2c')],qs[_0x75d1('0x31')](_0x25f689[_0x75d1('0x2e')][_0x75d1('0x31')]));_0x42c18c['attributes']=_0x42c18c[_0x75d1('0x30')]['length']?_0x42c18c[_0x75d1('0x30')]:_0x2384aa[_0x75d1('0x2c')];if(_0x25f689[_0x75d1('0x2e')][_0x75d1('0x3a')]){_0x42c18c[_0x75d1('0x3b')]=[{'all':!![]}];}_0x42c18c=_[_0x75d1('0x38')]({},_0x42c18c,_0x25f689['options']);return db[_0x75d1('0x28')]['find'](_0x42c18c)['then'](handleEntityNotFound(_0x2ad3ef,null))[_0x75d1('0x24')](respondWithResult(_0x2ad3ef,null))[_0x75d1('0x3e')](handleError(_0x2ad3ef,null));};exports[_0x75d1('0x42')]=function(_0x12bd67,_0x16f744){return db[_0x75d1('0x28')][_0x75d1('0x42')](_0x12bd67['body'],{})['then'](respondWithResult(_0x16f744,0xc9))[_0x75d1('0x3e')](handleError(_0x16f744,null));};exports[_0x75d1('0x43')]=function(_0x50def3,_0x2d380d){if(_0x50def3[_0x75d1('0x44')]['id']){delete _0x50def3[_0x75d1('0x44')]['id'];}return db['Cdr'][_0x75d1('0x45')]({'where':{'id':_0x50def3[_0x75d1('0x40')]['id']}})[_0x75d1('0x24')](handleEntityNotFound(_0x2d380d,null))[_0x75d1('0x24')](saveUpdates(_0x50def3[_0x75d1('0x44')],null))[_0x75d1('0x24')](respondWithResult(_0x2d380d,null))[_0x75d1('0x3e')](handleError(_0x2d380d,null));};exports['destroy']=function(_0x1eaa66,_0x382195){return db[_0x75d1('0x28')][_0x75d1('0x45')]({'where':{'id':_0x1eaa66[_0x75d1('0x40')]['id']}})[_0x75d1('0x24')](handleEntityNotFound(_0x382195,null))[_0x75d1('0x24')](removeEntity(_0x382195,null))['catch'](handleError(_0x382195,null));};exports[_0x75d1('0x46')]=function(_0x3af9c5,_0x42d587){return db['Cdr'][_0x75d1('0x46')]()[_0x75d1('0x24')](respondWithResult(_0x42d587,null))[_0x75d1('0x3e')](handleError(_0x42d587,null));};
\ No newline at end of file
index 811d55f..62d39df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['dst','src','uniqueid','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./cdr.attributes','exports','define','Cdr','accountcode','calldate','disposition'];(function(_0x4a88b5,_0x5cd99c){var _0xc55b9b=function(_0x51559c){while(--_0x51559c){_0x4a88b5['push'](_0x4a88b5['shift']());}};_0xc55b9b(++_0x5cd99c);}(_0x9957,0x93));var _0x7995=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x9957[_0x501510];return _0x1e6ee5;};'use strict';var _=require(_0x7995('0x0'));var util=require(_0x7995('0x1'));var logger=require(_0x7995('0x2'))(_0x7995('0x3'));var moment=require('moment');var BPromise=require(_0x7995('0x4'));var rp=require(_0x7995('0x5'));var fs=require('fs');var path=require(_0x7995('0x6'));var rimraf=require(_0x7995('0x7'));var config=require('../../config/environment');var attributes=require(_0x7995('0x8'));module[_0x7995('0x9')]=function(_0x137b6b,_0x219534){return _0x137b6b[_0x7995('0xa')](_0x7995('0xb'),attributes,{'tableName':'cdr','paranoid':![],'indexes':[{'name':_0x7995('0xc'),'fields':[_0x7995('0xc')]},{'name':'calldate','fields':[_0x7995('0xd')]},{'name':_0x7995('0xe'),'fields':[_0x7995('0xe')]},{'name':_0x7995('0xf'),'fields':[_0x7995('0xf')]},{'name':_0x7995('0x10'),'fields':[_0x7995('0x10')]},{'name':'uniqueid','fields':[_0x7995('0x11')]}],'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(_0x359323,_0x85b832){var _0x58c127=function(_0x11eb0a){while(--_0x11eb0a){_0x359323['push'](_0x359323['shift']());}};_0x58c127(++_0x85b832);}(_0x7a54,0x106));var _0x47a5=function(_0x221e04,_0x275f97){_0x221e04=_0x221e04-0x0;var _0x12d5f3=_0x7a54[_0x221e04];return _0x12d5f3;};'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 6c1bcb7..5431b2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x424e=['randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','Cdr,\x20%s,\x20%s,\x20%s','stringify','error','code','Cdr,\x20%s,\x20%s','message','result','catch','util','bluebird'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x424e,0x1ae));var _0xe424=function(_0x5a95fa,_0x4a2fc9){_0x5a95fa=_0x5a95fa-0x0;var _0x1a61b8=_0x424e[_0x5a95fa];return _0x1a61b8;};'use strict';var _=require('lodash');var util=require(_0xe424('0x0'));var moment=require('moment');var BPromise=require(_0xe424('0x1'));var rs=require(_0xe424('0x2'));var fs=require('fs');var Redis=require(_0xe424('0x3'));var db=require(_0xe424('0x4'))['db'];var utils=require(_0xe424('0x5'));var logger=require(_0xe424('0x6'))(_0xe424('0x7'));var config=require('../../config/environment');var jayson=require(_0xe424('0x8'));var client=jayson[_0xe424('0x9')][_0xe424('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x70b7ef,_0x4a7e7e,_0x18b93a){return new BPromise(function(_0x2d099f,_0x5f4c94){return client[_0xe424('0xb')](_0x70b7ef,_0x18b93a)[_0xe424('0xc')](function(_0x5c1ff4){logger[_0xe424('0xd')]('Cdr,\x20%s,\x20%s',_0x4a7e7e,_0xe424('0xe'));logger[_0xe424('0xf')](_0xe424('0x10'),_0x4a7e7e,_0xe424('0xe'),JSON[_0xe424('0x11')](_0x5c1ff4));if(_0x5c1ff4[_0xe424('0x12')]){if(_0x5c1ff4[_0xe424('0x12')][_0xe424('0x13')]===0x1f4){logger['error'](_0xe424('0x14'),_0x4a7e7e,_0x5c1ff4[_0xe424('0x12')][_0xe424('0x15')]);return _0x5f4c94(_0x5c1ff4[_0xe424('0x12')][_0xe424('0x15')]);}logger[_0xe424('0x12')](_0xe424('0x14'),_0x4a7e7e,_0x5c1ff4[_0xe424('0x12')][_0xe424('0x15')]);return _0x2d099f(_0x5c1ff4[_0xe424('0x12')][_0xe424('0x15')]);}else{logger[_0xe424('0xd')](_0xe424('0x14'),_0x4a7e7e,'request\x20sent');_0x2d099f(_0x5c1ff4[_0xe424('0x16')][_0xe424('0x15')]);}})[_0xe424('0x17')](function(_0x507bec){logger[_0xe424('0x12')]('Cdr,\x20%s,\x20%s',_0x4a7e7e,_0x507bec);_0x5f4c94(_0x507bec);});});}
\ No newline at end of file
+var _0x77f1=['bluebird','randomstring','../../mysqldb','../../config/logger','rpc','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','util','moment'];(function(_0x1288d5,_0x37e407){var _0xf9a949=function(_0x40a710){while(--_0x40a710){_0x1288d5['push'](_0x1288d5['shift']());}};_0xf9a949(++_0x37e407);}(_0x77f1,0x13e));var _0x177f=function(_0x45f2d6,_0x22516c){_0x45f2d6=_0x45f2d6-0x0;var _0x37ccac=_0x77f1[_0x45f2d6];return _0x37ccac;};'use strict';var _=require('lodash');var util=require(_0x177f('0x0'));var moment=require(_0x177f('0x1'));var BPromise=require(_0x177f('0x2'));var rs=require(_0x177f('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x177f('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x177f('0x5'))(_0x177f('0x6'));var config=require('../../config/environment');var jayson=require(_0x177f('0x7'));var client=jayson[_0x177f('0x8')][_0x177f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xf096c3,_0x10bba5,_0xf056f3){return new BPromise(function(_0x272345,_0x1f4464){return client[_0x177f('0xa')](_0xf096c3,_0xf056f3)[_0x177f('0xb')](function(_0x50f2c9){logger[_0x177f('0xc')](_0x177f('0xd'),_0x10bba5,_0x177f('0xe'));logger['debug'](_0x177f('0xf'),_0x10bba5,_0x177f('0xe'),JSON['stringify'](_0x50f2c9));if(_0x50f2c9[_0x177f('0x10')]){if(_0x50f2c9[_0x177f('0x10')][_0x177f('0x11')]===0x1f4){logger[_0x177f('0x10')]('Cdr,\x20%s,\x20%s',_0x10bba5,_0x50f2c9[_0x177f('0x10')][_0x177f('0x12')]);return _0x1f4464(_0x50f2c9['error']['message']);}logger['error'](_0x177f('0xd'),_0x10bba5,_0x50f2c9[_0x177f('0x10')]['message']);return _0x272345(_0x50f2c9[_0x177f('0x10')][_0x177f('0x12')]);}else{logger['info'](_0x177f('0xd'),_0x10bba5,_0x177f('0xe'));_0x272345(_0x50f2c9[_0x177f('0x13')]['message']);}})['catch'](function(_0x6c24ac){logger['error'](_0x177f('0xd'),_0x10bba5,_0x6c24ac);_0x1f4464(_0x6c24ac);});});}
\ No newline at end of file
index 52cc04e..cc96c83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x5a56cc,_0x29650c){var _0x589caa=function(_0x1e3ce5){while(--_0x1e3ce5){_0x5a56cc['push'](_0x5a56cc['shift']());}};_0x589caa(++_0x29650c);}(_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'));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
+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(_0x59f97a,_0x511696){var _0x411b33=function(_0x4f801e){while(--_0x4f801e){_0x59f97a['push'](_0x59f97a['shift']());}};_0x411b33(++_0x511696);}(_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'));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 c449838..719440b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcfe7=['TEXT','*,*,*,*','sequelize','INTEGER','STRING','noop'];(function(_0x432fca,_0xb0b1b5){var _0x3adba4=function(_0x5e3ae4){while(--_0x5e3ae4){_0x432fca['push'](_0x432fca['shift']());}};_0x3adba4(++_0xb0b1b5);}(_0xcfe7,0x176));var _0x7cfe=function(_0x397857,_0x3f23db){_0x397857=_0x397857-0x0;var _0x237905=_0xcfe7[_0x397857];return _0x237905;};'use strict';var Sequelize=require(_0x7cfe('0x0'));module['exports']={'priority':{'type':Sequelize[_0x7cfe('0x1')],'allowNull':![]},'app':{'type':Sequelize[_0x7cfe('0x2')],'allowNull':![],'defaultValue':_0x7cfe('0x3')},'appdata':{'type':Sequelize[_0x7cfe('0x4')]()},'description':{'type':Sequelize[_0x7cfe('0x2')]},'interval':{'type':Sequelize[_0x7cfe('0x2')],'defaultValue':_0x7cfe('0x5')}};
\ No newline at end of file
+var _0x9849=['STRING','*,*,*,*','sequelize','exports'];(function(_0x7b8686,_0x3cd156){var _0x556570=function(_0x13d981){while(--_0x13d981){_0x7b8686['push'](_0x7b8686['shift']());}};_0x556570(++_0x3cd156);}(_0x9849,0x86));var _0x9984=function(_0x3899d1,_0x4aa04c){_0x3899d1=_0x3899d1-0x0;var _0xeb4a7d=_0x9849[_0x3899d1];return _0xeb4a7d;};'use strict';var Sequelize=require(_0x9984('0x0'));module[_0x9984('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x9984('0x2')],'defaultValue':_0x9984('0x3')}};
\ No newline at end of file
index f2a783e..c637fa7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d98=['mustache','util','sox','lodash','squel','crypto','desk.js','to-csv','querystring','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','undefined','limit','count','offset','Content-Range','json','reject','save','update','then','destroy','error','name','send','params','model','query','keys','filters','attributes','intersection','fields','length','includeAll','include','merge','options','ChatApplication','find','catch','body','eml-format','zip-dir','fast-json-patch','request-promise','moment'];(function(_0x13500b,_0xf7a66){var _0x53e93a=function(_0x1a077c){while(--_0x1a077c){_0x13500b['push'](_0x13500b['shift']());}};_0x53e93a(++_0xf7a66);}(_0x7d98,0xe7));var _0x87d9=function(_0x6287b6,_0x5682e7){_0x6287b6=_0x6287b6-0x0;var _0x5d6be4=_0x7d98[_0x6287b6];return _0x5d6be4;};'use strict';var emlformat=require(_0x87d9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x87d9('0x1'));var jsonpatch=require(_0x87d9('0x2'));var rp=require(_0x87d9('0x3'));var moment=require(_0x87d9('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x87d9('0x5'));var util=require(_0x87d9('0x6'));var path=require('path');var sox=require(_0x87d9('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x87d9('0x8'));var squel=require(_0x87d9('0x9'));var crypto=require(_0x87d9('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x87d9('0xb'));var toCsv=require(_0x87d9('0xc'));var querystring=require(_0x87d9('0xd'));var Papa=require('papaparse');var Redis=require(_0x87d9('0xe'));var authService=require(_0x87d9('0xf'));var qs=require(_0x87d9('0x10'));var as=require(_0x87d9('0x11'));var hardwareService=require(_0x87d9('0x12'));var logger=require(_0x87d9('0x13'))(_0x87d9('0x14'));var utils=require(_0x87d9('0x15'));var config=require(_0x87d9('0x16'));var licenseUtil=require(_0x87d9('0x17'));var db=require(_0x87d9('0x18'))['db'];function respondWithStatusCode(_0x22f32d,_0x38f33e){_0x38f33e=_0x38f33e||0xcc;return function(_0x22758){if(_0x22758){return _0x22f32d[_0x87d9('0x19')](_0x38f33e);}return _0x22f32d[_0x87d9('0x1a')](_0x38f33e)[_0x87d9('0x1b')]();};}function respondWithResult(_0x185401,_0x380836){_0x380836=_0x380836||0xc8;return function(_0x27d61d){if(_0x27d61d){return _0x185401['status'](_0x380836)['json'](_0x27d61d);}};}function respondWithFilteredResult(_0x9e9e53,_0xaa910c){return function(_0x3231e7){if(_0x3231e7){var _0x501d32=typeof _0xaa910c['offset']===_0x87d9('0x1c')&&typeof _0xaa910c[_0x87d9('0x1d')]===_0x87d9('0x1c');var _0x23ae47=_0x3231e7[_0x87d9('0x1e')];var _0xebc1eb=_0x501d32?0x0:_0xaa910c[_0x87d9('0x1f')];var _0x1f33a3=_0x501d32?_0x3231e7[_0x87d9('0x1e')]:_0xaa910c[_0x87d9('0x1f')]+_0xaa910c[_0x87d9('0x1d')];var _0x5d6da1;if(_0x1f33a3>=_0x23ae47){_0x1f33a3=_0x23ae47;_0x5d6da1=0xc8;}else{_0x5d6da1=0xce;}_0x9e9e53[_0x87d9('0x1a')](_0x5d6da1);return _0x9e9e53['set'](_0x87d9('0x20'),_0xebc1eb+'-'+_0x1f33a3+'/'+_0x23ae47)[_0x87d9('0x21')](_0x3231e7);}return null;};}function patchUpdates(_0x334d31){return function(_0x57bef6){try{jsonpatch['apply'](_0x57bef6,_0x334d31,!![]);}catch(_0x545241){return BPromise[_0x87d9('0x22')](_0x545241);}return _0x57bef6[_0x87d9('0x23')]();};}function saveUpdates(_0x28aaaa,_0x6ab839){return function(_0xc82b02){if(_0xc82b02){return _0xc82b02[_0x87d9('0x24')](_0x28aaaa)[_0x87d9('0x25')](function(_0x3b24e7){return _0x3b24e7;});}return null;};}function removeEntity(_0x1c550c,_0x4c0f7a){return function(_0x31e1b2){if(_0x31e1b2){return _0x31e1b2[_0x87d9('0x26')]()[_0x87d9('0x25')](function(){_0x1c550c[_0x87d9('0x1a')](0xcc)[_0x87d9('0x1b')]();});}};}function handleEntityNotFound(_0x340462,_0x3641c8){return function(_0x32b83f){if(!_0x32b83f){_0x340462['sendStatus'](0x194);}return _0x32b83f;};}function handleError(_0x8b1ab7,_0x600404){_0x600404=_0x600404||0x1f4;return function(_0x2f63fa){logger[_0x87d9('0x27')](_0x2f63fa['stack']);if(_0x2f63fa[_0x87d9('0x28')]){delete _0x2f63fa[_0x87d9('0x28')];}_0x8b1ab7[_0x87d9('0x1a')](_0x600404)[_0x87d9('0x29')](_0x2f63fa);};}exports['show']=function(_0x21916a,_0x3c0283){var _0x501c5={'raw':!![],'where':{'id':_0x21916a[_0x87d9('0x2a')]['id']}},_0x5e1b55={};_0x5e1b55[_0x87d9('0x2b')]=_['keys'](db['ChatApplication']['rawAttributes']);_0x5e1b55[_0x87d9('0x2c')]=_[_0x87d9('0x2d')](_0x21916a['query']);_0x5e1b55[_0x87d9('0x2e')]=_['intersection'](_0x5e1b55[_0x87d9('0x2b')],_0x5e1b55['query']);_0x501c5[_0x87d9('0x2f')]=_[_0x87d9('0x30')](_0x5e1b55['model'],qs[_0x87d9('0x31')](_0x21916a['query'][_0x87d9('0x31')]));_0x501c5[_0x87d9('0x2f')]=_0x501c5[_0x87d9('0x2f')][_0x87d9('0x32')]?_0x501c5[_0x87d9('0x2f')]:_0x5e1b55[_0x87d9('0x2b')];if(_0x21916a['query'][_0x87d9('0x33')]){_0x501c5[_0x87d9('0x34')]=[{'all':!![]}];}_0x501c5=_[_0x87d9('0x35')]({},_0x501c5,_0x21916a[_0x87d9('0x36')]);return db[_0x87d9('0x37')][_0x87d9('0x38')](_0x501c5)[_0x87d9('0x25')](handleEntityNotFound(_0x3c0283,null))[_0x87d9('0x25')](respondWithResult(_0x3c0283,null))[_0x87d9('0x39')](handleError(_0x3c0283,null));};exports['update']=function(_0xf1007,_0x24d0e6){if(_0xf1007[_0x87d9('0x3a')]['id']){delete _0xf1007[_0x87d9('0x3a')]['id'];}return db[_0x87d9('0x37')]['find']({'where':{'id':_0xf1007[_0x87d9('0x2a')]['id']}})[_0x87d9('0x25')](handleEntityNotFound(_0x24d0e6,null))[_0x87d9('0x25')](saveUpdates(_0xf1007['body'],null))[_0x87d9('0x25')](respondWithResult(_0x24d0e6,null))['catch'](handleError(_0x24d0e6,null));};exports[_0x87d9('0x26')]=function(_0x2a18cf,_0x157fa1){return db[_0x87d9('0x37')]['find']({'where':{'id':_0x2a18cf[_0x87d9('0x2a')]['id']}})['then'](handleEntityNotFound(_0x157fa1,null))[_0x87d9('0x25')](removeEntity(_0x157fa1,null))[_0x87d9('0x39')](handleError(_0x157fa1,null));};
\ No newline at end of file
+var _0x0901=['model','keys','ChatApplication','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','then','catch','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','save','update','stack','name','send','show','params'];(function(_0x486be1,_0x3fdf5e){var _0x586fa1=function(_0x18ba96){while(--_0x18ba96){_0x486be1['push'](_0x486be1['shift']());}};_0x586fa1(++_0x3fdf5e);}(_0x0901,0x134));var _0x1090=function(_0xf352d1,_0x2f4579){_0xf352d1=_0xf352d1-0x0;var _0x556ac9=_0x0901[_0xf352d1];return _0x556ac9;};'use strict';var emlformat=require(_0x1090('0x0'));var rimraf=require(_0x1090('0x1'));var zipdir=require(_0x1090('0x2'));var jsonpatch=require(_0x1090('0x3'));var rp=require(_0x1090('0x4'));var moment=require(_0x1090('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x1090('0x6'));var path=require(_0x1090('0x7'));var sox=require(_0x1090('0x8'));var csv=require(_0x1090('0x9'));var ejs=require(_0x1090('0xa'));var fs=require('fs');var fs_extra=require(_0x1090('0xb'));var _=require('lodash');var squel=require(_0x1090('0xc'));var crypto=require(_0x1090('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x1090('0xe'));var toCsv=require(_0x1090('0x9'));var querystring=require(_0x1090('0xf'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x1090('0x10'));var as=require(_0x1090('0x11'));var hardwareService=require(_0x1090('0x12'));var logger=require('../../config/logger')(_0x1090('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x1090('0x14'));var db=require(_0x1090('0x15'))['db'];function respondWithStatusCode(_0x43f1b6,_0x2c0afa){_0x2c0afa=_0x2c0afa||0xcc;return function(_0x4250c6){if(_0x4250c6){return _0x43f1b6[_0x1090('0x16')](_0x2c0afa);}return _0x43f1b6[_0x1090('0x17')](_0x2c0afa)[_0x1090('0x18')]();};}function respondWithResult(_0x1cbc74,_0x897055){_0x897055=_0x897055||0xc8;return function(_0x477a41){if(_0x477a41){return _0x1cbc74[_0x1090('0x17')](_0x897055)[_0x1090('0x19')](_0x477a41);}};}function respondWithFilteredResult(_0x4dadef,_0x465cbd){return function(_0x28a09a){if(_0x28a09a){var _0x14e6dc=typeof _0x465cbd['offset']===_0x1090('0x1a')&&typeof _0x465cbd[_0x1090('0x1b')]===_0x1090('0x1a');var _0x31ef2f=_0x28a09a[_0x1090('0x1c')];var _0x496fb1=_0x14e6dc?0x0:_0x465cbd[_0x1090('0x1d')];var _0x2ea64c=_0x14e6dc?_0x28a09a[_0x1090('0x1c')]:_0x465cbd[_0x1090('0x1d')]+_0x465cbd[_0x1090('0x1b')];var _0x392fcc;if(_0x2ea64c>=_0x31ef2f){_0x2ea64c=_0x31ef2f;_0x392fcc=0xc8;}else{_0x392fcc=0xce;}_0x4dadef[_0x1090('0x17')](_0x392fcc);return _0x4dadef[_0x1090('0x1e')](_0x1090('0x1f'),_0x496fb1+'-'+_0x2ea64c+'/'+_0x31ef2f)['json'](_0x28a09a);}return null;};}function patchUpdates(_0x57dfc5){return function(_0x8df216){try{jsonpatch['apply'](_0x8df216,_0x57dfc5,!![]);}catch(_0x304e6d){return BPromise[_0x1090('0x20')](_0x304e6d);}return _0x8df216[_0x1090('0x21')]();};}function saveUpdates(_0xa48311,_0x211b39){return function(_0x29633c){if(_0x29633c){return _0x29633c[_0x1090('0x22')](_0xa48311)['then'](function(_0x505d09){return _0x505d09;});}return null;};}function removeEntity(_0x4c7434,_0x48b5c0){return function(_0x4d187a){if(_0x4d187a){return _0x4d187a['destroy']()['then'](function(){_0x4c7434[_0x1090('0x17')](0xcc)[_0x1090('0x18')]();});}};}function handleEntityNotFound(_0x54eeec,_0x3face7){return function(_0x50267d){if(!_0x50267d){_0x54eeec[_0x1090('0x16')](0x194);}return _0x50267d;};}function handleError(_0x33dc42,_0x3a2123){_0x3a2123=_0x3a2123||0x1f4;return function(_0x5e2859){logger['error'](_0x5e2859[_0x1090('0x23')]);if(_0x5e2859['name']){delete _0x5e2859[_0x1090('0x24')];}_0x33dc42['status'](_0x3a2123)[_0x1090('0x25')](_0x5e2859);};}exports[_0x1090('0x26')]=function(_0x124ac,_0x3b7f54){var _0x257645={'raw':!![],'where':{'id':_0x124ac[_0x1090('0x27')]['id']}},_0x5bd6ab={};_0x5bd6ab[_0x1090('0x28')]=_[_0x1090('0x29')](db[_0x1090('0x2a')][_0x1090('0x2b')]);_0x5bd6ab[_0x1090('0x2c')]=_[_0x1090('0x29')](_0x124ac[_0x1090('0x2c')]);_0x5bd6ab[_0x1090('0x2d')]=_[_0x1090('0x2e')](_0x5bd6ab['model'],_0x5bd6ab['query']);_0x257645[_0x1090('0x2f')]=_[_0x1090('0x2e')](_0x5bd6ab[_0x1090('0x28')],qs['fields'](_0x124ac[_0x1090('0x2c')][_0x1090('0x30')]));_0x257645[_0x1090('0x2f')]=_0x257645[_0x1090('0x2f')][_0x1090('0x31')]?_0x257645['attributes']:_0x5bd6ab[_0x1090('0x28')];if(_0x124ac[_0x1090('0x2c')][_0x1090('0x32')]){_0x257645[_0x1090('0x33')]=[{'all':!![]}];}_0x257645=_[_0x1090('0x34')]({},_0x257645,_0x124ac[_0x1090('0x35')]);return db['ChatApplication'][_0x1090('0x36')](_0x257645)['then'](handleEntityNotFound(_0x3b7f54,null))[_0x1090('0x37')](respondWithResult(_0x3b7f54,null))[_0x1090('0x38')](handleError(_0x3b7f54,null));};exports[_0x1090('0x22')]=function(_0x1b1d3a,_0x5ae313){if(_0x1b1d3a[_0x1090('0x39')]['id']){delete _0x1b1d3a[_0x1090('0x39')]['id'];}return db[_0x1090('0x2a')]['find']({'where':{'id':_0x1b1d3a['params']['id']}})[_0x1090('0x37')](handleEntityNotFound(_0x5ae313,null))['then'](saveUpdates(_0x1b1d3a[_0x1090('0x39')],null))['then'](respondWithResult(_0x5ae313,null))[_0x1090('0x38')](handleError(_0x5ae313,null));};exports['destroy']=function(_0x18cc57,_0x3f910f){return db['ChatApplication'][_0x1090('0x36')]({'where':{'id':_0x18cc57[_0x1090('0x27')]['id']}})[_0x1090('0x37')](handleEntityNotFound(_0x3f910f,null))[_0x1090('0x37')](removeEntity(_0x3f910f,null))[_0x1090('0x38')](handleError(_0x3f910f,null));};
\ No newline at end of file
index 18eb8a1..cc02918 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x27d1=['../../config/environment','exports','define','ChatApplication','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','rimraf'];(function(_0x255105,_0x5f24fa){var _0x5ad437=function(_0x399245){while(--_0x399245){_0x255105['push'](_0x255105['shift']());}};_0x5ad437(++_0x5f24fa);}(_0x27d1,0x88));var _0x127d=function(_0x1c696b,_0x2e7e6c){_0x1c696b=_0x1c696b-0x0;var _0x12a6e9=_0x27d1[_0x1c696b];return _0x12a6e9;};'use strict';var _=require(_0x127d('0x0'));var util=require(_0x127d('0x1'));var logger=require('../../config/logger')(_0x127d('0x2'));var moment=require(_0x127d('0x3'));var BPromise=require(_0x127d('0x4'));var rp=require(_0x127d('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x127d('0x6'));var config=require(_0x127d('0x7'));var attributes=require('./chatApplication.attributes');module[_0x127d('0x8')]=function(_0x5ac270,_0x4935ab){return _0x5ac270[_0x127d('0x9')](_0x127d('0xa'),attributes,{'tableName':'chat_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x127d('0xb'),'collate':_0x127d('0xc')});};
\ No newline at end of file
+var _0x7e50=['ChatApplication','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatApplication.attributes','exports','define'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7e50,0x7f));var _0x07e5=function(_0x591e16,_0x5aefc1){_0x591e16=_0x591e16-0x0;var _0x543b35=_0x7e50[_0x591e16];return _0x543b35;};'use strict';var _=require(_0x07e5('0x0'));var util=require(_0x07e5('0x1'));var logger=require(_0x07e5('0x2'))(_0x07e5('0x3'));var moment=require(_0x07e5('0x4'));var BPromise=require(_0x07e5('0x5'));var rp=require(_0x07e5('0x6'));var fs=require('fs');var path=require(_0x07e5('0x7'));var rimraf=require(_0x07e5('0x8'));var config=require(_0x07e5('0x9'));var attributes=require(_0x07e5('0xa'));module[_0x07e5('0xb')]=function(_0x42aa1d,_0x4031d7){return _0x42aa1d[_0x07e5('0xc')](_0x07e5('0xd'),attributes,{'tableName':'chat_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 7efaa40..af2b40f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba7d=['then','info','ChatApplication,\x20%s,\x20%s','request\x20sent','debug','ChatApplication,\x20%s,\x20%s,\x20%s','error','message','result','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','rpc','../../config/environment','client','http','request'];(function(_0x5845c6,_0x2639ae){var _0xa675f1=function(_0x2cc3eb){while(--_0x2cc3eb){_0x5845c6['push'](_0x5845c6['shift']());}};_0xa675f1(++_0x2639ae);}(_0xba7d,0x1d5));var _0xdba7=function(_0x2f8589,_0xcf7c69){_0x2f8589=_0x2f8589-0x0;var _0x3f3e99=_0xba7d[_0x2f8589];return _0x3f3e99;};'use strict';var _=require(_0xdba7('0x0'));var util=require('util');var moment=require(_0xdba7('0x1'));var BPromise=require(_0xdba7('0x2'));var rs=require(_0xdba7('0x3'));var fs=require('fs');var Redis=require(_0xdba7('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xdba7('0x5'));var logger=require('../../config/logger')(_0xdba7('0x6'));var config=require(_0xdba7('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xdba7('0x8')][_0xdba7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x97f938,_0x3e3df9,_0x17e49b){return new BPromise(function(_0x17aa46,_0x1ca905){return client[_0xdba7('0xa')](_0x97f938,_0x17e49b)[_0xdba7('0xb')](function(_0xe59035){logger[_0xdba7('0xc')](_0xdba7('0xd'),_0x3e3df9,_0xdba7('0xe'));logger[_0xdba7('0xf')](_0xdba7('0x10'),_0x3e3df9,_0xdba7('0xe'),JSON['stringify'](_0xe59035));if(_0xe59035[_0xdba7('0x11')]){if(_0xe59035[_0xdba7('0x11')]['code']===0x1f4){logger[_0xdba7('0x11')](_0xdba7('0xd'),_0x3e3df9,_0xe59035[_0xdba7('0x11')]['message']);return _0x1ca905(_0xe59035[_0xdba7('0x11')][_0xdba7('0x12')]);}logger[_0xdba7('0x11')](_0xdba7('0xd'),_0x3e3df9,_0xe59035[_0xdba7('0x11')][_0xdba7('0x12')]);return _0x17aa46(_0xe59035[_0xdba7('0x11')]['message']);}else{logger[_0xdba7('0xc')](_0xdba7('0xd'),_0x3e3df9,'request\x20sent');_0x17aa46(_0xe59035[_0xdba7('0x13')][_0xdba7('0x12')]);}})['catch'](function(_0xc20f){logger[_0xdba7('0x11')](_0xdba7('0xd'),_0x3e3df9,_0xc20f);_0x1ca905(_0xc20f);});});}
\ No newline at end of file
+var _0x64b6=['result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','ChatApplication,\x20%s,\x20%s','request\x20sent','ChatApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info'];(function(_0x5dc14f,_0x250178){var _0x4ce01d=function(_0x1b9470){while(--_0x1b9470){_0x5dc14f['push'](_0x5dc14f['shift']());}};_0x4ce01d(++_0x250178);}(_0x64b6,0x11a));var _0x664b=function(_0x45943c,_0x292e90){_0x45943c=_0x45943c-0x0;var _0xe1cf98=_0x64b6[_0x45943c];return _0xe1cf98;};'use strict';var _=require(_0x664b('0x0'));var util=require('util');var moment=require(_0x664b('0x1'));var BPromise=require('bluebird');var rs=require(_0x664b('0x2'));var fs=require('fs');var Redis=require(_0x664b('0x3'));var db=require(_0x664b('0x4'))['db'];var utils=require(_0x664b('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x664b('0x6'));var jayson=require(_0x664b('0x7'));var client=jayson[_0x664b('0x8')][_0x664b('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x430c31,_0x107440,_0x5fbbd){return new BPromise(function(_0x23285c,_0x1503c1){return client['request'](_0x430c31,_0x5fbbd)['then'](function(_0xe3073d){logger['info'](_0x664b('0xa'),_0x107440,_0x664b('0xb'));logger['debug'](_0x664b('0xc'),_0x107440,_0x664b('0xb'),JSON[_0x664b('0xd')](_0xe3073d));if(_0xe3073d[_0x664b('0xe')]){if(_0xe3073d['error'][_0x664b('0xf')]===0x1f4){logger[_0x664b('0xe')](_0x664b('0xa'),_0x107440,_0xe3073d['error'][_0x664b('0x10')]);return _0x1503c1(_0xe3073d[_0x664b('0xe')][_0x664b('0x10')]);}logger['error'](_0x664b('0xa'),_0x107440,_0xe3073d[_0x664b('0xe')][_0x664b('0x10')]);return _0x23285c(_0xe3073d['error']['message']);}else{logger[_0x664b('0x11')](_0x664b('0xa'),_0x107440,_0x664b('0xb'));_0x23285c(_0xe3073d[_0x664b('0x12')]['message']);}})[_0x664b('0x13')](function(_0x51d871){logger[_0x664b('0xe')]('ChatApplication,\x20%s,\x20%s',_0x107440,_0x51d871);_0x1503c1(_0x51d871);});});}
\ No newline at end of file
index 153f2e4..bf24783 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd2d=['/:id','isAuthenticated','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./chatApplication.controller'];(function(_0x5783f4,_0x4a9e0a){var _0x28e380=function(_0x1ffc49){while(--_0x1ffc49){_0x5783f4['push'](_0x5783f4['shift']());}};_0x28e380(++_0x4a9e0a);}(_0xcd2d,0xb6));var _0xdcd2=function(_0x5d0645,_0x5cfb67){_0x5d0645=_0x5d0645-0x0;var _0x204754=_0xcd2d[_0x5d0645];return _0x204754;};'use strict';var multer=require(_0xdcd2('0x0'));var util=require(_0xdcd2('0x1'));var path=require(_0xdcd2('0x2'));var timeout=require(_0xdcd2('0x3'));var express=require(_0xdcd2('0x4'));var router=express[_0xdcd2('0x5')]();var fs_extra=require(_0xdcd2('0x6'));var auth=require(_0xdcd2('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xdcd2('0x8'));var controller=require(_0xdcd2('0x9'));router['get'](_0xdcd2('0xa'),auth['isAuthenticated'](),controller['show']);router['put'](_0xdcd2('0xa'),auth[_0xdcd2('0xb')](),controller[_0xdcd2('0xc')]);router[_0xdcd2('0xd')](_0xdcd2('0xa'),auth[_0xdcd2('0xb')](),controller[_0xdcd2('0xe')]);module[_0xdcd2('0xf')]=router;
\ No newline at end of file
+var _0x8dd7=['destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatApplication.controller','/:id','isAuthenticated','show','delete'];(function(_0x3ba1ae,_0x22b819){var _0x5b8b4e=function(_0x39ded0){while(--_0x39ded0){_0x3ba1ae['push'](_0x3ba1ae['shift']());}};_0x5b8b4e(++_0x22b819);}(_0x8dd7,0x1d3));var _0x78dd=function(_0x39f777,_0x2df0ad){_0x39f777=_0x39f777-0x0;var _0x2877e5=_0x8dd7[_0x39f777];return _0x2877e5;};'use strict';var multer=require(_0x78dd('0x0'));var util=require(_0x78dd('0x1'));var path=require(_0x78dd('0x2'));var timeout=require(_0x78dd('0x3'));var express=require(_0x78dd('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x78dd('0x5'));var interaction=require(_0x78dd('0x6'));var config=require(_0x78dd('0x7'));var controller=require(_0x78dd('0x8'));router['get'](_0x78dd('0x9'),auth[_0x78dd('0xa')](),controller[_0x78dd('0xb')]);router['put'](_0x78dd('0x9'),auth[_0x78dd('0xa')](),controller['update']);router[_0x78dd('0xc')](_0x78dd('0x9'),auth[_0x78dd('0xa')](),controller[_0x78dd('0xd')]);module[_0x78dd('0xe')]=router;
\ No newline at end of file
index 009b1cc..6d6feb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf1a=['exports','STRING','sequelize'];(function(_0x2e3206,_0x4eb267){var _0x486e8e=function(_0x80f99b){while(--_0x80f99b){_0x2e3206['push'](_0x2e3206['shift']());}};_0x486e8e(++_0x4eb267);}(_0xbf1a,0x1c7));var _0xabf1=function(_0x3a1f7b,_0x376f6a){_0x3a1f7b=_0x3a1f7b-0x0;var _0x2156a4=_0xbf1a[_0x3a1f7b];return _0x2156a4;};'use strict';var Sequelize=require(_0xabf1('0x0'));module[_0xabf1('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xabf1('0x2')]},'write':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
+var _0xc42c=['exports','STRING'];(function(_0x1956c9,_0x2ad6b4){var _0x499d4=function(_0x2fa03f){while(--_0x2fa03f){_0x1956c9['push'](_0x1956c9['shift']());}};_0x499d4(++_0x2ad6b4);}(_0xc42c,0x13e));var _0xcc42=function(_0x3886b4,_0x22a46e){_0x3886b4=_0x3886b4-0x0;var _0x2c9323=_0xc42c[_0x3886b4];return _0x2c9323;};'use strict';var Sequelize=require('sequelize');module[_0xcc42('0x0')]={'name':{'type':Sequelize[_0xcc42('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0xcc42('0x1')]},'write':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]}};
\ No newline at end of file
index 23b6352..8ea26a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['./chatGroup.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','update','destroy','then','error','stack','name','send','index','ChatGroup','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','order','sort','filter','where','VIRTUAL','merge','includeAll','findAll','params','include','options','find','catch','create','body','describe','ChatInternalMessage','user','addMembers','omit','ids','getMembers','findOne','User','rawAttributes','hasOwnProperty','nolimit','removeMembers','getMessages','pick','$gte','split','format','rimraf','zip-dir','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis'];(function(_0x854fa,_0x2b8b94){var _0x6f6162=function(_0x62aa33){while(--_0x62aa33){_0x854fa['push'](_0x854fa['shift']());}};_0x6f6162(++_0x2b8b94);}(_0x5f2f,0xa1));var _0xf5f2=function(_0x95a8f1,_0x277f8f){_0x95a8f1=_0x95a8f1-0x0;var _0x4c7c31=_0x5f2f[_0x95a8f1];return _0x4c7c31;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf5f2('0x0'));var zipdir=require(_0xf5f2('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf5f2('0x2'));var moment=require(_0xf5f2('0x3'));var BPromise=require(_0xf5f2('0x4'));var Mustache=require('mustache');var util=require(_0xf5f2('0x5'));var path=require(_0xf5f2('0x6'));var sox=require(_0xf5f2('0x7'));var csv=require(_0xf5f2('0x8'));var ejs=require(_0xf5f2('0x9'));var fs=require('fs');var fs_extra=require(_0xf5f2('0xa'));var _=require(_0xf5f2('0xb'));var squel=require(_0xf5f2('0xc'));var crypto=require(_0xf5f2('0xd'));var jsforce=require(_0xf5f2('0xe'));var deskjs=require(_0xf5f2('0xf'));var toCsv=require(_0xf5f2('0x8'));var querystring=require('querystring');var Papa=require(_0xf5f2('0x10'));var Redis=require(_0xf5f2('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf5f2('0x12'));var hardwareService=require(_0xf5f2('0x13'));var logger=require(_0xf5f2('0x14'))(_0xf5f2('0x15'));var utils=require(_0xf5f2('0x16'));var config=require(_0xf5f2('0x17'));var licenseUtil=require(_0xf5f2('0x18'));var db=require(_0xf5f2('0x19'))['db'];config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xf5f2('0x1a')]));require(_0xf5f2('0x1b'))[_0xf5f2('0x1c')](socket);function respondWithStatusCode(_0x31b165,_0x34e67f){_0x34e67f=_0x34e67f||0xcc;return function(_0x4579d4){if(_0x4579d4){return _0x31b165[_0xf5f2('0x1d')](_0x34e67f);}return _0x31b165[_0xf5f2('0x1e')](_0x34e67f)[_0xf5f2('0x1f')]();};}function respondWithResult(_0x18e339,_0x3cd497){_0x3cd497=_0x3cd497||0xc8;return function(_0x37d073){if(_0x37d073){return _0x18e339[_0xf5f2('0x1e')](_0x3cd497)[_0xf5f2('0x20')](_0x37d073);}};}function respondWithFilteredResult(_0x4d0179,_0x9f6394){return function(_0x386342){if(_0x386342){var _0x5174c3=typeof _0x9f6394[_0xf5f2('0x21')]===_0xf5f2('0x22')&&typeof _0x9f6394[_0xf5f2('0x23')]===_0xf5f2('0x22');var _0x33669e=_0x386342['count'];var _0xb021dd=_0x5174c3?0x0:_0x9f6394[_0xf5f2('0x21')];var _0x583e41=_0x5174c3?_0x386342[_0xf5f2('0x24')]:_0x9f6394[_0xf5f2('0x21')]+_0x9f6394[_0xf5f2('0x23')];var _0x5132cb;if(_0x583e41>=_0x33669e){_0x583e41=_0x33669e;_0x5132cb=0xc8;}else{_0x5132cb=0xce;}_0x4d0179[_0xf5f2('0x1e')](_0x5132cb);return _0x4d0179[_0xf5f2('0x25')]('Content-Range',_0xb021dd+'-'+_0x583e41+'/'+_0x33669e)[_0xf5f2('0x20')](_0x386342);}return null;};}function patchUpdates(_0x42376){return function(_0x5b72fa){try{jsonpatch[_0xf5f2('0x26')](_0x5b72fa,_0x42376,!![]);}catch(_0x1b4018){return BPromise[_0xf5f2('0x27')](_0x1b4018);}return _0x5b72fa['save']();};}function saveUpdates(_0x542742,_0xf4982b){return function(_0x5a1158){if(_0x5a1158){return _0x5a1158[_0xf5f2('0x28')](_0x542742)['then'](function(_0x179819){return _0x179819;});}return null;};}function removeEntity(_0xe1fe97,_0x2e04db){return function(_0x3bdf6f){if(_0x3bdf6f){return _0x3bdf6f[_0xf5f2('0x29')]()[_0xf5f2('0x2a')](function(){_0xe1fe97[_0xf5f2('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x231954,_0x27c094){return function(_0x4975fd){if(!_0x4975fd){_0x231954[_0xf5f2('0x1d')](0x194);}return _0x4975fd;};}function handleError(_0xb0acb3,_0x3954e6){_0x3954e6=_0x3954e6||0x1f4;return function(_0x1d6c9c){logger[_0xf5f2('0x2b')](_0x1d6c9c[_0xf5f2('0x2c')]);if(_0x1d6c9c[_0xf5f2('0x2d')]){delete _0x1d6c9c[_0xf5f2('0x2d')];}_0xb0acb3[_0xf5f2('0x1e')](_0x3954e6)[_0xf5f2('0x2e')](_0x1d6c9c);};}exports[_0xf5f2('0x2f')]=function(_0x4fdcdf,_0x3fe7b1){var _0x507245={},_0x567d9f={},_0x4edd6a={'count':0x0,'rows':[]};var _0x4636c9=_['map'](db[_0xf5f2('0x30')]['rawAttributes'],function(_0x5bdebc){return{'name':_0x5bdebc[_0xf5f2('0x31')],'type':_0x5bdebc[_0xf5f2('0x32')][_0xf5f2('0x33')]};});_0x567d9f[_0xf5f2('0x34')]=_[_0xf5f2('0x35')](_0x4636c9,_0xf5f2('0x2d'));_0x567d9f[_0xf5f2('0x36')]=_[_0xf5f2('0x37')](_0x4fdcdf[_0xf5f2('0x36')]);_0x567d9f[_0xf5f2('0x38')]=_[_0xf5f2('0x39')](_0x567d9f[_0xf5f2('0x34')],_0x567d9f[_0xf5f2('0x36')]);_0x507245[_0xf5f2('0x3a')]=_['intersection'](_0x567d9f[_0xf5f2('0x34')],qs[_0xf5f2('0x3b')](_0x4fdcdf['query'][_0xf5f2('0x3b')]));_0x507245[_0xf5f2('0x3a')]=_0x507245['attributes'][_0xf5f2('0x3c')]?_0x507245[_0xf5f2('0x3a')]:_0x567d9f['model'];if(!_0x4fdcdf[_0xf5f2('0x36')]['hasOwnProperty']('nolimit')){_0x507245['limit']=qs['limit'](_0x4fdcdf[_0xf5f2('0x36')][_0xf5f2('0x23')]);_0x507245[_0xf5f2('0x21')]=qs[_0xf5f2('0x21')](_0x4fdcdf[_0xf5f2('0x36')][_0xf5f2('0x21')]);}_0x507245[_0xf5f2('0x3d')]=qs[_0xf5f2('0x3e')](_0x4fdcdf[_0xf5f2('0x36')][_0xf5f2('0x3e')]);_0x507245['where']=qs['filters'](_['pick'](_0x4fdcdf['query'],_0x567d9f[_0xf5f2('0x38')]),_0x4636c9);if(_0x4fdcdf[_0xf5f2('0x36')][_0xf5f2('0x3f')]){_0x507245[_0xf5f2('0x40')]=_['merge'](_0x507245['where'],{'$or':_[_0xf5f2('0x35')](_0x4636c9,function(_0x3d7684){if(_0x3d7684[_0xf5f2('0x32')]!==_0xf5f2('0x41')){var _0x152fa4={};_0x152fa4[_0x3d7684[_0xf5f2('0x2d')]]={'$like':'%'+_0x4fdcdf[_0xf5f2('0x36')][_0xf5f2('0x3f')]+'%'};return _0x152fa4;}})});}_0x507245=_[_0xf5f2('0x42')]({},_0x507245,_0x4fdcdf['options']);var _0x2617bc={'where':_0x507245[_0xf5f2('0x40')]};return db[_0xf5f2('0x30')][_0xf5f2('0x24')](_0x2617bc)[_0xf5f2('0x2a')](function(_0x21577e){_0x4edd6a[_0xf5f2('0x24')]=_0x21577e;if(_0x4fdcdf[_0xf5f2('0x36')][_0xf5f2('0x43')]){_0x507245['include']=[{'all':!![]}];}return db[_0xf5f2('0x30')][_0xf5f2('0x44')](_0x507245);})['then'](function(_0x13fb65){_0x4edd6a['rows']=_0x13fb65;return _0x4edd6a;})[_0xf5f2('0x2a')](respondWithFilteredResult(_0x3fe7b1,_0x507245))['catch'](handleError(_0x3fe7b1,null));};exports['show']=function(_0x35e259,_0x4e3da0){var _0x4543f1={'raw':!![],'where':{'id':_0x35e259[_0xf5f2('0x45')]['id']}},_0x3749b9={};_0x3749b9[_0xf5f2('0x34')]=_[_0xf5f2('0x37')](db[_0xf5f2('0x30')]['rawAttributes']);_0x3749b9[_0xf5f2('0x36')]=_[_0xf5f2('0x37')](_0x35e259[_0xf5f2('0x36')]);_0x3749b9[_0xf5f2('0x38')]=_[_0xf5f2('0x39')](_0x3749b9['model'],_0x3749b9[_0xf5f2('0x36')]);_0x4543f1[_0xf5f2('0x3a')]=_[_0xf5f2('0x39')](_0x3749b9[_0xf5f2('0x34')],qs[_0xf5f2('0x3b')](_0x35e259[_0xf5f2('0x36')][_0xf5f2('0x3b')]));_0x4543f1[_0xf5f2('0x3a')]=_0x4543f1[_0xf5f2('0x3a')]['length']?_0x4543f1[_0xf5f2('0x3a')]:_0x3749b9[_0xf5f2('0x34')];if(_0x35e259[_0xf5f2('0x36')][_0xf5f2('0x43')]){_0x4543f1[_0xf5f2('0x46')]=[{'all':!![]}];}_0x4543f1=_[_0xf5f2('0x42')]({},_0x4543f1,_0x35e259[_0xf5f2('0x47')]);return db[_0xf5f2('0x30')][_0xf5f2('0x48')](_0x4543f1)[_0xf5f2('0x2a')](handleEntityNotFound(_0x4e3da0,null))['then'](respondWithResult(_0x4e3da0,null))[_0xf5f2('0x49')](handleError(_0x4e3da0,null));};exports['create']=function(_0x56c43f,_0x39f1d0){return db[_0xf5f2('0x30')][_0xf5f2('0x4a')](_0x56c43f[_0xf5f2('0x4b')],{})[_0xf5f2('0x2a')](respondWithResult(_0x39f1d0,0xc9))[_0xf5f2('0x49')](handleError(_0x39f1d0,null));};exports[_0xf5f2('0x28')]=function(_0x4f2d5b,_0x4f5c43){if(_0x4f2d5b[_0xf5f2('0x4b')]['id']){delete _0x4f2d5b['body']['id'];}return db[_0xf5f2('0x30')][_0xf5f2('0x48')]({'where':{'id':_0x4f2d5b[_0xf5f2('0x45')]['id']}})[_0xf5f2('0x2a')](handleEntityNotFound(_0x4f5c43,null))[_0xf5f2('0x2a')](saveUpdates(_0x4f2d5b[_0xf5f2('0x4b')],null))['then'](respondWithResult(_0x4f5c43,null))[_0xf5f2('0x49')](handleError(_0x4f5c43,null));};exports[_0xf5f2('0x29')]=function(_0x285a4b,_0x295410){return db[_0xf5f2('0x30')][_0xf5f2('0x48')]({'where':{'id':_0x285a4b[_0xf5f2('0x45')]['id']}})[_0xf5f2('0x2a')](handleEntityNotFound(_0x295410,null))[_0xf5f2('0x2a')](removeEntity(_0x295410,null))[_0xf5f2('0x49')](handleError(_0x295410,null));};exports[_0xf5f2('0x4c')]=function(_0x50fe28,_0x32020c){return db['ChatGroup']['describe']()[_0xf5f2('0x2a')](respondWithResult(_0x32020c,null))[_0xf5f2('0x49')](handleError(_0x32020c,null));};exports['getUnread']=function(_0x2d24ad,_0xa246ea,_0x243cee){return db[_0xf5f2('0x4d')][_0xf5f2('0x24')]({'where':{'ChatGroupId':_0x2d24ad[_0xf5f2('0x45')]['id'],'ToId':_0x2d24ad[_0xf5f2('0x4e')]['id'],'read':![]}})[_0xf5f2('0x2a')](function(_0x3825ef){return{'id':_['toInteger'](_0x2d24ad[_0xf5f2('0x45')]['id']),'count':_0x3825ef};})[_0xf5f2('0x2a')](respondWithResult(_0xa246ea,null))[_0xf5f2('0x49')](handleError(_0xa246ea,null));};exports[_0xf5f2('0x4f')]=function(_0x3b2510,_0x3eb64f,_0x167756){return db[_0xf5f2('0x30')][_0xf5f2('0x48')]({'where':{'id':_0x3b2510[_0xf5f2('0x45')]['id']}})['then'](handleEntityNotFound(_0x3eb64f,null))['then'](function(_0x31b6f9){if(_0x31b6f9){return _0x31b6f9[_0xf5f2('0x4f')](_0x3b2510[_0xf5f2('0x4b')]['ids'],_[_0xf5f2('0x50')](_0x3b2510['body'],[_0xf5f2('0x51'),'id'])||{});}})[_0xf5f2('0x2a')](respondWithResult(_0x3eb64f,null))[_0xf5f2('0x49')](handleError(_0x3eb64f,null));};exports[_0xf5f2('0x52')]=function(_0x1663f0,_0x39e912,_0x5f2565){var _0x5ac9c4={};var _0x120e34={};var _0x5089b7;var _0x3e24d5;return db[_0xf5f2('0x30')][_0xf5f2('0x53')]({'where':{'id':_0x1663f0[_0xf5f2('0x45')]['id']}})[_0xf5f2('0x2a')](handleEntityNotFound(_0x39e912,null))[_0xf5f2('0x2a')](function(_0x77dbf6){if(_0x77dbf6){_0x5089b7=_0x77dbf6;_0x120e34[_0xf5f2('0x34')]=_[_0xf5f2('0x37')](db[_0xf5f2('0x54')][_0xf5f2('0x55')]);_0x120e34[_0xf5f2('0x36')]=_[_0xf5f2('0x37')](_0x1663f0[_0xf5f2('0x36')]);_0x120e34['filters']=_['intersection'](_0x120e34['model'],_0x120e34[_0xf5f2('0x36')]);_0x5ac9c4[_0xf5f2('0x3a')]=_[_0xf5f2('0x39')](_0x120e34[_0xf5f2('0x34')],qs[_0xf5f2('0x3b')](_0x1663f0['query'][_0xf5f2('0x3b')]));_0x5ac9c4[_0xf5f2('0x3a')]=_0x5ac9c4[_0xf5f2('0x3a')][_0xf5f2('0x3c')]?_0x5ac9c4['attributes']:_0x120e34[_0xf5f2('0x34')];_0x5ac9c4[_0xf5f2('0x3d')]=qs[_0xf5f2('0x3e')](_0x1663f0[_0xf5f2('0x36')][_0xf5f2('0x3e')]);_0x5ac9c4[_0xf5f2('0x40')]=qs[_0xf5f2('0x38')](_['pick'](_0x1663f0[_0xf5f2('0x36')],_0x120e34[_0xf5f2('0x38')]));if(_0x1663f0[_0xf5f2('0x36')]['filter']){_0x5ac9c4['where']=_[_0xf5f2('0x42')](_0x5ac9c4['where'],{'$or':_['map'](_0x5ac9c4[_0xf5f2('0x3a')],function(_0x14767f){var _0xd69df7={};_0xd69df7[_0x14767f]={'$like':'%'+_0x1663f0[_0xf5f2('0x36')][_0xf5f2('0x3f')]+'%'};return _0xd69df7;})});}_0x5ac9c4=_[_0xf5f2('0x42')]({},_0x5ac9c4,_0x1663f0[_0xf5f2('0x47')]);return _0x5089b7[_0xf5f2('0x52')](_0x5ac9c4);}})[_0xf5f2('0x2a')](function(_0x5acffc){if(_0x5acffc){_0x3e24d5=_0x5acffc[_0xf5f2('0x3c')];if(!_0x1663f0['query'][_0xf5f2('0x56')](_0xf5f2('0x57'))){_0x5ac9c4['limit']=qs[_0xf5f2('0x23')](_0x1663f0['query'][_0xf5f2('0x23')]);_0x5ac9c4[_0xf5f2('0x21')]=qs[_0xf5f2('0x21')](_0x1663f0[_0xf5f2('0x36')][_0xf5f2('0x21')]);}return _0x5089b7[_0xf5f2('0x52')](_0x5ac9c4);}})[_0xf5f2('0x2a')](function(_0x3919c1){if(_0x3919c1){return _0x3919c1?{'count':_0x3e24d5,'rows':_0x3919c1}:null;}})['then'](respondWithResult(_0x39e912,null))[_0xf5f2('0x49')](handleError(_0x39e912,null));};exports[_0xf5f2('0x58')]=function(_0x178ab1,_0x461d0a,_0x36f725){return db[_0xf5f2('0x30')][_0xf5f2('0x48')]({'where':{'id':_0x178ab1['params']['id']}})[_0xf5f2('0x2a')](handleEntityNotFound(_0x461d0a,null))[_0xf5f2('0x2a')](function(_0x29735d){if(_0x29735d){return _0x29735d[_0xf5f2('0x58')](_0x178ab1[_0xf5f2('0x36')]['ids']);}})['then'](respondWithStatusCode(_0x461d0a,null))[_0xf5f2('0x49')](handleError(_0x461d0a,null));};exports['addMessage']=function(_0x15b369,_0x330cb5,_0x600e24){if(_0x15b369[_0xf5f2('0x4b')]['id']){delete _0x15b369[_0xf5f2('0x4b')]['id'];}return db[_0xf5f2('0x30')][_0xf5f2('0x48')]({'where':{'id':_0x15b369['params']['id']}})[_0xf5f2('0x2a')](handleEntityNotFound(_0x330cb5,null))[_0xf5f2('0x2a')](function(_0x76e44e){if(_0x76e44e){_0x15b369[_0xf5f2('0x4b')]['ChatGroupId']=_0x76e44e['id'];return db[_0xf5f2('0x4d')]['create'](_0x15b369[_0xf5f2('0x4b')]);}})[_0xf5f2('0x2a')](respondWithResult(_0x330cb5,null))[_0xf5f2('0x49')](handleError(_0x330cb5,null));};exports[_0xf5f2('0x59')]=function(_0x5c105f,_0x1b827b,_0x117784){var _0x3eb0dd={};var _0x39d404={};var _0x5ce8dc;var _0x1edc4a;return db['ChatGroup'][_0xf5f2('0x53')]({'where':{'id':_0x5c105f[_0xf5f2('0x45')]['id']}})[_0xf5f2('0x2a')](handleEntityNotFound(_0x1b827b,null))['then'](function(_0x4bc6aa){if(_0x4bc6aa){_0x5ce8dc=_0x4bc6aa;_0x39d404[_0xf5f2('0x34')]=_[_0xf5f2('0x37')](db['ChatInternalMessage'][_0xf5f2('0x55')]);_0x39d404['query']=_[_0xf5f2('0x37')](_0x5c105f['query']);_0x39d404['filters']=_['intersection'](_0x39d404[_0xf5f2('0x34')],_0x39d404[_0xf5f2('0x36')]);_0x3eb0dd['attributes']=_[_0xf5f2('0x39')](_0x39d404[_0xf5f2('0x34')],qs['fields'](_0x5c105f[_0xf5f2('0x36')]['fields']));_0x3eb0dd[_0xf5f2('0x3a')]=_0x3eb0dd['attributes'][_0xf5f2('0x3c')]?_0x3eb0dd[_0xf5f2('0x3a')]:_0x39d404[_0xf5f2('0x34')];_0x3eb0dd[_0xf5f2('0x3d')]=qs['sort'](_0x5c105f[_0xf5f2('0x36')][_0xf5f2('0x3e')]);_0x3eb0dd[_0xf5f2('0x40')]=qs[_0xf5f2('0x38')](_[_0xf5f2('0x5a')](_0x5c105f[_0xf5f2('0x36')],_0x39d404[_0xf5f2('0x38')]));if(_0x5c105f[_0xf5f2('0x36')][_0xf5f2('0x3f')]){_0x3eb0dd[_0xf5f2('0x40')]=_[_0xf5f2('0x42')](_0x3eb0dd[_0xf5f2('0x40')],{'$or':_[_0xf5f2('0x35')](_0x3eb0dd[_0xf5f2('0x3a')],function(_0x277a51){var _0x5673e3={};_0x5673e3[_0x277a51]={'$like':'%'+_0x5c105f[_0xf5f2('0x36')]['filter']+'%'};return _0x5673e3;})});}if(_0x5c105f[_0xf5f2('0x36')][_0xf5f2('0x5b')]){var _0x44003c=_0x5c105f[_0xf5f2('0x36')][_0xf5f2('0x5b')][_0xf5f2('0x5c')](',');var _0x3f1f72={};_0x3f1f72[_0x44003c[0x0]]={'$gte':moment(_0x44003c[0x1])[_0xf5f2('0x5d')]('YYYY-MM-DD\x20HH:mm:ss')};_0x3eb0dd[_0xf5f2('0x40')]=_[_0xf5f2('0x42')](_0x3eb0dd[_0xf5f2('0x40')],_0x3f1f72);}_0x3eb0dd=_[_0xf5f2('0x42')]({},_0x3eb0dd,_0x5c105f[_0xf5f2('0x47')]);return _0x5ce8dc[_0xf5f2('0x59')](_0x3eb0dd);}})['then'](function(_0x5068b0){if(_0x5068b0){_0x1edc4a=_0x5068b0[_0xf5f2('0x3c')];if(!_0x5c105f[_0xf5f2('0x36')][_0xf5f2('0x56')](_0xf5f2('0x57'))){_0x3eb0dd['limit']=qs[_0xf5f2('0x23')](_0x5c105f[_0xf5f2('0x36')]['limit']);_0x3eb0dd['offset']=qs[_0xf5f2('0x21')](_0x5c105f[_0xf5f2('0x36')][_0xf5f2('0x21')]);}return _0x5ce8dc[_0xf5f2('0x59')](_0x3eb0dd);}})[_0xf5f2('0x2a')](function(_0x2f2fee){if(_0x2f2fee){return _0x2f2fee?{'count':_0x1edc4a,'rows':_0x2f2fee}:null;}})[_0xf5f2('0x2a')](respondWithResult(_0x1b827b,null))[_0xf5f2('0x49')](handleError(_0x1b827b,null));};
\ No newline at end of file
+var _0xb2f1=['status','end','json','undefined','limit','offset','set','Content-Range','apply','reject','save','update','then','error','name','index','ChatGroup','rawAttributes','fieldName','type','key','model','map','keys','query','filters','intersection','attributes','length','hasOwnProperty','sort','where','filter','merge','options','count','includeAll','include','findAll','rows','catch','show','params','fields','find','create','body','destroy','describe','getUnread','ChatInternalMessage','addMembers','ids','getMembers','nolimit','removeMembers','ChatGroupId','getMessages','findOne','order','$gte','split','YYYY-MM-DD\x20HH:mm:ss','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./chatGroup.socket','register','sendStatus'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xb2f1,0x1c3));var _0x1b2f=function(_0x45147a,_0x62756c){_0x45147a=_0x45147a-0x0;var _0x291bcd=_0xb2f1[_0x45147a];return _0x291bcd;};'use strict';var emlformat=require(_0x1b2f('0x0'));var rimraf=require(_0x1b2f('0x1'));var zipdir=require(_0x1b2f('0x2'));var jsonpatch=require(_0x1b2f('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x1b2f('0x4'));var Mustache=require(_0x1b2f('0x5'));var util=require(_0x1b2f('0x6'));var path=require(_0x1b2f('0x7'));var sox=require(_0x1b2f('0x8'));var csv=require('to-csv');var ejs=require(_0x1b2f('0x9'));var fs=require('fs');var fs_extra=require(_0x1b2f('0xa'));var _=require(_0x1b2f('0xb'));var squel=require('squel');var crypto=require(_0x1b2f('0xc'));var jsforce=require(_0x1b2f('0xd'));var deskjs=require(_0x1b2f('0xe'));var toCsv=require(_0x1b2f('0xf'));var querystring=require(_0x1b2f('0x10'));var Papa=require(_0x1b2f('0x11'));var Redis=require(_0x1b2f('0x12'));var authService=require(_0x1b2f('0x13'));var qs=require(_0x1b2f('0x14'));var as=require(_0x1b2f('0x15'));var hardwareService=require(_0x1b2f('0x16'));var logger=require('../../config/logger')(_0x1b2f('0x17'));var utils=require(_0x1b2f('0x18'));var config=require(_0x1b2f('0x19'));var licenseUtil=require(_0x1b2f('0x1a'));var db=require(_0x1b2f('0x1b'))['db'];config[_0x1b2f('0x1c')]=_[_0x1b2f('0x1d')](config[_0x1b2f('0x1c')],{'host':_0x1b2f('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x1b2f('0x1c')]));require(_0x1b2f('0x1f'))[_0x1b2f('0x20')](socket);function respondWithStatusCode(_0x597228,_0x47b710){_0x47b710=_0x47b710||0xcc;return function(_0x280d88){if(_0x280d88){return _0x597228[_0x1b2f('0x21')](_0x47b710);}return _0x597228[_0x1b2f('0x22')](_0x47b710)[_0x1b2f('0x23')]();};}function respondWithResult(_0x1baccd,_0x2462e7){_0x2462e7=_0x2462e7||0xc8;return function(_0x2615a0){if(_0x2615a0){return _0x1baccd['status'](_0x2462e7)[_0x1b2f('0x24')](_0x2615a0);}};}function respondWithFilteredResult(_0x9b280e,_0x58be7a){return function(_0x4df7a0){if(_0x4df7a0){var _0xa08ce9=typeof _0x58be7a['offset']===_0x1b2f('0x25')&&typeof _0x58be7a[_0x1b2f('0x26')]==='undefined';var _0x332e31=_0x4df7a0['count'];var _0x2589e4=_0xa08ce9?0x0:_0x58be7a[_0x1b2f('0x27')];var _0x1660a6=_0xa08ce9?_0x4df7a0['count']:_0x58be7a[_0x1b2f('0x27')]+_0x58be7a[_0x1b2f('0x26')];var _0x138b1a;if(_0x1660a6>=_0x332e31){_0x1660a6=_0x332e31;_0x138b1a=0xc8;}else{_0x138b1a=0xce;}_0x9b280e[_0x1b2f('0x22')](_0x138b1a);return _0x9b280e[_0x1b2f('0x28')](_0x1b2f('0x29'),_0x2589e4+'-'+_0x1660a6+'/'+_0x332e31)[_0x1b2f('0x24')](_0x4df7a0);}return null;};}function patchUpdates(_0x350a1f){return function(_0x197600){try{jsonpatch[_0x1b2f('0x2a')](_0x197600,_0x350a1f,!![]);}catch(_0x307f10){return BPromise[_0x1b2f('0x2b')](_0x307f10);}return _0x197600[_0x1b2f('0x2c')]();};}function saveUpdates(_0x127d30,_0x9c085a){return function(_0x2074c4){if(_0x2074c4){return _0x2074c4[_0x1b2f('0x2d')](_0x127d30)[_0x1b2f('0x2e')](function(_0x566f61){return _0x566f61;});}return null;};}function removeEntity(_0x8705a1,_0x297572){return function(_0x2862ce){if(_0x2862ce){return _0x2862ce['destroy']()[_0x1b2f('0x2e')](function(){_0x8705a1['status'](0xcc)[_0x1b2f('0x23')]();});}};}function handleEntityNotFound(_0x35a7ac,_0x2eee62){return function(_0x465322){if(!_0x465322){_0x35a7ac[_0x1b2f('0x21')](0x194);}return _0x465322;};}function handleError(_0x4a7bcd,_0x288667){_0x288667=_0x288667||0x1f4;return function(_0x2b3920){logger[_0x1b2f('0x2f')](_0x2b3920['stack']);if(_0x2b3920['name']){delete _0x2b3920[_0x1b2f('0x30')];}_0x4a7bcd[_0x1b2f('0x22')](_0x288667)['send'](_0x2b3920);};}exports[_0x1b2f('0x31')]=function(_0x553bcd,_0x1574c3){var _0x3eb9f={},_0x49c509={},_0x1a2ded={'count':0x0,'rows':[]};var _0x4a1714=_['map'](db[_0x1b2f('0x32')][_0x1b2f('0x33')],function(_0x127ed7){return{'name':_0x127ed7[_0x1b2f('0x34')],'type':_0x127ed7[_0x1b2f('0x35')][_0x1b2f('0x36')]};});_0x49c509[_0x1b2f('0x37')]=_[_0x1b2f('0x38')](_0x4a1714,_0x1b2f('0x30'));_0x49c509['query']=_[_0x1b2f('0x39')](_0x553bcd[_0x1b2f('0x3a')]);_0x49c509[_0x1b2f('0x3b')]=_[_0x1b2f('0x3c')](_0x49c509['model'],_0x49c509[_0x1b2f('0x3a')]);_0x3eb9f['attributes']=_[_0x1b2f('0x3c')](_0x49c509[_0x1b2f('0x37')],qs['fields'](_0x553bcd[_0x1b2f('0x3a')]['fields']));_0x3eb9f[_0x1b2f('0x3d')]=_0x3eb9f[_0x1b2f('0x3d')][_0x1b2f('0x3e')]?_0x3eb9f['attributes']:_0x49c509['model'];if(!_0x553bcd['query'][_0x1b2f('0x3f')]('nolimit')){_0x3eb9f['limit']=qs[_0x1b2f('0x26')](_0x553bcd[_0x1b2f('0x3a')]['limit']);_0x3eb9f[_0x1b2f('0x27')]=qs[_0x1b2f('0x27')](_0x553bcd[_0x1b2f('0x3a')]['offset']);}_0x3eb9f['order']=qs[_0x1b2f('0x40')](_0x553bcd[_0x1b2f('0x3a')][_0x1b2f('0x40')]);_0x3eb9f[_0x1b2f('0x41')]=qs[_0x1b2f('0x3b')](_['pick'](_0x553bcd['query'],_0x49c509[_0x1b2f('0x3b')]),_0x4a1714);if(_0x553bcd['query'][_0x1b2f('0x42')]){_0x3eb9f[_0x1b2f('0x41')]=_[_0x1b2f('0x43')](_0x3eb9f[_0x1b2f('0x41')],{'$or':_[_0x1b2f('0x38')](_0x4a1714,function(_0x140fe9){if(_0x140fe9[_0x1b2f('0x35')]!=='VIRTUAL'){var _0x31870c={};_0x31870c[_0x140fe9[_0x1b2f('0x30')]]={'$like':'%'+_0x553bcd['query']['filter']+'%'};return _0x31870c;}})});}_0x3eb9f=_[_0x1b2f('0x43')]({},_0x3eb9f,_0x553bcd[_0x1b2f('0x44')]);var _0x5e12f7={'where':_0x3eb9f['where']};return db[_0x1b2f('0x32')][_0x1b2f('0x45')](_0x5e12f7)[_0x1b2f('0x2e')](function(_0x5c6b6d){_0x1a2ded[_0x1b2f('0x45')]=_0x5c6b6d;if(_0x553bcd['query'][_0x1b2f('0x46')]){_0x3eb9f[_0x1b2f('0x47')]=[{'all':!![]}];}return db[_0x1b2f('0x32')][_0x1b2f('0x48')](_0x3eb9f);})[_0x1b2f('0x2e')](function(_0x2f4eb5){_0x1a2ded[_0x1b2f('0x49')]=_0x2f4eb5;return _0x1a2ded;})[_0x1b2f('0x2e')](respondWithFilteredResult(_0x1574c3,_0x3eb9f))[_0x1b2f('0x4a')](handleError(_0x1574c3,null));};exports[_0x1b2f('0x4b')]=function(_0xb4ef6a,_0x559455){var _0x45de60={'raw':!![],'where':{'id':_0xb4ef6a[_0x1b2f('0x4c')]['id']}},_0x1f4eec={};_0x1f4eec[_0x1b2f('0x37')]=_[_0x1b2f('0x39')](db[_0x1b2f('0x32')]['rawAttributes']);_0x1f4eec[_0x1b2f('0x3a')]=_['keys'](_0xb4ef6a[_0x1b2f('0x3a')]);_0x1f4eec[_0x1b2f('0x3b')]=_[_0x1b2f('0x3c')](_0x1f4eec[_0x1b2f('0x37')],_0x1f4eec[_0x1b2f('0x3a')]);_0x45de60[_0x1b2f('0x3d')]=_[_0x1b2f('0x3c')](_0x1f4eec[_0x1b2f('0x37')],qs[_0x1b2f('0x4d')](_0xb4ef6a[_0x1b2f('0x3a')][_0x1b2f('0x4d')]));_0x45de60[_0x1b2f('0x3d')]=_0x45de60[_0x1b2f('0x3d')]['length']?_0x45de60[_0x1b2f('0x3d')]:_0x1f4eec[_0x1b2f('0x37')];if(_0xb4ef6a[_0x1b2f('0x3a')][_0x1b2f('0x46')]){_0x45de60[_0x1b2f('0x47')]=[{'all':!![]}];}_0x45de60=_[_0x1b2f('0x43')]({},_0x45de60,_0xb4ef6a[_0x1b2f('0x44')]);return db[_0x1b2f('0x32')][_0x1b2f('0x4e')](_0x45de60)[_0x1b2f('0x2e')](handleEntityNotFound(_0x559455,null))[_0x1b2f('0x2e')](respondWithResult(_0x559455,null))['catch'](handleError(_0x559455,null));};exports[_0x1b2f('0x4f')]=function(_0x857a04,_0x4a96a9){return db[_0x1b2f('0x32')][_0x1b2f('0x4f')](_0x857a04[_0x1b2f('0x50')],{})[_0x1b2f('0x2e')](respondWithResult(_0x4a96a9,0xc9))['catch'](handleError(_0x4a96a9,null));};exports['update']=function(_0x3cf38a,_0x4ee9da){if(_0x3cf38a['body']['id']){delete _0x3cf38a[_0x1b2f('0x50')]['id'];}return db[_0x1b2f('0x32')]['find']({'where':{'id':_0x3cf38a[_0x1b2f('0x4c')]['id']}})[_0x1b2f('0x2e')](handleEntityNotFound(_0x4ee9da,null))[_0x1b2f('0x2e')](saveUpdates(_0x3cf38a[_0x1b2f('0x50')],null))['then'](respondWithResult(_0x4ee9da,null))[_0x1b2f('0x4a')](handleError(_0x4ee9da,null));};exports[_0x1b2f('0x51')]=function(_0xa0133,_0x3aa12d){return db['ChatGroup'][_0x1b2f('0x4e')]({'where':{'id':_0xa0133[_0x1b2f('0x4c')]['id']}})[_0x1b2f('0x2e')](handleEntityNotFound(_0x3aa12d,null))['then'](removeEntity(_0x3aa12d,null))[_0x1b2f('0x4a')](handleError(_0x3aa12d,null));};exports[_0x1b2f('0x52')]=function(_0x37c985,_0x101df5){return db[_0x1b2f('0x32')][_0x1b2f('0x52')]()[_0x1b2f('0x2e')](respondWithResult(_0x101df5,null))[_0x1b2f('0x4a')](handleError(_0x101df5,null));};exports[_0x1b2f('0x53')]=function(_0x25865,_0x1a1d0e,_0x25ebcc){return db[_0x1b2f('0x54')]['count']({'where':{'ChatGroupId':_0x25865['params']['id'],'ToId':_0x25865['user']['id'],'read':![]}})[_0x1b2f('0x2e')](function(_0x1e483f){return{'id':_['toInteger'](_0x25865['params']['id']),'count':_0x1e483f};})[_0x1b2f('0x2e')](respondWithResult(_0x1a1d0e,null))[_0x1b2f('0x4a')](handleError(_0x1a1d0e,null));};exports[_0x1b2f('0x55')]=function(_0x322c3c,_0x276c9c,_0x2ac9e7){return db[_0x1b2f('0x32')][_0x1b2f('0x4e')]({'where':{'id':_0x322c3c[_0x1b2f('0x4c')]['id']}})['then'](handleEntityNotFound(_0x276c9c,null))[_0x1b2f('0x2e')](function(_0x519ce5){if(_0x519ce5){return _0x519ce5[_0x1b2f('0x55')](_0x322c3c['body'][_0x1b2f('0x56')],_['omit'](_0x322c3c[_0x1b2f('0x50')],[_0x1b2f('0x56'),'id'])||{});}})['then'](respondWithResult(_0x276c9c,null))[_0x1b2f('0x4a')](handleError(_0x276c9c,null));};exports[_0x1b2f('0x57')]=function(_0x49c10b,_0x392020,_0xb3b3a2){var _0x40b4e7={};var _0x50e41e={};var _0x1a3440;var _0xad326a;return db[_0x1b2f('0x32')]['findOne']({'where':{'id':_0x49c10b['params']['id']}})[_0x1b2f('0x2e')](handleEntityNotFound(_0x392020,null))[_0x1b2f('0x2e')](function(_0x4828c6){if(_0x4828c6){_0x1a3440=_0x4828c6;_0x50e41e[_0x1b2f('0x37')]=_[_0x1b2f('0x39')](db['User'][_0x1b2f('0x33')]);_0x50e41e[_0x1b2f('0x3a')]=_[_0x1b2f('0x39')](_0x49c10b[_0x1b2f('0x3a')]);_0x50e41e[_0x1b2f('0x3b')]=_[_0x1b2f('0x3c')](_0x50e41e[_0x1b2f('0x37')],_0x50e41e[_0x1b2f('0x3a')]);_0x40b4e7[_0x1b2f('0x3d')]=_[_0x1b2f('0x3c')](_0x50e41e[_0x1b2f('0x37')],qs[_0x1b2f('0x4d')](_0x49c10b[_0x1b2f('0x3a')][_0x1b2f('0x4d')]));_0x40b4e7[_0x1b2f('0x3d')]=_0x40b4e7['attributes'][_0x1b2f('0x3e')]?_0x40b4e7[_0x1b2f('0x3d')]:_0x50e41e[_0x1b2f('0x37')];_0x40b4e7['order']=qs['sort'](_0x49c10b[_0x1b2f('0x3a')]['sort']);_0x40b4e7[_0x1b2f('0x41')]=qs[_0x1b2f('0x3b')](_['pick'](_0x49c10b[_0x1b2f('0x3a')],_0x50e41e[_0x1b2f('0x3b')]));if(_0x49c10b[_0x1b2f('0x3a')][_0x1b2f('0x42')]){_0x40b4e7[_0x1b2f('0x41')]=_[_0x1b2f('0x43')](_0x40b4e7[_0x1b2f('0x41')],{'$or':_[_0x1b2f('0x38')](_0x40b4e7[_0x1b2f('0x3d')],function(_0xa4d658){var _0x18e515={};_0x18e515[_0xa4d658]={'$like':'%'+_0x49c10b[_0x1b2f('0x3a')][_0x1b2f('0x42')]+'%'};return _0x18e515;})});}_0x40b4e7=_[_0x1b2f('0x43')]({},_0x40b4e7,_0x49c10b[_0x1b2f('0x44')]);return _0x1a3440['getMembers'](_0x40b4e7);}})['then'](function(_0x472c44){if(_0x472c44){_0xad326a=_0x472c44[_0x1b2f('0x3e')];if(!_0x49c10b[_0x1b2f('0x3a')][_0x1b2f('0x3f')](_0x1b2f('0x58'))){_0x40b4e7[_0x1b2f('0x26')]=qs[_0x1b2f('0x26')](_0x49c10b[_0x1b2f('0x3a')]['limit']);_0x40b4e7['offset']=qs['offset'](_0x49c10b[_0x1b2f('0x3a')][_0x1b2f('0x27')]);}return _0x1a3440[_0x1b2f('0x57')](_0x40b4e7);}})[_0x1b2f('0x2e')](function(_0xf54e11){if(_0xf54e11){return _0xf54e11?{'count':_0xad326a,'rows':_0xf54e11}:null;}})[_0x1b2f('0x2e')](respondWithResult(_0x392020,null))['catch'](handleError(_0x392020,null));};exports['removeMembers']=function(_0x22ab5b,_0x1267b1,_0x248598){return db[_0x1b2f('0x32')][_0x1b2f('0x4e')]({'where':{'id':_0x22ab5b['params']['id']}})[_0x1b2f('0x2e')](handleEntityNotFound(_0x1267b1,null))['then'](function(_0x197de5){if(_0x197de5){return _0x197de5[_0x1b2f('0x59')](_0x22ab5b[_0x1b2f('0x3a')][_0x1b2f('0x56')]);}})['then'](respondWithStatusCode(_0x1267b1,null))[_0x1b2f('0x4a')](handleError(_0x1267b1,null));};exports['addMessage']=function(_0x25def1,_0x363945,_0x1c9f76){if(_0x25def1[_0x1b2f('0x50')]['id']){delete _0x25def1['body']['id'];}return db[_0x1b2f('0x32')]['find']({'where':{'id':_0x25def1[_0x1b2f('0x4c')]['id']}})[_0x1b2f('0x2e')](handleEntityNotFound(_0x363945,null))[_0x1b2f('0x2e')](function(_0x4fcb65){if(_0x4fcb65){_0x25def1[_0x1b2f('0x50')][_0x1b2f('0x5a')]=_0x4fcb65['id'];return db['ChatInternalMessage'][_0x1b2f('0x4f')](_0x25def1[_0x1b2f('0x50')]);}})[_0x1b2f('0x2e')](respondWithResult(_0x363945,null))[_0x1b2f('0x4a')](handleError(_0x363945,null));};exports[_0x1b2f('0x5b')]=function(_0x42a7ca,_0x9fb548,_0x412a40){var _0x1aa1b1={};var _0x269dda={};var _0x4a5367;var _0xcdba70;return db['ChatGroup'][_0x1b2f('0x5c')]({'where':{'id':_0x42a7ca[_0x1b2f('0x4c')]['id']}})[_0x1b2f('0x2e')](handleEntityNotFound(_0x9fb548,null))[_0x1b2f('0x2e')](function(_0x5e8df6){if(_0x5e8df6){_0x4a5367=_0x5e8df6;_0x269dda[_0x1b2f('0x37')]=_[_0x1b2f('0x39')](db[_0x1b2f('0x54')][_0x1b2f('0x33')]);_0x269dda[_0x1b2f('0x3a')]=_[_0x1b2f('0x39')](_0x42a7ca[_0x1b2f('0x3a')]);_0x269dda[_0x1b2f('0x3b')]=_[_0x1b2f('0x3c')](_0x269dda[_0x1b2f('0x37')],_0x269dda[_0x1b2f('0x3a')]);_0x1aa1b1['attributes']=_['intersection'](_0x269dda[_0x1b2f('0x37')],qs[_0x1b2f('0x4d')](_0x42a7ca[_0x1b2f('0x3a')][_0x1b2f('0x4d')]));_0x1aa1b1[_0x1b2f('0x3d')]=_0x1aa1b1[_0x1b2f('0x3d')]['length']?_0x1aa1b1[_0x1b2f('0x3d')]:_0x269dda[_0x1b2f('0x37')];_0x1aa1b1[_0x1b2f('0x5d')]=qs['sort'](_0x42a7ca[_0x1b2f('0x3a')]['sort']);_0x1aa1b1[_0x1b2f('0x41')]=qs[_0x1b2f('0x3b')](_['pick'](_0x42a7ca[_0x1b2f('0x3a')],_0x269dda[_0x1b2f('0x3b')]));if(_0x42a7ca[_0x1b2f('0x3a')][_0x1b2f('0x42')]){_0x1aa1b1['where']=_[_0x1b2f('0x43')](_0x1aa1b1[_0x1b2f('0x41')],{'$or':_['map'](_0x1aa1b1[_0x1b2f('0x3d')],function(_0x1c8d1f){var _0x22d007={};_0x22d007[_0x1c8d1f]={'$like':'%'+_0x42a7ca['query'][_0x1b2f('0x42')]+'%'};return _0x22d007;})});}if(_0x42a7ca[_0x1b2f('0x3a')]['$gte']){var _0x3f32fe=_0x42a7ca[_0x1b2f('0x3a')][_0x1b2f('0x5e')][_0x1b2f('0x5f')](',');var _0x1c9108={};_0x1c9108[_0x3f32fe[0x0]]={'$gte':moment(_0x3f32fe[0x1])['format'](_0x1b2f('0x60'))};_0x1aa1b1[_0x1b2f('0x41')]=_['merge'](_0x1aa1b1['where'],_0x1c9108);}_0x1aa1b1=_[_0x1b2f('0x43')]({},_0x1aa1b1,_0x42a7ca[_0x1b2f('0x44')]);return _0x4a5367[_0x1b2f('0x5b')](_0x1aa1b1);}})[_0x1b2f('0x2e')](function(_0x40a997){if(_0x40a997){_0xcdba70=_0x40a997[_0x1b2f('0x3e')];if(!_0x42a7ca['query']['hasOwnProperty'](_0x1b2f('0x58'))){_0x1aa1b1[_0x1b2f('0x26')]=qs[_0x1b2f('0x26')](_0x42a7ca[_0x1b2f('0x3a')][_0x1b2f('0x26')]);_0x1aa1b1['offset']=qs['offset'](_0x42a7ca['query'][_0x1b2f('0x27')]);}return _0x4a5367[_0x1b2f('0x5b')](_0x1aa1b1);}})[_0x1b2f('0x2e')](function(_0x22289e){if(_0x22289e){return _0x22289e?{'count':_0xcdba70,'rows':_0x22289e}:null;}})[_0x1b2f('0x2e')](respondWithResult(_0x9fb548,null))[_0x1b2f('0x4a')](handleError(_0x9fb548,null));};
\ No newline at end of file
index ca119ed..f1b04bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2baf=['../../mysqldb','ChatGroup','setMaxListeners','save','update','emit','hasOwnProperty','hook'];(function(_0x243f1e,_0x214b6f){var _0x51d657=function(_0x2831b1){while(--_0x2831b1){_0x243f1e['push'](_0x243f1e['shift']());}};_0x51d657(++_0x214b6f);}(_0x2baf,0xc8));var _0xf2ba=function(_0x45313f,_0x46caf4){_0x45313f=_0x45313f-0x0;var _0x402910=_0x2baf[_0x45313f];return _0x402910;};'use strict';var EventEmitter=require('events');var ChatGroup=require(_0xf2ba('0x0'))['db'][_0xf2ba('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents[_0xf2ba('0x2')](0x0);var events={'afterCreate':_0xf2ba('0x3'),'afterUpdate':_0xf2ba('0x4'),'afterDestroy':'remove'};function emitEvent(_0x3616ad){return function(_0x52953b,_0x5d6dae,_0x24b770){ChatGroupEvents[_0xf2ba('0x5')](_0x3616ad+':'+_0x52953b['id'],_0x52953b);ChatGroupEvents[_0xf2ba('0x5')](_0x3616ad,_0x52953b);_0x24b770(null);};}for(var e in events){if(events[_0xf2ba('0x6')](e)){var event=events[e];ChatGroup[_0xf2ba('0x7')](e,emitEvent(event));}}module['exports']=ChatGroupEvents;
\ No newline at end of file
+var _0x08e6=['update','emit','hasOwnProperty','hook','exports','../../mysqldb','ChatGroup','save'];(function(_0x34cb55,_0x4826cb){var _0x25cf7d=function(_0x37cdbf){while(--_0x37cdbf){_0x34cb55['push'](_0x34cb55['shift']());}};_0x25cf7d(++_0x4826cb);}(_0x08e6,0x75));var _0x608e=function(_0x25f204,_0x572f9a){_0x25f204=_0x25f204-0x0;var _0x298087=_0x08e6[_0x25f204];return _0x298087;};'use strict';var EventEmitter=require('events');var ChatGroup=require(_0x608e('0x0'))['db'][_0x608e('0x1')];var ChatGroupEvents=new EventEmitter();ChatGroupEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x608e('0x2'),'afterUpdate':_0x608e('0x3'),'afterDestroy':'remove'};function emitEvent(_0x337b2a){return function(_0x152e0e,_0x4ba542,_0x1e9ad3){ChatGroupEvents[_0x608e('0x4')](_0x337b2a+':'+_0x152e0e['id'],_0x152e0e);ChatGroupEvents[_0x608e('0x4')](_0x337b2a,_0x152e0e);_0x1e9ad3(null);};}for(var e in events){if(events[_0x608e('0x5')](e)){var event=events[e];ChatGroup[_0x608e('0x6')](e,emitEvent(event));}}module[_0x608e('0x7')]=ChatGroupEvents;
\ No newline at end of file
index c67c46d..0fb30d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1ce=['path','../../config/environment','./chatGroup.attributes','exports','define','ChatGroup','lodash','util','../../config/logger','moment','bluebird','request-promise'];(function(_0x59bc54,_0x2cc8b6){var _0xd293df=function(_0x53dcbc){while(--_0x53dcbc){_0x59bc54['push'](_0x59bc54['shift']());}};_0xd293df(++_0x2cc8b6);}(_0xb1ce,0x186));var _0xeb1c=function(_0xd8403a,_0x567163){_0xd8403a=_0xd8403a-0x0;var _0x3a52ac=_0xb1ce[_0xd8403a];return _0x3a52ac;};'use strict';var _=require(_0xeb1c('0x0'));var util=require(_0xeb1c('0x1'));var logger=require(_0xeb1c('0x2'))('api');var moment=require(_0xeb1c('0x3'));var BPromise=require(_0xeb1c('0x4'));var rp=require(_0xeb1c('0x5'));var fs=require('fs');var path=require(_0xeb1c('0x6'));var rimraf=require('rimraf');var config=require(_0xeb1c('0x7'));var attributes=require(_0xeb1c('0x8'));module[_0xeb1c('0x9')]=function(_0x1fac41,_0x3b4b0e){return _0x1fac41[_0xeb1c('0xa')](_0xeb1c('0xb'),attributes,{'tableName':'chat_groups','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd056=['bluebird','request-promise','path','../../config/environment','./chatGroup.attributes','ChatGroup','chat_groups','util','api','moment'];(function(_0x33e982,_0x1d15b1){var _0x2d3668=function(_0x3c16d5){while(--_0x3c16d5){_0x33e982['push'](_0x33e982['shift']());}};_0x2d3668(++_0x1d15b1);}(_0xd056,0x115));var _0x6d05=function(_0x10998b,_0x5dbf2e){_0x10998b=_0x10998b-0x0;var _0x2915f5=_0xd056[_0x10998b];return _0x2915f5;};'use strict';var _=require('lodash');var util=require(_0x6d05('0x0'));var logger=require('../../config/logger')(_0x6d05('0x1'));var moment=require(_0x6d05('0x2'));var BPromise=require(_0x6d05('0x3'));var rp=require(_0x6d05('0x4'));var fs=require('fs');var path=require(_0x6d05('0x5'));var rimraf=require('rimraf');var config=require(_0x6d05('0x6'));var attributes=require(_0x6d05('0x7'));module['exports']=function(_0x5c68ea,_0x118122){return _0x5c68ea['define'](_0x6d05('0x8'),attributes,{'tableName':_0x6d05('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 014bf25..73f1ee8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38d3=['message','result','catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','register','then','info','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','code','error'];(function(_0x253321,_0x1e77e7){var _0x2a9da4=function(_0x5e1c3a){while(--_0x5e1c3a){_0x253321['push'](_0x253321['shift']());}};_0x2a9da4(++_0x1e77e7);}(_0x38d3,0x1a7));var _0x338d=function(_0x513aa5,_0x1fba79){_0x513aa5=_0x513aa5-0x0;var _0x1a1a7c=_0x38d3[_0x513aa5];return _0x1a1a7c;};'use strict';var _=require(_0x338d('0x0'));var util=require(_0x338d('0x1'));var moment=require('moment');var BPromise=require(_0x338d('0x2'));var rs=require(_0x338d('0x3'));var fs=require('fs');var Redis=require(_0x338d('0x4'));var db=require(_0x338d('0x5'))['db'];var utils=require(_0x338d('0x6'));var logger=require(_0x338d('0x7'))(_0x338d('0x8'));var config=require(_0x338d('0x9'));var jayson=require(_0x338d('0xa'));var client=jayson['client'][_0x338d('0xb')]({'port':0x232a});config[_0x338d('0xc')]=_[_0x338d('0xd')](config[_0x338d('0xc')],{'host':_0x338d('0xe'),'port':0x18eb});var socket=require(_0x338d('0xf'))(new Redis(config[_0x338d('0xc')]));require('./chatGroup.socket')[_0x338d('0x10')](socket);function respondWithRpcPromise(_0x46b524,_0x3c9b82,_0x4733ad){return new BPromise(function(_0x111c22,_0x3d7647){return client['request'](_0x46b524,_0x4733ad)[_0x338d('0x11')](function(_0x261217){logger[_0x338d('0x12')](_0x338d('0x13'),_0x3c9b82,_0x338d('0x14'));logger[_0x338d('0x15')](_0x338d('0x16'),_0x3c9b82,_0x338d('0x14'),JSON['stringify'](_0x261217));if(_0x261217['error']){if(_0x261217['error'][_0x338d('0x17')]===0x1f4){logger[_0x338d('0x18')]('ChatGroup,\x20%s,\x20%s',_0x3c9b82,_0x261217[_0x338d('0x18')]['message']);return _0x3d7647(_0x261217[_0x338d('0x18')][_0x338d('0x19')]);}logger[_0x338d('0x18')]('ChatGroup,\x20%s,\x20%s',_0x3c9b82,_0x261217['error']['message']);return _0x111c22(_0x261217[_0x338d('0x18')]['message']);}else{logger[_0x338d('0x12')]('ChatGroup,\x20%s,\x20%s',_0x3c9b82,'request\x20sent');_0x111c22(_0x261217[_0x338d('0x1a')][_0x338d('0x19')]);}})[_0x338d('0x1b')](function(_0x2c1e24){logger[_0x338d('0x18')]('ChatGroup,\x20%s,\x20%s',_0x3c9b82,_0x2c1e24);_0x3d7647(_0x2c1e24);});});}
\ No newline at end of file
+var _0x180b=['http','redis','defaults','localhost','./chatGroup.socket','register','request','then','info','ChatGroup,\x20%s,\x20%s','request\x20sent','debug','ChatGroup,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x2a964a,_0x35c153){var _0x1a6ae9=function(_0x2fbd5e){while(--_0x2fbd5e){_0x2a964a['push'](_0x2a964a['shift']());}};_0x1a6ae9(++_0x35c153);}(_0x180b,0xdc));var _0xb180=function(_0x23edeb,_0x332d66){_0x23edeb=_0x23edeb-0x0;var _0xee1ec0=_0x180b[_0x23edeb];return _0xee1ec0;};'use strict';var _=require(_0xb180('0x0'));var util=require(_0xb180('0x1'));var moment=require(_0xb180('0x2'));var BPromise=require('bluebird');var rs=require(_0xb180('0x3'));var fs=require('fs');var Redis=require(_0xb180('0x4'));var db=require(_0xb180('0x5'))['db'];var utils=require(_0xb180('0x6'));var logger=require(_0xb180('0x7'))(_0xb180('0x8'));var config=require(_0xb180('0x9'));var jayson=require(_0xb180('0xa'));var client=jayson[_0xb180('0xb')][_0xb180('0xc')]({'port':0x232a});config[_0xb180('0xd')]=_[_0xb180('0xe')](config[_0xb180('0xd')],{'host':_0xb180('0xf'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xb180('0x10'))[_0xb180('0x11')](socket);function respondWithRpcPromise(_0x3da265,_0x27ff83,_0x354e60){return new BPromise(function(_0x156227,_0x23c57a){return client[_0xb180('0x12')](_0x3da265,_0x354e60)[_0xb180('0x13')](function(_0x19fc78){logger[_0xb180('0x14')](_0xb180('0x15'),_0x27ff83,_0xb180('0x16'));logger[_0xb180('0x17')](_0xb180('0x18'),_0x27ff83,'request\x20sent',JSON[_0xb180('0x19')](_0x19fc78));if(_0x19fc78['error']){if(_0x19fc78[_0xb180('0x1a')]['code']===0x1f4){logger[_0xb180('0x1a')](_0xb180('0x15'),_0x27ff83,_0x19fc78[_0xb180('0x1a')]['message']);return _0x23c57a(_0x19fc78[_0xb180('0x1a')][_0xb180('0x1b')]);}logger[_0xb180('0x1a')](_0xb180('0x15'),_0x27ff83,_0x19fc78[_0xb180('0x1a')][_0xb180('0x1b')]);return _0x156227(_0x19fc78[_0xb180('0x1a')][_0xb180('0x1b')]);}else{logger['info'](_0xb180('0x15'),_0x27ff83,_0xb180('0x16'));_0x156227(_0x19fc78[_0xb180('0x1c')][_0xb180('0x1b')]);}})['catch'](function(_0x24cc3f){logger[_0xb180('0x1a')]('ChatGroup,\x20%s,\x20%s',_0x27ff83,_0x24cc3f);_0x23c57a(_0x24cc3f);});});}
\ No newline at end of file
index 8a85a6a..300c15e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa771=['length','chatGroup:','remove','update','removeListener','register'];(function(_0x4d703e,_0x502eca){var _0x57d1fe=function(_0x3dd4d3){while(--_0x3dd4d3){_0x4d703e['push'](_0x4d703e['shift']());}};_0x57d1fe(++_0x502eca);}(_0xa771,0x1b8));var _0x1a77=function(_0x277df6,_0x19eac2){_0x277df6=_0x277df6-0x0;var _0x58d63e=_0xa771[_0x277df6];return _0x58d63e;};'use strict';var ChatGroupEvents=require('./chatGroup.events');var events=['save',_0x1a77('0x0'),_0x1a77('0x1')];function createListener(_0xd0b6b8,_0x3572b3){return function(_0x3c31f8){_0x3572b3['emit'](_0xd0b6b8,_0x3c31f8);};}function removeListener(_0x34da0c,_0xb44002){return function(){ChatGroupEvents[_0x1a77('0x2')](_0x34da0c,_0xb44002);};}exports[_0x1a77('0x3')]=function(_0x286ca7){for(var _0x384ef9=0x0,_0x381606=events[_0x1a77('0x4')];_0x384ef9<_0x381606;_0x384ef9++){var _0x4676f3=events[_0x384ef9];var _0x47806a=createListener(_0x1a77('0x5')+_0x4676f3,_0x286ca7);ChatGroupEvents['on'](_0x4676f3,_0x47806a);}};
\ No newline at end of file
+var _0xa689=['update','emit','register','length','chatGroup:','./chatGroup.events','save','remove'];(function(_0x191e4a,_0x3b03e5){var _0x3ad849=function(_0x3b2448){while(--_0x3b2448){_0x191e4a['push'](_0x191e4a['shift']());}};_0x3ad849(++_0x3b03e5);}(_0xa689,0x135));var _0x9a68=function(_0x53f964,_0x3b52b8){_0x53f964=_0x53f964-0x0;var _0x17be6c=_0xa689[_0x53f964];return _0x17be6c;};'use strict';var ChatGroupEvents=require(_0x9a68('0x0'));var events=[_0x9a68('0x1'),_0x9a68('0x2'),_0x9a68('0x3')];function createListener(_0x48ed89,_0x1a6b4a){return function(_0x3f297c){_0x1a6b4a[_0x9a68('0x4')](_0x48ed89,_0x3f297c);};}function removeListener(_0x1b1918,_0x3a6b44){return function(){ChatGroupEvents['removeListener'](_0x1b1918,_0x3a6b44);};}exports[_0x9a68('0x5')]=function(_0x5be954){for(var _0x8c454f=0x0,_0x45b8c8=events[_0x9a68('0x6')];_0x8c454f<_0x45b8c8;_0x8c454f++){var _0x3ea482=events[_0x8c454f];var _0x53e5a1=createListener(_0x9a68('0x7')+_0x3ea482,_0x5be954);ChatGroupEvents['on'](_0x3ea482,_0x53e5a1);}};
\ No newline at end of file
index cafcabc..0f04511 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x866b=['post','addMembers','/:id/messages','put','update','delete','removeMembers','exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatGroup.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/unread','getUnread','/:id/members','getMembers'];(function(_0x4ab34c,_0x49172b){var _0x26d119=function(_0x304331){while(--_0x304331){_0x4ab34c['push'](_0x4ab34c['shift']());}};_0x26d119(++_0x49172b);}(_0x866b,0x1b8));var _0xb866=function(_0x216f7d,_0x496249){_0x216f7d=_0x216f7d-0x0;var _0xc49d7f=_0x866b[_0x216f7d];return _0xc49d7f;};'use strict';var multer=require('multer');var util=require(_0xb866('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xb866('0x1'));var router=express[_0xb866('0x2')]();var fs_extra=require(_0xb866('0x3'));var auth=require(_0xb866('0x4'));var interaction=require(_0xb866('0x5'));var config=require(_0xb866('0x6'));var controller=require(_0xb866('0x7'));router[_0xb866('0x8')]('/',auth[_0xb866('0x9')](),controller[_0xb866('0xa')]);router[_0xb866('0x8')](_0xb866('0xb'),auth[_0xb866('0x9')](),controller[_0xb866('0xc')]);router[_0xb866('0x8')](_0xb866('0xd'),auth['isAuthenticated'](),controller[_0xb866('0xe')]);router[_0xb866('0x8')](_0xb866('0xf'),auth['isAuthenticated'](),controller[_0xb866('0x10')]);router[_0xb866('0x8')](_0xb866('0x11'),auth[_0xb866('0x9')](),controller[_0xb866('0x12')]);router[_0xb866('0x8')]('/:id/messages',auth[_0xb866('0x9')](),controller['getMessages']);router[_0xb866('0x13')]('/',auth[_0xb866('0x9')](),controller['create']);router[_0xb866('0x13')](_0xb866('0x11'),auth[_0xb866('0x9')](),controller[_0xb866('0x14')]);router[_0xb866('0x13')](_0xb866('0x15'),auth[_0xb866('0x9')](),controller['addMessage']);router[_0xb866('0x16')]('/:id',auth[_0xb866('0x9')](),controller[_0xb866('0x17')]);router['delete'](_0xb866('0xd'),auth['isAuthenticated'](),controller['destroy']);router[_0xb866('0x18')](_0xb866('0x11'),auth[_0xb866('0x9')](),controller[_0xb866('0x19')]);module[_0xb866('0x1a')]=router;
\ No newline at end of file
+var _0xa14e=['fs-extra','../../components/auth/service','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/unread','getUnread','/:id/members','getMembers','post','create','addMembers','/:id/messages','addMessage','update','destroy','delete','exports','multer','util','path'];(function(_0x43e6dd,_0x5630cc){var _0x74da7a=function(_0x5e98c3){while(--_0x5e98c3){_0x43e6dd['push'](_0x43e6dd['shift']());}};_0x74da7a(++_0x5630cc);}(_0xa14e,0xac));var _0xea14=function(_0x8c43de,_0x90ff31){_0x8c43de=_0x8c43de-0x0;var _0xa6591b=_0xa14e[_0x8c43de];return _0xa6591b;};'use strict';var multer=require(_0xea14('0x0'));var util=require(_0xea14('0x1'));var path=require(_0xea14('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xea14('0x3'));var auth=require(_0xea14('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./chatGroup.controller');router[_0xea14('0x5')]('/',auth[_0xea14('0x6')](),controller[_0xea14('0x7')]);router['get'](_0xea14('0x8'),auth['isAuthenticated'](),controller[_0xea14('0x9')]);router['get'](_0xea14('0xa'),auth[_0xea14('0x6')](),controller[_0xea14('0xb')]);router[_0xea14('0x5')](_0xea14('0xc'),auth[_0xea14('0x6')](),controller[_0xea14('0xd')]);router[_0xea14('0x5')](_0xea14('0xe'),auth[_0xea14('0x6')](),controller[_0xea14('0xf')]);router['get']('/:id/messages',auth[_0xea14('0x6')](),controller['getMessages']);router[_0xea14('0x10')]('/',auth['isAuthenticated'](),controller[_0xea14('0x11')]);router[_0xea14('0x10')](_0xea14('0xe'),auth['isAuthenticated'](),controller[_0xea14('0x12')]);router['post'](_0xea14('0x13'),auth[_0xea14('0x6')](),controller[_0xea14('0x14')]);router['put'](_0xea14('0xa'),auth['isAuthenticated'](),controller[_0xea14('0x15')]);router['delete']('/:id',auth[_0xea14('0x6')](),controller[_0xea14('0x16')]);router[_0xea14('0x17')](_0xea14('0xe'),auth[_0xea14('0x6')](),controller['removeMembers']);module[_0xea14('0x18')]=router;
\ No newline at end of file
index d56aa76..472c8af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x95af=['exports','INTEGER','ENUM','star','thumb','TEXT','DATE','STRING','long','out','BOOLEAN','sequelize'];(function(_0x405c38,_0x2f5610){var _0x16e710=function(_0x6cb343){while(--_0x6cb343){_0x405c38['push'](_0x405c38['shift']());}};_0x16e710(++_0x2f5610);}(_0x95af,0x173));var _0xf95a=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0x95af[_0x4e676e];return _0x336a3c;};'use strict';var Sequelize=require(_0xf95a('0x0'));module[_0xf95a('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0xf95a('0x2')]},'ratingType':{'type':Sequelize[_0xf95a('0x3')](_0xf95a('0x4'),_0xf95a('0x5')),'defaultValue':_0xf95a('0x4')},'ratingMessage':{'type':Sequelize[_0xf95a('0x6')]},'pathTranscript':{'type':Sequelize[_0xf95a('0x6')]},'mailTranscript':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0xf95a('0x7')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xf95a('0x8')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xf95a('0x8')]},'browserName':{'type':Sequelize[_0xf95a('0x8')]},'browserVersion':{'type':Sequelize[_0xf95a('0x8')]},'osName':{'type':Sequelize['STRING']},'osVersion':{'type':Sequelize[_0xf95a('0x8')]},'deviceModel':{'type':Sequelize[_0xf95a('0x8')]},'deviceVendor':{'type':Sequelize['STRING']},'deviceType':{'type':Sequelize[_0xf95a('0x8')]},'referer':{'type':Sequelize['TEXT']},'customerIp':{'type':Sequelize[_0xf95a('0x8')]},'formData':{'type':Sequelize[_0xf95a('0x6')](_0xf95a('0x9'))},'read1stAt':{'type':Sequelize[_0xf95a('0x7')]},'lastMsgAt':{'type':Sequelize[_0xf95a('0x7')]},'lastMsgDirection':{'type':Sequelize[_0xf95a('0x3')]('in',_0xf95a('0xa')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0xf95a('0x8')]},'customerPort':{'type':Sequelize[_0xf95a('0x8')]},'vidaooSessionId':{'type':Sequelize[_0xf95a('0x6')]},'autoreplyExecuted':{'type':Sequelize[_0xf95a('0xb')],'defaultValue':![]}};
\ No newline at end of file
+var _0x30fc=['sequelize','exports','INTEGER','ENUM','star','thumb','TEXT','STRING','DATE','out'];(function(_0x5d6456,_0x58ecc7){var _0x4d66c1=function(_0x4335e3){while(--_0x4335e3){_0x5d6456['push'](_0x5d6456['shift']());}};_0x4d66c1(++_0x58ecc7);}(_0x30fc,0x64));var _0xc30f=function(_0x304c47,_0x4e0e20){_0x304c47=_0x304c47-0x0;var _0x2dbd2c=_0x30fc[_0x304c47];return _0x2dbd2c;};'use strict';var Sequelize=require(_0xc30f('0x0'));module[_0xc30f('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'ratingValue':{'type':Sequelize[_0xc30f('0x2')]},'ratingType':{'type':Sequelize[_0xc30f('0x3')](_0xc30f('0x4'),_0xc30f('0x5')),'defaultValue':'star'},'ratingMessage':{'type':Sequelize[_0xc30f('0x6')]},'pathTranscript':{'type':Sequelize[_0xc30f('0x6')]},'mailTranscript':{'type':Sequelize[_0xc30f('0x7')],'validate':{'isEmail':!![]}},'closedAt':{'type':Sequelize[_0xc30f('0x8')]},'disposition':{'type':Sequelize[_0xc30f('0x7')]},'secondDisposition':{'type':Sequelize[_0xc30f('0x7')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xc30f('0x7')]},'browserName':{'type':Sequelize[_0xc30f('0x7')]},'browserVersion':{'type':Sequelize[_0xc30f('0x7')]},'osName':{'type':Sequelize[_0xc30f('0x7')]},'osVersion':{'type':Sequelize[_0xc30f('0x7')]},'deviceModel':{'type':Sequelize[_0xc30f('0x7')]},'deviceVendor':{'type':Sequelize[_0xc30f('0x7')]},'deviceType':{'type':Sequelize[_0xc30f('0x7')]},'referer':{'type':Sequelize[_0xc30f('0x6')]},'customerIp':{'type':Sequelize['STRING']},'formData':{'type':Sequelize[_0xc30f('0x6')]('long')},'read1stAt':{'type':Sequelize[_0xc30f('0x8')]},'lastMsgAt':{'type':Sequelize[_0xc30f('0x8')]},'lastMsgDirection':{'type':Sequelize[_0xc30f('0x3')]('in',_0xc30f('0x9')),'defaultValue':'in','allowNull':![]},'closeReason':{'type':Sequelize[_0xc30f('0x7')]},'customerPort':{'type':Sequelize[_0xc30f('0x7')]},'vidaooSessionId':{'type':Sequelize['TEXT']},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 86d9b2d..6ff75a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ea3=['vidaooNote','vidaooMetadata','email','contact','POST','https://api-vidaoo.xcally.com/api/v1/meetings','vidaooTopic','isNull','metadata','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','Error\x20in\x20Vidaoo\x20configuration','join_url','out','Unable\x20to\x20create\x20Vidaoo\x20session','updateAttributes','CmContact','abandon','entity\x20not\x20found','Interaction\x20already\x20assigned','attachmentUpload','file','basename','filename','mimetype','Attachment','attachmentDownload','attachId','join','root','offline-chat/','download','close','mailTranscript','server/files/chat/upload/','format','transcript-%s.txt','now','pathTranscript','Messages','%s%d','agentAlias','customer','Visitor','agentIdentifier','website_alias','System','agent_alias','alias','agent_fullname','MM/DD/YYYY\x20HH:mm:ss','direction','secret','appendFileSync','MailAccount','Smtp','CloudProvider','getSmtpOptions','SendMail','sendMail','\x22%s\x22\x20<%s>','Mail\x20Transcript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ChatMessage','ids','omit','getMessages','ChatInteractionId','YYYY-MM-DD\x20HH:mm:ss','includeAll','include','findAll','rows','getMyMessages','includeAgent','addTags','setTags','Tag','color','chatInteractionTags:save','removeTags','unix','files','attachments','transcript-%d-%s.zip','firstName','lastName','Account','Owner','get','mkdirSync','Chat','N.A.','closedAt','browserName','osName','referer','customerPort','tail','existsSync','createReadStream','pipe','createWriteStream','renderFile','server','views','transcript-','.pdf','createPdfFromHTML','err','unlinkSync','rimraf','zip-dir','request-promise','moment','mustache','path','squel','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','destroy','name','send','render','agent','interaction','map','fullname','TagIds','Tags','push','waiting','talking','unmanaged','total','closed','UserId','disposition','abandoned','answered','rawAttributes','fieldName','key','query','keys','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','select','field','tools_tags','u.fullname','ui.ChatInteractionId','from','user_has_chat_interactions','left_join','users','u.id\x20=\x20ui.UserId','chat_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','chat_websites','a.id\x20=\x20i.ChatWebsiteId','chat_messages','me.ChatInteractionId\x20=\x20i.id','chat_interaction_has_tags','it.ChatInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','split','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','type','start','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','operator','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','text','compact','isEmpty','concat','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','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','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','resolve','ChatWebsiteId','user','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','i.ChatWebsiteId\x20IN\x20?','role','sequelize','toString','keyBy','merge','ChatInteraction','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','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.ChatInteractionId\x20IN\x20?','groupBy','show','params','options','create','update','body','describe','findOne','ChatWebsite','vidaooApiKey','vidaooEscalation'];(function(_0x38bf31,_0x574a5e){var _0xaa4078=function(_0x49bcdc){while(--_0x49bcdc){_0x38bf31['push'](_0x38bf31['shift']());}};_0xaa4078(++_0x574a5e);}(_0x4ea3,0x70));var _0x34ea=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x4ea3[_0x3b380d];return _0x54502b;};'use strict';var rimraf=require(_0x34ea('0x0'));var zipdir=require(_0x34ea('0x1'));var rp=require(_0x34ea('0x2'));var moment=require(_0x34ea('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x34ea('0x4'));var util=require('util');var path=require(_0x34ea('0x5'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0x34ea('0x6'));var Redis=require(_0x34ea('0x7'));var qs=require(_0x34ea('0x8'));var as=require(_0x34ea('0x9'));var pdf=require(_0x34ea('0xa'));var logger=require(_0x34ea('0xb'))(_0x34ea('0xc'));var config=require('../../config/environment');var db=require(_0x34ea('0xd'))['db'];config[_0x34ea('0xe')]=_[_0x34ea('0xf')](config['redis'],{'host':_0x34ea('0x10'),'port':0x18eb});var socket=require(_0x34ea('0x11'))(new Redis(config['redis']));require('./chatInteraction.socket')[_0x34ea('0x12')](socket);var jayson=require(_0x34ea('0x13'));var client=jayson[_0x34ea('0x14')]['http']({'port':0x232b});var client9004=jayson[_0x34ea('0x14')][_0x34ea('0x15')]({'port':0x232c});function respondWithRpcPromise(_0x10135f,_0x233b11,_0x60725f,_0xc56a7d){return new BPromise(function(_0x37e1b4,_0x36af43){var _0x1ff760=_0xc56a7d||client;return _0x1ff760[_0x34ea('0x16')](_0x10135f,_0x60725f)[_0x34ea('0x17')](function(_0x5ef9ae){logger[_0x34ea('0x18')](_0x34ea('0x19'),_0x233b11,_0x34ea('0x1a'));logger[_0x34ea('0x1b')](_0x34ea('0x1c'),_0x233b11,'request\x20sent',JSON[_0x34ea('0x1d')](_0x5ef9ae));if(_0x5ef9ae[_0x34ea('0x1e')]){if(_0x5ef9ae[_0x34ea('0x1e')][_0x34ea('0x1f')]===0x1f4){logger['error'](_0x34ea('0x19'),_0x233b11,_0x5ef9ae[_0x34ea('0x1e')][_0x34ea('0x20')]);return _0x36af43(_0x5ef9ae['error'][_0x34ea('0x20')]);}logger[_0x34ea('0x1e')](_0x34ea('0x19'),_0x233b11,_0x5ef9ae[_0x34ea('0x1e')]['message']);return _0x37e1b4(_0x5ef9ae[_0x34ea('0x1e')][_0x34ea('0x20')]);}else{logger[_0x34ea('0x18')](_0x34ea('0x19'),_0x233b11,'request\x20sent');_0x37e1b4(_0x5ef9ae['result'][_0x34ea('0x20')]);}})[_0x34ea('0x21')](function(_0x151fae){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x233b11,_0x151fae);_0x36af43(_0x151fae);});});}function respondWithStatusCode(_0x2eafc6,_0x3ff80e){_0x3ff80e=_0x3ff80e||0xcc;return function(_0x2a0ec2){if(_0x2a0ec2){return _0x2eafc6[_0x34ea('0x22')](_0x3ff80e);}return _0x2eafc6[_0x34ea('0x23')](_0x3ff80e)[_0x34ea('0x24')]();};}function respondWithResult(_0x5ade46,_0xf24962){_0xf24962=_0xf24962||0xc8;return function(_0x46671f){if(_0x46671f){return _0x5ade46[_0x34ea('0x23')](_0xf24962)[_0x34ea('0x25')](_0x46671f);}};}function respondWithFilteredResult(_0x5b5885,_0x56f320){return function(_0x564d1b){if(_0x564d1b){var _0x142709=typeof _0x56f320[_0x34ea('0x26')]===_0x34ea('0x27')&&typeof _0x56f320[_0x34ea('0x28')]==='undefined';var _0x26c80b=_0x564d1b[_0x34ea('0x29')];var _0x27c6f7=_0x142709?0x0:_0x56f320['offset'];var _0x4cded8=_0x142709?_0x564d1b['count']:_0x56f320['offset']+_0x56f320[_0x34ea('0x28')];var _0x6227db;if(_0x4cded8>=_0x26c80b){_0x4cded8=_0x26c80b;_0x6227db=0xc8;}else{_0x6227db=0xce;}_0x5b5885[_0x34ea('0x23')](_0x6227db);return _0x5b5885[_0x34ea('0x2a')]('Content-Range',_0x27c6f7+'-'+_0x4cded8+'/'+_0x26c80b)[_0x34ea('0x25')](_0x564d1b);}return null;};}function saveUpdates(_0x59b9f6){return function(_0x2c6de8){if(_0x2c6de8){return _0x2c6de8['update'](_0x59b9f6)[_0x34ea('0x17')](function(_0x14e018){return _0x14e018;});}return null;};}function removeEntity(_0x3cb968){return function(_0x57b19d){if(_0x57b19d){return _0x57b19d[_0x34ea('0x2b')]()[_0x34ea('0x17')](function(){_0x3cb968['status'](0xcc)[_0x34ea('0x24')]();});}};}function handleEntityNotFound(_0x5717e6){return function(_0x1392b6){if(!_0x1392b6){_0x5717e6[_0x34ea('0x22')](0x194);}return _0x1392b6;};}function handleError(_0x2d358e,_0x5ead76){_0x5ead76=_0x5ead76||0x1f4;return function(_0x4c5fb4){logger[_0x34ea('0x1e')](_0x4c5fb4['stack']);if(_0x4c5fb4[_0x34ea('0x2c')]){delete _0x4c5fb4[_0x34ea('0x2c')];}_0x2d358e['status'](_0x5ead76)[_0x34ea('0x2d')](_0x4c5fb4);};}function getMustacheRender(_0x3b7d8d,_0x2cdde6){return Mustache[_0x34ea('0x2e')](_0x3b7d8d,_['merge'](_0x2cdde6['body'],{'contact':_0x2cdde6['contact'],'message':_0x2cdde6[_0x34ea('0x20')],'agent':_0x2cdde6[_0x34ea('0x2f')],'interaction':_0x2cdde6[_0x34ea('0x30')],'account':_0x2cdde6['account']}))||'';}function getInteractionUsers(_0x4e26e0,_0x47ba14){return new BPromise(function(_0x156ce6,_0x39fe11){try{if(_0x47ba14[_0x4e26e0['id']]){_0x4e26e0['Users']=_[_0x34ea('0x31')](_0x47ba14[_0x4e26e0['id']],function(_0x240c77){return{'id':_0x240c77['id'],'fullname':_0x240c77[_0x34ea('0x32')]};});}}catch(_0x16a969){_0x39fe11(_0x16a969);}_0x156ce6(_0x4e26e0);});}function getInteractionTags(_0x3a393b,_0x185883){return new BPromise(function(_0x4e99e4,_0x2faf49){try{if(_0x3a393b[_0x34ea('0x33')]){_0x3a393b[_0x34ea('0x34')]=[];_0x3a393b[_0x34ea('0x33')]['split'](',')['forEach'](function(_0x6f024c){_0x3a393b[_0x34ea('0x34')][_0x34ea('0x35')](_0x185883[_0x6f024c]);});}delete _0x3a393b[_0x34ea('0x33')];}catch(_0x29260c){_0x2faf49(_0x29260c);}_0x4e99e4(_0x3a393b);});}function updateChatInteraction(_0x4c696f,_0x31bdfe,_0xb19a03){return new BPromise(function(_0x475313,_0x3a6a90){return getInteractionUsers(_0x4c696f,_0xb19a03)[_0x34ea('0x17')](function(_0x4743f1){return getInteractionTags(_0x4743f1,_0x31bdfe);})[_0x34ea('0x17')](function(_0xa1ff39){return getStateInteraction(_0xa1ff39);})[_0x34ea('0x17')](function(_0x1b5b56){_0x475313(_0x1b5b56);})[_0x34ea('0x21')](function(_0x109cff){_0x3a6a90(_0x109cff);});});}function getStateInteraction(_0x218691){return new BPromise(function(_0x41fefb){_0x218691[_0x34ea('0x36')]=0x0;_0x218691[_0x34ea('0x37')]=0x0;_0x218691['answered']=0x0;_0x218691[_0x34ea('0x38')]=0x0;_0x218691['abandoned']=0x0;_0x218691[_0x34ea('0x39')]=0x0;if(!_0x218691[_0x34ea('0x3a')]&&!_0x218691[_0x34ea('0x3b')]){_0x218691[_0x34ea('0x36')]+=0x1;}if(!_0x218691[_0x34ea('0x3a')]&&_0x218691[_0x34ea('0x3b')]){_0x218691[_0x34ea('0x37')]+=0x1;if(_0x218691[_0x34ea('0x36')]){_0x218691[_0x34ea('0x36')]-=0x1;}}if(_0x218691['closed']&&_0x218691[_0x34ea('0x3c')]==='abandoned'){_0x218691[_0x34ea('0x3d')]+=0x1;if(_0x218691[_0x34ea('0x36')]){_0x218691[_0x34ea('0x36')]-=0x1;}}else if(_0x218691[_0x34ea('0x3a')]&&!_0x218691[_0x34ea('0x3b')]&&_0x218691[_0x34ea('0x3c')]){_0x218691['unmanaged']+=0x1;if(_0x218691[_0x34ea('0x36')]){_0x218691[_0x34ea('0x36')]-=0x1;}}else if(_0x218691['closed']&&_0x218691[_0x34ea('0x3b')]){_0x218691[_0x34ea('0x3e')]+=0x1;if(_0x218691[_0x34ea('0x37')]){_0x218691[_0x34ea('0x37')]-=0x1;}}_0x218691[_0x34ea('0x39')]+=0x1;_0x41fefb(_0x218691);});}exports['index']=function(_0x4384cc,_0x180444){var _0x3f7456={},_0x2487bd={},_0x3e2e61={'count':0x0,'rows':[]};var _0x16c1a6=_['map'](db['ChatInteraction'][_0x34ea('0x3f')],function(_0x117047){return{'name':_0x117047[_0x34ea('0x40')],'type':_0x117047['type'][_0x34ea('0x41')]};});_0x2487bd['model']=_[_0x34ea('0x31')](_0x16c1a6,'name');_0x2487bd[_0x34ea('0x42')]=_[_0x34ea('0x43')](_0x4384cc[_0x34ea('0x42')]);_0x2487bd['filters']=_[_0x34ea('0x44')](_0x2487bd['model'],_0x2487bd[_0x34ea('0x42')]);_0x3f7456[_0x34ea('0x45')]=_[_0x34ea('0x44')](_0x2487bd[_0x34ea('0x46')],qs['fields'](_0x4384cc[_0x34ea('0x42')][_0x34ea('0x47')]));_0x3f7456[_0x34ea('0x45')]=_0x3f7456[_0x34ea('0x45')][_0x34ea('0x48')]?_0x3f7456[_0x34ea('0x45')]:_0x2487bd[_0x34ea('0x46')];if(!_0x4384cc['query'][_0x34ea('0x49')](_0x34ea('0x4a'))){_0x3f7456[_0x34ea('0x28')]=qs[_0x34ea('0x28')](_0x4384cc[_0x34ea('0x42')][_0x34ea('0x28')]);_0x3f7456[_0x34ea('0x26')]=qs[_0x34ea('0x26')](_0x4384cc[_0x34ea('0x42')][_0x34ea('0x26')]);}_0x3f7456[_0x34ea('0x4b')]=qs[_0x34ea('0x4c')](_0x4384cc[_0x34ea('0x42')]['sort']);_0x3f7456[_0x34ea('0x4d')]=qs[_0x34ea('0x4e')](_[_0x34ea('0x4f')](_0x4384cc['query'],_0x2487bd[_0x34ea('0x4e')]),_0x16c1a6);var _0x4f00f0=[];var _0x16497b=squel[_0x34ea('0x50')]()['field']('id')[_0x34ea('0x51')](_0x34ea('0x2c'))[_0x34ea('0x51')]('color')['from'](_0x34ea('0x52'));var _0x481054=squel['select']()[_0x34ea('0x51')]('u.id')[_0x34ea('0x51')](_0x34ea('0x53'))[_0x34ea('0x51')](_0x34ea('0x54'))[_0x34ea('0x55')](_0x34ea('0x56'),'ui')[_0x34ea('0x57')](_0x34ea('0x58'),'u',_0x34ea('0x59'));var _0x30d4a5=squel[_0x34ea('0x50')]()[_0x34ea('0x55')](_0x34ea('0x5a'),'i')[_0x34ea('0x57')](_0x34ea('0x5b'),'c',_0x34ea('0x5c'))['left_join'](_0x34ea('0x58'),'o','o.id\x20=\x20i.UserId')[_0x34ea('0x57')](_0x34ea('0x5d'),'a',_0x34ea('0x5e'))[_0x34ea('0x57')](_0x34ea('0x5f'),'me',_0x34ea('0x60'))['left_join'](_0x34ea('0x61'),'it',_0x34ea('0x62'))[_0x34ea('0x57')](_0x34ea('0x52'),'t',_0x34ea('0x63'));var _0x55549e=squel[_0x34ea('0x64')]();var _0x5814ef=[];var _0x58b428=squel['expr']();var _0x3247f0;if(_0x4384cc['query'][_0x34ea('0x65')]){_0x3247f0=as['parseSearch'](_0x4384cc[_0x34ea('0x42')]['search']);var _0x3d649f=_0x3247f0['sqlOperator'];for(var _0xd5ed90=0x0;_0xd5ed90<_0x3247f0[_0x34ea('0x66')][_0x34ea('0x48')];_0xd5ed90++){var _0x83c14e=_0x3247f0[_0x34ea('0x66')][_0xd5ed90];var _0x4916f9='i';var _0x4c59b0=_[_0x34ea('0x67')](_0x16c1a6,[_0x34ea('0x2c'),_0x83c14e[_0x34ea('0x51')]]);if(!_0x4c59b0){switch(_0x83c14e[_0x34ea('0x51')]){case _0x34ea('0x68'):if(_0x83c14e[_0x34ea('0x69')]==0x1){_0x30d4a5[_0x34ea('0x6a')]('`'+_0x83c14e[_0x34ea('0x51')]+_0x34ea('0x6b'));}else{_0x30d4a5['having']('`'+_0x83c14e[_0x34ea('0x51')]+_0x34ea('0x6c'));}break;case _0x34ea('0x6d'):if(_0x83c14e['operator']==='$substring'){if(_0x83c14e[_0x34ea('0x69')][_0x34ea('0x6e')]('\x20')[_0x34ea('0x48')]>0x1){_0x55549e[_0x3d649f]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x34ea('0x6f')](_0x83c14e[_0x34ea('0x69')]),null);}else{var _0x38542d='%'+_0x83c14e['value']+'%';_0x55549e[_0x3d649f](_0x34ea('0x70'),_0x38542d,_0x38542d,_0x38542d);}}else{_0x4c59b0=_[_0x34ea('0x67')](_0x16c1a6,['name',_0x34ea('0x71')]);_0x83c14e[_0x34ea('0x51')]=_0x34ea('0x71');_0x5850f0=as['buildExpression'](_0x4916f9,_0x4c59b0[_0x34ea('0x72')],_0x83c14e);_0x55549e[_0x3d649f](_0x5850f0['text'],_0x5850f0[_0x34ea('0x69')][_0x34ea('0x73')],_0x5850f0[_0x34ea('0x69')][_0x34ea('0x24')]);}break;case'Tag':var _0x14cfe0=_0x83c14e[_0x34ea('0x69')]['split'](',')[_0x34ea('0x31')](function(_0x5cb452){return Number(_0x5cb452);});_0x14cfe0[_0x34ea('0x74')](function(_0x39296e){_0x58b428['or'](_0x34ea('0x75'),'%,'+_0x39296e+',%');});_0x5814ef=_['union'](_0x5814ef,_0x14cfe0);break;case _0x34ea('0x76'):if(_0x83c14e[_0x34ea('0x77')]===_0x34ea('0x78')){_0x55549e[_0x3d649f](_0x34ea('0x79'),'%'+_0x83c14e['value']+'%',null);}else{_0x4c59b0=_[_0x34ea('0x67')](_0x16c1a6,[_0x34ea('0x2c'),_0x34ea('0x3b')]);_0x83c14e[_0x34ea('0x51')]='UserId';_0x5850f0=as['buildExpression'](_0x4916f9,_0x4c59b0[_0x34ea('0x72')],_0x83c14e);_0x55549e[_0x3d649f](_0x5850f0[_0x34ea('0x7a')],_0x5850f0['value'][_0x34ea('0x73')],_0x5850f0[_0x34ea('0x69')][_0x34ea('0x24')]);}break;case'body':_0x5850f0=as['buildExpression']('me',null,_0x83c14e);_0x55549e[_0x3d649f](_0x5850f0['text'],_0x5850f0[_0x34ea('0x69')]['start'],_0x5850f0[_0x34ea('0x69')]['end']);break;}}else{var _0x5850f0=as['buildExpression'](_0x4916f9,_0x4c59b0[_0x34ea('0x72')],_0x83c14e);_0x55549e[_0x3d649f](_0x5850f0[_0x34ea('0x7a')],_0x5850f0[_0x34ea('0x69')][_0x34ea('0x73')],_0x5850f0[_0x34ea('0x69')][_0x34ea('0x24')]);}}}else{var _0x18fdb9=_(_0x4384cc[_0x34ea('0x42')])[_0x34ea('0x43')]()['map'](function(_0x13d47c){return _['some'](_0x16c1a6,['name',_0x13d47c])?_0x13d47c:undefined;})[_0x34ea('0x7b')]()['value']();if(!_[_0x34ea('0x7c')](_0x18fdb9)){_0x18fdb9[_0x34ea('0x74')](function(_0x3bdb7b){if(_0x3bdb7b==='ChatWebsiteId'){_0x30d4a5[_0x34ea('0x4d')]('i.ChatWebsiteId\x20IN\x20?',[][_0x34ea('0x7d')](_0x4384cc[_0x34ea('0x42')][_0x3bdb7b]));}else if(_0x3bdb7b===_0x34ea('0x7e')){var _0xbde6b2=JSON[_0x34ea('0x7f')](_0x4384cc[_0x34ea('0x42')][_0x3bdb7b])[_0x34ea('0x80')];var _0x2625e5=JSON['parse'](_0x4384cc[_0x34ea('0x42')][_0x3bdb7b])[_0x34ea('0x81')];_0x30d4a5[_0x34ea('0x4d')](_0x34ea('0x82'),_0xbde6b2,_0x2625e5);}else{if(_0x4384cc[_0x34ea('0x42')][_0x3bdb7b]==='null'){_0x30d4a5[_0x34ea('0x4d')]('i.'+_0x3bdb7b+'\x20IS\x20NULL');}else{_0x30d4a5[_0x34ea('0x4d')]('i.'+_0x3bdb7b+'\x20=\x20?',_0x4384cc['query'][_0x3bdb7b]);}}});}if(_0x4384cc['query'][_0x34ea('0x83')]){if(_0x4384cc[_0x34ea('0x42')][_0x34ea('0x83')]==0x1){_0x30d4a5['having'](_0x34ea('0x84'));}else{_0x30d4a5['having'](_0x34ea('0x85'));}}if(_0x4384cc['query']['tag']){_0x5814ef=_[_0x34ea('0x86')](_0x4384cc[_0x34ea('0x42')][_0x34ea('0x87')])?_0x4384cc[_0x34ea('0x42')][_0x34ea('0x87')]:new Array(_0x4384cc['query'][_0x34ea('0x87')]);_0x5814ef['forEach'](function(_0x56f17c){_0x58b428['or'](_0x34ea('0x75'),'%,'+_0x56f17c+',%');});}if(_0x4384cc[_0x34ea('0x42')][_0x34ea('0x88')]){var _0xc58265=_0x4384cc['query'][_0x34ea('0x88')][_0x34ea('0x89')]('\x5c','\x5c\x5c')[_0x34ea('0x89')](/'/g,'\x27\x27');if(qs[_0x34ea('0x8a')](_0xc58265)){_0x55549e['or'](_0x34ea('0x8b'),_0xc58265+'%');}else{_0x55549e['or'](_0x34ea('0x8c'),qs[_0x34ea('0x6f')](_0xc58265))['or'](_0x34ea('0x8d'),_0xc58265+'%');}}}_0x30d4a5[_0x34ea('0x4d')](_0x55549e);_0x30d4a5[_0x34ea('0x8e')](_0x34ea('0x8f'));var _0x2365a7={'type':db[_0x34ea('0x90')][_0x34ea('0x91')][_0x34ea('0x92')],'raw':!![]};var _0x4822a5=_0x30d4a5[_0x34ea('0x93')]();_0x4822a5[_0x34ea('0x51')](_0x34ea('0x8f'));_0x4822a5['field'](_0x34ea('0x94'),'unreadMessages');if(_0x3f7456[_0x34ea('0x4b')]){_0x3f7456[_0x34ea('0x4b')][_0x34ea('0x74')](function(_0x15ac2a){var _0x146a83=_0x15ac2a[0x0]===_0x34ea('0x95')?_0x15ac2a[0x0]:'i.'+_0x15ac2a[0x0];_0x30d4a5[_0x34ea('0x4b')](_0x146a83,_0x15ac2a[0x1]===_0x34ea('0x96')?![]:!![]);});}if(!_[_0x34ea('0x7c')](_0x5814ef)){_0x30d4a5['having'](_0x58b428);_0x4822a5[_0x34ea('0x4d')]('t.id\x20IN\x20?',_0x5814ef);}BPromise[_0x34ea('0x97')]()[_0x34ea('0x17')](function(){if(!_0x3247f0){if(_0x4384cc[_0x34ea('0x42')][_0x34ea('0x98')])return;_0x4822a5[_0x34ea('0x4d')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');_0x30d4a5[_0x34ea('0x4d')]('i.ChatWebsiteId\x20IS\x20NOT\x20NULL');return;}if(_0x4384cc['user']['role']!==_0x34ea('0x2f'))return;return _0x4384cc[_0x34ea('0x99')][_0x34ea('0x9a')]({'attributes':['id'],'raw':!![]})[_0x34ea('0x17')](function(_0x4d5eb8){if(_[_0x34ea('0x7c')](_0x4d5eb8)){_0x4822a5[_0x34ea('0x4d')](_0x34ea('0x9b'));_0x30d4a5[_0x34ea('0x4d')](_0x34ea('0x9b'));}else{_0x4822a5['where'](_0x34ea('0x9c'),_['map'](_0x4d5eb8,'id'));_0x30d4a5[_0x34ea('0x4d')](_0x34ea('0x9c'),_[_0x34ea('0x31')](_0x4d5eb8,'id'));}});})[_0x34ea('0x17')](function(){if(_0x4384cc[_0x34ea('0x99')][_0x34ea('0x9d')]==='agent'&&!_0x3247f0&&!_0x4384cc[_0x34ea('0x42')][_0x34ea('0x98')])return[];return db[_0x34ea('0x9e')][_0x34ea('0x42')](_0x4822a5['toString'](),_0x2365a7);})[_0x34ea('0x17')](function(_0x13dfe2){_0x3e2e61['count']=_0x13dfe2[_0x34ea('0x48')];if(_0x3e2e61[_0x34ea('0x29')]===0x0)return[];return db[_0x34ea('0x9e')][_0x34ea('0x42')](_0x16497b[_0x34ea('0x9f')](),_0x2365a7)[_0x34ea('0x17')](function(_0x4e4947){_0x4f00f0=_[_0x34ea('0xa0')](_0x4e4947,'id');_0x2365a7=_[_0x34ea('0xa1')](_0x2365a7,{'model':db[_0x34ea('0xa2')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x4384cc[_0x34ea('0x42')][_0x34ea('0x47')]){_0x3f7456[_0x34ea('0x45')][_0x34ea('0x74')](function(_0x5f10a6){_0x30d4a5[_0x34ea('0x51')]('i.'+_0x5f10a6);});}else{_0x30d4a5[_0x34ea('0x51')](_0x34ea('0x94'),_0x34ea('0x68'));_0x30d4a5['field'](_0x34ea('0xa3'),_0x34ea('0xa4'));_0x30d4a5[_0x34ea('0x51')](_0x34ea('0xa5'),_0x34ea('0xa6'));_0x30d4a5[_0x34ea('0x51')](_0x34ea('0xa7'),_0x34ea('0x95'));_0x30d4a5[_0x34ea('0x51')](_0x34ea('0xa8'));_0x30d4a5[_0x34ea('0x51')]('c.firstName',_0x34ea('0xa9'));_0x30d4a5[_0x34ea('0x51')](_0x34ea('0xaa'),_0x34ea('0xab'));_0x30d4a5['field'](_0x34ea('0xac'),_0x34ea('0xad'));_0x30d4a5[_0x34ea('0x51')](_0x34ea('0xae'),'Contact.phone');_0x30d4a5[_0x34ea('0x51')]('c.mobile','Contact.mobile');_0x30d4a5[_0x34ea('0x51')](_0x34ea('0xaf'),_0x34ea('0xb0'));_0x30d4a5['field'](_0x34ea('0xb1'),_0x34ea('0xb2'));_0x30d4a5[_0x34ea('0x51')](_0x34ea('0xb3'),'Owner.internal');_0x30d4a5[_0x34ea('0x51')](_0x34ea('0xb4'),_0x34ea('0x33'));}if(_0x3f7456[_0x34ea('0x28')])_0x30d4a5[_0x34ea('0x28')](_0x3f7456[_0x34ea('0x28')]);if(_0x3f7456[_0x34ea('0x26')])_0x30d4a5[_0x34ea('0x26')](_0x3f7456[_0x34ea('0x26')]);return db[_0x34ea('0x9e')][_0x34ea('0x42')](_0x30d4a5['toString'](),_0x2365a7);})[_0x34ea('0x17')](function(_0x347acd){if(_0x347acd['length']>0x0)_0x481054[_0x34ea('0x4d')](_0x34ea('0xb5'),_[_0x34ea('0x31')](_0x347acd,'id'));return db['sequelize'][_0x34ea('0x42')](_0x481054['toString'](),_0x2365a7)[_0x34ea('0x17')](function(_0x1d48b5){var _0x4b424b=_[_0x34ea('0xb6')](_0x1d48b5,'ChatInteractionId');var _0x17e783=[];_0x347acd[_0x34ea('0x74')](function(_0x6a7b4a){_0x17e783[_0x34ea('0x35')](updateChatInteraction(_0x6a7b4a,_0x4f00f0,_0x4b424b));});return BPromise['all'](_0x17e783);});});})[_0x34ea('0x17')](function(_0x2f10c4){_0x3e2e61['rows']=_0x2f10c4;return _0x3e2e61;})[_0x34ea('0x17')](respondWithFilteredResult(_0x180444,_0x3f7456))[_0x34ea('0x21')](handleError(_0x180444,null));};exports[_0x34ea('0xb7')]=function(_0x40afee,_0x4d0ae5){var _0x31948f={'raw':![],'where':{'id':_0x40afee[_0x34ea('0xb8')]['id']}},_0x542b5f={};_0x542b5f[_0x34ea('0x46')]=_[_0x34ea('0x43')](db[_0x34ea('0xa2')]['rawAttributes']);_0x542b5f['query']=_[_0x34ea('0x43')](_0x40afee[_0x34ea('0x42')]);_0x542b5f[_0x34ea('0x4e')]=_[_0x34ea('0x44')](_0x542b5f[_0x34ea('0x46')],_0x542b5f[_0x34ea('0x42')]);_0x31948f['attributes']=_[_0x34ea('0x44')](_0x542b5f[_0x34ea('0x46')],qs[_0x34ea('0x47')](_0x40afee[_0x34ea('0x42')][_0x34ea('0x47')]));_0x31948f[_0x34ea('0x45')]=_0x31948f[_0x34ea('0x45')][_0x34ea('0x48')]?_0x31948f['attributes']:_0x542b5f[_0x34ea('0x46')];if(_0x40afee[_0x34ea('0x42')]['includeAll']){_0x31948f['include']=[{'all':!![]}];}_0x31948f=_[_0x34ea('0xa1')]({},_0x31948f,_0x40afee[_0x34ea('0xb9')]);return db['ChatInteraction'][_0x34ea('0x67')](_0x31948f)[_0x34ea('0x17')](handleEntityNotFound(_0x4d0ae5,null))[_0x34ea('0x17')](respondWithResult(_0x4d0ae5,null))[_0x34ea('0x21')](handleError(_0x4d0ae5,null));};exports['create']=function(_0x480ce2,_0x5c429e){return db[_0x34ea('0xa2')][_0x34ea('0xba')](_0x480ce2['body'],{})['then'](respondWithResult(_0x5c429e,0xc9))['catch'](handleError(_0x5c429e,null));};exports[_0x34ea('0xbb')]=function(_0x11d731,_0x38d687){if(_0x11d731[_0x34ea('0xbc')]['id']){delete _0x11d731[_0x34ea('0xbc')]['id'];}return db[_0x34ea('0xa2')]['find']({'where':{'id':_0x11d731[_0x34ea('0xb8')]['id']}})['then'](handleEntityNotFound(_0x38d687,null))[_0x34ea('0x17')](saveUpdates(_0x11d731[_0x34ea('0xbc')],null))[_0x34ea('0x17')](respondWithResult(_0x38d687,null))[_0x34ea('0x21')](handleError(_0x38d687,null));};exports['destroy']=function(_0x2b0acd,_0x1011a2){return db[_0x34ea('0xa2')][_0x34ea('0x67')]({'where':{'id':_0x2b0acd[_0x34ea('0xb8')]['id']}})[_0x34ea('0x17')](handleEntityNotFound(_0x1011a2,null))[_0x34ea('0x17')](removeEntity(_0x1011a2,null))[_0x34ea('0x21')](handleError(_0x1011a2,null));};exports['describe']=function(_0x5c2753,_0xdbd294){return db[_0x34ea('0xa2')][_0x34ea('0xbd')]()['then'](respondWithResult(_0xdbd294,null))['catch'](handleError(_0xdbd294,null));};exports['createVidaooSession']=function(_0x3922cd,_0x18784d){var _0x2e6b8b=_0x3922cd[_0x34ea('0xb8')]['id'];var _0x1a2f46;var _0x317c9f;var _0x2372ee;return db[_0x34ea('0xa2')][_0x34ea('0xbe')]({'where':{'id':_0x2e6b8b}})['then'](function(_0x32f3e3){_0x1a2f46=_0x32f3e3;return db[_0x34ea('0xbf')]['findOne']({'where':{'id':_0x32f3e3[_0x34ea('0x98')]},'attributes':['id',_0x34ea('0xc0'),_0x34ea('0xc1'),'vidaooTopic',_0x34ea('0xc2'),_0x34ea('0xc3')],'raw':!![]});})[_0x34ea('0x17')](function(_0x462c64){if(_0x462c64&&_0x462c64[_0x34ea('0xc0')]&&_0x462c64[_0x34ea('0xc1')]){_0x317c9f=_0x462c64;var _0x4a0d01={'interaction':{'id':_0x2e6b8b},'agent':{'id':_0x3922cd[_0x34ea('0x99')]['id'],'name':_0x3922cd[_0x34ea('0x99')][_0x34ea('0x2c')],'fullname':_0x3922cd[_0x34ea('0x99')][_0x34ea('0x32')],'email':_0x3922cd[_0x34ea('0x99')][_0x34ea('0xc4')]},'contact':_0x3922cd[_0x34ea('0xbc')][_0x34ea('0xc5')],'account':_0x3922cd[_0x34ea('0xbc')]['account']};var _0x26b9d3={'rejectUnauthorized':![],'method':_0x34ea('0xc6'),'url':_0x34ea('0xc7'),'headers':{'X-APIKEY':_0x462c64[_0x34ea('0xc0')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x3922cd[_0x34ea('0x99')][_0x34ea('0xc4')]],'buttons':null,'topic':_0x317c9f[_0x34ea('0xc8')],'note':_['isNull'](_0x317c9f[_0x34ea('0xc2')])?null:getMustacheRender(_0x317c9f[_0x34ea('0xc2')],_0x4a0d01),'metadata':null},'redirect':'follow','json':!![]};try{if(!_[_0x34ea('0xc9')](_0x317c9f[_0x34ea('0xc3')])){var _0x509622=getMustacheRender(_0x317c9f[_0x34ea('0xc3')],_0x4a0d01);var _0x3327fa=JSON[_0x34ea('0x7f')](_0x509622);_0x26b9d3['body'][_0x34ea('0xca')]=_0x3327fa;}}catch(_0x1ef257){throw new db[(_0x34ea('0x90'))][(_0x34ea('0xcb'))](_0x34ea('0xcc'));}return rp(_0x26b9d3);}else{throw new db['Sequelize']['ValidationError'](_0x34ea('0xcd'));}})[_0x34ea('0x17')](function(_0x4b4491){_0x2372ee=_0x4b4491;if(_0x2372ee['id']){var _0x22fa63={'body':_0x2372ee[_0x34ea('0xce')],'ChatWebsiteId':_0x317c9f['id'],'ChatInteractionId':_0x1a2f46['id'],'direction':_0x34ea('0xcf'),'UserId':_0x3922cd[_0x34ea('0x99')]['id']};return db['ChatMessage'][_0x34ea('0xba')](_0x22fa63,{});}else{throw new db['Sequelize'][(_0x34ea('0xcb'))](_0x34ea('0xd0'));}})[_0x34ea('0x17')](function(){return _0x1a2f46[_0x34ea('0xd1')]({'vidaooSessionId':_0x2372ee['id']});})[_0x34ea('0x17')](respondWithResult(_0x18784d,null))[_0x34ea('0x21')](handleError(_0x18784d,null));};exports['customUpdate']=function(_0x50b728,_0x492239){if(_0x50b728[_0x34ea('0xbc')]['id']){delete _0x50b728['body']['id'];}return db[_0x34ea('0xa2')][_0x34ea('0x67')]({'where':{'id':_0x50b728[_0x34ea('0xb8')]['id']},'include':[{'model':db[_0x34ea('0xd2')],'as':_0x34ea('0x6d')}]})[_0x34ea('0x17')](handleEntityNotFound(_0x492239,null))[_0x34ea('0x17')](saveUpdates(_0x50b728['body'],null))[_0x34ea('0x17')](respondWithResult(_0x492239,null))[_0x34ea('0x21')](handleError(_0x492239,null));};exports[_0x34ea('0xd3')]=function(_0x267b94,_0x316361){if(_0x267b94[_0x34ea('0xbc')]['id']){delete _0x267b94[_0x34ea('0xbc')]['id'];}return db[_0x34ea('0xa2')][_0x34ea('0x67')]({'where':{'id':_0x267b94[_0x34ea('0xb8')]['id']}})[_0x34ea('0x17')](function(_0x4a26b2){if(!_0x4a26b2){logger[_0x34ea('0x1e')]('abandonInteraction,\x20%s,\x20%s,\x20%s','abandon',0x194,_0x34ea('0xd4'));_0x316361[_0x34ea('0x22')](0x194);}else{if(_0x4a26b2['UserId']){throw new db[(_0x34ea('0x90'))][(_0x34ea('0xcb'))](_0x34ea('0xd5'));}}return _0x4a26b2;})['then'](function(_0x201557){if(_0x201557){return _0x201557[_0x34ea('0xbb')]({'closed':_0x267b94[_0x34ea('0xbc')][_0x34ea('0x3a')],'disposition':_0x267b94['body'][_0x34ea('0x3c')]})['then'](function(_0x3baefe){return _0x3baefe;});}})[_0x34ea('0x17')](function(){return respondWithRpcPromise('AbandonInteraction',_0x34ea('0xd3'),_0x267b94[_0x34ea('0xbc')],client9004);})[_0x34ea('0x17')](respondWithResult(_0x316361,null))[_0x34ea('0x21')](handleError(_0x316361,null));};exports[_0x34ea('0xd6')]=function(_0x24871b,_0x402f29){_0x24871b[_0x34ea('0xbc')][_0x34ea('0x2c')]=_0x24871b[_0x34ea('0xd7')]['originalname'];_0x24871b[_0x34ea('0xbc')][_0x34ea('0xd8')]=_0x24871b[_0x34ea('0xd7')][_0x34ea('0xd9')];_0x24871b['body'][_0x34ea('0x72')]=_0x24871b[_0x34ea('0xd7')][_0x34ea('0xda')];return db[_0x34ea('0xdb')][_0x34ea('0xba')](_0x24871b['body'])[_0x34ea('0x17')](respondWithResult(_0x402f29,0xc9))[_0x34ea('0x21')](handleError(_0x402f29,null));};exports[_0x34ea('0xdc')]=function(_0x5ac2c4,_0x15ff4b){return db[_0x34ea('0xa2')]['findOne']({'where':{'id':_0x5ac2c4['params']['id']},'raw':!![]})[_0x34ea('0x17')](handleEntityNotFound(_0x15ff4b,null))[_0x34ea('0x17')](function(_0x46f60a){if(_0x46f60a){if(_0x46f60a[_0x34ea('0x3a')]){return _0x15ff4b[_0x34ea('0x23')](0x193)[_0x34ea('0x25')]({'status':0x193,'message':'Unauthorized'});}return db[_0x34ea('0xdb')]['findOne']({'where':{'id':_0x5ac2c4[_0x34ea('0x42')][_0x34ea('0xdd')]},'raw':!![]})[_0x34ea('0x17')](handleEntityNotFound(_0x15ff4b,null));}})[_0x34ea('0x17')](function(_0x24959d){if(_0x24959d){var _0xaeae99=_0x24959d['ChatOfflineMessageId']!==null;var _0x13563c=path[_0x34ea('0xde')](config[_0x34ea('0xdf')],'server/files/attachments/');if(_0xaeae99){_0x13563c=path[_0x34ea('0xde')](_0x13563c,_0x34ea('0xe0'));}var _0x1df2e9=path[_0x34ea('0xde')](_0x13563c,_0x24959d['basename']);return _0x15ff4b[_0x34ea('0xe1')](_0x1df2e9);}})[_0x34ea('0x21')](handleError(_0x15ff4b,null));};exports[_0x34ea('0xe2')]=function(_0x1ab953,_0x4d2ff5){var _0x538e97=null;var _0x2c2f31=null;var _0xa56581=null;if(_0x1ab953[_0x34ea('0xbc')]['id']){delete _0x1ab953[_0x34ea('0xbc')]['id'];}if(_0x1ab953[_0x34ea('0xbc')][_0x34ea('0xe3')]){_0xa56581=path[_0x34ea('0xde')](config[_0x34ea('0xdf')],_0x34ea('0xe4'),util[_0x34ea('0xe5')](_0x34ea('0xe6'),Date[_0x34ea('0xe7')]()));_0x1ab953[_0x34ea('0xbc')][_0x34ea('0xe8')]=_0xa56581;}return db[_0x34ea('0xa2')][_0x34ea('0x67')]({'where':{'id':_0x1ab953[_0x34ea('0xb8')]['id']},'include':[{'model':db['ChatMessage'],'as':_0x34ea('0xe9'),'include':[{'model':db[_0x34ea('0x76')],'as':_0x34ea('0x76')}]}]})['then'](handleEntityNotFound(_0x4d2ff5,null))[_0x34ea('0x17')](saveUpdates(_0x1ab953[_0x34ea('0xbc')],null))['then'](function(_0x1f1693){if(_0x1f1693){_0x538e97=_0x1f1693;return db[_0x34ea('0xbf')]['find']({'where':{'id':_0x538e97[_0x34ea('0x98')]}});}})[_0x34ea('0x17')](function(_0x39f944){if(_0x39f944){_0x2c2f31=_0x39f944;return db[_0x34ea('0xd2')][_0x34ea('0x67')]({'where':{'id':_0x538e97[_0x34ea('0x71')]}});}})['then'](function(_0x11f23a){if(_0x11f23a){if(_0xa56581){var _0x146ce8=null;for(var _0x1f5805=0x1;_0x1f5805<_0x538e97[_0x34ea('0xe9')][_0x34ea('0x48')];++_0x1f5805){_0x146ce8=_0x538e97[_0x34ea('0xe9')][_0x1f5805];var _0x440ce9=_0x146ce8[_0x34ea('0x3b')]?util[_0x34ea('0xe5')](_0x34ea('0xea'),_0x2c2f31[_0x34ea('0xeb')],_0x146ce8[_0x34ea('0x3b')]):'System';var _0x2cd229=_0x1ab953['body'][_0x34ea('0xec')]||util[_0x34ea('0xe5')](_0x34ea('0xea'),_0x34ea('0xed'),_0x146ce8[_0x34ea('0x71')]);switch(_0x2c2f31[_0x34ea('0xee')]){case _0x34ea('0xef'):_0x440ce9=_0x146ce8[_0x34ea('0x3b')]?util[_0x34ea('0xe5')](_0x34ea('0xea'),_0x2c2f31['agentAlias'],_0x146ce8[_0x34ea('0x3b')]):_0x34ea('0xf0');break;case _0x34ea('0xf1'):_0x440ce9=_0x146ce8[_0x34ea('0x3b')]?_0x146ce8[_0x34ea('0x76')][_0x34ea('0xf2')]||_0x146ce8['User'][_0x34ea('0x32')]:_0x34ea('0xf0');break;case _0x34ea('0xf3'):_0x440ce9=_0x146ce8['UserId']?_0x146ce8[_0x34ea('0x76')][_0x34ea('0x32')]:'System';break;default:_0x440ce9=_0x146ce8['UserId']?util[_0x34ea('0xe5')](_0x34ea('0xea'),_0x2c2f31[_0x34ea('0xeb')],_0x146ce8[_0x34ea('0x3b')]):_0x34ea('0xf0');}var _0x381630=util[_0x34ea('0xe5')]('[%s]\x20%s:\x20%s\x0a',moment(_0x146ce8['createdAt'])[_0x34ea('0xe5')](_0x34ea('0xf4')),_0x146ce8[_0x34ea('0xf5')]==='in'?_0x2cd229:_0x440ce9,_0x146ce8['body']);if(!_0x146ce8[_0x34ea('0xf6')]){fs[_0x34ea('0xf7')](_0xa56581,_0x381630);}}return db[_0x34ea('0xf8')][_0x34ea('0xbe')]({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0x34ea('0xf9'),'raw':!![],'include':[{'model':db[_0x34ea('0xfa')],'as':'CloudProvider','raw':!![]}]}]});}}})[_0x34ea('0x17')](function(_0x4ff9c6){if(!_0x4ff9c6||!_0x4ff9c6[_0x34ea('0xf9')]||!_0x1ab953['body'])return _0x538e97;var _0xd11b7d=_0x4ff9c6[_0x34ea('0xfb')]();return respondWithRpcPromise(_0x34ea('0xfc'),_0x34ea('0xfd'),{'account':_0xd11b7d,'message':{'from':util[_0x34ea('0xe5')](_0x34ea('0xfe'),_0x4ff9c6['name'],_0x4ff9c6[_0x34ea('0xc4')]||_0x4ff9c6['Smtp'][_0x34ea('0x99')]),'to':_0x1ab953[_0x34ea('0xbc')][_0x34ea('0xe3')],'subject':_0x34ea('0xff'),'text':util[_0x34ea('0xe5')](_0x34ea('0x100'),_0x1ab953[_0x34ea('0xbc')][_0x34ea('0xe3')]),'attachments':[{'path':_0xa56581}]}})[_0x34ea('0x17')](function(){return _0x538e97;})[_0x34ea('0x21')](function(_0x4da7a5){logger[_0x34ea('0x1e')](_0x4da7a5);});})[_0x34ea('0x17')](respondWithStatusCode(_0x4d2ff5,0xc8))['catch'](handleError(_0x4d2ff5,null));};exports[_0x34ea('0x101')]=function(_0x4a0a5e,_0x29d8d1){return db[_0x34ea('0x102')][_0x34ea('0x67')]({'where':{'id':_0x4a0a5e[_0x34ea('0xb8')]['id']}})[_0x34ea('0x17')](handleEntityNotFound(_0x29d8d1,null))[_0x34ea('0x17')](function(_0x590951){if(_0x590951){return _0x590951[_0x34ea('0x101')](_0x4a0a5e[_0x34ea('0xbc')][_0x34ea('0x103')],_[_0x34ea('0x104')](_0x4a0a5e[_0x34ea('0xbc')],[_0x34ea('0x103'),'id'])||{});}})['then'](respondWithResult(_0x29d8d1,null))[_0x34ea('0x21')](handleError(_0x29d8d1,null));};exports[_0x34ea('0x105')]=function(_0x3133c3,_0x1fb802){var _0x1b57b1={'raw':![],'where':{}};var _0x455bac={};var _0x22ebe2={'count':0x0,'rows':[]};return db[_0x34ea('0xa2')][_0x34ea('0xbe')]({'where':{'id':_0x3133c3['params']['id']}})[_0x34ea('0x17')](handleEntityNotFound(_0x1fb802,null))[_0x34ea('0x17')](function(_0x41eb2b){if(_0x41eb2b){_0x455bac[_0x34ea('0x46')]=_[_0x34ea('0x43')](db[_0x34ea('0x102')][_0x34ea('0x3f')]);_0x455bac[_0x34ea('0x42')]=_[_0x34ea('0x43')](_0x3133c3[_0x34ea('0x42')]);_0x455bac['filters']=_['intersection'](_0x455bac[_0x34ea('0x46')],_0x455bac[_0x34ea('0x42')]);_0x1b57b1[_0x34ea('0x45')]=_['intersection'](_0x455bac['model'],qs[_0x34ea('0x47')](_0x3133c3['query'][_0x34ea('0x47')]));_0x1b57b1[_0x34ea('0x45')]=_0x1b57b1[_0x34ea('0x45')][_0x34ea('0x48')]?_0x1b57b1[_0x34ea('0x45')]:_0x455bac['model'];if(!_0x3133c3['query'][_0x34ea('0x49')](_0x34ea('0x4a'))){_0x1b57b1[_0x34ea('0x28')]=qs[_0x34ea('0x28')](_0x3133c3[_0x34ea('0x42')][_0x34ea('0x28')]);_0x1b57b1[_0x34ea('0x26')]=qs['offset'](_0x3133c3[_0x34ea('0x42')][_0x34ea('0x26')]);}_0x1b57b1[_0x34ea('0x4b')]=qs[_0x34ea('0x4c')](_0x3133c3[_0x34ea('0x42')][_0x34ea('0x4c')]);_0x1b57b1[_0x34ea('0x4d')]=qs[_0x34ea('0x4e')](_[_0x34ea('0x4f')](_0x3133c3[_0x34ea('0x42')],_0x455bac[_0x34ea('0x4e')]));_0x1b57b1[_0x34ea('0x4d')][_0x34ea('0x106')]=_0x41eb2b['id'];if(_0x3133c3[_0x34ea('0x42')][_0x34ea('0x88')]){_0x1b57b1[_0x34ea('0x4d')]=_['merge'](_0x1b57b1[_0x34ea('0x4d')],{'$or':_['map'](_0x1b57b1[_0x34ea('0x45')],function(_0x30be05){var _0x551851={};_0x551851[_0x30be05]={'$like':'%'+_0x3133c3[_0x34ea('0x42')]['filter']+'%'};return _0x551851;})});}if(_0x3133c3[_0x34ea('0x42')][_0x34ea('0x80')]){var _0x48e3f4=_0x3133c3[_0x34ea('0x42')]['$gte']['split'](',');var _0x49e56e={};_0x49e56e[_0x48e3f4[0x0]]={'$gte':moment(_0x48e3f4[0x1])['format'](_0x34ea('0x107'))};_0x1b57b1['where']=_['merge'](_0x1b57b1[_0x34ea('0x4d')],_0x49e56e);}_0x1b57b1=_[_0x34ea('0xa1')]({},_0x1b57b1,_0x3133c3[_0x34ea('0xb9')]);return db['ChatMessage'][_0x34ea('0x29')]({'where':_0x1b57b1[_0x34ea('0x4d')]})[_0x34ea('0x17')](function(_0x133d0e){_0x22ebe2[_0x34ea('0x29')]=_0x133d0e;if(_0x3133c3[_0x34ea('0x42')][_0x34ea('0x108')]){_0x1b57b1[_0x34ea('0x109')]=[{'all':!![]}];}return db['ChatMessage'][_0x34ea('0x10a')](_0x1b57b1);})[_0x34ea('0x17')](function(_0x1a90d8){_0x22ebe2[_0x34ea('0x10b')]=_0x1a90d8;return _0x22ebe2;});}})[_0x34ea('0x17')](respondWithFilteredResult(_0x1fb802,_0x1b57b1))[_0x34ea('0x21')](handleError(_0x1fb802,null));};exports[_0x34ea('0x10c')]=function(_0x46f1b6,_0x18ad0c){var _0x255029={'where':{}},_0x4301bd={},_0x813efb={'count':0x0,'rows':[]};return db[_0x34ea('0xa2')][_0x34ea('0xbe')]({'where':{'id':_0x46f1b6[_0x34ea('0xb8')]['id']}})[_0x34ea('0x17')](handleEntityNotFound(_0x18ad0c,null))[_0x34ea('0x17')](function(_0x42e64f){if(_0x42e64f){_0x4301bd['model']=_[_0x34ea('0x43')](db[_0x34ea('0x102')]['rawAttributes']);_0x4301bd['query']=_[_0x34ea('0x43')](_0x46f1b6[_0x34ea('0x42')]);_0x4301bd[_0x34ea('0x4e')]=_[_0x34ea('0x44')](_0x4301bd[_0x34ea('0x46')],_0x4301bd['query']);_0x255029[_0x34ea('0x45')]=_[_0x34ea('0x44')](_0x4301bd[_0x34ea('0x46')],qs[_0x34ea('0x47')](_0x46f1b6[_0x34ea('0x42')][_0x34ea('0x47')]));_0x255029['attributes']=_0x255029['attributes']['length']?_0x255029['attributes']:_0x4301bd['model'];if(!_0x46f1b6[_0x34ea('0x42')]['hasOwnProperty'](_0x34ea('0x4a'))){_0x255029['limit']=qs[_0x34ea('0x28')](_0x46f1b6['query'][_0x34ea('0x28')]);_0x255029[_0x34ea('0x26')]=qs['offset'](_0x46f1b6[_0x34ea('0x42')][_0x34ea('0x26')]);}_0x255029['order']=qs[_0x34ea('0x4c')](_0x46f1b6[_0x34ea('0x42')]['sort']);_0x255029['where']=qs['filters'](_['pick'](_0x46f1b6['query'],_0x4301bd[_0x34ea('0x4e')]));_0x255029[_0x34ea('0x4d')]['ChatInteractionId']=_0x42e64f['id'];if(_0x46f1b6[_0x34ea('0x42')][_0x34ea('0x88')]){_0x255029[_0x34ea('0x4d')]=_['merge'](_0x255029['where'],{'$or':_[_0x34ea('0x31')](_0x255029['attributes'],function(_0x5f0bdb){var _0x47d824={};_0x47d824[_0x5f0bdb]={'$like':'%'+_0x46f1b6[_0x34ea('0x42')][_0x34ea('0x88')]+'%'};return _0x47d824;})});}_0x255029[_0x34ea('0x4d')][_0x34ea('0xf6')]=![];if(_0x46f1b6[_0x34ea('0x42')]['id']){_0x255029[_0x34ea('0x4d')]['id']={'$gt':_0x46f1b6[_0x34ea('0x42')]['id']};}_0x255029=_[_0x34ea('0xa1')]({},_0x255029,_0x46f1b6[_0x34ea('0xb9')]);return db['ChatMessage'][_0x34ea('0x29')]({'where':_0x255029[_0x34ea('0x4d')]})[_0x34ea('0x17')](function(_0x3f6508){_0x813efb[_0x34ea('0x29')]=_0x3f6508;_0x255029[_0x34ea('0x109')]=[];if(_0x46f1b6[_0x34ea('0x42')][_0x34ea('0x10d')]){_0x255029[_0x34ea('0x109')][_0x34ea('0x35')]({'model':db[_0x34ea('0x76')],'as':_0x34ea('0x76'),'attributes':['id',_0x34ea('0x32'),_0x34ea('0xf2')]});}if(_0x46f1b6[_0x34ea('0x42')][_0x34ea('0x108')]){_0x255029[_0x34ea('0x109')]=[{'all':!![]}];}return db[_0x34ea('0x102')][_0x34ea('0x10a')](_0x255029);})['then'](function(_0x1c2b19){_0x813efb['rows']=_0x1c2b19;return _0x813efb;});}})[_0x34ea('0x17')](respondWithFilteredResult(_0x18ad0c,_0x255029))['catch'](handleError(_0x18ad0c,null));};exports[_0x34ea('0x10e')]=function(_0x257843,_0x1d7450){return db[_0x34ea('0xa2')][_0x34ea('0x67')]({'where':{'id':_0x257843[_0x34ea('0xb8')]['id']}})[_0x34ea('0x17')](handleEntityNotFound(_0x1d7450,null))['then'](function(_0x5c1242){if(_0x5c1242){return _0x5c1242[_0x34ea('0x10f')](_0x257843[_0x34ea('0xbc')][_0x34ea('0x103')],_[_0x34ea('0x104')](_0x257843['body'],[_0x34ea('0x103'),'id'])||{})['spread'](function(){return db[_0x34ea('0x110')][_0x34ea('0x10a')]({'attributes':['id',_0x34ea('0x2c'),_0x34ea('0x111')],'where':{'id':_0x257843['body'][_0x34ea('0x103')]}});})[_0x34ea('0x17')](function(_0x27c98e){socket['emit'](_0x34ea('0x112'),{'id':Number(_0x257843['params']['id']),'tags':_0x27c98e||[]});return{'id':Number(_0x257843[_0x34ea('0xb8')]['id']),'tags':_0x27c98e||[]};});}})[_0x34ea('0x17')](respondWithResult(_0x1d7450,null))[_0x34ea('0x21')](handleError(_0x1d7450,null));};exports[_0x34ea('0x113')]=function(_0x47dd74,_0x38c831){return db['ChatInteraction'][_0x34ea('0x67')]({'where':{'id':_0x47dd74[_0x34ea('0xb8')]['id']}})[_0x34ea('0x17')](handleEntityNotFound(_0x38c831,null))[_0x34ea('0x17')](function(_0x3d596c){if(_0x3d596c){return _0x3d596c[_0x34ea('0x113')](_0x47dd74['query'][_0x34ea('0x103')]);}})[_0x34ea('0x17')](respondWithStatusCode(_0x38c831,null))[_0x34ea('0x21')](handleError(_0x38c831,null));};exports[_0x34ea('0xe1')]=function(_0x57fa0b,_0x35d23b){var _0x1c28f8=moment()[_0x34ea('0x114')]()[_0x34ea('0x9f')]();var _0x3505b3=path['join'](config['root'],'server','files','tmp');var _0x5111c4=path[_0x34ea('0xde')](config[_0x34ea('0xdf')],'server',_0x34ea('0x115'),_0x34ea('0x116'));var _0xfc300b=path[_0x34ea('0xde')](_0x3505b3,_0x1c28f8);var _0x27cd0c=util[_0x34ea('0xe5')](_0x34ea('0x117'),_0x57fa0b[_0x34ea('0xb8')]['id'],_0x1c28f8);var _0x111abd=path[_0x34ea('0xde')](_0x3505b3,_0x27cd0c);var _0x2369e5=[];_0x2369e5[_0x34ea('0x35')]({'model':db[_0x34ea('0x76')],'as':_0x34ea('0x76'),'attributes':['id','fullname'],'raw':!![]});_0x2369e5[_0x34ea('0x35')]({'model':db[_0x34ea('0xd2')],'as':_0x34ea('0x6d'),'attributes':['id',_0x34ea('0x118'),_0x34ea('0x119')],'raw':!![]});if(_0x57fa0b[_0x34ea('0x42')][_0x34ea('0x116')]){_0x2369e5[_0x34ea('0x35')]({'model':db[_0x34ea('0xdb')],'as':'Attachment','raw':!![]});}var _0x346db6=[{'model':db[_0x34ea('0x102')],'as':_0x34ea('0xe9'),'attributes':['id',_0x34ea('0xbc'),'createdAt',_0x34ea('0xf5'),_0x34ea('0xf6'),_0x34ea('0x83')],'include':_0x2369e5}];_0x346db6[_0x34ea('0x35')]({'model':db[_0x34ea('0xbf')],'as':_0x34ea('0x11a'),'attributes':['id',_0x34ea('0x2c')]});_0x346db6['push']({'model':db[_0x34ea('0x76')],'as':_0x34ea('0x11b'),'attributes':['id',_0x34ea('0x32')]});return db[_0x34ea('0xa2')][_0x34ea('0x67')]({'where':{'id':_0x57fa0b[_0x34ea('0xb8')]['id']},'include':_0x346db6})[_0x34ea('0x17')](handleEntityNotFound(_0x35d23b,null))[_0x34ea('0x17')](function(_0x45c213){if(_0x45c213){var _0x27ff9a=_0x45c213[_0x34ea('0x11c')]({'plain':!![]});fs[_0x34ea('0x11d')](_0xfc300b);var _0x542e4a={'channel':_0x34ea('0x11e'),'account':_0x27ff9a['Account'][_0x34ea('0x2c')],'agent':_0x27ff9a[_0x34ea('0x11b')]?_0x27ff9a[_0x34ea('0x11b')][_0x34ea('0x32')]:_0x34ea('0x11f'),'createdAt':moment(_0x27ff9a[_0x34ea('0x7e')])[_0x34ea('0xe5')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'closedAt':_0x27ff9a['closed']?moment(_0x27ff9a[_0x34ea('0x120')])['format'](_0x34ea('0x107'))[_0x34ea('0x9f')]():'','disposition':_0x27ff9a[_0x34ea('0x3c')],'chatInfo':{'browser':_0x27ff9a[_0x34ea('0x121')],'os':_0x27ff9a[_0x34ea('0x122')],'referer':_0x27ff9a[_0x34ea('0x123')],'customerIp':_0x27ff9a['customerIp'],'customerPort':_0x27ff9a[_0x34ea('0x124')]?_0x27ff9a[_0x34ea('0x124')]:'N.A.'},'messages':_(_0x27ff9a['Messages'])[_0x34ea('0x125')]()[_0x34ea('0x88')]({'secret':![]})['map'](function(_0x245f85){if(_0x245f85[_0x34ea('0xdb')]){var _0x38bf72=path[_0x34ea('0xde')](_0x5111c4,_0x245f85['Attachment'][_0x34ea('0xd8')]);if(fs[_0x34ea('0x126')](_0x38bf72)){fs[_0x34ea('0x127')](_0x38bf72)[_0x34ea('0x128')](fs[_0x34ea('0x129')](path[_0x34ea('0xde')](_0xfc300b,_0x245f85[_0x34ea('0xdb')]['basename'])));}}return{'date':moment(_0x245f85[_0x34ea('0x7e')])['format'](_0x34ea('0x107'))[_0x34ea('0x9f')](),'sender':_0x245f85['direction']===_0x34ea('0xcf')?_0x245f85['User']?_0x245f85['User'][_0x34ea('0x32')]:_0x34ea('0xf0'):_0x245f85[_0x34ea('0x6d')]['firstName']+(_0x245f85[_0x34ea('0x6d')][_0x34ea('0x119')]?'\x20'+_0x245f85[_0x34ea('0x6d')][_0x34ea('0x119')]:''),'body':_0x245f85[_0x34ea('0xdb')]?_0x245f85['Attachment'][_0x34ea('0xd8')]:_0x245f85[_0x34ea('0xbc')],'direction':_0x245f85[_0x34ea('0xf5')]==='out'?'A':'C','secret':_0x245f85[_0x34ea('0xf6')],'read':_0x245f85[_0x34ea('0x83')],'attachment':_0x245f85[_0x34ea('0xdb')]};})[_0x34ea('0x69')]()};return ejs[_0x34ea('0x12a')](path[_0x34ea('0xde')](config[_0x34ea('0xdf')],_0x34ea('0x12b'),_0x34ea('0x12c'),'downloadInteraction.ejs'),{'interaction':_0x542e4a})['then'](function(_0x4d6d55){var _0x59e03b=path[_0x34ea('0xde')](_0xfc300b,_0x34ea('0x12d')+_0x27ff9a['id']+'-'+_0x1c28f8+_0x34ea('0x12e'));var _0x447b75={'path':_0x59e03b,'channel':'Chat','interactionId':_0x27ff9a['id']};return pdf[_0x34ea('0x12f')](_0x4d6d55,_0x447b75);})['then'](function(){return new Promise(function(_0x5ce8e7,_0x6afdbe){zipdir(_0xfc300b,{'saveTo':_0x111abd},function(_0x4e5053,_0x35954a){if(_0x4e5053)return _0x6afdbe(_0x4e5053);return _0x5ce8e7(_0x35954a);});})[_0x34ea('0x17')](function(){return new BPromise(function(_0x2ccb56,_0x291423){rimraf(_0xfc300b,function(_0x1d5256){if(_0x1d5256)_0x291423(_0x1d5256);return _0x2ccb56();});});})[_0x34ea('0x17')](function(){return _0x35d23b[_0x34ea('0xe1')](_0x111abd,_0x27cd0c,function(_0x3323c9){if(_0x3323c9){logger[_0x34ea('0x1e')](_0x34ea('0x130'),_0x3323c9);}else{fs[_0x34ea('0x131')](_0x111abd);}});});});}else{return _0x35d23b['sendStatus'](0xc8);}})[_0x34ea('0x21')](handleError(_0x35d23b,null));};
\ No newline at end of file
+var _0xa8a8=['map','fullname','TagIds','Tags','push','talking','answered','unmanaged','abandoned','total','closed','waiting','disposition','UserId','ChatInteraction','rawAttributes','fieldName','type','key','model','name','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','from','u.id','ui.ChatInteractionId','left_join','users','u.id\x20=\x20ui.UserId','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','chat_websites','a.id\x20=\x20i.ChatWebsiteId','chat_messages','it.ChatInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','conditions','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','start','Tag','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','text','some','compact','isEmpty','ChatWebsiteId','i.ChatWebsiteId\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','isArray','tag','filter','replace','isNumeric','i.id','QueryTypes','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','t.id\x20IN\x20?','i.ChatWebsiteId\x20IS\x20NOT\x20NULL','user','role','getChatWebsites','i.ChatWebsiteId\x20IS\x20NULL','sequelize','count','keyBy','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','i.*','c.firstName','Contact.firstName','c.lastName','c.email','c.phone','Contact.phone','c.mobile','c.fax','Contact.fax','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','toString','ui.ChatInteractionId\x20IN\x20?','groupBy','all','rows','show','includeAll','options','create','params','destroy','describe','createVidaooSession','findOne','vidaooApiKey','vidaooTopic','vidaooNote','vidaooMetadata','vidaooEscalation','POST','follow','metadata','Sequelize','ValidationError','Error\x20in\x20conversion\x20vidaooMetadata','join_url','out','updateAttributes','customUpdate','CmContact','abandon','abandonInteraction,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','Interaction\x20already\x20assigned','AbandonInteraction','attachmentUpload','file','originalname','basename','mimetype','attachmentDownload','Unauthorized','Attachment','attachId','join','root','server/files/attachments/','download','server/files/chat/upload/','transcript-%s.txt','now','Messages','agentAlias','customer','format','%s%d','Visitor','agentIdentifier','website_alias','System','agent_alias','alias','agent_fullname','[%s]\x20%s:\x20%s\x0a','MM/DD/YYYY\x20HH:mm:ss','direction','secret','MailAccount','Smtp','CloudProvider','getSmtpOptions','SendMail','sendMail','mailTranscript','Hi\x20%s,\x20attached\x20you\x20can\x20find\x20your\x20transcript\x20file.\x20\x0a\x0aRegards.\x20\x0a\x0a','addMessage','ids','omit','ChatMessage','ChatInteractionId','YYYY-MM-DD\x20HH:mm:ss','include','getMyMessages','findAll','setTags','chatInteractionTags:save','removeTags','server','attachments','transcript-%d-%s.zip','firstName','lastName','ChatWebsite','Account','Owner','mkdirSync','Chat','N.A.','closedAt','browserName','referer','customerPort','existsSync','createReadStream','pipe','createWriteStream','renderFile','views','downloadInteraction.ejs','transcript-','createPdfFromHTML','err','rimraf','zip-dir','request-promise','moment','mustache','util','path','ejs','lodash','squel','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/logger','api','../../config/environment','../../mysqldb','redis','localhost','./chatInteraction.socket','jayson/promise','client','http','request','then','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','undefined','limit','offset','set','update','stack','render','merge','body','contact','agent','interaction','account','Users'];(function(_0x259b5e,_0x3318f8){var _0x1ee6f7=function(_0x140088){while(--_0x140088){_0x259b5e['push'](_0x259b5e['shift']());}};_0x1ee6f7(++_0x3318f8);}(_0xa8a8,0xec));var _0x8a8a=function(_0x3f9942,_0x40bc3f){_0x3f9942=_0x3f9942-0x0;var _0x458c23=_0xa8a8[_0x3f9942];return _0x458c23;};'use strict';var rimraf=require(_0x8a8a('0x0'));var zipdir=require(_0x8a8a('0x1'));var rp=require(_0x8a8a('0x2'));var moment=require(_0x8a8a('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x8a8a('0x4'));var util=require(_0x8a8a('0x5'));var path=require(_0x8a8a('0x6'));var ejs=require(_0x8a8a('0x7'));var fs=require('fs');var _=require(_0x8a8a('0x8'));var squel=require(_0x8a8a('0x9'));var Redis=require(_0x8a8a('0xa'));var qs=require(_0x8a8a('0xb'));var as=require(_0x8a8a('0xc'));var pdf=require(_0x8a8a('0xd'));var logger=require(_0x8a8a('0xe'))(_0x8a8a('0xf'));var config=require(_0x8a8a('0x10'));var db=require(_0x8a8a('0x11'))['db'];config[_0x8a8a('0x12')]=_['defaults'](config['redis'],{'host':_0x8a8a('0x13'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8a8a('0x12')]));require(_0x8a8a('0x14'))['register'](socket);var jayson=require(_0x8a8a('0x15'));var client=jayson[_0x8a8a('0x16')][_0x8a8a('0x17')]({'port':0x232b});var client9004=jayson['client'][_0x8a8a('0x17')]({'port':0x232c});function respondWithRpcPromise(_0x42fab7,_0x330796,_0x234481,_0x4a1b91){return new BPromise(function(_0x23febf,_0x4e5d74){var _0x25e1d5=_0x4a1b91||client;return _0x25e1d5[_0x8a8a('0x18')](_0x42fab7,_0x234481)[_0x8a8a('0x19')](function(_0x2f6e33){logger[_0x8a8a('0x1a')](_0x8a8a('0x1b'),_0x330796,_0x8a8a('0x1c'));logger['debug'](_0x8a8a('0x1d'),_0x330796,'request\x20sent',JSON[_0x8a8a('0x1e')](_0x2f6e33));if(_0x2f6e33[_0x8a8a('0x1f')]){if(_0x2f6e33[_0x8a8a('0x1f')][_0x8a8a('0x20')]===0x1f4){logger[_0x8a8a('0x1f')]('ChatInteraction,\x20%s,\x20%s',_0x330796,_0x2f6e33[_0x8a8a('0x1f')][_0x8a8a('0x21')]);return _0x4e5d74(_0x2f6e33[_0x8a8a('0x1f')][_0x8a8a('0x21')]);}logger[_0x8a8a('0x1f')](_0x8a8a('0x1b'),_0x330796,_0x2f6e33['error']['message']);return _0x23febf(_0x2f6e33['error']['message']);}else{logger['info'](_0x8a8a('0x1b'),_0x330796,_0x8a8a('0x1c'));_0x23febf(_0x2f6e33[_0x8a8a('0x22')][_0x8a8a('0x21')]);}})[_0x8a8a('0x23')](function(_0x2f6af2){logger[_0x8a8a('0x1f')](_0x8a8a('0x1b'),_0x330796,_0x2f6af2);_0x4e5d74(_0x2f6af2);});});}function respondWithStatusCode(_0x25d5d4,_0x2deecb){_0x2deecb=_0x2deecb||0xcc;return function(_0xb9db78){if(_0xb9db78){return _0x25d5d4[_0x8a8a('0x24')](_0x2deecb);}return _0x25d5d4[_0x8a8a('0x25')](_0x2deecb)[_0x8a8a('0x26')]();};}function respondWithResult(_0x442c00,_0x545a38){_0x545a38=_0x545a38||0xc8;return function(_0x3c096f){if(_0x3c096f){return _0x442c00[_0x8a8a('0x25')](_0x545a38)[_0x8a8a('0x27')](_0x3c096f);}};}function respondWithFilteredResult(_0x7662e,_0x36e6d4){return function(_0x251315){if(_0x251315){var _0x3aa46d=typeof _0x36e6d4['offset']===_0x8a8a('0x28')&&typeof _0x36e6d4[_0x8a8a('0x29')]===_0x8a8a('0x28');var _0x54ff7e=_0x251315['count'];var _0x2dafcd=_0x3aa46d?0x0:_0x36e6d4[_0x8a8a('0x2a')];var _0x5c70bd=_0x3aa46d?_0x251315['count']:_0x36e6d4['offset']+_0x36e6d4[_0x8a8a('0x29')];var _0x5c7e58;if(_0x5c70bd>=_0x54ff7e){_0x5c70bd=_0x54ff7e;_0x5c7e58=0xc8;}else{_0x5c7e58=0xce;}_0x7662e[_0x8a8a('0x25')](_0x5c7e58);return _0x7662e[_0x8a8a('0x2b')]('Content-Range',_0x2dafcd+'-'+_0x5c70bd+'/'+_0x54ff7e)[_0x8a8a('0x27')](_0x251315);}return null;};}function saveUpdates(_0x2c8f27){return function(_0x250852){if(_0x250852){return _0x250852[_0x8a8a('0x2c')](_0x2c8f27)[_0x8a8a('0x19')](function(_0x3d6594){return _0x3d6594;});}return null;};}function removeEntity(_0x3e73b1){return function(_0x2a2917){if(_0x2a2917){return _0x2a2917['destroy']()['then'](function(){_0x3e73b1['status'](0xcc)[_0x8a8a('0x26')]();});}};}function handleEntityNotFound(_0x3bf77d){return function(_0x5f301e){if(!_0x5f301e){_0x3bf77d[_0x8a8a('0x24')](0x194);}return _0x5f301e;};}function handleError(_0x304e83,_0x481e92){_0x481e92=_0x481e92||0x1f4;return function(_0x3abab2){logger[_0x8a8a('0x1f')](_0x3abab2[_0x8a8a('0x2d')]);if(_0x3abab2['name']){delete _0x3abab2['name'];}_0x304e83[_0x8a8a('0x25')](_0x481e92)['send'](_0x3abab2);};}function getMustacheRender(_0x2a3198,_0x3a4aa6){return Mustache[_0x8a8a('0x2e')](_0x2a3198,_[_0x8a8a('0x2f')](_0x3a4aa6[_0x8a8a('0x30')],{'contact':_0x3a4aa6[_0x8a8a('0x31')],'message':_0x3a4aa6[_0x8a8a('0x21')],'agent':_0x3a4aa6[_0x8a8a('0x32')],'interaction':_0x3a4aa6[_0x8a8a('0x33')],'account':_0x3a4aa6[_0x8a8a('0x34')]}))||'';}function getInteractionUsers(_0x27de26,_0x45ddb4){return new BPromise(function(_0x17a36c,_0x37e644){try{if(_0x45ddb4[_0x27de26['id']]){_0x27de26[_0x8a8a('0x35')]=_[_0x8a8a('0x36')](_0x45ddb4[_0x27de26['id']],function(_0x8e3017){return{'id':_0x8e3017['id'],'fullname':_0x8e3017[_0x8a8a('0x37')]};});}}catch(_0x4c8003){_0x37e644(_0x4c8003);}_0x17a36c(_0x27de26);});}function getInteractionTags(_0x4cc605,_0x53da01){return new BPromise(function(_0x34db33,_0x9e0128){try{if(_0x4cc605[_0x8a8a('0x38')]){_0x4cc605[_0x8a8a('0x39')]=[];_0x4cc605[_0x8a8a('0x38')]['split'](',')['forEach'](function(_0x8d8481){_0x4cc605['Tags'][_0x8a8a('0x3a')](_0x53da01[_0x8d8481]);});}delete _0x4cc605['TagIds'];}catch(_0x52811b){_0x9e0128(_0x52811b);}_0x34db33(_0x4cc605);});}function updateChatInteraction(_0x1b33eb,_0x1ac761,_0x285e2c){return new BPromise(function(_0x19d41d,_0x31307c){return getInteractionUsers(_0x1b33eb,_0x285e2c)[_0x8a8a('0x19')](function(_0x20584a){return getInteractionTags(_0x20584a,_0x1ac761);})['then'](function(_0x40d509){return getStateInteraction(_0x40d509);})[_0x8a8a('0x19')](function(_0x46edea){_0x19d41d(_0x46edea);})['catch'](function(_0x3a4662){_0x31307c(_0x3a4662);});});}function getStateInteraction(_0x323f89){return new BPromise(function(_0x3f845e){_0x323f89['waiting']=0x0;_0x323f89[_0x8a8a('0x3b')]=0x0;_0x323f89[_0x8a8a('0x3c')]=0x0;_0x323f89[_0x8a8a('0x3d')]=0x0;_0x323f89[_0x8a8a('0x3e')]=0x0;_0x323f89[_0x8a8a('0x3f')]=0x0;if(!_0x323f89[_0x8a8a('0x40')]&&!_0x323f89['UserId']){_0x323f89['waiting']+=0x1;}if(!_0x323f89[_0x8a8a('0x40')]&&_0x323f89['UserId']){_0x323f89[_0x8a8a('0x3b')]+=0x1;if(_0x323f89[_0x8a8a('0x41')]){_0x323f89['waiting']-=0x1;}}if(_0x323f89['closed']&&_0x323f89[_0x8a8a('0x42')]===_0x8a8a('0x3e')){_0x323f89[_0x8a8a('0x3e')]+=0x1;if(_0x323f89[_0x8a8a('0x41')]){_0x323f89['waiting']-=0x1;}}else if(_0x323f89[_0x8a8a('0x40')]&&!_0x323f89['UserId']&&_0x323f89[_0x8a8a('0x42')]){_0x323f89[_0x8a8a('0x3d')]+=0x1;if(_0x323f89['waiting']){_0x323f89[_0x8a8a('0x41')]-=0x1;}}else if(_0x323f89[_0x8a8a('0x40')]&&_0x323f89[_0x8a8a('0x43')]){_0x323f89['answered']+=0x1;if(_0x323f89[_0x8a8a('0x3b')]){_0x323f89[_0x8a8a('0x3b')]-=0x1;}}_0x323f89[_0x8a8a('0x3f')]+=0x1;_0x3f845e(_0x323f89);});}exports['index']=function(_0x5466d4,_0x44aed3){var _0x1eb8bf={},_0x1b842a={},_0x5c6c98={'count':0x0,'rows':[]};var _0x18449b=_[_0x8a8a('0x36')](db[_0x8a8a('0x44')][_0x8a8a('0x45')],function(_0x2d4c11){return{'name':_0x2d4c11[_0x8a8a('0x46')],'type':_0x2d4c11[_0x8a8a('0x47')][_0x8a8a('0x48')]};});_0x1b842a[_0x8a8a('0x49')]=_[_0x8a8a('0x36')](_0x18449b,_0x8a8a('0x4a'));_0x1b842a['query']=_[_0x8a8a('0x4b')](_0x5466d4[_0x8a8a('0x4c')]);_0x1b842a[_0x8a8a('0x4d')]=_[_0x8a8a('0x4e')](_0x1b842a[_0x8a8a('0x49')],_0x1b842a[_0x8a8a('0x4c')]);_0x1eb8bf['attributes']=_[_0x8a8a('0x4e')](_0x1b842a[_0x8a8a('0x49')],qs[_0x8a8a('0x4f')](_0x5466d4[_0x8a8a('0x4c')]['fields']));_0x1eb8bf[_0x8a8a('0x50')]=_0x1eb8bf[_0x8a8a('0x50')][_0x8a8a('0x51')]?_0x1eb8bf['attributes']:_0x1b842a['model'];if(!_0x5466d4[_0x8a8a('0x4c')][_0x8a8a('0x52')](_0x8a8a('0x53'))){_0x1eb8bf[_0x8a8a('0x29')]=qs[_0x8a8a('0x29')](_0x5466d4[_0x8a8a('0x4c')][_0x8a8a('0x29')]);_0x1eb8bf[_0x8a8a('0x2a')]=qs[_0x8a8a('0x2a')](_0x5466d4['query']['offset']);}_0x1eb8bf[_0x8a8a('0x54')]=qs[_0x8a8a('0x55')](_0x5466d4['query']['sort']);_0x1eb8bf[_0x8a8a('0x56')]=qs['filters'](_[_0x8a8a('0x57')](_0x5466d4['query'],_0x1b842a[_0x8a8a('0x4d')]),_0x18449b);var _0xa2b8a1=[];var _0x339be6=squel[_0x8a8a('0x58')]()[_0x8a8a('0x59')]('id')[_0x8a8a('0x59')](_0x8a8a('0x4a'))[_0x8a8a('0x59')](_0x8a8a('0x5a'))[_0x8a8a('0x5b')]('tools_tags');var _0x329bfb=squel[_0x8a8a('0x58')]()[_0x8a8a('0x59')](_0x8a8a('0x5c'))[_0x8a8a('0x59')]('u.fullname')[_0x8a8a('0x59')](_0x8a8a('0x5d'))['from']('user_has_chat_interactions','ui')[_0x8a8a('0x5e')](_0x8a8a('0x5f'),'u',_0x8a8a('0x60'));var _0x2ba3bf=squel[_0x8a8a('0x58')]()[_0x8a8a('0x5b')]('chat_interactions','i')['left_join']('cm_contacts','c',_0x8a8a('0x61'))['left_join'](_0x8a8a('0x5f'),'o',_0x8a8a('0x62'))['left_join'](_0x8a8a('0x63'),'a',_0x8a8a('0x64'))[_0x8a8a('0x5e')](_0x8a8a('0x65'),'me','me.ChatInteractionId\x20=\x20i.id')[_0x8a8a('0x5e')]('chat_interaction_has_tags','it',_0x8a8a('0x66'))[_0x8a8a('0x5e')]('tools_tags','t',_0x8a8a('0x67'));var _0x101543=squel[_0x8a8a('0x68')]();var _0x183015=[];var _0x50b5c5=squel[_0x8a8a('0x68')]();var _0x37a9bb;if(_0x5466d4[_0x8a8a('0x4c')]['search']){_0x37a9bb=as['parseSearch'](_0x5466d4[_0x8a8a('0x4c')]['search']);var _0x5a34a6=_0x37a9bb['sqlOperator'];for(var _0x395564=0x0;_0x395564<_0x37a9bb[_0x8a8a('0x69')]['length'];_0x395564++){var _0x3f9377=_0x37a9bb['conditions'][_0x395564];var _0x4aa202='i';var _0x142ba6=_[_0x8a8a('0x6a')](_0x18449b,['name',_0x3f9377[_0x8a8a('0x59')]]);if(!_0x142ba6){switch(_0x3f9377[_0x8a8a('0x59')]){case _0x8a8a('0x6b'):if(_0x3f9377[_0x8a8a('0x6c')]==0x1){_0x2ba3bf[_0x8a8a('0x6d')]('`'+_0x3f9377[_0x8a8a('0x59')]+'`\x20=\x200');}else{_0x2ba3bf[_0x8a8a('0x6d')]('`'+_0x3f9377[_0x8a8a('0x59')]+'`\x20>\x200');}break;case _0x8a8a('0x6e'):if(_0x3f9377[_0x8a8a('0x6f')]===_0x8a8a('0x70')){if(_0x3f9377[_0x8a8a('0x6c')][_0x8a8a('0x71')]('\x20')[_0x8a8a('0x51')]>0x1){_0x101543[_0x5a34a6](_0x8a8a('0x72'),qs[_0x8a8a('0x73')](_0x3f9377[_0x8a8a('0x6c')]),null);}else{var _0x176ad3='%'+_0x3f9377['value']+'%';_0x101543[_0x5a34a6](_0x8a8a('0x74'),_0x176ad3,_0x176ad3,_0x176ad3);}}else{_0x142ba6=_[_0x8a8a('0x6a')](_0x18449b,['name',_0x8a8a('0x75')]);_0x3f9377[_0x8a8a('0x59')]=_0x8a8a('0x75');_0x33f5c8=as[_0x8a8a('0x76')](_0x4aa202,_0x142ba6[_0x8a8a('0x47')],_0x3f9377);_0x101543[_0x5a34a6](_0x33f5c8['text'],_0x33f5c8[_0x8a8a('0x6c')][_0x8a8a('0x77')],_0x33f5c8[_0x8a8a('0x6c')][_0x8a8a('0x26')]);}break;case _0x8a8a('0x78'):var _0x224ec2=_0x3f9377[_0x8a8a('0x6c')]['split'](',')[_0x8a8a('0x36')](function(_0x260a6b){return Number(_0x260a6b);});_0x224ec2[_0x8a8a('0x79')](function(_0x50a069){_0x50b5c5['or'](_0x8a8a('0x7a'),'%,'+_0x50a069+',%');});_0x183015=_['union'](_0x183015,_0x224ec2);break;case _0x8a8a('0x7b'):if(_0x3f9377[_0x8a8a('0x6f')]==='$substring'){_0x101543[_0x5a34a6](_0x8a8a('0x7c'),'%'+_0x3f9377[_0x8a8a('0x6c')]+'%',null);}else{_0x142ba6=_[_0x8a8a('0x6a')](_0x18449b,[_0x8a8a('0x4a'),_0x8a8a('0x43')]);_0x3f9377[_0x8a8a('0x59')]=_0x8a8a('0x43');_0x33f5c8=as[_0x8a8a('0x76')](_0x4aa202,_0x142ba6[_0x8a8a('0x47')],_0x3f9377);_0x101543[_0x5a34a6](_0x33f5c8[_0x8a8a('0x7d')],_0x33f5c8[_0x8a8a('0x6c')][_0x8a8a('0x77')],_0x33f5c8[_0x8a8a('0x6c')][_0x8a8a('0x26')]);}break;case _0x8a8a('0x30'):_0x33f5c8=as[_0x8a8a('0x76')]('me',null,_0x3f9377);_0x101543[_0x5a34a6](_0x33f5c8[_0x8a8a('0x7d')],_0x33f5c8[_0x8a8a('0x6c')]['start'],_0x33f5c8[_0x8a8a('0x6c')]['end']);break;}}else{var _0x33f5c8=as[_0x8a8a('0x76')](_0x4aa202,_0x142ba6[_0x8a8a('0x47')],_0x3f9377);_0x101543[_0x5a34a6](_0x33f5c8['text'],_0x33f5c8['value'][_0x8a8a('0x77')],_0x33f5c8[_0x8a8a('0x6c')][_0x8a8a('0x26')]);}}}else{var _0x4b3db2=_(_0x5466d4['query'])[_0x8a8a('0x4b')]()[_0x8a8a('0x36')](function(_0x46a556){return _[_0x8a8a('0x7e')](_0x18449b,[_0x8a8a('0x4a'),_0x46a556])?_0x46a556:undefined;})[_0x8a8a('0x7f')]()[_0x8a8a('0x6c')]();if(!_[_0x8a8a('0x80')](_0x4b3db2)){_0x4b3db2['forEach'](function(_0x38d6ab){if(_0x38d6ab===_0x8a8a('0x81')){_0x2ba3bf['where'](_0x8a8a('0x82'),[][_0x8a8a('0x83')](_0x5466d4[_0x8a8a('0x4c')][_0x38d6ab]));}else if(_0x38d6ab===_0x8a8a('0x84')){var _0x309725=JSON[_0x8a8a('0x85')](_0x5466d4['query'][_0x38d6ab])[_0x8a8a('0x86')];var _0x15ba84=JSON[_0x8a8a('0x85')](_0x5466d4[_0x8a8a('0x4c')][_0x38d6ab])[_0x8a8a('0x87')];_0x2ba3bf['where'](_0x8a8a('0x88'),_0x309725,_0x15ba84);}else{if(_0x5466d4[_0x8a8a('0x4c')][_0x38d6ab]===_0x8a8a('0x89')){_0x2ba3bf[_0x8a8a('0x56')]('i.'+_0x38d6ab+_0x8a8a('0x8a'));}else{_0x2ba3bf[_0x8a8a('0x56')]('i.'+_0x38d6ab+_0x8a8a('0x8b'),_0x5466d4[_0x8a8a('0x4c')][_0x38d6ab]);}}});}if(_0x5466d4[_0x8a8a('0x4c')][_0x8a8a('0x8c')]){if(_0x5466d4['query'][_0x8a8a('0x8c')]==0x1){_0x2ba3bf[_0x8a8a('0x6d')](_0x8a8a('0x8d'));}else{_0x2ba3bf[_0x8a8a('0x6d')](_0x8a8a('0x8e'));}}if(_0x5466d4['query']['tag']){_0x183015=_[_0x8a8a('0x8f')](_0x5466d4[_0x8a8a('0x4c')][_0x8a8a('0x90')])?_0x5466d4['query'][_0x8a8a('0x90')]:new Array(_0x5466d4[_0x8a8a('0x4c')][_0x8a8a('0x90')]);_0x183015[_0x8a8a('0x79')](function(_0x5675ec){_0x50b5c5['or'](_0x8a8a('0x7a'),'%,'+_0x5675ec+',%');});}if(_0x5466d4[_0x8a8a('0x4c')][_0x8a8a('0x91')]){var _0x5cee89=_0x5466d4['query']['filter'][_0x8a8a('0x92')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x8a8a('0x93')](_0x5cee89)){_0x101543['or']('i.id\x20LIKE\x20?',_0x5cee89+'%');}else{_0x101543['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x8a8a('0x73')](_0x5cee89))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x5cee89+'%');}}}_0x2ba3bf['where'](_0x101543);_0x2ba3bf['group'](_0x8a8a('0x94'));var _0x49aa1b={'type':db['Sequelize'][_0x8a8a('0x95')]['SELECT'],'raw':!![]};var _0x376c22=_0x2ba3bf['clone']();_0x376c22[_0x8a8a('0x59')](_0x8a8a('0x94'));_0x376c22[_0x8a8a('0x59')](_0x8a8a('0x96'),'unreadMessages');if(_0x1eb8bf[_0x8a8a('0x54')]){_0x1eb8bf[_0x8a8a('0x54')]['forEach'](function(_0x395bdd){var _0xf3cf32=_0x395bdd[0x0]===_0x8a8a('0x97')?_0x395bdd[0x0]:'i.'+_0x395bdd[0x0];_0x2ba3bf[_0x8a8a('0x54')](_0xf3cf32,_0x395bdd[0x1]==='DESC'?![]:!![]);});}if(!_['isEmpty'](_0x183015)){_0x2ba3bf[_0x8a8a('0x6d')](_0x50b5c5);_0x376c22[_0x8a8a('0x56')](_0x8a8a('0x98'),_0x183015);}BPromise['resolve']()[_0x8a8a('0x19')](function(){if(!_0x37a9bb){if(_0x5466d4[_0x8a8a('0x4c')][_0x8a8a('0x81')])return;_0x376c22['where'](_0x8a8a('0x99'));_0x2ba3bf[_0x8a8a('0x56')](_0x8a8a('0x99'));return;}if(_0x5466d4[_0x8a8a('0x9a')][_0x8a8a('0x9b')]!=='agent')return;return _0x5466d4[_0x8a8a('0x9a')][_0x8a8a('0x9c')]({'attributes':['id'],'raw':!![]})[_0x8a8a('0x19')](function(_0x161c44){if(_[_0x8a8a('0x80')](_0x161c44)){_0x376c22[_0x8a8a('0x56')](_0x8a8a('0x9d'));_0x2ba3bf['where']('i.ChatWebsiteId\x20IS\x20NULL');}else{_0x376c22[_0x8a8a('0x56')](_0x8a8a('0x82'),_[_0x8a8a('0x36')](_0x161c44,'id'));_0x2ba3bf['where'](_0x8a8a('0x82'),_[_0x8a8a('0x36')](_0x161c44,'id'));}});})[_0x8a8a('0x19')](function(){if(_0x5466d4[_0x8a8a('0x9a')][_0x8a8a('0x9b')]===_0x8a8a('0x32')&&!_0x37a9bb&&!_0x5466d4[_0x8a8a('0x4c')][_0x8a8a('0x81')])return[];return db[_0x8a8a('0x9e')][_0x8a8a('0x4c')](_0x376c22['toString'](),_0x49aa1b);})[_0x8a8a('0x19')](function(_0x2b21c0){_0x5c6c98[_0x8a8a('0x9f')]=_0x2b21c0['length'];if(_0x5c6c98[_0x8a8a('0x9f')]===0x0)return[];return db[_0x8a8a('0x9e')][_0x8a8a('0x4c')](_0x339be6['toString'](),_0x49aa1b)['then'](function(_0x1f409b){_0xa2b8a1=_[_0x8a8a('0xa0')](_0x1f409b,'id');_0x49aa1b=_[_0x8a8a('0x2f')](_0x49aa1b,{'model':db[_0x8a8a('0x44')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5466d4['query'][_0x8a8a('0x4f')]){_0x1eb8bf[_0x8a8a('0x50')][_0x8a8a('0x79')](function(_0xa23098){_0x2ba3bf['field']('i.'+_0xa23098);});}else{_0x2ba3bf['field'](_0x8a8a('0x96'),_0x8a8a('0x6b'));_0x2ba3bf[_0x8a8a('0x59')]('a.key',_0x8a8a('0xa1'));_0x2ba3bf[_0x8a8a('0x59')](_0x8a8a('0xa2'),_0x8a8a('0xa3'));_0x2ba3bf[_0x8a8a('0x59')]('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',_0x8a8a('0x97'));_0x2ba3bf['field'](_0x8a8a('0xa4'));_0x2ba3bf[_0x8a8a('0x59')](_0x8a8a('0xa5'),_0x8a8a('0xa6'));_0x2ba3bf[_0x8a8a('0x59')](_0x8a8a('0xa7'),'Contact.lastName');_0x2ba3bf[_0x8a8a('0x59')](_0x8a8a('0xa8'),'Contact.email');_0x2ba3bf['field'](_0x8a8a('0xa9'),_0x8a8a('0xaa'));_0x2ba3bf['field'](_0x8a8a('0xab'),'Contact.mobile');_0x2ba3bf['field'](_0x8a8a('0xac'),_0x8a8a('0xad'));_0x2ba3bf[_0x8a8a('0x59')]('o.fullname',_0x8a8a('0xae'));_0x2ba3bf[_0x8a8a('0x59')](_0x8a8a('0xaf'),_0x8a8a('0xb0'));_0x2ba3bf[_0x8a8a('0x59')](_0x8a8a('0xb1'),'TagIds');}if(_0x1eb8bf['limit'])_0x2ba3bf['limit'](_0x1eb8bf[_0x8a8a('0x29')]);if(_0x1eb8bf[_0x8a8a('0x2a')])_0x2ba3bf[_0x8a8a('0x2a')](_0x1eb8bf[_0x8a8a('0x2a')]);return db[_0x8a8a('0x9e')][_0x8a8a('0x4c')](_0x2ba3bf[_0x8a8a('0xb2')](),_0x49aa1b);})[_0x8a8a('0x19')](function(_0x3afd87){if(_0x3afd87['length']>0x0)_0x329bfb[_0x8a8a('0x56')](_0x8a8a('0xb3'),_[_0x8a8a('0x36')](_0x3afd87,'id'));return db[_0x8a8a('0x9e')][_0x8a8a('0x4c')](_0x329bfb[_0x8a8a('0xb2')](),_0x49aa1b)['then'](function(_0x563e90){var _0x5b3092=_[_0x8a8a('0xb4')](_0x563e90,'ChatInteractionId');var _0x2fab56=[];_0x3afd87['forEach'](function(_0x227dde){_0x2fab56['push'](updateChatInteraction(_0x227dde,_0xa2b8a1,_0x5b3092));});return BPromise[_0x8a8a('0xb5')](_0x2fab56);});});})[_0x8a8a('0x19')](function(_0x5e8094){_0x5c6c98[_0x8a8a('0xb6')]=_0x5e8094;return _0x5c6c98;})['then'](respondWithFilteredResult(_0x44aed3,_0x1eb8bf))['catch'](handleError(_0x44aed3,null));};exports[_0x8a8a('0xb7')]=function(_0x4a1658,_0x32fa90){var _0x4d6119={'raw':![],'where':{'id':_0x4a1658['params']['id']}},_0x17f681={};_0x17f681[_0x8a8a('0x49')]=_[_0x8a8a('0x4b')](db[_0x8a8a('0x44')][_0x8a8a('0x45')]);_0x17f681['query']=_[_0x8a8a('0x4b')](_0x4a1658[_0x8a8a('0x4c')]);_0x17f681[_0x8a8a('0x4d')]=_[_0x8a8a('0x4e')](_0x17f681['model'],_0x17f681[_0x8a8a('0x4c')]);_0x4d6119[_0x8a8a('0x50')]=_[_0x8a8a('0x4e')](_0x17f681['model'],qs[_0x8a8a('0x4f')](_0x4a1658[_0x8a8a('0x4c')][_0x8a8a('0x4f')]));_0x4d6119[_0x8a8a('0x50')]=_0x4d6119[_0x8a8a('0x50')]['length']?_0x4d6119['attributes']:_0x17f681[_0x8a8a('0x49')];if(_0x4a1658[_0x8a8a('0x4c')][_0x8a8a('0xb8')]){_0x4d6119['include']=[{'all':!![]}];}_0x4d6119=_[_0x8a8a('0x2f')]({},_0x4d6119,_0x4a1658[_0x8a8a('0xb9')]);return db['ChatInteraction']['find'](_0x4d6119)[_0x8a8a('0x19')](handleEntityNotFound(_0x32fa90,null))[_0x8a8a('0x19')](respondWithResult(_0x32fa90,null))[_0x8a8a('0x23')](handleError(_0x32fa90,null));};exports['create']=function(_0x32921f,_0x2f3aa6){return db['ChatInteraction'][_0x8a8a('0xba')](_0x32921f[_0x8a8a('0x30')],{})['then'](respondWithResult(_0x2f3aa6,0xc9))[_0x8a8a('0x23')](handleError(_0x2f3aa6,null));};exports['update']=function(_0x1e35ac,_0x16a4a8){if(_0x1e35ac['body']['id']){delete _0x1e35ac[_0x8a8a('0x30')]['id'];}return db[_0x8a8a('0x44')]['find']({'where':{'id':_0x1e35ac[_0x8a8a('0xbb')]['id']}})['then'](handleEntityNotFound(_0x16a4a8,null))[_0x8a8a('0x19')](saveUpdates(_0x1e35ac[_0x8a8a('0x30')],null))['then'](respondWithResult(_0x16a4a8,null))[_0x8a8a('0x23')](handleError(_0x16a4a8,null));};exports[_0x8a8a('0xbc')]=function(_0x33935b,_0x52ffa0){return db[_0x8a8a('0x44')]['find']({'where':{'id':_0x33935b[_0x8a8a('0xbb')]['id']}})[_0x8a8a('0x19')](handleEntityNotFound(_0x52ffa0,null))[_0x8a8a('0x19')](removeEntity(_0x52ffa0,null))[_0x8a8a('0x23')](handleError(_0x52ffa0,null));};exports[_0x8a8a('0xbd')]=function(_0x54ad37,_0x19d4f6){return db[_0x8a8a('0x44')]['describe']()[_0x8a8a('0x19')](respondWithResult(_0x19d4f6,null))[_0x8a8a('0x23')](handleError(_0x19d4f6,null));};exports[_0x8a8a('0xbe')]=function(_0x5b22b6,_0x586dbd){var _0x35d9e2=_0x5b22b6[_0x8a8a('0xbb')]['id'];var _0x279002;var _0x7504b2;var _0x461430;return db[_0x8a8a('0x44')][_0x8a8a('0xbf')]({'where':{'id':_0x35d9e2}})['then'](function(_0x496f08){_0x279002=_0x496f08;return db['ChatWebsite'][_0x8a8a('0xbf')]({'where':{'id':_0x496f08[_0x8a8a('0x81')]},'attributes':['id',_0x8a8a('0xc0'),'vidaooEscalation',_0x8a8a('0xc1'),_0x8a8a('0xc2'),_0x8a8a('0xc3')],'raw':!![]});})[_0x8a8a('0x19')](function(_0x3154ee){if(_0x3154ee&&_0x3154ee['vidaooApiKey']&&_0x3154ee[_0x8a8a('0xc4')]){_0x7504b2=_0x3154ee;var _0xde7f73={'interaction':{'id':_0x35d9e2},'agent':{'id':_0x5b22b6[_0x8a8a('0x9a')]['id'],'name':_0x5b22b6['user'][_0x8a8a('0x4a')],'fullname':_0x5b22b6[_0x8a8a('0x9a')][_0x8a8a('0x37')],'email':_0x5b22b6['user']['email']},'contact':_0x5b22b6[_0x8a8a('0x30')][_0x8a8a('0x31')],'account':_0x5b22b6[_0x8a8a('0x30')]['account']};var _0x2fed73={'rejectUnauthorized':![],'method':_0x8a8a('0xc5'),'url':'https://api-vidaoo.xcally.com/api/v1/meetings','headers':{'X-APIKEY':_0x3154ee[_0x8a8a('0xc0')]},'body':{'duration':null,'scheduledAt':null,'participants':[_0x5b22b6[_0x8a8a('0x9a')]['email']],'buttons':null,'topic':_0x7504b2[_0x8a8a('0xc1')],'note':_['isNull'](_0x7504b2['vidaooNote'])?null:getMustacheRender(_0x7504b2[_0x8a8a('0xc2')],_0xde7f73),'metadata':null},'redirect':_0x8a8a('0xc6'),'json':!![]};try{if(!_['isNull'](_0x7504b2['vidaooMetadata'])){var _0x591ca2=getMustacheRender(_0x7504b2[_0x8a8a('0xc3')],_0xde7f73);var _0x55bec7=JSON['parse'](_0x591ca2);_0x2fed73[_0x8a8a('0x30')][_0x8a8a('0xc7')]=_0x55bec7;}}catch(_0x58ac24){throw new db[(_0x8a8a('0xc8'))][(_0x8a8a('0xc9'))](_0x8a8a('0xca'));}return rp(_0x2fed73);}else{throw new db[(_0x8a8a('0xc8'))][(_0x8a8a('0xc9'))]('Error\x20in\x20Vidaoo\x20configuration');}})[_0x8a8a('0x19')](function(_0x4930ad){_0x461430=_0x4930ad;if(_0x461430['id']){var _0x3ae28a={'body':_0x461430[_0x8a8a('0xcb')],'ChatWebsiteId':_0x7504b2['id'],'ChatInteractionId':_0x279002['id'],'direction':_0x8a8a('0xcc'),'UserId':_0x5b22b6[_0x8a8a('0x9a')]['id']};return db['ChatMessage']['create'](_0x3ae28a,{});}else{throw new db[(_0x8a8a('0xc8'))][(_0x8a8a('0xc9'))]('Unable\x20to\x20create\x20Vidaoo\x20session');}})[_0x8a8a('0x19')](function(){return _0x279002[_0x8a8a('0xcd')]({'vidaooSessionId':_0x461430['id']});})['then'](respondWithResult(_0x586dbd,null))[_0x8a8a('0x23')](handleError(_0x586dbd,null));};exports[_0x8a8a('0xce')]=function(_0x14cd8d,_0x4be66d){if(_0x14cd8d['body']['id']){delete _0x14cd8d[_0x8a8a('0x30')]['id'];}return db['ChatInteraction'][_0x8a8a('0x6a')]({'where':{'id':_0x14cd8d['params']['id']},'include':[{'model':db[_0x8a8a('0xcf')],'as':'Contact'}]})['then'](handleEntityNotFound(_0x4be66d,null))['then'](saveUpdates(_0x14cd8d['body'],null))[_0x8a8a('0x19')](respondWithResult(_0x4be66d,null))[_0x8a8a('0x23')](handleError(_0x4be66d,null));};exports[_0x8a8a('0xd0')]=function(_0x5d955f,_0x32eb6b){if(_0x5d955f[_0x8a8a('0x30')]['id']){delete _0x5d955f[_0x8a8a('0x30')]['id'];}return db[_0x8a8a('0x44')][_0x8a8a('0x6a')]({'where':{'id':_0x5d955f[_0x8a8a('0xbb')]['id']}})[_0x8a8a('0x19')](function(_0x586686){if(!_0x586686){logger['error'](_0x8a8a('0xd1'),_0x8a8a('0xd0'),0x194,_0x8a8a('0xd2'));_0x32eb6b['sendStatus'](0x194);}else{if(_0x586686[_0x8a8a('0x43')]){throw new db[(_0x8a8a('0xc8'))][(_0x8a8a('0xc9'))](_0x8a8a('0xd3'));}}return _0x586686;})['then'](function(_0x5023d7){if(_0x5023d7){return _0x5023d7[_0x8a8a('0x2c')]({'closed':_0x5d955f[_0x8a8a('0x30')][_0x8a8a('0x40')],'disposition':_0x5d955f[_0x8a8a('0x30')][_0x8a8a('0x42')]})[_0x8a8a('0x19')](function(_0x40a76d){return _0x40a76d;});}})[_0x8a8a('0x19')](function(){return respondWithRpcPromise(_0x8a8a('0xd4'),_0x8a8a('0xd0'),_0x5d955f[_0x8a8a('0x30')],client9004);})['then'](respondWithResult(_0x32eb6b,null))[_0x8a8a('0x23')](handleError(_0x32eb6b,null));};exports[_0x8a8a('0xd5')]=function(_0xe30557,_0x37815b){_0xe30557[_0x8a8a('0x30')][_0x8a8a('0x4a')]=_0xe30557[_0x8a8a('0xd6')][_0x8a8a('0xd7')];_0xe30557[_0x8a8a('0x30')][_0x8a8a('0xd8')]=_0xe30557[_0x8a8a('0xd6')]['filename'];_0xe30557[_0x8a8a('0x30')][_0x8a8a('0x47')]=_0xe30557[_0x8a8a('0xd6')][_0x8a8a('0xd9')];return db['Attachment'][_0x8a8a('0xba')](_0xe30557[_0x8a8a('0x30')])[_0x8a8a('0x19')](respondWithResult(_0x37815b,0xc9))[_0x8a8a('0x23')](handleError(_0x37815b,null));};exports[_0x8a8a('0xda')]=function(_0x419998,_0x59ed64){return db[_0x8a8a('0x44')][_0x8a8a('0xbf')]({'where':{'id':_0x419998[_0x8a8a('0xbb')]['id']},'raw':!![]})[_0x8a8a('0x19')](handleEntityNotFound(_0x59ed64,null))[_0x8a8a('0x19')](function(_0x17e607){if(_0x17e607){if(_0x17e607[_0x8a8a('0x40')]){return _0x59ed64[_0x8a8a('0x25')](0x193)['json']({'status':0x193,'message':_0x8a8a('0xdb')});}return db[_0x8a8a('0xdc')][_0x8a8a('0xbf')]({'where':{'id':_0x419998[_0x8a8a('0x4c')][_0x8a8a('0xdd')]},'raw':!![]})[_0x8a8a('0x19')](handleEntityNotFound(_0x59ed64,null));}})[_0x8a8a('0x19')](function(_0xc79caa){if(_0xc79caa){var _0x3a2fa1=_0xc79caa['ChatOfflineMessageId']!==null;var _0x6f8834=path[_0x8a8a('0xde')](config[_0x8a8a('0xdf')],_0x8a8a('0xe0'));if(_0x3a2fa1){_0x6f8834=path[_0x8a8a('0xde')](_0x6f8834,'offline-chat/');}var _0xa5a1bc=path[_0x8a8a('0xde')](_0x6f8834,_0xc79caa[_0x8a8a('0xd8')]);return _0x59ed64[_0x8a8a('0xe1')](_0xa5a1bc);}})[_0x8a8a('0x23')](handleError(_0x59ed64,null));};exports['close']=function(_0x4dbb00,_0x57c44c){var _0x2b8cf5=null;var _0x3074a2=null;var _0x24a0e0=null;if(_0x4dbb00[_0x8a8a('0x30')]['id']){delete _0x4dbb00[_0x8a8a('0x30')]['id'];}if(_0x4dbb00[_0x8a8a('0x30')]['mailTranscript']){_0x24a0e0=path[_0x8a8a('0xde')](config[_0x8a8a('0xdf')],_0x8a8a('0xe2'),util['format'](_0x8a8a('0xe3'),Date[_0x8a8a('0xe4')]()));_0x4dbb00[_0x8a8a('0x30')]['pathTranscript']=_0x24a0e0;}return db[_0x8a8a('0x44')][_0x8a8a('0x6a')]({'where':{'id':_0x4dbb00['params']['id']},'include':[{'model':db['ChatMessage'],'as':_0x8a8a('0xe5'),'include':[{'model':db['User'],'as':'User'}]}]})['then'](handleEntityNotFound(_0x57c44c,null))[_0x8a8a('0x19')](saveUpdates(_0x4dbb00[_0x8a8a('0x30')],null))[_0x8a8a('0x19')](function(_0x20bc23){if(_0x20bc23){_0x2b8cf5=_0x20bc23;return db['ChatWebsite'][_0x8a8a('0x6a')]({'where':{'id':_0x2b8cf5['ChatWebsiteId']}});}})[_0x8a8a('0x19')](function(_0x419eef){if(_0x419eef){_0x3074a2=_0x419eef;return db['CmContact'][_0x8a8a('0x6a')]({'where':{'id':_0x2b8cf5[_0x8a8a('0x75')]}});}})['then'](function(_0x3b3c55){if(_0x3b3c55){if(_0x24a0e0){var _0x14cc59=null;for(var _0x5e9e59=0x1;_0x5e9e59<_0x2b8cf5[_0x8a8a('0xe5')][_0x8a8a('0x51')];++_0x5e9e59){_0x14cc59=_0x2b8cf5[_0x8a8a('0xe5')][_0x5e9e59];var _0x5ac2e2=_0x14cc59[_0x8a8a('0x43')]?util['format']('%s%d',_0x3074a2[_0x8a8a('0xe6')],_0x14cc59[_0x8a8a('0x43')]):'System';var _0x25a514=_0x4dbb00[_0x8a8a('0x30')][_0x8a8a('0xe7')]||util[_0x8a8a('0xe8')](_0x8a8a('0xe9'),_0x8a8a('0xea'),_0x14cc59[_0x8a8a('0x75')]);switch(_0x3074a2[_0x8a8a('0xeb')]){case _0x8a8a('0xec'):_0x5ac2e2=_0x14cc59[_0x8a8a('0x43')]?util[_0x8a8a('0xe8')](_0x8a8a('0xe9'),_0x3074a2[_0x8a8a('0xe6')],_0x14cc59['UserId']):_0x8a8a('0xed');break;case _0x8a8a('0xee'):_0x5ac2e2=_0x14cc59[_0x8a8a('0x43')]?_0x14cc59['User'][_0x8a8a('0xef')]||_0x14cc59[_0x8a8a('0x7b')][_0x8a8a('0x37')]:_0x8a8a('0xed');break;case _0x8a8a('0xf0'):_0x5ac2e2=_0x14cc59[_0x8a8a('0x43')]?_0x14cc59[_0x8a8a('0x7b')][_0x8a8a('0x37')]:_0x8a8a('0xed');break;default:_0x5ac2e2=_0x14cc59[_0x8a8a('0x43')]?util[_0x8a8a('0xe8')]('%s%d',_0x3074a2[_0x8a8a('0xe6')],_0x14cc59[_0x8a8a('0x43')]):_0x8a8a('0xed');}var _0x22d259=util[_0x8a8a('0xe8')](_0x8a8a('0xf1'),moment(_0x14cc59[_0x8a8a('0x84')])['format'](_0x8a8a('0xf2')),_0x14cc59[_0x8a8a('0xf3')]==='in'?_0x25a514:_0x5ac2e2,_0x14cc59['body']);if(!_0x14cc59[_0x8a8a('0xf4')]){fs['appendFileSync'](_0x24a0e0,_0x22d259);}}return db[_0x8a8a('0xf5')][_0x8a8a('0xbf')]({'where':{'service':!![]},'include':[{'model':db['MailServerOut'],'as':_0x8a8a('0xf6'),'raw':!![],'include':[{'model':db[_0x8a8a('0xf7')],'as':'CloudProvider','raw':!![]}]}]});}}})[_0x8a8a('0x19')](function(_0x7e29e1){if(!_0x7e29e1||!_0x7e29e1['Smtp']||!_0x4dbb00[_0x8a8a('0x30')])return _0x2b8cf5;var _0x4b106f=_0x7e29e1[_0x8a8a('0xf8')]();return respondWithRpcPromise(_0x8a8a('0xf9'),_0x8a8a('0xfa'),{'account':_0x4b106f,'message':{'from':util['format']('\x22%s\x22\x20<%s>',_0x7e29e1[_0x8a8a('0x4a')],_0x7e29e1['email']||_0x7e29e1[_0x8a8a('0xf6')]['user']),'to':_0x4dbb00['body'][_0x8a8a('0xfb')],'subject':'Mail\x20Transcript','text':util['format'](_0x8a8a('0xfc'),_0x4dbb00[_0x8a8a('0x30')][_0x8a8a('0xfb')]),'attachments':[{'path':_0x24a0e0}]}})[_0x8a8a('0x19')](function(){return _0x2b8cf5;})[_0x8a8a('0x23')](function(_0x4cb1da){logger[_0x8a8a('0x1f')](_0x4cb1da);});})[_0x8a8a('0x19')](respondWithStatusCode(_0x57c44c,0xc8))[_0x8a8a('0x23')](handleError(_0x57c44c,null));};exports['addMessage']=function(_0x3e63d4,_0x5de5ae){return db['ChatMessage']['find']({'where':{'id':_0x3e63d4[_0x8a8a('0xbb')]['id']}})['then'](handleEntityNotFound(_0x5de5ae,null))['then'](function(_0x484cc6){if(_0x484cc6){return _0x484cc6[_0x8a8a('0xfd')](_0x3e63d4[_0x8a8a('0x30')][_0x8a8a('0xfe')],_[_0x8a8a('0xff')](_0x3e63d4['body'],[_0x8a8a('0xfe'),'id'])||{});}})[_0x8a8a('0x19')](respondWithResult(_0x5de5ae,null))[_0x8a8a('0x23')](handleError(_0x5de5ae,null));};exports['getMessages']=function(_0x186c2c,_0x55148e){var _0x50315b={'raw':![],'where':{}};var _0x40c9cb={};var _0x2b4119={'count':0x0,'rows':[]};return db[_0x8a8a('0x44')][_0x8a8a('0xbf')]({'where':{'id':_0x186c2c[_0x8a8a('0xbb')]['id']}})['then'](handleEntityNotFound(_0x55148e,null))[_0x8a8a('0x19')](function(_0x33e008){if(_0x33e008){_0x40c9cb[_0x8a8a('0x49')]=_[_0x8a8a('0x4b')](db[_0x8a8a('0x100')][_0x8a8a('0x45')]);_0x40c9cb[_0x8a8a('0x4c')]=_[_0x8a8a('0x4b')](_0x186c2c[_0x8a8a('0x4c')]);_0x40c9cb['filters']=_[_0x8a8a('0x4e')](_0x40c9cb['model'],_0x40c9cb[_0x8a8a('0x4c')]);_0x50315b[_0x8a8a('0x50')]=_['intersection'](_0x40c9cb['model'],qs[_0x8a8a('0x4f')](_0x186c2c[_0x8a8a('0x4c')][_0x8a8a('0x4f')]));_0x50315b[_0x8a8a('0x50')]=_0x50315b[_0x8a8a('0x50')][_0x8a8a('0x51')]?_0x50315b[_0x8a8a('0x50')]:_0x40c9cb[_0x8a8a('0x49')];if(!_0x186c2c[_0x8a8a('0x4c')][_0x8a8a('0x52')](_0x8a8a('0x53'))){_0x50315b[_0x8a8a('0x29')]=qs[_0x8a8a('0x29')](_0x186c2c['query'][_0x8a8a('0x29')]);_0x50315b[_0x8a8a('0x2a')]=qs[_0x8a8a('0x2a')](_0x186c2c[_0x8a8a('0x4c')][_0x8a8a('0x2a')]);}_0x50315b[_0x8a8a('0x54')]=qs[_0x8a8a('0x55')](_0x186c2c[_0x8a8a('0x4c')][_0x8a8a('0x55')]);_0x50315b[_0x8a8a('0x56')]=qs[_0x8a8a('0x4d')](_[_0x8a8a('0x57')](_0x186c2c[_0x8a8a('0x4c')],_0x40c9cb[_0x8a8a('0x4d')]));_0x50315b[_0x8a8a('0x56')][_0x8a8a('0x101')]=_0x33e008['id'];if(_0x186c2c[_0x8a8a('0x4c')][_0x8a8a('0x91')]){_0x50315b[_0x8a8a('0x56')]=_[_0x8a8a('0x2f')](_0x50315b[_0x8a8a('0x56')],{'$or':_[_0x8a8a('0x36')](_0x50315b[_0x8a8a('0x50')],function(_0x433051){var _0x3f064c={};_0x3f064c[_0x433051]={'$like':'%'+_0x186c2c[_0x8a8a('0x4c')][_0x8a8a('0x91')]+'%'};return _0x3f064c;})});}if(_0x186c2c[_0x8a8a('0x4c')][_0x8a8a('0x86')]){var _0x36baf8=_0x186c2c[_0x8a8a('0x4c')]['$gte']['split'](',');var _0x1af0b6={};_0x1af0b6[_0x36baf8[0x0]]={'$gte':moment(_0x36baf8[0x1])['format'](_0x8a8a('0x102'))};_0x50315b[_0x8a8a('0x56')]=_[_0x8a8a('0x2f')](_0x50315b[_0x8a8a('0x56')],_0x1af0b6);}_0x50315b=_['merge']({},_0x50315b,_0x186c2c[_0x8a8a('0xb9')]);return db[_0x8a8a('0x100')][_0x8a8a('0x9f')]({'where':_0x50315b[_0x8a8a('0x56')]})[_0x8a8a('0x19')](function(_0x204dde){_0x2b4119[_0x8a8a('0x9f')]=_0x204dde;if(_0x186c2c[_0x8a8a('0x4c')][_0x8a8a('0xb8')]){_0x50315b[_0x8a8a('0x103')]=[{'all':!![]}];}return db[_0x8a8a('0x100')]['findAll'](_0x50315b);})[_0x8a8a('0x19')](function(_0x25b624){_0x2b4119[_0x8a8a('0xb6')]=_0x25b624;return _0x2b4119;});}})[_0x8a8a('0x19')](respondWithFilteredResult(_0x55148e,_0x50315b))[_0x8a8a('0x23')](handleError(_0x55148e,null));};exports[_0x8a8a('0x104')]=function(_0x413ab7,_0x32cc2a){var _0x1e8490={'where':{}},_0x159761={},_0xe16caf={'count':0x0,'rows':[]};return db['ChatInteraction'][_0x8a8a('0xbf')]({'where':{'id':_0x413ab7[_0x8a8a('0xbb')]['id']}})[_0x8a8a('0x19')](handleEntityNotFound(_0x32cc2a,null))[_0x8a8a('0x19')](function(_0x2847bd){if(_0x2847bd){_0x159761['model']=_['keys'](db[_0x8a8a('0x100')][_0x8a8a('0x45')]);_0x159761[_0x8a8a('0x4c')]=_[_0x8a8a('0x4b')](_0x413ab7[_0x8a8a('0x4c')]);_0x159761['filters']=_[_0x8a8a('0x4e')](_0x159761[_0x8a8a('0x49')],_0x159761[_0x8a8a('0x4c')]);_0x1e8490[_0x8a8a('0x50')]=_[_0x8a8a('0x4e')](_0x159761[_0x8a8a('0x49')],qs[_0x8a8a('0x4f')](_0x413ab7['query'][_0x8a8a('0x4f')]));_0x1e8490[_0x8a8a('0x50')]=_0x1e8490[_0x8a8a('0x50')][_0x8a8a('0x51')]?_0x1e8490[_0x8a8a('0x50')]:_0x159761[_0x8a8a('0x49')];if(!_0x413ab7[_0x8a8a('0x4c')][_0x8a8a('0x52')](_0x8a8a('0x53'))){_0x1e8490[_0x8a8a('0x29')]=qs[_0x8a8a('0x29')](_0x413ab7['query'][_0x8a8a('0x29')]);_0x1e8490[_0x8a8a('0x2a')]=qs[_0x8a8a('0x2a')](_0x413ab7[_0x8a8a('0x4c')][_0x8a8a('0x2a')]);}_0x1e8490['order']=qs['sort'](_0x413ab7[_0x8a8a('0x4c')][_0x8a8a('0x55')]);_0x1e8490['where']=qs[_0x8a8a('0x4d')](_[_0x8a8a('0x57')](_0x413ab7['query'],_0x159761[_0x8a8a('0x4d')]));_0x1e8490[_0x8a8a('0x56')][_0x8a8a('0x101')]=_0x2847bd['id'];if(_0x413ab7[_0x8a8a('0x4c')]['filter']){_0x1e8490[_0x8a8a('0x56')]=_[_0x8a8a('0x2f')](_0x1e8490[_0x8a8a('0x56')],{'$or':_[_0x8a8a('0x36')](_0x1e8490['attributes'],function(_0x453a30){var _0x34ac37={};_0x34ac37[_0x453a30]={'$like':'%'+_0x413ab7['query'][_0x8a8a('0x91')]+'%'};return _0x34ac37;})});}_0x1e8490[_0x8a8a('0x56')][_0x8a8a('0xf4')]=![];if(_0x413ab7[_0x8a8a('0x4c')]['id']){_0x1e8490[_0x8a8a('0x56')]['id']={'$gt':_0x413ab7[_0x8a8a('0x4c')]['id']};}_0x1e8490=_[_0x8a8a('0x2f')]({},_0x1e8490,_0x413ab7[_0x8a8a('0xb9')]);return db[_0x8a8a('0x100')][_0x8a8a('0x9f')]({'where':_0x1e8490[_0x8a8a('0x56')]})[_0x8a8a('0x19')](function(_0x50536f){_0xe16caf[_0x8a8a('0x9f')]=_0x50536f;_0x1e8490['include']=[];if(_0x413ab7[_0x8a8a('0x4c')]['includeAgent']){_0x1e8490[_0x8a8a('0x103')][_0x8a8a('0x3a')]({'model':db[_0x8a8a('0x7b')],'as':_0x8a8a('0x7b'),'attributes':['id','fullname',_0x8a8a('0xef')]});}if(_0x413ab7['query'][_0x8a8a('0xb8')]){_0x1e8490[_0x8a8a('0x103')]=[{'all':!![]}];}return db[_0x8a8a('0x100')][_0x8a8a('0x105')](_0x1e8490);})[_0x8a8a('0x19')](function(_0x1a7bff){_0xe16caf[_0x8a8a('0xb6')]=_0x1a7bff;return _0xe16caf;});}})[_0x8a8a('0x19')](respondWithFilteredResult(_0x32cc2a,_0x1e8490))['catch'](handleError(_0x32cc2a,null));};exports['addTags']=function(_0x2deb61,_0x268a78){return db[_0x8a8a('0x44')][_0x8a8a('0x6a')]({'where':{'id':_0x2deb61[_0x8a8a('0xbb')]['id']}})[_0x8a8a('0x19')](handleEntityNotFound(_0x268a78,null))[_0x8a8a('0x19')](function(_0x6812b2){if(_0x6812b2){return _0x6812b2[_0x8a8a('0x106')](_0x2deb61[_0x8a8a('0x30')]['ids'],_['omit'](_0x2deb61[_0x8a8a('0x30')],[_0x8a8a('0xfe'),'id'])||{})['spread'](function(){return db[_0x8a8a('0x78')][_0x8a8a('0x105')]({'attributes':['id',_0x8a8a('0x4a'),'color'],'where':{'id':_0x2deb61[_0x8a8a('0x30')][_0x8a8a('0xfe')]}});})[_0x8a8a('0x19')](function(_0x5a88c4){socket['emit'](_0x8a8a('0x107'),{'id':Number(_0x2deb61[_0x8a8a('0xbb')]['id']),'tags':_0x5a88c4||[]});return{'id':Number(_0x2deb61[_0x8a8a('0xbb')]['id']),'tags':_0x5a88c4||[]};});}})[_0x8a8a('0x19')](respondWithResult(_0x268a78,null))[_0x8a8a('0x23')](handleError(_0x268a78,null));};exports[_0x8a8a('0x108')]=function(_0x17c85c,_0x49b219){return db['ChatInteraction'][_0x8a8a('0x6a')]({'where':{'id':_0x17c85c[_0x8a8a('0xbb')]['id']}})['then'](handleEntityNotFound(_0x49b219,null))[_0x8a8a('0x19')](function(_0x5a177b){if(_0x5a177b){return _0x5a177b['removeTags'](_0x17c85c['query'][_0x8a8a('0xfe')]);}})[_0x8a8a('0x19')](respondWithStatusCode(_0x49b219,null))[_0x8a8a('0x23')](handleError(_0x49b219,null));};exports[_0x8a8a('0xe1')]=function(_0xcfd82f,_0x3a49c0){var _0x52328d=moment()['unix']()['toString']();var _0x192040=path[_0x8a8a('0xde')](config[_0x8a8a('0xdf')],'server','files','tmp');var _0x3ce207=path['join'](config[_0x8a8a('0xdf')],_0x8a8a('0x109'),'files',_0x8a8a('0x10a'));var _0x52c858=path['join'](_0x192040,_0x52328d);var _0x19c612=util[_0x8a8a('0xe8')](_0x8a8a('0x10b'),_0xcfd82f['params']['id'],_0x52328d);var _0x29e6d0=path[_0x8a8a('0xde')](_0x192040,_0x19c612);var _0x517c95=[];_0x517c95[_0x8a8a('0x3a')]({'model':db[_0x8a8a('0x7b')],'as':_0x8a8a('0x7b'),'attributes':['id',_0x8a8a('0x37')],'raw':!![]});_0x517c95[_0x8a8a('0x3a')]({'model':db[_0x8a8a('0xcf')],'as':'Contact','attributes':['id',_0x8a8a('0x10c'),_0x8a8a('0x10d')],'raw':!![]});if(_0xcfd82f[_0x8a8a('0x4c')][_0x8a8a('0x10a')]){_0x517c95[_0x8a8a('0x3a')]({'model':db['Attachment'],'as':_0x8a8a('0xdc'),'raw':!![]});}var _0x55737e=[{'model':db[_0x8a8a('0x100')],'as':_0x8a8a('0xe5'),'attributes':['id',_0x8a8a('0x30'),_0x8a8a('0x84'),_0x8a8a('0xf3'),_0x8a8a('0xf4'),'read'],'include':_0x517c95}];_0x55737e['push']({'model':db[_0x8a8a('0x10e')],'as':_0x8a8a('0x10f'),'attributes':['id',_0x8a8a('0x4a')]});_0x55737e[_0x8a8a('0x3a')]({'model':db[_0x8a8a('0x7b')],'as':_0x8a8a('0x110'),'attributes':['id',_0x8a8a('0x37')]});return db[_0x8a8a('0x44')][_0x8a8a('0x6a')]({'where':{'id':_0xcfd82f[_0x8a8a('0xbb')]['id']},'include':_0x55737e})[_0x8a8a('0x19')](handleEntityNotFound(_0x3a49c0,null))[_0x8a8a('0x19')](function(_0x49525c){if(_0x49525c){var _0x2f5897=_0x49525c['get']({'plain':!![]});fs[_0x8a8a('0x111')](_0x52c858);var _0x1d7a76={'channel':_0x8a8a('0x112'),'account':_0x2f5897[_0x8a8a('0x10f')][_0x8a8a('0x4a')],'agent':_0x2f5897[_0x8a8a('0x110')]?_0x2f5897[_0x8a8a('0x110')]['fullname']:_0x8a8a('0x113'),'createdAt':moment(_0x2f5897['createdAt'])[_0x8a8a('0xe8')]('YYYY-MM-DD\x20HH:mm:ss')[_0x8a8a('0xb2')](),'closedAt':_0x2f5897[_0x8a8a('0x40')]?moment(_0x2f5897[_0x8a8a('0x114')])[_0x8a8a('0xe8')]('YYYY-MM-DD\x20HH:mm:ss')['toString']():'','disposition':_0x2f5897[_0x8a8a('0x42')],'chatInfo':{'browser':_0x2f5897[_0x8a8a('0x115')],'os':_0x2f5897['osName'],'referer':_0x2f5897[_0x8a8a('0x116')],'customerIp':_0x2f5897['customerIp'],'customerPort':_0x2f5897['customerPort']?_0x2f5897[_0x8a8a('0x117')]:_0x8a8a('0x113')},'messages':_(_0x2f5897[_0x8a8a('0xe5')])['tail']()[_0x8a8a('0x91')]({'secret':![]})[_0x8a8a('0x36')](function(_0x2e34e6){if(_0x2e34e6['Attachment']){var _0x1be060=path[_0x8a8a('0xde')](_0x3ce207,_0x2e34e6['Attachment']['basename']);if(fs[_0x8a8a('0x118')](_0x1be060)){fs[_0x8a8a('0x119')](_0x1be060)[_0x8a8a('0x11a')](fs[_0x8a8a('0x11b')](path[_0x8a8a('0xde')](_0x52c858,_0x2e34e6['Attachment'][_0x8a8a('0xd8')])));}}return{'date':moment(_0x2e34e6['createdAt'])['format'](_0x8a8a('0x102'))[_0x8a8a('0xb2')](),'sender':_0x2e34e6[_0x8a8a('0xf3')]===_0x8a8a('0xcc')?_0x2e34e6[_0x8a8a('0x7b')]?_0x2e34e6[_0x8a8a('0x7b')]['fullname']:_0x8a8a('0xed'):_0x2e34e6[_0x8a8a('0x6e')][_0x8a8a('0x10c')]+(_0x2e34e6[_0x8a8a('0x6e')][_0x8a8a('0x10d')]?'\x20'+_0x2e34e6['Contact'][_0x8a8a('0x10d')]:''),'body':_0x2e34e6['Attachment']?_0x2e34e6[_0x8a8a('0xdc')]['basename']:_0x2e34e6['body'],'direction':_0x2e34e6[_0x8a8a('0xf3')]===_0x8a8a('0xcc')?'A':'C','secret':_0x2e34e6[_0x8a8a('0xf4')],'read':_0x2e34e6['read'],'attachment':_0x2e34e6[_0x8a8a('0xdc')]};})['value']()};return ejs[_0x8a8a('0x11c')](path[_0x8a8a('0xde')](config[_0x8a8a('0xdf')],_0x8a8a('0x109'),_0x8a8a('0x11d'),_0x8a8a('0x11e')),{'interaction':_0x1d7a76})[_0x8a8a('0x19')](function(_0x44dd5c){var _0x3d5bf0=path[_0x8a8a('0xde')](_0x52c858,_0x8a8a('0x11f')+_0x2f5897['id']+'-'+_0x52328d+'.pdf');var _0x5bfe3b={'path':_0x3d5bf0,'channel':_0x8a8a('0x112'),'interactionId':_0x2f5897['id']};return pdf[_0x8a8a('0x120')](_0x44dd5c,_0x5bfe3b);})[_0x8a8a('0x19')](function(){return new Promise(function(_0x50b445,_0x5738e4){zipdir(_0x52c858,{'saveTo':_0x29e6d0},function(_0x1b602b,_0xccfb49){if(_0x1b602b)return _0x5738e4(_0x1b602b);return _0x50b445(_0xccfb49);});})['then'](function(){return new BPromise(function(_0x4bb67b,_0x839b37){rimraf(_0x52c858,function(_0xb08e40){if(_0xb08e40)_0x839b37(_0xb08e40);return _0x4bb67b();});});})['then'](function(){return _0x3a49c0['download'](_0x29e6d0,_0x19c612,function(_0x19d186){if(_0x19d186){logger['error'](_0x8a8a('0x121'),_0x19d186);}else{fs['unlinkSync'](_0x29e6d0);}});});});}else{return _0x3a49c0[_0x8a8a('0x24')](0xc8);}})['catch'](handleError(_0x3a49c0,null));};
\ No newline at end of file
index 484b9dc..1601f7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x665d=['Users','map','findAll','unreadMessages','length','emit','catch','hasOwnProperty','hook','events','ChatInteraction','../../mysqldb','ChatMessage','setMaxListeners','save','update','remove','then','setDataValue'];(function(_0x4c74bd,_0x4e4774){var _0x17446e=function(_0x47a2df){while(--_0x47a2df){_0x4c74bd['push'](_0x4c74bd['shift']());}};_0x17446e(++_0x4e4774);}(_0x665d,0xb4));var _0xd665=function(_0x4403e5,_0x32ddae){_0x4403e5=_0x4403e5-0x0;var _0x512114=_0x665d[_0x4403e5];return _0x512114;};'use strict';var EventEmitter=require(_0xd665('0x0'));var ChatInteraction=require('../../mysqldb')['db'][_0xd665('0x1')];var ChatMessage=require(_0xd665('0x2'))['db'][_0xd665('0x3')];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0xd665('0x4')](0x0);var events={'afterCreate':_0xd665('0x5'),'afterUpdate':_0xd665('0x6'),'afterDestroy':_0xd665('0x7')};function emitEvent(_0x4e850f){return function(_0x3f6f9e,_0x10586e,_0x514ed0){_0x3f6f9e['getUsers']({'attributes':['id'],'raw':!![]})[_0xd665('0x8')](function(_0x4ea753){_0x3f6f9e[_0xd665('0x9')](_0xd665('0xa'),_0x4ea753[_0xd665('0xb')](function(_0x252c25){return{'id':_0x252c25['id']};}));return ChatMessage[_0xd665('0xc')]({'where':{'ChatInteractionId':_0x3f6f9e['id'],'direction':'in','read':![]},'raw':!![]});})[_0xd665('0x8')](function(_0x3751dc){_0x3f6f9e[_0xd665('0x9')](_0xd665('0xd'),_0x3751dc[_0xd665('0xe')]);ChatInteractionEvents[_0xd665('0xf')](_0x4e850f+':'+_0x3f6f9e['id'],_0x3f6f9e);ChatInteractionEvents[_0xd665('0xf')](_0x4e850f,_0x3f6f9e);_0x514ed0(null);})[_0xd665('0x10')](_0x514ed0(null));};}for(var e in events){if(events[_0xd665('0x11')](e)){var event=events[e];ChatInteraction[_0xd665('0x12')](e,emitEvent(event));}}module['exports']=ChatInteractionEvents;
\ No newline at end of file
+var _0x4249=['setMaxListeners','save','update','remove','getUsers','then','setDataValue','map','findAll','unreadMessages','length','emit','hasOwnProperty','hook','exports','events','../../mysqldb','ChatInteraction'];(function(_0x19cb38,_0x4bded1){var _0x47471e=function(_0x47b425){while(--_0x47b425){_0x19cb38['push'](_0x19cb38['shift']());}};_0x47471e(++_0x4bded1);}(_0x4249,0x11d));var _0x9424=function(_0x288d0b,_0x1cf4f0){_0x288d0b=_0x288d0b-0x0;var _0x1df18a=_0x4249[_0x288d0b];return _0x1df18a;};'use strict';var EventEmitter=require(_0x9424('0x0'));var ChatInteraction=require(_0x9424('0x1'))['db'][_0x9424('0x2')];var ChatMessage=require(_0x9424('0x1'))['db']['ChatMessage'];var ChatInteractionEvents=new EventEmitter();ChatInteractionEvents[_0x9424('0x3')](0x0);var events={'afterCreate':_0x9424('0x4'),'afterUpdate':_0x9424('0x5'),'afterDestroy':_0x9424('0x6')};function emitEvent(_0x3eb1a6){return function(_0x1ae010,_0x818596,_0x37b5ea){_0x1ae010[_0x9424('0x7')]({'attributes':['id'],'raw':!![]})[_0x9424('0x8')](function(_0x4dea9b){_0x1ae010[_0x9424('0x9')]('Users',_0x4dea9b[_0x9424('0xa')](function(_0x215798){return{'id':_0x215798['id']};}));return ChatMessage[_0x9424('0xb')]({'where':{'ChatInteractionId':_0x1ae010['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x2b9f8d){_0x1ae010['setDataValue'](_0x9424('0xc'),_0x2b9f8d[_0x9424('0xd')]);ChatInteractionEvents[_0x9424('0xe')](_0x3eb1a6+':'+_0x1ae010['id'],_0x1ae010);ChatInteractionEvents[_0x9424('0xe')](_0x3eb1a6,_0x1ae010);_0x37b5ea(null);})['catch'](_0x37b5ea(null));};}for(var e in events){if(events[_0x9424('0xf')](e)){var event=events[e];ChatInteraction[_0x9424('0x10')](e,emitEvent(event));}}module[_0x9424('0x11')]=ChatInteractionEvents;
\ No newline at end of file
index b664796..cde1b0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7084=['utf8mb4','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','define','ChatInteraction','chat_interactions','closed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x4b9a62,_0x528ba3){var _0x45c582=function(_0x596041){while(--_0x596041){_0x4b9a62['push'](_0x4b9a62['shift']());}};_0x45c582(++_0x528ba3);}(_0x7084,0x67));var _0x4708=function(_0x43d12a,_0x1e2861){_0x43d12a=_0x43d12a-0x0;var _0x4fe522=_0x7084[_0x43d12a];return _0x4fe522;};'use strict';var _=require(_0x4708('0x0'));var util=require(_0x4708('0x1'));var logger=require(_0x4708('0x2'))(_0x4708('0x3'));var moment=require(_0x4708('0x4'));var BPromise=require(_0x4708('0x5'));var rp=require(_0x4708('0x6'));var fs=require('fs');var path=require(_0x4708('0x7'));var rimraf=require(_0x4708('0x8'));var config=require('../../config/environment');var attributes=require('./chatInteraction.attributes');module['exports']=function(_0x57ae8e,_0x4f87c0){return _0x57ae8e[_0x4708('0x9')](_0x4708('0xa'),attributes,{'tableName':_0x4708('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x55ab71,_0x468b0c,_0x5cd029){if(_0x55ab71['changed'](_0x4708('0xc'))){_0x55ab71[_0x4708('0xd')]=moment()[_0x4708('0xe')](_0x4708('0xf'));}_0x5cd029(null,_0x55ab71);}},'charset':_0x4708('0x10'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x2bf9=['ChatInteraction','chat_interactions','changed','closed','format','utf8mb4','utf8mb4_unicode_ci','../../config/logger','moment','bluebird','rimraf','exports','define'];(function(_0x25f37c,_0x21094a){var _0x1aa082=function(_0x1ec569){while(--_0x1ec569){_0x25f37c['push'](_0x25f37c['shift']());}};_0x1aa082(++_0x21094a);}(_0x2bf9,0x1c1));var _0x92bf=function(_0x46f3f8,_0x12c74b){_0x46f3f8=_0x46f3f8-0x0;var _0xbc57cd=_0x2bf9[_0x46f3f8];return _0xbc57cd;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x92bf('0x0'))('api');var moment=require(_0x92bf('0x1'));var BPromise=require(_0x92bf('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x92bf('0x3'));var config=require('../../config/environment');var attributes=require('./chatInteraction.attributes');module[_0x92bf('0x4')]=function(_0x262f11,_0x280891){return _0x262f11[_0x92bf('0x5')](_0x92bf('0x6'),attributes,{'tableName':_0x92bf('0x7'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x1f2d1f,_0x5357ab,_0x25d05c){if(_0x1f2d1f[_0x92bf('0x8')](_0x92bf('0x9'))){_0x1f2d1f['closedAt']=moment()[_0x92bf('0xa')]('YYYY-MM-DD\x20HH:mm:ss');}_0x25d05c(null,_0x1f2d1f);}},'charset':_0x92bf('0xb'),'collate':_0x92bf('0xc')});};
\ No newline at end of file
index f6b8030..7ad7e7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1725=['then','AddTagsToChatInteraction','ChatInteraction','find','omit','ids','AddTags','util','bluebird','randomstring','ioredis','../../mysqldb','rpc','client','http','defaults','localhost','socket.io-emitter','redis','./chatInteraction.socket','register','request','info','ChatInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','UpdateChatInteraction','body','options','raw','where','limit'];(function(_0x118bb2,_0x57a6db){var _0x4be656=function(_0x585f26){while(--_0x585f26){_0x118bb2['push'](_0x118bb2['shift']());}};_0x4be656(++_0x57a6db);}(_0x1725,0x15d));var _0x5172=function(_0x55150d,_0x5689f2){_0x55150d=_0x55150d-0x0;var _0x25329f=_0x1725[_0x55150d];return _0x25329f;};'use strict';var _=require('lodash');var util=require(_0x5172('0x0'));var moment=require('moment');var BPromise=require(_0x5172('0x1'));var rs=require(_0x5172('0x2'));var fs=require('fs');var Redis=require(_0x5172('0x3'));var db=require(_0x5172('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x5172('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x5172('0x6')][_0x5172('0x7')]({'port':0x232a});config['redis']=_[_0x5172('0x8')](config['redis'],{'host':_0x5172('0x9'),'port':0x18eb});var socket=require(_0x5172('0xa'))(new Redis(config[_0x5172('0xb')]));require(_0x5172('0xc'))[_0x5172('0xd')](socket);function respondWithRpcPromise(_0xb5adbc,_0x5ab8b9,_0x52eff3){return new BPromise(function(_0x183779,_0x19187f){return client[_0x5172('0xe')](_0xb5adbc,_0x52eff3)['then'](function(_0x13cce4){logger[_0x5172('0xf')](_0x5172('0x10'),_0x5ab8b9,_0x5172('0x11'));logger[_0x5172('0x12')]('ChatInteraction,\x20%s,\x20%s,\x20%s',_0x5ab8b9,'request\x20sent',JSON[_0x5172('0x13')](_0x13cce4));if(_0x13cce4[_0x5172('0x14')]){if(_0x13cce4['error'][_0x5172('0x15')]===0x1f4){logger[_0x5172('0x14')](_0x5172('0x10'),_0x5ab8b9,_0x13cce4[_0x5172('0x14')]['message']);return _0x19187f(_0x13cce4['error'][_0x5172('0x16')]);}logger['error'](_0x5172('0x10'),_0x5ab8b9,_0x13cce4['error']['message']);return _0x183779(_0x13cce4[_0x5172('0x14')]['message']);}else{logger[_0x5172('0xf')](_0x5172('0x10'),_0x5ab8b9,_0x5172('0x11'));_0x183779(_0x13cce4[_0x5172('0x17')]['message']);}})[_0x5172('0x18')](function(_0x16ee65){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x5ab8b9,_0x16ee65);_0x19187f(_0x16ee65);});});}exports[_0x5172('0x19')]=function(_0x6edda4){var _0x2a0927=this;return new Promise(function(_0x4f406f,_0xf211f2){return db['ChatInteraction']['update'](_0x6edda4[_0x5172('0x1a')],{'raw':_0x6edda4[_0x5172('0x1b')]?_0x6edda4['options'][_0x5172('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x6edda4['options']?_0x6edda4[_0x5172('0x1b')][_0x5172('0x1d')]||null:null,'attributes':_0x6edda4['options']?_0x6edda4[_0x5172('0x1b')]['attributes']||null:null,'limit':_0x6edda4[_0x5172('0x1b')]?_0x6edda4[_0x5172('0x1b')][_0x5172('0x1e')]||null:null})[_0x5172('0x1f')](function(_0x50540f){logger[_0x5172('0xf')](_0x5172('0x19'),_0x6edda4);logger[_0x5172('0x12')](_0x5172('0x19'),_0x6edda4,JSON['stringify'](_0x50540f));_0x4f406f(_0x50540f);})['catch'](function(_0x48b4d4){logger[_0x5172('0x14')](_0x5172('0x19'),_0x48b4d4[_0x5172('0x16')],_0x6edda4);_0xf211f2(_0x2a0927[_0x5172('0x14')](0x1f4,_0x48b4d4[_0x5172('0x16')]));});});};exports[_0x5172('0x20')]=function(_0x2ef4f8){return new Promise(function(_0xd26fba,_0x3454c7){return db[_0x5172('0x21')][_0x5172('0x22')]({'where':_0x2ef4f8[_0x5172('0x1b')]?_0x2ef4f8[_0x5172('0x1b')][_0x5172('0x1d')]||null:null})['then'](function(_0x133558){if(_0x133558){return _0x133558['addTags'](_0x2ef4f8['body']['ids'],_[_0x5172('0x23')](_0x2ef4f8[_0x5172('0x1a')],[_0x5172('0x24'),'id'])||{});}})['spread'](function(_0x30b11e){logger[_0x5172('0xf')](_0x5172('0x25'),_0x2ef4f8);logger[_0x5172('0x12')]('AddTags',_0x2ef4f8,JSON['stringify'](_0x30b11e));_0xd26fba(_0x30b11e);})[_0x5172('0x18')](function(_0x328c9f){logger[_0x5172('0x14')]('AddTags',_0x328c9f[_0x5172('0x16')],_0x2ef4f8);_0x3454c7(_this['error'](0x1f4,_0x328c9f[_0x5172('0x16')]));});});};
\ No newline at end of file
+var _0x12ce=['../../config/logger','rpc','../../config/environment','client','http','defaults','redis','socket.io-emitter','./chatInteraction.socket','register','then','info','request\x20sent','debug','ChatInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','ChatInteraction,\x20%s,\x20%s','message','catch','UpdateChatInteraction','options','raw','where','attributes','limit','AddTagsToChatInteraction','find','body','ids','spread','AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x5bdc6c,_0x26401e){var _0x225b93=function(_0x4d2bcc){while(--_0x4d2bcc){_0x5bdc6c['push'](_0x5bdc6c['shift']());}};_0x225b93(++_0x26401e);}(_0x12ce,0x1bb));var _0xe12c=function(_0x31e29a,_0x349c9b){_0x31e29a=_0x31e29a-0x0;var _0x32d892=_0x12ce[_0x31e29a];return _0x32d892;};'use strict';var _=require(_0xe12c('0x0'));var util=require(_0xe12c('0x1'));var moment=require(_0xe12c('0x2'));var BPromise=require(_0xe12c('0x3'));var rs=require(_0xe12c('0x4'));var fs=require('fs');var Redis=require(_0xe12c('0x5'));var db=require(_0xe12c('0x6'))['db'];var utils=require(_0xe12c('0x7'));var logger=require(_0xe12c('0x8'))(_0xe12c('0x9'));var config=require(_0xe12c('0xa'));var jayson=require('jayson/promise');var client=jayson[_0xe12c('0xb')][_0xe12c('0xc')]({'port':0x232a});config['redis']=_[_0xe12c('0xd')](config[_0xe12c('0xe')],{'host':'localhost','port':0x18eb});var socket=require(_0xe12c('0xf'))(new Redis(config[_0xe12c('0xe')]));require(_0xe12c('0x10'))[_0xe12c('0x11')](socket);function respondWithRpcPromise(_0x410f24,_0x362c1b,_0x70c9cc){return new BPromise(function(_0x9aea8e,_0x5228d8){return client['request'](_0x410f24,_0x70c9cc)[_0xe12c('0x12')](function(_0x298ff8){logger[_0xe12c('0x13')]('ChatInteraction,\x20%s,\x20%s',_0x362c1b,_0xe12c('0x14'));logger[_0xe12c('0x15')](_0xe12c('0x16'),_0x362c1b,_0xe12c('0x14'),JSON[_0xe12c('0x17')](_0x298ff8));if(_0x298ff8[_0xe12c('0x18')]){if(_0x298ff8['error'][_0xe12c('0x19')]===0x1f4){logger[_0xe12c('0x18')](_0xe12c('0x1a'),_0x362c1b,_0x298ff8[_0xe12c('0x18')]['message']);return _0x5228d8(_0x298ff8[_0xe12c('0x18')]['message']);}logger[_0xe12c('0x18')](_0xe12c('0x1a'),_0x362c1b,_0x298ff8['error'][_0xe12c('0x1b')]);return _0x9aea8e(_0x298ff8[_0xe12c('0x18')][_0xe12c('0x1b')]);}else{logger[_0xe12c('0x13')](_0xe12c('0x1a'),_0x362c1b,'request\x20sent');_0x9aea8e(_0x298ff8['result']['message']);}})[_0xe12c('0x1c')](function(_0xbe2add){logger['error']('ChatInteraction,\x20%s,\x20%s',_0x362c1b,_0xbe2add);_0x5228d8(_0xbe2add);});});}exports[_0xe12c('0x1d')]=function(_0x2b685d){var _0x58dca0=this;return new Promise(function(_0x4cc0ab,_0x6ffd70){return db['ChatInteraction']['update'](_0x2b685d['body'],{'raw':_0x2b685d['options']?_0x2b685d[_0xe12c('0x1e')][_0xe12c('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2b685d[_0xe12c('0x1e')]?_0x2b685d['options'][_0xe12c('0x20')]||null:null,'attributes':_0x2b685d[_0xe12c('0x1e')]?_0x2b685d[_0xe12c('0x1e')][_0xe12c('0x21')]||null:null,'limit':_0x2b685d[_0xe12c('0x1e')]?_0x2b685d[_0xe12c('0x1e')][_0xe12c('0x22')]||null:null})['then'](function(_0x4ec573){logger['info']('UpdateChatInteraction',_0x2b685d);logger[_0xe12c('0x15')]('UpdateChatInteraction',_0x2b685d,JSON[_0xe12c('0x17')](_0x4ec573));_0x4cc0ab(_0x4ec573);})[_0xe12c('0x1c')](function(_0x16544d){logger[_0xe12c('0x18')](_0xe12c('0x1d'),_0x16544d[_0xe12c('0x1b')],_0x2b685d);_0x6ffd70(_0x58dca0[_0xe12c('0x18')](0x1f4,_0x16544d[_0xe12c('0x1b')]));});});};exports[_0xe12c('0x23')]=function(_0x53e32a){return new Promise(function(_0x45091e,_0x12b7bb){return db['ChatInteraction'][_0xe12c('0x24')]({'where':_0x53e32a[_0xe12c('0x1e')]?_0x53e32a[_0xe12c('0x1e')][_0xe12c('0x20')]||null:null})[_0xe12c('0x12')](function(_0x45f095){if(_0x45f095){return _0x45f095['addTags'](_0x53e32a[_0xe12c('0x25')][_0xe12c('0x26')],_['omit'](_0x53e32a['body'],['ids','id'])||{});}})[_0xe12c('0x27')](function(_0x4d1bef){logger['info'](_0xe12c('0x28'),_0x53e32a);logger[_0xe12c('0x15')](_0xe12c('0x28'),_0x53e32a,JSON[_0xe12c('0x17')](_0x4d1bef));_0x45091e(_0x4d1bef);})['catch'](function(_0xf5dbc8){logger[_0xe12c('0x18')](_0xe12c('0x28'),_0xf5dbc8[_0xe12c('0x1b')],_0x53e32a);_0x12b7bb(_this['error'](0x1f4,_0xf5dbc8[_0xe12c('0x1b')]));});});};
\ No newline at end of file
index f9d7756..239989d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3718=['removeListener','length','remove','update'];(function(_0x1577f2,_0x6a4be8){var _0x4fc76e=function(_0x210e29){while(--_0x210e29){_0x1577f2['push'](_0x1577f2['shift']());}};_0x4fc76e(++_0x6a4be8);}(_0x3718,0x16e));var _0x8371=function(_0x2ce43d,_0x291f46){_0x2ce43d=_0x2ce43d-0x0;var _0x3acd28=_0x3718[_0x2ce43d];return _0x3acd28;};'use strict';var ChatInteractionEvents=require('./chatInteraction.events');var events=['save',_0x8371('0x0'),_0x8371('0x1')];function createListener(_0x1e57b3,_0x223de3){return function(_0x3eaece){_0x223de3['emit'](_0x1e57b3,_0x3eaece);};}function removeListener(_0x46a9d2,_0x2d2747){return function(){ChatInteractionEvents[_0x8371('0x2')](_0x46a9d2,_0x2d2747);};}exports['register']=function(_0x1bff7e){for(var _0x187872=0x0,_0x34f45a=events[_0x8371('0x3')];_0x187872<_0x34f45a;_0x187872++){var _0x469f7e=events[_0x187872];var _0x2f409a=createListener('chatInteraction:'+_0x469f7e,_0x1bff7e);ChatInteractionEvents['on'](_0x469f7e,_0x2f409a);}};
\ No newline at end of file
+var _0xbf22=['emit','removeListener','register','chatInteraction:','./chatInteraction.events','save','update'];(function(_0x2bdd39,_0x2edfb1){var _0x2fc413=function(_0x10841a){while(--_0x10841a){_0x2bdd39['push'](_0x2bdd39['shift']());}};_0x2fc413(++_0x2edfb1);}(_0xbf22,0x11c));var _0x2bf2=function(_0x25bcb3,_0x3ed46f){_0x25bcb3=_0x25bcb3-0x0;var _0x1d8c1b=_0xbf22[_0x25bcb3];return _0x1d8c1b;};'use strict';var ChatInteractionEvents=require(_0x2bf2('0x0'));var events=[_0x2bf2('0x1'),'remove',_0x2bf2('0x2')];function createListener(_0x571932,_0x303af6){return function(_0x411ad2){_0x303af6[_0x2bf2('0x3')](_0x571932,_0x411ad2);};}function removeListener(_0x5bdfeb,_0x9b0cb4){return function(){ChatInteractionEvents[_0x2bf2('0x4')](_0x5bdfeb,_0x9b0cb4);};}exports[_0x2bf2('0x5')]=function(_0x938cec){for(var _0x317aaf=0x0,_0x1f21ea=events['length'];_0x317aaf<_0x1f21ea;_0x317aaf++){var _0xb3a43f=events[_0x317aaf];var _0xf0d6e8=createListener(_0x2bf2('0x6')+_0xb3a43f,_0x938cec);ChatInteractionEvents['on'](_0xb3a43f,_0xf0d6e8);}};
\ No newline at end of file
index 5eb70ec..3ec77b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4197=['isChatInteractionAuthorized','/:id/download','download','post','create','/:id/vidaoo','createVidaooSession','diskStorage','root','format','%s-%s','originalname','replace','single','file','attachmentUpload','/:id/messages','/:id/tags','chat','chatinteraction:addtags','put','tracked','chatinteraction:update','/:id/custom_update','customUpdate','abandon','/:id/close','close','chatinteraction:destroy','destroy','delete','removeTags','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatInteraction.controller','get','index','isAuthenticated','describe','/:id','show','attachmentDownload','getMessages','/:id/my_messages'];(function(_0x361e87,_0x20337f){var _0x58cfd8=function(_0x3c514d){while(--_0x3c514d){_0x361e87['push'](_0x361e87['shift']());}};_0x58cfd8(++_0x20337f);}(_0x4197,0x1c1));var _0x7419=function(_0xbef4a4,_0x3861ce){_0xbef4a4=_0xbef4a4-0x0;var _0x5b1b5c=_0x4197[_0xbef4a4];return _0x5b1b5c;};'use strict';var multer=require(_0x7419('0x0'));var util=require(_0x7419('0x1'));var path=require(_0x7419('0x2'));var timeout=require(_0x7419('0x3'));var express=require(_0x7419('0x4'));var router=express[_0x7419('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x7419('0x6'));var interaction=require(_0x7419('0x7'));var config=require(_0x7419('0x8'));var controller=require(_0x7419('0x9'));router[_0x7419('0xa')]('/',auth['isAuthenticated'](),controller[_0x7419('0xb')]);router['get']('/describe',auth[_0x7419('0xc')](),controller[_0x7419('0xd')]);router[_0x7419('0xa')](_0x7419('0xe'),auth['isChatInteractionAuthorized'](),controller[_0x7419('0xf')]);router[_0x7419('0xa')]('/:id/attachment_download',auth['isChatInteractionAuthorized'](),controller[_0x7419('0x10')]);router[_0x7419('0xa')]('/:id/messages',auth[_0x7419('0xc')](),controller[_0x7419('0x11')]);router[_0x7419('0xa')](_0x7419('0x12'),auth[_0x7419('0x13')](),controller['getMyMessages']);router['get'](_0x7419('0x14'),auth[_0x7419('0xc')](),controller[_0x7419('0x15')]);router[_0x7419('0x16')]('/',auth[_0x7419('0xc')](),controller[_0x7419('0x17')]);router[_0x7419('0x16')](_0x7419('0x18'),auth[_0x7419('0xc')](),controller[_0x7419('0x19')]);var upload=multer({'storage':multer[_0x7419('0x1a')]({'destination':function(_0x3b890e,_0x117738,_0x1836c6){_0x1836c6(null,path['join'](config[_0x7419('0x1b')],'server/files/attachments/'));},'filename':function(_0x48eed4,_0x27c47e,_0x5a28d3){_0x5a28d3(null,util[_0x7419('0x1c')](_0x7419('0x1d'),Date['now'](),_0x27c47e[_0x7419('0x1e')][_0x7419('0x1f')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x7419('0x16')]('/:id/attachment_upload',upload[_0x7419('0x20')](_0x7419('0x21')),controller[_0x7419('0x22')]);router[_0x7419('0x16')](_0x7419('0x23'),auth[_0x7419('0x13')](),controller['addMessage']);router[_0x7419('0x16')](_0x7419('0x24'),auth[_0x7419('0xc')](),interaction['tracked'](_0x7419('0x25'),_0x7419('0x26')),controller['addTags']);router[_0x7419('0x27')]('/:id',auth[_0x7419('0xc')](),interaction[_0x7419('0x28')](_0x7419('0x25'),_0x7419('0x29')),controller['update']);router[_0x7419('0x27')](_0x7419('0x2a'),controller[_0x7419('0x2b')]);router['put']('/:id/abandon',auth['isChatInteractionAuthorized'](),controller[_0x7419('0x2c')]);router[_0x7419('0x27')](_0x7419('0x2d'),controller[_0x7419('0x2e')]);router['delete']('/:id',auth[_0x7419('0xc')](),interaction[_0x7419('0x28')](_0x7419('0x25'),_0x7419('0x2f')),controller[_0x7419('0x30')]);router[_0x7419('0x31')](_0x7419('0x24'),auth[_0x7419('0xc')](),controller[_0x7419('0x32')]);module[_0x7419('0x33')]=router;
\ No newline at end of file
+var _0x9de3=['post','diskStorage','join','root','server/files/attachments/','format','%s-%s','now','originalname','replace','file','attachmentUpload','addMessage','/:id/tags','tracked','chat','chatinteraction:addtags','addTags','update','put','/:id/custom_update','customUpdate','abandon','/:id/close','close','delete','chatinteraction:destroy','destroy','removeTags','exports','multer','util','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./chatInteraction.controller','get','/describe','isAuthenticated','/:id','isChatInteractionAuthorized','show','/:id/attachment_download','attachmentDownload','/:id/messages','getMessages','getMyMessages','/:id/download','download','create'];(function(_0x20c9b2,_0x55d7b1){var _0x2c6030=function(_0x10845f){while(--_0x10845f){_0x20c9b2['push'](_0x20c9b2['shift']());}};_0x2c6030(++_0x55d7b1);}(_0x9de3,0x1b6));var _0x39de=function(_0x29c3cf,_0x2dec60){_0x29c3cf=_0x29c3cf-0x0;var _0x13a28d=_0x9de3[_0x29c3cf];return _0x13a28d;};'use strict';var multer=require(_0x39de('0x0'));var util=require(_0x39de('0x1'));var path=require('path');var timeout=require(_0x39de('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x39de('0x3'));var auth=require(_0x39de('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x39de('0x5'));var controller=require(_0x39de('0x6'));router[_0x39de('0x7')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x39de('0x8'),auth[_0x39de('0x9')](),controller['describe']);router[_0x39de('0x7')](_0x39de('0xa'),auth[_0x39de('0xb')](),controller[_0x39de('0xc')]);router[_0x39de('0x7')](_0x39de('0xd'),auth[_0x39de('0xb')](),controller[_0x39de('0xe')]);router[_0x39de('0x7')](_0x39de('0xf'),auth[_0x39de('0x9')](),controller[_0x39de('0x10')]);router[_0x39de('0x7')]('/:id/my_messages',auth[_0x39de('0xb')](),controller[_0x39de('0x11')]);router[_0x39de('0x7')](_0x39de('0x12'),auth['isAuthenticated'](),controller[_0x39de('0x13')]);router['post']('/',auth[_0x39de('0x9')](),controller[_0x39de('0x14')]);router[_0x39de('0x15')]('/:id/vidaoo',auth[_0x39de('0x9')](),controller['createVidaooSession']);var upload=multer({'storage':multer[_0x39de('0x16')]({'destination':function(_0x53d256,_0x3a8383,_0x5b3d8c){_0x5b3d8c(null,path[_0x39de('0x17')](config[_0x39de('0x18')],_0x39de('0x19')));},'filename':function(_0x4ac0a9,_0x39a071,_0xcc7dd3){_0xcc7dd3(null,util[_0x39de('0x1a')](_0x39de('0x1b'),Date[_0x39de('0x1c')](),_0x39a071[_0x39de('0x1d')][_0x39de('0x1e')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-')));}})});router[_0x39de('0x15')]('/:id/attachment_upload',upload['single'](_0x39de('0x1f')),controller[_0x39de('0x20')]);router['post'](_0x39de('0xf'),auth[_0x39de('0xb')](),controller[_0x39de('0x21')]);router['post'](_0x39de('0x22'),auth[_0x39de('0x9')](),interaction[_0x39de('0x23')](_0x39de('0x24'),_0x39de('0x25')),controller[_0x39de('0x26')]);router['put']('/:id',auth[_0x39de('0x9')](),interaction[_0x39de('0x23')](_0x39de('0x24'),'chatinteraction:update'),controller[_0x39de('0x27')]);router[_0x39de('0x28')](_0x39de('0x29'),controller[_0x39de('0x2a')]);router[_0x39de('0x28')]('/:id/abandon',auth[_0x39de('0xb')](),controller[_0x39de('0x2b')]);router[_0x39de('0x28')](_0x39de('0x2c'),controller[_0x39de('0x2d')]);router[_0x39de('0x2e')](_0x39de('0xa'),auth[_0x39de('0x9')](),interaction[_0x39de('0x23')](_0x39de('0x24'),_0x39de('0x2f')),controller[_0x39de('0x30')]);router['delete'](_0x39de('0x22'),auth[_0x39de('0x9')](),controller[_0x39de('0x31')]);module[_0x39de('0x32')]=router;
\ No newline at end of file
index 63367b6..a8c18d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd387=['TEXT','medium','BOOLEAN','sequelize','exports'];(function(_0x50d23b,_0x170ef9){var _0xb2a733=function(_0x11b08b){while(--_0x11b08b){_0x50d23b['push'](_0x50d23b['shift']());}};_0xb2a733(++_0x170ef9);}(_0xd387,0x1a7));var _0x7d38=function(_0x543888,_0x200b07){_0x543888=_0x543888-0x0;var _0x5aea22=_0xd387[_0x543888];return _0x5aea22;};'use strict';var Sequelize=require(_0x7d38('0x0'));module[_0x7d38('0x1')]={'body':{'type':Sequelize[_0x7d38('0x2')](_0x7d38('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0x7d38('0x4')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xd012=['INTEGER','sequelize','TEXT','medium','BOOLEAN'];(function(_0xffa198,_0x5a8940){var _0x1e4b50=function(_0x1f1c43){while(--_0x1f1c43){_0xffa198['push'](_0xffa198['shift']());}};_0x1e4b50(++_0x5a8940);}(_0xd012,0x83));var _0x2d01=function(_0x2e3408,_0x5b5654){_0x2e3408=_0x2e3408-0x0;var _0xd04c30=_0xd012[_0x2e3408];return _0xd04c30;};'use strict';var Sequelize=require(_0x2d01('0x0'));module['exports']={'body':{'type':Sequelize[_0x2d01('0x1')](_0x2d01('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x2d01('0x3')],'defaultValue':![]},'ChatInternalMessageId':{'type':Sequelize[_0x2d01('0x4')]}};
\ No newline at end of file
index fd91366..9e83284 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0da9=['-online','VoiceQueues','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','isEmpty','resourceId','push','messages','FromId','-createdAt','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','desk.js','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','defaults','redis','localhost','./chatInternalMessage.socket','register','status','end','offset','undefined','count','set','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','include','rows','catch','params','ChatInternalMessage','find','create','body','describe','get','createdAt','lastMessage','lastMessageAt','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','findAll','agent','admin','fullname','userpic','internal','lastLoginAt','allowmessenger','showWebBar'];(function(_0x233e8a,_0x3b4adf){var _0x49bedf=function(_0x152c8d){while(--_0x152c8d){_0x233e8a['push'](_0x233e8a['shift']());}};_0x49bedf(++_0x3b4adf);}(_0x0da9,0xe9));var _0x90da=function(_0x397c8d,_0xf0a1a4){_0x397c8d=_0x397c8d-0x0;var _0x1c5b0a=_0x0da9[_0x397c8d];return _0x1c5b0a;};'use strict';var emlformat=require(_0x90da('0x0'));var rimraf=require(_0x90da('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x90da('0x2'));var rp=require(_0x90da('0x3'));var moment=require(_0x90da('0x4'));var BPromise=require(_0x90da('0x5'));var Mustache=require(_0x90da('0x6'));var util=require(_0x90da('0x7'));var path=require('path');var sox=require(_0x90da('0x8'));var csv=require('to-csv');var ejs=require(_0x90da('0x9'));var fs=require('fs');var fs_extra=require(_0x90da('0xa'));var _=require(_0x90da('0xb'));var squel=require(_0x90da('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x90da('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x90da('0xe'));var Redis=require(_0x90da('0xf'));var authService=require(_0x90da('0x10'));var qs=require(_0x90da('0x11'));var as=require(_0x90da('0x12'));var hardwareService=require(_0x90da('0x13'));var logger=require(_0x90da('0x14'))(_0x90da('0x15'));var utils=require(_0x90da('0x16'));var config=require(_0x90da('0x17'));var licenseUtil=require(_0x90da('0x18'));var db=require(_0x90da('0x19'))['db'];config['redis']=_[_0x90da('0x1a')](config[_0x90da('0x1b')],{'host':_0x90da('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x90da('0x1d'))[_0x90da('0x1e')](socket);function respondWithStatusCode(_0x4b5094,_0xa8c434){_0xa8c434=_0xa8c434||0xcc;return function(_0x2b70ae){if(_0x2b70ae){return _0x4b5094['sendStatus'](_0xa8c434);}return _0x4b5094[_0x90da('0x1f')](_0xa8c434)[_0x90da('0x20')]();};}function respondWithResult(_0x34f775,_0x9f75c6){_0x9f75c6=_0x9f75c6||0xc8;return function(_0x5399f0){if(_0x5399f0){return _0x34f775[_0x90da('0x1f')](_0x9f75c6)['json'](_0x5399f0);}};}function respondWithFilteredResult(_0x14f2a7,_0x1e5591){return function(_0x4cbf21){if(_0x4cbf21){var _0x5dc625=typeof _0x1e5591[_0x90da('0x21')]===_0x90da('0x22')&&typeof _0x1e5591['limit']===_0x90da('0x22');var _0x58d8f7=_0x4cbf21['count'];var _0x4d85e2=_0x5dc625?0x0:_0x1e5591[_0x90da('0x21')];var _0x2edf2b=_0x5dc625?_0x4cbf21[_0x90da('0x23')]:_0x1e5591[_0x90da('0x21')]+_0x1e5591['limit'];var _0x268ba7;if(_0x2edf2b>=_0x58d8f7){_0x2edf2b=_0x58d8f7;_0x268ba7=0xc8;}else{_0x268ba7=0xce;}_0x14f2a7[_0x90da('0x1f')](_0x268ba7);return _0x14f2a7[_0x90da('0x24')](_0x90da('0x25'),_0x4d85e2+'-'+_0x2edf2b+'/'+_0x58d8f7)['json'](_0x4cbf21);}return null;};}function patchUpdates(_0x4899c0){return function(_0x539205){try{jsonpatch[_0x90da('0x26')](_0x539205,_0x4899c0,!![]);}catch(_0x5412e6){return BPromise[_0x90da('0x27')](_0x5412e6);}return _0x539205['save']();};}function saveUpdates(_0x4fd5d9,_0x739a00){return function(_0x5f1a55){if(_0x5f1a55){return _0x5f1a55[_0x90da('0x28')](_0x4fd5d9)[_0x90da('0x29')](function(_0x2811b6){return _0x2811b6;});}return null;};}function removeEntity(_0x8f8ba5,_0x5b0eda){return function(_0x3398c5){if(_0x3398c5){return _0x3398c5[_0x90da('0x2a')]()[_0x90da('0x29')](function(){_0x8f8ba5['status'](0xcc)[_0x90da('0x20')]();});}};}function handleEntityNotFound(_0x3dc663,_0x1efcca){return function(_0x403d21){if(!_0x403d21){_0x3dc663[_0x90da('0x2b')](0x194);}return _0x403d21;};}function handleError(_0x4a8129,_0x32ad86){_0x32ad86=_0x32ad86||0x1f4;return function(_0x3d6246){logger[_0x90da('0x2c')](_0x3d6246[_0x90da('0x2d')]);if(_0x3d6246[_0x90da('0x2e')]){delete _0x3d6246[_0x90da('0x2e')];}_0x4a8129[_0x90da('0x1f')](_0x32ad86)['send'](_0x3d6246);};}exports['index']=function(_0x52243b,_0x50bc9b){var _0x5c253c={},_0x5544d2={},_0x54b06f={'count':0x0,'rows':[]};var _0x45b25d=_['map'](db['ChatInternalMessage'][_0x90da('0x2f')],function(_0x10ddbf){return{'name':_0x10ddbf[_0x90da('0x30')],'type':_0x10ddbf[_0x90da('0x31')][_0x90da('0x32')]};});_0x5544d2[_0x90da('0x33')]=_[_0x90da('0x34')](_0x45b25d,_0x90da('0x2e'));_0x5544d2[_0x90da('0x35')]=_[_0x90da('0x36')](_0x52243b[_0x90da('0x35')]);_0x5544d2[_0x90da('0x37')]=_[_0x90da('0x38')](_0x5544d2[_0x90da('0x33')],_0x5544d2[_0x90da('0x35')]);_0x5c253c[_0x90da('0x39')]=_[_0x90da('0x38')](_0x5544d2[_0x90da('0x33')],qs[_0x90da('0x3a')](_0x52243b['query']['fields']));_0x5c253c[_0x90da('0x39')]=_0x5c253c[_0x90da('0x39')][_0x90da('0x3b')]?_0x5c253c[_0x90da('0x39')]:_0x5544d2[_0x90da('0x33')];if(!_0x52243b['query']['hasOwnProperty']('nolimit')){_0x5c253c[_0x90da('0x3c')]=qs[_0x90da('0x3c')](_0x52243b[_0x90da('0x35')]['limit']);_0x5c253c[_0x90da('0x21')]=qs[_0x90da('0x21')](_0x52243b[_0x90da('0x35')][_0x90da('0x21')]);}_0x5c253c[_0x90da('0x3d')]=qs[_0x90da('0x3e')](_0x52243b['query'][_0x90da('0x3e')]);_0x5c253c[_0x90da('0x3f')]=qs['filters'](_[_0x90da('0x40')](_0x52243b['query'],_0x5544d2[_0x90da('0x37')]),_0x45b25d);if(_0x52243b[_0x90da('0x35')][_0x90da('0x41')]){_0x5c253c[_0x90da('0x3f')]=_[_0x90da('0x42')](_0x5c253c['where'],{'$or':_[_0x90da('0x34')](_0x45b25d,function(_0xff7f71){if(_0xff7f71[_0x90da('0x31')]!==_0x90da('0x43')){var _0x1b1df1={};_0x1b1df1[_0xff7f71[_0x90da('0x2e')]]={'$like':'%'+_0x52243b['query']['filter']+'%'};return _0x1b1df1;}})});}_0x5c253c=_[_0x90da('0x42')]({},_0x5c253c,_0x52243b[_0x90da('0x44')]);var _0x36ac7a={'where':_0x5c253c['where']};return db['ChatInternalMessage']['count'](_0x36ac7a)[_0x90da('0x29')](function(_0x56f489){_0x54b06f['count']=_0x56f489;if(_0x52243b[_0x90da('0x35')]['includeAll']){_0x5c253c[_0x90da('0x45')]=[{'all':!![]}];}return db['ChatInternalMessage']['findAll'](_0x5c253c);})['then'](function(_0x407c00){_0x54b06f[_0x90da('0x46')]=_0x407c00;return _0x54b06f;})['then'](respondWithFilteredResult(_0x50bc9b,_0x5c253c))[_0x90da('0x47')](handleError(_0x50bc9b,null));};exports['show']=function(_0x106a17,_0x3f42f2){var _0xca5f95={'raw':!![],'where':{'id':_0x106a17[_0x90da('0x48')]['id']}},_0x5997e2={};_0x5997e2[_0x90da('0x33')]=_[_0x90da('0x36')](db[_0x90da('0x49')]['rawAttributes']);_0x5997e2[_0x90da('0x35')]=_[_0x90da('0x36')](_0x106a17[_0x90da('0x35')]);_0x5997e2[_0x90da('0x37')]=_[_0x90da('0x38')](_0x5997e2['model'],_0x5997e2[_0x90da('0x35')]);_0xca5f95[_0x90da('0x39')]=_[_0x90da('0x38')](_0x5997e2[_0x90da('0x33')],qs['fields'](_0x106a17[_0x90da('0x35')]['fields']));_0xca5f95['attributes']=_0xca5f95[_0x90da('0x39')]['length']?_0xca5f95['attributes']:_0x5997e2[_0x90da('0x33')];if(_0x106a17[_0x90da('0x35')]['includeAll']){_0xca5f95[_0x90da('0x45')]=[{'all':!![]}];}_0xca5f95=_[_0x90da('0x42')]({},_0xca5f95,_0x106a17['options']);return db[_0x90da('0x49')][_0x90da('0x4a')](_0xca5f95)['then'](handleEntityNotFound(_0x3f42f2,null))['then'](respondWithResult(_0x3f42f2,null))['catch'](handleError(_0x3f42f2,null));};exports[_0x90da('0x4b')]=function(_0x2cb53b,_0xdffe3d){return db[_0x90da('0x49')]['create'](_0x2cb53b[_0x90da('0x4c')],{})[_0x90da('0x29')](respondWithResult(_0xdffe3d,0xc9))[_0x90da('0x47')](handleError(_0xdffe3d,null));};exports[_0x90da('0x28')]=function(_0x178924,_0x363fa2){if(_0x178924[_0x90da('0x4c')]['id']){delete _0x178924[_0x90da('0x4c')]['id'];}return db[_0x90da('0x49')]['find']({'where':{'id':_0x178924[_0x90da('0x48')]['id']}})['then'](handleEntityNotFound(_0x363fa2,null))[_0x90da('0x29')](saveUpdates(_0x178924[_0x90da('0x4c')],null))[_0x90da('0x29')](respondWithResult(_0x363fa2,null))[_0x90da('0x47')](handleError(_0x363fa2,null));};exports[_0x90da('0x2a')]=function(_0x174095,_0x474540){return db[_0x90da('0x49')]['find']({'where':{'id':_0x174095[_0x90da('0x48')]['id']}})['then'](handleEntityNotFound(_0x474540,null))[_0x90da('0x29')](removeEntity(_0x474540,null))[_0x90da('0x47')](handleError(_0x474540,null));};exports[_0x90da('0x4d')]=function(_0x58475f,_0x42473d){return db[_0x90da('0x49')][_0x90da('0x4d')]()[_0x90da('0x29')](respondWithResult(_0x42473d,null))[_0x90da('0x47')](handleError(_0x42473d,null));};function wrapUser(_0x4ee34d){return function(_0xf3dde9){var _0xf4e2c6=_0x4ee34d[_0x90da('0x4e')]({'plain':!![]});_0xf4e2c6['messages']=[];if(_0xf3dde9){_0xf4e2c6['lastMessageAt']=_0xf3dde9[_0x90da('0x4f')];_0xf4e2c6[_0x90da('0x50')]=_0xf3dde9;}else{_0xf4e2c6[_0x90da('0x51')]=moment(0x0)['format'](_0x90da('0x52'));_0xf4e2c6['lastMessage']={};}return _0xf4e2c6;};}exports[_0x90da('0x53')]=function(_0x9df4db,_0x59d28c,_0x4672d1){var _0x2b8378=[];return db[_0x90da('0x54')][_0x90da('0x55')]({'where':{'role':[_0x90da('0x56'),_0x90da('0x57'),'user']},'attributes':['id',_0x90da('0x58'),_0x90da('0x2e'),'role',_0x90da('0x59'),_0x90da('0x5a'),'online',_0x90da('0x5b'),_0x90da('0x5c'),_0x90da('0x5d')],'order':qs['sort'](_0x90da('0x5e')),'include':[{'model':db['VoiceQueue'],'as':_0x90da('0x5f'),'attributes':['id','name','type'],'through':{'attributes':[]}}]})[_0x90da('0x29')](function(_0x5e48da){if(_0x5e48da){var _0x5602ff=_0x9df4db[_0x90da('0x60')][_0x90da('0x4e')]({'plain':!![]});if(!_0x5602ff)throw new Error(_0x90da('0x61'));if(_0x5602ff[_0x90da('0x62')]===_0x90da('0x60')){return db[_0x90da('0x63')][_0x90da('0x4a')]({'where':{'name':'Agents','userProfileId':_0x5602ff[_0x90da('0x64')]},'raw':!![]})[_0x90da('0x29')](function(_0x648933){if(_0x648933){if(_0x648933[_0x90da('0x65')]===0x0){return db[_0x90da('0x66')][_0x90da('0x55')]({'where':{'sectionId':_0x648933['id']},'raw':!![]})[_0x90da('0x29')](function(_0x1ddd39){var _0x768493=[];if(_[_0x90da('0x67')](_0x1ddd39)){_0x768493=_[_0x90da('0x41')](_0x5e48da,function(_0xbc65b){if(_0xbc65b[_0x90da('0x62')]!==_0x90da('0x56')){return _0xbc65b;}});return _0x768493;}else{for(var _0x229998=0x0;_0x229998<_0x5e48da[_0x90da('0x3b')];_0x229998++){var _0x464f92=_0x5e48da[_0x229998];if(_0x464f92[_0x90da('0x62')]===_0x90da('0x56')){var _0x26e850=_[_0x90da('0x4a')](_0x1ddd39,function(_0xae2fdf){return _0xae2fdf[_0x90da('0x68')]===_0x464f92['id'];});if(_0x26e850)_0x768493[_0x90da('0x69')](_0x464f92);}else{_0x768493[_0x90da('0x69')](_0x464f92);}}return _0x768493;}});}else{return _0x5e48da;}}else{var _0x3e86a4=_[_0x90da('0x41')](_0x5e48da,function(_0x319589){if(_0x319589[_0x90da('0x62')]!==_0x90da('0x56')){return _0x319589;}});return _0x3e86a4;}});}else{return _0x5e48da;}}})[_0x90da('0x29')](function(_0x10ca34){var _0x2ee9c4=[];if(_0x10ca34){_0x2b8378=_0x10ca34;for(var _0x5b9997=0x0;_0x5b9997<_0x10ca34[_0x90da('0x3b')];_0x5b9997+=0x1){_0x2b8378[_0x5b9997][_0x90da('0x6a')]=[];_0x2ee9c4['push'](db[_0x90da('0x49')][_0x90da('0x4a')]({'where':{'FromId':[_0x9df4db['user']['id'],_0x10ca34[_0x5b9997]['id']],'ToId':[_0x9df4db['user']['id'],_0x10ca34[_0x5b9997]['id']],'ChatGroupId':null},'attributes':['id',_0x90da('0x4f'),_0x90da('0x6b'),'ToId','read',_0x90da('0x4c')],'order':qs[_0x90da('0x3e')](_0x90da('0x6c')),'limit':0x1,'offset':0x0,'raw':!![]})[_0x90da('0x29')](wrapUser(_0x10ca34[_0x5b9997])));}return BPromise['all'](_0x2ee9c4);}return[];})[_0x90da('0x29')](function(_0x295e8a){return{'rows':_0x295e8a,'count':_0x295e8a['length']};})[_0x90da('0x29')](respondWithResult(_0x59d28c,null))[_0x90da('0x47')](handleError(_0x59d28c,null));};
\ No newline at end of file
+var _0x7bfb=['mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','redis','defaults','socket.io-emitter','./chatInternalMessage.socket','register','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','reject','save','then','error','stack','name','send','index','map','ChatInternalMessage','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','find','create','body','update','destroy','describe','get','messages','lastMessageAt','createdAt','lastMessage','format','YYYY-MM-DD\x20HH:mm:ss','getUsers','User','admin','user','fullname','role','userpic','online','lastLoginAt','sort','-online','VoiceQueue','VoiceQueues','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','Agents','userProfileId','autoAssociation','UserProfileResource','isEmpty','agent','resourceId','push','FromId','-createdAt','all','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird'];(function(_0x2bc6a2,_0x44e6ea){var _0x50f1ce=function(_0x2d3e20){while(--_0x2d3e20){_0x2bc6a2['push'](_0x2bc6a2['shift']());}};_0x50f1ce(++_0x44e6ea);}(_0x7bfb,0x14f));var _0xb7bf=function(_0x1626ac,_0x517818){_0x1626ac=_0x1626ac-0x0;var _0x3753ef=_0x7bfb[_0x1626ac];return _0x3753ef;};'use strict';var emlformat=require(_0xb7bf('0x0'));var rimraf=require(_0xb7bf('0x1'));var zipdir=require(_0xb7bf('0x2'));var jsonpatch=require(_0xb7bf('0x3'));var rp=require(_0xb7bf('0x4'));var moment=require(_0xb7bf('0x5'));var BPromise=require(_0xb7bf('0x6'));var Mustache=require(_0xb7bf('0x7'));var util=require(_0xb7bf('0x8'));var path=require(_0xb7bf('0x9'));var sox=require('sox');var csv=require(_0xb7bf('0xa'));var ejs=require(_0xb7bf('0xb'));var fs=require('fs');var fs_extra=require(_0xb7bf('0xc'));var _=require(_0xb7bf('0xd'));var squel=require(_0xb7bf('0xe'));var crypto=require(_0xb7bf('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xb7bf('0xa'));var querystring=require(_0xb7bf('0x10'));var Papa=require(_0xb7bf('0x11'));var Redis=require(_0xb7bf('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xb7bf('0x13'));var as=require(_0xb7bf('0x14'));var hardwareService=require(_0xb7bf('0x15'));var logger=require(_0xb7bf('0x16'))(_0xb7bf('0x17'));var utils=require(_0xb7bf('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0xb7bf('0x19')]=_[_0xb7bf('0x1a')](config[_0xb7bf('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xb7bf('0x1b'))(new Redis(config[_0xb7bf('0x19')]));require(_0xb7bf('0x1c'))[_0xb7bf('0x1d')](socket);function respondWithStatusCode(_0x4e52c1,_0x3d657c){_0x3d657c=_0x3d657c||0xcc;return function(_0x55e6fd){if(_0x55e6fd){return _0x4e52c1[_0xb7bf('0x1e')](_0x3d657c);}return _0x4e52c1[_0xb7bf('0x1f')](_0x3d657c)[_0xb7bf('0x20')]();};}function respondWithResult(_0x245afb,_0x3a4f92){_0x3a4f92=_0x3a4f92||0xc8;return function(_0x322a2d){if(_0x322a2d){return _0x245afb[_0xb7bf('0x1f')](_0x3a4f92)['json'](_0x322a2d);}};}function respondWithFilteredResult(_0x288bc9,_0x30f127){return function(_0x343fa5){if(_0x343fa5){var _0x3cac10=typeof _0x30f127[_0xb7bf('0x21')]===_0xb7bf('0x22')&&typeof _0x30f127[_0xb7bf('0x23')]==='undefined';var _0x237cdd=_0x343fa5[_0xb7bf('0x24')];var _0x1374e6=_0x3cac10?0x0:_0x30f127[_0xb7bf('0x21')];var _0x348bc9=_0x3cac10?_0x343fa5[_0xb7bf('0x24')]:_0x30f127[_0xb7bf('0x21')]+_0x30f127['limit'];var _0xfacdf;if(_0x348bc9>=_0x237cdd){_0x348bc9=_0x237cdd;_0xfacdf=0xc8;}else{_0xfacdf=0xce;}_0x288bc9[_0xb7bf('0x1f')](_0xfacdf);return _0x288bc9[_0xb7bf('0x25')](_0xb7bf('0x26'),_0x1374e6+'-'+_0x348bc9+'/'+_0x237cdd)[_0xb7bf('0x27')](_0x343fa5);}return null;};}function patchUpdates(_0x29960b){return function(_0x24c3fb){try{jsonpatch['apply'](_0x24c3fb,_0x29960b,!![]);}catch(_0x14966e){return BPromise[_0xb7bf('0x28')](_0x14966e);}return _0x24c3fb[_0xb7bf('0x29')]();};}function saveUpdates(_0x3a760e,_0x4d0d10){return function(_0xd0da3b){if(_0xd0da3b){return _0xd0da3b['update'](_0x3a760e)[_0xb7bf('0x2a')](function(_0xbb2029){return _0xbb2029;});}return null;};}function removeEntity(_0x38a854,_0x2df666){return function(_0x21df6a){if(_0x21df6a){return _0x21df6a['destroy']()[_0xb7bf('0x2a')](function(){_0x38a854['status'](0xcc)[_0xb7bf('0x20')]();});}};}function handleEntityNotFound(_0x33987f,_0x39c701){return function(_0x1b3f82){if(!_0x1b3f82){_0x33987f[_0xb7bf('0x1e')](0x194);}return _0x1b3f82;};}function handleError(_0x460a07,_0x49ce43){_0x49ce43=_0x49ce43||0x1f4;return function(_0x22f915){logger[_0xb7bf('0x2b')](_0x22f915[_0xb7bf('0x2c')]);if(_0x22f915[_0xb7bf('0x2d')]){delete _0x22f915[_0xb7bf('0x2d')];}_0x460a07[_0xb7bf('0x1f')](_0x49ce43)[_0xb7bf('0x2e')](_0x22f915);};}exports[_0xb7bf('0x2f')]=function(_0x30acfe,_0x39fdcb){var _0x10f789={},_0x12dc21={},_0x44dd83={'count':0x0,'rows':[]};var _0x5f0f1e=_[_0xb7bf('0x30')](db[_0xb7bf('0x31')][_0xb7bf('0x32')],function(_0x3b2e75){return{'name':_0x3b2e75[_0xb7bf('0x33')],'type':_0x3b2e75[_0xb7bf('0x34')][_0xb7bf('0x35')]};});_0x12dc21['model']=_['map'](_0x5f0f1e,'name');_0x12dc21[_0xb7bf('0x36')]=_[_0xb7bf('0x37')](_0x30acfe[_0xb7bf('0x36')]);_0x12dc21[_0xb7bf('0x38')]=_[_0xb7bf('0x39')](_0x12dc21[_0xb7bf('0x3a')],_0x12dc21['query']);_0x10f789[_0xb7bf('0x3b')]=_[_0xb7bf('0x39')](_0x12dc21[_0xb7bf('0x3a')],qs[_0xb7bf('0x3c')](_0x30acfe['query']['fields']));_0x10f789[_0xb7bf('0x3b')]=_0x10f789[_0xb7bf('0x3b')][_0xb7bf('0x3d')]?_0x10f789['attributes']:_0x12dc21[_0xb7bf('0x3a')];if(!_0x30acfe[_0xb7bf('0x36')]['hasOwnProperty'](_0xb7bf('0x3e'))){_0x10f789[_0xb7bf('0x23')]=qs['limit'](_0x30acfe['query'][_0xb7bf('0x23')]);_0x10f789[_0xb7bf('0x21')]=qs['offset'](_0x30acfe[_0xb7bf('0x36')]['offset']);}_0x10f789['order']=qs['sort'](_0x30acfe[_0xb7bf('0x36')]['sort']);_0x10f789[_0xb7bf('0x3f')]=qs[_0xb7bf('0x38')](_[_0xb7bf('0x40')](_0x30acfe['query'],_0x12dc21[_0xb7bf('0x38')]),_0x5f0f1e);if(_0x30acfe[_0xb7bf('0x36')]['filter']){_0x10f789['where']=_[_0xb7bf('0x41')](_0x10f789[_0xb7bf('0x3f')],{'$or':_[_0xb7bf('0x30')](_0x5f0f1e,function(_0x4355ed){if(_0x4355ed[_0xb7bf('0x34')]!==_0xb7bf('0x42')){var _0x3913c4={};_0x3913c4[_0x4355ed[_0xb7bf('0x2d')]]={'$like':'%'+_0x30acfe[_0xb7bf('0x36')][_0xb7bf('0x43')]+'%'};return _0x3913c4;}})});}_0x10f789=_[_0xb7bf('0x41')]({},_0x10f789,_0x30acfe[_0xb7bf('0x44')]);var _0x10844a={'where':_0x10f789['where']};return db[_0xb7bf('0x31')][_0xb7bf('0x24')](_0x10844a)[_0xb7bf('0x2a')](function(_0x380b96){_0x44dd83['count']=_0x380b96;if(_0x30acfe[_0xb7bf('0x36')][_0xb7bf('0x45')]){_0x10f789[_0xb7bf('0x46')]=[{'all':!![]}];}return db['ChatInternalMessage'][_0xb7bf('0x47')](_0x10f789);})[_0xb7bf('0x2a')](function(_0x1925e1){_0x44dd83['rows']=_0x1925e1;return _0x44dd83;})[_0xb7bf('0x2a')](respondWithFilteredResult(_0x39fdcb,_0x10f789))[_0xb7bf('0x48')](handleError(_0x39fdcb,null));};exports[_0xb7bf('0x49')]=function(_0xb04974,_0x2d60e6){var _0x56c6ed={'raw':!![],'where':{'id':_0xb04974[_0xb7bf('0x4a')]['id']}},_0x1a8a62={};_0x1a8a62['model']=_[_0xb7bf('0x37')](db['ChatInternalMessage'][_0xb7bf('0x32')]);_0x1a8a62[_0xb7bf('0x36')]=_[_0xb7bf('0x37')](_0xb04974[_0xb7bf('0x36')]);_0x1a8a62[_0xb7bf('0x38')]=_[_0xb7bf('0x39')](_0x1a8a62['model'],_0x1a8a62[_0xb7bf('0x36')]);_0x56c6ed[_0xb7bf('0x3b')]=_['intersection'](_0x1a8a62['model'],qs[_0xb7bf('0x3c')](_0xb04974[_0xb7bf('0x36')][_0xb7bf('0x3c')]));_0x56c6ed[_0xb7bf('0x3b')]=_0x56c6ed[_0xb7bf('0x3b')][_0xb7bf('0x3d')]?_0x56c6ed[_0xb7bf('0x3b')]:_0x1a8a62[_0xb7bf('0x3a')];if(_0xb04974['query'][_0xb7bf('0x45')]){_0x56c6ed[_0xb7bf('0x46')]=[{'all':!![]}];}_0x56c6ed=_[_0xb7bf('0x41')]({},_0x56c6ed,_0xb04974[_0xb7bf('0x44')]);return db[_0xb7bf('0x31')][_0xb7bf('0x4b')](_0x56c6ed)[_0xb7bf('0x2a')](handleEntityNotFound(_0x2d60e6,null))[_0xb7bf('0x2a')](respondWithResult(_0x2d60e6,null))['catch'](handleError(_0x2d60e6,null));};exports[_0xb7bf('0x4c')]=function(_0x40ec7f,_0x1b95cf){return db[_0xb7bf('0x31')][_0xb7bf('0x4c')](_0x40ec7f[_0xb7bf('0x4d')],{})[_0xb7bf('0x2a')](respondWithResult(_0x1b95cf,0xc9))[_0xb7bf('0x48')](handleError(_0x1b95cf,null));};exports[_0xb7bf('0x4e')]=function(_0x5af5d9,_0x2e85e8){if(_0x5af5d9['body']['id']){delete _0x5af5d9[_0xb7bf('0x4d')]['id'];}return db[_0xb7bf('0x31')]['find']({'where':{'id':_0x5af5d9['params']['id']}})[_0xb7bf('0x2a')](handleEntityNotFound(_0x2e85e8,null))[_0xb7bf('0x2a')](saveUpdates(_0x5af5d9['body'],null))[_0xb7bf('0x2a')](respondWithResult(_0x2e85e8,null))[_0xb7bf('0x48')](handleError(_0x2e85e8,null));};exports[_0xb7bf('0x4f')]=function(_0x5cb4e6,_0x5839f0){return db['ChatInternalMessage'][_0xb7bf('0x4b')]({'where':{'id':_0x5cb4e6['params']['id']}})[_0xb7bf('0x2a')](handleEntityNotFound(_0x5839f0,null))[_0xb7bf('0x2a')](removeEntity(_0x5839f0,null))[_0xb7bf('0x48')](handleError(_0x5839f0,null));};exports['describe']=function(_0x3670fb,_0x17e82c){return db[_0xb7bf('0x31')][_0xb7bf('0x50')]()[_0xb7bf('0x2a')](respondWithResult(_0x17e82c,null))[_0xb7bf('0x48')](handleError(_0x17e82c,null));};function wrapUser(_0x525c32){return function(_0x31e4ab){var _0x40b30a=_0x525c32[_0xb7bf('0x51')]({'plain':!![]});_0x40b30a[_0xb7bf('0x52')]=[];if(_0x31e4ab){_0x40b30a[_0xb7bf('0x53')]=_0x31e4ab[_0xb7bf('0x54')];_0x40b30a[_0xb7bf('0x55')]=_0x31e4ab;}else{_0x40b30a[_0xb7bf('0x53')]=moment(0x0)[_0xb7bf('0x56')](_0xb7bf('0x57'));_0x40b30a[_0xb7bf('0x55')]={};}return _0x40b30a;};}exports[_0xb7bf('0x58')]=function(_0x27510c,_0x5d0ebb,_0x3eee4e){var _0x5d64bf=[];return db[_0xb7bf('0x59')]['findAll']({'where':{'role':['agent',_0xb7bf('0x5a'),_0xb7bf('0x5b')]},'attributes':['id',_0xb7bf('0x5c'),_0xb7bf('0x2d'),_0xb7bf('0x5d'),_0xb7bf('0x5e'),'internal',_0xb7bf('0x5f'),_0xb7bf('0x60'),'allowmessenger','showWebBar'],'order':qs[_0xb7bf('0x61')](_0xb7bf('0x62')),'include':[{'model':db[_0xb7bf('0x63')],'as':_0xb7bf('0x64'),'attributes':['id',_0xb7bf('0x2d'),_0xb7bf('0x34')],'through':{'attributes':[]}}]})[_0xb7bf('0x2a')](function(_0x4d548c){if(_0x4d548c){var _0x426203=_0x27510c['user'][_0xb7bf('0x51')]({'plain':!![]});if(!_0x426203)throw new Error(_0xb7bf('0x65'));if(_0x426203[_0xb7bf('0x5d')]==='user'){return db[_0xb7bf('0x66')][_0xb7bf('0x4b')]({'where':{'name':_0xb7bf('0x67'),'userProfileId':_0x426203[_0xb7bf('0x68')]},'raw':!![]})[_0xb7bf('0x2a')](function(_0xcd2d89){if(_0xcd2d89){if(_0xcd2d89[_0xb7bf('0x69')]===0x0){return db[_0xb7bf('0x6a')][_0xb7bf('0x47')]({'where':{'sectionId':_0xcd2d89['id']},'raw':!![]})['then'](function(_0x2bc35f){var _0x206cd9=[];if(_[_0xb7bf('0x6b')](_0x2bc35f)){_0x206cd9=_[_0xb7bf('0x43')](_0x4d548c,function(_0x265b26){if(_0x265b26[_0xb7bf('0x5d')]!=='agent'){return _0x265b26;}});return _0x206cd9;}else{for(var _0x481453=0x0;_0x481453<_0x4d548c[_0xb7bf('0x3d')];_0x481453++){var _0x2d9a72=_0x4d548c[_0x481453];if(_0x2d9a72['role']===_0xb7bf('0x6c')){var _0x655003=_[_0xb7bf('0x4b')](_0x2bc35f,function(_0x108caa){return _0x108caa[_0xb7bf('0x6d')]===_0x2d9a72['id'];});if(_0x655003)_0x206cd9[_0xb7bf('0x6e')](_0x2d9a72);}else{_0x206cd9['push'](_0x2d9a72);}}return _0x206cd9;}});}else{return _0x4d548c;}}else{var _0x59d2ad=_['filter'](_0x4d548c,function(_0x25d14a){if(_0x25d14a[_0xb7bf('0x5d')]!==_0xb7bf('0x6c')){return _0x25d14a;}});return _0x59d2ad;}});}else{return _0x4d548c;}}})['then'](function(_0x38059c){var _0x4c82e8=[];if(_0x38059c){_0x5d64bf=_0x38059c;for(var _0x13ac77=0x0;_0x13ac77<_0x38059c['length'];_0x13ac77+=0x1){_0x5d64bf[_0x13ac77]['messages']=[];_0x4c82e8[_0xb7bf('0x6e')](db['ChatInternalMessage'][_0xb7bf('0x4b')]({'where':{'FromId':[_0x27510c[_0xb7bf('0x5b')]['id'],_0x38059c[_0x13ac77]['id']],'ToId':[_0x27510c['user']['id'],_0x38059c[_0x13ac77]['id']],'ChatGroupId':null},'attributes':['id',_0xb7bf('0x54'),_0xb7bf('0x6f'),'ToId','read',_0xb7bf('0x4d')],'order':qs['sort'](_0xb7bf('0x70')),'limit':0x1,'offset':0x0,'raw':!![]})[_0xb7bf('0x2a')](wrapUser(_0x38059c[_0x13ac77])));}return BPromise[_0xb7bf('0x71')](_0x4c82e8);}return[];})['then'](function(_0x2f72a0){return{'rows':_0x2f72a0,'count':_0x2f72a0[_0xb7bf('0x3d')]};})['then'](respondWithResult(_0x5d0ebb,null))[_0xb7bf('0x48')](handleError(_0x5d0ebb,null));};
\ No newline at end of file
index d64ef21..bcfcc57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabc2=['hasOwnProperty','hook','exports','events','../../mysqldb','ChatInternalMessage','setMaxListeners','update','remove','emit'];(function(_0x26bf51,_0x5e261a){var _0x503415=function(_0x92b028){while(--_0x92b028){_0x26bf51['push'](_0x26bf51['shift']());}};_0x503415(++_0x5e261a);}(_0xabc2,0xf3));var _0x2abc=function(_0x396c11,_0x413d08){_0x396c11=_0x396c11-0x0;var _0x33b3ea=_0xabc2[_0x396c11];return _0x33b3ea;};'use strict';var EventEmitter=require(_0x2abc('0x0'));var ChatInternalMessage=require(_0x2abc('0x1'))['db'][_0x2abc('0x2')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0x2abc('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0x2abc('0x4'),'afterDestroy':_0x2abc('0x5')};function emitEvent(_0x4216c1){return function(_0x458d68,_0x287e73,_0x51d1d8){ChatInternalMessageEvents[_0x2abc('0x6')](_0x4216c1+':'+_0x458d68['id'],_0x458d68);ChatInternalMessageEvents[_0x2abc('0x6')](_0x4216c1,_0x458d68);_0x51d1d8(null);};}for(var e in events){if(events[_0x2abc('0x7')](e)){var event=events[e];ChatInternalMessage[_0x2abc('0x8')](e,emitEvent(event));}}module[_0x2abc('0x9')]=ChatInternalMessageEvents;
\ No newline at end of file
+var _0x9bbd=['emit','hasOwnProperty','ChatInternalMessage','setMaxListeners','save','update','remove'];(function(_0x2b6512,_0x13f30e){var _0x437e2b=function(_0x320267){while(--_0x320267){_0x2b6512['push'](_0x2b6512['shift']());}};_0x437e2b(++_0x13f30e);}(_0x9bbd,0x198));var _0xd9bb=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x9bbd[_0x6c993a];return _0x27f547;};'use strict';var EventEmitter=require('events');var ChatInternalMessage=require('../../mysqldb')['db'][_0xd9bb('0x0')];var ChatInternalMessageEvents=new EventEmitter();ChatInternalMessageEvents[_0xd9bb('0x1')](0x0);var events={'afterCreate':_0xd9bb('0x2'),'afterUpdate':_0xd9bb('0x3'),'afterDestroy':_0xd9bb('0x4')};function emitEvent(_0xfbb10){return function(_0x1b989d,_0x416085,_0x2e808b){ChatInternalMessageEvents[_0xd9bb('0x5')](_0xfbb10+':'+_0x1b989d['id'],_0x1b989d);ChatInternalMessageEvents[_0xd9bb('0x5')](_0xfbb10,_0x1b989d);_0x2e808b(null);};}for(var e in events){if(events[_0xd9bb('0x6')](e)){var event=events[e];ChatInternalMessage['hook'](e,emitEvent(event));}}module['exports']=ChatInternalMessageEvents;
\ No newline at end of file
index 76e2066..439dbaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaad4=['bluebird','path','exports','define','ChatInternalMessage','chat_internal_messages','utf8mb4','utf8mb4_unicode_ci','lodash','util','moment'];(function(_0xf1ca1,_0x294d72){var _0x116af0=function(_0x522fcf){while(--_0x522fcf){_0xf1ca1['push'](_0xf1ca1['shift']());}};_0x116af0(++_0x294d72);}(_0xaad4,0x110));var _0x4aad=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xaad4[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x4aad('0x0'));var util=require(_0x4aad('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x4aad('0x2'));var BPromise=require(_0x4aad('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4aad('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./chatInternalMessage.attributes');module[_0x4aad('0x5')]=function(_0x2b7f52,_0x1f1282){return _0x2b7f52[_0x4aad('0x6')](_0x4aad('0x7'),attributes,{'tableName':_0x4aad('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x4aad('0x9'),'collate':_0x4aad('0xa')});};
\ No newline at end of file
+var _0x02bf=['moment','bluebird','path','../../config/environment','./chatInternalMessage.attributes','exports','define','chat_internal_messages','utf8mb4','util','api'];(function(_0xdd8443,_0x121139){var _0x33431b=function(_0x2a8e0e){while(--_0x2a8e0e){_0xdd8443['push'](_0xdd8443['shift']());}};_0x33431b(++_0x121139);}(_0x02bf,0xe5));var _0xf02b=function(_0x514c15,_0x486901){_0x514c15=_0x514c15-0x0;var _0x16283e=_0x02bf[_0x514c15];return _0x16283e;};'use strict';var _=require('lodash');var util=require(_0xf02b('0x0'));var logger=require('../../config/logger')(_0xf02b('0x1'));var moment=require(_0xf02b('0x2'));var BPromise=require(_0xf02b('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf02b('0x4'));var rimraf=require('rimraf');var config=require(_0xf02b('0x5'));var attributes=require(_0xf02b('0x6'));module[_0xf02b('0x7')]=function(_0x3f7124,_0x3ca4e5){return _0x3f7124[_0xf02b('0x8')]('ChatInternalMessage',attributes,{'tableName':_0xf02b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf02b('0xa'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 6d1ba43..5e7e5fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x293a=['../../config/logger','jayson/promise','http','redis','localhost','register','then','ChatInternalMessage,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x181bf7,_0x1e5b26){var _0x4376b4=function(_0x49e806){while(--_0x49e806){_0x181bf7['push'](_0x181bf7['shift']());}};_0x4376b4(++_0x1e5b26);}(_0x293a,0x7d));var _0xa293=function(_0x454312,_0x3721d4){_0x454312=_0x454312-0x0;var _0x4348ca=_0x293a[_0x454312];return _0x4348ca;};'use strict';var _=require(_0xa293('0x0'));var util=require(_0xa293('0x1'));var moment=require(_0xa293('0x2'));var BPromise=require('bluebird');var rs=require(_0xa293('0x3'));var fs=require('fs');var Redis=require(_0xa293('0x4'));var db=require(_0xa293('0x5'))['db'];var utils=require(_0xa293('0x6'));var logger=require(_0xa293('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xa293('0x8'));var client=jayson['client'][_0xa293('0x9')]({'port':0x232a});config[_0xa293('0xa')]=_['defaults'](config['redis'],{'host':_0xa293('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa293('0xa')]));require('./chatInternalMessage.socket')[_0xa293('0xc')](socket);function respondWithRpcPromise(_0x401ae1,_0x5a4c6a,_0x163e4f){return new BPromise(function(_0x3861d9,_0x2340d3){return client['request'](_0x401ae1,_0x163e4f)[_0xa293('0xd')](function(_0x9b1a78){logger['info'](_0xa293('0xe'),_0x5a4c6a,'request\x20sent');logger['debug']('ChatInternalMessage,\x20%s,\x20%s,\x20%s',_0x5a4c6a,'request\x20sent',JSON[_0xa293('0xf')](_0x9b1a78));if(_0x9b1a78[_0xa293('0x10')]){if(_0x9b1a78[_0xa293('0x10')][_0xa293('0x11')]===0x1f4){logger[_0xa293('0x10')]('ChatInternalMessage,\x20%s,\x20%s',_0x5a4c6a,_0x9b1a78['error'][_0xa293('0x12')]);return _0x2340d3(_0x9b1a78[_0xa293('0x10')][_0xa293('0x12')]);}logger['error'](_0xa293('0xe'),_0x5a4c6a,_0x9b1a78[_0xa293('0x10')][_0xa293('0x12')]);return _0x3861d9(_0x9b1a78[_0xa293('0x10')][_0xa293('0x12')]);}else{logger['info'](_0xa293('0xe'),_0x5a4c6a,_0xa293('0x13'));_0x3861d9(_0x9b1a78[_0xa293('0x14')][_0xa293('0x12')]);}})[_0xa293('0x15')](function(_0x28ae7b){logger[_0xa293('0x10')](_0xa293('0xe'),_0x5a4c6a,_0x28ae7b);_0x2340d3(_0x28ae7b);});});}
\ No newline at end of file
+var _0x99ab=['info','ChatInternalMessage,\x20%s,\x20%s','request\x20sent','debug','ChatInternalMessage,\x20%s,\x20%s,\x20%s','error','code','message','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','client','http','redis','localhost','socket.io-emitter','./chatInternalMessage.socket','register','then'];(function(_0x3042d5,_0x349534){var _0x1acfef=function(_0x5a920f){while(--_0x5a920f){_0x3042d5['push'](_0x3042d5['shift']());}};_0x1acfef(++_0x349534);}(_0x99ab,0xe4));var _0xb99a=function(_0x32db98,_0xe8b055){_0x32db98=_0x32db98-0x0;var _0x22744f=_0x99ab[_0x32db98];return _0x22744f;};'use strict';var _=require('lodash');var util=require(_0xb99a('0x0'));var moment=require(_0xb99a('0x1'));var BPromise=require(_0xb99a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xb99a('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xb99a('0x4'))(_0xb99a('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb99a('0x6')][_0xb99a('0x7')]({'port':0x232a});config['redis']=_['defaults'](config[_0xb99a('0x8')],{'host':_0xb99a('0x9'),'port':0x18eb});var socket=require(_0xb99a('0xa'))(new Redis(config['redis']));require(_0xb99a('0xb'))[_0xb99a('0xc')](socket);function respondWithRpcPromise(_0x30cb6a,_0x3ed6b4,_0x16b345){return new BPromise(function(_0x5c6118,_0x544914){return client['request'](_0x30cb6a,_0x16b345)[_0xb99a('0xd')](function(_0xc2bf43){logger[_0xb99a('0xe')](_0xb99a('0xf'),_0x3ed6b4,_0xb99a('0x10'));logger[_0xb99a('0x11')](_0xb99a('0x12'),_0x3ed6b4,_0xb99a('0x10'),JSON['stringify'](_0xc2bf43));if(_0xc2bf43[_0xb99a('0x13')]){if(_0xc2bf43['error'][_0xb99a('0x14')]===0x1f4){logger['error'](_0xb99a('0xf'),_0x3ed6b4,_0xc2bf43[_0xb99a('0x13')][_0xb99a('0x15')]);return _0x544914(_0xc2bf43['error']['message']);}logger[_0xb99a('0x13')](_0xb99a('0xf'),_0x3ed6b4,_0xc2bf43[_0xb99a('0x13')]['message']);return _0x5c6118(_0xc2bf43[_0xb99a('0x13')][_0xb99a('0x15')]);}else{logger['info'](_0xb99a('0xf'),_0x3ed6b4,_0xb99a('0x10'));_0x5c6118(_0xc2bf43['result'][_0xb99a('0x15')]);}})['catch'](function(_0x10e1f1){logger['error']('ChatInternalMessage,\x20%s,\x20%s',_0x3ed6b4,_0x10e1f1);_0x544914(_0x10e1f1);});});}
\ No newline at end of file
index 8ad7b1b..919c6fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2937=['removeListener','register','length','chatInternalMessage:','save','remove','emit'];(function(_0x19f20a,_0x49fa82){var _0x436896=function(_0x21fe04){while(--_0x21fe04){_0x19f20a['push'](_0x19f20a['shift']());}};_0x436896(++_0x49fa82);}(_0x2937,0xb3));var _0x7293=function(_0x4102e1,_0x380f1d){_0x4102e1=_0x4102e1-0x0;var _0xcd4def=_0x2937[_0x4102e1];return _0xcd4def;};'use strict';var ChatInternalMessageEvents=require('./chatInternalMessage.events');var events=[_0x7293('0x0'),_0x7293('0x1'),'update'];function createListener(_0x221cb5,_0x43e655){return function(_0x41c783){_0x43e655[_0x7293('0x2')](_0x221cb5,_0x41c783);};}function removeListener(_0x4ce14a,_0x38b9b0){return function(){ChatInternalMessageEvents[_0x7293('0x3')](_0x4ce14a,_0x38b9b0);};}exports[_0x7293('0x4')]=function(_0x5637bf){for(var _0x28d3a1=0x0,_0x16e240=events[_0x7293('0x5')];_0x28d3a1<_0x16e240;_0x28d3a1++){var _0x55ee3c=events[_0x28d3a1];var _0x4e89cc=createListener(_0x7293('0x6')+_0x55ee3c,_0x5637bf);ChatInternalMessageEvents['on'](_0x55ee3c,_0x4e89cc);}};
\ No newline at end of file
+var _0x3db8=['save','remove','update','emit','removeListener','register','chatInternalMessage:','./chatInternalMessage.events'];(function(_0x567fde,_0x3c93ef){var _0x25e76d=function(_0x3012ca){while(--_0x3012ca){_0x567fde['push'](_0x567fde['shift']());}};_0x25e76d(++_0x3c93ef);}(_0x3db8,0xc7));var _0x83db=function(_0x14a7bf,_0xd82d0c){_0x14a7bf=_0x14a7bf-0x0;var _0x573a06=_0x3db8[_0x14a7bf];return _0x573a06;};'use strict';var ChatInternalMessageEvents=require(_0x83db('0x0'));var events=[_0x83db('0x1'),_0x83db('0x2'),_0x83db('0x3')];function createListener(_0xa2a8a1,_0x3f77a5){return function(_0x3afbfa){_0x3f77a5[_0x83db('0x4')](_0xa2a8a1,_0x3afbfa);};}function removeListener(_0x4cf924,_0x5116ee){return function(){ChatInternalMessageEvents[_0x83db('0x5')](_0x4cf924,_0x5116ee);};}exports[_0x83db('0x6')]=function(_0x44e4b1){for(var _0x11fe95=0x0,_0x283d24=events['length'];_0x11fe95<_0x283d24;_0x11fe95++){var _0x6eebd9=events[_0x11fe95];var _0x2cf045=createListener(_0x83db('0x7')+_0x6eebd9,_0x44e4b1);ChatInternalMessageEvents['on'](_0x6eebd9,_0x2cf045);}};
\ No newline at end of file
index 88f881b..35888ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3ed=['isAuthenticated','index','/describe','describe','/users','/:id','show','post','create','put','update','delete','destroy','util','path','connect-timeout','Router','fs-extra','./chatInternalMessage.controller','get'];(function(_0xd33378,_0x22f627){var _0x5c2c2e=function(_0x18badb){while(--_0x18badb){_0xd33378['push'](_0xd33378['shift']());}};_0x5c2c2e(++_0x22f627);}(_0xc3ed,0x19d));var _0xdc3e=function(_0x338782,_0x608258){_0x338782=_0x338782-0x0;var _0x3555ee=_0xc3ed[_0x338782];return _0x3555ee;};'use strict';var multer=require('multer');var util=require(_0xdc3e('0x0'));var path=require(_0xdc3e('0x1'));var timeout=require(_0xdc3e('0x2'));var express=require('express');var router=express[_0xdc3e('0x3')]();var fs_extra=require(_0xdc3e('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xdc3e('0x5'));router[_0xdc3e('0x6')]('/',auth[_0xdc3e('0x7')](),controller[_0xdc3e('0x8')]);router[_0xdc3e('0x6')](_0xdc3e('0x9'),auth[_0xdc3e('0x7')](),controller[_0xdc3e('0xa')]);router['get'](_0xdc3e('0xb'),auth['isAuthenticated'](),controller['getUsers']);router[_0xdc3e('0x6')](_0xdc3e('0xc'),auth['isAuthenticated'](),controller[_0xdc3e('0xd')]);router[_0xdc3e('0xe')]('/',auth[_0xdc3e('0x7')](),controller[_0xdc3e('0xf')]);router[_0xdc3e('0x10')](_0xdc3e('0xc'),controller[_0xdc3e('0x11')]);router[_0xdc3e('0x12')]('/:id',auth[_0xdc3e('0x7')](),controller[_0xdc3e('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0xa631=['./chatInternalMessage.controller','isAuthenticated','describe','get','/users','getUsers','/:id','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x31e29a,_0x349c9b){var _0x32d892=function(_0x41cc86){while(--_0x41cc86){_0x31e29a['push'](_0x31e29a['shift']());}};_0x32d892(++_0x349c9b);}(_0xa631,0x1b0));var _0x1a63=function(_0x54c977,_0x3639ad){_0x54c977=_0x54c977-0x0;var _0x4b2e30=_0xa631[_0x54c977];return _0x4b2e30;};'use strict';var multer=require(_0x1a63('0x0'));var util=require(_0x1a63('0x1'));var path=require(_0x1a63('0x2'));var timeout=require(_0x1a63('0x3'));var express=require(_0x1a63('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x1a63('0x5'));var interaction=require(_0x1a63('0x6'));var config=require(_0x1a63('0x7'));var controller=require(_0x1a63('0x8'));router['get']('/',auth[_0x1a63('0x9')](),controller['index']);router['get']('/describe',auth[_0x1a63('0x9')](),controller[_0x1a63('0xa')]);router[_0x1a63('0xb')](_0x1a63('0xc'),auth[_0x1a63('0x9')](),controller[_0x1a63('0xd')]);router[_0x1a63('0xb')](_0x1a63('0xe'),auth['isAuthenticated'](),controller['show']);router[_0x1a63('0xf')]('/',auth[_0x1a63('0x9')](),controller[_0x1a63('0x10')]);router[_0x1a63('0x11')](_0x1a63('0xe'),controller[_0x1a63('0x12')]);router[_0x1a63('0x13')](_0x1a63('0xe'),auth['isAuthenticated'](),controller[_0x1a63('0x14')]);module[_0x1a63('0x15')]=router;
\ No newline at end of file
index e4c2472..f5830bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1775=['out','DATE','STRING','exports','TEXT','medium','BOOLEAN','ENUM'];(function(_0x51a315,_0x220c06){var _0x2eb541=function(_0x3853e4){while(--_0x3853e4){_0x51a315['push'](_0x51a315['shift']());}};_0x2eb541(++_0x220c06);}(_0x1775,0x1db));var _0x5177=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x1775[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require('sequelize');module[_0x5177('0x0')]={'body':{'type':Sequelize[_0x5177('0x1')](_0x5177('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x5177('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0x5177('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x5177('0x4')]('in',_0x5177('0x5')),'defaultValue':_0x5177('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0x5177('0x6')]},'providerName':{'type':Sequelize[_0x5177('0x7')]},'providerResponse':{'type':Sequelize[_0x5177('0x1')]}};
\ No newline at end of file
+var _0x36ee=['ENUM','out','DATE','STRING','TEXT','BOOLEAN'];(function(_0x4e0553,_0x5b9049){var _0x53b5a2=function(_0x3e8eaa){while(--_0x3e8eaa){_0x4e0553['push'](_0x4e0553['shift']());}};_0x53b5a2(++_0x5b9049);}(_0x36ee,0xe8));var _0xe36e=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x36ee[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');module['exports']={'body':{'type':Sequelize[_0xe36e('0x0')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0xe36e('0x1')],'defaultValue':![]},'secret':{'type':Sequelize[_0xe36e('0x1')],'defaultValue':![]},'direction':{'type':Sequelize[_0xe36e('0x2')]('in',_0xe36e('0x3')),'defaultValue':_0xe36e('0x3'),'allowNull':![]},'readAt':{'type':Sequelize[_0xe36e('0x4')]},'providerName':{'type':Sequelize[_0xe36e('0x5')]},'providerResponse':{'type':Sequelize[_0xe36e('0x0')]}};
\ No newline at end of file
index 9452c41..e2ffaec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb68=['register','jayson/promise','client','http','request','then','info','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ChatMessage,\x20%s,\x20%s','result','status','end','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','destroy','sendStatus','stack','name','send','ChatMessage','rawAttributes','fieldName','type','key','model','keys','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filters','filter','merge','map','options','includeAll','include','rows','show','params','find','catch','create','body','describe','accept','chat','read','readAt','format','UserId','user','agent','ChatInteractionId','isNil','read1stAt','interaction','get','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','SELECT','User','fullname','email','internal','manual','SIP/%s','channel','motionChannel','event','EventManager','parse','chat-interactions','ChatInteraction','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','contact','interface','formData','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','socket.io-emitter','./chatMessage.socket'];(function(_0x20627e,_0x1a28cd){var _0x2abff2=function(_0x35a065){while(--_0x35a065){_0x20627e['push'](_0x20627e['shift']());}};_0x2abff2(++_0x1a28cd);}(_0xfb68,0x68));var _0x8fb6=function(_0x3f6066,_0x1f307b){_0x3f6066=_0x3f6066-0x0;var _0x5dbd87=_0xfb68[_0x3f6066];return _0x5dbd87;};'use strict';var emlformat=require(_0x8fb6('0x0'));var rimraf=require(_0x8fb6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x8fb6('0x2'));var rp=require(_0x8fb6('0x3'));var moment=require(_0x8fb6('0x4'));var BPromise=require(_0x8fb6('0x5'));var Mustache=require(_0x8fb6('0x6'));var util=require(_0x8fb6('0x7'));var path=require('path');var sox=require(_0x8fb6('0x8'));var csv=require('to-csv');var ejs=require(_0x8fb6('0x9'));var fs=require('fs');var fs_extra=require(_0x8fb6('0xa'));var _=require('lodash');var squel=require(_0x8fb6('0xb'));var crypto=require(_0x8fb6('0xc'));var jsforce=require(_0x8fb6('0xd'));var deskjs=require(_0x8fb6('0xe'));var toCsv=require(_0x8fb6('0xf'));var querystring=require(_0x8fb6('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x8fb6('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x8fb6('0x12'));var hardwareService=require(_0x8fb6('0x13'));var logger=require(_0x8fb6('0x14'))(_0x8fb6('0x15'));var utils=require('../../config/utils');var config=require(_0x8fb6('0x16'));var licenseUtil=require(_0x8fb6('0x17'));var db=require(_0x8fb6('0x18'))['db'];config[_0x8fb6('0x19')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x8fb6('0x1a'))(new Redis(config[_0x8fb6('0x19')]));require(_0x8fb6('0x1b'))[_0x8fb6('0x1c')](socket);var jayson=require(_0x8fb6('0x1d'));var client=jayson[_0x8fb6('0x1e')][_0x8fb6('0x1f')]({'port':0x232c});var client9002=jayson[_0x8fb6('0x1e')][_0x8fb6('0x1f')]({'port':0x232a});function respondWithRpcPromise(_0x25a6c5,_0x568c42,_0x356882,_0x1f8a76){return new BPromise(function(_0x4ac724,_0x135234){var _0x275c56=_0x1f8a76||client;return _0x275c56[_0x8fb6('0x20')](_0x25a6c5,_0x356882)[_0x8fb6('0x21')](function(_0x42b88a){logger[_0x8fb6('0x22')]('ChatMessage,\x20%s,\x20%s',_0x568c42,'request\x20sent');logger['debug'](_0x8fb6('0x23'),_0x568c42,'request\x20sent',JSON[_0x8fb6('0x24')](_0x42b88a));if(_0x42b88a[_0x8fb6('0x25')]){if(_0x42b88a[_0x8fb6('0x25')][_0x8fb6('0x26')]===0x1f4){logger['error']('ChatMessage,\x20%s,\x20%s',_0x568c42,_0x42b88a[_0x8fb6('0x25')]['message']);return _0x135234(_0x42b88a[_0x8fb6('0x25')][_0x8fb6('0x27')]);}logger['error']('ChatMessage,\x20%s,\x20%s',_0x568c42,_0x42b88a['error']['message']);return _0x4ac724(_0x42b88a['error'][_0x8fb6('0x27')]);}else{logger[_0x8fb6('0x22')](_0x8fb6('0x28'),_0x568c42,'request\x20sent');_0x4ac724(_0x42b88a[_0x8fb6('0x29')][_0x8fb6('0x27')]);}})['catch'](function(_0x224097){logger['error']('ChatMessage,\x20%s,\x20%s',_0x568c42,_0x224097);_0x135234(_0x224097);});});}function respondWithStatusCode(_0x5b4647,_0x87402a){_0x87402a=_0x87402a||0xcc;return function(_0x560772){if(_0x560772){return _0x5b4647['sendStatus'](_0x87402a);}return _0x5b4647[_0x8fb6('0x2a')](_0x87402a)[_0x8fb6('0x2b')]();};}function respondWithResult(_0xcb476e,_0x1ec6c7){_0x1ec6c7=_0x1ec6c7||0xc8;return function(_0x43e7d0){if(_0x43e7d0){return _0xcb476e['status'](_0x1ec6c7)[_0x8fb6('0x2c')](_0x43e7d0);}};}function respondWithFilteredResult(_0x21d30d,_0x4e39c9){return function(_0x1de8d2){if(_0x1de8d2){var _0x4165cc=typeof _0x4e39c9[_0x8fb6('0x2d')]===_0x8fb6('0x2e')&&typeof _0x4e39c9['limit']===_0x8fb6('0x2e');var _0x405538=_0x1de8d2[_0x8fb6('0x2f')];var _0x31f668=_0x4165cc?0x0:_0x4e39c9[_0x8fb6('0x2d')];var _0x1e6de6=_0x4165cc?_0x1de8d2[_0x8fb6('0x2f')]:_0x4e39c9[_0x8fb6('0x2d')]+_0x4e39c9[_0x8fb6('0x30')];var _0x3d8417;if(_0x1e6de6>=_0x405538){_0x1e6de6=_0x405538;_0x3d8417=0xc8;}else{_0x3d8417=0xce;}_0x21d30d[_0x8fb6('0x2a')](_0x3d8417);return _0x21d30d[_0x8fb6('0x31')](_0x8fb6('0x32'),_0x31f668+'-'+_0x1e6de6+'/'+_0x405538)[_0x8fb6('0x2c')](_0x1de8d2);}return null;};}function patchUpdates(_0x54db4d){return function(_0x37970f){try{jsonpatch['apply'](_0x37970f,_0x54db4d,!![]);}catch(_0x539699){return BPromise[_0x8fb6('0x33')](_0x539699);}return _0x37970f[_0x8fb6('0x34')]();};}function saveUpdates(_0x27bc6b,_0x4493aa){return function(_0x4c0f99){if(_0x4c0f99){return _0x4c0f99[_0x8fb6('0x35')](_0x27bc6b)[_0x8fb6('0x21')](function(_0x5e9d84){return _0x5e9d84;});}return null;};}function removeEntity(_0x5a887f,_0x5d51f5){return function(_0x373ce4){if(_0x373ce4){return _0x373ce4[_0x8fb6('0x36')]()[_0x8fb6('0x21')](function(){_0x5a887f[_0x8fb6('0x2a')](0xcc)[_0x8fb6('0x2b')]();});}};}function handleEntityNotFound(_0x1af87e,_0x3e3bb9){return function(_0x4a5974){if(!_0x4a5974){_0x1af87e[_0x8fb6('0x37')](0x194);}return _0x4a5974;};}function handleError(_0x352e03,_0x136068){_0x136068=_0x136068||0x1f4;return function(_0x15fa5a){logger[_0x8fb6('0x25')](_0x15fa5a[_0x8fb6('0x38')]);if(_0x15fa5a[_0x8fb6('0x39')]){delete _0x15fa5a['name'];}_0x352e03[_0x8fb6('0x2a')](_0x136068)[_0x8fb6('0x3a')](_0x15fa5a);};}exports['index']=function(_0x16498f,_0x3db826){var _0xae8f5e={},_0x30f23e={},_0x375c0c={'count':0x0,'rows':[]};var _0x2a177c=_['map'](db[_0x8fb6('0x3b')][_0x8fb6('0x3c')],function(_0xdc1a38){return{'name':_0xdc1a38[_0x8fb6('0x3d')],'type':_0xdc1a38[_0x8fb6('0x3e')][_0x8fb6('0x3f')]};});_0x30f23e[_0x8fb6('0x40')]=_['map'](_0x2a177c,_0x8fb6('0x39'));_0x30f23e['query']=_[_0x8fb6('0x41')](_0x16498f[_0x8fb6('0x42')]);_0x30f23e['filters']=_[_0x8fb6('0x43')](_0x30f23e[_0x8fb6('0x40')],_0x30f23e[_0x8fb6('0x42')]);_0xae8f5e[_0x8fb6('0x44')]=_['intersection'](_0x30f23e[_0x8fb6('0x40')],qs['fields'](_0x16498f[_0x8fb6('0x42')][_0x8fb6('0x45')]));_0xae8f5e[_0x8fb6('0x44')]=_0xae8f5e[_0x8fb6('0x44')][_0x8fb6('0x46')]?_0xae8f5e[_0x8fb6('0x44')]:_0x30f23e['model'];if(!_0x16498f[_0x8fb6('0x42')][_0x8fb6('0x47')](_0x8fb6('0x48'))){_0xae8f5e['limit']=qs[_0x8fb6('0x30')](_0x16498f[_0x8fb6('0x42')][_0x8fb6('0x30')]);_0xae8f5e[_0x8fb6('0x2d')]=qs['offset'](_0x16498f[_0x8fb6('0x42')][_0x8fb6('0x2d')]);}_0xae8f5e['order']=qs[_0x8fb6('0x49')](_0x16498f[_0x8fb6('0x42')][_0x8fb6('0x49')]);_0xae8f5e[_0x8fb6('0x4a')]=qs['filters'](_[_0x8fb6('0x4b')](_0x16498f[_0x8fb6('0x42')],_0x30f23e[_0x8fb6('0x4c')]),_0x2a177c);if(_0x16498f[_0x8fb6('0x42')][_0x8fb6('0x4d')]){_0xae8f5e[_0x8fb6('0x4a')]=_[_0x8fb6('0x4e')](_0xae8f5e[_0x8fb6('0x4a')],{'$or':_[_0x8fb6('0x4f')](_0x2a177c,function(_0x523ffb){if(_0x523ffb[_0x8fb6('0x3e')]!=='VIRTUAL'){var _0x3620a2={};_0x3620a2[_0x523ffb[_0x8fb6('0x39')]]={'$like':'%'+_0x16498f[_0x8fb6('0x42')][_0x8fb6('0x4d')]+'%'};return _0x3620a2;}})});}_0xae8f5e=_[_0x8fb6('0x4e')]({},_0xae8f5e,_0x16498f[_0x8fb6('0x50')]);var _0x5a4325={'where':_0xae8f5e['where']};return db[_0x8fb6('0x3b')][_0x8fb6('0x2f')](_0x5a4325)[_0x8fb6('0x21')](function(_0x197b0d){_0x375c0c['count']=_0x197b0d;if(_0x16498f[_0x8fb6('0x42')][_0x8fb6('0x51')]){_0xae8f5e[_0x8fb6('0x52')]=[{'all':!![]}];}return db[_0x8fb6('0x3b')]['findAll'](_0xae8f5e);})['then'](function(_0x33e4e1){_0x375c0c[_0x8fb6('0x53')]=_0x33e4e1;return _0x375c0c;})[_0x8fb6('0x21')](respondWithFilteredResult(_0x3db826,_0xae8f5e))['catch'](handleError(_0x3db826,null));};exports[_0x8fb6('0x54')]=function(_0x216162,_0x12a9ef){var _0x43be9e={'raw':!![],'where':{'id':_0x216162[_0x8fb6('0x55')]['id']}},_0x18239f={};_0x18239f[_0x8fb6('0x40')]=_['keys'](db[_0x8fb6('0x3b')][_0x8fb6('0x3c')]);_0x18239f[_0x8fb6('0x42')]=_['keys'](_0x216162['query']);_0x18239f[_0x8fb6('0x4c')]=_[_0x8fb6('0x43')](_0x18239f[_0x8fb6('0x40')],_0x18239f['query']);_0x43be9e[_0x8fb6('0x44')]=_[_0x8fb6('0x43')](_0x18239f[_0x8fb6('0x40')],qs[_0x8fb6('0x45')](_0x216162['query'][_0x8fb6('0x45')]));_0x43be9e[_0x8fb6('0x44')]=_0x43be9e['attributes']['length']?_0x43be9e[_0x8fb6('0x44')]:_0x18239f[_0x8fb6('0x40')];if(_0x216162[_0x8fb6('0x42')][_0x8fb6('0x51')]){_0x43be9e[_0x8fb6('0x52')]=[{'all':!![]}];}_0x43be9e=_['merge']({},_0x43be9e,_0x216162['options']);return db[_0x8fb6('0x3b')][_0x8fb6('0x56')](_0x43be9e)['then'](handleEntityNotFound(_0x12a9ef,null))['then'](respondWithResult(_0x12a9ef,null))[_0x8fb6('0x57')](handleError(_0x12a9ef,null));};exports['create']=function(_0x2492c0,_0x5585bc){return db['ChatMessage'][_0x8fb6('0x58')](_0x2492c0[_0x8fb6('0x59')],{})['then'](respondWithResult(_0x5585bc,0xc9))[_0x8fb6('0x57')](handleError(_0x5585bc,null));};exports['update']=function(_0x29a845,_0x4d88fd){if(_0x29a845['body']['id']){delete _0x29a845[_0x8fb6('0x59')]['id'];}return db[_0x8fb6('0x3b')][_0x8fb6('0x56')]({'where':{'id':_0x29a845[_0x8fb6('0x55')]['id']}})[_0x8fb6('0x21')](handleEntityNotFound(_0x4d88fd,null))[_0x8fb6('0x21')](saveUpdates(_0x29a845[_0x8fb6('0x59')],null))[_0x8fb6('0x21')](respondWithResult(_0x4d88fd,null))[_0x8fb6('0x57')](handleError(_0x4d88fd,null));};exports[_0x8fb6('0x36')]=function(_0x5303e9,_0x22760c){return db[_0x8fb6('0x3b')][_0x8fb6('0x56')]({'where':{'id':_0x5303e9[_0x8fb6('0x55')]['id']}})[_0x8fb6('0x21')](handleEntityNotFound(_0x22760c,null))[_0x8fb6('0x21')](removeEntity(_0x22760c,null))[_0x8fb6('0x57')](handleError(_0x22760c,null));};exports[_0x8fb6('0x5a')]=function(_0x4ae7d0,_0x3fd80a){return db[_0x8fb6('0x3b')][_0x8fb6('0x5a')]()[_0x8fb6('0x21')](respondWithResult(_0x3fd80a,null))[_0x8fb6('0x57')](handleError(_0x3fd80a,null));};var interaction_log=require(_0x8fb6('0x14'))('chat-interactions');exports[_0x8fb6('0x5b')]=function(_0x445ee5,_0xe37166,_0x57dcb4){var _0x563791={'agent':{},'channel':_0x8fb6('0x5c')};if(_0x445ee5['body']['id']){delete _0x445ee5[_0x8fb6('0x59')]['id'];}_0x445ee5[_0x8fb6('0x59')][_0x8fb6('0x5d')]=!![];_0x445ee5['body'][_0x8fb6('0x5e')]=moment()[_0x8fb6('0x5f')]('YYYY-MM-DD\x20HH:mm:ss');_0x445ee5[_0x8fb6('0x59')][_0x8fb6('0x60')]=_0x445ee5[_0x8fb6('0x59')]['UserId']||_0x445ee5[_0x8fb6('0x61')]['id'];_0x563791[_0x8fb6('0x62')]['id']=_0x445ee5[_0x8fb6('0x59')]['UserId'];return db[_0x8fb6('0x3b')]['find']({'where':{'id':_0x445ee5['params']['id'],'UserId':null}})[_0x8fb6('0x21')](handleEntityNotFound(_0xe37166,null))[_0x8fb6('0x21')](saveUpdates(_0x445ee5[_0x8fb6('0x59')],null))[_0x8fb6('0x21')](function(_0x506326){if(_0x506326){_0x563791[_0x8fb6('0x27')]=_0x506326['get']({'plain':!![]});return db['ChatInteraction']['find']({'where':{'id':_0x506326[_0x8fb6('0x63')]}});}return null;})[_0x8fb6('0x21')](handleEntityNotFound(_0xe37166,null))[_0x8fb6('0x21')](function(_0x47a150){if(_0x47a150){return _0x47a150[_0x8fb6('0x35')]({'UserId':_0x445ee5[_0x8fb6('0x59')][_0x8fb6('0x60')],'read1stAt':_[_0x8fb6('0x64')](_0x47a150[_0x8fb6('0x65')])?moment()[_0x8fb6('0x5f')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x8fb6('0x21')](function(_0x4a5ba0){if(_0x4a5ba0){_0x563791[_0x8fb6('0x66')]=_0x4a5ba0[_0x8fb6('0x67')]({'plain':!![]});interaction_log['info']('[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x445ee5[_0x8fb6('0x61')]['id'],_0x445ee5[_0x8fb6('0x61')][_0x8fb6('0x39')],_0x445ee5[_0x8fb6('0x61')][_0x8fb6('0x68')],_0x563791['interaction']['id'],_0x445ee5[_0x8fb6('0x59')]?JSON[_0x8fb6('0x24')](_0x445ee5[_0x8fb6('0x59')]):_0x8fb6('0x69'));return respondWithRpcPromise(_0x8fb6('0x6a'),_0x8fb6('0x6b'),_0x563791);}return null;})[_0x8fb6('0x21')](function(_0x1b42ec){var _0x348275=_0x8fb6('0x6c')+_0x1b42ec['message'][_0x8fb6('0x6d')];return db[_0x8fb6('0x6e')][_0x8fb6('0x42')](_0x348275,{'type':db[_0x8fb6('0x6f')][_0x8fb6('0x70')][_0x8fb6('0x71')],'raw':!![]})[_0x8fb6('0x21')](function(_0x2caa8f){return _0x2caa8f;});})['then'](function(_0x1a04ec){if(_0x1a04ec){_0x563791['message']['contact']=_0x1a04ec[0x0];if(!_0x445ee5[_0x8fb6('0x59')][_0x8fb6('0x60')])return;return db[_0x8fb6('0x72')][_0x8fb6('0x56')]({'where':{'id':_0x445ee5[_0x8fb6('0x59')]['UserId'],'role':_0x8fb6('0x62')},'attributes':['id',_0x8fb6('0x39'),_0x8fb6('0x73'),_0x8fb6('0x74'),_0x8fb6('0x75')],'raw':!![]});}return null;})[_0x8fb6('0x21')](function(_0x5b1a03){if(!_0x5b1a03)return null;_0x563791[_0x8fb6('0x27')][_0x8fb6('0x62')]=_0x5b1a03;return _0x563791;})[_0x8fb6('0x21')](function(_0x37ea24){if(_0x37ea24){if(_0x445ee5[_0x8fb6('0x59')][_0x8fb6('0x76')]){_0x563791[_0x8fb6('0x27')]['interface']=util[_0x8fb6('0x5f')](_0x8fb6('0x77'),_0x445ee5[_0x8fb6('0x61')][_0x8fb6('0x39')]);_0x563791[_0x8fb6('0x27')][_0x8fb6('0x78')]=_0x563791[_0x8fb6('0x78')];_0x563791[_0x8fb6('0x27')][_0x8fb6('0x79')]=_0x563791['channel'];_0x563791[_0x8fb6('0x27')][_0x8fb6('0x7a')]=_0x8fb6('0x5b');return respondWithRpcPromise(_0x8fb6('0x7b'),_0x8fb6('0x7b'),{'event':'acceptmessage','message':_['merge'](_0x563791[_0x8fb6('0x27')],JSON[_0x8fb6('0x7c')](_0x563791[_0x8fb6('0x66')]['formData']))},client9002)[_0x8fb6('0x21')](function(){return _0x563791;});}return _0x563791;}return null;})[_0x8fb6('0x21')](respondWithResult(_0xe37166,null))[_0x8fb6('0x57')](handleError(_0xe37166,null));};var interaction_log=require('../../config/logger')(_0x8fb6('0x7d'));exports[_0x8fb6('0x33')]=function(_0x3dafdf,_0x591733,_0x5be5a9){var _0x46430e={'agent':{},'channel':'chat'};if(_0x3dafdf[_0x8fb6('0x59')]['id']){delete _0x3dafdf[_0x8fb6('0x59')]['id'];}_0x3dafdf[_0x8fb6('0x59')][_0x8fb6('0x60')]=_0x3dafdf[_0x8fb6('0x59')]['UserId']||_0x3dafdf[_0x8fb6('0x61')]['id'];_0x46430e[_0x8fb6('0x62')]['id']=_0x3dafdf[_0x8fb6('0x59')]['UserId'];return db[_0x8fb6('0x3b')]['find']({'where':{'id':_0x3dafdf[_0x8fb6('0x55')]['id'],'UserId':null}})[_0x8fb6('0x21')](handleEntityNotFound(_0x591733,null))[_0x8fb6('0x21')](function(_0x100539){if(_0x100539){_0x46430e[_0x8fb6('0x27')]=_0x100539[_0x8fb6('0x67')]({'plain':!![]});return db[_0x8fb6('0x7e')][_0x8fb6('0x56')]({'where':{'id':_0x100539[_0x8fb6('0x63')]}});}return null;})['then'](handleEntityNotFound(_0x591733,null))['then'](function(_0x33cb23){if(_0x33cb23){_0x46430e['interaction']=_0x33cb23[_0x8fb6('0x67')]({'plain':!![]});interaction_log[_0x8fb6('0x22')](_0x8fb6('0x7f'),_0x3dafdf[_0x8fb6('0x61')]['id'],_0x3dafdf[_0x8fb6('0x61')][_0x8fb6('0x39')],_0x3dafdf['user'][_0x8fb6('0x68')],_0x46430e[_0x8fb6('0x66')]['id'],_0x3dafdf[_0x8fb6('0x59')]?JSON[_0x8fb6('0x24')](_0x3dafdf['body']):_0x8fb6('0x69'));return respondWithRpcPromise('RejectMessage',_0x8fb6('0x80'),_0x46430e);}return null;})[_0x8fb6('0x21')](function(_0x22f097){var _0x7694a9=_0x8fb6('0x6c')+_0x22f097[_0x8fb6('0x27')][_0x8fb6('0x6d')];return db[_0x8fb6('0x6e')][_0x8fb6('0x42')](_0x7694a9,{'type':db[_0x8fb6('0x6f')][_0x8fb6('0x70')][_0x8fb6('0x71')],'raw':!![]})[_0x8fb6('0x21')](function(_0x1aee07){return _0x1aee07;});})[_0x8fb6('0x21')](function(_0x217f3e){if(_0x217f3e){_0x46430e[_0x8fb6('0x27')][_0x8fb6('0x81')]=_0x217f3e[0x0];if(!_0x3dafdf[_0x8fb6('0x59')][_0x8fb6('0x60')])return;return db[_0x8fb6('0x72')]['find']({'where':{'id':_0x3dafdf[_0x8fb6('0x59')][_0x8fb6('0x60')],'role':'agent'},'attributes':['id','name',_0x8fb6('0x73'),_0x8fb6('0x74'),_0x8fb6('0x75')],'raw':!![]});}return null;})['then'](function(_0x4e8cda){if(!_0x4e8cda)return null;_0x46430e[_0x8fb6('0x27')][_0x8fb6('0x62')]=_0x4e8cda;return _0x46430e;})[_0x8fb6('0x21')](function(_0x32caa3){if(_0x32caa3){_0x32caa3['message'][_0x8fb6('0x82')]=util['format']('SIP/%s',_0x3dafdf[_0x8fb6('0x61')][_0x8fb6('0x39')]);_0x32caa3[_0x8fb6('0x27')][_0x8fb6('0x78')]=_0x46430e['channel'];_0x32caa3['message'][_0x8fb6('0x79')]=_0x46430e['channel'];_0x32caa3[_0x8fb6('0x27')][_0x8fb6('0x7a')]=_0x8fb6('0x33');respondWithRpcPromise(_0x8fb6('0x7b'),_0x8fb6('0x7b'),{'event':'rejectmessage','message':_[_0x8fb6('0x4e')](_0x46430e[_0x8fb6('0x27')],JSON[_0x8fb6('0x7c')](_0x46430e['interaction'][_0x8fb6('0x83')]))},client9002);return _0x46430e;}return null;})[_0x8fb6('0x21')](respondWithResult(_0x591733,null))['catch'](handleError(_0x591733,null));};
\ No newline at end of file
+var _0x124c=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','localhost','socket.io-emitter','redis','./chatMessage.socket','register','jayson/promise','client','http','then','info','request\x20sent','debug','ChatMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','ChatMessage,\x20%s,\x20%s','result','sendStatus','end','status','json','offset','limit','undefined','count','set','apply','update','destroy','name','send','index','ChatMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','where','merge','map','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','chat-interactions','chat','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','ChatInteraction','isNil','read1stAt','[CHATMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','interaction','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','QueryTypes','contact','User','fullname','internal','manual','SIP/%s','channel','motionChannel','EventManager','acceptmessage','formData','ChatInteractionId','[CHATMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','SELECT','email','interface','parse','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','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x44268d,_0xad8443){var _0x4be92d=function(_0x8a57ff){while(--_0x8a57ff){_0x44268d['push'](_0x44268d['shift']());}};_0x4be92d(++_0xad8443);}(_0x124c,0x185));var _0xc124=function(_0x3100b0,_0x16d311){_0x3100b0=_0x3100b0-0x0;var _0x16737c=_0x124c[_0x3100b0];return _0x16737c;};'use strict';var emlformat=require(_0xc124('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc124('0x1'));var jsonpatch=require(_0xc124('0x2'));var rp=require(_0xc124('0x3'));var moment=require(_0xc124('0x4'));var BPromise=require(_0xc124('0x5'));var Mustache=require(_0xc124('0x6'));var util=require(_0xc124('0x7'));var path=require(_0xc124('0x8'));var sox=require(_0xc124('0x9'));var csv=require(_0xc124('0xa'));var ejs=require(_0xc124('0xb'));var fs=require('fs');var fs_extra=require(_0xc124('0xc'));var _=require(_0xc124('0xd'));var squel=require(_0xc124('0xe'));var crypto=require('crypto');var jsforce=require(_0xc124('0xf'));var deskjs=require(_0xc124('0x10'));var toCsv=require('to-csv');var querystring=require(_0xc124('0x11'));var Papa=require(_0xc124('0x12'));var Redis=require(_0xc124('0x13'));var authService=require(_0xc124('0x14'));var qs=require(_0xc124('0x15'));var as=require(_0xc124('0x16'));var hardwareService=require(_0xc124('0x17'));var logger=require(_0xc124('0x18'))(_0xc124('0x19'));var utils=require(_0xc124('0x1a'));var config=require(_0xc124('0x1b'));var licenseUtil=require(_0xc124('0x1c'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config['redis'],{'host':_0xc124('0x1d'),'port':0x18eb});var socket=require(_0xc124('0x1e'))(new Redis(config[_0xc124('0x1f')]));require(_0xc124('0x20'))[_0xc124('0x21')](socket);var jayson=require(_0xc124('0x22'));var client=jayson[_0xc124('0x23')]['http']({'port':0x232c});var client9002=jayson[_0xc124('0x23')][_0xc124('0x24')]({'port':0x232a});function respondWithRpcPromise(_0x56cde1,_0xe4f8a2,_0x35d0a7,_0x144693){return new BPromise(function(_0x19b3e7,_0x55d16b){var _0x2f9ffe=_0x144693||client;return _0x2f9ffe['request'](_0x56cde1,_0x35d0a7)[_0xc124('0x25')](function(_0x47db35){logger[_0xc124('0x26')]('ChatMessage,\x20%s,\x20%s',_0xe4f8a2,_0xc124('0x27'));logger[_0xc124('0x28')](_0xc124('0x29'),_0xe4f8a2,_0xc124('0x27'),JSON[_0xc124('0x2a')](_0x47db35));if(_0x47db35[_0xc124('0x2b')]){if(_0x47db35['error']['code']===0x1f4){logger['error']('ChatMessage,\x20%s,\x20%s',_0xe4f8a2,_0x47db35[_0xc124('0x2b')][_0xc124('0x2c')]);return _0x55d16b(_0x47db35['error'][_0xc124('0x2c')]);}logger[_0xc124('0x2b')](_0xc124('0x2d'),_0xe4f8a2,_0x47db35[_0xc124('0x2b')][_0xc124('0x2c')]);return _0x19b3e7(_0x47db35[_0xc124('0x2b')]['message']);}else{logger['info'](_0xc124('0x2d'),_0xe4f8a2,'request\x20sent');_0x19b3e7(_0x47db35[_0xc124('0x2e')][_0xc124('0x2c')]);}})['catch'](function(_0x17190d){logger['error'](_0xc124('0x2d'),_0xe4f8a2,_0x17190d);_0x55d16b(_0x17190d);});});}function respondWithStatusCode(_0x1e0b61,_0x24522d){_0x24522d=_0x24522d||0xcc;return function(_0x2125eb){if(_0x2125eb){return _0x1e0b61[_0xc124('0x2f')](_0x24522d);}return _0x1e0b61['status'](_0x24522d)[_0xc124('0x30')]();};}function respondWithResult(_0x2d0f6a,_0x1362c2){_0x1362c2=_0x1362c2||0xc8;return function(_0x37138a){if(_0x37138a){return _0x2d0f6a[_0xc124('0x31')](_0x1362c2)[_0xc124('0x32')](_0x37138a);}};}function respondWithFilteredResult(_0x574bda,_0x361b72){return function(_0xbc975b){if(_0xbc975b){var _0x1be613=typeof _0x361b72[_0xc124('0x33')]==='undefined'&&typeof _0x361b72[_0xc124('0x34')]===_0xc124('0x35');var _0x2227b1=_0xbc975b[_0xc124('0x36')];var _0x4afa88=_0x1be613?0x0:_0x361b72['offset'];var _0x2a1f10=_0x1be613?_0xbc975b['count']:_0x361b72[_0xc124('0x33')]+_0x361b72['limit'];var _0x9bea17;if(_0x2a1f10>=_0x2227b1){_0x2a1f10=_0x2227b1;_0x9bea17=0xc8;}else{_0x9bea17=0xce;}_0x574bda[_0xc124('0x31')](_0x9bea17);return _0x574bda[_0xc124('0x37')]('Content-Range',_0x4afa88+'-'+_0x2a1f10+'/'+_0x2227b1)[_0xc124('0x32')](_0xbc975b);}return null;};}function patchUpdates(_0x4409ea){return function(_0x2d001d){try{jsonpatch[_0xc124('0x38')](_0x2d001d,_0x4409ea,!![]);}catch(_0x4347ef){return BPromise['reject'](_0x4347ef);}return _0x2d001d['save']();};}function saveUpdates(_0x4db57b,_0xa13a4c){return function(_0x1d6bad){if(_0x1d6bad){return _0x1d6bad[_0xc124('0x39')](_0x4db57b)[_0xc124('0x25')](function(_0x4ff8c2){return _0x4ff8c2;});}return null;};}function removeEntity(_0x30d842,_0x5adfa0){return function(_0x2c9e30){if(_0x2c9e30){return _0x2c9e30[_0xc124('0x3a')]()[_0xc124('0x25')](function(){_0x30d842['status'](0xcc)[_0xc124('0x30')]();});}};}function handleEntityNotFound(_0x12f012,_0x5c734e){return function(_0x5293b8){if(!_0x5293b8){_0x12f012['sendStatus'](0x194);}return _0x5293b8;};}function handleError(_0x431613,_0x117847){_0x117847=_0x117847||0x1f4;return function(_0x32db80){logger[_0xc124('0x2b')](_0x32db80['stack']);if(_0x32db80[_0xc124('0x3b')]){delete _0x32db80[_0xc124('0x3b')];}_0x431613['status'](_0x117847)[_0xc124('0x3c')](_0x32db80);};}exports[_0xc124('0x3d')]=function(_0xfe797d,_0x215a22){var _0x55459c={},_0x26d979={},_0x20144e={'count':0x0,'rows':[]};var _0x5a0b9b=_['map'](db[_0xc124('0x3e')][_0xc124('0x3f')],function(_0x5aacec){return{'name':_0x5aacec[_0xc124('0x40')],'type':_0x5aacec[_0xc124('0x41')][_0xc124('0x42')]};});_0x26d979[_0xc124('0x43')]=_['map'](_0x5a0b9b,'name');_0x26d979[_0xc124('0x44')]=_[_0xc124('0x45')](_0xfe797d[_0xc124('0x44')]);_0x26d979[_0xc124('0x46')]=_[_0xc124('0x47')](_0x26d979[_0xc124('0x43')],_0x26d979['query']);_0x55459c[_0xc124('0x48')]=_['intersection'](_0x26d979['model'],qs[_0xc124('0x49')](_0xfe797d[_0xc124('0x44')][_0xc124('0x49')]));_0x55459c[_0xc124('0x48')]=_0x55459c[_0xc124('0x48')][_0xc124('0x4a')]?_0x55459c['attributes']:_0x26d979[_0xc124('0x43')];if(!_0xfe797d[_0xc124('0x44')][_0xc124('0x4b')](_0xc124('0x4c'))){_0x55459c[_0xc124('0x34')]=qs[_0xc124('0x34')](_0xfe797d[_0xc124('0x44')][_0xc124('0x34')]);_0x55459c[_0xc124('0x33')]=qs['offset'](_0xfe797d['query']['offset']);}_0x55459c['order']=qs['sort'](_0xfe797d[_0xc124('0x44')][_0xc124('0x4d')]);_0x55459c['where']=qs[_0xc124('0x46')](_[_0xc124('0x4e')](_0xfe797d['query'],_0x26d979[_0xc124('0x46')]),_0x5a0b9b);if(_0xfe797d['query']['filter']){_0x55459c[_0xc124('0x4f')]=_[_0xc124('0x50')](_0x55459c[_0xc124('0x4f')],{'$or':_[_0xc124('0x51')](_0x5a0b9b,function(_0x386eb4){if(_0x386eb4['type']!==_0xc124('0x52')){var _0x495f98={};_0x495f98[_0x386eb4[_0xc124('0x3b')]]={'$like':'%'+_0xfe797d[_0xc124('0x44')][_0xc124('0x53')]+'%'};return _0x495f98;}})});}_0x55459c=_[_0xc124('0x50')]({},_0x55459c,_0xfe797d[_0xc124('0x54')]);var _0x2dd8fe={'where':_0x55459c['where']};return db[_0xc124('0x3e')][_0xc124('0x36')](_0x2dd8fe)[_0xc124('0x25')](function(_0x20795c){_0x20144e[_0xc124('0x36')]=_0x20795c;if(_0xfe797d[_0xc124('0x44')][_0xc124('0x55')]){_0x55459c[_0xc124('0x56')]=[{'all':!![]}];}return db['ChatMessage'][_0xc124('0x57')](_0x55459c);})[_0xc124('0x25')](function(_0x183aaa){_0x20144e[_0xc124('0x58')]=_0x183aaa;return _0x20144e;})[_0xc124('0x25')](respondWithFilteredResult(_0x215a22,_0x55459c))[_0xc124('0x59')](handleError(_0x215a22,null));};exports[_0xc124('0x5a')]=function(_0x3b8402,_0x596ade){var _0x3080db={'raw':!![],'where':{'id':_0x3b8402[_0xc124('0x5b')]['id']}},_0x237741={};_0x237741['model']=_[_0xc124('0x45')](db[_0xc124('0x3e')]['rawAttributes']);_0x237741[_0xc124('0x44')]=_[_0xc124('0x45')](_0x3b8402[_0xc124('0x44')]);_0x237741[_0xc124('0x46')]=_[_0xc124('0x47')](_0x237741[_0xc124('0x43')],_0x237741[_0xc124('0x44')]);_0x3080db['attributes']=_[_0xc124('0x47')](_0x237741['model'],qs['fields'](_0x3b8402[_0xc124('0x44')][_0xc124('0x49')]));_0x3080db[_0xc124('0x48')]=_0x3080db[_0xc124('0x48')][_0xc124('0x4a')]?_0x3080db[_0xc124('0x48')]:_0x237741[_0xc124('0x43')];if(_0x3b8402['query'][_0xc124('0x55')]){_0x3080db[_0xc124('0x56')]=[{'all':!![]}];}_0x3080db=_[_0xc124('0x50')]({},_0x3080db,_0x3b8402[_0xc124('0x54')]);return db['ChatMessage'][_0xc124('0x5c')](_0x3080db)[_0xc124('0x25')](handleEntityNotFound(_0x596ade,null))[_0xc124('0x25')](respondWithResult(_0x596ade,null))['catch'](handleError(_0x596ade,null));};exports[_0xc124('0x5d')]=function(_0x180e9b,_0x2cd501){return db[_0xc124('0x3e')][_0xc124('0x5d')](_0x180e9b[_0xc124('0x5e')],{})['then'](respondWithResult(_0x2cd501,0xc9))[_0xc124('0x59')](handleError(_0x2cd501,null));};exports['update']=function(_0x16d39a,_0x5ad01c){if(_0x16d39a[_0xc124('0x5e')]['id']){delete _0x16d39a[_0xc124('0x5e')]['id'];}return db[_0xc124('0x3e')][_0xc124('0x5c')]({'where':{'id':_0x16d39a[_0xc124('0x5b')]['id']}})['then'](handleEntityNotFound(_0x5ad01c,null))[_0xc124('0x25')](saveUpdates(_0x16d39a[_0xc124('0x5e')],null))[_0xc124('0x25')](respondWithResult(_0x5ad01c,null))[_0xc124('0x59')](handleError(_0x5ad01c,null));};exports[_0xc124('0x3a')]=function(_0x366c7a,_0x3d559a){return db[_0xc124('0x3e')][_0xc124('0x5c')]({'where':{'id':_0x366c7a[_0xc124('0x5b')]['id']}})['then'](handleEntityNotFound(_0x3d559a,null))['then'](removeEntity(_0x3d559a,null))['catch'](handleError(_0x3d559a,null));};exports['describe']=function(_0xe3448e,_0x288cef){return db[_0xc124('0x3e')][_0xc124('0x5f')]()[_0xc124('0x25')](respondWithResult(_0x288cef,null))[_0xc124('0x59')](handleError(_0x288cef,null));};var interaction_log=require('../../config/logger')(_0xc124('0x60'));exports['accept']=function(_0x5eda37,_0x57185b,_0x599c70){var _0x3c54de={'agent':{},'channel':_0xc124('0x61')};if(_0x5eda37['body']['id']){delete _0x5eda37['body']['id'];}_0x5eda37[_0xc124('0x5e')][_0xc124('0x62')]=!![];_0x5eda37[_0xc124('0x5e')]['readAt']=moment()[_0xc124('0x63')](_0xc124('0x64'));_0x5eda37[_0xc124('0x5e')][_0xc124('0x65')]=_0x5eda37[_0xc124('0x5e')]['UserId']||_0x5eda37[_0xc124('0x66')]['id'];_0x3c54de[_0xc124('0x67')]['id']=_0x5eda37[_0xc124('0x5e')]['UserId'];return db[_0xc124('0x3e')]['find']({'where':{'id':_0x5eda37['params']['id'],'UserId':null}})[_0xc124('0x25')](handleEntityNotFound(_0x57185b,null))[_0xc124('0x25')](saveUpdates(_0x5eda37['body'],null))[_0xc124('0x25')](function(_0xd7fe16){if(_0xd7fe16){_0x3c54de[_0xc124('0x2c')]=_0xd7fe16[_0xc124('0x68')]({'plain':!![]});return db[_0xc124('0x69')][_0xc124('0x5c')]({'where':{'id':_0xd7fe16['ChatInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x57185b,null))['then'](function(_0x5cbdad){if(_0x5cbdad){return _0x5cbdad[_0xc124('0x39')]({'UserId':_0x5eda37[_0xc124('0x5e')][_0xc124('0x65')],'read1stAt':_[_0xc124('0x6a')](_0x5cbdad[_0xc124('0x6b')])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})['then'](function(_0x5b1e98){if(_0x5b1e98){_0x3c54de['interaction']=_0x5b1e98[_0xc124('0x68')]({'plain':!![]});interaction_log[_0xc124('0x26')](_0xc124('0x6c'),_0x5eda37['user']['id'],_0x5eda37['user']['name'],_0x5eda37['user'][_0xc124('0x6d')],_0x3c54de[_0xc124('0x6e')]['id'],_0x5eda37[_0xc124('0x5e')]?JSON['stringify'](_0x5eda37[_0xc124('0x5e')]):_0xc124('0x6f'));return respondWithRpcPromise(_0xc124('0x70'),_0xc124('0x71'),_0x3c54de);}return null;})[_0xc124('0x25')](function(_0x134fb7){var _0x2ce900=_0xc124('0x72')+_0x134fb7[_0xc124('0x2c')][_0xc124('0x73')];return db[_0xc124('0x74')][_0xc124('0x44')](_0x2ce900,{'type':db[_0xc124('0x75')][_0xc124('0x76')]['SELECT'],'raw':!![]})[_0xc124('0x25')](function(_0x108c4b){return _0x108c4b;});})[_0xc124('0x25')](function(_0x37ddca){if(_0x37ddca){_0x3c54de['message'][_0xc124('0x77')]=_0x37ddca[0x0];if(!_0x5eda37[_0xc124('0x5e')][_0xc124('0x65')])return;return db[_0xc124('0x78')][_0xc124('0x5c')]({'where':{'id':_0x5eda37[_0xc124('0x5e')]['UserId'],'role':_0xc124('0x67')},'attributes':['id',_0xc124('0x3b'),_0xc124('0x79'),'email',_0xc124('0x7a')],'raw':!![]});}return null;})[_0xc124('0x25')](function(_0xb7207f){if(!_0xb7207f)return null;_0x3c54de[_0xc124('0x2c')]['agent']=_0xb7207f;return _0x3c54de;})[_0xc124('0x25')](function(_0x52eaa0){if(_0x52eaa0){if(_0x5eda37['body'][_0xc124('0x7b')]){_0x3c54de[_0xc124('0x2c')]['interface']=util[_0xc124('0x63')](_0xc124('0x7c'),_0x5eda37[_0xc124('0x66')][_0xc124('0x3b')]);_0x3c54de[_0xc124('0x2c')][_0xc124('0x7d')]=_0x3c54de[_0xc124('0x7d')];_0x3c54de[_0xc124('0x2c')][_0xc124('0x7e')]=_0x3c54de['channel'];_0x3c54de[_0xc124('0x2c')]['event']='accept';return respondWithRpcPromise(_0xc124('0x7f'),_0xc124('0x7f'),{'event':_0xc124('0x80'),'message':_['merge'](_0x3c54de[_0xc124('0x2c')],JSON['parse'](_0x3c54de[_0xc124('0x6e')][_0xc124('0x81')]))},client9002)[_0xc124('0x25')](function(){return _0x3c54de;});}return _0x3c54de;}return null;})[_0xc124('0x25')](respondWithResult(_0x57185b,null))[_0xc124('0x59')](handleError(_0x57185b,null));};var interaction_log=require(_0xc124('0x18'))(_0xc124('0x60'));exports['reject']=function(_0x450646,_0x20cad3,_0x229ca6){var _0xcf62c2={'agent':{},'channel':'chat'};if(_0x450646[_0xc124('0x5e')]['id']){delete _0x450646['body']['id'];}_0x450646[_0xc124('0x5e')][_0xc124('0x65')]=_0x450646['body'][_0xc124('0x65')]||_0x450646['user']['id'];_0xcf62c2['agent']['id']=_0x450646[_0xc124('0x5e')]['UserId'];return db[_0xc124('0x3e')]['find']({'where':{'id':_0x450646[_0xc124('0x5b')]['id'],'UserId':null}})[_0xc124('0x25')](handleEntityNotFound(_0x20cad3,null))['then'](function(_0x21f617){if(_0x21f617){_0xcf62c2['message']=_0x21f617[_0xc124('0x68')]({'plain':!![]});return db[_0xc124('0x69')]['find']({'where':{'id':_0x21f617[_0xc124('0x82')]}});}return null;})[_0xc124('0x25')](handleEntityNotFound(_0x20cad3,null))['then'](function(_0x4ed082){if(_0x4ed082){_0xcf62c2['interaction']=_0x4ed082['get']({'plain':!![]});interaction_log[_0xc124('0x26')](_0xc124('0x83'),_0x450646[_0xc124('0x66')]['id'],_0x450646['user']['name'],_0x450646['user'][_0xc124('0x6d')],_0xcf62c2[_0xc124('0x6e')]['id'],_0x450646[_0xc124('0x5e')]?JSON[_0xc124('0x2a')](_0x450646[_0xc124('0x5e')]):'null');return respondWithRpcPromise('RejectMessage',_0xc124('0x84'),_0xcf62c2);}return null;})['then'](function(_0x28563b){var _0x5a49a9=_0xc124('0x72')+_0x28563b[_0xc124('0x2c')][_0xc124('0x73')];return db['sequelize'][_0xc124('0x44')](_0x5a49a9,{'type':db[_0xc124('0x75')][_0xc124('0x76')][_0xc124('0x85')],'raw':!![]})[_0xc124('0x25')](function(_0x2f0638){return _0x2f0638;});})[_0xc124('0x25')](function(_0xd97fa5){if(_0xd97fa5){_0xcf62c2['message'][_0xc124('0x77')]=_0xd97fa5[0x0];if(!_0x450646[_0xc124('0x5e')][_0xc124('0x65')])return;return db[_0xc124('0x78')][_0xc124('0x5c')]({'where':{'id':_0x450646[_0xc124('0x5e')][_0xc124('0x65')],'role':_0xc124('0x67')},'attributes':['id',_0xc124('0x3b'),_0xc124('0x79'),_0xc124('0x86'),_0xc124('0x7a')],'raw':!![]});}return null;})[_0xc124('0x25')](function(_0x2e8ce9){if(!_0x2e8ce9)return null;_0xcf62c2[_0xc124('0x2c')]['agent']=_0x2e8ce9;return _0xcf62c2;})[_0xc124('0x25')](function(_0x599891){if(_0x599891){_0x599891[_0xc124('0x2c')][_0xc124('0x87')]=util[_0xc124('0x63')](_0xc124('0x7c'),_0x450646[_0xc124('0x66')][_0xc124('0x3b')]);_0x599891['message'][_0xc124('0x7d')]=_0xcf62c2[_0xc124('0x7d')];_0x599891[_0xc124('0x2c')][_0xc124('0x7e')]=_0xcf62c2[_0xc124('0x7d')];_0x599891['message']['event']='reject';respondWithRpcPromise(_0xc124('0x7f'),'EventManager',{'event':'rejectmessage','message':_[_0xc124('0x50')](_0xcf62c2[_0xc124('0x2c')],JSON[_0xc124('0x88')](_0xcf62c2[_0xc124('0x6e')]['formData']))},client9002);return _0xcf62c2;}return null;})['then'](respondWithResult(_0x20cad3,null))['catch'](handleError(_0x20cad3,null));};
\ No newline at end of file
index 76b9644..607191c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd04f=['setMaxListeners','update','remove','emit','hook','events','../../mysqldb'];(function(_0x5da55b,_0x36704d){var _0x1193d8=function(_0x9bcadc){while(--_0x9bcadc){_0x5da55b['push'](_0x5da55b['shift']());}};_0x1193d8(++_0x36704d);}(_0xd04f,0x6e));var _0xfd04=function(_0x51076c,_0x15ac65){_0x51076c=_0x51076c-0x0;var _0x2a79c9=_0xd04f[_0x51076c];return _0x2a79c9;};'use strict';var EventEmitter=require(_0xfd04('0x0'));var ChatMessage=require(_0xfd04('0x1'))['db']['ChatMessage'];var ChatMessageEvents=new EventEmitter();ChatMessageEvents[_0xfd04('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xfd04('0x3'),'afterDestroy':_0xfd04('0x4')};function emitEvent(_0x1abe10){return function(_0x32d2fd,_0x21594d,_0x19d324){ChatMessageEvents[_0xfd04('0x5')](_0x1abe10+':'+_0x32d2fd['id'],_0x32d2fd);ChatMessageEvents[_0xfd04('0x5')](_0x1abe10,_0x32d2fd);_0x19d324(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatMessage[_0xfd04('0x6')](e,emitEvent(event));}}module['exports']=ChatMessageEvents;
\ No newline at end of file
+var _0x0460=['hook','exports','events','../../mysqldb','update','remove','emit'];(function(_0x35ab75,_0x439ba0){var _0x19ac25=function(_0x3f4a2c){while(--_0x3f4a2c){_0x35ab75['push'](_0x35ab75['shift']());}};_0x19ac25(++_0x439ba0);}(_0x0460,0x1f3));var _0x0046=function(_0x86da5d,_0x18d93e){_0x86da5d=_0x86da5d-0x0;var _0x4f6f71=_0x0460[_0x86da5d];return _0x4f6f71;};'use strict';var EventEmitter=require(_0x0046('0x0'));var ChatMessage=require(_0x0046('0x1'))['db']['ChatMessage'];var ChatMessageEvents=new EventEmitter();ChatMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x0046('0x2'),'afterDestroy':_0x0046('0x3')};function emitEvent(_0x172ec3){return function(_0x4c63ad,_0x2f7b7b,_0x317f9b){ChatMessageEvents[_0x0046('0x4')](_0x172ec3+':'+_0x4c63ad['id'],_0x4c63ad);ChatMessageEvents[_0x0046('0x4')](_0x172ec3,_0x4c63ad);_0x317f9b(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatMessage[_0x0046('0x5')](e,emitEvent(event));}}module[_0x0046('0x6')]=ChatMessageEvents;
\ No newline at end of file
index e0aba56..6dedf5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffaa=['secret','isNil','ChatInteraction','findOne','ChatInteractionId','then','update','catch','error','utf8mb4','utf8mb4_unicode_ci','util','api','bluebird','request-promise','rimraf','../../config/environment','./chatMessage.attributes','define','ChatMessage','chat_messages','FULLTEXT','models','direction','toLowerCase','out'];(function(_0x1488cd,_0x25a893){var _0x63fa13=function(_0x57dd1c){while(--_0x57dd1c){_0x1488cd['push'](_0x1488cd['shift']());}};_0x63fa13(++_0x25a893);}(_0xffaa,0x129));var _0xaffa=function(_0x461d56,_0x1c187e){_0x461d56=_0x461d56-0x0;var _0x4d51f9=_0xffaa[_0x461d56];return _0x4d51f9;};'use strict';var _=require('lodash');var util=require(_0xaffa('0x0'));var logger=require('../../config/logger')(_0xaffa('0x1'));var moment=require('moment');var BPromise=require(_0xaffa('0x2'));var rp=require(_0xaffa('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xaffa('0x4'));var config=require(_0xaffa('0x5'));var attributes=require(_0xaffa('0x6'));module['exports']=function(_0x43c026,_0x1ee484){return _0x43c026[_0xaffa('0x7')](_0xaffa('0x8'),attributes,{'tableName':_0xaffa('0x9'),'paranoid':![],'indexes':[{'name':'fti_chat_messages','fields':['body'],'type':_0xaffa('0xa')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x14522b,_0x21accb,_0x325e0e){var _0x45d48c=_0x43c026[_0xaffa('0xb')];var _0x9e7da7=_0x14522b['get']({'plain':!![]});if(_0x9e7da7[_0xaffa('0xc')][_0xaffa('0xd')]()==='in'||_0x9e7da7['direction'][_0xaffa('0xd')]()===_0xaffa('0xe')&&!_0x9e7da7[_0xaffa('0xf')]&&!_[_0xaffa('0x10')](_0x9e7da7['UserId'])){_0x45d48c[_0xaffa('0x11')][_0xaffa('0x12')]({'where':{'id':_0x9e7da7[_0xaffa('0x13')]}})[_0xaffa('0x14')](function(_0x5050ea){if(_0x5050ea){_0x5050ea[_0xaffa('0x15')]({'lastMsgAt':_0x9e7da7['createdAt'],'lastMsgDirection':_0x9e7da7['direction'][_0xaffa('0xd')]()});}})[_0xaffa('0x16')](function(_0x1ad80e){console[_0xaffa('0x17')](_0x1ad80e);});}_0x325e0e();}},'charset':_0xaffa('0x18'),'collate':_0xaffa('0x19')});};
\ No newline at end of file
+var _0x2559=['get','toLowerCase','out','secret','isNil','UserId','ChatInteraction','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','path','rimraf','./chatMessage.attributes','define','chat_messages','fti_chat_messages','models'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2559,0xbc));var _0x9255=function(_0x2cfbc1,_0x45494e){_0x2cfbc1=_0x2cfbc1-0x0;var _0x1d037c=_0x2559[_0x2cfbc1];return _0x1d037c;};'use strict';var _=require(_0x9255('0x0'));var util=require(_0x9255('0x1'));var logger=require(_0x9255('0x2'))(_0x9255('0x3'));var moment=require('moment');var BPromise=require(_0x9255('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x9255('0x5'));var rimraf=require(_0x9255('0x6'));var config=require('../../config/environment');var attributes=require(_0x9255('0x7'));module['exports']=function(_0xf7c91c,_0x2833b5){return _0xf7c91c[_0x9255('0x8')]('ChatMessage',attributes,{'tableName':_0x9255('0x9'),'paranoid':![],'indexes':[{'name':_0x9255('0xa'),'fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x2c72d4,_0x4da33a,_0x37de15){var _0x202513=_0xf7c91c[_0x9255('0xb')];var _0x320226=_0x2c72d4[_0x9255('0xc')]({'plain':!![]});if(_0x320226['direction']['toLowerCase']()==='in'||_0x320226['direction'][_0x9255('0xd')]()===_0x9255('0xe')&&!_0x320226[_0x9255('0xf')]&&!_[_0x9255('0x10')](_0x320226[_0x9255('0x11')])){_0x202513[_0x9255('0x12')]['findOne']({'where':{'id':_0x320226['ChatInteractionId']}})['then'](function(_0x481211){if(_0x481211){_0x481211[_0x9255('0x13')]({'lastMsgAt':_0x320226[_0x9255('0x14')],'lastMsgDirection':_0x320226['direction'][_0x9255('0xd')]()});}})[_0x9255('0x15')](function(_0x567849){console[_0x9255('0x16')](_0x567849);});}_0x37de15();}},'charset':_0x9255('0x17'),'collate':_0x9255('0x18')});};
\ No newline at end of file
index 9073f94..d5b23c3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c89=['message','result','catch','CreateChatMessage','ChatMessage','body','options','raw','lodash','util','moment','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','request','ChatMessage,\x20%s,\x20%s','request\x20sent','debug','error'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x5c89,0x182));var _0x95c8=function(_0x3c6562,_0x3ba51f){_0x3c6562=_0x3c6562-0x0;var _0x1f4ee9=_0x5c89[_0x3c6562];return _0x1f4ee9;};'use strict';var _=require(_0x95c8('0x0'));var util=require(_0x95c8('0x1'));var moment=require(_0x95c8('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(_0x95c8('0x3'));var logger=require('../../config/logger')(_0x95c8('0x4'));var config=require(_0x95c8('0x5'));var jayson=require(_0x95c8('0x6'));var client=jayson[_0x95c8('0x7')][_0x95c8('0x8')]({'port':0x232a});config[_0x95c8('0x9')]=_[_0x95c8('0xa')](config[_0x95c8('0x9')],{'host':_0x95c8('0xb'),'port':0x18eb});var socket=require(_0x95c8('0xc'))(new Redis(config['redis']));require(_0x95c8('0xd'))['register'](socket);function respondWithRpcPromise(_0xc2f873,_0x3db4c3,_0x118fbd){return new BPromise(function(_0x297ba7,_0x461743){return client[_0x95c8('0xe')](_0xc2f873,_0x118fbd)['then'](function(_0x207e6c){logger['info'](_0x95c8('0xf'),_0x3db4c3,_0x95c8('0x10'));logger[_0x95c8('0x11')]('ChatMessage,\x20%s,\x20%s,\x20%s',_0x3db4c3,_0x95c8('0x10'),JSON['stringify'](_0x207e6c));if(_0x207e6c['error']){if(_0x207e6c['error']['code']===0x1f4){logger[_0x95c8('0x12')]('ChatMessage,\x20%s,\x20%s',_0x3db4c3,_0x207e6c['error']['message']);return _0x461743(_0x207e6c[_0x95c8('0x12')][_0x95c8('0x13')]);}logger['error'](_0x95c8('0xf'),_0x3db4c3,_0x207e6c[_0x95c8('0x12')][_0x95c8('0x13')]);return _0x297ba7(_0x207e6c['error'][_0x95c8('0x13')]);}else{logger['info'](_0x95c8('0xf'),_0x3db4c3,_0x95c8('0x10'));_0x297ba7(_0x207e6c[_0x95c8('0x14')][_0x95c8('0x13')]);}})[_0x95c8('0x15')](function(_0x1dc42e){logger[_0x95c8('0x12')](_0x95c8('0xf'),_0x3db4c3,_0x1dc42e);_0x461743(_0x1dc42e);});});}exports[_0x95c8('0x16')]=function(_0x4794e8){var _0x7c533c=this;return new Promise(function(_0x4e8c05,_0x13d119){return db[_0x95c8('0x17')]['create'](_0x4794e8[_0x95c8('0x18')],{'raw':_0x4794e8[_0x95c8('0x19')]?_0x4794e8[_0x95c8('0x19')][_0x95c8('0x1a')]===undefined?!![]:![]:!![]})['then'](function(_0x39f4d8){logger['info'](_0x95c8('0x16'),_0x4794e8);logger[_0x95c8('0x11')](_0x95c8('0x16'),_0x4794e8,JSON['stringify'](_0x39f4d8));_0x4e8c05(_0x39f4d8);})[_0x95c8('0x15')](function(_0x40d7da){logger['error'](_0x95c8('0x16'),_0x40d7da[_0x95c8('0x13')],_0x4794e8);_0x13d119(_0x7c533c[_0x95c8('0x12')](0x1f4,_0x40d7da[_0x95c8('0x13')]));});});};
\ No newline at end of file
+var _0x8ad5=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./chatMessage.socket','register','request','then','info','ChatMessage,\x20%s,\x20%s','debug','ChatMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','ChatMessage','create','body','options','raw','CreateChatMessage','lodash','util','moment','bluebird'];(function(_0x419aa4,_0x5926a7){var _0x557d9b=function(_0x43c9ac){while(--_0x43c9ac){_0x419aa4['push'](_0x419aa4['shift']());}};_0x557d9b(++_0x5926a7);}(_0x8ad5,0xf1));var _0x58ad=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x8ad5[_0x618414];return _0x21c19a;};'use strict';var _=require(_0x58ad('0x0'));var util=require(_0x58ad('0x1'));var moment=require(_0x58ad('0x2'));var BPromise=require(_0x58ad('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x58ad('0x4'))['db'];var utils=require(_0x58ad('0x5'));var logger=require(_0x58ad('0x6'))(_0x58ad('0x7'));var config=require(_0x58ad('0x8'));var jayson=require(_0x58ad('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x58ad('0xa')]=_[_0x58ad('0xb')](config[_0x58ad('0xa')],{'host':_0x58ad('0xc'),'port':0x18eb});var socket=require(_0x58ad('0xd'))(new Redis(config[_0x58ad('0xa')]));require(_0x58ad('0xe'))[_0x58ad('0xf')](socket);function respondWithRpcPromise(_0x6035c7,_0x4da7e4,_0xd8b943){return new BPromise(function(_0x127aea,_0x3d2e5a){return client[_0x58ad('0x10')](_0x6035c7,_0xd8b943)[_0x58ad('0x11')](function(_0x3f1c00){logger[_0x58ad('0x12')](_0x58ad('0x13'),_0x4da7e4,'request\x20sent');logger[_0x58ad('0x14')](_0x58ad('0x15'),_0x4da7e4,_0x58ad('0x16'),JSON[_0x58ad('0x17')](_0x3f1c00));if(_0x3f1c00[_0x58ad('0x18')]){if(_0x3f1c00[_0x58ad('0x18')][_0x58ad('0x19')]===0x1f4){logger[_0x58ad('0x18')]('ChatMessage,\x20%s,\x20%s',_0x4da7e4,_0x3f1c00['error']['message']);return _0x3d2e5a(_0x3f1c00['error'][_0x58ad('0x1a')]);}logger['error'](_0x58ad('0x13'),_0x4da7e4,_0x3f1c00[_0x58ad('0x18')][_0x58ad('0x1a')]);return _0x127aea(_0x3f1c00[_0x58ad('0x18')][_0x58ad('0x1a')]);}else{logger['info'](_0x58ad('0x13'),_0x4da7e4,_0x58ad('0x16'));_0x127aea(_0x3f1c00[_0x58ad('0x1b')][_0x58ad('0x1a')]);}})[_0x58ad('0x1c')](function(_0x38de51){logger[_0x58ad('0x18')](_0x58ad('0x13'),_0x4da7e4,_0x38de51);_0x3d2e5a(_0x38de51);});});}exports['CreateChatMessage']=function(_0x3266d9){var _0x422ee4=this;return new Promise(function(_0x40f899,_0x5e4ff8){return db[_0x58ad('0x1d')][_0x58ad('0x1e')](_0x3266d9[_0x58ad('0x1f')],{'raw':_0x3266d9['options']?_0x3266d9[_0x58ad('0x20')][_0x58ad('0x21')]===undefined?!![]:![]:!![]})[_0x58ad('0x11')](function(_0xf2129c){logger['info'](_0x58ad('0x22'),_0x3266d9);logger[_0x58ad('0x14')](_0x58ad('0x22'),_0x3266d9,JSON[_0x58ad('0x17')](_0xf2129c));_0x40f899(_0xf2129c);})[_0x58ad('0x1c')](function(_0x150a2b){logger[_0x58ad('0x18')](_0x58ad('0x22'),_0x150a2b['message'],_0x3266d9);_0x5e4ff8(_0x422ee4[_0x58ad('0x18')](0x1f4,_0x150a2b['message']));});});};
\ No newline at end of file
index cd78d07..4d75f7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23f4=['length','chatMessage:','save','emit','removeListener','register'];(function(_0x3dda00,_0x392dca){var _0x2a6b26=function(_0x4634f3){while(--_0x4634f3){_0x3dda00['push'](_0x3dda00['shift']());}};_0x2a6b26(++_0x392dca);}(_0x23f4,0x1ee));var _0x423f=function(_0x3a13f0,_0x95f05a){_0x3a13f0=_0x3a13f0-0x0;var _0x1299af=_0x23f4[_0x3a13f0];return _0x1299af;};'use strict';var ChatMessageEvents=require('./chatMessage.events');var events=[_0x423f('0x0'),'remove','update'];function createListener(_0x409cd1,_0xc151c6){return function(_0xe1dc59){_0xc151c6[_0x423f('0x1')](_0x409cd1,_0xe1dc59);};}function removeListener(_0x1ab106,_0x129dba){return function(){ChatMessageEvents[_0x423f('0x2')](_0x1ab106,_0x129dba);};}exports[_0x423f('0x3')]=function(_0x34a2d9){for(var _0x51066b=0x0,_0x260eae=events[_0x423f('0x4')];_0x51066b<_0x260eae;_0x51066b++){var _0x55258d=events[_0x51066b];var _0x727b4e=createListener(_0x423f('0x5')+_0x55258d,_0x34a2d9);ChatMessageEvents['on'](_0x55258d,_0x727b4e);}};
\ No newline at end of file
+var _0xb66c=['chatMessage:','./chatMessage.events','remove','removeListener','register','length'];(function(_0x4191bc,_0x3096c5){var _0x1ffd4e=function(_0x36faed){while(--_0x36faed){_0x4191bc['push'](_0x4191bc['shift']());}};_0x1ffd4e(++_0x3096c5);}(_0xb66c,0x175));var _0xcb66=function(_0x1d8365,_0x47322e){_0x1d8365=_0x1d8365-0x0;var _0x2ef295=_0xb66c[_0x1d8365];return _0x2ef295;};'use strict';var ChatMessageEvents=require(_0xcb66('0x0'));var events=['save',_0xcb66('0x1'),'update'];function createListener(_0x2afcb8,_0x24ea13){return function(_0xf7ccc5){_0x24ea13['emit'](_0x2afcb8,_0xf7ccc5);};}function removeListener(_0x35d439,_0x386241){return function(){ChatMessageEvents[_0xcb66('0x2')](_0x35d439,_0x386241);};}exports[_0xcb66('0x3')]=function(_0x5d766d){for(var _0x518163=0x0,_0x19adf5=events[_0xcb66('0x4')];_0x518163<_0x19adf5;_0x518163++){var _0xa3993=events[_0x518163];var _0x439f3d=createListener(_0xcb66('0x5')+_0xa3993,_0x5d766d);ChatMessageEvents['on'](_0xa3993,_0x439f3d);}};
\ No newline at end of file
index a5425f5..e3bfb3b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeef5=['./chatMessage.controller','isAuthenticated','index','describe','get','/:id','show','post','tracked','create','put','update','accept','reject','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment'];(function(_0x906efa,_0x210bf2){var _0x5b7f5c=function(_0x117743){while(--_0x117743){_0x906efa['push'](_0x906efa['shift']());}};_0x5b7f5c(++_0x210bf2);}(_0xeef5,0x1d3));var _0x5eef=function(_0x351c97,_0x552cbc){_0x351c97=_0x351c97-0x0;var _0x234efa=_0xeef5[_0x351c97];return _0x234efa;};'use strict';var multer=require(_0x5eef('0x0'));var util=require(_0x5eef('0x1'));var path=require(_0x5eef('0x2'));var timeout=require(_0x5eef('0x3'));var express=require(_0x5eef('0x4'));var router=express[_0x5eef('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x5eef('0x6'));var config=require(_0x5eef('0x7'));var controller=require(_0x5eef('0x8'));router['get']('/',auth[_0x5eef('0x9')](),controller[_0x5eef('0xa')]);router['get']('/describe',auth[_0x5eef('0x9')](),controller[_0x5eef('0xb')]);router[_0x5eef('0xc')](_0x5eef('0xd'),auth[_0x5eef('0x9')](),controller[_0x5eef('0xe')]);router[_0x5eef('0xf')]('/',auth[_0x5eef('0x9')](),interaction[_0x5eef('0x10')]('chat','chatmessage:create'),controller[_0x5eef('0x11')]);router[_0x5eef('0x12')](_0x5eef('0xd'),controller[_0x5eef('0x13')]);router[_0x5eef('0x12')]('/:id/accept',auth['isAuthenticated'](),controller[_0x5eef('0x14')]);router[_0x5eef('0x12')]('/:id/reject',auth['isAuthenticated'](),controller[_0x5eef('0x15')]);router[_0x5eef('0x16')](_0x5eef('0xd'),auth[_0x5eef('0x9')](),controller[_0x5eef('0x17')]);module[_0x5eef('0x18')]=router;
\ No newline at end of file
+var _0x3942=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatMessage.controller','isAuthenticated','index','get','describe','/:id','show','post','tracked','chat','chatmessage:create','create','put','update','/:id/accept','accept','/:id/reject','reject','destroy','exports','multer','util'];(function(_0x4dd113,_0x265848){var _0x516587=function(_0x3e8c22){while(--_0x3e8c22){_0x4dd113['push'](_0x4dd113['shift']());}};_0x516587(++_0x265848);}(_0x3942,0x166));var _0x2394=function(_0x2c5b76,_0x344567){_0x2c5b76=_0x2c5b76-0x0;var _0x273ebd=_0x3942[_0x2c5b76];return _0x273ebd;};'use strict';var multer=require(_0x2394('0x0'));var util=require(_0x2394('0x1'));var path=require(_0x2394('0x2'));var timeout=require(_0x2394('0x3'));var express=require(_0x2394('0x4'));var router=express[_0x2394('0x5')]();var fs_extra=require(_0x2394('0x6'));var auth=require(_0x2394('0x7'));var interaction=require(_0x2394('0x8'));var config=require(_0x2394('0x9'));var controller=require(_0x2394('0xa'));router['get']('/',auth[_0x2394('0xb')](),controller[_0x2394('0xc')]);router[_0x2394('0xd')]('/describe',auth['isAuthenticated'](),controller[_0x2394('0xe')]);router[_0x2394('0xd')](_0x2394('0xf'),auth['isAuthenticated'](),controller[_0x2394('0x10')]);router[_0x2394('0x11')]('/',auth[_0x2394('0xb')](),interaction[_0x2394('0x12')](_0x2394('0x13'),_0x2394('0x14')),controller[_0x2394('0x15')]);router[_0x2394('0x16')](_0x2394('0xf'),controller[_0x2394('0x17')]);router[_0x2394('0x16')](_0x2394('0x18'),auth['isAuthenticated'](),controller[_0x2394('0x19')]);router[_0x2394('0x16')](_0x2394('0x1a'),auth[_0x2394('0xb')](),controller[_0x2394('0x1b')]);router['delete'](_0x2394('0xf'),auth[_0x2394('0xb')](),controller[_0x2394('0x1c')]);module[_0x2394('0x1d')]=router;
\ No newline at end of file
index 2a95dad..470955a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['exports','TEXT'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x757a,0xde));var _0xa757=function(_0x15f00a,_0x55de66){_0x15f00a=_0x15f00a-0x0;var _0x13a8a9=_0x757a[_0x15f00a];return _0x13a8a9;};'use strict';var Sequelize=require('sequelize');module[_0xa757('0x0')]={'body':{'type':Sequelize[_0xa757('0x1')]('medium'),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT']('medium'),'allowNull':![]}};
\ No newline at end of file
+var _0x2032=['medium','exports','TEXT'];(function(_0x45b18b,_0x166a7f){var _0x3e34df=function(_0x419a9f){while(--_0x419a9f){_0x45b18b['push'](_0x45b18b['shift']());}};_0x3e34df(++_0x166a7f);}(_0x2032,0xd9));var _0x2203=function(_0x216937,_0x28cb30){_0x216937=_0x216937-0x0;var _0x2af486=_0x2032[_0x216937];return _0x2af486;};'use strict';var Sequelize=require('sequelize');module[_0x2203('0x0')]={'body':{'type':Sequelize[_0x2203('0x1')](_0x2203('0x2')),'allowNull':![]},'plainBody':{'type':Sequelize['TEXT'](_0x2203('0x2')),'allowNull':![]}};
\ No newline at end of file
index a7a34d7..c09eda0 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(_0x298ed3,_0x4ab5e1){var _0x5aad28=function(_0x168687){while(--_0x168687){_0x298ed3['push'](_0x298ed3['shift']());}};_0x5aad28(++_0x4ab5e1);}(_0x7a54,0x106));var _0x47a5=function(_0x2130cd,_0x1a59a0){_0x2130cd=_0x2130cd-0x0;var _0x1804bc=_0x7a54[_0x2130cd];return _0x1804bc;};'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 _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(_0x5b561d,_0x422b7c){var _0x431060=function(_0x401409){while(--_0x401409){_0x5b561d['push'](_0x5b561d['shift']());}};_0x431060(++_0x422b7c);}(_0x7a54,0x106));var _0x47a5=function(_0x5d1cb5,_0x4b2696){_0x5d1cb5=_0x5d1cb5-0x0;var _0xd11a2b=_0x7a54[_0x5d1cb5];return _0xd11a2b;};'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
index 3e1a747..c076773 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x85d6=['setMaxListeners','save','emit','hook','exports','events','../../mysqldb','ChatOfflineMessage'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x85d6,0x135));var _0x685d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x85d6[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x685d('0x0'));var ChatOfflineMessage=require(_0x685d('0x1'))['db'][_0x685d('0x2')];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0x685d('0x3')](0x0);var events={'afterCreate':_0x685d('0x4'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x447935){return function(_0x5074f9,_0xa4c797,_0x362db4){ChatOfflineMessageEvents[_0x685d('0x5')](_0x447935+':'+_0x5074f9['id'],_0x5074f9);ChatOfflineMessageEvents[_0x685d('0x5')](_0x447935,_0x5074f9);_0x362db4(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatOfflineMessage[_0x685d('0x6')](e,emitEvent(event));}}module[_0x685d('0x7')]=ChatOfflineMessageEvents;
\ No newline at end of file
+var _0x7a75=['hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save','remove','emit'];(function(_0x550084,_0x3d94af){var _0x2d1e17=function(_0x1173fd){while(--_0x1173fd){_0x550084['push'](_0x550084['shift']());}};_0x2d1e17(++_0x3d94af);}(_0x7a75,0x18f));var _0x57a7=function(_0x5f469f,_0x11f007){_0x5f469f=_0x5f469f-0x0;var _0x57ea64=_0x7a75[_0x5f469f];return _0x57ea64;};'use strict';var EventEmitter=require(_0x57a7('0x0'));var ChatOfflineMessage=require(_0x57a7('0x1'))['db']['ChatOfflineMessage'];var ChatOfflineMessageEvents=new EventEmitter();ChatOfflineMessageEvents[_0x57a7('0x2')](0x0);var events={'afterCreate':_0x57a7('0x3'),'afterUpdate':'update','afterDestroy':_0x57a7('0x4')};function emitEvent(_0x50892b){return function(_0x360600,_0x5e2d41,_0x2864ba){ChatOfflineMessageEvents[_0x57a7('0x5')](_0x50892b+':'+_0x360600['id'],_0x360600);ChatOfflineMessageEvents[_0x57a7('0x5')](_0x50892b,_0x360600);_0x2864ba(null);};}for(var e in events){if(events[_0x57a7('0x6')](e)){var event=events[e];ChatOfflineMessage[_0x57a7('0x7')](e,emitEvent(event));}}module[_0x57a7('0x8')]=ChatOfflineMessageEvents;
\ No newline at end of file
index b570428..5b0579b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc86b=['./chatOfflineMessage.attributes','define','ChatOfflineMessage','chat_offline_messages'];(function(_0x50b538,_0x25af6b){var _0x3f6b1f=function(_0x59870c){while(--_0x59870c){_0x50b538['push'](_0x50b538['shift']());}};_0x3f6b1f(++_0x25af6b);}(_0xc86b,0x174));var _0xbc86=function(_0x2d2a33,_0x2d1d1f){_0x2d2a33=_0x2d2a33-0x0;var _0x32d8ba=_0xc86b[_0x2d2a33];return _0x32d8ba;};'use strict';var attributes=require(_0xbc86('0x0'));module['exports']=function(_0x299385){return _0x299385[_0xbc86('0x1')](_0xbc86('0x2'),attributes,{'tableName':_0xbc86('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xbeb8=['./chatOfflineMessage.attributes','exports','define','chat_offline_messages','utf8mb4','utf8mb4_unicode_ci'];(function(_0x218b5b,_0x1cd681){var _0x4fe49e=function(_0xe57a0){while(--_0xe57a0){_0x218b5b['push'](_0x218b5b['shift']());}};_0x4fe49e(++_0x1cd681);}(_0xbeb8,0xb4));var _0x8beb=function(_0x1b517d,_0x264fda){_0x1b517d=_0x1b517d-0x0;var _0x146886=_0xbeb8[_0x1b517d];return _0x146886;};'use strict';var attributes=require(_0x8beb('0x0'));module[_0x8beb('0x1')]=function(_0x40e1ad){return _0x40e1ad[_0x8beb('0x2')]('ChatOfflineMessage',attributes,{'tableName':_0x8beb('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x8beb('0x4'),'collate':_0x8beb('0x5')});};
\ No newline at end of file
index e781429..0a37eb4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd34e=['client','http','request','then','info','ChatOfflineMessage,\x20%s,\x20%s','request\x20sent','debug','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise'];(function(_0x4cc21c,_0x595a8d){var _0x78fad8=function(_0x1435cd){while(--_0x1435cd){_0x4cc21c['push'](_0x4cc21c['shift']());}};_0x78fad8(++_0x595a8d);}(_0xd34e,0x1d6));var _0xed34=function(_0x1427e2,_0x31885f){_0x1427e2=_0x1427e2-0x0;var _0x466d06=_0xd34e[_0x1427e2];return _0x466d06;};'use strict';var _=require(_0xed34('0x0'));var util=require(_0xed34('0x1'));var moment=require(_0xed34('0x2'));var BPromise=require(_0xed34('0x3'));var rs=require(_0xed34('0x4'));var fs=require('fs');var Redis=require(_0xed34('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xed34('0x6'));var logger=require(_0xed34('0x7'))('rpc');var config=require(_0xed34('0x8'));var jayson=require(_0xed34('0x9'));var client=jayson[_0xed34('0xa')][_0xed34('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x12a5f7,_0x587bbb,_0x12e589){return new BPromise(function(_0x8d2c7c,_0x524545){return client[_0xed34('0xc')](_0x12a5f7,_0x12e589)[_0xed34('0xd')](function(_0x5c7f1b){logger[_0xed34('0xe')](_0xed34('0xf'),_0x587bbb,_0xed34('0x10'));logger[_0xed34('0x11')](_0xed34('0x12'),_0x587bbb,_0xed34('0x10'),JSON[_0xed34('0x13')](_0x5c7f1b));if(_0x5c7f1b[_0xed34('0x14')]){if(_0x5c7f1b[_0xed34('0x14')][_0xed34('0x15')]===0x1f4){logger[_0xed34('0x14')](_0xed34('0xf'),_0x587bbb,_0x5c7f1b['error'][_0xed34('0x16')]);return _0x524545(_0x5c7f1b[_0xed34('0x14')][_0xed34('0x16')]);}logger['error'](_0xed34('0xf'),_0x587bbb,_0x5c7f1b[_0xed34('0x14')]['message']);return _0x8d2c7c(_0x5c7f1b[_0xed34('0x14')][_0xed34('0x16')]);}else{logger['info'](_0xed34('0xf'),_0x587bbb,_0xed34('0x10'));_0x8d2c7c(_0x5c7f1b['result'][_0xed34('0x16')]);}})[_0xed34('0x17')](function(_0x463475){logger['error'](_0xed34('0xf'),_0x587bbb,_0x463475);_0x524545(_0x463475);});});}
\ No newline at end of file
+var _0x8d01=['../../config/environment','jayson/promise','client','request','info','ChatOfflineMessage,\x20%s,\x20%s','ChatOfflineMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x185fce,_0x4d45cf){var _0x3065d0=function(_0x2e4f8a){while(--_0x2e4f8a){_0x185fce['push'](_0x185fce['shift']());}};_0x3065d0(++_0x4d45cf);}(_0x8d01,0x16d));var _0x18d0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x8d01[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x18d0('0x0'));var util=require(_0x18d0('0x1'));var moment=require(_0x18d0('0x2'));var BPromise=require(_0x18d0('0x3'));var rs=require(_0x18d0('0x4'));var fs=require('fs');var Redis=require(_0x18d0('0x5'));var db=require(_0x18d0('0x6'))['db'];var utils=require(_0x18d0('0x7'));var logger=require('../../config/logger')(_0x18d0('0x8'));var config=require(_0x18d0('0x9'));var jayson=require(_0x18d0('0xa'));var client=jayson[_0x18d0('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x67a785,_0x60bfe8,_0x3385e5){return new BPromise(function(_0x5e8b74,_0x162048){return client[_0x18d0('0xc')](_0x67a785,_0x3385e5)['then'](function(_0x2270d2){logger[_0x18d0('0xd')](_0x18d0('0xe'),_0x60bfe8,'request\x20sent');logger['debug'](_0x18d0('0xf'),_0x60bfe8,_0x18d0('0x10'),JSON[_0x18d0('0x11')](_0x2270d2));if(_0x2270d2[_0x18d0('0x12')]){if(_0x2270d2[_0x18d0('0x12')][_0x18d0('0x13')]===0x1f4){logger[_0x18d0('0x12')](_0x18d0('0xe'),_0x60bfe8,_0x2270d2[_0x18d0('0x12')]['message']);return _0x162048(_0x2270d2[_0x18d0('0x12')][_0x18d0('0x14')]);}logger[_0x18d0('0x12')]('ChatOfflineMessage,\x20%s,\x20%s',_0x60bfe8,_0x2270d2[_0x18d0('0x12')][_0x18d0('0x14')]);return _0x5e8b74(_0x2270d2[_0x18d0('0x12')]['message']);}else{logger['info'](_0x18d0('0xe'),_0x60bfe8,'request\x20sent');_0x5e8b74(_0x2270d2['result'][_0x18d0('0x14')]);}})[_0x18d0('0x15')](function(_0x584a26){logger[_0x18d0('0x12')](_0x18d0('0xe'),_0x60bfe8,_0x584a26);_0x162048(_0x584a26);});});}
\ No newline at end of file
index 0f42685..7b1547e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdabb=['../../config/environment','./chatOfflineMessage.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','put','multer','util','path','connect-timeout','express','../../components/interaction/service'];(function(_0x1a1dd7,_0x9e586a){var _0x5e5ac6=function(_0x6b7c37){while(--_0x6b7c37){_0x1a1dd7['push'](_0x1a1dd7['shift']());}};_0x5e5ac6(++_0x9e586a);}(_0xdabb,0x1e7));var _0xbdab=function(_0x2c0ded,_0x3de22c){_0x2c0ded=_0x2c0ded-0x0;var _0x4473e5=_0xdabb[_0x2c0ded];return _0x4473e5;};'use strict';var multer=require(_0xbdab('0x0'));var util=require(_0xbdab('0x1'));var path=require(_0xbdab('0x2'));var timeout=require(_0xbdab('0x3'));var express=require(_0xbdab('0x4'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xbdab('0x5'));var config=require(_0xbdab('0x6'));var controller=require(_0xbdab('0x7'));router[_0xbdab('0x8')]('/',auth[_0xbdab('0x9')](),controller['index']);router[_0xbdab('0x8')](_0xbdab('0xa'),auth[_0xbdab('0x9')](),controller[_0xbdab('0xb')]);router[_0xbdab('0x8')](_0xbdab('0xc'),auth[_0xbdab('0x9')](),controller[_0xbdab('0xd')]);router[_0xbdab('0xe')]('/',auth[_0xbdab('0x9')](),controller[_0xbdab('0xf')]);router[_0xbdab('0x10')](_0xbdab('0xc'),auth[_0xbdab('0x9')](),controller['update']);router['delete'](_0xbdab('0xc'),auth[_0xbdab('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x15ce=['Router','fs-extra','../../components/auth/service','../../config/environment','./chatOfflineMessage.controller','get','isAuthenticated','index','describe','show','post','/:id','update','destroy','exports','util','path','connect-timeout'];(function(_0x5562a9,_0x5530ca){var _0x56447e=function(_0x2a3814){while(--_0x2a3814){_0x5562a9['push'](_0x5562a9['shift']());}};_0x56447e(++_0x5530ca);}(_0x15ce,0x153));var _0xe15c=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x15ce[_0x1facfa];return _0x9ec701;};'use strict';var multer=require('multer');var util=require(_0xe15c('0x0'));var path=require(_0xe15c('0x1'));var timeout=require(_0xe15c('0x2'));var express=require('express');var router=express[_0xe15c('0x3')]();var fs_extra=require(_0xe15c('0x4'));var auth=require(_0xe15c('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xe15c('0x6'));var controller=require(_0xe15c('0x7'));router[_0xe15c('0x8')]('/',auth[_0xe15c('0x9')](),controller[_0xe15c('0xa')]);router[_0xe15c('0x8')]('/describe',auth[_0xe15c('0x9')](),controller[_0xe15c('0xb')]);router[_0xe15c('0x8')]('/:id',auth['isAuthenticated'](),controller[_0xe15c('0xc')]);router[_0xe15c('0xd')]('/',auth[_0xe15c('0x9')](),controller['create']);router['put'](_0xe15c('0xe'),auth['isAuthenticated'](),controller[_0xe15c('0xf')]);router['delete'](_0xe15c('0xe'),auth[_0xe15c('0x9')](),controller[_0xe15c('0x10')]);module[_0xe15c('0x11')]=router;
\ No newline at end of file
index f0d6b21..82d7827 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa58f=['mouseOver','INTEGER','STRING','ENUM','timeout'];(function(_0xe875e1,_0x326e37){var _0x560e5e=function(_0x8eb80d){while(--_0x8eb80d){_0xe875e1['push'](_0xe875e1['shift']());}};_0x560e5e(++_0x326e37);}(_0xa58f,0x66));var _0xfa58=function(_0x52413e,_0x5878a5){_0x52413e=_0x52413e-0x0;var _0x1f612f=_0xa58f[_0x52413e];return _0x1f612f;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xfa58('0x0')],'allowNull':![]},'type':{'type':Sequelize[_0xfa58('0x1')]('mouseOver',_0xfa58('0x2')),'defaultValue':_0xfa58('0x3')},'selector':{'type':Sequelize[_0xfa58('0x0')]},'timeout':{'type':Sequelize[_0xfa58('0x4')]}};
\ No newline at end of file
+var _0xb6aa=['timeout','INTEGER','STRING'];(function(_0x4019ce,_0x5aeb3a){var _0x2e37f2=function(_0xe710be){while(--_0xe710be){_0x4019ce['push'](_0x4019ce['shift']());}};_0x2e37f2(++_0x5aeb3a);}(_0xb6aa,0x71));var _0xab6a=function(_0x154c91,_0x13935a){_0x154c91=_0x154c91-0x0;var _0xe8817e=_0xb6aa[_0x154c91];return _0xe8817e;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xab6a('0x0')],'allowNull':![]},'type':{'type':Sequelize['ENUM']('mouseOver',_0xab6a('0x1')),'defaultValue':'mouseOver'},'selector':{'type':Sequelize[_0xab6a('0x0')]},'timeout':{'type':Sequelize[_0xab6a('0x2')]}};
\ No newline at end of file
index fc9bf5c..49bca88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x98a8=['moment','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','end','status','json','undefined','count','offset','apply','reject','save','update','then','destroy','error','stack','name','send','show','params','model','keys','ChatProactiveAction','rawAttributes','query','filters','intersection','fields','length','attributes','includeAll','include','merge','options','find','create','body','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x98a8,0x12c));var _0x898a=function(_0x393212,_0x21372a){_0x393212=_0x393212-0x0;var _0x2eb518=_0x98a8[_0x393212];return _0x2eb518;};'use strict';var emlformat=require(_0x898a('0x0'));var rimraf=require(_0x898a('0x1'));var zipdir=require(_0x898a('0x2'));var jsonpatch=require(_0x898a('0x3'));var rp=require(_0x898a('0x4'));var moment=require(_0x898a('0x5'));var BPromise=require(_0x898a('0x6'));var Mustache=require('mustache');var util=require(_0x898a('0x7'));var path=require(_0x898a('0x8'));var sox=require(_0x898a('0x9'));var csv=require(_0x898a('0xa'));var ejs=require(_0x898a('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x898a('0xc'));var squel=require('squel');var crypto=require(_0x898a('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x898a('0xe'));var toCsv=require(_0x898a('0xa'));var querystring=require(_0x898a('0xf'));var Papa=require(_0x898a('0x10'));var Redis=require(_0x898a('0x11'));var authService=require(_0x898a('0x12'));var qs=require(_0x898a('0x13'));var as=require(_0x898a('0x14'));var hardwareService=require(_0x898a('0x15'));var logger=require('../../config/logger')(_0x898a('0x16'));var utils=require('../../config/utils');var config=require(_0x898a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x898a('0x18'))['db'];function respondWithStatusCode(_0x2c76b7,_0x364a23){_0x364a23=_0x364a23||0xcc;return function(_0x5f5e06){if(_0x5f5e06){return _0x2c76b7['sendStatus'](_0x364a23);}return _0x2c76b7['status'](_0x364a23)[_0x898a('0x19')]();};}function respondWithResult(_0x1f5be4,_0xb24335){_0xb24335=_0xb24335||0xc8;return function(_0x116fbe){if(_0x116fbe){return _0x1f5be4[_0x898a('0x1a')](_0xb24335)[_0x898a('0x1b')](_0x116fbe);}};}function respondWithFilteredResult(_0x506023,_0x47033c){return function(_0x53a4b8){if(_0x53a4b8){var _0x3fec7a=typeof _0x47033c['offset']===_0x898a('0x1c')&&typeof _0x47033c['limit']===_0x898a('0x1c');var _0x56f8f9=_0x53a4b8[_0x898a('0x1d')];var _0x3197f7=_0x3fec7a?0x0:_0x47033c[_0x898a('0x1e')];var _0x4ddd4d=_0x3fec7a?_0x53a4b8[_0x898a('0x1d')]:_0x47033c['offset']+_0x47033c['limit'];var _0x3f8af4;if(_0x4ddd4d>=_0x56f8f9){_0x4ddd4d=_0x56f8f9;_0x3f8af4=0xc8;}else{_0x3f8af4=0xce;}_0x506023[_0x898a('0x1a')](_0x3f8af4);return _0x506023['set']('Content-Range',_0x3197f7+'-'+_0x4ddd4d+'/'+_0x56f8f9)[_0x898a('0x1b')](_0x53a4b8);}return null;};}function patchUpdates(_0x26449a){return function(_0x38a8f0){try{jsonpatch[_0x898a('0x1f')](_0x38a8f0,_0x26449a,!![]);}catch(_0x2da52d){return BPromise[_0x898a('0x20')](_0x2da52d);}return _0x38a8f0[_0x898a('0x21')]();};}function saveUpdates(_0x483212,_0x247cfc){return function(_0x50718e){if(_0x50718e){return _0x50718e[_0x898a('0x22')](_0x483212)[_0x898a('0x23')](function(_0x30495a){return _0x30495a;});}return null;};}function removeEntity(_0x310bfa,_0x4e254d){return function(_0x274cdf){if(_0x274cdf){return _0x274cdf[_0x898a('0x24')]()[_0x898a('0x23')](function(){_0x310bfa[_0x898a('0x1a')](0xcc)[_0x898a('0x19')]();});}};}function handleEntityNotFound(_0x1426e3,_0x5b7719){return function(_0x20bde0){if(!_0x20bde0){_0x1426e3['sendStatus'](0x194);}return _0x20bde0;};}function handleError(_0x513c6b,_0x53ddb2){_0x53ddb2=_0x53ddb2||0x1f4;return function(_0x3678be){logger[_0x898a('0x25')](_0x3678be[_0x898a('0x26')]);if(_0x3678be[_0x898a('0x27')]){delete _0x3678be[_0x898a('0x27')];}_0x513c6b[_0x898a('0x1a')](_0x53ddb2)[_0x898a('0x28')](_0x3678be);};}exports[_0x898a('0x29')]=function(_0xd31922,_0x58149d){var _0x4b3e68={'raw':!![],'where':{'id':_0xd31922[_0x898a('0x2a')]['id']}},_0x47f1ed={};_0x47f1ed[_0x898a('0x2b')]=_[_0x898a('0x2c')](db[_0x898a('0x2d')][_0x898a('0x2e')]);_0x47f1ed[_0x898a('0x2f')]=_[_0x898a('0x2c')](_0xd31922[_0x898a('0x2f')]);_0x47f1ed[_0x898a('0x30')]=_[_0x898a('0x31')](_0x47f1ed[_0x898a('0x2b')],_0x47f1ed[_0x898a('0x2f')]);_0x4b3e68['attributes']=_[_0x898a('0x31')](_0x47f1ed[_0x898a('0x2b')],qs[_0x898a('0x32')](_0xd31922[_0x898a('0x2f')][_0x898a('0x32')]));_0x4b3e68['attributes']=_0x4b3e68['attributes'][_0x898a('0x33')]?_0x4b3e68[_0x898a('0x34')]:_0x47f1ed[_0x898a('0x2b')];if(_0xd31922['query'][_0x898a('0x35')]){_0x4b3e68[_0x898a('0x36')]=[{'all':!![]}];}_0x4b3e68=_[_0x898a('0x37')]({},_0x4b3e68,_0xd31922[_0x898a('0x38')]);return db[_0x898a('0x2d')][_0x898a('0x39')](_0x4b3e68)[_0x898a('0x23')](handleEntityNotFound(_0x58149d,null))[_0x898a('0x23')](respondWithResult(_0x58149d,null))['catch'](handleError(_0x58149d,null));};exports[_0x898a('0x3a')]=function(_0x5baf5b,_0x573eb3){return db[_0x898a('0x2d')]['create'](_0x5baf5b[_0x898a('0x3b')],{})['then'](respondWithResult(_0x573eb3,0xc9))[_0x898a('0x3c')](handleError(_0x573eb3,null));};exports['update']=function(_0x299371,_0x354703){if(_0x299371[_0x898a('0x3b')]['id']){delete _0x299371['body']['id'];}return db['ChatProactiveAction']['find']({'where':{'id':_0x299371[_0x898a('0x2a')]['id']}})[_0x898a('0x23')](handleEntityNotFound(_0x354703,null))['then'](saveUpdates(_0x299371[_0x898a('0x3b')],null))[_0x898a('0x23')](respondWithResult(_0x354703,null))[_0x898a('0x3c')](handleError(_0x354703,null));};exports[_0x898a('0x24')]=function(_0x487093,_0x4b07bc){return db[_0x898a('0x2d')][_0x898a('0x39')]({'where':{'id':_0x487093['params']['id']}})['then'](handleEntityNotFound(_0x4b07bc,null))[_0x898a('0x23')](removeEntity(_0x4b07bc,null))[_0x898a('0x3c')](handleError(_0x4b07bc,null));};
\ No newline at end of file
+var _0x556b=['ChatProactiveAction','rawAttributes','query','intersection','model','fields','attributes','includeAll','merge','options','catch','create','body','find','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','end','offset','undefined','limit','count','status','set','json','apply','reject','save','update','then','destroy','sendStatus','stack','send','show'];(function(_0xeacfe1,_0x2b19f6){var _0x3da366=function(_0x34142e){while(--_0x34142e){_0xeacfe1['push'](_0xeacfe1['shift']());}};_0x3da366(++_0x2b19f6);}(_0x556b,0x1d7));var _0xb556=function(_0x2cc507,_0x4c210f){_0x2cc507=_0x2cc507-0x0;var _0x4cdaca=_0x556b[_0x2cc507];return _0x4cdaca;};'use strict';var emlformat=require(_0xb556('0x0'));var rimraf=require(_0xb556('0x1'));var zipdir=require(_0xb556('0x2'));var jsonpatch=require(_0xb556('0x3'));var rp=require(_0xb556('0x4'));var moment=require('moment');var BPromise=require(_0xb556('0x5'));var Mustache=require(_0xb556('0x6'));var util=require(_0xb556('0x7'));var path=require(_0xb556('0x8'));var sox=require(_0xb556('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb556('0xa'));var squel=require(_0xb556('0xb'));var crypto=require(_0xb556('0xc'));var jsforce=require(_0xb556('0xd'));var deskjs=require(_0xb556('0xe'));var toCsv=require(_0xb556('0xf'));var querystring=require(_0xb556('0x10'));var Papa=require(_0xb556('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xb556('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb556('0x13'));var logger=require(_0xb556('0x14'))('api');var utils=require('../../config/utils');var config=require(_0xb556('0x15'));var licenseUtil=require(_0xb556('0x16'));var db=require(_0xb556('0x17'))['db'];function respondWithStatusCode(_0x40d9f2,_0xef593){_0xef593=_0xef593||0xcc;return function(_0x383401){if(_0x383401){return _0x40d9f2['sendStatus'](_0xef593);}return _0x40d9f2['status'](_0xef593)[_0xb556('0x18')]();};}function respondWithResult(_0x5a002a,_0x29fa7e){_0x29fa7e=_0x29fa7e||0xc8;return function(_0x52ff5e){if(_0x52ff5e){return _0x5a002a['status'](_0x29fa7e)['json'](_0x52ff5e);}};}function respondWithFilteredResult(_0x39305f,_0x9c69d9){return function(_0xffd07){if(_0xffd07){var _0x329bd0=typeof _0x9c69d9[_0xb556('0x19')]===_0xb556('0x1a')&&typeof _0x9c69d9[_0xb556('0x1b')]===_0xb556('0x1a');var _0xcfaa19=_0xffd07['count'];var _0x475808=_0x329bd0?0x0:_0x9c69d9[_0xb556('0x19')];var _0xb378b2=_0x329bd0?_0xffd07[_0xb556('0x1c')]:_0x9c69d9['offset']+_0x9c69d9[_0xb556('0x1b')];var _0x355b15;if(_0xb378b2>=_0xcfaa19){_0xb378b2=_0xcfaa19;_0x355b15=0xc8;}else{_0x355b15=0xce;}_0x39305f[_0xb556('0x1d')](_0x355b15);return _0x39305f[_0xb556('0x1e')]('Content-Range',_0x475808+'-'+_0xb378b2+'/'+_0xcfaa19)[_0xb556('0x1f')](_0xffd07);}return null;};}function patchUpdates(_0x3f1f30){return function(_0xa840e7){try{jsonpatch[_0xb556('0x20')](_0xa840e7,_0x3f1f30,!![]);}catch(_0x49d0b5){return BPromise[_0xb556('0x21')](_0x49d0b5);}return _0xa840e7[_0xb556('0x22')]();};}function saveUpdates(_0x21a3b6,_0x126af6){return function(_0x420ddb){if(_0x420ddb){return _0x420ddb[_0xb556('0x23')](_0x21a3b6)[_0xb556('0x24')](function(_0x5f10a5){return _0x5f10a5;});}return null;};}function removeEntity(_0x33797a,_0x3d5ae7){return function(_0x12b195){if(_0x12b195){return _0x12b195[_0xb556('0x25')]()[_0xb556('0x24')](function(){_0x33797a[_0xb556('0x1d')](0xcc)[_0xb556('0x18')]();});}};}function handleEntityNotFound(_0x442264,_0x22abed){return function(_0x184e87){if(!_0x184e87){_0x442264[_0xb556('0x26')](0x194);}return _0x184e87;};}function handleError(_0x3a328c,_0xb89dbe){_0xb89dbe=_0xb89dbe||0x1f4;return function(_0x1962b1){logger['error'](_0x1962b1[_0xb556('0x27')]);if(_0x1962b1['name']){delete _0x1962b1['name'];}_0x3a328c['status'](_0xb89dbe)[_0xb556('0x28')](_0x1962b1);};}exports[_0xb556('0x29')]=function(_0x27fd7e,_0x58180c){var _0x19544e={'raw':!![],'where':{'id':_0x27fd7e['params']['id']}},_0x3c9a87={};_0x3c9a87['model']=_['keys'](db[_0xb556('0x2a')][_0xb556('0x2b')]);_0x3c9a87['query']=_['keys'](_0x27fd7e[_0xb556('0x2c')]);_0x3c9a87['filters']=_[_0xb556('0x2d')](_0x3c9a87['model'],_0x3c9a87[_0xb556('0x2c')]);_0x19544e['attributes']=_[_0xb556('0x2d')](_0x3c9a87[_0xb556('0x2e')],qs['fields'](_0x27fd7e['query'][_0xb556('0x2f')]));_0x19544e[_0xb556('0x30')]=_0x19544e[_0xb556('0x30')]['length']?_0x19544e[_0xb556('0x30')]:_0x3c9a87[_0xb556('0x2e')];if(_0x27fd7e[_0xb556('0x2c')][_0xb556('0x31')]){_0x19544e['include']=[{'all':!![]}];}_0x19544e=_[_0xb556('0x32')]({},_0x19544e,_0x27fd7e[_0xb556('0x33')]);return db['ChatProactiveAction']['find'](_0x19544e)[_0xb556('0x24')](handleEntityNotFound(_0x58180c,null))[_0xb556('0x24')](respondWithResult(_0x58180c,null))[_0xb556('0x34')](handleError(_0x58180c,null));};exports['create']=function(_0x272ffe,_0x2af3fa){return db['ChatProactiveAction'][_0xb556('0x35')](_0x272ffe[_0xb556('0x36')],{})[_0xb556('0x24')](respondWithResult(_0x2af3fa,0xc9))['catch'](handleError(_0x2af3fa,null));};exports['update']=function(_0x34273c,_0x2db02e){if(_0x34273c[_0xb556('0x36')]['id']){delete _0x34273c['body']['id'];}return db[_0xb556('0x2a')][_0xb556('0x37')]({'where':{'id':_0x34273c['params']['id']}})['then'](handleEntityNotFound(_0x2db02e,null))[_0xb556('0x24')](saveUpdates(_0x34273c[_0xb556('0x36')],null))['then'](respondWithResult(_0x2db02e,null))['catch'](handleError(_0x2db02e,null));};exports[_0xb556('0x25')]=function(_0x13d1d5,_0x38c26d){return db[_0xb556('0x2a')]['find']({'where':{'id':_0x13d1d5[_0xb556('0x38')]['id']}})['then'](handleEntityNotFound(_0x38c26d,null))['then'](removeEntity(_0x38c26d,null))[_0xb556('0x34')](handleError(_0x38c26d,null));};
\ No newline at end of file
index 1f36a16..020ed91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81cf=['bluebird','request-promise','rimraf','../../config/environment','./chatProactiveAction.attributes','define','ChatProactiveAction','lodash','util','../../config/logger','moment'];(function(_0x47bc58,_0x1e1998){var _0x4a0860=function(_0x2a5b23){while(--_0x2a5b23){_0x47bc58['push'](_0x47bc58['shift']());}};_0x4a0860(++_0x1e1998);}(_0x81cf,0x1b4));var _0xf81c=function(_0x47c584,_0x105e9c){_0x47c584=_0x47c584-0x0;var _0x1f4b1d=_0x81cf[_0x47c584];return _0x1f4b1d;};'use strict';var _=require(_0xf81c('0x0'));var util=require(_0xf81c('0x1'));var logger=require(_0xf81c('0x2'))('api');var moment=require(_0xf81c('0x3'));var BPromise=require(_0xf81c('0x4'));var rp=require(_0xf81c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf81c('0x6'));var config=require(_0xf81c('0x7'));var attributes=require(_0xf81c('0x8'));module['exports']=function(_0x37be1e,_0x34c2a9){return _0x37be1e[_0xf81c('0x9')](_0xf81c('0xa'),attributes,{'tableName':'chat_proactive_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf4a6=['ChatProactiveAction','lodash','../../config/logger','bluebird','path','rimraf','../../config/environment','./chatProactiveAction.attributes','exports','define'];(function(_0x1876b2,_0x5d0225){var _0x9fb1e0=function(_0x29b099){while(--_0x29b099){_0x1876b2['push'](_0x1876b2['shift']());}};_0x9fb1e0(++_0x5d0225);}(_0xf4a6,0x141));var _0x6f4a=function(_0x2a1b48,_0x18bbb4){_0x2a1b48=_0x2a1b48-0x0;var _0x425ef7=_0xf4a6[_0x2a1b48];return _0x425ef7;};'use strict';var _=require(_0x6f4a('0x0'));var util=require('util');var logger=require(_0x6f4a('0x1'))('api');var moment=require('moment');var BPromise=require(_0x6f4a('0x2'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6f4a('0x3'));var rimraf=require(_0x6f4a('0x4'));var config=require(_0x6f4a('0x5'));var attributes=require(_0x6f4a('0x6'));module[_0x6f4a('0x7')]=function(_0x5c5ce8,_0x5c5d8c){return _0x5c5ce8[_0x6f4a('0x8')](_0x6f4a('0x9'),attributes,{'tableName':'chat_proactive_actions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7eb2bd6..c9e5dff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e3f=['../../config/environment','jayson/promise','request','then','info','debug','request\x20sent','stringify','error','ChatProactiveAction,\x20%s,\x20%s','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x9e3f,0x1f0));var _0xf9e3=function(_0x5c1a6b,_0x3f69d9){_0x5c1a6b=_0x5c1a6b-0x0;var _0x33a54a=_0x9e3f[_0x5c1a6b];return _0x33a54a;};'use strict';var _=require(_0xf9e3('0x0'));var util=require('util');var moment=require(_0xf9e3('0x1'));var BPromise=require(_0xf9e3('0x2'));var rs=require(_0xf9e3('0x3'));var fs=require('fs');var Redis=require(_0xf9e3('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf9e3('0x5'));var logger=require(_0xf9e3('0x6'))(_0xf9e3('0x7'));var config=require(_0xf9e3('0x8'));var jayson=require(_0xf9e3('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2bcb44,_0x33718a,_0x1e7ef1){return new BPromise(function(_0x30073f,_0x58d2ba){return client[_0xf9e3('0xa')](_0x2bcb44,_0x1e7ef1)[_0xf9e3('0xb')](function(_0x3f7ccd){logger[_0xf9e3('0xc')]('ChatProactiveAction,\x20%s,\x20%s',_0x33718a,'request\x20sent');logger[_0xf9e3('0xd')]('ChatProactiveAction,\x20%s,\x20%s,\x20%s',_0x33718a,_0xf9e3('0xe'),JSON[_0xf9e3('0xf')](_0x3f7ccd));if(_0x3f7ccd[_0xf9e3('0x10')]){if(_0x3f7ccd[_0xf9e3('0x10')]['code']===0x1f4){logger[_0xf9e3('0x10')](_0xf9e3('0x11'),_0x33718a,_0x3f7ccd[_0xf9e3('0x10')]['message']);return _0x58d2ba(_0x3f7ccd[_0xf9e3('0x10')]['message']);}logger[_0xf9e3('0x10')]('ChatProactiveAction,\x20%s,\x20%s',_0x33718a,_0x3f7ccd['error']['message']);return _0x30073f(_0x3f7ccd[_0xf9e3('0x10')][_0xf9e3('0x12')]);}else{logger[_0xf9e3('0xc')](_0xf9e3('0x11'),_0x33718a,_0xf9e3('0xe'));_0x30073f(_0x3f7ccd[_0xf9e3('0x13')][_0xf9e3('0x12')]);}})[_0xf9e3('0x14')](function(_0xceb067){logger[_0xf9e3('0x10')](_0xf9e3('0x11'),_0x33718a,_0xceb067);_0x58d2ba(_0xceb067);});});}
\ No newline at end of file
+var _0xd026=['stringify','error','code','message','catch','lodash','util','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','info','ChatProactiveAction,\x20%s,\x20%s','request\x20sent','debug','ChatProactiveAction,\x20%s,\x20%s,\x20%s'];(function(_0x285d17,_0x39fa59){var _0x4f9e3b=function(_0x5a0937){while(--_0x5a0937){_0x285d17['push'](_0x285d17['shift']());}};_0x4f9e3b(++_0x39fa59);}(_0xd026,0x17f));var _0x6d02=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xd026[_0x2bf141];return _0x48277b;};'use strict';var _=require(_0x6d02('0x0'));var util=require(_0x6d02('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x6d02('0x2'));var fs=require('fs');var Redis=require(_0x6d02('0x3'));var db=require(_0x6d02('0x4'))['db'];var utils=require(_0x6d02('0x5'));var logger=require('../../config/logger')(_0x6d02('0x6'));var config=require(_0x6d02('0x7'));var jayson=require(_0x6d02('0x8'));var client=jayson[_0x6d02('0x9')][_0x6d02('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x25cce9,_0x1302b4,_0x2d997f){return new BPromise(function(_0x4d37dc,_0x1c41e9){return client['request'](_0x25cce9,_0x2d997f)['then'](function(_0x448a11){logger[_0x6d02('0xb')](_0x6d02('0xc'),_0x1302b4,_0x6d02('0xd'));logger[_0x6d02('0xe')](_0x6d02('0xf'),_0x1302b4,_0x6d02('0xd'),JSON[_0x6d02('0x10')](_0x448a11));if(_0x448a11[_0x6d02('0x11')]){if(_0x448a11[_0x6d02('0x11')][_0x6d02('0x12')]===0x1f4){logger[_0x6d02('0x11')](_0x6d02('0xc'),_0x1302b4,_0x448a11[_0x6d02('0x11')][_0x6d02('0x13')]);return _0x1c41e9(_0x448a11['error'][_0x6d02('0x13')]);}logger[_0x6d02('0x11')](_0x6d02('0xc'),_0x1302b4,_0x448a11[_0x6d02('0x11')]['message']);return _0x4d37dc(_0x448a11['error'][_0x6d02('0x13')]);}else{logger[_0x6d02('0xb')](_0x6d02('0xc'),_0x1302b4,_0x6d02('0xd'));_0x4d37dc(_0x448a11['result'][_0x6d02('0x13')]);}})[_0x6d02('0x14')](function(_0x18afe7){logger[_0x6d02('0x11')](_0x6d02('0xc'),_0x1302b4,_0x18afe7);_0x1c41e9(_0x18afe7);});});}
\ No newline at end of file
index 054b8c7..7c56044 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4819=['post','isAuthenticated','create','put','update','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatProactiveAction.controller','/:id'];(function(_0x25743c,_0x449eee){var _0x8b795d=function(_0x16e3d0){while(--_0x16e3d0){_0x25743c['push'](_0x25743c['shift']());}};_0x8b795d(++_0x449eee);}(_0x4819,0xcd));var _0x9481=function(_0x22aabe,_0x1667d4){_0x22aabe=_0x22aabe-0x0;var _0x7ae05=_0x4819[_0x22aabe];return _0x7ae05;};'use strict';var multer=require('multer');var util=require(_0x9481('0x0'));var path=require(_0x9481('0x1'));var timeout=require(_0x9481('0x2'));var express=require(_0x9481('0x3'));var router=express[_0x9481('0x4')]();var fs_extra=require(_0x9481('0x5'));var auth=require(_0x9481('0x6'));var interaction=require(_0x9481('0x7'));var config=require(_0x9481('0x8'));var controller=require(_0x9481('0x9'));router['get'](_0x9481('0xa'),auth['isAuthenticated'](),controller['show']);router[_0x9481('0xb')]('/',auth[_0x9481('0xc')](),controller[_0x9481('0xd')]);router[_0x9481('0xe')](_0x9481('0xa'),auth['isAuthenticated'](),controller[_0x9481('0xf')]);router['delete'](_0x9481('0xa'),auth['isAuthenticated'](),controller[_0x9481('0x10')]);module[_0x9481('0x11')]=router;
\ No newline at end of file
+var _0x46ed=['multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./chatProactiveAction.controller','get','/:id','isAuthenticated','show','post','create','put','delete','destroy','exports'];(function(_0x480f34,_0x2f37df){var _0x245d27=function(_0x5e5b9e){while(--_0x5e5b9e){_0x480f34['push'](_0x480f34['shift']());}};_0x245d27(++_0x2f37df);}(_0x46ed,0x168));var _0xd46e=function(_0x46698a,_0x8de1e4){_0x46698a=_0x46698a-0x0;var _0x356db0=_0x46ed[_0x46698a];return _0x356db0;};'use strict';var multer=require(_0xd46e('0x0'));var util=require(_0xd46e('0x1'));var path=require('path');var timeout=require(_0xd46e('0x2'));var express=require(_0xd46e('0x3'));var router=express[_0xd46e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xd46e('0x5'));var interaction=require(_0xd46e('0x6'));var config=require('../../config/environment');var controller=require(_0xd46e('0x7'));router[_0xd46e('0x8')](_0xd46e('0x9'),auth[_0xd46e('0xa')](),controller[_0xd46e('0xb')]);router[_0xd46e('0xc')]('/',auth[_0xd46e('0xa')](),controller[_0xd46e('0xd')]);router[_0xd46e('0xe')](_0xd46e('0x9'),auth[_0xd46e('0xa')](),controller['update']);router[_0xd46e('0xf')](_0xd46e('0x9'),auth['isAuthenticated'](),controller[_0xd46e('0x10')]);module[_0xd46e('0x11')]=router;
\ No newline at end of file
index 7d96d19..e84da47 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc13b=['beepall','roundrobin','exports','STRING','ENUM','rrmemory'];(function(_0x59ab86,_0x5a5765){var _0x26ac1d=function(_0x5aa5d9){while(--_0x5aa5d9){_0x59ab86['push'](_0x59ab86['shift']());}};_0x26ac1d(++_0x5a5765);}(_0xc13b,0xe0));var _0xbc13=function(_0x55f8b4,_0x43f30d){_0x55f8b4=_0x55f8b4-0x0;var _0x2475f9=_0xc13b[_0x55f8b4];return _0x2475f9;};'use strict';var Sequelize=require('sequelize');module[_0xbc13('0x0')]={'name':{'type':Sequelize[_0xbc13('0x1')],'unique':'name','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[_0xbc13('0x2')](_0xbc13('0x3'),_0xbc13('0x4'),_0xbc13('0x5'))}};
\ No newline at end of file
+var _0x97dc=['name','ENUM','rrmemory','beepall','roundrobin','sequelize','exports','STRING'];(function(_0x1b82e2,_0x224d33){var _0x33c4b9=function(_0x20646a){while(--_0x20646a){_0x1b82e2['push'](_0x1b82e2['shift']());}};_0x33c4b9(++_0x224d33);}(_0x97dc,0xcd));var _0xc97d=function(_0x4e2d80,_0x3db6ae){_0x4e2d80=_0x4e2d80-0x0;var _0x3b5bb3=_0x97dc[_0x4e2d80];return _0x3b5bb3;};'use strict';var Sequelize=require(_0xc97d('0x0'));module[_0xc97d('0x1')]={'name':{'type':Sequelize[_0xc97d('0x2')],'unique':_0xc97d('0x3'),'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[_0xc97d('0x4')](_0xc97d('0x5'),_0xc97d('0x6'),_0xc97d('0x7'))}};
\ No newline at end of file
index 424743e..6b4a584 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf97a=['where','merge','VIRTUAL','name','options','includeAll','rows','params','fields','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','describe','getMembers','findOne','hasOwnProperty','sort','UserChatQueue','findAll','findAndCountAll','agent','chatPause','updatedAt','SIP','createdAt','getTeams','Team','ids','User','Agents','online','voicePause','interface','sequelize','transaction','addTeams','each','findOrCreate','emit','userChatQueue:save','removeTeams','select','tq.TeamId','team_has_chat_queues','join','user_has_teams','ChatQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','compact','value','isEmpty','forEach','userChatQueue:remove','addAgents','omit','removeAgents','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','redis','socket.io-emitter','./chatQueue.socket','register','jayson/promise','client','then','info','ChatQueue,\x20%s,\x20%s','request\x20sent','ChatQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','destroy','get','ChatQueues','UserProfileResource','stack','send','index','map','ChatQueue','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','length','nolimit','order','pick','filter'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0xf97a,0xdc));var _0xaf97=function(_0x466ea7,_0x22db06){_0x466ea7=_0x466ea7-0x0;var _0xa2f4ac=_0xf97a[_0x466ea7];return _0xa2f4ac;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xaf97('0x0'));var zipdir=require(_0xaf97('0x1'));var jsonpatch=require(_0xaf97('0x2'));var rp=require(_0xaf97('0x3'));var moment=require(_0xaf97('0x4'));var BPromise=require(_0xaf97('0x5'));var Mustache=require(_0xaf97('0x6'));var util=require(_0xaf97('0x7'));var path=require(_0xaf97('0x8'));var sox=require(_0xaf97('0x9'));var csv=require(_0xaf97('0xa'));var ejs=require(_0xaf97('0xb'));var fs=require('fs');var fs_extra=require(_0xaf97('0xc'));var _=require('lodash');var squel=require(_0xaf97('0xd'));var crypto=require(_0xaf97('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xaf97('0xf'));var toCsv=require(_0xaf97('0xa'));var querystring=require(_0xaf97('0x10'));var Papa=require(_0xaf97('0x11'));var Redis=require(_0xaf97('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xaf97('0x13'));var as=require(_0xaf97('0x14'));var hardwareService=require(_0xaf97('0x15'));var logger=require('../../config/logger')(_0xaf97('0x16'));var utils=require('../../config/utils');var config=require(_0xaf97('0x17'));var licenseUtil=require(_0xaf97('0x18'));var db=require('../../mysqldb')['db'];config[_0xaf97('0x19')]=_['defaults'](config[_0xaf97('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xaf97('0x1a'))(new Redis(config[_0xaf97('0x19')]));require(_0xaf97('0x1b'))[_0xaf97('0x1c')](socket);var jayson=require(_0xaf97('0x1d'));var client=jayson[_0xaf97('0x1e')]['http']({'port':0x232a});function respondWithRpcPromise(_0x92a556,_0xb84d2c,_0x3f1a20,_0x2c0318){return new BPromise(function(_0x3fd2f8,_0xef505){var _0xcf77d7=_0x2c0318||client;return _0xcf77d7['request'](_0x92a556,_0x3f1a20)[_0xaf97('0x1f')](function(_0x28b44c){logger[_0xaf97('0x20')](_0xaf97('0x21'),_0xb84d2c,_0xaf97('0x22'));logger['debug'](_0xaf97('0x23'),_0xb84d2c,_0xaf97('0x22'),JSON['stringify'](_0x28b44c));if(_0x28b44c[_0xaf97('0x24')]){if(_0x28b44c[_0xaf97('0x24')][_0xaf97('0x25')]===0x1f4){logger[_0xaf97('0x24')](_0xaf97('0x21'),_0xb84d2c,_0x28b44c['error'][_0xaf97('0x26')]);return _0xef505(_0x28b44c[_0xaf97('0x24')]['message']);}logger[_0xaf97('0x24')](_0xaf97('0x21'),_0xb84d2c,_0x28b44c[_0xaf97('0x24')]['message']);return _0x3fd2f8(_0x28b44c[_0xaf97('0x24')][_0xaf97('0x26')]);}else{logger[_0xaf97('0x20')](_0xaf97('0x21'),_0xb84d2c,_0xaf97('0x22'));_0x3fd2f8(_0x28b44c[_0xaf97('0x27')]['message']);}})[_0xaf97('0x28')](function(_0x863e6e){logger['error']('ChatQueue,\x20%s,\x20%s',_0xb84d2c,_0x863e6e);_0xef505(_0x863e6e);});});}function respondWithStatusCode(_0x498c04,_0x3a3fd4){_0x3a3fd4=_0x3a3fd4||0xcc;return function(_0x305b8c){if(_0x305b8c){return _0x498c04[_0xaf97('0x29')](_0x3a3fd4);}return _0x498c04[_0xaf97('0x2a')](_0x3a3fd4)[_0xaf97('0x2b')]();};}function respondWithResult(_0x5044dc,_0x120e0f){_0x120e0f=_0x120e0f||0xc8;return function(_0x52b3bd){if(_0x52b3bd){return _0x5044dc['status'](_0x120e0f)[_0xaf97('0x2c')](_0x52b3bd);}};}function respondWithFilteredResult(_0x58c1ff,_0x2324b1){return function(_0xbcaf45){if(_0xbcaf45){var _0x38ca12=typeof _0x2324b1[_0xaf97('0x2d')]===_0xaf97('0x2e')&&typeof _0x2324b1['limit']==='undefined';var _0x1ad821=_0xbcaf45['count'];var _0x1efe37=_0x38ca12?0x0:_0x2324b1['offset'];var _0x423088=_0x38ca12?_0xbcaf45[_0xaf97('0x2f')]:_0x2324b1[_0xaf97('0x2d')]+_0x2324b1[_0xaf97('0x30')];var _0x24ef16;if(_0x423088>=_0x1ad821){_0x423088=_0x1ad821;_0x24ef16=0xc8;}else{_0x24ef16=0xce;}_0x58c1ff[_0xaf97('0x2a')](_0x24ef16);return _0x58c1ff[_0xaf97('0x31')](_0xaf97('0x32'),_0x1efe37+'-'+_0x423088+'/'+_0x1ad821)[_0xaf97('0x2c')](_0xbcaf45);}return null;};}function patchUpdates(_0x5a1add){return function(_0x218244){try{jsonpatch[_0xaf97('0x33')](_0x218244,_0x5a1add,!![]);}catch(_0x547c5c){return BPromise['reject'](_0x547c5c);}return _0x218244[_0xaf97('0x34')]();};}function saveUpdates(_0xe1c538,_0x4deee9){return function(_0x1cf7ba){if(_0x1cf7ba){return _0x1cf7ba[_0xaf97('0x35')](_0xe1c538)[_0xaf97('0x1f')](function(_0x2affb1){return _0x2affb1;});}return null;};}function removeEntity(_0x5b9d67,_0x9fa3d3){return function(_0x1b45ff){if(_0x1b45ff){return _0x1b45ff[_0xaf97('0x36')]()[_0xaf97('0x1f')](function(){var _0x2cb7ec=_0x1b45ff[_0xaf97('0x37')]({'plain':!![]});var _0x3b978c=_0xaf97('0x38');return db[_0xaf97('0x39')]['destroy']({'where':{'type':_0x3b978c,'resourceId':_0x2cb7ec['id']}})[_0xaf97('0x1f')](function(){return _0x1b45ff;});})[_0xaf97('0x1f')](function(){_0x5b9d67[_0xaf97('0x2a')](0xcc)[_0xaf97('0x2b')]();});}};}function handleEntityNotFound(_0x443a81,_0x2d3bfa){return function(_0x35f1ad){if(!_0x35f1ad){_0x443a81['sendStatus'](0x194);}return _0x35f1ad;};}function handleError(_0xa911ea,_0x13b643){_0x13b643=_0x13b643||0x1f4;return function(_0x39d3e0){logger[_0xaf97('0x24')](_0x39d3e0[_0xaf97('0x3a')]);if(_0x39d3e0['name']){delete _0x39d3e0['name'];}_0xa911ea[_0xaf97('0x2a')](_0x13b643)[_0xaf97('0x3b')](_0x39d3e0);};}exports[_0xaf97('0x3c')]=function(_0x34197c,_0x464939){var _0x2953e7={},_0x5485b4={},_0x292d9a={'count':0x0,'rows':[]};var _0x2ff95b=_[_0xaf97('0x3d')](db[_0xaf97('0x3e')][_0xaf97('0x3f')],function(_0x46da45){return{'name':_0x46da45[_0xaf97('0x40')],'type':_0x46da45[_0xaf97('0x41')][_0xaf97('0x42')]};});_0x5485b4[_0xaf97('0x43')]=_[_0xaf97('0x3d')](_0x2ff95b,'name');_0x5485b4['query']=_[_0xaf97('0x44')](_0x34197c[_0xaf97('0x45')]);_0x5485b4[_0xaf97('0x46')]=_['intersection'](_0x5485b4[_0xaf97('0x43')],_0x5485b4[_0xaf97('0x45')]);_0x2953e7[_0xaf97('0x47')]=_[_0xaf97('0x48')](_0x5485b4[_0xaf97('0x43')],qs['fields'](_0x34197c['query']['fields']));_0x2953e7[_0xaf97('0x47')]=_0x2953e7['attributes'][_0xaf97('0x49')]?_0x2953e7[_0xaf97('0x47')]:_0x5485b4['model'];if(!_0x34197c[_0xaf97('0x45')]['hasOwnProperty'](_0xaf97('0x4a'))){_0x2953e7['limit']=qs['limit'](_0x34197c[_0xaf97('0x45')][_0xaf97('0x30')]);_0x2953e7[_0xaf97('0x2d')]=qs['offset'](_0x34197c[_0xaf97('0x45')][_0xaf97('0x2d')]);}_0x2953e7[_0xaf97('0x4b')]=qs['sort'](_0x34197c[_0xaf97('0x45')]['sort']);_0x2953e7['where']=qs[_0xaf97('0x46')](_[_0xaf97('0x4c')](_0x34197c[_0xaf97('0x45')],_0x5485b4[_0xaf97('0x46')]),_0x2ff95b);if(_0x34197c['query'][_0xaf97('0x4d')]){_0x2953e7[_0xaf97('0x4e')]=_[_0xaf97('0x4f')](_0x2953e7[_0xaf97('0x4e')],{'$or':_[_0xaf97('0x3d')](_0x2ff95b,function(_0x3cdb9d){if(_0x3cdb9d[_0xaf97('0x41')]!==_0xaf97('0x50')){var _0xf12b4a={};_0xf12b4a[_0x3cdb9d[_0xaf97('0x51')]]={'$like':'%'+_0x34197c[_0xaf97('0x45')][_0xaf97('0x4d')]+'%'};return _0xf12b4a;}})});}_0x2953e7=_[_0xaf97('0x4f')]({},_0x2953e7,_0x34197c[_0xaf97('0x52')]);var _0x2d1390={'where':_0x2953e7[_0xaf97('0x4e')]};return db[_0xaf97('0x3e')][_0xaf97('0x2f')](_0x2d1390)[_0xaf97('0x1f')](function(_0x5f1cb1){_0x292d9a[_0xaf97('0x2f')]=_0x5f1cb1;if(_0x34197c[_0xaf97('0x45')][_0xaf97('0x53')]){_0x2953e7['include']=[{'all':!![]}];}return db[_0xaf97('0x3e')]['findAll'](_0x2953e7);})['then'](function(_0x30adeb){_0x292d9a[_0xaf97('0x54')]=_0x30adeb;return _0x292d9a;})[_0xaf97('0x1f')](respondWithFilteredResult(_0x464939,_0x2953e7))[_0xaf97('0x28')](handleError(_0x464939,null));};exports['show']=function(_0x331533,_0x2f56ef){var _0x4cdfef={'raw':!![],'where':{'id':_0x331533[_0xaf97('0x55')]['id']}},_0x24d13f={};_0x24d13f[_0xaf97('0x43')]=_[_0xaf97('0x44')](db['ChatQueue'][_0xaf97('0x3f')]);_0x24d13f[_0xaf97('0x45')]=_[_0xaf97('0x44')](_0x331533[_0xaf97('0x45')]);_0x24d13f[_0xaf97('0x46')]=_[_0xaf97('0x48')](_0x24d13f[_0xaf97('0x43')],_0x24d13f[_0xaf97('0x45')]);_0x4cdfef['attributes']=_[_0xaf97('0x48')](_0x24d13f['model'],qs[_0xaf97('0x56')](_0x331533[_0xaf97('0x45')][_0xaf97('0x56')]));_0x4cdfef[_0xaf97('0x47')]=_0x4cdfef[_0xaf97('0x47')][_0xaf97('0x49')]?_0x4cdfef[_0xaf97('0x47')]:_0x24d13f[_0xaf97('0x43')];if(_0x331533[_0xaf97('0x45')]['includeAll']){_0x4cdfef['include']=[{'all':!![]}];}_0x4cdfef=_[_0xaf97('0x4f')]({},_0x4cdfef,_0x331533[_0xaf97('0x52')]);return db['ChatQueue'][_0xaf97('0x57')](_0x4cdfef)[_0xaf97('0x1f')](handleEntityNotFound(_0x2f56ef,null))['then'](respondWithResult(_0x2f56ef,null))['catch'](handleError(_0x2f56ef,null));};exports['create']=function(_0x27308f,_0x5622dc){return db['ChatQueue'][_0xaf97('0x58')](_0x27308f[_0xaf97('0x59')],{})['then'](function(_0x3cdef9){var _0x20dae1=_0x27308f['user'][_0xaf97('0x37')]({'plain':!![]});if(!_0x20dae1)throw new Error(_0xaf97('0x5a'));if(_0x20dae1['role']===_0xaf97('0x5b')){var _0x24d0db=_0x3cdef9['get']({'plain':!![]});var _0x30ead2='ChatQueues';return db[_0xaf97('0x5c')][_0xaf97('0x57')]({'where':{'name':_0x30ead2,'userProfileId':_0x20dae1[_0xaf97('0x5d')]},'raw':!![]})['then'](function(_0x3bc7f8){if(_0x3bc7f8&&_0x3bc7f8['autoAssociation']===0x0){return db[_0xaf97('0x39')][_0xaf97('0x58')]({'name':_0x24d0db['name'],'resourceId':_0x24d0db['id'],'type':_0x3bc7f8[_0xaf97('0x51')],'sectionId':_0x3bc7f8['id']},{})[_0xaf97('0x1f')](function(){return _0x3cdef9;});}else{return _0x3cdef9;}})['catch'](function(_0x44a31c){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x44a31c);throw _0x44a31c;});}return _0x3cdef9;})[_0xaf97('0x1f')](respondWithResult(_0x5622dc,0xc9))[_0xaf97('0x28')](handleError(_0x5622dc,null));};exports[_0xaf97('0x35')]=function(_0x5c2c8f,_0xa674d1){if(_0x5c2c8f[_0xaf97('0x59')]['id']){delete _0x5c2c8f['body']['id'];}return db[_0xaf97('0x3e')][_0xaf97('0x57')]({'where':{'id':_0x5c2c8f[_0xaf97('0x55')]['id']}})[_0xaf97('0x1f')](handleEntityNotFound(_0xa674d1,null))['then'](saveUpdates(_0x5c2c8f['body'],null))[_0xaf97('0x1f')](respondWithResult(_0xa674d1,null))[_0xaf97('0x28')](handleError(_0xa674d1,null));};exports['destroy']=function(_0x3f25c5,_0x4cc80b){return db[_0xaf97('0x3e')][_0xaf97('0x57')]({'where':{'id':_0x3f25c5[_0xaf97('0x55')]['id']}})[_0xaf97('0x1f')](handleEntityNotFound(_0x4cc80b,null))[_0xaf97('0x1f')](removeEntity(_0x4cc80b,null))[_0xaf97('0x28')](handleError(_0x4cc80b,null));};exports['describe']=function(_0x55143d,_0x22d29d){return db[_0xaf97('0x3e')][_0xaf97('0x5e')]()[_0xaf97('0x1f')](respondWithResult(_0x22d29d,null))[_0xaf97('0x28')](handleError(_0x22d29d,null));};exports[_0xaf97('0x5f')]=function(_0x22d945,_0x2b8854,_0x515285){var _0x408c4a={'raw':!![],'where':{}},_0x2376ce={},_0x3ce0df;return db[_0xaf97('0x3e')][_0xaf97('0x60')]({'where':{'id':_0x22d945[_0xaf97('0x55')]['id']}})[_0xaf97('0x1f')](handleEntityNotFound(_0x2b8854,null))[_0xaf97('0x1f')](function(_0x34ed96){if(_0x34ed96){_0x3ce0df=_0x34ed96['get']({'plain':!![]});_0x2376ce[_0xaf97('0x43')]=_[_0xaf97('0x44')](db['UserChatQueue'][_0xaf97('0x3f')]);_0x2376ce[_0xaf97('0x45')]=_[_0xaf97('0x44')](_0x22d945[_0xaf97('0x45')]);_0x2376ce['filters']=_[_0xaf97('0x48')](_0x2376ce[_0xaf97('0x43')],_0x2376ce[_0xaf97('0x45')]);_0x408c4a[_0xaf97('0x47')]=_[_0xaf97('0x48')](_0x2376ce[_0xaf97('0x43')],qs[_0xaf97('0x56')](_0x22d945['query']['fields']));_0x408c4a[_0xaf97('0x47')]=_0x408c4a[_0xaf97('0x47')][_0xaf97('0x49')]?_0x408c4a[_0xaf97('0x47')]:_0x2376ce[_0xaf97('0x43')];if(!_0x22d945[_0xaf97('0x45')][_0xaf97('0x61')]('nolimit')){_0x408c4a[_0xaf97('0x30')]=qs[_0xaf97('0x30')](_0x22d945[_0xaf97('0x45')][_0xaf97('0x30')]);_0x408c4a[_0xaf97('0x2d')]=qs[_0xaf97('0x2d')](_0x22d945[_0xaf97('0x45')][_0xaf97('0x2d')]);}_0x408c4a['order']=qs[_0xaf97('0x62')](_0x22d945[_0xaf97('0x45')][_0xaf97('0x62')]);_0x408c4a[_0xaf97('0x4e')]=qs[_0xaf97('0x46')](_[_0xaf97('0x4c')](_0x22d945[_0xaf97('0x45')],_0x2376ce[_0xaf97('0x46')]));_0x408c4a[_0xaf97('0x4e')]['ChatQueueId']=_0x34ed96['id'];if(_0x22d945[_0xaf97('0x45')]['filter']){_0x408c4a[_0xaf97('0x4e')]=_[_0xaf97('0x4f')](_0x408c4a[_0xaf97('0x4e')],{'$or':_[_0xaf97('0x3d')](_0x408c4a[_0xaf97('0x47')],function(_0xf8d359){var _0x3fb136={};_0x3fb136[_0xf8d359]={'$like':'%'+_0x22d945[_0xaf97('0x45')][_0xaf97('0x4d')]+'%'};return _0x3fb136;})});}_0x408c4a=_[_0xaf97('0x4f')]({},_0x408c4a,_0x22d945[_0xaf97('0x52')]);return db[_0xaf97('0x63')][_0xaf97('0x64')](_0x408c4a);}})['then'](function(_0x3115c3){if(_0x3115c3){return db['User'][_0xaf97('0x65')]({'where':{'id':_[_0xaf97('0x3d')](_0x3115c3,'UserId'),'role':_0xaf97('0x66')},'attributes':['id',_0xaf97('0x51'),_0xaf97('0x67'),_0xaf97('0x68'),'createdAt']});}})[_0xaf97('0x1f')](function(_0x324af0){if(_0x324af0){return{'count':_0x324af0['count'],'rows':_['map'](_0x324af0['rows'],function(_0x240e6b){return{'membername':_0x240e6b[_0xaf97('0x51')],'UserId':_0x240e6b['id'],'queue_name':_0x3ce0df[_0xaf97('0x51')],'ChatQueueId':_0x3ce0df['id'],'interface':util['format']('%s/%s',_0xaf97('0x69'),_0x240e6b[_0xaf97('0x51')]),'penalty':0x0,'paused':_0x240e6b['chatPause'],'createdAt':_0x240e6b[_0xaf97('0x6a')],'updatedAt':_0x240e6b[_0xaf97('0x68')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xaf97('0x1f')](respondWithFilteredResult(_0x2b8854,_0x408c4a))[_0xaf97('0x28')](handleError(_0x2b8854,null));};exports[_0xaf97('0x6b')]=function(_0x1db725,_0x4b63be,_0x5865ef){var _0x44ad97={};var _0x9dfac7={};var _0xae95e5;var _0x23be3e;return db[_0xaf97('0x3e')]['findOne']({'where':{'id':_0x1db725[_0xaf97('0x55')]['id']}})[_0xaf97('0x1f')](handleEntityNotFound(_0x4b63be,null))[_0xaf97('0x1f')](function(_0x3ae2e2){if(_0x3ae2e2){_0xae95e5=_0x3ae2e2;_0x9dfac7[_0xaf97('0x43')]=_[_0xaf97('0x44')](db[_0xaf97('0x6c')]['rawAttributes']);_0x9dfac7[_0xaf97('0x45')]=_[_0xaf97('0x44')](_0x1db725['query']);_0x9dfac7['filters']=_[_0xaf97('0x48')](_0x9dfac7['model'],_0x9dfac7[_0xaf97('0x45')]);_0x44ad97[_0xaf97('0x47')]=_['intersection'](_0x9dfac7[_0xaf97('0x43')],qs['fields'](_0x1db725['query'][_0xaf97('0x56')]));_0x44ad97[_0xaf97('0x47')]=_0x44ad97['attributes'][_0xaf97('0x49')]?_0x44ad97['attributes']:_0x9dfac7[_0xaf97('0x43')];_0x44ad97['order']=qs[_0xaf97('0x62')](_0x1db725['query'][_0xaf97('0x62')]);_0x44ad97[_0xaf97('0x4e')]=qs[_0xaf97('0x46')](_[_0xaf97('0x4c')](_0x1db725['query'],_0x9dfac7['filters']));if(_0x1db725['query'][_0xaf97('0x4d')]){_0x44ad97[_0xaf97('0x4e')]=_[_0xaf97('0x4f')](_0x44ad97[_0xaf97('0x4e')],{'$or':_[_0xaf97('0x3d')](_0x44ad97[_0xaf97('0x47')],function(_0x44214a){var _0xddcf96={};_0xddcf96[_0x44214a]={'$like':'%'+_0x1db725[_0xaf97('0x45')][_0xaf97('0x4d')]+'%'};return _0xddcf96;})});}_0x44ad97=_[_0xaf97('0x4f')]({},_0x44ad97,_0x1db725['options']);return _0xae95e5[_0xaf97('0x6b')](_0x44ad97);}})['then'](function(_0x16d190){if(_0x16d190){_0x23be3e=_0x16d190[_0xaf97('0x49')];if(!_0x1db725[_0xaf97('0x45')][_0xaf97('0x61')](_0xaf97('0x4a'))){_0x44ad97[_0xaf97('0x30')]=qs[_0xaf97('0x30')](_0x1db725[_0xaf97('0x45')][_0xaf97('0x30')]);_0x44ad97[_0xaf97('0x2d')]=qs[_0xaf97('0x2d')](_0x1db725['query'][_0xaf97('0x2d')]);}return _0xae95e5[_0xaf97('0x6b')](_0x44ad97);}})[_0xaf97('0x1f')](function(_0x1c8bee){if(_0x1c8bee){return _0x1c8bee?{'count':_0x23be3e,'rows':_0x1c8bee}:null;}})['then'](respondWithResult(_0x4b63be,null))[_0xaf97('0x28')](handleError(_0x4b63be,null));};exports['addTeams']=function(_0x37f1af,_0x1800e7,_0x455844){var _0x35ff3c=_0x37f1af[_0xaf97('0x59')][_0xaf97('0x6d')];return db[_0xaf97('0x6c')][_0xaf97('0x64')]({'where':{'id':_0x35ff3c},'attributes':['id'],'include':[{'model':db[_0xaf97('0x6e')],'as':_0xaf97('0x6f'),'attributes':['id',_0xaf97('0x51'),_0xaf97('0x70'),_0xaf97('0x71'),_0xaf97('0x72')],'raw':!![]}]})[_0xaf97('0x1f')](function(_0x50cc0d){if(_0x50cc0d){var _0xb77e6f=_['flatMap'](_0x50cc0d,function(_0x4fa10f){var _0xab4a3b=_0x4fa10f[_0xaf97('0x37')]({'plain':!![]});return _0xab4a3b[_0xaf97('0x6f')];});return db[_0xaf97('0x3e')][_0xaf97('0x57')]({'where':{'id':_0x37f1af[_0xaf97('0x55')]['id']}})['then'](function(_0x18f6bf){return db[_0xaf97('0x73')][_0xaf97('0x74')](function(_0x1f6d00){return _0x18f6bf[_0xaf97('0x75')](_0x35ff3c,{'transaction':_0x1f6d00})['then'](function(){return BPromise[_0xaf97('0x76')](_0xb77e6f,function(_0x4279bd){return db[_0xaf97('0x63')][_0xaf97('0x77')]({'where':{'UserId':_0x4279bd['id'],'ChatQueueId':_0x37f1af[_0xaf97('0x55')]['id']},'transaction':_0x1f6d00});});})[_0xaf97('0x1f')](function(){_0xb77e6f['forEach'](function(_0x4353a8){socket[_0xaf97('0x78')](_0xaf97('0x79'),{'UserId':_0x4353a8['id'],'ChatQueueId':_0x18f6bf['id']});});});});});}})[_0xaf97('0x1f')](respondWithStatusCode(_0x1800e7,null))[_0xaf97('0x28')](handleError(_0x1800e7,null));};exports[_0xaf97('0x7a')]=function(_0x1e8853,_0xc7156d,_0x3a41cc){return db['Team'][_0xaf97('0x64')]({'where':{'id':_0x1e8853['query'][_0xaf97('0x6d')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xaf97('0x6f'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0xc7156d,null))[_0xaf97('0x1f')](function(_0x3c5832){var _0x5679a9=_[_0xaf97('0x3d')](_0x3c5832,'id');var _0x3de3f5=[];var _0x4379ec=[];var _0x3b9320=squel[_0xaf97('0x7b')]();_0x3b9320['field'](_0xaf97('0x7c'))['from'](_0xaf97('0x7d'),'tq')[_0xaf97('0x7e')](_0xaf97('0x7f'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xaf97('0x4e')](_0xaf97('0x80'),_0x1e8853['params']['id']);for(var _0x2da8b4=0x0;_0x2da8b4<_0x3c5832[_0xaf97('0x49')];_0x2da8b4+=0x1){let _0x189b36=_0x3c5832[_0x2da8b4];for(var _0x152ca6=0x0;_0x152ca6<_0x189b36['Agents']['length'];_0x152ca6+=0x1){let _0x1e7dae=_0x189b36[_0xaf97('0x6f')][_0x152ca6];var _0x29350a=_0x3b9320['clone']();_0x29350a[_0xaf97('0x4e')](_0xaf97('0x81'),_0x1e7dae['id']);_0x4379ec[_0xaf97('0x82')](db[_0xaf97('0x73')][_0xaf97('0x45')](_0x29350a[_0xaf97('0x83')](),{'type':db[_0xaf97('0x73')][_0xaf97('0x84')][_0xaf97('0x85')]})[_0xaf97('0x1f')](function(_0x1d1dd5){if(_0x1d1dd5[_0xaf97('0x49')]===0x1){return _0x1e7dae['id'];}else{var _0x40f73d=_[_0xaf97('0x86')](_[_0xaf97('0x3d')](_0x1d1dd5,_0xaf97('0x87')),function(_0x18f88e){return _[_0xaf97('0x88')](_0x5679a9,_0x18f88e);});if(_0x40f73d){return _0x1e7dae['id'];}}}));}}return BPromise[_0xaf97('0x89')](_0x4379ec)['then'](function(_0x4e52e6){_0x3de3f5=_(_0x3de3f5)[_0xaf97('0x8a')](_0x4e52e6)[_0xaf97('0x8b')]()[_0xaf97('0x8c')]();return db['ChatQueue'][_0xaf97('0x57')]({'where':{'id':_0x1e8853[_0xaf97('0x55')]['id']}})['then'](function(_0x5ec425){return db['sequelize'][_0xaf97('0x74')](function(_0x297882){return _0x5ec425[_0xaf97('0x7a')](_0x1e8853[_0xaf97('0x45')][_0xaf97('0x6d')],{'transaction':_0x297882})[_0xaf97('0x1f')](function(){if(!_[_0xaf97('0x8d')](_0x3de3f5)){return _0x5ec425['removeAgents'](_0x3de3f5,{'transaction':_0x297882});}})[_0xaf97('0x1f')](function(){_0x3de3f5[_0xaf97('0x8e')](function(_0x313d7b){socket[_0xaf97('0x78')](_0xaf97('0x8f'),{'UserId':_0x313d7b,'ChatQueueId':_0x5ec425['id']});});});});});});})[_0xaf97('0x1f')](respondWithStatusCode(_0xc7156d,null))[_0xaf97('0x28')](handleError(_0xc7156d,null));};exports['addAgents']=function(_0xa95b9,_0x818512,_0x66ea26){return db[_0xaf97('0x3e')][_0xaf97('0x57')]({'where':{'id':_0xa95b9[_0xaf97('0x55')]['id']}})[_0xaf97('0x1f')](handleEntityNotFound(_0x818512,null))[_0xaf97('0x1f')](function(_0x4b2c9b){if(_0x4b2c9b){return _0x4b2c9b[_0xaf97('0x90')](_0xa95b9[_0xaf97('0x59')][_0xaf97('0x6d')],_[_0xaf97('0x91')](_0xa95b9[_0xaf97('0x59')],[_0xaf97('0x6d'),'id'])||{})['spread'](function(_0x28ac66){for(var _0x4db953=0x0;_0x4db953<_0xa95b9[_0xaf97('0x59')][_0xaf97('0x6d')][_0xaf97('0x49')];_0x4db953+=0x1){socket[_0xaf97('0x78')]('userChatQueue:save',{'UserId':Number(_0xa95b9[_0xaf97('0x59')][_0xaf97('0x6d')][_0x4db953]),'ChatQueueId':Number(_0xa95b9['params']['id'])});}return _0x28ac66;});}})[_0xaf97('0x1f')](respondWithResult(_0x818512,null))['catch'](handleError(_0x818512,null));};exports['removeAgents']=function(_0x59625d,_0x56118d,_0x501dfc){return db[_0xaf97('0x3e')][_0xaf97('0x57')]({'where':{'id':_0x59625d[_0xaf97('0x55')]['id']}})[_0xaf97('0x1f')](handleEntityNotFound(_0x56118d,null))[_0xaf97('0x1f')](function(_0x4da86c){if(_0x4da86c){return _0x4da86c[_0xaf97('0x92')](_0x59625d[_0xaf97('0x45')][_0xaf97('0x6d')])[_0xaf97('0x1f')](function(){if(_[_0xaf97('0x93')](_0x59625d[_0xaf97('0x45')][_0xaf97('0x6d')])){for(var _0x2c6453=0x0;_0x2c6453<_0x59625d[_0xaf97('0x45')]['ids'][_0xaf97('0x49')];_0x2c6453+=0x1){socket[_0xaf97('0x78')]('userChatQueue:remove',{'UserId':Number(_0x59625d[_0xaf97('0x45')][_0xaf97('0x6d')][_0x2c6453]),'ChatQueueId':Number(_0x59625d[_0xaf97('0x55')]['id'])});}}else{socket[_0xaf97('0x78')](_0xaf97('0x8f'),{'UserId':Number(_0x59625d[_0xaf97('0x45')][_0xaf97('0x6d')]),'ChatQueueId':Number(_0x59625d[_0xaf97('0x55')]['id'])});}});}})[_0xaf97('0x1f')](respondWithStatusCode(_0x56118d,null))[_0xaf97('0x28')](handleError(_0x56118d,null));};exports[_0xaf97('0x94')]=function(_0x90f9cb,_0x2d3cd5,_0x2e84b4){var _0x4c2ae8={};var _0x58f528={};var _0x44363a;var _0x29cf07;return db['ChatQueue'][_0xaf97('0x60')]({'where':{'id':_0x90f9cb[_0xaf97('0x55')]['id']}})['then'](handleEntityNotFound(_0x2d3cd5,null))[_0xaf97('0x1f')](function(_0x505245){if(_0x505245){_0x44363a=_0x505245;_0x58f528[_0xaf97('0x43')]=_[_0xaf97('0x44')](db['User']['rawAttributes']);_0x58f528[_0xaf97('0x45')]=_[_0xaf97('0x44')](_0x90f9cb[_0xaf97('0x45')]);_0x58f528[_0xaf97('0x46')]=_[_0xaf97('0x48')](_0x58f528[_0xaf97('0x43')],_0x58f528[_0xaf97('0x45')]);_0x4c2ae8[_0xaf97('0x47')]=_[_0xaf97('0x48')](_0x58f528['model'],qs['fields'](_0x90f9cb[_0xaf97('0x45')][_0xaf97('0x56')]));_0x4c2ae8[_0xaf97('0x47')]=_0x4c2ae8[_0xaf97('0x47')][_0xaf97('0x49')]?_0x4c2ae8['attributes']:_0x58f528[_0xaf97('0x43')];_0x4c2ae8[_0xaf97('0x4b')]=qs[_0xaf97('0x62')](_0x90f9cb['query'][_0xaf97('0x62')]);_0x4c2ae8[_0xaf97('0x4e')]=qs[_0xaf97('0x46')](_[_0xaf97('0x4c')](_0x90f9cb['query'],_0x58f528[_0xaf97('0x46')]));if(_0x90f9cb[_0xaf97('0x45')][_0xaf97('0x4d')]){_0x4c2ae8[_0xaf97('0x4e')]=_[_0xaf97('0x4f')](_0x4c2ae8['where'],{'$or':_[_0xaf97('0x3d')](_0x4c2ae8['attributes'],function(_0x1f1122){var _0x2f4a52={};_0x2f4a52[_0x1f1122]={'$like':'%'+_0x90f9cb['query'][_0xaf97('0x4d')]+'%'};return _0x2f4a52;})});}_0x4c2ae8=_[_0xaf97('0x4f')]({},_0x4c2ae8,_0x90f9cb['options']);return _0x44363a['getAgents'](_0x4c2ae8);}})[_0xaf97('0x1f')](function(_0x6ee1b5){if(_0x6ee1b5){_0x29cf07=_0x6ee1b5[_0xaf97('0x49')];if(!_0x90f9cb[_0xaf97('0x45')][_0xaf97('0x61')]('nolimit')){_0x4c2ae8[_0xaf97('0x30')]=qs[_0xaf97('0x30')](_0x90f9cb['query']['limit']);_0x4c2ae8[_0xaf97('0x2d')]=qs[_0xaf97('0x2d')](_0x90f9cb['query']['offset']);}return _0x44363a[_0xaf97('0x94')](_0x4c2ae8);}})[_0xaf97('0x1f')](function(_0x26fb16){if(_0x26fb16){return _0x26fb16?{'count':_0x29cf07,'rows':_0x26fb16}:null;}})[_0xaf97('0x1f')](respondWithResult(_0x2d3cd5,null))[_0xaf97('0x28')](handleError(_0x2d3cd5,null));};
\ No newline at end of file
+var _0xb149=['../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','defaults','redis','socket.io-emitter','jayson/promise','client','http','request','then','info','ChatQueue,\x20%s,\x20%s,\x20%s','request\x20sent','error','ChatQueue,\x20%s,\x20%s','message','result','catch','end','status','json','undefined','limit','count','offset','set','Content-Range','reject','save','destroy','ChatQueues','UserProfileResource','sendStatus','stack','name','send','index','map','ChatQueue','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','params','find','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','describe','findOne','UserChatQueue','findAndCountAll','UserId','agent','updatedAt','createdAt','rows','format','%s/%s','SIP','chatPause','getTeams','Team','addTeams','User','online','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','emit','userChatQueue:save','removeTeams','ids','Agents','select','field','tq.TeamId','from','team_has_chat_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ChatQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','QueryTypes','SELECT','TeamId','union','compact','isEmpty','userChatQueue:remove','addAgents','removeAgents','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service'];(function(_0x53f37f,_0xfb0b18){var _0x2fe5f8=function(_0x76ef2d){while(--_0x76ef2d){_0x53f37f['push'](_0x53f37f['shift']());}};_0x2fe5f8(++_0xfb0b18);}(_0xb149,0x84));var _0x9b14=function(_0x9e0cb3,_0x9cd497){_0x9e0cb3=_0x9e0cb3-0x0;var _0x5926b7=_0xb149[_0x9e0cb3];return _0x5926b7;};'use strict';var emlformat=require(_0x9b14('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x9b14('0x1'));var jsonpatch=require(_0x9b14('0x2'));var rp=require(_0x9b14('0x3'));var moment=require(_0x9b14('0x4'));var BPromise=require(_0x9b14('0x5'));var Mustache=require(_0x9b14('0x6'));var util=require(_0x9b14('0x7'));var path=require('path');var sox=require(_0x9b14('0x8'));var csv=require(_0x9b14('0x9'));var ejs=require(_0x9b14('0xa'));var fs=require('fs');var fs_extra=require(_0x9b14('0xb'));var _=require(_0x9b14('0xc'));var squel=require(_0x9b14('0xd'));var crypto=require('crypto');var jsforce=require(_0x9b14('0xe'));var deskjs=require(_0x9b14('0xf'));var toCsv=require(_0x9b14('0x9'));var querystring=require(_0x9b14('0x10'));var Papa=require('papaparse');var Redis=require(_0x9b14('0x11'));var authService=require(_0x9b14('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x9b14('0x13'));var hardwareService=require(_0x9b14('0x14'));var logger=require(_0x9b14('0x15'))('api');var utils=require(_0x9b14('0x16'));var config=require(_0x9b14('0x17'));var licenseUtil=require(_0x9b14('0x18'));var db=require('../../mysqldb')['db'];config['redis']=_[_0x9b14('0x19')](config[_0x9b14('0x1a')],{'host':'localhost','port':0x18eb});var socket=require(_0x9b14('0x1b'))(new Redis(config['redis']));require('./chatQueue.socket')['register'](socket);var jayson=require(_0x9b14('0x1c'));var client=jayson[_0x9b14('0x1d')][_0x9b14('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0x1d5c94,_0x3e8d95,_0x44af82,_0xce0cdb){return new BPromise(function(_0x261354,_0x11dc7b){var _0x3bffbd=_0xce0cdb||client;return _0x3bffbd[_0x9b14('0x1f')](_0x1d5c94,_0x44af82)[_0x9b14('0x20')](function(_0x23032d){logger[_0x9b14('0x21')]('ChatQueue,\x20%s,\x20%s',_0x3e8d95,'request\x20sent');logger['debug'](_0x9b14('0x22'),_0x3e8d95,_0x9b14('0x23'),JSON['stringify'](_0x23032d));if(_0x23032d[_0x9b14('0x24')]){if(_0x23032d[_0x9b14('0x24')]['code']===0x1f4){logger[_0x9b14('0x24')](_0x9b14('0x25'),_0x3e8d95,_0x23032d[_0x9b14('0x24')][_0x9b14('0x26')]);return _0x11dc7b(_0x23032d['error'][_0x9b14('0x26')]);}logger[_0x9b14('0x24')](_0x9b14('0x25'),_0x3e8d95,_0x23032d['error'][_0x9b14('0x26')]);return _0x261354(_0x23032d[_0x9b14('0x24')][_0x9b14('0x26')]);}else{logger[_0x9b14('0x21')](_0x9b14('0x25'),_0x3e8d95,_0x9b14('0x23'));_0x261354(_0x23032d[_0x9b14('0x27')][_0x9b14('0x26')]);}})[_0x9b14('0x28')](function(_0x27a400){logger[_0x9b14('0x24')]('ChatQueue,\x20%s,\x20%s',_0x3e8d95,_0x27a400);_0x11dc7b(_0x27a400);});});}function respondWithStatusCode(_0x544f83,_0x136303){_0x136303=_0x136303||0xcc;return function(_0x695dc4){if(_0x695dc4){return _0x544f83['sendStatus'](_0x136303);}return _0x544f83['status'](_0x136303)[_0x9b14('0x29')]();};}function respondWithResult(_0x133ed8,_0x54d9f1){_0x54d9f1=_0x54d9f1||0xc8;return function(_0x387331){if(_0x387331){return _0x133ed8[_0x9b14('0x2a')](_0x54d9f1)[_0x9b14('0x2b')](_0x387331);}};}function respondWithFilteredResult(_0x2b70ca,_0x1d8516){return function(_0x3cee4a){if(_0x3cee4a){var _0x158cdc=typeof _0x1d8516['offset']===_0x9b14('0x2c')&&typeof _0x1d8516[_0x9b14('0x2d')]===_0x9b14('0x2c');var _0x22863a=_0x3cee4a[_0x9b14('0x2e')];var _0x5c7813=_0x158cdc?0x0:_0x1d8516['offset'];var _0x10c6cf=_0x158cdc?_0x3cee4a['count']:_0x1d8516[_0x9b14('0x2f')]+_0x1d8516[_0x9b14('0x2d')];var _0x58b313;if(_0x10c6cf>=_0x22863a){_0x10c6cf=_0x22863a;_0x58b313=0xc8;}else{_0x58b313=0xce;}_0x2b70ca['status'](_0x58b313);return _0x2b70ca[_0x9b14('0x30')](_0x9b14('0x31'),_0x5c7813+'-'+_0x10c6cf+'/'+_0x22863a)[_0x9b14('0x2b')](_0x3cee4a);}return null;};}function patchUpdates(_0x2af097){return function(_0x15b0fe){try{jsonpatch['apply'](_0x15b0fe,_0x2af097,!![]);}catch(_0x427b30){return BPromise[_0x9b14('0x32')](_0x427b30);}return _0x15b0fe[_0x9b14('0x33')]();};}function saveUpdates(_0x55a186,_0x3ae480){return function(_0x3d11c1){if(_0x3d11c1){return _0x3d11c1['update'](_0x55a186)[_0x9b14('0x20')](function(_0x5777ef){return _0x5777ef;});}return null;};}function removeEntity(_0x4531ef,_0x1ec6ec){return function(_0xee5797){if(_0xee5797){return _0xee5797[_0x9b14('0x34')]()[_0x9b14('0x20')](function(){var _0x15bd17=_0xee5797['get']({'plain':!![]});var _0x51ba72=_0x9b14('0x35');return db[_0x9b14('0x36')][_0x9b14('0x34')]({'where':{'type':_0x51ba72,'resourceId':_0x15bd17['id']}})['then'](function(){return _0xee5797;});})[_0x9b14('0x20')](function(){_0x4531ef['status'](0xcc)[_0x9b14('0x29')]();});}};}function handleEntityNotFound(_0x3f8ca2,_0x594bc9){return function(_0x19e92d){if(!_0x19e92d){_0x3f8ca2[_0x9b14('0x37')](0x194);}return _0x19e92d;};}function handleError(_0x2e9db9,_0x4a87b5){_0x4a87b5=_0x4a87b5||0x1f4;return function(_0x1ec551){logger['error'](_0x1ec551[_0x9b14('0x38')]);if(_0x1ec551[_0x9b14('0x39')]){delete _0x1ec551[_0x9b14('0x39')];}_0x2e9db9[_0x9b14('0x2a')](_0x4a87b5)[_0x9b14('0x3a')](_0x1ec551);};}exports[_0x9b14('0x3b')]=function(_0x5a9448,_0x2dcbec){var _0x2eb51f={},_0x5db8f8={},_0x1ca82a={'count':0x0,'rows':[]};var _0x82524f=_[_0x9b14('0x3c')](db[_0x9b14('0x3d')][_0x9b14('0x3e')],function(_0x3ca72c){return{'name':_0x3ca72c[_0x9b14('0x3f')],'type':_0x3ca72c[_0x9b14('0x40')]['key']};});_0x5db8f8[_0x9b14('0x41')]=_[_0x9b14('0x3c')](_0x82524f,_0x9b14('0x39'));_0x5db8f8[_0x9b14('0x42')]=_[_0x9b14('0x43')](_0x5a9448[_0x9b14('0x42')]);_0x5db8f8[_0x9b14('0x44')]=_[_0x9b14('0x45')](_0x5db8f8[_0x9b14('0x41')],_0x5db8f8[_0x9b14('0x42')]);_0x2eb51f[_0x9b14('0x46')]=_[_0x9b14('0x45')](_0x5db8f8[_0x9b14('0x41')],qs[_0x9b14('0x47')](_0x5a9448['query'][_0x9b14('0x47')]));_0x2eb51f[_0x9b14('0x46')]=_0x2eb51f['attributes'][_0x9b14('0x48')]?_0x2eb51f[_0x9b14('0x46')]:_0x5db8f8[_0x9b14('0x41')];if(!_0x5a9448['query'][_0x9b14('0x49')](_0x9b14('0x4a'))){_0x2eb51f[_0x9b14('0x2d')]=qs['limit'](_0x5a9448[_0x9b14('0x42')][_0x9b14('0x2d')]);_0x2eb51f[_0x9b14('0x2f')]=qs[_0x9b14('0x2f')](_0x5a9448[_0x9b14('0x42')][_0x9b14('0x2f')]);}_0x2eb51f[_0x9b14('0x4b')]=qs[_0x9b14('0x4c')](_0x5a9448[_0x9b14('0x42')][_0x9b14('0x4c')]);_0x2eb51f[_0x9b14('0x4d')]=qs['filters'](_[_0x9b14('0x4e')](_0x5a9448[_0x9b14('0x42')],_0x5db8f8[_0x9b14('0x44')]),_0x82524f);if(_0x5a9448[_0x9b14('0x42')][_0x9b14('0x4f')]){_0x2eb51f[_0x9b14('0x4d')]=_[_0x9b14('0x50')](_0x2eb51f[_0x9b14('0x4d')],{'$or':_[_0x9b14('0x3c')](_0x82524f,function(_0x268dc4){if(_0x268dc4[_0x9b14('0x40')]!==_0x9b14('0x51')){var _0xc661fa={};_0xc661fa[_0x268dc4[_0x9b14('0x39')]]={'$like':'%'+_0x5a9448[_0x9b14('0x42')][_0x9b14('0x4f')]+'%'};return _0xc661fa;}})});}_0x2eb51f=_['merge']({},_0x2eb51f,_0x5a9448[_0x9b14('0x52')]);var _0x3b0566={'where':_0x2eb51f[_0x9b14('0x4d')]};return db[_0x9b14('0x3d')]['count'](_0x3b0566)[_0x9b14('0x20')](function(_0x193653){_0x1ca82a[_0x9b14('0x2e')]=_0x193653;if(_0x5a9448[_0x9b14('0x42')][_0x9b14('0x53')]){_0x2eb51f[_0x9b14('0x54')]=[{'all':!![]}];}return db[_0x9b14('0x3d')][_0x9b14('0x55')](_0x2eb51f);})['then'](function(_0x178302){_0x1ca82a['rows']=_0x178302;return _0x1ca82a;})[_0x9b14('0x20')](respondWithFilteredResult(_0x2dcbec,_0x2eb51f))[_0x9b14('0x28')](handleError(_0x2dcbec,null));};exports['show']=function(_0x10c549,_0x1d2369){var _0x2369e1={'raw':!![],'where':{'id':_0x10c549[_0x9b14('0x56')]['id']}},_0x37999e={};_0x37999e['model']=_[_0x9b14('0x43')](db[_0x9b14('0x3d')][_0x9b14('0x3e')]);_0x37999e[_0x9b14('0x42')]=_[_0x9b14('0x43')](_0x10c549[_0x9b14('0x42')]);_0x37999e[_0x9b14('0x44')]=_[_0x9b14('0x45')](_0x37999e[_0x9b14('0x41')],_0x37999e[_0x9b14('0x42')]);_0x2369e1[_0x9b14('0x46')]=_[_0x9b14('0x45')](_0x37999e[_0x9b14('0x41')],qs['fields'](_0x10c549[_0x9b14('0x42')][_0x9b14('0x47')]));_0x2369e1[_0x9b14('0x46')]=_0x2369e1['attributes'][_0x9b14('0x48')]?_0x2369e1[_0x9b14('0x46')]:_0x37999e['model'];if(_0x10c549[_0x9b14('0x42')][_0x9b14('0x53')]){_0x2369e1[_0x9b14('0x54')]=[{'all':!![]}];}_0x2369e1=_['merge']({},_0x2369e1,_0x10c549['options']);return db['ChatQueue'][_0x9b14('0x57')](_0x2369e1)[_0x9b14('0x20')](handleEntityNotFound(_0x1d2369,null))[_0x9b14('0x20')](respondWithResult(_0x1d2369,null))[_0x9b14('0x28')](handleError(_0x1d2369,null));};exports[_0x9b14('0x58')]=function(_0x3c5c38,_0x584604){return db[_0x9b14('0x3d')]['create'](_0x3c5c38['body'],{})['then'](function(_0x5c77c4){var _0x5eb4fc=_0x3c5c38['user'][_0x9b14('0x59')]({'plain':!![]});if(!_0x5eb4fc)throw new Error(_0x9b14('0x5a'));if(_0x5eb4fc[_0x9b14('0x5b')]===_0x9b14('0x5c')){var _0x2fd885=_0x5c77c4[_0x9b14('0x59')]({'plain':!![]});var _0x22fc59='ChatQueues';return db[_0x9b14('0x5d')]['find']({'where':{'name':_0x22fc59,'userProfileId':_0x5eb4fc[_0x9b14('0x5e')]},'raw':!![]})[_0x9b14('0x20')](function(_0x5275ce){if(_0x5275ce&&_0x5275ce[_0x9b14('0x5f')]===0x0){return db[_0x9b14('0x36')][_0x9b14('0x58')]({'name':_0x2fd885[_0x9b14('0x39')],'resourceId':_0x2fd885['id'],'type':_0x5275ce[_0x9b14('0x39')],'sectionId':_0x5275ce['id']},{})[_0x9b14('0x20')](function(){return _0x5c77c4;});}else{return _0x5c77c4;}})[_0x9b14('0x28')](function(_0x3f6bbb){logger[_0x9b14('0x24')](_0x9b14('0x60'),_0x3f6bbb);throw _0x3f6bbb;});}return _0x5c77c4;})[_0x9b14('0x20')](respondWithResult(_0x584604,0xc9))[_0x9b14('0x28')](handleError(_0x584604,null));};exports[_0x9b14('0x61')]=function(_0x1675b0,_0x24c0c0){if(_0x1675b0['body']['id']){delete _0x1675b0[_0x9b14('0x62')]['id'];}return db[_0x9b14('0x3d')][_0x9b14('0x57')]({'where':{'id':_0x1675b0[_0x9b14('0x56')]['id']}})[_0x9b14('0x20')](handleEntityNotFound(_0x24c0c0,null))['then'](saveUpdates(_0x1675b0[_0x9b14('0x62')],null))[_0x9b14('0x20')](respondWithResult(_0x24c0c0,null))[_0x9b14('0x28')](handleError(_0x24c0c0,null));};exports[_0x9b14('0x34')]=function(_0x404666,_0x571c70){return db['ChatQueue'][_0x9b14('0x57')]({'where':{'id':_0x404666[_0x9b14('0x56')]['id']}})[_0x9b14('0x20')](handleEntityNotFound(_0x571c70,null))['then'](removeEntity(_0x571c70,null))['catch'](handleError(_0x571c70,null));};exports[_0x9b14('0x63')]=function(_0x14ad75,_0x2ea179){return db[_0x9b14('0x3d')][_0x9b14('0x63')]()[_0x9b14('0x20')](respondWithResult(_0x2ea179,null))[_0x9b14('0x28')](handleError(_0x2ea179,null));};exports['getMembers']=function(_0x3a224a,_0x23093f,_0x44ef7b){var _0x5eaf42={'raw':!![],'where':{}},_0x5528be={},_0xac5734;return db['ChatQueue'][_0x9b14('0x64')]({'where':{'id':_0x3a224a[_0x9b14('0x56')]['id']}})[_0x9b14('0x20')](handleEntityNotFound(_0x23093f,null))[_0x9b14('0x20')](function(_0x25cda0){if(_0x25cda0){_0xac5734=_0x25cda0[_0x9b14('0x59')]({'plain':!![]});_0x5528be[_0x9b14('0x41')]=_['keys'](db[_0x9b14('0x65')]['rawAttributes']);_0x5528be['query']=_['keys'](_0x3a224a[_0x9b14('0x42')]);_0x5528be[_0x9b14('0x44')]=_[_0x9b14('0x45')](_0x5528be[_0x9b14('0x41')],_0x5528be[_0x9b14('0x42')]);_0x5eaf42[_0x9b14('0x46')]=_[_0x9b14('0x45')](_0x5528be[_0x9b14('0x41')],qs[_0x9b14('0x47')](_0x3a224a[_0x9b14('0x42')]['fields']));_0x5eaf42[_0x9b14('0x46')]=_0x5eaf42[_0x9b14('0x46')][_0x9b14('0x48')]?_0x5eaf42['attributes']:_0x5528be[_0x9b14('0x41')];if(!_0x3a224a[_0x9b14('0x42')]['hasOwnProperty'](_0x9b14('0x4a'))){_0x5eaf42[_0x9b14('0x2d')]=qs['limit'](_0x3a224a[_0x9b14('0x42')]['limit']);_0x5eaf42['offset']=qs[_0x9b14('0x2f')](_0x3a224a[_0x9b14('0x42')]['offset']);}_0x5eaf42['order']=qs[_0x9b14('0x4c')](_0x3a224a[_0x9b14('0x42')][_0x9b14('0x4c')]);_0x5eaf42[_0x9b14('0x4d')]=qs[_0x9b14('0x44')](_[_0x9b14('0x4e')](_0x3a224a[_0x9b14('0x42')],_0x5528be[_0x9b14('0x44')]));_0x5eaf42[_0x9b14('0x4d')]['ChatQueueId']=_0x25cda0['id'];if(_0x3a224a[_0x9b14('0x42')][_0x9b14('0x4f')]){_0x5eaf42['where']=_[_0x9b14('0x50')](_0x5eaf42[_0x9b14('0x4d')],{'$or':_[_0x9b14('0x3c')](_0x5eaf42[_0x9b14('0x46')],function(_0x4516c1){var _0x2f9fd7={};_0x2f9fd7[_0x4516c1]={'$like':'%'+_0x3a224a[_0x9b14('0x42')][_0x9b14('0x4f')]+'%'};return _0x2f9fd7;})});}_0x5eaf42=_[_0x9b14('0x50')]({},_0x5eaf42,_0x3a224a['options']);return db[_0x9b14('0x65')]['findAll'](_0x5eaf42);}})['then'](function(_0x2903ed){if(_0x2903ed){return db['User'][_0x9b14('0x66')]({'where':{'id':_['map'](_0x2903ed,_0x9b14('0x67')),'role':_0x9b14('0x68')},'attributes':['id',_0x9b14('0x39'),'chatPause',_0x9b14('0x69'),_0x9b14('0x6a')]});}})[_0x9b14('0x20')](function(_0xac41d5){if(_0xac41d5){return{'count':_0xac41d5['count'],'rows':_['map'](_0xac41d5[_0x9b14('0x6b')],function(_0x2ba08c){return{'membername':_0x2ba08c[_0x9b14('0x39')],'UserId':_0x2ba08c['id'],'queue_name':_0xac5734[_0x9b14('0x39')],'ChatQueueId':_0xac5734['id'],'interface':util[_0x9b14('0x6c')](_0x9b14('0x6d'),_0x9b14('0x6e'),_0x2ba08c[_0x9b14('0x39')]),'penalty':0x0,'paused':_0x2ba08c[_0x9b14('0x6f')],'createdAt':_0x2ba08c[_0x9b14('0x6a')],'updatedAt':_0x2ba08c[_0x9b14('0x69')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x23093f,_0x5eaf42))['catch'](handleError(_0x23093f,null));};exports[_0x9b14('0x70')]=function(_0x4c3693,_0x2eb6ce,_0x577042){var _0x15332={};var _0x330e88={};var _0x406231;var _0x315855;return db[_0x9b14('0x3d')][_0x9b14('0x64')]({'where':{'id':_0x4c3693[_0x9b14('0x56')]['id']}})[_0x9b14('0x20')](handleEntityNotFound(_0x2eb6ce,null))[_0x9b14('0x20')](function(_0x5f048d){if(_0x5f048d){_0x406231=_0x5f048d;_0x330e88[_0x9b14('0x41')]=_['keys'](db[_0x9b14('0x71')][_0x9b14('0x3e')]);_0x330e88['query']=_['keys'](_0x4c3693[_0x9b14('0x42')]);_0x330e88[_0x9b14('0x44')]=_[_0x9b14('0x45')](_0x330e88[_0x9b14('0x41')],_0x330e88['query']);_0x15332[_0x9b14('0x46')]=_['intersection'](_0x330e88['model'],qs[_0x9b14('0x47')](_0x4c3693[_0x9b14('0x42')][_0x9b14('0x47')]));_0x15332['attributes']=_0x15332['attributes'][_0x9b14('0x48')]?_0x15332[_0x9b14('0x46')]:_0x330e88['model'];_0x15332[_0x9b14('0x4b')]=qs[_0x9b14('0x4c')](_0x4c3693[_0x9b14('0x42')][_0x9b14('0x4c')]);_0x15332[_0x9b14('0x4d')]=qs['filters'](_['pick'](_0x4c3693[_0x9b14('0x42')],_0x330e88[_0x9b14('0x44')]));if(_0x4c3693[_0x9b14('0x42')]['filter']){_0x15332[_0x9b14('0x4d')]=_[_0x9b14('0x50')](_0x15332[_0x9b14('0x4d')],{'$or':_[_0x9b14('0x3c')](_0x15332[_0x9b14('0x46')],function(_0x4d0cb4){var _0x32aec5={};_0x32aec5[_0x4d0cb4]={'$like':'%'+_0x4c3693[_0x9b14('0x42')][_0x9b14('0x4f')]+'%'};return _0x32aec5;})});}_0x15332=_[_0x9b14('0x50')]({},_0x15332,_0x4c3693[_0x9b14('0x52')]);return _0x406231[_0x9b14('0x70')](_0x15332);}})['then'](function(_0x596e8b){if(_0x596e8b){_0x315855=_0x596e8b[_0x9b14('0x48')];if(!_0x4c3693[_0x9b14('0x42')][_0x9b14('0x49')]('nolimit')){_0x15332['limit']=qs[_0x9b14('0x2d')](_0x4c3693[_0x9b14('0x42')]['limit']);_0x15332['offset']=qs[_0x9b14('0x2f')](_0x4c3693[_0x9b14('0x42')][_0x9b14('0x2f')]);}return _0x406231[_0x9b14('0x70')](_0x15332);}})['then'](function(_0x4faa8c){if(_0x4faa8c){return _0x4faa8c?{'count':_0x315855,'rows':_0x4faa8c}:null;}})['then'](respondWithResult(_0x2eb6ce,null))['catch'](handleError(_0x2eb6ce,null));};exports[_0x9b14('0x72')]=function(_0x5b937c,_0x481c87,_0x2267fc){var _0x5468a2=_0x5b937c[_0x9b14('0x62')]['ids'];return db[_0x9b14('0x71')][_0x9b14('0x55')]({'where':{'id':_0x5468a2},'attributes':['id'],'include':[{'model':db[_0x9b14('0x73')],'as':'Agents','attributes':['id','name',_0x9b14('0x74'),'voicePause',_0x9b14('0x75')],'raw':!![]}]})[_0x9b14('0x20')](function(_0x2b5d5e){if(_0x2b5d5e){var _0x15777a=_[_0x9b14('0x76')](_0x2b5d5e,function(_0x5b7c3b){var _0x1b63a4=_0x5b7c3b[_0x9b14('0x59')]({'plain':!![]});return _0x1b63a4['Agents'];});return db['ChatQueue'][_0x9b14('0x57')]({'where':{'id':_0x5b937c['params']['id']}})['then'](function(_0x413535){return db[_0x9b14('0x77')][_0x9b14('0x78')](function(_0x9d8d16){return _0x413535['addTeams'](_0x5468a2,{'transaction':_0x9d8d16})[_0x9b14('0x20')](function(){return BPromise[_0x9b14('0x79')](_0x15777a,function(_0xeb375b){return db['UserChatQueue'][_0x9b14('0x7a')]({'where':{'UserId':_0xeb375b['id'],'ChatQueueId':_0x5b937c[_0x9b14('0x56')]['id']},'transaction':_0x9d8d16});});})['then'](function(){_0x15777a[_0x9b14('0x7b')](function(_0x4996e7){socket[_0x9b14('0x7c')](_0x9b14('0x7d'),{'UserId':_0x4996e7['id'],'ChatQueueId':_0x413535['id']});});});});});}})[_0x9b14('0x20')](respondWithStatusCode(_0x481c87,null))['catch'](handleError(_0x481c87,null));};exports[_0x9b14('0x7e')]=function(_0x19d6f1,_0x5557d5,_0x328028){return db[_0x9b14('0x71')][_0x9b14('0x55')]({'where':{'id':_0x19d6f1['query'][_0x9b14('0x7f')]},'attributes':['id'],'include':[{'model':db[_0x9b14('0x73')],'as':_0x9b14('0x80'),'attributes':['id'],'raw':!![]}]})[_0x9b14('0x20')](handleEntityNotFound(_0x5557d5,null))[_0x9b14('0x20')](function(_0x4f1d71){var _0x57588c=_[_0x9b14('0x3c')](_0x4f1d71,'id');var _0xb748b8=[];var _0x2bfdd2=[];var _0x12572f=squel[_0x9b14('0x81')]();_0x12572f[_0x9b14('0x82')](_0x9b14('0x83'))[_0x9b14('0x84')](_0x9b14('0x85'),'tq')[_0x9b14('0x86')](_0x9b14('0x87'),'ut',_0x9b14('0x88'))[_0x9b14('0x4d')](_0x9b14('0x89'),_0x19d6f1[_0x9b14('0x56')]['id']);for(var _0x24e29b=0x0;_0x24e29b<_0x4f1d71['length'];_0x24e29b+=0x1){let _0x96ae92=_0x4f1d71[_0x24e29b];for(var _0x18f249=0x0;_0x18f249<_0x96ae92['Agents'][_0x9b14('0x48')];_0x18f249+=0x1){let _0x5b3da5=_0x96ae92[_0x9b14('0x80')][_0x18f249];var _0x2c889e=_0x12572f[_0x9b14('0x8a')]();_0x2c889e[_0x9b14('0x4d')](_0x9b14('0x8b'),_0x5b3da5['id']);_0x2bfdd2['push'](db[_0x9b14('0x77')][_0x9b14('0x42')](_0x2c889e['toString'](),{'type':db['sequelize'][_0x9b14('0x8c')][_0x9b14('0x8d')]})[_0x9b14('0x20')](function(_0x5e1ebe){if(_0x5e1ebe['length']===0x1){return _0x5b3da5['id'];}else{var _0x31999c=_['every'](_['map'](_0x5e1ebe,_0x9b14('0x8e')),function(_0x49fd4c){return _['includes'](_0x57588c,_0x49fd4c);});if(_0x31999c){return _0x5b3da5['id'];}}}));}}return BPromise['all'](_0x2bfdd2)[_0x9b14('0x20')](function(_0x3922e9){_0xb748b8=_(_0xb748b8)[_0x9b14('0x8f')](_0x3922e9)[_0x9b14('0x90')]()['value']();return db[_0x9b14('0x3d')][_0x9b14('0x57')]({'where':{'id':_0x19d6f1[_0x9b14('0x56')]['id']}})['then'](function(_0x458c63){return db[_0x9b14('0x77')][_0x9b14('0x78')](function(_0x3ad21a){return _0x458c63[_0x9b14('0x7e')](_0x19d6f1['query'][_0x9b14('0x7f')],{'transaction':_0x3ad21a})[_0x9b14('0x20')](function(){if(!_[_0x9b14('0x91')](_0xb748b8)){return _0x458c63['removeAgents'](_0xb748b8,{'transaction':_0x3ad21a});}})[_0x9b14('0x20')](function(){_0xb748b8[_0x9b14('0x7b')](function(_0x455dd5){socket[_0x9b14('0x7c')](_0x9b14('0x92'),{'UserId':_0x455dd5,'ChatQueueId':_0x458c63['id']});});});});});});})[_0x9b14('0x20')](respondWithStatusCode(_0x5557d5,null))['catch'](handleError(_0x5557d5,null));};exports[_0x9b14('0x93')]=function(_0x278195,_0x18ad40,_0x1b875c){return db[_0x9b14('0x3d')][_0x9b14('0x57')]({'where':{'id':_0x278195[_0x9b14('0x56')]['id']}})['then'](handleEntityNotFound(_0x18ad40,null))[_0x9b14('0x20')](function(_0x251611){if(_0x251611){return _0x251611[_0x9b14('0x93')](_0x278195['body'][_0x9b14('0x7f')],_['omit'](_0x278195[_0x9b14('0x62')],['ids','id'])||{})['spread'](function(_0x5a9c86){for(var _0x1c173f=0x0;_0x1c173f<_0x278195[_0x9b14('0x62')][_0x9b14('0x7f')][_0x9b14('0x48')];_0x1c173f+=0x1){socket[_0x9b14('0x7c')](_0x9b14('0x7d'),{'UserId':Number(_0x278195[_0x9b14('0x62')]['ids'][_0x1c173f]),'ChatQueueId':Number(_0x278195[_0x9b14('0x56')]['id'])});}return _0x5a9c86;});}})[_0x9b14('0x20')](respondWithResult(_0x18ad40,null))[_0x9b14('0x28')](handleError(_0x18ad40,null));};exports[_0x9b14('0x94')]=function(_0x163bd4,_0x86fb1f,_0xa21e0){return db['ChatQueue'][_0x9b14('0x57')]({'where':{'id':_0x163bd4['params']['id']}})[_0x9b14('0x20')](handleEntityNotFound(_0x86fb1f,null))[_0x9b14('0x20')](function(_0x399e2b){if(_0x399e2b){return _0x399e2b['removeAgents'](_0x163bd4[_0x9b14('0x42')][_0x9b14('0x7f')])[_0x9b14('0x20')](function(){if(_[_0x9b14('0x95')](_0x163bd4['query'][_0x9b14('0x7f')])){for(var _0x192adc=0x0;_0x192adc<_0x163bd4[_0x9b14('0x42')][_0x9b14('0x7f')][_0x9b14('0x48')];_0x192adc+=0x1){socket[_0x9b14('0x7c')]('userChatQueue:remove',{'UserId':Number(_0x163bd4[_0x9b14('0x42')][_0x9b14('0x7f')][_0x192adc]),'ChatQueueId':Number(_0x163bd4[_0x9b14('0x56')]['id'])});}}else{socket['emit'](_0x9b14('0x92'),{'UserId':Number(_0x163bd4[_0x9b14('0x42')][_0x9b14('0x7f')]),'ChatQueueId':Number(_0x163bd4[_0x9b14('0x56')]['id'])});}});}})[_0x9b14('0x20')](respondWithStatusCode(_0x86fb1f,null))[_0x9b14('0x28')](handleError(_0x86fb1f,null));};exports[_0x9b14('0x96')]=function(_0x127cd9,_0x165fe0,_0x45f06c){var _0x1a8bd5={};var _0x41be56={};var _0x48d889;var _0x421224;return db[_0x9b14('0x3d')][_0x9b14('0x64')]({'where':{'id':_0x127cd9[_0x9b14('0x56')]['id']}})[_0x9b14('0x20')](handleEntityNotFound(_0x165fe0,null))[_0x9b14('0x20')](function(_0x5391c9){if(_0x5391c9){_0x48d889=_0x5391c9;_0x41be56[_0x9b14('0x41')]=_[_0x9b14('0x43')](db[_0x9b14('0x73')][_0x9b14('0x3e')]);_0x41be56[_0x9b14('0x42')]=_[_0x9b14('0x43')](_0x127cd9[_0x9b14('0x42')]);_0x41be56['filters']=_['intersection'](_0x41be56[_0x9b14('0x41')],_0x41be56[_0x9b14('0x42')]);_0x1a8bd5[_0x9b14('0x46')]=_[_0x9b14('0x45')](_0x41be56[_0x9b14('0x41')],qs['fields'](_0x127cd9[_0x9b14('0x42')][_0x9b14('0x47')]));_0x1a8bd5[_0x9b14('0x46')]=_0x1a8bd5[_0x9b14('0x46')][_0x9b14('0x48')]?_0x1a8bd5[_0x9b14('0x46')]:_0x41be56[_0x9b14('0x41')];_0x1a8bd5['order']=qs['sort'](_0x127cd9[_0x9b14('0x42')][_0x9b14('0x4c')]);_0x1a8bd5['where']=qs['filters'](_['pick'](_0x127cd9['query'],_0x41be56[_0x9b14('0x44')]));if(_0x127cd9[_0x9b14('0x42')]['filter']){_0x1a8bd5[_0x9b14('0x4d')]=_[_0x9b14('0x50')](_0x1a8bd5['where'],{'$or':_['map'](_0x1a8bd5['attributes'],function(_0x35f1b6){var _0x4bb2ba={};_0x4bb2ba[_0x35f1b6]={'$like':'%'+_0x127cd9[_0x9b14('0x42')][_0x9b14('0x4f')]+'%'};return _0x4bb2ba;})});}_0x1a8bd5=_[_0x9b14('0x50')]({},_0x1a8bd5,_0x127cd9['options']);return _0x48d889[_0x9b14('0x96')](_0x1a8bd5);}})[_0x9b14('0x20')](function(_0x51bc19){if(_0x51bc19){_0x421224=_0x51bc19[_0x9b14('0x48')];if(!_0x127cd9[_0x9b14('0x42')][_0x9b14('0x49')](_0x9b14('0x4a'))){_0x1a8bd5[_0x9b14('0x2d')]=qs[_0x9b14('0x2d')](_0x127cd9['query']['limit']);_0x1a8bd5[_0x9b14('0x2f')]=qs['offset'](_0x127cd9['query']['offset']);}return _0x48d889[_0x9b14('0x96')](_0x1a8bd5);}})[_0x9b14('0x20')](function(_0x5bfa67){if(_0x5bfa67){return _0x5bfa67?{'count':_0x421224,'rows':_0x5bfa67}:null;}})['then'](respondWithResult(_0x165fe0,null))[_0x9b14('0x28')](handleError(_0x165fe0,null));};
\ No newline at end of file
index 54d9c2a..9147411 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x568b=['events','../../mysqldb','ChatQueue','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x5251ef,_0x52151d){var _0x53208f=function(_0x4ff0cc){while(--_0x4ff0cc){_0x5251ef['push'](_0x5251ef['shift']());}};_0x53208f(++_0x52151d);}(_0x568b,0x1d6));var _0xb568=function(_0x4bd114,_0x177ea1){_0x4bd114=_0x4bd114-0x0;var _0xa3e645=_0x568b[_0x4bd114];return _0xa3e645;};'use strict';var EventEmitter=require(_0xb568('0x0'));var ChatQueue=require(_0xb568('0x1'))['db'][_0xb568('0x2')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0xb568('0x3')](0x0);var events={'afterCreate':_0xb568('0x4'),'afterUpdate':_0xb568('0x5'),'afterDestroy':_0xb568('0x6')};function emitEvent(_0x56b4f2){return function(_0x1ddef1,_0xbbe476,_0x3d1794){ChatQueueEvents[_0xb568('0x7')](_0x56b4f2+':'+_0x1ddef1['id'],_0x1ddef1);ChatQueueEvents[_0xb568('0x7')](_0x56b4f2,_0x1ddef1);_0x3d1794(null);};}for(var e in events){if(events[_0xb568('0x8')](e)){var event=events[e];ChatQueue['hook'](e,emitEvent(event));}}module[_0xb568('0x9')]=ChatQueueEvents;
\ No newline at end of file
+var _0xd689=['ChatQueue','setMaxListeners','save','remove','emit','hasOwnProperty','exports'];(function(_0x353ee5,_0x22ba2d){var _0x7dd7a8=function(_0x1b5e03){while(--_0x1b5e03){_0x353ee5['push'](_0x353ee5['shift']());}};_0x7dd7a8(++_0x22ba2d);}(_0xd689,0x188));var _0x9d68=function(_0x15a9cb,_0x2c5d45){_0x15a9cb=_0x15a9cb-0x0;var _0x4036e4=_0xd689[_0x15a9cb];return _0x4036e4;};'use strict';var EventEmitter=require('events');var ChatQueue=require('../../mysqldb')['db'][_0x9d68('0x0')];var ChatQueueEvents=new EventEmitter();ChatQueueEvents[_0x9d68('0x1')](0x0);var events={'afterCreate':_0x9d68('0x2'),'afterUpdate':'update','afterDestroy':_0x9d68('0x3')};function emitEvent(_0x5d7fc2){return function(_0x11275e,_0x3bccce,_0x37adcd){ChatQueueEvents['emit'](_0x5d7fc2+':'+_0x11275e['id'],_0x11275e);ChatQueueEvents[_0x9d68('0x4')](_0x5d7fc2,_0x11275e);_0x37adcd(null);};}for(var e in events){if(events[_0x9d68('0x5')](e)){var event=events[e];ChatQueue['hook'](e,emitEvent(event));}}module[_0x9d68('0x6')]=ChatQueueEvents;
\ No newline at end of file
index 45f930b..4d81fe2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ac3=['lodash','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./chatQueue.attributes','exports','define','ChatQueue'];(function(_0xdcdc6b,_0x4fd9b3){var _0x50c349=function(_0x452b61){while(--_0x452b61){_0xdcdc6b['push'](_0xdcdc6b['shift']());}};_0x50c349(++_0x4fd9b3);}(_0x5ac3,0xa9));var _0x35ac=function(_0x3c94d4,_0x467799){_0x3c94d4=_0x3c94d4-0x0;var _0x3e69a3=_0x5ac3[_0x3c94d4];return _0x3e69a3;};'use strict';var _=require(_0x35ac('0x0'));var util=require(_0x35ac('0x1'));var logger=require('../../config/logger')(_0x35ac('0x2'));var moment=require(_0x35ac('0x3'));var BPromise=require(_0x35ac('0x4'));var rp=require(_0x35ac('0x5'));var fs=require('fs');var path=require(_0x35ac('0x6'));var rimraf=require(_0x35ac('0x7'));var config=require(_0x35ac('0x8'));var attributes=require(_0x35ac('0x9'));module[_0x35ac('0xa')]=function(_0x18e963,_0x4ef750){return _0x18e963[_0x35ac('0xb')](_0x35ac('0xc'),attributes,{'tableName':'chat_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x410f=['request-promise','path','rimraf','./chatQueue.attributes','exports','ChatQueue','chat_queues','lodash','../../config/logger','moment','bluebird'];(function(_0x4739aa,_0x123bfd){var _0xde754b=function(_0x11b42a){while(--_0x11b42a){_0x4739aa['push'](_0x4739aa['shift']());}};_0xde754b(++_0x123bfd);}(_0x410f,0xf9));var _0xf410=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x410f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xf410('0x0'));var util=require('util');var logger=require(_0xf410('0x1'))('api');var moment=require(_0xf410('0x2'));var BPromise=require(_0xf410('0x3'));var rp=require(_0xf410('0x4'));var fs=require('fs');var path=require(_0xf410('0x5'));var rimraf=require(_0xf410('0x6'));var config=require('../../config/environment');var attributes=require(_0xf410('0x7'));module[_0xf410('0x8')]=function(_0x5942d4,_0x332605){return _0x5942d4['define'](_0xf410('0x9'),attributes,{'tableName':_0xf410('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2e45b9d..f96bcdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8a5c=['jayson/promise','http','redis','defaults','socket.io-emitter','./chatQueue.socket','register','ChatQueue,\x20%s,\x20%s','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','error','message','result','catch','GetChatQueue','ChatQueue','findAll','options','where','attributes','limit','include','map','model','then','info','ShowChatQueue','find','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment'];(function(_0x51f4d8,_0x27d577){var _0x569af7=function(_0x48707e){while(--_0x48707e){_0x51f4d8['push'](_0x51f4d8['shift']());}};_0x569af7(++_0x27d577);}(_0x8a5c,0x136));var _0xc8a5=function(_0x394ff2,_0x3525ca){_0x394ff2=_0x394ff2-0x0;var _0x2f9b43=_0x8a5c[_0x394ff2];return _0x2f9b43;};'use strict';var _=require(_0xc8a5('0x0'));var util=require(_0xc8a5('0x1'));var moment=require(_0xc8a5('0x2'));var BPromise=require(_0xc8a5('0x3'));var rs=require(_0xc8a5('0x4'));var fs=require('fs');var Redis=require(_0xc8a5('0x5'));var db=require(_0xc8a5('0x6'))['db'];var utils=require(_0xc8a5('0x7'));var logger=require(_0xc8a5('0x8'))('rpc');var config=require(_0xc8a5('0x9'));var jayson=require(_0xc8a5('0xa'));var client=jayson['client'][_0xc8a5('0xb')]({'port':0x232a});config[_0xc8a5('0xc')]=_[_0xc8a5('0xd')](config[_0xc8a5('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xc8a5('0xe'))(new Redis(config[_0xc8a5('0xc')]));require(_0xc8a5('0xf'))[_0xc8a5('0x10')](socket);function respondWithRpcPromise(_0x814714,_0x3b2ba3,_0x136146){return new BPromise(function(_0x16fd9a,_0xea6d98){return client['request'](_0x814714,_0x136146)['then'](function(_0x15d9a0){logger['info'](_0xc8a5('0x11'),_0x3b2ba3,_0xc8a5('0x12'));logger[_0xc8a5('0x13')](_0xc8a5('0x14'),_0x3b2ba3,_0xc8a5('0x12'),JSON['stringify'](_0x15d9a0));if(_0x15d9a0[_0xc8a5('0x15')]){if(_0x15d9a0[_0xc8a5('0x15')]['code']===0x1f4){logger[_0xc8a5('0x15')](_0xc8a5('0x11'),_0x3b2ba3,_0x15d9a0[_0xc8a5('0x15')][_0xc8a5('0x16')]);return _0xea6d98(_0x15d9a0[_0xc8a5('0x15')][_0xc8a5('0x16')]);}logger['error'](_0xc8a5('0x11'),_0x3b2ba3,_0x15d9a0[_0xc8a5('0x15')]['message']);return _0x16fd9a(_0x15d9a0[_0xc8a5('0x15')][_0xc8a5('0x16')]);}else{logger['info'](_0xc8a5('0x11'),_0x3b2ba3,_0xc8a5('0x12'));_0x16fd9a(_0x15d9a0[_0xc8a5('0x17')][_0xc8a5('0x16')]);}})[_0xc8a5('0x18')](function(_0x4b0aa0){logger[_0xc8a5('0x15')]('ChatQueue,\x20%s,\x20%s',_0x3b2ba3,_0x4b0aa0);_0xea6d98(_0x4b0aa0);});});}exports[_0xc8a5('0x19')]=function(_0x43e970){var _0x4793da=this;return new Promise(function(_0x4c7c8a,_0x866737){return db[_0xc8a5('0x1a')][_0xc8a5('0x1b')]({'raw':_0x43e970[_0xc8a5('0x1c')]?_0x43e970[_0xc8a5('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x43e970['options']?_0x43e970[_0xc8a5('0x1c')][_0xc8a5('0x1d')]||null:null,'attributes':_0x43e970[_0xc8a5('0x1c')]?_0x43e970[_0xc8a5('0x1c')][_0xc8a5('0x1e')]||null:null,'limit':_0x43e970[_0xc8a5('0x1c')]?_0x43e970['options'][_0xc8a5('0x1f')]||null:null,'include':_0x43e970[_0xc8a5('0x1c')]?_0x43e970[_0xc8a5('0x1c')][_0xc8a5('0x20')]?_[_0xc8a5('0x21')](_0x43e970[_0xc8a5('0x1c')][_0xc8a5('0x20')],function(_0x3bbbdc){return{'model':db[_0x3bbbdc[_0xc8a5('0x22')]],'as':_0x3bbbdc['as'],'attributes':_0x3bbbdc['attributes'],'include':_0x3bbbdc[_0xc8a5('0x20')]?_[_0xc8a5('0x21')](_0x3bbbdc[_0xc8a5('0x20')],function(_0x3539fd){return{'model':db[_0x3539fd[_0xc8a5('0x22')]],'as':_0x3539fd['as'],'attributes':_0x3539fd[_0xc8a5('0x1e')],'include':_0x3539fd[_0xc8a5('0x20')]?_['map'](_0x3539fd['include'],function(_0x9886){return{'model':db[_0x9886['model']],'as':_0x9886['as'],'attributes':_0x9886['attributes']};}):[]};}):[]};}):[]:[]})[_0xc8a5('0x23')](function(_0x10972d){logger[_0xc8a5('0x24')](_0xc8a5('0x19'),_0x43e970);logger[_0xc8a5('0x13')](_0xc8a5('0x19'),_0x43e970,JSON['stringify'](_0x10972d));_0x4c7c8a(_0x10972d);})[_0xc8a5('0x18')](function(_0x432800){logger[_0xc8a5('0x15')](_0xc8a5('0x19'),_0x432800[_0xc8a5('0x16')],_0x43e970);_0x866737(_0x4793da[_0xc8a5('0x15')](0x1f4,_0x432800['message']));});});};exports[_0xc8a5('0x25')]=function(_0x412c41){var _0x342505=this;return new Promise(function(_0x25db3f,_0x4bc893){return db['ChatQueue'][_0xc8a5('0x26')]({'raw':_0x412c41[_0xc8a5('0x1c')]?_0x412c41[_0xc8a5('0x1c')][_0xc8a5('0x27')]===undefined?!![]:![]:!![],'where':_0x412c41[_0xc8a5('0x1c')]?_0x412c41['options'][_0xc8a5('0x1d')]||null:null,'attributes':_0x412c41['options']?_0x412c41[_0xc8a5('0x1c')][_0xc8a5('0x1e')]||null:null,'include':_0x412c41[_0xc8a5('0x1c')]?_0x412c41['options'][_0xc8a5('0x20')]?_[_0xc8a5('0x21')](_0x412c41[_0xc8a5('0x1c')]['include'],function(_0xe5ec){return{'model':db[_0xe5ec[_0xc8a5('0x22')]],'as':_0xe5ec['as'],'attributes':_0xe5ec['attributes'],'include':_0xe5ec[_0xc8a5('0x20')]?_['map'](_0xe5ec['include'],function(_0x5f5ad0){return{'model':db[_0x5f5ad0['model']],'as':_0x5f5ad0['as'],'attributes':_0x5f5ad0['attributes'],'include':_0x5f5ad0[_0xc8a5('0x20')]?_['map'](_0x5f5ad0[_0xc8a5('0x20')],function(_0x3b7653){return{'model':db[_0x3b7653[_0xc8a5('0x22')]],'as':_0x3b7653['as'],'attributes':_0x3b7653[_0xc8a5('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xc8a5('0x23')](function(_0x25a977){logger[_0xc8a5('0x24')]('ShowChatQueue',_0x412c41);logger[_0xc8a5('0x13')](_0xc8a5('0x25'),_0x412c41,JSON['stringify'](_0x25a977));_0x25db3f(_0x25a977);})[_0xc8a5('0x18')](function(_0x49f349){logger['error'](_0xc8a5('0x25'),_0x49f349[_0xc8a5('0x16')],_0x412c41);_0x4bc893(_0x342505[_0xc8a5('0x15')](0x1f4,_0x49f349['message']));});});};
\ No newline at end of file
+var _0x36e1=['findAll','options','raw','where','attributes','limit','include','map','model','find','ShowChatQueue','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','redis','defaults','localhost','socket.io-emitter','./chatQueue.socket','then','info','request\x20sent','debug','ChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','ChatQueue,\x20%s,\x20%s','message','catch','GetChatQueue','ChatQueue'];(function(_0x507e26,_0x79936c){var _0x2d2d35=function(_0xa079c3){while(--_0xa079c3){_0x507e26['push'](_0x507e26['shift']());}};_0x2d2d35(++_0x79936c);}(_0x36e1,0x187));var _0x136e=function(_0x400322,_0x4353a8){_0x400322=_0x400322-0x0;var _0xfdd597=_0x36e1[_0x400322];return _0xfdd597;};'use strict';var _=require(_0x136e('0x0'));var util=require(_0x136e('0x1'));var moment=require(_0x136e('0x2'));var BPromise=require('bluebird');var rs=require(_0x136e('0x3'));var fs=require('fs');var Redis=require(_0x136e('0x4'));var db=require(_0x136e('0x5'))['db'];var utils=require(_0x136e('0x6'));var logger=require(_0x136e('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x136e('0x8'));var client=jayson[_0x136e('0x9')]['http']({'port':0x232a});config[_0x136e('0xa')]=_[_0x136e('0xb')](config[_0x136e('0xa')],{'host':_0x136e('0xc'),'port':0x18eb});var socket=require(_0x136e('0xd'))(new Redis(config[_0x136e('0xa')]));require(_0x136e('0xe'))['register'](socket);function respondWithRpcPromise(_0x2ed6d8,_0x254f5c,_0x5ccfee){return new BPromise(function(_0x279622,_0x3291f8){return client['request'](_0x2ed6d8,_0x5ccfee)[_0x136e('0xf')](function(_0x19ef85){logger[_0x136e('0x10')]('ChatQueue,\x20%s,\x20%s',_0x254f5c,_0x136e('0x11'));logger[_0x136e('0x12')](_0x136e('0x13'),_0x254f5c,_0x136e('0x11'),JSON[_0x136e('0x14')](_0x19ef85));if(_0x19ef85[_0x136e('0x15')]){if(_0x19ef85[_0x136e('0x15')]['code']===0x1f4){logger[_0x136e('0x15')](_0x136e('0x16'),_0x254f5c,_0x19ef85[_0x136e('0x15')]['message']);return _0x3291f8(_0x19ef85[_0x136e('0x15')][_0x136e('0x17')]);}logger[_0x136e('0x15')](_0x136e('0x16'),_0x254f5c,_0x19ef85[_0x136e('0x15')][_0x136e('0x17')]);return _0x279622(_0x19ef85[_0x136e('0x15')][_0x136e('0x17')]);}else{logger[_0x136e('0x10')]('ChatQueue,\x20%s,\x20%s',_0x254f5c,_0x136e('0x11'));_0x279622(_0x19ef85['result'][_0x136e('0x17')]);}})[_0x136e('0x18')](function(_0x8694fa){logger[_0x136e('0x15')](_0x136e('0x16'),_0x254f5c,_0x8694fa);_0x3291f8(_0x8694fa);});});}exports[_0x136e('0x19')]=function(_0x3d006f){var _0x258a0e=this;return new Promise(function(_0x1645ec,_0x7fddd){return db[_0x136e('0x1a')][_0x136e('0x1b')]({'raw':_0x3d006f[_0x136e('0x1c')]?_0x3d006f['options'][_0x136e('0x1d')]===undefined?!![]:![]:!![],'where':_0x3d006f[_0x136e('0x1c')]?_0x3d006f['options'][_0x136e('0x1e')]||null:null,'attributes':_0x3d006f[_0x136e('0x1c')]?_0x3d006f[_0x136e('0x1c')][_0x136e('0x1f')]||null:null,'limit':_0x3d006f[_0x136e('0x1c')]?_0x3d006f['options'][_0x136e('0x20')]||null:null,'include':_0x3d006f['options']?_0x3d006f['options'][_0x136e('0x21')]?_[_0x136e('0x22')](_0x3d006f['options'][_0x136e('0x21')],function(_0x39693b){return{'model':db[_0x39693b['model']],'as':_0x39693b['as'],'attributes':_0x39693b[_0x136e('0x1f')],'include':_0x39693b[_0x136e('0x21')]?_[_0x136e('0x22')](_0x39693b[_0x136e('0x21')],function(_0x100451){return{'model':db[_0x100451[_0x136e('0x23')]],'as':_0x100451['as'],'attributes':_0x100451['attributes'],'include':_0x100451[_0x136e('0x21')]?_[_0x136e('0x22')](_0x100451[_0x136e('0x21')],function(_0x561705){return{'model':db[_0x561705['model']],'as':_0x561705['as'],'attributes':_0x561705['attributes']};}):[]};}):[]};}):[]:[]})[_0x136e('0xf')](function(_0x5edb8c){logger['info'](_0x136e('0x19'),_0x3d006f);logger[_0x136e('0x12')](_0x136e('0x19'),_0x3d006f,JSON[_0x136e('0x14')](_0x5edb8c));_0x1645ec(_0x5edb8c);})[_0x136e('0x18')](function(_0x314e9c){logger[_0x136e('0x15')]('GetChatQueue',_0x314e9c[_0x136e('0x17')],_0x3d006f);_0x7fddd(_0x258a0e['error'](0x1f4,_0x314e9c[_0x136e('0x17')]));});});};exports['ShowChatQueue']=function(_0x125db9){var _0x55fa85=this;return new Promise(function(_0x37a606,_0x9ab45f){return db['ChatQueue'][_0x136e('0x24')]({'raw':_0x125db9[_0x136e('0x1c')]?_0x125db9[_0x136e('0x1c')][_0x136e('0x1d')]===undefined?!![]:![]:!![],'where':_0x125db9[_0x136e('0x1c')]?_0x125db9[_0x136e('0x1c')][_0x136e('0x1e')]||null:null,'attributes':_0x125db9[_0x136e('0x1c')]?_0x125db9['options'][_0x136e('0x1f')]||null:null,'include':_0x125db9[_0x136e('0x1c')]?_0x125db9[_0x136e('0x1c')][_0x136e('0x21')]?_[_0x136e('0x22')](_0x125db9[_0x136e('0x1c')][_0x136e('0x21')],function(_0x496a66){return{'model':db[_0x496a66[_0x136e('0x23')]],'as':_0x496a66['as'],'attributes':_0x496a66[_0x136e('0x1f')],'include':_0x496a66['include']?_[_0x136e('0x22')](_0x496a66['include'],function(_0x33405f){return{'model':db[_0x33405f[_0x136e('0x23')]],'as':_0x33405f['as'],'attributes':_0x33405f['attributes'],'include':_0x33405f[_0x136e('0x21')]?_[_0x136e('0x22')](_0x33405f[_0x136e('0x21')],function(_0x36c0a7){return{'model':db[_0x36c0a7[_0x136e('0x23')]],'as':_0x36c0a7['as'],'attributes':_0x36c0a7['attributes']};}):[]};}):[]};}):[]:[]})[_0x136e('0xf')](function(_0x24ef0f){logger[_0x136e('0x10')](_0x136e('0x25'),_0x125db9);logger[_0x136e('0x12')](_0x136e('0x25'),_0x125db9,JSON[_0x136e('0x14')](_0x24ef0f));_0x37a606(_0x24ef0f);})[_0x136e('0x18')](function(_0x18d201){logger[_0x136e('0x15')](_0x136e('0x25'),_0x18d201[_0x136e('0x17')],_0x125db9);_0x9ab45f(_0x55fa85[_0x136e('0x15')](0x1f4,_0x18d201[_0x136e('0x17')]));});});};
\ No newline at end of file
index e2c004f..83e11fa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fdb=['removeListener','length','./chatQueue.events','save','remove','update','emit'];(function(_0x31b2a5,_0x2480b4){var _0x198fa4=function(_0x1414b9){while(--_0x1414b9){_0x31b2a5['push'](_0x31b2a5['shift']());}};_0x198fa4(++_0x2480b4);}(_0x4fdb,0x9c));var _0xb4fd=function(_0x536bbe,_0x580fc3){_0x536bbe=_0x536bbe-0x0;var _0x4fdabc=_0x4fdb[_0x536bbe];return _0x4fdabc;};'use strict';var ChatQueueEvents=require(_0xb4fd('0x0'));var events=[_0xb4fd('0x1'),_0xb4fd('0x2'),_0xb4fd('0x3')];function createListener(_0x3b399e,_0xafe34b){return function(_0x260a35){_0xafe34b[_0xb4fd('0x4')](_0x3b399e,_0x260a35);};}function removeListener(_0x1c0b08,_0x5b73bb){return function(){ChatQueueEvents[_0xb4fd('0x5')](_0x1c0b08,_0x5b73bb);};}exports['register']=function(_0x14052b){for(var _0x5d8b39=0x0,_0x53273f=events[_0xb4fd('0x6')];_0x5d8b39<_0x53273f;_0x5d8b39++){var _0x3af8e3=events[_0x5d8b39];var _0x1151b5=createListener('chatQueue:'+_0x3af8e3,_0x14052b);ChatQueueEvents['on'](_0x3af8e3,_0x1151b5);}};
\ No newline at end of file
+var _0xc3b5=['length','remove','update','emit','register'];(function(_0x1a55cf,_0x11c467){var _0x4f3c2f=function(_0x1a9ecf){while(--_0x1a9ecf){_0x1a55cf['push'](_0x1a55cf['shift']());}};_0x4f3c2f(++_0x11c467);}(_0xc3b5,0x6f));var _0x5c3b=function(_0x373f2a,_0x1e7812){_0x373f2a=_0x373f2a-0x0;var _0xdeca0=_0xc3b5[_0x373f2a];return _0xdeca0;};'use strict';var ChatQueueEvents=require('./chatQueue.events');var events=['save',_0x5c3b('0x0'),_0x5c3b('0x1')];function createListener(_0xbe95d4,_0x3acf12){return function(_0x2f9a72){_0x3acf12[_0x5c3b('0x2')](_0xbe95d4,_0x2f9a72);};}function removeListener(_0x237a61,_0x48f8a1){return function(){ChatQueueEvents['removeListener'](_0x237a61,_0x48f8a1);};}exports[_0x5c3b('0x3')]=function(_0x6b8a1e){for(var _0x56345e=0x0,_0x568a28=events[_0x5c3b('0x4')];_0x56345e<_0x568a28;_0x56345e++){var _0x420839=events[_0x56345e];var _0x3892ad=createListener('chatQueue:'+_0x420839,_0x6b8a1e);ChatQueueEvents['on'](_0x420839,_0x3892ad);}};
\ No newline at end of file
index 9e959fb..1bad0ee 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','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents','put','/:id','delete','destroy','/:id/teams','removeTeams','multer','util','path'];(function(_0x3487a7,_0x14b3ff){var _0x260c62=function(_0x4aa9d2){while(--_0x4aa9d2){_0x3487a7['push'](_0x3487a7['shift']());}};_0x260c62(++_0x14b3ff);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'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',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/teams',auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router['get'](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x14')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router[_0x7995('0x14')]('/:id/teams',auth['isAuthenticated'](),controller[_0x7995('0x16')]);router[_0x7995('0x14')](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x17')]);router[_0x7995('0x18')](_0x7995('0x19'),auth[_0x7995('0xa')](),controller['update']);router[_0x7995('0x1a')]('/:id',auth[_0x7995('0xa')](),controller[_0x7995('0x1b')]);router[_0x7995('0x1a')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x1d')]);router['delete']('/:id/users',auth[_0x7995('0xa')](),controller['removeAgents']);module['exports']=router;
\ No newline at end of file
+var _0x7217=['../../config/environment','./chatQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','post','addTeams','update','delete','destroy','removeTeams','removeAgents','exports','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x18ba33,_0x134f64){var _0x16d08a=function(_0x6f1e72){while(--_0x6f1e72){_0x18ba33['push'](_0x18ba33['shift']());}};_0x16d08a(++_0x134f64);}(_0x7217,0x19e));var _0x7721=function(_0x297fd3,_0x115406){_0x297fd3=_0x297fd3-0x0;var _0x2af381=_0x7217[_0x297fd3];return _0x2af381;};'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('0x8')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0x8')](_0x7721('0xf'),auth['isAuthenticated'](),controller[_0x7721('0x10')]);router[_0x7721('0x8')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x12')]);router[_0x7721('0x8')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller['getAgents']);router[_0x7721('0x14')]('/',auth[_0x7721('0x9')](),controller['create']);router[_0x7721('0x14')](_0x7721('0x11'),auth[_0x7721('0x9')](),controller[_0x7721('0x15')]);router['post'](_0x7721('0x13'),auth[_0x7721('0x9')](),controller['addAgents']);router['put']('/:id',auth[_0x7721('0x9')](),controller[_0x7721('0x16')]);router[_0x7721('0x17')](_0x7721('0xd'),auth['isAuthenticated'](),controller[_0x7721('0x18')]);router['delete'](_0x7721('0x11'),auth['isAuthenticated'](),controller[_0x7721('0x19')]);router[_0x7721('0x17')](_0x7721('0x13'),auth[_0x7721('0x9')](),controller[_0x7721('0x1a')]);module[_0x7721('0x1b')]=router;
\ No newline at end of file
index f4f1f42..dc1fb14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb03b=['exports','STRING','DATE','moment'];(function(_0x51016f,_0x555ec){var _0x1a57ce=function(_0x1a549c){while(--_0x1a549c){_0x51016f['push'](_0x51016f['shift']());}};_0x1a57ce(++_0x555ec);}(_0xb03b,0xc7));var _0xbb03=function(_0x16cc84,_0x2bf6ee){_0x16cc84=_0x16cc84-0x0;var _0x546dce=_0xb03b[_0x16cc84];return _0x546dce;};'use strict';var moment=require(_0xbb03('0x0'));var Sequelize=require('sequelize');module[_0xbb03('0x1')]={'uniqueid':{'type':Sequelize[_0xbb03('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xbb03('0x3')]},'acceptAt':{'type':Sequelize[_0xbb03('0x3')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xbb03('0x2')]}};
\ No newline at end of file
+var _0x3f38=['STRING','DATE','moment','exports'];(function(_0x5462fa,_0x367b82){var _0x1b79e9=function(_0x474fbb){while(--_0x474fbb){_0x5462fa['push'](_0x5462fa['shift']());}};_0x1b79e9(++_0x367b82);}(_0x3f38,0x19a));var _0x83f3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3f38[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require(_0x83f3('0x0'));var Sequelize=require('sequelize');module[_0x83f3('0x1')]={'uniqueid':{'type':Sequelize[_0x83f3('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0x83f3('0x2')]},'joinAt':{'type':Sequelize[_0x83f3('0x3')]},'leaveAt':{'type':Sequelize[_0x83f3('0x3')]},'acceptAt':{'type':Sequelize[_0x83f3('0x3')]},'exitAt':{'type':Sequelize[_0x83f3('0x3')]},'reason':{'type':Sequelize[_0x83f3('0x2')]}};
\ No newline at end of file
index b42c6a1..1ddea85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0c9=['ChatQueueReport','findAll','rows','catch','show','params','includeAll','include','options','find','create','body','destroy','eml-format','rimraf','moment','bluebird','mustache','path','ejs','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','end','error','name','send','rawAttributes','fieldName','type','map','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter'];(function(_0xc8db6b,_0x320abd){var _0x12cb81=function(_0x417540){while(--_0x417540){_0xc8db6b['push'](_0xc8db6b['shift']());}};_0x12cb81(++_0x320abd);}(_0xd0c9,0xe2));var _0x9d0c=function(_0x32b542,_0x4512fa){_0x32b542=_0x32b542-0x0;var _0x554d54=_0xd0c9[_0x32b542];return _0x554d54;};'use strict';var emlformat=require(_0x9d0c('0x0'));var rimraf=require(_0x9d0c('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x9d0c('0x2'));var BPromise=require(_0x9d0c('0x3'));var Mustache=require(_0x9d0c('0x4'));var util=require('util');var path=require(_0x9d0c('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x9d0c('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9d0c('0x7'));var squel=require(_0x9d0c('0x8'));var crypto=require(_0x9d0c('0x9'));var jsforce=require(_0x9d0c('0xa'));var deskjs=require(_0x9d0c('0xb'));var toCsv=require(_0x9d0c('0xc'));var querystring=require('querystring');var Papa=require(_0x9d0c('0xd'));var Redis=require('ioredis');var authService=require(_0x9d0c('0xe'));var qs=require(_0x9d0c('0xf'));var as=require(_0x9d0c('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x9d0c('0x11'))(_0x9d0c('0x12'));var utils=require(_0x9d0c('0x13'));var config=require(_0x9d0c('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x9d0c('0x15'))['db'];function respondWithStatusCode(_0x575341,_0x191b79){_0x191b79=_0x191b79||0xcc;return function(_0x17e43b){if(_0x17e43b){return _0x575341[_0x9d0c('0x16')](_0x191b79);}return _0x575341[_0x9d0c('0x17')](_0x191b79)['end']();};}function respondWithResult(_0x5b1b42,_0x52ff64){_0x52ff64=_0x52ff64||0xc8;return function(_0x2b7885){if(_0x2b7885){return _0x5b1b42['status'](_0x52ff64)[_0x9d0c('0x18')](_0x2b7885);}};}function respondWithFilteredResult(_0x261be7,_0x2b20ca){return function(_0x275bb0){if(_0x275bb0){var _0x40e4e7=typeof _0x2b20ca[_0x9d0c('0x19')]===_0x9d0c('0x1a')&&typeof _0x2b20ca[_0x9d0c('0x1b')]==='undefined';var _0x4514fd=_0x275bb0[_0x9d0c('0x1c')];var _0x599ddb=_0x40e4e7?0x0:_0x2b20ca[_0x9d0c('0x19')];var _0x182dfb=_0x40e4e7?_0x275bb0[_0x9d0c('0x1c')]:_0x2b20ca['offset']+_0x2b20ca['limit'];var _0x11832a;if(_0x182dfb>=_0x4514fd){_0x182dfb=_0x4514fd;_0x11832a=0xc8;}else{_0x11832a=0xce;}_0x261be7[_0x9d0c('0x17')](_0x11832a);return _0x261be7['set'](_0x9d0c('0x1d'),_0x599ddb+'-'+_0x182dfb+'/'+_0x4514fd)[_0x9d0c('0x18')](_0x275bb0);}return null;};}function patchUpdates(_0xf60863){return function(_0x174ce3){try{jsonpatch[_0x9d0c('0x1e')](_0x174ce3,_0xf60863,!![]);}catch(_0x5b53d9){return BPromise[_0x9d0c('0x1f')](_0x5b53d9);}return _0x174ce3['save']();};}function saveUpdates(_0x1ff3f0,_0x17390f){return function(_0x52049b){if(_0x52049b){return _0x52049b[_0x9d0c('0x20')](_0x1ff3f0)[_0x9d0c('0x21')](function(_0x41d0a8){return _0x41d0a8;});}return null;};}function removeEntity(_0x4ab375,_0x2a1a70){return function(_0x280b22){if(_0x280b22){return _0x280b22['destroy']()[_0x9d0c('0x21')](function(){_0x4ab375[_0x9d0c('0x17')](0xcc)[_0x9d0c('0x22')]();});}};}function handleEntityNotFound(_0x35b60f,_0x472f95){return function(_0xb176f9){if(!_0xb176f9){_0x35b60f[_0x9d0c('0x16')](0x194);}return _0xb176f9;};}function handleError(_0x48b65b,_0x46b647){_0x46b647=_0x46b647||0x1f4;return function(_0x1f35a5){logger[_0x9d0c('0x23')](_0x1f35a5['stack']);if(_0x1f35a5[_0x9d0c('0x24')]){delete _0x1f35a5[_0x9d0c('0x24')];}_0x48b65b[_0x9d0c('0x17')](_0x46b647)[_0x9d0c('0x25')](_0x1f35a5);};}exports['index']=function(_0x12d75f,_0x46955f){var _0x1846f0={},_0x2cbbbc={},_0x4ed782={'count':0x0,'rows':[]};var _0x5bf51b=_['map'](db['ChatQueueReport'][_0x9d0c('0x26')],function(_0x263482){return{'name':_0x263482[_0x9d0c('0x27')],'type':_0x263482[_0x9d0c('0x28')]['key']};});_0x2cbbbc['model']=_[_0x9d0c('0x29')](_0x5bf51b,_0x9d0c('0x24'));_0x2cbbbc[_0x9d0c('0x2a')]=_[_0x9d0c('0x2b')](_0x12d75f[_0x9d0c('0x2a')]);_0x2cbbbc[_0x9d0c('0x2c')]=_['intersection'](_0x2cbbbc[_0x9d0c('0x2d')],_0x2cbbbc[_0x9d0c('0x2a')]);_0x1846f0[_0x9d0c('0x2e')]=_[_0x9d0c('0x2f')](_0x2cbbbc[_0x9d0c('0x2d')],qs[_0x9d0c('0x30')](_0x12d75f['query']['fields']));_0x1846f0['attributes']=_0x1846f0[_0x9d0c('0x2e')][_0x9d0c('0x31')]?_0x1846f0['attributes']:_0x2cbbbc[_0x9d0c('0x2d')];if(!_0x12d75f['query'][_0x9d0c('0x32')]('nolimit')){_0x1846f0['limit']=qs[_0x9d0c('0x1b')](_0x12d75f['query'][_0x9d0c('0x1b')]);_0x1846f0[_0x9d0c('0x19')]=qs['offset'](_0x12d75f[_0x9d0c('0x2a')][_0x9d0c('0x19')]);}_0x1846f0[_0x9d0c('0x33')]=qs['sort'](_0x12d75f[_0x9d0c('0x2a')][_0x9d0c('0x34')]);_0x1846f0[_0x9d0c('0x35')]=qs[_0x9d0c('0x2c')](_[_0x9d0c('0x36')](_0x12d75f[_0x9d0c('0x2a')],_0x2cbbbc[_0x9d0c('0x2c')]),_0x5bf51b);if(_0x12d75f[_0x9d0c('0x2a')]['filter']){_0x1846f0[_0x9d0c('0x35')]=_[_0x9d0c('0x37')](_0x1846f0['where'],{'$or':_[_0x9d0c('0x29')](_0x5bf51b,function(_0x346462){if(_0x346462[_0x9d0c('0x28')]!==_0x9d0c('0x38')){var _0x4935f2={};_0x4935f2[_0x346462[_0x9d0c('0x24')]]={'$like':'%'+_0x12d75f[_0x9d0c('0x2a')][_0x9d0c('0x39')]+'%'};return _0x4935f2;}})});}_0x1846f0=_[_0x9d0c('0x37')]({},_0x1846f0,_0x12d75f['options']);var _0x528517={'where':_0x1846f0[_0x9d0c('0x35')]};return db[_0x9d0c('0x3a')][_0x9d0c('0x1c')](_0x528517)['then'](function(_0x17a5bc){_0x4ed782[_0x9d0c('0x1c')]=_0x17a5bc;if(_0x12d75f[_0x9d0c('0x2a')]['includeAll']){_0x1846f0['include']=[{'all':!![]}];}return db[_0x9d0c('0x3a')][_0x9d0c('0x3b')](_0x1846f0);})[_0x9d0c('0x21')](function(_0x1a28fc){_0x4ed782[_0x9d0c('0x3c')]=_0x1a28fc;return _0x4ed782;})[_0x9d0c('0x21')](respondWithFilteredResult(_0x46955f,_0x1846f0))[_0x9d0c('0x3d')](handleError(_0x46955f,null));};exports[_0x9d0c('0x3e')]=function(_0x20473b,_0x454e01){var _0x3a88af={'raw':!![],'where':{'id':_0x20473b[_0x9d0c('0x3f')]['id']}},_0x3b2554={};_0x3b2554[_0x9d0c('0x2d')]=_[_0x9d0c('0x2b')](db[_0x9d0c('0x3a')][_0x9d0c('0x26')]);_0x3b2554[_0x9d0c('0x2a')]=_['keys'](_0x20473b[_0x9d0c('0x2a')]);_0x3b2554[_0x9d0c('0x2c')]=_[_0x9d0c('0x2f')](_0x3b2554[_0x9d0c('0x2d')],_0x3b2554[_0x9d0c('0x2a')]);_0x3a88af[_0x9d0c('0x2e')]=_['intersection'](_0x3b2554[_0x9d0c('0x2d')],qs['fields'](_0x20473b[_0x9d0c('0x2a')][_0x9d0c('0x30')]));_0x3a88af['attributes']=_0x3a88af[_0x9d0c('0x2e')][_0x9d0c('0x31')]?_0x3a88af[_0x9d0c('0x2e')]:_0x3b2554[_0x9d0c('0x2d')];if(_0x20473b[_0x9d0c('0x2a')][_0x9d0c('0x40')]){_0x3a88af[_0x9d0c('0x41')]=[{'all':!![]}];}_0x3a88af=_[_0x9d0c('0x37')]({},_0x3a88af,_0x20473b[_0x9d0c('0x42')]);return db[_0x9d0c('0x3a')][_0x9d0c('0x43')](_0x3a88af)[_0x9d0c('0x21')](handleEntityNotFound(_0x454e01,null))[_0x9d0c('0x21')](respondWithResult(_0x454e01,null))[_0x9d0c('0x3d')](handleError(_0x454e01,null));};exports[_0x9d0c('0x44')]=function(_0x575b66,_0x4ea9c6){return db[_0x9d0c('0x3a')][_0x9d0c('0x44')](_0x575b66[_0x9d0c('0x45')],{})[_0x9d0c('0x21')](respondWithResult(_0x4ea9c6,0xc9))['catch'](handleError(_0x4ea9c6,null));};exports[_0x9d0c('0x20')]=function(_0x6b2dcf,_0x38a61d){if(_0x6b2dcf[_0x9d0c('0x45')]['id']){delete _0x6b2dcf['body']['id'];}return db[_0x9d0c('0x3a')][_0x9d0c('0x43')]({'where':{'id':_0x6b2dcf[_0x9d0c('0x3f')]['id']}})[_0x9d0c('0x21')](handleEntityNotFound(_0x38a61d,null))[_0x9d0c('0x21')](saveUpdates(_0x6b2dcf[_0x9d0c('0x45')],null))[_0x9d0c('0x21')](respondWithResult(_0x38a61d,null))[_0x9d0c('0x3d')](handleError(_0x38a61d,null));};exports[_0x9d0c('0x46')]=function(_0xb0c06,_0xbabbd1){return db[_0x9d0c('0x3a')][_0x9d0c('0x43')]({'where':{'id':_0xb0c06[_0x9d0c('0x3f')]['id']}})['then'](handleEntityNotFound(_0xbabbd1,null))['then'](removeEntity(_0xbabbd1,null))['catch'](handleError(_0xbabbd1,null));};exports['describe']=function(_0x838eff,_0x5afa46){return db[_0x9d0c('0x3a')]['describe']()['then'](respondWithResult(_0x5afa46,null))[_0x9d0c('0x3d')](handleError(_0x5afa46,null));};
\ No newline at end of file
+var _0x9f7a=['end','offset','undefined','limit','count','set','Content-Range','json','update','then','error','name','send','map','ChatQueueReport','type','key','query','intersection','model','attributes','fields','order','sort','filters','pick','filter','where','merge','options','include','findAll','rows','catch','show','params','keys','rawAttributes','find','create','body','destroy','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','path','sox','fs-extra','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x26c278,_0x176ce3){var _0x4deae7=function(_0x4256d0){while(--_0x4256d0){_0x26c278['push'](_0x26c278['shift']());}};_0x4deae7(++_0x176ce3);}(_0x9f7a,0xf1));var _0xa9f7=function(_0x17928f,_0x4ad33f){_0x17928f=_0x17928f-0x0;var _0x500b63=_0x9f7a[_0x17928f];return _0x500b63;};'use strict';var emlformat=require(_0xa9f7('0x0'));var rimraf=require(_0xa9f7('0x1'));var zipdir=require(_0xa9f7('0x2'));var jsonpatch=require(_0xa9f7('0x3'));var rp=require('request-promise');var moment=require(_0xa9f7('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0xa9f7('0x5'));var sox=require(_0xa9f7('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa9f7('0x7'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xa9f7('0x8'));var deskjs=require('desk.js');var toCsv=require(_0xa9f7('0x9'));var querystring=require(_0xa9f7('0xa'));var Papa=require(_0xa9f7('0xb'));var Redis=require('ioredis');var authService=require(_0xa9f7('0xc'));var qs=require(_0xa9f7('0xd'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa9f7('0xe'));var logger=require(_0xa9f7('0xf'))(_0xa9f7('0x10'));var utils=require(_0xa9f7('0x11'));var config=require(_0xa9f7('0x12'));var licenseUtil=require(_0xa9f7('0x13'));var db=require(_0xa9f7('0x14'))['db'];function respondWithStatusCode(_0x52e4d4,_0x532485){_0x532485=_0x532485||0xcc;return function(_0x5462c6){if(_0x5462c6){return _0x52e4d4[_0xa9f7('0x15')](_0x532485);}return _0x52e4d4[_0xa9f7('0x16')](_0x532485)[_0xa9f7('0x17')]();};}function respondWithResult(_0x4fb93c,_0x5f097c){_0x5f097c=_0x5f097c||0xc8;return function(_0xe56a20){if(_0xe56a20){return _0x4fb93c['status'](_0x5f097c)['json'](_0xe56a20);}};}function respondWithFilteredResult(_0x188f8a,_0x3987a5){return function(_0x30b935){if(_0x30b935){var _0x4cc9f3=typeof _0x3987a5[_0xa9f7('0x18')]===_0xa9f7('0x19')&&typeof _0x3987a5[_0xa9f7('0x1a')]==='undefined';var _0x310009=_0x30b935[_0xa9f7('0x1b')];var _0x230904=_0x4cc9f3?0x0:_0x3987a5[_0xa9f7('0x18')];var _0x8da225=_0x4cc9f3?_0x30b935[_0xa9f7('0x1b')]:_0x3987a5[_0xa9f7('0x18')]+_0x3987a5[_0xa9f7('0x1a')];var _0x2d0a7b;if(_0x8da225>=_0x310009){_0x8da225=_0x310009;_0x2d0a7b=0xc8;}else{_0x2d0a7b=0xce;}_0x188f8a['status'](_0x2d0a7b);return _0x188f8a[_0xa9f7('0x1c')](_0xa9f7('0x1d'),_0x230904+'-'+_0x8da225+'/'+_0x310009)[_0xa9f7('0x1e')](_0x30b935);}return null;};}function patchUpdates(_0x28590b){return function(_0x402c6d){try{jsonpatch['apply'](_0x402c6d,_0x28590b,!![]);}catch(_0x4a27de){return BPromise['reject'](_0x4a27de);}return _0x402c6d['save']();};}function saveUpdates(_0x4edaf9,_0x4b7202){return function(_0x5c9e4f){if(_0x5c9e4f){return _0x5c9e4f[_0xa9f7('0x1f')](_0x4edaf9)['then'](function(_0x5a62ba){return _0x5a62ba;});}return null;};}function removeEntity(_0x3fa542,_0x530992){return function(_0x502562){if(_0x502562){return _0x502562['destroy']()[_0xa9f7('0x20')](function(){_0x3fa542[_0xa9f7('0x16')](0xcc)[_0xa9f7('0x17')]();});}};}function handleEntityNotFound(_0x537d55,_0x131872){return function(_0x112446){if(!_0x112446){_0x537d55[_0xa9f7('0x15')](0x194);}return _0x112446;};}function handleError(_0x5555f6,_0x44a86d){_0x44a86d=_0x44a86d||0x1f4;return function(_0x52bb0a){logger[_0xa9f7('0x21')](_0x52bb0a['stack']);if(_0x52bb0a[_0xa9f7('0x22')]){delete _0x52bb0a[_0xa9f7('0x22')];}_0x5555f6[_0xa9f7('0x16')](_0x44a86d)[_0xa9f7('0x23')](_0x52bb0a);};}exports['index']=function(_0x41530a,_0x249604){var _0x16437e={},_0x312084={},_0xc9684a={'count':0x0,'rows':[]};var _0x471c3c=_[_0xa9f7('0x24')](db[_0xa9f7('0x25')]['rawAttributes'],function(_0x540f78){return{'name':_0x540f78['fieldName'],'type':_0x540f78[_0xa9f7('0x26')][_0xa9f7('0x27')]};});_0x312084['model']=_[_0xa9f7('0x24')](_0x471c3c,'name');_0x312084['query']=_['keys'](_0x41530a[_0xa9f7('0x28')]);_0x312084['filters']=_[_0xa9f7('0x29')](_0x312084[_0xa9f7('0x2a')],_0x312084[_0xa9f7('0x28')]);_0x16437e[_0xa9f7('0x2b')]=_[_0xa9f7('0x29')](_0x312084['model'],qs[_0xa9f7('0x2c')](_0x41530a[_0xa9f7('0x28')]['fields']));_0x16437e[_0xa9f7('0x2b')]=_0x16437e[_0xa9f7('0x2b')]['length']?_0x16437e[_0xa9f7('0x2b')]:_0x312084[_0xa9f7('0x2a')];if(!_0x41530a[_0xa9f7('0x28')]['hasOwnProperty']('nolimit')){_0x16437e[_0xa9f7('0x1a')]=qs[_0xa9f7('0x1a')](_0x41530a[_0xa9f7('0x28')][_0xa9f7('0x1a')]);_0x16437e[_0xa9f7('0x18')]=qs['offset'](_0x41530a[_0xa9f7('0x28')][_0xa9f7('0x18')]);}_0x16437e[_0xa9f7('0x2d')]=qs['sort'](_0x41530a['query'][_0xa9f7('0x2e')]);_0x16437e['where']=qs[_0xa9f7('0x2f')](_[_0xa9f7('0x30')](_0x41530a[_0xa9f7('0x28')],_0x312084[_0xa9f7('0x2f')]),_0x471c3c);if(_0x41530a['query'][_0xa9f7('0x31')]){_0x16437e[_0xa9f7('0x32')]=_[_0xa9f7('0x33')](_0x16437e[_0xa9f7('0x32')],{'$or':_[_0xa9f7('0x24')](_0x471c3c,function(_0x318f96){if(_0x318f96[_0xa9f7('0x26')]!=='VIRTUAL'){var _0xe6d3e3={};_0xe6d3e3[_0x318f96[_0xa9f7('0x22')]]={'$like':'%'+_0x41530a['query'][_0xa9f7('0x31')]+'%'};return _0xe6d3e3;}})});}_0x16437e=_[_0xa9f7('0x33')]({},_0x16437e,_0x41530a[_0xa9f7('0x34')]);var _0x419433={'where':_0x16437e[_0xa9f7('0x32')]};return db[_0xa9f7('0x25')][_0xa9f7('0x1b')](_0x419433)['then'](function(_0x402808){_0xc9684a[_0xa9f7('0x1b')]=_0x402808;if(_0x41530a[_0xa9f7('0x28')]['includeAll']){_0x16437e[_0xa9f7('0x35')]=[{'all':!![]}];}return db['ChatQueueReport'][_0xa9f7('0x36')](_0x16437e);})[_0xa9f7('0x20')](function(_0x5eb5d2){_0xc9684a[_0xa9f7('0x37')]=_0x5eb5d2;return _0xc9684a;})[_0xa9f7('0x20')](respondWithFilteredResult(_0x249604,_0x16437e))[_0xa9f7('0x38')](handleError(_0x249604,null));};exports[_0xa9f7('0x39')]=function(_0xd56610,_0x492d3f){var _0x3fb0d6={'raw':!![],'where':{'id':_0xd56610[_0xa9f7('0x3a')]['id']}},_0x2d9e79={};_0x2d9e79[_0xa9f7('0x2a')]=_[_0xa9f7('0x3b')](db[_0xa9f7('0x25')][_0xa9f7('0x3c')]);_0x2d9e79[_0xa9f7('0x28')]=_[_0xa9f7('0x3b')](_0xd56610[_0xa9f7('0x28')]);_0x2d9e79[_0xa9f7('0x2f')]=_[_0xa9f7('0x29')](_0x2d9e79['model'],_0x2d9e79['query']);_0x3fb0d6[_0xa9f7('0x2b')]=_[_0xa9f7('0x29')](_0x2d9e79[_0xa9f7('0x2a')],qs[_0xa9f7('0x2c')](_0xd56610[_0xa9f7('0x28')][_0xa9f7('0x2c')]));_0x3fb0d6[_0xa9f7('0x2b')]=_0x3fb0d6[_0xa9f7('0x2b')]['length']?_0x3fb0d6[_0xa9f7('0x2b')]:_0x2d9e79[_0xa9f7('0x2a')];if(_0xd56610[_0xa9f7('0x28')]['includeAll']){_0x3fb0d6['include']=[{'all':!![]}];}_0x3fb0d6=_[_0xa9f7('0x33')]({},_0x3fb0d6,_0xd56610['options']);return db[_0xa9f7('0x25')][_0xa9f7('0x3d')](_0x3fb0d6)[_0xa9f7('0x20')](handleEntityNotFound(_0x492d3f,null))[_0xa9f7('0x20')](respondWithResult(_0x492d3f,null))['catch'](handleError(_0x492d3f,null));};exports[_0xa9f7('0x3e')]=function(_0x4d9cd2,_0x30e7b2){return db[_0xa9f7('0x25')][_0xa9f7('0x3e')](_0x4d9cd2[_0xa9f7('0x3f')],{})[_0xa9f7('0x20')](respondWithResult(_0x30e7b2,0xc9))[_0xa9f7('0x38')](handleError(_0x30e7b2,null));};exports[_0xa9f7('0x1f')]=function(_0x232371,_0x11e37d){if(_0x232371['body']['id']){delete _0x232371[_0xa9f7('0x3f')]['id'];}return db[_0xa9f7('0x25')][_0xa9f7('0x3d')]({'where':{'id':_0x232371['params']['id']}})[_0xa9f7('0x20')](handleEntityNotFound(_0x11e37d,null))[_0xa9f7('0x20')](saveUpdates(_0x232371[_0xa9f7('0x3f')],null))[_0xa9f7('0x20')](respondWithResult(_0x11e37d,null))[_0xa9f7('0x38')](handleError(_0x11e37d,null));};exports[_0xa9f7('0x40')]=function(_0xcb22ff,_0x2afcf5){return db[_0xa9f7('0x25')][_0xa9f7('0x3d')]({'where':{'id':_0xcb22ff[_0xa9f7('0x3a')]['id']}})['then'](handleEntityNotFound(_0x2afcf5,null))[_0xa9f7('0x20')](removeEntity(_0x2afcf5,null))[_0xa9f7('0x38')](handleError(_0x2afcf5,null));};exports[_0xa9f7('0x41')]=function(_0x56b86e,_0x121394){return db[_0xa9f7('0x25')][_0xa9f7('0x41')]()[_0xa9f7('0x20')](respondWithResult(_0x121394,null))[_0xa9f7('0x38')](handleError(_0x121394,null));};
\ No newline at end of file
index 0ca55f8..ae4bbe4 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(_0x478716,_0x507574){var _0x1aaf71=function(_0x5ba1aa){while(--_0x5ba1aa){_0x478716['push'](_0x478716['shift']());}};_0x1aaf71(++_0x507574);}(_0xb7e7,0x121));var _0x7b7e=function(_0x4ea69d,_0x290f53){_0x4ea69d=_0x4ea69d-0x0;var _0x5318e0=_0xb7e7[_0x4ea69d];return _0x5318e0;};'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 _0x0713=['../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./chatQueueReport.attributes','exports','define','ChatQueueReport','report_chat_queue','uniqueid'];(function(_0x4db46b,_0xadcb1a){var _0x565be8=function(_0x5d2e50){while(--_0x5d2e50){_0x4db46b['push'](_0x4db46b['shift']());}};_0x565be8(++_0xadcb1a);}(_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 logger=require(_0x3071('0x0'))(_0x3071('0x1'));var moment=require(_0x3071('0x2'));var BPromise=require(_0x3071('0x3'));var rp=require(_0x3071('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x3071('0x5'));var config=require(_0x3071('0x6'));var attributes=require(_0x3071('0x7'));module[_0x3071('0x8')]=function(_0xabd7b6,_0x41cf76){return _0xabd7b6[_0x3071('0x9')](_0x3071('0xa'),attributes,{'tableName':_0x3071('0xb'),'paranoid':![],'indexes':[{'name':_0x3071('0xc'),'fields':[_0x3071('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 4f6bb5b..622d00f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9b0=['then','info','ChatQueueReport,\x20%s,\x20%s','ChatQueueReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','catch','CreateChatQueueReport','ChatQueueReport','create','body','options','raw','debug','stringify','update','where','attributes','UpdateChatQueueReport','moment','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','http','request'];(function(_0x38b589,_0x4b3155){var _0x374c04=function(_0x42fbc0){while(--_0x42fbc0){_0x38b589['push'](_0x38b589['shift']());}};_0x374c04(++_0x4b3155);}(_0xe9b0,0x123));var _0x0e9b=function(_0x16bfae,_0x36ed25){_0x16bfae=_0x16bfae-0x0;var _0x3870f5=_0xe9b0[_0x16bfae];return _0x3870f5;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x0e9b('0x0'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0e9b('0x1'));var db=require(_0x0e9b('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0x0e9b('0x3'))(_0x0e9b('0x4'));var config=require(_0x0e9b('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x0e9b('0x6')][_0x0e9b('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1665f9,_0x56abc6,_0x385883){return new BPromise(function(_0x38535b,_0x2337fb){return client[_0x0e9b('0x8')](_0x1665f9,_0x385883)[_0x0e9b('0x9')](function(_0x1a122b){logger[_0x0e9b('0xa')](_0x0e9b('0xb'),_0x56abc6,'request\x20sent');logger['debug'](_0x0e9b('0xc'),_0x56abc6,_0x0e9b('0xd'),JSON['stringify'](_0x1a122b));if(_0x1a122b[_0x0e9b('0xe')]){if(_0x1a122b[_0x0e9b('0xe')][_0x0e9b('0xf')]===0x1f4){logger[_0x0e9b('0xe')]('ChatQueueReport,\x20%s,\x20%s',_0x56abc6,_0x1a122b[_0x0e9b('0xe')][_0x0e9b('0x10')]);return _0x2337fb(_0x1a122b['error'][_0x0e9b('0x10')]);}logger[_0x0e9b('0xe')](_0x0e9b('0xb'),_0x56abc6,_0x1a122b[_0x0e9b('0xe')][_0x0e9b('0x10')]);return _0x38535b(_0x1a122b[_0x0e9b('0xe')][_0x0e9b('0x10')]);}else{logger[_0x0e9b('0xa')](_0x0e9b('0xb'),_0x56abc6,'request\x20sent');_0x38535b(_0x1a122b['result'][_0x0e9b('0x10')]);}})[_0x0e9b('0x11')](function(_0x493859){logger[_0x0e9b('0xe')]('ChatQueueReport,\x20%s,\x20%s',_0x56abc6,_0x493859);_0x2337fb(_0x493859);});});}exports[_0x0e9b('0x12')]=function(_0x48a24e){var _0x373c21=this;return new Promise(function(_0xa1aa5c,_0x343a01){return db[_0x0e9b('0x13')][_0x0e9b('0x14')](_0x48a24e[_0x0e9b('0x15')],{'raw':_0x48a24e[_0x0e9b('0x16')]?_0x48a24e[_0x0e9b('0x16')][_0x0e9b('0x17')]===undefined?!![]:![]:!![]})[_0x0e9b('0x9')](function(_0x46b1e5){logger['info'](_0x0e9b('0x12'),_0x48a24e);logger[_0x0e9b('0x18')]('CreateChatQueueReport',_0x48a24e,JSON[_0x0e9b('0x19')](_0x46b1e5));_0xa1aa5c(_0x46b1e5);})[_0x0e9b('0x11')](function(_0x5c421b){logger[_0x0e9b('0xe')](_0x0e9b('0x12'),_0x5c421b[_0x0e9b('0x10')],_0x48a24e);_0x343a01(_0x373c21[_0x0e9b('0xe')](0x1f4,_0x5c421b[_0x0e9b('0x10')]));});});};exports['UpdateChatQueueReport']=function(_0x4125bd){var _0x44cc2f=this;return new Promise(function(_0x43c07c,_0x4c02db){return db[_0x0e9b('0x13')][_0x0e9b('0x1a')](_0x4125bd[_0x0e9b('0x15')],{'raw':_0x4125bd[_0x0e9b('0x16')]?_0x4125bd[_0x0e9b('0x16')][_0x0e9b('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4125bd[_0x0e9b('0x16')]?_0x4125bd[_0x0e9b('0x16')][_0x0e9b('0x1b')]||null:null,'attributes':_0x4125bd[_0x0e9b('0x16')]?_0x4125bd[_0x0e9b('0x16')][_0x0e9b('0x1c')]||null:null,'limit':_0x4125bd[_0x0e9b('0x16')]?_0x4125bd[_0x0e9b('0x16')]['limit']||null:null})['then'](function(_0x28b372){logger[_0x0e9b('0xa')](_0x0e9b('0x1d'),_0x4125bd);logger[_0x0e9b('0x18')](_0x0e9b('0x1d'),_0x4125bd,JSON[_0x0e9b('0x19')](_0x28b372));_0x43c07c(_0x28b372);})['catch'](function(_0x6a0fe1){logger[_0x0e9b('0xe')]('UpdateChatQueueReport',_0x6a0fe1[_0x0e9b('0x10')],_0x4125bd);_0x4c02db(_0x44cc2f['error'](0x1f4,_0x6a0fe1[_0x0e9b('0x10')]));});});};
\ No newline at end of file
+var _0x1983=['lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','request\x20sent','debug','ChatQueueReport,\x20%s,\x20%s,\x20%s','stringify','code','error','ChatQueueReport,\x20%s,\x20%s','message','result','CreateChatQueueReport','ChatQueueReport','create','options','raw','info','catch','UpdateChatQueueReport','body','limit'];(function(_0x1c7d76,_0x60f2cc){var _0x34cb61=function(_0x38d680){while(--_0x38d680){_0x1c7d76['push'](_0x1c7d76['shift']());}};_0x34cb61(++_0x60f2cc);}(_0x1983,0x1f0));var _0x3198=function(_0x21549c,_0x6d64d1){_0x21549c=_0x21549c-0x0;var _0x426cbd=_0x1983[_0x21549c];return _0x426cbd;};'use strict';var _=require(_0x3198('0x0'));var util=require('util');var moment=require(_0x3198('0x1'));var BPromise=require('bluebird');var rs=require(_0x3198('0x2'));var fs=require('fs');var Redis=require(_0x3198('0x3'));var db=require(_0x3198('0x4'))['db'];var utils=require(_0x3198('0x5'));var logger=require(_0x3198('0x6'))(_0x3198('0x7'));var config=require('../../config/environment');var jayson=require(_0x3198('0x8'));var client=jayson[_0x3198('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x25745f,_0x198c76,_0x5d9980){return new BPromise(function(_0x20510d,_0x452215){return client[_0x3198('0xa')](_0x25745f,_0x5d9980)[_0x3198('0xb')](function(_0x8ca483){logger['info']('ChatQueueReport,\x20%s,\x20%s',_0x198c76,_0x3198('0xc'));logger[_0x3198('0xd')](_0x3198('0xe'),_0x198c76,_0x3198('0xc'),JSON[_0x3198('0xf')](_0x8ca483));if(_0x8ca483['error']){if(_0x8ca483['error'][_0x3198('0x10')]===0x1f4){logger[_0x3198('0x11')](_0x3198('0x12'),_0x198c76,_0x8ca483[_0x3198('0x11')]['message']);return _0x452215(_0x8ca483[_0x3198('0x11')][_0x3198('0x13')]);}logger['error'](_0x3198('0x12'),_0x198c76,_0x8ca483[_0x3198('0x11')]['message']);return _0x20510d(_0x8ca483[_0x3198('0x11')]['message']);}else{logger['info'](_0x3198('0x12'),_0x198c76,_0x3198('0xc'));_0x20510d(_0x8ca483[_0x3198('0x14')][_0x3198('0x13')]);}})['catch'](function(_0x3861c2){logger[_0x3198('0x11')](_0x3198('0x12'),_0x198c76,_0x3861c2);_0x452215(_0x3861c2);});});}exports[_0x3198('0x15')]=function(_0x2c715f){var _0x3f74f7=this;return new Promise(function(_0x35bde3,_0x2b373d){return db[_0x3198('0x16')][_0x3198('0x17')](_0x2c715f['body'],{'raw':_0x2c715f[_0x3198('0x18')]?_0x2c715f[_0x3198('0x18')][_0x3198('0x19')]===undefined?!![]:![]:!![]})[_0x3198('0xb')](function(_0x4b3de6){logger[_0x3198('0x1a')](_0x3198('0x15'),_0x2c715f);logger['debug'](_0x3198('0x15'),_0x2c715f,JSON[_0x3198('0xf')](_0x4b3de6));_0x35bde3(_0x4b3de6);})[_0x3198('0x1b')](function(_0x5bb3ad){logger['error'](_0x3198('0x15'),_0x5bb3ad[_0x3198('0x13')],_0x2c715f);_0x2b373d(_0x3f74f7[_0x3198('0x11')](0x1f4,_0x5bb3ad['message']));});});};exports[_0x3198('0x1c')]=function(_0xe6bddd){var _0x4ef811=this;return new Promise(function(_0x1df5cf,_0x15c53d){return db[_0x3198('0x16')]['update'](_0xe6bddd[_0x3198('0x1d')],{'raw':_0xe6bddd[_0x3198('0x18')]?_0xe6bddd[_0x3198('0x18')][_0x3198('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xe6bddd['options']?_0xe6bddd[_0x3198('0x18')]['where']||null:null,'attributes':_0xe6bddd[_0x3198('0x18')]?_0xe6bddd[_0x3198('0x18')]['attributes']||null:null,'limit':_0xe6bddd[_0x3198('0x18')]?_0xe6bddd[_0x3198('0x18')][_0x3198('0x1e')]||null:null})['then'](function(_0x3269e2){logger['info'](_0x3198('0x1c'),_0xe6bddd);logger[_0x3198('0xd')](_0x3198('0x1c'),_0xe6bddd,JSON[_0x3198('0xf')](_0x3269e2));_0x1df5cf(_0x3269e2);})[_0x3198('0x1b')](function(_0x9ce88c){logger[_0x3198('0x11')](_0x3198('0x1c'),_0x9ce88c[_0x3198('0x13')],_0xe6bddd);_0x15c53d(_0x4ef811[_0x3198('0x11')](0x1f4,_0x9ce88c[_0x3198('0x13')]));});});};
\ No newline at end of file
index a2ee1ee..fdabbd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cf4=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./chatQueueReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','create','put'];(function(_0x16629d,_0x492375){var _0x56ccee=function(_0xa982b7){while(--_0xa982b7){_0x16629d['push'](_0x16629d['shift']());}};_0x56ccee(++_0x492375);}(_0x4cf4,0x13c));var _0x44cf=function(_0x1574b2,_0x1ae255){_0x1574b2=_0x1574b2-0x0;var _0x4c94bf=_0x4cf4[_0x1574b2];return _0x4c94bf;};'use strict';var multer=require(_0x44cf('0x0'));var util=require(_0x44cf('0x1'));var path=require(_0x44cf('0x2'));var timeout=require(_0x44cf('0x3'));var express=require(_0x44cf('0x4'));var router=express[_0x44cf('0x5')]();var fs_extra=require(_0x44cf('0x6'));var auth=require(_0x44cf('0x7'));var interaction=require(_0x44cf('0x8'));var config=require('../../config/environment');var controller=require(_0x44cf('0x9'));router['get']('/',auth[_0x44cf('0xa')](),controller[_0x44cf('0xb')]);router[_0x44cf('0xc')](_0x44cf('0xd'),auth[_0x44cf('0xa')](),controller[_0x44cf('0xe')]);router[_0x44cf('0xc')](_0x44cf('0xf'),auth[_0x44cf('0xa')](),controller[_0x44cf('0x10')]);router[_0x44cf('0x11')]('/',auth[_0x44cf('0xa')](),controller[_0x44cf('0x12')]);router[_0x44cf('0x13')]('/:id',auth[_0x44cf('0xa')](),controller[_0x44cf('0x14')]);router[_0x44cf('0x15')]('/:id',auth[_0x44cf('0xa')](),controller[_0x44cf('0x16')]);module[_0x44cf('0x17')]=router;
\ No newline at end of file
+var _0x89f3=['destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatQueueReport.controller','get','isAuthenticated','/describe','create','put','/:id','update','delete'];(function(_0x5a486d,_0x41974e){var _0x54712f=function(_0x411bb2){while(--_0x411bb2){_0x5a486d['push'](_0x5a486d['shift']());}};_0x54712f(++_0x41974e);}(_0x89f3,0x66));var _0x389f=function(_0x5d04c1,_0x22efbf){_0x5d04c1=_0x5d04c1-0x0;var _0x1c222=_0x89f3[_0x5d04c1];return _0x1c222;};'use strict';var multer=require(_0x389f('0x0'));var util=require(_0x389f('0x1'));var path=require(_0x389f('0x2'));var timeout=require(_0x389f('0x3'));var express=require('express');var router=express[_0x389f('0x4')]();var fs_extra=require(_0x389f('0x5'));var auth=require(_0x389f('0x6'));var interaction=require(_0x389f('0x7'));var config=require(_0x389f('0x8'));var controller=require(_0x389f('0x9'));router[_0x389f('0xa')]('/',auth[_0x389f('0xb')](),controller['index']);router[_0x389f('0xa')](_0x389f('0xc'),auth[_0x389f('0xb')](),controller['describe']);router[_0x389f('0xa')]('/:id',auth[_0x389f('0xb')](),controller['show']);router['post']('/',auth[_0x389f('0xb')](),controller[_0x389f('0xd')]);router[_0x389f('0xe')](_0x389f('0xf'),auth[_0x389f('0xb')](),controller[_0x389f('0x10')]);router[_0x389f('0x11')](_0x389f('0xf'),auth[_0x389f('0xb')](),controller[_0x389f('0x12')]);module[_0x389f('0x13')]=router;
\ No newline at end of file
index 096ac77..598e2d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00bb=['moment','sequelize','exports','ENUM','agent','queue','DATE','NOW'];(function(_0x2f1ead,_0x1807cf){var _0x18f7bd=function(_0x1a725a){while(--_0x1a725a){_0x2f1ead['push'](_0x2f1ead['shift']());}};_0x18f7bd(++_0x1807cf);}(_0x00bb,0x1d8));var _0xb00b=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0x00bb[_0x37bd26];return _0xe83dc4;};'use strict';var moment=require(_0xb00b('0x0'));var Sequelize=require(_0xb00b('0x1'));module[_0xb00b('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xb00b('0x3')]('account',_0xb00b('0x4'),_0xb00b('0x5')),'allowNull':![],'defaultValue':'queue'},'transferredAt':{'type':Sequelize[_0xb00b('0x6')],'allowNull':![],'defaultValue':Sequelize[_0xb00b('0x7')]}};
\ No newline at end of file
+var _0xb43b=['DATE','NOW','moment','sequelize','STRING','ENUM','account','queue'];(function(_0x4bb145,_0x3e7d33){var _0x4db596=function(_0x144489){while(--_0x144489){_0x4bb145['push'](_0x4bb145['shift']());}};_0x4db596(++_0x3e7d33);}(_0xb43b,0x1b2));var _0xbb43=function(_0x24964d,_0x565865){_0x24964d=_0x24964d-0x0;var _0x3c66d6=_0xb43b[_0x24964d];return _0x3c66d6;};'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
index e05fa91..620f591 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11a7=['hasOwnProperty','nolimit','order','sort','pick','filters','where','merge','VIRTUAL','filter','options','includeAll','include','rows','catch','show','params','rawAttributes','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','end','error','name','send','map','ChatTransferReport','fieldName','type','key','model','query','keys','intersection','attributes','fields','length'];(function(_0x218479,_0x4fb190){var _0x3b67a0=function(_0x3ee034){while(--_0x3ee034){_0x218479['push'](_0x218479['shift']());}};_0x3b67a0(++_0x4fb190);}(_0x11a7,0x1d2));var _0x711a=function(_0x37ded3,_0x371ebb){_0x37ded3=_0x37ded3-0x0;var _0x51e49e=_0x11a7[_0x37ded3];return _0x51e49e;};'use strict';var emlformat=require(_0x711a('0x0'));var rimraf=require(_0x711a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x711a('0x2'));var rp=require(_0x711a('0x3'));var moment=require('moment');var BPromise=require(_0x711a('0x4'));var Mustache=require('mustache');var util=require(_0x711a('0x5'));var path=require('path');var sox=require('sox');var csv=require(_0x711a('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x711a('0x7'));var _=require(_0x711a('0x8'));var squel=require(_0x711a('0x9'));var crypto=require(_0x711a('0xa'));var jsforce=require(_0x711a('0xb'));var deskjs=require(_0x711a('0xc'));var toCsv=require(_0x711a('0x6'));var querystring=require(_0x711a('0xd'));var Papa=require(_0x711a('0xe'));var Redis=require(_0x711a('0xf'));var authService=require(_0x711a('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x711a('0x11'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x711a('0x12'));var licenseUtil=require(_0x711a('0x13'));var db=require(_0x711a('0x14'))['db'];function respondWithStatusCode(_0xe8b348,_0x2236cf){_0x2236cf=_0x2236cf||0xcc;return function(_0x163553){if(_0x163553){return _0xe8b348[_0x711a('0x15')](_0x2236cf);}return _0xe8b348[_0x711a('0x16')](_0x2236cf)['end']();};}function respondWithResult(_0x298d22,_0x1a3a68){_0x1a3a68=_0x1a3a68||0xc8;return function(_0x4aa763){if(_0x4aa763){return _0x298d22['status'](_0x1a3a68)[_0x711a('0x17')](_0x4aa763);}};}function respondWithFilteredResult(_0x34866d,_0x703abb){return function(_0x20c56f){if(_0x20c56f){var _0x114103=typeof _0x703abb['offset']==='undefined'&&typeof _0x703abb[_0x711a('0x18')]===_0x711a('0x19');var _0x185bab=_0x20c56f[_0x711a('0x1a')];var _0x127e0d=_0x114103?0x0:_0x703abb['offset'];var _0x54d0d8=_0x114103?_0x20c56f['count']:_0x703abb[_0x711a('0x1b')]+_0x703abb[_0x711a('0x18')];var _0x59b66c;if(_0x54d0d8>=_0x185bab){_0x54d0d8=_0x185bab;_0x59b66c=0xc8;}else{_0x59b66c=0xce;}_0x34866d[_0x711a('0x16')](_0x59b66c);return _0x34866d[_0x711a('0x1c')](_0x711a('0x1d'),_0x127e0d+'-'+_0x54d0d8+'/'+_0x185bab)[_0x711a('0x17')](_0x20c56f);}return null;};}function patchUpdates(_0x4f1dbf){return function(_0x5cc873){try{jsonpatch[_0x711a('0x1e')](_0x5cc873,_0x4f1dbf,!![]);}catch(_0x2eca9b){return BPromise[_0x711a('0x1f')](_0x2eca9b);}return _0x5cc873[_0x711a('0x20')]();};}function saveUpdates(_0xf69f2a,_0x17faf2){return function(_0x550194){if(_0x550194){return _0x550194[_0x711a('0x21')](_0xf69f2a)[_0x711a('0x22')](function(_0x44129e){return _0x44129e;});}return null;};}function removeEntity(_0x5d4a03,_0x3dfa4f){return function(_0x3a92db){if(_0x3a92db){return _0x3a92db[_0x711a('0x23')]()['then'](function(){_0x5d4a03['status'](0xcc)[_0x711a('0x24')]();});}};}function handleEntityNotFound(_0x2585c7,_0x2b2ad1){return function(_0x2812f6){if(!_0x2812f6){_0x2585c7[_0x711a('0x15')](0x194);}return _0x2812f6;};}function handleError(_0x5e1e25,_0x5f4f88){_0x5f4f88=_0x5f4f88||0x1f4;return function(_0xc4ec9e){logger[_0x711a('0x25')](_0xc4ec9e['stack']);if(_0xc4ec9e[_0x711a('0x26')]){delete _0xc4ec9e[_0x711a('0x26')];}_0x5e1e25[_0x711a('0x16')](_0x5f4f88)[_0x711a('0x27')](_0xc4ec9e);};}exports['index']=function(_0x524510,_0x3dffbb){var _0xb7bae8={},_0x19bdda={},_0x484ba8={'count':0x0,'rows':[]};var _0x7de8dd=_[_0x711a('0x28')](db[_0x711a('0x29')]['rawAttributes'],function(_0x3e897c){return{'name':_0x3e897c[_0x711a('0x2a')],'type':_0x3e897c[_0x711a('0x2b')][_0x711a('0x2c')]};});_0x19bdda[_0x711a('0x2d')]=_[_0x711a('0x28')](_0x7de8dd,_0x711a('0x26'));_0x19bdda[_0x711a('0x2e')]=_[_0x711a('0x2f')](_0x524510[_0x711a('0x2e')]);_0x19bdda['filters']=_[_0x711a('0x30')](_0x19bdda[_0x711a('0x2d')],_0x19bdda['query']);_0xb7bae8[_0x711a('0x31')]=_[_0x711a('0x30')](_0x19bdda[_0x711a('0x2d')],qs[_0x711a('0x32')](_0x524510[_0x711a('0x2e')][_0x711a('0x32')]));_0xb7bae8['attributes']=_0xb7bae8[_0x711a('0x31')][_0x711a('0x33')]?_0xb7bae8['attributes']:_0x19bdda[_0x711a('0x2d')];if(!_0x524510[_0x711a('0x2e')][_0x711a('0x34')](_0x711a('0x35'))){_0xb7bae8[_0x711a('0x18')]=qs['limit'](_0x524510[_0x711a('0x2e')][_0x711a('0x18')]);_0xb7bae8[_0x711a('0x1b')]=qs[_0x711a('0x1b')](_0x524510['query']['offset']);}_0xb7bae8[_0x711a('0x36')]=qs[_0x711a('0x37')](_0x524510[_0x711a('0x2e')][_0x711a('0x37')]);_0xb7bae8['where']=qs['filters'](_[_0x711a('0x38')](_0x524510[_0x711a('0x2e')],_0x19bdda[_0x711a('0x39')]),_0x7de8dd);if(_0x524510[_0x711a('0x2e')]['filter']){_0xb7bae8[_0x711a('0x3a')]=_[_0x711a('0x3b')](_0xb7bae8[_0x711a('0x3a')],{'$or':_[_0x711a('0x28')](_0x7de8dd,function(_0x4653e3){if(_0x4653e3[_0x711a('0x2b')]!==_0x711a('0x3c')){var _0x355d5a={};_0x355d5a[_0x4653e3[_0x711a('0x26')]]={'$like':'%'+_0x524510[_0x711a('0x2e')][_0x711a('0x3d')]+'%'};return _0x355d5a;}})});}_0xb7bae8=_['merge']({},_0xb7bae8,_0x524510[_0x711a('0x3e')]);var _0x607e8d={'where':_0xb7bae8[_0x711a('0x3a')]};return db[_0x711a('0x29')][_0x711a('0x1a')](_0x607e8d)['then'](function(_0x5bb79e){_0x484ba8['count']=_0x5bb79e;if(_0x524510['query'][_0x711a('0x3f')]){_0xb7bae8[_0x711a('0x40')]=[{'all':!![]}];}return db[_0x711a('0x29')]['findAll'](_0xb7bae8);})[_0x711a('0x22')](function(_0x594796){_0x484ba8[_0x711a('0x41')]=_0x594796;return _0x484ba8;})[_0x711a('0x22')](respondWithFilteredResult(_0x3dffbb,_0xb7bae8))[_0x711a('0x42')](handleError(_0x3dffbb,null));};exports[_0x711a('0x43')]=function(_0x33ba81,_0x5e6e68){var _0x5f0ad9={'raw':!![],'where':{'id':_0x33ba81[_0x711a('0x44')]['id']}},_0x359adf={};_0x359adf[_0x711a('0x2d')]=_[_0x711a('0x2f')](db[_0x711a('0x29')][_0x711a('0x45')]);_0x359adf[_0x711a('0x2e')]=_[_0x711a('0x2f')](_0x33ba81[_0x711a('0x2e')]);_0x359adf[_0x711a('0x39')]=_[_0x711a('0x30')](_0x359adf[_0x711a('0x2d')],_0x359adf[_0x711a('0x2e')]);_0x5f0ad9[_0x711a('0x31')]=_[_0x711a('0x30')](_0x359adf['model'],qs[_0x711a('0x32')](_0x33ba81[_0x711a('0x2e')][_0x711a('0x32')]));_0x5f0ad9[_0x711a('0x31')]=_0x5f0ad9[_0x711a('0x31')]['length']?_0x5f0ad9[_0x711a('0x31')]:_0x359adf[_0x711a('0x2d')];if(_0x33ba81['query'][_0x711a('0x3f')]){_0x5f0ad9[_0x711a('0x40')]=[{'all':!![]}];}_0x5f0ad9=_['merge']({},_0x5f0ad9,_0x33ba81['options']);return db[_0x711a('0x29')][_0x711a('0x46')](_0x5f0ad9)[_0x711a('0x22')](handleEntityNotFound(_0x5e6e68,null))[_0x711a('0x22')](respondWithResult(_0x5e6e68,null))[_0x711a('0x42')](handleError(_0x5e6e68,null));};exports[_0x711a('0x47')]=function(_0xcb9a5d,_0x26e4c4){return db[_0x711a('0x29')][_0x711a('0x47')](_0xcb9a5d['body'],{})[_0x711a('0x22')](respondWithResult(_0x26e4c4,0xc9))[_0x711a('0x42')](handleError(_0x26e4c4,null));};exports[_0x711a('0x21')]=function(_0x4b0f75,_0x220fd4){if(_0x4b0f75[_0x711a('0x48')]['id']){delete _0x4b0f75[_0x711a('0x48')]['id'];}return db[_0x711a('0x29')][_0x711a('0x46')]({'where':{'id':_0x4b0f75['params']['id']}})[_0x711a('0x22')](handleEntityNotFound(_0x220fd4,null))[_0x711a('0x22')](saveUpdates(_0x4b0f75['body'],null))[_0x711a('0x22')](respondWithResult(_0x220fd4,null))[_0x711a('0x42')](handleError(_0x220fd4,null));};exports[_0x711a('0x23')]=function(_0x6afcc1,_0x575d71){return db[_0x711a('0x29')]['find']({'where':{'id':_0x6afcc1[_0x711a('0x44')]['id']}})['then'](handleEntityNotFound(_0x575d71,null))[_0x711a('0x22')](removeEntity(_0x575d71,null))['catch'](handleError(_0x575d71,null));};exports[_0x711a('0x49')]=function(_0x5ce095,_0x44483e){return db['ChatTransferReport'][_0x711a('0x49')]()[_0x711a('0x22')](respondWithResult(_0x44483e,null))[_0x711a('0x42')](handleError(_0x44483e,null));};
\ No newline at end of file
+var _0xdcbb=['rows','catch','show','params','includeAll','create','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','send','index','map','ChatTransferReport','rawAttributes','type','key','query','keys','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','filters','pick','filter','merge','where','options','include','findAll'];(function(_0x256693,_0x4c1c73){var _0x44ead1=function(_0x3a47b2){while(--_0x3a47b2){_0x256693['push'](_0x256693['shift']());}};_0x44ead1(++_0x4c1c73);}(_0xdcbb,0x9a));var _0xbdcb=function(_0x528307,_0x35e559){_0x528307=_0x528307-0x0;var _0x4eee14=_0xdcbb[_0x528307];return _0x4eee14;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbdcb('0x0'));var zipdir=require(_0xbdcb('0x1'));var jsonpatch=require(_0xbdcb('0x2'));var rp=require(_0xbdcb('0x3'));var moment=require('moment');var BPromise=require(_0xbdcb('0x4'));var Mustache=require('mustache');var util=require(_0xbdcb('0x5'));var path=require('path');var sox=require(_0xbdcb('0x6'));var csv=require(_0xbdcb('0x7'));var ejs=require(_0xbdcb('0x8'));var fs=require('fs');var fs_extra=require(_0xbdcb('0x9'));var _=require('lodash');var squel=require(_0xbdcb('0xa'));var crypto=require(_0xbdcb('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xbdcb('0xc'));var toCsv=require(_0xbdcb('0x7'));var querystring=require('querystring');var Papa=require(_0xbdcb('0xd'));var Redis=require(_0xbdcb('0xe'));var authService=require(_0xbdcb('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xbdcb('0x10'));var hardwareService=require(_0xbdcb('0x11'));var logger=require(_0xbdcb('0x12'))('api');var utils=require('../../config/utils');var config=require(_0xbdcb('0x13'));var licenseUtil=require(_0xbdcb('0x14'));var db=require(_0xbdcb('0x15'))['db'];function respondWithStatusCode(_0x532c8e,_0x5b9bfa){_0x5b9bfa=_0x5b9bfa||0xcc;return function(_0x5521a3){if(_0x5521a3){return _0x532c8e['sendStatus'](_0x5b9bfa);}return _0x532c8e[_0xbdcb('0x16')](_0x5b9bfa)[_0xbdcb('0x17')]();};}function respondWithResult(_0x26c90b,_0x268377){_0x268377=_0x268377||0xc8;return function(_0x1750cd){if(_0x1750cd){return _0x26c90b['status'](_0x268377)[_0xbdcb('0x18')](_0x1750cd);}};}function respondWithFilteredResult(_0x1326d3,_0x1b6c30){return function(_0x1c8b24){if(_0x1c8b24){var _0x29fe56=typeof _0x1b6c30[_0xbdcb('0x19')]===_0xbdcb('0x1a')&&typeof _0x1b6c30[_0xbdcb('0x1b')]==='undefined';var _0x2a1648=_0x1c8b24[_0xbdcb('0x1c')];var _0x3f748f=_0x29fe56?0x0:_0x1b6c30[_0xbdcb('0x19')];var _0x2331c6=_0x29fe56?_0x1c8b24['count']:_0x1b6c30['offset']+_0x1b6c30[_0xbdcb('0x1b')];var _0x4cb183;if(_0x2331c6>=_0x2a1648){_0x2331c6=_0x2a1648;_0x4cb183=0xc8;}else{_0x4cb183=0xce;}_0x1326d3['status'](_0x4cb183);return _0x1326d3['set'](_0xbdcb('0x1d'),_0x3f748f+'-'+_0x2331c6+'/'+_0x2a1648)[_0xbdcb('0x18')](_0x1c8b24);}return null;};}function patchUpdates(_0x51f133){return function(_0x363e67){try{jsonpatch[_0xbdcb('0x1e')](_0x363e67,_0x51f133,!![]);}catch(_0x11dba7){return BPromise[_0xbdcb('0x1f')](_0x11dba7);}return _0x363e67[_0xbdcb('0x20')]();};}function saveUpdates(_0x422379,_0x564ecf){return function(_0x1afa86){if(_0x1afa86){return _0x1afa86[_0xbdcb('0x21')](_0x422379)['then'](function(_0x3518c0){return _0x3518c0;});}return null;};}function removeEntity(_0x485256,_0x2a7d8d){return function(_0x2228ad){if(_0x2228ad){return _0x2228ad[_0xbdcb('0x22')]()[_0xbdcb('0x23')](function(){_0x485256['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5dbe3d,_0x3bd598){return function(_0x329ebc){if(!_0x329ebc){_0x5dbe3d[_0xbdcb('0x24')](0x194);}return _0x329ebc;};}function handleError(_0x1f3938,_0x49886d){_0x49886d=_0x49886d||0x1f4;return function(_0xc8454){logger[_0xbdcb('0x25')](_0xc8454[_0xbdcb('0x26')]);if(_0xc8454[_0xbdcb('0x27')]){delete _0xc8454['name'];}_0x1f3938[_0xbdcb('0x16')](_0x49886d)[_0xbdcb('0x28')](_0xc8454);};}exports[_0xbdcb('0x29')]=function(_0x1af607,_0x58ff0d){var _0x4d8b4d={},_0x1f6339={},_0xe7bc06={'count':0x0,'rows':[]};var _0x18a7ed=_[_0xbdcb('0x2a')](db[_0xbdcb('0x2b')][_0xbdcb('0x2c')],function(_0x3cb7f9){return{'name':_0x3cb7f9['fieldName'],'type':_0x3cb7f9[_0xbdcb('0x2d')][_0xbdcb('0x2e')]};});_0x1f6339['model']=_['map'](_0x18a7ed,_0xbdcb('0x27'));_0x1f6339[_0xbdcb('0x2f')]=_[_0xbdcb('0x30')](_0x1af607[_0xbdcb('0x2f')]);_0x1f6339['filters']=_['intersection'](_0x1f6339[_0xbdcb('0x31')],_0x1f6339[_0xbdcb('0x2f')]);_0x4d8b4d[_0xbdcb('0x32')]=_[_0xbdcb('0x33')](_0x1f6339[_0xbdcb('0x31')],qs['fields'](_0x1af607[_0xbdcb('0x2f')][_0xbdcb('0x34')]));_0x4d8b4d['attributes']=_0x4d8b4d[_0xbdcb('0x32')][_0xbdcb('0x35')]?_0x4d8b4d[_0xbdcb('0x32')]:_0x1f6339[_0xbdcb('0x31')];if(!_0x1af607['query'][_0xbdcb('0x36')]('nolimit')){_0x4d8b4d[_0xbdcb('0x1b')]=qs[_0xbdcb('0x1b')](_0x1af607['query'][_0xbdcb('0x1b')]);_0x4d8b4d[_0xbdcb('0x19')]=qs[_0xbdcb('0x19')](_0x1af607[_0xbdcb('0x2f')][_0xbdcb('0x19')]);}_0x4d8b4d[_0xbdcb('0x37')]=qs[_0xbdcb('0x38')](_0x1af607[_0xbdcb('0x2f')]['sort']);_0x4d8b4d['where']=qs[_0xbdcb('0x39')](_[_0xbdcb('0x3a')](_0x1af607[_0xbdcb('0x2f')],_0x1f6339[_0xbdcb('0x39')]),_0x18a7ed);if(_0x1af607['query'][_0xbdcb('0x3b')]){_0x4d8b4d['where']=_[_0xbdcb('0x3c')](_0x4d8b4d[_0xbdcb('0x3d')],{'$or':_['map'](_0x18a7ed,function(_0x14b9e5){if(_0x14b9e5[_0xbdcb('0x2d')]!=='VIRTUAL'){var _0xe94f08={};_0xe94f08[_0x14b9e5[_0xbdcb('0x27')]]={'$like':'%'+_0x1af607[_0xbdcb('0x2f')][_0xbdcb('0x3b')]+'%'};return _0xe94f08;}})});}_0x4d8b4d=_['merge']({},_0x4d8b4d,_0x1af607[_0xbdcb('0x3e')]);var _0x2c8ef9={'where':_0x4d8b4d[_0xbdcb('0x3d')]};return db[_0xbdcb('0x2b')][_0xbdcb('0x1c')](_0x2c8ef9)[_0xbdcb('0x23')](function(_0x454b0c){_0xe7bc06[_0xbdcb('0x1c')]=_0x454b0c;if(_0x1af607[_0xbdcb('0x2f')]['includeAll']){_0x4d8b4d[_0xbdcb('0x3f')]=[{'all':!![]}];}return db[_0xbdcb('0x2b')][_0xbdcb('0x40')](_0x4d8b4d);})['then'](function(_0x278faa){_0xe7bc06[_0xbdcb('0x41')]=_0x278faa;return _0xe7bc06;})['then'](respondWithFilteredResult(_0x58ff0d,_0x4d8b4d))[_0xbdcb('0x42')](handleError(_0x58ff0d,null));};exports[_0xbdcb('0x43')]=function(_0x2bdfa8,_0x569a86){var _0x50e728={'raw':!![],'where':{'id':_0x2bdfa8[_0xbdcb('0x44')]['id']}},_0x2e87d9={};_0x2e87d9[_0xbdcb('0x31')]=_['keys'](db[_0xbdcb('0x2b')][_0xbdcb('0x2c')]);_0x2e87d9[_0xbdcb('0x2f')]=_[_0xbdcb('0x30')](_0x2bdfa8[_0xbdcb('0x2f')]);_0x2e87d9[_0xbdcb('0x39')]=_[_0xbdcb('0x33')](_0x2e87d9[_0xbdcb('0x31')],_0x2e87d9[_0xbdcb('0x2f')]);_0x50e728['attributes']=_[_0xbdcb('0x33')](_0x2e87d9[_0xbdcb('0x31')],qs['fields'](_0x2bdfa8[_0xbdcb('0x2f')][_0xbdcb('0x34')]));_0x50e728['attributes']=_0x50e728[_0xbdcb('0x32')][_0xbdcb('0x35')]?_0x50e728[_0xbdcb('0x32')]:_0x2e87d9[_0xbdcb('0x31')];if(_0x2bdfa8[_0xbdcb('0x2f')][_0xbdcb('0x45')]){_0x50e728['include']=[{'all':!![]}];}_0x50e728=_[_0xbdcb('0x3c')]({},_0x50e728,_0x2bdfa8[_0xbdcb('0x3e')]);return db[_0xbdcb('0x2b')]['find'](_0x50e728)['then'](handleEntityNotFound(_0x569a86,null))[_0xbdcb('0x23')](respondWithResult(_0x569a86,null))[_0xbdcb('0x42')](handleError(_0x569a86,null));};exports['create']=function(_0x573751,_0x240615){return db['ChatTransferReport'][_0xbdcb('0x46')](_0x573751['body'],{})[_0xbdcb('0x23')](respondWithResult(_0x240615,0xc9))['catch'](handleError(_0x240615,null));};exports[_0xbdcb('0x21')]=function(_0x28f72f,_0x16401a){if(_0x28f72f['body']['id']){delete _0x28f72f['body']['id'];}return db['ChatTransferReport'][_0xbdcb('0x47')]({'where':{'id':_0x28f72f[_0xbdcb('0x44')]['id']}})['then'](handleEntityNotFound(_0x16401a,null))[_0xbdcb('0x23')](saveUpdates(_0x28f72f['body'],null))['then'](respondWithResult(_0x16401a,null))[_0xbdcb('0x42')](handleError(_0x16401a,null));};exports[_0xbdcb('0x22')]=function(_0x49ee26,_0x425724){return db[_0xbdcb('0x2b')][_0xbdcb('0x47')]({'where':{'id':_0x49ee26[_0xbdcb('0x44')]['id']}})[_0xbdcb('0x23')](handleEntityNotFound(_0x425724,null))['then'](removeEntity(_0x425724,null))[_0xbdcb('0x42')](handleError(_0x425724,null));};exports[_0xbdcb('0x48')]=function(_0x2e456e,_0x5af93c){return db[_0xbdcb('0x2b')]['describe']()[_0xbdcb('0x23')](respondWithResult(_0x5af93c,null))[_0xbdcb('0x42')](handleError(_0x5af93c,null));};
\ No newline at end of file
index e21d43c..a659d48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd14=['./chatTransferReport.attributes','define','ChatTransferReport','report_chat_transfer','uniqueid','lodash','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0xc6be3a,_0x540e05){var _0x56a310=function(_0x50a144){while(--_0x50a144){_0xc6be3a['push'](_0xc6be3a['shift']());}};_0x56a310(++_0x540e05);}(_0xcd14,0x65));var _0x4cd1=function(_0x3e2647,_0x1dc100){_0x3e2647=_0x3e2647-0x0;var _0x38fb6f=_0xcd14[_0x3e2647];return _0x38fb6f;};'use strict';var _=require(_0x4cd1('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x4cd1('0x1'));var BPromise=require(_0x4cd1('0x2'));var rp=require(_0x4cd1('0x3'));var fs=require('fs');var path=require(_0x4cd1('0x4'));var rimraf=require(_0x4cd1('0x5'));var config=require(_0x4cd1('0x6'));var attributes=require(_0x4cd1('0x7'));module['exports']=function(_0x552c3c,_0x38f6a3){return _0x552c3c[_0x4cd1('0x8')](_0x4cd1('0x9'),attributes,{'tableName':_0x4cd1('0xa'),'paranoid':![],'indexes':[{'name':_0x4cd1('0xb'),'fields':[_0x4cd1('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcc22=['ChatTransferReport','lodash','../../config/logger','api','moment','path','./chatTransferReport.attributes','exports','define'];(function(_0x160c73,_0x2ee678){var _0xd9302=function(_0x169454){while(--_0x169454){_0x160c73['push'](_0x160c73['shift']());}};_0xd9302(++_0x2ee678);}(_0xcc22,0x184));var _0x2cc2=function(_0x1b19d3,_0x334e6f){_0x1b19d3=_0x1b19d3-0x0;var _0x405e3e=_0xcc22[_0x1b19d3];return _0x405e3e;};'use strict';var _=require(_0x2cc2('0x0'));var util=require('util');var logger=require(_0x2cc2('0x1'))(_0x2cc2('0x2'));var moment=require(_0x2cc2('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x2cc2('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x2cc2('0x5'));module[_0x2cc2('0x6')]=function(_0x121ed9,_0x3d125c){return _0x121ed9[_0x2cc2('0x7')](_0x2cc2('0x8'),attributes,{'tableName':'report_chat_transfer','paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index ed5e0ca..261b04d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29c4=['info','ChatTransferReport,\x20%s,\x20%s','request\x20sent','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x29c4,0xc6));var _0x429c=function(_0x26e61f,_0x1a09dd){_0x26e61f=_0x26e61f-0x0;var _0x36242b=_0x29c4[_0x26e61f];return _0x36242b;};'use strict';var _=require(_0x429c('0x0'));var util=require(_0x429c('0x1'));var moment=require(_0x429c('0x2'));var BPromise=require('bluebird');var rs=require(_0x429c('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x429c('0x4'))['db'];var utils=require(_0x429c('0x5'));var logger=require(_0x429c('0x6'))(_0x429c('0x7'));var config=require('../../config/environment');var jayson=require(_0x429c('0x8'));var client=jayson['client'][_0x429c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x197584,_0x1c340e,_0x4314be){return new BPromise(function(_0x16b822,_0x12b7bb){return client[_0x429c('0xa')](_0x197584,_0x4314be)[_0x429c('0xb')](function(_0xde7858){logger[_0x429c('0xc')](_0x429c('0xd'),_0x1c340e,_0x429c('0xe'));logger['debug'](_0x429c('0xf'),_0x1c340e,_0x429c('0xe'),JSON[_0x429c('0x10')](_0xde7858));if(_0xde7858[_0x429c('0x11')]){if(_0xde7858[_0x429c('0x11')][_0x429c('0x12')]===0x1f4){logger[_0x429c('0x11')](_0x429c('0xd'),_0x1c340e,_0xde7858['error'][_0x429c('0x13')]);return _0x12b7bb(_0xde7858[_0x429c('0x11')][_0x429c('0x13')]);}logger[_0x429c('0x11')](_0x429c('0xd'),_0x1c340e,_0xde7858[_0x429c('0x11')][_0x429c('0x13')]);return _0x16b822(_0xde7858[_0x429c('0x11')][_0x429c('0x13')]);}else{logger['info']('ChatTransferReport,\x20%s,\x20%s',_0x1c340e,_0x429c('0xe'));_0x16b822(_0xde7858['result']['message']);}})[_0x429c('0x14')](function(_0x473098){logger[_0x429c('0x11')]('ChatTransferReport,\x20%s,\x20%s',_0x1c340e,_0x473098);_0x12b7bb(_0x473098);});});}
\ No newline at end of file
+var _0x1c52=['util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','then','ChatTransferReport,\x20%s,\x20%s','request\x20sent','debug','ChatTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash'];(function(_0x46c6e1,_0x3e103d){var _0x23f5dd=function(_0xcc1bd5){while(--_0xcc1bd5){_0x46c6e1['push'](_0x46c6e1['shift']());}};_0x23f5dd(++_0x3e103d);}(_0x1c52,0xbd));var _0x21c5=function(_0x2e374e,_0x2c4963){_0x2e374e=_0x2e374e-0x0;var _0x2f1d37=_0x1c52[_0x2e374e];return _0x2f1d37;};'use strict';var _=require(_0x21c5('0x0'));var util=require(_0x21c5('0x1'));var moment=require(_0x21c5('0x2'));var BPromise=require(_0x21c5('0x3'));var rs=require(_0x21c5('0x4'));var fs=require('fs');var Redis=require(_0x21c5('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x21c5('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x21c5('0x7'));var jayson=require(_0x21c5('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x325fda,_0x38023e,_0x5c9ef5){return new BPromise(function(_0x321507,_0x299b07){return client['request'](_0x325fda,_0x5c9ef5)[_0x21c5('0x9')](function(_0x2605a2){logger['info'](_0x21c5('0xa'),_0x38023e,_0x21c5('0xb'));logger[_0x21c5('0xc')](_0x21c5('0xd'),_0x38023e,_0x21c5('0xb'),JSON[_0x21c5('0xe')](_0x2605a2));if(_0x2605a2[_0x21c5('0xf')]){if(_0x2605a2['error']['code']===0x1f4){logger['error'](_0x21c5('0xa'),_0x38023e,_0x2605a2[_0x21c5('0xf')][_0x21c5('0x10')]);return _0x299b07(_0x2605a2[_0x21c5('0xf')][_0x21c5('0x10')]);}logger[_0x21c5('0xf')](_0x21c5('0xa'),_0x38023e,_0x2605a2[_0x21c5('0xf')][_0x21c5('0x10')]);return _0x321507(_0x2605a2[_0x21c5('0xf')][_0x21c5('0x10')]);}else{logger['info'](_0x21c5('0xa'),_0x38023e,_0x21c5('0xb'));_0x321507(_0x2605a2[_0x21c5('0x11')][_0x21c5('0x10')]);}})[_0x21c5('0x12')](function(_0x125eee){logger[_0x21c5('0xf')]('ChatTransferReport,\x20%s,\x20%s',_0x38023e,_0x125eee);_0x299b07(_0x125eee);});});}
\ No newline at end of file
index 50ee925..9fdd096 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69a6=['describe','/:id','post','create','put','delete','destroy','exports','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','get','isAuthenticated','index'];(function(_0x7df55d,_0x373a9d){var _0x4790cc=function(_0x10f39a){while(--_0x10f39a){_0x7df55d['push'](_0x7df55d['shift']());}};_0x4790cc(++_0x373a9d);}(_0x69a6,0x15e));var _0x669a=function(_0xd42196,_0x525a06){_0xd42196=_0xd42196-0x0;var _0x234e57=_0x69a6[_0xd42196];return _0x234e57;};'use strict';var multer=require(_0x669a('0x0'));var util=require(_0x669a('0x1'));var path=require('path');var timeout=require(_0x669a('0x2'));var express=require('express');var router=express[_0x669a('0x3')]();var fs_extra=require(_0x669a('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x669a('0x5'));var config=require(_0x669a('0x6'));var controller=require(_0x669a('0x7'));router[_0x669a('0x8')]('/',auth[_0x669a('0x9')](),controller[_0x669a('0xa')]);router['get']('/describe',auth[_0x669a('0x9')](),controller[_0x669a('0xb')]);router[_0x669a('0x8')](_0x669a('0xc'),auth[_0x669a('0x9')](),controller['show']);router[_0x669a('0xd')]('/',auth[_0x669a('0x9')](),controller[_0x669a('0xe')]);router[_0x669a('0xf')](_0x669a('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x669a('0x10')]('/:id',auth[_0x669a('0x9')](),controller[_0x669a('0x11')]);module[_0x669a('0x12')]=router;
\ No newline at end of file
+var _0x75ff=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x75ff,0xb4));var _0xf75f=function(_0x41d902,_0x29d0b){_0x41d902=_0x41d902-0x0;var _0x360fb1=_0x75ff[_0x41d902];return _0x360fb1;};'use strict';var multer=require(_0xf75f('0x0'));var util=require(_0xf75f('0x1'));var path=require(_0xf75f('0x2'));var timeout=require(_0xf75f('0x3'));var express=require('express');var router=express[_0xf75f('0x4')]();var fs_extra=require(_0xf75f('0x5'));var auth=require(_0xf75f('0x6'));var interaction=require(_0xf75f('0x7'));var config=require(_0xf75f('0x8'));var controller=require(_0xf75f('0x9'));router['get']('/',auth[_0xf75f('0xa')](),controller[_0xf75f('0xb')]);router[_0xf75f('0xc')](_0xf75f('0xd'),auth['isAuthenticated'](),controller[_0xf75f('0xe')]);router[_0xf75f('0xc')](_0xf75f('0xf'),auth[_0xf75f('0xa')](),controller[_0xf75f('0x10')]);router[_0xf75f('0x11')]('/',auth[_0xf75f('0xa')](),controller[_0xf75f('0x12')]);router[_0xf75f('0x13')]('/:id',auth[_0xf75f('0xa')](),controller['update']);router[_0xf75f('0x14')](_0xf75f('0xf'),auth[_0xf75f('0xa')](),controller[_0xf75f('0x15')]);module[_0xf75f('0x16')]=router;
\ No newline at end of file
index ecdd141..9f818d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6324=['Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','Generated\x20by\x20XCALLY\x20Motion','Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}','sequelize','randomstring','exports','STRING','address','Agent','#011F6A','#ffffff','BOOLEAN','ENUM','rounded','squared','We\x20are\x20here!','Chat','Send','Contact\x20us','Powered\x20by\x20xCALLY','TEXT','Form\x20properly\x20submitted','Form\x20submission\x20error','Type\x20a\x20message','Feedback','star','thumb','INTEGER','stringify','input','name','text','email','getDataValue','onlineForm','parse','setDataValue','textarea','Comments','Leave\x20your\x20comments','offlineForm','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','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}}','website_alias','bottom_right','CHAT','alternate','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'];(function(_0x17b773,_0x4217cf){var _0x35fd6e=function(_0x538ae7){while(--_0x538ae7){_0x17b773['push'](_0x17b773['shift']());}};_0x35fd6e(++_0x4217cf);}(_0x6324,0x142));var _0x4632=function(_0x17ede9,_0x27d731){_0x17ede9=_0x17ede9-0x0;var _0x35b71d=_0x6324[_0x17ede9];return _0x35b71d;};'use strict';var Sequelize=require(_0x4632('0x0'));var rs=require(_0x4632('0x1'));module[_0x4632('0x2')]={'name':{'type':Sequelize[_0x4632('0x3')],'allowNull':![]},'address':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x4632('0x4')},'description':{'type':Sequelize['STRING']},'mapKey':{'type':Sequelize[_0x4632('0x3')],'defaultValue':'email'},'mapKeyOffline':{'type':Sequelize[_0x4632('0x3')],'defaultValue':'email'},'key':{'type':Sequelize[_0x4632('0x3')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0x4632('0x3')],'defaultValue':_0x4632('0x5')},'customerAlias':{'type':Sequelize[_0x4632('0x3')],'defaultValue':'Me'},'color':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x4632('0x6'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0x4632('0x3')],'allowNull':![],'defaultValue':_0x4632('0x6'),'validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x4632('0x7'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0x4632('0x3')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xf},'remote':{'type':Sequelize[_0x4632('0x3')]},'animation':{'type':Sequelize[_0x4632('0x8')],'defaultValue':!![]},'header_shape':{'type':Sequelize[_0x4632('0x9')](_0x4632('0xa'),_0x4632('0xb')),'defaultValue':_0x4632('0xa')},'header_online':{'type':Sequelize[_0x4632('0x3')],'defaultValue':_0x4632('0xc')},'start_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0x4632('0xd')},'offline_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0x4632('0xe')},'header_offline':{'type':Sequelize[_0x4632('0x3')],'defaultValue':_0x4632('0xf')},'download_transcript':{'type':Sequelize[_0x4632('0x8')],'defaultValue':!![]},'timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0x4632('0x3')],'defaultValue':_0x4632('0x10')},'defaultWhiteLabel':{'type':Sequelize[_0x4632('0x8')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0x4632('0x11')]},'closingQuestion':{'type':Sequelize[_0x4632('0x3')],'defaultValue':'Do\x20you\x20want\x20to\x20close\x20the\x20interaction?'},'formSubmitSuccessMessage':{'type':Sequelize['STRING'],'defaultValue':_0x4632('0x12')},'formSubmitFailureMessage':{'type':Sequelize[_0x4632('0x3')],'defaultValue':_0x4632('0x13')},'noteTitle':{'type':Sequelize[_0x4632('0x3')],'defaultValue':'Note'},'placeholderMessage':{'type':Sequelize[_0x4632('0x3')],'defaultValue':_0x4632('0x14')},'closingMessage':{'type':Sequelize[_0x4632('0x3')],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize[_0x4632('0x3')],'defaultValue':_0x4632('0xe')},'skipMessageButton':{'type':Sequelize['STRING'],'defaultValue':'Skip'},'conditionAgreement':{'type':Sequelize[_0x4632('0x8')],'defaultValue':![]},'enableRating':{'type':Sequelize[_0x4632('0x8')],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0x4632('0x8')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0x4632('0x8')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0x4632('0x3')],'defaultValue':_0x4632('0x15')},'ratingType':{'type':Sequelize[_0x4632('0x9')](_0x4632('0x16'),_0x4632('0x17')),'defaultValue':_0x4632('0x16')},'ratingStarsNumber':{'type':Sequelize[_0x4632('0x18')],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0x4632('0x11')],'defaultValue':function(){return JSON[_0x4632('0x19')]({'items':[{'type':_0x4632('0x1a'),'variable':null,'config':{'placeholder':_0x4632('0x1b'),'type':_0x4632('0x1c'),'required':!![]},'props':{'title':_0x4632('0x1b'),'helpText':''}},{'type':_0x4632('0x1a'),'props':{'title':_0x4632('0x1d'),'helpText':''},'config':{'required':!![],'placeholder':_0x4632('0x1d'),'type':_0x4632('0x1d')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0x4632('0x1e')](_0x4632('0x1f'))?JSON[_0x4632('0x20')](this[_0x4632('0x1e')](_0x4632('0x1f'))):{};},'set':function(_0x4af026){return this[_0x4632('0x21')](_0x4632('0x1f'),JSON[_0x4632('0x19')](_0x4af026));}},'offlineForm':{'type':Sequelize[_0x4632('0x11')],'defaultValue':function(){return JSON[_0x4632('0x19')]({'items':[{'type':_0x4632('0x1a'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':'email','type':_0x4632('0x1d')},'variable':null},{'type':_0x4632('0x22'),'config':{'placeholder':_0x4632('0x23')},'props':{'title':_0x4632('0x23'),'helpText':_0x4632('0x24')}}],'fromKey':0x0});},'get':function(){return this[_0x4632('0x1e')](_0x4632('0x25'))?JSON['parse'](this[_0x4632('0x1e')](_0x4632('0x25'))):{};},'set':function(_0x48f5fb){return this[_0x4632('0x21')]('offlineForm',JSON[_0x4632('0x19')](_0x48f5fb));}},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'autoclose':{'type':Sequelize[_0x4632('0x8')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0x4632('0x8')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0x4632('0x8')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0x4632('0x3')]},'waitingTitle':{'type':Sequelize[_0x4632('0x3')],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize['STRING'],'defaultValue':_0x4632('0x26')},'offlineMessageSubject':{'type':Sequelize[_0x4632('0x3')],'defaultValue':'New\x20offline\x20message\x20from\x20websiteName'},'offlineMessageBody':{'type':Sequelize[_0x4632('0x3')],'defaultValue':_0x4632('0x27')},'enableUnmanagedNote':{'type':Sequelize[_0x4632('0x8')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0x4632('0x3')],'defaultValue':_0x4632('0x28')},'skipUnmanaged':{'type':Sequelize['STRING'],'defaultValue':_0x4632('0x29')},'sendUnmanaged':{'type':Sequelize[_0x4632('0x3')],'defaultValue':'Send'},'enableCustomerAttachment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0x4632('0x8')],'defaultValue':![]},'agentAvatar':{'type':Sequelize['TEXT']},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize[_0x4632('0x3')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0x4632('0x2a');}},'notificationSound':{'type':Sequelize[_0x4632('0x8')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x4632('0x8')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0x4632('0x3')],'defaultValue':_0x4632('0x2b')},'waitForTheAssignedAgent':{'type':Sequelize[_0x4632('0x18')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0x4632('0x3')],'defaultValue':_0x4632('0x2c')},'verticalAlignment':{'type':Sequelize['INTEGER'],'defaultValue':0x1e},'labelText':{'type':Sequelize['STRING'],'defaultValue':_0x4632('0x2d')},'messagesAlignment':{'type':Sequelize[_0x4632('0x3')],'defaultValue':_0x4632('0x2e')},'defaultTitle':{'type':Sequelize['STRING']},'customerAvatar':{'type':Sequelize['TEXT']},'showCustomerAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0x4632('0x18')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize[_0x4632('0x3')],'allowNull':![],'defaultValue':'#fafafa','validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0x4632('0x8')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x4632('0x18')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x4632('0x8')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x4632('0x18')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0x4632('0x3')],'defaultValue':_0x4632('0x2f')},'systemAvatar':{'type':Sequelize[_0x4632('0x11')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0x4632('0x18')],'comment':_0x4632('0x30')},'mandatoryDisposition':{'type':Sequelize[_0x4632('0x8')],'defaultValue':![],'comment':_0x4632('0x31'),'set':function(_0x3b6258){if(!_0x3b6258)this['setDataValue'](_0x4632('0x32'),null);this[_0x4632('0x21')]('mandatoryDisposition',_0x3b6258);}},'vidaooEscalation':{'type':Sequelize[_0x4632('0x8')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0x4632('0x3')]},'vidaooTopic':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x4632('0x33')},'vidaooNote':{'type':Sequelize['STRING'],'defaultValue':function(){return _0x4632('0x34');}},'vidaooMetadata':{'type':Sequelize[_0x4632('0x11')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0x4632('0x8')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0x4632('0x11')]}};
\ No newline at end of file
+var _0xdace=['Generated\x20by\x20XCALLY\x20Motion','sequelize','exports','STRING','email','Agent','#011F6A','#ffffff','BOOLEAN','squared','rounded','We\x20are\x20here!','Chat','Send','Contact\x20us','INTEGER','TEXT','Do\x20you\x20want\x20to\x20close\x20the\x20interaction?','Note','Type\x20a\x20message','Skip','Feedback','ENUM','star','thumb','input','name','getDataValue','parse','onlineForm','setDataValue','stringify','textarea','Comments','offlineForm','generate','Please\x20hold\x20and\x20we\x20will\x20answer\x20your\x20request\x20as\x20soon\x20as\x20possible.','New\x20offline\x20message\x20from\x20websiteName','Your\x20request\x20has\x20not\x20been\x20processed.','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','website_alias','bottom_right','CHAT','#fafafa','System','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition'];(function(_0x252328,_0x4c22f0){var _0xaa85b7=function(_0x2623d0){while(--_0x2623d0){_0x252328['push'](_0x252328['shift']());}};_0xaa85b7(++_0x4c22f0);}(_0xdace,0xc5));var _0xedac=function(_0x138f59,_0x1b53fb){_0x138f59=_0x138f59-0x0;var _0x3d114d=_0xdace[_0x138f59];return _0x3d114d;};'use strict';var Sequelize=require(_0xedac('0x0'));var rs=require('randomstring');module[_0xedac('0x1')]={'name':{'type':Sequelize[_0xedac('0x2')],'allowNull':![]},'address':{'type':Sequelize[_0xedac('0x2')],'allowNull':![],'unique':'address'},'description':{'type':Sequelize[_0xedac('0x2')]},'mapKey':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x3')},'mapKeyOffline':{'type':Sequelize[_0xedac('0x2')],'defaultValue':'email'},'key':{'type':Sequelize[_0xedac('0x2')],'allowNull':![]},'agentAlias':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x4')},'customerAlias':{'type':Sequelize['STRING'],'defaultValue':'Me'},'color':{'type':Sequelize[_0xedac('0x2')],'allowNull':![],'defaultValue':_0xedac('0x5'),'validate':{'notEmpty':!![]}},'color_button':{'type':Sequelize[_0xedac('0x2')],'allowNull':![],'defaultValue':'#011F6A','validate':{'notEmpty':!![]}},'textColor':{'type':Sequelize[_0xedac('0x2')],'allowNull':![],'defaultValue':_0xedac('0x6'),'validate':{'notEmpty':!![]}},'textButtonColor':{'type':Sequelize[_0xedac('0x2')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'fontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xf},'remote':{'type':Sequelize[_0xedac('0x2')]},'animation':{'type':Sequelize[_0xedac('0x7')],'defaultValue':!![]},'header_shape':{'type':Sequelize['ENUM']('rounded',_0xedac('0x8')),'defaultValue':_0xedac('0x9')},'header_online':{'type':Sequelize['STRING'],'defaultValue':_0xedac('0xa')},'start_chat_button':{'type':Sequelize['STRING'],'defaultValue':_0xedac('0xb')},'offline_chat_button':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0xc')},'header_offline':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0xd')},'download_transcript':{'type':Sequelize[_0xedac('0x7')],'defaultValue':!![]},'timeout':{'type':Sequelize[_0xedac('0xe')],'defaultValue':0x0},'whiteLabel':{'type':Sequelize[_0xedac('0x2')],'defaultValue':'Powered\x20by\x20xCALLY'},'defaultWhiteLabel':{'type':Sequelize[_0xedac('0x7')],'defaultValue':!![]},'sitepic':{'type':Sequelize[_0xedac('0xf')]},'closingQuestion':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x10')},'formSubmitSuccessMessage':{'type':Sequelize[_0xedac('0x2')],'defaultValue':'Form\x20properly\x20submitted'},'formSubmitFailureMessage':{'type':Sequelize[_0xedac('0x2')],'defaultValue':'Form\x20submission\x20error'},'noteTitle':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x11')},'placeholderMessage':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x12')},'closingMessage':{'type':Sequelize['STRING'],'defaultValue':'Thanks\x20you\x20for\x20your\x20time!'},'closingMessageButton':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0xc')},'skipMessageButton':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x13')},'conditionAgreement':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableRating':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'enableFeedback':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'enableSendButton':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'feedbackTitle':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x14')},'ratingType':{'type':Sequelize[_0xedac('0x15')](_0xedac('0x16'),_0xedac('0x17')),'defaultValue':_0xedac('0x16')},'ratingStarsNumber':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'onlineForm':{'type':Sequelize[_0xedac('0xf')],'defaultValue':function(){return JSON['stringify']({'items':[{'type':_0xedac('0x18'),'variable':null,'config':{'placeholder':_0xedac('0x19'),'type':'text','required':!![]},'props':{'title':_0xedac('0x19'),'helpText':''}},{'type':_0xedac('0x18'),'props':{'title':_0xedac('0x3'),'helpText':''},'config':{'required':!![],'placeholder':_0xedac('0x3'),'type':_0xedac('0x3')},'variable':null}],'fromKey':0x1});},'get':function(){return this[_0xedac('0x1a')]('onlineForm')?JSON[_0xedac('0x1b')](this[_0xedac('0x1a')](_0xedac('0x1c'))):{};},'set':function(_0x41ad8d){return this[_0xedac('0x1d')](_0xedac('0x1c'),JSON[_0xedac('0x1e')](_0x41ad8d));}},'offlineForm':{'type':Sequelize[_0xedac('0xf')],'defaultValue':function(){return JSON[_0xedac('0x1e')]({'items':[{'type':_0xedac('0x18'),'props':{'title':'email','helpText':''},'config':{'required':!![],'placeholder':_0xedac('0x3'),'type':_0xedac('0x3')},'variable':null},{'type':_0xedac('0x1f'),'config':{'placeholder':'Comments'},'props':{'title':_0xedac('0x20'),'helpText':'Leave\x20your\x20comments'}}],'fromKey':0x0});},'get':function(){return this['getDataValue'](_0xedac('0x21'))?JSON[_0xedac('0x1b')](this[_0xedac('0x1a')](_0xedac('0x21'))):{};},'set':function(_0x555f1f){return this['setDataValue'](_0xedac('0x21'),JSON[_0xedac('0x1e')](_0x555f1f));}},'token':{'type':Sequelize[_0xedac('0x2')],'defaultValue':function(){return rs[_0xedac('0x22')]();}},'autoclose':{'type':Sequelize[_0xedac('0x7')],'defaultValue':!![]},'enableCustomerWriting':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'forwardTranscript':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'forwardTranscriptMessage':{'type':Sequelize['STRING']},'forwardOffline':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'forwardOfflineAddress':{'type':Sequelize[_0xedac('0x2')]},'waitingTitle':{'type':Sequelize[_0xedac('0x2')],'defaultValue':'All\x20of\x20our\x20agents\x20are\x20busy\x20at\x20this\x20time.\x20Your\x20chat\x20is\x20very\x20important\x20to\x20us.'},'waitingMessage':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x23')},'offlineMessageSubject':{'type':Sequelize['STRING'],'defaultValue':_0xedac('0x24')},'offlineMessageBody':{'type':Sequelize[_0xedac('0x2')],'defaultValue':'You\x20received\x20a\x20new\x20offline\x20message\x20from\x20websiteName.\x20Here\x20you\x20can\x20find\x20the\x20details\x20of\x20the\x20request:'},'enableUnmanagedNote':{'type':Sequelize[_0xedac('0x7')],'defaultValue':!![]},'unmanagedMessage':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x25')},'skipUnmanaged':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x13')},'sendUnmanaged':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0xc')},'enableCustomerAttachment':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'enableCustomerCheckmarks':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'agentAvatar':{'type':Sequelize[_0xedac('0xf')]},'showAgentAvatar':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'timezone':{'type':Sequelize[_0xedac('0x2')]},'notificationTemplate':{'type':Sequelize[_0xedac('0xf')],'defaultValue':function(){return _0xedac('0x26');}},'notificationSound':{'type':Sequelize[_0xedac('0x7')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'hideWhenOffline':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'agentIdentifier':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x27')},'waitForTheAssignedAgent':{'type':Sequelize[_0xedac('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'alignment':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x28')},'verticalAlignment':{'type':Sequelize[_0xedac('0xe')],'defaultValue':0x1e},'labelText':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x29')},'messagesAlignment':{'type':Sequelize[_0xedac('0x2')],'defaultValue':'alternate'},'defaultTitle':{'type':Sequelize[_0xedac('0x2')]},'customerAvatar':{'type':Sequelize[_0xedac('0xf')]},'showCustomerAvatar':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'messageFontSize':{'type':Sequelize[_0xedac('0xe')],'defaultValue':0xc},'backgroundColor':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xedac('0x2a'),'validate':{'notEmpty':!![]}},'queueTransfer':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xedac('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xedac('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'systemAlias':{'type':Sequelize[_0xedac('0x2')],'defaultValue':_0xedac('0x2b')},'systemAvatar':{'type':Sequelize['TEXT']},'mandatoryDispositionPauseId':{'type':Sequelize[_0xedac('0xe')],'comment':_0xedac('0x2c')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xedac('0x2d'),'set':function(_0x2fa832){if(!_0x2fa832)this['setDataValue'](_0xedac('0x2e'),null);this['setDataValue'](_0xedac('0x2f'),_0x2fa832);}},'vidaooEscalation':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![]},'vidaooApiKey':{'type':Sequelize[_0xedac('0x2')]},'vidaooTopic':{'type':Sequelize[_0xedac('0x2')],'allowNull':![],'defaultValue':_0xedac('0x30')},'vidaooNote':{'type':Sequelize[_0xedac('0x2')],'defaultValue':function(){return'Meeting\x20generated\x20for\x20interaction\x20#{{interaction.id}}\x20by\x20{{agent.name}}';}},'vidaooMetadata':{'type':Sequelize[_0xedac('0xf')],'defaultValue':null},'openNewInteraction':{'type':Sequelize[_0xedac('0x7')],'defaultValue':![],'allowNull':!![]},'subjectOffline':{'type':Sequelize[_0xedac('0xf')]}};
\ No newline at end of file
index ebf8c06..d1d7174 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8807=['addSystemAvatar','systemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','sitepic','../../config/license/util','getLicense','custom','isNil','existsSync','server/files/images/logos/','server/files/images/avatars/default_avatar.png','server/files/images/avatars/','download','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','getSystemAvatar','server/files/images/avatars/system_avatar.png','notify','user-agent-parser','setUA','user-agent','getResult','chat','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','from','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','CmList','Contacts','DESC','ChatApplication','Applications','account','applications','List','priority','defaults','ListId','contact','headers','cf-connecting-ip','first','x-forwarded-for','split','firstName','lastName','x-real-port','referer','browser','version','%s\x20%s','unknown','format','device','vendor','type','threadId','ChatInteraction','externalUrl','ContactId','interaction','messageId','created','push','close','unmanaged','*,*,*,*','AttachmentId','UserId','unshift','agent','startRouting','Start','EventManager','offline','files','CompanyId','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline','MailAccount','spread','readFileSync','toPairs','offlineMessageBody','ChatOfflineMessage','fromString','originalname','mimetype','server','attachments','offline-chat','basename','bulkCreate','MailServerOut','Smtp','CloudProvider','forwardOffline','forwardOfflineAddress','getSmtpOptions','sendMail','email','openNewInteraction','MailAccountId','toPairsIn','mapValues','offlineMessageSubject','Chat','NotifyMailAccount','notifyMail','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','omit','getInteractions','Contact','User','Owner','fullname','Tag','Tags','color','tag','Command','getSnippet','timezone','iftime\x20%s,%s','interval','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','inspect','Interval','Intervals','getProactiveActions','virtual','increment','chatLicenseExceeded','some','utf8','remote','stringify','connection','render','alignment','labelText','textColor','textButtonColor','color_button','hideWhenOffline','IntervalId','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','finally','sendStatus','getApplications','addProactiveActions','chatProactiveAction','getFields','online','offlineForm','onlineForm','items','fromKey','Attachment','Attachments','addAgents','emit','userChatWebsite:save','removeAgents','isArray','userChatWebsite:remove','getAgents','util','path','ejs','fs-extra','lodash','querystring','ioredis','../../components/parsers/qs','api','../../config/environment','../../mysqldb','redis','socket.io-emitter','./chatWebsite.socket','register','html-to-text','jayson/promise','client','http','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','error','code','message','result','end','status','undefined','offset','count','limit','Content-Range','json','update','destroy','get','ChatWebsites','UserProfileResource','stack','name','send','Pause','mandatoryDispositionPause','map','ChatWebsite','rawAttributes','fieldName','model','keys','filters','query','attributes','intersection','fields','hasOwnProperty','nolimit','sort','filter','where','merge','VIRTUAL','options','include','findAll','catch','params','find','create','body','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ChatWebsiteId','getDispositions','Disposition','order','includeAll','rows','removeDispositions','ids','addAnswer','getAnswers','findOne','length','pick','CannedAnswer','removeAnswers','addLogo','file','filename','agentAvatar','addCustomerAvatar','customerAvatar'];(function(_0x2fc9bc,_0x13dab2){var _0x5445b1=function(_0x557613){while(--_0x557613){_0x2fc9bc['push'](_0x2fc9bc['shift']());}};_0x5445b1(++_0x13dab2);}(_0x8807,0xbe));var _0x7880=function(_0x4e9a52,_0x25b20d){_0x4e9a52=_0x4e9a52-0x0;var _0x2d425f=_0x8807[_0x4e9a52];return _0x2d425f;};'use strict';var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x7880('0x0'));var path=require(_0x7880('0x1'));var ejs=require(_0x7880('0x2'));var fs=require('fs');var fs_extra=require(_0x7880('0x3'));var _=require(_0x7880('0x4'));var querystring=require(_0x7880('0x5'));var Redis=require(_0x7880('0x6'));var qs=require(_0x7880('0x7'));var logger=require('../../config/logger')(_0x7880('0x8'));var config=require(_0x7880('0x9'));var db=require(_0x7880('0xa'))['db'];config[_0x7880('0xb')]=_['defaults'](config[_0x7880('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0x7880('0xc'))(new Redis(config[_0x7880('0xb')]));require(_0x7880('0xd'))[_0x7880('0xe')](socket);var htmlToText=require(_0x7880('0xf'));var jayson=require(_0x7880('0x10'));var client=jayson[_0x7880('0x11')][_0x7880('0x12')]({'port':0x232c});var client9002=jayson[_0x7880('0x11')][_0x7880('0x12')]({'port':0x232a});var client9003=jayson['client'][_0x7880('0x12')]({'port':0x232b});var client9001=jayson[_0x7880('0x11')][_0x7880('0x12')]({'port':0x2329});function respondWithRpcPromise(_0x1f863d,_0x2cfe6b,_0x3502ec,_0x57d668){return new BPromise(function(_0x328dd5,_0x2b0539){var _0x25b0da=_0x57d668||client;return _0x25b0da[_0x7880('0x13')](_0x1f863d,_0x3502ec)[_0x7880('0x14')](function(_0xe5e50a){logger[_0x7880('0x15')](_0x7880('0x16'),_0x2cfe6b,_0x7880('0x17'));logger[_0x7880('0x18')](_0x7880('0x19'),_0x2cfe6b,_0x7880('0x17'),JSON['stringify'](_0xe5e50a));if(_0xe5e50a[_0x7880('0x1a')]){if(_0xe5e50a[_0x7880('0x1a')][_0x7880('0x1b')]===0x1f4){logger[_0x7880('0x1a')](_0x7880('0x16'),_0x2cfe6b,_0xe5e50a[_0x7880('0x1a')][_0x7880('0x1c')]);return _0x2b0539(_0xe5e50a[_0x7880('0x1a')][_0x7880('0x1c')]);}logger[_0x7880('0x1a')](_0x7880('0x16'),_0x2cfe6b,_0xe5e50a['error'][_0x7880('0x1c')]);return _0x328dd5(_0xe5e50a[_0x7880('0x1a')]['message']);}else{logger[_0x7880('0x15')](_0x7880('0x16'),_0x2cfe6b,_0x7880('0x17'));_0x328dd5(_0xe5e50a[_0x7880('0x1d')]['message']);}})['catch'](function(_0x2ff44f){logger[_0x7880('0x1a')](_0x7880('0x16'),_0x2cfe6b,_0x2ff44f);_0x2b0539(_0x2ff44f);});});}function respondWithStatusCode(_0x580c9a,_0x24e94b){_0x24e94b=_0x24e94b||0xcc;return function(_0x537e92){if(_0x537e92){return _0x580c9a['sendStatus'](_0x24e94b);}return _0x580c9a['status'](_0x24e94b)[_0x7880('0x1e')]();};}function respondWithResult(_0xf16732,_0x449507){_0x449507=_0x449507||0xc8;return function(_0x3cd09b){if(_0x3cd09b){return _0xf16732[_0x7880('0x1f')](_0x449507)['json'](_0x3cd09b);}};}function respondWithFilteredResult(_0x491474,_0xa5deac){return function(_0x37fbb0){if(_0x37fbb0){var _0x4b23fa=typeof _0xa5deac['offset']===_0x7880('0x20')&&typeof _0xa5deac['limit']===_0x7880('0x20');var _0x563a01=_0x37fbb0['count'];var _0x5dfbc3=_0x4b23fa?0x0:_0xa5deac[_0x7880('0x21')];var _0x16a4a6=_0x4b23fa?_0x37fbb0[_0x7880('0x22')]:_0xa5deac[_0x7880('0x21')]+_0xa5deac[_0x7880('0x23')];var _0xca23ec;if(_0x16a4a6>=_0x563a01){_0x16a4a6=_0x563a01;_0xca23ec=0xc8;}else{_0xca23ec=0xce;}_0x491474[_0x7880('0x1f')](_0xca23ec);return _0x491474['set'](_0x7880('0x24'),_0x5dfbc3+'-'+_0x16a4a6+'/'+_0x563a01)[_0x7880('0x25')](_0x37fbb0);}return null;};}function saveUpdates(_0x7bef9f){return function(_0x5dc7dc){if(_0x5dc7dc){return _0x5dc7dc[_0x7880('0x26')](_0x7bef9f)['then'](function(_0x28d1fc){return _0x28d1fc;});}return null;};}function removeEntity(_0x2dea37){return function(_0x4e6192){if(_0x4e6192){return _0x4e6192[_0x7880('0x27')]()[_0x7880('0x14')](function(){var _0x289146=_0x4e6192[_0x7880('0x28')]({'plain':!![]});var _0x15582f=_0x7880('0x29');return db[_0x7880('0x2a')][_0x7880('0x27')]({'where':{'type':_0x15582f,'resourceId':_0x289146['id']}})['then'](function(){return _0x4e6192;});})[_0x7880('0x14')](function(){_0x2dea37['status'](0xcc)[_0x7880('0x1e')]();});}};}function handleEntityNotFound(_0x5d8141){return function(_0x28c031){if(!_0x28c031){_0x5d8141['sendStatus'](0x194);}return _0x28c031;};}function handleError(_0x55a122,_0x23bc94){_0x23bc94=_0x23bc94||0x1f4;return function(_0x52b4b1){logger[_0x7880('0x1a')](_0x52b4b1[_0x7880('0x2b')]);if(_0x52b4b1[_0x7880('0x2c')]){delete _0x52b4b1[_0x7880('0x2c')];}_0x55a122['status'](_0x23bc94)[_0x7880('0x2d')](_0x52b4b1);};}exports['index']=function(_0x4b6e08,_0x2d03eb){var _0x1ef88b={'include':[{'model':db[_0x7880('0x2e')],'as':_0x7880('0x2f')}]},_0x456ed={},_0x5dcc4b={'count':0x0,'rows':[]};var _0x200926=_[_0x7880('0x30')](db[_0x7880('0x31')][_0x7880('0x32')],function(_0x2095cb){return{'name':_0x2095cb[_0x7880('0x33')],'type':_0x2095cb['type']['key']};});_0x456ed[_0x7880('0x34')]=_[_0x7880('0x30')](_0x200926,_0x7880('0x2c'));_0x456ed['query']=_[_0x7880('0x35')](_0x4b6e08['query']);_0x456ed[_0x7880('0x36')]=_['intersection'](_0x456ed[_0x7880('0x34')],_0x456ed[_0x7880('0x37')]);_0x1ef88b[_0x7880('0x38')]=_[_0x7880('0x39')](_0x456ed['model'],qs[_0x7880('0x3a')](_0x4b6e08[_0x7880('0x37')]['fields']));_0x1ef88b[_0x7880('0x38')]=_0x1ef88b[_0x7880('0x38')]['length']?_0x1ef88b[_0x7880('0x38')]:_0x456ed[_0x7880('0x34')];if(!_0x4b6e08[_0x7880('0x37')][_0x7880('0x3b')](_0x7880('0x3c'))){_0x1ef88b[_0x7880('0x23')]=qs[_0x7880('0x23')](_0x4b6e08[_0x7880('0x37')][_0x7880('0x23')]);_0x1ef88b['offset']=qs[_0x7880('0x21')](_0x4b6e08[_0x7880('0x37')][_0x7880('0x21')]);}_0x1ef88b['order']=qs['sort'](_0x4b6e08[_0x7880('0x37')][_0x7880('0x3d')]);_0x1ef88b['where']=qs[_0x7880('0x36')](_['pick'](_0x4b6e08['query'],_0x456ed[_0x7880('0x36')]),_0x200926);if(_0x4b6e08['query'][_0x7880('0x3e')]){_0x1ef88b[_0x7880('0x3f')]=_[_0x7880('0x40')](_0x1ef88b['where'],{'$or':_['map'](_0x200926,function(_0x2f930e){if(_0x2f930e['type']!==_0x7880('0x41')){var _0x515a00={};_0x515a00[_0x2f930e[_0x7880('0x2c')]]={'$like':'%'+_0x4b6e08['query'][_0x7880('0x3e')]+'%'};return _0x515a00;}})});}_0x1ef88b=_[_0x7880('0x40')]({},_0x1ef88b,_0x4b6e08[_0x7880('0x42')]);var _0x55bb8a={'where':_0x1ef88b[_0x7880('0x3f')]};return db[_0x7880('0x31')][_0x7880('0x22')](_0x55bb8a)[_0x7880('0x14')](function(_0x251235){_0x5dcc4b[_0x7880('0x22')]=_0x251235;if(_0x4b6e08[_0x7880('0x37')]['includeAll']){_0x1ef88b[_0x7880('0x43')]=[{'all':!![]}];}return db[_0x7880('0x31')][_0x7880('0x44')](_0x1ef88b);})[_0x7880('0x14')](function(_0x5d47d2){_0x5dcc4b['rows']=_0x5d47d2;return _0x5dcc4b;})[_0x7880('0x14')](respondWithFilteredResult(_0x2d03eb,_0x1ef88b))[_0x7880('0x45')](handleError(_0x2d03eb,null));};exports['show']=function(_0x4c1d26,_0x3d4032){var _0x51c19e={'raw':![],'where':{'id':_0x4c1d26[_0x7880('0x46')]['id']},'include':[{'model':db[_0x7880('0x2e')],'as':'mandatoryDispositionPause'}]},_0x1b3cb0={};_0x1b3cb0[_0x7880('0x34')]=_[_0x7880('0x35')](db[_0x7880('0x31')]['rawAttributes']);_0x1b3cb0['query']=_[_0x7880('0x35')](_0x4c1d26[_0x7880('0x37')]);_0x1b3cb0[_0x7880('0x36')]=_[_0x7880('0x39')](_0x1b3cb0[_0x7880('0x34')],_0x1b3cb0[_0x7880('0x37')]);_0x51c19e['attributes']=_['intersection'](_0x1b3cb0[_0x7880('0x34')],qs[_0x7880('0x3a')](_0x4c1d26[_0x7880('0x37')][_0x7880('0x3a')]));_0x51c19e[_0x7880('0x38')]=_0x51c19e[_0x7880('0x38')]['length']?_0x51c19e['attributes']:_0x1b3cb0[_0x7880('0x34')];if(_0x4c1d26[_0x7880('0x37')]['includeAll']){_0x51c19e[_0x7880('0x43')]=[{'all':!![]}];}_0x51c19e=_[_0x7880('0x40')]({},_0x51c19e,_0x4c1d26['options']);return db[_0x7880('0x31')][_0x7880('0x47')](_0x51c19e)[_0x7880('0x14')](handleEntityNotFound(_0x3d4032,null))[_0x7880('0x14')](respondWithResult(_0x3d4032,null))[_0x7880('0x45')](handleError(_0x3d4032,null));};exports['create']=function(_0x557076,_0x5dc65c){return db[_0x7880('0x31')][_0x7880('0x48')](_0x557076[_0x7880('0x49')],{})[_0x7880('0x14')](function(_0x9cfb70){var _0x3430d6=_0x557076[_0x7880('0x4a')][_0x7880('0x28')]({'plain':!![]});if(!_0x3430d6)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3430d6[_0x7880('0x4b')]===_0x7880('0x4a')){var _0x3ca931=_0x9cfb70[_0x7880('0x28')]({'plain':!![]});var _0x4e7c2d='ChatWebsites';return db[_0x7880('0x4c')]['find']({'where':{'name':_0x4e7c2d,'userProfileId':_0x3430d6[_0x7880('0x4d')]},'raw':!![]})[_0x7880('0x14')](function(_0x47aca3){if(_0x47aca3&&_0x47aca3[_0x7880('0x4e')]===0x0){return db['UserProfileResource']['create']({'name':_0x3ca931[_0x7880('0x2c')],'resourceId':_0x3ca931['id'],'type':_0x47aca3[_0x7880('0x2c')],'sectionId':_0x47aca3['id']},{})[_0x7880('0x14')](function(){return _0x9cfb70;});}else{return _0x9cfb70;}})[_0x7880('0x45')](function(_0x2a578c){logger[_0x7880('0x1a')](_0x7880('0x4f'),_0x2a578c);throw _0x2a578c;});}return _0x9cfb70;})[_0x7880('0x14')](respondWithResult(_0x5dc65c,0xc9))['catch'](handleError(_0x5dc65c,null));};exports['update']=function(_0x32b2da,_0x241529){if(_0x32b2da[_0x7880('0x49')]['id']){delete _0x32b2da[_0x7880('0x49')]['id'];}return db[_0x7880('0x31')][_0x7880('0x47')]({'where':{'id':_0x32b2da[_0x7880('0x46')]['id']},'include':[{'model':db[_0x7880('0x2e')],'as':_0x7880('0x2f')}]})[_0x7880('0x14')](handleEntityNotFound(_0x241529,null))['then'](saveUpdates(_0x32b2da[_0x7880('0x49')],null))[_0x7880('0x14')](respondWithResult(_0x241529,null))[_0x7880('0x45')](handleError(_0x241529,null));};exports['destroy']=function(_0x26085f,_0x13a7cb){return db[_0x7880('0x31')][_0x7880('0x47')]({'where':{'id':_0x26085f[_0x7880('0x46')]['id']}})[_0x7880('0x14')](handleEntityNotFound(_0x13a7cb,null))[_0x7880('0x14')](removeEntity(_0x13a7cb,null))['catch'](handleError(_0x13a7cb,null));};exports[_0x7880('0x50')]=function(_0x234039,_0x8a0f0d){return db['ChatWebsite'][_0x7880('0x50')]()[_0x7880('0x14')](respondWithResult(_0x8a0f0d,null))['catch'](handleError(_0x8a0f0d,null));};exports[_0x7880('0x51')]=function(_0xfd4e33,_0x136d76){if(_0xfd4e33[_0x7880('0x49')]['id']){delete _0xfd4e33[_0x7880('0x49')]['id'];}return db['ChatWebsite'][_0x7880('0x47')]({'where':{'id':_0xfd4e33[_0x7880('0x46')]['id']}})['then'](handleEntityNotFound(_0x136d76,null))[_0x7880('0x14')](function(_0x5cfcd7){if(_0x5cfcd7){_0xfd4e33[_0x7880('0x49')][_0x7880('0x52')]=_0x5cfcd7['id'];return db['Disposition'][_0x7880('0x48')](_0xfd4e33[_0x7880('0x49')]);}})['then'](respondWithResult(_0x136d76,null))['catch'](handleError(_0x136d76,null));};exports[_0x7880('0x53')]=function(_0x46f2b9,_0x5a65a0){var _0x5a21f6={'raw':![],'where':{}};var _0x476864={};var _0x5b8bcb={'count':0x0,'rows':[]};return db[_0x7880('0x31')]['findOne']({'where':{'id':_0x46f2b9[_0x7880('0x46')]['id']}})[_0x7880('0x14')](handleEntityNotFound(_0x5a65a0,null))[_0x7880('0x14')](function(_0xf264f9){if(_0xf264f9){_0x476864['model']=_['keys'](db[_0x7880('0x54')][_0x7880('0x32')]);_0x476864[_0x7880('0x37')]=_[_0x7880('0x35')](_0x46f2b9[_0x7880('0x37')]);_0x476864[_0x7880('0x36')]=_[_0x7880('0x39')](_0x476864[_0x7880('0x34')],_0x476864[_0x7880('0x37')]);_0x5a21f6[_0x7880('0x38')]=_['intersection'](_0x476864[_0x7880('0x34')],qs[_0x7880('0x3a')](_0x46f2b9[_0x7880('0x37')]['fields']));_0x5a21f6[_0x7880('0x38')]=_0x5a21f6['attributes']['length']?_0x5a21f6[_0x7880('0x38')]:_0x476864['model'];if(!_0x46f2b9['query']['hasOwnProperty'](_0x7880('0x3c'))){_0x5a21f6[_0x7880('0x23')]=qs['limit'](_0x46f2b9[_0x7880('0x37')]['limit']);_0x5a21f6[_0x7880('0x21')]=qs[_0x7880('0x21')](_0x46f2b9[_0x7880('0x37')][_0x7880('0x21')]);}_0x5a21f6[_0x7880('0x55')]=qs[_0x7880('0x3d')](_0x46f2b9[_0x7880('0x37')][_0x7880('0x3d')]);_0x5a21f6[_0x7880('0x3f')]=qs[_0x7880('0x36')](_['pick'](_0x46f2b9[_0x7880('0x37')],_0x476864['filters']));_0x5a21f6['where'][_0x7880('0x52')]=_0xf264f9['id'];if(_0x46f2b9[_0x7880('0x37')]['filter']){_0x5a21f6[_0x7880('0x3f')]=_[_0x7880('0x40')](_0x5a21f6[_0x7880('0x3f')],{'$or':_[_0x7880('0x30')](_0x5a21f6[_0x7880('0x38')],function(_0x57902d){var _0x20e579={};_0x20e579[_0x57902d]={'$like':'%'+_0x46f2b9['query'][_0x7880('0x3e')]+'%'};return _0x20e579;})});}_0x5a21f6=_[_0x7880('0x40')]({},_0x5a21f6,_0x46f2b9[_0x7880('0x42')]);return db[_0x7880('0x54')][_0x7880('0x22')]({'where':_0x5a21f6['where']})[_0x7880('0x14')](function(_0x1d8f00){_0x5b8bcb['count']=_0x1d8f00;if(_0x46f2b9[_0x7880('0x37')][_0x7880('0x56')]){_0x5a21f6[_0x7880('0x43')]=[{'all':!![]}];}return db[_0x7880('0x54')][_0x7880('0x44')](_0x5a21f6);})['then'](function(_0x317cca){_0x5b8bcb[_0x7880('0x57')]=_0x317cca;return _0x5b8bcb;});}})[_0x7880('0x14')](respondWithFilteredResult(_0x5a65a0,_0x5a21f6))[_0x7880('0x45')](handleError(_0x5a65a0,null));};exports[_0x7880('0x58')]=function(_0x832942,_0x461abe){return db['ChatWebsite'][_0x7880('0x47')]({'where':{'id':_0x832942[_0x7880('0x46')]['id']}})[_0x7880('0x14')](handleEntityNotFound(_0x461abe,null))[_0x7880('0x14')](function(_0x5e1545){if(_0x5e1545){return _0x5e1545[_0x7880('0x58')](_0x832942[_0x7880('0x37')][_0x7880('0x59')]);}})[_0x7880('0x14')](respondWithStatusCode(_0x461abe,null))[_0x7880('0x45')](handleError(_0x461abe,null));};exports[_0x7880('0x5a')]=function(_0x261b68,_0x404f13){if(_0x261b68[_0x7880('0x49')]['id']){delete _0x261b68[_0x7880('0x49')]['id'];}return db[_0x7880('0x31')][_0x7880('0x47')]({'where':{'id':_0x261b68[_0x7880('0x46')]['id']}})[_0x7880('0x14')](handleEntityNotFound(_0x404f13,null))['then'](function(_0x54a59e){if(_0x54a59e){_0x261b68[_0x7880('0x49')]['ChatWebsiteId']=_0x54a59e['id'];return db['CannedAnswer'][_0x7880('0x48')](_0x261b68['body']);}})['then'](respondWithResult(_0x404f13,null))[_0x7880('0x45')](handleError(_0x404f13,null));};exports[_0x7880('0x5b')]=function(_0x588ea5,_0x9e80b5){var _0x2b2e5c={'raw':![],'where':{}};var _0x596832={};var _0x2cda41={'count':0x0,'rows':[]};return db['ChatWebsite'][_0x7880('0x5c')]({'where':{'id':_0x588ea5[_0x7880('0x46')]['id']}})['then'](handleEntityNotFound(_0x9e80b5,null))[_0x7880('0x14')](function(_0x21c33c){if(_0x21c33c){_0x596832[_0x7880('0x34')]=_[_0x7880('0x35')](db['CannedAnswer']['rawAttributes']);_0x596832[_0x7880('0x37')]=_[_0x7880('0x35')](_0x588ea5['query']);_0x596832[_0x7880('0x36')]=_[_0x7880('0x39')](_0x596832['model'],_0x596832['query']);_0x2b2e5c[_0x7880('0x38')]=_[_0x7880('0x39')](_0x596832['model'],qs[_0x7880('0x3a')](_0x588ea5[_0x7880('0x37')]['fields']));_0x2b2e5c[_0x7880('0x38')]=_0x2b2e5c[_0x7880('0x38')][_0x7880('0x5d')]?_0x2b2e5c['attributes']:_0x596832[_0x7880('0x34')];if(!_0x588ea5['query'][_0x7880('0x3b')]('nolimit')){_0x2b2e5c[_0x7880('0x23')]=qs[_0x7880('0x23')](_0x588ea5['query']['limit']);_0x2b2e5c[_0x7880('0x21')]=qs['offset'](_0x588ea5['query'][_0x7880('0x21')]);}_0x2b2e5c[_0x7880('0x55')]=qs['sort'](_0x588ea5[_0x7880('0x37')][_0x7880('0x3d')]);_0x2b2e5c[_0x7880('0x3f')]=qs['filters'](_[_0x7880('0x5e')](_0x588ea5[_0x7880('0x37')],_0x596832[_0x7880('0x36')]));_0x2b2e5c[_0x7880('0x3f')][_0x7880('0x52')]=_0x21c33c['id'];if(_0x588ea5[_0x7880('0x37')][_0x7880('0x3e')]){_0x2b2e5c[_0x7880('0x3f')]=_[_0x7880('0x40')](_0x2b2e5c['where'],{'$or':_['map'](_0x2b2e5c[_0x7880('0x38')],function(_0x4e669c){var _0x4c3656={};_0x4c3656[_0x4e669c]={'$like':'%'+_0x588ea5['query'][_0x7880('0x3e')]+'%'};return _0x4c3656;})});}_0x2b2e5c=_['merge']({},_0x2b2e5c,_0x588ea5[_0x7880('0x42')]);return db['CannedAnswer'][_0x7880('0x22')]({'where':_0x2b2e5c[_0x7880('0x3f')]})['then'](function(_0x225042){_0x2cda41[_0x7880('0x22')]=_0x225042;if(_0x588ea5[_0x7880('0x37')]['includeAll']){_0x2b2e5c['include']=[{'all':!![]}];}return db[_0x7880('0x5f')][_0x7880('0x44')](_0x2b2e5c);})[_0x7880('0x14')](function(_0x4e1bd0){_0x2cda41['rows']=_0x4e1bd0;return _0x2cda41;});}})[_0x7880('0x14')](respondWithFilteredResult(_0x9e80b5,_0x2b2e5c))[_0x7880('0x45')](handleError(_0x9e80b5,null));};exports[_0x7880('0x60')]=function(_0x4f1cf9,_0x7da375){return db[_0x7880('0x31')][_0x7880('0x47')]({'where':{'id':_0x4f1cf9[_0x7880('0x46')]['id']}})[_0x7880('0x14')](handleEntityNotFound(_0x7da375,null))[_0x7880('0x14')](function(_0x46afef){if(_0x46afef){return _0x46afef[_0x7880('0x60')](_0x4f1cf9[_0x7880('0x37')][_0x7880('0x59')]);}})['then'](respondWithStatusCode(_0x7da375,null))[_0x7880('0x45')](handleError(_0x7da375,null));};exports[_0x7880('0x61')]=function(_0x5746c4,_0x61f98c){_0x5746c4[_0x7880('0x49')]['sitepic']=_0x5746c4[_0x7880('0x62')][_0x7880('0x63')];return db[_0x7880('0x31')]['find']({'where':{'id':_0x5746c4[_0x7880('0x46')]['id']}})['then'](handleEntityNotFound(_0x61f98c,null))[_0x7880('0x14')](saveUpdates(_0x5746c4['body'],null))[_0x7880('0x14')](respondWithResult(_0x61f98c,null))[_0x7880('0x45')](handleError(_0x61f98c,null));};exports['addAvatar']=function(_0x414c1b,_0x3a9e14){_0x414c1b[_0x7880('0x49')][_0x7880('0x64')]=_0x414c1b[_0x7880('0x62')]['filename'];return db['ChatWebsite']['find']({'where':{'id':_0x414c1b[_0x7880('0x46')]['id']}})[_0x7880('0x14')](handleEntityNotFound(_0x3a9e14,null))[_0x7880('0x14')](saveUpdates(_0x414c1b[_0x7880('0x49')],null))[_0x7880('0x14')](respondWithResult(_0x3a9e14,null))[_0x7880('0x45')](handleError(_0x3a9e14,null));};exports[_0x7880('0x65')]=function(_0x351a13,_0x1fc643){_0x351a13['body'][_0x7880('0x66')]=_0x351a13[_0x7880('0x62')]['filename'];return db[_0x7880('0x31')]['find']({'where':{'id':_0x351a13[_0x7880('0x46')]['id']}})[_0x7880('0x14')](handleEntityNotFound(_0x1fc643,null))[_0x7880('0x14')](saveUpdates(_0x351a13['body'],null))['then'](respondWithResult(_0x1fc643,null))[_0x7880('0x45')](handleError(_0x1fc643,null));};exports[_0x7880('0x67')]=function(_0x2822b0,_0x598b66){_0x2822b0[_0x7880('0x49')][_0x7880('0x68')]=_0x2822b0[_0x7880('0x62')]['filename'];return db[_0x7880('0x31')]['find']({'where':{'id':_0x2822b0[_0x7880('0x46')]['id']}})['then'](handleEntityNotFound(_0x598b66,null))['then'](saveUpdates(_0x2822b0[_0x7880('0x49')],null))[_0x7880('0x14')](respondWithResult(_0x598b66,null))[_0x7880('0x45')](handleError(_0x598b66,null));};exports[_0x7880('0x69')]=function(_0x1594de,_0x6e864f){var _0x5004b2=path[_0x7880('0x6a')](config[_0x7880('0x6b')],_0x7880('0x6c'));var _0x4044ef={'where':{'id':_0x1594de[_0x7880('0x46')]['id']},'attributes':['id',_0x7880('0x6d')],'raw':!![]};var _0x2b4c57=![];return require(_0x7880('0x6e'))[_0x7880('0x6f')]()[_0x7880('0x14')](function(_0x1bf944){if(_0x1bf944){_0x2b4c57=_0x1bf944[_0x7880('0x70')];}})[_0x7880('0x14')](function(){return db['ChatWebsite'][_0x7880('0x47')](_0x4044ef);})[_0x7880('0x14')](handleEntityNotFound(_0x6e864f,null))[_0x7880('0x14')](function(_0x2430c8){if(_0x2430c8){if(!_[_0x7880('0x71')](_0x2430c8[_0x7880('0x6d')])){if(fs[_0x7880('0x72')](path[_0x7880('0x6a')](config[_0x7880('0x6b')],_0x7880('0x73'),_0x2430c8['sitepic']))&&_0x2b4c57){_0x5004b2=path[_0x7880('0x6a')](config['root'],'server/files/images/logos/',_0x2430c8[_0x7880('0x6d')]);}}return _0x6e864f['download'](_0x5004b2);}})[_0x7880('0x45')](handleError(_0x6e864f,null));};exports['getAvatar']=function(_0x29adfc,_0x259776){var _0xa5071e=path['join'](config[_0x7880('0x6b')],_0x7880('0x74'));var _0x70c35b={'where':{'id':_0x29adfc[_0x7880('0x46')]['id']},'attributes':['id',_0x7880('0x64')],'raw':!![]};return db[_0x7880('0x31')][_0x7880('0x47')](_0x70c35b)[_0x7880('0x14')](handleEntityNotFound(_0x259776,null))[_0x7880('0x14')](function(_0x4c85f9){if(_0x4c85f9){if(!_[_0x7880('0x71')](_0x4c85f9[_0x7880('0x64')])){if(fs[_0x7880('0x72')](path['join'](config[_0x7880('0x6b')],'server/files/images/avatars/',_0x4c85f9[_0x7880('0x64')]))){_0xa5071e=path[_0x7880('0x6a')](config['root'],_0x7880('0x75'),_0x4c85f9[_0x7880('0x64')]);}}return _0x259776[_0x7880('0x76')](_0xa5071e);}})[_0x7880('0x45')](handleError(_0x259776,null));};exports[_0x7880('0x77')]=function(_0x5abaa9,_0x1da4c9){var _0x452075=path['join'](config[_0x7880('0x6b')],_0x7880('0x78'));var _0x18e74a={'where':{'id':_0x5abaa9['params']['id']},'attributes':['id',_0x7880('0x66'),_0x7880('0x79')],'raw':!![]};return db[_0x7880('0x31')][_0x7880('0x47')](_0x18e74a)['then'](handleEntityNotFound(_0x1da4c9,null))[_0x7880('0x14')](function(_0x1c78e2){if(_0x1c78e2){if(!_[_0x7880('0x71')](_0x1c78e2[_0x7880('0x66')])){if(fs['existsSync'](path[_0x7880('0x6a')](config['root'],_0x7880('0x75'),_0x1c78e2[_0x7880('0x66')]))&&_0x1c78e2[_0x7880('0x79')]){_0x452075=path['join'](config['root'],_0x7880('0x75'),_0x1c78e2[_0x7880('0x66')]);}}return _0x1da4c9[_0x7880('0x76')](_0x452075);}})[_0x7880('0x45')](handleError(_0x1da4c9,null));};exports[_0x7880('0x7a')]=function(_0x14910b,_0x43a0a1){var _0x1235ee=path['join'](config[_0x7880('0x6b')],_0x7880('0x7b'));var _0xfae2e5={'where':{'id':_0x14910b[_0x7880('0x46')]['id']},'attributes':['id',_0x7880('0x68')],'raw':!![]};return db['ChatWebsite']['find'](_0xfae2e5)[_0x7880('0x14')](handleEntityNotFound(_0x43a0a1,null))[_0x7880('0x14')](function(_0x56f725){if(_0x56f725){if(!_['isNil'](_0x56f725[_0x7880('0x68')])){if(fs[_0x7880('0x72')](path[_0x7880('0x6a')](config['root'],'server/files/images/avatars/',_0x56f725[_0x7880('0x68')]))){_0x1235ee=path['join'](config[_0x7880('0x6b')],_0x7880('0x75'),_0x56f725[_0x7880('0x68')]);}}return _0x43a0a1[_0x7880('0x76')](_0x1235ee);}})['catch'](handleError(_0x43a0a1,null));};exports[_0x7880('0x7c')]=function(_0x1ecd8d,_0x3fff72){var _0x8f0033=require(_0x7880('0x7d'));var _0x4452d9=new _0x8f0033();var _0x1ccf60=_0x4452d9[_0x7880('0x7e')](_0x1ecd8d['headers'][_0x7880('0x7f')])[_0x7880('0x80')]();var _0x4ff740={'body':_0x1ecd8d[_0x7880('0x49')],'channel':_0x7880('0x81')};var _0x4f1162=[];var _0x9ade51=[];var _0x552f4d={};var _0x50b466=![];return db[_0x7880('0x82')][_0x7880('0x50')]()['then'](function(_0xc0de14){if(!_0xc0de14){throw new db[(_0x7880('0x83'))][(_0x7880('0x84'))](_0x7880('0x85'));}_0x4f1162=_[_0x7880('0x86')](_['keys'](_0xc0de14),[_0x7880('0x87'),_0x7880('0x88')]);_0x9ade51=_['difference'](_[_0x7880('0x35')](_0xc0de14),['createdAt','updatedAt','CompanyId','ListId']);if(_0x1ecd8d[_0x7880('0x49')]['id']){delete _0x1ecd8d[_0x7880('0x49')]['id'];}if(_[_0x7880('0x71')](_0x1ecd8d[_0x7880('0x49')][_0x7880('0x89')])){throw new db[(_0x7880('0x83'))]['ValidationError'](_0x7880('0x8a'));}if(_[_0x7880('0x71')](_0x1ecd8d[_0x7880('0x49')][_0x7880('0x49')])||_0x1ecd8d[_0x7880('0x49')]['body']===''){throw new db[(_0x7880('0x83'))][(_0x7880('0x84'))](_0x7880('0x8b'));}if(_[_0x7880('0x71')](_0x1ecd8d['body'][_0x7880('0x8c')])){throw new db[(_0x7880('0x83'))][(_0x7880('0x84'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x9ade51);}if(!_[_0x7880('0x8d')](_0x9ade51,_0x1ecd8d[_0x7880('0x49')][_0x7880('0x8c')])){throw new db[(_0x7880('0x83'))]['ValidationError']('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x9ade51);}_0x552f4d[_0x1ecd8d[_0x7880('0x49')][_0x7880('0x8c')]]=_0x1ecd8d['body'][_0x7880('0x89')];})[_0x7880('0x14')](function(){return db['ChatWebsite'][_0x7880('0x47')]({'where':{'id':_0x1ecd8d[_0x7880('0x46')]['id']},'include':[{'model':db[_0x7880('0x8e')],'as':'List','include':[{'model':db[_0x7880('0x82')],'as':_0x7880('0x8f'),'where':_0x552f4d,'limit':0x1,'order':[['updatedAt',_0x7880('0x90')]]}]},{'model':db[_0x7880('0x91')],'as':_0x7880('0x92')}]});})[_0x7880('0x14')](handleEntityNotFound(_0x3fff72,null))[_0x7880('0x14')](function(_0x58fca9){if(_0x58fca9&&_0x58fca9['List']){_0x4ff740[_0x7880('0x93')]=_0x58fca9;_0x4ff740[_0x7880('0x94')]=_0x58fca9[_0x7880('0x92')];_0x4ff740['list']=_0x58fca9[_0x7880('0x95')];_0x4ff740[_0x7880('0x94')]=_['orderBy'](_0x4ff740['applications'],[_0x7880('0x96')],['asc']);if(_0x4ff740[_0x7880('0x93')][_0x7880('0x92')]){delete _0x4ff740[_0x7880('0x93')][_0x7880('0x92')];}if(_0x4ff740[_0x7880('0x93')][_0x7880('0x95')]&&_0x4ff740[_0x7880('0x93')][_0x7880('0x95')][_0x7880('0x8f')]['length']){return _0x4ff740[_0x7880('0x93')]['List']['Contacts'][0x0];}var _0x20c3ba=_[_0x7880('0x97')](_0x1ecd8d['body'],{'firstName':_0x1ecd8d['body'][_0x7880('0x89')],'ListId':_0x58fca9[_0x7880('0x98')]});_0x20c3ba[_0x1ecd8d['body'][_0x7880('0x8c')]]=_0x1ecd8d[_0x7880('0x49')][_0x7880('0x89')];return db[_0x7880('0x82')][_0x7880('0x48')](_0x20c3ba,{'fields':_0x4f1162,'raw':!![]});}})[_0x7880('0x14')](handleEntityNotFound(_0x3fff72,null))[_0x7880('0x14')](function(_0x4666f9){_0x4ff740[_0x7880('0x99')]=_0x4666f9;var _0x4bcb6b=_0x1ecd8d[_0x7880('0x49')]['customerIp'];if(_0x1ecd8d[_0x7880('0x9a')][_0x7880('0x9b')]){_0x4bcb6b=_0x1ecd8d['headers'][_0x7880('0x9b')];}else if(_0x1ecd8d[_0x7880('0x9a')]['x-forwarded-for']){_0x4bcb6b=_[_0x7880('0x9c')](_0x1ecd8d[_0x7880('0x9a')][_0x7880('0x9d')][_0x7880('0x9e')](','));}if(_0x4666f9){var _0x4e8812={'ContactId':_0x4666f9['id'],'ChatWebsiteId':_0x1ecd8d[_0x7880('0x46')]['id'],'from':(_0x4666f9[_0x7880('0x9f')]||'')+'\x20'+(_0x4666f9[_0x7880('0xa0')]||''),'customerIp':_0x4bcb6b,'customerPort':_0x1ecd8d[_0x7880('0x9a')][_0x7880('0xa1')]?_0x1ecd8d[_0x7880('0x9a')][_0x7880('0xa1')]:null,'referer':_0x1ecd8d[_0x7880('0x49')][_0x7880('0xa2')],'browserName':_0x1ccf60['browser']['name']&&_0x1ccf60[_0x7880('0xa3')][_0x7880('0xa4')]?util['format'](_0x7880('0xa5'),_0x1ccf60[_0x7880('0xa3')][_0x7880('0x2c')],_0x1ccf60[_0x7880('0xa3')][_0x7880('0xa4')]):_0x7880('0xa6'),'browserVersion':_0x1ccf60[_0x7880('0xa3')][_0x7880('0xa4')]||_0x7880('0xa6'),'osName':util[_0x7880('0xa7')](_0x7880('0xa5'),_0x1ccf60['os'][_0x7880('0x2c')],_0x1ccf60['os'][_0x7880('0xa4')]),'osVersion':_0x1ccf60['os']['version'],'deviceModel':_0x1ccf60[_0x7880('0xa8')][_0x7880('0x34')]&&_0x1ccf60[_0x7880('0xa8')]['vendor']?util[_0x7880('0xa7')]('%s\x20%s\x20%s',_0x1ccf60['device'][_0x7880('0x34')],_0x1ccf60[_0x7880('0xa8')]['vendor'],_0x1ccf60['device']['type']):null,'deviceVendor':_0x1ccf60[_0x7880('0xa8')][_0x7880('0xa9')],'deviceType':_0x1ccf60[_0x7880('0xa8')][_0x7880('0xaa')],'formData':JSON['stringify'](_0x1ecd8d[_0x7880('0x49')])};var _0x2617f0={'ChatWebsiteId':_0x1ecd8d['params']['id'],'closed':![]};if(_0x1ecd8d['body'][_0x7880('0xab')]){_0x2617f0[_0x7880('0xab')]=_0x1ecd8d[_0x7880('0x49')][_0x7880('0xab')];return db[_0x7880('0xac')][_0x7880('0x47')]({'where':_0x2617f0})[_0x7880('0x14')](function(_0x539430){if(_0x539430){return[_0x539430,![]];}_0x4e8812[_0x7880('0xab')]=_0x1ecd8d[_0x7880('0x49')][_0x7880('0xab')];_0x4e8812[_0x7880('0xad')]=_0x1ecd8d[_0x7880('0x49')][_0x7880('0xad')];return db[_0x7880('0xac')][_0x7880('0x48')](_0x4e8812)[_0x7880('0x14')](function(_0x259d06){return[_0x259d06,!![]];});});}_0x2617f0[_0x7880('0xae')]=_0x4666f9['id'];if(_0x1ecd8d['body'][_0x7880('0xaf')]&&_0x1ecd8d['body'][_0x7880('0xaf')]['id']){_0x2617f0['id']=_0x1ecd8d[_0x7880('0x49')][_0x7880('0xaf')]['id'];return db[_0x7880('0xac')]['find']({'where':_0x2617f0})[_0x7880('0x14')](function(_0x4f90bb){if(_0x4f90bb){return[_0x4f90bb,![]];}return db[_0x7880('0xac')][_0x7880('0x48')](_0x4e8812)['then'](function(_0x435008){return[_0x435008,!![]];});});}return db[_0x7880('0xac')][_0x7880('0x48')](_0x4e8812)[_0x7880('0x14')](function(_0x49f2c6){return[_0x49f2c6,!![]];});}})['spread'](function(_0x12aaa9,_0x35123f){if(_0x12aaa9){_0x50b466=_0x35123f;if(!_0x35123f){var _0x5729d4={'from':(_0x4ff740['contact'][_0x7880('0x9f')]||'')+'\x20'+(_0x4ff740['contact'][_0x7880('0xa0')]||'')};if(_0x1ecd8d['body'][_0x7880('0xab')]&&_0x1ecd8d[_0x7880('0x49')][_0x7880('0xb0')]&&_0x1ecd8d[_0x7880('0x49')][_0x7880('0xab')]!=_0x1ecd8d[_0x7880('0x49')][_0x7880('0xb0')]){_0x5729d4[_0x7880('0xab')]=_0x1ecd8d[_0x7880('0x49')][_0x7880('0xb0')];}return _0x12aaa9[_0x7880('0x26')](_0x5729d4);}else{return _0x12aaa9;}}})[_0x7880('0x14')](function(_0x54c1ca){_0x4ff740[_0x7880('0xaf')]=_0x54c1ca[_0x7880('0x28')]({'plain':!![]});_0x4ff740[_0x7880('0xaf')][_0x7880('0xb1')]=_0x50b466;if(_0x4ff740[_0x7880('0xaf')][_0x7880('0xb1')]){if(_0x4ff740[_0x7880('0x93')]['autoclose']){_0x4ff740[_0x7880('0x94')][_0x7880('0xb2')]({'id':0x0,'priority':_0x4ff740[_0x7880('0x94')]['length']+0x1,'app':_0x7880('0xb3'),'appdata':_0x7880('0xb4'),'interval':_0x7880('0xb5')});}}return db['ChatMessage'][_0x7880('0x48')]({'body':_0x1ecd8d[_0x7880('0x49')][_0x7880('0x49')],'ChatWebsiteId':_0x1ecd8d[_0x7880('0x46')]['id'],'ChatInteractionId':_0x54c1ca['id'],'direction':'in','ContactId':_0x4ff740[_0x7880('0x99')]['id'],'AttachmentId':_0x1ecd8d[_0x7880('0x49')][_0x7880('0xb6')]});})[_0x7880('0x14')](function(_0x920a22){_0x4ff740['message']=_0x920a22;if(_0x4ff740[_0x7880('0xaf')][_0x7880('0xb7')]){return db['User']['find']({'attributes':['id',_0x7880('0x2c')],'where':{'id':_0x4ff740[_0x7880('0xaf')][_0x7880('0xb7')]}})[_0x7880('0x14')](function(_0x2982a7){if(_0x2982a7){_0x4ff740[_0x7880('0x94')][_0x7880('0xb8')]({'id':0x0,'priority':0x0,'app':_0x7880('0xb9'),'appdata':_0x2982a7[_0x7880('0x2c')]+','+(_0x4ff740[_0x7880('0x93')]['waitForTheAssignedAgent']||0xa),'interval':_0x7880('0xb5')});_0x4ff740['forcedOwnership']=!![];}return respondWithRpcPromise('Start',_0x7880('0xba'),_0x4ff740);});}return respondWithRpcPromise(_0x7880('0xbb'),'startRouting',_0x4ff740);})[_0x7880('0x14')](function(_0x2cea17){respondWithRpcPromise(_0x7880('0xbc'),_0x7880('0xbc'),{'event':'notify','message':_0x2cea17},client9002);return _0x2cea17;})[_0x7880('0x14')](respondWithResult(_0x3fff72,null))[_0x7880('0x45')](handleError(_0x3fff72,null));};exports[_0x7880('0xbd')]=function(_0x2eb3ad,_0x3d75d7){var _0x3ce1be,_0x35f54c,_0x2b75c6;var _0x47420b=[];var _0x10f988={};var _0x3deb76=_0x2eb3ad[_0x7880('0xbe')]||[];var _0x57a28c=[];var _0x901006;return db[_0x7880('0x82')][_0x7880('0x50')]()[_0x7880('0x14')](function(_0x54e589){if(!_0x54e589){throw new db[(_0x7880('0x83'))]['ValidationError'](_0x7880('0x85'));}_0x47420b=_[_0x7880('0x86')](_[_0x7880('0x35')](_0x54e589),['createdAt',_0x7880('0x88'),_0x7880('0xbf'),'ListId']);if(_0x2eb3ad[_0x7880('0x49')]['id']){delete _0x2eb3ad['body']['id'];}if(_[_0x7880('0x71')](_0x2eb3ad[_0x7880('0x49')][_0x7880('0x89')])){throw _0x3d75d7[_0x7880('0x1f')](0x1f4)[_0x7880('0x2d')](new db[(_0x7880('0x83'))][(_0x7880('0x84'))](_0x7880('0x8a')));}if(_[_0x7880('0x71')](_0x2eb3ad['body'][_0x7880('0x49')])||_0x2eb3ad['body']['body']===''){throw _0x3d75d7[_0x7880('0x1f')](0x1f4)[_0x7880('0x2d')](new db[(_0x7880('0x83'))][(_0x7880('0x84'))](_0x7880('0x8b')));}if(_[_0x7880('0x71')](_0x2eb3ad[_0x7880('0x49')]['mapKeyOffline'])){throw _0x3d75d7['status'](0x1f4)['send'](new db['Sequelize'][(_0x7880('0x84'))](_0x7880('0xc0')+_0x47420b));}if(!_['includes'](_0x47420b,_0x2eb3ad[_0x7880('0x49')][_0x7880('0xc1')])){throw _0x3d75d7['status'](0x1f4)[_0x7880('0x2d')](new db['Sequelize'][(_0x7880('0x84'))]('mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x47420b));}_0x10f988[_0x2eb3ad[_0x7880('0x49')][_0x7880('0xc1')]]=_0x2eb3ad[_0x7880('0x49')][_0x7880('0x89')];})[_0x7880('0x14')](function(){return db['ChatWebsite']['find']({'where':{'id':_0x2eb3ad['params']['id']},'include':[{'model':db[_0x7880('0x8e')],'as':_0x7880('0x95')},{'model':db['MailAccount'],'as':_0x7880('0xc2')}]});})[_0x7880('0x14')](handleEntityNotFound(_0x3d75d7,null))[_0x7880('0x14')](function(_0x229529){if(_0x229529&&_0x229529[_0x7880('0x95')]){_0x35f54c=_0x229529;var _0x3e921d=_[_0x7880('0x97')](_0x2eb3ad['body'],{'firstName':_0x2eb3ad[_0x7880('0x49')]['from'],'phone':_0x2eb3ad[_0x7880('0x49')][_0x7880('0x89')],'ListId':_0x229529[_0x7880('0x98')]});_0x3e921d[_0x2eb3ad['body'][_0x7880('0xc1')]]=_0x2eb3ad[_0x7880('0x49')][_0x7880('0x89')];return db[_0x7880('0x82')]['findOrCreate']({'where':_0x10f988,'defaults':_0x3e921d});}})[_0x7880('0xc3')](function(_0xc2d3ea){if(_0xc2d3ea){_0x2b75c6=_0xc2d3ea;var _0x5834c6=fs[_0x7880('0xc4')](path[_0x7880('0x6a')](config[_0x7880('0x6b')],'server/files/templates/chatOfflineMessage.ejs'),'utf8');var _0xc2437b=ejs['render'](_0x5834c6,{'body':_[_0x7880('0xc5')](_0x2eb3ad[_0x7880('0x49')][_0x7880('0x49')]),'bodyTitle':_0x35f54c[_0x7880('0xc6')]});return db[_0x7880('0xc7')][_0x7880('0x48')]({'body':_0xc2437b,'plainBody':htmlToText[_0x7880('0xc8')](_0xc2437b),'ContactId':_0xc2d3ea['id'],'ChatWebsiteId':_0x35f54c['id']});}})[_0x7880('0x14')](function(_0x484d78){_0x901006=_0x484d78;if(_0x3deb76['length']){var _0x2c26e2=_0x3deb76[_0x7880('0x30')](function(_0x35c658){return{'name':_0x35c658[_0x7880('0xc9')],'basename':_0x35c658[_0x7880('0x63')],'type':_0x35c658[_0x7880('0xca')],'ChatOfflineMessageId':_0x484d78['id']};});_0x57a28c=_0x2c26e2[_0x7880('0x30')](_0x17e46f=>{var _0x316c51={'filename':_0x17e46f[_0x7880('0x2c')],'path':path['join'](config[_0x7880('0x6b')],_0x7880('0xcb'),_0x7880('0xbe'),_0x7880('0xcc'),_0x7880('0xcd'),_0x17e46f[_0x7880('0xce')])};return _0x316c51;});if(!_0x35f54c['openNewInteraction']){return db['sequelize']['transaction'](function(_0x4e89d3){return db['Attachment'][_0x7880('0xcf')](_0x2c26e2,{'transaction':_0x4e89d3});});}}})[_0x7880('0x14')](function(){if(_0x901006){_0x3ce1be=_0x901006;return db['MailAccount']['findOne']({'where':{'service':!![]},'include':[{'model':db[_0x7880('0xd0')],'as':_0x7880('0xd1'),'raw':!![],'include':[{'model':db[_0x7880('0xd2')],'as':_0x7880('0xd2'),'raw':!![]}]}]});}})['then'](function(_0xc4a941){if(_0xc4a941&&_0xc4a941[_0x7880('0xd1')]&&_0x35f54c[_0x7880('0xd3')]&&_0x35f54c[_0x7880('0xd4')]){var _0x3273f6=_0xc4a941[_0x7880('0xd5')]();return respondWithRpcPromise('SendMail',_0x7880('0xd6'),{'account':_0x3273f6,'message':{'from':util[_0x7880('0xa7')]('\x22%s\x22\x20<%s>',_0xc4a941['name'],_0xc4a941[_0x7880('0xd7')]||_0xc4a941[_0x7880('0xd1')][_0x7880('0x4a')]),'to':_0x35f54c[_0x7880('0xd4')],'subject':_0x35f54c['offlineMessageSubject'],'html':_0x3ce1be[_0x7880('0x49')],'attachments':_0x57a28c}},client9003)[_0x7880('0x14')](function(){return _0x3ce1be;})[_0x7880('0x45')](function(_0x1bb41d){logger['error'](_0x1bb41d);});}})[_0x7880('0x14')](function(){if(_0x35f54c&&_0x35f54c[_0x7880('0xd8')]&&_0x35f54c[_0x7880('0xd9')]){var _0x75e936=[];if(_0x3deb76[_0x7880('0x5d')]){_0x75e936=_0x3deb76[_0x7880('0x30')](function(_0x2512f1){return{'name':_0x2512f1['originalname'],'basename':_0x2512f1[_0x7880('0x63')],'type':_0x2512f1[_0x7880('0xca')],'ChatOfflineMessageId':_0x901006['id']};});}var _0x270dd5;if(!_[_0x7880('0x71')](_0x35f54c['subjectOffline'])){var _0xf64196=_[_0x7880('0x30')](_0x2eb3ad['body'],function(_0x2cbd3f){return _0x2cbd3f;});var _0x2a4d1e=_[_0x7880('0xda')](_0xf64196)[0x0];var _0x8f54ba=_[_0x7880('0xdb')](_0x2a4d1e,function(_0x4b7e04){return _0x4b7e04;});_0x270dd5=_0x8f54ba[0x1][_0x35f54c['subjectOffline']];}var _0x2a6bc6={'from':_0x2b75c6[_0x7880('0xd7')],'firstName':_0x2b75c6[_0x7880('0x9f')],'lastName':_0x2b75c6[_0x7880('0xa0')],'mapKey':'email','message':{'from':_0x2b75c6[_0x7880('0xd7')],'to':_0x35f54c[_0x7880('0xc2')][_0x7880('0xd7')],'cc':'','subject':_[_0x7880('0x71')](_0x270dd5)?_0x35f54c[_0x7880('0xdc')]:_0x270dd5,'messageId':'','sentAt':new Date(),'attach':_0x75e936[_0x7880('0x5d')],'attachments':_0x75e936,'originChannel':_0x7880('0xdd'),'ChatWebsiteId':_0x35f54c['id'],'ChatOfflineMessageId':_0x3ce1be['id'],'originTo':_0x35f54c[_0x7880('0xc2')][_0x7880('0xd7')]},'body':_0x3ce1be[_0x7880('0x49')]};var _0x14f867={'account':{'id':_0x35f54c[_0x7880('0xd9')]},'body':_0x2a6bc6,'log':_0x7880('0xde')};return respondWithRpcPromise(_0x7880('0xde'),_0x7880('0xdf'),_0x14f867,client9001)[_0x7880('0x14')](function(){return _0x3ce1be;})[_0x7880('0x45')](function(_0x185d74){logger[_0x7880('0x1a')](_0x185d74);});}return;})[_0x7880('0x14')](function(){if(_0x3ce1be){return _0x3ce1be;}})['then'](respondWithResult(_0x3d75d7,null))[_0x7880('0x45')](function(_0x30a5a2){logger[_0x7880('0x1a')](_0x7880('0x45'),_0x30a5a2);for(var _0xff2268 of _0x3deb76){var _0x730ece=path[_0x7880('0x6a')](config[_0x7880('0x6b')],'server',_0x7880('0xbe'),_0x7880('0xcc'),_0x7880('0xcd'),_0xff2268['filename']);fs_extra[_0x7880('0xe0')](_0x730ece)[_0x7880('0x45')](function(_0x319cbb){logger['error'](_0x7880('0xe1'),_0x730ece,_0x319cbb);});}});};exports[_0x7880('0xe2')]=function(_0x117e23,_0x7190ba){return db['ChatInteraction']['find']({'where':{'id':_0x117e23[_0x7880('0x46')]['id']}})[_0x7880('0x14')](handleEntityNotFound(_0x7190ba,null))[_0x7880('0x14')](function(_0x42f279){if(_0x42f279){return _0x42f279[_0x7880('0xe2')](_0x117e23[_0x7880('0x49')][_0x7880('0x59')],_[_0x7880('0xe3')](_0x117e23[_0x7880('0x49')],[_0x7880('0x59'),'id'])||{});}})[_0x7880('0x14')](respondWithResult(_0x7190ba,null))[_0x7880('0x45')](handleError(_0x7190ba,null));};exports[_0x7880('0xe4')]=function(_0x55daaa,_0x20142d){var _0x149465={'raw':![],'where':{}};var _0x165475={};var _0x225848={'count':0x0,'rows':[]};return db[_0x7880('0x31')][_0x7880('0x5c')]({'where':{'id':_0x55daaa[_0x7880('0x46')]['id']}})[_0x7880('0x14')](handleEntityNotFound(_0x20142d,null))[_0x7880('0x14')](function(_0x2e058a){if(_0x2e058a){_0x165475[_0x7880('0x34')]=_['keys'](db[_0x7880('0xac')][_0x7880('0x32')]);_0x165475[_0x7880('0x37')]=_['keys'](_0x55daaa[_0x7880('0x37')]);_0x165475[_0x7880('0x36')]=_[_0x7880('0x39')](_0x165475[_0x7880('0x34')],_0x165475[_0x7880('0x37')]);_0x149465[_0x7880('0x38')]=_[_0x7880('0x39')](_0x165475[_0x7880('0x34')],qs[_0x7880('0x3a')](_0x55daaa['query'][_0x7880('0x3a')]));_0x149465[_0x7880('0x38')]=_0x149465[_0x7880('0x38')][_0x7880('0x5d')]?_0x149465[_0x7880('0x38')]:_0x165475[_0x7880('0x34')];if(!_0x55daaa[_0x7880('0x37')][_0x7880('0x3b')](_0x7880('0x3c'))){_0x149465[_0x7880('0x23')]=qs['limit'](_0x55daaa[_0x7880('0x37')]['limit']);_0x149465[_0x7880('0x21')]=qs[_0x7880('0x21')](_0x55daaa[_0x7880('0x37')][_0x7880('0x21')]);}_0x149465['order']=qs[_0x7880('0x3d')](_0x55daaa[_0x7880('0x37')][_0x7880('0x3d')]);_0x149465['where']=qs[_0x7880('0x36')](_[_0x7880('0x5e')](_0x55daaa[_0x7880('0x37')],_0x165475[_0x7880('0x36')]));_0x149465['where'][_0x7880('0x52')]=_0x2e058a['id'];if(_0x55daaa['query']['filter']){_0x149465[_0x7880('0x3f')]=_[_0x7880('0x40')](_0x149465[_0x7880('0x3f')],{'$or':_[_0x7880('0x30')](_0x149465[_0x7880('0x38')],function(_0x5c68df){var _0x572009={};_0x572009[_0x5c68df]={'$like':'%'+_0x55daaa[_0x7880('0x37')][_0x7880('0x3e')]+'%'};return _0x572009;})});}_0x149465=_['merge']({},_0x149465,_0x55daaa[_0x7880('0x42')]);return db['ChatInteraction']['count']({'where':_0x149465[_0x7880('0x3f')]})[_0x7880('0x14')](function(_0x16539e){_0x225848[_0x7880('0x22')]=_0x16539e;if(_0x55daaa[_0x7880('0x37')]['includeAll']){_0x149465[_0x7880('0x43')]=[{'model':db['CmContact'],'as':_0x7880('0xe5'),'required':![]},{'model':db[_0x7880('0xe6')],'as':_0x7880('0xe7'),'attributes':[_0x7880('0x2c'),_0x7880('0xe8'),'internal'],'required':![]},{'model':db[_0x7880('0xe9')],'as':_0x7880('0xea'),'attributes':['id',_0x7880('0x2c'),_0x7880('0xeb')],'where':_0x55daaa[_0x7880('0x37')][_0x7880('0xec')]?{'id':_0x55daaa[_0x7880('0x37')][_0x7880('0xec')]}:undefined,'required':_0x55daaa[_0x7880('0x37')][_0x7880('0xec')]?!![]:![]}];}return db[_0x7880('0xac')][_0x7880('0x44')](_0x149465);})[_0x7880('0x14')](function(_0x420458){_0x225848['rows']=_0x420458;return _0x225848;});}})['then'](respondWithFilteredResult(_0x20142d,_0x149465))[_0x7880('0x45')](handleError(_0x20142d,null));};function iftimePromise(_0x400b37,_0x3661d0){return respondWithRpcPromise(_0x7880('0xed'),_0x7880('0xee'),{'command':_0x3661d0[_0x7880('0xef')]?util['format'](_0x7880('0xf0'),_0x400b37['interval'],_0x3661d0[_0x7880('0xef')]):util[_0x7880('0xa7')]('iftime\x20%s',_0x400b37[_0x7880('0xf1')])},client9002)[_0x7880('0x14')](function(_0x18de3a){var _0x1a1c51=_0x18de3a&&_0x18de3a[_0x7880('0xf2')](_0x7880('0xf3'))>=0x0?!![]:![];logger[_0x7880('0x15')](_0x7880('0xf4'),_0x3661d0['id'],_0x400b37['id'],_0x400b37[_0x7880('0xf1')],_0x1a1c51?_0x7880('0xf5'):_0x7880('0xf6'),_0x3661d0[_0x7880('0xef')]?_0x3661d0[_0x7880('0xef')]:_0x7880('0xf7'));return _0x1a1c51;})[_0x7880('0x45')](function(_0x442858){logger['error'](_0x7880('0xf4'),_0x3661d0['id'],_0x400b37['id'],_0x400b37[_0x7880('0xf1')],util[_0x7880('0xf8')](_0x442858,{'showHidden':![],'depth':null}),_0x3661d0[_0x7880('0xef')]?_0x3661d0['timezone']:_0x7880('0xf7'));return![];});}exports[_0x7880('0xee')]=function(_0x548c3c,_0x177018){var _0x31dcab=0x0;var _0x595366=0x0;var _0x1f1629=![];var _0x54311e;var _0x49e639;return db[_0x7880('0x31')]['find']({'where':{'id':_0x548c3c['params']['id']},'include':[{'model':db[_0x7880('0xf9')],'as':_0x7880('0xf9'),'include':[{'model':db[_0x7880('0xf9')],'as':_0x7880('0xfa'),'attributes':['id',_0x7880('0xf1')],'raw':!![]}]}]})[_0x7880('0x14')](handleEntityNotFound(_0x177018,null))[_0x7880('0x14')](function(_0x36b5d0){if(_0x36b5d0){_0x54311e=_0x36b5d0;return _0x36b5d0[_0x7880('0xfb')]({'raw':!![]});}})[_0x7880('0x14')](function(_0x438ee5){if(_0x54311e){if(_0x438ee5){_0x49e639=_0x438ee5;}}return require(_0x7880('0x6e'))['getLicense']();})[_0x7880('0x14')](function(_0x50677e){if(_0x50677e){_0x595366=_0x50677e[_0x7880('0xfc')];_0x1f1629=_0x50677e[_0x7880('0x70')];}})[_0x7880('0x14')](function(){return db[_0x7880('0xac')]['count']({'where':{'closed':![]}});})[_0x7880('0x14')](function(_0x2ed97e){_0x31dcab=_0x2ed97e;if(_0x595366&&_0x2ed97e>_0x595366){return db['License'][_0x7880('0x5c')]({'where':{'id':0x1}})[_0x7880('0x14')](function(_0xb064d4){if(_0xb064d4){_0xb064d4[_0x7880('0xfd')](_0x7880('0xfe'));}});}})[_0x7880('0x14')](function(){if(_0x54311e[_0x7880('0xf9')]&&_0x54311e[_0x7880('0xf9')]['Intervals']){var _0x223966=[];for(var _0x18cfdc=0x0;_0x18cfdc<_0x54311e[_0x7880('0xf9')][_0x7880('0xfa')][_0x7880('0x5d')];_0x18cfdc++){var _0x3b414c=_0x54311e[_0x7880('0xf9')][_0x7880('0xfa')][_0x18cfdc]['get']({'plain':!![]});_0x223966[_0x7880('0xb2')](iftimePromise(_0x3b414c,_0x54311e));}return BPromise['all'](_0x223966)[_0x7880('0x14')](function(_0x37fae4){return _[_0x7880('0xff')](_0x37fae4);});}else{return!![];}})[_0x7880('0x14')](function(_0x7cea4f){var _0x165a90=fs[_0x7880('0xc4')](path[_0x7880('0x6a')](config[_0x7880('0x6b')],'server/files/chat/iframe.ejs'),_0x7880('0x100'));var _0x3c4992={'remote':_0x54311e[_0x7880('0x101')],'query':querystring[_0x7880('0x102')](_['merge'](_0x54311e[_0x7880('0x28')]({'plain':!![]}),{'customerIp':_0x548c3c['headers']['x-forwarded-for']||_0x548c3c[_0x7880('0x9a')]['x-real-ip']||_0x548c3c[_0x7880('0x103')]['remoteAddress']||_0x548c3c['ip'],'referer':_0x548c3c[_0x7880('0x9a')][_0x7880('0xa2')],'openedInteractions':_0x31dcab,'maxInteractions':_0x595366,'virtual':_0x1f1629['virtual'],'online':_0x7cea4f,'custom':_0x1f1629}))['replace'](/'/g,'\x5c\x27')};_0x177018[_0x7880('0x2d')](ejs[_0x7880('0x104')](Mustache['render'](_0x165a90,_0x3c4992),{'proactiveActions':_0x49e639,'alignment':_0x54311e[_0x7880('0x105')],'verticalAlignment':_0x54311e['verticalAlignment'],'div_color':_0x54311e[_0x7880('0xeb')],'labelText':_0x54311e[_0x7880('0x106')],'text_color':_0x54311e[_0x7880('0x107')],'text_button_color':_0x54311e[_0x7880('0x108')],'button_color':_0x54311e[_0x7880('0x109')],'background_color':_0x54311e['backgroundColor'],'hideWhenOffline':_0x54311e[_0x7880('0x10a')],'interval':_0x54311e[_0x7880('0x10b')]}));})[_0x7880('0x45')](handleError(_0x177018,null));};exports['addApplications']=function(_0x7323ef,_0x3fae54){var _0x497b72=_0x7323ef['params']['id'];var _0x16233e=_0x7323ef[_0x7880('0x49')];var _0x2c9974=0xc8;var _0x28e75d=null;return db[_0x7880('0x10c')][_0x7880('0x10d')]({'isolationLevel':db[_0x7880('0x10c')][_0x7880('0x10e')][_0x7880('0x10f')][_0x7880('0x110')]},function(_0x1f8337){return db[_0x7880('0x31')]['findOne']({'where':{'id':_0x497b72},'transaction':_0x1f8337})[_0x7880('0x14')](function(_0x5771f3){if(_0x5771f3){return db[_0x7880('0x91')][_0x7880('0x27')]({'where':{'ChatWebsiteId':_0x497b72},'transaction':_0x1f8337})[_0x7880('0x14')](function(){var _0x566308=_[_0x7880('0x30')](_0x16233e,function(_0x3fc71f){_0x3fc71f[_0x7880('0x52')]=_0x497b72;return _0x3fc71f;});return db['ChatApplication']['bulkCreate'](_0x566308,{'transaction':_0x1f8337});});}else{_0x2c9974=0x194;_0x28e75d=[];}});})[_0x7880('0x14')](function(){if(_0x2c9974!==0x194){return db[_0x7880('0x91')]['findAndCountAll']({'where':{'ChatWebsiteId':_0x497b72},'order':_0x7880('0x96')})[_0x7880('0x14')](function(_0x2fd024){_0x28e75d=_0x2fd024;});}})[_0x7880('0x45')](function(_0x18fd84){_0x2c9974=0x1f4;logger['error'](_0x18fd84['stack']);if(_0x18fd84[_0x7880('0x2c')]){delete _0x18fd84[_0x7880('0x2c')];}_0x28e75d=_0x18fd84;})[_0x7880('0x111')](function(){if(_0x28e75d===null){_0x3fae54[_0x7880('0x112')](_0x2c9974);}else{if(_0x2c9974===0x1f4){_0x3fae54[_0x7880('0x1f')](_0x2c9974)[_0x7880('0x2d')](_0x28e75d);}else{_0x3fae54[_0x7880('0x1f')](_0x2c9974)[_0x7880('0x25')](_0x28e75d);}}});};exports[_0x7880('0x113')]=function(_0x5206ca,_0x142162){var _0x25b1b9={};var _0x4d32a2={};var _0x586037;var _0x173e8f;return db['ChatWebsite']['findOne']({'where':{'id':_0x5206ca[_0x7880('0x46')]['id']}})['then'](handleEntityNotFound(_0x142162,null))[_0x7880('0x14')](function(_0x1c1cc2){if(_0x1c1cc2){_0x586037=_0x1c1cc2;_0x4d32a2[_0x7880('0x34')]=_[_0x7880('0x35')](db[_0x7880('0x91')]['rawAttributes']);_0x4d32a2[_0x7880('0x37')]=_[_0x7880('0x35')](_0x5206ca[_0x7880('0x37')]);_0x4d32a2[_0x7880('0x36')]=_[_0x7880('0x39')](_0x4d32a2['model'],_0x4d32a2[_0x7880('0x37')]);_0x25b1b9[_0x7880('0x38')]=_[_0x7880('0x39')](_0x4d32a2[_0x7880('0x34')],qs[_0x7880('0x3a')](_0x5206ca[_0x7880('0x37')][_0x7880('0x3a')]));_0x25b1b9[_0x7880('0x38')]=_0x25b1b9['attributes'][_0x7880('0x5d')]?_0x25b1b9[_0x7880('0x38')]:_0x4d32a2[_0x7880('0x34')];_0x25b1b9[_0x7880('0x55')]=qs[_0x7880('0x3d')](_0x5206ca['query'][_0x7880('0x3d')]);_0x25b1b9[_0x7880('0x3f')]=qs[_0x7880('0x36')](_[_0x7880('0x5e')](_0x5206ca['query'],_0x4d32a2['filters']));if(_0x5206ca['query']['filter']){_0x25b1b9[_0x7880('0x3f')]=_['merge'](_0x25b1b9[_0x7880('0x3f')],{'$or':_[_0x7880('0x30')](_0x25b1b9['attributes'],function(_0x3c6266){var _0x28b883={};_0x28b883[_0x3c6266]={'$like':'%'+_0x5206ca[_0x7880('0x37')]['filter']+'%'};return _0x28b883;})});}_0x25b1b9=_[_0x7880('0x40')]({},_0x25b1b9,_0x5206ca[_0x7880('0x42')]);return _0x586037[_0x7880('0x113')](_0x25b1b9);}})[_0x7880('0x14')](function(_0x149e95){if(_0x149e95){_0x173e8f=_0x149e95[_0x7880('0x5d')];if(!_0x5206ca[_0x7880('0x37')][_0x7880('0x3b')]('nolimit')){_0x25b1b9[_0x7880('0x23')]=qs[_0x7880('0x23')](_0x5206ca[_0x7880('0x37')][_0x7880('0x23')]);_0x25b1b9[_0x7880('0x21')]=qs[_0x7880('0x21')](_0x5206ca[_0x7880('0x37')][_0x7880('0x21')]);}return _0x586037[_0x7880('0x113')](_0x25b1b9);}})[_0x7880('0x14')](function(_0x59bc7f){if(_0x59bc7f){return _0x59bc7f?{'count':_0x173e8f,'rows':_0x59bc7f}:null;}})['then'](respondWithResult(_0x142162,null))['catch'](handleError(_0x142162,null));};exports[_0x7880('0x114')]=function(_0x3bfb34,_0x43312b){return db[_0x7880('0x115')][_0x7880('0x47')]({'where':{'id':_0x3bfb34[_0x7880('0x46')]['id']}})[_0x7880('0x14')](handleEntityNotFound(_0x43312b,null))[_0x7880('0x14')](function(_0x4eb40f){if(_0x4eb40f){return _0x4eb40f[_0x7880('0x114')](_0x3bfb34['body'][_0x7880('0x59')],_['omit'](_0x3bfb34[_0x7880('0x49')],[_0x7880('0x59'),'id'])||{});}})[_0x7880('0x14')](respondWithResult(_0x43312b,null))[_0x7880('0x45')](handleError(_0x43312b,null));};exports['getProactiveActions']=function(_0x37b385,_0x1d03a6){var _0x39b8a6={};var _0x36a74c={};var _0x4dceae;var _0x3af80d;return db['ChatWebsite']['findOne']({'where':{'id':_0x37b385[_0x7880('0x46')]['id']}})[_0x7880('0x14')](handleEntityNotFound(_0x1d03a6,null))['then'](function(_0x54c958){if(_0x54c958){_0x4dceae=_0x54c958;_0x36a74c[_0x7880('0x34')]=_[_0x7880('0x35')](db['ChatProactiveAction'][_0x7880('0x32')]);_0x36a74c[_0x7880('0x37')]=_[_0x7880('0x35')](_0x37b385['query']);_0x36a74c[_0x7880('0x36')]=_[_0x7880('0x39')](_0x36a74c[_0x7880('0x34')],_0x36a74c[_0x7880('0x37')]);_0x39b8a6[_0x7880('0x38')]=_[_0x7880('0x39')](_0x36a74c[_0x7880('0x34')],qs[_0x7880('0x3a')](_0x37b385[_0x7880('0x37')][_0x7880('0x3a')]));_0x39b8a6[_0x7880('0x38')]=_0x39b8a6[_0x7880('0x38')][_0x7880('0x5d')]?_0x39b8a6[_0x7880('0x38')]:_0x36a74c[_0x7880('0x34')];_0x39b8a6['order']=qs[_0x7880('0x3d')](_0x37b385['query'][_0x7880('0x3d')]);_0x39b8a6[_0x7880('0x3f')]=qs[_0x7880('0x36')](_[_0x7880('0x5e')](_0x37b385[_0x7880('0x37')],_0x36a74c[_0x7880('0x36')]));if(_0x37b385[_0x7880('0x37')][_0x7880('0x3e')]){_0x39b8a6['where']=_[_0x7880('0x40')](_0x39b8a6[_0x7880('0x3f')],{'$or':_[_0x7880('0x30')](_0x39b8a6[_0x7880('0x38')],function(_0x5b07dd){var _0x2b9edf={};_0x2b9edf[_0x5b07dd]={'$like':'%'+_0x37b385['query'][_0x7880('0x3e')]+'%'};return _0x2b9edf;})});}_0x39b8a6=_['merge']({},_0x39b8a6,_0x37b385[_0x7880('0x42')]);return _0x4dceae['getProactiveActions'](_0x39b8a6);}})['then'](function(_0x5a0360){if(_0x5a0360){_0x3af80d=_0x5a0360[_0x7880('0x5d')];if(!_0x37b385[_0x7880('0x37')]['hasOwnProperty'](_0x7880('0x3c'))){_0x39b8a6[_0x7880('0x23')]=qs[_0x7880('0x23')](_0x37b385['query'][_0x7880('0x23')]);_0x39b8a6[_0x7880('0x21')]=qs['offset'](_0x37b385[_0x7880('0x37')][_0x7880('0x21')]);}return _0x4dceae[_0x7880('0xfb')](_0x39b8a6);}})['then'](function(_0x9f89ab){if(_0x9f89ab){return _0x9f89ab?{'count':_0x3af80d,'rows':_0x9f89ab}:null;}})[_0x7880('0x14')](respondWithResult(_0x1d03a6,null))[_0x7880('0x45')](handleError(_0x1d03a6,null));};exports[_0x7880('0x116')]=function(_0x518448,_0x40c25a){var _0x18f805=_0x518448[_0x7880('0x37')][_0x7880('0x117')]==='false'?_0x7880('0x118'):_0x7880('0x119');return db['ChatWebsite'][_0x7880('0x47')]({'attributes':['id',_0x18f805],'where':{'id':_0x518448['params']['id']}})[_0x7880('0x14')](handleEntityNotFound(_0x40c25a,null))[_0x7880('0x14')](function(_0x2964bd){if(_0x2964bd){var _0x5a6c06=_0x2964bd[_0x18f805];var _0xf9ac33=_0x5a6c06&&_0x5a6c06[_0x7880('0x11a')]?_0x5a6c06['items']:[];_0x40c25a[_0x7880('0x2d')]({'fromKey':_[_0x7880('0x71')](_0x5a6c06[_0x7880('0x11b')])?undefined:_0x5a6c06[_0x7880('0x11b')],'count':_0xf9ac33[_0x7880('0x5d')],'rows':_0xf9ac33});}})[_0x7880('0x45')](handleError(_0x40c25a,null));};exports['getOfflineMessages']=function(_0x384714,_0x2fe71f){var _0x1a6455={'raw':![],'where':{}};var _0xb56e39={};var _0x43323c={'count':0x0,'rows':[]};return db['ChatWebsite']['findOne']({'where':{'id':_0x384714[_0x7880('0x46')]['id']}})[_0x7880('0x14')](handleEntityNotFound(_0x2fe71f,null))[_0x7880('0x14')](function(_0x5d896c){if(_0x5d896c){_0xb56e39[_0x7880('0x34')]=_[_0x7880('0x35')](db['ChatOfflineMessage']['rawAttributes']);_0xb56e39[_0x7880('0x37')]=_[_0x7880('0x35')](_0x384714['query']);_0xb56e39[_0x7880('0x36')]=_['intersection'](_0xb56e39[_0x7880('0x34')],_0xb56e39[_0x7880('0x37')]);_0x1a6455[_0x7880('0x38')]=_['intersection'](_0xb56e39[_0x7880('0x34')],qs[_0x7880('0x3a')](_0x384714[_0x7880('0x37')][_0x7880('0x3a')]));_0x1a6455[_0x7880('0x38')]=_0x1a6455[_0x7880('0x38')][_0x7880('0x5d')]?_0x1a6455[_0x7880('0x38')]:_0xb56e39[_0x7880('0x34')];if(!_0x384714[_0x7880('0x37')][_0x7880('0x3b')](_0x7880('0x3c'))){_0x1a6455[_0x7880('0x23')]=qs[_0x7880('0x23')](_0x384714['query'][_0x7880('0x23')]);_0x1a6455[_0x7880('0x21')]=qs[_0x7880('0x21')](_0x384714[_0x7880('0x37')][_0x7880('0x21')]);}_0x1a6455[_0x7880('0x55')]=qs['sort'](_0x384714[_0x7880('0x37')][_0x7880('0x3d')]);_0x1a6455['where']=qs[_0x7880('0x36')](_[_0x7880('0x5e')](_0x384714[_0x7880('0x37')],_0xb56e39[_0x7880('0x36')]));_0x1a6455[_0x7880('0x3f')][_0x7880('0x52')]=_0x5d896c['id'];if(_0x384714[_0x7880('0x37')]['filter']){_0x1a6455['where']=_['merge'](_0x1a6455[_0x7880('0x3f')],{'$or':_[_0x7880('0x30')](_0x1a6455[_0x7880('0x38')],function(_0x3a83ca){var _0x4db733={};_0x4db733[_0x3a83ca]={'$like':'%'+_0x384714['query'][_0x7880('0x3e')]+'%'};return _0x4db733;})});}_0x1a6455=_[_0x7880('0x40')]({},_0x1a6455,_0x384714[_0x7880('0x42')]);return db[_0x7880('0xc7')][_0x7880('0x22')]({'where':_0x1a6455['where']})[_0x7880('0x14')](function(_0x3cb9e4){_0x43323c[_0x7880('0x22')]=_0x3cb9e4;if(_0x384714[_0x7880('0x37')][_0x7880('0x56')]){_0x1a6455[_0x7880('0x43')]=[{'all':!![]}];}else{_0x1a6455[_0x7880('0x43')]=[{'model':db['CmContact'],'as':_0x7880('0xe5'),'required':![]},{'model':db[_0x7880('0x11c')],'as':_0x7880('0x11d'),'required':![]}];}return db['ChatOfflineMessage']['findAll'](_0x1a6455);})['then'](function(_0x1a5f15){_0x43323c[_0x7880('0x57')]=_0x1a5f15;return _0x43323c;});}})[_0x7880('0x14')](respondWithFilteredResult(_0x2fe71f,_0x1a6455))[_0x7880('0x45')](handleError(_0x2fe71f,null));};exports[_0x7880('0x11e')]=function(_0x3c98ff,_0x265df2){return db['ChatWebsite'][_0x7880('0x47')]({'where':{'id':_0x3c98ff['params']['id']}})[_0x7880('0x14')](handleEntityNotFound(_0x265df2,null))[_0x7880('0x14')](function(_0x5269be){if(_0x5269be){return _0x5269be[_0x7880('0x11e')](_0x3c98ff['body'][_0x7880('0x59')],_[_0x7880('0xe3')](_0x3c98ff[_0x7880('0x49')],[_0x7880('0x59'),'id'])||{})['spread'](function(_0xa1f5a5){for(var _0xea4824=0x0;_0xea4824<_0x3c98ff[_0x7880('0x49')][_0x7880('0x59')][_0x7880('0x5d')];_0xea4824+=0x1){socket[_0x7880('0x11f')](_0x7880('0x120'),{'UserId':Number(_0x3c98ff[_0x7880('0x49')][_0x7880('0x59')][_0xea4824]),'ChatWebsiteId':Number(_0x3c98ff[_0x7880('0x46')]['id'])});}return _0xa1f5a5;});}})['then'](respondWithResult(_0x265df2,null))[_0x7880('0x45')](handleError(_0x265df2,null));};exports[_0x7880('0x121')]=function(_0x51fcb2,_0xdb0dde){return db[_0x7880('0x31')][_0x7880('0x47')]({'where':{'id':_0x51fcb2[_0x7880('0x46')]['id']}})['then'](handleEntityNotFound(_0xdb0dde,null))[_0x7880('0x14')](function(_0x40c4f6){if(_0x40c4f6){return _0x40c4f6[_0x7880('0x121')](_0x51fcb2['query'][_0x7880('0x59')])['then'](function(){if(_[_0x7880('0x122')](_0x51fcb2[_0x7880('0x37')][_0x7880('0x59')])){for(var _0x5174da=0x0;_0x5174da<_0x51fcb2['query'][_0x7880('0x59')][_0x7880('0x5d')];_0x5174da+=0x1){socket[_0x7880('0x11f')](_0x7880('0x123'),{'UserId':Number(_0x51fcb2['query']['ids'][_0x5174da]),'ChatWebsiteId':Number(_0x51fcb2['params']['id'])});}}else{socket['emit'](_0x7880('0x123'),{'UserId':Number(_0x51fcb2['query'][_0x7880('0x59')]),'ChatWebsiteId':Number(_0x51fcb2[_0x7880('0x46')]['id'])});}});}})[_0x7880('0x14')](respondWithStatusCode(_0xdb0dde,null))[_0x7880('0x45')](handleError(_0xdb0dde,null));};exports[_0x7880('0x124')]=function(_0x52c04a,_0x54a25d){var _0x420b31={};var _0x10078a={};var _0x40f6be;var _0x578c5f;return db[_0x7880('0x31')][_0x7880('0x5c')]({'where':{'id':_0x52c04a[_0x7880('0x46')]['id']}})['then'](handleEntityNotFound(_0x54a25d,null))['then'](function(_0x241ee6){if(_0x241ee6){_0x40f6be=_0x241ee6;_0x10078a[_0x7880('0x34')]=_[_0x7880('0x35')](db[_0x7880('0xe6')]['rawAttributes']);_0x10078a[_0x7880('0x37')]=_['keys'](_0x52c04a[_0x7880('0x37')]);_0x10078a[_0x7880('0x36')]=_['intersection'](_0x10078a[_0x7880('0x34')],_0x10078a[_0x7880('0x37')]);_0x420b31[_0x7880('0x38')]=_[_0x7880('0x39')](_0x10078a[_0x7880('0x34')],qs[_0x7880('0x3a')](_0x52c04a[_0x7880('0x37')][_0x7880('0x3a')]));_0x420b31[_0x7880('0x38')]=_0x420b31[_0x7880('0x38')][_0x7880('0x5d')]?_0x420b31[_0x7880('0x38')]:_0x10078a['model'];_0x420b31[_0x7880('0x55')]=qs[_0x7880('0x3d')](_0x52c04a[_0x7880('0x37')]['sort']);_0x420b31['where']=qs[_0x7880('0x36')](_['pick'](_0x52c04a[_0x7880('0x37')],_0x10078a[_0x7880('0x36')]));if(_0x52c04a[_0x7880('0x37')][_0x7880('0x3e')]){_0x420b31['where']=_[_0x7880('0x40')](_0x420b31[_0x7880('0x3f')],{'$or':_[_0x7880('0x30')](_0x420b31[_0x7880('0x38')],function(_0x45293e){var _0x4f07fd={};_0x4f07fd[_0x45293e]={'$like':'%'+_0x52c04a[_0x7880('0x37')][_0x7880('0x3e')]+'%'};return _0x4f07fd;})});}_0x420b31=_['merge']({},_0x420b31,_0x52c04a[_0x7880('0x42')]);return _0x40f6be[_0x7880('0x124')](_0x420b31);}})[_0x7880('0x14')](function(_0x3d2c63){if(_0x3d2c63){_0x578c5f=_0x3d2c63[_0x7880('0x5d')];if(!_0x52c04a[_0x7880('0x37')][_0x7880('0x3b')](_0x7880('0x3c'))){_0x420b31['limit']=qs[_0x7880('0x23')](_0x52c04a[_0x7880('0x37')][_0x7880('0x23')]);_0x420b31[_0x7880('0x21')]=qs[_0x7880('0x21')](_0x52c04a[_0x7880('0x37')]['offset']);}return _0x40f6be[_0x7880('0x124')](_0x420b31);}})[_0x7880('0x14')](function(_0x62c26b){if(_0x62c26b){return _0x62c26b?{'count':_0x578c5f,'rows':_0x62c26b}:null;}})[_0x7880('0x14')](respondWithResult(_0x54a25d,null))[_0x7880('0x45')](handleError(_0x54a25d,null));};
\ No newline at end of file
+var _0x1821=['referer','browser','version','format','unknown','device','vendor','%s\x20%s\x20%s','threadId','ChatInteraction','externalUrl','ContactId','interaction','spread','messageId','created','push','unmanaged','*,*,*,*','ChatMessage','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','offline','mapKeyOffline','mapKeyOffline\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKeyOffline\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','MailAccount','readFileSync','server/files/templates/chatOfflineMessage.ejs','utf8','render','toPairs','offlineMessageBody','ChatOfflineMessage','server','openNewInteraction','sequelize','transaction','Attachment','bulkCreate','MailServerOut','Smtp','CloudProvider','forwardOffline','SendMail','sendMail','\x22%s\x22\x20<%s>','email','forwardOfflineAddress','offlineMessageSubject','MailAccountId','originalname','mimetype','subjectOffline','mapValues','lastName','Chat','NotifyMailAccount','notifyMail','files','offline-chat','remove','Could\x20not\x20remove\x20attachment\x20file','addInteraction','ids','omit','getInteractions','Contact','Owner','internal','Tags','color','tag','getSnippet','timezone','iftime\x20%s,%s','interval','iftime\x20%s','indexOf','true','[%s][INTERVAL][%s]\x20%s\x20%s\x20(%s)','ONLINE','OFFLINE','No\x20timezone','inspect','Interval','Intervals','virtual','custom','License','increment','chatLicenseExceeded','all','some','server/files/chat/iframe.ejs','remote','x-real-ip','connection','replace','alignment','verticalAlignment','labelText','textColor','color_button','backgroundColor','hideWhenOffline','addApplications','Transaction','ISOLATION_LEVELS','finally','getApplications','addProactiveActions','chatProactiveAction','getProactiveActions','ChatProactiveAction','getFields','online','false','offlineForm','items','fromKey','getOfflineMessages','Attachments','addAgents','emit','removeAgents','isArray','userChatWebsite:remove','getAgents','bluebird','mustache','ejs','fs-extra','lodash','querystring','ioredis','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','html-to-text','jayson/promise','http','client','request','then','info','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ChatWebsite,\x20%s,\x20%s','result','catch','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','update','destroy','get','end','stack','name','send','index','Pause','mandatoryDispositionPause','map','ChatWebsite','fieldName','type','key','query','filters','intersection','model','fields','attributes','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','keys','find','create','user','role','ChatWebsites','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','body','ChatWebsiteId','getDispositions','Disposition','rawAttributes','hasOwnProperty','removeDispositions','addAnswer','CannedAnswer','getAnswers','findOne','removeAnswers','addLogo','sitepic','file','filename','addAvatar','agentAvatar','addCustomerAvatar','customerAvatar','addSystemAvatar','systemAvatar','getLogo','join','root','server/files/images/logos/default_logo.svg','../../config/license/util','getLicense','isNil','existsSync','server/files/images/logos/','getAvatar','server/files/images/avatars/default_avatar.png','server/files/images/avatars/','download','getCustomerAvatar','server/files/images/avatars/customer_avatar.png','showCustomerAvatar','server/files/images/avatars/system_avatar.png','notify','setUA','headers','user-agent','chat','CmContact','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','Sequelize','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','includes','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','List','Contacts','ChatApplication','Applications','account','applications','list','orderBy','priority','from','contact','customerIp','cf-connecting-ip','x-forwarded-for','firstName','x-real-port'];(function(_0x439c9c,_0x5ced8f){var _0x4cf283=function(_0x100d9c){while(--_0x100d9c){_0x439c9c['push'](_0x439c9c['shift']());}};_0x4cf283(++_0x5ced8f);}(_0x1821,0x1b6));var _0x1182=function(_0x26ea7d,_0x50fc06){_0x26ea7d=_0x26ea7d-0x0;var _0x42f8a4=_0x1821[_0x26ea7d];return _0x42f8a4;};'use strict';var BPromise=require(_0x1182('0x0'));var Mustache=require(_0x1182('0x1'));var util=require('util');var path=require('path');var ejs=require(_0x1182('0x2'));var fs=require('fs');var fs_extra=require(_0x1182('0x3'));var _=require(_0x1182('0x4'));var querystring=require(_0x1182('0x5'));var Redis=require(_0x1182('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0x1182('0x7'))(_0x1182('0x8'));var config=require('../../config/environment');var db=require(_0x1182('0x9'))['db'];config[_0x1182('0xa')]=_[_0x1182('0xb')](config['redis'],{'host':_0x1182('0xc'),'port':0x18eb});var socket=require(_0x1182('0xd'))(new Redis(config[_0x1182('0xa')]));require(_0x1182('0xe'))['register'](socket);var htmlToText=require(_0x1182('0xf'));var jayson=require(_0x1182('0x10'));var client=jayson['client'][_0x1182('0x11')]({'port':0x232c});var client9002=jayson[_0x1182('0x12')][_0x1182('0x11')]({'port':0x232a});var client9003=jayson['client']['http']({'port':0x232b});var client9001=jayson[_0x1182('0x12')][_0x1182('0x11')]({'port':0x2329});function respondWithRpcPromise(_0x18b863,_0x27d342,_0x193543,_0x4b5aff){return new BPromise(function(_0x50b6b2,_0x155586){var _0x497516=_0x4b5aff||client;return _0x497516[_0x1182('0x13')](_0x18b863,_0x193543)[_0x1182('0x14')](function(_0x13eda7){logger[_0x1182('0x15')]('ChatWebsite,\x20%s,\x20%s',_0x27d342,_0x1182('0x16'));logger[_0x1182('0x17')](_0x1182('0x18'),_0x27d342,_0x1182('0x16'),JSON[_0x1182('0x19')](_0x13eda7));if(_0x13eda7[_0x1182('0x1a')]){if(_0x13eda7[_0x1182('0x1a')][_0x1182('0x1b')]===0x1f4){logger[_0x1182('0x1a')]('ChatWebsite,\x20%s,\x20%s',_0x27d342,_0x13eda7[_0x1182('0x1a')][_0x1182('0x1c')]);return _0x155586(_0x13eda7[_0x1182('0x1a')][_0x1182('0x1c')]);}logger['error']('ChatWebsite,\x20%s,\x20%s',_0x27d342,_0x13eda7[_0x1182('0x1a')][_0x1182('0x1c')]);return _0x50b6b2(_0x13eda7['error'][_0x1182('0x1c')]);}else{logger[_0x1182('0x15')](_0x1182('0x1d'),_0x27d342,'request\x20sent');_0x50b6b2(_0x13eda7[_0x1182('0x1e')][_0x1182('0x1c')]);}})[_0x1182('0x1f')](function(_0x54717d){logger['error'](_0x1182('0x1d'),_0x27d342,_0x54717d);_0x155586(_0x54717d);});});}function respondWithStatusCode(_0x485702,_0x2ae3d9){_0x2ae3d9=_0x2ae3d9||0xcc;return function(_0x309b77){if(_0x309b77){return _0x485702[_0x1182('0x20')](_0x2ae3d9);}return _0x485702[_0x1182('0x21')](_0x2ae3d9)['end']();};}function respondWithResult(_0x44a408,_0x596503){_0x596503=_0x596503||0xc8;return function(_0x13e9ce){if(_0x13e9ce){return _0x44a408[_0x1182('0x21')](_0x596503)[_0x1182('0x22')](_0x13e9ce);}};}function respondWithFilteredResult(_0x1eafe9,_0x39930a){return function(_0x2027d5){if(_0x2027d5){var _0x94982b=typeof _0x39930a[_0x1182('0x23')]==='undefined'&&typeof _0x39930a[_0x1182('0x24')]===_0x1182('0x25');var _0x47b17e=_0x2027d5[_0x1182('0x26')];var _0x514551=_0x94982b?0x0:_0x39930a[_0x1182('0x23')];var _0x4276d3=_0x94982b?_0x2027d5[_0x1182('0x26')]:_0x39930a[_0x1182('0x23')]+_0x39930a[_0x1182('0x24')];var _0x132ad6;if(_0x4276d3>=_0x47b17e){_0x4276d3=_0x47b17e;_0x132ad6=0xc8;}else{_0x132ad6=0xce;}_0x1eafe9[_0x1182('0x21')](_0x132ad6);return _0x1eafe9[_0x1182('0x27')](_0x1182('0x28'),_0x514551+'-'+_0x4276d3+'/'+_0x47b17e)[_0x1182('0x22')](_0x2027d5);}return null;};}function saveUpdates(_0x4889b9){return function(_0x5d188e){if(_0x5d188e){return _0x5d188e[_0x1182('0x29')](_0x4889b9)['then'](function(_0x5854ee){return _0x5854ee;});}return null;};}function removeEntity(_0x331cb9){return function(_0x2044ff){if(_0x2044ff){return _0x2044ff[_0x1182('0x2a')]()['then'](function(){var _0x341b5d=_0x2044ff[_0x1182('0x2b')]({'plain':!![]});var _0x44f4bb='ChatWebsites';return db['UserProfileResource'][_0x1182('0x2a')]({'where':{'type':_0x44f4bb,'resourceId':_0x341b5d['id']}})[_0x1182('0x14')](function(){return _0x2044ff;});})['then'](function(){_0x331cb9[_0x1182('0x21')](0xcc)[_0x1182('0x2c')]();});}};}function handleEntityNotFound(_0xbbd2bd){return function(_0x58c7c7){if(!_0x58c7c7){_0xbbd2bd[_0x1182('0x20')](0x194);}return _0x58c7c7;};}function handleError(_0x29f45e,_0x1016db){_0x1016db=_0x1016db||0x1f4;return function(_0x58d7ac){logger['error'](_0x58d7ac[_0x1182('0x2d')]);if(_0x58d7ac[_0x1182('0x2e')]){delete _0x58d7ac[_0x1182('0x2e')];}_0x29f45e[_0x1182('0x21')](_0x1016db)[_0x1182('0x2f')](_0x58d7ac);};}exports[_0x1182('0x30')]=function(_0x431350,_0x4f311d){var _0x43a0={'include':[{'model':db[_0x1182('0x31')],'as':_0x1182('0x32')}]},_0xf4a5a6={},_0x449570={'count':0x0,'rows':[]};var _0x4497d1=_[_0x1182('0x33')](db[_0x1182('0x34')]['rawAttributes'],function(_0x173543){return{'name':_0x173543[_0x1182('0x35')],'type':_0x173543[_0x1182('0x36')][_0x1182('0x37')]};});_0xf4a5a6['model']=_[_0x1182('0x33')](_0x4497d1,_0x1182('0x2e'));_0xf4a5a6[_0x1182('0x38')]=_['keys'](_0x431350[_0x1182('0x38')]);_0xf4a5a6[_0x1182('0x39')]=_[_0x1182('0x3a')](_0xf4a5a6[_0x1182('0x3b')],_0xf4a5a6[_0x1182('0x38')]);_0x43a0['attributes']=_[_0x1182('0x3a')](_0xf4a5a6[_0x1182('0x3b')],qs[_0x1182('0x3c')](_0x431350[_0x1182('0x38')][_0x1182('0x3c')]));_0x43a0[_0x1182('0x3d')]=_0x43a0['attributes'][_0x1182('0x3e')]?_0x43a0[_0x1182('0x3d')]:_0xf4a5a6[_0x1182('0x3b')];if(!_0x431350[_0x1182('0x38')]['hasOwnProperty'](_0x1182('0x3f'))){_0x43a0['limit']=qs[_0x1182('0x24')](_0x431350[_0x1182('0x38')][_0x1182('0x24')]);_0x43a0[_0x1182('0x23')]=qs['offset'](_0x431350[_0x1182('0x38')][_0x1182('0x23')]);}_0x43a0[_0x1182('0x40')]=qs[_0x1182('0x41')](_0x431350[_0x1182('0x38')]['sort']);_0x43a0[_0x1182('0x42')]=qs['filters'](_[_0x1182('0x43')](_0x431350[_0x1182('0x38')],_0xf4a5a6[_0x1182('0x39')]),_0x4497d1);if(_0x431350[_0x1182('0x38')][_0x1182('0x44')]){_0x43a0[_0x1182('0x42')]=_['merge'](_0x43a0[_0x1182('0x42')],{'$or':_['map'](_0x4497d1,function(_0x56a2b6){if(_0x56a2b6[_0x1182('0x36')]!==_0x1182('0x45')){var _0x5abea1={};_0x5abea1[_0x56a2b6[_0x1182('0x2e')]]={'$like':'%'+_0x431350['query'][_0x1182('0x44')]+'%'};return _0x5abea1;}})});}_0x43a0=_[_0x1182('0x46')]({},_0x43a0,_0x431350[_0x1182('0x47')]);var _0x44a37b={'where':_0x43a0['where']};return db[_0x1182('0x34')][_0x1182('0x26')](_0x44a37b)[_0x1182('0x14')](function(_0x14dbac){_0x449570[_0x1182('0x26')]=_0x14dbac;if(_0x431350['query'][_0x1182('0x48')]){_0x43a0[_0x1182('0x49')]=[{'all':!![]}];}return db[_0x1182('0x34')][_0x1182('0x4a')](_0x43a0);})[_0x1182('0x14')](function(_0xf74089){_0x449570[_0x1182('0x4b')]=_0xf74089;return _0x449570;})[_0x1182('0x14')](respondWithFilteredResult(_0x4f311d,_0x43a0))[_0x1182('0x1f')](handleError(_0x4f311d,null));};exports[_0x1182('0x4c')]=function(_0x45559e,_0x9d2766){var _0x1d6840={'raw':![],'where':{'id':_0x45559e[_0x1182('0x4d')]['id']},'include':[{'model':db[_0x1182('0x31')],'as':'mandatoryDispositionPause'}]},_0x4e5464={};_0x4e5464[_0x1182('0x3b')]=_['keys'](db[_0x1182('0x34')]['rawAttributes']);_0x4e5464[_0x1182('0x38')]=_[_0x1182('0x4e')](_0x45559e[_0x1182('0x38')]);_0x4e5464[_0x1182('0x39')]=_[_0x1182('0x3a')](_0x4e5464[_0x1182('0x3b')],_0x4e5464[_0x1182('0x38')]);_0x1d6840['attributes']=_[_0x1182('0x3a')](_0x4e5464[_0x1182('0x3b')],qs[_0x1182('0x3c')](_0x45559e['query'][_0x1182('0x3c')]));_0x1d6840['attributes']=_0x1d6840[_0x1182('0x3d')][_0x1182('0x3e')]?_0x1d6840['attributes']:_0x4e5464[_0x1182('0x3b')];if(_0x45559e[_0x1182('0x38')]['includeAll']){_0x1d6840['include']=[{'all':!![]}];}_0x1d6840=_['merge']({},_0x1d6840,_0x45559e['options']);return db[_0x1182('0x34')][_0x1182('0x4f')](_0x1d6840)[_0x1182('0x14')](handleEntityNotFound(_0x9d2766,null))[_0x1182('0x14')](respondWithResult(_0x9d2766,null))[_0x1182('0x1f')](handleError(_0x9d2766,null));};exports[_0x1182('0x50')]=function(_0x82eed1,_0xdcc624){return db[_0x1182('0x34')][_0x1182('0x50')](_0x82eed1['body'],{})['then'](function(_0x322516){var _0x346861=_0x82eed1[_0x1182('0x51')][_0x1182('0x2b')]({'plain':!![]});if(!_0x346861)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x346861[_0x1182('0x52')]===_0x1182('0x51')){var _0x1d464b=_0x322516[_0x1182('0x2b')]({'plain':!![]});var _0x51ba92=_0x1182('0x53');return db[_0x1182('0x54')][_0x1182('0x4f')]({'where':{'name':_0x51ba92,'userProfileId':_0x346861['userProfileId']},'raw':!![]})[_0x1182('0x14')](function(_0x4cfc5c){if(_0x4cfc5c&&_0x4cfc5c[_0x1182('0x55')]===0x0){return db[_0x1182('0x56')][_0x1182('0x50')]({'name':_0x1d464b[_0x1182('0x2e')],'resourceId':_0x1d464b['id'],'type':_0x4cfc5c[_0x1182('0x2e')],'sectionId':_0x4cfc5c['id']},{})['then'](function(){return _0x322516;});}else{return _0x322516;}})[_0x1182('0x1f')](function(_0x307853){logger[_0x1182('0x1a')](_0x1182('0x57'),_0x307853);throw _0x307853;});}return _0x322516;})['then'](respondWithResult(_0xdcc624,0xc9))['catch'](handleError(_0xdcc624,null));};exports[_0x1182('0x29')]=function(_0x34adad,_0xa2c457){if(_0x34adad['body']['id']){delete _0x34adad['body']['id'];}return db[_0x1182('0x34')][_0x1182('0x4f')]({'where':{'id':_0x34adad[_0x1182('0x4d')]['id']},'include':[{'model':db[_0x1182('0x31')],'as':_0x1182('0x32')}]})['then'](handleEntityNotFound(_0xa2c457,null))[_0x1182('0x14')](saveUpdates(_0x34adad['body'],null))['then'](respondWithResult(_0xa2c457,null))['catch'](handleError(_0xa2c457,null));};exports[_0x1182('0x2a')]=function(_0x166ac0,_0x5c050d){return db['ChatWebsite'][_0x1182('0x4f')]({'where':{'id':_0x166ac0['params']['id']}})[_0x1182('0x14')](handleEntityNotFound(_0x5c050d,null))['then'](removeEntity(_0x5c050d,null))[_0x1182('0x1f')](handleError(_0x5c050d,null));};exports[_0x1182('0x58')]=function(_0x41e5e5,_0x3cc349){return db[_0x1182('0x34')][_0x1182('0x58')]()[_0x1182('0x14')](respondWithResult(_0x3cc349,null))[_0x1182('0x1f')](handleError(_0x3cc349,null));};exports['addDisposition']=function(_0x27c03e,_0x353a7f){if(_0x27c03e[_0x1182('0x59')]['id']){delete _0x27c03e[_0x1182('0x59')]['id'];}return db['ChatWebsite'][_0x1182('0x4f')]({'where':{'id':_0x27c03e['params']['id']}})[_0x1182('0x14')](handleEntityNotFound(_0x353a7f,null))[_0x1182('0x14')](function(_0x3a079b){if(_0x3a079b){_0x27c03e['body'][_0x1182('0x5a')]=_0x3a079b['id'];return db['Disposition']['create'](_0x27c03e[_0x1182('0x59')]);}})[_0x1182('0x14')](respondWithResult(_0x353a7f,null))[_0x1182('0x1f')](handleError(_0x353a7f,null));};exports[_0x1182('0x5b')]=function(_0x38eea2,_0x5ce6ee){var _0x4f00e3={'raw':![],'where':{}};var _0x3e3447={};var _0x174573={'count':0x0,'rows':[]};return db['ChatWebsite']['findOne']({'where':{'id':_0x38eea2[_0x1182('0x4d')]['id']}})[_0x1182('0x14')](handleEntityNotFound(_0x5ce6ee,null))['then'](function(_0x5a287e){if(_0x5a287e){_0x3e3447[_0x1182('0x3b')]=_['keys'](db[_0x1182('0x5c')][_0x1182('0x5d')]);_0x3e3447[_0x1182('0x38')]=_['keys'](_0x38eea2[_0x1182('0x38')]);_0x3e3447[_0x1182('0x39')]=_[_0x1182('0x3a')](_0x3e3447['model'],_0x3e3447[_0x1182('0x38')]);_0x4f00e3[_0x1182('0x3d')]=_['intersection'](_0x3e3447[_0x1182('0x3b')],qs[_0x1182('0x3c')](_0x38eea2[_0x1182('0x38')][_0x1182('0x3c')]));_0x4f00e3[_0x1182('0x3d')]=_0x4f00e3[_0x1182('0x3d')][_0x1182('0x3e')]?_0x4f00e3[_0x1182('0x3d')]:_0x3e3447[_0x1182('0x3b')];if(!_0x38eea2[_0x1182('0x38')][_0x1182('0x5e')]('nolimit')){_0x4f00e3[_0x1182('0x24')]=qs[_0x1182('0x24')](_0x38eea2[_0x1182('0x38')][_0x1182('0x24')]);_0x4f00e3['offset']=qs[_0x1182('0x23')](_0x38eea2['query'][_0x1182('0x23')]);}_0x4f00e3[_0x1182('0x40')]=qs[_0x1182('0x41')](_0x38eea2[_0x1182('0x38')][_0x1182('0x41')]);_0x4f00e3[_0x1182('0x42')]=qs['filters'](_['pick'](_0x38eea2[_0x1182('0x38')],_0x3e3447['filters']));_0x4f00e3[_0x1182('0x42')][_0x1182('0x5a')]=_0x5a287e['id'];if(_0x38eea2[_0x1182('0x38')]['filter']){_0x4f00e3[_0x1182('0x42')]=_[_0x1182('0x46')](_0x4f00e3[_0x1182('0x42')],{'$or':_[_0x1182('0x33')](_0x4f00e3[_0x1182('0x3d')],function(_0x995937){var _0xa2b51a={};_0xa2b51a[_0x995937]={'$like':'%'+_0x38eea2[_0x1182('0x38')][_0x1182('0x44')]+'%'};return _0xa2b51a;})});}_0x4f00e3=_[_0x1182('0x46')]({},_0x4f00e3,_0x38eea2[_0x1182('0x47')]);return db[_0x1182('0x5c')][_0x1182('0x26')]({'where':_0x4f00e3[_0x1182('0x42')]})[_0x1182('0x14')](function(_0x15432c){_0x174573[_0x1182('0x26')]=_0x15432c;if(_0x38eea2['query'][_0x1182('0x48')]){_0x4f00e3[_0x1182('0x49')]=[{'all':!![]}];}return db[_0x1182('0x5c')][_0x1182('0x4a')](_0x4f00e3);})[_0x1182('0x14')](function(_0x447074){_0x174573[_0x1182('0x4b')]=_0x447074;return _0x174573;});}})[_0x1182('0x14')](respondWithFilteredResult(_0x5ce6ee,_0x4f00e3))[_0x1182('0x1f')](handleError(_0x5ce6ee,null));};exports[_0x1182('0x5f')]=function(_0x36d32e,_0x124a65){return db[_0x1182('0x34')][_0x1182('0x4f')]({'where':{'id':_0x36d32e[_0x1182('0x4d')]['id']}})[_0x1182('0x14')](handleEntityNotFound(_0x124a65,null))['then'](function(_0x1c2b0a){if(_0x1c2b0a){return _0x1c2b0a[_0x1182('0x5f')](_0x36d32e['query']['ids']);}})[_0x1182('0x14')](respondWithStatusCode(_0x124a65,null))[_0x1182('0x1f')](handleError(_0x124a65,null));};exports[_0x1182('0x60')]=function(_0x5d9749,_0x19754b){if(_0x5d9749[_0x1182('0x59')]['id']){delete _0x5d9749[_0x1182('0x59')]['id'];}return db['ChatWebsite'][_0x1182('0x4f')]({'where':{'id':_0x5d9749[_0x1182('0x4d')]['id']}})['then'](handleEntityNotFound(_0x19754b,null))['then'](function(_0x1be29c){if(_0x1be29c){_0x5d9749[_0x1182('0x59')][_0x1182('0x5a')]=_0x1be29c['id'];return db[_0x1182('0x61')][_0x1182('0x50')](_0x5d9749[_0x1182('0x59')]);}})[_0x1182('0x14')](respondWithResult(_0x19754b,null))[_0x1182('0x1f')](handleError(_0x19754b,null));};exports[_0x1182('0x62')]=function(_0x9f7d62,_0x9d8dce){var _0x4bab59={'raw':![],'where':{}};var _0x3d0518={};var _0x1f3176={'count':0x0,'rows':[]};return db[_0x1182('0x34')][_0x1182('0x63')]({'where':{'id':_0x9f7d62[_0x1182('0x4d')]['id']}})[_0x1182('0x14')](handleEntityNotFound(_0x9d8dce,null))[_0x1182('0x14')](function(_0x49262a){if(_0x49262a){_0x3d0518[_0x1182('0x3b')]=_[_0x1182('0x4e')](db[_0x1182('0x61')]['rawAttributes']);_0x3d0518['query']=_['keys'](_0x9f7d62['query']);_0x3d0518[_0x1182('0x39')]=_[_0x1182('0x3a')](_0x3d0518[_0x1182('0x3b')],_0x3d0518[_0x1182('0x38')]);_0x4bab59[_0x1182('0x3d')]=_[_0x1182('0x3a')](_0x3d0518[_0x1182('0x3b')],qs[_0x1182('0x3c')](_0x9f7d62[_0x1182('0x38')][_0x1182('0x3c')]));_0x4bab59['attributes']=_0x4bab59['attributes']['length']?_0x4bab59[_0x1182('0x3d')]:_0x3d0518['model'];if(!_0x9f7d62[_0x1182('0x38')][_0x1182('0x5e')](_0x1182('0x3f'))){_0x4bab59['limit']=qs[_0x1182('0x24')](_0x9f7d62[_0x1182('0x38')][_0x1182('0x24')]);_0x4bab59[_0x1182('0x23')]=qs[_0x1182('0x23')](_0x9f7d62[_0x1182('0x38')]['offset']);}_0x4bab59[_0x1182('0x40')]=qs[_0x1182('0x41')](_0x9f7d62[_0x1182('0x38')][_0x1182('0x41')]);_0x4bab59['where']=qs[_0x1182('0x39')](_[_0x1182('0x43')](_0x9f7d62[_0x1182('0x38')],_0x3d0518[_0x1182('0x39')]));_0x4bab59[_0x1182('0x42')][_0x1182('0x5a')]=_0x49262a['id'];if(_0x9f7d62[_0x1182('0x38')][_0x1182('0x44')]){_0x4bab59['where']=_[_0x1182('0x46')](_0x4bab59['where'],{'$or':_['map'](_0x4bab59[_0x1182('0x3d')],function(_0x116ce8){var _0x469d51={};_0x469d51[_0x116ce8]={'$like':'%'+_0x9f7d62[_0x1182('0x38')]['filter']+'%'};return _0x469d51;})});}_0x4bab59=_[_0x1182('0x46')]({},_0x4bab59,_0x9f7d62[_0x1182('0x47')]);return db[_0x1182('0x61')][_0x1182('0x26')]({'where':_0x4bab59['where']})['then'](function(_0x2c9d14){_0x1f3176[_0x1182('0x26')]=_0x2c9d14;if(_0x9f7d62['query'][_0x1182('0x48')]){_0x4bab59[_0x1182('0x49')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x4bab59);})[_0x1182('0x14')](function(_0x63dd90){_0x1f3176[_0x1182('0x4b')]=_0x63dd90;return _0x1f3176;});}})[_0x1182('0x14')](respondWithFilteredResult(_0x9d8dce,_0x4bab59))[_0x1182('0x1f')](handleError(_0x9d8dce,null));};exports[_0x1182('0x64')]=function(_0x5cec14,_0x45f67d){return db[_0x1182('0x34')][_0x1182('0x4f')]({'where':{'id':_0x5cec14['params']['id']}})['then'](handleEntityNotFound(_0x45f67d,null))[_0x1182('0x14')](function(_0x598eb3){if(_0x598eb3){return _0x598eb3[_0x1182('0x64')](_0x5cec14[_0x1182('0x38')]['ids']);}})[_0x1182('0x14')](respondWithStatusCode(_0x45f67d,null))[_0x1182('0x1f')](handleError(_0x45f67d,null));};exports[_0x1182('0x65')]=function(_0x4f4bcc,_0x4a5fa2){_0x4f4bcc[_0x1182('0x59')][_0x1182('0x66')]=_0x4f4bcc[_0x1182('0x67')][_0x1182('0x68')];return db[_0x1182('0x34')][_0x1182('0x4f')]({'where':{'id':_0x4f4bcc[_0x1182('0x4d')]['id']}})['then'](handleEntityNotFound(_0x4a5fa2,null))[_0x1182('0x14')](saveUpdates(_0x4f4bcc[_0x1182('0x59')],null))['then'](respondWithResult(_0x4a5fa2,null))[_0x1182('0x1f')](handleError(_0x4a5fa2,null));};exports[_0x1182('0x69')]=function(_0x49d5a1,_0x9d0190){_0x49d5a1['body'][_0x1182('0x6a')]=_0x49d5a1[_0x1182('0x67')][_0x1182('0x68')];return db[_0x1182('0x34')][_0x1182('0x4f')]({'where':{'id':_0x49d5a1[_0x1182('0x4d')]['id']}})[_0x1182('0x14')](handleEntityNotFound(_0x9d0190,null))[_0x1182('0x14')](saveUpdates(_0x49d5a1[_0x1182('0x59')],null))['then'](respondWithResult(_0x9d0190,null))[_0x1182('0x1f')](handleError(_0x9d0190,null));};exports[_0x1182('0x6b')]=function(_0x3dd9bf,_0x3af7cd){_0x3dd9bf['body'][_0x1182('0x6c')]=_0x3dd9bf['file'][_0x1182('0x68')];return db[_0x1182('0x34')]['find']({'where':{'id':_0x3dd9bf[_0x1182('0x4d')]['id']}})[_0x1182('0x14')](handleEntityNotFound(_0x3af7cd,null))[_0x1182('0x14')](saveUpdates(_0x3dd9bf[_0x1182('0x59')],null))['then'](respondWithResult(_0x3af7cd,null))[_0x1182('0x1f')](handleError(_0x3af7cd,null));};exports[_0x1182('0x6d')]=function(_0x1df32e,_0x555f3a){_0x1df32e[_0x1182('0x59')][_0x1182('0x6e')]=_0x1df32e[_0x1182('0x67')][_0x1182('0x68')];return db[_0x1182('0x34')][_0x1182('0x4f')]({'where':{'id':_0x1df32e['params']['id']}})['then'](handleEntityNotFound(_0x555f3a,null))[_0x1182('0x14')](saveUpdates(_0x1df32e[_0x1182('0x59')],null))[_0x1182('0x14')](respondWithResult(_0x555f3a,null))[_0x1182('0x1f')](handleError(_0x555f3a,null));};exports[_0x1182('0x6f')]=function(_0x38cf8f,_0xd278ce){var _0x511a78=path[_0x1182('0x70')](config[_0x1182('0x71')],_0x1182('0x72'));var _0x2c78d9={'where':{'id':_0x38cf8f[_0x1182('0x4d')]['id']},'attributes':['id','sitepic'],'raw':!![]};var _0x5a9913=![];return require(_0x1182('0x73'))[_0x1182('0x74')]()[_0x1182('0x14')](function(_0x3f7af6){if(_0x3f7af6){_0x5a9913=_0x3f7af6['custom'];}})[_0x1182('0x14')](function(){return db[_0x1182('0x34')][_0x1182('0x4f')](_0x2c78d9);})[_0x1182('0x14')](handleEntityNotFound(_0xd278ce,null))[_0x1182('0x14')](function(_0x6960a3){if(_0x6960a3){if(!_[_0x1182('0x75')](_0x6960a3[_0x1182('0x66')])){if(fs[_0x1182('0x76')](path[_0x1182('0x70')](config[_0x1182('0x71')],_0x1182('0x77'),_0x6960a3[_0x1182('0x66')]))&&_0x5a9913){_0x511a78=path[_0x1182('0x70')](config[_0x1182('0x71')],_0x1182('0x77'),_0x6960a3[_0x1182('0x66')]);}}return _0xd278ce['download'](_0x511a78);}})['catch'](handleError(_0xd278ce,null));};exports[_0x1182('0x78')]=function(_0x586c3d,_0x24202a){var _0x42638b=path[_0x1182('0x70')](config[_0x1182('0x71')],_0x1182('0x79'));var _0x3eb4e0={'where':{'id':_0x586c3d[_0x1182('0x4d')]['id']},'attributes':['id','agentAvatar'],'raw':!![]};return db[_0x1182('0x34')]['find'](_0x3eb4e0)[_0x1182('0x14')](handleEntityNotFound(_0x24202a,null))[_0x1182('0x14')](function(_0x39fa29){if(_0x39fa29){if(!_[_0x1182('0x75')](_0x39fa29[_0x1182('0x6a')])){if(fs['existsSync'](path['join'](config['root'],'server/files/images/avatars/',_0x39fa29[_0x1182('0x6a')]))){_0x42638b=path[_0x1182('0x70')](config['root'],_0x1182('0x7a'),_0x39fa29[_0x1182('0x6a')]);}}return _0x24202a[_0x1182('0x7b')](_0x42638b);}})[_0x1182('0x1f')](handleError(_0x24202a,null));};exports[_0x1182('0x7c')]=function(_0x1e826b,_0x47fe18){var _0x43233a=path[_0x1182('0x70')](config['root'],_0x1182('0x7d'));var _0x22d4f0={'where':{'id':_0x1e826b[_0x1182('0x4d')]['id']},'attributes':['id',_0x1182('0x6c'),_0x1182('0x7e')],'raw':!![]};return db['ChatWebsite'][_0x1182('0x4f')](_0x22d4f0)[_0x1182('0x14')](handleEntityNotFound(_0x47fe18,null))['then'](function(_0x38e061){if(_0x38e061){if(!_[_0x1182('0x75')](_0x38e061[_0x1182('0x6c')])){if(fs[_0x1182('0x76')](path[_0x1182('0x70')](config[_0x1182('0x71')],_0x1182('0x7a'),_0x38e061[_0x1182('0x6c')]))&&_0x38e061[_0x1182('0x7e')]){_0x43233a=path[_0x1182('0x70')](config[_0x1182('0x71')],_0x1182('0x7a'),_0x38e061[_0x1182('0x6c')]);}}return _0x47fe18['download'](_0x43233a);}})[_0x1182('0x1f')](handleError(_0x47fe18,null));};exports['getSystemAvatar']=function(_0x2275d0,_0x42a49a){var _0xa652cd=path[_0x1182('0x70')](config[_0x1182('0x71')],_0x1182('0x7f'));var _0x11bfde={'where':{'id':_0x2275d0[_0x1182('0x4d')]['id']},'attributes':['id',_0x1182('0x6e')],'raw':!![]};return db[_0x1182('0x34')][_0x1182('0x4f')](_0x11bfde)[_0x1182('0x14')](handleEntityNotFound(_0x42a49a,null))['then'](function(_0x1e2b28){if(_0x1e2b28){if(!_[_0x1182('0x75')](_0x1e2b28[_0x1182('0x6e')])){if(fs[_0x1182('0x76')](path[_0x1182('0x70')](config[_0x1182('0x71')],_0x1182('0x7a'),_0x1e2b28[_0x1182('0x6e')]))){_0xa652cd=path[_0x1182('0x70')](config[_0x1182('0x71')],_0x1182('0x7a'),_0x1e2b28[_0x1182('0x6e')]);}}return _0x42a49a['download'](_0xa652cd);}})['catch'](handleError(_0x42a49a,null));};exports[_0x1182('0x80')]=function(_0x4eec81,_0x195efc){var _0x487daa=require('user-agent-parser');var _0xee8ffa=new _0x487daa();var _0x5c8e59=_0xee8ffa[_0x1182('0x81')](_0x4eec81[_0x1182('0x82')][_0x1182('0x83')])['getResult']();var _0x29d6cc={'body':_0x4eec81[_0x1182('0x59')],'channel':_0x1182('0x84')};var _0x254016=[];var _0x3a3d3=[];var _0x328c94={};var _0x18ca7a=![];return db[_0x1182('0x85')][_0x1182('0x58')]()['then'](function(_0x85eb8d){if(!_0x85eb8d){throw new db['Sequelize'][(_0x1182('0x86'))](_0x1182('0x87'));}_0x254016=_[_0x1182('0x88')](_[_0x1182('0x4e')](_0x85eb8d),[_0x1182('0x89'),_0x1182('0x8a')]);_0x3a3d3=_[_0x1182('0x88')](_[_0x1182('0x4e')](_0x85eb8d),[_0x1182('0x89'),_0x1182('0x8a'),_0x1182('0x8b'),_0x1182('0x8c')]);if(_0x4eec81[_0x1182('0x59')]['id']){delete _0x4eec81[_0x1182('0x59')]['id'];}if(_[_0x1182('0x75')](_0x4eec81[_0x1182('0x59')]['from'])){throw new db[(_0x1182('0x8d'))][(_0x1182('0x86'))](_0x1182('0x8e'));}if(_[_0x1182('0x75')](_0x4eec81[_0x1182('0x59')][_0x1182('0x59')])||_0x4eec81[_0x1182('0x59')]['body']===''){throw new db[(_0x1182('0x8d'))][(_0x1182('0x86'))](_0x1182('0x8f'));}if(_[_0x1182('0x75')](_0x4eec81[_0x1182('0x59')]['mapKey'])){throw new db[(_0x1182('0x8d'))][(_0x1182('0x86'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x3a3d3);}if(!_[_0x1182('0x90')](_0x3a3d3,_0x4eec81[_0x1182('0x59')][_0x1182('0x91')])){throw new db[(_0x1182('0x8d'))][(_0x1182('0x86'))](_0x1182('0x92')+_0x3a3d3);}_0x328c94[_0x4eec81['body']['mapKey']]=_0x4eec81['body']['from'];})[_0x1182('0x14')](function(){return db[_0x1182('0x34')]['find']({'where':{'id':_0x4eec81[_0x1182('0x4d')]['id']},'include':[{'model':db[_0x1182('0x93')],'as':_0x1182('0x94'),'include':[{'model':db['CmContact'],'as':_0x1182('0x95'),'where':_0x328c94,'limit':0x1,'order':[['updatedAt','DESC']]}]},{'model':db[_0x1182('0x96')],'as':_0x1182('0x97')}]});})['then'](handleEntityNotFound(_0x195efc,null))[_0x1182('0x14')](function(_0x320b68){if(_0x320b68&&_0x320b68[_0x1182('0x94')]){_0x29d6cc[_0x1182('0x98')]=_0x320b68;_0x29d6cc[_0x1182('0x99')]=_0x320b68[_0x1182('0x97')];_0x29d6cc[_0x1182('0x9a')]=_0x320b68['List'];_0x29d6cc[_0x1182('0x99')]=_[_0x1182('0x9b')](_0x29d6cc[_0x1182('0x99')],[_0x1182('0x9c')],['asc']);if(_0x29d6cc['account'][_0x1182('0x97')]){delete _0x29d6cc[_0x1182('0x98')][_0x1182('0x97')];}if(_0x29d6cc[_0x1182('0x98')][_0x1182('0x94')]&&_0x29d6cc[_0x1182('0x98')]['List'][_0x1182('0x95')][_0x1182('0x3e')]){return _0x29d6cc[_0x1182('0x98')][_0x1182('0x94')]['Contacts'][0x0];}var _0xb8194c=_[_0x1182('0xb')](_0x4eec81[_0x1182('0x59')],{'firstName':_0x4eec81[_0x1182('0x59')][_0x1182('0x9d')],'ListId':_0x320b68['ListId']});_0xb8194c[_0x4eec81[_0x1182('0x59')][_0x1182('0x91')]]=_0x4eec81[_0x1182('0x59')]['from'];return db[_0x1182('0x85')][_0x1182('0x50')](_0xb8194c,{'fields':_0x254016,'raw':!![]});}})[_0x1182('0x14')](handleEntityNotFound(_0x195efc,null))[_0x1182('0x14')](function(_0x35e6c2){_0x29d6cc[_0x1182('0x9e')]=_0x35e6c2;var _0x58b742=_0x4eec81[_0x1182('0x59')][_0x1182('0x9f')];if(_0x4eec81['headers'][_0x1182('0xa0')]){_0x58b742=_0x4eec81[_0x1182('0x82')]['cf-connecting-ip'];}else if(_0x4eec81['headers'][_0x1182('0xa1')]){_0x58b742=_['first'](_0x4eec81[_0x1182('0x82')][_0x1182('0xa1')]['split'](','));}if(_0x35e6c2){var _0x5bc27d={'ContactId':_0x35e6c2['id'],'ChatWebsiteId':_0x4eec81[_0x1182('0x4d')]['id'],'from':(_0x35e6c2[_0x1182('0xa2')]||'')+'\x20'+(_0x35e6c2['lastName']||''),'customerIp':_0x58b742,'customerPort':_0x4eec81[_0x1182('0x82')][_0x1182('0xa3')]?_0x4eec81[_0x1182('0x82')][_0x1182('0xa3')]:null,'referer':_0x4eec81[_0x1182('0x59')][_0x1182('0xa4')],'browserName':_0x5c8e59[_0x1182('0xa5')][_0x1182('0x2e')]&&_0x5c8e59[_0x1182('0xa5')][_0x1182('0xa6')]?util[_0x1182('0xa7')]('%s\x20%s',_0x5c8e59[_0x1182('0xa5')]['name'],_0x5c8e59['browser'][_0x1182('0xa6')]):_0x1182('0xa8'),'browserVersion':_0x5c8e59[_0x1182('0xa5')][_0x1182('0xa6')]||'unknown','osName':util['format']('%s\x20%s',_0x5c8e59['os'][_0x1182('0x2e')],_0x5c8e59['os']['version']),'osVersion':_0x5c8e59['os'][_0x1182('0xa6')],'deviceModel':_0x5c8e59['device'][_0x1182('0x3b')]&&_0x5c8e59[_0x1182('0xa9')][_0x1182('0xaa')]?util[_0x1182('0xa7')](_0x1182('0xab'),_0x5c8e59[_0x1182('0xa9')][_0x1182('0x3b')],_0x5c8e59[_0x1182('0xa9')][_0x1182('0xaa')],_0x5c8e59[_0x1182('0xa9')][_0x1182('0x36')]):null,'deviceVendor':_0x5c8e59[_0x1182('0xa9')][_0x1182('0xaa')],'deviceType':_0x5c8e59[_0x1182('0xa9')][_0x1182('0x36')],'formData':JSON[_0x1182('0x19')](_0x4eec81[_0x1182('0x59')])};var _0x52f60b={'ChatWebsiteId':_0x4eec81[_0x1182('0x4d')]['id'],'closed':![]};if(_0x4eec81['body']['threadId']){_0x52f60b[_0x1182('0xac')]=_0x4eec81[_0x1182('0x59')]['threadId'];return db[_0x1182('0xad')][_0x1182('0x4f')]({'where':_0x52f60b})[_0x1182('0x14')](function(_0x21de19){if(_0x21de19){return[_0x21de19,![]];}_0x5bc27d['threadId']=_0x4eec81[_0x1182('0x59')][_0x1182('0xac')];_0x5bc27d[_0x1182('0xae')]=_0x4eec81[_0x1182('0x59')][_0x1182('0xae')];return db[_0x1182('0xad')][_0x1182('0x50')](_0x5bc27d)[_0x1182('0x14')](function(_0x145cee){return[_0x145cee,!![]];});});}_0x52f60b[_0x1182('0xaf')]=_0x35e6c2['id'];if(_0x4eec81['body']['interaction']&&_0x4eec81[_0x1182('0x59')]['interaction']['id']){_0x52f60b['id']=_0x4eec81[_0x1182('0x59')][_0x1182('0xb0')]['id'];return db[_0x1182('0xad')][_0x1182('0x4f')]({'where':_0x52f60b})[_0x1182('0x14')](function(_0x13415e){if(_0x13415e){return[_0x13415e,![]];}return db[_0x1182('0xad')]['create'](_0x5bc27d)['then'](function(_0x5179a7){return[_0x5179a7,!![]];});});}return db[_0x1182('0xad')][_0x1182('0x50')](_0x5bc27d)[_0x1182('0x14')](function(_0x16a08f){return[_0x16a08f,!![]];});}})[_0x1182('0xb1')](function(_0x463874,_0x9cfa54){if(_0x463874){_0x18ca7a=_0x9cfa54;if(!_0x9cfa54){var _0x2c5b14={'from':(_0x29d6cc[_0x1182('0x9e')][_0x1182('0xa2')]||'')+'\x20'+(_0x29d6cc[_0x1182('0x9e')]['lastName']||'')};if(_0x4eec81[_0x1182('0x59')][_0x1182('0xac')]&&_0x4eec81[_0x1182('0x59')][_0x1182('0xb2')]&&_0x4eec81[_0x1182('0x59')][_0x1182('0xac')]!=_0x4eec81[_0x1182('0x59')]['messageId']){_0x2c5b14[_0x1182('0xac')]=_0x4eec81[_0x1182('0x59')]['messageId'];}return _0x463874[_0x1182('0x29')](_0x2c5b14);}else{return _0x463874;}}})[_0x1182('0x14')](function(_0x3d0a9b){_0x29d6cc[_0x1182('0xb0')]=_0x3d0a9b[_0x1182('0x2b')]({'plain':!![]});_0x29d6cc[_0x1182('0xb0')][_0x1182('0xb3')]=_0x18ca7a;if(_0x29d6cc[_0x1182('0xb0')][_0x1182('0xb3')]){if(_0x29d6cc[_0x1182('0x98')]['autoclose']){_0x29d6cc[_0x1182('0x99')][_0x1182('0xb4')]({'id':0x0,'priority':_0x29d6cc[_0x1182('0x99')]['length']+0x1,'app':'close','appdata':_0x1182('0xb5'),'interval':_0x1182('0xb6')});}}return db[_0x1182('0xb7')]['create']({'body':_0x4eec81['body'][_0x1182('0x59')],'ChatWebsiteId':_0x4eec81[_0x1182('0x4d')]['id'],'ChatInteractionId':_0x3d0a9b['id'],'direction':'in','ContactId':_0x29d6cc['contact']['id'],'AttachmentId':_0x4eec81[_0x1182('0x59')][_0x1182('0xb8')]});})[_0x1182('0x14')](function(_0xad2d2e){_0x29d6cc[_0x1182('0x1c')]=_0xad2d2e;if(_0x29d6cc[_0x1182('0xb0')][_0x1182('0xb9')]){return db[_0x1182('0xba')][_0x1182('0x4f')]({'attributes':['id',_0x1182('0x2e')],'where':{'id':_0x29d6cc[_0x1182('0xb0')][_0x1182('0xb9')]}})[_0x1182('0x14')](function(_0x3567cd){if(_0x3567cd){_0x29d6cc[_0x1182('0x99')][_0x1182('0xbb')]({'id':0x0,'priority':0x0,'app':_0x1182('0xbc'),'appdata':_0x3567cd[_0x1182('0x2e')]+','+(_0x29d6cc[_0x1182('0x98')][_0x1182('0xbd')]||0xa),'interval':_0x1182('0xb6')});_0x29d6cc[_0x1182('0xbe')]=!![];}return respondWithRpcPromise(_0x1182('0xbf'),_0x1182('0xc0'),_0x29d6cc);});}return respondWithRpcPromise(_0x1182('0xbf'),_0x1182('0xc0'),_0x29d6cc);})[_0x1182('0x14')](function(_0x499d2d){respondWithRpcPromise(_0x1182('0xc1'),'EventManager',{'event':'notify','message':_0x499d2d},client9002);return _0x499d2d;})[_0x1182('0x14')](respondWithResult(_0x195efc,null))[_0x1182('0x1f')](handleError(_0x195efc,null));};exports[_0x1182('0xc2')]=function(_0x2e4e35,_0x22b4d8){var _0x5d5743,_0x549665,_0x228059;var _0x475b14=[];var _0x27f1d5={};var _0x38cd89=_0x2e4e35['files']||[];var _0x20daaa=[];var _0x52ca8a;return db[_0x1182('0x85')]['describe']()['then'](function(_0x33111e){if(!_0x33111e){throw new db[(_0x1182('0x8d'))][(_0x1182('0x86'))]('no\x20available\x20attributes');}_0x475b14=_[_0x1182('0x88')](_[_0x1182('0x4e')](_0x33111e),[_0x1182('0x89'),_0x1182('0x8a'),_0x1182('0x8b'),'ListId']);if(_0x2e4e35[_0x1182('0x59')]['id']){delete _0x2e4e35['body']['id'];}if(_['isNil'](_0x2e4e35[_0x1182('0x59')][_0x1182('0x9d')])){throw _0x22b4d8[_0x1182('0x21')](0x1f4)[_0x1182('0x2f')](new db[(_0x1182('0x8d'))][(_0x1182('0x86'))](_0x1182('0x8e')));}if(_['isNil'](_0x2e4e35['body'][_0x1182('0x59')])||_0x2e4e35[_0x1182('0x59')][_0x1182('0x59')]===''){throw _0x22b4d8[_0x1182('0x21')](0x1f4)[_0x1182('0x2f')](new db[(_0x1182('0x8d'))]['ValidationError'](_0x1182('0x8f')));}if(_['isNil'](_0x2e4e35['body'][_0x1182('0xc3')])){throw _0x22b4d8[_0x1182('0x21')](0x1f4)['send'](new db[(_0x1182('0x8d'))]['ValidationError'](_0x1182('0xc4')+_0x475b14));}if(!_['includes'](_0x475b14,_0x2e4e35[_0x1182('0x59')][_0x1182('0xc3')])){throw _0x22b4d8['status'](0x1f4)[_0x1182('0x2f')](new db['Sequelize'][(_0x1182('0x86'))](_0x1182('0xc5')+_0x475b14));}_0x27f1d5[_0x2e4e35[_0x1182('0x59')][_0x1182('0xc3')]]=_0x2e4e35[_0x1182('0x59')]['from'];})[_0x1182('0x14')](function(){return db[_0x1182('0x34')][_0x1182('0x4f')]({'where':{'id':_0x2e4e35[_0x1182('0x4d')]['id']},'include':[{'model':db[_0x1182('0x93')],'as':_0x1182('0x94')},{'model':db[_0x1182('0xc6')],'as':_0x1182('0xc6')}]});})[_0x1182('0x14')](handleEntityNotFound(_0x22b4d8,null))[_0x1182('0x14')](function(_0x335712){if(_0x335712&&_0x335712[_0x1182('0x94')]){_0x549665=_0x335712;var _0x54e740=_[_0x1182('0xb')](_0x2e4e35[_0x1182('0x59')],{'firstName':_0x2e4e35['body'][_0x1182('0x9d')],'phone':_0x2e4e35[_0x1182('0x59')][_0x1182('0x9d')],'ListId':_0x335712['ListId']});_0x54e740[_0x2e4e35[_0x1182('0x59')][_0x1182('0xc3')]]=_0x2e4e35[_0x1182('0x59')]['from'];return db['CmContact']['findOrCreate']({'where':_0x27f1d5,'defaults':_0x54e740});}})['spread'](function(_0x34d90f){if(_0x34d90f){_0x228059=_0x34d90f;var _0x55ecd6=fs[_0x1182('0xc7')](path[_0x1182('0x70')](config[_0x1182('0x71')],_0x1182('0xc8')),_0x1182('0xc9'));var _0x1be3bb=ejs[_0x1182('0xca')](_0x55ecd6,{'body':_[_0x1182('0xcb')](_0x2e4e35[_0x1182('0x59')][_0x1182('0x59')]),'bodyTitle':_0x549665[_0x1182('0xcc')]});return db[_0x1182('0xcd')][_0x1182('0x50')]({'body':_0x1be3bb,'plainBody':htmlToText['fromString'](_0x1be3bb),'ContactId':_0x34d90f['id'],'ChatWebsiteId':_0x549665['id']});}})[_0x1182('0x14')](function(_0x205649){_0x52ca8a=_0x205649;if(_0x38cd89[_0x1182('0x3e')]){var _0x27ac9b=_0x38cd89[_0x1182('0x33')](function(_0xb24413){return{'name':_0xb24413['originalname'],'basename':_0xb24413['filename'],'type':_0xb24413['mimetype'],'ChatOfflineMessageId':_0x205649['id']};});_0x20daaa=_0x27ac9b[_0x1182('0x33')](_0x1f9758=>{var _0x182a24={'filename':_0x1f9758[_0x1182('0x2e')],'path':path[_0x1182('0x70')](config['root'],_0x1182('0xce'),'files','attachments','offline-chat',_0x1f9758['basename'])};return _0x182a24;});if(!_0x549665[_0x1182('0xcf')]){return db[_0x1182('0xd0')][_0x1182('0xd1')](function(_0x3cd045){return db[_0x1182('0xd2')][_0x1182('0xd3')](_0x27ac9b,{'transaction':_0x3cd045});});}}})[_0x1182('0x14')](function(){if(_0x52ca8a){_0x5d5743=_0x52ca8a;return db[_0x1182('0xc6')][_0x1182('0x63')]({'where':{'service':!![]},'include':[{'model':db[_0x1182('0xd4')],'as':_0x1182('0xd5'),'raw':!![],'include':[{'model':db[_0x1182('0xd6')],'as':_0x1182('0xd6'),'raw':!![]}]}]});}})[_0x1182('0x14')](function(_0x295b1b){if(_0x295b1b&&_0x295b1b[_0x1182('0xd5')]&&_0x549665[_0x1182('0xd7')]&&_0x549665['forwardOfflineAddress']){var _0x182e96=_0x295b1b['getSmtpOptions']();return respondWithRpcPromise(_0x1182('0xd8'),_0x1182('0xd9'),{'account':_0x182e96,'message':{'from':util[_0x1182('0xa7')](_0x1182('0xda'),_0x295b1b[_0x1182('0x2e')],_0x295b1b[_0x1182('0xdb')]||_0x295b1b[_0x1182('0xd5')][_0x1182('0x51')]),'to':_0x549665[_0x1182('0xdc')],'subject':_0x549665[_0x1182('0xdd')],'html':_0x5d5743[_0x1182('0x59')],'attachments':_0x20daaa}},client9003)[_0x1182('0x14')](function(){return _0x5d5743;})['catch'](function(_0x18e363){logger['error'](_0x18e363);});}})['then'](function(){if(_0x549665&&_0x549665[_0x1182('0xcf')]&&_0x549665[_0x1182('0xde')]){var _0x4b0c46=[];if(_0x38cd89[_0x1182('0x3e')]){_0x4b0c46=_0x38cd89[_0x1182('0x33')](function(_0x167366){return{'name':_0x167366[_0x1182('0xdf')],'basename':_0x167366['filename'],'type':_0x167366[_0x1182('0xe0')],'ChatOfflineMessageId':_0x52ca8a['id']};});}var _0xc6c5b7;if(!_['isNil'](_0x549665[_0x1182('0xe1')])){var _0x60ee1f=_[_0x1182('0x33')](_0x2e4e35[_0x1182('0x59')],function(_0x10470f){return _0x10470f;});var _0x14dd03=_['toPairsIn'](_0x60ee1f)[0x0];var _0x50c1aa=_[_0x1182('0xe2')](_0x14dd03,function(_0x3afd9d){return _0x3afd9d;});_0xc6c5b7=_0x50c1aa[0x1][_0x549665[_0x1182('0xe1')]];}var _0xa52a7a={'from':_0x228059[_0x1182('0xdb')],'firstName':_0x228059[_0x1182('0xa2')],'lastName':_0x228059[_0x1182('0xe3')],'mapKey':_0x1182('0xdb'),'message':{'from':_0x228059[_0x1182('0xdb')],'to':_0x549665[_0x1182('0xc6')][_0x1182('0xdb')],'cc':'','subject':_['isNil'](_0xc6c5b7)?_0x549665[_0x1182('0xdd')]:_0xc6c5b7,'messageId':'','sentAt':new Date(),'attach':_0x4b0c46[_0x1182('0x3e')],'attachments':_0x4b0c46,'originChannel':_0x1182('0xe4'),'ChatWebsiteId':_0x549665['id'],'ChatOfflineMessageId':_0x5d5743['id'],'originTo':_0x549665[_0x1182('0xc6')][_0x1182('0xdb')]},'body':_0x5d5743[_0x1182('0x59')]};var _0x2ed6c6={'account':{'id':_0x549665[_0x1182('0xde')]},'body':_0xa52a7a,'log':'NotifyMailAccount'};return respondWithRpcPromise(_0x1182('0xe5'),_0x1182('0xe6'),_0x2ed6c6,client9001)['then'](function(){return _0x5d5743;})[_0x1182('0x1f')](function(_0x530fa0){logger[_0x1182('0x1a')](_0x530fa0);});}return;})[_0x1182('0x14')](function(){if(_0x5d5743){return _0x5d5743;}})['then'](respondWithResult(_0x22b4d8,null))[_0x1182('0x1f')](function(_0x2557c9){logger[_0x1182('0x1a')](_0x1182('0x1f'),_0x2557c9);for(var _0x168875 of _0x38cd89){var _0x316224=path[_0x1182('0x70')](config[_0x1182('0x71')],_0x1182('0xce'),_0x1182('0xe7'),'attachments',_0x1182('0xe8'),_0x168875[_0x1182('0x68')]);fs_extra[_0x1182('0xe9')](_0x316224)[_0x1182('0x1f')](function(_0x2b42b7){logger['error'](_0x1182('0xea'),_0x316224,_0x2b42b7);});}});};exports[_0x1182('0xeb')]=function(_0x359a57,_0x3280b4){return db[_0x1182('0xad')][_0x1182('0x4f')]({'where':{'id':_0x359a57[_0x1182('0x4d')]['id']}})['then'](handleEntityNotFound(_0x3280b4,null))[_0x1182('0x14')](function(_0x57c4c1){if(_0x57c4c1){return _0x57c4c1['addInteraction'](_0x359a57[_0x1182('0x59')][_0x1182('0xec')],_[_0x1182('0xed')](_0x359a57[_0x1182('0x59')],[_0x1182('0xec'),'id'])||{});}})[_0x1182('0x14')](respondWithResult(_0x3280b4,null))[_0x1182('0x1f')](handleError(_0x3280b4,null));};exports[_0x1182('0xee')]=function(_0x55a86e,_0x301616){var _0x4b3a98={'raw':![],'where':{}};var _0x4285ea={};var _0x596294={'count':0x0,'rows':[]};return db[_0x1182('0x34')][_0x1182('0x63')]({'where':{'id':_0x55a86e[_0x1182('0x4d')]['id']}})[_0x1182('0x14')](handleEntityNotFound(_0x301616,null))[_0x1182('0x14')](function(_0x6dbaaa){if(_0x6dbaaa){_0x4285ea[_0x1182('0x3b')]=_['keys'](db[_0x1182('0xad')][_0x1182('0x5d')]);_0x4285ea[_0x1182('0x38')]=_['keys'](_0x55a86e[_0x1182('0x38')]);_0x4285ea[_0x1182('0x39')]=_[_0x1182('0x3a')](_0x4285ea[_0x1182('0x3b')],_0x4285ea[_0x1182('0x38')]);_0x4b3a98[_0x1182('0x3d')]=_[_0x1182('0x3a')](_0x4285ea[_0x1182('0x3b')],qs[_0x1182('0x3c')](_0x55a86e['query'][_0x1182('0x3c')]));_0x4b3a98['attributes']=_0x4b3a98[_0x1182('0x3d')]['length']?_0x4b3a98[_0x1182('0x3d')]:_0x4285ea['model'];if(!_0x55a86e['query'][_0x1182('0x5e')]('nolimit')){_0x4b3a98[_0x1182('0x24')]=qs[_0x1182('0x24')](_0x55a86e[_0x1182('0x38')][_0x1182('0x24')]);_0x4b3a98[_0x1182('0x23')]=qs[_0x1182('0x23')](_0x55a86e[_0x1182('0x38')][_0x1182('0x23')]);}_0x4b3a98[_0x1182('0x40')]=qs['sort'](_0x55a86e[_0x1182('0x38')][_0x1182('0x41')]);_0x4b3a98['where']=qs['filters'](_[_0x1182('0x43')](_0x55a86e[_0x1182('0x38')],_0x4285ea[_0x1182('0x39')]));_0x4b3a98[_0x1182('0x42')][_0x1182('0x5a')]=_0x6dbaaa['id'];if(_0x55a86e[_0x1182('0x38')][_0x1182('0x44')]){_0x4b3a98[_0x1182('0x42')]=_[_0x1182('0x46')](_0x4b3a98[_0x1182('0x42')],{'$or':_[_0x1182('0x33')](_0x4b3a98[_0x1182('0x3d')],function(_0x306aa5){var _0x172267={};_0x172267[_0x306aa5]={'$like':'%'+_0x55a86e[_0x1182('0x38')][_0x1182('0x44')]+'%'};return _0x172267;})});}_0x4b3a98=_['merge']({},_0x4b3a98,_0x55a86e['options']);return db[_0x1182('0xad')]['count']({'where':_0x4b3a98[_0x1182('0x42')]})['then'](function(_0x498b82){_0x596294['count']=_0x498b82;if(_0x55a86e[_0x1182('0x38')]['includeAll']){_0x4b3a98[_0x1182('0x49')]=[{'model':db[_0x1182('0x85')],'as':_0x1182('0xef'),'required':![]},{'model':db[_0x1182('0xba')],'as':_0x1182('0xf0'),'attributes':[_0x1182('0x2e'),'fullname',_0x1182('0xf1')],'required':![]},{'model':db['Tag'],'as':_0x1182('0xf2'),'attributes':['id','name',_0x1182('0xf3')],'where':_0x55a86e[_0x1182('0x38')][_0x1182('0xf4')]?{'id':_0x55a86e[_0x1182('0x38')]['tag']}:undefined,'required':_0x55a86e['query'][_0x1182('0xf4')]?!![]:![]}];}return db[_0x1182('0xad')][_0x1182('0x4a')](_0x4b3a98);})[_0x1182('0x14')](function(_0x5111ac){_0x596294[_0x1182('0x4b')]=_0x5111ac;return _0x596294;});}})[_0x1182('0x14')](respondWithFilteredResult(_0x301616,_0x4b3a98))[_0x1182('0x1f')](handleError(_0x301616,null));};function iftimePromise(_0x124032,_0x4e2043){return respondWithRpcPromise('Command',_0x1182('0xf5'),{'command':_0x4e2043[_0x1182('0xf6')]?util[_0x1182('0xa7')](_0x1182('0xf7'),_0x124032[_0x1182('0xf8')],_0x4e2043[_0x1182('0xf6')]):util[_0x1182('0xa7')](_0x1182('0xf9'),_0x124032[_0x1182('0xf8')])},client9002)[_0x1182('0x14')](function(_0x558493){var _0x44590f=_0x558493&&_0x558493[_0x1182('0xfa')](_0x1182('0xfb'))>=0x0?!![]:![];logger[_0x1182('0x15')](_0x1182('0xfc'),_0x4e2043['id'],_0x124032['id'],_0x124032['interval'],_0x44590f?_0x1182('0xfd'):_0x1182('0xfe'),_0x4e2043[_0x1182('0xf6')]?_0x4e2043[_0x1182('0xf6')]:_0x1182('0xff'));return _0x44590f;})[_0x1182('0x1f')](function(_0x2fdb44){logger[_0x1182('0x1a')](_0x1182('0xfc'),_0x4e2043['id'],_0x124032['id'],_0x124032['interval'],util[_0x1182('0x100')](_0x2fdb44,{'showHidden':![],'depth':null}),_0x4e2043[_0x1182('0xf6')]?_0x4e2043[_0x1182('0xf6')]:'No\x20timezone');return![];});}exports[_0x1182('0xf5')]=function(_0x3e7d50,_0x4d4a16){var _0x3676a4=0x0;var _0x2ac43d=0x0;var _0xbbd190=![];var _0x1594fc;var _0x13f39a;return db[_0x1182('0x34')][_0x1182('0x4f')]({'where':{'id':_0x3e7d50['params']['id']},'include':[{'model':db[_0x1182('0x101')],'as':_0x1182('0x101'),'include':[{'model':db[_0x1182('0x101')],'as':_0x1182('0x102'),'attributes':['id','interval'],'raw':!![]}]}]})['then'](handleEntityNotFound(_0x4d4a16,null))[_0x1182('0x14')](function(_0x4351ec){if(_0x4351ec){_0x1594fc=_0x4351ec;return _0x4351ec['getProactiveActions']({'raw':!![]});}})[_0x1182('0x14')](function(_0x2c76fe){if(_0x1594fc){if(_0x2c76fe){_0x13f39a=_0x2c76fe;}}return require(_0x1182('0x73'))[_0x1182('0x74')]();})[_0x1182('0x14')](function(_0x33b53a){if(_0x33b53a){_0x2ac43d=_0x33b53a[_0x1182('0x103')];_0xbbd190=_0x33b53a[_0x1182('0x104')];}})[_0x1182('0x14')](function(){return db[_0x1182('0xad')]['count']({'where':{'closed':![]}});})[_0x1182('0x14')](function(_0x3d9063){_0x3676a4=_0x3d9063;if(_0x2ac43d&&_0x3d9063>_0x2ac43d){return db[_0x1182('0x105')][_0x1182('0x63')]({'where':{'id':0x1}})['then'](function(_0x36124f){if(_0x36124f){_0x36124f[_0x1182('0x106')](_0x1182('0x107'));}});}})['then'](function(){if(_0x1594fc[_0x1182('0x101')]&&_0x1594fc[_0x1182('0x101')][_0x1182('0x102')]){var _0x50c58=[];for(var _0x2f533e=0x0;_0x2f533e<_0x1594fc[_0x1182('0x101')][_0x1182('0x102')][_0x1182('0x3e')];_0x2f533e++){var _0x3019cc=_0x1594fc[_0x1182('0x101')][_0x1182('0x102')][_0x2f533e][_0x1182('0x2b')]({'plain':!![]});_0x50c58[_0x1182('0xb4')](iftimePromise(_0x3019cc,_0x1594fc));}return BPromise[_0x1182('0x108')](_0x50c58)['then'](function(_0x298853){return _[_0x1182('0x109')](_0x298853);});}else{return!![];}})[_0x1182('0x14')](function(_0x1aa4f8){var _0x4654fd=fs[_0x1182('0xc7')](path[_0x1182('0x70')](config[_0x1182('0x71')],_0x1182('0x10a')),'utf8');var _0x504b7c={'remote':_0x1594fc[_0x1182('0x10b')],'query':querystring[_0x1182('0x19')](_['merge'](_0x1594fc[_0x1182('0x2b')]({'plain':!![]}),{'customerIp':_0x3e7d50[_0x1182('0x82')][_0x1182('0xa1')]||_0x3e7d50['headers'][_0x1182('0x10c')]||_0x3e7d50[_0x1182('0x10d')]['remoteAddress']||_0x3e7d50['ip'],'referer':_0x3e7d50['headers']['referer'],'openedInteractions':_0x3676a4,'maxInteractions':_0x2ac43d,'virtual':_0xbbd190[_0x1182('0x103')],'online':_0x1aa4f8,'custom':_0xbbd190}))[_0x1182('0x10e')](/'/g,'\x5c\x27')};_0x4d4a16[_0x1182('0x2f')](ejs[_0x1182('0xca')](Mustache[_0x1182('0xca')](_0x4654fd,_0x504b7c),{'proactiveActions':_0x13f39a,'alignment':_0x1594fc[_0x1182('0x10f')],'verticalAlignment':_0x1594fc[_0x1182('0x110')],'div_color':_0x1594fc[_0x1182('0xf3')],'labelText':_0x1594fc[_0x1182('0x111')],'text_color':_0x1594fc[_0x1182('0x112')],'text_button_color':_0x1594fc['textButtonColor'],'button_color':_0x1594fc[_0x1182('0x113')],'background_color':_0x1594fc[_0x1182('0x114')],'hideWhenOffline':_0x1594fc[_0x1182('0x115')],'interval':_0x1594fc['IntervalId']}));})[_0x1182('0x1f')](handleError(_0x4d4a16,null));};exports[_0x1182('0x116')]=function(_0x5b3bd9,_0x25dbc7){var _0xa4a3e=_0x5b3bd9[_0x1182('0x4d')]['id'];var _0x47f83a=_0x5b3bd9[_0x1182('0x59')];var _0x24c00e=0xc8;var _0x5aa82c=null;return db['sequelize'][_0x1182('0xd1')]({'isolationLevel':db[_0x1182('0xd0')][_0x1182('0x117')][_0x1182('0x118')]['READ_COMMITTED']},function(_0x138ca1){return db[_0x1182('0x34')][_0x1182('0x63')]({'where':{'id':_0xa4a3e},'transaction':_0x138ca1})[_0x1182('0x14')](function(_0x163f78){if(_0x163f78){return db[_0x1182('0x96')]['destroy']({'where':{'ChatWebsiteId':_0xa4a3e},'transaction':_0x138ca1})[_0x1182('0x14')](function(){var _0x234282=_[_0x1182('0x33')](_0x47f83a,function(_0x4041ef){_0x4041ef[_0x1182('0x5a')]=_0xa4a3e;return _0x4041ef;});return db[_0x1182('0x96')][_0x1182('0xd3')](_0x234282,{'transaction':_0x138ca1});});}else{_0x24c00e=0x194;_0x5aa82c=[];}});})[_0x1182('0x14')](function(){if(_0x24c00e!==0x194){return db[_0x1182('0x96')]['findAndCountAll']({'where':{'ChatWebsiteId':_0xa4a3e},'order':_0x1182('0x9c')})[_0x1182('0x14')](function(_0x57ee08){_0x5aa82c=_0x57ee08;});}})[_0x1182('0x1f')](function(_0x57286c){_0x24c00e=0x1f4;logger['error'](_0x57286c[_0x1182('0x2d')]);if(_0x57286c[_0x1182('0x2e')]){delete _0x57286c['name'];}_0x5aa82c=_0x57286c;})[_0x1182('0x119')](function(){if(_0x5aa82c===null){_0x25dbc7['sendStatus'](_0x24c00e);}else{if(_0x24c00e===0x1f4){_0x25dbc7['status'](_0x24c00e)[_0x1182('0x2f')](_0x5aa82c);}else{_0x25dbc7[_0x1182('0x21')](_0x24c00e)[_0x1182('0x22')](_0x5aa82c);}}});};exports[_0x1182('0x11a')]=function(_0x5dae71,_0x299118){var _0x15c759={};var _0x17e035={};var _0x33d5ee;var _0x159c2b;return db[_0x1182('0x34')][_0x1182('0x63')]({'where':{'id':_0x5dae71['params']['id']}})[_0x1182('0x14')](handleEntityNotFound(_0x299118,null))[_0x1182('0x14')](function(_0x4809a9){if(_0x4809a9){_0x33d5ee=_0x4809a9;_0x17e035[_0x1182('0x3b')]=_['keys'](db[_0x1182('0x96')][_0x1182('0x5d')]);_0x17e035['query']=_[_0x1182('0x4e')](_0x5dae71[_0x1182('0x38')]);_0x17e035[_0x1182('0x39')]=_[_0x1182('0x3a')](_0x17e035[_0x1182('0x3b')],_0x17e035['query']);_0x15c759['attributes']=_[_0x1182('0x3a')](_0x17e035[_0x1182('0x3b')],qs[_0x1182('0x3c')](_0x5dae71[_0x1182('0x38')][_0x1182('0x3c')]));_0x15c759[_0x1182('0x3d')]=_0x15c759[_0x1182('0x3d')][_0x1182('0x3e')]?_0x15c759[_0x1182('0x3d')]:_0x17e035['model'];_0x15c759[_0x1182('0x40')]=qs[_0x1182('0x41')](_0x5dae71[_0x1182('0x38')][_0x1182('0x41')]);_0x15c759[_0x1182('0x42')]=qs['filters'](_[_0x1182('0x43')](_0x5dae71[_0x1182('0x38')],_0x17e035[_0x1182('0x39')]));if(_0x5dae71[_0x1182('0x38')][_0x1182('0x44')]){_0x15c759['where']=_[_0x1182('0x46')](_0x15c759['where'],{'$or':_[_0x1182('0x33')](_0x15c759[_0x1182('0x3d')],function(_0x3e422d){var _0x40d76c={};_0x40d76c[_0x3e422d]={'$like':'%'+_0x5dae71[_0x1182('0x38')][_0x1182('0x44')]+'%'};return _0x40d76c;})});}_0x15c759=_[_0x1182('0x46')]({},_0x15c759,_0x5dae71[_0x1182('0x47')]);return _0x33d5ee['getApplications'](_0x15c759);}})['then'](function(_0x70a1ee){if(_0x70a1ee){_0x159c2b=_0x70a1ee[_0x1182('0x3e')];if(!_0x5dae71[_0x1182('0x38')][_0x1182('0x5e')](_0x1182('0x3f'))){_0x15c759[_0x1182('0x24')]=qs[_0x1182('0x24')](_0x5dae71[_0x1182('0x38')][_0x1182('0x24')]);_0x15c759[_0x1182('0x23')]=qs[_0x1182('0x23')](_0x5dae71[_0x1182('0x38')][_0x1182('0x23')]);}return _0x33d5ee[_0x1182('0x11a')](_0x15c759);}})['then'](function(_0x3f6c5c){if(_0x3f6c5c){return _0x3f6c5c?{'count':_0x159c2b,'rows':_0x3f6c5c}:null;}})[_0x1182('0x14')](respondWithResult(_0x299118,null))[_0x1182('0x1f')](handleError(_0x299118,null));};exports[_0x1182('0x11b')]=function(_0x463aea,_0x43dde9){return db[_0x1182('0x11c')][_0x1182('0x4f')]({'where':{'id':_0x463aea[_0x1182('0x4d')]['id']}})[_0x1182('0x14')](handleEntityNotFound(_0x43dde9,null))[_0x1182('0x14')](function(_0x1ab53b){if(_0x1ab53b){return _0x1ab53b[_0x1182('0x11b')](_0x463aea[_0x1182('0x59')][_0x1182('0xec')],_[_0x1182('0xed')](_0x463aea['body'],[_0x1182('0xec'),'id'])||{});}})[_0x1182('0x14')](respondWithResult(_0x43dde9,null))['catch'](handleError(_0x43dde9,null));};exports[_0x1182('0x11d')]=function(_0x3d8b1f,_0x67140){var _0x32c016={};var _0x4528b6={};var _0x2f8fb0;var _0x419faf;return db[_0x1182('0x34')]['findOne']({'where':{'id':_0x3d8b1f[_0x1182('0x4d')]['id']}})[_0x1182('0x14')](handleEntityNotFound(_0x67140,null))[_0x1182('0x14')](function(_0x32a7d2){if(_0x32a7d2){_0x2f8fb0=_0x32a7d2;_0x4528b6['model']=_[_0x1182('0x4e')](db[_0x1182('0x11e')]['rawAttributes']);_0x4528b6[_0x1182('0x38')]=_[_0x1182('0x4e')](_0x3d8b1f[_0x1182('0x38')]);_0x4528b6['filters']=_[_0x1182('0x3a')](_0x4528b6[_0x1182('0x3b')],_0x4528b6['query']);_0x32c016['attributes']=_['intersection'](_0x4528b6[_0x1182('0x3b')],qs[_0x1182('0x3c')](_0x3d8b1f[_0x1182('0x38')][_0x1182('0x3c')]));_0x32c016[_0x1182('0x3d')]=_0x32c016[_0x1182('0x3d')][_0x1182('0x3e')]?_0x32c016['attributes']:_0x4528b6[_0x1182('0x3b')];_0x32c016[_0x1182('0x40')]=qs['sort'](_0x3d8b1f[_0x1182('0x38')][_0x1182('0x41')]);_0x32c016[_0x1182('0x42')]=qs['filters'](_[_0x1182('0x43')](_0x3d8b1f['query'],_0x4528b6[_0x1182('0x39')]));if(_0x3d8b1f[_0x1182('0x38')][_0x1182('0x44')]){_0x32c016[_0x1182('0x42')]=_[_0x1182('0x46')](_0x32c016['where'],{'$or':_[_0x1182('0x33')](_0x32c016['attributes'],function(_0x1e9722){var _0x3f8313={};_0x3f8313[_0x1e9722]={'$like':'%'+_0x3d8b1f[_0x1182('0x38')][_0x1182('0x44')]+'%'};return _0x3f8313;})});}_0x32c016=_[_0x1182('0x46')]({},_0x32c016,_0x3d8b1f[_0x1182('0x47')]);return _0x2f8fb0[_0x1182('0x11d')](_0x32c016);}})[_0x1182('0x14')](function(_0xa2362d){if(_0xa2362d){_0x419faf=_0xa2362d[_0x1182('0x3e')];if(!_0x3d8b1f[_0x1182('0x38')][_0x1182('0x5e')](_0x1182('0x3f'))){_0x32c016['limit']=qs[_0x1182('0x24')](_0x3d8b1f[_0x1182('0x38')][_0x1182('0x24')]);_0x32c016['offset']=qs[_0x1182('0x23')](_0x3d8b1f[_0x1182('0x38')][_0x1182('0x23')]);}return _0x2f8fb0[_0x1182('0x11d')](_0x32c016);}})[_0x1182('0x14')](function(_0x390bb2){if(_0x390bb2){return _0x390bb2?{'count':_0x419faf,'rows':_0x390bb2}:null;}})[_0x1182('0x14')](respondWithResult(_0x67140,null))[_0x1182('0x1f')](handleError(_0x67140,null));};exports[_0x1182('0x11f')]=function(_0x30d8f3,_0x312f1d){var _0x50ebd8=_0x30d8f3[_0x1182('0x38')][_0x1182('0x120')]===_0x1182('0x121')?_0x1182('0x122'):'onlineForm';return db[_0x1182('0x34')][_0x1182('0x4f')]({'attributes':['id',_0x50ebd8],'where':{'id':_0x30d8f3[_0x1182('0x4d')]['id']}})[_0x1182('0x14')](handleEntityNotFound(_0x312f1d,null))[_0x1182('0x14')](function(_0x4319b2){if(_0x4319b2){var _0x1583f8=_0x4319b2[_0x50ebd8];var _0x74afe7=_0x1583f8&&_0x1583f8[_0x1182('0x123')]?_0x1583f8[_0x1182('0x123')]:[];_0x312f1d['send']({'fromKey':_['isNil'](_0x1583f8[_0x1182('0x124')])?undefined:_0x1583f8['fromKey'],'count':_0x74afe7[_0x1182('0x3e')],'rows':_0x74afe7});}})[_0x1182('0x1f')](handleError(_0x312f1d,null));};exports[_0x1182('0x125')]=function(_0x401b08,_0x159216){var _0x4acf57={'raw':![],'where':{}};var _0x11a6b4={};var _0x551bec={'count':0x0,'rows':[]};return db['ChatWebsite']['findOne']({'where':{'id':_0x401b08[_0x1182('0x4d')]['id']}})[_0x1182('0x14')](handleEntityNotFound(_0x159216,null))[_0x1182('0x14')](function(_0x18bd67){if(_0x18bd67){_0x11a6b4['model']=_[_0x1182('0x4e')](db['ChatOfflineMessage'][_0x1182('0x5d')]);_0x11a6b4[_0x1182('0x38')]=_[_0x1182('0x4e')](_0x401b08[_0x1182('0x38')]);_0x11a6b4[_0x1182('0x39')]=_['intersection'](_0x11a6b4[_0x1182('0x3b')],_0x11a6b4['query']);_0x4acf57[_0x1182('0x3d')]=_[_0x1182('0x3a')](_0x11a6b4[_0x1182('0x3b')],qs['fields'](_0x401b08[_0x1182('0x38')][_0x1182('0x3c')]));_0x4acf57[_0x1182('0x3d')]=_0x4acf57[_0x1182('0x3d')][_0x1182('0x3e')]?_0x4acf57[_0x1182('0x3d')]:_0x11a6b4[_0x1182('0x3b')];if(!_0x401b08[_0x1182('0x38')]['hasOwnProperty'](_0x1182('0x3f'))){_0x4acf57[_0x1182('0x24')]=qs[_0x1182('0x24')](_0x401b08['query'][_0x1182('0x24')]);_0x4acf57['offset']=qs['offset'](_0x401b08[_0x1182('0x38')][_0x1182('0x23')]);}_0x4acf57[_0x1182('0x40')]=qs[_0x1182('0x41')](_0x401b08[_0x1182('0x38')][_0x1182('0x41')]);_0x4acf57[_0x1182('0x42')]=qs['filters'](_[_0x1182('0x43')](_0x401b08[_0x1182('0x38')],_0x11a6b4['filters']));_0x4acf57[_0x1182('0x42')][_0x1182('0x5a')]=_0x18bd67['id'];if(_0x401b08[_0x1182('0x38')][_0x1182('0x44')]){_0x4acf57[_0x1182('0x42')]=_[_0x1182('0x46')](_0x4acf57['where'],{'$or':_[_0x1182('0x33')](_0x4acf57['attributes'],function(_0x214044){var _0x1397e5={};_0x1397e5[_0x214044]={'$like':'%'+_0x401b08[_0x1182('0x38')][_0x1182('0x44')]+'%'};return _0x1397e5;})});}_0x4acf57=_['merge']({},_0x4acf57,_0x401b08[_0x1182('0x47')]);return db['ChatOfflineMessage'][_0x1182('0x26')]({'where':_0x4acf57[_0x1182('0x42')]})[_0x1182('0x14')](function(_0x2700e8){_0x551bec[_0x1182('0x26')]=_0x2700e8;if(_0x401b08['query'][_0x1182('0x48')]){_0x4acf57[_0x1182('0x49')]=[{'all':!![]}];}else{_0x4acf57[_0x1182('0x49')]=[{'model':db[_0x1182('0x85')],'as':_0x1182('0xef'),'required':![]},{'model':db[_0x1182('0xd2')],'as':_0x1182('0x126'),'required':![]}];}return db[_0x1182('0xcd')][_0x1182('0x4a')](_0x4acf57);})[_0x1182('0x14')](function(_0x4be0e6){_0x551bec[_0x1182('0x4b')]=_0x4be0e6;return _0x551bec;});}})[_0x1182('0x14')](respondWithFilteredResult(_0x159216,_0x4acf57))[_0x1182('0x1f')](handleError(_0x159216,null));};exports[_0x1182('0x127')]=function(_0x2b119f,_0x1e944a){return db[_0x1182('0x34')][_0x1182('0x4f')]({'where':{'id':_0x2b119f['params']['id']}})[_0x1182('0x14')](handleEntityNotFound(_0x1e944a,null))['then'](function(_0x247609){if(_0x247609){return _0x247609[_0x1182('0x127')](_0x2b119f[_0x1182('0x59')][_0x1182('0xec')],_[_0x1182('0xed')](_0x2b119f[_0x1182('0x59')],[_0x1182('0xec'),'id'])||{})[_0x1182('0xb1')](function(_0x25fff9){for(var _0x3930b4=0x0;_0x3930b4<_0x2b119f[_0x1182('0x59')][_0x1182('0xec')][_0x1182('0x3e')];_0x3930b4+=0x1){socket[_0x1182('0x128')]('userChatWebsite:save',{'UserId':Number(_0x2b119f[_0x1182('0x59')][_0x1182('0xec')][_0x3930b4]),'ChatWebsiteId':Number(_0x2b119f['params']['id'])});}return _0x25fff9;});}})[_0x1182('0x14')](respondWithResult(_0x1e944a,null))[_0x1182('0x1f')](handleError(_0x1e944a,null));};exports[_0x1182('0x129')]=function(_0x5ddc58,_0x1284e8){return db[_0x1182('0x34')][_0x1182('0x4f')]({'where':{'id':_0x5ddc58[_0x1182('0x4d')]['id']}})['then'](handleEntityNotFound(_0x1284e8,null))['then'](function(_0x3cd389){if(_0x3cd389){return _0x3cd389[_0x1182('0x129')](_0x5ddc58['query'][_0x1182('0xec')])[_0x1182('0x14')](function(){if(_[_0x1182('0x12a')](_0x5ddc58[_0x1182('0x38')][_0x1182('0xec')])){for(var _0x10621b=0x0;_0x10621b<_0x5ddc58['query'][_0x1182('0xec')][_0x1182('0x3e')];_0x10621b+=0x1){socket[_0x1182('0x128')]('userChatWebsite:remove',{'UserId':Number(_0x5ddc58[_0x1182('0x38')][_0x1182('0xec')][_0x10621b]),'ChatWebsiteId':Number(_0x5ddc58[_0x1182('0x4d')]['id'])});}}else{socket[_0x1182('0x128')](_0x1182('0x12b'),{'UserId':Number(_0x5ddc58[_0x1182('0x38')][_0x1182('0xec')]),'ChatWebsiteId':Number(_0x5ddc58['params']['id'])});}});}})[_0x1182('0x14')](respondWithStatusCode(_0x1284e8,null))[_0x1182('0x1f')](handleError(_0x1284e8,null));};exports[_0x1182('0x12c')]=function(_0xa633c,_0x406829){var _0x20474c={};var _0x433aa4={};var _0x1c3116;var _0x1032eb;return db[_0x1182('0x34')][_0x1182('0x63')]({'where':{'id':_0xa633c[_0x1182('0x4d')]['id']}})[_0x1182('0x14')](handleEntityNotFound(_0x406829,null))[_0x1182('0x14')](function(_0x5d6267){if(_0x5d6267){_0x1c3116=_0x5d6267;_0x433aa4['model']=_[_0x1182('0x4e')](db[_0x1182('0xba')][_0x1182('0x5d')]);_0x433aa4['query']=_[_0x1182('0x4e')](_0xa633c[_0x1182('0x38')]);_0x433aa4[_0x1182('0x39')]=_[_0x1182('0x3a')](_0x433aa4[_0x1182('0x3b')],_0x433aa4['query']);_0x20474c[_0x1182('0x3d')]=_[_0x1182('0x3a')](_0x433aa4[_0x1182('0x3b')],qs[_0x1182('0x3c')](_0xa633c['query'][_0x1182('0x3c')]));_0x20474c[_0x1182('0x3d')]=_0x20474c['attributes'][_0x1182('0x3e')]?_0x20474c[_0x1182('0x3d')]:_0x433aa4[_0x1182('0x3b')];_0x20474c[_0x1182('0x40')]=qs[_0x1182('0x41')](_0xa633c[_0x1182('0x38')]['sort']);_0x20474c[_0x1182('0x42')]=qs[_0x1182('0x39')](_[_0x1182('0x43')](_0xa633c['query'],_0x433aa4[_0x1182('0x39')]));if(_0xa633c[_0x1182('0x38')][_0x1182('0x44')]){_0x20474c[_0x1182('0x42')]=_[_0x1182('0x46')](_0x20474c[_0x1182('0x42')],{'$or':_[_0x1182('0x33')](_0x20474c[_0x1182('0x3d')],function(_0x36e74c){var _0x3f6b95={};_0x3f6b95[_0x36e74c]={'$like':'%'+_0xa633c[_0x1182('0x38')][_0x1182('0x44')]+'%'};return _0x3f6b95;})});}_0x20474c=_[_0x1182('0x46')]({},_0x20474c,_0xa633c[_0x1182('0x47')]);return _0x1c3116[_0x1182('0x12c')](_0x20474c);}})[_0x1182('0x14')](function(_0x1bbda1){if(_0x1bbda1){_0x1032eb=_0x1bbda1[_0x1182('0x3e')];if(!_0xa633c['query'][_0x1182('0x5e')](_0x1182('0x3f'))){_0x20474c['limit']=qs[_0x1182('0x24')](_0xa633c[_0x1182('0x38')]['limit']);_0x20474c[_0x1182('0x23')]=qs['offset'](_0xa633c[_0x1182('0x38')]['offset']);}return _0x1c3116[_0x1182('0x12c')](_0x20474c);}})[_0x1182('0x14')](function(_0x561f63){if(_0x561f63){return _0x561f63?{'count':_0x1032eb,'rows':_0x561f63}:null;}})[_0x1182('0x14')](respondWithResult(_0x406829,null))[_0x1182('0x1f')](handleError(_0x406829,null));};
\ No newline at end of file
index 467c6c0..cc28bde 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf53f=['setMaxListeners','save','update','remove','emit','hook','events','../../mysqldb','ChatWebsite'];(function(_0x13f6bb,_0x1d625f){var _0x413673=function(_0x6dacf6){while(--_0x6dacf6){_0x13f6bb['push'](_0x13f6bb['shift']());}};_0x413673(++_0x1d625f);}(_0xf53f,0x8d));var _0xff53=function(_0x3c632e,_0x483e15){_0x3c632e=_0x3c632e-0x0;var _0x40445b=_0xf53f[_0x3c632e];return _0x40445b;};'use strict';var EventEmitter=require(_0xff53('0x0'));var ChatWebsite=require(_0xff53('0x1'))['db'][_0xff53('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xff53('0x3')](0x0);var events={'afterCreate':_0xff53('0x4'),'afterUpdate':_0xff53('0x5'),'afterDestroy':_0xff53('0x6')};function emitEvent(_0x32529d){return function(_0x18b504,_0x2077b9,_0x28dacf){ChatWebsiteEvents[_0xff53('0x7')](_0x32529d+':'+_0x18b504['id'],_0x18b504);ChatWebsiteEvents['emit'](_0x32529d,_0x18b504);_0x28dacf(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatWebsite[_0xff53('0x8')](e,emitEvent(event));}}module['exports']=ChatWebsiteEvents;
\ No newline at end of file
+var _0x6dac=['save','update','remove','emit','hook','exports','events','../../mysqldb','ChatWebsite','setMaxListeners'];(function(_0x1a13e8,_0x49eed8){var _0x3dbcf0=function(_0x52b4ad){while(--_0x52b4ad){_0x1a13e8['push'](_0x1a13e8['shift']());}};_0x3dbcf0(++_0x49eed8);}(_0x6dac,0x16e));var _0xc6da=function(_0x42109,_0x52ccbb){_0x42109=_0x42109-0x0;var _0x3a55fc=_0x6dac[_0x42109];return _0x3a55fc;};'use strict';var EventEmitter=require(_0xc6da('0x0'));var ChatWebsite=require(_0xc6da('0x1'))['db'][_0xc6da('0x2')];var ChatWebsiteEvents=new EventEmitter();ChatWebsiteEvents[_0xc6da('0x3')](0x0);var events={'afterCreate':_0xc6da('0x4'),'afterUpdate':_0xc6da('0x5'),'afterDestroy':_0xc6da('0x6')};function emitEvent(_0x2fc6e0){return function(_0x28663f,_0x338470,_0x18ee4e){ChatWebsiteEvents[_0xc6da('0x7')](_0x2fc6e0+':'+_0x28663f['id'],_0x28663f);ChatWebsiteEvents[_0xc6da('0x7')](_0x2fc6e0,_0x28663f);_0x18ee4e(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];ChatWebsite[_0xc6da('0x8')](e,emitEvent(event));}}module[_0xc6da('0x9')]=ChatWebsiteEvents;
\ No newline at end of file
index f78da1f..558f5a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbfa=['rimraf','../../config/environment','./chatWebsite.attributes','exports','define','ChatWebsite','chat_websites','lodash','../../config/logger','api','bluebird','path'];(function(_0x3a9635,_0x1ab817){var _0x10d08c=function(_0x222242){while(--_0x222242){_0x3a9635['push'](_0x3a9635['shift']());}};_0x10d08c(++_0x1ab817);}(_0xcbfa,0x157));var _0xacbf=function(_0x27685e,_0x845417){_0x27685e=_0x27685e-0x0;var _0x224a6f=_0xcbfa[_0x27685e];return _0x224a6f;};'use strict';var _=require(_0xacbf('0x0'));var util=require('util');var logger=require(_0xacbf('0x1'))(_0xacbf('0x2'));var moment=require('moment');var BPromise=require(_0xacbf('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xacbf('0x4'));var rimraf=require(_0xacbf('0x5'));var config=require(_0xacbf('0x6'));var attributes=require(_0xacbf('0x7'));module[_0xacbf('0x8')]=function(_0x416461,_0x46db9c){return _0x416461[_0xacbf('0x9')](_0xacbf('0xa'),attributes,{'tableName':_0xacbf('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x85e2=['ChatWebsite','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','define'];(function(_0x27d7fe,_0x4af8f7){var _0x15efd4=function(_0x32e76e){while(--_0x32e76e){_0x27d7fe['push'](_0x27d7fe['shift']());}};_0x15efd4(++_0x4af8f7);}(_0x85e2,0x109));var _0x285e=function(_0x741b51,_0x307a84){_0x741b51=_0x741b51-0x0;var _0x1ca35a=_0x85e2[_0x741b51];return _0x1ca35a;};'use strict';var _=require(_0x285e('0x0'));var util=require(_0x285e('0x1'));var logger=require(_0x285e('0x2'))(_0x285e('0x3'));var moment=require('moment');var BPromise=require(_0x285e('0x4'));var rp=require(_0x285e('0x5'));var fs=require('fs');var path=require(_0x285e('0x6'));var rimraf=require(_0x285e('0x7'));var config=require(_0x285e('0x8'));var attributes=require('./chatWebsite.attributes');module['exports']=function(_0x40ed2e,_0x4e340a){return _0x40ed2e[_0x285e('0x9')](_0x285e('0xa'),attributes,{'tableName':'chat_websites','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3d46a66..556d391 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x149b=['client','http','redis','defaults','localhost','socket.io-emitter','./chatWebsite.socket','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x3f477c,_0x52b7ff){var _0x4c36b3=function(_0x3b47bb){while(--_0x3b47bb){_0x3f477c['push'](_0x3f477c['shift']());}};_0x4c36b3(++_0x52b7ff);}(_0x149b,0x86));var _0xb149=function(_0x1727e2,_0x1a4eaa){_0x1727e2=_0x1727e2-0x0;var _0x3d23e7=_0x149b[_0x1727e2];return _0x3d23e7;};'use strict';var _=require(_0xb149('0x0'));var util=require(_0xb149('0x1'));var moment=require(_0xb149('0x2'));var BPromise=require(_0xb149('0x3'));var rs=require(_0xb149('0x4'));var fs=require('fs');var Redis=require(_0xb149('0x5'));var db=require(_0xb149('0x6'))['db'];var utils=require(_0xb149('0x7'));var logger=require('../../config/logger')(_0xb149('0x8'));var config=require(_0xb149('0x9'));var jayson=require(_0xb149('0xa'));var client=jayson[_0xb149('0xb')][_0xb149('0xc')]({'port':0x232a});config[_0xb149('0xd')]=_[_0xb149('0xe')](config[_0xb149('0xd')],{'host':_0xb149('0xf'),'port':0x18eb});var socket=require(_0xb149('0x10'))(new Redis(config[_0xb149('0xd')]));require(_0xb149('0x11'))['register'](socket);function respondWithRpcPromise(_0x289fb8,_0x16fb2d,_0x2a50cb){return new BPromise(function(_0x1d4d05,_0x3c130f){return client['request'](_0x289fb8,_0x2a50cb)[_0xb149('0x12')](function(_0x1cc2ae){logger[_0xb149('0x13')](_0xb149('0x14'),_0x16fb2d,_0xb149('0x15'));logger[_0xb149('0x16')](_0xb149('0x17'),_0x16fb2d,_0xb149('0x15'),JSON[_0xb149('0x18')](_0x1cc2ae));if(_0x1cc2ae[_0xb149('0x19')]){if(_0x1cc2ae[_0xb149('0x19')][_0xb149('0x1a')]===0x1f4){logger[_0xb149('0x19')](_0xb149('0x14'),_0x16fb2d,_0x1cc2ae[_0xb149('0x19')][_0xb149('0x1b')]);return _0x3c130f(_0x1cc2ae[_0xb149('0x19')][_0xb149('0x1b')]);}logger[_0xb149('0x19')](_0xb149('0x14'),_0x16fb2d,_0x1cc2ae[_0xb149('0x19')][_0xb149('0x1b')]);return _0x1d4d05(_0x1cc2ae[_0xb149('0x19')][_0xb149('0x1b')]);}else{logger[_0xb149('0x13')](_0xb149('0x14'),_0x16fb2d,_0xb149('0x15'));_0x1d4d05(_0x1cc2ae[_0xb149('0x1c')][_0xb149('0x1b')]);}})['catch'](function(_0x1b1c99){logger['error']('ChatWebsite,\x20%s,\x20%s',_0x16fb2d,_0x1b1c99);_0x3c130f(_0x1b1c99);});});}
\ No newline at end of file
+var _0x67c1=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','./chatWebsite.socket','register','request','then','info','ChatWebsite,\x20%s,\x20%s','request\x20sent','debug','ChatWebsite,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis'];(function(_0x286726,_0x20a337){var _0xcd4fe9=function(_0x4d7da6){while(--_0x4d7da6){_0x286726['push'](_0x286726['shift']());}};_0xcd4fe9(++_0x20a337);}(_0x67c1,0x126));var _0x167c=function(_0x45b07f,_0x56a2e9){_0x45b07f=_0x45b07f-0x0;var _0x160a5c=_0x67c1[_0x45b07f];return _0x160a5c;};'use strict';var _=require(_0x167c('0x0'));var util=require(_0x167c('0x1'));var moment=require(_0x167c('0x2'));var BPromise=require(_0x167c('0x3'));var rs=require(_0x167c('0x4'));var fs=require('fs');var Redis=require(_0x167c('0x5'));var db=require(_0x167c('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x167c('0x7'))(_0x167c('0x8'));var config=require(_0x167c('0x9'));var jayson=require(_0x167c('0xa'));var client=jayson[_0x167c('0xb')][_0x167c('0xc')]({'port':0x232a});config[_0x167c('0xd')]=_[_0x167c('0xe')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x167c('0xf'))[_0x167c('0x10')](socket);function respondWithRpcPromise(_0x3c3aa8,_0x4facbe,_0xb52cb9){return new BPromise(function(_0x265689,_0x59f0e4){return client[_0x167c('0x11')](_0x3c3aa8,_0xb52cb9)[_0x167c('0x12')](function(_0x4e9291){logger[_0x167c('0x13')](_0x167c('0x14'),_0x4facbe,_0x167c('0x15'));logger[_0x167c('0x16')](_0x167c('0x17'),_0x4facbe,_0x167c('0x15'),JSON[_0x167c('0x18')](_0x4e9291));if(_0x4e9291[_0x167c('0x19')]){if(_0x4e9291[_0x167c('0x19')][_0x167c('0x1a')]===0x1f4){logger[_0x167c('0x19')](_0x167c('0x14'),_0x4facbe,_0x4e9291[_0x167c('0x19')][_0x167c('0x1b')]);return _0x59f0e4(_0x4e9291['error'][_0x167c('0x1b')]);}logger[_0x167c('0x19')](_0x167c('0x14'),_0x4facbe,_0x4e9291['error'][_0x167c('0x1b')]);return _0x265689(_0x4e9291[_0x167c('0x19')][_0x167c('0x1b')]);}else{logger[_0x167c('0x13')](_0x167c('0x14'),_0x4facbe,_0x167c('0x15'));_0x265689(_0x4e9291[_0x167c('0x1c')]['message']);}})[_0x167c('0x1d')](function(_0xdc2209){logger['error'](_0x167c('0x14'),_0x4facbe,_0xdc2209);_0x59f0e4(_0xdc2209);});});}
\ No newline at end of file
index c2d7686..a7b72a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67b1=['./chatWebsite.events','remove','emit','removeListener','chatWebsite:'];(function(_0x2d1e30,_0x18635e){var _0x45a539=function(_0x47fd08){while(--_0x47fd08){_0x2d1e30['push'](_0x2d1e30['shift']());}};_0x45a539(++_0x18635e);}(_0x67b1,0x16d));var _0x167b=function(_0x4667b2,_0x135b67){_0x4667b2=_0x4667b2-0x0;var _0x1070f2=_0x67b1[_0x4667b2];return _0x1070f2;};'use strict';var ChatWebsiteEvents=require(_0x167b('0x0'));var events=['save',_0x167b('0x1'),'update'];function createListener(_0x43f8ee,_0x1fd834){return function(_0x1d7fb6){_0x1fd834[_0x167b('0x2')](_0x43f8ee,_0x1d7fb6);};}function removeListener(_0xfa07a5,_0x1e4116){return function(){ChatWebsiteEvents[_0x167b('0x3')](_0xfa07a5,_0x1e4116);};}exports['register']=function(_0x4e28d5){for(var _0x111773=0x0,_0x1cf5b9=events['length'];_0x111773<_0x1cf5b9;_0x111773++){var _0x149e83=events[_0x111773];var _0x3c3510=createListener(_0x167b('0x4')+_0x149e83,_0x4e28d5);ChatWebsiteEvents['on'](_0x149e83,_0x3c3510);}};
\ No newline at end of file
+var _0x6be9=['length','chatWebsite:','save','remove','register'];(function(_0xf6e834,_0x1b8457){var _0x1ce4c8=function(_0x361787){while(--_0x361787){_0xf6e834['push'](_0xf6e834['shift']());}};_0x1ce4c8(++_0x1b8457);}(_0x6be9,0x7f));var _0x96be=function(_0x1a766a,_0x33f146){_0x1a766a=_0x1a766a-0x0;var _0x3d0a28=_0x6be9[_0x1a766a];return _0x3d0a28;};'use strict';var ChatWebsiteEvents=require('./chatWebsite.events');var events=[_0x96be('0x0'),_0x96be('0x1'),'update'];function createListener(_0x2ffb41,_0x4f4fcc){return function(_0x18f5bf){_0x4f4fcc['emit'](_0x2ffb41,_0x18f5bf);};}function removeListener(_0x30a46c,_0x16a554){return function(){ChatWebsiteEvents['removeListener'](_0x30a46c,_0x16a554);};}exports[_0x96be('0x2')]=function(_0x53908b){for(var _0x37dd70=0x0,_0x72d10c=events[_0x96be('0x3')];_0x37dd70<_0x72d10c;_0x37dd70++){var _0x561b5b=events[_0x37dd70];var _0x5705e7=createListener(_0x96be('0x4')+_0x561b5b,_0x53908b);ChatWebsiteEvents['on'](_0x561b5b,_0x5705e7);}};
\ No newline at end of file
index b9cdb00..7f35898 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd60=['offline-chat','ensureDir','replace','extname','any','addInteraction','addProactiveActions','addAgents','put','update','delete','destroy','removeAnswers','removeAgents','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./chatWebsite.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','/:id/logo','getLogo','getAvatar','/:id/customer_avatar','/:id/system_avatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','/:id/applications','/:id/proactive_actions','/:id/fields','getFields','getOfflineMessages','/:id/users','getAgents','post','create','addDisposition','addAnswer','diskStorage','join','root','server/files/images/logos/','now','originalname','file','addLogo','server/files/images/avatars/','format','/:id/avatar','addAvatar','%s-%s','single','/:id/notify','server/files','attachments'];(function(_0x3992cd,_0x1509f3){var _0x476d8b=function(_0x4570f8){while(--_0x4570f8){_0x3992cd['push'](_0x3992cd['shift']());}};_0x476d8b(++_0x1509f3);}(_0xcd60,0x9f));var _0x0cd6=function(_0x2984aa,_0x17d57c){_0x2984aa=_0x2984aa-0x0;var _0x37030e=_0xcd60[_0x2984aa];return _0x37030e;};'use strict';var multer=require(_0x0cd6('0x0'));var util=require(_0x0cd6('0x1'));var path=require('path');var timeout=require(_0x0cd6('0x2'));var express=require(_0x0cd6('0x3'));var router=express[_0x0cd6('0x4')]();var fs_extra=require(_0x0cd6('0x5'));var auth=require(_0x0cd6('0x6'));var interaction=require(_0x0cd6('0x7'));var config=require(_0x0cd6('0x8'));var controller=require(_0x0cd6('0x9'));router[_0x0cd6('0xa')]('/',auth[_0x0cd6('0xb')](),controller[_0x0cd6('0xc')]);router['get'](_0x0cd6('0xd'),auth[_0x0cd6('0xb')](),controller[_0x0cd6('0xe')]);router[_0x0cd6('0xa')](_0x0cd6('0xf'),auth[_0x0cd6('0xb')](),controller[_0x0cd6('0x10')]);router[_0x0cd6('0xa')](_0x0cd6('0x11'),auth['isAuthenticated'](),controller[_0x0cd6('0x12')]);router[_0x0cd6('0xa')](_0x0cd6('0x13'),auth[_0x0cd6('0xb')](),controller['getAnswers']);router[_0x0cd6('0xa')](_0x0cd6('0x14'),controller[_0x0cd6('0x15')]);router[_0x0cd6('0xa')]('/:id/avatar',controller[_0x0cd6('0x16')]);router[_0x0cd6('0xa')](_0x0cd6('0x17'),controller['getCustomerAvatar']);router['get'](_0x0cd6('0x18'),controller['getSystemAvatar']);router['get'](_0x0cd6('0x19'),auth['isAuthenticated'](),controller[_0x0cd6('0x1a')]);router[_0x0cd6('0xa')](_0x0cd6('0x1b'),controller[_0x0cd6('0x1c')]);router[_0x0cd6('0xa')](_0x0cd6('0x1d'),auth['isAuthenticated'](),controller['getApplications']);router[_0x0cd6('0xa')](_0x0cd6('0x1e'),auth[_0x0cd6('0xb')](),controller['getProactiveActions']);router[_0x0cd6('0xa')](_0x0cd6('0x1f'),controller[_0x0cd6('0x20')]);router[_0x0cd6('0xa')]('/:id/offline_messages',auth['isAuthenticated'](),controller[_0x0cd6('0x21')]);router[_0x0cd6('0xa')](_0x0cd6('0x22'),auth['isAuthenticated'](),controller[_0x0cd6('0x23')]);router[_0x0cd6('0x24')]('/',auth[_0x0cd6('0xb')](),controller[_0x0cd6('0x25')]);router['post']('/:id/dispositions',auth[_0x0cd6('0xb')](),controller[_0x0cd6('0x26')]);router[_0x0cd6('0x24')](_0x0cd6('0x13'),auth[_0x0cd6('0xb')](),controller[_0x0cd6('0x27')]);var upload=multer({'storage':multer[_0x0cd6('0x28')]({'destination':function(_0x339fd8,_0x3d0d29,_0x36db94){_0x36db94(null,path[_0x0cd6('0x29')](config[_0x0cd6('0x2a')],_0x0cd6('0x2b')));},'filename':function(_0x2b3d57,_0x2874ef,_0x4729a9){_0x4729a9(null,util['format']('%s-%s',Date[_0x0cd6('0x2c')](),_0x2874ef[_0x0cd6('0x2d')]));}})});router[_0x0cd6('0x24')]('/:id/logo',upload['single'](_0x0cd6('0x2e')),controller[_0x0cd6('0x2f')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x4abf16,_0x56c0bd,_0xeb4a27){_0xeb4a27(null,path[_0x0cd6('0x29')](config[_0x0cd6('0x2a')],_0x0cd6('0x30')));},'filename':function(_0x2ce426,_0x419041,_0x380e51){_0x380e51(null,util[_0x0cd6('0x31')]('%s-%s',Date[_0x0cd6('0x2c')](),_0x419041[_0x0cd6('0x2d')]));}})});router[_0x0cd6('0x24')](_0x0cd6('0x32'),upload['single']('file'),controller[_0x0cd6('0x33')]);var upload=multer({'storage':multer[_0x0cd6('0x28')]({'destination':function(_0x250cfd,_0x16653f,_0x541950){_0x541950(null,path[_0x0cd6('0x29')](config[_0x0cd6('0x2a')],_0x0cd6('0x30')));},'filename':function(_0x4073aa,_0x3aa7f3,_0x40a7b4){_0x40a7b4(null,util['format'](_0x0cd6('0x34'),Date[_0x0cd6('0x2c')](),_0x3aa7f3[_0x0cd6('0x2d')]));}})});router[_0x0cd6('0x24')](_0x0cd6('0x17'),upload[_0x0cd6('0x35')](_0x0cd6('0x2e')),controller['addCustomerAvatar']);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x228adc,_0x4a3b56,_0x162ab9){_0x162ab9(null,path[_0x0cd6('0x29')](config[_0x0cd6('0x2a')],_0x0cd6('0x30')));},'filename':function(_0x7c7e48,_0x5e9858,_0x4fd61f){_0x4fd61f(null,util[_0x0cd6('0x31')](_0x0cd6('0x34'),Date[_0x0cd6('0x2c')](),_0x5e9858['originalname']));}})});router[_0x0cd6('0x24')](_0x0cd6('0x18'),upload[_0x0cd6('0x35')](_0x0cd6('0x2e')),controller['addSystemAvatar']);router[_0x0cd6('0x24')](_0x0cd6('0x36'),controller['notify']);const offlineUploadMulter=multer({'storage':multer['diskStorage']({'destination':function(_0x5c80eb,_0x53f8b0,_0x4cc07b){const _0x292dab=path[_0x0cd6('0x29')](config['root'],_0x0cd6('0x37'),_0x0cd6('0x38'),_0x0cd6('0x39'));fs_extra[_0x0cd6('0x3a')](_0x292dab,function(){_0x4cc07b(null,_0x292dab);});},'filename':function(_0x279201,_0x203370,_0x59f078){const _0x1ae89c=_0x203370['originalname'][_0x0cd6('0x3b')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x2e2923=path[_0x0cd6('0x3c')](_0x1ae89c);const _0x1df882=Date[_0x0cd6('0x2c')]()+'-'+_0x1ae89c[_0x0cd6('0x3b')](_0x2e2923,'')+_0x2e2923;_0x59f078(null,_0x1df882);}})});router[_0x0cd6('0x24')]('/:id/offline',offlineUploadMulter[_0x0cd6('0x3d')](),controller['offline']);router[_0x0cd6('0x24')](_0x0cd6('0x19'),auth[_0x0cd6('0xb')](),controller[_0x0cd6('0x3e')]);router[_0x0cd6('0x24')]('/:id/applications',auth[_0x0cd6('0xb')](),controller['addApplications']);router[_0x0cd6('0x24')](_0x0cd6('0x1e'),auth['isAuthenticated'](),controller[_0x0cd6('0x3f')]);router[_0x0cd6('0x24')](_0x0cd6('0x22'),auth[_0x0cd6('0xb')](),controller[_0x0cd6('0x40')]);router[_0x0cd6('0x41')](_0x0cd6('0xf'),auth[_0x0cd6('0xb')](),controller[_0x0cd6('0x42')]);router[_0x0cd6('0x43')]('/:id',auth[_0x0cd6('0xb')](),controller[_0x0cd6('0x44')]);router[_0x0cd6('0x43')](_0x0cd6('0x11'),auth['isAuthenticated'](),controller['removeDispositions']);router[_0x0cd6('0x43')](_0x0cd6('0x13'),auth['isAuthenticated'](),controller[_0x0cd6('0x45')]);router['delete'](_0x0cd6('0x22'),auth[_0x0cd6('0xb')](),controller[_0x0cd6('0x46')]);module[_0x0cd6('0x47')]=router;
\ No newline at end of file
+var _0xbfcd=['offline-chat','replace','extname','/:id/offline','any','addInteraction','addApplications','/:id/proactive_actions','/:id/users','put','update','delete','removeDispositions','removeAgents','exports','path','express','../../components/auth/service','../../components/interaction/service','./chatWebsite.controller','get','isAuthenticated','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/logo','getLogo','/:id/avatar','getAvatar','/:id/customer_avatar','getCustomerAvatar','/:id/system_avatar','getSystemAvatar','/:id/interactions','getInteractions','/:id/snippet','getSnippet','/:id/applications','getApplications','getProactiveActions','/:id/fields','/:id/offline_messages','getOfflineMessages','create','post','addAnswer','root','server/files/images/logos/','%s-%s','now','originalname','single','file','addLogo','diskStorage','join','server/files/images/avatars/','addAvatar','format','addSystemAvatar','/:id/notify','notify','server/files','attachments'];(function(_0x315a03,_0x1c8dbd){var _0x3fb860=function(_0x24129e){while(--_0x24129e){_0x315a03['push'](_0x315a03['shift']());}};_0x3fb860(++_0x1c8dbd);}(_0xbfcd,0x163));var _0xdbfc=function(_0x28a441,_0x5a2c85){_0x28a441=_0x28a441-0x0;var _0x29a62a=_0xbfcd[_0x28a441];return _0x29a62a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xdbfc('0x0'));var timeout=require('connect-timeout');var express=require(_0xdbfc('0x1'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xdbfc('0x2'));var interaction=require(_0xdbfc('0x3'));var config=require('../../config/environment');var controller=require(_0xdbfc('0x4'));router[_0xdbfc('0x5')]('/',auth[_0xdbfc('0x6')](),controller['index']);router['get']('/describe',auth[_0xdbfc('0x6')](),controller[_0xdbfc('0x7')]);router[_0xdbfc('0x5')](_0xdbfc('0x8'),auth[_0xdbfc('0x6')](),controller[_0xdbfc('0x9')]);router['get'](_0xdbfc('0xa'),auth[_0xdbfc('0x6')](),controller[_0xdbfc('0xb')]);router['get'](_0xdbfc('0xc'),auth[_0xdbfc('0x6')](),controller[_0xdbfc('0xd')]);router[_0xdbfc('0x5')](_0xdbfc('0xe'),controller[_0xdbfc('0xf')]);router[_0xdbfc('0x5')](_0xdbfc('0x10'),controller[_0xdbfc('0x11')]);router['get'](_0xdbfc('0x12'),controller[_0xdbfc('0x13')]);router[_0xdbfc('0x5')](_0xdbfc('0x14'),controller[_0xdbfc('0x15')]);router['get'](_0xdbfc('0x16'),auth['isAuthenticated'](),controller[_0xdbfc('0x17')]);router[_0xdbfc('0x5')](_0xdbfc('0x18'),controller[_0xdbfc('0x19')]);router[_0xdbfc('0x5')](_0xdbfc('0x1a'),auth[_0xdbfc('0x6')](),controller[_0xdbfc('0x1b')]);router['get']('/:id/proactive_actions',auth[_0xdbfc('0x6')](),controller[_0xdbfc('0x1c')]);router[_0xdbfc('0x5')](_0xdbfc('0x1d'),controller['getFields']);router[_0xdbfc('0x5')](_0xdbfc('0x1e'),auth[_0xdbfc('0x6')](),controller[_0xdbfc('0x1f')]);router[_0xdbfc('0x5')]('/:id/users',auth[_0xdbfc('0x6')](),controller['getAgents']);router['post']('/',auth['isAuthenticated'](),controller[_0xdbfc('0x20')]);router[_0xdbfc('0x21')]('/:id/dispositions',auth[_0xdbfc('0x6')](),controller['addDisposition']);router[_0xdbfc('0x21')](_0xdbfc('0xc'),auth[_0xdbfc('0x6')](),controller[_0xdbfc('0x22')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x4de025,_0x11ca3f,_0x32547b){_0x32547b(null,path['join'](config[_0xdbfc('0x23')],_0xdbfc('0x24')));},'filename':function(_0x184c93,_0x28d398,_0x8b927b){_0x8b927b(null,util['format'](_0xdbfc('0x25'),Date[_0xdbfc('0x26')](),_0x28d398[_0xdbfc('0x27')]));}})});router[_0xdbfc('0x21')](_0xdbfc('0xe'),upload[_0xdbfc('0x28')](_0xdbfc('0x29')),controller[_0xdbfc('0x2a')]);var upload=multer({'storage':multer[_0xdbfc('0x2b')]({'destination':function(_0x5601b9,_0x30ae31,_0x5e2395){_0x5e2395(null,path[_0xdbfc('0x2c')](config['root'],_0xdbfc('0x2d')));},'filename':function(_0x1d120d,_0x498d11,_0x5acdb9){_0x5acdb9(null,util['format'](_0xdbfc('0x25'),Date['now'](),_0x498d11[_0xdbfc('0x27')]));}})});router[_0xdbfc('0x21')](_0xdbfc('0x10'),upload[_0xdbfc('0x28')]('file'),controller[_0xdbfc('0x2e')]);var upload=multer({'storage':multer[_0xdbfc('0x2b')]({'destination':function(_0x403fd0,_0xdb789a,_0x1d9634){_0x1d9634(null,path[_0xdbfc('0x2c')](config[_0xdbfc('0x23')],_0xdbfc('0x2d')));},'filename':function(_0xf75195,_0x4c24a6,_0xbeadec){_0xbeadec(null,util[_0xdbfc('0x2f')](_0xdbfc('0x25'),Date[_0xdbfc('0x26')](),_0x4c24a6['originalname']));}})});router['post']('/:id/customer_avatar',upload[_0xdbfc('0x28')]('file'),controller['addCustomerAvatar']);var upload=multer({'storage':multer[_0xdbfc('0x2b')]({'destination':function(_0x459c7a,_0x8e567a,_0x1230ff){_0x1230ff(null,path['join'](config['root'],_0xdbfc('0x2d')));},'filename':function(_0x4fc23c,_0x4c7674,_0x2ae407){_0x2ae407(null,util[_0xdbfc('0x2f')](_0xdbfc('0x25'),Date[_0xdbfc('0x26')](),_0x4c7674[_0xdbfc('0x27')]));}})});router['post'](_0xdbfc('0x14'),upload[_0xdbfc('0x28')]('file'),controller[_0xdbfc('0x30')]);router[_0xdbfc('0x21')](_0xdbfc('0x31'),controller[_0xdbfc('0x32')]);const offlineUploadMulter=multer({'storage':multer[_0xdbfc('0x2b')]({'destination':function(_0x3f0543,_0x4c3288,_0x5578db){const _0x5bbe0b=path[_0xdbfc('0x2c')](config[_0xdbfc('0x23')],_0xdbfc('0x33'),_0xdbfc('0x34'),_0xdbfc('0x35'));fs_extra['ensureDir'](_0x5bbe0b,function(){_0x5578db(null,_0x5bbe0b);});},'filename':function(_0x2a6428,_0x2ff0fe,_0x4ca9ee){const _0x181c6c=_0x2ff0fe['originalname'][_0xdbfc('0x36')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');const _0x161aa5=path[_0xdbfc('0x37')](_0x181c6c);const _0x51438d=Date[_0xdbfc('0x26')]()+'-'+_0x181c6c[_0xdbfc('0x36')](_0x161aa5,'')+_0x161aa5;_0x4ca9ee(null,_0x51438d);}})});router[_0xdbfc('0x21')](_0xdbfc('0x38'),offlineUploadMulter[_0xdbfc('0x39')](),controller['offline']);router[_0xdbfc('0x21')](_0xdbfc('0x16'),auth[_0xdbfc('0x6')](),controller[_0xdbfc('0x3a')]);router[_0xdbfc('0x21')](_0xdbfc('0x1a'),auth[_0xdbfc('0x6')](),controller[_0xdbfc('0x3b')]);router[_0xdbfc('0x21')](_0xdbfc('0x3c'),auth[_0xdbfc('0x6')](),controller['addProactiveActions']);router[_0xdbfc('0x21')](_0xdbfc('0x3d'),auth[_0xdbfc('0x6')](),controller['addAgents']);router[_0xdbfc('0x3e')](_0xdbfc('0x8'),auth[_0xdbfc('0x6')](),controller[_0xdbfc('0x3f')]);router['delete'](_0xdbfc('0x8'),auth[_0xdbfc('0x6')](),controller['destroy']);router[_0xdbfc('0x40')]('/:id/dispositions',auth[_0xdbfc('0x6')](),controller[_0xdbfc('0x41')]);router[_0xdbfc('0x40')](_0xdbfc('0xc'),auth[_0xdbfc('0x6')](),controller['removeAnswers']);router[_0xdbfc('0x40')](_0xdbfc('0x3d'),auth[_0xdbfc('0x6')](),controller[_0xdbfc('0x42')]);module[_0xdbfc('0x43')]=router;
\ No newline at end of file
index 9ed38e7..385b8cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ede=['client-side-logger','Client-Side\x20logger\x20not\x20found!','/client-logs','use','exports','beaver-logger/server','express','../components/auth/service','../config/environment','env','production','app','get'];(function(_0x369134,_0x275f84){var _0x35ff54=function(_0x151fc2){while(--_0x151fc2){_0x369134['push'](_0x369134['shift']());}};_0x35ff54(++_0x275f84);}(_0x2ede,0xa1));var _0xe2ed=function(_0x43d66a,_0x2215f7){_0x43d66a=_0x43d66a-0x0;var _0x45c813=_0x2ede[_0x43d66a];return _0x45c813;};var beaverLogger=require(_0xe2ed('0x0'));var express=require(_0xe2ed('0x1'));var auth=require(_0xe2ed('0x2'));var config=require(_0xe2ed('0x3'));var router=express['Router']();var isProduction=config[_0xe2ed('0x4')]===_0xe2ed('0x5')||![];function clientSideLogs(_0x33cd6a,_0x579b14,_0x54ab36){var _0x757abb=_0x33cd6a[_0xe2ed('0x6')][_0xe2ed('0x7')](_0xe2ed('0x8'));if(!_0x757abb){throw new Error(_0xe2ed('0x9'));}return beaverLogger['expressEndpoint']({'uri':_0xe2ed('0xa'),'logger':_0x757abb,'enableCors':!isProduction})(_0x33cd6a,_0x579b14,_0x54ab36);}router[_0xe2ed('0xb')](auth['isAuthenticated'](),clientSideLogs);module[_0xe2ed('0xc')]=router;
\ No newline at end of file
+var _0x768b=['env','production','app','get','client-side-logger','expressEndpoint','/client-logs','use','isAuthenticated','express','../components/auth/service','../config/environment','Router'];(function(_0x3ff578,_0x5b38c3){var _0x5d7175=function(_0x33d252){while(--_0x33d252){_0x3ff578['push'](_0x3ff578['shift']());}};_0x5d7175(++_0x5b38c3);}(_0x768b,0x7e));var _0xb768=function(_0x2b7f36,_0x5f6fee){_0x2b7f36=_0x2b7f36-0x0;var _0x37dee6=_0x768b[_0x2b7f36];return _0x37dee6;};var beaverLogger=require('beaver-logger/server');var express=require(_0xb768('0x0'));var auth=require(_0xb768('0x1'));var config=require(_0xb768('0x2'));var router=express[_0xb768('0x3')]();var isProduction=config[_0xb768('0x4')]===_0xb768('0x5')||![];function clientSideLogs(_0x2cdbf7,_0x2882c1,_0x589193){var _0x3ec6c1=_0x2cdbf7[_0xb768('0x6')][_0xb768('0x7')](_0xb768('0x8'));if(!_0x3ec6c1){throw new Error('Client-Side\x20logger\x20not\x20found!');}return beaverLogger[_0xb768('0x9')]({'uri':_0xb768('0xa'),'logger':_0x3ec6c1,'enableCors':!isProduction})(_0x2cdbf7,_0x2882c1,_0x589193);}router[_0xb768('0xb')](auth[_0xb768('0xc')](),clientSideLogs);module['exports']=router;
\ No newline at end of file
index b9b1079..0b66c91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x81cb=['MicrosoftAzure\x20=>\x20redirect_uri','TEXT','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','exports','ENUM','MicrosoftAzure','Outlook365','STRING','MicrosoftAzure\x20=>\x20client_id','MicrosoftAzure\x20=>\x20tenant'];(function(_0x402023,_0xfb2111){var _0x2d94fe=function(_0x59d846){while(--_0x59d846){_0x402023['push'](_0x402023['shift']());}};_0x2d94fe(++_0xfb2111);}(_0x81cb,0x198));var _0xb81c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x81cb[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xb81c('0x0'));module[_0xb81c('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize[_0xb81c('0x2')]('AmazonAWS','Google',_0xb81c('0x3')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize[_0xb81c('0x2')](_0xb81c('0x4'),'Dynamics365')},'data1':{'type':Sequelize[_0xb81c('0x5')],'comment':_0xb81c('0x6')},'data2':{'type':Sequelize[_0xb81c('0x5')],'comment':_0xb81c('0x7')},'data3':{'type':Sequelize['STRING'],'comment':'MicrosoftAzure\x20=>\x20client_secret'},'data4':{'type':Sequelize[_0xb81c('0x5')],'comment':_0xb81c('0x8')},'data5':{'type':Sequelize[_0xb81c('0x9')],'comment':_0xb81c('0xa')},'data6':{'type':Sequelize['TEXT'],'comment':_0xb81c('0xb')},'data7':{'type':Sequelize[_0xb81c('0x9')],'comment':_0xb81c('0xc')}};
\ No newline at end of file
+var _0x44c3=['Outlook365','MicrosoftAzure\x20=>\x20tenant','MicrosoftAzure\x20=>\x20client_secret','TEXT','MicrosoftAzure\x20=>\x20access_token','MicrosoftAzure\x20=>\x20refresh_token','MicrosoftAzure\x20=>\x20Dynamics365\x20=>\x20remote_uri','sequelize','exports','STRING','Google','MicrosoftAzure'];(function(_0x12fec1,_0x20be9c){var _0x26c3af=function(_0xedc7c6){while(--_0xedc7c6){_0x12fec1['push'](_0x12fec1['shift']());}};_0x26c3af(++_0x20be9c);}(_0x44c3,0x193));var _0x344c=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x44c3[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x344c('0x0'));module[_0x344c('0x1')]={'name':{'type':Sequelize[_0x344c('0x2')],'allowNull':![],'validate':{'notEmpty':!![]}},'service':{'type':Sequelize['ENUM']('AmazonAWS',_0x344c('0x3'),_0x344c('0x4')),'allowNull':![],'validate':{'notEmpty':!![]}},'type':{'type':Sequelize['ENUM'](_0x344c('0x5'),'Dynamics365')},'data1':{'type':Sequelize[_0x344c('0x2')],'comment':'MicrosoftAzure\x20=>\x20client_id'},'data2':{'type':Sequelize[_0x344c('0x2')],'comment':_0x344c('0x6')},'data3':{'type':Sequelize[_0x344c('0x2')],'comment':_0x344c('0x7')},'data4':{'type':Sequelize[_0x344c('0x2')],'comment':'MicrosoftAzure\x20=>\x20redirect_uri'},'data5':{'type':Sequelize[_0x344c('0x8')],'comment':_0x344c('0x9')},'data6':{'type':Sequelize[_0x344c('0x8')],'comment':_0x344c('0xa')},'data7':{'type':Sequelize[_0x344c('0x8')],'comment':_0x344c('0xb')}};
\ No newline at end of file
index 9503a88..24d8f5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa348=['defaults','localhost','socket.io-emitter','sendStatus','status','end','json','offset','limit','count','set','Content-Range','then','destroy','error','stack','name','send','padEnd','slice','index','map','CloudProvider','rawAttributes','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','options','findAll','rows','service','MicrosoftAzure','data3','show','params','keys','includeAll','include','find','decryptString','create','body','Name\x20parameter\x20not\x20specified','Service\x20parameter\x20not\x20specified','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','catch','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','get','parse','from','toString','ascii','isValidIdToken','id_token','del','getOauth2MicrosoftAccessToken','code','data5','data6','refresh_token','update','startRefreshInterval','emit','microsoftAuthorization:success','microsoftAuthorization:error','Invalid\x20authentication\x20state\x20parameter','message','Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s','stringify','lodash','ioredis','../../components/parsers/qs','../../components/encryptor','../../config/environment','../../config/logger','api','../../mysqldb','./cloudProvider.oauth','redis'];(function(_0x32c4d0,_0x4eded1){var _0x4b235c=function(_0x26cb8b){while(--_0x26cb8b){_0x32c4d0['push'](_0x32c4d0['shift']());}};_0x4b235c(++_0x4eded1);}(_0xa348,0x122));var _0x8a34=function(_0x2b75e9,_0x2f6e76){_0x2b75e9=_0x2b75e9-0x0;var _0x2c8e05=_0xa348[_0x2b75e9];return _0x2c8e05;};'use strict';var _=require(_0x8a34('0x0'));var Redis=require(_0x8a34('0x1'));var qs=require(_0x8a34('0x2'));var encryptor=require(_0x8a34('0x3'));var config=require(_0x8a34('0x4'));var logger=require(_0x8a34('0x5'))(_0x8a34('0x6'));var db=require(_0x8a34('0x7'))['db'];var oauth=require(_0x8a34('0x8'));config[_0x8a34('0x9')]=_[_0x8a34('0xa')](config[_0x8a34('0x9')],{'host':_0x8a34('0xb'),'port':0x18eb});var socket=require(_0x8a34('0xc'))(new Redis(config[_0x8a34('0x9')]));var redis=new Redis(config[_0x8a34('0x9')]);function respondWithStatusCode(_0x41b6af,_0x58d8aa){_0x58d8aa=_0x58d8aa||0xcc;return function(_0x904384){if(_0x904384){return _0x41b6af[_0x8a34('0xd')](_0x58d8aa);}return _0x41b6af[_0x8a34('0xe')](_0x58d8aa)[_0x8a34('0xf')]();};}function respondWithResult(_0x31f06c,_0xd1dd0e){_0xd1dd0e=_0xd1dd0e||0xc8;return function(_0x5037d8){if(_0x5037d8){return _0x31f06c[_0x8a34('0xe')](_0xd1dd0e)[_0x8a34('0x10')](_0x5037d8);}};}function respondWithFilteredResult(_0xce373,_0x487f7d){return function(_0x53f090){if(_0x53f090){var _0x26a7de=typeof _0x487f7d[_0x8a34('0x11')]==='undefined'&&typeof _0x487f7d[_0x8a34('0x12')]==='undefined';var _0x4292c2=_0x53f090['count'];var _0x3c0979=_0x26a7de?0x0:_0x487f7d[_0x8a34('0x11')];var _0x375e6e=_0x26a7de?_0x53f090[_0x8a34('0x13')]:_0x487f7d[_0x8a34('0x11')]+_0x487f7d[_0x8a34('0x12')];var _0x5c2d5b;if(_0x375e6e>=_0x4292c2){_0x375e6e=_0x4292c2;_0x5c2d5b=0xc8;}else{_0x5c2d5b=0xce;}_0xce373[_0x8a34('0xe')](_0x5c2d5b);return _0xce373[_0x8a34('0x14')](_0x8a34('0x15'),_0x3c0979+'-'+_0x375e6e+'/'+_0x4292c2)['json'](_0x53f090);}return null;};}function saveUpdates(_0x2dbb2b){return function(_0x513e6f){if(_0x513e6f){return _0x513e6f['update'](_0x2dbb2b)[_0x8a34('0x16')](function(_0x195f83){return _0x195f83;});}return null;};}function removeEntity(_0x183728){return function(_0x4db618){if(_0x4db618){return _0x4db618[_0x8a34('0x17')]()[_0x8a34('0x16')](function(){_0x183728[_0x8a34('0xe')](0xcc)['end']();});}};}function handleEntityNotFound(_0xc55f87){return function(_0x1912f5){if(!_0x1912f5){_0xc55f87[_0x8a34('0xd')](0x194);}return _0x1912f5;};}function handleError(_0x1d6f81,_0x31e55a){_0x31e55a=_0x31e55a||0x1f4;return function(_0x568ef5){logger[_0x8a34('0x18')](_0x568ef5[_0x8a34('0x19')]);if(_0x568ef5['name']){delete _0x568ef5[_0x8a34('0x1a')];}_0x1d6f81[_0x8a34('0xe')](_0x31e55a)[_0x8a34('0x1b')](_0x568ef5);};}function maskClientSecret(_0xaa103){return _[_0x8a34('0x1c')](_0xaa103[_0x8a34('0x1d')](0x0,0x3),0x14,'*');}exports[_0x8a34('0x1e')]=function(_0x1a2f02,_0x33c63a){var _0x502cd2={},_0x2e8a88={},_0x436782={'count':0x0,'rows':[]};var _0x1a1730=_[_0x8a34('0x1f')](db[_0x8a34('0x20')][_0x8a34('0x21')],function(_0x49f0c1){return{'name':_0x49f0c1[_0x8a34('0x22')],'type':_0x49f0c1[_0x8a34('0x23')][_0x8a34('0x24')]};});_0x2e8a88[_0x8a34('0x25')]=_[_0x8a34('0x1f')](_0x1a1730,'name');_0x2e8a88[_0x8a34('0x26')]=_['keys'](_0x1a2f02[_0x8a34('0x26')]);_0x2e8a88['filters']=_[_0x8a34('0x27')](_0x2e8a88['model'],_0x2e8a88['query']);_0x502cd2[_0x8a34('0x28')]=_[_0x8a34('0x27')](_0x2e8a88[_0x8a34('0x25')],qs[_0x8a34('0x29')](_0x1a2f02[_0x8a34('0x26')][_0x8a34('0x29')]));_0x502cd2[_0x8a34('0x28')]=_0x502cd2[_0x8a34('0x28')][_0x8a34('0x2a')]?_0x502cd2[_0x8a34('0x28')]:_0x2e8a88['model'];if(!_0x1a2f02[_0x8a34('0x26')][_0x8a34('0x2b')](_0x8a34('0x2c'))){_0x502cd2['limit']=qs[_0x8a34('0x12')](_0x1a2f02[_0x8a34('0x26')][_0x8a34('0x12')]);_0x502cd2[_0x8a34('0x11')]=qs[_0x8a34('0x11')](_0x1a2f02[_0x8a34('0x26')]['offset']);}_0x502cd2[_0x8a34('0x2d')]=qs[_0x8a34('0x2e')](_0x1a2f02[_0x8a34('0x26')][_0x8a34('0x2e')]);_0x502cd2[_0x8a34('0x2f')]=qs[_0x8a34('0x30')](_[_0x8a34('0x31')](_0x1a2f02[_0x8a34('0x26')],_0x2e8a88['filters']),_0x1a1730);if(_0x1a2f02[_0x8a34('0x26')][_0x8a34('0x32')]){_0x502cd2[_0x8a34('0x2f')]=_[_0x8a34('0x33')](_0x502cd2[_0x8a34('0x2f')],{'$or':_[_0x8a34('0x1f')](_0x1a1730,function(_0x37154e){if(_0x37154e[_0x8a34('0x23')]!=='VIRTUAL'){var _0x310f67={};_0x310f67[_0x37154e['name']]={'$like':'%'+_0x1a2f02['query'][_0x8a34('0x32')]+'%'};return _0x310f67;}})});}_0x502cd2=_[_0x8a34('0x33')]({},_0x502cd2,_0x1a2f02[_0x8a34('0x34')]);var _0x17bfa7={'where':_0x502cd2[_0x8a34('0x2f')]};return db[_0x8a34('0x20')][_0x8a34('0x13')](_0x17bfa7)[_0x8a34('0x16')](function(_0xffd434){_0x436782['count']=_0xffd434;if(_0x1a2f02['query']['includeAll']){_0x502cd2['include']=[{'all':!![]}];}return db['CloudProvider'][_0x8a34('0x35')](_0x502cd2);})[_0x8a34('0x16')](function(_0x1892fa){_0x436782[_0x8a34('0x36')]=_['map'](_0x1892fa,function(_0x2a8248){if(_0x2a8248[_0x8a34('0x37')]===_0x8a34('0x38')){var _0x1468b0=encryptor['decryptString'](_0x2a8248[_0x8a34('0x39')]);_0x2a8248[_0x8a34('0x39')]=maskClientSecret(_0x1468b0);}return _0x2a8248;});return _0x436782;})[_0x8a34('0x16')](respondWithFilteredResult(_0x33c63a,_0x502cd2))['catch'](handleError(_0x33c63a,null));};exports[_0x8a34('0x3a')]=function(_0x2fa5f7,_0x1784f6){var _0x577aa8={'raw':!![],'where':{'id':_0x2fa5f7[_0x8a34('0x3b')]['id']}},_0x2c0b4f={};_0x2c0b4f[_0x8a34('0x25')]=_[_0x8a34('0x3c')](db[_0x8a34('0x20')]['rawAttributes']);_0x2c0b4f[_0x8a34('0x26')]=_['keys'](_0x2fa5f7[_0x8a34('0x26')]);_0x2c0b4f[_0x8a34('0x30')]=_['intersection'](_0x2c0b4f[_0x8a34('0x25')],_0x2c0b4f['query']);_0x577aa8['attributes']=_[_0x8a34('0x27')](_0x2c0b4f[_0x8a34('0x25')],qs['fields'](_0x2fa5f7[_0x8a34('0x26')][_0x8a34('0x29')]));_0x577aa8[_0x8a34('0x28')]=_0x577aa8[_0x8a34('0x28')][_0x8a34('0x2a')]?_0x577aa8[_0x8a34('0x28')]:_0x2c0b4f[_0x8a34('0x25')];if(_0x2fa5f7[_0x8a34('0x26')][_0x8a34('0x3d')]){_0x577aa8[_0x8a34('0x3e')]=[{'all':!![]}];}_0x577aa8=_[_0x8a34('0x33')]({},_0x577aa8,_0x2fa5f7[_0x8a34('0x34')]);return db[_0x8a34('0x20')][_0x8a34('0x3f')](_0x577aa8)[_0x8a34('0x16')](handleEntityNotFound(_0x1784f6,null))[_0x8a34('0x16')](function(_0x3129a8){if(_0x3129a8[_0x8a34('0x37')]===_0x8a34('0x38')){var _0x5931e0=encryptor[_0x8a34('0x40')](_0x3129a8['data3']);_0x3129a8[_0x8a34('0x39')]=maskClientSecret(_0x5931e0);}return _0x3129a8;})[_0x8a34('0x16')](respondWithResult(_0x1784f6,null))['catch'](handleError(_0x1784f6,null));};exports[_0x8a34('0x41')]=function(_0x4f128d,_0x28f7d8){if(!_0x4f128d[_0x8a34('0x42')]['name'])throw new Error(_0x8a34('0x43'));if(!_0x4f128d[_0x8a34('0x42')][_0x8a34('0x37')])throw new Error(_0x8a34('0x44'));var _0x2a1676=db[_0x8a34('0x20')][_0x8a34('0x21')][_0x8a34('0x37')]['values'];if(!_0x2a1676[_0x8a34('0x45')](_0x4f128d[_0x8a34('0x42')][_0x8a34('0x37')]))throw new Error(_0x8a34('0x46')+_0x2a1676[_0x8a34('0x47')](',\x20'));if(_0x4f128d['body']['service']===_0x8a34('0x38')&&_0x4f128d[_0x8a34('0x42')]['data3']){_0x4f128d[_0x8a34('0x42')][_0x8a34('0x39')]=encryptor['encryptString'](_0x4f128d[_0x8a34('0x42')][_0x8a34('0x39')]);}return db[_0x8a34('0x20')][_0x8a34('0x41')](_0x4f128d['body'],{})[_0x8a34('0x16')](respondWithResult(_0x28f7d8,0xc9))[_0x8a34('0x48')](handleError(_0x28f7d8,null));};exports['update']=function(_0x5f2524,_0x3e1c44){if(_0x5f2524[_0x8a34('0x42')]['id']){delete _0x5f2524[_0x8a34('0x42')]['id'];}return db['CloudProvider'][_0x8a34('0x3f')]({'where':{'id':_0x5f2524[_0x8a34('0x3b')]['id']}})[_0x8a34('0x16')](handleEntityNotFound(_0x3e1c44,null))[_0x8a34('0x16')](function(_0x5bb5e3){if(_0x5bb5e3[_0x8a34('0x37')]==='MicrosoftAzure'&&_0x5f2524[_0x8a34('0x42')][_0x8a34('0x39')]){_0x5f2524[_0x8a34('0x42')][_0x8a34('0x39')]=encryptor['encryptString'](_0x5f2524[_0x8a34('0x42')][_0x8a34('0x39')]);}return _0x5bb5e3;})[_0x8a34('0x16')](saveUpdates(_0x5f2524[_0x8a34('0x42')],null))[_0x8a34('0x16')](respondWithResult(_0x3e1c44,null))['catch'](handleError(_0x3e1c44,null));};exports['destroy']=function(_0x214f8a,_0x33aeed){return db[_0x8a34('0x20')][_0x8a34('0x3f')]({'where':{'id':_0x214f8a[_0x8a34('0x3b')]['id']}})['then'](handleEntityNotFound(_0x33aeed,null))[_0x8a34('0x16')](removeEntity(_0x33aeed,null))[_0x8a34('0x48')](handleError(_0x33aeed,null));};exports[_0x8a34('0x49')]=function(_0x50ec29,_0x4db8f8){return db[_0x8a34('0x20')][_0x8a34('0x4a')]({'where':{'id':_0x50ec29[_0x8a34('0x3b')]['id']},'raw':!![]})['then'](function(_0x4a825d){if(!_0x4a825d)return _0x4db8f8[_0x8a34('0xd')](0x194);return{'url':oauth[_0x8a34('0x4b')](_0x4a825d,_0x50ec29[_0x8a34('0x4c')]['id'])};})[_0x8a34('0x16')](respondWithResult(_0x4db8f8,null))[_0x8a34('0x48')](handleError(_0x4db8f8,null));};exports[_0x8a34('0x4d')]=function(_0x384aa3,_0xf5ee19){var _0x5d60b4=_0x384aa3['body'];var _0x2094b4;var _0x517df9;if(_0x5d60b4[_0x8a34('0x18')])throw _0x5d60b4;redis[_0x8a34('0x4e')](_0x5d60b4['state'])[_0x8a34('0x16')](function(_0x25d970){if(!_0x25d970)throw new Error('Invalid\x20state\x20parameter');_0x2094b4=JSON[_0x8a34('0x4f')](_0x25d970);var _0x498068=Buffer[_0x8a34('0x50')](_0x5d60b4['state'],'base64')[_0x8a34('0x51')](_0x8a34('0x52'));_0x517df9=JSON['parse'](_0x498068);if(!oauth[_0x8a34('0x53')](_0x5d60b4[_0x8a34('0x54')],_0x2094b4['oauth2Claims']))throw new Error('Unable\x20to\x20validate\x20id_token');redis[_0x8a34('0x55')](_0x5d60b4['state']);return oauth[_0x8a34('0x56')](_0x5d60b4[_0x8a34('0x57')],_0x2094b4);})[_0x8a34('0x16')](function(_0x12b237){_0x2094b4[_0x8a34('0x58')]=_0x12b237['access_token'];_0x2094b4[_0x8a34('0x59')]=_0x12b237[_0x8a34('0x5a')];return db[_0x8a34('0x20')][_0x8a34('0x5b')]({'data5':_0x2094b4['data5'],'data6':_0x2094b4['data6']},{'where':{'id':_0x2094b4['id']}});})[_0x8a34('0x16')](function(){oauth[_0x8a34('0x5c')](_0x2094b4);socket[_0x8a34('0x5d')](_0x8a34('0x5e'),{'id':_0x517df9['id']});return;})['then'](respondWithStatusCode(_0xf5ee19,null))['catch'](function(_0x301953){if(_0x517df9){socket[_0x8a34('0x5d')](_0x8a34('0x5f'),{'id':_0x517df9['id']});}if(!_0x2094b4){logger['error'](_0x8a34('0x60'),_0x301953);return _0xf5ee19[_0x8a34('0xe')](0x1f4)[_0x8a34('0x1b')](_0x301953[_0x8a34('0x61')]);}logger[_0x8a34('0x18')](_0x8a34('0x62'),_0x2094b4['id'],JSON[_0x8a34('0x63')](_0x301953));});};
\ No newline at end of file
+var _0x2e48=['query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','map','VIRTUAL','options','then','include','findAll','service','decryptString','data3','show','params','keys','includeAll','find','MicrosoftAzure','catch','body','Name\x20parameter\x20not\x20specified','values','includes','Invalid\x20service\x20parameter.\x20Allowed\x20values:\x20','join','encryptString','oauth2MicrosoftAuthorize','findOne','generateMicrosoftAuthorizationUrl','user','oauth2MicrosoftCallback','get','Invalid\x20state\x20parameter','parse','state','base64','ascii','id_token','Unable\x20to\x20validate\x20id_token','del','code','data5','access_token','update','data6','startRefreshInterval','emit','microsoftAuthorization:success','Invalid\x20authentication\x20state\x20parameter','message','stringify','ioredis','../../components/encryptor','../../config/environment','../../config/logger','api','../../mysqldb','redis','localhost','socket.io-emitter','status','end','offset','limit','undefined','count','set','Content-Range','json','destroy','sendStatus','error','stack','name','send','padEnd','slice','index','CloudProvider','rawAttributes','fieldName','type','model'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x2e48,0x9a));var _0x82e4=function(_0x4492af,_0x47e25d){_0x4492af=_0x4492af-0x0;var _0x216729=_0x2e48[_0x4492af];return _0x216729;};'use strict';var _=require('lodash');var Redis=require(_0x82e4('0x0'));var qs=require('../../components/parsers/qs');var encryptor=require(_0x82e4('0x1'));var config=require(_0x82e4('0x2'));var logger=require(_0x82e4('0x3'))(_0x82e4('0x4'));var db=require(_0x82e4('0x5'))['db'];var oauth=require('./cloudProvider.oauth');config[_0x82e4('0x6')]=_['defaults'](config[_0x82e4('0x6')],{'host':_0x82e4('0x7'),'port':0x18eb});var socket=require(_0x82e4('0x8'))(new Redis(config[_0x82e4('0x6')]));var redis=new Redis(config['redis']);function respondWithStatusCode(_0x2aa19c,_0x27b27d){_0x27b27d=_0x27b27d||0xcc;return function(_0x4271d2){if(_0x4271d2){return _0x2aa19c['sendStatus'](_0x27b27d);}return _0x2aa19c[_0x82e4('0x9')](_0x27b27d)[_0x82e4('0xa')]();};}function respondWithResult(_0x58908f,_0x42e6df){_0x42e6df=_0x42e6df||0xc8;return function(_0xec3e15){if(_0xec3e15){return _0x58908f[_0x82e4('0x9')](_0x42e6df)['json'](_0xec3e15);}};}function respondWithFilteredResult(_0x2233b6,_0x4fb5eb){return function(_0x5afad8){if(_0x5afad8){var _0x242b65=typeof _0x4fb5eb[_0x82e4('0xb')]==='undefined'&&typeof _0x4fb5eb[_0x82e4('0xc')]===_0x82e4('0xd');var _0xf5aef5=_0x5afad8['count'];var _0x4ac2fb=_0x242b65?0x0:_0x4fb5eb['offset'];var _0x33f84a=_0x242b65?_0x5afad8[_0x82e4('0xe')]:_0x4fb5eb[_0x82e4('0xb')]+_0x4fb5eb[_0x82e4('0xc')];var _0x3a8fa7;if(_0x33f84a>=_0xf5aef5){_0x33f84a=_0xf5aef5;_0x3a8fa7=0xc8;}else{_0x3a8fa7=0xce;}_0x2233b6['status'](_0x3a8fa7);return _0x2233b6[_0x82e4('0xf')](_0x82e4('0x10'),_0x4ac2fb+'-'+_0x33f84a+'/'+_0xf5aef5)[_0x82e4('0x11')](_0x5afad8);}return null;};}function saveUpdates(_0x4101bb){return function(_0x527eea){if(_0x527eea){return _0x527eea['update'](_0x4101bb)['then'](function(_0x1bb425){return _0x1bb425;});}return null;};}function removeEntity(_0x22ca77){return function(_0x36fa0b){if(_0x36fa0b){return _0x36fa0b[_0x82e4('0x12')]()['then'](function(){_0x22ca77[_0x82e4('0x9')](0xcc)[_0x82e4('0xa')]();});}};}function handleEntityNotFound(_0x566e4e){return function(_0xdfb17a){if(!_0xdfb17a){_0x566e4e[_0x82e4('0x13')](0x194);}return _0xdfb17a;};}function handleError(_0x19cd6f,_0x5f40a2){_0x5f40a2=_0x5f40a2||0x1f4;return function(_0x4d18c9){logger[_0x82e4('0x14')](_0x4d18c9[_0x82e4('0x15')]);if(_0x4d18c9['name']){delete _0x4d18c9[_0x82e4('0x16')];}_0x19cd6f[_0x82e4('0x9')](_0x5f40a2)[_0x82e4('0x17')](_0x4d18c9);};}function maskClientSecret(_0x51bb9c){return _[_0x82e4('0x18')](_0x51bb9c[_0x82e4('0x19')](0x0,0x3),0x14,'*');}exports[_0x82e4('0x1a')]=function(_0xdf50af,_0x5314c6){var _0x51af9d={},_0x4ff6ef={},_0x5ac993={'count':0x0,'rows':[]};var _0x540a21=_['map'](db[_0x82e4('0x1b')][_0x82e4('0x1c')],function(_0x1e02dd){return{'name':_0x1e02dd[_0x82e4('0x1d')],'type':_0x1e02dd[_0x82e4('0x1e')]['key']};});_0x4ff6ef[_0x82e4('0x1f')]=_['map'](_0x540a21,_0x82e4('0x16'));_0x4ff6ef[_0x82e4('0x20')]=_['keys'](_0xdf50af[_0x82e4('0x20')]);_0x4ff6ef[_0x82e4('0x21')]=_[_0x82e4('0x22')](_0x4ff6ef['model'],_0x4ff6ef['query']);_0x51af9d[_0x82e4('0x23')]=_[_0x82e4('0x22')](_0x4ff6ef[_0x82e4('0x1f')],qs[_0x82e4('0x24')](_0xdf50af[_0x82e4('0x20')][_0x82e4('0x24')]));_0x51af9d[_0x82e4('0x23')]=_0x51af9d['attributes'][_0x82e4('0x25')]?_0x51af9d[_0x82e4('0x23')]:_0x4ff6ef['model'];if(!_0xdf50af[_0x82e4('0x20')][_0x82e4('0x26')](_0x82e4('0x27'))){_0x51af9d[_0x82e4('0xc')]=qs[_0x82e4('0xc')](_0xdf50af['query'][_0x82e4('0xc')]);_0x51af9d[_0x82e4('0xb')]=qs[_0x82e4('0xb')](_0xdf50af[_0x82e4('0x20')][_0x82e4('0xb')]);}_0x51af9d['order']=qs[_0x82e4('0x28')](_0xdf50af[_0x82e4('0x20')][_0x82e4('0x28')]);_0x51af9d[_0x82e4('0x29')]=qs[_0x82e4('0x21')](_[_0x82e4('0x2a')](_0xdf50af[_0x82e4('0x20')],_0x4ff6ef['filters']),_0x540a21);if(_0xdf50af[_0x82e4('0x20')][_0x82e4('0x2b')]){_0x51af9d[_0x82e4('0x29')]=_[_0x82e4('0x2c')](_0x51af9d[_0x82e4('0x29')],{'$or':_[_0x82e4('0x2d')](_0x540a21,function(_0x5c5a2d){if(_0x5c5a2d[_0x82e4('0x1e')]!==_0x82e4('0x2e')){var _0x324b3d={};_0x324b3d[_0x5c5a2d[_0x82e4('0x16')]]={'$like':'%'+_0xdf50af['query'][_0x82e4('0x2b')]+'%'};return _0x324b3d;}})});}_0x51af9d=_[_0x82e4('0x2c')]({},_0x51af9d,_0xdf50af[_0x82e4('0x2f')]);var _0x394d46={'where':_0x51af9d[_0x82e4('0x29')]};return db[_0x82e4('0x1b')][_0x82e4('0xe')](_0x394d46)[_0x82e4('0x30')](function(_0x583bb3){_0x5ac993['count']=_0x583bb3;if(_0xdf50af['query']['includeAll']){_0x51af9d[_0x82e4('0x31')]=[{'all':!![]}];}return db[_0x82e4('0x1b')][_0x82e4('0x32')](_0x51af9d);})[_0x82e4('0x30')](function(_0x4c8ce2){_0x5ac993['rows']=_[_0x82e4('0x2d')](_0x4c8ce2,function(_0x55a126){if(_0x55a126[_0x82e4('0x33')]==='MicrosoftAzure'){var _0x138ace=encryptor[_0x82e4('0x34')](_0x55a126[_0x82e4('0x35')]);_0x55a126[_0x82e4('0x35')]=maskClientSecret(_0x138ace);}return _0x55a126;});return _0x5ac993;})[_0x82e4('0x30')](respondWithFilteredResult(_0x5314c6,_0x51af9d))['catch'](handleError(_0x5314c6,null));};exports[_0x82e4('0x36')]=function(_0x17a818,_0x2ef2d7){var _0x23d0dc={'raw':!![],'where':{'id':_0x17a818[_0x82e4('0x37')]['id']}},_0x27dd46={};_0x27dd46['model']=_['keys'](db[_0x82e4('0x1b')][_0x82e4('0x1c')]);_0x27dd46[_0x82e4('0x20')]=_[_0x82e4('0x38')](_0x17a818[_0x82e4('0x20')]);_0x27dd46[_0x82e4('0x21')]=_[_0x82e4('0x22')](_0x27dd46['model'],_0x27dd46['query']);_0x23d0dc[_0x82e4('0x23')]=_['intersection'](_0x27dd46[_0x82e4('0x1f')],qs[_0x82e4('0x24')](_0x17a818[_0x82e4('0x20')][_0x82e4('0x24')]));_0x23d0dc[_0x82e4('0x23')]=_0x23d0dc[_0x82e4('0x23')][_0x82e4('0x25')]?_0x23d0dc[_0x82e4('0x23')]:_0x27dd46['model'];if(_0x17a818['query'][_0x82e4('0x39')]){_0x23d0dc[_0x82e4('0x31')]=[{'all':!![]}];}_0x23d0dc=_[_0x82e4('0x2c')]({},_0x23d0dc,_0x17a818[_0x82e4('0x2f')]);return db['CloudProvider'][_0x82e4('0x3a')](_0x23d0dc)['then'](handleEntityNotFound(_0x2ef2d7,null))[_0x82e4('0x30')](function(_0x59c39a){if(_0x59c39a[_0x82e4('0x33')]===_0x82e4('0x3b')){var _0x37293d=encryptor[_0x82e4('0x34')](_0x59c39a[_0x82e4('0x35')]);_0x59c39a['data3']=maskClientSecret(_0x37293d);}return _0x59c39a;})[_0x82e4('0x30')](respondWithResult(_0x2ef2d7,null))[_0x82e4('0x3c')](handleError(_0x2ef2d7,null));};exports['create']=function(_0x461892,_0x297947){if(!_0x461892[_0x82e4('0x3d')]['name'])throw new Error(_0x82e4('0x3e'));if(!_0x461892[_0x82e4('0x3d')][_0x82e4('0x33')])throw new Error('Service\x20parameter\x20not\x20specified');var _0x40ee3e=db[_0x82e4('0x1b')][_0x82e4('0x1c')]['service'][_0x82e4('0x3f')];if(!_0x40ee3e[_0x82e4('0x40')](_0x461892['body'][_0x82e4('0x33')]))throw new Error(_0x82e4('0x41')+_0x40ee3e[_0x82e4('0x42')](',\x20'));if(_0x461892[_0x82e4('0x3d')][_0x82e4('0x33')]===_0x82e4('0x3b')&&_0x461892['body'][_0x82e4('0x35')]){_0x461892[_0x82e4('0x3d')]['data3']=encryptor[_0x82e4('0x43')](_0x461892[_0x82e4('0x3d')][_0x82e4('0x35')]);}return db[_0x82e4('0x1b')]['create'](_0x461892[_0x82e4('0x3d')],{})[_0x82e4('0x30')](respondWithResult(_0x297947,0xc9))[_0x82e4('0x3c')](handleError(_0x297947,null));};exports['update']=function(_0x743351,_0x4cfb39){if(_0x743351[_0x82e4('0x3d')]['id']){delete _0x743351[_0x82e4('0x3d')]['id'];}return db['CloudProvider'][_0x82e4('0x3a')]({'where':{'id':_0x743351[_0x82e4('0x37')]['id']}})[_0x82e4('0x30')](handleEntityNotFound(_0x4cfb39,null))[_0x82e4('0x30')](function(_0x22eaea){if(_0x22eaea['service']===_0x82e4('0x3b')&&_0x743351['body'][_0x82e4('0x35')]){_0x743351['body']['data3']=encryptor[_0x82e4('0x43')](_0x743351[_0x82e4('0x3d')]['data3']);}return _0x22eaea;})[_0x82e4('0x30')](saveUpdates(_0x743351[_0x82e4('0x3d')],null))['then'](respondWithResult(_0x4cfb39,null))[_0x82e4('0x3c')](handleError(_0x4cfb39,null));};exports[_0x82e4('0x12')]=function(_0x4168c0,_0x3ab2b2){return db[_0x82e4('0x1b')][_0x82e4('0x3a')]({'where':{'id':_0x4168c0[_0x82e4('0x37')]['id']}})['then'](handleEntityNotFound(_0x3ab2b2,null))[_0x82e4('0x30')](removeEntity(_0x3ab2b2,null))[_0x82e4('0x3c')](handleError(_0x3ab2b2,null));};exports[_0x82e4('0x44')]=function(_0x49f7d2,_0x52dab8){return db[_0x82e4('0x1b')][_0x82e4('0x45')]({'where':{'id':_0x49f7d2[_0x82e4('0x37')]['id']},'raw':!![]})[_0x82e4('0x30')](function(_0x12258c){if(!_0x12258c)return _0x52dab8[_0x82e4('0x13')](0x194);return{'url':oauth[_0x82e4('0x46')](_0x12258c,_0x49f7d2[_0x82e4('0x47')]['id'])};})[_0x82e4('0x30')](respondWithResult(_0x52dab8,null))[_0x82e4('0x3c')](handleError(_0x52dab8,null));};exports[_0x82e4('0x48')]=function(_0x32c173,_0x492b79){var _0x3a5f71=_0x32c173[_0x82e4('0x3d')];var _0x5ee1ab;var _0x206af9;if(_0x3a5f71[_0x82e4('0x14')])throw _0x3a5f71;redis[_0x82e4('0x49')](_0x3a5f71['state'])['then'](function(_0x5ab1bc){if(!_0x5ab1bc)throw new Error(_0x82e4('0x4a'));_0x5ee1ab=JSON[_0x82e4('0x4b')](_0x5ab1bc);var _0x377feb=Buffer['from'](_0x3a5f71[_0x82e4('0x4c')],_0x82e4('0x4d'))['toString'](_0x82e4('0x4e'));_0x206af9=JSON[_0x82e4('0x4b')](_0x377feb);if(!oauth['isValidIdToken'](_0x3a5f71[_0x82e4('0x4f')],_0x5ee1ab['oauth2Claims']))throw new Error(_0x82e4('0x50'));redis[_0x82e4('0x51')](_0x3a5f71[_0x82e4('0x4c')]);return oauth['getOauth2MicrosoftAccessToken'](_0x3a5f71[_0x82e4('0x52')],_0x5ee1ab);})[_0x82e4('0x30')](function(_0x329a04){_0x5ee1ab[_0x82e4('0x53')]=_0x329a04[_0x82e4('0x54')];_0x5ee1ab['data6']=_0x329a04['refresh_token'];return db[_0x82e4('0x1b')][_0x82e4('0x55')]({'data5':_0x5ee1ab[_0x82e4('0x53')],'data6':_0x5ee1ab[_0x82e4('0x56')]},{'where':{'id':_0x5ee1ab['id']}});})['then'](function(){oauth[_0x82e4('0x57')](_0x5ee1ab);socket[_0x82e4('0x58')](_0x82e4('0x59'),{'id':_0x206af9['id']});return;})[_0x82e4('0x30')](respondWithStatusCode(_0x492b79,null))['catch'](function(_0x1f7816){if(_0x206af9){socket['emit']('microsoftAuthorization:error',{'id':_0x206af9['id']});}if(!_0x5ee1ab){logger[_0x82e4('0x14')](_0x82e4('0x5a'),_0x1f7816);return _0x492b79[_0x82e4('0x9')](0x1f4)[_0x82e4('0x17')](_0x1f7816[_0x82e4('0x5b')]);}logger['error']('Authentication\x20failed\x20for\x20cloud\x20provider\x20#%s,\x20err:%s',_0x5ee1ab['id'],JSON[_0x82e4('0x5c')](_0x1f7816));});};
\ No newline at end of file
index c08fd6f..0fc154c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1927=['path','rimraf','define','cloud_providers','lodash','api','moment','bluebird','request-promise'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x1927,0x1b4));var _0x7192=function(_0x1586c6,_0x59e7da){_0x1586c6=_0x1586c6-0x0;var _0x957ef1=_0x1927[_0x1586c6];return _0x957ef1;};'use strict';var _=require(_0x7192('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x7192('0x1'));var moment=require(_0x7192('0x2'));var BPromise=require(_0x7192('0x3'));var rp=require(_0x7192('0x4'));var fs=require('fs');var path=require(_0x7192('0x5'));var rimraf=require(_0x7192('0x6'));var config=require('../../config/environment');var attributes=require('./cloudProvider.attributes');module['exports']=function(_0x33342c,_0x194348){return _0x33342c[_0x7192('0x7')]('CloudProvider',attributes,{'tableName':_0x7192('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0e4f=['bluebird','request-promise','path','rimraf','../../config/environment','exports','define','CloudProvider','cloud_providers','util','../../config/logger','api','moment'];(function(_0x32b1a6,_0x195339){var _0x34d887=function(_0xed6673){while(--_0xed6673){_0x32b1a6['push'](_0x32b1a6['shift']());}};_0x34d887(++_0x195339);}(_0x0e4f,0x10d));var _0xf0e4=function(_0x35cb60,_0x41ddfd){_0x35cb60=_0x35cb60-0x0;var _0x225ec5=_0x0e4f[_0x35cb60];return _0x225ec5;};'use strict';var _=require('lodash');var util=require(_0xf0e4('0x0'));var logger=require(_0xf0e4('0x1'))(_0xf0e4('0x2'));var moment=require(_0xf0e4('0x3'));var BPromise=require(_0xf0e4('0x4'));var rp=require(_0xf0e4('0x5'));var fs=require('fs');var path=require(_0xf0e4('0x6'));var rimraf=require(_0xf0e4('0x7'));var config=require(_0xf0e4('0x8'));var attributes=require('./cloudProvider.attributes');module[_0xf0e4('0x9')]=function(_0x4f6208,_0x28b711){return _0x4f6208[_0xf0e4('0xa')](_0xf0e4('0xb'),attributes,{'tableName':_0xf0e4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3708d13..bb1909b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd759=['../../config/environment','../../config/logger','api','../../mysqldb','redis','localhost','https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0','openid','email','https://outlook.office365.com/IMAP.AccessAsUser.All','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/token','map','type','Dynamics365','push','data7','join','Outlook365','/.default','replace','data2','id_token','from','toString','base64','randomBytes','hex','data1','redirect_uri','response_mode','form_post','scope','state','nonce','prompt','key','oauth2Claims','oauth2/','set','stringify','iss','aud','audience','isAfter','unix','resolve','then','CloudProvider','findOne','data6','data4','decryptString','data5','refresh_token','update','catch','authorization_code','POST','intervals','bind','findAll','inspect','error','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','lodash','jsonwebtoken','moment','ioredis','request-promise','util','../../components/encryptor'];(function(_0x52f03e,_0x56b6e0){var _0x1d1f7a=function(_0x29fd73){while(--_0x29fd73){_0x52f03e['push'](_0x52f03e['shift']());}};_0x1d1f7a(++_0x56b6e0);}(_0xd759,0xd7));var _0x9d75=function(_0x2d489a,_0x25ce3c){_0x2d489a=_0x2d489a-0x0;var _0x11b301=_0xd759[_0x2d489a];return _0x11b301;};'use strict';var _=require(_0x9d75('0x0'));var crypto=require('crypto');var jwt=require(_0x9d75('0x1'));var moment=require(_0x9d75('0x2'));var Redis=require(_0x9d75('0x3'));var rp=require(_0x9d75('0x4'));var util=require(_0x9d75('0x5'));var encryptor=require(_0x9d75('0x6'));var config=require(_0x9d75('0x7'));var logger=require(_0x9d75('0x8'))(_0x9d75('0x9'));var schedule=require('../../config/schedule/cloud-provider');var db=require(_0x9d75('0xa'))['db'];config[_0x9d75('0xb')]=_['defaults'](config[_0x9d75('0xb')],{'host':_0x9d75('0xc'),'port':0x18eb});var redis=new Redis(config[_0x9d75('0xb')]);var MICROSOFT_AUTH_URL=_0x9d75('0xd');var AZURE_AUTH_SCOPES={'Outlook365':[_0x9d75('0xe'),'profile',_0x9d75('0xf'),'offline_access',_0x9d75('0x10'),_0x9d75('0x11'),_0x9d75('0x12')],'Dynamics365':[_0x9d75('0xe'),'offline_access']};var MICROSOFT_AUTH_ENDPOINT='/authorize';var MICROSOFT_TOKEN_ENDPOINT=_0x9d75('0x13');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x3a6ac1){var _0x4d5629=_[_0x9d75('0x14')](AZURE_AUTH_SCOPES[_0x3a6ac1[_0x9d75('0x15')]]);if(_0x3a6ac1['type']===_0x9d75('0x16'))_0x4d5629[_0x9d75('0x17')](_0x3a6ac1[_0x9d75('0x18')]+'/.default');return _0x4d5629[_0x9d75('0x19')]('\x20');}function getAccessTokenScope(_0x12fa82){if(_0x12fa82[_0x9d75('0x15')]===_0x9d75('0x1a'))return _0x9d75('0x10');if(_0x12fa82[_0x9d75('0x15')]===_0x9d75('0x16'))return _0x12fa82[_0x9d75('0x18')]+_0x9d75('0x1b');}function generateMicrosoftAuthorizationUrl(_0xa795c3,_0x15382b){var _0x54d970=MICROSOFT_AUTH_URL[_0x9d75('0x1c')]('{TENANT_ID}',_0xa795c3[_0x9d75('0x1d')]);var _0x268eea=['code',_0x9d75('0x1e')];var _0x46bf87=Buffer[_0x9d75('0x1f')](JSON['stringify']({'id':_0x15382b}))[_0x9d75('0x20')](_0x9d75('0x21'));var _0x3de82a=crypto[_0x9d75('0x22')](0x10)[_0x9d75('0x20')](_0x9d75('0x23'));var _0x3543b5=getAuthorizationScopes(_0xa795c3);var _0x3ed6cf=[{'key':'client_id','value':_0xa795c3[_0x9d75('0x24')]},{'key':'response_type','value':encodeURIComponent(_0x268eea['join']('\x20'))},{'key':_0x9d75('0x25'),'value':_0xa795c3['data4']},{'key':_0x9d75('0x26'),'value':_0x9d75('0x27')},{'key':_0x9d75('0x28'),'value':encodeURIComponent(_0x3543b5)},{'key':_0x9d75('0x29'),'value':_0x46bf87},{'key':_0x9d75('0x2a'),'value':_0x3de82a},{'key':_0x9d75('0x2b'),'value':'login'}];var _0x487dca=_0x54d970+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0x9d75('0x14')](_0x3ed6cf,function(_0x143285){return _0x143285[_0x9d75('0x2c')]+'='+_0x143285['value'];})[_0x9d75('0x19')]('&');_0xa795c3[_0x9d75('0x2d')]={'issuer':_0x54d970[_0x9d75('0x1c')](_0x9d75('0x2e'),''),'audience':_0xa795c3[_0x9d75('0x24')],'state':_0x46bf87,'nonce':_0x3de82a};redis[_0x9d75('0x2f')](_0x46bf87,JSON[_0x9d75('0x30')](_0xa795c3));return _0x487dca;}function isValidIdToken(_0x4f1b35,_0x565fc3){try{var _0x83c893=jwt['decode'](_0x4f1b35,{'complete':!![]});var _0x51acf4=_0x83c893['payload'];if(_0x51acf4[_0x9d75('0x31')]!==_0x565fc3['issuer'])return![];if(_0x51acf4[_0x9d75('0x32')]!==_0x565fc3[_0x9d75('0x33')])return![];if(_0x51acf4[_0x9d75('0x2a')]!==_0x565fc3[_0x9d75('0x2a')])return![];if(moment()[_0x9d75('0x34')](moment[_0x9d75('0x35')](_0x51acf4['exp'])))return![];return!![];}catch(_0x47816f){throw _0x47816f;}}function refreshOauth2MicrosoftAccessToken(_0x8eeae2){return Promise[_0x9d75('0x36')]()[_0x9d75('0x37')](function(){if(_0x8eeae2['data3'])return _0x8eeae2;return db[_0x9d75('0x38')][_0x9d75('0x39')]({'where':{'id':_0x8eeae2['id']},'raw':!![]});})[_0x9d75('0x37')](function(_0xa09ce4){var _0x424273={'grant_type':'refresh_token','refresh_token':_0xa09ce4[_0x9d75('0x3a')],'scope':getAccessTokenScope(_0xa09ce4),'redirect_uri':_0xa09ce4[_0x9d75('0x3b')],'client_id':_0xa09ce4[_0x9d75('0x24')],'client_secret':encryptor[_0x9d75('0x3c')](_0xa09ce4['data3'])};var _0x58af84={'method':'POST','uri':MICROSOFT_AUTH_URL['replace']('{TENANT_ID}',_0xa09ce4[_0x9d75('0x1d')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x424273,'json':!![]};return rp(_0x58af84);})['then'](function(_0x16406e){_0x8eeae2[_0x9d75('0x3d')]=_0x16406e['access_token'];_0x8eeae2['data6']=_0x16406e[_0x9d75('0x3e')];return db['CloudProvider'][_0x9d75('0x3f')]({'data5':_0x8eeae2[_0x9d75('0x3d')],'data6':_0x8eeae2['data6']},{'where':{'id':_0x8eeae2['id']}});})[_0x9d75('0x37')](function(){return _0x8eeae2;})[_0x9d75('0x40')](function(_0x1e3c39){logger['error']('Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s',_0x8eeae2['id'],_0x1e3c39);});}function getOauth2MicrosoftAccessToken(_0x138569,_0xbc0887){var _0x45fbdd={'grant_type':_0x9d75('0x41'),'code':_0x138569,'scope':getAccessTokenScope(_0xbc0887),'redirect_uri':_0xbc0887['data4'],'client_id':_0xbc0887[_0x9d75('0x24')],'client_secret':encryptor['decryptString'](_0xbc0887['data3'])};var _0x3f9fa2={'method':_0x9d75('0x42'),'uri':MICROSOFT_AUTH_URL['replace']('{TENANT_ID}',_0xbc0887[_0x9d75('0x1d')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x45fbdd,'json':!![]};return rp(_0x3f9fa2);}function startRefreshInterval(_0x267f37){var _0x2a6876=schedule[_0x9d75('0x43')];if(_0x2a6876[_0x267f37['id']])clearInterval(_0x2a6876[_0x267f37['id']]);_0x2a6876[_0x267f37['id']]=setInterval(refreshOauth2MicrosoftAccessToken[_0x9d75('0x44')](this,{'id':_0x267f37['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule['intervals']=_0x2a6876;}function startAllRefreshIntervals(){return db['CloudProvider'][_0x9d75('0x45')]({'where':{'data6':{'$ne':null}},'raw':!![]})['then'](function(_0x1f7c6e){var _0x50ff7c=_0x1f7c6e['map'](function(_0x4a43a4){return refreshOauth2MicrosoftAccessToken(_0x4a43a4)['then'](function(_0xc29d3d){startRefreshInterval(_0xc29d3d);});});return Promise['all'](_0x50ff7c);})[_0x9d75('0x40')](function(_0x5d2f03){var _0x950de9=_0x5d2f03?util[_0x9d75('0x46')](_0x5d2f03,{'showHidden':![],'depth':null}):'';logger[_0x9d75('0x47')](_0x9d75('0x48'),_0x950de9);});}module[_0x9d75('0x49')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
+var _0x2c5a=['intervals','inspect','[CLOUD_PROVIDER]\x20Error\x20while\x20refreshing\x20the\x20tokens\x20after\x20service\x20restart\x20error:%s','exports','lodash','jsonwebtoken','moment','util','../../components/encryptor','api','../../config/schedule/cloud-provider','../../mysqldb','redis','defaults','openid','profile','email','offline_access','https://outlook.office.com/POP.AccessAsUser.All','https://outlook.office.com/SMTP.Send','/token','map','type','Dynamics365','push','/.default','join','Outlook365','data7','replace','{TENANT_ID}','data2','code','id_token','from','stringify','base64','randomBytes','toString','hex','client_id','response_type','redirect_uri','data4','scope','prompt','key','oauth2Claims','data1','set','decode','issuer','aud','audience','nonce','unix','exp','resolve','then','data3','CloudProvider','findOne','refresh_token','data6','decryptString','POST','data5','update','catch','error','Failed\x20to\x20refresh\x20access\x20token\x20for\x20cloud\x20provider\x20#%s,\x20-\x20err:%s','authorization_code'];(function(_0xd9f102,_0x5a0d28){var _0x2652e4=function(_0x5021a1){while(--_0x5021a1){_0xd9f102['push'](_0xd9f102['shift']());}};_0x2652e4(++_0x5a0d28);}(_0x2c5a,0x1b4));var _0xa2c5=function(_0x24ef64,_0x382030){_0x24ef64=_0x24ef64-0x0;var _0x13d5e0=_0x2c5a[_0x24ef64];return _0x13d5e0;};'use strict';var _=require(_0xa2c5('0x0'));var crypto=require('crypto');var jwt=require(_0xa2c5('0x1'));var moment=require(_0xa2c5('0x2'));var Redis=require('ioredis');var rp=require('request-promise');var util=require(_0xa2c5('0x3'));var encryptor=require(_0xa2c5('0x4'));var config=require('../../config/environment');var logger=require('../../config/logger')(_0xa2c5('0x5'));var schedule=require(_0xa2c5('0x6'));var db=require(_0xa2c5('0x7'))['db'];config[_0xa2c5('0x8')]=_[_0xa2c5('0x9')](config[_0xa2c5('0x8')],{'host':'localhost','port':0x18eb});var redis=new Redis(config[_0xa2c5('0x8')]);var MICROSOFT_AUTH_URL='https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0';var AZURE_AUTH_SCOPES={'Outlook365':[_0xa2c5('0xa'),_0xa2c5('0xb'),_0xa2c5('0xc'),_0xa2c5('0xd'),'https://outlook.office365.com/IMAP.AccessAsUser.All',_0xa2c5('0xe'),_0xa2c5('0xf')],'Dynamics365':[_0xa2c5('0xa'),'offline_access']};var MICROSOFT_AUTH_ENDPOINT='/authorize';var MICROSOFT_TOKEN_ENDPOINT=_0xa2c5('0x10');var OAUTH_REFRESH_INTERVAL=0xfa;function getAuthorizationScopes(_0x25e8f5){var _0x4e891f=_[_0xa2c5('0x11')](AZURE_AUTH_SCOPES[_0x25e8f5[_0xa2c5('0x12')]]);if(_0x25e8f5[_0xa2c5('0x12')]===_0xa2c5('0x13'))_0x4e891f[_0xa2c5('0x14')](_0x25e8f5['data7']+_0xa2c5('0x15'));return _0x4e891f[_0xa2c5('0x16')]('\x20');}function getAccessTokenScope(_0x39ec8b){if(_0x39ec8b[_0xa2c5('0x12')]===_0xa2c5('0x17'))return'https://outlook.office365.com/IMAP.AccessAsUser.All';if(_0x39ec8b[_0xa2c5('0x12')]==='Dynamics365')return _0x39ec8b[_0xa2c5('0x18')]+_0xa2c5('0x15');}function generateMicrosoftAuthorizationUrl(_0x18e399,_0x18610d){var _0x23503c=MICROSOFT_AUTH_URL[_0xa2c5('0x19')](_0xa2c5('0x1a'),_0x18e399[_0xa2c5('0x1b')]);var _0x17cae1=[_0xa2c5('0x1c'),_0xa2c5('0x1d')];var _0x4d7fbc=Buffer[_0xa2c5('0x1e')](JSON[_0xa2c5('0x1f')]({'id':_0x18610d}))['toString'](_0xa2c5('0x20'));var _0x3250da=crypto[_0xa2c5('0x21')](0x10)[_0xa2c5('0x22')](_0xa2c5('0x23'));var _0x25a25a=getAuthorizationScopes(_0x18e399);var _0x5b0d23=[{'key':_0xa2c5('0x24'),'value':_0x18e399['data1']},{'key':_0xa2c5('0x25'),'value':encodeURIComponent(_0x17cae1[_0xa2c5('0x16')]('\x20'))},{'key':_0xa2c5('0x26'),'value':_0x18e399[_0xa2c5('0x27')]},{'key':'response_mode','value':'form_post'},{'key':_0xa2c5('0x28'),'value':encodeURIComponent(_0x25a25a)},{'key':'state','value':_0x4d7fbc},{'key':'nonce','value':_0x3250da},{'key':_0xa2c5('0x29'),'value':'login'}];var _0x1f3f18=_0x23503c+MICROSOFT_AUTH_ENDPOINT+'?'+_[_0xa2c5('0x11')](_0x5b0d23,function(_0x461cea){return _0x461cea[_0xa2c5('0x2a')]+'='+_0x461cea['value'];})[_0xa2c5('0x16')]('&');_0x18e399[_0xa2c5('0x2b')]={'issuer':_0x23503c[_0xa2c5('0x19')]('oauth2/',''),'audience':_0x18e399[_0xa2c5('0x2c')],'state':_0x4d7fbc,'nonce':_0x3250da};redis[_0xa2c5('0x2d')](_0x4d7fbc,JSON[_0xa2c5('0x1f')](_0x18e399));return _0x1f3f18;}function isValidIdToken(_0x3f02df,_0x2d7d65){try{var _0x5426bc=jwt[_0xa2c5('0x2e')](_0x3f02df,{'complete':!![]});var _0x385b32=_0x5426bc['payload'];if(_0x385b32['iss']!==_0x2d7d65[_0xa2c5('0x2f')])return![];if(_0x385b32[_0xa2c5('0x30')]!==_0x2d7d65[_0xa2c5('0x31')])return![];if(_0x385b32[_0xa2c5('0x32')]!==_0x2d7d65[_0xa2c5('0x32')])return![];if(moment()['isAfter'](moment[_0xa2c5('0x33')](_0x385b32[_0xa2c5('0x34')])))return![];return!![];}catch(_0x19bfcb){throw _0x19bfcb;}}function refreshOauth2MicrosoftAccessToken(_0x37e57e){return Promise[_0xa2c5('0x35')]()[_0xa2c5('0x36')](function(){if(_0x37e57e[_0xa2c5('0x37')])return _0x37e57e;return db[_0xa2c5('0x38')][_0xa2c5('0x39')]({'where':{'id':_0x37e57e['id']},'raw':!![]});})[_0xa2c5('0x36')](function(_0x1ce34f){var _0x35756f={'grant_type':_0xa2c5('0x3a'),'refresh_token':_0x1ce34f[_0xa2c5('0x3b')],'scope':getAccessTokenScope(_0x1ce34f),'redirect_uri':_0x1ce34f[_0xa2c5('0x27')],'client_id':_0x1ce34f['data1'],'client_secret':encryptor[_0xa2c5('0x3c')](_0x1ce34f[_0xa2c5('0x37')])};var _0x2146e8={'method':_0xa2c5('0x3d'),'uri':MICROSOFT_AUTH_URL[_0xa2c5('0x19')](_0xa2c5('0x1a'),_0x1ce34f[_0xa2c5('0x1b')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x35756f,'json':!![]};return rp(_0x2146e8);})['then'](function(_0x19d52a){_0x37e57e[_0xa2c5('0x3e')]=_0x19d52a['access_token'];_0x37e57e[_0xa2c5('0x3b')]=_0x19d52a['refresh_token'];return db[_0xa2c5('0x38')][_0xa2c5('0x3f')]({'data5':_0x37e57e[_0xa2c5('0x3e')],'data6':_0x37e57e['data6']},{'where':{'id':_0x37e57e['id']}});})[_0xa2c5('0x36')](function(){return _0x37e57e;})[_0xa2c5('0x40')](function(_0x29ca50){logger[_0xa2c5('0x41')](_0xa2c5('0x42'),_0x37e57e['id'],_0x29ca50);});}function getOauth2MicrosoftAccessToken(_0x34a83a,_0x4ec246){var _0x494379={'grant_type':_0xa2c5('0x43'),'code':_0x34a83a,'scope':getAccessTokenScope(_0x4ec246),'redirect_uri':_0x4ec246[_0xa2c5('0x27')],'client_id':_0x4ec246[_0xa2c5('0x2c')],'client_secret':encryptor['decryptString'](_0x4ec246[_0xa2c5('0x37')])};var _0x5af790={'method':_0xa2c5('0x3d'),'uri':MICROSOFT_AUTH_URL[_0xa2c5('0x19')]('{TENANT_ID}',_0x4ec246[_0xa2c5('0x1b')])+MICROSOFT_TOKEN_ENDPOINT,'form':_0x494379,'json':!![]};return rp(_0x5af790);}function startRefreshInterval(_0x4cd042){var _0x5d1565=schedule['intervals'];if(_0x5d1565[_0x4cd042['id']])clearInterval(_0x5d1565[_0x4cd042['id']]);_0x5d1565[_0x4cd042['id']]=setInterval(refreshOauth2MicrosoftAccessToken['bind'](this,{'id':_0x4cd042['id']}),OAUTH_REFRESH_INTERVAL*0x3e8);schedule[_0xa2c5('0x44')]=_0x5d1565;}function startAllRefreshIntervals(){return db[_0xa2c5('0x38')]['findAll']({'where':{'data6':{'$ne':null}},'raw':!![]})[_0xa2c5('0x36')](function(_0x2d60b7){var _0x2d4f5c=_0x2d60b7[_0xa2c5('0x11')](function(_0x236d25){return refreshOauth2MicrosoftAccessToken(_0x236d25)[_0xa2c5('0x36')](function(_0xc3cb9){startRefreshInterval(_0xc3cb9);});});return Promise['all'](_0x2d4f5c);})[_0xa2c5('0x40')](function(_0x2fd50f){var _0x1eebe7=_0x2fd50f?util[_0xa2c5('0x45')](_0x2fd50f,{'showHidden':![],'depth':null}):'';logger['error'](_0xa2c5('0x46'),_0x1eebe7);});}module[_0xa2c5('0x47')]={'generateMicrosoftAuthorizationUrl':generateMicrosoftAuthorizationUrl,'getOauth2MicrosoftAccessToken':getOauth2MicrosoftAccessToken,'isValidIdToken':isValidIdToken,'startAllRefreshIntervals':startAllRefreshIntervals,'refreshOauth2MicrosoftAccessToken':refreshOauth2MicrosoftAccessToken,'startRefreshInterval':startRefreshInterval};
\ No newline at end of file
index a2d404c..f6c61d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e6d=['error','code','message','catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request','then','info','CloudProvider,\x20%s,\x20%s','CloudProvider,\x20%s,\x20%s,\x20%s','request\x20sent','stringify'];(function(_0x1f0d91,_0x24b032){var _0xafee7a=function(_0x2d1295){while(--_0x2d1295){_0x1f0d91['push'](_0x1f0d91['shift']());}};_0xafee7a(++_0x24b032);}(_0x9e6d,0x1d2));var _0xd9e6=function(_0x5ae7b6,_0x19c238){_0x5ae7b6=_0x5ae7b6-0x0;var _0x3c891c=_0x9e6d[_0x5ae7b6];return _0x3c891c;};'use strict';var _=require(_0xd9e6('0x0'));var util=require('util');var moment=require(_0xd9e6('0x1'));var BPromise=require(_0xd9e6('0x2'));var rs=require(_0xd9e6('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd9e6('0x4'))['db'];var utils=require(_0xd9e6('0x5'));var logger=require(_0xd9e6('0x6'))(_0xd9e6('0x7'));var config=require('../../config/environment');var jayson=require(_0xd9e6('0x8'));var client=jayson[_0xd9e6('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x57a688,_0x1cb696,_0x44ac22){return new BPromise(function(_0x1103ba,_0x5b296b){return client[_0xd9e6('0xa')](_0x57a688,_0x44ac22)[_0xd9e6('0xb')](function(_0x596895){logger[_0xd9e6('0xc')](_0xd9e6('0xd'),_0x1cb696,'request\x20sent');logger['debug'](_0xd9e6('0xe'),_0x1cb696,_0xd9e6('0xf'),JSON[_0xd9e6('0x10')](_0x596895));if(_0x596895[_0xd9e6('0x11')]){if(_0x596895[_0xd9e6('0x11')][_0xd9e6('0x12')]===0x1f4){logger[_0xd9e6('0x11')](_0xd9e6('0xd'),_0x1cb696,_0x596895[_0xd9e6('0x11')]['message']);return _0x5b296b(_0x596895[_0xd9e6('0x11')][_0xd9e6('0x13')]);}logger['error']('CloudProvider,\x20%s,\x20%s',_0x1cb696,_0x596895[_0xd9e6('0x11')]['message']);return _0x1103ba(_0x596895[_0xd9e6('0x11')][_0xd9e6('0x13')]);}else{logger[_0xd9e6('0xc')](_0xd9e6('0xd'),_0x1cb696,_0xd9e6('0xf'));_0x1103ba(_0x596895['result']['message']);}})[_0xd9e6('0x14')](function(_0x5dfc4b){logger[_0xd9e6('0x11')](_0xd9e6('0xd'),_0x1cb696,_0x5dfc4b);_0x5b296b(_0x5dfc4b);});});}
\ No newline at end of file
+var _0xd7ab=['http','then','info','debug','stringify','error','code','message','CloudProvider,\x20%s,\x20%s','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment'];(function(_0x2b4ecf,_0x58a97){var _0x34faa4=function(_0x10210e){while(--_0x10210e){_0x2b4ecf['push'](_0x2b4ecf['shift']());}};_0x34faa4(++_0x58a97);}(_0xd7ab,0x14e));var _0xbd7a=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xd7ab[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0xbd7a('0x0'));var util=require(_0xbd7a('0x1'));var moment=require(_0xbd7a('0x2'));var BPromise=require(_0xbd7a('0x3'));var rs=require(_0xbd7a('0x4'));var fs=require('fs');var Redis=require(_0xbd7a('0x5'));var db=require(_0xbd7a('0x6'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xbd7a('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xbd7a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x331bcb,_0x407f62,_0x5ccda4){return new BPromise(function(_0x3eb09d,_0x2aa782){return client['request'](_0x331bcb,_0x5ccda4)[_0xbd7a('0x9')](function(_0x5c8abe){logger[_0xbd7a('0xa')]('CloudProvider,\x20%s,\x20%s',_0x407f62,'request\x20sent');logger[_0xbd7a('0xb')]('CloudProvider,\x20%s,\x20%s,\x20%s',_0x407f62,'request\x20sent',JSON[_0xbd7a('0xc')](_0x5c8abe));if(_0x5c8abe[_0xbd7a('0xd')]){if(_0x5c8abe[_0xbd7a('0xd')][_0xbd7a('0xe')]===0x1f4){logger[_0xbd7a('0xd')]('CloudProvider,\x20%s,\x20%s',_0x407f62,_0x5c8abe[_0xbd7a('0xd')]['message']);return _0x2aa782(_0x5c8abe[_0xbd7a('0xd')][_0xbd7a('0xf')]);}logger[_0xbd7a('0xd')](_0xbd7a('0x10'),_0x407f62,_0x5c8abe[_0xbd7a('0xd')][_0xbd7a('0xf')]);return _0x3eb09d(_0x5c8abe['error'][_0xbd7a('0xf')]);}else{logger['info'](_0xbd7a('0x10'),_0x407f62,'request\x20sent');_0x3eb09d(_0x5c8abe[_0xbd7a('0x11')][_0xbd7a('0xf')]);}})[_0xbd7a('0x12')](function(_0xcc7ad3){logger[_0xbd7a('0xd')](_0xbd7a('0x10'),_0x407f62,_0xcc7ad3);_0x2aa782(_0xcc7ad3);});});}
\ No newline at end of file
index 828bddf..af45bdb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1261=['/:id','show','create','put','update','delete','/:id/oauth2/microsoft/authorize/','post','exports','Router','../../components/auth/service','./cloudProvider.controller','get','isAuthenticated','index'];(function(_0x5a60ce,_0x48f080){var _0x393e5e=function(_0x1c58fc){while(--_0x1c58fc){_0x5a60ce['push'](_0x5a60ce['shift']());}};_0x393e5e(++_0x48f080);}(_0x1261,0x144));var _0x1126=function(_0x2faddb,_0xc18b78){_0x2faddb=_0x2faddb-0x0;var _0x273c05=_0x1261[_0x2faddb];return _0x273c05;};'use strict';var express=require('express');var router=express[_0x1126('0x0')]();var auth=require(_0x1126('0x1'));var controller=require(_0x1126('0x2'));router[_0x1126('0x3')]('/',auth[_0x1126('0x4')](),controller[_0x1126('0x5')]);router[_0x1126('0x3')](_0x1126('0x6'),auth[_0x1126('0x4')](),controller[_0x1126('0x7')]);router['post']('/',auth['isAuthenticated'](),controller[_0x1126('0x8')]);router[_0x1126('0x9')]('/:id',auth[_0x1126('0x4')](),controller[_0x1126('0xa')]);router[_0x1126('0xb')](_0x1126('0x6'),auth[_0x1126('0x4')](),controller['destroy']);router[_0x1126('0x3')](_0x1126('0xc'),auth[_0x1126('0x4')](),controller['oauth2MicrosoftAuthorize']);router[_0x1126('0xd')]('/oauth2/microsoft/callback',controller['oauth2MicrosoftCallback']);module[_0x1126('0xe')]=router;
\ No newline at end of file
+var _0x7a54=['isAuthenticated','/:id','show','post','create','delete','/:id/oauth2/microsoft/authorize/','oauth2MicrosoftAuthorize','oauth2MicrosoftCallback','exports','express','Router','../../components/auth/service','get'];(function(_0x5447fd,_0x52a6b5){var _0x15b28a=function(_0x370d4f){while(--_0x370d4f){_0x5447fd['push'](_0x5447fd['shift']());}};_0x15b28a(++_0x52a6b5);}(_0x7a54,0x106));var _0x47a5=function(_0x7f32e4,_0x295f41){_0x7f32e4=_0x7f32e4-0x0;var _0x3e865b=_0x7a54[_0x7f32e4];return _0x3e865b;};'use strict';var express=require(_0x47a5('0x0'));var router=express[_0x47a5('0x1')]();var auth=require(_0x47a5('0x2'));var controller=require('./cloudProvider.controller');router[_0x47a5('0x3')]('/',auth[_0x47a5('0x4')](),controller['index']);router[_0x47a5('0x3')](_0x47a5('0x5'),auth[_0x47a5('0x4')](),controller[_0x47a5('0x6')]);router[_0x47a5('0x7')]('/',auth['isAuthenticated'](),controller[_0x47a5('0x8')]);router['put'](_0x47a5('0x5'),auth[_0x47a5('0x4')](),controller['update']);router[_0x47a5('0x9')]('/:id',auth['isAuthenticated'](),controller['destroy']);router[_0x47a5('0x3')](_0x47a5('0xa'),auth['isAuthenticated'](),controller[_0x47a5('0xb')]);router['post']('/oauth2/microsoft/callback',controller[_0x47a5('0xc')]);module[_0x47a5('0xd')]=router;
\ No newline at end of file
index f88f2f4..6fcdeee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf699=['exports','STRING','name','sequelize'];(function(_0x14ec54,_0x2d5098){var _0x2f8c0e=function(_0x3e621e){while(--_0x3e621e){_0x14ec54['push'](_0x14ec54['shift']());}};_0x2f8c0e(++_0x2d5098);}(_0xf699,0xeb));var _0x9f69=function(_0x278ad4,_0x5b6450){_0x278ad4=_0x278ad4-0x0;var _0x494c6c=_0xf699[_0x278ad4];return _0x494c6c;};'use strict';var Sequelize=require(_0x9f69('0x0'));module[_0x9f69('0x1')]={'name':{'type':Sequelize[_0x9f69('0x2')],'unique':_0x9f69('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0x9f69('0x2')]},'companyId':{'type':Sequelize[_0x9f69('0x2')]},'website':{'type':Sequelize[_0x9f69('0x2')]},'phone':{'type':Sequelize[_0x9f69('0x2')]},'fax':{'type':Sequelize['STRING']},'type':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0x9f69('0x2')]},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x9f69('0x2')]},'country':{'type':Sequelize[_0x9f69('0x2')]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize[_0x9f69('0x2')]},'sStreet':{'type':Sequelize[_0x9f69('0x2')]},'sPostalCode':{'type':Sequelize[_0x9f69('0x2')]},'sCity':{'type':Sequelize[_0x9f69('0x2')]},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x9f69('0x2')]}};
\ No newline at end of file
+var _0x9d2d=['name','exports','STRING'];(function(_0x4dbf35,_0x3411b8){var _0x1bfd71=function(_0x5163f2){while(--_0x5163f2){_0x4dbf35['push'](_0x4dbf35['shift']());}};_0x1bfd71(++_0x3411b8);}(_0x9d2d,0x124));var _0xd9d2=function(_0x395896,_0x137d78){_0x395896=_0x395896-0x0;var _0x220799=_0x9d2d[_0x395896];return _0x220799;};'use strict';var Sequelize=require('sequelize');module[_0xd9d2('0x0')]={'name':{'type':Sequelize[_0xd9d2('0x1')],'unique':_0xd9d2('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'vat':{'type':Sequelize[_0xd9d2('0x1')]},'companyId':{'type':Sequelize[_0xd9d2('0x1')]},'website':{'type':Sequelize[_0xd9d2('0x1')]},'phone':{'type':Sequelize[_0xd9d2('0x1')]},'fax':{'type':Sequelize[_0xd9d2('0x1')]},'type':{'type':Sequelize[_0xd9d2('0x1')]},'street':{'type':Sequelize[_0xd9d2('0x1')]},'postalCode':{'type':Sequelize[_0xd9d2('0x1')]},'city':{'type':Sequelize[_0xd9d2('0x1')]},'country':{'type':Sequelize[_0xd9d2('0x1')]},'email':{'type':Sequelize[_0xd9d2('0x1')],'validate':{'isEmail':!![]}},'emailDomain':{'type':Sequelize['STRING']},'sStreet':{'type':Sequelize['STRING']},'sPostalCode':{'type':Sequelize[_0xd9d2('0x1')]},'sCity':{'type':Sequelize[_0xd9d2('0x1')]},'sCountry':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xd9d2('0x1')]}};
\ No newline at end of file
index d28d954..d2ceba3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9846=['name','index','CmCompany','describe','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','map','options','includeAll','include','rows','catch','params','rawAttributes','length','find','create','user','Companies','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','addContacts','CmContact','ids','getContacts','findOne','order','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','status','end','offset','undefined','count','limit','set','apply','reject','save','update','then','destroy','get','UserProfileResource','sendStatus'];(function(_0x35cfe6,_0x711217){var _0x1a7191=function(_0x9f0d2f){while(--_0x9f0d2f){_0x35cfe6['push'](_0x35cfe6['shift']());}};_0x1a7191(++_0x711217);}(_0x9846,0x116));var _0x6984=function(_0x5f239f,_0x2fc818){_0x5f239f=_0x5f239f-0x0;var _0x28c610=_0x9846[_0x5f239f];return _0x28c610;};'use strict';var emlformat=require(_0x6984('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6984('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6984('0x2'));var moment=require(_0x6984('0x3'));var BPromise=require(_0x6984('0x4'));var Mustache=require(_0x6984('0x5'));var util=require(_0x6984('0x6'));var path=require('path');var sox=require(_0x6984('0x7'));var csv=require(_0x6984('0x8'));var ejs=require(_0x6984('0x9'));var fs=require('fs');var fs_extra=require(_0x6984('0xa'));var _=require(_0x6984('0xb'));var squel=require('squel');var crypto=require(_0x6984('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x6984('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x6984('0xe'));var Redis=require(_0x6984('0xf'));var authService=require(_0x6984('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6984('0x11'));var logger=require(_0x6984('0x12'))('api');var utils=require(_0x6984('0x13'));var config=require(_0x6984('0x14'));var licenseUtil=require(_0x6984('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x13c1a4,_0x2bf050){_0x2bf050=_0x2bf050||0xcc;return function(_0x1a574b){if(_0x1a574b){return _0x13c1a4['sendStatus'](_0x2bf050);}return _0x13c1a4[_0x6984('0x16')](_0x2bf050)[_0x6984('0x17')]();};}function respondWithResult(_0x3c4210,_0x534cdf){_0x534cdf=_0x534cdf||0xc8;return function(_0x21bcba){if(_0x21bcba){return _0x3c4210[_0x6984('0x16')](_0x534cdf)['json'](_0x21bcba);}};}function respondWithFilteredResult(_0x4d8582,_0x1a8888){return function(_0x3750d2){if(_0x3750d2){var _0x336e6f=typeof _0x1a8888[_0x6984('0x18')]===_0x6984('0x19')&&typeof _0x1a8888['limit']===_0x6984('0x19');var _0x10cc00=_0x3750d2[_0x6984('0x1a')];var _0x4504e5=_0x336e6f?0x0:_0x1a8888[_0x6984('0x18')];var _0x5b8edb=_0x336e6f?_0x3750d2[_0x6984('0x1a')]:_0x1a8888[_0x6984('0x18')]+_0x1a8888[_0x6984('0x1b')];var _0x53fc3e;if(_0x5b8edb>=_0x10cc00){_0x5b8edb=_0x10cc00;_0x53fc3e=0xc8;}else{_0x53fc3e=0xce;}_0x4d8582[_0x6984('0x16')](_0x53fc3e);return _0x4d8582[_0x6984('0x1c')]('Content-Range',_0x4504e5+'-'+_0x5b8edb+'/'+_0x10cc00)['json'](_0x3750d2);}return null;};}function patchUpdates(_0x33f408){return function(_0x3e1481){try{jsonpatch[_0x6984('0x1d')](_0x3e1481,_0x33f408,!![]);}catch(_0x9ce83){return BPromise[_0x6984('0x1e')](_0x9ce83);}return _0x3e1481[_0x6984('0x1f')]();};}function saveUpdates(_0x262714,_0xab1cfc){return function(_0x3a93bb){if(_0x3a93bb){return _0x3a93bb[_0x6984('0x20')](_0x262714)[_0x6984('0x21')](function(_0x186601){return _0x186601;});}return null;};}function removeEntity(_0x5b3ccb,_0x13d71a){return function(_0x356fba){if(_0x356fba){return _0x356fba[_0x6984('0x22')]()[_0x6984('0x21')](function(){var _0x381bf0=_0x356fba[_0x6984('0x23')]({'plain':!![]});var _0x333fbf='Companies';return db[_0x6984('0x24')]['destroy']({'where':{'type':_0x333fbf,'resourceId':_0x381bf0['id']}})['then'](function(){return _0x356fba;});})[_0x6984('0x21')](function(){_0x5b3ccb[_0x6984('0x16')](0xcc)[_0x6984('0x17')]();});}};}function handleEntityNotFound(_0x1d7455,_0x502730){return function(_0x31096b){if(!_0x31096b){_0x1d7455[_0x6984('0x25')](0x194);}return _0x31096b;};}function handleError(_0x240019,_0x4743ed){_0x4743ed=_0x4743ed||0x1f4;return function(_0x54f59a){logger['error'](_0x54f59a['stack']);if(_0x54f59a[_0x6984('0x26')]){delete _0x54f59a[_0x6984('0x26')];}_0x240019[_0x6984('0x16')](_0x4743ed)['send'](_0x54f59a);};}exports[_0x6984('0x27')]=function(_0x503075,_0x3c4ba7){var _0x4c527c={},_0x449a82={},_0x1ce630={'count':0x0,'rows':[]};return db[_0x6984('0x28')][_0x6984('0x29')]()[_0x6984('0x21')](function(_0x2b8419){_0x449a82[_0x6984('0x2a')]=_['keys'](_0x2b8419);_0x449a82[_0x6984('0x2b')]=_[_0x6984('0x2c')](_0x503075[_0x6984('0x2b')]);_0x449a82[_0x6984('0x2d')]=_[_0x6984('0x2e')](_0x449a82[_0x6984('0x2a')],_0x449a82[_0x6984('0x2b')]);_0x4c527c[_0x6984('0x2f')]=_['intersection'](_0x449a82[_0x6984('0x2a')],qs[_0x6984('0x30')](_0x503075['query']['fields']));_0x4c527c['attributes']=_0x4c527c[_0x6984('0x2f')]['length']?_0x4c527c['attributes']:_0x449a82[_0x6984('0x2a')];if(!_0x503075['query'][_0x6984('0x31')](_0x6984('0x32'))){_0x4c527c[_0x6984('0x1b')]=qs[_0x6984('0x1b')](_0x503075[_0x6984('0x2b')][_0x6984('0x1b')]);_0x4c527c[_0x6984('0x18')]=qs[_0x6984('0x18')](_0x503075['query']['offset']);}_0x4c527c['order']=qs['sort'](_0x503075[_0x6984('0x2b')][_0x6984('0x33')]);_0x4c527c[_0x6984('0x34')]=qs[_0x6984('0x2d')](_[_0x6984('0x35')](_0x503075['query'],_0x449a82[_0x6984('0x2d')]),_0x2b8419);if(_0x503075[_0x6984('0x2b')][_0x6984('0x36')]){_0x4c527c[_0x6984('0x34')]=_[_0x6984('0x37')](_0x4c527c[_0x6984('0x34')],{'$or':_[_0x6984('0x38')](_0x4c527c['attributes'],function(_0x531ae2){var _0x659d4f={};_0x659d4f[_0x531ae2]={'$like':'%'+_0x503075[_0x6984('0x2b')][_0x6984('0x36')]+'%'};return _0x659d4f;})});}_0x4c527c=_['merge']({},_0x4c527c,_0x503075[_0x6984('0x39')]);var _0x45dbe5={'where':_0x4c527c[_0x6984('0x34')]};return db[_0x6984('0x28')][_0x6984('0x1a')](_0x45dbe5)[_0x6984('0x21')](function(_0x20f17c){_0x1ce630[_0x6984('0x1a')]=_0x20f17c;if(_0x503075['query'][_0x6984('0x3a')]){_0x4c527c[_0x6984('0x3b')]=[{'all':!![]}];}return db[_0x6984('0x28')]['findAll'](_0x4c527c);})['then'](function(_0x4fa6fe){_0x1ce630[_0x6984('0x3c')]=_0x4fa6fe;return _0x1ce630;})[_0x6984('0x21')](respondWithFilteredResult(_0x3c4ba7,_0x4c527c))[_0x6984('0x3d')](handleError(_0x3c4ba7,null));})[_0x6984('0x3d')](handleError(_0x3c4ba7,null));};exports['show']=function(_0x373ff9,_0x57cf00){var _0x1e1863={'raw':![],'where':{'id':_0x373ff9[_0x6984('0x3e')]['id']}},_0x2dc036={};_0x2dc036[_0x6984('0x2a')]=_[_0x6984('0x2c')](db[_0x6984('0x28')][_0x6984('0x3f')]);_0x2dc036[_0x6984('0x2b')]=_[_0x6984('0x2c')](_0x373ff9[_0x6984('0x2b')]);_0x2dc036['filters']=_[_0x6984('0x2e')](_0x2dc036[_0x6984('0x2a')],_0x2dc036[_0x6984('0x2b')]);_0x1e1863['attributes']=_[_0x6984('0x2e')](_0x2dc036[_0x6984('0x2a')],qs['fields'](_0x373ff9['query']['fields']));_0x1e1863[_0x6984('0x2f')]=_0x1e1863[_0x6984('0x2f')][_0x6984('0x40')]?_0x1e1863['attributes']:_0x2dc036[_0x6984('0x2a')];if(_0x373ff9[_0x6984('0x2b')][_0x6984('0x3a')]){_0x1e1863[_0x6984('0x3b')]=[{'all':!![]}];}_0x1e1863=_[_0x6984('0x37')]({},_0x1e1863,_0x373ff9[_0x6984('0x39')]);return db[_0x6984('0x28')][_0x6984('0x41')](_0x1e1863)['then'](handleEntityNotFound(_0x57cf00,null))['then'](respondWithResult(_0x57cf00,null))[_0x6984('0x3d')](handleError(_0x57cf00,null));};exports[_0x6984('0x42')]=function(_0x191ff1,_0x2b194f){return db[_0x6984('0x28')][_0x6984('0x42')](_0x191ff1['body'],{})[_0x6984('0x21')](function(_0x4e4a75){var _0x3fb992=_0x191ff1[_0x6984('0x43')]['get']({'plain':!![]});if(!_0x3fb992)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3fb992['role']===_0x6984('0x43')){var _0x4e1c7c=_0x4e4a75[_0x6984('0x23')]({'plain':!![]});var _0x1b19d4=_0x6984('0x44');return db['UserProfileSection'][_0x6984('0x41')]({'where':{'name':_0x1b19d4,'userProfileId':_0x3fb992['userProfileId']},'raw':!![]})[_0x6984('0x21')](function(_0x3bfa83){if(_0x3bfa83&&_0x3bfa83[_0x6984('0x45')]===0x0){return db[_0x6984('0x24')][_0x6984('0x42')]({'name':_0x4e1c7c[_0x6984('0x26')],'resourceId':_0x4e1c7c['id'],'type':_0x3bfa83[_0x6984('0x26')],'sectionId':_0x3bfa83['id']},{})[_0x6984('0x21')](function(){return _0x4e4a75;});}else{return _0x4e4a75;}})[_0x6984('0x3d')](function(_0x1a76c0){logger[_0x6984('0x46')](_0x6984('0x47'),_0x1a76c0);throw _0x1a76c0;});}return _0x4e4a75;})['then'](respondWithResult(_0x2b194f,0xc9))[_0x6984('0x3d')](handleError(_0x2b194f,null));};exports[_0x6984('0x20')]=function(_0x5e9e2a,_0x10484f){if(_0x5e9e2a[_0x6984('0x48')]['id']){delete _0x5e9e2a[_0x6984('0x48')]['id'];}return db[_0x6984('0x28')][_0x6984('0x41')]({'where':{'id':_0x5e9e2a['params']['id']}})[_0x6984('0x21')](handleEntityNotFound(_0x10484f,null))['then'](saveUpdates(_0x5e9e2a[_0x6984('0x48')],null))[_0x6984('0x21')](respondWithResult(_0x10484f,null))['catch'](handleError(_0x10484f,null));};exports[_0x6984('0x22')]=function(_0x3670c0,_0x23e9a1){return db[_0x6984('0x28')][_0x6984('0x41')]({'where':{'id':_0x3670c0[_0x6984('0x3e')]['id']}})[_0x6984('0x21')](handleEntityNotFound(_0x23e9a1,null))['then'](removeEntity(_0x23e9a1,null))[_0x6984('0x3d')](handleError(_0x23e9a1,null));};exports['describe']=function(_0x36ac05,_0x145318){return db[_0x6984('0x28')][_0x6984('0x29')]()['then'](respondWithResult(_0x145318,null))[_0x6984('0x3d')](handleError(_0x145318,null));};exports[_0x6984('0x49')]=function(_0xa936d6,_0x303557,_0x41b9ba){return db[_0x6984('0x4a')][_0x6984('0x41')]({'where':{'id':_0xa936d6['params']['id']}})['then'](handleEntityNotFound(_0x303557,null))[_0x6984('0x21')](function(_0x5c9dea){if(_0x5c9dea){return _0x5c9dea[_0x6984('0x49')](_0xa936d6[_0x6984('0x48')][_0x6984('0x4b')],_['omit'](_0xa936d6['body'],[_0x6984('0x4b'),'id'])||{});}})['then'](respondWithResult(_0x303557,null))[_0x6984('0x3d')](handleError(_0x303557,null));};exports[_0x6984('0x4c')]=function(_0xce9088,_0x27fa26,_0xeffff3){var _0x27a446={};var _0x5e8d43={};var _0x1fe564;var _0x43b3e8;return db[_0x6984('0x28')][_0x6984('0x4d')]({'where':{'id':_0xce9088[_0x6984('0x3e')]['id']}})[_0x6984('0x21')](handleEntityNotFound(_0x27fa26,null))[_0x6984('0x21')](function(_0x1c2fb7){if(_0x1c2fb7){_0x1fe564=_0x1c2fb7;_0x5e8d43[_0x6984('0x2a')]=_[_0x6984('0x2c')](db['CmContact'][_0x6984('0x3f')]);_0x5e8d43['query']=_[_0x6984('0x2c')](_0xce9088[_0x6984('0x2b')]);_0x5e8d43[_0x6984('0x2d')]=_[_0x6984('0x2e')](_0x5e8d43[_0x6984('0x2a')],_0x5e8d43['query']);_0x27a446[_0x6984('0x2f')]=_[_0x6984('0x2e')](_0x5e8d43[_0x6984('0x2a')],qs[_0x6984('0x30')](_0xce9088[_0x6984('0x2b')][_0x6984('0x30')]));_0x27a446['attributes']=_0x27a446['attributes'][_0x6984('0x40')]?_0x27a446[_0x6984('0x2f')]:_0x5e8d43['model'];_0x27a446[_0x6984('0x4e')]=qs['sort'](_0xce9088[_0x6984('0x2b')]['sort']);_0x27a446[_0x6984('0x34')]=qs['filters'](_['pick'](_0xce9088[_0x6984('0x2b')],_0x5e8d43['filters']));if(_0xce9088[_0x6984('0x2b')][_0x6984('0x36')]){_0x27a446[_0x6984('0x34')]=_[_0x6984('0x37')](_0x27a446['where'],{'$or':_[_0x6984('0x38')](_0x27a446['attributes'],function(_0x73c89b){var _0x23b619={};_0x23b619[_0x73c89b]={'$like':'%'+_0xce9088['query'][_0x6984('0x36')]+'%'};return _0x23b619;})});}_0x27a446=_[_0x6984('0x37')]({},_0x27a446,_0xce9088[_0x6984('0x39')]);return _0x1fe564[_0x6984('0x4c')](_0x27a446);}})[_0x6984('0x21')](function(_0x5212d9){if(_0x5212d9){_0x43b3e8=_0x5212d9[_0x6984('0x40')];if(!_0xce9088[_0x6984('0x2b')]['hasOwnProperty'](_0x6984('0x32'))){_0x27a446['limit']=qs['limit'](_0xce9088[_0x6984('0x2b')][_0x6984('0x1b')]);_0x27a446['offset']=qs[_0x6984('0x18')](_0xce9088['query'][_0x6984('0x18')]);}return _0x1fe564[_0x6984('0x4c')](_0x27a446);}})[_0x6984('0x21')](function(_0x561005){if(_0x561005){return _0x561005?{'count':_0x43b3e8,'rows':_0x561005}:null;}})[_0x6984('0x21')](respondWithResult(_0x27fa26,null))[_0x6984('0x3d')](handleError(_0x27fa26,null));};
\ No newline at end of file
+var _0x768a=['lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','update','destroy','get','Companies','UserProfileResource','then','error','stack','name','send','index','CmCompany','describe','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','order','sort','where','pick','filter','merge','map','options','includeAll','include','rows','catch','show','rawAttributes','create','body','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','params','CmContact','addContacts','ids','omit','getContacts','findOne','length','nolimit','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra'];(function(_0x2714ec,_0x36daa4){var _0x2608e5=function(_0x408468){while(--_0x408468){_0x2714ec['push'](_0x2714ec['shift']());}};_0x2608e5(++_0x36daa4);}(_0x768a,0x157));var _0xa768=function(_0x24a318,_0x55ba75){_0x24a318=_0x24a318-0x0;var _0x3aa629=_0x768a[_0x24a318];return _0x3aa629;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa768('0x0'));var zipdir=require(_0xa768('0x1'));var jsonpatch=require(_0xa768('0x2'));var rp=require(_0xa768('0x3'));var moment=require(_0xa768('0x4'));var BPromise=require(_0xa768('0x5'));var Mustache=require(_0xa768('0x6'));var util=require(_0xa768('0x7'));var path=require(_0xa768('0x8'));var sox=require(_0xa768('0x9'));var csv=require(_0xa768('0xa'));var ejs=require(_0xa768('0xb'));var fs=require('fs');var fs_extra=require(_0xa768('0xc'));var _=require(_0xa768('0xd'));var squel=require('squel');var crypto=require(_0xa768('0xe'));var jsforce=require(_0xa768('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xa768('0xa'));var querystring=require(_0xa768('0x10'));var Papa=require(_0xa768('0x11'));var Redis=require(_0xa768('0x12'));var authService=require(_0xa768('0x13'));var qs=require(_0xa768('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa768('0x15'))(_0xa768('0x16'));var utils=require(_0xa768('0x17'));var config=require(_0xa768('0x18'));var licenseUtil=require(_0xa768('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4a5ff8,_0x5d3d8a){_0x5d3d8a=_0x5d3d8a||0xcc;return function(_0x272be1){if(_0x272be1){return _0x4a5ff8[_0xa768('0x1a')](_0x5d3d8a);}return _0x4a5ff8[_0xa768('0x1b')](_0x5d3d8a)[_0xa768('0x1c')]();};}function respondWithResult(_0x40ed60,_0x52ed37){_0x52ed37=_0x52ed37||0xc8;return function(_0x203610){if(_0x203610){return _0x40ed60[_0xa768('0x1b')](_0x52ed37)[_0xa768('0x1d')](_0x203610);}};}function respondWithFilteredResult(_0x53f9e5,_0x4128d9){return function(_0x59c375){if(_0x59c375){var _0x2e5a5f=typeof _0x4128d9[_0xa768('0x1e')]===_0xa768('0x1f')&&typeof _0x4128d9[_0xa768('0x20')]==='undefined';var _0x58213a=_0x59c375[_0xa768('0x21')];var _0x503c1b=_0x2e5a5f?0x0:_0x4128d9[_0xa768('0x1e')];var _0x66c581=_0x2e5a5f?_0x59c375[_0xa768('0x21')]:_0x4128d9[_0xa768('0x1e')]+_0x4128d9[_0xa768('0x20')];var _0xe6b1a3;if(_0x66c581>=_0x58213a){_0x66c581=_0x58213a;_0xe6b1a3=0xc8;}else{_0xe6b1a3=0xce;}_0x53f9e5[_0xa768('0x1b')](_0xe6b1a3);return _0x53f9e5[_0xa768('0x22')](_0xa768('0x23'),_0x503c1b+'-'+_0x66c581+'/'+_0x58213a)[_0xa768('0x1d')](_0x59c375);}return null;};}function patchUpdates(_0x2d50aa){return function(_0x4b90b1){try{jsonpatch[_0xa768('0x24')](_0x4b90b1,_0x2d50aa,!![]);}catch(_0x4b071c){return BPromise['reject'](_0x4b071c);}return _0x4b90b1['save']();};}function saveUpdates(_0x58e6ab,_0x3b829c){return function(_0x5206b6){if(_0x5206b6){return _0x5206b6[_0xa768('0x25')](_0x58e6ab)['then'](function(_0x298862){return _0x298862;});}return null;};}function removeEntity(_0xb55f49,_0x43b44f){return function(_0x3500ab){if(_0x3500ab){return _0x3500ab[_0xa768('0x26')]()['then'](function(){var _0x5e6174=_0x3500ab[_0xa768('0x27')]({'plain':!![]});var _0x1d080d=_0xa768('0x28');return db[_0xa768('0x29')][_0xa768('0x26')]({'where':{'type':_0x1d080d,'resourceId':_0x5e6174['id']}})['then'](function(){return _0x3500ab;});})[_0xa768('0x2a')](function(){_0xb55f49[_0xa768('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x27d28e,_0x5be5ac){return function(_0xaa2652){if(!_0xaa2652){_0x27d28e['sendStatus'](0x194);}return _0xaa2652;};}function handleError(_0x5e197b,_0x2e95e6){_0x2e95e6=_0x2e95e6||0x1f4;return function(_0x4279ef){logger[_0xa768('0x2b')](_0x4279ef[_0xa768('0x2c')]);if(_0x4279ef[_0xa768('0x2d')]){delete _0x4279ef[_0xa768('0x2d')];}_0x5e197b[_0xa768('0x1b')](_0x2e95e6)[_0xa768('0x2e')](_0x4279ef);};}exports[_0xa768('0x2f')]=function(_0x54d467,_0x13c9ef){var _0x502148={},_0x525a88={},_0x5e6508={'count':0x0,'rows':[]};return db[_0xa768('0x30')][_0xa768('0x31')]()[_0xa768('0x2a')](function(_0x319885){_0x525a88[_0xa768('0x32')]=_[_0xa768('0x33')](_0x319885);_0x525a88[_0xa768('0x34')]=_['keys'](_0x54d467[_0xa768('0x34')]);_0x525a88[_0xa768('0x35')]=_[_0xa768('0x36')](_0x525a88[_0xa768('0x32')],_0x525a88[_0xa768('0x34')]);_0x502148['attributes']=_[_0xa768('0x36')](_0x525a88[_0xa768('0x32')],qs[_0xa768('0x37')](_0x54d467[_0xa768('0x34')]['fields']));_0x502148['attributes']=_0x502148[_0xa768('0x38')]['length']?_0x502148['attributes']:_0x525a88['model'];if(!_0x54d467[_0xa768('0x34')][_0xa768('0x39')]('nolimit')){_0x502148[_0xa768('0x20')]=qs[_0xa768('0x20')](_0x54d467[_0xa768('0x34')][_0xa768('0x20')]);_0x502148[_0xa768('0x1e')]=qs[_0xa768('0x1e')](_0x54d467[_0xa768('0x34')][_0xa768('0x1e')]);}_0x502148[_0xa768('0x3a')]=qs['sort'](_0x54d467['query'][_0xa768('0x3b')]);_0x502148[_0xa768('0x3c')]=qs[_0xa768('0x35')](_[_0xa768('0x3d')](_0x54d467['query'],_0x525a88['filters']),_0x319885);if(_0x54d467[_0xa768('0x34')][_0xa768('0x3e')]){_0x502148[_0xa768('0x3c')]=_[_0xa768('0x3f')](_0x502148['where'],{'$or':_[_0xa768('0x40')](_0x502148[_0xa768('0x38')],function(_0x33839d){var _0x206a15={};_0x206a15[_0x33839d]={'$like':'%'+_0x54d467['query'][_0xa768('0x3e')]+'%'};return _0x206a15;})});}_0x502148=_[_0xa768('0x3f')]({},_0x502148,_0x54d467[_0xa768('0x41')]);var _0x3ab139={'where':_0x502148[_0xa768('0x3c')]};return db[_0xa768('0x30')]['count'](_0x3ab139)['then'](function(_0x52b1ee){_0x5e6508['count']=_0x52b1ee;if(_0x54d467[_0xa768('0x34')][_0xa768('0x42')]){_0x502148[_0xa768('0x43')]=[{'all':!![]}];}return db[_0xa768('0x30')]['findAll'](_0x502148);})['then'](function(_0x7bd744){_0x5e6508[_0xa768('0x44')]=_0x7bd744;return _0x5e6508;})[_0xa768('0x2a')](respondWithFilteredResult(_0x13c9ef,_0x502148))[_0xa768('0x45')](handleError(_0x13c9ef,null));})['catch'](handleError(_0x13c9ef,null));};exports[_0xa768('0x46')]=function(_0x8e945,_0x56f7db){var _0x36bfe9={'raw':![],'where':{'id':_0x8e945['params']['id']}},_0x5e89bf={};_0x5e89bf[_0xa768('0x32')]=_[_0xa768('0x33')](db[_0xa768('0x30')][_0xa768('0x47')]);_0x5e89bf[_0xa768('0x34')]=_[_0xa768('0x33')](_0x8e945[_0xa768('0x34')]);_0x5e89bf[_0xa768('0x35')]=_[_0xa768('0x36')](_0x5e89bf[_0xa768('0x32')],_0x5e89bf['query']);_0x36bfe9[_0xa768('0x38')]=_['intersection'](_0x5e89bf[_0xa768('0x32')],qs['fields'](_0x8e945[_0xa768('0x34')]['fields']));_0x36bfe9[_0xa768('0x38')]=_0x36bfe9[_0xa768('0x38')]['length']?_0x36bfe9[_0xa768('0x38')]:_0x5e89bf[_0xa768('0x32')];if(_0x8e945[_0xa768('0x34')][_0xa768('0x42')]){_0x36bfe9['include']=[{'all':!![]}];}_0x36bfe9=_[_0xa768('0x3f')]({},_0x36bfe9,_0x8e945[_0xa768('0x41')]);return db[_0xa768('0x30')]['find'](_0x36bfe9)[_0xa768('0x2a')](handleEntityNotFound(_0x56f7db,null))[_0xa768('0x2a')](respondWithResult(_0x56f7db,null))[_0xa768('0x45')](handleError(_0x56f7db,null));};exports['create']=function(_0x3e3d17,_0x8f6901){return db[_0xa768('0x30')][_0xa768('0x48')](_0x3e3d17[_0xa768('0x49')],{})[_0xa768('0x2a')](function(_0x241c27){var _0x49eab2=_0x3e3d17[_0xa768('0x4a')]['get']({'plain':!![]});if(!_0x49eab2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x49eab2['role']===_0xa768('0x4a')){var _0x1d9c4c=_0x241c27[_0xa768('0x27')]({'plain':!![]});var _0x658155=_0xa768('0x28');return db[_0xa768('0x4b')]['find']({'where':{'name':_0x658155,'userProfileId':_0x49eab2[_0xa768('0x4c')]},'raw':!![]})[_0xa768('0x2a')](function(_0x44fd31){if(_0x44fd31&&_0x44fd31[_0xa768('0x4d')]===0x0){return db['UserProfileResource'][_0xa768('0x48')]({'name':_0x1d9c4c[_0xa768('0x2d')],'resourceId':_0x1d9c4c['id'],'type':_0x44fd31[_0xa768('0x2d')],'sectionId':_0x44fd31['id']},{})['then'](function(){return _0x241c27;});}else{return _0x241c27;}})[_0xa768('0x45')](function(_0x2c26c2){logger['error'](_0xa768('0x4e'),_0x2c26c2);throw _0x2c26c2;});}return _0x241c27;})[_0xa768('0x2a')](respondWithResult(_0x8f6901,0xc9))[_0xa768('0x45')](handleError(_0x8f6901,null));};exports[_0xa768('0x25')]=function(_0x198c66,_0x23840c){if(_0x198c66[_0xa768('0x49')]['id']){delete _0x198c66[_0xa768('0x49')]['id'];}return db[_0xa768('0x30')][_0xa768('0x4f')]({'where':{'id':_0x198c66[_0xa768('0x50')]['id']}})[_0xa768('0x2a')](handleEntityNotFound(_0x23840c,null))['then'](saveUpdates(_0x198c66[_0xa768('0x49')],null))[_0xa768('0x2a')](respondWithResult(_0x23840c,null))[_0xa768('0x45')](handleError(_0x23840c,null));};exports[_0xa768('0x26')]=function(_0x145216,_0x2e32d9){return db[_0xa768('0x30')][_0xa768('0x4f')]({'where':{'id':_0x145216['params']['id']}})['then'](handleEntityNotFound(_0x2e32d9,null))[_0xa768('0x2a')](removeEntity(_0x2e32d9,null))[_0xa768('0x45')](handleError(_0x2e32d9,null));};exports['describe']=function(_0x555536,_0x5d8562){return db['CmCompany'][_0xa768('0x31')]()[_0xa768('0x2a')](respondWithResult(_0x5d8562,null))[_0xa768('0x45')](handleError(_0x5d8562,null));};exports['addContacts']=function(_0x1cc6ba,_0x3e6d88,_0x4b57ba){return db[_0xa768('0x51')][_0xa768('0x4f')]({'where':{'id':_0x1cc6ba[_0xa768('0x50')]['id']}})[_0xa768('0x2a')](handleEntityNotFound(_0x3e6d88,null))[_0xa768('0x2a')](function(_0x3c7bd9){if(_0x3c7bd9){return _0x3c7bd9[_0xa768('0x52')](_0x1cc6ba['body'][_0xa768('0x53')],_[_0xa768('0x54')](_0x1cc6ba[_0xa768('0x49')],[_0xa768('0x53'),'id'])||{});}})[_0xa768('0x2a')](respondWithResult(_0x3e6d88,null))['catch'](handleError(_0x3e6d88,null));};exports[_0xa768('0x55')]=function(_0x28ad9a,_0x10983c,_0x213023){var _0x3bd473={};var _0x258be2={};var _0x57e505;var _0x15e790;return db[_0xa768('0x30')][_0xa768('0x56')]({'where':{'id':_0x28ad9a[_0xa768('0x50')]['id']}})[_0xa768('0x2a')](handleEntityNotFound(_0x10983c,null))[_0xa768('0x2a')](function(_0x34e0a3){if(_0x34e0a3){_0x57e505=_0x34e0a3;_0x258be2['model']=_[_0xa768('0x33')](db[_0xa768('0x51')][_0xa768('0x47')]);_0x258be2[_0xa768('0x34')]=_[_0xa768('0x33')](_0x28ad9a[_0xa768('0x34')]);_0x258be2['filters']=_[_0xa768('0x36')](_0x258be2[_0xa768('0x32')],_0x258be2[_0xa768('0x34')]);_0x3bd473[_0xa768('0x38')]=_[_0xa768('0x36')](_0x258be2['model'],qs[_0xa768('0x37')](_0x28ad9a[_0xa768('0x34')][_0xa768('0x37')]));_0x3bd473[_0xa768('0x38')]=_0x3bd473[_0xa768('0x38')][_0xa768('0x57')]?_0x3bd473[_0xa768('0x38')]:_0x258be2['model'];_0x3bd473[_0xa768('0x3a')]=qs[_0xa768('0x3b')](_0x28ad9a[_0xa768('0x34')][_0xa768('0x3b')]);_0x3bd473[_0xa768('0x3c')]=qs[_0xa768('0x35')](_[_0xa768('0x3d')](_0x28ad9a[_0xa768('0x34')],_0x258be2[_0xa768('0x35')]));if(_0x28ad9a['query']['filter']){_0x3bd473['where']=_[_0xa768('0x3f')](_0x3bd473[_0xa768('0x3c')],{'$or':_['map'](_0x3bd473[_0xa768('0x38')],function(_0x491650){var _0xd3167f={};_0xd3167f[_0x491650]={'$like':'%'+_0x28ad9a['query'][_0xa768('0x3e')]+'%'};return _0xd3167f;})});}_0x3bd473=_[_0xa768('0x3f')]({},_0x3bd473,_0x28ad9a[_0xa768('0x41')]);return _0x57e505[_0xa768('0x55')](_0x3bd473);}})[_0xa768('0x2a')](function(_0x4d1797){if(_0x4d1797){_0x15e790=_0x4d1797['length'];if(!_0x28ad9a[_0xa768('0x34')][_0xa768('0x39')](_0xa768('0x58'))){_0x3bd473[_0xa768('0x20')]=qs[_0xa768('0x20')](_0x28ad9a[_0xa768('0x34')]['limit']);_0x3bd473[_0xa768('0x1e')]=qs['offset'](_0x28ad9a[_0xa768('0x34')][_0xa768('0x1e')]);}return _0x57e505['getContacts'](_0x3bd473);}})[_0xa768('0x2a')](function(_0x17ee26){if(_0x17ee26){return _0x17ee26?{'count':_0x15e790,'rows':_0x17ee26}:null;}})[_0xa768('0x2a')](respondWithResult(_0x10983c,null))[_0xa768('0x45')](handleError(_0x10983c,null));};
\ No newline at end of file
index e8f9d4a..6fb3032 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7cce=['rimraf','../../config/environment','./cmCompany.attributes','exports','define','cm_companies','lodash','util','../../config/logger','api'];(function(_0x348f21,_0x2b3e86){var _0x26d8a0=function(_0x2a1e75){while(--_0x2a1e75){_0x348f21['push'](_0x348f21['shift']());}};_0x26d8a0(++_0x2b3e86);}(_0x7cce,0x15a));var _0xe7cc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7cce[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xe7cc('0x0'));var util=require(_0xe7cc('0x1'));var logger=require(_0xe7cc('0x2'))(_0xe7cc('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xe7cc('0x4'));var config=require(_0xe7cc('0x5'));var attributes=require(_0xe7cc('0x6'));module[_0xe7cc('0x7')]=function(_0x3c042e,_0x7e1df7){return _0x3c042e[_0xe7cc('0x8')]('CmCompany',attributes,{'tableName':_0xe7cc('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfc3d=['api','bluebird','request-promise','path','rimraf','../../config/environment','exports','CmCompany','lodash','util','../../config/logger'];(function(_0x1d1779,_0x284147){var _0x2377e9=function(_0x299f6f){while(--_0x299f6f){_0x1d1779['push'](_0x1d1779['shift']());}};_0x2377e9(++_0x284147);}(_0xfc3d,0xa2));var _0xdfc3=function(_0x58d669,_0x2ed55c){_0x58d669=_0x58d669-0x0;var _0x1a4ea0=_0xfc3d[_0x58d669];return _0x1a4ea0;};'use strict';var _=require(_0xdfc3('0x0'));var util=require(_0xdfc3('0x1'));var logger=require(_0xdfc3('0x2'))(_0xdfc3('0x3'));var moment=require('moment');var BPromise=require(_0xdfc3('0x4'));var rp=require(_0xdfc3('0x5'));var fs=require('fs');var path=require(_0xdfc3('0x6'));var rimraf=require(_0xdfc3('0x7'));var config=require(_0xdfc3('0x8'));var attributes=require('./cmCompany.attributes');module[_0xdfc3('0x9')]=function(_0x1c2808,_0x1d66bb){return _0x1c2808['define'](_0xdfc3('0xa'),attributes,{'tableName':'cm_companies','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3a79ede..abefd58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66e6=['bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','CmCompany,\x20%s,\x20%s','request\x20sent','debug','CmCompany,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment'];(function(_0x2e0a4e,_0x522471){var _0x414f7b=function(_0x31a444){while(--_0x31a444){_0x2e0a4e['push'](_0x2e0a4e['shift']());}};_0x414f7b(++_0x522471);}(_0x66e6,0x10f));var _0x666e=function(_0xb3cf38,_0x5f03af){_0xb3cf38=_0xb3cf38-0x0;var _0x20a943=_0x66e6[_0xb3cf38];return _0x20a943;};'use strict';var _=require(_0x666e('0x0'));var util=require('util');var moment=require(_0x666e('0x1'));var BPromise=require(_0x666e('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x666e('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x666e('0x4'))(_0x666e('0x5'));var config=require(_0x666e('0x6'));var jayson=require(_0x666e('0x7'));var client=jayson['client'][_0x666e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x4d13d9,_0x441cd9,_0x350f3d){return new BPromise(function(_0x2e4980,_0x289aa3){return client[_0x666e('0x9')](_0x4d13d9,_0x350f3d)[_0x666e('0xa')](function(_0x5acca0){logger[_0x666e('0xb')](_0x666e('0xc'),_0x441cd9,_0x666e('0xd'));logger[_0x666e('0xe')](_0x666e('0xf'),_0x441cd9,_0x666e('0xd'),JSON['stringify'](_0x5acca0));if(_0x5acca0[_0x666e('0x10')]){if(_0x5acca0[_0x666e('0x10')][_0x666e('0x11')]===0x1f4){logger['error'](_0x666e('0xc'),_0x441cd9,_0x5acca0[_0x666e('0x10')][_0x666e('0x12')]);return _0x289aa3(_0x5acca0[_0x666e('0x10')]['message']);}logger[_0x666e('0x10')]('CmCompany,\x20%s,\x20%s',_0x441cd9,_0x5acca0[_0x666e('0x10')][_0x666e('0x12')]);return _0x2e4980(_0x5acca0[_0x666e('0x10')][_0x666e('0x12')]);}else{logger[_0x666e('0xb')](_0x666e('0xc'),_0x441cd9,_0x666e('0xd'));_0x2e4980(_0x5acca0[_0x666e('0x13')][_0x666e('0x12')]);}})[_0x666e('0x14')](function(_0x5b71c8){logger[_0x666e('0x10')](_0x666e('0xc'),_0x441cd9,_0x5b71c8);_0x289aa3(_0x5b71c8);});});}
\ No newline at end of file
+var _0x5ecc=['message','result','catch','lodash','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','CmCompany,\x20%s,\x20%s','debug','CmCompany,\x20%s,\x20%s,\x20%s','request\x20sent','error','code'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x5ecc,0x193));var _0xc5ec=function(_0x986c5a,_0xd6224e){_0x986c5a=_0x986c5a-0x0;var _0x2606db=_0x5ecc[_0x986c5a];return _0x2606db;};'use strict';var _=require(_0xc5ec('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc5ec('0x1'));var db=require(_0xc5ec('0x2'))['db'];var utils=require(_0xc5ec('0x3'));var logger=require('../../config/logger')(_0xc5ec('0x4'));var config=require(_0xc5ec('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xc5ec('0x6')][_0xc5ec('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xe66ed3,_0x3e4d92,_0xd67a6d){return new BPromise(function(_0x361dba,_0x2697ca){return client[_0xc5ec('0x8')](_0xe66ed3,_0xd67a6d)[_0xc5ec('0x9')](function(_0x145a5e){logger[_0xc5ec('0xa')](_0xc5ec('0xb'),_0x3e4d92,'request\x20sent');logger[_0xc5ec('0xc')](_0xc5ec('0xd'),_0x3e4d92,_0xc5ec('0xe'),JSON['stringify'](_0x145a5e));if(_0x145a5e[_0xc5ec('0xf')]){if(_0x145a5e[_0xc5ec('0xf')][_0xc5ec('0x10')]===0x1f4){logger['error'](_0xc5ec('0xb'),_0x3e4d92,_0x145a5e[_0xc5ec('0xf')][_0xc5ec('0x11')]);return _0x2697ca(_0x145a5e[_0xc5ec('0xf')][_0xc5ec('0x11')]);}logger[_0xc5ec('0xf')](_0xc5ec('0xb'),_0x3e4d92,_0x145a5e[_0xc5ec('0xf')][_0xc5ec('0x11')]);return _0x361dba(_0x145a5e['error'][_0xc5ec('0x11')]);}else{logger[_0xc5ec('0xa')](_0xc5ec('0xb'),_0x3e4d92,_0xc5ec('0xe'));_0x361dba(_0x145a5e[_0xc5ec('0x12')][_0xc5ec('0x11')]);}})[_0xc5ec('0x13')](function(_0x2def51){logger[_0xc5ec('0xf')](_0xc5ec('0xb'),_0x3e4d92,_0x2def51);_0x2697ca(_0x2def51);});});}
\ No newline at end of file
index b31a81a..00f3118 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdec=['describe','/:id','show','getContacts','post','create','/:id/contacts','addContacts','put','update','delete','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCompany.controller','get','isAuthenticated','index','/describe'];(function(_0x51f515,_0x3f53f4){var _0x40ad3b=function(_0x133ff4){while(--_0x133ff4){_0x51f515['push'](_0x51f515['shift']());}};_0x40ad3b(++_0x3f53f4);}(_0xbdec,0x93));var _0xcbde=function(_0x13bc26,_0x1aa293){_0x13bc26=_0x13bc26-0x0;var _0x3853c1=_0xbdec[_0x13bc26];return _0x3853c1;};'use strict';var multer=require(_0xcbde('0x0'));var util=require(_0xcbde('0x1'));var path=require(_0xcbde('0x2'));var timeout=require(_0xcbde('0x3'));var express=require(_0xcbde('0x4'));var router=express[_0xcbde('0x5')]();var fs_extra=require(_0xcbde('0x6'));var auth=require(_0xcbde('0x7'));var interaction=require(_0xcbde('0x8'));var config=require(_0xcbde('0x9'));var controller=require(_0xcbde('0xa'));router[_0xcbde('0xb')]('/',auth[_0xcbde('0xc')](),controller[_0xcbde('0xd')]);router[_0xcbde('0xb')](_0xcbde('0xe'),auth[_0xcbde('0xc')](),controller[_0xcbde('0xf')]);router[_0xcbde('0xb')](_0xcbde('0x10'),auth[_0xcbde('0xc')](),controller[_0xcbde('0x11')]);router['get']('/:id/contacts',auth[_0xcbde('0xc')](),controller[_0xcbde('0x12')]);router[_0xcbde('0x13')]('/',auth[_0xcbde('0xc')](),controller[_0xcbde('0x14')]);router[_0xcbde('0x13')](_0xcbde('0x15'),auth[_0xcbde('0xc')](),controller[_0xcbde('0x16')]);router[_0xcbde('0x17')](_0xcbde('0x10'),auth[_0xcbde('0xc')](),controller[_0xcbde('0x18')]);router[_0xcbde('0x19')]('/:id',auth[_0xcbde('0xc')](),controller[_0xcbde('0x1a')]);module['exports']=router;
\ No newline at end of file
+var _0x5111=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCompany.controller','isAuthenticated','get','/describe','describe','/:id','/:id/contacts','getContacts','post','addContacts','update','exports','util','path','express'];(function(_0x1b6484,_0x5831e5){var _0x2a093a=function(_0x6dc688){while(--_0x6dc688){_0x1b6484['push'](_0x1b6484['shift']());}};_0x2a093a(++_0x5831e5);}(_0x5111,0x1c9));var _0x1511=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x5111[_0x4a9fb1];return _0x348672;};'use strict';var multer=require('multer');var util=require(_0x1511('0x0'));var path=require(_0x1511('0x1'));var timeout=require('connect-timeout');var express=require(_0x1511('0x2'));var router=express[_0x1511('0x3')]();var fs_extra=require(_0x1511('0x4'));var auth=require(_0x1511('0x5'));var interaction=require(_0x1511('0x6'));var config=require(_0x1511('0x7'));var controller=require(_0x1511('0x8'));router['get']('/',auth[_0x1511('0x9')](),controller['index']);router[_0x1511('0xa')](_0x1511('0xb'),auth['isAuthenticated'](),controller[_0x1511('0xc')]);router[_0x1511('0xa')](_0x1511('0xd'),auth[_0x1511('0x9')](),controller['show']);router['get'](_0x1511('0xe'),auth[_0x1511('0x9')](),controller[_0x1511('0xf')]);router['post']('/',auth[_0x1511('0x9')](),controller['create']);router[_0x1511('0x10')](_0x1511('0xe'),auth[_0x1511('0x9')](),controller[_0x1511('0x11')]);router['put'](_0x1511('0xd'),auth[_0x1511('0x9')](),controller[_0x1511('0x12')]);router['delete'](_0x1511('0xd'),auth[_0x1511('0x9')](),controller['destroy']);module[_0x1511('0x13')]=router;
\ No newline at end of file
index 6315769..aae33f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5feb=['lodash','sequelize','exports','STRING','TEXT','INTEGER','DATE','NOW'];(function(_0x3b43f1,_0x14ba64){var _0x2b60cc=function(_0xc03b74){while(--_0xc03b74){_0x3b43f1['push'](_0x3b43f1['shift']());}};_0x2b60cc(++_0x14ba64);}(_0x5feb,0x1d0));var _0xb5fe=function(_0x12d773,_0x253abd){_0x12d773=_0x12d773-0x0;var _0x152e37=_0x5feb[_0x12d773];return _0x152e37;};'use strict';var _=require(_0xb5fe('0x0'));var Sequelize=require(_0xb5fe('0x1'));module[_0xb5fe('0x2')]={'firstName':{'type':Sequelize[_0xb5fe('0x3')],'allowNull':![]},'lastName':{'type':Sequelize['STRING']},'street':{'type':Sequelize[_0xb5fe('0x3')]},'postalCode':{'type':Sequelize[_0xb5fe('0x3')]},'city':{'type':Sequelize[_0xb5fe('0x3')]},'country':{'type':Sequelize[_0xb5fe('0x3')]},'dateOfBirth':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xb5fe('0x4')]},'phone':{'type':Sequelize[_0xb5fe('0x3')]},'mobile':{'type':Sequelize[_0xb5fe('0x3')]},'fax':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0xb5fe('0x3')]},'url':{'type':Sequelize[_0xb5fe('0x3')]},'facebook':{'type':Sequelize[_0xb5fe('0x3')]},'fb_data':{'type':Sequelize[_0xb5fe('0x3')]},'twitter':{'type':Sequelize[_0xb5fe('0x3')]},'skype':{'type':Sequelize[_0xb5fe('0x3')]},'teams':{'type':Sequelize[_0xb5fe('0x3')]},'viber':{'type':Sequelize[_0xb5fe('0x3')]},'line':{'type':Sequelize[_0xb5fe('0x3')]},'wechat':{'type':Sequelize[_0xb5fe('0x3')]},'telegram':{'type':Sequelize[_0xb5fe('0x3')]},'UserId':{'type':Sequelize[_0xb5fe('0x5')]},'AdditionalPhones':{'type':Sequelize[_0xb5fe('0x3')]},'priority':{'type':Sequelize[_0xb5fe('0x5')](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize[_0xb5fe('0x6')],'defaultValue':Sequelize[_0xb5fe('0x7')]},'dialTimezone':{'type':Sequelize[_0xb5fe('0x3')]},'utcOffset':{'type':Sequelize[_0xb5fe('0x5')]}};
\ No newline at end of file
+var _0x5d3c=['INTEGER','UNSIGNED','lodash','exports','STRING'];(function(_0x4ea413,_0x51ff3a){var _0x51cf25=function(_0x3c6456){while(--_0x3c6456){_0x4ea413['push'](_0x4ea413['shift']());}};_0x51cf25(++_0x51ff3a);}(_0x5d3c,0x1bf));var _0xc5d3=function(_0x161521,_0x317f63){_0x161521=_0x161521-0x0;var _0x55fc48=_0x5d3c[_0x161521];return _0x55fc48;};'use strict';var _=require(_0xc5d3('0x0'));var Sequelize=require('sequelize');module[_0xc5d3('0x1')]={'firstName':{'type':Sequelize[_0xc5d3('0x2')],'allowNull':![]},'lastName':{'type':Sequelize['STRING']},'street':{'type':Sequelize['STRING']},'postalCode':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0xc5d3('0x2')]},'country':{'type':Sequelize[_0xc5d3('0x2')]},'dateOfBirth':{'type':Sequelize[_0xc5d3('0x2')]},'description':{'type':Sequelize['TEXT']},'phone':{'type':Sequelize[_0xc5d3('0x2')]},'mobile':{'type':Sequelize['STRING']},'fax':{'type':Sequelize['STRING']},'email':{'type':Sequelize['STRING']},'url':{'type':Sequelize[_0xc5d3('0x2')]},'facebook':{'type':Sequelize['STRING']},'fb_data':{'type':Sequelize[_0xc5d3('0x2')]},'twitter':{'type':Sequelize[_0xc5d3('0x2')]},'skype':{'type':Sequelize[_0xc5d3('0x2')]},'teams':{'type':Sequelize[_0xc5d3('0x2')]},'viber':{'type':Sequelize['STRING']},'line':{'type':Sequelize['STRING']},'wechat':{'type':Sequelize['STRING']},'telegram':{'type':Sequelize[_0xc5d3('0x2')]},'UserId':{'type':Sequelize['INTEGER']},'AdditionalPhones':{'type':Sequelize[_0xc5d3('0x2')]},'priority':{'type':Sequelize[_0xc5d3('0x3')](0x2)[_0xc5d3('0x4')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':Sequelize['NOW']},'dialTimezone':{'type':Sequelize[_0xc5d3('0x2')]},'utcOffset':{'type':Sequelize[_0xc5d3('0x3')]}};
\ No newline at end of file
index 3744110..20e141b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5028=['phone','contact\x20phone\x20exists','PHONE','CmHopperAdditionalPhone','item','literal','ItemType.OrderBy','bulkCreate','getAdditionalPhones','`ItemType`.OrderBy','duplicateAdditionalPhones','fromContactId','CmContactId','toContactId','rescheduleAdditionalPhones','getHoppers','ContactId','includeAll','include','getHopperHistories','getHopperFinals','CmHopperFinal','getJscriptySessions','No\x20ListId\x20specified','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','binding_keys','Incorrect\x20binding\x20parameters\x20passed!','zipObject','No\x20phone\x20column\x20specified','root','server/files/tmp','file','chmodSync','child_process','fork','File\x20uploaded\x20correctly!','pid','upload','createReadStream','meta','agent','binding','firstName','No\x20firstName\x20column\x20specified','stringify','message','start\x20child\x20process\x20correctly!','exit','error\x20child\x20process','importUpdates','../../components/import/cm/csvUpdates','getJourney','chat','openchannel','fax','whatsapp','-createdAt','includes','channel','toLowerCase','Invalid\x20channel','parse','isValid','Invalid\x20date\x20for\x20range\x20from\x20filter','Invalid\x20date\x20for\x20range\x20to\x20filter','uniqueid','source','starttime','endtime','duration','note','userDisposition','userSecondDisposition','userThirdDisposition','UserId','createdAt','DESC','range','findAndCountAll','fullname','startCase','disposition','secondDisposition','thirdDisposition','Account','Owner','browserName','customerIp','customerPort','ratingType','referer','mail','substatus','externalUrl','threadId','flatten','sortBy','reverse','slice','moment','bluebird','util','lodash','squel','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/environment/shared','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','register','status','json','undefined','limit','count','offset','Content-Range','update','then','destroy','end','sendStatus','error','stack','name','send','index','CmContact','describe','length','keys','startsWith','push','findOne','cf_','all','fieldType','type','model','query','intersection','attributes','fields','nolimit','sort','filters','pick','select','field','color','from','tools_tags','cm_contacts','cm_user_has_contacts','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','left_join','where','c.deletedAt\x20IS\x20NULL','expr','search','parseSearch','sqlOperator','conditions','find','Tag','value','split','map','forEach','User','and','uc.UserId\x20=\x20?','dateOfBirth','datetime','castTo','buildExpression','hasOwnProperty','filter','isNil','Contact','isEmpty','c.ListId\x20IN\x20?','concat','CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?','\x20=\x20?','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','replace','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?','group','c.id','Sequelize','QueryTypes','clone','order','t.id\x20IN\x20?','resolve','user','c.ListId\x20IS\x20NULL','role','ListId','sequelize','toString','keyBy','merge','c.firstName','c.phone','c.fax','c.email','c.ListId','c.createdAt','c.deletedAt','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','catch','params','tags','displayName','analytics','columnName','alias','custom','body','get','mergeWith','join','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','[CmContact][merge][destroy][CmHopper],\x20%s','create','ChatInteraction','ChatMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxInteraction','OpenchannelInteraction','OpenchannelMessage','CmContactHasItem','CmHopperHistory','ReportAgentPreview','VoiceCallReport','FaxQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','dialTimezone','utcOffset','timezones','additionalPhones','duplicates','findOrCreate','spread','show','Phones','ContactItemType','ItemType','Phones.OrderBy','$and','CmCustomField','cf_%d','findAll','omit','pickBy','format','table','toParam','CmHopper','rawAttributes','options','getTags','setTags','ids','setAdditionalPhones','OrderBy','items','item_types','ItemTypeId','description'];(function(_0x50e7a4,_0x35bfbf){var _0x35c692=function(_0xcfe583){while(--_0xcfe583){_0x50e7a4['push'](_0x50e7a4['shift']());}};_0x35c692(++_0x35bfbf);}(_0x5028,0x66));var _0x8502=function(_0x4d33a2,_0x4108da){_0x4d33a2=_0x4d33a2-0x0;var _0x42cece=_0x5028[_0x4d33a2];return _0x42cece;};'use strict';var moment=require(_0x8502('0x0'));var BPromise=require(_0x8502('0x1'));var util=require(_0x8502('0x2'));var path=require('path');var fs=require('fs');var _=require(_0x8502('0x3'));var squel=require(_0x8502('0x4'));var Papa=require('papaparse');var Redis=require(_0x8502('0x5'));var qs=require(_0x8502('0x6'));var as=require(_0x8502('0x7'));var logger=require('../../config/logger')(_0x8502('0x8'));var config=require(_0x8502('0x9'));var shared=require(_0x8502('0xa'));var db=require('../../mysqldb')['db'];config[_0x8502('0xb')]=_[_0x8502('0xc')](config['redis'],{'host':_0x8502('0xd'),'port':0x18eb});var socket=require(_0x8502('0xe'))(new Redis(config[_0x8502('0xb')]));require(_0x8502('0xf'))[_0x8502('0x10')](socket);function respondWithResult(_0x11637d,_0x1ba02e){_0x1ba02e=_0x1ba02e||0xc8;return function(_0x3c88e3){if(_0x3c88e3){return _0x11637d[_0x8502('0x11')](_0x1ba02e)[_0x8502('0x12')](_0x3c88e3);}};}function respondWithFilteredResult(_0x12d70f,_0x108214){return function(_0x1e2b52){if(_0x1e2b52){var _0x1a5d0d=typeof _0x108214['offset']===_0x8502('0x13')&&typeof _0x108214[_0x8502('0x14')]===_0x8502('0x13');var _0x35e185=_0x1e2b52[_0x8502('0x15')];var _0x12d61a=_0x1a5d0d?0x0:_0x108214[_0x8502('0x16')];var _0x33e9e8=_0x1a5d0d?_0x1e2b52[_0x8502('0x15')]:_0x108214[_0x8502('0x16')]+_0x108214[_0x8502('0x14')];var _0x5a96f2;if(_0x33e9e8>=_0x35e185){_0x33e9e8=_0x35e185;_0x5a96f2=0xc8;}else{_0x5a96f2=0xce;}_0x12d70f[_0x8502('0x11')](_0x5a96f2);return _0x12d70f['set'](_0x8502('0x17'),_0x12d61a+'-'+_0x33e9e8+'/'+_0x35e185)['json'](_0x1e2b52);}return null;};}function saveUpdates(_0x552bcd){return function(_0x583544){if(_0x583544){return _0x583544[_0x8502('0x18')](_0x552bcd)[_0x8502('0x19')](function(_0x3fc69a){return _0x3fc69a;});}return null;};}function removeEntity(_0x5618ba){return function(_0x3d9119){if(_0x3d9119){return _0x3d9119[_0x8502('0x1a')]()[_0x8502('0x19')](function(){_0x5618ba[_0x8502('0x11')](0xcc)[_0x8502('0x1b')]();});}};}function handleEntityNotFound(_0x28b571){return function(_0x481916){if(!_0x481916){_0x28b571[_0x8502('0x1c')](0x194);}return _0x481916;};}function handleError(_0x2e898f,_0x7ffa79){_0x7ffa79=_0x7ffa79||0x1f4;return function(_0x4613fc){logger[_0x8502('0x1d')](_0x4613fc[_0x8502('0x1e')]);if(_0x4613fc['name']){delete _0x4613fc[_0x8502('0x1f')];}_0x2e898f['status'](_0x7ffa79)[_0x8502('0x20')](_0x4613fc);};}exports[_0x8502('0x21')]=function(_0x54dc45,_0x2c14e4){var _0x4f687e={},_0x9badf2={},_0x4929be={'count':0x0,'rows':[]};return db[_0x8502('0x22')][_0x8502('0x23')]()['then'](function(_0x1ff279){var _0x4a9a75=[];for(var _0x45d5a8=0x0;_0x45d5a8<Object['keys'](_0x1ff279)[_0x8502('0x24')];_0x45d5a8++){var _0x33dfdb=Object[_0x8502('0x25')](_0x1ff279)[_0x45d5a8];if(_[_0x8502('0x26')](_0x33dfdb,'cf_')){_0x4a9a75[_0x8502('0x27')](db['CmCustomField'][_0x8502('0x28')]({'where':{'id':_['trimStart'](_0x33dfdb,_0x8502('0x29'))},'raw':!![]}));}}return BPromise[_0x8502('0x2a')](_0x4a9a75)['then'](function(_0xbb5954){for(var _0xab4552=0x0;_0xab4552<_0xbb5954[_0x8502('0x24')];_0xab4552++){if(_0xbb5954[_0xab4552]){var _0x20d81b=_0x8502('0x29')+_0xbb5954[_0xab4552]['id'];var _0x31461b=_0x1ff279[_0x20d81b];_0x31461b[_0x8502('0x2b')]=_0xbb5954[_0xab4552][_0x8502('0x2c')];}}return _0x1ff279;});})[_0x8502('0x19')](function(_0xa0037f){_0x9badf2[_0x8502('0x2d')]=_[_0x8502('0x25')](_0xa0037f);_0x9badf2[_0x8502('0x2e')]=_[_0x8502('0x25')](_0x54dc45[_0x8502('0x2e')]);_0x9badf2['filters']=_[_0x8502('0x2f')](_0x9badf2[_0x8502('0x2d')],_0x9badf2[_0x8502('0x2e')]);_0x4f687e[_0x8502('0x30')]=_[_0x8502('0x2f')](_0x9badf2[_0x8502('0x2d')],qs[_0x8502('0x31')](_0x54dc45[_0x8502('0x2e')]['fields']));_0x4f687e[_0x8502('0x30')]=_0x4f687e[_0x8502('0x30')][_0x8502('0x24')]?_0x4f687e[_0x8502('0x30')]:_0x9badf2[_0x8502('0x2d')];if(!_0x54dc45[_0x8502('0x2e')]['hasOwnProperty'](_0x8502('0x32'))){_0x4f687e['limit']=qs[_0x8502('0x14')](_0x54dc45[_0x8502('0x2e')]['limit']);_0x4f687e[_0x8502('0x16')]=qs[_0x8502('0x16')](_0x54dc45[_0x8502('0x2e')][_0x8502('0x16')]);}_0x4f687e['order']=qs['sort'](_0x54dc45[_0x8502('0x2e')][_0x8502('0x33')]);_0x4f687e['where']=qs[_0x8502('0x34')](_[_0x8502('0x35')](_0x54dc45[_0x8502('0x2e')],_0x9badf2['filters']),_0xa0037f);var _0x3cfe9e=[];var _0x5cbcbf=squel[_0x8502('0x36')]()[_0x8502('0x37')]('id')[_0x8502('0x37')](_0x8502('0x1f'))[_0x8502('0x37')](_0x8502('0x38'))[_0x8502('0x39')](_0x8502('0x3a'));var _0x5b0ea6=squel[_0x8502('0x36')]()[_0x8502('0x39')](_0x8502('0x3b'),'c')['left_join'](_0x8502('0x3c'),'uc','uc.CmContactId\x20=\x20c.id')['left_join'](_0x8502('0x3d'),'ct',_0x8502('0x3e'))[_0x8502('0x3f')](_0x8502('0x3a'),'t','t.id\x20=\x20ct.TagId')[_0x8502('0x40')](_0x8502('0x41'));var _0x42327a=squel['expr']();var _0x45fd76=[];var _0x54faf4=squel[_0x8502('0x42')]();var _0x4abf20;if(_0x54dc45[_0x8502('0x2e')][_0x8502('0x43')]){_0x4abf20=as[_0x8502('0x44')](_0x54dc45[_0x8502('0x2e')]['search']);var _0x6943b1=_0x4abf20[_0x8502('0x45')];for(var _0x3eef0a=0x0;_0x3eef0a<_0x4abf20[_0x8502('0x46')][_0x8502('0x24')];_0x3eef0a++){var _0x32408d=_0x4abf20[_0x8502('0x46')][_0x3eef0a];var _0x142511='c';var _0x3cd660=_(_0xa0037f)[_0x8502('0x25')]()[_0x8502('0x47')](function(_0x539a5d){return _0x539a5d===_0x32408d['field'];});if(_0x3cd660)_0x3cd660=_0xa0037f[_0x32408d['field']];if(!_0x3cd660){if(_0x32408d[_0x8502('0x37')]===_0x8502('0x48')){var _0x1f2255=_0x32408d[_0x8502('0x49')][_0x8502('0x4a')](',')[_0x8502('0x4b')](function(_0xeff8f6){return Number(_0xeff8f6);});_0x1f2255[_0x8502('0x4c')](function(_0x230c77){_0x54faf4['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x230c77+',%');});_0x45fd76=_['union'](_0x45fd76,_0x1f2255);}else if(_0x32408d[_0x8502('0x37')]===_0x8502('0x4d')){_0x42327a[_0x8502('0x4e')](_0x8502('0x4f'),_0x32408d[_0x8502('0x49')]);}}else{if(_0x32408d[_0x8502('0x37')]===_0x8502('0x50')||_0x3cd660[_0x8502('0x2b')]===_0x8502('0x51'))_0x32408d[_0x8502('0x52')]='DATE';var _0x596ece=as[_0x8502('0x53')](_0x142511,_0x3cd660[_0x8502('0x2c')],_0x32408d);_0x42327a[_0x6943b1](_0x596ece['text'],_0x596ece['value']['start'],_0x596ece[_0x8502('0x49')][_0x8502('0x1b')]);}}}else{var _0x18b3f4=_(Object['keys'](_0x54dc45[_0x8502('0x2e')]))[_0x8502('0x4b')](function(_0x519762){return _0xa0037f[_0x8502('0x54')](_0x519762)?_0x519762:undefined;})[_0x8502('0x55')](function(_0x7d6e45){return!_[_0x8502('0x56')](_0x7d6e45);})[_0x8502('0x49')]();if(_0x54dc45['query'][_0x8502('0x57')])_0x18b3f4[_0x8502('0x27')](_0x8502('0x57'));if(!_[_0x8502('0x58')](_0x18b3f4)){_0x18b3f4[_0x8502('0x4c')](function(_0x53e45c){if(_0x53e45c==='ListId'){_0x5b0ea6[_0x8502('0x40')](_0x8502('0x59'),[][_0x8502('0x5a')](_0x54dc45[_0x8502('0x2e')][_0x53e45c]));}else if(_0x53e45c==='Contact'){var _0x24d784='%'+_0x54dc45[_0x8502('0x2e')][_0x53e45c]+'%';_0x5b0ea6[_0x8502('0x40')](_0x8502('0x5b'),_0x24d784);}else{_0x5b0ea6[_0x8502('0x40')]('c.'+_0x53e45c+_0x8502('0x5c'),_0x54dc45['query'][_0x53e45c]);}});}if(_0x54dc45['query'][_0x8502('0x5d')]){_0x45fd76=_[_0x8502('0x5e')](_0x54dc45[_0x8502('0x2e')][_0x8502('0x5d')])?_0x54dc45[_0x8502('0x2e')][_0x8502('0x5d')]:new Array(_0x54dc45[_0x8502('0x2e')][_0x8502('0x5d')]);_0x45fd76[_0x8502('0x4c')](function(_0xb14aff){_0x54faf4['or'](_0x8502('0x5f'),'%,'+_0xb14aff+',%');});}if(_0x54dc45[_0x8502('0x2e')]['filter']){var _0x5e0b6f=_0x54dc45['query'][_0x8502('0x55')][_0x8502('0x60')]('\x5c','\x5c\x5c')[_0x8502('0x60')](/'/g,'\x27\x27');if(_0x5e0b6f['split']('\x20')[_0x8502('0x24')]>0x1){_0x42327a['or']('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x5e0b6f),null);}else{if(qs['isNumeric'](_0x5e0b6f)){_0x42327a['or'](_0x8502('0x61'),_0x5e0b6f+'%');_0x42327a['or'](_0x8502('0x62'),_0x5e0b6f+'%');_0x42327a['or'](_0x8502('0x63'),_0x5e0b6f+'%');_0x42327a['or'](_0x8502('0x64'),_0x5e0b6f+'%');}else if(qs[_0x8502('0x65')](_0x5e0b6f)){_0x42327a['or'](_0x8502('0x66'),_0x5e0b6f+'%');}else{_0x42327a['or'](_0x8502('0x67'),'%'+_0x5e0b6f+'%');_0x42327a['or'](_0x8502('0x68'),'%'+_0x5e0b6f+'%');_0x42327a['or'](_0x8502('0x66'),'%'+_0x5e0b6f+'%');}}}}_0x5b0ea6[_0x8502('0x40')](_0x42327a);_0x5b0ea6[_0x8502('0x69')](_0x8502('0x6a'));var _0x3d6d23={'type':db[_0x8502('0x6b')][_0x8502('0x6c')]['SELECT'],'raw':!![]};var _0x20cdf7=_0x5b0ea6[_0x8502('0x6d')]()[_0x8502('0x37')](_0x8502('0x6a'));if(_0x4f687e[_0x8502('0x6e')]){_0x4f687e['order']['forEach'](function(_0x5c03c8){_0x5b0ea6[_0x8502('0x6e')]('c.'+_0x5c03c8[0x0],_0x5c03c8[0x1]==='DESC'?![]:!![]);});}if(!_[_0x8502('0x58')](_0x45fd76)){_0x5b0ea6['having'](_0x54faf4);_0x20cdf7['where'](_0x8502('0x6f'),_0x45fd76);}BPromise[_0x8502('0x70')]()[_0x8502('0x19')](function(){if(!_0x4abf20)return;if(_0x54dc45[_0x8502('0x71')]['role']!=='agent')return;if(!_['some'](_0x4abf20[_0x8502('0x46')],[_0x8502('0x37'),'User'])){return _0x54dc45['user']['getLists']({'attributes':['id'],'raw':!![]})[_0x8502('0x19')](function(_0x2363fc){if(_[_0x8502('0x58')](_0x2363fc)){_0x20cdf7['where'](_0x8502('0x72'));_0x5b0ea6['where']('c.ListId\x20IS\x20NULL');}else{_0x20cdf7[_0x8502('0x40')]('c.ListId\x20IN\x20?',_[_0x8502('0x4b')](_0x2363fc,'id'));_0x5b0ea6[_0x8502('0x40')](_0x8502('0x59'),_[_0x8502('0x4b')](_0x2363fc,'id'));}});}})['then'](function(){if(_0x54dc45[_0x8502('0x71')][_0x8502('0x73')]==='agent'&&!_0x4abf20&&!_0x54dc45[_0x8502('0x2e')][_0x8502('0x74')])return[];return db[_0x8502('0x75')][_0x8502('0x2e')](_0x20cdf7[_0x8502('0x76')](),_0x3d6d23);})['then'](function(_0x39e701){_0x4929be[_0x8502('0x15')]=_0x39e701[_0x8502('0x24')];if(_0x4929be['count']===0x0)return[];return db['sequelize']['query'](_0x5cbcbf[_0x8502('0x76')](),_0x3d6d23)[_0x8502('0x19')](function(_0x471093){_0x3cfe9e=_[_0x8502('0x77')](_0x471093,'id');_0x3d6d23=_[_0x8502('0x78')](_0x3d6d23,{'model':db[_0x8502('0x22')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x54dc45['query'][_0x8502('0x31')]){_0x4f687e[_0x8502('0x30')][_0x8502('0x4c')](function(_0x3b146e){_0x5b0ea6[_0x8502('0x37')]('c.'+_0x3b146e);});}else{_0x5b0ea6['field'](_0x8502('0x6a'));_0x5b0ea6['field'](_0x8502('0x79'));_0x5b0ea6[_0x8502('0x37')]('c.lastName');_0x5b0ea6[_0x8502('0x37')](_0x8502('0x7a'));_0x5b0ea6['field']('c.mobile');_0x5b0ea6[_0x8502('0x37')](_0x8502('0x7b'));_0x5b0ea6[_0x8502('0x37')](_0x8502('0x7c'));_0x5b0ea6[_0x8502('0x37')](_0x8502('0x7d'));_0x5b0ea6[_0x8502('0x37')](_0x8502('0x7e'));_0x5b0ea6[_0x8502('0x37')](_0x8502('0x7f'));_0x5b0ea6[_0x8502('0x37')]('c.CompanyId');_0x5b0ea6[_0x8502('0x37')](_0x8502('0x80'),_0x8502('0x81'));}if(_0x4f687e['limit'])_0x5b0ea6[_0x8502('0x14')](_0x4f687e[_0x8502('0x14')]);if(_0x4f687e['offset'])_0x5b0ea6[_0x8502('0x16')](_0x4f687e[_0x8502('0x16')]);return db[_0x8502('0x75')][_0x8502('0x2e')](_0x5b0ea6[_0x8502('0x76')](),_0x3d6d23);});})['then'](function(_0x3f8302){_0x3f8302[_0x8502('0x4c')](function(_0x43b982){if(_0x43b982[_0x8502('0x81')]){_0x43b982['Tags']=[];_0x43b982[_0x8502('0x81')][_0x8502('0x4a')](',')[_0x8502('0x4c')](function(_0xc2142e){_0x43b982[_0x8502('0x82')]['push'](_0x3cfe9e[_0xc2142e]);});}delete _0x43b982[_0x8502('0x81')];});_0x4929be[_0x8502('0x83')]=_0x3f8302;return _0x4929be;})[_0x8502('0x19')](respondWithFilteredResult(_0x2c14e4,_0x4f687e));})[_0x8502('0x84')](handleError(_0x2c14e4,null));};exports[_0x8502('0x1a')]=function(_0x32638a,_0x7ace09){return db[_0x8502('0x22')][_0x8502('0x47')]({'where':{'id':_0x32638a[_0x8502('0x85')]['id']}})[_0x8502('0x19')](handleEntityNotFound(_0x7ace09,null))[_0x8502('0x19')](removeEntity(_0x7ace09,null))['catch'](handleError(_0x7ace09,null));};exports['describe']=function(_0x5d1614,_0x4c462a){return db[_0x8502('0x22')][_0x8502('0x23')]()[_0x8502('0x19')](function(_0x501445){delete _0x501445[_0x8502('0x86')];for(var _0x19ab9e=0x0;_0x19ab9e<Object['keys'](_0x501445)['length'];_0x19ab9e++){var _0x59aae9=Object[_0x8502('0x25')](_0x501445)[_0x19ab9e];if(!_[_0x8502('0x26')](_0x59aae9,_0x8502('0x29'))){_0x501445[_0x59aae9]['columnName']=_0x59aae9;_0x501445[_0x59aae9][_0x8502('0x87')]=_0x59aae9;}}return _0x501445;})['then'](function(_0x5970f1){var _0x4dca53={'where':Boolean(_0x5d1614['query'][_0x8502('0x88')])===!![]?undefined:{'$or':[{'ListId':_0x5d1614['query']['id']},{'ListId':null}]},'raw':!![]};return db['CmCustomField']['findAll'](_0x4dca53)[_0x8502('0x19')](function(_0x4c3a0b){for(var _0x385902=0x0;_0x385902<_0x4c3a0b['length'];_0x385902++){var _0x4462d8=_0x8502('0x29')+_0x4c3a0b[_0x385902]['id'];_0x5970f1[_0x4462d8][_0x8502('0x89')]=_0x4462d8;_0x5970f1[_0x4462d8][_0x8502('0x87')]=_0x4c3a0b[_0x385902][_0x8502('0x8a')];_0x5970f1[_0x4462d8][_0x8502('0x8b')]={'type':_0x4c3a0b[_0x385902][_0x8502('0x2c')],'values':_0x4c3a0b[_0x385902]['values']};}Object[_0x8502('0x25')](_0x5970f1)[_0x8502('0x4c')](function(_0x4c78b3){if(!_0x5970f1[_0x4c78b3][_0x8502('0x54')](_0x8502('0x89'))){delete _0x5970f1[_0x4c78b3];}});return _0x5970f1;});})[_0x8502('0x19')](respondWithResult(_0x4c462a,null))[_0x8502('0x84')](handleError(_0x4c462a,null));};exports['merge']=function(_0x2e8c32,_0x76f48f){var _0x5400ea;var _0x2f03f1;var _0x387fce;if(_0x2e8c32[_0x8502('0x8c')]['id']){delete _0x2e8c32[_0x8502('0x8c')]['id'];}return db[_0x8502('0x22')]['findAll']({'where':{'id':[_0x2e8c32[_0x8502('0x8c')]['to'],_0x2e8c32[_0x8502('0x8c')][_0x8502('0x39')]]}})['then'](function(_0x2894c2){if(_0x2894c2){if(_0x2894c2[_0x8502('0x24')]!==0x2){return null;}_0x2894c2[0x0]=_0x2894c2[0x0][_0x8502('0x8d')]({'plain':!![]});_0x2894c2[0x1]=_0x2894c2[0x1][_0x8502('0x8d')]({'plain':!![]});delete _0x2894c2[0x0]['id'];delete _0x2894c2[0x1]['id'];return _[_0x8502('0x8e')](_0x2894c2[0x0],_0x2894c2[0x1],function(_0x2596df,_0x2a3b5d){if(Array['isArray'](_0x2a3b5d)&&!_0x2a3b5d[_0x8502('0x24')]){return _0x2596df;}else if(!_0x2a3b5d){return _0x2596df;}});}})[_0x8502('0x19')](handleEntityNotFound(_0x76f48f,null))[_0x8502('0x19')](function(_0x258e45){if(_0x258e45){if(_0x258e45[_0x8502('0x86')]&&_[_0x8502('0x5e')](_0x258e45[_0x8502('0x86')])){_0x258e45['tags']=_0x258e45[_0x8502('0x86')][_0x8502('0x8f')]();}logger[_0x8502('0x90')](_0x8502('0x91'),_0x2e8c32[_0x8502('0x8c')]['to'],_0x2e8c32[_0x8502('0x8c')]['from']);return db['CmHopper']['destroy']({'where':{'ContactId':[_0x2e8c32[_0x8502('0x8c')]['to'],_0x2e8c32[_0x8502('0x8c')][_0x8502('0x39')]]}})[_0x8502('0x19')](function(_0x4530cd){logger[_0x8502('0x90')](_0x8502('0x92'),_0x4530cd);return db['CmHopperBlack'][_0x8502('0x1a')]({'where':{'ContactId':[_0x2e8c32[_0x8502('0x8c')]['to'],_0x2e8c32[_0x8502('0x8c')]['from']]}})[_0x8502('0x19')](function(_0x57e4aa){logger[_0x8502('0x90')]('[CmContact][merge][destroy][CmHopperBlack],\x20%s',_0x57e4aa);return db[_0x8502('0x22')][_0x8502('0x93')](_0x258e45);});});}})[_0x8502('0x19')](function(_0x4026f5){if(_0x4026f5){_0x5400ea=_0x4026f5;_0x2f03f1={'ContactId':_0x5400ea['id']};_0x387fce={'where':{'ContactId':[_0x2e8c32[_0x8502('0x8c')]['to'],_0x2e8c32[_0x8502('0x8c')][_0x8502('0x39')]]}};return db[_0x8502('0x94')][_0x8502('0x18')](_0x2f03f1,_0x387fce);}})[_0x8502('0x19')](function(){if(_0x5400ea){return db[_0x8502('0x95')][_0x8502('0x18')](_0x2f03f1,_0x387fce);}})[_0x8502('0x19')](function(){if(_0x5400ea){return db['ChatOfflineMessage']['update'](_0x2f03f1,_0x387fce);}})['then'](function(){if(_0x5400ea){return db[_0x8502('0x96')][_0x8502('0x18')](_0x2f03f1,_0x387fce);}})[_0x8502('0x19')](function(){if(_0x5400ea){return db['MailMessage'][_0x8502('0x18')](_0x2f03f1,_0x387fce);}})['then'](function(){if(_0x5400ea){return db['MailInteraction'][_0x8502('0x18')](_0x2f03f1,_0x387fce);}})[_0x8502('0x19')](function(){if(_0x5400ea){return db[_0x8502('0x97')][_0x8502('0x18')](_0x2f03f1,_0x387fce);}})[_0x8502('0x19')](function(){if(_0x5400ea){return db[_0x8502('0x98')][_0x8502('0x18')](_0x2f03f1,_0x387fce);}})[_0x8502('0x19')](function(){if(_0x5400ea){return db[_0x8502('0x99')][_0x8502('0x18')](_0x2f03f1,_0x387fce);}})[_0x8502('0x19')](function(){if(_0x5400ea){return db[_0x8502('0x9a')]['update'](_0x2f03f1,_0x387fce);}})[_0x8502('0x19')](function(){if(_0x5400ea){return db['FaxMessage'][_0x8502('0x18')](_0x2f03f1,_0x387fce);}})[_0x8502('0x19')](function(){if(_0x5400ea){return db[_0x8502('0x9b')]['update'](_0x2f03f1,_0x387fce);}})[_0x8502('0x19')](function(){if(_0x5400ea){return db[_0x8502('0x9c')][_0x8502('0x18')](_0x2f03f1,_0x387fce);}})[_0x8502('0x19')](function(){if(_0x5400ea){return db[_0x8502('0x9d')]['update']({'CmContactId':_0x5400ea['id']},{'where':{'CmContactId':[_0x2e8c32['body']['to'],_0x2e8c32[_0x8502('0x8c')]['from']]}});}})[_0x8502('0x19')](function(){if(_0x5400ea){return db['CmHopperFinal'][_0x8502('0x18')](_0x2f03f1,_0x387fce);}})[_0x8502('0x19')](function(){if(_0x5400ea){return db[_0x8502('0x9e')][_0x8502('0x18')](_0x2f03f1,_0x387fce);}})['then'](function(){if(_0x5400ea){return db[_0x8502('0x9f')]['update'](_0x2f03f1,_0x387fce);}})[_0x8502('0x19')](function(){if(_0x5400ea){return db[_0x8502('0xa0')][_0x8502('0x18')](_0x2f03f1,_0x387fce);}})['then'](function(){if(_0x5400ea){return db['ChatQueueReport']['update'](_0x2f03f1,_0x387fce);}})[_0x8502('0x19')](function(){if(_0x5400ea){return db[_0x8502('0xa1')][_0x8502('0x18')](_0x2f03f1,_0x387fce);}})[_0x8502('0x19')](function(){if(_0x5400ea){return db[_0x8502('0xa2')][_0x8502('0x18')](_0x2f03f1,_0x387fce);}})[_0x8502('0x19')](function(){if(_0x5400ea){return db[_0x8502('0xa3')][_0x8502('0x18')](_0x2f03f1,_0x387fce);}})[_0x8502('0x19')](function(){if(_0x5400ea){return db[_0x8502('0xa4')][_0x8502('0x18')](_0x2f03f1,_0x387fce);}})[_0x8502('0x19')](function(){if(_0x5400ea){return db[_0x8502('0xa5')]['update'](_0x2f03f1,_0x387fce);}})[_0x8502('0x19')](function(){if(_0x5400ea){return db[_0x8502('0xa6')]['update'](_0x2f03f1,_0x387fce);}})[_0x8502('0x19')](function(){if(_0x5400ea){return db[_0x8502('0xa7')][_0x8502('0x18')](_0x2f03f1,_0x387fce);}})['then'](function(){if(_0x5400ea){return db[_0x8502('0xa8')]['update'](_0x2f03f1,_0x387fce);}})[_0x8502('0x19')](function(){if(_0x5400ea){return db[_0x8502('0x22')]['destroy']({'where':{'id':[_0x2e8c32[_0x8502('0x8c')]['to'],_0x2e8c32[_0x8502('0x8c')][_0x8502('0x39')]]}});}})[_0x8502('0x19')](function(){if(_0x5400ea){return _0x5400ea;}})[_0x8502('0x19')](respondWithResult(_0x76f48f,null))['catch'](handleError(_0x76f48f,null));};exports[_0x8502('0x93')]=function(_0x301cae,_0xafb005){return db[_0x8502('0x22')][_0x8502('0x23')]()[_0x8502('0x19')](function(_0x226ab1){if(_0x301cae['body']['tags']&&_[_0x8502('0x5e')](_0x301cae['body'][_0x8502('0x86')])){if(_0x301cae[_0x8502('0x8c')][_0x8502('0x86')][_0x8502('0x24')]){_0x301cae[_0x8502('0x8c')][_0x8502('0x86')]=_0x301cae['body']['tags'][_0x8502('0x8f')](';')+';';}else{_0x301cae[_0x8502('0x8c')][_0x8502('0x86')]=null;}}else{_0x301cae[_0x8502('0x8c')][_0x8502('0x86')]=null;}if(!_[_0x8502('0x56')](_0x301cae[_0x8502('0x8c')][_0x8502('0xa9')])){var _0x30cf63=_0x301cae[_0x8502('0x8c')][_0x8502('0xa9')];if(!_[_0x8502('0x56')](shared['timezones'][_0x30cf63]))_0x301cae[_0x8502('0x8c')][_0x8502('0xaa')]=shared[_0x8502('0xab')][_0x30cf63]['utcOffset'];}return db['CmContact']['create'](_0x301cae[_0x8502('0x8c')],{'fields':_['keys'](_0x226ab1),'raw':!![]});})[_0x8502('0x19')](function(_0x48f7a5){if(_0x301cae['body'][_0x8502('0xac')]){return insertAdditionalPhones(_0x48f7a5,_0x301cae[_0x8502('0x8c')]['additionalPhones']);}else{return _0x48f7a5;}})[_0x8502('0x19')](respondWithResult(_0xafb005,0xc9))['catch'](handleError(_0xafb005,null));};exports['bulkCreate']=function(_0x1ad78c,_0x43b760){var _0x3a80d4=0x0;var _0x3f00aa=0x0;var _0x17a029=0x0;var _0x28351e=[];return db[_0x8502('0x22')][_0x8502('0x23')]()[_0x8502('0x19')](function(_0x345281){return BPromise['each'](_0x1ad78c[_0x8502('0x8c')],function(_0x2c51f1){var _0x4e5237={'where':{'$or':[]},'defaults':_0x2c51f1,'fields':_[_0x8502('0x25')](_0x345281),'raw':!![]};if(_0x2c51f1['duplicates']){for(var _0x450f27=0x0;_0x450f27<_0x2c51f1[_0x8502('0xad')]['length'];_0x450f27++){var _0x3cecd6={};_0x3cecd6[_0x2c51f1['duplicates'][_0x450f27]]=_0x2c51f1[_0x2c51f1[_0x8502('0xad')][_0x450f27]];_0x4e5237['where']['$or'][_0x8502('0x27')](_0x3cecd6);}_0x4e5237[_0x8502('0x40')][_0x8502('0x74')]=_0x2c51f1[_0x8502('0x74')];}return db[_0x8502('0x22')][_0x8502('0xae')](_0x4e5237)[_0x8502('0xaf')](function(_0x38935d,_0x8ef969){if(_0x8ef969){if(_0x2c51f1[_0x8502('0x54')](_0x8502('0xac'))){_0x28351e[_0x8502('0x27')]({'contact':_0x38935d,'additionalPhones':_0x2c51f1[_0x8502('0xac')]});}_0x3a80d4++;}else{_0x17a029++;}})[_0x8502('0x84')](function(){_0x3f00aa++;});});})['then'](function(_0x2663d5){if(_0x2663d5){if(_0x28351e[_0x8502('0x24')]>0x0){return new Promise(function(_0xef2ba4,_0x51e191){var _0x10ee12=[];for(var _0x3a0cec=0x0;_0x3a0cec<_0x28351e[_0x8502('0x24')];_0x3a0cec++){_0x10ee12[_0x8502('0x27')](insertAdditionalPhones(_0x28351e[_0x3a0cec]['contact'],_0x28351e[_0x3a0cec]['additionalPhones']));}Promise[_0x8502('0x2a')](_0x10ee12)[_0x8502('0x19')](function(){_0xef2ba4(0x1);});})[_0x8502('0x19')](function(){return{'success':_0x3a80d4,'failure':_0x3f00aa,'duplicates':_0x17a029};});}else{return{'success':_0x3a80d4,'failure':_0x3f00aa,'duplicates':_0x17a029};}}})['then'](respondWithResult(_0x43b760,0xc9))[_0x8502('0x84')](handleError(_0x43b760,null));};exports[_0x8502('0xb0')]=function(_0x330120,_0x6418f0){var _0x2ab602;return db[_0x8502('0x22')][_0x8502('0x23')]()[_0x8502('0x19')](function(_0x2a65b1){return db[_0x8502('0x22')]['find']({'where':{'id':_0x330120[_0x8502('0x85')]['id']},'include':[{'model':db['Tag'],'as':_0x8502('0x82'),'attributes':['id',_0x8502('0x1f'),_0x8502('0x38')],'required':_0x330120[_0x8502('0x2e')][_0x8502('0x5d')]?!![]:![]},{'model':db['CmContactHasItem'],'as':_0x8502('0xb1'),'where':{'CmContactId':_0x330120[_0x8502('0x85')]['id']},'required':![],'include':[{'model':db[_0x8502('0xb2')],'as':_0x8502('0xb3')}]}],'order':[db[_0x8502('0x75')]['literal'](_0x8502('0xb4'))],'attributes':_[_0x8502('0x25')](_0x2a65b1)});})[_0x8502('0x19')](function(_0x4b8f6a){if(!_['isNil'](_0x4b8f6a)){_0x2ab602=_0x4b8f6a['get']({'plain':!![]});var _0x3b75b7={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x4b8f6a&&_0x4b8f6a['ListId']){if(_0x4b8f6a[_0x8502('0x74')]){_0x3b75b7[_0x8502('0x40')][_0x8502('0xb5')]['push']({'ListId':{'$ne':_0x4b8f6a[_0x8502('0x74')]}});}}return db[_0x8502('0xb6')]['findAll'](_0x3b75b7);}})[_0x8502('0x19')](function(_0x549e46){if(!_[_0x8502('0x56')](_0x549e46)){return _['omit'](_0x2ab602,_['map'](_0x549e46,function(_0x37e387){return util['format'](_0x8502('0xb7'),_0x37e387['id']);}));}})[_0x8502('0x19')](handleEntityNotFound(_0x6418f0,null))[_0x8502('0x19')](respondWithResult(_0x6418f0,null))['catch'](handleError(_0x6418f0,null));};exports[_0x8502('0x18')]=function(_0x133e96,_0x116489){var _0x567303;if(_0x133e96['body']['id']){delete _0x133e96[_0x8502('0x8c')]['id'];}if(!_['isNil'](_0x133e96['body'][_0x8502('0xa9')])){var _0x797d1=_0x133e96[_0x8502('0x8c')]['dialTimezone'];if(!_[_0x8502('0x56')](shared['timezones'][_0x797d1]))_0x133e96[_0x8502('0x8c')][_0x8502('0xaa')]=shared[_0x8502('0xab')][_0x797d1][_0x8502('0xaa')];}return db[_0x8502('0x22')][_0x8502('0x47')]({'where':{'id':_0x133e96[_0x8502('0x85')]['id']}})[_0x8502('0x19')](handleEntityNotFound(_0x116489,null))[_0x8502('0x19')](saveUpdates(_0x133e96[_0x8502('0x8c')],null))[_0x8502('0x19')](function(_0x3d6ea1){_0x567303=_0x3d6ea1;var _0x1952f8={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x3d6ea1&&_0x3d6ea1[_0x8502('0x74')]){if(_0x3d6ea1['ListId']){_0x1952f8[_0x8502('0x40')][_0x8502('0xb5')][_0x8502('0x27')]({'ListId':{'$ne':_0x3d6ea1['ListId']}});}}return db[_0x8502('0xb6')][_0x8502('0xb8')](_0x1952f8);})[_0x8502('0x19')](function(_0x36903a){if(_0x36903a){return _[_0x8502('0xb9')](_[_0x8502('0xba')](_0x133e96[_0x8502('0x8c')],function(_0x400cd6,_0x54d075){return _[_0x8502('0x26')](_0x54d075,_0x8502('0x29'));}),_['map'](_0x36903a,function(_0x2a1fce){return util[_0x8502('0xbb')](_0x8502('0xb7'),_0x2a1fce['id']);}));}})[_0x8502('0x19')](function(_0x24a8a3){if(_0x24a8a3&&!_[_0x8502('0x58')](_0x24a8a3)){var _0x3e6eae=squel[_0x8502('0x18')]()[_0x8502('0xbc')]('cm_contacts')['setFields'](_0x24a8a3)['where']('id\x20=\x20?',_0x133e96[_0x8502('0x85')]['id'])[_0x8502('0xbd')]();return db['sequelize'][_0x8502('0x2e')](_0x3e6eae['text'],{'replacements':_0x3e6eae['values']});}})['then'](function(){if(_0x133e96[_0x8502('0x8c')]['phone']&&_0x567303){return db[_0x8502('0xbe')][_0x8502('0x18')]({'phone':_0x133e96[_0x8502('0x8c')]['phone'],'OrderBy':0x0},{'where':{'ContactId':_0x567303['id']}});}})[_0x8502('0x19')](function(){return _0x567303;})[_0x8502('0x19')](respondWithResult(_0x116489,null))['catch'](handleError(_0x116489,null));};exports['getTags']=function(_0x1b485b,_0xee70fa){var _0x23ddad={};var _0x50ccb4={};var _0x33454d;var _0x263f78;return db[_0x8502('0x22')][_0x8502('0x28')]({'where':{'id':_0x1b485b[_0x8502('0x85')]['id']}})['then'](handleEntityNotFound(_0xee70fa,null))[_0x8502('0x19')](function(_0x4f6e1f){if(_0x4f6e1f){_0x33454d=_0x4f6e1f;_0x50ccb4['model']=_[_0x8502('0x25')](db[_0x8502('0x48')][_0x8502('0xbf')]);_0x50ccb4[_0x8502('0x2e')]=_[_0x8502('0x25')](_0x1b485b[_0x8502('0x2e')]);_0x50ccb4[_0x8502('0x34')]=_['intersection'](_0x50ccb4['model'],_0x50ccb4[_0x8502('0x2e')]);_0x23ddad[_0x8502('0x30')]=_['intersection'](_0x50ccb4[_0x8502('0x2d')],qs[_0x8502('0x31')](_0x1b485b[_0x8502('0x2e')][_0x8502('0x31')]));_0x23ddad[_0x8502('0x30')]=_0x23ddad[_0x8502('0x30')][_0x8502('0x24')]?_0x23ddad['attributes']:_0x50ccb4[_0x8502('0x2d')];_0x23ddad[_0x8502('0x6e')]=qs[_0x8502('0x33')](_0x1b485b['query'][_0x8502('0x33')]);_0x23ddad[_0x8502('0x40')]=qs[_0x8502('0x34')](_[_0x8502('0x35')](_0x1b485b['query'],_0x50ccb4[_0x8502('0x34')]));if(_0x1b485b[_0x8502('0x2e')][_0x8502('0x55')]){_0x23ddad[_0x8502('0x40')]=_[_0x8502('0x78')](_0x23ddad[_0x8502('0x40')],{'$or':_[_0x8502('0x4b')](_0x23ddad[_0x8502('0x30')],function(_0x52122f){var _0x4403c3={};_0x4403c3[_0x52122f]={'$like':'%'+_0x1b485b[_0x8502('0x2e')][_0x8502('0x55')]+'%'};return _0x4403c3;})});}_0x23ddad=_['merge']({},_0x23ddad,_0x1b485b[_0x8502('0xc0')]);return _0x33454d['getTags'](_0x23ddad);}})['then'](function(_0x301aae){if(_0x301aae){_0x263f78=_0x301aae[_0x8502('0x24')];if(!_0x1b485b[_0x8502('0x2e')][_0x8502('0x54')](_0x8502('0x32'))){_0x23ddad[_0x8502('0x14')]=qs[_0x8502('0x14')](_0x1b485b['query']['limit']);_0x23ddad['offset']=qs[_0x8502('0x16')](_0x1b485b[_0x8502('0x2e')][_0x8502('0x16')]);}return _0x33454d[_0x8502('0xc1')](_0x23ddad);}})[_0x8502('0x19')](function(_0x6f7ba9){if(_0x6f7ba9){return _0x6f7ba9?{'count':_0x263f78,'rows':_0x6f7ba9}:null;}})[_0x8502('0x19')](respondWithResult(_0xee70fa,null))[_0x8502('0x84')](handleError(_0xee70fa,null));};exports[_0x8502('0xc2')]=function(_0x4e4863,_0x4b1e32){if(_0x4e4863[_0x8502('0x8c')]['id']){delete _0x4e4863['body']['id'];}return db['CmContact'][_0x8502('0x28')]({'where':{'id':_0x4e4863[_0x8502('0x85')]['id']}})[_0x8502('0x19')](handleEntityNotFound(_0x4b1e32,null))[_0x8502('0x19')](function(_0x4d1b6f){if(_0x4d1b6f){return _0x4d1b6f[_0x8502('0xc2')](_0x4e4863[_0x8502('0x8c')][_0x8502('0xc3')]||[]);}return null;})['then'](respondWithResult(_0x4b1e32,null))[_0x8502('0x84')](handleError(_0x4b1e32,null));};exports[_0x8502('0xc4')]=function(_0x29f9f0,_0x6ab963){var _0x3ac579=[];_0x3ac579['push'](addAdditionalPhones(_0x29f9f0[_0x8502('0x8c')]));Promise['all'](_0x3ac579)[_0x8502('0x19')](function(){_0x3ac579=[];_0x3ac579[_0x8502('0x27')](deleteCmHopperPhones(_0x29f9f0[_0x8502('0x8c')]['id']));_0x3ac579[_0x8502('0x27')](addCmHopperPhones(_0x29f9f0[_0x8502('0x8c')]['id']));Promise[_0x8502('0x2a')](_0x3ac579)['then'](function(){return[0x1];})['then'](respondWithResult(_0x6ab963,null));});};function addAdditionalPhones(_0x2a0f7a){var _0x205f35;return new Promise(function(_0x519a50,_0x3fcb42){return db[_0x8502('0x9d')][_0x8502('0x1a')]({'where':{'CmContactId':_0x2a0f7a['id']}})[_0x8502('0x19')](function(){db['ContactItemType']['findAll']({'raw':!![],'attributes':['id',_0x8502('0xc5')]})[_0x8502('0x19')](function(_0x19eba4){var _0xd36497=[];for(var _0x2d6a5c=0x0;_0x2d6a5c<_0x2a0f7a[_0x8502('0xc6')]['length'];_0x2d6a5c++){var _0x129c5b=_0x2a0f7a[_0x8502('0xc7')]?_[_0x8502('0x56')](_0x2a0f7a[_0x8502('0xc7')][_0x2d6a5c])?'':_0x2a0f7a[_0x8502('0xc7')][_0x2d6a5c]:_0x2a0f7a[_0x8502('0xc6')][_0x2d6a5c][_0x8502('0xc8')]?_0x2a0f7a[_0x8502('0xc6')][_0x2d6a5c][_0x8502('0xc8')]:'';var _0x32e9d2=_[_0x8502('0x56')](_0x2a0f7a[_0x8502('0xc6')][_0x2d6a5c][_0x8502('0xc9')])?'':_0x2a0f7a[_0x8502('0xc6')][_0x2d6a5c][_0x8502('0xc9')];var _0x5df51c=_0x129c5b+':'+_0x2a0f7a[_0x8502('0xc6')][_0x2d6a5c][_0x8502('0xca')]+'§'+_0x32e9d2;if(_['isNil'](_0x205f35))_0x205f35=_0x5df51c;else _0x205f35+=';'+_0x5df51c;var _0x4b8cdf=null;if(_0x2a0f7a[_0x8502('0xc7')]){if(!_['isNil'](_0x2a0f7a[_0x8502('0xc7')][_0x2d6a5c])){var _0x2e25c3=_[_0x8502('0x47')](_0x19eba4,function(_0x5205eb){return _0x5205eb['id']===_0x2a0f7a[_0x8502('0xc7')][_0x2d6a5c];});if(!_[_0x8502('0x56')](_0x2e25c3)){_0x4b8cdf=_0x2e25c3['OrderBy'];}}}else{if(!_[_0x8502('0x56')](_0x2a0f7a[_0x8502('0xc6')][_0x2d6a5c])){var _0x2e25c3=_[_0x8502('0x47')](_0x19eba4,function(_0x15f869){return _0x15f869['id']===_0x2a0f7a[_0x8502('0xc6')][_0x2d6a5c][_0x8502('0xc8')];});if(!_[_0x8502('0x56')](_0x2e25c3)){_0x4b8cdf=_0x2d6a5c;}}}if(_[_0x8502('0x56')](_0x4b8cdf)){_0x4b8cdf=0x64;}_0xd36497[_0x8502('0x27')](addAdditionalPhone(_0x2a0f7a['id'],_0x2a0f7a[_0x8502('0xc6')][_0x2d6a5c][_0x8502('0xca')],_0x2a0f7a[_0x8502('0xc7')]?_[_0x8502('0x56')](_0x2a0f7a[_0x8502('0xc7')][_0x2d6a5c])?null:_0x2a0f7a[_0x8502('0xc7')][_0x2d6a5c]:_0x2a0f7a[_0x8502('0xc6')][_0x2d6a5c]['ItemTypeId']?_0x2a0f7a['items'][_0x2d6a5c][_0x8502('0xc8')]:null,_0x4b8cdf,_0x32e9d2));}Promise[_0x8502('0x2a')](_0xd36497)[_0x8502('0x19')](function(){db[_0x8502('0x22')][_0x8502('0x18')]({'AdditionalPhones':_0x205f35},{'where':{'id':_0x2a0f7a['id']}})[_0x8502('0x19')](function(){_0x519a50(0x1);});});});});});}function addAdditionalPhone(_0x51ce2a,_0x48b589,_0x1de56e,_0x4233e4,_0x2ffdcf){return db[_0x8502('0x9d')][_0x8502('0x47')]({'where':{'CmContactId':_0x51ce2a,'item':_0x48b589}})['then'](function(_0x2ef9a4){if(_0x2ef9a4)logger[_0x8502('0x90')](_0x8502('0xcb'),_0x2ef9a4);else{db['CmContactHasItem'][_0x8502('0x93')]({'CmContactId':_0x51ce2a,'item':_0x48b589,'ItemTypeId':_0x1de56e,'OrderBy':_0x4233e4,'ItemClass':_0x8502('0xcc'),'description':_0x2ffdcf});}});}function deletePhones(_0xdde78){return db[_0x8502('0x9d')][_0x8502('0x1a')]({'where':{'CmContactId':_0xdde78}});}function deleteCmHopperPhones(_0x2cf8a0){return new Promise(function(_0x48f741,_0x53f583){return db[_0x8502('0xbe')][_0x8502('0xb8')]({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x2cf8a0}})[_0x8502('0x19')](function(_0x4fd290){db[_0x8502('0xcd')]['destroy']({'where':{'CmHopperId':{'$in':_[_0x8502('0x4b')](_0x4fd290,'id')}}});})['then'](function(){_0x48f741(0x1);});});}function addCmHopperPhones(_0x4837fa){return new Promise(function(_0x139ed8,_0x567d12){return db[_0x8502('0xbe')][_0x8502('0xb8')]({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x4837fa}})[_0x8502('0x19')](function(_0x3bb924){var _0x2f18bc=[];_[_0x8502('0x4b')](_0x3bb924,function(_0x16dfca){_0x2f18bc[_0x8502('0x27')](createCmHopperPhone(_0x4837fa,_0x16dfca['id']));});Promise['all'](_0x2f18bc)[_0x8502('0x19')](function(){_0x139ed8(0x1);});});});}function createCmHopperPhone(_0x5b2047,_0x37a797){return new Promise(function(_0xf3f0e,_0x54cc7c){db[_0x8502('0x9d')][_0x8502('0xb8')]({'raw':!![],'attributes':[_0x8502('0xce'),'OrderBy'],'where':{'CmContactId':_0x5b2047,'ItemClass':_0x8502('0xcc')},'include':[{'model':db[_0x8502('0xb2')],'attributes':[_0x8502('0xc5')],'as':_0x8502('0xb3')}],'order':[_0x8502('0xc5'),db[_0x8502('0x75')][_0x8502('0xcf')]('`ItemType`.OrderBy')]})[_0x8502('0x19')](function(_0x137d38){var _0x56dd2d=0x1;var _0x3b48d4=_[_0x8502('0x4b')](_0x137d38,function(_0x5040a0){_0x5040a0['CmHopperId']=_0x37a797;_0x5040a0[_0x8502('0xca')]=_0x5040a0[_0x8502('0xce')];_0x5040a0['OrderBy']=_0x56dd2d;delete _0x5040a0[_0x8502('0xd0')];_0x56dd2d=_0x56dd2d+0x1;return _0x5040a0;});return db[_0x8502('0xcd')][_0x8502('0xd1')](_0x3b48d4,{});})[_0x8502('0x19')](function(){_0xf3f0e(0x1);});});}function insertAdditionalPhones(_0x3d3837,_0x48581d){return new Promise(function(_0x331ba5,_0x608d22){var _0x1d42e1=[];for(var _0x11efc5=0x0;_0x11efc5<_0x48581d[_0x8502('0x24')];_0x11efc5++){var _0x7e108e=_0x48581d[_0x11efc5];_0x1d42e1[_0x8502('0x27')](parseContactItemType(_0x7e108e));}Promise[_0x8502('0x2a')](_0x1d42e1)['then'](function(){var _0x2e5d1f={'id':_0x3d3837['id'],'items':_0x48581d};return addAdditionalPhones(_0x2e5d1f)['then'](function(_0x429957){return addCmHopperPhones(_0x3d3837['id']);});})[_0x8502('0x19')](function(){_0x331ba5(_0x3d3837);});});}function parseContactItemType(_0x59db5c){return new Promise(function(_0x17b2e9,_0x498b23){if(_0x59db5c[_0x8502('0x54')]('ItemTypeId')){_0x17b2e9(_0x59db5c);}else{return db['ContactItemType'][_0x8502('0x47')]({'where':{'name':_0x59db5c[_0x8502('0xb3')]}})['then'](function(_0x350073){if(_['isNil'](_0x350073))_0x59db5c['ItemTypeId']=null;else _0x59db5c[_0x8502('0xc8')]=_0x350073['id'];_0x17b2e9(_0x59db5c);});}});}exports[_0x8502('0xd2')]=function(_0x2d1f08,_0x2c7494){return db[_0x8502('0x9d')][_0x8502('0xb8')]({'raw':!![],'where':{'CmContactId':_0x2d1f08[_0x8502('0x85')]['id'],'ItemClass':_0x8502('0xcc')},'include':[{'model':db['ContactItemType'],'as':_0x8502('0xb3')}],'order':[[_0x8502('0xc5')],[db[_0x8502('0x75')]['literal'](_0x8502('0xd3'))]]})['then'](function(_0x43c1d0){return _0x43c1d0;})[_0x8502('0x19')](respondWithResult(_0x2c7494,null))[_0x8502('0x84')](handleError(_0x2c7494,null));};exports[_0x8502('0xd4')]=function(_0x44fca3,_0x41bd36){return db['CmContactHasItem'][_0x8502('0xb8')]({'raw':!![],'where':{'CmContactId':_0x44fca3[_0x8502('0x8c')][_0x8502('0xd5')]}})[_0x8502('0x19')](function(_0x413217){var _0x371754=_[_0x8502('0x4b')](_0x413217,function(_0x4d24bc){_0x4d24bc[_0x8502('0xd6')]=_0x44fca3['body'][_0x8502('0xd7')];return _0x4d24bc;});return db[_0x8502('0x9d')][_0x8502('0xd1')](_0x371754,{});})[_0x8502('0x19')](function(_0x4effcf){return addCmHopperPhones(_0x44fca3[_0x8502('0x8c')][_0x8502('0xd7')]);})[_0x8502('0x19')](function(_0x4fa5d8){return['ok'];})[_0x8502('0x19')](respondWithResult(_0x41bd36,null))[_0x8502('0x84')](handleError(_0x41bd36,null));};exports[_0x8502('0xd8')]=function(_0x3bba59,_0x2d860d){var _0x13cfa7=[];_0x13cfa7[_0x8502('0x27')](createCmHopperPhone(_0x3bba59[_0x8502('0x8c')]['id'],_0x3bba59[_0x8502('0x8c')]['hopperId']));Promise[_0x8502('0x2a')](_0x13cfa7)['then'](function(){return[0x1];})[_0x8502('0x19')](respondWithResult(_0x2d860d,null));};exports[_0x8502('0xd9')]=function(_0x360ed0,_0x2b6100){var _0x20c017={'raw':![],'where':{}};var _0x15c5b4={};var _0x1d083a={'count':0x0,'rows':[]};return db[_0x8502('0x22')][_0x8502('0x28')]({'where':{'id':_0x360ed0[_0x8502('0x85')]['id']}})['then'](handleEntityNotFound(_0x2b6100,null))[_0x8502('0x19')](function(_0x46dff4){if(_0x46dff4){_0x15c5b4[_0x8502('0x2d')]=_['keys'](db[_0x8502('0xbe')][_0x8502('0xbf')]);_0x15c5b4[_0x8502('0x2e')]=_[_0x8502('0x25')](_0x360ed0['query']);_0x15c5b4[_0x8502('0x34')]=_[_0x8502('0x2f')](_0x15c5b4[_0x8502('0x2d')],_0x15c5b4['query']);_0x20c017[_0x8502('0x30')]=_[_0x8502('0x2f')](_0x15c5b4[_0x8502('0x2d')],qs['fields'](_0x360ed0[_0x8502('0x2e')][_0x8502('0x31')]));_0x20c017[_0x8502('0x30')]=_0x20c017[_0x8502('0x30')][_0x8502('0x24')]?_0x20c017['attributes']:_0x15c5b4[_0x8502('0x2d')];if(!_0x360ed0['query'][_0x8502('0x54')](_0x8502('0x32'))){_0x20c017[_0x8502('0x14')]=qs[_0x8502('0x14')](_0x360ed0[_0x8502('0x2e')][_0x8502('0x14')]);_0x20c017['offset']=qs['offset'](_0x360ed0['query'][_0x8502('0x16')]);}_0x20c017[_0x8502('0x6e')]=qs[_0x8502('0x33')](_0x360ed0[_0x8502('0x2e')]['sort']);_0x20c017[_0x8502('0x40')]=qs[_0x8502('0x34')](_['pick'](_0x360ed0[_0x8502('0x2e')],_0x15c5b4['filters']));_0x20c017['where'][_0x8502('0xda')]=_0x46dff4['id'];if(_0x360ed0[_0x8502('0x2e')][_0x8502('0x55')]){_0x20c017[_0x8502('0x40')]=_[_0x8502('0x78')](_0x20c017[_0x8502('0x40')],{'$or':_[_0x8502('0x4b')](_0x20c017[_0x8502('0x30')],function(_0x1f2813){var _0x5c2dd0={};_0x5c2dd0[_0x1f2813]={'$like':'%'+_0x360ed0[_0x8502('0x2e')][_0x8502('0x55')]+'%'};return _0x5c2dd0;})});}_0x20c017=_[_0x8502('0x78')]({},_0x20c017,_0x360ed0[_0x8502('0xc0')]);return db['CmHopper'][_0x8502('0x15')]({'where':_0x20c017[_0x8502('0x40')]})[_0x8502('0x19')](function(_0x1d5094){_0x1d083a[_0x8502('0x15')]=_0x1d5094;if(_0x360ed0[_0x8502('0x2e')][_0x8502('0xdb')]){_0x20c017[_0x8502('0xdc')]=[{'all':!![]}];}return db[_0x8502('0xbe')]['findAll'](_0x20c017);})[_0x8502('0x19')](function(_0x23640d){_0x1d083a[_0x8502('0x83')]=_0x23640d;return _0x1d083a;});}})['then'](respondWithFilteredResult(_0x2b6100,_0x20c017))[_0x8502('0x84')](handleError(_0x2b6100,null));};exports[_0x8502('0xdd')]=function(_0xa6ce71,_0x104f14){var _0x639360={'raw':!![],'where':{}};var _0x4d447b={};var _0x7418fb={'count':0x0,'rows':[]};return db[_0x8502('0x22')][_0x8502('0x28')]({'where':{'id':_0xa6ce71['params']['id']}})[_0x8502('0x19')](handleEntityNotFound(_0x104f14,null))[_0x8502('0x19')](function(_0xe6bb28){if(_0xe6bb28){_0x4d447b[_0x8502('0x2d')]=_['keys'](db[_0x8502('0x9e')][_0x8502('0xbf')]);_0x4d447b[_0x8502('0x2e')]=_[_0x8502('0x25')](_0xa6ce71['query']);_0x4d447b[_0x8502('0x34')]=_[_0x8502('0x2f')](_0x4d447b['model'],_0x4d447b[_0x8502('0x2e')]);_0x639360[_0x8502('0x30')]=_[_0x8502('0x2f')](_0x4d447b[_0x8502('0x2d')],qs[_0x8502('0x31')](_0xa6ce71[_0x8502('0x2e')]['fields']));_0x639360[_0x8502('0x30')]=_0x639360[_0x8502('0x30')]['length']?_0x639360[_0x8502('0x30')]:_0x4d447b[_0x8502('0x2d')];if(!_0xa6ce71[_0x8502('0x2e')]['hasOwnProperty'](_0x8502('0x32'))){_0x639360[_0x8502('0x14')]=qs[_0x8502('0x14')](_0xa6ce71['query'][_0x8502('0x14')]);_0x639360[_0x8502('0x16')]=qs[_0x8502('0x16')](_0xa6ce71[_0x8502('0x2e')][_0x8502('0x16')]);}_0x639360['order']=qs['sort'](_0xa6ce71[_0x8502('0x2e')][_0x8502('0x33')]);_0x639360['where']=qs[_0x8502('0x34')](_['pick'](_0xa6ce71[_0x8502('0x2e')],_0x4d447b[_0x8502('0x34')]));_0x639360[_0x8502('0x40')][_0x8502('0xda')]=_0xe6bb28['id'];if(_0xa6ce71[_0x8502('0x2e')]['filter']){_0x639360[_0x8502('0x40')]=_[_0x8502('0x78')](_0x639360['where'],{'$or':_[_0x8502('0x4b')](_0x639360[_0x8502('0x30')],function(_0x1c1389){var _0x579fd1={};_0x579fd1[_0x1c1389]={'$like':'%'+_0xa6ce71[_0x8502('0x2e')][_0x8502('0x55')]+'%'};return _0x579fd1;})});}_0x639360=_[_0x8502('0x78')]({},_0x639360,_0xa6ce71[_0x8502('0xc0')]);return db[_0x8502('0x9e')]['count']({'where':_0x639360['where']})[_0x8502('0x19')](function(_0x463b50){_0x7418fb[_0x8502('0x15')]=_0x463b50;if(_0xa6ce71[_0x8502('0x2e')][_0x8502('0xdb')]){_0x639360[_0x8502('0xdc')]=[{'all':!![]}];}return db[_0x8502('0x9e')][_0x8502('0xb8')](_0x639360);})['then'](function(_0xdd75ac){_0x7418fb[_0x8502('0x83')]=_0xdd75ac;return _0x7418fb;});}})['then'](respondWithFilteredResult(_0x104f14,_0x639360))['catch'](handleError(_0x104f14,null));};exports[_0x8502('0xde')]=function(_0xc5dd7a,_0x27c2d7){var _0x3383ae={'raw':!![],'where':{}};var _0x40ad39={};var _0x105228={'count':0x0,'rows':[]};return db['CmContact'][_0x8502('0x28')]({'where':{'id':_0xc5dd7a[_0x8502('0x85')]['id']}})[_0x8502('0x19')](handleEntityNotFound(_0x27c2d7,null))['then'](function(_0xd1040c){if(_0xd1040c){_0x40ad39[_0x8502('0x2d')]=_['keys'](db[_0x8502('0xdf')][_0x8502('0xbf')]);_0x40ad39['query']=_[_0x8502('0x25')](_0xc5dd7a['query']);_0x40ad39[_0x8502('0x34')]=_[_0x8502('0x2f')](_0x40ad39[_0x8502('0x2d')],_0x40ad39['query']);_0x3383ae[_0x8502('0x30')]=_[_0x8502('0x2f')](_0x40ad39[_0x8502('0x2d')],qs[_0x8502('0x31')](_0xc5dd7a[_0x8502('0x2e')][_0x8502('0x31')]));_0x3383ae[_0x8502('0x30')]=_0x3383ae['attributes']['length']?_0x3383ae[_0x8502('0x30')]:_0x40ad39['model'];if(!_0xc5dd7a[_0x8502('0x2e')][_0x8502('0x54')](_0x8502('0x32'))){_0x3383ae[_0x8502('0x14')]=qs[_0x8502('0x14')](_0xc5dd7a[_0x8502('0x2e')][_0x8502('0x14')]);_0x3383ae[_0x8502('0x16')]=qs[_0x8502('0x16')](_0xc5dd7a['query']['offset']);}_0x3383ae[_0x8502('0x6e')]=qs[_0x8502('0x33')](_0xc5dd7a[_0x8502('0x2e')][_0x8502('0x33')]);_0x3383ae[_0x8502('0x40')]=qs[_0x8502('0x34')](_[_0x8502('0x35')](_0xc5dd7a[_0x8502('0x2e')],_0x40ad39[_0x8502('0x34')]));_0x3383ae['where'][_0x8502('0xda')]=_0xd1040c['id'];if(_0xc5dd7a['query']['filter']){_0x3383ae['where']=_['merge'](_0x3383ae[_0x8502('0x40')],{'$or':_[_0x8502('0x4b')](_0x3383ae[_0x8502('0x30')],function(_0x2ab226){var _0x3d0b55={};_0x3d0b55[_0x2ab226]={'$like':'%'+_0xc5dd7a[_0x8502('0x2e')][_0x8502('0x55')]+'%'};return _0x3d0b55;})});}_0x3383ae=_[_0x8502('0x78')]({},_0x3383ae,_0xc5dd7a[_0x8502('0xc0')]);return db[_0x8502('0xdf')][_0x8502('0x15')]({'where':_0x3383ae['where']})[_0x8502('0x19')](function(_0x576100){_0x105228[_0x8502('0x15')]=_0x576100;if(_0xc5dd7a['query']['includeAll']){_0x3383ae[_0x8502('0xdc')]=[{'all':!![]}];}return db[_0x8502('0xdf')]['findAll'](_0x3383ae);})[_0x8502('0x19')](function(_0x435ac7){_0x105228[_0x8502('0x83')]=_0x435ac7;return _0x105228;});}})['then'](respondWithFilteredResult(_0x27c2d7,_0x3383ae))[_0x8502('0x84')](handleError(_0x27c2d7,null));};exports[_0x8502('0xe0')]=function(_0x563279,_0x16d6a9){var _0x2176db={'raw':!![],'where':{}};var _0x36ebaa={};var _0x383392={'count':0x0,'rows':[]};return db[_0x8502('0x22')][_0x8502('0x28')]({'where':{'id':_0x563279['params']['id']}})[_0x8502('0x19')](handleEntityNotFound(_0x16d6a9,null))[_0x8502('0x19')](function(_0x5da5ee){if(_0x5da5ee){_0x36ebaa[_0x8502('0x2d')]=_[_0x8502('0x25')](db[_0x8502('0xa5')][_0x8502('0xbf')]);_0x36ebaa['query']=_[_0x8502('0x25')](_0x563279[_0x8502('0x2e')]);_0x36ebaa[_0x8502('0x34')]=_[_0x8502('0x2f')](_0x36ebaa['model'],_0x36ebaa['query']);_0x2176db[_0x8502('0x30')]=_[_0x8502('0x2f')](_0x36ebaa[_0x8502('0x2d')],qs[_0x8502('0x31')](_0x563279[_0x8502('0x2e')][_0x8502('0x31')]));_0x2176db[_0x8502('0x30')]=_0x2176db[_0x8502('0x30')][_0x8502('0x24')]?_0x2176db[_0x8502('0x30')]:_0x36ebaa['model'];if(!_0x563279[_0x8502('0x2e')][_0x8502('0x54')](_0x8502('0x32'))){_0x2176db['limit']=qs[_0x8502('0x14')](_0x563279[_0x8502('0x2e')][_0x8502('0x14')]);_0x2176db[_0x8502('0x16')]=qs[_0x8502('0x16')](_0x563279[_0x8502('0x2e')]['offset']);}_0x2176db['order']=qs[_0x8502('0x33')](_0x563279['query'][_0x8502('0x33')]);_0x2176db['where']=qs[_0x8502('0x34')](_[_0x8502('0x35')](_0x563279[_0x8502('0x2e')],_0x36ebaa['filters']));_0x2176db[_0x8502('0x40')]['ContactId']=_0x5da5ee['id'];if(_0x563279['query'][_0x8502('0x55')]){_0x2176db[_0x8502('0x40')]=_['merge'](_0x2176db[_0x8502('0x40')],{'$or':_['map'](_0x2176db[_0x8502('0x30')],function(_0x281e2f){var _0x20c7f8={};_0x20c7f8[_0x281e2f]={'$like':'%'+_0x563279[_0x8502('0x2e')][_0x8502('0x55')]+'%'};return _0x20c7f8;})});}_0x2176db=_[_0x8502('0x78')]({},_0x2176db,_0x563279[_0x8502('0xc0')]);return db[_0x8502('0xa5')]['count']({'where':_0x2176db[_0x8502('0x40')]})[_0x8502('0x19')](function(_0xe8fc1){_0x383392['count']=_0xe8fc1;if(_0x563279[_0x8502('0x2e')]['includeAll']){_0x2176db[_0x8502('0xdc')]=[{'all':!![]}];}return db['JscriptySessionReport'][_0x8502('0xb8')](_0x2176db);})[_0x8502('0x19')](function(_0x201879){_0x383392[_0x8502('0x83')]=_0x201879;return _0x383392;});}})[_0x8502('0x19')](respondWithFilteredResult(_0x16d6a9,_0x2176db))['catch'](handleError(_0x16d6a9,null));};exports['uploadCsv']=function(_0x5ab041,_0x3c50a9){try{if(!_0x5ab041[_0x8502('0x8c')][_0x8502('0x74')]){throw new Error(_0x8502('0xe1'));}if(!_0x5ab041[_0x8502('0x8c')]['binding_keys']){throw new Error('No\x20association\x20keys\x20specified!');}if(!_0x5ab041['body'][_0x8502('0xe2')]){throw new Error(_0x8502('0xe3'));}if(!_0x5ab041['body'][_0x8502('0xe4')]){throw new Error(_0x8502('0xe5'));}var _0x5cf9e1=_0x5ab041[_0x8502('0x8c')][_0x8502('0xe6')][_0x8502('0x4a')](',');var _0x12884f=_0x5ab041[_0x8502('0x8c')][_0x8502('0xe2')][_0x8502('0x4a')](',');if(!_0x5cf9e1[_0x8502('0x24')]||!_0x12884f['length']||_0x5cf9e1[_0x8502('0x24')]!==_0x12884f[_0x8502('0x24')]){throw new Error(_0x8502('0xe7'));}_0x5ab041[_0x8502('0x8c')][_0x8502('0x31')]=_[_0x8502('0xe8')](_0x5cf9e1,_0x12884f);if(!_0x5ab041['body'][_0x8502('0x31')][_0x8502('0xca')]){throw new Error(_0x8502('0xe9'));}if(!_0x5ab041[_0x8502('0x8c')][_0x8502('0x31')]['firstName']){throw new Error('No\x20firstName\x20column\x20specified');}var _0x49a738=path['join'](config[_0x8502('0xea')],_0x8502('0xeb'),_0x5ab041[_0x8502('0xec')]['filename']);fs[_0x8502('0xed')](_0x49a738,parseInt('0777',0x8));var _0x3744f2=require(_0x8502('0xee'))[_0x8502('0xef')](path[_0x8502('0x8f')](__dirname,'../../components/import/cm/csv'),[_0x49a738,_0x5ab041[_0x8502('0x8c')][_0x8502('0xe6')],_0x5ab041['body']['binding_values'],_0x5ab041[_0x8502('0x8c')][_0x8502('0x74')],_0x5ab041[_0x8502('0x8c')]['CompanyId'],_0x5ab041[_0x8502('0x8c')][_0x8502('0xad')],_0x5ab041[_0x8502('0x8c')]['socket_timestamp']]);return _0x3c50a9['status'](0xc8)[_0x8502('0x12')]({'message':_0x8502('0xf0'),'pid':_0x3744f2[_0x8502('0xf1')]});}catch(_0x35b132){return _0x3c50a9[_0x8502('0x11')](0x1f4)['send'](_0x35b132);}};exports[_0x8502('0xf2')]=function(_0x373be3,_0x14e25a){var _0x4be42e=fs[_0x8502('0xf3')](_0x373be3['file']['path']);Papa['parse'](_0x4be42e,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x1e50d5){return _0x14e25a[_0x8502('0x11')](0xc8)['json']({'file':_0x373be3['file'],'fields':_0x1e50d5[_0x8502('0xf4')]['fields']});}});};exports['import']=function(_0x505198,_0x3bfdbc){return db[_0x8502('0x4d')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0x8502('0xf5')}})[_0x8502('0x19')](function(_0x2a74f0){var _0x2d450d=![];if(!_0x505198[_0x8502('0x8c')]['ListId']){throw new Error(_0x8502('0xe1'));}if(!_0x505198[_0x8502('0x8c')]['binding'][_0x8502('0xca')]){throw new Error(_0x8502('0xe9'));}if(!_0x505198[_0x8502('0x8c')][_0x8502('0xf6')][_0x8502('0xf7')]){throw new Error(_0x8502('0xf8'));}if(!_0x505198[_0x8502('0x8c')][_0x8502('0xe4')]){throw new Error('Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed');}var _0xd5f0cf=require(_0x8502('0xee'))['fork'](path[_0x8502('0x8f')](__dirname,'../../components/import/cm/csv2'),[_0x505198[_0x8502('0x85')]['id'],JSON[_0x8502('0xf9')](_0x505198[_0x8502('0x8c')]),JSON[_0x8502('0xf9')](_0x2a74f0)]);_0xd5f0cf['on'](_0x8502('0xfa'),function(){_0x2d450d=!![];return _0x3bfdbc[_0x8502('0x11')](0xc8)[_0x8502('0x12')]({'message':_0x8502('0xfb'),'pid':_0xd5f0cf[_0x8502('0xf1')]});});_0xd5f0cf['on'](_0x8502('0xfc'),function(_0x42f486){if(_0x42f486&&!_0x2d450d){return _0x3bfdbc['status'](0x1f4)['json']({'message':_0x8502('0xfd'),'pid':_0xd5f0cf[_0x8502('0xf1')]});}});})['catch'](handleError(_0x3bfdbc,null));};exports[_0x8502('0xfe')]=function(_0x309722,_0x2a2cba,_0x23cd41){return db[_0x8502('0x4d')][_0x8502('0xb8')]({'raw':!![],'attributes':['id'],'where':{'role':'agent'}})['then'](function(_0x11415c){var _0x5b9983=![];if(!_0x309722[_0x8502('0x8c')][_0x8502('0x74')]){throw new Error('No\x20ListId\x20specified');}if(!_0x309722[_0x8502('0x8c')]['binding'][_0x8502('0xca')]){throw new Error(_0x8502('0xe9'));}if(!_0x309722[_0x8502('0x8c')][_0x8502('0xf6')][_0x8502('0xf7')]){throw new Error(_0x8502('0xf8'));}if(!_0x309722['body'][_0x8502('0xe4')]){throw new Error(_0x8502('0xe5'));}var _0x388242=require(_0x8502('0xee'))[_0x8502('0xef')](path[_0x8502('0x8f')](__dirname,_0x8502('0xff')),[_0x309722['params']['id'],JSON['stringify'](_0x309722[_0x8502('0x8c')]),JSON[_0x8502('0xf9')](_0x11415c)]);_0x388242['on'](_0x8502('0xfa'),function(_0x1d2ad2){_0x5b9983=!![];return _0x2a2cba[_0x8502('0x11')](0xc8)[_0x8502('0x12')]({'message':_0x8502('0xfb'),'pid':_0x388242['pid']});});_0x388242['on'](_0x8502('0xfc'),function(_0x3f13cd){if(_0x3f13cd&&!_0x5b9983){return _0x2a2cba[_0x8502('0x11')](0x1f4)[_0x8502('0x12')]({'message':_0x8502('0xfd'),'pid':_0x388242['pid']});}});})[_0x8502('0x84')](handleError(_0x2a2cba,null));};exports[_0x8502('0x100')]=function(_0x35c8f6,_0x39cb36){var _0x3495f2=['mail',_0x8502('0x101'),'sms',_0x8502('0x102'),_0x8502('0x103'),_0x8502('0x104'),'voice'];var _0x2b49a5={'offset':0x0,'order':qs[_0x8502('0x33')](_0x8502('0x105'))},_0x11422c={'count':0x0,'rows':[]};Promise['resolve']()[_0x8502('0x19')](function(){if(_0x35c8f6[_0x8502('0x2e')]['channel']){if(!_[_0x8502('0x106')](_0x3495f2,_0x35c8f6['query'][_0x8502('0x107')][_0x8502('0x108')]())){throw new Error(_0x8502('0x109'));}_0x3495f2=[_0x35c8f6[_0x8502('0x2e')][_0x8502('0x107')][_0x8502('0x108')]()];}if(_0x35c8f6['query']['range']){try{var _0x3ab37d=JSON[_0x8502('0x10a')](_0x35c8f6[_0x8502('0x2e')]['range']);if(!moment(_0x3ab37d[_0x8502('0x39')])[_0x8502('0x10b')]()){throw new Error(_0x8502('0x10c'));}if(!moment(_0x3ab37d['to'])[_0x8502('0x10b')]()){throw new Error(_0x8502('0x10d'));}}catch(_0x43147e){throw new Error('Invalid\x20createdAt\x20filter');}}if(!_0x35c8f6[_0x8502('0x2e')]['hasOwnProperty'](_0x8502('0x32'))){_0x2b49a5[_0x8502('0x14')]=qs['limit'](_0x35c8f6[_0x8502('0x2e')][_0x8502('0x14')]||0xa);_0x2b49a5[_0x8502('0x16')]=qs[_0x8502('0x16')](_0x35c8f6[_0x8502('0x2e')][_0x8502('0x16')]);}var _0x30e357=_0x3495f2[_0x8502('0x4b')](function(_0x278d44){if(_0x278d44==='voice'){var _0x498816={'attributes':['id',_0x8502('0x10e'),'type',_0x8502('0x10f'),'destination','callerid',_0x8502('0x110'),_0x8502('0x111'),_0x8502('0x112'),_0x8502('0x113'),'createdAt',_0x8502('0x114'),_0x8502('0x115'),_0x8502('0x116'),_0x8502('0x117')],'where':{'ContactId':_0x35c8f6['params']['id']},'include':[{'model':db['User'],'as':_0x8502('0x4d'),'attributes':['id',_0x8502('0x1f'),'fullname',_0x8502('0x8a')]}],'order':[[_0x8502('0x118'),_0x8502('0x119')]]};if(_0x35c8f6[_0x8502('0x2e')][_0x8502('0x11a')]){_0x498816['where']['createdAt']={'$gte':_0x3ab37d[_0x8502('0x39')],'$lte':_0x3ab37d['to']};}return db[_0x8502('0xa0')][_0x8502('0x11b')](_0x498816)[_0x8502('0x19')](function(_0x20eeae){_0x11422c['count']+=_0x20eeae['count'];return _[_0x8502('0x4b')](_0x20eeae[_0x8502('0x83')],function(_0x15bceb){var _0x1ee39a=_0x15bceb['get']({'plain':!![]});_0x1ee39a[_0x8502('0x107')]=_0x278d44;if(_0x1ee39a[_0x8502('0x4d')]){_0x1ee39a[_0x8502('0x4d')]={'id':_0x1ee39a['User']['id'],'name':_0x1ee39a[_0x8502('0x4d')]['name'],'fullname':_0x1ee39a['User'][_0x8502('0x11c')],'alias':_0x1ee39a[_0x8502('0x4d')][_0x8502('0x8a')]};}return _0x1ee39a;});});}else{var _0x375bd1=_[_0x8502('0x11d')](_0x278d44)+(_0x278d44==='chat'?'Website':'Account');var _0x4f01d0={'attributes':['id','closed','closedAt',_0x8502('0x118'),'note',_0x8502('0x11e'),_0x8502('0x11f'),_0x8502('0x120'),_0x8502('0x117'),_0x375bd1+'Id'],'where':{'ContactId':_0x35c8f6[_0x8502('0x85')]['id']},'include':[{'model':db[_0x375bd1],'as':_0x8502('0x121'),'attributes':['id',_0x8502('0x1f'),'key']},{'model':db[_0x8502('0x4d')],'as':_0x8502('0x122'),'attributes':['id',_0x8502('0x1f'),_0x8502('0x11c')]},{'model':db[_0x8502('0x48')],'as':_0x8502('0x82'),'attributes':['id',_0x8502('0x1f'),_0x8502('0x38')],'through':{'attributes':[]}}],'order':[[_0x8502('0x118'),'DESC']]};if(_0x35c8f6['query'][_0x8502('0x11a')]){_0x4f01d0['where'][_0x8502('0x118')]={'$gte':_0x3ab37d['from'],'$lte':_0x3ab37d['to']};}switch(_0x278d44){case'chat':_0x4f01d0['attributes']['push'](_0x8502('0x123'),_0x8502('0x124'),_0x8502('0x125'),'deviceModel','osName','ratingMessage',_0x8502('0x126'),'ratingValue',_0x8502('0x127'));break;case _0x8502('0x128'):_0x4f01d0['attributes'][_0x8502('0x27')]('subject',_0x8502('0x129'));break;case _0x8502('0x102'):_0x4f01d0[_0x8502('0x30')][_0x8502('0x27')](_0x8502('0x12a'),_0x8502('0x12b'));break;}return db[_[_0x8502('0x11d')](_0x278d44)+'Interaction']['findAndCountAll'](_0x4f01d0)['then'](function(_0x5110ab){_0x11422c[_0x8502('0x15')]+=_0x5110ab[_0x8502('0x15')];return _[_0x8502('0x4b')](_0x5110ab['rows'],function(_0x2e598c){var _0x321b99=_0x2e598c['get']({'plain':!![]});_0x321b99[_0x8502('0x107')]=_0x278d44;if(_0x321b99[_0x8502('0x122')]){_0x321b99[_0x8502('0x122')]={'id':_0x321b99[_0x8502('0x122')]['id'],'name':_0x321b99[_0x8502('0x122')][_0x8502('0x1f')],'fullname':_0x321b99[_0x8502('0x122')][_0x8502('0x11c')]};}return _0x321b99;});});}});return Promise[_0x8502('0x2a')](_0x30e357);})[_0x8502('0x19')](function(_0x55ce0d){return _(_0x55ce0d)[_0x8502('0x12c')]()[_0x8502('0x12d')](_0x8502('0x118'))[_0x8502('0x12e')]()['value']();})[_0x8502('0x19')](function(_0x659141){_0x11422c['rows']=_0x2b49a5[_0x8502('0x14')]?_0x659141[_0x8502('0x12f')](_0x2b49a5['offset'],_0x2b49a5[_0x8502('0x16')]+_0x2b49a5[_0x8502('0x14')]):_0x659141;return _0x11422c;})[_0x8502('0x19')](respondWithFilteredResult(_0x39cb36,_0x2b49a5))[_0x8502('0x84')](handleError(_0x39cb36,null));};
\ No newline at end of file
+var _0x769c=['role','agent','some','user','getLists','c.ListId\x20IS\x20NULL','sequelize','toString','keyBy','merge','c.firstName','c.lastName','c.mobile','c.fax','c.email','c.createdAt','c.CompanyId','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','Tags','rows','catch','params','describe','tags','displayName','analytics','columnName','alias','custom','values','body','findAll','get','mergeWith','isArray','info','[CmContact][merge]\x20to\x20%s\x20from\x20%s','CmHopper','[CmContact][merge][destroy][CmHopper],\x20%s','CmHopperBlack','[CmContact][merge][destroy][CmHopperBlack],\x20%s','create','ChatInteraction','update','ChatMessage','MailInteraction','MailMessage','SmsInteraction','SmsMessage','FaxMessage','OpenchannelInteraction','OpenchannelMessage','CmContactHasItem','CmHopperHistory','ReportAgentPreview','VoiceCallReport','ChatQueueReport','MailQueueReport','OpenchannelQueueReport','SmsQueueReport','JscriptySessionReport','WhatsappInteraction','WhatsappMessage','WhatsappQueueReport','destroy','join','dialTimezone','timezones','utcOffset','additionalPhones','bulkCreate','each','duplicates','$or','spread','contact','show','Tag','ContactItemType','$and','omit','format','cf_%d','pickBy','table','cm_contacts','id\x20=\x20?','toParam','phone','getTags','rawAttributes','options','setTags','ids','setAdditionalPhones','OrderBy','items','item_types','ItemTypeId','description','PHONE','item','literal','`ItemType`.OrderBy','ItemType.OrderBy','CmHopperAdditionalPhone','ItemType','getAdditionalPhones','duplicateAdditionalPhones','fromContactId','CmContactId','toContactId','rescheduleAdditionalPhones','hopperId','getHopperHistories','ContactId','includeAll','include','getHopperFinals','CmHopperFinal','getJscriptySessions','uploadCsv','No\x20ListId\x20specified','binding_keys','No\x20association\x20keys\x20specified!','binding_values','No\x20association\x20values\x20specified!','socket_timestamp','Unable\x20to\x20synchronize\x20socket,\x20no\x20timestamp\x20passed','Incorrect\x20binding\x20parameters\x20passed!','No\x20phone\x20column\x20specified','firstName','No\x20firstName\x20column\x20specified','filename','0777','child_process','fork','../../components/import/cm/csv','CompanyId','File\x20uploaded\x20correctly!','pid','file','parse','meta','binding','../../components/import/cm/csv2','stringify','message','error\x20child\x20process','importUpdates','../../components/import/cm/csvUpdates','exit','getJourney','mail','chat','sms','openchannel','fax','whatsapp','voice','toLowerCase','Invalid\x20channel','channel','range','isValid','Invalid\x20date\x20for\x20range\x20to\x20filter','Invalid\x20createdAt\x20filter','uniqueid','destination','endtime','createdAt','userDisposition','userSecondDisposition','userThirdDisposition','fullname','findAndCountAll','startCase','Account','closed','closedAt','note','disposition','secondDisposition','thirdDisposition','UserId','Owner','browserName','customerPort','deviceModel','osName','ratingType','ratingValue','subject','substatus','Interaction','flatten','moment','bluebird','util','path','lodash','papaparse','api','../../config/environment/shared','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmContact.socket','register','status','json','offset','undefined','limit','count','set','Content-Range','then','end','sendStatus','error','stack','name','send','index','CmContact','length','startsWith','cf_','push','CmCustomField','findOne','trimStart','all','fieldType','model','keys','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','from','left_join','cm_user_has_contacts','uc.CmContactId\x20=\x20c.id','cm_contact_has_tags','ct.CmContactId\x20=\x20c.id','tools_tags','c.deletedAt\x20IS\x20NULL','expr','search','parseSearch','sqlOperator','conditions','find','value','split','map','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','and','uc.UserId\x20=\x20?','dateOfBirth','datetime','castTo','DATE','buildExpression','type','text','filter','isNil','Contact','isEmpty','ListId','c.ListId\x20IN\x20?','concat','tag','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.email\x20LIKE\x20?','c.firstName\x20LIKE\x20?','c.lastName\x20LIKE\x20?','c.id','Sequelize','QueryTypes','SELECT','clone','DESC','having','t.id\x20IN\x20?','resolve'];(function(_0x5c8cea,_0x1df01b){var _0x325f5b=function(_0x516277){while(--_0x516277){_0x5c8cea['push'](_0x5c8cea['shift']());}};_0x325f5b(++_0x1df01b);}(_0x769c,0xc5));var _0xc769=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x769c[_0x413feb];return _0x40ee88;};'use strict';var moment=require(_0xc769('0x0'));var BPromise=require(_0xc769('0x1'));var util=require(_0xc769('0x2'));var path=require(_0xc769('0x3'));var fs=require('fs');var _=require(_0xc769('0x4'));var squel=require('squel');var Papa=require(_0xc769('0x5'));var Redis=require('ioredis');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var logger=require('../../config/logger')(_0xc769('0x6'));var config=require('../../config/environment');var shared=require(_0xc769('0x7'));var db=require(_0xc769('0x8'))['db'];config[_0xc769('0x9')]=_[_0xc769('0xa')](config[_0xc769('0x9')],{'host':_0xc769('0xb'),'port':0x18eb});var socket=require(_0xc769('0xc'))(new Redis(config[_0xc769('0x9')]));require(_0xc769('0xd'))[_0xc769('0xe')](socket);function respondWithResult(_0x4c9c5b,_0x7669d6){_0x7669d6=_0x7669d6||0xc8;return function(_0x473092){if(_0x473092){return _0x4c9c5b[_0xc769('0xf')](_0x7669d6)[_0xc769('0x10')](_0x473092);}};}function respondWithFilteredResult(_0xfec9b9,_0x2c0f91){return function(_0x1df27a){if(_0x1df27a){var _0x32193c=typeof _0x2c0f91[_0xc769('0x11')]===_0xc769('0x12')&&typeof _0x2c0f91[_0xc769('0x13')]===_0xc769('0x12');var _0x5a29d0=_0x1df27a[_0xc769('0x14')];var _0x1517ab=_0x32193c?0x0:_0x2c0f91[_0xc769('0x11')];var _0x20db75=_0x32193c?_0x1df27a['count']:_0x2c0f91[_0xc769('0x11')]+_0x2c0f91['limit'];var _0xde9221;if(_0x20db75>=_0x5a29d0){_0x20db75=_0x5a29d0;_0xde9221=0xc8;}else{_0xde9221=0xce;}_0xfec9b9['status'](_0xde9221);return _0xfec9b9[_0xc769('0x15')](_0xc769('0x16'),_0x1517ab+'-'+_0x20db75+'/'+_0x5a29d0)[_0xc769('0x10')](_0x1df27a);}return null;};}function saveUpdates(_0x31d9ba){return function(_0x279182){if(_0x279182){return _0x279182['update'](_0x31d9ba)['then'](function(_0x3b420f){return _0x3b420f;});}return null;};}function removeEntity(_0x4e65e6){return function(_0xc49f72){if(_0xc49f72){return _0xc49f72['destroy']()[_0xc769('0x17')](function(){_0x4e65e6[_0xc769('0xf')](0xcc)[_0xc769('0x18')]();});}};}function handleEntityNotFound(_0x504b44){return function(_0x2c31fb){if(!_0x2c31fb){_0x504b44[_0xc769('0x19')](0x194);}return _0x2c31fb;};}function handleError(_0x393565,_0xeb2038){_0xeb2038=_0xeb2038||0x1f4;return function(_0x3db286){logger[_0xc769('0x1a')](_0x3db286[_0xc769('0x1b')]);if(_0x3db286['name']){delete _0x3db286[_0xc769('0x1c')];}_0x393565[_0xc769('0xf')](_0xeb2038)[_0xc769('0x1d')](_0x3db286);};}exports[_0xc769('0x1e')]=function(_0xce1ea,_0x45e784){var _0x45c979={},_0x5597ae={},_0x317886={'count':0x0,'rows':[]};return db[_0xc769('0x1f')]['describe']()[_0xc769('0x17')](function(_0x314059){var _0x1aadaf=[];for(var _0x56b8a1=0x0;_0x56b8a1<Object['keys'](_0x314059)[_0xc769('0x20')];_0x56b8a1++){var _0x5c5ac4=Object['keys'](_0x314059)[_0x56b8a1];if(_[_0xc769('0x21')](_0x5c5ac4,_0xc769('0x22'))){_0x1aadaf[_0xc769('0x23')](db[_0xc769('0x24')][_0xc769('0x25')]({'where':{'id':_[_0xc769('0x26')](_0x5c5ac4,_0xc769('0x22'))},'raw':!![]}));}}return BPromise[_0xc769('0x27')](_0x1aadaf)[_0xc769('0x17')](function(_0x30bcd9){for(var _0xb8a6c7=0x0;_0xb8a6c7<_0x30bcd9[_0xc769('0x20')];_0xb8a6c7++){if(_0x30bcd9[_0xb8a6c7]){var _0x59d326='cf_'+_0x30bcd9[_0xb8a6c7]['id'];var _0x263e98=_0x314059[_0x59d326];_0x263e98[_0xc769('0x28')]=_0x30bcd9[_0xb8a6c7]['type'];}}return _0x314059;});})[_0xc769('0x17')](function(_0x5ea61f){_0x5597ae[_0xc769('0x29')]=_[_0xc769('0x2a')](_0x5ea61f);_0x5597ae['query']=_[_0xc769('0x2a')](_0xce1ea[_0xc769('0x2b')]);_0x5597ae[_0xc769('0x2c')]=_['intersection'](_0x5597ae['model'],_0x5597ae[_0xc769('0x2b')]);_0x45c979[_0xc769('0x2d')]=_[_0xc769('0x2e')](_0x5597ae[_0xc769('0x29')],qs[_0xc769('0x2f')](_0xce1ea[_0xc769('0x2b')][_0xc769('0x2f')]));_0x45c979[_0xc769('0x2d')]=_0x45c979[_0xc769('0x2d')][_0xc769('0x20')]?_0x45c979[_0xc769('0x2d')]:_0x5597ae[_0xc769('0x29')];if(!_0xce1ea[_0xc769('0x2b')][_0xc769('0x30')](_0xc769('0x31'))){_0x45c979[_0xc769('0x13')]=qs[_0xc769('0x13')](_0xce1ea[_0xc769('0x2b')]['limit']);_0x45c979[_0xc769('0x11')]=qs[_0xc769('0x11')](_0xce1ea[_0xc769('0x2b')]['offset']);}_0x45c979[_0xc769('0x32')]=qs['sort'](_0xce1ea[_0xc769('0x2b')][_0xc769('0x33')]);_0x45c979[_0xc769('0x34')]=qs[_0xc769('0x2c')](_[_0xc769('0x35')](_0xce1ea[_0xc769('0x2b')],_0x5597ae[_0xc769('0x2c')]),_0x5ea61f);var _0x2cc0a1=[];var _0x163c48=squel[_0xc769('0x36')]()[_0xc769('0x37')]('id')[_0xc769('0x37')](_0xc769('0x1c'))['field'](_0xc769('0x38'))['from']('tools_tags');var _0x359e93=squel[_0xc769('0x36')]()[_0xc769('0x39')]('cm_contacts','c')[_0xc769('0x3a')](_0xc769('0x3b'),'uc',_0xc769('0x3c'))[_0xc769('0x3a')](_0xc769('0x3d'),'ct',_0xc769('0x3e'))[_0xc769('0x3a')](_0xc769('0x3f'),'t','t.id\x20=\x20ct.TagId')[_0xc769('0x34')](_0xc769('0x40'));var _0x4af9cf=squel[_0xc769('0x41')]();var _0x4a6e63=[];var _0x231e44=squel[_0xc769('0x41')]();var _0x461e9e;if(_0xce1ea[_0xc769('0x2b')][_0xc769('0x42')]){_0x461e9e=as[_0xc769('0x43')](_0xce1ea[_0xc769('0x2b')][_0xc769('0x42')]);var _0x549edb=_0x461e9e[_0xc769('0x44')];for(var _0x9477d1=0x0;_0x9477d1<_0x461e9e[_0xc769('0x45')]['length'];_0x9477d1++){var _0x37bd4a=_0x461e9e[_0xc769('0x45')][_0x9477d1];var _0xc18c74='c';var _0x525dae=_(_0x5ea61f)[_0xc769('0x2a')]()[_0xc769('0x46')](function(_0x4477cc){return _0x4477cc===_0x37bd4a[_0xc769('0x37')];});if(_0x525dae)_0x525dae=_0x5ea61f[_0x37bd4a['field']];if(!_0x525dae){if(_0x37bd4a['field']==='Tag'){var _0x5ed946=_0x37bd4a[_0xc769('0x47')][_0xc769('0x48')](',')[_0xc769('0x49')](function(_0x156577){return Number(_0x156577);});_0x5ed946[_0xc769('0x4a')](function(_0x50e04a){_0x231e44['or'](_0xc769('0x4b'),'%,'+_0x50e04a+',%');});_0x4a6e63=_[_0xc769('0x4c')](_0x4a6e63,_0x5ed946);}else if(_0x37bd4a[_0xc769('0x37')]===_0xc769('0x4d')){_0x4af9cf[_0xc769('0x4e')](_0xc769('0x4f'),_0x37bd4a[_0xc769('0x47')]);}}else{if(_0x37bd4a[_0xc769('0x37')]===_0xc769('0x50')||_0x525dae[_0xc769('0x28')]===_0xc769('0x51'))_0x37bd4a[_0xc769('0x52')]=_0xc769('0x53');var _0x39bc3d=as[_0xc769('0x54')](_0xc18c74,_0x525dae[_0xc769('0x55')],_0x37bd4a);_0x4af9cf[_0x549edb](_0x39bc3d[_0xc769('0x56')],_0x39bc3d[_0xc769('0x47')]['start'],_0x39bc3d[_0xc769('0x47')][_0xc769('0x18')]);}}}else{var _0x210d28=_(Object[_0xc769('0x2a')](_0xce1ea[_0xc769('0x2b')]))[_0xc769('0x49')](function(_0x36b94c){return _0x5ea61f[_0xc769('0x30')](_0x36b94c)?_0x36b94c:undefined;})[_0xc769('0x57')](function(_0xa17c19){return!_[_0xc769('0x58')](_0xa17c19);})['value']();if(_0xce1ea[_0xc769('0x2b')][_0xc769('0x59')])_0x210d28[_0xc769('0x23')](_0xc769('0x59'));if(!_[_0xc769('0x5a')](_0x210d28)){_0x210d28[_0xc769('0x4a')](function(_0x5c9e3b){if(_0x5c9e3b===_0xc769('0x5b')){_0x359e93[_0xc769('0x34')](_0xc769('0x5c'),[][_0xc769('0x5d')](_0xce1ea[_0xc769('0x2b')][_0x5c9e3b]));}else if(_0x5c9e3b===_0xc769('0x59')){var _0x3e9aba='%'+_0xce1ea['query'][_0x5c9e3b]+'%';_0x359e93[_0xc769('0x34')]('CONCAT_WS(\x27\x20\x27,\x20c.firstName,\x20c.lastName,\x20c.email)\x20LIKE\x20?',_0x3e9aba);}else{_0x359e93[_0xc769('0x34')]('c.'+_0x5c9e3b+'\x20=\x20?',_0xce1ea[_0xc769('0x2b')][_0x5c9e3b]);}});}if(_0xce1ea[_0xc769('0x2b')]['tag']){_0x4a6e63=_['isArray'](_0xce1ea[_0xc769('0x2b')][_0xc769('0x5e')])?_0xce1ea[_0xc769('0x2b')][_0xc769('0x5e')]:new Array(_0xce1ea[_0xc769('0x2b')][_0xc769('0x5e')]);_0x4a6e63[_0xc769('0x4a')](function(_0x21739f){_0x231e44['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x21739f+',%');});}if(_0xce1ea[_0xc769('0x2b')][_0xc769('0x57')]){var _0x340ddb=_0xce1ea[_0xc769('0x2b')][_0xc769('0x57')][_0xc769('0x5f')]('\x5c','\x5c\x5c')[_0xc769('0x5f')](/'/g,'\x27\x27');if(_0x340ddb[_0xc769('0x48')]('\x20')[_0xc769('0x20')]>0x1){_0x4af9cf['or'](_0xc769('0x60'),qs[_0xc769('0x61')](_0x340ddb),null);}else{if(qs[_0xc769('0x62')](_0x340ddb)){_0x4af9cf['or'](_0xc769('0x63'),_0x340ddb+'%');_0x4af9cf['or'](_0xc769('0x64'),_0x340ddb+'%');_0x4af9cf['or'](_0xc769('0x65'),_0x340ddb+'%');_0x4af9cf['or'](_0xc769('0x66'),_0x340ddb+'%');}else if(qs[_0xc769('0x67')](_0x340ddb)){_0x4af9cf['or'](_0xc769('0x68'),_0x340ddb+'%');}else{_0x4af9cf['or'](_0xc769('0x69'),'%'+_0x340ddb+'%');_0x4af9cf['or'](_0xc769('0x6a'),'%'+_0x340ddb+'%');_0x4af9cf['or'](_0xc769('0x68'),'%'+_0x340ddb+'%');}}}}_0x359e93[_0xc769('0x34')](_0x4af9cf);_0x359e93['group'](_0xc769('0x6b'));var _0x4bea89={'type':db[_0xc769('0x6c')][_0xc769('0x6d')][_0xc769('0x6e')],'raw':!![]};var _0x5aa14d=_0x359e93[_0xc769('0x6f')]()['field'](_0xc769('0x6b'));if(_0x45c979[_0xc769('0x32')]){_0x45c979[_0xc769('0x32')][_0xc769('0x4a')](function(_0x82f2dd){_0x359e93[_0xc769('0x32')]('c.'+_0x82f2dd[0x0],_0x82f2dd[0x1]===_0xc769('0x70')?![]:!![]);});}if(!_[_0xc769('0x5a')](_0x4a6e63)){_0x359e93[_0xc769('0x71')](_0x231e44);_0x5aa14d[_0xc769('0x34')](_0xc769('0x72'),_0x4a6e63);}BPromise[_0xc769('0x73')]()[_0xc769('0x17')](function(){if(!_0x461e9e)return;if(_0xce1ea['user'][_0xc769('0x74')]!==_0xc769('0x75'))return;if(!_[_0xc769('0x76')](_0x461e9e['conditions'],[_0xc769('0x37'),_0xc769('0x4d')])){return _0xce1ea[_0xc769('0x77')][_0xc769('0x78')]({'attributes':['id'],'raw':!![]})[_0xc769('0x17')](function(_0x3040e1){if(_['isEmpty'](_0x3040e1)){_0x5aa14d['where'](_0xc769('0x79'));_0x359e93['where'](_0xc769('0x79'));}else{_0x5aa14d['where'](_0xc769('0x5c'),_['map'](_0x3040e1,'id'));_0x359e93[_0xc769('0x34')](_0xc769('0x5c'),_[_0xc769('0x49')](_0x3040e1,'id'));}});}})[_0xc769('0x17')](function(){if(_0xce1ea[_0xc769('0x77')][_0xc769('0x74')]===_0xc769('0x75')&&!_0x461e9e&&!_0xce1ea[_0xc769('0x2b')]['ListId'])return[];return db[_0xc769('0x7a')][_0xc769('0x2b')](_0x5aa14d[_0xc769('0x7b')](),_0x4bea89);})[_0xc769('0x17')](function(_0x16a138){_0x317886[_0xc769('0x14')]=_0x16a138[_0xc769('0x20')];if(_0x317886['count']===0x0)return[];return db[_0xc769('0x7a')][_0xc769('0x2b')](_0x163c48['toString'](),_0x4bea89)[_0xc769('0x17')](function(_0xac1500){_0x2cc0a1=_[_0xc769('0x7c')](_0xac1500,'id');_0x4bea89=_[_0xc769('0x7d')](_0x4bea89,{'model':db[_0xc769('0x1f')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0xce1ea[_0xc769('0x2b')]['fields']){_0x45c979['attributes'][_0xc769('0x4a')](function(_0x124c87){_0x359e93[_0xc769('0x37')]('c.'+_0x124c87);});}else{_0x359e93['field'](_0xc769('0x6b'));_0x359e93[_0xc769('0x37')](_0xc769('0x7e'));_0x359e93[_0xc769('0x37')](_0xc769('0x7f'));_0x359e93['field']('c.phone');_0x359e93[_0xc769('0x37')](_0xc769('0x80'));_0x359e93[_0xc769('0x37')](_0xc769('0x81'));_0x359e93[_0xc769('0x37')](_0xc769('0x82'));_0x359e93[_0xc769('0x37')]('c.ListId');_0x359e93['field'](_0xc769('0x83'));_0x359e93[_0xc769('0x37')]('c.deletedAt');_0x359e93[_0xc769('0x37')](_0xc769('0x84'));_0x359e93[_0xc769('0x37')](_0xc769('0x85'),_0xc769('0x86'));}if(_0x45c979[_0xc769('0x13')])_0x359e93['limit'](_0x45c979['limit']);if(_0x45c979[_0xc769('0x11')])_0x359e93[_0xc769('0x11')](_0x45c979[_0xc769('0x11')]);return db['sequelize'][_0xc769('0x2b')](_0x359e93[_0xc769('0x7b')](),_0x4bea89);});})[_0xc769('0x17')](function(_0x25d560){_0x25d560[_0xc769('0x4a')](function(_0x1bd790){if(_0x1bd790[_0xc769('0x86')]){_0x1bd790[_0xc769('0x87')]=[];_0x1bd790['TagIds']['split'](',')[_0xc769('0x4a')](function(_0x5d248a){_0x1bd790[_0xc769('0x87')][_0xc769('0x23')](_0x2cc0a1[_0x5d248a]);});}delete _0x1bd790['TagIds'];});_0x317886[_0xc769('0x88')]=_0x25d560;return _0x317886;})[_0xc769('0x17')](respondWithFilteredResult(_0x45e784,_0x45c979));})[_0xc769('0x89')](handleError(_0x45e784,null));};exports['destroy']=function(_0x4c2a95,_0xa9ed49){return db[_0xc769('0x1f')][_0xc769('0x46')]({'where':{'id':_0x4c2a95[_0xc769('0x8a')]['id']}})[_0xc769('0x17')](handleEntityNotFound(_0xa9ed49,null))[_0xc769('0x17')](removeEntity(_0xa9ed49,null))[_0xc769('0x89')](handleError(_0xa9ed49,null));};exports[_0xc769('0x8b')]=function(_0x2bf6d2,_0x45b151){return db[_0xc769('0x1f')][_0xc769('0x8b')]()[_0xc769('0x17')](function(_0x11c43c){delete _0x11c43c[_0xc769('0x8c')];for(var _0xa881b2=0x0;_0xa881b2<Object['keys'](_0x11c43c)[_0xc769('0x20')];_0xa881b2++){var _0x3a99c2=Object[_0xc769('0x2a')](_0x11c43c)[_0xa881b2];if(!_[_0xc769('0x21')](_0x3a99c2,_0xc769('0x22'))){_0x11c43c[_0x3a99c2]['columnName']=_0x3a99c2;_0x11c43c[_0x3a99c2][_0xc769('0x8d')]=_0x3a99c2;}}return _0x11c43c;})[_0xc769('0x17')](function(_0xb09403){var _0xef77ff={'where':Boolean(_0x2bf6d2[_0xc769('0x2b')][_0xc769('0x8e')])===!![]?undefined:{'$or':[{'ListId':_0x2bf6d2[_0xc769('0x2b')]['id']},{'ListId':null}]},'raw':!![]};return db[_0xc769('0x24')]['findAll'](_0xef77ff)['then'](function(_0x3c6e78){for(var _0x2ac6fd=0x0;_0x2ac6fd<_0x3c6e78[_0xc769('0x20')];_0x2ac6fd++){var _0x8f99c8=_0xc769('0x22')+_0x3c6e78[_0x2ac6fd]['id'];_0xb09403[_0x8f99c8][_0xc769('0x8f')]=_0x8f99c8;_0xb09403[_0x8f99c8][_0xc769('0x8d')]=_0x3c6e78[_0x2ac6fd][_0xc769('0x90')];_0xb09403[_0x8f99c8][_0xc769('0x91')]={'type':_0x3c6e78[_0x2ac6fd][_0xc769('0x55')],'values':_0x3c6e78[_0x2ac6fd][_0xc769('0x92')]};}Object[_0xc769('0x2a')](_0xb09403)['forEach'](function(_0xdd06d5){if(!_0xb09403[_0xdd06d5][_0xc769('0x30')](_0xc769('0x8f'))){delete _0xb09403[_0xdd06d5];}});return _0xb09403;});})[_0xc769('0x17')](respondWithResult(_0x45b151,null))[_0xc769('0x89')](handleError(_0x45b151,null));};exports[_0xc769('0x7d')]=function(_0x668327,_0xe3f7d1){var _0x5e8f2e;var _0x332033;var _0x436f12;if(_0x668327[_0xc769('0x93')]['id']){delete _0x668327['body']['id'];}return db[_0xc769('0x1f')][_0xc769('0x94')]({'where':{'id':[_0x668327[_0xc769('0x93')]['to'],_0x668327[_0xc769('0x93')]['from']]}})['then'](function(_0x364240){if(_0x364240){if(_0x364240[_0xc769('0x20')]!==0x2){return null;}_0x364240[0x0]=_0x364240[0x0][_0xc769('0x95')]({'plain':!![]});_0x364240[0x1]=_0x364240[0x1][_0xc769('0x95')]({'plain':!![]});delete _0x364240[0x0]['id'];delete _0x364240[0x1]['id'];return _[_0xc769('0x96')](_0x364240[0x0],_0x364240[0x1],function(_0x1cbbbe,_0x6bf01b){if(Array[_0xc769('0x97')](_0x6bf01b)&&!_0x6bf01b[_0xc769('0x20')]){return _0x1cbbbe;}else if(!_0x6bf01b){return _0x1cbbbe;}});}})[_0xc769('0x17')](handleEntityNotFound(_0xe3f7d1,null))[_0xc769('0x17')](function(_0x202b01){if(_0x202b01){if(_0x202b01['tags']&&_['isArray'](_0x202b01['tags'])){_0x202b01['tags']=_0x202b01[_0xc769('0x8c')]['join']();}logger[_0xc769('0x98')](_0xc769('0x99'),_0x668327['body']['to'],_0x668327[_0xc769('0x93')][_0xc769('0x39')]);return db[_0xc769('0x9a')]['destroy']({'where':{'ContactId':[_0x668327[_0xc769('0x93')]['to'],_0x668327[_0xc769('0x93')]['from']]}})[_0xc769('0x17')](function(_0x3c5801){logger['info'](_0xc769('0x9b'),_0x3c5801);return db[_0xc769('0x9c')]['destroy']({'where':{'ContactId':[_0x668327[_0xc769('0x93')]['to'],_0x668327[_0xc769('0x93')][_0xc769('0x39')]]}})[_0xc769('0x17')](function(_0x5ba544){logger['info'](_0xc769('0x9d'),_0x5ba544);return db[_0xc769('0x1f')][_0xc769('0x9e')](_0x202b01);});});}})['then'](function(_0x401542){if(_0x401542){_0x5e8f2e=_0x401542;_0x332033={'ContactId':_0x5e8f2e['id']};_0x436f12={'where':{'ContactId':[_0x668327['body']['to'],_0x668327['body']['from']]}};return db[_0xc769('0x9f')][_0xc769('0xa0')](_0x332033,_0x436f12);}})[_0xc769('0x17')](function(){if(_0x5e8f2e){return db[_0xc769('0xa1')]['update'](_0x332033,_0x436f12);}})[_0xc769('0x17')](function(){if(_0x5e8f2e){return db['ChatOfflineMessage'][_0xc769('0xa0')](_0x332033,_0x436f12);}})['then'](function(){if(_0x5e8f2e){return db[_0xc769('0xa2')][_0xc769('0xa0')](_0x332033,_0x436f12);}})['then'](function(){if(_0x5e8f2e){return db['MailMessage'][_0xc769('0xa0')](_0x332033,_0x436f12);}})[_0xc769('0x17')](function(){if(_0x5e8f2e){return db[_0xc769('0xa2')][_0xc769('0xa0')](_0x332033,_0x436f12);}})[_0xc769('0x17')](function(){if(_0x5e8f2e){return db[_0xc769('0xa3')][_0xc769('0xa0')](_0x332033,_0x436f12);}})[_0xc769('0x17')](function(){if(_0x5e8f2e){return db[_0xc769('0xa4')][_0xc769('0xa0')](_0x332033,_0x436f12);}})[_0xc769('0x17')](function(){if(_0x5e8f2e){return db[_0xc769('0xa5')][_0xc769('0xa0')](_0x332033,_0x436f12);}})[_0xc769('0x17')](function(){if(_0x5e8f2e){return db['FaxInteraction'][_0xc769('0xa0')](_0x332033,_0x436f12);}})['then'](function(){if(_0x5e8f2e){return db[_0xc769('0xa6')]['update'](_0x332033,_0x436f12);}})['then'](function(){if(_0x5e8f2e){return db[_0xc769('0xa7')][_0xc769('0xa0')](_0x332033,_0x436f12);}})['then'](function(){if(_0x5e8f2e){return db[_0xc769('0xa8')]['update'](_0x332033,_0x436f12);}})[_0xc769('0x17')](function(){if(_0x5e8f2e){return db[_0xc769('0xa9')]['update']({'CmContactId':_0x5e8f2e['id']},{'where':{'CmContactId':[_0x668327[_0xc769('0x93')]['to'],_0x668327[_0xc769('0x93')][_0xc769('0x39')]]}});}})[_0xc769('0x17')](function(){if(_0x5e8f2e){return db['CmHopperFinal']['update'](_0x332033,_0x436f12);}})[_0xc769('0x17')](function(){if(_0x5e8f2e){return db[_0xc769('0xaa')][_0xc769('0xa0')](_0x332033,_0x436f12);}})[_0xc769('0x17')](function(){if(_0x5e8f2e){return db[_0xc769('0xab')]['update'](_0x332033,_0x436f12);}})[_0xc769('0x17')](function(){if(_0x5e8f2e){return db[_0xc769('0xac')][_0xc769('0xa0')](_0x332033,_0x436f12);}})[_0xc769('0x17')](function(){if(_0x5e8f2e){return db[_0xc769('0xad')][_0xc769('0xa0')](_0x332033,_0x436f12);}})[_0xc769('0x17')](function(){if(_0x5e8f2e){return db['FaxQueueReport'][_0xc769('0xa0')](_0x332033,_0x436f12);}})[_0xc769('0x17')](function(){if(_0x5e8f2e){return db[_0xc769('0xae')][_0xc769('0xa0')](_0x332033,_0x436f12);}})[_0xc769('0x17')](function(){if(_0x5e8f2e){return db[_0xc769('0xaf')][_0xc769('0xa0')](_0x332033,_0x436f12);}})[_0xc769('0x17')](function(){if(_0x5e8f2e){return db[_0xc769('0xb0')][_0xc769('0xa0')](_0x332033,_0x436f12);}})['then'](function(){if(_0x5e8f2e){return db[_0xc769('0xb1')]['update'](_0x332033,_0x436f12);}})['then'](function(){if(_0x5e8f2e){return db[_0xc769('0xb2')][_0xc769('0xa0')](_0x332033,_0x436f12);}})['then'](function(){if(_0x5e8f2e){return db[_0xc769('0xb3')]['update'](_0x332033,_0x436f12);}})['then'](function(){if(_0x5e8f2e){return db[_0xc769('0xb4')]['update'](_0x332033,_0x436f12);}})[_0xc769('0x17')](function(){if(_0x5e8f2e){return db['CmContact'][_0xc769('0xb5')]({'where':{'id':[_0x668327['body']['to'],_0x668327[_0xc769('0x93')]['from']]}});}})[_0xc769('0x17')](function(){if(_0x5e8f2e){return _0x5e8f2e;}})[_0xc769('0x17')](respondWithResult(_0xe3f7d1,null))[_0xc769('0x89')](handleError(_0xe3f7d1,null));};exports['create']=function(_0x57c07f,_0x3158bc){return db['CmContact']['describe']()[_0xc769('0x17')](function(_0x28b83a){if(_0x57c07f[_0xc769('0x93')][_0xc769('0x8c')]&&_['isArray'](_0x57c07f[_0xc769('0x93')][_0xc769('0x8c')])){if(_0x57c07f[_0xc769('0x93')][_0xc769('0x8c')][_0xc769('0x20')]){_0x57c07f[_0xc769('0x93')][_0xc769('0x8c')]=_0x57c07f['body'][_0xc769('0x8c')][_0xc769('0xb6')](';')+';';}else{_0x57c07f[_0xc769('0x93')][_0xc769('0x8c')]=null;}}else{_0x57c07f['body'][_0xc769('0x8c')]=null;}if(!_[_0xc769('0x58')](_0x57c07f[_0xc769('0x93')][_0xc769('0xb7')])){var _0x2f11fc=_0x57c07f[_0xc769('0x93')][_0xc769('0xb7')];if(!_[_0xc769('0x58')](shared[_0xc769('0xb8')][_0x2f11fc]))_0x57c07f[_0xc769('0x93')][_0xc769('0xb9')]=shared[_0xc769('0xb8')][_0x2f11fc]['utcOffset'];}return db['CmContact'][_0xc769('0x9e')](_0x57c07f[_0xc769('0x93')],{'fields':_[_0xc769('0x2a')](_0x28b83a),'raw':!![]});})[_0xc769('0x17')](function(_0x1772df){if(_0x57c07f['body'][_0xc769('0xba')]){return insertAdditionalPhones(_0x1772df,_0x57c07f[_0xc769('0x93')]['additionalPhones']);}else{return _0x1772df;}})[_0xc769('0x17')](respondWithResult(_0x3158bc,0xc9))[_0xc769('0x89')](handleError(_0x3158bc,null));};exports[_0xc769('0xbb')]=function(_0x26bfe3,_0x1bf8ba){var _0x1b255e=0x0;var _0x1d97e0=0x0;var _0xadffa6=0x0;var _0x1e6b9d=[];return db['CmContact']['describe']()[_0xc769('0x17')](function(_0x4a3816){return BPromise[_0xc769('0xbc')](_0x26bfe3[_0xc769('0x93')],function(_0x3de657){var _0x312631={'where':{'$or':[]},'defaults':_0x3de657,'fields':_['keys'](_0x4a3816),'raw':!![]};if(_0x3de657[_0xc769('0xbd')]){for(var _0x4d6402=0x0;_0x4d6402<_0x3de657['duplicates'][_0xc769('0x20')];_0x4d6402++){var _0x3628b1={};_0x3628b1[_0x3de657[_0xc769('0xbd')][_0x4d6402]]=_0x3de657[_0x3de657[_0xc769('0xbd')][_0x4d6402]];_0x312631[_0xc769('0x34')][_0xc769('0xbe')][_0xc769('0x23')](_0x3628b1);}_0x312631[_0xc769('0x34')][_0xc769('0x5b')]=_0x3de657[_0xc769('0x5b')];}return db[_0xc769('0x1f')]['findOrCreate'](_0x312631)[_0xc769('0xbf')](function(_0x3fecf7,_0x54cfeb){if(_0x54cfeb){if(_0x3de657[_0xc769('0x30')]('additionalPhones')){_0x1e6b9d[_0xc769('0x23')]({'contact':_0x3fecf7,'additionalPhones':_0x3de657['additionalPhones']});}_0x1b255e++;}else{_0xadffa6++;}})[_0xc769('0x89')](function(){_0x1d97e0++;});});})[_0xc769('0x17')](function(_0x4f735d){if(_0x4f735d){if(_0x1e6b9d['length']>0x0){return new Promise(function(_0x1e9614,_0x4ea12f){var _0x26c770=[];for(var _0x410607=0x0;_0x410607<_0x1e6b9d[_0xc769('0x20')];_0x410607++){_0x26c770[_0xc769('0x23')](insertAdditionalPhones(_0x1e6b9d[_0x410607][_0xc769('0xc0')],_0x1e6b9d[_0x410607][_0xc769('0xba')]));}Promise['all'](_0x26c770)['then'](function(){_0x1e9614(0x1);});})[_0xc769('0x17')](function(){return{'success':_0x1b255e,'failure':_0x1d97e0,'duplicates':_0xadffa6};});}else{return{'success':_0x1b255e,'failure':_0x1d97e0,'duplicates':_0xadffa6};}}})[_0xc769('0x17')](respondWithResult(_0x1bf8ba,0xc9))[_0xc769('0x89')](handleError(_0x1bf8ba,null));};exports[_0xc769('0xc1')]=function(_0x57af40,_0x25164c){var _0x59c7cf;return db[_0xc769('0x1f')][_0xc769('0x8b')]()['then'](function(_0x392563){return db[_0xc769('0x1f')][_0xc769('0x46')]({'where':{'id':_0x57af40[_0xc769('0x8a')]['id']},'include':[{'model':db[_0xc769('0xc2')],'as':'Tags','attributes':['id','name',_0xc769('0x38')],'required':_0x57af40['query'][_0xc769('0x5e')]?!![]:![]},{'model':db[_0xc769('0xa9')],'as':'Phones','where':{'CmContactId':_0x57af40[_0xc769('0x8a')]['id']},'required':![],'include':[{'model':db[_0xc769('0xc3')],'as':'ItemType'}]}],'order':[db['sequelize']['literal']('Phones.OrderBy')],'attributes':_[_0xc769('0x2a')](_0x392563)});})['then'](function(_0x25f77f){if(!_[_0xc769('0x58')](_0x25f77f)){_0x59c7cf=_0x25f77f[_0xc769('0x95')]({'plain':!![]});var _0xccda0b={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x25f77f&&_0x25f77f[_0xc769('0x5b')]){if(_0x25f77f[_0xc769('0x5b')]){_0xccda0b['where'][_0xc769('0xc4')]['push']({'ListId':{'$ne':_0x25f77f[_0xc769('0x5b')]}});}}return db[_0xc769('0x24')][_0xc769('0x94')](_0xccda0b);}})[_0xc769('0x17')](function(_0x4c69b5){if(!_[_0xc769('0x58')](_0x4c69b5)){return _[_0xc769('0xc5')](_0x59c7cf,_[_0xc769('0x49')](_0x4c69b5,function(_0x1fd107){return util[_0xc769('0xc6')](_0xc769('0xc7'),_0x1fd107['id']);}));}})[_0xc769('0x17')](handleEntityNotFound(_0x25164c,null))[_0xc769('0x17')](respondWithResult(_0x25164c,null))[_0xc769('0x89')](handleError(_0x25164c,null));};exports[_0xc769('0xa0')]=function(_0x4b0c67,_0x4c0381){var _0x5ede80;if(_0x4b0c67[_0xc769('0x93')]['id']){delete _0x4b0c67[_0xc769('0x93')]['id'];}if(!_['isNil'](_0x4b0c67[_0xc769('0x93')]['dialTimezone'])){var _0x9d6837=_0x4b0c67[_0xc769('0x93')][_0xc769('0xb7')];if(!_['isNil'](shared[_0xc769('0xb8')][_0x9d6837]))_0x4b0c67[_0xc769('0x93')]['utcOffset']=shared[_0xc769('0xb8')][_0x9d6837]['utcOffset'];}return db[_0xc769('0x1f')][_0xc769('0x46')]({'where':{'id':_0x4b0c67['params']['id']}})['then'](handleEntityNotFound(_0x4c0381,null))[_0xc769('0x17')](saveUpdates(_0x4b0c67[_0xc769('0x93')],null))['then'](function(_0x22be17){_0x5ede80=_0x22be17;var _0x171fb2={'where':{'$and':[{'ListId':{'$ne':null}}]}};if(_0x22be17&&_0x22be17[_0xc769('0x5b')]){if(_0x22be17['ListId']){_0x171fb2['where'][_0xc769('0xc4')][_0xc769('0x23')]({'ListId':{'$ne':_0x22be17[_0xc769('0x5b')]}});}}return db[_0xc769('0x24')][_0xc769('0x94')](_0x171fb2);})[_0xc769('0x17')](function(_0x3468de){if(_0x3468de){return _['omit'](_[_0xc769('0xc8')](_0x4b0c67[_0xc769('0x93')],function(_0x1be2f0,_0x5d7edf){return _[_0xc769('0x21')](_0x5d7edf,_0xc769('0x22'));}),_[_0xc769('0x49')](_0x3468de,function(_0x4c5210){return util[_0xc769('0xc6')](_0xc769('0xc7'),_0x4c5210['id']);}));}})[_0xc769('0x17')](function(_0x2bbea7){if(_0x2bbea7&&!_[_0xc769('0x5a')](_0x2bbea7)){var _0x2c4f6e=squel['update']()[_0xc769('0xc9')](_0xc769('0xca'))['setFields'](_0x2bbea7)[_0xc769('0x34')](_0xc769('0xcb'),_0x4b0c67['params']['id'])[_0xc769('0xcc')]();return db[_0xc769('0x7a')][_0xc769('0x2b')](_0x2c4f6e['text'],{'replacements':_0x2c4f6e[_0xc769('0x92')]});}})[_0xc769('0x17')](function(){if(_0x4b0c67['body']['phone']&&_0x5ede80){return db['CmHopper'][_0xc769('0xa0')]({'phone':_0x4b0c67['body'][_0xc769('0xcd')],'OrderBy':0x0},{'where':{'ContactId':_0x5ede80['id']}});}})[_0xc769('0x17')](function(){return _0x5ede80;})['then'](respondWithResult(_0x4c0381,null))[_0xc769('0x89')](handleError(_0x4c0381,null));};exports[_0xc769('0xce')]=function(_0x4ebc90,_0x48166c){var _0x34ec72={};var _0xc32111={};var _0x32e59f;var _0x8ad7b3;return db[_0xc769('0x1f')][_0xc769('0x25')]({'where':{'id':_0x4ebc90[_0xc769('0x8a')]['id']}})[_0xc769('0x17')](handleEntityNotFound(_0x48166c,null))[_0xc769('0x17')](function(_0x3491e6){if(_0x3491e6){_0x32e59f=_0x3491e6;_0xc32111[_0xc769('0x29')]=_['keys'](db['Tag'][_0xc769('0xcf')]);_0xc32111['query']=_[_0xc769('0x2a')](_0x4ebc90[_0xc769('0x2b')]);_0xc32111[_0xc769('0x2c')]=_[_0xc769('0x2e')](_0xc32111['model'],_0xc32111[_0xc769('0x2b')]);_0x34ec72['attributes']=_[_0xc769('0x2e')](_0xc32111['model'],qs['fields'](_0x4ebc90[_0xc769('0x2b')][_0xc769('0x2f')]));_0x34ec72[_0xc769('0x2d')]=_0x34ec72['attributes'][_0xc769('0x20')]?_0x34ec72[_0xc769('0x2d')]:_0xc32111[_0xc769('0x29')];_0x34ec72['order']=qs[_0xc769('0x33')](_0x4ebc90[_0xc769('0x2b')][_0xc769('0x33')]);_0x34ec72[_0xc769('0x34')]=qs[_0xc769('0x2c')](_['pick'](_0x4ebc90['query'],_0xc32111[_0xc769('0x2c')]));if(_0x4ebc90[_0xc769('0x2b')]['filter']){_0x34ec72[_0xc769('0x34')]=_[_0xc769('0x7d')](_0x34ec72[_0xc769('0x34')],{'$or':_[_0xc769('0x49')](_0x34ec72['attributes'],function(_0x280df4){var _0x4d502c={};_0x4d502c[_0x280df4]={'$like':'%'+_0x4ebc90[_0xc769('0x2b')][_0xc769('0x57')]+'%'};return _0x4d502c;})});}_0x34ec72=_[_0xc769('0x7d')]({},_0x34ec72,_0x4ebc90[_0xc769('0xd0')]);return _0x32e59f[_0xc769('0xce')](_0x34ec72);}})[_0xc769('0x17')](function(_0x8a84d){if(_0x8a84d){_0x8ad7b3=_0x8a84d[_0xc769('0x20')];if(!_0x4ebc90[_0xc769('0x2b')]['hasOwnProperty'](_0xc769('0x31'))){_0x34ec72['limit']=qs[_0xc769('0x13')](_0x4ebc90[_0xc769('0x2b')][_0xc769('0x13')]);_0x34ec72['offset']=qs[_0xc769('0x11')](_0x4ebc90[_0xc769('0x2b')][_0xc769('0x11')]);}return _0x32e59f['getTags'](_0x34ec72);}})['then'](function(_0x2575ad){if(_0x2575ad){return _0x2575ad?{'count':_0x8ad7b3,'rows':_0x2575ad}:null;}})['then'](respondWithResult(_0x48166c,null))[_0xc769('0x89')](handleError(_0x48166c,null));};exports[_0xc769('0xd1')]=function(_0x1c58b0,_0x1746ca){if(_0x1c58b0[_0xc769('0x93')]['id']){delete _0x1c58b0[_0xc769('0x93')]['id'];}return db[_0xc769('0x1f')]['findOne']({'where':{'id':_0x1c58b0['params']['id']}})[_0xc769('0x17')](handleEntityNotFound(_0x1746ca,null))[_0xc769('0x17')](function(_0x376ed0){if(_0x376ed0){return _0x376ed0[_0xc769('0xd1')](_0x1c58b0[_0xc769('0x93')][_0xc769('0xd2')]||[]);}return null;})[_0xc769('0x17')](respondWithResult(_0x1746ca,null))['catch'](handleError(_0x1746ca,null));};exports[_0xc769('0xd3')]=function(_0x31b26e,_0x2b8e6f){var _0x44fc72=[];_0x44fc72[_0xc769('0x23')](addAdditionalPhones(_0x31b26e[_0xc769('0x93')]));Promise[_0xc769('0x27')](_0x44fc72)[_0xc769('0x17')](function(){_0x44fc72=[];_0x44fc72[_0xc769('0x23')](deleteCmHopperPhones(_0x31b26e[_0xc769('0x93')]['id']));_0x44fc72[_0xc769('0x23')](addCmHopperPhones(_0x31b26e[_0xc769('0x93')]['id']));Promise[_0xc769('0x27')](_0x44fc72)[_0xc769('0x17')](function(){return[0x1];})[_0xc769('0x17')](respondWithResult(_0x2b8e6f,null));});};function addAdditionalPhones(_0x5f39e8){var _0x5db15d;return new Promise(function(_0x1a51d2,_0x40de6d){return db[_0xc769('0xa9')][_0xc769('0xb5')]({'where':{'CmContactId':_0x5f39e8['id']}})['then'](function(){db['ContactItemType'][_0xc769('0x94')]({'raw':!![],'attributes':['id',_0xc769('0xd4')]})[_0xc769('0x17')](function(_0x1ad992){var _0xef9dd6=[];for(var _0x483433=0x0;_0x483433<_0x5f39e8[_0xc769('0xd5')][_0xc769('0x20')];_0x483433++){var _0x1f67b9=_0x5f39e8[_0xc769('0xd6')]?_['isNil'](_0x5f39e8['item_types'][_0x483433])?'':_0x5f39e8[_0xc769('0xd6')][_0x483433]:_0x5f39e8[_0xc769('0xd5')][_0x483433][_0xc769('0xd7')]?_0x5f39e8[_0xc769('0xd5')][_0x483433]['ItemTypeId']:'';var _0x2113ef=_[_0xc769('0x58')](_0x5f39e8['items'][_0x483433][_0xc769('0xd8')])?'':_0x5f39e8[_0xc769('0xd5')][_0x483433]['description'];var _0x531b46=_0x1f67b9+':'+_0x5f39e8[_0xc769('0xd5')][_0x483433][_0xc769('0xcd')]+'§'+_0x2113ef;if(_['isNil'](_0x5db15d))_0x5db15d=_0x531b46;else _0x5db15d+=';'+_0x531b46;var _0x2b7b84=null;if(_0x5f39e8[_0xc769('0xd6')]){if(!_[_0xc769('0x58')](_0x5f39e8[_0xc769('0xd6')][_0x483433])){var _0x1fd174=_[_0xc769('0x46')](_0x1ad992,function(_0x2b7663){return _0x2b7663['id']===_0x5f39e8[_0xc769('0xd6')][_0x483433];});if(!_[_0xc769('0x58')](_0x1fd174)){_0x2b7b84=_0x1fd174[_0xc769('0xd4')];}}}else{if(!_[_0xc769('0x58')](_0x5f39e8[_0xc769('0xd5')][_0x483433])){var _0x1fd174=_['find'](_0x1ad992,function(_0x1896ec){return _0x1896ec['id']===_0x5f39e8[_0xc769('0xd5')][_0x483433]['ItemTypeId'];});if(!_[_0xc769('0x58')](_0x1fd174)){_0x2b7b84=_0x483433;}}}if(_[_0xc769('0x58')](_0x2b7b84)){_0x2b7b84=0x64;}_0xef9dd6[_0xc769('0x23')](addAdditionalPhone(_0x5f39e8['id'],_0x5f39e8[_0xc769('0xd5')][_0x483433][_0xc769('0xcd')],_0x5f39e8[_0xc769('0xd6')]?_[_0xc769('0x58')](_0x5f39e8[_0xc769('0xd6')][_0x483433])?null:_0x5f39e8[_0xc769('0xd6')][_0x483433]:_0x5f39e8[_0xc769('0xd5')][_0x483433]['ItemTypeId']?_0x5f39e8[_0xc769('0xd5')][_0x483433][_0xc769('0xd7')]:null,_0x2b7b84,_0x2113ef));}Promise['all'](_0xef9dd6)[_0xc769('0x17')](function(){db[_0xc769('0x1f')][_0xc769('0xa0')]({'AdditionalPhones':_0x5db15d},{'where':{'id':_0x5f39e8['id']}})[_0xc769('0x17')](function(){_0x1a51d2(0x1);});});});});});}function addAdditionalPhone(_0x191ace,_0x49eaa3,_0x3cd0dc,_0x4c92d0,_0x3455b9){return db[_0xc769('0xa9')][_0xc769('0x46')]({'where':{'CmContactId':_0x191ace,'item':_0x49eaa3}})[_0xc769('0x17')](function(_0x53bb50){if(_0x53bb50)logger[_0xc769('0x98')]('contact\x20phone\x20exists',_0x53bb50);else{db[_0xc769('0xa9')][_0xc769('0x9e')]({'CmContactId':_0x191ace,'item':_0x49eaa3,'ItemTypeId':_0x3cd0dc,'OrderBy':_0x4c92d0,'ItemClass':_0xc769('0xd9'),'description':_0x3455b9});}});}function deletePhones(_0x4d5e6a){return db['CmContactHasItem'][_0xc769('0xb5')]({'where':{'CmContactId':_0x4d5e6a}});}function deleteCmHopperPhones(_0x3542e0){return new Promise(function(_0x23f30c,_0x29f908){return db[_0xc769('0x9a')]['findAll']({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x3542e0}})['then'](function(_0x44c320){db['CmHopperAdditionalPhone']['destroy']({'where':{'CmHopperId':{'$in':_[_0xc769('0x49')](_0x44c320,'id')}}});})[_0xc769('0x17')](function(){_0x23f30c(0x1);});});}function addCmHopperPhones(_0x117a44){return new Promise(function(_0x36fbd8,_0x137ce0){return db['CmHopper'][_0xc769('0x94')]({'raw':!![],'attributes':['id'],'where':{'ContactId':_0x117a44}})[_0xc769('0x17')](function(_0xf99e27){var _0x27839f=[];_['map'](_0xf99e27,function(_0x4cfdba){_0x27839f['push'](createCmHopperPhone(_0x117a44,_0x4cfdba['id']));});Promise[_0xc769('0x27')](_0x27839f)['then'](function(){_0x36fbd8(0x1);});});});}function createCmHopperPhone(_0x2e4119,_0x1a09c3){return new Promise(function(_0x341173,_0x1b94be){db[_0xc769('0xa9')][_0xc769('0x94')]({'raw':!![],'attributes':[_0xc769('0xda'),_0xc769('0xd4')],'where':{'CmContactId':_0x2e4119,'ItemClass':_0xc769('0xd9')},'include':[{'model':db[_0xc769('0xc3')],'attributes':[_0xc769('0xd4')],'as':'ItemType'}],'order':[_0xc769('0xd4'),db['sequelize'][_0xc769('0xdb')](_0xc769('0xdc'))]})[_0xc769('0x17')](function(_0x1cedd1){var _0x4e5241=0x1;var _0x1591a9=_['map'](_0x1cedd1,function(_0x2d1a52){_0x2d1a52['CmHopperId']=_0x1a09c3;_0x2d1a52[_0xc769('0xcd')]=_0x2d1a52[_0xc769('0xda')];_0x2d1a52[_0xc769('0xd4')]=_0x4e5241;delete _0x2d1a52[_0xc769('0xdd')];_0x4e5241=_0x4e5241+0x1;return _0x2d1a52;});return db[_0xc769('0xde')][_0xc769('0xbb')](_0x1591a9,{});})[_0xc769('0x17')](function(){_0x341173(0x1);});});}function insertAdditionalPhones(_0x389c4f,_0x374b34){return new Promise(function(_0x53bab4,_0xfb3037){var _0x497519=[];for(var _0x4e6e59=0x0;_0x4e6e59<_0x374b34[_0xc769('0x20')];_0x4e6e59++){var _0x5a4faf=_0x374b34[_0x4e6e59];_0x497519[_0xc769('0x23')](parseContactItemType(_0x5a4faf));}Promise[_0xc769('0x27')](_0x497519)[_0xc769('0x17')](function(){var _0x2a4db0={'id':_0x389c4f['id'],'items':_0x374b34};return addAdditionalPhones(_0x2a4db0)['then'](function(_0x3a9223){return addCmHopperPhones(_0x389c4f['id']);});})['then'](function(){_0x53bab4(_0x389c4f);});});}function parseContactItemType(_0x33b097){return new Promise(function(_0x51116f,_0x13cb67){if(_0x33b097[_0xc769('0x30')]('ItemTypeId')){_0x51116f(_0x33b097);}else{return db['ContactItemType'][_0xc769('0x46')]({'where':{'name':_0x33b097[_0xc769('0xdf')]}})['then'](function(_0x37aea7){if(_['isNil'](_0x37aea7))_0x33b097[_0xc769('0xd7')]=null;else _0x33b097['ItemTypeId']=_0x37aea7['id'];_0x51116f(_0x33b097);});}});}exports[_0xc769('0xe0')]=function(_0x1a4b25,_0x567753){return db[_0xc769('0xa9')][_0xc769('0x94')]({'raw':!![],'where':{'CmContactId':_0x1a4b25['params']['id'],'ItemClass':_0xc769('0xd9')},'include':[{'model':db[_0xc769('0xc3')],'as':'ItemType'}],'order':[[_0xc769('0xd4')],[db[_0xc769('0x7a')][_0xc769('0xdb')](_0xc769('0xdc'))]]})[_0xc769('0x17')](function(_0x43a80e){return _0x43a80e;})[_0xc769('0x17')](respondWithResult(_0x567753,null))[_0xc769('0x89')](handleError(_0x567753,null));};exports[_0xc769('0xe1')]=function(_0x27335e,_0x3fd6a0){return db[_0xc769('0xa9')]['findAll']({'raw':!![],'where':{'CmContactId':_0x27335e[_0xc769('0x93')][_0xc769('0xe2')]}})[_0xc769('0x17')](function(_0x54f5bc){var _0x4e06fc=_[_0xc769('0x49')](_0x54f5bc,function(_0x25ac56){_0x25ac56[_0xc769('0xe3')]=_0x27335e[_0xc769('0x93')]['toContactId'];return _0x25ac56;});return db[_0xc769('0xa9')][_0xc769('0xbb')](_0x4e06fc,{});})[_0xc769('0x17')](function(_0x3198a9){return addCmHopperPhones(_0x27335e['body'][_0xc769('0xe4')]);})[_0xc769('0x17')](function(_0x4b516c){return['ok'];})[_0xc769('0x17')](respondWithResult(_0x3fd6a0,null))[_0xc769('0x89')](handleError(_0x3fd6a0,null));};exports[_0xc769('0xe5')]=function(_0x12e045,_0x28a3f2){var _0x39fc22=[];_0x39fc22[_0xc769('0x23')](createCmHopperPhone(_0x12e045['body']['id'],_0x12e045[_0xc769('0x93')][_0xc769('0xe6')]));Promise[_0xc769('0x27')](_0x39fc22)[_0xc769('0x17')](function(){return[0x1];})[_0xc769('0x17')](respondWithResult(_0x28a3f2,null));};exports['getHoppers']=function(_0x228d8e,_0x1b7124){var _0x406b08={'raw':![],'where':{}};var _0x7047d1={};var _0x34c2d6={'count':0x0,'rows':[]};return db[_0xc769('0x1f')][_0xc769('0x25')]({'where':{'id':_0x228d8e[_0xc769('0x8a')]['id']}})[_0xc769('0x17')](handleEntityNotFound(_0x1b7124,null))[_0xc769('0x17')](function(_0x30e28e){if(_0x30e28e){_0x7047d1[_0xc769('0x29')]=_[_0xc769('0x2a')](db[_0xc769('0x9a')][_0xc769('0xcf')]);_0x7047d1[_0xc769('0x2b')]=_['keys'](_0x228d8e[_0xc769('0x2b')]);_0x7047d1['filters']=_[_0xc769('0x2e')](_0x7047d1[_0xc769('0x29')],_0x7047d1[_0xc769('0x2b')]);_0x406b08['attributes']=_[_0xc769('0x2e')](_0x7047d1[_0xc769('0x29')],qs[_0xc769('0x2f')](_0x228d8e[_0xc769('0x2b')][_0xc769('0x2f')]));_0x406b08['attributes']=_0x406b08[_0xc769('0x2d')]['length']?_0x406b08[_0xc769('0x2d')]:_0x7047d1[_0xc769('0x29')];if(!_0x228d8e[_0xc769('0x2b')][_0xc769('0x30')]('nolimit')){_0x406b08[_0xc769('0x13')]=qs[_0xc769('0x13')](_0x228d8e['query'][_0xc769('0x13')]);_0x406b08[_0xc769('0x11')]=qs[_0xc769('0x11')](_0x228d8e[_0xc769('0x2b')]['offset']);}_0x406b08['order']=qs[_0xc769('0x33')](_0x228d8e['query'][_0xc769('0x33')]);_0x406b08[_0xc769('0x34')]=qs[_0xc769('0x2c')](_['pick'](_0x228d8e[_0xc769('0x2b')],_0x7047d1[_0xc769('0x2c')]));_0x406b08['where']['ContactId']=_0x30e28e['id'];if(_0x228d8e[_0xc769('0x2b')][_0xc769('0x57')]){_0x406b08[_0xc769('0x34')]=_[_0xc769('0x7d')](_0x406b08[_0xc769('0x34')],{'$or':_[_0xc769('0x49')](_0x406b08[_0xc769('0x2d')],function(_0x344174){var _0x282663={};_0x282663[_0x344174]={'$like':'%'+_0x228d8e[_0xc769('0x2b')]['filter']+'%'};return _0x282663;})});}_0x406b08=_[_0xc769('0x7d')]({},_0x406b08,_0x228d8e[_0xc769('0xd0')]);return db['CmHopper'][_0xc769('0x14')]({'where':_0x406b08[_0xc769('0x34')]})[_0xc769('0x17')](function(_0x49aff4){_0x34c2d6[_0xc769('0x14')]=_0x49aff4;if(_0x228d8e[_0xc769('0x2b')]['includeAll']){_0x406b08['include']=[{'all':!![]}];}return db[_0xc769('0x9a')][_0xc769('0x94')](_0x406b08);})[_0xc769('0x17')](function(_0xbec5b4){_0x34c2d6[_0xc769('0x88')]=_0xbec5b4;return _0x34c2d6;});}})[_0xc769('0x17')](respondWithFilteredResult(_0x1b7124,_0x406b08))['catch'](handleError(_0x1b7124,null));};exports[_0xc769('0xe7')]=function(_0x58c148,_0x185a5f){var _0xd1d7bc={'raw':!![],'where':{}};var _0x42cb9e={};var _0x351953={'count':0x0,'rows':[]};return db[_0xc769('0x1f')][_0xc769('0x25')]({'where':{'id':_0x58c148[_0xc769('0x8a')]['id']}})[_0xc769('0x17')](handleEntityNotFound(_0x185a5f,null))[_0xc769('0x17')](function(_0x41595b){if(_0x41595b){_0x42cb9e['model']=_[_0xc769('0x2a')](db['CmHopperHistory']['rawAttributes']);_0x42cb9e[_0xc769('0x2b')]=_['keys'](_0x58c148[_0xc769('0x2b')]);_0x42cb9e[_0xc769('0x2c')]=_[_0xc769('0x2e')](_0x42cb9e[_0xc769('0x29')],_0x42cb9e[_0xc769('0x2b')]);_0xd1d7bc[_0xc769('0x2d')]=_['intersection'](_0x42cb9e['model'],qs[_0xc769('0x2f')](_0x58c148['query'][_0xc769('0x2f')]));_0xd1d7bc['attributes']=_0xd1d7bc[_0xc769('0x2d')][_0xc769('0x20')]?_0xd1d7bc[_0xc769('0x2d')]:_0x42cb9e[_0xc769('0x29')];if(!_0x58c148[_0xc769('0x2b')][_0xc769('0x30')](_0xc769('0x31'))){_0xd1d7bc[_0xc769('0x13')]=qs[_0xc769('0x13')](_0x58c148[_0xc769('0x2b')][_0xc769('0x13')]);_0xd1d7bc[_0xc769('0x11')]=qs[_0xc769('0x11')](_0x58c148[_0xc769('0x2b')][_0xc769('0x11')]);}_0xd1d7bc[_0xc769('0x32')]=qs['sort'](_0x58c148['query'][_0xc769('0x33')]);_0xd1d7bc[_0xc769('0x34')]=qs[_0xc769('0x2c')](_[_0xc769('0x35')](_0x58c148['query'],_0x42cb9e[_0xc769('0x2c')]));_0xd1d7bc['where'][_0xc769('0xe8')]=_0x41595b['id'];if(_0x58c148[_0xc769('0x2b')][_0xc769('0x57')]){_0xd1d7bc[_0xc769('0x34')]=_[_0xc769('0x7d')](_0xd1d7bc[_0xc769('0x34')],{'$or':_[_0xc769('0x49')](_0xd1d7bc[_0xc769('0x2d')],function(_0x28902d){var _0x2e3dff={};_0x2e3dff[_0x28902d]={'$like':'%'+_0x58c148[_0xc769('0x2b')][_0xc769('0x57')]+'%'};return _0x2e3dff;})});}_0xd1d7bc=_[_0xc769('0x7d')]({},_0xd1d7bc,_0x58c148[_0xc769('0xd0')]);return db['CmHopperHistory'][_0xc769('0x14')]({'where':_0xd1d7bc[_0xc769('0x34')]})['then'](function(_0x1c3752){_0x351953[_0xc769('0x14')]=_0x1c3752;if(_0x58c148[_0xc769('0x2b')][_0xc769('0xe9')]){_0xd1d7bc[_0xc769('0xea')]=[{'all':!![]}];}return db[_0xc769('0xaa')]['findAll'](_0xd1d7bc);})[_0xc769('0x17')](function(_0x1e4049){_0x351953[_0xc769('0x88')]=_0x1e4049;return _0x351953;});}})[_0xc769('0x17')](respondWithFilteredResult(_0x185a5f,_0xd1d7bc))['catch'](handleError(_0x185a5f,null));};exports[_0xc769('0xeb')]=function(_0x129e22,_0x2e5c26){var _0x25aa98={'raw':!![],'where':{}};var _0x102bae={};var _0x57aedb={'count':0x0,'rows':[]};return db[_0xc769('0x1f')][_0xc769('0x25')]({'where':{'id':_0x129e22[_0xc769('0x8a')]['id']}})['then'](handleEntityNotFound(_0x2e5c26,null))['then'](function(_0x2d6710){if(_0x2d6710){_0x102bae[_0xc769('0x29')]=_['keys'](db[_0xc769('0xec')]['rawAttributes']);_0x102bae[_0xc769('0x2b')]=_[_0xc769('0x2a')](_0x129e22[_0xc769('0x2b')]);_0x102bae[_0xc769('0x2c')]=_[_0xc769('0x2e')](_0x102bae[_0xc769('0x29')],_0x102bae['query']);_0x25aa98['attributes']=_[_0xc769('0x2e')](_0x102bae[_0xc769('0x29')],qs['fields'](_0x129e22[_0xc769('0x2b')][_0xc769('0x2f')]));_0x25aa98[_0xc769('0x2d')]=_0x25aa98[_0xc769('0x2d')][_0xc769('0x20')]?_0x25aa98['attributes']:_0x102bae[_0xc769('0x29')];if(!_0x129e22[_0xc769('0x2b')][_0xc769('0x30')](_0xc769('0x31'))){_0x25aa98[_0xc769('0x13')]=qs[_0xc769('0x13')](_0x129e22[_0xc769('0x2b')][_0xc769('0x13')]);_0x25aa98[_0xc769('0x11')]=qs[_0xc769('0x11')](_0x129e22['query'][_0xc769('0x11')]);}_0x25aa98[_0xc769('0x32')]=qs[_0xc769('0x33')](_0x129e22[_0xc769('0x2b')][_0xc769('0x33')]);_0x25aa98[_0xc769('0x34')]=qs['filters'](_[_0xc769('0x35')](_0x129e22[_0xc769('0x2b')],_0x102bae['filters']));_0x25aa98['where'][_0xc769('0xe8')]=_0x2d6710['id'];if(_0x129e22[_0xc769('0x2b')][_0xc769('0x57')]){_0x25aa98[_0xc769('0x34')]=_[_0xc769('0x7d')](_0x25aa98[_0xc769('0x34')],{'$or':_[_0xc769('0x49')](_0x25aa98[_0xc769('0x2d')],function(_0x3e7da0){var _0xa84c1={};_0xa84c1[_0x3e7da0]={'$like':'%'+_0x129e22[_0xc769('0x2b')][_0xc769('0x57')]+'%'};return _0xa84c1;})});}_0x25aa98=_[_0xc769('0x7d')]({},_0x25aa98,_0x129e22['options']);return db[_0xc769('0xec')][_0xc769('0x14')]({'where':_0x25aa98['where']})[_0xc769('0x17')](function(_0x187ade){_0x57aedb[_0xc769('0x14')]=_0x187ade;if(_0x129e22[_0xc769('0x2b')]['includeAll']){_0x25aa98[_0xc769('0xea')]=[{'all':!![]}];}return db[_0xc769('0xec')][_0xc769('0x94')](_0x25aa98);})[_0xc769('0x17')](function(_0x34c966){_0x57aedb['rows']=_0x34c966;return _0x57aedb;});}})[_0xc769('0x17')](respondWithFilteredResult(_0x2e5c26,_0x25aa98))[_0xc769('0x89')](handleError(_0x2e5c26,null));};exports[_0xc769('0xed')]=function(_0x4daeeb,_0x36d513){var _0xdbb91c={'raw':!![],'where':{}};var _0x5060c4={};var _0xf801ac={'count':0x0,'rows':[]};return db[_0xc769('0x1f')][_0xc769('0x25')]({'where':{'id':_0x4daeeb[_0xc769('0x8a')]['id']}})[_0xc769('0x17')](handleEntityNotFound(_0x36d513,null))[_0xc769('0x17')](function(_0x28b5ec){if(_0x28b5ec){_0x5060c4[_0xc769('0x29')]=_['keys'](db[_0xc769('0xb1')][_0xc769('0xcf')]);_0x5060c4[_0xc769('0x2b')]=_['keys'](_0x4daeeb[_0xc769('0x2b')]);_0x5060c4[_0xc769('0x2c')]=_['intersection'](_0x5060c4[_0xc769('0x29')],_0x5060c4['query']);_0xdbb91c[_0xc769('0x2d')]=_[_0xc769('0x2e')](_0x5060c4[_0xc769('0x29')],qs[_0xc769('0x2f')](_0x4daeeb['query']['fields']));_0xdbb91c['attributes']=_0xdbb91c[_0xc769('0x2d')][_0xc769('0x20')]?_0xdbb91c[_0xc769('0x2d')]:_0x5060c4['model'];if(!_0x4daeeb[_0xc769('0x2b')][_0xc769('0x30')](_0xc769('0x31'))){_0xdbb91c['limit']=qs['limit'](_0x4daeeb[_0xc769('0x2b')][_0xc769('0x13')]);_0xdbb91c[_0xc769('0x11')]=qs[_0xc769('0x11')](_0x4daeeb[_0xc769('0x2b')][_0xc769('0x11')]);}_0xdbb91c[_0xc769('0x32')]=qs[_0xc769('0x33')](_0x4daeeb[_0xc769('0x2b')][_0xc769('0x33')]);_0xdbb91c[_0xc769('0x34')]=qs['filters'](_[_0xc769('0x35')](_0x4daeeb['query'],_0x5060c4[_0xc769('0x2c')]));_0xdbb91c[_0xc769('0x34')][_0xc769('0xe8')]=_0x28b5ec['id'];if(_0x4daeeb[_0xc769('0x2b')][_0xc769('0x57')]){_0xdbb91c[_0xc769('0x34')]=_[_0xc769('0x7d')](_0xdbb91c[_0xc769('0x34')],{'$or':_[_0xc769('0x49')](_0xdbb91c['attributes'],function(_0x58d863){var _0x5ea298={};_0x5ea298[_0x58d863]={'$like':'%'+_0x4daeeb['query'][_0xc769('0x57')]+'%'};return _0x5ea298;})});}_0xdbb91c=_[_0xc769('0x7d')]({},_0xdbb91c,_0x4daeeb[_0xc769('0xd0')]);return db[_0xc769('0xb1')][_0xc769('0x14')]({'where':_0xdbb91c[_0xc769('0x34')]})['then'](function(_0x32ae53){_0xf801ac[_0xc769('0x14')]=_0x32ae53;if(_0x4daeeb[_0xc769('0x2b')][_0xc769('0xe9')]){_0xdbb91c[_0xc769('0xea')]=[{'all':!![]}];}return db[_0xc769('0xb1')][_0xc769('0x94')](_0xdbb91c);})['then'](function(_0x3e5e4b){_0xf801ac[_0xc769('0x88')]=_0x3e5e4b;return _0xf801ac;});}})['then'](respondWithFilteredResult(_0x36d513,_0xdbb91c))[_0xc769('0x89')](handleError(_0x36d513,null));};exports[_0xc769('0xee')]=function(_0x9c9673,_0x976b08){try{if(!_0x9c9673[_0xc769('0x93')][_0xc769('0x5b')]){throw new Error(_0xc769('0xef'));}if(!_0x9c9673['body'][_0xc769('0xf0')]){throw new Error(_0xc769('0xf1'));}if(!_0x9c9673[_0xc769('0x93')][_0xc769('0xf2')]){throw new Error(_0xc769('0xf3'));}if(!_0x9c9673[_0xc769('0x93')][_0xc769('0xf4')]){throw new Error(_0xc769('0xf5'));}var _0x353499=_0x9c9673[_0xc769('0x93')][_0xc769('0xf0')]['split'](',');var _0x30a4f6=_0x9c9673['body'][_0xc769('0xf2')][_0xc769('0x48')](',');if(!_0x353499[_0xc769('0x20')]||!_0x30a4f6['length']||_0x353499[_0xc769('0x20')]!==_0x30a4f6['length']){throw new Error(_0xc769('0xf6'));}_0x9c9673['body'][_0xc769('0x2f')]=_['zipObject'](_0x353499,_0x30a4f6);if(!_0x9c9673[_0xc769('0x93')][_0xc769('0x2f')][_0xc769('0xcd')]){throw new Error(_0xc769('0xf7'));}if(!_0x9c9673[_0xc769('0x93')][_0xc769('0x2f')][_0xc769('0xf8')]){throw new Error(_0xc769('0xf9'));}var _0x1c3e79=path[_0xc769('0xb6')](config['root'],'server/files/tmp',_0x9c9673['file'][_0xc769('0xfa')]);fs['chmodSync'](_0x1c3e79,parseInt(_0xc769('0xfb'),0x8));var _0x21dc68=require(_0xc769('0xfc'))[_0xc769('0xfd')](path[_0xc769('0xb6')](__dirname,_0xc769('0xfe')),[_0x1c3e79,_0x9c9673['body'][_0xc769('0xf0')],_0x9c9673['body'][_0xc769('0xf2')],_0x9c9673[_0xc769('0x93')][_0xc769('0x5b')],_0x9c9673[_0xc769('0x93')][_0xc769('0xff')],_0x9c9673['body'][_0xc769('0xbd')],_0x9c9673['body'][_0xc769('0xf4')]]);return _0x976b08['status'](0xc8)[_0xc769('0x10')]({'message':_0xc769('0x100'),'pid':_0x21dc68[_0xc769('0x101')]});}catch(_0x17c6b8){return _0x976b08[_0xc769('0xf')](0x1f4)[_0xc769('0x1d')](_0x17c6b8);}};exports['upload']=function(_0x4ef260,_0x19a4a7){var _0x466e2e=fs['createReadStream'](_0x4ef260[_0xc769('0x102')]['path']);Papa[_0xc769('0x103')](_0x466e2e,{'header':!![],'skipEmptyLines':!![],'preview':0x1,'complete':function(_0x2226b9){return _0x19a4a7['status'](0xc8)[_0xc769('0x10')]({'file':_0x4ef260[_0xc769('0x102')],'fields':_0x2226b9[_0xc769('0x104')]['fields']});}});};exports['import']=function(_0x595a06,_0x3b38df){return db[_0xc769('0x4d')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0xc769('0x75')}})[_0xc769('0x17')](function(_0x4f5162){var _0x19e0fd=![];if(!_0x595a06['body'][_0xc769('0x5b')]){throw new Error('No\x20ListId\x20specified');}if(!_0x595a06[_0xc769('0x93')][_0xc769('0x105')][_0xc769('0xcd')]){throw new Error(_0xc769('0xf7'));}if(!_0x595a06[_0xc769('0x93')]['binding']['firstName']){throw new Error(_0xc769('0xf9'));}if(!_0x595a06[_0xc769('0x93')][_0xc769('0xf4')]){throw new Error(_0xc769('0xf5'));}var _0x4688ea=require(_0xc769('0xfc'))[_0xc769('0xfd')](path[_0xc769('0xb6')](__dirname,_0xc769('0x106')),[_0x595a06[_0xc769('0x8a')]['id'],JSON[_0xc769('0x107')](_0x595a06[_0xc769('0x93')]),JSON['stringify'](_0x4f5162)]);_0x4688ea['on'](_0xc769('0x108'),function(){_0x19e0fd=!![];return _0x3b38df[_0xc769('0xf')](0xc8)[_0xc769('0x10')]({'message':'start\x20child\x20process\x20correctly!','pid':_0x4688ea[_0xc769('0x101')]});});_0x4688ea['on']('exit',function(_0x3473e8){if(_0x3473e8&&!_0x19e0fd){return _0x3b38df[_0xc769('0xf')](0x1f4)[_0xc769('0x10')]({'message':_0xc769('0x109'),'pid':_0x4688ea['pid']});}});})[_0xc769('0x89')](handleError(_0x3b38df,null));};exports[_0xc769('0x10a')]=function(_0x1de5e7,_0x55997e,_0x49faf5){return db[_0xc769('0x4d')]['findAll']({'raw':!![],'attributes':['id'],'where':{'role':_0xc769('0x75')}})[_0xc769('0x17')](function(_0x2b149e){var _0x551d12=![];if(!_0x1de5e7[_0xc769('0x93')][_0xc769('0x5b')]){throw new Error(_0xc769('0xef'));}if(!_0x1de5e7[_0xc769('0x93')][_0xc769('0x105')][_0xc769('0xcd')]){throw new Error(_0xc769('0xf7'));}if(!_0x1de5e7[_0xc769('0x93')]['binding'][_0xc769('0xf8')]){throw new Error(_0xc769('0xf9'));}if(!_0x1de5e7[_0xc769('0x93')][_0xc769('0xf4')]){throw new Error(_0xc769('0xf5'));}var _0x17c4f5=require(_0xc769('0xfc'))[_0xc769('0xfd')](path[_0xc769('0xb6')](__dirname,_0xc769('0x10b')),[_0x1de5e7[_0xc769('0x8a')]['id'],JSON[_0xc769('0x107')](_0x1de5e7[_0xc769('0x93')]),JSON[_0xc769('0x107')](_0x2b149e)]);_0x17c4f5['on'](_0xc769('0x108'),function(_0x37affd){_0x551d12=!![];return _0x55997e[_0xc769('0xf')](0xc8)['json']({'message':'start\x20child\x20process\x20correctly!','pid':_0x17c4f5[_0xc769('0x101')]});});_0x17c4f5['on'](_0xc769('0x10c'),function(_0x3860a2){if(_0x3860a2&&!_0x551d12){return _0x55997e[_0xc769('0xf')](0x1f4)[_0xc769('0x10')]({'message':_0xc769('0x109'),'pid':_0x17c4f5['pid']});}});})[_0xc769('0x89')](handleError(_0x55997e,null));};exports[_0xc769('0x10d')]=function(_0x419423,_0x530f0b){var _0x5f1335=[_0xc769('0x10e'),_0xc769('0x10f'),_0xc769('0x110'),_0xc769('0x111'),_0xc769('0x112'),_0xc769('0x113'),_0xc769('0x114')];var _0x4457d3={'offset':0x0,'order':qs[_0xc769('0x33')]('-createdAt')},_0x595511={'count':0x0,'rows':[]};Promise[_0xc769('0x73')]()[_0xc769('0x17')](function(){if(_0x419423[_0xc769('0x2b')]['channel']){if(!_['includes'](_0x5f1335,_0x419423[_0xc769('0x2b')]['channel'][_0xc769('0x115')]())){throw new Error(_0xc769('0x116'));}_0x5f1335=[_0x419423[_0xc769('0x2b')][_0xc769('0x117')][_0xc769('0x115')]()];}if(_0x419423['query']['range']){try{var _0x1f741f=JSON[_0xc769('0x103')](_0x419423[_0xc769('0x2b')][_0xc769('0x118')]);if(!moment(_0x1f741f['from'])[_0xc769('0x119')]()){throw new Error('Invalid\x20date\x20for\x20range\x20from\x20filter');}if(!moment(_0x1f741f['to'])[_0xc769('0x119')]()){throw new Error(_0xc769('0x11a'));}}catch(_0x4a0969){throw new Error(_0xc769('0x11b'));}}if(!_0x419423['query'][_0xc769('0x30')](_0xc769('0x31'))){_0x4457d3[_0xc769('0x13')]=qs[_0xc769('0x13')](_0x419423[_0xc769('0x2b')][_0xc769('0x13')]||0xa);_0x4457d3[_0xc769('0x11')]=qs[_0xc769('0x11')](_0x419423['query'][_0xc769('0x11')]);}var _0x148e78=_0x5f1335['map'](function(_0x35eaca){if(_0x35eaca===_0xc769('0x114')){var _0x37c4d8={'attributes':['id',_0xc769('0x11c'),_0xc769('0x55'),'source',_0xc769('0x11d'),'callerid','starttime',_0xc769('0x11e'),'duration','note',_0xc769('0x11f'),_0xc769('0x120'),_0xc769('0x121'),_0xc769('0x122'),'UserId'],'where':{'ContactId':_0x419423[_0xc769('0x8a')]['id']},'include':[{'model':db[_0xc769('0x4d')],'as':_0xc769('0x4d'),'attributes':['id',_0xc769('0x1c'),_0xc769('0x123'),'alias']}],'order':[[_0xc769('0x11f'),'DESC']]};if(_0x419423[_0xc769('0x2b')][_0xc769('0x118')]){_0x37c4d8[_0xc769('0x34')]['createdAt']={'$gte':_0x1f741f[_0xc769('0x39')],'$lte':_0x1f741f['to']};}return db['VoiceCallReport'][_0xc769('0x124')](_0x37c4d8)[_0xc769('0x17')](function(_0x379431){_0x595511[_0xc769('0x14')]+=_0x379431['count'];return _[_0xc769('0x49')](_0x379431[_0xc769('0x88')],function(_0x22dbde){var _0x3e2a4d=_0x22dbde[_0xc769('0x95')]({'plain':!![]});_0x3e2a4d[_0xc769('0x117')]=_0x35eaca;if(_0x3e2a4d[_0xc769('0x4d')]){_0x3e2a4d[_0xc769('0x4d')]={'id':_0x3e2a4d[_0xc769('0x4d')]['id'],'name':_0x3e2a4d[_0xc769('0x4d')][_0xc769('0x1c')],'fullname':_0x3e2a4d[_0xc769('0x4d')][_0xc769('0x123')],'alias':_0x3e2a4d[_0xc769('0x4d')]['alias']};}return _0x3e2a4d;});});}else{var _0x241811=_[_0xc769('0x125')](_0x35eaca)+(_0x35eaca===_0xc769('0x10f')?'Website':_0xc769('0x126'));var _0x193e1c={'attributes':['id',_0xc769('0x127'),_0xc769('0x128'),_0xc769('0x11f'),_0xc769('0x129'),_0xc769('0x12a'),_0xc769('0x12b'),_0xc769('0x12c'),_0xc769('0x12d'),_0x241811+'Id'],'where':{'ContactId':_0x419423['params']['id']},'include':[{'model':db[_0x241811],'as':_0xc769('0x126'),'attributes':['id',_0xc769('0x1c'),'key']},{'model':db[_0xc769('0x4d')],'as':_0xc769('0x12e'),'attributes':['id',_0xc769('0x1c'),_0xc769('0x123')]},{'model':db['Tag'],'as':_0xc769('0x87'),'attributes':['id','name',_0xc769('0x38')],'through':{'attributes':[]}}],'order':[['createdAt',_0xc769('0x70')]]};if(_0x419423[_0xc769('0x2b')]['range']){_0x193e1c['where']['createdAt']={'$gte':_0x1f741f[_0xc769('0x39')],'$lte':_0x1f741f['to']};}switch(_0x35eaca){case _0xc769('0x10f'):_0x193e1c[_0xc769('0x2d')][_0xc769('0x23')](_0xc769('0x12f'),'customerIp',_0xc769('0x130'),_0xc769('0x131'),_0xc769('0x132'),'ratingMessage',_0xc769('0x133'),_0xc769('0x134'),'referer');break;case _0xc769('0x10e'):_0x193e1c['attributes'][_0xc769('0x23')](_0xc769('0x135'),_0xc769('0x136'));break;case'openchannel':_0x193e1c[_0xc769('0x2d')][_0xc769('0x23')]('externalUrl','threadId');break;}return db[_['startCase'](_0x35eaca)+_0xc769('0x137')]['findAndCountAll'](_0x193e1c)['then'](function(_0x3f34f7){_0x595511[_0xc769('0x14')]+=_0x3f34f7[_0xc769('0x14')];return _['map'](_0x3f34f7[_0xc769('0x88')],function(_0x3e39fe){var _0x45efa6=_0x3e39fe[_0xc769('0x95')]({'plain':!![]});_0x45efa6[_0xc769('0x117')]=_0x35eaca;if(_0x45efa6[_0xc769('0x12e')]){_0x45efa6[_0xc769('0x12e')]={'id':_0x45efa6[_0xc769('0x12e')]['id'],'name':_0x45efa6[_0xc769('0x12e')][_0xc769('0x1c')],'fullname':_0x45efa6[_0xc769('0x12e')][_0xc769('0x123')]};}return _0x45efa6;});});}});return Promise[_0xc769('0x27')](_0x148e78);})['then'](function(_0x3a7de0){return _(_0x3a7de0)[_0xc769('0x138')]()['sortBy'](_0xc769('0x11f'))['reverse']()['value']();})[_0xc769('0x17')](function(_0x4a8621){_0x595511[_0xc769('0x88')]=_0x4457d3[_0xc769('0x13')]?_0x4a8621['slice'](_0x4457d3[_0xc769('0x11')],_0x4457d3[_0xc769('0x11')]+_0x4457d3[_0xc769('0x13')]):_0x4a8621;return _0x595511;})[_0xc769('0x17')](respondWithFilteredResult(_0x530f0b,_0x4457d3))[_0xc769('0x89')](handleError(_0x530f0b,null));};
\ No newline at end of file
index 115d72a..2bcebc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb1e9=['../../mysqldb','CmContact','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x27a2d9,_0x5ad641){var _0x2326a7=function(_0xd1d26c){while(--_0xd1d26c){_0x27a2d9['push'](_0x27a2d9['shift']());}};_0x2326a7(++_0x5ad641);}(_0xb1e9,0xba));var _0x9b1e=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xb1e9[_0x4b369d];return _0x571a98;};'use strict';var EventEmitter=require(_0x9b1e('0x0'));var CmContact=require(_0x9b1e('0x1'))['db'][_0x9b1e('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents[_0x9b1e('0x3')](0x0);var events={'afterCreate':_0x9b1e('0x4'),'afterUpdate':_0x9b1e('0x5'),'afterDestroy':_0x9b1e('0x6')};function emitEvent(_0x5e194f){return function(_0x3e8102,_0x3e86ba,_0x5843bf){CmContactEvents[_0x9b1e('0x7')](_0x5e194f+':'+_0x3e8102['id'],_0x3e8102);CmContactEvents[_0x9b1e('0x7')](_0x5e194f,_0x3e8102);_0x5843bf(null);};}for(var e in events){if(events[_0x9b1e('0x8')](e)){var event=events[e];CmContact[_0x9b1e('0x9')](e,emitEvent(event));}}module[_0x9b1e('0xa')]=CmContactEvents;
\ No newline at end of file
+var _0xf70a=['exports','events','../../mysqldb','CmContact','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x96fc86,_0x5d2577){var _0x3571b3=function(_0x2bea37){while(--_0x2bea37){_0x96fc86['push'](_0x96fc86['shift']());}};_0x3571b3(++_0x5d2577);}(_0xf70a,0x65));var _0xaf70=function(_0x101094,_0x5d3900){_0x101094=_0x101094-0x0;var _0x3d6d75=_0xf70a[_0x101094];return _0x3d6d75;};'use strict';var EventEmitter=require(_0xaf70('0x0'));var CmContact=require(_0xaf70('0x1'))['db'][_0xaf70('0x2')];var CmContactEvents=new EventEmitter();CmContactEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xaf70('0x3'),'afterUpdate':_0xaf70('0x4'),'afterDestroy':_0xaf70('0x5')};function emitEvent(_0x3ab857){return function(_0x477d60,_0xcf4223,_0x14d799){CmContactEvents[_0xaf70('0x6')](_0x3ab857+':'+_0x477d60['id'],_0x477d60);CmContactEvents[_0xaf70('0x6')](_0x3ab857,_0x477d60);_0x14d799(null);};}for(var e in events){if(events[_0xaf70('0x7')](e)){var event=events[e];CmContact[_0xaf70('0x8')](e,emitEvent(event));}}module[_0xaf70('0x9')]=CmContactEvents;
\ No newline at end of file
index 7700bd0..9722b72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2948=['../../config/environment','../../config/environment/shared','exports','define','CmContact','cm_contacts','phone','fti_cm_contacts','firstName','lastName','mobile','fax','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','get','error','afterCreate','inspect','scheduledat','YYYY-MM-DD\x20HH:mm:ss','dialTimezone','VoiceQueue','findOne','then','isNil','timezones','utcOffset','add','minutes','format','ret','CmHopper','create','ListId','priority','callbackUniqueid','catch','cmContact,\x20afterCreate\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','CmHopperFinal','\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','cmContact,\x20afterCreate,\x20','findAll','outbound','dialCheckDuplicateType','CmList','Lists','length','always','onlyIfOpen','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','message','Campaign','isEmpty','destroy','ContactId','VoiceQueueId','CampaignId','push','all','info','[CmContact][afterDestroy][Succesfull]','[CmContact][afterDestroy][Error]','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x13af23,_0x7ef276){var _0x49533d=function(_0x57deaa){while(--_0x57deaa){_0x13af23['push'](_0x13af23['shift']());}};_0x49533d(++_0x7ef276);}(_0x2948,0x8f));var _0x8294=function(_0x54280d,_0x269c9d){_0x54280d=_0x54280d-0x0;var _0x5463c3=_0x2948[_0x54280d];return _0x5463c3;};'use strict';var _=require(_0x8294('0x0'));var util=require(_0x8294('0x1'));var logger=require(_0x8294('0x2'))('api');var moment=require(_0x8294('0x3'));var BPromise=require(_0x8294('0x4'));var rp=require(_0x8294('0x5'));var fs=require('fs');var path=require(_0x8294('0x6'));var rimraf=require('rimraf');var config=require(_0x8294('0x7'));var shared=require(_0x8294('0x8'));var attributes=require('./cmContact.attributes');module[_0x8294('0x9')]=function(_0x4b0d1a,_0x1aba3b){return _0x4b0d1a[_0x8294('0xa')](_0x8294('0xb'),attributes,{'tableName':_0x8294('0xc'),'paranoid':!![],'indexes':[{'name':_0x8294('0xd'),'fields':['phone']},{'name':_0x8294('0xe'),'fields':[_0x8294('0xf'),_0x8294('0x10'),'phone',_0x8294('0x11'),_0x8294('0x12'),'email'],'type':_0x8294('0x13')}],'timestamps':!![],'charset':_0x8294('0x14'),'collate':_0x8294('0x15'),'hooks':{'afterCreate':function(_0x26300e,_0x4006ad,_0x473727){var _0x42fa4d=_0x4b0d1a[_0x8294('0x16')];var _0x3460b1=_0x26300e[_0x8294('0x17')]({'plain':!![]});function _0x43a6a7(){return function(_0x251dd7){logger[_0x8294('0x18')]('cmContact',_0x8294('0x19'),util[_0x8294('0x1a')](_0x251dd7,{'showHidden':![],'depth':null}));};}function _0x33df12(_0x5edf54,_0x349cc6){var _0x3ad3de=_0x349cc6[_0x8294('0x1b')]?_0x349cc6['scheduledat']:moment()['format'](_0x8294('0x1c'));return new BPromise(function(_0x208b66,_0x3b23e7){if(_['isNil'](_0x349cc6[_0x8294('0x1d')])){_0x208b66({'ret':_0x3ad3de});}else{_0x42fa4d[_0x8294('0x1e')][_0x8294('0x1f')]({'where':{'id':_0x5edf54['id']}})[_0x8294('0x20')](function(_0x19954f){if(!_[_0x8294('0x21')](_0x19954f)){var _0x58e4ec=_0x19954f['dialTimezone'];if(!_[_0x8294('0x21')](_0x58e4ec)){var _0xecf805=shared[_0x8294('0x22')];var _0x1e6cd0=_0xecf805[_0x58e4ec];var _0x4edf29=_0xecf805[_0x349cc6['dialTimezone']];if(!_[_0x8294('0x21')](_0x1e6cd0)&&!_[_0x8294('0x21')](_0x4edf29)){var _0x5d74ba=_0x1e6cd0[_0x8294('0x23')]-_0x4edf29[_0x8294('0x23')];_0x3ad3de=_0x349cc6['scheduledat']?_0x349cc6[_0x8294('0x1b')]:moment();var _0xf37081=moment(_0x3ad3de)[_0x8294('0x24')](_0x5d74ba,_0x8294('0x25'));_0x208b66({'ret':_0xf37081[_0x8294('0x26')]('YYYY-MM-DD\x20HH:mm:ss')});}else _0x208b66({'ret':_0x3ad3de});}else _0x208b66({'ret':_0x3ad3de});}else{_0x208b66({'ret':_0x3ad3de});}});}});return 0xa;}var _0x5f58dd=function(_0x180724){return new BPromise(function(_0x53e9af,_0x127040){_0x33df12(_0x180724,_0x3460b1)['then'](function(_0x440b0a){_0x3460b1[_0x8294('0x1b')]=_0x440b0a[_0x8294('0x27')];_0x42fa4d[_0x8294('0x28')]['findOne']({'where':{'phone':_0x3460b1[_0x8294('0xd')],'VoiceQueueId':_0x180724['id']}})[_0x8294('0x20')](function(_0x4eeff7){if(!_[_0x8294('0x21')](_0x4eeff7)){throw new Error('cmContact,\x20afterCreate\x20'+_0x3460b1[_0x8294('0xd')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x180724['id']);}return _0x42fa4d[_0x8294('0x28')][_0x8294('0x29')]({'phone':_0x3460b1['phone'],'ContactId':_0x3460b1['id'],'ListId':_0x3460b1[_0x8294('0x2a')],'priority':_0x3460b1[_0x8294('0x2b')]?_0x3460b1['priority']:0x2,'scheduledat':_0x3460b1[_0x8294('0x1b')]?_0x3460b1['scheduledat']:moment()['format'](_0x8294('0x1c')),'callback':_0x3460b1[_0x8294('0x2c')]?!![]:![],'callbackuniqueid':_0x3460b1['callbackUniqueid']?_0x3460b1[_0x8294('0x2c')]:undefined,'callbackat':_0x3460b1['callbackUniqueid']?moment()[_0x8294('0x26')](_0x8294('0x1c')):undefined,'VoiceQueueId':_0x180724['id']});})[_0x8294('0x2d')](function(_0xd794c){_0x127040(_0xd794c);});});});};var _0x4ec21e=function(_0x2960aa){return new BPromise(function(_0x636abc,_0x511f95){_0x33df12(_0x2960aa,_0x3460b1)[_0x8294('0x20')](function(_0x30745a){_0x3460b1[_0x8294('0x1b')]=_0x30745a[_0x8294('0x27')];_0x42fa4d[_0x8294('0x28')]['findOne']({'where':{'phone':_0x3460b1[_0x8294('0xd')],'VoiceQueueId':_0x2960aa['id']}})[_0x8294('0x20')](function(_0x1396f3){if(!_['isNil'](_0x1396f3)){throw new Error(_0x8294('0x2e')+_0x3460b1[_0x8294('0xd')]+_0x8294('0x2f')+_0x2960aa['id']);}return _0x42fa4d[_0x8294('0x30')][_0x8294('0x1f')]({'where':{'calleridnum':_0x3460b1['phone'],'VoiceQueueId':_0x2960aa['id']}});})[_0x8294('0x20')](function(_0x49e9e2){if(!_[_0x8294('0x21')](_0x49e9e2)){throw new Error('cmContact,\x20afterCreate,\x20'+_0x3460b1['phone']+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20'+_0x2960aa['id']);}return _0x42fa4d['CmHopper'][_0x8294('0x29')]({'phone':_0x3460b1['phone'],'ContactId':_0x3460b1['id'],'ListId':_0x3460b1['ListId'],'priority':_0x3460b1['priority']?_0x3460b1[_0x8294('0x2b')]:0x2,'scheduledat':_0x3460b1['scheduledat']?_0x3460b1[_0x8294('0x1b')]:moment()['format'](_0x8294('0x1c')),'callback':_0x3460b1[_0x8294('0x2c')]?!![]:![],'callbackuniqueid':_0x3460b1[_0x8294('0x2c')]?_0x3460b1['callbackUniqueid']:undefined,'callbackat':_0x3460b1[_0x8294('0x2c')]?moment()[_0x8294('0x26')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x2960aa['id']});})[_0x8294('0x2d')](function(_0x4c0a90){_0x511f95(_0x4c0a90);});});});};function _0x30140e(){return function(_0x52bc21){logger['error']('cmContact','afterCreate',util[_0x8294('0x1a')](_0x52bc21,{'showHidden':![],'depth':null}));};}function _0x5703fa(_0x2b1f88,_0x44351e){var _0x10b7c0=_0x44351e['scheduledat']?_0x44351e[_0x8294('0x1b')]:moment()[_0x8294('0x26')](_0x8294('0x1c'));return new BPromise(function(_0x309b99,_0x591f05){if(_[_0x8294('0x21')](_0x44351e[_0x8294('0x1d')])){_0x309b99({'ret':_0x10b7c0});}else{_0x42fa4d['Campaign'][_0x8294('0x1f')]({'where':{'id':_0x2b1f88['id']}})['then'](function(_0xdb9e31){if(!_[_0x8294('0x21')](_0xdb9e31)){var _0x1039e1=_0xdb9e31[_0x8294('0x1d')];if(!_[_0x8294('0x21')](_0x1039e1)){var _0x260267=shared[_0x8294('0x22')];var _0xf6f90e=_0x260267[_0x1039e1];var _0x10c1f7=_0x260267[_0x44351e[_0x8294('0x1d')]];if(!_['isNil'](_0xf6f90e)&&!_[_0x8294('0x21')](_0x10c1f7)){var _0x46032c=_0xf6f90e['utcOffset']-_0x10c1f7[_0x8294('0x23')];_0x10b7c0=_0x44351e[_0x8294('0x1b')]?_0x44351e[_0x8294('0x1b')]:moment();var _0x2d79a0=moment(_0x10b7c0)[_0x8294('0x24')](_0x46032c,'minutes');_0x309b99({'ret':_0x2d79a0[_0x8294('0x26')](_0x8294('0x1c'))});}else _0x309b99({'ret':_0x10b7c0});}else _0x309b99({'ret':_0x10b7c0});}else{_0x309b99({'ret':_0x10b7c0});}});}});return 0xa;}var _0x4b43c9=function(_0x31b1b2){return new BPromise(function(_0x2d4c10,_0x43f15e){_0x5703fa(_0x31b1b2,_0x3460b1)['then'](function(_0x198dde){_0x3460b1[_0x8294('0x1b')]=_0x198dde['ret'];_0x42fa4d[_0x8294('0x28')][_0x8294('0x1f')]({'where':{'phone':_0x3460b1['phone'],'CampaignId':_0x31b1b2['id']}})[_0x8294('0x20')](function(_0x5601f1){if(!_['isNil'](_0x5601f1)){throw new Error('cmContact,\x20afterCreate\x20'+_0x3460b1['phone']+_0x8294('0x31')+_0x31b1b2['id']);}return _0x42fa4d[_0x8294('0x28')][_0x8294('0x29')]({'phone':_0x3460b1['phone'],'ContactId':_0x3460b1['id'],'ListId':_0x3460b1[_0x8294('0x2a')],'priority':_0x3460b1[_0x8294('0x2b')]?_0x3460b1[_0x8294('0x2b')]:0x2,'scheduledat':_0x3460b1['scheduledat']?_0x3460b1['scheduledat']:moment()[_0x8294('0x26')](_0x8294('0x1c')),'callback':_0x3460b1[_0x8294('0x2c')]?!![]:![],'callbackuniqueid':_0x3460b1[_0x8294('0x2c')]?_0x3460b1[_0x8294('0x2c')]:undefined,'callbackat':_0x3460b1[_0x8294('0x2c')]?moment()[_0x8294('0x26')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x31b1b2['id']});})[_0x8294('0x2d')](function(_0x5a70de){_0x43f15e(_0x5a70de);});});});};var _0x41665a=function(_0x5d28eb){return new BPromise(function(_0x4b8b0f,_0x561ca0){_0x5703fa(_0x5d28eb,_0x3460b1)[_0x8294('0x20')](function(_0x552a62){_0x3460b1[_0x8294('0x1b')]=_0x552a62[_0x8294('0x27')];_0x42fa4d[_0x8294('0x28')]['findOne']({'where':{'phone':_0x3460b1[_0x8294('0xd')],'CampaignId':_0x5d28eb['id']}})[_0x8294('0x20')](function(_0x4a7509){if(!_[_0x8294('0x21')](_0x4a7509)){throw new Error(_0x8294('0x2e')+_0x3460b1[_0x8294('0xd')]+_0x8294('0x32')+_0x5d28eb['id']);}return _0x42fa4d[_0x8294('0x30')]['findOne']({'where':{'calleridnum':_0x3460b1[_0x8294('0xd')],'CampaignId':_0x5d28eb['id']}});})[_0x8294('0x20')](function(_0x111657){if(!_[_0x8294('0x21')](_0x111657)){throw new Error(_0x8294('0x33')+_0x3460b1[_0x8294('0xd')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20'+_0x5d28eb['id']);}return _0x42fa4d[_0x8294('0x28')]['create']({'phone':_0x3460b1['phone'],'ContactId':_0x3460b1['id'],'ListId':_0x3460b1[_0x8294('0x2a')],'priority':_0x3460b1[_0x8294('0x2b')]?_0x3460b1[_0x8294('0x2b')]:0x2,'scheduledat':_0x3460b1[_0x8294('0x1b')]?_0x3460b1[_0x8294('0x1b')]:moment()[_0x8294('0x26')](_0x8294('0x1c')),'callback':_0x3460b1[_0x8294('0x2c')]?!![]:![],'callbackuniqueid':_0x3460b1[_0x8294('0x2c')]?_0x3460b1['callbackUniqueid']:undefined,'callbackat':_0x3460b1[_0x8294('0x2c')]?moment()['format'](_0x8294('0x1c')):undefined,'CampaignId':_0x5d28eb['id']});})[_0x8294('0x2d')](function(_0x538b3f){_0x561ca0(_0x538b3f);});});});};if(_0x3460b1['ListId']){_0x42fa4d[_0x8294('0x1e')][_0x8294('0x34')]({'where':{'type':_0x8294('0x35')},'attributes':['id',_0x8294('0x36'),_0x8294('0x1d')],'include':[{'model':_0x42fa4d[_0x8294('0x37')],'as':_0x8294('0x38'),'where':{'id':_0x3460b1['ListId']}}]})[_0x8294('0x20')](function(_0x9965a5){if(_0x9965a5){var _0x493c33=[];for(var _0x534fc3=0x0,_0xf46d76;_0x534fc3<_0x9965a5[_0x8294('0x39')];_0x534fc3+=0x1){_0xf46d76=_0x9965a5[_0x534fc3]['get']({'plain':!![]});switch(_0xf46d76[_0x8294('0x36')]){case _0x8294('0x3a'):_0x4ec21e(_0xf46d76)[_0x8294('0x2d')](_0x43a6a7());break;case _0x8294('0x3b'):_0x5f58dd(_0xf46d76)[_0x8294('0x2d')](_0x43a6a7());break;default:_0x5703fa(_0xf46d76,_0x3460b1)['then'](function(_0x1ecdcc){_0x3460b1[_0x8294('0x1b')]=_0x1ecdcc['ret'];_0x42fa4d[_0x8294('0x28')][_0x8294('0x29')]({'phone':_0x3460b1[_0x8294('0xd')],'ContactId':_0x3460b1['id'],'ListId':_0x3460b1['ListId'],'scheduledat':_0x3460b1[_0x8294('0x1b')]?_0x3460b1[_0x8294('0x1b')]:moment()[_0x8294('0x26')](_0x8294('0x1c')),'priority':_0x3460b1[_0x8294('0x2b')]?_0x3460b1['priority']:0x2,'callback':_0x3460b1[_0x8294('0x2c')]?!![]:![],'callbackuniqueid':_0x3460b1['callbackUniqueid']?_0x3460b1[_0x8294('0x2c')]:undefined,'callbackat':_0x3460b1['callbackUniqueid']?moment()[_0x8294('0x26')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0xf46d76['id']})[_0x8294('0x2d')](_0x43a6a7());});}}}})[_0x8294('0x20')](function(){return _0x42fa4d[_0x8294('0x1e')][_0x8294('0x34')]({'where':{'type':_0x8294('0x35')},'attributes':['id'],'include':[{'model':_0x42fa4d[_0x8294('0x37')],'as':_0x8294('0x3c'),'where':{'id':_0x3460b1[_0x8294('0x2a')]}}]})[_0x8294('0x20')](function(_0x93d051){if(_0x93d051){var _0x4531d4=[];for(var _0x1aff56=0x0,_0x3f373d;_0x1aff56<_0x93d051[_0x8294('0x39')];_0x1aff56+=0x1){_0x3f373d=_0x93d051[_0x1aff56][_0x8294('0x17')]({'plain':!![]});_0x42fa4d[_0x8294('0x3d')][_0x8294('0x29')]({'phone':_0x3460b1[_0x8294('0xd')],'ContactId':_0x3460b1['id'],'ListId':_0x3460b1[_0x8294('0x2a')],'VoiceQueueId':_0x3f373d['id']})['catch'](function(_0x2caf1d){logger[_0x8294('0x18')](_0x8294('0x3e'),_0x8294('0x19'),_0x2caf1d[_0x8294('0x3f')]);});}}});})[_0x8294('0x20')](function(){return _0x42fa4d[_0x8294('0x40')][_0x8294('0x34')]({'attributes':['id',_0x8294('0x36'),_0x8294('0x1d')],'include':[{'model':_0x42fa4d[_0x8294('0x37')],'as':_0x8294('0x38'),'where':{'id':_0x3460b1[_0x8294('0x2a')]}}]})[_0x8294('0x20')](function(_0x206f2c){if(_0x206f2c){var _0x3be7e3=[];for(var _0x3a9a0e=0x0,_0x256ac7;_0x3a9a0e<_0x206f2c['length'];_0x3a9a0e+=0x1){_0x256ac7=_0x206f2c[_0x3a9a0e]['get']({'plain':!![]});switch(_0x256ac7[_0x8294('0x36')]){case _0x8294('0x3a'):_0x41665a(_0x256ac7)[_0x8294('0x2d')](_0x30140e());break;case _0x8294('0x3b'):_0x4b43c9(_0x256ac7)['catch'](_0x30140e());break;default:_0x42fa4d[_0x8294('0x28')][_0x8294('0x29')]({'phone':_0x3460b1[_0x8294('0xd')],'ContactId':_0x3460b1['id'],'ListId':_0x3460b1[_0x8294('0x2a')],'scheduledat':_0x3460b1[_0x8294('0x1b')]?_0x3460b1[_0x8294('0x1b')]:moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'priority':_0x3460b1[_0x8294('0x2b')]?_0x3460b1[_0x8294('0x2b')]:0x2,'callback':_0x3460b1['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x3460b1[_0x8294('0x2c')]?_0x3460b1[_0x8294('0x2c')]:undefined,'callbackat':_0x3460b1[_0x8294('0x2c')]?moment()[_0x8294('0x26')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'CampaignId':_0x256ac7['id']})['catch'](_0x30140e());}}}});})[_0x8294('0x20')](function(){return _0x42fa4d[_0x8294('0x40')][_0x8294('0x34')]({'attributes':['id'],'include':[{'model':_0x42fa4d[_0x8294('0x37')],'as':_0x8294('0x3c'),'where':{'id':_0x3460b1[_0x8294('0x2a')]}}]})[_0x8294('0x20')](function(_0x554cf6){if(_0x554cf6){var _0x464b98=[];for(var _0x460380=0x0,_0x31aaf7;_0x460380<_0x554cf6[_0x8294('0x39')];_0x460380+=0x1){_0x31aaf7=_0x554cf6[_0x460380]['get']({'plain':!![]});_0x42fa4d[_0x8294('0x3d')]['create']({'phone':_0x3460b1[_0x8294('0xd')],'ContactId':_0x3460b1['id'],'ListId':_0x3460b1[_0x8294('0x2a')],'CampaignId':_0x31aaf7['id']})[_0x8294('0x2d')](function(_0x518023){logger[_0x8294('0x18')](_0x8294('0x3e'),'afterCreate',_0x518023[_0x8294('0x3f')]);});}}});})[_0x8294('0x20')](function(){_0x473727();})['catch'](function(_0xe0f364){logger[_0x8294('0x18')](_0x8294('0x3e'),_0x8294('0x19'),_0xe0f364[_0x8294('0x3f')]);_0x473727(_0xe0f364);});}else{_0x473727(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x310b00,_0x247eda,_0x222154){var _0x1f6d24=_0x4b0d1a[_0x8294('0x16')];var _0x57dbe9=_0x310b00[_0x8294('0x17')]({'plain':!![]});return _0x1f6d24[_0x8294('0x28')][_0x8294('0x34')]({'raw':!![],'where':{'ListId':_0x57dbe9['ListId'],'ContactId':_0x57dbe9['id']}})[_0x8294('0x20')](function(_0x5b63e7){if(!_[_0x8294('0x41')](_0x5b63e7)){var _0x38e7e8=[];for(var _0xdf22a2=0x0;_0xdf22a2<_0x5b63e7[_0x8294('0x39')];_0xdf22a2+=0x1){var _0x91088f=_0x1f6d24[_0x8294('0x28')][_0x8294('0x42')]({'where':{'ListId':_0x5b63e7[_0xdf22a2][_0x8294('0x2a')],'ContactId':_0x5b63e7[_0xdf22a2][_0x8294('0x43')],'VoiceQueueId':_0x5b63e7[_0xdf22a2][_0x8294('0x44')],'CampaignId':_0x5b63e7[_0xdf22a2][_0x8294('0x45')]}});_0x38e7e8[_0x8294('0x46')](_0x91088f);}return BPromise[_0x8294('0x47')](_0x38e7e8);}})[_0x8294('0x20')](function(_0x3e8c7f){logger[_0x8294('0x48')](_0x8294('0x49'),util[_0x8294('0x1a')](_0x3e8c7f,{'showHidden':![],'depth':null}));_0x222154();})[_0x8294('0x2d')](function(_0x15c3c5){logger[_0x8294('0x18')](_0x8294('0x4a'),util['inspect'](_0x15c3c5,{'showHidden':![],'depth':null}));_0x222154(_0x15c3c5);});}}});};
\ No newline at end of file
+var _0x62b1=['isNil','dialTimezone','VoiceQueue','findOne','then','utcOffset','add','minutes','YYYY-MM-DD\x20HH:mm:ss','ret','CmHopper','create','ListId','priority','callbackUniqueid','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopper\x20VoiceQueue\x20','cmContact,\x20afterCreate,\x20','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20VoiceQueue\x20','Campaign','timezones','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','CmHopperFinal','\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20always,\x20exist\x20in\x20hopperFinal\x20Campaign\x20','catch','findAll','outbound','dialCheckDuplicateType','CmList','Lists','length','always','onlyIfOpen','BlackLists','CmHopperBlack','cmContact,\x20%s,\x20%s','message','CampaignId','all','[CmContact][afterDestroy][Error]','lodash','../../config/logger','api','request-promise','rimraf','../../config/environment','../../config/environment/shared','exports','CmContact','cm_contacts','phone','fti_cm_contacts','lastName','fax','email','FULLTEXT','utf8mb4','utf8mb4_unicode_ci','models','get','error','cmContact','afterCreate','inspect','scheduledat','format'];(function(_0x19bdf5,_0x3a6395){var _0x140930=function(_0x1b1a19){while(--_0x1b1a19){_0x19bdf5['push'](_0x19bdf5['shift']());}};_0x140930(++_0x3a6395);}(_0x62b1,0x1bb));var _0x162b=function(_0x3a9f77,_0xed358b){_0x3a9f77=_0x3a9f77-0x0;var _0x57aba0=_0x62b1[_0x3a9f77];return _0x57aba0;};'use strict';var _=require(_0x162b('0x0'));var util=require('util');var logger=require(_0x162b('0x1'))(_0x162b('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x162b('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x162b('0x4'));var config=require(_0x162b('0x5'));var shared=require(_0x162b('0x6'));var attributes=require('./cmContact.attributes');module[_0x162b('0x7')]=function(_0x40ddb7,_0x41db12){return _0x40ddb7['define'](_0x162b('0x8'),attributes,{'tableName':_0x162b('0x9'),'paranoid':!![],'indexes':[{'name':_0x162b('0xa'),'fields':[_0x162b('0xa')]},{'name':_0x162b('0xb'),'fields':['firstName',_0x162b('0xc'),_0x162b('0xa'),'mobile',_0x162b('0xd'),_0x162b('0xe')],'type':_0x162b('0xf')}],'timestamps':!![],'charset':_0x162b('0x10'),'collate':_0x162b('0x11'),'hooks':{'afterCreate':function(_0x353f2f,_0x403ebb,_0xcfd204){var _0x474cf9=_0x40ddb7[_0x162b('0x12')];var _0x555052=_0x353f2f[_0x162b('0x13')]({'plain':!![]});function _0x5e9940(){return function(_0x5966bc){logger[_0x162b('0x14')](_0x162b('0x15'),_0x162b('0x16'),util[_0x162b('0x17')](_0x5966bc,{'showHidden':![],'depth':null}));};}function _0x5689ce(_0x5cd62e,_0x54bea2){var _0x5902c6=_0x54bea2['scheduledat']?_0x54bea2[_0x162b('0x18')]:moment()[_0x162b('0x19')]('YYYY-MM-DD\x20HH:mm:ss');return new BPromise(function(_0x3cfc59,_0x45bbd1){if(_[_0x162b('0x1a')](_0x54bea2[_0x162b('0x1b')])){_0x3cfc59({'ret':_0x5902c6});}else{_0x474cf9[_0x162b('0x1c')][_0x162b('0x1d')]({'where':{'id':_0x5cd62e['id']}})[_0x162b('0x1e')](function(_0x184dac){if(!_[_0x162b('0x1a')](_0x184dac)){var _0x386b82=_0x184dac['dialTimezone'];if(!_[_0x162b('0x1a')](_0x386b82)){var _0x1aa75d=shared['timezones'];var _0xbcf952=_0x1aa75d[_0x386b82];var _0x480acc=_0x1aa75d[_0x54bea2[_0x162b('0x1b')]];if(!_[_0x162b('0x1a')](_0xbcf952)&&!_['isNil'](_0x480acc)){var _0x35ddd1=_0xbcf952[_0x162b('0x1f')]-_0x480acc[_0x162b('0x1f')];_0x5902c6=_0x54bea2['scheduledat']?_0x54bea2['scheduledat']:moment();var _0x3882b1=moment(_0x5902c6)[_0x162b('0x20')](_0x35ddd1,_0x162b('0x21'));_0x3cfc59({'ret':_0x3882b1[_0x162b('0x19')](_0x162b('0x22'))});}else _0x3cfc59({'ret':_0x5902c6});}else _0x3cfc59({'ret':_0x5902c6});}else{_0x3cfc59({'ret':_0x5902c6});}});}});return 0xa;}var _0x1be057=function(_0x290c6b){return new BPromise(function(_0x5689a8,_0x2e1123){_0x5689ce(_0x290c6b,_0x555052)[_0x162b('0x1e')](function(_0x404e63){_0x555052['scheduledat']=_0x404e63[_0x162b('0x23')];_0x474cf9[_0x162b('0x24')][_0x162b('0x1d')]({'where':{'phone':_0x555052['phone'],'VoiceQueueId':_0x290c6b['id']}})[_0x162b('0x1e')](function(_0x20098b){if(!_[_0x162b('0x1a')](_0x20098b)){throw new Error('cmContact,\x20afterCreate\x20'+_0x555052[_0x162b('0xa')]+'\x20contact\x20not\x20insert\x20in\x20hopper,\x20check\x20duplicate\x20onlyIfOpen,\x20exist\x20in\x20hopper\x20VoiceQueue\x20'+_0x290c6b['id']);}return _0x474cf9[_0x162b('0x24')][_0x162b('0x25')]({'phone':_0x555052[_0x162b('0xa')],'ContactId':_0x555052['id'],'ListId':_0x555052[_0x162b('0x26')],'priority':_0x555052[_0x162b('0x27')]?_0x555052[_0x162b('0x27')]:0x2,'scheduledat':_0x555052['scheduledat']?_0x555052['scheduledat']:moment()['format'](_0x162b('0x22')),'callback':_0x555052[_0x162b('0x28')]?!![]:![],'callbackuniqueid':_0x555052[_0x162b('0x28')]?_0x555052['callbackUniqueid']:undefined,'callbackat':_0x555052[_0x162b('0x28')]?moment()[_0x162b('0x19')]('YYYY-MM-DD\x20HH:mm:ss'):undefined,'VoiceQueueId':_0x290c6b['id']});})['catch'](function(_0x59f640){_0x2e1123(_0x59f640);});});});};var _0x564a10=function(_0x393c68){return new BPromise(function(_0x3c1633,_0x327b57){_0x5689ce(_0x393c68,_0x555052)[_0x162b('0x1e')](function(_0x5de404){_0x555052[_0x162b('0x18')]=_0x5de404[_0x162b('0x23')];_0x474cf9[_0x162b('0x24')]['findOne']({'where':{'phone':_0x555052[_0x162b('0xa')],'VoiceQueueId':_0x393c68['id']}})[_0x162b('0x1e')](function(_0x21280f){if(!_[_0x162b('0x1a')](_0x21280f)){throw new Error('cmContact,\x20afterCreate\x20'+_0x555052['phone']+_0x162b('0x29')+_0x393c68['id']);}return _0x474cf9['CmHopperFinal'][_0x162b('0x1d')]({'where':{'calleridnum':_0x555052[_0x162b('0xa')],'VoiceQueueId':_0x393c68['id']}});})[_0x162b('0x1e')](function(_0x21ff1e){if(!_[_0x162b('0x1a')](_0x21ff1e)){throw new Error(_0x162b('0x2a')+_0x555052[_0x162b('0xa')]+_0x162b('0x2b')+_0x393c68['id']);}return _0x474cf9[_0x162b('0x24')][_0x162b('0x25')]({'phone':_0x555052[_0x162b('0xa')],'ContactId':_0x555052['id'],'ListId':_0x555052[_0x162b('0x26')],'priority':_0x555052['priority']?_0x555052['priority']:0x2,'scheduledat':_0x555052[_0x162b('0x18')]?_0x555052[_0x162b('0x18')]:moment()[_0x162b('0x19')](_0x162b('0x22')),'callback':_0x555052['callbackUniqueid']?!![]:![],'callbackuniqueid':_0x555052['callbackUniqueid']?_0x555052[_0x162b('0x28')]:undefined,'callbackat':_0x555052[_0x162b('0x28')]?moment()['format'](_0x162b('0x22')):undefined,'VoiceQueueId':_0x393c68['id']});})['catch'](function(_0x47fbc0){_0x327b57(_0x47fbc0);});});});};function _0xbc0e64(){return function(_0x58bc3d){logger[_0x162b('0x14')](_0x162b('0x15'),_0x162b('0x16'),util[_0x162b('0x17')](_0x58bc3d,{'showHidden':![],'depth':null}));};}function _0x10cd37(_0x37cec9,_0x4d72db){var _0x544ca5=_0x4d72db[_0x162b('0x18')]?_0x4d72db['scheduledat']:moment()[_0x162b('0x19')](_0x162b('0x22'));return new BPromise(function(_0xce4882,_0x2aa77f){if(_[_0x162b('0x1a')](_0x4d72db[_0x162b('0x1b')])){_0xce4882({'ret':_0x544ca5});}else{_0x474cf9[_0x162b('0x2c')][_0x162b('0x1d')]({'where':{'id':_0x37cec9['id']}})['then'](function(_0x19b4f4){if(!_[_0x162b('0x1a')](_0x19b4f4)){var _0x3de362=_0x19b4f4[_0x162b('0x1b')];if(!_[_0x162b('0x1a')](_0x3de362)){var _0xf92255=shared[_0x162b('0x2d')];var _0x4b0c20=_0xf92255[_0x3de362];var _0xbc0e83=_0xf92255[_0x4d72db[_0x162b('0x1b')]];if(!_[_0x162b('0x1a')](_0x4b0c20)&&!_['isNil'](_0xbc0e83)){var _0x487425=_0x4b0c20[_0x162b('0x1f')]-_0xbc0e83['utcOffset'];_0x544ca5=_0x4d72db[_0x162b('0x18')]?_0x4d72db['scheduledat']:moment();var _0x5d78aa=moment(_0x544ca5)[_0x162b('0x20')](_0x487425,_0x162b('0x21'));_0xce4882({'ret':_0x5d78aa[_0x162b('0x19')]('YYYY-MM-DD\x20HH:mm:ss')});}else _0xce4882({'ret':_0x544ca5});}else _0xce4882({'ret':_0x544ca5});}else{_0xce4882({'ret':_0x544ca5});}});}});return 0xa;}var _0x1078b4=function(_0x29717d){return new BPromise(function(_0x21e1d8,_0x147be8){_0x10cd37(_0x29717d,_0x555052)[_0x162b('0x1e')](function(_0x55fa34){_0x555052[_0x162b('0x18')]=_0x55fa34[_0x162b('0x23')];_0x474cf9[_0x162b('0x24')]['findOne']({'where':{'phone':_0x555052[_0x162b('0xa')],'CampaignId':_0x29717d['id']}})[_0x162b('0x1e')](function(_0x3da159){if(!_[_0x162b('0x1a')](_0x3da159)){throw new Error(_0x162b('0x2e')+_0x555052[_0x162b('0xa')]+_0x162b('0x2f')+_0x29717d['id']);}return _0x474cf9[_0x162b('0x24')][_0x162b('0x25')]({'phone':_0x555052[_0x162b('0xa')],'ContactId':_0x555052['id'],'ListId':_0x555052[_0x162b('0x26')],'priority':_0x555052['priority']?_0x555052['priority']:0x2,'scheduledat':_0x555052[_0x162b('0x18')]?_0x555052[_0x162b('0x18')]:moment()[_0x162b('0x19')](_0x162b('0x22')),'callback':_0x555052[_0x162b('0x28')]?!![]:![],'callbackuniqueid':_0x555052[_0x162b('0x28')]?_0x555052[_0x162b('0x28')]:undefined,'callbackat':_0x555052[_0x162b('0x28')]?moment()[_0x162b('0x19')](_0x162b('0x22')):undefined,'CampaignId':_0x29717d['id']});})['catch'](function(_0x568085){_0x147be8(_0x568085);});});});};var _0x566f74=function(_0xed3f01){return new BPromise(function(_0x446ac6,_0x5405c1){_0x10cd37(_0xed3f01,_0x555052)[_0x162b('0x1e')](function(_0x431a14){_0x555052['scheduledat']=_0x431a14[_0x162b('0x23')];_0x474cf9[_0x162b('0x24')][_0x162b('0x1d')]({'where':{'phone':_0x555052[_0x162b('0xa')],'CampaignId':_0xed3f01['id']}})[_0x162b('0x1e')](function(_0x3ecb10){if(!_[_0x162b('0x1a')](_0x3ecb10)){throw new Error(_0x162b('0x2e')+_0x555052[_0x162b('0xa')]+_0x162b('0x30')+_0xed3f01['id']);}return _0x474cf9[_0x162b('0x31')][_0x162b('0x1d')]({'where':{'calleridnum':_0x555052['phone'],'CampaignId':_0xed3f01['id']}});})[_0x162b('0x1e')](function(_0x6f2b5a){if(!_[_0x162b('0x1a')](_0x6f2b5a)){throw new Error(_0x162b('0x2a')+_0x555052[_0x162b('0xa')]+_0x162b('0x32')+_0xed3f01['id']);}return _0x474cf9['CmHopper']['create']({'phone':_0x555052[_0x162b('0xa')],'ContactId':_0x555052['id'],'ListId':_0x555052[_0x162b('0x26')],'priority':_0x555052[_0x162b('0x27')]?_0x555052[_0x162b('0x27')]:0x2,'scheduledat':_0x555052[_0x162b('0x18')]?_0x555052['scheduledat']:moment()[_0x162b('0x19')](_0x162b('0x22')),'callback':_0x555052[_0x162b('0x28')]?!![]:![],'callbackuniqueid':_0x555052[_0x162b('0x28')]?_0x555052[_0x162b('0x28')]:undefined,'callbackat':_0x555052[_0x162b('0x28')]?moment()[_0x162b('0x19')](_0x162b('0x22')):undefined,'CampaignId':_0xed3f01['id']});})[_0x162b('0x33')](function(_0x3e7a24){_0x5405c1(_0x3e7a24);});});});};if(_0x555052['ListId']){_0x474cf9[_0x162b('0x1c')][_0x162b('0x34')]({'where':{'type':_0x162b('0x35')},'attributes':['id',_0x162b('0x36'),_0x162b('0x1b')],'include':[{'model':_0x474cf9[_0x162b('0x37')],'as':_0x162b('0x38'),'where':{'id':_0x555052[_0x162b('0x26')]}}]})[_0x162b('0x1e')](function(_0x28b4b2){if(_0x28b4b2){var _0x38467b=[];for(var _0x1f6ce9=0x0,_0x2af74f;_0x1f6ce9<_0x28b4b2[_0x162b('0x39')];_0x1f6ce9+=0x1){_0x2af74f=_0x28b4b2[_0x1f6ce9][_0x162b('0x13')]({'plain':!![]});switch(_0x2af74f[_0x162b('0x36')]){case _0x162b('0x3a'):_0x564a10(_0x2af74f)['catch'](_0x5e9940());break;case _0x162b('0x3b'):_0x1be057(_0x2af74f)[_0x162b('0x33')](_0x5e9940());break;default:_0x10cd37(_0x2af74f,_0x555052)['then'](function(_0x221719){_0x555052['scheduledat']=_0x221719[_0x162b('0x23')];_0x474cf9[_0x162b('0x24')][_0x162b('0x25')]({'phone':_0x555052[_0x162b('0xa')],'ContactId':_0x555052['id'],'ListId':_0x555052[_0x162b('0x26')],'scheduledat':_0x555052['scheduledat']?_0x555052['scheduledat']:moment()[_0x162b('0x19')](_0x162b('0x22')),'priority':_0x555052[_0x162b('0x27')]?_0x555052[_0x162b('0x27')]:0x2,'callback':_0x555052[_0x162b('0x28')]?!![]:![],'callbackuniqueid':_0x555052['callbackUniqueid']?_0x555052['callbackUniqueid']:undefined,'callbackat':_0x555052[_0x162b('0x28')]?moment()['format'](_0x162b('0x22')):undefined,'VoiceQueueId':_0x2af74f['id']})[_0x162b('0x33')](_0x5e9940());});}}}})[_0x162b('0x1e')](function(){return _0x474cf9['VoiceQueue'][_0x162b('0x34')]({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':_0x474cf9['CmList'],'as':_0x162b('0x3c'),'where':{'id':_0x555052[_0x162b('0x26')]}}]})[_0x162b('0x1e')](function(_0xc0fc8c){if(_0xc0fc8c){var _0x4d7141=[];for(var _0x14ecc8=0x0,_0x28124d;_0x14ecc8<_0xc0fc8c[_0x162b('0x39')];_0x14ecc8+=0x1){_0x28124d=_0xc0fc8c[_0x14ecc8]['get']({'plain':!![]});_0x474cf9[_0x162b('0x3d')][_0x162b('0x25')]({'phone':_0x555052[_0x162b('0xa')],'ContactId':_0x555052['id'],'ListId':_0x555052['ListId'],'VoiceQueueId':_0x28124d['id']})[_0x162b('0x33')](function(_0x479d59){logger['error'](_0x162b('0x3e'),_0x162b('0x16'),_0x479d59[_0x162b('0x3f')]);});}}});})[_0x162b('0x1e')](function(){return _0x474cf9[_0x162b('0x2c')][_0x162b('0x34')]({'attributes':['id',_0x162b('0x36'),'dialTimezone'],'include':[{'model':_0x474cf9[_0x162b('0x37')],'as':_0x162b('0x38'),'where':{'id':_0x555052[_0x162b('0x26')]}}]})[_0x162b('0x1e')](function(_0x3b0d8a){if(_0x3b0d8a){var _0x4adf52=[];for(var _0x5c4444=0x0,_0x4d4479;_0x5c4444<_0x3b0d8a[_0x162b('0x39')];_0x5c4444+=0x1){_0x4d4479=_0x3b0d8a[_0x5c4444][_0x162b('0x13')]({'plain':!![]});switch(_0x4d4479[_0x162b('0x36')]){case _0x162b('0x3a'):_0x566f74(_0x4d4479)['catch'](_0xbc0e64());break;case _0x162b('0x3b'):_0x1078b4(_0x4d4479)[_0x162b('0x33')](_0xbc0e64());break;default:_0x474cf9[_0x162b('0x24')][_0x162b('0x25')]({'phone':_0x555052[_0x162b('0xa')],'ContactId':_0x555052['id'],'ListId':_0x555052[_0x162b('0x26')],'scheduledat':_0x555052[_0x162b('0x18')]?_0x555052[_0x162b('0x18')]:moment()[_0x162b('0x19')](_0x162b('0x22')),'priority':_0x555052['priority']?_0x555052[_0x162b('0x27')]:0x2,'callback':_0x555052[_0x162b('0x28')]?!![]:![],'callbackuniqueid':_0x555052[_0x162b('0x28')]?_0x555052[_0x162b('0x28')]:undefined,'callbackat':_0x555052[_0x162b('0x28')]?moment()[_0x162b('0x19')](_0x162b('0x22')):undefined,'CampaignId':_0x4d4479['id']})['catch'](_0xbc0e64());}}}});})[_0x162b('0x1e')](function(){return _0x474cf9[_0x162b('0x2c')][_0x162b('0x34')]({'attributes':['id'],'include':[{'model':_0x474cf9[_0x162b('0x37')],'as':'BlackLists','where':{'id':_0x555052['ListId']}}]})[_0x162b('0x1e')](function(_0x44cf4a){if(_0x44cf4a){var _0x219ccd=[];for(var _0x596d59=0x0,_0x132ffc;_0x596d59<_0x44cf4a[_0x162b('0x39')];_0x596d59+=0x1){_0x132ffc=_0x44cf4a[_0x596d59][_0x162b('0x13')]({'plain':!![]});_0x474cf9[_0x162b('0x3d')]['create']({'phone':_0x555052[_0x162b('0xa')],'ContactId':_0x555052['id'],'ListId':_0x555052[_0x162b('0x26')],'CampaignId':_0x132ffc['id']})[_0x162b('0x33')](function(_0x406a79){logger[_0x162b('0x14')](_0x162b('0x3e'),'afterCreate',_0x406a79[_0x162b('0x3f')]);});}}});})[_0x162b('0x1e')](function(){_0xcfd204();})[_0x162b('0x33')](function(_0x429828){logger[_0x162b('0x14')](_0x162b('0x3e'),_0x162b('0x16'),_0x429828[_0x162b('0x3f')]);_0xcfd204(_0x429828);});}else{_0xcfd204(new Error('List\x20not\x20found'));}},'afterDestroy':function(_0x551435,_0x38dab0,_0x31837a){var _0x506966=_0x40ddb7[_0x162b('0x12')];var _0xc5b0ef=_0x551435[_0x162b('0x13')]({'plain':!![]});return _0x506966[_0x162b('0x24')][_0x162b('0x34')]({'raw':!![],'where':{'ListId':_0xc5b0ef[_0x162b('0x26')],'ContactId':_0xc5b0ef['id']}})[_0x162b('0x1e')](function(_0x53dd84){if(!_['isEmpty'](_0x53dd84)){var _0x4935e6=[];for(var _0x8bb135=0x0;_0x8bb135<_0x53dd84[_0x162b('0x39')];_0x8bb135+=0x1){var _0x3b9c86=_0x506966['CmHopper']['destroy']({'where':{'ListId':_0x53dd84[_0x8bb135]['ListId'],'ContactId':_0x53dd84[_0x8bb135]['ContactId'],'VoiceQueueId':_0x53dd84[_0x8bb135]['VoiceQueueId'],'CampaignId':_0x53dd84[_0x8bb135][_0x162b('0x40')]}});_0x4935e6['push'](_0x3b9c86);}return BPromise[_0x162b('0x41')](_0x4935e6);}})['then'](function(_0x298fc3){logger['info']('[CmContact][afterDestroy][Succesfull]',util[_0x162b('0x17')](_0x298fc3,{'showHidden':![],'depth':null}));_0x31837a();})[_0x162b('0x33')](function(_0x4c8101){logger[_0x162b('0x14')](_0x162b('0x42'),util[_0x162b('0x17')](_0x4c8101,{'showHidden':![],'depth':null}));_0x31837a(_0x4c8101);});}}});};
\ No newline at end of file
index d55e6af..638cd53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['phone','ListId','Contact','CmContactId','create','body','keys','length','startsWith','update','table','cm_contacts','id\x20=\x20?','sequelize','query','CreateCmContact','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','./cmContact.socket','register','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetCmContact','CmContact','findAll','options','where','limit','include','map','model','attributes','then','stringify','CmContactHasItem','find'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x13ea00,_0x12f610){_0x13ea00=_0x13ea00-0x0;var _0x1f7347=_0xa9e0[_0x13ea00];return _0x1f7347;};'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 squel=require('squel');var db=require(_0x0a9e('0x4'))['db'];var utils=require(_0x0a9e('0x5'));var logger=require(_0x0a9e('0x6'))(_0x0a9e('0x7'));var config=require(_0x0a9e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0a9e('0x9')][_0x0a9e('0xa')]({'port':0x232a});config[_0x0a9e('0xb')]=_['defaults'](config['redis'],{'host':_0x0a9e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0a9e('0xd'))[_0x0a9e('0xe')](socket);function respondWithRpcPromise(_0x307b3e,_0x3ab53f,_0xfeb75b){return new BPromise(function(_0xbd1168,_0x4a4c56){return client['request'](_0x307b3e,_0xfeb75b)['then'](function(_0x4cfe67){logger[_0x0a9e('0xf')](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));logger[_0x0a9e('0x12')](_0x0a9e('0x13'),_0x3ab53f,_0x0a9e('0x11'),JSON['stringify'](_0x4cfe67));if(_0x4cfe67[_0x0a9e('0x14')]){if(_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x15')]===0x1f4){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')]['message']);return _0x4a4c56(_0x4cfe67[_0x0a9e('0x14')]['message']);}logger[_0x0a9e('0x14')]('CmContact,\x20%s,\x20%s',_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x16')]);return _0xbd1168(_0x4cfe67['error'][_0x0a9e('0x16')]);}else{logger['info'](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));_0xbd1168(_0x4cfe67[_0x0a9e('0x17')][_0x0a9e('0x16')]);}})[_0x0a9e('0x18')](function(_0x2eb11f){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x2eb11f);_0x4a4c56(_0x2eb11f);});});}exports[_0x0a9e('0x19')]=function(_0x112016){var _0x1c696a=this;return new Promise(function(_0x105080,_0x4bb1e3){return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':_0x112016['options']?_0x112016[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x112016['options']?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')]||null:null,'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')]['attributes']||null:null,'limit':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1e')]||null:null,'include':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x112016['options']['include'],function(_0x197ec0){return{'model':db[_0x197ec0[_0x0a9e('0x21')]],'as':_0x197ec0['as'],'attributes':_0x197ec0[_0x0a9e('0x22')],'include':_0x197ec0[_0x0a9e('0x1f')]?_['map'](_0x197ec0[_0x0a9e('0x1f')],function(_0x479bc4){return{'model':db[_0x479bc4[_0x0a9e('0x21')]],'as':_0x479bc4['as'],'attributes':_0x479bc4['attributes'],'include':_0x479bc4[_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x479bc4[_0x0a9e('0x1f')],function(_0x14433c){return{'model':db[_0x14433c[_0x0a9e('0x21')]],'as':_0x14433c['as'],'attributes':_0x14433c[_0x0a9e('0x22')]};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x23')](function(_0x14de77){logger['info'](_0x0a9e('0x19'),_0x112016);logger[_0x0a9e('0x12')](_0x0a9e('0x19'),_0x112016,JSON[_0x0a9e('0x24')](_0x14de77));if(_0x14de77['length']==0x0){return db[_0x0a9e('0x25')][_0x0a9e('0x26')]({'raw':!![],'where':{'item':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x27')]},'include':[{'model':db[_0x0a9e('0x1a')],'where':{'ListId':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')][_0x0a9e('0x28')],'deletedAt':{'$eq':null}},'as':_0x0a9e('0x29')}]})['then'](function(_0x426950){if(_['isNil'](_0x426950)){_0x105080(_0x14de77);}else{var _0x2407f9=_0x426950[_0x0a9e('0x2a')];return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':!![],'where':{'id':_0x2407f9},'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016['options'][_0x0a9e('0x22')]||null:null})[_0x0a9e('0x23')](function(_0x40cb85){_0x105080(_0x40cb85);});}});}else{_0x105080(_0x14de77);}})[_0x0a9e('0x18')](function(_0x2b45ea){logger[_0x0a9e('0x14')](_0x0a9e('0x19'),_0x2b45ea[_0x0a9e('0x16')],_0x112016);_0x4bb1e3(_0x1c696a['error'](0x1f4,_0x2b45ea[_0x0a9e('0x16')]));});});};exports['CreateCmContact']=function(_0x2cc7a0){var _0x14b13f=this;return new Promise(function(_0x2b7e7f,_0x3f3d41){return db['CmContact'][_0x0a9e('0x2b')](_0x2cc7a0[_0x0a9e('0x2c')],{'raw':_0x2cc7a0[_0x0a9e('0x1c')]?_0x2cc7a0[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1e8694){var _0x5640eb;for(var _0x24936a=0x0;_0x24936a<Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x0a9e('0x2e')];_0x24936a++){var _0x4f41ae=Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x24936a];if(_0x4f41ae[_0x0a9e('0x2f')]('cf_')){_0x5640eb=squel[_0x0a9e('0x30')]()[_0x0a9e('0x31')](_0x0a9e('0x32'))['set'](_0x4f41ae,_0x2cc7a0['body'][_0x4f41ae])[_0x0a9e('0x1d')](_0x0a9e('0x33'),_0x1e8694['id'])['toString']();break;}}if(!_0x5640eb)return _0x1e8694;return db[_0x0a9e('0x34')][_0x0a9e('0x35')](_0x5640eb)[_0x0a9e('0x23')](function(){return _0x1e8694;});})[_0x0a9e('0x23')](function(_0x4b38d9){logger['info'](_0x0a9e('0x36'),_0x2cc7a0);logger[_0x0a9e('0x12')]('CreateCmContact',_0x2cc7a0,JSON[_0x0a9e('0x24')](_0x4b38d9));_0x2b7e7f(_0x4b38d9);})[_0x0a9e('0x18')](function(_0x1459bb){logger['error'](_0x0a9e('0x36'),_0x1459bb[_0x0a9e('0x16')],_0x2cc7a0);_0x3f3d41(_0x14b13f[_0x0a9e('0x14')](0x1f4,_0x1459bb[_0x0a9e('0x16')]));});});};
\ No newline at end of file
+var _0xa9e0=['phone','ListId','Contact','CmContactId','create','body','keys','length','startsWith','update','table','cm_contacts','id\x20=\x20?','sequelize','query','CreateCmContact','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','./cmContact.socket','register','info','CmContact,\x20%s,\x20%s','request\x20sent','debug','CmContact,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetCmContact','CmContact','findAll','options','where','limit','include','map','model','attributes','then','stringify','CmContactHasItem','find'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xa9e0[_0xf50820];return _0x2a9b10;};'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 squel=require('squel');var db=require(_0x0a9e('0x4'))['db'];var utils=require(_0x0a9e('0x5'));var logger=require(_0x0a9e('0x6'))(_0x0a9e('0x7'));var config=require(_0x0a9e('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x0a9e('0x9')][_0x0a9e('0xa')]({'port':0x232a});config[_0x0a9e('0xb')]=_['defaults'](config['redis'],{'host':_0x0a9e('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x0a9e('0xd'))[_0x0a9e('0xe')](socket);function respondWithRpcPromise(_0x307b3e,_0x3ab53f,_0xfeb75b){return new BPromise(function(_0xbd1168,_0x4a4c56){return client['request'](_0x307b3e,_0xfeb75b)['then'](function(_0x4cfe67){logger[_0x0a9e('0xf')](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));logger[_0x0a9e('0x12')](_0x0a9e('0x13'),_0x3ab53f,_0x0a9e('0x11'),JSON['stringify'](_0x4cfe67));if(_0x4cfe67[_0x0a9e('0x14')]){if(_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x15')]===0x1f4){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')]['message']);return _0x4a4c56(_0x4cfe67[_0x0a9e('0x14')]['message']);}logger[_0x0a9e('0x14')]('CmContact,\x20%s,\x20%s',_0x3ab53f,_0x4cfe67[_0x0a9e('0x14')][_0x0a9e('0x16')]);return _0xbd1168(_0x4cfe67['error'][_0x0a9e('0x16')]);}else{logger['info'](_0x0a9e('0x10'),_0x3ab53f,_0x0a9e('0x11'));_0xbd1168(_0x4cfe67[_0x0a9e('0x17')][_0x0a9e('0x16')]);}})[_0x0a9e('0x18')](function(_0x2eb11f){logger[_0x0a9e('0x14')](_0x0a9e('0x10'),_0x3ab53f,_0x2eb11f);_0x4a4c56(_0x2eb11f);});});}exports[_0x0a9e('0x19')]=function(_0x112016){var _0x1c696a=this;return new Promise(function(_0x105080,_0x4bb1e3){return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':_0x112016['options']?_0x112016[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x112016['options']?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')]||null:null,'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')]['attributes']||null:null,'limit':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1e')]||null:null,'include':_0x112016[_0x0a9e('0x1c')]?_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x112016['options']['include'],function(_0x197ec0){return{'model':db[_0x197ec0[_0x0a9e('0x21')]],'as':_0x197ec0['as'],'attributes':_0x197ec0[_0x0a9e('0x22')],'include':_0x197ec0[_0x0a9e('0x1f')]?_['map'](_0x197ec0[_0x0a9e('0x1f')],function(_0x479bc4){return{'model':db[_0x479bc4[_0x0a9e('0x21')]],'as':_0x479bc4['as'],'attributes':_0x479bc4['attributes'],'include':_0x479bc4[_0x0a9e('0x1f')]?_[_0x0a9e('0x20')](_0x479bc4[_0x0a9e('0x1f')],function(_0x14433c){return{'model':db[_0x14433c[_0x0a9e('0x21')]],'as':_0x14433c['as'],'attributes':_0x14433c[_0x0a9e('0x22')]};}):[]};}):[]};}):[]:[]})[_0x0a9e('0x23')](function(_0x14de77){logger['info'](_0x0a9e('0x19'),_0x112016);logger[_0x0a9e('0x12')](_0x0a9e('0x19'),_0x112016,JSON[_0x0a9e('0x24')](_0x14de77));if(_0x14de77['length']==0x0){return db[_0x0a9e('0x25')][_0x0a9e('0x26')]({'raw':!![],'where':{'item':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x27')]},'include':[{'model':db[_0x0a9e('0x1a')],'where':{'ListId':_0x112016[_0x0a9e('0x1c')][_0x0a9e('0x1d')][_0x0a9e('0x28')],'deletedAt':{'$eq':null}},'as':_0x0a9e('0x29')}]})['then'](function(_0x426950){if(_['isNil'](_0x426950)){_0x105080(_0x14de77);}else{var _0x2407f9=_0x426950[_0x0a9e('0x2a')];return db[_0x0a9e('0x1a')][_0x0a9e('0x1b')]({'raw':!![],'where':{'id':_0x2407f9},'attributes':_0x112016[_0x0a9e('0x1c')]?_0x112016['options'][_0x0a9e('0x22')]||null:null})[_0x0a9e('0x23')](function(_0x40cb85){_0x105080(_0x40cb85);});}});}else{_0x105080(_0x14de77);}})[_0x0a9e('0x18')](function(_0x2b45ea){logger[_0x0a9e('0x14')](_0x0a9e('0x19'),_0x2b45ea[_0x0a9e('0x16')],_0x112016);_0x4bb1e3(_0x1c696a['error'](0x1f4,_0x2b45ea[_0x0a9e('0x16')]));});});};exports['CreateCmContact']=function(_0x2cc7a0){var _0x14b13f=this;return new Promise(function(_0x2b7e7f,_0x3f3d41){return db['CmContact'][_0x0a9e('0x2b')](_0x2cc7a0[_0x0a9e('0x2c')],{'raw':_0x2cc7a0[_0x0a9e('0x1c')]?_0x2cc7a0[_0x0a9e('0x1c')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1e8694){var _0x5640eb;for(var _0x24936a=0x0;_0x24936a<Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x0a9e('0x2e')];_0x24936a++){var _0x4f41ae=Object[_0x0a9e('0x2d')](_0x2cc7a0[_0x0a9e('0x2c')])[_0x24936a];if(_0x4f41ae[_0x0a9e('0x2f')]('cf_')){_0x5640eb=squel[_0x0a9e('0x30')]()[_0x0a9e('0x31')](_0x0a9e('0x32'))['set'](_0x4f41ae,_0x2cc7a0['body'][_0x4f41ae])[_0x0a9e('0x1d')](_0x0a9e('0x33'),_0x1e8694['id'])['toString']();break;}}if(!_0x5640eb)return _0x1e8694;return db[_0x0a9e('0x34')][_0x0a9e('0x35')](_0x5640eb)[_0x0a9e('0x23')](function(){return _0x1e8694;});})[_0x0a9e('0x23')](function(_0x4b38d9){logger['info'](_0x0a9e('0x36'),_0x2cc7a0);logger[_0x0a9e('0x12')]('CreateCmContact',_0x2cc7a0,JSON[_0x0a9e('0x24')](_0x4b38d9));_0x2b7e7f(_0x4b38d9);})[_0x0a9e('0x18')](function(_0x1459bb){logger['error'](_0x0a9e('0x36'),_0x1459bb[_0x0a9e('0x16')],_0x2cc7a0);_0x3f3d41(_0x14b13f[_0x0a9e('0x14')](0x1f4,_0x1459bb[_0x0a9e('0x16')]));});});};
\ No newline at end of file
index 9e44a8b..aea549d 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(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0xa9e0[_0xf71120];return _0xbe2fd3;};'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(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'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 234fec4..057e814 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['basename','extname','now','/csv','single','file','uploadCsv','%s-%s%s','upload','/upload/:id','import','put','/:id','update','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','get','index','/describe','show','/:id/tags','isAuthenticated','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','create','/create_many','bulkCreate','setTags','setAdditionalPhones','/:id/duplicateAdditionalPhones','/:id/rescheduleAdditionalPhones','rescheduleAdditionalPhones','join','root','server/files/tmp','originalname','replace','format'];(function(_0x288fca,_0x527133){var _0x358935=function(_0x43d0f8){while(--_0x43d0f8){_0x288fca['push'](_0x288fca['shift']());}};_0x358935(++_0x527133);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'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/phones',auth['isAuthenticated'](),controller['getAdditionalPhones']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getHopperHistories']);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('0x18')]('/merge',auth[_0x0a9e('0xd')](),controller['merge']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/phones',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x1e'),auth['isAuthenticated'](),controller['duplicateAdditionalPhones']);router[_0x0a9e('0x18')](_0x0a9e('0x1f'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xfb6e48,_0x2fb0e4,_0x3b45bc){_0x3b45bc(null,path[_0x0a9e('0x21')](config[_0x0a9e('0x22')],_0x0a9e('0x23')));},'filename':function(_0x16b1ca,_0x5ea472,_0x59181e){_0x5ea472[_0x0a9e('0x24')]=_0x5ea472[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x59181e(null,util[_0x0a9e('0x26')]('%s-%s%s',path[_0x0a9e('0x27')](_0x5ea472['originalname'],path[_0x0a9e('0x28')](_0x5ea472['originalname'])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x5ea472[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')](_0x0a9e('0x2a'),upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2d')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3652a7,_0x468813,_0x2b1f27){_0x2b1f27(null,path[_0x0a9e('0x21')](config['root'],_0x0a9e('0x23')));},'filename':function(_0x40e7a3,_0x1843b2,_0x824a4f){_0x1843b2[_0x0a9e('0x24')]=_0x1843b2[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x824a4f(null,util[_0x0a9e('0x26')](_0x0a9e('0x2e'),path['basename'](_0x1843b2[_0x0a9e('0x24')],path['extname'](_0x1843b2[_0x0a9e('0x24')])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x1843b2[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')]('/upload',upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2f')]);router[_0x0a9e('0x18')](_0x0a9e('0x30'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x31')]);router[_0x0a9e('0x18')]('/uploadUpdates/:id',auth[_0x0a9e('0xd')](),controller['importUpdates']);router[_0x0a9e('0x32')](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x34')]);router['delete'](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x35')]);module[_0x0a9e('0x36')]=router;
\ No newline at end of file
+var _0xa9e0=['basename','extname','now','/csv','single','file','uploadCsv','%s-%s%s','upload','/upload/:id','import','put','/:id','update','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContact.controller','get','index','/describe','show','/:id/tags','isAuthenticated','getTags','/:id/hoppers','getHoppers','/:id/hopper_histories','/:id/hopper_finals','getHopperFinals','/:id/jscripty_sessions','getJscriptySessions','/:id/journey','getJourney','post','create','/create_many','bulkCreate','setTags','setAdditionalPhones','/:id/duplicateAdditionalPhones','/:id/rescheduleAdditionalPhones','rescheduleAdditionalPhones','join','root','server/files/tmp','originalname','replace','format'];(function(_0x4994d1,_0x27b0e6){var _0x3f36ea=function(_0x915fad){while(--_0x915fad){_0x4994d1['push'](_0x4994d1['shift']());}};_0x3f36ea(++_0x27b0e6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x54d4fe,_0x55e869){_0x54d4fe=_0x54d4fe-0x0;var _0x1ab5bb=_0xa9e0[_0x54d4fe];return _0x1ab5bb;};'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/phones',auth['isAuthenticated'](),controller['getAdditionalPhones']);router['get'](_0x0a9e('0xf'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x8')](_0x0a9e('0x11'),auth[_0x0a9e('0xd')](),controller['getHopperHistories']);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('0x18')]('/merge',auth[_0x0a9e('0xd')](),controller['merge']);router[_0x0a9e('0x18')]('/',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x19')]);router[_0x0a9e('0x18')](_0x0a9e('0x1a'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1b')]);router[_0x0a9e('0x18')](_0x0a9e('0xc'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1c')]);router[_0x0a9e('0x18')]('/:id/phones',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x1d')]);router['post'](_0x0a9e('0x1e'),auth['isAuthenticated'](),controller['duplicateAdditionalPhones']);router[_0x0a9e('0x18')](_0x0a9e('0x1f'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x20')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0xfb6e48,_0x2fb0e4,_0x3b45bc){_0x3b45bc(null,path[_0x0a9e('0x21')](config[_0x0a9e('0x22')],_0x0a9e('0x23')));},'filename':function(_0x16b1ca,_0x5ea472,_0x59181e){_0x5ea472[_0x0a9e('0x24')]=_0x5ea472[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x59181e(null,util[_0x0a9e('0x26')]('%s-%s%s',path[_0x0a9e('0x27')](_0x5ea472['originalname'],path[_0x0a9e('0x28')](_0x5ea472['originalname'])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x5ea472[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')](_0x0a9e('0x2a'),upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2d')]);var upload=multer({'storage':multer['diskStorage']({'destination':function(_0x3652a7,_0x468813,_0x2b1f27){_0x2b1f27(null,path[_0x0a9e('0x21')](config['root'],_0x0a9e('0x23')));},'filename':function(_0x40e7a3,_0x1843b2,_0x824a4f){_0x1843b2[_0x0a9e('0x24')]=_0x1843b2[_0x0a9e('0x24')][_0x0a9e('0x25')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x824a4f(null,util[_0x0a9e('0x26')](_0x0a9e('0x2e'),path['basename'](_0x1843b2[_0x0a9e('0x24')],path['extname'](_0x1843b2[_0x0a9e('0x24')])),Date[_0x0a9e('0x29')](),path[_0x0a9e('0x28')](_0x1843b2[_0x0a9e('0x24')])));}})});router[_0x0a9e('0x18')]('/upload',upload[_0x0a9e('0x2b')](_0x0a9e('0x2c')),controller[_0x0a9e('0x2f')]);router[_0x0a9e('0x18')](_0x0a9e('0x30'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x31')]);router[_0x0a9e('0x18')]('/uploadUpdates/:id',auth[_0x0a9e('0xd')](),controller['importUpdates']);router[_0x0a9e('0x32')](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x34')]);router['delete'](_0x0a9e('0x33'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x35')]);module[_0x0a9e('0x36')]=router;
\ No newline at end of file
index 828e630..9c34d5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x44f8=['INTEGER','STRING','sequelize','exports'];(function(_0x6e9c5e,_0x15d2e3){var _0x13f351=function(_0x245ab6){while(--_0x245ab6){_0x6e9c5e['push'](_0x6e9c5e['shift']());}};_0x13f351(++_0x15d2e3);}(_0x44f8,0x1de));var _0x844f=function(_0x36a20b,_0xb1645e){_0x36a20b=_0x36a20b-0x0;var _0x563e26=_0x44f8[_0x36a20b];return _0x563e26;};'use strict';var Sequelize=require(_0x844f('0x0'));module[_0x844f('0x1')]={'CmContactId':{'type':Sequelize[_0x844f('0x2')],'primaryKey':!![]},'item':{'type':Sequelize[_0x844f('0x3')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0x844f('0x2')],'defaultValue':null},'ItemClass':{'type':Sequelize[_0x844f('0x3')],'defaultValue':'PHONE'},'OrderBy':{'type':Sequelize['INTEGER'],'defaultValue':null},'description':{'type':Sequelize[_0x844f('0x3')],'defaultValue':null}};
\ No newline at end of file
+var _0x6822=['exports','INTEGER','STRING','PHONE'];(function(_0x3fa26f,_0x270eb5){var _0xb034c1=function(_0x1dfcc9){while(--_0x1dfcc9){_0x3fa26f['push'](_0x3fa26f['shift']());}};_0xb034c1(++_0x270eb5);}(_0x6822,0x18c));var _0x2682=function(_0x1586c0,_0x44bf07){_0x1586c0=_0x1586c0-0x0;var _0x43e436=_0x6822[_0x1586c0];return _0x43e436;};'use strict';var Sequelize=require('sequelize');module[_0x2682('0x0')]={'CmContactId':{'type':Sequelize[_0x2682('0x1')],'primaryKey':!![]},'item':{'type':Sequelize[_0x2682('0x2')],'defaultValue':'','primaryKey':!![]},'ItemTypeId':{'type':Sequelize[_0x2682('0x1')],'defaultValue':null},'ItemClass':{'type':Sequelize['STRING'],'defaultValue':_0x2682('0x3')},'OrderBy':{'type':Sequelize[_0x2682('0x1')],'defaultValue':null},'description':{'type':Sequelize[_0x2682('0x2')],'defaultValue':null}};
\ No newline at end of file
index a007321..faf03a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x926b=['save','update','then','destroy','CmContactHasItems','UserProfileResource','name','send','index','map','CmContactHasItem','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','intersection','length','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','fast-json-patch','util','path','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject'];(function(_0x58dc25,_0x49b9d5){var _0x21b0a7=function(_0x38a186){while(--_0x38a186){_0x58dc25['push'](_0x58dc25['shift']());}};_0x21b0a7(++_0x49b9d5);}(_0x926b,0x1dd));var _0xb926=function(_0xe75715,_0x35397a){_0xe75715=_0xe75715-0x0;var _0x145e93=_0x926b[_0xe75715];return _0x145e93;};'use strict';var emlformat=require(_0xb926('0x0'));var rimraf=require(_0xb926('0x1'));var zipdir=require(_0xb926('0x2'));var jsonpatch=require(_0xb926('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xb926('0x4'));var path=require(_0xb926('0x5'));var sox=require('sox');var csv=require(_0xb926('0x6'));var ejs=require(_0xb926('0x7'));var fs=require('fs');var fs_extra=require(_0xb926('0x8'));var _=require(_0xb926('0x9'));var squel=require('squel');var crypto=require(_0xb926('0xa'));var jsforce=require(_0xb926('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xb926('0x6'));var querystring=require(_0xb926('0xc'));var Papa=require('papaparse');var Redis=require(_0xb926('0xd'));var authService=require(_0xb926('0xe'));var qs=require('../../components/parsers/qs');var as=require(_0xb926('0xf'));var hardwareService=require(_0xb926('0x10'));var logger=require(_0xb926('0x11'))(_0xb926('0x12'));var utils=require('../../config/utils');var config=require(_0xb926('0x13'));var licenseUtil=require(_0xb926('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5ba1e7,_0x1dcd12){_0x1dcd12=_0x1dcd12||0xcc;return function(_0x4ca4c7){if(_0x4ca4c7){return _0x5ba1e7[_0xb926('0x15')](_0x1dcd12);}return _0x5ba1e7['status'](_0x1dcd12)[_0xb926('0x16')]();};}function respondWithResult(_0x5c1871,_0x5507cf){_0x5507cf=_0x5507cf||0xc8;return function(_0x3cd946){if(_0x3cd946){return _0x5c1871[_0xb926('0x17')](_0x5507cf)[_0xb926('0x18')](_0x3cd946);}};}function respondWithFilteredResult(_0x129edb,_0x25a7ff){return function(_0x3c73bd){if(_0x3c73bd){var _0x4a9642=typeof _0x25a7ff[_0xb926('0x19')]===_0xb926('0x1a')&&typeof _0x25a7ff[_0xb926('0x1b')]===_0xb926('0x1a');var _0x418bdd=_0x3c73bd['count'];var _0xa7993c=_0x4a9642?0x0:_0x25a7ff[_0xb926('0x19')];var _0x4a6126=_0x4a9642?_0x3c73bd[_0xb926('0x1c')]:_0x25a7ff['offset']+_0x25a7ff[_0xb926('0x1b')];var _0x3d2c29;if(_0x4a6126>=_0x418bdd){_0x4a6126=_0x418bdd;_0x3d2c29=0xc8;}else{_0x3d2c29=0xce;}_0x129edb['status'](_0x3d2c29);return _0x129edb[_0xb926('0x1d')](_0xb926('0x1e'),_0xa7993c+'-'+_0x4a6126+'/'+_0x418bdd)[_0xb926('0x18')](_0x3c73bd);}return null;};}function patchUpdates(_0x35153c){return function(_0xe1854){try{jsonpatch[_0xb926('0x1f')](_0xe1854,_0x35153c,!![]);}catch(_0x569aeb){return BPromise[_0xb926('0x20')](_0x569aeb);}return _0xe1854[_0xb926('0x21')]();};}function saveUpdates(_0x5dbb45,_0x327740){return function(_0x35443a){if(_0x35443a){return _0x35443a[_0xb926('0x22')](_0x5dbb45)[_0xb926('0x23')](function(_0x9779d2){return _0x9779d2;});}return null;};}function removeEntity(_0x353b2b,_0x5ea823){return function(_0x393ad9){if(_0x393ad9){return _0x393ad9[_0xb926('0x24')]()['then'](function(){var _0x4dbc44=_0x393ad9['get']({'plain':!![]});var _0x509070=_0xb926('0x25');return db[_0xb926('0x26')][_0xb926('0x24')]({'where':{'type':_0x509070,'resourceId':_0x4dbc44['id']}})[_0xb926('0x23')](function(){return _0x393ad9;});})[_0xb926('0x23')](function(){_0x353b2b[_0xb926('0x17')](0xcc)[_0xb926('0x16')]();});}};}function handleEntityNotFound(_0x379a8d,_0x34af0b){return function(_0x45ea1c){if(!_0x45ea1c){_0x379a8d[_0xb926('0x15')](0x194);}return _0x45ea1c;};}function handleError(_0x2348ca,_0x8106ea){_0x8106ea=_0x8106ea||0x1f4;return function(_0x179c26){logger['error'](_0x179c26['stack']);if(_0x179c26['name']){delete _0x179c26[_0xb926('0x27')];}_0x2348ca[_0xb926('0x17')](_0x8106ea)[_0xb926('0x28')](_0x179c26);};}exports[_0xb926('0x29')]=function(_0x5b9da4,_0x229afe){var _0x173fe3={},_0x50aff7={},_0x57a296={'count':0x0,'rows':[]};var _0x5ad6f8=_[_0xb926('0x2a')](db[_0xb926('0x2b')][_0xb926('0x2c')],function(_0x1eae94){return{'name':_0x1eae94[_0xb926('0x2d')],'type':_0x1eae94[_0xb926('0x2e')][_0xb926('0x2f')]};});_0x50aff7[_0xb926('0x30')]=_[_0xb926('0x2a')](_0x5ad6f8,_0xb926('0x27'));_0x50aff7[_0xb926('0x31')]=_[_0xb926('0x32')](_0x5b9da4[_0xb926('0x31')]);_0x50aff7[_0xb926('0x33')]=_['intersection'](_0x50aff7['model'],_0x50aff7[_0xb926('0x31')]);_0x173fe3[_0xb926('0x34')]=_['intersection'](_0x50aff7[_0xb926('0x30')],qs[_0xb926('0x35')](_0x5b9da4[_0xb926('0x31')][_0xb926('0x35')]));_0x173fe3[_0xb926('0x34')]=_0x173fe3[_0xb926('0x34')]['length']?_0x173fe3[_0xb926('0x34')]:_0x50aff7[_0xb926('0x30')];if(!_0x5b9da4[_0xb926('0x31')][_0xb926('0x36')](_0xb926('0x37'))){_0x173fe3[_0xb926('0x1b')]=qs[_0xb926('0x1b')](_0x5b9da4[_0xb926('0x31')]['limit']);_0x173fe3[_0xb926('0x19')]=qs[_0xb926('0x19')](_0x5b9da4[_0xb926('0x31')][_0xb926('0x19')]);}_0x173fe3[_0xb926('0x38')]=qs[_0xb926('0x39')](_0x5b9da4[_0xb926('0x31')][_0xb926('0x39')]);_0x173fe3[_0xb926('0x3a')]=qs[_0xb926('0x33')](_[_0xb926('0x3b')](_0x5b9da4['query'],_0x50aff7[_0xb926('0x33')]),_0x5ad6f8);if(_0x5b9da4[_0xb926('0x31')][_0xb926('0x3c')]){_0x173fe3[_0xb926('0x3a')]=_[_0xb926('0x3d')](_0x173fe3[_0xb926('0x3a')],{'$or':_[_0xb926('0x2a')](_0x5ad6f8,function(_0x3fa5bd){if(_0x3fa5bd[_0xb926('0x2e')]!==_0xb926('0x3e')){var _0x30a312={};_0x30a312[_0x3fa5bd[_0xb926('0x27')]]={'$like':'%'+_0x5b9da4[_0xb926('0x31')][_0xb926('0x3c')]+'%'};return _0x30a312;}})});}_0x173fe3=_[_0xb926('0x3d')]({},_0x173fe3,_0x5b9da4[_0xb926('0x3f')]);var _0x55ebd8={'where':_0x173fe3[_0xb926('0x3a')]};return db[_0xb926('0x2b')]['count'](_0x55ebd8)[_0xb926('0x23')](function(_0x355115){_0x57a296[_0xb926('0x1c')]=_0x355115;if(_0x5b9da4['query'][_0xb926('0x40')]){_0x173fe3[_0xb926('0x41')]=[{'all':!![]}];}return db[_0xb926('0x2b')][_0xb926('0x42')](_0x173fe3);})[_0xb926('0x23')](function(_0x359071){_0x57a296[_0xb926('0x43')]=_0x359071;return _0x57a296;})[_0xb926('0x23')](respondWithFilteredResult(_0x229afe,_0x173fe3))[_0xb926('0x44')](handleError(_0x229afe,null));};exports[_0xb926('0x45')]=function(_0x3fd281,_0x3aa914){var _0x492e4e={'raw':!![],'where':{'id':_0x3fd281[_0xb926('0x46')]['id']}},_0x5dce2a={};_0x5dce2a[_0xb926('0x30')]=_['keys'](db[_0xb926('0x2b')][_0xb926('0x2c')]);_0x5dce2a[_0xb926('0x31')]=_['keys'](_0x3fd281['query']);_0x5dce2a['filters']=_[_0xb926('0x47')](_0x5dce2a[_0xb926('0x30')],_0x5dce2a[_0xb926('0x31')]);_0x492e4e['attributes']=_['intersection'](_0x5dce2a['model'],qs[_0xb926('0x35')](_0x3fd281['query'][_0xb926('0x35')]));_0x492e4e['attributes']=_0x492e4e[_0xb926('0x34')][_0xb926('0x48')]?_0x492e4e[_0xb926('0x34')]:_0x5dce2a[_0xb926('0x30')];if(_0x3fd281[_0xb926('0x31')]['includeAll']){_0x492e4e[_0xb926('0x41')]=[{'all':!![]}];}_0x492e4e=_['merge']({},_0x492e4e,_0x3fd281[_0xb926('0x3f')]);return db[_0xb926('0x2b')]['find'](_0x492e4e)[_0xb926('0x23')](handleEntityNotFound(_0x3aa914,null))[_0xb926('0x23')](respondWithResult(_0x3aa914,null))['catch'](handleError(_0x3aa914,null));};exports[_0xb926('0x49')]=function(_0x5713d3,_0x51abfb){return db[_0xb926('0x2b')][_0xb926('0x49')](_0x5713d3[_0xb926('0x4a')],{})[_0xb926('0x23')](function(_0x1e95da){var _0x50bc89=_0x5713d3[_0xb926('0x4b')][_0xb926('0x4c')]({'plain':!![]});if(!_0x50bc89)throw new Error(_0xb926('0x4d'));if(_0x50bc89[_0xb926('0x4e')]===_0xb926('0x4b')){var _0x31bd51=_0x1e95da[_0xb926('0x4c')]({'plain':!![]});var _0x1ecf09=_0xb926('0x25');return db[_0xb926('0x4f')][_0xb926('0x50')]({'where':{'name':_0x1ecf09,'userProfileId':_0x50bc89[_0xb926('0x51')]},'raw':!![]})['then'](function(_0x258a41){if(_0x258a41&&_0x258a41[_0xb926('0x52')]===0x0){return db[_0xb926('0x26')][_0xb926('0x49')]({'name':_0x31bd51[_0xb926('0x27')],'resourceId':_0x31bd51['id'],'type':_0x258a41[_0xb926('0x27')],'sectionId':_0x258a41['id']},{})['then'](function(){return _0x1e95da;});}else{return _0x1e95da;}})['catch'](function(_0xd06597){logger[_0xb926('0x53')](_0xb926('0x54'),_0xd06597);throw _0xd06597;});}return _0x1e95da;})[_0xb926('0x23')](respondWithResult(_0x51abfb,0xc9))[_0xb926('0x44')](handleError(_0x51abfb,null));};exports[_0xb926('0x22')]=function(_0x3103c5,_0x506420){if(_0x3103c5[_0xb926('0x4a')]['id']){delete _0x3103c5[_0xb926('0x4a')]['id'];}return db['CmContactHasItem'][_0xb926('0x50')]({'where':{'id':_0x3103c5[_0xb926('0x46')]['id']}})[_0xb926('0x23')](handleEntityNotFound(_0x506420,null))[_0xb926('0x23')](saveUpdates(_0x3103c5[_0xb926('0x4a')],null))['then'](respondWithResult(_0x506420,null))[_0xb926('0x44')](handleError(_0x506420,null));};exports[_0xb926('0x24')]=function(_0x1df694,_0x251dad){return db[_0xb926('0x2b')][_0xb926('0x50')]({'where':{'id':_0x1df694[_0xb926('0x46')]['id']}})[_0xb926('0x23')](handleEntityNotFound(_0x251dad,null))[_0xb926('0x23')](removeEntity(_0x251dad,null))[_0xb926('0x44')](handleError(_0x251dad,null));};
\ No newline at end of file
+var _0x90d0=['nolimit','limit','order','sort','where','filters','pick','filter','VIRTUAL','options','includeAll','include','findAll','rows','show','params','rawAttributes','merge','create','body','user','get','role','UserProfileSection','find','userProfileId','autoAssociation','catch','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','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','offset','undefined','count','set','Content-Range','json','apply','reject','save','update','CmContactHasItems','UserProfileResource','then','end','error','stack','name','send','map','CmContactHasItem','fieldName','type','model','keys','intersection','query','attributes','fields','length','hasOwnProperty'];(function(_0x21353c,_0x2ea587){var _0xa99120=function(_0x557f33){while(--_0x557f33){_0x21353c['push'](_0x21353c['shift']());}};_0xa99120(++_0x2ea587);}(_0x90d0,0x16d));var _0x090d=function(_0x388679,_0x502313){_0x388679=_0x388679-0x0;var _0x3392fa=_0x90d0[_0x388679];return _0x3392fa;};'use strict';var emlformat=require(_0x090d('0x0'));var rimraf=require(_0x090d('0x1'));var zipdir=require(_0x090d('0x2'));var jsonpatch=require(_0x090d('0x3'));var rp=require(_0x090d('0x4'));var moment=require(_0x090d('0x5'));var BPromise=require(_0x090d('0x6'));var Mustache=require(_0x090d('0x7'));var util=require(_0x090d('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0x090d('0x9'));var ejs=require(_0x090d('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x090d('0xb'));var crypto=require(_0x090d('0xc'));var jsforce=require(_0x090d('0xd'));var deskjs=require(_0x090d('0xe'));var toCsv=require(_0x090d('0x9'));var querystring=require(_0x090d('0xf'));var Papa=require(_0x090d('0x10'));var Redis=require('ioredis');var authService=require(_0x090d('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x090d('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x090d('0x13'))(_0x090d('0x14'));var utils=require('../../config/utils');var config=require(_0x090d('0x15'));var licenseUtil=require(_0x090d('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x433499,_0x36e32e){_0x36e32e=_0x36e32e||0xcc;return function(_0x3cdf4a){if(_0x3cdf4a){return _0x433499[_0x090d('0x17')](_0x36e32e);}return _0x433499[_0x090d('0x18')](_0x36e32e)['end']();};}function respondWithResult(_0x453312,_0x467a5a){_0x467a5a=_0x467a5a||0xc8;return function(_0x5d9bcc){if(_0x5d9bcc){return _0x453312[_0x090d('0x18')](_0x467a5a)['json'](_0x5d9bcc);}};}function respondWithFilteredResult(_0x5f3324,_0x42318f){return function(_0x48bd33){if(_0x48bd33){var _0x60700e=typeof _0x42318f[_0x090d('0x19')]===_0x090d('0x1a')&&typeof _0x42318f['limit']===_0x090d('0x1a');var _0x1bf233=_0x48bd33[_0x090d('0x1b')];var _0x436fc9=_0x60700e?0x0:_0x42318f[_0x090d('0x19')];var _0x201291=_0x60700e?_0x48bd33['count']:_0x42318f[_0x090d('0x19')]+_0x42318f['limit'];var _0x11b9ee;if(_0x201291>=_0x1bf233){_0x201291=_0x1bf233;_0x11b9ee=0xc8;}else{_0x11b9ee=0xce;}_0x5f3324[_0x090d('0x18')](_0x11b9ee);return _0x5f3324[_0x090d('0x1c')](_0x090d('0x1d'),_0x436fc9+'-'+_0x201291+'/'+_0x1bf233)[_0x090d('0x1e')](_0x48bd33);}return null;};}function patchUpdates(_0x12094c){return function(_0x50a976){try{jsonpatch[_0x090d('0x1f')](_0x50a976,_0x12094c,!![]);}catch(_0x592e1e){return BPromise[_0x090d('0x20')](_0x592e1e);}return _0x50a976[_0x090d('0x21')]();};}function saveUpdates(_0x28ce22,_0x3b872f){return function(_0x4fae88){if(_0x4fae88){return _0x4fae88[_0x090d('0x22')](_0x28ce22)['then'](function(_0xdf0b9c){return _0xdf0b9c;});}return null;};}function removeEntity(_0x3f0590,_0x7ede2b){return function(_0x3c8320){if(_0x3c8320){return _0x3c8320['destroy']()['then'](function(){var _0x9e500e=_0x3c8320['get']({'plain':!![]});var _0x58d9d6=_0x090d('0x23');return db[_0x090d('0x24')]['destroy']({'where':{'type':_0x58d9d6,'resourceId':_0x9e500e['id']}})['then'](function(){return _0x3c8320;});})[_0x090d('0x25')](function(){_0x3f0590[_0x090d('0x18')](0xcc)[_0x090d('0x26')]();});}};}function handleEntityNotFound(_0x2105b9,_0x4c0626){return function(_0x59630c){if(!_0x59630c){_0x2105b9[_0x090d('0x17')](0x194);}return _0x59630c;};}function handleError(_0x2518ff,_0x3f4a3d){_0x3f4a3d=_0x3f4a3d||0x1f4;return function(_0x5dbfc0){logger[_0x090d('0x27')](_0x5dbfc0[_0x090d('0x28')]);if(_0x5dbfc0[_0x090d('0x29')]){delete _0x5dbfc0[_0x090d('0x29')];}_0x2518ff[_0x090d('0x18')](_0x3f4a3d)[_0x090d('0x2a')](_0x5dbfc0);};}exports['index']=function(_0x2ab248,_0x1021d1){var _0x635b06={},_0x2dd06c={},_0x4abaef={'count':0x0,'rows':[]};var _0x5464ef=_[_0x090d('0x2b')](db[_0x090d('0x2c')]['rawAttributes'],function(_0x3a4cbf){return{'name':_0x3a4cbf[_0x090d('0x2d')],'type':_0x3a4cbf[_0x090d('0x2e')]['key']};});_0x2dd06c[_0x090d('0x2f')]=_[_0x090d('0x2b')](_0x5464ef,'name');_0x2dd06c['query']=_[_0x090d('0x30')](_0x2ab248['query']);_0x2dd06c['filters']=_[_0x090d('0x31')](_0x2dd06c[_0x090d('0x2f')],_0x2dd06c[_0x090d('0x32')]);_0x635b06[_0x090d('0x33')]=_[_0x090d('0x31')](_0x2dd06c[_0x090d('0x2f')],qs[_0x090d('0x34')](_0x2ab248[_0x090d('0x32')][_0x090d('0x34')]));_0x635b06['attributes']=_0x635b06[_0x090d('0x33')][_0x090d('0x35')]?_0x635b06[_0x090d('0x33')]:_0x2dd06c[_0x090d('0x2f')];if(!_0x2ab248[_0x090d('0x32')][_0x090d('0x36')](_0x090d('0x37'))){_0x635b06[_0x090d('0x38')]=qs['limit'](_0x2ab248['query'][_0x090d('0x38')]);_0x635b06[_0x090d('0x19')]=qs['offset'](_0x2ab248[_0x090d('0x32')][_0x090d('0x19')]);}_0x635b06[_0x090d('0x39')]=qs[_0x090d('0x3a')](_0x2ab248[_0x090d('0x32')][_0x090d('0x3a')]);_0x635b06[_0x090d('0x3b')]=qs[_0x090d('0x3c')](_[_0x090d('0x3d')](_0x2ab248[_0x090d('0x32')],_0x2dd06c[_0x090d('0x3c')]),_0x5464ef);if(_0x2ab248['query'][_0x090d('0x3e')]){_0x635b06['where']=_['merge'](_0x635b06[_0x090d('0x3b')],{'$or':_['map'](_0x5464ef,function(_0xfaf975){if(_0xfaf975[_0x090d('0x2e')]!==_0x090d('0x3f')){var _0x357373={};_0x357373[_0xfaf975[_0x090d('0x29')]]={'$like':'%'+_0x2ab248[_0x090d('0x32')]['filter']+'%'};return _0x357373;}})});}_0x635b06=_['merge']({},_0x635b06,_0x2ab248[_0x090d('0x40')]);var _0x206875={'where':_0x635b06[_0x090d('0x3b')]};return db[_0x090d('0x2c')][_0x090d('0x1b')](_0x206875)['then'](function(_0x1cbebc){_0x4abaef['count']=_0x1cbebc;if(_0x2ab248['query'][_0x090d('0x41')]){_0x635b06[_0x090d('0x42')]=[{'all':!![]}];}return db[_0x090d('0x2c')][_0x090d('0x43')](_0x635b06);})[_0x090d('0x25')](function(_0x44f325){_0x4abaef[_0x090d('0x44')]=_0x44f325;return _0x4abaef;})['then'](respondWithFilteredResult(_0x1021d1,_0x635b06))['catch'](handleError(_0x1021d1,null));};exports[_0x090d('0x45')]=function(_0x4a5e25,_0x535ed6){var _0x4be306={'raw':!![],'where':{'id':_0x4a5e25[_0x090d('0x46')]['id']}},_0x4c291a={};_0x4c291a[_0x090d('0x2f')]=_[_0x090d('0x30')](db[_0x090d('0x2c')][_0x090d('0x47')]);_0x4c291a[_0x090d('0x32')]=_[_0x090d('0x30')](_0x4a5e25[_0x090d('0x32')]);_0x4c291a[_0x090d('0x3c')]=_[_0x090d('0x31')](_0x4c291a[_0x090d('0x2f')],_0x4c291a['query']);_0x4be306[_0x090d('0x33')]=_['intersection'](_0x4c291a[_0x090d('0x2f')],qs['fields'](_0x4a5e25['query'][_0x090d('0x34')]));_0x4be306[_0x090d('0x33')]=_0x4be306[_0x090d('0x33')][_0x090d('0x35')]?_0x4be306[_0x090d('0x33')]:_0x4c291a['model'];if(_0x4a5e25[_0x090d('0x32')][_0x090d('0x41')]){_0x4be306['include']=[{'all':!![]}];}_0x4be306=_[_0x090d('0x48')]({},_0x4be306,_0x4a5e25[_0x090d('0x40')]);return db[_0x090d('0x2c')]['find'](_0x4be306)[_0x090d('0x25')](handleEntityNotFound(_0x535ed6,null))[_0x090d('0x25')](respondWithResult(_0x535ed6,null))['catch'](handleError(_0x535ed6,null));};exports[_0x090d('0x49')]=function(_0x489221,_0x9c2ee0){return db[_0x090d('0x2c')][_0x090d('0x49')](_0x489221[_0x090d('0x4a')],{})[_0x090d('0x25')](function(_0x2621c1){var _0x3e90b2=_0x489221[_0x090d('0x4b')][_0x090d('0x4c')]({'plain':!![]});if(!_0x3e90b2)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3e90b2[_0x090d('0x4d')]===_0x090d('0x4b')){var _0x12cb7e=_0x2621c1['get']({'plain':!![]});var _0x13a05d=_0x090d('0x23');return db[_0x090d('0x4e')][_0x090d('0x4f')]({'where':{'name':_0x13a05d,'userProfileId':_0x3e90b2[_0x090d('0x50')]},'raw':!![]})[_0x090d('0x25')](function(_0x4dc75b){if(_0x4dc75b&&_0x4dc75b[_0x090d('0x51')]===0x0){return db[_0x090d('0x24')][_0x090d('0x49')]({'name':_0x12cb7e[_0x090d('0x29')],'resourceId':_0x12cb7e['id'],'type':_0x4dc75b['name'],'sectionId':_0x4dc75b['id']},{})[_0x090d('0x25')](function(){return _0x2621c1;});}else{return _0x2621c1;}})[_0x090d('0x52')](function(_0x341706){logger['error'](_0x090d('0x53'),_0x341706);throw _0x341706;});}return _0x2621c1;})[_0x090d('0x25')](respondWithResult(_0x9c2ee0,0xc9))[_0x090d('0x52')](handleError(_0x9c2ee0,null));};exports[_0x090d('0x22')]=function(_0x338826,_0x2d0fdc){if(_0x338826[_0x090d('0x4a')]['id']){delete _0x338826[_0x090d('0x4a')]['id'];}return db[_0x090d('0x2c')][_0x090d('0x4f')]({'where':{'id':_0x338826['params']['id']}})['then'](handleEntityNotFound(_0x2d0fdc,null))[_0x090d('0x25')](saveUpdates(_0x338826[_0x090d('0x4a')],null))[_0x090d('0x25')](respondWithResult(_0x2d0fdc,null))[_0x090d('0x52')](handleError(_0x2d0fdc,null));};exports['destroy']=function(_0x29a43a,_0x30af61){return db[_0x090d('0x2c')][_0x090d('0x4f')]({'where':{'id':_0x29a43a['params']['id']}})[_0x090d('0x25')](handleEntityNotFound(_0x30af61,null))['then'](removeEntity(_0x30af61,null))[_0x090d('0x52')](handleError(_0x30af61,null));};
\ No newline at end of file
index 5cb2cfe..3c4b00b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc5f=['define','CmContactHasItem','cm_contact_has_items','util','../../config/logger','request-promise','path','../../config/environment','./cmContactHasItem.attributes','exports'];(function(_0x7762d6,_0x1934b7){var _0x2627c3=function(_0x2fcf01){while(--_0x2fcf01){_0x7762d6['push'](_0x7762d6['shift']());}};_0x2627c3(++_0x1934b7);}(_0xcc5f,0x157));var _0xfcc5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xcc5f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0xfcc5('0x0'));var logger=require(_0xfcc5('0x1'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xfcc5('0x2'));var fs=require('fs');var path=require(_0xfcc5('0x3'));var rimraf=require('rimraf');var config=require(_0xfcc5('0x4'));var attributes=require(_0xfcc5('0x5'));module[_0xfcc5('0x6')]=function(_0x342d1a,_0x15003d){return _0x342d1a[_0xfcc5('0x7')](_0xfcc5('0x8'),attributes,{'tableName':_0xfcc5('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x678e=['cm_contact_has_items','lodash','util','api','moment','bluebird','./cmContactHasItem.attributes','exports','define'];(function(_0xf19f3e,_0xedef6){var _0x5262b4=function(_0x544fae){while(--_0x544fae){_0xf19f3e['push'](_0xf19f3e['shift']());}};_0x5262b4(++_0xedef6);}(_0x678e,0x106));var _0xe678=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x678e[_0x160c73];return _0xd9302;};'use strict';var _=require(_0xe678('0x0'));var util=require(_0xe678('0x1'));var logger=require('../../config/logger')(_0xe678('0x2'));var moment=require(_0xe678('0x3'));var BPromise=require(_0xe678('0x4'));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(_0xe678('0x5'));module[_0xe678('0x6')]=function(_0x31b105,_0x526608){return _0x31b105[_0xe678('0x7')]('CmContactHasItem',attributes,{'tableName':_0xe678('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1151d36..83bbc64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40b3=['CmContactHasItem,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','CmContactHasItem,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x40b3,0x1d2));var _0x340b=function(_0x13ac10,_0x46e79e){_0x13ac10=_0x13ac10-0x0;var _0x28eda2=_0x40b3[_0x13ac10];return _0x28eda2;};'use strict';var _=require(_0x340b('0x0'));var util=require(_0x340b('0x1'));var moment=require(_0x340b('0x2'));var BPromise=require(_0x340b('0x3'));var rs=require(_0x340b('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x340b('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x340b('0x6'));var config=require(_0x340b('0x7'));var jayson=require(_0x340b('0x8'));var client=jayson[_0x340b('0x9')][_0x340b('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x70efb0,_0x56ad7c,_0x2393bd){return new BPromise(function(_0x34cfef,_0x501054){return client['request'](_0x70efb0,_0x2393bd)['then'](function(_0x23a1c4){logger['info'](_0x340b('0xb'),_0x56ad7c,_0x340b('0xc'));logger[_0x340b('0xd')](_0x340b('0xe'),_0x56ad7c,_0x340b('0xc'),JSON['stringify'](_0x23a1c4));if(_0x23a1c4[_0x340b('0xf')]){if(_0x23a1c4[_0x340b('0xf')]['code']===0x1f4){logger[_0x340b('0xf')]('CmContactHasItem,\x20%s,\x20%s',_0x56ad7c,_0x23a1c4['error'][_0x340b('0x10')]);return _0x501054(_0x23a1c4[_0x340b('0xf')][_0x340b('0x10')]);}logger[_0x340b('0xf')](_0x340b('0xb'),_0x56ad7c,_0x23a1c4['error']['message']);return _0x34cfef(_0x23a1c4['error']['message']);}else{logger[_0x340b('0x11')](_0x340b('0xb'),_0x56ad7c,_0x340b('0xc'));_0x34cfef(_0x23a1c4[_0x340b('0x12')][_0x340b('0x10')]);}})[_0x340b('0x13')](function(_0xcb6ba3){logger[_0x340b('0xf')]('CmContactHasItem,\x20%s,\x20%s',_0x56ad7c,_0xcb6ba3);_0x501054(_0xcb6ba3);});});}
\ No newline at end of file
+var _0xbfb8=['catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','CmContactHasItem,\x20%s,\x20%s','request\x20sent','debug','CmContactHasItem,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x32b55c,_0x59c161){var _0x412eba=function(_0x15895f){while(--_0x15895f){_0x32b55c['push'](_0x32b55c['shift']());}};_0x412eba(++_0x59c161);}(_0xbfb8,0xb9));var _0x8bfb=function(_0x2ca442,_0x36fd70){_0x2ca442=_0x2ca442-0x0;var _0x25a426=_0xbfb8[_0x2ca442];return _0x25a426;};'use strict';var _=require(_0x8bfb('0x0'));var util=require('util');var moment=require(_0x8bfb('0x1'));var BPromise=require(_0x8bfb('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8bfb('0x3'));var db=require(_0x8bfb('0x4'))['db'];var utils=require(_0x8bfb('0x5'));var logger=require(_0x8bfb('0x6'))(_0x8bfb('0x7'));var config=require(_0x8bfb('0x8'));var jayson=require(_0x8bfb('0x9'));var client=jayson[_0x8bfb('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x6da363,_0x1cff0b,_0x47bd0d){return new BPromise(function(_0x18a38a,_0x28fcb4){return client[_0x8bfb('0xb')](_0x6da363,_0x47bd0d)[_0x8bfb('0xc')](function(_0x259717){logger[_0x8bfb('0xd')](_0x8bfb('0xe'),_0x1cff0b,_0x8bfb('0xf'));logger[_0x8bfb('0x10')](_0x8bfb('0x11'),_0x1cff0b,_0x8bfb('0xf'),JSON[_0x8bfb('0x12')](_0x259717));if(_0x259717[_0x8bfb('0x13')]){if(_0x259717['error']['code']===0x1f4){logger[_0x8bfb('0x13')](_0x8bfb('0xe'),_0x1cff0b,_0x259717[_0x8bfb('0x13')][_0x8bfb('0x14')]);return _0x28fcb4(_0x259717[_0x8bfb('0x13')]['message']);}logger[_0x8bfb('0x13')](_0x8bfb('0xe'),_0x1cff0b,_0x259717[_0x8bfb('0x13')][_0x8bfb('0x14')]);return _0x18a38a(_0x259717[_0x8bfb('0x13')][_0x8bfb('0x14')]);}else{logger[_0x8bfb('0xd')]('CmContactHasItem,\x20%s,\x20%s',_0x1cff0b,_0x8bfb('0xf'));_0x18a38a(_0x259717[_0x8bfb('0x15')]['message']);}})[_0x8bfb('0x16')](function(_0x53aabd){logger[_0x8bfb('0x13')](_0x8bfb('0xe'),_0x1cff0b,_0x53aabd);_0x28fcb4(_0x53aabd);});});}
\ No newline at end of file
index 0ddec1b..5562d93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfeaf=['multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmContactHasItem.controller','get','isAuthenticated','index','show','create','put','/:id','update','destroy','exports'];(function(_0x40f9c2,_0x3531b3){var _0x1f9b67=function(_0x3d515a){while(--_0x3d515a){_0x40f9c2['push'](_0x40f9c2['shift']());}};_0x1f9b67(++_0x3531b3);}(_0xfeaf,0x64));var _0xffea=function(_0x2f1dd2,_0x5eb612){_0x2f1dd2=_0x2f1dd2-0x0;var _0x375431=_0xfeaf[_0x2f1dd2];return _0x375431;};'use strict';var multer=require(_0xffea('0x0'));var util=require(_0xffea('0x1'));var path=require(_0xffea('0x2'));var timeout=require('connect-timeout');var express=require(_0xffea('0x3'));var router=express[_0xffea('0x4')]();var fs_extra=require(_0xffea('0x5'));var auth=require(_0xffea('0x6'));var interaction=require(_0xffea('0x7'));var config=require(_0xffea('0x8'));var controller=require(_0xffea('0x9'));router[_0xffea('0xa')]('/',auth[_0xffea('0xb')](),controller[_0xffea('0xc')]);router[_0xffea('0xa')]('/:id',auth[_0xffea('0xb')](),controller[_0xffea('0xd')]);router['post']('/',auth[_0xffea('0xb')](),controller[_0xffea('0xe')]);router[_0xffea('0xf')](_0xffea('0x10'),auth[_0xffea('0xb')](),controller[_0xffea('0x11')]);router['delete'](_0xffea('0x10'),auth[_0xffea('0xb')](),controller[_0xffea('0x12')]);module[_0xffea('0x13')]=router;
\ No newline at end of file
+var _0x1c35=['destroy','exports','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','isAuthenticated','post','create','put','/:id','update','delete'];(function(_0x442cac,_0x5748b3){var _0xd96f05=function(_0x34a4c8){while(--_0x34a4c8){_0x442cac['push'](_0x442cac['shift']());}};_0xd96f05(++_0x5748b3);}(_0x1c35,0x6e));var _0x51c3=function(_0x3cb3b3,_0x3b5d9e){_0x3cb3b3=_0x3cb3b3-0x0;var _0xa0733c=_0x1c35[_0x3cb3b3];return _0xa0733c;};'use strict';var multer=require('multer');var util=require(_0x51c3('0x0'));var path=require(_0x51c3('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x51c3('0x2')]();var fs_extra=require(_0x51c3('0x3'));var auth=require(_0x51c3('0x4'));var interaction=require(_0x51c3('0x5'));var config=require(_0x51c3('0x6'));var controller=require('./cmContactHasItem.controller');router[_0x51c3('0x7')]('/',auth['isAuthenticated'](),controller[_0x51c3('0x8')]);router[_0x51c3('0x7')]('/:id',auth[_0x51c3('0x9')](),controller['show']);router[_0x51c3('0xa')]('/',auth[_0x51c3('0x9')](),controller[_0x51c3('0xb')]);router[_0x51c3('0xc')](_0x51c3('0xd'),auth[_0x51c3('0x9')](),controller[_0x51c3('0xe')]);router[_0x51c3('0xf')](_0x51c3('0xd'),auth[_0x51c3('0x9')](),controller[_0x51c3('0x10')]);module[_0x51c3('0x11')]=router;
\ No newline at end of file
index ef2c928..0e5d1c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bea=['voice','sequelize','lodash','exports','VIRTUAL','getDataValue','alias','STRING','setDataValue','TEXT','type','values','isArray','stringify','BOOLEAN','ENUM'];(function(_0x1e8e37,_0x47a036){var _0x1a1b22=function(_0x39b8ce){while(--_0x39b8ce){_0x1e8e37['push'](_0x1e8e37['shift']());}};_0x1a1b22(++_0x47a036);}(_0x1bea,0xe1));var _0xa1be=function(_0x166e71,_0x3a1cd4){_0x166e71=_0x166e71-0x0;var _0x2ebc75=_0x1bea[_0x166e71];return _0x2ebc75;};'use strict';var Sequelize=require(_0xa1be('0x0'));var _=require(_0xa1be('0x1'));module[_0xa1be('0x2')]={'name':{'type':Sequelize[_0xa1be('0x3')],'get':function(_0x404f5a){return this[_0xa1be('0x4')](_0xa1be('0x5'));}},'alias':{'type':Sequelize[_0xa1be('0x6')],'allowNull':![],'set':function(_0x3bb724){this[_0xa1be('0x7')]('alias',_0x3bb724?_0x3bb724:this[_0xa1be('0x4')]('name'));}},'type':{'type':Sequelize[_0xa1be('0x6')],'allowNull':![]},'values':{'type':Sequelize[_0xa1be('0x8')]('long'),'get':function(){if(this[_0xa1be('0x4')](_0xa1be('0x9'))==='select'){return JSON['parse'](this[_0xa1be('0x4')](_0xa1be('0xa')));}else{return this[_0xa1be('0x4')](_0xa1be('0xa'));}},'set':function(_0x19e825){if(Array[_0xa1be('0xb')](_0x19e825)){this[_0xa1be('0x7')](_0xa1be('0xa'),JSON[_0xa1be('0xc')](_0x19e825));}else{this[_0xa1be('0x7')](_0xa1be('0xa'),_0x19e825);}}},'required':{'type':Sequelize[_0xa1be('0xd')],'defaultValue':![]},'clickToAction':{'type':Sequelize[_0xa1be('0xd')],'defaultValue':![]},'actionType':{'type':Sequelize[_0xa1be('0xe')](_0xa1be('0xf'))}};
\ No newline at end of file
+var _0xd885=['stringify','BOOLEAN','ENUM','voice','sequelize','lodash','exports','VIRTUAL','getDataValue','alias','setDataValue','name','STRING','TEXT','type','select','values'];(function(_0x34657c,_0x85d5fa){var _0xa54db4=function(_0xf69233){while(--_0xf69233){_0x34657c['push'](_0x34657c['shift']());}};_0xa54db4(++_0x85d5fa);}(_0xd885,0x169));var _0x5d88=function(_0x3c0b27,_0x3e891c){_0x3c0b27=_0x3c0b27-0x0;var _0x444957=_0xd885[_0x3c0b27];return _0x444957;};'use strict';var Sequelize=require(_0x5d88('0x0'));var _=require(_0x5d88('0x1'));module[_0x5d88('0x2')]={'name':{'type':Sequelize[_0x5d88('0x3')],'get':function(_0x3f7d1e){return this[_0x5d88('0x4')](_0x5d88('0x5'));}},'alias':{'type':Sequelize['STRING'],'allowNull':![],'set':function(_0x47e52c){this[_0x5d88('0x6')]('alias',_0x47e52c?_0x47e52c:this['getDataValue'](_0x5d88('0x7')));}},'type':{'type':Sequelize[_0x5d88('0x8')],'allowNull':![]},'values':{'type':Sequelize[_0x5d88('0x9')]('long'),'get':function(){if(this[_0x5d88('0x4')](_0x5d88('0xa'))===_0x5d88('0xb')){return JSON['parse'](this[_0x5d88('0x4')](_0x5d88('0xc')));}else{return this[_0x5d88('0x4')](_0x5d88('0xc'));}},'set':function(_0x54fb67){if(Array['isArray'](_0x54fb67)){this[_0x5d88('0x6')](_0x5d88('0xc'),JSON[_0x5d88('0xd')](_0x54fb67));}else{this[_0x5d88('0x6')](_0x5d88('0xc'),_0x54fb67);}}},'required':{'type':Sequelize[_0x5d88('0xe')],'defaultValue':![]},'clickToAction':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'actionType':{'type':Sequelize[_0x5d88('0xf')](_0x5d88('0x10'))}};
\ No newline at end of file
index 627961e..758809a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a3d=['create','sequelize','transaction','text','Sequelize','TEXT','INTEGER','switch','BOOLEAN','defaultValue','queryInterface','cm_contacts','format','cf_%d','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','update','destroy','then','sendStatus','error','name','send','index','map','CmCustomField','rawAttributes','fieldName','key','model','differenceBy','keys','query','filters','attributes','intersection','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','type','VIRTUAL','options','includeAll','include','rows','catch','show','params','fields','find','body'];(function(_0x1a8192,_0x3453f2){var _0x131de2=function(_0x50ab1c){while(--_0x50ab1c){_0x1a8192['push'](_0x1a8192['shift']());}};_0x131de2(++_0x3453f2);}(_0x0a3d,0x11f));var _0xd0a3=function(_0x1124d9,_0x1c2730){_0x1124d9=_0x1124d9-0x0;var _0x3158d6=_0x0a3d[_0x1124d9];return _0x3158d6;};'use strict';var emlformat=require(_0xd0a3('0x0'));var rimraf=require(_0xd0a3('0x1'));var zipdir=require(_0xd0a3('0x2'));var jsonpatch=require(_0xd0a3('0x3'));var rp=require(_0xd0a3('0x4'));var moment=require(_0xd0a3('0x5'));var BPromise=require(_0xd0a3('0x6'));var Mustache=require(_0xd0a3('0x7'));var util=require(_0xd0a3('0x8'));var path=require(_0xd0a3('0x9'));var sox=require(_0xd0a3('0xa'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xd0a3('0xb'));var _=require(_0xd0a3('0xc'));var squel=require('squel');var crypto=require(_0xd0a3('0xd'));var jsforce=require(_0xd0a3('0xe'));var deskjs=require('desk.js');var toCsv=require(_0xd0a3('0xf'));var querystring=require(_0xd0a3('0x10'));var Papa=require(_0xd0a3('0x11'));var Redis=require(_0xd0a3('0x12'));var authService=require(_0xd0a3('0x13'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd0a3('0x14'));var logger=require(_0xd0a3('0x15'))(_0xd0a3('0x16'));var utils=require('../../config/utils');var config=require(_0xd0a3('0x17'));var licenseUtil=require(_0xd0a3('0x18'));var db=require(_0xd0a3('0x19'))['db'];function respondWithStatusCode(_0x12220c,_0x8ec463){_0x8ec463=_0x8ec463||0xcc;return function(_0x24463d){if(_0x24463d){return _0x12220c['sendStatus'](_0x8ec463);}return _0x12220c[_0xd0a3('0x1a')](_0x8ec463)[_0xd0a3('0x1b')]();};}function respondWithResult(_0x1fa896,_0x4b13bf){_0x4b13bf=_0x4b13bf||0xc8;return function(_0x4bf997){if(_0x4bf997){return _0x1fa896[_0xd0a3('0x1a')](_0x4b13bf)[_0xd0a3('0x1c')](_0x4bf997);}};}function respondWithFilteredResult(_0x4449e4,_0x2e3bf0){return function(_0x14ff28){if(_0x14ff28){var _0x4da787=typeof _0x2e3bf0[_0xd0a3('0x1d')]==='undefined'&&typeof _0x2e3bf0[_0xd0a3('0x1e')]===_0xd0a3('0x1f');var _0x54cb1d=_0x14ff28[_0xd0a3('0x20')];var _0x2e0100=_0x4da787?0x0:_0x2e3bf0[_0xd0a3('0x1d')];var _0x4b5382=_0x4da787?_0x14ff28[_0xd0a3('0x20')]:_0x2e3bf0['offset']+_0x2e3bf0[_0xd0a3('0x1e')];var _0x90c906;if(_0x4b5382>=_0x54cb1d){_0x4b5382=_0x54cb1d;_0x90c906=0xc8;}else{_0x90c906=0xce;}_0x4449e4[_0xd0a3('0x1a')](_0x90c906);return _0x4449e4[_0xd0a3('0x21')](_0xd0a3('0x22'),_0x2e0100+'-'+_0x4b5382+'/'+_0x54cb1d)[_0xd0a3('0x1c')](_0x14ff28);}return null;};}function patchUpdates(_0x486b50){return function(_0x3d6ad2){try{jsonpatch[_0xd0a3('0x23')](_0x3d6ad2,_0x486b50,!![]);}catch(_0x4080c3){return BPromise['reject'](_0x4080c3);}return _0x3d6ad2['save']();};}function saveUpdates(_0x42854c,_0x4fdfeb){return function(_0x14f26e){if(_0x14f26e){return _0x14f26e[_0xd0a3('0x24')](_0x42854c)['then'](function(_0x479978){return _0x479978;});}return null;};}function removeEntity(_0x34cd79,_0x249475){return function(_0x46fa96){if(_0x46fa96){return _0x46fa96[_0xd0a3('0x25')]()[_0xd0a3('0x26')](function(){_0x34cd79[_0xd0a3('0x1a')](0xcc)[_0xd0a3('0x1b')]();});}};}function handleEntityNotFound(_0x468751,_0x1d9070){return function(_0x33b6b6){if(!_0x33b6b6){_0x468751[_0xd0a3('0x27')](0x194);}return _0x33b6b6;};}function handleError(_0x56b119,_0x1ae8f7){_0x1ae8f7=_0x1ae8f7||0x1f4;return function(_0x108aad){logger[_0xd0a3('0x28')](_0x108aad['stack']);if(_0x108aad[_0xd0a3('0x29')]){delete _0x108aad[_0xd0a3('0x29')];}_0x56b119['status'](_0x1ae8f7)[_0xd0a3('0x2a')](_0x108aad);};}exports[_0xd0a3('0x2b')]=function(_0x10c97d,_0x2d7b1f){var _0x501916={},_0x23ff62={},_0x361877={'count':0x0,'rows':[]};var _0x19448d=_[_0xd0a3('0x2c')](db[_0xd0a3('0x2d')][_0xd0a3('0x2e')],function(_0x2130b8){return{'name':_0x2130b8[_0xd0a3('0x2f')],'type':_0x2130b8['type'][_0xd0a3('0x30')]};});_0x23ff62[_0xd0a3('0x31')]=_[_0xd0a3('0x32')](_['map'](_0x19448d,_0xd0a3('0x29')),[_0xd0a3('0x29')]);_0x23ff62['query']=_[_0xd0a3('0x33')](_0x10c97d[_0xd0a3('0x34')]);_0x23ff62[_0xd0a3('0x35')]=_['intersection'](_0x23ff62[_0xd0a3('0x31')],_0x23ff62[_0xd0a3('0x34')]);_0x501916[_0xd0a3('0x36')]=_[_0xd0a3('0x37')](_0x23ff62[_0xd0a3('0x31')],qs['fields'](_0x10c97d[_0xd0a3('0x34')]['fields']));_0x501916[_0xd0a3('0x36')]=_0x501916[_0xd0a3('0x36')][_0xd0a3('0x38')]?_0x501916[_0xd0a3('0x36')]:_0x23ff62['model'];if(!_0x10c97d['query'][_0xd0a3('0x39')](_0xd0a3('0x3a'))){_0x501916[_0xd0a3('0x1e')]=qs[_0xd0a3('0x1e')](_0x10c97d[_0xd0a3('0x34')][_0xd0a3('0x1e')]);_0x501916[_0xd0a3('0x1d')]=qs[_0xd0a3('0x1d')](_0x10c97d[_0xd0a3('0x34')][_0xd0a3('0x1d')]);}_0x501916[_0xd0a3('0x3b')]=qs[_0xd0a3('0x3c')](_0x10c97d['query'][_0xd0a3('0x3c')]);_0x501916['where']=qs[_0xd0a3('0x35')](_[_0xd0a3('0x3d')](_0x10c97d[_0xd0a3('0x34')],_0x23ff62[_0xd0a3('0x35')]),_0x19448d);if(_0x10c97d[_0xd0a3('0x34')][_0xd0a3('0x3e')]){_0x501916[_0xd0a3('0x3f')]=_[_0xd0a3('0x40')](_0x501916[_0xd0a3('0x3f')],{'$or':_['map'](_0x19448d,function(_0x4013d0){if(_0x4013d0[_0xd0a3('0x41')]!==_0xd0a3('0x42')){var _0x82cab5={};_0x82cab5[_0x4013d0[_0xd0a3('0x29')]]={'$like':'%'+_0x10c97d[_0xd0a3('0x34')][_0xd0a3('0x3e')]+'%'};return _0x82cab5;}})});}_0x501916=_['merge']({},_0x501916,_0x10c97d[_0xd0a3('0x43')]);var _0x234c15={'where':_0x501916['where']};return db['CmCustomField'][_0xd0a3('0x20')](_0x234c15)[_0xd0a3('0x26')](function(_0x1a6d8f){_0x361877[_0xd0a3('0x20')]=_0x1a6d8f;if(_0x10c97d[_0xd0a3('0x34')][_0xd0a3('0x44')]){_0x501916[_0xd0a3('0x45')]=[{'all':!![]}];}return db[_0xd0a3('0x2d')]['findAll'](_0x501916);})[_0xd0a3('0x26')](function(_0x34d4bd){_0x361877[_0xd0a3('0x46')]=_0x34d4bd;return _0x361877;})[_0xd0a3('0x26')](respondWithFilteredResult(_0x2d7b1f,_0x501916))[_0xd0a3('0x47')](handleError(_0x2d7b1f,null));};exports[_0xd0a3('0x48')]=function(_0x4256f1,_0x3147ee){var _0x29a7ad={'raw':!![],'where':{'id':_0x4256f1[_0xd0a3('0x49')]['id']}},_0x3953c5={};_0x3953c5[_0xd0a3('0x31')]=_[_0xd0a3('0x33')](db[_0xd0a3('0x2d')][_0xd0a3('0x2e')]);_0x3953c5[_0xd0a3('0x34')]=_['keys'](_0x4256f1[_0xd0a3('0x34')]);_0x3953c5[_0xd0a3('0x35')]=_[_0xd0a3('0x37')](_0x3953c5[_0xd0a3('0x31')],_0x3953c5[_0xd0a3('0x34')]);_0x29a7ad[_0xd0a3('0x36')]=_[_0xd0a3('0x37')](_0x3953c5[_0xd0a3('0x31')],qs[_0xd0a3('0x4a')](_0x4256f1[_0xd0a3('0x34')][_0xd0a3('0x4a')]));_0x29a7ad['attributes']=_0x29a7ad[_0xd0a3('0x36')][_0xd0a3('0x38')]?_0x29a7ad[_0xd0a3('0x36')]:_0x3953c5['model'];if(_0x4256f1[_0xd0a3('0x34')][_0xd0a3('0x44')]){_0x29a7ad[_0xd0a3('0x45')]=[{'all':!![]}];}_0x29a7ad=_[_0xd0a3('0x40')]({},_0x29a7ad,_0x4256f1[_0xd0a3('0x43')]);return db[_0xd0a3('0x2d')][_0xd0a3('0x4b')](_0x29a7ad)[_0xd0a3('0x26')](handleEntityNotFound(_0x3147ee,null))[_0xd0a3('0x26')](respondWithResult(_0x3147ee,null))[_0xd0a3('0x47')](handleError(_0x3147ee,null));};exports[_0xd0a3('0x24')]=function(_0x46897f,_0x5dace4){if(_0x46897f[_0xd0a3('0x4c')]['id']){delete _0x46897f[_0xd0a3('0x4c')]['id'];}return db[_0xd0a3('0x2d')][_0xd0a3('0x4b')]({'where':{'id':_0x46897f[_0xd0a3('0x49')]['id']}})[_0xd0a3('0x26')](handleEntityNotFound(_0x5dace4,null))[_0xd0a3('0x26')](saveUpdates(_0x46897f[_0xd0a3('0x4c')],null))[_0xd0a3('0x26')](respondWithResult(_0x5dace4,null))[_0xd0a3('0x47')](handleError(_0x5dace4,null));};exports[_0xd0a3('0x25')]=function(_0x588971,_0x21c12a){return db[_0xd0a3('0x2d')][_0xd0a3('0x4b')]({'where':{'id':_0x588971[_0xd0a3('0x49')]['id']}})['then'](handleEntityNotFound(_0x21c12a,null))[_0xd0a3('0x26')](removeEntity(_0x21c12a,null))[_0xd0a3('0x47')](handleError(_0x21c12a,null));};exports[_0xd0a3('0x4d')]=function(_0x2cf14e,_0x3007f6){var _0x3a697b;return db[_0xd0a3('0x4e')][_0xd0a3('0x4f')](function(_0x91b53d){return db[_0xd0a3('0x2d')][_0xd0a3('0x4d')](_0x2cf14e[_0xd0a3('0x4c')],{'transaction':_0x91b53d})[_0xd0a3('0x26')](function(_0x200eed){_0x3a697b=_0x200eed;var _0x5b1c5c={'type':db['Sequelize']['TEXT'],'transaction':_0x91b53d};switch(_0x2cf14e[_0xd0a3('0x4c')][_0xd0a3('0x41')]){case _0xd0a3('0x50'):_0x5b1c5c[_0xd0a3('0x41')]=db[_0xd0a3('0x51')][_0xd0a3('0x52')];break;case'number':_0x5b1c5c[_0xd0a3('0x41')]=db[_0xd0a3('0x51')][_0xd0a3('0x53')];break;case _0xd0a3('0x54'):_0x5b1c5c[_0xd0a3('0x41')]=db[_0xd0a3('0x51')][_0xd0a3('0x55')];_0x5b1c5c[_0xd0a3('0x56')]=![];break;default:}return db['sequelize'][_0xd0a3('0x57')]['addColumn'](_0xd0a3('0x58'),util[_0xd0a3('0x59')](_0xd0a3('0x5a'),_0x3a697b['id']),_0x5b1c5c);})[_0xd0a3('0x26')](function(){return _0x3a697b;});})[_0xd0a3('0x26')](respondWithResult(_0x3007f6,0xc9))['catch'](handleError(_0x3007f6,null));};
\ No newline at end of file
+var _0x7e2b=['INTEGER','BOOLEAN','defaultValue','queryInterface','format','cf_%d','rimraf','zip-dir','request-promise','bluebird','mustache','util','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','json','apply','reject','save','update','then','destroy','stack','name','send','map','CmCustomField','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','model','find','body','create','sequelize','transaction','text','Sequelize','TEXT'];(function(_0x22123d,_0x45ae06){var _0xeabce1=function(_0x239cae){while(--_0x239cae){_0x22123d['push'](_0x22123d['shift']());}};_0xeabce1(++_0x45ae06);}(_0x7e2b,0x1a0));var _0xb7e2=function(_0x136ed6,_0x1df16d){_0x136ed6=_0x136ed6-0x0;var _0x3bbfb9=_0x7e2b[_0x136ed6];return _0x3bbfb9;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb7e2('0x0'));var zipdir=require(_0xb7e2('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb7e2('0x2'));var moment=require('moment');var BPromise=require(_0xb7e2('0x3'));var Mustache=require(_0xb7e2('0x4'));var util=require(_0xb7e2('0x5'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb7e2('0x6'));var _=require(_0xb7e2('0x7'));var squel=require(_0xb7e2('0x8'));var crypto=require(_0xb7e2('0x9'));var jsforce=require(_0xb7e2('0xa'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xb7e2('0xb'));var Papa=require(_0xb7e2('0xc'));var Redis=require(_0xb7e2('0xd'));var authService=require(_0xb7e2('0xe'));var qs=require(_0xb7e2('0xf'));var as=require(_0xb7e2('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xb7e2('0x11'));var utils=require('../../config/utils');var config=require(_0xb7e2('0x12'));var licenseUtil=require(_0xb7e2('0x13'));var db=require(_0xb7e2('0x14'))['db'];function respondWithStatusCode(_0x3d337a,_0x5b1417){_0x5b1417=_0x5b1417||0xcc;return function(_0x5de55c){if(_0x5de55c){return _0x3d337a[_0xb7e2('0x15')](_0x5b1417);}return _0x3d337a['status'](_0x5b1417)[_0xb7e2('0x16')]();};}function respondWithResult(_0x2a916f,_0x179a63){_0x179a63=_0x179a63||0xc8;return function(_0xaf0051){if(_0xaf0051){return _0x2a916f[_0xb7e2('0x17')](_0x179a63)['json'](_0xaf0051);}};}function respondWithFilteredResult(_0x5ee322,_0x1b2002){return function(_0x363572){if(_0x363572){var _0x37a91a=typeof _0x1b2002[_0xb7e2('0x18')]===_0xb7e2('0x19')&&typeof _0x1b2002[_0xb7e2('0x1a')]===_0xb7e2('0x19');var _0x3684bb=_0x363572[_0xb7e2('0x1b')];var _0x2e2b8b=_0x37a91a?0x0:_0x1b2002[_0xb7e2('0x18')];var _0x448742=_0x37a91a?_0x363572['count']:_0x1b2002[_0xb7e2('0x18')]+_0x1b2002[_0xb7e2('0x1a')];var _0x4aebef;if(_0x448742>=_0x3684bb){_0x448742=_0x3684bb;_0x4aebef=0xc8;}else{_0x4aebef=0xce;}_0x5ee322[_0xb7e2('0x17')](_0x4aebef);return _0x5ee322['set']('Content-Range',_0x2e2b8b+'-'+_0x448742+'/'+_0x3684bb)[_0xb7e2('0x1c')](_0x363572);}return null;};}function patchUpdates(_0x5c45ce){return function(_0x128b1f){try{jsonpatch[_0xb7e2('0x1d')](_0x128b1f,_0x5c45ce,!![]);}catch(_0x36e4d2){return BPromise[_0xb7e2('0x1e')](_0x36e4d2);}return _0x128b1f[_0xb7e2('0x1f')]();};}function saveUpdates(_0x4e0f54,_0x43777c){return function(_0x1b182e){if(_0x1b182e){return _0x1b182e[_0xb7e2('0x20')](_0x4e0f54)[_0xb7e2('0x21')](function(_0x5a2737){return _0x5a2737;});}return null;};}function removeEntity(_0x1a1136,_0x2d55ac){return function(_0x47a58a){if(_0x47a58a){return _0x47a58a[_0xb7e2('0x22')]()[_0xb7e2('0x21')](function(){_0x1a1136[_0xb7e2('0x17')](0xcc)[_0xb7e2('0x16')]();});}};}function handleEntityNotFound(_0x196376,_0x4c1b4c){return function(_0x1dbf8a){if(!_0x1dbf8a){_0x196376['sendStatus'](0x194);}return _0x1dbf8a;};}function handleError(_0x230e17,_0xb46b4e){_0xb46b4e=_0xb46b4e||0x1f4;return function(_0x3fda51){logger['error'](_0x3fda51[_0xb7e2('0x23')]);if(_0x3fda51['name']){delete _0x3fda51[_0xb7e2('0x24')];}_0x230e17[_0xb7e2('0x17')](_0xb46b4e)[_0xb7e2('0x25')](_0x3fda51);};}exports['index']=function(_0x2ae4aa,_0x4eb49a){var _0x3f6812={},_0x41613e={},_0x37c05d={'count':0x0,'rows':[]};var _0x5403ee=_[_0xb7e2('0x26')](db[_0xb7e2('0x27')][_0xb7e2('0x28')],function(_0x55a214){return{'name':_0x55a214[_0xb7e2('0x29')],'type':_0x55a214[_0xb7e2('0x2a')][_0xb7e2('0x2b')]};});_0x41613e['model']=_['differenceBy'](_[_0xb7e2('0x26')](_0x5403ee,_0xb7e2('0x24')),[_0xb7e2('0x24')]);_0x41613e[_0xb7e2('0x2c')]=_[_0xb7e2('0x2d')](_0x2ae4aa[_0xb7e2('0x2c')]);_0x41613e[_0xb7e2('0x2e')]=_[_0xb7e2('0x2f')](_0x41613e['model'],_0x41613e['query']);_0x3f6812[_0xb7e2('0x30')]=_['intersection'](_0x41613e['model'],qs[_0xb7e2('0x31')](_0x2ae4aa[_0xb7e2('0x2c')]['fields']));_0x3f6812[_0xb7e2('0x30')]=_0x3f6812[_0xb7e2('0x30')][_0xb7e2('0x32')]?_0x3f6812[_0xb7e2('0x30')]:_0x41613e['model'];if(!_0x2ae4aa[_0xb7e2('0x2c')]['hasOwnProperty'](_0xb7e2('0x33'))){_0x3f6812[_0xb7e2('0x1a')]=qs[_0xb7e2('0x1a')](_0x2ae4aa['query']['limit']);_0x3f6812['offset']=qs[_0xb7e2('0x18')](_0x2ae4aa[_0xb7e2('0x2c')][_0xb7e2('0x18')]);}_0x3f6812[_0xb7e2('0x34')]=qs[_0xb7e2('0x35')](_0x2ae4aa['query']['sort']);_0x3f6812[_0xb7e2('0x36')]=qs[_0xb7e2('0x2e')](_[_0xb7e2('0x37')](_0x2ae4aa[_0xb7e2('0x2c')],_0x41613e[_0xb7e2('0x2e')]),_0x5403ee);if(_0x2ae4aa[_0xb7e2('0x2c')][_0xb7e2('0x38')]){_0x3f6812[_0xb7e2('0x36')]=_['merge'](_0x3f6812['where'],{'$or':_[_0xb7e2('0x26')](_0x5403ee,function(_0x1abbd3){if(_0x1abbd3[_0xb7e2('0x2a')]!==_0xb7e2('0x39')){var _0x365364={};_0x365364[_0x1abbd3[_0xb7e2('0x24')]]={'$like':'%'+_0x2ae4aa['query'][_0xb7e2('0x38')]+'%'};return _0x365364;}})});}_0x3f6812=_[_0xb7e2('0x3a')]({},_0x3f6812,_0x2ae4aa[_0xb7e2('0x3b')]);var _0x955cf0={'where':_0x3f6812[_0xb7e2('0x36')]};return db[_0xb7e2('0x27')][_0xb7e2('0x1b')](_0x955cf0)['then'](function(_0x2c6fd2){_0x37c05d[_0xb7e2('0x1b')]=_0x2c6fd2;if(_0x2ae4aa[_0xb7e2('0x2c')][_0xb7e2('0x3c')]){_0x3f6812[_0xb7e2('0x3d')]=[{'all':!![]}];}return db[_0xb7e2('0x27')][_0xb7e2('0x3e')](_0x3f6812);})['then'](function(_0x4f10b5){_0x37c05d[_0xb7e2('0x3f')]=_0x4f10b5;return _0x37c05d;})[_0xb7e2('0x21')](respondWithFilteredResult(_0x4eb49a,_0x3f6812))[_0xb7e2('0x40')](handleError(_0x4eb49a,null));};exports[_0xb7e2('0x41')]=function(_0x29fed0,_0x97ae5f){var _0x5dd738={'raw':!![],'where':{'id':_0x29fed0[_0xb7e2('0x42')]['id']}},_0x48a47b={};_0x48a47b[_0xb7e2('0x43')]=_[_0xb7e2('0x2d')](db[_0xb7e2('0x27')][_0xb7e2('0x28')]);_0x48a47b[_0xb7e2('0x2c')]=_[_0xb7e2('0x2d')](_0x29fed0[_0xb7e2('0x2c')]);_0x48a47b['filters']=_[_0xb7e2('0x2f')](_0x48a47b[_0xb7e2('0x43')],_0x48a47b[_0xb7e2('0x2c')]);_0x5dd738['attributes']=_['intersection'](_0x48a47b['model'],qs['fields'](_0x29fed0[_0xb7e2('0x2c')]['fields']));_0x5dd738['attributes']=_0x5dd738[_0xb7e2('0x30')][_0xb7e2('0x32')]?_0x5dd738['attributes']:_0x48a47b[_0xb7e2('0x43')];if(_0x29fed0['query'][_0xb7e2('0x3c')]){_0x5dd738['include']=[{'all':!![]}];}_0x5dd738=_[_0xb7e2('0x3a')]({},_0x5dd738,_0x29fed0[_0xb7e2('0x3b')]);return db[_0xb7e2('0x27')][_0xb7e2('0x44')](_0x5dd738)['then'](handleEntityNotFound(_0x97ae5f,null))['then'](respondWithResult(_0x97ae5f,null))[_0xb7e2('0x40')](handleError(_0x97ae5f,null));};exports[_0xb7e2('0x20')]=function(_0x484d81,_0x4d565d){if(_0x484d81[_0xb7e2('0x45')]['id']){delete _0x484d81[_0xb7e2('0x45')]['id'];}return db['CmCustomField'][_0xb7e2('0x44')]({'where':{'id':_0x484d81[_0xb7e2('0x42')]['id']}})[_0xb7e2('0x21')](handleEntityNotFound(_0x4d565d,null))['then'](saveUpdates(_0x484d81[_0xb7e2('0x45')],null))[_0xb7e2('0x21')](respondWithResult(_0x4d565d,null))[_0xb7e2('0x40')](handleError(_0x4d565d,null));};exports[_0xb7e2('0x22')]=function(_0x5e9928,_0x2e7f15){return db[_0xb7e2('0x27')][_0xb7e2('0x44')]({'where':{'id':_0x5e9928[_0xb7e2('0x42')]['id']}})[_0xb7e2('0x21')](handleEntityNotFound(_0x2e7f15,null))[_0xb7e2('0x21')](removeEntity(_0x2e7f15,null))[_0xb7e2('0x40')](handleError(_0x2e7f15,null));};exports[_0xb7e2('0x46')]=function(_0x17848e,_0x719583){var _0x7fef80;return db[_0xb7e2('0x47')][_0xb7e2('0x48')](function(_0x5e1baa){return db[_0xb7e2('0x27')][_0xb7e2('0x46')](_0x17848e['body'],{'transaction':_0x5e1baa})['then'](function(_0x3257b7){_0x7fef80=_0x3257b7;var _0x447709={'type':db['Sequelize']['TEXT'],'transaction':_0x5e1baa};switch(_0x17848e[_0xb7e2('0x45')][_0xb7e2('0x2a')]){case _0xb7e2('0x49'):_0x447709[_0xb7e2('0x2a')]=db[_0xb7e2('0x4a')][_0xb7e2('0x4b')];break;case'number':_0x447709[_0xb7e2('0x2a')]=db['Sequelize'][_0xb7e2('0x4c')];break;case'switch':_0x447709[_0xb7e2('0x2a')]=db[_0xb7e2('0x4a')][_0xb7e2('0x4d')];_0x447709[_0xb7e2('0x4e')]=![];break;default:}return db['sequelize'][_0xb7e2('0x4f')]['addColumn']('cm_contacts',util[_0xb7e2('0x50')](_0xb7e2('0x51'),_0x7fef80['id']),_0x447709);})['then'](function(){return _0x7fef80;});})[_0xb7e2('0x21')](respondWithResult(_0x719583,0xc9))[_0xb7e2('0x40')](handleError(_0x719583,null));};
\ No newline at end of file
index c99fbba..7f784e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafda=['cm_custom_fields','lodash','util','../../config/logger','api','bluebird','request-promise','path','./cmCustomField.attributes','exports','define','CmCustomField'];(function(_0x11a5dc,_0xae1a0e){var _0x2ddb08=function(_0x1c0fd0){while(--_0x1c0fd0){_0x11a5dc['push'](_0x11a5dc['shift']());}};_0x2ddb08(++_0xae1a0e);}(_0xafda,0x109));var _0xaafd=function(_0x237da8,_0x37b77a){_0x237da8=_0x237da8-0x0;var _0x558825=_0xafda[_0x237da8];return _0x558825;};'use strict';var _=require(_0xaafd('0x0'));var util=require(_0xaafd('0x1'));var logger=require(_0xaafd('0x2'))(_0xaafd('0x3'));var moment=require('moment');var BPromise=require(_0xaafd('0x4'));var rp=require(_0xaafd('0x5'));var fs=require('fs');var path=require(_0xaafd('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xaafd('0x7'));module[_0xaafd('0x8')]=function(_0x15147b,_0x2d7771){return _0x15147b[_0xaafd('0x9')](_0xaafd('0xa'),attributes,{'tableName':_0xaafd('0xb'),'paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x5ddc=['../../config/logger','api','bluebird','request-promise','path','../../config/environment','./cmCustomField.attributes','exports','define','CmCustomField','lodash'];(function(_0x2a4c3a,_0x338cb0){var _0x2f41cb=function(_0x55c499){while(--_0x55c499){_0x2a4c3a['push'](_0x2a4c3a['shift']());}};_0x2f41cb(++_0x338cb0);}(_0x5ddc,0xf1));var _0xc5dd=function(_0x4b25bb,_0x2a86e9){_0x4b25bb=_0x4b25bb-0x0;var _0x19c1ba=_0x5ddc[_0x4b25bb];return _0x19c1ba;};'use strict';var _=require(_0xc5dd('0x0'));var util=require('util');var logger=require(_0xc5dd('0x1'))(_0xc5dd('0x2'));var moment=require('moment');var BPromise=require(_0xc5dd('0x3'));var rp=require(_0xc5dd('0x4'));var fs=require('fs');var path=require(_0xc5dd('0x5'));var rimraf=require('rimraf');var config=require(_0xc5dd('0x6'));var attributes=require(_0xc5dd('0x7'));module[_0xc5dd('0x8')]=function(_0x35371e,_0x31c224){return _0x35371e[_0xc5dd('0x9')](_0xc5dd('0xa'),attributes,{'tableName':'cm_custom_fields','paranoid':!![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 58f5cbc..a1802e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce92=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','CmCustomField,\x20%s,\x20%s,\x20%s','stringify','error','message','CmCustomField,\x20%s,\x20%s','result','catch','lodash','util','moment'];(function(_0x506df9,_0x1b3001){var _0x26b786=function(_0x1bbea4){while(--_0x1bbea4){_0x506df9['push'](_0x506df9['shift']());}};_0x26b786(++_0x1b3001);}(_0xce92,0x195));var _0x2ce9=function(_0x5a6d3b,_0x15a93b){_0x5a6d3b=_0x5a6d3b-0x0;var _0x3aaf17=_0xce92[_0x5a6d3b];return _0x3aaf17;};'use strict';var _=require(_0x2ce9('0x0'));var util=require(_0x2ce9('0x1'));var moment=require(_0x2ce9('0x2'));var BPromise=require(_0x2ce9('0x3'));var rs=require(_0x2ce9('0x4'));var fs=require('fs');var Redis=require(_0x2ce9('0x5'));var db=require(_0x2ce9('0x6'))['db'];var utils=require(_0x2ce9('0x7'));var logger=require('../../config/logger')(_0x2ce9('0x8'));var config=require('../../config/environment');var jayson=require(_0x2ce9('0x9'));var client=jayson[_0x2ce9('0xa')][_0x2ce9('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x25184d,_0x56f94d,_0x2377aa){return new BPromise(function(_0x254db2,_0x494331){return client[_0x2ce9('0xc')](_0x25184d,_0x2377aa)[_0x2ce9('0xd')](function(_0x12c543){logger[_0x2ce9('0xe')]('CmCustomField,\x20%s,\x20%s',_0x56f94d,_0x2ce9('0xf'));logger[_0x2ce9('0x10')](_0x2ce9('0x11'),_0x56f94d,_0x2ce9('0xf'),JSON[_0x2ce9('0x12')](_0x12c543));if(_0x12c543['error']){if(_0x12c543['error']['code']===0x1f4){logger[_0x2ce9('0x13')]('CmCustomField,\x20%s,\x20%s',_0x56f94d,_0x12c543[_0x2ce9('0x13')][_0x2ce9('0x14')]);return _0x494331(_0x12c543['error'][_0x2ce9('0x14')]);}logger[_0x2ce9('0x13')](_0x2ce9('0x15'),_0x56f94d,_0x12c543[_0x2ce9('0x13')]['message']);return _0x254db2(_0x12c543['error'][_0x2ce9('0x14')]);}else{logger[_0x2ce9('0xe')](_0x2ce9('0x15'),_0x56f94d,_0x2ce9('0xf'));_0x254db2(_0x12c543[_0x2ce9('0x16')][_0x2ce9('0x14')]);}})[_0x2ce9('0x17')](function(_0x317087){logger[_0x2ce9('0x13')](_0x2ce9('0x15'),_0x56f94d,_0x317087);_0x494331(_0x317087);});});}
\ No newline at end of file
+var _0x7c33=['catch','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then','info','CmCustomField,\x20%s,\x20%s','debug','CmCustomField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result'];(function(_0x45c981,_0x2ad2d4){var _0x4f62c8=function(_0x55209b){while(--_0x55209b){_0x45c981['push'](_0x45c981['shift']());}};_0x4f62c8(++_0x2ad2d4);}(_0x7c33,0x169));var _0x37c3=function(_0x1d1779,_0x284147){_0x1d1779=_0x1d1779-0x0;var _0x2377e9=_0x7c33[_0x1d1779];return _0x2377e9;};'use strict';var _=require(_0x37c3('0x0'));var util=require(_0x37c3('0x1'));var moment=require('moment');var BPromise=require(_0x37c3('0x2'));var rs=require(_0x37c3('0x3'));var fs=require('fs');var Redis=require(_0x37c3('0x4'));var db=require(_0x37c3('0x5'))['db'];var utils=require(_0x37c3('0x6'));var logger=require(_0x37c3('0x7'))(_0x37c3('0x8'));var config=require(_0x37c3('0x9'));var jayson=require(_0x37c3('0xa'));var client=jayson[_0x37c3('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3f7b04,_0x57625b,_0x1a64fd){return new BPromise(function(_0x1ff79e,_0x447f8a){return client['request'](_0x3f7b04,_0x1a64fd)[_0x37c3('0xc')](function(_0x1c24dc){logger[_0x37c3('0xd')](_0x37c3('0xe'),_0x57625b,'request\x20sent');logger[_0x37c3('0xf')](_0x37c3('0x10'),_0x57625b,_0x37c3('0x11'),JSON[_0x37c3('0x12')](_0x1c24dc));if(_0x1c24dc[_0x37c3('0x13')]){if(_0x1c24dc[_0x37c3('0x13')][_0x37c3('0x14')]===0x1f4){logger['error'](_0x37c3('0xe'),_0x57625b,_0x1c24dc[_0x37c3('0x13')][_0x37c3('0x15')]);return _0x447f8a(_0x1c24dc['error'][_0x37c3('0x15')]);}logger[_0x37c3('0x13')](_0x37c3('0xe'),_0x57625b,_0x1c24dc[_0x37c3('0x13')]['message']);return _0x1ff79e(_0x1c24dc[_0x37c3('0x13')][_0x37c3('0x15')]);}else{logger[_0x37c3('0xd')](_0x37c3('0xe'),_0x57625b,_0x37c3('0x11'));_0x1ff79e(_0x1c24dc[_0x37c3('0x16')]['message']);}})[_0x37c3('0x17')](function(_0x372378){logger[_0x37c3('0x13')](_0x37c3('0xe'),_0x57625b,_0x372378);_0x447f8a(_0x372378);});});}
\ No newline at end of file
index b996f5d..82dc060 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd7ce=['post','create','put','update','delete','destroy','multer','util','path','connect-timeout','fs-extra','./cmCustomField.controller','get','isAuthenticated','index','/:id','show'];(function(_0x293ec7,_0x541d46){var _0x4d6759=function(_0x11778a){while(--_0x11778a){_0x293ec7['push'](_0x293ec7['shift']());}};_0x4d6759(++_0x541d46);}(_0xd7ce,0x16b));var _0xed7c=function(_0x377a6e,_0x59b99d){_0x377a6e=_0x377a6e-0x0;var _0x37f751=_0xd7ce[_0x377a6e];return _0x37f751;};'use strict';var multer=require(_0xed7c('0x0'));var util=require(_0xed7c('0x1'));var path=require(_0xed7c('0x2'));var timeout=require(_0xed7c('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xed7c('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xed7c('0x5'));router[_0xed7c('0x6')]('/',auth[_0xed7c('0x7')](),controller[_0xed7c('0x8')]);router[_0xed7c('0x6')](_0xed7c('0x9'),auth[_0xed7c('0x7')](),controller[_0xed7c('0xa')]);router[_0xed7c('0xb')]('/',auth[_0xed7c('0x7')](),controller[_0xed7c('0xc')]);router[_0xed7c('0xd')]('/:id',auth[_0xed7c('0x7')](),controller[_0xed7c('0xe')]);router[_0xed7c('0xf')](_0xed7c('0x9'),auth[_0xed7c('0x7')](),controller[_0xed7c('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xc1fc=['delete','destroy','exports','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmCustomField.controller','get','/:id','isAuthenticated','show','post','update'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0xc1fc,0x93));var _0xcc1f=function(_0x232efd,_0x443074){_0x232efd=_0x232efd-0x0;var _0x3eafe0=_0xc1fc[_0x232efd];return _0x3eafe0;};'use strict';var multer=require('multer');var util=require(_0xcc1f('0x0'));var path=require(_0xcc1f('0x1'));var timeout=require('connect-timeout');var express=require(_0xcc1f('0x2'));var router=express[_0xcc1f('0x3')]();var fs_extra=require(_0xcc1f('0x4'));var auth=require(_0xcc1f('0x5'));var interaction=require(_0xcc1f('0x6'));var config=require(_0xcc1f('0x7'));var controller=require(_0xcc1f('0x8'));router[_0xcc1f('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0xcc1f('0x9')](_0xcc1f('0xa'),auth[_0xcc1f('0xb')](),controller[_0xcc1f('0xc')]);router[_0xcc1f('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xcc1f('0xa'),auth[_0xcc1f('0xb')](),controller[_0xcc1f('0xe')]);router[_0xcc1f('0xf')](_0xcc1f('0xa'),auth[_0xcc1f('0xb')](),controller[_0xcc1f('0x10')]);module[_0xcc1f('0x11')]=router;
\ No newline at end of file
index e785da5..08a5447 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbf1=['YYYY-MM-DD\x20HH:mm:ss','INTEGER','UNSIGNED','contactListQueue','moment','sequelize','exports','STRING','BOOLEAN','DATE'];(function(_0x48c86f,_0x292b5c){var _0x3a0de1=function(_0x5dab5b){while(--_0x5dab5b){_0x48c86f['push'](_0x48c86f['shift']());}};_0x3a0de1(++_0x292b5c);}(_0xdbf1,0x1d0));var _0x1dbf=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0xdbf1[_0x4154a6];return _0x3b2786;};'use strict';var moment=require(_0x1dbf('0x0'));var Sequelize=require(_0x1dbf('0x1'));module[_0x1dbf('0x2')]={'phone':{'type':Sequelize[_0x1dbf('0x3')],'allowNull':![]},'active':{'type':Sequelize[_0x1dbf('0x4')],'defaultValue':![]},'scheduledat':{'type':Sequelize[_0x1dbf('0x5')],'defaultValue':moment()['format'](_0x1dbf('0x6'))},'countbusyretry':{'type':Sequelize[_0x1dbf('0x7')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x1dbf('0x7')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x1dbf('0x7')],'defaultValue':0x0},'callback':{'type':Sequelize[_0x1dbf('0x4')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x1dbf('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x1dbf('0x5')]},'priority':{'type':Sequelize[_0x1dbf('0x7')](0x2)[_0x1dbf('0x8')],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0x1dbf('0x4')],'defaultValue':![]},'ContactId':{'type':Sequelize[_0x1dbf('0x7')],'unique':_0x1dbf('0x9')},'ListId':{'type':Sequelize[_0x1dbf('0x7')],'unique':_0x1dbf('0x9')},'UserId':{'type':Sequelize[_0x1dbf('0x7')]},'VoiceQueueId':{'type':Sequelize[_0x1dbf('0x7')],'unique':_0x1dbf('0x9')},'CampaignId':{'type':Sequelize[_0x1dbf('0x7')]},'countnosuchnumberretry':{'type':Sequelize[_0x1dbf('0x7')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x1dbf('0x7')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x1dbf('0x7')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x1dbf('0x7')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x1dbf('0x7')],'defaultValue':0x0},'OrderBy':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x1dbf('0x3')]},'recallmeNotifiedDate':{'type':Sequelize[_0x1dbf('0x5')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
+var _0x340f=['contactListQueue','moment','sequelize','STRING','BOOLEAN','INTEGER','DATE'];(function(_0x246a39,_0x368baf){var _0x3eb6e9=function(_0x599ba8){while(--_0x599ba8){_0x246a39['push'](_0x246a39['shift']());}};_0x3eb6e9(++_0x368baf);}(_0x340f,0x182));var _0xf340=function(_0xfdf0b7,_0x169559){_0xfdf0b7=_0xfdf0b7-0x0;var _0x1f6e73=_0x340f[_0xfdf0b7];return _0x1f6e73;};'use strict';var moment=require(_0xf340('0x0'));var Sequelize=require(_0xf340('0x1'));module['exports']={'phone':{'type':Sequelize[_0xf340('0x2')],'allowNull':![]},'active':{'type':Sequelize[_0xf340('0x3')],'defaultValue':![]},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')},'countbusyretry':{'type':Sequelize[_0xf340('0x4')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0xf340('0x4')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0xf340('0x4')],'defaultValue':0x0},'callback':{'type':Sequelize[_0xf340('0x3')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0xf340('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0xf340('0x5')]},'priority':{'type':Sequelize[_0xf340('0x4')](0x2)['UNSIGNED'],'defaultValue':0x2,'validate':{'min':0x0,'max':0x4}},'recallme':{'type':Sequelize[_0xf340('0x3')],'defaultValue':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0xf340('0x6')},'ListId':{'type':Sequelize['INTEGER'],'unique':_0xf340('0x6')},'UserId':{'type':Sequelize['INTEGER']},'VoiceQueueId':{'type':Sequelize[_0xf340('0x4')],'unique':'contactListQueue'},'CampaignId':{'type':Sequelize[_0xf340('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0xf340('0x4')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xf340('0x4')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xf340('0x4')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xf340('0x4')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xf340('0x4')],'defaultValue':0x0},'OrderBy':{'type':Sequelize[_0xf340('0x4')],'allowNull':!![],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0xf340('0x2')]},'recallmeNotifiedDate':{'type':Sequelize[_0xf340('0x5')],'allowNull':!![],'defaultValue':null}};
\ No newline at end of file
index ace77ee..c09c00a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8db8=['querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','offset','undefined','limit','count','set','apply','reject','save','update','then','error','stack','name','send','map','CmHopper','fieldName','key','model','query','filters','intersection','$and','$or','$gt','$gte','$lt','$ne','$not','$between','$notBetween','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contains','$contained','$any','attributes','fields','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','keys','rawAttributes','length','find','create','body','describe','destroy','VoiceQueueId','CampaignId','VoiceQueue','omit','dataValues','createdAt','updatedAt','state','statedesc','deleted','campaign','membername','user','UserId','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','campaigntype','queue','CmContact','ContactId','lastName','firstName','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','getPreview','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','dialPreviewAutoRecallMe','filter','direction','prev','hopperIds','priority','ASC','scheduledAt','DESC','sequelize','literal','COALESCE(CmHopper.UserId,\x200)\x20ASC','isEmpty','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','phone','LOCK','UPDATE','Contact','CmCompany','Company','CmList','List','Queue','dialActive','getPreviewRecall','recallme','getOpenContacts','isNumber','entity\x20not\x20found','getTimezones','timezones','push','utcOffset','getTimezone','isNil','eml-format','rimraf','zip-dir','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce'];(function(_0x1d4a5d,_0x52104c){var _0x4c9a16=function(_0x46402b){while(--_0x46402b){_0x1d4a5d['push'](_0x1d4a5d['shift']());}};_0x4c9a16(++_0x52104c);}(_0x8db8,0x8f));var _0x88db=function(_0xbe53fd,_0x1ae809){_0xbe53fd=_0xbe53fd-0x0;var _0x2321d1=_0x8db8[_0xbe53fd];return _0x2321d1;};'use strict';var emlformat=require(_0x88db('0x0'));var rimraf=require(_0x88db('0x1'));var zipdir=require(_0x88db('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x88db('0x3'));var BPromise=require(_0x88db('0x4'));var Mustache=require(_0x88db('0x5'));var util=require('util');var path=require(_0x88db('0x6'));var sox=require(_0x88db('0x7'));var csv=require(_0x88db('0x8'));var ejs=require(_0x88db('0x9'));var fs=require('fs');var fs_extra=require(_0x88db('0xa'));var _=require(_0x88db('0xb'));var squel=require('squel');var crypto=require(_0x88db('0xc'));var jsforce=require(_0x88db('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x88db('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x88db('0xf'));var as=require(_0x88db('0x10'));var hardwareService=require(_0x88db('0x11'));var logger=require(_0x88db('0x12'))(_0x88db('0x13'));var utils=require(_0x88db('0x14'));var config=require(_0x88db('0x15'));var shared=require(_0x88db('0x15'));var licenseUtil=require(_0x88db('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x159572,_0x1a3a7e){_0x1a3a7e=_0x1a3a7e||0xcc;return function(_0x3d7b56){if(_0x3d7b56){return _0x159572[_0x88db('0x17')](_0x1a3a7e);}return _0x159572[_0x88db('0x18')](_0x1a3a7e)['end']();};}function respondWithResult(_0xafa078,_0x15ed54){_0x15ed54=_0x15ed54||0xc8;return function(_0x85f70f){if(_0x85f70f){return _0xafa078[_0x88db('0x18')](_0x15ed54)[_0x88db('0x19')](_0x85f70f);}};}function respondWithFilteredResult(_0x1a679e,_0x89edca){return function(_0x16529d){if(_0x16529d){var _0x4e6516=typeof _0x89edca[_0x88db('0x1a')]===_0x88db('0x1b')&&typeof _0x89edca[_0x88db('0x1c')]==='undefined';var _0x10328f=_0x16529d[_0x88db('0x1d')];var _0x323e17=_0x4e6516?0x0:_0x89edca[_0x88db('0x1a')];var _0x1d8d1d=_0x4e6516?_0x16529d['count']:_0x89edca[_0x88db('0x1a')]+_0x89edca[_0x88db('0x1c')];var _0x5a105b;if(_0x1d8d1d>=_0x10328f){_0x1d8d1d=_0x10328f;_0x5a105b=0xc8;}else{_0x5a105b=0xce;}_0x1a679e[_0x88db('0x18')](_0x5a105b);return _0x1a679e[_0x88db('0x1e')]('Content-Range',_0x323e17+'-'+_0x1d8d1d+'/'+_0x10328f)[_0x88db('0x19')](_0x16529d);}return null;};}function patchUpdates(_0xaa8c2a){return function(_0xadc4d8){try{jsonpatch[_0x88db('0x1f')](_0xadc4d8,_0xaa8c2a,!![]);}catch(_0x5d9e2d){return BPromise[_0x88db('0x20')](_0x5d9e2d);}return _0xadc4d8[_0x88db('0x21')]();};}function saveUpdates(_0xc1cc4f,_0x5c2fbd){return function(_0xc6b56f){if(_0xc6b56f){return _0xc6b56f[_0x88db('0x22')](_0xc1cc4f)[_0x88db('0x23')](function(_0x16a411){return _0x16a411;});}return null;};}function removeEntity(_0x1ea623,_0x220683){return function(_0x143a74){if(_0x143a74){return _0x143a74['destroy']()[_0x88db('0x23')](function(){_0x1ea623[_0x88db('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x308191,_0x55e71d){return function(_0x1cb7f9){if(!_0x1cb7f9){_0x308191[_0x88db('0x17')](0x194);}return _0x1cb7f9;};}function handleError(_0x5bfb3b,_0x3c201f){_0x3c201f=_0x3c201f||0x1f4;return function(_0x216b3d){logger[_0x88db('0x24')](_0x216b3d[_0x88db('0x25')]);if(_0x216b3d[_0x88db('0x26')]){delete _0x216b3d['name'];}_0x5bfb3b[_0x88db('0x18')](_0x3c201f)[_0x88db('0x27')](_0x216b3d);};}exports['index']=function(_0x1d0734,_0x221cce){var _0x56ed70={},_0x42a2e7={},_0x450b06={'count':0x0,'rows':[]};var _0x3161ee=_[_0x88db('0x28')](db[_0x88db('0x29')]['rawAttributes'],function(_0x76ec46){return{'name':_0x76ec46[_0x88db('0x2a')],'type':_0x76ec46['type'][_0x88db('0x2b')]};});_0x42a2e7[_0x88db('0x2c')]=_[_0x88db('0x28')](_0x3161ee,_0x88db('0x26'));_0x42a2e7[_0x88db('0x2d')]=_['keys'](_0x1d0734[_0x88db('0x2d')]);_0x42a2e7[_0x88db('0x2e')]=_[_0x88db('0x2f')](_0x42a2e7[_0x88db('0x2c')],_0x42a2e7['query']);_0x42a2e7[_0x88db('0x2e')]=_['concat'](_0x42a2e7[_0x88db('0x2e')],[_0x88db('0x30'),_0x88db('0x31'),_0x88db('0x32'),_0x88db('0x33'),_0x88db('0x34'),'$lte',_0x88db('0x35'),'$eq',_0x88db('0x36'),_0x88db('0x37'),_0x88db('0x38'),'$in',_0x88db('0x39'),_0x88db('0x3a'),_0x88db('0x3b'),_0x88db('0x3c'),_0x88db('0x3d'),_0x88db('0x3a'),_0x88db('0x3e'),_0x88db('0x3f'),_0x88db('0x40'),_0x88db('0x41')]);_0x56ed70[_0x88db('0x42')]=_[_0x88db('0x2f')](_0x42a2e7['model'],qs[_0x88db('0x43')](_0x1d0734[_0x88db('0x2d')][_0x88db('0x43')]));_0x56ed70[_0x88db('0x42')]=_0x56ed70[_0x88db('0x42')]['length']?_0x56ed70[_0x88db('0x42')]:_0x42a2e7[_0x88db('0x2c')];if(!_0x1d0734[_0x88db('0x2d')]['hasOwnProperty']('nolimit')){_0x56ed70[_0x88db('0x1c')]=qs['limit'](_0x1d0734['query'][_0x88db('0x1c')]);_0x56ed70[_0x88db('0x1a')]=qs[_0x88db('0x1a')](_0x1d0734[_0x88db('0x2d')][_0x88db('0x1a')]);}_0x56ed70['order']=qs[_0x88db('0x44')](_0x1d0734[_0x88db('0x2d')][_0x88db('0x44')]);_0x56ed70[_0x88db('0x45')]=qs['filters'](_[_0x88db('0x46')](_0x1d0734[_0x88db('0x2d')],_0x42a2e7[_0x88db('0x2e')]),_0x3161ee);if(_0x1d0734['query']['filter']){_0x56ed70[_0x88db('0x45')]=_[_0x88db('0x47')](_0x56ed70['where'],{'$or':_[_0x88db('0x28')](_0x3161ee,function(_0x509170){if(_0x509170['type']!==_0x88db('0x48')){var _0x243474={};_0x243474[_0x509170[_0x88db('0x26')]]={'$like':'%'+_0x1d0734[_0x88db('0x2d')]['filter']+'%'};return _0x243474;}})});}_0x56ed70=_[_0x88db('0x47')]({},_0x56ed70,_0x1d0734[_0x88db('0x49')]);var _0x132684={'where':_0x56ed70[_0x88db('0x45')]};return db[_0x88db('0x29')][_0x88db('0x1d')](_0x132684)[_0x88db('0x23')](function(_0x1c7f1b){_0x450b06[_0x88db('0x1d')]=_0x1c7f1b;if(_0x1d0734[_0x88db('0x2d')][_0x88db('0x4a')]){_0x56ed70[_0x88db('0x4b')]=[{'all':!![]}];}return db[_0x88db('0x29')][_0x88db('0x4c')](_0x56ed70);})['then'](function(_0x31c35a){_0x450b06[_0x88db('0x4d')]=_0x31c35a;return _0x450b06;})['then'](respondWithFilteredResult(_0x221cce,_0x56ed70))[_0x88db('0x4e')](handleError(_0x221cce,null));};exports['show']=function(_0x1c6db6,_0x50ee7f){var _0x1416eb={'raw':!![],'where':{'id':_0x1c6db6[_0x88db('0x4f')]['id']}},_0x3f4f2f={};_0x3f4f2f[_0x88db('0x2c')]=_[_0x88db('0x50')](db['CmHopper'][_0x88db('0x51')]);_0x3f4f2f[_0x88db('0x2d')]=_[_0x88db('0x50')](_0x1c6db6['query']);_0x3f4f2f[_0x88db('0x2e')]=_[_0x88db('0x2f')](_0x3f4f2f[_0x88db('0x2c')],_0x3f4f2f[_0x88db('0x2d')]);_0x1416eb[_0x88db('0x42')]=_[_0x88db('0x2f')](_0x3f4f2f['model'],qs[_0x88db('0x43')](_0x1c6db6[_0x88db('0x2d')][_0x88db('0x43')]));_0x1416eb[_0x88db('0x42')]=_0x1416eb[_0x88db('0x42')][_0x88db('0x52')]?_0x1416eb[_0x88db('0x42')]:_0x3f4f2f[_0x88db('0x2c')];if(_0x1c6db6[_0x88db('0x2d')][_0x88db('0x4a')]){_0x1416eb[_0x88db('0x4b')]=[{'all':!![]}];}_0x1416eb=_[_0x88db('0x47')]({},_0x1416eb,_0x1c6db6['options']);return db[_0x88db('0x29')][_0x88db('0x53')](_0x1416eb)[_0x88db('0x23')](handleEntityNotFound(_0x50ee7f,null))[_0x88db('0x23')](respondWithResult(_0x50ee7f,null))[_0x88db('0x4e')](handleError(_0x50ee7f,null));};exports[_0x88db('0x54')]=function(_0x58c2ba,_0x5b2819){return db[_0x88db('0x29')][_0x88db('0x54')](_0x58c2ba['body'],{})[_0x88db('0x23')](respondWithResult(_0x5b2819,0xc9))[_0x88db('0x4e')](handleError(_0x5b2819,null));};exports[_0x88db('0x22')]=function(_0x2282d8,_0x23ec34){if(_0x2282d8[_0x88db('0x55')]['id']){delete _0x2282d8[_0x88db('0x55')]['id'];}return db[_0x88db('0x29')][_0x88db('0x53')]({'where':{'id':_0x2282d8[_0x88db('0x4f')]['id']}})[_0x88db('0x23')](handleEntityNotFound(_0x23ec34,null))[_0x88db('0x23')](saveUpdates(_0x2282d8[_0x88db('0x55')],null))['then'](respondWithResult(_0x23ec34,null))['catch'](handleError(_0x23ec34,null));};exports[_0x88db('0x56')]=function(_0x31a2d1,_0x5f3ba0){return db[_0x88db('0x29')][_0x88db('0x56')]()[_0x88db('0x23')](respondWithResult(_0x5f3ba0,null))['catch'](handleError(_0x5f3ba0,null));};exports[_0x88db('0x57')]=function(_0x3ca356,_0x2eaadb){var _0x407a15;var _0x3c45c5=_0x3ca356['params']['id'];return db[_0x88db('0x29')][_0x88db('0x53')]({'where':{'id':_0x3ca356[_0x88db('0x4f')]['id']}})[_0x88db('0x23')](handleEntityNotFound(_0x2eaadb,null))[_0x88db('0x23')](function(_0x2b7f03){if(_0x2b7f03){return _0x2b7f03[_0x88db('0x57')]()[_0x88db('0x23')](function(_0x394c9d){return _0x394c9d;});}})[_0x88db('0x23')](function(_0x34c3fa){_0x407a15=_0x34c3fa;if(_0x34c3fa){if(_0x34c3fa[_0x88db('0x58')]||_0x34c3fa[_0x88db('0x59')]){return db[_0x34c3fa[_0x88db('0x58')]?_0x88db('0x5a'):'Campaign'][_0x88db('0x53')]({'where':{'id':_0x34c3fa[_0x88db('0x58')]?_0x34c3fa[_0x88db('0x58')]:_0x34c3fa[_0x88db('0x59')]},'attributes':['id',_0x88db('0x26')],'raw':!![]});}}})[_0x88db('0x23')](function(_0x216cd3){var _0x4bab1b={};if(_0x216cd3){_[_0x88db('0x47')](_0x4bab1b,_[_0x88db('0x5b')](_0x407a15[_0x88db('0x5c')],[_0x88db('0x5d'),_0x88db('0x5e'),'id']));_0x4bab1b[_0x88db('0x5f')]=0x15;_0x4bab1b[_0x88db('0x60')]=_0x88db('0x61');_0x4bab1b[_0x88db('0x62')]=_0x216cd3['name'];_0x4bab1b[_0x88db('0x63')]=_0x3ca356[_0x88db('0x64')][_0x88db('0x26')];_0x4bab1b[_0x88db('0x65')]=_0x3ca356['user']['id'];_0x4bab1b[_0x88db('0x61')]=!![];_0x4bab1b[_0x88db('0x66')]=moment()[_0x88db('0x67')](_0x88db('0x68'));_0x4bab1b['calleridnum']=_0x407a15['phone'];_0x4bab1b[_0x88db('0x69')]=_0x407a15[_0x88db('0x58')]?_0x88db('0x6a'):'ivr';return db[_0x88db('0x6b')]['find']({'where':{'id':_0x4bab1b[_0x88db('0x6c')]},'attributes':['firstName',_0x88db('0x6d')]})[_0x88db('0x23')](function(_0x4429b1){if(!_['isNil'](_0x2eaadb)&&!_['isNil'](_0x4429b1[_0x88db('0x6e')])){_0x4bab1b[_0x88db('0x6f')]=_0x4429b1[_0x88db('0x6e')];if(!_['isNil'](_0x4429b1[_0x88db('0x6d')])){_0x4bab1b[_0x88db('0x6f')]+='\x20'+_0x4429b1[_0x88db('0x6d')];}}})[_0x88db('0x70')](function(){return db[_0x88db('0x71')]['create'](_0x4bab1b);});}})[_0x88db('0x23')](function(_0x3752a8){return db[_0x88db('0x72')][_0x88db('0x57')]({'where':{'CmHopperId':_0x3c45c5}});})[_0x88db('0x23')](function(){return _0x2eaadb[_0x88db('0x18')](0xcc)['end']();})['catch'](handleError(_0x2eaadb,null));};exports[_0x88db('0x73')]=function(_0x91149a,_0x26244d,_0x22bdfd){var _0x534a90=[];return db[_0x88db('0x6b')][_0x88db('0x56')]()[_0x88db('0x23')](function(_0x4e935d){_0x534a90=_[_0x88db('0x50')](_0x4e935d);return _0x91149a['user'][_0x88db('0x74')]({'where':{'type':_0x88db('0x75'),'dialActive':!![],'dialMethod':_0x88db('0x76')},'attributes':['id',_0x88db('0x77'),_0x88db('0x78')],'raw':!![]});})['then'](function(_0x4ba6ca){if(_0x4ba6ca&&_0x4ba6ca['length']){return db['sequelize']['transaction'](function(_0x3bf582){var _0xfe71cc={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x88db('0x67')](_0x88db('0x68'))},'VoiceQueueId':{'$in':_[_0x88db('0x28')](_0x4ba6ca,'id')},'$or':[{'UserId':null},{'UserId':_0x91149a[_0x88db('0x64')]['id']}]};var _0x42c5c4={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x4ba6ca)[_0x88db('0x79')]([_0x88db('0x78'),0x0])[_0x88db('0x28')]('id')['value']()},'$or':[{'UserId':null},{'UserId':_0x91149a['user']['id']}]};var _0x5ec714={'$or':[_0xfe71cc,_0x42c5c4]};var _0x1a4fe6=[];if(_0x91149a['body'][_0x88db('0x7a')]&&_0x91149a[_0x88db('0x55')][_0x88db('0x7a')]===_0x88db('0x7b')){if(!_['isEmpty'](_0x91149a[_0x88db('0x55')][_0x88db('0x7c')])){_0x5ec714['id']={'$in':_0x91149a['body'][_0x88db('0x7c')]};}_0x1a4fe6=[[_0x88db('0x7d'),_0x88db('0x7e')],[_0x88db('0x7f'),_0x4ba6ca[0x0][_0x88db('0x77')]===_0x88db('0x7e')?_0x88db('0x80'):'ASC'],db[_0x88db('0x81')][_0x88db('0x82')](_0x88db('0x83')),['id',_0x88db('0x80')]];}else{if(!_[_0x88db('0x84')](_0x91149a['body']['hopperIds'])){_0x5ec714['id']={'$notIn':_0x91149a[_0x88db('0x55')][_0x88db('0x7c')]};}_0x1a4fe6=[[_0x88db('0x7d'),_0x88db('0x80')],[_0x88db('0x7f'),_0x4ba6ca[0x0][_0x88db('0x77')]],db[_0x88db('0x81')][_0x88db('0x82')](_0x88db('0x85')),['id',_0x88db('0x7e')]];}return db['CmHopper'][_0x88db('0x86')]({'attributes':['id',_0x88db('0x87'),_0x88db('0x88'),'recallme'],'where':_0x5ec714,'order':_0x1a4fe6,'transaction':_0x3bf582,'lock':_0x3bf582[_0x88db('0x89')][_0x88db('0x8a')],'include':[{'model':db[_0x88db('0x6b')],'as':_0x88db('0x8b'),'attributes':_0x534a90,'include':[{'model':db[_0x88db('0x8c')],'as':_0x88db('0x8d'),'attributes':['id',_0x88db('0x26')]}]},{'model':db[_0x88db('0x8e')],'as':_0x88db('0x8f'),'attributes':['id',_0x88db('0x26')]},{'model':db['VoiceQueue'],'as':_0x88db('0x90'),'attributes':['id',_0x88db('0x26'),_0x88db('0x91')]}]})[_0x88db('0x23')](function(_0x353fb6){if(_0x353fb6){return _0x353fb6[_0x88db('0x22')]({'UserId':_0x91149a[_0x88db('0x64')]['id']},{'transaction':_0x3bf582});}});});}})['then'](handleEntityNotFound(_0x26244d,null))[_0x88db('0x23')](respondWithResult(_0x26244d,null))['catch'](handleError(_0x26244d,null));};exports[_0x88db('0x92')]=function(_0x433447,_0x3edf8f,_0x10e25c){var _0xfb5c26=[];return db[_0x88db('0x6b')][_0x88db('0x56')]()[_0x88db('0x23')](function(_0x9f64fa){_0xfb5c26=_[_0x88db('0x50')](_0x9f64fa);return _0x433447['user'][_0x88db('0x74')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':'preview'},'attributes':['id','dialOrderByScheduledAt','dialPreviewAutoRecallMe'],'raw':!![]});})['then'](function(_0x13c282){if(_0x13c282&&_0x13c282[_0x88db('0x52')]){return db[_0x88db('0x81')]['transaction'](function(_0x475ceb){var _0x530df1={'active':![],'recallme':!![],'id':_0x433447['body']['hopperId']};return db[_0x88db('0x29')][_0x88db('0x86')]({'attributes':['id',_0x88db('0x87'),_0x88db('0x93')],'where':_0x530df1,'transaction':_0x475ceb,'lock':_0x475ceb[_0x88db('0x89')][_0x88db('0x8a')],'include':[{'model':db[_0x88db('0x6b')],'as':_0x88db('0x8b'),'attributes':_0xfb5c26,'include':[{'model':db[_0x88db('0x8c')],'as':'Company','attributes':['id','name']}]},{'model':db['CmList'],'as':'List','attributes':['id','name']},{'model':db['VoiceQueue'],'as':_0x88db('0x90'),'attributes':['id',_0x88db('0x26'),'dialActive']}]})[_0x88db('0x23')](function(_0x10a871){if(_0x10a871){return _0x10a871['update']({'UserId':_0x433447[_0x88db('0x64')]['id']},{'transaction':_0x475ceb});}});});}})[_0x88db('0x23')](handleEntityNotFound(_0x3edf8f,null))[_0x88db('0x23')](respondWithResult(_0x3edf8f,null))['catch'](handleError(_0x3edf8f,null));};exports[_0x88db('0x94')]=function(_0xc2c699,_0x12786c,_0x5072c5){return _0xc2c699[_0x88db('0x64')][_0x88db('0x74')]({'where':{'type':'outbound','dialActive':!![],'dialMethod':_0x88db('0x76')},'attributes':['id'],'raw':!![]})[_0x88db('0x23')](function(_0x20cb38){if(_0x20cb38&&_0x20cb38[_0x88db('0x52')]){return db[_0x88db('0x29')][_0x88db('0x1d')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()['format'](_0x88db('0x68'))},'VoiceQueueId':{'$in':_[_0x88db('0x28')](_0x20cb38,'id')},'$or':[{'UserId':null},{'UserId':_0xc2c699[_0x88db('0x64')]['id']}]}});}return 0x0;})[_0x88db('0x23')](function(_0x38634d){if(!_['isNil'](_0x38634d)&&_[_0x88db('0x95')](_0x38634d)){return _0x12786c['status'](0xc8)['json']({'contacts':_0x38634d});}else{logger[_0x88db('0x24')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x88db('0x94'),0x194,_0x88db('0x96'));_0x12786c['sendStatus'](0x194);}})['catch'](handleError(_0x12786c,null));};exports[_0x88db('0x97')]=function(_0x36c011,_0x36c40d,_0xe64d7b){var _0x300e0d=shared[_0x88db('0x98')];var _0x1e3db5=[];_[_0x88db('0x28')](_0x300e0d,function(_0x57d0ff){_0x1e3db5[_0x88db('0x99')]({'id':_0x57d0ff['name'],'name':_0x57d0ff['name'],'utcOffset':_0x57d0ff[_0x88db('0x9a')]});});return _0x36c40d['status'](0xc8)[_0x88db('0x19')]({'tz':_0x1e3db5});};exports[_0x88db('0x9b')]=function(_0x35b802,_0x21f6e8,_0x3c0e48){var _0x3fb255=shared[_0x88db('0x98')];var _0x2874b6={};if(!_[_0x88db('0x9c')](_0x3fb255[_0x35b802[_0x88db('0x55')]['id']]))_0x2874b6=_0x3fb255[_0x35b802[_0x88db('0x55')]['id']];return _0x21f6e8[_0x88db('0x18')](0xc8)['json'](_0x2874b6);};
\ No newline at end of file
+var _0xcd59=['updatedAt','membername','user','UserId','deleted','deletedat','format','YYYY-MM-DD\x20HH:mm:ss','calleridnum','phone','campaigntype','ivr','CmContact','ContactId','firstName','lastName','isNil','calleridname','finally','CmHopperFinal','CmHopperAdditionalPhone','getPreview','getVoiceQueues','outbound','preview','dialOrderByScheduledAt','dialPreviewAutoRecallMe','sequelize','value','direction','isEmpty','hopperIds','priority','ASC','scheduledAt','DESC','COALESCE(CmHopper.UserId,\x200)\x20ASC','literal','COALESCE(CmHopper.UserId,\x200)\x20DESC','findOne','scheduledat','LOCK','Contact','CmCompany','Company','CmList','Queue','transaction','recallme','List','dialActive','getOpenContacts','isNumber','CmHopper,\x20%s,\x20%s,\x20%s','entity\x20not\x20found','timezones','push','utcOffset','getTimezone','moment','lodash','../../components/parsers/qs','../../config/logger','api','../../config/environment','status','json','offset','limit','undefined','count','set','update','then','sendStatus','error','stack','name','send','CmHopper','rawAttributes','fieldName','type','model','map','query','keys','filters','intersection','concat','$and','$gt','$gte','$lt','$lte','$ne','$eq','$not','$notBetween','$in','$notIn','$iLike','$overlap','$contains','$contained','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','describe','destroy','CampaignId','VoiceQueueId','VoiceQueue','omit','dataValues','createdAt'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xcd59,0x14b));var _0x9cd5=function(_0x3da144,_0x578cbd){_0x3da144=_0x3da144-0x0;var _0x13fdc7=_0xcd59[_0x3da144];return _0x13fdc7;};'use strict';var moment=require(_0x9cd5('0x0'));var _=require(_0x9cd5('0x1'));var qs=require(_0x9cd5('0x2'));var logger=require(_0x9cd5('0x3'))(_0x9cd5('0x4'));var shared=require(_0x9cd5('0x5'));var db=require('../../mysqldb')['db'];function respondWithResult(_0x2d392c,_0x191236){_0x191236=_0x191236||0xc8;return function(_0xf96efa){if(_0xf96efa){return _0x2d392c[_0x9cd5('0x6')](_0x191236)[_0x9cd5('0x7')](_0xf96efa);}};}function respondWithFilteredResult(_0x2db192,_0x46277c){return function(_0x2cd19a){if(_0x2cd19a){var _0x214256=typeof _0x46277c[_0x9cd5('0x8')]==='undefined'&&typeof _0x46277c[_0x9cd5('0x9')]===_0x9cd5('0xa');var _0x37b97f=_0x2cd19a[_0x9cd5('0xb')];var _0x162cb0=_0x214256?0x0:_0x46277c[_0x9cd5('0x8')];var _0x46bbca=_0x214256?_0x2cd19a[_0x9cd5('0xb')]:_0x46277c['offset']+_0x46277c[_0x9cd5('0x9')];var _0x16563e;if(_0x46bbca>=_0x37b97f){_0x46bbca=_0x37b97f;_0x16563e=0xc8;}else{_0x16563e=0xce;}_0x2db192[_0x9cd5('0x6')](_0x16563e);return _0x2db192[_0x9cd5('0xc')]('Content-Range',_0x162cb0+'-'+_0x46bbca+'/'+_0x37b97f)['json'](_0x2cd19a);}return null;};}function saveUpdates(_0x2c9cf1,_0x172e29){return function(_0x44518d){if(_0x44518d){return _0x44518d[_0x9cd5('0xd')](_0x2c9cf1)[_0x9cd5('0xe')](function(_0x2a1606){return _0x2a1606;});}return null;};}function handleEntityNotFound(_0x52698b,_0x15b639){return function(_0x1445c0){if(!_0x1445c0){_0x52698b[_0x9cd5('0xf')](0x194);}return _0x1445c0;};}function handleError(_0x4b9ac8,_0x541cb8){_0x541cb8=_0x541cb8||0x1f4;return function(_0x5c4f3d){logger[_0x9cd5('0x10')](_0x5c4f3d[_0x9cd5('0x11')]);if(_0x5c4f3d['name']){delete _0x5c4f3d[_0x9cd5('0x12')];}_0x4b9ac8[_0x9cd5('0x6')](_0x541cb8)[_0x9cd5('0x13')](_0x5c4f3d);};}exports['index']=function(_0x1e921c,_0x2d1863){var _0x3a364f={},_0x3a6f01={},_0x21da57={'count':0x0,'rows':[]};var _0x1ff788=_['map'](db[_0x9cd5('0x14')][_0x9cd5('0x15')],function(_0x3661b0){return{'name':_0x3661b0[_0x9cd5('0x16')],'type':_0x3661b0[_0x9cd5('0x17')]['key']};});_0x3a6f01[_0x9cd5('0x18')]=_[_0x9cd5('0x19')](_0x1ff788,_0x9cd5('0x12'));_0x3a6f01[_0x9cd5('0x1a')]=_[_0x9cd5('0x1b')](_0x1e921c[_0x9cd5('0x1a')]);_0x3a6f01[_0x9cd5('0x1c')]=_[_0x9cd5('0x1d')](_0x3a6f01[_0x9cd5('0x18')],_0x3a6f01['query']);_0x3a6f01[_0x9cd5('0x1c')]=_[_0x9cd5('0x1e')](_0x3a6f01[_0x9cd5('0x1c')],[_0x9cd5('0x1f'),'$or',_0x9cd5('0x20'),_0x9cd5('0x21'),_0x9cd5('0x22'),_0x9cd5('0x23'),_0x9cd5('0x24'),_0x9cd5('0x25'),_0x9cd5('0x26'),'$between',_0x9cd5('0x27'),_0x9cd5('0x28'),_0x9cd5('0x29'),'$like','$notLike',_0x9cd5('0x2a'),'$notILike','$like',_0x9cd5('0x2b'),_0x9cd5('0x2c'),_0x9cd5('0x2d'),'$any']);_0x3a364f[_0x9cd5('0x2e')]=_[_0x9cd5('0x1d')](_0x3a6f01[_0x9cd5('0x18')],qs[_0x9cd5('0x2f')](_0x1e921c[_0x9cd5('0x1a')][_0x9cd5('0x2f')]));_0x3a364f[_0x9cd5('0x2e')]=_0x3a364f[_0x9cd5('0x2e')][_0x9cd5('0x30')]?_0x3a364f[_0x9cd5('0x2e')]:_0x3a6f01[_0x9cd5('0x18')];if(!_0x1e921c[_0x9cd5('0x1a')][_0x9cd5('0x31')](_0x9cd5('0x32'))){_0x3a364f['limit']=qs[_0x9cd5('0x9')](_0x1e921c[_0x9cd5('0x1a')]['limit']);_0x3a364f['offset']=qs[_0x9cd5('0x8')](_0x1e921c[_0x9cd5('0x1a')]['offset']);}_0x3a364f[_0x9cd5('0x33')]=qs['sort'](_0x1e921c['query'][_0x9cd5('0x34')]);_0x3a364f[_0x9cd5('0x35')]=qs[_0x9cd5('0x1c')](_[_0x9cd5('0x36')](_0x1e921c['query'],_0x3a6f01[_0x9cd5('0x1c')]),_0x1ff788);if(_0x1e921c[_0x9cd5('0x1a')][_0x9cd5('0x37')]){_0x3a364f['where']=_[_0x9cd5('0x38')](_0x3a364f[_0x9cd5('0x35')],{'$or':_[_0x9cd5('0x19')](_0x1ff788,function(_0x435acb){if(_0x435acb[_0x9cd5('0x17')]!==_0x9cd5('0x39')){var _0x320508={};_0x320508[_0x435acb[_0x9cd5('0x12')]]={'$like':'%'+_0x1e921c[_0x9cd5('0x1a')][_0x9cd5('0x37')]+'%'};return _0x320508;}})});}_0x3a364f=_[_0x9cd5('0x38')]({},_0x3a364f,_0x1e921c['options']);var _0x32e253={'where':_0x3a364f['where']};return db['CmHopper'][_0x9cd5('0xb')](_0x32e253)[_0x9cd5('0xe')](function(_0x46b974){_0x21da57[_0x9cd5('0xb')]=_0x46b974;if(_0x1e921c['query'][_0x9cd5('0x3a')]){_0x3a364f[_0x9cd5('0x3b')]=[{'all':!![]}];}return db[_0x9cd5('0x14')][_0x9cd5('0x3c')](_0x3a364f);})['then'](function(_0x36e22c){_0x21da57[_0x9cd5('0x3d')]=_0x36e22c;return _0x21da57;})[_0x9cd5('0xe')](respondWithFilteredResult(_0x2d1863,_0x3a364f))[_0x9cd5('0x3e')](handleError(_0x2d1863,null));};exports[_0x9cd5('0x3f')]=function(_0x16e6b3,_0x4a446c){var _0x26cf61={'raw':!![],'where':{'id':_0x16e6b3[_0x9cd5('0x40')]['id']}},_0x2cbc5f={};_0x2cbc5f[_0x9cd5('0x18')]=_[_0x9cd5('0x1b')](db[_0x9cd5('0x14')][_0x9cd5('0x15')]);_0x2cbc5f[_0x9cd5('0x1a')]=_[_0x9cd5('0x1b')](_0x16e6b3[_0x9cd5('0x1a')]);_0x2cbc5f[_0x9cd5('0x1c')]=_[_0x9cd5('0x1d')](_0x2cbc5f[_0x9cd5('0x18')],_0x2cbc5f[_0x9cd5('0x1a')]);_0x26cf61[_0x9cd5('0x2e')]=_[_0x9cd5('0x1d')](_0x2cbc5f[_0x9cd5('0x18')],qs[_0x9cd5('0x2f')](_0x16e6b3['query'][_0x9cd5('0x2f')]));_0x26cf61['attributes']=_0x26cf61[_0x9cd5('0x2e')][_0x9cd5('0x30')]?_0x26cf61[_0x9cd5('0x2e')]:_0x2cbc5f[_0x9cd5('0x18')];if(_0x16e6b3[_0x9cd5('0x1a')]['includeAll']){_0x26cf61[_0x9cd5('0x3b')]=[{'all':!![]}];}_0x26cf61=_[_0x9cd5('0x38')]({},_0x26cf61,_0x16e6b3[_0x9cd5('0x41')]);return db['CmHopper'][_0x9cd5('0x42')](_0x26cf61)[_0x9cd5('0xe')](handleEntityNotFound(_0x4a446c,null))[_0x9cd5('0xe')](respondWithResult(_0x4a446c,null))[_0x9cd5('0x3e')](handleError(_0x4a446c,null));};exports['create']=function(_0x1fd886,_0x44e290){return db[_0x9cd5('0x14')][_0x9cd5('0x43')](_0x1fd886[_0x9cd5('0x44')],{})[_0x9cd5('0xe')](respondWithResult(_0x44e290,0xc9))[_0x9cd5('0x3e')](handleError(_0x44e290,null));};exports[_0x9cd5('0xd')]=function(_0x1e06be,_0x200d64){if(_0x1e06be[_0x9cd5('0x44')]['id']){delete _0x1e06be[_0x9cd5('0x44')]['id'];}return db[_0x9cd5('0x14')][_0x9cd5('0x42')]({'where':{'id':_0x1e06be[_0x9cd5('0x40')]['id']}})[_0x9cd5('0xe')](handleEntityNotFound(_0x200d64,null))[_0x9cd5('0xe')](saveUpdates(_0x1e06be[_0x9cd5('0x44')],null))['then'](respondWithResult(_0x200d64,null))[_0x9cd5('0x3e')](handleError(_0x200d64,null));};exports[_0x9cd5('0x45')]=function(_0x3fead7,_0x2058a6){return db['CmHopper'][_0x9cd5('0x45')]()[_0x9cd5('0xe')](respondWithResult(_0x2058a6,null))['catch'](handleError(_0x2058a6,null));};exports[_0x9cd5('0x46')]=function(_0x155652,_0x152b17){var _0x26b4c8;var _0x16afe8=_0x155652[_0x9cd5('0x40')]['id'];return db[_0x9cd5('0x14')][_0x9cd5('0x42')]({'where':{'id':_0x155652['params']['id']}})['then'](handleEntityNotFound(_0x152b17,null))[_0x9cd5('0xe')](function(_0x96b49a){if(_0x96b49a){return _0x96b49a[_0x9cd5('0x46')]()[_0x9cd5('0xe')](function(_0x5a933a){return _0x5a933a;});}})[_0x9cd5('0xe')](function(_0x55ac13){_0x26b4c8=_0x55ac13;if(_0x55ac13){if(_0x55ac13['VoiceQueueId']||_0x55ac13[_0x9cd5('0x47')]){return db[_0x55ac13[_0x9cd5('0x48')]?_0x9cd5('0x49'):'Campaign'][_0x9cd5('0x42')]({'where':{'id':_0x55ac13[_0x9cd5('0x48')]?_0x55ac13[_0x9cd5('0x48')]:_0x55ac13[_0x9cd5('0x47')]},'attributes':['id',_0x9cd5('0x12')],'raw':!![]});}}})[_0x9cd5('0xe')](function(_0x53e7dd){var _0x5b92d7={};if(_0x53e7dd){_[_0x9cd5('0x38')](_0x5b92d7,_[_0x9cd5('0x4a')](_0x26b4c8[_0x9cd5('0x4b')],[_0x9cd5('0x4c'),_0x9cd5('0x4d'),'id']));_0x5b92d7['state']=0x15;_0x5b92d7['statedesc']='deleted';_0x5b92d7['campaign']=_0x53e7dd[_0x9cd5('0x12')];_0x5b92d7[_0x9cd5('0x4e')]=_0x155652[_0x9cd5('0x4f')][_0x9cd5('0x12')];_0x5b92d7[_0x9cd5('0x50')]=_0x155652[_0x9cd5('0x4f')]['id'];_0x5b92d7[_0x9cd5('0x51')]=!![];_0x5b92d7[_0x9cd5('0x52')]=moment()[_0x9cd5('0x53')](_0x9cd5('0x54'));_0x5b92d7[_0x9cd5('0x55')]=_0x26b4c8[_0x9cd5('0x56')];_0x5b92d7[_0x9cd5('0x57')]=_0x26b4c8[_0x9cd5('0x48')]?'queue':_0x9cd5('0x58');return db[_0x9cd5('0x59')]['find']({'where':{'id':_0x5b92d7[_0x9cd5('0x5a')]},'attributes':[_0x9cd5('0x5b'),_0x9cd5('0x5c')]})[_0x9cd5('0xe')](function(_0x1af451){if(!_[_0x9cd5('0x5d')](_0x152b17)&&!_[_0x9cd5('0x5d')](_0x1af451['firstName'])){_0x5b92d7['calleridname']=_0x1af451[_0x9cd5('0x5b')];if(!_[_0x9cd5('0x5d')](_0x1af451[_0x9cd5('0x5c')])){_0x5b92d7[_0x9cd5('0x5e')]+='\x20'+_0x1af451[_0x9cd5('0x5c')];}}})[_0x9cd5('0x5f')](function(){return db[_0x9cd5('0x60')][_0x9cd5('0x43')](_0x5b92d7);});}})[_0x9cd5('0xe')](function(_0x47974c){return db[_0x9cd5('0x61')][_0x9cd5('0x46')]({'where':{'CmHopperId':_0x16afe8}});})[_0x9cd5('0xe')](function(){return _0x152b17[_0x9cd5('0x6')](0xcc)['end']();})['catch'](handleError(_0x152b17,null));};exports[_0x9cd5('0x62')]=function(_0x94de58,_0x3cb4d2){var _0x5c6d4d=[];return db[_0x9cd5('0x59')]['describe']()[_0x9cd5('0xe')](function(_0x11a271){_0x5c6d4d=_[_0x9cd5('0x1b')](_0x11a271);return _0x94de58['user'][_0x9cd5('0x63')]({'where':{'type':_0x9cd5('0x64'),'dialActive':!![],'dialMethod':_0x9cd5('0x65')},'attributes':['id',_0x9cd5('0x66'),_0x9cd5('0x67')],'raw':!![]});})['then'](function(_0x2efe1b){if(_0x2efe1b&&_0x2efe1b['length']){return db[_0x9cd5('0x68')]['transaction'](function(_0x7cf549){var _0x431cb7={'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x9cd5('0x53')](_0x9cd5('0x54'))},'VoiceQueueId':{'$in':_['map'](_0x2efe1b,'id')},'$or':[{'UserId':null},{'UserId':_0x94de58[_0x9cd5('0x4f')]['id']}]};var _0x2627ec={'active':![],'recallme':!![],'VoiceQueueId':{'$in':_(_0x2efe1b)[_0x9cd5('0x37')]([_0x9cd5('0x67'),0x0])['map']('id')[_0x9cd5('0x69')]()},'$or':[{'UserId':null},{'UserId':_0x94de58[_0x9cd5('0x4f')]['id']}]};var _0x59074e={'$or':[_0x431cb7,_0x2627ec]};var _0x2feaf2=[];if(_0x94de58[_0x9cd5('0x44')][_0x9cd5('0x6a')]&&_0x94de58[_0x9cd5('0x44')][_0x9cd5('0x6a')]==='prev'){if(!_[_0x9cd5('0x6b')](_0x94de58[_0x9cd5('0x44')][_0x9cd5('0x6c')])){_0x59074e['id']={'$in':_0x94de58[_0x9cd5('0x44')][_0x9cd5('0x6c')]};}_0x2feaf2=[[_0x9cd5('0x6d'),_0x9cd5('0x6e')],[_0x9cd5('0x6f'),_0x2efe1b[0x0][_0x9cd5('0x66')]==='ASC'?_0x9cd5('0x70'):_0x9cd5('0x6e')],db['sequelize']['literal'](_0x9cd5('0x71')),['id',_0x9cd5('0x70')]];}else{if(!_['isEmpty'](_0x94de58['body'][_0x9cd5('0x6c')])){_0x59074e['id']={'$notIn':_0x94de58[_0x9cd5('0x44')][_0x9cd5('0x6c')]};}_0x2feaf2=[[_0x9cd5('0x6d'),'DESC'],['scheduledAt',_0x2efe1b[0x0][_0x9cd5('0x66')]],db[_0x9cd5('0x68')][_0x9cd5('0x72')](_0x9cd5('0x73')),['id',_0x9cd5('0x6e')]];}return db[_0x9cd5('0x14')][_0x9cd5('0x74')]({'attributes':['id',_0x9cd5('0x75'),_0x9cd5('0x56'),'recallme'],'where':_0x59074e,'order':_0x2feaf2,'transaction':_0x7cf549,'lock':_0x7cf549[_0x9cd5('0x76')]['UPDATE'],'include':[{'model':db[_0x9cd5('0x59')],'as':_0x9cd5('0x77'),'attributes':_0x5c6d4d,'include':[{'model':db[_0x9cd5('0x78')],'as':_0x9cd5('0x79'),'attributes':['id','name']}]},{'model':db[_0x9cd5('0x7a')],'as':'List','attributes':['id',_0x9cd5('0x12')]},{'model':db[_0x9cd5('0x49')],'as':_0x9cd5('0x7b'),'attributes':['id',_0x9cd5('0x12'),'dialActive']}]})[_0x9cd5('0xe')](function(_0x31f8da){if(_0x31f8da){return _0x31f8da['update']({'UserId':_0x94de58[_0x9cd5('0x4f')]['id']},{'transaction':_0x7cf549});}});});}})['then'](handleEntityNotFound(_0x3cb4d2,null))[_0x9cd5('0xe')](respondWithResult(_0x3cb4d2,null))['catch'](handleError(_0x3cb4d2,null));};exports['getPreviewRecall']=function(_0x3297fa,_0x30830f,_0x41f786){var _0x1a9cf3=[];var _0x2c7758=_0x3297fa[_0x9cd5('0x40')]['id'];var _0x48362b=_0x3297fa[_0x9cd5('0x4f')]['id'];return db[_0x9cd5('0x59')][_0x9cd5('0x45')]()['then'](function(_0x563fa5){_0x1a9cf3=_[_0x9cd5('0x1b')](_0x563fa5);return db[_0x9cd5('0x68')][_0x9cd5('0x7c')](function(_0x323ff3){const _0x806e1c={'id':_0x2c7758};return db[_0x9cd5('0x14')][_0x9cd5('0x74')]({'attributes':['id',_0x9cd5('0x75'),_0x9cd5('0x7d')],'where':_0x806e1c,'transaction':_0x323ff3,'lock':_0x323ff3[_0x9cd5('0x76')]['UPDATE'],'include':[{'model':db[_0x9cd5('0x59')],'as':'Contact','attributes':_0x1a9cf3,'include':[{'model':db[_0x9cd5('0x78')],'as':_0x9cd5('0x79'),'attributes':['id',_0x9cd5('0x12')]}]},{'model':db['CmList'],'as':_0x9cd5('0x7e'),'attributes':['id','name']},{'model':db['VoiceQueue'],'as':_0x9cd5('0x7b'),'attributes':['id',_0x9cd5('0x12'),_0x9cd5('0x7f')]}]})[_0x9cd5('0xe')](function(_0x1e922c){if(_0x1e922c){return _0x1e922c[_0x9cd5('0xd')]({'UserId':_0x48362b},{'transaction':_0x323ff3});}});});})['then'](handleEntityNotFound(_0x30830f,null))[_0x9cd5('0xe')](respondWithResult(_0x30830f,null))[_0x9cd5('0x3e')](handleError(_0x30830f,null));};exports[_0x9cd5('0x80')]=function(_0x4540ad,_0x48bfca){return _0x4540ad[_0x9cd5('0x4f')][_0x9cd5('0x63')]({'where':{'type':_0x9cd5('0x64'),'dialActive':!![],'dialMethod':_0x9cd5('0x65')},'attributes':['id'],'raw':!![]})[_0x9cd5('0xe')](function(_0x5a370c){if(_0x5a370c&&_0x5a370c[_0x9cd5('0x30')]){return db[_0x9cd5('0x14')][_0x9cd5('0xb')]({'where':{'active':![],'recallme':![],'scheduledAt':{'$lte':moment()[_0x9cd5('0x53')]('YYYY-MM-DD\x20HH:mm:ss')},'VoiceQueueId':{'$in':_[_0x9cd5('0x19')](_0x5a370c,'id')},'$or':[{'UserId':null},{'UserId':_0x4540ad[_0x9cd5('0x4f')]['id']}]}});}return 0x0;})[_0x9cd5('0xe')](function(_0x316d39){if(!_[_0x9cd5('0x5d')](_0x316d39)&&_[_0x9cd5('0x81')](_0x316d39)){return _0x48bfca['status'](0xc8)[_0x9cd5('0x7')]({'contacts':_0x316d39});}else{logger['error'](_0x9cd5('0x82'),'getOpenContacts',0x194,_0x9cd5('0x83'));_0x48bfca[_0x9cd5('0xf')](0x194);}})[_0x9cd5('0x3e')](handleError(_0x48bfca,null));};exports['getTimezones']=function(_0x2c16f3,_0x582e86){var _0x52b0ae=shared[_0x9cd5('0x84')];var _0x337103=[];_[_0x9cd5('0x19')](_0x52b0ae,function(_0x516805){_0x337103[_0x9cd5('0x85')]({'id':_0x516805[_0x9cd5('0x12')],'name':_0x516805[_0x9cd5('0x12')],'utcOffset':_0x516805[_0x9cd5('0x86')]});});return _0x582e86[_0x9cd5('0x6')](0xc8)['json']({'tz':_0x337103});};exports[_0x9cd5('0x87')]=function(_0x24f895,_0x5f2ed6){var _0x40f0eb=shared['timezones'];var _0x382791={};if(!_[_0x9cd5('0x5d')](_0x40f0eb[_0x24f895[_0x9cd5('0x44')]['id']]))_0x382791=_0x40f0eb[_0x24f895['body']['id']];return _0x5f2ed6[_0x9cd5('0x6')](0xc8)[_0x9cd5('0x7')](_0x382791);};
\ No newline at end of file
index feb44cf..d912131 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x038b=['util','../../config/logger','api','bluebird','path','rimraf','./cmHopper.attributes','exports','define','CmHopper','cm_hopper','phone'];(function(_0x19dbc4,_0x366fc5){var _0x325791=function(_0x5c5e0a){while(--_0x5c5e0a){_0x19dbc4['push'](_0x19dbc4['shift']());}};_0x325791(++_0x366fc5);}(_0x038b,0x114));var _0xb038=function(_0x591bdc,_0x25f7a8){_0x591bdc=_0x591bdc-0x0;var _0x2ff181=_0x038b[_0x591bdc];return _0x2ff181;};'use strict';var _=require('lodash');var util=require(_0xb038('0x0'));var logger=require(_0xb038('0x1'))(_0xb038('0x2'));var moment=require('moment');var BPromise=require(_0xb038('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb038('0x4'));var rimraf=require(_0xb038('0x5'));var config=require('../../config/environment');var attributes=require(_0xb038('0x6'));module[_0xb038('0x7')]=function(_0x4fe092,_0x54e1e7){return _0x4fe092[_0xb038('0x8')](_0xb038('0x9'),attributes,{'tableName':_0xb038('0xa'),'paranoid':![],'indexes':[{'name':'scheduledat','fields':['scheduledat']},{'name':_0xb038('0xb'),'fields':[_0xb038('0xb')]},{'name':'priority','fields':['priority']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x01d9=['define','CmHopper','cm_hopper','scheduledat','phone','priority','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./cmHopper.attributes','exports'];(function(_0x355494,_0x592917){var _0x59d215=function(_0x1c59f7){while(--_0x1c59f7){_0x355494['push'](_0x355494['shift']());}};_0x59d215(++_0x592917);}(_0x01d9,0x6c));var _0x901d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x01d9[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x901d('0x0'));var util=require(_0x901d('0x1'));var logger=require(_0x901d('0x2'))(_0x901d('0x3'));var moment=require('moment');var BPromise=require(_0x901d('0x4'));var rp=require(_0x901d('0x5'));var fs=require('fs');var path=require(_0x901d('0x6'));var rimraf=require(_0x901d('0x7'));var config=require(_0x901d('0x8'));var attributes=require(_0x901d('0x9'));module[_0x901d('0xa')]=function(_0x4e7842,_0x1e5d7d){return _0x4e7842[_0x901d('0xb')](_0x901d('0xc'),attributes,{'tableName':_0x901d('0xd'),'paranoid':![],'indexes':[{'name':_0x901d('0xe'),'fields':[_0x901d('0xe')]},{'name':_0x901d('0xf'),'fields':[_0x901d('0xf')]},{'name':_0x901d('0x10'),'fields':[_0x901d('0x10')]}],'timestamps':!![]});};
\ No newline at end of file
index e296c47..e88dff6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a87=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','twilio/lib/webhooks/webhooks','client','http','request','then','info','CmHopper,\x20%s,\x20%s','request\x20sent','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','GetCmHopper','CmHopper','findAll','options','raw','where','attributes','include','model','map','debug','ShowCmHopper','body','CreateCmHopper','UpdateCmHopper','limit','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','active','DestroyCmHopper','GetContactDialer','describe','sequelize','transaction','LOCK','UPDATE','CmContact','Contact','keys','User','Agent','name','voicePause','length','push','update','includes','all','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','ContactId','dataValues','MoveContactManagedDialer','destroy','CountReScheduled','`scheduledat`\x20>=\x20','format','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','order','GetCmHopperPreview','GetContactByPhone','findOne','phone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueId','literal','CmList','List','NOW()\x20+\x20INTERVAL\x20','\x20MINUTE','lodash','moment','bluebird','randomstring'];(function(_0x1526e1,_0x5ed5a5){var _0x249a1e=function(_0x4a7c12){while(--_0x4a7c12){_0x1526e1['push'](_0x1526e1['shift']());}};_0x249a1e(++_0x5ed5a5);}(_0x7a87,0xa8));var _0x77a8=function(_0x4a60f7,_0x188f5a){_0x4a60f7=_0x4a60f7-0x0;var _0x4c0ebb=_0x7a87[_0x4a60f7];return _0x4c0ebb;};'use strict';var _=require(_0x77a8('0x0'));var util=require('util');var moment=require(_0x77a8('0x1'));var BPromise=require(_0x77a8('0x2'));var rs=require(_0x77a8('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x77a8('0x4'))['db'];var utils=require(_0x77a8('0x5'));var logger=require(_0x77a8('0x6'))('rpc');var config=require(_0x77a8('0x7'));var jayson=require(_0x77a8('0x8'));const {validateExpressRequest}=require(_0x77a8('0x9'));var client=jayson[_0x77a8('0xa')][_0x77a8('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x26891f,_0x3d32f6,_0x5b51b2){return new BPromise(function(_0x21db64,_0x8e5cb0){return client[_0x77a8('0xc')](_0x26891f,_0x5b51b2)[_0x77a8('0xd')](function(_0x2272cb){logger[_0x77a8('0xe')](_0x77a8('0xf'),_0x3d32f6,_0x77a8('0x10'));logger['debug'](_0x77a8('0x11'),_0x3d32f6,_0x77a8('0x10'),JSON[_0x77a8('0x12')](_0x2272cb));if(_0x2272cb['error']){if(_0x2272cb[_0x77a8('0x13')]['code']===0x1f4){logger[_0x77a8('0x13')]('CmHopper,\x20%s,\x20%s',_0x3d32f6,_0x2272cb[_0x77a8('0x13')][_0x77a8('0x14')]);return _0x8e5cb0(_0x2272cb['error'][_0x77a8('0x14')]);}logger[_0x77a8('0x13')](_0x77a8('0xf'),_0x3d32f6,_0x2272cb[_0x77a8('0x13')][_0x77a8('0x14')]);return _0x21db64(_0x2272cb[_0x77a8('0x13')][_0x77a8('0x14')]);}else{logger[_0x77a8('0xe')](_0x77a8('0xf'),_0x3d32f6,_0x77a8('0x10'));_0x21db64(_0x2272cb['result'][_0x77a8('0x14')]);}})[_0x77a8('0x15')](function(_0x30e4c2){logger['error'](_0x77a8('0xf'),_0x3d32f6,_0x30e4c2);_0x8e5cb0(_0x30e4c2);});});}exports[_0x77a8('0x16')]=function(_0x3497a8){var _0x422e07=this;return new Promise(function(_0x1a8c50,_0xbd0e29){return db[_0x77a8('0x17')][_0x77a8('0x18')]({'raw':_0x3497a8[_0x77a8('0x19')]?_0x3497a8[_0x77a8('0x19')][_0x77a8('0x1a')]===undefined?!![]:![]:!![],'where':_0x3497a8[_0x77a8('0x19')]?_0x3497a8[_0x77a8('0x19')][_0x77a8('0x1b')]||null:null,'attributes':_0x3497a8['options']?_0x3497a8[_0x77a8('0x19')][_0x77a8('0x1c')]||null:null,'limit':_0x3497a8[_0x77a8('0x19')]?_0x3497a8['options']['limit']||null:null,'include':_0x3497a8[_0x77a8('0x19')]?_0x3497a8[_0x77a8('0x19')][_0x77a8('0x1d')]?_['map'](_0x3497a8[_0x77a8('0x19')][_0x77a8('0x1d')],function(_0xfc69ea){return{'model':db[_0xfc69ea[_0x77a8('0x1e')]],'as':_0xfc69ea['as'],'attributes':_0xfc69ea[_0x77a8('0x1c')],'include':_0xfc69ea[_0x77a8('0x1d')]?_[_0x77a8('0x1f')](_0xfc69ea[_0x77a8('0x1d')],function(_0x5ee0be){return{'model':db[_0x5ee0be[_0x77a8('0x1e')]],'as':_0x5ee0be['as'],'attributes':_0x5ee0be['attributes'],'include':_0x5ee0be[_0x77a8('0x1d')]?_[_0x77a8('0x1f')](_0x5ee0be['include'],function(_0x59c700){return{'model':db[_0x59c700['model']],'as':_0x59c700['as'],'attributes':_0x59c700['attributes']};}):[]};}):[]};}):[]:[]})[_0x77a8('0xd')](function(_0x228f2d){logger[_0x77a8('0xe')]('GetCmHopper',_0x3497a8);logger[_0x77a8('0x20')]('GetCmHopper',_0x3497a8,JSON[_0x77a8('0x12')](_0x228f2d));_0x1a8c50(_0x228f2d);})[_0x77a8('0x15')](function(_0x5baa48){logger[_0x77a8('0x13')](_0x77a8('0x16'),_0x5baa48[_0x77a8('0x14')],_0x3497a8);_0xbd0e29(_0x422e07[_0x77a8('0x13')](0x1f4,_0x5baa48[_0x77a8('0x14')]));});});};exports[_0x77a8('0x21')]=function(_0x25963d){var _0x562072=this;return new Promise(function(_0x239eaa,_0x553c1e){return db[_0x77a8('0x17')]['find']({'raw':_0x25963d[_0x77a8('0x19')]?_0x25963d[_0x77a8('0x19')][_0x77a8('0x1a')]===undefined?!![]:![]:!![],'where':_0x25963d['options']?_0x25963d['options'][_0x77a8('0x1b')]||null:null,'attributes':_0x25963d['options']?_0x25963d[_0x77a8('0x19')][_0x77a8('0x1c')]||null:null,'include':_0x25963d[_0x77a8('0x19')]?_0x25963d['options'][_0x77a8('0x1d')]?_['map'](_0x25963d[_0x77a8('0x19')]['include'],function(_0x10cadd){return{'model':db[_0x10cadd['model']],'as':_0x10cadd['as'],'attributes':_0x10cadd[_0x77a8('0x1c')],'include':_0x10cadd[_0x77a8('0x1d')]?_[_0x77a8('0x1f')](_0x10cadd['include'],function(_0x2037d1){return{'model':db[_0x2037d1['model']],'as':_0x2037d1['as'],'attributes':_0x2037d1['attributes'],'include':_0x2037d1['include']?_[_0x77a8('0x1f')](_0x2037d1[_0x77a8('0x1d')],function(_0x134695){return{'model':db[_0x134695[_0x77a8('0x1e')]],'as':_0x134695['as'],'attributes':_0x134695['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x44bd48){logger[_0x77a8('0xe')](_0x77a8('0x21'),_0x25963d);logger['debug'](_0x77a8('0x21'),_0x25963d,JSON[_0x77a8('0x12')](_0x44bd48));_0x239eaa(_0x44bd48);})['catch'](function(_0xc906af){logger[_0x77a8('0x13')]('ShowCmHopper',_0xc906af[_0x77a8('0x14')],_0x25963d);_0x553c1e(_0x562072[_0x77a8('0x13')](0x1f4,_0xc906af[_0x77a8('0x14')]));});});};exports['CreateCmHopper']=function(_0x50a5ed){var _0x2a0fbb=this;return new Promise(function(_0x2cca3b,_0x43a063){return db[_0x77a8('0x17')]['create'](_0x50a5ed[_0x77a8('0x22')],{'raw':_0x50a5ed[_0x77a8('0x19')]?_0x50a5ed[_0x77a8('0x19')][_0x77a8('0x1a')]===undefined?!![]:![]:!![]})[_0x77a8('0xd')](function(_0x51cb13){logger[_0x77a8('0xe')](_0x77a8('0x23'),_0x50a5ed);logger[_0x77a8('0x20')](_0x77a8('0x23'),_0x50a5ed,JSON['stringify'](_0x51cb13));_0x2cca3b(_0x51cb13);})[_0x77a8('0x15')](function(_0x1ea75f){logger[_0x77a8('0x13')](_0x77a8('0x23'),_0x1ea75f[_0x77a8('0x14')],_0x50a5ed);_0x43a063(_0x2a0fbb[_0x77a8('0x13')](0x1f4,_0x1ea75f[_0x77a8('0x14')]));});});};exports[_0x77a8('0x24')]=function(_0x4885be){var _0x1ac5da=this;return new Promise(function(_0x4d1bee,_0x128a3c){return db[_0x77a8('0x17')]['update'](_0x4885be[_0x77a8('0x22')],{'raw':_0x4885be['options']?_0x4885be[_0x77a8('0x19')][_0x77a8('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4885be['options']?_0x4885be['options']['where']||null:null,'attributes':_0x4885be[_0x77a8('0x19')]?_0x4885be['options']['attributes']||null:null,'limit':_0x4885be['options']?_0x4885be['options'][_0x77a8('0x25')]||null:null})[_0x77a8('0xd')](function(_0x1a34a8){logger[_0x77a8('0xe')](_0x77a8('0x24'),_0x4885be);logger['info'](_0x77a8('0x26'),JSON[_0x77a8('0x12')](_0x4885be[_0x77a8('0x19')][_0x77a8('0x1b')]),_0x4885be[_0x77a8('0x22')][_0x77a8('0x27')]);logger[_0x77a8('0x20')]('UpdateCmHopper',_0x4885be,JSON[_0x77a8('0x12')](_0x1a34a8));_0x4d1bee(_0x1a34a8);})['catch'](function(_0x48f1b7){logger[_0x77a8('0x13')]('UpdateCmHopper',_0x48f1b7['message'],_0x4885be);_0x128a3c(_0x1ac5da[_0x77a8('0x13')](0x1f4,_0x48f1b7['message']));});});};exports['DestroyCmHopper']=function(_0x4ad4bd){var _0x5ad34f=this;return new Promise(function(_0x291f92,_0x154055){return db['CmHopper']['destroy']({'where':_0x4ad4bd[_0x77a8('0x19')]?_0x4ad4bd[_0x77a8('0x19')][_0x77a8('0x1b')]||null:null})['then'](function(_0xff8239){logger[_0x77a8('0xe')]('DestroyCmHopper',_0x4ad4bd);logger['debug'](_0x77a8('0x28'),_0x4ad4bd,JSON[_0x77a8('0x12')](_0xff8239));_0x291f92(_0xff8239);})[_0x77a8('0x15')](function(_0x41b5c6){logger[_0x77a8('0x13')](_0x77a8('0x28'),_0x41b5c6['message'],_0x4ad4bd);_0x154055(_0x5ad34f[_0x77a8('0x13')](0x1f4,_0x41b5c6['message']));});});};exports[_0x77a8('0x29')]=function(_0x4aa46d){var _0xdbde55=this;return new Promise(function(_0x2a5165,_0x299fb6){return db['CmContact'][_0x77a8('0x2a')]()['then'](function(_0x4b3ec7){return db[_0x77a8('0x2b')][_0x77a8('0x2c')](function(_0x272fd7){return db[_0x77a8('0x17')][_0x77a8('0x18')]({'where':_0x4aa46d[_0x77a8('0x19')]?_0x4aa46d[_0x77a8('0x19')][_0x77a8('0x1b')]||null:null,'attributes':_0x4aa46d[_0x77a8('0x19')]?_0x4aa46d[_0x77a8('0x19')][_0x77a8('0x1c')]||null:null,'limit':_0x4aa46d[_0x77a8('0x19')]?_0x4aa46d[_0x77a8('0x19')]['limit']||null:null,'order':_0x4aa46d[_0x77a8('0x19')]?_0x4aa46d[_0x77a8('0x19')]['order']||null:null,'transaction':_0x272fd7,'lock':_0x272fd7[_0x77a8('0x2d')][_0x77a8('0x2e')],'include':[{'model':db[_0x77a8('0x2f')],'as':_0x77a8('0x30'),'attributes':_[_0x77a8('0x31')](_0x4b3ec7)},{'model':db[_0x77a8('0x32')],'as':_0x77a8('0x33'),'attributes':['id',_0x77a8('0x34'),_0x77a8('0x35')]}]})['then'](function(_0x9f794c){var _0x21e55a=[];var _0x959f37=[];for(var _0x1c5f94=0x0;_0x1c5f94<_0x9f794c[_0x77a8('0x36')];_0x1c5f94+=0x1){var _0x467e1d=_0x9f794c[_0x1c5f94]['UserId'];if(_0x467e1d===null){_0x21e55a[_0x77a8('0x37')](_0x9f794c[_0x1c5f94][_0x77a8('0x38')](_0x4aa46d[_0x77a8('0x22')],{'transaction':_0x272fd7}));}else if(!_0x959f37[_0x77a8('0x39')](_0x467e1d)){_0x959f37[_0x77a8('0x37')](_0x467e1d);_0x21e55a['push'](_0x9f794c[_0x1c5f94][_0x77a8('0x38')](_0x4aa46d['body'],{'transaction':_0x272fd7}));}}return BPromise[_0x77a8('0x3a')](_0x21e55a);});})[_0x77a8('0xd')](function(_0xbca9d0){logger[_0x77a8('0xe')]('GetContactDialer',_0x4aa46d);if(_0xbca9d0[_0x77a8('0x36')]>0x0){logger[_0x77a8('0xe')](_0x77a8('0x3b'),_0xbca9d0[0x0]['dataValues']['id'],_0xbca9d0[0x0]['dataValues'][_0x77a8('0x3c')],_0xbca9d0[0x0][_0x77a8('0x3d')]['active']);}logger[_0x77a8('0x20')](_0x77a8('0x29'),_0x4aa46d,JSON[_0x77a8('0x12')](_0xbca9d0));_0x2a5165(_0xbca9d0);})[_0x77a8('0x15')](function(_0x48ba45){logger[_0x77a8('0x13')]('GetContactDialer',_0x48ba45[_0x77a8('0x14')],_0x4aa46d);_0x299fb6(_0xdbde55[_0x77a8('0x13')](0x1f4,_0x48ba45[_0x77a8('0x14')]));});});});};exports[_0x77a8('0x3e')]=function(_0x3be6bf){var _0x24b221=this;return new Promise(function(_0x2e2190,_0x5f35a5){return db[_0x77a8('0x2b')][_0x77a8('0x2c')](function(_0x232149){return db['CmHopperFinal']['create'](_0x3be6bf[_0x77a8('0x22')],{'raw':_0x3be6bf[_0x77a8('0x19')]?_0x3be6bf[_0x77a8('0x19')][_0x77a8('0x1a')]===undefined?!![]:![]:!![],'transaction':_0x232149})['then'](function(){logger[_0x77a8('0xe')]('MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]',JSON[_0x77a8('0x12')](_0x3be6bf[_0x77a8('0x19')][_0x77a8('0x1b')]),_0x3be6bf['options']['where'][_0x77a8('0x27')]);return db[_0x77a8('0x17')][_0x77a8('0x3f')]({'where':_0x3be6bf[_0x77a8('0x19')]?_0x3be6bf[_0x77a8('0x19')][_0x77a8('0x1b')]||null:null,'transaction':_0x232149});});})[_0x77a8('0xd')](function(_0x482873){logger['info'](_0x77a8('0x3e'),_0x3be6bf);logger[_0x77a8('0x20')](_0x77a8('0x3e'),_0x3be6bf,JSON['stringify'](_0x482873));_0x2e2190(_0x482873);})['catch'](function(_0xad062){logger[_0x77a8('0x13')](_0x77a8('0x3e'),_0xad062['message'],_0x3be6bf);_0x5f35a5(_0x24b221[_0x77a8('0x13')](0x1f4,_0xad062['message']));});});};exports[_0x77a8('0x40')]=function(_0x3d0dc7){var _0x2dbbdc=this;return new Promise(function(_0x585e5f,_0x3147a6){return db[_0x77a8('0x17')][_0x77a8('0x18')]({'raw':_0x3d0dc7[_0x77a8('0x19')]?_0x3d0dc7[_0x77a8('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x3d0dc7[_0x77a8('0x19')]?_0x3d0dc7[_0x77a8('0x19')]['where']||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db[_0x77a8('0x2b')]['fn']('IF',db['sequelize']['literal'](_0x77a8('0x41')+util[_0x77a8('0x42')]('\x22%s\x22',moment()['format'](_0x77a8('0x43')))+_0x77a8('0x44')))),_0x77a8('0x45')]]})[_0x77a8('0xd')](function(_0x1ce2c9){logger[_0x77a8('0xe')]('CountReScheduled',_0x3d0dc7);logger[_0x77a8('0x20')](_0x77a8('0x40'),_0x3d0dc7,JSON['stringify'](_0x1ce2c9));_0x585e5f(_0x1ce2c9);})[_0x77a8('0x15')](function(_0x4b4332){logger[_0x77a8('0x13')](_0x77a8('0x40'),_0x4b4332[_0x77a8('0x14')],_0x3d0dc7);_0x3147a6(_0x2dbbdc[_0x77a8('0x13')](0x1f4,_0x4b4332[_0x77a8('0x14')]));});});};exports[_0x77a8('0x46')]=function(_0x39c75a){var _0x379ebc=this;return new Promise(function(_0xeab41c,_0x2c8b97){return db[_0x77a8('0x2f')][_0x77a8('0x2a')]()['then'](function(_0x189d89){return db[_0x77a8('0x2b')][_0x77a8('0x2c')](function(_0x47e104){return db[_0x77a8('0x17')]['findAll']({'where':_0x39c75a['options']?_0x39c75a['options']['where']||null:null,'attributes':_0x39c75a['options']?_0x39c75a[_0x77a8('0x19')][_0x77a8('0x1c')]||null:null,'limit':0x1,'order':_0x39c75a[_0x77a8('0x19')]?_0x39c75a[_0x77a8('0x19')][_0x77a8('0x47')]||null:null,'group':db[_0x77a8('0x17')]['UserId'],'transaction':_0x47e104,'lock':_0x47e104[_0x77a8('0x2d')][_0x77a8('0x2e')],'include':_0x39c75a[_0x77a8('0x19')]?_0x39c75a[_0x77a8('0x19')][_0x77a8('0x1d')]?_[_0x77a8('0x1f')](_0x39c75a['options'][_0x77a8('0x1d')],function(_0x7435f7){return{'model':db[_0x7435f7[_0x77a8('0x1e')]],'as':_0x7435f7['as'],'attributes':_0x7435f7['attributes'],'include':_0x7435f7[_0x77a8('0x1d')]?_[_0x77a8('0x1f')](_0x7435f7[_0x77a8('0x1d')],function(_0x490277){return{'model':db[_0x490277['model']],'as':_0x490277['as'],'attributes':_0x490277[_0x77a8('0x1c')],'include':_0x490277[_0x77a8('0x1d')]?_['map'](_0x490277[_0x77a8('0x1d')],function(_0x42367f){return{'model':db[_0x42367f[_0x77a8('0x1e')]],'as':_0x42367f['as'],'attributes':_0x42367f[_0x77a8('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x77a8('0xd')](function(_0x3af8f5){var _0x43ebfa=[];for(var _0x2b1e16=0x0;_0x2b1e16<_0x3af8f5[_0x77a8('0x36')];_0x2b1e16+=0x1){_0x43ebfa[_0x77a8('0x37')](_0x3af8f5[_0x2b1e16][_0x77a8('0x38')](_0x39c75a['body'],{'transaction':_0x47e104}));}return BPromise[_0x77a8('0x3a')](_0x43ebfa);});})[_0x77a8('0xd')](function(_0xbd1998){logger[_0x77a8('0xe')](_0x77a8('0x46'),_0x39c75a);logger[_0x77a8('0x20')]('GetContactRecallMe',_0x39c75a,JSON['stringify'](_0xbd1998));_0xeab41c(_0xbd1998);})[_0x77a8('0x15')](function(_0x2f529c){logger[_0x77a8('0x13')](_0x77a8('0x46'),_0x2f529c[_0x77a8('0x14')],_0x39c75a);_0x2c8b97(_0x379ebc[_0x77a8('0x13')](0x1f4,_0x2f529c[_0x77a8('0x14')]));});});});};exports[_0x77a8('0x48')]=function(_0x5a388e){var _0x83a8ee=this;return new Promise(function(_0x15c393,_0x57e19e){db['CmContact'][_0x77a8('0x2a')]()[_0x77a8('0xd')](function(_0x43e9a5){return db[_0x77a8('0x17')]['findAll']({'raw':_0x5a388e[_0x77a8('0x19')]?_0x5a388e[_0x77a8('0x19')][_0x77a8('0x1a')]===undefined?!![]:![]:!![],'where':_0x5a388e[_0x77a8('0x19')]?_0x5a388e[_0x77a8('0x19')]['where']||null:null,'attributes':_0x5a388e[_0x77a8('0x19')]?_0x5a388e[_0x77a8('0x19')][_0x77a8('0x1c')]||null:null,'limit':_0x5a388e[_0x77a8('0x19')]?_0x5a388e[_0x77a8('0x19')][_0x77a8('0x25')]||null:null,'include':_0x5a388e[_0x77a8('0x19')]?_0x5a388e[_0x77a8('0x19')][_0x77a8('0x1d')]?_[_0x77a8('0x1f')](_0x5a388e[_0x77a8('0x19')][_0x77a8('0x1d')],function(_0x1428ca){return{'model':db[_0x1428ca['model']],'as':_0x1428ca['as'],'attributes':_0x1428ca['as']==='Contact'?_[_0x77a8('0x31')](_0x43e9a5):_0x1428ca[_0x77a8('0x1c')],'include':_0x1428ca[_0x77a8('0x1d')]?_[_0x77a8('0x1f')](_0x1428ca[_0x77a8('0x1d')],function(_0x14b691){return{'model':db[_0x14b691[_0x77a8('0x1e')]],'as':_0x14b691['as'],'attributes':_0x14b691[_0x77a8('0x1c')],'include':_0x14b691[_0x77a8('0x1d')]?_['map'](_0x14b691[_0x77a8('0x1d')],function(_0x365efc){return{'model':db[_0x365efc[_0x77a8('0x1e')]],'as':_0x365efc['as'],'attributes':_0x365efc[_0x77a8('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x77a8('0xd')](function(_0x477c5c){logger[_0x77a8('0xe')](_0x77a8('0x16'),_0x5a388e);logger[_0x77a8('0x20')]('GetCmHopper',_0x5a388e,JSON[_0x77a8('0x12')](_0x477c5c));_0x15c393(_0x477c5c);})['catch'](function(_0xce6216){logger[_0x77a8('0x13')]('GetCmHopper',_0xce6216[_0x77a8('0x14')],_0x5a388e);_0x57e19e(_0x83a8ee['error'](0x1f4,_0xce6216[_0x77a8('0x14')]));});});});};exports[_0x77a8('0x49')]=function(_0x4ab3bb){var _0x4425f9=this;return new Promise(function(_0x5611ba,_0x544bc2){return db[_0x77a8('0x2f')][_0x77a8('0x4a')]({'raw':!![],'where':{'phone':_0x4ab3bb['options']['where'][_0x77a8('0x4b')]},'attributes':['id','dialTimezone'],'order':[['id',_0x77a8('0x4c')]]})[_0x77a8('0xd')](function(_0x3f490b){logger['info'](_0x77a8('0x4d'),_0x4ab3bb);logger[_0x77a8('0x20')](_0x77a8('0x4d'),_0x4ab3bb,JSON[_0x77a8('0x12')](_0x3f490b));_0x5611ba(_0x3f490b);})[_0x77a8('0x15')](function(_0x8c4ef4){logger[_0x77a8('0x13')](_0x77a8('0x4d'),_0x8c4ef4[_0x77a8('0x14')],_0x4ab3bb);_0x544bc2(_0x4425f9[_0x77a8('0x13')](0x1f4,_0x8c4ef4[_0x77a8('0x14')]));});});};exports[_0x77a8('0x4e')]=function(_0x417c66){var _0x30687a=this;return new Promise(function(_0x4a1b1c,_0x42e600){return db[_0x77a8('0x2b')][_0x77a8('0x2c')](function(_0x206c71){return db['CmHopper']['update']({'active':![]},{'where':{},'transaction':_0x206c71})[_0x77a8('0xd')](function(_0x1544a5){logger[_0x77a8('0xe')](_0x77a8('0x4e'),_0x417c66);logger[_0x77a8('0x20')](_0x77a8('0x4e'),_0x417c66,JSON[_0x77a8('0x12')](_0x1544a5));_0x4a1b1c(_0x1544a5);})[_0x77a8('0x15')](function(_0xb088c2){logger['error']('ResetActiveCalls',_0xb088c2['message'],_0x417c66);_0x42e600(_0x30687a['error'](0x1f4,_0xb088c2[_0x77a8('0x14')]));});});});};exports[_0x77a8('0x4f')]=function(_0x3e5a38){var _0x23c7bb=this;var _0x46ad02=_0x3e5a38[_0x77a8('0x22')]['where'][_0x77a8('0x50')];var _0x359e7f=_0x3e5a38['body'][_0x77a8('0x1b')]['interval'];return new Promise(function(_0x3f4734,_0x7ea94c){return db['CmHopper'][_0x77a8('0x18')]({'where':{'voiceQueueId':_0x46ad02,'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$lte':db['sequelize'][_0x77a8('0x51')]('NOW()\x20+\x20INTERVAL\x20'+_0x359e7f+'\x20MINUTE')}},'include':[{'model':db['CmContact'],'as':_0x77a8('0x30')},{'model':db[_0x77a8('0x32')],'as':_0x77a8('0x33'),'attributes':['id',_0x77a8('0x34'),_0x77a8('0x35')]},{'model':db[_0x77a8('0x52')],'as':_0x77a8('0x53')}]})[_0x77a8('0xd')](function(_0x51a7cd){return db[_0x77a8('0x2b')][_0x77a8('0x2c')](function(_0x2a4cb0){return db[_0x77a8('0x17')][_0x77a8('0x38')]({'recallmeNotifiedDate':new Date()},{'where':{'voiceQueueId':_0x46ad02,'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$lte':db[_0x77a8('0x2b')]['literal'](_0x77a8('0x54')+_0x359e7f+_0x77a8('0x55'))}},'transaction':_0x2a4cb0})[_0x77a8('0xd')](function(_0x18fe50){_0x3f4734(_0x51a7cd);})[_0x77a8('0x15')](function(_0x1cc064){logger['error'](_0x77a8('0x4f'),_0x1cc064[_0x77a8('0x14')],_0x3e5a38);_0x7ea94c(validateExpressRequest);});});})['catch'](function(_0x9c4e4a){logger[_0x77a8('0x13')](_0x77a8('0x4f'),_0x9c4e4a[_0x77a8('0x14')],_0x3e5a38);_0x7ea94c(_0x23c7bb['error'](0x1f4,_0x9c4e4a['message']));});});};
\ No newline at end of file
+var _0x6b19=['info','request\x20sent','debug','CmHopper,\x20%s,\x20%s,\x20%s','stringify','error','message','CmHopper,\x20%s,\x20%s','result','catch','GetCmHopper','CmHopper','findAll','options','attributes','limit','include','map','model','then','find','raw','where','ShowCmHopper','CreateCmHopper','create','body','UpdateCmHopper','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','DestroyCmHopper','destroy','GetContactDialer','CmContact','describe','transaction','order','LOCK','UPDATE','keys','User','Agent','name','voicePause','length','UserId','push','update','all','dataValues','ContactId','active','sequelize','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','MoveContactManagedDialer','CountReScheduled','COUNT','literal','`scheduledat`\x20>=\x20','format','YYYY-MM-DD\x20HH:mm:ss','\x20,\x201,\x20null','GetContactRecallMe','GetCmHopperPreview','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','CmHopperHandlePreviewRecallNotifications','voiceQueueIds','interval','availableAgentsIds','NOW()\x20+\x20INTERVAL\x20','NOW()','Contact','CmList','lodash','moment','bluebird','../../config/logger','rpc','jayson/promise','client','request'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x6b19,0xf4));var _0x96b1=function(_0x3f3908,_0xa381df){_0x3f3908=_0x3f3908-0x0;var _0x41babe=_0x6b19[_0x3f3908];return _0x41babe;};'use strict';var _=require(_0x96b1('0x0'));var util=require('util');var moment=require(_0x96b1('0x1'));var BPromise=require(_0x96b1('0x2'));var db=require('../../mysqldb')['db'];var logger=require(_0x96b1('0x3'))(_0x96b1('0x4'));var jayson=require(_0x96b1('0x5'));var client=jayson[_0x96b1('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x84bd21,_0x177bcd,_0x4c6d60){return new BPromise(function(_0x5e55b7,_0x288d77){return client[_0x96b1('0x7')](_0x84bd21,_0x4c6d60)['then'](function(_0x280b00){logger[_0x96b1('0x8')]('CmHopper,\x20%s,\x20%s',_0x177bcd,_0x96b1('0x9'));logger[_0x96b1('0xa')](_0x96b1('0xb'),_0x177bcd,_0x96b1('0x9'),JSON[_0x96b1('0xc')](_0x280b00));if(_0x280b00['error']){if(_0x280b00[_0x96b1('0xd')]['code']===0x1f4){logger['error']('CmHopper,\x20%s,\x20%s',_0x177bcd,_0x280b00['error'][_0x96b1('0xe')]);return _0x288d77(_0x280b00[_0x96b1('0xd')][_0x96b1('0xe')]);}logger[_0x96b1('0xd')](_0x96b1('0xf'),_0x177bcd,_0x280b00['error'][_0x96b1('0xe')]);return _0x5e55b7(_0x280b00[_0x96b1('0xd')][_0x96b1('0xe')]);}else{logger[_0x96b1('0x8')](_0x96b1('0xf'),_0x177bcd,_0x96b1('0x9'));_0x5e55b7(_0x280b00[_0x96b1('0x10')][_0x96b1('0xe')]);}})[_0x96b1('0x11')](function(_0x5772d3){logger[_0x96b1('0xd')](_0x96b1('0xf'),_0x177bcd,_0x5772d3);_0x288d77(_0x5772d3);});});}exports[_0x96b1('0x12')]=function(_0x350b2c){var _0x1f547c=this;return new Promise(function(_0x23852a,_0x5653e1){return db[_0x96b1('0x13')][_0x96b1('0x14')]({'raw':_0x350b2c[_0x96b1('0x15')]?_0x350b2c[_0x96b1('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x350b2c['options']?_0x350b2c[_0x96b1('0x15')]['where']||null:null,'attributes':_0x350b2c['options']?_0x350b2c[_0x96b1('0x15')][_0x96b1('0x16')]||null:null,'limit':_0x350b2c[_0x96b1('0x15')]?_0x350b2c['options'][_0x96b1('0x17')]||null:null,'include':_0x350b2c[_0x96b1('0x15')]?_0x350b2c[_0x96b1('0x15')][_0x96b1('0x18')]?_[_0x96b1('0x19')](_0x350b2c[_0x96b1('0x15')][_0x96b1('0x18')],function(_0x193325){return{'model':db[_0x193325[_0x96b1('0x1a')]],'as':_0x193325['as'],'attributes':_0x193325[_0x96b1('0x16')],'include':_0x193325[_0x96b1('0x18')]?_[_0x96b1('0x19')](_0x193325[_0x96b1('0x18')],function(_0x2f2d4e){return{'model':db[_0x2f2d4e[_0x96b1('0x1a')]],'as':_0x2f2d4e['as'],'attributes':_0x2f2d4e[_0x96b1('0x16')],'include':_0x2f2d4e[_0x96b1('0x18')]?_[_0x96b1('0x19')](_0x2f2d4e[_0x96b1('0x18')],function(_0x226603){return{'model':db[_0x226603[_0x96b1('0x1a')]],'as':_0x226603['as'],'attributes':_0x226603[_0x96b1('0x16')]};}):[]};}):[]};}):[]:[]})[_0x96b1('0x1b')](function(_0x2ad760){logger['info']('GetCmHopper',_0x350b2c);logger[_0x96b1('0xa')]('GetCmHopper',_0x350b2c,JSON[_0x96b1('0xc')](_0x2ad760));_0x23852a(_0x2ad760);})[_0x96b1('0x11')](function(_0x16bc2f){logger[_0x96b1('0xd')]('GetCmHopper',_0x16bc2f['message'],_0x350b2c);_0x5653e1(_0x1f547c[_0x96b1('0xd')](0x1f4,_0x16bc2f[_0x96b1('0xe')]));});});};exports['ShowCmHopper']=function(_0x36777c){var _0x358167=this;return new Promise(function(_0xfa903e,_0x2262ad){return db[_0x96b1('0x13')][_0x96b1('0x1c')]({'raw':_0x36777c['options']?_0x36777c[_0x96b1('0x15')][_0x96b1('0x1d')]===undefined?!![]:![]:!![],'where':_0x36777c[_0x96b1('0x15')]?_0x36777c[_0x96b1('0x15')][_0x96b1('0x1e')]||null:null,'attributes':_0x36777c[_0x96b1('0x15')]?_0x36777c[_0x96b1('0x15')][_0x96b1('0x16')]||null:null,'include':_0x36777c['options']?_0x36777c[_0x96b1('0x15')][_0x96b1('0x18')]?_[_0x96b1('0x19')](_0x36777c[_0x96b1('0x15')][_0x96b1('0x18')],function(_0x3f45f7){return{'model':db[_0x3f45f7[_0x96b1('0x1a')]],'as':_0x3f45f7['as'],'attributes':_0x3f45f7[_0x96b1('0x16')],'include':_0x3f45f7['include']?_[_0x96b1('0x19')](_0x3f45f7[_0x96b1('0x18')],function(_0x39f9b3){return{'model':db[_0x39f9b3['model']],'as':_0x39f9b3['as'],'attributes':_0x39f9b3['attributes'],'include':_0x39f9b3[_0x96b1('0x18')]?_[_0x96b1('0x19')](_0x39f9b3['include'],function(_0x4ff811){return{'model':db[_0x4ff811['model']],'as':_0x4ff811['as'],'attributes':_0x4ff811[_0x96b1('0x16')]};}):[]};}):[]};}):[]:[]})[_0x96b1('0x1b')](function(_0x3cc6e1){logger[_0x96b1('0x8')](_0x96b1('0x1f'),_0x36777c);logger[_0x96b1('0xa')](_0x96b1('0x1f'),_0x36777c,JSON['stringify'](_0x3cc6e1));_0xfa903e(_0x3cc6e1);})[_0x96b1('0x11')](function(_0x5bbf02){logger['error'](_0x96b1('0x1f'),_0x5bbf02[_0x96b1('0xe')],_0x36777c);_0x2262ad(_0x358167['error'](0x1f4,_0x5bbf02[_0x96b1('0xe')]));});});};exports[_0x96b1('0x20')]=function(_0x217c2f){var _0x3b515a=this;return new Promise(function(_0xe98a06,_0x49a5d7){return db[_0x96b1('0x13')][_0x96b1('0x21')](_0x217c2f[_0x96b1('0x22')],{'raw':_0x217c2f['options']?_0x217c2f[_0x96b1('0x15')]['raw']===undefined?!![]:![]:!![]})[_0x96b1('0x1b')](function(_0x5cbc6e){logger['info'](_0x96b1('0x20'),_0x217c2f);logger[_0x96b1('0xa')](_0x96b1('0x20'),_0x217c2f,JSON[_0x96b1('0xc')](_0x5cbc6e));_0xe98a06(_0x5cbc6e);})['catch'](function(_0x46008a){logger[_0x96b1('0xd')](_0x96b1('0x20'),_0x46008a[_0x96b1('0xe')],_0x217c2f);_0x49a5d7(_0x3b515a[_0x96b1('0xd')](0x1f4,_0x46008a[_0x96b1('0xe')]));});});};exports[_0x96b1('0x23')]=function(_0x52c232){var _0x1440b9=this;return new Promise(function(_0x126e39,_0x2a38dc){return db[_0x96b1('0x13')]['update'](_0x52c232[_0x96b1('0x22')],{'raw':_0x52c232[_0x96b1('0x15')]?_0x52c232[_0x96b1('0x15')][_0x96b1('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x52c232[_0x96b1('0x15')]?_0x52c232[_0x96b1('0x15')][_0x96b1('0x1e')]||null:null,'attributes':_0x52c232['options']?_0x52c232[_0x96b1('0x15')]['attributes']||null:null,'limit':_0x52c232[_0x96b1('0x15')]?_0x52c232[_0x96b1('0x15')][_0x96b1('0x17')]||null:null})[_0x96b1('0x1b')](function(_0x20c3e8){logger[_0x96b1('0x8')](_0x96b1('0x23'),_0x52c232);logger[_0x96b1('0x8')](_0x96b1('0x24'),JSON[_0x96b1('0xc')](_0x52c232[_0x96b1('0x15')][_0x96b1('0x1e')]),_0x52c232['body']['active']);logger[_0x96b1('0xa')]('UpdateCmHopper',_0x52c232,JSON['stringify'](_0x20c3e8));_0x126e39(_0x20c3e8);})[_0x96b1('0x11')](function(_0x52866b){logger[_0x96b1('0xd')](_0x96b1('0x23'),_0x52866b[_0x96b1('0xe')],_0x52c232);_0x2a38dc(_0x1440b9['error'](0x1f4,_0x52866b[_0x96b1('0xe')]));});});};exports[_0x96b1('0x25')]=function(_0x721813){var _0x240403=this;return new Promise(function(_0x584582,_0x27be9f){return db['CmHopper'][_0x96b1('0x26')]({'where':_0x721813[_0x96b1('0x15')]?_0x721813[_0x96b1('0x15')][_0x96b1('0x1e')]||null:null})[_0x96b1('0x1b')](function(_0x3070da){logger[_0x96b1('0x8')](_0x96b1('0x25'),_0x721813);logger['debug'](_0x96b1('0x25'),_0x721813,JSON[_0x96b1('0xc')](_0x3070da));_0x584582(_0x3070da);})['catch'](function(_0x2f9127){logger[_0x96b1('0xd')](_0x96b1('0x25'),_0x2f9127[_0x96b1('0xe')],_0x721813);_0x27be9f(_0x240403[_0x96b1('0xd')](0x1f4,_0x2f9127[_0x96b1('0xe')]));});});};exports[_0x96b1('0x27')]=function(_0x2159ba){var _0x3fa699=this;return new Promise(function(_0x482c4a,_0x2c2d46){return db[_0x96b1('0x28')][_0x96b1('0x29')]()[_0x96b1('0x1b')](function(_0x30b202){return db['sequelize'][_0x96b1('0x2a')](function(_0x5c0ca3){return db[_0x96b1('0x13')][_0x96b1('0x14')]({'where':_0x2159ba[_0x96b1('0x15')]?_0x2159ba[_0x96b1('0x15')][_0x96b1('0x1e')]||null:null,'attributes':_0x2159ba['options']?_0x2159ba[_0x96b1('0x15')][_0x96b1('0x16')]||null:null,'limit':_0x2159ba[_0x96b1('0x15')]?_0x2159ba['options']['limit']||null:null,'order':_0x2159ba[_0x96b1('0x15')]?_0x2159ba[_0x96b1('0x15')][_0x96b1('0x2b')]||null:null,'transaction':_0x5c0ca3,'lock':_0x5c0ca3[_0x96b1('0x2c')][_0x96b1('0x2d')],'include':[{'model':db[_0x96b1('0x28')],'as':'Contact','attributes':_[_0x96b1('0x2e')](_0x30b202)},{'model':db[_0x96b1('0x2f')],'as':_0x96b1('0x30'),'attributes':['id',_0x96b1('0x31'),_0x96b1('0x32')]}]})[_0x96b1('0x1b')](function(_0x45634f){var _0x4cdf8c=[];var _0xce7218=[];for(var _0x1eca41=0x0;_0x1eca41<_0x45634f[_0x96b1('0x33')];_0x1eca41+=0x1){var _0x59db32=_0x45634f[_0x1eca41][_0x96b1('0x34')];if(_0x59db32===null){_0x4cdf8c[_0x96b1('0x35')](_0x45634f[_0x1eca41][_0x96b1('0x36')](_0x2159ba[_0x96b1('0x22')],{'transaction':_0x5c0ca3}));}else if(!_0xce7218['includes'](_0x59db32)){_0xce7218['push'](_0x59db32);_0x4cdf8c[_0x96b1('0x35')](_0x45634f[_0x1eca41]['update'](_0x2159ba[_0x96b1('0x22')],{'transaction':_0x5c0ca3}));}}return BPromise[_0x96b1('0x37')](_0x4cdf8c);});})[_0x96b1('0x1b')](function(_0xa33c46){logger[_0x96b1('0x8')]('GetContactDialer',_0x2159ba);if(_0xa33c46[_0x96b1('0x33')]>0x0){logger[_0x96b1('0x8')]('GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]',_0xa33c46[0x0]['dataValues']['id'],_0xa33c46[0x0][_0x96b1('0x38')][_0x96b1('0x39')],_0xa33c46[0x0][_0x96b1('0x38')][_0x96b1('0x3a')]);}logger[_0x96b1('0xa')](_0x96b1('0x27'),_0x2159ba,JSON['stringify'](_0xa33c46));_0x482c4a(_0xa33c46);})['catch'](function(_0x480360){logger['error'](_0x96b1('0x27'),_0x480360['message'],_0x2159ba);_0x2c2d46(_0x3fa699['error'](0x1f4,_0x480360[_0x96b1('0xe')]));});});});};exports['MoveContactManagedDialer']=function(_0x5d1e56){var _0x74d0b7=this;return new Promise(function(_0x28293c,_0x2bc7ad){return db[_0x96b1('0x3b')][_0x96b1('0x2a')](function(_0x18c6cf){return db['CmHopperFinal'][_0x96b1('0x21')](_0x5d1e56[_0x96b1('0x22')],{'raw':_0x5d1e56[_0x96b1('0x15')]?_0x5d1e56[_0x96b1('0x15')][_0x96b1('0x1d')]===undefined?!![]:![]:!![],'transaction':_0x18c6cf})[_0x96b1('0x1b')](function(){logger[_0x96b1('0x8')](_0x96b1('0x3c'),JSON[_0x96b1('0xc')](_0x5d1e56[_0x96b1('0x15')][_0x96b1('0x1e')]),_0x5d1e56['options']['where'][_0x96b1('0x3a')]);return db[_0x96b1('0x13')][_0x96b1('0x26')]({'where':_0x5d1e56[_0x96b1('0x15')]?_0x5d1e56[_0x96b1('0x15')][_0x96b1('0x1e')]||null:null,'transaction':_0x18c6cf});});})[_0x96b1('0x1b')](function(_0x2fc883){logger[_0x96b1('0x8')](_0x96b1('0x3d'),_0x5d1e56);logger[_0x96b1('0xa')]('MoveContactManagedDialer',_0x5d1e56,JSON[_0x96b1('0xc')](_0x2fc883));_0x28293c(_0x2fc883);})[_0x96b1('0x11')](function(_0x1a2f79){logger[_0x96b1('0xd')](_0x96b1('0x3d'),_0x1a2f79[_0x96b1('0xe')],_0x5d1e56);_0x2bc7ad(_0x74d0b7[_0x96b1('0xd')](0x1f4,_0x1a2f79[_0x96b1('0xe')]));});});};exports[_0x96b1('0x3e')]=function(_0x102ed3){var _0x5842e9=this;return new Promise(function(_0x1b631c,_0xff8c6f){return db['CmHopper'][_0x96b1('0x14')]({'raw':_0x102ed3[_0x96b1('0x15')]?_0x102ed3[_0x96b1('0x15')][_0x96b1('0x1d')]===undefined?!![]:![]:!![],'where':_0x102ed3['options']?_0x102ed3['options'][_0x96b1('0x1e')]||null:null,'attributes':[[db[_0x96b1('0x3b')]['fn'](_0x96b1('0x3f'),db[_0x96b1('0x3b')]['fn']('IF',db[_0x96b1('0x3b')][_0x96b1('0x40')](_0x96b1('0x41')+util[_0x96b1('0x42')]('\x22%s\x22',moment()[_0x96b1('0x42')](_0x96b1('0x43')))+_0x96b1('0x44')))),'contactsRescheduled']]})['then'](function(_0x16fc50){logger[_0x96b1('0x8')](_0x96b1('0x3e'),_0x102ed3);logger[_0x96b1('0xa')](_0x96b1('0x3e'),_0x102ed3,JSON[_0x96b1('0xc')](_0x16fc50));_0x1b631c(_0x16fc50);})[_0x96b1('0x11')](function(_0x13d4ee){logger[_0x96b1('0xd')]('CountReScheduled',_0x13d4ee['message'],_0x102ed3);_0xff8c6f(_0x5842e9[_0x96b1('0xd')](0x1f4,_0x13d4ee['message']));});});};exports['GetContactRecallMe']=function(_0x5d5b0d){var _0x2e4fb4=this;return new Promise(function(_0x4e186d,_0x4756a5){return db[_0x96b1('0x28')][_0x96b1('0x29')]()[_0x96b1('0x1b')](function(_0x939b37){return db[_0x96b1('0x3b')][_0x96b1('0x2a')](function(_0x42af7e){return db[_0x96b1('0x13')][_0x96b1('0x14')]({'where':_0x5d5b0d[_0x96b1('0x15')]?_0x5d5b0d[_0x96b1('0x15')]['where']||null:null,'attributes':_0x5d5b0d[_0x96b1('0x15')]?_0x5d5b0d['options'][_0x96b1('0x16')]||null:null,'limit':0x1,'order':_0x5d5b0d[_0x96b1('0x15')]?_0x5d5b0d[_0x96b1('0x15')]['order']||null:null,'group':db[_0x96b1('0x13')][_0x96b1('0x34')],'transaction':_0x42af7e,'lock':_0x42af7e[_0x96b1('0x2c')]['UPDATE'],'include':_0x5d5b0d['options']?_0x5d5b0d[_0x96b1('0x15')][_0x96b1('0x18')]?_[_0x96b1('0x19')](_0x5d5b0d[_0x96b1('0x15')][_0x96b1('0x18')],function(_0x4ccb20){return{'model':db[_0x4ccb20[_0x96b1('0x1a')]],'as':_0x4ccb20['as'],'attributes':_0x4ccb20[_0x96b1('0x16')],'include':_0x4ccb20['include']?_[_0x96b1('0x19')](_0x4ccb20['include'],function(_0x208a10){return{'model':db[_0x208a10['model']],'as':_0x208a10['as'],'attributes':_0x208a10[_0x96b1('0x16')],'include':_0x208a10[_0x96b1('0x18')]?_['map'](_0x208a10[_0x96b1('0x18')],function(_0x22cb07){return{'model':db[_0x22cb07[_0x96b1('0x1a')]],'as':_0x22cb07['as'],'attributes':_0x22cb07['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x582559){var _0x4832cf=[];for(var _0x4bc8cb=0x0;_0x4bc8cb<_0x582559[_0x96b1('0x33')];_0x4bc8cb+=0x1){_0x4832cf[_0x96b1('0x35')](_0x582559[_0x4bc8cb]['update'](_0x5d5b0d[_0x96b1('0x22')],{'transaction':_0x42af7e}));}return BPromise[_0x96b1('0x37')](_0x4832cf);});})[_0x96b1('0x1b')](function(_0x283fc9){logger[_0x96b1('0x8')](_0x96b1('0x45'),_0x5d5b0d);logger['debug'](_0x96b1('0x45'),_0x5d5b0d,JSON[_0x96b1('0xc')](_0x283fc9));_0x4e186d(_0x283fc9);})[_0x96b1('0x11')](function(_0x23128f){logger[_0x96b1('0xd')](_0x96b1('0x45'),_0x23128f['message'],_0x5d5b0d);_0x4756a5(_0x2e4fb4[_0x96b1('0xd')](0x1f4,_0x23128f[_0x96b1('0xe')]));});});});};exports[_0x96b1('0x46')]=function(_0x1285bf){var _0x9a9612=this;return new Promise(function(_0x31d59b,_0x3827df){db[_0x96b1('0x28')][_0x96b1('0x29')]()[_0x96b1('0x1b')](function(_0x4a1f57){return db['CmHopper']['findAll']({'raw':_0x1285bf['options']?_0x1285bf[_0x96b1('0x15')][_0x96b1('0x1d')]===undefined?!![]:![]:!![],'where':_0x1285bf['options']?_0x1285bf[_0x96b1('0x15')][_0x96b1('0x1e')]||null:null,'attributes':_0x1285bf[_0x96b1('0x15')]?_0x1285bf[_0x96b1('0x15')]['attributes']||null:null,'limit':_0x1285bf['options']?_0x1285bf['options'][_0x96b1('0x17')]||null:null,'include':_0x1285bf[_0x96b1('0x15')]?_0x1285bf[_0x96b1('0x15')][_0x96b1('0x18')]?_[_0x96b1('0x19')](_0x1285bf[_0x96b1('0x15')]['include'],function(_0x67b341){return{'model':db[_0x67b341[_0x96b1('0x1a')]],'as':_0x67b341['as'],'attributes':_0x67b341['as']==='Contact'?_[_0x96b1('0x2e')](_0x4a1f57):_0x67b341[_0x96b1('0x16')],'include':_0x67b341['include']?_[_0x96b1('0x19')](_0x67b341[_0x96b1('0x18')],function(_0x2f01b9){return{'model':db[_0x2f01b9[_0x96b1('0x1a')]],'as':_0x2f01b9['as'],'attributes':_0x2f01b9[_0x96b1('0x16')],'include':_0x2f01b9[_0x96b1('0x18')]?_['map'](_0x2f01b9['include'],function(_0x11eb4c){return{'model':db[_0x11eb4c[_0x96b1('0x1a')]],'as':_0x11eb4c['as'],'attributes':_0x11eb4c[_0x96b1('0x16')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x26cefc){logger['info'](_0x96b1('0x12'),_0x1285bf);logger[_0x96b1('0xa')](_0x96b1('0x12'),_0x1285bf,JSON['stringify'](_0x26cefc));_0x31d59b(_0x26cefc);})[_0x96b1('0x11')](function(_0x510be4){logger['error'](_0x96b1('0x12'),_0x510be4[_0x96b1('0xe')],_0x1285bf);_0x3827df(_0x9a9612[_0x96b1('0xd')](0x1f4,_0x510be4[_0x96b1('0xe')]));});});});};exports['GetContactByPhone']=function(_0x3bb00e){var _0x1fab1a=this;return new Promise(function(_0x98daa8,_0x441f59){return db[_0x96b1('0x28')]['findOne']({'raw':!![],'where':{'phone':_0x3bb00e[_0x96b1('0x15')][_0x96b1('0x1e')][_0x96b1('0x47')]},'attributes':['id',_0x96b1('0x48')],'order':[['id',_0x96b1('0x49')]]})[_0x96b1('0x1b')](function(_0x269735){logger[_0x96b1('0x8')](_0x96b1('0x4a'),_0x3bb00e);logger[_0x96b1('0xa')](_0x96b1('0x4a'),_0x3bb00e,JSON[_0x96b1('0xc')](_0x269735));_0x98daa8(_0x269735);})[_0x96b1('0x11')](function(_0x413753){logger[_0x96b1('0xd')](_0x96b1('0x4a'),_0x413753[_0x96b1('0xe')],_0x3bb00e);_0x441f59(_0x1fab1a['error'](0x1f4,_0x413753[_0x96b1('0xe')]));});});};exports['ResetActiveCalls']=function(_0x599167){var _0x199d5d=this;return new Promise(function(_0x22160b,_0x572b90){return db[_0x96b1('0x3b')][_0x96b1('0x2a')](function(_0x4dc813){return db['CmHopper'][_0x96b1('0x36')]({'active':![]},{'where':{},'transaction':_0x4dc813})[_0x96b1('0x1b')](function(_0x2f3e3c){logger[_0x96b1('0x8')](_0x96b1('0x4b'),_0x599167);logger['debug'](_0x96b1('0x4b'),_0x599167,JSON[_0x96b1('0xc')](_0x2f3e3c));_0x22160b(_0x2f3e3c);})['catch'](function(_0x4cf330){logger[_0x96b1('0xd')](_0x96b1('0x4b'),_0x4cf330[_0x96b1('0xe')],_0x599167);_0x572b90(_0x199d5d[_0x96b1('0xd')](0x1f4,_0x4cf330[_0x96b1('0xe')]));});});});};exports[_0x96b1('0x4c')]=function(_0x443016){var _0x3df577=this;var _0x2c3fe6=_0x443016[_0x96b1('0x22')][_0x96b1('0x1e')][_0x96b1('0x4d')];var _0x172869=_0x443016[_0x96b1('0x22')][_0x96b1('0x1e')][_0x96b1('0x4e')];var _0x70ceef=_0x443016['body'][_0x96b1('0x1e')][_0x96b1('0x4f')];return new Promise(function(_0x3d6c46,_0x4bbae3){return db[_0x96b1('0x13')][_0x96b1('0x14')]({'where':{'voiceQueueId':{'$in':_0x2c3fe6},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db[_0x96b1('0x3b')][_0x96b1('0x40')](_0x96b1('0x50')+_0x172869+'\x20MINUTE'),'$gt':db[_0x96b1('0x3b')][_0x96b1('0x40')](_0x96b1('0x51'))}},'UserId':{'$in':_0x70ceef}},'include':[{'model':db[_0x96b1('0x28')],'as':_0x96b1('0x52')},{'model':db['User'],'as':'Agent','attributes':['id','name',_0x96b1('0x32')]},{'model':db[_0x96b1('0x53')],'as':'List'}]})[_0x96b1('0x1b')](function(_0x2912db){if(_0x2912db[_0x96b1('0x33')]>0x0){return db[_0x96b1('0x3b')][_0x96b1('0x2a')](function(_0x3393e7){return db[_0x96b1('0x13')][_0x96b1('0x36')]({'recallmeNotifiedDate':db[_0x96b1('0x3b')][_0x96b1('0x40')]('NOW()')},{'where':{'id':{'$in':_[_0x96b1('0x19')](_0x2912db,'id')}},'transaction':_0x3393e7})['then'](function(){_0x3d6c46(_0x2912db);})[_0x96b1('0x11')](function(_0x3678e2){logger['error'](_0x96b1('0x4c'),_0x3678e2[_0x96b1('0xe')],_0x443016);_0x4bbae3(_0x3df577[_0x96b1('0xd')](0x1f4,_0x3678e2[_0x96b1('0xe')]));});})[_0x96b1('0x11')](function(_0x3f3544){logger[_0x96b1('0xd')](_0x96b1('0x4c'),_0x3f3544[_0x96b1('0xe')],_0x443016);_0x4bbae3(_0x3df577['error'](0x1f4,_0x3f3544[_0x96b1('0xe')]));});}else{_0x3d6c46(_0x2912db);}});});};
\ No newline at end of file
index fa1deb7..9618b14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a01=['index','/describe','isAuthenticated','describe','/opencontacts','getOpenContacts','/timezones','getTimezones','/:id','show','post','/preview','getPreview','getTimezone','/previewrecall','getPreviewRecall','update','delete','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopper.controller','get'];(function(_0x540dcb,_0x4eacb6){var _0x49353c=function(_0x449bb1){while(--_0x449bb1){_0x540dcb['push'](_0x540dcb['shift']());}};_0x49353c(++_0x4eacb6);}(_0x4a01,0xdf));var _0x14a0=function(_0x386337,_0xabf734){_0x386337=_0x386337-0x0;var _0x1ec9dc=_0x4a01[_0x386337];return _0x1ec9dc;};'use strict';var multer=require(_0x14a0('0x0'));var util=require(_0x14a0('0x1'));var path=require(_0x14a0('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x14a0('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x14a0('0x4'));var interaction=require(_0x14a0('0x5'));var config=require(_0x14a0('0x6'));var controller=require(_0x14a0('0x7'));router[_0x14a0('0x8')]('/',auth['isAuthenticated'](),controller[_0x14a0('0x9')]);router[_0x14a0('0x8')](_0x14a0('0xa'),auth[_0x14a0('0xb')](),controller[_0x14a0('0xc')]);router[_0x14a0('0x8')](_0x14a0('0xd'),auth['isAuthenticated'](),controller[_0x14a0('0xe')]);router[_0x14a0('0x8')](_0x14a0('0xf'),auth[_0x14a0('0xb')](),controller[_0x14a0('0x10')]);router[_0x14a0('0x8')](_0x14a0('0x11'),auth[_0x14a0('0xb')](),controller[_0x14a0('0x12')]);router[_0x14a0('0x13')]('/',auth[_0x14a0('0xb')](),controller['create']);router[_0x14a0('0x13')](_0x14a0('0x14'),auth[_0x14a0('0xb')](),controller[_0x14a0('0x15')]);router[_0x14a0('0x13')]('/timezone',auth[_0x14a0('0xb')](),controller[_0x14a0('0x16')]);router[_0x14a0('0x13')](_0x14a0('0x17'),auth['isAuthenticated'](),controller[_0x14a0('0x18')]);router['put'](_0x14a0('0x11'),auth['isAuthenticated'](),controller[_0x14a0('0x19')]);router[_0x14a0('0x1a')](_0x14a0('0x11'),auth[_0x14a0('0xb')](),controller[_0x14a0('0x1b')]);module[_0x14a0('0x1c')]=router;
\ No newline at end of file
+var _0x61b0=['getPreviewRecall','post','/preview','getPreview','getTimezone','update','delete','destroy','exports','express','../../components/auth/service','./cmHopper.controller','get','isAuthenticated','index','/describe','describe','/opencontacts','getOpenContacts','/timezones','getTimezones','/:id','show'];(function(_0x46a42b,_0x1691cc){var _0x1af8f0=function(_0x4ea3f8){while(--_0x4ea3f8){_0x46a42b['push'](_0x46a42b['shift']());}};_0x1af8f0(++_0x1691cc);}(_0x61b0,0x1a7));var _0x061b=function(_0x2481d3,_0x287cf5){_0x2481d3=_0x2481d3-0x0;var _0x3c6de3=_0x61b0[_0x2481d3];return _0x3c6de3;};'use strict';var express=require(_0x061b('0x0'));var router=express['Router']();var auth=require(_0x061b('0x1'));var controller=require(_0x061b('0x2'));router[_0x061b('0x3')]('/',auth[_0x061b('0x4')](),controller[_0x061b('0x5')]);router[_0x061b('0x3')](_0x061b('0x6'),auth[_0x061b('0x4')](),controller[_0x061b('0x7')]);router[_0x061b('0x3')](_0x061b('0x8'),auth['isAuthenticated'](),controller[_0x061b('0x9')]);router[_0x061b('0x3')](_0x061b('0xa'),auth[_0x061b('0x4')](),controller[_0x061b('0xb')]);router[_0x061b('0x3')](_0x061b('0xc'),auth[_0x061b('0x4')](),controller[_0x061b('0xd')]);router[_0x061b('0x3')]('/:id/previewrecall',auth[_0x061b('0x4')](),controller[_0x061b('0xe')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x061b('0xf')](_0x061b('0x10'),auth[_0x061b('0x4')](),controller[_0x061b('0x11')]);router[_0x061b('0xf')]('/timezone',auth[_0x061b('0x4')](),controller[_0x061b('0x12')]);router['put'](_0x061b('0xc'),auth[_0x061b('0x4')](),controller[_0x061b('0x13')]);router[_0x061b('0x14')](_0x061b('0xc'),auth[_0x061b('0x4')](),controller[_0x061b('0x15')]);module[_0x061b('0x16')]=router;
\ No newline at end of file
index faa3b6e..acb012d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce95=['INTEGER','STRING','format','YYYY-MM-DD\x20HH:mm:ss','moment','exports'];(function(_0x1d0c58,_0x251543){var _0x1332e2=function(_0x2309c6){while(--_0x2309c6){_0x1d0c58['push'](_0x1d0c58['shift']());}};_0x1332e2(++_0x251543);}(_0xce95,0x18a));var _0x5ce9=function(_0x82be4,_0x1b074b){_0x82be4=_0x82be4-0x0;var _0xe2637=_0xce95[_0x82be4];return _0xe2637;};'use strict';var moment=require(_0x5ce9('0x0'));var Sequelize=require('sequelize');module[_0x5ce9('0x1')]={'CmHopperId':{'type':Sequelize[_0x5ce9('0x2')]},'phone':{'type':Sequelize[_0x5ce9('0x3')],'allowNull':![]},'OrderBy':{'type':Sequelize[_0x5ce9('0x2')],'defaultValue':0x0},'scheduledat':{'type':Sequelize['DATE'],'defaultValue':moment()[_0x5ce9('0x4')](_0x5ce9('0x5'))},'countbusyretry':{'type':Sequelize[_0x5ce9('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x5ce9('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x5ce9('0x2')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0x5ce9('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x5ce9('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x5ce9('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x5ce9('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xcca5=['INTEGER','DATE','YYYY-MM-DD\x20HH:mm:ss','moment','exports'];(function(_0x4c0ebb,_0x1e7eae){var _0xfc4dc1=function(_0x3de6fc){while(--_0x3de6fc){_0x4c0ebb['push'](_0x4c0ebb['shift']());}};_0xfc4dc1(++_0x1e7eae);}(_0xcca5,0x152));var _0x5cca=function(_0x43e4b3,_0x1444de){_0x43e4b3=_0x43e4b3-0x0;var _0x10c655=_0xcca5[_0x43e4b3];return _0x10c655;};'use strict';var moment=require(_0x5cca('0x0'));var Sequelize=require('sequelize');module[_0x5cca('0x1')]={'CmHopperId':{'type':Sequelize[_0x5cca('0x2')]},'phone':{'type':Sequelize['STRING'],'allowNull':![]},'OrderBy':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'scheduledat':{'type':Sequelize[_0x5cca('0x3')],'defaultValue':moment()['format'](_0x5cca('0x4'))},'countbusyretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x5cca('0x2')],'defaultValue':0x0},'countnosuchnumberretry':{'type':Sequelize[_0x5cca('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x5cca('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x5cca('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x5cca('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 187cb4b..ae68fd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf472=['filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','keys','find','catch','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','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','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','save','update','destroy','get','CmHopperAdditionalPhones','UserProfileResource','then','error','stack','name','send','index','map','CmHopperAdditionalPhone','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','limit','order','sort','where','pick'];(function(_0x20bc10,_0x35bed9){var _0x3bd5ce=function(_0x8d1e4c){while(--_0x8d1e4c){_0x20bc10['push'](_0x20bc10['shift']());}};_0x3bd5ce(++_0x35bed9);}(_0xf472,0x6b));var _0x2f47=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xf472[_0x42cae2];return _0x5f256f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2f47('0x0'));var zipdir=require(_0x2f47('0x1'));var jsonpatch=require(_0x2f47('0x2'));var rp=require(_0x2f47('0x3'));var moment=require('moment');var BPromise=require(_0x2f47('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x2f47('0x5'));var sox=require(_0x2f47('0x6'));var csv=require(_0x2f47('0x7'));var ejs=require(_0x2f47('0x8'));var fs=require('fs');var fs_extra=require(_0x2f47('0x9'));var _=require(_0x2f47('0xa'));var squel=require(_0x2f47('0xb'));var crypto=require(_0x2f47('0xc'));var jsforce=require(_0x2f47('0xd'));var deskjs=require(_0x2f47('0xe'));var toCsv=require(_0x2f47('0x7'));var querystring=require(_0x2f47('0xf'));var Papa=require('papaparse');var Redis=require(_0x2f47('0x10'));var authService=require(_0x2f47('0x11'));var qs=require(_0x2f47('0x12'));var as=require(_0x2f47('0x13'));var hardwareService=require(_0x2f47('0x14'));var logger=require(_0x2f47('0x15'))('api');var utils=require(_0x2f47('0x16'));var config=require(_0x2f47('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x2f47('0x18'))['db'];function respondWithStatusCode(_0x36e102,_0x390a06){_0x390a06=_0x390a06||0xcc;return function(_0x5d7d09){if(_0x5d7d09){return _0x36e102[_0x2f47('0x19')](_0x390a06);}return _0x36e102[_0x2f47('0x1a')](_0x390a06)[_0x2f47('0x1b')]();};}function respondWithResult(_0x3b5399,_0xc4128b){_0xc4128b=_0xc4128b||0xc8;return function(_0x59c0c5){if(_0x59c0c5){return _0x3b5399[_0x2f47('0x1a')](_0xc4128b)[_0x2f47('0x1c')](_0x59c0c5);}};}function respondWithFilteredResult(_0x26d341,_0x5b74b6){return function(_0x1acfb2){if(_0x1acfb2){var _0x3ba517=typeof _0x5b74b6[_0x2f47('0x1d')]==='undefined'&&typeof _0x5b74b6['limit']===_0x2f47('0x1e');var _0x5a7325=_0x1acfb2[_0x2f47('0x1f')];var _0x2153ef=_0x3ba517?0x0:_0x5b74b6[_0x2f47('0x1d')];var _0x395b7b=_0x3ba517?_0x1acfb2['count']:_0x5b74b6['offset']+_0x5b74b6['limit'];var _0x339bed;if(_0x395b7b>=_0x5a7325){_0x395b7b=_0x5a7325;_0x339bed=0xc8;}else{_0x339bed=0xce;}_0x26d341['status'](_0x339bed);return _0x26d341[_0x2f47('0x20')](_0x2f47('0x21'),_0x2153ef+'-'+_0x395b7b+'/'+_0x5a7325)[_0x2f47('0x1c')](_0x1acfb2);}return null;};}function patchUpdates(_0x5c1410){return function(_0x371f1d){try{jsonpatch['apply'](_0x371f1d,_0x5c1410,!![]);}catch(_0x1c3817){return BPromise['reject'](_0x1c3817);}return _0x371f1d[_0x2f47('0x22')]();};}function saveUpdates(_0x29f460,_0x5b8442){return function(_0x38e225){if(_0x38e225){return _0x38e225[_0x2f47('0x23')](_0x29f460)['then'](function(_0x5fed85){return _0x5fed85;});}return null;};}function removeEntity(_0x188e26,_0x356fe3){return function(_0x3c526c){if(_0x3c526c){return _0x3c526c[_0x2f47('0x24')]()['then'](function(){var _0x18e5f8=_0x3c526c[_0x2f47('0x25')]({'plain':!![]});var _0x4e794d=_0x2f47('0x26');return db[_0x2f47('0x27')]['destroy']({'where':{'type':_0x4e794d,'resourceId':_0x18e5f8['id']}})[_0x2f47('0x28')](function(){return _0x3c526c;});})[_0x2f47('0x28')](function(){_0x188e26['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2dcb6d,_0x190d62){return function(_0x1d3b29){if(!_0x1d3b29){_0x2dcb6d['sendStatus'](0x194);}return _0x1d3b29;};}function handleError(_0x405b23,_0x4ac207){_0x4ac207=_0x4ac207||0x1f4;return function(_0x2a6fe5){logger[_0x2f47('0x29')](_0x2a6fe5[_0x2f47('0x2a')]);if(_0x2a6fe5[_0x2f47('0x2b')]){delete _0x2a6fe5[_0x2f47('0x2b')];}_0x405b23['status'](_0x4ac207)[_0x2f47('0x2c')](_0x2a6fe5);};}exports[_0x2f47('0x2d')]=function(_0x10c786,_0x11ce70){var _0x7fffb4={},_0x56c7ad={},_0x47d087={'count':0x0,'rows':[]};var _0x19a8df=_[_0x2f47('0x2e')](db[_0x2f47('0x2f')][_0x2f47('0x30')],function(_0x421794){return{'name':_0x421794[_0x2f47('0x31')],'type':_0x421794[_0x2f47('0x32')][_0x2f47('0x33')]};});_0x56c7ad[_0x2f47('0x34')]=_[_0x2f47('0x2e')](_0x19a8df,_0x2f47('0x2b'));_0x56c7ad[_0x2f47('0x35')]=_['keys'](_0x10c786[_0x2f47('0x35')]);_0x56c7ad[_0x2f47('0x36')]=_[_0x2f47('0x37')](_0x56c7ad[_0x2f47('0x34')],_0x56c7ad['query']);_0x7fffb4[_0x2f47('0x38')]=_[_0x2f47('0x37')](_0x56c7ad['model'],qs[_0x2f47('0x39')](_0x10c786[_0x2f47('0x35')][_0x2f47('0x39')]));_0x7fffb4['attributes']=_0x7fffb4[_0x2f47('0x38')][_0x2f47('0x3a')]?_0x7fffb4[_0x2f47('0x38')]:_0x56c7ad[_0x2f47('0x34')];if(!_0x10c786[_0x2f47('0x35')][_0x2f47('0x3b')]('nolimit')){_0x7fffb4[_0x2f47('0x3c')]=qs[_0x2f47('0x3c')](_0x10c786[_0x2f47('0x35')]['limit']);_0x7fffb4['offset']=qs[_0x2f47('0x1d')](_0x10c786['query'][_0x2f47('0x1d')]);}_0x7fffb4[_0x2f47('0x3d')]=qs[_0x2f47('0x3e')](_0x10c786[_0x2f47('0x35')][_0x2f47('0x3e')]);_0x7fffb4[_0x2f47('0x3f')]=qs[_0x2f47('0x36')](_[_0x2f47('0x40')](_0x10c786['query'],_0x56c7ad[_0x2f47('0x36')]),_0x19a8df);if(_0x10c786[_0x2f47('0x35')][_0x2f47('0x41')]){_0x7fffb4[_0x2f47('0x3f')]=_[_0x2f47('0x42')](_0x7fffb4[_0x2f47('0x3f')],{'$or':_[_0x2f47('0x2e')](_0x19a8df,function(_0x451898){if(_0x451898[_0x2f47('0x32')]!==_0x2f47('0x43')){var _0x548fe2={};_0x548fe2[_0x451898[_0x2f47('0x2b')]]={'$like':'%'+_0x10c786[_0x2f47('0x35')]['filter']+'%'};return _0x548fe2;}})});}_0x7fffb4=_[_0x2f47('0x42')]({},_0x7fffb4,_0x10c786[_0x2f47('0x44')]);var _0x2f7e51={'where':_0x7fffb4['where']};return db[_0x2f47('0x2f')][_0x2f47('0x1f')](_0x2f7e51)[_0x2f47('0x28')](function(_0x2116e2){_0x47d087[_0x2f47('0x1f')]=_0x2116e2;if(_0x10c786[_0x2f47('0x35')][_0x2f47('0x45')]){_0x7fffb4[_0x2f47('0x46')]=[{'all':!![]}];}return db[_0x2f47('0x2f')][_0x2f47('0x47')](_0x7fffb4);})[_0x2f47('0x28')](function(_0xb28e47){_0x47d087[_0x2f47('0x48')]=_0xb28e47;return _0x47d087;})[_0x2f47('0x28')](respondWithFilteredResult(_0x11ce70,_0x7fffb4))['catch'](handleError(_0x11ce70,null));};exports[_0x2f47('0x49')]=function(_0x2682b6,_0x106802){var _0xd671f2={'raw':!![],'where':{'id':_0x2682b6[_0x2f47('0x4a')]['id']}},_0x4e5cef={};_0x4e5cef[_0x2f47('0x34')]=_['keys'](db[_0x2f47('0x2f')][_0x2f47('0x30')]);_0x4e5cef['query']=_[_0x2f47('0x4b')](_0x2682b6[_0x2f47('0x35')]);_0x4e5cef[_0x2f47('0x36')]=_[_0x2f47('0x37')](_0x4e5cef[_0x2f47('0x34')],_0x4e5cef[_0x2f47('0x35')]);_0xd671f2[_0x2f47('0x38')]=_['intersection'](_0x4e5cef[_0x2f47('0x34')],qs[_0x2f47('0x39')](_0x2682b6[_0x2f47('0x35')][_0x2f47('0x39')]));_0xd671f2['attributes']=_0xd671f2[_0x2f47('0x38')][_0x2f47('0x3a')]?_0xd671f2['attributes']:_0x4e5cef[_0x2f47('0x34')];if(_0x2682b6[_0x2f47('0x35')][_0x2f47('0x45')]){_0xd671f2[_0x2f47('0x46')]=[{'all':!![]}];}_0xd671f2=_[_0x2f47('0x42')]({},_0xd671f2,_0x2682b6['options']);return db['CmHopperAdditionalPhone'][_0x2f47('0x4c')](_0xd671f2)[_0x2f47('0x28')](handleEntityNotFound(_0x106802,null))[_0x2f47('0x28')](respondWithResult(_0x106802,null))[_0x2f47('0x4d')](handleError(_0x106802,null));};exports[_0x2f47('0x4e')]=function(_0x51d366,_0x271e59){return db[_0x2f47('0x2f')][_0x2f47('0x4e')](_0x51d366[_0x2f47('0x4f')],{})['then'](function(_0x43ea6c){var _0x7eaffe=_0x51d366['user']['get']({'plain':!![]});if(!_0x7eaffe)throw new Error(_0x2f47('0x50'));if(_0x7eaffe['role']===_0x2f47('0x51')){var _0x2488ef=_0x43ea6c[_0x2f47('0x25')]({'plain':!![]});var _0x5cdc79=_0x2f47('0x26');return db[_0x2f47('0x52')][_0x2f47('0x4c')]({'where':{'name':_0x5cdc79,'userProfileId':_0x7eaffe[_0x2f47('0x53')]},'raw':!![]})[_0x2f47('0x28')](function(_0x14f5ca){if(_0x14f5ca&&_0x14f5ca[_0x2f47('0x54')]===0x0){return db[_0x2f47('0x27')][_0x2f47('0x4e')]({'name':_0x2488ef[_0x2f47('0x2b')],'resourceId':_0x2488ef['id'],'type':_0x14f5ca['name'],'sectionId':_0x14f5ca['id']},{})[_0x2f47('0x28')](function(){return _0x43ea6c;});}else{return _0x43ea6c;}})[_0x2f47('0x4d')](function(_0x5f3e9d){logger['error'](_0x2f47('0x55'),_0x5f3e9d);throw _0x5f3e9d;});}return _0x43ea6c;})[_0x2f47('0x28')](respondWithResult(_0x271e59,0xc9))['catch'](handleError(_0x271e59,null));};exports[_0x2f47('0x23')]=function(_0x33b176,_0x167529){if(_0x33b176[_0x2f47('0x4f')]['id']){delete _0x33b176[_0x2f47('0x4f')]['id'];}return db['CmHopperAdditionalPhone']['find']({'where':{'id':_0x33b176['params']['id']}})[_0x2f47('0x28')](handleEntityNotFound(_0x167529,null))[_0x2f47('0x28')](saveUpdates(_0x33b176[_0x2f47('0x4f')],null))[_0x2f47('0x28')](respondWithResult(_0x167529,null))['catch'](handleError(_0x167529,null));};exports[_0x2f47('0x24')]=function(_0x5e7978,_0x4fcad0){return db[_0x2f47('0x2f')][_0x2f47('0x4c')]({'where':{'id':_0x5e7978[_0x2f47('0x4a')]['id']}})['then'](handleEntityNotFound(_0x4fcad0,null))[_0x2f47('0x28')](removeEntity(_0x4fcad0,null))[_0x2f47('0x4d')](handleError(_0x4fcad0,null));};
\ No newline at end of file
+var _0xa7f8=['get','CmHopperAdditionalPhones','UserProfileResource','name','send','index','map','CmHopperAdditionalPhone','rawAttributes','fieldName','type','key','query','filters','intersection','model','attributes','length','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','include','findAll','rows','catch','show','params','keys','fields','options','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','find','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','to-csv','ejs','lodash','crypto','jsforce','desk.js','querystring','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','offset','limit','count','Content-Range','apply','reject','save','update','then','destroy'];(function(_0x2ca312,_0x564dd3){var _0xb88062=function(_0x12c7ad){while(--_0x12c7ad){_0x2ca312['push'](_0x2ca312['shift']());}};_0xb88062(++_0x564dd3);}(_0xa7f8,0x1bf));var _0x8a7f=function(_0x3f1710,_0x3877a2){_0x3f1710=_0x3f1710-0x0;var _0x528458=_0xa7f8[_0x3f1710];return _0x528458;};'use strict';var emlformat=require(_0x8a7f('0x0'));var rimraf=require(_0x8a7f('0x1'));var zipdir=require(_0x8a7f('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8a7f('0x3'));var moment=require('moment');var BPromise=require(_0x8a7f('0x4'));var Mustache=require(_0x8a7f('0x5'));var util=require(_0x8a7f('0x6'));var path=require(_0x8a7f('0x7'));var sox=require('sox');var csv=require(_0x8a7f('0x8'));var ejs=require(_0x8a7f('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8a7f('0xa'));var squel=require('squel');var crypto=require(_0x8a7f('0xb'));var jsforce=require(_0x8a7f('0xc'));var deskjs=require(_0x8a7f('0xd'));var toCsv=require(_0x8a7f('0x8'));var querystring=require(_0x8a7f('0xe'));var Papa=require('papaparse');var Redis=require(_0x8a7f('0xf'));var authService=require(_0x8a7f('0x10'));var qs=require(_0x8a7f('0x11'));var as=require(_0x8a7f('0x12'));var hardwareService=require(_0x8a7f('0x13'));var logger=require(_0x8a7f('0x14'))(_0x8a7f('0x15'));var utils=require('../../config/utils');var config=require(_0x8a7f('0x16'));var licenseUtil=require(_0x8a7f('0x17'));var db=require(_0x8a7f('0x18'))['db'];function respondWithStatusCode(_0x238803,_0x246de3){_0x246de3=_0x246de3||0xcc;return function(_0x56ee10){if(_0x56ee10){return _0x238803[_0x8a7f('0x19')](_0x246de3);}return _0x238803[_0x8a7f('0x1a')](_0x246de3)[_0x8a7f('0x1b')]();};}function respondWithResult(_0x548c2d,_0xc26843){_0xc26843=_0xc26843||0xc8;return function(_0x27062f){if(_0x27062f){return _0x548c2d[_0x8a7f('0x1a')](_0xc26843)[_0x8a7f('0x1c')](_0x27062f);}};}function respondWithFilteredResult(_0x3f9770,_0x187a90){return function(_0x1e0314){if(_0x1e0314){var _0x2d3a7c=typeof _0x187a90[_0x8a7f('0x1d')]==='undefined'&&typeof _0x187a90[_0x8a7f('0x1e')]==='undefined';var _0x363e7e=_0x1e0314[_0x8a7f('0x1f')];var _0x25992c=_0x2d3a7c?0x0:_0x187a90['offset'];var _0x2fb81c=_0x2d3a7c?_0x1e0314[_0x8a7f('0x1f')]:_0x187a90[_0x8a7f('0x1d')]+_0x187a90[_0x8a7f('0x1e')];var _0x173754;if(_0x2fb81c>=_0x363e7e){_0x2fb81c=_0x363e7e;_0x173754=0xc8;}else{_0x173754=0xce;}_0x3f9770[_0x8a7f('0x1a')](_0x173754);return _0x3f9770['set'](_0x8a7f('0x20'),_0x25992c+'-'+_0x2fb81c+'/'+_0x363e7e)[_0x8a7f('0x1c')](_0x1e0314);}return null;};}function patchUpdates(_0x2331d0){return function(_0x2cbfa6){try{jsonpatch[_0x8a7f('0x21')](_0x2cbfa6,_0x2331d0,!![]);}catch(_0x92fe7c){return BPromise[_0x8a7f('0x22')](_0x92fe7c);}return _0x2cbfa6[_0x8a7f('0x23')]();};}function saveUpdates(_0x105b64,_0x53ad74){return function(_0x5a4cb7){if(_0x5a4cb7){return _0x5a4cb7[_0x8a7f('0x24')](_0x105b64)[_0x8a7f('0x25')](function(_0x45b2c6){return _0x45b2c6;});}return null;};}function removeEntity(_0x5943be,_0x138c43){return function(_0x244c9b){if(_0x244c9b){return _0x244c9b[_0x8a7f('0x26')]()[_0x8a7f('0x25')](function(){var _0x30768f=_0x244c9b[_0x8a7f('0x27')]({'plain':!![]});var _0x18b6b6=_0x8a7f('0x28');return db[_0x8a7f('0x29')]['destroy']({'where':{'type':_0x18b6b6,'resourceId':_0x30768f['id']}})[_0x8a7f('0x25')](function(){return _0x244c9b;});})[_0x8a7f('0x25')](function(){_0x5943be['status'](0xcc)[_0x8a7f('0x1b')]();});}};}function handleEntityNotFound(_0x513c60,_0x12e5dc){return function(_0x55cf14){if(!_0x55cf14){_0x513c60[_0x8a7f('0x19')](0x194);}return _0x55cf14;};}function handleError(_0x2f70c4,_0x4030bb){_0x4030bb=_0x4030bb||0x1f4;return function(_0x1005ad){logger['error'](_0x1005ad['stack']);if(_0x1005ad[_0x8a7f('0x2a')]){delete _0x1005ad[_0x8a7f('0x2a')];}_0x2f70c4['status'](_0x4030bb)[_0x8a7f('0x2b')](_0x1005ad);};}exports[_0x8a7f('0x2c')]=function(_0x2fec55,_0x3eef8c){var _0x54969e={},_0x5349c3={},_0x27fd06={'count':0x0,'rows':[]};var _0x133f4d=_[_0x8a7f('0x2d')](db[_0x8a7f('0x2e')][_0x8a7f('0x2f')],function(_0x515c35){return{'name':_0x515c35[_0x8a7f('0x30')],'type':_0x515c35[_0x8a7f('0x31')][_0x8a7f('0x32')]};});_0x5349c3['model']=_[_0x8a7f('0x2d')](_0x133f4d,_0x8a7f('0x2a'));_0x5349c3[_0x8a7f('0x33')]=_['keys'](_0x2fec55[_0x8a7f('0x33')]);_0x5349c3[_0x8a7f('0x34')]=_[_0x8a7f('0x35')](_0x5349c3[_0x8a7f('0x36')],_0x5349c3[_0x8a7f('0x33')]);_0x54969e[_0x8a7f('0x37')]=_[_0x8a7f('0x35')](_0x5349c3['model'],qs['fields'](_0x2fec55[_0x8a7f('0x33')]['fields']));_0x54969e[_0x8a7f('0x37')]=_0x54969e[_0x8a7f('0x37')][_0x8a7f('0x38')]?_0x54969e[_0x8a7f('0x37')]:_0x5349c3['model'];if(!_0x2fec55['query']['hasOwnProperty'](_0x8a7f('0x39'))){_0x54969e['limit']=qs[_0x8a7f('0x1e')](_0x2fec55[_0x8a7f('0x33')]['limit']);_0x54969e[_0x8a7f('0x1d')]=qs[_0x8a7f('0x1d')](_0x2fec55['query']['offset']);}_0x54969e[_0x8a7f('0x3a')]=qs[_0x8a7f('0x3b')](_0x2fec55[_0x8a7f('0x33')][_0x8a7f('0x3b')]);_0x54969e['where']=qs[_0x8a7f('0x34')](_[_0x8a7f('0x3c')](_0x2fec55['query'],_0x5349c3[_0x8a7f('0x34')]),_0x133f4d);if(_0x2fec55[_0x8a7f('0x33')][_0x8a7f('0x3d')]){_0x54969e[_0x8a7f('0x3e')]=_['merge'](_0x54969e['where'],{'$or':_[_0x8a7f('0x2d')](_0x133f4d,function(_0x319ab6){if(_0x319ab6[_0x8a7f('0x31')]!==_0x8a7f('0x3f')){var _0x414dc2={};_0x414dc2[_0x319ab6[_0x8a7f('0x2a')]]={'$like':'%'+_0x2fec55[_0x8a7f('0x33')]['filter']+'%'};return _0x414dc2;}})});}_0x54969e=_[_0x8a7f('0x40')]({},_0x54969e,_0x2fec55['options']);var _0x30a639={'where':_0x54969e[_0x8a7f('0x3e')]};return db[_0x8a7f('0x2e')][_0x8a7f('0x1f')](_0x30a639)['then'](function(_0x33c456){_0x27fd06['count']=_0x33c456;if(_0x2fec55[_0x8a7f('0x33')]['includeAll']){_0x54969e[_0x8a7f('0x41')]=[{'all':!![]}];}return db[_0x8a7f('0x2e')][_0x8a7f('0x42')](_0x54969e);})[_0x8a7f('0x25')](function(_0x5bddf4){_0x27fd06[_0x8a7f('0x43')]=_0x5bddf4;return _0x27fd06;})[_0x8a7f('0x25')](respondWithFilteredResult(_0x3eef8c,_0x54969e))[_0x8a7f('0x44')](handleError(_0x3eef8c,null));};exports[_0x8a7f('0x45')]=function(_0x4581ac,_0x30410c){var _0x562e53={'raw':!![],'where':{'id':_0x4581ac[_0x8a7f('0x46')]['id']}},_0x21053d={};_0x21053d[_0x8a7f('0x36')]=_[_0x8a7f('0x47')](db['CmHopperAdditionalPhone'][_0x8a7f('0x2f')]);_0x21053d[_0x8a7f('0x33')]=_['keys'](_0x4581ac[_0x8a7f('0x33')]);_0x21053d[_0x8a7f('0x34')]=_[_0x8a7f('0x35')](_0x21053d['model'],_0x21053d['query']);_0x562e53[_0x8a7f('0x37')]=_[_0x8a7f('0x35')](_0x21053d[_0x8a7f('0x36')],qs[_0x8a7f('0x48')](_0x4581ac[_0x8a7f('0x33')][_0x8a7f('0x48')]));_0x562e53[_0x8a7f('0x37')]=_0x562e53['attributes'][_0x8a7f('0x38')]?_0x562e53[_0x8a7f('0x37')]:_0x21053d[_0x8a7f('0x36')];if(_0x4581ac[_0x8a7f('0x33')]['includeAll']){_0x562e53[_0x8a7f('0x41')]=[{'all':!![]}];}_0x562e53=_['merge']({},_0x562e53,_0x4581ac[_0x8a7f('0x49')]);return db[_0x8a7f('0x2e')]['find'](_0x562e53)[_0x8a7f('0x25')](handleEntityNotFound(_0x30410c,null))[_0x8a7f('0x25')](respondWithResult(_0x30410c,null))[_0x8a7f('0x44')](handleError(_0x30410c,null));};exports['create']=function(_0x1b5772,_0x1ace11){return db[_0x8a7f('0x2e')][_0x8a7f('0x4a')](_0x1b5772[_0x8a7f('0x4b')],{})[_0x8a7f('0x25')](function(_0xd64f27){var _0x15a4c6=_0x1b5772['user'][_0x8a7f('0x27')]({'plain':!![]});if(!_0x15a4c6)throw new Error(_0x8a7f('0x4c'));if(_0x15a4c6['role']==='user'){var _0xf801f0=_0xd64f27[_0x8a7f('0x27')]({'plain':!![]});var _0x755fa7=_0x8a7f('0x28');return db['UserProfileSection']['find']({'where':{'name':_0x755fa7,'userProfileId':_0x15a4c6[_0x8a7f('0x4d')]},'raw':!![]})[_0x8a7f('0x25')](function(_0x5909a6){if(_0x5909a6&&_0x5909a6[_0x8a7f('0x4e')]===0x0){return db[_0x8a7f('0x29')][_0x8a7f('0x4a')]({'name':_0xf801f0[_0x8a7f('0x2a')],'resourceId':_0xf801f0['id'],'type':_0x5909a6[_0x8a7f('0x2a')],'sectionId':_0x5909a6['id']},{})['then'](function(){return _0xd64f27;});}else{return _0xd64f27;}})['catch'](function(_0x5815ff){logger['error'](_0x8a7f('0x4f'),_0x5815ff);throw _0x5815ff;});}return _0xd64f27;})['then'](respondWithResult(_0x1ace11,0xc9))[_0x8a7f('0x44')](handleError(_0x1ace11,null));};exports[_0x8a7f('0x24')]=function(_0x14e329,_0xd66b33){if(_0x14e329[_0x8a7f('0x4b')]['id']){delete _0x14e329[_0x8a7f('0x4b')]['id'];}return db[_0x8a7f('0x2e')][_0x8a7f('0x50')]({'where':{'id':_0x14e329['params']['id']}})['then'](handleEntityNotFound(_0xd66b33,null))[_0x8a7f('0x25')](saveUpdates(_0x14e329[_0x8a7f('0x4b')],null))[_0x8a7f('0x25')](respondWithResult(_0xd66b33,null))[_0x8a7f('0x44')](handleError(_0xd66b33,null));};exports[_0x8a7f('0x26')]=function(_0x2b6c07,_0x466e32){return db[_0x8a7f('0x2e')][_0x8a7f('0x50')]({'where':{'id':_0x2b6c07['params']['id']}})['then'](handleEntityNotFound(_0x466e32,null))[_0x8a7f('0x25')](removeEntity(_0x466e32,null))[_0x8a7f('0x44')](handleError(_0x466e32,null));};
\ No newline at end of file
index 429f5be..ec49711 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x942a=['bluebird','request-promise','path','rimraf','../../config/environment','./cmHopperAdditionalPhone.attributes','define','CmHopperAdditionalPhone','cm_hopper_additional_phones','lodash','../../config/logger','api','moment'];(function(_0x575e50,_0xa1c92d){var _0x1057b1=function(_0x12ac8d){while(--_0x12ac8d){_0x575e50['push'](_0x575e50['shift']());}};_0x1057b1(++_0xa1c92d);}(_0x942a,0x175));var _0xa942=function(_0x361d3f,_0x3be2aa){_0x361d3f=_0x361d3f-0x0;var _0x320229=_0x942a[_0x361d3f];return _0x320229;};'use strict';var _=require(_0xa942('0x0'));var util=require('util');var logger=require(_0xa942('0x1'))(_0xa942('0x2'));var moment=require(_0xa942('0x3'));var BPromise=require(_0xa942('0x4'));var rp=require(_0xa942('0x5'));var fs=require('fs');var path=require(_0xa942('0x6'));var rimraf=require(_0xa942('0x7'));var config=require(_0xa942('0x8'));var attributes=require(_0xa942('0x9'));module['exports']=function(_0xf71030,_0x1ee3c3){return _0xf71030[_0xa942('0xa')](_0xa942('0xb'),attributes,{'tableName':_0xa942('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc734=['lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./cmHopperAdditionalPhone.attributes','exports','define','cm_hopper_additional_phones'];(function(_0x58418a,_0x3d9f06){var _0x2716bf=function(_0x36fcfd){while(--_0x36fcfd){_0x58418a['push'](_0x58418a['shift']());}};_0x2716bf(++_0x3d9f06);}(_0xc734,0x108));var _0x4c73=function(_0x8ba19a,_0x1d2b2b){_0x8ba19a=_0x8ba19a-0x0;var _0x2bd8b4=_0xc734[_0x8ba19a];return _0x2bd8b4;};'use strict';var _=require(_0x4c73('0x0'));var util=require(_0x4c73('0x1'));var logger=require(_0x4c73('0x2'))(_0x4c73('0x3'));var moment=require(_0x4c73('0x4'));var BPromise=require('bluebird');var rp=require(_0x4c73('0x5'));var fs=require('fs');var path=require(_0x4c73('0x6'));var rimraf=require(_0x4c73('0x7'));var config=require('../../config/environment');var attributes=require(_0x4c73('0x8'));module[_0x4c73('0x9')]=function(_0x3ebc20,_0x2a514d){return _0x3ebc20[_0x4c73('0xa')]('CmHopperAdditionalPhone',attributes,{'tableName':_0x4c73('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9c5ac8e..8394ac0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a49=['http','then','request\x20sent','debug','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','error','code','message','CmHopperAdditionalPhone,\x20%s,\x20%s','result','catch','VerifyAdditionalPhones','CmHopper','findOne','body','ContactId','ListId','VoiceQueueId','CampaignId','OrderBy','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','entity','dialGlobalMaxRetry','CmHopperAdditionalPhone','ASC','SwapAdditionalPhones','duration','waitTime','scheduledat','add','minutes','isNil','phone','createdAt','transaction','update','IncrementPreviewCounters','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','client'];(function(_0x300768,_0x515b0c){var _0x27bb75=function(_0x3b25c7){while(--_0x3b25c7){_0x300768['push'](_0x300768['shift']());}};_0x27bb75(++_0x515b0c);}(_0x3a49,0x1a0));var _0x93a4=function(_0x3920e7,_0x5a18af){_0x3920e7=_0x3920e7-0x0;var _0x16cf02=_0x3a49[_0x3920e7];return _0x16cf02;};'use strict';var _=require(_0x93a4('0x0'));var util=require(_0x93a4('0x1'));var moment=require('moment');var BPromise=require(_0x93a4('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x93a4('0x3'))['db'];var utils=require(_0x93a4('0x4'));var logger=require(_0x93a4('0x5'))(_0x93a4('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x93a4('0x7')][_0x93a4('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x5a0783,_0x57ec05,_0x2e8f54){return new BPromise(function(_0x51d671,_0x2dca9c){return client['request'](_0x5a0783,_0x2e8f54)[_0x93a4('0x9')](function(_0x297804){logger['info']('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x57ec05,_0x93a4('0xa'));logger[_0x93a4('0xb')](_0x93a4('0xc'),_0x57ec05,'request\x20sent',JSON[_0x93a4('0xd')](_0x297804));if(_0x297804['error']){if(_0x297804[_0x93a4('0xe')][_0x93a4('0xf')]===0x1f4){logger['error']('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x57ec05,_0x297804['error'][_0x93a4('0x10')]);return _0x2dca9c(_0x297804[_0x93a4('0xe')]['message']);}logger[_0x93a4('0xe')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x57ec05,_0x297804[_0x93a4('0xe')][_0x93a4('0x10')]);return _0x51d671(_0x297804[_0x93a4('0xe')][_0x93a4('0x10')]);}else{logger['info'](_0x93a4('0x11'),_0x57ec05,_0x93a4('0xa'));_0x51d671(_0x297804[_0x93a4('0x12')][_0x93a4('0x10')]);}})[_0x93a4('0x13')](function(_0x14811a){logger[_0x93a4('0xe')](_0x93a4('0x11'),_0x57ec05,_0x14811a);_0x2dca9c(_0x14811a);});});}exports[_0x93a4('0x14')]=function(_0x41413b){var _0x1c7aac=this;return new Promise(function(_0x34af01,_0x37786b){return db[_0x93a4('0x15')][_0x93a4('0x16')]({'raw':!![],'where':{'ContactId':_0x41413b[_0x93a4('0x17')][_0x93a4('0x18')],'ListId':_0x41413b['body'][_0x93a4('0x19')],'VoiceQueueId':_0x41413b[_0x93a4('0x17')][_0x93a4('0x1a')]===undefined?null:_0x41413b[_0x93a4('0x17')][_0x93a4('0x1a')],'CampaignId':_0x41413b[_0x93a4('0x17')][_0x93a4('0x1b')]===undefined?null:_0x41413b[_0x93a4('0x17')]['CampaignId']}})[_0x93a4('0x9')](function(_0x406790){if(_0x406790!=null){return db['CmHopperAdditionalPhone'][_0x93a4('0x16')]({'raw':!![],'where':{'CmHopperId':_0x406790['id'],'OrderBy':{'$gt':_0x406790[_0x93a4('0x1c')]}},'order':[[_0x93a4('0x1c'),'ASC']]})[_0x93a4('0x9')](function(_0x41aaba){var _0xd9b7ff=0x0;if(_0x41aaba){if(_0x41aaba[_0x93a4('0x1d')]+_0x41aaba[_0x93a4('0x1e')]+_0x41aaba[_0x93a4('0x1f')]+_0x41aaba[_0x93a4('0x20')]+_0x41aaba[_0x93a4('0x21')]+_0x41aaba[_0x93a4('0x22')]+_0x41aaba[_0x93a4('0x23')]+_0x41aaba[_0x93a4('0x24')]<_0x41413b[_0x93a4('0x25')][_0x93a4('0x26')])_0xd9b7ff=0x1;_0x34af01({'additional':_0xd9b7ff});}else{return db[_0x93a4('0x27')][_0x93a4('0x16')]({'raw':!![],'where':{'CmHopperId':_0x406790['id']},'order':[[_0x93a4('0x1c'),_0x93a4('0x28')]]})['then'](function(_0x2da8f4){var _0x40683a=0x0;if(_0x2da8f4){if(_0x2da8f4[_0x93a4('0x1d')]+_0x2da8f4['countcongestionretry']+_0x2da8f4[_0x93a4('0x1f')]+_0x2da8f4[_0x93a4('0x20')]+_0x2da8f4[_0x93a4('0x21')]+_0x2da8f4[_0x93a4('0x22')]+_0x2da8f4[_0x93a4('0x23')]+_0x2da8f4[_0x93a4('0x24')]<_0x41413b[_0x93a4('0x25')]['dialGlobalMaxRetry'])_0x40683a=0x1;_0x34af01({'additional':_0x40683a});}else{_0x34af01({'additional':0x0});}})[_0x93a4('0x13')](function(_0x156bf5){logger[_0x93a4('0xe')](_0x93a4('0x14'),_0x156bf5[_0x93a4('0x10')]);_0x37786b(_0x1c7aac[_0x93a4('0xe')](0x1f4,_0x156bf5[_0x93a4('0x10')]));});}})[_0x93a4('0x13')](function(_0x5c493a){logger[_0x93a4('0xe')]('VerifyAdditionalPhones',_0x5c493a[_0x93a4('0x10')]);_0x37786b(_0x1c7aac[_0x93a4('0xe')](0x1f4,_0x5c493a['message']));});}else _0x34af01({'additional':0x0});});});};exports[_0x93a4('0x29')]=function(_0x165642){var _0x46e6c9=this;return new Promise(function(_0x1604c4,_0x18cb47){return db[_0x93a4('0x15')][_0x93a4('0x16')]({'raw':!![],'where':{'ContactId':_0x165642[_0x93a4('0x17')][_0x93a4('0x18')],'ListId':_0x165642[_0x93a4('0x17')][_0x93a4('0x19')],'VoiceQueueId':_0x165642[_0x93a4('0x17')][_0x93a4('0x1a')]===undefined?null:_0x165642[_0x93a4('0x17')][_0x93a4('0x1a')],'CampaignId':_0x165642[_0x93a4('0x17')][_0x93a4('0x1b')]===undefined?null:_0x165642[_0x93a4('0x17')]['CampaignId']}})[_0x93a4('0x9')](function(_0x1dbf67){if(_0x1dbf67!=null){return db[_0x93a4('0x27')][_0x93a4('0x16')]({'raw':!![],'where':{'CmHopperId':_0x1dbf67['id'],'OrderBy':{'$gte':_0x1dbf67['OrderBy']}},'order':[[_0x93a4('0x1c'),_0x93a4('0x28')]]})['then'](function(_0x3dd1e7){if(_0x3dd1e7)return activateAdditionalPhone(_0x1dbf67,_0x165642[_0x93a4('0x17')],_0x3dd1e7,_0x165642[_0x93a4('0x2a')],_0x165642[_0x93a4('0x2b')])[_0x93a4('0x9')](function(_0x427200){_0x1604c4(_0x427200);});else{return db[_0x93a4('0x27')][_0x93a4('0x16')]({'raw':!![],'where':{'CmHopperId':_0x1dbf67['id']},'order':[[_0x93a4('0x1c'),_0x93a4('0x28')]]})['then'](function(_0x2cc287){if(_0x2cc287)return activateAdditionalPhone(_0x1dbf67,_0x165642[_0x93a4('0x17')],_0x2cc287,_0x165642['duration'],_0x165642[_0x93a4('0x2b')])[_0x93a4('0x9')](function(_0x2b35eb){_0x1604c4(_0x2b35eb);});else{_0x1604c4({'id':_0x1dbf67['id'],'phone':''});}})['catch'](function(_0x31c20f){logger[_0x93a4('0xe')](_0x93a4('0x14'),_0x31c20f[_0x93a4('0x10')]);_0x18cb47(_0x46e6c9['error'](0x1f4,_0x31c20f['message']));});}})[_0x93a4('0x13')](function(_0x205df6){logger[_0x93a4('0xe')](_0x93a4('0x14'),_0x205df6[_0x93a4('0x10')]);_0x18cb47(_0x46e6c9[_0x93a4('0xe')](0x1f4,_0x205df6['message']));});}else _0x1604c4(0x1);});});};function activateAdditionalPhone(_0x5e799b,_0x2030a3,_0x3039cc,_0x303491,_0xb9d96d){return new Promise(function(_0x4416e9,_0x2689a4){var _0xb580f7;if(_['isNil'](_0x3039cc[_0x93a4('0x2c')])){_0x3039cc[_0x93a4('0x2c')]=moment();}if(moment()>moment(_0x3039cc[_0x93a4('0x2c')])){_0xb580f7=moment()[_0x93a4('0x2d')](_0xb9d96d||0x3,_0x93a4('0x2e'));}else{if(_0x3039cc[_0x93a4('0x1c')]==0x0){_0xb580f7=moment(_0x3039cc[_0x93a4('0x2c')]);}else{_0xb580f7=moment()[_0x93a4('0x2d')](_0xb9d96d||0x3,_0x93a4('0x2e'));}}if(_[_0x93a4('0x2f')](_0xb580f7)){_0xb580f7=moment()['add'](_0xb9d96d||0x3,_0x93a4('0x2e'));}var _0x5b87e2={'phone':_0x5e799b[_0x93a4('0x30')],'active':0x0,'OrderBy':_[_0x93a4('0x2f')](_0x5e799b[_0x93a4('0x1c')])?0x0:_0x5e799b[_0x93a4('0x1c')],'scheduledat':moment()[_0x93a4('0x2d')](_0x303491||0x1,_0x93a4('0x2e')),'countbusyretry':_0x2030a3['countbusyretry'],'countcongestionretry':_0x2030a3[_0x93a4('0x1e')],'countnoanswerretry':_0x2030a3[_0x93a4('0x1f')],'countnosuchnumberretry':_0x2030a3[_0x93a4('0x20')],'countdropretry':_0x2030a3['countdropretry'],'countabandonedretry':_0x2030a3['countabandonedretry'],'countmachineretry':_0x2030a3[_0x93a4('0x23')],'countagentrejectretry':_0x2030a3[_0x93a4('0x24')],'createdAt':_0x2030a3['createdAt'],'updatedAt':_0x2030a3['updatedAt']};var _0x218e19={'CmHopperId':_0x5e799b['id'],'phone':_0x3039cc['phone'],'active':0x0,'OrderBy':_[_0x93a4('0x2f')](_0x3039cc[_0x93a4('0x1c')])?0x0:_0x3039cc[_0x93a4('0x1c')],'scheduledat':_0xb580f7,'countbusyretry':_0x3039cc[_0x93a4('0x1d')],'countcongestionretry':_0x3039cc[_0x93a4('0x1e')],'countnoanswerretry':_0x3039cc[_0x93a4('0x1f')],'countnosuchnumberretry':_0x3039cc[_0x93a4('0x20')],'countdropretry':_0x3039cc[_0x93a4('0x21')],'countabandonedretry':_0x3039cc[_0x93a4('0x22')],'countmachineretry':_0x3039cc[_0x93a4('0x23')],'countagentrejectretry':_0x3039cc['countagentrejectretry'],'createdAt':_0x3039cc[_0x93a4('0x31')],'updatedAt':_0x3039cc['updatedAt']};return db['sequelize'][_0x93a4('0x32')](function(_0x1cdafa){return db[_0x93a4('0x27')]['update'](_0x5b87e2,{'where':{'id':_0x3039cc['id']}},{'transaction':_0x1cdafa})['then'](function(){return db[_0x93a4('0x15')][_0x93a4('0x33')](_0x218e19,{'where':{'id':_0x5e799b['id']}},{'transaction':_0x1cdafa});});})[_0x93a4('0x9')](function(_0x5e32b7){_0x4416e9({'id':_0x5e799b['id'],'phone':_0x3039cc['phone']});})[_0x93a4('0x13')](function(_0x5c1313){logger[_0x93a4('0xe')]('activateAdditionalPhone',_0x5c1313[_0x93a4('0x10')]);_0x2689a4({'error':_0x5c1313[_0x93a4('0x10')]});});});}exports[_0x93a4('0x34')]=function(_0x1fdec){var _0x1340ad=this;return new Promise(function(_0x4d73b1,_0x99e616){return db[_0x93a4('0x15')][_0x93a4('0x33')](_0x1fdec[_0x93a4('0x17')]['field'],{'where':{'id':_0x1fdec[_0x93a4('0x17')]['id']}})[_0x93a4('0x9')](function(_0x26628c){_0x4d73b1(_0x26628c);})[_0x93a4('0x13')](function(_0x317dec){logger[_0x93a4('0xe')](_0x93a4('0x34'),_0x317dec['message']);_0x99e616(_0x1340ad[_0x93a4('0xe')](0x1f4,_0x317dec['message']));});});};
\ No newline at end of file
+var _0x1ddf=['transaction','update','activateAdditionalPhone','IncrementPreviewCounters','field','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','CmHopperAdditionalPhone,\x20%s,\x20%s','request\x20sent','CmHopperAdditionalPhone,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','catch','VerifyAdditionalPhones','findOne','body','ContactId','ListId','VoiceQueueId','CampaignId','CmHopperAdditionalPhone','OrderBy','ASC','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countmachineretry','countagentrejectretry','entity','dialGlobalMaxRetry','countabandonedretry','SwapAdditionalPhones','CmHopper','duration','waitTime','isNil','scheduledat','add','minutes','phone','updatedAt','createdAt','sequelize'];(function(_0x5988cd,_0x267f13){var _0x2c58c6=function(_0x1137eb){while(--_0x1137eb){_0x5988cd['push'](_0x5988cd['shift']());}};_0x2c58c6(++_0x267f13);}(_0x1ddf,0x1a2));var _0xf1dd=function(_0x486008,_0x2b2d05){_0x486008=_0x486008-0x0;var _0x2fefc7=_0x1ddf[_0x486008];return _0x2fefc7;};'use strict';var _=require('lodash');var util=require(_0xf1dd('0x0'));var moment=require(_0xf1dd('0x1'));var BPromise=require(_0xf1dd('0x2'));var rs=require(_0xf1dd('0x3'));var fs=require('fs');var Redis=require(_0xf1dd('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf1dd('0x5'));var logger=require(_0xf1dd('0x6'))(_0xf1dd('0x7'));var config=require(_0xf1dd('0x8'));var jayson=require(_0xf1dd('0x9'));var client=jayson['client'][_0xf1dd('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d5e96,_0x12f34c,_0x892764){return new BPromise(function(_0x528144,_0x16d500){return client[_0xf1dd('0xb')](_0x1d5e96,_0x892764)[_0xf1dd('0xc')](function(_0x1a5dc6){logger['info'](_0xf1dd('0xd'),_0x12f34c,_0xf1dd('0xe'));logger['debug'](_0xf1dd('0xf'),_0x12f34c,_0xf1dd('0xe'),JSON[_0xf1dd('0x10')](_0x1a5dc6));if(_0x1a5dc6[_0xf1dd('0x11')]){if(_0x1a5dc6[_0xf1dd('0x11')]['code']===0x1f4){logger[_0xf1dd('0x11')]('CmHopperAdditionalPhone,\x20%s,\x20%s',_0x12f34c,_0x1a5dc6[_0xf1dd('0x11')][_0xf1dd('0x12')]);return _0x16d500(_0x1a5dc6[_0xf1dd('0x11')][_0xf1dd('0x12')]);}logger[_0xf1dd('0x11')](_0xf1dd('0xd'),_0x12f34c,_0x1a5dc6[_0xf1dd('0x11')][_0xf1dd('0x12')]);return _0x528144(_0x1a5dc6[_0xf1dd('0x11')]['message']);}else{logger[_0xf1dd('0x13')](_0xf1dd('0xd'),_0x12f34c,'request\x20sent');_0x528144(_0x1a5dc6[_0xf1dd('0x14')][_0xf1dd('0x12')]);}})[_0xf1dd('0x15')](function(_0x44f9bd){logger['error'](_0xf1dd('0xd'),_0x12f34c,_0x44f9bd);_0x16d500(_0x44f9bd);});});}exports[_0xf1dd('0x16')]=function(_0x4815dc){var _0x4d670b=this;return new Promise(function(_0x3a097b,_0x5a2ab9){return db['CmHopper'][_0xf1dd('0x17')]({'raw':!![],'where':{'ContactId':_0x4815dc[_0xf1dd('0x18')][_0xf1dd('0x19')],'ListId':_0x4815dc[_0xf1dd('0x18')][_0xf1dd('0x1a')],'VoiceQueueId':_0x4815dc[_0xf1dd('0x18')][_0xf1dd('0x1b')]===undefined?null:_0x4815dc[_0xf1dd('0x18')][_0xf1dd('0x1b')],'CampaignId':_0x4815dc[_0xf1dd('0x18')][_0xf1dd('0x1c')]===undefined?null:_0x4815dc[_0xf1dd('0x18')][_0xf1dd('0x1c')]}})[_0xf1dd('0xc')](function(_0x42c09b){if(_0x42c09b!=null){return db[_0xf1dd('0x1d')][_0xf1dd('0x17')]({'raw':!![],'where':{'CmHopperId':_0x42c09b['id'],'OrderBy':{'$gt':_0x42c09b[_0xf1dd('0x1e')]}},'order':[['OrderBy',_0xf1dd('0x1f')]]})[_0xf1dd('0xc')](function(_0x2df160){var _0x3ac59a=0x0;if(_0x2df160){if(_0x2df160[_0xf1dd('0x20')]+_0x2df160[_0xf1dd('0x21')]+_0x2df160[_0xf1dd('0x22')]+_0x2df160[_0xf1dd('0x23')]+_0x2df160[_0xf1dd('0x24')]+_0x2df160['countabandonedretry']+_0x2df160[_0xf1dd('0x25')]+_0x2df160[_0xf1dd('0x26')]<_0x4815dc[_0xf1dd('0x27')][_0xf1dd('0x28')])_0x3ac59a=0x1;_0x3a097b({'additional':_0x3ac59a});}else{return db[_0xf1dd('0x1d')]['findOne']({'raw':!![],'where':{'CmHopperId':_0x42c09b['id']},'order':[['OrderBy',_0xf1dd('0x1f')]]})[_0xf1dd('0xc')](function(_0x2c8459){var _0x450e4b=0x0;if(_0x2c8459){if(_0x2c8459[_0xf1dd('0x20')]+_0x2c8459[_0xf1dd('0x21')]+_0x2c8459[_0xf1dd('0x22')]+_0x2c8459['countnosuchnumberretry']+_0x2c8459[_0xf1dd('0x24')]+_0x2c8459[_0xf1dd('0x29')]+_0x2c8459[_0xf1dd('0x25')]+_0x2c8459[_0xf1dd('0x26')]<_0x4815dc['entity']['dialGlobalMaxRetry'])_0x450e4b=0x1;_0x3a097b({'additional':_0x450e4b});}else{_0x3a097b({'additional':0x0});}})[_0xf1dd('0x15')](function(_0x71562f){logger[_0xf1dd('0x11')](_0xf1dd('0x16'),_0x71562f[_0xf1dd('0x12')]);_0x5a2ab9(_0x4d670b[_0xf1dd('0x11')](0x1f4,_0x71562f[_0xf1dd('0x12')]));});}})[_0xf1dd('0x15')](function(_0x111472){logger[_0xf1dd('0x11')](_0xf1dd('0x16'),_0x111472[_0xf1dd('0x12')]);_0x5a2ab9(_0x4d670b['error'](0x1f4,_0x111472[_0xf1dd('0x12')]));});}else _0x3a097b({'additional':0x0});});});};exports[_0xf1dd('0x2a')]=function(_0x189e49){var _0x265407=this;return new Promise(function(_0x374f7f,_0x3b05b1){return db[_0xf1dd('0x2b')][_0xf1dd('0x17')]({'raw':!![],'where':{'ContactId':_0x189e49[_0xf1dd('0x18')][_0xf1dd('0x19')],'ListId':_0x189e49[_0xf1dd('0x18')]['ListId'],'VoiceQueueId':_0x189e49[_0xf1dd('0x18')]['VoiceQueueId']===undefined?null:_0x189e49['body'][_0xf1dd('0x1b')],'CampaignId':_0x189e49[_0xf1dd('0x18')][_0xf1dd('0x1c')]===undefined?null:_0x189e49['body'][_0xf1dd('0x1c')]}})[_0xf1dd('0xc')](function(_0x5c3297){if(_0x5c3297!=null){return db[_0xf1dd('0x1d')][_0xf1dd('0x17')]({'raw':!![],'where':{'CmHopperId':_0x5c3297['id'],'OrderBy':{'$gte':_0x5c3297[_0xf1dd('0x1e')]}},'order':[[_0xf1dd('0x1e'),_0xf1dd('0x1f')]]})['then'](function(_0x295893){if(_0x295893)return activateAdditionalPhone(_0x5c3297,_0x189e49[_0xf1dd('0x18')],_0x295893,_0x189e49[_0xf1dd('0x2c')],_0x189e49[_0xf1dd('0x2d')])[_0xf1dd('0xc')](function(_0x3aa222){_0x374f7f(_0x3aa222);});else{return db['CmHopperAdditionalPhone'][_0xf1dd('0x17')]({'raw':!![],'where':{'CmHopperId':_0x5c3297['id']},'order':[[_0xf1dd('0x1e'),_0xf1dd('0x1f')]]})[_0xf1dd('0xc')](function(_0x60643b){if(_0x60643b)return activateAdditionalPhone(_0x5c3297,_0x189e49[_0xf1dd('0x18')],_0x60643b,_0x189e49[_0xf1dd('0x2c')],_0x189e49[_0xf1dd('0x2d')])[_0xf1dd('0xc')](function(_0x4fa117){_0x374f7f(_0x4fa117);});else{_0x374f7f({'id':_0x5c3297['id'],'phone':''});}})[_0xf1dd('0x15')](function(_0x16c39d){logger[_0xf1dd('0x11')](_0xf1dd('0x16'),_0x16c39d[_0xf1dd('0x12')]);_0x3b05b1(_0x265407['error'](0x1f4,_0x16c39d['message']));});}})[_0xf1dd('0x15')](function(_0x1c3305){logger[_0xf1dd('0x11')](_0xf1dd('0x16'),_0x1c3305[_0xf1dd('0x12')]);_0x3b05b1(_0x265407['error'](0x1f4,_0x1c3305['message']));});}else _0x374f7f(0x1);});});};function activateAdditionalPhone(_0x3285cc,_0x27ba14,_0x44607f,_0x5058fd,_0x4a5d33){return new Promise(function(_0x4f67c0,_0x11eefd){var _0x5ab69b;if(_[_0xf1dd('0x2e')](_0x44607f[_0xf1dd('0x2f')])){_0x44607f[_0xf1dd('0x2f')]=moment();}if(moment()>moment(_0x44607f[_0xf1dd('0x2f')])){_0x5ab69b=moment()[_0xf1dd('0x30')](_0x4a5d33||0x3,'minutes');}else{if(_0x44607f[_0xf1dd('0x1e')]==0x0){_0x5ab69b=moment(_0x44607f['scheduledat']);}else{_0x5ab69b=moment()['add'](_0x4a5d33||0x3,_0xf1dd('0x31'));}}if(_['isNil'](_0x5ab69b)){_0x5ab69b=moment()[_0xf1dd('0x30')](_0x4a5d33||0x3,'minutes');}var _0x19140a={'phone':_0x3285cc[_0xf1dd('0x32')],'active':0x0,'OrderBy':_['isNil'](_0x3285cc[_0xf1dd('0x1e')])?0x0:_0x3285cc[_0xf1dd('0x1e')],'scheduledat':moment()['add'](_0x5058fd||0x1,'minutes'),'countbusyretry':_0x27ba14['countbusyretry'],'countcongestionretry':_0x27ba14[_0xf1dd('0x21')],'countnoanswerretry':_0x27ba14[_0xf1dd('0x22')],'countnosuchnumberretry':_0x27ba14['countnosuchnumberretry'],'countdropretry':_0x27ba14[_0xf1dd('0x24')],'countabandonedretry':_0x27ba14[_0xf1dd('0x29')],'countmachineretry':_0x27ba14[_0xf1dd('0x25')],'countagentrejectretry':_0x27ba14[_0xf1dd('0x26')],'createdAt':_0x27ba14['createdAt'],'updatedAt':_0x27ba14[_0xf1dd('0x33')]};var _0x312063={'CmHopperId':_0x3285cc['id'],'phone':_0x44607f[_0xf1dd('0x32')],'active':0x0,'OrderBy':_[_0xf1dd('0x2e')](_0x44607f['OrderBy'])?0x0:_0x44607f[_0xf1dd('0x1e')],'scheduledat':_0x5ab69b,'countbusyretry':_0x44607f[_0xf1dd('0x20')],'countcongestionretry':_0x44607f[_0xf1dd('0x21')],'countnoanswerretry':_0x44607f[_0xf1dd('0x22')],'countnosuchnumberretry':_0x44607f[_0xf1dd('0x23')],'countdropretry':_0x44607f[_0xf1dd('0x24')],'countabandonedretry':_0x44607f[_0xf1dd('0x29')],'countmachineretry':_0x44607f[_0xf1dd('0x25')],'countagentrejectretry':_0x44607f[_0xf1dd('0x26')],'createdAt':_0x44607f[_0xf1dd('0x34')],'updatedAt':_0x44607f[_0xf1dd('0x33')]};return db[_0xf1dd('0x35')][_0xf1dd('0x36')](function(_0x4ed3ef){return db[_0xf1dd('0x1d')][_0xf1dd('0x37')](_0x19140a,{'where':{'id':_0x44607f['id']}},{'transaction':_0x4ed3ef})[_0xf1dd('0xc')](function(){return db['CmHopper'][_0xf1dd('0x37')](_0x312063,{'where':{'id':_0x3285cc['id']}},{'transaction':_0x4ed3ef});});})[_0xf1dd('0xc')](function(_0x4fd03c){_0x4f67c0({'id':_0x3285cc['id'],'phone':_0x44607f[_0xf1dd('0x32')]});})[_0xf1dd('0x15')](function(_0x55d719){logger[_0xf1dd('0x11')](_0xf1dd('0x38'),_0x55d719[_0xf1dd('0x12')]);_0x11eefd({'error':_0x55d719[_0xf1dd('0x12')]});});});}exports[_0xf1dd('0x39')]=function(_0x42f56b){var _0x29e103=this;return new Promise(function(_0x2fc9be,_0x4983f4){return db[_0xf1dd('0x2b')]['update'](_0x42f56b[_0xf1dd('0x18')][_0xf1dd('0x3a')],{'where':{'id':_0x42f56b[_0xf1dd('0x18')]['id']}})[_0xf1dd('0xc')](function(_0x1738b3){_0x2fc9be(_0x1738b3);})[_0xf1dd('0x15')](function(_0x4c364f){logger[_0xf1dd('0x11')](_0xf1dd('0x39'),_0x4c364f[_0xf1dd('0x12')]);_0x4983f4(_0x29e103['error'](0x1f4,_0x4c364f[_0xf1dd('0x12')]));});});};
\ No newline at end of file
index 3f8586f..0f11776 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdf6=['util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperAdditionalPhone.controller','get','index','/:id','show','post','isAuthenticated','put','update','delete','exports','multer'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xcdf6,0xb3));var _0x6cdf=function(_0x564781,_0x396eae){_0x564781=_0x564781-0x0;var _0x2ce20d=_0xcdf6[_0x564781];return _0x2ce20d;};'use strict';var multer=require(_0x6cdf('0x0'));var util=require(_0x6cdf('0x1'));var path=require(_0x6cdf('0x2'));var timeout=require('connect-timeout');var express=require(_0x6cdf('0x3'));var router=express[_0x6cdf('0x4')]();var fs_extra=require(_0x6cdf('0x5'));var auth=require(_0x6cdf('0x6'));var interaction=require(_0x6cdf('0x7'));var config=require(_0x6cdf('0x8'));var controller=require(_0x6cdf('0x9'));router[_0x6cdf('0xa')]('/',auth['isAuthenticated'](),controller[_0x6cdf('0xb')]);router[_0x6cdf('0xa')](_0x6cdf('0xc'),auth['isAuthenticated'](),controller[_0x6cdf('0xd')]);router[_0x6cdf('0xe')]('/',auth[_0x6cdf('0xf')](),controller['create']);router[_0x6cdf('0x10')](_0x6cdf('0xc'),auth['isAuthenticated'](),controller[_0x6cdf('0x11')]);router[_0x6cdf('0x12')](_0x6cdf('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0x6cdf('0x13')]=router;
\ No newline at end of file
+var _0x799f=['connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperAdditionalPhone.controller','get','isAuthenticated','index','/:id','post','create','put','destroy','exports','path'];(function(_0x1abeb2,_0x79f462){var _0x48da20=function(_0x42a90b){while(--_0x42a90b){_0x1abeb2['push'](_0x1abeb2['shift']());}};_0x48da20(++_0x79f462);}(_0x799f,0x1cf));var _0xf799=function(_0x4e326f,_0xc03385){_0x4e326f=_0x4e326f-0x0;var _0x4596d4=_0x799f[_0x4e326f];return _0x4596d4;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xf799('0x0'));var timeout=require(_0xf799('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xf799('0x2'));var auth=require(_0xf799('0x3'));var interaction=require(_0xf799('0x4'));var config=require(_0xf799('0x5'));var controller=require(_0xf799('0x6'));router[_0xf799('0x7')]('/',auth[_0xf799('0x8')](),controller[_0xf799('0x9')]);router[_0xf799('0x7')](_0xf799('0xa'),auth['isAuthenticated'](),controller['show']);router[_0xf799('0xb')]('/',auth[_0xf799('0x8')](),controller[_0xf799('0xc')]);router[_0xf799('0xd')](_0xf799('0xa'),auth[_0xf799('0x8')](),controller['update']);router['delete'](_0xf799('0xa'),auth[_0xf799('0x8')](),controller[_0xf799('0xe')]);module[_0xf799('0xf')]=router;
\ No newline at end of file
index bcddbe5..f20140f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b57=['contactListQueue','INTEGER','moment','sequelize','exports','STRING'];(function(_0x1f9f5f,_0x509fb7){var _0x51d649=function(_0x4a5285){while(--_0x4a5285){_0x1f9f5f['push'](_0x1f9f5f['shift']());}};_0x51d649(++_0x509fb7);}(_0x4b57,0xaa));var _0x74b5=function(_0xb3b452,_0x582e8e){_0xb3b452=_0xb3b452-0x0;var _0x238983=_0x4b57[_0xb3b452];return _0x238983;};'use strict';var moment=require(_0x74b5('0x0'));var Sequelize=require(_0x74b5('0x1'));module[_0x74b5('0x2')]={'phone':{'type':Sequelize[_0x74b5('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x74b5('0x4')},'ListId':{'type':Sequelize[_0x74b5('0x5')],'unique':_0x74b5('0x4')},'VoiceQueueId':{'type':Sequelize[_0x74b5('0x5')],'unique':_0x74b5('0x4')}};
\ No newline at end of file
+var _0x4c60=['exports','STRING','contactListQueue','INTEGER','moment','sequelize'];(function(_0x26eb44,_0xa701be){var _0x1c1c23=function(_0x38775d){while(--_0x38775d){_0x26eb44['push'](_0x26eb44['shift']());}};_0x1c1c23(++_0xa701be);}(_0x4c60,0x166));var _0x04c6=function(_0x525ae6,_0x155a91){_0x525ae6=_0x525ae6-0x0;var _0x1f23c6=_0x4c60[_0x525ae6];return _0x1f23c6;};'use strict';var moment=require(_0x04c6('0x0'));var Sequelize=require(_0x04c6('0x1'));module[_0x04c6('0x2')]={'phone':{'type':Sequelize[_0x04c6('0x3')],'allowNull':![]},'ContactId':{'type':Sequelize['INTEGER'],'unique':_0x04c6('0x4')},'ListId':{'type':Sequelize['INTEGER'],'unique':'contactListQueue'},'VoiceQueueId':{'type':Sequelize[_0x04c6('0x5')],'unique':_0x04c6('0x4')}};
\ No newline at end of file
index cb98632..d44ab96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c4c=['describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','sendStatus','status','end','json','offset','limit','undefined','count','apply','reject','save','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','CmHopperBlack','includeAll','findAll','rows','catch','params','include','update','body','find'];(function(_0x288928,_0x44b822){var _0x47a92c=function(_0x87c62d){while(--_0x87c62d){_0x288928['push'](_0x288928['shift']());}};_0x47a92c(++_0x44b822);}(_0x1c4c,0x129));var _0xc1c4=function(_0x3a94e1,_0x22e4fd){_0x3a94e1=_0x3a94e1-0x0;var _0x6a09d5=_0x1c4c[_0x3a94e1];return _0x6a09d5;};'use strict';var emlformat=require(_0xc1c4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc1c4('0x1'));var jsonpatch=require(_0xc1c4('0x2'));var rp=require(_0xc1c4('0x3'));var moment=require(_0xc1c4('0x4'));var BPromise=require(_0xc1c4('0x5'));var Mustache=require(_0xc1c4('0x6'));var util=require(_0xc1c4('0x7'));var path=require(_0xc1c4('0x8'));var sox=require(_0xc1c4('0x9'));var csv=require(_0xc1c4('0xa'));var ejs=require(_0xc1c4('0xb'));var fs=require('fs');var fs_extra=require(_0xc1c4('0xc'));var _=require(_0xc1c4('0xd'));var squel=require(_0xc1c4('0xe'));var crypto=require('crypto');var jsforce=require(_0xc1c4('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xc1c4('0xa'));var querystring=require('querystring');var Papa=require(_0xc1c4('0x10'));var Redis=require(_0xc1c4('0x11'));var authService=require(_0xc1c4('0x12'));var qs=require(_0xc1c4('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc1c4('0x14'));var logger=require(_0xc1c4('0x15'))('api');var utils=require(_0xc1c4('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5f10e0,_0x9741e2){_0x9741e2=_0x9741e2||0xcc;return function(_0x5af7a5){if(_0x5af7a5){return _0x5f10e0[_0xc1c4('0x17')](_0x9741e2);}return _0x5f10e0[_0xc1c4('0x18')](_0x9741e2)[_0xc1c4('0x19')]();};}function respondWithResult(_0x3b405c,_0x26e545){_0x26e545=_0x26e545||0xc8;return function(_0x37c0b0){if(_0x37c0b0){return _0x3b405c[_0xc1c4('0x18')](_0x26e545)[_0xc1c4('0x1a')](_0x37c0b0);}};}function respondWithFilteredResult(_0xbdbd35,_0x9acb97){return function(_0x5a7bca){if(_0x5a7bca){var _0x1e722c=typeof _0x9acb97[_0xc1c4('0x1b')]==='undefined'&&typeof _0x9acb97[_0xc1c4('0x1c')]===_0xc1c4('0x1d');var _0xdd8845=_0x5a7bca[_0xc1c4('0x1e')];var _0x1821f4=_0x1e722c?0x0:_0x9acb97[_0xc1c4('0x1b')];var _0x3bcb52=_0x1e722c?_0x5a7bca[_0xc1c4('0x1e')]:_0x9acb97[_0xc1c4('0x1b')]+_0x9acb97['limit'];var _0x5d871b;if(_0x3bcb52>=_0xdd8845){_0x3bcb52=_0xdd8845;_0x5d871b=0xc8;}else{_0x5d871b=0xce;}_0xbdbd35[_0xc1c4('0x18')](_0x5d871b);return _0xbdbd35['set']('Content-Range',_0x1821f4+'-'+_0x3bcb52+'/'+_0xdd8845)[_0xc1c4('0x1a')](_0x5a7bca);}return null;};}function patchUpdates(_0x79dfd1){return function(_0x169f07){try{jsonpatch[_0xc1c4('0x1f')](_0x169f07,_0x79dfd1,!![]);}catch(_0x26de8d){return BPromise[_0xc1c4('0x20')](_0x26de8d);}return _0x169f07[_0xc1c4('0x21')]();};}function saveUpdates(_0x285926,_0x3a1438){return function(_0xbd447b){if(_0xbd447b){return _0xbd447b['update'](_0x285926)[_0xc1c4('0x22')](function(_0x5c98d2){return _0x5c98d2;});}return null;};}function removeEntity(_0x18d971,_0x360cc7){return function(_0x18b079){if(_0x18b079){return _0x18b079[_0xc1c4('0x23')]()[_0xc1c4('0x22')](function(){_0x18d971['status'](0xcc)[_0xc1c4('0x19')]();});}};}function handleEntityNotFound(_0x4ddcaa,_0x3e3a79){return function(_0x1dddf6){if(!_0x1dddf6){_0x4ddcaa[_0xc1c4('0x17')](0x194);}return _0x1dddf6;};}function handleError(_0x4579a8,_0x50868e){_0x50868e=_0x50868e||0x1f4;return function(_0x252f7a){logger[_0xc1c4('0x24')](_0x252f7a[_0xc1c4('0x25')]);if(_0x252f7a['name']){delete _0x252f7a[_0xc1c4('0x26')];}_0x4579a8[_0xc1c4('0x18')](_0x50868e)[_0xc1c4('0x27')](_0x252f7a);};}exports[_0xc1c4('0x28')]=function(_0x2ae2e2,_0x324a77){var _0x4a9b6c={},_0x54761f={},_0x367703={'count':0x0,'rows':[]};var _0x4cda80=_[_0xc1c4('0x29')](db['CmHopperBlack'][_0xc1c4('0x2a')],function(_0x49d7ff){return{'name':_0x49d7ff[_0xc1c4('0x2b')],'type':_0x49d7ff['type'][_0xc1c4('0x2c')]};});_0x54761f[_0xc1c4('0x2d')]=_[_0xc1c4('0x29')](_0x4cda80,_0xc1c4('0x26'));_0x54761f[_0xc1c4('0x2e')]=_[_0xc1c4('0x2f')](_0x2ae2e2[_0xc1c4('0x2e')]);_0x54761f[_0xc1c4('0x30')]=_[_0xc1c4('0x31')](_0x54761f['model'],_0x54761f[_0xc1c4('0x2e')]);_0x4a9b6c[_0xc1c4('0x32')]=_[_0xc1c4('0x31')](_0x54761f[_0xc1c4('0x2d')],qs[_0xc1c4('0x33')](_0x2ae2e2['query'][_0xc1c4('0x33')]));_0x4a9b6c['attributes']=_0x4a9b6c[_0xc1c4('0x32')][_0xc1c4('0x34')]?_0x4a9b6c[_0xc1c4('0x32')]:_0x54761f[_0xc1c4('0x2d')];if(!_0x2ae2e2[_0xc1c4('0x2e')][_0xc1c4('0x35')](_0xc1c4('0x36'))){_0x4a9b6c[_0xc1c4('0x1c')]=qs[_0xc1c4('0x1c')](_0x2ae2e2[_0xc1c4('0x2e')][_0xc1c4('0x1c')]);_0x4a9b6c['offset']=qs['offset'](_0x2ae2e2[_0xc1c4('0x2e')][_0xc1c4('0x1b')]);}_0x4a9b6c[_0xc1c4('0x37')]=qs['sort'](_0x2ae2e2[_0xc1c4('0x2e')][_0xc1c4('0x38')]);_0x4a9b6c[_0xc1c4('0x39')]=qs[_0xc1c4('0x30')](_[_0xc1c4('0x3a')](_0x2ae2e2[_0xc1c4('0x2e')],_0x54761f[_0xc1c4('0x30')]),_0x4cda80);if(_0x2ae2e2[_0xc1c4('0x2e')][_0xc1c4('0x3b')]){_0x4a9b6c[_0xc1c4('0x39')]=_[_0xc1c4('0x3c')](_0x4a9b6c[_0xc1c4('0x39')],{'$or':_[_0xc1c4('0x29')](_0x4cda80,function(_0x57f182){if(_0x57f182['type']!==_0xc1c4('0x3d')){var _0x165f85={};_0x165f85[_0x57f182['name']]={'$like':'%'+_0x2ae2e2[_0xc1c4('0x2e')][_0xc1c4('0x3b')]+'%'};return _0x165f85;}})});}_0x4a9b6c=_[_0xc1c4('0x3c')]({},_0x4a9b6c,_0x2ae2e2[_0xc1c4('0x3e')]);var _0x5d42d2={'where':_0x4a9b6c[_0xc1c4('0x39')]};return db[_0xc1c4('0x3f')][_0xc1c4('0x1e')](_0x5d42d2)[_0xc1c4('0x22')](function(_0x146195){_0x367703['count']=_0x146195;if(_0x2ae2e2['query'][_0xc1c4('0x40')]){_0x4a9b6c['include']=[{'all':!![]}];}return db[_0xc1c4('0x3f')][_0xc1c4('0x41')](_0x4a9b6c);})[_0xc1c4('0x22')](function(_0xe09677){_0x367703[_0xc1c4('0x42')]=_0xe09677;return _0x367703;})[_0xc1c4('0x22')](respondWithFilteredResult(_0x324a77,_0x4a9b6c))[_0xc1c4('0x43')](handleError(_0x324a77,null));};exports['show']=function(_0x5f1138,_0x235ea6){var _0x2596f9={'raw':!![],'where':{'id':_0x5f1138[_0xc1c4('0x44')]['id']}},_0x7095f6={};_0x7095f6[_0xc1c4('0x2d')]=_['keys'](db[_0xc1c4('0x3f')]['rawAttributes']);_0x7095f6['query']=_[_0xc1c4('0x2f')](_0x5f1138[_0xc1c4('0x2e')]);_0x7095f6[_0xc1c4('0x30')]=_['intersection'](_0x7095f6[_0xc1c4('0x2d')],_0x7095f6[_0xc1c4('0x2e')]);_0x2596f9[_0xc1c4('0x32')]=_[_0xc1c4('0x31')](_0x7095f6['model'],qs['fields'](_0x5f1138[_0xc1c4('0x2e')][_0xc1c4('0x33')]));_0x2596f9[_0xc1c4('0x32')]=_0x2596f9[_0xc1c4('0x32')][_0xc1c4('0x34')]?_0x2596f9[_0xc1c4('0x32')]:_0x7095f6[_0xc1c4('0x2d')];if(_0x5f1138[_0xc1c4('0x2e')][_0xc1c4('0x40')]){_0x2596f9[_0xc1c4('0x45')]=[{'all':!![]}];}_0x2596f9=_[_0xc1c4('0x3c')]({},_0x2596f9,_0x5f1138[_0xc1c4('0x3e')]);return db[_0xc1c4('0x3f')]['find'](_0x2596f9)[_0xc1c4('0x22')](handleEntityNotFound(_0x235ea6,null))[_0xc1c4('0x22')](respondWithResult(_0x235ea6,null))[_0xc1c4('0x43')](handleError(_0x235ea6,null));};exports[_0xc1c4('0x46')]=function(_0x51d63f,_0x21ca80){if(_0x51d63f[_0xc1c4('0x47')]['id']){delete _0x51d63f['body']['id'];}return db[_0xc1c4('0x3f')][_0xc1c4('0x48')]({'where':{'id':_0x51d63f['params']['id']}})[_0xc1c4('0x22')](handleEntityNotFound(_0x21ca80,null))[_0xc1c4('0x22')](saveUpdates(_0x51d63f['body'],null))[_0xc1c4('0x22')](respondWithResult(_0x21ca80,null))['catch'](handleError(_0x21ca80,null));};exports[_0xc1c4('0x23')]=function(_0x5c81aa,_0x434634){return db[_0xc1c4('0x3f')][_0xc1c4('0x48')]({'where':{'id':_0x5c81aa[_0xc1c4('0x44')]['id']}})['then'](handleEntityNotFound(_0x434634,null))[_0xc1c4('0x22')](removeEntity(_0x434634,null))[_0xc1c4('0x43')](handleError(_0x434634,null));};exports[_0xc1c4('0x49')]=function(_0x234750,_0x296d38){return db[_0xc1c4('0x3f')]['describe']()[_0xc1c4('0x22')](respondWithResult(_0x296d38,null))['catch'](handleError(_0x296d38,null));};
\ No newline at end of file
+var _0x3289=['end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','save','then','destroy','error','stack','name','send','index','map','CmHopperBlack','rawAttributes','fieldName','type','query','keys','filters','model','intersection','fields','attributes','length','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','include','findAll','rows','catch','show','params','includeAll','update','body','find','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','ejs','fs-extra','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/license/util','../../mysqldb','status'];(function(_0x580576,_0x2f107d){var _0x3f55a0=function(_0x2e180b){while(--_0x2e180b){_0x580576['push'](_0x580576['shift']());}};_0x3f55a0(++_0x2f107d);}(_0x3289,0xcf));var _0x9328=function(_0x485c69,_0x506ba8){_0x485c69=_0x485c69-0x0;var _0x32da74=_0x3289[_0x485c69];return _0x32da74;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9328('0x0'));var zipdir=require(_0x9328('0x1'));var jsonpatch=require(_0x9328('0x2'));var rp=require(_0x9328('0x3'));var moment=require('moment');var BPromise=require(_0x9328('0x4'));var Mustache=require(_0x9328('0x5'));var util=require('util');var path=require(_0x9328('0x6'));var sox=require(_0x9328('0x7'));var csv=require('to-csv');var ejs=require(_0x9328('0x8'));var fs=require('fs');var fs_extra=require(_0x9328('0x9'));var _=require(_0x9328('0xa'));var squel=require(_0x9328('0xb'));var crypto=require(_0x9328('0xc'));var jsforce=require(_0x9328('0xd'));var deskjs=require(_0x9328('0xe'));var toCsv=require(_0x9328('0xf'));var querystring=require(_0x9328('0x10'));var Papa=require('papaparse');var Redis=require(_0x9328('0x11'));var authService=require(_0x9328('0x12'));var qs=require(_0x9328('0x13'));var as=require(_0x9328('0x14'));var hardwareService=require(_0x9328('0x15'));var logger=require(_0x9328('0x16'))(_0x9328('0x17'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x9328('0x18'));var db=require(_0x9328('0x19'))['db'];function respondWithStatusCode(_0x30e5cd,_0x466b27){_0x466b27=_0x466b27||0xcc;return function(_0x2def47){if(_0x2def47){return _0x30e5cd['sendStatus'](_0x466b27);}return _0x30e5cd[_0x9328('0x1a')](_0x466b27)[_0x9328('0x1b')]();};}function respondWithResult(_0x2db30b,_0xf6eb0c){_0xf6eb0c=_0xf6eb0c||0xc8;return function(_0x50b336){if(_0x50b336){return _0x2db30b[_0x9328('0x1a')](_0xf6eb0c)['json'](_0x50b336);}};}function respondWithFilteredResult(_0x223f26,_0x3c06cc){return function(_0x8e0845){if(_0x8e0845){var _0x3063bc=typeof _0x3c06cc['offset']==='undefined'&&typeof _0x3c06cc['limit']===_0x9328('0x1c');var _0x472985=_0x8e0845[_0x9328('0x1d')];var _0x4ab000=_0x3063bc?0x0:_0x3c06cc[_0x9328('0x1e')];var _0x491b10=_0x3063bc?_0x8e0845[_0x9328('0x1d')]:_0x3c06cc['offset']+_0x3c06cc[_0x9328('0x1f')];var _0x160061;if(_0x491b10>=_0x472985){_0x491b10=_0x472985;_0x160061=0xc8;}else{_0x160061=0xce;}_0x223f26[_0x9328('0x1a')](_0x160061);return _0x223f26[_0x9328('0x20')](_0x9328('0x21'),_0x4ab000+'-'+_0x491b10+'/'+_0x472985)[_0x9328('0x22')](_0x8e0845);}return null;};}function patchUpdates(_0x5ea8be){return function(_0xfe3fa1){try{jsonpatch[_0x9328('0x23')](_0xfe3fa1,_0x5ea8be,!![]);}catch(_0x5df271){return BPromise[_0x9328('0x24')](_0x5df271);}return _0xfe3fa1[_0x9328('0x25')]();};}function saveUpdates(_0x12392c,_0x270082){return function(_0x2edc1d){if(_0x2edc1d){return _0x2edc1d['update'](_0x12392c)[_0x9328('0x26')](function(_0xe875e){return _0xe875e;});}return null;};}function removeEntity(_0x20fb91,_0x7dad11){return function(_0x256967){if(_0x256967){return _0x256967[_0x9328('0x27')]()[_0x9328('0x26')](function(){_0x20fb91[_0x9328('0x1a')](0xcc)[_0x9328('0x1b')]();});}};}function handleEntityNotFound(_0x41aac8,_0x4a864b){return function(_0x379543){if(!_0x379543){_0x41aac8['sendStatus'](0x194);}return _0x379543;};}function handleError(_0x3d102f,_0x37eece){_0x37eece=_0x37eece||0x1f4;return function(_0x153331){logger[_0x9328('0x28')](_0x153331[_0x9328('0x29')]);if(_0x153331[_0x9328('0x2a')]){delete _0x153331[_0x9328('0x2a')];}_0x3d102f['status'](_0x37eece)[_0x9328('0x2b')](_0x153331);};}exports[_0x9328('0x2c')]=function(_0x493fd7,_0x56d2be){var _0x5d05fb={},_0x101f36={},_0x344129={'count':0x0,'rows':[]};var _0x4f6ada=_[_0x9328('0x2d')](db[_0x9328('0x2e')][_0x9328('0x2f')],function(_0x129965){return{'name':_0x129965[_0x9328('0x30')],'type':_0x129965[_0x9328('0x31')]['key']};});_0x101f36['model']=_['map'](_0x4f6ada,_0x9328('0x2a'));_0x101f36[_0x9328('0x32')]=_[_0x9328('0x33')](_0x493fd7['query']);_0x101f36[_0x9328('0x34')]=_['intersection'](_0x101f36[_0x9328('0x35')],_0x101f36[_0x9328('0x32')]);_0x5d05fb['attributes']=_[_0x9328('0x36')](_0x101f36[_0x9328('0x35')],qs['fields'](_0x493fd7[_0x9328('0x32')][_0x9328('0x37')]));_0x5d05fb[_0x9328('0x38')]=_0x5d05fb[_0x9328('0x38')][_0x9328('0x39')]?_0x5d05fb['attributes']:_0x101f36[_0x9328('0x35')];if(!_0x493fd7[_0x9328('0x32')]['hasOwnProperty'](_0x9328('0x3a'))){_0x5d05fb[_0x9328('0x1f')]=qs['limit'](_0x493fd7[_0x9328('0x32')][_0x9328('0x1f')]);_0x5d05fb['offset']=qs[_0x9328('0x1e')](_0x493fd7[_0x9328('0x32')][_0x9328('0x1e')]);}_0x5d05fb[_0x9328('0x3b')]=qs[_0x9328('0x3c')](_0x493fd7[_0x9328('0x32')][_0x9328('0x3c')]);_0x5d05fb['where']=qs[_0x9328('0x34')](_[_0x9328('0x3d')](_0x493fd7[_0x9328('0x32')],_0x101f36[_0x9328('0x34')]),_0x4f6ada);if(_0x493fd7[_0x9328('0x32')][_0x9328('0x3e')]){_0x5d05fb[_0x9328('0x3f')]=_['merge'](_0x5d05fb[_0x9328('0x3f')],{'$or':_[_0x9328('0x2d')](_0x4f6ada,function(_0x440a74){if(_0x440a74[_0x9328('0x31')]!==_0x9328('0x40')){var _0x535bc0={};_0x535bc0[_0x440a74[_0x9328('0x2a')]]={'$like':'%'+_0x493fd7['query'][_0x9328('0x3e')]+'%'};return _0x535bc0;}})});}_0x5d05fb=_[_0x9328('0x41')]({},_0x5d05fb,_0x493fd7[_0x9328('0x42')]);var _0x127eca={'where':_0x5d05fb[_0x9328('0x3f')]};return db['CmHopperBlack'][_0x9328('0x1d')](_0x127eca)['then'](function(_0x1a3d27){_0x344129[_0x9328('0x1d')]=_0x1a3d27;if(_0x493fd7[_0x9328('0x32')]['includeAll']){_0x5d05fb[_0x9328('0x43')]=[{'all':!![]}];}return db['CmHopperBlack'][_0x9328('0x44')](_0x5d05fb);})[_0x9328('0x26')](function(_0x37b081){_0x344129[_0x9328('0x45')]=_0x37b081;return _0x344129;})[_0x9328('0x26')](respondWithFilteredResult(_0x56d2be,_0x5d05fb))[_0x9328('0x46')](handleError(_0x56d2be,null));};exports[_0x9328('0x47')]=function(_0x41bcf3,_0x3d2e8f){var _0x30fe9d={'raw':!![],'where':{'id':_0x41bcf3[_0x9328('0x48')]['id']}},_0x56cf5a={};_0x56cf5a[_0x9328('0x35')]=_['keys'](db[_0x9328('0x2e')][_0x9328('0x2f')]);_0x56cf5a['query']=_[_0x9328('0x33')](_0x41bcf3['query']);_0x56cf5a[_0x9328('0x34')]=_[_0x9328('0x36')](_0x56cf5a[_0x9328('0x35')],_0x56cf5a[_0x9328('0x32')]);_0x30fe9d[_0x9328('0x38')]=_[_0x9328('0x36')](_0x56cf5a[_0x9328('0x35')],qs[_0x9328('0x37')](_0x41bcf3[_0x9328('0x32')]['fields']));_0x30fe9d[_0x9328('0x38')]=_0x30fe9d['attributes']['length']?_0x30fe9d['attributes']:_0x56cf5a[_0x9328('0x35')];if(_0x41bcf3[_0x9328('0x32')][_0x9328('0x49')]){_0x30fe9d[_0x9328('0x43')]=[{'all':!![]}];}_0x30fe9d=_[_0x9328('0x41')]({},_0x30fe9d,_0x41bcf3[_0x9328('0x42')]);return db[_0x9328('0x2e')]['find'](_0x30fe9d)[_0x9328('0x26')](handleEntityNotFound(_0x3d2e8f,null))[_0x9328('0x26')](respondWithResult(_0x3d2e8f,null))[_0x9328('0x46')](handleError(_0x3d2e8f,null));};exports[_0x9328('0x4a')]=function(_0x32291e,_0x4b0564){if(_0x32291e[_0x9328('0x4b')]['id']){delete _0x32291e['body']['id'];}return db['CmHopperBlack'][_0x9328('0x4c')]({'where':{'id':_0x32291e[_0x9328('0x48')]['id']}})['then'](handleEntityNotFound(_0x4b0564,null))['then'](saveUpdates(_0x32291e[_0x9328('0x4b')],null))[_0x9328('0x26')](respondWithResult(_0x4b0564,null))[_0x9328('0x46')](handleError(_0x4b0564,null));};exports[_0x9328('0x27')]=function(_0x4442ed,_0x2855e3){return db['CmHopperBlack'][_0x9328('0x4c')]({'where':{'id':_0x4442ed[_0x9328('0x48')]['id']}})['then'](handleEntityNotFound(_0x2855e3,null))['then'](removeEntity(_0x2855e3,null))[_0x9328('0x46')](handleError(_0x2855e3,null));};exports[_0x9328('0x4d')]=function(_0x58ffbc,_0x580891){return db[_0x9328('0x2e')][_0x9328('0x4d')]()[_0x9328('0x26')](respondWithResult(_0x580891,null))['catch'](handleError(_0x580891,null));};
\ No newline at end of file
index 65700f6..4282c38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x228d=['cm_hopper_black','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0x228d,0x12c));var _0xd228=function(_0x316af7,_0x72e80c){_0x316af7=_0x316af7-0x0;var _0x286d96=_0x228d[_0x316af7];return _0x286d96;};'use strict';var _=require(_0xd228('0x0'));var util=require(_0xd228('0x1'));var logger=require(_0xd228('0x2'))(_0xd228('0x3'));var moment=require(_0xd228('0x4'));var BPromise=require(_0xd228('0x5'));var rp=require(_0xd228('0x6'));var fs=require('fs');var path=require(_0xd228('0x7'));var rimraf=require(_0xd228('0x8'));var config=require(_0xd228('0x9'));var attributes=require('./cmHopperBlack.attributes');module[_0xd228('0xa')]=function(_0x59b626,_0x38263c){return _0x59b626[_0xd228('0xb')]('CmHopperBlack',attributes,{'tableName':_0xd228('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7b65=['exports','define','CmHopperBlack','cm_hopper_black','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./cmHopperBlack.attributes'];(function(_0x2118f1,_0x48de4d){var _0x1adb47=function(_0x3bbff5){while(--_0x3bbff5){_0x2118f1['push'](_0x2118f1['shift']());}};_0x1adb47(++_0x48de4d);}(_0x7b65,0x1a4));var _0x57b6=function(_0x50de1b,_0x135e1b){_0x50de1b=_0x50de1b-0x0;var _0x4e5984=_0x7b65[_0x50de1b];return _0x4e5984;};'use strict';var _=require('lodash');var util=require(_0x57b6('0x0'));var logger=require(_0x57b6('0x1'))(_0x57b6('0x2'));var moment=require(_0x57b6('0x3'));var BPromise=require(_0x57b6('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x57b6('0x5'));var rimraf=require(_0x57b6('0x6'));var config=require(_0x57b6('0x7'));var attributes=require(_0x57b6('0x8'));module[_0x57b6('0x9')]=function(_0x2fef33,_0x529a55){return _0x2fef33[_0x57b6('0xa')](_0x57b6('0xb'),attributes,{'tableName':_0x57b6('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9eb2ee9..ce52e79 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc509=['../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','error','code','message','result','GetCmHopperBlack','CmHopperBlack','findAll','options','where','attributes','limit','include','map','model','then','stringify','catch','UpdateCmHopperBlack','update','body','raw','DestroyCmHopperBlack','destroy','lodash','util','moment','randomstring','ioredis'];(function(_0xdf94db,_0xab461d){var _0x1af7e4=function(_0x1794d1){while(--_0x1794d1){_0xdf94db['push'](_0xdf94db['shift']());}};_0x1af7e4(++_0xab461d);}(_0xc509,0x175));var _0x9c50=function(_0x45f567,_0x38db68){_0x45f567=_0x45f567-0x0;var _0x6a7dbb=_0xc509[_0x45f567];return _0x6a7dbb;};'use strict';var _=require(_0x9c50('0x0'));var util=require(_0x9c50('0x1'));var moment=require(_0x9c50('0x2'));var BPromise=require('bluebird');var rs=require(_0x9c50('0x3'));var fs=require('fs');var Redis=require(_0x9c50('0x4'));var db=require(_0x9c50('0x5'))['db'];var utils=require(_0x9c50('0x6'));var logger=require(_0x9c50('0x7'))(_0x9c50('0x8'));var config=require(_0x9c50('0x9'));var jayson=require(_0x9c50('0xa'));var client=jayson[_0x9c50('0xb')][_0x9c50('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2400de,_0x10dba9,_0x599a46){return new BPromise(function(_0x1f43be,_0x623444){return client[_0x9c50('0xd')](_0x2400de,_0x599a46)['then'](function(_0x27d050){logger[_0x9c50('0xe')](_0x9c50('0xf'),_0x10dba9,_0x9c50('0x10'));logger[_0x9c50('0x11')](_0x9c50('0x12'),_0x10dba9,_0x9c50('0x10'),JSON['stringify'](_0x27d050));if(_0x27d050[_0x9c50('0x13')]){if(_0x27d050[_0x9c50('0x13')][_0x9c50('0x14')]===0x1f4){logger[_0x9c50('0x13')](_0x9c50('0xf'),_0x10dba9,_0x27d050[_0x9c50('0x13')][_0x9c50('0x15')]);return _0x623444(_0x27d050[_0x9c50('0x13')][_0x9c50('0x15')]);}logger[_0x9c50('0x13')](_0x9c50('0xf'),_0x10dba9,_0x27d050[_0x9c50('0x13')][_0x9c50('0x15')]);return _0x1f43be(_0x27d050[_0x9c50('0x13')][_0x9c50('0x15')]);}else{logger['info'](_0x9c50('0xf'),_0x10dba9,_0x9c50('0x10'));_0x1f43be(_0x27d050[_0x9c50('0x16')][_0x9c50('0x15')]);}})['catch'](function(_0x226c13){logger['error'](_0x9c50('0xf'),_0x10dba9,_0x226c13);_0x623444(_0x226c13);});});}exports[_0x9c50('0x17')]=function(_0x188378){var _0x2b0c73=this;return new Promise(function(_0x1ef81c,_0x5cf1ad){return db[_0x9c50('0x18')][_0x9c50('0x19')]({'raw':_0x188378[_0x9c50('0x1a')]?_0x188378[_0x9c50('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x188378[_0x9c50('0x1a')]?_0x188378[_0x9c50('0x1a')][_0x9c50('0x1b')]||null:null,'attributes':_0x188378['options']?_0x188378[_0x9c50('0x1a')][_0x9c50('0x1c')]||null:null,'limit':_0x188378[_0x9c50('0x1a')]?_0x188378[_0x9c50('0x1a')][_0x9c50('0x1d')]||null:null,'include':_0x188378[_0x9c50('0x1a')]?_0x188378['options'][_0x9c50('0x1e')]?_[_0x9c50('0x1f')](_0x188378[_0x9c50('0x1a')][_0x9c50('0x1e')],function(_0x5afca8){return{'model':db[_0x5afca8[_0x9c50('0x20')]],'as':_0x5afca8['as'],'attributes':_0x5afca8[_0x9c50('0x1c')],'include':_0x5afca8['include']?_[_0x9c50('0x1f')](_0x5afca8[_0x9c50('0x1e')],function(_0x1421ef){return{'model':db[_0x1421ef[_0x9c50('0x20')]],'as':_0x1421ef['as'],'attributes':_0x1421ef['attributes'],'include':_0x1421ef[_0x9c50('0x1e')]?_['map'](_0x1421ef[_0x9c50('0x1e')],function(_0x595111){return{'model':db[_0x595111[_0x9c50('0x20')]],'as':_0x595111['as'],'attributes':_0x595111['attributes']};}):[]};}):[]};}):[]:[]})[_0x9c50('0x21')](function(_0xb410e2){logger[_0x9c50('0xe')]('GetCmHopperBlack',_0x188378);logger[_0x9c50('0x11')]('GetCmHopperBlack',_0x188378,JSON[_0x9c50('0x22')](_0xb410e2));_0x1ef81c(_0xb410e2);})[_0x9c50('0x23')](function(_0x2b3239){logger[_0x9c50('0x13')](_0x9c50('0x17'),_0x2b3239[_0x9c50('0x15')],_0x188378);_0x5cf1ad(_0x2b0c73['error'](0x1f4,_0x2b3239[_0x9c50('0x15')]));});});};exports[_0x9c50('0x24')]=function(_0x32d1ad){var _0x5c2405=this;return new Promise(function(_0x575ed9,_0x3bdfe8){return db[_0x9c50('0x18')][_0x9c50('0x25')](_0x32d1ad[_0x9c50('0x26')],{'raw':_0x32d1ad['options']?_0x32d1ad['options'][_0x9c50('0x27')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x32d1ad[_0x9c50('0x1a')]?_0x32d1ad[_0x9c50('0x1a')][_0x9c50('0x1b')]||null:null,'attributes':_0x32d1ad['options']?_0x32d1ad[_0x9c50('0x1a')][_0x9c50('0x1c')]||null:null,'limit':_0x32d1ad['options']?_0x32d1ad['options'][_0x9c50('0x1d')]||null:null})[_0x9c50('0x21')](function(_0x3e2a9d){logger[_0x9c50('0xe')](_0x9c50('0x24'),_0x32d1ad);logger[_0x9c50('0x11')](_0x9c50('0x24'),_0x32d1ad,JSON['stringify'](_0x3e2a9d));_0x575ed9(_0x3e2a9d);})['catch'](function(_0x1ba2b7){logger['error']('UpdateCmHopperBlack',_0x1ba2b7[_0x9c50('0x15')],_0x32d1ad);_0x3bdfe8(_0x5c2405[_0x9c50('0x13')](0x1f4,_0x1ba2b7['message']));});});};exports[_0x9c50('0x28')]=function(_0x12ad13){var _0x3e889d=this;return new Promise(function(_0x216ec7,_0xa14125){return db[_0x9c50('0x18')][_0x9c50('0x29')]({'where':_0x12ad13[_0x9c50('0x1a')]?_0x12ad13[_0x9c50('0x1a')][_0x9c50('0x1b')]||null:null})[_0x9c50('0x21')](function(_0x1e227c){logger['info'](_0x9c50('0x28'),_0x12ad13);logger[_0x9c50('0x11')](_0x9c50('0x28'),_0x12ad13,JSON['stringify'](_0x1e227c));_0x216ec7(_0x1e227c);})[_0x9c50('0x23')](function(_0x56e888){logger['error']('DestroyCmHopperBlack',_0x56e888[_0x9c50('0x15')],_0x12ad13);_0xa14125(_0x3e889d[_0x9c50('0x13')](0x1f4,_0x56e888[_0x9c50('0x15')]));});});};
\ No newline at end of file
+var _0x8ef5=['../../config/environment','jayson/promise','client','http','request','then','info','CmHopperBlack,\x20%s,\x20%s','request\x20sent','debug','CmHopperBlack,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetCmHopperBlack','CmHopperBlack','findAll','options','raw','where','limit','include','map','model','attributes','catch','UpdateCmHopperBlack','update','body','DestroyCmHopperBlack','destroy','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc'];(function(_0x9df86,_0x1b8e6b){var _0x2e4b5d=function(_0x153df9){while(--_0x153df9){_0x9df86['push'](_0x9df86['shift']());}};_0x2e4b5d(++_0x1b8e6b);}(_0x8ef5,0x169));var _0x58ef=function(_0x567466,_0x542caf){_0x567466=_0x567466-0x0;var _0x5959af=_0x8ef5[_0x567466];return _0x5959af;};'use strict';var _=require(_0x58ef('0x0'));var util=require(_0x58ef('0x1'));var moment=require(_0x58ef('0x2'));var BPromise=require(_0x58ef('0x3'));var rs=require(_0x58ef('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x58ef('0x5'))['db'];var utils=require(_0x58ef('0x6'));var logger=require('../../config/logger')(_0x58ef('0x7'));var config=require(_0x58ef('0x8'));var jayson=require(_0x58ef('0x9'));var client=jayson[_0x58ef('0xa')][_0x58ef('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3725c5,_0x219dbe,_0x347f02){return new BPromise(function(_0x306fdc,_0x67e3cf){return client[_0x58ef('0xc')](_0x3725c5,_0x347f02)[_0x58ef('0xd')](function(_0x492f5f){logger[_0x58ef('0xe')](_0x58ef('0xf'),_0x219dbe,_0x58ef('0x10'));logger[_0x58ef('0x11')](_0x58ef('0x12'),_0x219dbe,'request\x20sent',JSON[_0x58ef('0x13')](_0x492f5f));if(_0x492f5f[_0x58ef('0x14')]){if(_0x492f5f['error'][_0x58ef('0x15')]===0x1f4){logger[_0x58ef('0x14')](_0x58ef('0xf'),_0x219dbe,_0x492f5f[_0x58ef('0x14')][_0x58ef('0x16')]);return _0x67e3cf(_0x492f5f[_0x58ef('0x14')][_0x58ef('0x16')]);}logger[_0x58ef('0x14')](_0x58ef('0xf'),_0x219dbe,_0x492f5f[_0x58ef('0x14')][_0x58ef('0x16')]);return _0x306fdc(_0x492f5f[_0x58ef('0x14')][_0x58ef('0x16')]);}else{logger[_0x58ef('0xe')]('CmHopperBlack,\x20%s,\x20%s',_0x219dbe,_0x58ef('0x10'));_0x306fdc(_0x492f5f[_0x58ef('0x17')][_0x58ef('0x16')]);}})['catch'](function(_0x3b3694){logger[_0x58ef('0x14')](_0x58ef('0xf'),_0x219dbe,_0x3b3694);_0x67e3cf(_0x3b3694);});});}exports[_0x58ef('0x18')]=function(_0x11d4b0){var _0x30ea67=this;return new Promise(function(_0x23dd55,_0x4da454){return db[_0x58ef('0x19')][_0x58ef('0x1a')]({'raw':_0x11d4b0[_0x58ef('0x1b')]?_0x11d4b0['options'][_0x58ef('0x1c')]===undefined?!![]:![]:!![],'where':_0x11d4b0[_0x58ef('0x1b')]?_0x11d4b0[_0x58ef('0x1b')][_0x58ef('0x1d')]||null:null,'attributes':_0x11d4b0['options']?_0x11d4b0[_0x58ef('0x1b')]['attributes']||null:null,'limit':_0x11d4b0[_0x58ef('0x1b')]?_0x11d4b0['options'][_0x58ef('0x1e')]||null:null,'include':_0x11d4b0[_0x58ef('0x1b')]?_0x11d4b0[_0x58ef('0x1b')][_0x58ef('0x1f')]?_[_0x58ef('0x20')](_0x11d4b0['options']['include'],function(_0x1de61d){return{'model':db[_0x1de61d[_0x58ef('0x21')]],'as':_0x1de61d['as'],'attributes':_0x1de61d[_0x58ef('0x22')],'include':_0x1de61d[_0x58ef('0x1f')]?_[_0x58ef('0x20')](_0x1de61d[_0x58ef('0x1f')],function(_0x5e8c4e){return{'model':db[_0x5e8c4e[_0x58ef('0x21')]],'as':_0x5e8c4e['as'],'attributes':_0x5e8c4e[_0x58ef('0x22')],'include':_0x5e8c4e[_0x58ef('0x1f')]?_[_0x58ef('0x20')](_0x5e8c4e['include'],function(_0x28fe6a){return{'model':db[_0x28fe6a[_0x58ef('0x21')]],'as':_0x28fe6a['as'],'attributes':_0x28fe6a[_0x58ef('0x22')]};}):[]};}):[]};}):[]:[]})[_0x58ef('0xd')](function(_0x215d88){logger['info'](_0x58ef('0x18'),_0x11d4b0);logger[_0x58ef('0x11')]('GetCmHopperBlack',_0x11d4b0,JSON[_0x58ef('0x13')](_0x215d88));_0x23dd55(_0x215d88);})[_0x58ef('0x23')](function(_0x3ccf38){logger[_0x58ef('0x14')](_0x58ef('0x18'),_0x3ccf38[_0x58ef('0x16')],_0x11d4b0);_0x4da454(_0x30ea67[_0x58ef('0x14')](0x1f4,_0x3ccf38[_0x58ef('0x16')]));});});};exports[_0x58ef('0x24')]=function(_0x32d49d){var _0x4f49b7=this;return new Promise(function(_0x1214a8,_0x396b6a){return db[_0x58ef('0x19')][_0x58ef('0x25')](_0x32d49d[_0x58ef('0x26')],{'raw':_0x32d49d['options']?_0x32d49d[_0x58ef('0x1b')][_0x58ef('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x32d49d['options']?_0x32d49d[_0x58ef('0x1b')][_0x58ef('0x1d')]||null:null,'attributes':_0x32d49d[_0x58ef('0x1b')]?_0x32d49d[_0x58ef('0x1b')][_0x58ef('0x22')]||null:null,'limit':_0x32d49d[_0x58ef('0x1b')]?_0x32d49d[_0x58ef('0x1b')][_0x58ef('0x1e')]||null:null})[_0x58ef('0xd')](function(_0x514120){logger[_0x58ef('0xe')](_0x58ef('0x24'),_0x32d49d);logger[_0x58ef('0x11')](_0x58ef('0x24'),_0x32d49d,JSON[_0x58ef('0x13')](_0x514120));_0x1214a8(_0x514120);})[_0x58ef('0x23')](function(_0xda1ca9){logger[_0x58ef('0x14')](_0x58ef('0x24'),_0xda1ca9['message'],_0x32d49d);_0x396b6a(_0x4f49b7[_0x58ef('0x14')](0x1f4,_0xda1ca9[_0x58ef('0x16')]));});});};exports[_0x58ef('0x27')]=function(_0x7ea85b){var _0x4fd02c=this;return new Promise(function(_0x2a9341,_0x1ea285){return db['CmHopperBlack'][_0x58ef('0x28')]({'where':_0x7ea85b[_0x58ef('0x1b')]?_0x7ea85b[_0x58ef('0x1b')][_0x58ef('0x1d')]||null:null})['then'](function(_0x21d0fd){logger['info'](_0x58ef('0x27'),_0x7ea85b);logger['debug'](_0x58ef('0x27'),_0x7ea85b,JSON[_0x58ef('0x13')](_0x21d0fd));_0x2a9341(_0x21d0fd);})[_0x58ef('0x23')](function(_0x63b992){logger[_0x58ef('0x14')](_0x58ef('0x27'),_0x63b992[_0x58ef('0x16')],_0x7ea85b);_0x1ea285(_0x4fd02c['error'](0x1f4,_0x63b992[_0x58ef('0x16')]));});});};
\ No newline at end of file
index d660080..8065400 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4745=['isAuthenticated','/:id','show','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperBlack.controller','get','index'];(function(_0x3061af,_0x47801e){var _0x45cd18=function(_0x179541){while(--_0x179541){_0x3061af['push'](_0x3061af['shift']());}};_0x45cd18(++_0x47801e);}(_0x4745,0x1e7));var _0x5474=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0x4745[_0x4dbaad];return _0x226c72;};'use strict';var multer=require(_0x5474('0x0'));var util=require(_0x5474('0x1'));var path=require(_0x5474('0x2'));var timeout=require(_0x5474('0x3'));var express=require(_0x5474('0x4'));var router=express[_0x5474('0x5')]();var fs_extra=require(_0x5474('0x6'));var auth=require(_0x5474('0x7'));var interaction=require(_0x5474('0x8'));var config=require(_0x5474('0x9'));var controller=require(_0x5474('0xa'));router[_0x5474('0xb')]('/',auth['isAuthenticated'](),controller[_0x5474('0xc')]);router[_0x5474('0xb')]('/describe',auth[_0x5474('0xd')](),controller['describe']);router[_0x5474('0xb')](_0x5474('0xe'),auth['isAuthenticated'](),controller[_0x5474('0xf')]);router[_0x5474('0x10')](_0x5474('0xe'),auth[_0x5474('0xd')](),controller[_0x5474('0x11')]);router[_0x5474('0x12')](_0x5474('0xe'),auth[_0x5474('0xd')](),controller['destroy']);module[_0x5474('0x13')]=router;
\ No newline at end of file
+var _0x81c6=['delete','util','Router','fs-extra','../../components/auth/service','../../config/environment','./cmHopperBlack.controller','get','isAuthenticated','/describe','/:id','update'];(function(_0x18bc5d,_0x5d0702){var _0x2e76f8=function(_0x53f1bf){while(--_0x53f1bf){_0x18bc5d['push'](_0x18bc5d['shift']());}};_0x2e76f8(++_0x5d0702);}(_0x81c6,0x1d5));var _0x681c=function(_0x35cfc7,_0x4452c4){_0x35cfc7=_0x35cfc7-0x0;var _0x163381=_0x81c6[_0x35cfc7];return _0x163381;};'use strict';var multer=require('multer');var util=require(_0x681c('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x681c('0x1')]();var fs_extra=require(_0x681c('0x2'));var auth=require(_0x681c('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x681c('0x4'));var controller=require(_0x681c('0x5'));router[_0x681c('0x6')]('/',auth[_0x681c('0x7')](),controller['index']);router[_0x681c('0x6')](_0x681c('0x8'),auth['isAuthenticated'](),controller['describe']);router[_0x681c('0x6')](_0x681c('0x9'),auth[_0x681c('0x7')](),controller['show']);router['put'](_0x681c('0x9'),auth['isAuthenticated'](),controller[_0x681c('0xa')]);router[_0x681c('0xb')](_0x681c('0x9'),auth[_0x681c('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index fb8b7b4..2f9d49f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5df4=['followuptime','diff','seconds','BOOLEAN','sequelize','exports','INTEGER','STRING','DATE','getDataValue','endtime','setDataValue'];(function(_0x29a8d2,_0xcd560){var _0x213fe3=function(_0x3d0b1b){while(--_0x3d0b1b){_0x29a8d2['push'](_0x29a8d2['shift']());}};_0x213fe3(++_0xcd560);}(_0x5df4,0xdc));var _0x45df=function(_0x4fcf12,_0x58571f){_0x4fcf12=_0x4fcf12-0x0;var _0x18d3a4=_0x5df4[_0x4fcf12];return _0x18d3a4;};'use strict';var Sequelize=require(_0x45df('0x0'));var moment=require('moment');module[_0x45df('0x1')]={'state':{'type':Sequelize[_0x45df('0x2')](0x2)},'statedesc':{'type':Sequelize['STRING']},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0x45df('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x45df('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x45df('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x45df('0x3')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0x45df('0x3')]},'calleridnum':{'type':Sequelize[_0x45df('0x3')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0x45df('0x4')]},'responsetime':{'type':Sequelize[_0x45df('0x4')]},'answertime':{'type':Sequelize[_0x45df('0x4')]},'droptime':{'type':Sequelize[_0x45df('0x4')]},'endtime':{'type':Sequelize[_0x45df('0x4')]},'ringtime':{'type':Sequelize[_0x45df('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0x45df('0x2')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x45df('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x45df('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x45df('0x3')]},'campaign':{'type':Sequelize[_0x45df('0x3')]},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize['STRING']},'reason':{'type':Sequelize[_0x45df('0x3')]},'disposition':{'type':Sequelize[_0x45df('0x3')]},'secondDisposition':{'type':Sequelize[_0x45df('0x3')]},'thirdDisposition':{'type':Sequelize[_0x45df('0x3')]},'dispositionat':{'type':Sequelize[_0x45df('0x4')],'set':function(_0x5c08a2){var _0x4758fd=this[_0x45df('0x5')](_0x45df('0x6'));if(_0x4758fd&&_0x5c08a2){this[_0x45df('0x7')](_0x45df('0x8'),moment(_0x5c08a2)[_0x45df('0x9')](moment(_0x4758fd),_0x45df('0xa')));}}},'amd':{'type':Sequelize[_0x45df('0xb')],'defaultValue':![]},'fax':{'type':Sequelize[_0x45df('0xb')],'defaultValue':![]},'blacklist':{'type':Sequelize[_0x45df('0xb')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0x45df('0xb')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0x45df('0x4')]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x45df('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x45df('0x4')]},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize[_0x45df('0x4')]},'recallme':{'type':Sequelize[_0x45df('0xb')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0x45df('0x4')]},'countnosuchnumberretry':{'type':Sequelize[_0x45df('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x45df('0x2')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x45df('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x45df('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xf07e=['setDataValue','followuptime','seconds','BOOLEAN','exports','STRING','DATE','INTEGER','getDataValue','endtime'];(function(_0x26abc4,_0x52fbef){var _0xbfcce3=function(_0x147441){while(--_0x147441){_0x26abc4['push'](_0x26abc4['shift']());}};_0xbfcce3(++_0x52fbef);}(_0xf07e,0x16c));var _0xef07=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf07e[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0xef07('0x0')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xef07('0x1')]},'scheduledat':{'type':Sequelize[_0xef07('0x2')]},'countbusyretry':{'type':Sequelize[_0xef07('0x3')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0xef07('0x3')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0xef07('0x1')]},'originatecalleridnum':{'type':Sequelize[_0xef07('0x1')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0xef07('0x1')]},'calleridname':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xef07('0x2')]},'responsetime':{'type':Sequelize[_0xef07('0x2')]},'answertime':{'type':Sequelize['DATE']},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0xef07('0x2')]},'ringtime':{'type':Sequelize[_0xef07('0x3')],'defaultValue':0x0},'holdtime':{'type':Sequelize[_0xef07('0x3')],'defaultValue':0x0},'talktime':{'type':Sequelize[_0xef07('0x3')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0xef07('0x3')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0xef07('0x1')]},'campaign':{'type':Sequelize[_0xef07('0x1')]},'campaigntype':{'type':Sequelize[_0xef07('0x1')]},'membername':{'type':Sequelize[_0xef07('0x1')]},'reason':{'type':Sequelize[_0xef07('0x1')]},'disposition':{'type':Sequelize[_0xef07('0x1')]},'secondDisposition':{'type':Sequelize[_0xef07('0x1')]},'thirdDisposition':{'type':Sequelize[_0xef07('0x1')]},'dispositionat':{'type':Sequelize['DATE'],'set':function(_0x527dd3){var _0x55ab80=this[_0xef07('0x4')](_0xef07('0x5'));if(_0x55ab80&&_0x527dd3){this[_0xef07('0x6')](_0xef07('0x7'),moment(_0x527dd3)['diff'](moment(_0x55ab80),_0xef07('0x8')));}}},'amd':{'type':Sequelize[_0xef07('0x9')],'defaultValue':![]},'fax':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'blacklist':{'type':Sequelize[_0xef07('0x9')],'defaultValue':![]},'rescheduled':{'type':Sequelize[_0xef07('0x9')],'defaultValue':![]},'rescheduledat':{'type':Sequelize[_0xef07('0x2')]},'callback':{'type':Sequelize[_0xef07('0x9')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize['STRING'],'defaultValue':null},'callbackat':{'type':Sequelize[_0xef07('0x2')]},'deleted':{'type':Sequelize['STRING'],'defaultValue':null},'deletedat':{'type':Sequelize['DATE']},'recallme':{'type':Sequelize[_0xef07('0x9')],'defaultValue':![]},'agiafterat':{'type':Sequelize[_0xef07('0x2')]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0xef07('0x3')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0xef07('0x3')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0xef07('0x3')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0xef07('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index e8a380e..34d2fdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xafc4=['../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','then','stack','name','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge','map','VIRTUAL','options','CmHopperFinal','includeAll','catch','show','params','describe','body','uniqueid','find','countContactsQueueCampaignHopperFinal','findAll','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','noAnswerContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','congestionContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','`state`\x20=\x2022,\x201,\x20null','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','`state`\x20=\x203,\x201,\x20null','`state`\x20=\x208,\x201,\x20null','`state`\x20=\x2010\x20,\x201,\x20null','moveContactsQueueCampaignHopperFinal','insert','into','cm_hopper','phone','scheduledAt','ListId','VoiceQueueId','createdAt','select','field','ANY_VALUE(calleridnum)','NOW()','ContactId','ANY_VALUE(VoiceQueueId)','updatedAt','from','cm_hopper_final','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20IS\x20NOT\x20NULL','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','state\x20=\x204','Campaign','fromQuery','CampaignId','CampaignId\x20=\x20?','group','CmHopper','findOne','eml-format','zip-dir','request-promise','moment','bluebird','mustache','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api'];(function(_0x5175c1,_0x534029){var _0x469e1b=function(_0x5acd82){while(--_0x5acd82){_0x5175c1['push'](_0x5175c1['shift']());}};_0x469e1b(++_0x534029);}(_0xafc4,0x69));var _0x4afc=function(_0x4269b2,_0x59c2de){_0x4269b2=_0x4269b2-0x0;var _0x23b524=_0xafc4[_0x4269b2];return _0x23b524;};'use strict';var emlformat=require(_0x4afc('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4afc('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x4afc('0x2'));var moment=require(_0x4afc('0x3'));var BPromise=require(_0x4afc('0x4'));var Mustache=require(_0x4afc('0x5'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x4afc('0x6'));var ejs=require(_0x4afc('0x7'));var fs=require('fs');var fs_extra=require(_0x4afc('0x8'));var _=require(_0x4afc('0x9'));var squel=require(_0x4afc('0xa'));var crypto=require(_0x4afc('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x4afc('0xc'));var toCsv=require(_0x4afc('0x6'));var querystring=require(_0x4afc('0xd'));var Papa=require(_0x4afc('0xe'));var Redis=require(_0x4afc('0xf'));var authService=require(_0x4afc('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4afc('0x11'));var logger=require('../../config/logger')(_0x4afc('0x12'));var utils=require(_0x4afc('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x4afc('0x14'));var db=require(_0x4afc('0x15'))['db'];function respondWithStatusCode(_0x2b191c,_0x2768bf){_0x2768bf=_0x2768bf||0xcc;return function(_0x1d8f98){if(_0x1d8f98){return _0x2b191c[_0x4afc('0x16')](_0x2768bf);}return _0x2b191c[_0x4afc('0x17')](_0x2768bf)[_0x4afc('0x18')]();};}function respondWithResult(_0x5effb4,_0x26f3f1){_0x26f3f1=_0x26f3f1||0xc8;return function(_0x429fd8){if(_0x429fd8){return _0x5effb4[_0x4afc('0x17')](_0x26f3f1)[_0x4afc('0x19')](_0x429fd8);}};}function respondWithFilteredResult(_0x5f2dc9,_0x4e32e8){return function(_0x2452ae){if(_0x2452ae){var _0x4f3127=typeof _0x4e32e8[_0x4afc('0x1a')]===_0x4afc('0x1b')&&typeof _0x4e32e8[_0x4afc('0x1c')]===_0x4afc('0x1b');var _0x3a306f=_0x2452ae[_0x4afc('0x1d')];var _0x22f809=_0x4f3127?0x0:_0x4e32e8[_0x4afc('0x1a')];var _0x16365f=_0x4f3127?_0x2452ae[_0x4afc('0x1d')]:_0x4e32e8[_0x4afc('0x1a')]+_0x4e32e8['limit'];var _0x1a8f49;if(_0x16365f>=_0x3a306f){_0x16365f=_0x3a306f;_0x1a8f49=0xc8;}else{_0x1a8f49=0xce;}_0x5f2dc9[_0x4afc('0x17')](_0x1a8f49);return _0x5f2dc9[_0x4afc('0x1e')](_0x4afc('0x1f'),_0x22f809+'-'+_0x16365f+'/'+_0x3a306f)['json'](_0x2452ae);}return null;};}function patchUpdates(_0x3bddc0){return function(_0x30eda3){try{jsonpatch[_0x4afc('0x20')](_0x30eda3,_0x3bddc0,!![]);}catch(_0x280587){return BPromise[_0x4afc('0x21')](_0x280587);}return _0x30eda3[_0x4afc('0x22')]();};}function saveUpdates(_0x3ad7a5,_0x573a75){return function(_0x5403e4){if(_0x5403e4){return _0x5403e4[_0x4afc('0x23')](_0x3ad7a5)['then'](function(_0x37debf){return _0x37debf;});}return null;};}function removeEntity(_0x4e9a48,_0x1aa676){return function(_0x2a0314){if(_0x2a0314){return _0x2a0314[_0x4afc('0x24')]()[_0x4afc('0x25')](function(){_0x4e9a48[_0x4afc('0x17')](0xcc)[_0x4afc('0x18')]();});}};}function handleEntityNotFound(_0x40a0db,_0x383a71){return function(_0x2bb837){if(!_0x2bb837){_0x40a0db[_0x4afc('0x16')](0x194);}return _0x2bb837;};}function handleError(_0x4e8273,_0x359c07){_0x359c07=_0x359c07||0x1f4;return function(_0x35f5b3){logger['error'](_0x35f5b3[_0x4afc('0x26')]);if(_0x35f5b3[_0x4afc('0x27')]){delete _0x35f5b3[_0x4afc('0x27')];}_0x4e8273['status'](_0x359c07)['send'](_0x35f5b3);};}exports['index']=function(_0x426e9d,_0x5db47e){var _0x5e4747={},_0xd26d2f={},_0x628e42={'count':0x0,'rows':[]};var _0x494fe7=_['map'](db['CmHopperFinal'][_0x4afc('0x28')],function(_0x34434a){return{'name':_0x34434a[_0x4afc('0x29')],'type':_0x34434a[_0x4afc('0x2a')][_0x4afc('0x2b')]};});_0xd26d2f[_0x4afc('0x2c')]=_['map'](_0x494fe7,_0x4afc('0x27'));_0xd26d2f[_0x4afc('0x2d')]=_[_0x4afc('0x2e')](_0x426e9d[_0x4afc('0x2d')]);_0xd26d2f[_0x4afc('0x2f')]=_[_0x4afc('0x30')](_0xd26d2f[_0x4afc('0x2c')],_0xd26d2f[_0x4afc('0x2d')]);_0x5e4747['attributes']=_[_0x4afc('0x30')](_0xd26d2f['model'],qs['fields'](_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x31')]));_0x5e4747[_0x4afc('0x32')]=_0x5e4747[_0x4afc('0x32')][_0x4afc('0x33')]?_0x5e4747[_0x4afc('0x32')]:_0xd26d2f['model'];if(!_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x34')](_0x4afc('0x35'))){_0x5e4747[_0x4afc('0x1c')]=qs[_0x4afc('0x1c')](_0x426e9d[_0x4afc('0x2d')]['limit']);_0x5e4747[_0x4afc('0x1a')]=qs[_0x4afc('0x1a')](_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x1a')]);}_0x5e4747['order']=qs['sort'](_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x36')]);_0x5e4747[_0x4afc('0x37')]=qs['filters'](_['pick'](_0x426e9d[_0x4afc('0x2d')],_0xd26d2f['filters']),_0x494fe7);if(_0x426e9d['query'][_0x4afc('0x38')]){_0x5e4747[_0x4afc('0x37')]=_[_0x4afc('0x39')](_0x5e4747[_0x4afc('0x37')],{'$or':_[_0x4afc('0x3a')](_0x494fe7,function(_0x4420fb){if(_0x4420fb[_0x4afc('0x2a')]!==_0x4afc('0x3b')){var _0x3ccc5a={};_0x3ccc5a[_0x4420fb[_0x4afc('0x27')]]={'$like':'%'+_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x38')]+'%'};return _0x3ccc5a;}})});}_0x5e4747=_[_0x4afc('0x39')]({},_0x5e4747,_0x426e9d[_0x4afc('0x3c')]);var _0x46dd2a={'where':_0x5e4747['where']};return db[_0x4afc('0x3d')][_0x4afc('0x1d')](_0x46dd2a)[_0x4afc('0x25')](function(_0xe6db12){_0x628e42[_0x4afc('0x1d')]=_0xe6db12;if(_0x426e9d[_0x4afc('0x2d')][_0x4afc('0x3e')]){_0x5e4747['include']=[{'all':!![]}];}return db['CmHopperFinal']['findAll'](_0x5e4747);})[_0x4afc('0x25')](function(_0x105c03){_0x628e42['rows']=_0x105c03;return _0x628e42;})[_0x4afc('0x25')](respondWithFilteredResult(_0x5db47e,_0x5e4747))[_0x4afc('0x3f')](handleError(_0x5db47e,null));};exports[_0x4afc('0x40')]=function(_0x397996,_0x545109){var _0x12b5db={'raw':!![],'where':{'id':_0x397996[_0x4afc('0x41')]['id']}},_0x45c9c3={};_0x45c9c3[_0x4afc('0x2c')]=_[_0x4afc('0x2e')](db[_0x4afc('0x3d')]['rawAttributes']);_0x45c9c3[_0x4afc('0x2d')]=_['keys'](_0x397996[_0x4afc('0x2d')]);_0x45c9c3[_0x4afc('0x2f')]=_[_0x4afc('0x30')](_0x45c9c3['model'],_0x45c9c3['query']);_0x12b5db[_0x4afc('0x32')]=_[_0x4afc('0x30')](_0x45c9c3[_0x4afc('0x2c')],qs[_0x4afc('0x31')](_0x397996[_0x4afc('0x2d')][_0x4afc('0x31')]));_0x12b5db[_0x4afc('0x32')]=_0x12b5db[_0x4afc('0x32')]['length']?_0x12b5db[_0x4afc('0x32')]:_0x45c9c3[_0x4afc('0x2c')];if(_0x397996['query'][_0x4afc('0x3e')]){_0x12b5db['include']=[{'all':!![]}];}_0x12b5db=_[_0x4afc('0x39')]({},_0x12b5db,_0x397996[_0x4afc('0x3c')]);return db[_0x4afc('0x3d')]['find'](_0x12b5db)[_0x4afc('0x25')](handleEntityNotFound(_0x545109,null))[_0x4afc('0x25')](respondWithResult(_0x545109,null))[_0x4afc('0x3f')](handleError(_0x545109,null));};exports[_0x4afc('0x42')]=function(_0x4772db,_0x19a0ac){return db['CmHopperFinal']['describe']()['then'](respondWithResult(_0x19a0ac,null))[_0x4afc('0x3f')](handleError(_0x19a0ac,null));};exports[_0x4afc('0x23')]=function(_0x42e274,_0x269c24){if(_0x42e274[_0x4afc('0x43')][_0x4afc('0x44')]){delete _0x42e274[_0x4afc('0x43')][_0x4afc('0x44')];}return db[_0x4afc('0x3d')][_0x4afc('0x45')]({'where':{'uniqueid':_0x42e274['params']['id']}})[_0x4afc('0x25')](handleEntityNotFound(_0x269c24,null))['then'](saveUpdates(_0x42e274['body'],null))[_0x4afc('0x25')](respondWithResult(_0x269c24,null))['catch'](handleError(_0x269c24,null));};exports[_0x4afc('0x46')]=function(_0x355198,_0x2fe2ae,_0x2cafc3){return db['CmHopperFinal'][_0x4afc('0x47')]({'raw':![],'where':{'VoiceQueueId':_0x355198['params']['id']},'attributes':[[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db[_0x4afc('0x48')][_0x4afc('0x4a')](_0x4afc('0x4b')))),_0x4afc('0x4c')],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db[_0x4afc('0x48')][_0x4afc('0x4a')]('`state`\x20=\x203,\x201,\x20null'))),_0x4afc('0x4d')],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db[_0x4afc('0x48')][_0x4afc('0x4a')](_0x4afc('0x4e')))),_0x4afc('0x4f')],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db[_0x4afc('0x48')][_0x4afc('0x4a')]('`state`\x20=\x208,\x201,\x20null'))),_0x4afc('0x50')],[db['sequelize']['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db[_0x4afc('0x48')][_0x4afc('0x4a')]('`state`\x20=\x2010\x20,\x201,\x20null'))),'dropContacts'],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db['sequelize']['fn']('IF',db[_0x4afc('0x48')][_0x4afc('0x4a')](_0x4afc('0x51')))),_0x4afc('0x52')],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db[_0x4afc('0x48')][_0x4afc('0x4a')](_0x4afc('0x53')))),_0x4afc('0x54')],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db['sequelize'][_0x4afc('0x4a')](_0x4afc('0x55')))),_0x4afc('0x56')]]})[_0x4afc('0x25')](handleEntityNotFound(_0x2fe2ae,null))[_0x4afc('0x25')](respondWithResult(_0x2fe2ae,null))[_0x4afc('0x3f')](handleError(_0x2fe2ae,null));};exports[_0x4afc('0x57')]=function(_0x4985c6,_0x1771e8,_0x323c65){return db['CmHopperFinal']['findAll']({'raw':![],'where':{'CampaignId':_0x4985c6[_0x4afc('0x41')]['id']},'attributes':[[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db[_0x4afc('0x48')][_0x4afc('0x4a')](_0x4afc('0x4b')))),_0x4afc('0x4c')],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db['sequelize']['fn']('IF',db['sequelize'][_0x4afc('0x4a')](_0x4afc('0x58')))),'noAnswerContacts'],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db['sequelize']['fn']('IF',db['sequelize'][_0x4afc('0x4a')](_0x4afc('0x4e')))),_0x4afc('0x4f')],[db['sequelize']['fn'](_0x4afc('0x49'),db['sequelize']['fn']('IF',db['sequelize'][_0x4afc('0x4a')](_0x4afc('0x59')))),_0x4afc('0x50')],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db[_0x4afc('0x48')][_0x4afc('0x4a')](_0x4afc('0x5a')))),'dropContacts'],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x4afc('0x52')],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db['sequelize']['fn']('IF',db[_0x4afc('0x48')]['literal']('`state`\x20=\x2022,\x201,\x20null'))),'reCallContacts'],[db[_0x4afc('0x48')]['fn'](_0x4afc('0x49'),db[_0x4afc('0x48')]['fn']('IF',db['sequelize'][_0x4afc('0x4a')](_0x4afc('0x55')))),_0x4afc('0x56')]]})['then'](handleEntityNotFound(_0x1771e8,null))[_0x4afc('0x25')](respondWithResult(_0x1771e8,null))[_0x4afc('0x3f')](handleError(_0x1771e8,null));};exports[_0x4afc('0x5b')]=function(_0x392252,_0x1f652a,_0x481263){return db['VoiceQueue'][_0x4afc('0x45')]({'where':{'id':_0x392252[_0x4afc('0x41')]['id']}})[_0x4afc('0x25')](handleEntityNotFound(_0x1f652a,null))['then'](function(_0x380c56){var _0x14a216;if(_0x380c56){_0x14a216=squel[_0x4afc('0x5c')]()[_0x4afc('0x5d')](_0x4afc('0x5e'))['fromQuery']([_0x4afc('0x5f'),_0x4afc('0x60'),'ContactId',_0x4afc('0x61'),_0x4afc('0x62'),_0x4afc('0x63'),'updatedAt'],squel[_0x4afc('0x64')]()[_0x4afc('0x65')](_0x4afc('0x66'),_0x4afc('0x5f'))[_0x4afc('0x65')](_0x4afc('0x67'),_0x4afc('0x60'))[_0x4afc('0x65')]('ANY_VALUE(ContactId)',_0x4afc('0x68'))['field']('ANY_VALUE(ListId)',_0x4afc('0x61'))[_0x4afc('0x65')](_0x4afc('0x69'),'VoiceQueueId')['field'](_0x4afc('0x67'),_0x4afc('0x63'))[_0x4afc('0x65')](_0x4afc('0x67'),_0x4afc('0x6a'))[_0x4afc('0x6b')](_0x4afc('0x6c'))[_0x4afc('0x37')](_0x4afc('0x6d'),_0x392252[_0x4afc('0x41')]['id'][_0x4afc('0x6e')]())[_0x4afc('0x37')](_0x4afc('0x6f'),_0x392252[_0x4afc('0x43')][_0x4afc('0x70')][_0x4afc('0x6e')]())['where'](_0x4afc('0x71'))[_0x4afc('0x37')](_0x4afc('0x72'),squel[_0x4afc('0x64')]()[_0x4afc('0x65')](_0x4afc('0x5f'))[_0x4afc('0x6b')](_0x4afc('0x5e'))[_0x4afc('0x37')]('VoiceQueueId\x20=\x20?',_0x392252[_0x4afc('0x41')]['id'][_0x4afc('0x6e')]()))[_0x4afc('0x37')](_0x4afc('0x72'),squel['select']()[_0x4afc('0x65')](_0x4afc('0x73'))[_0x4afc('0x6b')](_0x4afc('0x6c'))[_0x4afc('0x37')](_0x4afc('0x6d'),_0x392252[_0x4afc('0x41')]['id'][_0x4afc('0x6e')]())[_0x4afc('0x37')](_0x4afc('0x74')))['group'](_0x4afc('0x68')))[_0x4afc('0x6e')]();return db['sequelize'][_0x4afc('0x2d')](_0x14a216);}return[];})[_0x4afc('0x25')](respondWithResult(_0x1f652a,null))[_0x4afc('0x3f')](handleError(_0x1f652a,null));};exports['moveContactsIvrCampaignHopperFinal']=function(_0x1c3d20,_0x3478aa,_0x24553b){return db[_0x4afc('0x75')]['find']({'where':{'id':_0x1c3d20[_0x4afc('0x41')]['id']}})[_0x4afc('0x25')](handleEntityNotFound(_0x3478aa,null))['then'](function(_0x2dc8a1){var _0x36f3ea;if(_0x2dc8a1){_0x36f3ea=squel[_0x4afc('0x5c')]()['into']('cm_hopper')[_0x4afc('0x76')]([_0x4afc('0x5f'),_0x4afc('0x60'),_0x4afc('0x68'),_0x4afc('0x61'),_0x4afc('0x77'),_0x4afc('0x63'),_0x4afc('0x6a')],squel[_0x4afc('0x64')]()[_0x4afc('0x65')](_0x4afc('0x66'),_0x4afc('0x5f'))[_0x4afc('0x65')](_0x4afc('0x67'),_0x4afc('0x60'))[_0x4afc('0x65')]('ANY_VALUE(ContactId)',_0x4afc('0x68'))[_0x4afc('0x65')]('ANY_VALUE(ListId)',_0x4afc('0x61'))['field']('ANY_VALUE(CampaignId)',_0x4afc('0x77'))['field']('NOW()',_0x4afc('0x63'))['field'](_0x4afc('0x67'),'updatedAt')[_0x4afc('0x6b')](_0x4afc('0x6c'))[_0x4afc('0x37')](_0x4afc('0x78'),_0x1c3d20[_0x4afc('0x41')]['id']['toString']())[_0x4afc('0x37')](_0x4afc('0x6f'),_0x1c3d20['body']['state'][_0x4afc('0x6e')]())[_0x4afc('0x37')](_0x4afc('0x71'))[_0x4afc('0x37')](_0x4afc('0x72'),squel['select']()[_0x4afc('0x65')](_0x4afc('0x5f'))[_0x4afc('0x6b')](_0x4afc('0x5e'))['where'](_0x4afc('0x78'),_0x1c3d20['params']['id'][_0x4afc('0x6e')]()))[_0x4afc('0x37')](_0x4afc('0x72'),squel[_0x4afc('0x64')]()[_0x4afc('0x65')](_0x4afc('0x73'))[_0x4afc('0x6b')](_0x4afc('0x6c'))[_0x4afc('0x37')](_0x4afc('0x78'),_0x1c3d20[_0x4afc('0x41')]['id']['toString']())[_0x4afc('0x37')]('state\x20=\x204'))[_0x4afc('0x79')]('ContactId'))['toString']();return db[_0x4afc('0x48')]['query'](_0x36f3ea);}return[];})['then'](respondWithResult(_0x3478aa,null))[_0x4afc('0x3f')](handleError(_0x3478aa,null));};exports['checkContactHopper']=function(_0x272e36,_0x24bf53,_0x5b1421){return db[_0x4afc('0x7a')][_0x4afc('0x7b')]({'where':{'VoiceQueueId':_0x272e36['body'][_0x4afc('0x62')],'CampaignId':_0x272e36[_0x4afc('0x43')][_0x4afc('0x77')],'ContactId':_0x272e36['body'][_0x4afc('0x68')]}})[_0x4afc('0x25')](handleEntityNotFound(_0x24bf53,null))[_0x4afc('0x25')](function(_0x16eb6d){if(_0x16eb6d){return _0x16eb6d;}return null;})[_0x4afc('0x25')](respondWithResult(_0x24bf53,null))[_0x4afc('0x3f')](handleError(_0x24bf53,null));};
\ No newline at end of file
+var _0x4819=['send','map','CmHopperFinal','rawAttributes','type','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','count','includeAll','include','catch','show','keys','find','describe','body','uniqueid','countContactsQueueCampaignHopperFinal','findAll','params','sequelize','COUNT','literal','`state`\x20=\x200,\x201,\x20null','noSuchContacts','`state`\x20=\x205,\x201,\x20null','busyContacts','congestionContacts','`state`\x20=\x2010\x20,\x201,\x20null','dropContacts','`state`\x20=\x2011\x20,\x201,\x20null','abandonedContacts','reCallContacts','`state`\x20=\x2019,\x201,\x20null','answeringMachine','countContactsIvrCampaignHopperFinal','VoiceQueue','insert','cm_hopper','fromQuery','phone','scheduledAt','ContactId','ListId','VoiceQueueId','createdAt','updatedAt','select','field','ANY_VALUE(calleridnum)','NOW()','ANY_VALUE(ContactId)','ANY_VALUE(ListId)','from','VoiceQueueId\x20=\x20?','toString','state\x20=\x20?','state','calleridnum\x20NOT\x20IN\x20(?)','calleridnum','cm_hopper_final','state\x20=\x204','group','moveContactsIvrCampaignHopperFinal','Campaign','into','ANY_VALUE(CampaignId)','CampaignId\x20=\x20?','calleridnum\x20IS\x20NOT\x20NULL','CmHopper','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','undefined','limit','offset','set','Content-Range','apply','reject','update','then','destroy','stack','name'];(function(_0x28585a,_0x36679c){var _0xaa0a02=function(_0x19d203){while(--_0x19d203){_0x28585a['push'](_0x28585a['shift']());}};_0xaa0a02(++_0x36679c);}(_0x4819,0xcd));var _0x9481=function(_0x484032,_0x11ce70){_0x484032=_0x484032-0x0;var _0xec7c10=_0x4819[_0x484032];return _0xec7c10;};'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'];function respondWithStatusCode(_0xed8e9,_0x499b87){_0x499b87=_0x499b87||0xcc;return function(_0x5aac02){if(_0x5aac02){return _0xed8e9[_0x9481('0x1a')](_0x499b87);}return _0xed8e9[_0x9481('0x1b')](_0x499b87)[_0x9481('0x1c')]();};}function respondWithResult(_0x28fcb6,_0x3d23c2){_0x3d23c2=_0x3d23c2||0xc8;return function(_0xc7a0b5){if(_0xc7a0b5){return _0x28fcb6[_0x9481('0x1b')](_0x3d23c2)['json'](_0xc7a0b5);}};}function respondWithFilteredResult(_0x4220f1,_0x7a7ee){return function(_0x5b1fe6){if(_0x5b1fe6){var _0x2266d5=typeof _0x7a7ee['offset']===_0x9481('0x1d')&&typeof _0x7a7ee[_0x9481('0x1e')]===_0x9481('0x1d');var _0x2bb2a4=_0x5b1fe6['count'];var _0x5eda66=_0x2266d5?0x0:_0x7a7ee[_0x9481('0x1f')];var _0x50a559=_0x2266d5?_0x5b1fe6['count']:_0x7a7ee[_0x9481('0x1f')]+_0x7a7ee[_0x9481('0x1e')];var _0x18c6f5;if(_0x50a559>=_0x2bb2a4){_0x50a559=_0x2bb2a4;_0x18c6f5=0xc8;}else{_0x18c6f5=0xce;}_0x4220f1[_0x9481('0x1b')](_0x18c6f5);return _0x4220f1[_0x9481('0x20')](_0x9481('0x21'),_0x5eda66+'-'+_0x50a559+'/'+_0x2bb2a4)['json'](_0x5b1fe6);}return null;};}function patchUpdates(_0x2cf1aa){return function(_0x272a84){try{jsonpatch[_0x9481('0x22')](_0x272a84,_0x2cf1aa,!![]);}catch(_0x615e02){return BPromise[_0x9481('0x23')](_0x615e02);}return _0x272a84['save']();};}function saveUpdates(_0x215dd7,_0x294908){return function(_0x572599){if(_0x572599){return _0x572599[_0x9481('0x24')](_0x215dd7)[_0x9481('0x25')](function(_0x352b3a){return _0x352b3a;});}return null;};}function removeEntity(_0x1809d2,_0x2dc02e){return function(_0x49ecfa){if(_0x49ecfa){return _0x49ecfa[_0x9481('0x26')]()[_0x9481('0x25')](function(){_0x1809d2['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x12b0c3,_0x299e28){return function(_0x550fce){if(!_0x550fce){_0x12b0c3[_0x9481('0x1a')](0x194);}return _0x550fce;};}function handleError(_0x20ff9a,_0xeff0a5){_0xeff0a5=_0xeff0a5||0x1f4;return function(_0x28ae1b){logger['error'](_0x28ae1b[_0x9481('0x27')]);if(_0x28ae1b[_0x9481('0x28')]){delete _0x28ae1b[_0x9481('0x28')];}_0x20ff9a['status'](_0xeff0a5)[_0x9481('0x29')](_0x28ae1b);};}exports['index']=function(_0x2e1eff,_0xe153ab){var _0x22ab26={},_0x13ef93={},_0x2e5e63={'count':0x0,'rows':[]};var _0x53560d=_[_0x9481('0x2a')](db[_0x9481('0x2b')][_0x9481('0x2c')],function(_0x4895a0){return{'name':_0x4895a0['fieldName'],'type':_0x4895a0[_0x9481('0x2d')][_0x9481('0x2e')]};});_0x13ef93[_0x9481('0x2f')]=_[_0x9481('0x2a')](_0x53560d,'name');_0x13ef93['query']=_['keys'](_0x2e1eff[_0x9481('0x30')]);_0x13ef93['filters']=_[_0x9481('0x31')](_0x13ef93['model'],_0x13ef93[_0x9481('0x30')]);_0x22ab26[_0x9481('0x32')]=_[_0x9481('0x31')](_0x13ef93[_0x9481('0x2f')],qs[_0x9481('0x33')](_0x2e1eff['query'][_0x9481('0x33')]));_0x22ab26[_0x9481('0x32')]=_0x22ab26[_0x9481('0x32')]['length']?_0x22ab26[_0x9481('0x32')]:_0x13ef93[_0x9481('0x2f')];if(!_0x2e1eff[_0x9481('0x30')][_0x9481('0x34')](_0x9481('0x35'))){_0x22ab26[_0x9481('0x1e')]=qs['limit'](_0x2e1eff[_0x9481('0x30')]['limit']);_0x22ab26[_0x9481('0x1f')]=qs[_0x9481('0x1f')](_0x2e1eff[_0x9481('0x30')][_0x9481('0x1f')]);}_0x22ab26[_0x9481('0x36')]=qs[_0x9481('0x37')](_0x2e1eff['query'][_0x9481('0x37')]);_0x22ab26[_0x9481('0x38')]=qs['filters'](_['pick'](_0x2e1eff[_0x9481('0x30')],_0x13ef93['filters']),_0x53560d);if(_0x2e1eff[_0x9481('0x30')][_0x9481('0x39')]){_0x22ab26[_0x9481('0x38')]=_[_0x9481('0x3a')](_0x22ab26['where'],{'$or':_[_0x9481('0x2a')](_0x53560d,function(_0x590d50){if(_0x590d50[_0x9481('0x2d')]!=='VIRTUAL'){var _0x2ce972={};_0x2ce972[_0x590d50['name']]={'$like':'%'+_0x2e1eff[_0x9481('0x30')][_0x9481('0x39')]+'%'};return _0x2ce972;}})});}_0x22ab26=_[_0x9481('0x3a')]({},_0x22ab26,_0x2e1eff[_0x9481('0x3b')]);var _0x97dc3e={'where':_0x22ab26[_0x9481('0x38')]};return db[_0x9481('0x2b')]['count'](_0x97dc3e)[_0x9481('0x25')](function(_0x3857e8){_0x2e5e63[_0x9481('0x3c')]=_0x3857e8;if(_0x2e1eff[_0x9481('0x30')][_0x9481('0x3d')]){_0x22ab26[_0x9481('0x3e')]=[{'all':!![]}];}return db[_0x9481('0x2b')]['findAll'](_0x22ab26);})[_0x9481('0x25')](function(_0x1872ff){_0x2e5e63['rows']=_0x1872ff;return _0x2e5e63;})[_0x9481('0x25')](respondWithFilteredResult(_0xe153ab,_0x22ab26))[_0x9481('0x3f')](handleError(_0xe153ab,null));};exports[_0x9481('0x40')]=function(_0x3eb9ee,_0x29a8e9){var _0x5a8ffd={'raw':!![],'where':{'id':_0x3eb9ee['params']['id']}},_0x304791={};_0x304791[_0x9481('0x2f')]=_[_0x9481('0x41')](db['CmHopperFinal']['rawAttributes']);_0x304791[_0x9481('0x30')]=_[_0x9481('0x41')](_0x3eb9ee[_0x9481('0x30')]);_0x304791['filters']=_[_0x9481('0x31')](_0x304791[_0x9481('0x2f')],_0x304791['query']);_0x5a8ffd['attributes']=_[_0x9481('0x31')](_0x304791['model'],qs[_0x9481('0x33')](_0x3eb9ee[_0x9481('0x30')][_0x9481('0x33')]));_0x5a8ffd[_0x9481('0x32')]=_0x5a8ffd[_0x9481('0x32')]['length']?_0x5a8ffd[_0x9481('0x32')]:_0x304791[_0x9481('0x2f')];if(_0x3eb9ee['query'][_0x9481('0x3d')]){_0x5a8ffd[_0x9481('0x3e')]=[{'all':!![]}];}_0x5a8ffd=_[_0x9481('0x3a')]({},_0x5a8ffd,_0x3eb9ee[_0x9481('0x3b')]);return db[_0x9481('0x2b')][_0x9481('0x42')](_0x5a8ffd)[_0x9481('0x25')](handleEntityNotFound(_0x29a8e9,null))[_0x9481('0x25')](respondWithResult(_0x29a8e9,null))[_0x9481('0x3f')](handleError(_0x29a8e9,null));};exports['describe']=function(_0xd36133,_0x5d3a06){return db['CmHopperFinal'][_0x9481('0x43')]()['then'](respondWithResult(_0x5d3a06,null))[_0x9481('0x3f')](handleError(_0x5d3a06,null));};exports[_0x9481('0x24')]=function(_0x47f8b2,_0x277e2a){if(_0x47f8b2[_0x9481('0x44')][_0x9481('0x45')]){delete _0x47f8b2[_0x9481('0x44')][_0x9481('0x45')];}return db[_0x9481('0x2b')]['find']({'where':{'uniqueid':_0x47f8b2['params']['id']}})[_0x9481('0x25')](handleEntityNotFound(_0x277e2a,null))[_0x9481('0x25')](saveUpdates(_0x47f8b2[_0x9481('0x44')],null))[_0x9481('0x25')](respondWithResult(_0x277e2a,null))[_0x9481('0x3f')](handleError(_0x277e2a,null));};exports[_0x9481('0x46')]=function(_0x1c070c,_0x3d2250,_0x580273){return db[_0x9481('0x2b')][_0x9481('0x47')]({'raw':![],'where':{'VoiceQueueId':_0x1c070c[_0x9481('0x48')]['id']},'attributes':[[db[_0x9481('0x49')]['fn'](_0x9481('0x4a'),db['sequelize']['fn']('IF',db['sequelize'][_0x9481('0x4b')](_0x9481('0x4c')))),_0x9481('0x4d')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize']['literal']('`state`\x20=\x203,\x201,\x20null'))),'noAnswerContacts'],[db[_0x9481('0x49')]['fn'](_0x9481('0x4a'),db['sequelize']['fn']('IF',db[_0x9481('0x49')]['literal'](_0x9481('0x4e')))),_0x9481('0x4f')],[db[_0x9481('0x49')]['fn'](_0x9481('0x4a'),db[_0x9481('0x49')]['fn']('IF',db[_0x9481('0x49')][_0x9481('0x4b')]('`state`\x20=\x208,\x201,\x20null'))),_0x9481('0x50')],[db[_0x9481('0x49')]['fn']('COUNT',db[_0x9481('0x49')]['fn']('IF',db[_0x9481('0x49')][_0x9481('0x4b')](_0x9481('0x51')))),_0x9481('0x52')],[db['sequelize']['fn'](_0x9481('0x4a'),db[_0x9481('0x49')]['fn']('IF',db[_0x9481('0x49')][_0x9481('0x4b')](_0x9481('0x53')))),_0x9481('0x54')],[db[_0x9481('0x49')]['fn'](_0x9481('0x4a'),db[_0x9481('0x49')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2022,\x201,\x20null'))),_0x9481('0x55')],[db[_0x9481('0x49')]['fn']('COUNT',db[_0x9481('0x49')]['fn']('IF',db[_0x9481('0x49')][_0x9481('0x4b')](_0x9481('0x56')))),_0x9481('0x57')]]})[_0x9481('0x25')](handleEntityNotFound(_0x3d2250,null))['then'](respondWithResult(_0x3d2250,null))['catch'](handleError(_0x3d2250,null));};exports[_0x9481('0x58')]=function(_0x3cbab5,_0xb58b67,_0xe008db){return db[_0x9481('0x2b')][_0x9481('0x47')]({'raw':![],'where':{'CampaignId':_0x3cbab5['params']['id']},'attributes':[[db['sequelize']['fn'](_0x9481('0x4a'),db['sequelize']['fn']('IF',db[_0x9481('0x49')]['literal'](_0x9481('0x4c')))),_0x9481('0x4d')],[db[_0x9481('0x49')]['fn']('COUNT',db[_0x9481('0x49')]['fn']('IF',db[_0x9481('0x49')]['literal']('`state`\x20=\x203,\x201,\x20null'))),'noAnswerContacts'],[db['sequelize']['fn'](_0x9481('0x4a'),db['sequelize']['fn']('IF',db[_0x9481('0x49')][_0x9481('0x4b')](_0x9481('0x4e')))),'busyContacts'],[db[_0x9481('0x49')]['fn']('COUNT',db[_0x9481('0x49')]['fn']('IF',db[_0x9481('0x49')][_0x9481('0x4b')]('`state`\x20=\x208,\x201,\x20null'))),_0x9481('0x50')],[db[_0x9481('0x49')]['fn']('COUNT',db[_0x9481('0x49')]['fn']('IF',db[_0x9481('0x49')][_0x9481('0x4b')](_0x9481('0x51')))),_0x9481('0x52')],[db[_0x9481('0x49')]['fn'](_0x9481('0x4a'),db[_0x9481('0x49')]['fn']('IF',db[_0x9481('0x49')][_0x9481('0x4b')](_0x9481('0x53')))),_0x9481('0x54')],[db[_0x9481('0x49')]['fn'](_0x9481('0x4a'),db[_0x9481('0x49')]['fn']('IF',db[_0x9481('0x49')][_0x9481('0x4b')]('`state`\x20=\x2022,\x201,\x20null'))),_0x9481('0x55')],[db['sequelize']['fn']('COUNT',db[_0x9481('0x49')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2019,\x201,\x20null'))),_0x9481('0x57')]]})[_0x9481('0x25')](handleEntityNotFound(_0xb58b67,null))[_0x9481('0x25')](respondWithResult(_0xb58b67,null))[_0x9481('0x3f')](handleError(_0xb58b67,null));};exports['moveContactsQueueCampaignHopperFinal']=function(_0xa83176,_0x265f1c,_0x2a053a){return db[_0x9481('0x59')]['find']({'where':{'id':_0xa83176['params']['id']}})[_0x9481('0x25')](handleEntityNotFound(_0x265f1c,null))[_0x9481('0x25')](function(_0x193992){var _0x380f2a;if(_0x193992){_0x380f2a=squel[_0x9481('0x5a')]()['into'](_0x9481('0x5b'))[_0x9481('0x5c')]([_0x9481('0x5d'),_0x9481('0x5e'),_0x9481('0x5f'),_0x9481('0x60'),_0x9481('0x61'),_0x9481('0x62'),_0x9481('0x63')],squel[_0x9481('0x64')]()[_0x9481('0x65')](_0x9481('0x66'),_0x9481('0x5d'))[_0x9481('0x65')](_0x9481('0x67'),'scheduledAt')[_0x9481('0x65')](_0x9481('0x68'),_0x9481('0x5f'))[_0x9481('0x65')](_0x9481('0x69'),_0x9481('0x60'))[_0x9481('0x65')]('ANY_VALUE(VoiceQueueId)',_0x9481('0x61'))[_0x9481('0x65')]('NOW()','createdAt')[_0x9481('0x65')]('NOW()','updatedAt')[_0x9481('0x6a')]('cm_hopper_final')[_0x9481('0x38')](_0x9481('0x6b'),_0xa83176[_0x9481('0x48')]['id'][_0x9481('0x6c')]())['where'](_0x9481('0x6d'),_0xa83176['body'][_0x9481('0x6e')][_0x9481('0x6c')]())[_0x9481('0x38')]('calleridnum\x20IS\x20NOT\x20NULL')['where']('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x9481('0x64')]()['field']('phone')[_0x9481('0x6a')](_0x9481('0x5b'))[_0x9481('0x38')]('VoiceQueueId\x20=\x20?',_0xa83176[_0x9481('0x48')]['id'][_0x9481('0x6c')]()))['where'](_0x9481('0x6f'),squel[_0x9481('0x64')]()[_0x9481('0x65')](_0x9481('0x70'))['from'](_0x9481('0x71'))['where'](_0x9481('0x6b'),_0xa83176[_0x9481('0x48')]['id']['toString']())[_0x9481('0x38')](_0x9481('0x72')))[_0x9481('0x73')]('ContactId'))['toString']();return db[_0x9481('0x49')]['query'](_0x380f2a);}return[];})[_0x9481('0x25')](respondWithResult(_0x265f1c,null))[_0x9481('0x3f')](handleError(_0x265f1c,null));};exports[_0x9481('0x74')]=function(_0x55b428,_0x3f74f1,_0x287d06){return db[_0x9481('0x75')]['find']({'where':{'id':_0x55b428[_0x9481('0x48')]['id']}})[_0x9481('0x25')](handleEntityNotFound(_0x3f74f1,null))[_0x9481('0x25')](function(_0x32b30f){var _0x347da1;if(_0x32b30f){_0x347da1=squel[_0x9481('0x5a')]()[_0x9481('0x76')](_0x9481('0x5b'))[_0x9481('0x5c')]([_0x9481('0x5d'),'scheduledAt',_0x9481('0x5f'),'ListId','CampaignId','createdAt',_0x9481('0x63')],squel[_0x9481('0x64')]()[_0x9481('0x65')](_0x9481('0x66'),_0x9481('0x5d'))['field'](_0x9481('0x67'),_0x9481('0x5e'))[_0x9481('0x65')](_0x9481('0x68'),_0x9481('0x5f'))[_0x9481('0x65')](_0x9481('0x69'),_0x9481('0x60'))[_0x9481('0x65')](_0x9481('0x77'),'CampaignId')[_0x9481('0x65')](_0x9481('0x67'),_0x9481('0x62'))[_0x9481('0x65')](_0x9481('0x67'),_0x9481('0x63'))[_0x9481('0x6a')](_0x9481('0x71'))[_0x9481('0x38')](_0x9481('0x78'),_0x55b428['params']['id'][_0x9481('0x6c')]())[_0x9481('0x38')](_0x9481('0x6d'),_0x55b428[_0x9481('0x44')][_0x9481('0x6e')][_0x9481('0x6c')]())[_0x9481('0x38')](_0x9481('0x79'))[_0x9481('0x38')]('calleridnum\x20NOT\x20IN\x20(?)',squel[_0x9481('0x64')]()['field']('phone')[_0x9481('0x6a')](_0x9481('0x5b'))[_0x9481('0x38')](_0x9481('0x78'),_0x55b428[_0x9481('0x48')]['id'][_0x9481('0x6c')]()))['where'](_0x9481('0x6f'),squel['select']()[_0x9481('0x65')](_0x9481('0x70'))[_0x9481('0x6a')]('cm_hopper_final')['where'](_0x9481('0x78'),_0x55b428[_0x9481('0x48')]['id'][_0x9481('0x6c')]())[_0x9481('0x38')](_0x9481('0x72')))[_0x9481('0x73')](_0x9481('0x5f')))[_0x9481('0x6c')]();return db[_0x9481('0x49')]['query'](_0x347da1);}return[];})[_0x9481('0x25')](respondWithResult(_0x3f74f1,null))[_0x9481('0x3f')](handleError(_0x3f74f1,null));};exports['checkContactHopper']=function(_0x2c53df,_0x534979,_0x616b77){return db[_0x9481('0x7a')]['findOne']({'where':{'VoiceQueueId':_0x2c53df[_0x9481('0x44')][_0x9481('0x61')],'CampaignId':_0x2c53df[_0x9481('0x44')]['CampaignId'],'ContactId':_0x2c53df[_0x9481('0x44')][_0x9481('0x5f')]}})['then'](handleEntityNotFound(_0x534979,null))[_0x9481('0x25')](function(_0x5c7602){if(_0x5c7602){return _0x5c7602;}return null;})[_0x9481('0x25')](respondWithResult(_0x534979,null))[_0x9481('0x3f')](handleError(_0x534979,null));};
\ No newline at end of file
index 5b33c52..319187d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb5aa=['define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./cmHopperFinal.attributes','exports'];(function(_0x4c7fb5,_0x2548ef){var _0x2e10ac=function(_0xf7e27c){while(--_0xf7e27c){_0x4c7fb5['push'](_0x4c7fb5['shift']());}};_0x2e10ac(++_0x2548ef);}(_0xb5aa,0xc8));var _0xab5a=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0xb5aa[_0x173441];return _0x2423a8;};'use strict';var _=require(_0xab5a('0x0'));var util=require(_0xab5a('0x1'));var logger=require(_0xab5a('0x2'))(_0xab5a('0x3'));var moment=require('moment');var BPromise=require(_0xab5a('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xab5a('0x5'));var rimraf=require(_0xab5a('0x6'));var config=require(_0xab5a('0x7'));var attributes=require(_0xab5a('0x8'));module[_0xab5a('0x9')]=function(_0x2bea42,_0x479f72){return _0x2bea42[_0xab5a('0xa')](_0xab5a('0xb'),attributes,{'tableName':_0xab5a('0xc'),'paranoid':![],'indexes':[{'name':_0xab5a('0xd'),'fields':[_0xab5a('0xd')]},{'name':_0xab5a('0xe'),'fields':[_0xab5a('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x944c=['path','../../config/environment','./cmHopperFinal.attributes','exports','define','CmHopperFinal','cm_hopper_final','calleridnum','uniqueid','../../config/logger','api','moment','request-promise'];(function(_0x4c966e,_0x1fa276){var _0x49bfad=function(_0x576a01){while(--_0x576a01){_0x4c966e['push'](_0x4c966e['shift']());}};_0x49bfad(++_0x1fa276);}(_0x944c,0x175));var _0xc944=function(_0x586ba0,_0x3c033e){_0x586ba0=_0x586ba0-0x0;var _0x1e010a=_0x944c[_0x586ba0];return _0x1e010a;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xc944('0x0'))(_0xc944('0x1'));var moment=require(_0xc944('0x2'));var BPromise=require('bluebird');var rp=require(_0xc944('0x3'));var fs=require('fs');var path=require(_0xc944('0x4'));var rimraf=require('rimraf');var config=require(_0xc944('0x5'));var attributes=require(_0xc944('0x6'));module[_0xc944('0x7')]=function(_0x12352f,_0xb20913){return _0x12352f[_0xc944('0x8')](_0xc944('0x9'),attributes,{'tableName':_0xc944('0xa'),'paranoid':![],'indexes':[{'name':_0xc944('0xb'),'fields':[_0xc944('0xb')]},{'name':_0xc944('0xc'),'fields':[_0xc944('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 2bc5e39..2515d07 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x26d73f,_0x32fd2f){var _0x3258ab=function(_0x4a9537){while(--_0x4a9537){_0x26d73f['push'](_0x26d73f['shift']());}};_0x3258ab(++_0x32fd2f);}(_0x7a54,0x106));var _0x47a5=function(_0x4afd8a,_0x3374ad){_0x4afd8a=_0x4afd8a-0x0;var _0x546be9=_0x7a54[_0x4afd8a];return _0x546be9;};'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
+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(_0x5089eb,_0x5be684){var _0x5c9671=function(_0x3524d6){while(--_0x3524d6){_0x5089eb['push'](_0x5089eb['shift']());}};_0x5c9671(++_0x5be684);}(_0xb10b,0x12a));var _0xbb10=function(_0x4ec90d,_0x5f80cb){_0x4ec90d=_0x4ec90d-0x0;var _0x371da6=_0xb10b[_0x4ec90d];return _0x371da6;};'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
index 39e97aa..05a32a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff86=['multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./cmHopperFinal.controller','get','/describe','isAuthenticated','describe','/:id','show','/voice/queue/countAttributes/:id','/campaign/countAttributes/:id','countContactsIvrCampaignHopperFinal','post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','/voice/campaign/moveContacts/:id','moveContactsIvrCampaignHopperFinal','checkContactHopper','put','update','exports'];(function(_0x57bd0a,_0x58b2f0){var _0x166e1f=function(_0x3d80d6){while(--_0x3d80d6){_0x57bd0a['push'](_0x57bd0a['shift']());}};_0x166e1f(++_0x58b2f0);}(_0xff86,0x1a4));var _0x6ff8=function(_0x5555db,_0x3fbac9){_0x5555db=_0x5555db-0x0;var _0x2b45f1=_0xff86[_0x5555db];return _0x2b45f1;};'use strict';var multer=require(_0x6ff8('0x0'));var util=require(_0x6ff8('0x1'));var path=require(_0x6ff8('0x2'));var timeout=require(_0x6ff8('0x3'));var express=require('express');var router=express[_0x6ff8('0x4')]();var fs_extra=require(_0x6ff8('0x5'));var auth=require(_0x6ff8('0x6'));var interaction=require(_0x6ff8('0x7'));var config=require(_0x6ff8('0x8'));var controller=require(_0x6ff8('0x9'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x6ff8('0xa')](_0x6ff8('0xb'),auth[_0x6ff8('0xc')](),controller[_0x6ff8('0xd')]);router['get'](_0x6ff8('0xe'),auth[_0x6ff8('0xc')](),controller[_0x6ff8('0xf')]);router['get'](_0x6ff8('0x10'),auth[_0x6ff8('0xc')](),controller['countContactsQueueCampaignHopperFinal']);router[_0x6ff8('0xa')](_0x6ff8('0x11'),auth[_0x6ff8('0xc')](),controller[_0x6ff8('0x12')]);router[_0x6ff8('0x13')](_0x6ff8('0x14'),auth[_0x6ff8('0xc')](),controller[_0x6ff8('0x15')]);router[_0x6ff8('0x13')](_0x6ff8('0x16'),auth[_0x6ff8('0xc')](),controller[_0x6ff8('0x17')]);router[_0x6ff8('0x13')]('/checkContactHopper',auth['isAuthenticated'](),controller[_0x6ff8('0x18')]);router[_0x6ff8('0x19')](_0x6ff8('0xe'),auth[_0x6ff8('0xc')](),controller[_0x6ff8('0x1a')]);module[_0x6ff8('0x1b')]=router;
\ No newline at end of file
+var _0x3895=['post','/voice/queue/moveContacts/:id','moveContactsQueueCampaignHopperFinal','moveContactsIvrCampaignHopperFinal','checkContactHopper','put','update','exports','util','express','Router','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','/voice/queue/countAttributes/:id'];(function(_0x1f8aba,_0x421c46){var _0x4ae66e=function(_0x389d35){while(--_0x389d35){_0x1f8aba['push'](_0x1f8aba['shift']());}};_0x4ae66e(++_0x421c46);}(_0x3895,0x112));var _0x5389=function(_0xe18293,_0x1fab04){_0xe18293=_0xe18293-0x0;var _0x145026=_0x3895[_0xe18293];return _0x145026;};'use strict';var multer=require('multer');var util=require(_0x5389('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x5389('0x1'));var router=express[_0x5389('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x5389('0x3'));var controller=require('./cmHopperFinal.controller');router[_0x5389('0x4')]('/',auth['isAuthenticated'](),controller[_0x5389('0x5')]);router['get'](_0x5389('0x6'),auth[_0x5389('0x7')](),controller[_0x5389('0x8')]);router[_0x5389('0x4')](_0x5389('0x9'),auth[_0x5389('0x7')](),controller['show']);router[_0x5389('0x4')](_0x5389('0xa'),auth['isAuthenticated'](),controller['countContactsQueueCampaignHopperFinal']);router[_0x5389('0x4')]('/campaign/countAttributes/:id',auth[_0x5389('0x7')](),controller['countContactsIvrCampaignHopperFinal']);router[_0x5389('0xb')](_0x5389('0xc'),auth[_0x5389('0x7')](),controller[_0x5389('0xd')]);router[_0x5389('0xb')]('/voice/campaign/moveContacts/:id',auth[_0x5389('0x7')](),controller[_0x5389('0xe')]);router[_0x5389('0xb')]('/checkContactHopper',auth[_0x5389('0x7')](),controller[_0x5389('0xf')]);router[_0x5389('0x10')]('/:id',auth[_0x5389('0x7')](),controller[_0x5389('0x11')]);module[_0x5389('0x12')]=router;
\ No newline at end of file
index c86911c..87f28d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb4f2=['BOOLEAN','sequelize','INTEGER','STRING','DATE'];(function(_0x3a1292,_0x1c1dbc){var _0x462677=function(_0x31f48f){while(--_0x31f48f){_0x3a1292['push'](_0x3a1292['shift']());}};_0x462677(++_0x1c1dbc);}(_0xb4f2,0x196));var _0x2b4f=function(_0x1afd7a,_0x5d8725){_0x1afd7a=_0x1afd7a-0x0;var _0x30be4b=_0xb4f2[_0x1afd7a];return _0x30be4b;};'use strict';var Sequelize=require(_0x2b4f('0x0'));module['exports']={'state':{'type':Sequelize[_0x2b4f('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x2b4f('0x2')]},'scheduledat':{'type':Sequelize[_0x2b4f('0x3')]},'countbusyretry':{'type':Sequelize[_0x2b4f('0x1')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x2b4f('0x1')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x2b4f('0x1')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x2b4f('0x1')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x2b4f('0x2')]},'originatecalleridnum':{'type':Sequelize[_0x2b4f('0x2')]},'originatecalleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x2b4f('0x2')]},'calleridname':{'type':Sequelize[_0x2b4f('0x2')]},'starttime':{'type':Sequelize[_0x2b4f('0x3')]},'responsetime':{'type':Sequelize[_0x2b4f('0x3')]},'answertime':{'type':Sequelize[_0x2b4f('0x3')]},'droptime':{'type':Sequelize['DATE']},'endtime':{'type':Sequelize[_0x2b4f('0x3')]},'ringtime':{'type':Sequelize[_0x2b4f('0x1')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x2b4f('0x1')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x2b4f('0x1')],'defaultValue':0x0},'dropreason':{'type':Sequelize['STRING']},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize['STRING']},'membername':{'type':Sequelize[_0x2b4f('0x2')]},'reason':{'type':Sequelize[_0x2b4f('0x2')]},'amd':{'type':Sequelize[_0x2b4f('0x4')],'defaultValue':![]},'fax':{'type':Sequelize[_0x2b4f('0x4')],'defaultValue':![]},'callback':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x2b4f('0x2')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x2b4f('0x3')]},'recallme':{'type':Sequelize[_0x2b4f('0x4')],'defaultValue':![]},'editedat':{'type':Sequelize[_0x2b4f('0x3')]},'edited':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countdropretry':{'type':Sequelize[_0x2b4f('0x1')],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x2b4f('0x1')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize[_0x2b4f('0x1')],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x2b4f('0x2')]}};
\ No newline at end of file
+var _0x34e9=['exports','INTEGER','STRING','DATE','BOOLEAN','sequelize'];(function(_0x368e27,_0x3be35a){var _0x28a5f6=function(_0x26f688){while(--_0x26f688){_0x368e27['push'](_0x368e27['shift']());}};_0x28a5f6(++_0x3be35a);}(_0x34e9,0x167));var _0x934e=function(_0x3d84ae,_0xe71192){_0x3d84ae=_0x3d84ae-0x0;var _0x34d0cc=_0x34e9[_0x3d84ae];return _0x34d0cc;};'use strict';var Sequelize=require(_0x934e('0x0'));module[_0x934e('0x1')]={'state':{'type':Sequelize[_0x934e('0x2')](0x2)},'statedesc':{'type':Sequelize[_0x934e('0x3')]},'scheduledat':{'type':Sequelize['DATE']},'countbusyretry':{'type':Sequelize[_0x934e('0x2')],'defaultValue':0x0},'countcongestionretry':{'type':Sequelize[_0x934e('0x2')],'defaultValue':0x0},'countnoanswerretry':{'type':Sequelize[_0x934e('0x2')],'defaultValue':0x0},'countglobal':{'type':Sequelize[_0x934e('0x2')],'defaultValue':0x0},'uniqueid':{'type':Sequelize[_0x934e('0x3')]},'originatecalleridnum':{'type':Sequelize['STRING']},'originatecalleridname':{'type':Sequelize[_0x934e('0x3')]},'calleridnum':{'type':Sequelize[_0x934e('0x3')]},'calleridname':{'type':Sequelize[_0x934e('0x3')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x934e('0x4')]},'answertime':{'type':Sequelize[_0x934e('0x4')]},'droptime':{'type':Sequelize[_0x934e('0x4')]},'endtime':{'type':Sequelize[_0x934e('0x4')]},'ringtime':{'type':Sequelize[_0x934e('0x2')],'defaultValue':0x0},'holdtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'talktime':{'type':Sequelize[_0x934e('0x2')],'defaultValue':0x0},'followuptime':{'type':Sequelize[_0x934e('0x2')],'defaultValue':0x0},'dropreason':{'type':Sequelize[_0x934e('0x3')]},'campaign':{'type':Sequelize[_0x934e('0x3')]},'campaigntype':{'type':Sequelize[_0x934e('0x3')]},'membername':{'type':Sequelize[_0x934e('0x3')]},'reason':{'type':Sequelize[_0x934e('0x3')]},'amd':{'type':Sequelize[_0x934e('0x5')],'defaultValue':![]},'fax':{'type':Sequelize[_0x934e('0x5')],'defaultValue':![]},'callback':{'type':Sequelize[_0x934e('0x5')],'defaultValue':![]},'callbackuniqueid':{'type':Sequelize[_0x934e('0x3')],'defaultValue':null},'callbackat':{'type':Sequelize[_0x934e('0x4')]},'recallme':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'editedat':{'type':Sequelize[_0x934e('0x4')]},'edited':{'type':Sequelize[_0x934e('0x5')],'defaultValue':![]},'countnosuchnumberretry':{'type':Sequelize[_0x934e('0x2')],'defaultValue':0x0},'countdropretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'countabandonedretry':{'type':Sequelize[_0x934e('0x2')],'defaultValue':0x0},'countmachineretry':{'type':Sequelize[_0x934e('0x2')],'defaultValue':0x0},'countagentrejectretry':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'dialTimezone':{'type':Sequelize[_0x934e('0x3')]}};
\ No newline at end of file
index 1aa7b05..a15f749 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f71=['merge','type','VIRTUAL','include','findAll','rows','catch','show','params','rawAttributes','find','create','body','describe','uniqueid','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','ioredis','../../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','set','Content-Range','json','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','CmHopperHistory','fieldName','key','keys','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','pick','filter','where'];(function(_0x4ac716,_0x40243f){var _0x35f56b=function(_0x14e518){while(--_0x14e518){_0x4ac716['push'](_0x4ac716['shift']());}};_0x35f56b(++_0x40243f);}(_0x8f71,0x157));var _0x18f7=function(_0x1dd7a3,_0x2d7819){_0x1dd7a3=_0x1dd7a3-0x0;var _0x473c5d=_0x8f71[_0x1dd7a3];return _0x473c5d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x18f7('0x0'));var zipdir=require(_0x18f7('0x1'));var jsonpatch=require(_0x18f7('0x2'));var rp=require(_0x18f7('0x3'));var moment=require(_0x18f7('0x4'));var BPromise=require(_0x18f7('0x5'));var Mustache=require(_0x18f7('0x6'));var util=require(_0x18f7('0x7'));var path=require(_0x18f7('0x8'));var sox=require(_0x18f7('0x9'));var csv=require(_0x18f7('0xa'));var ejs=require(_0x18f7('0xb'));var fs=require('fs');var fs_extra=require(_0x18f7('0xc'));var _=require(_0x18f7('0xd'));var squel=require(_0x18f7('0xe'));var crypto=require(_0x18f7('0xf'));var jsforce=require(_0x18f7('0x10'));var deskjs=require(_0x18f7('0x11'));var toCsv=require(_0x18f7('0xa'));var querystring=require(_0x18f7('0x12'));var Papa=require('papaparse');var Redis=require(_0x18f7('0x13'));var authService=require(_0x18f7('0x14'));var qs=require(_0x18f7('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x18f7('0x16'));var logger=require(_0x18f7('0x17'))(_0x18f7('0x18'));var utils=require(_0x18f7('0x19'));var config=require(_0x18f7('0x1a'));var licenseUtil=require(_0x18f7('0x1b'));var db=require(_0x18f7('0x1c'))['db'];function respondWithStatusCode(_0x1c5165,_0x58b30d){_0x58b30d=_0x58b30d||0xcc;return function(_0x17c005){if(_0x17c005){return _0x1c5165['sendStatus'](_0x58b30d);}return _0x1c5165[_0x18f7('0x1d')](_0x58b30d)[_0x18f7('0x1e')]();};}function respondWithResult(_0x4f4e0a,_0x3dc2b0){_0x3dc2b0=_0x3dc2b0||0xc8;return function(_0xc9d7cc){if(_0xc9d7cc){return _0x4f4e0a[_0x18f7('0x1d')](_0x3dc2b0)['json'](_0xc9d7cc);}};}function respondWithFilteredResult(_0x514162,_0x1068cd){return function(_0x5dc69c){if(_0x5dc69c){var _0x27cf95=typeof _0x1068cd[_0x18f7('0x1f')]===_0x18f7('0x20')&&typeof _0x1068cd[_0x18f7('0x21')]==='undefined';var _0x2c8098=_0x5dc69c[_0x18f7('0x22')];var _0x2b2e17=_0x27cf95?0x0:_0x1068cd['offset'];var _0x32233e=_0x27cf95?_0x5dc69c[_0x18f7('0x22')]:_0x1068cd[_0x18f7('0x1f')]+_0x1068cd[_0x18f7('0x21')];var _0x4c9477;if(_0x32233e>=_0x2c8098){_0x32233e=_0x2c8098;_0x4c9477=0xc8;}else{_0x4c9477=0xce;}_0x514162['status'](_0x4c9477);return _0x514162[_0x18f7('0x23')](_0x18f7('0x24'),_0x2b2e17+'-'+_0x32233e+'/'+_0x2c8098)[_0x18f7('0x25')](_0x5dc69c);}return null;};}function patchUpdates(_0x7a56ce){return function(_0x2f8b48){try{jsonpatch['apply'](_0x2f8b48,_0x7a56ce,!![]);}catch(_0x24f7ca){return BPromise[_0x18f7('0x26')](_0x24f7ca);}return _0x2f8b48[_0x18f7('0x27')]();};}function saveUpdates(_0x2c8cf9,_0x3fbd39){return function(_0x444f34){if(_0x444f34){return _0x444f34[_0x18f7('0x28')](_0x2c8cf9)[_0x18f7('0x29')](function(_0x56afa8){return _0x56afa8;});}return null;};}function removeEntity(_0xdd088f,_0x2ec7cb){return function(_0x137d9c){if(_0x137d9c){return _0x137d9c[_0x18f7('0x2a')]()[_0x18f7('0x29')](function(){_0xdd088f['status'](0xcc)[_0x18f7('0x1e')]();});}};}function handleEntityNotFound(_0x35464a,_0x35c212){return function(_0x1cf03e){if(!_0x1cf03e){_0x35464a[_0x18f7('0x2b')](0x194);}return _0x1cf03e;};}function handleError(_0x11be80,_0x2ac81d){_0x2ac81d=_0x2ac81d||0x1f4;return function(_0x38db66){logger[_0x18f7('0x2c')](_0x38db66[_0x18f7('0x2d')]);if(_0x38db66[_0x18f7('0x2e')]){delete _0x38db66['name'];}_0x11be80['status'](_0x2ac81d)[_0x18f7('0x2f')](_0x38db66);};}exports[_0x18f7('0x30')]=function(_0x5734b1,_0x402b3c){var _0x1113bc={},_0x1c19ad={},_0x310737={'count':0x0,'rows':[]};var _0x2730f6=_[_0x18f7('0x31')](db[_0x18f7('0x32')]['rawAttributes'],function(_0x5de949){return{'name':_0x5de949[_0x18f7('0x33')],'type':_0x5de949['type'][_0x18f7('0x34')]};});_0x1c19ad['model']=_[_0x18f7('0x31')](_0x2730f6,_0x18f7('0x2e'));_0x1c19ad['query']=_[_0x18f7('0x35')](_0x5734b1[_0x18f7('0x36')]);_0x1c19ad[_0x18f7('0x37')]=_[_0x18f7('0x38')](_0x1c19ad[_0x18f7('0x39')],_0x1c19ad[_0x18f7('0x36')]);_0x1113bc[_0x18f7('0x3a')]=_['intersection'](_0x1c19ad[_0x18f7('0x39')],qs[_0x18f7('0x3b')](_0x5734b1[_0x18f7('0x36')][_0x18f7('0x3b')]));_0x1113bc[_0x18f7('0x3a')]=_0x1113bc[_0x18f7('0x3a')][_0x18f7('0x3c')]?_0x1113bc[_0x18f7('0x3a')]:_0x1c19ad['model'];if(!_0x5734b1['query']['hasOwnProperty'](_0x18f7('0x3d'))){_0x1113bc[_0x18f7('0x21')]=qs[_0x18f7('0x21')](_0x5734b1[_0x18f7('0x36')]['limit']);_0x1113bc[_0x18f7('0x1f')]=qs[_0x18f7('0x1f')](_0x5734b1['query']['offset']);}_0x1113bc[_0x18f7('0x3e')]=qs[_0x18f7('0x3f')](_0x5734b1[_0x18f7('0x36')]['sort']);_0x1113bc['where']=qs[_0x18f7('0x37')](_[_0x18f7('0x40')](_0x5734b1[_0x18f7('0x36')],_0x1c19ad[_0x18f7('0x37')]),_0x2730f6);if(_0x5734b1[_0x18f7('0x36')][_0x18f7('0x41')]){_0x1113bc[_0x18f7('0x42')]=_[_0x18f7('0x43')](_0x1113bc['where'],{'$or':_[_0x18f7('0x31')](_0x2730f6,function(_0x1f583c){if(_0x1f583c[_0x18f7('0x44')]!==_0x18f7('0x45')){var _0x25dc5b={};_0x25dc5b[_0x1f583c[_0x18f7('0x2e')]]={'$like':'%'+_0x5734b1['query'][_0x18f7('0x41')]+'%'};return _0x25dc5b;}})});}_0x1113bc=_[_0x18f7('0x43')]({},_0x1113bc,_0x5734b1['options']);var _0x5b8cc0={'where':_0x1113bc['where']};return db[_0x18f7('0x32')][_0x18f7('0x22')](_0x5b8cc0)[_0x18f7('0x29')](function(_0x42bd0c){_0x310737[_0x18f7('0x22')]=_0x42bd0c;if(_0x5734b1[_0x18f7('0x36')]['includeAll']){_0x1113bc[_0x18f7('0x46')]=[{'all':!![]}];}return db[_0x18f7('0x32')][_0x18f7('0x47')](_0x1113bc);})[_0x18f7('0x29')](function(_0x1a7e69){_0x310737[_0x18f7('0x48')]=_0x1a7e69;return _0x310737;})[_0x18f7('0x29')](respondWithFilteredResult(_0x402b3c,_0x1113bc))[_0x18f7('0x49')](handleError(_0x402b3c,null));};exports[_0x18f7('0x4a')]=function(_0x285d5b,_0x1dfe80){var _0x519be6={'raw':!![],'where':{'id':_0x285d5b[_0x18f7('0x4b')]['id']}},_0x41971e={};_0x41971e[_0x18f7('0x39')]=_[_0x18f7('0x35')](db['CmHopperHistory'][_0x18f7('0x4c')]);_0x41971e[_0x18f7('0x36')]=_['keys'](_0x285d5b['query']);_0x41971e[_0x18f7('0x37')]=_[_0x18f7('0x38')](_0x41971e[_0x18f7('0x39')],_0x41971e[_0x18f7('0x36')]);_0x519be6[_0x18f7('0x3a')]=_[_0x18f7('0x38')](_0x41971e[_0x18f7('0x39')],qs[_0x18f7('0x3b')](_0x285d5b[_0x18f7('0x36')]['fields']));_0x519be6[_0x18f7('0x3a')]=_0x519be6[_0x18f7('0x3a')][_0x18f7('0x3c')]?_0x519be6['attributes']:_0x41971e[_0x18f7('0x39')];if(_0x285d5b[_0x18f7('0x36')]['includeAll']){_0x519be6['include']=[{'all':!![]}];}_0x519be6=_[_0x18f7('0x43')]({},_0x519be6,_0x285d5b['options']);return db['CmHopperHistory'][_0x18f7('0x4d')](_0x519be6)[_0x18f7('0x29')](handleEntityNotFound(_0x1dfe80,null))['then'](respondWithResult(_0x1dfe80,null))[_0x18f7('0x49')](handleError(_0x1dfe80,null));};exports[_0x18f7('0x4e')]=function(_0x1bdfe6,_0x3286d6){return db['CmHopperHistory'][_0x18f7('0x4e')](_0x1bdfe6[_0x18f7('0x4f')],{})[_0x18f7('0x29')](respondWithResult(_0x3286d6,0xc9))['catch'](handleError(_0x3286d6,null));};exports[_0x18f7('0x50')]=function(_0x590c93,_0x2f9b04){return db[_0x18f7('0x32')][_0x18f7('0x50')]()[_0x18f7('0x29')](respondWithResult(_0x2f9b04,null))[_0x18f7('0x49')](handleError(_0x2f9b04,null));};exports[_0x18f7('0x28')]=function(_0x2f3eb4,_0x592627){if(_0x2f3eb4[_0x18f7('0x4f')]['uniqueid']){delete _0x2f3eb4[_0x18f7('0x4f')][_0x18f7('0x51')];}return db[_0x18f7('0x32')][_0x18f7('0x4d')]({'where':{'uniqueid':_0x2f3eb4[_0x18f7('0x4b')]['id']}})[_0x18f7('0x29')](handleEntityNotFound(_0x592627,null))[_0x18f7('0x29')](saveUpdates(_0x2f3eb4[_0x18f7('0x4f')],null))[_0x18f7('0x29')](respondWithResult(_0x592627,null))[_0x18f7('0x49')](handleError(_0x592627,null));};
\ No newline at end of file
+var _0x7e36=['where','pick','filter','merge','type','VIRTUAL','options','CmHopperHistory','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','describe','uniqueid','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','ejs','lodash','desk.js','to-csv','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','offset','undefined','count','limit','set','apply','reject','update','then','destroy','sendStatus','error','name','map','rawAttributes','fieldName','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','order','sort'];(function(_0x2be6a7,_0x5288da){var _0x5ca04d=function(_0x69c63b){while(--_0x69c63b){_0x2be6a7['push'](_0x2be6a7['shift']());}};_0x5ca04d(++_0x5288da);}(_0x7e36,0x13d));var _0x67e3=function(_0x2d2949,_0x24c559){_0x2d2949=_0x2d2949-0x0;var _0x4bb11f=_0x7e36[_0x2d2949];return _0x4bb11f;};'use strict';var emlformat=require(_0x67e3('0x0'));var rimraf=require(_0x67e3('0x1'));var zipdir=require(_0x67e3('0x2'));var jsonpatch=require(_0x67e3('0x3'));var rp=require('request-promise');var moment=require(_0x67e3('0x4'));var BPromise=require(_0x67e3('0x5'));var Mustache=require(_0x67e3('0x6'));var util=require(_0x67e3('0x7'));var path=require(_0x67e3('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x67e3('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x67e3('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x67e3('0xb'));var toCsv=require(_0x67e3('0xc'));var querystring=require(_0x67e3('0xd'));var Papa=require(_0x67e3('0xe'));var Redis=require(_0x67e3('0xf'));var authService=require(_0x67e3('0x10'));var qs=require(_0x67e3('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x67e3('0x12'));var logger=require(_0x67e3('0x13'))('api');var utils=require(_0x67e3('0x14'));var config=require(_0x67e3('0x15'));var licenseUtil=require(_0x67e3('0x16'));var db=require(_0x67e3('0x17'))['db'];function respondWithStatusCode(_0x53dc49,_0x152803){_0x152803=_0x152803||0xcc;return function(_0x3a01e4){if(_0x3a01e4){return _0x53dc49['sendStatus'](_0x152803);}return _0x53dc49[_0x67e3('0x18')](_0x152803)[_0x67e3('0x19')]();};}function respondWithResult(_0xbde71e,_0x39182e){_0x39182e=_0x39182e||0xc8;return function(_0x53aed3){if(_0x53aed3){return _0xbde71e[_0x67e3('0x18')](_0x39182e)[_0x67e3('0x1a')](_0x53aed3);}};}function respondWithFilteredResult(_0x5bfc06,_0x4471b6){return function(_0xed59dc){if(_0xed59dc){var _0x53c416=typeof _0x4471b6[_0x67e3('0x1b')]===_0x67e3('0x1c')&&typeof _0x4471b6['limit']===_0x67e3('0x1c');var _0x5a1bd7=_0xed59dc[_0x67e3('0x1d')];var _0x817fb2=_0x53c416?0x0:_0x4471b6[_0x67e3('0x1b')];var _0x1fe2de=_0x53c416?_0xed59dc[_0x67e3('0x1d')]:_0x4471b6[_0x67e3('0x1b')]+_0x4471b6[_0x67e3('0x1e')];var _0x5a86ba;if(_0x1fe2de>=_0x5a1bd7){_0x1fe2de=_0x5a1bd7;_0x5a86ba=0xc8;}else{_0x5a86ba=0xce;}_0x5bfc06[_0x67e3('0x18')](_0x5a86ba);return _0x5bfc06[_0x67e3('0x1f')]('Content-Range',_0x817fb2+'-'+_0x1fe2de+'/'+_0x5a1bd7)[_0x67e3('0x1a')](_0xed59dc);}return null;};}function patchUpdates(_0x499145){return function(_0x298628){try{jsonpatch[_0x67e3('0x20')](_0x298628,_0x499145,!![]);}catch(_0x134e57){return BPromise[_0x67e3('0x21')](_0x134e57);}return _0x298628['save']();};}function saveUpdates(_0x198cb6,_0x494bc8){return function(_0x528f81){if(_0x528f81){return _0x528f81[_0x67e3('0x22')](_0x198cb6)[_0x67e3('0x23')](function(_0x394142){return _0x394142;});}return null;};}function removeEntity(_0x170a73,_0x3d1955){return function(_0x12fe63){if(_0x12fe63){return _0x12fe63[_0x67e3('0x24')]()[_0x67e3('0x23')](function(){_0x170a73['status'](0xcc)[_0x67e3('0x19')]();});}};}function handleEntityNotFound(_0x464045,_0x16d524){return function(_0x11efae){if(!_0x11efae){_0x464045[_0x67e3('0x25')](0x194);}return _0x11efae;};}function handleError(_0x2f5a61,_0x2246f1){_0x2246f1=_0x2246f1||0x1f4;return function(_0x1b210f){logger[_0x67e3('0x26')](_0x1b210f['stack']);if(_0x1b210f[_0x67e3('0x27')]){delete _0x1b210f[_0x67e3('0x27')];}_0x2f5a61['status'](_0x2246f1)['send'](_0x1b210f);};}exports['index']=function(_0x52737e,_0x3b9995){var _0x28018d={},_0x59dc2f={},_0x95a580={'count':0x0,'rows':[]};var _0x4b270a=_[_0x67e3('0x28')](db['CmHopperHistory'][_0x67e3('0x29')],function(_0x46e944){return{'name':_0x46e944[_0x67e3('0x2a')],'type':_0x46e944['type']['key']};});_0x59dc2f['model']=_['map'](_0x4b270a,_0x67e3('0x27'));_0x59dc2f[_0x67e3('0x2b')]=_[_0x67e3('0x2c')](_0x52737e[_0x67e3('0x2b')]);_0x59dc2f[_0x67e3('0x2d')]=_[_0x67e3('0x2e')](_0x59dc2f[_0x67e3('0x2f')],_0x59dc2f[_0x67e3('0x2b')]);_0x28018d[_0x67e3('0x30')]=_[_0x67e3('0x2e')](_0x59dc2f[_0x67e3('0x2f')],qs[_0x67e3('0x31')](_0x52737e[_0x67e3('0x2b')]['fields']));_0x28018d['attributes']=_0x28018d['attributes']['length']?_0x28018d['attributes']:_0x59dc2f['model'];if(!_0x52737e['query'][_0x67e3('0x32')]('nolimit')){_0x28018d[_0x67e3('0x1e')]=qs[_0x67e3('0x1e')](_0x52737e['query']['limit']);_0x28018d[_0x67e3('0x1b')]=qs[_0x67e3('0x1b')](_0x52737e[_0x67e3('0x2b')][_0x67e3('0x1b')]);}_0x28018d[_0x67e3('0x33')]=qs[_0x67e3('0x34')](_0x52737e[_0x67e3('0x2b')][_0x67e3('0x34')]);_0x28018d[_0x67e3('0x35')]=qs[_0x67e3('0x2d')](_[_0x67e3('0x36')](_0x52737e[_0x67e3('0x2b')],_0x59dc2f[_0x67e3('0x2d')]),_0x4b270a);if(_0x52737e['query'][_0x67e3('0x37')]){_0x28018d[_0x67e3('0x35')]=_[_0x67e3('0x38')](_0x28018d[_0x67e3('0x35')],{'$or':_['map'](_0x4b270a,function(_0x4d5232){if(_0x4d5232[_0x67e3('0x39')]!==_0x67e3('0x3a')){var _0x1de054={};_0x1de054[_0x4d5232[_0x67e3('0x27')]]={'$like':'%'+_0x52737e[_0x67e3('0x2b')]['filter']+'%'};return _0x1de054;}})});}_0x28018d=_[_0x67e3('0x38')]({},_0x28018d,_0x52737e[_0x67e3('0x3b')]);var _0xa706f0={'where':_0x28018d[_0x67e3('0x35')]};return db[_0x67e3('0x3c')][_0x67e3('0x1d')](_0xa706f0)[_0x67e3('0x23')](function(_0x156367){_0x95a580[_0x67e3('0x1d')]=_0x156367;if(_0x52737e[_0x67e3('0x2b')][_0x67e3('0x3d')]){_0x28018d[_0x67e3('0x3e')]=[{'all':!![]}];}return db[_0x67e3('0x3c')][_0x67e3('0x3f')](_0x28018d);})['then'](function(_0x376584){_0x95a580[_0x67e3('0x40')]=_0x376584;return _0x95a580;})[_0x67e3('0x23')](respondWithFilteredResult(_0x3b9995,_0x28018d))[_0x67e3('0x41')](handleError(_0x3b9995,null));};exports[_0x67e3('0x42')]=function(_0x1e8976,_0x1dc206){var _0x23239f={'raw':!![],'where':{'id':_0x1e8976[_0x67e3('0x43')]['id']}},_0x507510={};_0x507510[_0x67e3('0x2f')]=_[_0x67e3('0x2c')](db[_0x67e3('0x3c')]['rawAttributes']);_0x507510[_0x67e3('0x2b')]=_[_0x67e3('0x2c')](_0x1e8976['query']);_0x507510[_0x67e3('0x2d')]=_['intersection'](_0x507510['model'],_0x507510[_0x67e3('0x2b')]);_0x23239f[_0x67e3('0x30')]=_[_0x67e3('0x2e')](_0x507510['model'],qs[_0x67e3('0x31')](_0x1e8976[_0x67e3('0x2b')][_0x67e3('0x31')]));_0x23239f['attributes']=_0x23239f[_0x67e3('0x30')][_0x67e3('0x44')]?_0x23239f[_0x67e3('0x30')]:_0x507510[_0x67e3('0x2f')];if(_0x1e8976[_0x67e3('0x2b')][_0x67e3('0x3d')]){_0x23239f[_0x67e3('0x3e')]=[{'all':!![]}];}_0x23239f=_['merge']({},_0x23239f,_0x1e8976[_0x67e3('0x3b')]);return db['CmHopperHistory'][_0x67e3('0x45')](_0x23239f)[_0x67e3('0x23')](handleEntityNotFound(_0x1dc206,null))[_0x67e3('0x23')](respondWithResult(_0x1dc206,null))[_0x67e3('0x41')](handleError(_0x1dc206,null));};exports[_0x67e3('0x46')]=function(_0x5daf12,_0x181f63){return db[_0x67e3('0x3c')][_0x67e3('0x46')](_0x5daf12[_0x67e3('0x47')],{})[_0x67e3('0x23')](respondWithResult(_0x181f63,0xc9))[_0x67e3('0x41')](handleError(_0x181f63,null));};exports[_0x67e3('0x48')]=function(_0x14fcc7,_0x4d21c3){return db[_0x67e3('0x3c')][_0x67e3('0x48')]()[_0x67e3('0x23')](respondWithResult(_0x4d21c3,null))[_0x67e3('0x41')](handleError(_0x4d21c3,null));};exports[_0x67e3('0x22')]=function(_0x30faa4,_0x262f12){if(_0x30faa4[_0x67e3('0x47')][_0x67e3('0x49')]){delete _0x30faa4[_0x67e3('0x47')][_0x67e3('0x49')];}return db[_0x67e3('0x3c')][_0x67e3('0x45')]({'where':{'uniqueid':_0x30faa4[_0x67e3('0x43')]['id']}})[_0x67e3('0x23')](handleEntityNotFound(_0x262f12,null))[_0x67e3('0x23')](saveUpdates(_0x30faa4['body'],null))[_0x67e3('0x23')](respondWithResult(_0x262f12,null))[_0x67e3('0x41')](handleError(_0x262f12,null));};
\ No newline at end of file
index 149643c..0574d08 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x002d=['./cmHopperHistory.attributes','exports','define','CmHopperHistory','cm_hopper_history','endtime','uniqueid','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x567ac9,_0x43b49e){var _0x101959=function(_0x543727){while(--_0x543727){_0x567ac9['push'](_0x567ac9['shift']());}};_0x101959(++_0x43b49e);}(_0x002d,0xca));var _0xd002=function(_0x4e2e0b,_0x53d169){_0x4e2e0b=_0x4e2e0b-0x0;var _0x1caa60=_0x002d[_0x4e2e0b];return _0x1caa60;};'use strict';var _=require(_0xd002('0x0'));var util=require(_0xd002('0x1'));var logger=require(_0xd002('0x2'))('api');var moment=require('moment');var BPromise=require(_0xd002('0x3'));var rp=require(_0xd002('0x4'));var fs=require('fs');var path=require(_0xd002('0x5'));var rimraf=require(_0xd002('0x6'));var config=require(_0xd002('0x7'));var attributes=require(_0xd002('0x8'));module[_0xd002('0x9')]=function(_0x38ec77,_0x3ec3d7){return _0x38ec77[_0xd002('0xa')](_0xd002('0xb'),attributes,{'tableName':_0xd002('0xc'),'paranoid':![],'indexes':[{'name':_0xd002('0xd'),'fields':[_0xd002('0xd')]},{'name':_0xd002('0xe'),'fields':[_0xd002('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x1aab=['request-promise','path','rimraf','../../config/environment','./cmHopperHistory.attributes','define','CmHopperHistory','cm_hopper_history','endtime','uniqueid','lodash','util','../../config/logger','moment'];(function(_0x58f238,_0x1b6a79){var _0x367e71=function(_0x35b3f6){while(--_0x35b3f6){_0x58f238['push'](_0x58f238['shift']());}};_0x367e71(++_0x1b6a79);}(_0x1aab,0x122));var _0xb1aa=function(_0x38b554,_0x1dfa44){_0x38b554=_0x38b554-0x0;var _0x5a93e3=_0x1aab[_0x38b554];return _0x5a93e3;};'use strict';var _=require(_0xb1aa('0x0'));var util=require(_0xb1aa('0x1'));var logger=require(_0xb1aa('0x2'))('api');var moment=require(_0xb1aa('0x3'));var BPromise=require('bluebird');var rp=require(_0xb1aa('0x4'));var fs=require('fs');var path=require(_0xb1aa('0x5'));var rimraf=require(_0xb1aa('0x6'));var config=require(_0xb1aa('0x7'));var attributes=require(_0xb1aa('0x8'));module['exports']=function(_0x5eb27f,_0x34e0f4){return _0x5eb27f[_0xb1aa('0x9')](_0xb1aa('0xa'),attributes,{'tableName':_0xb1aa('0xb'),'paranoid':![],'indexes':[{'name':_0xb1aa('0xc'),'fields':[_0xb1aa('0xc')]},{'name':_0xb1aa('0xd'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index a8cc277..5a09916 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67c7=['`state`\x20=\x203,\x201,\x20null','outboundNoAnswerCallsDay','outboundAnswerCallsDay','`state`\x20=\x205,\x201,\x20null','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundUnknownCallsDay','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2018,\x201,\x20null','outboundRejectCallsDay','`state`\x20=\x2016,\x201,\x20null','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','outboundReCallsDay','GetVoiceQueueHopperHistory','GetCampaignHopperHistory','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','http','request','then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','CmHopperHistory,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateCmHopperHistory','CmHopperHistory','create','body','options','raw','AvgHandleTime','findAll','sequelize','COUNT','col','predictiveIntervalTotalCalls','literal','`state`\x20=\x204,\x201,\x20null','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','`state`\x20=\x204,\x20`talktime`,\x20null','where','campaign','name','`state`\x20=\x200,\x201,\x20null','outboundNoSuchCallsDay'];(function(_0x816dc7,_0x517eda){var _0x14ba95=function(_0x204256){while(--_0x204256){_0x816dc7['push'](_0x816dc7['shift']());}};_0x14ba95(++_0x517eda);}(_0x67c7,0x172));var _0x767c=function(_0x130209,_0x2cc129){_0x130209=_0x130209-0x0;var _0x155fb7=_0x67c7[_0x130209];return _0x155fb7;};'use strict';var _=require(_0x767c('0x0'));var util=require(_0x767c('0x1'));var moment=require(_0x767c('0x2'));var BPromise=require(_0x767c('0x3'));var rs=require(_0x767c('0x4'));var fs=require('fs');var Redis=require(_0x767c('0x5'));var db=require(_0x767c('0x6'))['db'];var utils=require(_0x767c('0x7'));var logger=require('../../config/logger')(_0x767c('0x8'));var config=require(_0x767c('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x767c('0xa')][_0x767c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x334608,_0x3a3b2d,_0x2a1958){return new BPromise(function(_0x438e71,_0x396b7c){return client[_0x767c('0xc')](_0x334608,_0x2a1958)[_0x767c('0xd')](function(_0x204022){logger[_0x767c('0xe')](_0x767c('0xf'),_0x3a3b2d,_0x767c('0x10'));logger[_0x767c('0x11')](_0x767c('0x12'),_0x3a3b2d,'request\x20sent',JSON[_0x767c('0x13')](_0x204022));if(_0x204022[_0x767c('0x14')]){if(_0x204022[_0x767c('0x14')][_0x767c('0x15')]===0x1f4){logger[_0x767c('0x14')](_0x767c('0xf'),_0x3a3b2d,_0x204022[_0x767c('0x14')][_0x767c('0x16')]);return _0x396b7c(_0x204022[_0x767c('0x14')]['message']);}logger[_0x767c('0x14')](_0x767c('0xf'),_0x3a3b2d,_0x204022[_0x767c('0x14')][_0x767c('0x16')]);return _0x438e71(_0x204022[_0x767c('0x14')][_0x767c('0x16')]);}else{logger[_0x767c('0xe')](_0x767c('0xf'),_0x3a3b2d,_0x767c('0x10'));_0x438e71(_0x204022['result'][_0x767c('0x16')]);}})[_0x767c('0x17')](function(_0x3e4927){logger[_0x767c('0x14')](_0x767c('0xf'),_0x3a3b2d,_0x3e4927);_0x396b7c(_0x3e4927);});});}exports[_0x767c('0x18')]=function(_0x4d612a){var _0x38a758=this;return new Promise(function(_0x5856c5,_0x8d5313){return db[_0x767c('0x19')][_0x767c('0x1a')](_0x4d612a[_0x767c('0x1b')],{'raw':_0x4d612a[_0x767c('0x1c')]?_0x4d612a[_0x767c('0x1c')][_0x767c('0x1d')]===undefined?!![]:![]:!![]})['then'](function(_0x9edb2d){logger[_0x767c('0xe')]('CreateCmHopperHistory',_0x4d612a);logger[_0x767c('0x11')](_0x767c('0x18'),_0x4d612a,JSON[_0x767c('0x13')](_0x9edb2d));_0x5856c5(_0x9edb2d);})[_0x767c('0x17')](function(_0x5d021a){logger[_0x767c('0x14')](_0x767c('0x18'),_0x5d021a[_0x767c('0x16')],_0x4d612a);_0x8d5313(_0x38a758[_0x767c('0x14')](0x1f4,_0x5d021a[_0x767c('0x16')]));});});};exports[_0x767c('0x1e')]=function(_0x3d4dba){var _0x368ef0=this;return new Promise(function(_0x2f5b57,_0x3a3de1){return db[_0x767c('0x19')][_0x767c('0x1f')]({'raw':_0x3d4dba[_0x767c('0x1c')]?_0x3d4dba[_0x767c('0x1c')][_0x767c('0x1d')]===undefined?!![]:![]:!![],'where':_0x3d4dba[_0x767c('0x1c')]?_0x3d4dba['options']['where']||null:null,'attributes':[[db[_0x767c('0x20')]['fn'](_0x767c('0x21'),db[_0x767c('0x20')][_0x767c('0x22')]('id')),_0x767c('0x23')],[db['sequelize']['fn'](_0x767c('0x21'),db[_0x767c('0x20')]['fn']('IF',db[_0x767c('0x20')][_0x767c('0x24')](_0x767c('0x25')))),_0x767c('0x26')],[db[_0x767c('0x20')]['fn'](_0x767c('0x21'),db[_0x767c('0x20')]['fn']('IF',db[_0x767c('0x20')][_0x767c('0x24')]('`state`\x20=\x2010,\x201,\x20null'))),_0x767c('0x27')],[db[_0x767c('0x20')]['fn'](_0x767c('0x21'),db[_0x767c('0x20')]['fn']('IF',db['sequelize'][_0x767c('0x24')](_0x767c('0x28')))),_0x767c('0x29')],[db[_0x767c('0x20')]['fn'](_0x767c('0x2a'),db[_0x767c('0x20')]['fn']('IF',db[_0x767c('0x20')][_0x767c('0x24')](_0x767c('0x2b')))),'predictiveIntervalAvgHoldtime'],[db[_0x767c('0x20')]['fn'](_0x767c('0x2a'),db[_0x767c('0x20')]['fn']('IF',db['sequelize'][_0x767c('0x24')](_0x767c('0x2c')))),'predictiveIntervalAvgTalktime']]})[_0x767c('0xd')](function(_0x412b0b){logger[_0x767c('0xe')](_0x767c('0x1e'),_0x3d4dba);logger[_0x767c('0x11')](_0x767c('0x1e'),_0x3d4dba,JSON[_0x767c('0x13')](_0x412b0b));_0x2f5b57(_0x412b0b);})[_0x767c('0x17')](function(_0x2f4832){logger['error'](_0x767c('0x1e'),_0x2f4832[_0x767c('0x16')],_0x3d4dba);_0x3a3de1(_0x368ef0[_0x767c('0x14')](0x1f4,_0x2f4832[_0x767c('0x16')]));});});};exports['GetVoiceQueueHopperHistory']=function(_0x14f4af){var _0x8254b3=this;return new Promise(function(_0x192178,_0x2ec4fa){return db['CmHopperHistory']['findAll']({'raw':_0x14f4af['options']?_0x14f4af['options']['raw']===undefined?!![]:![]:!![],'where':_0x14f4af['options']?_0x14f4af[_0x767c('0x1c')][_0x767c('0x2d')]||null:null,'attributes':[[_0x767c('0x2e'),_0x767c('0x2f')],[db[_0x767c('0x20')]['fn'](_0x767c('0x21'),db[_0x767c('0x20')]['fn']('IF',db[_0x767c('0x20')][_0x767c('0x24')](_0x767c('0x30')))),_0x767c('0x31')],[db['sequelize']['fn'](_0x767c('0x21'),db['sequelize']['fn']('IF',db[_0x767c('0x20')][_0x767c('0x24')](_0x767c('0x32')))),_0x767c('0x33')],[db[_0x767c('0x20')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x767c('0x20')][_0x767c('0x24')]('`state`\x20=\x204,\x201,\x20null'))),_0x767c('0x34')],[db[_0x767c('0x20')]['fn'](_0x767c('0x21'),db[_0x767c('0x20')]['fn']('IF',db[_0x767c('0x20')][_0x767c('0x24')](_0x767c('0x35')))),_0x767c('0x36')],[db[_0x767c('0x20')]['fn'](_0x767c('0x21'),db[_0x767c('0x20')]['fn']('IF',db['sequelize']['literal'](_0x767c('0x37')))),_0x767c('0x38')],[db[_0x767c('0x20')]['fn'](_0x767c('0x21'),db['sequelize']['fn']('IF',db['sequelize']['literal']('`state`\x20=\x2010\x20,\x201,\x20null'))),_0x767c('0x39')],[db['sequelize']['fn'](_0x767c('0x21'),db[_0x767c('0x20')]['fn']('IF',db[_0x767c('0x20')][_0x767c('0x24')]('`state`\x20=\x2011\x20,\x201,\x20null'))),_0x767c('0x3a')],[db['sequelize']['fn'](_0x767c('0x21'),db[_0x767c('0x20')]['fn']('IF',db[_0x767c('0x20')][_0x767c('0x24')]('`state`\x20=\x2012,\x201,\x20null'))),_0x767c('0x3b')],[db[_0x767c('0x20')]['fn'](_0x767c('0x21'),db[_0x767c('0x20')]['fn']('IF',db[_0x767c('0x20')][_0x767c('0x24')](_0x767c('0x3c')))),_0x767c('0x3d')],[db[_0x767c('0x20')]['fn'](_0x767c('0x21'),db[_0x767c('0x20')]['fn']('IF',db[_0x767c('0x20')]['literal']('`state`\x20=\x2014,\x201,\x20null'))),'outboundOriginateFailureCallsDay'],[db[_0x767c('0x20')]['fn'](_0x767c('0x21'),db[_0x767c('0x20')]['fn']('IF',db[_0x767c('0x20')][_0x767c('0x24')](_0x767c('0x3e')))),_0x767c('0x3f')],[db[_0x767c('0x20')]['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x767c('0x20')][_0x767c('0x24')](_0x767c('0x40')))),_0x767c('0x41')],[db[_0x767c('0x20')]['fn'](_0x767c('0x21'),db[_0x767c('0x20')]['fn']('IF',db[_0x767c('0x20')]['literal'](_0x767c('0x42')))),'outboundRejectCallsDay'],[db[_0x767c('0x20')]['fn'](_0x767c('0x21'),db['sequelize']['fn']('IF',db['sequelize'][_0x767c('0x24')]('`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null'))),_0x767c('0x43')]],'group':['campaign']})[_0x767c('0xd')](function(_0x49ed76){logger[_0x767c('0xe')](_0x767c('0x44'),_0x14f4af);logger[_0x767c('0x11')](_0x767c('0x44'),_0x14f4af,JSON[_0x767c('0x13')](_0x49ed76));_0x192178(_0x49ed76);})[_0x767c('0x17')](function(_0x4572dd){logger['error'](_0x767c('0x44'),_0x4572dd[_0x767c('0x16')],_0x14f4af);_0x2ec4fa(_0x8254b3[_0x767c('0x14')](0x1f4,_0x4572dd['message']));});});};exports['GetCampaignHopperHistory']=function(_0x5c6cc3){var _0x1c475a=this;return new Promise(function(_0x253e16,_0x1e9463){return db[_0x767c('0x19')]['findAll']({'raw':_0x5c6cc3[_0x767c('0x1c')]?_0x5c6cc3['options'][_0x767c('0x1d')]===undefined?!![]:![]:!![],'where':_0x5c6cc3['options']?_0x5c6cc3[_0x767c('0x1c')][_0x767c('0x2d')]||null:null,'attributes':[['campaign',_0x767c('0x2f')],[db[_0x767c('0x20')]['fn']('COUNT',db[_0x767c('0x20')][_0x767c('0x22')]('id')),'ivrTotalCallsDays'],[db[_0x767c('0x20')]['fn'](_0x767c('0x21'),db['sequelize']['fn']('IF',db['sequelize']['literal'](_0x767c('0x25')))),'ivrAnswerCallsDay']],'group':[_0x767c('0x2e')]})[_0x767c('0xd')](function(_0x613bb1){logger['info'](_0x767c('0x45'),_0x5c6cc3);logger[_0x767c('0x11')](_0x767c('0x45'),_0x5c6cc3,JSON['stringify'](_0x613bb1));_0x253e16(_0x613bb1);})[_0x767c('0x17')](function(_0x2ca35a){logger[_0x767c('0x14')](_0x767c('0x45'),_0x2ca35a[_0x767c('0x16')],_0x5c6cc3);_0x1e9463(_0x1c475a[_0x767c('0x14')](0x1f4,_0x2ca35a[_0x767c('0x16')]));});});};
\ No newline at end of file
+var _0x7860=['predictiveIntervalDroppedCallsTimeout','`state`\x20=\x2011,\x201,\x20null','predictiveIntervalDroppedCallsCallersExit','AVG','`state`\x20=\x204,\x20`holdtime`,\x20null','predictiveIntervalAvgHoldtime','`state`\x20=\x204,\x20`talktime`,\x20null','predictiveIntervalAvgTalktime','campaign','name','outboundNoSuchCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','`state`\x20=\x208,\x201,\x20null','outboundCongestionCallsDay','`state`\x20=\x2010\x20,\x201,\x20null','outboundDropCallsDayTimeout','`state`\x20=\x2011\x20,\x201,\x20null','`state`\x20=\x2013,\x201,\x20null','outboundBlacklistCallsDay','`state`\x20=\x2014,\x201,\x20null','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundAnswerAgiCallsDay','`state`\x20=\x2020,\x201,\x20null','`state`\x20=\x2022\x20or\x20`state`\x20=\x2023,\x201,\x20null','GetVoiceQueueHopperHistory','GetCampaignHopperHistory','ivrTotalCallsDays','ivrAnswerCallsDay','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','CmHopperHistory,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','CreateCmHopperHistory','create','body','options','AvgHandleTime','CmHopperHistory','findAll','raw','where','sequelize','COUNT','col','literal','predictiveIntervalAnsweredCalls','`state`\x20=\x2010,\x201,\x20null'];(function(_0x4ed303,_0x48ae86){var _0x1eedcf=function(_0x1642d4){while(--_0x1642d4){_0x4ed303['push'](_0x4ed303['shift']());}};_0x1eedcf(++_0x48ae86);}(_0x7860,0xe4));var _0x0786=function(_0x3d6e78,_0x2198d2){_0x3d6e78=_0x3d6e78-0x0;var _0x3a255a=_0x7860[_0x3d6e78];return _0x3a255a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x0786('0x0'));var BPromise=require(_0x0786('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0786('0x2'));var db=require(_0x0786('0x3'))['db'];var utils=require(_0x0786('0x4'));var logger=require(_0x0786('0x5'))(_0x0786('0x6'));var config=require(_0x0786('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x0786('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x27e176,_0x4b6db7,_0x39a5ec){return new BPromise(function(_0x4cf64f,_0x475bdf){return client[_0x0786('0x9')](_0x27e176,_0x39a5ec)[_0x0786('0xa')](function(_0x3c5d3e){logger[_0x0786('0xb')](_0x0786('0xc'),_0x4b6db7,_0x0786('0xd'));logger[_0x0786('0xe')]('CmHopperHistory,\x20%s,\x20%s,\x20%s',_0x4b6db7,_0x0786('0xd'),JSON[_0x0786('0xf')](_0x3c5d3e));if(_0x3c5d3e['error']){if(_0x3c5d3e[_0x0786('0x10')][_0x0786('0x11')]===0x1f4){logger[_0x0786('0x10')](_0x0786('0xc'),_0x4b6db7,_0x3c5d3e[_0x0786('0x10')][_0x0786('0x12')]);return _0x475bdf(_0x3c5d3e[_0x0786('0x10')][_0x0786('0x12')]);}logger[_0x0786('0x10')](_0x0786('0xc'),_0x4b6db7,_0x3c5d3e[_0x0786('0x10')][_0x0786('0x12')]);return _0x4cf64f(_0x3c5d3e[_0x0786('0x10')][_0x0786('0x12')]);}else{logger['info'](_0x0786('0xc'),_0x4b6db7,_0x0786('0xd'));_0x4cf64f(_0x3c5d3e[_0x0786('0x13')][_0x0786('0x12')]);}})[_0x0786('0x14')](function(_0x4683fc){logger[_0x0786('0x10')](_0x0786('0xc'),_0x4b6db7,_0x4683fc);_0x475bdf(_0x4683fc);});});}exports[_0x0786('0x15')]=function(_0x1ca5e7){var _0x12ba21=this;return new Promise(function(_0x26b36f,_0x59c54b){return db['CmHopperHistory'][_0x0786('0x16')](_0x1ca5e7[_0x0786('0x17')],{'raw':_0x1ca5e7[_0x0786('0x18')]?_0x1ca5e7[_0x0786('0x18')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x59d455){logger['info']('CreateCmHopperHistory',_0x1ca5e7);logger[_0x0786('0xe')](_0x0786('0x15'),_0x1ca5e7,JSON[_0x0786('0xf')](_0x59d455));_0x26b36f(_0x59d455);})['catch'](function(_0x523f95){logger[_0x0786('0x10')](_0x0786('0x15'),_0x523f95['message'],_0x1ca5e7);_0x59c54b(_0x12ba21['error'](0x1f4,_0x523f95[_0x0786('0x12')]));});});};exports[_0x0786('0x19')]=function(_0x1263d6){var _0x4cd312=this;return new Promise(function(_0x302da7,_0x40baa3){return db[_0x0786('0x1a')][_0x0786('0x1b')]({'raw':_0x1263d6['options']?_0x1263d6[_0x0786('0x18')][_0x0786('0x1c')]===undefined?!![]:![]:!![],'where':_0x1263d6[_0x0786('0x18')]?_0x1263d6[_0x0786('0x18')][_0x0786('0x1d')]||null:null,'attributes':[[db[_0x0786('0x1e')]['fn'](_0x0786('0x1f'),db['sequelize'][_0x0786('0x20')]('id')),'predictiveIntervalTotalCalls'],[db[_0x0786('0x1e')]['fn'](_0x0786('0x1f'),db['sequelize']['fn']('IF',db[_0x0786('0x1e')][_0x0786('0x21')]('`state`\x20=\x204,\x201,\x20null'))),_0x0786('0x22')],[db[_0x0786('0x1e')]['fn'](_0x0786('0x1f'),db[_0x0786('0x1e')]['fn']('IF',db['sequelize'][_0x0786('0x21')](_0x0786('0x23')))),_0x0786('0x24')],[db[_0x0786('0x1e')]['fn'](_0x0786('0x1f'),db[_0x0786('0x1e')]['fn']('IF',db['sequelize'][_0x0786('0x21')](_0x0786('0x25')))),_0x0786('0x26')],[db[_0x0786('0x1e')]['fn'](_0x0786('0x27'),db['sequelize']['fn']('IF',db[_0x0786('0x1e')][_0x0786('0x21')](_0x0786('0x28')))),_0x0786('0x29')],[db[_0x0786('0x1e')]['fn'](_0x0786('0x27'),db[_0x0786('0x1e')]['fn']('IF',db['sequelize'][_0x0786('0x21')](_0x0786('0x2a')))),_0x0786('0x2b')]]})[_0x0786('0xa')](function(_0x31f1){logger['info']('AvgHandleTime',_0x1263d6);logger[_0x0786('0xe')](_0x0786('0x19'),_0x1263d6,JSON[_0x0786('0xf')](_0x31f1));_0x302da7(_0x31f1);})[_0x0786('0x14')](function(_0x4d0748){logger['error'](_0x0786('0x19'),_0x4d0748[_0x0786('0x12')],_0x1263d6);_0x40baa3(_0x4cd312[_0x0786('0x10')](0x1f4,_0x4d0748['message']));});});};exports['GetVoiceQueueHopperHistory']=function(_0x5e0b87){var _0x1538bc=this;return new Promise(function(_0x31c2d5,_0x1d0e36){return db[_0x0786('0x1a')]['findAll']({'raw':_0x5e0b87[_0x0786('0x18')]?_0x5e0b87['options'][_0x0786('0x1c')]===undefined?!![]:![]:!![],'where':_0x5e0b87[_0x0786('0x18')]?_0x5e0b87[_0x0786('0x18')][_0x0786('0x1d')]||null:null,'attributes':[[_0x0786('0x2c'),_0x0786('0x2d')],[db['sequelize']['fn'](_0x0786('0x1f'),db[_0x0786('0x1e')]['fn']('IF',db[_0x0786('0x1e')][_0x0786('0x21')]('`state`\x20=\x200,\x201,\x20null'))),_0x0786('0x2e')],[db[_0x0786('0x1e')]['fn'](_0x0786('0x1f'),db[_0x0786('0x1e')]['fn']('IF',db[_0x0786('0x1e')]['literal']('`state`\x20=\x203,\x201,\x20null'))),_0x0786('0x2f')],[db['sequelize']['fn']('COUNT',db[_0x0786('0x1e')]['fn']('IF',db[_0x0786('0x1e')][_0x0786('0x21')]('`state`\x20=\x204,\x201,\x20null'))),'outboundAnswerCallsDay'],[db['sequelize']['fn'](_0x0786('0x1f'),db[_0x0786('0x1e')]['fn']('IF',db['sequelize']['literal']('`state`\x20=\x205,\x201,\x20null'))),_0x0786('0x30')],[db['sequelize']['fn'](_0x0786('0x1f'),db[_0x0786('0x1e')]['fn']('IF',db[_0x0786('0x1e')]['literal'](_0x0786('0x31')))),_0x0786('0x32')],[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db[_0x0786('0x1e')][_0x0786('0x21')](_0x0786('0x33')))),_0x0786('0x34')],[db['sequelize']['fn'](_0x0786('0x1f'),db[_0x0786('0x1e')]['fn']('IF',db[_0x0786('0x1e')][_0x0786('0x21')](_0x0786('0x35')))),'outboundDropCallsDayCallersExit'],[db[_0x0786('0x1e')]['fn'](_0x0786('0x1f'),db[_0x0786('0x1e')]['fn']('IF',db[_0x0786('0x1e')]['literal']('`state`\x20=\x2012,\x201,\x20null'))),'outboundUnknownCallsDay'],[db[_0x0786('0x1e')]['fn'](_0x0786('0x1f'),db[_0x0786('0x1e')]['fn']('IF',db[_0x0786('0x1e')]['literal'](_0x0786('0x36')))),_0x0786('0x37')],[db[_0x0786('0x1e')]['fn'](_0x0786('0x1f'),db[_0x0786('0x1e')]['fn']('IF',db[_0x0786('0x1e')][_0x0786('0x21')](_0x0786('0x38')))),_0x0786('0x39')],[db[_0x0786('0x1e')]['fn'](_0x0786('0x1f'),db[_0x0786('0x1e')]['fn']('IF',db[_0x0786('0x1e')][_0x0786('0x21')]('`state`\x20=\x2018,\x201,\x20null'))),_0x0786('0x3a')],[db['sequelize']['fn'](_0x0786('0x1f'),db['sequelize']['fn']('IF',db[_0x0786('0x1e')][_0x0786('0x21')]('`state`\x20=\x2016,\x201,\x20null'))),_0x0786('0x3b')],[db[_0x0786('0x1e')]['fn'](_0x0786('0x1f'),db[_0x0786('0x1e')]['fn']('IF',db[_0x0786('0x1e')]['literal'](_0x0786('0x3c')))),_0x0786('0x3a')],[db[_0x0786('0x1e')]['fn'](_0x0786('0x1f'),db[_0x0786('0x1e')]['fn']('IF',db['sequelize']['literal'](_0x0786('0x3d')))),'outboundReCallsDay']],'group':[_0x0786('0x2c')]})[_0x0786('0xa')](function(_0x30b89a){logger[_0x0786('0xb')]('GetVoiceQueueHopperHistory',_0x5e0b87);logger[_0x0786('0xe')](_0x0786('0x3e'),_0x5e0b87,JSON[_0x0786('0xf')](_0x30b89a));_0x31c2d5(_0x30b89a);})[_0x0786('0x14')](function(_0x499212){logger[_0x0786('0x10')](_0x0786('0x3e'),_0x499212[_0x0786('0x12')],_0x5e0b87);_0x1d0e36(_0x1538bc[_0x0786('0x10')](0x1f4,_0x499212['message']));});});};exports[_0x0786('0x3f')]=function(_0x2289f8){var _0x2237e0=this;return new Promise(function(_0x3aee36,_0x18e37c){return db['CmHopperHistory'][_0x0786('0x1b')]({'raw':_0x2289f8['options']?_0x2289f8[_0x0786('0x18')][_0x0786('0x1c')]===undefined?!![]:![]:!![],'where':_0x2289f8['options']?_0x2289f8['options'][_0x0786('0x1d')]||null:null,'attributes':[['campaign',_0x0786('0x2d')],[db['sequelize']['fn']('COUNT',db['sequelize'][_0x0786('0x20')]('id')),_0x0786('0x40')],[db[_0x0786('0x1e')]['fn'](_0x0786('0x1f'),db[_0x0786('0x1e')]['fn']('IF',db[_0x0786('0x1e')][_0x0786('0x21')]('`state`\x20=\x204,\x201,\x20null'))),_0x0786('0x41')]],'group':['campaign']})['then'](function(_0x679435){logger[_0x0786('0xb')](_0x0786('0x3f'),_0x2289f8);logger[_0x0786('0xe')]('GetCampaignHopperHistory',_0x2289f8,JSON[_0x0786('0xf')](_0x679435));_0x3aee36(_0x679435);})[_0x0786('0x14')](function(_0x3d4b60){logger[_0x0786('0x10')](_0x0786('0x3f'),_0x3d4b60[_0x0786('0x12')],_0x2289f8);_0x18e37c(_0x2237e0['error'](0x1f4,_0x3d4b60[_0x0786('0x12')]));});});};
\ No newline at end of file
index 0d6c8b2..930cfe9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65a0=['/:id','show','post','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./cmHopperHistory.controller','get','index','/describe','isAuthenticated','describe'];(function(_0x22eabc,_0x1b1a11){var _0x2144c5=function(_0x998f1c){while(--_0x998f1c){_0x22eabc['push'](_0x22eabc['shift']());}};_0x2144c5(++_0x1b1a11);}(_0x65a0,0x134));var _0x065a=function(_0x1cd8ce,_0x2804fe){_0x1cd8ce=_0x1cd8ce-0x0;var _0x5edea9=_0x65a0[_0x1cd8ce];return _0x5edea9;};'use strict';var multer=require(_0x065a('0x0'));var util=require(_0x065a('0x1'));var path=require(_0x065a('0x2'));var timeout=require(_0x065a('0x3'));var express=require(_0x065a('0x4'));var router=express[_0x065a('0x5')]();var fs_extra=require(_0x065a('0x6'));var auth=require(_0x065a('0x7'));var interaction=require(_0x065a('0x8'));var config=require('../../config/environment');var controller=require(_0x065a('0x9'));router[_0x065a('0xa')]('/',auth['isAuthenticated'](),controller[_0x065a('0xb')]);router['get'](_0x065a('0xc'),auth[_0x065a('0xd')](),controller[_0x065a('0xe')]);router[_0x065a('0xa')](_0x065a('0xf'),auth[_0x065a('0xd')](),controller[_0x065a('0x10')]);router[_0x065a('0x11')]('/',auth[_0x065a('0xd')](),controller['create']);router['put'](_0x065a('0xf'),auth[_0x065a('0xd')](),controller['update']);module[_0x065a('0x12')]=router;
\ No newline at end of file
+var _0xdc45=['isAuthenticated','index','/describe','describe','/:id','show','post','put','update','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./cmHopperHistory.controller','get'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xdc45,0xbe));var _0x5dc4=function(_0x3631d5,_0xa09d1){_0x3631d5=_0x3631d5-0x0;var _0x2dd46b=_0xdc45[_0x3631d5];return _0x2dd46b;};'use strict';var multer=require(_0x5dc4('0x0'));var util=require('util');var path=require(_0x5dc4('0x1'));var timeout=require(_0x5dc4('0x2'));var express=require(_0x5dc4('0x3'));var router=express[_0x5dc4('0x4')]();var fs_extra=require(_0x5dc4('0x5'));var auth=require(_0x5dc4('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x5dc4('0x7'));var controller=require(_0x5dc4('0x8'));router[_0x5dc4('0x9')]('/',auth[_0x5dc4('0xa')](),controller[_0x5dc4('0xb')]);router['get'](_0x5dc4('0xc'),auth[_0x5dc4('0xa')](),controller[_0x5dc4('0xd')]);router[_0x5dc4('0x9')](_0x5dc4('0xe'),auth['isAuthenticated'](),controller[_0x5dc4('0xf')]);router[_0x5dc4('0x10')]('/',auth[_0x5dc4('0xa')](),controller['create']);router[_0x5dc4('0x11')]('/:id',auth[_0x5dc4('0xa')](),controller[_0x5dc4('0x12')]);module[_0x5dc4('0x13')]=router;
\ No newline at end of file
index 868965a..d1fc3f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b7f=['sequelize','exports','STRING','name'];(function(_0x526119,_0x5c4b34){var _0x402da2=function(_0x361fea){while(--_0x361fea){_0x526119['push'](_0x526119['shift']());}};_0x402da2(++_0x5c4b34);}(_0x5b7f,0x8c));var _0xf5b7=function(_0x54b919,_0x354525){_0x54b919=_0x54b919-0x0;var _0x542bec=_0x5b7f[_0x54b919];return _0x542bec;};'use strict';var Sequelize=require(_0xf5b7('0x0'));module[_0xf5b7('0x1')]={'name':{'type':Sequelize[_0xf5b7('0x2')],'unique':_0xf5b7('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xf5b7('0x2')]},'dialPrefix':{'type':Sequelize[_0xf5b7('0x2')]}};
\ No newline at end of file
+var _0xc997=['STRING','name','exports'];(function(_0x28b7f1,_0x5c199c){var _0x1646a0=function(_0x474e7a){while(--_0x474e7a){_0x28b7f1['push'](_0x28b7f1['shift']());}};_0x1646a0(++_0x5c199c);}(_0xc997,0x1ac));var _0x7c99=function(_0x40a9cb,_0x2f880f){_0x40a9cb=_0x40a9cb-0x0;var _0x38eb0e=_0xc997[_0x40a9cb];return _0x38eb0e;};'use strict';var Sequelize=require('sequelize');module[_0x7c99('0x0')]={'name':{'type':Sequelize[_0x7c99('0x1')],'unique':_0x7c99('0x2'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x7c99('0x1')]},'dialPrefix':{'type':Sequelize[_0x7c99('0x1')]}};
\ No newline at end of file
index 7ef0889..70bb4f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x03c1=['../../mysqldb','redis','defaults','localhost','socket.io-emitter','./cmList.socket','status','json','offset','undefined','limit','count','set','Content-Range','save','update','then','destroy','get','Lists','UserProfileResource','end','sendStatus','stack','name','send','index','map','CmList','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','include','rows','catch','params','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','ListId','getDispositions','findOne','Disposition','hasOwnProperty','findAll','removeDispositions','CmContact','tags','isArray','join','push','each','ids','success','dataValues','errors','Malformed\x20request\x20syntax','getContacts','CmCustomField','CustomFields','format','raw','getContactsCsv','ContactItemType','OrderBy','alias','select','from','cm_contacts','c.deletedAt\x20is\x20null','distinct','c.cf_','customField_','field','item','cm_contact_has_items','CmContactId\x20=\x20c.id','additionalPhone_','description','ItemTypeId\x20=\x20?','description_additionalPhone_','toString','isEmpty','writeFileSync','setHeader','Content-disposition','attachment;\x20filename=','list_%d_%s.csv','Content-type','text/csv','download','/tmp/list_%d_%s.csv','addCustomField','sequelize','transaction','addCustomFields','TEXT','text','number','Sequelize','INTEGER','BOOLEAN','defaultValue','queryInterface','addColumn','cf_%s','getCustomFields','getGlobalCustomFields','findAndCountAll','addAgents','omit','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','info','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','fs-extra','crypto','jsforce','desk.js','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment'];(function(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0x03c1,0x92));var _0x103c=function(_0x4b5813,_0x5769de){_0x4b5813=_0x4b5813-0x0;var _0x423465=_0x03c1[_0x4b5813];return _0x423465;};'use strict';var emlformat=require(_0x103c('0x0'));var rimraf=require(_0x103c('0x1'));var zipdir=require(_0x103c('0x2'));var jsonpatch=require(_0x103c('0x3'));var rp=require(_0x103c('0x4'));var moment=require('moment');var BPromise=require(_0x103c('0x5'));var Mustache=require(_0x103c('0x6'));var util=require(_0x103c('0x7'));var path=require('path');var sox=require(_0x103c('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x103c('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x103c('0xa'));var jsforce=require(_0x103c('0xb'));var deskjs=require(_0x103c('0xc'));var toCsv=require(_0x103c('0xd'));var querystring=require(_0x103c('0xe'));var Papa=require(_0x103c('0xf'));var Redis=require('ioredis');var authService=require(_0x103c('0x10'));var qs=require(_0x103c('0x11'));var as=require(_0x103c('0x12'));var hardwareService=require(_0x103c('0x13'));var logger=require(_0x103c('0x14'))(_0x103c('0x15'));var utils=require(_0x103c('0x16'));var config=require(_0x103c('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x103c('0x18'))['db'];var csv_results;config[_0x103c('0x19')]=_[_0x103c('0x1a')](config['redis'],{'host':_0x103c('0x1b'),'port':0x18eb});var socket=require(_0x103c('0x1c'))(new Redis(config[_0x103c('0x19')]));require(_0x103c('0x1d'))['register'](socket);function respondWithStatusCode(_0x330d33,_0x394cde){_0x394cde=_0x394cde||0xcc;return function(_0x547e7b){if(_0x547e7b){return _0x330d33['sendStatus'](_0x394cde);}return _0x330d33[_0x103c('0x1e')](_0x394cde)['end']();};}function respondWithResult(_0x4012a2,_0x6cf7e7){_0x6cf7e7=_0x6cf7e7||0xc8;return function(_0x1606b8){if(_0x1606b8){return _0x4012a2['status'](_0x6cf7e7)[_0x103c('0x1f')](_0x1606b8);}};}function respondWithFilteredResult(_0x22df4e,_0x1b6324){return function(_0x116760){if(_0x116760){var _0x580050=typeof _0x1b6324[_0x103c('0x20')]===_0x103c('0x21')&&typeof _0x1b6324[_0x103c('0x22')]==='undefined';var _0xd85203=_0x116760[_0x103c('0x23')];var _0x1c482e=_0x580050?0x0:_0x1b6324['offset'];var _0x4e73c8=_0x580050?_0x116760[_0x103c('0x23')]:_0x1b6324['offset']+_0x1b6324[_0x103c('0x22')];var _0x10c466;if(_0x4e73c8>=_0xd85203){_0x4e73c8=_0xd85203;_0x10c466=0xc8;}else{_0x10c466=0xce;}_0x22df4e['status'](_0x10c466);return _0x22df4e[_0x103c('0x24')](_0x103c('0x25'),_0x1c482e+'-'+_0x4e73c8+'/'+_0xd85203)[_0x103c('0x1f')](_0x116760);}return null;};}function patchUpdates(_0x1341b3){return function(_0x578dcb){try{jsonpatch['apply'](_0x578dcb,_0x1341b3,!![]);}catch(_0x1a57ec){return BPromise['reject'](_0x1a57ec);}return _0x578dcb[_0x103c('0x26')]();};}function saveUpdates(_0x51baaa,_0x5101e1){return function(_0x417781){if(_0x417781){return _0x417781[_0x103c('0x27')](_0x51baaa)[_0x103c('0x28')](function(_0x24b894){return _0x24b894;});}return null;};}function removeEntity(_0x160c62,_0x99c73a){return function(_0x3c171c){if(_0x3c171c){return _0x3c171c[_0x103c('0x29')]()['then'](function(){var _0x496673=_0x3c171c[_0x103c('0x2a')]({'plain':!![]});var _0x49effb=_0x103c('0x2b');return db[_0x103c('0x2c')][_0x103c('0x29')]({'where':{'type':_0x49effb,'resourceId':_0x496673['id']}})[_0x103c('0x28')](function(){return _0x3c171c;});})[_0x103c('0x28')](function(){_0x160c62[_0x103c('0x1e')](0xcc)[_0x103c('0x2d')]();});}};}function handleEntityNotFound(_0x22c767,_0x34330b){return function(_0x4b9870){if(!_0x4b9870){_0x22c767[_0x103c('0x2e')](0x194);}return _0x4b9870;};}function handleError(_0x2ad079,_0x4b53c2){_0x4b53c2=_0x4b53c2||0x1f4;return function(_0x196f23){logger['error'](_0x196f23[_0x103c('0x2f')]);if(_0x196f23['name']){delete _0x196f23[_0x103c('0x30')];}_0x2ad079['status'](_0x4b53c2)[_0x103c('0x31')](_0x196f23);};}exports[_0x103c('0x32')]=function(_0x5baaed,_0x2c2f22){var _0x249e58={},_0x4afe66={},_0x178cc9={'count':0x0,'rows':[]};var _0x8743ed=_[_0x103c('0x33')](db[_0x103c('0x34')][_0x103c('0x35')],function(_0x182c95){return{'name':_0x182c95[_0x103c('0x36')],'type':_0x182c95[_0x103c('0x37')][_0x103c('0x38')]};});_0x4afe66['model']=_[_0x103c('0x33')](_0x8743ed,_0x103c('0x30'));_0x4afe66[_0x103c('0x39')]=_[_0x103c('0x3a')](_0x5baaed[_0x103c('0x39')]);_0x4afe66[_0x103c('0x3b')]=_[_0x103c('0x3c')](_0x4afe66['model'],_0x4afe66[_0x103c('0x39')]);_0x249e58[_0x103c('0x3d')]=_[_0x103c('0x3c')](_0x4afe66[_0x103c('0x3e')],qs['fields'](_0x5baaed[_0x103c('0x39')][_0x103c('0x3f')]));_0x249e58[_0x103c('0x3d')]=_0x249e58[_0x103c('0x3d')]['length']?_0x249e58[_0x103c('0x3d')]:_0x4afe66[_0x103c('0x3e')];if(!_0x5baaed[_0x103c('0x39')]['hasOwnProperty'](_0x103c('0x40'))){_0x249e58[_0x103c('0x22')]=qs[_0x103c('0x22')](_0x5baaed[_0x103c('0x39')][_0x103c('0x22')]);_0x249e58['offset']=qs[_0x103c('0x20')](_0x5baaed[_0x103c('0x39')]['offset']);}_0x249e58[_0x103c('0x41')]=qs[_0x103c('0x42')](_0x5baaed[_0x103c('0x39')][_0x103c('0x42')]);_0x249e58['where']=qs[_0x103c('0x3b')](_[_0x103c('0x43')](_0x5baaed[_0x103c('0x39')],_0x4afe66[_0x103c('0x3b')]),_0x8743ed);if(_0x5baaed[_0x103c('0x39')][_0x103c('0x44')]){_0x249e58[_0x103c('0x45')]=_[_0x103c('0x46')](_0x249e58[_0x103c('0x45')],{'$or':_[_0x103c('0x33')](_0x8743ed,function(_0x47201b){if(_0x47201b[_0x103c('0x37')]!==_0x103c('0x47')){var _0x549375={};_0x549375[_0x47201b[_0x103c('0x30')]]={'$like':'%'+_0x5baaed[_0x103c('0x39')]['filter']+'%'};return _0x549375;}})});}_0x249e58=_[_0x103c('0x46')]({},_0x249e58,_0x5baaed[_0x103c('0x48')]);var _0x587a58={'where':_0x249e58['where']};return db[_0x103c('0x34')][_0x103c('0x23')](_0x587a58)[_0x103c('0x28')](function(_0x42c5ff){_0x178cc9[_0x103c('0x23')]=_0x42c5ff;if(_0x5baaed[_0x103c('0x39')]['includeAll']){_0x249e58[_0x103c('0x49')]=[{'all':!![]}];}return db['CmList']['findAll'](_0x249e58);})[_0x103c('0x28')](function(_0x2ca61b){_0x178cc9[_0x103c('0x4a')]=_0x2ca61b;return _0x178cc9;})['then'](respondWithFilteredResult(_0x2c2f22,_0x249e58))[_0x103c('0x4b')](handleError(_0x2c2f22,null));};exports['show']=function(_0x2c8c9a,_0x47c6f4){var _0x3c6e95={'raw':![],'where':{'id':_0x2c8c9a[_0x103c('0x4c')]['id']}},_0x40c57b={};_0x40c57b[_0x103c('0x3e')]=_['keys'](db[_0x103c('0x34')][_0x103c('0x35')]);_0x40c57b[_0x103c('0x39')]=_[_0x103c('0x3a')](_0x2c8c9a[_0x103c('0x39')]);_0x40c57b[_0x103c('0x3b')]=_[_0x103c('0x3c')](_0x40c57b[_0x103c('0x3e')],_0x40c57b[_0x103c('0x39')]);_0x3c6e95[_0x103c('0x3d')]=_[_0x103c('0x3c')](_0x40c57b['model'],qs[_0x103c('0x3f')](_0x2c8c9a[_0x103c('0x39')]['fields']));_0x3c6e95[_0x103c('0x3d')]=_0x3c6e95[_0x103c('0x3d')][_0x103c('0x4d')]?_0x3c6e95[_0x103c('0x3d')]:_0x40c57b['model'];if(_0x2c8c9a[_0x103c('0x39')]['includeAll']){_0x3c6e95[_0x103c('0x49')]=[{'all':!![]}];}_0x3c6e95=_[_0x103c('0x46')]({},_0x3c6e95,_0x2c8c9a[_0x103c('0x48')]);return db[_0x103c('0x34')][_0x103c('0x4e')](_0x3c6e95)[_0x103c('0x28')](handleEntityNotFound(_0x47c6f4,null))[_0x103c('0x28')](respondWithResult(_0x47c6f4,null))[_0x103c('0x4b')](handleError(_0x47c6f4,null));};exports[_0x103c('0x4f')]=function(_0x1b8188,_0x398695){return db[_0x103c('0x34')][_0x103c('0x4f')](_0x1b8188[_0x103c('0x50')],{})[_0x103c('0x28')](function(_0x2a73bc){var _0x125d5f=_0x1b8188[_0x103c('0x51')][_0x103c('0x2a')]({'plain':!![]});if(!_0x125d5f)throw new Error(_0x103c('0x52'));if(_0x125d5f[_0x103c('0x53')]===_0x103c('0x51')){var _0x33fcd5=_0x2a73bc[_0x103c('0x2a')]({'plain':!![]});var _0x4811b8=_0x103c('0x2b');return db[_0x103c('0x54')][_0x103c('0x4e')]({'where':{'name':_0x4811b8,'userProfileId':_0x125d5f[_0x103c('0x55')]},'raw':!![]})[_0x103c('0x28')](function(_0x51b881){if(_0x51b881&&_0x51b881[_0x103c('0x56')]===0x0){return db[_0x103c('0x2c')][_0x103c('0x4f')]({'name':_0x33fcd5['name'],'resourceId':_0x33fcd5['id'],'type':_0x51b881[_0x103c('0x30')],'sectionId':_0x51b881['id']},{})[_0x103c('0x28')](function(){return _0x2a73bc;});}else{return _0x2a73bc;}})[_0x103c('0x4b')](function(_0xa1216f){logger[_0x103c('0x57')](_0x103c('0x58'),_0xa1216f);throw _0xa1216f;});}return _0x2a73bc;})[_0x103c('0x28')](respondWithResult(_0x398695,0xc9))['catch'](handleError(_0x398695,null));};exports['update']=function(_0x34a049,_0x5177cc){if(_0x34a049['body']['id']){delete _0x34a049[_0x103c('0x50')]['id'];}return db[_0x103c('0x34')][_0x103c('0x4e')]({'where':{'id':_0x34a049[_0x103c('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5177cc,null))[_0x103c('0x28')](saveUpdates(_0x34a049[_0x103c('0x50')],null))[_0x103c('0x28')](respondWithResult(_0x5177cc,null))[_0x103c('0x4b')](handleError(_0x5177cc,null));};exports['destroy']=function(_0x570a8c,_0x19626d){return db['CmList'][_0x103c('0x4e')]({'where':{'id':_0x570a8c['params']['id']}})['then'](handleEntityNotFound(_0x19626d,null))[_0x103c('0x28')](removeEntity(_0x19626d,null))['catch'](handleError(_0x19626d,null));};exports[_0x103c('0x59')]=function(_0x3f0f6e,_0x56a4d8){return db[_0x103c('0x34')][_0x103c('0x59')]()['then'](respondWithResult(_0x56a4d8,null))['catch'](handleError(_0x56a4d8,null));};exports[_0x103c('0x5a')]=function(_0x4ba517,_0x1db73b,_0x2442ef){if(_0x4ba517[_0x103c('0x50')]['id']){delete _0x4ba517[_0x103c('0x50')]['id'];}return db[_0x103c('0x34')][_0x103c('0x4e')]({'where':{'id':_0x4ba517['params']['id']}})['then'](handleEntityNotFound(_0x1db73b,null))['then'](function(_0x53dcc5){if(_0x53dcc5){_0x4ba517[_0x103c('0x50')][_0x103c('0x5b')]=_0x53dcc5['id'];return db['Disposition']['create'](_0x4ba517['body']);}})[_0x103c('0x28')](respondWithResult(_0x1db73b,null))['catch'](handleError(_0x1db73b,null));};exports[_0x103c('0x5c')]=function(_0x4965bf,_0x16b045,_0x4285b1){var _0x5018d0={'raw':![],'where':{}};var _0x53b3a4={};var _0xe422a7={'count':0x0,'rows':[]};return db[_0x103c('0x34')][_0x103c('0x5d')]({'where':{'id':_0x4965bf[_0x103c('0x4c')]['id']}})[_0x103c('0x28')](handleEntityNotFound(_0x16b045,null))[_0x103c('0x28')](function(_0x27d827){if(_0x27d827){_0x53b3a4[_0x103c('0x3e')]=_[_0x103c('0x3a')](db[_0x103c('0x5e')]['rawAttributes']);_0x53b3a4[_0x103c('0x39')]=_['keys'](_0x4965bf[_0x103c('0x39')]);_0x53b3a4[_0x103c('0x3b')]=_[_0x103c('0x3c')](_0x53b3a4[_0x103c('0x3e')],_0x53b3a4[_0x103c('0x39')]);_0x5018d0[_0x103c('0x3d')]=_[_0x103c('0x3c')](_0x53b3a4['model'],qs[_0x103c('0x3f')](_0x4965bf[_0x103c('0x39')]['fields']));_0x5018d0[_0x103c('0x3d')]=_0x5018d0[_0x103c('0x3d')][_0x103c('0x4d')]?_0x5018d0[_0x103c('0x3d')]:_0x53b3a4['model'];if(!_0x4965bf[_0x103c('0x39')][_0x103c('0x5f')]('nolimit')){_0x5018d0[_0x103c('0x22')]=qs['limit'](_0x4965bf[_0x103c('0x39')][_0x103c('0x22')]);_0x5018d0[_0x103c('0x20')]=qs['offset'](_0x4965bf[_0x103c('0x39')][_0x103c('0x20')]);}_0x5018d0[_0x103c('0x41')]=qs[_0x103c('0x42')](_0x4965bf[_0x103c('0x39')][_0x103c('0x42')]);_0x5018d0[_0x103c('0x45')]=qs[_0x103c('0x3b')](_['pick'](_0x4965bf[_0x103c('0x39')],_0x53b3a4[_0x103c('0x3b')]));_0x5018d0[_0x103c('0x45')][_0x103c('0x5b')]=_0x27d827['id'];if(_0x4965bf[_0x103c('0x39')]['filter']){_0x5018d0[_0x103c('0x45')]=_[_0x103c('0x46')](_0x5018d0['where'],{'$or':_[_0x103c('0x33')](_0x5018d0[_0x103c('0x3d')],function(_0x3d111e){var _0x1088fe={};_0x1088fe[_0x3d111e]={'$like':'%'+_0x4965bf[_0x103c('0x39')]['filter']+'%'};return _0x1088fe;})});}_0x5018d0=_['merge']({},_0x5018d0,_0x4965bf['options']);return db[_0x103c('0x5e')][_0x103c('0x23')]({'where':_0x5018d0[_0x103c('0x45')]})[_0x103c('0x28')](function(_0x2f126f){_0xe422a7[_0x103c('0x23')]=_0x2f126f;if(_0x4965bf[_0x103c('0x39')]['includeAll']){_0x5018d0[_0x103c('0x49')]=[{'all':!![]}];}return db[_0x103c('0x5e')][_0x103c('0x60')](_0x5018d0);})['then'](function(_0x240ef4){_0xe422a7[_0x103c('0x4a')]=_0x240ef4;return _0xe422a7;});}})[_0x103c('0x28')](respondWithFilteredResult(_0x16b045,_0x5018d0))['catch'](handleError(_0x16b045,null));};exports[_0x103c('0x61')]=function(_0x19a92e,_0x2799bc,_0x5500e6){return db[_0x103c('0x34')][_0x103c('0x4e')]({'where':{'id':_0x19a92e[_0x103c('0x4c')]['id']}})[_0x103c('0x28')](handleEntityNotFound(_0x2799bc,null))[_0x103c('0x28')](function(_0xcbbc8d){if(_0xcbbc8d){return _0xcbbc8d[_0x103c('0x61')](_0x19a92e[_0x103c('0x39')]['ids']);}})[_0x103c('0x28')](respondWithStatusCode(_0x2799bc,null))['catch'](handleError(_0x2799bc,null));};exports['addContacts']=function(_0xca9628,_0x3e5f82,_0x477fcd){return db[_0x103c('0x34')][_0x103c('0x4e')]({'where':{'id':_0xca9628[_0x103c('0x4c')]['id']}})[_0x103c('0x28')](handleEntityNotFound(_0x3e5f82,null))[_0x103c('0x28')](function(_0xc091bb){if(_0xc091bb){var _0x282450=[];var _0x40bcf2={'success':[],'errors':[]};return db[_0x103c('0x62')][_0x103c('0x59')]()['then'](function(_0x1e5896){if(_0xca9628[_0x103c('0x50')][_0x103c('0x63')]&&_[_0x103c('0x64')](_0xca9628[_0x103c('0x50')]['tags'])){if(_0xca9628['body']['tags']['length']){_0xca9628['body'][_0x103c('0x63')]=_0xca9628['body'][_0x103c('0x63')][_0x103c('0x65')](';')+';';}else{_0xca9628[_0x103c('0x50')][_0x103c('0x63')]=null;}}else{_0xca9628['body']['tags']=null;}if(_0xca9628[_0x103c('0x50')]&&_[_0x103c('0x64')](_0xca9628['body'])){for(var _0xc96d96=0x0;_0xc96d96<_0xca9628[_0x103c('0x50')]['length'];_0xc96d96+=0x1){_0xca9628[_0x103c('0x50')][_0xc96d96][_0x103c('0x5b')]=_0xca9628[_0x103c('0x4c')]['id'];_0x282450[_0x103c('0x66')](_0xca9628['body'][_0xc96d96]);}return BPromise[_0x103c('0x67')](_0x282450,function(_0x344ff4){return db['CmContact'][_0x103c('0x4f')](_['omit'](_0x344ff4,[_0x103c('0x68'),'id'])||{},{'fields':_[_0x103c('0x3a')](_0x1e5896),'raw':!![]})['then'](function(_0x4ca9d0){_0x40bcf2[_0x103c('0x69')]['push'](_0x4ca9d0[_0x103c('0x6a')]);})[_0x103c('0x4b')](function(_0x317d12){_0x40bcf2[_0x103c('0x6b')][_0x103c('0x66')]({'data':_0x344ff4,'error':_0x317d12['message']});});})[_0x103c('0x28')](function(_0x14e3d8){return _0x40bcf2;})[_0x103c('0x4b')](function(_0x2cc9d9){return _0x2cc9d9;});}else{_0x3e5f82['status'](0x190)[_0x103c('0x1f')]({'message':_0x103c('0x6c')});}});}})[_0x103c('0x28')](respondWithResult(_0x3e5f82,null))[_0x103c('0x4b')](handleError(_0x3e5f82,null));};exports[_0x103c('0x6d')]=function(_0x36aaad,_0x4c67b9,_0xe9e2fc){var _0xa1a166;return db[_0x103c('0x34')]['find']({'where':{'id':_0x36aaad[_0x103c('0x4c')]['id']},'include':[{'model':db[_0x103c('0x6e')],'as':_0x103c('0x6f')}]})[_0x103c('0x28')](handleEntityNotFound(_0x4c67b9,null))[_0x103c('0x28')](function(_0x596ab2){if(_0x596ab2){_0xa1a166=_0x596ab2;return db[_0x103c('0x62')]['rawAttributes'];}})[_0x103c('0x28')](function(_0x303dcd){if(_0x303dcd){var _0x1614d1={};var _0x36d306={};_0x36d306[_0x103c('0x3e')]=_['concat'](_[_0x103c('0x3a')](_0x303dcd),_[_0x103c('0x33')](_0xa1a166[_0x103c('0x6f')],function(_0x1d9089){return util[_0x103c('0x70')]('cf_%d',_0x1d9089['id']);}));_0x36d306[_0x103c('0x39')]=_['keys'](_0x36aaad[_0x103c('0x39')]);_0x36d306['filters']=_[_0x103c('0x3c')](_0x36d306[_0x103c('0x3e')],_0x36d306[_0x103c('0x39')]);_0x1614d1[_0x103c('0x3d')]=_['intersection'](_0x36d306['model'],qs[_0x103c('0x3f')](_0x36aaad[_0x103c('0x39')][_0x103c('0x3f')]));_0x1614d1[_0x103c('0x3d')]=_0x1614d1['attributes']['length']?_0x1614d1[_0x103c('0x3d')]:_0x36d306[_0x103c('0x3e')];if(!_0x36aaad[_0x103c('0x39')][_0x103c('0x5f')]('nolimit')){_0x1614d1['limit']=qs['limit'](_0x36aaad[_0x103c('0x39')][_0x103c('0x22')]);_0x1614d1[_0x103c('0x20')]=qs[_0x103c('0x20')](_0x36aaad[_0x103c('0x39')]['offset']);}_0x1614d1[_0x103c('0x41')]=qs[_0x103c('0x42')](_0x36aaad[_0x103c('0x39')][_0x103c('0x42')]);_0x1614d1[_0x103c('0x45')]=qs[_0x103c('0x3b')](_[_0x103c('0x43')](_0x36aaad[_0x103c('0x39')],_0x36d306[_0x103c('0x3b')]));_0x1614d1[_0x103c('0x71')]=!![];if(_0x36aaad[_0x103c('0x39')][_0x103c('0x44')]){_0x1614d1['where']=_[_0x103c('0x46')](_0x1614d1['where'],{'$or':_['map'](_0x1614d1[_0x103c('0x3d')],function(_0x38e508){var _0x363d2a={};_0x363d2a[_0x38e508]={'$like':'%'+_0x36aaad[_0x103c('0x39')]['filter']+'%'};return _0x363d2a;})});}_0x1614d1=_[_0x103c('0x46')]({},_0x1614d1,_0x36aaad[_0x103c('0x48')]);return _0xa1a166[_0x103c('0x6d')](_0x1614d1);}})['then'](respondWithResult(_0x4c67b9,null))[_0x103c('0x4b')](handleError(_0x4c67b9,null));};exports[_0x103c('0x72')]=function(_0xca8e48,_0x252b78,_0x544bc5){var _0x171560;var _0x1992aa;var _0x5bb799;var _0x23609e=_0xca8e48[_0x103c('0x4c')]['id'];csv_results=[];return db[_0x103c('0x73')]['findAll']({'attributes':['id',_0x103c('0x30')],'raw':!![],'order':[_0x103c('0x74')]})[_0x103c('0x28')](function(_0x59e1ea){_0x171560=_0x59e1ea;var _0x502a4d=_[_0x103c('0x3a')](db[_0x103c('0x62')]['rawAttributes']);return db['CmCustomField']['findAll']({'raw':!![],'attributes':['id',_0x103c('0x75')]})[_0x103c('0x28')](function(_0x587898){_0x1992aa=_0x587898;var _0x2376d3=squel[_0x103c('0x76')]()[_0x103c('0x3f')](_0x502a4d)[_0x103c('0x77')](_0x103c('0x78'),'c')[_0x103c('0x45')]('c.ListId\x20=\x20?',_0x23609e)['where'](_0x103c('0x79'))[_0x103c('0x7a')]();for(var _0x4337b4=0x0;_0x4337b4<_0x1992aa[_0x103c('0x4d')];_0x4337b4++){_0x2376d3['field'](_0x103c('0x7b')+_0x1992aa[_0x4337b4]['id'],_0x103c('0x7c')+_0x1992aa[_0x4337b4][_0x103c('0x75')]);}for(var _0x4337b4=0x0;_0x4337b4<_0x171560[_0x103c('0x4d')];_0x4337b4++){_0x2376d3[_0x103c('0x7d')](squel[_0x103c('0x76')]()[_0x103c('0x7d')](_0x103c('0x7e'))[_0x103c('0x77')](_0x103c('0x7f'))['where']('ItemTypeId\x20=\x20?',_0x171560[_0x4337b4]['id'])['where'](_0x103c('0x80')),_0x103c('0x81')+_0x171560[_0x4337b4][_0x103c('0x30')]);_0x2376d3[_0x103c('0x7d')](squel[_0x103c('0x76')]()[_0x103c('0x7d')](_0x103c('0x82'))[_0x103c('0x77')](_0x103c('0x7f'))[_0x103c('0x45')](_0x103c('0x83'),_0x171560[_0x4337b4]['id'])['where'](_0x103c('0x80')),_0x103c('0x84')+_0x171560[_0x4337b4][_0x103c('0x30')]);}var _0x4d45c0=[];_0x4d45c0[_0x103c('0x66')](_0x2376d3[_0x103c('0x85')]());BPromise[_0x103c('0x67')](_0x4d45c0,handleQuery)[_0x103c('0x28')](function(_0x354ea9){handleQuery(_0x2376d3[_0x103c('0x85')]());var _0x329cb1=csv_results[0x0];if(!_[_0x103c('0x86')](_0x329cb1)){var _0x2bb3d3=toCsv(_0x329cb1);var _0x5be4b2=Date['now']();fs[_0x103c('0x87')](util['format']('/tmp/list_%d_%s.csv',_0x23609e,_0x5be4b2),_0x2bb3d3);_0x252b78[_0x103c('0x88')](_0x103c('0x89'),_0x103c('0x8a')+util[_0x103c('0x70')](_0x103c('0x8b'),_0x23609e,_0x5be4b2));_0x252b78[_0x103c('0x88')](_0x103c('0x8c'),_0x103c('0x8d'));return _0x252b78[_0x103c('0x8e')](util[_0x103c('0x70')](_0x103c('0x8f'),_0x23609e,_0x5be4b2));}else{return _0x252b78[_0x103c('0x2e')](0xcc);}});});});};exports[_0x103c('0x90')]=function(_0x3e941c,_0xd8281a,_0x15ad8f){var _0x5e8d8f;delete _0x3e941c[_0x103c('0x50')]['id'];return db[_0x103c('0x34')]['findOne']({'where':{'id':_0x3e941c[_0x103c('0x4c')]['id']}})[_0x103c('0x28')](handleEntityNotFound(_0xd8281a,null))['then'](function(_0x517fe9){if(_0x517fe9){return db[_0x103c('0x91')][_0x103c('0x92')](function(_0x3d4953){return db[_0x103c('0x6e')][_0x103c('0x4f')](_0x3e941c['body'],{'transaction':_0x3d4953})[_0x103c('0x28')](function(_0x5e35b4){_0x5e8d8f=_0x5e35b4;return _0x517fe9[_0x103c('0x93')](_0x5e35b4,{'transaction':_0x3d4953});})[_0x103c('0x28')](function(){var _0x58f484={'type':db['Sequelize'][_0x103c('0x94')],'transaction':_0x3d4953};switch(_0x3e941c[_0x103c('0x50')][_0x103c('0x37')]){case _0x103c('0x95'):_0x58f484[_0x103c('0x37')]=db['Sequelize'][_0x103c('0x94')];break;case _0x103c('0x96'):_0x58f484[_0x103c('0x37')]=db[_0x103c('0x97')][_0x103c('0x98')];break;case'switch':_0x58f484[_0x103c('0x37')]=db[_0x103c('0x97')][_0x103c('0x99')];_0x58f484[_0x103c('0x9a')]=![];break;default:}return db[_0x103c('0x91')][_0x103c('0x9b')][_0x103c('0x9c')]('cm_contacts',util[_0x103c('0x70')](_0x103c('0x9d'),_0x5e8d8f['id']),_0x58f484);})['then'](function(){return _0x5e8d8f;});});}})['then'](respondWithResult(_0xd8281a,null))['catch'](handleError(_0xd8281a,null));};exports[_0x103c('0x9e')]=function(_0x436253,_0x11fcec,_0x462490){var _0x27c4a6={};var _0x1fd077={};var _0x551431;var _0x48ff61;return db[_0x103c('0x34')][_0x103c('0x5d')]({'where':{'id':_0x436253[_0x103c('0x4c')]['id']}})[_0x103c('0x28')](handleEntityNotFound(_0x11fcec,null))[_0x103c('0x28')](function(_0x4e395f){if(_0x4e395f){_0x551431=_0x4e395f;_0x1fd077[_0x103c('0x3e')]=_[_0x103c('0x3a')](db[_0x103c('0x6e')][_0x103c('0x35')]);_0x1fd077[_0x103c('0x39')]=_['keys'](_0x436253[_0x103c('0x39')]);_0x1fd077[_0x103c('0x3b')]=_[_0x103c('0x3c')](_0x1fd077['model'],_0x1fd077[_0x103c('0x39')]);_0x27c4a6[_0x103c('0x3d')]=_[_0x103c('0x3c')](_0x1fd077[_0x103c('0x3e')],qs['fields'](_0x436253[_0x103c('0x39')][_0x103c('0x3f')]));_0x27c4a6[_0x103c('0x3d')]=_0x27c4a6[_0x103c('0x3d')][_0x103c('0x4d')]?_0x27c4a6[_0x103c('0x3d')]:_0x1fd077[_0x103c('0x3e')];_0x27c4a6[_0x103c('0x41')]=qs['sort'](_0x436253['query'][_0x103c('0x42')]);_0x27c4a6[_0x103c('0x45')]=qs[_0x103c('0x3b')](_[_0x103c('0x43')](_0x436253[_0x103c('0x39')],_0x1fd077[_0x103c('0x3b')]));_0x27c4a6[_0x103c('0x45')]=_[_0x103c('0x46')](_0x27c4a6[_0x103c('0x45')],{'$or':[{'ListId':_0x4e395f['id']},{'ListId':null}]});if(_0x436253['query'][_0x103c('0x44')]){_0x27c4a6[_0x103c('0x45')]=_['merge'](_0x27c4a6[_0x103c('0x45')],{'$or':_[_0x103c('0x33')](_0x27c4a6['attributes'],function(_0x1fba35){var _0x3858a1={};_0x3858a1[_0x1fba35]={'$like':'%'+_0x436253[_0x103c('0x39')][_0x103c('0x44')]+'%'};return _0x3858a1;})});}_0x27c4a6=_[_0x103c('0x46')]({},_0x27c4a6,_0x436253[_0x103c('0x48')]);return db['CmCustomField']['findAndCountAll'](_0x27c4a6);}})['then'](respondWithResult(_0x11fcec,null))[_0x103c('0x4b')](handleError(_0x11fcec,null));};exports[_0x103c('0x9f')]=function(_0x41b182,_0x8ac3cf){return db[_0x103c('0x6e')][_0x103c('0xa0')]({'where':{'ListId':null}})[_0x103c('0x28')](handleEntityNotFound(_0x8ac3cf,null))[_0x103c('0x28')](function(_0x3fc31b){return _0x3fc31b;})[_0x103c('0x28')](respondWithResult(_0x8ac3cf,null))[_0x103c('0x4b')](handleError(_0x8ac3cf,null));};exports[_0x103c('0xa1')]=function(_0x194ae5,_0x27fc18,_0x3be544){return db[_0x103c('0x34')][_0x103c('0x4e')]({'where':{'id':_0x194ae5[_0x103c('0x4c')]['id']}})['then'](handleEntityNotFound(_0x27fc18,null))[_0x103c('0x28')](function(_0x448a71){if(_0x448a71){return _0x448a71[_0x103c('0xa1')](_0x194ae5[_0x103c('0x50')]['ids'],_[_0x103c('0xa2')](_0x194ae5[_0x103c('0x50')],['ids','id'])||{})[_0x103c('0xa3')](function(_0x292ae8){for(var _0x399ab5=0x0;_0x399ab5<_0x194ae5[_0x103c('0x50')][_0x103c('0x68')]['length'];_0x399ab5+=0x1){socket[_0x103c('0xa4')](_0x103c('0xa5'),{'UserId':Number(_0x194ae5['body']['ids'][_0x399ab5]),'CmListId':Number(_0x194ae5[_0x103c('0x4c')]['id'])});}return _0x292ae8;});}})[_0x103c('0x28')](respondWithResult(_0x27fc18,null))['catch'](handleError(_0x27fc18,null));};exports[_0x103c('0xa6')]=function(_0x36f31c,_0x5f1a62,_0x1e79d2){return db['CmList'][_0x103c('0x4e')]({'where':{'id':_0x36f31c[_0x103c('0x4c')]['id']}})[_0x103c('0x28')](handleEntityNotFound(_0x5f1a62,null))[_0x103c('0x28')](function(_0x11b006){if(_0x11b006){return _0x11b006[_0x103c('0xa6')](_0x36f31c[_0x103c('0x39')]['ids'])[_0x103c('0x28')](function(){if(_[_0x103c('0x64')](_0x36f31c[_0x103c('0x39')][_0x103c('0x68')])){for(var _0x4283ef=0x0;_0x4283ef<_0x36f31c['query'][_0x103c('0x68')]['length'];_0x4283ef+=0x1){socket['emit']('userCmList:remove',{'UserId':Number(_0x36f31c[_0x103c('0x39')][_0x103c('0x68')][_0x4283ef]),'CmListId':Number(_0x36f31c[_0x103c('0x4c')]['id'])});}}else{socket[_0x103c('0xa4')](_0x103c('0xa7'),{'UserId':Number(_0x36f31c[_0x103c('0x39')]['ids']),'CmListId':Number(_0x36f31c[_0x103c('0x4c')]['id'])});}});}})[_0x103c('0x28')](respondWithStatusCode(_0x5f1a62,null))[_0x103c('0x4b')](handleError(_0x5f1a62,null));};exports[_0x103c('0xa8')]=function(_0x2dadc1,_0x711871,_0x577cf4){var _0x503d3b={};var _0xa284a5={};var _0x5bec57;var _0x1a8a52;return db['CmList'][_0x103c('0x5d')]({'where':{'id':_0x2dadc1[_0x103c('0x4c')]['id']}})[_0x103c('0x28')](handleEntityNotFound(_0x711871,null))[_0x103c('0x28')](function(_0x25e4c8){if(_0x25e4c8){_0x5bec57=_0x25e4c8;_0xa284a5[_0x103c('0x3e')]=_[_0x103c('0x3a')](db['User'][_0x103c('0x35')]);_0xa284a5[_0x103c('0x39')]=_[_0x103c('0x3a')](_0x2dadc1[_0x103c('0x39')]);_0xa284a5[_0x103c('0x3b')]=_[_0x103c('0x3c')](_0xa284a5[_0x103c('0x3e')],_0xa284a5[_0x103c('0x39')]);_0x503d3b['attributes']=_[_0x103c('0x3c')](_0xa284a5[_0x103c('0x3e')],qs[_0x103c('0x3f')](_0x2dadc1['query'][_0x103c('0x3f')]));_0x503d3b[_0x103c('0x3d')]=_0x503d3b[_0x103c('0x3d')]['length']?_0x503d3b['attributes']:_0xa284a5[_0x103c('0x3e')];_0x503d3b[_0x103c('0x41')]=qs[_0x103c('0x42')](_0x2dadc1[_0x103c('0x39')][_0x103c('0x42')]);_0x503d3b['where']=qs['filters'](_[_0x103c('0x43')](_0x2dadc1[_0x103c('0x39')],_0xa284a5[_0x103c('0x3b')]));if(_0x2dadc1[_0x103c('0x39')][_0x103c('0x44')]){_0x503d3b[_0x103c('0x45')]=_['merge'](_0x503d3b[_0x103c('0x45')],{'$or':_['map'](_0x503d3b[_0x103c('0x3d')],function(_0x1e310e){var _0x51d5c0={};_0x51d5c0[_0x1e310e]={'$like':'%'+_0x2dadc1[_0x103c('0x39')]['filter']+'%'};return _0x51d5c0;})});}_0x503d3b=_['merge']({},_0x503d3b,_0x2dadc1[_0x103c('0x48')]);return _0x5bec57['getAgents'](_0x503d3b);}})['then'](function(_0x1b9b70){if(_0x1b9b70){_0x1a8a52=_0x1b9b70[_0x103c('0x4d')];if(!_0x2dadc1[_0x103c('0x39')][_0x103c('0x5f')](_0x103c('0x40'))){_0x503d3b[_0x103c('0x22')]=qs[_0x103c('0x22')](_0x2dadc1[_0x103c('0x39')]['limit']);_0x503d3b[_0x103c('0x20')]=qs['offset'](_0x2dadc1[_0x103c('0x39')][_0x103c('0x20')]);}return _0x5bec57[_0x103c('0xa8')](_0x503d3b);}})[_0x103c('0x28')](function(_0x36ecd6){if(_0x36ecd6){return _0x36ecd6?{'count':_0x1a8a52,'rows':_0x36ecd6}:null;}})['then'](respondWithResult(_0x711871,null))[_0x103c('0x4b')](handleError(_0x711871,null));};function handleQuery(_0x44fa2c){logger[_0x103c('0xa9')](_0x44fa2c);return db[_0x103c('0x91')]['query'](_0x44fa2c)['spread'](function(_0x4d434a){csv_results[_0x103c('0x66')](_0x4d434a);})[_0x103c('0x4b')](function(_0x5e6030){logger['error'](_0x5e6030['message']);});}
\ No newline at end of file
+var _0x36d8=['cf_%s','getCustomFields','findOne','order','getGlobalCustomFields','findAndCountAll','addAgents','spread','emit','userCmList:save','removeAgents','userCmList:remove','getAgents','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','then','Lists','end','error','stack','name','send','index','map','CmList','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','options','include','rows','show','find','catch','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','addDisposition','Disposition','includeAll','findAll','removeDispositions','ids','tags','isArray','join','ListId','push','each','omit','success','dataValues','message','Malformed\x20request\x20syntax','getContacts','CustomFields','CmContact','concat','format','cf_%d','getContactsCsv','ContactItemType','CmCustomField','alias','from','cm_contacts','c.ListId\x20=\x20?','distinct','customField_','field','select','item','ItemTypeId\x20=\x20?','additionalPhone_','description','cm_contact_has_items','CmContactId\x20=\x20c.id','toString','isEmpty','now','writeFileSync','setHeader','attachment;\x20filename=','Content-type','text/csv','download','/tmp/list_%d_%s.csv','addCustomFields','Sequelize','text','TEXT','number','INTEGER','switch','defaultValue','sequelize','queryInterface','addColumn'];(function(_0x1dce59,_0x54a0e5){var _0x47f187=function(_0x39d510){while(--_0x39d510){_0x1dce59['push'](_0x1dce59['shift']());}};_0x47f187(++_0x54a0e5);}(_0x36d8,0xb1));var _0x836d=function(_0x10ca12,_0x34b81e){_0x10ca12=_0x10ca12-0x0;var _0x19607f=_0x36d8[_0x10ca12];return _0x19607f;};'use strict';var emlformat=require(_0x836d('0x0'));var rimraf=require(_0x836d('0x1'));var zipdir=require(_0x836d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x836d('0x3'));var moment=require('moment');var BPromise=require(_0x836d('0x4'));var Mustache=require(_0x836d('0x5'));var util=require(_0x836d('0x6'));var path=require(_0x836d('0x7'));var sox=require(_0x836d('0x8'));var csv=require(_0x836d('0x9'));var ejs=require(_0x836d('0xa'));var fs=require('fs');var fs_extra=require(_0x836d('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x836d('0xc'));var jsforce=require(_0x836d('0xd'));var deskjs=require(_0x836d('0xe'));var toCsv=require(_0x836d('0x9'));var querystring=require(_0x836d('0xf'));var Papa=require(_0x836d('0x10'));var Redis=require(_0x836d('0x11'));var authService=require(_0x836d('0x12'));var qs=require(_0x836d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x836d('0x14'));var utils=require(_0x836d('0x15'));var config=require(_0x836d('0x16'));var licenseUtil=require(_0x836d('0x17'));var db=require(_0x836d('0x18'))['db'];var csv_results;config[_0x836d('0x19')]=_[_0x836d('0x1a')](config[_0x836d('0x19')],{'host':_0x836d('0x1b'),'port':0x18eb});var socket=require(_0x836d('0x1c'))(new Redis(config[_0x836d('0x19')]));require('./cmList.socket')[_0x836d('0x1d')](socket);function respondWithStatusCode(_0xed77a6,_0x442041){_0x442041=_0x442041||0xcc;return function(_0x545085){if(_0x545085){return _0xed77a6[_0x836d('0x1e')](_0x442041);}return _0xed77a6[_0x836d('0x1f')](_0x442041)['end']();};}function respondWithResult(_0x1d3bf2,_0xc7c820){_0xc7c820=_0xc7c820||0xc8;return function(_0x279373){if(_0x279373){return _0x1d3bf2[_0x836d('0x1f')](_0xc7c820)[_0x836d('0x20')](_0x279373);}};}function respondWithFilteredResult(_0x5f02de,_0x2ad998){return function(_0x1a2490){if(_0x1a2490){var _0x1949e8=typeof _0x2ad998[_0x836d('0x21')]==='undefined'&&typeof _0x2ad998[_0x836d('0x22')]===_0x836d('0x23');var _0x27c87a=_0x1a2490[_0x836d('0x24')];var _0x15cc1d=_0x1949e8?0x0:_0x2ad998['offset'];var _0x5cce4f=_0x1949e8?_0x1a2490['count']:_0x2ad998[_0x836d('0x21')]+_0x2ad998[_0x836d('0x22')];var _0x4c5797;if(_0x5cce4f>=_0x27c87a){_0x5cce4f=_0x27c87a;_0x4c5797=0xc8;}else{_0x4c5797=0xce;}_0x5f02de[_0x836d('0x1f')](_0x4c5797);return _0x5f02de[_0x836d('0x25')](_0x836d('0x26'),_0x15cc1d+'-'+_0x5cce4f+'/'+_0x27c87a)['json'](_0x1a2490);}return null;};}function patchUpdates(_0x3ae8ec){return function(_0x22bea0){try{jsonpatch[_0x836d('0x27')](_0x22bea0,_0x3ae8ec,!![]);}catch(_0x636eed){return BPromise[_0x836d('0x28')](_0x636eed);}return _0x22bea0[_0x836d('0x29')]();};}function saveUpdates(_0x204717,_0x3f6fe8){return function(_0x1a9824){if(_0x1a9824){return _0x1a9824[_0x836d('0x2a')](_0x204717)['then'](function(_0x5392de){return _0x5392de;});}return null;};}function removeEntity(_0x3e74a1,_0x8dabec){return function(_0xe6ecef){if(_0xe6ecef){return _0xe6ecef[_0x836d('0x2b')]()[_0x836d('0x2c')](function(){var _0x45538f=_0xe6ecef['get']({'plain':!![]});var _0x39ee57=_0x836d('0x2d');return db['UserProfileResource'][_0x836d('0x2b')]({'where':{'type':_0x39ee57,'resourceId':_0x45538f['id']}})[_0x836d('0x2c')](function(){return _0xe6ecef;});})[_0x836d('0x2c')](function(){_0x3e74a1[_0x836d('0x1f')](0xcc)[_0x836d('0x2e')]();});}};}function handleEntityNotFound(_0x4b7be9,_0x152b3f){return function(_0x25b119){if(!_0x25b119){_0x4b7be9[_0x836d('0x1e')](0x194);}return _0x25b119;};}function handleError(_0x255cfd,_0x11320b){_0x11320b=_0x11320b||0x1f4;return function(_0x32e615){logger[_0x836d('0x2f')](_0x32e615[_0x836d('0x30')]);if(_0x32e615[_0x836d('0x31')]){delete _0x32e615[_0x836d('0x31')];}_0x255cfd['status'](_0x11320b)[_0x836d('0x32')](_0x32e615);};}exports[_0x836d('0x33')]=function(_0x4a8c29,_0x1d6cee){var _0x1e1cef={},_0x150a09={},_0x33887b={'count':0x0,'rows':[]};var _0x135243=_[_0x836d('0x34')](db[_0x836d('0x35')][_0x836d('0x36')],function(_0x20e94c){return{'name':_0x20e94c[_0x836d('0x37')],'type':_0x20e94c['type'][_0x836d('0x38')]};});_0x150a09[_0x836d('0x39')]=_[_0x836d('0x34')](_0x135243,_0x836d('0x31'));_0x150a09[_0x836d('0x3a')]=_[_0x836d('0x3b')](_0x4a8c29['query']);_0x150a09[_0x836d('0x3c')]=_['intersection'](_0x150a09[_0x836d('0x39')],_0x150a09[_0x836d('0x3a')]);_0x1e1cef[_0x836d('0x3d')]=_[_0x836d('0x3e')](_0x150a09[_0x836d('0x39')],qs[_0x836d('0x3f')](_0x4a8c29[_0x836d('0x3a')]['fields']));_0x1e1cef['attributes']=_0x1e1cef[_0x836d('0x3d')][_0x836d('0x40')]?_0x1e1cef[_0x836d('0x3d')]:_0x150a09[_0x836d('0x39')];if(!_0x4a8c29[_0x836d('0x3a')][_0x836d('0x41')](_0x836d('0x42'))){_0x1e1cef[_0x836d('0x22')]=qs['limit'](_0x4a8c29['query'][_0x836d('0x22')]);_0x1e1cef[_0x836d('0x21')]=qs[_0x836d('0x21')](_0x4a8c29[_0x836d('0x3a')][_0x836d('0x21')]);}_0x1e1cef['order']=qs['sort'](_0x4a8c29['query'][_0x836d('0x43')]);_0x1e1cef[_0x836d('0x44')]=qs[_0x836d('0x3c')](_[_0x836d('0x45')](_0x4a8c29[_0x836d('0x3a')],_0x150a09[_0x836d('0x3c')]),_0x135243);if(_0x4a8c29[_0x836d('0x3a')][_0x836d('0x46')]){_0x1e1cef[_0x836d('0x44')]=_[_0x836d('0x47')](_0x1e1cef['where'],{'$or':_['map'](_0x135243,function(_0x4b498b){if(_0x4b498b[_0x836d('0x48')]!==_0x836d('0x49')){var _0x4b696d={};_0x4b696d[_0x4b498b[_0x836d('0x31')]]={'$like':'%'+_0x4a8c29[_0x836d('0x3a')]['filter']+'%'};return _0x4b696d;}})});}_0x1e1cef=_['merge']({},_0x1e1cef,_0x4a8c29[_0x836d('0x4a')]);var _0x317f4c={'where':_0x1e1cef[_0x836d('0x44')]};return db[_0x836d('0x35')]['count'](_0x317f4c)['then'](function(_0x4e599d){_0x33887b[_0x836d('0x24')]=_0x4e599d;if(_0x4a8c29[_0x836d('0x3a')]['includeAll']){_0x1e1cef[_0x836d('0x4b')]=[{'all':!![]}];}return db[_0x836d('0x35')]['findAll'](_0x1e1cef);})[_0x836d('0x2c')](function(_0x37584e){_0x33887b[_0x836d('0x4c')]=_0x37584e;return _0x33887b;})[_0x836d('0x2c')](respondWithFilteredResult(_0x1d6cee,_0x1e1cef))['catch'](handleError(_0x1d6cee,null));};exports[_0x836d('0x4d')]=function(_0x5f094e,_0x4e460f){var _0x35ba7e={'raw':![],'where':{'id':_0x5f094e['params']['id']}},_0x45f113={};_0x45f113[_0x836d('0x39')]=_['keys'](db[_0x836d('0x35')]['rawAttributes']);_0x45f113['query']=_[_0x836d('0x3b')](_0x5f094e[_0x836d('0x3a')]);_0x45f113[_0x836d('0x3c')]=_[_0x836d('0x3e')](_0x45f113['model'],_0x45f113[_0x836d('0x3a')]);_0x35ba7e[_0x836d('0x3d')]=_[_0x836d('0x3e')](_0x45f113[_0x836d('0x39')],qs['fields'](_0x5f094e[_0x836d('0x3a')][_0x836d('0x3f')]));_0x35ba7e[_0x836d('0x3d')]=_0x35ba7e[_0x836d('0x3d')][_0x836d('0x40')]?_0x35ba7e[_0x836d('0x3d')]:_0x45f113[_0x836d('0x39')];if(_0x5f094e[_0x836d('0x3a')]['includeAll']){_0x35ba7e['include']=[{'all':!![]}];}_0x35ba7e=_[_0x836d('0x47')]({},_0x35ba7e,_0x5f094e[_0x836d('0x4a')]);return db[_0x836d('0x35')][_0x836d('0x4e')](_0x35ba7e)['then'](handleEntityNotFound(_0x4e460f,null))[_0x836d('0x2c')](respondWithResult(_0x4e460f,null))[_0x836d('0x4f')](handleError(_0x4e460f,null));};exports[_0x836d('0x50')]=function(_0x48e60d,_0x422414){return db[_0x836d('0x35')][_0x836d('0x50')](_0x48e60d['body'],{})[_0x836d('0x2c')](function(_0x5eea7e){var _0x1a132e=_0x48e60d[_0x836d('0x51')][_0x836d('0x52')]({'plain':!![]});if(!_0x1a132e)throw new Error(_0x836d('0x53'));if(_0x1a132e['role']===_0x836d('0x51')){var _0x2be09c=_0x5eea7e[_0x836d('0x52')]({'plain':!![]});var _0x5e9e3b=_0x836d('0x2d');return db[_0x836d('0x54')][_0x836d('0x4e')]({'where':{'name':_0x5e9e3b,'userProfileId':_0x1a132e['userProfileId']},'raw':!![]})[_0x836d('0x2c')](function(_0x4fff8b){if(_0x4fff8b&&_0x4fff8b['autoAssociation']===0x0){return db[_0x836d('0x55')][_0x836d('0x50')]({'name':_0x2be09c[_0x836d('0x31')],'resourceId':_0x2be09c['id'],'type':_0x4fff8b[_0x836d('0x31')],'sectionId':_0x4fff8b['id']},{})['then'](function(){return _0x5eea7e;});}else{return _0x5eea7e;}})[_0x836d('0x4f')](function(_0x38fc52){logger[_0x836d('0x2f')](_0x836d('0x56'),_0x38fc52);throw _0x38fc52;});}return _0x5eea7e;})[_0x836d('0x2c')](respondWithResult(_0x422414,0xc9))['catch'](handleError(_0x422414,null));};exports[_0x836d('0x2a')]=function(_0x4bbd95,_0x1b9a08){if(_0x4bbd95[_0x836d('0x57')]['id']){delete _0x4bbd95['body']['id'];}return db[_0x836d('0x35')][_0x836d('0x4e')]({'where':{'id':_0x4bbd95[_0x836d('0x58')]['id']}})[_0x836d('0x2c')](handleEntityNotFound(_0x1b9a08,null))[_0x836d('0x2c')](saveUpdates(_0x4bbd95[_0x836d('0x57')],null))[_0x836d('0x2c')](respondWithResult(_0x1b9a08,null))[_0x836d('0x4f')](handleError(_0x1b9a08,null));};exports[_0x836d('0x2b')]=function(_0x32feb1,_0x460386){return db[_0x836d('0x35')][_0x836d('0x4e')]({'where':{'id':_0x32feb1[_0x836d('0x58')]['id']}})[_0x836d('0x2c')](handleEntityNotFound(_0x460386,null))['then'](removeEntity(_0x460386,null))[_0x836d('0x4f')](handleError(_0x460386,null));};exports[_0x836d('0x59')]=function(_0x44195c,_0x5d2a5f){return db['CmList'][_0x836d('0x59')]()['then'](respondWithResult(_0x5d2a5f,null))[_0x836d('0x4f')](handleError(_0x5d2a5f,null));};exports[_0x836d('0x5a')]=function(_0x36ccb5,_0x34120e,_0x546899){if(_0x36ccb5[_0x836d('0x57')]['id']){delete _0x36ccb5[_0x836d('0x57')]['id'];}return db[_0x836d('0x35')][_0x836d('0x4e')]({'where':{'id':_0x36ccb5[_0x836d('0x58')]['id']}})[_0x836d('0x2c')](handleEntityNotFound(_0x34120e,null))[_0x836d('0x2c')](function(_0x147aec){if(_0x147aec){_0x36ccb5[_0x836d('0x57')]['ListId']=_0x147aec['id'];return db['Disposition'][_0x836d('0x50')](_0x36ccb5[_0x836d('0x57')]);}})[_0x836d('0x2c')](respondWithResult(_0x34120e,null))['catch'](handleError(_0x34120e,null));};exports['getDispositions']=function(_0x132f15,_0xdd76b8,_0x455c73){var _0x413829={'raw':![],'where':{}};var _0x25dba8={};var _0x16e4d1={'count':0x0,'rows':[]};return db[_0x836d('0x35')]['findOne']({'where':{'id':_0x132f15[_0x836d('0x58')]['id']}})['then'](handleEntityNotFound(_0xdd76b8,null))[_0x836d('0x2c')](function(_0xb0cf08){if(_0xb0cf08){_0x25dba8[_0x836d('0x39')]=_[_0x836d('0x3b')](db[_0x836d('0x5b')][_0x836d('0x36')]);_0x25dba8[_0x836d('0x3a')]=_['keys'](_0x132f15[_0x836d('0x3a')]);_0x25dba8[_0x836d('0x3c')]=_[_0x836d('0x3e')](_0x25dba8[_0x836d('0x39')],_0x25dba8[_0x836d('0x3a')]);_0x413829[_0x836d('0x3d')]=_[_0x836d('0x3e')](_0x25dba8[_0x836d('0x39')],qs[_0x836d('0x3f')](_0x132f15[_0x836d('0x3a')][_0x836d('0x3f')]));_0x413829[_0x836d('0x3d')]=_0x413829[_0x836d('0x3d')][_0x836d('0x40')]?_0x413829[_0x836d('0x3d')]:_0x25dba8['model'];if(!_0x132f15[_0x836d('0x3a')][_0x836d('0x41')](_0x836d('0x42'))){_0x413829['limit']=qs[_0x836d('0x22')](_0x132f15[_0x836d('0x3a')][_0x836d('0x22')]);_0x413829[_0x836d('0x21')]=qs[_0x836d('0x21')](_0x132f15[_0x836d('0x3a')][_0x836d('0x21')]);}_0x413829['order']=qs[_0x836d('0x43')](_0x132f15[_0x836d('0x3a')][_0x836d('0x43')]);_0x413829['where']=qs[_0x836d('0x3c')](_['pick'](_0x132f15[_0x836d('0x3a')],_0x25dba8['filters']));_0x413829['where']['ListId']=_0xb0cf08['id'];if(_0x132f15[_0x836d('0x3a')][_0x836d('0x46')]){_0x413829['where']=_[_0x836d('0x47')](_0x413829['where'],{'$or':_[_0x836d('0x34')](_0x413829[_0x836d('0x3d')],function(_0x5241cb){var _0x10a97c={};_0x10a97c[_0x5241cb]={'$like':'%'+_0x132f15['query']['filter']+'%'};return _0x10a97c;})});}_0x413829=_[_0x836d('0x47')]({},_0x413829,_0x132f15[_0x836d('0x4a')]);return db['Disposition'][_0x836d('0x24')]({'where':_0x413829['where']})['then'](function(_0x20da17){_0x16e4d1[_0x836d('0x24')]=_0x20da17;if(_0x132f15['query'][_0x836d('0x5c')]){_0x413829[_0x836d('0x4b')]=[{'all':!![]}];}return db[_0x836d('0x5b')][_0x836d('0x5d')](_0x413829);})[_0x836d('0x2c')](function(_0x3057fa){_0x16e4d1[_0x836d('0x4c')]=_0x3057fa;return _0x16e4d1;});}})[_0x836d('0x2c')](respondWithFilteredResult(_0xdd76b8,_0x413829))[_0x836d('0x4f')](handleError(_0xdd76b8,null));};exports[_0x836d('0x5e')]=function(_0x4c9942,_0x438dab,_0x4a3215){return db[_0x836d('0x35')][_0x836d('0x4e')]({'where':{'id':_0x4c9942['params']['id']}})[_0x836d('0x2c')](handleEntityNotFound(_0x438dab,null))[_0x836d('0x2c')](function(_0x473706){if(_0x473706){return _0x473706['removeDispositions'](_0x4c9942[_0x836d('0x3a')][_0x836d('0x5f')]);}})['then'](respondWithStatusCode(_0x438dab,null))[_0x836d('0x4f')](handleError(_0x438dab,null));};exports['addContacts']=function(_0x57cab4,_0x4e165b,_0x2e2547){return db[_0x836d('0x35')][_0x836d('0x4e')]({'where':{'id':_0x57cab4[_0x836d('0x58')]['id']}})['then'](handleEntityNotFound(_0x4e165b,null))[_0x836d('0x2c')](function(_0x43e6be){if(_0x43e6be){var _0x566d72=[];var _0x4578f7={'success':[],'errors':[]};return db['CmContact']['describe']()[_0x836d('0x2c')](function(_0x385c09){if(_0x57cab4[_0x836d('0x57')][_0x836d('0x60')]&&_[_0x836d('0x61')](_0x57cab4[_0x836d('0x57')][_0x836d('0x60')])){if(_0x57cab4[_0x836d('0x57')]['tags']['length']){_0x57cab4[_0x836d('0x57')][_0x836d('0x60')]=_0x57cab4[_0x836d('0x57')][_0x836d('0x60')][_0x836d('0x62')](';')+';';}else{_0x57cab4['body'][_0x836d('0x60')]=null;}}else{_0x57cab4['body'][_0x836d('0x60')]=null;}if(_0x57cab4[_0x836d('0x57')]&&_[_0x836d('0x61')](_0x57cab4[_0x836d('0x57')])){for(var _0x1129e7=0x0;_0x1129e7<_0x57cab4[_0x836d('0x57')]['length'];_0x1129e7+=0x1){_0x57cab4[_0x836d('0x57')][_0x1129e7][_0x836d('0x63')]=_0x57cab4[_0x836d('0x58')]['id'];_0x566d72[_0x836d('0x64')](_0x57cab4['body'][_0x1129e7]);}return BPromise[_0x836d('0x65')](_0x566d72,function(_0x218556){return db['CmContact'][_0x836d('0x50')](_[_0x836d('0x66')](_0x218556,[_0x836d('0x5f'),'id'])||{},{'fields':_[_0x836d('0x3b')](_0x385c09),'raw':!![]})[_0x836d('0x2c')](function(_0x16a7d0){_0x4578f7[_0x836d('0x67')][_0x836d('0x64')](_0x16a7d0[_0x836d('0x68')]);})[_0x836d('0x4f')](function(_0x738868){_0x4578f7['errors']['push']({'data':_0x218556,'error':_0x738868[_0x836d('0x69')]});});})[_0x836d('0x2c')](function(_0x4a2682){return _0x4578f7;})[_0x836d('0x4f')](function(_0x4835b0){return _0x4835b0;});}else{_0x4e165b[_0x836d('0x1f')](0x190)[_0x836d('0x20')]({'message':_0x836d('0x6a')});}});}})[_0x836d('0x2c')](respondWithResult(_0x4e165b,null))['catch'](handleError(_0x4e165b,null));};exports[_0x836d('0x6b')]=function(_0xf0c40d,_0x2d56ed,_0x14a317){var _0x415fa8;return db['CmList'][_0x836d('0x4e')]({'where':{'id':_0xf0c40d[_0x836d('0x58')]['id']},'include':[{'model':db['CmCustomField'],'as':_0x836d('0x6c')}]})[_0x836d('0x2c')](handleEntityNotFound(_0x2d56ed,null))[_0x836d('0x2c')](function(_0x4b4e2e){if(_0x4b4e2e){_0x415fa8=_0x4b4e2e;return db[_0x836d('0x6d')][_0x836d('0x36')];}})[_0x836d('0x2c')](function(_0x309d1d){if(_0x309d1d){var _0x5c0cb1={};var _0x335e6c={};_0x335e6c['model']=_[_0x836d('0x6e')](_[_0x836d('0x3b')](_0x309d1d),_[_0x836d('0x34')](_0x415fa8[_0x836d('0x6c')],function(_0x2595d4){return util[_0x836d('0x6f')](_0x836d('0x70'),_0x2595d4['id']);}));_0x335e6c[_0x836d('0x3a')]=_[_0x836d('0x3b')](_0xf0c40d['query']);_0x335e6c[_0x836d('0x3c')]=_['intersection'](_0x335e6c[_0x836d('0x39')],_0x335e6c[_0x836d('0x3a')]);_0x5c0cb1[_0x836d('0x3d')]=_[_0x836d('0x3e')](_0x335e6c[_0x836d('0x39')],qs[_0x836d('0x3f')](_0xf0c40d['query'][_0x836d('0x3f')]));_0x5c0cb1[_0x836d('0x3d')]=_0x5c0cb1[_0x836d('0x3d')][_0x836d('0x40')]?_0x5c0cb1[_0x836d('0x3d')]:_0x335e6c[_0x836d('0x39')];if(!_0xf0c40d[_0x836d('0x3a')]['hasOwnProperty']('nolimit')){_0x5c0cb1['limit']=qs[_0x836d('0x22')](_0xf0c40d[_0x836d('0x3a')]['limit']);_0x5c0cb1[_0x836d('0x21')]=qs[_0x836d('0x21')](_0xf0c40d['query']['offset']);}_0x5c0cb1['order']=qs[_0x836d('0x43')](_0xf0c40d[_0x836d('0x3a')][_0x836d('0x43')]);_0x5c0cb1[_0x836d('0x44')]=qs['filters'](_[_0x836d('0x45')](_0xf0c40d[_0x836d('0x3a')],_0x335e6c[_0x836d('0x3c')]));_0x5c0cb1['raw']=!![];if(_0xf0c40d['query']['filter']){_0x5c0cb1[_0x836d('0x44')]=_['merge'](_0x5c0cb1[_0x836d('0x44')],{'$or':_[_0x836d('0x34')](_0x5c0cb1[_0x836d('0x3d')],function(_0x101dae){var _0x5e077a={};_0x5e077a[_0x101dae]={'$like':'%'+_0xf0c40d[_0x836d('0x3a')]['filter']+'%'};return _0x5e077a;})});}_0x5c0cb1=_['merge']({},_0x5c0cb1,_0xf0c40d[_0x836d('0x4a')]);return _0x415fa8[_0x836d('0x6b')](_0x5c0cb1);}})['then'](respondWithResult(_0x2d56ed,null))[_0x836d('0x4f')](handleError(_0x2d56ed,null));};exports[_0x836d('0x71')]=function(_0x289342,_0xbd3054,_0x581e1b){var _0x489a46;var _0x2ed4e6;var _0x1ec88a;var _0x2f6efd=_0x289342['params']['id'];csv_results=[];return db[_0x836d('0x72')][_0x836d('0x5d')]({'attributes':['id',_0x836d('0x31')],'raw':!![],'order':['OrderBy']})[_0x836d('0x2c')](function(_0x2d9727){_0x489a46=_0x2d9727;var _0xf7d292=_['keys'](db['CmContact'][_0x836d('0x36')]);return db[_0x836d('0x73')][_0x836d('0x5d')]({'raw':!![],'attributes':['id',_0x836d('0x74')]})[_0x836d('0x2c')](function(_0x47d112){_0x2ed4e6=_0x47d112;var _0x2bb083=squel['select']()[_0x836d('0x3f')](_0xf7d292)[_0x836d('0x75')](_0x836d('0x76'),'c')[_0x836d('0x44')](_0x836d('0x77'),_0x2f6efd)[_0x836d('0x44')]('c.deletedAt\x20is\x20null')[_0x836d('0x78')]();for(var _0x3dd570=0x0;_0x3dd570<_0x2ed4e6[_0x836d('0x40')];_0x3dd570++){_0x2bb083['field']('c.cf_'+_0x2ed4e6[_0x3dd570]['id'],_0x836d('0x79')+_0x2ed4e6[_0x3dd570][_0x836d('0x74')]);}for(var _0x3dd570=0x0;_0x3dd570<_0x489a46[_0x836d('0x40')];_0x3dd570++){_0x2bb083[_0x836d('0x7a')](squel[_0x836d('0x7b')]()[_0x836d('0x7a')](_0x836d('0x7c'))[_0x836d('0x75')]('cm_contact_has_items')['where'](_0x836d('0x7d'),_0x489a46[_0x3dd570]['id'])['where']('CmContactId\x20=\x20c.id'),_0x836d('0x7e')+_0x489a46[_0x3dd570][_0x836d('0x31')]);_0x2bb083[_0x836d('0x7a')](squel[_0x836d('0x7b')]()[_0x836d('0x7a')](_0x836d('0x7f'))['from'](_0x836d('0x80'))[_0x836d('0x44')](_0x836d('0x7d'),_0x489a46[_0x3dd570]['id'])[_0x836d('0x44')](_0x836d('0x81')),'description_additionalPhone_'+_0x489a46[_0x3dd570][_0x836d('0x31')]);}var _0x54bc3b=[];_0x54bc3b[_0x836d('0x64')](_0x2bb083['toString']());BPromise[_0x836d('0x65')](_0x54bc3b,handleQuery)['then'](function(_0x2f24a0){handleQuery(_0x2bb083[_0x836d('0x82')]());var _0x3969e4=csv_results[0x0];if(!_[_0x836d('0x83')](_0x3969e4)){var _0xcfcd30=toCsv(_0x3969e4);var _0x55edee=Date[_0x836d('0x84')]();fs[_0x836d('0x85')](util[_0x836d('0x6f')]('/tmp/list_%d_%s.csv',_0x2f6efd,_0x55edee),_0xcfcd30);_0xbd3054[_0x836d('0x86')]('Content-disposition',_0x836d('0x87')+util['format']('list_%d_%s.csv',_0x2f6efd,_0x55edee));_0xbd3054[_0x836d('0x86')](_0x836d('0x88'),_0x836d('0x89'));return _0xbd3054[_0x836d('0x8a')](util[_0x836d('0x6f')](_0x836d('0x8b'),_0x2f6efd,_0x55edee));}else{return _0xbd3054['sendStatus'](0xcc);}});});});};exports['addCustomField']=function(_0x15b8a3,_0x4f51cc,_0x3792d8){var _0x24fd63;delete _0x15b8a3[_0x836d('0x57')]['id'];return db['CmList']['findOne']({'where':{'id':_0x15b8a3['params']['id']}})[_0x836d('0x2c')](handleEntityNotFound(_0x4f51cc,null))[_0x836d('0x2c')](function(_0x274a36){if(_0x274a36){return db['sequelize']['transaction'](function(_0x46f32d){return db['CmCustomField'][_0x836d('0x50')](_0x15b8a3[_0x836d('0x57')],{'transaction':_0x46f32d})['then'](function(_0x19595b){_0x24fd63=_0x19595b;return _0x274a36[_0x836d('0x8c')](_0x19595b,{'transaction':_0x46f32d});})['then'](function(){var _0x1ea7b3={'type':db[_0x836d('0x8d')]['TEXT'],'transaction':_0x46f32d};switch(_0x15b8a3[_0x836d('0x57')]['type']){case _0x836d('0x8e'):_0x1ea7b3[_0x836d('0x48')]=db['Sequelize'][_0x836d('0x8f')];break;case _0x836d('0x90'):_0x1ea7b3[_0x836d('0x48')]=db['Sequelize'][_0x836d('0x91')];break;case _0x836d('0x92'):_0x1ea7b3[_0x836d('0x48')]=db[_0x836d('0x8d')]['BOOLEAN'];_0x1ea7b3[_0x836d('0x93')]=![];break;default:}return db[_0x836d('0x94')][_0x836d('0x95')][_0x836d('0x96')](_0x836d('0x76'),util[_0x836d('0x6f')](_0x836d('0x97'),_0x24fd63['id']),_0x1ea7b3);})['then'](function(){return _0x24fd63;});});}})['then'](respondWithResult(_0x4f51cc,null))['catch'](handleError(_0x4f51cc,null));};exports[_0x836d('0x98')]=function(_0x4ecabc,_0x23adc4,_0x49732b){var _0x546bcf={};var _0x49fe89={};var _0x28f4a8;var _0x5db953;return db['CmList'][_0x836d('0x99')]({'where':{'id':_0x4ecabc[_0x836d('0x58')]['id']}})[_0x836d('0x2c')](handleEntityNotFound(_0x23adc4,null))[_0x836d('0x2c')](function(_0x58d239){if(_0x58d239){_0x28f4a8=_0x58d239;_0x49fe89['model']=_['keys'](db[_0x836d('0x73')][_0x836d('0x36')]);_0x49fe89[_0x836d('0x3a')]=_[_0x836d('0x3b')](_0x4ecabc[_0x836d('0x3a')]);_0x49fe89[_0x836d('0x3c')]=_[_0x836d('0x3e')](_0x49fe89['model'],_0x49fe89[_0x836d('0x3a')]);_0x546bcf[_0x836d('0x3d')]=_[_0x836d('0x3e')](_0x49fe89[_0x836d('0x39')],qs['fields'](_0x4ecabc['query'][_0x836d('0x3f')]));_0x546bcf[_0x836d('0x3d')]=_0x546bcf['attributes'][_0x836d('0x40')]?_0x546bcf[_0x836d('0x3d')]:_0x49fe89[_0x836d('0x39')];_0x546bcf[_0x836d('0x9a')]=qs[_0x836d('0x43')](_0x4ecabc[_0x836d('0x3a')][_0x836d('0x43')]);_0x546bcf[_0x836d('0x44')]=qs[_0x836d('0x3c')](_[_0x836d('0x45')](_0x4ecabc[_0x836d('0x3a')],_0x49fe89[_0x836d('0x3c')]));_0x546bcf[_0x836d('0x44')]=_[_0x836d('0x47')](_0x546bcf[_0x836d('0x44')],{'$or':[{'ListId':_0x58d239['id']},{'ListId':null}]});if(_0x4ecabc[_0x836d('0x3a')][_0x836d('0x46')]){_0x546bcf[_0x836d('0x44')]=_[_0x836d('0x47')](_0x546bcf[_0x836d('0x44')],{'$or':_[_0x836d('0x34')](_0x546bcf[_0x836d('0x3d')],function(_0x3bf08a){var _0x2e599e={};_0x2e599e[_0x3bf08a]={'$like':'%'+_0x4ecabc['query'][_0x836d('0x46')]+'%'};return _0x2e599e;})});}_0x546bcf=_[_0x836d('0x47')]({},_0x546bcf,_0x4ecabc[_0x836d('0x4a')]);return db[_0x836d('0x73')]['findAndCountAll'](_0x546bcf);}})[_0x836d('0x2c')](respondWithResult(_0x23adc4,null))[_0x836d('0x4f')](handleError(_0x23adc4,null));};exports[_0x836d('0x9b')]=function(_0xc1a134,_0x370e77){return db[_0x836d('0x73')][_0x836d('0x9c')]({'where':{'ListId':null}})[_0x836d('0x2c')](handleEntityNotFound(_0x370e77,null))[_0x836d('0x2c')](function(_0x1b0ae1){return _0x1b0ae1;})[_0x836d('0x2c')](respondWithResult(_0x370e77,null))[_0x836d('0x4f')](handleError(_0x370e77,null));};exports[_0x836d('0x9d')]=function(_0x2c4fd0,_0x34f586,_0x26afca){return db[_0x836d('0x35')][_0x836d('0x4e')]({'where':{'id':_0x2c4fd0[_0x836d('0x58')]['id']}})[_0x836d('0x2c')](handleEntityNotFound(_0x34f586,null))[_0x836d('0x2c')](function(_0x239e5a){if(_0x239e5a){return _0x239e5a['addAgents'](_0x2c4fd0[_0x836d('0x57')]['ids'],_[_0x836d('0x66')](_0x2c4fd0[_0x836d('0x57')],['ids','id'])||{})[_0x836d('0x9e')](function(_0x20af85){for(var _0x2476a9=0x0;_0x2476a9<_0x2c4fd0[_0x836d('0x57')]['ids'][_0x836d('0x40')];_0x2476a9+=0x1){socket[_0x836d('0x9f')](_0x836d('0xa0'),{'UserId':Number(_0x2c4fd0[_0x836d('0x57')][_0x836d('0x5f')][_0x2476a9]),'CmListId':Number(_0x2c4fd0[_0x836d('0x58')]['id'])});}return _0x20af85;});}})['then'](respondWithResult(_0x34f586,null))[_0x836d('0x4f')](handleError(_0x34f586,null));};exports[_0x836d('0xa1')]=function(_0x210583,_0x1c8a14,_0x209d72){return db[_0x836d('0x35')][_0x836d('0x4e')]({'where':{'id':_0x210583[_0x836d('0x58')]['id']}})[_0x836d('0x2c')](handleEntityNotFound(_0x1c8a14,null))[_0x836d('0x2c')](function(_0x14aef6){if(_0x14aef6){return _0x14aef6['removeAgents'](_0x210583['query'][_0x836d('0x5f')])[_0x836d('0x2c')](function(){if(_[_0x836d('0x61')](_0x210583[_0x836d('0x3a')][_0x836d('0x5f')])){for(var _0x5273a5=0x0;_0x5273a5<_0x210583[_0x836d('0x3a')][_0x836d('0x5f')]['length'];_0x5273a5+=0x1){socket[_0x836d('0x9f')](_0x836d('0xa2'),{'UserId':Number(_0x210583[_0x836d('0x3a')][_0x836d('0x5f')][_0x5273a5]),'CmListId':Number(_0x210583[_0x836d('0x58')]['id'])});}}else{socket['emit'](_0x836d('0xa2'),{'UserId':Number(_0x210583['query'][_0x836d('0x5f')]),'CmListId':Number(_0x210583[_0x836d('0x58')]['id'])});}});}})[_0x836d('0x2c')](respondWithStatusCode(_0x1c8a14,null))[_0x836d('0x4f')](handleError(_0x1c8a14,null));};exports[_0x836d('0xa3')]=function(_0xa3d55d,_0x504dc9,_0x1eed36){var _0x37a62b={};var _0x1985ed={};var _0x301d5d;var _0x4e69c6;return db[_0x836d('0x35')][_0x836d('0x99')]({'where':{'id':_0xa3d55d[_0x836d('0x58')]['id']}})[_0x836d('0x2c')](handleEntityNotFound(_0x504dc9,null))[_0x836d('0x2c')](function(_0x4dc2e1){if(_0x4dc2e1){_0x301d5d=_0x4dc2e1;_0x1985ed[_0x836d('0x39')]=_[_0x836d('0x3b')](db['User'][_0x836d('0x36')]);_0x1985ed['query']=_[_0x836d('0x3b')](_0xa3d55d[_0x836d('0x3a')]);_0x1985ed['filters']=_[_0x836d('0x3e')](_0x1985ed[_0x836d('0x39')],_0x1985ed[_0x836d('0x3a')]);_0x37a62b[_0x836d('0x3d')]=_[_0x836d('0x3e')](_0x1985ed[_0x836d('0x39')],qs[_0x836d('0x3f')](_0xa3d55d[_0x836d('0x3a')][_0x836d('0x3f')]));_0x37a62b[_0x836d('0x3d')]=_0x37a62b[_0x836d('0x3d')][_0x836d('0x40')]?_0x37a62b['attributes']:_0x1985ed[_0x836d('0x39')];_0x37a62b[_0x836d('0x9a')]=qs[_0x836d('0x43')](_0xa3d55d[_0x836d('0x3a')][_0x836d('0x43')]);_0x37a62b['where']=qs[_0x836d('0x3c')](_['pick'](_0xa3d55d['query'],_0x1985ed['filters']));if(_0xa3d55d[_0x836d('0x3a')][_0x836d('0x46')]){_0x37a62b['where']=_[_0x836d('0x47')](_0x37a62b[_0x836d('0x44')],{'$or':_[_0x836d('0x34')](_0x37a62b[_0x836d('0x3d')],function(_0x2a7d44){var _0x4aec3b={};_0x4aec3b[_0x2a7d44]={'$like':'%'+_0xa3d55d[_0x836d('0x3a')][_0x836d('0x46')]+'%'};return _0x4aec3b;})});}_0x37a62b=_[_0x836d('0x47')]({},_0x37a62b,_0xa3d55d['options']);return _0x301d5d['getAgents'](_0x37a62b);}})[_0x836d('0x2c')](function(_0xc46e9a){if(_0xc46e9a){_0x4e69c6=_0xc46e9a[_0x836d('0x40')];if(!_0xa3d55d[_0x836d('0x3a')][_0x836d('0x41')]('nolimit')){_0x37a62b[_0x836d('0x22')]=qs[_0x836d('0x22')](_0xa3d55d[_0x836d('0x3a')]['limit']);_0x37a62b[_0x836d('0x21')]=qs[_0x836d('0x21')](_0xa3d55d[_0x836d('0x3a')][_0x836d('0x21')]);}return _0x301d5d[_0x836d('0xa3')](_0x37a62b);}})['then'](function(_0x5521e6){if(_0x5521e6){return _0x5521e6?{'count':_0x4e69c6,'rows':_0x5521e6}:null;}})['then'](respondWithResult(_0x504dc9,null))[_0x836d('0x4f')](handleError(_0x504dc9,null));};function handleQuery(_0x32fb14){logger['info'](_0x32fb14);return db['sequelize'][_0x836d('0x3a')](_0x32fb14)['spread'](function(_0x565ddd){csv_results[_0x836d('0x64')](_0x565ddd);})['catch'](function(_0x40a136){logger[_0x836d('0x2f')](_0x40a136['message']);});}
\ No newline at end of file
index 7d7cdd7..e1007db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e74=['hasOwnProperty','exports','events','CmList','setMaxListeners','save','emit'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x3e74,0x175));var _0x43e7=function(_0x352ba2,_0x1e0f1b){_0x352ba2=_0x352ba2-0x0;var _0x901fb8=_0x3e74[_0x352ba2];return _0x901fb8;};'use strict';var EventEmitter=require(_0x43e7('0x0'));var CmList=require('../../mysqldb')['db'][_0x43e7('0x1')];var CmListEvents=new EventEmitter();CmListEvents[_0x43e7('0x2')](0x0);var events={'afterCreate':_0x43e7('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xc58479){return function(_0x4f9bbe,_0x128b0f,_0xe838b4){CmListEvents[_0x43e7('0x4')](_0xc58479+':'+_0x4f9bbe['id'],_0x4f9bbe);CmListEvents[_0x43e7('0x4')](_0xc58479,_0x4f9bbe);_0xe838b4(null);};}for(var e in events){if(events[_0x43e7('0x5')](e)){var event=events[e];CmList['hook'](e,emitEvent(event));}}module[_0x43e7('0x6')]=CmListEvents;
\ No newline at end of file
+var _0x3e74=['hasOwnProperty','exports','events','CmList','setMaxListeners','save','emit'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0x3e74,0x175));var _0x43e7=function(_0x16d4f5,_0x514d50){_0x16d4f5=_0x16d4f5-0x0;var _0x54959a=_0x3e74[_0x16d4f5];return _0x54959a;};'use strict';var EventEmitter=require(_0x43e7('0x0'));var CmList=require('../../mysqldb')['db'][_0x43e7('0x1')];var CmListEvents=new EventEmitter();CmListEvents[_0x43e7('0x2')](0x0);var events={'afterCreate':_0x43e7('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0xc58479){return function(_0x4f9bbe,_0x128b0f,_0xe838b4){CmListEvents[_0x43e7('0x4')](_0xc58479+':'+_0x4f9bbe['id'],_0x4f9bbe);CmListEvents[_0x43e7('0x4')](_0xc58479,_0x4f9bbe);_0xe838b4(null);};}for(var e in events){if(events[_0x43e7('0x5')](e)){var event=events[e];CmList['hook'](e,emitEvent(event));}}module[_0x43e7('0x6')]=CmListEvents;
\ No newline at end of file
index 2c7917d..4ee728d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa74f=['cm_lists','../../config/logger','bluebird','request-promise','path','rimraf','./cmList.attributes','define','CmList'];(function(_0x39eb24,_0x18cf5e){var _0x6fbcb8=function(_0x4486dd){while(--_0x4486dd){_0x39eb24['push'](_0x39eb24['shift']());}};_0x6fbcb8(++_0x18cf5e);}(_0xa74f,0x9a));var _0xfa74=function(_0x11005e,_0x20c3d2){_0x11005e=_0x11005e-0x0;var _0x29338f=_0xa74f[_0x11005e];return _0x29338f;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xfa74('0x0'))('api');var moment=require('moment');var BPromise=require(_0xfa74('0x1'));var rp=require(_0xfa74('0x2'));var fs=require('fs');var path=require(_0xfa74('0x3'));var rimraf=require(_0xfa74('0x4'));var config=require('../../config/environment');var attributes=require(_0xfa74('0x5'));module['exports']=function(_0x543cfe,_0x43dd2f){return _0x543cfe[_0xfa74('0x6')](_0xfa74('0x7'),attributes,{'tableName':_0xfa74('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd64b=['define','CmList','cm_lists','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x2873d2,_0x3178b6){var _0x31b7c1=function(_0x869dec){while(--_0x869dec){_0x2873d2['push'](_0x2873d2['shift']());}};_0x31b7c1(++_0x3178b6);}(_0xd64b,0xc1));var _0xbd64=function(_0x598c1e,_0x395e6e){_0x598c1e=_0x598c1e-0x0;var _0x487a43=_0xd64b[_0x598c1e];return _0x487a43;};'use strict';var _=require(_0xbd64('0x0'));var util=require('util');var logger=require(_0xbd64('0x1'))('api');var moment=require(_0xbd64('0x2'));var BPromise=require(_0xbd64('0x3'));var rp=require(_0xbd64('0x4'));var fs=require('fs');var path=require(_0xbd64('0x5'));var rimraf=require(_0xbd64('0x6'));var config=require('../../config/environment');var attributes=require('./cmList.attributes');module['exports']=function(_0x51e87d,_0x58e9e7){return _0x51e87d[_0xbd64('0x7')](_0xbd64('0x8'),attributes,{'tableName':_0xbd64('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2e293dc..f609aa5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x826b=['lodash','util','moment','randomstring','../../config/utils','rpc','client','defaults','redis','localhost','register','request','then','info','CmList,\x20%s,\x20%s','request\x20sent','debug','CmList,\x20%s,\x20%s,\x20%s','stringify','error','message','result'];(function(_0x152121,_0x120c53){var _0x592a85=function(_0x241cab){while(--_0x241cab){_0x152121['push'](_0x152121['shift']());}};_0x592a85(++_0x120c53);}(_0x826b,0x11e));var _0xb826=function(_0x273af3,_0x490283){_0x273af3=_0x273af3-0x0;var _0x36b217=_0x826b[_0x273af3];return _0x36b217;};'use strict';var _=require(_0xb826('0x0'));var util=require(_0xb826('0x1'));var moment=require(_0xb826('0x2'));var BPromise=require('bluebird');var rs=require(_0xb826('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xb826('0x4'));var logger=require('../../config/logger')(_0xb826('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb826('0x6')]['http']({'port':0x232a});config['redis']=_[_0xb826('0x7')](config[_0xb826('0x8')],{'host':_0xb826('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb826('0x8')]));require('./cmList.socket')[_0xb826('0xa')](socket);function respondWithRpcPromise(_0x3f86cf,_0xb83f28,_0x584f4d){return new BPromise(function(_0x3d3b90,_0x20b690){return client[_0xb826('0xb')](_0x3f86cf,_0x584f4d)[_0xb826('0xc')](function(_0x45dffd){logger[_0xb826('0xd')](_0xb826('0xe'),_0xb83f28,_0xb826('0xf'));logger[_0xb826('0x10')](_0xb826('0x11'),_0xb83f28,_0xb826('0xf'),JSON[_0xb826('0x12')](_0x45dffd));if(_0x45dffd['error']){if(_0x45dffd[_0xb826('0x13')]['code']===0x1f4){logger[_0xb826('0x13')](_0xb826('0xe'),_0xb83f28,_0x45dffd[_0xb826('0x13')][_0xb826('0x14')]);return _0x20b690(_0x45dffd['error'][_0xb826('0x14')]);}logger[_0xb826('0x13')](_0xb826('0xe'),_0xb83f28,_0x45dffd[_0xb826('0x13')][_0xb826('0x14')]);return _0x3d3b90(_0x45dffd[_0xb826('0x13')][_0xb826('0x14')]);}else{logger[_0xb826('0xd')](_0xb826('0xe'),_0xb83f28,_0xb826('0xf'));_0x3d3b90(_0x45dffd[_0xb826('0x15')][_0xb826('0x14')]);}})['catch'](function(_0x3c249a){logger[_0xb826('0x13')](_0xb826('0xe'),_0xb83f28,_0x3c249a);_0x20b690(_0x3c249a);});});}
\ No newline at end of file
+var _0xa497=['message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./cmList.socket','register','then','info','CmList,\x20%s,\x20%s','request\x20sent','CmList,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa497,0x17d));var _0x7a49=function(_0x99873b,_0x14786c){_0x99873b=_0x99873b-0x0;var _0x150e04=_0xa497[_0x99873b];return _0x150e04;};'use strict';var _=require(_0x7a49('0x0'));var util=require(_0x7a49('0x1'));var moment=require(_0x7a49('0x2'));var BPromise=require(_0x7a49('0x3'));var rs=require(_0x7a49('0x4'));var fs=require('fs');var Redis=require(_0x7a49('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x7a49('0x6'))('rpc');var config=require(_0x7a49('0x7'));var jayson=require(_0x7a49('0x8'));var client=jayson[_0x7a49('0x9')][_0x7a49('0xa')]({'port':0x232a});config[_0x7a49('0xb')]=_[_0x7a49('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x7a49('0xd'))(new Redis(config[_0x7a49('0xb')]));require(_0x7a49('0xe'))[_0x7a49('0xf')](socket);function respondWithRpcPromise(_0x41c63e,_0x123e9,_0x551ac7){return new BPromise(function(_0x1d58bf,_0x4843bb){return client['request'](_0x41c63e,_0x551ac7)[_0x7a49('0x10')](function(_0x4f54fe){logger[_0x7a49('0x11')](_0x7a49('0x12'),_0x123e9,_0x7a49('0x13'));logger['debug'](_0x7a49('0x14'),_0x123e9,_0x7a49('0x13'),JSON[_0x7a49('0x15')](_0x4f54fe));if(_0x4f54fe[_0x7a49('0x16')]){if(_0x4f54fe[_0x7a49('0x16')][_0x7a49('0x17')]===0x1f4){logger[_0x7a49('0x16')](_0x7a49('0x12'),_0x123e9,_0x4f54fe[_0x7a49('0x16')]['message']);return _0x4843bb(_0x4f54fe[_0x7a49('0x16')][_0x7a49('0x18')]);}logger[_0x7a49('0x16')]('CmList,\x20%s,\x20%s',_0x123e9,_0x4f54fe[_0x7a49('0x16')][_0x7a49('0x18')]);return _0x1d58bf(_0x4f54fe[_0x7a49('0x16')][_0x7a49('0x18')]);}else{logger[_0x7a49('0x11')]('CmList,\x20%s,\x20%s',_0x123e9,_0x7a49('0x13'));_0x1d58bf(_0x4f54fe[_0x7a49('0x19')][_0x7a49('0x18')]);}})[_0x7a49('0x1a')](function(_0x39717a){logger['error']('CmList,\x20%s,\x20%s',_0x123e9,_0x39717a);_0x4843bb(_0x39717a);});});}
\ No newline at end of file
index 8f4efd8..33290fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fe0=['save','remove','removeListener','cmList:'];(function(_0x3f0fce,_0x1f8e80){var _0x427a1d=function(_0x3b5b23){while(--_0x3b5b23){_0x3f0fce['push'](_0x3f0fce['shift']());}};_0x427a1d(++_0x1f8e80);}(_0x5fe0,0x70));var _0x05fe=function(_0xecbce8,_0x4f8f47){_0xecbce8=_0xecbce8-0x0;var _0x4ce561=_0x5fe0[_0xecbce8];return _0x4ce561;};'use strict';var CmListEvents=require('./cmList.events');var events=[_0x05fe('0x0'),_0x05fe('0x1'),'update'];function createListener(_0x1a204b,_0x591380){return function(_0x19c82a){_0x591380['emit'](_0x1a204b,_0x19c82a);};}function removeListener(_0x750f18,_0x2789c5){return function(){CmListEvents[_0x05fe('0x2')](_0x750f18,_0x2789c5);};}exports['register']=function(_0x506d02){for(var _0x302fda=0x0,_0x1566ec=events['length'];_0x302fda<_0x1566ec;_0x302fda++){var _0x4014ce=events[_0x302fda];var _0x36e3b8=createListener(_0x05fe('0x3')+_0x4014ce,_0x506d02);CmListEvents['on'](_0x4014ce,_0x36e3b8);}};
\ No newline at end of file
+var _0x6ba6=['save','remove','update','emit','removeListener','register','cmList:','./cmList.events'];(function(_0x562faa,_0x23adc7){var _0xc70f59=function(_0x2d7dec){while(--_0x2d7dec){_0x562faa['push'](_0x562faa['shift']());}};_0xc70f59(++_0x23adc7);}(_0x6ba6,0xc7));var _0x66ba=function(_0x24a992,_0x5c49eb){_0x24a992=_0x24a992-0x0;var _0x26e1d4=_0x6ba6[_0x24a992];return _0x26e1d4;};'use strict';var CmListEvents=require(_0x66ba('0x0'));var events=[_0x66ba('0x1'),_0x66ba('0x2'),_0x66ba('0x3')];function createListener(_0xb80b82,_0x2276bc){return function(_0x115ed2){_0x2276bc[_0x66ba('0x4')](_0xb80b82,_0x115ed2);};}function removeListener(_0x2b732a,_0x3dd4d0){return function(){CmListEvents[_0x66ba('0x5')](_0x2b732a,_0x3dd4d0);};}exports[_0x66ba('0x6')]=function(_0x4632b9){for(var _0xf74fce=0x0,_0x2ef669=events['length'];_0xf74fce<_0x2ef669;_0xf74fce++){var _0x4090bf=events[_0xf74fce];var _0x197fd3=createListener(_0x66ba('0x7')+_0x4090bf,_0x4632b9);CmListEvents['on'](_0x4090bf,_0x197fd3);}};
\ No newline at end of file
index 795fe8c..4c26582 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7846=['exports','multer','util','path','express','../../components/auth/service','../../components/interaction/service','./cmList.controller','get','isAuthenticated','index','/describe','describe','getGlobalCustomFields','/:id','show','/:id/dispositions','getDispositions','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','/:id/fields','getCustomFields','/:id/users','getAgents','create','post','addDisposition','addContacts','addCustomField','addAgents','put','update','delete','destroy','removeDispositions','removeAgents'];(function(_0x50b7c7,_0x2df76b){var _0x2005c5=function(_0x1a59c3){while(--_0x1a59c3){_0x50b7c7['push'](_0x50b7c7['shift']());}};_0x2005c5(++_0x2df76b);}(_0x7846,0xbf));var _0x6784=function(_0x4132d1,_0x41fbbd){_0x4132d1=_0x4132d1-0x0;var _0x27d9cb=_0x7846[_0x4132d1];return _0x27d9cb;};'use strict';var multer=require(_0x6784('0x0'));var util=require(_0x6784('0x1'));var path=require(_0x6784('0x2'));var timeout=require('connect-timeout');var express=require(_0x6784('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x6784('0x4'));var interaction=require(_0x6784('0x5'));var config=require('../../config/environment');var controller=require(_0x6784('0x6'));router[_0x6784('0x7')]('/',auth[_0x6784('0x8')](),controller[_0x6784('0x9')]);router[_0x6784('0x7')](_0x6784('0xa'),auth['isAuthenticated'](),controller[_0x6784('0xb')]);router[_0x6784('0x7')]('/global_fields',auth[_0x6784('0x8')](),controller[_0x6784('0xc')]);router['get'](_0x6784('0xd'),auth[_0x6784('0x8')](),controller[_0x6784('0xe')]);router[_0x6784('0x7')](_0x6784('0xf'),auth[_0x6784('0x8')](),controller[_0x6784('0x10')]);router[_0x6784('0x7')](_0x6784('0x11'),auth[_0x6784('0x8')](),controller[_0x6784('0x12')]);router[_0x6784('0x7')](_0x6784('0x13'),auth[_0x6784('0x8')](),controller[_0x6784('0x14')]);router[_0x6784('0x7')](_0x6784('0x15'),auth[_0x6784('0x8')](),controller[_0x6784('0x16')]);router[_0x6784('0x7')](_0x6784('0x17'),auth[_0x6784('0x8')](),controller[_0x6784('0x18')]);router['post']('/',auth['isAuthenticated'](),controller[_0x6784('0x19')]);router[_0x6784('0x1a')]('/:id/dispositions',auth[_0x6784('0x8')](),controller[_0x6784('0x1b')]);router[_0x6784('0x1a')](_0x6784('0x11'),auth[_0x6784('0x8')](),controller[_0x6784('0x1c')]);router[_0x6784('0x1a')]('/:id/fields',auth['isAuthenticated'](),controller[_0x6784('0x1d')]);router['post'](_0x6784('0x17'),auth[_0x6784('0x8')](),controller[_0x6784('0x1e')]);router[_0x6784('0x1f')]('/:id',auth['isAuthenticated'](),controller[_0x6784('0x20')]);router[_0x6784('0x21')](_0x6784('0xd'),auth[_0x6784('0x8')](),controller[_0x6784('0x22')]);router[_0x6784('0x21')]('/:id/dispositions',auth['isAuthenticated'](),controller[_0x6784('0x23')]);router[_0x6784('0x21')](_0x6784('0x17'),auth[_0x6784('0x8')](),controller[_0x6784('0x24')]);module[_0x6784('0x25')]=router;
\ No newline at end of file
+var _0x0fd5=['delete','destroy','removeDispositions','removeAgents','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./cmList.controller','get','isAuthenticated','index','describe','/global_fields','getGlobalCustomFields','/:id','/:id/dispositions','getDispositions','/:id/contacts','getContacts','/:id/contacts/csv','getContactsCsv','/:id/users','getAgents','post','create','addDisposition','/:id/fields','addCustomField','put','update'];(function(_0x3fa7d3,_0x37f83c){var _0x4c51bd=function(_0x59e85b){while(--_0x59e85b){_0x3fa7d3['push'](_0x3fa7d3['shift']());}};_0x4c51bd(++_0x37f83c);}(_0x0fd5,0x1e6));var _0x50fd=function(_0x4d88ae,_0x551d07){_0x4d88ae=_0x4d88ae-0x0;var _0x2566d3=_0x0fd5[_0x4d88ae];return _0x2566d3;};'use strict';var multer=require(_0x50fd('0x0'));var util=require(_0x50fd('0x1'));var path=require(_0x50fd('0x2'));var timeout=require(_0x50fd('0x3'));var express=require(_0x50fd('0x4'));var router=express[_0x50fd('0x5')]();var fs_extra=require(_0x50fd('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x50fd('0x7'));var config=require(_0x50fd('0x8'));var controller=require(_0x50fd('0x9'));router[_0x50fd('0xa')]('/',auth[_0x50fd('0xb')](),controller[_0x50fd('0xc')]);router[_0x50fd('0xa')]('/describe',auth[_0x50fd('0xb')](),controller[_0x50fd('0xd')]);router[_0x50fd('0xa')](_0x50fd('0xe'),auth[_0x50fd('0xb')](),controller[_0x50fd('0xf')]);router[_0x50fd('0xa')](_0x50fd('0x10'),auth['isAuthenticated'](),controller['show']);router[_0x50fd('0xa')](_0x50fd('0x11'),auth[_0x50fd('0xb')](),controller[_0x50fd('0x12')]);router[_0x50fd('0xa')](_0x50fd('0x13'),auth[_0x50fd('0xb')](),controller[_0x50fd('0x14')]);router['get'](_0x50fd('0x15'),auth[_0x50fd('0xb')](),controller[_0x50fd('0x16')]);router[_0x50fd('0xa')]('/:id/fields',auth['isAuthenticated'](),controller['getCustomFields']);router[_0x50fd('0xa')](_0x50fd('0x17'),auth[_0x50fd('0xb')](),controller[_0x50fd('0x18')]);router[_0x50fd('0x19')]('/',auth['isAuthenticated'](),controller[_0x50fd('0x1a')]);router[_0x50fd('0x19')]('/:id/dispositions',auth[_0x50fd('0xb')](),controller[_0x50fd('0x1b')]);router[_0x50fd('0x19')]('/:id/contacts',auth[_0x50fd('0xb')](),controller['addContacts']);router[_0x50fd('0x19')](_0x50fd('0x1c'),auth[_0x50fd('0xb')](),controller[_0x50fd('0x1d')]);router[_0x50fd('0x19')]('/:id/users',auth[_0x50fd('0xb')](),controller['addAgents']);router[_0x50fd('0x1e')](_0x50fd('0x10'),auth[_0x50fd('0xb')](),controller[_0x50fd('0x1f')]);router[_0x50fd('0x20')](_0x50fd('0x10'),auth[_0x50fd('0xb')](),controller[_0x50fd('0x21')]);router[_0x50fd('0x20')](_0x50fd('0x11'),auth['isAuthenticated'](),controller[_0x50fd('0x22')]);router[_0x50fd('0x20')](_0x50fd('0x17'),auth['isAuthenticated'](),controller[_0x50fd('0x23')]);module[_0x50fd('0x24')]=router;
\ No newline at end of file
index 1b13cfa..71742e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb63c=['VIRTUAL','getDataValue','field','STRING','sequelize','exports'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xb63c,0x12a));var _0xcb63=function(_0x5039e3,_0x224b41){_0x5039e3=_0x5039e3-0x0;var _0x149209=_0xb63c[_0x5039e3];return _0x149209;};'use strict';var Sequelize=require(_0xcb63('0x0'));module[_0xcb63('0x1')]={'name':{'type':Sequelize[_0xcb63('0x2')],'get':function(_0x2b6617){return this[_0xcb63('0x3')](_0xcb63('0x4'));}},'field':{'type':Sequelize['STRING'],'allowNull':![]},'operator':{'type':Sequelize[_0xcb63('0x5')],'allowNull':![]},'value':{'type':Sequelize[_0xcb63('0x5')],'allowNull':![]}};
\ No newline at end of file
+var _0x9308=['getDataValue','field','STRING','sequelize','exports','VIRTUAL'];(function(_0x42e9bb,_0x5937cf){var _0x3d3e1e=function(_0x5b233d){while(--_0x5b233d){_0x42e9bb['push'](_0x42e9bb['shift']());}};_0x3d3e1e(++_0x5937cf);}(_0x9308,0xbd));var _0x8930=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x9308[_0x2641f9];return _0x585741;};'use strict';var Sequelize=require(_0x8930('0x0'));module[_0x8930('0x1')]={'name':{'type':Sequelize[_0x8930('0x2')],'get':function(_0x1cda49){return this[_0x8930('0x3')](_0x8930('0x4'));}},'field':{'type':Sequelize[_0x8930('0x5')],'allowNull':![]},'operator':{'type':Sequelize['STRING'],'allowNull':![]},'value':{'type':Sequelize[_0x8930('0x5')],'allowNull':![]}};
\ No newline at end of file
index 4dd8efe..2cc8b93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x85d0b1,_0x48f3ee){var _0x2bd05b=function(_0x1566b1){while(--_0x1566b1){_0x85d0b1['push'](_0x85d0b1['shift']());}};_0x2bd05b(++_0x48f3ee);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'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
+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(_0x2f71f2,_0x44201a){var _0xa47038=function(_0x5d357f){while(--_0x5d357f){_0x2f71f2['push'](_0x2f71f2['shift']());}};_0xa47038(++_0x44201a);}(_0x9957,0x93));var _0x7995=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x9957[_0x14add3];return _0x4a174f;};'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 5f7bfb7..d7a4152 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x332f=['Condition','tools_conditions','lodash','util','../../config/logger','moment','bluebird','rimraf','define'];(function(_0x4687df,_0x12099c){var _0x32eaef=function(_0x2387db){while(--_0x2387db){_0x4687df['push'](_0x4687df['shift']());}};_0x32eaef(++_0x12099c);}(_0x332f,0xa4));var _0xf332=function(_0xc26786,_0x31d874){_0xc26786=_0xc26786-0x0;var _0x393bad=_0x332f[_0xc26786];return _0x393bad;};'use strict';var _=require(_0xf332('0x0'));var util=require(_0xf332('0x1'));var logger=require(_0xf332('0x2'))('api');var moment=require(_0xf332('0x3'));var BPromise=require(_0xf332('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xf332('0x5'));var config=require('../../config/environment');var attributes=require('./condition.attributes');module['exports']=function(_0x569b49,_0x483d8b){return _0x569b49[_0xf332('0x6')](_0xf332('0x7'),attributes,{'tableName':_0xf332('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4be3=['Condition','tools_conditions','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./condition.attributes','exports','define'];(function(_0x1842e6,_0x4abfad){var _0x236a78=function(_0x54a9d5){while(--_0x54a9d5){_0x1842e6['push'](_0x1842e6['shift']());}};_0x236a78(++_0x4abfad);}(_0x4be3,0x6a));var _0x34be=function(_0x28d010,_0x46e08c){_0x28d010=_0x28d010-0x0;var _0x3ca543=_0x4be3[_0x28d010];return _0x3ca543;};'use strict';var _=require('lodash');var util=require(_0x34be('0x0'));var logger=require(_0x34be('0x1'))(_0x34be('0x2'));var moment=require(_0x34be('0x3'));var BPromise=require(_0x34be('0x4'));var rp=require(_0x34be('0x5'));var fs=require('fs');var path=require(_0x34be('0x6'));var rimraf=require('rimraf');var config=require(_0x34be('0x7'));var attributes=require(_0x34be('0x8'));module[_0x34be('0x9')]=function(_0x2b149d,_0x8dd598){return _0x2b149d[_0x34be('0xa')](_0x34be('0xb'),attributes,{'tableName':_0x34be('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 94911b2..c620522 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc0e=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','then','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','lodash','util'];(function(_0x33de83,_0x5cd14a){var _0x2dc227=function(_0x7a3560){while(--_0x7a3560){_0x33de83['push'](_0x33de83['shift']());}};_0x2dc227(++_0x5cd14a);}(_0xdc0e,0x112));var _0xedc0=function(_0x4f840d,_0x5d6218){_0x4f840d=_0x4f840d-0x0;var _0x315f81=_0xdc0e[_0x4f840d];return _0x315f81;};'use strict';var _=require(_0xedc0('0x0'));var util=require(_0xedc0('0x1'));var moment=require(_0xedc0('0x2'));var BPromise=require(_0xedc0('0x3'));var rs=require(_0xedc0('0x4'));var fs=require('fs');var Redis=require(_0xedc0('0x5'));var db=require(_0xedc0('0x6'))['db'];var utils=require(_0xedc0('0x7'));var logger=require(_0xedc0('0x8'))('rpc');var config=require('../../config/environment');var jayson=require(_0xedc0('0x9'));var client=jayson[_0xedc0('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2ee830,_0x2d7cf6,_0x8292a8){return new BPromise(function(_0x20d767,_0x4347df){return client['request'](_0x2ee830,_0x8292a8)[_0xedc0('0xb')](function(_0x33912e){logger['info'](_0xedc0('0xc'),_0x2d7cf6,_0xedc0('0xd'));logger[_0xedc0('0xe')](_0xedc0('0xf'),_0x2d7cf6,_0xedc0('0xd'),JSON[_0xedc0('0x10')](_0x33912e));if(_0x33912e[_0xedc0('0x11')]){if(_0x33912e[_0xedc0('0x11')][_0xedc0('0x12')]===0x1f4){logger[_0xedc0('0x11')]('Condition,\x20%s,\x20%s',_0x2d7cf6,_0x33912e['error'][_0xedc0('0x13')]);return _0x4347df(_0x33912e[_0xedc0('0x11')]['message']);}logger[_0xedc0('0x11')](_0xedc0('0xc'),_0x2d7cf6,_0x33912e[_0xedc0('0x11')]['message']);return _0x20d767(_0x33912e[_0xedc0('0x11')][_0xedc0('0x13')]);}else{logger[_0xedc0('0x14')]('Condition,\x20%s,\x20%s',_0x2d7cf6,_0xedc0('0xd'));_0x20d767(_0x33912e[_0xedc0('0x15')][_0xedc0('0x13')]);}})[_0xedc0('0x16')](function(_0x5dd8e9){logger['error'](_0xedc0('0xc'),_0x2d7cf6,_0x5dd8e9);_0x4347df(_0x5dd8e9);});});}
\ No newline at end of file
+var _0xa0e2=['http','request','Condition,\x20%s,\x20%s','request\x20sent','debug','Condition,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xa0e2,0x165));var _0x2a0e=function(_0x3cda26,_0x31a42a){_0x3cda26=_0x3cda26-0x0;var _0x45469f=_0xa0e2[_0x3cda26];return _0x45469f;};'use strict';var _=require(_0x2a0e('0x0'));var util=require(_0x2a0e('0x1'));var moment=require('moment');var BPromise=require(_0x2a0e('0x2'));var rs=require(_0x2a0e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2a0e('0x4'))['db'];var utils=require(_0x2a0e('0x5'));var logger=require(_0x2a0e('0x6'))(_0x2a0e('0x7'));var config=require(_0x2a0e('0x8'));var jayson=require(_0x2a0e('0x9'));var client=jayson[_0x2a0e('0xa')][_0x2a0e('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x27c22c,_0x4e5db9,_0x281074){return new BPromise(function(_0x1d1be3,_0x3c7b6c){return client[_0x2a0e('0xc')](_0x27c22c,_0x281074)['then'](function(_0x144b61){logger['info'](_0x2a0e('0xd'),_0x4e5db9,_0x2a0e('0xe'));logger[_0x2a0e('0xf')](_0x2a0e('0x10'),_0x4e5db9,_0x2a0e('0xe'),JSON[_0x2a0e('0x11')](_0x144b61));if(_0x144b61[_0x2a0e('0x12')]){if(_0x144b61['error'][_0x2a0e('0x13')]===0x1f4){logger['error'](_0x2a0e('0xd'),_0x4e5db9,_0x144b61[_0x2a0e('0x12')][_0x2a0e('0x14')]);return _0x3c7b6c(_0x144b61[_0x2a0e('0x12')][_0x2a0e('0x14')]);}logger['error']('Condition,\x20%s,\x20%s',_0x4e5db9,_0x144b61[_0x2a0e('0x12')]['message']);return _0x1d1be3(_0x144b61['error']['message']);}else{logger['info'](_0x2a0e('0xd'),_0x4e5db9,_0x2a0e('0xe'));_0x1d1be3(_0x144b61[_0x2a0e('0x15')]['message']);}})[_0x2a0e('0x16')](function(_0x4d922f){logger['error'](_0x2a0e('0xd'),_0x4e5db9,_0x4d922f);_0x3c7b6c(_0x4d922f);});});}
\ No newline at end of file
index 01c7482..e8d69be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf879=['path','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','put','isAuthenticated','update','delete','/:id','destroy','exports','multer','util'];(function(_0x421cd8,_0x899027){var _0x8b0c17=function(_0x1b7e68){while(--_0x1b7e68){_0x421cd8['push'](_0x421cd8['shift']());}};_0x8b0c17(++_0x899027);}(_0xf879,0x1ed));var _0x9f87=function(_0x3e4d60,_0xb46754){_0x3e4d60=_0x3e4d60-0x0;var _0x3bb5cc=_0xf879[_0x3e4d60];return _0x3bb5cc;};'use strict';var multer=require(_0x9f87('0x0'));var util=require(_0x9f87('0x1'));var path=require(_0x9f87('0x2'));var timeout=require(_0x9f87('0x3'));var express=require(_0x9f87('0x4'));var router=express[_0x9f87('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9f87('0x6'));var config=require(_0x9f87('0x7'));var controller=require('./condition.controller');router[_0x9f87('0x8')]('/:id',auth[_0x9f87('0x9')](),controller[_0x9f87('0xa')]);router[_0x9f87('0xb')](_0x9f87('0xc'),auth['isAuthenticated'](),controller[_0x9f87('0xd')]);module[_0x9f87('0xe')]=router;
\ No newline at end of file
+var _0x10a3=['update','/:id','isAuthenticated','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../config/environment','put'];(function(_0x409955,_0x55d143){var _0x49f31a=function(_0x18dd4a){while(--_0x18dd4a){_0x409955['push'](_0x409955['shift']());}};_0x49f31a(++_0x55d143);}(_0x10a3,0x17e));var _0x310a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x10a3[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x310a('0x0'));var util=require('util');var path=require(_0x310a('0x1'));var timeout=require(_0x310a('0x2'));var express=require(_0x310a('0x3'));var router=express[_0x310a('0x4')]();var fs_extra=require(_0x310a('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x310a('0x6'));var controller=require('./condition.controller');router[_0x310a('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x310a('0x8')]);router['delete'](_0x310a('0x9'),auth[_0x310a('0xa')](),controller[_0x310a('0xb')]);module[_0x310a('0xc')]=router;
\ No newline at end of file
index 743a355..df2e7a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9372=['STRING','name','INTEGER','sequelize','exports'];(function(_0x41f682,_0x5bfc0d){var _0x50e2d4=function(_0xb073fd){while(--_0xb073fd){_0x41f682['push'](_0x41f682['shift']());}};_0x50e2d4(++_0x5bfc0d);}(_0x9372,0x175));var _0x2937=function(_0x2461db,_0x156c65){_0x2461db=_0x2461db-0x0;var _0x4903d0=_0x9372[_0x2461db];return _0x4903d0;};'use strict';var Sequelize=require(_0x2937('0x0'));module[_0x2937('0x1')]={'name':{'type':Sequelize[_0x2937('0x2')],'allowNull':![],'unique':_0x2937('0x3')},'OrderBy':{'type':Sequelize[_0x2937('0x4')],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0x2937('0x2')],'allowNull':!![]}};
\ No newline at end of file
+var _0x9ae6=['exports','STRING','INTEGER','sequelize'];(function(_0x5e662d,_0x3e6d57){var _0x4d2f92=function(_0x5c8ec1){while(--_0x5c8ec1){_0x5e662d['push'](_0x5e662d['shift']());}};_0x4d2f92(++_0x3e6d57);}(_0x9ae6,0x177));var _0x69ae=function(_0x507527,_0x3d1f6e){_0x507527=_0x507527-0x0;var _0x2dec80=_0x9ae6[_0x507527];return _0x2dec80;};'use strict';var Sequelize=require(_0x69ae('0x0'));module[_0x69ae('0x1')]={'name':{'type':Sequelize[_0x69ae('0x2')],'allowNull':![],'unique':'name'},'OrderBy':{'type':Sequelize[_0x69ae('0x3')],'allowNull':!![]},'rgbBackgroundColor':{'type':Sequelize[_0x69ae('0x2')],'allowNull':!![]}};
\ No newline at end of file
index c368d5a..7514794 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d04=['nolimit','order','sort','where','pick','filter','VIRTUAL','options','includeAll','include','rows','show','params','rawAttributes','merge','find','catch','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','UserProfileResource','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','limit','undefined','count','offset','Content-Range','apply','reject','save','update','then','destroy','ContactItemTypes','end','error','stack','name','send','map','ContactItemType','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty'];(function(_0x3f2dcf,_0x4b5ecb){var _0x95bd92=function(_0x5d73d0){while(--_0x5d73d0){_0x3f2dcf['push'](_0x3f2dcf['shift']());}};_0x95bd92(++_0x4b5ecb);}(_0x3d04,0xbe));var _0x43d0=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x3d04[_0x5b644e];return _0x49c6bf;};'use strict';var emlformat=require(_0x43d0('0x0'));var rimraf=require(_0x43d0('0x1'));var zipdir=require(_0x43d0('0x2'));var jsonpatch=require(_0x43d0('0x3'));var rp=require(_0x43d0('0x4'));var moment=require(_0x43d0('0x5'));var BPromise=require(_0x43d0('0x6'));var Mustache=require(_0x43d0('0x7'));var util=require('util');var path=require(_0x43d0('0x8'));var sox=require(_0x43d0('0x9'));var csv=require(_0x43d0('0xa'));var ejs=require(_0x43d0('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x43d0('0xc'));var deskjs=require(_0x43d0('0xd'));var toCsv=require(_0x43d0('0xa'));var querystring=require(_0x43d0('0xe'));var Papa=require(_0x43d0('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x43d0('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x43d0('0x11'))(_0x43d0('0x12'));var utils=require(_0x43d0('0x13'));var config=require(_0x43d0('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x43d0('0x15'))['db'];function respondWithStatusCode(_0x23daaa,_0x546b23){_0x546b23=_0x546b23||0xcc;return function(_0x29773b){if(_0x29773b){return _0x23daaa[_0x43d0('0x16')](_0x546b23);}return _0x23daaa[_0x43d0('0x17')](_0x546b23)['end']();};}function respondWithResult(_0xd262a8,_0x2454fa){_0x2454fa=_0x2454fa||0xc8;return function(_0x436130){if(_0x436130){return _0xd262a8['status'](_0x2454fa)[_0x43d0('0x18')](_0x436130);}};}function respondWithFilteredResult(_0x357f87,_0x44e6ec){return function(_0x1218b5){if(_0x1218b5){var _0x91b4a1=typeof _0x44e6ec['offset']==='undefined'&&typeof _0x44e6ec[_0x43d0('0x19')]===_0x43d0('0x1a');var _0x35decf=_0x1218b5['count'];var _0x2c641e=_0x91b4a1?0x0:_0x44e6ec['offset'];var _0x2c9d06=_0x91b4a1?_0x1218b5[_0x43d0('0x1b')]:_0x44e6ec[_0x43d0('0x1c')]+_0x44e6ec['limit'];var _0x3d7dcc;if(_0x2c9d06>=_0x35decf){_0x2c9d06=_0x35decf;_0x3d7dcc=0xc8;}else{_0x3d7dcc=0xce;}_0x357f87[_0x43d0('0x17')](_0x3d7dcc);return _0x357f87['set'](_0x43d0('0x1d'),_0x2c641e+'-'+_0x2c9d06+'/'+_0x35decf)[_0x43d0('0x18')](_0x1218b5);}return null;};}function patchUpdates(_0x348429){return function(_0x248622){try{jsonpatch[_0x43d0('0x1e')](_0x248622,_0x348429,!![]);}catch(_0x28381b){return BPromise[_0x43d0('0x1f')](_0x28381b);}return _0x248622[_0x43d0('0x20')]();};}function saveUpdates(_0x30febc,_0xc8a644){return function(_0xec5f07){if(_0xec5f07){return _0xec5f07[_0x43d0('0x21')](_0x30febc)[_0x43d0('0x22')](function(_0xbc72e6){return _0xbc72e6;});}return null;};}function removeEntity(_0x2efd77,_0x48aa18){return function(_0x2c7b24){if(_0x2c7b24){return _0x2c7b24[_0x43d0('0x23')]()['then'](function(){var _0x1fe708=_0x2c7b24['get']({'plain':!![]});var _0x29c111=_0x43d0('0x24');return db['UserProfileResource'][_0x43d0('0x23')]({'where':{'type':_0x29c111,'resourceId':_0x1fe708['id']}})[_0x43d0('0x22')](function(){return _0x2c7b24;});})['then'](function(){_0x2efd77[_0x43d0('0x17')](0xcc)[_0x43d0('0x25')]();});}};}function handleEntityNotFound(_0x22ae3c,_0x5f16ac){return function(_0x447725){if(!_0x447725){_0x22ae3c[_0x43d0('0x16')](0x194);}return _0x447725;};}function handleError(_0x2c4f3f,_0x1eb771){_0x1eb771=_0x1eb771||0x1f4;return function(_0x37d78f){logger[_0x43d0('0x26')](_0x37d78f[_0x43d0('0x27')]);if(_0x37d78f['name']){delete _0x37d78f[_0x43d0('0x28')];}_0x2c4f3f[_0x43d0('0x17')](_0x1eb771)[_0x43d0('0x29')](_0x37d78f);};}exports['index']=function(_0x4bfce9,_0x52c37b){var _0x3c1ea3={},_0x2db9dc={},_0x10086b={'count':0x0,'rows':[]};var _0x13e3c9=_[_0x43d0('0x2a')](db[_0x43d0('0x2b')]['rawAttributes'],function(_0x77654d){return{'name':_0x77654d[_0x43d0('0x2c')],'type':_0x77654d[_0x43d0('0x2d')][_0x43d0('0x2e')]};});_0x2db9dc[_0x43d0('0x2f')]=_[_0x43d0('0x2a')](_0x13e3c9,_0x43d0('0x28'));_0x2db9dc[_0x43d0('0x30')]=_[_0x43d0('0x31')](_0x4bfce9[_0x43d0('0x30')]);_0x2db9dc[_0x43d0('0x32')]=_['intersection'](_0x2db9dc[_0x43d0('0x2f')],_0x2db9dc[_0x43d0('0x30')]);_0x3c1ea3[_0x43d0('0x33')]=_[_0x43d0('0x34')](_0x2db9dc['model'],qs[_0x43d0('0x35')](_0x4bfce9['query'][_0x43d0('0x35')]));_0x3c1ea3[_0x43d0('0x33')]=_0x3c1ea3['attributes'][_0x43d0('0x36')]?_0x3c1ea3[_0x43d0('0x33')]:_0x2db9dc[_0x43d0('0x2f')];if(!_0x4bfce9[_0x43d0('0x30')][_0x43d0('0x37')](_0x43d0('0x38'))){_0x3c1ea3[_0x43d0('0x19')]=qs[_0x43d0('0x19')](_0x4bfce9[_0x43d0('0x30')][_0x43d0('0x19')]);_0x3c1ea3[_0x43d0('0x1c')]=qs['offset'](_0x4bfce9[_0x43d0('0x30')][_0x43d0('0x1c')]);}_0x3c1ea3[_0x43d0('0x39')]=qs[_0x43d0('0x3a')](_0x4bfce9[_0x43d0('0x30')][_0x43d0('0x3a')]);_0x3c1ea3[_0x43d0('0x3b')]=qs[_0x43d0('0x32')](_[_0x43d0('0x3c')](_0x4bfce9[_0x43d0('0x30')],_0x2db9dc[_0x43d0('0x32')]),_0x13e3c9);if(_0x4bfce9[_0x43d0('0x30')][_0x43d0('0x3d')]){_0x3c1ea3[_0x43d0('0x3b')]=_['merge'](_0x3c1ea3[_0x43d0('0x3b')],{'$or':_[_0x43d0('0x2a')](_0x13e3c9,function(_0x38f330){if(_0x38f330[_0x43d0('0x2d')]!==_0x43d0('0x3e')){var _0x1e6c8b={};_0x1e6c8b[_0x38f330[_0x43d0('0x28')]]={'$like':'%'+_0x4bfce9[_0x43d0('0x30')]['filter']+'%'};return _0x1e6c8b;}})});}_0x3c1ea3=_['merge']({},_0x3c1ea3,_0x4bfce9[_0x43d0('0x3f')]);var _0x5ad2d0={'where':_0x3c1ea3['where']};return db[_0x43d0('0x2b')]['count'](_0x5ad2d0)[_0x43d0('0x22')](function(_0x5027d0){_0x10086b[_0x43d0('0x1b')]=_0x5027d0;if(_0x4bfce9['query'][_0x43d0('0x40')]){_0x3c1ea3[_0x43d0('0x41')]=[{'all':!![]}];}return db[_0x43d0('0x2b')]['findAll'](_0x3c1ea3);})[_0x43d0('0x22')](function(_0x520406){_0x10086b[_0x43d0('0x42')]=_0x520406;return _0x10086b;})['then'](respondWithFilteredResult(_0x52c37b,_0x3c1ea3))['catch'](handleError(_0x52c37b,null));};exports[_0x43d0('0x43')]=function(_0xcb5a02,_0x4d539f){var _0x2f2ac9={'raw':!![],'where':{'id':_0xcb5a02[_0x43d0('0x44')]['id']}},_0x1c87bc={};_0x1c87bc[_0x43d0('0x2f')]=_[_0x43d0('0x31')](db['ContactItemType'][_0x43d0('0x45')]);_0x1c87bc[_0x43d0('0x30')]=_[_0x43d0('0x31')](_0xcb5a02[_0x43d0('0x30')]);_0x1c87bc['filters']=_[_0x43d0('0x34')](_0x1c87bc[_0x43d0('0x2f')],_0x1c87bc[_0x43d0('0x30')]);_0x2f2ac9[_0x43d0('0x33')]=_[_0x43d0('0x34')](_0x1c87bc['model'],qs[_0x43d0('0x35')](_0xcb5a02[_0x43d0('0x30')]['fields']));_0x2f2ac9[_0x43d0('0x33')]=_0x2f2ac9[_0x43d0('0x33')][_0x43d0('0x36')]?_0x2f2ac9['attributes']:_0x1c87bc[_0x43d0('0x2f')];if(_0xcb5a02['query'][_0x43d0('0x40')]){_0x2f2ac9['include']=[{'all':!![]}];}_0x2f2ac9=_[_0x43d0('0x46')]({},_0x2f2ac9,_0xcb5a02[_0x43d0('0x3f')]);return db[_0x43d0('0x2b')][_0x43d0('0x47')](_0x2f2ac9)[_0x43d0('0x22')](handleEntityNotFound(_0x4d539f,null))['then'](respondWithResult(_0x4d539f,null))[_0x43d0('0x48')](handleError(_0x4d539f,null));};exports['create']=function(_0x5a6364,_0x3e7392){return db[_0x43d0('0x2b')][_0x43d0('0x49')](_0x5a6364[_0x43d0('0x4a')],{})[_0x43d0('0x22')](function(_0x3685cf){var _0x36c9d0=_0x5a6364[_0x43d0('0x4b')][_0x43d0('0x4c')]({'plain':!![]});if(!_0x36c9d0)throw new Error(_0x43d0('0x4d'));if(_0x36c9d0[_0x43d0('0x4e')]==='user'){var _0x338203=_0x3685cf[_0x43d0('0x4c')]({'plain':!![]});var _0x1503bc='ContactItemTypes';return db[_0x43d0('0x4f')]['find']({'where':{'name':_0x1503bc,'userProfileId':_0x36c9d0['userProfileId']},'raw':!![]})[_0x43d0('0x22')](function(_0x29a14a){if(_0x29a14a&&_0x29a14a[_0x43d0('0x50')]===0x0){return db[_0x43d0('0x51')][_0x43d0('0x49')]({'name':_0x338203['name'],'resourceId':_0x338203['id'],'type':_0x29a14a['name'],'sectionId':_0x29a14a['id']},{})[_0x43d0('0x22')](function(){return _0x3685cf;});}else{return _0x3685cf;}})['catch'](function(_0x32aab0){logger[_0x43d0('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x32aab0);throw _0x32aab0;});}return _0x3685cf;})['then'](respondWithResult(_0x3e7392,0xc9))['catch'](handleError(_0x3e7392,null));};exports[_0x43d0('0x21')]=function(_0x126863,_0x3d89d4){if(_0x126863[_0x43d0('0x4a')]['id']){delete _0x126863[_0x43d0('0x4a')]['id'];}return db[_0x43d0('0x2b')][_0x43d0('0x47')]({'where':{'id':_0x126863[_0x43d0('0x44')]['id']}})[_0x43d0('0x22')](handleEntityNotFound(_0x3d89d4,null))['then'](saveUpdates(_0x126863[_0x43d0('0x4a')],null))[_0x43d0('0x22')](respondWithResult(_0x3d89d4,null))[_0x43d0('0x48')](handleError(_0x3d89d4,null));};exports[_0x43d0('0x23')]=function(_0x44feea,_0x5e341f){return db[_0x43d0('0x2b')][_0x43d0('0x47')]({'where':{'id':_0x44feea[_0x43d0('0x44')]['id']}})[_0x43d0('0x22')](handleEntityNotFound(_0x5e341f,null))['then'](db['CmContactHasItem'][_0x43d0('0x21')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x44feea[_0x43d0('0x44')]['id']}}))[_0x43d0('0x22')](removeEntity(_0x5e341f,null))[_0x43d0('0x48')](handleError(_0x5e341f,null));};
\ No newline at end of file
+var _0xf4f4=['json','apply','reject','save','update','then','get','ContactItemTypes','UserProfileResource','destroy','end','sendStatus','name','send','index','map','rawAttributes','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','ContactItemType','includeAll','show','include','find','catch','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','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','status','offset','undefined','limit','count','set','Content-Range'];(function(_0x5205e8,_0x4cdcb0){var _0x15844c=function(_0x5bd78a){while(--_0x5bd78a){_0x5205e8['push'](_0x5205e8['shift']());}};_0x15844c(++_0x4cdcb0);}(_0xf4f4,0xe3));var _0x4f4f=function(_0x5b2996,_0x3aba96){_0x5b2996=_0x5b2996-0x0;var _0x392dee=_0xf4f4[_0x5b2996];return _0x392dee;};'use strict';var emlformat=require(_0x4f4f('0x0'));var rimraf=require(_0x4f4f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x4f4f('0x2'));var rp=require(_0x4f4f('0x3'));var moment=require(_0x4f4f('0x4'));var BPromise=require(_0x4f4f('0x5'));var Mustache=require(_0x4f4f('0x6'));var util=require('util');var path=require(_0x4f4f('0x7'));var sox=require('sox');var csv=require(_0x4f4f('0x8'));var ejs=require(_0x4f4f('0x9'));var fs=require('fs');var fs_extra=require(_0x4f4f('0xa'));var _=require(_0x4f4f('0xb'));var squel=require(_0x4f4f('0xc'));var crypto=require(_0x4f4f('0xd'));var jsforce=require(_0x4f4f('0xe'));var deskjs=require(_0x4f4f('0xf'));var toCsv=require('to-csv');var querystring=require(_0x4f4f('0x10'));var Papa=require(_0x4f4f('0x11'));var Redis=require(_0x4f4f('0x12'));var authService=require(_0x4f4f('0x13'));var qs=require(_0x4f4f('0x14'));var as=require(_0x4f4f('0x15'));var hardwareService=require(_0x4f4f('0x16'));var logger=require(_0x4f4f('0x17'))('api');var utils=require('../../config/utils');var config=require(_0x4f4f('0x18'));var licenseUtil=require(_0x4f4f('0x19'));var db=require(_0x4f4f('0x1a'))['db'];function respondWithStatusCode(_0x1b54b0,_0x282031){_0x282031=_0x282031||0xcc;return function(_0x1d7575){if(_0x1d7575){return _0x1b54b0['sendStatus'](_0x282031);}return _0x1b54b0[_0x4f4f('0x1b')](_0x282031)['end']();};}function respondWithResult(_0x216ba8,_0xe7c2d5){_0xe7c2d5=_0xe7c2d5||0xc8;return function(_0x3e16e9){if(_0x3e16e9){return _0x216ba8[_0x4f4f('0x1b')](_0xe7c2d5)['json'](_0x3e16e9);}};}function respondWithFilteredResult(_0x19f2fd,_0x4c68f4){return function(_0x47ab66){if(_0x47ab66){var _0x58de77=typeof _0x4c68f4[_0x4f4f('0x1c')]===_0x4f4f('0x1d')&&typeof _0x4c68f4[_0x4f4f('0x1e')]===_0x4f4f('0x1d');var _0x2d5e5d=_0x47ab66[_0x4f4f('0x1f')];var _0x1245c4=_0x58de77?0x0:_0x4c68f4[_0x4f4f('0x1c')];var _0x929a0b=_0x58de77?_0x47ab66[_0x4f4f('0x1f')]:_0x4c68f4[_0x4f4f('0x1c')]+_0x4c68f4[_0x4f4f('0x1e')];var _0x499277;if(_0x929a0b>=_0x2d5e5d){_0x929a0b=_0x2d5e5d;_0x499277=0xc8;}else{_0x499277=0xce;}_0x19f2fd[_0x4f4f('0x1b')](_0x499277);return _0x19f2fd[_0x4f4f('0x20')](_0x4f4f('0x21'),_0x1245c4+'-'+_0x929a0b+'/'+_0x2d5e5d)[_0x4f4f('0x22')](_0x47ab66);}return null;};}function patchUpdates(_0x302a79){return function(_0x460b4d){try{jsonpatch[_0x4f4f('0x23')](_0x460b4d,_0x302a79,!![]);}catch(_0x3e33d5){return BPromise[_0x4f4f('0x24')](_0x3e33d5);}return _0x460b4d[_0x4f4f('0x25')]();};}function saveUpdates(_0x469a1d,_0x17832f){return function(_0x17984d){if(_0x17984d){return _0x17984d[_0x4f4f('0x26')](_0x469a1d)['then'](function(_0x4f7261){return _0x4f7261;});}return null;};}function removeEntity(_0x525529,_0x272125){return function(_0x43e661){if(_0x43e661){return _0x43e661['destroy']()[_0x4f4f('0x27')](function(){var _0x15859c=_0x43e661[_0x4f4f('0x28')]({'plain':!![]});var _0x2ec92a=_0x4f4f('0x29');return db[_0x4f4f('0x2a')][_0x4f4f('0x2b')]({'where':{'type':_0x2ec92a,'resourceId':_0x15859c['id']}})['then'](function(){return _0x43e661;});})[_0x4f4f('0x27')](function(){_0x525529[_0x4f4f('0x1b')](0xcc)[_0x4f4f('0x2c')]();});}};}function handleEntityNotFound(_0x15c79c,_0x18e864){return function(_0x4ad33d){if(!_0x4ad33d){_0x15c79c[_0x4f4f('0x2d')](0x194);}return _0x4ad33d;};}function handleError(_0xaf3de1,_0x7180f8){_0x7180f8=_0x7180f8||0x1f4;return function(_0x5deda9){logger['error'](_0x5deda9['stack']);if(_0x5deda9[_0x4f4f('0x2e')]){delete _0x5deda9['name'];}_0xaf3de1[_0x4f4f('0x1b')](_0x7180f8)[_0x4f4f('0x2f')](_0x5deda9);};}exports[_0x4f4f('0x30')]=function(_0x5eb7c9,_0x460546){var _0x1b6f53={},_0x5dd5a3={},_0x413b71={'count':0x0,'rows':[]};var _0x1a551a=_[_0x4f4f('0x31')](db['ContactItemType'][_0x4f4f('0x32')],function(_0x343c75){return{'name':_0x343c75['fieldName'],'type':_0x343c75['type'][_0x4f4f('0x33')]};});_0x5dd5a3[_0x4f4f('0x34')]=_[_0x4f4f('0x31')](_0x1a551a,_0x4f4f('0x2e'));_0x5dd5a3[_0x4f4f('0x35')]=_[_0x4f4f('0x36')](_0x5eb7c9[_0x4f4f('0x35')]);_0x5dd5a3[_0x4f4f('0x37')]=_[_0x4f4f('0x38')](_0x5dd5a3[_0x4f4f('0x34')],_0x5dd5a3['query']);_0x1b6f53['attributes']=_[_0x4f4f('0x38')](_0x5dd5a3['model'],qs[_0x4f4f('0x39')](_0x5eb7c9[_0x4f4f('0x35')][_0x4f4f('0x39')]));_0x1b6f53[_0x4f4f('0x3a')]=_0x1b6f53[_0x4f4f('0x3a')][_0x4f4f('0x3b')]?_0x1b6f53[_0x4f4f('0x3a')]:_0x5dd5a3[_0x4f4f('0x34')];if(!_0x5eb7c9[_0x4f4f('0x35')][_0x4f4f('0x3c')](_0x4f4f('0x3d'))){_0x1b6f53[_0x4f4f('0x1e')]=qs['limit'](_0x5eb7c9[_0x4f4f('0x35')][_0x4f4f('0x1e')]);_0x1b6f53[_0x4f4f('0x1c')]=qs[_0x4f4f('0x1c')](_0x5eb7c9[_0x4f4f('0x35')][_0x4f4f('0x1c')]);}_0x1b6f53[_0x4f4f('0x3e')]=qs[_0x4f4f('0x3f')](_0x5eb7c9[_0x4f4f('0x35')]['sort']);_0x1b6f53[_0x4f4f('0x40')]=qs[_0x4f4f('0x37')](_[_0x4f4f('0x41')](_0x5eb7c9['query'],_0x5dd5a3['filters']),_0x1a551a);if(_0x5eb7c9[_0x4f4f('0x35')][_0x4f4f('0x42')]){_0x1b6f53[_0x4f4f('0x40')]=_[_0x4f4f('0x43')](_0x1b6f53[_0x4f4f('0x40')],{'$or':_[_0x4f4f('0x31')](_0x1a551a,function(_0x1c012d){if(_0x1c012d[_0x4f4f('0x44')]!==_0x4f4f('0x45')){var _0x455aa0={};_0x455aa0[_0x1c012d[_0x4f4f('0x2e')]]={'$like':'%'+_0x5eb7c9[_0x4f4f('0x35')]['filter']+'%'};return _0x455aa0;}})});}_0x1b6f53=_[_0x4f4f('0x43')]({},_0x1b6f53,_0x5eb7c9[_0x4f4f('0x46')]);var _0x306ee7={'where':_0x1b6f53[_0x4f4f('0x40')]};return db[_0x4f4f('0x47')]['count'](_0x306ee7)['then'](function(_0x134710){_0x413b71[_0x4f4f('0x1f')]=_0x134710;if(_0x5eb7c9[_0x4f4f('0x35')][_0x4f4f('0x48')]){_0x1b6f53['include']=[{'all':!![]}];}return db[_0x4f4f('0x47')]['findAll'](_0x1b6f53);})[_0x4f4f('0x27')](function(_0x5a7c94){_0x413b71['rows']=_0x5a7c94;return _0x413b71;})[_0x4f4f('0x27')](respondWithFilteredResult(_0x460546,_0x1b6f53))['catch'](handleError(_0x460546,null));};exports[_0x4f4f('0x49')]=function(_0x2af7a7,_0x5e1c20){var _0x220df1={'raw':!![],'where':{'id':_0x2af7a7['params']['id']}},_0x2d8ff6={};_0x2d8ff6[_0x4f4f('0x34')]=_[_0x4f4f('0x36')](db[_0x4f4f('0x47')][_0x4f4f('0x32')]);_0x2d8ff6[_0x4f4f('0x35')]=_[_0x4f4f('0x36')](_0x2af7a7[_0x4f4f('0x35')]);_0x2d8ff6[_0x4f4f('0x37')]=_[_0x4f4f('0x38')](_0x2d8ff6[_0x4f4f('0x34')],_0x2d8ff6[_0x4f4f('0x35')]);_0x220df1[_0x4f4f('0x3a')]=_[_0x4f4f('0x38')](_0x2d8ff6[_0x4f4f('0x34')],qs[_0x4f4f('0x39')](_0x2af7a7['query'][_0x4f4f('0x39')]));_0x220df1['attributes']=_0x220df1['attributes'][_0x4f4f('0x3b')]?_0x220df1[_0x4f4f('0x3a')]:_0x2d8ff6['model'];if(_0x2af7a7[_0x4f4f('0x35')][_0x4f4f('0x48')]){_0x220df1[_0x4f4f('0x4a')]=[{'all':!![]}];}_0x220df1=_[_0x4f4f('0x43')]({},_0x220df1,_0x2af7a7[_0x4f4f('0x46')]);return db['ContactItemType'][_0x4f4f('0x4b')](_0x220df1)[_0x4f4f('0x27')](handleEntityNotFound(_0x5e1c20,null))[_0x4f4f('0x27')](respondWithResult(_0x5e1c20,null))[_0x4f4f('0x4c')](handleError(_0x5e1c20,null));};exports[_0x4f4f('0x4d')]=function(_0x433787,_0x29314b){return db[_0x4f4f('0x47')][_0x4f4f('0x4d')](_0x433787['body'],{})[_0x4f4f('0x27')](function(_0xd3b763){var _0x4b33a5=_0x433787['user']['get']({'plain':!![]});if(!_0x4b33a5)throw new Error(_0x4f4f('0x4e'));if(_0x4b33a5[_0x4f4f('0x4f')]===_0x4f4f('0x50')){var _0x5c5077=_0xd3b763[_0x4f4f('0x28')]({'plain':!![]});var _0x5db92e=_0x4f4f('0x29');return db[_0x4f4f('0x51')][_0x4f4f('0x4b')]({'where':{'name':_0x5db92e,'userProfileId':_0x4b33a5[_0x4f4f('0x52')]},'raw':!![]})[_0x4f4f('0x27')](function(_0x1d0867){if(_0x1d0867&&_0x1d0867[_0x4f4f('0x53')]===0x0){return db[_0x4f4f('0x2a')][_0x4f4f('0x4d')]({'name':_0x5c5077['name'],'resourceId':_0x5c5077['id'],'type':_0x1d0867['name'],'sectionId':_0x1d0867['id']},{})[_0x4f4f('0x27')](function(){return _0xd3b763;});}else{return _0xd3b763;}})[_0x4f4f('0x4c')](function(_0x4c04eb){logger['error'](_0x4f4f('0x54'),_0x4c04eb);throw _0x4c04eb;});}return _0xd3b763;})[_0x4f4f('0x27')](respondWithResult(_0x29314b,0xc9))[_0x4f4f('0x4c')](handleError(_0x29314b,null));};exports['update']=function(_0x4a7622,_0x27c7fc){if(_0x4a7622[_0x4f4f('0x55')]['id']){delete _0x4a7622[_0x4f4f('0x55')]['id'];}return db[_0x4f4f('0x47')][_0x4f4f('0x4b')]({'where':{'id':_0x4a7622[_0x4f4f('0x56')]['id']}})[_0x4f4f('0x27')](handleEntityNotFound(_0x27c7fc,null))[_0x4f4f('0x27')](saveUpdates(_0x4a7622[_0x4f4f('0x55')],null))[_0x4f4f('0x27')](respondWithResult(_0x27c7fc,null))[_0x4f4f('0x4c')](handleError(_0x27c7fc,null));};exports['destroy']=function(_0x585c06,_0x376aea){return db[_0x4f4f('0x47')][_0x4f4f('0x4b')]({'where':{'id':_0x585c06[_0x4f4f('0x56')]['id']}})['then'](handleEntityNotFound(_0x376aea,null))[_0x4f4f('0x27')](db['CmContactHasItem'][_0x4f4f('0x26')]({'ItemTypeId':null},{'where':{'ItemTypeId':_0x585c06[_0x4f4f('0x56')]['id']}}))[_0x4f4f('0x27')](removeEntity(_0x376aea,null))['catch'](handleError(_0x376aea,null));};
\ No newline at end of file
index 29fd3c4..2a7367f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9baa=['./contactItemType.attributes','define','tools_contact_item_types','lodash','util','../../config/logger','moment','request-promise','rimraf','../../config/environment'];(function(_0x40bb7d,_0x5e9723){var _0x3a6044=function(_0x3200b0){while(--_0x3200b0){_0x40bb7d['push'](_0x40bb7d['shift']());}};_0x3a6044(++_0x5e9723);}(_0x9baa,0x7b));var _0xa9ba=function(_0x56a1d0,_0x16a437){_0x56a1d0=_0x56a1d0-0x0;var _0x5952c4=_0x9baa[_0x56a1d0];return _0x5952c4;};'use strict';var _=require(_0xa9ba('0x0'));var util=require(_0xa9ba('0x1'));var logger=require(_0xa9ba('0x2'))('api');var moment=require(_0xa9ba('0x3'));var BPromise=require('bluebird');var rp=require(_0xa9ba('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa9ba('0x5'));var config=require(_0xa9ba('0x6'));var attributes=require(_0xa9ba('0x7'));module['exports']=function(_0x1054d1,_0x5eb8d6){return _0x1054d1[_0xa9ba('0x8')]('ContactItemType',attributes,{'tableName':_0xa9ba('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd964=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./contactItemType.attributes','exports','define','tools_contact_item_types','lodash','util'];(function(_0x51921f,_0x42bde0){var _0x41743a=function(_0x27105d){while(--_0x27105d){_0x51921f['push'](_0x51921f['shift']());}};_0x41743a(++_0x42bde0);}(_0xd964,0x14e));var _0x4d96=function(_0x39057c,_0x32cffc){_0x39057c=_0x39057c-0x0;var _0x551b35=_0xd964[_0x39057c];return _0x551b35;};'use strict';var _=require(_0x4d96('0x0'));var util=require(_0x4d96('0x1'));var logger=require(_0x4d96('0x2'))(_0x4d96('0x3'));var moment=require(_0x4d96('0x4'));var BPromise=require(_0x4d96('0x5'));var rp=require(_0x4d96('0x6'));var fs=require('fs');var path=require(_0x4d96('0x7'));var rimraf=require(_0x4d96('0x8'));var config=require(_0x4d96('0x9'));var attributes=require(_0x4d96('0xa'));module[_0x4d96('0xb')]=function(_0x528b87,_0x3992c1){return _0x528b87[_0x4d96('0xc')]('ContactItemType',attributes,{'tableName':_0x4d96('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index af9a908..6021284 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaef4=['ContactItemType,\x20%s,\x20%s','request\x20sent','debug','ContactItemType,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','client','request','then','info'];(function(_0x273dc5,_0x268a81){var _0x46dae7=function(_0x263d62){while(--_0x263d62){_0x273dc5['push'](_0x273dc5['shift']());}};_0x46dae7(++_0x268a81);}(_0xaef4,0xfb));var _0x4aef=function(_0x10edfe,_0x53b6a9){_0x10edfe=_0x10edfe-0x0;var _0x2ff209=_0xaef4[_0x10edfe];return _0x2ff209;};'use strict';var _=require(_0x4aef('0x0'));var util=require(_0x4aef('0x1'));var moment=require(_0x4aef('0x2'));var BPromise=require('bluebird');var rs=require(_0x4aef('0x3'));var fs=require('fs');var Redis=require(_0x4aef('0x4'));var db=require(_0x4aef('0x5'))['db'];var utils=require(_0x4aef('0x6'));var logger=require('../../config/logger')(_0x4aef('0x7'));var config=require(_0x4aef('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x4aef('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2f22dc,_0x475917,_0x1e863a){return new BPromise(function(_0x2f594c,_0x1dee01){return client[_0x4aef('0xa')](_0x2f22dc,_0x1e863a)[_0x4aef('0xb')](function(_0x1b9312){logger[_0x4aef('0xc')](_0x4aef('0xd'),_0x475917,_0x4aef('0xe'));logger[_0x4aef('0xf')](_0x4aef('0x10'),_0x475917,_0x4aef('0xe'),JSON[_0x4aef('0x11')](_0x1b9312));if(_0x1b9312[_0x4aef('0x12')]){if(_0x1b9312[_0x4aef('0x12')]['code']===0x1f4){logger['error'](_0x4aef('0xd'),_0x475917,_0x1b9312[_0x4aef('0x12')][_0x4aef('0x13')]);return _0x1dee01(_0x1b9312['error'][_0x4aef('0x13')]);}logger['error'](_0x4aef('0xd'),_0x475917,_0x1b9312['error'][_0x4aef('0x13')]);return _0x2f594c(_0x1b9312[_0x4aef('0x12')][_0x4aef('0x13')]);}else{logger[_0x4aef('0xc')](_0x4aef('0xd'),_0x475917,_0x4aef('0xe'));_0x2f594c(_0x1b9312[_0x4aef('0x14')][_0x4aef('0x13')]);}})[_0x4aef('0x15')](function(_0x37c5cc){logger['error'](_0x4aef('0xd'),_0x475917,_0x37c5cc);_0x1dee01(_0x37c5cc);});});}
\ No newline at end of file
+var _0xe075=['info','request\x20sent','debug','ContactItemType,\x20%s,\x20%s,\x20%s','stringify','error','code','ContactItemType,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','then'];(function(_0x578de6,_0x5c9049){var _0x4bf556=function(_0x43e921){while(--_0x43e921){_0x578de6['push'](_0x578de6['shift']());}};_0x4bf556(++_0x5c9049);}(_0xe075,0x143));var _0x5e07=function(_0x39df36,_0x5dd77f){_0x39df36=_0x39df36-0x0;var _0x598f03=_0xe075[_0x39df36];return _0x598f03;};'use strict';var _=require('lodash');var util=require(_0x5e07('0x0'));var moment=require(_0x5e07('0x1'));var BPromise=require(_0x5e07('0x2'));var rs=require(_0x5e07('0x3'));var fs=require('fs');var Redis=require(_0x5e07('0x4'));var db=require(_0x5e07('0x5'))['db'];var utils=require(_0x5e07('0x6'));var logger=require(_0x5e07('0x7'))(_0x5e07('0x8'));var config=require(_0x5e07('0x9'));var jayson=require(_0x5e07('0xa'));var client=jayson[_0x5e07('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x211647,_0x330a35,_0x57070d){return new BPromise(function(_0x2229a8,_0x4e4131){return client['request'](_0x211647,_0x57070d)[_0x5e07('0xc')](function(_0xc56113){logger[_0x5e07('0xd')]('ContactItemType,\x20%s,\x20%s',_0x330a35,_0x5e07('0xe'));logger[_0x5e07('0xf')](_0x5e07('0x10'),_0x330a35,_0x5e07('0xe'),JSON[_0x5e07('0x11')](_0xc56113));if(_0xc56113[_0x5e07('0x12')]){if(_0xc56113[_0x5e07('0x12')][_0x5e07('0x13')]===0x1f4){logger[_0x5e07('0x12')](_0x5e07('0x14'),_0x330a35,_0xc56113['error'][_0x5e07('0x15')]);return _0x4e4131(_0xc56113[_0x5e07('0x12')][_0x5e07('0x15')]);}logger[_0x5e07('0x12')](_0x5e07('0x14'),_0x330a35,_0xc56113[_0x5e07('0x12')][_0x5e07('0x15')]);return _0x2229a8(_0xc56113[_0x5e07('0x12')][_0x5e07('0x15')]);}else{logger[_0x5e07('0xd')]('ContactItemType,\x20%s,\x20%s',_0x330a35,_0x5e07('0xe'));_0x2229a8(_0xc56113[_0x5e07('0x16')][_0x5e07('0x15')]);}})[_0x5e07('0x17')](function(_0x3cb5ef){logger[_0x5e07('0x12')](_0x5e07('0x14'),_0x330a35,_0x3cb5ef);_0x4e4131(_0x3cb5ef);});});}
\ No newline at end of file
index 691e14d..eeb53d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c8a=['destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./contactItemType.controller','isAuthenticated','index','get','show','post','update','/:id'];(function(_0x53d58f,_0x1a7e05){var _0x1ab6a0=function(_0x1d0e46){while(--_0x1d0e46){_0x53d58f['push'](_0x53d58f['shift']());}};_0x1ab6a0(++_0x1a7e05);}(_0x3c8a,0x11f));var _0xa3c8=function(_0xbb0ce8,_0xb63549){_0xbb0ce8=_0xbb0ce8-0x0;var _0x1a1b17=_0x3c8a[_0xbb0ce8];return _0x1a1b17;};'use strict';var multer=require(_0xa3c8('0x0'));var util=require(_0xa3c8('0x1'));var path=require(_0xa3c8('0x2'));var timeout=require('connect-timeout');var express=require(_0xa3c8('0x3'));var router=express[_0xa3c8('0x4')]();var fs_extra=require(_0xa3c8('0x5'));var auth=require(_0xa3c8('0x6'));var interaction=require(_0xa3c8('0x7'));var config=require(_0xa3c8('0x8'));var controller=require(_0xa3c8('0x9'));router['get']('/',auth[_0xa3c8('0xa')](),controller[_0xa3c8('0xb')]);router[_0xa3c8('0xc')]('/:id',auth[_0xa3c8('0xa')](),controller[_0xa3c8('0xd')]);router[_0xa3c8('0xe')]('/',auth[_0xa3c8('0xa')](),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0xa3c8('0xf')]);router['delete'](_0xa3c8('0x10'),auth[_0xa3c8('0xa')](),controller[_0xa3c8('0x11')]);module[_0xa3c8('0x12')]=router;
\ No newline at end of file
+var _0xf4a2=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','Router'];(function(_0x3d854b,_0x5aa03d){var _0x21d12f=function(_0x272b76){while(--_0x272b76){_0x3d854b['push'](_0x3d854b['shift']());}};_0x21d12f(++_0x5aa03d);}(_0xf4a2,0x78));var _0x2f4a=function(_0xb7a459,_0xc13228){_0xb7a459=_0xb7a459-0x0;var _0x104ab5=_0xf4a2[_0xb7a459];return _0x104ab5;};'use strict';var multer=require(_0x2f4a('0x0'));var util=require(_0x2f4a('0x1'));var path=require(_0x2f4a('0x2'));var timeout=require(_0x2f4a('0x3'));var express=require(_0x2f4a('0x4'));var router=express[_0x2f4a('0x5')]();var fs_extra=require(_0x2f4a('0x6'));var auth=require(_0x2f4a('0x7'));var interaction=require(_0x2f4a('0x8'));var config=require(_0x2f4a('0x9'));var controller=require('./contactItemType.controller');router[_0x2f4a('0xa')]('/',auth['isAuthenticated'](),controller[_0x2f4a('0xb')]);router[_0x2f4a('0xa')](_0x2f4a('0xc'),auth[_0x2f4a('0xd')](),controller[_0x2f4a('0xe')]);router[_0x2f4a('0xf')]('/',auth[_0x2f4a('0xd')](),controller[_0x2f4a('0x10')]);router[_0x2f4a('0x11')]('/:id',auth[_0x2f4a('0xd')](),controller['update']);router[_0x2f4a('0x12')](_0x2f4a('0xc'),auth['isAuthenticated'](),controller[_0x2f4a('0x13')]);module[_0x2f4a('0x14')]=router;
\ No newline at end of file
index a3c9b4f..989c6c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['exports','sequelize'];(function(_0x5ade68,_0x2b7674){var _0xac6583=function(_0x101144){while(--_0x101144){_0x5ade68['push'](_0x5ade68['shift']());}};_0xac6583(++_0x2b7674);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xbaf0=['name','exports','STRING'];(function(_0x685346,_0x3ef2e5){var _0x52e15b=function(_0x4435da){while(--_0x4435da){_0x685346['push'](_0x685346['shift']());}};_0x52e15b(++_0x3ef2e5);}(_0xbaf0,0x12a));var _0x0baf=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xbaf0[_0x2f5ac5];return _0x37c9a8;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'name':{'type':Sequelize[_0x0baf('0x1')],'allowNull':![],'unique':_0x0baf('0x2')},'description':{'type':Sequelize[_0x0baf('0x1')]}};
\ No newline at end of file
index b05c9ad..fe1dca0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa50a=['register','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','destroy','then','get','CustomDashboards','UserProfileResource','sendStatus','name','send','map','Dashboard','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','length','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','find','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','omit','updatedAt','autoAssociation','update','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','pie-chart','attrSerie1','attrSerie2','attrSerie3','attrFaxAccounts','web-report','reportType','attrReport','attrRefresh','widgetAttributes:\x20%s','DashboardId','DashboardItem','getItems','pick','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./dashboard.socket'];(function(_0x10b8ff,_0xad1c5c){var _0x2e63f3=function(_0x9eb1ef){while(--_0x9eb1ef){_0x10b8ff['push'](_0x10b8ff['shift']());}};_0x2e63f3(++_0xad1c5c);}(_0xa50a,0xf1));var _0xaa50=function(_0x4c06a3,_0x1e6b6f){_0x4c06a3=_0x4c06a3-0x0;var _0x7ff53c=_0xa50a[_0x4c06a3];return _0x7ff53c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xaa50('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xaa50('0x1'));var rp=require(_0xaa50('0x2'));var moment=require(_0xaa50('0x3'));var BPromise=require(_0xaa50('0x4'));var Mustache=require(_0xaa50('0x5'));var util=require(_0xaa50('0x6'));var path=require(_0xaa50('0x7'));var sox=require(_0xaa50('0x8'));var csv=require(_0xaa50('0x9'));var ejs=require(_0xaa50('0xa'));var fs=require('fs');var fs_extra=require(_0xaa50('0xb'));var _=require(_0xaa50('0xc'));var squel=require(_0xaa50('0xd'));var crypto=require('crypto');var jsforce=require(_0xaa50('0xe'));var deskjs=require(_0xaa50('0xf'));var toCsv=require('to-csv');var querystring=require(_0xaa50('0x10'));var Papa=require(_0xaa50('0x11'));var Redis=require(_0xaa50('0x12'));var authService=require(_0xaa50('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xaa50('0x14'));var hardwareService=require(_0xaa50('0x15'));var logger=require('../../config/logger')(_0xaa50('0x16'));var utils=require(_0xaa50('0x17'));var config=require(_0xaa50('0x18'));var licenseUtil=require(_0xaa50('0x19'));var db=require(_0xaa50('0x1a'))['db'];config[_0xaa50('0x1b')]=_[_0xaa50('0x1c')](config[_0xaa50('0x1b')],{'host':_0xaa50('0x1d'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xaa50('0x1b')]));require(_0xaa50('0x1e'))[_0xaa50('0x1f')](socket);function respondWithStatusCode(_0x546c07,_0x56097d){_0x56097d=_0x56097d||0xcc;return function(_0x160e64){if(_0x160e64){return _0x546c07['sendStatus'](_0x56097d);}return _0x546c07[_0xaa50('0x20')](_0x56097d)[_0xaa50('0x21')]();};}function respondWithResult(_0x11cdd0,_0x4fc197){_0x4fc197=_0x4fc197||0xc8;return function(_0x2e7072){if(_0x2e7072){return _0x11cdd0[_0xaa50('0x20')](_0x4fc197)[_0xaa50('0x22')](_0x2e7072);}};}function respondWithFilteredResult(_0x2825fb,_0x4e5a7e){return function(_0x3c4e8e){if(_0x3c4e8e){var _0x550830=typeof _0x4e5a7e[_0xaa50('0x23')]===_0xaa50('0x24')&&typeof _0x4e5a7e['limit']===_0xaa50('0x24');var _0x3c7ec5=_0x3c4e8e[_0xaa50('0x25')];var _0x5d7e38=_0x550830?0x0:_0x4e5a7e[_0xaa50('0x23')];var _0xbc5bd9=_0x550830?_0x3c4e8e[_0xaa50('0x25')]:_0x4e5a7e[_0xaa50('0x23')]+_0x4e5a7e[_0xaa50('0x26')];var _0x28fee8;if(_0xbc5bd9>=_0x3c7ec5){_0xbc5bd9=_0x3c7ec5;_0x28fee8=0xc8;}else{_0x28fee8=0xce;}_0x2825fb['status'](_0x28fee8);return _0x2825fb[_0xaa50('0x27')](_0xaa50('0x28'),_0x5d7e38+'-'+_0xbc5bd9+'/'+_0x3c7ec5)[_0xaa50('0x22')](_0x3c4e8e);}return null;};}function patchUpdates(_0x3d27fb){return function(_0x3620f4){try{jsonpatch[_0xaa50('0x29')](_0x3620f4,_0x3d27fb,!![]);}catch(_0x29daa5){return BPromise[_0xaa50('0x2a')](_0x29daa5);}return _0x3620f4[_0xaa50('0x2b')]();};}function saveUpdates(_0x2beaaf,_0x41b4f4){return function(_0xe89ae1){if(_0xe89ae1){return _0xe89ae1['update'](_0x2beaaf)['then'](function(_0xe4de51){return _0xe4de51;});}return null;};}function removeEntity(_0x444665,_0x33f8d8){return function(_0x620ce7){if(_0x620ce7){return _0x620ce7[_0xaa50('0x2c')]()[_0xaa50('0x2d')](function(){var _0x147da2=_0x620ce7[_0xaa50('0x2e')]({'plain':!![]});var _0x4fb730=_0xaa50('0x2f');return db[_0xaa50('0x30')][_0xaa50('0x2c')]({'where':{'type':_0x4fb730,'resourceId':_0x147da2['id']}})[_0xaa50('0x2d')](function(){return _0x620ce7;});})['then'](function(){_0x444665[_0xaa50('0x20')](0xcc)[_0xaa50('0x21')]();});}};}function handleEntityNotFound(_0x1d36b4,_0x28951e){return function(_0x332ae4){if(!_0x332ae4){_0x1d36b4[_0xaa50('0x31')](0x194);}return _0x332ae4;};}function handleError(_0x19f2b4,_0x37fd19){_0x37fd19=_0x37fd19||0x1f4;return function(_0x3b5a1b){logger['error'](_0x3b5a1b['stack']);if(_0x3b5a1b[_0xaa50('0x32')]){delete _0x3b5a1b[_0xaa50('0x32')];}_0x19f2b4['status'](_0x37fd19)[_0xaa50('0x33')](_0x3b5a1b);};}exports['index']=function(_0x505a8a,_0x583dc1){var _0x41f54e={},_0x588223={},_0x2b32f6={'count':0x0,'rows':[]};var _0xfd9e8f=_[_0xaa50('0x34')](db[_0xaa50('0x35')][_0xaa50('0x36')],function(_0x4c0ae8){return{'name':_0x4c0ae8[_0xaa50('0x37')],'type':_0x4c0ae8[_0xaa50('0x38')][_0xaa50('0x39')]};});_0x588223[_0xaa50('0x3a')]=_[_0xaa50('0x34')](_0xfd9e8f,_0xaa50('0x32'));_0x588223[_0xaa50('0x3b')]=_[_0xaa50('0x3c')](_0x505a8a[_0xaa50('0x3b')]);_0x588223['filters']=_[_0xaa50('0x3d')](_0x588223[_0xaa50('0x3a')],_0x588223[_0xaa50('0x3b')]);_0x41f54e[_0xaa50('0x3e')]=_[_0xaa50('0x3d')](_0x588223[_0xaa50('0x3a')],qs[_0xaa50('0x3f')](_0x505a8a[_0xaa50('0x3b')][_0xaa50('0x3f')]));_0x41f54e[_0xaa50('0x3e')]=_0x41f54e['attributes']['length']?_0x41f54e[_0xaa50('0x3e')]:_0x588223[_0xaa50('0x3a')];if(!_0x505a8a[_0xaa50('0x3b')][_0xaa50('0x40')](_0xaa50('0x41'))){_0x41f54e[_0xaa50('0x26')]=qs[_0xaa50('0x26')](_0x505a8a[_0xaa50('0x3b')][_0xaa50('0x26')]);_0x41f54e[_0xaa50('0x23')]=qs[_0xaa50('0x23')](_0x505a8a['query'][_0xaa50('0x23')]);}_0x41f54e[_0xaa50('0x42')]=qs[_0xaa50('0x43')](_0x505a8a['query'][_0xaa50('0x43')]);_0x41f54e['where']=qs[_0xaa50('0x44')](_['pick'](_0x505a8a['query'],_0x588223[_0xaa50('0x44')]),_0xfd9e8f);if(_0x505a8a[_0xaa50('0x3b')][_0xaa50('0x45')]){_0x41f54e['where']=_[_0xaa50('0x46')](_0x41f54e[_0xaa50('0x47')],{'$or':_[_0xaa50('0x34')](_0xfd9e8f,function(_0x3721b7){if(_0x3721b7[_0xaa50('0x38')]!==_0xaa50('0x48')){var _0x567816={};_0x567816[_0x3721b7['name']]={'$like':'%'+_0x505a8a[_0xaa50('0x3b')][_0xaa50('0x45')]+'%'};return _0x567816;}})});}_0x41f54e=_[_0xaa50('0x46')]({},_0x41f54e,_0x505a8a[_0xaa50('0x49')]);var _0x581d24={'where':_0x41f54e[_0xaa50('0x47')]};return db[_0xaa50('0x35')]['count'](_0x581d24)['then'](function(_0x4d2c30){_0x2b32f6[_0xaa50('0x25')]=_0x4d2c30;if(_0x505a8a[_0xaa50('0x3b')][_0xaa50('0x4a')]){_0x41f54e[_0xaa50('0x4b')]=[{'all':!![]}];}return db[_0xaa50('0x35')][_0xaa50('0x4c')](_0x41f54e);})['then'](function(_0x5115a1){_0x2b32f6[_0xaa50('0x4d')]=_0x5115a1;return _0x2b32f6;})[_0xaa50('0x2d')](respondWithFilteredResult(_0x583dc1,_0x41f54e))[_0xaa50('0x4e')](handleError(_0x583dc1,null));};exports['show']=function(_0x3c9136,_0x156234){var _0x3dc771={'raw':![],'where':{'id':_0x3c9136[_0xaa50('0x4f')]['id']}},_0x4ae9ac={};_0x4ae9ac['model']=_[_0xaa50('0x3c')](db[_0xaa50('0x35')]['rawAttributes']);_0x4ae9ac[_0xaa50('0x3b')]=_[_0xaa50('0x3c')](_0x3c9136[_0xaa50('0x3b')]);_0x4ae9ac[_0xaa50('0x44')]=_[_0xaa50('0x3d')](_0x4ae9ac[_0xaa50('0x3a')],_0x4ae9ac[_0xaa50('0x3b')]);_0x3dc771[_0xaa50('0x3e')]=_['intersection'](_0x4ae9ac[_0xaa50('0x3a')],qs[_0xaa50('0x3f')](_0x3c9136[_0xaa50('0x3b')][_0xaa50('0x3f')]));_0x3dc771[_0xaa50('0x3e')]=_0x3dc771[_0xaa50('0x3e')][_0xaa50('0x50')]?_0x3dc771[_0xaa50('0x3e')]:_0x4ae9ac[_0xaa50('0x3a')];if(_0x3c9136[_0xaa50('0x3b')][_0xaa50('0x4a')]){_0x3dc771[_0xaa50('0x4b')]=[{'all':!![]}];}_0x3dc771=_[_0xaa50('0x46')]({},_0x3dc771,_0x3c9136[_0xaa50('0x49')]);return db[_0xaa50('0x35')]['find'](_0x3dc771)[_0xaa50('0x2d')](handleEntityNotFound(_0x156234,null))['then'](respondWithResult(_0x156234,null))[_0xaa50('0x4e')](handleError(_0x156234,null));};exports['create']=function(_0x359056,_0x48a2b9){return db[_0xaa50('0x35')][_0xaa50('0x51')](_0x359056[_0xaa50('0x52')],{})[_0xaa50('0x2d')](function(_0x5f0fa1){var _0x59b179=_0x359056[_0xaa50('0x53')][_0xaa50('0x2e')]({'plain':!![]});if(!_0x59b179)throw new Error(_0xaa50('0x54'));if(_0x59b179[_0xaa50('0x55')]===_0xaa50('0x53')){var _0x2c0db8=_0x5f0fa1[_0xaa50('0x2e')]({'plain':!![]});var _0x5da672=_0xaa50('0x2f');return db[_0xaa50('0x56')][_0xaa50('0x57')]({'where':{'name':_0x5da672,'userProfileId':_0x59b179[_0xaa50('0x58')]},'raw':!![]})[_0xaa50('0x2d')](function(_0x37c33a){if(_0x37c33a&&_0x37c33a['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x2c0db8[_0xaa50('0x32')],'resourceId':_0x2c0db8['id'],'type':_0x37c33a[_0xaa50('0x32')],'sectionId':_0x37c33a['id']},{})[_0xaa50('0x2d')](function(){return _0x5f0fa1;});}else{return _0x5f0fa1;}})[_0xaa50('0x4e')](function(_0x2daa74){logger[_0xaa50('0x59')](_0xaa50('0x5a'),_0x2daa74);throw _0x2daa74;});}return _0x5f0fa1;})[_0xaa50('0x2d')](respondWithResult(_0x48a2b9,0xc9))[_0xaa50('0x4e')](handleError(_0x48a2b9,null));};exports[_0xaa50('0x5b')]=function(_0x310d11,_0xfc857d){var _0x5edfb8={'where':{'id':_0x310d11[_0xaa50('0x4f')]['id']}},_0x59c62d={};_0x59c62d[_0xaa50('0x3a')]=_['keys'](db[_0xaa50('0x35')]['rawAttributes']);_0x5edfb8[_0xaa50('0x3e')]=_[_0xaa50('0x3d')](_0x59c62d[_0xaa50('0x3a')],qs[_0xaa50('0x3f')](_0x310d11[_0xaa50('0x3b')][_0xaa50('0x3f')]));_0x5edfb8['attributes']=_0x5edfb8[_0xaa50('0x3e')][_0xaa50('0x50')]?_0x5edfb8[_0xaa50('0x3e')]:_0x59c62d[_0xaa50('0x3a')];if(_0x310d11['query']['includeAll']){_0x5edfb8[_0xaa50('0x4b')]=[{'all':!![]}];}_0x5edfb8=_['merge']({},_0x5edfb8,_0x310d11['options']);return db[_0xaa50('0x35')]['find'](_0x5edfb8)[_0xaa50('0x2d')](handleEntityNotFound(_0xfc857d,null))[_0xaa50('0x2d')](function(_0x584260){if(_0x584260){var _0x4abc58=_0x584260[_0xaa50('0x2e')]({'plain':!![]});_0x4abc58=qs['omit'](_0x4abc58,['id',_0xaa50('0x5c'),'updatedAt']);_0x310d11[_0xaa50('0x52')]=_[_0xaa50('0x5d')](_0x310d11['body'],['id','createdAt',_0xaa50('0x5e')]);return db[_0xaa50('0x35')]['create'](_[_0xaa50('0x46')](_0x4abc58,_0x310d11['body']),{'include':_0x310d11['query'][_0xaa50('0x4a')]?[{'all':!![]}]:undefined})[_0xaa50('0x2d')](function(_0x2fe98f){var _0x53b559=_0x310d11['user'][_0xaa50('0x2e')]({'plain':!![]});if(!_0x53b559)throw new Error(_0xaa50('0x54'));if(_0x53b559[_0xaa50('0x55')]===_0xaa50('0x53')){var _0x3cf7b5=_0x2fe98f[_0xaa50('0x2e')]({'plain':!![]});var _0x2869c0=_0xaa50('0x2f');return db[_0xaa50('0x56')][_0xaa50('0x57')]({'where':{'name':_0x2869c0,'userProfileId':_0x53b559[_0xaa50('0x58')]},'raw':!![]})[_0xaa50('0x2d')](function(_0x54bc4c){if(_0x54bc4c&&_0x54bc4c[_0xaa50('0x5f')]===0x0){return db[_0xaa50('0x30')][_0xaa50('0x51')]({'name':_0x3cf7b5[_0xaa50('0x32')],'resourceId':_0x3cf7b5['id'],'type':_0x54bc4c[_0xaa50('0x32')],'sectionId':_0x54bc4c['id']},{})['then'](function(){return _0x2fe98f;});}else{return _0x2fe98f;}})[_0xaa50('0x4e')](function(_0x11a4d8){logger[_0xaa50('0x59')](_0xaa50('0x5a'),_0x11a4d8);throw _0x11a4d8;});}return _0x2fe98f;});}})[_0xaa50('0x2d')](respondWithResult(_0xfc857d,0xc9))['catch'](handleError(_0xfc857d,null));};exports[_0xaa50('0x60')]=function(_0x290ee4,_0x14b8a3){if(_0x290ee4[_0xaa50('0x52')]['id']){delete _0x290ee4['body']['id'];}return db[_0xaa50('0x35')][_0xaa50('0x57')]({'where':{'id':_0x290ee4[_0xaa50('0x4f')]['id']}})[_0xaa50('0x2d')](handleEntityNotFound(_0x14b8a3,null))[_0xaa50('0x2d')](saveUpdates(_0x290ee4[_0xaa50('0x52')],null))['then'](respondWithResult(_0x14b8a3,null))[_0xaa50('0x4e')](handleError(_0x14b8a3,null));};exports['destroy']=function(_0x2c6887,_0x457a3d){return db['Dashboard'][_0xaa50('0x57')]({'where':{'id':_0x2c6887[_0xaa50('0x4f')]['id']}})[_0xaa50('0x2d')](handleEntityNotFound(_0x457a3d,null))[_0xaa50('0x2d')](removeEntity(_0x457a3d,null))[_0xaa50('0x4e')](handleError(_0x457a3d,null));};function widgetAttributes(_0x319811){try{switch(_0x319811[_0xaa50('0x38')]){case _0xaa50('0x61'):return[{'name':_0xaa50('0x62'),'value':_0x319811[_0xaa50('0x62')]||(_0x319811[_0xaa50('0x63')]&&_0x319811['attrs'][0x0]?_0x319811['attrs'][0x0][_0xaa50('0x64')]:undefined)||_0xaa50('0x65')}];case _0xaa50('0x66'):return[{'name':'attrPath','value':_0x319811[_0xaa50('0x67')]||(_0x319811[_0xaa50('0x63')]&&_0x319811[_0xaa50('0x63')][0x0]?_0x319811[_0xaa50('0x63')][0x0][_0xaa50('0x64')]:undefined)||''}];case _0xaa50('0x68'):return[{'name':_0xaa50('0x69'),'value':_0x319811[_0xaa50('0x69')]||(_0x319811['attrs']&&_0x319811['attrs'][0x0]?_0x319811['attrs'][0x0][_0xaa50('0x64')]:undefined)||_0xaa50('0x6a')},{'name':_0xaa50('0x6b'),'value':_0x319811[_0xaa50('0x6b')]||(_0x319811[_0xaa50('0x63')]&&_0x319811[_0xaa50('0x63')][0x1]?_0x319811[_0xaa50('0x63')][0x1][_0xaa50('0x64')]:undefined)||_0xaa50('0x6c')},{'name':'attrFontSize','value':_0x319811[_0xaa50('0x6d')]||(_0x319811[_0xaa50('0x63')]&&_0x319811[_0xaa50('0x63')][0x2]?_0x319811['attrs'][0x2][_0xaa50('0x64')]:undefined)||0xc}];case _0xaa50('0x6e'):return[{'name':_0xaa50('0x6f'),'value':_0x319811[_0xaa50('0x6f')]||(_0x319811['attrs']&&_0x319811[_0xaa50('0x63')][0x0]?_0x319811[_0xaa50('0x63')][0x0][_0xaa50('0x64')]:undefined)||_0xaa50('0x70')},{'name':_0xaa50('0x71'),'value':_0x319811[_0xaa50('0x71')]||(_0x319811[_0xaa50('0x63')]&&_0x319811[_0xaa50('0x63')][0x1]?_0x319811['attrs'][0x1]['value']:undefined)||[]},{'name':_0xaa50('0x6d'),'value':_0x319811[_0xaa50('0x6d')]||(_0x319811[_0xaa50('0x63')]&&_0x319811[_0xaa50('0x63')][0x2]?_0x319811[_0xaa50('0x63')][0x2][_0xaa50('0x64')]:undefined)||0x14},{'name':_0xaa50('0x72'),'value':_0x319811['attrChannel']||(_0x319811[_0xaa50('0x63')]&&_0x319811[_0xaa50('0x63')][0x3]?_0x319811[_0xaa50('0x63')][0x3][_0xaa50('0x64')]:undefined)||_0xaa50('0x73')},{'name':_0xaa50('0x74'),'value':_0x319811[_0xaa50('0x74')]||(_0x319811['attrs']&&_0x319811[_0xaa50('0x63')][0x4]?_0x319811[_0xaa50('0x63')][0x4][_0xaa50('0x64')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x319811['attrFaxAccounts']||(_0x319811[_0xaa50('0x63')]&&_0x319811[_0xaa50('0x63')][0x5]?_0x319811[_0xaa50('0x63')][0x5]['value']:undefined)||''},{'name':_0xaa50('0x75'),'value':_0x319811[_0xaa50('0x75')]||(_0x319811['attrs']&&_0x319811[_0xaa50('0x63')][0x6]?_0x319811[_0xaa50('0x63')][0x6]['value']:undefined)||''},{'name':_0xaa50('0x76'),'value':_0x319811[_0xaa50('0x76')]||(_0x319811[_0xaa50('0x63')]&&_0x319811[_0xaa50('0x63')][0x7]?_0x319811['attrs'][0x7][_0xaa50('0x64')]:undefined)||''},{'name':_0xaa50('0x77'),'value':_0x319811['attrWhatsappAccounts']||(_0x319811[_0xaa50('0x63')]&&_0x319811[_0xaa50('0x63')][0x8]?_0x319811[_0xaa50('0x63')][0x8][_0xaa50('0x64')]:undefined)||''},{'name':'attrChatWebsites','value':_0x319811[_0xaa50('0x78')]||(_0x319811['attrs']&&_0x319811[_0xaa50('0x63')][0x9]?_0x319811[_0xaa50('0x63')][0x9]['value']:undefined)||''}];case _0xaa50('0x79'):case _0xaa50('0x7a'):return[{'name':_0xaa50('0x7b'),'value':_0x319811['attrSerie1']||(_0x319811[_0xaa50('0x63')]&&_0x319811['attrs'][0x0]?_0x319811['attrs'][0x0][_0xaa50('0x64')]:undefined)||'total'},{'name':'attrSerie2','value':_0x319811[_0xaa50('0x7c')]||(_0x319811[_0xaa50('0x63')]&&_0x319811['attrs'][0x1]?_0x319811[_0xaa50('0x63')][0x1][_0xaa50('0x64')]:undefined)||null},{'name':_0xaa50('0x7d'),'value':_0x319811[_0xaa50('0x7d')]||(_0x319811[_0xaa50('0x63')]&&_0x319811[_0xaa50('0x63')][0x2]?_0x319811[_0xaa50('0x63')][0x2][_0xaa50('0x64')]:undefined)||null},{'name':_0xaa50('0x71'),'value':_0x319811['attrVoiceQueues']||(_0x319811['attrs']&&_0x319811['attrs'][0x3]?_0x319811[_0xaa50('0x63')][0x3]['value']:undefined)||[]},{'name':_0xaa50('0x72'),'value':_0x319811['attrChannel']||(_0x319811[_0xaa50('0x63')]&&_0x319811[_0xaa50('0x63')][0x4]?_0x319811['attrs'][0x4][_0xaa50('0x64')]:undefined)||_0xaa50('0x73')},{'name':_0xaa50('0x74'),'value':_0x319811[_0xaa50('0x74')]||(_0x319811[_0xaa50('0x63')]&&_0x319811['attrs'][0x5]?_0x319811['attrs'][0x5][_0xaa50('0x64')]:undefined)||''},{'name':_0xaa50('0x7e'),'value':_0x319811[_0xaa50('0x7e')]||(_0x319811[_0xaa50('0x63')]&&_0x319811[_0xaa50('0x63')][0x6]?_0x319811[_0xaa50('0x63')][0x6][_0xaa50('0x64')]:undefined)||''},{'name':_0xaa50('0x75'),'value':_0x319811[_0xaa50('0x75')]||(_0x319811[_0xaa50('0x63')]&&_0x319811[_0xaa50('0x63')][0x7]?_0x319811['attrs'][0x7][_0xaa50('0x64')]:undefined)||''},{'name':_0xaa50('0x76'),'value':_0x319811[_0xaa50('0x76')]||(_0x319811[_0xaa50('0x63')]&&_0x319811['attrs'][0x8]?_0x319811[_0xaa50('0x63')][0x8][_0xaa50('0x64')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x319811[_0xaa50('0x77')]||(_0x319811[_0xaa50('0x63')]&&_0x319811[_0xaa50('0x63')][0x9]?_0x319811['attrs'][0x9][_0xaa50('0x64')]:undefined)||''},{'name':_0xaa50('0x78'),'value':_0x319811[_0xaa50('0x78')]||(_0x319811[_0xaa50('0x63')]&&_0x319811['attrs'][0xa]?_0x319811[_0xaa50('0x63')][0xa][_0xaa50('0x64')]:undefined)||''}];case _0xaa50('0x7f'):return[{'name':'attrReport','type':_0x319811[_0xaa50('0x80')]||(_0x319811[_0xaa50('0x63')]&&_0x319811[_0xaa50('0x63')][0x0]?_0x319811[_0xaa50('0x63')][0x0][_0xaa50('0x38')]:undefined)||null,'value':_0x319811[_0xaa50('0x81')]||(_0x319811[_0xaa50('0x63')]&&_0x319811[_0xaa50('0x63')][0x0]?_0x319811[_0xaa50('0x63')][0x0][_0xaa50('0x64')]:undefined)||null},{'name':_0xaa50('0x82'),'value':_0x319811[_0xaa50('0x82')]||(_0x319811['attrs']&&_0x319811[_0xaa50('0x63')][0x1]?_0x319811[_0xaa50('0x63')][0x1][_0xaa50('0x64')]:undefined)||0x0}];default:return[];}}catch(_0x2457f5){logger['error'](_0xaa50('0x83'),JSON['stringify'](_0x2457f5));return[];}}exports['addItem']=function(_0x1274d2,_0x3c5877,_0x17aa35){if(_0x1274d2[_0xaa50('0x52')]['id']){delete _0x1274d2[_0xaa50('0x52')]['id'];}return db[_0xaa50('0x35')]['find']({'where':{'id':_0x1274d2[_0xaa50('0x4f')]['id']}})[_0xaa50('0x2d')](handleEntityNotFound(_0x3c5877,null))[_0xaa50('0x2d')](function(_0x5538f0){if(_0x5538f0){_0x1274d2[_0xaa50('0x52')][_0xaa50('0x84')]=_0x5538f0['id'];_0x1274d2[_0xaa50('0x52')][_0xaa50('0x63')]=widgetAttributes(_0x1274d2[_0xaa50('0x52')]);return db[_0xaa50('0x85')]['create'](_0x1274d2[_0xaa50('0x52')]);}})[_0xaa50('0x2d')](respondWithResult(_0x3c5877,null))[_0xaa50('0x4e')](handleError(_0x3c5877,null));};exports[_0xaa50('0x86')]=function(_0x21cd06,_0x270ddb,_0x51c676){var _0x4407a6={};var _0x1313f7={};var _0xbe23d0;var _0x584f67;return db[_0xaa50('0x35')]['findOne']({'where':{'id':_0x21cd06[_0xaa50('0x4f')]['id']}})[_0xaa50('0x2d')](handleEntityNotFound(_0x270ddb,null))[_0xaa50('0x2d')](function(_0x34542d){if(_0x34542d){_0xbe23d0=_0x34542d;_0x1313f7[_0xaa50('0x3a')]=_[_0xaa50('0x3c')](db[_0xaa50('0x85')][_0xaa50('0x36')]);_0x1313f7[_0xaa50('0x3b')]=_[_0xaa50('0x3c')](_0x21cd06[_0xaa50('0x3b')]);_0x1313f7['filters']=_[_0xaa50('0x3d')](_0x1313f7[_0xaa50('0x3a')],_0x1313f7[_0xaa50('0x3b')]);_0x4407a6[_0xaa50('0x3e')]=_[_0xaa50('0x3d')](_0x1313f7[_0xaa50('0x3a')],qs[_0xaa50('0x3f')](_0x21cd06[_0xaa50('0x3b')][_0xaa50('0x3f')]));_0x4407a6['attributes']=_0x4407a6['attributes'][_0xaa50('0x50')]?_0x4407a6[_0xaa50('0x3e')]:_0x1313f7[_0xaa50('0x3a')];_0x4407a6[_0xaa50('0x42')]=qs[_0xaa50('0x43')](_0x21cd06['query'][_0xaa50('0x43')]);_0x4407a6[_0xaa50('0x47')]=qs[_0xaa50('0x44')](_[_0xaa50('0x87')](_0x21cd06[_0xaa50('0x3b')],_0x1313f7[_0xaa50('0x44')]));if(_0x21cd06[_0xaa50('0x3b')]['filter']){_0x4407a6['where']=_[_0xaa50('0x46')](_0x4407a6[_0xaa50('0x47')],{'$or':_[_0xaa50('0x34')](_0x4407a6['attributes'],function(_0x56b4ef){var _0x4a11b8={};_0x4a11b8[_0x56b4ef]={'$like':'%'+_0x21cd06[_0xaa50('0x3b')][_0xaa50('0x45')]+'%'};return _0x4a11b8;})});}_0x4407a6=_[_0xaa50('0x46')]({},_0x4407a6,_0x21cd06[_0xaa50('0x49')]);return _0xbe23d0[_0xaa50('0x86')](_0x4407a6);}})['then'](function(_0x3cfbe4){if(_0x3cfbe4){_0x584f67=_0x3cfbe4[_0xaa50('0x50')];if(!_0x21cd06['query'][_0xaa50('0x40')](_0xaa50('0x41'))){_0x4407a6[_0xaa50('0x26')]=qs[_0xaa50('0x26')](_0x21cd06[_0xaa50('0x3b')]['limit']);_0x4407a6[_0xaa50('0x23')]=qs[_0xaa50('0x23')](_0x21cd06['query'][_0xaa50('0x23')]);}return _0xbe23d0[_0xaa50('0x86')](_0x4407a6);}})[_0xaa50('0x2d')](function(_0x19e135){if(_0x19e135){return _0x19e135?{'count':_0x584f67,'rows':_0x19e135}:null;}})['then'](respondWithResult(_0x270ddb,null))[_0xaa50('0x4e')](handleError(_0x270ddb,null));};
\ No newline at end of file
+var _0x068d=['update','then','destroy','get','CustomDashboards','end','sendStatus','name','map','fieldName','key','model','query','keys','filters','intersection','attributes','fields','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','Dashboard','includeAll','include','findAll','rows','catch','show','params','length','find','create','body','user','userProfileId','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','createdAt','updatedAt','omit','role','autoAssociation','type','attrs','value','https://','custom','attrPath','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','attrEmailAccounts','attrFaxAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','multibar-chart','attrSerie1','attrSerie2','voice','attrSmsAccounts','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','addItem','DashboardId','DashboardItem','getItems','findOne','rawAttributes','hasOwnProperty','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./dashboard.socket','register','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x068d,0x157));var _0xd068=function(_0x3ae0d0,_0xe5c56d){_0x3ae0d0=_0x3ae0d0-0x0;var _0x2eaf1c=_0x068d[_0x3ae0d0];return _0x2eaf1c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xd068('0x0'));var zipdir=require(_0xd068('0x1'));var jsonpatch=require(_0xd068('0x2'));var rp=require('request-promise');var moment=require(_0xd068('0x3'));var BPromise=require(_0xd068('0x4'));var Mustache=require(_0xd068('0x5'));var util=require(_0xd068('0x6'));var path=require(_0xd068('0x7'));var sox=require(_0xd068('0x8'));var csv=require(_0xd068('0x9'));var ejs=require(_0xd068('0xa'));var fs=require('fs');var fs_extra=require(_0xd068('0xb'));var _=require('lodash');var squel=require(_0xd068('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xd068('0xd'));var toCsv=require(_0xd068('0x9'));var querystring=require('querystring');var Papa=require(_0xd068('0xe'));var Redis=require(_0xd068('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xd068('0x10'));var as=require(_0xd068('0x11'));var hardwareService=require(_0xd068('0x12'));var logger=require(_0xd068('0x13'))(_0xd068('0x14'));var utils=require(_0xd068('0x15'));var config=require(_0xd068('0x16'));var licenseUtil=require(_0xd068('0x17'));var db=require(_0xd068('0x18'))['db'];config[_0xd068('0x19')]=_[_0xd068('0x1a')](config[_0xd068('0x19')],{'host':'localhost','port':0x18eb});var socket=require(_0xd068('0x1b'))(new Redis(config[_0xd068('0x19')]));require(_0xd068('0x1c'))[_0xd068('0x1d')](socket);function respondWithStatusCode(_0x29665a,_0x4b00e8){_0x4b00e8=_0x4b00e8||0xcc;return function(_0x32c8ed){if(_0x32c8ed){return _0x29665a['sendStatus'](_0x4b00e8);}return _0x29665a[_0xd068('0x1e')](_0x4b00e8)['end']();};}function respondWithResult(_0x33a395,_0x1d9a61){_0x1d9a61=_0x1d9a61||0xc8;return function(_0x25d5f5){if(_0x25d5f5){return _0x33a395[_0xd068('0x1e')](_0x1d9a61)[_0xd068('0x1f')](_0x25d5f5);}};}function respondWithFilteredResult(_0x159c06,_0x166138){return function(_0x144dc3){if(_0x144dc3){var _0x10061a=typeof _0x166138[_0xd068('0x20')]===_0xd068('0x21')&&typeof _0x166138['limit']===_0xd068('0x21');var _0x5a9eea=_0x144dc3['count'];var _0x41521d=_0x10061a?0x0:_0x166138[_0xd068('0x20')];var _0x5b09c9=_0x10061a?_0x144dc3[_0xd068('0x22')]:_0x166138['offset']+_0x166138[_0xd068('0x23')];var _0x17d844;if(_0x5b09c9>=_0x5a9eea){_0x5b09c9=_0x5a9eea;_0x17d844=0xc8;}else{_0x17d844=0xce;}_0x159c06[_0xd068('0x1e')](_0x17d844);return _0x159c06[_0xd068('0x24')](_0xd068('0x25'),_0x41521d+'-'+_0x5b09c9+'/'+_0x5a9eea)[_0xd068('0x1f')](_0x144dc3);}return null;};}function patchUpdates(_0x3543e2){return function(_0x472b21){try{jsonpatch[_0xd068('0x26')](_0x472b21,_0x3543e2,!![]);}catch(_0x1cebfb){return BPromise[_0xd068('0x27')](_0x1cebfb);}return _0x472b21[_0xd068('0x28')]();};}function saveUpdates(_0x3a89af,_0x4a4a7f){return function(_0x1e8616){if(_0x1e8616){return _0x1e8616[_0xd068('0x29')](_0x3a89af)[_0xd068('0x2a')](function(_0x298a90){return _0x298a90;});}return null;};}function removeEntity(_0x45d5ca,_0x18b91e){return function(_0x4f4e4e){if(_0x4f4e4e){return _0x4f4e4e[_0xd068('0x2b')]()[_0xd068('0x2a')](function(){var _0x2e70de=_0x4f4e4e[_0xd068('0x2c')]({'plain':!![]});var _0x168c59=_0xd068('0x2d');return db['UserProfileResource']['destroy']({'where':{'type':_0x168c59,'resourceId':_0x2e70de['id']}})[_0xd068('0x2a')](function(){return _0x4f4e4e;});})[_0xd068('0x2a')](function(){_0x45d5ca['status'](0xcc)[_0xd068('0x2e')]();});}};}function handleEntityNotFound(_0x185933,_0x45de25){return function(_0x32d1a3){if(!_0x32d1a3){_0x185933[_0xd068('0x2f')](0x194);}return _0x32d1a3;};}function handleError(_0x42536e,_0x2749e0){_0x2749e0=_0x2749e0||0x1f4;return function(_0x163bcb){logger['error'](_0x163bcb['stack']);if(_0x163bcb[_0xd068('0x30')]){delete _0x163bcb[_0xd068('0x30')];}_0x42536e[_0xd068('0x1e')](_0x2749e0)['send'](_0x163bcb);};}exports['index']=function(_0x5aa7d6,_0x3e1005){var _0x3ccb98={},_0x56ef6c={},_0x4b8a2b={'count':0x0,'rows':[]};var _0x2a3980=_[_0xd068('0x31')](db['Dashboard']['rawAttributes'],function(_0x3b54ab){return{'name':_0x3b54ab[_0xd068('0x32')],'type':_0x3b54ab['type'][_0xd068('0x33')]};});_0x56ef6c[_0xd068('0x34')]=_[_0xd068('0x31')](_0x2a3980,_0xd068('0x30'));_0x56ef6c[_0xd068('0x35')]=_[_0xd068('0x36')](_0x5aa7d6[_0xd068('0x35')]);_0x56ef6c[_0xd068('0x37')]=_[_0xd068('0x38')](_0x56ef6c['model'],_0x56ef6c[_0xd068('0x35')]);_0x3ccb98[_0xd068('0x39')]=_['intersection'](_0x56ef6c[_0xd068('0x34')],qs[_0xd068('0x3a')](_0x5aa7d6[_0xd068('0x35')][_0xd068('0x3a')]));_0x3ccb98[_0xd068('0x39')]=_0x3ccb98[_0xd068('0x39')]['length']?_0x3ccb98[_0xd068('0x39')]:_0x56ef6c[_0xd068('0x34')];if(!_0x5aa7d6[_0xd068('0x35')]['hasOwnProperty'](_0xd068('0x3b'))){_0x3ccb98[_0xd068('0x23')]=qs[_0xd068('0x23')](_0x5aa7d6[_0xd068('0x35')][_0xd068('0x23')]);_0x3ccb98['offset']=qs[_0xd068('0x20')](_0x5aa7d6['query']['offset']);}_0x3ccb98[_0xd068('0x3c')]=qs[_0xd068('0x3d')](_0x5aa7d6[_0xd068('0x35')]['sort']);_0x3ccb98[_0xd068('0x3e')]=qs[_0xd068('0x37')](_[_0xd068('0x3f')](_0x5aa7d6[_0xd068('0x35')],_0x56ef6c[_0xd068('0x37')]),_0x2a3980);if(_0x5aa7d6[_0xd068('0x35')][_0xd068('0x40')]){_0x3ccb98[_0xd068('0x3e')]=_['merge'](_0x3ccb98[_0xd068('0x3e')],{'$or':_['map'](_0x2a3980,function(_0x4c1356){if(_0x4c1356['type']!==_0xd068('0x41')){var _0x4dc30a={};_0x4dc30a[_0x4c1356[_0xd068('0x30')]]={'$like':'%'+_0x5aa7d6[_0xd068('0x35')][_0xd068('0x40')]+'%'};return _0x4dc30a;}})});}_0x3ccb98=_[_0xd068('0x42')]({},_0x3ccb98,_0x5aa7d6[_0xd068('0x43')]);var _0x247685={'where':_0x3ccb98[_0xd068('0x3e')]};return db[_0xd068('0x44')][_0xd068('0x22')](_0x247685)[_0xd068('0x2a')](function(_0x55a435){_0x4b8a2b[_0xd068('0x22')]=_0x55a435;if(_0x5aa7d6[_0xd068('0x35')][_0xd068('0x45')]){_0x3ccb98[_0xd068('0x46')]=[{'all':!![]}];}return db[_0xd068('0x44')][_0xd068('0x47')](_0x3ccb98);})[_0xd068('0x2a')](function(_0x305081){_0x4b8a2b[_0xd068('0x48')]=_0x305081;return _0x4b8a2b;})[_0xd068('0x2a')](respondWithFilteredResult(_0x3e1005,_0x3ccb98))[_0xd068('0x49')](handleError(_0x3e1005,null));};exports[_0xd068('0x4a')]=function(_0x1c27a7,_0x23385b){var _0x57abf1={'raw':![],'where':{'id':_0x1c27a7[_0xd068('0x4b')]['id']}},_0x33fcaf={};_0x33fcaf['model']=_['keys'](db[_0xd068('0x44')]['rawAttributes']);_0x33fcaf[_0xd068('0x35')]=_[_0xd068('0x36')](_0x1c27a7[_0xd068('0x35')]);_0x33fcaf[_0xd068('0x37')]=_[_0xd068('0x38')](_0x33fcaf[_0xd068('0x34')],_0x33fcaf[_0xd068('0x35')]);_0x57abf1['attributes']=_[_0xd068('0x38')](_0x33fcaf[_0xd068('0x34')],qs[_0xd068('0x3a')](_0x1c27a7[_0xd068('0x35')][_0xd068('0x3a')]));_0x57abf1[_0xd068('0x39')]=_0x57abf1[_0xd068('0x39')][_0xd068('0x4c')]?_0x57abf1['attributes']:_0x33fcaf['model'];if(_0x1c27a7[_0xd068('0x35')][_0xd068('0x45')]){_0x57abf1['include']=[{'all':!![]}];}_0x57abf1=_[_0xd068('0x42')]({},_0x57abf1,_0x1c27a7[_0xd068('0x43')]);return db[_0xd068('0x44')][_0xd068('0x4d')](_0x57abf1)[_0xd068('0x2a')](handleEntityNotFound(_0x23385b,null))['then'](respondWithResult(_0x23385b,null))['catch'](handleError(_0x23385b,null));};exports[_0xd068('0x4e')]=function(_0x51c07b,_0x10246c){return db[_0xd068('0x44')]['create'](_0x51c07b[_0xd068('0x4f')],{})['then'](function(_0x164c69){var _0x2fd929=_0x51c07b[_0xd068('0x50')][_0xd068('0x2c')]({'plain':!![]});if(!_0x2fd929)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2fd929['role']===_0xd068('0x50')){var _0x1dd309=_0x164c69[_0xd068('0x2c')]({'plain':!![]});var _0x53a9f9=_0xd068('0x2d');return db['UserProfileSection'][_0xd068('0x4d')]({'where':{'name':_0x53a9f9,'userProfileId':_0x2fd929[_0xd068('0x51')]},'raw':!![]})['then'](function(_0x168480){if(_0x168480&&_0x168480['autoAssociation']===0x0){return db[_0xd068('0x52')][_0xd068('0x4e')]({'name':_0x1dd309[_0xd068('0x30')],'resourceId':_0x1dd309['id'],'type':_0x168480[_0xd068('0x30')],'sectionId':_0x168480['id']},{})['then'](function(){return _0x164c69;});}else{return _0x164c69;}})[_0xd068('0x49')](function(_0x3422a1){logger[_0xd068('0x53')](_0xd068('0x54'),_0x3422a1);throw _0x3422a1;});}return _0x164c69;})[_0xd068('0x2a')](respondWithResult(_0x10246c,0xc9))[_0xd068('0x49')](handleError(_0x10246c,null));};exports[_0xd068('0x55')]=function(_0x217e8a,_0x29da6e){var _0x4af6fc={'where':{'id':_0x217e8a[_0xd068('0x4b')]['id']}},_0x1cd315={};_0x1cd315[_0xd068('0x34')]=_[_0xd068('0x36')](db[_0xd068('0x44')]['rawAttributes']);_0x4af6fc[_0xd068('0x39')]=_[_0xd068('0x38')](_0x1cd315[_0xd068('0x34')],qs[_0xd068('0x3a')](_0x217e8a[_0xd068('0x35')][_0xd068('0x3a')]));_0x4af6fc[_0xd068('0x39')]=_0x4af6fc[_0xd068('0x39')][_0xd068('0x4c')]?_0x4af6fc[_0xd068('0x39')]:_0x1cd315[_0xd068('0x34')];if(_0x217e8a[_0xd068('0x35')]['includeAll']){_0x4af6fc[_0xd068('0x46')]=[{'all':!![]}];}_0x4af6fc=_[_0xd068('0x42')]({},_0x4af6fc,_0x217e8a['options']);return db[_0xd068('0x44')]['find'](_0x4af6fc)[_0xd068('0x2a')](handleEntityNotFound(_0x29da6e,null))[_0xd068('0x2a')](function(_0xbc7a47){if(_0xbc7a47){var _0xcffa9b=_0xbc7a47[_0xd068('0x2c')]({'plain':!![]});_0xcffa9b=qs['omit'](_0xcffa9b,['id',_0xd068('0x56'),_0xd068('0x57')]);_0x217e8a[_0xd068('0x4f')]=_[_0xd068('0x58')](_0x217e8a[_0xd068('0x4f')],['id',_0xd068('0x56'),_0xd068('0x57')]);return db[_0xd068('0x44')][_0xd068('0x4e')](_[_0xd068('0x42')](_0xcffa9b,_0x217e8a[_0xd068('0x4f')]),{'include':_0x217e8a[_0xd068('0x35')][_0xd068('0x45')]?[{'all':!![]}]:undefined})[_0xd068('0x2a')](function(_0x389f32){var _0x29cd6e=_0x217e8a[_0xd068('0x50')][_0xd068('0x2c')]({'plain':!![]});if(!_0x29cd6e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x29cd6e[_0xd068('0x59')]===_0xd068('0x50')){var _0x3bb653=_0x389f32[_0xd068('0x2c')]({'plain':!![]});var _0x1e6958='CustomDashboards';return db['UserProfileSection'][_0xd068('0x4d')]({'where':{'name':_0x1e6958,'userProfileId':_0x29cd6e[_0xd068('0x51')]},'raw':!![]})['then'](function(_0x457303){if(_0x457303&&_0x457303[_0xd068('0x5a')]===0x0){return db['UserProfileResource'][_0xd068('0x4e')]({'name':_0x3bb653[_0xd068('0x30')],'resourceId':_0x3bb653['id'],'type':_0x457303['name'],'sectionId':_0x457303['id']},{})['then'](function(){return _0x389f32;});}else{return _0x389f32;}})[_0xd068('0x49')](function(_0x35f41c){logger['error'](_0xd068('0x54'),_0x35f41c);throw _0x35f41c;});}return _0x389f32;});}})['then'](respondWithResult(_0x29da6e,0xc9))[_0xd068('0x49')](handleError(_0x29da6e,null));};exports[_0xd068('0x29')]=function(_0x2f23c1,_0x3a640e){if(_0x2f23c1['body']['id']){delete _0x2f23c1[_0xd068('0x4f')]['id'];}return db[_0xd068('0x44')][_0xd068('0x4d')]({'where':{'id':_0x2f23c1[_0xd068('0x4b')]['id']}})[_0xd068('0x2a')](handleEntityNotFound(_0x3a640e,null))[_0xd068('0x2a')](saveUpdates(_0x2f23c1['body'],null))[_0xd068('0x2a')](respondWithResult(_0x3a640e,null))[_0xd068('0x49')](handleError(_0x3a640e,null));};exports[_0xd068('0x2b')]=function(_0x426e0f,_0x1910f5){return db['Dashboard'][_0xd068('0x4d')]({'where':{'id':_0x426e0f[_0xd068('0x4b')]['id']}})[_0xd068('0x2a')](handleEntityNotFound(_0x1910f5,null))[_0xd068('0x2a')](removeEntity(_0x1910f5,null))['catch'](handleError(_0x1910f5,null));};function widgetAttributes(_0x655ec4){try{switch(_0x655ec4[_0xd068('0x5b')]){case'iframe':return[{'name':'attrUrl','value':_0x655ec4['attrUrl']||(_0x655ec4[_0xd068('0x5c')]&&_0x655ec4[_0xd068('0x5c')][0x0]?_0x655ec4[_0xd068('0x5c')][0x0][_0xd068('0x5d')]:undefined)||_0xd068('0x5e')}];case _0xd068('0x5f'):return[{'name':_0xd068('0x60'),'value':_0x655ec4[_0xd068('0x60')]||(_0x655ec4[_0xd068('0x5c')]&&_0x655ec4[_0xd068('0x5c')][0x0]?_0x655ec4['attrs'][0x0][_0xd068('0x5d')]:undefined)||''}];case'clock':return[{'name':_0xd068('0x61'),'value':_0x655ec4['attrHourFormat']||(_0x655ec4[_0xd068('0x5c')]&&_0x655ec4[_0xd068('0x5c')][0x0]?_0x655ec4[_0xd068('0x5c')][0x0][_0xd068('0x5d')]:undefined)||_0xd068('0x62')},{'name':_0xd068('0x63'),'value':_0x655ec4['attrTimezone']||(_0x655ec4[_0xd068('0x5c')]&&_0x655ec4[_0xd068('0x5c')][0x1]?_0x655ec4[_0xd068('0x5c')][0x1][_0xd068('0x5d')]:undefined)||_0xd068('0x64')},{'name':'attrFontSize','value':_0x655ec4[_0xd068('0x65')]||(_0x655ec4['attrs']&&_0x655ec4['attrs'][0x2]?_0x655ec4[_0xd068('0x5c')][0x2][_0xd068('0x5d')]:undefined)||0xc}];case _0xd068('0x66'):return[{'name':_0xd068('0x67'),'value':_0x655ec4[_0xd068('0x67')]||(_0x655ec4[_0xd068('0x5c')]&&_0x655ec4[_0xd068('0x5c')][0x0]?_0x655ec4['attrs'][0x0][_0xd068('0x5d')]:undefined)||_0xd068('0x68')},{'name':_0xd068('0x69'),'value':_0x655ec4[_0xd068('0x69')]||(_0x655ec4['attrs']&&_0x655ec4[_0xd068('0x5c')][0x1]?_0x655ec4[_0xd068('0x5c')][0x1][_0xd068('0x5d')]:undefined)||[]},{'name':_0xd068('0x65'),'value':_0x655ec4[_0xd068('0x65')]||(_0x655ec4['attrs']&&_0x655ec4[_0xd068('0x5c')][0x2]?_0x655ec4[_0xd068('0x5c')][0x2][_0xd068('0x5d')]:undefined)||0x14},{'name':_0xd068('0x6a'),'value':_0x655ec4[_0xd068('0x6a')]||(_0x655ec4['attrs']&&_0x655ec4['attrs'][0x3]?_0x655ec4[_0xd068('0x5c')][0x3][_0xd068('0x5d')]:undefined)||'voice'},{'name':'attrEmailAccounts','value':_0x655ec4[_0xd068('0x6b')]||(_0x655ec4[_0xd068('0x5c')]&&_0x655ec4[_0xd068('0x5c')][0x4]?_0x655ec4[_0xd068('0x5c')][0x4]['value']:undefined)||''},{'name':_0xd068('0x6c'),'value':_0x655ec4[_0xd068('0x6c')]||(_0x655ec4[_0xd068('0x5c')]&&_0x655ec4[_0xd068('0x5c')][0x5]?_0x655ec4[_0xd068('0x5c')][0x5]['value']:undefined)||''},{'name':'attrSmsAccounts','value':_0x655ec4['attrSmsAccounts']||(_0x655ec4[_0xd068('0x5c')]&&_0x655ec4[_0xd068('0x5c')][0x6]?_0x655ec4['attrs'][0x6][_0xd068('0x5d')]:undefined)||''},{'name':_0xd068('0x6d'),'value':_0x655ec4[_0xd068('0x6d')]||(_0x655ec4['attrs']&&_0x655ec4[_0xd068('0x5c')][0x7]?_0x655ec4[_0xd068('0x5c')][0x7][_0xd068('0x5d')]:undefined)||''},{'name':_0xd068('0x6e'),'value':_0x655ec4[_0xd068('0x6e')]||(_0x655ec4[_0xd068('0x5c')]&&_0x655ec4[_0xd068('0x5c')][0x8]?_0x655ec4[_0xd068('0x5c')][0x8]['value']:undefined)||''},{'name':_0xd068('0x6f'),'value':_0x655ec4[_0xd068('0x6f')]||(_0x655ec4[_0xd068('0x5c')]&&_0x655ec4[_0xd068('0x5c')][0x9]?_0x655ec4[_0xd068('0x5c')][0x9]['value']:undefined)||''}];case _0xd068('0x70'):case'pie-chart':return[{'name':_0xd068('0x71'),'value':_0x655ec4['attrSerie1']||(_0x655ec4[_0xd068('0x5c')]&&_0x655ec4[_0xd068('0x5c')][0x0]?_0x655ec4[_0xd068('0x5c')][0x0][_0xd068('0x5d')]:undefined)||_0xd068('0x68')},{'name':_0xd068('0x72'),'value':_0x655ec4['attrSerie2']||(_0x655ec4[_0xd068('0x5c')]&&_0x655ec4[_0xd068('0x5c')][0x1]?_0x655ec4['attrs'][0x1][_0xd068('0x5d')]:undefined)||null},{'name':'attrSerie3','value':_0x655ec4['attrSerie3']||(_0x655ec4['attrs']&&_0x655ec4['attrs'][0x2]?_0x655ec4[_0xd068('0x5c')][0x2][_0xd068('0x5d')]:undefined)||null},{'name':_0xd068('0x69'),'value':_0x655ec4[_0xd068('0x69')]||(_0x655ec4[_0xd068('0x5c')]&&_0x655ec4[_0xd068('0x5c')][0x3]?_0x655ec4[_0xd068('0x5c')][0x3][_0xd068('0x5d')]:undefined)||[]},{'name':_0xd068('0x6a'),'value':_0x655ec4['attrChannel']||(_0x655ec4[_0xd068('0x5c')]&&_0x655ec4['attrs'][0x4]?_0x655ec4[_0xd068('0x5c')][0x4][_0xd068('0x5d')]:undefined)||_0xd068('0x73')},{'name':_0xd068('0x6b'),'value':_0x655ec4[_0xd068('0x6b')]||(_0x655ec4[_0xd068('0x5c')]&&_0x655ec4[_0xd068('0x5c')][0x5]?_0x655ec4[_0xd068('0x5c')][0x5][_0xd068('0x5d')]:undefined)||''},{'name':_0xd068('0x6c'),'value':_0x655ec4[_0xd068('0x6c')]||(_0x655ec4['attrs']&&_0x655ec4['attrs'][0x6]?_0x655ec4[_0xd068('0x5c')][0x6]['value']:undefined)||''},{'name':_0xd068('0x74'),'value':_0x655ec4[_0xd068('0x74')]||(_0x655ec4[_0xd068('0x5c')]&&_0x655ec4[_0xd068('0x5c')][0x7]?_0x655ec4[_0xd068('0x5c')][0x7][_0xd068('0x5d')]:undefined)||''},{'name':_0xd068('0x6d'),'value':_0x655ec4[_0xd068('0x6d')]||(_0x655ec4[_0xd068('0x5c')]&&_0x655ec4[_0xd068('0x5c')][0x8]?_0x655ec4['attrs'][0x8]['value']:undefined)||''},{'name':_0xd068('0x6e'),'value':_0x655ec4[_0xd068('0x6e')]||(_0x655ec4[_0xd068('0x5c')]&&_0x655ec4['attrs'][0x9]?_0x655ec4[_0xd068('0x5c')][0x9][_0xd068('0x5d')]:undefined)||''},{'name':'attrChatWebsites','value':_0x655ec4[_0xd068('0x6f')]||(_0x655ec4['attrs']&&_0x655ec4[_0xd068('0x5c')][0xa]?_0x655ec4[_0xd068('0x5c')][0xa][_0xd068('0x5d')]:undefined)||''}];case'web-report':return[{'name':_0xd068('0x75'),'type':_0x655ec4[_0xd068('0x76')]||(_0x655ec4[_0xd068('0x5c')]&&_0x655ec4[_0xd068('0x5c')][0x0]?_0x655ec4['attrs'][0x0]['type']:undefined)||null,'value':_0x655ec4['attrReport']||(_0x655ec4[_0xd068('0x5c')]&&_0x655ec4['attrs'][0x0]?_0x655ec4[_0xd068('0x5c')][0x0][_0xd068('0x5d')]:undefined)||null},{'name':_0xd068('0x77'),'value':_0x655ec4[_0xd068('0x77')]||(_0x655ec4['attrs']&&_0x655ec4[_0xd068('0x5c')][0x1]?_0x655ec4[_0xd068('0x5c')][0x1]['value']:undefined)||0x0}];default:return[];}}catch(_0xe5d9b6){logger[_0xd068('0x53')](_0xd068('0x78'),JSON['stringify'](_0xe5d9b6));return[];}}exports[_0xd068('0x79')]=function(_0x175919,_0x435a07,_0x1edc6e){if(_0x175919[_0xd068('0x4f')]['id']){delete _0x175919[_0xd068('0x4f')]['id'];}return db[_0xd068('0x44')][_0xd068('0x4d')]({'where':{'id':_0x175919[_0xd068('0x4b')]['id']}})[_0xd068('0x2a')](handleEntityNotFound(_0x435a07,null))[_0xd068('0x2a')](function(_0x2c8657){if(_0x2c8657){_0x175919[_0xd068('0x4f')][_0xd068('0x7a')]=_0x2c8657['id'];_0x175919[_0xd068('0x4f')][_0xd068('0x5c')]=widgetAttributes(_0x175919[_0xd068('0x4f')]);return db[_0xd068('0x7b')]['create'](_0x175919[_0xd068('0x4f')]);}})[_0xd068('0x2a')](respondWithResult(_0x435a07,null))[_0xd068('0x49')](handleError(_0x435a07,null));};exports[_0xd068('0x7c')]=function(_0x13d117,_0x530ff2,_0x32de5d){var _0x15b595={};var _0x6d06bb={};var _0x4454ac;var _0x9a9ef0;return db[_0xd068('0x44')][_0xd068('0x7d')]({'where':{'id':_0x13d117[_0xd068('0x4b')]['id']}})[_0xd068('0x2a')](handleEntityNotFound(_0x530ff2,null))[_0xd068('0x2a')](function(_0x1d37da){if(_0x1d37da){_0x4454ac=_0x1d37da;_0x6d06bb[_0xd068('0x34')]=_[_0xd068('0x36')](db[_0xd068('0x7b')][_0xd068('0x7e')]);_0x6d06bb[_0xd068('0x35')]=_[_0xd068('0x36')](_0x13d117[_0xd068('0x35')]);_0x6d06bb[_0xd068('0x37')]=_['intersection'](_0x6d06bb[_0xd068('0x34')],_0x6d06bb[_0xd068('0x35')]);_0x15b595[_0xd068('0x39')]=_[_0xd068('0x38')](_0x6d06bb[_0xd068('0x34')],qs[_0xd068('0x3a')](_0x13d117[_0xd068('0x35')]['fields']));_0x15b595[_0xd068('0x39')]=_0x15b595[_0xd068('0x39')]['length']?_0x15b595[_0xd068('0x39')]:_0x6d06bb['model'];_0x15b595['order']=qs[_0xd068('0x3d')](_0x13d117['query'][_0xd068('0x3d')]);_0x15b595[_0xd068('0x3e')]=qs[_0xd068('0x37')](_['pick'](_0x13d117[_0xd068('0x35')],_0x6d06bb['filters']));if(_0x13d117['query'][_0xd068('0x40')]){_0x15b595[_0xd068('0x3e')]=_[_0xd068('0x42')](_0x15b595[_0xd068('0x3e')],{'$or':_['map'](_0x15b595[_0xd068('0x39')],function(_0x27e688){var _0x22aa22={};_0x22aa22[_0x27e688]={'$like':'%'+_0x13d117[_0xd068('0x35')]['filter']+'%'};return _0x22aa22;})});}_0x15b595=_[_0xd068('0x42')]({},_0x15b595,_0x13d117[_0xd068('0x43')]);return _0x4454ac[_0xd068('0x7c')](_0x15b595);}})[_0xd068('0x2a')](function(_0x26e31f){if(_0x26e31f){_0x9a9ef0=_0x26e31f[_0xd068('0x4c')];if(!_0x13d117['query'][_0xd068('0x7f')](_0xd068('0x3b'))){_0x15b595[_0xd068('0x23')]=qs[_0xd068('0x23')](_0x13d117[_0xd068('0x35')][_0xd068('0x23')]);_0x15b595[_0xd068('0x20')]=qs['offset'](_0x13d117[_0xd068('0x35')][_0xd068('0x20')]);}return _0x4454ac[_0xd068('0x7c')](_0x15b595);}})['then'](function(_0x3d8a9c){if(_0x3d8a9c){return _0x3d8a9c?{'count':_0x9a9ef0,'rows':_0x3d8a9c}:null;}})[_0xd068('0x2a')](respondWithResult(_0x530ff2,null))[_0xd068('0x49')](handleError(_0x530ff2,null));};
\ No newline at end of file
index d0cedda..13d5278 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6949=['Dashboard','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x48f5c4,_0x4af1e9){var _0x155f88=function(_0x152f53){while(--_0x152f53){_0x48f5c4['push'](_0x48f5c4['shift']());}};_0x155f88(++_0x4af1e9);}(_0x6949,0x6f));var _0x9694=function(_0x5ac0f0,_0xee4d98){_0x5ac0f0=_0x5ac0f0-0x0;var _0x4aceec=_0x6949[_0x5ac0f0];return _0x4aceec;};'use strict';var EventEmitter=require(_0x9694('0x0'));var Dashboard=require('../../mysqldb')['db'][_0x9694('0x1')];var DashboardEvents=new EventEmitter();DashboardEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x9694('0x2'),'afterDestroy':_0x9694('0x3')};function emitEvent(_0x1debcf){return function(_0x400ba7,_0x26fa0e,_0xa80112){DashboardEvents[_0x9694('0x4')](_0x1debcf+':'+_0x400ba7['id'],_0x400ba7);DashboardEvents[_0x9694('0x4')](_0x1debcf,_0x400ba7);_0xa80112(null);};}for(var e in events){if(events[_0x9694('0x5')](e)){var event=events[e];Dashboard[_0x9694('0x6')](e,emitEvent(event));}}module[_0x9694('0x7')]=DashboardEvents;
\ No newline at end of file
+var _0xdc68=['save','update','remove','emit','exports','events','../../mysqldb','Dashboard'];(function(_0x4b6418,_0x2a6168){var _0x487696=function(_0x951057){while(--_0x951057){_0x4b6418['push'](_0x4b6418['shift']());}};_0x487696(++_0x2a6168);}(_0xdc68,0x16d));var _0x8dc6=function(_0x5dc62f,_0x47a55d){_0x5dc62f=_0x5dc62f-0x0;var _0xd3f4fa=_0xdc68[_0x5dc62f];return _0xd3f4fa;};'use strict';var EventEmitter=require(_0x8dc6('0x0'));var Dashboard=require(_0x8dc6('0x1'))['db'][_0x8dc6('0x2')];var DashboardEvents=new EventEmitter();DashboardEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8dc6('0x3'),'afterUpdate':_0x8dc6('0x4'),'afterDestroy':_0x8dc6('0x5')};function emitEvent(_0x5a39cd){return function(_0x26e1f5,_0x1f218a,_0x3c33e4){DashboardEvents['emit'](_0x5a39cd+':'+_0x26e1f5['id'],_0x26e1f5);DashboardEvents[_0x8dc6('0x6')](_0x5a39cd,_0x26e1f5);_0x3c33e4(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Dashboard['hook'](e,emitEvent(event));}}module[_0x8dc6('0x7')]=DashboardEvents;
\ No newline at end of file
index e845599..c2d96dd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff1b=['bluebird','path','../../config/environment','exports','define','Dashboard','lodash','util','../../config/logger','api','moment'];(function(_0x2c6be8,_0x57f7b8){var _0x471592=function(_0x294fe8){while(--_0x294fe8){_0x2c6be8['push'](_0x2c6be8['shift']());}};_0x471592(++_0x57f7b8);}(_0xff1b,0x171));var _0xbff1=function(_0x3c9df8,_0x387a5d){_0x3c9df8=_0x3c9df8-0x0;var _0x3c8cd3=_0xff1b[_0x3c9df8];return _0x3c8cd3;};'use strict';var _=require(_0xbff1('0x0'));var util=require(_0xbff1('0x1'));var logger=require(_0xbff1('0x2'))(_0xbff1('0x3'));var moment=require(_0xbff1('0x4'));var BPromise=require(_0xbff1('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbff1('0x6'));var rimraf=require('rimraf');var config=require(_0xbff1('0x7'));var attributes=require('./dashboard.attributes');module[_0xbff1('0x8')]=function(_0x5c7247,_0x579615){return _0x5c7247[_0xbff1('0x9')](_0xbff1('0xa'),attributes,{'tableName':'dashboards','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x75c2=['Dashboard','dashboards','lodash','util','api','moment','bluebird','path','rimraf','../../config/environment','./dashboard.attributes','exports','define'];(function(_0x592d48,_0x23f1ba){var _0x5d789e=function(_0x156900){while(--_0x156900){_0x592d48['push'](_0x592d48['shift']());}};_0x5d789e(++_0x23f1ba);}(_0x75c2,0x1f0));var _0x275c=function(_0x231c71,_0x317418){_0x231c71=_0x231c71-0x0;var _0xd1d313=_0x75c2[_0x231c71];return _0xd1d313;};'use strict';var _=require(_0x275c('0x0'));var util=require(_0x275c('0x1'));var logger=require('../../config/logger')(_0x275c('0x2'));var moment=require(_0x275c('0x3'));var BPromise=require(_0x275c('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x275c('0x5'));var rimraf=require(_0x275c('0x6'));var config=require(_0x275c('0x7'));var attributes=require(_0x275c('0x8'));module[_0x275c('0x9')]=function(_0x1559ee,_0x4ed3e6){return _0x1559ee[_0x275c('0xa')](_0x275c('0xb'),attributes,{'tableName':_0x275c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c8721bc..6c747e0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb936=['../../config/utils','rpc','../../config/environment','client','http','defaults','redis','localhost','./dashboard.socket','then','Dashboard,\x20%s,\x20%s','Dashboard,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb'];(function(_0x261e29,_0x10fffd){var _0x25ef43=function(_0x21b8e7){while(--_0x21b8e7){_0x261e29['push'](_0x261e29['shift']());}};_0x25ef43(++_0x10fffd);}(_0xb936,0x10d));var _0x6b93=function(_0x1034e6,_0x43076a){_0x1034e6=_0x1034e6-0x0;var _0x343c70=_0xb936[_0x1034e6];return _0x343c70;};'use strict';var _=require(_0x6b93('0x0'));var util=require(_0x6b93('0x1'));var moment=require(_0x6b93('0x2'));var BPromise=require(_0x6b93('0x3'));var rs=require(_0x6b93('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6b93('0x5'))['db'];var utils=require(_0x6b93('0x6'));var logger=require('../../config/logger')(_0x6b93('0x7'));var config=require(_0x6b93('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x6b93('0x9')][_0x6b93('0xa')]({'port':0x232a});config['redis']=_[_0x6b93('0xb')](config[_0x6b93('0xc')],{'host':_0x6b93('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6b93('0xc')]));require(_0x6b93('0xe'))['register'](socket);function respondWithRpcPromise(_0x138cc0,_0x11a883,_0x40148d){return new BPromise(function(_0x3a9361,_0x2db34b){return client['request'](_0x138cc0,_0x40148d)[_0x6b93('0xf')](function(_0xd89b83){logger['info'](_0x6b93('0x10'),_0x11a883,'request\x20sent');logger['debug'](_0x6b93('0x11'),_0x11a883,_0x6b93('0x12'),JSON[_0x6b93('0x13')](_0xd89b83));if(_0xd89b83[_0x6b93('0x14')]){if(_0xd89b83['error'][_0x6b93('0x15')]===0x1f4){logger[_0x6b93('0x14')]('Dashboard,\x20%s,\x20%s',_0x11a883,_0xd89b83[_0x6b93('0x14')][_0x6b93('0x16')]);return _0x2db34b(_0xd89b83[_0x6b93('0x14')][_0x6b93('0x16')]);}logger[_0x6b93('0x14')](_0x6b93('0x10'),_0x11a883,_0xd89b83['error'][_0x6b93('0x16')]);return _0x3a9361(_0xd89b83['error'][_0x6b93('0x16')]);}else{logger[_0x6b93('0x17')](_0x6b93('0x10'),_0x11a883,_0x6b93('0x12'));_0x3a9361(_0xd89b83['result']['message']);}})[_0x6b93('0x18')](function(_0x328453){logger[_0x6b93('0x14')](_0x6b93('0x10'),_0x11a883,_0x328453);_0x2db34b(_0x328453);});});}
\ No newline at end of file
+var _0xc35a=['client','redis','defaults','localhost','socket.io-emitter','./dashboard.socket','request','then','Dashboard,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise'];(function(_0x161271,_0x50c970){var _0x5af393=function(_0x30b8b2){while(--_0x30b8b2){_0x161271['push'](_0x161271['shift']());}};_0x5af393(++_0x50c970);}(_0xc35a,0x7e));var _0xac35=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xc35a[_0x3bf83f];return _0x22c4a9;};'use strict';var _=require(_0xac35('0x0'));var util=require('util');var moment=require(_0xac35('0x1'));var BPromise=require(_0xac35('0x2'));var rs=require(_0xac35('0x3'));var fs=require('fs');var Redis=require(_0xac35('0x4'));var db=require(_0xac35('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xac35('0x6'))('rpc');var config=require(_0xac35('0x7'));var jayson=require(_0xac35('0x8'));var client=jayson[_0xac35('0x9')]['http']({'port':0x232a});config[_0xac35('0xa')]=_[_0xac35('0xb')](config['redis'],{'host':_0xac35('0xc'),'port':0x18eb});var socket=require(_0xac35('0xd'))(new Redis(config[_0xac35('0xa')]));require(_0xac35('0xe'))['register'](socket);function respondWithRpcPromise(_0x20ac69,_0x3860c7,_0x474451){return new BPromise(function(_0x26c38f,_0x914b65){return client[_0xac35('0xf')](_0x20ac69,_0x474451)[_0xac35('0x10')](function(_0x1762ca){logger['info'](_0xac35('0x11'),_0x3860c7,_0xac35('0x12'));logger[_0xac35('0x13')]('Dashboard,\x20%s,\x20%s,\x20%s',_0x3860c7,'request\x20sent',JSON[_0xac35('0x14')](_0x1762ca));if(_0x1762ca[_0xac35('0x15')]){if(_0x1762ca[_0xac35('0x15')][_0xac35('0x16')]===0x1f4){logger[_0xac35('0x15')](_0xac35('0x11'),_0x3860c7,_0x1762ca[_0xac35('0x15')][_0xac35('0x17')]);return _0x914b65(_0x1762ca['error']['message']);}logger[_0xac35('0x15')](_0xac35('0x11'),_0x3860c7,_0x1762ca[_0xac35('0x15')][_0xac35('0x17')]);return _0x26c38f(_0x1762ca['error']['message']);}else{logger[_0xac35('0x18')](_0xac35('0x11'),_0x3860c7,_0xac35('0x12'));_0x26c38f(_0x1762ca[_0xac35('0x19')]['message']);}})[_0xac35('0x1a')](function(_0x18ba5e){logger[_0xac35('0x15')](_0xac35('0x11'),_0x3860c7,_0x18ba5e);_0x914b65(_0x18ba5e);});});}
\ No newline at end of file
index 601b215..c0550c1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a3b=['removeListener','register','dashboard:','./dashboard.events','save','update','emit'];(function(_0x4dc35f,_0x377c51){var _0x1f8820=function(_0x37c340){while(--_0x37c340){_0x4dc35f['push'](_0x4dc35f['shift']());}};_0x1f8820(++_0x377c51);}(_0x2a3b,0x1a0));var _0xb2a3=function(_0x66799c,_0x57885f){_0x66799c=_0x66799c-0x0;var _0x4d99f2=_0x2a3b[_0x66799c];return _0x4d99f2;};'use strict';var DashboardEvents=require(_0xb2a3('0x0'));var events=[_0xb2a3('0x1'),'remove',_0xb2a3('0x2')];function createListener(_0x2962b2,_0x1413e0){return function(_0x4982a8){_0x1413e0[_0xb2a3('0x3')](_0x2962b2,_0x4982a8);};}function removeListener(_0x9ddd03,_0x290cbb){return function(){DashboardEvents[_0xb2a3('0x4')](_0x9ddd03,_0x290cbb);};}exports[_0xb2a3('0x5')]=function(_0x2bbc9a){for(var _0x4a75c3=0x0,_0x1a2ddd=events['length'];_0x4a75c3<_0x1a2ddd;_0x4a75c3++){var _0x3fe75e=events[_0x4a75c3];var _0x18acbb=createListener(_0xb2a3('0x6')+_0x3fe75e,_0x2bbc9a);DashboardEvents['on'](_0x3fe75e,_0x18acbb);}};
\ No newline at end of file
+var _0x8b44=['update','register','length','dashboard:','remove'];(function(_0x79cd47,_0x16102d){var _0x3b9484=function(_0x23db95){while(--_0x23db95){_0x79cd47['push'](_0x79cd47['shift']());}};_0x3b9484(++_0x16102d);}(_0x8b44,0x153));var _0x48b4=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0x8b44[_0x5b561d];return _0x431060;};'use strict';var DashboardEvents=require('./dashboard.events');var events=['save',_0x48b4('0x0'),_0x48b4('0x1')];function createListener(_0x588428,_0x1940fb){return function(_0x1eb61f){_0x1940fb['emit'](_0x588428,_0x1eb61f);};}function removeListener(_0x2cb889,_0x18099f){return function(){DashboardEvents['removeListener'](_0x2cb889,_0x18099f);};}exports[_0x48b4('0x2')]=function(_0x158226){for(var _0x2ed85a=0x0,_0x4b6154=events[_0x48b4('0x3')];_0x2ed85a<_0x4b6154;_0x2ed85a++){var _0xf5e253=events[_0x2ed85a];var _0x33f42e=createListener(_0x48b4('0x4')+_0xf5e253,_0x158226);DashboardEvents['on'](_0xf5e253,_0x33f42e);}};
\ No newline at end of file
index 2b1d8e8..2b37a20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5da4=['connect-timeout','Router','fs-extra','../../components/auth/service','./dashboard.controller','isAuthenticated','index','get','/:id','getItems','post','create','/:id/clone','/:id/items','addItem','delete','destroy'];(function(_0x1f7e67,_0xad42b4){var _0x587349=function(_0x5586fc){while(--_0x5586fc){_0x1f7e67['push'](_0x1f7e67['shift']());}};_0x587349(++_0xad42b4);}(_0x5da4,0x99));var _0x45da=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x5da4[_0x2d7f0e];return _0x110b07;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0x45da('0x0'));var express=require('express');var router=express[_0x45da('0x1')]();var fs_extra=require(_0x45da('0x2'));var auth=require(_0x45da('0x3'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x45da('0x4'));router['get']('/',auth[_0x45da('0x5')](),controller[_0x45da('0x6')]);router[_0x45da('0x7')](_0x45da('0x8'),auth[_0x45da('0x5')](),controller['show']);router[_0x45da('0x7')]('/:id/items',auth[_0x45da('0x5')](),controller[_0x45da('0x9')]);router[_0x45da('0xa')]('/',auth[_0x45da('0x5')](),controller[_0x45da('0xb')]);router[_0x45da('0xa')](_0x45da('0xc'),auth[_0x45da('0x5')](),controller['clone']);router['post'](_0x45da('0xd'),auth[_0x45da('0x5')](),controller[_0x45da('0xe')]);router['put'](_0x45da('0x8'),auth['isAuthenticated'](),controller['update']);router[_0x45da('0xf')](_0x45da('0x8'),auth['isAuthenticated'](),controller[_0x45da('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0xff8a=['addItem','update','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboard.controller','get','isAuthenticated','index','/:id','/:id/items','post','create','clone'];(function(_0x1be8af,_0x5e662f){var _0x49190e=function(_0x1800a4){while(--_0x1800a4){_0x1be8af['push'](_0x1be8af['shift']());}};_0x49190e(++_0x5e662f);}(_0xff8a,0x17f));var _0xaff8=function(_0x120d9d,_0x2548f8){_0x120d9d=_0x120d9d-0x0;var _0x18a229=_0xff8a[_0x120d9d];return _0x18a229;};'use strict';var multer=require('multer');var util=require(_0xaff8('0x0'));var path=require(_0xaff8('0x1'));var timeout=require(_0xaff8('0x2'));var express=require(_0xaff8('0x3'));var router=express['Router']();var fs_extra=require(_0xaff8('0x4'));var auth=require(_0xaff8('0x5'));var interaction=require(_0xaff8('0x6'));var config=require(_0xaff8('0x7'));var controller=require(_0xaff8('0x8'));router[_0xaff8('0x9')]('/',auth[_0xaff8('0xa')](),controller[_0xaff8('0xb')]);router[_0xaff8('0x9')](_0xaff8('0xc'),auth[_0xaff8('0xa')](),controller['show']);router[_0xaff8('0x9')](_0xaff8('0xd'),auth[_0xaff8('0xa')](),controller['getItems']);router[_0xaff8('0xe')]('/',auth['isAuthenticated'](),controller[_0xaff8('0xf')]);router[_0xaff8('0xe')]('/:id/clone',auth[_0xaff8('0xa')](),controller[_0xaff8('0x10')]);router[_0xaff8('0xe')]('/:id/items',auth[_0xaff8('0xa')](),controller[_0xaff8('0x11')]);router['put']('/:id',auth[_0xaff8('0xa')](),controller[_0xaff8('0x12')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xaff8('0x13')]=router;
\ No newline at end of file
index 7ac2d72..05fbd50 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2675=['parse','attrs','setDataValue','stringify','INTEGER','sequelize','STRING','long'];(function(_0x3ae736,_0x16a110){var _0x41992e=function(_0x265c56){while(--_0x265c56){_0x3ae736['push'](_0x3ae736['shift']());}};_0x41992e(++_0x16a110);}(_0x2675,0x75));var _0x5267=function(_0x524158,_0x22d014){_0x524158=_0x524158-0x0;var _0x5b768b=_0x2675[_0x524158];return _0x5b768b;};'use strict';var Sequelize=require(_0x5267('0x0'));var squel=require('squel');var _=require('lodash');module['exports']={'title':{'type':Sequelize[_0x5267('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x5267('0x1')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize['TEXT'](_0x5267('0x2')),'get':function(){try{return JSON[_0x5267('0x3')](this['getDataValue'](_0x5267('0x4')));}catch(_0xf2b350){return[];}},'set':function(_0x4bd042){try{this[_0x5267('0x5')](_0x5267('0x4'),JSON[_0x5267('0x6')](_0x4bd042));}catch(_0x527c16){this[_0x5267('0x5')](_0x5267('0x4'),JSON['stringify']([]));}}},'sizeX':{'type':Sequelize[_0x5267('0x7')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize['INTEGER'],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0x5267('0x7')]},'col':{'type':Sequelize[_0x5267('0x7')]},'background':{'type':Sequelize[_0x5267('0x1')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0x5267('0x1')],'allowNull':![],'defaultValue':'#2196f3','validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0x5267('0x1')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
+var _0x71ab=['setDataValue','stringify','INTEGER','#2196f3','squel','exports','STRING','TEXT','long','parse','getDataValue','attrs'];(function(_0x845505,_0x19e5f3){var _0x2513b9=function(_0x10e7af){while(--_0x10e7af){_0x845505['push'](_0x845505['shift']());}};_0x2513b9(++_0x19e5f3);}(_0x71ab,0x64));var _0xb71a=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x71ab[_0x3947c9];return _0x2e7871;};'use strict';var Sequelize=require('sequelize');var squel=require(_0xb71a('0x0'));var _=require('lodash');module[_0xb71a('0x1')]={'title':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0xb71a('0x2')](0x14),'allowNull':![],'validate':{'len':[0x1,0x14]}},'attrs':{'type':Sequelize[_0xb71a('0x3')](_0xb71a('0x4')),'get':function(){try{return JSON[_0xb71a('0x5')](this[_0xb71a('0x6')](_0xb71a('0x7')));}catch(_0x2192e8){return[];}},'set':function(_0x38d931){try{this[_0xb71a('0x8')](_0xb71a('0x7'),JSON[_0xb71a('0x9')](_0x38d931));}catch(_0x2a4c86){this[_0xb71a('0x8')](_0xb71a('0x7'),JSON[_0xb71a('0x9')]([]));}}},'sizeX':{'type':Sequelize[_0xb71a('0xa')],'allowNull':![],'defaultValue':0x1},'sizeY':{'type':Sequelize[_0xb71a('0xa')],'allowNull':![],'defaultValue':0x1},'row':{'type':Sequelize[_0xb71a('0xa')]},'col':{'type':Sequelize['INTEGER']},'background':{'type':Sequelize[_0xb71a('0x2')],'allowNull':![],'defaultValue':'#ffffff','validate':{'notEmpty':!![]}},'foreground':{'type':Sequelize[_0xb71a('0x2')],'allowNull':![],'defaultValue':_0xb71a('0xb'),'validate':{'notEmpty':!![]}},'link':{'type':Sequelize[_0xb71a('0x2')]},'titleFontSize':{'type':Sequelize['INTEGER'],'defaultValue':0xc}};
\ No newline at end of file
index 4e73145..b943f1c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ca4=['lodash','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./dashboardItem.socket','status','end','offset','undefined','count','limit','set','Content-Range','json','apply','save','update','destroy','then','sendStatus','error','stack','name','send','params','model','DashboardItem','query','filters','attributes','intersection','fields','length','merge','options','find','catch','type','iframe','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','counter','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','attrChatWebsites','pie-chart','attrSerie1','attrSerie2','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','create','body','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra'];(function(_0x281ebd,_0x467426){var _0x47e0cc=function(_0x35fc4d){while(--_0x35fc4d){_0x281ebd['push'](_0x281ebd['shift']());}};_0x47e0cc(++_0x467426);}(_0x3ca4,0x17d));var _0x43ca=function(_0xb33188,_0x3df3de){_0xb33188=_0xb33188-0x0;var _0x405555=_0x3ca4[_0xb33188];return _0x405555;};'use strict';var emlformat=require(_0x43ca('0x0'));var rimraf=require(_0x43ca('0x1'));var zipdir=require(_0x43ca('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x43ca('0x3'));var BPromise=require(_0x43ca('0x4'));var Mustache=require(_0x43ca('0x5'));var util=require(_0x43ca('0x6'));var path=require(_0x43ca('0x7'));var sox=require(_0x43ca('0x8'));var csv=require(_0x43ca('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x43ca('0xa'));var _=require(_0x43ca('0xb'));var squel=require(_0x43ca('0xc'));var crypto=require(_0x43ca('0xd'));var jsforce=require(_0x43ca('0xe'));var deskjs=require(_0x43ca('0xf'));var toCsv=require(_0x43ca('0x9'));var querystring=require(_0x43ca('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x43ca('0x11'));var qs=require(_0x43ca('0x12'));var as=require(_0x43ca('0x13'));var hardwareService=require(_0x43ca('0x14'));var logger=require('../../config/logger')(_0x43ca('0x15'));var utils=require(_0x43ca('0x16'));var config=require(_0x43ca('0x17'));var licenseUtil=require(_0x43ca('0x18'));var db=require(_0x43ca('0x19'))['db'];config[_0x43ca('0x1a')]=_[_0x43ca('0x1b')](config[_0x43ca('0x1a')],{'host':_0x43ca('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x43ca('0x1a')]));require(_0x43ca('0x1d'))['register'](socket);function respondWithStatusCode(_0x309176,_0x5c9a24){_0x5c9a24=_0x5c9a24||0xcc;return function(_0x316c74){if(_0x316c74){return _0x309176['sendStatus'](_0x5c9a24);}return _0x309176[_0x43ca('0x1e')](_0x5c9a24)[_0x43ca('0x1f')]();};}function respondWithResult(_0x51a517,_0xd306dc){_0xd306dc=_0xd306dc||0xc8;return function(_0x366180){if(_0x366180){return _0x51a517[_0x43ca('0x1e')](_0xd306dc)['json'](_0x366180);}};}function respondWithFilteredResult(_0x4fb5e4,_0x48a75c){return function(_0x5e50c9){if(_0x5e50c9){var _0x2cb3e5=typeof _0x48a75c[_0x43ca('0x20')]===_0x43ca('0x21')&&typeof _0x48a75c['limit']===_0x43ca('0x21');var _0x806f68=_0x5e50c9[_0x43ca('0x22')];var _0x4a07cd=_0x2cb3e5?0x0:_0x48a75c[_0x43ca('0x20')];var _0x51cb85=_0x2cb3e5?_0x5e50c9[_0x43ca('0x22')]:_0x48a75c[_0x43ca('0x20')]+_0x48a75c[_0x43ca('0x23')];var _0x5ae497;if(_0x51cb85>=_0x806f68){_0x51cb85=_0x806f68;_0x5ae497=0xc8;}else{_0x5ae497=0xce;}_0x4fb5e4[_0x43ca('0x1e')](_0x5ae497);return _0x4fb5e4[_0x43ca('0x24')](_0x43ca('0x25'),_0x4a07cd+'-'+_0x51cb85+'/'+_0x806f68)[_0x43ca('0x26')](_0x5e50c9);}return null;};}function patchUpdates(_0x35d34c){return function(_0x4c27d8){try{jsonpatch[_0x43ca('0x27')](_0x4c27d8,_0x35d34c,!![]);}catch(_0x34767e){return BPromise['reject'](_0x34767e);}return _0x4c27d8[_0x43ca('0x28')]();};}function saveUpdates(_0x22d6ac,_0x694b5a){return function(_0x3bc9ae){if(_0x3bc9ae){return _0x3bc9ae[_0x43ca('0x29')](_0x22d6ac)['then'](function(_0x2da1ec){return _0x2da1ec;});}return null;};}function removeEntity(_0xc07cde,_0x29f2ee){return function(_0x24abdb){if(_0x24abdb){return _0x24abdb[_0x43ca('0x2a')]()[_0x43ca('0x2b')](function(){_0xc07cde[_0x43ca('0x1e')](0xcc)[_0x43ca('0x1f')]();});}};}function handleEntityNotFound(_0x5aa57c,_0x4c6b44){return function(_0x4a75af){if(!_0x4a75af){_0x5aa57c[_0x43ca('0x2c')](0x194);}return _0x4a75af;};}function handleError(_0x3a2e47,_0x270393){_0x270393=_0x270393||0x1f4;return function(_0x9d09b9){logger[_0x43ca('0x2d')](_0x9d09b9[_0x43ca('0x2e')]);if(_0x9d09b9[_0x43ca('0x2f')]){delete _0x9d09b9[_0x43ca('0x2f')];}_0x3a2e47['status'](_0x270393)[_0x43ca('0x30')](_0x9d09b9);};}exports['show']=function(_0x5c7c80,_0x12b2a2){var _0x1f2814={'raw':![],'where':{'id':_0x5c7c80[_0x43ca('0x31')]['id']}},_0x313518={};_0x313518[_0x43ca('0x32')]=_['keys'](db[_0x43ca('0x33')]['rawAttributes']);_0x313518[_0x43ca('0x34')]=_['keys'](_0x5c7c80[_0x43ca('0x34')]);_0x313518[_0x43ca('0x35')]=_['intersection'](_0x313518[_0x43ca('0x32')],_0x313518[_0x43ca('0x34')]);_0x1f2814[_0x43ca('0x36')]=_[_0x43ca('0x37')](_0x313518[_0x43ca('0x32')],qs[_0x43ca('0x38')](_0x5c7c80[_0x43ca('0x34')]['fields']));_0x1f2814[_0x43ca('0x36')]=_0x1f2814['attributes'][_0x43ca('0x39')]?_0x1f2814[_0x43ca('0x36')]:_0x313518['model'];if(_0x5c7c80[_0x43ca('0x34')]['includeAll']){_0x1f2814['include']=[{'all':!![]}];}_0x1f2814=_[_0x43ca('0x3a')]({},_0x1f2814,_0x5c7c80[_0x43ca('0x3b')]);return db[_0x43ca('0x33')][_0x43ca('0x3c')](_0x1f2814)[_0x43ca('0x2b')](handleEntityNotFound(_0x12b2a2,null))[_0x43ca('0x2b')](respondWithResult(_0x12b2a2,null))[_0x43ca('0x3d')](handleError(_0x12b2a2,null));};exports['destroy']=function(_0x43b29b,_0x67b8b0){return db['DashboardItem'][_0x43ca('0x3c')]({'where':{'id':_0x43b29b[_0x43ca('0x31')]['id']}})['then'](handleEntityNotFound(_0x67b8b0,null))[_0x43ca('0x2b')](removeEntity(_0x67b8b0,null))['catch'](handleError(_0x67b8b0,null));};function widgetAttributes(_0x5a4224){try{switch(_0x5a4224[_0x43ca('0x3e')]){case _0x43ca('0x3f'):return[{'name':_0x43ca('0x40'),'value':_0x5a4224[_0x43ca('0x40')]||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224[_0x43ca('0x41')][0x0]?_0x5a4224[_0x43ca('0x41')][0x0][_0x43ca('0x42')]:undefined)||_0x43ca('0x43')}];case _0x43ca('0x44'):return[{'name':_0x43ca('0x45'),'value':_0x5a4224[_0x43ca('0x45')]||(_0x5a4224['attrs']&&_0x5a4224['attrs'][0x0]?_0x5a4224[_0x43ca('0x41')][0x0][_0x43ca('0x42')]:undefined)||''}];case _0x43ca('0x46'):return[{'name':'attrHourFormat','value':_0x5a4224[_0x43ca('0x47')]||(_0x5a4224['attrs']&&_0x5a4224[_0x43ca('0x41')][0x0]?_0x5a4224['attrs'][0x0][_0x43ca('0x42')]:undefined)||_0x43ca('0x48')},{'name':_0x43ca('0x49'),'value':_0x5a4224[_0x43ca('0x49')]||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224[_0x43ca('0x41')][0x1]?_0x5a4224['attrs'][0x1]['value']:undefined)||_0x43ca('0x4a')},{'name':_0x43ca('0x4b'),'value':_0x5a4224[_0x43ca('0x4b')]||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224[_0x43ca('0x41')][0x2]?_0x5a4224[_0x43ca('0x41')][0x2][_0x43ca('0x42')]:undefined)||0xc}];case _0x43ca('0x4c'):return[{'name':_0x43ca('0x4d'),'value':_0x5a4224[_0x43ca('0x4d')]||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224[_0x43ca('0x41')][0x0]?_0x5a4224[_0x43ca('0x41')][0x0][_0x43ca('0x42')]:undefined)||_0x43ca('0x4e')},{'name':_0x43ca('0x4f'),'value':_0x5a4224[_0x43ca('0x4f')]||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224[_0x43ca('0x41')][0x1]?_0x5a4224[_0x43ca('0x41')][0x1][_0x43ca('0x42')]:undefined)||[]},{'name':'attrFontSize','value':_0x5a4224[_0x43ca('0x4b')]||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224[_0x43ca('0x41')][0x2]?_0x5a4224['attrs'][0x2][_0x43ca('0x42')]:undefined)||0x14},{'name':_0x43ca('0x50'),'value':_0x5a4224[_0x43ca('0x50')]||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224[_0x43ca('0x41')][0x3]?_0x5a4224[_0x43ca('0x41')][0x3][_0x43ca('0x42')]:undefined)||_0x43ca('0x51')},{'name':_0x43ca('0x52'),'value':_0x5a4224[_0x43ca('0x52')]||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224['attrs'][0x4]?_0x5a4224[_0x43ca('0x41')][0x4][_0x43ca('0x42')]:undefined)||''},{'name':_0x43ca('0x53'),'value':_0x5a4224['attrFaxAccounts']||(_0x5a4224['attrs']&&_0x5a4224[_0x43ca('0x41')][0x5]?_0x5a4224['attrs'][0x5][_0x43ca('0x42')]:undefined)||''},{'name':'attrSmsAccounts','value':_0x5a4224[_0x43ca('0x54')]||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224[_0x43ca('0x41')][0x6]?_0x5a4224['attrs'][0x6][_0x43ca('0x42')]:undefined)||''},{'name':_0x43ca('0x55'),'value':_0x5a4224['attrOpenchannelAccounts']||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224['attrs'][0x7]?_0x5a4224['attrs'][0x7][_0x43ca('0x42')]:undefined)||''},{'name':_0x43ca('0x56'),'value':_0x5a4224[_0x43ca('0x56')]||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224[_0x43ca('0x41')][0x8]?_0x5a4224[_0x43ca('0x41')][0x8]['value']:undefined)||''},{'name':'attrChatWebsites','value':_0x5a4224[_0x43ca('0x57')]||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224['attrs'][0x9]?_0x5a4224['attrs'][0x9][_0x43ca('0x42')]:undefined)||''}];case'multibar-chart':case _0x43ca('0x58'):return[{'name':_0x43ca('0x59'),'value':_0x5a4224[_0x43ca('0x59')]||(_0x5a4224['attrs']&&_0x5a4224[_0x43ca('0x41')][0x0]?_0x5a4224[_0x43ca('0x41')][0x0]['value']:undefined)||'total'},{'name':_0x43ca('0x5a'),'value':_0x5a4224[_0x43ca('0x5a')]||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224[_0x43ca('0x41')][0x1]?_0x5a4224[_0x43ca('0x41')][0x1][_0x43ca('0x42')]:undefined)||null},{'name':'attrSerie3','value':_0x5a4224['attrSerie3']||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224[_0x43ca('0x41')][0x2]?_0x5a4224[_0x43ca('0x41')][0x2][_0x43ca('0x42')]:undefined)||null},{'name':_0x43ca('0x4f'),'value':_0x5a4224[_0x43ca('0x4f')]||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224[_0x43ca('0x41')][0x3]?_0x5a4224[_0x43ca('0x41')][0x3][_0x43ca('0x42')]:undefined)||[]},{'name':_0x43ca('0x50'),'value':_0x5a4224[_0x43ca('0x50')]||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224[_0x43ca('0x41')][0x4]?_0x5a4224['attrs'][0x4][_0x43ca('0x42')]:undefined)||_0x43ca('0x51')},{'name':_0x43ca('0x52'),'value':_0x5a4224[_0x43ca('0x52')]||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224['attrs'][0x5]?_0x5a4224[_0x43ca('0x41')][0x5][_0x43ca('0x42')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x5a4224[_0x43ca('0x53')]||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224['attrs'][0x6]?_0x5a4224['attrs'][0x6][_0x43ca('0x42')]:undefined)||''},{'name':_0x43ca('0x54'),'value':_0x5a4224[_0x43ca('0x54')]||(_0x5a4224['attrs']&&_0x5a4224[_0x43ca('0x41')][0x7]?_0x5a4224[_0x43ca('0x41')][0x7][_0x43ca('0x42')]:undefined)||''},{'name':_0x43ca('0x55'),'value':_0x5a4224[_0x43ca('0x55')]||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224[_0x43ca('0x41')][0x8]?_0x5a4224[_0x43ca('0x41')][0x8][_0x43ca('0x42')]:undefined)||''},{'name':_0x43ca('0x56'),'value':_0x5a4224['attrWhatsappAccounts']||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224[_0x43ca('0x41')][0x9]?_0x5a4224[_0x43ca('0x41')][0x9][_0x43ca('0x42')]:undefined)||''},{'name':_0x43ca('0x57'),'value':_0x5a4224[_0x43ca('0x57')]||(_0x5a4224['attrs']&&_0x5a4224[_0x43ca('0x41')][0xa]?_0x5a4224[_0x43ca('0x41')][0xa][_0x43ca('0x42')]:undefined)||''}];case _0x43ca('0x5b'):return[{'name':_0x43ca('0x5c'),'type':_0x5a4224[_0x43ca('0x5d')]||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224[_0x43ca('0x41')][0x0]?_0x5a4224['attrs'][0x0][_0x43ca('0x3e')]:undefined)||null,'value':_0x5a4224[_0x43ca('0x5c')]||(_0x5a4224[_0x43ca('0x41')]&&_0x5a4224['attrs'][0x0]?_0x5a4224[_0x43ca('0x41')][0x0][_0x43ca('0x42')]:undefined)||null},{'name':'attrRefresh','value':_0x5a4224[_0x43ca('0x5e')]||(_0x5a4224['attrs']&&_0x5a4224['attrs'][0x1]?_0x5a4224[_0x43ca('0x41')][0x1][_0x43ca('0x42')]:undefined)||0x0}];default:return[];}}catch(_0x12639d){logger[_0x43ca('0x2d')](_0x43ca('0x5f'),JSON['stringify'](_0x12639d));return[];}}exports[_0x43ca('0x60')]=function(_0x586fe9,_0x10db02){if(_0x586fe9[_0x43ca('0x61')]){_0x586fe9[_0x43ca('0x61')][_0x43ca('0x41')]=widgetAttributes(_0x586fe9[_0x43ca('0x61')]);}return db[_0x43ca('0x33')][_0x43ca('0x60')](_0x586fe9['body'],{})[_0x43ca('0x2b')](respondWithResult(_0x10db02,0xc9))[_0x43ca('0x3d')](handleError(_0x10db02,null));};exports[_0x43ca('0x29')]=function(_0x248e4e,_0xd63961){if(_0x248e4e['body']['id']){delete _0x248e4e[_0x43ca('0x61')]['id'];}_0x248e4e[_0x43ca('0x61')]['attrs']=widgetAttributes(_0x248e4e[_0x43ca('0x61')]);return db[_0x43ca('0x33')][_0x43ca('0x3c')]({'where':{'id':_0x248e4e[_0x43ca('0x31')]['id']}})[_0x43ca('0x2b')](handleEntityNotFound(_0xd63961,null))[_0x43ca('0x2b')](saveUpdates(_0x248e4e[_0x43ca('0x61')],null))[_0x43ca('0x2b')](respondWithResult(_0xd63961,null))[_0x43ca('0x3d')](handleError(_0xd63961,null));};
\ No newline at end of file
+var _0x99a0=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','register','sendStatus','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','save','update','then','end','error','stack','name','send','show','params','model','keys','DashboardItem','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','merge','options','find','destroy','type','attrUrl','attrs','value','https://','custom','attrPath','clock','attrHourFormat','HH:mm:ss','attrTimezone','0.00','attrFontSize','attrMetric','total','attrVoiceQueues','attrChannel','voice','attrEmailAccounts','attrFaxAccounts','attrSmsAccounts','attrOpenchannelAccounts','attrWhatsappAccounts','multibar-chart','attrSerie1','attrSerie2','attrSerie3','attrChatWebsites','web-report','attrReport','reportType','attrRefresh','widgetAttributes:\x20%s','create','body','catch','eml-format','rimraf','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x4d2583,_0x52bd89){var _0x57fa3a=function(_0x3ad39c){while(--_0x3ad39c){_0x4d2583['push'](_0x4d2583['shift']());}};_0x57fa3a(++_0x52bd89);}(_0x99a0,0x121));var _0x099a=function(_0xff9570,_0x38d1d1){_0xff9570=_0xff9570-0x0;var _0x4e1543=_0x99a0[_0xff9570];return _0x4e1543;};'use strict';var emlformat=require(_0x099a('0x0'));var rimraf=require(_0x099a('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x099a('0x2'));var Mustache=require(_0x099a('0x3'));var util=require('util');var path=require(_0x099a('0x4'));var sox=require(_0x099a('0x5'));var csv=require(_0x099a('0x6'));var ejs=require(_0x099a('0x7'));var fs=require('fs');var fs_extra=require(_0x099a('0x8'));var _=require(_0x099a('0x9'));var squel=require('squel');var crypto=require(_0x099a('0xa'));var jsforce=require(_0x099a('0xb'));var deskjs=require(_0x099a('0xc'));var toCsv=require('to-csv');var querystring=require(_0x099a('0xd'));var Papa=require(_0x099a('0xe'));var Redis=require(_0x099a('0xf'));var authService=require(_0x099a('0x10'));var qs=require(_0x099a('0x11'));var as=require(_0x099a('0x12'));var hardwareService=require(_0x099a('0x13'));var logger=require(_0x099a('0x14'))(_0x099a('0x15'));var utils=require(_0x099a('0x16'));var config=require(_0x099a('0x17'));var licenseUtil=require(_0x099a('0x18'));var db=require(_0x099a('0x19'))['db'];config[_0x099a('0x1a')]=_[_0x099a('0x1b')](config['redis'],{'host':_0x099a('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x099a('0x1a')]));require('./dashboardItem.socket')[_0x099a('0x1d')](socket);function respondWithStatusCode(_0x3a134e,_0x2a1c99){_0x2a1c99=_0x2a1c99||0xcc;return function(_0x1a2fbb){if(_0x1a2fbb){return _0x3a134e[_0x099a('0x1e')](_0x2a1c99);}return _0x3a134e[_0x099a('0x1f')](_0x2a1c99)['end']();};}function respondWithResult(_0x443eea,_0x88c471){_0x88c471=_0x88c471||0xc8;return function(_0x452a34){if(_0x452a34){return _0x443eea[_0x099a('0x1f')](_0x88c471)['json'](_0x452a34);}};}function respondWithFilteredResult(_0x2831a2,_0x57cb3c){return function(_0x1d3924){if(_0x1d3924){var _0x26bf41=typeof _0x57cb3c[_0x099a('0x20')]==='undefined'&&typeof _0x57cb3c[_0x099a('0x21')]===_0x099a('0x22');var _0x1c5314=_0x1d3924[_0x099a('0x23')];var _0x364fad=_0x26bf41?0x0:_0x57cb3c['offset'];var _0x4e183b=_0x26bf41?_0x1d3924[_0x099a('0x23')]:_0x57cb3c[_0x099a('0x20')]+_0x57cb3c[_0x099a('0x21')];var _0x470df6;if(_0x4e183b>=_0x1c5314){_0x4e183b=_0x1c5314;_0x470df6=0xc8;}else{_0x470df6=0xce;}_0x2831a2[_0x099a('0x1f')](_0x470df6);return _0x2831a2[_0x099a('0x24')](_0x099a('0x25'),_0x364fad+'-'+_0x4e183b+'/'+_0x1c5314)[_0x099a('0x26')](_0x1d3924);}return null;};}function patchUpdates(_0x545830){return function(_0x55bd85){try{jsonpatch[_0x099a('0x27')](_0x55bd85,_0x545830,!![]);}catch(_0x38dd6a){return BPromise[_0x099a('0x28')](_0x38dd6a);}return _0x55bd85[_0x099a('0x29')]();};}function saveUpdates(_0x1d1e5f,_0x2527f9){return function(_0x126b05){if(_0x126b05){return _0x126b05[_0x099a('0x2a')](_0x1d1e5f)[_0x099a('0x2b')](function(_0x42ee18){return _0x42ee18;});}return null;};}function removeEntity(_0x21a937,_0x4d63d5){return function(_0x422c3c){if(_0x422c3c){return _0x422c3c['destroy']()[_0x099a('0x2b')](function(){_0x21a937[_0x099a('0x1f')](0xcc)[_0x099a('0x2c')]();});}};}function handleEntityNotFound(_0x4cbc26,_0x320d29){return function(_0x1101aa){if(!_0x1101aa){_0x4cbc26[_0x099a('0x1e')](0x194);}return _0x1101aa;};}function handleError(_0x485d12,_0x4b2bba){_0x4b2bba=_0x4b2bba||0x1f4;return function(_0x560fdb){logger[_0x099a('0x2d')](_0x560fdb[_0x099a('0x2e')]);if(_0x560fdb['name']){delete _0x560fdb[_0x099a('0x2f')];}_0x485d12[_0x099a('0x1f')](_0x4b2bba)[_0x099a('0x30')](_0x560fdb);};}exports[_0x099a('0x31')]=function(_0x462c0d,_0x36c1b4){var _0x57d1f3={'raw':![],'where':{'id':_0x462c0d[_0x099a('0x32')]['id']}},_0x49c257={};_0x49c257[_0x099a('0x33')]=_[_0x099a('0x34')](db[_0x099a('0x35')][_0x099a('0x36')]);_0x49c257[_0x099a('0x37')]=_[_0x099a('0x34')](_0x462c0d['query']);_0x49c257[_0x099a('0x38')]=_[_0x099a('0x39')](_0x49c257[_0x099a('0x33')],_0x49c257[_0x099a('0x37')]);_0x57d1f3[_0x099a('0x3a')]=_[_0x099a('0x39')](_0x49c257['model'],qs[_0x099a('0x3b')](_0x462c0d['query'][_0x099a('0x3b')]));_0x57d1f3[_0x099a('0x3a')]=_0x57d1f3['attributes'][_0x099a('0x3c')]?_0x57d1f3[_0x099a('0x3a')]:_0x49c257[_0x099a('0x33')];if(_0x462c0d[_0x099a('0x37')][_0x099a('0x3d')]){_0x57d1f3['include']=[{'all':!![]}];}_0x57d1f3=_[_0x099a('0x3e')]({},_0x57d1f3,_0x462c0d[_0x099a('0x3f')]);return db['DashboardItem'][_0x099a('0x40')](_0x57d1f3)[_0x099a('0x2b')](handleEntityNotFound(_0x36c1b4,null))[_0x099a('0x2b')](respondWithResult(_0x36c1b4,null))['catch'](handleError(_0x36c1b4,null));};exports[_0x099a('0x41')]=function(_0x2f4cca,_0x1e8a23){return db[_0x099a('0x35')][_0x099a('0x40')]({'where':{'id':_0x2f4cca[_0x099a('0x32')]['id']}})['then'](handleEntityNotFound(_0x1e8a23,null))[_0x099a('0x2b')](removeEntity(_0x1e8a23,null))['catch'](handleError(_0x1e8a23,null));};function widgetAttributes(_0x2dd733){try{switch(_0x2dd733[_0x099a('0x42')]){case'iframe':return[{'name':_0x099a('0x43'),'value':_0x2dd733[_0x099a('0x43')]||(_0x2dd733[_0x099a('0x44')]&&_0x2dd733[_0x099a('0x44')][0x0]?_0x2dd733[_0x099a('0x44')][0x0][_0x099a('0x45')]:undefined)||_0x099a('0x46')}];case _0x099a('0x47'):return[{'name':_0x099a('0x48'),'value':_0x2dd733['attrPath']||(_0x2dd733[_0x099a('0x44')]&&_0x2dd733[_0x099a('0x44')][0x0]?_0x2dd733[_0x099a('0x44')][0x0][_0x099a('0x45')]:undefined)||''}];case _0x099a('0x49'):return[{'name':_0x099a('0x4a'),'value':_0x2dd733['attrHourFormat']||(_0x2dd733['attrs']&&_0x2dd733[_0x099a('0x44')][0x0]?_0x2dd733[_0x099a('0x44')][0x0]['value']:undefined)||_0x099a('0x4b')},{'name':'attrTimezone','value':_0x2dd733[_0x099a('0x4c')]||(_0x2dd733[_0x099a('0x44')]&&_0x2dd733[_0x099a('0x44')][0x1]?_0x2dd733[_0x099a('0x44')][0x1][_0x099a('0x45')]:undefined)||_0x099a('0x4d')},{'name':_0x099a('0x4e'),'value':_0x2dd733[_0x099a('0x4e')]||(_0x2dd733['attrs']&&_0x2dd733[_0x099a('0x44')][0x2]?_0x2dd733['attrs'][0x2][_0x099a('0x45')]:undefined)||0xc}];case'counter':return[{'name':_0x099a('0x4f'),'value':_0x2dd733[_0x099a('0x4f')]||(_0x2dd733[_0x099a('0x44')]&&_0x2dd733[_0x099a('0x44')][0x0]?_0x2dd733['attrs'][0x0][_0x099a('0x45')]:undefined)||_0x099a('0x50')},{'name':'attrVoiceQueues','value':_0x2dd733[_0x099a('0x51')]||(_0x2dd733['attrs']&&_0x2dd733[_0x099a('0x44')][0x1]?_0x2dd733[_0x099a('0x44')][0x1][_0x099a('0x45')]:undefined)||[]},{'name':_0x099a('0x4e'),'value':_0x2dd733[_0x099a('0x4e')]||(_0x2dd733[_0x099a('0x44')]&&_0x2dd733[_0x099a('0x44')][0x2]?_0x2dd733[_0x099a('0x44')][0x2]['value']:undefined)||0x14},{'name':_0x099a('0x52'),'value':_0x2dd733['attrChannel']||(_0x2dd733[_0x099a('0x44')]&&_0x2dd733[_0x099a('0x44')][0x3]?_0x2dd733[_0x099a('0x44')][0x3][_0x099a('0x45')]:undefined)||_0x099a('0x53')},{'name':_0x099a('0x54'),'value':_0x2dd733[_0x099a('0x54')]||(_0x2dd733['attrs']&&_0x2dd733[_0x099a('0x44')][0x4]?_0x2dd733[_0x099a('0x44')][0x4]['value']:undefined)||''},{'name':_0x099a('0x55'),'value':_0x2dd733[_0x099a('0x55')]||(_0x2dd733[_0x099a('0x44')]&&_0x2dd733['attrs'][0x5]?_0x2dd733[_0x099a('0x44')][0x5][_0x099a('0x45')]:undefined)||''},{'name':_0x099a('0x56'),'value':_0x2dd733[_0x099a('0x56')]||(_0x2dd733['attrs']&&_0x2dd733[_0x099a('0x44')][0x6]?_0x2dd733['attrs'][0x6][_0x099a('0x45')]:undefined)||''},{'name':_0x099a('0x57'),'value':_0x2dd733['attrOpenchannelAccounts']||(_0x2dd733['attrs']&&_0x2dd733[_0x099a('0x44')][0x7]?_0x2dd733[_0x099a('0x44')][0x7][_0x099a('0x45')]:undefined)||''},{'name':'attrWhatsappAccounts','value':_0x2dd733[_0x099a('0x58')]||(_0x2dd733[_0x099a('0x44')]&&_0x2dd733[_0x099a('0x44')][0x8]?_0x2dd733['attrs'][0x8][_0x099a('0x45')]:undefined)||''},{'name':'attrChatWebsites','value':_0x2dd733['attrChatWebsites']||(_0x2dd733[_0x099a('0x44')]&&_0x2dd733['attrs'][0x9]?_0x2dd733['attrs'][0x9][_0x099a('0x45')]:undefined)||''}];case _0x099a('0x59'):case'pie-chart':return[{'name':_0x099a('0x5a'),'value':_0x2dd733[_0x099a('0x5a')]||(_0x2dd733[_0x099a('0x44')]&&_0x2dd733['attrs'][0x0]?_0x2dd733[_0x099a('0x44')][0x0][_0x099a('0x45')]:undefined)||_0x099a('0x50')},{'name':'attrSerie2','value':_0x2dd733[_0x099a('0x5b')]||(_0x2dd733[_0x099a('0x44')]&&_0x2dd733[_0x099a('0x44')][0x1]?_0x2dd733[_0x099a('0x44')][0x1][_0x099a('0x45')]:undefined)||null},{'name':_0x099a('0x5c'),'value':_0x2dd733[_0x099a('0x5c')]||(_0x2dd733[_0x099a('0x44')]&&_0x2dd733[_0x099a('0x44')][0x2]?_0x2dd733['attrs'][0x2][_0x099a('0x45')]:undefined)||null},{'name':_0x099a('0x51'),'value':_0x2dd733[_0x099a('0x51')]||(_0x2dd733['attrs']&&_0x2dd733[_0x099a('0x44')][0x3]?_0x2dd733['attrs'][0x3][_0x099a('0x45')]:undefined)||[]},{'name':'attrChannel','value':_0x2dd733[_0x099a('0x52')]||(_0x2dd733['attrs']&&_0x2dd733[_0x099a('0x44')][0x4]?_0x2dd733['attrs'][0x4][_0x099a('0x45')]:undefined)||_0x099a('0x53')},{'name':_0x099a('0x54'),'value':_0x2dd733[_0x099a('0x54')]||(_0x2dd733[_0x099a('0x44')]&&_0x2dd733[_0x099a('0x44')][0x5]?_0x2dd733[_0x099a('0x44')][0x5][_0x099a('0x45')]:undefined)||''},{'name':'attrFaxAccounts','value':_0x2dd733[_0x099a('0x55')]||(_0x2dd733[_0x099a('0x44')]&&_0x2dd733[_0x099a('0x44')][0x6]?_0x2dd733[_0x099a('0x44')][0x6][_0x099a('0x45')]:undefined)||''},{'name':_0x099a('0x56'),'value':_0x2dd733[_0x099a('0x56')]||(_0x2dd733[_0x099a('0x44')]&&_0x2dd733[_0x099a('0x44')][0x7]?_0x2dd733['attrs'][0x7][_0x099a('0x45')]:undefined)||''},{'name':_0x099a('0x57'),'value':_0x2dd733[_0x099a('0x57')]||(_0x2dd733['attrs']&&_0x2dd733['attrs'][0x8]?_0x2dd733['attrs'][0x8][_0x099a('0x45')]:undefined)||''},{'name':_0x099a('0x58'),'value':_0x2dd733['attrWhatsappAccounts']||(_0x2dd733['attrs']&&_0x2dd733[_0x099a('0x44')][0x9]?_0x2dd733['attrs'][0x9][_0x099a('0x45')]:undefined)||''},{'name':'attrChatWebsites','value':_0x2dd733[_0x099a('0x5d')]||(_0x2dd733[_0x099a('0x44')]&&_0x2dd733[_0x099a('0x44')][0xa]?_0x2dd733[_0x099a('0x44')][0xa]['value']:undefined)||''}];case _0x099a('0x5e'):return[{'name':_0x099a('0x5f'),'type':_0x2dd733[_0x099a('0x60')]||(_0x2dd733[_0x099a('0x44')]&&_0x2dd733[_0x099a('0x44')][0x0]?_0x2dd733[_0x099a('0x44')][0x0]['type']:undefined)||null,'value':_0x2dd733['attrReport']||(_0x2dd733[_0x099a('0x44')]&&_0x2dd733[_0x099a('0x44')][0x0]?_0x2dd733[_0x099a('0x44')][0x0][_0x099a('0x45')]:undefined)||null},{'name':'attrRefresh','value':_0x2dd733[_0x099a('0x61')]||(_0x2dd733[_0x099a('0x44')]&&_0x2dd733['attrs'][0x1]?_0x2dd733[_0x099a('0x44')][0x1][_0x099a('0x45')]:undefined)||0x0}];default:return[];}}catch(_0x411b60){logger[_0x099a('0x2d')](_0x099a('0x62'),JSON['stringify'](_0x411b60));return[];}}exports[_0x099a('0x63')]=function(_0x17b936,_0x5c4f19){if(_0x17b936[_0x099a('0x64')]){_0x17b936[_0x099a('0x64')][_0x099a('0x44')]=widgetAttributes(_0x17b936[_0x099a('0x64')]);}return db[_0x099a('0x35')][_0x099a('0x63')](_0x17b936[_0x099a('0x64')],{})['then'](respondWithResult(_0x5c4f19,0xc9))[_0x099a('0x65')](handleError(_0x5c4f19,null));};exports[_0x099a('0x2a')]=function(_0x369f0c,_0x40e774){if(_0x369f0c[_0x099a('0x64')]['id']){delete _0x369f0c[_0x099a('0x64')]['id'];}_0x369f0c[_0x099a('0x64')][_0x099a('0x44')]=widgetAttributes(_0x369f0c[_0x099a('0x64')]);return db[_0x099a('0x35')][_0x099a('0x40')]({'where':{'id':_0x369f0c[_0x099a('0x32')]['id']}})[_0x099a('0x2b')](handleEntityNotFound(_0x40e774,null))['then'](saveUpdates(_0x369f0c[_0x099a('0x64')],null))[_0x099a('0x2b')](respondWithResult(_0x40e774,null))['catch'](handleError(_0x40e774,null));};
\ No newline at end of file
index 494c68c..643c436 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac06=['events','../../mysqldb','DashboardItem','update','remove','hasOwnProperty','hook','exports'];(function(_0x40045b,_0x4268f1){var _0x56384e=function(_0x1186be){while(--_0x1186be){_0x40045b['push'](_0x40045b['shift']());}};_0x56384e(++_0x4268f1);}(_0xac06,0x78));var _0x6ac0=function(_0x30ebef,_0x1a930f){_0x30ebef=_0x30ebef-0x0;var _0x9c7d88=_0xac06[_0x30ebef];return _0x9c7d88;};'use strict';var EventEmitter=require(_0x6ac0('0x0'));var DashboardItem=require(_0x6ac0('0x1'))['db'][_0x6ac0('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x6ac0('0x3'),'afterDestroy':_0x6ac0('0x4')};function emitEvent(_0x3b61dc){return function(_0x4c9837,_0x4a4c4f,_0x48885b){DashboardItemEvents['emit'](_0x3b61dc+':'+_0x4c9837['id'],_0x4c9837);DashboardItemEvents['emit'](_0x3b61dc,_0x4c9837);_0x48885b(null);};}for(var e in events){if(events[_0x6ac0('0x5')](e)){var event=events[e];DashboardItem[_0x6ac0('0x6')](e,emitEvent(event));}}module[_0x6ac0('0x7')]=DashboardItemEvents;
\ No newline at end of file
+var _0xf562=['save','update','remove','emit','hook','exports','events','../../mysqldb','DashboardItem','setMaxListeners'];(function(_0x10e0d4,_0x359967){var _0x294493=function(_0x55bb8f){while(--_0x55bb8f){_0x10e0d4['push'](_0x10e0d4['shift']());}};_0x294493(++_0x359967);}(_0xf562,0x100));var _0x2f56=function(_0x3fbe5e,_0x159aa9){_0x3fbe5e=_0x3fbe5e-0x0;var _0x355e8a=_0xf562[_0x3fbe5e];return _0x355e8a;};'use strict';var EventEmitter=require(_0x2f56('0x0'));var DashboardItem=require(_0x2f56('0x1'))['db'][_0x2f56('0x2')];var DashboardItemEvents=new EventEmitter();DashboardItemEvents[_0x2f56('0x3')](0x0);var events={'afterCreate':_0x2f56('0x4'),'afterUpdate':_0x2f56('0x5'),'afterDestroy':_0x2f56('0x6')};function emitEvent(_0x217301){return function(_0x38a249,_0x55a78f,_0x29e08d){DashboardItemEvents['emit'](_0x217301+':'+_0x38a249['id'],_0x38a249);DashboardItemEvents[_0x2f56('0x7')](_0x217301,_0x38a249);_0x29e08d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];DashboardItem[_0x2f56('0x8')](e,emitEvent(event));}}module[_0x2f56('0x9')]=DashboardItemEvents;
\ No newline at end of file
index 47d756b..a30776a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x865d=['../../config/environment','./dashboardItem.attributes','exports','DashboardItem','dashboard_items','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x51fe5f,_0x1d8632){var _0x4abce9=function(_0x34afb7){while(--_0x34afb7){_0x51fe5f['push'](_0x51fe5f['shift']());}};_0x4abce9(++_0x1d8632);}(_0x865d,0x1d9));var _0xd865=function(_0x1694f5,_0x49b7c3){_0x1694f5=_0x1694f5-0x0;var _0x5b4321=_0x865d[_0x1694f5];return _0x5b4321;};'use strict';var _=require(_0xd865('0x0'));var util=require(_0xd865('0x1'));var logger=require(_0xd865('0x2'))(_0xd865('0x3'));var moment=require(_0xd865('0x4'));var BPromise=require(_0xd865('0x5'));var rp=require(_0xd865('0x6'));var fs=require('fs');var path=require(_0xd865('0x7'));var rimraf=require('rimraf');var config=require(_0xd865('0x8'));var attributes=require(_0xd865('0x9'));module[_0xd865('0xa')]=function(_0x5f166b,_0x490365){return _0x5f166b['define'](_0xd865('0xb'),attributes,{'tableName':_0xd865('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf364=['../../config/logger','api','moment','path','rimraf','../../config/environment','exports','define','DashboardItem','dashboard_items','lodash'];(function(_0x4613c1,_0x1dff1f){var _0x2602d1=function(_0x588c28){while(--_0x588c28){_0x4613c1['push'](_0x4613c1['shift']());}};_0x2602d1(++_0x1dff1f);}(_0xf364,0x78));var _0x4f36=function(_0x30ae5e,_0x391fc4){_0x30ae5e=_0x30ae5e-0x0;var _0x1f2e93=_0xf364[_0x30ae5e];return _0x1f2e93;};'use strict';var _=require(_0x4f36('0x0'));var util=require('util');var logger=require(_0x4f36('0x1'))(_0x4f36('0x2'));var moment=require(_0x4f36('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x4f36('0x4'));var rimraf=require(_0x4f36('0x5'));var config=require(_0x4f36('0x6'));var attributes=require('./dashboardItem.attributes');module[_0x4f36('0x7')]=function(_0x1de3ca,_0x38700d){return _0x1de3ca[_0x4f36('0x8')](_0x4f36('0x9'),attributes,{'tableName':_0x4f36('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f0cfebe..c26c9c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf822=['rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','register','then','info','DashboardItem,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x37d3f3,_0xca010f){var _0x185c9c=function(_0x5e2bf2){while(--_0x5e2bf2){_0x37d3f3['push'](_0x37d3f3['shift']());}};_0x185c9c(++_0xca010f);}(_0xf822,0x199));var _0x2f82=function(_0x2ee206,_0x581e6f){_0x2ee206=_0x2ee206-0x0;var _0x31361e=_0xf822[_0x2ee206];return _0x31361e;};'use strict';var _=require(_0x2f82('0x0'));var util=require(_0x2f82('0x1'));var moment=require(_0x2f82('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2f82('0x3'));var db=require(_0x2f82('0x4'))['db'];var utils=require(_0x2f82('0x5'));var logger=require(_0x2f82('0x6'))(_0x2f82('0x7'));var config=require(_0x2f82('0x8'));var jayson=require(_0x2f82('0x9'));var client=jayson[_0x2f82('0xa')][_0x2f82('0xb')]({'port':0x232a});config[_0x2f82('0xc')]=_['defaults'](config[_0x2f82('0xc')],{'host':_0x2f82('0xd'),'port':0x18eb});var socket=require(_0x2f82('0xe'))(new Redis(config[_0x2f82('0xc')]));require('./dashboardItem.socket')[_0x2f82('0xf')](socket);function respondWithRpcPromise(_0x54ccdc,_0x492331,_0x3edb99){return new BPromise(function(_0x163cff,_0x2c2e88){return client['request'](_0x54ccdc,_0x3edb99)[_0x2f82('0x10')](function(_0x2bade3){logger[_0x2f82('0x11')](_0x2f82('0x12'),_0x492331,_0x2f82('0x13'));logger[_0x2f82('0x14')]('DashboardItem,\x20%s,\x20%s,\x20%s',_0x492331,'request\x20sent',JSON[_0x2f82('0x15')](_0x2bade3));if(_0x2bade3[_0x2f82('0x16')]){if(_0x2bade3[_0x2f82('0x16')]['code']===0x1f4){logger[_0x2f82('0x16')]('DashboardItem,\x20%s,\x20%s',_0x492331,_0x2bade3['error'][_0x2f82('0x17')]);return _0x2c2e88(_0x2bade3[_0x2f82('0x16')][_0x2f82('0x17')]);}logger[_0x2f82('0x16')](_0x2f82('0x12'),_0x492331,_0x2bade3[_0x2f82('0x16')][_0x2f82('0x17')]);return _0x163cff(_0x2bade3[_0x2f82('0x16')][_0x2f82('0x17')]);}else{logger[_0x2f82('0x11')](_0x2f82('0x12'),_0x492331,_0x2f82('0x13'));_0x163cff(_0x2bade3[_0x2f82('0x18')][_0x2f82('0x17')]);}})[_0x2f82('0x19')](function(_0x44ca09){logger[_0x2f82('0x16')](_0x2f82('0x12'),_0x492331,_0x44ca09);_0x2c2e88(_0x44ca09);});});}
\ No newline at end of file
+var _0x351f=['request\x20sent','DashboardItem,\x20%s,\x20%s,\x20%s','error','code','message','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','defaults','socket.io-emitter','register','request','then','info','DashboardItem,\x20%s,\x20%s'];(function(_0x474035,_0x41e639){var _0x1b58e0=function(_0x91b15c){while(--_0x91b15c){_0x474035['push'](_0x474035['shift']());}};_0x1b58e0(++_0x41e639);}(_0x351f,0xd6));var _0xf351=function(_0x483747,_0x23878e){_0x483747=_0x483747-0x0;var _0x2ce763=_0x351f[_0x483747];return _0x2ce763;};'use strict';var _=require(_0xf351('0x0'));var util=require(_0xf351('0x1'));var moment=require(_0xf351('0x2'));var BPromise=require(_0xf351('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf351('0x4'));var db=require(_0xf351('0x5'))['db'];var utils=require(_0xf351('0x6'));var logger=require(_0xf351('0x7'))(_0xf351('0x8'));var config=require(_0xf351('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xf351('0xa')][_0xf351('0xb')]({'port':0x232a});config[_0xf351('0xc')]=_[_0xf351('0xd')](config[_0xf351('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0xf351('0xe'))(new Redis(config[_0xf351('0xc')]));require('./dashboardItem.socket')[_0xf351('0xf')](socket);function respondWithRpcPromise(_0x2178d6,_0xd26a15,_0x186222){return new BPromise(function(_0x11a2a9,_0x225906){return client[_0xf351('0x10')](_0x2178d6,_0x186222)[_0xf351('0x11')](function(_0x16d071){logger[_0xf351('0x12')](_0xf351('0x13'),_0xd26a15,_0xf351('0x14'));logger['debug'](_0xf351('0x15'),_0xd26a15,_0xf351('0x14'),JSON['stringify'](_0x16d071));if(_0x16d071[_0xf351('0x16')]){if(_0x16d071[_0xf351('0x16')][_0xf351('0x17')]===0x1f4){logger[_0xf351('0x16')](_0xf351('0x13'),_0xd26a15,_0x16d071['error']['message']);return _0x225906(_0x16d071[_0xf351('0x16')][_0xf351('0x18')]);}logger[_0xf351('0x16')](_0xf351('0x13'),_0xd26a15,_0x16d071[_0xf351('0x16')][_0xf351('0x18')]);return _0x11a2a9(_0x16d071[_0xf351('0x16')][_0xf351('0x18')]);}else{logger['info']('DashboardItem,\x20%s,\x20%s',_0xd26a15,_0xf351('0x14'));_0x11a2a9(_0x16d071['result'][_0xf351('0x18')]);}})[_0xf351('0x19')](function(_0x543813){logger['error']('DashboardItem,\x20%s,\x20%s',_0xd26a15,_0x543813);_0x225906(_0x543813);});});}
\ No newline at end of file
index f8f79a4..3906551 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x040b=['dashboardItem:','./dashboardItem.events','save','remove','emit','removeListener'];(function(_0x2aac2d,_0x335a91){var _0x18a0c8=function(_0x387402){while(--_0x387402){_0x2aac2d['push'](_0x2aac2d['shift']());}};_0x18a0c8(++_0x335a91);}(_0x040b,0x1cf));var _0xb040=function(_0x3da2f9,_0x42519a){_0x3da2f9=_0x3da2f9-0x0;var _0x4e300b=_0x040b[_0x3da2f9];return _0x4e300b;};'use strict';var DashboardItemEvents=require(_0xb040('0x0'));var events=[_0xb040('0x1'),_0xb040('0x2'),'update'];function createListener(_0x32cd03,_0x20231a){return function(_0x39387d){_0x20231a[_0xb040('0x3')](_0x32cd03,_0x39387d);};}function removeListener(_0xba76d7,_0x3bdcd2){return function(){DashboardItemEvents[_0xb040('0x4')](_0xba76d7,_0x3bdcd2);};}exports['register']=function(_0x9d1d0e){for(var _0x329bec=0x0,_0x4dfc78=events['length'];_0x329bec<_0x4dfc78;_0x329bec++){var _0x3c93ec=events[_0x329bec];var _0x7dc7d4=createListener(_0xb040('0x5')+_0x3c93ec,_0x9d1d0e);DashboardItemEvents['on'](_0x3c93ec,_0x7dc7d4);}};
\ No newline at end of file
+var _0x5ddd=['save','remove','update','emit','register','length','dashboardItem:','./dashboardItem.events'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x5ddd,0x16f));var _0xd5dd=function(_0x768458,_0x3d0933){_0x768458=_0x768458-0x0;var _0x31385c=_0x5ddd[_0x768458];return _0x31385c;};'use strict';var DashboardItemEvents=require(_0xd5dd('0x0'));var events=[_0xd5dd('0x1'),_0xd5dd('0x2'),_0xd5dd('0x3')];function createListener(_0x4f3fa8,_0xe4206){return function(_0x3ba73e){_0xe4206[_0xd5dd('0x4')](_0x4f3fa8,_0x3ba73e);};}function removeListener(_0x4a3b8d,_0x211cf0){return function(){DashboardItemEvents['removeListener'](_0x4a3b8d,_0x211cf0);};}exports[_0xd5dd('0x5')]=function(_0x52a293){for(var _0x3a054b=0x0,_0x12568c=events[_0xd5dd('0x6')];_0x3a054b<_0x12568c;_0x3a054b++){var _0x27e0f9=events[_0x3a054b];var _0x4fb384=createListener(_0xd5dd('0x7')+_0x27e0f9,_0x52a293);DashboardItemEvents['on'](_0x27e0f9,_0x4fb384);}};
\ No newline at end of file
index d31dfc5..3c6d8eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x392b=['../../config/environment','./dashboardItem.controller','get','/:id','isAuthenticated','show','create','put','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x52de0f,_0x5cd5c6){var _0x2ab1ab=function(_0x1d1341){while(--_0x1d1341){_0x52de0f['push'](_0x52de0f['shift']());}};_0x2ab1ab(++_0x5cd5c6);}(_0x392b,0x1c1));var _0xb392=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x392b[_0x502c7d];return _0x30b7ed;};'use strict';var multer=require(_0xb392('0x0'));var util=require('util');var path=require(_0xb392('0x1'));var timeout=require('connect-timeout');var express=require(_0xb392('0x2'));var router=express[_0xb392('0x3')]();var fs_extra=require(_0xb392('0x4'));var auth=require(_0xb392('0x5'));var interaction=require(_0xb392('0x6'));var config=require(_0xb392('0x7'));var controller=require(_0xb392('0x8'));router[_0xb392('0x9')](_0xb392('0xa'),auth[_0xb392('0xb')](),controller[_0xb392('0xc')]);router['post']('/',auth[_0xb392('0xb')](),controller[_0xb392('0xd')]);router[_0xb392('0xe')](_0xb392('0xa'),auth[_0xb392('0xb')](),controller[_0xb392('0xf')]);router[_0xb392('0x10')]('/:id',auth[_0xb392('0xb')](),controller[_0xb392('0x11')]);module[_0xb392('0x12')]=router;
\ No newline at end of file
+var _0xfa2f=['post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./dashboardItem.controller','/:id','isAuthenticated','show'];(function(_0x1a9dd0,_0x3d7801){var _0x4e7ecd=function(_0x2a6334){while(--_0x2a6334){_0x1a9dd0['push'](_0x1a9dd0['shift']());}};_0x4e7ecd(++_0x3d7801);}(_0xfa2f,0x196));var _0xffa2=function(_0x1b9c80,_0x503920){_0x1b9c80=_0x1b9c80-0x0;var _0x14259d=_0xfa2f[_0x1b9c80];return _0x14259d;};'use strict';var multer=require(_0xffa2('0x0'));var util=require(_0xffa2('0x1'));var path=require('path');var timeout=require(_0xffa2('0x2'));var express=require(_0xffa2('0x3'));var router=express['Router']();var fs_extra=require(_0xffa2('0x4'));var auth=require(_0xffa2('0x5'));var interaction=require(_0xffa2('0x6'));var config=require(_0xffa2('0x7'));var controller=require(_0xffa2('0x8'));router['get'](_0xffa2('0x9'),auth[_0xffa2('0xa')](),controller[_0xffa2('0xb')]);router[_0xffa2('0xc')]('/',auth[_0xffa2('0xa')](),controller[_0xffa2('0xd')]);router[_0xffa2('0xe')](_0xffa2('0x9'),auth[_0xffa2('0xa')](),controller[_0xffa2('0xf')]);router[_0xffa2('0x10')]('/:id',auth[_0xffa2('0xa')](),controller[_0xffa2('0x11')]);module[_0xffa2('0x12')]=router;
\ No newline at end of file
index bb60eb7..0a7eeb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc46c=['STRING','ENUM','first','second','sequelize','exports'];(function(_0x2e41e2,_0x4e7250){var _0x2844d6=function(_0x28ce24){while(--_0x28ce24){_0x2e41e2['push'](_0x2e41e2['shift']());}};_0x2844d6(++_0x4e7250);}(_0xc46c,0x1ea));var _0xcc46=function(_0xcd0918,_0x56bdf9){_0xcd0918=_0xcd0918-0x0;var _0x250704=_0xc46c[_0xcd0918];return _0x250704;};'use strict';var Sequelize=require(_0xcc46('0x0'));module[_0xcc46('0x1')]={'name':{'type':Sequelize[_0xcc46('0x2')],'allowNull':![]},'level':{'type':Sequelize[_0xcc46('0x3')](_0xcc46('0x4'),_0xcc46('0x5'),'third'),'allowNull':![],'defaultValue':_0xcc46('0x4')},'description':{'type':Sequelize[_0xcc46('0x2')]}};
\ No newline at end of file
+var _0x4983=['first','second','third','sequelize','STRING','ENUM'];(function(_0x4c4fbe,_0x483482){var _0x39b3b9=function(_0x803f56){while(--_0x803f56){_0x4c4fbe['push'](_0x4c4fbe['shift']());}};_0x39b3b9(++_0x483482);}(_0x4983,0xed));var _0x3498=function(_0x2537c2,_0x3d65f1){_0x2537c2=_0x2537c2-0x0;var _0x1c1799=_0x4983[_0x2537c2];return _0x1c1799;};'use strict';var Sequelize=require(_0x3498('0x0'));module['exports']={'name':{'type':Sequelize[_0x3498('0x1')],'allowNull':![]},'level':{'type':Sequelize[_0x3498('0x2')](_0x3498('0x3'),_0x3498('0x4'),_0x3498('0x5')),'allowNull':![],'defaultValue':_0x3498('0x3')},'description':{'type':Sequelize[_0x3498('0x1')]}};
\ No newline at end of file
index 2bf5400..426927b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a59=['to-csv','ejs','lodash','crypto','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','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','get','Dispositions','UserProfileResource','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','Disposition','includeAll','include','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','rimraf','fast-json-patch','request-promise','util','path','sox'];(function(_0x26b80e,_0x5c9333){var _0x84a8a8=function(_0x2e5b4a){while(--_0x2e5b4a){_0x26b80e['push'](_0x26b80e['shift']());}};_0x84a8a8(++_0x5c9333);}(_0x7a59,0x199));var _0x97a5=function(_0x29db36,_0x410ae9){_0x29db36=_0x29db36-0x0;var _0x234e87=_0x7a59[_0x29db36];return _0x234e87;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x97a5('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x97a5('0x1'));var rp=require(_0x97a5('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x97a5('0x3'));var path=require(_0x97a5('0x4'));var sox=require(_0x97a5('0x5'));var csv=require(_0x97a5('0x6'));var ejs=require(_0x97a5('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x97a5('0x8'));var squel=require('squel');var crypto=require(_0x97a5('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x97a5('0xa'));var toCsv=require(_0x97a5('0x6'));var querystring=require(_0x97a5('0xb'));var Papa=require(_0x97a5('0xc'));var Redis=require(_0x97a5('0xd'));var authService=require(_0x97a5('0xe'));var qs=require(_0x97a5('0xf'));var as=require(_0x97a5('0x10'));var hardwareService=require(_0x97a5('0x11'));var logger=require(_0x97a5('0x12'))(_0x97a5('0x13'));var utils=require(_0x97a5('0x14'));var config=require(_0x97a5('0x15'));var licenseUtil=require(_0x97a5('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1943ba,_0x440c7d){_0x440c7d=_0x440c7d||0xcc;return function(_0x41784d){if(_0x41784d){return _0x1943ba[_0x97a5('0x17')](_0x440c7d);}return _0x1943ba[_0x97a5('0x18')](_0x440c7d)[_0x97a5('0x19')]();};}function respondWithResult(_0x385f59,_0x10ee25){_0x10ee25=_0x10ee25||0xc8;return function(_0x2e08ce){if(_0x2e08ce){return _0x385f59[_0x97a5('0x18')](_0x10ee25)[_0x97a5('0x1a')](_0x2e08ce);}};}function respondWithFilteredResult(_0x2804ef,_0x25350b){return function(_0x46bc6f){if(_0x46bc6f){var _0x5526c2=typeof _0x25350b[_0x97a5('0x1b')]===_0x97a5('0x1c')&&typeof _0x25350b[_0x97a5('0x1d')]===_0x97a5('0x1c');var _0x55d4c1=_0x46bc6f[_0x97a5('0x1e')];var _0x56d565=_0x5526c2?0x0:_0x25350b[_0x97a5('0x1b')];var _0x48c6ab=_0x5526c2?_0x46bc6f[_0x97a5('0x1e')]:_0x25350b[_0x97a5('0x1b')]+_0x25350b[_0x97a5('0x1d')];var _0x45de2d;if(_0x48c6ab>=_0x55d4c1){_0x48c6ab=_0x55d4c1;_0x45de2d=0xc8;}else{_0x45de2d=0xce;}_0x2804ef[_0x97a5('0x18')](_0x45de2d);return _0x2804ef[_0x97a5('0x1f')](_0x97a5('0x20'),_0x56d565+'-'+_0x48c6ab+'/'+_0x55d4c1)[_0x97a5('0x1a')](_0x46bc6f);}return null;};}function patchUpdates(_0xa9d6af){return function(_0xcb897f){try{jsonpatch[_0x97a5('0x21')](_0xcb897f,_0xa9d6af,!![]);}catch(_0x2a3ded){return BPromise['reject'](_0x2a3ded);}return _0xcb897f[_0x97a5('0x22')]();};}function saveUpdates(_0x191dc2,_0xfb12ba){return function(_0x4e3e0e){if(_0x4e3e0e){return _0x4e3e0e[_0x97a5('0x23')](_0x191dc2)[_0x97a5('0x24')](function(_0x3ac6f6){return _0x3ac6f6;});}return null;};}function removeEntity(_0xf6ad5,_0x1c87e8){return function(_0x28b48c){if(_0x28b48c){return _0x28b48c[_0x97a5('0x25')]()[_0x97a5('0x24')](function(){var _0x1b2b8a=_0x28b48c[_0x97a5('0x26')]({'plain':!![]});var _0x57eda0=_0x97a5('0x27');return db[_0x97a5('0x28')][_0x97a5('0x25')]({'where':{'type':_0x57eda0,'resourceId':_0x1b2b8a['id']}})[_0x97a5('0x24')](function(){return _0x28b48c;});})[_0x97a5('0x24')](function(){_0xf6ad5['status'](0xcc)[_0x97a5('0x19')]();});}};}function handleEntityNotFound(_0x39fb13,_0x6996){return function(_0xaf0198){if(!_0xaf0198){_0x39fb13[_0x97a5('0x17')](0x194);}return _0xaf0198;};}function handleError(_0x906f84,_0x386e76){_0x386e76=_0x386e76||0x1f4;return function(_0x27a5ec){logger[_0x97a5('0x29')](_0x27a5ec[_0x97a5('0x2a')]);if(_0x27a5ec[_0x97a5('0x2b')]){delete _0x27a5ec[_0x97a5('0x2b')];}_0x906f84[_0x97a5('0x18')](_0x386e76)[_0x97a5('0x2c')](_0x27a5ec);};}exports[_0x97a5('0x2d')]=function(_0x5f10dd,_0x462c0f){var _0x1b5d4e={},_0x279a59={},_0x3a112e={'count':0x0,'rows':[]};var _0x3b69b4=_[_0x97a5('0x2e')](db['Disposition'][_0x97a5('0x2f')],function(_0x4ac58f){return{'name':_0x4ac58f[_0x97a5('0x30')],'type':_0x4ac58f[_0x97a5('0x31')][_0x97a5('0x32')]};});_0x279a59[_0x97a5('0x33')]=_['map'](_0x3b69b4,'name');_0x279a59['query']=_[_0x97a5('0x34')](_0x5f10dd[_0x97a5('0x35')]);_0x279a59[_0x97a5('0x36')]=_[_0x97a5('0x37')](_0x279a59[_0x97a5('0x33')],_0x279a59['query']);_0x1b5d4e['attributes']=_[_0x97a5('0x37')](_0x279a59[_0x97a5('0x33')],qs[_0x97a5('0x38')](_0x5f10dd[_0x97a5('0x35')][_0x97a5('0x38')]));_0x1b5d4e[_0x97a5('0x39')]=_0x1b5d4e[_0x97a5('0x39')][_0x97a5('0x3a')]?_0x1b5d4e[_0x97a5('0x39')]:_0x279a59[_0x97a5('0x33')];if(!_0x5f10dd['query'][_0x97a5('0x3b')](_0x97a5('0x3c'))){_0x1b5d4e[_0x97a5('0x1d')]=qs[_0x97a5('0x1d')](_0x5f10dd[_0x97a5('0x35')][_0x97a5('0x1d')]);_0x1b5d4e[_0x97a5('0x1b')]=qs[_0x97a5('0x1b')](_0x5f10dd[_0x97a5('0x35')]['offset']);}_0x1b5d4e[_0x97a5('0x3d')]=qs[_0x97a5('0x3e')](_0x5f10dd[_0x97a5('0x35')][_0x97a5('0x3e')]);_0x1b5d4e[_0x97a5('0x3f')]=qs['filters'](_[_0x97a5('0x40')](_0x5f10dd['query'],_0x279a59[_0x97a5('0x36')]),_0x3b69b4);if(_0x5f10dd[_0x97a5('0x35')][_0x97a5('0x41')]){_0x1b5d4e[_0x97a5('0x3f')]=_[_0x97a5('0x42')](_0x1b5d4e['where'],{'$or':_['map'](_0x3b69b4,function(_0x469e70){if(_0x469e70['type']!==_0x97a5('0x43')){var _0x295c48={};_0x295c48[_0x469e70[_0x97a5('0x2b')]]={'$like':'%'+_0x5f10dd[_0x97a5('0x35')][_0x97a5('0x41')]+'%'};return _0x295c48;}})});}_0x1b5d4e=_[_0x97a5('0x42')]({},_0x1b5d4e,_0x5f10dd[_0x97a5('0x44')]);var _0x1787e6={'where':_0x1b5d4e[_0x97a5('0x3f')]};return db[_0x97a5('0x45')][_0x97a5('0x1e')](_0x1787e6)['then'](function(_0x5a5c32){_0x3a112e['count']=_0x5a5c32;if(_0x5f10dd[_0x97a5('0x35')][_0x97a5('0x46')]){_0x1b5d4e[_0x97a5('0x47')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0x1b5d4e);})[_0x97a5('0x24')](function(_0x2f9159){_0x3a112e['rows']=_0x2f9159;return _0x3a112e;})[_0x97a5('0x24')](respondWithFilteredResult(_0x462c0f,_0x1b5d4e))[_0x97a5('0x48')](handleError(_0x462c0f,null));};exports[_0x97a5('0x49')]=function(_0x4ebf18,_0xd146ed){var _0xcf2579={'raw':!![],'where':{'id':_0x4ebf18[_0x97a5('0x4a')]['id']}},_0xec18da={};_0xec18da[_0x97a5('0x33')]=_['keys'](db[_0x97a5('0x45')][_0x97a5('0x2f')]);_0xec18da[_0x97a5('0x35')]=_[_0x97a5('0x34')](_0x4ebf18[_0x97a5('0x35')]);_0xec18da[_0x97a5('0x36')]=_[_0x97a5('0x37')](_0xec18da['model'],_0xec18da[_0x97a5('0x35')]);_0xcf2579['attributes']=_[_0x97a5('0x37')](_0xec18da[_0x97a5('0x33')],qs[_0x97a5('0x38')](_0x4ebf18['query']['fields']));_0xcf2579['attributes']=_0xcf2579['attributes'][_0x97a5('0x3a')]?_0xcf2579[_0x97a5('0x39')]:_0xec18da[_0x97a5('0x33')];if(_0x4ebf18[_0x97a5('0x35')][_0x97a5('0x46')]){_0xcf2579[_0x97a5('0x47')]=[{'all':!![]}];}_0xcf2579=_[_0x97a5('0x42')]({},_0xcf2579,_0x4ebf18['options']);return db[_0x97a5('0x45')][_0x97a5('0x4b')](_0xcf2579)[_0x97a5('0x24')](handleEntityNotFound(_0xd146ed,null))[_0x97a5('0x24')](respondWithResult(_0xd146ed,null))['catch'](handleError(_0xd146ed,null));};exports[_0x97a5('0x4c')]=function(_0x6d0f63,_0x42b2a8){return db[_0x97a5('0x45')][_0x97a5('0x4c')](_0x6d0f63[_0x97a5('0x4d')],{})[_0x97a5('0x24')](function(_0x29f2dd){var _0xef7028=_0x6d0f63[_0x97a5('0x4e')][_0x97a5('0x26')]({'plain':!![]});if(!_0xef7028)throw new Error(_0x97a5('0x4f'));if(_0xef7028[_0x97a5('0x50')]===_0x97a5('0x4e')){var _0x472bc8=_0x29f2dd[_0x97a5('0x26')]({'plain':!![]});var _0x405212=_0x97a5('0x27');return db['UserProfileSection'][_0x97a5('0x4b')]({'where':{'name':_0x405212,'userProfileId':_0xef7028[_0x97a5('0x51')]},'raw':!![]})[_0x97a5('0x24')](function(_0x299147){if(_0x299147&&_0x299147['autoAssociation']===0x0){return db['UserProfileResource'][_0x97a5('0x4c')]({'name':_0x472bc8[_0x97a5('0x2b')],'resourceId':_0x472bc8['id'],'type':_0x299147['name'],'sectionId':_0x299147['id']},{})[_0x97a5('0x24')](function(){return _0x29f2dd;});}else{return _0x29f2dd;}})[_0x97a5('0x48')](function(_0x277678){logger[_0x97a5('0x29')](_0x97a5('0x52'),_0x277678);throw _0x277678;});}return _0x29f2dd;})[_0x97a5('0x24')](respondWithResult(_0x42b2a8,0xc9))[_0x97a5('0x48')](handleError(_0x42b2a8,null));};exports[_0x97a5('0x23')]=function(_0x4a6e8a,_0x153ace){if(_0x4a6e8a['body']['id']){delete _0x4a6e8a[_0x97a5('0x4d')]['id'];}return db['Disposition'][_0x97a5('0x4b')]({'where':{'id':_0x4a6e8a['params']['id']}})[_0x97a5('0x24')](handleEntityNotFound(_0x153ace,null))['then'](saveUpdates(_0x4a6e8a['body'],null))[_0x97a5('0x24')](respondWithResult(_0x153ace,null))[_0x97a5('0x48')](handleError(_0x153ace,null));};exports[_0x97a5('0x25')]=function(_0x5ae6d8,_0x46cc55){return db[_0x97a5('0x45')]['find']({'where':{'id':_0x5ae6d8[_0x97a5('0x4a')]['id']}})['then'](handleEntityNotFound(_0x46cc55,null))[_0x97a5('0x24')](removeEntity(_0x46cc55,null))[_0x97a5('0x48')](handleError(_0x46cc55,null));};
\ No newline at end of file
+var _0x4d4c=['lodash','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','Dispositions','UserProfileResource','stack','send','index','map','rawAttributes','fieldName','type','model','name','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','Disposition','includeAll','include','findAll','rows','catch','show','keys','find','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','create','body','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra'];(function(_0x584995,_0x5d2222){var _0x1db779=function(_0x42f9d9){while(--_0x42f9d9){_0x584995['push'](_0x584995['shift']());}};_0x1db779(++_0x5d2222);}(_0x4d4c,0x1f2));var _0xc4d4=function(_0x33fcbb,_0x291d0f){_0x33fcbb=_0x33fcbb-0x0;var _0x2efe40=_0x4d4c[_0x33fcbb];return _0x2efe40;};'use strict';var emlformat=require(_0xc4d4('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xc4d4('0x1'));var jsonpatch=require(_0xc4d4('0x2'));var rp=require(_0xc4d4('0x3'));var moment=require(_0xc4d4('0x4'));var BPromise=require(_0xc4d4('0x5'));var Mustache=require(_0xc4d4('0x6'));var util=require(_0xc4d4('0x7'));var path=require(_0xc4d4('0x8'));var sox=require(_0xc4d4('0x9'));var csv=require(_0xc4d4('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc4d4('0xb'));var _=require(_0xc4d4('0xc'));var squel=require('squel');var crypto=require(_0xc4d4('0xd'));var jsforce=require(_0xc4d4('0xe'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc4d4('0xf'));var Redis=require(_0xc4d4('0x10'));var authService=require(_0xc4d4('0x11'));var qs=require(_0xc4d4('0x12'));var as=require(_0xc4d4('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc4d4('0x14'))(_0xc4d4('0x15'));var utils=require(_0xc4d4('0x16'));var config=require(_0xc4d4('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xc4d4('0x18'))['db'];function respondWithStatusCode(_0x14c33e,_0x5e65e2){_0x5e65e2=_0x5e65e2||0xcc;return function(_0x477c4a){if(_0x477c4a){return _0x14c33e[_0xc4d4('0x19')](_0x5e65e2);}return _0x14c33e[_0xc4d4('0x1a')](_0x5e65e2)[_0xc4d4('0x1b')]();};}function respondWithResult(_0x2183c4,_0x1ee0e8){_0x1ee0e8=_0x1ee0e8||0xc8;return function(_0x5eb7c1){if(_0x5eb7c1){return _0x2183c4['status'](_0x1ee0e8)['json'](_0x5eb7c1);}};}function respondWithFilteredResult(_0x554a63,_0x3a4667){return function(_0x14912d){if(_0x14912d){var _0x4fa845=typeof _0x3a4667[_0xc4d4('0x1c')]===_0xc4d4('0x1d')&&typeof _0x3a4667[_0xc4d4('0x1e')]===_0xc4d4('0x1d');var _0x21578b=_0x14912d[_0xc4d4('0x1f')];var _0x6aa44e=_0x4fa845?0x0:_0x3a4667['offset'];var _0x38e200=_0x4fa845?_0x14912d[_0xc4d4('0x1f')]:_0x3a4667['offset']+_0x3a4667[_0xc4d4('0x1e')];var _0x3dbf83;if(_0x38e200>=_0x21578b){_0x38e200=_0x21578b;_0x3dbf83=0xc8;}else{_0x3dbf83=0xce;}_0x554a63[_0xc4d4('0x1a')](_0x3dbf83);return _0x554a63[_0xc4d4('0x20')](_0xc4d4('0x21'),_0x6aa44e+'-'+_0x38e200+'/'+_0x21578b)['json'](_0x14912d);}return null;};}function patchUpdates(_0x465283){return function(_0x55ba68){try{jsonpatch[_0xc4d4('0x22')](_0x55ba68,_0x465283,!![]);}catch(_0x3b2409){return BPromise[_0xc4d4('0x23')](_0x3b2409);}return _0x55ba68[_0xc4d4('0x24')]();};}function saveUpdates(_0x2e8b9b,_0x8aa3a9){return function(_0x5e0da7){if(_0x5e0da7){return _0x5e0da7[_0xc4d4('0x25')](_0x2e8b9b)[_0xc4d4('0x26')](function(_0x3c9171){return _0x3c9171;});}return null;};}function removeEntity(_0x25f942,_0x523b01){return function(_0x56a017){if(_0x56a017){return _0x56a017[_0xc4d4('0x27')]()['then'](function(){var _0x5ef1f3=_0x56a017['get']({'plain':!![]});var _0x38bdb3=_0xc4d4('0x28');return db[_0xc4d4('0x29')][_0xc4d4('0x27')]({'where':{'type':_0x38bdb3,'resourceId':_0x5ef1f3['id']}})[_0xc4d4('0x26')](function(){return _0x56a017;});})[_0xc4d4('0x26')](function(){_0x25f942['status'](0xcc)[_0xc4d4('0x1b')]();});}};}function handleEntityNotFound(_0x115acb,_0xf49545){return function(_0x6e1ded){if(!_0x6e1ded){_0x115acb[_0xc4d4('0x19')](0x194);}return _0x6e1ded;};}function handleError(_0x5d9089,_0x4938bd){_0x4938bd=_0x4938bd||0x1f4;return function(_0x4883e0){logger['error'](_0x4883e0[_0xc4d4('0x2a')]);if(_0x4883e0['name']){delete _0x4883e0['name'];}_0x5d9089[_0xc4d4('0x1a')](_0x4938bd)[_0xc4d4('0x2b')](_0x4883e0);};}exports[_0xc4d4('0x2c')]=function(_0x16632c,_0x1ff1c1){var _0x2ff056={},_0x4a9dc6={},_0x2ec080={'count':0x0,'rows':[]};var _0x19a8f1=_[_0xc4d4('0x2d')](db['Disposition'][_0xc4d4('0x2e')],function(_0x4ad96b){return{'name':_0x4ad96b[_0xc4d4('0x2f')],'type':_0x4ad96b[_0xc4d4('0x30')]['key']};});_0x4a9dc6[_0xc4d4('0x31')]=_[_0xc4d4('0x2d')](_0x19a8f1,_0xc4d4('0x32'));_0x4a9dc6['query']=_['keys'](_0x16632c[_0xc4d4('0x33')]);_0x4a9dc6[_0xc4d4('0x34')]=_[_0xc4d4('0x35')](_0x4a9dc6[_0xc4d4('0x31')],_0x4a9dc6['query']);_0x2ff056[_0xc4d4('0x36')]=_[_0xc4d4('0x35')](_0x4a9dc6[_0xc4d4('0x31')],qs[_0xc4d4('0x37')](_0x16632c[_0xc4d4('0x33')][_0xc4d4('0x37')]));_0x2ff056[_0xc4d4('0x36')]=_0x2ff056[_0xc4d4('0x36')][_0xc4d4('0x38')]?_0x2ff056[_0xc4d4('0x36')]:_0x4a9dc6[_0xc4d4('0x31')];if(!_0x16632c['query'][_0xc4d4('0x39')](_0xc4d4('0x3a'))){_0x2ff056[_0xc4d4('0x1e')]=qs[_0xc4d4('0x1e')](_0x16632c[_0xc4d4('0x33')][_0xc4d4('0x1e')]);_0x2ff056[_0xc4d4('0x1c')]=qs[_0xc4d4('0x1c')](_0x16632c[_0xc4d4('0x33')][_0xc4d4('0x1c')]);}_0x2ff056[_0xc4d4('0x3b')]=qs[_0xc4d4('0x3c')](_0x16632c[_0xc4d4('0x33')]['sort']);_0x2ff056[_0xc4d4('0x3d')]=qs[_0xc4d4('0x34')](_[_0xc4d4('0x3e')](_0x16632c['query'],_0x4a9dc6[_0xc4d4('0x34')]),_0x19a8f1);if(_0x16632c['query'][_0xc4d4('0x3f')]){_0x2ff056['where']=_[_0xc4d4('0x40')](_0x2ff056['where'],{'$or':_[_0xc4d4('0x2d')](_0x19a8f1,function(_0x45737e){if(_0x45737e['type']!==_0xc4d4('0x41')){var _0x3f253b={};_0x3f253b[_0x45737e[_0xc4d4('0x32')]]={'$like':'%'+_0x16632c[_0xc4d4('0x33')][_0xc4d4('0x3f')]+'%'};return _0x3f253b;}})});}_0x2ff056=_[_0xc4d4('0x40')]({},_0x2ff056,_0x16632c[_0xc4d4('0x42')]);var _0x1e0126={'where':_0x2ff056[_0xc4d4('0x3d')]};return db[_0xc4d4('0x43')]['count'](_0x1e0126)[_0xc4d4('0x26')](function(_0x34e2d9){_0x2ec080[_0xc4d4('0x1f')]=_0x34e2d9;if(_0x16632c['query'][_0xc4d4('0x44')]){_0x2ff056[_0xc4d4('0x45')]=[{'all':!![]}];}return db[_0xc4d4('0x43')][_0xc4d4('0x46')](_0x2ff056);})[_0xc4d4('0x26')](function(_0x3a5b5f){_0x2ec080[_0xc4d4('0x47')]=_0x3a5b5f;return _0x2ec080;})['then'](respondWithFilteredResult(_0x1ff1c1,_0x2ff056))[_0xc4d4('0x48')](handleError(_0x1ff1c1,null));};exports[_0xc4d4('0x49')]=function(_0x55c2a8,_0x473d3a){var _0x50e44f={'raw':!![],'where':{'id':_0x55c2a8['params']['id']}},_0x420915={};_0x420915[_0xc4d4('0x31')]=_[_0xc4d4('0x4a')](db[_0xc4d4('0x43')][_0xc4d4('0x2e')]);_0x420915['query']=_[_0xc4d4('0x4a')](_0x55c2a8[_0xc4d4('0x33')]);_0x420915[_0xc4d4('0x34')]=_[_0xc4d4('0x35')](_0x420915['model'],_0x420915['query']);_0x50e44f[_0xc4d4('0x36')]=_[_0xc4d4('0x35')](_0x420915[_0xc4d4('0x31')],qs[_0xc4d4('0x37')](_0x55c2a8[_0xc4d4('0x33')][_0xc4d4('0x37')]));_0x50e44f[_0xc4d4('0x36')]=_0x50e44f[_0xc4d4('0x36')][_0xc4d4('0x38')]?_0x50e44f[_0xc4d4('0x36')]:_0x420915[_0xc4d4('0x31')];if(_0x55c2a8[_0xc4d4('0x33')][_0xc4d4('0x44')]){_0x50e44f['include']=[{'all':!![]}];}_0x50e44f=_[_0xc4d4('0x40')]({},_0x50e44f,_0x55c2a8[_0xc4d4('0x42')]);return db[_0xc4d4('0x43')][_0xc4d4('0x4b')](_0x50e44f)[_0xc4d4('0x26')](handleEntityNotFound(_0x473d3a,null))[_0xc4d4('0x26')](respondWithResult(_0x473d3a,null))[_0xc4d4('0x48')](handleError(_0x473d3a,null));};exports['create']=function(_0x56c41a,_0x3122d6){return db[_0xc4d4('0x43')]['create'](_0x56c41a['body'],{})[_0xc4d4('0x26')](function(_0x2a91a7){var _0x4fbaa6=_0x56c41a[_0xc4d4('0x4c')][_0xc4d4('0x4d')]({'plain':!![]});if(!_0x4fbaa6)throw new Error(_0xc4d4('0x4e'));if(_0x4fbaa6[_0xc4d4('0x4f')]===_0xc4d4('0x4c')){var _0x4745b9=_0x2a91a7[_0xc4d4('0x4d')]({'plain':!![]});var _0x1171b7=_0xc4d4('0x28');return db['UserProfileSection'][_0xc4d4('0x4b')]({'where':{'name':_0x1171b7,'userProfileId':_0x4fbaa6[_0xc4d4('0x50')]},'raw':!![]})[_0xc4d4('0x26')](function(_0x454707){if(_0x454707&&_0x454707[_0xc4d4('0x51')]===0x0){return db['UserProfileResource'][_0xc4d4('0x52')]({'name':_0x4745b9[_0xc4d4('0x32')],'resourceId':_0x4745b9['id'],'type':_0x454707[_0xc4d4('0x32')],'sectionId':_0x454707['id']},{})[_0xc4d4('0x26')](function(){return _0x2a91a7;});}else{return _0x2a91a7;}})[_0xc4d4('0x48')](function(_0x1165a9){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1165a9);throw _0x1165a9;});}return _0x2a91a7;})[_0xc4d4('0x26')](respondWithResult(_0x3122d6,0xc9))[_0xc4d4('0x48')](handleError(_0x3122d6,null));};exports[_0xc4d4('0x25')]=function(_0x3dbf4d,_0xaf7961){if(_0x3dbf4d[_0xc4d4('0x53')]['id']){delete _0x3dbf4d[_0xc4d4('0x53')]['id'];}return db[_0xc4d4('0x43')][_0xc4d4('0x4b')]({'where':{'id':_0x3dbf4d[_0xc4d4('0x54')]['id']}})[_0xc4d4('0x26')](handleEntityNotFound(_0xaf7961,null))['then'](saveUpdates(_0x3dbf4d[_0xc4d4('0x53')],null))['then'](respondWithResult(_0xaf7961,null))['catch'](handleError(_0xaf7961,null));};exports[_0xc4d4('0x27')]=function(_0x5ac6c2,_0x537f46){return db[_0xc4d4('0x43')][_0xc4d4('0x4b')]({'where':{'id':_0x5ac6c2[_0xc4d4('0x54')]['id']}})[_0xc4d4('0x26')](handleEntityNotFound(_0x537f46,null))[_0xc4d4('0x26')](removeEntity(_0x537f46,null))[_0xc4d4('0x48')](handleError(_0x537f46,null));};
\ No newline at end of file
index b8ce851..53c3918 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa24d=['name_openchannel','OpenchannelAccountId','name_whatsapp','WhatsappAccountId','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./disposition.attributes','exports','Disposition','tools_dispositions','name','name_chat','name_mail','MailAccountId','name_sms','SmsAccountId','name_fax','FaxAccountId'];(function(_0x4bf821,_0x37a4e0){var _0x3e8439=function(_0x3d76f6){while(--_0x3d76f6){_0x4bf821['push'](_0x4bf821['shift']());}};_0x3e8439(++_0x37a4e0);}(_0xa24d,0xf4));var _0xda24=function(_0x5d8cd3,_0x1638dd){_0x5d8cd3=_0x5d8cd3-0x0;var _0x804d64=_0xa24d[_0x5d8cd3];return _0x804d64;};'use strict';var _=require(_0xda24('0x0'));var util=require(_0xda24('0x1'));var logger=require(_0xda24('0x2'))('api');var moment=require(_0xda24('0x3'));var BPromise=require(_0xda24('0x4'));var rp=require(_0xda24('0x5'));var fs=require('fs');var path=require(_0xda24('0x6'));var rimraf=require('rimraf');var config=require(_0xda24('0x7'));var attributes=require(_0xda24('0x8'));module[_0xda24('0x9')]=function(_0x1b249b,_0x399dd6){return _0x1b249b['define'](_0xda24('0xa'),attributes,{'tableName':_0xda24('0xb'),'paranoid':![],'indexes':[{'unique':!![],'name':'name_voice','fields':[_0xda24('0xc'),'ListId']},{'unique':!![],'name':_0xda24('0xd'),'fields':['name','ChatWebsiteId']},{'unique':!![],'name':_0xda24('0xe'),'fields':[_0xda24('0xc'),_0xda24('0xf')]},{'unique':!![],'name':_0xda24('0x10'),'fields':[_0xda24('0xc'),_0xda24('0x11')]},{'unique':!![],'name':_0xda24('0x12'),'fields':[_0xda24('0xc'),_0xda24('0x13')]},{'unique':!![],'name':_0xda24('0x14'),'fields':['name',_0xda24('0x15')]},{'unique':!![],'name':_0xda24('0x16'),'fields':[_0xda24('0xc'),_0xda24('0x17')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8f81=['define','Disposition','tools_dispositions','name_voice','name','ListId','name_chat','name_mail','MailAccountId','name_sms','SmsAccountId','name_fax','FaxAccountId','name_openchannel','OpenchannelAccountId','name_whatsapp','lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./disposition.attributes','exports'];(function(_0x22ee7b,_0x293882){var _0x14cac9=function(_0xd05985){while(--_0xd05985){_0x22ee7b['push'](_0x22ee7b['shift']());}};_0x14cac9(++_0x293882);}(_0x8f81,0x162));var _0x18f8=function(_0x38cd9a,_0x37bec0){_0x38cd9a=_0x38cd9a-0x0;var _0xbe040f=_0x8f81[_0x38cd9a];return _0xbe040f;};'use strict';var _=require(_0x18f8('0x0'));var util=require(_0x18f8('0x1'));var logger=require(_0x18f8('0x2'))(_0x18f8('0x3'));var moment=require(_0x18f8('0x4'));var BPromise=require('bluebird');var rp=require(_0x18f8('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x18f8('0x6'));var config=require(_0x18f8('0x7'));var attributes=require(_0x18f8('0x8'));module[_0x18f8('0x9')]=function(_0x3119f7,_0x3cc6e5){return _0x3119f7[_0x18f8('0xa')](_0x18f8('0xb'),attributes,{'tableName':_0x18f8('0xc'),'paranoid':![],'indexes':[{'unique':!![],'name':_0x18f8('0xd'),'fields':[_0x18f8('0xe'),_0x18f8('0xf')]},{'unique':!![],'name':_0x18f8('0x10'),'fields':[_0x18f8('0xe'),'ChatWebsiteId']},{'unique':!![],'name':_0x18f8('0x11'),'fields':[_0x18f8('0xe'),_0x18f8('0x12')]},{'unique':!![],'name':_0x18f8('0x13'),'fields':[_0x18f8('0xe'),_0x18f8('0x14')]},{'unique':!![],'name':_0x18f8('0x15'),'fields':[_0x18f8('0xe'),_0x18f8('0x16')]},{'unique':!![],'name':_0x18f8('0x17'),'fields':[_0x18f8('0xe'),_0x18f8('0x18')]},{'unique':!![],'name':_0x18f8('0x19'),'fields':[_0x18f8('0xe'),'WhatsappAccountId']}],'timestamps':!![]});};
\ No newline at end of file
index 227ab4a..a9c327c 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(_0x611b07,_0x26edd5){var _0x477f70=function(_0x5424ef){while(--_0x5424ef){_0x611b07['push'](_0x611b07['shift']());}};_0x477f70(++_0x26edd5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bf97,_0xc60f9d){_0x34bf97=_0x34bf97-0x0;var _0x292719=_0xa9e0[_0x34bf97];return _0x292719;};'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(_0x4b4e30,_0x49894f){var _0x6eb696=function(_0x1f09ca){while(--_0x1f09ca){_0x4b4e30['push'](_0x4b4e30['shift']());}};_0x6eb696(++_0x49894f);}(_0xa9e0,0x123));var _0x0a9e=function(_0x934425,_0x5af72f){_0x934425=_0x934425-0x0;var _0x31d596=_0xa9e0[_0x934425];return _0x31d596;};'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 4d3635d..9514177 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7f63=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./disposition.controller','get','isAuthenticated','/:id','show','post','create','put','update','delete','destroy','exports','multer','util'];(function(_0x5138e0,_0x24fbbc){var _0x18e57b=function(_0x5eda17){while(--_0x5eda17){_0x5138e0['push'](_0x5138e0['shift']());}};_0x18e57b(++_0x24fbbc);}(_0x7f63,0x15e));var _0x37f6=function(_0x37dee5,_0x894eb5){_0x37dee5=_0x37dee5-0x0;var _0x42544b=_0x7f63[_0x37dee5];return _0x42544b;};'use strict';var multer=require(_0x37f6('0x0'));var util=require(_0x37f6('0x1'));var path=require(_0x37f6('0x2'));var timeout=require(_0x37f6('0x3'));var express=require(_0x37f6('0x4'));var router=express[_0x37f6('0x5')]();var fs_extra=require(_0x37f6('0x6'));var auth=require(_0x37f6('0x7'));var interaction=require(_0x37f6('0x8'));var config=require(_0x37f6('0x9'));var controller=require(_0x37f6('0xa'));router[_0x37f6('0xb')]('/',auth[_0x37f6('0xc')](),controller['index']);router['get'](_0x37f6('0xd'),auth[_0x37f6('0xc')](),controller[_0x37f6('0xe')]);router[_0x37f6('0xf')]('/',auth[_0x37f6('0xc')](),controller[_0x37f6('0x10')]);router[_0x37f6('0x11')]('/:id',auth[_0x37f6('0xc')](),controller[_0x37f6('0x12')]);router[_0x37f6('0x13')]('/:id',auth['isAuthenticated'](),controller[_0x37f6('0x14')]);module[_0x37f6('0x15')]=router;
\ No newline at end of file
+var _0x78a8=['destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','/:id','show','post','create','put','update','delete'];(function(_0x4a7756,_0x97b450){var _0x26b489=function(_0x1147e9){while(--_0x1147e9){_0x4a7756['push'](_0x4a7756['shift']());}};_0x26b489(++_0x97b450);}(_0x78a8,0x1b7));var _0x878a=function(_0x5988a9,_0x29ea05){_0x5988a9=_0x5988a9-0x0;var _0x2bb57f=_0x78a8[_0x5988a9];return _0x2bb57f;};'use strict';var multer=require(_0x878a('0x0'));var util=require('util');var path=require(_0x878a('0x1'));var timeout=require(_0x878a('0x2'));var express=require(_0x878a('0x3'));var router=express[_0x878a('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x878a('0x5'));var interaction=require(_0x878a('0x6'));var config=require(_0x878a('0x7'));var controller=require('./disposition.controller');router['get']('/',auth[_0x878a('0x8')](),controller[_0x878a('0x9')]);router['get'](_0x878a('0xa'),auth['isAuthenticated'](),controller[_0x878a('0xb')]);router[_0x878a('0xc')]('/',auth['isAuthenticated'](),controller[_0x878a('0xd')]);router[_0x878a('0xe')]('/:id',auth[_0x878a('0x8')](),controller[_0x878a('0xf')]);router[_0x878a('0x10')]('/:id',auth[_0x878a('0x8')](),controller[_0x878a('0x11')]);module[_0x878a('0x12')]=router;
\ No newline at end of file
index 04873ae..6c4ba70 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc9a=['4800','7200','9600','12000','14400','v17,v27,v29','INTEGER','SIP','IAX','DADHI','KHOMP','TEXT','BOOLEAN','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDisposition','exports','STRING','ENUM','yes','xCALLY\x20Motion\x20Fax','localstationid','2400'];(function(_0x36148a,_0x44bccd){var _0x49422a=function(_0x417a79){while(--_0x417a79){_0x36148a['push'](_0x36148a['shift']());}};_0x49422a(++_0x44bccd);}(_0xcc9a,0x152));var _0xacc9=function(_0x4e3e79,_0x47bcff){_0x4e3e79=_0x4e3e79-0x0;var _0xe3a409=_0xcc9a[_0x4e3e79];return _0xe3a409;};'use strict';var Sequelize=require('sequelize');module[_0xacc9('0x0')]={'name':{'type':Sequelize[_0xacc9('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xacc9('0x1')]},'ecm':{'type':Sequelize[_0xacc9('0x2')](_0xacc9('0x3'),'no'),'defaultValue':_0xacc9('0x3')},'headerinfo':{'type':Sequelize['STRING'],'defaultValue':_0xacc9('0x4')},'localstationid':{'type':Sequelize[_0xacc9('0x1')],'unique':_0xacc9('0x5')},'minrate':{'type':Sequelize[_0xacc9('0x2')](_0xacc9('0x6'),_0xacc9('0x7'),_0xacc9('0x8'),_0xacc9('0x9'),_0xacc9('0xa'),_0xacc9('0xb')),'defaultValue':'4800'},'maxrate':{'type':Sequelize['ENUM']('2400',_0xacc9('0x7'),_0xacc9('0x8'),_0xacc9('0x9'),'12000',_0xacc9('0xb')),'defaultValue':'14400'},'modem':{'type':Sequelize[_0xacc9('0x1')],'defaultValue':_0xacc9('0xc')},'gateway':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xacc9('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize[_0xacc9('0xd')],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xacc9('0x2')](_0xacc9('0xe'),_0xacc9('0xf'),_0xacc9('0x10'),_0xacc9('0x11')),'defaultValue':_0xacc9('0xe')},'key':{'type':Sequelize[_0xacc9('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xacc9('0x12')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize[_0xacc9('0x13')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xacc9('0x13')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xacc9('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xacc9('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xacc9('0x13')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xacc9('0xd')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xacc9('0xd')],'allowNull':!![],'defaultValue':null,'comment':_0xacc9('0x14')},'mandatoryDisposition':{'type':Sequelize[_0xacc9('0x13')],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x257fad){if(!_0x257fad)this[_0xacc9('0x15')]('mandatoryDispositionPauseId',null);this[_0xacc9('0x15')](_0xacc9('0x16'),_0x257fad);}}};
\ No newline at end of file
+var _0x2eaf=['xCALLY\x20Motion\x20Fax','localstationid','2400','7200','9600','12000','14400','4800','ENUM','SIP','DADHI','TEXT','INTEGER','BOOLEAN','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','STRING','yes'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2eaf,0x1b6));var _0xf2ea=function(_0x29107b,_0x1c1f9d){_0x29107b=_0x29107b-0x0;var _0x5098ad=_0x2eaf[_0x29107b];return _0x5098ad;};'use strict';var Sequelize=require(_0xf2ea('0x0'));module['exports']={'name':{'type':Sequelize[_0xf2ea('0x1')],'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0xf2ea('0x1')]},'ecm':{'type':Sequelize['ENUM'](_0xf2ea('0x2'),'no'),'defaultValue':_0xf2ea('0x2')},'headerinfo':{'type':Sequelize[_0xf2ea('0x1')],'defaultValue':_0xf2ea('0x3')},'localstationid':{'type':Sequelize['STRING'],'unique':_0xf2ea('0x4')},'minrate':{'type':Sequelize['ENUM'](_0xf2ea('0x5'),'4800',_0xf2ea('0x6'),_0xf2ea('0x7'),_0xf2ea('0x8'),_0xf2ea('0x9')),'defaultValue':_0xf2ea('0xa')},'maxrate':{'type':Sequelize[_0xf2ea('0xb')]('2400','4800',_0xf2ea('0x6'),_0xf2ea('0x7'),_0xf2ea('0x8'),_0xf2ea('0x9')),'defaultValue':_0xf2ea('0x9')},'modem':{'type':Sequelize[_0xf2ea('0x1')],'defaultValue':'v17,v27,v29'},'gateway':{'type':Sequelize['STRING'],'defaultValue':'no','validate':{'is':/^(?:yes|no|[0-9]+)$/}},'faxdetect':{'type':Sequelize[_0xf2ea('0x1')],'defaultValue':'no','validate':{'is':/^(?:yes|no|t38|cng|[0-9]+)$/}},'t38timeout':{'type':Sequelize['INTEGER'],'defaultValue':0x1388,'validate':{'min':0x3e8}},'tech':{'type':Sequelize[_0xf2ea('0xb')](_0xf2ea('0xc'),'IAX',_0xf2ea('0xd'),'KHOMP'),'defaultValue':_0xf2ea('0xc')},'key':{'type':Sequelize[_0xf2ea('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xf2ea('0xe')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xf2ea('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xf2ea('0xf')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xf2ea('0x10')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xf2ea('0xf')],'allowNull':!![],'defaultValue':null,'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xf2ea('0x10')],'defaultValue':![],'comment':_0xf2ea('0x11'),'set':function(_0x2d6fc6){if(!_0x2d6fc6)this[_0xf2ea('0x12')](_0xf2ea('0x13'),null);this[_0xf2ea('0x12')](_0xf2ea('0x14'),_0x2d6fc6);}}};
\ No newline at end of file
index 2389978..16ec8e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x213b=['createdAt','updatedAt','ListId','findById','getMessages','FaxMessage','$gte','split','YYYY-MM-DD\x20HH:mm:ss','Contacts','DESC','attachments','join','root','server/files/attachments','basename','CheckAfterSend','isNil','from','format','List','List\x20not\x20found','user','out','Messages','Contact\x20not\x20found','spread','filename','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','omit','emit','removeAgents','isArray','userFaxAccount:remove','getAgents','User','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','destroy','get','FaxAccounts','UserProfileResource','stack','name','send','index','Pause','mandatoryDispositionPause','map','FaxAccount','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','where','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','find','create','body','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','FaxAccountId','Disposition','findOne','rawAttributes','order','sort','pick','filter','findAll','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','addInteraction','FaxInteraction','getInteractions','CmContact','Contact','Owner','internal','Tag','Tags','color','tag','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','FaxApplication','bulkCreate','findAndCountAll','finally','getApplications','context','exten','localstationid','app','system','description','Fax\x20Extension','priority','appdata','push','CDR(type)=inbound-fax','Set','gateway','headerinfo','minrate','t38timeout','FAXOPT(','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'];(function(_0x2efe05,_0x5c5cab){var _0xae733e=function(_0x29c473){while(--_0x29c473){_0x2efe05['push'](_0x2efe05['shift']());}};_0xae733e(++_0x5c5cab);}(_0x213b,0x1b5));var _0xb213=function(_0x23eae1,_0x170b2e){_0x23eae1=_0x23eae1-0x0;var _0x4d8438=_0x213b[_0x23eae1];return _0x4d8438;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb213('0x0'));var zipdir=require(_0xb213('0x1'));var jsonpatch=require(_0xb213('0x2'));var rp=require(_0xb213('0x3'));var moment=require(_0xb213('0x4'));var BPromise=require(_0xb213('0x5'));var Mustache=require('mustache');var util=require(_0xb213('0x6'));var path=require(_0xb213('0x7'));var sox=require('sox');var csv=require(_0xb213('0x8'));var ejs=require(_0xb213('0x9'));var fs=require('fs');var fs_extra=require(_0xb213('0xa'));var _=require(_0xb213('0xb'));var squel=require(_0xb213('0xc'));var crypto=require(_0xb213('0xd'));var jsforce=require(_0xb213('0xe'));var deskjs=require(_0xb213('0xf'));var toCsv=require('to-csv');var querystring=require(_0xb213('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xb213('0x11'));var hardwareService=require(_0xb213('0x12'));var logger=require(_0xb213('0x13'))(_0xb213('0x14'));var utils=require(_0xb213('0x15'));var config=require(_0xb213('0x16'));var licenseUtil=require(_0xb213('0x17'));var db=require(_0xb213('0x18'))['db'];config[_0xb213('0x19')]=_[_0xb213('0x1a')](config[_0xb213('0x19')],{'host':_0xb213('0x1b'),'port':0x18eb});var socket=require(_0xb213('0x1c'))(new Redis(config['redis']));require('./faxAccount.socket')[_0xb213('0x1d')](socket);var jayson=require(_0xb213('0x1e'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1a2a93,_0x3e9c14,_0x5d12bf,_0x40c452){return new BPromise(function(_0x58b21b,_0x201e1c){var _0x162c5b=_0x40c452||client;return _0x162c5b[_0xb213('0x1f')](_0x1a2a93,_0x5d12bf)[_0xb213('0x20')](function(_0x31ef02){logger[_0xb213('0x21')](_0xb213('0x22'),_0x3e9c14,_0xb213('0x23'));logger[_0xb213('0x24')](_0xb213('0x25'),_0x3e9c14,_0xb213('0x23'),JSON[_0xb213('0x26')](_0x31ef02));if(_0x31ef02[_0xb213('0x27')]){if(_0x31ef02[_0xb213('0x27')][_0xb213('0x28')]===0x1f4){logger[_0xb213('0x27')](_0xb213('0x22'),_0x3e9c14,_0x31ef02[_0xb213('0x27')][_0xb213('0x29')]);return _0x201e1c(_0x31ef02[_0xb213('0x27')][_0xb213('0x29')]);}logger[_0xb213('0x27')](_0xb213('0x22'),_0x3e9c14,_0x31ef02[_0xb213('0x27')][_0xb213('0x29')]);return _0x58b21b(_0x31ef02['error']['message']);}else{logger[_0xb213('0x21')](_0xb213('0x22'),_0x3e9c14,_0xb213('0x23'));_0x58b21b(_0x31ef02[_0xb213('0x2a')][_0xb213('0x29')]);}})['catch'](function(_0x1b4538){logger[_0xb213('0x27')](_0xb213('0x22'),_0x3e9c14,_0x1b4538);_0x201e1c(_0x1b4538);});});}function respondWithStatusCode(_0x3a30f4,_0x10bcf1){_0x10bcf1=_0x10bcf1||0xcc;return function(_0x2a8e3b){if(_0x2a8e3b){return _0x3a30f4[_0xb213('0x2b')](_0x10bcf1);}return _0x3a30f4[_0xb213('0x2c')](_0x10bcf1)[_0xb213('0x2d')]();};}function respondWithResult(_0xc0090b,_0x59bdf9){_0x59bdf9=_0x59bdf9||0xc8;return function(_0x2db756){if(_0x2db756){return _0xc0090b['status'](_0x59bdf9)[_0xb213('0x2e')](_0x2db756);}};}function respondWithFilteredResult(_0x3e2c86,_0x452027){return function(_0x8f8c35){if(_0x8f8c35){var _0x1d8358=typeof _0x452027[_0xb213('0x2f')]===_0xb213('0x30')&&typeof _0x452027[_0xb213('0x31')]===_0xb213('0x30');var _0x59b95f=_0x8f8c35[_0xb213('0x32')];var _0x3b1e26=_0x1d8358?0x0:_0x452027[_0xb213('0x2f')];var _0x46dc25=_0x1d8358?_0x8f8c35[_0xb213('0x32')]:_0x452027[_0xb213('0x2f')]+_0x452027[_0xb213('0x31')];var _0x4bf37f;if(_0x46dc25>=_0x59b95f){_0x46dc25=_0x59b95f;_0x4bf37f=0xc8;}else{_0x4bf37f=0xce;}_0x3e2c86[_0xb213('0x2c')](_0x4bf37f);return _0x3e2c86[_0xb213('0x33')](_0xb213('0x34'),_0x3b1e26+'-'+_0x46dc25+'/'+_0x59b95f)['json'](_0x8f8c35);}return null;};}function patchUpdates(_0x4bca68){return function(_0x3ca431){try{jsonpatch['apply'](_0x3ca431,_0x4bca68,!![]);}catch(_0x5949c7){return BPromise[_0xb213('0x35')](_0x5949c7);}return _0x3ca431[_0xb213('0x36')]();};}function saveUpdates(_0x2df2d,_0x131329){return function(_0x2c24f3){if(_0x2c24f3){return _0x2c24f3[_0xb213('0x37')](_0x2df2d)[_0xb213('0x20')](function(_0x4098e3){return _0x4098e3;});}return null;};}function removeEntity(_0x487895,_0x1af175){return function(_0x938dbc){if(_0x938dbc){return _0x938dbc[_0xb213('0x38')]()['then'](function(){var _0x29fd44=_0x938dbc[_0xb213('0x39')]({'plain':!![]});var _0x5b31d5=_0xb213('0x3a');return db[_0xb213('0x3b')]['destroy']({'where':{'type':_0x5b31d5,'resourceId':_0x29fd44['id']}})[_0xb213('0x20')](function(){return _0x938dbc;});})[_0xb213('0x20')](function(){_0x487895['status'](0xcc)[_0xb213('0x2d')]();});}};}function handleEntityNotFound(_0x724c9c,_0x3d7853){return function(_0xa83525){if(!_0xa83525){_0x724c9c[_0xb213('0x2b')](0x194);}return _0xa83525;};}function handleError(_0x350500,_0x3f3a02){_0x3f3a02=_0x3f3a02||0x1f4;return function(_0xb60a75){logger[_0xb213('0x27')](_0xb60a75[_0xb213('0x3c')]);if(_0xb60a75[_0xb213('0x3d')]){delete _0xb60a75[_0xb213('0x3d')];}_0x350500[_0xb213('0x2c')](_0x3f3a02)[_0xb213('0x3e')](_0xb60a75);};}exports[_0xb213('0x3f')]=function(_0x4c092d,_0xe9840e){var _0x1cd1f6={'include':[{'model':db[_0xb213('0x40')],'as':_0xb213('0x41')}]},_0x2cd091={},_0x531521={'count':0x0,'rows':[]};var _0x15d73d=_[_0xb213('0x42')](db[_0xb213('0x43')]['rawAttributes'],function(_0x4f6d79){return{'name':_0x4f6d79[_0xb213('0x44')],'type':_0x4f6d79[_0xb213('0x45')][_0xb213('0x46')]};});_0x2cd091[_0xb213('0x47')]=_['map'](_0x15d73d,_0xb213('0x3d'));_0x2cd091[_0xb213('0x48')]=_[_0xb213('0x49')](_0x4c092d[_0xb213('0x48')]);_0x2cd091[_0xb213('0x4a')]=_[_0xb213('0x4b')](_0x2cd091[_0xb213('0x47')],_0x2cd091['query']);_0x1cd1f6[_0xb213('0x4c')]=_[_0xb213('0x4b')](_0x2cd091['model'],qs[_0xb213('0x4d')](_0x4c092d[_0xb213('0x48')][_0xb213('0x4d')]));_0x1cd1f6[_0xb213('0x4c')]=_0x1cd1f6[_0xb213('0x4c')][_0xb213('0x4e')]?_0x1cd1f6[_0xb213('0x4c')]:_0x2cd091['model'];if(!_0x4c092d[_0xb213('0x48')][_0xb213('0x4f')](_0xb213('0x50'))){_0x1cd1f6[_0xb213('0x31')]=qs[_0xb213('0x31')](_0x4c092d[_0xb213('0x48')][_0xb213('0x31')]);_0x1cd1f6[_0xb213('0x2f')]=qs[_0xb213('0x2f')](_0x4c092d['query']['offset']);}_0x1cd1f6['order']=qs['sort'](_0x4c092d[_0xb213('0x48')]['sort']);_0x1cd1f6[_0xb213('0x51')]=qs[_0xb213('0x4a')](_['pick'](_0x4c092d[_0xb213('0x48')],_0x2cd091[_0xb213('0x4a')]),_0x15d73d);if(_0x4c092d[_0xb213('0x48')]['filter']){_0x1cd1f6[_0xb213('0x51')]=_['merge'](_0x1cd1f6[_0xb213('0x51')],{'$or':_[_0xb213('0x42')](_0x15d73d,function(_0x4e28b0){if(_0x4e28b0[_0xb213('0x45')]!==_0xb213('0x52')){var _0x540e03={};_0x540e03[_0x4e28b0[_0xb213('0x3d')]]={'$like':'%'+_0x4c092d['query']['filter']+'%'};return _0x540e03;}})});}_0x1cd1f6=_[_0xb213('0x53')]({},_0x1cd1f6,_0x4c092d[_0xb213('0x54')]);var _0x3549a8={'where':_0x1cd1f6['where']};return db[_0xb213('0x43')]['count'](_0x3549a8)[_0xb213('0x20')](function(_0x488d71){_0x531521['count']=_0x488d71;if(_0x4c092d[_0xb213('0x48')][_0xb213('0x55')]){_0x1cd1f6[_0xb213('0x56')]=[{'all':!![]}];}return db[_0xb213('0x43')]['findAll'](_0x1cd1f6);})[_0xb213('0x20')](function(_0x26488f){_0x531521[_0xb213('0x57')]=_0x26488f;return _0x531521;})[_0xb213('0x20')](respondWithFilteredResult(_0xe9840e,_0x1cd1f6))[_0xb213('0x58')](handleError(_0xe9840e,null));};exports[_0xb213('0x59')]=function(_0x24a1a4,_0x18fa78){var _0x510e16={'raw':![],'where':{'id':_0x24a1a4[_0xb213('0x5a')]['id']},'include':[{'model':db[_0xb213('0x40')],'as':_0xb213('0x41')}]},_0x3761d1={};_0x3761d1[_0xb213('0x47')]=_[_0xb213('0x49')](db[_0xb213('0x43')]['rawAttributes']);_0x3761d1[_0xb213('0x48')]=_[_0xb213('0x49')](_0x24a1a4[_0xb213('0x48')]);_0x3761d1[_0xb213('0x4a')]=_[_0xb213('0x4b')](_0x3761d1[_0xb213('0x47')],_0x3761d1[_0xb213('0x48')]);_0x510e16['attributes']=_[_0xb213('0x4b')](_0x3761d1[_0xb213('0x47')],qs[_0xb213('0x4d')](_0x24a1a4['query'][_0xb213('0x4d')]));_0x510e16['attributes']=_0x510e16[_0xb213('0x4c')]['length']?_0x510e16['attributes']:_0x3761d1[_0xb213('0x47')];if(_0x24a1a4[_0xb213('0x48')]['includeAll']){_0x510e16[_0xb213('0x56')]=[{'all':!![]}];}_0x510e16=_[_0xb213('0x53')]({},_0x510e16,_0x24a1a4[_0xb213('0x54')]);return db['FaxAccount'][_0xb213('0x5b')](_0x510e16)[_0xb213('0x20')](handleEntityNotFound(_0x18fa78,null))['then'](respondWithResult(_0x18fa78,null))[_0xb213('0x58')](handleError(_0x18fa78,null));};exports[_0xb213('0x5c')]=function(_0x5e5654,_0x1eaa59){return db['FaxAccount'][_0xb213('0x5c')](_0x5e5654[_0xb213('0x5d')],{})[_0xb213('0x20')](function(_0x1bd55e){var _0x2469e9=_0x5e5654['user'][_0xb213('0x39')]({'plain':!![]});if(!_0x2469e9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2469e9[_0xb213('0x5e')]==='user'){var _0x2e3902=_0x1bd55e[_0xb213('0x39')]({'plain':!![]});var _0x380617=_0xb213('0x3a');return db[_0xb213('0x5f')]['find']({'where':{'name':_0x380617,'userProfileId':_0x2469e9['userProfileId']},'raw':!![]})['then'](function(_0x15844c){if(_0x15844c&&_0x15844c[_0xb213('0x60')]===0x0){return db['UserProfileResource']['create']({'name':_0x2e3902['name'],'resourceId':_0x2e3902['id'],'type':_0x15844c[_0xb213('0x3d')],'sectionId':_0x15844c['id']},{})[_0xb213('0x20')](function(){return _0x1bd55e;});}else{return _0x1bd55e;}})['catch'](function(_0x58463c){logger[_0xb213('0x27')](_0xb213('0x61'),_0x58463c);throw _0x58463c;});}return _0x1bd55e;})[_0xb213('0x20')](respondWithResult(_0x1eaa59,0xc9))[_0xb213('0x58')](handleError(_0x1eaa59,null));};exports['update']=function(_0x301873,_0x4b793a){if(_0x301873[_0xb213('0x5d')]['id']){delete _0x301873[_0xb213('0x5d')]['id'];}return db['FaxAccount'][_0xb213('0x5b')]({'where':{'id':_0x301873[_0xb213('0x5a')]['id']},'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0xb213('0x20')](handleEntityNotFound(_0x4b793a,null))[_0xb213('0x20')](saveUpdates(_0x301873[_0xb213('0x5d')],null))[_0xb213('0x20')](respondWithResult(_0x4b793a,null))[_0xb213('0x58')](handleError(_0x4b793a,null));};exports[_0xb213('0x38')]=function(_0x5303a5,_0x86fec6){return db[_0xb213('0x43')][_0xb213('0x5b')]({'where':{'id':_0x5303a5[_0xb213('0x5a')]['id']}})['then'](handleEntityNotFound(_0x86fec6,null))[_0xb213('0x20')](removeEntity(_0x86fec6,null))[_0xb213('0x58')](handleError(_0x86fec6,null));};exports[_0xb213('0x62')]=function(_0x521c30,_0x4fbe3f){return db[_0xb213('0x43')][_0xb213('0x62')]()[_0xb213('0x20')](respondWithResult(_0x4fbe3f,null))[_0xb213('0x58')](handleError(_0x4fbe3f,null));};exports[_0xb213('0x63')]=function(_0x4967c4,_0x449522,_0x543dfd){if(_0x4967c4[_0xb213('0x5d')]['id']){delete _0x4967c4[_0xb213('0x5d')]['id'];}return db['FaxAccount'][_0xb213('0x5b')]({'where':{'id':_0x4967c4['params']['id']}})[_0xb213('0x20')](handleEntityNotFound(_0x449522,null))[_0xb213('0x20')](function(_0x284d88){if(_0x284d88){_0x4967c4[_0xb213('0x5d')][_0xb213('0x64')]=_0x284d88['id'];return db[_0xb213('0x65')]['create'](_0x4967c4[_0xb213('0x5d')]);}})[_0xb213('0x20')](respondWithResult(_0x449522,null))['catch'](handleError(_0x449522,null));};exports['getDispositions']=function(_0x4bbdec,_0x19e149,_0x472276){var _0x15b6b7={'raw':![],'where':{}};var _0x9d464d={};var _0x1b5511={'count':0x0,'rows':[]};return db[_0xb213('0x43')][_0xb213('0x66')]({'where':{'id':_0x4bbdec[_0xb213('0x5a')]['id']}})[_0xb213('0x20')](handleEntityNotFound(_0x19e149,null))[_0xb213('0x20')](function(_0x53fafa){if(_0x53fafa){_0x9d464d[_0xb213('0x47')]=_['keys'](db[_0xb213('0x65')][_0xb213('0x67')]);_0x9d464d[_0xb213('0x48')]=_['keys'](_0x4bbdec[_0xb213('0x48')]);_0x9d464d[_0xb213('0x4a')]=_[_0xb213('0x4b')](_0x9d464d[_0xb213('0x47')],_0x9d464d[_0xb213('0x48')]);_0x15b6b7[_0xb213('0x4c')]=_['intersection'](_0x9d464d[_0xb213('0x47')],qs[_0xb213('0x4d')](_0x4bbdec[_0xb213('0x48')][_0xb213('0x4d')]));_0x15b6b7[_0xb213('0x4c')]=_0x15b6b7['attributes'][_0xb213('0x4e')]?_0x15b6b7[_0xb213('0x4c')]:_0x9d464d[_0xb213('0x47')];if(!_0x4bbdec[_0xb213('0x48')][_0xb213('0x4f')](_0xb213('0x50'))){_0x15b6b7[_0xb213('0x31')]=qs[_0xb213('0x31')](_0x4bbdec[_0xb213('0x48')][_0xb213('0x31')]);_0x15b6b7['offset']=qs['offset'](_0x4bbdec[_0xb213('0x48')][_0xb213('0x2f')]);}_0x15b6b7[_0xb213('0x68')]=qs[_0xb213('0x69')](_0x4bbdec[_0xb213('0x48')]['sort']);_0x15b6b7['where']=qs[_0xb213('0x4a')](_[_0xb213('0x6a')](_0x4bbdec[_0xb213('0x48')],_0x9d464d[_0xb213('0x4a')]));_0x15b6b7[_0xb213('0x51')][_0xb213('0x64')]=_0x53fafa['id'];if(_0x4bbdec[_0xb213('0x48')][_0xb213('0x6b')]){_0x15b6b7[_0xb213('0x51')]=_[_0xb213('0x53')](_0x15b6b7[_0xb213('0x51')],{'$or':_[_0xb213('0x42')](_0x15b6b7[_0xb213('0x4c')],function(_0x36c1bd){var _0x3008ba={};_0x3008ba[_0x36c1bd]={'$like':'%'+_0x4bbdec['query'][_0xb213('0x6b')]+'%'};return _0x3008ba;})});}_0x15b6b7=_[_0xb213('0x53')]({},_0x15b6b7,_0x4bbdec[_0xb213('0x54')]);return db[_0xb213('0x65')]['count']({'where':_0x15b6b7[_0xb213('0x51')]})[_0xb213('0x20')](function(_0x15b4e6){_0x1b5511[_0xb213('0x32')]=_0x15b4e6;if(_0x4bbdec[_0xb213('0x48')][_0xb213('0x55')]){_0x15b6b7[_0xb213('0x56')]=[{'all':!![]}];}return db[_0xb213('0x65')][_0xb213('0x6c')](_0x15b6b7);})['then'](function(_0x94b002){_0x1b5511[_0xb213('0x57')]=_0x94b002;return _0x1b5511;});}})[_0xb213('0x20')](respondWithFilteredResult(_0x19e149,_0x15b6b7))[_0xb213('0x58')](handleError(_0x19e149,null));};exports[_0xb213('0x6d')]=function(_0x248c4c,_0x28b5eb,_0x234c2a){return db[_0xb213('0x43')]['find']({'where':{'id':_0x248c4c[_0xb213('0x5a')]['id']}})[_0xb213('0x20')](handleEntityNotFound(_0x28b5eb,null))[_0xb213('0x20')](function(_0xe75b50){if(_0xe75b50){return _0xe75b50[_0xb213('0x6d')](_0x248c4c[_0xb213('0x48')][_0xb213('0x6e')]);}})['then'](respondWithStatusCode(_0x28b5eb,null))[_0xb213('0x58')](handleError(_0x28b5eb,null));};exports[_0xb213('0x6f')]=function(_0x22f562,_0xe2abad,_0xef5652){if(_0x22f562[_0xb213('0x5d')]['id']){delete _0x22f562['body']['id'];}return db[_0xb213('0x43')][_0xb213('0x5b')]({'where':{'id':_0x22f562[_0xb213('0x5a')]['id']}})[_0xb213('0x20')](handleEntityNotFound(_0xe2abad,null))[_0xb213('0x20')](function(_0xd9aa5e){if(_0xd9aa5e){_0x22f562['body'][_0xb213('0x64')]=_0xd9aa5e['id'];return db[_0xb213('0x70')][_0xb213('0x5c')](_0x22f562[_0xb213('0x5d')]);}})[_0xb213('0x20')](respondWithResult(_0xe2abad,null))[_0xb213('0x58')](handleError(_0xe2abad,null));};exports[_0xb213('0x71')]=function(_0xe2823e,_0x467c34,_0x412ae2){var _0x18fc18={'raw':![],'where':{}};var _0x1c494e={};var _0x97372a={'count':0x0,'rows':[]};return db[_0xb213('0x43')]['findOne']({'where':{'id':_0xe2823e[_0xb213('0x5a')]['id']}})['then'](handleEntityNotFound(_0x467c34,null))[_0xb213('0x20')](function(_0x56e6fe){if(_0x56e6fe){_0x1c494e[_0xb213('0x47')]=_[_0xb213('0x49')](db[_0xb213('0x70')][_0xb213('0x67')]);_0x1c494e[_0xb213('0x48')]=_['keys'](_0xe2823e[_0xb213('0x48')]);_0x1c494e['filters']=_[_0xb213('0x4b')](_0x1c494e['model'],_0x1c494e[_0xb213('0x48')]);_0x18fc18[_0xb213('0x4c')]=_[_0xb213('0x4b')](_0x1c494e[_0xb213('0x47')],qs[_0xb213('0x4d')](_0xe2823e[_0xb213('0x48')][_0xb213('0x4d')]));_0x18fc18[_0xb213('0x4c')]=_0x18fc18[_0xb213('0x4c')]['length']?_0x18fc18[_0xb213('0x4c')]:_0x1c494e['model'];if(!_0xe2823e[_0xb213('0x48')][_0xb213('0x4f')]('nolimit')){_0x18fc18[_0xb213('0x31')]=qs['limit'](_0xe2823e[_0xb213('0x48')][_0xb213('0x31')]);_0x18fc18[_0xb213('0x2f')]=qs['offset'](_0xe2823e[_0xb213('0x48')]['offset']);}_0x18fc18[_0xb213('0x68')]=qs[_0xb213('0x69')](_0xe2823e['query']['sort']);_0x18fc18[_0xb213('0x51')]=qs[_0xb213('0x4a')](_['pick'](_0xe2823e[_0xb213('0x48')],_0x1c494e['filters']));_0x18fc18[_0xb213('0x51')][_0xb213('0x64')]=_0x56e6fe['id'];if(_0xe2823e['query'][_0xb213('0x6b')]){_0x18fc18[_0xb213('0x51')]=_[_0xb213('0x53')](_0x18fc18[_0xb213('0x51')],{'$or':_[_0xb213('0x42')](_0x18fc18[_0xb213('0x4c')],function(_0xc9bee7){var _0x2318ec={};_0x2318ec[_0xc9bee7]={'$like':'%'+_0xe2823e[_0xb213('0x48')]['filter']+'%'};return _0x2318ec;})});}_0x18fc18=_[_0xb213('0x53')]({},_0x18fc18,_0xe2823e['options']);return db[_0xb213('0x70')]['count']({'where':_0x18fc18[_0xb213('0x51')]})[_0xb213('0x20')](function(_0x537e3a){_0x97372a['count']=_0x537e3a;if(_0xe2823e['query'][_0xb213('0x55')]){_0x18fc18[_0xb213('0x56')]=[{'all':!![]}];}return db[_0xb213('0x70')]['findAll'](_0x18fc18);})['then'](function(_0x5d9305){_0x97372a[_0xb213('0x57')]=_0x5d9305;return _0x97372a;});}})[_0xb213('0x20')](respondWithFilteredResult(_0x467c34,_0x18fc18))['catch'](handleError(_0x467c34,null));};exports['removeAnswers']=function(_0x2e4648,_0x183d3a,_0x484887){return db[_0xb213('0x43')][_0xb213('0x5b')]({'where':{'id':_0x2e4648[_0xb213('0x5a')]['id']}})[_0xb213('0x20')](handleEntityNotFound(_0x183d3a,null))['then'](function(_0x1d709d){if(_0x1d709d){return _0x1d709d[_0xb213('0x72')](_0x2e4648[_0xb213('0x48')]['ids']);}})['then'](respondWithStatusCode(_0x183d3a,null))[_0xb213('0x58')](handleError(_0x183d3a,null));};exports[_0xb213('0x73')]=function(_0x339797,_0x2f3a27,_0x28d0a8){return db[_0xb213('0x74')][_0xb213('0x5b')]({'where':{'id':_0x339797[_0xb213('0x5a')]['id']}})[_0xb213('0x20')](handleEntityNotFound(_0x2f3a27,null))[_0xb213('0x20')](function(_0x4d44aa){if(_0x4d44aa){return _0x4d44aa['addInteraction'](_0x339797[_0xb213('0x5d')][_0xb213('0x6e')],_['omit'](_0x339797[_0xb213('0x5d')],[_0xb213('0x6e'),'id'])||{});}})[_0xb213('0x20')](respondWithResult(_0x2f3a27,null))[_0xb213('0x58')](handleError(_0x2f3a27,null));};exports[_0xb213('0x75')]=function(_0x3625c6,_0x36dfa1,_0x3acaed){var _0x7de674={'raw':![],'where':{}};var _0x1c5cfb={};var _0x57df09={'count':0x0,'rows':[]};return db[_0xb213('0x43')][_0xb213('0x66')]({'where':{'id':_0x3625c6[_0xb213('0x5a')]['id']}})[_0xb213('0x20')](handleEntityNotFound(_0x36dfa1,null))[_0xb213('0x20')](function(_0x1e55d0){if(_0x1e55d0){_0x1c5cfb[_0xb213('0x47')]=_['keys'](db['FaxInteraction'][_0xb213('0x67')]);_0x1c5cfb['query']=_['keys'](_0x3625c6[_0xb213('0x48')]);_0x1c5cfb[_0xb213('0x4a')]=_[_0xb213('0x4b')](_0x1c5cfb[_0xb213('0x47')],_0x1c5cfb['query']);_0x7de674['attributes']=_[_0xb213('0x4b')](_0x1c5cfb[_0xb213('0x47')],qs['fields'](_0x3625c6[_0xb213('0x48')][_0xb213('0x4d')]));_0x7de674[_0xb213('0x4c')]=_0x7de674['attributes'][_0xb213('0x4e')]?_0x7de674[_0xb213('0x4c')]:_0x1c5cfb['model'];if(!_0x3625c6[_0xb213('0x48')][_0xb213('0x4f')](_0xb213('0x50'))){_0x7de674[_0xb213('0x31')]=qs[_0xb213('0x31')](_0x3625c6[_0xb213('0x48')][_0xb213('0x31')]);_0x7de674['offset']=qs[_0xb213('0x2f')](_0x3625c6[_0xb213('0x48')][_0xb213('0x2f')]);}_0x7de674['order']=qs['sort'](_0x3625c6[_0xb213('0x48')]['sort']);_0x7de674['where']=qs[_0xb213('0x4a')](_[_0xb213('0x6a')](_0x3625c6['query'],_0x1c5cfb[_0xb213('0x4a')]));_0x7de674['where'][_0xb213('0x64')]=_0x1e55d0['id'];if(_0x3625c6[_0xb213('0x48')][_0xb213('0x6b')]){_0x7de674[_0xb213('0x51')]=_['merge'](_0x7de674[_0xb213('0x51')],{'$or':_[_0xb213('0x42')](_0x7de674['attributes'],function(_0x33d140){var _0x25b4f4={};_0x25b4f4[_0x33d140]={'$like':'%'+_0x3625c6[_0xb213('0x48')][_0xb213('0x6b')]+'%'};return _0x25b4f4;})});}_0x7de674=_[_0xb213('0x53')]({},_0x7de674,_0x3625c6[_0xb213('0x54')]);return db[_0xb213('0x74')][_0xb213('0x32')]({'where':_0x7de674['where']})[_0xb213('0x20')](function(_0x4f38f1){_0x57df09[_0xb213('0x32')]=_0x4f38f1;if(_0x3625c6[_0xb213('0x48')][_0xb213('0x55')]){_0x7de674[_0xb213('0x56')]=[{'model':db[_0xb213('0x76')],'as':_0xb213('0x77'),'required':![]},{'model':db['User'],'as':_0xb213('0x78'),'attributes':[_0xb213('0x3d'),'fullname',_0xb213('0x79')],'required':![]},{'model':db[_0xb213('0x7a')],'as':_0xb213('0x7b'),'attributes':['id',_0xb213('0x3d'),_0xb213('0x7c')],'where':_0x3625c6['query'][_0xb213('0x7d')]?{'id':_0x3625c6['query'][_0xb213('0x7d')]}:undefined,'required':_0x3625c6[_0xb213('0x48')][_0xb213('0x7d')]?!![]:![]}];}return db[_0xb213('0x74')]['findAll'](_0x7de674);})['then'](function(_0x228518){_0x57df09['rows']=_0x228518;return _0x57df09;});}})[_0xb213('0x20')](respondWithFilteredResult(_0x36dfa1,_0x7de674))[_0xb213('0x58')](handleError(_0x36dfa1,null));};exports[_0xb213('0x7e')]=function(_0x1fe76f,_0x53d455){var _0x1acd50=_0x1fe76f[_0xb213('0x5a')]['id'];var _0x4e3cfb=_0x1fe76f[_0xb213('0x5d')];var _0x2a436f=0xc8;var _0x57e596=null;return db[_0xb213('0x7f')][_0xb213('0x80')]({'isolationLevel':db[_0xb213('0x7f')][_0xb213('0x81')][_0xb213('0x82')][_0xb213('0x83')]},function(_0x1d0e50){return db['FaxAccount']['findOne']({'where':{'id':_0x1acd50},'transaction':_0x1d0e50})['then'](function(_0x3e4879){if(_0x3e4879){return db[_0xb213('0x84')][_0xb213('0x38')]({'where':{'FaxAccountId':_0x1acd50},'transaction':_0x1d0e50})[_0xb213('0x20')](function(){var _0x12802e=_[_0xb213('0x42')](_0x4e3cfb,function(_0x464c8e){_0x464c8e[_0xb213('0x64')]=_0x1acd50;return _0x464c8e;});return db[_0xb213('0x84')][_0xb213('0x85')](_0x12802e,{'transaction':_0x1d0e50});});}else{_0x2a436f=0x194;_0x57e596=[];}});})['then'](function(){if(_0x2a436f!==0x194){return db[_0xb213('0x84')][_0xb213('0x86')]({'where':{'FaxAccountId':_0x1acd50},'order':'priority'})['then'](function(_0x41ee19){_0x57e596=_0x41ee19;});}})[_0xb213('0x58')](function(_0x45c447){_0x2a436f=0x1f4;logger[_0xb213('0x27')](_0x45c447[_0xb213('0x3c')]);if(_0x45c447[_0xb213('0x3d')]){delete _0x45c447[_0xb213('0x3d')];}_0x57e596=_0x45c447;})[_0xb213('0x87')](function(){if(_0x57e596===null){_0x53d455[_0xb213('0x2b')](_0x2a436f);}else{if(_0x2a436f===0x1f4){_0x53d455[_0xb213('0x2c')](_0x2a436f)[_0xb213('0x3e')](_0x57e596);}else{_0x53d455['status'](_0x2a436f)[_0xb213('0x2e')](_0x57e596);}}});};exports[_0xb213('0x88')]=function(_0x35d6d4,_0x5494c1,_0x5770be){var _0xc03a05={};var _0xfe4106={};var _0x161d9d;var _0x8652de;return db[_0xb213('0x43')]['findOne']({'where':{'id':_0x35d6d4[_0xb213('0x5a')]['id']}})[_0xb213('0x20')](handleEntityNotFound(_0x5494c1,null))[_0xb213('0x20')](function(_0x2acc6b){if(_0x2acc6b){_0x161d9d=_0x2acc6b;_0xfe4106[_0xb213('0x47')]=_['keys'](db[_0xb213('0x84')][_0xb213('0x67')]);_0xfe4106['query']=_[_0xb213('0x49')](_0x35d6d4[_0xb213('0x48')]);_0xfe4106[_0xb213('0x4a')]=_[_0xb213('0x4b')](_0xfe4106[_0xb213('0x47')],_0xfe4106[_0xb213('0x48')]);_0xc03a05['attributes']=_[_0xb213('0x4b')](_0xfe4106[_0xb213('0x47')],qs[_0xb213('0x4d')](_0x35d6d4[_0xb213('0x48')][_0xb213('0x4d')]));_0xc03a05[_0xb213('0x4c')]=_0xc03a05['attributes'][_0xb213('0x4e')]?_0xc03a05['attributes']:_0xfe4106[_0xb213('0x47')];_0xc03a05['order']=qs[_0xb213('0x69')](_0x35d6d4[_0xb213('0x48')][_0xb213('0x69')]);_0xc03a05[_0xb213('0x51')]=qs[_0xb213('0x4a')](_[_0xb213('0x6a')](_0x35d6d4[_0xb213('0x48')],_0xfe4106[_0xb213('0x4a')]));if(_0x35d6d4['query'][_0xb213('0x6b')]){_0xc03a05['where']=_[_0xb213('0x53')](_0xc03a05[_0xb213('0x51')],{'$or':_['map'](_0xc03a05['attributes'],function(_0x50b54c){var _0x555043={};_0x555043[_0x50b54c]={'$like':'%'+_0x35d6d4[_0xb213('0x48')][_0xb213('0x6b')]+'%'};return _0x555043;})});}_0xc03a05=_[_0xb213('0x53')]({},_0xc03a05,_0x35d6d4['options']);return _0x161d9d[_0xb213('0x88')](_0xc03a05);}})[_0xb213('0x20')](function(_0x280a9a){if(_0x280a9a){_0x8652de=_0x280a9a['length'];if(!_0x35d6d4['query']['hasOwnProperty'](_0xb213('0x50'))){_0xc03a05[_0xb213('0x31')]=qs[_0xb213('0x31')](_0x35d6d4['query'][_0xb213('0x31')]);_0xc03a05[_0xb213('0x2f')]=qs[_0xb213('0x2f')](_0x35d6d4['query'][_0xb213('0x2f')]);}return _0x161d9d[_0xb213('0x88')](_0xc03a05);}})[_0xb213('0x20')](function(_0x105d25){if(_0x105d25){return _0x105d25?{'count':_0x8652de,'rows':_0x105d25}:null;}})['then'](respondWithResult(_0x5494c1,null))['catch'](handleError(_0x5494c1,null));};function Extension(_0x3953fd,_0x5cd77b,_0x3a2f45,_0x479367){this[_0xb213('0x89')]='from-voip-provider';this[_0xb213('0x8a')]=_0x3953fd[_0xb213('0x8b')];this[_0xb213('0x8c')]=_0x479367;this['type']=_0xb213('0x8d');this[_0xb213('0x8e')]=_0xb213('0x8f');this[_0xb213('0x64')]=_0x3953fd['id'];this[_0xb213('0x90')]=_0x5cd77b;this[_0xb213('0x91')]=_0x3a2f45;}function createExtensionsReciveFax(_0x6c60de){var _0x127ec5=0x1;var _0x36df5e=[];_0x36df5e[_0xb213('0x92')](new Extension(_0x6c60de,_0x127ec5,'','Answer'));_0x127ec5+=0x1;_0x36df5e[_0xb213('0x92')](new Extension(_0x6c60de,_0x127ec5,_0xb213('0x93'),_0xb213('0x94')));_0x127ec5+=0x1;for(var _0x3325e5 in _0x6c60de){if(_0x6c60de['hasOwnProperty'](_0x3325e5)&&(_0x3325e5==='ecm'||_0x3325e5===_0xb213('0x8b')||_0x3325e5===_0xb213('0x95')||_0x3325e5==='faxdetect'||_0x3325e5===_0xb213('0x96')||_0x3325e5==='maxrate'||_0x3325e5===_0xb213('0x97')||_0x3325e5==='modem'||_0x3325e5===_0xb213('0x98'))){_0x36df5e[_0xb213('0x92')](new Extension(_0x6c60de,_0x127ec5,_0xb213('0x99')+_0x3325e5+')='+_0x6c60de[_0x3325e5],_0xb213('0x94')));_0x127ec5+=0x1;}}_0x36df5e[_0xb213('0x92')](new Extension(_0x6c60de,_0x127ec5,'6',_0xb213('0x9a')));_0x127ec5+=0x1;_0x36df5e['push'](new Extension(_0x6c60de,_0x127ec5,_0xb213('0x9b'),_0xb213('0x9c')));_0x127ec5=0x0;return _0x36df5e;}exports[_0xb213('0x9d')]=function(_0x576987,_0x5af659,_0x5095aa){var _0x3bb0e7;return db[_0xb213('0x7f')]['transaction'](function(_0x60f614){return db['FaxAccount'][_0xb213('0x5c')](_0x576987[_0xb213('0x5d')],{'transaction':_0x60f614})[_0xb213('0x20')](function(_0x36e9d4){_0x3bb0e7=_0x36e9d4['get']({'plain':!![]});return db[_0xb213('0x9e')][_0xb213('0x85')](createExtensionsReciveFax(_0x3bb0e7),{'transaction':_0x60f614});});})[_0xb213('0x20')](function(){return _0x3bb0e7;})[_0xb213('0x20')](respondWithResult(_0x5af659,null))['catch'](handleError(_0x5af659,null));};exports[_0xb213('0x9f')]=function(_0x25e455,_0x15b7d8,_0x164960){var _0x5df8bc;return db[_0xb213('0x7f')]['transaction'](function(_0x457b6e){return db['FaxAccount'][_0xb213('0x37')](_0x25e455[_0xb213('0x5d')],{'where':{'id':_0x25e455[_0xb213('0x5d')]['id']},'transaction':_0x457b6e})[_0xb213('0x20')](function(_0xcbd159){return db['VoiceExtension'][_0xb213('0x38')]({'where':{'FaxAccountId':_0x25e455['body']['id']},'transaction':_0x457b6e})[_0xb213('0x20')](function(_0x30dd11){return db['VoiceExtension'][_0xb213('0x85')](createExtensionsReciveFax(_['omit'](_0x25e455[_0xb213('0x5d')],['tech',_0xb213('0x46'),_0xb213('0xa0'),_0xb213('0xa1'),'TrunkId',_0xb213('0xa2')])),{'transaction':_0x457b6e});});});})[_0xb213('0x20')](function(){return db['FaxAccount'][_0xb213('0xa3')](_0x25e455[_0xb213('0x5d')]['id']);})[_0xb213('0x20')](respondWithResult(_0x15b7d8,null))[_0xb213('0x58')](handleError(_0x15b7d8,null));};exports[_0xb213('0xa4')]=function(_0x28a285,_0x537260,_0x2935d6){var _0x10977e={'raw':!![],'where':{}};var _0x3d54a4={};var _0xc98e3c={'count':0x0,'rows':[]};return db['FaxAccount'][_0xb213('0x66')]({'where':{'id':_0x28a285[_0xb213('0x5a')]['id']}})[_0xb213('0x20')](handleEntityNotFound(_0x537260,null))[_0xb213('0x20')](function(_0x4b1664){if(_0x4b1664){_0x3d54a4[_0xb213('0x47')]=_[_0xb213('0x49')](db[_0xb213('0xa5')][_0xb213('0x67')]);_0x3d54a4[_0xb213('0x48')]=_[_0xb213('0x49')](_0x28a285[_0xb213('0x48')]);_0x3d54a4[_0xb213('0x4a')]=_[_0xb213('0x4b')](_0x3d54a4[_0xb213('0x47')],_0x3d54a4[_0xb213('0x48')]);_0x10977e[_0xb213('0x4c')]=_[_0xb213('0x4b')](_0x3d54a4['model'],qs[_0xb213('0x4d')](_0x28a285[_0xb213('0x48')]['fields']));_0x10977e[_0xb213('0x4c')]=_0x10977e[_0xb213('0x4c')]['length']?_0x10977e[_0xb213('0x4c')]:_0x3d54a4[_0xb213('0x47')];if(!_0x28a285[_0xb213('0x48')][_0xb213('0x4f')](_0xb213('0x50'))){_0x10977e['limit']=qs[_0xb213('0x31')](_0x28a285['query'][_0xb213('0x31')]);_0x10977e[_0xb213('0x2f')]=qs[_0xb213('0x2f')](_0x28a285[_0xb213('0x48')][_0xb213('0x2f')]);}_0x10977e[_0xb213('0x68')]=qs[_0xb213('0x69')](_0x28a285[_0xb213('0x48')][_0xb213('0x69')]);_0x10977e[_0xb213('0x51')]=qs[_0xb213('0x4a')](_['pick'](_0x28a285[_0xb213('0x48')],_0x3d54a4['filters']));_0x10977e['where']['FaxAccountId']=_0x4b1664['id'];if(_0x28a285['query'][_0xb213('0x6b')]){_0x10977e[_0xb213('0x51')]=_[_0xb213('0x53')](_0x10977e[_0xb213('0x51')],{'$or':_[_0xb213('0x42')](_0x10977e[_0xb213('0x4c')],function(_0x169aeb){var _0x1421a0={};_0x1421a0[_0x169aeb]={'$like':'%'+_0x28a285[_0xb213('0x48')][_0xb213('0x6b')]+'%'};return _0x1421a0;})});}if(_0x28a285[_0xb213('0x48')][_0xb213('0xa6')]){var _0x4e31f1=_0x28a285[_0xb213('0x48')]['$gte'][_0xb213('0xa7')](',');var _0x5e11b8={};_0x5e11b8[_0x4e31f1[0x0]]={'$gte':moment(_0x4e31f1[0x1])['format'](_0xb213('0xa8'))};_0x10977e[_0xb213('0x51')]=_['merge'](_0x10977e[_0xb213('0x51')],_0x5e11b8);}_0x10977e=_[_0xb213('0x53')]({},_0x10977e,_0x28a285[_0xb213('0x54')]);return db[_0xb213('0xa5')]['count']({'where':_0x10977e[_0xb213('0x51')]})[_0xb213('0x20')](function(_0x3ec9f2){_0xc98e3c['count']=_0x3ec9f2;if(_0x28a285[_0xb213('0x48')][_0xb213('0x55')]){_0x10977e[_0xb213('0x56')]=[{'all':!![]}];}return db[_0xb213('0xa5')][_0xb213('0x6c')](_0x10977e);})[_0xb213('0x20')](function(_0xf336b2){_0xc98e3c[_0xb213('0x57')]=_0xf336b2;return _0xc98e3c;});}})[_0xb213('0x20')](respondWithFilteredResult(_0x537260,_0x10977e))[_0xb213('0x58')](handleError(_0x537260,null));};exports['send']=function(_0xf805a1,_0x4cc57f,_0x5a0be6){var _0xd95068,_0xa2a976={},_0x521f06;if(_0xf805a1['body']['to']){_0x521f06=_0xf805a1[_0xb213('0x5d')]['to'][0x0];}return db[_0xb213('0x43')][_0xb213('0x5b')]({'where':{'id':_0xf805a1[_0xb213('0x5a')]['id']},'include':[{'model':db['CmList'],'as':'List','include':[{'model':db['CmContact'],'as':_0xb213('0xa9'),'where':{'fax':_0x521f06},'limit':0x1,'order':[[_0xb213('0xa1'),_0xb213('0xaa')]]}]}]})[_0xb213('0x20')](handleEntityNotFound(_0x4cc57f,null))[_0xb213('0x20')](function(_0x2c1405){_0xd95068=_0x2c1405;if(_0xf805a1[_0xb213('0x5d')][_0xb213('0xab')]&&_0xf805a1['body']['attachments'][_0xb213('0x4e')]){for(var _0x1178a4=0x0;_0x1178a4<_0xf805a1[_0xb213('0x5d')]['attachments'][_0xb213('0x4e')];_0x1178a4+=0x1){_0xf805a1['body'][_0xb213('0xab')][_0x1178a4]={'filename':_0xf805a1[_0xb213('0x5d')][_0xb213('0xab')][_0x1178a4]['name'],'id':_0xf805a1['body']['attachments'][_0x1178a4]['id'],'path':path[_0xb213('0xac')](config[_0xb213('0xad')],_0xb213('0xae'),_0xf805a1[_0xb213('0x5d')]['attachments'][_0x1178a4][_0xb213('0xaf')])};}}return respondWithRpcPromise(_0xb213('0xb0'),_0xb213('0xb0'),{'FaxAccountId':_[_0xb213('0xb1')](_0xf805a1[_0xb213('0x5a')]['id'])?undefined:_0xf805a1[_0xb213('0x5a')]['id'],'path':_[_0xb213('0xb1')](_0xf805a1[_0xb213('0x5d')]['attachments'][0x0][_0xb213('0x7')])?undefined:_0xf805a1['body'][_0xb213('0xab')][0x0][_0xb213('0x7')],'fax':_[_0xb213('0xb1')](_0xf805a1[_0xb213('0x5d')]['to'][0x0])?undefined:_0xf805a1[_0xb213('0x5d')]['to'][0x0]},client9002);})[_0xb213('0x20')](function(){if(_0xd95068){if(_['isNil'](_0xf805a1[_0xb213('0x5d')][_0xb213('0xb2')])){_0xf805a1[_0xb213('0x5d')][_0xb213('0xb2')]=util[_0xb213('0xb3')]('\x22%s\x22\x20<%s>',_0xd95068[_0xb213('0x3d')],_0xd95068['fax']);}if(_0xd95068[_0xb213('0xb4')]){if(_0xd95068['List'][_0xb213('0xa9')][_0xb213('0x4e')]){return _0xd95068[_0xb213('0xb4')][_0xb213('0xa9')][0x0];}else{return db[_0xb213('0x76')]['create'](_[_0xb213('0x1a')](_0xf805a1[_0xb213('0x5d')],{'firstName':_0xf805a1['body']['to'][0x0],'phone':_0xf805a1[_0xb213('0x5d')]['to'][0x0],'fax':_0xf805a1['body']['to'][0x0],'ListId':_0xd95068[_0xb213('0xa2')]}));}}else{throw new Error(_0xb213('0xb5'));}}else{throw new Error('Send\x20Fax\x20failed');}})['then'](function(_0x356d40){if(_0x356d40){return db[_0xb213('0x74')]['find']({'where':{'ContactId':_0x356d40['id'],'closed':![],'FaxAccountId':_0xd95068['id']}})['then'](function(_0x3c6108){if(_0x3c6108){return[_0x3c6108,![]];}return db[_0xb213('0x74')]['create']({'UserId':_0xf805a1[_0xb213('0xb6')]['id'],'ContactId':_0x356d40['id'],'FaxAccountId':_0xd95068['id'],'fax':_0xf805a1[_0xb213('0x5d')]['to'][0x0],'firstMsgDirection':_0xb213('0xb7'),'Messages':[_[_0xb213('0x53')](_0xf805a1[_0xb213('0x5d')],{'read':![],'body':_0xf805a1['body'][_0xb213('0xab')][0x0]['filename'],'FaxAccountId':_0xd95068['id'],'UserId':_0xf805a1[_0xb213('0xb6')]['id'],'ContactId':_0x356d40['id'],'AttachmentId':_0xf805a1[_0xb213('0x5d')][_0xb213('0xab')][0x0]['id']})]},{'include':[{'model':db[_0xb213('0xa5')],'as':_0xb213('0xb8')}]})[_0xb213('0x20')](function(_0x36e744){return[_0x36e744,!![]];});});}else{throw new Error(_0xb213('0xb9'));}})[_0xb213('0xba')](function(_0x257efe,_0x3f2fc7){if(_0x3f2fc7){return _0x257efe;}return db['FaxMessage'][_0xb213('0x5c')]({'direction':_0xb213('0xb7'),'read':![],'body':_0xf805a1[_0xb213('0x5d')][_0xb213('0xab')][0x0][_0xb213('0xbb')],'FaxAccountId':_0xd95068['id'],'FaxInteractionId':_0x257efe['id'],'UserId':_0xf805a1[_0xb213('0xb6')]['id'],'ContactId':_0x257efe['ContactId'],'AttachmentId':_0xf805a1[_0xb213('0x5d')][_0xb213('0xab')][0x0]['id']})[_0xb213('0x20')](function(_0x5386d5){_0x257efe[_0xb213('0xbc')][_0xb213('0xb8')]=[];_0x257efe['dataValues'][_0xb213('0xb8')]['push'](_0x5386d5[_0xb213('0xbc')]);return _0x257efe;});})[_0xb213('0x20')](function(_0xa0fed6){respondWithRpcPromise(_0xb213('0xbd'),_0xb213('0xbd'),{'FaxAccountId':_[_0xb213('0xb1')](_0xf805a1[_0xb213('0x5a')]['id'])?undefined:_0xf805a1[_0xb213('0x5a')]['id'],'path':_[_0xb213('0xb1')](_0xf805a1['body'][_0xb213('0xab')][0x0][_0xb213('0x7')])?undefined:_0xf805a1['body'][_0xb213('0xab')][0x0][_0xb213('0x7')],'fax':_[_0xb213('0xb1')](_0xf805a1['body']['to'][0x0])?undefined:_0xf805a1[_0xb213('0x5d')]['to'][0x0],'AttachmentId':_0xf805a1['body']['attachments'][0x0]['id']},client9002)[_0xb213('0x20')](function(_0x3b458a){logger[_0xb213('0x21')]('SendFaxRpc,\x20%s',_0x3b458a);})['catch'](function(_0x3b9841){logger[_0xb213('0x21')](_0xb213('0xbe'),_0x3b9841);});return _0xa0fed6;})[_0xb213('0x20')](respondWithResult(_0x4cc57f,null))['catch'](handleError(_0x4cc57f,null));};exports['addAgents']=function(_0x3e50e3,_0x23c650,_0x35667c){return db['FaxAccount']['find']({'where':{'id':_0x3e50e3[_0xb213('0x5a')]['id']}})[_0xb213('0x20')](handleEntityNotFound(_0x23c650,null))['then'](function(_0x4c10ac){if(_0x4c10ac){return _0x4c10ac[_0xb213('0xbf')](_0x3e50e3[_0xb213('0x5d')][_0xb213('0x6e')],_[_0xb213('0xc0')](_0x3e50e3[_0xb213('0x5d')],[_0xb213('0x6e'),'id'])||{})['spread'](function(_0x6b0356){for(var _0x1e4152=0x0;_0x1e4152<_0x3e50e3[_0xb213('0x5d')][_0xb213('0x6e')][_0xb213('0x4e')];_0x1e4152+=0x1){socket[_0xb213('0xc1')]('userFaxAccount:save',{'UserId':Number(_0x3e50e3[_0xb213('0x5d')][_0xb213('0x6e')][_0x1e4152]),'FaxAccountId':Number(_0x3e50e3[_0xb213('0x5a')]['id'])});}return _0x6b0356;});}})[_0xb213('0x20')](respondWithResult(_0x23c650,null))[_0xb213('0x58')](handleError(_0x23c650,null));};exports[_0xb213('0xc2')]=function(_0x19e549,_0x29a42b,_0xd24007){return db[_0xb213('0x43')]['find']({'where':{'id':_0x19e549[_0xb213('0x5a')]['id']}})[_0xb213('0x20')](handleEntityNotFound(_0x29a42b,null))[_0xb213('0x20')](function(_0x167162){if(_0x167162){return _0x167162[_0xb213('0xc2')](_0x19e549[_0xb213('0x48')]['ids'])[_0xb213('0x20')](function(){if(_[_0xb213('0xc3')](_0x19e549[_0xb213('0x48')][_0xb213('0x6e')])){for(var _0x13e87a=0x0;_0x13e87a<_0x19e549[_0xb213('0x48')]['ids'][_0xb213('0x4e')];_0x13e87a+=0x1){socket[_0xb213('0xc1')]('userFaxAccount:remove',{'UserId':Number(_0x19e549[_0xb213('0x48')][_0xb213('0x6e')][_0x13e87a]),'FaxAccountId':Number(_0x19e549['params']['id'])});}}else{socket[_0xb213('0xc1')](_0xb213('0xc4'),{'UserId':Number(_0x19e549[_0xb213('0x48')][_0xb213('0x6e')]),'FaxAccountId':Number(_0x19e549[_0xb213('0x5a')]['id'])});}});}})['then'](respondWithStatusCode(_0x29a42b,null))['catch'](handleError(_0x29a42b,null));};exports[_0xb213('0xc5')]=function(_0x253c72,_0x6b373a,_0xf9ad1d){var _0x3e8b90={};var _0x5d6301={};var _0x1dcd64;var _0x9d53c7;return db[_0xb213('0x43')][_0xb213('0x66')]({'where':{'id':_0x253c72[_0xb213('0x5a')]['id']}})['then'](handleEntityNotFound(_0x6b373a,null))['then'](function(_0x70a067){if(_0x70a067){_0x1dcd64=_0x70a067;_0x5d6301[_0xb213('0x47')]=_['keys'](db[_0xb213('0xc6')]['rawAttributes']);_0x5d6301[_0xb213('0x48')]=_[_0xb213('0x49')](_0x253c72[_0xb213('0x48')]);_0x5d6301[_0xb213('0x4a')]=_[_0xb213('0x4b')](_0x5d6301['model'],_0x5d6301['query']);_0x3e8b90[_0xb213('0x4c')]=_[_0xb213('0x4b')](_0x5d6301[_0xb213('0x47')],qs[_0xb213('0x4d')](_0x253c72['query'][_0xb213('0x4d')]));_0x3e8b90[_0xb213('0x4c')]=_0x3e8b90[_0xb213('0x4c')]['length']?_0x3e8b90['attributes']:_0x5d6301[_0xb213('0x47')];_0x3e8b90[_0xb213('0x68')]=qs[_0xb213('0x69')](_0x253c72['query'][_0xb213('0x69')]);_0x3e8b90[_0xb213('0x51')]=qs['filters'](_[_0xb213('0x6a')](_0x253c72[_0xb213('0x48')],_0x5d6301[_0xb213('0x4a')]));if(_0x253c72[_0xb213('0x48')][_0xb213('0x6b')]){_0x3e8b90[_0xb213('0x51')]=_[_0xb213('0x53')](_0x3e8b90[_0xb213('0x51')],{'$or':_['map'](_0x3e8b90['attributes'],function(_0x3765cd){var _0x20683e={};_0x20683e[_0x3765cd]={'$like':'%'+_0x253c72[_0xb213('0x48')][_0xb213('0x6b')]+'%'};return _0x20683e;})});}_0x3e8b90=_[_0xb213('0x53')]({},_0x3e8b90,_0x253c72[_0xb213('0x54')]);return _0x1dcd64[_0xb213('0xc5')](_0x3e8b90);}})['then'](function(_0x2ec143){if(_0x2ec143){_0x9d53c7=_0x2ec143[_0xb213('0x4e')];if(!_0x253c72[_0xb213('0x48')][_0xb213('0x4f')](_0xb213('0x50'))){_0x3e8b90['limit']=qs['limit'](_0x253c72[_0xb213('0x48')]['limit']);_0x3e8b90[_0xb213('0x2f')]=qs[_0xb213('0x2f')](_0x253c72['query'][_0xb213('0x2f')]);}return _0x1dcd64[_0xb213('0xc5')](_0x3e8b90);}})[_0xb213('0x20')](function(_0x2e13b7){if(_0x2e13b7){return _0x2e13b7?{'count':_0x9d53c7,'rows':_0x2e13b7}:null;}})[_0xb213('0x20')](respondWithResult(_0x6b373a,null))[_0xb213('0x58')](handleError(_0x6b373a,null));};
\ No newline at end of file
+var _0x5454=['basename','CheckAfterSend','isNil','\x22%s\x22\x20<%s>','List\x20not\x20found','Send\x20Fax\x20failed','out','filename','Messages','Contact\x20not\x20found','spread','ContactId','dataValues','SendFax','SendFaxRpc,\x20%s','addAgents','emit','userFaxAccount:save','removeAgents','isArray','userFaxAccount:remove','getAgents','eml-format','rimraf','zip-dir','moment','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','socket.io-emitter','./faxAccount.socket','client','http','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','sendStatus','end','status','json','undefined','count','offset','limit','set','Content-Range','apply','destroy','get','UserProfileResource','name','send','Pause','mandatoryDispositionPause','map','FaxAccount','rawAttributes','type','key','keys','filters','intersection','model','query','attributes','fields','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','length','find','create','body','user','role','FaxAccounts','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','FaxAccountId','Disposition','getDispositions','findOne','ids','addAnswer','CannedAnswer','getAnswers','hasOwnProperty','removeAnswers','FaxInteraction','addInteraction','CmContact','Contact','User','Owner','fullname','internal','Tags','color','tag','sequelize','transaction','Transaction','READ_COMMITTED','FaxApplication','bulkCreate','priority','stack','getApplications','from-voip-provider','exten','localstationid','app','description','push','Answer','Set','ecm','gateway','faxdetect','headerinfo','maxrate','minrate','t38timeout','FAXOPT(','Wait','addAccountApplications','VoiceExtension','omit','tech','createdAt','TrunkId','ListId','findById','getMessages','FaxMessage','$gte','split','format','YYYY-MM-DD\x20HH:mm:ss','CmList','List','Contacts','updatedAt','DESC','attachments','join','root','server/files/attachments'];(function(_0x135a8d,_0x469d3f){var _0x28a9eb=function(_0x41f2a3){while(--_0x41f2a3){_0x135a8d['push'](_0x135a8d['shift']());}};_0x28a9eb(++_0x469d3f);}(_0x5454,0x190));var _0x4545=function(_0x101bd9,_0x27eefc){_0x101bd9=_0x101bd9-0x0;var _0x4de67d=_0x5454[_0x101bd9];return _0x4de67d;};'use strict';var emlformat=require(_0x4545('0x0'));var rimraf=require(_0x4545('0x1'));var zipdir=require(_0x4545('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x4545('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4545('0x4'));var path=require(_0x4545('0x5'));var sox=require(_0x4545('0x6'));var csv=require(_0x4545('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4545('0x8'));var _=require(_0x4545('0x9'));var squel=require(_0x4545('0xa'));var crypto=require(_0x4545('0xb'));var jsforce=require(_0x4545('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x4545('0x7'));var querystring=require(_0x4545('0xd'));var Papa=require(_0x4545('0xe'));var Redis=require(_0x4545('0xf'));var authService=require(_0x4545('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4545('0x11'));var logger=require(_0x4545('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x4545('0x13'));var licenseUtil=require(_0x4545('0x14'));var db=require(_0x4545('0x15'))['db'];config['redis']=_[_0x4545('0x16')](config[_0x4545('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x4545('0x18'))(new Redis(config[_0x4545('0x17')]));require(_0x4545('0x19'))['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0x4545('0x1a')][_0x4545('0x1b')]({'port':0x232c});var client9002=jayson[_0x4545('0x1a')][_0x4545('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x5e34de,_0x356d48,_0x360641,_0x385f81){return new BPromise(function(_0x5968c8,_0x5c745c){var _0x2db66f=_0x385f81||client;return _0x2db66f['request'](_0x5e34de,_0x360641)[_0x4545('0x1c')](function(_0x23ed01){logger[_0x4545('0x1d')](_0x4545('0x1e'),_0x356d48,_0x4545('0x1f'));logger[_0x4545('0x20')](_0x4545('0x21'),_0x356d48,_0x4545('0x1f'),JSON['stringify'](_0x23ed01));if(_0x23ed01[_0x4545('0x22')]){if(_0x23ed01[_0x4545('0x22')][_0x4545('0x23')]===0x1f4){logger[_0x4545('0x22')](_0x4545('0x1e'),_0x356d48,_0x23ed01[_0x4545('0x22')][_0x4545('0x24')]);return _0x5c745c(_0x23ed01['error']['message']);}logger['error']('FaxAccount,\x20%s,\x20%s',_0x356d48,_0x23ed01['error'][_0x4545('0x24')]);return _0x5968c8(_0x23ed01[_0x4545('0x22')][_0x4545('0x24')]);}else{logger['info'](_0x4545('0x1e'),_0x356d48,'request\x20sent');_0x5968c8(_0x23ed01['result'][_0x4545('0x24')]);}})[_0x4545('0x25')](function(_0x565047){logger[_0x4545('0x22')]('FaxAccount,\x20%s,\x20%s',_0x356d48,_0x565047);_0x5c745c(_0x565047);});});}function respondWithStatusCode(_0x293962,_0x14fab3){_0x14fab3=_0x14fab3||0xcc;return function(_0x2aa83c){if(_0x2aa83c){return _0x293962[_0x4545('0x26')](_0x14fab3);}return _0x293962['status'](_0x14fab3)[_0x4545('0x27')]();};}function respondWithResult(_0x5820c0,_0x436190){_0x436190=_0x436190||0xc8;return function(_0x252bf7){if(_0x252bf7){return _0x5820c0[_0x4545('0x28')](_0x436190)[_0x4545('0x29')](_0x252bf7);}};}function respondWithFilteredResult(_0x4b10ce,_0x1170f3){return function(_0x3a4fac){if(_0x3a4fac){var _0xbfe707=typeof _0x1170f3['offset']===_0x4545('0x2a')&&typeof _0x1170f3['limit']===_0x4545('0x2a');var _0x4c4258=_0x3a4fac[_0x4545('0x2b')];var _0x64491=_0xbfe707?0x0:_0x1170f3[_0x4545('0x2c')];var _0x1db906=_0xbfe707?_0x3a4fac['count']:_0x1170f3[_0x4545('0x2c')]+_0x1170f3[_0x4545('0x2d')];var _0x4ec420;if(_0x1db906>=_0x4c4258){_0x1db906=_0x4c4258;_0x4ec420=0xc8;}else{_0x4ec420=0xce;}_0x4b10ce[_0x4545('0x28')](_0x4ec420);return _0x4b10ce[_0x4545('0x2e')](_0x4545('0x2f'),_0x64491+'-'+_0x1db906+'/'+_0x4c4258)[_0x4545('0x29')](_0x3a4fac);}return null;};}function patchUpdates(_0x1dfad6){return function(_0x34eaf4){try{jsonpatch[_0x4545('0x30')](_0x34eaf4,_0x1dfad6,!![]);}catch(_0x36b3a8){return BPromise['reject'](_0x36b3a8);}return _0x34eaf4['save']();};}function saveUpdates(_0x7445c5,_0x31e097){return function(_0x2692c1){if(_0x2692c1){return _0x2692c1['update'](_0x7445c5)[_0x4545('0x1c')](function(_0x58067e){return _0x58067e;});}return null;};}function removeEntity(_0x42484e,_0xa1c4ca){return function(_0x183dfb){if(_0x183dfb){return _0x183dfb[_0x4545('0x31')]()[_0x4545('0x1c')](function(){var _0x111d90=_0x183dfb[_0x4545('0x32')]({'plain':!![]});var _0x20b4a1='FaxAccounts';return db[_0x4545('0x33')][_0x4545('0x31')]({'where':{'type':_0x20b4a1,'resourceId':_0x111d90['id']}})['then'](function(){return _0x183dfb;});})[_0x4545('0x1c')](function(){_0x42484e[_0x4545('0x28')](0xcc)[_0x4545('0x27')]();});}};}function handleEntityNotFound(_0x399403,_0x3e0559){return function(_0x33ed1f){if(!_0x33ed1f){_0x399403[_0x4545('0x26')](0x194);}return _0x33ed1f;};}function handleError(_0x24490b,_0x11ac42){_0x11ac42=_0x11ac42||0x1f4;return function(_0x3e321e){logger['error'](_0x3e321e['stack']);if(_0x3e321e[_0x4545('0x34')]){delete _0x3e321e[_0x4545('0x34')];}_0x24490b[_0x4545('0x28')](_0x11ac42)[_0x4545('0x35')](_0x3e321e);};}exports['index']=function(_0x5417da,_0x270875){var _0x4d3e84={'include':[{'model':db[_0x4545('0x36')],'as':_0x4545('0x37')}]},_0x5278f6={},_0x1395e4={'count':0x0,'rows':[]};var _0xb352a6=_[_0x4545('0x38')](db[_0x4545('0x39')][_0x4545('0x3a')],function(_0x40a027){return{'name':_0x40a027['fieldName'],'type':_0x40a027[_0x4545('0x3b')][_0x4545('0x3c')]};});_0x5278f6['model']=_[_0x4545('0x38')](_0xb352a6,_0x4545('0x34'));_0x5278f6['query']=_[_0x4545('0x3d')](_0x5417da['query']);_0x5278f6[_0x4545('0x3e')]=_[_0x4545('0x3f')](_0x5278f6[_0x4545('0x40')],_0x5278f6[_0x4545('0x41')]);_0x4d3e84[_0x4545('0x42')]=_[_0x4545('0x3f')](_0x5278f6['model'],qs[_0x4545('0x43')](_0x5417da[_0x4545('0x41')][_0x4545('0x43')]));_0x4d3e84[_0x4545('0x42')]=_0x4d3e84[_0x4545('0x42')]['length']?_0x4d3e84[_0x4545('0x42')]:_0x5278f6[_0x4545('0x40')];if(!_0x5417da[_0x4545('0x41')]['hasOwnProperty'](_0x4545('0x44'))){_0x4d3e84[_0x4545('0x2d')]=qs[_0x4545('0x2d')](_0x5417da[_0x4545('0x41')]['limit']);_0x4d3e84['offset']=qs[_0x4545('0x2c')](_0x5417da[_0x4545('0x41')][_0x4545('0x2c')]);}_0x4d3e84[_0x4545('0x45')]=qs['sort'](_0x5417da['query'][_0x4545('0x46')]);_0x4d3e84[_0x4545('0x47')]=qs[_0x4545('0x3e')](_[_0x4545('0x48')](_0x5417da['query'],_0x5278f6[_0x4545('0x3e')]),_0xb352a6);if(_0x5417da['query'][_0x4545('0x49')]){_0x4d3e84[_0x4545('0x47')]=_[_0x4545('0x4a')](_0x4d3e84[_0x4545('0x47')],{'$or':_[_0x4545('0x38')](_0xb352a6,function(_0xfc65b0){if(_0xfc65b0[_0x4545('0x3b')]!==_0x4545('0x4b')){var _0x13babf={};_0x13babf[_0xfc65b0[_0x4545('0x34')]]={'$like':'%'+_0x5417da[_0x4545('0x41')]['filter']+'%'};return _0x13babf;}})});}_0x4d3e84=_[_0x4545('0x4a')]({},_0x4d3e84,_0x5417da[_0x4545('0x4c')]);var _0x3c91dd={'where':_0x4d3e84[_0x4545('0x47')]};return db[_0x4545('0x39')][_0x4545('0x2b')](_0x3c91dd)[_0x4545('0x1c')](function(_0x23609f){_0x1395e4[_0x4545('0x2b')]=_0x23609f;if(_0x5417da[_0x4545('0x41')][_0x4545('0x4d')]){_0x4d3e84[_0x4545('0x4e')]=[{'all':!![]}];}return db[_0x4545('0x39')][_0x4545('0x4f')](_0x4d3e84);})[_0x4545('0x1c')](function(_0x5e8c76){_0x1395e4[_0x4545('0x50')]=_0x5e8c76;return _0x1395e4;})[_0x4545('0x1c')](respondWithFilteredResult(_0x270875,_0x4d3e84))[_0x4545('0x25')](handleError(_0x270875,null));};exports[_0x4545('0x51')]=function(_0x14c658,_0x575aab){var _0x55f352={'raw':![],'where':{'id':_0x14c658[_0x4545('0x52')]['id']},'include':[{'model':db[_0x4545('0x36')],'as':_0x4545('0x37')}]},_0x34db92={};_0x34db92[_0x4545('0x40')]=_[_0x4545('0x3d')](db['FaxAccount'][_0x4545('0x3a')]);_0x34db92[_0x4545('0x41')]=_['keys'](_0x14c658['query']);_0x34db92[_0x4545('0x3e')]=_['intersection'](_0x34db92[_0x4545('0x40')],_0x34db92[_0x4545('0x41')]);_0x55f352[_0x4545('0x42')]=_['intersection'](_0x34db92[_0x4545('0x40')],qs[_0x4545('0x43')](_0x14c658['query'][_0x4545('0x43')]));_0x55f352['attributes']=_0x55f352[_0x4545('0x42')][_0x4545('0x53')]?_0x55f352[_0x4545('0x42')]:_0x34db92[_0x4545('0x40')];if(_0x14c658[_0x4545('0x41')][_0x4545('0x4d')]){_0x55f352[_0x4545('0x4e')]=[{'all':!![]}];}_0x55f352=_[_0x4545('0x4a')]({},_0x55f352,_0x14c658['options']);return db[_0x4545('0x39')][_0x4545('0x54')](_0x55f352)[_0x4545('0x1c')](handleEntityNotFound(_0x575aab,null))['then'](respondWithResult(_0x575aab,null))[_0x4545('0x25')](handleError(_0x575aab,null));};exports[_0x4545('0x55')]=function(_0x51b2cd,_0x143dc2){return db[_0x4545('0x39')][_0x4545('0x55')](_0x51b2cd[_0x4545('0x56')],{})[_0x4545('0x1c')](function(_0x5c591d){var _0x1bc4c7=_0x51b2cd[_0x4545('0x57')][_0x4545('0x32')]({'plain':!![]});if(!_0x1bc4c7)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1bc4c7[_0x4545('0x58')]===_0x4545('0x57')){var _0x3f870c=_0x5c591d[_0x4545('0x32')]({'plain':!![]});var _0x2e735d=_0x4545('0x59');return db[_0x4545('0x5a')][_0x4545('0x54')]({'where':{'name':_0x2e735d,'userProfileId':_0x1bc4c7[_0x4545('0x5b')]},'raw':!![]})[_0x4545('0x1c')](function(_0x4feaec){if(_0x4feaec&&_0x4feaec[_0x4545('0x5c')]===0x0){return db[_0x4545('0x33')][_0x4545('0x55')]({'name':_0x3f870c['name'],'resourceId':_0x3f870c['id'],'type':_0x4feaec[_0x4545('0x34')],'sectionId':_0x4feaec['id']},{})[_0x4545('0x1c')](function(){return _0x5c591d;});}else{return _0x5c591d;}})[_0x4545('0x25')](function(_0x3c722a){logger[_0x4545('0x22')](_0x4545('0x5d'),_0x3c722a);throw _0x3c722a;});}return _0x5c591d;})[_0x4545('0x1c')](respondWithResult(_0x143dc2,0xc9))['catch'](handleError(_0x143dc2,null));};exports[_0x4545('0x5e')]=function(_0x2c3e00,_0x3e6bee){if(_0x2c3e00[_0x4545('0x56')]['id']){delete _0x2c3e00[_0x4545('0x56')]['id'];}return db['FaxAccount']['find']({'where':{'id':_0x2c3e00['params']['id']},'include':[{'model':db[_0x4545('0x36')],'as':_0x4545('0x37')}]})[_0x4545('0x1c')](handleEntityNotFound(_0x3e6bee,null))[_0x4545('0x1c')](saveUpdates(_0x2c3e00[_0x4545('0x56')],null))[_0x4545('0x1c')](respondWithResult(_0x3e6bee,null))[_0x4545('0x25')](handleError(_0x3e6bee,null));};exports[_0x4545('0x31')]=function(_0x246420,_0x54af02){return db['FaxAccount'][_0x4545('0x54')]({'where':{'id':_0x246420[_0x4545('0x52')]['id']}})[_0x4545('0x1c')](handleEntityNotFound(_0x54af02,null))[_0x4545('0x1c')](removeEntity(_0x54af02,null))[_0x4545('0x25')](handleError(_0x54af02,null));};exports[_0x4545('0x5f')]=function(_0x45e332,_0x372f8e){return db[_0x4545('0x39')][_0x4545('0x5f')]()[_0x4545('0x1c')](respondWithResult(_0x372f8e,null))[_0x4545('0x25')](handleError(_0x372f8e,null));};exports[_0x4545('0x60')]=function(_0x12ee3f,_0x2fe3c8,_0x523753){if(_0x12ee3f['body']['id']){delete _0x12ee3f[_0x4545('0x56')]['id'];}return db[_0x4545('0x39')][_0x4545('0x54')]({'where':{'id':_0x12ee3f[_0x4545('0x52')]['id']}})[_0x4545('0x1c')](handleEntityNotFound(_0x2fe3c8,null))['then'](function(_0x3a876){if(_0x3a876){_0x12ee3f[_0x4545('0x56')][_0x4545('0x61')]=_0x3a876['id'];return db[_0x4545('0x62')]['create'](_0x12ee3f['body']);}})['then'](respondWithResult(_0x2fe3c8,null))[_0x4545('0x25')](handleError(_0x2fe3c8,null));};exports[_0x4545('0x63')]=function(_0x447054,_0x44e84f,_0x589d0b){var _0x3e1656={'raw':![],'where':{}};var _0x224d90={};var _0x195f95={'count':0x0,'rows':[]};return db[_0x4545('0x39')][_0x4545('0x64')]({'where':{'id':_0x447054[_0x4545('0x52')]['id']}})[_0x4545('0x1c')](handleEntityNotFound(_0x44e84f,null))[_0x4545('0x1c')](function(_0x28d9a8){if(_0x28d9a8){_0x224d90[_0x4545('0x40')]=_[_0x4545('0x3d')](db[_0x4545('0x62')][_0x4545('0x3a')]);_0x224d90[_0x4545('0x41')]=_[_0x4545('0x3d')](_0x447054[_0x4545('0x41')]);_0x224d90['filters']=_['intersection'](_0x224d90[_0x4545('0x40')],_0x224d90[_0x4545('0x41')]);_0x3e1656[_0x4545('0x42')]=_[_0x4545('0x3f')](_0x224d90['model'],qs[_0x4545('0x43')](_0x447054[_0x4545('0x41')][_0x4545('0x43')]));_0x3e1656[_0x4545('0x42')]=_0x3e1656[_0x4545('0x42')]['length']?_0x3e1656['attributes']:_0x224d90['model'];if(!_0x447054[_0x4545('0x41')]['hasOwnProperty'](_0x4545('0x44'))){_0x3e1656[_0x4545('0x2d')]=qs[_0x4545('0x2d')](_0x447054[_0x4545('0x41')][_0x4545('0x2d')]);_0x3e1656[_0x4545('0x2c')]=qs[_0x4545('0x2c')](_0x447054['query'][_0x4545('0x2c')]);}_0x3e1656[_0x4545('0x45')]=qs[_0x4545('0x46')](_0x447054[_0x4545('0x41')][_0x4545('0x46')]);_0x3e1656['where']=qs[_0x4545('0x3e')](_['pick'](_0x447054[_0x4545('0x41')],_0x224d90['filters']));_0x3e1656[_0x4545('0x47')]['FaxAccountId']=_0x28d9a8['id'];if(_0x447054[_0x4545('0x41')]['filter']){_0x3e1656[_0x4545('0x47')]=_[_0x4545('0x4a')](_0x3e1656[_0x4545('0x47')],{'$or':_[_0x4545('0x38')](_0x3e1656['attributes'],function(_0x30b2ac){var _0xf228b8={};_0xf228b8[_0x30b2ac]={'$like':'%'+_0x447054[_0x4545('0x41')][_0x4545('0x49')]+'%'};return _0xf228b8;})});}_0x3e1656=_['merge']({},_0x3e1656,_0x447054['options']);return db[_0x4545('0x62')][_0x4545('0x2b')]({'where':_0x3e1656[_0x4545('0x47')]})['then'](function(_0x549159){_0x195f95[_0x4545('0x2b')]=_0x549159;if(_0x447054[_0x4545('0x41')][_0x4545('0x4d')]){_0x3e1656[_0x4545('0x4e')]=[{'all':!![]}];}return db['Disposition']['findAll'](_0x3e1656);})[_0x4545('0x1c')](function(_0x156bb0){_0x195f95['rows']=_0x156bb0;return _0x195f95;});}})[_0x4545('0x1c')](respondWithFilteredResult(_0x44e84f,_0x3e1656))[_0x4545('0x25')](handleError(_0x44e84f,null));};exports['removeDispositions']=function(_0x3e0214,_0x222d74,_0x88e648){return db[_0x4545('0x39')][_0x4545('0x54')]({'where':{'id':_0x3e0214['params']['id']}})[_0x4545('0x1c')](handleEntityNotFound(_0x222d74,null))[_0x4545('0x1c')](function(_0x6ac3e6){if(_0x6ac3e6){return _0x6ac3e6['removeDispositions'](_0x3e0214[_0x4545('0x41')][_0x4545('0x65')]);}})['then'](respondWithStatusCode(_0x222d74,null))[_0x4545('0x25')](handleError(_0x222d74,null));};exports[_0x4545('0x66')]=function(_0x32ee07,_0x2201b5,_0x27a458){if(_0x32ee07[_0x4545('0x56')]['id']){delete _0x32ee07[_0x4545('0x56')]['id'];}return db[_0x4545('0x39')]['find']({'where':{'id':_0x32ee07['params']['id']}})[_0x4545('0x1c')](handleEntityNotFound(_0x2201b5,null))['then'](function(_0x923a27){if(_0x923a27){_0x32ee07[_0x4545('0x56')][_0x4545('0x61')]=_0x923a27['id'];return db[_0x4545('0x67')][_0x4545('0x55')](_0x32ee07[_0x4545('0x56')]);}})[_0x4545('0x1c')](respondWithResult(_0x2201b5,null))[_0x4545('0x25')](handleError(_0x2201b5,null));};exports[_0x4545('0x68')]=function(_0x3a605f,_0xbf1f9c,_0x3dac89){var _0x32e66b={'raw':![],'where':{}};var _0x1ef9ad={};var _0x1c864d={'count':0x0,'rows':[]};return db[_0x4545('0x39')][_0x4545('0x64')]({'where':{'id':_0x3a605f[_0x4545('0x52')]['id']}})['then'](handleEntityNotFound(_0xbf1f9c,null))['then'](function(_0x3d2621){if(_0x3d2621){_0x1ef9ad[_0x4545('0x40')]=_['keys'](db['CannedAnswer'][_0x4545('0x3a')]);_0x1ef9ad[_0x4545('0x41')]=_[_0x4545('0x3d')](_0x3a605f['query']);_0x1ef9ad['filters']=_['intersection'](_0x1ef9ad[_0x4545('0x40')],_0x1ef9ad[_0x4545('0x41')]);_0x32e66b[_0x4545('0x42')]=_[_0x4545('0x3f')](_0x1ef9ad[_0x4545('0x40')],qs[_0x4545('0x43')](_0x3a605f[_0x4545('0x41')][_0x4545('0x43')]));_0x32e66b[_0x4545('0x42')]=_0x32e66b[_0x4545('0x42')][_0x4545('0x53')]?_0x32e66b[_0x4545('0x42')]:_0x1ef9ad[_0x4545('0x40')];if(!_0x3a605f['query'][_0x4545('0x69')]('nolimit')){_0x32e66b[_0x4545('0x2d')]=qs[_0x4545('0x2d')](_0x3a605f[_0x4545('0x41')]['limit']);_0x32e66b[_0x4545('0x2c')]=qs[_0x4545('0x2c')](_0x3a605f[_0x4545('0x41')][_0x4545('0x2c')]);}_0x32e66b[_0x4545('0x45')]=qs[_0x4545('0x46')](_0x3a605f[_0x4545('0x41')]['sort']);_0x32e66b[_0x4545('0x47')]=qs[_0x4545('0x3e')](_[_0x4545('0x48')](_0x3a605f[_0x4545('0x41')],_0x1ef9ad[_0x4545('0x3e')]));_0x32e66b['where'][_0x4545('0x61')]=_0x3d2621['id'];if(_0x3a605f[_0x4545('0x41')][_0x4545('0x49')]){_0x32e66b['where']=_['merge'](_0x32e66b['where'],{'$or':_[_0x4545('0x38')](_0x32e66b[_0x4545('0x42')],function(_0x244812){var _0x4f501e={};_0x4f501e[_0x244812]={'$like':'%'+_0x3a605f[_0x4545('0x41')][_0x4545('0x49')]+'%'};return _0x4f501e;})});}_0x32e66b=_[_0x4545('0x4a')]({},_0x32e66b,_0x3a605f[_0x4545('0x4c')]);return db[_0x4545('0x67')]['count']({'where':_0x32e66b[_0x4545('0x47')]})[_0x4545('0x1c')](function(_0x569ac1){_0x1c864d[_0x4545('0x2b')]=_0x569ac1;if(_0x3a605f[_0x4545('0x41')][_0x4545('0x4d')]){_0x32e66b['include']=[{'all':!![]}];}return db['CannedAnswer'][_0x4545('0x4f')](_0x32e66b);})[_0x4545('0x1c')](function(_0x1e66f2){_0x1c864d[_0x4545('0x50')]=_0x1e66f2;return _0x1c864d;});}})[_0x4545('0x1c')](respondWithFilteredResult(_0xbf1f9c,_0x32e66b))[_0x4545('0x25')](handleError(_0xbf1f9c,null));};exports[_0x4545('0x6a')]=function(_0x51c9e9,_0x32fb38,_0x185a93){return db['FaxAccount'][_0x4545('0x54')]({'where':{'id':_0x51c9e9[_0x4545('0x52')]['id']}})['then'](handleEntityNotFound(_0x32fb38,null))['then'](function(_0x260b4c){if(_0x260b4c){return _0x260b4c[_0x4545('0x6a')](_0x51c9e9['query'][_0x4545('0x65')]);}})[_0x4545('0x1c')](respondWithStatusCode(_0x32fb38,null))['catch'](handleError(_0x32fb38,null));};exports['addInteraction']=function(_0x5dd2df,_0x45a919,_0x359a7e){return db[_0x4545('0x6b')]['find']({'where':{'id':_0x5dd2df[_0x4545('0x52')]['id']}})[_0x4545('0x1c')](handleEntityNotFound(_0x45a919,null))[_0x4545('0x1c')](function(_0x184927){if(_0x184927){return _0x184927[_0x4545('0x6c')](_0x5dd2df[_0x4545('0x56')][_0x4545('0x65')],_['omit'](_0x5dd2df[_0x4545('0x56')],[_0x4545('0x65'),'id'])||{});}})[_0x4545('0x1c')](respondWithResult(_0x45a919,null))[_0x4545('0x25')](handleError(_0x45a919,null));};exports['getInteractions']=function(_0x28c558,_0x2d2bd4,_0x4f249f){var _0x403b7f={'raw':![],'where':{}};var _0x198fa3={};var _0x34b1dc={'count':0x0,'rows':[]};return db[_0x4545('0x39')][_0x4545('0x64')]({'where':{'id':_0x28c558[_0x4545('0x52')]['id']}})['then'](handleEntityNotFound(_0x2d2bd4,null))['then'](function(_0xd99087){if(_0xd99087){_0x198fa3[_0x4545('0x40')]=_['keys'](db[_0x4545('0x6b')][_0x4545('0x3a')]);_0x198fa3[_0x4545('0x41')]=_[_0x4545('0x3d')](_0x28c558[_0x4545('0x41')]);_0x198fa3['filters']=_[_0x4545('0x3f')](_0x198fa3[_0x4545('0x40')],_0x198fa3[_0x4545('0x41')]);_0x403b7f[_0x4545('0x42')]=_[_0x4545('0x3f')](_0x198fa3[_0x4545('0x40')],qs[_0x4545('0x43')](_0x28c558[_0x4545('0x41')][_0x4545('0x43')]));_0x403b7f[_0x4545('0x42')]=_0x403b7f[_0x4545('0x42')][_0x4545('0x53')]?_0x403b7f['attributes']:_0x198fa3[_0x4545('0x40')];if(!_0x28c558[_0x4545('0x41')][_0x4545('0x69')](_0x4545('0x44'))){_0x403b7f[_0x4545('0x2d')]=qs['limit'](_0x28c558[_0x4545('0x41')]['limit']);_0x403b7f[_0x4545('0x2c')]=qs[_0x4545('0x2c')](_0x28c558[_0x4545('0x41')]['offset']);}_0x403b7f[_0x4545('0x45')]=qs[_0x4545('0x46')](_0x28c558[_0x4545('0x41')]['sort']);_0x403b7f[_0x4545('0x47')]=qs[_0x4545('0x3e')](_[_0x4545('0x48')](_0x28c558[_0x4545('0x41')],_0x198fa3['filters']));_0x403b7f[_0x4545('0x47')][_0x4545('0x61')]=_0xd99087['id'];if(_0x28c558[_0x4545('0x41')]['filter']){_0x403b7f[_0x4545('0x47')]=_['merge'](_0x403b7f[_0x4545('0x47')],{'$or':_[_0x4545('0x38')](_0x403b7f[_0x4545('0x42')],function(_0x28bf6e){var _0x43c799={};_0x43c799[_0x28bf6e]={'$like':'%'+_0x28c558['query'][_0x4545('0x49')]+'%'};return _0x43c799;})});}_0x403b7f=_[_0x4545('0x4a')]({},_0x403b7f,_0x28c558[_0x4545('0x4c')]);return db[_0x4545('0x6b')][_0x4545('0x2b')]({'where':_0x403b7f['where']})[_0x4545('0x1c')](function(_0xedcf39){_0x34b1dc[_0x4545('0x2b')]=_0xedcf39;if(_0x28c558[_0x4545('0x41')][_0x4545('0x4d')]){_0x403b7f[_0x4545('0x4e')]=[{'model':db[_0x4545('0x6d')],'as':_0x4545('0x6e'),'required':![]},{'model':db[_0x4545('0x6f')],'as':_0x4545('0x70'),'attributes':[_0x4545('0x34'),_0x4545('0x71'),_0x4545('0x72')],'required':![]},{'model':db['Tag'],'as':_0x4545('0x73'),'attributes':['id','name',_0x4545('0x74')],'where':_0x28c558[_0x4545('0x41')][_0x4545('0x75')]?{'id':_0x28c558[_0x4545('0x41')][_0x4545('0x75')]}:undefined,'required':_0x28c558[_0x4545('0x41')][_0x4545('0x75')]?!![]:![]}];}return db[_0x4545('0x6b')][_0x4545('0x4f')](_0x403b7f);})[_0x4545('0x1c')](function(_0x1b48f7){_0x34b1dc[_0x4545('0x50')]=_0x1b48f7;return _0x34b1dc;});}})[_0x4545('0x1c')](respondWithFilteredResult(_0x2d2bd4,_0x403b7f))[_0x4545('0x25')](handleError(_0x2d2bd4,null));};exports['addApplications']=function(_0x15f2eb,_0x1c38be){var _0x3bcfe3=_0x15f2eb['params']['id'];var _0x1d77df=_0x15f2eb[_0x4545('0x56')];var _0x33fdc1=0xc8;var _0x3003ee=null;return db[_0x4545('0x76')][_0x4545('0x77')]({'isolationLevel':db[_0x4545('0x76')][_0x4545('0x78')]['ISOLATION_LEVELS'][_0x4545('0x79')]},function(_0x3e5088){return db['FaxAccount'][_0x4545('0x64')]({'where':{'id':_0x3bcfe3},'transaction':_0x3e5088})['then'](function(_0x4adafe){if(_0x4adafe){return db[_0x4545('0x7a')]['destroy']({'where':{'FaxAccountId':_0x3bcfe3},'transaction':_0x3e5088})['then'](function(){var _0x3e3e47=_['map'](_0x1d77df,function(_0x584f9a){_0x584f9a[_0x4545('0x61')]=_0x3bcfe3;return _0x584f9a;});return db['FaxApplication'][_0x4545('0x7b')](_0x3e3e47,{'transaction':_0x3e5088});});}else{_0x33fdc1=0x194;_0x3003ee=[];}});})[_0x4545('0x1c')](function(){if(_0x33fdc1!==0x194){return db[_0x4545('0x7a')]['findAndCountAll']({'where':{'FaxAccountId':_0x3bcfe3},'order':_0x4545('0x7c')})['then'](function(_0xe980b4){_0x3003ee=_0xe980b4;});}})[_0x4545('0x25')](function(_0x460342){_0x33fdc1=0x1f4;logger[_0x4545('0x22')](_0x460342[_0x4545('0x7d')]);if(_0x460342['name']){delete _0x460342[_0x4545('0x34')];}_0x3003ee=_0x460342;})['finally'](function(){if(_0x3003ee===null){_0x1c38be[_0x4545('0x26')](_0x33fdc1);}else{if(_0x33fdc1===0x1f4){_0x1c38be[_0x4545('0x28')](_0x33fdc1)[_0x4545('0x35')](_0x3003ee);}else{_0x1c38be[_0x4545('0x28')](_0x33fdc1)[_0x4545('0x29')](_0x3003ee);}}});};exports['getApplications']=function(_0x132596,_0x51f514,_0x1afbff){var _0x1c21f2={};var _0x24b59b={};var _0x36d9ec;var _0x36abb2;return db['FaxAccount'][_0x4545('0x64')]({'where':{'id':_0x132596['params']['id']}})[_0x4545('0x1c')](handleEntityNotFound(_0x51f514,null))[_0x4545('0x1c')](function(_0xbd7921){if(_0xbd7921){_0x36d9ec=_0xbd7921;_0x24b59b[_0x4545('0x40')]=_['keys'](db[_0x4545('0x7a')][_0x4545('0x3a')]);_0x24b59b[_0x4545('0x41')]=_[_0x4545('0x3d')](_0x132596[_0x4545('0x41')]);_0x24b59b[_0x4545('0x3e')]=_[_0x4545('0x3f')](_0x24b59b[_0x4545('0x40')],_0x24b59b[_0x4545('0x41')]);_0x1c21f2[_0x4545('0x42')]=_[_0x4545('0x3f')](_0x24b59b['model'],qs[_0x4545('0x43')](_0x132596[_0x4545('0x41')][_0x4545('0x43')]));_0x1c21f2[_0x4545('0x42')]=_0x1c21f2['attributes'][_0x4545('0x53')]?_0x1c21f2['attributes']:_0x24b59b['model'];_0x1c21f2[_0x4545('0x45')]=qs[_0x4545('0x46')](_0x132596[_0x4545('0x41')][_0x4545('0x46')]);_0x1c21f2['where']=qs[_0x4545('0x3e')](_['pick'](_0x132596[_0x4545('0x41')],_0x24b59b[_0x4545('0x3e')]));if(_0x132596['query'][_0x4545('0x49')]){_0x1c21f2['where']=_['merge'](_0x1c21f2[_0x4545('0x47')],{'$or':_[_0x4545('0x38')](_0x1c21f2[_0x4545('0x42')],function(_0x38b144){var _0x5b119b={};_0x5b119b[_0x38b144]={'$like':'%'+_0x132596[_0x4545('0x41')][_0x4545('0x49')]+'%'};return _0x5b119b;})});}_0x1c21f2=_[_0x4545('0x4a')]({},_0x1c21f2,_0x132596['options']);return _0x36d9ec[_0x4545('0x7e')](_0x1c21f2);}})['then'](function(_0x1e8dce){if(_0x1e8dce){_0x36abb2=_0x1e8dce['length'];if(!_0x132596['query'][_0x4545('0x69')](_0x4545('0x44'))){_0x1c21f2[_0x4545('0x2d')]=qs[_0x4545('0x2d')](_0x132596[_0x4545('0x41')][_0x4545('0x2d')]);_0x1c21f2['offset']=qs[_0x4545('0x2c')](_0x132596[_0x4545('0x41')][_0x4545('0x2c')]);}return _0x36d9ec[_0x4545('0x7e')](_0x1c21f2);}})[_0x4545('0x1c')](function(_0x3ebfeb){if(_0x3ebfeb){return _0x3ebfeb?{'count':_0x36abb2,'rows':_0x3ebfeb}:null;}})[_0x4545('0x1c')](respondWithResult(_0x51f514,null))['catch'](handleError(_0x51f514,null));};function Extension(_0x2d85b3,_0x29fdd0,_0x29940d,_0x8ef525){this['context']=_0x4545('0x7f');this[_0x4545('0x80')]=_0x2d85b3[_0x4545('0x81')];this[_0x4545('0x82')]=_0x8ef525;this[_0x4545('0x3b')]='system';this[_0x4545('0x83')]='Fax\x20Extension';this[_0x4545('0x61')]=_0x2d85b3['id'];this[_0x4545('0x7c')]=_0x29fdd0;this['appdata']=_0x29940d;}function createExtensionsReciveFax(_0x24aab2){var _0x1aa08c=0x1;var _0xcd83c=[];_0xcd83c[_0x4545('0x84')](new Extension(_0x24aab2,_0x1aa08c,'',_0x4545('0x85')));_0x1aa08c+=0x1;_0xcd83c[_0x4545('0x84')](new Extension(_0x24aab2,_0x1aa08c,'CDR(type)=inbound-fax',_0x4545('0x86')));_0x1aa08c+=0x1;for(var _0x4703ab in _0x24aab2){if(_0x24aab2[_0x4545('0x69')](_0x4703ab)&&(_0x4703ab===_0x4545('0x87')||_0x4703ab===_0x4545('0x81')||_0x4703ab===_0x4545('0x88')||_0x4703ab===_0x4545('0x89')||_0x4703ab===_0x4545('0x8a')||_0x4703ab===_0x4545('0x8b')||_0x4703ab===_0x4545('0x8c')||_0x4703ab==='modem'||_0x4703ab===_0x4545('0x8d'))){_0xcd83c[_0x4545('0x84')](new Extension(_0x24aab2,_0x1aa08c,_0x4545('0x8e')+_0x4703ab+')='+_0x24aab2[_0x4703ab],_0x4545('0x86')));_0x1aa08c+=0x1;}}_0xcd83c['push'](new Extension(_0x24aab2,_0x1aa08c,'6',_0x4545('0x8f')));_0x1aa08c+=0x1;_0xcd83c[_0x4545('0x84')](new Extension(_0x24aab2,_0x1aa08c,'/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'));_0x1aa08c=0x0;return _0xcd83c;}exports[_0x4545('0x90')]=function(_0x582cd2,_0x32a4a6,_0x167ffe){var _0x30f6ab;return db['sequelize'][_0x4545('0x77')](function(_0xc980d8){return db['FaxAccount']['create'](_0x582cd2[_0x4545('0x56')],{'transaction':_0xc980d8})[_0x4545('0x1c')](function(_0x486fbb){_0x30f6ab=_0x486fbb[_0x4545('0x32')]({'plain':!![]});return db[_0x4545('0x91')]['bulkCreate'](createExtensionsReciveFax(_0x30f6ab),{'transaction':_0xc980d8});});})[_0x4545('0x1c')](function(){return _0x30f6ab;})['then'](respondWithResult(_0x32a4a6,null))['catch'](handleError(_0x32a4a6,null));};exports['updateAccountApplications']=function(_0x1f31dc,_0x1257cc,_0x15f77b){var _0x11e910;return db[_0x4545('0x76')]['transaction'](function(_0x376423){return db[_0x4545('0x39')]['update'](_0x1f31dc[_0x4545('0x56')],{'where':{'id':_0x1f31dc[_0x4545('0x56')]['id']},'transaction':_0x376423})[_0x4545('0x1c')](function(_0x3fc774){return db[_0x4545('0x91')][_0x4545('0x31')]({'where':{'FaxAccountId':_0x1f31dc['body']['id']},'transaction':_0x376423})['then'](function(_0x46cb76){return db[_0x4545('0x91')]['bulkCreate'](createExtensionsReciveFax(_[_0x4545('0x92')](_0x1f31dc[_0x4545('0x56')],[_0x4545('0x93'),_0x4545('0x3c'),_0x4545('0x94'),'updatedAt',_0x4545('0x95'),_0x4545('0x96')])),{'transaction':_0x376423});});});})[_0x4545('0x1c')](function(){return db[_0x4545('0x39')][_0x4545('0x97')](_0x1f31dc[_0x4545('0x56')]['id']);})[_0x4545('0x1c')](respondWithResult(_0x1257cc,null))[_0x4545('0x25')](handleError(_0x1257cc,null));};exports[_0x4545('0x98')]=function(_0x1083b5,_0x202b0e,_0x396844){var _0x393460={'raw':!![],'where':{}};var _0x47b4cb={};var _0x3fe5a4={'count':0x0,'rows':[]};return db[_0x4545('0x39')][_0x4545('0x64')]({'where':{'id':_0x1083b5[_0x4545('0x52')]['id']}})[_0x4545('0x1c')](handleEntityNotFound(_0x202b0e,null))[_0x4545('0x1c')](function(_0x158e54){if(_0x158e54){_0x47b4cb['model']=_[_0x4545('0x3d')](db[_0x4545('0x99')][_0x4545('0x3a')]);_0x47b4cb[_0x4545('0x41')]=_[_0x4545('0x3d')](_0x1083b5[_0x4545('0x41')]);_0x47b4cb['filters']=_['intersection'](_0x47b4cb[_0x4545('0x40')],_0x47b4cb[_0x4545('0x41')]);_0x393460['attributes']=_[_0x4545('0x3f')](_0x47b4cb[_0x4545('0x40')],qs[_0x4545('0x43')](_0x1083b5[_0x4545('0x41')]['fields']));_0x393460[_0x4545('0x42')]=_0x393460[_0x4545('0x42')]['length']?_0x393460['attributes']:_0x47b4cb[_0x4545('0x40')];if(!_0x1083b5[_0x4545('0x41')][_0x4545('0x69')](_0x4545('0x44'))){_0x393460[_0x4545('0x2d')]=qs[_0x4545('0x2d')](_0x1083b5['query'][_0x4545('0x2d')]);_0x393460[_0x4545('0x2c')]=qs[_0x4545('0x2c')](_0x1083b5[_0x4545('0x41')][_0x4545('0x2c')]);}_0x393460['order']=qs[_0x4545('0x46')](_0x1083b5[_0x4545('0x41')]['sort']);_0x393460['where']=qs[_0x4545('0x3e')](_['pick'](_0x1083b5[_0x4545('0x41')],_0x47b4cb['filters']));_0x393460[_0x4545('0x47')][_0x4545('0x61')]=_0x158e54['id'];if(_0x1083b5['query']['filter']){_0x393460[_0x4545('0x47')]=_['merge'](_0x393460[_0x4545('0x47')],{'$or':_[_0x4545('0x38')](_0x393460[_0x4545('0x42')],function(_0x47cf75){var _0x21adb9={};_0x21adb9[_0x47cf75]={'$like':'%'+_0x1083b5[_0x4545('0x41')]['filter']+'%'};return _0x21adb9;})});}if(_0x1083b5[_0x4545('0x41')][_0x4545('0x9a')]){var _0xe4288a=_0x1083b5[_0x4545('0x41')]['$gte'][_0x4545('0x9b')](',');var _0x1fe80c={};_0x1fe80c[_0xe4288a[0x0]]={'$gte':moment(_0xe4288a[0x1])[_0x4545('0x9c')](_0x4545('0x9d'))};_0x393460[_0x4545('0x47')]=_[_0x4545('0x4a')](_0x393460['where'],_0x1fe80c);}_0x393460=_[_0x4545('0x4a')]({},_0x393460,_0x1083b5[_0x4545('0x4c')]);return db[_0x4545('0x99')]['count']({'where':_0x393460[_0x4545('0x47')]})[_0x4545('0x1c')](function(_0x5dd654){_0x3fe5a4[_0x4545('0x2b')]=_0x5dd654;if(_0x1083b5[_0x4545('0x41')][_0x4545('0x4d')]){_0x393460[_0x4545('0x4e')]=[{'all':!![]}];}return db[_0x4545('0x99')][_0x4545('0x4f')](_0x393460);})['then'](function(_0x1daf5c){_0x3fe5a4[_0x4545('0x50')]=_0x1daf5c;return _0x3fe5a4;});}})['then'](respondWithFilteredResult(_0x202b0e,_0x393460))['catch'](handleError(_0x202b0e,null));};exports[_0x4545('0x35')]=function(_0x5e4757,_0x1f905c,_0x493218){var _0x449bca,_0x48e91d={},_0x194995;if(_0x5e4757[_0x4545('0x56')]['to']){_0x194995=_0x5e4757[_0x4545('0x56')]['to'][0x0];}return db[_0x4545('0x39')]['find']({'where':{'id':_0x5e4757['params']['id']},'include':[{'model':db[_0x4545('0x9e')],'as':_0x4545('0x9f'),'include':[{'model':db[_0x4545('0x6d')],'as':_0x4545('0xa0'),'where':{'fax':_0x194995},'limit':0x1,'order':[[_0x4545('0xa1'),_0x4545('0xa2')]]}]}]})['then'](handleEntityNotFound(_0x1f905c,null))[_0x4545('0x1c')](function(_0x3608e0){_0x449bca=_0x3608e0;if(_0x5e4757['body'][_0x4545('0xa3')]&&_0x5e4757['body'][_0x4545('0xa3')][_0x4545('0x53')]){for(var _0x3f2ab1=0x0;_0x3f2ab1<_0x5e4757[_0x4545('0x56')][_0x4545('0xa3')][_0x4545('0x53')];_0x3f2ab1+=0x1){_0x5e4757['body'][_0x4545('0xa3')][_0x3f2ab1]={'filename':_0x5e4757[_0x4545('0x56')]['attachments'][_0x3f2ab1][_0x4545('0x34')],'id':_0x5e4757[_0x4545('0x56')][_0x4545('0xa3')][_0x3f2ab1]['id'],'path':path[_0x4545('0xa4')](config[_0x4545('0xa5')],_0x4545('0xa6'),_0x5e4757[_0x4545('0x56')]['attachments'][_0x3f2ab1][_0x4545('0xa7')])};}}return respondWithRpcPromise(_0x4545('0xa8'),_0x4545('0xa8'),{'FaxAccountId':_[_0x4545('0xa9')](_0x5e4757[_0x4545('0x52')]['id'])?undefined:_0x5e4757[_0x4545('0x52')]['id'],'path':_[_0x4545('0xa9')](_0x5e4757[_0x4545('0x56')][_0x4545('0xa3')][0x0][_0x4545('0x5')])?undefined:_0x5e4757[_0x4545('0x56')][_0x4545('0xa3')][0x0][_0x4545('0x5')],'fax':_[_0x4545('0xa9')](_0x5e4757[_0x4545('0x56')]['to'][0x0])?undefined:_0x5e4757[_0x4545('0x56')]['to'][0x0]},client9002);})[_0x4545('0x1c')](function(){if(_0x449bca){if(_[_0x4545('0xa9')](_0x5e4757[_0x4545('0x56')]['from'])){_0x5e4757['body']['from']=util['format'](_0x4545('0xaa'),_0x449bca['name'],_0x449bca['fax']);}if(_0x449bca['List']){if(_0x449bca[_0x4545('0x9f')][_0x4545('0xa0')][_0x4545('0x53')]){return _0x449bca['List'][_0x4545('0xa0')][0x0];}else{return db['CmContact'][_0x4545('0x55')](_[_0x4545('0x16')](_0x5e4757[_0x4545('0x56')],{'firstName':_0x5e4757[_0x4545('0x56')]['to'][0x0],'phone':_0x5e4757[_0x4545('0x56')]['to'][0x0],'fax':_0x5e4757[_0x4545('0x56')]['to'][0x0],'ListId':_0x449bca['ListId']}));}}else{throw new Error(_0x4545('0xab'));}}else{throw new Error(_0x4545('0xac'));}})[_0x4545('0x1c')](function(_0x33a3a9){if(_0x33a3a9){return db[_0x4545('0x6b')][_0x4545('0x54')]({'where':{'ContactId':_0x33a3a9['id'],'closed':![],'FaxAccountId':_0x449bca['id']}})['then'](function(_0x23d060){if(_0x23d060){return[_0x23d060,![]];}return db[_0x4545('0x6b')]['create']({'UserId':_0x5e4757[_0x4545('0x57')]['id'],'ContactId':_0x33a3a9['id'],'FaxAccountId':_0x449bca['id'],'fax':_0x5e4757[_0x4545('0x56')]['to'][0x0],'firstMsgDirection':_0x4545('0xad'),'Messages':[_[_0x4545('0x4a')](_0x5e4757['body'],{'read':![],'body':_0x5e4757[_0x4545('0x56')]['attachments'][0x0][_0x4545('0xae')],'FaxAccountId':_0x449bca['id'],'UserId':_0x5e4757['user']['id'],'ContactId':_0x33a3a9['id'],'AttachmentId':_0x5e4757[_0x4545('0x56')][_0x4545('0xa3')][0x0]['id']})]},{'include':[{'model':db[_0x4545('0x99')],'as':_0x4545('0xaf')}]})[_0x4545('0x1c')](function(_0x3e0439){return[_0x3e0439,!![]];});});}else{throw new Error(_0x4545('0xb0'));}})[_0x4545('0xb1')](function(_0x5d9ab7,_0x341740){if(_0x341740){return _0x5d9ab7;}return db[_0x4545('0x99')][_0x4545('0x55')]({'direction':_0x4545('0xad'),'read':![],'body':_0x5e4757[_0x4545('0x56')][_0x4545('0xa3')][0x0][_0x4545('0xae')],'FaxAccountId':_0x449bca['id'],'FaxInteractionId':_0x5d9ab7['id'],'UserId':_0x5e4757[_0x4545('0x57')]['id'],'ContactId':_0x5d9ab7[_0x4545('0xb2')],'AttachmentId':_0x5e4757['body'][_0x4545('0xa3')][0x0]['id']})[_0x4545('0x1c')](function(_0x4d23b1){_0x5d9ab7['dataValues']['Messages']=[];_0x5d9ab7['dataValues'][_0x4545('0xaf')][_0x4545('0x84')](_0x4d23b1[_0x4545('0xb3')]);return _0x5d9ab7;});})[_0x4545('0x1c')](function(_0x42e6e6){respondWithRpcPromise(_0x4545('0xb4'),_0x4545('0xb4'),{'FaxAccountId':_['isNil'](_0x5e4757[_0x4545('0x52')]['id'])?undefined:_0x5e4757[_0x4545('0x52')]['id'],'path':_[_0x4545('0xa9')](_0x5e4757[_0x4545('0x56')]['attachments'][0x0][_0x4545('0x5')])?undefined:_0x5e4757['body'][_0x4545('0xa3')][0x0][_0x4545('0x5')],'fax':_['isNil'](_0x5e4757[_0x4545('0x56')]['to'][0x0])?undefined:_0x5e4757['body']['to'][0x0],'AttachmentId':_0x5e4757[_0x4545('0x56')]['attachments'][0x0]['id']},client9002)[_0x4545('0x1c')](function(_0x20c4fc){logger[_0x4545('0x1d')](_0x4545('0xb5'),_0x20c4fc);})[_0x4545('0x25')](function(_0x1c618b){logger[_0x4545('0x1d')](_0x4545('0xb5'),_0x1c618b);});return _0x42e6e6;})['then'](respondWithResult(_0x1f905c,null))[_0x4545('0x25')](handleError(_0x1f905c,null));};exports[_0x4545('0xb6')]=function(_0x403266,_0x3e1024,_0xc5cf53){return db['FaxAccount'][_0x4545('0x54')]({'where':{'id':_0x403266['params']['id']}})[_0x4545('0x1c')](handleEntityNotFound(_0x3e1024,null))[_0x4545('0x1c')](function(_0x4f6658){if(_0x4f6658){return _0x4f6658[_0x4545('0xb6')](_0x403266[_0x4545('0x56')][_0x4545('0x65')],_[_0x4545('0x92')](_0x403266['body'],[_0x4545('0x65'),'id'])||{})['spread'](function(_0x3db89f){for(var _0x599f0e=0x0;_0x599f0e<_0x403266[_0x4545('0x56')][_0x4545('0x65')][_0x4545('0x53')];_0x599f0e+=0x1){socket[_0x4545('0xb7')](_0x4545('0xb8'),{'UserId':Number(_0x403266[_0x4545('0x56')][_0x4545('0x65')][_0x599f0e]),'FaxAccountId':Number(_0x403266[_0x4545('0x52')]['id'])});}return _0x3db89f;});}})[_0x4545('0x1c')](respondWithResult(_0x3e1024,null))[_0x4545('0x25')](handleError(_0x3e1024,null));};exports[_0x4545('0xb9')]=function(_0x13dbdb,_0x51238c,_0x1b67a7){return db[_0x4545('0x39')][_0x4545('0x54')]({'where':{'id':_0x13dbdb[_0x4545('0x52')]['id']}})[_0x4545('0x1c')](handleEntityNotFound(_0x51238c,null))['then'](function(_0x4a4543){if(_0x4a4543){return _0x4a4543['removeAgents'](_0x13dbdb[_0x4545('0x41')][_0x4545('0x65')])[_0x4545('0x1c')](function(){if(_[_0x4545('0xba')](_0x13dbdb[_0x4545('0x41')][_0x4545('0x65')])){for(var _0x21dec2=0x0;_0x21dec2<_0x13dbdb[_0x4545('0x41')][_0x4545('0x65')][_0x4545('0x53')];_0x21dec2+=0x1){socket['emit'](_0x4545('0xbb'),{'UserId':Number(_0x13dbdb[_0x4545('0x41')][_0x4545('0x65')][_0x21dec2]),'FaxAccountId':Number(_0x13dbdb[_0x4545('0x52')]['id'])});}}else{socket[_0x4545('0xb7')]('userFaxAccount:remove',{'UserId':Number(_0x13dbdb[_0x4545('0x41')]['ids']),'FaxAccountId':Number(_0x13dbdb[_0x4545('0x52')]['id'])});}});}})[_0x4545('0x1c')](respondWithStatusCode(_0x51238c,null))['catch'](handleError(_0x51238c,null));};exports[_0x4545('0xbc')]=function(_0x252335,_0x3ea853,_0x3dabe9){var _0x5007c8={};var _0x24999a={};var _0x4f1192;var _0x56f09b;return db['FaxAccount'][_0x4545('0x64')]({'where':{'id':_0x252335[_0x4545('0x52')]['id']}})['then'](handleEntityNotFound(_0x3ea853,null))[_0x4545('0x1c')](function(_0x558d37){if(_0x558d37){_0x4f1192=_0x558d37;_0x24999a[_0x4545('0x40')]=_['keys'](db['User'][_0x4545('0x3a')]);_0x24999a[_0x4545('0x41')]=_[_0x4545('0x3d')](_0x252335[_0x4545('0x41')]);_0x24999a[_0x4545('0x3e')]=_[_0x4545('0x3f')](_0x24999a[_0x4545('0x40')],_0x24999a[_0x4545('0x41')]);_0x5007c8[_0x4545('0x42')]=_[_0x4545('0x3f')](_0x24999a[_0x4545('0x40')],qs['fields'](_0x252335['query'][_0x4545('0x43')]));_0x5007c8['attributes']=_0x5007c8[_0x4545('0x42')][_0x4545('0x53')]?_0x5007c8[_0x4545('0x42')]:_0x24999a[_0x4545('0x40')];_0x5007c8['order']=qs[_0x4545('0x46')](_0x252335[_0x4545('0x41')][_0x4545('0x46')]);_0x5007c8[_0x4545('0x47')]=qs[_0x4545('0x3e')](_[_0x4545('0x48')](_0x252335[_0x4545('0x41')],_0x24999a['filters']));if(_0x252335[_0x4545('0x41')][_0x4545('0x49')]){_0x5007c8['where']=_[_0x4545('0x4a')](_0x5007c8[_0x4545('0x47')],{'$or':_['map'](_0x5007c8['attributes'],function(_0x124b9f){var _0xac0c3a={};_0xac0c3a[_0x124b9f]={'$like':'%'+_0x252335[_0x4545('0x41')][_0x4545('0x49')]+'%'};return _0xac0c3a;})});}_0x5007c8=_[_0x4545('0x4a')]({},_0x5007c8,_0x252335[_0x4545('0x4c')]);return _0x4f1192[_0x4545('0xbc')](_0x5007c8);}})[_0x4545('0x1c')](function(_0x364dae){if(_0x364dae){_0x56f09b=_0x364dae['length'];if(!_0x252335['query'][_0x4545('0x69')](_0x4545('0x44'))){_0x5007c8[_0x4545('0x2d')]=qs['limit'](_0x252335[_0x4545('0x41')][_0x4545('0x2d')]);_0x5007c8[_0x4545('0x2c')]=qs[_0x4545('0x2c')](_0x252335[_0x4545('0x41')][_0x4545('0x2c')]);}return _0x4f1192[_0x4545('0xbc')](_0x5007c8);}})[_0x4545('0x1c')](function(_0x14f87d){if(_0x14f87d){return _0x14f87d?{'count':_0x56f09b,'rows':_0x14f87d}:null;}})[_0x4545('0x1c')](respondWithResult(_0x3ea853,null))[_0x4545('0x25')](handleError(_0x3ea853,null));};
\ No newline at end of file
index 5eee5bc..b1cc693 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe938=['FaxAccount','setMaxListeners','save','emit','hasOwnProperty','hook'];(function(_0x36fb1f,_0x408163){var _0xb52f26=function(_0x311239){while(--_0x311239){_0x36fb1f['push'](_0x36fb1f['shift']());}};_0xb52f26(++_0x408163);}(_0xe938,0xd2));var _0x8e93=function(_0x1e4c37,_0xdf253e){_0x1e4c37=_0x1e4c37-0x0;var _0xec3469=_0xe938[_0x1e4c37];return _0xec3469;};'use strict';var EventEmitter=require('events');var FaxAccount=require('../../mysqldb')['db'][_0x8e93('0x0')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0x8e93('0x1')](0x0);var events={'afterCreate':_0x8e93('0x2'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x14cbd7){return function(_0x2b5815,_0x54f646,_0x52e1f5){FaxAccountEvents[_0x8e93('0x3')](_0x14cbd7+':'+_0x2b5815['id'],_0x2b5815);FaxAccountEvents[_0x8e93('0x3')](_0x14cbd7,_0x2b5815);_0x52e1f5(null);};}for(var e in events){if(events[_0x8e93('0x4')](e)){var event=events[e];FaxAccount[_0x8e93('0x5')](e,emitEvent(event));}}module['exports']=FaxAccountEvents;
\ No newline at end of file
+var _0x7c7d=['remove','emit','hasOwnProperty','exports','events','../../mysqldb','FaxAccount','setMaxListeners','save','update'];(function(_0x2049aa,_0x30b6de){var _0x59b4a9=function(_0x128fdd){while(--_0x128fdd){_0x2049aa['push'](_0x2049aa['shift']());}};_0x59b4a9(++_0x30b6de);}(_0x7c7d,0x158));var _0xd7c7=function(_0x42103d,_0x2e28c9){_0x42103d=_0x42103d-0x0;var _0x5a8261=_0x7c7d[_0x42103d];return _0x5a8261;};'use strict';var EventEmitter=require(_0xd7c7('0x0'));var FaxAccount=require(_0xd7c7('0x1'))['db'][_0xd7c7('0x2')];var FaxAccountEvents=new EventEmitter();FaxAccountEvents[_0xd7c7('0x3')](0x0);var events={'afterCreate':_0xd7c7('0x4'),'afterUpdate':_0xd7c7('0x5'),'afterDestroy':_0xd7c7('0x6')};function emitEvent(_0x5273c7){return function(_0x2f2a7f,_0x352fb7,_0x55a7ed){FaxAccountEvents['emit'](_0x5273c7+':'+_0x2f2a7f['id'],_0x2f2a7f);FaxAccountEvents[_0xd7c7('0x7')](_0x5273c7,_0x2f2a7f);_0x55a7ed(null);};}for(var e in events){if(events[_0xd7c7('0x8')](e)){var event=events[e];FaxAccount['hook'](e,emitEvent(event));}}module[_0xd7c7('0x9')]=FaxAccountEvents;
\ No newline at end of file
index 84bb62b..7e79dc4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b10=['rimraf','../../config/environment','./faxAccount.attributes','exports','define','FaxAccount','util','../../config/logger','moment','bluebird'];(function(_0x48c77b,_0x16a55c){var _0x18edfc=function(_0x3062e3){while(--_0x3062e3){_0x48c77b['push'](_0x48c77b['shift']());}};_0x18edfc(++_0x16a55c);}(_0x5b10,0xf6));var _0x05b1=function(_0xcf4e7d,_0x482fa4){_0xcf4e7d=_0xcf4e7d-0x0;var _0x46df93=_0x5b10[_0xcf4e7d];return _0x46df93;};'use strict';var _=require('lodash');var util=require(_0x05b1('0x0'));var logger=require(_0x05b1('0x1'))('api');var moment=require(_0x05b1('0x2'));var BPromise=require(_0x05b1('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x05b1('0x4'));var config=require(_0x05b1('0x5'));var attributes=require(_0x05b1('0x6'));module[_0x05b1('0x7')]=function(_0x10aaa8,_0x45f537){return _0x10aaa8[_0x05b1('0x8')](_0x05b1('0x9'),attributes,{'tableName':'fax_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1406=['api','moment','request-promise','path','rimraf','../../config/environment','./faxAccount.attributes','exports','define','FaxAccount','fax_accounts','lodash','util','../../config/logger'];(function(_0x547865,_0x907c50){var _0x20ea55=function(_0x12d32a){while(--_0x12d32a){_0x547865['push'](_0x547865['shift']());}};_0x20ea55(++_0x907c50);}(_0x1406,0x13f));var _0x6140=function(_0x34b634,_0x88b636){_0x34b634=_0x34b634-0x0;var _0x1c1520=_0x1406[_0x34b634];return _0x1c1520;};'use strict';var _=require(_0x6140('0x0'));var util=require(_0x6140('0x1'));var logger=require(_0x6140('0x2'))(_0x6140('0x3'));var moment=require(_0x6140('0x4'));var BPromise=require('bluebird');var rp=require(_0x6140('0x5'));var fs=require('fs');var path=require(_0x6140('0x6'));var rimraf=require(_0x6140('0x7'));var config=require(_0x6140('0x8'));var attributes=require(_0x6140('0x9'));module[_0x6140('0xa')]=function(_0x16fdb9,_0x11c354){return _0x16fdb9[_0x6140('0xb')](_0x6140('0xc'),attributes,{'tableName':_0x6140('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0bd67ae..637b08a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67cf=['close','unmanaged','*,*,*,*','created','interaction','FaxMessage','ContactId','AttachmentId','UserId','name','unshift','Start','startRouting','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','localhost','socket.io-emitter','./faxAccount.socket','register','request','then','info','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','FaxAccount','findAll','options','raw','where','attributes','limit','include','model','GetFaxAccount','stringify','NotifyFaxAccount','fax','CmContact','describe','ValidationError','no\x20available\x20attributes','difference','keys','createdAt','updatedAt','CompanyId','ListId','isNil','body','from','Sequelize','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','mapKey','account','List','Contacts','DESC','FaxApplication','Applications','get','applications','list','priority','asc','length','defaults','create','contact','find','Contact\x20not\x20found','autoclose','push'];(function(_0x30b0d8,_0x57470c){var _0x459c09=function(_0x5e51b6){while(--_0x5e51b6){_0x30b0d8['push'](_0x30b0d8['shift']());}};_0x459c09(++_0x57470c);}(_0x67cf,0x17a));var _0xf67c=function(_0x24a88e,_0x22a0b8){_0x24a88e=_0x24a88e-0x0;var _0x232cbb=_0x67cf[_0x24a88e];return _0x232cbb;};'use strict';var _=require(_0xf67c('0x0'));var util=require(_0xf67c('0x1'));var moment=require(_0xf67c('0x2'));var BPromise=require(_0xf67c('0x3'));var rs=require(_0xf67c('0x4'));var fs=require('fs');var Redis=require(_0xf67c('0x5'));var db=require(_0xf67c('0x6'))['db'];var utils=require(_0xf67c('0x7'));var logger=require(_0xf67c('0x8'))(_0xf67c('0x9'));var config=require('../../config/environment');var jayson=require(_0xf67c('0xa'));var client=jayson[_0xf67c('0xb')]['http']({'port':0x232c});config[_0xf67c('0xc')]=_['defaults'](config[_0xf67c('0xc')],{'host':_0xf67c('0xd'),'port':0x18eb});var socket=require(_0xf67c('0xe'))(new Redis(config['redis']));require(_0xf67c('0xf'))[_0xf67c('0x10')](socket);function respondWithRpcPromise(_0x3960a7,_0x492a72,_0x20d8c3){return new BPromise(function(_0x1d9ab1,_0x14389f){return client[_0xf67c('0x11')](_0x3960a7,_0x20d8c3)[_0xf67c('0x12')](function(_0x52376a){logger[_0xf67c('0x13')](_0xf67c('0x14'),_0x492a72,_0xf67c('0x15'));logger[_0xf67c('0x16')]('FaxAccount,\x20%s,\x20%s,\x20%s',_0x492a72,'request\x20sent',JSON['stringify'](_0x52376a));if(_0x52376a[_0xf67c('0x17')]){if(_0x52376a[_0xf67c('0x17')][_0xf67c('0x18')]===0x1f4){logger[_0xf67c('0x17')]('FaxAccount,\x20%s,\x20%s',_0x492a72,_0x52376a['error'][_0xf67c('0x19')]);return _0x14389f(_0x52376a[_0xf67c('0x17')][_0xf67c('0x19')]);}logger[_0xf67c('0x17')](_0xf67c('0x14'),_0x492a72,_0x52376a[_0xf67c('0x17')][_0xf67c('0x19')]);return _0x1d9ab1(_0x52376a[_0xf67c('0x17')][_0xf67c('0x19')]);}else{logger['info']('FaxAccount,\x20%s,\x20%s',_0x492a72,_0xf67c('0x15'));_0x1d9ab1(_0x52376a[_0xf67c('0x1a')][_0xf67c('0x19')]);}})['catch'](function(_0x74ca44){logger['error'](_0xf67c('0x14'),_0x492a72,_0x74ca44);_0x14389f(_0x74ca44);});});}exports['GetFaxAccount']=function(_0x4fa8c4){var _0x15c2cb=this;return new Promise(function(_0x7b75f4,_0x1eca1a){return db[_0xf67c('0x1b')][_0xf67c('0x1c')]({'raw':_0x4fa8c4[_0xf67c('0x1d')]?_0x4fa8c4['options'][_0xf67c('0x1e')]===undefined?!![]:![]:!![],'where':_0x4fa8c4['options']?_0x4fa8c4[_0xf67c('0x1d')][_0xf67c('0x1f')]||null:null,'attributes':_0x4fa8c4[_0xf67c('0x1d')]?_0x4fa8c4['options'][_0xf67c('0x20')]||null:null,'limit':_0x4fa8c4[_0xf67c('0x1d')]?_0x4fa8c4[_0xf67c('0x1d')][_0xf67c('0x21')]||null:null,'include':_0x4fa8c4['options']?_0x4fa8c4[_0xf67c('0x1d')]['include']?_['map'](_0x4fa8c4[_0xf67c('0x1d')][_0xf67c('0x22')],function(_0x3c4e64){return{'model':db[_0x3c4e64['model']],'as':_0x3c4e64['as'],'attributes':_0x3c4e64[_0xf67c('0x20')],'include':_0x3c4e64['include']?_['map'](_0x3c4e64[_0xf67c('0x22')],function(_0x3775a9){return{'model':db[_0x3775a9[_0xf67c('0x23')]],'as':_0x3775a9['as'],'attributes':_0x3775a9[_0xf67c('0x20')],'include':_0x3775a9[_0xf67c('0x22')]?_['map'](_0x3775a9[_0xf67c('0x22')],function(_0x257161){return{'model':db[_0x257161['model']],'as':_0x257161['as'],'attributes':_0x257161[_0xf67c('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1e71e){logger[_0xf67c('0x13')](_0xf67c('0x24'),_0x4fa8c4);logger[_0xf67c('0x16')](_0xf67c('0x24'),_0x4fa8c4,JSON[_0xf67c('0x25')](_0x1e71e));_0x7b75f4(_0x1e71e);})['catch'](function(_0x52b1c8){logger[_0xf67c('0x17')](_0xf67c('0x24'),_0x52b1c8['message'],_0x4fa8c4);_0x1eca1a(_0x15c2cb['error'](0x1f4,_0x52b1c8[_0xf67c('0x19')]));});});};exports[_0xf67c('0x26')]=function(_0x4a0bec,_0x3f2be1,_0x3ca3d5){var _0x10dc50=this;return new Promise(function(_0x1049ae,_0x123e3f){var _0x42840c={'body':_0x4a0bec['body'],'channel':_0xf67c('0x27')};var _0x6dae35=[];var _0x1a226e=[];var _0xba50cd={};return db[_0xf67c('0x28')][_0xf67c('0x29')]()['then'](function(_0x4a5caa){if(!_0x4a5caa){throw new db['Sequelize'][(_0xf67c('0x2a'))](_0xf67c('0x2b'));}_0x6dae35=_[_0xf67c('0x2c')](_[_0xf67c('0x2d')](_0x4a5caa),[_0xf67c('0x2e'),'updatedAt']);_0x1a226e=_[_0xf67c('0x2c')](_[_0xf67c('0x2d')](_0x4a5caa),[_0xf67c('0x2e'),_0xf67c('0x2f'),_0xf67c('0x30'),_0xf67c('0x31')]);if(_0x4a0bec['body']['id']){delete _0x4a0bec['body']['id'];}if(_[_0xf67c('0x32')](_0x4a0bec[_0xf67c('0x33')][_0xf67c('0x34')])){throw new db[(_0xf67c('0x35'))][(_0xf67c('0x2a'))]('from\x20is\x20mandatory');}if(_[_0xf67c('0x32')](_0x4a0bec[_0xf67c('0x33')][_0xf67c('0x33')])||_0x4a0bec[_0xf67c('0x33')][_0xf67c('0x33')]===''){throw new db[(_0xf67c('0x35'))][(_0xf67c('0x2a'))](_0xf67c('0x36'));}if(_[_0xf67c('0x32')](_0x4a0bec[_0xf67c('0x33')]['mapKey'])){throw new db[(_0xf67c('0x35'))][(_0xf67c('0x2a'))](_0xf67c('0x37')+_0x1a226e);}if(!_['includes'](_0x1a226e,_0x4a0bec['body']['mapKey'])){throw new db[(_0xf67c('0x35'))][(_0xf67c('0x2a'))](_0xf67c('0x38')+_0x1a226e);}_0xba50cd[_0x4a0bec[_0xf67c('0x33')][_0xf67c('0x39')]]=_0x4a0bec['body'][_0xf67c('0x34')];})[_0xf67c('0x12')](function(){return db[_0xf67c('0x1b')]['find']({'where':{'id':_0x4a0bec[_0xf67c('0x3a')]['id']},'include':[{'model':db['CmList'],'as':_0xf67c('0x3b'),'include':[{'model':db[_0xf67c('0x28')],'as':_0xf67c('0x3c'),'where':_0xba50cd,'limit':0x1,'order':[['updatedAt',_0xf67c('0x3d')]]}]},{'model':db[_0xf67c('0x3e')],'as':_0xf67c('0x3f')}]});})[_0xf67c('0x12')](function(_0x221cd5){if(_0x221cd5&&_0x221cd5['List']){var _0x40dd7f=_0x221cd5[_0xf67c('0x40')]({'plain':!![]});_0x42840c[_0xf67c('0x3a')]=_0x40dd7f;_0x42840c[_0xf67c('0x41')]=_0x40dd7f[_0xf67c('0x3f')];_0x42840c[_0xf67c('0x42')]=_0x40dd7f[_0xf67c('0x3b')];_0x42840c['applications']=_['orderBy'](_0x42840c[_0xf67c('0x41')],[_0xf67c('0x43')],[_0xf67c('0x44')]);if(_0x42840c[_0xf67c('0x3a')][_0xf67c('0x3f')]){delete _0x42840c['account']['Applications'];}if(_0x42840c[_0xf67c('0x3a')][_0xf67c('0x3b')]&&_0x42840c[_0xf67c('0x3a')]['List'][_0xf67c('0x3c')][_0xf67c('0x45')]){return _0x42840c[_0xf67c('0x3a')][_0xf67c('0x3b')][_0xf67c('0x3c')][0x0];}var _0x59e053=_[_0xf67c('0x46')](_0x4a0bec[_0xf67c('0x33')],{'firstName':_0x4a0bec[_0xf67c('0x33')]['from'],'ListId':_0x40dd7f[_0xf67c('0x31')]});_0x59e053[_0x4a0bec[_0xf67c('0x33')][_0xf67c('0x39')]]=_0x4a0bec[_0xf67c('0x33')][_0xf67c('0x34')];return db[_0xf67c('0x28')][_0xf67c('0x47')](_0x59e053,{'fields':_0x6dae35,'raw':!![]});}})[_0xf67c('0x12')](function(_0x40fbe7){_0x42840c[_0xf67c('0x48')]=_0x40fbe7;if(_0x40fbe7){var _0x46e03f={'ContactId':_0x40fbe7['id'],'FaxAccountId':_0x4a0bec[_0xf67c('0x3a')]['id'],'fax':_0x40fbe7[_0xf67c('0x27')]};return db['FaxInteraction'][_0xf67c('0x49')]({'where':{'ContactId':_0x40fbe7['id'],'closed':![],'FaxAccountId':_0x4a0bec['account']['id']}})[_0xf67c('0x12')](function(_0x3436e3){if(_0x3436e3){return[_0x3436e3,![]];}return db['FaxInteraction'][_0xf67c('0x47')](_0x46e03f)['then'](function(_0x59749f){return[_0x59749f,!![]];});});}else{throw new Error(_0xf67c('0x4a'));}})['spread'](function(_0x2dc514,_0x484116){var _0x545f10=_0x2dc514[_0xf67c('0x40')]({'plain':!![]});if(_0x484116){if(_0x42840c['account'][_0xf67c('0x4b')]){_0x42840c[_0xf67c('0x41')][_0xf67c('0x4c')]({'id':0x0,'priority':_0x42840c[_0xf67c('0x41')][_0xf67c('0x45')]+0x1,'app':_0xf67c('0x4d'),'appdata':_0xf67c('0x4e'),'interval':_0xf67c('0x4f')});}_0x545f10[_0xf67c('0x50')]=!![];}else{_0x545f10[_0xf67c('0x50')]=![];}_0x42840c[_0xf67c('0x51')]=_0x545f10;return db[_0xf67c('0x52')][_0xf67c('0x47')]({'body':_0x4a0bec[_0xf67c('0x33')][_0xf67c('0x33')],'FaxAccountId':_0x4a0bec[_0xf67c('0x3a')]['id'],'FaxInteractionId':_0x2dc514['id'],'direction':'in','ContactId':_0x2dc514[_0xf67c('0x53')],'AttachmentId':_0x4a0bec['body'][_0xf67c('0x54')]});})[_0xf67c('0x12')](function(_0x18508b){_0x42840c[_0xf67c('0x19')]=_0x18508b;if(_0x42840c[_0xf67c('0x51')][_0xf67c('0x55')]){return db['User'][_0xf67c('0x49')]({'attributes':['id',_0xf67c('0x56')],'where':{'id':_0x42840c['interaction'][_0xf67c('0x55')]}})['then'](function(_0x23c8be){if(_0x23c8be){_0x42840c[_0xf67c('0x41')][_0xf67c('0x57')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x23c8be[_0xf67c('0x56')]+','+(_0x42840c[_0xf67c('0x3a')]['waitForTheAssignedAgent']||0xa),'interval':_0xf67c('0x4f')});}return respondWithRpcPromise(_0xf67c('0x58'),_0xf67c('0x59'),_0x42840c);});}return respondWithRpcPromise(_0xf67c('0x58'),_0xf67c('0x59'),_0x42840c);})['then'](function(_0x14600f){_0x1049ae(_0x14600f);})[_0xf67c('0x5a')](function(_0x1ae578){_0x123e3f(_0x10dc50[_0xf67c('0x17')](0x1f4,_0x1ae578['message']));});});};
\ No newline at end of file
+var _0xf177=['*,*,*,*','created','interaction','FaxMessage','ContactId','AttachmentId','UserId','User','name','agent','waitForTheAssignedAgent','Start','startRouting','util','moment','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','localhost','redis','./faxAccount.socket','register','request','FaxAccount,\x20%s,\x20%s','request\x20sent','debug','FaxAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','GetFaxAccount','findAll','options','raw','where','limit','include','map','model','attributes','then','NotifyFaxAccount','body','CmContact','describe','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','keys','CompanyId','ListId','from','Sequelize','from\x20is\x20mandatory','isNil','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','FaxAccount','find','account','CmList','List','DESC','FaxApplication','Applications','get','applications','list','orderBy','priority','Contacts','length','fax','FaxInteraction','Contact\x20not\x20found','autoclose','push','close'];(function(_0x59ee6f,_0x450239){var _0x4c0979=function(_0x565e92){while(--_0x565e92){_0x59ee6f['push'](_0x59ee6f['shift']());}};_0x4c0979(++_0x450239);}(_0xf177,0x17d));var _0x7f17=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xf177[_0x321bb2];return _0x9c12ed;};'use strict';var _=require('lodash');var util=require(_0x7f17('0x0'));var moment=require(_0x7f17('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x7f17('0x2'));var logger=require(_0x7f17('0x3'))(_0x7f17('0x4'));var config=require(_0x7f17('0x5'));var jayson=require(_0x7f17('0x6'));var client=jayson[_0x7f17('0x7')][_0x7f17('0x8')]({'port':0x232c});config['redis']=_[_0x7f17('0x9')](config['redis'],{'host':_0x7f17('0xa'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7f17('0xb')]));require(_0x7f17('0xc'))[_0x7f17('0xd')](socket);function respondWithRpcPromise(_0x38c2c8,_0x2658da,_0x308ec2){return new BPromise(function(_0x4aa25f,_0x38dfa3){return client[_0x7f17('0xe')](_0x38c2c8,_0x308ec2)['then'](function(_0x3002f7){logger['info'](_0x7f17('0xf'),_0x2658da,_0x7f17('0x10'));logger[_0x7f17('0x11')](_0x7f17('0x12'),_0x2658da,_0x7f17('0x10'),JSON[_0x7f17('0x13')](_0x3002f7));if(_0x3002f7[_0x7f17('0x14')]){if(_0x3002f7[_0x7f17('0x14')][_0x7f17('0x15')]===0x1f4){logger[_0x7f17('0x14')](_0x7f17('0xf'),_0x2658da,_0x3002f7[_0x7f17('0x14')]['message']);return _0x38dfa3(_0x3002f7['error'][_0x7f17('0x16')]);}logger[_0x7f17('0x14')]('FaxAccount,\x20%s,\x20%s',_0x2658da,_0x3002f7[_0x7f17('0x14')][_0x7f17('0x16')]);return _0x4aa25f(_0x3002f7['error'][_0x7f17('0x16')]);}else{logger[_0x7f17('0x17')](_0x7f17('0xf'),_0x2658da,'request\x20sent');_0x4aa25f(_0x3002f7[_0x7f17('0x18')][_0x7f17('0x16')]);}})[_0x7f17('0x19')](function(_0xecce21){logger[_0x7f17('0x14')](_0x7f17('0xf'),_0x2658da,_0xecce21);_0x38dfa3(_0xecce21);});});}exports[_0x7f17('0x1a')]=function(_0x2ed8c6){var _0x128005=this;return new Promise(function(_0xdc93bc,_0x37c1e0){return db['FaxAccount'][_0x7f17('0x1b')]({'raw':_0x2ed8c6[_0x7f17('0x1c')]?_0x2ed8c6[_0x7f17('0x1c')][_0x7f17('0x1d')]===undefined?!![]:![]:!![],'where':_0x2ed8c6[_0x7f17('0x1c')]?_0x2ed8c6[_0x7f17('0x1c')][_0x7f17('0x1e')]||null:null,'attributes':_0x2ed8c6['options']?_0x2ed8c6['options']['attributes']||null:null,'limit':_0x2ed8c6[_0x7f17('0x1c')]?_0x2ed8c6[_0x7f17('0x1c')][_0x7f17('0x1f')]||null:null,'include':_0x2ed8c6['options']?_0x2ed8c6[_0x7f17('0x1c')][_0x7f17('0x20')]?_[_0x7f17('0x21')](_0x2ed8c6['options']['include'],function(_0x5c1b1e){return{'model':db[_0x5c1b1e['model']],'as':_0x5c1b1e['as'],'attributes':_0x5c1b1e['attributes'],'include':_0x5c1b1e[_0x7f17('0x20')]?_[_0x7f17('0x21')](_0x5c1b1e[_0x7f17('0x20')],function(_0x3f3a99){return{'model':db[_0x3f3a99[_0x7f17('0x22')]],'as':_0x3f3a99['as'],'attributes':_0x3f3a99['attributes'],'include':_0x3f3a99[_0x7f17('0x20')]?_[_0x7f17('0x21')](_0x3f3a99[_0x7f17('0x20')],function(_0x1c9bed){return{'model':db[_0x1c9bed[_0x7f17('0x22')]],'as':_0x1c9bed['as'],'attributes':_0x1c9bed[_0x7f17('0x23')]};}):[]};}):[]};}):[]:[]})[_0x7f17('0x24')](function(_0x2af25e){logger[_0x7f17('0x17')]('GetFaxAccount',_0x2ed8c6);logger[_0x7f17('0x11')]('GetFaxAccount',_0x2ed8c6,JSON['stringify'](_0x2af25e));_0xdc93bc(_0x2af25e);})[_0x7f17('0x19')](function(_0x3f298b){logger[_0x7f17('0x14')](_0x7f17('0x1a'),_0x3f298b[_0x7f17('0x16')],_0x2ed8c6);_0x37c1e0(_0x128005[_0x7f17('0x14')](0x1f4,_0x3f298b[_0x7f17('0x16')]));});});};exports[_0x7f17('0x25')]=function(_0x50dda1,_0x655b9,_0x42f109){var _0x5d64c4=this;return new Promise(function(_0x1f07b4,_0x5322c8){var _0x37bfdb={'body':_0x50dda1[_0x7f17('0x26')],'channel':'fax'};var _0x26818c=[];var _0x2ad82f=[];var _0x3781a1={};return db[_0x7f17('0x27')][_0x7f17('0x28')]()[_0x7f17('0x24')](function(_0x533908){if(!_0x533908){throw new db['Sequelize'][(_0x7f17('0x29'))](_0x7f17('0x2a'));}_0x26818c=_[_0x7f17('0x2b')](_['keys'](_0x533908),[_0x7f17('0x2c'),_0x7f17('0x2d')]);_0x2ad82f=_[_0x7f17('0x2b')](_[_0x7f17('0x2e')](_0x533908),['createdAt',_0x7f17('0x2d'),_0x7f17('0x2f'),_0x7f17('0x30')]);if(_0x50dda1[_0x7f17('0x26')]['id']){delete _0x50dda1[_0x7f17('0x26')]['id'];}if(_['isNil'](_0x50dda1[_0x7f17('0x26')][_0x7f17('0x31')])){throw new db[(_0x7f17('0x32'))][(_0x7f17('0x29'))](_0x7f17('0x33'));}if(_[_0x7f17('0x34')](_0x50dda1[_0x7f17('0x26')][_0x7f17('0x26')])||_0x50dda1[_0x7f17('0x26')][_0x7f17('0x26')]===''){throw new db[(_0x7f17('0x32'))][(_0x7f17('0x29'))](_0x7f17('0x35'));}if(_[_0x7f17('0x34')](_0x50dda1['body']['mapKey'])){throw new db[(_0x7f17('0x32'))][(_0x7f17('0x29'))](_0x7f17('0x36')+_0x2ad82f);}if(!_[_0x7f17('0x37')](_0x2ad82f,_0x50dda1['body'][_0x7f17('0x38')])){throw new db['Sequelize'][(_0x7f17('0x29'))](_0x7f17('0x39')+_0x2ad82f);}_0x3781a1[_0x50dda1[_0x7f17('0x26')][_0x7f17('0x38')]]=_0x50dda1[_0x7f17('0x26')][_0x7f17('0x31')];})[_0x7f17('0x24')](function(){return db[_0x7f17('0x3a')][_0x7f17('0x3b')]({'where':{'id':_0x50dda1[_0x7f17('0x3c')]['id']},'include':[{'model':db[_0x7f17('0x3d')],'as':_0x7f17('0x3e'),'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x3781a1,'limit':0x1,'order':[[_0x7f17('0x2d'),_0x7f17('0x3f')]]}]},{'model':db[_0x7f17('0x40')],'as':_0x7f17('0x41')}]});})['then'](function(_0x23f052){if(_0x23f052&&_0x23f052['List']){var _0x421370=_0x23f052[_0x7f17('0x42')]({'plain':!![]});_0x37bfdb['account']=_0x421370;_0x37bfdb[_0x7f17('0x43')]=_0x421370[_0x7f17('0x41')];_0x37bfdb[_0x7f17('0x44')]=_0x421370['List'];_0x37bfdb[_0x7f17('0x43')]=_[_0x7f17('0x45')](_0x37bfdb[_0x7f17('0x43')],[_0x7f17('0x46')],['asc']);if(_0x37bfdb[_0x7f17('0x3c')]['Applications']){delete _0x37bfdb[_0x7f17('0x3c')][_0x7f17('0x41')];}if(_0x37bfdb['account'][_0x7f17('0x3e')]&&_0x37bfdb[_0x7f17('0x3c')][_0x7f17('0x3e')][_0x7f17('0x47')][_0x7f17('0x48')]){return _0x37bfdb[_0x7f17('0x3c')][_0x7f17('0x3e')]['Contacts'][0x0];}var _0x1655a7=_['defaults'](_0x50dda1[_0x7f17('0x26')],{'firstName':_0x50dda1[_0x7f17('0x26')]['from'],'ListId':_0x421370[_0x7f17('0x30')]});_0x1655a7[_0x50dda1[_0x7f17('0x26')][_0x7f17('0x38')]]=_0x50dda1[_0x7f17('0x26')][_0x7f17('0x31')];return db[_0x7f17('0x27')]['create'](_0x1655a7,{'fields':_0x26818c,'raw':!![]});}})['then'](function(_0x2a9390){_0x37bfdb['contact']=_0x2a9390;if(_0x2a9390){var _0x25548e={'ContactId':_0x2a9390['id'],'FaxAccountId':_0x50dda1['account']['id'],'fax':_0x2a9390[_0x7f17('0x49')]};return db[_0x7f17('0x4a')][_0x7f17('0x3b')]({'where':{'ContactId':_0x2a9390['id'],'closed':![],'FaxAccountId':_0x50dda1[_0x7f17('0x3c')]['id']}})[_0x7f17('0x24')](function(_0x4d63a6){if(_0x4d63a6){return[_0x4d63a6,![]];}return db['FaxInteraction']['create'](_0x25548e)['then'](function(_0x133fa1){return[_0x133fa1,!![]];});});}else{throw new Error(_0x7f17('0x4b'));}})['spread'](function(_0x367c50,_0x32997f){var _0x55b523=_0x367c50[_0x7f17('0x42')]({'plain':!![]});if(_0x32997f){if(_0x37bfdb[_0x7f17('0x3c')][_0x7f17('0x4c')]){_0x37bfdb[_0x7f17('0x43')][_0x7f17('0x4d')]({'id':0x0,'priority':_0x37bfdb[_0x7f17('0x43')][_0x7f17('0x48')]+0x1,'app':_0x7f17('0x4e'),'appdata':'unmanaged','interval':_0x7f17('0x4f')});}_0x55b523[_0x7f17('0x50')]=!![];}else{_0x55b523['created']=![];}_0x37bfdb[_0x7f17('0x51')]=_0x55b523;return db[_0x7f17('0x52')]['create']({'body':_0x50dda1['body'][_0x7f17('0x26')],'FaxAccountId':_0x50dda1[_0x7f17('0x3c')]['id'],'FaxInteractionId':_0x367c50['id'],'direction':'in','ContactId':_0x367c50[_0x7f17('0x53')],'AttachmentId':_0x50dda1[_0x7f17('0x26')][_0x7f17('0x54')]});})['then'](function(_0x30ab4a){_0x37bfdb[_0x7f17('0x16')]=_0x30ab4a;if(_0x37bfdb[_0x7f17('0x51')][_0x7f17('0x55')]){return db[_0x7f17('0x56')]['find']({'attributes':['id',_0x7f17('0x57')],'where':{'id':_0x37bfdb[_0x7f17('0x51')][_0x7f17('0x55')]}})['then'](function(_0x536baa){if(_0x536baa){_0x37bfdb['applications']['unshift']({'id':0x0,'priority':0x0,'app':_0x7f17('0x58'),'appdata':_0x536baa[_0x7f17('0x57')]+','+(_0x37bfdb[_0x7f17('0x3c')][_0x7f17('0x59')]||0xa),'interval':_0x7f17('0x4f')});}return respondWithRpcPromise(_0x7f17('0x5a'),'startRouting',_0x37bfdb);});}return respondWithRpcPromise(_0x7f17('0x5a'),_0x7f17('0x5b'),_0x37bfdb);})[_0x7f17('0x24')](function(_0x103219){_0x1f07b4(_0x103219);})[_0x7f17('0x19')](function(_0x3cb559){_0x5322c8(_0x5d64c4['error'](0x1f4,_0x3cb559[_0x7f17('0x16')]));});});};
\ No newline at end of file
index df6e8fc..de09ad7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x43c4=['length','faxAccount:','./faxAccount.events','save','remove','update','emit','removeListener','register'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0x43c4,0x146));var _0x443c=function(_0x5706d5,_0x3ffe5f){_0x5706d5=_0x5706d5-0x0;var _0x28f7c5=_0x43c4[_0x5706d5];return _0x28f7c5;};'use strict';var FaxAccountEvents=require(_0x443c('0x0'));var events=[_0x443c('0x1'),_0x443c('0x2'),_0x443c('0x3')];function createListener(_0x199875,_0x5e4e01){return function(_0x249cf4){_0x5e4e01[_0x443c('0x4')](_0x199875,_0x249cf4);};}function removeListener(_0x24fe09,_0x4f6179){return function(){FaxAccountEvents[_0x443c('0x5')](_0x24fe09,_0x4f6179);};}exports[_0x443c('0x6')]=function(_0x49f976){for(var _0x591557=0x0,_0x3b7653=events[_0x443c('0x7')];_0x591557<_0x3b7653;_0x591557++){var _0x146582=events[_0x591557];var _0x226772=createListener(_0x443c('0x8')+_0x146582,_0x49f976);FaxAccountEvents['on'](_0x146582,_0x226772);}};
\ No newline at end of file
+var _0x64a5=['emit','register','length','faxAccount:','update'];(function(_0x31348f,_0x6f9c9){var _0x43d7eb=function(_0x6c97c5){while(--_0x6c97c5){_0x31348f['push'](_0x31348f['shift']());}};_0x43d7eb(++_0x6f9c9);}(_0x64a5,0x176));var _0x564a=function(_0x38dded,_0x4b3030){_0x38dded=_0x38dded-0x0;var _0x550772=_0x64a5[_0x38dded];return _0x550772;};'use strict';var FaxAccountEvents=require('./faxAccount.events');var events=['save','remove',_0x564a('0x0')];function createListener(_0x512c55,_0x1087c5){return function(_0x1211fb){_0x1087c5[_0x564a('0x1')](_0x512c55,_0x1211fb);};}function removeListener(_0x4d2574,_0xbc3fdc){return function(){FaxAccountEvents['removeListener'](_0x4d2574,_0xbc3fdc);};}exports[_0x564a('0x2')]=function(_0x574baa){for(var _0x401017=0x0,_0x12ff21=events[_0x564a('0x3')];_0x401017<_0x12ff21;_0x401017++){var _0x1afd70=events[_0x401017];var _0x31512f=createListener(_0x564a('0x4')+_0x1afd70,_0x574baa);FaxAccountEvents['on'](_0x1afd70,_0x31512f);}};
\ No newline at end of file
index e22fd55..4744d15 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(_0x2d9bca,_0xb3e985){var _0xbb82af=function(_0x92c4cd){while(--_0x92c4cd){_0x2d9bca['push'](_0x2d9bca['shift']());}};_0xbb82af(++_0xb3e985);}(_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'));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(_0x3a41fb,_0x2a9a6d){var _0x27b6c0=function(_0xadcdae){while(--_0xadcdae){_0x3a41fb['push'](_0x3a41fb['shift']());}};_0x27b6c0(++_0x2a9a6d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'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 aa1e738..80fb798 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23ec=['STRING','TEXT','*,*,*,*','sequelize','exports'];(function(_0x3511d3,_0x4107ae){var _0x5d6321=function(_0x1a23da){while(--_0x1a23da){_0x3511d3['push'](_0x3511d3['shift']());}};_0x5d6321(++_0x4107ae);}(_0x23ec,0x148));var _0xc23e=function(_0x2c368e,_0x4f2ec1){_0x2c368e=_0x2c368e-0x0;var _0x5905fb=_0x23ec[_0x2c368e];return _0x5905fb;};'use strict';var Sequelize=require(_0xc23e('0x0'));module[_0xc23e('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xc23e('0x2')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xc23e('0x3')]()},'description':{'type':Sequelize[_0xc23e('0x2')]},'interval':{'type':Sequelize[_0xc23e('0x2')],'defaultValue':_0xc23e('0x4')}};
\ No newline at end of file
+var _0x1393=['*,*,*,*','sequelize','exports','INTEGER','TEXT','STRING'];(function(_0x310d4a,_0x508a58){var _0x3fc30c=function(_0x80fc3a){while(--_0x80fc3a){_0x310d4a['push'](_0x310d4a['shift']());}};_0x3fc30c(++_0x508a58);}(_0x1393,0x9d));var _0x3139=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x1393[_0x2c91e9];return _0x13f0ff;};'use strict';var Sequelize=require(_0x3139('0x0'));module[_0x3139('0x1')]={'priority':{'type':Sequelize[_0x3139('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0x3139('0x3')]()},'description':{'type':Sequelize[_0x3139('0x4')]},'interval':{'type':Sequelize[_0x3139('0x4')],'defaultValue':_0x3139('0x5')}};
\ No newline at end of file
index 7e10fab..9811285 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcd75=['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','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','options','FaxApplication','includeAll','include','findAll','rows','catch','params','keys','create','body','find','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','sox'];(function(_0x40d622,_0x39648f){var _0x17817a=function(_0x39ed6c){while(--_0x39ed6c){_0x40d622['push'](_0x40d622['shift']());}};_0x17817a(++_0x39648f);}(_0xcd75,0x1c6));var _0x5cd7=function(_0x5c4d47,_0x1f60f2){_0x5c4d47=_0x5c4d47-0x0;var _0x1fee06=_0xcd75[_0x5c4d47];return _0x1fee06;};'use strict';var emlformat=require(_0x5cd7('0x0'));var rimraf=require(_0x5cd7('0x1'));var zipdir=require(_0x5cd7('0x2'));var jsonpatch=require(_0x5cd7('0x3'));var rp=require('request-promise');var moment=require(_0x5cd7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x5cd7('0x5'));var util=require(_0x5cd7('0x6'));var path=require('path');var sox=require(_0x5cd7('0x7'));var csv=require('to-csv');var ejs=require(_0x5cd7('0x8'));var fs=require('fs');var fs_extra=require(_0x5cd7('0x9'));var _=require(_0x5cd7('0xa'));var squel=require(_0x5cd7('0xb'));var crypto=require(_0x5cd7('0xc'));var jsforce=require(_0x5cd7('0xd'));var deskjs=require(_0x5cd7('0xe'));var toCsv=require(_0x5cd7('0xf'));var querystring=require(_0x5cd7('0x10'));var Papa=require(_0x5cd7('0x11'));var Redis=require(_0x5cd7('0x12'));var authService=require(_0x5cd7('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0x5cd7('0x14'));var hardwareService=require(_0x5cd7('0x15'));var logger=require(_0x5cd7('0x16'))(_0x5cd7('0x17'));var utils=require(_0x5cd7('0x18'));var config=require(_0x5cd7('0x19'));var licenseUtil=require(_0x5cd7('0x1a'));var db=require(_0x5cd7('0x1b'))['db'];function respondWithStatusCode(_0x28b28b,_0x3074fd){_0x3074fd=_0x3074fd||0xcc;return function(_0x4a9c69){if(_0x4a9c69){return _0x28b28b[_0x5cd7('0x1c')](_0x3074fd);}return _0x28b28b['status'](_0x3074fd)[_0x5cd7('0x1d')]();};}function respondWithResult(_0x28e05d,_0x465685){_0x465685=_0x465685||0xc8;return function(_0x1bfb6c){if(_0x1bfb6c){return _0x28e05d[_0x5cd7('0x1e')](_0x465685)[_0x5cd7('0x1f')](_0x1bfb6c);}};}function respondWithFilteredResult(_0x3a0e1f,_0x417c9a){return function(_0x90d11f){if(_0x90d11f){var _0x3a854d=typeof _0x417c9a[_0x5cd7('0x20')]===_0x5cd7('0x21')&&typeof _0x417c9a['limit']===_0x5cd7('0x21');var _0x518446=_0x90d11f[_0x5cd7('0x22')];var _0xb5767e=_0x3a854d?0x0:_0x417c9a[_0x5cd7('0x20')];var _0x37383c=_0x3a854d?_0x90d11f[_0x5cd7('0x22')]:_0x417c9a[_0x5cd7('0x20')]+_0x417c9a[_0x5cd7('0x23')];var _0x1064f9;if(_0x37383c>=_0x518446){_0x37383c=_0x518446;_0x1064f9=0xc8;}else{_0x1064f9=0xce;}_0x3a0e1f['status'](_0x1064f9);return _0x3a0e1f[_0x5cd7('0x24')](_0x5cd7('0x25'),_0xb5767e+'-'+_0x37383c+'/'+_0x518446)[_0x5cd7('0x1f')](_0x90d11f);}return null;};}function patchUpdates(_0x203644){return function(_0x5075d5){try{jsonpatch['apply'](_0x5075d5,_0x203644,!![]);}catch(_0x206966){return BPromise[_0x5cd7('0x26')](_0x206966);}return _0x5075d5[_0x5cd7('0x27')]();};}function saveUpdates(_0x524792,_0x46b816){return function(_0x84585d){if(_0x84585d){return _0x84585d[_0x5cd7('0x28')](_0x524792)[_0x5cd7('0x29')](function(_0x5685b5){return _0x5685b5;});}return null;};}function removeEntity(_0x46372e,_0x30c378){return function(_0x24e963){if(_0x24e963){return _0x24e963[_0x5cd7('0x2a')]()[_0x5cd7('0x29')](function(){_0x46372e[_0x5cd7('0x1e')](0xcc)[_0x5cd7('0x1d')]();});}};}function handleEntityNotFound(_0xe44c7e,_0x1a6dc9){return function(_0x387f0f){if(!_0x387f0f){_0xe44c7e[_0x5cd7('0x1c')](0x194);}return _0x387f0f;};}function handleError(_0x7c25d5,_0x30cc22){_0x30cc22=_0x30cc22||0x1f4;return function(_0xec02a2){logger[_0x5cd7('0x2b')](_0xec02a2[_0x5cd7('0x2c')]);if(_0xec02a2[_0x5cd7('0x2d')]){delete _0xec02a2['name'];}_0x7c25d5['status'](_0x30cc22)[_0x5cd7('0x2e')](_0xec02a2);};}exports[_0x5cd7('0x2f')]=function(_0x4b61dc,_0x237043){var _0x11c751={},_0x44532e={},_0x35b170={'count':0x0,'rows':[]};var _0xd9b746=_[_0x5cd7('0x30')](db['FaxApplication'][_0x5cd7('0x31')],function(_0x4a829a){return{'name':_0x4a829a[_0x5cd7('0x32')],'type':_0x4a829a[_0x5cd7('0x33')]['key']};});_0x44532e[_0x5cd7('0x34')]=_['map'](_0xd9b746,'name');_0x44532e[_0x5cd7('0x35')]=_['keys'](_0x4b61dc[_0x5cd7('0x35')]);_0x44532e[_0x5cd7('0x36')]=_[_0x5cd7('0x37')](_0x44532e['model'],_0x44532e['query']);_0x11c751['attributes']=_[_0x5cd7('0x37')](_0x44532e[_0x5cd7('0x34')],qs[_0x5cd7('0x38')](_0x4b61dc['query'][_0x5cd7('0x38')]));_0x11c751[_0x5cd7('0x39')]=_0x11c751[_0x5cd7('0x39')][_0x5cd7('0x3a')]?_0x11c751['attributes']:_0x44532e['model'];if(!_0x4b61dc[_0x5cd7('0x35')][_0x5cd7('0x3b')](_0x5cd7('0x3c'))){_0x11c751[_0x5cd7('0x23')]=qs[_0x5cd7('0x23')](_0x4b61dc[_0x5cd7('0x35')]['limit']);_0x11c751[_0x5cd7('0x20')]=qs[_0x5cd7('0x20')](_0x4b61dc[_0x5cd7('0x35')][_0x5cd7('0x20')]);}_0x11c751[_0x5cd7('0x3d')]=qs[_0x5cd7('0x3e')](_0x4b61dc[_0x5cd7('0x35')][_0x5cd7('0x3e')]);_0x11c751['where']=qs[_0x5cd7('0x36')](_['pick'](_0x4b61dc[_0x5cd7('0x35')],_0x44532e[_0x5cd7('0x36')]),_0xd9b746);if(_0x4b61dc[_0x5cd7('0x35')]['filter']){_0x11c751[_0x5cd7('0x3f')]=_[_0x5cd7('0x40')](_0x11c751[_0x5cd7('0x3f')],{'$or':_[_0x5cd7('0x30')](_0xd9b746,function(_0x47f9ca){if(_0x47f9ca[_0x5cd7('0x33')]!=='VIRTUAL'){var _0xe585e8={};_0xe585e8[_0x47f9ca[_0x5cd7('0x2d')]]={'$like':'%'+_0x4b61dc[_0x5cd7('0x35')]['filter']+'%'};return _0xe585e8;}})});}_0x11c751=_[_0x5cd7('0x40')]({},_0x11c751,_0x4b61dc[_0x5cd7('0x41')]);var _0x3ba6ed={'where':_0x11c751['where']};return db[_0x5cd7('0x42')][_0x5cd7('0x22')](_0x3ba6ed)[_0x5cd7('0x29')](function(_0x3a8aeb){_0x35b170[_0x5cd7('0x22')]=_0x3a8aeb;if(_0x4b61dc[_0x5cd7('0x35')][_0x5cd7('0x43')]){_0x11c751[_0x5cd7('0x44')]=[{'all':!![]}];}return db[_0x5cd7('0x42')][_0x5cd7('0x45')](_0x11c751);})[_0x5cd7('0x29')](function(_0x5835d3){_0x35b170[_0x5cd7('0x46')]=_0x5835d3;return _0x35b170;})['then'](respondWithFilteredResult(_0x237043,_0x11c751))[_0x5cd7('0x47')](handleError(_0x237043,null));};exports['show']=function(_0x2db1f1,_0x15073c){var _0xbeb730={'raw':!![],'where':{'id':_0x2db1f1[_0x5cd7('0x48')]['id']}},_0x575870={};_0x575870[_0x5cd7('0x34')]=_[_0x5cd7('0x49')](db[_0x5cd7('0x42')]['rawAttributes']);_0x575870[_0x5cd7('0x35')]=_['keys'](_0x2db1f1[_0x5cd7('0x35')]);_0x575870[_0x5cd7('0x36')]=_[_0x5cd7('0x37')](_0x575870['model'],_0x575870[_0x5cd7('0x35')]);_0xbeb730[_0x5cd7('0x39')]=_[_0x5cd7('0x37')](_0x575870[_0x5cd7('0x34')],qs[_0x5cd7('0x38')](_0x2db1f1[_0x5cd7('0x35')][_0x5cd7('0x38')]));_0xbeb730[_0x5cd7('0x39')]=_0xbeb730['attributes'][_0x5cd7('0x3a')]?_0xbeb730[_0x5cd7('0x39')]:_0x575870[_0x5cd7('0x34')];if(_0x2db1f1['query'][_0x5cd7('0x43')]){_0xbeb730[_0x5cd7('0x44')]=[{'all':!![]}];}_0xbeb730=_['merge']({},_0xbeb730,_0x2db1f1[_0x5cd7('0x41')]);return db[_0x5cd7('0x42')]['find'](_0xbeb730)[_0x5cd7('0x29')](handleEntityNotFound(_0x15073c,null))[_0x5cd7('0x29')](respondWithResult(_0x15073c,null))[_0x5cd7('0x47')](handleError(_0x15073c,null));};exports[_0x5cd7('0x4a')]=function(_0x2575e0,_0x2e4f67){return db[_0x5cd7('0x42')][_0x5cd7('0x4a')](_0x2575e0[_0x5cd7('0x4b')],{})['then'](respondWithResult(_0x2e4f67,0xc9))[_0x5cd7('0x47')](handleError(_0x2e4f67,null));};exports[_0x5cd7('0x28')]=function(_0x1f94f9,_0x53f56b){if(_0x1f94f9['body']['id']){delete _0x1f94f9[_0x5cd7('0x4b')]['id'];}return db[_0x5cd7('0x42')][_0x5cd7('0x4c')]({'where':{'id':_0x1f94f9[_0x5cd7('0x48')]['id']}})['then'](handleEntityNotFound(_0x53f56b,null))['then'](saveUpdates(_0x1f94f9[_0x5cd7('0x4b')],null))[_0x5cd7('0x29')](respondWithResult(_0x53f56b,null))[_0x5cd7('0x47')](handleError(_0x53f56b,null));};exports['destroy']=function(_0x521fad,_0x317694){return db[_0x5cd7('0x42')][_0x5cd7('0x4c')]({'where':{'id':_0x521fad[_0x5cd7('0x48')]['id']}})[_0x5cd7('0x29')](handleEntityNotFound(_0x317694,null))[_0x5cd7('0x29')](removeEntity(_0x317694,null))[_0x5cd7('0x47')](handleError(_0x317694,null));};
\ No newline at end of file
+var _0xed9b=['sort','where','pick','filter','merge','VIRTUAL','options','then','findAll','catch','show','params','rawAttributes','includeAll','include','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','destroy','end','stack','name','index','map','FaxApplication','fieldName','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order'];(function(_0x37dbe8,_0x10e968){var _0x2416b6=function(_0xd39957){while(--_0xd39957){_0x37dbe8['push'](_0x37dbe8['shift']());}};_0x2416b6(++_0x10e968);}(_0xed9b,0x193));var _0xbed9=function(_0x2ff762,_0x342c0b){_0x2ff762=_0x2ff762-0x0;var _0x158b02=_0xed9b[_0x2ff762];return _0x158b02;};'use strict';var emlformat=require(_0xbed9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xbed9('0x1'));var jsonpatch=require(_0xbed9('0x2'));var rp=require(_0xbed9('0x3'));var moment=require(_0xbed9('0x4'));var BPromise=require(_0xbed9('0x5'));var Mustache=require(_0xbed9('0x6'));var util=require(_0xbed9('0x7'));var path=require(_0xbed9('0x8'));var sox=require(_0xbed9('0x9'));var csv=require('to-csv');var ejs=require(_0xbed9('0xa'));var fs=require('fs');var fs_extra=require(_0xbed9('0xb'));var _=require(_0xbed9('0xc'));var squel=require(_0xbed9('0xd'));var crypto=require(_0xbed9('0xe'));var jsforce=require(_0xbed9('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xbed9('0x10'));var querystring=require(_0xbed9('0x11'));var Papa=require(_0xbed9('0x12'));var Redis=require(_0xbed9('0x13'));var authService=require(_0xbed9('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xbed9('0x15'));var hardwareService=require(_0xbed9('0x16'));var logger=require(_0xbed9('0x17'))('api');var utils=require('../../config/utils');var config=require(_0xbed9('0x18'));var licenseUtil=require(_0xbed9('0x19'));var db=require(_0xbed9('0x1a'))['db'];function respondWithStatusCode(_0x364bbb,_0x2f10c0){_0x2f10c0=_0x2f10c0||0xcc;return function(_0x34face){if(_0x34face){return _0x364bbb[_0xbed9('0x1b')](_0x2f10c0);}return _0x364bbb[_0xbed9('0x1c')](_0x2f10c0)['end']();};}function respondWithResult(_0x166195,_0x16a30f){_0x16a30f=_0x16a30f||0xc8;return function(_0x22641b){if(_0x22641b){return _0x166195[_0xbed9('0x1c')](_0x16a30f)[_0xbed9('0x1d')](_0x22641b);}};}function respondWithFilteredResult(_0x52b0b0,_0x29fc03){return function(_0x3ae001){if(_0x3ae001){var _0x19be0f=typeof _0x29fc03['offset']===_0xbed9('0x1e')&&typeof _0x29fc03[_0xbed9('0x1f')]===_0xbed9('0x1e');var _0x32c611=_0x3ae001[_0xbed9('0x20')];var _0x3f6d8d=_0x19be0f?0x0:_0x29fc03['offset'];var _0x399a1a=_0x19be0f?_0x3ae001['count']:_0x29fc03[_0xbed9('0x21')]+_0x29fc03[_0xbed9('0x1f')];var _0x46062a;if(_0x399a1a>=_0x32c611){_0x399a1a=_0x32c611;_0x46062a=0xc8;}else{_0x46062a=0xce;}_0x52b0b0['status'](_0x46062a);return _0x52b0b0[_0xbed9('0x22')](_0xbed9('0x23'),_0x3f6d8d+'-'+_0x399a1a+'/'+_0x32c611)[_0xbed9('0x1d')](_0x3ae001);}return null;};}function patchUpdates(_0x6493d0){return function(_0x34672f){try{jsonpatch[_0xbed9('0x24')](_0x34672f,_0x6493d0,!![]);}catch(_0x5898bf){return BPromise[_0xbed9('0x25')](_0x5898bf);}return _0x34672f[_0xbed9('0x26')]();};}function saveUpdates(_0x3f197a,_0x4db180){return function(_0x5f015f){if(_0x5f015f){return _0x5f015f[_0xbed9('0x27')](_0x3f197a)['then'](function(_0x1510a0){return _0x1510a0;});}return null;};}function removeEntity(_0x240dc4,_0x22bbf2){return function(_0x5d1852){if(_0x5d1852){return _0x5d1852[_0xbed9('0x28')]()['then'](function(){_0x240dc4[_0xbed9('0x1c')](0xcc)[_0xbed9('0x29')]();});}};}function handleEntityNotFound(_0xce85c7,_0x3bee17){return function(_0x153bc1){if(!_0x153bc1){_0xce85c7[_0xbed9('0x1b')](0x194);}return _0x153bc1;};}function handleError(_0x623894,_0x5938c5){_0x5938c5=_0x5938c5||0x1f4;return function(_0x414d8f){logger['error'](_0x414d8f[_0xbed9('0x2a')]);if(_0x414d8f[_0xbed9('0x2b')]){delete _0x414d8f[_0xbed9('0x2b')];}_0x623894['status'](_0x5938c5)['send'](_0x414d8f);};}exports[_0xbed9('0x2c')]=function(_0x4e1705,_0x340ba0){var _0x3b0f0a={},_0x1e6701={},_0x26fd86={'count':0x0,'rows':[]};var _0x346191=_[_0xbed9('0x2d')](db[_0xbed9('0x2e')]['rawAttributes'],function(_0x3de4b7){return{'name':_0x3de4b7[_0xbed9('0x2f')],'type':_0x3de4b7['type']['key']};});_0x1e6701[_0xbed9('0x30')]=_['map'](_0x346191,_0xbed9('0x2b'));_0x1e6701[_0xbed9('0x31')]=_[_0xbed9('0x32')](_0x4e1705[_0xbed9('0x31')]);_0x1e6701[_0xbed9('0x33')]=_[_0xbed9('0x34')](_0x1e6701[_0xbed9('0x30')],_0x1e6701[_0xbed9('0x31')]);_0x3b0f0a[_0xbed9('0x35')]=_[_0xbed9('0x34')](_0x1e6701[_0xbed9('0x30')],qs[_0xbed9('0x36')](_0x4e1705[_0xbed9('0x31')][_0xbed9('0x36')]));_0x3b0f0a[_0xbed9('0x35')]=_0x3b0f0a[_0xbed9('0x35')][_0xbed9('0x37')]?_0x3b0f0a[_0xbed9('0x35')]:_0x1e6701[_0xbed9('0x30')];if(!_0x4e1705[_0xbed9('0x31')][_0xbed9('0x38')](_0xbed9('0x39'))){_0x3b0f0a['limit']=qs[_0xbed9('0x1f')](_0x4e1705['query'][_0xbed9('0x1f')]);_0x3b0f0a[_0xbed9('0x21')]=qs[_0xbed9('0x21')](_0x4e1705[_0xbed9('0x31')][_0xbed9('0x21')]);}_0x3b0f0a[_0xbed9('0x3a')]=qs[_0xbed9('0x3b')](_0x4e1705[_0xbed9('0x31')][_0xbed9('0x3b')]);_0x3b0f0a[_0xbed9('0x3c')]=qs['filters'](_[_0xbed9('0x3d')](_0x4e1705['query'],_0x1e6701[_0xbed9('0x33')]),_0x346191);if(_0x4e1705[_0xbed9('0x31')][_0xbed9('0x3e')]){_0x3b0f0a['where']=_[_0xbed9('0x3f')](_0x3b0f0a[_0xbed9('0x3c')],{'$or':_[_0xbed9('0x2d')](_0x346191,function(_0x3a8787){if(_0x3a8787['type']!==_0xbed9('0x40')){var _0x126ec2={};_0x126ec2[_0x3a8787['name']]={'$like':'%'+_0x4e1705[_0xbed9('0x31')][_0xbed9('0x3e')]+'%'};return _0x126ec2;}})});}_0x3b0f0a=_[_0xbed9('0x3f')]({},_0x3b0f0a,_0x4e1705[_0xbed9('0x41')]);var _0x31e6ba={'where':_0x3b0f0a[_0xbed9('0x3c')]};return db[_0xbed9('0x2e')][_0xbed9('0x20')](_0x31e6ba)[_0xbed9('0x42')](function(_0x553a4a){_0x26fd86[_0xbed9('0x20')]=_0x553a4a;if(_0x4e1705[_0xbed9('0x31')]['includeAll']){_0x3b0f0a['include']=[{'all':!![]}];}return db['FaxApplication'][_0xbed9('0x43')](_0x3b0f0a);})[_0xbed9('0x42')](function(_0x8f3185){_0x26fd86['rows']=_0x8f3185;return _0x26fd86;})[_0xbed9('0x42')](respondWithFilteredResult(_0x340ba0,_0x3b0f0a))[_0xbed9('0x44')](handleError(_0x340ba0,null));};exports[_0xbed9('0x45')]=function(_0x12df9b,_0x1266a0){var _0x4d79c8={'raw':!![],'where':{'id':_0x12df9b[_0xbed9('0x46')]['id']}},_0x3b2191={};_0x3b2191[_0xbed9('0x30')]=_['keys'](db['FaxApplication'][_0xbed9('0x47')]);_0x3b2191['query']=_[_0xbed9('0x32')](_0x12df9b['query']);_0x3b2191[_0xbed9('0x33')]=_['intersection'](_0x3b2191['model'],_0x3b2191['query']);_0x4d79c8[_0xbed9('0x35')]=_[_0xbed9('0x34')](_0x3b2191[_0xbed9('0x30')],qs[_0xbed9('0x36')](_0x12df9b['query']['fields']));_0x4d79c8[_0xbed9('0x35')]=_0x4d79c8[_0xbed9('0x35')]['length']?_0x4d79c8[_0xbed9('0x35')]:_0x3b2191[_0xbed9('0x30')];if(_0x12df9b['query'][_0xbed9('0x48')]){_0x4d79c8[_0xbed9('0x49')]=[{'all':!![]}];}_0x4d79c8=_[_0xbed9('0x3f')]({},_0x4d79c8,_0x12df9b[_0xbed9('0x41')]);return db[_0xbed9('0x2e')][_0xbed9('0x4a')](_0x4d79c8)[_0xbed9('0x42')](handleEntityNotFound(_0x1266a0,null))[_0xbed9('0x42')](respondWithResult(_0x1266a0,null))[_0xbed9('0x44')](handleError(_0x1266a0,null));};exports['create']=function(_0x5c03fe,_0x3f2695){return db['FaxApplication'][_0xbed9('0x4b')](_0x5c03fe[_0xbed9('0x4c')],{})[_0xbed9('0x42')](respondWithResult(_0x3f2695,0xc9))['catch'](handleError(_0x3f2695,null));};exports[_0xbed9('0x27')]=function(_0x4e908c,_0x49afd2){if(_0x4e908c[_0xbed9('0x4c')]['id']){delete _0x4e908c[_0xbed9('0x4c')]['id'];}return db[_0xbed9('0x2e')]['find']({'where':{'id':_0x4e908c['params']['id']}})[_0xbed9('0x42')](handleEntityNotFound(_0x49afd2,null))[_0xbed9('0x42')](saveUpdates(_0x4e908c[_0xbed9('0x4c')],null))[_0xbed9('0x42')](respondWithResult(_0x49afd2,null))[_0xbed9('0x44')](handleError(_0x49afd2,null));};exports['destroy']=function(_0x5c3297,_0x1e126c){return db[_0xbed9('0x2e')][_0xbed9('0x4a')]({'where':{'id':_0x5c3297['params']['id']}})[_0xbed9('0x42')](handleEntityNotFound(_0x1e126c,null))[_0xbed9('0x42')](removeEntity(_0x1e126c,null))[_0xbed9('0x44')](handleError(_0x1e126c,null));};
\ No newline at end of file
index a52457d..82d73d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2626=['api','moment','bluebird','path','rimraf','../../config/environment','./faxApplication.attributes','exports','define','FaxApplication','fax_applications','lodash','util','../../config/logger'];(function(_0x314b87,_0x12edff){var _0x53584c=function(_0x588c93){while(--_0x588c93){_0x314b87['push'](_0x314b87['shift']());}};_0x53584c(++_0x12edff);}(_0x2626,0x177));var _0x6262=function(_0x435ad7,_0x1acfc8){_0x435ad7=_0x435ad7-0x0;var _0x3e5386=_0x2626[_0x435ad7];return _0x3e5386;};'use strict';var _=require(_0x6262('0x0'));var util=require(_0x6262('0x1'));var logger=require(_0x6262('0x2'))(_0x6262('0x3'));var moment=require(_0x6262('0x4'));var BPromise=require(_0x6262('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6262('0x6'));var rimraf=require(_0x6262('0x7'));var config=require(_0x6262('0x8'));var attributes=require(_0x6262('0x9'));module[_0x6262('0xa')]=function(_0x56f26d,_0x39a772){return _0x56f26d[_0x6262('0xb')](_0x6262('0xc'),attributes,{'tableName':_0x6262('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x6719=['define','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','path','rimraf','../../config/environment','./faxApplication.attributes','exports'];(function(_0xbbfc6e,_0x336d0a){var _0x38f624=function(_0x3bf0f7){while(--_0x3bf0f7){_0xbbfc6e['push'](_0xbbfc6e['shift']());}};_0x38f624(++_0x336d0a);}(_0x6719,0x116));var _0x9671=function(_0x2b67ab,_0x2d9aff){_0x2b67ab=_0x2b67ab-0x0;var _0x5e05cb=_0x6719[_0x2b67ab];return _0x5e05cb;};'use strict';var _=require(_0x9671('0x0'));var util=require(_0x9671('0x1'));var logger=require(_0x9671('0x2'))(_0x9671('0x3'));var moment=require(_0x9671('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x9671('0x5'));var rimraf=require(_0x9671('0x6'));var config=require(_0x9671('0x7'));var attributes=require(_0x9671('0x8'));module[_0x9671('0x9')]=function(_0x30c7f6,_0xbf7bd0){return _0x30c7f6[_0x9671('0xa')]('FaxApplication',attributes,{'tableName':'fax_applications','paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0x9671('0xb')});};
\ No newline at end of file
index 4453eda..be6b8af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc185=['attributes','limit','then','debug','catch','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','http','request','FaxApplication,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result','UpdateFaxApplication','FaxApplication','update','body','options','raw','where'];(function(_0x4d934b,_0x52f8e9){var _0xc0338b=function(_0x1a356c){while(--_0x1a356c){_0x4d934b['push'](_0x4d934b['shift']());}};_0xc0338b(++_0x52f8e9);}(_0xc185,0x96));var _0x5c18=function(_0x128273,_0x2a0507){_0x128273=_0x128273-0x0;var _0x482278=_0xc185[_0x128273];return _0x482278;};'use strict';var _=require('lodash');var util=require(_0x5c18('0x0'));var moment=require(_0x5c18('0x1'));var BPromise=require('bluebird');var rs=require(_0x5c18('0x2'));var fs=require('fs');var Redis=require(_0x5c18('0x3'));var db=require(_0x5c18('0x4'))['db'];var utils=require(_0x5c18('0x5'));var logger=require(_0x5c18('0x6'))(_0x5c18('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x5c18('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x36584d,_0x55ade2,_0x1360a){return new BPromise(function(_0x3bf836,_0x45f857){return client[_0x5c18('0x9')](_0x36584d,_0x1360a)['then'](function(_0x21e0a9){logger['info'](_0x5c18('0xa'),_0x55ade2,_0x5c18('0xb'));logger['debug']('FaxApplication,\x20%s,\x20%s,\x20%s',_0x55ade2,_0x5c18('0xb'),JSON[_0x5c18('0xc')](_0x21e0a9));if(_0x21e0a9[_0x5c18('0xd')]){if(_0x21e0a9[_0x5c18('0xd')]['code']===0x1f4){logger[_0x5c18('0xd')](_0x5c18('0xa'),_0x55ade2,_0x21e0a9[_0x5c18('0xd')][_0x5c18('0xe')]);return _0x45f857(_0x21e0a9[_0x5c18('0xd')][_0x5c18('0xe')]);}logger['error'](_0x5c18('0xa'),_0x55ade2,_0x21e0a9[_0x5c18('0xd')][_0x5c18('0xe')]);return _0x3bf836(_0x21e0a9[_0x5c18('0xd')][_0x5c18('0xe')]);}else{logger[_0x5c18('0xf')]('FaxApplication,\x20%s,\x20%s',_0x55ade2,_0x5c18('0xb'));_0x3bf836(_0x21e0a9[_0x5c18('0x10')][_0x5c18('0xe')]);}})['catch'](function(_0x52f779){logger[_0x5c18('0xd')](_0x5c18('0xa'),_0x55ade2,_0x52f779);_0x45f857(_0x52f779);});});}exports[_0x5c18('0x11')]=function(_0x4efa10){var _0x109e53=this;return new Promise(function(_0x3a92a3,_0x11b720){return db[_0x5c18('0x12')][_0x5c18('0x13')](_0x4efa10[_0x5c18('0x14')],{'raw':_0x4efa10[_0x5c18('0x15')]?_0x4efa10[_0x5c18('0x15')][_0x5c18('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4efa10[_0x5c18('0x15')]?_0x4efa10[_0x5c18('0x15')][_0x5c18('0x17')]||null:null,'attributes':_0x4efa10[_0x5c18('0x15')]?_0x4efa10['options'][_0x5c18('0x18')]||null:null,'limit':_0x4efa10[_0x5c18('0x15')]?_0x4efa10['options'][_0x5c18('0x19')]||null:null})[_0x5c18('0x1a')](function(_0x29afd5){logger[_0x5c18('0xf')](_0x5c18('0x11'),_0x4efa10);logger[_0x5c18('0x1b')](_0x5c18('0x11'),_0x4efa10,JSON[_0x5c18('0xc')](_0x29afd5));_0x3a92a3(_0x29afd5);})[_0x5c18('0x1c')](function(_0x2cfb68){logger[_0x5c18('0xd')](_0x5c18('0x11'),_0x2cfb68[_0x5c18('0xe')],_0x4efa10);_0x11b720(_0x109e53[_0x5c18('0xd')](0x1f4,_0x2cfb68[_0x5c18('0xe')]));});});};
\ No newline at end of file
+var _0xe80e=['result','catch','UpdateFaxApplication','update','body','raw','options','where','attributes','limit','then','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','info','FaxApplication,\x20%s,\x20%s','request\x20sent','debug','FaxApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x9edfd5,_0x286486){var _0x330738=function(_0x4aceb3){while(--_0x4aceb3){_0x9edfd5['push'](_0x9edfd5['shift']());}};_0x330738(++_0x286486);}(_0xe80e,0xab));var _0xee80=function(_0x550d12,_0x5384bd){_0x550d12=_0x550d12-0x0;var _0x12103d=_0xe80e[_0x550d12];return _0x12103d;};'use strict';var _=require(_0xee80('0x0'));var util=require(_0xee80('0x1'));var moment=require(_0xee80('0x2'));var BPromise=require(_0xee80('0x3'));var rs=require(_0xee80('0x4'));var fs=require('fs');var Redis=require(_0xee80('0x5'));var db=require(_0xee80('0x6'))['db'];var utils=require(_0xee80('0x7'));var logger=require('../../config/logger')(_0xee80('0x8'));var config=require('../../config/environment');var jayson=require(_0xee80('0x9'));var client=jayson[_0xee80('0xa')][_0xee80('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x21ce89,_0x150e4e,_0x1f2cad){return new BPromise(function(_0x37abe8,_0x4f172a){return client['request'](_0x21ce89,_0x1f2cad)['then'](function(_0x61212e){logger[_0xee80('0xc')](_0xee80('0xd'),_0x150e4e,_0xee80('0xe'));logger[_0xee80('0xf')](_0xee80('0x10'),_0x150e4e,_0xee80('0xe'),JSON[_0xee80('0x11')](_0x61212e));if(_0x61212e[_0xee80('0x12')]){if(_0x61212e[_0xee80('0x12')][_0xee80('0x13')]===0x1f4){logger[_0xee80('0x12')](_0xee80('0xd'),_0x150e4e,_0x61212e[_0xee80('0x12')]['message']);return _0x4f172a(_0x61212e[_0xee80('0x12')][_0xee80('0x14')]);}logger[_0xee80('0x12')](_0xee80('0xd'),_0x150e4e,_0x61212e[_0xee80('0x12')][_0xee80('0x14')]);return _0x37abe8(_0x61212e['error']['message']);}else{logger[_0xee80('0xc')](_0xee80('0xd'),_0x150e4e,_0xee80('0xe'));_0x37abe8(_0x61212e[_0xee80('0x15')][_0xee80('0x14')]);}})[_0xee80('0x16')](function(_0x50ba4c){logger[_0xee80('0x12')]('FaxApplication,\x20%s,\x20%s',_0x150e4e,_0x50ba4c);_0x4f172a(_0x50ba4c);});});}exports[_0xee80('0x17')]=function(_0x33de9c){var _0x4f12cb=this;return new Promise(function(_0x43953d,_0x49b2e6){return db['FaxApplication'][_0xee80('0x18')](_0x33de9c[_0xee80('0x19')],{'raw':_0x33de9c['options']?_0x33de9c['options'][_0xee80('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x33de9c[_0xee80('0x1b')]?_0x33de9c[_0xee80('0x1b')][_0xee80('0x1c')]||null:null,'attributes':_0x33de9c[_0xee80('0x1b')]?_0x33de9c[_0xee80('0x1b')][_0xee80('0x1d')]||null:null,'limit':_0x33de9c[_0xee80('0x1b')]?_0x33de9c[_0xee80('0x1b')][_0xee80('0x1e')]||null:null})[_0xee80('0x1f')](function(_0x2b8b56){logger[_0xee80('0xc')](_0xee80('0x17'),_0x33de9c);logger['debug'](_0xee80('0x17'),_0x33de9c,JSON[_0xee80('0x11')](_0x2b8b56));_0x43953d(_0x2b8b56);})[_0xee80('0x16')](function(_0x215f79){logger[_0xee80('0x12')]('UpdateFaxApplication',_0x215f79[_0xee80('0x14')],_0x33de9c);_0x49b2e6(_0x4f12cb[_0xee80('0x12')](0x1f4,_0x215f79[_0xee80('0x14')]));});});};
\ No newline at end of file
index d3957cc..04a9467 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a0=['get','isAuthenticated','/:id','show','create','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./faxApplication.controller'];(function(_0x5947c5,_0x23b3f2){var _0x484c15=function(_0x3f4985){while(--_0x3f4985){_0x5947c5['push'](_0x5947c5['shift']());}};_0x484c15(++_0x23b3f2);}(_0x14a0,0x8e));var _0x014a=function(_0x5a83ba,_0x22224b){_0x5a83ba=_0x5a83ba-0x0;var _0x5ea143=_0x14a0[_0x5a83ba];return _0x5ea143;};'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
+var _0x7916=['/:id','show','create','put','update','delete','destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxApplication.controller','isAuthenticated','index'];(function(_0x3ee3d7,_0x1df7a8){var _0x46332a=function(_0x37cebe){while(--_0x37cebe){_0x3ee3d7['push'](_0x3ee3d7['shift']());}};_0x46332a(++_0x1df7a8);}(_0x7916,0x128));var _0x6791=function(_0x427be6,_0x3f387a){_0x427be6=_0x427be6-0x0;var _0x6c680=_0x7916[_0x427be6];return _0x6c680;};'use strict';var multer=require(_0x6791('0x0'));var util=require('util');var path=require(_0x6791('0x1'));var timeout=require(_0x6791('0x2'));var express=require('express');var router=express[_0x6791('0x3')]();var fs_extra=require(_0x6791('0x4'));var auth=require(_0x6791('0x5'));var interaction=require(_0x6791('0x6'));var config=require('../../config/environment');var controller=require(_0x6791('0x7'));router['get']('/',auth[_0x6791('0x8')](),controller[_0x6791('0x9')]);router['get'](_0x6791('0xa'),auth['isAuthenticated'](),controller[_0x6791('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x6791('0xc')]);router[_0x6791('0xd')]('/:id',auth[_0x6791('0x8')](),controller[_0x6791('0xe')]);router[_0x6791('0xf')]('/:id',auth[_0x6791('0x8')](),controller[_0x6791('0x10')]);module[_0x6791('0x11')]=router;
\ No newline at end of file
index 7e97e95..7524dae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9ef=['STRING','out','ENUM','sequelize','exports','BOOLEAN','DATE'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd9ef,0x15a));var _0xfd9e=function(_0x2ba4ed,_0x3fd1ed){_0x2ba4ed=_0x2ba4ed-0x0;var _0x5b27fc=_0xd9ef[_0x2ba4ed];return _0x5b27fc;};'use strict';var Sequelize=require(_0xfd9e('0x0'));module[_0xfd9e('0x1')]={'closed':{'type':Sequelize[_0xfd9e('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xfd9e('0x3')]},'disposition':{'type':Sequelize[_0xfd9e('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0xfd9e('0x4')]},'read1stAt':{'type':Sequelize[_0xfd9e('0x3')]},'fax':{'type':Sequelize['STRING']},'firstMsgDirection':{'type':Sequelize['ENUM']('in',_0xfd9e('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xfd9e('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xfd9e('0x6')]('in',_0xfd9e('0x5')),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
+var _0xb0bf=['ENUM','sequelize','exports','BOOLEAN','DATE','STRING'];(function(_0x3de822,_0x5d1466){var _0x1475c9=function(_0x38d50b){while(--_0x38d50b){_0x3de822['push'](_0x3de822['shift']());}};_0x1475c9(++_0x5d1466);}(_0xb0bf,0x8b));var _0xfb0b=function(_0x30fc67,_0x468e59){_0x30fc67=_0x30fc67-0x0;var _0x53995e=_0xb0bf[_0x30fc67];return _0x53995e;};'use strict';var Sequelize=require(_0xfb0b('0x0'));module[_0xfb0b('0x1')]={'closed':{'type':Sequelize[_0xfb0b('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0xfb0b('0x3')]},'disposition':{'type':Sequelize[_0xfb0b('0x4')]},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0xfb0b('0x4')]},'note':{'type':Sequelize[_0xfb0b('0x4')]},'read1stAt':{'type':Sequelize[_0xfb0b('0x3')]},'fax':{'type':Sequelize[_0xfb0b('0x4')]},'firstMsgDirection':{'type':Sequelize[_0xfb0b('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0xfb0b('0x3')]},'lastMsgDirection':{'type':Sequelize[_0xfb0b('0x5')]('in','out'),'defaultValue':'in','allowNull':![]}};
\ No newline at end of file
index e85a597..43a4598 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf28c=['union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','text','body','compact','isEmpty','concat','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.id\x20LIKE\x20?','i.fax\x20LIKE\x20?','i.id','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','contactName','DESC','resolve','FaxAccountId','i.FaxAccountId\x20IS\x20NOT\x20NULL','role','user','i.FaxAccountId\x20IS\x20NULL','i.FaxAccountId\x20IN\x20?','agent','sequelize','toString','keyBy','merge','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','c.firstName','c.email','Contact.email','Contact.phone','c.mobile','Contact.mobile','c.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.FaxInteractionId\x20IN\x20?','groupBy','FaxInteractionId','all','rows','catch','show','params','rawAttributes','includeAll','include','create','update','destroy','addMessage','ids','omit','getMessages','FaxMessage','sort','format','YYYY-MM-DD\x20HH:mm:ss','options','findAll','addTags','setTags','spread','emit','removeTags','join','root','files','tmp','server','attachments','transcript-%d-%s.zip','Attachment','Messages','createdAt','get','mkdirSync','existsSync','createReadStream','pipe','download','err','unlinkSync','eml-format','fast-json-patch','request-promise','bluebird','mustache','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/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','then','stack','name','Users','map','fullname','TagIds','Tags','split','forEach','push','waiting','answered','UserId','talking','closed','total','index','FaxInteraction','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','where','pick','select','field','color','from','tools_tags','u.fullname','ui.FaxInteractionId','user_has_fax_interactions','users','u.id\x20=\x20ui.UserId','fax_interactions','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','left_join','o.id\x20=\x20i.UserId','fax_accounts','a.id\x20=\x20i.FaxAccountId','fax_messages','it.FaxInteractionId\x20=\x20i.id','expr','search','sqlOperator','conditions','find','unreadMessages','`\x20=\x200','having','`\x20>\x200','Contact','$substring','value','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?'];(function(_0x2b6482,_0x95e8a8){var _0x53e68f=function(_0x544be1){while(--_0x544be1){_0x2b6482['push'](_0x2b6482['shift']());}};_0x53e68f(++_0x95e8a8);}(_0xf28c,0x69));var _0xcf28=function(_0x2578d2,_0x15dbc0){_0x2578d2=_0x2578d2-0x0;var _0x353641=_0xf28c[_0x2578d2];return _0x353641;};'use strict';var emlformat=require(_0xcf28('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xcf28('0x1'));var rp=require(_0xcf28('0x2'));var moment=require('moment');var BPromise=require(_0xcf28('0x3'));var Mustache=require(_0xcf28('0x4'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xcf28('0x5'));var ejs=require(_0xcf28('0x6'));var fs=require('fs');var fs_extra=require(_0xcf28('0x7'));var _=require(_0xcf28('0x8'));var squel=require(_0xcf28('0x9'));var crypto=require(_0xcf28('0xa'));var jsforce=require(_0xcf28('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xcf28('0x5'));var querystring=require(_0xcf28('0xc'));var Papa=require(_0xcf28('0xd'));var Redis=require(_0xcf28('0xe'));var authService=require(_0xcf28('0xf'));var qs=require(_0xcf28('0x10'));var as=require(_0xcf28('0x11'));var hardwareService=require(_0xcf28('0x12'));var logger=require(_0xcf28('0x13'))(_0xcf28('0x14'));var utils=require('../../config/utils');var config=require(_0xcf28('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xcf28('0x16'))['db'];config[_0xcf28('0x17')]=_[_0xcf28('0x18')](config[_0xcf28('0x17')],{'host':_0xcf28('0x19'),'port':0x18eb});var socket=require(_0xcf28('0x1a'))(new Redis(config['redis']));require('./faxInteraction.socket')[_0xcf28('0x1b')](socket);function respondWithStatusCode(_0x139af6,_0x3ecc43){_0x3ecc43=_0x3ecc43||0xcc;return function(_0x14e818){if(_0x14e818){return _0x139af6[_0xcf28('0x1c')](_0x3ecc43);}return _0x139af6[_0xcf28('0x1d')](_0x3ecc43)[_0xcf28('0x1e')]();};}function respondWithResult(_0x24f690,_0x16852a){_0x16852a=_0x16852a||0xc8;return function(_0x4b85eb){if(_0x4b85eb){return _0x24f690[_0xcf28('0x1d')](_0x16852a)[_0xcf28('0x1f')](_0x4b85eb);}};}function respondWithFilteredResult(_0x14a579,_0x1d5693){return function(_0x58de42){if(_0x58de42){var _0x41eea8=typeof _0x1d5693[_0xcf28('0x20')]===_0xcf28('0x21')&&typeof _0x1d5693['limit']===_0xcf28('0x21');var _0x50ed56=_0x58de42[_0xcf28('0x22')];var _0x424064=_0x41eea8?0x0:_0x1d5693[_0xcf28('0x20')];var _0x4bcdd1=_0x41eea8?_0x58de42[_0xcf28('0x22')]:_0x1d5693['offset']+_0x1d5693[_0xcf28('0x23')];var _0x27ad81;if(_0x4bcdd1>=_0x50ed56){_0x4bcdd1=_0x50ed56;_0x27ad81=0xc8;}else{_0x27ad81=0xce;}_0x14a579['status'](_0x27ad81);return _0x14a579['set'](_0xcf28('0x24'),_0x424064+'-'+_0x4bcdd1+'/'+_0x50ed56)[_0xcf28('0x1f')](_0x58de42);}return null;};}function patchUpdates(_0x5a8cb4){return function(_0x4533d7){try{jsonpatch[_0xcf28('0x25')](_0x4533d7,_0x5a8cb4,!![]);}catch(_0xc29724){return BPromise[_0xcf28('0x26')](_0xc29724);}return _0x4533d7[_0xcf28('0x27')]();};}function saveUpdates(_0x42fd83,_0x393e34){return function(_0x39919a){if(_0x39919a){return _0x39919a['update'](_0x42fd83)[_0xcf28('0x28')](function(_0x5cd2b6){return _0x5cd2b6;});}return null;};}function removeEntity(_0x6b0029,_0x43f0a9){return function(_0x85cb72){if(_0x85cb72){return _0x85cb72['destroy']()['then'](function(){_0x6b0029['status'](0xcc)[_0xcf28('0x1e')]();});}};}function handleEntityNotFound(_0x45a909,_0x32d787){return function(_0x251196){if(!_0x251196){_0x45a909[_0xcf28('0x1c')](0x194);}return _0x251196;};}function handleError(_0xb0dade,_0xba89be){_0xba89be=_0xba89be||0x1f4;return function(_0xdbc27a){logger['error'](_0xdbc27a[_0xcf28('0x29')]);if(_0xdbc27a[_0xcf28('0x2a')]){delete _0xdbc27a[_0xcf28('0x2a')];}_0xb0dade[_0xcf28('0x1d')](_0xba89be)['send'](_0xdbc27a);};}function getInteractionUsers(_0x9a465,_0x22ffaf){return new BPromise(function(_0x54c0ac,_0x460634){try{if(_0x22ffaf[_0x9a465['id']]){_0x9a465[_0xcf28('0x2b')]=_[_0xcf28('0x2c')](_0x22ffaf[_0x9a465['id']],function(_0x219b90){return{'id':_0x219b90['id'],'fullname':_0x219b90[_0xcf28('0x2d')]};});}}catch(_0x94dd72){_0x460634(_0x94dd72);}_0x54c0ac(_0x9a465);});}function getInteractionTags(_0x28f3c0,_0x196ace){return new BPromise(function(_0xe0dd94,_0x584e7b){try{if(_0x28f3c0[_0xcf28('0x2e')]){_0x28f3c0[_0xcf28('0x2f')]=[];_0x28f3c0['TagIds'][_0xcf28('0x30')](',')[_0xcf28('0x31')](function(_0x6f5178){_0x28f3c0[_0xcf28('0x2f')][_0xcf28('0x32')](_0x196ace[_0x6f5178]);});}delete _0x28f3c0[_0xcf28('0x2e')];}catch(_0x222ee1){_0x584e7b(_0x222ee1);}_0xe0dd94(_0x28f3c0);});}function updateFaxInteraction(_0xefa515,_0x133d27,_0x593126){return new BPromise(function(_0x23f6ae,_0x150d3e){return getInteractionUsers(_0xefa515,_0x593126)['then'](function(_0x29033a){return getInteractionTags(_0x29033a,_0x133d27);})['then'](function(_0x45d3d3){return getStateInteraction(_0x45d3d3);})['then'](function(_0x28efca){_0x23f6ae(_0x28efca);})['catch'](function(_0x226e8d){_0x150d3e(_0x226e8d);});});}function getStateInteraction(_0x4bb050){return new BPromise(function(_0x16655d){_0x4bb050[_0xcf28('0x33')]=0x0;_0x4bb050['talking']=0x0;_0x4bb050[_0xcf28('0x34')]=0x0;_0x4bb050['unmanaged']=0x0;_0x4bb050['total']=0x0;if(!_0x4bb050['closed']&&!_0x4bb050[_0xcf28('0x35')]){_0x4bb050[_0xcf28('0x33')]+=0x1;}if(!_0x4bb050['closed']&&_0x4bb050[_0xcf28('0x35')]){_0x4bb050[_0xcf28('0x36')]+=0x1;if(_0x4bb050[_0xcf28('0x33')]){_0x4bb050[_0xcf28('0x33')]-=0x1;}}if(_0x4bb050[_0xcf28('0x37')]&&_0x4bb050[_0xcf28('0x35')]){_0x4bb050[_0xcf28('0x34')]+=0x1;if(_0x4bb050[_0xcf28('0x36')]){_0x4bb050['talking']-=0x1;}}if(_0x4bb050['closed']&&!_0x4bb050['UserId']){_0x4bb050['unmanaged']+=0x1;if(_0x4bb050['waiting']){_0x4bb050[_0xcf28('0x33')]-=0x1;}}_0x4bb050[_0xcf28('0x38')]+=0x1;_0x16655d(_0x4bb050);});}exports[_0xcf28('0x39')]=function(_0x44fe41,_0x315c0f){var _0x14f926={},_0x3f36b0={},_0x60f3e7={'count':0x0,'rows':[]};var _0xffa2c9=_['map'](db[_0xcf28('0x3a')]['rawAttributes'],function(_0x541075){return{'name':_0x541075[_0xcf28('0x3b')],'type':_0x541075[_0xcf28('0x3c')]['key']};});_0x3f36b0[_0xcf28('0x3d')]=_[_0xcf28('0x2c')](_0xffa2c9,_0xcf28('0x2a'));_0x3f36b0[_0xcf28('0x3e')]=_[_0xcf28('0x3f')](_0x44fe41[_0xcf28('0x3e')]);_0x3f36b0[_0xcf28('0x40')]=_[_0xcf28('0x41')](_0x3f36b0['model'],_0x3f36b0[_0xcf28('0x3e')]);_0x14f926[_0xcf28('0x42')]=_[_0xcf28('0x41')](_0x3f36b0['model'],qs[_0xcf28('0x43')](_0x44fe41[_0xcf28('0x3e')][_0xcf28('0x43')]));_0x14f926['attributes']=_0x14f926[_0xcf28('0x42')][_0xcf28('0x44')]?_0x14f926['attributes']:_0x3f36b0[_0xcf28('0x3d')];if(!_0x44fe41[_0xcf28('0x3e')]['hasOwnProperty'](_0xcf28('0x45'))){_0x14f926['limit']=qs[_0xcf28('0x23')](_0x44fe41[_0xcf28('0x3e')]['limit']);_0x14f926['offset']=qs[_0xcf28('0x20')](_0x44fe41[_0xcf28('0x3e')][_0xcf28('0x20')]);}_0x14f926[_0xcf28('0x46')]=qs['sort'](_0x44fe41['query']['sort']);_0x14f926[_0xcf28('0x47')]=qs['filters'](_[_0xcf28('0x48')](_0x44fe41['query'],_0x3f36b0[_0xcf28('0x40')]),_0xffa2c9);var _0x3975c2=[];var _0x4c42c7=squel[_0xcf28('0x49')]()[_0xcf28('0x4a')]('id')[_0xcf28('0x4a')](_0xcf28('0x2a'))['field'](_0xcf28('0x4b'))[_0xcf28('0x4c')](_0xcf28('0x4d'));var _0x494b51=squel['select']()[_0xcf28('0x4a')]('u.id')['field'](_0xcf28('0x4e'))['field'](_0xcf28('0x4f'))[_0xcf28('0x4c')](_0xcf28('0x50'),'ui')['left_join'](_0xcf28('0x51'),'u',_0xcf28('0x52'));var _0x401122=squel[_0xcf28('0x49')]()[_0xcf28('0x4c')](_0xcf28('0x53'),'i')['left_join'](_0xcf28('0x54'),'c',_0xcf28('0x55'))[_0xcf28('0x56')](_0xcf28('0x51'),'o',_0xcf28('0x57'))[_0xcf28('0x56')](_0xcf28('0x58'),'a',_0xcf28('0x59'))[_0xcf28('0x56')](_0xcf28('0x5a'),'me','me.FaxInteractionId\x20=\x20i.id')[_0xcf28('0x56')]('fax_interaction_has_tags','it',_0xcf28('0x5b'))[_0xcf28('0x56')]('tools_tags','t','t.id\x20=\x20it.TagId');var _0x422545=squel['expr']();var _0x17ecb7=[];var _0x281452=squel[_0xcf28('0x5c')]();var _0x1d7ffa;if(_0x44fe41[_0xcf28('0x3e')][_0xcf28('0x5d')]){_0x1d7ffa=as['parseSearch'](_0x44fe41[_0xcf28('0x3e')][_0xcf28('0x5d')]);var _0x4f4d4e=_0x1d7ffa[_0xcf28('0x5e')];for(var _0x4c0da6=0x0;_0x4c0da6<_0x1d7ffa['conditions'][_0xcf28('0x44')];_0x4c0da6++){var _0x2fb84c=_0x1d7ffa[_0xcf28('0x5f')][_0x4c0da6];var _0xa8e06f='i';var _0x3c5474=_[_0xcf28('0x60')](_0xffa2c9,[_0xcf28('0x2a'),_0x2fb84c[_0xcf28('0x4a')]]);if(!_0x3c5474){switch(_0x2fb84c['field']){case _0xcf28('0x61'):if(_0x2fb84c['value']==0x1){_0x401122['having']('`'+_0x2fb84c[_0xcf28('0x4a')]+_0xcf28('0x62'));}else{_0x401122[_0xcf28('0x63')]('`'+_0x2fb84c[_0xcf28('0x4a')]+_0xcf28('0x64'));}break;case _0xcf28('0x65'):if(_0x2fb84c['operator']===_0xcf28('0x66')){if(_0x2fb84c[_0xcf28('0x67')][_0xcf28('0x30')]('\x20')[_0xcf28('0x44')]>0x1){_0x422545[_0x4f4d4e](_0xcf28('0x68'),qs['getFullTextValue'](_0x2fb84c[_0xcf28('0x67')]),null);}else{var _0x1dd7f9='%'+_0x2fb84c[_0xcf28('0x67')]+'%';_0x422545[_0x4f4d4e](_0xcf28('0x69'),_0x1dd7f9,_0x1dd7f9,_0x1dd7f9);}}else{_0x3c5474=_[_0xcf28('0x60')](_0xffa2c9,['name',_0xcf28('0x6a')]);_0x2fb84c['field']=_0xcf28('0x6a');_0x1ab366=as[_0xcf28('0x6b')](_0xa8e06f,_0x3c5474[_0xcf28('0x3c')],_0x2fb84c);_0x422545[_0x4f4d4e](_0x1ab366['text'],_0x1ab366[_0xcf28('0x67')][_0xcf28('0x6c')],_0x1ab366[_0xcf28('0x67')][_0xcf28('0x1e')]);}break;case _0xcf28('0x6d'):var _0x260ef2=_0x2fb84c[_0xcf28('0x67')][_0xcf28('0x30')](',')[_0xcf28('0x2c')](function(_0x41a93a){return Number(_0x41a93a);});_0x260ef2[_0xcf28('0x31')](function(_0x46c271){_0x281452['or'](_0xcf28('0x6e'),'%,'+_0x46c271+',%');});_0x17ecb7=_[_0xcf28('0x6f')](_0x17ecb7,_0x260ef2);break;case _0xcf28('0x70'):if(_0x2fb84c['operator']==='$substring'){_0x422545[_0x4f4d4e](_0xcf28('0x71'),'%'+_0x2fb84c[_0xcf28('0x67')]+'%',null);}else{_0x3c5474=_[_0xcf28('0x60')](_0xffa2c9,['name',_0xcf28('0x35')]);_0x2fb84c[_0xcf28('0x4a')]=_0xcf28('0x35');_0x1ab366=as['buildExpression'](_0xa8e06f,_0x3c5474['type'],_0x2fb84c);_0x422545[_0x4f4d4e](_0x1ab366[_0xcf28('0x72')],_0x1ab366[_0xcf28('0x67')]['start'],_0x1ab366[_0xcf28('0x67')][_0xcf28('0x1e')]);}break;case _0xcf28('0x73'):_0x1ab366=as[_0xcf28('0x6b')]('me',null,_0x2fb84c);_0x422545[_0x4f4d4e](_0x1ab366[_0xcf28('0x72')],_0x1ab366[_0xcf28('0x67')][_0xcf28('0x6c')],_0x1ab366['value']['end']);break;}}else{var _0x1ab366=as[_0xcf28('0x6b')](_0xa8e06f,_0x3c5474['type'],_0x2fb84c);_0x422545[_0x4f4d4e](_0x1ab366[_0xcf28('0x72')],_0x1ab366[_0xcf28('0x67')][_0xcf28('0x6c')],_0x1ab366[_0xcf28('0x67')]['end']);}}}else{var _0x3b0663=_(_0x44fe41[_0xcf28('0x3e')])[_0xcf28('0x3f')]()[_0xcf28('0x2c')](function(_0xa96fc8){return _['some'](_0xffa2c9,[_0xcf28('0x2a'),_0xa96fc8])?_0xa96fc8:undefined;})[_0xcf28('0x74')]()[_0xcf28('0x67')]();if(!_[_0xcf28('0x75')](_0x3b0663)){_0x3b0663[_0xcf28('0x31')](function(_0xcdd582){if(_0xcdd582==='FaxAccountId'){_0x401122[_0xcf28('0x47')]('i.FaxAccountId\x20IN\x20?',[][_0xcf28('0x76')](_0x44fe41['query'][_0xcdd582]));}else if(_0xcdd582==='createdAt'){var _0x2abd35=JSON[_0xcf28('0x77')](_0x44fe41[_0xcf28('0x3e')][_0xcdd582])[_0xcf28('0x78')];var _0x1dc87d=JSON[_0xcf28('0x77')](_0x44fe41['query'][_0xcdd582])[_0xcf28('0x79')];_0x401122[_0xcf28('0x47')](_0xcf28('0x7a'),_0x2abd35,_0x1dc87d);}else{if(_0x44fe41['query'][_0xcdd582]==='null'){_0x401122['where']('i.'+_0xcdd582+_0xcf28('0x7b'));}else{_0x401122[_0xcf28('0x47')]('i.'+_0xcdd582+_0xcf28('0x7c'),_0x44fe41[_0xcf28('0x3e')][_0xcdd582]);}}});}if(_0x44fe41['query']['read']){if(_0x44fe41[_0xcf28('0x3e')][_0xcf28('0x7d')]==0x1){_0x401122[_0xcf28('0x63')]('`unreadMessages`\x20=\x200');}else{_0x401122[_0xcf28('0x63')](_0xcf28('0x7e'));}}if(_0x44fe41[_0xcf28('0x3e')][_0xcf28('0x7f')]){_0x17ecb7=_[_0xcf28('0x80')](_0x44fe41[_0xcf28('0x3e')][_0xcf28('0x7f')])?_0x44fe41[_0xcf28('0x3e')]['tag']:new Array(_0x44fe41[_0xcf28('0x3e')][_0xcf28('0x7f')]);_0x17ecb7[_0xcf28('0x31')](function(_0x1f5ebe){_0x281452['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x1f5ebe+',%');});}if(_0x44fe41[_0xcf28('0x3e')][_0xcf28('0x81')]){var _0x53f40d=_0x44fe41[_0xcf28('0x3e')][_0xcf28('0x81')][_0xcf28('0x82')]('\x5c','\x5c\x5c')[_0xcf28('0x82')](/'/g,'\x27\x27');if(qs[_0xcf28('0x83')](_0x53f40d)){_0x422545['or'](_0xcf28('0x84'),_0x53f40d+'%')['or'](_0xcf28('0x85'),_0x53f40d+'%');}_0x422545['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x53f40d+'%');}}_0x401122[_0xcf28('0x47')](_0x422545);_0x401122['group'](_0xcf28('0x86'));var _0x120b7e={'type':db['Sequelize']['QueryTypes'][_0xcf28('0x87')],'raw':!![]};var _0x43bbb9=_0x401122[_0xcf28('0x88')]();_0x43bbb9[_0xcf28('0x4a')](_0xcf28('0x86'));_0x43bbb9['field'](_0xcf28('0x89'),_0xcf28('0x61'));if(_0x14f926[_0xcf28('0x46')]){_0x14f926[_0xcf28('0x46')][_0xcf28('0x31')](function(_0x254ff3){var _0xfcc291=_0x254ff3[0x0]===_0xcf28('0x8a')?_0x254ff3[0x0]:'i.'+_0x254ff3[0x0];_0x401122[_0xcf28('0x46')](_0xfcc291,_0x254ff3[0x1]===_0xcf28('0x8b')?![]:!![]);});}if(!_['isEmpty'](_0x17ecb7)){_0x401122[_0xcf28('0x63')](_0x281452);_0x43bbb9[_0xcf28('0x47')]('t.id\x20IN\x20?',_0x17ecb7);}BPromise[_0xcf28('0x8c')]()[_0xcf28('0x28')](function(){if(!_0x1d7ffa){if(_0x44fe41[_0xcf28('0x3e')][_0xcf28('0x8d')])return;_0x43bbb9[_0xcf28('0x47')](_0xcf28('0x8e'));_0x401122[_0xcf28('0x47')]('i.FaxAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x44fe41['user'][_0xcf28('0x8f')]!=='agent')return;return _0x44fe41[_0xcf28('0x90')]['getFaxAccounts']({'attributes':['id'],'raw':!![]})[_0xcf28('0x28')](function(_0x187aef){if(_[_0xcf28('0x75')](_0x187aef)){_0x43bbb9['where'](_0xcf28('0x91'));_0x401122[_0xcf28('0x47')](_0xcf28('0x91'));}else{_0x43bbb9[_0xcf28('0x47')](_0xcf28('0x92'),_[_0xcf28('0x2c')](_0x187aef,'id'));_0x401122[_0xcf28('0x47')](_0xcf28('0x92'),_[_0xcf28('0x2c')](_0x187aef,'id'));}});})[_0xcf28('0x28')](function(){if(_0x44fe41[_0xcf28('0x90')][_0xcf28('0x8f')]===_0xcf28('0x93')&&!_0x1d7ffa&&!_0x44fe41[_0xcf28('0x3e')]['FaxAccountId'])return[];return db[_0xcf28('0x94')][_0xcf28('0x3e')](_0x43bbb9[_0xcf28('0x95')](),_0x120b7e);})[_0xcf28('0x28')](function(_0x66ea82){_0x60f3e7[_0xcf28('0x22')]=_0x66ea82[_0xcf28('0x44')];if(_0x60f3e7[_0xcf28('0x22')]===0x0)return[];return db[_0xcf28('0x94')]['query'](_0x4c42c7[_0xcf28('0x95')](),_0x120b7e)['then'](function(_0xabd3f3){_0x3975c2=_[_0xcf28('0x96')](_0xabd3f3,'id');_0x120b7e=_[_0xcf28('0x97')](_0x120b7e,{'model':db[_0xcf28('0x3a')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x44fe41['query']['fields']){_0x14f926[_0xcf28('0x42')][_0xcf28('0x31')](function(_0x28f28f){_0x401122['field']('i.'+_0x28f28f);});}else{_0x401122['field'](_0xcf28('0x89'),_0xcf28('0x61'));_0x401122[_0xcf28('0x4a')](_0xcf28('0x98'),_0xcf28('0x99'));_0x401122[_0xcf28('0x4a')](_0xcf28('0x9a'),_0xcf28('0x9b'));_0x401122[_0xcf28('0x4a')](_0xcf28('0x9c'),'contactName');_0x401122[_0xcf28('0x4a')]('i.*');_0x401122[_0xcf28('0x4a')](_0xcf28('0x9d'),'Contact.firstName');_0x401122[_0xcf28('0x4a')]('c.lastName','Contact.lastName');_0x401122[_0xcf28('0x4a')](_0xcf28('0x9e'),_0xcf28('0x9f'));_0x401122['field']('c.phone',_0xcf28('0xa0'));_0x401122['field'](_0xcf28('0xa1'),_0xcf28('0xa2'));_0x401122[_0xcf28('0x4a')](_0xcf28('0xa3'),'Contact.fax');_0x401122[_0xcf28('0x4a')](_0xcf28('0xa4'),_0xcf28('0xa5'));_0x401122['field'](_0xcf28('0xa6'),_0xcf28('0xa7'));_0x401122[_0xcf28('0x4a')](_0xcf28('0xa8'),'TagIds');}if(_0x14f926[_0xcf28('0x23')])_0x401122[_0xcf28('0x23')](_0x14f926[_0xcf28('0x23')]);if(_0x14f926[_0xcf28('0x20')])_0x401122[_0xcf28('0x20')](_0x14f926[_0xcf28('0x20')]);return db[_0xcf28('0x94')]['query'](_0x401122['toString'](),_0x120b7e);})[_0xcf28('0x28')](function(_0x1195b3){if(_0x1195b3[_0xcf28('0x44')]>0x0)_0x494b51[_0xcf28('0x47')](_0xcf28('0xa9'),_[_0xcf28('0x2c')](_0x1195b3,'id'));return db[_0xcf28('0x94')][_0xcf28('0x3e')](_0x494b51['toString'](),_0x120b7e)['then'](function(_0x1801be){var _0x4e6c0a=_[_0xcf28('0xaa')](_0x1801be,_0xcf28('0xab'));var _0x1cb3b5=[];_0x1195b3[_0xcf28('0x31')](function(_0x1c52ee){_0x1cb3b5[_0xcf28('0x32')](updateFaxInteraction(_0x1c52ee,_0x3975c2,_0x4e6c0a));});return BPromise[_0xcf28('0xac')](_0x1cb3b5);});});})[_0xcf28('0x28')](function(_0x65fa4){_0x60f3e7[_0xcf28('0xad')]=_0x65fa4;return _0x60f3e7;})[_0xcf28('0x28')](respondWithFilteredResult(_0x315c0f,_0x14f926))[_0xcf28('0xae')](handleError(_0x315c0f,null));};exports[_0xcf28('0xaf')]=function(_0xb2aba7,_0x155bfe){var _0xbbd6f={'raw':![],'where':{'id':_0xb2aba7[_0xcf28('0xb0')]['id']}},_0x34aeac={};_0x34aeac[_0xcf28('0x3d')]=_[_0xcf28('0x3f')](db[_0xcf28('0x3a')][_0xcf28('0xb1')]);_0x34aeac['query']=_[_0xcf28('0x3f')](_0xb2aba7[_0xcf28('0x3e')]);_0x34aeac[_0xcf28('0x40')]=_[_0xcf28('0x41')](_0x34aeac[_0xcf28('0x3d')],_0x34aeac[_0xcf28('0x3e')]);_0xbbd6f[_0xcf28('0x42')]=_[_0xcf28('0x41')](_0x34aeac['model'],qs[_0xcf28('0x43')](_0xb2aba7['query'][_0xcf28('0x43')]));_0xbbd6f[_0xcf28('0x42')]=_0xbbd6f[_0xcf28('0x42')][_0xcf28('0x44')]?_0xbbd6f['attributes']:_0x34aeac[_0xcf28('0x3d')];if(_0xb2aba7['query'][_0xcf28('0xb2')]){_0xbbd6f[_0xcf28('0xb3')]=[{'all':!![]}];}_0xbbd6f=_[_0xcf28('0x97')]({},_0xbbd6f,_0xb2aba7['options']);return db[_0xcf28('0x3a')][_0xcf28('0x60')](_0xbbd6f)['then'](handleEntityNotFound(_0x155bfe,null))[_0xcf28('0x28')](respondWithResult(_0x155bfe,null))[_0xcf28('0xae')](handleError(_0x155bfe,null));};exports['create']=function(_0x5c710a,_0x86114d){return db[_0xcf28('0x3a')][_0xcf28('0xb4')](_0x5c710a[_0xcf28('0x73')],{})['then'](respondWithResult(_0x86114d,0xc9))[_0xcf28('0xae')](handleError(_0x86114d,null));};exports[_0xcf28('0xb5')]=function(_0x4e31f6,_0xfde88d){if(_0x4e31f6[_0xcf28('0x73')]['id']){delete _0x4e31f6[_0xcf28('0x73')]['id'];}return db[_0xcf28('0x3a')]['find']({'where':{'id':_0x4e31f6['params']['id']}})[_0xcf28('0x28')](handleEntityNotFound(_0xfde88d,null))[_0xcf28('0x28')](saveUpdates(_0x4e31f6['body'],null))[_0xcf28('0x28')](respondWithResult(_0xfde88d,null))[_0xcf28('0xae')](handleError(_0xfde88d,null));};exports[_0xcf28('0xb6')]=function(_0x11ff81,_0x2edecb){return db['FaxInteraction']['find']({'where':{'id':_0x11ff81[_0xcf28('0xb0')]['id']}})['then'](handleEntityNotFound(_0x2edecb,null))[_0xcf28('0x28')](removeEntity(_0x2edecb,null))[_0xcf28('0xae')](handleError(_0x2edecb,null));};exports['describe']=function(_0x3bfd73,_0x553bcd){return db[_0xcf28('0x3a')]['describe']()[_0xcf28('0x28')](respondWithResult(_0x553bcd,null))['catch'](handleError(_0x553bcd,null));};exports['addMessage']=function(_0x44df80,_0x2fe18e,_0x4a2249){return db['FaxMessage'][_0xcf28('0x60')]({'where':{'id':_0x44df80['params']['id']}})['then'](handleEntityNotFound(_0x2fe18e,null))[_0xcf28('0x28')](function(_0x2c28c9){if(_0x2c28c9){return _0x2c28c9[_0xcf28('0xb7')](_0x44df80[_0xcf28('0x73')][_0xcf28('0xb8')],_[_0xcf28('0xb9')](_0x44df80[_0xcf28('0x73')],[_0xcf28('0xb8'),'id'])||{});}})[_0xcf28('0x28')](respondWithResult(_0x2fe18e,null))['catch'](handleError(_0x2fe18e,null));};exports[_0xcf28('0xba')]=function(_0x4cdff7,_0x55928d,_0x2e339a){var _0x195440={'raw':![],'where':{}};var _0x29494a={};var _0x3ad8a0={'count':0x0,'rows':[]};return db['FaxInteraction']['findOne']({'where':{'id':_0x4cdff7[_0xcf28('0xb0')]['id']}})[_0xcf28('0x28')](handleEntityNotFound(_0x55928d,null))[_0xcf28('0x28')](function(_0x40da5f){if(_0x40da5f){_0x29494a[_0xcf28('0x3d')]=_[_0xcf28('0x3f')](db[_0xcf28('0xbb')][_0xcf28('0xb1')]);_0x29494a[_0xcf28('0x3e')]=_[_0xcf28('0x3f')](_0x4cdff7[_0xcf28('0x3e')]);_0x29494a[_0xcf28('0x40')]=_[_0xcf28('0x41')](_0x29494a[_0xcf28('0x3d')],_0x29494a[_0xcf28('0x3e')]);_0x195440['attributes']=_[_0xcf28('0x41')](_0x29494a[_0xcf28('0x3d')],qs[_0xcf28('0x43')](_0x4cdff7[_0xcf28('0x3e')]['fields']));_0x195440['attributes']=_0x195440[_0xcf28('0x42')]['length']?_0x195440[_0xcf28('0x42')]:_0x29494a[_0xcf28('0x3d')];if(!_0x4cdff7[_0xcf28('0x3e')]['hasOwnProperty'](_0xcf28('0x45'))){_0x195440[_0xcf28('0x23')]=qs[_0xcf28('0x23')](_0x4cdff7['query'][_0xcf28('0x23')]);_0x195440[_0xcf28('0x20')]=qs[_0xcf28('0x20')](_0x4cdff7[_0xcf28('0x3e')][_0xcf28('0x20')]);}_0x195440[_0xcf28('0x46')]=qs[_0xcf28('0xbc')](_0x4cdff7[_0xcf28('0x3e')][_0xcf28('0xbc')]);_0x195440[_0xcf28('0x47')]=qs['filters'](_[_0xcf28('0x48')](_0x4cdff7[_0xcf28('0x3e')],_0x29494a['filters']));_0x195440[_0xcf28('0x47')][_0xcf28('0xab')]=_0x40da5f['id'];if(_0x4cdff7[_0xcf28('0x3e')][_0xcf28('0x81')]){_0x195440[_0xcf28('0x47')]=_[_0xcf28('0x97')](_0x195440[_0xcf28('0x47')],{'$or':_[_0xcf28('0x2c')](_0x195440['attributes'],function(_0x463d2f){var _0x26dec5={};_0x26dec5[_0x463d2f]={'$like':'%'+_0x4cdff7[_0xcf28('0x3e')][_0xcf28('0x81')]+'%'};return _0x26dec5;})});}if(_0x4cdff7[_0xcf28('0x3e')][_0xcf28('0x78')]){var _0x2c62a3=_0x4cdff7[_0xcf28('0x3e')][_0xcf28('0x78')][_0xcf28('0x30')](',');var _0x503fd8={};_0x503fd8[_0x2c62a3[0x0]]={'$gte':moment(_0x2c62a3[0x1])[_0xcf28('0xbd')](_0xcf28('0xbe'))};_0x195440[_0xcf28('0x47')]=_[_0xcf28('0x97')](_0x195440[_0xcf28('0x47')],_0x503fd8);}_0x195440=_[_0xcf28('0x97')]({},_0x195440,_0x4cdff7[_0xcf28('0xbf')]);return db['FaxMessage']['count']({'where':_0x195440[_0xcf28('0x47')]})[_0xcf28('0x28')](function(_0x131441){_0x3ad8a0[_0xcf28('0x22')]=_0x131441;if(_0x4cdff7['query'][_0xcf28('0xb2')]){_0x195440[_0xcf28('0xb3')]=[{'all':!![]}];}return db[_0xcf28('0xbb')][_0xcf28('0xc0')](_0x195440);})['then'](function(_0x2dbd07){_0x3ad8a0[_0xcf28('0xad')]=_0x2dbd07;return _0x3ad8a0;});}})[_0xcf28('0x28')](respondWithFilteredResult(_0x55928d,_0x195440))[_0xcf28('0xae')](handleError(_0x55928d,null));};exports[_0xcf28('0xc1')]=function(_0x5856ce,_0x211e35,_0x17878c){return db['FaxInteraction'][_0xcf28('0x60')]({'where':{'id':_0x5856ce['params']['id']}})[_0xcf28('0x28')](handleEntityNotFound(_0x211e35,null))[_0xcf28('0x28')](function(_0x78bd6){if(_0x78bd6){return _0x78bd6[_0xcf28('0xc2')](_0x5856ce[_0xcf28('0x73')][_0xcf28('0xb8')],_[_0xcf28('0xb9')](_0x5856ce[_0xcf28('0x73')],['ids','id'])||{})[_0xcf28('0xc3')](function(){return db[_0xcf28('0x6d')][_0xcf28('0xc0')]({'attributes':['id',_0xcf28('0x2a'),'color'],'where':{'id':_0x5856ce[_0xcf28('0x73')][_0xcf28('0xb8')]}});})['then'](function(_0xbcd4ab){socket[_0xcf28('0xc4')]('faxInteractionTags:save',{'id':Number(_0x5856ce[_0xcf28('0xb0')]['id']),'tags':_0xbcd4ab||[]});return{'id':Number(_0x5856ce[_0xcf28('0xb0')]['id']),'tags':_0xbcd4ab||[]};});}})['then'](respondWithResult(_0x211e35,null))[_0xcf28('0xae')](handleError(_0x211e35,null));};exports[_0xcf28('0xc5')]=function(_0xaf9bb2,_0x2e7c0b,_0x30583d){return db[_0xcf28('0x3a')][_0xcf28('0x60')]({'where':{'id':_0xaf9bb2['params']['id']}})[_0xcf28('0x28')](handleEntityNotFound(_0x2e7c0b,null))[_0xcf28('0x28')](function(_0x3dd4f6){if(_0x3dd4f6){return _0x3dd4f6[_0xcf28('0xc5')](_0xaf9bb2[_0xcf28('0x3e')][_0xcf28('0xb8')]);}})[_0xcf28('0x28')](respondWithStatusCode(_0x2e7c0b,null))[_0xcf28('0xae')](handleError(_0x2e7c0b,null));};exports['download']=function(_0x2151c4,_0x8f83fe){var _0x24b2fa=moment()['unix']()[_0xcf28('0x95')]();var _0x1559bc=path[_0xcf28('0xc6')](config[_0xcf28('0xc7')],'server',_0xcf28('0xc8'),_0xcf28('0xc9'));var _0x175c49=path['join'](config['root'],_0xcf28('0xca'),_0xcf28('0xc8'),_0xcf28('0xcb'));var _0x23ce6e=path[_0xcf28('0xc6')](_0x1559bc,_0x24b2fa);var _0x54c122=util[_0xcf28('0xbd')](_0xcf28('0xcc'),_0x2151c4[_0xcf28('0xb0')]['id'],_0x24b2fa);var _0x5dbee2=path['join'](_0x1559bc,_0x54c122);var _0x580ea2=[];_0x580ea2[_0xcf28('0x32')]({'model':db[_0xcf28('0xcd')],'as':_0xcf28('0xcd'),'raw':!![]});var _0x13ba69=[{'model':db[_0xcf28('0xbb')],'as':_0xcf28('0xce'),'attributes':['id',_0xcf28('0x73'),_0xcf28('0xcf')],'include':_0x580ea2}];return db['FaxInteraction']['find']({'where':{'id':_0x2151c4[_0xcf28('0xb0')]['id']},'include':_0x13ba69})['then'](handleEntityNotFound(_0x8f83fe,null))[_0xcf28('0x28')](function(_0x7c32cb){if(_0x7c32cb&&_0x7c32cb['Messages']){var _0x1393dc=_0x7c32cb[_0xcf28('0xd0')]({'plain':!![]});fs[_0xcf28('0xd1')](_0x23ce6e);for(var _0x574471=0x0;_0x574471<_0x1393dc[_0xcf28('0xce')]['length'];_0x574471++){var _0x1d6b6b=_0x1393dc[_0xcf28('0xce')][_0x574471]['Attachment'];if(_0x1d6b6b){var _0x45d8b2=path[_0xcf28('0xc6')](_0x175c49,_0x1d6b6b['basename']);if(fs[_0xcf28('0xd2')](_0x45d8b2)){fs[_0xcf28('0xd3')](_0x45d8b2)[_0xcf28('0xd4')](fs['createWriteStream'](path['join'](_0x23ce6e,_0x1d6b6b['basename'])));}}}return BPromise[_0xcf28('0x8c')]()[_0xcf28('0x28')](function(){return new BPromise(function(_0x448d08,_0x428fca){zipdir(_0x23ce6e,{'saveTo':_0x5dbee2},function(_0x264114,_0x11b3a1){if(_0x264114)return _0x428fca(_0x264114);return _0x448d08(_0x11b3a1);});})['then'](function(){return new BPromise(function(_0x1a2c5e,_0x1edbb1){rimraf(_0x23ce6e,function(_0xd76a5f){if(_0xd76a5f)_0x1edbb1(_0xd76a5f);return _0x1a2c5e();});});})[_0xcf28('0x28')](function(){return _0x8f83fe[_0xcf28('0xd5')](_0x5dbee2,_0x54c122,function(_0x4e082b){if(_0x4e082b){console['log'](_0xcf28('0xd6'),_0x4e082b);}else{fs[_0xcf28('0xd7')](_0x5dbee2);}});});});}else{return _0x8f83fe[_0xcf28('0x1c')](0xc8);}})[_0xcf28('0xae')](handleError(_0x8f83fe,null));};
\ No newline at end of file
+var _0x1b6d=['mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','./faxInteraction.socket','register','sendStatus','status','end','json','limit','undefined','count','offset','apply','reject','save','update','then','error','stack','name','send','map','fullname','TagIds','Tags','split','forEach','catch','waiting','talking','unmanaged','closed','UserId','answered','total','index','FaxInteraction','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','u.id','u.fullname','ui.FaxInteractionId','users','u.id\x20=\x20ui.UserId','from','fax_interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','o.id\x20=\x20i.UserId','fax_accounts','fax_messages','me.FaxInteractionId\x20=\x20i.id','it.FaxInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','parseSearch','search','conditions','find','unreadMessages','value','`\x20=\x200','having','`\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','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?','body','keys','some','compact','isEmpty','FaxAccountId','i.FaxAccountId\x20IN\x20?','concat','createdAt','$gte','parse','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','tag','isArray','filter','replace','i.id\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','contactName','DESC','t.id\x20IN\x20?','i.FaxAccountId\x20IS\x20NOT\x20NULL','role','agent','user','getFaxAccounts','i.FaxAccountId\x20IS\x20NULL','sequelize','keyBy','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','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','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','c.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.FaxInteractionId\x20IN\x20?','groupBy','push','all','rows','show','params','includeAll','include','options','create','describe','addMessage','FaxMessage','ids','omit','getMessages','FaxInteractionId','format','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','Tag','emit','removeTags','download','unix','root','server','files','tmp','join','attachments','transcript-%d-%s.zip','Attachment','Messages','get','mkdirSync','basename','existsSync','pipe','createWriteStream','resolve','log','err','unlinkSync','eml-format','zip-dir','request-promise','moment'];(function(_0x33e267,_0x2f566c){var _0x4fdc72=function(_0x5acc49){while(--_0x5acc49){_0x33e267['push'](_0x33e267['shift']());}};_0x4fdc72(++_0x2f566c);}(_0x1b6d,0xde));var _0xd1b6=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x1b6d[_0x413feb];return _0x40ee88;};'use strict';var emlformat=require(_0xd1b6('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd1b6('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd1b6('0x2'));var moment=require(_0xd1b6('0x3'));var BPromise=require('bluebird');var Mustache=require(_0xd1b6('0x4'));var util=require(_0xd1b6('0x5'));var path=require('path');var sox=require(_0xd1b6('0x6'));var csv=require(_0xd1b6('0x7'));var ejs=require(_0xd1b6('0x8'));var fs=require('fs');var fs_extra=require(_0xd1b6('0x9'));var _=require(_0xd1b6('0xa'));var squel=require(_0xd1b6('0xb'));var crypto=require(_0xd1b6('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xd1b6('0x7'));var querystring=require(_0xd1b6('0xd'));var Papa=require(_0xd1b6('0xe'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xd1b6('0xf'));var as=require(_0xd1b6('0x10'));var hardwareService=require(_0xd1b6('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0xd1b6('0x12'));var config=require(_0xd1b6('0x13'));var licenseUtil=require(_0xd1b6('0x14'));var db=require(_0xd1b6('0x15'))['db'];config[_0xd1b6('0x16')]=_[_0xd1b6('0x17')](config[_0xd1b6('0x16')],{'host':_0xd1b6('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd1b6('0x16')]));require(_0xd1b6('0x19'))[_0xd1b6('0x1a')](socket);function respondWithStatusCode(_0xf5418a,_0x94cb1){_0x94cb1=_0x94cb1||0xcc;return function(_0x33c897){if(_0x33c897){return _0xf5418a[_0xd1b6('0x1b')](_0x94cb1);}return _0xf5418a[_0xd1b6('0x1c')](_0x94cb1)[_0xd1b6('0x1d')]();};}function respondWithResult(_0x28577d,_0x3b7801){_0x3b7801=_0x3b7801||0xc8;return function(_0x1219f3){if(_0x1219f3){return _0x28577d[_0xd1b6('0x1c')](_0x3b7801)[_0xd1b6('0x1e')](_0x1219f3);}};}function respondWithFilteredResult(_0x258336,_0x2dd6a){return function(_0x5d2b14){if(_0x5d2b14){var _0x4715b2=typeof _0x2dd6a['offset']==='undefined'&&typeof _0x2dd6a[_0xd1b6('0x1f')]===_0xd1b6('0x20');var _0x5f2cf8=_0x5d2b14[_0xd1b6('0x21')];var _0x55a1e4=_0x4715b2?0x0:_0x2dd6a[_0xd1b6('0x22')];var _0x18f877=_0x4715b2?_0x5d2b14[_0xd1b6('0x21')]:_0x2dd6a[_0xd1b6('0x22')]+_0x2dd6a[_0xd1b6('0x1f')];var _0x48a259;if(_0x18f877>=_0x5f2cf8){_0x18f877=_0x5f2cf8;_0x48a259=0xc8;}else{_0x48a259=0xce;}_0x258336['status'](_0x48a259);return _0x258336['set']('Content-Range',_0x55a1e4+'-'+_0x18f877+'/'+_0x5f2cf8)[_0xd1b6('0x1e')](_0x5d2b14);}return null;};}function patchUpdates(_0x4a992b){return function(_0x4b0bcb){try{jsonpatch[_0xd1b6('0x23')](_0x4b0bcb,_0x4a992b,!![]);}catch(_0x592303){return BPromise[_0xd1b6('0x24')](_0x592303);}return _0x4b0bcb[_0xd1b6('0x25')]();};}function saveUpdates(_0x8c378e,_0x2c47d1){return function(_0x4164d8){if(_0x4164d8){return _0x4164d8[_0xd1b6('0x26')](_0x8c378e)[_0xd1b6('0x27')](function(_0x56a5e2){return _0x56a5e2;});}return null;};}function removeEntity(_0x5de8f6,_0x580865){return function(_0x223bfe){if(_0x223bfe){return _0x223bfe['destroy']()[_0xd1b6('0x27')](function(){_0x5de8f6['status'](0xcc)[_0xd1b6('0x1d')]();});}};}function handleEntityNotFound(_0x1e0a74,_0x310c96){return function(_0x4af77c){if(!_0x4af77c){_0x1e0a74[_0xd1b6('0x1b')](0x194);}return _0x4af77c;};}function handleError(_0x37e218,_0x51b7c6){_0x51b7c6=_0x51b7c6||0x1f4;return function(_0x398cac){logger[_0xd1b6('0x28')](_0x398cac[_0xd1b6('0x29')]);if(_0x398cac[_0xd1b6('0x2a')]){delete _0x398cac[_0xd1b6('0x2a')];}_0x37e218[_0xd1b6('0x1c')](_0x51b7c6)[_0xd1b6('0x2b')](_0x398cac);};}function getInteractionUsers(_0x5c4a81,_0x2581dc){return new BPromise(function(_0x5ccb59,_0x33e053){try{if(_0x2581dc[_0x5c4a81['id']]){_0x5c4a81['Users']=_[_0xd1b6('0x2c')](_0x2581dc[_0x5c4a81['id']],function(_0xea0a3c){return{'id':_0xea0a3c['id'],'fullname':_0xea0a3c[_0xd1b6('0x2d')]};});}}catch(_0x4ab0af){_0x33e053(_0x4ab0af);}_0x5ccb59(_0x5c4a81);});}function getInteractionTags(_0x66bbdc,_0x15b5e5){return new BPromise(function(_0x4c91f6,_0x5e598c){try{if(_0x66bbdc[_0xd1b6('0x2e')]){_0x66bbdc[_0xd1b6('0x2f')]=[];_0x66bbdc[_0xd1b6('0x2e')][_0xd1b6('0x30')](',')[_0xd1b6('0x31')](function(_0x37da33){_0x66bbdc[_0xd1b6('0x2f')]['push'](_0x15b5e5[_0x37da33]);});}delete _0x66bbdc[_0xd1b6('0x2e')];}catch(_0x3444a2){_0x5e598c(_0x3444a2);}_0x4c91f6(_0x66bbdc);});}function updateFaxInteraction(_0x46a492,_0x5caba2,_0x2287ad){return new BPromise(function(_0x31090f,_0x1a2248){return getInteractionUsers(_0x46a492,_0x2287ad)['then'](function(_0x2204c2){return getInteractionTags(_0x2204c2,_0x5caba2);})[_0xd1b6('0x27')](function(_0x54402a){return getStateInteraction(_0x54402a);})['then'](function(_0x451939){_0x31090f(_0x451939);})[_0xd1b6('0x32')](function(_0x237293){_0x1a2248(_0x237293);});});}function getStateInteraction(_0x4c3cad){return new BPromise(function(_0x26e299){_0x4c3cad[_0xd1b6('0x33')]=0x0;_0x4c3cad[_0xd1b6('0x34')]=0x0;_0x4c3cad['answered']=0x0;_0x4c3cad[_0xd1b6('0x35')]=0x0;_0x4c3cad['total']=0x0;if(!_0x4c3cad[_0xd1b6('0x36')]&&!_0x4c3cad[_0xd1b6('0x37')]){_0x4c3cad[_0xd1b6('0x33')]+=0x1;}if(!_0x4c3cad[_0xd1b6('0x36')]&&_0x4c3cad[_0xd1b6('0x37')]){_0x4c3cad[_0xd1b6('0x34')]+=0x1;if(_0x4c3cad['waiting']){_0x4c3cad[_0xd1b6('0x33')]-=0x1;}}if(_0x4c3cad[_0xd1b6('0x36')]&&_0x4c3cad[_0xd1b6('0x37')]){_0x4c3cad[_0xd1b6('0x38')]+=0x1;if(_0x4c3cad[_0xd1b6('0x34')]){_0x4c3cad[_0xd1b6('0x34')]-=0x1;}}if(_0x4c3cad[_0xd1b6('0x36')]&&!_0x4c3cad['UserId']){_0x4c3cad['unmanaged']+=0x1;if(_0x4c3cad['waiting']){_0x4c3cad[_0xd1b6('0x33')]-=0x1;}}_0x4c3cad[_0xd1b6('0x39')]+=0x1;_0x26e299(_0x4c3cad);});}exports[_0xd1b6('0x3a')]=function(_0x392ed3,_0x43d4b1){var _0x2ccbe9={},_0x4ed869={},_0x4f2325={'count':0x0,'rows':[]};var _0x108aa0=_[_0xd1b6('0x2c')](db[_0xd1b6('0x3b')][_0xd1b6('0x3c')],function(_0x28337c){return{'name':_0x28337c[_0xd1b6('0x3d')],'type':_0x28337c[_0xd1b6('0x3e')][_0xd1b6('0x3f')]};});_0x4ed869[_0xd1b6('0x40')]=_[_0xd1b6('0x2c')](_0x108aa0,_0xd1b6('0x2a'));_0x4ed869['query']=_['keys'](_0x392ed3[_0xd1b6('0x41')]);_0x4ed869[_0xd1b6('0x42')]=_[_0xd1b6('0x43')](_0x4ed869[_0xd1b6('0x40')],_0x4ed869[_0xd1b6('0x41')]);_0x2ccbe9[_0xd1b6('0x44')]=_[_0xd1b6('0x43')](_0x4ed869[_0xd1b6('0x40')],qs[_0xd1b6('0x45')](_0x392ed3[_0xd1b6('0x41')][_0xd1b6('0x45')]));_0x2ccbe9[_0xd1b6('0x44')]=_0x2ccbe9['attributes'][_0xd1b6('0x46')]?_0x2ccbe9[_0xd1b6('0x44')]:_0x4ed869[_0xd1b6('0x40')];if(!_0x392ed3[_0xd1b6('0x41')][_0xd1b6('0x47')](_0xd1b6('0x48'))){_0x2ccbe9[_0xd1b6('0x1f')]=qs['limit'](_0x392ed3[_0xd1b6('0x41')]['limit']);_0x2ccbe9[_0xd1b6('0x22')]=qs[_0xd1b6('0x22')](_0x392ed3[_0xd1b6('0x41')][_0xd1b6('0x22')]);}_0x2ccbe9[_0xd1b6('0x49')]=qs[_0xd1b6('0x4a')](_0x392ed3[_0xd1b6('0x41')][_0xd1b6('0x4a')]);_0x2ccbe9[_0xd1b6('0x4b')]=qs['filters'](_[_0xd1b6('0x4c')](_0x392ed3[_0xd1b6('0x41')],_0x4ed869[_0xd1b6('0x42')]),_0x108aa0);var _0x33762c=[];var _0x411868=squel[_0xd1b6('0x4d')]()['field']('id')[_0xd1b6('0x4e')](_0xd1b6('0x2a'))[_0xd1b6('0x4e')](_0xd1b6('0x4f'))['from']('tools_tags');var _0x27e692=squel['select']()[_0xd1b6('0x4e')](_0xd1b6('0x50'))[_0xd1b6('0x4e')](_0xd1b6('0x51'))[_0xd1b6('0x4e')](_0xd1b6('0x52'))['from']('user_has_fax_interactions','ui')['left_join'](_0xd1b6('0x53'),'u',_0xd1b6('0x54'));var _0x4cdf32=squel[_0xd1b6('0x4d')]()[_0xd1b6('0x55')](_0xd1b6('0x56'),'i')[_0xd1b6('0x57')](_0xd1b6('0x58'),'c',_0xd1b6('0x59'))[_0xd1b6('0x57')]('users','o',_0xd1b6('0x5a'))[_0xd1b6('0x57')](_0xd1b6('0x5b'),'a','a.id\x20=\x20i.FaxAccountId')['left_join'](_0xd1b6('0x5c'),'me',_0xd1b6('0x5d'))[_0xd1b6('0x57')]('fax_interaction_has_tags','it',_0xd1b6('0x5e'))['left_join']('tools_tags','t',_0xd1b6('0x5f'));var _0x1b6213=squel[_0xd1b6('0x60')]();var _0x86864f=[];var _0x3fb365=squel['expr']();var _0x515fe2;if(_0x392ed3['query']['search']){_0x515fe2=as[_0xd1b6('0x61')](_0x392ed3[_0xd1b6('0x41')][_0xd1b6('0x62')]);var _0x5b8c41=_0x515fe2['sqlOperator'];for(var _0x44047c=0x0;_0x44047c<_0x515fe2[_0xd1b6('0x63')][_0xd1b6('0x46')];_0x44047c++){var _0x2b1c2f=_0x515fe2['conditions'][_0x44047c];var _0x2775e3='i';var _0x385bef=_[_0xd1b6('0x64')](_0x108aa0,[_0xd1b6('0x2a'),_0x2b1c2f[_0xd1b6('0x4e')]]);if(!_0x385bef){switch(_0x2b1c2f[_0xd1b6('0x4e')]){case _0xd1b6('0x65'):if(_0x2b1c2f[_0xd1b6('0x66')]==0x1){_0x4cdf32['having']('`'+_0x2b1c2f[_0xd1b6('0x4e')]+_0xd1b6('0x67'));}else{_0x4cdf32[_0xd1b6('0x68')]('`'+_0x2b1c2f[_0xd1b6('0x4e')]+_0xd1b6('0x69'));}break;case _0xd1b6('0x6a'):if(_0x2b1c2f[_0xd1b6('0x6b')]===_0xd1b6('0x6c')){if(_0x2b1c2f[_0xd1b6('0x66')]['split']('\x20')['length']>0x1){_0x1b6213[_0x5b8c41](_0xd1b6('0x6d'),qs[_0xd1b6('0x6e')](_0x2b1c2f[_0xd1b6('0x66')]),null);}else{var _0x28d7e4='%'+_0x2b1c2f[_0xd1b6('0x66')]+'%';_0x1b6213[_0x5b8c41]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x28d7e4,_0x28d7e4,_0x28d7e4);}}else{_0x385bef=_[_0xd1b6('0x64')](_0x108aa0,[_0xd1b6('0x2a'),_0xd1b6('0x6f')]);_0x2b1c2f[_0xd1b6('0x4e')]='ContactId';_0x3a8689=as[_0xd1b6('0x70')](_0x2775e3,_0x385bef[_0xd1b6('0x3e')],_0x2b1c2f);_0x1b6213[_0x5b8c41](_0x3a8689[_0xd1b6('0x71')],_0x3a8689[_0xd1b6('0x66')][_0xd1b6('0x72')],_0x3a8689[_0xd1b6('0x66')]['end']);}break;case'Tag':var _0x50a64f=_0x2b1c2f[_0xd1b6('0x66')][_0xd1b6('0x30')](',')[_0xd1b6('0x2c')](function(_0x3fe0d5){return Number(_0x3fe0d5);});_0x50a64f[_0xd1b6('0x31')](function(_0x397fd0){_0x3fb365['or'](_0xd1b6('0x73'),'%,'+_0x397fd0+',%');});_0x86864f=_[_0xd1b6('0x74')](_0x86864f,_0x50a64f);break;case _0xd1b6('0x75'):if(_0x2b1c2f[_0xd1b6('0x6b')]===_0xd1b6('0x6c')){_0x1b6213[_0x5b8c41](_0xd1b6('0x76'),'%'+_0x2b1c2f['value']+'%',null);}else{_0x385bef=_[_0xd1b6('0x64')](_0x108aa0,[_0xd1b6('0x2a'),_0xd1b6('0x37')]);_0x2b1c2f['field']=_0xd1b6('0x37');_0x3a8689=as[_0xd1b6('0x70')](_0x2775e3,_0x385bef[_0xd1b6('0x3e')],_0x2b1c2f);_0x1b6213[_0x5b8c41](_0x3a8689['text'],_0x3a8689[_0xd1b6('0x66')][_0xd1b6('0x72')],_0x3a8689[_0xd1b6('0x66')][_0xd1b6('0x1d')]);}break;case _0xd1b6('0x77'):_0x3a8689=as['buildExpression']('me',null,_0x2b1c2f);_0x1b6213[_0x5b8c41](_0x3a8689[_0xd1b6('0x71')],_0x3a8689[_0xd1b6('0x66')][_0xd1b6('0x72')],_0x3a8689[_0xd1b6('0x66')][_0xd1b6('0x1d')]);break;}}else{var _0x3a8689=as[_0xd1b6('0x70')](_0x2775e3,_0x385bef[_0xd1b6('0x3e')],_0x2b1c2f);_0x1b6213[_0x5b8c41](_0x3a8689['text'],_0x3a8689[_0xd1b6('0x66')]['start'],_0x3a8689['value'][_0xd1b6('0x1d')]);}}}else{var _0x2ae5f2=_(_0x392ed3[_0xd1b6('0x41')])[_0xd1b6('0x78')]()[_0xd1b6('0x2c')](function(_0x3f61fa){return _[_0xd1b6('0x79')](_0x108aa0,['name',_0x3f61fa])?_0x3f61fa:undefined;})[_0xd1b6('0x7a')]()['value']();if(!_[_0xd1b6('0x7b')](_0x2ae5f2)){_0x2ae5f2[_0xd1b6('0x31')](function(_0x1ce731){if(_0x1ce731===_0xd1b6('0x7c')){_0x4cdf32[_0xd1b6('0x4b')](_0xd1b6('0x7d'),[][_0xd1b6('0x7e')](_0x392ed3[_0xd1b6('0x41')][_0x1ce731]));}else if(_0x1ce731===_0xd1b6('0x7f')){var _0x4479a6=JSON['parse'](_0x392ed3['query'][_0x1ce731])[_0xd1b6('0x80')];var _0x195416=JSON[_0xd1b6('0x81')](_0x392ed3[_0xd1b6('0x41')][_0x1ce731])['$lte'];_0x4cdf32['where'](_0xd1b6('0x82'),_0x4479a6,_0x195416);}else{if(_0x392ed3[_0xd1b6('0x41')][_0x1ce731]===_0xd1b6('0x83')){_0x4cdf32[_0xd1b6('0x4b')]('i.'+_0x1ce731+_0xd1b6('0x84'));}else{_0x4cdf32[_0xd1b6('0x4b')]('i.'+_0x1ce731+'\x20=\x20?',_0x392ed3['query'][_0x1ce731]);}}});}if(_0x392ed3[_0xd1b6('0x41')][_0xd1b6('0x85')]){if(_0x392ed3['query'][_0xd1b6('0x85')]==0x1){_0x4cdf32[_0xd1b6('0x68')](_0xd1b6('0x86'));}else{_0x4cdf32[_0xd1b6('0x68')]('`unreadMessages`\x20>\x200');}}if(_0x392ed3[_0xd1b6('0x41')][_0xd1b6('0x87')]){_0x86864f=_[_0xd1b6('0x88')](_0x392ed3[_0xd1b6('0x41')][_0xd1b6('0x87')])?_0x392ed3[_0xd1b6('0x41')][_0xd1b6('0x87')]:new Array(_0x392ed3[_0xd1b6('0x41')][_0xd1b6('0x87')]);_0x86864f[_0xd1b6('0x31')](function(_0x683967){_0x3fb365['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x683967+',%');});}if(_0x392ed3[_0xd1b6('0x41')][_0xd1b6('0x89')]){var _0x26b88c=_0x392ed3[_0xd1b6('0x41')][_0xd1b6('0x89')]['replace']('\x5c','\x5c\x5c')[_0xd1b6('0x8a')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x26b88c)){_0x1b6213['or'](_0xd1b6('0x8b'),_0x26b88c+'%')['or']('i.fax\x20LIKE\x20?',_0x26b88c+'%');}_0x1b6213['or'](_0xd1b6('0x8c'),_0x26b88c+'%');}}_0x4cdf32[_0xd1b6('0x4b')](_0x1b6213);_0x4cdf32[_0xd1b6('0x8d')](_0xd1b6('0x8e'));var _0x3e7dfb={'type':db[_0xd1b6('0x8f')][_0xd1b6('0x90')][_0xd1b6('0x91')],'raw':!![]};var _0x854436=_0x4cdf32[_0xd1b6('0x92')]();_0x854436[_0xd1b6('0x4e')](_0xd1b6('0x8e'));_0x854436[_0xd1b6('0x4e')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0xd1b6('0x65'));if(_0x2ccbe9[_0xd1b6('0x49')]){_0x2ccbe9[_0xd1b6('0x49')][_0xd1b6('0x31')](function(_0x3cf14e){var _0x1a59a9=_0x3cf14e[0x0]===_0xd1b6('0x93')?_0x3cf14e[0x0]:'i.'+_0x3cf14e[0x0];_0x4cdf32[_0xd1b6('0x49')](_0x1a59a9,_0x3cf14e[0x1]===_0xd1b6('0x94')?![]:!![]);});}if(!_['isEmpty'](_0x86864f)){_0x4cdf32[_0xd1b6('0x68')](_0x3fb365);_0x854436[_0xd1b6('0x4b')](_0xd1b6('0x95'),_0x86864f);}BPromise['resolve']()['then'](function(){if(!_0x515fe2){if(_0x392ed3[_0xd1b6('0x41')][_0xd1b6('0x7c')])return;_0x854436[_0xd1b6('0x4b')](_0xd1b6('0x96'));_0x4cdf32['where'](_0xd1b6('0x96'));return;}if(_0x392ed3['user'][_0xd1b6('0x97')]!==_0xd1b6('0x98'))return;return _0x392ed3[_0xd1b6('0x99')][_0xd1b6('0x9a')]({'attributes':['id'],'raw':!![]})[_0xd1b6('0x27')](function(_0x112968){if(_[_0xd1b6('0x7b')](_0x112968)){_0x854436[_0xd1b6('0x4b')](_0xd1b6('0x9b'));_0x4cdf32[_0xd1b6('0x4b')](_0xd1b6('0x9b'));}else{_0x854436[_0xd1b6('0x4b')](_0xd1b6('0x7d'),_['map'](_0x112968,'id'));_0x4cdf32[_0xd1b6('0x4b')](_0xd1b6('0x7d'),_[_0xd1b6('0x2c')](_0x112968,'id'));}});})[_0xd1b6('0x27')](function(){if(_0x392ed3[_0xd1b6('0x99')][_0xd1b6('0x97')]==='agent'&&!_0x515fe2&&!_0x392ed3[_0xd1b6('0x41')][_0xd1b6('0x7c')])return[];return db[_0xd1b6('0x9c')][_0xd1b6('0x41')](_0x854436['toString'](),_0x3e7dfb);})[_0xd1b6('0x27')](function(_0x3238b2){_0x4f2325[_0xd1b6('0x21')]=_0x3238b2[_0xd1b6('0x46')];if(_0x4f2325[_0xd1b6('0x21')]===0x0)return[];return db[_0xd1b6('0x9c')][_0xd1b6('0x41')](_0x411868['toString'](),_0x3e7dfb)[_0xd1b6('0x27')](function(_0x5d0a27){_0x33762c=_[_0xd1b6('0x9d')](_0x5d0a27,'id');_0x3e7dfb=_[_0xd1b6('0x9e')](_0x3e7dfb,{'model':db['FaxInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x392ed3[_0xd1b6('0x41')]['fields']){_0x2ccbe9['attributes']['forEach'](function(_0x22cfeb){_0x4cdf32[_0xd1b6('0x4e')]('i.'+_0x22cfeb);});}else{_0x4cdf32[_0xd1b6('0x4e')](_0xd1b6('0x9f'),'unreadMessages');_0x4cdf32[_0xd1b6('0x4e')](_0xd1b6('0xa0'),'Account.key');_0x4cdf32['field'](_0xd1b6('0xa1'),_0xd1b6('0xa2'));_0x4cdf32[_0xd1b6('0x4e')](_0xd1b6('0xa3'),_0xd1b6('0x93'));_0x4cdf32[_0xd1b6('0x4e')]('i.*');_0x4cdf32[_0xd1b6('0x4e')](_0xd1b6('0xa4'),_0xd1b6('0xa5'));_0x4cdf32['field'](_0xd1b6('0xa6'),_0xd1b6('0xa7'));_0x4cdf32[_0xd1b6('0x4e')](_0xd1b6('0xa8'),_0xd1b6('0xa9'));_0x4cdf32[_0xd1b6('0x4e')](_0xd1b6('0xaa'),_0xd1b6('0xab'));_0x4cdf32[_0xd1b6('0x4e')](_0xd1b6('0xac'),'Contact.mobile');_0x4cdf32[_0xd1b6('0x4e')](_0xd1b6('0xad'),_0xd1b6('0xae'));_0x4cdf32[_0xd1b6('0x4e')](_0xd1b6('0xaf'),_0xd1b6('0xb0'));_0x4cdf32[_0xd1b6('0x4e')](_0xd1b6('0xb1'),_0xd1b6('0xb2'));_0x4cdf32[_0xd1b6('0x4e')](_0xd1b6('0xb3'),_0xd1b6('0x2e'));}if(_0x2ccbe9[_0xd1b6('0x1f')])_0x4cdf32[_0xd1b6('0x1f')](_0x2ccbe9[_0xd1b6('0x1f')]);if(_0x2ccbe9['offset'])_0x4cdf32[_0xd1b6('0x22')](_0x2ccbe9[_0xd1b6('0x22')]);return db[_0xd1b6('0x9c')]['query'](_0x4cdf32['toString'](),_0x3e7dfb);})[_0xd1b6('0x27')](function(_0x5533a2){if(_0x5533a2[_0xd1b6('0x46')]>0x0)_0x27e692[_0xd1b6('0x4b')](_0xd1b6('0xb4'),_['map'](_0x5533a2,'id'));return db[_0xd1b6('0x9c')]['query'](_0x27e692['toString'](),_0x3e7dfb)['then'](function(_0x107c2a){var _0x4234e1=_[_0xd1b6('0xb5')](_0x107c2a,'FaxInteractionId');var _0x38e2b7=[];_0x5533a2[_0xd1b6('0x31')](function(_0xe9e207){_0x38e2b7[_0xd1b6('0xb6')](updateFaxInteraction(_0xe9e207,_0x33762c,_0x4234e1));});return BPromise[_0xd1b6('0xb7')](_0x38e2b7);});});})[_0xd1b6('0x27')](function(_0x53e81c){_0x4f2325[_0xd1b6('0xb8')]=_0x53e81c;return _0x4f2325;})[_0xd1b6('0x27')](respondWithFilteredResult(_0x43d4b1,_0x2ccbe9))[_0xd1b6('0x32')](handleError(_0x43d4b1,null));};exports[_0xd1b6('0xb9')]=function(_0x456041,_0x40e697){var _0x3b76cf={'raw':![],'where':{'id':_0x456041[_0xd1b6('0xba')]['id']}},_0xf2e67e={};_0xf2e67e[_0xd1b6('0x40')]=_[_0xd1b6('0x78')](db[_0xd1b6('0x3b')][_0xd1b6('0x3c')]);_0xf2e67e['query']=_['keys'](_0x456041[_0xd1b6('0x41')]);_0xf2e67e[_0xd1b6('0x42')]=_[_0xd1b6('0x43')](_0xf2e67e[_0xd1b6('0x40')],_0xf2e67e[_0xd1b6('0x41')]);_0x3b76cf[_0xd1b6('0x44')]=_[_0xd1b6('0x43')](_0xf2e67e[_0xd1b6('0x40')],qs[_0xd1b6('0x45')](_0x456041[_0xd1b6('0x41')]['fields']));_0x3b76cf[_0xd1b6('0x44')]=_0x3b76cf[_0xd1b6('0x44')][_0xd1b6('0x46')]?_0x3b76cf[_0xd1b6('0x44')]:_0xf2e67e['model'];if(_0x456041[_0xd1b6('0x41')][_0xd1b6('0xbb')]){_0x3b76cf[_0xd1b6('0xbc')]=[{'all':!![]}];}_0x3b76cf=_[_0xd1b6('0x9e')]({},_0x3b76cf,_0x456041[_0xd1b6('0xbd')]);return db[_0xd1b6('0x3b')][_0xd1b6('0x64')](_0x3b76cf)[_0xd1b6('0x27')](handleEntityNotFound(_0x40e697,null))[_0xd1b6('0x27')](respondWithResult(_0x40e697,null))[_0xd1b6('0x32')](handleError(_0x40e697,null));};exports['create']=function(_0x7280cd,_0x181508){return db['FaxInteraction'][_0xd1b6('0xbe')](_0x7280cd['body'],{})['then'](respondWithResult(_0x181508,0xc9))[_0xd1b6('0x32')](handleError(_0x181508,null));};exports['update']=function(_0x43efd0,_0x324835){if(_0x43efd0[_0xd1b6('0x77')]['id']){delete _0x43efd0[_0xd1b6('0x77')]['id'];}return db['FaxInteraction'][_0xd1b6('0x64')]({'where':{'id':_0x43efd0[_0xd1b6('0xba')]['id']}})[_0xd1b6('0x27')](handleEntityNotFound(_0x324835,null))[_0xd1b6('0x27')](saveUpdates(_0x43efd0['body'],null))['then'](respondWithResult(_0x324835,null))['catch'](handleError(_0x324835,null));};exports['destroy']=function(_0x434f3c,_0x5a6d03){return db[_0xd1b6('0x3b')][_0xd1b6('0x64')]({'where':{'id':_0x434f3c[_0xd1b6('0xba')]['id']}})[_0xd1b6('0x27')](handleEntityNotFound(_0x5a6d03,null))[_0xd1b6('0x27')](removeEntity(_0x5a6d03,null))[_0xd1b6('0x32')](handleError(_0x5a6d03,null));};exports[_0xd1b6('0xbf')]=function(_0x35a1aa,_0x4fe014){return db[_0xd1b6('0x3b')][_0xd1b6('0xbf')]()[_0xd1b6('0x27')](respondWithResult(_0x4fe014,null))['catch'](handleError(_0x4fe014,null));};exports[_0xd1b6('0xc0')]=function(_0x2efde9,_0x115918,_0x3390d2){return db[_0xd1b6('0xc1')][_0xd1b6('0x64')]({'where':{'id':_0x2efde9['params']['id']}})[_0xd1b6('0x27')](handleEntityNotFound(_0x115918,null))[_0xd1b6('0x27')](function(_0x812340){if(_0x812340){return _0x812340['addMessage'](_0x2efde9[_0xd1b6('0x77')][_0xd1b6('0xc2')],_[_0xd1b6('0xc3')](_0x2efde9['body'],[_0xd1b6('0xc2'),'id'])||{});}})[_0xd1b6('0x27')](respondWithResult(_0x115918,null))[_0xd1b6('0x32')](handleError(_0x115918,null));};exports[_0xd1b6('0xc4')]=function(_0x58b1e3,_0x1ec05f,_0x2a47af){var _0x3ba6aa={'raw':![],'where':{}};var _0x5f0da5={};var _0x2a808a={'count':0x0,'rows':[]};return db[_0xd1b6('0x3b')]['findOne']({'where':{'id':_0x58b1e3[_0xd1b6('0xba')]['id']}})['then'](handleEntityNotFound(_0x1ec05f,null))[_0xd1b6('0x27')](function(_0x12fcfa){if(_0x12fcfa){_0x5f0da5['model']=_['keys'](db['FaxMessage'][_0xd1b6('0x3c')]);_0x5f0da5[_0xd1b6('0x41')]=_['keys'](_0x58b1e3[_0xd1b6('0x41')]);_0x5f0da5[_0xd1b6('0x42')]=_[_0xd1b6('0x43')](_0x5f0da5['model'],_0x5f0da5['query']);_0x3ba6aa[_0xd1b6('0x44')]=_[_0xd1b6('0x43')](_0x5f0da5[_0xd1b6('0x40')],qs[_0xd1b6('0x45')](_0x58b1e3['query']['fields']));_0x3ba6aa['attributes']=_0x3ba6aa['attributes'][_0xd1b6('0x46')]?_0x3ba6aa[_0xd1b6('0x44')]:_0x5f0da5[_0xd1b6('0x40')];if(!_0x58b1e3[_0xd1b6('0x41')]['hasOwnProperty'](_0xd1b6('0x48'))){_0x3ba6aa[_0xd1b6('0x1f')]=qs[_0xd1b6('0x1f')](_0x58b1e3[_0xd1b6('0x41')][_0xd1b6('0x1f')]);_0x3ba6aa[_0xd1b6('0x22')]=qs[_0xd1b6('0x22')](_0x58b1e3[_0xd1b6('0x41')][_0xd1b6('0x22')]);}_0x3ba6aa[_0xd1b6('0x49')]=qs['sort'](_0x58b1e3[_0xd1b6('0x41')][_0xd1b6('0x4a')]);_0x3ba6aa['where']=qs[_0xd1b6('0x42')](_[_0xd1b6('0x4c')](_0x58b1e3[_0xd1b6('0x41')],_0x5f0da5[_0xd1b6('0x42')]));_0x3ba6aa['where'][_0xd1b6('0xc5')]=_0x12fcfa['id'];if(_0x58b1e3['query'][_0xd1b6('0x89')]){_0x3ba6aa[_0xd1b6('0x4b')]=_[_0xd1b6('0x9e')](_0x3ba6aa['where'],{'$or':_['map'](_0x3ba6aa[_0xd1b6('0x44')],function(_0x28af7b){var _0x404ffa={};_0x404ffa[_0x28af7b]={'$like':'%'+_0x58b1e3[_0xd1b6('0x41')]['filter']+'%'};return _0x404ffa;})});}if(_0x58b1e3[_0xd1b6('0x41')][_0xd1b6('0x80')]){var _0x2fbd74=_0x58b1e3[_0xd1b6('0x41')]['$gte'][_0xd1b6('0x30')](',');var _0x11ee21={};_0x11ee21[_0x2fbd74[0x0]]={'$gte':moment(_0x2fbd74[0x1])[_0xd1b6('0xc6')](_0xd1b6('0xc7'))};_0x3ba6aa['where']=_[_0xd1b6('0x9e')](_0x3ba6aa[_0xd1b6('0x4b')],_0x11ee21);}_0x3ba6aa=_['merge']({},_0x3ba6aa,_0x58b1e3[_0xd1b6('0xbd')]);return db[_0xd1b6('0xc1')][_0xd1b6('0x21')]({'where':_0x3ba6aa[_0xd1b6('0x4b')]})['then'](function(_0xd1826e){_0x2a808a['count']=_0xd1826e;if(_0x58b1e3[_0xd1b6('0x41')][_0xd1b6('0xbb')]){_0x3ba6aa[_0xd1b6('0xbc')]=[{'all':!![]}];}return db[_0xd1b6('0xc1')][_0xd1b6('0xc8')](_0x3ba6aa);})[_0xd1b6('0x27')](function(_0x2279ca){_0x2a808a[_0xd1b6('0xb8')]=_0x2279ca;return _0x2a808a;});}})['then'](respondWithFilteredResult(_0x1ec05f,_0x3ba6aa))['catch'](handleError(_0x1ec05f,null));};exports[_0xd1b6('0xc9')]=function(_0x57c3e4,_0x4d4d9e,_0x23e7d5){return db['FaxInteraction'][_0xd1b6('0x64')]({'where':{'id':_0x57c3e4[_0xd1b6('0xba')]['id']}})['then'](handleEntityNotFound(_0x4d4d9e,null))[_0xd1b6('0x27')](function(_0x335635){if(_0x335635){return _0x335635['setTags'](_0x57c3e4[_0xd1b6('0x77')][_0xd1b6('0xc2')],_[_0xd1b6('0xc3')](_0x57c3e4[_0xd1b6('0x77')],[_0xd1b6('0xc2'),'id'])||{})['spread'](function(){return db[_0xd1b6('0xca')][_0xd1b6('0xc8')]({'attributes':['id',_0xd1b6('0x2a'),_0xd1b6('0x4f')],'where':{'id':_0x57c3e4[_0xd1b6('0x77')][_0xd1b6('0xc2')]}});})[_0xd1b6('0x27')](function(_0x44c58c){socket[_0xd1b6('0xcb')]('faxInteractionTags:save',{'id':Number(_0x57c3e4[_0xd1b6('0xba')]['id']),'tags':_0x44c58c||[]});return{'id':Number(_0x57c3e4[_0xd1b6('0xba')]['id']),'tags':_0x44c58c||[]};});}})[_0xd1b6('0x27')](respondWithResult(_0x4d4d9e,null))['catch'](handleError(_0x4d4d9e,null));};exports[_0xd1b6('0xcc')]=function(_0x4ef225,_0x4f8540,_0x4f0358){return db[_0xd1b6('0x3b')]['find']({'where':{'id':_0x4ef225[_0xd1b6('0xba')]['id']}})[_0xd1b6('0x27')](handleEntityNotFound(_0x4f8540,null))[_0xd1b6('0x27')](function(_0x261eaf){if(_0x261eaf){return _0x261eaf[_0xd1b6('0xcc')](_0x4ef225[_0xd1b6('0x41')][_0xd1b6('0xc2')]);}})[_0xd1b6('0x27')](respondWithStatusCode(_0x4f8540,null))[_0xd1b6('0x32')](handleError(_0x4f8540,null));};exports[_0xd1b6('0xcd')]=function(_0x27d107,_0x55e7f1){var _0x4eebcf=moment()[_0xd1b6('0xce')]()['toString']();var _0x3b8b02=path['join'](config[_0xd1b6('0xcf')],_0xd1b6('0xd0'),_0xd1b6('0xd1'),_0xd1b6('0xd2'));var _0x5b9fd2=path[_0xd1b6('0xd3')](config['root'],'server',_0xd1b6('0xd1'),_0xd1b6('0xd4'));var _0x53f96b=path[_0xd1b6('0xd3')](_0x3b8b02,_0x4eebcf);var _0xbf9c12=util['format'](_0xd1b6('0xd5'),_0x27d107['params']['id'],_0x4eebcf);var _0x4c81e7=path[_0xd1b6('0xd3')](_0x3b8b02,_0xbf9c12);var _0x1f7add=[];_0x1f7add[_0xd1b6('0xb6')]({'model':db[_0xd1b6('0xd6')],'as':_0xd1b6('0xd6'),'raw':!![]});var _0x89dad5=[{'model':db[_0xd1b6('0xc1')],'as':'Messages','attributes':['id',_0xd1b6('0x77'),_0xd1b6('0x7f')],'include':_0x1f7add}];return db[_0xd1b6('0x3b')][_0xd1b6('0x64')]({'where':{'id':_0x27d107['params']['id']},'include':_0x89dad5})[_0xd1b6('0x27')](handleEntityNotFound(_0x55e7f1,null))[_0xd1b6('0x27')](function(_0x5457bd){if(_0x5457bd&&_0x5457bd[_0xd1b6('0xd7')]){var _0x122f2e=_0x5457bd[_0xd1b6('0xd8')]({'plain':!![]});fs[_0xd1b6('0xd9')](_0x53f96b);for(var _0x364cb2=0x0;_0x364cb2<_0x122f2e['Messages'][_0xd1b6('0x46')];_0x364cb2++){var _0xf6d228=_0x122f2e[_0xd1b6('0xd7')][_0x364cb2][_0xd1b6('0xd6')];if(_0xf6d228){var _0x4bfd05=path[_0xd1b6('0xd3')](_0x5b9fd2,_0xf6d228[_0xd1b6('0xda')]);if(fs[_0xd1b6('0xdb')](_0x4bfd05)){fs['createReadStream'](_0x4bfd05)[_0xd1b6('0xdc')](fs[_0xd1b6('0xdd')](path[_0xd1b6('0xd3')](_0x53f96b,_0xf6d228[_0xd1b6('0xda')])));}}}return BPromise[_0xd1b6('0xde')]()[_0xd1b6('0x27')](function(){return new BPromise(function(_0xa2952c,_0x5bf7f4){zipdir(_0x53f96b,{'saveTo':_0x4c81e7},function(_0x4538e2,_0x426802){if(_0x4538e2)return _0x5bf7f4(_0x4538e2);return _0xa2952c(_0x426802);});})[_0xd1b6('0x27')](function(){return new BPromise(function(_0xda81a5,_0x336294){rimraf(_0x53f96b,function(_0x913437){if(_0x913437)_0x336294(_0x913437);return _0xda81a5();});});})[_0xd1b6('0x27')](function(){return _0x55e7f1[_0xd1b6('0xcd')](_0x4c81e7,_0xbf9c12,function(_0x18de07){if(_0x18de07){console[_0xd1b6('0xdf')](_0xd1b6('0xe0'),_0x18de07);}else{fs[_0xd1b6('0xe1')](_0x4c81e7);}});});});}else{return _0x55e7f1[_0xd1b6('0x1b')](0xc8);}})[_0xd1b6('0x32')](handleError(_0x55e7f1,null));};
\ No newline at end of file
index 625846c..72ade57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9050=['FaxInteraction','FaxMessage','setMaxListeners','save','update','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','emit','catch','hasOwnProperty','events','../../mysqldb'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x9050,0x130));var _0x0905=function(_0x3417fd,_0x568785){_0x3417fd=_0x3417fd-0x0;var _0x287812=_0x9050[_0x3417fd];return _0x287812;};'use strict';var EventEmitter=require(_0x0905('0x0'));var FaxInteraction=require(_0x0905('0x1'))['db'][_0x0905('0x2')];var FaxMessage=require(_0x0905('0x1'))['db'][_0x0905('0x3')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents[_0x0905('0x4')](0x0);var events={'afterCreate':_0x0905('0x5'),'afterUpdate':_0x0905('0x6'),'afterDestroy':'remove'};function emitEvent(_0x2799f7){return function(_0x5dbcb7,_0x366af4,_0x1bb24a){_0x5dbcb7[_0x0905('0x7')]({'attributes':['id'],'raw':!![]})[_0x0905('0x8')](function(_0x4dbfc5){_0x5dbcb7[_0x0905('0x9')](_0x0905('0xa'),_0x4dbfc5[_0x0905('0xb')](function(_0x35407d){return{'id':_0x35407d['id']};}));return FaxMessage[_0x0905('0xc')]({'where':{'FaxInteractionId':_0x5dbcb7['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x5bd8a4){_0x5dbcb7[_0x0905('0x9')](_0x0905('0xd'),_0x5bd8a4['length']);FaxInteractionEvents[_0x0905('0xe')](_0x2799f7+':'+_0x5dbcb7['id'],_0x5dbcb7);FaxInteractionEvents[_0x0905('0xe')](_0x2799f7,_0x5dbcb7);_0x1bb24a(null);})[_0x0905('0xf')](_0x1bb24a(null));};}for(var e in events){if(events[_0x0905('0x10')](e)){var event=events[e];FaxInteraction['hook'](e,emitEvent(event));}}module['exports']=FaxInteractionEvents;
\ No newline at end of file
+var _0xc556=['emit','hasOwnProperty','hook','FaxInteraction','FaxMessage','save','remove','getUsers','setDataValue','map','findAll','then','length'];(function(_0x41068f,_0x350e6f){var _0xff0dd6=function(_0xb5ca81){while(--_0xb5ca81){_0x41068f['push'](_0x41068f['shift']());}};_0xff0dd6(++_0x350e6f);}(_0xc556,0x148));var _0x6c55=function(_0x2726ed,_0x2a146a){_0x2726ed=_0x2726ed-0x0;var _0x40c673=_0xc556[_0x2726ed];return _0x40c673;};'use strict';var EventEmitter=require('events');var FaxInteraction=require('../../mysqldb')['db'][_0x6c55('0x0')];var FaxMessage=require('../../mysqldb')['db'][_0x6c55('0x1')];var FaxInteractionEvents=new EventEmitter();FaxInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x6c55('0x2'),'afterUpdate':'update','afterDestroy':_0x6c55('0x3')};function emitEvent(_0x150977){return function(_0x570c06,_0x45486b,_0x1d2123){_0x570c06[_0x6c55('0x4')]({'attributes':['id'],'raw':!![]})['then'](function(_0x41fe1c){_0x570c06[_0x6c55('0x5')]('Users',_0x41fe1c[_0x6c55('0x6')](function(_0x6cf97c){return{'id':_0x6cf97c['id']};}));return FaxMessage[_0x6c55('0x7')]({'where':{'FaxInteractionId':_0x570c06['id'],'direction':'in','read':![]},'raw':!![]});})[_0x6c55('0x8')](function(_0x5b4242){_0x570c06[_0x6c55('0x5')]('unreadMessages',_0x5b4242[_0x6c55('0x9')]);FaxInteractionEvents['emit'](_0x150977+':'+_0x570c06['id'],_0x570c06);FaxInteractionEvents[_0x6c55('0xa')](_0x150977,_0x570c06);_0x1d2123(null);})['catch'](_0x1d2123(null));};}for(var e in events){if(events[_0x6c55('0xb')](e)){var event=events[e];FaxInteraction[_0x6c55('0xc')](e,emitEvent(event));}}module['exports']=FaxInteractionEvents;
\ No newline at end of file
index edb186e..2c209cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34be=['../../config/environment','exports','FaxInteraction','changed','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','util','rimraf'];(function(_0x2783e9,_0x330637){var _0x40b07b=function(_0x33d46a){while(--_0x33d46a){_0x2783e9['push'](_0x2783e9['shift']());}};_0x40b07b(++_0x330637);}(_0x34be,0x139));var _0xe34b=function(_0x481af3,_0x483fac){_0x481af3=_0x481af3-0x0;var _0x3354ea=_0x34be[_0x481af3];return _0x3354ea;};'use strict';var _=require('lodash');var util=require(_0xe34b('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xe34b('0x1'));var config=require(_0xe34b('0x2'));var attributes=require('./faxInteraction.attributes');module[_0xe34b('0x3')]=function(_0x5f4c78,_0x2c7e9d){return _0x5f4c78['define'](_0xe34b('0x4'),attributes,{'tableName':'fax_interactions','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3bcd66,_0x267b8f,_0x14a9c9){if(_0x3bcd66[_0xe34b('0x5')](_0xe34b('0x6'))){_0x3bcd66[_0xe34b('0x7')]=moment()['format'](_0xe34b('0x8'));}_0x14a9c9(null,_0x3bcd66);}}});};
\ No newline at end of file
+var _0x5848=['closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./faxInteraction.attributes','exports','define','FaxInteraction','fax_interactions','closed'];(function(_0x35885a,_0x42fed7){var _0xe86249=function(_0x98edb3){while(--_0x98edb3){_0x35885a['push'](_0x35885a['shift']());}};_0xe86249(++_0x42fed7);}(_0x5848,0x17d));var _0x8584=function(_0xd1805f,_0x5405a2){_0xd1805f=_0xd1805f-0x0;var _0x42df44=_0x5848[_0xd1805f];return _0x42df44;};'use strict';var _=require(_0x8584('0x0'));var util=require(_0x8584('0x1'));var logger=require(_0x8584('0x2'))(_0x8584('0x3'));var moment=require(_0x8584('0x4'));var BPromise=require(_0x8584('0x5'));var rp=require(_0x8584('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x8584('0x7'));var config=require(_0x8584('0x8'));var attributes=require(_0x8584('0x9'));module[_0x8584('0xa')]=function(_0x32d68a,_0x5278c3){return _0x32d68a[_0x8584('0xb')](_0x8584('0xc'),attributes,{'tableName':_0x8584('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x643401,_0x2f3488,_0x31a673){if(_0x643401['changed'](_0x8584('0xe'))){_0x643401[_0x8584('0xf')]=moment()[_0x8584('0x10')](_0x8584('0x11'));}_0x31a673(null,_0x643401);}}});};
\ No newline at end of file
index adb38e8..e2cd9a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcace=['FaxInteraction,\x20%s,\x20%s','message','result','catch','FaxInteraction','update','body','options','raw','where','UpdateFaxInteraction','AddTagsToFaxInteraction','find','omit','spread','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','redis','defaults','socket.io-emitter','./faxInteraction.socket','request','then','info','debug','FaxInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x442679,_0x387550){var _0x282eb3=function(_0x5a4d27){while(--_0x5a4d27){_0x442679['push'](_0x442679['shift']());}};_0x282eb3(++_0x387550);}(_0xcace,0x18c));var _0xecac=function(_0x20a005,_0x3267c4){_0x20a005=_0x20a005-0x0;var _0x318723=_0xcace[_0x20a005];return _0x318723;};'use strict';var _=require(_0xecac('0x0'));var util=require('util');var moment=require(_0xecac('0x1'));var BPromise=require(_0xecac('0x2'));var rs=require(_0xecac('0x3'));var fs=require('fs');var Redis=require(_0xecac('0x4'));var db=require(_0xecac('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xecac('0x6'))('rpc');var config=require(_0xecac('0x7'));var jayson=require(_0xecac('0x8'));var client=jayson[_0xecac('0x9')]['http']({'port':0x232a});config[_0xecac('0xa')]=_[_0xecac('0xb')](config[_0xecac('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xecac('0xc'))(new Redis(config[_0xecac('0xa')]));require(_0xecac('0xd'))['register'](socket);function respondWithRpcPromise(_0xd8eaab,_0x25b756,_0x19ff1d){return new BPromise(function(_0x3f9f41,_0x564e0f){return client[_0xecac('0xe')](_0xd8eaab,_0x19ff1d)[_0xecac('0xf')](function(_0x422f17){logger[_0xecac('0x10')]('FaxInteraction,\x20%s,\x20%s',_0x25b756,'request\x20sent');logger[_0xecac('0x11')](_0xecac('0x12'),_0x25b756,'request\x20sent',JSON[_0xecac('0x13')](_0x422f17));if(_0x422f17[_0xecac('0x14')]){if(_0x422f17[_0xecac('0x14')][_0xecac('0x15')]===0x1f4){logger[_0xecac('0x14')]('FaxInteraction,\x20%s,\x20%s',_0x25b756,_0x422f17[_0xecac('0x14')]['message']);return _0x564e0f(_0x422f17['error']['message']);}logger['error'](_0xecac('0x16'),_0x25b756,_0x422f17['error']['message']);return _0x3f9f41(_0x422f17[_0xecac('0x14')][_0xecac('0x17')]);}else{logger[_0xecac('0x10')](_0xecac('0x16'),_0x25b756,'request\x20sent');_0x3f9f41(_0x422f17[_0xecac('0x18')]['message']);}})[_0xecac('0x19')](function(_0x25d81b){logger['error']('FaxInteraction,\x20%s,\x20%s',_0x25b756,_0x25d81b);_0x564e0f(_0x25d81b);});});}exports['UpdateFaxInteraction']=function(_0x162745){var _0x3f5c42=this;return new Promise(function(_0x1ef928,_0x2c698f){return db[_0xecac('0x1a')][_0xecac('0x1b')](_0x162745[_0xecac('0x1c')],{'raw':_0x162745[_0xecac('0x1d')]?_0x162745[_0xecac('0x1d')][_0xecac('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x162745['options']?_0x162745[_0xecac('0x1d')][_0xecac('0x1f')]||null:null,'attributes':_0x162745[_0xecac('0x1d')]?_0x162745[_0xecac('0x1d')]['attributes']||null:null,'limit':_0x162745[_0xecac('0x1d')]?_0x162745[_0xecac('0x1d')]['limit']||null:null})['then'](function(_0x5dcb21){logger[_0xecac('0x10')]('UpdateFaxInteraction',_0x162745);logger[_0xecac('0x11')](_0xecac('0x20'),_0x162745,JSON[_0xecac('0x13')](_0x5dcb21));_0x1ef928(_0x5dcb21);})[_0xecac('0x19')](function(_0x55ed1f){logger[_0xecac('0x14')](_0xecac('0x20'),_0x55ed1f[_0xecac('0x17')],_0x162745);_0x2c698f(_0x3f5c42[_0xecac('0x14')](0x1f4,_0x55ed1f[_0xecac('0x17')]));});});};exports[_0xecac('0x21')]=function(_0x227f2f){return new Promise(function(_0x1147af,_0x38cfe0){return db['FaxInteraction'][_0xecac('0x22')]({'where':_0x227f2f[_0xecac('0x1d')]?_0x227f2f['options'][_0xecac('0x1f')]||null:null})[_0xecac('0xf')](function(_0x5ac926){if(_0x5ac926){return _0x5ac926['addTags'](_0x227f2f[_0xecac('0x1c')]['ids'],_[_0xecac('0x23')](_0x227f2f['body'],['ids','id'])||{});}})[_0xecac('0x24')](function(_0x68dcb1){logger[_0xecac('0x10')](_0xecac('0x25'),_0x227f2f);logger[_0xecac('0x11')](_0xecac('0x25'),_0x227f2f,JSON['stringify'](_0x68dcb1));_0x1147af(_0x68dcb1);})[_0xecac('0x19')](function(_0x27dc59){logger[_0xecac('0x14')]('AddTags',_0x27dc59[_0xecac('0x17')],_0x227f2f);_0x38cfe0(_this[_0xecac('0x14')](0x1f4,_0x27dc59[_0xecac('0x17')]));});});};
\ No newline at end of file
+var _0x00e2=['request\x20sent','error','code','message','result','catch','FaxInteraction','update','options','raw','attributes','UpdateFaxInteraction','stringify','find','where','addTags','body','ids','omit','AddTags','lodash','moment','bluebird','randomstring','../../config/environment','jayson/promise','client','http','defaults','socket.io-emitter','redis','./faxInteraction.socket','register','request','then','info','FaxInteraction,\x20%s,\x20%s','debug','FaxInteraction,\x20%s,\x20%s,\x20%s'];(function(_0x374f60,_0x551010){var _0x454eda=function(_0x5c096e){while(--_0x5c096e){_0x374f60['push'](_0x374f60['shift']());}};_0x454eda(++_0x551010);}(_0x00e2,0xd7));var _0x200e=function(_0x47408e,_0x481428){_0x47408e=_0x47408e-0x0;var _0x1636bc=_0x00e2[_0x47408e];return _0x1636bc;};'use strict';var _=require(_0x200e('0x0'));var util=require('util');var moment=require(_0x200e('0x1'));var BPromise=require(_0x200e('0x2'));var rs=require(_0x200e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x200e('0x4'));var jayson=require(_0x200e('0x5'));var client=jayson[_0x200e('0x6')][_0x200e('0x7')]({'port':0x232a});config['redis']=_[_0x200e('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x200e('0x9'))(new Redis(config[_0x200e('0xa')]));require(_0x200e('0xb'))[_0x200e('0xc')](socket);function respondWithRpcPromise(_0x28b8bb,_0x5ce814,_0x5f5917){return new BPromise(function(_0x36b1bf,_0xf3773){return client[_0x200e('0xd')](_0x28b8bb,_0x5f5917)[_0x200e('0xe')](function(_0x3cd456){logger[_0x200e('0xf')](_0x200e('0x10'),_0x5ce814,'request\x20sent');logger[_0x200e('0x11')](_0x200e('0x12'),_0x5ce814,_0x200e('0x13'),JSON['stringify'](_0x3cd456));if(_0x3cd456[_0x200e('0x14')]){if(_0x3cd456[_0x200e('0x14')][_0x200e('0x15')]===0x1f4){logger[_0x200e('0x14')](_0x200e('0x10'),_0x5ce814,_0x3cd456['error'][_0x200e('0x16')]);return _0xf3773(_0x3cd456[_0x200e('0x14')][_0x200e('0x16')]);}logger[_0x200e('0x14')](_0x200e('0x10'),_0x5ce814,_0x3cd456[_0x200e('0x14')][_0x200e('0x16')]);return _0x36b1bf(_0x3cd456[_0x200e('0x14')][_0x200e('0x16')]);}else{logger[_0x200e('0xf')]('FaxInteraction,\x20%s,\x20%s',_0x5ce814,_0x200e('0x13'));_0x36b1bf(_0x3cd456[_0x200e('0x17')]['message']);}})[_0x200e('0x18')](function(_0x21d6bd){logger[_0x200e('0x14')]('FaxInteraction,\x20%s,\x20%s',_0x5ce814,_0x21d6bd);_0xf3773(_0x21d6bd);});});}exports['UpdateFaxInteraction']=function(_0x5058f9){var _0x509ee5=this;return new Promise(function(_0x62c0b,_0x2312a1){return db[_0x200e('0x19')][_0x200e('0x1a')](_0x5058f9['body'],{'raw':_0x5058f9['options']?_0x5058f9[_0x200e('0x1b')][_0x200e('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5058f9['options']?_0x5058f9[_0x200e('0x1b')]['where']||null:null,'attributes':_0x5058f9[_0x200e('0x1b')]?_0x5058f9[_0x200e('0x1b')][_0x200e('0x1d')]||null:null,'limit':_0x5058f9[_0x200e('0x1b')]?_0x5058f9['options']['limit']||null:null})['then'](function(_0x4695a8){logger[_0x200e('0xf')]('UpdateFaxInteraction',_0x5058f9);logger[_0x200e('0x11')](_0x200e('0x1e'),_0x5058f9,JSON[_0x200e('0x1f')](_0x4695a8));_0x62c0b(_0x4695a8);})[_0x200e('0x18')](function(_0x19ac6f){logger['error']('UpdateFaxInteraction',_0x19ac6f[_0x200e('0x16')],_0x5058f9);_0x2312a1(_0x509ee5[_0x200e('0x14')](0x1f4,_0x19ac6f[_0x200e('0x16')]));});});};exports['AddTagsToFaxInteraction']=function(_0x20c0d8){return new Promise(function(_0x23e051,_0x2df828){return db[_0x200e('0x19')][_0x200e('0x20')]({'where':_0x20c0d8['options']?_0x20c0d8['options'][_0x200e('0x21')]||null:null})[_0x200e('0xe')](function(_0x40b6a5){if(_0x40b6a5){return _0x40b6a5[_0x200e('0x22')](_0x20c0d8[_0x200e('0x23')][_0x200e('0x24')],_[_0x200e('0x25')](_0x20c0d8[_0x200e('0x23')],[_0x200e('0x24'),'id'])||{});}})['spread'](function(_0x5b8f06){logger[_0x200e('0xf')](_0x200e('0x26'),_0x20c0d8);logger[_0x200e('0x11')](_0x200e('0x26'),_0x20c0d8,JSON['stringify'](_0x5b8f06));_0x23e051(_0x5b8f06);})[_0x200e('0x18')](function(_0x215f06){logger[_0x200e('0x14')]('AddTags',_0x215f06[_0x200e('0x16')],_0x20c0d8);_0x2df828(_this['error'](0x1f4,_0x215f06[_0x200e('0x16')]));});});};
\ No newline at end of file
index 29f92e2..2c7a209 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88d0=['register','length','./faxInteraction.events','remove','update','emit','removeListener'];(function(_0x2304ce,_0x5e2bb0){var _0x503964=function(_0x13e9f2){while(--_0x13e9f2){_0x2304ce['push'](_0x2304ce['shift']());}};_0x503964(++_0x5e2bb0);}(_0x88d0,0x1ad));var _0x088d=function(_0xd22d95,_0xc59f8f){_0xd22d95=_0xd22d95-0x0;var _0x15d7a3=_0x88d0[_0xd22d95];return _0x15d7a3;};'use strict';var FaxInteractionEvents=require(_0x088d('0x0'));var events=['save',_0x088d('0x1'),_0x088d('0x2')];function createListener(_0x572298,_0x2e07c6){return function(_0x414c5b){_0x2e07c6[_0x088d('0x3')](_0x572298,_0x414c5b);};}function removeListener(_0x37e3b1,_0x49435d){return function(){FaxInteractionEvents[_0x088d('0x4')](_0x37e3b1,_0x49435d);};}exports[_0x088d('0x5')]=function(_0x4d85e8){for(var _0x255f1a=0x0,_0x150531=events[_0x088d('0x6')];_0x255f1a<_0x150531;_0x255f1a++){var _0x18ca72=events[_0x255f1a];var _0x192679=createListener('faxInteraction:'+_0x18ca72,_0x4d85e8);FaxInteractionEvents['on'](_0x18ca72,_0x192679);}};
\ No newline at end of file
+var _0x43a2=['register','length','faxInteraction:','update','emit','removeListener'];(function(_0x4235e3,_0x3b63dc){var _0x2907c1=function(_0x6aadfa){while(--_0x6aadfa){_0x4235e3['push'](_0x4235e3['shift']());}};_0x2907c1(++_0x3b63dc);}(_0x43a2,0x69));var _0x243a=function(_0x5c299f,_0x59ea94){_0x5c299f=_0x5c299f-0x0;var _0x5f1aa4=_0x43a2[_0x5c299f];return _0x5f1aa4;};'use strict';var FaxInteractionEvents=require('./faxInteraction.events');var events=['save','remove',_0x243a('0x0')];function createListener(_0x32cad0,_0x30a072){return function(_0x45a48e){_0x30a072[_0x243a('0x1')](_0x32cad0,_0x45a48e);};}function removeListener(_0x12be63,_0x33acc1){return function(){FaxInteractionEvents[_0x243a('0x2')](_0x12be63,_0x33acc1);};}exports[_0x243a('0x3')]=function(_0x4192f3){for(var _0x32fdc4=0x0,_0x19c01f=events[_0x243a('0x4')];_0x32fdc4<_0x19c01f;_0x32fdc4++){var _0x33b955=events[_0x32fdc4];var _0x15d21f=createListener(_0x243a('0x5')+_0x33b955,_0x4192f3);FaxInteractionEvents['on'](_0x33b955,_0x15d21f);}};
\ No newline at end of file
index 7815b17..a7c821e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6e7=['getMessages','/:id/download','post','create','addMessage','tracked','fax','faxinteraction:addtags','addTags','faxinteraction:update','update','delete','faxinteraction:destroy','destroy','/:id/tags','removeTags','exports','multer','util','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','/:id/messages'];(function(_0x5d2b84,_0x41fdff){var _0x24ad42=function(_0x35b48f){while(--_0x35b48f){_0x5d2b84['push'](_0x5d2b84['shift']());}};_0x24ad42(++_0x41fdff);}(_0xc6e7,0x1a4));var _0x7c6e=function(_0x2fd5f6,_0x4d29b8){_0x2fd5f6=_0x2fd5f6-0x0;var _0x529526=_0xc6e7[_0x2fd5f6];return _0x529526;};'use strict';var multer=require(_0x7c6e('0x0'));var util=require(_0x7c6e('0x1'));var path=require('path');var timeout=require(_0x7c6e('0x2'));var express=require(_0x7c6e('0x3'));var router=express[_0x7c6e('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x7c6e('0x5'));var interaction=require(_0x7c6e('0x6'));var config=require(_0x7c6e('0x7'));var controller=require('./faxInteraction.controller');router[_0x7c6e('0x8')]('/',auth[_0x7c6e('0x9')](),controller[_0x7c6e('0xa')]);router[_0x7c6e('0x8')]('/describe',auth[_0x7c6e('0x9')](),controller[_0x7c6e('0xb')]);router['get'](_0x7c6e('0xc'),auth[_0x7c6e('0x9')](),controller['show']);router[_0x7c6e('0x8')](_0x7c6e('0xd'),auth[_0x7c6e('0x9')](),controller[_0x7c6e('0xe')]);router[_0x7c6e('0x8')](_0x7c6e('0xf'),auth[_0x7c6e('0x9')](),controller['download']);router[_0x7c6e('0x10')]('/',auth['isAuthenticated'](),controller[_0x7c6e('0x11')]);router[_0x7c6e('0x10')]('/:id/messages',auth['isAuthenticated'](),controller[_0x7c6e('0x12')]);router[_0x7c6e('0x10')]('/:id/tags',auth[_0x7c6e('0x9')](),interaction[_0x7c6e('0x13')](_0x7c6e('0x14'),_0x7c6e('0x15')),controller[_0x7c6e('0x16')]);router['put'](_0x7c6e('0xc'),auth[_0x7c6e('0x9')](),interaction[_0x7c6e('0x13')](_0x7c6e('0x14'),_0x7c6e('0x17')),controller[_0x7c6e('0x18')]);router[_0x7c6e('0x19')](_0x7c6e('0xc'),auth[_0x7c6e('0x9')](),interaction['tracked'](_0x7c6e('0x14'),_0x7c6e('0x1a')),controller[_0x7c6e('0x1b')]);router[_0x7c6e('0x19')](_0x7c6e('0x1c'),auth[_0x7c6e('0x9')](),controller[_0x7c6e('0x1d')]);module[_0x7c6e('0x1e')]=router;
\ No newline at end of file
+var _0xdffe=['exports','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./faxInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','create','/:id/tags','tracked','fax','addTags','put','faxinteraction:update','faxinteraction:destroy','destroy','delete'];(function(_0x43c0e3,_0x5b1e8c){var _0x2d7969=function(_0x5a8540){while(--_0x5a8540){_0x43c0e3['push'](_0x43c0e3['shift']());}};_0x2d7969(++_0x5b1e8c);}(_0xdffe,0x1d2));var _0xedff=function(_0x336082,_0x5c364b){_0x336082=_0x336082-0x0;var _0x2ea2eb=_0xdffe[_0x336082];return _0x2ea2eb;};'use strict';var multer=require('multer');var util=require(_0xedff('0x0'));var path=require('path');var timeout=require(_0xedff('0x1'));var express=require(_0xedff('0x2'));var router=express[_0xedff('0x3')]();var fs_extra=require(_0xedff('0x4'));var auth=require(_0xedff('0x5'));var interaction=require(_0xedff('0x6'));var config=require('../../config/environment');var controller=require(_0xedff('0x7'));router[_0xedff('0x8')]('/',auth[_0xedff('0x9')](),controller[_0xedff('0xa')]);router['get'](_0xedff('0xb'),auth[_0xedff('0x9')](),controller[_0xedff('0xc')]);router[_0xedff('0x8')](_0xedff('0xd'),auth[_0xedff('0x9')](),controller[_0xedff('0xe')]);router[_0xedff('0x8')](_0xedff('0xf'),auth[_0xedff('0x9')](),controller[_0xedff('0x10')]);router[_0xedff('0x8')](_0xedff('0x11'),auth[_0xedff('0x9')](),controller[_0xedff('0x12')]);router[_0xedff('0x13')]('/',auth[_0xedff('0x9')](),controller[_0xedff('0x14')]);router[_0xedff('0x13')]('/:id/messages',auth[_0xedff('0x9')](),controller['addMessage']);router['post'](_0xedff('0x15'),auth['isAuthenticated'](),interaction[_0xedff('0x16')](_0xedff('0x17'),'faxinteraction:addtags'),controller[_0xedff('0x18')]);router[_0xedff('0x19')](_0xedff('0xd'),auth[_0xedff('0x9')](),interaction[_0xedff('0x16')](_0xedff('0x17'),_0xedff('0x1a')),controller['update']);router['delete'](_0xedff('0xd'),auth[_0xedff('0x9')](),interaction['tracked'](_0xedff('0x17'),_0xedff('0x1b')),controller[_0xedff('0x1c')]);router[_0xedff('0x1d')](_0xedff('0x15'),auth[_0xedff('0x9')](),controller['removeTags']);module[_0xedff('0x1e')]=router;
\ No newline at end of file
index a508a6d..700aa1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9335=['out','TEXT','DATE','sequelize','exports','medium','BOOLEAN','ENUM'];(function(_0x45f414,_0x12c68d){var _0x4b383d=function(_0x1a18ad){while(--_0x1a18ad){_0x45f414['push'](_0x45f414['shift']());}};_0x4b383d(++_0x12c68d);}(_0x9335,0xab));var _0x5933=function(_0x3c1a38,_0x5e0ee1){_0x3c1a38=_0x3c1a38-0x0;var _0x2df898=_0x9335[_0x3c1a38];return _0x2df898;};'use strict';var Sequelize=require(_0x5933('0x0'));module[_0x5933('0x1')]={'body':{'type':Sequelize['TEXT'](_0x5933('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x5933('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x5933('0x4')]('in',_0x5933('0x5')),'defaultValue':_0x5933('0x5'),'allowNull':![]},'failMessage':{'type':Sequelize[_0x5933('0x6')],'defaultValue':null},'readAt':{'type':Sequelize[_0x5933('0x7')]}};
\ No newline at end of file
+var _0xd2ea=['DATE','sequelize','exports','TEXT','medium','BOOLEAN','out'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xd2ea,0x15f));var _0xad2e=function(_0x2d310a,_0x489040){_0x2d310a=_0x2d310a-0x0;var _0x2f9a4a=_0xd2ea[_0x2d310a];return _0x2f9a4a;};'use strict';var Sequelize=require(_0xad2e('0x0'));module[_0xad2e('0x1')]={'body':{'type':Sequelize[_0xad2e('0x2')](_0xad2e('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xad2e('0x4')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0xad2e('0x5')),'defaultValue':_0xad2e('0x5'),'allowNull':![]},'failMessage':{'type':Sequelize[_0xad2e('0x2')],'defaultValue':null},'readAt':{'type':Sequelize[_0xad2e('0x6')]}};
\ No newline at end of file
index a49e110..eaf7018 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04bb=['redis','defaults','localhost','socket.io-emitter','./faxMessage.socket','register','jayson/promise','client','request','then','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxMessage,\x20%s,\x20%s','message','info','catch','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','destroy','stack','name','send','map','FaxMessage','type','key','query','keys','model','attributes','intersection','fields','nolimit','order','sort','where','pick','filters','merge','filter','includeAll','findAll','rows','show','params','options','update','body','find','describe','fax-interactions','accept','fax','read','readAt','format','UserId','agent','get','FaxInteraction','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','sequelize','Sequelize','QueryTypes','SELECT','fullname','internal','manual','interface','SIP/%s','channel','event','EventManager','reject','FaxInteractionId','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','motionChannel','rejectmessage','create','findOne','ContactId','isNil','AttachmentId','SendFax','download','join','root','server','files','attachments','Attachment','basename','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','lodash','crypto','jsforce','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb'];(function(_0xac800e,_0x54e102){var _0x2f8e19=function(_0x501334){while(--_0x501334){_0xac800e['push'](_0xac800e['shift']());}};_0x2f8e19(++_0x54e102);}(_0x04bb,0x74));var _0xb04b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x04bb[_0xa464c9];return _0x3d73c4;};'use strict';var emlformat=require(_0xb04b('0x0'));var rimraf=require(_0xb04b('0x1'));var zipdir=require(_0xb04b('0x2'));var jsonpatch=require(_0xb04b('0x3'));var rp=require(_0xb04b('0x4'));var moment=require(_0xb04b('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xb04b('0x6'));var util=require(_0xb04b('0x7'));var path=require('path');var sox=require(_0xb04b('0x8'));var csv=require(_0xb04b('0x9'));var ejs=require(_0xb04b('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb04b('0xb'));var squel=require('squel');var crypto=require(_0xb04b('0xc'));var jsforce=require(_0xb04b('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xb04b('0x9'));var querystring=require('querystring');var Papa=require(_0xb04b('0xe'));var Redis=require(_0xb04b('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xb04b('0x10'));var hardwareService=require(_0xb04b('0x11'));var logger=require(_0xb04b('0x12'))(_0xb04b('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb04b('0x14'));var db=require(_0xb04b('0x15'))['db'];config[_0xb04b('0x16')]=_[_0xb04b('0x17')](config[_0xb04b('0x16')],{'host':_0xb04b('0x18'),'port':0x18eb});var socket=require(_0xb04b('0x19'))(new Redis(config[_0xb04b('0x16')]));require(_0xb04b('0x1a'))[_0xb04b('0x1b')](socket);var jayson=require(_0xb04b('0x1c'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson[_0xb04b('0x1d')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1785ac,_0x657580,_0x46bc43,_0x39d6b8){return new BPromise(function(_0xdc9fa5,_0x298a7a){var _0x26c211=_0x39d6b8||client;return _0x26c211[_0xb04b('0x1e')](_0x1785ac,_0x46bc43)[_0xb04b('0x1f')](function(_0x251604){logger['info']('FaxMessage,\x20%s,\x20%s',_0x657580,_0xb04b('0x20'));logger[_0xb04b('0x21')](_0xb04b('0x22'),_0x657580,'request\x20sent',JSON[_0xb04b('0x23')](_0x251604));if(_0x251604[_0xb04b('0x24')]){if(_0x251604[_0xb04b('0x24')][_0xb04b('0x25')]===0x1f4){logger[_0xb04b('0x24')](_0xb04b('0x26'),_0x657580,_0x251604[_0xb04b('0x24')][_0xb04b('0x27')]);return _0x298a7a(_0x251604[_0xb04b('0x24')][_0xb04b('0x27')]);}logger['error'](_0xb04b('0x26'),_0x657580,_0x251604[_0xb04b('0x24')]['message']);return _0xdc9fa5(_0x251604[_0xb04b('0x24')]['message']);}else{logger[_0xb04b('0x28')](_0xb04b('0x26'),_0x657580,_0xb04b('0x20'));_0xdc9fa5(_0x251604['result'][_0xb04b('0x27')]);}})[_0xb04b('0x29')](function(_0x4db447){logger['error'](_0xb04b('0x26'),_0x657580,_0x4db447);_0x298a7a(_0x4db447);});});}function respondWithStatusCode(_0x22e27d,_0x5d0c11){_0x5d0c11=_0x5d0c11||0xcc;return function(_0x4539de){if(_0x4539de){return _0x22e27d[_0xb04b('0x2a')](_0x5d0c11);}return _0x22e27d[_0xb04b('0x2b')](_0x5d0c11)[_0xb04b('0x2c')]();};}function respondWithResult(_0x306d06,_0x210155){_0x210155=_0x210155||0xc8;return function(_0x4b1156){if(_0x4b1156){return _0x306d06[_0xb04b('0x2b')](_0x210155)[_0xb04b('0x2d')](_0x4b1156);}};}function respondWithFilteredResult(_0x32e319,_0x571527){return function(_0x46a51c){if(_0x46a51c){var _0xb8ceac=typeof _0x571527['offset']===_0xb04b('0x2e')&&typeof _0x571527[_0xb04b('0x2f')]===_0xb04b('0x2e');var _0x4886b4=_0x46a51c[_0xb04b('0x30')];var _0x115e1e=_0xb8ceac?0x0:_0x571527[_0xb04b('0x31')];var _0x389971=_0xb8ceac?_0x46a51c['count']:_0x571527['offset']+_0x571527[_0xb04b('0x2f')];var _0x5408d7;if(_0x389971>=_0x4886b4){_0x389971=_0x4886b4;_0x5408d7=0xc8;}else{_0x5408d7=0xce;}_0x32e319['status'](_0x5408d7);return _0x32e319[_0xb04b('0x32')](_0xb04b('0x33'),_0x115e1e+'-'+_0x389971+'/'+_0x4886b4)[_0xb04b('0x2d')](_0x46a51c);}return null;};}function patchUpdates(_0x388482){return function(_0x4c9fb9){try{jsonpatch[_0xb04b('0x34')](_0x4c9fb9,_0x388482,!![]);}catch(_0x40c58d){return BPromise['reject'](_0x40c58d);}return _0x4c9fb9[_0xb04b('0x35')]();};}function saveUpdates(_0x3ed1b6,_0x3044f7){return function(_0x19c4b5){if(_0x19c4b5){return _0x19c4b5['update'](_0x3ed1b6)['then'](function(_0x1377a7){return _0x1377a7;});}return null;};}function removeEntity(_0x3d6b3d,_0x23b2e0){return function(_0x383090){if(_0x383090){return _0x383090[_0xb04b('0x36')]()[_0xb04b('0x1f')](function(){_0x3d6b3d['status'](0xcc)[_0xb04b('0x2c')]();});}};}function handleEntityNotFound(_0x763a76,_0x1215b7){return function(_0x574d85){if(!_0x574d85){_0x763a76[_0xb04b('0x2a')](0x194);}return _0x574d85;};}function handleError(_0x258cf2,_0x780233){_0x780233=_0x780233||0x1f4;return function(_0x159982){logger['error'](_0x159982[_0xb04b('0x37')]);if(_0x159982[_0xb04b('0x38')]){delete _0x159982['name'];}_0x258cf2[_0xb04b('0x2b')](_0x780233)[_0xb04b('0x39')](_0x159982);};}exports['index']=function(_0x3d8c6f,_0x5b5a1b){var _0x5bb51e={},_0x5a264f={},_0x2fff05={'count':0x0,'rows':[]};var _0x1aa88e=_[_0xb04b('0x3a')](db[_0xb04b('0x3b')]['rawAttributes'],function(_0x12f48b){return{'name':_0x12f48b['fieldName'],'type':_0x12f48b[_0xb04b('0x3c')][_0xb04b('0x3d')]};});_0x5a264f['model']=_[_0xb04b('0x3a')](_0x1aa88e,_0xb04b('0x38'));_0x5a264f[_0xb04b('0x3e')]=_[_0xb04b('0x3f')](_0x3d8c6f['query']);_0x5a264f['filters']=_['intersection'](_0x5a264f[_0xb04b('0x40')],_0x5a264f[_0xb04b('0x3e')]);_0x5bb51e[_0xb04b('0x41')]=_[_0xb04b('0x42')](_0x5a264f[_0xb04b('0x40')],qs[_0xb04b('0x43')](_0x3d8c6f['query'][_0xb04b('0x43')]));_0x5bb51e['attributes']=_0x5bb51e[_0xb04b('0x41')]['length']?_0x5bb51e[_0xb04b('0x41')]:_0x5a264f[_0xb04b('0x40')];if(!_0x3d8c6f[_0xb04b('0x3e')]['hasOwnProperty'](_0xb04b('0x44'))){_0x5bb51e[_0xb04b('0x2f')]=qs[_0xb04b('0x2f')](_0x3d8c6f[_0xb04b('0x3e')][_0xb04b('0x2f')]);_0x5bb51e['offset']=qs[_0xb04b('0x31')](_0x3d8c6f['query'][_0xb04b('0x31')]);}_0x5bb51e[_0xb04b('0x45')]=qs[_0xb04b('0x46')](_0x3d8c6f[_0xb04b('0x3e')]['sort']);_0x5bb51e[_0xb04b('0x47')]=qs['filters'](_[_0xb04b('0x48')](_0x3d8c6f[_0xb04b('0x3e')],_0x5a264f[_0xb04b('0x49')]),_0x1aa88e);if(_0x3d8c6f[_0xb04b('0x3e')]['filter']){_0x5bb51e[_0xb04b('0x47')]=_[_0xb04b('0x4a')](_0x5bb51e[_0xb04b('0x47')],{'$or':_[_0xb04b('0x3a')](_0x1aa88e,function(_0x470d27){if(_0x470d27[_0xb04b('0x3c')]!=='VIRTUAL'){var _0x12f3e6={};_0x12f3e6[_0x470d27[_0xb04b('0x38')]]={'$like':'%'+_0x3d8c6f[_0xb04b('0x3e')][_0xb04b('0x4b')]+'%'};return _0x12f3e6;}})});}_0x5bb51e=_[_0xb04b('0x4a')]({},_0x5bb51e,_0x3d8c6f['options']);var _0x5dfe32={'where':_0x5bb51e[_0xb04b('0x47')]};return db[_0xb04b('0x3b')][_0xb04b('0x30')](_0x5dfe32)[_0xb04b('0x1f')](function(_0x2ceb48){_0x2fff05[_0xb04b('0x30')]=_0x2ceb48;if(_0x3d8c6f['query'][_0xb04b('0x4c')]){_0x5bb51e['include']=[{'all':!![]}];}return db[_0xb04b('0x3b')][_0xb04b('0x4d')](_0x5bb51e);})['then'](function(_0x261958){_0x2fff05[_0xb04b('0x4e')]=_0x261958;return _0x2fff05;})[_0xb04b('0x1f')](respondWithFilteredResult(_0x5b5a1b,_0x5bb51e))['catch'](handleError(_0x5b5a1b,null));};exports[_0xb04b('0x4f')]=function(_0x371da5,_0x2cbec6){var _0x3ea0d4={'raw':!![],'where':{'id':_0x371da5[_0xb04b('0x50')]['id']}},_0x341203={};_0x341203['model']=_[_0xb04b('0x3f')](db['FaxMessage']['rawAttributes']);_0x341203[_0xb04b('0x3e')]=_[_0xb04b('0x3f')](_0x371da5[_0xb04b('0x3e')]);_0x341203[_0xb04b('0x49')]=_[_0xb04b('0x42')](_0x341203[_0xb04b('0x40')],_0x341203[_0xb04b('0x3e')]);_0x3ea0d4[_0xb04b('0x41')]=_[_0xb04b('0x42')](_0x341203[_0xb04b('0x40')],qs['fields'](_0x371da5[_0xb04b('0x3e')][_0xb04b('0x43')]));_0x3ea0d4['attributes']=_0x3ea0d4[_0xb04b('0x41')]['length']?_0x3ea0d4[_0xb04b('0x41')]:_0x341203['model'];if(_0x371da5[_0xb04b('0x3e')]['includeAll']){_0x3ea0d4['include']=[{'all':!![]}];}_0x3ea0d4=_['merge']({},_0x3ea0d4,_0x371da5[_0xb04b('0x51')]);return db['FaxMessage']['find'](_0x3ea0d4)[_0xb04b('0x1f')](handleEntityNotFound(_0x2cbec6,null))[_0xb04b('0x1f')](respondWithResult(_0x2cbec6,null))[_0xb04b('0x29')](handleError(_0x2cbec6,null));};exports[_0xb04b('0x52')]=function(_0x3ccc08,_0x5ae529){if(_0x3ccc08['body']['id']){delete _0x3ccc08[_0xb04b('0x53')]['id'];}return db[_0xb04b('0x3b')][_0xb04b('0x54')]({'where':{'id':_0x3ccc08[_0xb04b('0x50')]['id']}})[_0xb04b('0x1f')](handleEntityNotFound(_0x5ae529,null))['then'](saveUpdates(_0x3ccc08['body'],null))['then'](respondWithResult(_0x5ae529,null))[_0xb04b('0x29')](handleError(_0x5ae529,null));};exports[_0xb04b('0x36')]=function(_0x480958,_0x4953e6){return db[_0xb04b('0x3b')]['find']({'where':{'id':_0x480958[_0xb04b('0x50')]['id']}})[_0xb04b('0x1f')](handleEntityNotFound(_0x4953e6,null))[_0xb04b('0x1f')](removeEntity(_0x4953e6,null))[_0xb04b('0x29')](handleError(_0x4953e6,null));};exports['describe']=function(_0xc2ad8d,_0x594590){return db[_0xb04b('0x3b')][_0xb04b('0x55')]()[_0xb04b('0x1f')](respondWithResult(_0x594590,null))[_0xb04b('0x29')](handleError(_0x594590,null));};var interaction_log=require(_0xb04b('0x12'))(_0xb04b('0x56'));exports[_0xb04b('0x57')]=function(_0x4ef959,_0x430fb2,_0x44caa1){var _0x486823={'agent':{},'channel':_0xb04b('0x58')};if(_0x4ef959[_0xb04b('0x53')]['id']){delete _0x4ef959[_0xb04b('0x53')]['id'];}_0x4ef959[_0xb04b('0x53')][_0xb04b('0x59')]=!![];_0x4ef959[_0xb04b('0x53')][_0xb04b('0x5a')]=moment()[_0xb04b('0x5b')]('YYYY-MM-DD\x20HH:mm:ss');_0x4ef959[_0xb04b('0x53')][_0xb04b('0x5c')]=_0x4ef959[_0xb04b('0x53')][_0xb04b('0x5c')]||_0x4ef959['user']['id'];_0x486823[_0xb04b('0x5d')]['id']=_0x4ef959[_0xb04b('0x53')][_0xb04b('0x5c')];return db[_0xb04b('0x3b')][_0xb04b('0x54')]({'where':{'id':_0x4ef959[_0xb04b('0x50')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x430fb2,null))[_0xb04b('0x1f')](saveUpdates(_0x4ef959[_0xb04b('0x53')],null))[_0xb04b('0x1f')](function(_0x1752c6){if(_0x1752c6){_0x486823[_0xb04b('0x27')]=_0x1752c6[_0xb04b('0x5e')]({'plain':!![]});return db[_0xb04b('0x5f')][_0xb04b('0x54')]({'where':{'id':_0x1752c6['FaxInteractionId']}});}return null;})[_0xb04b('0x1f')](handleEntityNotFound(_0x430fb2,null))[_0xb04b('0x1f')](function(_0x2d18d3){if(_0x2d18d3){return _0x2d18d3[_0xb04b('0x52')]({'UserId':_0x4ef959[_0xb04b('0x53')][_0xb04b('0x5c')],'read1stAt':_['isNil'](_0x2d18d3[_0xb04b('0x60')])?moment()[_0xb04b('0x5b')](_0xb04b('0x61')):undefined});}return null;})['then'](function(_0x87953c){if(_0x87953c){_0x486823[_0xb04b('0x62')]=_0x87953c[_0xb04b('0x5e')]({'plain':!![]});interaction_log[_0xb04b('0x28')](_0xb04b('0x63'),_0x4ef959[_0xb04b('0x64')]['id'],_0x4ef959[_0xb04b('0x64')]['name'],_0x4ef959['user'][_0xb04b('0x65')],_0x486823[_0xb04b('0x62')]['id'],_0x4ef959[_0xb04b('0x53')]?JSON['stringify'](_0x4ef959[_0xb04b('0x53')]):_0xb04b('0x66'));return respondWithRpcPromise(_0xb04b('0x67'),_0xb04b('0x68'),_0x486823);}return null;})[_0xb04b('0x1f')](function(_0x2d55be){var _0x801535='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x2d55be[_0xb04b('0x27')]['ContactId'];return db[_0xb04b('0x69')][_0xb04b('0x3e')](_0x801535,{'type':db[_0xb04b('0x6a')][_0xb04b('0x6b')][_0xb04b('0x6c')],'raw':!![]})['then'](function(_0xb3aab1){return _0xb3aab1;});})[_0xb04b('0x1f')](function(_0x559e7f){if(_0x559e7f){_0x486823[_0xb04b('0x27')]['contact']=_0x559e7f[0x0];if(!_0x4ef959[_0xb04b('0x53')]['UserId'])return;return db['User'][_0xb04b('0x54')]({'where':{'id':_0x4ef959[_0xb04b('0x53')][_0xb04b('0x5c')],'role':_0xb04b('0x5d')},'attributes':['id',_0xb04b('0x38'),_0xb04b('0x6d'),'email',_0xb04b('0x6e')],'raw':!![]});}return null;})[_0xb04b('0x1f')](function(_0x4a4226){if(!_0x4a4226)return null;_0x486823[_0xb04b('0x27')][_0xb04b('0x5d')]=_0x4a4226;return _0x486823;})[_0xb04b('0x1f')](function(_0x22506b){if(_0x22506b){if(_0x4ef959[_0xb04b('0x53')][_0xb04b('0x6f')]){_0x486823[_0xb04b('0x27')][_0xb04b('0x70')]=util[_0xb04b('0x5b')](_0xb04b('0x71'),_0x4ef959[_0xb04b('0x64')][_0xb04b('0x38')]);_0x486823[_0xb04b('0x27')][_0xb04b('0x72')]=_0x486823[_0xb04b('0x72')];_0x486823[_0xb04b('0x27')]['motionChannel']=_0x486823['channel'];_0x486823[_0xb04b('0x27')][_0xb04b('0x73')]=_0xb04b('0x57');return respondWithRpcPromise(_0xb04b('0x74'),'EventManager',{'event':'acceptmessage','message':_0x486823[_0xb04b('0x27')]},client9002)['then'](function(){return _0x486823;});}return _0x486823;}return null;})[_0xb04b('0x1f')](respondWithResult(_0x430fb2,null))[_0xb04b('0x29')](handleError(_0x430fb2,null));};var interaction_log=require(_0xb04b('0x12'))(_0xb04b('0x56'));exports[_0xb04b('0x75')]=function(_0x16432b,_0x5624cf,_0x1a9730){var _0x1c3e46={'agent':{},'channel':_0xb04b('0x58')};if(_0x16432b[_0xb04b('0x53')]['id']){delete _0x16432b['body']['id'];}_0x16432b[_0xb04b('0x53')][_0xb04b('0x5c')]=_0x16432b['body'][_0xb04b('0x5c')]||_0x16432b[_0xb04b('0x64')]['id'];_0x1c3e46['agent']['id']=_0x16432b[_0xb04b('0x53')]['UserId'];return db[_0xb04b('0x3b')][_0xb04b('0x54')]({'where':{'id':_0x16432b[_0xb04b('0x50')]['id'],'UserId':null}})[_0xb04b('0x1f')](handleEntityNotFound(_0x5624cf,null))[_0xb04b('0x1f')](function(_0x470e4b){if(_0x470e4b){_0x1c3e46[_0xb04b('0x27')]=_0x470e4b['get']({'plain':!![]});return db[_0xb04b('0x5f')][_0xb04b('0x54')]({'where':{'id':_0x470e4b[_0xb04b('0x76')]}});}return null;})['then'](handleEntityNotFound(_0x5624cf,null))[_0xb04b('0x1f')](function(_0x312a96){if(_0x312a96){_0x1c3e46['interaction']=_0x312a96[_0xb04b('0x5e')]({'plain':!![]});interaction_log['info']('[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x16432b['user']['id'],_0x16432b[_0xb04b('0x64')]['name'],_0x16432b['user'][_0xb04b('0x65')],_0x1c3e46[_0xb04b('0x62')]['id'],_0x16432b['body']?JSON[_0xb04b('0x23')](_0x16432b[_0xb04b('0x53')]):'null');return respondWithRpcPromise(_0xb04b('0x77'),_0xb04b('0x78'),_0x1c3e46);}return null;})['then'](function(_0x3c2ae4){var _0x22fb52=_0xb04b('0x79')+_0x3c2ae4['message']['ContactId'];return db[_0xb04b('0x69')]['query'](_0x22fb52,{'type':db[_0xb04b('0x6a')][_0xb04b('0x6b')][_0xb04b('0x6c')],'raw':!![]})[_0xb04b('0x1f')](function(_0xaa1cfb){return _0xaa1cfb;});})['then'](function(_0x3f7bbe){if(_0x3f7bbe){_0x1c3e46[_0xb04b('0x27')]['contact']=_0x3f7bbe[0x0];if(!_0x16432b[_0xb04b('0x53')][_0xb04b('0x5c')])return;return db['User']['find']({'where':{'id':_0x16432b[_0xb04b('0x53')][_0xb04b('0x5c')],'role':_0xb04b('0x5d')},'attributes':['id',_0xb04b('0x38'),'fullname','email',_0xb04b('0x6e')],'raw':!![]});}return null;})[_0xb04b('0x1f')](function(_0x152e84){if(!_0x152e84)return null;_0x1c3e46[_0xb04b('0x27')]['agent']=_0x152e84;return _0x1c3e46;})[_0xb04b('0x1f')](function(_0x4978cf){if(_0x4978cf){_0x4978cf['message'][_0xb04b('0x70')]=util[_0xb04b('0x5b')](_0xb04b('0x71'),_0x16432b[_0xb04b('0x64')][_0xb04b('0x38')]);_0x4978cf[_0xb04b('0x27')][_0xb04b('0x72')]=_0x1c3e46[_0xb04b('0x72')];_0x4978cf['message'][_0xb04b('0x7a')]=_0x1c3e46[_0xb04b('0x72')];_0x4978cf[_0xb04b('0x27')][_0xb04b('0x73')]=_0xb04b('0x75');respondWithRpcPromise(_0xb04b('0x74'),_0xb04b('0x74'),{'event':_0xb04b('0x7b'),'message':_0x4978cf[_0xb04b('0x27')]},client9002);return _0x1c3e46;}return null;})['then'](respondWithResult(_0x5624cf,null))[_0xb04b('0x29')](handleError(_0x5624cf,null));};exports[_0xb04b('0x7c')]=function(_0x3c9bb0,_0x46c2ed){var _0x1d7618;return db[_0xb04b('0x3b')][_0xb04b('0x7c')](_0x3c9bb0['body'],{})[_0xb04b('0x1f')](function(_0x36615d){_0x1d7618=_0x36615d;return db['CmContact'][_0xb04b('0x7d')]({'where':{'id':_0x1d7618[_0xb04b('0x7e')]}});})['then'](function(_0x1d6138){if(_[_0xb04b('0x7f')](_0x1d6138)){return;}else{_0x1d7618[_0xb04b('0x58')]=_0x1d6138[_0xb04b('0x58')];return db['Attachment'][_0xb04b('0x7d')]({'where':{'id':_0x1d7618[_0xb04b('0x80')]}});}})[_0xb04b('0x1f')](function(_0x3abf29){return respondWithRpcPromise(_0xb04b('0x81'),_0xb04b('0x81'),{'FaxAccountId':_[_0xb04b('0x7f')](_0x3c9bb0['body'])?undefined:_0x3c9bb0[_0xb04b('0x53')]['FaxAccountId'],'path':_['isNil'](_0x3abf29)?undefined:util[_0xb04b('0x5b')]('/var/opt/motion2/server/files/attachments/%s',_0x3abf29['basename']),'fax':_[_0xb04b('0x7f')](_0x1d7618[_0xb04b('0x58')])?undefined:_0x1d7618['fax'],'AttachmentId':_0x1d7618[_0xb04b('0x80')]},client9002);})[_0xb04b('0x1f')](respondWithResult(_0x46c2ed,0xc9))[_0xb04b('0x29')](handleError(_0x46c2ed,null));};exports[_0xb04b('0x82')]=function(_0x29501a,_0x111a39){var _0x49888f=path[_0xb04b('0x83')](config[_0xb04b('0x84')],_0xb04b('0x85'),_0xb04b('0x86'),_0xb04b('0x87'));return db['FaxMessage'][_0xb04b('0x54')]({'where':{'id':_0x29501a[_0xb04b('0x50')]['id']},'include':[{'model':db[_0xb04b('0x88')],'as':_0xb04b('0x88')}]})[_0xb04b('0x1f')](handleEntityNotFound(_0x111a39,null))[_0xb04b('0x1f')](function(_0x269fbf){if(_0x269fbf){return _0x111a39[_0xb04b('0x82')](path['join'](_0x49888f,_0x269fbf[_0xb04b('0x88')][_0xb04b('0x89')]));}})[_0xb04b('0x29')](handleError(_0x111a39,null));};
\ No newline at end of file
+var _0x331e=['accept','EventManager','acceptmessage','[FAXMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','null','RejectMessage','sequelize','interface','format','rejectmessage','create','CmContact','findOne','Attachment','AttachmentId','SendFax','basename','download','join','root','server','files','attachments','eml-format','rimraf','zip-dir','request-promise','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','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./faxMessage.socket','jayson/promise','client','http','info','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','FaxMessage,\x20%s,\x20%s','message','result','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','update','then','destroy','end','stack','name','send','index','map','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','include','FaxMessage','findAll','rows','show','params','rawAttributes','find','catch','body','describe','fax-interactions','fax','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','FaxInteraction','FaxInteractionId','isNil','read1stAt','interaction','[FAXMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','SIP/%s','channel','motionChannel','event'];(function(_0x3b4fdf,_0x4a26a6){var _0x47f923=function(_0x580c8f){while(--_0x580c8f){_0x3b4fdf['push'](_0x3b4fdf['shift']());}};_0x47f923(++_0x4a26a6);}(_0x331e,0x1d3));var _0xe331=function(_0x35f4f6,_0x29131d){_0x35f4f6=_0x35f4f6-0x0;var _0x516d9f=_0x331e[_0x35f4f6];return _0x516d9f;};'use strict';var emlformat=require(_0xe331('0x0'));var rimraf=require(_0xe331('0x1'));var zipdir=require(_0xe331('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xe331('0x3'));var moment=require('moment');var BPromise=require(_0xe331('0x4'));var Mustache=require(_0xe331('0x5'));var util=require(_0xe331('0x6'));var path=require(_0xe331('0x7'));var sox=require(_0xe331('0x8'));var csv=require(_0xe331('0x9'));var ejs=require(_0xe331('0xa'));var fs=require('fs');var fs_extra=require(_0xe331('0xb'));var _=require(_0xe331('0xc'));var squel=require(_0xe331('0xd'));var crypto=require(_0xe331('0xe'));var jsforce=require(_0xe331('0xf'));var deskjs=require(_0xe331('0x10'));var toCsv=require(_0xe331('0x9'));var querystring=require(_0xe331('0x11'));var Papa=require(_0xe331('0x12'));var Redis=require(_0xe331('0x13'));var authService=require(_0xe331('0x14'));var qs=require(_0xe331('0x15'));var as=require(_0xe331('0x16'));var hardwareService=require(_0xe331('0x17'));var logger=require(_0xe331('0x18'))('api');var utils=require(_0xe331('0x19'));var config=require(_0xe331('0x1a'));var licenseUtil=require(_0xe331('0x1b'));var db=require(_0xe331('0x1c'))['db'];config[_0xe331('0x1d')]=_['defaults'](config[_0xe331('0x1d')],{'host':_0xe331('0x1e'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe331('0x1d')]));require(_0xe331('0x1f'))['register'](socket);var jayson=require(_0xe331('0x20'));var client=jayson[_0xe331('0x21')]['http']({'port':0x232c});var client9002=jayson[_0xe331('0x21')][_0xe331('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x3499a9,_0x48e5e7,_0x20d062,_0x3961e9){return new BPromise(function(_0x25690a,_0x46f214){var _0x5408fa=_0x3961e9||client;return _0x5408fa['request'](_0x3499a9,_0x20d062)['then'](function(_0x757a11){logger[_0xe331('0x23')]('FaxMessage,\x20%s,\x20%s',_0x48e5e7,_0xe331('0x24'));logger[_0xe331('0x25')](_0xe331('0x26'),_0x48e5e7,_0xe331('0x24'),JSON[_0xe331('0x27')](_0x757a11));if(_0x757a11[_0xe331('0x28')]){if(_0x757a11['error'][_0xe331('0x29')]===0x1f4){logger[_0xe331('0x28')](_0xe331('0x2a'),_0x48e5e7,_0x757a11['error'][_0xe331('0x2b')]);return _0x46f214(_0x757a11['error'][_0xe331('0x2b')]);}logger[_0xe331('0x28')](_0xe331('0x2a'),_0x48e5e7,_0x757a11[_0xe331('0x28')][_0xe331('0x2b')]);return _0x25690a(_0x757a11['error']['message']);}else{logger[_0xe331('0x23')]('FaxMessage,\x20%s,\x20%s',_0x48e5e7,_0xe331('0x24'));_0x25690a(_0x757a11[_0xe331('0x2c')][_0xe331('0x2b')]);}})['catch'](function(_0x4c7ad5){logger[_0xe331('0x28')](_0xe331('0x2a'),_0x48e5e7,_0x4c7ad5);_0x46f214(_0x4c7ad5);});});}function respondWithStatusCode(_0x3429da,_0x3d4d0d){_0x3d4d0d=_0x3d4d0d||0xcc;return function(_0x3fe4fb){if(_0x3fe4fb){return _0x3429da[_0xe331('0x2d')](_0x3d4d0d);}return _0x3429da[_0xe331('0x2e')](_0x3d4d0d)['end']();};}function respondWithResult(_0x7d28e,_0x2e8721){_0x2e8721=_0x2e8721||0xc8;return function(_0x47f4ab){if(_0x47f4ab){return _0x7d28e['status'](_0x2e8721)[_0xe331('0x2f')](_0x47f4ab);}};}function respondWithFilteredResult(_0x345e71,_0x2f3876){return function(_0x40c369){if(_0x40c369){var _0x5b0a79=typeof _0x2f3876[_0xe331('0x30')]===_0xe331('0x31')&&typeof _0x2f3876[_0xe331('0x32')]==='undefined';var _0x3097a3=_0x40c369['count'];var _0x7ce8a9=_0x5b0a79?0x0:_0x2f3876[_0xe331('0x30')];var _0x2e6150=_0x5b0a79?_0x40c369[_0xe331('0x33')]:_0x2f3876[_0xe331('0x30')]+_0x2f3876['limit'];var _0x488c68;if(_0x2e6150>=_0x3097a3){_0x2e6150=_0x3097a3;_0x488c68=0xc8;}else{_0x488c68=0xce;}_0x345e71[_0xe331('0x2e')](_0x488c68);return _0x345e71['set'](_0xe331('0x34'),_0x7ce8a9+'-'+_0x2e6150+'/'+_0x3097a3)[_0xe331('0x2f')](_0x40c369);}return null;};}function patchUpdates(_0x1786e9){return function(_0x5e9f60){try{jsonpatch[_0xe331('0x35')](_0x5e9f60,_0x1786e9,!![]);}catch(_0x1d1c34){return BPromise['reject'](_0x1d1c34);}return _0x5e9f60['save']();};}function saveUpdates(_0x3086b9,_0x3b3755){return function(_0xc6b66a){if(_0xc6b66a){return _0xc6b66a[_0xe331('0x36')](_0x3086b9)[_0xe331('0x37')](function(_0x837d35){return _0x837d35;});}return null;};}function removeEntity(_0xe4ee8b,_0x190037){return function(_0x454fe0){if(_0x454fe0){return _0x454fe0[_0xe331('0x38')]()[_0xe331('0x37')](function(){_0xe4ee8b[_0xe331('0x2e')](0xcc)[_0xe331('0x39')]();});}};}function handleEntityNotFound(_0x580ac2,_0x1bf4f3){return function(_0x19587c){if(!_0x19587c){_0x580ac2['sendStatus'](0x194);}return _0x19587c;};}function handleError(_0x3f9b7f,_0x3a59b0){_0x3a59b0=_0x3a59b0||0x1f4;return function(_0x3d13d7){logger[_0xe331('0x28')](_0x3d13d7[_0xe331('0x3a')]);if(_0x3d13d7[_0xe331('0x3b')]){delete _0x3d13d7[_0xe331('0x3b')];}_0x3f9b7f[_0xe331('0x2e')](_0x3a59b0)[_0xe331('0x3c')](_0x3d13d7);};}exports[_0xe331('0x3d')]=function(_0x165d01,_0x5e70d6){var _0x348498={},_0x24b708={},_0x57b8bb={'count':0x0,'rows':[]};var _0x3044d7=_[_0xe331('0x3e')](db['FaxMessage']['rawAttributes'],function(_0x42ee1d){return{'name':_0x42ee1d['fieldName'],'type':_0x42ee1d[_0xe331('0x3f')][_0xe331('0x40')]};});_0x24b708[_0xe331('0x41')]=_[_0xe331('0x3e')](_0x3044d7,_0xe331('0x3b'));_0x24b708[_0xe331('0x42')]=_['keys'](_0x165d01[_0xe331('0x42')]);_0x24b708[_0xe331('0x43')]=_[_0xe331('0x44')](_0x24b708[_0xe331('0x41')],_0x24b708[_0xe331('0x42')]);_0x348498[_0xe331('0x45')]=_[_0xe331('0x44')](_0x24b708['model'],qs[_0xe331('0x46')](_0x165d01['query'][_0xe331('0x46')]));_0x348498['attributes']=_0x348498['attributes'][_0xe331('0x47')]?_0x348498[_0xe331('0x45')]:_0x24b708['model'];if(!_0x165d01[_0xe331('0x42')][_0xe331('0x48')]('nolimit')){_0x348498[_0xe331('0x32')]=qs[_0xe331('0x32')](_0x165d01[_0xe331('0x42')][_0xe331('0x32')]);_0x348498[_0xe331('0x30')]=qs['offset'](_0x165d01[_0xe331('0x42')][_0xe331('0x30')]);}_0x348498[_0xe331('0x49')]=qs[_0xe331('0x4a')](_0x165d01[_0xe331('0x42')][_0xe331('0x4a')]);_0x348498['where']=qs[_0xe331('0x43')](_[_0xe331('0x4b')](_0x165d01[_0xe331('0x42')],_0x24b708[_0xe331('0x43')]),_0x3044d7);if(_0x165d01[_0xe331('0x42')]['filter']){_0x348498[_0xe331('0x4c')]=_[_0xe331('0x4d')](_0x348498[_0xe331('0x4c')],{'$or':_['map'](_0x3044d7,function(_0x6e65e0){if(_0x6e65e0['type']!==_0xe331('0x4e')){var _0x51baed={};_0x51baed[_0x6e65e0['name']]={'$like':'%'+_0x165d01[_0xe331('0x42')][_0xe331('0x4f')]+'%'};return _0x51baed;}})});}_0x348498=_[_0xe331('0x4d')]({},_0x348498,_0x165d01[_0xe331('0x50')]);var _0x26fcb3={'where':_0x348498[_0xe331('0x4c')]};return db['FaxMessage'][_0xe331('0x33')](_0x26fcb3)[_0xe331('0x37')](function(_0x2b4e98){_0x57b8bb['count']=_0x2b4e98;if(_0x165d01[_0xe331('0x42')][_0xe331('0x51')]){_0x348498[_0xe331('0x52')]=[{'all':!![]}];}return db[_0xe331('0x53')][_0xe331('0x54')](_0x348498);})[_0xe331('0x37')](function(_0x3ebe07){_0x57b8bb[_0xe331('0x55')]=_0x3ebe07;return _0x57b8bb;})[_0xe331('0x37')](respondWithFilteredResult(_0x5e70d6,_0x348498))['catch'](handleError(_0x5e70d6,null));};exports[_0xe331('0x56')]=function(_0x4eebb9,_0x5908c9){var _0x93965b={'raw':!![],'where':{'id':_0x4eebb9[_0xe331('0x57')]['id']}},_0x484055={};_0x484055[_0xe331('0x41')]=_['keys'](db[_0xe331('0x53')][_0xe331('0x58')]);_0x484055['query']=_['keys'](_0x4eebb9['query']);_0x484055[_0xe331('0x43')]=_['intersection'](_0x484055[_0xe331('0x41')],_0x484055[_0xe331('0x42')]);_0x93965b['attributes']=_[_0xe331('0x44')](_0x484055[_0xe331('0x41')],qs[_0xe331('0x46')](_0x4eebb9[_0xe331('0x42')][_0xe331('0x46')]));_0x93965b['attributes']=_0x93965b[_0xe331('0x45')][_0xe331('0x47')]?_0x93965b['attributes']:_0x484055[_0xe331('0x41')];if(_0x4eebb9[_0xe331('0x42')][_0xe331('0x51')]){_0x93965b[_0xe331('0x52')]=[{'all':!![]}];}_0x93965b=_[_0xe331('0x4d')]({},_0x93965b,_0x4eebb9[_0xe331('0x50')]);return db[_0xe331('0x53')][_0xe331('0x59')](_0x93965b)[_0xe331('0x37')](handleEntityNotFound(_0x5908c9,null))[_0xe331('0x37')](respondWithResult(_0x5908c9,null))[_0xe331('0x5a')](handleError(_0x5908c9,null));};exports['update']=function(_0x2e0a6a,_0xc46e){if(_0x2e0a6a[_0xe331('0x5b')]['id']){delete _0x2e0a6a[_0xe331('0x5b')]['id'];}return db[_0xe331('0x53')][_0xe331('0x59')]({'where':{'id':_0x2e0a6a[_0xe331('0x57')]['id']}})['then'](handleEntityNotFound(_0xc46e,null))[_0xe331('0x37')](saveUpdates(_0x2e0a6a[_0xe331('0x5b')],null))[_0xe331('0x37')](respondWithResult(_0xc46e,null))[_0xe331('0x5a')](handleError(_0xc46e,null));};exports[_0xe331('0x38')]=function(_0x4aa1a8,_0x212cf3){return db[_0xe331('0x53')]['find']({'where':{'id':_0x4aa1a8[_0xe331('0x57')]['id']}})[_0xe331('0x37')](handleEntityNotFound(_0x212cf3,null))[_0xe331('0x37')](removeEntity(_0x212cf3,null))[_0xe331('0x5a')](handleError(_0x212cf3,null));};exports[_0xe331('0x5c')]=function(_0x1f7ca0,_0x4ff25f){return db['FaxMessage'][_0xe331('0x5c')]()[_0xe331('0x37')](respondWithResult(_0x4ff25f,null))['catch'](handleError(_0x4ff25f,null));};var interaction_log=require(_0xe331('0x18'))(_0xe331('0x5d'));exports['accept']=function(_0x69020a,_0x3b7b8a,_0x3eafc6){var _0x174b3c={'agent':{},'channel':_0xe331('0x5e')};if(_0x69020a[_0xe331('0x5b')]['id']){delete _0x69020a[_0xe331('0x5b')]['id'];}_0x69020a[_0xe331('0x5b')][_0xe331('0x5f')]=!![];_0x69020a['body'][_0xe331('0x60')]=moment()['format'](_0xe331('0x61'));_0x69020a[_0xe331('0x5b')][_0xe331('0x62')]=_0x69020a[_0xe331('0x5b')]['UserId']||_0x69020a['user']['id'];_0x174b3c[_0xe331('0x63')]['id']=_0x69020a['body'][_0xe331('0x62')];return db[_0xe331('0x53')][_0xe331('0x59')]({'where':{'id':_0x69020a[_0xe331('0x57')]['id'],'UserId':null}})[_0xe331('0x37')](handleEntityNotFound(_0x3b7b8a,null))[_0xe331('0x37')](saveUpdates(_0x69020a[_0xe331('0x5b')],null))[_0xe331('0x37')](function(_0x52d7a0){if(_0x52d7a0){_0x174b3c['message']=_0x52d7a0[_0xe331('0x64')]({'plain':!![]});return db[_0xe331('0x65')][_0xe331('0x59')]({'where':{'id':_0x52d7a0[_0xe331('0x66')]}});}return null;})['then'](handleEntityNotFound(_0x3b7b8a,null))['then'](function(_0x3348d6){if(_0x3348d6){return _0x3348d6['update']({'UserId':_0x69020a['body'][_0xe331('0x62')],'read1stAt':_[_0xe331('0x67')](_0x3348d6[_0xe331('0x68')])?moment()['format'](_0xe331('0x61')):undefined});}return null;})['then'](function(_0x10e0d0){if(_0x10e0d0){_0x174b3c[_0xe331('0x69')]=_0x10e0d0['get']({'plain':!![]});interaction_log['info'](_0xe331('0x6a'),_0x69020a[_0xe331('0x6b')]['id'],_0x69020a['user'][_0xe331('0x3b')],_0x69020a[_0xe331('0x6b')][_0xe331('0x6c')],_0x174b3c[_0xe331('0x69')]['id'],_0x69020a['body']?JSON[_0xe331('0x27')](_0x69020a[_0xe331('0x5b')]):'null');return respondWithRpcPromise(_0xe331('0x6d'),_0xe331('0x6e'),_0x174b3c);}return null;})[_0xe331('0x37')](function(_0x518a1c){var _0x374707=_0xe331('0x6f')+_0x518a1c[_0xe331('0x2b')][_0xe331('0x70')];return db['sequelize'][_0xe331('0x42')](_0x374707,{'type':db[_0xe331('0x71')][_0xe331('0x72')][_0xe331('0x73')],'raw':!![]})[_0xe331('0x37')](function(_0x564b49){return _0x564b49;});})[_0xe331('0x37')](function(_0x2a5152){if(_0x2a5152){_0x174b3c[_0xe331('0x2b')][_0xe331('0x74')]=_0x2a5152[0x0];if(!_0x69020a[_0xe331('0x5b')][_0xe331('0x62')])return;return db[_0xe331('0x75')][_0xe331('0x59')]({'where':{'id':_0x69020a[_0xe331('0x5b')]['UserId'],'role':'agent'},'attributes':['id',_0xe331('0x3b'),_0xe331('0x76'),_0xe331('0x77'),_0xe331('0x78')],'raw':!![]});}return null;})[_0xe331('0x37')](function(_0x5e6921){if(!_0x5e6921)return null;_0x174b3c[_0xe331('0x2b')][_0xe331('0x63')]=_0x5e6921;return _0x174b3c;})[_0xe331('0x37')](function(_0x1437d0){if(_0x1437d0){if(_0x69020a['body']['manual']){_0x174b3c[_0xe331('0x2b')]['interface']=util['format'](_0xe331('0x79'),_0x69020a[_0xe331('0x6b')][_0xe331('0x3b')]);_0x174b3c['message'][_0xe331('0x7a')]=_0x174b3c[_0xe331('0x7a')];_0x174b3c['message'][_0xe331('0x7b')]=_0x174b3c[_0xe331('0x7a')];_0x174b3c[_0xe331('0x2b')][_0xe331('0x7c')]=_0xe331('0x7d');return respondWithRpcPromise(_0xe331('0x7e'),_0xe331('0x7e'),{'event':_0xe331('0x7f'),'message':_0x174b3c[_0xe331('0x2b')]},client9002)[_0xe331('0x37')](function(){return _0x174b3c;});}return _0x174b3c;}return null;})[_0xe331('0x37')](respondWithResult(_0x3b7b8a,null))[_0xe331('0x5a')](handleError(_0x3b7b8a,null));};var interaction_log=require('../../config/logger')(_0xe331('0x5d'));exports['reject']=function(_0x109f30,_0x140ccd,_0x5c813d){var _0x574f90={'agent':{},'channel':_0xe331('0x5e')};if(_0x109f30[_0xe331('0x5b')]['id']){delete _0x109f30[_0xe331('0x5b')]['id'];}_0x109f30['body'][_0xe331('0x62')]=_0x109f30['body'][_0xe331('0x62')]||_0x109f30['user']['id'];_0x574f90[_0xe331('0x63')]['id']=_0x109f30[_0xe331('0x5b')][_0xe331('0x62')];return db[_0xe331('0x53')][_0xe331('0x59')]({'where':{'id':_0x109f30[_0xe331('0x57')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x140ccd,null))['then'](function(_0x511174){if(_0x511174){_0x574f90[_0xe331('0x2b')]=_0x511174[_0xe331('0x64')]({'plain':!![]});return db['FaxInteraction'][_0xe331('0x59')]({'where':{'id':_0x511174[_0xe331('0x66')]}});}return null;})[_0xe331('0x37')](handleEntityNotFound(_0x140ccd,null))['then'](function(_0x237f1e){if(_0x237f1e){_0x574f90[_0xe331('0x69')]=_0x237f1e[_0xe331('0x64')]({'plain':!![]});interaction_log['info'](_0xe331('0x80'),_0x109f30[_0xe331('0x6b')]['id'],_0x109f30['user'][_0xe331('0x3b')],_0x109f30[_0xe331('0x6b')][_0xe331('0x6c')],_0x574f90[_0xe331('0x69')]['id'],_0x109f30[_0xe331('0x5b')]?JSON[_0xe331('0x27')](_0x109f30[_0xe331('0x5b')]):_0xe331('0x81'));return respondWithRpcPromise(_0xe331('0x82'),'rejectMessage',_0x574f90);}return null;})[_0xe331('0x37')](function(_0x3dcf97){var _0x2675d0=_0xe331('0x6f')+_0x3dcf97[_0xe331('0x2b')][_0xe331('0x70')];return db[_0xe331('0x83')][_0xe331('0x42')](_0x2675d0,{'type':db[_0xe331('0x71')][_0xe331('0x72')][_0xe331('0x73')],'raw':!![]})['then'](function(_0x478fff){return _0x478fff;});})[_0xe331('0x37')](function(_0x3893f){if(_0x3893f){_0x574f90[_0xe331('0x2b')]['contact']=_0x3893f[0x0];if(!_0x109f30[_0xe331('0x5b')][_0xe331('0x62')])return;return db[_0xe331('0x75')][_0xe331('0x59')]({'where':{'id':_0x109f30[_0xe331('0x5b')][_0xe331('0x62')],'role':_0xe331('0x63')},'attributes':['id',_0xe331('0x3b'),_0xe331('0x76'),_0xe331('0x77'),_0xe331('0x78')],'raw':!![]});}return null;})[_0xe331('0x37')](function(_0x5f57d0){if(!_0x5f57d0)return null;_0x574f90[_0xe331('0x2b')][_0xe331('0x63')]=_0x5f57d0;return _0x574f90;})[_0xe331('0x37')](function(_0x23cd70){if(_0x23cd70){_0x23cd70[_0xe331('0x2b')][_0xe331('0x84')]=util[_0xe331('0x85')](_0xe331('0x79'),_0x109f30[_0xe331('0x6b')][_0xe331('0x3b')]);_0x23cd70[_0xe331('0x2b')][_0xe331('0x7a')]=_0x574f90['channel'];_0x23cd70[_0xe331('0x2b')][_0xe331('0x7b')]=_0x574f90[_0xe331('0x7a')];_0x23cd70[_0xe331('0x2b')][_0xe331('0x7c')]='reject';respondWithRpcPromise(_0xe331('0x7e'),_0xe331('0x7e'),{'event':_0xe331('0x86'),'message':_0x23cd70[_0xe331('0x2b')]},client9002);return _0x574f90;}return null;})[_0xe331('0x37')](respondWithResult(_0x140ccd,null))[_0xe331('0x5a')](handleError(_0x140ccd,null));};exports['create']=function(_0x5589c5,_0xfd91c7){var _0x5f5186;return db['FaxMessage'][_0xe331('0x87')](_0x5589c5[_0xe331('0x5b')],{})['then'](function(_0x247444){_0x5f5186=_0x247444;return db[_0xe331('0x88')][_0xe331('0x89')]({'where':{'id':_0x5f5186['ContactId']}});})[_0xe331('0x37')](function(_0x2002e7){if(_[_0xe331('0x67')](_0x2002e7)){return;}else{_0x5f5186[_0xe331('0x5e')]=_0x2002e7[_0xe331('0x5e')];return db[_0xe331('0x8a')][_0xe331('0x89')]({'where':{'id':_0x5f5186[_0xe331('0x8b')]}});}})[_0xe331('0x37')](function(_0x31b541){return respondWithRpcPromise('SendFax',_0xe331('0x8c'),{'FaxAccountId':_['isNil'](_0x5589c5[_0xe331('0x5b')])?undefined:_0x5589c5[_0xe331('0x5b')]['FaxAccountId'],'path':_[_0xe331('0x67')](_0x31b541)?undefined:util[_0xe331('0x85')]('/var/opt/motion2/server/files/attachments/%s',_0x31b541[_0xe331('0x8d')]),'fax':_['isNil'](_0x5f5186['fax'])?undefined:_0x5f5186[_0xe331('0x5e')],'AttachmentId':_0x5f5186[_0xe331('0x8b')]},client9002);})['then'](respondWithResult(_0xfd91c7,0xc9))[_0xe331('0x5a')](handleError(_0xfd91c7,null));};exports[_0xe331('0x8e')]=function(_0x422e1f,_0x2275ad){var _0x289ff2=path[_0xe331('0x8f')](config[_0xe331('0x90')],_0xe331('0x91'),_0xe331('0x92'),_0xe331('0x93'));return db[_0xe331('0x53')]['find']({'where':{'id':_0x422e1f[_0xe331('0x57')]['id']},'include':[{'model':db['Attachment'],'as':'Attachment'}]})['then'](handleEntityNotFound(_0x2275ad,null))[_0xe331('0x37')](function(_0x3f81df){if(_0x3f81df){return _0x2275ad[_0xe331('0x8e')](path[_0xe331('0x8f')](_0x289ff2,_0x3f81df['Attachment'][_0xe331('0x8d')]));}})[_0xe331('0x5a')](handleError(_0x2275ad,null));};
\ No newline at end of file
index 939febb..d5969a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d17=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','save'];(function(_0x1762b4,_0x33d836){var _0x29beda=function(_0x31c2fa){while(--_0x31c2fa){_0x1762b4['push'](_0x1762b4['shift']());}};_0x29beda(++_0x33d836);}(_0x5d17,0x114));var _0x75d1=function(_0x3f3b97,_0x395d93){_0x3f3b97=_0x3f3b97-0x0;var _0xb6ab0c=_0x5d17[_0x3f3b97];return _0xb6ab0c;};'use strict';var EventEmitter=require(_0x75d1('0x0'));var FaxMessage=require(_0x75d1('0x1'))['db']['FaxMessage'];var FaxMessageEvents=new EventEmitter();FaxMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x75d1('0x2'),'afterUpdate':_0x75d1('0x3'),'afterDestroy':_0x75d1('0x4')};function emitEvent(_0x5b3267){return function(_0x177460,_0x45d03a,_0x387e35){FaxMessageEvents[_0x75d1('0x5')](_0x5b3267+':'+_0x177460['id'],_0x177460);FaxMessageEvents['emit'](_0x5b3267,_0x177460);_0x387e35(null);};}for(var e in events){if(events[_0x75d1('0x6')](e)){var event=events[e];FaxMessage[_0x75d1('0x7')](e,emitEvent(event));}}module[_0x75d1('0x8')]=FaxMessageEvents;
\ No newline at end of file
+var _0x2eba=['FaxMessage','setMaxListeners','save','emit','../../mysqldb'];(function(_0x47a5bd,_0x508329){var _0x5c2184=function(_0x40ddea){while(--_0x40ddea){_0x47a5bd['push'](_0x47a5bd['shift']());}};_0x5c2184(++_0x508329);}(_0x2eba,0xc7));var _0xa2eb=function(_0x4bb04a,_0x2f3d99){_0x4bb04a=_0x4bb04a-0x0;var _0x25b905=_0x2eba[_0x4bb04a];return _0x25b905;};'use strict';var EventEmitter=require('events');var FaxMessage=require(_0xa2eb('0x0'))['db'][_0xa2eb('0x1')];var FaxMessageEvents=new EventEmitter();FaxMessageEvents[_0xa2eb('0x2')](0x0);var events={'afterCreate':_0xa2eb('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x45ff67){return function(_0x51ebed,_0x1544ff,_0x3174a0){FaxMessageEvents[_0xa2eb('0x4')](_0x45ff67+':'+_0x51ebed['id'],_0x51ebed);FaxMessageEvents[_0xa2eb('0x4')](_0x45ff67,_0x51ebed);_0x3174a0(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxMessage['hook'](e,emitEvent(event));}}module['exports']=FaxMessageEvents;
\ No newline at end of file
index 0c46944..64789f3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5aea=['isNil','findOne','FaxInteractionId','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxMessage.attributes','define','FaxMessage','fax_messages','fti_fax_messages','body','FULLTEXT','get','direction','toLowerCase','out'];(function(_0x37ff2a,_0x260ba4){var _0x54b493=function(_0x274d68){while(--_0x274d68){_0x37ff2a['push'](_0x37ff2a['shift']());}};_0x54b493(++_0x260ba4);}(_0x5aea,0xaa));var _0xa5ae=function(_0x2c5352,_0xc84c02){_0x2c5352=_0x2c5352-0x0;var _0x2c4ef1=_0x5aea[_0x2c5352];return _0x2c4ef1;};'use strict';var _=require(_0xa5ae('0x0'));var util=require('util');var logger=require(_0xa5ae('0x1'))('api');var moment=require(_0xa5ae('0x2'));var BPromise=require(_0xa5ae('0x3'));var rp=require(_0xa5ae('0x4'));var fs=require('fs');var path=require(_0xa5ae('0x5'));var rimraf=require(_0xa5ae('0x6'));var config=require(_0xa5ae('0x7'));var attributes=require(_0xa5ae('0x8'));module['exports']=function(_0x1eb892,_0x546910){return _0x1eb892[_0xa5ae('0x9')](_0xa5ae('0xa'),attributes,{'tableName':_0xa5ae('0xb'),'paranoid':![],'indexes':[{'name':_0xa5ae('0xc'),'fields':[_0xa5ae('0xd')],'type':_0xa5ae('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x2862b6,_0x2d0505,_0x1514ec){var _0x2819ac=_0x1eb892['models'];var _0x5e1ca7=_0x2862b6[_0xa5ae('0xf')]({'plain':!![]});if(_0x5e1ca7[_0xa5ae('0x10')][_0xa5ae('0x11')]()==='in'||_0x5e1ca7['direction']['toLowerCase']()===_0xa5ae('0x12')&&!_0x5e1ca7['secret']&&!_[_0xa5ae('0x13')](_0x5e1ca7['UserId'])){_0x2819ac['FaxInteraction'][_0xa5ae('0x14')]({'where':{'id':_0x5e1ca7[_0xa5ae('0x15')]}})['then'](function(_0x563c8c){if(_0x563c8c){_0x563c8c['update']({'lastMsgAt':_0x5e1ca7[_0xa5ae('0x16')],'lastMsgDirection':_0x5e1ca7[_0xa5ae('0x10')][_0xa5ae('0x11')]()});}})[_0xa5ae('0x17')](function(_0x35e4ce){console[_0xa5ae('0x18')](_0x35e4ce);});}_0x1514ec();}},'charset':_0xa5ae('0x19'),'collate':_0xa5ae('0x1a')});};
\ No newline at end of file
+var _0x8c79=['moment','bluebird','request-promise','./faxMessage.attributes','exports','define','FaxMessage','fax_messages','body','FULLTEXT','models','get','direction','toLowerCase','out','secret','isNil','UserId','FaxInteraction','FaxInteractionId','then','update','createdAt','catch','error','utf8mb4','lodash','util','api'];(function(_0x2af427,_0x1750c1){var _0x13bb48=function(_0x4dc46d){while(--_0x4dc46d){_0x2af427['push'](_0x2af427['shift']());}};_0x13bb48(++_0x1750c1);}(_0x8c79,0x1cd));var _0x98c7=function(_0x26ce0f,_0x5c2378){_0x26ce0f=_0x26ce0f-0x0;var _0x268931=_0x8c79[_0x26ce0f];return _0x268931;};'use strict';var _=require(_0x98c7('0x0'));var util=require(_0x98c7('0x1'));var logger=require('../../config/logger')(_0x98c7('0x2'));var moment=require(_0x98c7('0x3'));var BPromise=require(_0x98c7('0x4'));var rp=require(_0x98c7('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x98c7('0x6'));module[_0x98c7('0x7')]=function(_0x2f2fc6,_0xa5ec0c){return _0x2f2fc6[_0x98c7('0x8')](_0x98c7('0x9'),attributes,{'tableName':_0x98c7('0xa'),'paranoid':![],'indexes':[{'name':'fti_fax_messages','fields':[_0x98c7('0xb')],'type':_0x98c7('0xc')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x525fac,_0x33cd1d,_0x355673){var _0x1d0b21=_0x2f2fc6[_0x98c7('0xd')];var _0x272267=_0x525fac[_0x98c7('0xe')]({'plain':!![]});if(_0x272267[_0x98c7('0xf')]['toLowerCase']()==='in'||_0x272267[_0x98c7('0xf')][_0x98c7('0x10')]()===_0x98c7('0x11')&&!_0x272267[_0x98c7('0x12')]&&!_[_0x98c7('0x13')](_0x272267[_0x98c7('0x14')])){_0x1d0b21[_0x98c7('0x15')]['findOne']({'where':{'id':_0x272267[_0x98c7('0x16')]}})[_0x98c7('0x17')](function(_0x5cf5ec){if(_0x5cf5ec){_0x5cf5ec[_0x98c7('0x18')]({'lastMsgAt':_0x272267[_0x98c7('0x19')],'lastMsgDirection':_0x272267[_0x98c7('0xf')][_0x98c7('0x10')]()});}})[_0x98c7('0x1a')](function(_0x2f5a4f){console[_0x98c7('0x1b')](_0x2f5a4f);});}_0x355673();}},'charset':_0x98c7('0x1c'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 0b144fb..2c8d76e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb903=['options','raw','then','stringify','UpdateFaxMessage','update','where','attributes','limit','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','request','info','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','error','FaxMessage,\x20%s,\x20%s','message','result','catch','CreateFaxMessage','FaxMessage','create','body'];(function(_0xa13425,_0x16283d){var _0xf0b04e=function(_0x333452){while(--_0x333452){_0xa13425['push'](_0xa13425['shift']());}};_0xf0b04e(++_0x16283d);}(_0xb903,0x185));var _0x3b90=function(_0x501ca9,_0x2137e4){_0x501ca9=_0x501ca9-0x0;var _0x4ccc1d=_0xb903[_0x501ca9];return _0x4ccc1d;};'use strict';var _=require(_0x3b90('0x0'));var util=require(_0x3b90('0x1'));var moment=require(_0x3b90('0x2'));var BPromise=require(_0x3b90('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3b90('0x4'));var db=require(_0x3b90('0x5'))['db'];var utils=require(_0x3b90('0x6'));var logger=require(_0x3b90('0x7'))(_0x3b90('0x8'));var config=require(_0x3b90('0x9'));var jayson=require(_0x3b90('0xa'));var client=jayson['client'][_0x3b90('0xb')]({'port':0x232a});config['redis']=_['defaults'](config[_0x3b90('0xc')],{'host':_0x3b90('0xd'),'port':0x18eb});var socket=require(_0x3b90('0xe'))(new Redis(config[_0x3b90('0xc')]));require('./faxMessage.socket')['register'](socket);function respondWithRpcPromise(_0x52401e,_0x51f916,_0x56261b){return new BPromise(function(_0x55db3f,_0x336913){return client[_0x3b90('0xf')](_0x52401e,_0x56261b)['then'](function(_0x30c49c){logger[_0x3b90('0x10')]('FaxMessage,\x20%s,\x20%s',_0x51f916,_0x3b90('0x11'));logger[_0x3b90('0x12')](_0x3b90('0x13'),_0x51f916,'request\x20sent',JSON['stringify'](_0x30c49c));if(_0x30c49c[_0x3b90('0x14')]){if(_0x30c49c['error']['code']===0x1f4){logger[_0x3b90('0x14')](_0x3b90('0x15'),_0x51f916,_0x30c49c['error']['message']);return _0x336913(_0x30c49c[_0x3b90('0x14')][_0x3b90('0x16')]);}logger[_0x3b90('0x14')](_0x3b90('0x15'),_0x51f916,_0x30c49c[_0x3b90('0x14')]['message']);return _0x55db3f(_0x30c49c['error'][_0x3b90('0x16')]);}else{logger[_0x3b90('0x10')]('FaxMessage,\x20%s,\x20%s',_0x51f916,_0x3b90('0x11'));_0x55db3f(_0x30c49c[_0x3b90('0x17')][_0x3b90('0x16')]);}})[_0x3b90('0x18')](function(_0x4f388b){logger[_0x3b90('0x14')]('FaxMessage,\x20%s,\x20%s',_0x51f916,_0x4f388b);_0x336913(_0x4f388b);});});}exports[_0x3b90('0x19')]=function(_0x231690){var _0x535894=this;return new Promise(function(_0x39ae7c,_0x12e1cf){return db[_0x3b90('0x1a')][_0x3b90('0x1b')](_0x231690[_0x3b90('0x1c')],{'raw':_0x231690[_0x3b90('0x1d')]?_0x231690[_0x3b90('0x1d')][_0x3b90('0x1e')]===undefined?!![]:![]:!![]})[_0x3b90('0x1f')](function(_0x3e5bb8){logger['info'](_0x3b90('0x19'),_0x231690);logger[_0x3b90('0x12')](_0x3b90('0x19'),_0x231690,JSON[_0x3b90('0x20')](_0x3e5bb8));_0x39ae7c(_0x3e5bb8);})[_0x3b90('0x18')](function(_0x93b8e7){logger['error']('CreateFaxMessage',_0x93b8e7[_0x3b90('0x16')],_0x231690);_0x12e1cf(_0x535894[_0x3b90('0x14')](0x1f4,_0x93b8e7[_0x3b90('0x16')]));});});};exports[_0x3b90('0x21')]=function(_0x583523){var _0x414462=this;return new Promise(function(_0x2936d7,_0x1787d1){return db['FaxMessage'][_0x3b90('0x22')](_0x583523[_0x3b90('0x1c')],{'raw':_0x583523[_0x3b90('0x1d')]?_0x583523[_0x3b90('0x1d')][_0x3b90('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x583523[_0x3b90('0x1d')]?_0x583523['options'][_0x3b90('0x23')]||null:null,'attributes':_0x583523['options']?_0x583523[_0x3b90('0x1d')][_0x3b90('0x24')]||null:null,'limit':_0x583523[_0x3b90('0x1d')]?_0x583523[_0x3b90('0x1d')][_0x3b90('0x25')]||null:null})[_0x3b90('0x1f')](function(_0x290283){logger[_0x3b90('0x10')]('UpdateFaxMessage',_0x583523);logger['debug'](_0x3b90('0x21'),_0x583523,JSON[_0x3b90('0x20')](_0x290283));_0x2936d7(_0x290283);})[_0x3b90('0x18')](function(_0x1c2e84){logger['error']('UpdateFaxMessage',_0x1c2e84[_0x3b90('0x16')],_0x583523);_0x1787d1(_0x414462[_0x3b90('0x14')](0x1f4,_0x1c2e84[_0x3b90('0x16')]));});});};
\ No newline at end of file
+var _0x4ea3=['message','result','catch','body','options','CreateFaxMessage','update','where','attributes','UpdateFaxMessage','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./faxMessage.socket','request','then','info','FaxMessage,\x20%s,\x20%s','request\x20sent','debug','FaxMessage,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x2317af,_0x1332d3){var _0x3cb58d=function(_0x4e75a0){while(--_0x4e75a0){_0x2317af['push'](_0x2317af['shift']());}};_0x3cb58d(++_0x1332d3);}(_0x4ea3,0x70));var _0x34ea=function(_0x6c993a,_0x5ea3ab){_0x6c993a=_0x6c993a-0x0;var _0x27f547=_0x4ea3[_0x6c993a];return _0x27f547;};'use strict';var _=require(_0x34ea('0x0'));var util=require(_0x34ea('0x1'));var moment=require(_0x34ea('0x2'));var BPromise=require(_0x34ea('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x34ea('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x34ea('0x5'));var logger=require('../../config/logger')('rpc');var config=require(_0x34ea('0x6'));var jayson=require(_0x34ea('0x7'));var client=jayson[_0x34ea('0x8')][_0x34ea('0x9')]({'port':0x232a});config[_0x34ea('0xa')]=_[_0x34ea('0xb')](config[_0x34ea('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x34ea('0xc'))(new Redis(config[_0x34ea('0xa')]));require(_0x34ea('0xd'))['register'](socket);function respondWithRpcPromise(_0x301b98,_0xea1be2,_0x5126de){return new BPromise(function(_0x4a76b1,_0x5bd8b6){return client[_0x34ea('0xe')](_0x301b98,_0x5126de)[_0x34ea('0xf')](function(_0x58bb0d){logger[_0x34ea('0x10')](_0x34ea('0x11'),_0xea1be2,_0x34ea('0x12'));logger[_0x34ea('0x13')](_0x34ea('0x14'),_0xea1be2,_0x34ea('0x12'),JSON[_0x34ea('0x15')](_0x58bb0d));if(_0x58bb0d[_0x34ea('0x16')]){if(_0x58bb0d[_0x34ea('0x16')][_0x34ea('0x17')]===0x1f4){logger[_0x34ea('0x16')]('FaxMessage,\x20%s,\x20%s',_0xea1be2,_0x58bb0d[_0x34ea('0x16')][_0x34ea('0x18')]);return _0x5bd8b6(_0x58bb0d[_0x34ea('0x16')][_0x34ea('0x18')]);}logger[_0x34ea('0x16')]('FaxMessage,\x20%s,\x20%s',_0xea1be2,_0x58bb0d[_0x34ea('0x16')][_0x34ea('0x18')]);return _0x4a76b1(_0x58bb0d[_0x34ea('0x16')][_0x34ea('0x18')]);}else{logger['info'](_0x34ea('0x11'),_0xea1be2,_0x34ea('0x12'));_0x4a76b1(_0x58bb0d[_0x34ea('0x19')]['message']);}})[_0x34ea('0x1a')](function(_0x1353de){logger[_0x34ea('0x16')](_0x34ea('0x11'),_0xea1be2,_0x1353de);_0x5bd8b6(_0x1353de);});});}exports['CreateFaxMessage']=function(_0x2eea57){var _0x35328c=this;return new Promise(function(_0x287aaa,_0x247ee7){return db['FaxMessage']['create'](_0x2eea57[_0x34ea('0x1b')],{'raw':_0x2eea57[_0x34ea('0x1c')]?_0x2eea57[_0x34ea('0x1c')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x2eafc6){logger[_0x34ea('0x10')](_0x34ea('0x1d'),_0x2eea57);logger[_0x34ea('0x13')](_0x34ea('0x1d'),_0x2eea57,JSON[_0x34ea('0x15')](_0x2eafc6));_0x287aaa(_0x2eafc6);})['catch'](function(_0xf24962){logger[_0x34ea('0x16')](_0x34ea('0x1d'),_0xf24962[_0x34ea('0x18')],_0x2eea57);_0x247ee7(_0x35328c['error'](0x1f4,_0xf24962['message']));});});};exports['UpdateFaxMessage']=function(_0x142709){var _0x187306=this;return new Promise(function(_0x37c214,_0x4204d7){return db['FaxMessage'][_0x34ea('0x1e')](_0x142709[_0x34ea('0x1b')],{'raw':_0x142709[_0x34ea('0x1c')]?_0x142709['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x142709['options']?_0x142709['options'][_0x34ea('0x1f')]||null:null,'attributes':_0x142709[_0x34ea('0x1c')]?_0x142709[_0x34ea('0x1c')][_0x34ea('0x20')]||null:null,'limit':_0x142709['options']?_0x142709[_0x34ea('0x1c')]['limit']||null:null})[_0x34ea('0xf')](function(_0x4f2b77){logger[_0x34ea('0x10')](_0x34ea('0x21'),_0x142709);logger[_0x34ea('0x13')]('UpdateFaxMessage',_0x142709,JSON[_0x34ea('0x15')](_0x4f2b77));_0x37c214(_0x4f2b77);})[_0x34ea('0x1a')](function(_0x55c8ba){logger[_0x34ea('0x16')]('UpdateFaxMessage',_0x55c8ba[_0x34ea('0x18')],_0x142709);_0x4204d7(_0x187306[_0x34ea('0x16')](0x1f4,_0x55c8ba[_0x34ea('0x18')]));});});};
\ No newline at end of file
index 6c1e170..c88bcd5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6011=['update','emit','removeListener','length','faxMessage:','./faxMessage.events','save'];(function(_0x2652ef,_0x234230){var _0x2db578=function(_0x56b137){while(--_0x56b137){_0x2652ef['push'](_0x2652ef['shift']());}};_0x2db578(++_0x234230);}(_0x6011,0xad));var _0x1601=function(_0x229da6,_0x48137c){_0x229da6=_0x229da6-0x0;var _0x32330f=_0x6011[_0x229da6];return _0x32330f;};'use strict';var FaxMessageEvents=require(_0x1601('0x0'));var events=[_0x1601('0x1'),'remove',_0x1601('0x2')];function createListener(_0x787442,_0x205791){return function(_0x4fca38){_0x205791[_0x1601('0x3')](_0x787442,_0x4fca38);};}function removeListener(_0x119a1b,_0x16a566){return function(){FaxMessageEvents[_0x1601('0x4')](_0x119a1b,_0x16a566);};}exports['register']=function(_0x3fb76d){for(var _0x4ce3c7=0x0,_0x3441b6=events[_0x1601('0x5')];_0x4ce3c7<_0x3441b6;_0x4ce3c7++){var _0x48a237=events[_0x4ce3c7];var _0x169170=createListener(_0x1601('0x6')+_0x48a237,_0x3fb76d);FaxMessageEvents['on'](_0x48a237,_0x169170);}};
\ No newline at end of file
+var _0xcc4a=['register','remove','update','emit','removeListener'];(function(_0xa67796,_0x1e4ae3){var _0x5f10b=function(_0x24cc4a){while(--_0x24cc4a){_0xa67796['push'](_0xa67796['shift']());}};_0x5f10b(++_0x1e4ae3);}(_0xcc4a,0xd3));var _0xacc4=function(_0x53f940,_0x1e4088){_0x53f940=_0x53f940-0x0;var _0x365769=_0xcc4a[_0x53f940];return _0x365769;};'use strict';var FaxMessageEvents=require('./faxMessage.events');var events=['save',_0xacc4('0x0'),_0xacc4('0x1')];function createListener(_0x2c822a,_0x56a20d){return function(_0x34cb7f){_0x56a20d[_0xacc4('0x2')](_0x2c822a,_0x34cb7f);};}function removeListener(_0xf4431c,_0x2efc1c){return function(){FaxMessageEvents[_0xacc4('0x3')](_0xf4431c,_0x2efc1c);};}exports[_0xacc4('0x4')]=function(_0x3161c3){for(var _0x57b35f=0x0,_0x3f23bb=events['length'];_0x57b35f<_0x3f23bb;_0x57b35f++){var _0x62b3da=events[_0x57b35f];var _0x1c9913=createListener('faxMessage:'+_0x62b3da,_0x3161c3);FaxMessageEvents['on'](_0x62b3da,_0x1c9913);}};
\ No newline at end of file
index 73f1f16..f3fd408 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39cb=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','index','/describe','isAuthenticated','/:id','show','post','tracked','fax','faxmessage:create','create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','util','path','express'];(function(_0x5400a1,_0x2275aa){var _0x4006c7=function(_0x5002dc){while(--_0x5002dc){_0x5400a1['push'](_0x5400a1['shift']());}};_0x4006c7(++_0x2275aa);}(_0x39cb,0x1bd));var _0xb39c=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x39cb[_0x4b369d];return _0x571a98;};'use strict';var multer=require('multer');var util=require(_0xb39c('0x0'));var path=require(_0xb39c('0x1'));var timeout=require('connect-timeout');var express=require(_0xb39c('0x2'));var router=express[_0xb39c('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xb39c('0x4'));var interaction=require(_0xb39c('0x5'));var config=require(_0xb39c('0x6'));var controller=require(_0xb39c('0x7'));router[_0xb39c('0x8')]('/',auth['isAuthenticated'](),controller[_0xb39c('0x9')]);router[_0xb39c('0x8')](_0xb39c('0xa'),auth[_0xb39c('0xb')](),controller['describe']);router['get'](_0xb39c('0xc'),auth[_0xb39c('0xb')](),controller[_0xb39c('0xd')]);router[_0xb39c('0x8')]('/:id/download',auth['isAuthenticated'](),controller['download']);router[_0xb39c('0xe')]('/',auth[_0xb39c('0xb')](),interaction[_0xb39c('0xf')](_0xb39c('0x10'),_0xb39c('0x11')),controller[_0xb39c('0x12')]);router[_0xb39c('0x13')](_0xb39c('0xc'),auth['isAuthenticated'](),controller[_0xb39c('0x14')]);router[_0xb39c('0x13')](_0xb39c('0x15'),auth['isAuthenticated'](),controller[_0xb39c('0x16')]);router[_0xb39c('0x13')](_0xb39c('0x17'),auth[_0xb39c('0xb')](),controller[_0xb39c('0x18')]);router[_0xb39c('0x19')](_0xb39c('0xc'),auth['isAuthenticated'](),controller[_0xb39c('0x1a')]);module[_0xb39c('0x1b')]=router;
\ No newline at end of file
+var _0x96cc=['/:id/download','post','tracked','faxmessage:create','create','put','update','/:id/accept','/:id/reject','reject','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./faxMessage.controller','get','isAuthenticated','/describe','describe','/:id'];(function(_0x32ba0a,_0x283cbd){var _0xfd168e=function(_0x2ce0ad){while(--_0x2ce0ad){_0x32ba0a['push'](_0x32ba0a['shift']());}};_0xfd168e(++_0x283cbd);}(_0x96cc,0x16c));var _0xc96c=function(_0x52eeeb,_0x53db1b){_0x52eeeb=_0x52eeeb-0x0;var _0x11e54b=_0x96cc[_0x52eeeb];return _0x11e54b;};'use strict';var multer=require(_0xc96c('0x0'));var util=require('util');var path=require(_0xc96c('0x1'));var timeout=require('connect-timeout');var express=require(_0xc96c('0x2'));var router=express[_0xc96c('0x3')]();var fs_extra=require(_0xc96c('0x4'));var auth=require(_0xc96c('0x5'));var interaction=require(_0xc96c('0x6'));var config=require(_0xc96c('0x7'));var controller=require(_0xc96c('0x8'));router[_0xc96c('0x9')]('/',auth[_0xc96c('0xa')](),controller['index']);router[_0xc96c('0x9')](_0xc96c('0xb'),auth[_0xc96c('0xa')](),controller[_0xc96c('0xc')]);router[_0xc96c('0x9')](_0xc96c('0xd'),auth[_0xc96c('0xa')](),controller['show']);router[_0xc96c('0x9')](_0xc96c('0xe'),auth[_0xc96c('0xa')](),controller['download']);router[_0xc96c('0xf')]('/',auth['isAuthenticated'](),interaction[_0xc96c('0x10')]('fax',_0xc96c('0x11')),controller[_0xc96c('0x12')]);router[_0xc96c('0x13')](_0xc96c('0xd'),auth['isAuthenticated'](),controller[_0xc96c('0x14')]);router[_0xc96c('0x13')](_0xc96c('0x15'),auth[_0xc96c('0xa')](),controller['accept']);router[_0xc96c('0x13')](_0xc96c('0x16'),auth[_0xc96c('0xa')](),controller[_0xc96c('0x17')]);router[_0xc96c('0x18')](_0xc96c('0xd'),auth[_0xc96c('0xa')](),controller[_0xc96c('0x19')]);module[_0xc96c('0x1a')]=router;
\ No newline at end of file
index 552873e..3fe2bdd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7373=['STRING','name','INTEGER','ENUM','rrmemory','beepall','sequelize'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0x7373,0x1db));var _0x3737=function(_0x46a12d,_0x2bdf85){_0x46a12d=_0x46a12d-0x0;var _0x991f9d=_0x7373[_0x46a12d];return _0x991f9d;};'use strict';var Sequelize=require(_0x3737('0x0'));module['exports']={'name':{'type':Sequelize[_0x3737('0x1')],'unique':_0x3737('0x2'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x3737('0x1')]},'timeout':{'type':Sequelize[_0x3737('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x3737('0x4')](_0x3737('0x5'),_0x3737('0x6'),'roundrobin'),'allowNull':![]},'lastAgent':{'type':Sequelize[_0x3737('0x3')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x09a7=['roundrobin','sequelize','name','STRING','INTEGER','rrmemory'];(function(_0x2151e1,_0x50b443){var _0xfbeac7=function(_0x263690){while(--_0x263690){_0x2151e1['push'](_0x2151e1['shift']());}};_0xfbeac7(++_0x50b443);}(_0x09a7,0x15d));var _0x709a=function(_0x12cc8c,_0x17ec3a){_0x12cc8c=_0x12cc8c-0x0;var _0x4f79c5=_0x09a7[_0x12cc8c];return _0x4f79c5;};'use strict';var Sequelize=require(_0x709a('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'unique':_0x709a('0x1'),'allowNull':![],'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x709a('0x2')]},'timeout':{'type':Sequelize[_0x709a('0x3')],'allowNull':![],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x709a('0x4'),'beepall',_0x709a('0x5')),'allowNull':![]},'lastAgent':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index d213cfc..d29967d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b62=['update','then','destroy','get','FaxQueues','end','error','name','send','index','map','FaxQueue','fieldName','type','query','filters','model','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include','rows','catch','show','params','keys','length','find','create','body','user','role','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','getMembers','findOne','UserFaxQueue','rawAttributes','FaxQueueId','User','findAndCountAll','UserId','agent','faxPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','ids','findAll','Agents','online','interface','flatMap','findOrCreate','forEach','emit','userFaxQueue:save','select','field','from','team_has_fax_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','push','sequelize','SELECT','TeamId','includes','all','compact','value','transaction','removeTeams','removeAgents','userFaxQueue:remove','addAgents','omit','isArray','getAgents','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./faxQueue.socket','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply'];(function(_0x887807,_0x1fedb9){var _0x2fc062=function(_0x721d5c){while(--_0x721d5c){_0x887807['push'](_0x887807['shift']());}};_0x2fc062(++_0x1fedb9);}(_0x2b62,0x178));var _0x22b6=function(_0x165e16,_0x32dfb8){_0x165e16=_0x165e16-0x0;var _0x28b501=_0x2b62[_0x165e16];return _0x28b501;};'use strict';var emlformat=require(_0x22b6('0x0'));var rimraf=require(_0x22b6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x22b6('0x2'));var rp=require(_0x22b6('0x3'));var moment=require(_0x22b6('0x4'));var BPromise=require(_0x22b6('0x5'));var Mustache=require(_0x22b6('0x6'));var util=require(_0x22b6('0x7'));var path=require(_0x22b6('0x8'));var sox=require(_0x22b6('0x9'));var csv=require(_0x22b6('0xa'));var ejs=require(_0x22b6('0xb'));var fs=require('fs');var fs_extra=require(_0x22b6('0xc'));var _=require(_0x22b6('0xd'));var squel=require(_0x22b6('0xe'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x22b6('0xf'));var toCsv=require('to-csv');var querystring=require(_0x22b6('0x10'));var Papa=require('papaparse');var Redis=require(_0x22b6('0x11'));var authService=require(_0x22b6('0x12'));var qs=require(_0x22b6('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x22b6('0x14'));var logger=require(_0x22b6('0x15'))(_0x22b6('0x16'));var utils=require(_0x22b6('0x17'));var config=require(_0x22b6('0x18'));var licenseUtil=require(_0x22b6('0x19'));var db=require(_0x22b6('0x1a'))['db'];config[_0x22b6('0x1b')]=_[_0x22b6('0x1c')](config[_0x22b6('0x1b')],{'host':'localhost','port':0x18eb});var socket=require(_0x22b6('0x1d'))(new Redis(config[_0x22b6('0x1b')]));require(_0x22b6('0x1e'))['register'](socket);function respondWithStatusCode(_0x178bdf,_0x10a836){_0x10a836=_0x10a836||0xcc;return function(_0x52ee29){if(_0x52ee29){return _0x178bdf[_0x22b6('0x1f')](_0x10a836);}return _0x178bdf[_0x22b6('0x20')](_0x10a836)['end']();};}function respondWithResult(_0x35fbd7,_0x2d53c3){_0x2d53c3=_0x2d53c3||0xc8;return function(_0x358f08){if(_0x358f08){return _0x35fbd7[_0x22b6('0x20')](_0x2d53c3)[_0x22b6('0x21')](_0x358f08);}};}function respondWithFilteredResult(_0x33d1fe,_0xc7f3cb){return function(_0x1f3177){if(_0x1f3177){var _0x9a6cfc=typeof _0xc7f3cb[_0x22b6('0x22')]==='undefined'&&typeof _0xc7f3cb[_0x22b6('0x23')]===_0x22b6('0x24');var _0x1297fd=_0x1f3177[_0x22b6('0x25')];var _0xd0b33a=_0x9a6cfc?0x0:_0xc7f3cb[_0x22b6('0x22')];var _0x4ccd8c=_0x9a6cfc?_0x1f3177[_0x22b6('0x25')]:_0xc7f3cb[_0x22b6('0x22')]+_0xc7f3cb['limit'];var _0x681426;if(_0x4ccd8c>=_0x1297fd){_0x4ccd8c=_0x1297fd;_0x681426=0xc8;}else{_0x681426=0xce;}_0x33d1fe['status'](_0x681426);return _0x33d1fe[_0x22b6('0x26')](_0x22b6('0x27'),_0xd0b33a+'-'+_0x4ccd8c+'/'+_0x1297fd)[_0x22b6('0x21')](_0x1f3177);}return null;};}function patchUpdates(_0x8d0c5c){return function(_0x438d59){try{jsonpatch[_0x22b6('0x28')](_0x438d59,_0x8d0c5c,!![]);}catch(_0x12cfd0){return BPromise['reject'](_0x12cfd0);}return _0x438d59['save']();};}function saveUpdates(_0x2ef3de,_0x20a85d){return function(_0x4a40a){if(_0x4a40a){return _0x4a40a[_0x22b6('0x29')](_0x2ef3de)[_0x22b6('0x2a')](function(_0x120929){return _0x120929;});}return null;};}function removeEntity(_0x40c8f1,_0x16ed67){return function(_0x8aeb3d){if(_0x8aeb3d){return _0x8aeb3d[_0x22b6('0x2b')]()['then'](function(){var _0x5cc0f6=_0x8aeb3d[_0x22b6('0x2c')]({'plain':!![]});var _0x362bb3=_0x22b6('0x2d');return db['UserProfileResource']['destroy']({'where':{'type':_0x362bb3,'resourceId':_0x5cc0f6['id']}})[_0x22b6('0x2a')](function(){return _0x8aeb3d;});})[_0x22b6('0x2a')](function(){_0x40c8f1[_0x22b6('0x20')](0xcc)[_0x22b6('0x2e')]();});}};}function handleEntityNotFound(_0x6cc7f2,_0x9805ab){return function(_0x31b504){if(!_0x31b504){_0x6cc7f2[_0x22b6('0x1f')](0x194);}return _0x31b504;};}function handleError(_0x3ffff0,_0x44ab0c){_0x44ab0c=_0x44ab0c||0x1f4;return function(_0x54cfd1){logger[_0x22b6('0x2f')](_0x54cfd1['stack']);if(_0x54cfd1[_0x22b6('0x30')]){delete _0x54cfd1[_0x22b6('0x30')];}_0x3ffff0['status'](_0x44ab0c)[_0x22b6('0x31')](_0x54cfd1);};}exports[_0x22b6('0x32')]=function(_0x13bcbf,_0x4a7bc5){var _0x1929c2={},_0x163e8f={},_0x524299={'count':0x0,'rows':[]};var _0x4cea6e=_[_0x22b6('0x33')](db[_0x22b6('0x34')]['rawAttributes'],function(_0x1edacd){return{'name':_0x1edacd[_0x22b6('0x35')],'type':_0x1edacd[_0x22b6('0x36')]['key']};});_0x163e8f['model']=_['map'](_0x4cea6e,_0x22b6('0x30'));_0x163e8f[_0x22b6('0x37')]=_['keys'](_0x13bcbf[_0x22b6('0x37')]);_0x163e8f[_0x22b6('0x38')]=_['intersection'](_0x163e8f[_0x22b6('0x39')],_0x163e8f[_0x22b6('0x37')]);_0x1929c2[_0x22b6('0x3a')]=_[_0x22b6('0x3b')](_0x163e8f[_0x22b6('0x39')],qs[_0x22b6('0x3c')](_0x13bcbf[_0x22b6('0x37')]['fields']));_0x1929c2[_0x22b6('0x3a')]=_0x1929c2[_0x22b6('0x3a')]['length']?_0x1929c2[_0x22b6('0x3a')]:_0x163e8f['model'];if(!_0x13bcbf['query'][_0x22b6('0x3d')](_0x22b6('0x3e'))){_0x1929c2[_0x22b6('0x23')]=qs[_0x22b6('0x23')](_0x13bcbf[_0x22b6('0x37')][_0x22b6('0x23')]);_0x1929c2[_0x22b6('0x22')]=qs[_0x22b6('0x22')](_0x13bcbf[_0x22b6('0x37')]['offset']);}_0x1929c2[_0x22b6('0x3f')]=qs[_0x22b6('0x40')](_0x13bcbf['query'][_0x22b6('0x40')]);_0x1929c2[_0x22b6('0x41')]=qs['filters'](_[_0x22b6('0x42')](_0x13bcbf[_0x22b6('0x37')],_0x163e8f['filters']),_0x4cea6e);if(_0x13bcbf[_0x22b6('0x37')][_0x22b6('0x43')]){_0x1929c2['where']=_['merge'](_0x1929c2[_0x22b6('0x41')],{'$or':_[_0x22b6('0x33')](_0x4cea6e,function(_0x4f44ea){if(_0x4f44ea['type']!=='VIRTUAL'){var _0xdde39b={};_0xdde39b[_0x4f44ea['name']]={'$like':'%'+_0x13bcbf['query'][_0x22b6('0x43')]+'%'};return _0xdde39b;}})});}_0x1929c2=_[_0x22b6('0x44')]({},_0x1929c2,_0x13bcbf[_0x22b6('0x45')]);var _0x431a14={'where':_0x1929c2[_0x22b6('0x41')]};return db['FaxQueue']['count'](_0x431a14)['then'](function(_0x57f7d0){_0x524299[_0x22b6('0x25')]=_0x57f7d0;if(_0x13bcbf[_0x22b6('0x37')][_0x22b6('0x46')]){_0x1929c2[_0x22b6('0x47')]=[{'all':!![]}];}return db[_0x22b6('0x34')]['findAll'](_0x1929c2);})[_0x22b6('0x2a')](function(_0x5d698b){_0x524299[_0x22b6('0x48')]=_0x5d698b;return _0x524299;})['then'](respondWithFilteredResult(_0x4a7bc5,_0x1929c2))[_0x22b6('0x49')](handleError(_0x4a7bc5,null));};exports[_0x22b6('0x4a')]=function(_0x239d44,_0x5460a7){var _0x1edfed={'raw':!![],'where':{'id':_0x239d44[_0x22b6('0x4b')]['id']}},_0x399817={};_0x399817[_0x22b6('0x39')]=_[_0x22b6('0x4c')](db['FaxQueue']['rawAttributes']);_0x399817[_0x22b6('0x37')]=_[_0x22b6('0x4c')](_0x239d44[_0x22b6('0x37')]);_0x399817[_0x22b6('0x38')]=_[_0x22b6('0x3b')](_0x399817[_0x22b6('0x39')],_0x399817[_0x22b6('0x37')]);_0x1edfed['attributes']=_[_0x22b6('0x3b')](_0x399817[_0x22b6('0x39')],qs[_0x22b6('0x3c')](_0x239d44[_0x22b6('0x37')][_0x22b6('0x3c')]));_0x1edfed[_0x22b6('0x3a')]=_0x1edfed[_0x22b6('0x3a')][_0x22b6('0x4d')]?_0x1edfed[_0x22b6('0x3a')]:_0x399817[_0x22b6('0x39')];if(_0x239d44[_0x22b6('0x37')][_0x22b6('0x46')]){_0x1edfed[_0x22b6('0x47')]=[{'all':!![]}];}_0x1edfed=_['merge']({},_0x1edfed,_0x239d44[_0x22b6('0x45')]);return db['FaxQueue'][_0x22b6('0x4e')](_0x1edfed)[_0x22b6('0x2a')](handleEntityNotFound(_0x5460a7,null))['then'](respondWithResult(_0x5460a7,null))['catch'](handleError(_0x5460a7,null));};exports[_0x22b6('0x4f')]=function(_0x1967a6,_0x2b24e4){return db[_0x22b6('0x34')]['create'](_0x1967a6[_0x22b6('0x50')],{})['then'](function(_0x578747){var _0x1eea80=_0x1967a6[_0x22b6('0x51')][_0x22b6('0x2c')]({'plain':!![]});if(!_0x1eea80)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1eea80[_0x22b6('0x52')]===_0x22b6('0x51')){var _0x2309b7=_0x578747[_0x22b6('0x2c')]({'plain':!![]});var _0x4ddb60=_0x22b6('0x2d');return db['UserProfileSection'][_0x22b6('0x4e')]({'where':{'name':_0x4ddb60,'userProfileId':_0x1eea80['userProfileId']},'raw':!![]})[_0x22b6('0x2a')](function(_0x3e6b63){if(_0x3e6b63&&_0x3e6b63[_0x22b6('0x53')]===0x0){return db[_0x22b6('0x54')][_0x22b6('0x4f')]({'name':_0x2309b7[_0x22b6('0x30')],'resourceId':_0x2309b7['id'],'type':_0x3e6b63['name'],'sectionId':_0x3e6b63['id']},{})[_0x22b6('0x2a')](function(){return _0x578747;});}else{return _0x578747;}})['catch'](function(_0x2a97c0){logger[_0x22b6('0x2f')](_0x22b6('0x55'),_0x2a97c0);throw _0x2a97c0;});}return _0x578747;})[_0x22b6('0x2a')](respondWithResult(_0x2b24e4,0xc9))[_0x22b6('0x49')](handleError(_0x2b24e4,null));};exports[_0x22b6('0x29')]=function(_0xaa09f4,_0x9707ea){if(_0xaa09f4['body']['id']){delete _0xaa09f4['body']['id'];}return db['FaxQueue'][_0x22b6('0x4e')]({'where':{'id':_0xaa09f4[_0x22b6('0x4b')]['id']}})[_0x22b6('0x2a')](handleEntityNotFound(_0x9707ea,null))['then'](saveUpdates(_0xaa09f4[_0x22b6('0x50')],null))[_0x22b6('0x2a')](respondWithResult(_0x9707ea,null))[_0x22b6('0x49')](handleError(_0x9707ea,null));};exports[_0x22b6('0x2b')]=function(_0x30cbc6,_0x5d9c61){return db[_0x22b6('0x34')][_0x22b6('0x4e')]({'where':{'id':_0x30cbc6['params']['id']}})[_0x22b6('0x2a')](handleEntityNotFound(_0x5d9c61,null))[_0x22b6('0x2a')](removeEntity(_0x5d9c61,null))[_0x22b6('0x49')](handleError(_0x5d9c61,null));};exports['describe']=function(_0x4aa28a,_0x2be79d){return db['FaxQueue'][_0x22b6('0x56')]()['then'](respondWithResult(_0x2be79d,null))[_0x22b6('0x49')](handleError(_0x2be79d,null));};exports[_0x22b6('0x57')]=function(_0x5b5e2a,_0xe8a6a7,_0x4e18c5){var _0x24de37={'raw':!![],'where':{}},_0x4e6f16={},_0x4ea58b;return db['FaxQueue'][_0x22b6('0x58')]({'where':{'id':_0x5b5e2a[_0x22b6('0x4b')]['id']}})[_0x22b6('0x2a')](handleEntityNotFound(_0xe8a6a7,null))[_0x22b6('0x2a')](function(_0xc6e288){if(_0xc6e288){_0x4ea58b=_0xc6e288[_0x22b6('0x2c')]({'plain':!![]});_0x4e6f16[_0x22b6('0x39')]=_['keys'](db[_0x22b6('0x59')][_0x22b6('0x5a')]);_0x4e6f16[_0x22b6('0x37')]=_[_0x22b6('0x4c')](_0x5b5e2a[_0x22b6('0x37')]);_0x4e6f16[_0x22b6('0x38')]=_[_0x22b6('0x3b')](_0x4e6f16[_0x22b6('0x39')],_0x4e6f16['query']);_0x24de37[_0x22b6('0x3a')]=_[_0x22b6('0x3b')](_0x4e6f16['model'],qs['fields'](_0x5b5e2a['query'][_0x22b6('0x3c')]));_0x24de37[_0x22b6('0x3a')]=_0x24de37[_0x22b6('0x3a')]['length']?_0x24de37[_0x22b6('0x3a')]:_0x4e6f16['model'];if(!_0x5b5e2a[_0x22b6('0x37')][_0x22b6('0x3d')]('nolimit')){_0x24de37['limit']=qs[_0x22b6('0x23')](_0x5b5e2a['query'][_0x22b6('0x23')]);_0x24de37[_0x22b6('0x22')]=qs[_0x22b6('0x22')](_0x5b5e2a[_0x22b6('0x37')][_0x22b6('0x22')]);}_0x24de37[_0x22b6('0x3f')]=qs['sort'](_0x5b5e2a['query'][_0x22b6('0x40')]);_0x24de37[_0x22b6('0x41')]=qs['filters'](_[_0x22b6('0x42')](_0x5b5e2a[_0x22b6('0x37')],_0x4e6f16[_0x22b6('0x38')]));_0x24de37[_0x22b6('0x41')][_0x22b6('0x5b')]=_0xc6e288['id'];if(_0x5b5e2a['query'][_0x22b6('0x43')]){_0x24de37[_0x22b6('0x41')]=_['merge'](_0x24de37[_0x22b6('0x41')],{'$or':_['map'](_0x24de37[_0x22b6('0x3a')],function(_0x268051){var _0x1a3b49={};_0x1a3b49[_0x268051]={'$like':'%'+_0x5b5e2a['query']['filter']+'%'};return _0x1a3b49;})});}_0x24de37=_[_0x22b6('0x44')]({},_0x24de37,_0x5b5e2a[_0x22b6('0x45')]);return db['UserFaxQueue']['findAll'](_0x24de37);}})[_0x22b6('0x2a')](function(_0x1d7c56){if(_0x1d7c56){return db[_0x22b6('0x5c')][_0x22b6('0x5d')]({'where':{'id':_[_0x22b6('0x33')](_0x1d7c56,_0x22b6('0x5e')),'role':_0x22b6('0x5f')},'attributes':['id','name',_0x22b6('0x60'),_0x22b6('0x61'),_0x22b6('0x62')]});}})[_0x22b6('0x2a')](function(_0x2c8e62){if(_0x2c8e62){return{'count':_0x2c8e62[_0x22b6('0x25')],'rows':_[_0x22b6('0x33')](_0x2c8e62[_0x22b6('0x48')],function(_0x5d9f88){return{'membername':_0x5d9f88[_0x22b6('0x30')],'UserId':_0x5d9f88['id'],'queue_name':_0x4ea58b[_0x22b6('0x30')],'FaxQueueId':_0x4ea58b['id'],'interface':util[_0x22b6('0x63')](_0x22b6('0x64'),_0x22b6('0x65'),_0x5d9f88[_0x22b6('0x30')]),'penalty':0x0,'paused':_0x5d9f88[_0x22b6('0x60')],'createdAt':_0x5d9f88[_0x22b6('0x62')],'updatedAt':_0x5d9f88['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0xe8a6a7,_0x24de37))[_0x22b6('0x49')](handleError(_0xe8a6a7,null));};exports[_0x22b6('0x66')]=function(_0xad6ba9,_0x3bcb1a,_0x194947){var _0x589203={};var _0x2c2371={};var _0x456bb6;var _0x461076;return db['FaxQueue']['findOne']({'where':{'id':_0xad6ba9[_0x22b6('0x4b')]['id']}})[_0x22b6('0x2a')](handleEntityNotFound(_0x3bcb1a,null))['then'](function(_0xafecce){if(_0xafecce){_0x456bb6=_0xafecce;_0x2c2371[_0x22b6('0x39')]=_[_0x22b6('0x4c')](db[_0x22b6('0x67')][_0x22b6('0x5a')]);_0x2c2371[_0x22b6('0x37')]=_['keys'](_0xad6ba9[_0x22b6('0x37')]);_0x2c2371[_0x22b6('0x38')]=_[_0x22b6('0x3b')](_0x2c2371['model'],_0x2c2371[_0x22b6('0x37')]);_0x589203[_0x22b6('0x3a')]=_[_0x22b6('0x3b')](_0x2c2371[_0x22b6('0x39')],qs[_0x22b6('0x3c')](_0xad6ba9[_0x22b6('0x37')]['fields']));_0x589203[_0x22b6('0x3a')]=_0x589203[_0x22b6('0x3a')]['length']?_0x589203[_0x22b6('0x3a')]:_0x2c2371['model'];_0x589203[_0x22b6('0x3f')]=qs[_0x22b6('0x40')](_0xad6ba9[_0x22b6('0x37')][_0x22b6('0x40')]);_0x589203[_0x22b6('0x41')]=qs['filters'](_[_0x22b6('0x42')](_0xad6ba9[_0x22b6('0x37')],_0x2c2371[_0x22b6('0x38')]));if(_0xad6ba9[_0x22b6('0x37')][_0x22b6('0x43')]){_0x589203[_0x22b6('0x41')]=_[_0x22b6('0x44')](_0x589203[_0x22b6('0x41')],{'$or':_[_0x22b6('0x33')](_0x589203['attributes'],function(_0x56ca7d){var _0x27b678={};_0x27b678[_0x56ca7d]={'$like':'%'+_0xad6ba9[_0x22b6('0x37')][_0x22b6('0x43')]+'%'};return _0x27b678;})});}_0x589203=_[_0x22b6('0x44')]({},_0x589203,_0xad6ba9['options']);return _0x456bb6['getTeams'](_0x589203);}})[_0x22b6('0x2a')](function(_0x4e85fd){if(_0x4e85fd){_0x461076=_0x4e85fd[_0x22b6('0x4d')];if(!_0xad6ba9[_0x22b6('0x37')][_0x22b6('0x3d')](_0x22b6('0x3e'))){_0x589203[_0x22b6('0x23')]=qs[_0x22b6('0x23')](_0xad6ba9[_0x22b6('0x37')][_0x22b6('0x23')]);_0x589203[_0x22b6('0x22')]=qs[_0x22b6('0x22')](_0xad6ba9['query']['offset']);}return _0x456bb6[_0x22b6('0x66')](_0x589203);}})['then'](function(_0x3116e2){if(_0x3116e2){return _0x3116e2?{'count':_0x461076,'rows':_0x3116e2}:null;}})[_0x22b6('0x2a')](respondWithResult(_0x3bcb1a,null))['catch'](handleError(_0x3bcb1a,null));};exports[_0x22b6('0x68')]=function(_0x124425,_0x10e1c3,_0x3b3a9c){var _0x526a14=_0x124425[_0x22b6('0x50')][_0x22b6('0x69')];return db['Team'][_0x22b6('0x6a')]({'where':{'id':_0x526a14},'attributes':['id'],'include':[{'model':db[_0x22b6('0x5c')],'as':_0x22b6('0x6b'),'attributes':['id',_0x22b6('0x30'),_0x22b6('0x6c'),'voicePause',_0x22b6('0x6d')],'raw':!![]}]})[_0x22b6('0x2a')](function(_0x1eaa16){if(_0x1eaa16){var _0x404d1c=_[_0x22b6('0x6e')](_0x1eaa16,function(_0x40213d){var _0x1464fc=_0x40213d[_0x22b6('0x2c')]({'plain':!![]});return _0x1464fc[_0x22b6('0x6b')];});return db['FaxQueue'][_0x22b6('0x4e')]({'where':{'id':_0x124425[_0x22b6('0x4b')]['id']}})['then'](function(_0x140d85){return db['sequelize']['transaction'](function(_0x1e0eb7){return _0x140d85[_0x22b6('0x68')](_0x526a14,{'transaction':_0x1e0eb7})[_0x22b6('0x2a')](function(){return BPromise['each'](_0x404d1c,function(_0x1732b6){return db[_0x22b6('0x59')][_0x22b6('0x6f')]({'where':{'UserId':_0x1732b6['id'],'FaxQueueId':_0x124425['params']['id']},'transaction':_0x1e0eb7});});})[_0x22b6('0x2a')](function(){_0x404d1c[_0x22b6('0x70')](function(_0x19c79f){socket[_0x22b6('0x71')](_0x22b6('0x72'),{'UserId':_0x19c79f['id'],'FaxQueueId':_0x140d85['id']});});});});});}})[_0x22b6('0x2a')](respondWithStatusCode(_0x10e1c3,null))[_0x22b6('0x49')](handleError(_0x10e1c3,null));};exports['removeTeams']=function(_0x336112,_0x1e802f,_0x51831e){return db['Team'][_0x22b6('0x6a')]({'where':{'id':_0x336112[_0x22b6('0x37')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x22b6('0x6b'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x1e802f,null))['then'](function(_0x2aa4d8){var _0x467d19=_[_0x22b6('0x33')](_0x2aa4d8,'id');var _0x7f007e=[];var _0x309874=[];var _0x464f26=squel[_0x22b6('0x73')]();_0x464f26[_0x22b6('0x74')]('tq.TeamId')[_0x22b6('0x75')](_0x22b6('0x76'),'tq')[_0x22b6('0x77')](_0x22b6('0x78'),'ut',_0x22b6('0x79'))['where']('FaxQueueId\x20=\x20?',_0x336112[_0x22b6('0x4b')]['id']);for(var _0x100070=0x0;_0x100070<_0x2aa4d8[_0x22b6('0x4d')];_0x100070+=0x1){let _0x1578dc=_0x2aa4d8[_0x100070];for(var _0x1c6c5a=0x0;_0x1c6c5a<_0x1578dc[_0x22b6('0x6b')]['length'];_0x1c6c5a+=0x1){let _0x45f6d2=_0x1578dc[_0x22b6('0x6b')][_0x1c6c5a];var _0xda4f2e=_0x464f26['clone']();_0xda4f2e['where'](_0x22b6('0x7a'),_0x45f6d2['id']);_0x309874[_0x22b6('0x7b')](db['sequelize'][_0x22b6('0x37')](_0xda4f2e['toString'](),{'type':db[_0x22b6('0x7c')]['QueryTypes'][_0x22b6('0x7d')]})[_0x22b6('0x2a')](function(_0x1f4dc0){if(_0x1f4dc0[_0x22b6('0x4d')]===0x1){return _0x45f6d2['id'];}else{var _0x41f0ea=_['every'](_['map'](_0x1f4dc0,_0x22b6('0x7e')),function(_0x3573e1){return _[_0x22b6('0x7f')](_0x467d19,_0x3573e1);});if(_0x41f0ea){return _0x45f6d2['id'];}}}));}}return BPromise[_0x22b6('0x80')](_0x309874)['then'](function(_0x5eceaa){_0x7f007e=_(_0x7f007e)['union'](_0x5eceaa)[_0x22b6('0x81')]()[_0x22b6('0x82')]();return db[_0x22b6('0x34')][_0x22b6('0x4e')]({'where':{'id':_0x336112[_0x22b6('0x4b')]['id']}})[_0x22b6('0x2a')](function(_0x1c4749){return db['sequelize'][_0x22b6('0x83')](function(_0x147817){return _0x1c4749[_0x22b6('0x84')](_0x336112[_0x22b6('0x37')][_0x22b6('0x69')],{'transaction':_0x147817})[_0x22b6('0x2a')](function(){if(!_['isEmpty'](_0x7f007e)){return _0x1c4749[_0x22b6('0x85')](_0x7f007e,{'transaction':_0x147817});}})[_0x22b6('0x2a')](function(){_0x7f007e[_0x22b6('0x70')](function(_0x1409fa){socket['emit'](_0x22b6('0x86'),{'UserId':_0x1409fa,'FaxQueueId':_0x1c4749['id']});});});});});});})[_0x22b6('0x2a')](respondWithStatusCode(_0x1e802f,null))['catch'](handleError(_0x1e802f,null));};exports[_0x22b6('0x87')]=function(_0x568b97,_0x701d73,_0x2d4fca){return db[_0x22b6('0x34')][_0x22b6('0x4e')]({'where':{'id':_0x568b97[_0x22b6('0x4b')]['id']}})[_0x22b6('0x2a')](handleEntityNotFound(_0x701d73,null))[_0x22b6('0x2a')](function(_0x34aac9){if(_0x34aac9){return _0x34aac9[_0x22b6('0x87')](_0x568b97['body']['ids'],_[_0x22b6('0x88')](_0x568b97[_0x22b6('0x50')],['ids','id'])||{})['spread'](function(_0x38401a){for(var _0x1312cf=0x0;_0x1312cf<_0x568b97[_0x22b6('0x50')][_0x22b6('0x69')][_0x22b6('0x4d')];_0x1312cf+=0x1){socket[_0x22b6('0x71')](_0x22b6('0x72'),{'UserId':Number(_0x568b97[_0x22b6('0x50')]['ids'][_0x1312cf]),'FaxQueueId':Number(_0x568b97[_0x22b6('0x4b')]['id'])});}return _0x38401a;});}})[_0x22b6('0x2a')](respondWithResult(_0x701d73,null))[_0x22b6('0x49')](handleError(_0x701d73,null));};exports[_0x22b6('0x85')]=function(_0x3e8255,_0x5c91a8,_0x1f4d6b){return db['FaxQueue'][_0x22b6('0x4e')]({'where':{'id':_0x3e8255['params']['id']}})[_0x22b6('0x2a')](handleEntityNotFound(_0x5c91a8,null))[_0x22b6('0x2a')](function(_0x8c7227){if(_0x8c7227){return _0x8c7227[_0x22b6('0x85')](_0x3e8255[_0x22b6('0x37')][_0x22b6('0x69')])[_0x22b6('0x2a')](function(){if(_[_0x22b6('0x89')](_0x3e8255[_0x22b6('0x37')]['ids'])){for(var _0x433cf6=0x0;_0x433cf6<_0x3e8255[_0x22b6('0x37')][_0x22b6('0x69')][_0x22b6('0x4d')];_0x433cf6+=0x1){socket[_0x22b6('0x71')](_0x22b6('0x86'),{'UserId':Number(_0x3e8255[_0x22b6('0x37')][_0x22b6('0x69')][_0x433cf6]),'FaxQueueId':Number(_0x3e8255[_0x22b6('0x4b')]['id'])});}}else{socket[_0x22b6('0x71')](_0x22b6('0x86'),{'UserId':Number(_0x3e8255[_0x22b6('0x37')][_0x22b6('0x69')]),'FaxQueueId':Number(_0x3e8255['params']['id'])});}});}})[_0x22b6('0x2a')](respondWithStatusCode(_0x5c91a8,null))[_0x22b6('0x49')](handleError(_0x5c91a8,null));};exports['getAgents']=function(_0x216541,_0x3d4029,_0x398ba8){var _0x5a3ad5={};var _0x44d38a={};var _0x1442d5;var _0x5c6226;return db['FaxQueue'][_0x22b6('0x58')]({'where':{'id':_0x216541[_0x22b6('0x4b')]['id']}})[_0x22b6('0x2a')](handleEntityNotFound(_0x3d4029,null))['then'](function(_0x3d93a6){if(_0x3d93a6){_0x1442d5=_0x3d93a6;_0x44d38a[_0x22b6('0x39')]=_[_0x22b6('0x4c')](db[_0x22b6('0x5c')][_0x22b6('0x5a')]);_0x44d38a[_0x22b6('0x37')]=_[_0x22b6('0x4c')](_0x216541['query']);_0x44d38a[_0x22b6('0x38')]=_[_0x22b6('0x3b')](_0x44d38a[_0x22b6('0x39')],_0x44d38a[_0x22b6('0x37')]);_0x5a3ad5[_0x22b6('0x3a')]=_['intersection'](_0x44d38a['model'],qs[_0x22b6('0x3c')](_0x216541[_0x22b6('0x37')][_0x22b6('0x3c')]));_0x5a3ad5['attributes']=_0x5a3ad5[_0x22b6('0x3a')][_0x22b6('0x4d')]?_0x5a3ad5[_0x22b6('0x3a')]:_0x44d38a[_0x22b6('0x39')];_0x5a3ad5[_0x22b6('0x3f')]=qs[_0x22b6('0x40')](_0x216541[_0x22b6('0x37')][_0x22b6('0x40')]);_0x5a3ad5[_0x22b6('0x41')]=qs[_0x22b6('0x38')](_['pick'](_0x216541[_0x22b6('0x37')],_0x44d38a[_0x22b6('0x38')]));if(_0x216541['query']['filter']){_0x5a3ad5[_0x22b6('0x41')]=_[_0x22b6('0x44')](_0x5a3ad5['where'],{'$or':_['map'](_0x5a3ad5[_0x22b6('0x3a')],function(_0x43a59c){var _0x47ffca={};_0x47ffca[_0x43a59c]={'$like':'%'+_0x216541['query']['filter']+'%'};return _0x47ffca;})});}_0x5a3ad5=_[_0x22b6('0x44')]({},_0x5a3ad5,_0x216541['options']);return _0x1442d5[_0x22b6('0x8a')](_0x5a3ad5);}})[_0x22b6('0x2a')](function(_0x4fc8c0){if(_0x4fc8c0){_0x5c6226=_0x4fc8c0[_0x22b6('0x4d')];if(!_0x216541[_0x22b6('0x37')][_0x22b6('0x3d')](_0x22b6('0x3e'))){_0x5a3ad5[_0x22b6('0x23')]=qs[_0x22b6('0x23')](_0x216541[_0x22b6('0x37')][_0x22b6('0x23')]);_0x5a3ad5[_0x22b6('0x22')]=qs[_0x22b6('0x22')](_0x216541[_0x22b6('0x37')][_0x22b6('0x22')]);}return _0x1442d5[_0x22b6('0x8a')](_0x5a3ad5);}})[_0x22b6('0x2a')](function(_0x50aacd){if(_0x50aacd){return _0x50aacd?{'count':_0x5c6226,'rows':_0x50aacd}:null;}})[_0x22b6('0x2a')](respondWithResult(_0x3d4029,null))[_0x22b6('0x49')](handleError(_0x3d4029,null));};
\ No newline at end of file
+var _0x5be0=['findAndCountAll','UserId','createdAt','format','%s/%s','SIP','faxPause','getTeams','Team','ids','findAll','voicePause','flatMap','Agents','sequelize','transaction','addTeams','each','findOrCreate','userFaxQueue:save','removeTeams','select','field','tq.TeamId','team_has_fax_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','FaxQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','isEmpty','removeAgents','forEach','emit','userFaxQueue:remove','addAgents','spread','isArray','getAgents','User','zip-dir','request-promise','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','update','then','destroy','get','FaxQueues','error','name','send','index','map','FaxQueue','rawAttributes','fieldName','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','includeAll','rows','params','include','find','create','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','catch','body','describe','getMembers','findOne','UserFaxQueue','hasOwnProperty','FaxQueueId'];(function(_0xe51920,_0x4a1092){var _0x4e4c70=function(_0x71151){while(--_0x71151){_0xe51920['push'](_0xe51920['shift']());}};_0x4e4c70(++_0x4a1092);}(_0x5be0,0xb3));var _0x05be=function(_0x278607,_0x52f65f){_0x278607=_0x278607-0x0;var _0x162d37=_0x5be0[_0x278607];return _0x162d37;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x05be('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0x05be('0x1'));var moment=require('moment');var BPromise=require(_0x05be('0x2'));var Mustache=require('mustache');var util=require(_0x05be('0x3'));var path=require(_0x05be('0x4'));var sox=require(_0x05be('0x5'));var csv=require('to-csv');var ejs=require(_0x05be('0x6'));var fs=require('fs');var fs_extra=require(_0x05be('0x7'));var _=require(_0x05be('0x8'));var squel=require(_0x05be('0x9'));var crypto=require(_0x05be('0xa'));var jsforce=require(_0x05be('0xb'));var deskjs=require(_0x05be('0xc'));var toCsv=require(_0x05be('0xd'));var querystring=require('querystring');var Papa=require(_0x05be('0xe'));var Redis=require(_0x05be('0xf'));var authService=require(_0x05be('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x05be('0x11'));var logger=require('../../config/logger')(_0x05be('0x12'));var utils=require(_0x05be('0x13'));var config=require(_0x05be('0x14'));var licenseUtil=require(_0x05be('0x15'));var db=require('../../mysqldb')['db'];config[_0x05be('0x16')]=_[_0x05be('0x17')](config[_0x05be('0x16')],{'host':_0x05be('0x18'),'port':0x18eb});var socket=require(_0x05be('0x19'))(new Redis(config[_0x05be('0x16')]));require('./faxQueue.socket')['register'](socket);function respondWithStatusCode(_0x4550f4,_0x306ec3){_0x306ec3=_0x306ec3||0xcc;return function(_0x4d7a4a){if(_0x4d7a4a){return _0x4550f4[_0x05be('0x1a')](_0x306ec3);}return _0x4550f4[_0x05be('0x1b')](_0x306ec3)[_0x05be('0x1c')]();};}function respondWithResult(_0x435e79,_0xc2a811){_0xc2a811=_0xc2a811||0xc8;return function(_0x324de6){if(_0x324de6){return _0x435e79[_0x05be('0x1b')](_0xc2a811)[_0x05be('0x1d')](_0x324de6);}};}function respondWithFilteredResult(_0x1d3c8d,_0x1e35f3){return function(_0x3c562d){if(_0x3c562d){var _0x2693ff=typeof _0x1e35f3[_0x05be('0x1e')]===_0x05be('0x1f')&&typeof _0x1e35f3[_0x05be('0x20')]==='undefined';var _0x5e8794=_0x3c562d[_0x05be('0x21')];var _0x3ef826=_0x2693ff?0x0:_0x1e35f3['offset'];var _0x2b878c=_0x2693ff?_0x3c562d[_0x05be('0x21')]:_0x1e35f3[_0x05be('0x1e')]+_0x1e35f3['limit'];var _0x7f911a;if(_0x2b878c>=_0x5e8794){_0x2b878c=_0x5e8794;_0x7f911a=0xc8;}else{_0x7f911a=0xce;}_0x1d3c8d[_0x05be('0x1b')](_0x7f911a);return _0x1d3c8d[_0x05be('0x22')]('Content-Range',_0x3ef826+'-'+_0x2b878c+'/'+_0x5e8794)[_0x05be('0x1d')](_0x3c562d);}return null;};}function patchUpdates(_0x24e885){return function(_0x3b64de){try{jsonpatch[_0x05be('0x23')](_0x3b64de,_0x24e885,!![]);}catch(_0x5acdf1){return BPromise['reject'](_0x5acdf1);}return _0x3b64de['save']();};}function saveUpdates(_0x55a708,_0x1da54d){return function(_0x248445){if(_0x248445){return _0x248445[_0x05be('0x24')](_0x55a708)[_0x05be('0x25')](function(_0x35301f){return _0x35301f;});}return null;};}function removeEntity(_0x5f5129,_0x4d943c){return function(_0x2a6665){if(_0x2a6665){return _0x2a6665[_0x05be('0x26')]()[_0x05be('0x25')](function(){var _0x1be8d1=_0x2a6665[_0x05be('0x27')]({'plain':!![]});var _0x399c7f=_0x05be('0x28');return db['UserProfileResource']['destroy']({'where':{'type':_0x399c7f,'resourceId':_0x1be8d1['id']}})['then'](function(){return _0x2a6665;});})['then'](function(){_0x5f5129['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4ead5d,_0x1cda59){return function(_0x4614ad){if(!_0x4614ad){_0x4ead5d[_0x05be('0x1a')](0x194);}return _0x4614ad;};}function handleError(_0x41b667,_0x2634ed){_0x2634ed=_0x2634ed||0x1f4;return function(_0x52d34f){logger[_0x05be('0x29')](_0x52d34f['stack']);if(_0x52d34f[_0x05be('0x2a')]){delete _0x52d34f[_0x05be('0x2a')];}_0x41b667[_0x05be('0x1b')](_0x2634ed)[_0x05be('0x2b')](_0x52d34f);};}exports[_0x05be('0x2c')]=function(_0x3cc857,_0x56d1ef){var _0x52f614={},_0x5f5d73={},_0x52d1a6={'count':0x0,'rows':[]};var _0x4ad377=_[_0x05be('0x2d')](db[_0x05be('0x2e')][_0x05be('0x2f')],function(_0x136361){return{'name':_0x136361[_0x05be('0x30')],'type':_0x136361['type']['key']};});_0x5f5d73['model']=_['map'](_0x4ad377,_0x05be('0x2a'));_0x5f5d73[_0x05be('0x31')]=_[_0x05be('0x32')](_0x3cc857[_0x05be('0x31')]);_0x5f5d73[_0x05be('0x33')]=_[_0x05be('0x34')](_0x5f5d73[_0x05be('0x35')],_0x5f5d73[_0x05be('0x31')]);_0x52f614[_0x05be('0x36')]=_[_0x05be('0x34')](_0x5f5d73[_0x05be('0x35')],qs[_0x05be('0x37')](_0x3cc857[_0x05be('0x31')]['fields']));_0x52f614[_0x05be('0x36')]=_0x52f614[_0x05be('0x36')][_0x05be('0x38')]?_0x52f614['attributes']:_0x5f5d73[_0x05be('0x35')];if(!_0x3cc857[_0x05be('0x31')]['hasOwnProperty'](_0x05be('0x39'))){_0x52f614[_0x05be('0x20')]=qs[_0x05be('0x20')](_0x3cc857[_0x05be('0x31')]['limit']);_0x52f614['offset']=qs[_0x05be('0x1e')](_0x3cc857['query'][_0x05be('0x1e')]);}_0x52f614[_0x05be('0x3a')]=qs[_0x05be('0x3b')](_0x3cc857['query'][_0x05be('0x3b')]);_0x52f614[_0x05be('0x3c')]=qs[_0x05be('0x33')](_[_0x05be('0x3d')](_0x3cc857[_0x05be('0x31')],_0x5f5d73[_0x05be('0x33')]),_0x4ad377);if(_0x3cc857['query'][_0x05be('0x3e')]){_0x52f614[_0x05be('0x3c')]=_[_0x05be('0x3f')](_0x52f614[_0x05be('0x3c')],{'$or':_['map'](_0x4ad377,function(_0x4ec37d){if(_0x4ec37d['type']!=='VIRTUAL'){var _0x47f716={};_0x47f716[_0x4ec37d[_0x05be('0x2a')]]={'$like':'%'+_0x3cc857[_0x05be('0x31')][_0x05be('0x3e')]+'%'};return _0x47f716;}})});}_0x52f614=_['merge']({},_0x52f614,_0x3cc857[_0x05be('0x40')]);var _0x5b89c6={'where':_0x52f614[_0x05be('0x3c')]};return db[_0x05be('0x2e')][_0x05be('0x21')](_0x5b89c6)[_0x05be('0x25')](function(_0x32dc42){_0x52d1a6[_0x05be('0x21')]=_0x32dc42;if(_0x3cc857[_0x05be('0x31')][_0x05be('0x41')]){_0x52f614['include']=[{'all':!![]}];}return db['FaxQueue']['findAll'](_0x52f614);})[_0x05be('0x25')](function(_0x6450c3){_0x52d1a6[_0x05be('0x42')]=_0x6450c3;return _0x52d1a6;})['then'](respondWithFilteredResult(_0x56d1ef,_0x52f614))['catch'](handleError(_0x56d1ef,null));};exports['show']=function(_0x3dba05,_0x241cb4){var _0x2522d4={'raw':!![],'where':{'id':_0x3dba05[_0x05be('0x43')]['id']}},_0x4b420e={};_0x4b420e['model']=_['keys'](db['FaxQueue'][_0x05be('0x2f')]);_0x4b420e[_0x05be('0x31')]=_['keys'](_0x3dba05[_0x05be('0x31')]);_0x4b420e[_0x05be('0x33')]=_[_0x05be('0x34')](_0x4b420e['model'],_0x4b420e[_0x05be('0x31')]);_0x2522d4[_0x05be('0x36')]=_[_0x05be('0x34')](_0x4b420e[_0x05be('0x35')],qs[_0x05be('0x37')](_0x3dba05[_0x05be('0x31')][_0x05be('0x37')]));_0x2522d4['attributes']=_0x2522d4[_0x05be('0x36')][_0x05be('0x38')]?_0x2522d4['attributes']:_0x4b420e[_0x05be('0x35')];if(_0x3dba05[_0x05be('0x31')]['includeAll']){_0x2522d4[_0x05be('0x44')]=[{'all':!![]}];}_0x2522d4=_[_0x05be('0x3f')]({},_0x2522d4,_0x3dba05[_0x05be('0x40')]);return db['FaxQueue'][_0x05be('0x45')](_0x2522d4)[_0x05be('0x25')](handleEntityNotFound(_0x241cb4,null))['then'](respondWithResult(_0x241cb4,null))['catch'](handleError(_0x241cb4,null));};exports['create']=function(_0x244adb,_0x34bb74){return db[_0x05be('0x2e')][_0x05be('0x46')](_0x244adb['body'],{})['then'](function(_0x16d08a){var _0xf7473e=_0x244adb['user'][_0x05be('0x27')]({'plain':!![]});if(!_0xf7473e)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0xf7473e['role']==='user'){var _0x17950e=_0x16d08a[_0x05be('0x27')]({'plain':!![]});var _0x54cf40=_0x05be('0x28');return db['UserProfileSection'][_0x05be('0x45')]({'where':{'name':_0x54cf40,'userProfileId':_0xf7473e[_0x05be('0x47')]},'raw':!![]})[_0x05be('0x25')](function(_0x2e74b3){if(_0x2e74b3&&_0x2e74b3[_0x05be('0x48')]===0x0){return db[_0x05be('0x49')]['create']({'name':_0x17950e[_0x05be('0x2a')],'resourceId':_0x17950e['id'],'type':_0x2e74b3[_0x05be('0x2a')],'sectionId':_0x2e74b3['id']},{})['then'](function(){return _0x16d08a;});}else{return _0x16d08a;}})['catch'](function(_0x61e173){logger[_0x05be('0x29')](_0x05be('0x4a'),_0x61e173);throw _0x61e173;});}return _0x16d08a;})[_0x05be('0x25')](respondWithResult(_0x34bb74,0xc9))[_0x05be('0x4b')](handleError(_0x34bb74,null));};exports[_0x05be('0x24')]=function(_0x5cafa0,_0x3e13a2){if(_0x5cafa0[_0x05be('0x4c')]['id']){delete _0x5cafa0['body']['id'];}return db['FaxQueue']['find']({'where':{'id':_0x5cafa0[_0x05be('0x43')]['id']}})[_0x05be('0x25')](handleEntityNotFound(_0x3e13a2,null))[_0x05be('0x25')](saveUpdates(_0x5cafa0['body'],null))['then'](respondWithResult(_0x3e13a2,null))[_0x05be('0x4b')](handleError(_0x3e13a2,null));};exports[_0x05be('0x26')]=function(_0x5205cf,_0x40b997){return db[_0x05be('0x2e')][_0x05be('0x45')]({'where':{'id':_0x5205cf[_0x05be('0x43')]['id']}})[_0x05be('0x25')](handleEntityNotFound(_0x40b997,null))['then'](removeEntity(_0x40b997,null))[_0x05be('0x4b')](handleError(_0x40b997,null));};exports[_0x05be('0x4d')]=function(_0x51b46c,_0x4ef451){return db[_0x05be('0x2e')][_0x05be('0x4d')]()[_0x05be('0x25')](respondWithResult(_0x4ef451,null))[_0x05be('0x4b')](handleError(_0x4ef451,null));};exports[_0x05be('0x4e')]=function(_0x145ad3,_0x32a42d,_0x32bdfc){var _0x211e8f={'raw':!![],'where':{}},_0x23fbef={},_0x71ca87;return db['FaxQueue'][_0x05be('0x4f')]({'where':{'id':_0x145ad3['params']['id']}})[_0x05be('0x25')](handleEntityNotFound(_0x32a42d,null))[_0x05be('0x25')](function(_0x4c7d2e){if(_0x4c7d2e){_0x71ca87=_0x4c7d2e[_0x05be('0x27')]({'plain':!![]});_0x23fbef['model']=_['keys'](db[_0x05be('0x50')]['rawAttributes']);_0x23fbef[_0x05be('0x31')]=_[_0x05be('0x32')](_0x145ad3['query']);_0x23fbef[_0x05be('0x33')]=_['intersection'](_0x23fbef[_0x05be('0x35')],_0x23fbef[_0x05be('0x31')]);_0x211e8f[_0x05be('0x36')]=_[_0x05be('0x34')](_0x23fbef[_0x05be('0x35')],qs[_0x05be('0x37')](_0x145ad3[_0x05be('0x31')]['fields']));_0x211e8f[_0x05be('0x36')]=_0x211e8f['attributes'][_0x05be('0x38')]?_0x211e8f[_0x05be('0x36')]:_0x23fbef[_0x05be('0x35')];if(!_0x145ad3['query'][_0x05be('0x51')]('nolimit')){_0x211e8f[_0x05be('0x20')]=qs[_0x05be('0x20')](_0x145ad3[_0x05be('0x31')][_0x05be('0x20')]);_0x211e8f[_0x05be('0x1e')]=qs[_0x05be('0x1e')](_0x145ad3[_0x05be('0x31')][_0x05be('0x1e')]);}_0x211e8f[_0x05be('0x3a')]=qs['sort'](_0x145ad3[_0x05be('0x31')][_0x05be('0x3b')]);_0x211e8f['where']=qs[_0x05be('0x33')](_[_0x05be('0x3d')](_0x145ad3[_0x05be('0x31')],_0x23fbef[_0x05be('0x33')]));_0x211e8f[_0x05be('0x3c')][_0x05be('0x52')]=_0x4c7d2e['id'];if(_0x145ad3[_0x05be('0x31')][_0x05be('0x3e')]){_0x211e8f[_0x05be('0x3c')]=_[_0x05be('0x3f')](_0x211e8f[_0x05be('0x3c')],{'$or':_[_0x05be('0x2d')](_0x211e8f[_0x05be('0x36')],function(_0x550a93){var _0x3757d3={};_0x3757d3[_0x550a93]={'$like':'%'+_0x145ad3[_0x05be('0x31')]['filter']+'%'};return _0x3757d3;})});}_0x211e8f=_['merge']({},_0x211e8f,_0x145ad3[_0x05be('0x40')]);return db[_0x05be('0x50')]['findAll'](_0x211e8f);}})[_0x05be('0x25')](function(_0x91dff0){if(_0x91dff0){return db['User'][_0x05be('0x53')]({'where':{'id':_[_0x05be('0x2d')](_0x91dff0,_0x05be('0x54')),'role':'agent'},'attributes':['id','name','faxPause','updatedAt',_0x05be('0x55')]});}})['then'](function(_0xb06b1b){if(_0xb06b1b){return{'count':_0xb06b1b[_0x05be('0x21')],'rows':_[_0x05be('0x2d')](_0xb06b1b[_0x05be('0x42')],function(_0x123eec){return{'membername':_0x123eec[_0x05be('0x2a')],'UserId':_0x123eec['id'],'queue_name':_0x71ca87[_0x05be('0x2a')],'FaxQueueId':_0x71ca87['id'],'interface':util[_0x05be('0x56')](_0x05be('0x57'),_0x05be('0x58'),_0x123eec[_0x05be('0x2a')]),'penalty':0x0,'paused':_0x123eec[_0x05be('0x59')],'createdAt':_0x123eec[_0x05be('0x55')],'updatedAt':_0x123eec['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x32a42d,_0x211e8f))['catch'](handleError(_0x32a42d,null));};exports[_0x05be('0x5a')]=function(_0x3f6b53,_0x287c72,_0x440ccb){var _0x464064={};var _0x3026e8={};var _0x59fc89;var _0x768ef;return db['FaxQueue'][_0x05be('0x4f')]({'where':{'id':_0x3f6b53[_0x05be('0x43')]['id']}})['then'](handleEntityNotFound(_0x287c72,null))['then'](function(_0x3a3802){if(_0x3a3802){_0x59fc89=_0x3a3802;_0x3026e8[_0x05be('0x35')]=_[_0x05be('0x32')](db[_0x05be('0x5b')][_0x05be('0x2f')]);_0x3026e8[_0x05be('0x31')]=_['keys'](_0x3f6b53[_0x05be('0x31')]);_0x3026e8[_0x05be('0x33')]=_[_0x05be('0x34')](_0x3026e8[_0x05be('0x35')],_0x3026e8['query']);_0x464064[_0x05be('0x36')]=_[_0x05be('0x34')](_0x3026e8[_0x05be('0x35')],qs[_0x05be('0x37')](_0x3f6b53[_0x05be('0x31')][_0x05be('0x37')]));_0x464064[_0x05be('0x36')]=_0x464064['attributes'][_0x05be('0x38')]?_0x464064[_0x05be('0x36')]:_0x3026e8[_0x05be('0x35')];_0x464064[_0x05be('0x3a')]=qs['sort'](_0x3f6b53[_0x05be('0x31')][_0x05be('0x3b')]);_0x464064[_0x05be('0x3c')]=qs[_0x05be('0x33')](_['pick'](_0x3f6b53[_0x05be('0x31')],_0x3026e8['filters']));if(_0x3f6b53[_0x05be('0x31')]['filter']){_0x464064[_0x05be('0x3c')]=_[_0x05be('0x3f')](_0x464064['where'],{'$or':_[_0x05be('0x2d')](_0x464064['attributes'],function(_0x4cb6bb){var _0x7359a4={};_0x7359a4[_0x4cb6bb]={'$like':'%'+_0x3f6b53[_0x05be('0x31')][_0x05be('0x3e')]+'%'};return _0x7359a4;})});}_0x464064=_[_0x05be('0x3f')]({},_0x464064,_0x3f6b53['options']);return _0x59fc89[_0x05be('0x5a')](_0x464064);}})[_0x05be('0x25')](function(_0x3a071c){if(_0x3a071c){_0x768ef=_0x3a071c[_0x05be('0x38')];if(!_0x3f6b53[_0x05be('0x31')][_0x05be('0x51')](_0x05be('0x39'))){_0x464064[_0x05be('0x20')]=qs['limit'](_0x3f6b53[_0x05be('0x31')][_0x05be('0x20')]);_0x464064[_0x05be('0x1e')]=qs[_0x05be('0x1e')](_0x3f6b53[_0x05be('0x31')][_0x05be('0x1e')]);}return _0x59fc89['getTeams'](_0x464064);}})[_0x05be('0x25')](function(_0x2c84b9){if(_0x2c84b9){return _0x2c84b9?{'count':_0x768ef,'rows':_0x2c84b9}:null;}})['then'](respondWithResult(_0x287c72,null))[_0x05be('0x4b')](handleError(_0x287c72,null));};exports['addTeams']=function(_0x4b24e4,_0x1c1cc6,_0x5213ce){var _0x3dbbbf=_0x4b24e4['body'][_0x05be('0x5c')];return db[_0x05be('0x5b')][_0x05be('0x5d')]({'where':{'id':_0x3dbbbf},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0x05be('0x2a'),'online',_0x05be('0x5e'),'interface'],'raw':!![]}]})[_0x05be('0x25')](function(_0x4d8dae){if(_0x4d8dae){var _0x3f94eb=_[_0x05be('0x5f')](_0x4d8dae,function(_0x39dc5d){var _0x576f84=_0x39dc5d[_0x05be('0x27')]({'plain':!![]});return _0x576f84[_0x05be('0x60')];});return db['FaxQueue']['find']({'where':{'id':_0x4b24e4[_0x05be('0x43')]['id']}})[_0x05be('0x25')](function(_0x46fbd3){return db[_0x05be('0x61')][_0x05be('0x62')](function(_0xfc28fb){return _0x46fbd3[_0x05be('0x63')](_0x3dbbbf,{'transaction':_0xfc28fb})[_0x05be('0x25')](function(){return BPromise[_0x05be('0x64')](_0x3f94eb,function(_0x24701a){return db[_0x05be('0x50')][_0x05be('0x65')]({'where':{'UserId':_0x24701a['id'],'FaxQueueId':_0x4b24e4[_0x05be('0x43')]['id']},'transaction':_0xfc28fb});});})[_0x05be('0x25')](function(){_0x3f94eb['forEach'](function(_0x5eceda){socket['emit'](_0x05be('0x66'),{'UserId':_0x5eceda['id'],'FaxQueueId':_0x46fbd3['id']});});});});});}})[_0x05be('0x25')](respondWithStatusCode(_0x1c1cc6,null))['catch'](handleError(_0x1c1cc6,null));};exports[_0x05be('0x67')]=function(_0x20c240,_0xdf1fd9,_0x278daa){return db[_0x05be('0x5b')][_0x05be('0x5d')]({'where':{'id':_0x20c240[_0x05be('0x31')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0xdf1fd9,null))['then'](function(_0x59c872){var _0x1f646b=_[_0x05be('0x2d')](_0x59c872,'id');var _0x3ab253=[];var _0x5cf48a=[];var _0x1710f5=squel[_0x05be('0x68')]();_0x1710f5[_0x05be('0x69')](_0x05be('0x6a'))['from'](_0x05be('0x6b'),'tq')[_0x05be('0x6c')](_0x05be('0x6d'),'ut',_0x05be('0x6e'))[_0x05be('0x3c')](_0x05be('0x6f'),_0x20c240[_0x05be('0x43')]['id']);for(var _0x50fa18=0x0;_0x50fa18<_0x59c872[_0x05be('0x38')];_0x50fa18+=0x1){let _0x5db8cb=_0x59c872[_0x50fa18];for(var _0x383bb3=0x0;_0x383bb3<_0x5db8cb[_0x05be('0x60')][_0x05be('0x38')];_0x383bb3+=0x1){let _0x1af492=_0x5db8cb[_0x05be('0x60')][_0x383bb3];var _0x37ba4b=_0x1710f5['clone']();_0x37ba4b[_0x05be('0x3c')](_0x05be('0x70'),_0x1af492['id']);_0x5cf48a[_0x05be('0x71')](db[_0x05be('0x61')][_0x05be('0x31')](_0x37ba4b[_0x05be('0x72')](),{'type':db[_0x05be('0x61')][_0x05be('0x73')][_0x05be('0x74')]})[_0x05be('0x25')](function(_0x5ac644){if(_0x5ac644[_0x05be('0x38')]===0x1){return _0x1af492['id'];}else{var _0x2d912a=_[_0x05be('0x75')](_['map'](_0x5ac644,_0x05be('0x76')),function(_0x180926){return _[_0x05be('0x77')](_0x1f646b,_0x180926);});if(_0x2d912a){return _0x1af492['id'];}}}));}}return BPromise[_0x05be('0x78')](_0x5cf48a)[_0x05be('0x25')](function(_0xce87b6){_0x3ab253=_(_0x3ab253)['union'](_0xce87b6)['compact']()['value']();return db['FaxQueue'][_0x05be('0x45')]({'where':{'id':_0x20c240[_0x05be('0x43')]['id']}})['then'](function(_0x356bd6){return db[_0x05be('0x61')]['transaction'](function(_0x217242){return _0x356bd6['removeTeams'](_0x20c240['query'][_0x05be('0x5c')],{'transaction':_0x217242})[_0x05be('0x25')](function(){if(!_[_0x05be('0x79')](_0x3ab253)){return _0x356bd6[_0x05be('0x7a')](_0x3ab253,{'transaction':_0x217242});}})[_0x05be('0x25')](function(){_0x3ab253[_0x05be('0x7b')](function(_0x22d318){socket[_0x05be('0x7c')](_0x05be('0x7d'),{'UserId':_0x22d318,'FaxQueueId':_0x356bd6['id']});});});});});});})[_0x05be('0x25')](respondWithStatusCode(_0xdf1fd9,null))[_0x05be('0x4b')](handleError(_0xdf1fd9,null));};exports['addAgents']=function(_0x4f7a1d,_0x1e408d,_0x23ca63){return db['FaxQueue'][_0x05be('0x45')]({'where':{'id':_0x4f7a1d['params']['id']}})['then'](handleEntityNotFound(_0x1e408d,null))[_0x05be('0x25')](function(_0x1125bb){if(_0x1125bb){return _0x1125bb[_0x05be('0x7e')](_0x4f7a1d[_0x05be('0x4c')][_0x05be('0x5c')],_['omit'](_0x4f7a1d[_0x05be('0x4c')],[_0x05be('0x5c'),'id'])||{})[_0x05be('0x7f')](function(_0x158b76){for(var _0x14fe94=0x0;_0x14fe94<_0x4f7a1d[_0x05be('0x4c')][_0x05be('0x5c')][_0x05be('0x38')];_0x14fe94+=0x1){socket[_0x05be('0x7c')](_0x05be('0x66'),{'UserId':Number(_0x4f7a1d[_0x05be('0x4c')][_0x05be('0x5c')][_0x14fe94]),'FaxQueueId':Number(_0x4f7a1d[_0x05be('0x43')]['id'])});}return _0x158b76;});}})[_0x05be('0x25')](respondWithResult(_0x1e408d,null))[_0x05be('0x4b')](handleError(_0x1e408d,null));};exports['removeAgents']=function(_0x457e02,_0x20d989,_0x52f17d){return db[_0x05be('0x2e')][_0x05be('0x45')]({'where':{'id':_0x457e02[_0x05be('0x43')]['id']}})[_0x05be('0x25')](handleEntityNotFound(_0x20d989,null))[_0x05be('0x25')](function(_0x231146){if(_0x231146){return _0x231146[_0x05be('0x7a')](_0x457e02[_0x05be('0x31')][_0x05be('0x5c')])[_0x05be('0x25')](function(){if(_[_0x05be('0x80')](_0x457e02['query']['ids'])){for(var _0x113df0=0x0;_0x113df0<_0x457e02[_0x05be('0x31')][_0x05be('0x5c')][_0x05be('0x38')];_0x113df0+=0x1){socket[_0x05be('0x7c')]('userFaxQueue:remove',{'UserId':Number(_0x457e02[_0x05be('0x31')][_0x05be('0x5c')][_0x113df0]),'FaxQueueId':Number(_0x457e02['params']['id'])});}}else{socket['emit'](_0x05be('0x7d'),{'UserId':Number(_0x457e02[_0x05be('0x31')][_0x05be('0x5c')]),'FaxQueueId':Number(_0x457e02[_0x05be('0x43')]['id'])});}});}})[_0x05be('0x25')](respondWithStatusCode(_0x20d989,null))[_0x05be('0x4b')](handleError(_0x20d989,null));};exports[_0x05be('0x81')]=function(_0x547fa5,_0x193768,_0x1a64e1){var _0x77ca0d={};var _0x352e0e={};var _0xedfa3;var _0xe22443;return db[_0x05be('0x2e')][_0x05be('0x4f')]({'where':{'id':_0x547fa5['params']['id']}})[_0x05be('0x25')](handleEntityNotFound(_0x193768,null))[_0x05be('0x25')](function(_0x1402a5){if(_0x1402a5){_0xedfa3=_0x1402a5;_0x352e0e[_0x05be('0x35')]=_[_0x05be('0x32')](db[_0x05be('0x82')][_0x05be('0x2f')]);_0x352e0e['query']=_[_0x05be('0x32')](_0x547fa5[_0x05be('0x31')]);_0x352e0e[_0x05be('0x33')]=_['intersection'](_0x352e0e['model'],_0x352e0e['query']);_0x77ca0d['attributes']=_[_0x05be('0x34')](_0x352e0e[_0x05be('0x35')],qs[_0x05be('0x37')](_0x547fa5[_0x05be('0x31')][_0x05be('0x37')]));_0x77ca0d['attributes']=_0x77ca0d[_0x05be('0x36')]['length']?_0x77ca0d[_0x05be('0x36')]:_0x352e0e[_0x05be('0x35')];_0x77ca0d[_0x05be('0x3a')]=qs[_0x05be('0x3b')](_0x547fa5[_0x05be('0x31')][_0x05be('0x3b')]);_0x77ca0d[_0x05be('0x3c')]=qs['filters'](_['pick'](_0x547fa5['query'],_0x352e0e[_0x05be('0x33')]));if(_0x547fa5['query'][_0x05be('0x3e')]){_0x77ca0d['where']=_[_0x05be('0x3f')](_0x77ca0d[_0x05be('0x3c')],{'$or':_[_0x05be('0x2d')](_0x77ca0d[_0x05be('0x36')],function(_0x12c70a){var _0x292739={};_0x292739[_0x12c70a]={'$like':'%'+_0x547fa5[_0x05be('0x31')][_0x05be('0x3e')]+'%'};return _0x292739;})});}_0x77ca0d=_[_0x05be('0x3f')]({},_0x77ca0d,_0x547fa5[_0x05be('0x40')]);return _0xedfa3[_0x05be('0x81')](_0x77ca0d);}})[_0x05be('0x25')](function(_0xa70e49){if(_0xa70e49){_0xe22443=_0xa70e49[_0x05be('0x38')];if(!_0x547fa5[_0x05be('0x31')][_0x05be('0x51')](_0x05be('0x39'))){_0x77ca0d['limit']=qs[_0x05be('0x20')](_0x547fa5['query'][_0x05be('0x20')]);_0x77ca0d[_0x05be('0x1e')]=qs[_0x05be('0x1e')](_0x547fa5[_0x05be('0x31')][_0x05be('0x1e')]);}return _0xedfa3[_0x05be('0x81')](_0x77ca0d);}})['then'](function(_0x3bb9ff){if(_0x3bb9ff){return _0x3bb9ff?{'count':_0xe22443,'rows':_0x3bb9ff}:null;}})[_0x05be('0x25')](respondWithResult(_0x193768,null))['catch'](handleError(_0x193768,null));};
\ No newline at end of file
index 7a8298d..a858de8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffd4=['emit','hook','exports','events','../../mysqldb','FaxQueue','setMaxListeners','save','update'];(function(_0x47a8ed,_0x106e27){var _0x997c82=function(_0x1e3f5e){while(--_0x1e3f5e){_0x47a8ed['push'](_0x47a8ed['shift']());}};_0x997c82(++_0x106e27);}(_0xffd4,0x150));var _0x4ffd=function(_0x4f4a28,_0x58f2a0){_0x4f4a28=_0x4f4a28-0x0;var _0x4a645b=_0xffd4[_0x4f4a28];return _0x4a645b;};'use strict';var EventEmitter=require(_0x4ffd('0x0'));var FaxQueue=require(_0x4ffd('0x1'))['db'][_0x4ffd('0x2')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0x4ffd('0x3')](0x0);var events={'afterCreate':_0x4ffd('0x4'),'afterUpdate':_0x4ffd('0x5'),'afterDestroy':'remove'};function emitEvent(_0x367340){return function(_0x275684,_0x28d6c0,_0x51f0dd){FaxQueueEvents['emit'](_0x367340+':'+_0x275684['id'],_0x275684);FaxQueueEvents[_0x4ffd('0x6')](_0x367340,_0x275684);_0x51f0dd(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];FaxQueue[_0x4ffd('0x7')](e,emitEvent(event));}}module[_0x4ffd('0x8')]=FaxQueueEvents;
\ No newline at end of file
+var _0x3dde=['save','update','remove','emit','hasOwnProperty','exports','../../mysqldb','FaxQueue','setMaxListeners'];(function(_0x248bf0,_0x29a685){var _0x455c00=function(_0x44da4d){while(--_0x44da4d){_0x248bf0['push'](_0x248bf0['shift']());}};_0x455c00(++_0x29a685);}(_0x3dde,0x1ec));var _0xe3dd=function(_0x168b7d,_0x5a906f){_0x168b7d=_0x168b7d-0x0;var _0x388531=_0x3dde[_0x168b7d];return _0x388531;};'use strict';var EventEmitter=require('events');var FaxQueue=require(_0xe3dd('0x0'))['db'][_0xe3dd('0x1')];var FaxQueueEvents=new EventEmitter();FaxQueueEvents[_0xe3dd('0x2')](0x0);var events={'afterCreate':_0xe3dd('0x3'),'afterUpdate':_0xe3dd('0x4'),'afterDestroy':_0xe3dd('0x5')};function emitEvent(_0x5bfe76){return function(_0x4185fc,_0x4bdc6f,_0x159534){FaxQueueEvents['emit'](_0x5bfe76+':'+_0x4185fc['id'],_0x4185fc);FaxQueueEvents[_0xe3dd('0x6')](_0x5bfe76,_0x4185fc);_0x159534(null);};}for(var e in events){if(events[_0xe3dd('0x7')](e)){var event=events[e];FaxQueue['hook'](e,emitEvent(event));}}module[_0xe3dd('0x8')]=FaxQueueEvents;
\ No newline at end of file
index 7246daf..3bed5d1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77ee=['bluebird','rimraf','../../config/environment','./faxQueue.attributes','exports','FaxQueue','lodash','util','../../config/logger','api','moment'];(function(_0x1519c6,_0x2ebc76){var _0x5ada13=function(_0x387a92){while(--_0x387a92){_0x1519c6['push'](_0x1519c6['shift']());}};_0x5ada13(++_0x2ebc76);}(_0x77ee,0x145));var _0xe77e=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x77ee[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xe77e('0x0'));var util=require(_0xe77e('0x1'));var logger=require(_0xe77e('0x2'))(_0xe77e('0x3'));var moment=require(_0xe77e('0x4'));var BPromise=require(_0xe77e('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xe77e('0x6'));var config=require(_0xe77e('0x7'));var attributes=require(_0xe77e('0x8'));module[_0xe77e('0x9')]=function(_0xa46bd3,_0x4f56f3){return _0xa46bd3['define'](_0xe77e('0xa'),attributes,{'tableName':'fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf113=['exports','define','lodash','util','api','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueue.attributes'];(function(_0x22a8f1,_0x46f4f4){var _0x4c2ac8=function(_0x204d89){while(--_0x204d89){_0x22a8f1['push'](_0x22a8f1['shift']());}};_0x4c2ac8(++_0x46f4f4);}(_0xf113,0x199));var _0x3f11=function(_0x4b6413,_0x2720f4){_0x4b6413=_0x4b6413-0x0;var _0x37d105=_0xf113[_0x4b6413];return _0x37d105;};'use strict';var _=require(_0x3f11('0x0'));var util=require(_0x3f11('0x1'));var logger=require('../../config/logger')(_0x3f11('0x2'));var moment=require('moment');var BPromise=require(_0x3f11('0x3'));var rp=require(_0x3f11('0x4'));var fs=require('fs');var path=require(_0x3f11('0x5'));var rimraf=require(_0x3f11('0x6'));var config=require(_0x3f11('0x7'));var attributes=require(_0x3f11('0x8'));module[_0x3f11('0x9')]=function(_0x137e74,_0x3cc373){return _0x137e74[_0x3f11('0xa')]('FaxQueue',attributes,{'tableName':'fax_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9bf1170..d35f4e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00a3=['result','catch','GetFaxQueue','findAll','options','raw','where','limit','include','map','model','attributes','debug','stringify','FaxQueue','find','ShowFaxQueue','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','defaults','redis','localhost','socket.io-emitter','./faxQueue.socket','register','then','FaxQueue,\x20%s,\x20%s','request\x20sent','error','message','info'];(function(_0x375126,_0x514a8e){var _0x1f76bb=function(_0x22f2d0){while(--_0x22f2d0){_0x375126['push'](_0x375126['shift']());}};_0x1f76bb(++_0x514a8e);}(_0x00a3,0x1a1));var _0x300a=function(_0x5a3bbc,_0x57d348){_0x5a3bbc=_0x5a3bbc-0x0;var _0x3264cc=_0x00a3[_0x5a3bbc];return _0x3264cc;};'use strict';var _=require('lodash');var util=require(_0x300a('0x0'));var moment=require(_0x300a('0x1'));var BPromise=require(_0x300a('0x2'));var rs=require(_0x300a('0x3'));var fs=require('fs');var Redis=require(_0x300a('0x4'));var db=require(_0x300a('0x5'))['db'];var utils=require(_0x300a('0x6'));var logger=require(_0x300a('0x7'))('rpc');var config=require(_0x300a('0x8'));var jayson=require(_0x300a('0x9'));var client=jayson[_0x300a('0xa')]['http']({'port':0x232a});config['redis']=_[_0x300a('0xb')](config[_0x300a('0xc')],{'host':_0x300a('0xd'),'port':0x18eb});var socket=require(_0x300a('0xe'))(new Redis(config['redis']));require(_0x300a('0xf'))[_0x300a('0x10')](socket);function respondWithRpcPromise(_0x534005,_0x4e855e,_0x3c97d9){return new BPromise(function(_0x2c2906,_0x185ed6){return client['request'](_0x534005,_0x3c97d9)[_0x300a('0x11')](function(_0x4c07f6){logger['info'](_0x300a('0x12'),_0x4e855e,_0x300a('0x13'));logger['debug']('FaxQueue,\x20%s,\x20%s,\x20%s',_0x4e855e,_0x300a('0x13'),JSON['stringify'](_0x4c07f6));if(_0x4c07f6[_0x300a('0x14')]){if(_0x4c07f6[_0x300a('0x14')]['code']===0x1f4){logger[_0x300a('0x14')]('FaxQueue,\x20%s,\x20%s',_0x4e855e,_0x4c07f6[_0x300a('0x14')]['message']);return _0x185ed6(_0x4c07f6[_0x300a('0x14')][_0x300a('0x15')]);}logger[_0x300a('0x14')](_0x300a('0x12'),_0x4e855e,_0x4c07f6[_0x300a('0x14')][_0x300a('0x15')]);return _0x2c2906(_0x4c07f6['error'][_0x300a('0x15')]);}else{logger[_0x300a('0x16')](_0x300a('0x12'),_0x4e855e,_0x300a('0x13'));_0x2c2906(_0x4c07f6[_0x300a('0x17')]['message']);}})[_0x300a('0x18')](function(_0x1f653c){logger[_0x300a('0x14')]('FaxQueue,\x20%s,\x20%s',_0x4e855e,_0x1f653c);_0x185ed6(_0x1f653c);});});}exports[_0x300a('0x19')]=function(_0x27f2c2){var _0x29c47b=this;return new Promise(function(_0x374948,_0x3e7874){return db['FaxQueue'][_0x300a('0x1a')]({'raw':_0x27f2c2['options']?_0x27f2c2[_0x300a('0x1b')][_0x300a('0x1c')]===undefined?!![]:![]:!![],'where':_0x27f2c2['options']?_0x27f2c2[_0x300a('0x1b')][_0x300a('0x1d')]||null:null,'attributes':_0x27f2c2['options']?_0x27f2c2['options']['attributes']||null:null,'limit':_0x27f2c2[_0x300a('0x1b')]?_0x27f2c2[_0x300a('0x1b')][_0x300a('0x1e')]||null:null,'include':_0x27f2c2[_0x300a('0x1b')]?_0x27f2c2[_0x300a('0x1b')][_0x300a('0x1f')]?_[_0x300a('0x20')](_0x27f2c2[_0x300a('0x1b')][_0x300a('0x1f')],function(_0x74997b){return{'model':db[_0x74997b[_0x300a('0x21')]],'as':_0x74997b['as'],'attributes':_0x74997b[_0x300a('0x22')],'include':_0x74997b[_0x300a('0x1f')]?_[_0x300a('0x20')](_0x74997b[_0x300a('0x1f')],function(_0x350c2b){return{'model':db[_0x350c2b[_0x300a('0x21')]],'as':_0x350c2b['as'],'attributes':_0x350c2b[_0x300a('0x22')],'include':_0x350c2b[_0x300a('0x1f')]?_[_0x300a('0x20')](_0x350c2b[_0x300a('0x1f')],function(_0x13c7de){return{'model':db[_0x13c7de[_0x300a('0x21')]],'as':_0x13c7de['as'],'attributes':_0x13c7de[_0x300a('0x22')]};}):[]};}):[]};}):[]:[]})[_0x300a('0x11')](function(_0x4ec233){logger['info']('GetFaxQueue',_0x27f2c2);logger[_0x300a('0x23')](_0x300a('0x19'),_0x27f2c2,JSON[_0x300a('0x24')](_0x4ec233));_0x374948(_0x4ec233);})[_0x300a('0x18')](function(_0x8539f6){logger['error'](_0x300a('0x19'),_0x8539f6[_0x300a('0x15')],_0x27f2c2);_0x3e7874(_0x29c47b[_0x300a('0x14')](0x1f4,_0x8539f6['message']));});});};exports['ShowFaxQueue']=function(_0x14086d){var _0x58e907=this;return new Promise(function(_0x506d42,_0x290bf8){return db[_0x300a('0x25')][_0x300a('0x26')]({'raw':_0x14086d[_0x300a('0x1b')]?_0x14086d[_0x300a('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x14086d['options']?_0x14086d[_0x300a('0x1b')][_0x300a('0x1d')]||null:null,'attributes':_0x14086d['options']?_0x14086d[_0x300a('0x1b')]['attributes']||null:null,'include':_0x14086d[_0x300a('0x1b')]?_0x14086d[_0x300a('0x1b')][_0x300a('0x1f')]?_['map'](_0x14086d['options'][_0x300a('0x1f')],function(_0x59b171){return{'model':db[_0x59b171[_0x300a('0x21')]],'as':_0x59b171['as'],'attributes':_0x59b171[_0x300a('0x22')],'include':_0x59b171[_0x300a('0x1f')]?_[_0x300a('0x20')](_0x59b171['include'],function(_0x21b1c2){return{'model':db[_0x21b1c2[_0x300a('0x21')]],'as':_0x21b1c2['as'],'attributes':_0x21b1c2[_0x300a('0x22')],'include':_0x21b1c2['include']?_['map'](_0x21b1c2[_0x300a('0x1f')],function(_0x1ca6e5){return{'model':db[_0x1ca6e5['model']],'as':_0x1ca6e5['as'],'attributes':_0x1ca6e5[_0x300a('0x22')]};}):[]};}):[]};}):[]:[]})[_0x300a('0x11')](function(_0x4dccee){logger[_0x300a('0x16')]('ShowFaxQueue',_0x14086d);logger['debug'](_0x300a('0x27'),_0x14086d,JSON[_0x300a('0x24')](_0x4dccee));_0x506d42(_0x4dccee);})[_0x300a('0x18')](function(_0x1d0a13){logger[_0x300a('0x14')]('ShowFaxQueue',_0x1d0a13[_0x300a('0x15')],_0x14086d);_0x290bf8(_0x58e907[_0x300a('0x14')](0x1f4,_0x1d0a13[_0x300a('0x15')]));});});};
\ No newline at end of file
+var _0xd346=['include','map','attributes','debug','ShowFaxQueue','model','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','redis','defaults','socket.io-emitter','register','request','then','info','FaxQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','GetFaxQueue','FaxQueue','findAll','options','raw','where','limit'];(function(_0x78ed46,_0x4d0781){var _0x15e61a=function(_0x16880d){while(--_0x16880d){_0x78ed46['push'](_0x78ed46['shift']());}};_0x15e61a(++_0x4d0781);}(_0xd346,0x16e));var _0x6d34=function(_0xdb2892,_0x3655a3){_0xdb2892=_0xdb2892-0x0;var _0x220113=_0xd346[_0xdb2892];return _0x220113;};'use strict';var _=require(_0x6d34('0x0'));var util=require(_0x6d34('0x1'));var moment=require(_0x6d34('0x2'));var BPromise=require(_0x6d34('0x3'));var rs=require(_0x6d34('0x4'));var fs=require('fs');var Redis=require(_0x6d34('0x5'));var db=require(_0x6d34('0x6'))['db'];var utils=require(_0x6d34('0x7'));var logger=require(_0x6d34('0x8'))(_0x6d34('0x9'));var config=require('../../config/environment');var jayson=require(_0x6d34('0xa'));var client=jayson[_0x6d34('0xb')]['http']({'port':0x232a});config[_0x6d34('0xc')]=_[_0x6d34('0xd')](config[_0x6d34('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x6d34('0xe'))(new Redis(config[_0x6d34('0xc')]));require('./faxQueue.socket')[_0x6d34('0xf')](socket);function respondWithRpcPromise(_0xb55155,_0x12e751,_0x1aa58a){return new BPromise(function(_0x25d2f3,_0x41672c){return client[_0x6d34('0x10')](_0xb55155,_0x1aa58a)[_0x6d34('0x11')](function(_0xedc459){logger[_0x6d34('0x12')](_0x6d34('0x13'),_0x12e751,'request\x20sent');logger['debug']('FaxQueue,\x20%s,\x20%s,\x20%s',_0x12e751,_0x6d34('0x14'),JSON[_0x6d34('0x15')](_0xedc459));if(_0xedc459[_0x6d34('0x16')]){if(_0xedc459[_0x6d34('0x16')][_0x6d34('0x17')]===0x1f4){logger[_0x6d34('0x16')]('FaxQueue,\x20%s,\x20%s',_0x12e751,_0xedc459[_0x6d34('0x16')]['message']);return _0x41672c(_0xedc459[_0x6d34('0x16')][_0x6d34('0x18')]);}logger[_0x6d34('0x16')]('FaxQueue,\x20%s,\x20%s',_0x12e751,_0xedc459['error']['message']);return _0x25d2f3(_0xedc459['error']['message']);}else{logger[_0x6d34('0x12')]('FaxQueue,\x20%s,\x20%s',_0x12e751,_0x6d34('0x14'));_0x25d2f3(_0xedc459[_0x6d34('0x19')][_0x6d34('0x18')]);}})[_0x6d34('0x1a')](function(_0xf50061){logger[_0x6d34('0x16')](_0x6d34('0x13'),_0x12e751,_0xf50061);_0x41672c(_0xf50061);});});}exports[_0x6d34('0x1b')]=function(_0x3c374a){var _0x17d9a4=this;return new Promise(function(_0x4ffe22,_0x3513e4){return db[_0x6d34('0x1c')][_0x6d34('0x1d')]({'raw':_0x3c374a[_0x6d34('0x1e')]?_0x3c374a[_0x6d34('0x1e')][_0x6d34('0x1f')]===undefined?!![]:![]:!![],'where':_0x3c374a['options']?_0x3c374a[_0x6d34('0x1e')][_0x6d34('0x20')]||null:null,'attributes':_0x3c374a['options']?_0x3c374a[_0x6d34('0x1e')]['attributes']||null:null,'limit':_0x3c374a[_0x6d34('0x1e')]?_0x3c374a[_0x6d34('0x1e')][_0x6d34('0x21')]||null:null,'include':_0x3c374a[_0x6d34('0x1e')]?_0x3c374a[_0x6d34('0x1e')][_0x6d34('0x22')]?_[_0x6d34('0x23')](_0x3c374a[_0x6d34('0x1e')][_0x6d34('0x22')],function(_0x215c13){return{'model':db[_0x215c13['model']],'as':_0x215c13['as'],'attributes':_0x215c13[_0x6d34('0x24')],'include':_0x215c13[_0x6d34('0x22')]?_[_0x6d34('0x23')](_0x215c13[_0x6d34('0x22')],function(_0xadfd62){return{'model':db[_0xadfd62['model']],'as':_0xadfd62['as'],'attributes':_0xadfd62['attributes'],'include':_0xadfd62[_0x6d34('0x22')]?_['map'](_0xadfd62[_0x6d34('0x22')],function(_0x5150cf){return{'model':db[_0x5150cf['model']],'as':_0x5150cf['as'],'attributes':_0x5150cf[_0x6d34('0x24')]};}):[]};}):[]};}):[]:[]})[_0x6d34('0x11')](function(_0x37d61a){logger[_0x6d34('0x12')](_0x6d34('0x1b'),_0x3c374a);logger[_0x6d34('0x25')](_0x6d34('0x1b'),_0x3c374a,JSON[_0x6d34('0x15')](_0x37d61a));_0x4ffe22(_0x37d61a);})['catch'](function(_0xd5d0eb){logger[_0x6d34('0x16')](_0x6d34('0x1b'),_0xd5d0eb[_0x6d34('0x18')],_0x3c374a);_0x3513e4(_0x17d9a4[_0x6d34('0x16')](0x1f4,_0xd5d0eb['message']));});});};exports[_0x6d34('0x26')]=function(_0x3a8053){var _0x5cee85=this;return new Promise(function(_0x58c904,_0x4609d6){return db[_0x6d34('0x1c')]['find']({'raw':_0x3a8053[_0x6d34('0x1e')]?_0x3a8053[_0x6d34('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x3a8053[_0x6d34('0x1e')]?_0x3a8053[_0x6d34('0x1e')][_0x6d34('0x20')]||null:null,'attributes':_0x3a8053['options']?_0x3a8053[_0x6d34('0x1e')][_0x6d34('0x24')]||null:null,'include':_0x3a8053[_0x6d34('0x1e')]?_0x3a8053[_0x6d34('0x1e')][_0x6d34('0x22')]?_[_0x6d34('0x23')](_0x3a8053[_0x6d34('0x1e')]['include'],function(_0x2d8cd1){return{'model':db[_0x2d8cd1['model']],'as':_0x2d8cd1['as'],'attributes':_0x2d8cd1['attributes'],'include':_0x2d8cd1[_0x6d34('0x22')]?_[_0x6d34('0x23')](_0x2d8cd1[_0x6d34('0x22')],function(_0x1b6fa4){return{'model':db[_0x1b6fa4[_0x6d34('0x27')]],'as':_0x1b6fa4['as'],'attributes':_0x1b6fa4[_0x6d34('0x24')],'include':_0x1b6fa4[_0x6d34('0x22')]?_[_0x6d34('0x23')](_0x1b6fa4[_0x6d34('0x22')],function(_0x322850){return{'model':db[_0x322850['model']],'as':_0x322850['as'],'attributes':_0x322850[_0x6d34('0x24')]};}):[]};}):[]};}):[]:[]})[_0x6d34('0x11')](function(_0xebc315){logger['info'](_0x6d34('0x26'),_0x3a8053);logger['debug']('ShowFaxQueue',_0x3a8053,JSON[_0x6d34('0x15')](_0xebc315));_0x58c904(_0xebc315);})['catch'](function(_0xb5cd64){logger[_0x6d34('0x16')]('ShowFaxQueue',_0xb5cd64['message'],_0x3a8053);_0x4609d6(_0x5cee85[_0x6d34('0x16')](0x1f4,_0xb5cd64[_0x6d34('0x18')]));});});};
\ No newline at end of file
index 37e338c..1aa569b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1e4=['faxQueue:','./faxQueue.events','remove','removeListener','length'];(function(_0x1cf1c6,_0x378916){var _0x2e08af=function(_0x49b13f){while(--_0x49b13f){_0x1cf1c6['push'](_0x1cf1c6['shift']());}};_0x2e08af(++_0x378916);}(_0xd1e4,0x8d));var _0x4d1e=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0xd1e4[_0x4565bf];return _0x5610ba;};'use strict';var FaxQueueEvents=require(_0x4d1e('0x0'));var events=['save',_0x4d1e('0x1'),'update'];function createListener(_0x30e26e,_0x3ac18f){return function(_0x45b9ba){_0x3ac18f['emit'](_0x30e26e,_0x45b9ba);};}function removeListener(_0x4e0861,_0x470a16){return function(){FaxQueueEvents[_0x4d1e('0x2')](_0x4e0861,_0x470a16);};}exports['register']=function(_0x18c7d0){for(var _0x517f6d=0x0,_0x2a77a9=events[_0x4d1e('0x3')];_0x517f6d<_0x2a77a9;_0x517f6d++){var _0x40c054=events[_0x517f6d];var _0x44a421=createListener(_0x4d1e('0x4')+_0x40c054,_0x18c7d0);FaxQueueEvents['on'](_0x40c054,_0x44a421);}};
\ No newline at end of file
+var _0x8a28=['faxQueue:','./faxQueue.events','save','remove','update','emit','removeListener','register','length'];(function(_0x138adb,_0x193fee){var _0x1b27f2=function(_0x5e97a2){while(--_0x5e97a2){_0x138adb['push'](_0x138adb['shift']());}};_0x1b27f2(++_0x193fee);}(_0x8a28,0xfd));var _0x88a2=function(_0x494d1f,_0x3f72ff){_0x494d1f=_0x494d1f-0x0;var _0x457b6e=_0x8a28[_0x494d1f];return _0x457b6e;};'use strict';var FaxQueueEvents=require(_0x88a2('0x0'));var events=[_0x88a2('0x1'),_0x88a2('0x2'),_0x88a2('0x3')];function createListener(_0x27b1c1,_0x29e6d8){return function(_0x26138e){_0x29e6d8[_0x88a2('0x4')](_0x27b1c1,_0x26138e);};}function removeListener(_0x5d5b92,_0x2f482e){return function(){FaxQueueEvents[_0x88a2('0x5')](_0x5d5b92,_0x2f482e);};}exports[_0x88a2('0x6')]=function(_0x438e32){for(var _0x29ce92=0x0,_0x5cb591=events[_0x88a2('0x7')];_0x29ce92<_0x5cb591;_0x29ce92++){var _0x5406ed=events[_0x29ce92];var _0x1cdf6b=createListener(_0x88a2('0x8')+_0x5406ed,_0x438e32);FaxQueueEvents['on'](_0x5406ed,_0x1cdf6b);}};
\ No newline at end of file
index e054471..0d6969c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfb11=['Router','../../components/auth/service','../../config/environment','./faxQueue.controller','isAuthenticated','index','/describe','describe','get','/:id','show','/:id/members','/:id/users','getAgents','post','/:id/teams','addTeams','addAgents','put','update','delete','destroy','removeTeams','removeAgents','multer','path','connect-timeout'];(function(_0x4d0647,_0x5ae04d){var _0x7f1636=function(_0x568c5f){while(--_0x568c5f){_0x4d0647['push'](_0x4d0647['shift']());}};_0x7f1636(++_0x5ae04d);}(_0xfb11,0x1ad));var _0x1fb1=function(_0x1ddedd,_0x485606){_0x1ddedd=_0x1ddedd-0x0;var _0xa3e1ac=_0xfb11[_0x1ddedd];return _0xa3e1ac;};'use strict';var multer=require(_0x1fb1('0x0'));var util=require('util');var path=require(_0x1fb1('0x1'));var timeout=require(_0x1fb1('0x2'));var express=require('express');var router=express[_0x1fb1('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x1fb1('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x1fb1('0x5'));var controller=require(_0x1fb1('0x6'));router['get']('/',auth[_0x1fb1('0x7')](),controller[_0x1fb1('0x8')]);router['get'](_0x1fb1('0x9'),auth[_0x1fb1('0x7')](),controller[_0x1fb1('0xa')]);router[_0x1fb1('0xb')](_0x1fb1('0xc'),auth[_0x1fb1('0x7')](),controller[_0x1fb1('0xd')]);router[_0x1fb1('0xb')](_0x1fb1('0xe'),auth[_0x1fb1('0x7')](),controller['getMembers']);router[_0x1fb1('0xb')]('/:id/teams',auth[_0x1fb1('0x7')](),controller['getTeams']);router[_0x1fb1('0xb')](_0x1fb1('0xf'),auth[_0x1fb1('0x7')](),controller[_0x1fb1('0x10')]);router[_0x1fb1('0x11')]('/',auth[_0x1fb1('0x7')](),controller['create']);router[_0x1fb1('0x11')](_0x1fb1('0x12'),auth[_0x1fb1('0x7')](),controller[_0x1fb1('0x13')]);router[_0x1fb1('0x11')](_0x1fb1('0xf'),auth[_0x1fb1('0x7')](),controller[_0x1fb1('0x14')]);router[_0x1fb1('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x1fb1('0x16')]);router[_0x1fb1('0x17')](_0x1fb1('0xc'),auth['isAuthenticated'](),controller[_0x1fb1('0x18')]);router[_0x1fb1('0x17')](_0x1fb1('0x12'),auth[_0x1fb1('0x7')](),controller[_0x1fb1('0x19')]);router[_0x1fb1('0x17')](_0x1fb1('0xf'),auth[_0x1fb1('0x7')](),controller[_0x1fb1('0x1a')]);module['exports']=router;
\ No newline at end of file
+var _0xe61c=['addAgents','destroy','removeTeams','delete','removeAgents','exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','./faxQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','getTeams','/:id/users','getAgents','post','create','/:id/teams','addTeams'];(function(_0x3f2f13,_0x521ce9){var _0x3e84f0=function(_0x7fdea5){while(--_0x7fdea5){_0x3f2f13['push'](_0x3f2f13['shift']());}};_0x3e84f0(++_0x521ce9);}(_0xe61c,0xee));var _0xce61=function(_0xcf4569,_0x1ce755){_0xcf4569=_0xcf4569-0x0;var _0x7fef=_0xe61c[_0xcf4569];return _0x7fef;};'use strict';var multer=require(_0xce61('0x0'));var util=require('util');var path=require(_0xce61('0x1'));var timeout=require(_0xce61('0x2'));var express=require(_0xce61('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xce61('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xce61('0x5'));var controller=require(_0xce61('0x6'));router[_0xce61('0x7')]('/',auth[_0xce61('0x8')](),controller[_0xce61('0x9')]);router[_0xce61('0x7')](_0xce61('0xa'),auth['isAuthenticated'](),controller[_0xce61('0xb')]);router[_0xce61('0x7')](_0xce61('0xc'),auth[_0xce61('0x8')](),controller[_0xce61('0xd')]);router[_0xce61('0x7')](_0xce61('0xe'),auth['isAuthenticated'](),controller[_0xce61('0xf')]);router[_0xce61('0x7')]('/:id/teams',auth[_0xce61('0x8')](),controller[_0xce61('0x10')]);router['get'](_0xce61('0x11'),auth['isAuthenticated'](),controller[_0xce61('0x12')]);router[_0xce61('0x13')]('/',auth['isAuthenticated'](),controller[_0xce61('0x14')]);router['post'](_0xce61('0x15'),auth['isAuthenticated'](),controller[_0xce61('0x16')]);router[_0xce61('0x13')](_0xce61('0x11'),auth[_0xce61('0x8')](),controller[_0xce61('0x17')]);router['put']('/:id',auth[_0xce61('0x8')](),controller['update']);router['delete'](_0xce61('0xc'),auth[_0xce61('0x8')](),controller[_0xce61('0x18')]);router['delete'](_0xce61('0x15'),auth['isAuthenticated'](),controller[_0xce61('0x19')]);router[_0xce61('0x1a')](_0xce61('0x11'),auth[_0xce61('0x8')](),controller[_0xce61('0x1b')]);module[_0xce61('0x1c')]=router;
\ No newline at end of file
index 4c5d9a1..3aaa15f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc80=['moment','sequelize','exports','STRING','DATE'];(function(_0x359bbe,_0x5b7fcc){var _0x1b3353=function(_0x34b41c){while(--_0x34b41c){_0x359bbe['push'](_0x359bbe['shift']());}};_0x1b3353(++_0x5b7fcc);}(_0xbc80,0x154));var _0x0bc8=function(_0x296809,_0x1c9665){_0x296809=_0x296809-0x0;var _0x18c0d3=_0xbc80[_0x296809];return _0x18c0d3;};'use strict';var moment=require(_0x0bc8('0x0'));var Sequelize=require(_0x0bc8('0x1'));module[_0x0bc8('0x2')]={'uniqueid':{'type':Sequelize[_0x0bc8('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x0bc8('0x3')]},'joinAt':{'type':Sequelize[_0x0bc8('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x0bc8('0x4')]},'exitAt':{'type':Sequelize[_0x0bc8('0x4')]},'reason':{'type':Sequelize[_0x0bc8('0x3')]}};
\ No newline at end of file
+var _0xad7a=['moment','sequelize','STRING','DATE'];(function(_0x543429,_0x140390){var _0x112a46=function(_0x46528b){while(--_0x46528b){_0x543429['push'](_0x543429['shift']());}};_0x112a46(++_0x140390);}(_0xad7a,0x68));var _0xaad7=function(_0x28fb8c,_0x3791d4){_0x28fb8c=_0x28fb8c-0x0;var _0x183f88=_0xad7a[_0x28fb8c];return _0x183f88;};'use strict';var moment=require(_0xaad7('0x0'));var Sequelize=require(_0xaad7('0x1'));module['exports']={'uniqueid':{'type':Sequelize[_0xaad7('0x2')],'allowNull':![]},'from':{'type':Sequelize[_0xaad7('0x2')]},'joinAt':{'type':Sequelize[_0xaad7('0x3')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xaad7('0x2')]}};
\ No newline at end of file
index 2ba1818..17713d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['moment','mustache','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject','update','destroy','sendStatus','name','status','send','index','map','FaxQueueReport','rawAttributes','type','keys','query','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','findAll','then','catch','params','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise'];(function(_0x310fcb,_0x122608){var _0x4b9ba5=function(_0x12e1c6){while(--_0x12e1c6){_0x310fcb['push'](_0x310fcb['shift']());}};_0x4b9ba5(++_0x122608);}(_0xb43b,0x1b2));var _0xbb43=function(_0x12a4e5,_0x23b3a6){_0x12a4e5=_0x12a4e5-0x0;var _0x18a314=_0xb43b[_0x12a4e5];return _0x18a314;};'use strict';var emlformat=require(_0xbb43('0x0'));var rimraf=require(_0xbb43('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xbb43('0x2'));var rp=require(_0xbb43('0x3'));var moment=require(_0xbb43('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xbb43('0x5'));var util=require(_0xbb43('0x6'));var path=require(_0xbb43('0x7'));var sox=require(_0xbb43('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbb43('0x9'));var _=require('lodash');var squel=require(_0xbb43('0xa'));var crypto=require(_0xbb43('0xb'));var jsforce=require(_0xbb43('0xc'));var deskjs=require(_0xbb43('0xd'));var toCsv=require(_0xbb43('0xe'));var querystring=require('querystring');var Papa=require(_0xbb43('0xf'));var Redis=require(_0xbb43('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xbb43('0x11'));var as=require(_0xbb43('0x12'));var hardwareService=require(_0xbb43('0x13'));var logger=require(_0xbb43('0x14'))(_0xbb43('0x15'));var utils=require(_0xbb43('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xbb43('0x17'));var db=require(_0xbb43('0x18'))['db'];function respondWithStatusCode(_0x50e2c0,_0x578392){_0x578392=_0x578392||0xcc;return function(_0x41e7e5){if(_0x41e7e5){return _0x50e2c0['sendStatus'](_0x578392);}return _0x50e2c0['status'](_0x578392)[_0xbb43('0x19')]();};}function respondWithResult(_0x5a509f,_0x68d45d){_0x68d45d=_0x68d45d||0xc8;return function(_0x43021d){if(_0x43021d){return _0x5a509f['status'](_0x68d45d)['json'](_0x43021d);}};}function respondWithFilteredResult(_0x4d5bcf,_0x338120){return function(_0x2abce0){if(_0x2abce0){var _0x57bd1d=typeof _0x338120['offset']===_0xbb43('0x1a')&&typeof _0x338120['limit']==='undefined';var _0x2b0797=_0x2abce0[_0xbb43('0x1b')];var _0x2e3b43=_0x57bd1d?0x0:_0x338120['offset'];var _0x1c16d7=_0x57bd1d?_0x2abce0['count']:_0x338120[_0xbb43('0x1c')]+_0x338120[_0xbb43('0x1d')];var _0x4dfc54;if(_0x1c16d7>=_0x2b0797){_0x1c16d7=_0x2b0797;_0x4dfc54=0xc8;}else{_0x4dfc54=0xce;}_0x4d5bcf['status'](_0x4dfc54);return _0x4d5bcf[_0xbb43('0x1e')](_0xbb43('0x1f'),_0x2e3b43+'-'+_0x1c16d7+'/'+_0x2b0797)[_0xbb43('0x20')](_0x2abce0);}return null;};}function patchUpdates(_0x2bf2d4){return function(_0x5bcce7){try{jsonpatch[_0xbb43('0x21')](_0x5bcce7,_0x2bf2d4,!![]);}catch(_0x5f4416){return BPromise[_0xbb43('0x22')](_0x5f4416);}return _0x5bcce7['save']();};}function saveUpdates(_0x2f5e31,_0x565256){return function(_0x3f323e){if(_0x3f323e){return _0x3f323e[_0xbb43('0x23')](_0x2f5e31)['then'](function(_0x1d0768){return _0x1d0768;});}return null;};}function removeEntity(_0x4dfb7f,_0xf24e60){return function(_0x298ce2){if(_0x298ce2){return _0x298ce2[_0xbb43('0x24')]()['then'](function(){_0x4dfb7f['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x269ca5,_0x32d7f0){return function(_0x5d8310){if(!_0x5d8310){_0x269ca5[_0xbb43('0x25')](0x194);}return _0x5d8310;};}function handleError(_0x2da653,_0x226827){_0x226827=_0x226827||0x1f4;return function(_0x3874fb){logger['error'](_0x3874fb['stack']);if(_0x3874fb[_0xbb43('0x26')]){delete _0x3874fb[_0xbb43('0x26')];}_0x2da653[_0xbb43('0x27')](_0x226827)[_0xbb43('0x28')](_0x3874fb);};}exports[_0xbb43('0x29')]=function(_0x40b04b,_0x21d386){var _0x473828={},_0x539730={},_0x2ad6da={'count':0x0,'rows':[]};var _0x56fe33=_[_0xbb43('0x2a')](db[_0xbb43('0x2b')][_0xbb43('0x2c')],function(_0x1880cd){return{'name':_0x1880cd['fieldName'],'type':_0x1880cd[_0xbb43('0x2d')]['key']};});_0x539730['model']=_['map'](_0x56fe33,_0xbb43('0x26'));_0x539730['query']=_[_0xbb43('0x2e')](_0x40b04b[_0xbb43('0x2f')]);_0x539730[_0xbb43('0x30')]=_['intersection'](_0x539730[_0xbb43('0x31')],_0x539730[_0xbb43('0x2f')]);_0x473828[_0xbb43('0x32')]=_[_0xbb43('0x33')](_0x539730[_0xbb43('0x31')],qs[_0xbb43('0x34')](_0x40b04b[_0xbb43('0x2f')][_0xbb43('0x34')]));_0x473828['attributes']=_0x473828[_0xbb43('0x32')][_0xbb43('0x35')]?_0x473828[_0xbb43('0x32')]:_0x539730[_0xbb43('0x31')];if(!_0x40b04b[_0xbb43('0x2f')][_0xbb43('0x36')](_0xbb43('0x37'))){_0x473828[_0xbb43('0x1d')]=qs[_0xbb43('0x1d')](_0x40b04b[_0xbb43('0x2f')][_0xbb43('0x1d')]);_0x473828[_0xbb43('0x1c')]=qs[_0xbb43('0x1c')](_0x40b04b[_0xbb43('0x2f')][_0xbb43('0x1c')]);}_0x473828[_0xbb43('0x38')]=qs['sort'](_0x40b04b[_0xbb43('0x2f')][_0xbb43('0x39')]);_0x473828['where']=qs[_0xbb43('0x30')](_[_0xbb43('0x3a')](_0x40b04b[_0xbb43('0x2f')],_0x539730['filters']),_0x56fe33);if(_0x40b04b['query']['filter']){_0x473828[_0xbb43('0x3b')]=_[_0xbb43('0x3c')](_0x473828['where'],{'$or':_['map'](_0x56fe33,function(_0x2aa381){if(_0x2aa381[_0xbb43('0x2d')]!==_0xbb43('0x3d')){var _0x37afbb={};_0x37afbb[_0x2aa381[_0xbb43('0x26')]]={'$like':'%'+_0x40b04b['query'][_0xbb43('0x3e')]+'%'};return _0x37afbb;}})});}_0x473828=_[_0xbb43('0x3c')]({},_0x473828,_0x40b04b[_0xbb43('0x3f')]);var _0x3340aa={'where':_0x473828[_0xbb43('0x3b')]};return db['FaxQueueReport'][_0xbb43('0x1b')](_0x3340aa)['then'](function(_0x1c076f){_0x2ad6da[_0xbb43('0x1b')]=_0x1c076f;if(_0x40b04b['query'][_0xbb43('0x40')]){_0x473828['include']=[{'all':!![]}];}return db[_0xbb43('0x2b')][_0xbb43('0x41')](_0x473828);})[_0xbb43('0x42')](function(_0xb84ece){_0x2ad6da['rows']=_0xb84ece;return _0x2ad6da;})[_0xbb43('0x42')](respondWithFilteredResult(_0x21d386,_0x473828))[_0xbb43('0x43')](handleError(_0x21d386,null));};exports['show']=function(_0x3443f8,_0x5198a2){var _0x42b965={'raw':!![],'where':{'id':_0x3443f8[_0xbb43('0x44')]['id']}},_0x14285d={};_0x14285d[_0xbb43('0x31')]=_[_0xbb43('0x2e')](db[_0xbb43('0x2b')]['rawAttributes']);_0x14285d[_0xbb43('0x2f')]=_['keys'](_0x3443f8[_0xbb43('0x2f')]);_0x14285d[_0xbb43('0x30')]=_[_0xbb43('0x33')](_0x14285d[_0xbb43('0x31')],_0x14285d['query']);_0x42b965[_0xbb43('0x32')]=_[_0xbb43('0x33')](_0x14285d[_0xbb43('0x31')],qs[_0xbb43('0x34')](_0x3443f8[_0xbb43('0x2f')][_0xbb43('0x34')]));_0x42b965[_0xbb43('0x32')]=_0x42b965[_0xbb43('0x32')]['length']?_0x42b965[_0xbb43('0x32')]:_0x14285d[_0xbb43('0x31')];if(_0x3443f8['query'][_0xbb43('0x40')]){_0x42b965['include']=[{'all':!![]}];}_0x42b965=_['merge']({},_0x42b965,_0x3443f8['options']);return db['FaxQueueReport'][_0xbb43('0x45')](_0x42b965)['then'](handleEntityNotFound(_0x5198a2,null))[_0xbb43('0x42')](respondWithResult(_0x5198a2,null))['catch'](handleError(_0x5198a2,null));};exports[_0xbb43('0x46')]=function(_0x39b6ae,_0x1f3fb4){return db['FaxQueueReport'][_0xbb43('0x46')](_0x39b6ae['body'],{})[_0xbb43('0x42')](respondWithResult(_0x1f3fb4,0xc9))[_0xbb43('0x43')](handleError(_0x1f3fb4,null));};exports[_0xbb43('0x23')]=function(_0x29840e,_0x417ad9){if(_0x29840e[_0xbb43('0x47')]['id']){delete _0x29840e[_0xbb43('0x47')]['id'];}return db['FaxQueueReport'][_0xbb43('0x45')]({'where':{'id':_0x29840e[_0xbb43('0x44')]['id']}})[_0xbb43('0x42')](handleEntityNotFound(_0x417ad9,null))[_0xbb43('0x42')](saveUpdates(_0x29840e['body'],null))[_0xbb43('0x42')](respondWithResult(_0x417ad9,null))[_0xbb43('0x43')](handleError(_0x417ad9,null));};exports[_0xbb43('0x24')]=function(_0xb1883e,_0x4b7712){return db[_0xbb43('0x2b')][_0xbb43('0x45')]({'where':{'id':_0xb1883e[_0xbb43('0x44')]['id']}})['then'](handleEntityNotFound(_0x4b7712,null))[_0xbb43('0x42')](removeEntity(_0x4b7712,null))[_0xbb43('0x43')](handleError(_0x4b7712,null));};exports[_0xbb43('0x48')]=function(_0x1dc40a,_0x3402f2){return db['FaxQueueReport']['describe']()[_0xbb43('0x42')](respondWithResult(_0x3402f2,null))['catch'](handleError(_0x3402f2,null));};
\ No newline at end of file
+var _0xb575=['util','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../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','send','index','FaxQueueReport','rawAttributes','fieldName','type','key','map','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','eml-format','rimraf','fast-json-patch','mustache'];(function(_0x5a9540,_0x3d06ab){var _0x1b1ec8=function(_0x4a725d){while(--_0x4a725d){_0x5a9540['push'](_0x5a9540['shift']());}};_0x1b1ec8(++_0x3d06ab);}(_0xb575,0xda));var _0x5b57=function(_0x38d423,_0x1397c1){_0x38d423=_0x38d423-0x0;var _0xf9e3c5=_0xb575[_0x38d423];return _0xf9e3c5;};'use strict';var emlformat=require(_0x5b57('0x0'));var rimraf=require(_0x5b57('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x5b57('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x5b57('0x3'));var util=require(_0x5b57('0x4'));var path=require('path');var sox=require(_0x5b57('0x5'));var csv=require(_0x5b57('0x6'));var ejs=require(_0x5b57('0x7'));var fs=require('fs');var fs_extra=require(_0x5b57('0x8'));var _=require(_0x5b57('0x9'));var squel=require('squel');var crypto=require(_0x5b57('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x5b57('0xb'));var toCsv=require(_0x5b57('0x6'));var querystring=require(_0x5b57('0xc'));var Papa=require('papaparse');var Redis=require(_0x5b57('0xd'));var authService=require(_0x5b57('0xe'));var qs=require(_0x5b57('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5b57('0x10'));var logger=require(_0x5b57('0x11'))('api');var utils=require('../../config/utils');var config=require(_0x5b57('0x12'));var licenseUtil=require(_0x5b57('0x13'));var db=require(_0x5b57('0x14'))['db'];function respondWithStatusCode(_0xd897ba,_0x355dab){_0x355dab=_0x355dab||0xcc;return function(_0x45cb5c){if(_0x45cb5c){return _0xd897ba[_0x5b57('0x15')](_0x355dab);}return _0xd897ba[_0x5b57('0x16')](_0x355dab)[_0x5b57('0x17')]();};}function respondWithResult(_0x42ba90,_0x53df3e){_0x53df3e=_0x53df3e||0xc8;return function(_0x16ffe0){if(_0x16ffe0){return _0x42ba90[_0x5b57('0x16')](_0x53df3e)[_0x5b57('0x18')](_0x16ffe0);}};}function respondWithFilteredResult(_0x4ba858,_0x2a0a1b){return function(_0x3b4631){if(_0x3b4631){var _0x132430=typeof _0x2a0a1b[_0x5b57('0x19')]===_0x5b57('0x1a')&&typeof _0x2a0a1b[_0x5b57('0x1b')]===_0x5b57('0x1a');var _0x32f18d=_0x3b4631['count'];var _0x336db6=_0x132430?0x0:_0x2a0a1b[_0x5b57('0x19')];var _0x2cb809=_0x132430?_0x3b4631[_0x5b57('0x1c')]:_0x2a0a1b[_0x5b57('0x19')]+_0x2a0a1b[_0x5b57('0x1b')];var _0x5f0dc6;if(_0x2cb809>=_0x32f18d){_0x2cb809=_0x32f18d;_0x5f0dc6=0xc8;}else{_0x5f0dc6=0xce;}_0x4ba858[_0x5b57('0x16')](_0x5f0dc6);return _0x4ba858[_0x5b57('0x1d')](_0x5b57('0x1e'),_0x336db6+'-'+_0x2cb809+'/'+_0x32f18d)[_0x5b57('0x18')](_0x3b4631);}return null;};}function patchUpdates(_0x53378c){return function(_0x3c7f4f){try{jsonpatch[_0x5b57('0x1f')](_0x3c7f4f,_0x53378c,!![]);}catch(_0x3cb5c0){return BPromise['reject'](_0x3cb5c0);}return _0x3c7f4f[_0x5b57('0x20')]();};}function saveUpdates(_0xd8567a,_0x3a4488){return function(_0x28721f){if(_0x28721f){return _0x28721f[_0x5b57('0x21')](_0xd8567a)[_0x5b57('0x22')](function(_0x4a4ed8){return _0x4a4ed8;});}return null;};}function removeEntity(_0x139214,_0x50ea5f){return function(_0x11c149){if(_0x11c149){return _0x11c149[_0x5b57('0x23')]()['then'](function(){_0x139214['status'](0xcc)[_0x5b57('0x17')]();});}};}function handleEntityNotFound(_0x5eab3d,_0x120dc6){return function(_0xc173a4){if(!_0xc173a4){_0x5eab3d[_0x5b57('0x15')](0x194);}return _0xc173a4;};}function handleError(_0x20a95a,_0x39b2f4){_0x39b2f4=_0x39b2f4||0x1f4;return function(_0x17ac8b){logger[_0x5b57('0x24')](_0x17ac8b[_0x5b57('0x25')]);if(_0x17ac8b[_0x5b57('0x26')]){delete _0x17ac8b[_0x5b57('0x26')];}_0x20a95a[_0x5b57('0x16')](_0x39b2f4)[_0x5b57('0x27')](_0x17ac8b);};}exports[_0x5b57('0x28')]=function(_0x53c81b,_0xc59d9f){var _0x42664f={},_0x3e8bc6={},_0x4da4a8={'count':0x0,'rows':[]};var _0x42b276=_['map'](db[_0x5b57('0x29')][_0x5b57('0x2a')],function(_0x33b262){return{'name':_0x33b262[_0x5b57('0x2b')],'type':_0x33b262[_0x5b57('0x2c')][_0x5b57('0x2d')]};});_0x3e8bc6['model']=_[_0x5b57('0x2e')](_0x42b276,_0x5b57('0x26'));_0x3e8bc6[_0x5b57('0x2f')]=_[_0x5b57('0x30')](_0x53c81b[_0x5b57('0x2f')]);_0x3e8bc6['filters']=_[_0x5b57('0x31')](_0x3e8bc6['model'],_0x3e8bc6[_0x5b57('0x2f')]);_0x42664f['attributes']=_[_0x5b57('0x31')](_0x3e8bc6[_0x5b57('0x32')],qs[_0x5b57('0x33')](_0x53c81b[_0x5b57('0x2f')][_0x5b57('0x33')]));_0x42664f[_0x5b57('0x34')]=_0x42664f[_0x5b57('0x34')][_0x5b57('0x35')]?_0x42664f[_0x5b57('0x34')]:_0x3e8bc6[_0x5b57('0x32')];if(!_0x53c81b['query'][_0x5b57('0x36')](_0x5b57('0x37'))){_0x42664f[_0x5b57('0x1b')]=qs[_0x5b57('0x1b')](_0x53c81b[_0x5b57('0x2f')][_0x5b57('0x1b')]);_0x42664f[_0x5b57('0x19')]=qs[_0x5b57('0x19')](_0x53c81b[_0x5b57('0x2f')][_0x5b57('0x19')]);}_0x42664f[_0x5b57('0x38')]=qs[_0x5b57('0x39')](_0x53c81b[_0x5b57('0x2f')][_0x5b57('0x39')]);_0x42664f['where']=qs[_0x5b57('0x3a')](_['pick'](_0x53c81b[_0x5b57('0x2f')],_0x3e8bc6[_0x5b57('0x3a')]),_0x42b276);if(_0x53c81b[_0x5b57('0x2f')][_0x5b57('0x3b')]){_0x42664f[_0x5b57('0x3c')]=_[_0x5b57('0x3d')](_0x42664f[_0x5b57('0x3c')],{'$or':_['map'](_0x42b276,function(_0x25a1be){if(_0x25a1be[_0x5b57('0x2c')]!==_0x5b57('0x3e')){var _0x569c87={};_0x569c87[_0x25a1be[_0x5b57('0x26')]]={'$like':'%'+_0x53c81b[_0x5b57('0x2f')]['filter']+'%'};return _0x569c87;}})});}_0x42664f=_[_0x5b57('0x3d')]({},_0x42664f,_0x53c81b[_0x5b57('0x3f')]);var _0xa417ce={'where':_0x42664f['where']};return db['FaxQueueReport'][_0x5b57('0x1c')](_0xa417ce)[_0x5b57('0x22')](function(_0x529d25){_0x4da4a8[_0x5b57('0x1c')]=_0x529d25;if(_0x53c81b['query'][_0x5b57('0x40')]){_0x42664f[_0x5b57('0x41')]=[{'all':!![]}];}return db['FaxQueueReport'][_0x5b57('0x42')](_0x42664f);})[_0x5b57('0x22')](function(_0x16a177){_0x4da4a8[_0x5b57('0x43')]=_0x16a177;return _0x4da4a8;})[_0x5b57('0x22')](respondWithFilteredResult(_0xc59d9f,_0x42664f))[_0x5b57('0x44')](handleError(_0xc59d9f,null));};exports[_0x5b57('0x45')]=function(_0x4d80e7,_0x4a0431){var _0x140d23={'raw':!![],'where':{'id':_0x4d80e7[_0x5b57('0x46')]['id']}},_0x48fb91={};_0x48fb91['model']=_[_0x5b57('0x30')](db[_0x5b57('0x29')][_0x5b57('0x2a')]);_0x48fb91[_0x5b57('0x2f')]=_[_0x5b57('0x30')](_0x4d80e7[_0x5b57('0x2f')]);_0x48fb91[_0x5b57('0x3a')]=_[_0x5b57('0x31')](_0x48fb91[_0x5b57('0x32')],_0x48fb91[_0x5b57('0x2f')]);_0x140d23[_0x5b57('0x34')]=_[_0x5b57('0x31')](_0x48fb91[_0x5b57('0x32')],qs[_0x5b57('0x33')](_0x4d80e7[_0x5b57('0x2f')][_0x5b57('0x33')]));_0x140d23[_0x5b57('0x34')]=_0x140d23[_0x5b57('0x34')][_0x5b57('0x35')]?_0x140d23['attributes']:_0x48fb91[_0x5b57('0x32')];if(_0x4d80e7[_0x5b57('0x2f')][_0x5b57('0x40')]){_0x140d23['include']=[{'all':!![]}];}_0x140d23=_[_0x5b57('0x3d')]({},_0x140d23,_0x4d80e7[_0x5b57('0x3f')]);return db[_0x5b57('0x29')][_0x5b57('0x47')](_0x140d23)['then'](handleEntityNotFound(_0x4a0431,null))['then'](respondWithResult(_0x4a0431,null))['catch'](handleError(_0x4a0431,null));};exports[_0x5b57('0x48')]=function(_0x3aabe2,_0x5e6129){return db[_0x5b57('0x29')][_0x5b57('0x48')](_0x3aabe2[_0x5b57('0x49')],{})[_0x5b57('0x22')](respondWithResult(_0x5e6129,0xc9))[_0x5b57('0x44')](handleError(_0x5e6129,null));};exports[_0x5b57('0x21')]=function(_0x22ea65,_0x2027b4){if(_0x22ea65[_0x5b57('0x49')]['id']){delete _0x22ea65[_0x5b57('0x49')]['id'];}return db[_0x5b57('0x29')][_0x5b57('0x47')]({'where':{'id':_0x22ea65[_0x5b57('0x46')]['id']}})[_0x5b57('0x22')](handleEntityNotFound(_0x2027b4,null))[_0x5b57('0x22')](saveUpdates(_0x22ea65[_0x5b57('0x49')],null))[_0x5b57('0x22')](respondWithResult(_0x2027b4,null))[_0x5b57('0x44')](handleError(_0x2027b4,null));};exports[_0x5b57('0x23')]=function(_0x115dda,_0x4761ab){return db[_0x5b57('0x29')]['find']({'where':{'id':_0x115dda['params']['id']}})[_0x5b57('0x22')](handleEntityNotFound(_0x4761ab,null))['then'](removeEntity(_0x4761ab,null))[_0x5b57('0x44')](handleError(_0x4761ab,null));};exports['describe']=function(_0x9ad4eb,_0x302176){return db[_0x5b57('0x29')]['describe']()['then'](respondWithResult(_0x302176,null))['catch'](handleError(_0x302176,null));};
\ No newline at end of file
index 2044a42..2f74bd9 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','./faxQueueReport.attributes','define','report_fax_queue','uniqueid','util'];(function(_0x2a04f6,_0x205abf){var _0x2d9db7=function(_0x45a9da){while(--_0x45a9da){_0x2a04f6['push'](_0x2a04f6['shift']());}};_0x2d9db7(++_0x205abf);}(_0x1261,0x144));var _0x1126=function(_0x5ddb91,_0x50a3c6){_0x5ddb91=_0x5ddb91-0x0;var _0x222f31=_0x1261[_0x5ddb91];return _0x222f31;};'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')]('FaxQueueReport',attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[{'name':_0x1126('0xc'),'fields':[_0x1126('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7fbe=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./faxQueueReport.attributes','exports','define','FaxQueueReport','uniqueid','../../config/logger','api'];(function(_0x545d9d,_0x2b3c89){var _0x5ba400=function(_0x1367da){while(--_0x1367da){_0x545d9d['push'](_0x545d9d['shift']());}};_0x5ba400(++_0x2b3c89);}(_0x7fbe,0x1ec));var _0xe7fb=function(_0x3b86f5,_0x37aee3){_0x3b86f5=_0x3b86f5-0x0;var _0x21aaff=_0x7fbe[_0x3b86f5];return _0x21aaff;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xe7fb('0x0'))(_0xe7fb('0x1'));var moment=require(_0xe7fb('0x2'));var BPromise=require(_0xe7fb('0x3'));var rp=require(_0xe7fb('0x4'));var fs=require('fs');var path=require(_0xe7fb('0x5'));var rimraf=require(_0xe7fb('0x6'));var config=require(_0xe7fb('0x7'));var attributes=require(_0xe7fb('0x8'));module[_0xe7fb('0x9')]=function(_0x290172,_0x12d1b0){return _0x290172[_0xe7fb('0xa')](_0xe7fb('0xb'),attributes,{'tableName':'report_fax_queue','paranoid':![],'indexes':[{'name':_0xe7fb('0xc'),'fields':[_0xe7fb('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index dda297c..88b8eb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7bb7=['http','request','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s','error','code','FaxQueueReport,\x20%s,\x20%s','message','info','catch','CreateFaxQueueReport','options','then','UpdateFaxQueueReport','FaxQueueReport','update','body','raw','where','attributes','limit','stringify','lodash','moment','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client'];(function(_0x9600b0,_0x1957e1){var _0x39e93d=function(_0xa0d7cc){while(--_0xa0d7cc){_0x9600b0['push'](_0x9600b0['shift']());}};_0x39e93d(++_0x1957e1);}(_0x7bb7,0x14d));var _0x77bb=function(_0xdf0b8a,_0x3d9a16){_0xdf0b8a=_0xdf0b8a-0x0;var _0x1f2adb=_0x7bb7[_0xdf0b8a];return _0x1f2adb;};'use strict';var _=require(_0x77bb('0x0'));var util=require('util');var moment=require(_0x77bb('0x1'));var BPromise=require('bluebird');var rs=require(_0x77bb('0x2'));var fs=require('fs');var Redis=require(_0x77bb('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x77bb('0x4'))(_0x77bb('0x5'));var config=require(_0x77bb('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x77bb('0x7')][_0x77bb('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x874a40,_0x2e124e,_0x4d8d44){return new BPromise(function(_0x1ef911,_0x25af2e){return client[_0x77bb('0x9')](_0x874a40,_0x4d8d44)['then'](function(_0x2abbc1){logger['info']('FaxQueueReport,\x20%s,\x20%s',_0x2e124e,_0x77bb('0xa'));logger[_0x77bb('0xb')](_0x77bb('0xc'),_0x2e124e,'request\x20sent',JSON['stringify'](_0x2abbc1));if(_0x2abbc1['error']){if(_0x2abbc1[_0x77bb('0xd')][_0x77bb('0xe')]===0x1f4){logger[_0x77bb('0xd')](_0x77bb('0xf'),_0x2e124e,_0x2abbc1[_0x77bb('0xd')][_0x77bb('0x10')]);return _0x25af2e(_0x2abbc1['error'][_0x77bb('0x10')]);}logger[_0x77bb('0xd')]('FaxQueueReport,\x20%s,\x20%s',_0x2e124e,_0x2abbc1[_0x77bb('0xd')][_0x77bb('0x10')]);return _0x1ef911(_0x2abbc1['error']['message']);}else{logger[_0x77bb('0x11')]('FaxQueueReport,\x20%s,\x20%s',_0x2e124e,'request\x20sent');_0x1ef911(_0x2abbc1['result']['message']);}})[_0x77bb('0x12')](function(_0x3133c9){logger[_0x77bb('0xd')](_0x77bb('0xf'),_0x2e124e,_0x3133c9);_0x25af2e(_0x3133c9);});});}exports[_0x77bb('0x13')]=function(_0x3b8295){var _0x11ead5=this;return new Promise(function(_0x139a4d,_0x19b2da){return db['FaxQueueReport']['create'](_0x3b8295['body'],{'raw':_0x3b8295[_0x77bb('0x14')]?_0x3b8295[_0x77bb('0x14')]['raw']===undefined?!![]:![]:!![]})[_0x77bb('0x15')](function(_0x27a7b2){logger[_0x77bb('0x11')](_0x77bb('0x13'),_0x3b8295);logger[_0x77bb('0xb')](_0x77bb('0x13'),_0x3b8295,JSON['stringify'](_0x27a7b2));_0x139a4d(_0x27a7b2);})['catch'](function(_0xe55856){logger['error'](_0x77bb('0x13'),_0xe55856[_0x77bb('0x10')],_0x3b8295);_0x19b2da(_0x11ead5['error'](0x1f4,_0xe55856[_0x77bb('0x10')]));});});};exports[_0x77bb('0x16')]=function(_0x4fdd92){var _0x51cdc2=this;return new Promise(function(_0x559adb,_0xebab83){return db[_0x77bb('0x17')][_0x77bb('0x18')](_0x4fdd92[_0x77bb('0x19')],{'raw':_0x4fdd92[_0x77bb('0x14')]?_0x4fdd92[_0x77bb('0x14')][_0x77bb('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4fdd92[_0x77bb('0x14')]?_0x4fdd92[_0x77bb('0x14')][_0x77bb('0x1b')]||null:null,'attributes':_0x4fdd92['options']?_0x4fdd92['options'][_0x77bb('0x1c')]||null:null,'limit':_0x4fdd92['options']?_0x4fdd92[_0x77bb('0x14')][_0x77bb('0x1d')]||null:null})[_0x77bb('0x15')](function(_0x580356){logger[_0x77bb('0x11')](_0x77bb('0x16'),_0x4fdd92);logger[_0x77bb('0xb')]('UpdateFaxQueueReport',_0x4fdd92,JSON[_0x77bb('0x1e')](_0x580356));_0x559adb(_0x580356);})[_0x77bb('0x12')](function(_0x1def22){logger[_0x77bb('0xd')](_0x77bb('0x16'),_0x1def22[_0x77bb('0x10')],_0x4fdd92);_0xebab83(_0x51cdc2[_0x77bb('0xd')](0x1f4,_0x1def22['message']));});});};
\ No newline at end of file
+var _0x38a3=['stringify','error','code','FaxQueueReport,\x20%s,\x20%s','message','result','FaxQueueReport','create','body','options','raw','CreateFaxQueueReport','catch','UpdateFaxQueueReport','update','where','attributes','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','then','info','request\x20sent','debug','FaxQueueReport,\x20%s,\x20%s,\x20%s'];(function(_0x5be7aa,_0x5de661){var _0x215408=function(_0x353715){while(--_0x353715){_0x5be7aa['push'](_0x5be7aa['shift']());}};_0x215408(++_0x5de661);}(_0x38a3,0x1c3));var _0x338a=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x38a3[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x338a('0x0'));var util=require(_0x338a('0x1'));var moment=require(_0x338a('0x2'));var BPromise=require(_0x338a('0x3'));var rs=require(_0x338a('0x4'));var fs=require('fs');var Redis=require(_0x338a('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x338a('0x6'));var logger=require(_0x338a('0x7'))('rpc');var config=require(_0x338a('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xaaad0e,_0x24f0c3,_0x34544c){return new BPromise(function(_0x2527a3,_0x1157f0){return client['request'](_0xaaad0e,_0x34544c)[_0x338a('0x9')](function(_0x49f1f3){logger[_0x338a('0xa')]('FaxQueueReport,\x20%s,\x20%s',_0x24f0c3,_0x338a('0xb'));logger[_0x338a('0xc')](_0x338a('0xd'),_0x24f0c3,_0x338a('0xb'),JSON[_0x338a('0xe')](_0x49f1f3));if(_0x49f1f3[_0x338a('0xf')]){if(_0x49f1f3[_0x338a('0xf')][_0x338a('0x10')]===0x1f4){logger['error'](_0x338a('0x11'),_0x24f0c3,_0x49f1f3[_0x338a('0xf')]['message']);return _0x1157f0(_0x49f1f3[_0x338a('0xf')][_0x338a('0x12')]);}logger[_0x338a('0xf')]('FaxQueueReport,\x20%s,\x20%s',_0x24f0c3,_0x49f1f3[_0x338a('0xf')][_0x338a('0x12')]);return _0x2527a3(_0x49f1f3[_0x338a('0xf')][_0x338a('0x12')]);}else{logger[_0x338a('0xa')](_0x338a('0x11'),_0x24f0c3,'request\x20sent');_0x2527a3(_0x49f1f3[_0x338a('0x13')]['message']);}})['catch'](function(_0x230084){logger[_0x338a('0xf')](_0x338a('0x11'),_0x24f0c3,_0x230084);_0x1157f0(_0x230084);});});}exports['CreateFaxQueueReport']=function(_0x1094a8){var _0x2ed9e8=this;return new Promise(function(_0x5e9aff,_0x42038e){return db[_0x338a('0x14')][_0x338a('0x15')](_0x1094a8[_0x338a('0x16')],{'raw':_0x1094a8[_0x338a('0x17')]?_0x1094a8[_0x338a('0x17')][_0x338a('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x395e2e){logger[_0x338a('0xa')](_0x338a('0x19'),_0x1094a8);logger[_0x338a('0xc')]('CreateFaxQueueReport',_0x1094a8,JSON[_0x338a('0xe')](_0x395e2e));_0x5e9aff(_0x395e2e);})[_0x338a('0x1a')](function(_0x478c4a){logger[_0x338a('0xf')](_0x338a('0x19'),_0x478c4a['message'],_0x1094a8);_0x42038e(_0x2ed9e8[_0x338a('0xf')](0x1f4,_0x478c4a[_0x338a('0x12')]));});});};exports[_0x338a('0x1b')]=function(_0x9a1d7b){var _0x58dfe0=this;return new Promise(function(_0x5b178e,_0x314899){return db[_0x338a('0x14')][_0x338a('0x1c')](_0x9a1d7b[_0x338a('0x16')],{'raw':_0x9a1d7b[_0x338a('0x17')]?_0x9a1d7b[_0x338a('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x9a1d7b['options']?_0x9a1d7b[_0x338a('0x17')][_0x338a('0x1d')]||null:null,'attributes':_0x9a1d7b[_0x338a('0x17')]?_0x9a1d7b['options'][_0x338a('0x1e')]||null:null,'limit':_0x9a1d7b[_0x338a('0x17')]?_0x9a1d7b[_0x338a('0x17')]['limit']||null:null})[_0x338a('0x9')](function(_0x2a78d1){logger[_0x338a('0xa')](_0x338a('0x1b'),_0x9a1d7b);logger['debug'](_0x338a('0x1b'),_0x9a1d7b,JSON[_0x338a('0xe')](_0x2a78d1));_0x5b178e(_0x2a78d1);})[_0x338a('0x1a')](function(_0x575754){logger[_0x338a('0xf')](_0x338a('0x1b'),_0x575754[_0x338a('0x12')],_0x9a1d7b);_0x314899(_0x58dfe0[_0x338a('0xf')](0x1f4,_0x575754[_0x338a('0x12')]));});});};
\ No newline at end of file
index 3e184db..13bd13f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5101=['get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./faxQueueReport.controller'];(function(_0x8f61fe,_0x1ad7a2){var _0x2b9d7d=function(_0x4aeec0){while(--_0x4aeec0){_0x8f61fe['push'](_0x8f61fe['shift']());}};_0x2b9d7d(++_0x1ad7a2);}(_0x5101,0x1b0));var _0x1510=function(_0x151056,_0x56d252){_0x151056=_0x151056-0x0;var _0x15b49a=_0x5101[_0x151056];return _0x15b49a;};'use strict';var multer=require(_0x1510('0x0'));var util=require(_0x1510('0x1'));var path=require(_0x1510('0x2'));var timeout=require(_0x1510('0x3'));var express=require(_0x1510('0x4'));var router=express[_0x1510('0x5')]();var fs_extra=require(_0x1510('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0x1510('0x7'));var config=require('../../config/environment');var controller=require(_0x1510('0x8'));router[_0x1510('0x9')]('/',auth[_0x1510('0xa')](),controller[_0x1510('0xb')]);router[_0x1510('0x9')](_0x1510('0xc'),auth[_0x1510('0xa')](),controller[_0x1510('0xd')]);router['get'](_0x1510('0xe'),auth[_0x1510('0xa')](),controller[_0x1510('0xf')]);router[_0x1510('0x10')]('/',auth['isAuthenticated'](),controller[_0x1510('0x11')]);router[_0x1510('0x12')](_0x1510('0xe'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x1510('0xe'),auth[_0x1510('0xa')](),controller[_0x1510('0x13')]);module[_0x1510('0x14')]=router;
\ No newline at end of file
+var _0x4034=['./faxQueueReport.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','create','put','update','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x38ae3e,_0x1e2503){var _0x1f19c0=function(_0x5eaa96){while(--_0x5eaa96){_0x38ae3e['push'](_0x38ae3e['shift']());}};_0x1f19c0(++_0x1e2503);}(_0x4034,0x183));var _0x4403=function(_0x195c2c,_0x157ee4){_0x195c2c=_0x195c2c-0x0;var _0x35dbee=_0x4034[_0x195c2c];return _0x35dbee;};'use strict';var multer=require(_0x4403('0x0'));var util=require(_0x4403('0x1'));var path=require(_0x4403('0x2'));var timeout=require('connect-timeout');var express=require(_0x4403('0x3'));var router=express[_0x4403('0x4')]();var fs_extra=require(_0x4403('0x5'));var auth=require(_0x4403('0x6'));var interaction=require(_0x4403('0x7'));var config=require(_0x4403('0x8'));var controller=require(_0x4403('0x9'));router[_0x4403('0xa')]('/',auth['isAuthenticated'](),controller[_0x4403('0xb')]);router[_0x4403('0xa')](_0x4403('0xc'),auth[_0x4403('0xd')](),controller[_0x4403('0xe')]);router[_0x4403('0xa')](_0x4403('0xf'),auth[_0x4403('0xd')](),controller[_0x4403('0x10')]);router[_0x4403('0x11')]('/',auth['isAuthenticated'](),controller[_0x4403('0x12')]);router[_0x4403('0x13')](_0x4403('0xf'),auth[_0x4403('0xd')](),controller[_0x4403('0x14')]);router['delete'](_0x4403('0xf'),auth['isAuthenticated'](),controller[_0x4403('0x15')]);module['exports']=router;
\ No newline at end of file
index b93427b..bfa498c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b84=['moment','sequelize','ENUM','queue','DATE'];(function(_0x944bfd,_0x29d12c){var _0x5e7555=function(_0x47f006){while(--_0x47f006){_0x944bfd['push'](_0x944bfd['shift']());}};_0x5e7555(++_0x29d12c);}(_0x4b84,0x1cc));var _0x44b8=function(_0x1c6089,_0x3816e2){_0x1c6089=_0x1c6089-0x0;var _0x4d97c1=_0x4b84[_0x1c6089];return _0x4d97c1;};'use strict';var moment=require(_0x44b8('0x0'));var Sequelize=require(_0x44b8('0x1'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x44b8('0x2')]('account','agent',_0x44b8('0x3')),'allowNull':![],'defaultValue':_0x44b8('0x3')},'transferredAt':{'type':Sequelize[_0x44b8('0x4')],'allowNull':![],'defaultValue':Sequelize['NOW']}};
\ No newline at end of file
+var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x4f781e,_0x18ca0e){var _0x1d6aa2=function(_0x59e648){while(--_0x59e648){_0x4f781e['push'](_0x4f781e['shift']());}};_0x1d6aa2(++_0x18ca0e);}(_0xedd9,0xfc));var _0x9edd=function(_0x3f0e4f,_0x2d4c24){_0x3f0e4f=_0x3f0e4f-0x0;var _0x12c5b9=_0xedd9[_0x3f0e4f];return _0x12c5b9;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
index 22bf2c3..1e363ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b06=['options','includeAll','include','findAll','params','find','create','body','catch','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox','to-csv','ejs','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','end','status','json','offset','limit','count','set','Content-Range','apply','save','update','then','destroy','sendStatus','stack','name','send','map','FaxTransferReport','rawAttributes','fieldName','type','key','model','query','keys','attributes','intersection','fields','length','order','sort','where','filters','pick','filter','merge','VIRTUAL'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x1b06,0x1ec));var _0x61b0=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x1b06[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x61b0('0x0'));var zipdir=require(_0x61b0('0x1'));var jsonpatch=require(_0x61b0('0x2'));var rp=require('request-promise');var moment=require(_0x61b0('0x3'));var BPromise=require(_0x61b0('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x61b0('0x5'));var sox=require(_0x61b0('0x6'));var csv=require(_0x61b0('0x7'));var ejs=require(_0x61b0('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x61b0('0x9'));var squel=require(_0x61b0('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x61b0('0xb'));var toCsv=require('to-csv');var querystring=require(_0x61b0('0xc'));var Papa=require(_0x61b0('0xd'));var Redis=require(_0x61b0('0xe'));var authService=require(_0x61b0('0xf'));var qs=require(_0x61b0('0x10'));var as=require(_0x61b0('0x11'));var hardwareService=require(_0x61b0('0x12'));var logger=require('../../config/logger')(_0x61b0('0x13'));var utils=require('../../config/utils');var config=require(_0x61b0('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x61b0('0x15'))['db'];function respondWithStatusCode(_0x3ae393,_0x2d4d29){_0x2d4d29=_0x2d4d29||0xcc;return function(_0x1a0ece){if(_0x1a0ece){return _0x3ae393['sendStatus'](_0x2d4d29);}return _0x3ae393['status'](_0x2d4d29)[_0x61b0('0x16')]();};}function respondWithResult(_0x5f2566,_0x38680b){_0x38680b=_0x38680b||0xc8;return function(_0x44d1a4){if(_0x44d1a4){return _0x5f2566[_0x61b0('0x17')](_0x38680b)[_0x61b0('0x18')](_0x44d1a4);}};}function respondWithFilteredResult(_0x18deea,_0x4cfde1){return function(_0x53f59d){if(_0x53f59d){var _0x6b2f69=typeof _0x4cfde1[_0x61b0('0x19')]==='undefined'&&typeof _0x4cfde1[_0x61b0('0x1a')]==='undefined';var _0x469050=_0x53f59d[_0x61b0('0x1b')];var _0x53bb1d=_0x6b2f69?0x0:_0x4cfde1['offset'];var _0xc9ce5c=_0x6b2f69?_0x53f59d[_0x61b0('0x1b')]:_0x4cfde1[_0x61b0('0x19')]+_0x4cfde1[_0x61b0('0x1a')];var _0x106987;if(_0xc9ce5c>=_0x469050){_0xc9ce5c=_0x469050;_0x106987=0xc8;}else{_0x106987=0xce;}_0x18deea[_0x61b0('0x17')](_0x106987);return _0x18deea[_0x61b0('0x1c')](_0x61b0('0x1d'),_0x53bb1d+'-'+_0xc9ce5c+'/'+_0x469050)[_0x61b0('0x18')](_0x53f59d);}return null;};}function patchUpdates(_0x3474f5){return function(_0x50decb){try{jsonpatch[_0x61b0('0x1e')](_0x50decb,_0x3474f5,!![]);}catch(_0x518721){return BPromise['reject'](_0x518721);}return _0x50decb[_0x61b0('0x1f')]();};}function saveUpdates(_0x2245a4,_0x189b56){return function(_0x524092){if(_0x524092){return _0x524092[_0x61b0('0x20')](_0x2245a4)[_0x61b0('0x21')](function(_0x7d5aca){return _0x7d5aca;});}return null;};}function removeEntity(_0x1530ab,_0x3b9777){return function(_0x4c6ecb){if(_0x4c6ecb){return _0x4c6ecb[_0x61b0('0x22')]()[_0x61b0('0x21')](function(){_0x1530ab[_0x61b0('0x17')](0xcc)[_0x61b0('0x16')]();});}};}function handleEntityNotFound(_0x47c8b9,_0x29f094){return function(_0x569eb7){if(!_0x569eb7){_0x47c8b9[_0x61b0('0x23')](0x194);}return _0x569eb7;};}function handleError(_0x21e7c6,_0x14b9f6){_0x14b9f6=_0x14b9f6||0x1f4;return function(_0x5bc935){logger['error'](_0x5bc935[_0x61b0('0x24')]);if(_0x5bc935[_0x61b0('0x25')]){delete _0x5bc935[_0x61b0('0x25')];}_0x21e7c6['status'](_0x14b9f6)[_0x61b0('0x26')](_0x5bc935);};}exports['index']=function(_0x4b7f7a,_0x4c34b4){var _0x4224f0={},_0x31c9c8={},_0x18c2a6={'count':0x0,'rows':[]};var _0x7da8f0=_[_0x61b0('0x27')](db[_0x61b0('0x28')][_0x61b0('0x29')],function(_0x59cae6){return{'name':_0x59cae6[_0x61b0('0x2a')],'type':_0x59cae6[_0x61b0('0x2b')][_0x61b0('0x2c')]};});_0x31c9c8[_0x61b0('0x2d')]=_[_0x61b0('0x27')](_0x7da8f0,_0x61b0('0x25'));_0x31c9c8[_0x61b0('0x2e')]=_[_0x61b0('0x2f')](_0x4b7f7a[_0x61b0('0x2e')]);_0x31c9c8['filters']=_['intersection'](_0x31c9c8[_0x61b0('0x2d')],_0x31c9c8['query']);_0x4224f0[_0x61b0('0x30')]=_[_0x61b0('0x31')](_0x31c9c8[_0x61b0('0x2d')],qs[_0x61b0('0x32')](_0x4b7f7a[_0x61b0('0x2e')][_0x61b0('0x32')]));_0x4224f0[_0x61b0('0x30')]=_0x4224f0[_0x61b0('0x30')][_0x61b0('0x33')]?_0x4224f0[_0x61b0('0x30')]:_0x31c9c8[_0x61b0('0x2d')];if(!_0x4b7f7a['query']['hasOwnProperty']('nolimit')){_0x4224f0[_0x61b0('0x1a')]=qs['limit'](_0x4b7f7a[_0x61b0('0x2e')][_0x61b0('0x1a')]);_0x4224f0[_0x61b0('0x19')]=qs[_0x61b0('0x19')](_0x4b7f7a[_0x61b0('0x2e')][_0x61b0('0x19')]);}_0x4224f0[_0x61b0('0x34')]=qs[_0x61b0('0x35')](_0x4b7f7a[_0x61b0('0x2e')]['sort']);_0x4224f0[_0x61b0('0x36')]=qs[_0x61b0('0x37')](_[_0x61b0('0x38')](_0x4b7f7a[_0x61b0('0x2e')],_0x31c9c8['filters']),_0x7da8f0);if(_0x4b7f7a[_0x61b0('0x2e')][_0x61b0('0x39')]){_0x4224f0[_0x61b0('0x36')]=_[_0x61b0('0x3a')](_0x4224f0[_0x61b0('0x36')],{'$or':_['map'](_0x7da8f0,function(_0x652446){if(_0x652446['type']!==_0x61b0('0x3b')){var _0x5231f1={};_0x5231f1[_0x652446['name']]={'$like':'%'+_0x4b7f7a['query'][_0x61b0('0x39')]+'%'};return _0x5231f1;}})});}_0x4224f0=_[_0x61b0('0x3a')]({},_0x4224f0,_0x4b7f7a[_0x61b0('0x3c')]);var _0x37633d={'where':_0x4224f0[_0x61b0('0x36')]};return db[_0x61b0('0x28')][_0x61b0('0x1b')](_0x37633d)['then'](function(_0x162958){_0x18c2a6[_0x61b0('0x1b')]=_0x162958;if(_0x4b7f7a[_0x61b0('0x2e')][_0x61b0('0x3d')]){_0x4224f0[_0x61b0('0x3e')]=[{'all':!![]}];}return db[_0x61b0('0x28')][_0x61b0('0x3f')](_0x4224f0);})[_0x61b0('0x21')](function(_0x184375){_0x18c2a6['rows']=_0x184375;return _0x18c2a6;})[_0x61b0('0x21')](respondWithFilteredResult(_0x4c34b4,_0x4224f0))['catch'](handleError(_0x4c34b4,null));};exports['show']=function(_0x4424fa,_0x371e50){var _0x3f35e2={'raw':!![],'where':{'id':_0x4424fa[_0x61b0('0x40')]['id']}},_0x3a8ded={};_0x3a8ded[_0x61b0('0x2d')]=_['keys'](db[_0x61b0('0x28')]['rawAttributes']);_0x3a8ded[_0x61b0('0x2e')]=_[_0x61b0('0x2f')](_0x4424fa[_0x61b0('0x2e')]);_0x3a8ded[_0x61b0('0x37')]=_[_0x61b0('0x31')](_0x3a8ded['model'],_0x3a8ded[_0x61b0('0x2e')]);_0x3f35e2[_0x61b0('0x30')]=_['intersection'](_0x3a8ded['model'],qs[_0x61b0('0x32')](_0x4424fa[_0x61b0('0x2e')][_0x61b0('0x32')]));_0x3f35e2['attributes']=_0x3f35e2[_0x61b0('0x30')][_0x61b0('0x33')]?_0x3f35e2[_0x61b0('0x30')]:_0x3a8ded[_0x61b0('0x2d')];if(_0x4424fa['query'][_0x61b0('0x3d')]){_0x3f35e2[_0x61b0('0x3e')]=[{'all':!![]}];}_0x3f35e2=_['merge']({},_0x3f35e2,_0x4424fa['options']);return db[_0x61b0('0x28')][_0x61b0('0x41')](_0x3f35e2)[_0x61b0('0x21')](handleEntityNotFound(_0x371e50,null))['then'](respondWithResult(_0x371e50,null))['catch'](handleError(_0x371e50,null));};exports[_0x61b0('0x42')]=function(_0x6c37b8,_0x1641a9){return db[_0x61b0('0x28')]['create'](_0x6c37b8[_0x61b0('0x43')],{})['then'](respondWithResult(_0x1641a9,0xc9))['catch'](handleError(_0x1641a9,null));};exports[_0x61b0('0x20')]=function(_0x54564e,_0x52fdde){if(_0x54564e[_0x61b0('0x43')]['id']){delete _0x54564e[_0x61b0('0x43')]['id'];}return db[_0x61b0('0x28')][_0x61b0('0x41')]({'where':{'id':_0x54564e[_0x61b0('0x40')]['id']}})[_0x61b0('0x21')](handleEntityNotFound(_0x52fdde,null))[_0x61b0('0x21')](saveUpdates(_0x54564e[_0x61b0('0x43')],null))[_0x61b0('0x21')](respondWithResult(_0x52fdde,null))[_0x61b0('0x44')](handleError(_0x52fdde,null));};exports[_0x61b0('0x22')]=function(_0x2a26fb,_0xbded48){return db[_0x61b0('0x28')]['find']({'where':{'id':_0x2a26fb[_0x61b0('0x40')]['id']}})[_0x61b0('0x21')](handleEntityNotFound(_0xbded48,null))[_0x61b0('0x21')](removeEntity(_0xbded48,null))[_0x61b0('0x44')](handleError(_0xbded48,null));};exports['describe']=function(_0x599f17,_0xfe7df8){return db[_0x61b0('0x28')]['describe']()[_0x61b0('0x21')](respondWithResult(_0xfe7df8,null))[_0x61b0('0x44')](handleError(_0xfe7df8,null));};
\ No newline at end of file
+var _0xc5da=['FaxTransferReport','include','findAll','rows','catch','show','params','length','includeAll','find','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','querystring','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','save','update','then','destroy','end','error','stack','name','send','index','rawAttributes','key','model','map','keys','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','merge','options'];(function(_0x5ebf9c,_0x1970a0){var _0x50f191=function(_0x39de54){while(--_0x39de54){_0x5ebf9c['push'](_0x5ebf9c['shift']());}};_0x50f191(++_0x1970a0);}(_0xc5da,0x148));var _0xac5d=function(_0x519888,_0x32f7c3){_0x519888=_0x519888-0x0;var _0x1aa974=_0xc5da[_0x519888];return _0x1aa974;};'use strict';var emlformat=require(_0xac5d('0x0'));var rimraf=require(_0xac5d('0x1'));var zipdir=require(_0xac5d('0x2'));var jsonpatch=require(_0xac5d('0x3'));var rp=require(_0xac5d('0x4'));var moment=require(_0xac5d('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xac5d('0x6'));var util=require(_0xac5d('0x7'));var path=require(_0xac5d('0x8'));var sox=require(_0xac5d('0x9'));var csv=require(_0xac5d('0xa'));var ejs=require(_0xac5d('0xb'));var fs=require('fs');var fs_extra=require(_0xac5d('0xc'));var _=require(_0xac5d('0xd'));var squel=require('squel');var crypto=require(_0xac5d('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xac5d('0xf'));var toCsv=require('to-csv');var querystring=require(_0xac5d('0x10'));var Papa=require('papaparse');var Redis=require(_0xac5d('0x11'));var authService=require(_0xac5d('0x12'));var qs=require(_0xac5d('0x13'));var as=require(_0xac5d('0x14'));var hardwareService=require(_0xac5d('0x15'));var logger=require(_0xac5d('0x16'))(_0xac5d('0x17'));var utils=require(_0xac5d('0x18'));var config=require(_0xac5d('0x19'));var licenseUtil=require(_0xac5d('0x1a'));var db=require(_0xac5d('0x1b'))['db'];function respondWithStatusCode(_0x5e473a,_0x12ed9b){_0x12ed9b=_0x12ed9b||0xcc;return function(_0x53bce4){if(_0x53bce4){return _0x5e473a[_0xac5d('0x1c')](_0x12ed9b);}return _0x5e473a['status'](_0x12ed9b)['end']();};}function respondWithResult(_0x3ee8f9,_0x4c5c77){_0x4c5c77=_0x4c5c77||0xc8;return function(_0x338d00){if(_0x338d00){return _0x3ee8f9[_0xac5d('0x1d')](_0x4c5c77)[_0xac5d('0x1e')](_0x338d00);}};}function respondWithFilteredResult(_0x2c30a9,_0x420ec8){return function(_0x6fc020){if(_0x6fc020){var _0x1d9241=typeof _0x420ec8[_0xac5d('0x1f')]===_0xac5d('0x20')&&typeof _0x420ec8[_0xac5d('0x21')]===_0xac5d('0x20');var _0x3b4bc1=_0x6fc020[_0xac5d('0x22')];var _0x522661=_0x1d9241?0x0:_0x420ec8['offset'];var _0x39fd1a=_0x1d9241?_0x6fc020['count']:_0x420ec8[_0xac5d('0x1f')]+_0x420ec8[_0xac5d('0x21')];var _0x54f9cb;if(_0x39fd1a>=_0x3b4bc1){_0x39fd1a=_0x3b4bc1;_0x54f9cb=0xc8;}else{_0x54f9cb=0xce;}_0x2c30a9['status'](_0x54f9cb);return _0x2c30a9[_0xac5d('0x23')](_0xac5d('0x24'),_0x522661+'-'+_0x39fd1a+'/'+_0x3b4bc1)[_0xac5d('0x1e')](_0x6fc020);}return null;};}function patchUpdates(_0x5b89fd){return function(_0x15519e){try{jsonpatch[_0xac5d('0x25')](_0x15519e,_0x5b89fd,!![]);}catch(_0x2d4f3d){return BPromise['reject'](_0x2d4f3d);}return _0x15519e[_0xac5d('0x26')]();};}function saveUpdates(_0x1d1775,_0x45cd87){return function(_0x286a07){if(_0x286a07){return _0x286a07[_0xac5d('0x27')](_0x1d1775)[_0xac5d('0x28')](function(_0x23fc87){return _0x23fc87;});}return null;};}function removeEntity(_0x2cca1f,_0x410b1f){return function(_0x3b7dbc){if(_0x3b7dbc){return _0x3b7dbc[_0xac5d('0x29')]()[_0xac5d('0x28')](function(){_0x2cca1f[_0xac5d('0x1d')](0xcc)[_0xac5d('0x2a')]();});}};}function handleEntityNotFound(_0x3b834e,_0x5bcc4a){return function(_0x1c33e3){if(!_0x1c33e3){_0x3b834e['sendStatus'](0x194);}return _0x1c33e3;};}function handleError(_0x2c49b3,_0x84d1d2){_0x84d1d2=_0x84d1d2||0x1f4;return function(_0x2e2311){logger[_0xac5d('0x2b')](_0x2e2311[_0xac5d('0x2c')]);if(_0x2e2311[_0xac5d('0x2d')]){delete _0x2e2311[_0xac5d('0x2d')];}_0x2c49b3[_0xac5d('0x1d')](_0x84d1d2)[_0xac5d('0x2e')](_0x2e2311);};}exports[_0xac5d('0x2f')]=function(_0x586c07,_0x397c15){var _0x598cd9={},_0x3c5e7d={},_0x4c3e50={'count':0x0,'rows':[]};var _0xe2b1fa=_['map'](db['FaxTransferReport'][_0xac5d('0x30')],function(_0x122a36){return{'name':_0x122a36['fieldName'],'type':_0x122a36['type'][_0xac5d('0x31')]};});_0x3c5e7d[_0xac5d('0x32')]=_[_0xac5d('0x33')](_0xe2b1fa,_0xac5d('0x2d'));_0x3c5e7d['query']=_[_0xac5d('0x34')](_0x586c07[_0xac5d('0x35')]);_0x3c5e7d[_0xac5d('0x36')]=_[_0xac5d('0x37')](_0x3c5e7d[_0xac5d('0x32')],_0x3c5e7d['query']);_0x598cd9[_0xac5d('0x38')]=_[_0xac5d('0x37')](_0x3c5e7d[_0xac5d('0x32')],qs[_0xac5d('0x39')](_0x586c07['query']['fields']));_0x598cd9['attributes']=_0x598cd9[_0xac5d('0x38')]['length']?_0x598cd9[_0xac5d('0x38')]:_0x3c5e7d[_0xac5d('0x32')];if(!_0x586c07[_0xac5d('0x35')][_0xac5d('0x3a')]('nolimit')){_0x598cd9[_0xac5d('0x21')]=qs['limit'](_0x586c07[_0xac5d('0x35')][_0xac5d('0x21')]);_0x598cd9['offset']=qs['offset'](_0x586c07[_0xac5d('0x35')][_0xac5d('0x1f')]);}_0x598cd9[_0xac5d('0x3b')]=qs[_0xac5d('0x3c')](_0x586c07['query'][_0xac5d('0x3c')]);_0x598cd9[_0xac5d('0x3d')]=qs[_0xac5d('0x36')](_[_0xac5d('0x3e')](_0x586c07[_0xac5d('0x35')],_0x3c5e7d[_0xac5d('0x36')]),_0xe2b1fa);if(_0x586c07[_0xac5d('0x35')][_0xac5d('0x3f')]){_0x598cd9[_0xac5d('0x3d')]=_['merge'](_0x598cd9[_0xac5d('0x3d')],{'$or':_[_0xac5d('0x33')](_0xe2b1fa,function(_0x46c921){if(_0x46c921['type']!==_0xac5d('0x40')){var _0x160f6a={};_0x160f6a[_0x46c921[_0xac5d('0x2d')]]={'$like':'%'+_0x586c07[_0xac5d('0x35')]['filter']+'%'};return _0x160f6a;}})});}_0x598cd9=_[_0xac5d('0x41')]({},_0x598cd9,_0x586c07[_0xac5d('0x42')]);var _0x44a91a={'where':_0x598cd9[_0xac5d('0x3d')]};return db[_0xac5d('0x43')][_0xac5d('0x22')](_0x44a91a)[_0xac5d('0x28')](function(_0x23824c){_0x4c3e50['count']=_0x23824c;if(_0x586c07['query']['includeAll']){_0x598cd9[_0xac5d('0x44')]=[{'all':!![]}];}return db[_0xac5d('0x43')][_0xac5d('0x45')](_0x598cd9);})[_0xac5d('0x28')](function(_0x3f0680){_0x4c3e50[_0xac5d('0x46')]=_0x3f0680;return _0x4c3e50;})[_0xac5d('0x28')](respondWithFilteredResult(_0x397c15,_0x598cd9))[_0xac5d('0x47')](handleError(_0x397c15,null));};exports[_0xac5d('0x48')]=function(_0x161d82,_0x42042d){var _0x35f9d5={'raw':!![],'where':{'id':_0x161d82[_0xac5d('0x49')]['id']}},_0xf67796={};_0xf67796[_0xac5d('0x32')]=_[_0xac5d('0x34')](db[_0xac5d('0x43')]['rawAttributes']);_0xf67796[_0xac5d('0x35')]=_[_0xac5d('0x34')](_0x161d82['query']);_0xf67796['filters']=_[_0xac5d('0x37')](_0xf67796['model'],_0xf67796[_0xac5d('0x35')]);_0x35f9d5['attributes']=_[_0xac5d('0x37')](_0xf67796[_0xac5d('0x32')],qs[_0xac5d('0x39')](_0x161d82['query']['fields']));_0x35f9d5[_0xac5d('0x38')]=_0x35f9d5['attributes'][_0xac5d('0x4a')]?_0x35f9d5['attributes']:_0xf67796[_0xac5d('0x32')];if(_0x161d82[_0xac5d('0x35')][_0xac5d('0x4b')]){_0x35f9d5[_0xac5d('0x44')]=[{'all':!![]}];}_0x35f9d5=_[_0xac5d('0x41')]({},_0x35f9d5,_0x161d82[_0xac5d('0x42')]);return db['FaxTransferReport'][_0xac5d('0x4c')](_0x35f9d5)['then'](handleEntityNotFound(_0x42042d,null))[_0xac5d('0x28')](respondWithResult(_0x42042d,null))[_0xac5d('0x47')](handleError(_0x42042d,null));};exports['create']=function(_0xf1fd0b,_0x59a65f){return db[_0xac5d('0x43')]['create'](_0xf1fd0b['body'],{})[_0xac5d('0x28')](respondWithResult(_0x59a65f,0xc9))[_0xac5d('0x47')](handleError(_0x59a65f,null));};exports[_0xac5d('0x27')]=function(_0x1d1394,_0x15598d){if(_0x1d1394[_0xac5d('0x4d')]['id']){delete _0x1d1394[_0xac5d('0x4d')]['id'];}return db[_0xac5d('0x43')]['find']({'where':{'id':_0x1d1394[_0xac5d('0x49')]['id']}})[_0xac5d('0x28')](handleEntityNotFound(_0x15598d,null))[_0xac5d('0x28')](saveUpdates(_0x1d1394[_0xac5d('0x4d')],null))[_0xac5d('0x28')](respondWithResult(_0x15598d,null))['catch'](handleError(_0x15598d,null));};exports[_0xac5d('0x29')]=function(_0x205858,_0xc5d32f){return db['FaxTransferReport'][_0xac5d('0x4c')]({'where':{'id':_0x205858[_0xac5d('0x49')]['id']}})[_0xac5d('0x28')](handleEntityNotFound(_0xc5d32f,null))[_0xac5d('0x28')](removeEntity(_0xc5d32f,null))['catch'](handleError(_0xc5d32f,null));};exports[_0xac5d('0x4e')]=function(_0x3dc056,_0x103c6e){return db[_0xac5d('0x43')][_0xac5d('0x4e')]()[_0xac5d('0x28')](respondWithResult(_0x103c6e,null))[_0xac5d('0x47')](handleError(_0x103c6e,null));};
\ No newline at end of file
index f63e278..356ce8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac60=['rimraf','../../config/environment','./faxTransferReport.attributes','exports','define','FaxTransferReport','report_fax_transfer','uniqueid','util','api','moment','path'];(function(_0x2cea33,_0x44daf6){var _0x4ecc61=function(_0x4157fe){while(--_0x4157fe){_0x2cea33['push'](_0x2cea33['shift']());}};_0x4ecc61(++_0x44daf6);}(_0xac60,0x188));var _0x0ac6=function(_0x5317b5,_0x4dfd6e){_0x5317b5=_0x5317b5-0x0;var _0x3b7ce2=_0xac60[_0x5317b5];return _0x3b7ce2;};'use strict';var _=require('lodash');var util=require(_0x0ac6('0x0'));var logger=require('../../config/logger')(_0x0ac6('0x1'));var moment=require(_0x0ac6('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x0ac6('0x3'));var rimraf=require(_0x0ac6('0x4'));var config=require(_0x0ac6('0x5'));var attributes=require(_0x0ac6('0x6'));module[_0x0ac6('0x7')]=function(_0xf68614,_0x45ac01){return _0xf68614[_0x0ac6('0x8')](_0x0ac6('0x9'),attributes,{'tableName':_0x0ac6('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0ac6('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4588=['util','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','exports','report_fax_transfer','uniqueid','lodash'];(function(_0x4e4519,_0x392ae){var _0x340044=function(_0x11721f){while(--_0x11721f){_0x4e4519['push'](_0x4e4519['shift']());}};_0x340044(++_0x392ae);}(_0x4588,0x113));var _0x8458=function(_0x4afac5,_0x1ab4ed){_0x4afac5=_0x4afac5-0x0;var _0x2404b3=_0x4588[_0x4afac5];return _0x2404b3;};'use strict';var _=require(_0x8458('0x0'));var util=require(_0x8458('0x1'));var logger=require(_0x8458('0x2'))(_0x8458('0x3'));var moment=require('moment');var BPromise=require(_0x8458('0x4'));var rp=require(_0x8458('0x5'));var fs=require('fs');var path=require(_0x8458('0x6'));var rimraf=require(_0x8458('0x7'));var config=require(_0x8458('0x8'));var attributes=require('./faxTransferReport.attributes');module[_0x8458('0x9')]=function(_0x20f628,_0x547732){return _0x20f628['define']('FaxTransferReport',attributes,{'tableName':_0x8458('0xa'),'paranoid':![],'indexes':[{'name':_0x8458('0xb'),'fields':[_0x8458('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
index 0298fe6..af90ebe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd48c=['FaxTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','lodash','util','randomstring','ioredis','../../config/logger','rpc','../../config/environment','client','http','request','then','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x50a1ac,_0xd2c484){var _0x27d1ed=function(_0x44b94d){while(--_0x44b94d){_0x50a1ac['push'](_0x50a1ac['shift']());}};_0x27d1ed(++_0xd2c484);}(_0xd48c,0x145));var _0xcd48=function(_0x413b4d,_0xa3459c){_0x413b4d=_0x413b4d-0x0;var _0x8b810a=_0xd48c[_0x413b4d];return _0x8b810a;};'use strict';var _=require(_0xcd48('0x0'));var util=require(_0xcd48('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xcd48('0x2'));var fs=require('fs');var Redis=require(_0xcd48('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xcd48('0x4'))(_0xcd48('0x5'));var config=require(_0xcd48('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xcd48('0x7')][_0xcd48('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x3c3cc0,_0xe864f7,_0x2b0c42){return new BPromise(function(_0x290217,_0x1c1e98){return client[_0xcd48('0x9')](_0x3c3cc0,_0x2b0c42)[_0xcd48('0xa')](function(_0x2db4d1){logger[_0xcd48('0xb')](_0xcd48('0xc'),_0xe864f7,_0xcd48('0xd'));logger[_0xcd48('0xe')](_0xcd48('0xf'),_0xe864f7,_0xcd48('0xd'),JSON[_0xcd48('0x10')](_0x2db4d1));if(_0x2db4d1[_0xcd48('0x11')]){if(_0x2db4d1['error']['code']===0x1f4){logger[_0xcd48('0x11')](_0xcd48('0xc'),_0xe864f7,_0x2db4d1[_0xcd48('0x11')][_0xcd48('0x12')]);return _0x1c1e98(_0x2db4d1[_0xcd48('0x11')][_0xcd48('0x12')]);}logger[_0xcd48('0x11')](_0xcd48('0xc'),_0xe864f7,_0x2db4d1['error'][_0xcd48('0x12')]);return _0x290217(_0x2db4d1[_0xcd48('0x11')][_0xcd48('0x12')]);}else{logger[_0xcd48('0xb')](_0xcd48('0xc'),_0xe864f7,_0xcd48('0xd'));_0x290217(_0x2db4d1['result'][_0xcd48('0x12')]);}})[_0xcd48('0x13')](function(_0x115231){logger[_0xcd48('0x11')]('FaxTransferReport,\x20%s,\x20%s',_0xe864f7,_0x115231);_0x1c1e98(_0x115231);});});}
\ No newline at end of file
+var _0xd049=['../../config/environment','client','info','FaxTransferReport,\x20%s,\x20%s','request\x20sent','debug','FaxTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x414ccc,_0x27394e){var _0x169da5=function(_0x11c14a){while(--_0x11c14a){_0x414ccc['push'](_0x414ccc['shift']());}};_0x169da5(++_0x27394e);}(_0xd049,0x115));var _0x9d04=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0xd049[_0x40a045];return _0x1a687c;};'use strict';var _=require(_0x9d04('0x0'));var util=require(_0x9d04('0x1'));var moment=require(_0x9d04('0x2'));var BPromise=require(_0x9d04('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9d04('0x4'));var db=require(_0x9d04('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x9d04('0x6'))(_0x9d04('0x7'));var config=require(_0x9d04('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9d04('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x592bdb,_0x30b4f0,_0x14df56){return new BPromise(function(_0xbd6fcf,_0x3cd8f9){return client['request'](_0x592bdb,_0x14df56)['then'](function(_0x116b8c){logger[_0x9d04('0xa')](_0x9d04('0xb'),_0x30b4f0,_0x9d04('0xc'));logger[_0x9d04('0xd')](_0x9d04('0xe'),_0x30b4f0,_0x9d04('0xc'),JSON['stringify'](_0x116b8c));if(_0x116b8c[_0x9d04('0xf')]){if(_0x116b8c[_0x9d04('0xf')][_0x9d04('0x10')]===0x1f4){logger[_0x9d04('0xf')]('FaxTransferReport,\x20%s,\x20%s',_0x30b4f0,_0x116b8c[_0x9d04('0xf')][_0x9d04('0x11')]);return _0x3cd8f9(_0x116b8c[_0x9d04('0xf')][_0x9d04('0x11')]);}logger[_0x9d04('0xf')](_0x9d04('0xb'),_0x30b4f0,_0x116b8c[_0x9d04('0xf')][_0x9d04('0x11')]);return _0xbd6fcf(_0x116b8c['error']['message']);}else{logger[_0x9d04('0xa')](_0x9d04('0xb'),_0x30b4f0,_0x9d04('0xc'));_0xbd6fcf(_0x116b8c[_0x9d04('0x12')][_0x9d04('0x11')]);}})['catch'](function(_0x530d44){logger['error'](_0x9d04('0xb'),_0x30b4f0,_0x530d44);_0x3cd8f9(_0x530d44);});});}
\ No newline at end of file
index 1781f9b..496b455 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69ef=['isAuthenticated','/describe','describe','/:id','show','post','create','put','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../config/environment','./faxTransferReport.controller','get'];(function(_0x15531e,_0x555b29){var _0x10239f=function(_0x31b236){while(--_0x31b236){_0x15531e['push'](_0x15531e['shift']());}};_0x10239f(++_0x555b29);}(_0x69ef,0x83));var _0xf69e=function(_0x36d5ea,_0x3d7352){_0x36d5ea=_0x36d5ea-0x0;var _0xc47766=_0x69ef[_0x36d5ea];return _0xc47766;};'use strict';var multer=require('multer');var util=require(_0xf69e('0x0'));var path=require(_0xf69e('0x1'));var timeout=require(_0xf69e('0x2'));var express=require(_0xf69e('0x3'));var router=express[_0xf69e('0x4')]();var fs_extra=require(_0xf69e('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf69e('0x6'));var controller=require(_0xf69e('0x7'));router[_0xf69e('0x8')]('/',auth[_0xf69e('0x9')](),controller['index']);router[_0xf69e('0x8')](_0xf69e('0xa'),auth[_0xf69e('0x9')](),controller[_0xf69e('0xb')]);router[_0xf69e('0x8')](_0xf69e('0xc'),auth['isAuthenticated'](),controller[_0xf69e('0xd')]);router[_0xf69e('0xe')]('/',auth['isAuthenticated'](),controller[_0xf69e('0xf')]);router[_0xf69e('0x10')](_0xf69e('0xc'),auth[_0xf69e('0x9')](),controller['update']);router[_0xf69e('0x11')](_0xf69e('0xc'),auth['isAuthenticated'](),controller[_0xf69e('0x12')]);module[_0xf69e('0x13')]=router;
\ No newline at end of file
+var _0x3816=['delete','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment','./faxTransferReport.controller','isAuthenticated','get','describe','/:id','post','create'];(function(_0x29c3f3,_0x17cc26){var _0x420c9e=function(_0x5c660c){while(--_0x5c660c){_0x29c3f3['push'](_0x29c3f3['shift']());}};_0x420c9e(++_0x17cc26);}(_0x3816,0x143));var _0x6381=function(_0x443494,_0x51fc7e){_0x443494=_0x443494-0x0;var _0x4a6794=_0x3816[_0x443494];return _0x4a6794;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6381('0x0'));var timeout=require(_0x6381('0x1'));var express=require(_0x6381('0x2'));var router=express['Router']();var fs_extra=require(_0x6381('0x3'));var auth=require(_0x6381('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x6381('0x5'));var controller=require(_0x6381('0x6'));router['get']('/',auth[_0x6381('0x7')](),controller['index']);router[_0x6381('0x8')]('/describe',auth[_0x6381('0x7')](),controller[_0x6381('0x9')]);router[_0x6381('0x8')](_0x6381('0xa'),auth[_0x6381('0x7')](),controller['show']);router[_0x6381('0xb')]('/',auth[_0x6381('0x7')](),controller[_0x6381('0xc')]);router['put'](_0x6381('0xa'),auth[_0x6381('0x7')](),controller['update']);router[_0x6381('0xd')]('/:id',auth[_0x6381('0x7')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index cfa7500..d5f9f21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa65a=['update','destroy','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intDeskAccount.controller','get','isAuthenticated','index','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','addConfiguration','put','/:id'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0xa65a,0xe3));var _0xaa65=function(_0x5bfd5c,_0x298be8){_0x5bfd5c=_0x5bfd5c-0x0;var _0x563183=_0xa65a[_0x5bfd5c];return _0x563183;};'use strict';var multer=require(_0xaa65('0x0'));var util=require(_0xaa65('0x1'));var path=require(_0xaa65('0x2'));var timeout=require(_0xaa65('0x3'));var express=require(_0xaa65('0x4'));var router=express[_0xaa65('0x5')]();var fs_extra=require(_0xaa65('0x6'));var auth=require('../../components/auth/service');var interaction=require(_0xaa65('0x7'));var config=require(_0xaa65('0x8'));var controller=require(_0xaa65('0x9'));router[_0xaa65('0xa')]('/',auth[_0xaa65('0xb')](),controller[_0xaa65('0xc')]);router[_0xaa65('0xa')]('/:id',auth[_0xaa65('0xb')](),controller[_0xaa65('0xd')]);router[_0xaa65('0xa')](_0xaa65('0xe'),auth[_0xaa65('0xb')](),controller[_0xaa65('0xf')]);router[_0xaa65('0xa')](_0xaa65('0x10'),auth[_0xaa65('0xb')](),controller[_0xaa65('0x11')]);router[_0xaa65('0x12')]('/',auth[_0xaa65('0xb')](),controller[_0xaa65('0x13')]);router[_0xaa65('0x12')](_0xaa65('0xe'),auth[_0xaa65('0xb')](),controller[_0xaa65('0x14')]);router[_0xaa65('0x15')](_0xaa65('0x16'),auth[_0xaa65('0xb')](),controller[_0xaa65('0x17')]);router['delete'](_0xaa65('0x16'),auth[_0xaa65('0xb')](),controller[_0xaa65('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0x591b=['./intDeskAccount.controller','isAuthenticated','index','get','show','/:id/configurations','/:id/fields','getFields','post','create','addConfiguration','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../config/environment'];(function(_0x3eac01,_0x2d02a5){var _0x14dd2d=function(_0x59b71c){while(--_0x59b71c){_0x3eac01['push'](_0x3eac01['shift']());}};_0x14dd2d(++_0x2d02a5);}(_0x591b,0x1c0));var _0xb591=function(_0xd68a97,_0x1de280){_0xd68a97=_0xd68a97-0x0;var _0x2fde38=_0x591b[_0xd68a97];return _0x2fde38;};'use strict';var multer=require(_0xb591('0x0'));var util=require(_0xb591('0x1'));var path=require(_0xb591('0x2'));var timeout=require(_0xb591('0x3'));var express=require(_0xb591('0x4'));var router=express['Router']();var fs_extra=require(_0xb591('0x5'));var auth=require(_0xb591('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xb591('0x7'));var controller=require(_0xb591('0x8'));router['get']('/',auth[_0xb591('0x9')](),controller[_0xb591('0xa')]);router[_0xb591('0xb')]('/:id',auth['isAuthenticated'](),controller[_0xb591('0xc')]);router[_0xb591('0xb')](_0xb591('0xd'),auth[_0xb591('0x9')](),controller['getConfigurations']);router[_0xb591('0xb')](_0xb591('0xe'),auth[_0xb591('0x9')](),controller[_0xb591('0xf')]);router[_0xb591('0x10')]('/',auth[_0xb591('0x9')](),controller[_0xb591('0x11')]);router[_0xb591('0x10')](_0xb591('0xd'),auth['isAuthenticated'](),controller[_0xb591('0x12')]);router[_0xb591('0x13')](_0xb591('0x14'),auth[_0xb591('0x9')](),controller[_0xb591('0x15')]);router['delete']('/:id',auth[_0xb591('0x9')](),controller[_0xb591('0x16')]);module[_0xb591('0x17')]=router;
\ No newline at end of file
index fe3000e..732a664 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7380=['exports','STRING','ENUM','basic','integrationTab','newTab','sequelize'];(function(_0x3871b7,_0x36dc96){var _0x4d5951=function(_0x87e8e1){while(--_0x87e8e1){_0x3871b7['push'](_0x3871b7['shift']());}};_0x4d5951(++_0x36dc96);}(_0x7380,0xfb));var _0x0738=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x7380[_0x173441];return _0x2423a8;};'use strict';var Sequelize=require(_0x0738('0x0'));module[_0x0738('0x1')]={'name':{'type':Sequelize[_0x0738('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x0738('0x2')]},'authType':{'type':Sequelize[_0x0738('0x3')]('basic'),'defaultValue':_0x0738('0x4')},'password':{'type':Sequelize[_0x0738('0x2')]},'consumerKey':{'type':Sequelize[_0x0738('0x2')]},'consumerSecret':{'type':Sequelize[_0x0738('0x2')]},'token':{'type':Sequelize['STRING']},'tokenSecret':{'type':Sequelize[_0x0738('0x2')]},'serverUrl':{'type':Sequelize[_0x0738('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x0738('0x3')](_0x0738('0x5'),_0x0738('0x6')),'defaultValue':_0x0738('0x5')}};
\ No newline at end of file
+var _0x4031=['ENUM','basic','newTab','integrationTab','sequelize','exports','STRING'];(function(_0x357702,_0x203968){var _0x4dd94a=function(_0x11bc16){while(--_0x11bc16){_0x357702['push'](_0x357702['shift']());}};_0x4dd94a(++_0x203968);}(_0x4031,0xe4));var _0x1403=function(_0x1d531f,_0x5ed6aa){_0x1d531f=_0x1d531f-0x0;var _0x2949a0=_0x4031[_0x1d531f];return _0x2949a0;};'use strict';var Sequelize=require(_0x1403('0x0'));module[_0x1403('0x1')]={'name':{'type':Sequelize[_0x1403('0x2')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x1403('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'authType':{'type':Sequelize[_0x1403('0x3')](_0x1403('0x4')),'defaultValue':'basic'},'password':{'type':Sequelize[_0x1403('0x2')]},'consumerKey':{'type':Sequelize[_0x1403('0x2')]},'consumerSecret':{'type':Sequelize[_0x1403('0x2')]},'token':{'type':Sequelize['STRING']},'tokenSecret':{'type':Sequelize[_0x1403('0x2')]},'serverUrl':{'type':Sequelize[_0x1403('0x2')],'allowNull':![]},'type':{'type':Sequelize['ENUM']('integrationTab',_0x1403('0x5')),'defaultValue':_0x1403('0x6')}};
\ No newline at end of file
index 294313c..8a2826f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1524=['show','params','includeAll','include','find','create','body','getConfigurations','findOne','DeskConfiguration','pick','filter','addConfiguration','getSubjects','channel','Descriptions','getDescriptions','DeskField','Subjects','getFields','priority','remoteUri','authType','username','password','consumerKey','token','tokenSecret','slice','lastIndexOf','GET','format','%s/custom_fields','application/json','headers','Authorization','%s:%s','toString','_embedded','entries','active','test','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','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/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','save','update','destroy','then','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','merge','VIRTUAL','options','DeskAccount','findAll','rows','catch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1524,0x9f));var _0x4152=function(_0x411bd1,_0x416106){_0x411bd1=_0x411bd1-0x0;var _0x320464=_0x1524[_0x411bd1];return _0x320464;};'use strict';var emlformat=require(_0x4152('0x0'));var rimraf=require(_0x4152('0x1'));var zipdir=require(_0x4152('0x2'));var jsonpatch=require(_0x4152('0x3'));var rp=require(_0x4152('0x4'));var moment=require(_0x4152('0x5'));var BPromise=require(_0x4152('0x6'));var Mustache=require('mustache');var util=require(_0x4152('0x7'));var path=require(_0x4152('0x8'));var sox=require('sox');var csv=require(_0x4152('0x9'));var ejs=require(_0x4152('0xa'));var fs=require('fs');var fs_extra=require(_0x4152('0xb'));var _=require(_0x4152('0xc'));var squel=require(_0x4152('0xd'));var crypto=require(_0x4152('0xe'));var jsforce=require(_0x4152('0xf'));var deskjs=require(_0x4152('0x10'));var toCsv=require('to-csv');var querystring=require(_0x4152('0x11'));var Papa=require(_0x4152('0x12'));var Redis=require(_0x4152('0x13'));var authService=require(_0x4152('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0x4152('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4152('0x16'))(_0x4152('0x17'));var utils=require(_0x4152('0x18'));var config=require(_0x4152('0x19'));var licenseUtil=require(_0x4152('0x1a'));var db=require(_0x4152('0x1b'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x39c513,_0x25fcf2){_0x25fcf2=_0x25fcf2||0xcc;return function(_0x4b1f2c){if(_0x4b1f2c){return _0x39c513[_0x4152('0x1c')](_0x25fcf2);}return _0x39c513['status'](_0x25fcf2)[_0x4152('0x1d')]();};}function respondWithResult(_0x325889,_0x2419b5){_0x2419b5=_0x2419b5||0xc8;return function(_0x5bd6d4){if(_0x5bd6d4){return _0x325889[_0x4152('0x1e')](_0x2419b5)[_0x4152('0x1f')](_0x5bd6d4);}};}function respondWithFilteredResult(_0x15ac23,_0x4556e4){return function(_0x365ecf){if(_0x365ecf){var _0xf4e2c7=typeof _0x4556e4[_0x4152('0x20')]===_0x4152('0x21')&&typeof _0x4556e4[_0x4152('0x22')]===_0x4152('0x21');var _0x5be80e=_0x365ecf[_0x4152('0x23')];var _0x24293d=_0xf4e2c7?0x0:_0x4556e4[_0x4152('0x20')];var _0x130cd2=_0xf4e2c7?_0x365ecf['count']:_0x4556e4[_0x4152('0x20')]+_0x4556e4['limit'];var _0x4a1f2b;if(_0x130cd2>=_0x5be80e){_0x130cd2=_0x5be80e;_0x4a1f2b=0xc8;}else{_0x4a1f2b=0xce;}_0x15ac23[_0x4152('0x1e')](_0x4a1f2b);return _0x15ac23[_0x4152('0x24')]('Content-Range',_0x24293d+'-'+_0x130cd2+'/'+_0x5be80e)[_0x4152('0x1f')](_0x365ecf);}return null;};}function patchUpdates(_0x5d6972){return function(_0x30c457){try{jsonpatch['apply'](_0x30c457,_0x5d6972,!![]);}catch(_0x32c41b){return BPromise['reject'](_0x32c41b);}return _0x30c457[_0x4152('0x25')]();};}function saveUpdates(_0x3b9cb0,_0x254e08){return function(_0x19da60){if(_0x19da60){return _0x19da60[_0x4152('0x26')](_0x3b9cb0)['then'](function(_0x38d6bc){return _0x38d6bc;});}return null;};}function removeEntity(_0x21cfa6,_0x8d99e3){return function(_0x19c947){if(_0x19c947){return _0x19c947[_0x4152('0x27')]()[_0x4152('0x28')](function(){_0x21cfa6[_0x4152('0x1e')](0xcc)['end']();});}};}function handleEntityNotFound(_0x539e79,_0x3ec2bb){return function(_0x3b87b6){if(!_0x3b87b6){_0x539e79[_0x4152('0x1c')](0x194);}return _0x3b87b6;};}function handleError(_0x17e7a1,_0x5c3e29){_0x5c3e29=_0x5c3e29||0x1f4;return function(_0x3074f5){logger['error'](_0x3074f5[_0x4152('0x29')]);if(_0x3074f5[_0x4152('0x2a')]){delete _0x3074f5['name'];}_0x17e7a1['status'](_0x5c3e29)[_0x4152('0x2b')](_0x3074f5);};}exports[_0x4152('0x2c')]=function(_0x5c8e61,_0x1f7847){var _0x5bea6f={},_0x36f998={},_0x246dc6={'count':0x0,'rows':[]};var _0x2b3e1f=_[_0x4152('0x2d')](db['DeskAccount'][_0x4152('0x2e')],function(_0x31a1b5){return{'name':_0x31a1b5[_0x4152('0x2f')],'type':_0x31a1b5[_0x4152('0x30')][_0x4152('0x31')]};});_0x36f998[_0x4152('0x32')]=_['map'](_0x2b3e1f,_0x4152('0x2a'));_0x36f998[_0x4152('0x33')]=_[_0x4152('0x34')](_0x5c8e61[_0x4152('0x33')]);_0x36f998[_0x4152('0x35')]=_[_0x4152('0x36')](_0x36f998[_0x4152('0x32')],_0x36f998[_0x4152('0x33')]);_0x5bea6f[_0x4152('0x37')]=_['intersection'](_0x36f998[_0x4152('0x32')],qs[_0x4152('0x38')](_0x5c8e61[_0x4152('0x33')][_0x4152('0x38')]));_0x5bea6f[_0x4152('0x37')]=_0x5bea6f[_0x4152('0x37')][_0x4152('0x39')]?_0x5bea6f['attributes']:_0x36f998[_0x4152('0x32')];if(!_0x5c8e61[_0x4152('0x33')][_0x4152('0x3a')](_0x4152('0x3b'))){_0x5bea6f['limit']=qs['limit'](_0x5c8e61[_0x4152('0x33')][_0x4152('0x22')]);_0x5bea6f['offset']=qs[_0x4152('0x20')](_0x5c8e61[_0x4152('0x33')][_0x4152('0x20')]);}_0x5bea6f['order']=qs[_0x4152('0x3c')](_0x5c8e61[_0x4152('0x33')][_0x4152('0x3c')]);_0x5bea6f[_0x4152('0x3d')]=qs['filters'](_['pick'](_0x5c8e61[_0x4152('0x33')],_0x36f998['filters']),_0x2b3e1f);if(_0x5c8e61['query']['filter']){_0x5bea6f['where']=_[_0x4152('0x3e')](_0x5bea6f[_0x4152('0x3d')],{'$or':_[_0x4152('0x2d')](_0x2b3e1f,function(_0x1e9a71){if(_0x1e9a71[_0x4152('0x30')]!==_0x4152('0x3f')){var _0x2909cc={};_0x2909cc[_0x1e9a71[_0x4152('0x2a')]]={'$like':'%'+_0x5c8e61[_0x4152('0x33')]['filter']+'%'};return _0x2909cc;}})});}_0x5bea6f=_[_0x4152('0x3e')]({},_0x5bea6f,_0x5c8e61[_0x4152('0x40')]);var _0x5caf0e={'where':_0x5bea6f[_0x4152('0x3d')]};return db[_0x4152('0x41')]['count'](_0x5caf0e)[_0x4152('0x28')](function(_0x4f99e9){_0x246dc6[_0x4152('0x23')]=_0x4f99e9;if(_0x5c8e61[_0x4152('0x33')]['includeAll']){_0x5bea6f['include']=[{'all':!![]}];}return db['DeskAccount'][_0x4152('0x42')](_0x5bea6f);})[_0x4152('0x28')](function(_0x2be099){_0x246dc6[_0x4152('0x43')]=_0x2be099;return _0x246dc6;})['then'](respondWithFilteredResult(_0x1f7847,_0x5bea6f))[_0x4152('0x44')](handleError(_0x1f7847,null));};exports[_0x4152('0x45')]=function(_0x51bc65,_0x4fb27c){var _0x3944bf={'raw':![],'where':{'id':_0x51bc65[_0x4152('0x46')]['id']}},_0x1b873a={};_0x1b873a[_0x4152('0x32')]=_[_0x4152('0x34')](db['DeskAccount'][_0x4152('0x2e')]);_0x1b873a[_0x4152('0x33')]=_['keys'](_0x51bc65[_0x4152('0x33')]);_0x1b873a[_0x4152('0x35')]=_['intersection'](_0x1b873a['model'],_0x1b873a['query']);_0x3944bf[_0x4152('0x37')]=_[_0x4152('0x36')](_0x1b873a[_0x4152('0x32')],qs[_0x4152('0x38')](_0x51bc65[_0x4152('0x33')][_0x4152('0x38')]));_0x3944bf[_0x4152('0x37')]=_0x3944bf[_0x4152('0x37')][_0x4152('0x39')]?_0x3944bf[_0x4152('0x37')]:_0x1b873a[_0x4152('0x32')];if(_0x51bc65['query'][_0x4152('0x47')]){_0x3944bf[_0x4152('0x48')]=[{'all':!![]}];}_0x3944bf=_['merge']({},_0x3944bf,_0x51bc65[_0x4152('0x40')]);return db['DeskAccount'][_0x4152('0x49')](_0x3944bf)[_0x4152('0x28')](handleEntityNotFound(_0x4fb27c,null))[_0x4152('0x28')](respondWithResult(_0x4fb27c,null))['catch'](handleError(_0x4fb27c,null));};exports[_0x4152('0x4a')]=function(_0x56138d,_0x3a369a){return db[_0x4152('0x41')][_0x4152('0x4a')](_0x56138d[_0x4152('0x4b')],{})['then'](respondWithResult(_0x3a369a,0xc9))[_0x4152('0x44')](handleError(_0x3a369a,null));};exports[_0x4152('0x26')]=function(_0x34cfa4,_0x40459a){if(_0x34cfa4[_0x4152('0x4b')]['id']){delete _0x34cfa4['body']['id'];}return db[_0x4152('0x41')]['find']({'where':{'id':_0x34cfa4[_0x4152('0x46')]['id']}})['then'](handleEntityNotFound(_0x40459a,null))[_0x4152('0x28')](saveUpdates(_0x34cfa4['body'],null))[_0x4152('0x28')](respondWithResult(_0x40459a,null))[_0x4152('0x44')](handleError(_0x40459a,null));};exports[_0x4152('0x27')]=function(_0x207e99,_0x2072a4){return db[_0x4152('0x41')]['find']({'where':{'id':_0x207e99['params']['id']}})[_0x4152('0x28')](handleEntityNotFound(_0x2072a4,null))[_0x4152('0x28')](removeEntity(_0x2072a4,null))['catch'](handleError(_0x2072a4,null));};exports[_0x4152('0x4c')]=function(_0x46a185,_0x2b5667,_0x3aee86){var _0x4895c9={};var _0x47fce8={};var _0x35c221;var _0x2f78ec;return db[_0x4152('0x41')][_0x4152('0x4d')]({'where':{'id':_0x46a185['params']['id']}})[_0x4152('0x28')](handleEntityNotFound(_0x2b5667,null))[_0x4152('0x28')](function(_0x4c896d){if(_0x4c896d){_0x35c221=_0x4c896d;_0x47fce8['model']=_[_0x4152('0x34')](db[_0x4152('0x4e')]['rawAttributes']);_0x47fce8['query']=_[_0x4152('0x34')](_0x46a185[_0x4152('0x33')]);_0x47fce8['filters']=_[_0x4152('0x36')](_0x47fce8['model'],_0x47fce8[_0x4152('0x33')]);_0x4895c9[_0x4152('0x37')]=_[_0x4152('0x36')](_0x47fce8['model'],qs[_0x4152('0x38')](_0x46a185[_0x4152('0x33')][_0x4152('0x38')]));_0x4895c9[_0x4152('0x37')]=_0x4895c9[_0x4152('0x37')]['length']?_0x4895c9[_0x4152('0x37')]:_0x47fce8[_0x4152('0x32')];_0x4895c9['order']=qs['sort'](_0x46a185[_0x4152('0x33')][_0x4152('0x3c')]);_0x4895c9[_0x4152('0x3d')]=qs[_0x4152('0x35')](_[_0x4152('0x4f')](_0x46a185['query'],_0x47fce8[_0x4152('0x35')]));if(_0x46a185[_0x4152('0x33')][_0x4152('0x50')]){_0x4895c9[_0x4152('0x3d')]=_[_0x4152('0x3e')](_0x4895c9[_0x4152('0x3d')],{'$or':_['map'](_0x4895c9[_0x4152('0x37')],function(_0xae3658){var _0xad0a84={};_0xad0a84[_0xae3658]={'$like':'%'+_0x46a185[_0x4152('0x33')][_0x4152('0x50')]+'%'};return _0xad0a84;})});}_0x4895c9=_[_0x4152('0x3e')]({},_0x4895c9,_0x46a185[_0x4152('0x40')]);return _0x35c221[_0x4152('0x4c')](_0x4895c9);}})[_0x4152('0x28')](function(_0x15ef7c){if(_0x15ef7c){_0x2f78ec=_0x15ef7c[_0x4152('0x39')];if(!_0x46a185['query'][_0x4152('0x3a')](_0x4152('0x3b'))){_0x4895c9['limit']=qs[_0x4152('0x22')](_0x46a185[_0x4152('0x33')][_0x4152('0x22')]);_0x4895c9['offset']=qs[_0x4152('0x20')](_0x46a185['query'][_0x4152('0x20')]);}return _0x35c221[_0x4152('0x4c')](_0x4895c9);}})[_0x4152('0x28')](function(_0x43eae1){if(_0x43eae1){return _0x43eae1?{'count':_0x2f78ec,'rows':_0x43eae1}:null;}})[_0x4152('0x28')](respondWithResult(_0x2b5667,null))[_0x4152('0x44')](handleError(_0x2b5667,null));};exports[_0x4152('0x51')]=function(_0x2502ba,_0x58da04,_0x4d8d7d){if(_0x2502ba[_0x4152('0x4b')]['id']){delete _0x2502ba[_0x4152('0x4b')]['id'];}return db[_0x4152('0x41')][_0x4152('0x4d')]({'where':{'id':_0x2502ba['params']['id']}})['then'](handleEntityNotFound(_0x58da04,null))[_0x4152('0x28')](function(_0x54343b){if(_0x54343b){_0x2502ba['body']['AccountId']=_0x54343b['id'];_0x2502ba['body']['Subjects']=integrations[_0x4152('0x52')](_0x2502ba[_0x4152('0x4b')][_0x4152('0x53')],_0x2502ba['body']['type']);_0x2502ba[_0x4152('0x4b')][_0x4152('0x54')]=integrations[_0x4152('0x55')](_0x2502ba[_0x4152('0x4b')]['channel'],_0x2502ba['body'][_0x4152('0x30')]);return db['DeskConfiguration'][_0x4152('0x4a')](_0x2502ba['body'],{'include':[{'model':db[_0x4152('0x56')],'as':_0x4152('0x57')},{'model':db[_0x4152('0x56')],'as':_0x4152('0x54')}]});}return null;})[_0x4152('0x28')](respondWithResult(_0x58da04,null))[_0x4152('0x44')](handleError(_0x58da04,null));};exports[_0x4152('0x58')]=function(_0x307137,_0x46d92f,_0x18e9bb){var _0x1a3649=[{'name':_0x4152('0x59'),'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 _0x126426='';return db[_0x4152('0x41')][_0x4152('0x4d')]({'where':{'id':_0x307137[_0x4152('0x46')]['id']},'attributes':['id',_0x4152('0x5a'),_0x4152('0x5b'),_0x4152('0x5c'),_0x4152('0x5d'),_0x4152('0x5e'),'consumerSecret',_0x4152('0x5f'),_0x4152('0x60')]})[_0x4152('0x28')](handleEntityNotFound(_0x46d92f,null))[_0x4152('0x28')](function(_0x23d8a3){if(_0x23d8a3){_0x126426=_0x23d8a3[_0x4152('0x5a')];var _0x4a5ae2=_0x126426[_0x4152('0x61')](-0x1);if(_0x4a5ae2==='/'){_0x126426=_0x126426['substring'](0x0,_0x126426[_0x4152('0x62')](_0x4a5ae2));}var _0x48813c={'method':_0x4152('0x63'),'uri':util[_0x4152('0x64')](_0x4152('0x65'),_0x126426),'headers':{'Content-Type':_0x4152('0x66'),'Accept':'application/json'},'json':!![]};if(_0x23d8a3[_0x4152('0x5b')]==='basic'){_0x48813c[_0x4152('0x67')][_0x4152('0x68')]=util[_0x4152('0x64')]('Basic\x20%s',new Buffer(util[_0x4152('0x64')](_0x4152('0x69'),_0x23d8a3['username'],_0x23d8a3[_0x4152('0x5d')]))[_0x4152('0x6a')]('base64'));}return rp(_0x48813c)[_0x4152('0x28')](function(_0x8691cb){return _0x1a3649['concat'](_[_0x4152('0x2d')](_0x8691cb[_0x4152('0x6b')][_0x4152('0x6c')],function(_0x332cfb){return{'id':_0x332cfb[_0x4152('0x2a')],'name':_0x332cfb[_0x4152('0x2a')],'type':_0x332cfb['type'],'active':_0x332cfb[_0x4152('0x6d')],'label':_0x332cfb['label'],'custom':!![]};}));});}})[_0x4152('0x28')](function(_0x34e793){return{'count':_0x34e793[_0x4152('0x39')],'rows':_0x34e793};})['then'](respondWithResult(_0x46d92f,null))[_0x4152('0x44')](function(_0x5901e5){var _0x507418=_0x307137[_0x4152('0x33')][_0x4152('0x6e')]?0x1f4:_0x5901e5['statusCode']||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0x4152('0x58'),_0x507418,JSON[_0x4152('0x6f')](_0x5901e5));delete _0x5901e5[_0x4152('0x2a')];if(_0x507418===0x191){_0x507418=0x190;}_0x46d92f[_0x4152('0x1e')](_0x507418)[_0x4152('0x2b')](_0x307137[_0x4152('0x33')][_0x4152('0x6e')]?{'message':_0x4152('0x70'),'statusCode':_0x5901e5[_0x4152('0x71')]}:_0x5901e5);});};
\ No newline at end of file
+var _0x8106=['Descriptions','priority','remoteUri','authType','username','password','consumerSecret','token','slice','substring','lastIndexOf','GET','format','application/json','headers','Authorization','%s:%s','toString','base64','concat','_embedded','active','label','test','statusCode','getFields','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','save','destroy','then','sendStatus','error','name','send','index','DeskAccount','rawAttributes','fieldName','key','map','keys','query','filters','model','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','options','includeAll','include','findAll','rows','show','find','catch','create','body','update','params','getConfigurations','DeskConfiguration','filter','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','getDescriptions','DeskField'];(function(_0xf50820,_0x56f041){var _0x2a9b10=function(_0x33f0f4){while(--_0x33f0f4){_0xf50820['push'](_0xf50820['shift']());}};_0x2a9b10(++_0x56f041);}(_0x8106,0x17b));var _0x6810=function(_0x2b1749,_0xa82961){_0x2b1749=_0x2b1749-0x0;var _0x1dbc67=_0x8106[_0x2b1749];return _0x1dbc67;};'use strict';var emlformat=require(_0x6810('0x0'));var rimraf=require(_0x6810('0x1'));var zipdir=require(_0x6810('0x2'));var jsonpatch=require(_0x6810('0x3'));var rp=require(_0x6810('0x4'));var moment=require('moment');var BPromise=require(_0x6810('0x5'));var Mustache=require(_0x6810('0x6'));var util=require(_0x6810('0x7'));var path=require(_0x6810('0x8'));var sox=require(_0x6810('0x9'));var csv=require(_0x6810('0xa'));var ejs=require(_0x6810('0xb'));var fs=require('fs');var fs_extra=require(_0x6810('0xc'));var _=require(_0x6810('0xd'));var squel=require(_0x6810('0xe'));var crypto=require(_0x6810('0xf'));var jsforce=require(_0x6810('0x10'));var deskjs=require(_0x6810('0x11'));var toCsv=require(_0x6810('0xa'));var querystring=require('querystring');var Papa=require(_0x6810('0x12'));var Redis=require(_0x6810('0x13'));var authService=require(_0x6810('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6810('0x15'))('api');var utils=require(_0x6810('0x16'));var config=require(_0x6810('0x17'));var licenseUtil=require(_0x6810('0x18'));var db=require(_0x6810('0x19'))['db'];var integrations=require(_0x6810('0x1a'));function respondWithStatusCode(_0xbe99bc,_0x563be9){_0x563be9=_0x563be9||0xcc;return function(_0xb27c83){if(_0xb27c83){return _0xbe99bc['sendStatus'](_0x563be9);}return _0xbe99bc[_0x6810('0x1b')](_0x563be9)[_0x6810('0x1c')]();};}function respondWithResult(_0x2d0c82,_0x45e620){_0x45e620=_0x45e620||0xc8;return function(_0x3d3670){if(_0x3d3670){return _0x2d0c82[_0x6810('0x1b')](_0x45e620)[_0x6810('0x1d')](_0x3d3670);}};}function respondWithFilteredResult(_0x5d4a43,_0x18cea0){return function(_0x3fe89f){if(_0x3fe89f){var _0x37629e=typeof _0x18cea0[_0x6810('0x1e')]==='undefined'&&typeof _0x18cea0[_0x6810('0x1f')]===_0x6810('0x20');var _0x3121a7=_0x3fe89f[_0x6810('0x21')];var _0x1ab556=_0x37629e?0x0:_0x18cea0[_0x6810('0x1e')];var _0x36ee24=_0x37629e?_0x3fe89f[_0x6810('0x21')]:_0x18cea0['offset']+_0x18cea0[_0x6810('0x1f')];var _0x1e2ed9;if(_0x36ee24>=_0x3121a7){_0x36ee24=_0x3121a7;_0x1e2ed9=0xc8;}else{_0x1e2ed9=0xce;}_0x5d4a43[_0x6810('0x1b')](_0x1e2ed9);return _0x5d4a43[_0x6810('0x22')](_0x6810('0x23'),_0x1ab556+'-'+_0x36ee24+'/'+_0x3121a7)[_0x6810('0x1d')](_0x3fe89f);}return null;};}function patchUpdates(_0x1109d5){return function(_0x4dfa33){try{jsonpatch[_0x6810('0x24')](_0x4dfa33,_0x1109d5,!![]);}catch(_0x690f4){return BPromise['reject'](_0x690f4);}return _0x4dfa33[_0x6810('0x25')]();};}function saveUpdates(_0x57341a,_0x4e8644){return function(_0x19c76b){if(_0x19c76b){return _0x19c76b['update'](_0x57341a)['then'](function(_0x39cb4f){return _0x39cb4f;});}return null;};}function removeEntity(_0x218821,_0x42c6d5){return function(_0x2e073d){if(_0x2e073d){return _0x2e073d[_0x6810('0x26')]()[_0x6810('0x27')](function(){_0x218821[_0x6810('0x1b')](0xcc)[_0x6810('0x1c')]();});}};}function handleEntityNotFound(_0x34ba20,_0x953c39){return function(_0x38504e){if(!_0x38504e){_0x34ba20[_0x6810('0x28')](0x194);}return _0x38504e;};}function handleError(_0x472c5e,_0x2e78ee){_0x2e78ee=_0x2e78ee||0x1f4;return function(_0x50ae6c){logger[_0x6810('0x29')](_0x50ae6c['stack']);if(_0x50ae6c[_0x6810('0x2a')]){delete _0x50ae6c[_0x6810('0x2a')];}_0x472c5e['status'](_0x2e78ee)[_0x6810('0x2b')](_0x50ae6c);};}exports[_0x6810('0x2c')]=function(_0x3420ec,_0x21a642){var _0x1b5248={},_0x303b03={},_0xfb97a2={'count':0x0,'rows':[]};var _0x323eaf=_['map'](db[_0x6810('0x2d')][_0x6810('0x2e')],function(_0x5a40ef){return{'name':_0x5a40ef[_0x6810('0x2f')],'type':_0x5a40ef['type'][_0x6810('0x30')]};});_0x303b03['model']=_[_0x6810('0x31')](_0x323eaf,'name');_0x303b03['query']=_[_0x6810('0x32')](_0x3420ec[_0x6810('0x33')]);_0x303b03[_0x6810('0x34')]=_['intersection'](_0x303b03[_0x6810('0x35')],_0x303b03['query']);_0x1b5248['attributes']=_[_0x6810('0x36')](_0x303b03[_0x6810('0x35')],qs[_0x6810('0x37')](_0x3420ec[_0x6810('0x33')][_0x6810('0x37')]));_0x1b5248[_0x6810('0x38')]=_0x1b5248[_0x6810('0x38')][_0x6810('0x39')]?_0x1b5248[_0x6810('0x38')]:_0x303b03[_0x6810('0x35')];if(!_0x3420ec[_0x6810('0x33')][_0x6810('0x3a')](_0x6810('0x3b'))){_0x1b5248['limit']=qs[_0x6810('0x1f')](_0x3420ec['query']['limit']);_0x1b5248[_0x6810('0x1e')]=qs[_0x6810('0x1e')](_0x3420ec[_0x6810('0x33')][_0x6810('0x1e')]);}_0x1b5248[_0x6810('0x3c')]=qs[_0x6810('0x3d')](_0x3420ec[_0x6810('0x33')][_0x6810('0x3d')]);_0x1b5248[_0x6810('0x3e')]=qs['filters'](_[_0x6810('0x3f')](_0x3420ec[_0x6810('0x33')],_0x303b03[_0x6810('0x34')]),_0x323eaf);if(_0x3420ec[_0x6810('0x33')]['filter']){_0x1b5248[_0x6810('0x3e')]=_[_0x6810('0x40')](_0x1b5248[_0x6810('0x3e')],{'$or':_[_0x6810('0x31')](_0x323eaf,function(_0x432b5c){if(_0x432b5c[_0x6810('0x41')]!=='VIRTUAL'){var _0x120c1e={};_0x120c1e[_0x432b5c[_0x6810('0x2a')]]={'$like':'%'+_0x3420ec[_0x6810('0x33')]['filter']+'%'};return _0x120c1e;}})});}_0x1b5248=_[_0x6810('0x40')]({},_0x1b5248,_0x3420ec[_0x6810('0x42')]);var _0x41a82a={'where':_0x1b5248[_0x6810('0x3e')]};return db['DeskAccount'][_0x6810('0x21')](_0x41a82a)['then'](function(_0x53e553){_0xfb97a2['count']=_0x53e553;if(_0x3420ec['query'][_0x6810('0x43')]){_0x1b5248[_0x6810('0x44')]=[{'all':!![]}];}return db[_0x6810('0x2d')][_0x6810('0x45')](_0x1b5248);})[_0x6810('0x27')](function(_0x1ae570){_0xfb97a2[_0x6810('0x46')]=_0x1ae570;return _0xfb97a2;})[_0x6810('0x27')](respondWithFilteredResult(_0x21a642,_0x1b5248))['catch'](handleError(_0x21a642,null));};exports[_0x6810('0x47')]=function(_0x56f2b4,_0x1c3d04){var _0x2a6291={'raw':![],'where':{'id':_0x56f2b4['params']['id']}},_0x326f44={};_0x326f44[_0x6810('0x35')]=_[_0x6810('0x32')](db[_0x6810('0x2d')][_0x6810('0x2e')]);_0x326f44['query']=_[_0x6810('0x32')](_0x56f2b4[_0x6810('0x33')]);_0x326f44[_0x6810('0x34')]=_['intersection'](_0x326f44[_0x6810('0x35')],_0x326f44['query']);_0x2a6291[_0x6810('0x38')]=_['intersection'](_0x326f44['model'],qs[_0x6810('0x37')](_0x56f2b4['query'][_0x6810('0x37')]));_0x2a6291[_0x6810('0x38')]=_0x2a6291[_0x6810('0x38')][_0x6810('0x39')]?_0x2a6291[_0x6810('0x38')]:_0x326f44[_0x6810('0x35')];if(_0x56f2b4[_0x6810('0x33')][_0x6810('0x43')]){_0x2a6291[_0x6810('0x44')]=[{'all':!![]}];}_0x2a6291=_[_0x6810('0x40')]({},_0x2a6291,_0x56f2b4[_0x6810('0x42')]);return db[_0x6810('0x2d')][_0x6810('0x48')](_0x2a6291)['then'](handleEntityNotFound(_0x1c3d04,null))[_0x6810('0x27')](respondWithResult(_0x1c3d04,null))[_0x6810('0x49')](handleError(_0x1c3d04,null));};exports[_0x6810('0x4a')]=function(_0x1255c8,_0x22ee41){return db[_0x6810('0x2d')][_0x6810('0x4a')](_0x1255c8[_0x6810('0x4b')],{})[_0x6810('0x27')](respondWithResult(_0x22ee41,0xc9))[_0x6810('0x49')](handleError(_0x22ee41,null));};exports[_0x6810('0x4c')]=function(_0x36eed5,_0xfb711a){if(_0x36eed5['body']['id']){delete _0x36eed5[_0x6810('0x4b')]['id'];}return db[_0x6810('0x2d')][_0x6810('0x48')]({'where':{'id':_0x36eed5[_0x6810('0x4d')]['id']}})[_0x6810('0x27')](handleEntityNotFound(_0xfb711a,null))[_0x6810('0x27')](saveUpdates(_0x36eed5[_0x6810('0x4b')],null))[_0x6810('0x27')](respondWithResult(_0xfb711a,null))[_0x6810('0x49')](handleError(_0xfb711a,null));};exports[_0x6810('0x26')]=function(_0x5cb7dc,_0x3752fb){return db[_0x6810('0x2d')][_0x6810('0x48')]({'where':{'id':_0x5cb7dc[_0x6810('0x4d')]['id']}})['then'](handleEntityNotFound(_0x3752fb,null))[_0x6810('0x27')](removeEntity(_0x3752fb,null))[_0x6810('0x49')](handleError(_0x3752fb,null));};exports[_0x6810('0x4e')]=function(_0x22af23,_0x132329,_0x1204aa){var _0x54c2bc={};var _0x4a18f8={};var _0x4521ae;var _0x128418;return db[_0x6810('0x2d')]['findOne']({'where':{'id':_0x22af23['params']['id']}})[_0x6810('0x27')](handleEntityNotFound(_0x132329,null))[_0x6810('0x27')](function(_0x351433){if(_0x351433){_0x4521ae=_0x351433;_0x4a18f8['model']=_['keys'](db[_0x6810('0x4f')][_0x6810('0x2e')]);_0x4a18f8[_0x6810('0x33')]=_[_0x6810('0x32')](_0x22af23[_0x6810('0x33')]);_0x4a18f8['filters']=_[_0x6810('0x36')](_0x4a18f8[_0x6810('0x35')],_0x4a18f8[_0x6810('0x33')]);_0x54c2bc['attributes']=_[_0x6810('0x36')](_0x4a18f8[_0x6810('0x35')],qs[_0x6810('0x37')](_0x22af23[_0x6810('0x33')]['fields']));_0x54c2bc[_0x6810('0x38')]=_0x54c2bc[_0x6810('0x38')][_0x6810('0x39')]?_0x54c2bc[_0x6810('0x38')]:_0x4a18f8['model'];_0x54c2bc[_0x6810('0x3c')]=qs[_0x6810('0x3d')](_0x22af23[_0x6810('0x33')]['sort']);_0x54c2bc[_0x6810('0x3e')]=qs[_0x6810('0x34')](_[_0x6810('0x3f')](_0x22af23['query'],_0x4a18f8[_0x6810('0x34')]));if(_0x22af23[_0x6810('0x33')][_0x6810('0x50')]){_0x54c2bc[_0x6810('0x3e')]=_[_0x6810('0x40')](_0x54c2bc[_0x6810('0x3e')],{'$or':_[_0x6810('0x31')](_0x54c2bc[_0x6810('0x38')],function(_0x23180e){var _0x509337={};_0x509337[_0x23180e]={'$like':'%'+_0x22af23[_0x6810('0x33')][_0x6810('0x50')]+'%'};return _0x509337;})});}_0x54c2bc=_[_0x6810('0x40')]({},_0x54c2bc,_0x22af23[_0x6810('0x42')]);return _0x4521ae[_0x6810('0x4e')](_0x54c2bc);}})['then'](function(_0x2db123){if(_0x2db123){_0x128418=_0x2db123[_0x6810('0x39')];if(!_0x22af23[_0x6810('0x33')]['hasOwnProperty'](_0x6810('0x3b'))){_0x54c2bc[_0x6810('0x1f')]=qs[_0x6810('0x1f')](_0x22af23[_0x6810('0x33')][_0x6810('0x1f')]);_0x54c2bc[_0x6810('0x1e')]=qs['offset'](_0x22af23[_0x6810('0x33')][_0x6810('0x1e')]);}return _0x4521ae['getConfigurations'](_0x54c2bc);}})['then'](function(_0x5e0abd){if(_0x5e0abd){return _0x5e0abd?{'count':_0x128418,'rows':_0x5e0abd}:null;}})[_0x6810('0x27')](respondWithResult(_0x132329,null))['catch'](handleError(_0x132329,null));};exports[_0x6810('0x51')]=function(_0x4da295,_0x5910c6,_0x299c53){if(_0x4da295[_0x6810('0x4b')]['id']){delete _0x4da295[_0x6810('0x4b')]['id'];}return db[_0x6810('0x2d')][_0x6810('0x52')]({'where':{'id':_0x4da295[_0x6810('0x4d')]['id']}})[_0x6810('0x27')](handleEntityNotFound(_0x5910c6,null))[_0x6810('0x27')](function(_0x166341){if(_0x166341){_0x4da295['body'][_0x6810('0x53')]=_0x166341['id'];_0x4da295[_0x6810('0x4b')][_0x6810('0x54')]=integrations[_0x6810('0x55')](_0x4da295['body'][_0x6810('0x56')],_0x4da295[_0x6810('0x4b')][_0x6810('0x41')]);_0x4da295['body']['Descriptions']=integrations[_0x6810('0x57')](_0x4da295['body'][_0x6810('0x56')],_0x4da295[_0x6810('0x4b')][_0x6810('0x41')]);return db['DeskConfiguration'][_0x6810('0x4a')](_0x4da295[_0x6810('0x4b')],{'include':[{'model':db['DeskField'],'as':_0x6810('0x54')},{'model':db[_0x6810('0x58')],'as':_0x6810('0x59')}]});}return null;})[_0x6810('0x27')](respondWithResult(_0x5910c6,null))['catch'](handleError(_0x5910c6,null));};exports['getFields']=function(_0x45fd6a,_0x24c129,_0x1159d3){var _0x3a6b88=[{'name':_0x6810('0x5a'),'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 _0x9dd72='';return db[_0x6810('0x2d')][_0x6810('0x52')]({'where':{'id':_0x45fd6a[_0x6810('0x4d')]['id']},'attributes':['id',_0x6810('0x5b'),_0x6810('0x5c'),_0x6810('0x5d'),_0x6810('0x5e'),'consumerKey',_0x6810('0x5f'),_0x6810('0x60'),'tokenSecret']})[_0x6810('0x27')](handleEntityNotFound(_0x24c129,null))[_0x6810('0x27')](function(_0x11da25){if(_0x11da25){_0x9dd72=_0x11da25[_0x6810('0x5b')];var _0x4cc983=_0x9dd72[_0x6810('0x61')](-0x1);if(_0x4cc983==='/'){_0x9dd72=_0x9dd72[_0x6810('0x62')](0x0,_0x9dd72[_0x6810('0x63')](_0x4cc983));}var _0x46887b={'method':_0x6810('0x64'),'uri':util[_0x6810('0x65')]('%s/custom_fields',_0x9dd72),'headers':{'Content-Type':_0x6810('0x66'),'Accept':_0x6810('0x66')},'json':!![]};if(_0x11da25['authType']==='basic'){_0x46887b[_0x6810('0x67')][_0x6810('0x68')]=util[_0x6810('0x65')]('Basic\x20%s',new Buffer(util[_0x6810('0x65')](_0x6810('0x69'),_0x11da25[_0x6810('0x5d')],_0x11da25['password']))[_0x6810('0x6a')](_0x6810('0x6b')));}return rp(_0x46887b)[_0x6810('0x27')](function(_0x2c64bd){return _0x3a6b88[_0x6810('0x6c')](_[_0x6810('0x31')](_0x2c64bd[_0x6810('0x6d')]['entries'],function(_0x5ef078){return{'id':_0x5ef078[_0x6810('0x2a')],'name':_0x5ef078[_0x6810('0x2a')],'type':_0x5ef078[_0x6810('0x41')],'active':_0x5ef078[_0x6810('0x6e')],'label':_0x5ef078[_0x6810('0x6f')],'custom':!![]};}));});}})['then'](function(_0x441348){return{'count':_0x441348[_0x6810('0x39')],'rows':_0x441348};})[_0x6810('0x27')](respondWithResult(_0x24c129,null))[_0x6810('0x49')](function(_0x174f90){var _0xa335e3=_0x45fd6a[_0x6810('0x33')][_0x6810('0x70')]?0x1f4:_0x174f90[_0x6810('0x71')]||0x1f4;logger[_0x6810('0x29')]('getFields,\x20%s,\x20%s,\x20%s',_0x6810('0x72'),_0xa335e3,JSON[_0x6810('0x73')](_0x174f90));delete _0x174f90['name'];if(_0xa335e3===0x191){_0xa335e3=0x190;}_0x24c129[_0x6810('0x1b')](_0xa335e3)['send'](_0x45fd6a[_0x6810('0x33')][_0x6810('0x70')]?{'message':_0x6810('0x74'),'statusCode':_0x174f90[_0x6810('0x71')]}:_0x174f90);});};
\ No newline at end of file
index 4c3307b..c770195 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5002=['moment','bluebird','request-promise','path','../../config/environment','./intDeskAccount.attributes','define','int_desk_accounts','lodash','../../config/logger','api'];(function(_0x3bc82d,_0x59187f){var _0x2cfb3d=function(_0x515ac3){while(--_0x515ac3){_0x3bc82d['push'](_0x3bc82d['shift']());}};_0x2cfb3d(++_0x59187f);}(_0x5002,0x147));var _0x2500=function(_0x6ae66b,_0x3ba914){_0x6ae66b=_0x6ae66b-0x0;var _0x465cef=_0x5002[_0x6ae66b];return _0x465cef;};'use strict';var _=require(_0x2500('0x0'));var util=require('util');var logger=require(_0x2500('0x1'))(_0x2500('0x2'));var moment=require(_0x2500('0x3'));var BPromise=require(_0x2500('0x4'));var rp=require(_0x2500('0x5'));var fs=require('fs');var path=require(_0x2500('0x6'));var rimraf=require('rimraf');var config=require(_0x2500('0x7'));var attributes=require(_0x2500('0x8'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x5e685f,_0x5647b1){return _0x5e685f[_0x2500('0x9')]('DeskAccount',attributes,{'tableName':_0x2500('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1078=['moment','bluebird','../../config/environment','../../components/integrations/configuration','define','DeskAccount','int_desk_accounts','lodash','../../config/logger','api'];(function(_0x476bf4,_0x2a3755){var _0x788ffe=function(_0x13fa11){while(--_0x13fa11){_0x476bf4['push'](_0x476bf4['shift']());}};_0x788ffe(++_0x2a3755);}(_0x1078,0x179));var _0x8107=function(_0x2c4460,_0x42abfb){_0x2c4460=_0x2c4460-0x0;var _0x136736=_0x1078[_0x2c4460];return _0x136736;};'use strict';var _=require(_0x8107('0x0'));var util=require('util');var logger=require(_0x8107('0x1'))(_0x8107('0x2'));var moment=require(_0x8107('0x3'));var BPromise=require(_0x8107('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x8107('0x5'));var attributes=require('./intDeskAccount.attributes');var integrations=require(_0x8107('0x6'));module['exports']=function(_0x106d26,_0x2ea66c){return _0x106d26[_0x8107('0x7')](_0x8107('0x8'),attributes,{'tableName':_0x8107('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 95e7c28..7d4b3c0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x097b=['include','map','model','attributes','GetDeskAccount','ShowDeskAccount','find','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','http','request','then','info','DeskAccount,\x20%s,\x20%s','request\x20sent','debug','DeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','DeskAccount','findAll','options','raw','where','limit'];(function(_0x487b0c,_0x14ff74){var _0x1adbdc=function(_0x2e7b9d){while(--_0x2e7b9d){_0x487b0c['push'](_0x487b0c['shift']());}};_0x1adbdc(++_0x14ff74);}(_0x097b,0xfc));var _0xb097=function(_0x523f15,_0x547987){_0x523f15=_0x523f15-0x0;var _0x4092e6=_0x097b[_0x523f15];return _0x4092e6;};'use strict';var _=require(_0xb097('0x0'));var util=require(_0xb097('0x1'));var moment=require(_0xb097('0x2'));var BPromise=require('bluebird');var rs=require(_0xb097('0x3'));var fs=require('fs');var Redis=require(_0xb097('0x4'));var db=require(_0xb097('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xb097('0x6'));var config=require(_0xb097('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0xb097('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1977e5,_0x595074,_0x546c50){return new BPromise(function(_0xaa3c5a,_0x5b11dc){return client[_0xb097('0x9')](_0x1977e5,_0x546c50)[_0xb097('0xa')](function(_0x22432b){logger[_0xb097('0xb')](_0xb097('0xc'),_0x595074,_0xb097('0xd'));logger[_0xb097('0xe')](_0xb097('0xf'),_0x595074,_0xb097('0xd'),JSON[_0xb097('0x10')](_0x22432b));if(_0x22432b[_0xb097('0x11')]){if(_0x22432b[_0xb097('0x11')][_0xb097('0x12')]===0x1f4){logger['error'](_0xb097('0xc'),_0x595074,_0x22432b[_0xb097('0x11')]['message']);return _0x5b11dc(_0x22432b[_0xb097('0x11')][_0xb097('0x13')]);}logger[_0xb097('0x11')](_0xb097('0xc'),_0x595074,_0x22432b[_0xb097('0x11')]['message']);return _0xaa3c5a(_0x22432b[_0xb097('0x11')]['message']);}else{logger[_0xb097('0xb')](_0xb097('0xc'),_0x595074,_0xb097('0xd'));_0xaa3c5a(_0x22432b[_0xb097('0x14')][_0xb097('0x13')]);}})[_0xb097('0x15')](function(_0x3dab51){logger['error']('DeskAccount,\x20%s,\x20%s',_0x595074,_0x3dab51);_0x5b11dc(_0x3dab51);});});}exports['GetDeskAccount']=function(_0x2f5df0){var _0x374b5e=this;return new Promise(function(_0x1c186d,_0x17d7af){return db[_0xb097('0x16')][_0xb097('0x17')]({'raw':_0x2f5df0['options']?_0x2f5df0[_0xb097('0x18')][_0xb097('0x19')]===undefined?!![]:![]:!![],'where':_0x2f5df0[_0xb097('0x18')]?_0x2f5df0[_0xb097('0x18')][_0xb097('0x1a')]||null:null,'attributes':_0x2f5df0['options']?_0x2f5df0[_0xb097('0x18')]['attributes']||null:null,'limit':_0x2f5df0['options']?_0x2f5df0[_0xb097('0x18')][_0xb097('0x1b')]||null:null,'include':_0x2f5df0[_0xb097('0x18')]?_0x2f5df0['options'][_0xb097('0x1c')]?_[_0xb097('0x1d')](_0x2f5df0[_0xb097('0x18')]['include'],function(_0x373dfc){return{'model':db[_0x373dfc[_0xb097('0x1e')]],'as':_0x373dfc['as'],'attributes':_0x373dfc[_0xb097('0x1f')],'include':_0x373dfc[_0xb097('0x1c')]?_[_0xb097('0x1d')](_0x373dfc[_0xb097('0x1c')],function(_0x26ad2b){return{'model':db[_0x26ad2b['model']],'as':_0x26ad2b['as'],'attributes':_0x26ad2b['attributes'],'include':_0x26ad2b['include']?_[_0xb097('0x1d')](_0x26ad2b[_0xb097('0x1c')],function(_0x2dbbc5){return{'model':db[_0x2dbbc5[_0xb097('0x1e')]],'as':_0x2dbbc5['as'],'attributes':_0x2dbbc5[_0xb097('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xb097('0xa')](function(_0xab1b02){logger[_0xb097('0xb')](_0xb097('0x20'),_0x2f5df0);logger[_0xb097('0xe')](_0xb097('0x20'),_0x2f5df0,JSON[_0xb097('0x10')](_0xab1b02));_0x1c186d(_0xab1b02);})[_0xb097('0x15')](function(_0x408d19){logger[_0xb097('0x11')](_0xb097('0x20'),_0x408d19[_0xb097('0x13')],_0x2f5df0);_0x17d7af(_0x374b5e[_0xb097('0x11')](0x1f4,_0x408d19[_0xb097('0x13')]));});});};exports[_0xb097('0x21')]=function(_0x7020aa){var _0x285b8a=this;return new Promise(function(_0x2c3521,_0x394ae8){return db[_0xb097('0x16')][_0xb097('0x22')]({'raw':_0x7020aa[_0xb097('0x18')]?_0x7020aa[_0xb097('0x18')][_0xb097('0x19')]===undefined?!![]:![]:!![],'where':_0x7020aa['options']?_0x7020aa[_0xb097('0x18')]['where']||null:null,'attributes':_0x7020aa[_0xb097('0x18')]?_0x7020aa['options'][_0xb097('0x1f')]||null:null,'include':_0x7020aa['options']?_0x7020aa[_0xb097('0x18')][_0xb097('0x1c')]?_[_0xb097('0x1d')](_0x7020aa[_0xb097('0x18')][_0xb097('0x1c')],function(_0x157257){return{'model':db[_0x157257[_0xb097('0x1e')]],'as':_0x157257['as'],'attributes':_0x157257[_0xb097('0x1f')],'include':_0x157257[_0xb097('0x1c')]?_[_0xb097('0x1d')](_0x157257[_0xb097('0x1c')],function(_0x5d0733){return{'model':db[_0x5d0733[_0xb097('0x1e')]],'as':_0x5d0733['as'],'attributes':_0x5d0733[_0xb097('0x1f')],'include':_0x5d0733[_0xb097('0x1c')]?_[_0xb097('0x1d')](_0x5d0733[_0xb097('0x1c')],function(_0x37ab81){return{'model':db[_0x37ab81[_0xb097('0x1e')]],'as':_0x37ab81['as'],'attributes':_0x37ab81[_0xb097('0x1f')]};}):[]};}):[]};}):[]:[]})[_0xb097('0xa')](function(_0x1aef3b){logger['info'](_0xb097('0x21'),_0x7020aa);logger[_0xb097('0xe')](_0xb097('0x21'),_0x7020aa,JSON[_0xb097('0x10')](_0x1aef3b));_0x2c3521(_0x1aef3b);})['catch'](function(_0x537669){logger[_0xb097('0x11')]('ShowDeskAccount',_0x537669[_0xb097('0x13')],_0x7020aa);_0x394ae8(_0x285b8a[_0xb097('0x11')](0x1f4,_0x537669[_0xb097('0x13')]));});});};
\ No newline at end of file
+var _0x329c=['DeskAccount,\x20%s,\x20%s','message','GetDeskAccount','DeskAccount','options','raw','attributes','limit','include','map','model','debug','stringify','ShowDeskAccount','where','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent','error'];(function(_0x159e11,_0x29a5c9){var _0x273be2=function(_0x1a83e3){while(--_0x1a83e3){_0x159e11['push'](_0x159e11['shift']());}};_0x273be2(++_0x29a5c9);}(_0x329c,0xef));var _0xc329=function(_0x3a04ab,_0x31b9fd){_0x3a04ab=_0x3a04ab-0x0;var _0x4bff6d=_0x329c[_0x3a04ab];return _0x4bff6d;};'use strict';var _=require(_0xc329('0x0'));var util=require('util');var moment=require(_0xc329('0x1'));var BPromise=require(_0xc329('0x2'));var rs=require(_0xc329('0x3'));var fs=require('fs');var Redis=require(_0xc329('0x4'));var db=require(_0xc329('0x5'))['db'];var utils=require(_0xc329('0x6'));var logger=require(_0xc329('0x7'))(_0xc329('0x8'));var config=require(_0xc329('0x9'));var jayson=require(_0xc329('0xa'));var client=jayson[_0xc329('0xb')][_0xc329('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x3d51db,_0x5aecfd,_0x379def){return new BPromise(function(_0x11ae71,_0x1b37f9){return client['request'](_0x3d51db,_0x379def)[_0xc329('0xd')](function(_0x4f2075){logger[_0xc329('0xe')]('DeskAccount,\x20%s,\x20%s',_0x5aecfd,'request\x20sent');logger['debug']('DeskAccount,\x20%s,\x20%s,\x20%s',_0x5aecfd,_0xc329('0xf'),JSON['stringify'](_0x4f2075));if(_0x4f2075[_0xc329('0x10')]){if(_0x4f2075[_0xc329('0x10')]['code']===0x1f4){logger[_0xc329('0x10')](_0xc329('0x11'),_0x5aecfd,_0x4f2075[_0xc329('0x10')][_0xc329('0x12')]);return _0x1b37f9(_0x4f2075[_0xc329('0x10')]['message']);}logger[_0xc329('0x10')](_0xc329('0x11'),_0x5aecfd,_0x4f2075[_0xc329('0x10')][_0xc329('0x12')]);return _0x11ae71(_0x4f2075[_0xc329('0x10')][_0xc329('0x12')]);}else{logger[_0xc329('0xe')](_0xc329('0x11'),_0x5aecfd,_0xc329('0xf'));_0x11ae71(_0x4f2075['result'][_0xc329('0x12')]);}})['catch'](function(_0x2fefa3){logger[_0xc329('0x10')]('DeskAccount,\x20%s,\x20%s',_0x5aecfd,_0x2fefa3);_0x1b37f9(_0x2fefa3);});});}exports[_0xc329('0x13')]=function(_0x307e30){var _0x564025=this;return new Promise(function(_0x47f308,_0x14dad1){return db[_0xc329('0x14')]['findAll']({'raw':_0x307e30[_0xc329('0x15')]?_0x307e30[_0xc329('0x15')][_0xc329('0x16')]===undefined?!![]:![]:!![],'where':_0x307e30[_0xc329('0x15')]?_0x307e30[_0xc329('0x15')]['where']||null:null,'attributes':_0x307e30['options']?_0x307e30[_0xc329('0x15')][_0xc329('0x17')]||null:null,'limit':_0x307e30[_0xc329('0x15')]?_0x307e30[_0xc329('0x15')][_0xc329('0x18')]||null:null,'include':_0x307e30[_0xc329('0x15')]?_0x307e30[_0xc329('0x15')][_0xc329('0x19')]?_[_0xc329('0x1a')](_0x307e30[_0xc329('0x15')][_0xc329('0x19')],function(_0x24f371){return{'model':db[_0x24f371[_0xc329('0x1b')]],'as':_0x24f371['as'],'attributes':_0x24f371[_0xc329('0x17')],'include':_0x24f371[_0xc329('0x19')]?_[_0xc329('0x1a')](_0x24f371[_0xc329('0x19')],function(_0x3d1481){return{'model':db[_0x3d1481['model']],'as':_0x3d1481['as'],'attributes':_0x3d1481[_0xc329('0x17')],'include':_0x3d1481[_0xc329('0x19')]?_[_0xc329('0x1a')](_0x3d1481[_0xc329('0x19')],function(_0x3a78f4){return{'model':db[_0x3a78f4[_0xc329('0x1b')]],'as':_0x3a78f4['as'],'attributes':_0x3a78f4[_0xc329('0x17')]};}):[]};}):[]};}):[]:[]})[_0xc329('0xd')](function(_0x5e995c){logger[_0xc329('0xe')](_0xc329('0x13'),_0x307e30);logger[_0xc329('0x1c')](_0xc329('0x13'),_0x307e30,JSON[_0xc329('0x1d')](_0x5e995c));_0x47f308(_0x5e995c);})['catch'](function(_0x46a496){logger[_0xc329('0x10')](_0xc329('0x13'),_0x46a496[_0xc329('0x12')],_0x307e30);_0x14dad1(_0x564025[_0xc329('0x10')](0x1f4,_0x46a496['message']));});});};exports[_0xc329('0x1e')]=function(_0x47ce6a){var _0x3daf16=this;return new Promise(function(_0x47b5f8,_0xb948a3){return db[_0xc329('0x14')]['find']({'raw':_0x47ce6a[_0xc329('0x15')]?_0x47ce6a[_0xc329('0x15')][_0xc329('0x16')]===undefined?!![]:![]:!![],'where':_0x47ce6a['options']?_0x47ce6a[_0xc329('0x15')][_0xc329('0x1f')]||null:null,'attributes':_0x47ce6a[_0xc329('0x15')]?_0x47ce6a['options'][_0xc329('0x17')]||null:null,'include':_0x47ce6a[_0xc329('0x15')]?_0x47ce6a[_0xc329('0x15')]['include']?_['map'](_0x47ce6a[_0xc329('0x15')][_0xc329('0x19')],function(_0x2d3127){return{'model':db[_0x2d3127[_0xc329('0x1b')]],'as':_0x2d3127['as'],'attributes':_0x2d3127['attributes'],'include':_0x2d3127[_0xc329('0x19')]?_['map'](_0x2d3127[_0xc329('0x19')],function(_0x411dfc){return{'model':db[_0x411dfc[_0xc329('0x1b')]],'as':_0x411dfc['as'],'attributes':_0x411dfc[_0xc329('0x17')],'include':_0x411dfc[_0xc329('0x19')]?_['map'](_0x411dfc[_0xc329('0x19')],function(_0x6f3ad1){return{'model':db[_0x6f3ad1['model']],'as':_0x6f3ad1['as'],'attributes':_0x6f3ad1['attributes']};}):[]};}):[]};}):[]:[]})[_0xc329('0xd')](function(_0x56e9f9){logger[_0xc329('0xe')]('ShowDeskAccount',_0x47ce6a);logger[_0xc329('0x1c')](_0xc329('0x1e'),_0x47ce6a,JSON[_0xc329('0x1d')](_0x56e9f9));_0x47b5f8(_0x56e9f9);})['catch'](function(_0x66daf3){logger[_0xc329('0x10')](_0xc329('0x1e'),_0x66daf3[_0xc329('0x12')],_0x47ce6a);_0xb948a3(_0x3daf16[_0xc329('0x10')](0x1f4,_0x66daf3[_0xc329('0x12')]));});});};
\ No newline at end of file
index a764b63..cfa5f90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./intDeskConfiguration.controller','isAuthenticated','index','get','/:id','/:id/fields','getFields','getSubjects','/:id/descriptions','/:id/tags','post','setTags','put','update'];(function(_0x33adbf,_0x5212e6){var _0x26dcaf=function(_0x2f3c0a){while(--_0x2f3c0a){_0x33adbf['push'](_0x33adbf['shift']());}};_0x26dcaf(++_0x5212e6);}(_0x9c44,0x178));var _0x49c4=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x9c44[_0x2641f9];return _0x585741;};'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');var controller=require(_0x49c4('0x6'));router['get']('/',auth[_0x49c4('0x7')](),controller[_0x49c4('0x8')]);router[_0x49c4('0x9')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller['show']);router[_0x49c4('0x9')](_0x49c4('0xb'),auth[_0x49c4('0x7')](),controller[_0x49c4('0xc')]);router['get']('/:id/subjects',auth[_0x49c4('0x7')](),controller[_0x49c4('0xd')]);router['get'](_0x49c4('0xe'),auth[_0x49c4('0x7')](),controller['getDescriptions']);router['get'](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller['getTags']);router[_0x49c4('0x10')]('/',auth[_0x49c4('0x7')](),controller['create']);router[_0x49c4('0x10')](_0x49c4('0xf'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x11')]);router[_0x49c4('0x12')](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x13')]);router['delete'](_0x49c4('0xa'),auth[_0x49c4('0x7')](),controller[_0x49c4('0x14')]);module[_0x49c4('0x15')]=router;
\ No newline at end of file
+var _0x008c=['../../config/environment','./intDeskConfiguration.controller','get','isAuthenticated','index','getFields','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','setTags','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x1f7dff,_0x1be993){var _0x3a3727=function(_0x1ec06f){while(--_0x1ec06f){_0x1f7dff['push'](_0x1f7dff['shift']());}};_0x3a3727(++_0x1be993);}(_0x008c,0x188));var _0xc008=function(_0x78409a,_0x15cdd1){_0x78409a=_0x78409a-0x0;var _0xabcc52=_0x008c[_0x78409a];return _0xabcc52;};'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')]('/:id',auth[_0xc008('0xb')](),controller['show']);router[_0xc008('0xa')]('/:id/fields',auth['isAuthenticated'](),controller[_0xc008('0xd')]);router[_0xc008('0xa')]('/:id/subjects',auth['isAuthenticated'](),controller['getSubjects']);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('0x10'),auth['isAuthenticated'](),controller[_0xc008('0x13')]);router[_0xc008('0x14')](_0xc008('0x15'),auth[_0xc008('0xb')](),controller[_0xc008('0x16')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xc008('0x17')]);module[_0xc008('0x18')]=router;
\ No newline at end of file
index 8dfa07b..161f020 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b39=['exports','STRING'];(function(_0x13561c,_0x39f191){var _0x48f231=function(_0x19c49b){while(--_0x19c49b){_0x13561c['push'](_0x13561c['shift']());}};_0x48f231(++_0x39f191);}(_0x5b39,0x1b2));var _0x95b3=function(_0x257642,_0x270a80){_0x257642=_0x257642-0x0;var _0x3d813b=_0x5b39[_0x257642];return _0x3d813b;};'use strict';var Sequelize=require('sequelize');module[_0x95b3('0x0')]={'name':{'type':Sequelize[_0x95b3('0x1')]},'description':{'type':Sequelize[_0x95b3('0x1')]}};
\ No newline at end of file
+var _0x2513=['sequelize','exports','STRING'];(function(_0x18edf1,_0x4bfaa3){var _0x2fefe3=function(_0x203890){while(--_0x203890){_0x18edf1['push'](_0x18edf1['shift']());}};_0x2fefe3(++_0x4bfaa3);}(_0x2513,0xe4));var _0x3251=function(_0x58d99c,_0x2bbe5f){_0x58d99c=_0x58d99c-0x0;var _0x2a9148=_0x2513[_0x58d99c];return _0x2a9148;};'use strict';var Sequelize=require(_0x3251('0x0'));module[_0x3251('0x1')]={'name':{'type':Sequelize[_0x3251('0x2')]},'description':{'type':Sequelize[_0x3251('0x2')]}};
\ No newline at end of file
index 316a8a4..7b8729e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa247=['getFields','hasOwnProperty','DeskField','getSubjects','getDescriptions','findOne','getTags','Tag','setTags','ids','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','send','index','map','DeskConfiguration','rawAttributes','fieldName','type','key','name','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','catch','params','create','body','find'];(function(_0x1a43df,_0x418e74){var _0x444ada=function(_0xb010d0){while(--_0xb010d0){_0x1a43df['push'](_0x1a43df['shift']());}};_0x444ada(++_0x418e74);}(_0xa247,0x1f0));var _0x7a24=function(_0x8999cc,_0x3566db){_0x8999cc=_0x8999cc-0x0;var _0x580467=_0xa247[_0x8999cc];return _0x580467;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x7a24('0x0'));var rp=require(_0x7a24('0x1'));var moment=require(_0x7a24('0x2'));var BPromise=require(_0x7a24('0x3'));var Mustache=require(_0x7a24('0x4'));var util=require(_0x7a24('0x5'));var path=require(_0x7a24('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x7a24('0x7'));var fs=require('fs');var fs_extra=require(_0x7a24('0x8'));var _=require(_0x7a24('0x9'));var squel=require('squel');var crypto=require(_0x7a24('0xa'));var jsforce=require(_0x7a24('0xb'));var deskjs=require(_0x7a24('0xc'));var toCsv=require('to-csv');var querystring=require(_0x7a24('0xd'));var Papa=require(_0x7a24('0xe'));var Redis=require(_0x7a24('0xf'));var authService=require(_0x7a24('0x10'));var qs=require(_0x7a24('0x11'));var as=require(_0x7a24('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x7a24('0x13'));var utils=require(_0x7a24('0x14'));var config=require(_0x7a24('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0x7a24('0x16'))['db'];function respondWithStatusCode(_0x2e507d,_0x1d6373){_0x1d6373=_0x1d6373||0xcc;return function(_0x1b4d46){if(_0x1b4d46){return _0x2e507d[_0x7a24('0x17')](_0x1d6373);}return _0x2e507d[_0x7a24('0x18')](_0x1d6373)[_0x7a24('0x19')]();};}function respondWithResult(_0x178bf0,_0x3ad673){_0x3ad673=_0x3ad673||0xc8;return function(_0x19dc63){if(_0x19dc63){return _0x178bf0[_0x7a24('0x18')](_0x3ad673)['json'](_0x19dc63);}};}function respondWithFilteredResult(_0x1b81ac,_0x40c768){return function(_0x1a47fa){if(_0x1a47fa){var _0x7f198c=typeof _0x40c768[_0x7a24('0x1a')]===_0x7a24('0x1b')&&typeof _0x40c768[_0x7a24('0x1c')]===_0x7a24('0x1b');var _0x262183=_0x1a47fa[_0x7a24('0x1d')];var _0x5c589d=_0x7f198c?0x0:_0x40c768[_0x7a24('0x1a')];var _0x43b0e4=_0x7f198c?_0x1a47fa['count']:_0x40c768[_0x7a24('0x1a')]+_0x40c768['limit'];var _0x352786;if(_0x43b0e4>=_0x262183){_0x43b0e4=_0x262183;_0x352786=0xc8;}else{_0x352786=0xce;}_0x1b81ac[_0x7a24('0x18')](_0x352786);return _0x1b81ac[_0x7a24('0x1e')]('Content-Range',_0x5c589d+'-'+_0x43b0e4+'/'+_0x262183)['json'](_0x1a47fa);}return null;};}function patchUpdates(_0x1a39ad){return function(_0x292744){try{jsonpatch[_0x7a24('0x1f')](_0x292744,_0x1a39ad,!![]);}catch(_0xe31ea8){return BPromise[_0x7a24('0x20')](_0xe31ea8);}return _0x292744[_0x7a24('0x21')]();};}function saveUpdates(_0x4cb364,_0x2b23af){return function(_0xc2be5b){if(_0xc2be5b){return _0xc2be5b[_0x7a24('0x22')](_0x4cb364)[_0x7a24('0x23')](function(_0x813171){return _0x813171;});}return null;};}function removeEntity(_0x3fd2da,_0x3f2722){return function(_0x441117){if(_0x441117){return _0x441117[_0x7a24('0x24')]()[_0x7a24('0x23')](function(){_0x3fd2da['status'](0xcc)[_0x7a24('0x19')]();});}};}function handleEntityNotFound(_0x19e281,_0x3d4d78){return function(_0x374b74){if(!_0x374b74){_0x19e281[_0x7a24('0x17')](0x194);}return _0x374b74;};}function handleError(_0x31dc27,_0x2bc7bf){_0x2bc7bf=_0x2bc7bf||0x1f4;return function(_0x3d22e){logger[_0x7a24('0x25')](_0x3d22e['stack']);if(_0x3d22e['name']){delete _0x3d22e['name'];}_0x31dc27[_0x7a24('0x18')](_0x2bc7bf)[_0x7a24('0x26')](_0x3d22e);};}exports[_0x7a24('0x27')]=function(_0x4b4fff,_0x1f53a8){var _0x16030a={},_0x513f48={},_0x340200={'count':0x0,'rows':[]};var _0x4abdb2=_[_0x7a24('0x28')](db[_0x7a24('0x29')][_0x7a24('0x2a')],function(_0x39730c){return{'name':_0x39730c[_0x7a24('0x2b')],'type':_0x39730c[_0x7a24('0x2c')][_0x7a24('0x2d')]};});_0x513f48['model']=_[_0x7a24('0x28')](_0x4abdb2,_0x7a24('0x2e'));_0x513f48[_0x7a24('0x2f')]=_[_0x7a24('0x30')](_0x4b4fff[_0x7a24('0x2f')]);_0x513f48[_0x7a24('0x31')]=_[_0x7a24('0x32')](_0x513f48[_0x7a24('0x33')],_0x513f48[_0x7a24('0x2f')]);_0x16030a[_0x7a24('0x34')]=_[_0x7a24('0x32')](_0x513f48['model'],qs[_0x7a24('0x35')](_0x4b4fff['query'][_0x7a24('0x35')]));_0x16030a[_0x7a24('0x34')]=_0x16030a[_0x7a24('0x34')][_0x7a24('0x36')]?_0x16030a[_0x7a24('0x34')]:_0x513f48[_0x7a24('0x33')];if(!_0x4b4fff[_0x7a24('0x2f')]['hasOwnProperty'](_0x7a24('0x37'))){_0x16030a[_0x7a24('0x1c')]=qs[_0x7a24('0x1c')](_0x4b4fff[_0x7a24('0x2f')][_0x7a24('0x1c')]);_0x16030a['offset']=qs[_0x7a24('0x1a')](_0x4b4fff['query']['offset']);}_0x16030a[_0x7a24('0x38')]=qs[_0x7a24('0x39')](_0x4b4fff[_0x7a24('0x2f')]['sort']);_0x16030a[_0x7a24('0x3a')]=qs[_0x7a24('0x31')](_[_0x7a24('0x3b')](_0x4b4fff[_0x7a24('0x2f')],_0x513f48[_0x7a24('0x31')]),_0x4abdb2);if(_0x4b4fff[_0x7a24('0x2f')]['filter']){_0x16030a[_0x7a24('0x3a')]=_[_0x7a24('0x3c')](_0x16030a[_0x7a24('0x3a')],{'$or':_[_0x7a24('0x28')](_0x4abdb2,function(_0x53e964){if(_0x53e964['type']!==_0x7a24('0x3d')){var _0x46a0d1={};_0x46a0d1[_0x53e964[_0x7a24('0x2e')]]={'$like':'%'+_0x4b4fff[_0x7a24('0x2f')][_0x7a24('0x3e')]+'%'};return _0x46a0d1;}})});}_0x16030a=_[_0x7a24('0x3c')]({},_0x16030a,_0x4b4fff[_0x7a24('0x3f')]);var _0x1f8145={'where':_0x16030a[_0x7a24('0x3a')]};return db['DeskConfiguration'][_0x7a24('0x1d')](_0x1f8145)[_0x7a24('0x23')](function(_0x4c96d2){_0x340200[_0x7a24('0x1d')]=_0x4c96d2;if(_0x4b4fff[_0x7a24('0x2f')][_0x7a24('0x40')]){_0x16030a[_0x7a24('0x41')]=[{'all':!![]}];}return db[_0x7a24('0x29')]['findAll'](_0x16030a);})[_0x7a24('0x23')](function(_0x223c1f){_0x340200['rows']=_0x223c1f;return _0x340200;})[_0x7a24('0x23')](respondWithFilteredResult(_0x1f53a8,_0x16030a))[_0x7a24('0x42')](handleError(_0x1f53a8,null));};exports['show']=function(_0x40d6e8,_0x13c195){var _0x389c3d={'raw':![],'where':{'id':_0x40d6e8[_0x7a24('0x43')]['id']}},_0x5dd3fd={};_0x5dd3fd[_0x7a24('0x33')]=_['keys'](db[_0x7a24('0x29')][_0x7a24('0x2a')]);_0x5dd3fd[_0x7a24('0x2f')]=_[_0x7a24('0x30')](_0x40d6e8[_0x7a24('0x2f')]);_0x5dd3fd['filters']=_[_0x7a24('0x32')](_0x5dd3fd['model'],_0x5dd3fd[_0x7a24('0x2f')]);_0x389c3d[_0x7a24('0x34')]=_['intersection'](_0x5dd3fd['model'],qs[_0x7a24('0x35')](_0x40d6e8['query'][_0x7a24('0x35')]));_0x389c3d[_0x7a24('0x34')]=_0x389c3d[_0x7a24('0x34')][_0x7a24('0x36')]?_0x389c3d[_0x7a24('0x34')]:_0x5dd3fd[_0x7a24('0x33')];if(_0x40d6e8['query'][_0x7a24('0x40')]){_0x389c3d['include']=[{'all':!![]}];}_0x389c3d=_[_0x7a24('0x3c')]({},_0x389c3d,_0x40d6e8[_0x7a24('0x3f')]);return db[_0x7a24('0x29')]['find'](_0x389c3d)[_0x7a24('0x23')](handleEntityNotFound(_0x13c195,null))[_0x7a24('0x23')](respondWithResult(_0x13c195,null))[_0x7a24('0x42')](handleError(_0x13c195,null));};exports['create']=function(_0x7c2fe5,_0x1c2ce2){return db[_0x7a24('0x29')][_0x7a24('0x44')](_0x7c2fe5[_0x7a24('0x45')],{})[_0x7a24('0x23')](respondWithResult(_0x1c2ce2,0xc9))[_0x7a24('0x42')](handleError(_0x1c2ce2,null));};exports[_0x7a24('0x22')]=function(_0x3fe723,_0x298444){if(_0x3fe723[_0x7a24('0x45')]['id']){delete _0x3fe723[_0x7a24('0x45')]['id'];}return db[_0x7a24('0x29')][_0x7a24('0x46')]({'where':{'id':_0x3fe723[_0x7a24('0x43')]['id']}})[_0x7a24('0x23')](handleEntityNotFound(_0x298444,null))['then'](saveUpdates(_0x3fe723[_0x7a24('0x45')],null))[_0x7a24('0x23')](respondWithResult(_0x298444,null))['catch'](handleError(_0x298444,null));};exports[_0x7a24('0x24')]=function(_0x5a605d,_0x1047f8){return db[_0x7a24('0x29')]['find']({'where':{'id':_0x5a605d['params']['id']}})[_0x7a24('0x23')](handleEntityNotFound(_0x1047f8,null))[_0x7a24('0x23')](removeEntity(_0x1047f8,null))['catch'](handleError(_0x1047f8,null));};exports['getFields']=function(_0x44fc6a,_0x49e123,_0x3c7152){var _0x8340ef={};var _0x4d27b3={};var _0x38eba0;var _0x178f70;return db[_0x7a24('0x29')]['findOne']({'where':{'id':_0x44fc6a[_0x7a24('0x43')]['id']}})[_0x7a24('0x23')](handleEntityNotFound(_0x49e123,null))[_0x7a24('0x23')](function(_0x4aad54){if(_0x4aad54){_0x38eba0=_0x4aad54;_0x4d27b3[_0x7a24('0x33')]=_[_0x7a24('0x30')](db['DeskField'][_0x7a24('0x2a')]);_0x4d27b3['query']=_[_0x7a24('0x30')](_0x44fc6a[_0x7a24('0x2f')]);_0x4d27b3['filters']=_[_0x7a24('0x32')](_0x4d27b3[_0x7a24('0x33')],_0x4d27b3[_0x7a24('0x2f')]);_0x8340ef[_0x7a24('0x34')]=_['intersection'](_0x4d27b3[_0x7a24('0x33')],qs['fields'](_0x44fc6a[_0x7a24('0x2f')][_0x7a24('0x35')]));_0x8340ef['attributes']=_0x8340ef[_0x7a24('0x34')][_0x7a24('0x36')]?_0x8340ef[_0x7a24('0x34')]:_0x4d27b3[_0x7a24('0x33')];_0x8340ef[_0x7a24('0x38')]=qs[_0x7a24('0x39')](_0x44fc6a[_0x7a24('0x2f')][_0x7a24('0x39')]);_0x8340ef['where']=qs[_0x7a24('0x31')](_[_0x7a24('0x3b')](_0x44fc6a['query'],_0x4d27b3[_0x7a24('0x31')]));if(_0x44fc6a[_0x7a24('0x2f')][_0x7a24('0x3e')]){_0x8340ef[_0x7a24('0x3a')]=_[_0x7a24('0x3c')](_0x8340ef[_0x7a24('0x3a')],{'$or':_[_0x7a24('0x28')](_0x8340ef['attributes'],function(_0x2c919c){var _0x5df5aa={};_0x5df5aa[_0x2c919c]={'$like':'%'+_0x44fc6a[_0x7a24('0x2f')][_0x7a24('0x3e')]+'%'};return _0x5df5aa;})});}_0x8340ef=_[_0x7a24('0x3c')]({},_0x8340ef,_0x44fc6a[_0x7a24('0x3f')]);return _0x38eba0[_0x7a24('0x47')](_0x8340ef);}})[_0x7a24('0x23')](function(_0x5aab0d){if(_0x5aab0d){_0x178f70=_0x5aab0d[_0x7a24('0x36')];if(!_0x44fc6a[_0x7a24('0x2f')][_0x7a24('0x48')](_0x7a24('0x37'))){_0x8340ef[_0x7a24('0x1c')]=qs[_0x7a24('0x1c')](_0x44fc6a[_0x7a24('0x2f')][_0x7a24('0x1c')]);_0x8340ef[_0x7a24('0x1a')]=qs['offset'](_0x44fc6a['query']['offset']);}return _0x38eba0['getFields'](_0x8340ef);}})[_0x7a24('0x23')](function(_0xf1500d){if(_0xf1500d){return _0xf1500d?{'count':_0x178f70,'rows':_0xf1500d}:null;}})[_0x7a24('0x23')](respondWithResult(_0x49e123,null))[_0x7a24('0x42')](handleError(_0x49e123,null));};exports['getSubjects']=function(_0x5c4090,_0x258fa5,_0x1b5956){var _0x135181={};var _0x58946c={};var _0x2f6a23;var _0x44aefc;return db[_0x7a24('0x29')]['findOne']({'where':{'id':_0x5c4090['params']['id']}})[_0x7a24('0x23')](handleEntityNotFound(_0x258fa5,null))[_0x7a24('0x23')](function(_0x134ad4){if(_0x134ad4){_0x2f6a23=_0x134ad4;_0x58946c[_0x7a24('0x33')]=_[_0x7a24('0x30')](db[_0x7a24('0x49')][_0x7a24('0x2a')]);_0x58946c[_0x7a24('0x2f')]=_[_0x7a24('0x30')](_0x5c4090[_0x7a24('0x2f')]);_0x58946c[_0x7a24('0x31')]=_[_0x7a24('0x32')](_0x58946c[_0x7a24('0x33')],_0x58946c['query']);_0x135181[_0x7a24('0x34')]=_[_0x7a24('0x32')](_0x58946c[_0x7a24('0x33')],qs[_0x7a24('0x35')](_0x5c4090[_0x7a24('0x2f')]['fields']));_0x135181[_0x7a24('0x34')]=_0x135181['attributes'][_0x7a24('0x36')]?_0x135181[_0x7a24('0x34')]:_0x58946c[_0x7a24('0x33')];_0x135181[_0x7a24('0x38')]=qs['sort'](_0x5c4090['query'][_0x7a24('0x39')]);_0x135181['where']=qs[_0x7a24('0x31')](_[_0x7a24('0x3b')](_0x5c4090[_0x7a24('0x2f')],_0x58946c['filters']));if(_0x5c4090[_0x7a24('0x2f')]['filter']){_0x135181['where']=_[_0x7a24('0x3c')](_0x135181[_0x7a24('0x3a')],{'$or':_[_0x7a24('0x28')](_0x135181[_0x7a24('0x34')],function(_0x43aba0){var _0x119c26={};_0x119c26[_0x43aba0]={'$like':'%'+_0x5c4090['query']['filter']+'%'};return _0x119c26;})});}_0x135181=_[_0x7a24('0x3c')]({},_0x135181,_0x5c4090[_0x7a24('0x3f')]);return _0x2f6a23[_0x7a24('0x4a')](_0x135181);}})['then'](function(_0x1411d1){if(_0x1411d1){_0x44aefc=_0x1411d1[_0x7a24('0x36')];if(!_0x5c4090[_0x7a24('0x2f')]['hasOwnProperty'](_0x7a24('0x37'))){_0x135181['limit']=qs['limit'](_0x5c4090['query'][_0x7a24('0x1c')]);_0x135181[_0x7a24('0x1a')]=qs['offset'](_0x5c4090[_0x7a24('0x2f')]['offset']);}return _0x2f6a23[_0x7a24('0x4a')](_0x135181);}})[_0x7a24('0x23')](function(_0x9edcc9){if(_0x9edcc9){return _0x9edcc9?{'count':_0x44aefc,'rows':_0x9edcc9}:null;}})[_0x7a24('0x23')](respondWithResult(_0x258fa5,null))['catch'](handleError(_0x258fa5,null));};exports[_0x7a24('0x4b')]=function(_0x1b1067,_0x402359,_0x5740fe){var _0x2cf70e={};var _0x2d539c={};var _0x14a0a7;var _0x178ffc;return db['DeskConfiguration'][_0x7a24('0x4c')]({'where':{'id':_0x1b1067[_0x7a24('0x43')]['id']}})[_0x7a24('0x23')](handleEntityNotFound(_0x402359,null))['then'](function(_0x3e4043){if(_0x3e4043){_0x14a0a7=_0x3e4043;_0x2d539c[_0x7a24('0x33')]=_['keys'](db[_0x7a24('0x49')][_0x7a24('0x2a')]);_0x2d539c[_0x7a24('0x2f')]=_[_0x7a24('0x30')](_0x1b1067[_0x7a24('0x2f')]);_0x2d539c[_0x7a24('0x31')]=_['intersection'](_0x2d539c[_0x7a24('0x33')],_0x2d539c[_0x7a24('0x2f')]);_0x2cf70e[_0x7a24('0x34')]=_[_0x7a24('0x32')](_0x2d539c[_0x7a24('0x33')],qs[_0x7a24('0x35')](_0x1b1067[_0x7a24('0x2f')]['fields']));_0x2cf70e[_0x7a24('0x34')]=_0x2cf70e[_0x7a24('0x34')]['length']?_0x2cf70e[_0x7a24('0x34')]:_0x2d539c[_0x7a24('0x33')];_0x2cf70e['order']=qs[_0x7a24('0x39')](_0x1b1067[_0x7a24('0x2f')]['sort']);_0x2cf70e[_0x7a24('0x3a')]=qs[_0x7a24('0x31')](_[_0x7a24('0x3b')](_0x1b1067[_0x7a24('0x2f')],_0x2d539c[_0x7a24('0x31')]));if(_0x1b1067[_0x7a24('0x2f')][_0x7a24('0x3e')]){_0x2cf70e[_0x7a24('0x3a')]=_[_0x7a24('0x3c')](_0x2cf70e[_0x7a24('0x3a')],{'$or':_[_0x7a24('0x28')](_0x2cf70e[_0x7a24('0x34')],function(_0xe72227){var _0x14cea4={};_0x14cea4[_0xe72227]={'$like':'%'+_0x1b1067[_0x7a24('0x2f')][_0x7a24('0x3e')]+'%'};return _0x14cea4;})});}_0x2cf70e=_['merge']({},_0x2cf70e,_0x1b1067['options']);return _0x14a0a7[_0x7a24('0x4b')](_0x2cf70e);}})['then'](function(_0x2efb53){if(_0x2efb53){_0x178ffc=_0x2efb53['length'];if(!_0x1b1067['query'][_0x7a24('0x48')](_0x7a24('0x37'))){_0x2cf70e[_0x7a24('0x1c')]=qs[_0x7a24('0x1c')](_0x1b1067[_0x7a24('0x2f')][_0x7a24('0x1c')]);_0x2cf70e['offset']=qs[_0x7a24('0x1a')](_0x1b1067[_0x7a24('0x2f')][_0x7a24('0x1a')]);}return _0x14a0a7[_0x7a24('0x4b')](_0x2cf70e);}})[_0x7a24('0x23')](function(_0x69b83b){if(_0x69b83b){return _0x69b83b?{'count':_0x178ffc,'rows':_0x69b83b}:null;}})[_0x7a24('0x23')](respondWithResult(_0x402359,null))[_0x7a24('0x42')](handleError(_0x402359,null));};exports[_0x7a24('0x4d')]=function(_0x1f3355,_0x5c4481,_0x174c4e){var _0x1ec16f={};var _0x510d18={};var _0x558047;var _0x36aead;return db[_0x7a24('0x29')][_0x7a24('0x4c')]({'where':{'id':_0x1f3355[_0x7a24('0x43')]['id']}})[_0x7a24('0x23')](handleEntityNotFound(_0x5c4481,null))[_0x7a24('0x23')](function(_0x27e37c){if(_0x27e37c){_0x558047=_0x27e37c;_0x510d18[_0x7a24('0x33')]=_[_0x7a24('0x30')](db[_0x7a24('0x4e')][_0x7a24('0x2a')]);_0x510d18['query']=_['keys'](_0x1f3355[_0x7a24('0x2f')]);_0x510d18['filters']=_[_0x7a24('0x32')](_0x510d18[_0x7a24('0x33')],_0x510d18[_0x7a24('0x2f')]);_0x1ec16f[_0x7a24('0x34')]=_[_0x7a24('0x32')](_0x510d18[_0x7a24('0x33')],qs[_0x7a24('0x35')](_0x1f3355[_0x7a24('0x2f')][_0x7a24('0x35')]));_0x1ec16f[_0x7a24('0x34')]=_0x1ec16f[_0x7a24('0x34')][_0x7a24('0x36')]?_0x1ec16f['attributes']:_0x510d18[_0x7a24('0x33')];_0x1ec16f['order']=qs['sort'](_0x1f3355[_0x7a24('0x2f')][_0x7a24('0x39')]);_0x1ec16f[_0x7a24('0x3a')]=qs['filters'](_['pick'](_0x1f3355[_0x7a24('0x2f')],_0x510d18[_0x7a24('0x31')]));if(_0x1f3355[_0x7a24('0x2f')]['filter']){_0x1ec16f[_0x7a24('0x3a')]=_['merge'](_0x1ec16f[_0x7a24('0x3a')],{'$or':_[_0x7a24('0x28')](_0x1ec16f[_0x7a24('0x34')],function(_0xbf074b){var _0x4cf9fa={};_0x4cf9fa[_0xbf074b]={'$like':'%'+_0x1f3355[_0x7a24('0x2f')][_0x7a24('0x3e')]+'%'};return _0x4cf9fa;})});}_0x1ec16f=_['merge']({},_0x1ec16f,_0x1f3355[_0x7a24('0x3f')]);return _0x558047['getTags'](_0x1ec16f);}})[_0x7a24('0x23')](function(_0x10f255){if(_0x10f255){_0x36aead=_0x10f255['length'];if(!_0x1f3355[_0x7a24('0x2f')][_0x7a24('0x48')](_0x7a24('0x37'))){_0x1ec16f[_0x7a24('0x1c')]=qs[_0x7a24('0x1c')](_0x1f3355['query'][_0x7a24('0x1c')]);_0x1ec16f[_0x7a24('0x1a')]=qs['offset'](_0x1f3355[_0x7a24('0x2f')]['offset']);}return _0x558047['getTags'](_0x1ec16f);}})[_0x7a24('0x23')](function(_0x10c62a){if(_0x10c62a){return _0x10c62a?{'count':_0x36aead,'rows':_0x10c62a}:null;}})['then'](respondWithResult(_0x5c4481,null))[_0x7a24('0x42')](handleError(_0x5c4481,null));};exports[_0x7a24('0x4f')]=function(_0x4a9712,_0xb4ba90,_0x183e67){if(_0x4a9712[_0x7a24('0x45')]['id']){delete _0x4a9712[_0x7a24('0x45')]['id'];}return db[_0x7a24('0x29')][_0x7a24('0x4c')]({'where':{'id':_0x4a9712[_0x7a24('0x43')]['id']}})['then'](handleEntityNotFound(_0xb4ba90,null))[_0x7a24('0x23')](function(_0x36c122){if(_0x36c122){return _0x36c122['setTags'](_0x4a9712[_0x7a24('0x45')][_0x7a24('0x50')]||[]);}return null;})['then'](respondWithResult(_0xb4ba90,null))['catch'](handleError(_0xb4ba90,null));};
\ No newline at end of file
+var _0xc97f=['keys','query','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','merge','map','type','VIRTUAL','includeAll','include','findAll','rows','catch','show','intersection','options','find','create','body','params','findOne','DeskField','where','getFields','getSubjects','getDescriptions','getTags','Tag','setTags','ids','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','then','destroy','stack','name','send','index','DeskConfiguration','rawAttributes','key','model'];(function(_0x21e970,_0x345732){var _0x5313c0=function(_0xf713ac){while(--_0xf713ac){_0x21e970['push'](_0x21e970['shift']());}};_0x5313c0(++_0x345732);}(_0xc97f,0x1ca));var _0xfc97=function(_0x294405,_0x486967){_0x294405=_0x294405-0x0;var _0x6a6f3f=_0xc97f[_0x294405];return _0x6a6f3f;};'use strict';var emlformat=require(_0xfc97('0x0'));var rimraf=require(_0xfc97('0x1'));var zipdir=require(_0xfc97('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xfc97('0x3'));var moment=require(_0xfc97('0x4'));var BPromise=require(_0xfc97('0x5'));var Mustache=require(_0xfc97('0x6'));var util=require(_0xfc97('0x7'));var path=require(_0xfc97('0x8'));var sox=require(_0xfc97('0x9'));var csv=require(_0xfc97('0xa'));var ejs=require(_0xfc97('0xb'));var fs=require('fs');var fs_extra=require(_0xfc97('0xc'));var _=require(_0xfc97('0xd'));var squel=require(_0xfc97('0xe'));var crypto=require('crypto');var jsforce=require(_0xfc97('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xfc97('0xa'));var querystring=require('querystring');var Papa=require(_0xfc97('0x10'));var Redis=require('ioredis');var authService=require(_0xfc97('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xfc97('0x12'));var hardwareService=require(_0xfc97('0x13'));var logger=require('../../config/logger')(_0xfc97('0x14'));var utils=require('../../config/utils');var config=require(_0xfc97('0x15'));var licenseUtil=require(_0xfc97('0x16'));var db=require(_0xfc97('0x17'))['db'];function respondWithStatusCode(_0x10fdfc,_0x26d7b1){_0x26d7b1=_0x26d7b1||0xcc;return function(_0x4d63dd){if(_0x4d63dd){return _0x10fdfc[_0xfc97('0x18')](_0x26d7b1);}return _0x10fdfc[_0xfc97('0x19')](_0x26d7b1)[_0xfc97('0x1a')]();};}function respondWithResult(_0x524603,_0x45a504){_0x45a504=_0x45a504||0xc8;return function(_0x5cabc5){if(_0x5cabc5){return _0x524603[_0xfc97('0x19')](_0x45a504)[_0xfc97('0x1b')](_0x5cabc5);}};}function respondWithFilteredResult(_0x574343,_0x525913){return function(_0x3f3ca1){if(_0x3f3ca1){var _0x34b427=typeof _0x525913[_0xfc97('0x1c')]===_0xfc97('0x1d')&&typeof _0x525913[_0xfc97('0x1e')]===_0xfc97('0x1d');var _0x7a6123=_0x3f3ca1[_0xfc97('0x1f')];var _0x2beb2a=_0x34b427?0x0:_0x525913['offset'];var _0x37f136=_0x34b427?_0x3f3ca1['count']:_0x525913[_0xfc97('0x1c')]+_0x525913[_0xfc97('0x1e')];var _0x195ca8;if(_0x37f136>=_0x7a6123){_0x37f136=_0x7a6123;_0x195ca8=0xc8;}else{_0x195ca8=0xce;}_0x574343['status'](_0x195ca8);return _0x574343[_0xfc97('0x20')](_0xfc97('0x21'),_0x2beb2a+'-'+_0x37f136+'/'+_0x7a6123)[_0xfc97('0x1b')](_0x3f3ca1);}return null;};}function patchUpdates(_0x352029){return function(_0x3a3392){try{jsonpatch['apply'](_0x3a3392,_0x352029,!![]);}catch(_0x378fd0){return BPromise[_0xfc97('0x22')](_0x378fd0);}return _0x3a3392[_0xfc97('0x23')]();};}function saveUpdates(_0x3cff4d,_0x113033){return function(_0x5ce919){if(_0x5ce919){return _0x5ce919['update'](_0x3cff4d)[_0xfc97('0x24')](function(_0x433979){return _0x433979;});}return null;};}function removeEntity(_0x389344,_0x900e91){return function(_0x20bbd7){if(_0x20bbd7){return _0x20bbd7[_0xfc97('0x25')]()[_0xfc97('0x24')](function(){_0x389344[_0xfc97('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5e12b1,_0x2f2e83){return function(_0x1a410f){if(!_0x1a410f){_0x5e12b1[_0xfc97('0x18')](0x194);}return _0x1a410f;};}function handleError(_0x42b49e,_0x407345){_0x407345=_0x407345||0x1f4;return function(_0xdb309b){logger['error'](_0xdb309b[_0xfc97('0x26')]);if(_0xdb309b[_0xfc97('0x27')]){delete _0xdb309b[_0xfc97('0x27')];}_0x42b49e['status'](_0x407345)[_0xfc97('0x28')](_0xdb309b);};}exports[_0xfc97('0x29')]=function(_0x367862,_0x1b798c){var _0x13a039={},_0x27f5b4={},_0x20f00d={'count':0x0,'rows':[]};var _0x3adb30=_['map'](db[_0xfc97('0x2a')][_0xfc97('0x2b')],function(_0x518429){return{'name':_0x518429['fieldName'],'type':_0x518429['type'][_0xfc97('0x2c')]};});_0x27f5b4[_0xfc97('0x2d')]=_['map'](_0x3adb30,_0xfc97('0x27'));_0x27f5b4['query']=_[_0xfc97('0x2e')](_0x367862[_0xfc97('0x2f')]);_0x27f5b4['filters']=_['intersection'](_0x27f5b4[_0xfc97('0x2d')],_0x27f5b4['query']);_0x13a039['attributes']=_['intersection'](_0x27f5b4[_0xfc97('0x2d')],qs[_0xfc97('0x30')](_0x367862[_0xfc97('0x2f')]['fields']));_0x13a039[_0xfc97('0x31')]=_0x13a039[_0xfc97('0x31')][_0xfc97('0x32')]?_0x13a039[_0xfc97('0x31')]:_0x27f5b4[_0xfc97('0x2d')];if(!_0x367862[_0xfc97('0x2f')][_0xfc97('0x33')](_0xfc97('0x34'))){_0x13a039[_0xfc97('0x1e')]=qs['limit'](_0x367862[_0xfc97('0x2f')]['limit']);_0x13a039['offset']=qs[_0xfc97('0x1c')](_0x367862['query'][_0xfc97('0x1c')]);}_0x13a039[_0xfc97('0x35')]=qs[_0xfc97('0x36')](_0x367862[_0xfc97('0x2f')]['sort']);_0x13a039['where']=qs[_0xfc97('0x37')](_[_0xfc97('0x38')](_0x367862[_0xfc97('0x2f')],_0x27f5b4[_0xfc97('0x37')]),_0x3adb30);if(_0x367862['query'][_0xfc97('0x39')]){_0x13a039['where']=_[_0xfc97('0x3a')](_0x13a039['where'],{'$or':_[_0xfc97('0x3b')](_0x3adb30,function(_0x22239f){if(_0x22239f[_0xfc97('0x3c')]!==_0xfc97('0x3d')){var _0x5ea5b8={};_0x5ea5b8[_0x22239f[_0xfc97('0x27')]]={'$like':'%'+_0x367862[_0xfc97('0x2f')][_0xfc97('0x39')]+'%'};return _0x5ea5b8;}})});}_0x13a039=_[_0xfc97('0x3a')]({},_0x13a039,_0x367862['options']);var _0x185c8e={'where':_0x13a039['where']};return db[_0xfc97('0x2a')][_0xfc97('0x1f')](_0x185c8e)[_0xfc97('0x24')](function(_0x3c01ab){_0x20f00d['count']=_0x3c01ab;if(_0x367862[_0xfc97('0x2f')][_0xfc97('0x3e')]){_0x13a039[_0xfc97('0x3f')]=[{'all':!![]}];}return db['DeskConfiguration'][_0xfc97('0x40')](_0x13a039);})[_0xfc97('0x24')](function(_0x22a6fe){_0x20f00d[_0xfc97('0x41')]=_0x22a6fe;return _0x20f00d;})[_0xfc97('0x24')](respondWithFilteredResult(_0x1b798c,_0x13a039))[_0xfc97('0x42')](handleError(_0x1b798c,null));};exports[_0xfc97('0x43')]=function(_0x5e24d6,_0x250e7e){var _0x4923a4={'raw':![],'where':{'id':_0x5e24d6['params']['id']}},_0x4cbabc={};_0x4cbabc['model']=_['keys'](db[_0xfc97('0x2a')][_0xfc97('0x2b')]);_0x4cbabc[_0xfc97('0x2f')]=_['keys'](_0x5e24d6[_0xfc97('0x2f')]);_0x4cbabc['filters']=_[_0xfc97('0x44')](_0x4cbabc[_0xfc97('0x2d')],_0x4cbabc['query']);_0x4923a4['attributes']=_[_0xfc97('0x44')](_0x4cbabc[_0xfc97('0x2d')],qs['fields'](_0x5e24d6['query'][_0xfc97('0x30')]));_0x4923a4['attributes']=_0x4923a4[_0xfc97('0x31')][_0xfc97('0x32')]?_0x4923a4['attributes']:_0x4cbabc['model'];if(_0x5e24d6['query'][_0xfc97('0x3e')]){_0x4923a4[_0xfc97('0x3f')]=[{'all':!![]}];}_0x4923a4=_['merge']({},_0x4923a4,_0x5e24d6[_0xfc97('0x45')]);return db[_0xfc97('0x2a')][_0xfc97('0x46')](_0x4923a4)[_0xfc97('0x24')](handleEntityNotFound(_0x250e7e,null))[_0xfc97('0x24')](respondWithResult(_0x250e7e,null))[_0xfc97('0x42')](handleError(_0x250e7e,null));};exports[_0xfc97('0x47')]=function(_0x1966a3,_0x3c0657){return db['DeskConfiguration'][_0xfc97('0x47')](_0x1966a3['body'],{})[_0xfc97('0x24')](respondWithResult(_0x3c0657,0xc9))['catch'](handleError(_0x3c0657,null));};exports['update']=function(_0x3b2c47,_0xa6ee7b){if(_0x3b2c47[_0xfc97('0x48')]['id']){delete _0x3b2c47['body']['id'];}return db[_0xfc97('0x2a')]['find']({'where':{'id':_0x3b2c47[_0xfc97('0x49')]['id']}})['then'](handleEntityNotFound(_0xa6ee7b,null))[_0xfc97('0x24')](saveUpdates(_0x3b2c47[_0xfc97('0x48')],null))[_0xfc97('0x24')](respondWithResult(_0xa6ee7b,null))[_0xfc97('0x42')](handleError(_0xa6ee7b,null));};exports[_0xfc97('0x25')]=function(_0x4cfc57,_0xb4249c){return db[_0xfc97('0x2a')][_0xfc97('0x46')]({'where':{'id':_0x4cfc57[_0xfc97('0x49')]['id']}})[_0xfc97('0x24')](handleEntityNotFound(_0xb4249c,null))[_0xfc97('0x24')](removeEntity(_0xb4249c,null))[_0xfc97('0x42')](handleError(_0xb4249c,null));};exports['getFields']=function(_0x42608d,_0x39a6cc,_0x1d1126){var _0x3298f5={};var _0x1161f5={};var _0x74785;var _0x1f9242;return db['DeskConfiguration'][_0xfc97('0x4a')]({'where':{'id':_0x42608d['params']['id']}})[_0xfc97('0x24')](handleEntityNotFound(_0x39a6cc,null))[_0xfc97('0x24')](function(_0x238e76){if(_0x238e76){_0x74785=_0x238e76;_0x1161f5['model']=_[_0xfc97('0x2e')](db[_0xfc97('0x4b')][_0xfc97('0x2b')]);_0x1161f5[_0xfc97('0x2f')]=_[_0xfc97('0x2e')](_0x42608d['query']);_0x1161f5[_0xfc97('0x37')]=_[_0xfc97('0x44')](_0x1161f5[_0xfc97('0x2d')],_0x1161f5[_0xfc97('0x2f')]);_0x3298f5[_0xfc97('0x31')]=_[_0xfc97('0x44')](_0x1161f5[_0xfc97('0x2d')],qs[_0xfc97('0x30')](_0x42608d[_0xfc97('0x2f')][_0xfc97('0x30')]));_0x3298f5[_0xfc97('0x31')]=_0x3298f5[_0xfc97('0x31')][_0xfc97('0x32')]?_0x3298f5[_0xfc97('0x31')]:_0x1161f5[_0xfc97('0x2d')];_0x3298f5['order']=qs['sort'](_0x42608d['query']['sort']);_0x3298f5['where']=qs[_0xfc97('0x37')](_[_0xfc97('0x38')](_0x42608d[_0xfc97('0x2f')],_0x1161f5['filters']));if(_0x42608d['query'][_0xfc97('0x39')]){_0x3298f5['where']=_['merge'](_0x3298f5[_0xfc97('0x4c')],{'$or':_['map'](_0x3298f5['attributes'],function(_0x46c97b){var _0x16ceb7={};_0x16ceb7[_0x46c97b]={'$like':'%'+_0x42608d[_0xfc97('0x2f')][_0xfc97('0x39')]+'%'};return _0x16ceb7;})});}_0x3298f5=_['merge']({},_0x3298f5,_0x42608d['options']);return _0x74785[_0xfc97('0x4d')](_0x3298f5);}})[_0xfc97('0x24')](function(_0x7d9287){if(_0x7d9287){_0x1f9242=_0x7d9287[_0xfc97('0x32')];if(!_0x42608d[_0xfc97('0x2f')][_0xfc97('0x33')](_0xfc97('0x34'))){_0x3298f5[_0xfc97('0x1e')]=qs[_0xfc97('0x1e')](_0x42608d[_0xfc97('0x2f')][_0xfc97('0x1e')]);_0x3298f5[_0xfc97('0x1c')]=qs['offset'](_0x42608d[_0xfc97('0x2f')][_0xfc97('0x1c')]);}return _0x74785['getFields'](_0x3298f5);}})[_0xfc97('0x24')](function(_0x50aaaf){if(_0x50aaaf){return _0x50aaaf?{'count':_0x1f9242,'rows':_0x50aaaf}:null;}})[_0xfc97('0x24')](respondWithResult(_0x39a6cc,null))['catch'](handleError(_0x39a6cc,null));};exports[_0xfc97('0x4e')]=function(_0x46b9c0,_0x4eed6a,_0x2a30b1){var _0x4e91f4={};var _0xe88956={};var _0x504371;var _0x311eda;return db[_0xfc97('0x2a')][_0xfc97('0x4a')]({'where':{'id':_0x46b9c0[_0xfc97('0x49')]['id']}})[_0xfc97('0x24')](handleEntityNotFound(_0x4eed6a,null))[_0xfc97('0x24')](function(_0x38b12b){if(_0x38b12b){_0x504371=_0x38b12b;_0xe88956[_0xfc97('0x2d')]=_['keys'](db[_0xfc97('0x4b')][_0xfc97('0x2b')]);_0xe88956[_0xfc97('0x2f')]=_[_0xfc97('0x2e')](_0x46b9c0[_0xfc97('0x2f')]);_0xe88956['filters']=_[_0xfc97('0x44')](_0xe88956[_0xfc97('0x2d')],_0xe88956['query']);_0x4e91f4[_0xfc97('0x31')]=_[_0xfc97('0x44')](_0xe88956[_0xfc97('0x2d')],qs[_0xfc97('0x30')](_0x46b9c0[_0xfc97('0x2f')][_0xfc97('0x30')]));_0x4e91f4[_0xfc97('0x31')]=_0x4e91f4[_0xfc97('0x31')]['length']?_0x4e91f4['attributes']:_0xe88956[_0xfc97('0x2d')];_0x4e91f4[_0xfc97('0x35')]=qs[_0xfc97('0x36')](_0x46b9c0[_0xfc97('0x2f')][_0xfc97('0x36')]);_0x4e91f4[_0xfc97('0x4c')]=qs['filters'](_['pick'](_0x46b9c0[_0xfc97('0x2f')],_0xe88956['filters']));if(_0x46b9c0[_0xfc97('0x2f')]['filter']){_0x4e91f4['where']=_[_0xfc97('0x3a')](_0x4e91f4[_0xfc97('0x4c')],{'$or':_[_0xfc97('0x3b')](_0x4e91f4[_0xfc97('0x31')],function(_0x12f578){var _0x79012f={};_0x79012f[_0x12f578]={'$like':'%'+_0x46b9c0[_0xfc97('0x2f')]['filter']+'%'};return _0x79012f;})});}_0x4e91f4=_['merge']({},_0x4e91f4,_0x46b9c0[_0xfc97('0x45')]);return _0x504371[_0xfc97('0x4e')](_0x4e91f4);}})[_0xfc97('0x24')](function(_0x57bb14){if(_0x57bb14){_0x311eda=_0x57bb14[_0xfc97('0x32')];if(!_0x46b9c0[_0xfc97('0x2f')][_0xfc97('0x33')](_0xfc97('0x34'))){_0x4e91f4['limit']=qs['limit'](_0x46b9c0['query'][_0xfc97('0x1e')]);_0x4e91f4[_0xfc97('0x1c')]=qs[_0xfc97('0x1c')](_0x46b9c0['query'][_0xfc97('0x1c')]);}return _0x504371[_0xfc97('0x4e')](_0x4e91f4);}})[_0xfc97('0x24')](function(_0xde6cd4){if(_0xde6cd4){return _0xde6cd4?{'count':_0x311eda,'rows':_0xde6cd4}:null;}})['then'](respondWithResult(_0x4eed6a,null))['catch'](handleError(_0x4eed6a,null));};exports[_0xfc97('0x4f')]=function(_0x353168,_0x3f6c27,_0x1886d6){var _0x5ca84f={};var _0x42ea52={};var _0x4d9b72;var _0x228d3f;return db[_0xfc97('0x2a')]['findOne']({'where':{'id':_0x353168['params']['id']}})[_0xfc97('0x24')](handleEntityNotFound(_0x3f6c27,null))[_0xfc97('0x24')](function(_0x1c52a3){if(_0x1c52a3){_0x4d9b72=_0x1c52a3;_0x42ea52['model']=_[_0xfc97('0x2e')](db[_0xfc97('0x4b')][_0xfc97('0x2b')]);_0x42ea52[_0xfc97('0x2f')]=_['keys'](_0x353168[_0xfc97('0x2f')]);_0x42ea52['filters']=_[_0xfc97('0x44')](_0x42ea52['model'],_0x42ea52[_0xfc97('0x2f')]);_0x5ca84f[_0xfc97('0x31')]=_[_0xfc97('0x44')](_0x42ea52[_0xfc97('0x2d')],qs[_0xfc97('0x30')](_0x353168[_0xfc97('0x2f')][_0xfc97('0x30')]));_0x5ca84f[_0xfc97('0x31')]=_0x5ca84f['attributes'][_0xfc97('0x32')]?_0x5ca84f[_0xfc97('0x31')]:_0x42ea52[_0xfc97('0x2d')];_0x5ca84f[_0xfc97('0x35')]=qs[_0xfc97('0x36')](_0x353168['query']['sort']);_0x5ca84f[_0xfc97('0x4c')]=qs[_0xfc97('0x37')](_['pick'](_0x353168[_0xfc97('0x2f')],_0x42ea52[_0xfc97('0x37')]));if(_0x353168[_0xfc97('0x2f')][_0xfc97('0x39')]){_0x5ca84f['where']=_[_0xfc97('0x3a')](_0x5ca84f[_0xfc97('0x4c')],{'$or':_[_0xfc97('0x3b')](_0x5ca84f['attributes'],function(_0xac71ec){var _0x39f321={};_0x39f321[_0xac71ec]={'$like':'%'+_0x353168[_0xfc97('0x2f')]['filter']+'%'};return _0x39f321;})});}_0x5ca84f=_['merge']({},_0x5ca84f,_0x353168['options']);return _0x4d9b72['getDescriptions'](_0x5ca84f);}})['then'](function(_0x5a5048){if(_0x5a5048){_0x228d3f=_0x5a5048[_0xfc97('0x32')];if(!_0x353168[_0xfc97('0x2f')][_0xfc97('0x33')]('nolimit')){_0x5ca84f['limit']=qs[_0xfc97('0x1e')](_0x353168[_0xfc97('0x2f')][_0xfc97('0x1e')]);_0x5ca84f['offset']=qs[_0xfc97('0x1c')](_0x353168[_0xfc97('0x2f')][_0xfc97('0x1c')]);}return _0x4d9b72[_0xfc97('0x4f')](_0x5ca84f);}})['then'](function(_0x5c7303){if(_0x5c7303){return _0x5c7303?{'count':_0x228d3f,'rows':_0x5c7303}:null;}})['then'](respondWithResult(_0x3f6c27,null))[_0xfc97('0x42')](handleError(_0x3f6c27,null));};exports[_0xfc97('0x50')]=function(_0x561ef0,_0x56e6ed,_0x36aa67){var _0x1b4e1e={};var _0x1a2357={};var _0x3f209b;var _0x4393b8;return db[_0xfc97('0x2a')]['findOne']({'where':{'id':_0x561ef0[_0xfc97('0x49')]['id']}})[_0xfc97('0x24')](handleEntityNotFound(_0x56e6ed,null))['then'](function(_0x544f53){if(_0x544f53){_0x3f209b=_0x544f53;_0x1a2357['model']=_['keys'](db[_0xfc97('0x51')][_0xfc97('0x2b')]);_0x1a2357[_0xfc97('0x2f')]=_[_0xfc97('0x2e')](_0x561ef0['query']);_0x1a2357[_0xfc97('0x37')]=_[_0xfc97('0x44')](_0x1a2357[_0xfc97('0x2d')],_0x1a2357[_0xfc97('0x2f')]);_0x1b4e1e[_0xfc97('0x31')]=_[_0xfc97('0x44')](_0x1a2357[_0xfc97('0x2d')],qs[_0xfc97('0x30')](_0x561ef0[_0xfc97('0x2f')][_0xfc97('0x30')]));_0x1b4e1e[_0xfc97('0x31')]=_0x1b4e1e[_0xfc97('0x31')]['length']?_0x1b4e1e[_0xfc97('0x31')]:_0x1a2357[_0xfc97('0x2d')];_0x1b4e1e['order']=qs[_0xfc97('0x36')](_0x561ef0[_0xfc97('0x2f')]['sort']);_0x1b4e1e[_0xfc97('0x4c')]=qs[_0xfc97('0x37')](_[_0xfc97('0x38')](_0x561ef0[_0xfc97('0x2f')],_0x1a2357[_0xfc97('0x37')]));if(_0x561ef0['query'][_0xfc97('0x39')]){_0x1b4e1e[_0xfc97('0x4c')]=_[_0xfc97('0x3a')](_0x1b4e1e[_0xfc97('0x4c')],{'$or':_['map'](_0x1b4e1e[_0xfc97('0x31')],function(_0x5821e1){var _0x25e69d={};_0x25e69d[_0x5821e1]={'$like':'%'+_0x561ef0[_0xfc97('0x2f')][_0xfc97('0x39')]+'%'};return _0x25e69d;})});}_0x1b4e1e=_[_0xfc97('0x3a')]({},_0x1b4e1e,_0x561ef0['options']);return _0x3f209b[_0xfc97('0x50')](_0x1b4e1e);}})[_0xfc97('0x24')](function(_0xb2faf8){if(_0xb2faf8){_0x4393b8=_0xb2faf8[_0xfc97('0x32')];if(!_0x561ef0[_0xfc97('0x2f')]['hasOwnProperty']('nolimit')){_0x1b4e1e[_0xfc97('0x1e')]=qs[_0xfc97('0x1e')](_0x561ef0[_0xfc97('0x2f')][_0xfc97('0x1e')]);_0x1b4e1e[_0xfc97('0x1c')]=qs[_0xfc97('0x1c')](_0x561ef0[_0xfc97('0x2f')][_0xfc97('0x1c')]);}return _0x3f209b[_0xfc97('0x50')](_0x1b4e1e);}})[_0xfc97('0x24')](function(_0x59b9f2){if(_0x59b9f2){return _0x59b9f2?{'count':_0x4393b8,'rows':_0x59b9f2}:null;}})[_0xfc97('0x24')](respondWithResult(_0x56e6ed,null))['catch'](handleError(_0x56e6ed,null));};exports[_0xfc97('0x52')]=function(_0x158f69,_0x4c87e5,_0x39f97d){if(_0x158f69[_0xfc97('0x48')]['id']){delete _0x158f69['body']['id'];}return db[_0xfc97('0x2a')]['findOne']({'where':{'id':_0x158f69[_0xfc97('0x49')]['id']}})['then'](handleEntityNotFound(_0x4c87e5,null))[_0xfc97('0x24')](function(_0xe39cfa){if(_0xe39cfa){return _0xe39cfa[_0xfc97('0x52')](_0x158f69[_0xfc97('0x48')][_0xfc97('0x53')]||[]);}return null;})[_0xfc97('0x24')](respondWithResult(_0x4c87e5,null))[_0xfc97('0x42')](handleError(_0x4c87e5,null));};
\ No newline at end of file
index f1819e4..60e8764 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaec0=['rimraf','../../config/environment','exports','DeskConfiguration','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xaec0,0x100));var _0x0aec=function(_0x29d888,_0x5b2ff5){_0x29d888=_0x29d888-0x0;var _0xdee830=_0xaec0[_0x29d888];return _0xdee830;};'use strict';var _=require(_0x0aec('0x0'));var util=require(_0x0aec('0x1'));var logger=require(_0x0aec('0x2'))(_0x0aec('0x3'));var moment=require(_0x0aec('0x4'));var BPromise=require(_0x0aec('0x5'));var rp=require(_0x0aec('0x6'));var fs=require('fs');var path=require(_0x0aec('0x7'));var rimraf=require(_0x0aec('0x8'));var config=require(_0x0aec('0x9'));var attributes=require('./intDeskConfiguration.attributes');module[_0x0aec('0xa')]=function(_0x10bbc6,_0x543b2a){return _0x10bbc6['define'](_0x0aec('0xb'),attributes,{'tableName':'int_desk_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2602=['../../config/environment','./intDeskConfiguration.attributes','exports','define','DeskConfiguration','int_desk_configurations','lodash','util','api','moment','request-promise','rimraf'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x2602,0x7e));var _0x2260=function(_0x567b8e,_0x4e981b){_0x567b8e=_0x567b8e-0x0;var _0x4581f9=_0x2602[_0x567b8e];return _0x4581f9;};'use strict';var _=require(_0x2260('0x0'));var util=require(_0x2260('0x1'));var logger=require('../../config/logger')(_0x2260('0x2'));var moment=require(_0x2260('0x3'));var BPromise=require('bluebird');var rp=require(_0x2260('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x2260('0x5'));var config=require(_0x2260('0x6'));var attributes=require(_0x2260('0x7'));module[_0x2260('0x8')]=function(_0x146526,_0x185328){return _0x146526[_0x2260('0x9')](_0x2260('0xa'),attributes,{'tableName':_0x2260('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 087c935..e83bc86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d62=['bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','DeskConfiguration,\x20%s,\x20%s','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment'];(function(_0x197447,_0x133364){var _0x2ea73c=function(_0x1458a4){while(--_0x1458a4){_0x197447['push'](_0x197447['shift']());}};_0x2ea73c(++_0x133364);}(_0x8d62,0xf8));var _0x28d6=function(_0x34e1b1,_0x40b900){_0x34e1b1=_0x34e1b1-0x0;var _0x4fbed9=_0x8d62[_0x34e1b1];return _0x4fbed9;};'use strict';var _=require('lodash');var util=require(_0x28d6('0x0'));var moment=require(_0x28d6('0x1'));var BPromise=require(_0x28d6('0x2'));var rs=require(_0x28d6('0x3'));var fs=require('fs');var Redis=require(_0x28d6('0x4'));var db=require(_0x28d6('0x5'))['db'];var utils=require(_0x28d6('0x6'));var logger=require(_0x28d6('0x7'))(_0x28d6('0x8'));var config=require(_0x28d6('0x9'));var jayson=require(_0x28d6('0xa'));var client=jayson[_0x28d6('0xb')][_0x28d6('0xc')]({'port':0x232a});function respondWithRpcPromise(_0xe8aa7b,_0x5c8a27,_0x1d5399){return new BPromise(function(_0xb9dccb,_0x3f3235){return client['request'](_0xe8aa7b,_0x1d5399)[_0x28d6('0xd')](function(_0x4b564f){logger[_0x28d6('0xe')](_0x28d6('0xf'),_0x5c8a27,_0x28d6('0x10'));logger[_0x28d6('0x11')](_0x28d6('0x12'),_0x5c8a27,'request\x20sent',JSON[_0x28d6('0x13')](_0x4b564f));if(_0x4b564f[_0x28d6('0x14')]){if(_0x4b564f[_0x28d6('0x14')][_0x28d6('0x15')]===0x1f4){logger[_0x28d6('0x14')](_0x28d6('0xf'),_0x5c8a27,_0x4b564f[_0x28d6('0x14')][_0x28d6('0x16')]);return _0x3f3235(_0x4b564f['error'][_0x28d6('0x16')]);}logger[_0x28d6('0x14')](_0x28d6('0xf'),_0x5c8a27,_0x4b564f['error'][_0x28d6('0x16')]);return _0xb9dccb(_0x4b564f['error'][_0x28d6('0x16')]);}else{logger[_0x28d6('0xe')]('DeskConfiguration,\x20%s,\x20%s',_0x5c8a27,_0x28d6('0x10'));_0xb9dccb(_0x4b564f[_0x28d6('0x17')][_0x28d6('0x16')]);}})[_0x28d6('0x18')](function(_0x154c4d){logger['error'](_0x28d6('0xf'),_0x5c8a27,_0x154c4d);_0x3f3235(_0x154c4d);});});}
\ No newline at end of file
+var _0x8ab2=['info','request\x20sent','debug','DeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','DeskConfiguration,\x20%s,\x20%s','lodash','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','request'];(function(_0xcf620d,_0x1ce714){var _0x2712bc=function(_0x59fdc3){while(--_0x59fdc3){_0xcf620d['push'](_0xcf620d['shift']());}};_0x2712bc(++_0x1ce714);}(_0x8ab2,0x89));var _0x28ab=function(_0xd0ce,_0x326c6a){_0xd0ce=_0xd0ce-0x0;var _0x4f4b12=_0x8ab2[_0xd0ce];return _0x4f4b12;};'use strict';var _=require(_0x28ab('0x0'));var util=require(_0x28ab('0x1'));var moment=require(_0x28ab('0x2'));var BPromise=require('bluebird');var rs=require(_0x28ab('0x3'));var fs=require('fs');var Redis=require(_0x28ab('0x4'));var db=require(_0x28ab('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x28ab('0x6'));var config=require(_0x28ab('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x28ab('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x41e7f2,_0x53d46d,_0x259484){return new BPromise(function(_0x298a42,_0x16b9fe){return client[_0x28ab('0x9')](_0x41e7f2,_0x259484)['then'](function(_0x5f3827){logger[_0x28ab('0xa')]('DeskConfiguration,\x20%s,\x20%s',_0x53d46d,_0x28ab('0xb'));logger[_0x28ab('0xc')](_0x28ab('0xd'),_0x53d46d,_0x28ab('0xb'),JSON[_0x28ab('0xe')](_0x5f3827));if(_0x5f3827[_0x28ab('0xf')]){if(_0x5f3827[_0x28ab('0xf')][_0x28ab('0x10')]===0x1f4){logger['error']('DeskConfiguration,\x20%s,\x20%s',_0x53d46d,_0x5f3827[_0x28ab('0xf')][_0x28ab('0x11')]);return _0x16b9fe(_0x5f3827['error'][_0x28ab('0x11')]);}logger[_0x28ab('0xf')]('DeskConfiguration,\x20%s,\x20%s',_0x53d46d,_0x5f3827[_0x28ab('0xf')]['message']);return _0x298a42(_0x5f3827[_0x28ab('0xf')]['message']);}else{logger[_0x28ab('0xa')]('DeskConfiguration,\x20%s,\x20%s',_0x53d46d,'request\x20sent');_0x298a42(_0x5f3827[_0x28ab('0x12')][_0x28ab('0x11')]);}})[_0x28ab('0x13')](function(_0x3b4a7c){logger['error'](_0x28ab('0x14'),_0x53d46d,_0x3b4a7c);_0x16b9fe(_0x3b4a7c);});});}
\ No newline at end of file
index 4668815..3e836e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedb7=['../../components/interaction/service','../../config/environment','./intDeskField.controller','isAuthenticated','index','get','show','create','put','delete','destroy','util','connect-timeout','express','Router','../../components/auth/service'];(function(_0x5887f2,_0x23a73c){var _0x489c62=function(_0x54ff4d){while(--_0x54ff4d){_0x5887f2['push'](_0x5887f2['shift']());}};_0x489c62(++_0x23a73c);}(_0xedb7,0x8b));var _0x7edb=function(_0x4f46a3,_0x1bf5a8){_0x4f46a3=_0x4f46a3-0x0;var _0x3d3d5a=_0xedb7[_0x4f46a3];return _0x3d3d5a;};'use strict';var multer=require('multer');var util=require(_0x7edb('0x0'));var path=require('path');var timeout=require(_0x7edb('0x1'));var express=require(_0x7edb('0x2'));var router=express[_0x7edb('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x7edb('0x4'));var interaction=require(_0x7edb('0x5'));var config=require(_0x7edb('0x6'));var controller=require(_0x7edb('0x7'));router['get']('/',auth[_0x7edb('0x8')](),controller[_0x7edb('0x9')]);router[_0x7edb('0xa')]('/:id',auth[_0x7edb('0x8')](),controller[_0x7edb('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0x7edb('0xc')]);router[_0x7edb('0xd')]('/:id',auth[_0x7edb('0x8')](),controller['update']);router[_0x7edb('0xe')]('/:id',auth[_0x7edb('0x8')](),controller[_0x7edb('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0xa988=['path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDeskField.controller','get','isAuthenticated','index','/:id','post','delete','exports','multer','util'];(function(_0x5194c8,_0x44014b){var _0x1bab63=function(_0x4d2cdc){while(--_0x4d2cdc){_0x5194c8['push'](_0x5194c8['shift']());}};_0x1bab63(++_0x44014b);}(_0xa988,0x1a7));var _0x8a98=function(_0x44300c,_0x16498e){_0x44300c=_0x44300c-0x0;var _0x59d31a=_0xa988[_0x44300c];return _0x59d31a;};'use strict';var multer=require(_0x8a98('0x0'));var util=require(_0x8a98('0x1'));var path=require(_0x8a98('0x2'));var timeout=require(_0x8a98('0x3'));var express=require(_0x8a98('0x4'));var router=express['Router']();var fs_extra=require(_0x8a98('0x5'));var auth=require(_0x8a98('0x6'));var interaction=require(_0x8a98('0x7'));var config=require(_0x8a98('0x8'));var controller=require(_0x8a98('0x9'));router[_0x8a98('0xa')]('/',auth[_0x8a98('0xb')](),controller[_0x8a98('0xc')]);router['get'](_0x8a98('0xd'),auth[_0x8a98('0xb')](),controller['show']);router[_0x8a98('0xe')]('/',auth[_0x8a98('0xb')](),controller['create']);router['put'](_0x8a98('0xd'),auth[_0x8a98('0xb')](),controller['update']);router[_0x8a98('0xf')](_0x8a98('0xd'),auth[_0x8a98('0xb')](),controller['destroy']);module[_0x8a98('0x10')]=router;
\ No newline at end of file
index 542898e..361fb64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10dd=['ENUM','string','variable','customVariable','picklist','STRING','BOOLEAN','sequelize'];(function(_0xc7e8f9,_0x1ee237){var _0x861736=function(_0x49dd54){while(--_0x49dd54){_0xc7e8f9['push'](_0xc7e8f9['shift']());}};_0x861736(++_0x1ee237);}(_0x10dd,0x187));var _0xd10d=function(_0x280db9,_0x591943){_0x280db9=_0x280db9-0x0;var _0x5e5e76=_0x10dd[_0x280db9];return _0x5e5e76;};'use strict';var Sequelize=require(_0xd10d('0x0'));module['exports']={'type':{'type':Sequelize[_0xd10d('0x1')](_0xd10d('0x2'),_0xd10d('0x3'),_0xd10d('0x4'),'keyValue',_0xd10d('0x5')),'defaultValue':_0xd10d('0x2')},'content':{'type':Sequelize[_0xd10d('0x6')]},'key':{'type':Sequelize[_0xd10d('0x6')]},'keyType':{'type':Sequelize[_0xd10d('0x1')](_0xd10d('0x2'),_0xd10d('0x3'),_0xd10d('0x4'))},'keyContent':{'type':Sequelize[_0xd10d('0x6')]},'idField':{'type':Sequelize[_0xd10d('0x6')]},'nameField':{'type':Sequelize[_0xd10d('0x6')]},'customField':{'type':Sequelize[_0xd10d('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xd10d('0x6')]}};
\ No newline at end of file
+var _0xa1d1=['string','variable','customVariable','keyValue','picklist','STRING','sequelize','ENUM'];(function(_0x98197,_0xea7356){var _0x5d9199=function(_0x135375){while(--_0x135375){_0x98197['push'](_0x98197['shift']());}};_0x5d9199(++_0xea7356);}(_0xa1d1,0x176));var _0x1a1d=function(_0x40171b,_0x3f9fb2){_0x40171b=_0x40171b-0x0;var _0x847390=_0xa1d1[_0x40171b];return _0x847390;};'use strict';var Sequelize=require(_0x1a1d('0x0'));module['exports']={'type':{'type':Sequelize[_0x1a1d('0x1')](_0x1a1d('0x2'),_0x1a1d('0x3'),_0x1a1d('0x4'),_0x1a1d('0x5'),_0x1a1d('0x6')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x1a1d('0x7')]},'keyType':{'type':Sequelize[_0x1a1d('0x1')]('string',_0x1a1d('0x3'),_0x1a1d('0x4'))},'keyContent':{'type':Sequelize[_0x1a1d('0x7')]},'idField':{'type':Sequelize[_0x1a1d('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 4a8af48..c53ed7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35f5=['index','rawAttributes','fieldName','type','map','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','DeskField','includeAll','findAll','rows','show','include','find','catch','create','body','params','eml-format','zip-dir','fast-json-patch','request-promise','moment','path','sox','ejs','lodash','squel','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','json','undefined','count','offset','limit','status','set','Content-Range','apply','update','then','destroy','stack','name','send'];(function(_0x45a9ec,_0x125a96){var _0x546581=function(_0x2dece0){while(--_0x2dece0){_0x45a9ec['push'](_0x45a9ec['shift']());}};_0x546581(++_0x125a96);}(_0x35f5,0x100));var _0x535f=function(_0x2390bd,_0x212fbd){_0x2390bd=_0x2390bd-0x0;var _0x3a969d=_0x35f5[_0x2390bd];return _0x3a969d;};'use strict';var emlformat=require(_0x535f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x535f('0x1'));var jsonpatch=require(_0x535f('0x2'));var rp=require(_0x535f('0x3'));var moment=require(_0x535f('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x535f('0x5'));var sox=require(_0x535f('0x6'));var csv=require('to-csv');var ejs=require(_0x535f('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x535f('0x8'));var squel=require(_0x535f('0x9'));var crypto=require('crypto');var jsforce=require(_0x535f('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x535f('0xb'));var querystring=require(_0x535f('0xc'));var Papa=require(_0x535f('0xd'));var Redis=require(_0x535f('0xe'));var authService=require(_0x535f('0xf'));var qs=require(_0x535f('0x10'));var as=require(_0x535f('0x11'));var hardwareService=require(_0x535f('0x12'));var logger=require('../../config/logger')(_0x535f('0x13'));var utils=require(_0x535f('0x14'));var config=require(_0x535f('0x15'));var licenseUtil=require(_0x535f('0x16'));var db=require(_0x535f('0x17'))['db'];function respondWithStatusCode(_0x2d24cf,_0x54a095){_0x54a095=_0x54a095||0xcc;return function(_0x1cd819){if(_0x1cd819){return _0x2d24cf['sendStatus'](_0x54a095);}return _0x2d24cf['status'](_0x54a095)[_0x535f('0x18')]();};}function respondWithResult(_0x465521,_0x423f95){_0x423f95=_0x423f95||0xc8;return function(_0x47e080){if(_0x47e080){return _0x465521['status'](_0x423f95)[_0x535f('0x19')](_0x47e080);}};}function respondWithFilteredResult(_0x4a97fc,_0x3119e1){return function(_0x3ea018){if(_0x3ea018){var _0x592a67=typeof _0x3119e1['offset']===_0x535f('0x1a')&&typeof _0x3119e1['limit']===_0x535f('0x1a');var _0xa6c20b=_0x3ea018[_0x535f('0x1b')];var _0x16f614=_0x592a67?0x0:_0x3119e1[_0x535f('0x1c')];var _0x3b4f3f=_0x592a67?_0x3ea018[_0x535f('0x1b')]:_0x3119e1[_0x535f('0x1c')]+_0x3119e1[_0x535f('0x1d')];var _0x20655c;if(_0x3b4f3f>=_0xa6c20b){_0x3b4f3f=_0xa6c20b;_0x20655c=0xc8;}else{_0x20655c=0xce;}_0x4a97fc[_0x535f('0x1e')](_0x20655c);return _0x4a97fc[_0x535f('0x1f')](_0x535f('0x20'),_0x16f614+'-'+_0x3b4f3f+'/'+_0xa6c20b)[_0x535f('0x19')](_0x3ea018);}return null;};}function patchUpdates(_0xa59e26){return function(_0xe13d3e){try{jsonpatch[_0x535f('0x21')](_0xe13d3e,_0xa59e26,!![]);}catch(_0x1a8623){return BPromise['reject'](_0x1a8623);}return _0xe13d3e['save']();};}function saveUpdates(_0x2b3297,_0x5f2b70){return function(_0x1f3938){if(_0x1f3938){return _0x1f3938[_0x535f('0x22')](_0x2b3297)[_0x535f('0x23')](function(_0x2f02b1){return _0x2f02b1;});}return null;};}function removeEntity(_0x362a78,_0x556512){return function(_0x45eb4b){if(_0x45eb4b){return _0x45eb4b[_0x535f('0x24')]()['then'](function(){_0x362a78[_0x535f('0x1e')](0xcc)[_0x535f('0x18')]();});}};}function handleEntityNotFound(_0xa6cf8,_0x293e05){return function(_0x49de3a){if(!_0x49de3a){_0xa6cf8['sendStatus'](0x194);}return _0x49de3a;};}function handleError(_0x43a3e1,_0x573ef0){_0x573ef0=_0x573ef0||0x1f4;return function(_0x1896e8){logger['error'](_0x1896e8[_0x535f('0x25')]);if(_0x1896e8[_0x535f('0x26')]){delete _0x1896e8[_0x535f('0x26')];}_0x43a3e1['status'](_0x573ef0)[_0x535f('0x27')](_0x1896e8);};}exports[_0x535f('0x28')]=function(_0xc8b843,_0x5105ee){var _0x122b7d={},_0x38b464={},_0x285b9d={'count':0x0,'rows':[]};var _0x23c5e4=_['map'](db['DeskField'][_0x535f('0x29')],function(_0x2af771){return{'name':_0x2af771[_0x535f('0x2a')],'type':_0x2af771[_0x535f('0x2b')]['key']};});_0x38b464['model']=_[_0x535f('0x2c')](_0x23c5e4,'name');_0x38b464[_0x535f('0x2d')]=_[_0x535f('0x2e')](_0xc8b843[_0x535f('0x2d')]);_0x38b464[_0x535f('0x2f')]=_['intersection'](_0x38b464[_0x535f('0x30')],_0x38b464[_0x535f('0x2d')]);_0x122b7d[_0x535f('0x31')]=_[_0x535f('0x32')](_0x38b464[_0x535f('0x30')],qs[_0x535f('0x33')](_0xc8b843[_0x535f('0x2d')][_0x535f('0x33')]));_0x122b7d[_0x535f('0x31')]=_0x122b7d[_0x535f('0x31')][_0x535f('0x34')]?_0x122b7d[_0x535f('0x31')]:_0x38b464[_0x535f('0x30')];if(!_0xc8b843[_0x535f('0x2d')][_0x535f('0x35')](_0x535f('0x36'))){_0x122b7d[_0x535f('0x1d')]=qs[_0x535f('0x1d')](_0xc8b843[_0x535f('0x2d')][_0x535f('0x1d')]);_0x122b7d['offset']=qs[_0x535f('0x1c')](_0xc8b843[_0x535f('0x2d')][_0x535f('0x1c')]);}_0x122b7d[_0x535f('0x37')]=qs['sort'](_0xc8b843[_0x535f('0x2d')][_0x535f('0x38')]);_0x122b7d[_0x535f('0x39')]=qs[_0x535f('0x2f')](_[_0x535f('0x3a')](_0xc8b843[_0x535f('0x2d')],_0x38b464[_0x535f('0x2f')]),_0x23c5e4);if(_0xc8b843[_0x535f('0x2d')][_0x535f('0x3b')]){_0x122b7d[_0x535f('0x39')]=_[_0x535f('0x3c')](_0x122b7d[_0x535f('0x39')],{'$or':_[_0x535f('0x2c')](_0x23c5e4,function(_0xd7f9e){if(_0xd7f9e['type']!==_0x535f('0x3d')){var _0x46a825={};_0x46a825[_0xd7f9e[_0x535f('0x26')]]={'$like':'%'+_0xc8b843[_0x535f('0x2d')][_0x535f('0x3b')]+'%'};return _0x46a825;}})});}_0x122b7d=_[_0x535f('0x3c')]({},_0x122b7d,_0xc8b843[_0x535f('0x3e')]);var _0x3e3d4d={'where':_0x122b7d[_0x535f('0x39')]};return db[_0x535f('0x3f')][_0x535f('0x1b')](_0x3e3d4d)[_0x535f('0x23')](function(_0x1b7d05){_0x285b9d[_0x535f('0x1b')]=_0x1b7d05;if(_0xc8b843['query'][_0x535f('0x40')]){_0x122b7d['include']=[{'all':!![]}];}return db['DeskField'][_0x535f('0x41')](_0x122b7d);})[_0x535f('0x23')](function(_0x534370){_0x285b9d[_0x535f('0x42')]=_0x534370;return _0x285b9d;})[_0x535f('0x23')](respondWithFilteredResult(_0x5105ee,_0x122b7d))['catch'](handleError(_0x5105ee,null));};exports[_0x535f('0x43')]=function(_0x59dec0,_0x4bf123){var _0x53fc90={'raw':!![],'where':{'id':_0x59dec0['params']['id']}},_0x9868e5={};_0x9868e5['model']=_['keys'](db[_0x535f('0x3f')][_0x535f('0x29')]);_0x9868e5[_0x535f('0x2d')]=_[_0x535f('0x2e')](_0x59dec0[_0x535f('0x2d')]);_0x9868e5[_0x535f('0x2f')]=_['intersection'](_0x9868e5['model'],_0x9868e5['query']);_0x53fc90[_0x535f('0x31')]=_[_0x535f('0x32')](_0x9868e5['model'],qs[_0x535f('0x33')](_0x59dec0[_0x535f('0x2d')][_0x535f('0x33')]));_0x53fc90[_0x535f('0x31')]=_0x53fc90[_0x535f('0x31')][_0x535f('0x34')]?_0x53fc90[_0x535f('0x31')]:_0x9868e5[_0x535f('0x30')];if(_0x59dec0[_0x535f('0x2d')]['includeAll']){_0x53fc90[_0x535f('0x44')]=[{'all':!![]}];}_0x53fc90=_['merge']({},_0x53fc90,_0x59dec0[_0x535f('0x3e')]);return db['DeskField'][_0x535f('0x45')](_0x53fc90)[_0x535f('0x23')](handleEntityNotFound(_0x4bf123,null))['then'](respondWithResult(_0x4bf123,null))[_0x535f('0x46')](handleError(_0x4bf123,null));};exports['create']=function(_0x438b9a,_0x3f491d){return db[_0x535f('0x3f')][_0x535f('0x47')](_0x438b9a[_0x535f('0x48')],{})[_0x535f('0x23')](respondWithResult(_0x3f491d,0xc9))['catch'](handleError(_0x3f491d,null));};exports[_0x535f('0x22')]=function(_0x51f4d4,_0x517623){if(_0x51f4d4['body']['id']){delete _0x51f4d4['body']['id'];}return db['DeskField']['find']({'where':{'id':_0x51f4d4[_0x535f('0x49')]['id']}})['then'](handleEntityNotFound(_0x517623,null))['then'](saveUpdates(_0x51f4d4['body'],null))[_0x535f('0x23')](respondWithResult(_0x517623,null))[_0x535f('0x46')](handleError(_0x517623,null));};exports[_0x535f('0x24')]=function(_0x21d73f,_0x33e338){return db[_0x535f('0x3f')]['find']({'where':{'id':_0x21d73f['params']['id']}})[_0x535f('0x23')](handleEntityNotFound(_0x33e338,null))[_0x535f('0x23')](removeEntity(_0x33e338,null))['catch'](handleError(_0x33e338,null));};
\ No newline at end of file
+var _0x8dbd=['status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','error','stack','name','index','map','DeskField','rawAttributes','type','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','order','where','pick','filter','merge','options','includeAll','findAll','rows','catch','include','find','create','body','params','destroy','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/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus'];(function(_0x3c962c,_0x59b73a){var _0x5e1ccb=function(_0x3eaa21){while(--_0x3eaa21){_0x3c962c['push'](_0x3c962c['shift']());}};_0x5e1ccb(++_0x59b73a);}(_0x8dbd,0x159));var _0xd8db=function(_0x47678c,_0x4af096){_0x47678c=_0x47678c-0x0;var _0xee9b9a=_0x8dbd[_0x47678c];return _0xee9b9a;};'use strict';var emlformat=require(_0xd8db('0x0'));var rimraf=require(_0xd8db('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd8db('0x2'));var rp=require(_0xd8db('0x3'));var moment=require(_0xd8db('0x4'));var BPromise=require(_0xd8db('0x5'));var Mustache=require(_0xd8db('0x6'));var util=require(_0xd8db('0x7'));var path=require(_0xd8db('0x8'));var sox=require(_0xd8db('0x9'));var csv=require(_0xd8db('0xa'));var ejs=require(_0xd8db('0xb'));var fs=require('fs');var fs_extra=require(_0xd8db('0xc'));var _=require(_0xd8db('0xd'));var squel=require(_0xd8db('0xe'));var crypto=require(_0xd8db('0xf'));var jsforce=require(_0xd8db('0x10'));var deskjs=require(_0xd8db('0x11'));var toCsv=require(_0xd8db('0xa'));var querystring=require('querystring');var Papa=require(_0xd8db('0x12'));var Redis=require(_0xd8db('0x13'));var authService=require(_0xd8db('0x14'));var qs=require(_0xd8db('0x15'));var as=require(_0xd8db('0x16'));var hardwareService=require(_0xd8db('0x17'));var logger=require(_0xd8db('0x18'))(_0xd8db('0x19'));var utils=require(_0xd8db('0x1a'));var config=require(_0xd8db('0x1b'));var licenseUtil=require('../../config/license/util');var db=require(_0xd8db('0x1c'))['db'];function respondWithStatusCode(_0x23b404,_0x300fbd){_0x300fbd=_0x300fbd||0xcc;return function(_0xbfeb55){if(_0xbfeb55){return _0x23b404[_0xd8db('0x1d')](_0x300fbd);}return _0x23b404[_0xd8db('0x1e')](_0x300fbd)[_0xd8db('0x1f')]();};}function respondWithResult(_0x1eaa93,_0x491503){_0x491503=_0x491503||0xc8;return function(_0x5c0512){if(_0x5c0512){return _0x1eaa93[_0xd8db('0x1e')](_0x491503)[_0xd8db('0x20')](_0x5c0512);}};}function respondWithFilteredResult(_0x4c10a6,_0x221681){return function(_0x2eeed7){if(_0x2eeed7){var _0x54ad20=typeof _0x221681[_0xd8db('0x21')]===_0xd8db('0x22')&&typeof _0x221681[_0xd8db('0x23')]===_0xd8db('0x22');var _0x29d0b8=_0x2eeed7[_0xd8db('0x24')];var _0x2d0a0c=_0x54ad20?0x0:_0x221681[_0xd8db('0x21')];var _0x29026e=_0x54ad20?_0x2eeed7[_0xd8db('0x24')]:_0x221681[_0xd8db('0x21')]+_0x221681['limit'];var _0x4b5c1e;if(_0x29026e>=_0x29d0b8){_0x29026e=_0x29d0b8;_0x4b5c1e=0xc8;}else{_0x4b5c1e=0xce;}_0x4c10a6[_0xd8db('0x1e')](_0x4b5c1e);return _0x4c10a6[_0xd8db('0x25')](_0xd8db('0x26'),_0x2d0a0c+'-'+_0x29026e+'/'+_0x29d0b8)[_0xd8db('0x20')](_0x2eeed7);}return null;};}function patchUpdates(_0x2207bd){return function(_0xe8a2f){try{jsonpatch[_0xd8db('0x27')](_0xe8a2f,_0x2207bd,!![]);}catch(_0x44041c){return BPromise[_0xd8db('0x28')](_0x44041c);}return _0xe8a2f[_0xd8db('0x29')]();};}function saveUpdates(_0xf901a5,_0x1b32d9){return function(_0x11db7a){if(_0x11db7a){return _0x11db7a['update'](_0xf901a5)[_0xd8db('0x2a')](function(_0xd540b){return _0xd540b;});}return null;};}function removeEntity(_0x312024,_0x107292){return function(_0x2524ea){if(_0x2524ea){return _0x2524ea['destroy']()['then'](function(){_0x312024[_0xd8db('0x1e')](0xcc)[_0xd8db('0x1f')]();});}};}function handleEntityNotFound(_0x269f42,_0x65940e){return function(_0x6fae60){if(!_0x6fae60){_0x269f42[_0xd8db('0x1d')](0x194);}return _0x6fae60;};}function handleError(_0x595257,_0x1bbefe){_0x1bbefe=_0x1bbefe||0x1f4;return function(_0x5bbb91){logger[_0xd8db('0x2b')](_0x5bbb91[_0xd8db('0x2c')]);if(_0x5bbb91[_0xd8db('0x2d')]){delete _0x5bbb91['name'];}_0x595257[_0xd8db('0x1e')](_0x1bbefe)['send'](_0x5bbb91);};}exports[_0xd8db('0x2e')]=function(_0x3249f3,_0x90e6b6){var _0x45bfbe={},_0x1f0e11={},_0x4a866f={'count':0x0,'rows':[]};var _0x23020b=_[_0xd8db('0x2f')](db[_0xd8db('0x30')][_0xd8db('0x31')],function(_0x4f0024){return{'name':_0x4f0024['fieldName'],'type':_0x4f0024[_0xd8db('0x32')]['key']};});_0x1f0e11[_0xd8db('0x33')]=_[_0xd8db('0x2f')](_0x23020b,'name');_0x1f0e11['query']=_[_0xd8db('0x34')](_0x3249f3[_0xd8db('0x35')]);_0x1f0e11[_0xd8db('0x36')]=_['intersection'](_0x1f0e11[_0xd8db('0x33')],_0x1f0e11[_0xd8db('0x35')]);_0x45bfbe['attributes']=_[_0xd8db('0x37')](_0x1f0e11[_0xd8db('0x33')],qs[_0xd8db('0x38')](_0x3249f3[_0xd8db('0x35')][_0xd8db('0x38')]));_0x45bfbe[_0xd8db('0x39')]=_0x45bfbe[_0xd8db('0x39')]['length']?_0x45bfbe[_0xd8db('0x39')]:_0x1f0e11[_0xd8db('0x33')];if(!_0x3249f3['query'][_0xd8db('0x3a')]('nolimit')){_0x45bfbe[_0xd8db('0x23')]=qs['limit'](_0x3249f3[_0xd8db('0x35')][_0xd8db('0x23')]);_0x45bfbe[_0xd8db('0x21')]=qs[_0xd8db('0x21')](_0x3249f3[_0xd8db('0x35')][_0xd8db('0x21')]);}_0x45bfbe[_0xd8db('0x3b')]=qs['sort'](_0x3249f3['query']['sort']);_0x45bfbe[_0xd8db('0x3c')]=qs[_0xd8db('0x36')](_[_0xd8db('0x3d')](_0x3249f3['query'],_0x1f0e11['filters']),_0x23020b);if(_0x3249f3[_0xd8db('0x35')][_0xd8db('0x3e')]){_0x45bfbe[_0xd8db('0x3c')]=_[_0xd8db('0x3f')](_0x45bfbe[_0xd8db('0x3c')],{'$or':_[_0xd8db('0x2f')](_0x23020b,function(_0x2db4e7){if(_0x2db4e7[_0xd8db('0x32')]!=='VIRTUAL'){var _0x265010={};_0x265010[_0x2db4e7[_0xd8db('0x2d')]]={'$like':'%'+_0x3249f3[_0xd8db('0x35')][_0xd8db('0x3e')]+'%'};return _0x265010;}})});}_0x45bfbe=_[_0xd8db('0x3f')]({},_0x45bfbe,_0x3249f3[_0xd8db('0x40')]);var _0x51f06c={'where':_0x45bfbe['where']};return db[_0xd8db('0x30')][_0xd8db('0x24')](_0x51f06c)[_0xd8db('0x2a')](function(_0x52ef63){_0x4a866f[_0xd8db('0x24')]=_0x52ef63;if(_0x3249f3[_0xd8db('0x35')][_0xd8db('0x41')]){_0x45bfbe['include']=[{'all':!![]}];}return db[_0xd8db('0x30')][_0xd8db('0x42')](_0x45bfbe);})[_0xd8db('0x2a')](function(_0x2f7a0c){_0x4a866f[_0xd8db('0x43')]=_0x2f7a0c;return _0x4a866f;})['then'](respondWithFilteredResult(_0x90e6b6,_0x45bfbe))[_0xd8db('0x44')](handleError(_0x90e6b6,null));};exports['show']=function(_0x3e9565,_0x48e63d){var _0x5d69b8={'raw':!![],'where':{'id':_0x3e9565['params']['id']}},_0x1e7dd8={};_0x1e7dd8[_0xd8db('0x33')]=_[_0xd8db('0x34')](db[_0xd8db('0x30')][_0xd8db('0x31')]);_0x1e7dd8['query']=_[_0xd8db('0x34')](_0x3e9565[_0xd8db('0x35')]);_0x1e7dd8[_0xd8db('0x36')]=_[_0xd8db('0x37')](_0x1e7dd8[_0xd8db('0x33')],_0x1e7dd8[_0xd8db('0x35')]);_0x5d69b8[_0xd8db('0x39')]=_['intersection'](_0x1e7dd8[_0xd8db('0x33')],qs[_0xd8db('0x38')](_0x3e9565['query'][_0xd8db('0x38')]));_0x5d69b8[_0xd8db('0x39')]=_0x5d69b8[_0xd8db('0x39')]['length']?_0x5d69b8[_0xd8db('0x39')]:_0x1e7dd8['model'];if(_0x3e9565[_0xd8db('0x35')][_0xd8db('0x41')]){_0x5d69b8[_0xd8db('0x45')]=[{'all':!![]}];}_0x5d69b8=_[_0xd8db('0x3f')]({},_0x5d69b8,_0x3e9565['options']);return db[_0xd8db('0x30')][_0xd8db('0x46')](_0x5d69b8)[_0xd8db('0x2a')](handleEntityNotFound(_0x48e63d,null))[_0xd8db('0x2a')](respondWithResult(_0x48e63d,null))['catch'](handleError(_0x48e63d,null));};exports[_0xd8db('0x47')]=function(_0x10f700,_0x3be9c3){return db['DeskField']['create'](_0x10f700[_0xd8db('0x48')],{})[_0xd8db('0x2a')](respondWithResult(_0x3be9c3,0xc9))[_0xd8db('0x44')](handleError(_0x3be9c3,null));};exports['update']=function(_0x215907,_0x57cd75){if(_0x215907['body']['id']){delete _0x215907[_0xd8db('0x48')]['id'];}return db['DeskField'][_0xd8db('0x46')]({'where':{'id':_0x215907[_0xd8db('0x49')]['id']}})[_0xd8db('0x2a')](handleEntityNotFound(_0x57cd75,null))[_0xd8db('0x2a')](saveUpdates(_0x215907[_0xd8db('0x48')],null))[_0xd8db('0x2a')](respondWithResult(_0x57cd75,null))[_0xd8db('0x44')](handleError(_0x57cd75,null));};exports[_0xd8db('0x4a')]=function(_0x206f34,_0x14bef4){return db[_0xd8db('0x30')][_0xd8db('0x46')]({'where':{'id':_0x206f34[_0xd8db('0x49')]['id']}})[_0xd8db('0x2a')](handleEntityNotFound(_0x14bef4,null))[_0xd8db('0x2a')](removeEntity(_0x14bef4,null))['catch'](handleError(_0x14bef4,null));};
\ No newline at end of file
index b8ffc17..351a698 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe6a4=['rimraf','../../config/environment','./intDeskField.attributes','define','DeskField','int_desk_fields','idField','FieldId','lodash','../../config/logger','moment','bluebird','request-promise'];(function(_0x14eb63,_0x2f28b2){var _0x1cfb47=function(_0x2f5aa7){while(--_0x2f5aa7){_0x14eb63['push'](_0x14eb63['shift']());}};_0x1cfb47(++_0x2f28b2);}(_0xe6a4,0x14d));var _0x4e6a=function(_0x42e7c0,_0x1a6f9c){_0x42e7c0=_0x42e7c0-0x0;var _0x4994f8=_0xe6a4[_0x42e7c0];return _0x4994f8;};'use strict';var _=require(_0x4e6a('0x0'));var util=require('util');var logger=require(_0x4e6a('0x1'))('api');var moment=require(_0x4e6a('0x2'));var BPromise=require(_0x4e6a('0x3'));var rp=require(_0x4e6a('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4e6a('0x5'));var config=require(_0x4e6a('0x6'));var attributes=require(_0x4e6a('0x7'));module['exports']=function(_0x870aa2,_0x36ea09){return _0x870aa2[_0x4e6a('0x8')](_0x4e6a('0x9'),attributes,{'tableName':_0x4e6a('0xa'),'paranoid':![],'indexes':[{'name':'desk_unique_index','fields':[_0x4e6a('0xb'),_0x4e6a('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xd91d=['api','moment','bluebird','request-promise','../../config/environment','./intDeskField.attributes','define','idField','FieldId','lodash','util','../../config/logger'];(function(_0xde192f,_0x3dfb99){var _0x49dc0b=function(_0x526ef0){while(--_0x526ef0){_0xde192f['push'](_0xde192f['shift']());}};_0x49dc0b(++_0x3dfb99);}(_0xd91d,0xed));var _0xdd91=function(_0x4fb1cd,_0x461989){_0x4fb1cd=_0x4fb1cd-0x0;var _0x322e3e=_0xd91d[_0x4fb1cd];return _0x322e3e;};'use strict';var _=require(_0xdd91('0x0'));var util=require(_0xdd91('0x1'));var logger=require(_0xdd91('0x2'))(_0xdd91('0x3'));var moment=require(_0xdd91('0x4'));var BPromise=require(_0xdd91('0x5'));var rp=require(_0xdd91('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xdd91('0x7'));var attributes=require(_0xdd91('0x8'));module['exports']=function(_0x40e864,_0x13779d){return _0x40e864[_0xdd91('0x9')]('DeskField',attributes,{'tableName':'int_desk_fields','paranoid':![],'indexes':[{'name':'desk_unique_index','fields':[_0xdd91('0xa'),_0xdd91('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 7c38a43..48e39d5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x593f=['stringify','error','code','message','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','client','http','then','info','DeskField,\x20%s,\x20%s','request\x20sent','DeskField,\x20%s,\x20%s,\x20%s'];(function(_0x30139b,_0x451d84){var _0x4682aa=function(_0x7edbc3){while(--_0x7edbc3){_0x30139b['push'](_0x30139b['shift']());}};_0x4682aa(++_0x451d84);}(_0x593f,0x78));var _0xf593=function(_0x4e5552,_0x19ec4e){_0x4e5552=_0x4e5552-0x0;var _0x60a338=_0x593f[_0x4e5552];return _0x60a338;};'use strict';var _=require(_0xf593('0x0'));var util=require(_0xf593('0x1'));var moment=require(_0xf593('0x2'));var BPromise=require('bluebird');var rs=require(_0xf593('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf593('0x4'))['db'];var utils=require(_0xf593('0x5'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xf593('0x6')][_0xf593('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x154470,_0x1dd5ed,_0x424dcc){return new BPromise(function(_0x46fdc6,_0xd81dbc){return client['request'](_0x154470,_0x424dcc)[_0xf593('0x8')](function(_0x34d1aa){logger[_0xf593('0x9')](_0xf593('0xa'),_0x1dd5ed,_0xf593('0xb'));logger['debug'](_0xf593('0xc'),_0x1dd5ed,_0xf593('0xb'),JSON[_0xf593('0xd')](_0x34d1aa));if(_0x34d1aa[_0xf593('0xe')]){if(_0x34d1aa[_0xf593('0xe')][_0xf593('0xf')]===0x1f4){logger[_0xf593('0xe')](_0xf593('0xa'),_0x1dd5ed,_0x34d1aa[_0xf593('0xe')][_0xf593('0x10')]);return _0xd81dbc(_0x34d1aa[_0xf593('0xe')][_0xf593('0x10')]);}logger[_0xf593('0xe')](_0xf593('0xa'),_0x1dd5ed,_0x34d1aa[_0xf593('0xe')][_0xf593('0x10')]);return _0x46fdc6(_0x34d1aa['error'][_0xf593('0x10')]);}else{logger[_0xf593('0x9')]('DeskField,\x20%s,\x20%s',_0x1dd5ed,_0xf593('0xb'));_0x46fdc6(_0x34d1aa[_0xf593('0x11')][_0xf593('0x10')]);}})[_0xf593('0x12')](function(_0x1aa31c){logger[_0xf593('0xe')](_0xf593('0xa'),_0x1dd5ed,_0x1aa31c);_0xd81dbc(_0x1aa31c);});});}
\ No newline at end of file
+var _0xfd89=['catch','lodash','util','bluebird','ioredis','rpc','../../config/environment','jayson/promise','client','http','request','then','info','DeskField,\x20%s,\x20%s','request\x20sent','DeskField,\x20%s,\x20%s,\x20%s','error','code','message','result'];(function(_0x1e4360,_0x930b9b){var _0x31e6b4=function(_0x49dd8e){while(--_0x49dd8e){_0x1e4360['push'](_0x1e4360['shift']());}};_0x31e6b4(++_0x930b9b);}(_0xfd89,0xf1));var _0x9fd8=function(_0x14ea90,_0x274232){_0x14ea90=_0x14ea90-0x0;var _0x44c33c=_0xfd89[_0x14ea90];return _0x44c33c;};'use strict';var _=require(_0x9fd8('0x0'));var util=require(_0x9fd8('0x1'));var moment=require('moment');var BPromise=require(_0x9fd8('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9fd8('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x9fd8('0x4'));var config=require(_0x9fd8('0x5'));var jayson=require(_0x9fd8('0x6'));var client=jayson[_0x9fd8('0x7')][_0x9fd8('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x360233,_0x4c041b,_0x495e7f){return new BPromise(function(_0x1ab1c1,_0x286858){return client[_0x9fd8('0x9')](_0x360233,_0x495e7f)[_0x9fd8('0xa')](function(_0x5ff81b){logger[_0x9fd8('0xb')](_0x9fd8('0xc'),_0x4c041b,_0x9fd8('0xd'));logger['debug'](_0x9fd8('0xe'),_0x4c041b,_0x9fd8('0xd'),JSON['stringify'](_0x5ff81b));if(_0x5ff81b[_0x9fd8('0xf')]){if(_0x5ff81b[_0x9fd8('0xf')][_0x9fd8('0x10')]===0x1f4){logger[_0x9fd8('0xf')]('DeskField,\x20%s,\x20%s',_0x4c041b,_0x5ff81b[_0x9fd8('0xf')][_0x9fd8('0x11')]);return _0x286858(_0x5ff81b[_0x9fd8('0xf')]['message']);}logger['error'](_0x9fd8('0xc'),_0x4c041b,_0x5ff81b[_0x9fd8('0xf')]['message']);return _0x1ab1c1(_0x5ff81b['error'][_0x9fd8('0x11')]);}else{logger['info'](_0x9fd8('0xc'),_0x4c041b,_0x9fd8('0xd'));_0x1ab1c1(_0x5ff81b[_0x9fd8('0x12')][_0x9fd8('0x11')]);}})[_0x9fd8('0x13')](function(_0x1f356a){logger[_0x9fd8('0xf')]('DeskField,\x20%s,\x20%s',_0x4c041b,_0x1f356a);_0x286858(_0x1f356a);});});}
\ No newline at end of file
index 281200e..38d1cae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4902=['connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Account.controller','isAuthenticated','get','/:id','show','/:id/configurations','getConfigurations','/:id/fields','getFields','create','post','addConfiguration','put','delete','destroy','exports','util','path'];(function(_0x303bec,_0x24266d){var _0x2d7bcd=function(_0x5f491e){while(--_0x5f491e){_0x303bec['push'](_0x303bec['shift']());}};_0x2d7bcd(++_0x24266d);}(_0x4902,0x1c0));var _0x2490=function(_0x54d80e,_0x19661e){_0x54d80e=_0x54d80e-0x0;var _0x9b8de3=_0x4902[_0x54d80e];return _0x9b8de3;};'use strict';var multer=require('multer');var util=require(_0x2490('0x0'));var path=require(_0x2490('0x1'));var timeout=require(_0x2490('0x2'));var express=require(_0x2490('0x3'));var router=express[_0x2490('0x4')]();var fs_extra=require(_0x2490('0x5'));var auth=require(_0x2490('0x6'));var interaction=require(_0x2490('0x7'));var config=require(_0x2490('0x8'));var controller=require(_0x2490('0x9'));router['get']('/',auth[_0x2490('0xa')](),controller['index']);router[_0x2490('0xb')](_0x2490('0xc'),auth[_0x2490('0xa')](),controller[_0x2490('0xd')]);router[_0x2490('0xb')](_0x2490('0xe'),auth['isAuthenticated'](),controller[_0x2490('0xf')]);router[_0x2490('0xb')](_0x2490('0x10'),auth['isAuthenticated'](),controller[_0x2490('0x11')]);router['post']('/',auth[_0x2490('0xa')](),controller[_0x2490('0x12')]);router[_0x2490('0x13')](_0x2490('0xe'),auth[_0x2490('0xa')](),controller[_0x2490('0x14')]);router[_0x2490('0x15')](_0x2490('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x2490('0x16')](_0x2490('0xc'),auth['isAuthenticated'](),controller[_0x2490('0x17')]);module[_0x2490('0x18')]=router;
\ No newline at end of file
+var _0x10b7=['/:id/fields','getFields','post','addConfiguration','put','update','delete','destroy','exports','util','path','connect-timeout','express','../../components/auth/service','../../config/environment','./intDynamics365Account.controller','get','isAuthenticated','index','/:id','/:id/configurations','getConfigurations'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0x10b7,0x13d));var _0x710b=function(_0x5d4756,_0x5127f4){_0x5d4756=_0x5d4756-0x0;var _0x5e9e26=_0x10b7[_0x5d4756];return _0x5e9e26;};'use strict';var multer=require('multer');var util=require(_0x710b('0x0'));var path=require(_0x710b('0x1'));var timeout=require(_0x710b('0x2'));var express=require(_0x710b('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x710b('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x710b('0x5'));var controller=require(_0x710b('0x6'));router[_0x710b('0x7')]('/',auth[_0x710b('0x8')](),controller[_0x710b('0x9')]);router[_0x710b('0x7')](_0x710b('0xa'),auth[_0x710b('0x8')](),controller['show']);router[_0x710b('0x7')](_0x710b('0xb'),auth['isAuthenticated'](),controller[_0x710b('0xc')]);router['get'](_0x710b('0xd'),auth['isAuthenticated'](),controller[_0x710b('0xe')]);router[_0x710b('0xf')]('/',auth[_0x710b('0x8')](),controller['create']);router[_0x710b('0xf')](_0x710b('0xb'),auth[_0x710b('0x8')](),controller[_0x710b('0x10')]);router[_0x710b('0x11')](_0x710b('0xa'),auth[_0x710b('0x8')](),controller[_0x710b('0x12')]);router[_0x710b('0x13')]('/:id',auth[_0x710b('0x8')](),controller[_0x710b('0x14')]);module[_0x710b('0x15')]=router;
\ No newline at end of file
index c9eaec2..f99ccab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb46f=['STRING','BOOLEAN','sequelize','exports'];(function(_0x3217f8,_0x5b1590){var _0xdd3c6d=function(_0x53176b){while(--_0x53176b){_0x3217f8['push'](_0x3217f8['shift']());}};_0xdd3c6d(++_0x5b1590);}(_0xb46f,0xb6));var _0xfb46=function(_0x33f16a,_0x594322){_0x33f16a=_0x33f16a-0x0;var _0x22a6e0=_0xb46f[_0x33f16a];return _0x22a6e0;};'use strict';var Sequelize=require(_0xfb46('0x0'));module[_0xfb46('0x1')]={'name':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xfb46('0x2')]},'password':{'type':Sequelize[_0xfb46('0x2')]},'remoteUri':{'type':Sequelize[_0xfb46('0x2')]},'tenantId':{'type':Sequelize[_0xfb46('0x2')]},'clientId':{'type':Sequelize[_0xfb46('0x2')]},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xfb46('0x2')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'modernAuthentication':{'type':Sequelize[_0xfb46('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x9fd4=['sequelize','exports','STRING','BOOLEAN'];(function(_0x4f51cb,_0x3d7bd4){var _0x4b34b1=function(_0x1bab33){while(--_0x1bab33){_0x4f51cb['push'](_0x4f51cb['shift']());}};_0x4b34b1(++_0x3d7bd4);}(_0x9fd4,0x16c));var _0x49fd=function(_0xe4e303,_0x8f9657){_0xe4e303=_0xe4e303-0x0;var _0x39021e=_0x9fd4[_0xe4e303];return _0x39021e;};'use strict';var Sequelize=require(_0x49fd('0x0'));module[_0x49fd('0x1')]={'name':{'type':Sequelize[_0x49fd('0x2')]},'username':{'type':Sequelize[_0x49fd('0x2')]},'password':{'type':Sequelize[_0x49fd('0x2')]},'remoteUri':{'type':Sequelize[_0x49fd('0x2')]},'tenantId':{'type':Sequelize[_0x49fd('0x2')]},'clientId':{'type':Sequelize[_0x49fd('0x2')]},'clientSecret':{'type':Sequelize[_0x49fd('0x2')]},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize['STRING']},'modernAuthentication':{'type':Sequelize[_0x49fd('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index b901807..2d53673 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2863=['body','catch','findOne','order','getConfigurations','hasOwnProperty','addConfiguration','Subjects','getSubjects','channel','getDescriptions','Dynamics365Configuration','Dynamics365Field','Descriptions','slice','substring','format','%s/api/data/v9.0/','getFields','ticketType','incident','Incident','title','description','customerid','ownerid','caseorigincode','subject','regardingobjectid','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','billedserviceunits','contactidname','contractdetailidname','createdbyyominame','createdon','createdonbehalfbyyominame','customeridname','customeridtype','emailaddress','entitlementidname','entityimage_timestamp','exchangerate','followupby','influencescore','kbarticleidname','lastonholdtime','modifiedbyexternalpartyyominame','modifiedbyname','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_iotalertname','numberofchildincidents','onholdtime','overriddencreatedon','owneridname','owneridtype','owneridyominame','primarycontactidyominame','productserialnumber','resolveby','resolvebykpiidname','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','socialprofileidname','statuscode','subjectidname','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','traversedpath','utcconversiontimezonecode','versionnumber','concat','username','remoteUri','clientId','clientSecret','modernAuthentication','CloudProvider','data5','data7','POST','https://login.microsoftonline.com/','tenantId','password','access_token','GET','EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27','Bearer\x20','4.0','value','MetadataId','EntityDefinitions(',')?$select=LogicalName&$expand=Attributes($select=LogicalName)','Attributes','remove','includes','forEach','@odata.type','lastIndexOf','PicklistAttributeMetadata','push','BooleanAttributeMetadata','all','DoubleAttributeMetadata','BigIntAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','DecimalAttributeMetadata','test','statusCode','stack',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','Options','UserLocalizedLabel','Value','LogicalName','DisplayName','Label',')/Attributes(',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','OptionSet','true','FalseOption','false',')/Microsoft.Dynamics.CRM.','request-promise','util','../../components/parsers/qs','../../config/logger','api','status','json','offset','undefined','limit','count','set','Content-Range','update','then','destroy','end','sendStatus','error','name','send','index','map','Dynamics365Account','rawAttributes','fieldName','query','keys','model','intersection','fields','attributes','length','nolimit','sort','filters','filter','where','merge','VIRTUAL','options','includeAll','findAll','show','params','include','find','create'];(function(_0x41c88c,_0x381f8d){var _0x2c97ea=function(_0x35fd44){while(--_0x35fd44){_0x41c88c['push'](_0x41c88c['shift']());}};_0x2c97ea(++_0x381f8d);}(_0x2863,0x142));var _0x3286=function(_0xca4f64,_0x16b1ae){_0xca4f64=_0xca4f64-0x0;var _0x49b7d6=_0x2863[_0xca4f64];return _0x49b7d6;};'use strict';var rp=require(_0x3286('0x0'));var util=require(_0x3286('0x1'));var _=require('lodash');var qs=require(_0x3286('0x2'));var logger=require(_0x3286('0x3'))(_0x3286('0x4'));var db=require('../../mysqldb')['db'];var integrations=require('../../components/integrations/configuration');function respondWithResult(_0x200ade,_0x5da9d6){_0x5da9d6=_0x5da9d6||0xc8;return function(_0x53ea56){if(_0x53ea56){return _0x200ade[_0x3286('0x5')](_0x5da9d6)[_0x3286('0x6')](_0x53ea56);}};}function respondWithFilteredResult(_0x3e70d6,_0x3a315d){return function(_0x21490e){if(_0x21490e){var _0x500dd5=typeof _0x3a315d[_0x3286('0x7')]===_0x3286('0x8')&&typeof _0x3a315d[_0x3286('0x9')]===_0x3286('0x8');var _0x10584e=_0x21490e['count'];var _0x51afee=_0x500dd5?0x0:_0x3a315d['offset'];var _0x5acd58=_0x500dd5?_0x21490e[_0x3286('0xa')]:_0x3a315d[_0x3286('0x7')]+_0x3a315d[_0x3286('0x9')];var _0x3aa3f4;if(_0x5acd58>=_0x10584e){_0x5acd58=_0x10584e;_0x3aa3f4=0xc8;}else{_0x3aa3f4=0xce;}_0x3e70d6['status'](_0x3aa3f4);return _0x3e70d6[_0x3286('0xb')](_0x3286('0xc'),_0x51afee+'-'+_0x5acd58+'/'+_0x10584e)[_0x3286('0x6')](_0x21490e);}return null;};}function saveUpdates(_0x2b92bb){return function(_0x263d17){if(_0x263d17){return _0x263d17[_0x3286('0xd')](_0x2b92bb)[_0x3286('0xe')](function(_0x5f4f39){return _0x5f4f39;});}return null;};}function removeEntity(_0x1052f1){return function(_0x4f7141){if(_0x4f7141){return _0x4f7141[_0x3286('0xf')]()[_0x3286('0xe')](function(){_0x1052f1[_0x3286('0x5')](0xcc)[_0x3286('0x10')]();});}};}function handleEntityNotFound(_0x118d00){return function(_0x1288aa){if(!_0x1288aa){_0x118d00[_0x3286('0x11')](0x194);}return _0x1288aa;};}function handleError(_0x3efca4,_0x4bacd5){_0x4bacd5=_0x4bacd5||0x1f4;return function(_0x57a8ba){logger[_0x3286('0x12')](_0x57a8ba['stack']);if(_0x57a8ba[_0x3286('0x13')]){delete _0x57a8ba[_0x3286('0x13')];}_0x3efca4['status'](_0x4bacd5)[_0x3286('0x14')](_0x57a8ba);};}exports[_0x3286('0x15')]=function(_0x19877c,_0x159c37){var _0x60a32c={},_0x162450={},_0x41d114={'count':0x0,'rows':[]};var _0x53a06a=_[_0x3286('0x16')](db[_0x3286('0x17')][_0x3286('0x18')],function(_0x1cfdf9){return{'name':_0x1cfdf9[_0x3286('0x19')],'type':_0x1cfdf9['type']['key']};});_0x162450['model']=_[_0x3286('0x16')](_0x53a06a,_0x3286('0x13'));_0x162450[_0x3286('0x1a')]=_[_0x3286('0x1b')](_0x19877c[_0x3286('0x1a')]);_0x162450['filters']=_['intersection'](_0x162450[_0x3286('0x1c')],_0x162450['query']);_0x60a32c['attributes']=_[_0x3286('0x1d')](_0x162450[_0x3286('0x1c')],qs['fields'](_0x19877c[_0x3286('0x1a')][_0x3286('0x1e')]));_0x60a32c['attributes']=_0x60a32c[_0x3286('0x1f')][_0x3286('0x20')]?_0x60a32c['attributes']:_0x162450[_0x3286('0x1c')];if(!_0x19877c[_0x3286('0x1a')]['hasOwnProperty'](_0x3286('0x21'))){_0x60a32c['limit']=qs[_0x3286('0x9')](_0x19877c[_0x3286('0x1a')][_0x3286('0x9')]);_0x60a32c['offset']=qs['offset'](_0x19877c['query'][_0x3286('0x7')]);}_0x60a32c['order']=qs[_0x3286('0x22')](_0x19877c[_0x3286('0x1a')]['sort']);_0x60a32c['where']=qs[_0x3286('0x23')](_['pick'](_0x19877c[_0x3286('0x1a')],_0x162450[_0x3286('0x23')]),_0x53a06a);if(_0x19877c[_0x3286('0x1a')][_0x3286('0x24')]){_0x60a32c[_0x3286('0x25')]=_[_0x3286('0x26')](_0x60a32c['where'],{'$or':_[_0x3286('0x16')](_0x53a06a,function(_0x183d57){if(_0x183d57['type']!==_0x3286('0x27')){var _0x433536={};_0x433536[_0x183d57[_0x3286('0x13')]]={'$like':'%'+_0x19877c[_0x3286('0x1a')][_0x3286('0x24')]+'%'};return _0x433536;}})});}_0x60a32c=_['merge']({},_0x60a32c,_0x19877c[_0x3286('0x28')]);var _0x3d4adf={'where':_0x60a32c[_0x3286('0x25')]};return db[_0x3286('0x17')][_0x3286('0xa')](_0x3d4adf)[_0x3286('0xe')](function(_0x257942){_0x41d114['count']=_0x257942;if(_0x19877c[_0x3286('0x1a')][_0x3286('0x29')]){_0x60a32c['include']=[{'all':!![]}];}return db['Dynamics365Account'][_0x3286('0x2a')](_0x60a32c);})['then'](function(_0x1e4c5c){_0x41d114['rows']=_0x1e4c5c;return _0x41d114;})[_0x3286('0xe')](respondWithFilteredResult(_0x159c37,_0x60a32c))['catch'](handleError(_0x159c37,null));};exports[_0x3286('0x2b')]=function(_0x517edb,_0x5ff6c5){var _0x5486db={'raw':![],'where':{'id':_0x517edb[_0x3286('0x2c')]['id']}},_0x5ae344={};_0x5ae344[_0x3286('0x1c')]=_[_0x3286('0x1b')](db[_0x3286('0x17')][_0x3286('0x18')]);_0x5ae344[_0x3286('0x1a')]=_[_0x3286('0x1b')](_0x517edb['query']);_0x5ae344[_0x3286('0x23')]=_[_0x3286('0x1d')](_0x5ae344[_0x3286('0x1c')],_0x5ae344[_0x3286('0x1a')]);_0x5486db[_0x3286('0x1f')]=_['intersection'](_0x5ae344[_0x3286('0x1c')],qs[_0x3286('0x1e')](_0x517edb[_0x3286('0x1a')][_0x3286('0x1e')]));_0x5486db[_0x3286('0x1f')]=_0x5486db[_0x3286('0x1f')][_0x3286('0x20')]?_0x5486db[_0x3286('0x1f')]:_0x5ae344[_0x3286('0x1c')];if(_0x517edb['query']['includeAll']){_0x5486db[_0x3286('0x2d')]=[{'all':!![]}];}_0x5486db=_[_0x3286('0x26')]({},_0x5486db,_0x517edb[_0x3286('0x28')]);return db[_0x3286('0x17')][_0x3286('0x2e')](_0x5486db)[_0x3286('0xe')](handleEntityNotFound(_0x5ff6c5,null))[_0x3286('0xe')](respondWithResult(_0x5ff6c5,null))['catch'](handleError(_0x5ff6c5,null));};exports[_0x3286('0x2f')]=function(_0x12fb94,_0x520ca2){return db[_0x3286('0x17')][_0x3286('0x2f')](_0x12fb94[_0x3286('0x30')],{})[_0x3286('0xe')](respondWithResult(_0x520ca2,0xc9))[_0x3286('0x31')](handleError(_0x520ca2,null));};exports['update']=function(_0x157e0a,_0x346ed7){if(_0x157e0a['body']['id']){delete _0x157e0a['body']['id'];}return db[_0x3286('0x17')][_0x3286('0x2e')]({'where':{'id':_0x157e0a[_0x3286('0x2c')]['id']}})[_0x3286('0xe')](handleEntityNotFound(_0x346ed7,null))[_0x3286('0xe')](saveUpdates(_0x157e0a[_0x3286('0x30')],null))[_0x3286('0xe')](respondWithResult(_0x346ed7,null))[_0x3286('0x31')](handleError(_0x346ed7,null));};exports['destroy']=function(_0xe943fc,_0x25b3d0){return db[_0x3286('0x17')][_0x3286('0x2e')]({'where':{'id':_0xe943fc[_0x3286('0x2c')]['id']}})[_0x3286('0xe')](handleEntityNotFound(_0x25b3d0,null))[_0x3286('0xe')](removeEntity(_0x25b3d0,null))[_0x3286('0x31')](handleError(_0x25b3d0,null));};exports['getConfigurations']=function(_0x581ed9,_0x3f1946){var _0x30b4b1={};var _0x455b82={};var _0x3f5c0b;var _0x33c51d;return db[_0x3286('0x17')][_0x3286('0x32')]({'where':{'id':_0x581ed9[_0x3286('0x2c')]['id']}})['then'](handleEntityNotFound(_0x3f1946,null))[_0x3286('0xe')](function(_0x1dcbf1){if(_0x1dcbf1){_0x3f5c0b=_0x1dcbf1;_0x455b82[_0x3286('0x1c')]=_[_0x3286('0x1b')](db['Dynamics365Configuration']['rawAttributes']);_0x455b82[_0x3286('0x1a')]=_['keys'](_0x581ed9['query']);_0x455b82['filters']=_[_0x3286('0x1d')](_0x455b82['model'],_0x455b82[_0x3286('0x1a')]);_0x30b4b1[_0x3286('0x1f')]=_[_0x3286('0x1d')](_0x455b82[_0x3286('0x1c')],qs['fields'](_0x581ed9['query']['fields']));_0x30b4b1[_0x3286('0x1f')]=_0x30b4b1[_0x3286('0x1f')][_0x3286('0x20')]?_0x30b4b1[_0x3286('0x1f')]:_0x455b82[_0x3286('0x1c')];_0x30b4b1[_0x3286('0x33')]=qs[_0x3286('0x22')](_0x581ed9[_0x3286('0x1a')][_0x3286('0x22')]);_0x30b4b1[_0x3286('0x25')]=qs['filters'](_['pick'](_0x581ed9['query'],_0x455b82[_0x3286('0x23')]));if(_0x581ed9[_0x3286('0x1a')][_0x3286('0x24')]){_0x30b4b1[_0x3286('0x25')]=_['merge'](_0x30b4b1[_0x3286('0x25')],{'$or':_[_0x3286('0x16')](_0x30b4b1[_0x3286('0x1f')],function(_0x131eec){var _0x9ef08c={};_0x9ef08c[_0x131eec]={'$like':'%'+_0x581ed9['query'][_0x3286('0x24')]+'%'};return _0x9ef08c;})});}_0x30b4b1=_[_0x3286('0x26')]({},_0x30b4b1,_0x581ed9[_0x3286('0x28')]);return _0x3f5c0b[_0x3286('0x34')](_0x30b4b1);}})['then'](function(_0x22e627){if(_0x22e627){_0x33c51d=_0x22e627['length'];if(!_0x581ed9[_0x3286('0x1a')][_0x3286('0x35')](_0x3286('0x21'))){_0x30b4b1[_0x3286('0x9')]=qs[_0x3286('0x9')](_0x581ed9['query'][_0x3286('0x9')]);_0x30b4b1['offset']=qs[_0x3286('0x7')](_0x581ed9[_0x3286('0x1a')][_0x3286('0x7')]);}return _0x3f5c0b[_0x3286('0x34')](_0x30b4b1);}})[_0x3286('0xe')](function(_0x2e019c){if(_0x2e019c){return _0x2e019c?{'count':_0x33c51d,'rows':_0x2e019c}:null;}})['then'](respondWithResult(_0x3f1946,null))[_0x3286('0x31')](handleError(_0x3f1946,null));};exports[_0x3286('0x36')]=function(_0x5496f1,_0x1ece27){if(_0x5496f1[_0x3286('0x30')]['id']){delete _0x5496f1[_0x3286('0x30')]['id'];}return db[_0x3286('0x17')][_0x3286('0x32')]({'where':{'id':_0x5496f1[_0x3286('0x2c')]['id']}})[_0x3286('0xe')](handleEntityNotFound(_0x1ece27,null))[_0x3286('0xe')](function(_0x46f2da){if(_0x46f2da){_0x5496f1['body']['AccountId']=_0x46f2da['id'];_0x5496f1['body'][_0x3286('0x37')]=integrations[_0x3286('0x38')](_0x5496f1[_0x3286('0x30')][_0x3286('0x39')],_0x5496f1['body']['type']);_0x5496f1[_0x3286('0x30')]['Descriptions']=integrations[_0x3286('0x3a')](_0x5496f1['body']['channel'],_0x5496f1[_0x3286('0x30')]['type']);return db[_0x3286('0x3b')]['create'](_0x5496f1[_0x3286('0x30')],{'include':[{'model':db['Dynamics365Field'],'as':'Subjects'},{'model':db[_0x3286('0x3c')],'as':_0x3286('0x3d')}]});}return null;})[_0x3286('0xe')](respondWithResult(_0x1ece27,null))[_0x3286('0x31')](handleError(_0x1ece27,null));};function sanitizeRemoteUri(_0x5cbb48){var _0x1e0661=_0x5cbb48[_0x3286('0x3e')](-0x1);if(_0x1e0661==='/')return _0x5cbb48[_0x3286('0x3f')](0x0,_0x5cbb48['lastIndexOf'](_0x1e0661));return _0x5cbb48;}function getWebApiUrl(_0x382e4f){return util[_0x3286('0x40')](_0x3286('0x41'),_0x382e4f);}exports[_0x3286('0x42')]=function(_0x470537,_0x3a0a1a){var _0x49d831=_0x470537[_0x3286('0x1a')][_0x3286('0x43')];var _0x5d42fd=_0x49d831===_0x3286('0x44')?_0x3286('0x45'):'PhoneCall';var _0xc2520e='';var _0x33a9ae='';var _0x2992d9='';var _0x53df87='';var _0xdf7d7b='';var _0xf31dd2='';var _0x4cab5d='';var _0xce0816='';var _0xc4129e=[_0x3286('0x46'),_0x3286('0x47'),_0x3286('0x48'),_0x3286('0x49'),_0x3286('0x4a'),_0x3286('0x4b'),'phonenumber',_0x3286('0x4c'),'directioncode',_0x3286('0x4d')];var _0x545127=[_0x3286('0x4e'),_0x3286('0x4f'),_0x3286('0x50'),_0x3286('0x51'),_0x3286('0x52'),'contactidyominame',_0x3286('0x53'),'contractidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname',_0x3286('0x54'),_0x3286('0x55'),'createdonbehalfbyname',_0x3286('0x56'),_0x3286('0x57'),_0x3286('0x58'),'customeridyominame',_0x3286('0x59'),_0x3286('0x5a'),_0x3286('0x5b'),'entityimage_url','escalatedon',_0x3286('0x5c'),'firstresponsebykpiidname',_0x3286('0x5d'),'importsequencenumber',_0x3286('0x5e'),_0x3286('0x5f'),_0x3286('0x60'),'masteridname','modifiedbyexternalpartyname',_0x3286('0x61'),_0x3286('0x62'),_0x3286('0x63'),_0x3286('0x64'),_0x3286('0x65'),_0x3286('0x66'),'msdyn_incidenttypename',_0x3286('0x67'),_0x3286('0x68'),_0x3286('0x69'),_0x3286('0x6a'),_0x3286('0x6b'),_0x3286('0x6c'),_0x3286('0x6d'),'parentcaseidname','primarycontactidname',_0x3286('0x6e'),'prioritycodename','productidname',_0x3286('0x6f'),_0x3286('0x70'),_0x3286('0x71'),'responseby',_0x3286('0x72'),_0x3286('0x73'),_0x3286('0x74'),_0x3286('0x75'),'slaname',_0x3286('0x76'),'statecode',_0x3286('0x77'),_0x3286('0x78'),_0x3286('0x79'),_0x3286('0x7a'),_0x3286('0x7b'),_0x3286('0x7c'),_0x3286('0x7d'),_0x3286('0x7e')];var _0x42234a=_0xc4129e[_0x3286('0x7f')](_0x545127);return db[_0x3286('0x17')][_0x3286('0x32')]({'where':{'id':_0x470537['params']['id']},'attributes':['id',_0x3286('0x80'),'password',_0x3286('0x81'),'tenantId',_0x3286('0x82'),_0x3286('0x83'),_0x3286('0x84')],'include':[{'model':db[_0x3286('0x85')],'as':'CloudProvider','attributes':['id',_0x3286('0x86'),'data7']}]})[_0x3286('0xe')](handleEntityNotFound(_0x3a0a1a,null))[_0x3286('0xe')](function(_0x5a96b9){if(_0x5a96b9){if(_0x5a96b9[_0x3286('0x84')]){_0x5a96b9['access_token']=_0x5a96b9[_0x3286('0x85')][_0x3286('0x86')];_0xce0816=sanitizeRemoteUri(_0x5a96b9[_0x3286('0x85')][_0x3286('0x87')]);_0x4cab5d=getWebApiUrl(_0xce0816);return _0x5a96b9;}_0xce0816=sanitizeRemoteUri(_0x5a96b9[_0x3286('0x81')]);_0x4cab5d=getWebApiUrl(_0xce0816);var _0x5d7195={'method':_0x3286('0x88'),'uri':_0x3286('0x89')+_0x5a96b9[_0x3286('0x8a')]+'/oauth2/token','form':{'client_id':_0x5a96b9[_0x3286('0x82')],'resource':_0xce0816,'username':_0x5a96b9[_0x3286('0x80')],'password':_0x5a96b9[_0x3286('0x8b')],'grant_type':_0x3286('0x8b'),'client_secret':_0x5a96b9['clientSecret']},'json':!![]};return rp(_0x5d7195);}})['then'](function(_0x48e8d7){_0xf31dd2=_0x48e8d7[_0x3286('0x8c')];var _0x35d40b={'method':_0x3286('0x8d'),'uri':encodeURI(_0x4cab5d+_0x3286('0x8e')+_0x5d42fd+'\x27'),'headers':{'Authorization':_0x3286('0x8f')+_0xf31dd2,'If-None-Match':null,'OData-Version':_0x3286('0x90')},'json':!![]};return rp(_0x35d40b);})[_0x3286('0xe')](function(_0x368a4a){var _0x205a92=_0x368a4a[_0x3286('0x91')][0x0];var _0x39ce44=_0x205a92[_0x3286('0x92')];var _0x1e3f84={'method':_0x3286('0x8d'),'uri':_0x4cab5d+_0x3286('0x93')+_0x39ce44+_0x3286('0x94'),'headers':{'Authorization':_0x3286('0x8f')+_0xf31dd2,'If-None-Match':null,'OData-Version':_0x3286('0x90')},'json':!![]};return rp(_0x1e3f84);})[_0x3286('0xe')](function(_0x415a00){_0xc2520e=_0x415a00;_0x33a9ae=_0xc2520e[_0x3286('0x95')];_0x33a9ae=_[_0x3286('0x96')](_0x33a9ae,function(_0xf4206a){return!_0x42234a[_0x3286('0x97')](_0xf4206a['LogicalName']);});var _0x5335a1=[];var _0x1bdbee=[];_0x33a9ae[_0x3286('0x98')](function(_0x4c3cd5){if(_0x4c3cd5[_0x3286('0x99')]){var _0xaf1e64=_0x4c3cd5['@odata.type']['substring'](_0x4c3cd5[_0x3286('0x99')][_0x3286('0x9a')]('.')+0x1);if(_0xaf1e64===_0x3286('0x9b')){_0x5335a1[_0x3286('0x9c')](getSelectList(_0x4cab5d,_0x49d831,_0x1bdbee,_0xc2520e[_0x3286('0x92')],_0x4c3cd5[_0x3286('0x92')],_0xf31dd2));}}});return Promise['all'](_0x5335a1);})[_0x3286('0xe')](function(_0x1e748c){_0x2992d9=_0x1e748c[0x0];var _0x29e19d=[];var _0x4b3f02=[];_0x33a9ae[_0x3286('0x98')](function(_0x59c887){if(!_['isNil'](_0x59c887[_0x3286('0x99')])){var _0x240a2d=_0x59c887[_0x3286('0x99')]['substring'](_0x59c887[_0x3286('0x99')][_0x3286('0x9a')]('.')+0x1);if(_0x240a2d===_0x3286('0x9d')){_0x29e19d[_0x3286('0x9c')](getBooleanList(_0x4cab5d,_0x49d831,_0x4b3f02,_0xc2520e[_0x3286('0x92')],_0x59c887[_0x3286('0x92')],_0xf31dd2));}}});return Promise[_0x3286('0x9e')](_0x29e19d);})[_0x3286('0xe')](function(_0x1b653b){_0x53df87=_0x1b653b[0x0];var _0x16434c=[];var _0x14335e=[];_0x33a9ae[_0x3286('0x98')](function(_0x16486e){if(_0x16486e[_0x3286('0x99')]){var _0x2bf815=_0x16486e['@odata.type']['substring'](_0x16486e[_0x3286('0x99')][_0x3286('0x9a')]('.')+0x1);if(_0x2bf815==='StringAttributeMetadata'||_0x2bf815===_0x3286('0x9f')||_0x2bf815===_0x3286('0xa0')||_0x2bf815===_0x3286('0xa1')||_0x2bf815===_0x3286('0xa2')||_0x2bf815===_0x3286('0xa3')||_0x2bf815===_0x3286('0xa4')||_0x2bf815===_0x3286('0xa5')||_0x2bf815==='StateAttributeMetadata'||_0x2bf815===_0x3286('0xa6')){_0x16434c[_0x3286('0x9c')](getInputList(_0x4cab5d,_0x49d831,_0x2bf815,_0x14335e,_0xc2520e[_0x3286('0x92')],_0x16486e[_0x3286('0x92')],_0xf31dd2));}}});return Promise[_0x3286('0x9e')](_0x16434c);})[_0x3286('0xe')](function(_0x4179b1){_0xdf7d7b=_0x4179b1[0x0];var _0x3dc7de=_0x2992d9['concat'](_0x53df87)['concat'](_0xdf7d7b);var _0x1f34ea={'count':_0x3dc7de[_0x3286('0x20')],'rows':_0x3dc7de};return _0x1f34ea;})['then'](respondWithResult(_0x3a0a1a,null))[_0x3286('0x31')](function(_0x1db1e8){var _0x20576b=_0x470537['query'][_0x3286('0xa7')]?0x1f4:_0x1db1e8[_0x3286('0xa8')]||0x1f4;logger['error'](_0x1db1e8[_0x3286('0xa9')]);delete _0x1db1e8[_0x3286('0x13')];if(_0x20576b===0x191){_0x20576b=0x190;}_0x3a0a1a[_0x3286('0x5')](_0x20576b)[_0x3286('0x14')](_0x470537[_0x3286('0x1a')][_0x3286('0xa7')]?{'message':'Wrong\x20credentials','statusCode':_0x1db1e8['statusCode']}:_0x1db1e8);});};function getSelectList(_0x34fd58,_0x4520b3,_0x2f32b0,_0x3099e2,_0x584ea4,_0x3b8cb3){var _0x4852bf={'method':_0x3286('0x8d'),'uri':_0x34fd58+_0x3286('0x93')+_0x3099e2+')/Attributes('+_0x584ea4+_0x3286('0xaa')+_0x3286('0xab'),'headers':{'Authorization':_0x3286('0x8f')+_0x3b8cb3,'If-None-Match':null,'OData-Version':_0x3286('0x90')},'json':!![]};return rp(_0x4852bf)['then'](function(_0x2d7934){var _0xab8b6a=[];var _0x1a3432=_0x2d7934['OptionSet'][_0x3286('0xac')];_0x1a3432[_0x3286('0x98')](function(_0x1c964e){_0xab8b6a[_0x3286('0x9c')]({'name':_0x1c964e['Label'][_0x3286('0xad')]['Label'],'value':String(_0x1c964e[_0x3286('0xae')])});});var _0x566767={'id':_0x4520b3+'_'+_0x2d7934[_0x3286('0xaf')],'name':_0x2d7934[_0x3286('0xb0')][_0x3286('0xad')][_0x3286('0xb1')],'custom':![],'options':_0xab8b6a};_0x2f32b0[_0x3286('0x9c')](_0x566767);return _0x2f32b0;});}function getBooleanList(_0x528069,_0x4f9cd3,_0x1541fc,_0x39a756,_0x277bef,_0x492cb6){var _0x4d5cb2={'method':_0x3286('0x8d'),'uri':_0x528069+'EntityDefinitions('+_0x39a756+_0x3286('0xb2')+_0x277bef+_0x3286('0xb3'),'headers':{'Authorization':_0x3286('0x8f')+_0x492cb6,'If-None-Match':null,'OData-Version':_0x3286('0x90')},'json':!![]};return rp(_0x4d5cb2)['then'](function(_0x6c919e){var _0x11a01a=[];_0x11a01a[_0x3286('0x9c')]({'name':_0x6c919e[_0x3286('0xb4')]['TrueOption'][_0x3286('0xb1')][_0x3286('0xad')][_0x3286('0xb1')],'value':_0x3286('0xb5')},{'name':_0x6c919e['OptionSet'][_0x3286('0xb6')]['Label']['UserLocalizedLabel'][_0x3286('0xb1')],'value':_0x3286('0xb7')});var _0x385fc5={'id':_0x4f9cd3+'_'+_0x6c919e[_0x3286('0xaf')],'name':_0x6c919e[_0x3286('0xb0')]['UserLocalizedLabel'][_0x3286('0xb1')],'custom':![],'options':_0x11a01a};_0x1541fc[_0x3286('0x9c')](_0x385fc5);return _0x1541fc;});}function getInputList(_0x2ac631,_0x2e5372,_0x5ba96d,_0x32e7b1,_0x43bcd5,_0x1236e9,_0x1fc50e){var _0x591c85={'method':_0x3286('0x8d'),'uri':_0x2ac631+_0x3286('0x93')+_0x43bcd5+_0x3286('0xb2')+_0x1236e9+_0x3286('0xb8')+_0x5ba96d+'?$select=DisplayName,LogicalName','headers':{'Authorization':'Bearer\x20'+_0x1fc50e,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x591c85)[_0x3286('0xe')](function(_0x1a7e9f){var _0x16ea07={'id':_0x2e5372+'_'+_0x1a7e9f[_0x3286('0xaf')],'name':_0x1a7e9f['DisplayName'][_0x3286('0xad')]?_0x1a7e9f[_0x3286('0xb0')][_0x3286('0xad')]['Label']:_0x1a7e9f[_0x3286('0xaf')],'custom':![],'options':[]};_0x32e7b1[_0x3286('0x9c')](_0x16ea07);return _0x32e7b1;});}
\ No newline at end of file
+var _0xd5f5=['send','statusCode',')/Attributes(',')/Microsoft.Dynamics.CRM.PicklistAttributeMetadata?','$select=DisplayName,LogicalName&$expand=OptionSet($select=Options)','OptionSet','Options','Label','UserLocalizedLabel','Value','DisplayName',')/Microsoft.Dynamics.CRM.BooleanAttributeMetadata?$select=DisplayName,LogicalName&$expand=OptionSet($select=FalseOption,\x20TrueOption)','true','FalseOption','?$select=DisplayName,LogicalName','request-promise','util','../../components/parsers/qs','../../config/logger','api','../../components/integrations/configuration','json','offset','undefined','limit','count','status','Content-Range','update','then','destroy','end','error','name','index','map','Dynamics365Account','rawAttributes','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','include','findAll','catch','show','keys','includeAll','options','find','create','body','params','getConfigurations','findOne','Dynamics365Configuration','hasOwnProperty','addConfiguration','AccountId','Subjects','getSubjects','channel','Dynamics365Field','Descriptions','slice','substring','format','%s/api/data/v9.0/','getFields','incident','Incident','PhoneCall','description','customerid','ownerid','caseorigincode','subject','phonenumber','regardingobjectid','directioncode','phonecall_activity_parties','accountidname','accountidyominame','actualserviceunits','contactidyominame','contractdetailidname','createdbyexternalpartyname','createdbyexternalpartyyominame','createdbyname','createdon','createdonbehalfbyname','createdonbehalfbyyominame','customeridtype','customeridyominame','entitlementidname','escalatedon','exchangerate','firstresponsebykpiidname','followupby','influencescore','kbarticleidname','lastonholdtime','modifiedbyexternalpartyname','modifiedbyexternalpartyyominame','modifiedbyyominame','modifiedon','modifiedonbehalfbyname','modifiedonbehalfbyyominame','msdyn_incidenttypename','msdyn_iotalertname','onholdtime','overriddencreatedon','owneridtype','owneridyominame','parentcaseidname','primarycontactidname','primarycontactidyominame','prioritycodename','productidname','productserialnumber','resolveby','resolvebykpiidname','responseby','responsiblecontactidname','responsiblecontactidyominame','sentimentvalue','slainvokedidname','slaname','socialprofileidname','statecode','statuscode','ticketnumber','timezoneruleversionnumber','transactioncurrencyidname','utcconversiontimezonecode','versionnumber','password','tenantId','clientSecret','CloudProvider','modernAuthentication','access_token','data5','data7','remoteUri','POST','https://login.microsoftonline.com/','/oauth2/token','username','GET','Bearer\x20','MetadataId','EntityDefinitions(','4.0','Attributes','remove','LogicalName','forEach','@odata.type','push','all','lastIndexOf','BooleanAttributeMetadata','StringAttributeMetadata','DoubleAttributeMetadata','IntegerAttributeMetadata','MemoAttributeMetadata','DateTimeAttributeMetadata','StatusAttributeMetadata','EntityNameAttributeMetadata','StateAttributeMetadata','DecimalAttributeMetadata','concat','test','stack'];(function(_0x5cef98,_0x1c58be){var _0x6e4757=function(_0x58de10){while(--_0x58de10){_0x5cef98['push'](_0x5cef98['shift']());}};_0x6e4757(++_0x1c58be);}(_0xd5f5,0xcc));var _0x5d5f=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0xd5f5[_0x465a0c];return _0x1e202e;};'use strict';var rp=require(_0x5d5f('0x0'));var util=require(_0x5d5f('0x1'));var _=require('lodash');var qs=require(_0x5d5f('0x2'));var logger=require(_0x5d5f('0x3'))(_0x5d5f('0x4'));var db=require('../../mysqldb')['db'];var integrations=require(_0x5d5f('0x5'));function respondWithResult(_0x2be9b6,_0x3b2692){_0x3b2692=_0x3b2692||0xc8;return function(_0x4bfb85){if(_0x4bfb85){return _0x2be9b6['status'](_0x3b2692)[_0x5d5f('0x6')](_0x4bfb85);}};}function respondWithFilteredResult(_0x1f3741,_0x61bce){return function(_0x554131){if(_0x554131){var _0xf5c59c=typeof _0x61bce[_0x5d5f('0x7')]===_0x5d5f('0x8')&&typeof _0x61bce[_0x5d5f('0x9')]===_0x5d5f('0x8');var _0x48d075=_0x554131[_0x5d5f('0xa')];var _0x5e23c2=_0xf5c59c?0x0:_0x61bce['offset'];var _0x45b676=_0xf5c59c?_0x554131[_0x5d5f('0xa')]:_0x61bce[_0x5d5f('0x7')]+_0x61bce[_0x5d5f('0x9')];var _0x33430a;if(_0x45b676>=_0x48d075){_0x45b676=_0x48d075;_0x33430a=0xc8;}else{_0x33430a=0xce;}_0x1f3741[_0x5d5f('0xb')](_0x33430a);return _0x1f3741['set'](_0x5d5f('0xc'),_0x5e23c2+'-'+_0x45b676+'/'+_0x48d075)[_0x5d5f('0x6')](_0x554131);}return null;};}function saveUpdates(_0x44b3e7){return function(_0x4a7259){if(_0x4a7259){return _0x4a7259[_0x5d5f('0xd')](_0x44b3e7)[_0x5d5f('0xe')](function(_0x33f785){return _0x33f785;});}return null;};}function removeEntity(_0x4c7aed){return function(_0x1f728d){if(_0x1f728d){return _0x1f728d[_0x5d5f('0xf')]()['then'](function(){_0x4c7aed[_0x5d5f('0xb')](0xcc)[_0x5d5f('0x10')]();});}};}function handleEntityNotFound(_0x542aaf){return function(_0x174b91){if(!_0x174b91){_0x542aaf['sendStatus'](0x194);}return _0x174b91;};}function handleError(_0x2377c9,_0x2dd34d){_0x2dd34d=_0x2dd34d||0x1f4;return function(_0x1177d8){logger[_0x5d5f('0x11')](_0x1177d8['stack']);if(_0x1177d8[_0x5d5f('0x12')]){delete _0x1177d8[_0x5d5f('0x12')];}_0x2377c9['status'](_0x2dd34d)['send'](_0x1177d8);};}exports[_0x5d5f('0x13')]=function(_0x3da606,_0xc5c364){var _0xc6bd33={},_0x55a771={},_0x250ed1={'count':0x0,'rows':[]};var _0x10f587=_[_0x5d5f('0x14')](db[_0x5d5f('0x15')][_0x5d5f('0x16')],function(_0x2dc462){return{'name':_0x2dc462[_0x5d5f('0x17')],'type':_0x2dc462[_0x5d5f('0x18')][_0x5d5f('0x19')]};});_0x55a771[_0x5d5f('0x1a')]=_[_0x5d5f('0x14')](_0x10f587,_0x5d5f('0x12'));_0x55a771[_0x5d5f('0x1b')]=_['keys'](_0x3da606[_0x5d5f('0x1b')]);_0x55a771[_0x5d5f('0x1c')]=_['intersection'](_0x55a771['model'],_0x55a771[_0x5d5f('0x1b')]);_0xc6bd33[_0x5d5f('0x1d')]=_[_0x5d5f('0x1e')](_0x55a771[_0x5d5f('0x1a')],qs[_0x5d5f('0x1f')](_0x3da606[_0x5d5f('0x1b')]['fields']));_0xc6bd33[_0x5d5f('0x1d')]=_0xc6bd33[_0x5d5f('0x1d')][_0x5d5f('0x20')]?_0xc6bd33[_0x5d5f('0x1d')]:_0x55a771[_0x5d5f('0x1a')];if(!_0x3da606[_0x5d5f('0x1b')]['hasOwnProperty'](_0x5d5f('0x21'))){_0xc6bd33[_0x5d5f('0x9')]=qs[_0x5d5f('0x9')](_0x3da606[_0x5d5f('0x1b')]['limit']);_0xc6bd33[_0x5d5f('0x7')]=qs['offset'](_0x3da606[_0x5d5f('0x1b')]['offset']);}_0xc6bd33[_0x5d5f('0x22')]=qs[_0x5d5f('0x23')](_0x3da606['query'][_0x5d5f('0x23')]);_0xc6bd33[_0x5d5f('0x24')]=qs[_0x5d5f('0x1c')](_[_0x5d5f('0x25')](_0x3da606[_0x5d5f('0x1b')],_0x55a771['filters']),_0x10f587);if(_0x3da606[_0x5d5f('0x1b')][_0x5d5f('0x26')]){_0xc6bd33['where']=_[_0x5d5f('0x27')](_0xc6bd33[_0x5d5f('0x24')],{'$or':_['map'](_0x10f587,function(_0x50117d){if(_0x50117d[_0x5d5f('0x18')]!==_0x5d5f('0x28')){var _0x597a4b={};_0x597a4b[_0x50117d[_0x5d5f('0x12')]]={'$like':'%'+_0x3da606[_0x5d5f('0x1b')][_0x5d5f('0x26')]+'%'};return _0x597a4b;}})});}_0xc6bd33=_['merge']({},_0xc6bd33,_0x3da606['options']);var _0x3754d0={'where':_0xc6bd33[_0x5d5f('0x24')]};return db[_0x5d5f('0x15')][_0x5d5f('0xa')](_0x3754d0)['then'](function(_0x5bfd6d){_0x250ed1[_0x5d5f('0xa')]=_0x5bfd6d;if(_0x3da606['query']['includeAll']){_0xc6bd33[_0x5d5f('0x29')]=[{'all':!![]}];}return db[_0x5d5f('0x15')][_0x5d5f('0x2a')](_0xc6bd33);})[_0x5d5f('0xe')](function(_0x44017c){_0x250ed1['rows']=_0x44017c;return _0x250ed1;})[_0x5d5f('0xe')](respondWithFilteredResult(_0xc5c364,_0xc6bd33))[_0x5d5f('0x2b')](handleError(_0xc5c364,null));};exports[_0x5d5f('0x2c')]=function(_0xaccbb0,_0x22864f){var _0x17eeee={'raw':![],'where':{'id':_0xaccbb0['params']['id']}},_0x3a4775={};_0x3a4775['model']=_[_0x5d5f('0x2d')](db[_0x5d5f('0x15')]['rawAttributes']);_0x3a4775[_0x5d5f('0x1b')]=_[_0x5d5f('0x2d')](_0xaccbb0[_0x5d5f('0x1b')]);_0x3a4775['filters']=_['intersection'](_0x3a4775[_0x5d5f('0x1a')],_0x3a4775[_0x5d5f('0x1b')]);_0x17eeee[_0x5d5f('0x1d')]=_[_0x5d5f('0x1e')](_0x3a4775['model'],qs[_0x5d5f('0x1f')](_0xaccbb0[_0x5d5f('0x1b')][_0x5d5f('0x1f')]));_0x17eeee[_0x5d5f('0x1d')]=_0x17eeee['attributes']['length']?_0x17eeee[_0x5d5f('0x1d')]:_0x3a4775[_0x5d5f('0x1a')];if(_0xaccbb0[_0x5d5f('0x1b')][_0x5d5f('0x2e')]){_0x17eeee[_0x5d5f('0x29')]=[{'all':!![]}];}_0x17eeee=_[_0x5d5f('0x27')]({},_0x17eeee,_0xaccbb0[_0x5d5f('0x2f')]);return db[_0x5d5f('0x15')][_0x5d5f('0x30')](_0x17eeee)[_0x5d5f('0xe')](handleEntityNotFound(_0x22864f,null))[_0x5d5f('0xe')](respondWithResult(_0x22864f,null))[_0x5d5f('0x2b')](handleError(_0x22864f,null));};exports[_0x5d5f('0x31')]=function(_0x2a8aa2,_0x44deff){return db['Dynamics365Account'][_0x5d5f('0x31')](_0x2a8aa2['body'],{})[_0x5d5f('0xe')](respondWithResult(_0x44deff,0xc9))[_0x5d5f('0x2b')](handleError(_0x44deff,null));};exports[_0x5d5f('0xd')]=function(_0x1cec09,_0x43f5c3){if(_0x1cec09[_0x5d5f('0x32')]['id']){delete _0x1cec09[_0x5d5f('0x32')]['id'];}return db[_0x5d5f('0x15')][_0x5d5f('0x30')]({'where':{'id':_0x1cec09['params']['id']}})['then'](handleEntityNotFound(_0x43f5c3,null))[_0x5d5f('0xe')](saveUpdates(_0x1cec09[_0x5d5f('0x32')],null))['then'](respondWithResult(_0x43f5c3,null))['catch'](handleError(_0x43f5c3,null));};exports[_0x5d5f('0xf')]=function(_0x3fca8c,_0x34acd7){return db[_0x5d5f('0x15')]['find']({'where':{'id':_0x3fca8c[_0x5d5f('0x33')]['id']}})[_0x5d5f('0xe')](handleEntityNotFound(_0x34acd7,null))[_0x5d5f('0xe')](removeEntity(_0x34acd7,null))['catch'](handleError(_0x34acd7,null));};exports[_0x5d5f('0x34')]=function(_0x1b5630,_0x5a9934){var _0x30def9={};var _0x1b683a={};var _0x5b122b;var _0x51f634;return db['Dynamics365Account'][_0x5d5f('0x35')]({'where':{'id':_0x1b5630[_0x5d5f('0x33')]['id']}})['then'](handleEntityNotFound(_0x5a9934,null))[_0x5d5f('0xe')](function(_0x32b330){if(_0x32b330){_0x5b122b=_0x32b330;_0x1b683a[_0x5d5f('0x1a')]=_[_0x5d5f('0x2d')](db[_0x5d5f('0x36')][_0x5d5f('0x16')]);_0x1b683a[_0x5d5f('0x1b')]=_[_0x5d5f('0x2d')](_0x1b5630[_0x5d5f('0x1b')]);_0x1b683a[_0x5d5f('0x1c')]=_['intersection'](_0x1b683a[_0x5d5f('0x1a')],_0x1b683a[_0x5d5f('0x1b')]);_0x30def9[_0x5d5f('0x1d')]=_[_0x5d5f('0x1e')](_0x1b683a[_0x5d5f('0x1a')],qs[_0x5d5f('0x1f')](_0x1b5630[_0x5d5f('0x1b')][_0x5d5f('0x1f')]));_0x30def9[_0x5d5f('0x1d')]=_0x30def9[_0x5d5f('0x1d')][_0x5d5f('0x20')]?_0x30def9['attributes']:_0x1b683a[_0x5d5f('0x1a')];_0x30def9[_0x5d5f('0x22')]=qs[_0x5d5f('0x23')](_0x1b5630[_0x5d5f('0x1b')][_0x5d5f('0x23')]);_0x30def9[_0x5d5f('0x24')]=qs[_0x5d5f('0x1c')](_[_0x5d5f('0x25')](_0x1b5630['query'],_0x1b683a[_0x5d5f('0x1c')]));if(_0x1b5630['query']['filter']){_0x30def9[_0x5d5f('0x24')]=_['merge'](_0x30def9[_0x5d5f('0x24')],{'$or':_[_0x5d5f('0x14')](_0x30def9[_0x5d5f('0x1d')],function(_0x4ae5be){var _0x90fd1a={};_0x90fd1a[_0x4ae5be]={'$like':'%'+_0x1b5630[_0x5d5f('0x1b')][_0x5d5f('0x26')]+'%'};return _0x90fd1a;})});}_0x30def9=_[_0x5d5f('0x27')]({},_0x30def9,_0x1b5630[_0x5d5f('0x2f')]);return _0x5b122b[_0x5d5f('0x34')](_0x30def9);}})[_0x5d5f('0xe')](function(_0x1f58e7){if(_0x1f58e7){_0x51f634=_0x1f58e7['length'];if(!_0x1b5630[_0x5d5f('0x1b')][_0x5d5f('0x37')](_0x5d5f('0x21'))){_0x30def9[_0x5d5f('0x9')]=qs['limit'](_0x1b5630['query'][_0x5d5f('0x9')]);_0x30def9[_0x5d5f('0x7')]=qs['offset'](_0x1b5630[_0x5d5f('0x1b')][_0x5d5f('0x7')]);}return _0x5b122b[_0x5d5f('0x34')](_0x30def9);}})['then'](function(_0x529e34){if(_0x529e34){return _0x529e34?{'count':_0x51f634,'rows':_0x529e34}:null;}})[_0x5d5f('0xe')](respondWithResult(_0x5a9934,null))[_0x5d5f('0x2b')](handleError(_0x5a9934,null));};exports[_0x5d5f('0x38')]=function(_0x272d73,_0x5c7723){if(_0x272d73[_0x5d5f('0x32')]['id']){delete _0x272d73[_0x5d5f('0x32')]['id'];}return db[_0x5d5f('0x15')][_0x5d5f('0x35')]({'where':{'id':_0x272d73[_0x5d5f('0x33')]['id']}})[_0x5d5f('0xe')](handleEntityNotFound(_0x5c7723,null))[_0x5d5f('0xe')](function(_0x59f22d){if(_0x59f22d){_0x272d73[_0x5d5f('0x32')][_0x5d5f('0x39')]=_0x59f22d['id'];_0x272d73[_0x5d5f('0x32')][_0x5d5f('0x3a')]=integrations[_0x5d5f('0x3b')](_0x272d73[_0x5d5f('0x32')][_0x5d5f('0x3c')],_0x272d73[_0x5d5f('0x32')][_0x5d5f('0x18')]);_0x272d73[_0x5d5f('0x32')]['Descriptions']=integrations['getDescriptions'](_0x272d73[_0x5d5f('0x32')][_0x5d5f('0x3c')],_0x272d73[_0x5d5f('0x32')][_0x5d5f('0x18')]);return db['Dynamics365Configuration'][_0x5d5f('0x31')](_0x272d73['body'],{'include':[{'model':db[_0x5d5f('0x3d')],'as':_0x5d5f('0x3a')},{'model':db[_0x5d5f('0x3d')],'as':_0x5d5f('0x3e')}]});}return null;})[_0x5d5f('0xe')](respondWithResult(_0x5c7723,null))[_0x5d5f('0x2b')](handleError(_0x5c7723,null));};function sanitizeRemoteUri(_0x444786){var _0x2a1716=_0x444786[_0x5d5f('0x3f')](-0x1);if(_0x2a1716==='/')return _0x444786[_0x5d5f('0x40')](0x0,_0x444786['lastIndexOf'](_0x2a1716));return _0x444786;}function getWebApiUrl(_0x2b6dd0){return util[_0x5d5f('0x41')](_0x5d5f('0x42'),_0x2b6dd0);}exports[_0x5d5f('0x43')]=function(_0x2db1c7,_0x28c8e1){var _0x272bce=_0x2db1c7['query']['ticketType'];var _0x20e5d7=_0x272bce===_0x5d5f('0x44')?_0x5d5f('0x45'):_0x5d5f('0x46');var _0x9b47bd='';var _0x509cd4='';var _0x3dfc41='';var _0x4db275='';var _0x3eb6b8='';var _0x20d8c3='';var _0x41006b='';var _0x37693f='';var _0x1e8662=['title',_0x5d5f('0x47'),_0x5d5f('0x48'),_0x5d5f('0x49'),_0x5d5f('0x4a'),_0x5d5f('0x4b'),_0x5d5f('0x4c'),_0x5d5f('0x4d'),_0x5d5f('0x4e'),_0x5d5f('0x4f')];var _0xd439ae=[_0x5d5f('0x50'),_0x5d5f('0x51'),_0x5d5f('0x52'),'billedserviceunits','contactidname',_0x5d5f('0x53'),_0x5d5f('0x54'),'contractidname',_0x5d5f('0x55'),_0x5d5f('0x56'),_0x5d5f('0x57'),'createdbyyominame',_0x5d5f('0x58'),_0x5d5f('0x59'),_0x5d5f('0x5a'),'customeridname',_0x5d5f('0x5b'),_0x5d5f('0x5c'),'emailaddress',_0x5d5f('0x5d'),'entityimage_timestamp','entityimage_url',_0x5d5f('0x5e'),_0x5d5f('0x5f'),_0x5d5f('0x60'),_0x5d5f('0x61'),'importsequencenumber',_0x5d5f('0x62'),_0x5d5f('0x63'),_0x5d5f('0x64'),'masteridname',_0x5d5f('0x65'),_0x5d5f('0x66'),'modifiedbyname',_0x5d5f('0x67'),_0x5d5f('0x68'),_0x5d5f('0x69'),_0x5d5f('0x6a'),_0x5d5f('0x6b'),_0x5d5f('0x6c'),'numberofchildincidents',_0x5d5f('0x6d'),_0x5d5f('0x6e'),'owneridname',_0x5d5f('0x6f'),_0x5d5f('0x70'),_0x5d5f('0x71'),_0x5d5f('0x72'),_0x5d5f('0x73'),_0x5d5f('0x74'),_0x5d5f('0x75'),_0x5d5f('0x76'),_0x5d5f('0x77'),_0x5d5f('0x78'),_0x5d5f('0x79'),_0x5d5f('0x7a'),_0x5d5f('0x7b'),_0x5d5f('0x7c'),_0x5d5f('0x7d'),_0x5d5f('0x7e'),_0x5d5f('0x7f'),_0x5d5f('0x80'),_0x5d5f('0x81'),'subjectidname',_0x5d5f('0x82'),_0x5d5f('0x83'),_0x5d5f('0x84'),'traversedpath',_0x5d5f('0x85'),_0x5d5f('0x86')];var _0x4ae8ad=_0x1e8662['concat'](_0xd439ae);return db[_0x5d5f('0x15')][_0x5d5f('0x35')]({'where':{'id':_0x2db1c7['params']['id']},'attributes':['id','username',_0x5d5f('0x87'),'remoteUri',_0x5d5f('0x88'),'clientId',_0x5d5f('0x89'),'modernAuthentication'],'include':[{'model':db[_0x5d5f('0x8a')],'as':_0x5d5f('0x8a'),'attributes':['id','data5','data7']}]})[_0x5d5f('0xe')](handleEntityNotFound(_0x28c8e1,null))[_0x5d5f('0xe')](function(_0x2e07c0){if(_0x2e07c0){if(_0x2e07c0[_0x5d5f('0x8b')]){_0x2e07c0[_0x5d5f('0x8c')]=_0x2e07c0[_0x5d5f('0x8a')][_0x5d5f('0x8d')];_0x37693f=sanitizeRemoteUri(_0x2e07c0[_0x5d5f('0x8a')][_0x5d5f('0x8e')]);_0x41006b=getWebApiUrl(_0x37693f);return _0x2e07c0;}_0x37693f=sanitizeRemoteUri(_0x2e07c0[_0x5d5f('0x8f')]);_0x41006b=getWebApiUrl(_0x37693f);var _0x2a3187={'method':_0x5d5f('0x90'),'uri':_0x5d5f('0x91')+_0x2e07c0[_0x5d5f('0x88')]+_0x5d5f('0x92'),'form':{'client_id':_0x2e07c0['clientId'],'resource':_0x37693f,'username':_0x2e07c0[_0x5d5f('0x93')],'password':_0x2e07c0[_0x5d5f('0x87')],'grant_type':_0x5d5f('0x87'),'client_secret':_0x2e07c0[_0x5d5f('0x89')]},'json':!![]};return rp(_0x2a3187);}})[_0x5d5f('0xe')](function(_0x2ba5c9){_0x20d8c3=_0x2ba5c9[_0x5d5f('0x8c')];var _0x4c53b5={'method':_0x5d5f('0x94'),'uri':encodeURI(_0x41006b+'EntityDefinitions?$select=DisplayName,EntitySetName&$filter=SchemaName\x20eq\x20\x27'+_0x20e5d7+'\x27'),'headers':{'Authorization':_0x5d5f('0x95')+_0x20d8c3,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x4c53b5);})[_0x5d5f('0xe')](function(_0x44f72f){var _0xa7af45=_0x44f72f['value'][0x0];var _0x3ef637=_0xa7af45[_0x5d5f('0x96')];var _0xdaf759={'method':_0x5d5f('0x94'),'uri':_0x41006b+_0x5d5f('0x97')+_0x3ef637+')?$select=LogicalName&$expand=Attributes($select=LogicalName)','headers':{'Authorization':_0x5d5f('0x95')+_0x20d8c3,'If-None-Match':null,'OData-Version':_0x5d5f('0x98')},'json':!![]};return rp(_0xdaf759);})['then'](function(_0x3f3b5f){_0x9b47bd=_0x3f3b5f;_0x509cd4=_0x9b47bd[_0x5d5f('0x99')];_0x509cd4=_[_0x5d5f('0x9a')](_0x509cd4,function(_0x4d9735){return!_0x4ae8ad['includes'](_0x4d9735[_0x5d5f('0x9b')]);});var _0x40c462=[];var _0x777948=[];_0x509cd4[_0x5d5f('0x9c')](function(_0x400caa){if(_0x400caa[_0x5d5f('0x9d')]){var _0x9814e1=_0x400caa[_0x5d5f('0x9d')][_0x5d5f('0x40')](_0x400caa['@odata.type']['lastIndexOf']('.')+0x1);if(_0x9814e1==='PicklistAttributeMetadata'){_0x40c462[_0x5d5f('0x9e')](getSelectList(_0x41006b,_0x272bce,_0x777948,_0x9b47bd[_0x5d5f('0x96')],_0x400caa[_0x5d5f('0x96')],_0x20d8c3));}}});return Promise[_0x5d5f('0x9f')](_0x40c462);})[_0x5d5f('0xe')](function(_0x2f1d2c){_0x3dfc41=_0x2f1d2c[0x0];var _0x4f6084=[];var _0xdddf05=[];_0x509cd4[_0x5d5f('0x9c')](function(_0x20dc46){if(!_['isNil'](_0x20dc46['@odata.type'])){var _0x1f8d53=_0x20dc46[_0x5d5f('0x9d')][_0x5d5f('0x40')](_0x20dc46[_0x5d5f('0x9d')][_0x5d5f('0xa0')]('.')+0x1);if(_0x1f8d53===_0x5d5f('0xa1')){_0x4f6084[_0x5d5f('0x9e')](getBooleanList(_0x41006b,_0x272bce,_0xdddf05,_0x9b47bd[_0x5d5f('0x96')],_0x20dc46[_0x5d5f('0x96')],_0x20d8c3));}}});return Promise[_0x5d5f('0x9f')](_0x4f6084);})[_0x5d5f('0xe')](function(_0x2362c7){_0x4db275=_0x2362c7[0x0];var _0x5cc1c2=[];var _0x3ee015=[];_0x509cd4[_0x5d5f('0x9c')](function(_0x1da0be){if(_0x1da0be[_0x5d5f('0x9d')]){var _0x104077=_0x1da0be['@odata.type'][_0x5d5f('0x40')](_0x1da0be[_0x5d5f('0x9d')][_0x5d5f('0xa0')]('.')+0x1);if(_0x104077===_0x5d5f('0xa2')||_0x104077===_0x5d5f('0xa3')||_0x104077==='BigIntAttributeMetadata'||_0x104077===_0x5d5f('0xa4')||_0x104077===_0x5d5f('0xa5')||_0x104077===_0x5d5f('0xa6')||_0x104077===_0x5d5f('0xa7')||_0x104077===_0x5d5f('0xa8')||_0x104077===_0x5d5f('0xa9')||_0x104077===_0x5d5f('0xaa')){_0x5cc1c2['push'](getInputList(_0x41006b,_0x272bce,_0x104077,_0x3ee015,_0x9b47bd[_0x5d5f('0x96')],_0x1da0be[_0x5d5f('0x96')],_0x20d8c3));}}});return Promise['all'](_0x5cc1c2);})['then'](function(_0x2746e8){_0x3eb6b8=_0x2746e8[0x0];var _0x199c06=_0x3dfc41[_0x5d5f('0xab')](_0x4db275)[_0x5d5f('0xab')](_0x3eb6b8);var _0x2bd361={'count':_0x199c06[_0x5d5f('0x20')],'rows':_0x199c06};return _0x2bd361;})[_0x5d5f('0xe')](respondWithResult(_0x28c8e1,null))['catch'](function(_0x200848){var _0xa3e5e0=_0x2db1c7[_0x5d5f('0x1b')][_0x5d5f('0xac')]?0x1f4:_0x200848['statusCode']||0x1f4;logger[_0x5d5f('0x11')](_0x200848[_0x5d5f('0xad')]);delete _0x200848[_0x5d5f('0x12')];if(_0xa3e5e0===0x191){_0xa3e5e0=0x190;}_0x28c8e1[_0x5d5f('0xb')](_0xa3e5e0)[_0x5d5f('0xae')](_0x2db1c7[_0x5d5f('0x1b')][_0x5d5f('0xac')]?{'message':'Wrong\x20credentials','statusCode':_0x200848[_0x5d5f('0xaf')]}:_0x200848);});};function getSelectList(_0x18e4e4,_0x3327b6,_0x262723,_0x29130c,_0x18879e,_0x3f697c){var _0x415d36={'method':_0x5d5f('0x94'),'uri':_0x18e4e4+_0x5d5f('0x97')+_0x29130c+_0x5d5f('0xb0')+_0x18879e+_0x5d5f('0xb1')+_0x5d5f('0xb2'),'headers':{'Authorization':_0x5d5f('0x95')+_0x3f697c,'If-None-Match':null,'OData-Version':_0x5d5f('0x98')},'json':!![]};return rp(_0x415d36)[_0x5d5f('0xe')](function(_0x49c233){var _0x46cef4=[];var _0x1b5011=_0x49c233[_0x5d5f('0xb3')][_0x5d5f('0xb4')];_0x1b5011['forEach'](function(_0xcd0e4f){_0x46cef4[_0x5d5f('0x9e')]({'name':_0xcd0e4f[_0x5d5f('0xb5')][_0x5d5f('0xb6')]['Label'],'value':String(_0xcd0e4f[_0x5d5f('0xb7')])});});var _0x4854d5={'id':_0x3327b6+'_'+_0x49c233['LogicalName'],'name':_0x49c233[_0x5d5f('0xb8')]['UserLocalizedLabel'][_0x5d5f('0xb5')],'custom':![],'options':_0x46cef4};_0x262723[_0x5d5f('0x9e')](_0x4854d5);return _0x262723;});}function getBooleanList(_0x21afa2,_0x7b5ecc,_0x1ce635,_0x26bce2,_0xee4986,_0x3988df){var _0x1f7784={'method':'GET','uri':_0x21afa2+'EntityDefinitions('+_0x26bce2+')/Attributes('+_0xee4986+_0x5d5f('0xb9'),'headers':{'Authorization':_0x5d5f('0x95')+_0x3988df,'If-None-Match':null,'OData-Version':_0x5d5f('0x98')},'json':!![]};return rp(_0x1f7784)['then'](function(_0x5cd7c4){var _0x51c5dd=[];_0x51c5dd[_0x5d5f('0x9e')]({'name':_0x5cd7c4[_0x5d5f('0xb3')]['TrueOption'][_0x5d5f('0xb5')][_0x5d5f('0xb6')]['Label'],'value':_0x5d5f('0xba')},{'name':_0x5cd7c4[_0x5d5f('0xb3')][_0x5d5f('0xbb')][_0x5d5f('0xb5')][_0x5d5f('0xb6')]['Label'],'value':'false'});var _0x198911={'id':_0x7b5ecc+'_'+_0x5cd7c4[_0x5d5f('0x9b')],'name':_0x5cd7c4['DisplayName']['UserLocalizedLabel'][_0x5d5f('0xb5')],'custom':![],'options':_0x51c5dd};_0x1ce635[_0x5d5f('0x9e')](_0x198911);return _0x1ce635;});}function getInputList(_0x3028b4,_0x498867,_0xb100d7,_0x3d5468,_0x50c244,_0xcf57cf,_0x42c802){var _0x50dba3={'method':_0x5d5f('0x94'),'uri':_0x3028b4+'EntityDefinitions('+_0x50c244+_0x5d5f('0xb0')+_0xcf57cf+')/Microsoft.Dynamics.CRM.'+_0xb100d7+_0x5d5f('0xbc'),'headers':{'Authorization':'Bearer\x20'+_0x42c802,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x50dba3)['then'](function(_0x2e9fbf){var _0x3b0c97={'id':_0x498867+'_'+_0x2e9fbf[_0x5d5f('0x9b')],'name':_0x2e9fbf[_0x5d5f('0xb8')][_0x5d5f('0xb6')]?_0x2e9fbf[_0x5d5f('0xb8')][_0x5d5f('0xb6')]['Label']:_0x2e9fbf[_0x5d5f('0x9b')],'custom':![],'options':[]};_0x3d5468[_0x5d5f('0x9e')](_0x3b0c97);return _0x3d5468;});}
\ No newline at end of file
index cfbc384..ce96a63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['define','lodash','util','../../config/logger','bluebird','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration'];(function(_0xce3fe7,_0x17ecb8){var _0x156d65=function(_0xb8a02b){while(--_0xb8a02b){_0xce3fe7['push'](_0xce3fe7['shift']());}};_0x156d65(++_0x17ecb8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4243a3,_0x447337){_0x4243a3=_0x4243a3-0x0;var _0x1b2a33=_0xa9e0[_0x4243a3];return _0x1b2a33;};'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'));var integrations=require(_0x0a9e('0x8'));module['exports']=function(_0x219af0,_0x441e3a){return _0x219af0[_0x0a9e('0x9')]('Dynamics365Account',attributes,{'tableName':'int_dynamics365_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xe706=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intDynamics365Account.attributes','../../components/integrations/configuration','exports','define','Dynamics365Account','int_dynamics365_accounts','lodash','util'];(function(_0x250f73,_0x393394){var _0xbb8f26=function(_0x2ce7e4){while(--_0x2ce7e4){_0x250f73['push'](_0x250f73['shift']());}};_0xbb8f26(++_0x393394);}(_0xe706,0xa3));var _0x6e70=function(_0x10c814,_0x2c5349){_0x10c814=_0x10c814-0x0;var _0x3620e8=_0xe706[_0x10c814];return _0x3620e8;};'use strict';var _=require(_0x6e70('0x0'));var util=require(_0x6e70('0x1'));var logger=require(_0x6e70('0x2'))('api');var moment=require(_0x6e70('0x3'));var BPromise=require(_0x6e70('0x4'));var rp=require(_0x6e70('0x5'));var fs=require('fs');var path=require(_0x6e70('0x6'));var rimraf=require(_0x6e70('0x7'));var config=require(_0x6e70('0x8'));var attributes=require(_0x6e70('0x9'));var integrations=require(_0x6e70('0xa'));module[_0x6e70('0xb')]=function(_0x4381d1,_0x36357b){return _0x4381d1[_0x6e70('0xc')](_0x6e70('0xd'),attributes,{'tableName':_0x6e70('0xe'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 83ca5c4..1564018 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x097f=['client','http','request','then','Dynamics365Account,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','result','catch','GetDynamics365Account','Dynamics365Account','findAll','options','raw','limit','include','map','model','attributes','ShowDynamics365Account','find','where','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0xf15be4,_0x2c2591){var _0x2b6849=function(_0x544282){while(--_0x544282){_0xf15be4['push'](_0xf15be4['shift']());}};_0x2b6849(++_0x2c2591);}(_0x097f,0x1b3));var _0xf097=function(_0x514816,_0x57c091){_0x514816=_0x514816-0x0;var _0x5c3a43=_0x097f[_0x514816];return _0x5c3a43;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xf097('0x0'));var BPromise=require(_0xf097('0x1'));var rs=require(_0xf097('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf097('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xf097('0x4'))(_0xf097('0x5'));var config=require(_0xf097('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xf097('0x7')][_0xf097('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x26a342,_0x470c2e,_0x52420e){return new BPromise(function(_0x4b6252,_0x54b255){return client[_0xf097('0x9')](_0x26a342,_0x52420e)[_0xf097('0xa')](function(_0x4b776c){logger['info'](_0xf097('0xb'),_0x470c2e,'request\x20sent');logger[_0xf097('0xc')]('Dynamics365Account,\x20%s,\x20%s,\x20%s',_0x470c2e,_0xf097('0xd'),JSON[_0xf097('0xe')](_0x4b776c));if(_0x4b776c[_0xf097('0xf')]){if(_0x4b776c[_0xf097('0xf')][_0xf097('0x10')]===0x1f4){logger[_0xf097('0xf')](_0xf097('0xb'),_0x470c2e,_0x4b776c[_0xf097('0xf')]['message']);return _0x54b255(_0x4b776c['error'][_0xf097('0x11')]);}logger[_0xf097('0xf')](_0xf097('0xb'),_0x470c2e,_0x4b776c[_0xf097('0xf')][_0xf097('0x11')]);return _0x4b6252(_0x4b776c[_0xf097('0xf')][_0xf097('0x11')]);}else{logger[_0xf097('0x12')](_0xf097('0xb'),_0x470c2e,'request\x20sent');_0x4b6252(_0x4b776c[_0xf097('0x13')][_0xf097('0x11')]);}})[_0xf097('0x14')](function(_0x2e9fc2){logger[_0xf097('0xf')](_0xf097('0xb'),_0x470c2e,_0x2e9fc2);_0x54b255(_0x2e9fc2);});});}exports[_0xf097('0x15')]=function(_0x508a3a){var _0x803827=this;return new Promise(function(_0xe1f193,_0x473468){return db[_0xf097('0x16')][_0xf097('0x17')]({'raw':_0x508a3a[_0xf097('0x18')]?_0x508a3a[_0xf097('0x18')][_0xf097('0x19')]===undefined?!![]:![]:!![],'where':_0x508a3a[_0xf097('0x18')]?_0x508a3a[_0xf097('0x18')]['where']||null:null,'attributes':_0x508a3a['options']?_0x508a3a['options']['attributes']||null:null,'limit':_0x508a3a[_0xf097('0x18')]?_0x508a3a[_0xf097('0x18')][_0xf097('0x1a')]||null:null,'include':_0x508a3a['options']?_0x508a3a[_0xf097('0x18')][_0xf097('0x1b')]?_[_0xf097('0x1c')](_0x508a3a[_0xf097('0x18')]['include'],function(_0x1085fe){return{'model':db[_0x1085fe[_0xf097('0x1d')]],'as':_0x1085fe['as'],'attributes':_0x1085fe[_0xf097('0x1e')],'include':_0x1085fe[_0xf097('0x1b')]?_[_0xf097('0x1c')](_0x1085fe[_0xf097('0x1b')],function(_0x2bcd6e){return{'model':db[_0x2bcd6e[_0xf097('0x1d')]],'as':_0x2bcd6e['as'],'attributes':_0x2bcd6e[_0xf097('0x1e')],'include':_0x2bcd6e['include']?_['map'](_0x2bcd6e[_0xf097('0x1b')],function(_0x228536){return{'model':db[_0x228536['model']],'as':_0x228536['as'],'attributes':_0x228536['attributes']};}):[]};}):[]};}):[]:[]})[_0xf097('0xa')](function(_0x5e1b87){logger[_0xf097('0x12')](_0xf097('0x15'),_0x508a3a);logger[_0xf097('0xc')](_0xf097('0x15'),_0x508a3a,JSON[_0xf097('0xe')](_0x5e1b87));_0xe1f193(_0x5e1b87);})[_0xf097('0x14')](function(_0x213a77){logger['error'](_0xf097('0x15'),_0x213a77[_0xf097('0x11')],_0x508a3a);_0x473468(_0x803827[_0xf097('0xf')](0x1f4,_0x213a77[_0xf097('0x11')]));});});};exports[_0xf097('0x1f')]=function(_0x241374){var _0x527c11=this;return new Promise(function(_0x516f14,_0x415341){return db[_0xf097('0x16')][_0xf097('0x20')]({'raw':_0x241374[_0xf097('0x18')]?_0x241374[_0xf097('0x18')][_0xf097('0x19')]===undefined?!![]:![]:!![],'where':_0x241374[_0xf097('0x18')]?_0x241374[_0xf097('0x18')][_0xf097('0x21')]||null:null,'attributes':_0x241374[_0xf097('0x18')]?_0x241374['options']['attributes']||null:null,'include':_0x241374[_0xf097('0x18')]?_0x241374[_0xf097('0x18')]['include']?_[_0xf097('0x1c')](_0x241374[_0xf097('0x18')]['include'],function(_0x3e3ec9){return{'model':db[_0x3e3ec9['model']],'as':_0x3e3ec9['as'],'attributes':_0x3e3ec9[_0xf097('0x1e')],'include':_0x3e3ec9[_0xf097('0x1b')]?_[_0xf097('0x1c')](_0x3e3ec9['include'],function(_0x3b0f29){return{'model':db[_0x3b0f29['model']],'as':_0x3b0f29['as'],'attributes':_0x3b0f29[_0xf097('0x1e')],'include':_0x3b0f29['include']?_[_0xf097('0x1c')](_0x3b0f29[_0xf097('0x1b')],function(_0x134fc0){return{'model':db[_0x134fc0[_0xf097('0x1d')]],'as':_0x134fc0['as'],'attributes':_0x134fc0[_0xf097('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xf097('0xa')](function(_0x50d63d){logger[_0xf097('0x12')]('ShowDynamics365Account',_0x241374);logger['debug'](_0xf097('0x1f'),_0x241374,JSON[_0xf097('0xe')](_0x50d63d));_0x516f14(_0x50d63d);})[_0xf097('0x14')](function(_0xeebc2){logger[_0xf097('0xf')](_0xf097('0x1f'),_0xeebc2[_0xf097('0x11')],_0x241374);_0x415341(_0x527c11[_0xf097('0xf')](0x1f4,_0xeebc2[_0xf097('0x11')]));});});};
\ No newline at end of file
+var _0xeb36=['GetDynamics365Account','Dynamics365Account','findAll','options','raw','include','model','attributes','map','catch','ShowDynamics365Account','where','stringify','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Dynamics365Account,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Account,\x20%s,\x20%s,\x20%s','error','code','message','result'];(function(_0x369534,_0x5557c4){var _0x524bf9=function(_0x24c6fb){while(--_0x24c6fb){_0x369534['push'](_0x369534['shift']());}};_0x524bf9(++_0x5557c4);}(_0xeb36,0x1bd));var _0x6eb3=function(_0x213b11,_0x544523){_0x213b11=_0x213b11-0x0;var _0xb5756d=_0xeb36[_0x213b11];return _0xb5756d;};'use strict';var _=require(_0x6eb3('0x0'));var util=require(_0x6eb3('0x1'));var moment=require(_0x6eb3('0x2'));var BPromise=require(_0x6eb3('0x3'));var rs=require(_0x6eb3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6eb3('0x5'))['db'];var utils=require(_0x6eb3('0x6'));var logger=require('../../config/logger')(_0x6eb3('0x7'));var config=require(_0x6eb3('0x8'));var jayson=require(_0x6eb3('0x9'));var client=jayson[_0x6eb3('0xa')][_0x6eb3('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x38b321,_0x1611af,_0x39bcdc){return new BPromise(function(_0xa24df5,_0x14396f){return client[_0x6eb3('0xc')](_0x38b321,_0x39bcdc)[_0x6eb3('0xd')](function(_0x3600d5){logger[_0x6eb3('0xe')](_0x6eb3('0xf'),_0x1611af,_0x6eb3('0x10'));logger[_0x6eb3('0x11')](_0x6eb3('0x12'),_0x1611af,_0x6eb3('0x10'),JSON['stringify'](_0x3600d5));if(_0x3600d5[_0x6eb3('0x13')]){if(_0x3600d5[_0x6eb3('0x13')][_0x6eb3('0x14')]===0x1f4){logger['error'](_0x6eb3('0xf'),_0x1611af,_0x3600d5['error']['message']);return _0x14396f(_0x3600d5[_0x6eb3('0x13')][_0x6eb3('0x15')]);}logger[_0x6eb3('0x13')](_0x6eb3('0xf'),_0x1611af,_0x3600d5[_0x6eb3('0x13')][_0x6eb3('0x15')]);return _0xa24df5(_0x3600d5[_0x6eb3('0x13')][_0x6eb3('0x15')]);}else{logger['info'](_0x6eb3('0xf'),_0x1611af,_0x6eb3('0x10'));_0xa24df5(_0x3600d5[_0x6eb3('0x16')][_0x6eb3('0x15')]);}})['catch'](function(_0x1a77b8){logger[_0x6eb3('0x13')](_0x6eb3('0xf'),_0x1611af,_0x1a77b8);_0x14396f(_0x1a77b8);});});}exports[_0x6eb3('0x17')]=function(_0x2984c0){var _0x61cffa=this;return new Promise(function(_0x572d29,_0xf473ec){return db[_0x6eb3('0x18')][_0x6eb3('0x19')]({'raw':_0x2984c0[_0x6eb3('0x1a')]?_0x2984c0[_0x6eb3('0x1a')][_0x6eb3('0x1b')]===undefined?!![]:![]:!![],'where':_0x2984c0['options']?_0x2984c0[_0x6eb3('0x1a')]['where']||null:null,'attributes':_0x2984c0[_0x6eb3('0x1a')]?_0x2984c0['options']['attributes']||null:null,'limit':_0x2984c0[_0x6eb3('0x1a')]?_0x2984c0[_0x6eb3('0x1a')]['limit']||null:null,'include':_0x2984c0['options']?_0x2984c0[_0x6eb3('0x1a')][_0x6eb3('0x1c')]?_['map'](_0x2984c0[_0x6eb3('0x1a')][_0x6eb3('0x1c')],function(_0x61331){return{'model':db[_0x61331[_0x6eb3('0x1d')]],'as':_0x61331['as'],'attributes':_0x61331['attributes'],'include':_0x61331['include']?_['map'](_0x61331[_0x6eb3('0x1c')],function(_0x482551){return{'model':db[_0x482551[_0x6eb3('0x1d')]],'as':_0x482551['as'],'attributes':_0x482551[_0x6eb3('0x1e')],'include':_0x482551[_0x6eb3('0x1c')]?_[_0x6eb3('0x1f')](_0x482551[_0x6eb3('0x1c')],function(_0x1dfa9f){return{'model':db[_0x1dfa9f['model']],'as':_0x1dfa9f['as'],'attributes':_0x1dfa9f[_0x6eb3('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x6eb3('0xd')](function(_0x87cb51){logger[_0x6eb3('0xe')](_0x6eb3('0x17'),_0x2984c0);logger[_0x6eb3('0x11')](_0x6eb3('0x17'),_0x2984c0,JSON['stringify'](_0x87cb51));_0x572d29(_0x87cb51);})[_0x6eb3('0x20')](function(_0x39d875){logger[_0x6eb3('0x13')](_0x6eb3('0x17'),_0x39d875['message'],_0x2984c0);_0xf473ec(_0x61cffa[_0x6eb3('0x13')](0x1f4,_0x39d875[_0x6eb3('0x15')]));});});};exports[_0x6eb3('0x21')]=function(_0x498f6d){var _0x159c80=this;return new Promise(function(_0x3d5352,_0x227c2d){return db[_0x6eb3('0x18')]['find']({'raw':_0x498f6d[_0x6eb3('0x1a')]?_0x498f6d[_0x6eb3('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x498f6d[_0x6eb3('0x1a')]?_0x498f6d[_0x6eb3('0x1a')][_0x6eb3('0x22')]||null:null,'attributes':_0x498f6d[_0x6eb3('0x1a')]?_0x498f6d[_0x6eb3('0x1a')][_0x6eb3('0x1e')]||null:null,'include':_0x498f6d[_0x6eb3('0x1a')]?_0x498f6d[_0x6eb3('0x1a')]['include']?_[_0x6eb3('0x1f')](_0x498f6d[_0x6eb3('0x1a')][_0x6eb3('0x1c')],function(_0x4ce078){return{'model':db[_0x4ce078[_0x6eb3('0x1d')]],'as':_0x4ce078['as'],'attributes':_0x4ce078[_0x6eb3('0x1e')],'include':_0x4ce078[_0x6eb3('0x1c')]?_[_0x6eb3('0x1f')](_0x4ce078[_0x6eb3('0x1c')],function(_0x19ee38){return{'model':db[_0x19ee38[_0x6eb3('0x1d')]],'as':_0x19ee38['as'],'attributes':_0x19ee38[_0x6eb3('0x1e')],'include':_0x19ee38[_0x6eb3('0x1c')]?_[_0x6eb3('0x1f')](_0x19ee38[_0x6eb3('0x1c')],function(_0x54ea72){return{'model':db[_0x54ea72['model']],'as':_0x54ea72['as'],'attributes':_0x54ea72[_0x6eb3('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x6eb3('0xd')](function(_0xca2b05){logger[_0x6eb3('0xe')](_0x6eb3('0x21'),_0x498f6d);logger[_0x6eb3('0x11')](_0x6eb3('0x21'),_0x498f6d,JSON[_0x6eb3('0x23')](_0xca2b05));_0x3d5352(_0xca2b05);})[_0x6eb3('0x20')](function(_0x39effe){logger['error']('ShowDynamics365Account',_0x39effe[_0x6eb3('0x15')],_0x498f6d);_0x227c2d(_0x159c80[_0x6eb3('0x13')](0x1f4,_0x39effe[_0x6eb3('0x15')]));});});};
\ No newline at end of file
index 0af7c93..3cc8588 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe78f=['post','create','update','delete','destroy','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','/:id','show','get','/:id/fields','/:id/subjects','/:id/descriptions','getDescriptions'];(function(_0x26a90e,_0x3e3ca2){var _0x34bb2b=function(_0x2e3d4f){while(--_0x2e3d4f){_0x26a90e['push'](_0x26a90e['shift']());}};_0x34bb2b(++_0x3e3ca2);}(_0xe78f,0x1d3));var _0xfe78=function(_0x523ea8,_0x32446d){_0x523ea8=_0x523ea8-0x0;var _0x4a8303=_0xe78f[_0x523ea8];return _0x4a8303;};'use strict';var multer=require(_0xfe78('0x0'));var util=require(_0xfe78('0x1'));var path=require(_0xfe78('0x2'));var timeout=require(_0xfe78('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xfe78('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xfe78('0x5'));var config=require(_0xfe78('0x6'));var controller=require('./intDynamics365Configuration.controller');router['get']('/',auth[_0xfe78('0x7')](),controller[_0xfe78('0x8')]);router['get'](_0xfe78('0x9'),auth[_0xfe78('0x7')](),controller[_0xfe78('0xa')]);router[_0xfe78('0xb')](_0xfe78('0xc'),auth[_0xfe78('0x7')](),controller['getFields']);router[_0xfe78('0xb')](_0xfe78('0xd'),auth[_0xfe78('0x7')](),controller['getSubjects']);router[_0xfe78('0xb')](_0xfe78('0xe'),auth[_0xfe78('0x7')](),controller[_0xfe78('0xf')]);router[_0xfe78('0x10')]('/',auth[_0xfe78('0x7')](),controller[_0xfe78('0x11')]);router['put'](_0xfe78('0x9'),auth[_0xfe78('0x7')](),controller[_0xfe78('0x12')]);router[_0xfe78('0x13')](_0xfe78('0x9'),auth[_0xfe78('0x7')](),controller[_0xfe78('0x14')]);module['exports']=router;
\ No newline at end of file
+var _0x07a2=['destroy','multer','util','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intDynamics365Configuration.controller','get','/:id','isAuthenticated','show','/:id/fields','getSubjects','getDescriptions','post','create','put','update','delete'];(function(_0x2d144d,_0x43501e){var _0x498753=function(_0x41904f){while(--_0x41904f){_0x2d144d['push'](_0x2d144d['shift']());}};_0x498753(++_0x43501e);}(_0x07a2,0x12c));var _0x207a=function(_0x218994,_0x2cf487){_0x218994=_0x218994-0x0;var _0x3f350b=_0x07a2[_0x218994];return _0x3f350b;};'use strict';var multer=require(_0x207a('0x0'));var util=require(_0x207a('0x1'));var path=require('path');var timeout=require(_0x207a('0x2'));var express=require(_0x207a('0x3'));var router=express[_0x207a('0x4')]();var fs_extra=require(_0x207a('0x5'));var auth=require(_0x207a('0x6'));var interaction=require(_0x207a('0x7'));var config=require(_0x207a('0x8'));var controller=require(_0x207a('0x9'));router[_0x207a('0xa')]('/',auth['isAuthenticated'](),controller['index']);router[_0x207a('0xa')](_0x207a('0xb'),auth[_0x207a('0xc')](),controller[_0x207a('0xd')]);router[_0x207a('0xa')](_0x207a('0xe'),auth['isAuthenticated'](),controller['getFields']);router[_0x207a('0xa')]('/:id/subjects',auth['isAuthenticated'](),controller[_0x207a('0xf')]);router['get']('/:id/descriptions',auth[_0x207a('0xc')](),controller[_0x207a('0x10')]);router[_0x207a('0x11')]('/',auth['isAuthenticated'](),controller[_0x207a('0x12')]);router[_0x207a('0x13')](_0x207a('0xb'),auth['isAuthenticated'](),controller[_0x207a('0x14')]);router[_0x207a('0x15')](_0x207a('0xb'),auth[_0x207a('0xc')](),controller[_0x207a('0x16')]);module['exports']=router;
\ No newline at end of file
index 3968ec6..dde3e26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a0d=['incident','phonecall','contact','nothing','exports','STRING','ENUM'];(function(_0x11946c,_0x12152c){var _0x383935=function(_0x61fce2){while(--_0x61fce2){_0x11946c['push'](_0x11946c['shift']());}};_0x383935(++_0x12152c);}(_0x6a0d,0x162));var _0xd6a0=function(_0x4154a6,_0x2c0b8e){_0x4154a6=_0x4154a6-0x0;var _0x3b2786=_0x6a0d[_0x4154a6];return _0x3b2786;};'use strict';var Sequelize=require('sequelize');module[_0xd6a0('0x0')]={'name':{'type':Sequelize[_0xd6a0('0x1')]},'description':{'type':Sequelize[_0xd6a0('0x1')]},'ticketType':{'type':Sequelize[_0xd6a0('0x2')](_0xd6a0('0x3'),_0xd6a0('0x4')),'defaultValue':'incident'},'moduleCreate':{'type':Sequelize[_0xd6a0('0x2')](_0xd6a0('0x5'),_0xd6a0('0x6')),'defaultValue':_0xd6a0('0x5'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0xd6a0('0x1')],'allowNull':!![]}};
\ No newline at end of file
+var _0x7f4c=['nothing','sequelize','exports','STRING','ENUM','incident','phonecall','contact'];(function(_0x2254fe,_0x14e7eb){var _0x4de2ce=function(_0x165a84){while(--_0x165a84){_0x2254fe['push'](_0x2254fe['shift']());}};_0x4de2ce(++_0x14e7eb);}(_0x7f4c,0x119));var _0xc7f4=function(_0x2fc03c,_0x1ec060){_0x2fc03c=_0x2fc03c-0x0;var _0x526052=_0x7f4c[_0x2fc03c];return _0x526052;};'use strict';var Sequelize=require(_0xc7f4('0x0'));module[_0xc7f4('0x1')]={'name':{'type':Sequelize[_0xc7f4('0x2')]},'description':{'type':Sequelize['STRING']},'ticketType':{'type':Sequelize[_0xc7f4('0x3')](_0xc7f4('0x4'),_0xc7f4('0x5')),'defaultValue':_0xc7f4('0x4')},'moduleCreate':{'type':Sequelize['ENUM'](_0xc7f4('0x6'),_0xc7f4('0x7')),'defaultValue':_0xc7f4('0x6'),'allowNull':![]},'additionalSearchContact':{'type':Sequelize[_0xc7f4('0x2')],'allowNull':!![]}};
\ No newline at end of file
index 4198c6f..f47798a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96a7=['body','find','getFields','Dynamics365Field','hasOwnProperty','nolimit','catch','getSubjects','findOne','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','undefined','limit','count','Content-Range','reject','update','then','destroy','stack','name','send','index','map','Dynamics365Configuration','fieldName','type','key','query','keys','filters','intersection','attributes','length','model','offset','order','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','params','rawAttributes','fields','create'];(function(_0x491ace,_0x13ed1d){var _0x4d6014=function(_0x2cc8b3){while(--_0x2cc8b3){_0x491ace['push'](_0x491ace['shift']());}};_0x4d6014(++_0x13ed1d);}(_0x96a7,0x195));var _0x796a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x96a7[_0x20a584];return _0x4b41a8;};'use strict';var emlformat=require(_0x796a('0x0'));var rimraf=require(_0x796a('0x1'));var zipdir=require(_0x796a('0x2'));var jsonpatch=require(_0x796a('0x3'));var rp=require(_0x796a('0x4'));var moment=require(_0x796a('0x5'));var BPromise=require(_0x796a('0x6'));var Mustache=require(_0x796a('0x7'));var util=require('util');var path=require(_0x796a('0x8'));var sox=require(_0x796a('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x796a('0xa'));var squel=require(_0x796a('0xb'));var crypto=require(_0x796a('0xc'));var jsforce=require(_0x796a('0xd'));var deskjs=require(_0x796a('0xe'));var toCsv=require(_0x796a('0xf'));var querystring=require(_0x796a('0x10'));var Papa=require(_0x796a('0x11'));var Redis=require(_0x796a('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x796a('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x796a('0x14'))(_0x796a('0x15'));var utils=require(_0x796a('0x16'));var config=require(_0x796a('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x796a('0x18'))['db'];function respondWithStatusCode(_0x45fbb2,_0xdfe37f){_0xdfe37f=_0xdfe37f||0xcc;return function(_0x469953){if(_0x469953){return _0x45fbb2[_0x796a('0x19')](_0xdfe37f);}return _0x45fbb2['status'](_0xdfe37f)[_0x796a('0x1a')]();};}function respondWithResult(_0x393351,_0x3ada34){_0x3ada34=_0x3ada34||0xc8;return function(_0x59b6f9){if(_0x59b6f9){return _0x393351[_0x796a('0x1b')](_0x3ada34)[_0x796a('0x1c')](_0x59b6f9);}};}function respondWithFilteredResult(_0x42bd60,_0x32bc17){return function(_0x172e9f){if(_0x172e9f){var _0x3873b6=typeof _0x32bc17['offset']===_0x796a('0x1d')&&typeof _0x32bc17[_0x796a('0x1e')]===_0x796a('0x1d');var _0x107064=_0x172e9f[_0x796a('0x1f')];var _0x4f04eb=_0x3873b6?0x0:_0x32bc17['offset'];var _0x4b0c20=_0x3873b6?_0x172e9f[_0x796a('0x1f')]:_0x32bc17['offset']+_0x32bc17[_0x796a('0x1e')];var _0x595ac9;if(_0x4b0c20>=_0x107064){_0x4b0c20=_0x107064;_0x595ac9=0xc8;}else{_0x595ac9=0xce;}_0x42bd60[_0x796a('0x1b')](_0x595ac9);return _0x42bd60['set'](_0x796a('0x20'),_0x4f04eb+'-'+_0x4b0c20+'/'+_0x107064)[_0x796a('0x1c')](_0x172e9f);}return null;};}function patchUpdates(_0x1aa705){return function(_0x34e112){try{jsonpatch['apply'](_0x34e112,_0x1aa705,!![]);}catch(_0xca22aa){return BPromise[_0x796a('0x21')](_0xca22aa);}return _0x34e112['save']();};}function saveUpdates(_0x1c71c1,_0x57a6c8){return function(_0x1cc4a7){if(_0x1cc4a7){return _0x1cc4a7[_0x796a('0x22')](_0x1c71c1)[_0x796a('0x23')](function(_0x43d4ec){return _0x43d4ec;});}return null;};}function removeEntity(_0x64a773,_0x1367be){return function(_0x4cd954){if(_0x4cd954){return _0x4cd954[_0x796a('0x24')]()['then'](function(){_0x64a773[_0x796a('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x559ff7,_0x377046){return function(_0x2c0a20){if(!_0x2c0a20){_0x559ff7[_0x796a('0x19')](0x194);}return _0x2c0a20;};}function handleError(_0x3d9fe4,_0x211b7f){_0x211b7f=_0x211b7f||0x1f4;return function(_0x1db025){logger['error'](_0x1db025[_0x796a('0x25')]);if(_0x1db025[_0x796a('0x26')]){delete _0x1db025['name'];}_0x3d9fe4[_0x796a('0x1b')](_0x211b7f)[_0x796a('0x27')](_0x1db025);};}exports[_0x796a('0x28')]=function(_0x5b64b1,_0x47f277){var _0x565089={},_0x35d000={},_0x412fc3={'count':0x0,'rows':[]};var _0x6c887f=_[_0x796a('0x29')](db[_0x796a('0x2a')]['rawAttributes'],function(_0x2ff26d){return{'name':_0x2ff26d[_0x796a('0x2b')],'type':_0x2ff26d[_0x796a('0x2c')][_0x796a('0x2d')]};});_0x35d000['model']=_[_0x796a('0x29')](_0x6c887f,_0x796a('0x26'));_0x35d000[_0x796a('0x2e')]=_[_0x796a('0x2f')](_0x5b64b1[_0x796a('0x2e')]);_0x35d000[_0x796a('0x30')]=_[_0x796a('0x31')](_0x35d000['model'],_0x35d000[_0x796a('0x2e')]);_0x565089[_0x796a('0x32')]=_[_0x796a('0x31')](_0x35d000['model'],qs['fields'](_0x5b64b1[_0x796a('0x2e')]['fields']));_0x565089['attributes']=_0x565089[_0x796a('0x32')][_0x796a('0x33')]?_0x565089[_0x796a('0x32')]:_0x35d000[_0x796a('0x34')];if(!_0x5b64b1[_0x796a('0x2e')]['hasOwnProperty']('nolimit')){_0x565089['limit']=qs[_0x796a('0x1e')](_0x5b64b1['query'][_0x796a('0x1e')]);_0x565089[_0x796a('0x35')]=qs[_0x796a('0x35')](_0x5b64b1[_0x796a('0x2e')][_0x796a('0x35')]);}_0x565089[_0x796a('0x36')]=qs['sort'](_0x5b64b1[_0x796a('0x2e')][_0x796a('0x37')]);_0x565089[_0x796a('0x38')]=qs[_0x796a('0x30')](_[_0x796a('0x39')](_0x5b64b1[_0x796a('0x2e')],_0x35d000[_0x796a('0x30')]),_0x6c887f);if(_0x5b64b1[_0x796a('0x2e')][_0x796a('0x3a')]){_0x565089['where']=_[_0x796a('0x3b')](_0x565089[_0x796a('0x38')],{'$or':_['map'](_0x6c887f,function(_0x3a16c1){if(_0x3a16c1[_0x796a('0x2c')]!=='VIRTUAL'){var _0x291273={};_0x291273[_0x3a16c1['name']]={'$like':'%'+_0x5b64b1[_0x796a('0x2e')]['filter']+'%'};return _0x291273;}})});}_0x565089=_[_0x796a('0x3b')]({},_0x565089,_0x5b64b1[_0x796a('0x3c')]);var _0x7ed6ec={'where':_0x565089['where']};return db['Dynamics365Configuration'][_0x796a('0x1f')](_0x7ed6ec)['then'](function(_0xa24a7c){_0x412fc3[_0x796a('0x1f')]=_0xa24a7c;if(_0x5b64b1['query'][_0x796a('0x3d')]){_0x565089[_0x796a('0x3e')]=[{'all':!![]}];}return db[_0x796a('0x2a')][_0x796a('0x3f')](_0x565089);})[_0x796a('0x23')](function(_0x3f10bb){_0x412fc3[_0x796a('0x40')]=_0x3f10bb;return _0x412fc3;})['then'](respondWithFilteredResult(_0x47f277,_0x565089))['catch'](handleError(_0x47f277,null));};exports['show']=function(_0x2adfdc,_0x22fe51){var _0x105fa6={'raw':![],'where':{'id':_0x2adfdc[_0x796a('0x41')]['id']}},_0x5c8f2e={};_0x5c8f2e['model']=_[_0x796a('0x2f')](db[_0x796a('0x2a')][_0x796a('0x42')]);_0x5c8f2e[_0x796a('0x2e')]=_['keys'](_0x2adfdc[_0x796a('0x2e')]);_0x5c8f2e['filters']=_[_0x796a('0x31')](_0x5c8f2e[_0x796a('0x34')],_0x5c8f2e[_0x796a('0x2e')]);_0x105fa6[_0x796a('0x32')]=_[_0x796a('0x31')](_0x5c8f2e[_0x796a('0x34')],qs[_0x796a('0x43')](_0x2adfdc[_0x796a('0x2e')][_0x796a('0x43')]));_0x105fa6[_0x796a('0x32')]=_0x105fa6[_0x796a('0x32')]['length']?_0x105fa6[_0x796a('0x32')]:_0x5c8f2e[_0x796a('0x34')];if(_0x2adfdc[_0x796a('0x2e')]['includeAll']){_0x105fa6['include']=[{'all':!![]}];}_0x105fa6=_['merge']({},_0x105fa6,_0x2adfdc['options']);return db[_0x796a('0x2a')]['find'](_0x105fa6)[_0x796a('0x23')](handleEntityNotFound(_0x22fe51,null))[_0x796a('0x23')](respondWithResult(_0x22fe51,null))['catch'](handleError(_0x22fe51,null));};exports[_0x796a('0x44')]=function(_0x1556d6,_0x3be654){return db[_0x796a('0x2a')]['create'](_0x1556d6['body'],{})[_0x796a('0x23')](respondWithResult(_0x3be654,0xc9))['catch'](handleError(_0x3be654,null));};exports[_0x796a('0x22')]=function(_0x237d7d,_0x453081){if(_0x237d7d['body']['id']){delete _0x237d7d[_0x796a('0x45')]['id'];}return db[_0x796a('0x2a')][_0x796a('0x46')]({'where':{'id':_0x237d7d['params']['id']}})[_0x796a('0x23')](handleEntityNotFound(_0x453081,null))['then'](saveUpdates(_0x237d7d['body'],null))[_0x796a('0x23')](respondWithResult(_0x453081,null))['catch'](handleError(_0x453081,null));};exports[_0x796a('0x24')]=function(_0x2c398f,_0x285e9e){return db['Dynamics365Configuration']['find']({'where':{'id':_0x2c398f[_0x796a('0x41')]['id']}})[_0x796a('0x23')](handleEntityNotFound(_0x285e9e,null))['then'](removeEntity(_0x285e9e,null))['catch'](handleError(_0x285e9e,null));};exports[_0x796a('0x47')]=function(_0x2c7d69,_0x1a9df0,_0x400dd9){var _0x275fbd={};var _0x4725f1={};var _0x51a107;var _0x4dbc8c;return db[_0x796a('0x2a')]['findOne']({'where':{'id':_0x2c7d69['params']['id']}})[_0x796a('0x23')](handleEntityNotFound(_0x1a9df0,null))[_0x796a('0x23')](function(_0x130c19){if(_0x130c19){_0x51a107=_0x130c19;_0x4725f1[_0x796a('0x34')]=_[_0x796a('0x2f')](db[_0x796a('0x48')][_0x796a('0x42')]);_0x4725f1[_0x796a('0x2e')]=_[_0x796a('0x2f')](_0x2c7d69['query']);_0x4725f1[_0x796a('0x30')]=_[_0x796a('0x31')](_0x4725f1[_0x796a('0x34')],_0x4725f1[_0x796a('0x2e')]);_0x275fbd[_0x796a('0x32')]=_[_0x796a('0x31')](_0x4725f1[_0x796a('0x34')],qs[_0x796a('0x43')](_0x2c7d69[_0x796a('0x2e')]['fields']));_0x275fbd[_0x796a('0x32')]=_0x275fbd[_0x796a('0x32')][_0x796a('0x33')]?_0x275fbd[_0x796a('0x32')]:_0x4725f1[_0x796a('0x34')];_0x275fbd[_0x796a('0x36')]=qs['sort'](_0x2c7d69[_0x796a('0x2e')][_0x796a('0x37')]);_0x275fbd[_0x796a('0x38')]=qs[_0x796a('0x30')](_['pick'](_0x2c7d69[_0x796a('0x2e')],_0x4725f1[_0x796a('0x30')]));if(_0x2c7d69[_0x796a('0x2e')][_0x796a('0x3a')]){_0x275fbd[_0x796a('0x38')]=_[_0x796a('0x3b')](_0x275fbd[_0x796a('0x38')],{'$or':_[_0x796a('0x29')](_0x275fbd[_0x796a('0x32')],function(_0x5d6005){var _0x3c7666={};_0x3c7666[_0x5d6005]={'$like':'%'+_0x2c7d69[_0x796a('0x2e')]['filter']+'%'};return _0x3c7666;})});}_0x275fbd=_[_0x796a('0x3b')]({},_0x275fbd,_0x2c7d69[_0x796a('0x3c')]);return _0x51a107['getFields'](_0x275fbd);}})['then'](function(_0x11bcfc){if(_0x11bcfc){_0x4dbc8c=_0x11bcfc['length'];if(!_0x2c7d69[_0x796a('0x2e')][_0x796a('0x49')](_0x796a('0x4a'))){_0x275fbd['limit']=qs['limit'](_0x2c7d69[_0x796a('0x2e')]['limit']);_0x275fbd[_0x796a('0x35')]=qs[_0x796a('0x35')](_0x2c7d69[_0x796a('0x2e')][_0x796a('0x35')]);}return _0x51a107[_0x796a('0x47')](_0x275fbd);}})['then'](function(_0x5e1cea){if(_0x5e1cea){return _0x5e1cea?{'count':_0x4dbc8c,'rows':_0x5e1cea}:null;}})[_0x796a('0x23')](respondWithResult(_0x1a9df0,null))[_0x796a('0x4b')](handleError(_0x1a9df0,null));};exports[_0x796a('0x4c')]=function(_0x16cca9,_0x5f1cf8,_0x275e13){var _0x483382={};var _0x28f2f6={};var _0x463c1;var _0x1df750;return db[_0x796a('0x2a')][_0x796a('0x4d')]({'where':{'id':_0x16cca9[_0x796a('0x41')]['id']}})[_0x796a('0x23')](handleEntityNotFound(_0x5f1cf8,null))[_0x796a('0x23')](function(_0x4bea6a){if(_0x4bea6a){_0x463c1=_0x4bea6a;_0x28f2f6[_0x796a('0x34')]=_['keys'](db['Dynamics365Field'][_0x796a('0x42')]);_0x28f2f6['query']=_[_0x796a('0x2f')](_0x16cca9['query']);_0x28f2f6[_0x796a('0x30')]=_[_0x796a('0x31')](_0x28f2f6[_0x796a('0x34')],_0x28f2f6['query']);_0x483382[_0x796a('0x32')]=_[_0x796a('0x31')](_0x28f2f6[_0x796a('0x34')],qs[_0x796a('0x43')](_0x16cca9['query']['fields']));_0x483382[_0x796a('0x32')]=_0x483382[_0x796a('0x32')][_0x796a('0x33')]?_0x483382['attributes']:_0x28f2f6[_0x796a('0x34')];_0x483382[_0x796a('0x36')]=qs[_0x796a('0x37')](_0x16cca9[_0x796a('0x2e')][_0x796a('0x37')]);_0x483382['where']=qs[_0x796a('0x30')](_[_0x796a('0x39')](_0x16cca9[_0x796a('0x2e')],_0x28f2f6[_0x796a('0x30')]));if(_0x16cca9[_0x796a('0x2e')][_0x796a('0x3a')]){_0x483382[_0x796a('0x38')]=_['merge'](_0x483382[_0x796a('0x38')],{'$or':_[_0x796a('0x29')](_0x483382[_0x796a('0x32')],function(_0x3a8abe){var _0x225934={};_0x225934[_0x3a8abe]={'$like':'%'+_0x16cca9['query']['filter']+'%'};return _0x225934;})});}_0x483382=_['merge']({},_0x483382,_0x16cca9[_0x796a('0x3c')]);return _0x463c1[_0x796a('0x4c')](_0x483382);}})[_0x796a('0x23')](function(_0x8dd5ef){if(_0x8dd5ef){_0x1df750=_0x8dd5ef['length'];if(!_0x16cca9[_0x796a('0x2e')][_0x796a('0x49')](_0x796a('0x4a'))){_0x483382[_0x796a('0x1e')]=qs['limit'](_0x16cca9[_0x796a('0x2e')]['limit']);_0x483382[_0x796a('0x35')]=qs[_0x796a('0x35')](_0x16cca9[_0x796a('0x2e')][_0x796a('0x35')]);}return _0x463c1[_0x796a('0x4c')](_0x483382);}})[_0x796a('0x23')](function(_0x49acb8){if(_0x49acb8){return _0x49acb8?{'count':_0x1df750,'rows':_0x49acb8}:null;}})['then'](respondWithResult(_0x5f1cf8,null))['catch'](handleError(_0x5f1cf8,null));};exports[_0x796a('0x4e')]=function(_0x3b2fbc,_0x3f05e5,_0x2af4a4){var _0x4b6f9f={};var _0x460af8={};var _0x2a73e2;var _0x5138af;return db['Dynamics365Configuration'][_0x796a('0x4d')]({'where':{'id':_0x3b2fbc[_0x796a('0x41')]['id']}})['then'](handleEntityNotFound(_0x3f05e5,null))[_0x796a('0x23')](function(_0xd71fc3){if(_0xd71fc3){_0x2a73e2=_0xd71fc3;_0x460af8[_0x796a('0x34')]=_[_0x796a('0x2f')](db[_0x796a('0x48')]['rawAttributes']);_0x460af8['query']=_[_0x796a('0x2f')](_0x3b2fbc[_0x796a('0x2e')]);_0x460af8['filters']=_[_0x796a('0x31')](_0x460af8[_0x796a('0x34')],_0x460af8['query']);_0x4b6f9f[_0x796a('0x32')]=_['intersection'](_0x460af8['model'],qs['fields'](_0x3b2fbc['query']['fields']));_0x4b6f9f[_0x796a('0x32')]=_0x4b6f9f[_0x796a('0x32')][_0x796a('0x33')]?_0x4b6f9f[_0x796a('0x32')]:_0x460af8['model'];_0x4b6f9f[_0x796a('0x36')]=qs['sort'](_0x3b2fbc[_0x796a('0x2e')][_0x796a('0x37')]);_0x4b6f9f[_0x796a('0x38')]=qs['filters'](_[_0x796a('0x39')](_0x3b2fbc[_0x796a('0x2e')],_0x460af8[_0x796a('0x30')]));if(_0x3b2fbc['query'][_0x796a('0x3a')]){_0x4b6f9f['where']=_[_0x796a('0x3b')](_0x4b6f9f[_0x796a('0x38')],{'$or':_['map'](_0x4b6f9f['attributes'],function(_0x1ea040){var _0x41339b={};_0x41339b[_0x1ea040]={'$like':'%'+_0x3b2fbc[_0x796a('0x2e')][_0x796a('0x3a')]+'%'};return _0x41339b;})});}_0x4b6f9f=_[_0x796a('0x3b')]({},_0x4b6f9f,_0x3b2fbc[_0x796a('0x3c')]);return _0x2a73e2[_0x796a('0x4e')](_0x4b6f9f);}})['then'](function(_0x3daee4){if(_0x3daee4){_0x5138af=_0x3daee4['length'];if(!_0x3b2fbc[_0x796a('0x2e')][_0x796a('0x49')](_0x796a('0x4a'))){_0x4b6f9f[_0x796a('0x1e')]=qs[_0x796a('0x1e')](_0x3b2fbc[_0x796a('0x2e')][_0x796a('0x1e')]);_0x4b6f9f[_0x796a('0x35')]=qs['offset'](_0x3b2fbc[_0x796a('0x2e')][_0x796a('0x35')]);}return _0x2a73e2[_0x796a('0x4e')](_0x4b6f9f);}})[_0x796a('0x23')](function(_0x59619b){if(_0x59619b){return _0x59619b?{'count':_0x5138af,'rows':_0x59619b}:null;}})['then'](respondWithResult(_0x3f05e5,null))[_0x796a('0x4b')](handleError(_0x3f05e5,null));};
\ No newline at end of file
+var _0x0bb1=['limit','count','set','Content-Range','update','then','destroy','error','stack','name','send','Dynamics365Configuration','rawAttributes','type','model','map','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','show','params','keys','include','find','catch','create','body','findOne','Dynamics365Field','getFields','getSubjects','getDescriptions','rimraf','zip-dir','request-promise','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined'];(function(_0x52cbe0,_0x332b2e){var _0x4bb9da=function(_0x4f8008){while(--_0x4f8008){_0x52cbe0['push'](_0x52cbe0['shift']());}};_0x4bb9da(++_0x332b2e);}(_0x0bb1,0x15f));var _0x10bb=function(_0x3ef4f1,_0x5f0f9b){_0x3ef4f1=_0x3ef4f1-0x0;var _0x69953c=_0x0bb1[_0x3ef4f1];return _0x69953c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x10bb('0x0'));var zipdir=require(_0x10bb('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x10bb('0x2'));var moment=require('moment');var BPromise=require(_0x10bb('0x3'));var Mustache=require(_0x10bb('0x4'));var util=require('util');var path=require(_0x10bb('0x5'));var sox=require(_0x10bb('0x6'));var csv=require(_0x10bb('0x7'));var ejs=require(_0x10bb('0x8'));var fs=require('fs');var fs_extra=require(_0x10bb('0x9'));var _=require(_0x10bb('0xa'));var squel=require(_0x10bb('0xb'));var crypto=require('crypto');var jsforce=require(_0x10bb('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x10bb('0x7'));var querystring=require(_0x10bb('0xd'));var Papa=require('papaparse');var Redis=require(_0x10bb('0xe'));var authService=require(_0x10bb('0xf'));var qs=require(_0x10bb('0x10'));var as=require(_0x10bb('0x11'));var hardwareService=require(_0x10bb('0x12'));var logger=require(_0x10bb('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x10bb('0x14'));var licenseUtil=require(_0x10bb('0x15'));var db=require(_0x10bb('0x16'))['db'];function respondWithStatusCode(_0x5e7414,_0x459683){_0x459683=_0x459683||0xcc;return function(_0x558b16){if(_0x558b16){return _0x5e7414[_0x10bb('0x17')](_0x459683);}return _0x5e7414[_0x10bb('0x18')](_0x459683)[_0x10bb('0x19')]();};}function respondWithResult(_0x189d26,_0x5cf86b){_0x5cf86b=_0x5cf86b||0xc8;return function(_0x370c36){if(_0x370c36){return _0x189d26['status'](_0x5cf86b)[_0x10bb('0x1a')](_0x370c36);}};}function respondWithFilteredResult(_0x379a83,_0x37fab4){return function(_0x187161){if(_0x187161){var _0x4a3f2c=typeof _0x37fab4[_0x10bb('0x1b')]===_0x10bb('0x1c')&&typeof _0x37fab4[_0x10bb('0x1d')]==='undefined';var _0x2bd605=_0x187161[_0x10bb('0x1e')];var _0x3d2e78=_0x4a3f2c?0x0:_0x37fab4[_0x10bb('0x1b')];var _0x4b0411=_0x4a3f2c?_0x187161[_0x10bb('0x1e')]:_0x37fab4['offset']+_0x37fab4[_0x10bb('0x1d')];var _0x24d408;if(_0x4b0411>=_0x2bd605){_0x4b0411=_0x2bd605;_0x24d408=0xc8;}else{_0x24d408=0xce;}_0x379a83[_0x10bb('0x18')](_0x24d408);return _0x379a83[_0x10bb('0x1f')](_0x10bb('0x20'),_0x3d2e78+'-'+_0x4b0411+'/'+_0x2bd605)[_0x10bb('0x1a')](_0x187161);}return null;};}function patchUpdates(_0xfd6cb0){return function(_0x5aa344){try{jsonpatch['apply'](_0x5aa344,_0xfd6cb0,!![]);}catch(_0x2cfe85){return BPromise['reject'](_0x2cfe85);}return _0x5aa344['save']();};}function saveUpdates(_0x21c888,_0x424fec){return function(_0x426dab){if(_0x426dab){return _0x426dab[_0x10bb('0x21')](_0x21c888)[_0x10bb('0x22')](function(_0x4c1e71){return _0x4c1e71;});}return null;};}function removeEntity(_0x5b846d,_0x383208){return function(_0xfa6956){if(_0xfa6956){return _0xfa6956[_0x10bb('0x23')]()[_0x10bb('0x22')](function(){_0x5b846d[_0x10bb('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0xd455c6,_0x2f08a6){return function(_0x363633){if(!_0x363633){_0xd455c6[_0x10bb('0x17')](0x194);}return _0x363633;};}function handleError(_0x20dd38,_0x3b6490){_0x3b6490=_0x3b6490||0x1f4;return function(_0x2f044d){logger[_0x10bb('0x24')](_0x2f044d[_0x10bb('0x25')]);if(_0x2f044d[_0x10bb('0x26')]){delete _0x2f044d[_0x10bb('0x26')];}_0x20dd38[_0x10bb('0x18')](_0x3b6490)[_0x10bb('0x27')](_0x2f044d);};}exports['index']=function(_0x1782bb,_0x579851){var _0x569425={},_0x18f503={},_0x329432={'count':0x0,'rows':[]};var _0x1aefeb=_['map'](db[_0x10bb('0x28')][_0x10bb('0x29')],function(_0x5323e4){return{'name':_0x5323e4['fieldName'],'type':_0x5323e4[_0x10bb('0x2a')]['key']};});_0x18f503[_0x10bb('0x2b')]=_[_0x10bb('0x2c')](_0x1aefeb,_0x10bb('0x26'));_0x18f503['query']=_['keys'](_0x1782bb[_0x10bb('0x2d')]);_0x18f503[_0x10bb('0x2e')]=_['intersection'](_0x18f503[_0x10bb('0x2b')],_0x18f503['query']);_0x569425[_0x10bb('0x2f')]=_[_0x10bb('0x30')](_0x18f503[_0x10bb('0x2b')],qs[_0x10bb('0x31')](_0x1782bb[_0x10bb('0x2d')][_0x10bb('0x31')]));_0x569425[_0x10bb('0x2f')]=_0x569425['attributes'][_0x10bb('0x32')]?_0x569425[_0x10bb('0x2f')]:_0x18f503['model'];if(!_0x1782bb[_0x10bb('0x2d')][_0x10bb('0x33')](_0x10bb('0x34'))){_0x569425['limit']=qs[_0x10bb('0x1d')](_0x1782bb[_0x10bb('0x2d')][_0x10bb('0x1d')]);_0x569425['offset']=qs[_0x10bb('0x1b')](_0x1782bb[_0x10bb('0x2d')][_0x10bb('0x1b')]);}_0x569425[_0x10bb('0x35')]=qs[_0x10bb('0x36')](_0x1782bb[_0x10bb('0x2d')][_0x10bb('0x36')]);_0x569425[_0x10bb('0x37')]=qs[_0x10bb('0x2e')](_[_0x10bb('0x38')](_0x1782bb[_0x10bb('0x2d')],_0x18f503[_0x10bb('0x2e')]),_0x1aefeb);if(_0x1782bb['query'][_0x10bb('0x39')]){_0x569425[_0x10bb('0x37')]=_[_0x10bb('0x3a')](_0x569425[_0x10bb('0x37')],{'$or':_[_0x10bb('0x2c')](_0x1aefeb,function(_0x57a436){if(_0x57a436[_0x10bb('0x2a')]!==_0x10bb('0x3b')){var _0x4913da={};_0x4913da[_0x57a436[_0x10bb('0x26')]]={'$like':'%'+_0x1782bb[_0x10bb('0x2d')]['filter']+'%'};return _0x4913da;}})});}_0x569425=_['merge']({},_0x569425,_0x1782bb[_0x10bb('0x3c')]);var _0x59c249={'where':_0x569425[_0x10bb('0x37')]};return db['Dynamics365Configuration'][_0x10bb('0x1e')](_0x59c249)[_0x10bb('0x22')](function(_0x45450b){_0x329432['count']=_0x45450b;if(_0x1782bb[_0x10bb('0x2d')][_0x10bb('0x3d')]){_0x569425['include']=[{'all':!![]}];}return db[_0x10bb('0x28')][_0x10bb('0x3e')](_0x569425);})['then'](function(_0x9ebe07){_0x329432['rows']=_0x9ebe07;return _0x329432;})[_0x10bb('0x22')](respondWithFilteredResult(_0x579851,_0x569425))['catch'](handleError(_0x579851,null));};exports[_0x10bb('0x3f')]=function(_0x5ec431,_0x1b5016){var _0x496db2={'raw':![],'where':{'id':_0x5ec431[_0x10bb('0x40')]['id']}},_0x278e52={};_0x278e52[_0x10bb('0x2b')]=_[_0x10bb('0x41')](db[_0x10bb('0x28')][_0x10bb('0x29')]);_0x278e52[_0x10bb('0x2d')]=_[_0x10bb('0x41')](_0x5ec431['query']);_0x278e52['filters']=_['intersection'](_0x278e52[_0x10bb('0x2b')],_0x278e52['query']);_0x496db2['attributes']=_[_0x10bb('0x30')](_0x278e52[_0x10bb('0x2b')],qs[_0x10bb('0x31')](_0x5ec431[_0x10bb('0x2d')][_0x10bb('0x31')]));_0x496db2[_0x10bb('0x2f')]=_0x496db2['attributes']['length']?_0x496db2[_0x10bb('0x2f')]:_0x278e52[_0x10bb('0x2b')];if(_0x5ec431[_0x10bb('0x2d')][_0x10bb('0x3d')]){_0x496db2[_0x10bb('0x42')]=[{'all':!![]}];}_0x496db2=_[_0x10bb('0x3a')]({},_0x496db2,_0x5ec431[_0x10bb('0x3c')]);return db[_0x10bb('0x28')][_0x10bb('0x43')](_0x496db2)[_0x10bb('0x22')](handleEntityNotFound(_0x1b5016,null))['then'](respondWithResult(_0x1b5016,null))[_0x10bb('0x44')](handleError(_0x1b5016,null));};exports['create']=function(_0x1733d0,_0x4a378e){return db[_0x10bb('0x28')][_0x10bb('0x45')](_0x1733d0[_0x10bb('0x46')],{})[_0x10bb('0x22')](respondWithResult(_0x4a378e,0xc9))[_0x10bb('0x44')](handleError(_0x4a378e,null));};exports['update']=function(_0x158b6f,_0x799220){if(_0x158b6f[_0x10bb('0x46')]['id']){delete _0x158b6f[_0x10bb('0x46')]['id'];}return db[_0x10bb('0x28')]['find']({'where':{'id':_0x158b6f[_0x10bb('0x40')]['id']}})[_0x10bb('0x22')](handleEntityNotFound(_0x799220,null))[_0x10bb('0x22')](saveUpdates(_0x158b6f['body'],null))[_0x10bb('0x22')](respondWithResult(_0x799220,null))[_0x10bb('0x44')](handleError(_0x799220,null));};exports['destroy']=function(_0x5b0610,_0x48738a){return db['Dynamics365Configuration']['find']({'where':{'id':_0x5b0610[_0x10bb('0x40')]['id']}})[_0x10bb('0x22')](handleEntityNotFound(_0x48738a,null))[_0x10bb('0x22')](removeEntity(_0x48738a,null))[_0x10bb('0x44')](handleError(_0x48738a,null));};exports['getFields']=function(_0x26fd2b,_0x473d42,_0x3ee2c6){var _0x59093b={};var _0x2ee893={};var _0xf41690;var _0x15326f;return db['Dynamics365Configuration'][_0x10bb('0x47')]({'where':{'id':_0x26fd2b[_0x10bb('0x40')]['id']}})['then'](handleEntityNotFound(_0x473d42,null))[_0x10bb('0x22')](function(_0x472ddf){if(_0x472ddf){_0xf41690=_0x472ddf;_0x2ee893[_0x10bb('0x2b')]=_[_0x10bb('0x41')](db[_0x10bb('0x48')][_0x10bb('0x29')]);_0x2ee893[_0x10bb('0x2d')]=_['keys'](_0x26fd2b[_0x10bb('0x2d')]);_0x2ee893[_0x10bb('0x2e')]=_[_0x10bb('0x30')](_0x2ee893[_0x10bb('0x2b')],_0x2ee893[_0x10bb('0x2d')]);_0x59093b[_0x10bb('0x2f')]=_['intersection'](_0x2ee893[_0x10bb('0x2b')],qs[_0x10bb('0x31')](_0x26fd2b[_0x10bb('0x2d')][_0x10bb('0x31')]));_0x59093b['attributes']=_0x59093b[_0x10bb('0x2f')]['length']?_0x59093b['attributes']:_0x2ee893[_0x10bb('0x2b')];_0x59093b['order']=qs[_0x10bb('0x36')](_0x26fd2b[_0x10bb('0x2d')][_0x10bb('0x36')]);_0x59093b[_0x10bb('0x37')]=qs['filters'](_[_0x10bb('0x38')](_0x26fd2b[_0x10bb('0x2d')],_0x2ee893[_0x10bb('0x2e')]));if(_0x26fd2b[_0x10bb('0x2d')][_0x10bb('0x39')]){_0x59093b[_0x10bb('0x37')]=_[_0x10bb('0x3a')](_0x59093b['where'],{'$or':_[_0x10bb('0x2c')](_0x59093b['attributes'],function(_0x2d3db1){var _0x1bccd2={};_0x1bccd2[_0x2d3db1]={'$like':'%'+_0x26fd2b['query'][_0x10bb('0x39')]+'%'};return _0x1bccd2;})});}_0x59093b=_['merge']({},_0x59093b,_0x26fd2b[_0x10bb('0x3c')]);return _0xf41690[_0x10bb('0x49')](_0x59093b);}})[_0x10bb('0x22')](function(_0x3e489e){if(_0x3e489e){_0x15326f=_0x3e489e['length'];if(!_0x26fd2b[_0x10bb('0x2d')][_0x10bb('0x33')](_0x10bb('0x34'))){_0x59093b[_0x10bb('0x1d')]=qs[_0x10bb('0x1d')](_0x26fd2b[_0x10bb('0x2d')][_0x10bb('0x1d')]);_0x59093b[_0x10bb('0x1b')]=qs[_0x10bb('0x1b')](_0x26fd2b[_0x10bb('0x2d')][_0x10bb('0x1b')]);}return _0xf41690[_0x10bb('0x49')](_0x59093b);}})[_0x10bb('0x22')](function(_0x286e79){if(_0x286e79){return _0x286e79?{'count':_0x15326f,'rows':_0x286e79}:null;}})[_0x10bb('0x22')](respondWithResult(_0x473d42,null))['catch'](handleError(_0x473d42,null));};exports[_0x10bb('0x4a')]=function(_0x2d77a7,_0x5d140a,_0x239790){var _0x5689e4={};var _0x46ed67={};var _0x25af22;var _0xf8848;return db[_0x10bb('0x28')][_0x10bb('0x47')]({'where':{'id':_0x2d77a7[_0x10bb('0x40')]['id']}})['then'](handleEntityNotFound(_0x5d140a,null))[_0x10bb('0x22')](function(_0x57662e){if(_0x57662e){_0x25af22=_0x57662e;_0x46ed67['model']=_[_0x10bb('0x41')](db['Dynamics365Field']['rawAttributes']);_0x46ed67[_0x10bb('0x2d')]=_['keys'](_0x2d77a7[_0x10bb('0x2d')]);_0x46ed67[_0x10bb('0x2e')]=_[_0x10bb('0x30')](_0x46ed67[_0x10bb('0x2b')],_0x46ed67[_0x10bb('0x2d')]);_0x5689e4['attributes']=_[_0x10bb('0x30')](_0x46ed67[_0x10bb('0x2b')],qs['fields'](_0x2d77a7[_0x10bb('0x2d')]['fields']));_0x5689e4[_0x10bb('0x2f')]=_0x5689e4[_0x10bb('0x2f')]['length']?_0x5689e4[_0x10bb('0x2f')]:_0x46ed67[_0x10bb('0x2b')];_0x5689e4[_0x10bb('0x35')]=qs['sort'](_0x2d77a7[_0x10bb('0x2d')][_0x10bb('0x36')]);_0x5689e4['where']=qs[_0x10bb('0x2e')](_[_0x10bb('0x38')](_0x2d77a7[_0x10bb('0x2d')],_0x46ed67[_0x10bb('0x2e')]));if(_0x2d77a7[_0x10bb('0x2d')][_0x10bb('0x39')]){_0x5689e4['where']=_['merge'](_0x5689e4[_0x10bb('0x37')],{'$or':_[_0x10bb('0x2c')](_0x5689e4[_0x10bb('0x2f')],function(_0x1fcade){var _0x1b9827={};_0x1b9827[_0x1fcade]={'$like':'%'+_0x2d77a7[_0x10bb('0x2d')]['filter']+'%'};return _0x1b9827;})});}_0x5689e4=_[_0x10bb('0x3a')]({},_0x5689e4,_0x2d77a7[_0x10bb('0x3c')]);return _0x25af22[_0x10bb('0x4a')](_0x5689e4);}})[_0x10bb('0x22')](function(_0x24f4ce){if(_0x24f4ce){_0xf8848=_0x24f4ce[_0x10bb('0x32')];if(!_0x2d77a7['query']['hasOwnProperty'](_0x10bb('0x34'))){_0x5689e4['limit']=qs['limit'](_0x2d77a7[_0x10bb('0x2d')][_0x10bb('0x1d')]);_0x5689e4[_0x10bb('0x1b')]=qs['offset'](_0x2d77a7[_0x10bb('0x2d')]['offset']);}return _0x25af22['getSubjects'](_0x5689e4);}})[_0x10bb('0x22')](function(_0x1a282e){if(_0x1a282e){return _0x1a282e?{'count':_0xf8848,'rows':_0x1a282e}:null;}})[_0x10bb('0x22')](respondWithResult(_0x5d140a,null))[_0x10bb('0x44')](handleError(_0x5d140a,null));};exports[_0x10bb('0x4b')]=function(_0x224834,_0x375071,_0x2178ad){var _0x514197={};var _0x336d9d={};var _0x2a7dab;var _0x43ebff;return db[_0x10bb('0x28')]['findOne']({'where':{'id':_0x224834['params']['id']}})['then'](handleEntityNotFound(_0x375071,null))[_0x10bb('0x22')](function(_0x3cf7f5){if(_0x3cf7f5){_0x2a7dab=_0x3cf7f5;_0x336d9d[_0x10bb('0x2b')]=_['keys'](db[_0x10bb('0x48')]['rawAttributes']);_0x336d9d[_0x10bb('0x2d')]=_[_0x10bb('0x41')](_0x224834['query']);_0x336d9d[_0x10bb('0x2e')]=_[_0x10bb('0x30')](_0x336d9d[_0x10bb('0x2b')],_0x336d9d[_0x10bb('0x2d')]);_0x514197['attributes']=_[_0x10bb('0x30')](_0x336d9d[_0x10bb('0x2b')],qs[_0x10bb('0x31')](_0x224834[_0x10bb('0x2d')]['fields']));_0x514197[_0x10bb('0x2f')]=_0x514197[_0x10bb('0x2f')][_0x10bb('0x32')]?_0x514197[_0x10bb('0x2f')]:_0x336d9d['model'];_0x514197['order']=qs[_0x10bb('0x36')](_0x224834[_0x10bb('0x2d')]['sort']);_0x514197[_0x10bb('0x37')]=qs[_0x10bb('0x2e')](_['pick'](_0x224834[_0x10bb('0x2d')],_0x336d9d[_0x10bb('0x2e')]));if(_0x224834[_0x10bb('0x2d')]['filter']){_0x514197[_0x10bb('0x37')]=_['merge'](_0x514197[_0x10bb('0x37')],{'$or':_[_0x10bb('0x2c')](_0x514197[_0x10bb('0x2f')],function(_0x1c34d6){var _0x1bc7c8={};_0x1bc7c8[_0x1c34d6]={'$like':'%'+_0x224834[_0x10bb('0x2d')]['filter']+'%'};return _0x1bc7c8;})});}_0x514197=_[_0x10bb('0x3a')]({},_0x514197,_0x224834['options']);return _0x2a7dab[_0x10bb('0x4b')](_0x514197);}})['then'](function(_0x228191){if(_0x228191){_0x43ebff=_0x228191[_0x10bb('0x32')];if(!_0x224834[_0x10bb('0x2d')][_0x10bb('0x33')](_0x10bb('0x34'))){_0x514197[_0x10bb('0x1d')]=qs[_0x10bb('0x1d')](_0x224834['query']['limit']);_0x514197['offset']=qs['offset'](_0x224834['query'][_0x10bb('0x1b')]);}return _0x2a7dab[_0x10bb('0x4b')](_0x514197);}})['then'](function(_0x2bc3e5){if(_0x2bc3e5){return _0x2bc3e5?{'count':_0x43ebff,'rows':_0x2bc3e5}:null;}})[_0x10bb('0x22')](respondWithResult(_0x375071,null))[_0x10bb('0x44')](handleError(_0x375071,null));};
\ No newline at end of file
index de383f3..7e9130b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['request-promise','path','./intDynamics365Configuration.attributes','define','Dynamics365Configuration','int_dynamics365_configurations','../../config/logger','api','moment','bluebird'];(function(_0xb2cdf1,_0x492a0e){var _0x171b68=function(_0x515bbb){while(--_0x515bbb){_0xb2cdf1['push'](_0xb2cdf1['shift']());}};_0x171b68(++_0x492a0e);}(_0x9c44,0x178));var _0x49c4=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x9c44[_0x160c73];return _0xd9302;};'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 _0x4b84=['moment','path','rimraf','../../config/environment','Dynamics365Configuration','lodash','util'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x4b84,0x1cc));var _0x44b8=function(_0x56608c,_0x29eb74){_0x56608c=_0x56608c-0x0;var _0x3c7fb0=_0x4b84[_0x56608c];return _0x3c7fb0;};'use strict';var _=require(_0x44b8('0x0'));var util=require(_0x44b8('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0x44b8('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x44b8('0x3'));var rimraf=require(_0x44b8('0x4'));var config=require(_0x44b8('0x5'));var attributes=require('./intDynamics365Configuration.attributes');module['exports']=function(_0x55f25d,_0x996a8b){return _0x55f25d['define'](_0x44b8('0x6'),attributes,{'tableName':'int_dynamics365_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 28c4ae7..e99cef2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x278c=['info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request'];(function(_0x3e7812,_0x2f1017){var _0x105787=function(_0x11583e){while(--_0x11583e){_0x3e7812['push'](_0x3e7812['shift']());}};_0x105787(++_0x2f1017);}(_0x278c,0xa2));var _0xc278=function(_0x8af54b,_0x280be5){_0x8af54b=_0x8af54b-0x0;var _0x27d8f0=_0x278c[_0x8af54b];return _0x27d8f0;};'use strict';var _=require(_0xc278('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xc278('0x1'));var fs=require('fs');var Redis=require(_0xc278('0x2'));var db=require(_0xc278('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0xc278('0x4'))(_0xc278('0x5'));var config=require(_0xc278('0x6'));var jayson=require(_0xc278('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x542537,_0x5f5581,_0x172b78){return new BPromise(function(_0x50ade5,_0x1d72cc){return client[_0xc278('0x8')](_0x542537,_0x172b78)['then'](function(_0xc8ce11){logger[_0xc278('0x9')](_0xc278('0xa'),_0x5f5581,_0xc278('0xb'));logger[_0xc278('0xc')](_0xc278('0xd'),_0x5f5581,_0xc278('0xb'),JSON[_0xc278('0xe')](_0xc8ce11));if(_0xc8ce11[_0xc278('0xf')]){if(_0xc8ce11[_0xc278('0xf')][_0xc278('0x10')]===0x1f4){logger[_0xc278('0xf')]('Dynamics365Configuration,\x20%s,\x20%s',_0x5f5581,_0xc8ce11[_0xc278('0xf')][_0xc278('0x11')]);return _0x1d72cc(_0xc8ce11['error'][_0xc278('0x11')]);}logger['error'](_0xc278('0xa'),_0x5f5581,_0xc8ce11['error'][_0xc278('0x11')]);return _0x50ade5(_0xc8ce11[_0xc278('0xf')]['message']);}else{logger[_0xc278('0x9')](_0xc278('0xa'),_0x5f5581,_0xc278('0xb'));_0x50ade5(_0xc8ce11[_0xc278('0x12')][_0xc278('0x11')]);}})['catch'](function(_0x3251d2){logger[_0xc278('0xf')](_0xc278('0xa'),_0x5f5581,_0x3251d2);_0x1d72cc(_0x3251d2);});});}
\ No newline at end of file
+var _0x38a3=['bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','request','then','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util'];(function(_0x35f4f3,_0x437876){var _0x5e9941=function(_0x15ed37){while(--_0x15ed37){_0x35f4f3['push'](_0x35f4f3['shift']());}};_0x5e9941(++_0x437876);}(_0x38a3,0x7c));var _0x338a=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x38a3[_0xfae23b];return _0x200640;};'use strict';var _=require(_0x338a('0x0'));var util=require(_0x338a('0x1'));var moment=require('moment');var BPromise=require(_0x338a('0x2'));var rs=require(_0x338a('0x3'));var fs=require('fs');var Redis=require(_0x338a('0x4'));var db=require(_0x338a('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x338a('0x6'));var config=require(_0x338a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x338a('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x37aebd,_0x5b5f7f,_0x1a9edc){return new BPromise(function(_0x779496,_0x151e49){return client[_0x338a('0x9')](_0x37aebd,_0x1a9edc)[_0x338a('0xa')](function(_0x17bd62){logger[_0x338a('0xb')](_0x338a('0xc'),_0x5b5f7f,_0x338a('0xd'));logger[_0x338a('0xe')](_0x338a('0xf'),_0x5b5f7f,_0x338a('0xd'),JSON[_0x338a('0x10')](_0x17bd62));if(_0x17bd62[_0x338a('0x11')]){if(_0x17bd62['error'][_0x338a('0x12')]===0x1f4){logger[_0x338a('0x11')](_0x338a('0xc'),_0x5b5f7f,_0x17bd62[_0x338a('0x11')]['message']);return _0x151e49(_0x17bd62[_0x338a('0x11')]['message']);}logger[_0x338a('0x11')](_0x338a('0xc'),_0x5b5f7f,_0x17bd62['error'][_0x338a('0x13')]);return _0x779496(_0x17bd62[_0x338a('0x11')][_0x338a('0x13')]);}else{logger[_0x338a('0xb')](_0x338a('0xc'),_0x5b5f7f,_0x338a('0xd'));_0x779496(_0x17bd62[_0x338a('0x14')][_0x338a('0x13')]);}})['catch'](function(_0x9f8c1c){logger[_0x338a('0x11')](_0x338a('0xc'),_0x5b5f7f,_0x9f8c1c);_0x151e49(_0x9f8c1c);});});}
\ No newline at end of file
index f6c92b8..46cee3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1e7f=['show','post','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./intDynamics365Field.controller','get','isAuthenticated','index','/:id'];(function(_0x5bfff7,_0x3e50b2){var _0xd52359=function(_0x1e1ced){while(--_0x1e1ced){_0x5bfff7['push'](_0x5bfff7['shift']());}};_0xd52359(++_0x3e50b2);}(_0x1e7f,0xdd));var _0xf1e7=function(_0x5c3b49,_0x31fd2b){_0x5c3b49=_0x5c3b49-0x0;var _0x1bb6b7=_0x1e7f[_0x5c3b49];return _0x1bb6b7;};'use strict';var multer=require('multer');var util=require(_0xf1e7('0x0'));var path=require(_0xf1e7('0x1'));var timeout=require(_0xf1e7('0x2'));var express=require(_0xf1e7('0x3'));var router=express[_0xf1e7('0x4')]();var fs_extra=require(_0xf1e7('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xf1e7('0x6'));var config=require(_0xf1e7('0x7'));var controller=require(_0xf1e7('0x8'));router[_0xf1e7('0x9')]('/',auth[_0xf1e7('0xa')](),controller[_0xf1e7('0xb')]);router[_0xf1e7('0x9')](_0xf1e7('0xc'),auth[_0xf1e7('0xa')](),controller[_0xf1e7('0xd')]);router[_0xf1e7('0xe')]('/',auth[_0xf1e7('0xa')](),controller['create']);router['put']('/:id',auth['isAuthenticated'](),controller[_0xf1e7('0xf')]);router[_0xf1e7('0x10')](_0xf1e7('0xc'),auth[_0xf1e7('0xa')](),controller[_0xf1e7('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0x366d=['isAuthenticated','index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get'];(function(_0x5f3fa5,_0x1ba1c5){var _0x486861=function(_0x21a635){while(--_0x21a635){_0x5f3fa5['push'](_0x5f3fa5['shift']());}};_0x486861(++_0x1ba1c5);}(_0x366d,0x7d));var _0xd366=function(_0x3db23f,_0x51228d){_0x3db23f=_0x3db23f-0x0;var _0x1f2b0a=_0x366d[_0x3db23f];return _0x1f2b0a;};'use strict';var multer=require(_0xd366('0x0'));var util=require(_0xd366('0x1'));var path=require('path');var timeout=require(_0xd366('0x2'));var express=require('express');var router=express[_0xd366('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xd366('0x4'));var interaction=require(_0xd366('0x5'));var config=require(_0xd366('0x6'));var controller=require('./intDynamics365Field.controller');router[_0xd366('0x7')]('/',auth[_0xd366('0x8')](),controller[_0xd366('0x9')]);router[_0xd366('0x7')](_0xd366('0xa'),auth[_0xd366('0x8')](),controller[_0xd366('0xb')]);router[_0xd366('0xc')]('/',auth['isAuthenticated'](),controller[_0xd366('0xd')]);router[_0xd366('0xe')](_0xd366('0xa'),auth['isAuthenticated'](),controller[_0xd366('0xf')]);router[_0xd366('0x10')]('/:id',auth[_0xd366('0x8')](),controller[_0xd366('0x11')]);module[_0xd366('0x12')]=router;
\ No newline at end of file
index d8a7e78..7931d5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf23f=['variable','customVariable','keyValue','picklist','ENUM','string','STRING','sequelize','exports'];(function(_0x33df6b,_0x3c7b19){var _0x485cdf=function(_0x149305){while(--_0x149305){_0x33df6b['push'](_0x33df6b['shift']());}};_0x485cdf(++_0x3c7b19);}(_0xf23f,0x115));var _0xff23=function(_0x27dc6f,_0x5dbea8){_0x27dc6f=_0x27dc6f-0x0;var _0x461137=_0xf23f[_0x27dc6f];return _0x461137;};'use strict';var Sequelize=require(_0xff23('0x0'));module[_0xff23('0x1')]={'type':{'type':Sequelize['ENUM']('string',_0xff23('0x2'),_0xff23('0x3'),_0xff23('0x4'),_0xff23('0x5')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0xff23('0x6')](_0xff23('0x7'),'variable',_0xff23('0x3'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xff23('0x8')]},'nameField':{'type':Sequelize[_0xff23('0x8')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x4a36=['ENUM','variable','BOOLEAN','sequelize','string','customVariable','keyValue','picklist','STRING'];(function(_0x569f74,_0x507904){var _0x4b399f=function(_0x501ff7){while(--_0x501ff7){_0x569f74['push'](_0x569f74['shift']());}};_0x4b399f(++_0x507904);}(_0x4a36,0xf6));var _0x64a3=function(_0x3ef39f,_0x271f5d){_0x3ef39f=_0x3ef39f-0x0;var _0x3b9b74=_0x4a36[_0x3ef39f];return _0x3b9b74;};'use strict';var Sequelize=require(_0x64a3('0x0'));module['exports']={'type':{'type':Sequelize['ENUM'](_0x64a3('0x1'),'variable',_0x64a3('0x2'),_0x64a3('0x3'),_0x64a3('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0x64a3('0x5')]},'key':{'type':Sequelize[_0x64a3('0x5')]},'keyType':{'type':Sequelize[_0x64a3('0x6')]('string',_0x64a3('0x7'),_0x64a3('0x2'))},'keyContent':{'type':Sequelize[_0x64a3('0x5')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x64a3('0x5')]},'customField':{'type':Sequelize[_0x64a3('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x64a3('0x5')]}};
\ No newline at end of file
index 7e1bfba..38d33a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ab4=['querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','undefined','limit','offset','count','set','Content-Range','json','apply','reject','then','destroy','error','stack','name','index','map','type','model','query','keys','filters','intersection','fields','attributes','length','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','includeAll','include','rows','catch','show','Dynamics365Field','rawAttributes','create','body','update','find','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','path','sox','to-csv','fs-extra','lodash','crypto','desk.js'];(function(_0x316ce0,_0xaf0a49){var _0x5f03bd=function(_0x2fbcc1){while(--_0x2fbcc1){_0x316ce0['push'](_0x316ce0['shift']());}};_0x5f03bd(++_0xaf0a49);}(_0x8ab4,0x1f1));var _0x48ab=function(_0x173441,_0x26b0d9){_0x173441=_0x173441-0x0;var _0x2423a8=_0x8ab4[_0x173441];return _0x2423a8;};'use strict';var emlformat=require(_0x48ab('0x0'));var rimraf=require(_0x48ab('0x1'));var zipdir=require(_0x48ab('0x2'));var jsonpatch=require(_0x48ab('0x3'));var rp=require(_0x48ab('0x4'));var moment=require(_0x48ab('0x5'));var BPromise=require(_0x48ab('0x6'));var Mustache=require('mustache');var util=require('util');var path=require(_0x48ab('0x7'));var sox=require(_0x48ab('0x8'));var csv=require(_0x48ab('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x48ab('0xa'));var _=require(_0x48ab('0xb'));var squel=require('squel');var crypto=require(_0x48ab('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x48ab('0xd'));var toCsv=require(_0x48ab('0x9'));var querystring=require(_0x48ab('0xe'));var Papa=require(_0x48ab('0xf'));var Redis=require(_0x48ab('0x10'));var authService=require(_0x48ab('0x11'));var qs=require(_0x48ab('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x48ab('0x13'))(_0x48ab('0x14'));var utils=require(_0x48ab('0x15'));var config=require(_0x48ab('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x48ab('0x17'))['db'];function respondWithStatusCode(_0x55f716,_0x5db8e3){_0x5db8e3=_0x5db8e3||0xcc;return function(_0x579cdd){if(_0x579cdd){return _0x55f716[_0x48ab('0x18')](_0x5db8e3);}return _0x55f716['status'](_0x5db8e3)[_0x48ab('0x19')]();};}function respondWithResult(_0x588993,_0x1a072d){_0x1a072d=_0x1a072d||0xc8;return function(_0xd8e792){if(_0xd8e792){return _0x588993[_0x48ab('0x1a')](_0x1a072d)['json'](_0xd8e792);}};}function respondWithFilteredResult(_0x1d2790,_0x6ce371){return function(_0xf8a954){if(_0xf8a954){var _0x4ba3b8=typeof _0x6ce371['offset']===_0x48ab('0x1b')&&typeof _0x6ce371[_0x48ab('0x1c')]===_0x48ab('0x1b');var _0x4bb54f=_0xf8a954['count'];var _0x23261c=_0x4ba3b8?0x0:_0x6ce371[_0x48ab('0x1d')];var _0x4652a4=_0x4ba3b8?_0xf8a954[_0x48ab('0x1e')]:_0x6ce371[_0x48ab('0x1d')]+_0x6ce371['limit'];var _0x24c8c2;if(_0x4652a4>=_0x4bb54f){_0x4652a4=_0x4bb54f;_0x24c8c2=0xc8;}else{_0x24c8c2=0xce;}_0x1d2790['status'](_0x24c8c2);return _0x1d2790[_0x48ab('0x1f')](_0x48ab('0x20'),_0x23261c+'-'+_0x4652a4+'/'+_0x4bb54f)[_0x48ab('0x21')](_0xf8a954);}return null;};}function patchUpdates(_0x1c582d){return function(_0x487c97){try{jsonpatch[_0x48ab('0x22')](_0x487c97,_0x1c582d,!![]);}catch(_0x415384){return BPromise[_0x48ab('0x23')](_0x415384);}return _0x487c97['save']();};}function saveUpdates(_0x4b0a51,_0x27cc83){return function(_0x31b525){if(_0x31b525){return _0x31b525['update'](_0x4b0a51)[_0x48ab('0x24')](function(_0x49f53a){return _0x49f53a;});}return null;};}function removeEntity(_0x25dc60,_0x55f4f7){return function(_0x290b40){if(_0x290b40){return _0x290b40[_0x48ab('0x25')]()['then'](function(){_0x25dc60[_0x48ab('0x1a')](0xcc)[_0x48ab('0x19')]();});}};}function handleEntityNotFound(_0x2ac547,_0xaa8299){return function(_0xbc294b){if(!_0xbc294b){_0x2ac547['sendStatus'](0x194);}return _0xbc294b;};}function handleError(_0x5d4686,_0x17f63b){_0x17f63b=_0x17f63b||0x1f4;return function(_0x181e48){logger[_0x48ab('0x26')](_0x181e48[_0x48ab('0x27')]);if(_0x181e48[_0x48ab('0x28')]){delete _0x181e48[_0x48ab('0x28')];}_0x5d4686[_0x48ab('0x1a')](_0x17f63b)['send'](_0x181e48);};}exports[_0x48ab('0x29')]=function(_0x38d1ed,_0x2778b3){var _0x42e0dc={},_0x115b14={},_0x5af3eb={'count':0x0,'rows':[]};var _0x4715e9=_[_0x48ab('0x2a')](db['Dynamics365Field']['rawAttributes'],function(_0x577f1b){return{'name':_0x577f1b['fieldName'],'type':_0x577f1b[_0x48ab('0x2b')]['key']};});_0x115b14[_0x48ab('0x2c')]=_[_0x48ab('0x2a')](_0x4715e9,_0x48ab('0x28'));_0x115b14[_0x48ab('0x2d')]=_[_0x48ab('0x2e')](_0x38d1ed['query']);_0x115b14[_0x48ab('0x2f')]=_[_0x48ab('0x30')](_0x115b14[_0x48ab('0x2c')],_0x115b14[_0x48ab('0x2d')]);_0x42e0dc['attributes']=_['intersection'](_0x115b14[_0x48ab('0x2c')],qs['fields'](_0x38d1ed[_0x48ab('0x2d')][_0x48ab('0x31')]));_0x42e0dc[_0x48ab('0x32')]=_0x42e0dc[_0x48ab('0x32')][_0x48ab('0x33')]?_0x42e0dc[_0x48ab('0x32')]:_0x115b14[_0x48ab('0x2c')];if(!_0x38d1ed['query']['hasOwnProperty'](_0x48ab('0x34'))){_0x42e0dc['limit']=qs[_0x48ab('0x1c')](_0x38d1ed['query']['limit']);_0x42e0dc['offset']=qs[_0x48ab('0x1d')](_0x38d1ed[_0x48ab('0x2d')][_0x48ab('0x1d')]);}_0x42e0dc[_0x48ab('0x35')]=qs[_0x48ab('0x36')](_0x38d1ed[_0x48ab('0x2d')][_0x48ab('0x36')]);_0x42e0dc['where']=qs['filters'](_[_0x48ab('0x37')](_0x38d1ed[_0x48ab('0x2d')],_0x115b14[_0x48ab('0x2f')]),_0x4715e9);if(_0x38d1ed[_0x48ab('0x2d')][_0x48ab('0x38')]){_0x42e0dc[_0x48ab('0x39')]=_['merge'](_0x42e0dc[_0x48ab('0x39')],{'$or':_[_0x48ab('0x2a')](_0x4715e9,function(_0x54ba50){if(_0x54ba50[_0x48ab('0x2b')]!==_0x48ab('0x3a')){var _0x431cae={};_0x431cae[_0x54ba50[_0x48ab('0x28')]]={'$like':'%'+_0x38d1ed['query'][_0x48ab('0x38')]+'%'};return _0x431cae;}})});}_0x42e0dc=_[_0x48ab('0x3b')]({},_0x42e0dc,_0x38d1ed[_0x48ab('0x3c')]);var _0x418adb={'where':_0x42e0dc[_0x48ab('0x39')]};return db['Dynamics365Field'][_0x48ab('0x1e')](_0x418adb)[_0x48ab('0x24')](function(_0x52a886){_0x5af3eb[_0x48ab('0x1e')]=_0x52a886;if(_0x38d1ed[_0x48ab('0x2d')][_0x48ab('0x3d')]){_0x42e0dc[_0x48ab('0x3e')]=[{'all':!![]}];}return db['Dynamics365Field']['findAll'](_0x42e0dc);})[_0x48ab('0x24')](function(_0x912ffd){_0x5af3eb[_0x48ab('0x3f')]=_0x912ffd;return _0x5af3eb;})['then'](respondWithFilteredResult(_0x2778b3,_0x42e0dc))[_0x48ab('0x40')](handleError(_0x2778b3,null));};exports[_0x48ab('0x41')]=function(_0x27e93e,_0x2ac753){var _0x333a9c={'raw':!![],'where':{'id':_0x27e93e['params']['id']}},_0x4de00e={};_0x4de00e['model']=_[_0x48ab('0x2e')](db[_0x48ab('0x42')][_0x48ab('0x43')]);_0x4de00e['query']=_[_0x48ab('0x2e')](_0x27e93e[_0x48ab('0x2d')]);_0x4de00e['filters']=_[_0x48ab('0x30')](_0x4de00e[_0x48ab('0x2c')],_0x4de00e[_0x48ab('0x2d')]);_0x333a9c['attributes']=_[_0x48ab('0x30')](_0x4de00e[_0x48ab('0x2c')],qs['fields'](_0x27e93e[_0x48ab('0x2d')][_0x48ab('0x31')]));_0x333a9c['attributes']=_0x333a9c[_0x48ab('0x32')][_0x48ab('0x33')]?_0x333a9c[_0x48ab('0x32')]:_0x4de00e[_0x48ab('0x2c')];if(_0x27e93e[_0x48ab('0x2d')][_0x48ab('0x3d')]){_0x333a9c[_0x48ab('0x3e')]=[{'all':!![]}];}_0x333a9c=_['merge']({},_0x333a9c,_0x27e93e['options']);return db[_0x48ab('0x42')]['find'](_0x333a9c)[_0x48ab('0x24')](handleEntityNotFound(_0x2ac753,null))[_0x48ab('0x24')](respondWithResult(_0x2ac753,null))[_0x48ab('0x40')](handleError(_0x2ac753,null));};exports[_0x48ab('0x44')]=function(_0x52b523,_0x5ee0ee){return db[_0x48ab('0x42')][_0x48ab('0x44')](_0x52b523[_0x48ab('0x45')],{})[_0x48ab('0x24')](respondWithResult(_0x5ee0ee,0xc9))[_0x48ab('0x40')](handleError(_0x5ee0ee,null));};exports[_0x48ab('0x46')]=function(_0xdd17f5,_0x2f3462){if(_0xdd17f5[_0x48ab('0x45')]['id']){delete _0xdd17f5[_0x48ab('0x45')]['id'];}return db[_0x48ab('0x42')][_0x48ab('0x47')]({'where':{'id':_0xdd17f5[_0x48ab('0x48')]['id']}})[_0x48ab('0x24')](handleEntityNotFound(_0x2f3462,null))['then'](saveUpdates(_0xdd17f5['body'],null))[_0x48ab('0x24')](respondWithResult(_0x2f3462,null))[_0x48ab('0x40')](handleError(_0x2f3462,null));};exports[_0x48ab('0x25')]=function(_0x3582d0,_0xa567f3){return db[_0x48ab('0x42')][_0x48ab('0x47')]({'where':{'id':_0x3582d0[_0x48ab('0x48')]['id']}})[_0x48ab('0x24')](handleEntityNotFound(_0xa567f3,null))[_0x48ab('0x24')](removeEntity(_0xa567f3,null))[_0x48ab('0x40')](handleError(_0xa567f3,null));};
\ No newline at end of file
+var _0x1987=['apply','save','then','end','error','stack','name','send','index','Dynamics365Field','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','update','destroy','rimraf','fast-json-patch','bluebird','mustache','to-csv','ejs','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json'];(function(_0x4a519e,_0x5be3c4){var _0x1c7154=function(_0x2a0bde){while(--_0x2a0bde){_0x4a519e['push'](_0x4a519e['shift']());}};_0x1c7154(++_0x5be3c4);}(_0x1987,0x107));var _0x7198=function(_0x43f756,_0xae9f58){_0x43f756=_0x43f756-0x0;var _0x5ba710=_0x1987[_0x43f756];return _0x5ba710;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7198('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7198('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x7198('0x2'));var Mustache=require(_0x7198('0x3'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x7198('0x4'));var ejs=require(_0x7198('0x5'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x7198('0x6'));var squel=require('squel');var crypto=require(_0x7198('0x7'));var jsforce=require(_0x7198('0x8'));var deskjs=require('desk.js');var toCsv=require(_0x7198('0x4'));var querystring=require(_0x7198('0x9'));var Papa=require(_0x7198('0xa'));var Redis=require(_0x7198('0xb'));var authService=require(_0x7198('0xc'));var qs=require(_0x7198('0xd'));var as=require(_0x7198('0xe'));var hardwareService=require(_0x7198('0xf'));var logger=require(_0x7198('0x10'))(_0x7198('0x11'));var utils=require('../../config/utils');var config=require(_0x7198('0x12'));var licenseUtil=require(_0x7198('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x7858e3,_0x303295){_0x303295=_0x303295||0xcc;return function(_0x42bf77){if(_0x42bf77){return _0x7858e3[_0x7198('0x14')](_0x303295);}return _0x7858e3[_0x7198('0x15')](_0x303295)['end']();};}function respondWithResult(_0xcf4d28,_0x4db462){_0x4db462=_0x4db462||0xc8;return function(_0x4ab0f9){if(_0x4ab0f9){return _0xcf4d28[_0x7198('0x15')](_0x4db462)['json'](_0x4ab0f9);}};}function respondWithFilteredResult(_0x453257,_0x277a71){return function(_0x197bac){if(_0x197bac){var _0x47a891=typeof _0x277a71[_0x7198('0x16')]===_0x7198('0x17')&&typeof _0x277a71[_0x7198('0x18')]===_0x7198('0x17');var _0x5dbb84=_0x197bac[_0x7198('0x19')];var _0x1d1a76=_0x47a891?0x0:_0x277a71[_0x7198('0x16')];var _0x3579b3=_0x47a891?_0x197bac['count']:_0x277a71[_0x7198('0x16')]+_0x277a71[_0x7198('0x18')];var _0x1a4b72;if(_0x3579b3>=_0x5dbb84){_0x3579b3=_0x5dbb84;_0x1a4b72=0xc8;}else{_0x1a4b72=0xce;}_0x453257[_0x7198('0x15')](_0x1a4b72);return _0x453257[_0x7198('0x1a')](_0x7198('0x1b'),_0x1d1a76+'-'+_0x3579b3+'/'+_0x5dbb84)[_0x7198('0x1c')](_0x197bac);}return null;};}function patchUpdates(_0x5c7f31){return function(_0x5f3338){try{jsonpatch[_0x7198('0x1d')](_0x5f3338,_0x5c7f31,!![]);}catch(_0x5b2c9f){return BPromise['reject'](_0x5b2c9f);}return _0x5f3338[_0x7198('0x1e')]();};}function saveUpdates(_0x593183,_0x15dd82){return function(_0x5ec757){if(_0x5ec757){return _0x5ec757['update'](_0x593183)['then'](function(_0x232e6e){return _0x232e6e;});}return null;};}function removeEntity(_0x3de796,_0x1fae08){return function(_0x1506a5){if(_0x1506a5){return _0x1506a5['destroy']()[_0x7198('0x1f')](function(){_0x3de796['status'](0xcc)[_0x7198('0x20')]();});}};}function handleEntityNotFound(_0x8605e0,_0x2d2e0f){return function(_0x4850a4){if(!_0x4850a4){_0x8605e0[_0x7198('0x14')](0x194);}return _0x4850a4;};}function handleError(_0x5f3e3f,_0x3b89a2){_0x3b89a2=_0x3b89a2||0x1f4;return function(_0x2f8a82){logger[_0x7198('0x21')](_0x2f8a82[_0x7198('0x22')]);if(_0x2f8a82['name']){delete _0x2f8a82[_0x7198('0x23')];}_0x5f3e3f[_0x7198('0x15')](_0x3b89a2)[_0x7198('0x24')](_0x2f8a82);};}exports[_0x7198('0x25')]=function(_0x492c39,_0x54cf7c){var _0x41ecd9={},_0x3b208a={},_0x26f321={'count':0x0,'rows':[]};var _0xb6b910=_['map'](db[_0x7198('0x26')][_0x7198('0x27')],function(_0x549231){return{'name':_0x549231[_0x7198('0x28')],'type':_0x549231['type'][_0x7198('0x29')]};});_0x3b208a[_0x7198('0x2a')]=_[_0x7198('0x2b')](_0xb6b910,_0x7198('0x23'));_0x3b208a[_0x7198('0x2c')]=_[_0x7198('0x2d')](_0x492c39[_0x7198('0x2c')]);_0x3b208a[_0x7198('0x2e')]=_['intersection'](_0x3b208a[_0x7198('0x2a')],_0x3b208a[_0x7198('0x2c')]);_0x41ecd9['attributes']=_[_0x7198('0x2f')](_0x3b208a[_0x7198('0x2a')],qs[_0x7198('0x30')](_0x492c39[_0x7198('0x2c')][_0x7198('0x30')]));_0x41ecd9[_0x7198('0x31')]=_0x41ecd9['attributes'][_0x7198('0x32')]?_0x41ecd9['attributes']:_0x3b208a['model'];if(!_0x492c39[_0x7198('0x2c')][_0x7198('0x33')]('nolimit')){_0x41ecd9['limit']=qs[_0x7198('0x18')](_0x492c39[_0x7198('0x2c')][_0x7198('0x18')]);_0x41ecd9[_0x7198('0x16')]=qs[_0x7198('0x16')](_0x492c39['query'][_0x7198('0x16')]);}_0x41ecd9[_0x7198('0x34')]=qs['sort'](_0x492c39[_0x7198('0x2c')][_0x7198('0x35')]);_0x41ecd9[_0x7198('0x36')]=qs['filters'](_[_0x7198('0x37')](_0x492c39[_0x7198('0x2c')],_0x3b208a[_0x7198('0x2e')]),_0xb6b910);if(_0x492c39[_0x7198('0x2c')][_0x7198('0x38')]){_0x41ecd9[_0x7198('0x36')]=_['merge'](_0x41ecd9[_0x7198('0x36')],{'$or':_[_0x7198('0x2b')](_0xb6b910,function(_0x3c80bd){if(_0x3c80bd[_0x7198('0x39')]!==_0x7198('0x3a')){var _0x524907={};_0x524907[_0x3c80bd[_0x7198('0x23')]]={'$like':'%'+_0x492c39[_0x7198('0x2c')][_0x7198('0x38')]+'%'};return _0x524907;}})});}_0x41ecd9=_[_0x7198('0x3b')]({},_0x41ecd9,_0x492c39[_0x7198('0x3c')]);var _0x9f52c6={'where':_0x41ecd9['where']};return db[_0x7198('0x26')][_0x7198('0x19')](_0x9f52c6)[_0x7198('0x1f')](function(_0x5d8f0d){_0x26f321['count']=_0x5d8f0d;if(_0x492c39[_0x7198('0x2c')][_0x7198('0x3d')]){_0x41ecd9[_0x7198('0x3e')]=[{'all':!![]}];}return db[_0x7198('0x26')][_0x7198('0x3f')](_0x41ecd9);})[_0x7198('0x1f')](function(_0xcd8ade){_0x26f321[_0x7198('0x40')]=_0xcd8ade;return _0x26f321;})['then'](respondWithFilteredResult(_0x54cf7c,_0x41ecd9))[_0x7198('0x41')](handleError(_0x54cf7c,null));};exports[_0x7198('0x42')]=function(_0x212b0b,_0x52b9b4){var _0x58c22a={'raw':!![],'where':{'id':_0x212b0b[_0x7198('0x43')]['id']}},_0x1b9015={};_0x1b9015[_0x7198('0x2a')]=_[_0x7198('0x2d')](db[_0x7198('0x26')][_0x7198('0x27')]);_0x1b9015[_0x7198('0x2c')]=_[_0x7198('0x2d')](_0x212b0b[_0x7198('0x2c')]);_0x1b9015[_0x7198('0x2e')]=_[_0x7198('0x2f')](_0x1b9015[_0x7198('0x2a')],_0x1b9015[_0x7198('0x2c')]);_0x58c22a[_0x7198('0x31')]=_[_0x7198('0x2f')](_0x1b9015[_0x7198('0x2a')],qs[_0x7198('0x30')](_0x212b0b[_0x7198('0x2c')]['fields']));_0x58c22a[_0x7198('0x31')]=_0x58c22a[_0x7198('0x31')]['length']?_0x58c22a[_0x7198('0x31')]:_0x1b9015[_0x7198('0x2a')];if(_0x212b0b[_0x7198('0x2c')][_0x7198('0x3d')]){_0x58c22a[_0x7198('0x3e')]=[{'all':!![]}];}_0x58c22a=_[_0x7198('0x3b')]({},_0x58c22a,_0x212b0b['options']);return db[_0x7198('0x26')][_0x7198('0x44')](_0x58c22a)['then'](handleEntityNotFound(_0x52b9b4,null))[_0x7198('0x1f')](respondWithResult(_0x52b9b4,null))['catch'](handleError(_0x52b9b4,null));};exports[_0x7198('0x45')]=function(_0x2282c8,_0x35620b){return db[_0x7198('0x26')][_0x7198('0x45')](_0x2282c8[_0x7198('0x46')],{})[_0x7198('0x1f')](respondWithResult(_0x35620b,0xc9))[_0x7198('0x41')](handleError(_0x35620b,null));};exports[_0x7198('0x47')]=function(_0x59f883,_0x2583a1){if(_0x59f883[_0x7198('0x46')]['id']){delete _0x59f883[_0x7198('0x46')]['id'];}return db[_0x7198('0x26')][_0x7198('0x44')]({'where':{'id':_0x59f883[_0x7198('0x43')]['id']}})[_0x7198('0x1f')](handleEntityNotFound(_0x2583a1,null))[_0x7198('0x1f')](saveUpdates(_0x59f883['body'],null))['then'](respondWithResult(_0x2583a1,null))[_0x7198('0x41')](handleError(_0x2583a1,null));};exports[_0x7198('0x48')]=function(_0x3aacab,_0x35682d){return db[_0x7198('0x26')][_0x7198('0x44')]({'where':{'id':_0x3aacab[_0x7198('0x43')]['id']}})[_0x7198('0x1f')](handleEntityNotFound(_0x35682d,null))[_0x7198('0x1f')](removeEntity(_0x35682d,null))[_0x7198('0x41')](handleError(_0x35682d,null));};
\ No newline at end of file
index 6e27b7f..fd54f80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf469=['../../config/environment','define','int_dynamics365_fields','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf'];(function(_0x2dafbe,_0x5d04de){var _0x58a45a=function(_0x50ac96){while(--_0x50ac96){_0x2dafbe['push'](_0x2dafbe['shift']());}};_0x58a45a(++_0x5d04de);}(_0xf469,0xcf));var _0x9f46=function(_0x35a145,_0x278614){_0x35a145=_0x35a145-0x0;var _0x53237=_0xf469[_0x35a145];return _0x53237;};'use strict';var _=require(_0x9f46('0x0'));var util=require(_0x9f46('0x1'));var logger=require(_0x9f46('0x2'))(_0x9f46('0x3'));var moment=require(_0x9f46('0x4'));var BPromise=require(_0x9f46('0x5'));var rp=require(_0x9f46('0x6'));var fs=require('fs');var path=require(_0x9f46('0x7'));var rimraf=require(_0x9f46('0x8'));var config=require(_0x9f46('0x9'));var attributes=require('./intDynamics365Field.attributes');module['exports']=function(_0x32c48b,_0x30413c){return _0x32c48b[_0x9f46('0xa')]('Dynamics365Field',attributes,{'tableName':_0x9f46('0xb'),'paranoid':![],'indexes':[{'name':'dynamics365_unique_index','fields':['idField','FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8eb8=['rimraf','../../config/environment','./intDynamics365Field.attributes','exports','define','dynamics365_unique_index','FieldId','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x102457,_0x569aa7){var _0x8fe09c=function(_0x18b1ef){while(--_0x18b1ef){_0x102457['push'](_0x102457['shift']());}};_0x8fe09c(++_0x569aa7);}(_0x8eb8,0xa1));var _0x88eb=function(_0x59ef70,_0xc73397){_0x59ef70=_0x59ef70-0x0;var _0x11ce5a=_0x8eb8[_0x59ef70];return _0x11ce5a;};'use strict';var _=require(_0x88eb('0x0'));var util=require(_0x88eb('0x1'));var logger=require(_0x88eb('0x2'))(_0x88eb('0x3'));var moment=require(_0x88eb('0x4'));var BPromise=require(_0x88eb('0x5'));var rp=require(_0x88eb('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x88eb('0x7'));var config=require(_0x88eb('0x8'));var attributes=require(_0x88eb('0x9'));module[_0x88eb('0xa')]=function(_0x11d2df,_0x574814){return _0x11d2df[_0x88eb('0xb')]('Dynamics365Field',attributes,{'tableName':'int_dynamics365_fields','paranoid':![],'indexes':[{'name':_0x88eb('0xc'),'fields':['idField',_0x88eb('0xd')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 52b0ebf..f726c8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x855d=['request','info','Dynamics365Field,\x20%s,\x20%s','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x4c7614,_0x209589){var _0x4a96bb=function(_0x466150){while(--_0x466150){_0x4c7614['push'](_0x4c7614['shift']());}};_0x4a96bb(++_0x209589);}(_0x855d,0x19c));var _0xd855=function(_0x50d454,_0x164e81){_0x50d454=_0x50d454-0x0;var _0x51158e=_0x855d[_0x50d454];return _0x51158e;};'use strict';var _=require(_0xd855('0x0'));var util=require(_0xd855('0x1'));var moment=require(_0xd855('0x2'));var BPromise=require(_0xd855('0x3'));var rs=require(_0xd855('0x4'));var fs=require('fs');var Redis=require(_0xd855('0x5'));var db=require(_0xd855('0x6'))['db'];var utils=require(_0xd855('0x7'));var logger=require('../../config/logger')(_0xd855('0x8'));var config=require(_0xd855('0x9'));var jayson=require(_0xd855('0xa'));var client=jayson[_0xd855('0xb')][_0xd855('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x1208d7,_0x390fe6,_0x5451a2){return new BPromise(function(_0x163774,_0x44fbf2){return client[_0xd855('0xd')](_0x1208d7,_0x5451a2)['then'](function(_0x4c184a){logger[_0xd855('0xe')](_0xd855('0xf'),_0x390fe6,'request\x20sent');logger[_0xd855('0x10')](_0xd855('0x11'),_0x390fe6,_0xd855('0x12'),JSON[_0xd855('0x13')](_0x4c184a));if(_0x4c184a[_0xd855('0x14')]){if(_0x4c184a[_0xd855('0x14')][_0xd855('0x15')]===0x1f4){logger[_0xd855('0x14')](_0xd855('0xf'),_0x390fe6,_0x4c184a['error'][_0xd855('0x16')]);return _0x44fbf2(_0x4c184a[_0xd855('0x14')][_0xd855('0x16')]);}logger[_0xd855('0x14')](_0xd855('0xf'),_0x390fe6,_0x4c184a['error']['message']);return _0x163774(_0x4c184a[_0xd855('0x14')][_0xd855('0x16')]);}else{logger[_0xd855('0xe')](_0xd855('0xf'),_0x390fe6,_0xd855('0x12'));_0x163774(_0x4c184a[_0xd855('0x17')][_0xd855('0x16')]);}})[_0xd855('0x18')](function(_0x5df3f2){logger[_0xd855('0x14')](_0xd855('0xf'),_0x390fe6,_0x5df3f2);_0x44fbf2(_0x5df3f2);});});}
\ No newline at end of file
+var _0x215a=['client','request','then','info','request\x20sent','debug','Dynamics365Field,\x20%s,\x20%s,\x20%s','error','code','Dynamics365Field,\x20%s,\x20%s','message','result','lodash','util','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise'];(function(_0x5f3669,_0x365065){var _0x55d9b5=function(_0x55cd5b){while(--_0x55cd5b){_0x5f3669['push'](_0x5f3669['shift']());}};_0x55d9b5(++_0x365065);}(_0x215a,0xc9));var _0xa215=function(_0x1f36bb,_0x8af718){_0x1f36bb=_0x1f36bb-0x0;var _0xaf97fa=_0x215a[_0x1f36bb];return _0xaf97fa;};'use strict';var _=require(_0xa215('0x0'));var util=require(_0xa215('0x1'));var moment=require(_0xa215('0x2'));var BPromise=require('bluebird');var rs=require(_0xa215('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa215('0x4'))['db'];var utils=require(_0xa215('0x5'));var logger=require(_0xa215('0x6'))(_0xa215('0x7'));var config=require('../../config/environment');var jayson=require(_0xa215('0x8'));var client=jayson[_0xa215('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x45e142,_0x17398c,_0x2d3428){return new BPromise(function(_0x55af8e,_0xb314a0){return client[_0xa215('0xa')](_0x45e142,_0x2d3428)[_0xa215('0xb')](function(_0x1bd325){logger[_0xa215('0xc')]('Dynamics365Field,\x20%s,\x20%s',_0x17398c,_0xa215('0xd'));logger[_0xa215('0xe')](_0xa215('0xf'),_0x17398c,_0xa215('0xd'),JSON['stringify'](_0x1bd325));if(_0x1bd325[_0xa215('0x10')]){if(_0x1bd325['error'][_0xa215('0x11')]===0x1f4){logger[_0xa215('0x10')](_0xa215('0x12'),_0x17398c,_0x1bd325['error'][_0xa215('0x13')]);return _0xb314a0(_0x1bd325[_0xa215('0x10')][_0xa215('0x13')]);}logger['error'](_0xa215('0x12'),_0x17398c,_0x1bd325['error']['message']);return _0x55af8e(_0x1bd325[_0xa215('0x10')][_0xa215('0x13')]);}else{logger[_0xa215('0xc')]('Dynamics365Field,\x20%s,\x20%s',_0x17398c,_0xa215('0xd'));_0x55af8e(_0x1bd325[_0xa215('0x14')][_0xa215('0x13')]);}})['catch'](function(_0x328e8e){logger[_0xa215('0x10')](_0xa215('0x12'),_0x17398c,_0x328e8e);_0xb314a0(_0x328e8e);});});}
\ No newline at end of file
index 09ec29c..8313531 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4d9=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','isAuthenticated','index','/:id','/:id/configurations','getConfigurations','getFields','create','post','addConfiguration','update','delete','destroy','exports','util','path','connect-timeout','express'];(function(_0x113a6c,_0x10df30){var _0x1ac632=function(_0xbd4fb9){while(--_0xbd4fb9){_0x113a6c['push'](_0x113a6c['shift']());}};_0x1ac632(++_0x10df30);}(_0xf4d9,0x1b1));var _0x9f4d=function(_0x1669cc,_0x227ed6){_0x1669cc=_0x1669cc-0x0;var _0x3ce80c=_0xf4d9[_0x1669cc];return _0x3ce80c;};'use strict';var multer=require('multer');var util=require(_0x9f4d('0x0'));var path=require(_0x9f4d('0x1'));var timeout=require(_0x9f4d('0x2'));var express=require(_0x9f4d('0x3'));var router=express['Router']();var fs_extra=require(_0x9f4d('0x4'));var auth=require(_0x9f4d('0x5'));var interaction=require(_0x9f4d('0x6'));var config=require(_0x9f4d('0x7'));var controller=require(_0x9f4d('0x8'));router[_0x9f4d('0x9')]('/',auth[_0x9f4d('0xa')](),controller[_0x9f4d('0xb')]);router[_0x9f4d('0x9')](_0x9f4d('0xc'),auth[_0x9f4d('0xa')](),controller['show']);router[_0x9f4d('0x9')](_0x9f4d('0xd'),auth[_0x9f4d('0xa')](),controller[_0x9f4d('0xe')]);router[_0x9f4d('0x9')]('/:id/fields',auth[_0x9f4d('0xa')](),controller[_0x9f4d('0xf')]);router['post']('/',auth[_0x9f4d('0xa')](),controller[_0x9f4d('0x10')]);router[_0x9f4d('0x11')](_0x9f4d('0xd'),auth[_0x9f4d('0xa')](),controller[_0x9f4d('0x12')]);router['put'](_0x9f4d('0xc'),auth[_0x9f4d('0xa')](),controller[_0x9f4d('0x13')]);router[_0x9f4d('0x14')](_0x9f4d('0xc'),auth[_0x9f4d('0xa')](),controller[_0x9f4d('0x15')]);module[_0x9f4d('0x16')]=router;
\ No newline at end of file
+var _0x20d3=['getConfigurations','getFields','post','/:id/configurations','put','delete','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshdeskAccount.controller','get','index','/:id','isAuthenticated','show'];(function(_0x2fbf70,_0x65b05a){var _0x2aa0b1=function(_0x3815ff){while(--_0x3815ff){_0x2fbf70['push'](_0x2fbf70['shift']());}};_0x2aa0b1(++_0x65b05a);}(_0x20d3,0x1d5));var _0x320d=function(_0x23cce4,_0x2f35e8){_0x23cce4=_0x23cce4-0x0;var _0x81a82=_0x20d3[_0x23cce4];return _0x81a82;};'use strict';var multer=require(_0x320d('0x0'));var util=require('util');var path=require(_0x320d('0x1'));var timeout=require(_0x320d('0x2'));var express=require(_0x320d('0x3'));var router=express[_0x320d('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x320d('0x5'));var interaction=require(_0x320d('0x6'));var config=require(_0x320d('0x7'));var controller=require(_0x320d('0x8'));router[_0x320d('0x9')]('/',auth['isAuthenticated'](),controller[_0x320d('0xa')]);router['get'](_0x320d('0xb'),auth[_0x320d('0xc')](),controller[_0x320d('0xd')]);router[_0x320d('0x9')]('/:id/configurations',auth[_0x320d('0xc')](),controller[_0x320d('0xe')]);router[_0x320d('0x9')]('/:id/fields',auth[_0x320d('0xc')](),controller[_0x320d('0xf')]);router[_0x320d('0x10')]('/',auth[_0x320d('0xc')](),controller['create']);router[_0x320d('0x10')](_0x320d('0x11'),auth[_0x320d('0xc')](),controller['addConfiguration']);router[_0x320d('0x12')](_0x320d('0xb'),auth[_0x320d('0xc')](),controller['update']);router[_0x320d('0x13')](_0x320d('0xb'),auth[_0x320d('0xc')](),controller['destroy']);module[_0x320d('0x14')]=router;
\ No newline at end of file
index f5f35d7..de2a18b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25e7=['sequelize','exports','STRING','username','remoteUri'];(function(_0x1bd247,_0x14f195){var _0x54d8d5=function(_0x2aaf14){while(--_0x2aaf14){_0x1bd247['push'](_0x1bd247['shift']());}};_0x54d8d5(++_0x14f195);}(_0x25e7,0x1d6));var _0x725e=function(_0x1dfdd3,_0x3e1a05){_0x1dfdd3=_0x1dfdd3-0x0;var _0x4dbacf=_0x25e7[_0x1dfdd3];return _0x4dbacf;};'use strict';var Sequelize=require(_0x725e('0x0'));module[_0x725e('0x1')]={'name':{'type':Sequelize[_0x725e('0x2')]},'description':{'type':Sequelize[_0x725e('0x2')]},'username':{'type':Sequelize[_0x725e('0x2')],'unique':_0x725e('0x3')},'apiKey':{'type':Sequelize[_0x725e('0x2')]},'remoteUri':{'type':Sequelize[_0x725e('0x2')],'unique':_0x725e('0x4')},'serverUrl':{'type':Sequelize[_0x725e('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0xcf2f=['exports','STRING','remoteUri','sequelize'];(function(_0x34de61,_0x1d6fe5){var _0x1805e0=function(_0x22f859){while(--_0x22f859){_0x34de61['push'](_0x34de61['shift']());}};_0x1805e0(++_0x1d6fe5);}(_0xcf2f,0xa7));var _0xfcf2=function(_0x357f6e,_0x3bc6fe){_0x357f6e=_0x357f6e-0x0;var _0x96425d=_0xcf2f[_0x357f6e];return _0x96425d;};'use strict';var Sequelize=require(_0xfcf2('0x0'));module[_0xfcf2('0x1')]={'name':{'type':Sequelize[_0xfcf2('0x2')]},'description':{'type':Sequelize[_0xfcf2('0x2')]},'username':{'type':Sequelize[_0xfcf2('0x2')],'unique':'username'},'apiKey':{'type':Sequelize[_0xfcf2('0x2')]},'remoteUri':{'type':Sequelize[_0xfcf2('0x2')],'unique':_0xfcf2('0x3')},'serverUrl':{'type':Sequelize[_0xfcf2('0x2')],'allowNull':![]}};
\ No newline at end of file
index c9566bb..ad6a7b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76d2=['custom_text','custom_dropdown','label','choices','statusCode','stringify','test','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','then','stack','send','index','map','FreshdeskAccount','rawAttributes','type','key','model','name','query','keys','filters','intersection','fields','attributes','length','nolimit','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','find','create','body','getConfigurations','findOne','FreshdeskConfiguration','order','hasOwnProperty','addConfiguration','AccountId','Subjects','getSubjects','channel','FreshdeskField','Descriptions','getFields','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','api/v2/ticket_fields','Basic\x20%s','%s:X','toString','requester','subject','agent','description','priority','group','source','ticket_type','company','includes','default'];(function(_0x483a68,_0x2acc85){var _0x5d8176=function(_0x1fd36b){while(--_0x1fd36b){_0x483a68['push'](_0x483a68['shift']());}};_0x5d8176(++_0x2acc85);}(_0x76d2,0xf8));var _0x276d=function(_0x57a07a,_0x21cbd9){_0x57a07a=_0x57a07a-0x0;var _0x5e5f23=_0x76d2[_0x57a07a];return _0x5e5f23;};'use strict';var emlformat=require(_0x276d('0x0'));var rimraf=require(_0x276d('0x1'));var zipdir=require(_0x276d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x276d('0x3'));var moment=require(_0x276d('0x4'));var BPromise=require(_0x276d('0x5'));var Mustache=require(_0x276d('0x6'));var util=require('util');var path=require('path');var sox=require(_0x276d('0x7'));var csv=require(_0x276d('0x8'));var ejs=require(_0x276d('0x9'));var fs=require('fs');var fs_extra=require(_0x276d('0xa'));var _=require(_0x276d('0xb'));var squel=require(_0x276d('0xc'));var crypto=require(_0x276d('0xd'));var jsforce=require(_0x276d('0xe'));var deskjs=require(_0x276d('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x276d('0x10'));var Redis=require(_0x276d('0x11'));var authService=require(_0x276d('0x12'));var qs=require(_0x276d('0x13'));var as=require(_0x276d('0x14'));var hardwareService=require(_0x276d('0x15'));var logger=require('../../config/logger')('api');var utils=require(_0x276d('0x16'));var config=require(_0x276d('0x17'));var licenseUtil=require(_0x276d('0x18'));var db=require(_0x276d('0x19'))['db'];var integrations=require(_0x276d('0x1a'));function respondWithStatusCode(_0x2e4374,_0x4b9f5f){_0x4b9f5f=_0x4b9f5f||0xcc;return function(_0x52a319){if(_0x52a319){return _0x2e4374[_0x276d('0x1b')](_0x4b9f5f);}return _0x2e4374[_0x276d('0x1c')](_0x4b9f5f)[_0x276d('0x1d')]();};}function respondWithResult(_0x377540,_0x3166a2){_0x3166a2=_0x3166a2||0xc8;return function(_0x276c25){if(_0x276c25){return _0x377540[_0x276d('0x1c')](_0x3166a2)[_0x276d('0x1e')](_0x276c25);}};}function respondWithFilteredResult(_0x5b23b7,_0x2165c6){return function(_0x43efeb){if(_0x43efeb){var _0x50cdfd=typeof _0x2165c6['offset']===_0x276d('0x1f')&&typeof _0x2165c6[_0x276d('0x20')]==='undefined';var _0x1d8b5f=_0x43efeb['count'];var _0x501b7b=_0x50cdfd?0x0:_0x2165c6[_0x276d('0x21')];var _0x48a275=_0x50cdfd?_0x43efeb[_0x276d('0x22')]:_0x2165c6[_0x276d('0x21')]+_0x2165c6[_0x276d('0x20')];var _0x11d8d8;if(_0x48a275>=_0x1d8b5f){_0x48a275=_0x1d8b5f;_0x11d8d8=0xc8;}else{_0x11d8d8=0xce;}_0x5b23b7['status'](_0x11d8d8);return _0x5b23b7[_0x276d('0x23')](_0x276d('0x24'),_0x501b7b+'-'+_0x48a275+'/'+_0x1d8b5f)['json'](_0x43efeb);}return null;};}function patchUpdates(_0x5e8fee){return function(_0x45709d){try{jsonpatch[_0x276d('0x25')](_0x45709d,_0x5e8fee,!![]);}catch(_0x53e20e){return BPromise[_0x276d('0x26')](_0x53e20e);}return _0x45709d[_0x276d('0x27')]();};}function saveUpdates(_0x57d4b7,_0x284160){return function(_0x5c6d44){if(_0x5c6d44){return _0x5c6d44[_0x276d('0x28')](_0x57d4b7)[_0x276d('0x29')](function(_0x5f0561){return _0x5f0561;});}return null;};}function removeEntity(_0x476671,_0x3edb3b){return function(_0x58ea98){if(_0x58ea98){return _0x58ea98['destroy']()[_0x276d('0x29')](function(){_0x476671[_0x276d('0x1c')](0xcc)[_0x276d('0x1d')]();});}};}function handleEntityNotFound(_0x3dd10b,_0x2cab84){return function(_0x49a9f9){if(!_0x49a9f9){_0x3dd10b[_0x276d('0x1b')](0x194);}return _0x49a9f9;};}function handleError(_0x4b517f,_0xc8b1cc){_0xc8b1cc=_0xc8b1cc||0x1f4;return function(_0x1f85d9){logger['error'](_0x1f85d9[_0x276d('0x2a')]);if(_0x1f85d9['name']){delete _0x1f85d9['name'];}_0x4b517f['status'](_0xc8b1cc)[_0x276d('0x2b')](_0x1f85d9);};}exports[_0x276d('0x2c')]=function(_0xf2f7d,_0x43b79b){var _0x531a88={},_0x1438c6={},_0xa97fd5={'count':0x0,'rows':[]};var _0x40e801=_[_0x276d('0x2d')](db[_0x276d('0x2e')][_0x276d('0x2f')],function(_0x1102f7){return{'name':_0x1102f7['fieldName'],'type':_0x1102f7[_0x276d('0x30')][_0x276d('0x31')]};});_0x1438c6[_0x276d('0x32')]=_[_0x276d('0x2d')](_0x40e801,_0x276d('0x33'));_0x1438c6[_0x276d('0x34')]=_[_0x276d('0x35')](_0xf2f7d['query']);_0x1438c6[_0x276d('0x36')]=_[_0x276d('0x37')](_0x1438c6[_0x276d('0x32')],_0x1438c6[_0x276d('0x34')]);_0x531a88['attributes']=_[_0x276d('0x37')](_0x1438c6['model'],qs[_0x276d('0x38')](_0xf2f7d[_0x276d('0x34')][_0x276d('0x38')]));_0x531a88[_0x276d('0x39')]=_0x531a88[_0x276d('0x39')][_0x276d('0x3a')]?_0x531a88[_0x276d('0x39')]:_0x1438c6[_0x276d('0x32')];if(!_0xf2f7d['query']['hasOwnProperty'](_0x276d('0x3b'))){_0x531a88['limit']=qs[_0x276d('0x20')](_0xf2f7d[_0x276d('0x34')][_0x276d('0x20')]);_0x531a88[_0x276d('0x21')]=qs[_0x276d('0x21')](_0xf2f7d[_0x276d('0x34')][_0x276d('0x21')]);}_0x531a88['order']=qs['sort'](_0xf2f7d[_0x276d('0x34')][_0x276d('0x3c')]);_0x531a88['where']=qs['filters'](_[_0x276d('0x3d')](_0xf2f7d[_0x276d('0x34')],_0x1438c6['filters']),_0x40e801);if(_0xf2f7d[_0x276d('0x34')][_0x276d('0x3e')]){_0x531a88[_0x276d('0x3f')]=_[_0x276d('0x40')](_0x531a88[_0x276d('0x3f')],{'$or':_[_0x276d('0x2d')](_0x40e801,function(_0x5e5166){if(_0x5e5166[_0x276d('0x30')]!==_0x276d('0x41')){var _0x53d9a7={};_0x53d9a7[_0x5e5166['name']]={'$like':'%'+_0xf2f7d['query'][_0x276d('0x3e')]+'%'};return _0x53d9a7;}})});}_0x531a88=_[_0x276d('0x40')]({},_0x531a88,_0xf2f7d['options']);var _0x4ed666={'where':_0x531a88[_0x276d('0x3f')]};return db[_0x276d('0x2e')][_0x276d('0x22')](_0x4ed666)[_0x276d('0x29')](function(_0x3a0b1c){_0xa97fd5[_0x276d('0x22')]=_0x3a0b1c;if(_0xf2f7d[_0x276d('0x34')][_0x276d('0x42')]){_0x531a88[_0x276d('0x43')]=[{'all':!![]}];}return db[_0x276d('0x2e')][_0x276d('0x44')](_0x531a88);})[_0x276d('0x29')](function(_0x41a3a8){_0xa97fd5[_0x276d('0x45')]=_0x41a3a8;return _0xa97fd5;})['then'](respondWithFilteredResult(_0x43b79b,_0x531a88))[_0x276d('0x46')](handleError(_0x43b79b,null));};exports[_0x276d('0x47')]=function(_0x10ca70,_0x266373){var _0x8ef582={'raw':![],'where':{'id':_0x10ca70[_0x276d('0x48')]['id']}},_0x445eb1={};_0x445eb1[_0x276d('0x32')]=_[_0x276d('0x35')](db['FreshdeskAccount'][_0x276d('0x2f')]);_0x445eb1[_0x276d('0x34')]=_[_0x276d('0x35')](_0x10ca70[_0x276d('0x34')]);_0x445eb1['filters']=_[_0x276d('0x37')](_0x445eb1[_0x276d('0x32')],_0x445eb1[_0x276d('0x34')]);_0x8ef582[_0x276d('0x39')]=_[_0x276d('0x37')](_0x445eb1[_0x276d('0x32')],qs['fields'](_0x10ca70[_0x276d('0x34')]['fields']));_0x8ef582[_0x276d('0x39')]=_0x8ef582[_0x276d('0x39')]['length']?_0x8ef582[_0x276d('0x39')]:_0x445eb1[_0x276d('0x32')];if(_0x10ca70['query'][_0x276d('0x42')]){_0x8ef582[_0x276d('0x43')]=[{'all':!![]}];}_0x8ef582=_['merge']({},_0x8ef582,_0x10ca70[_0x276d('0x49')]);return db[_0x276d('0x2e')][_0x276d('0x4a')](_0x8ef582)[_0x276d('0x29')](handleEntityNotFound(_0x266373,null))[_0x276d('0x29')](respondWithResult(_0x266373,null))['catch'](handleError(_0x266373,null));};exports[_0x276d('0x4b')]=function(_0x259831,_0x397a2d){return db['FreshdeskAccount'][_0x276d('0x4b')](_0x259831[_0x276d('0x4c')],{})[_0x276d('0x29')](respondWithResult(_0x397a2d,0xc9))['catch'](handleError(_0x397a2d,null));};exports[_0x276d('0x28')]=function(_0x1642d7,_0x2ad1fe){if(_0x1642d7[_0x276d('0x4c')]['id']){delete _0x1642d7['body']['id'];}return db['FreshdeskAccount'][_0x276d('0x4a')]({'where':{'id':_0x1642d7[_0x276d('0x48')]['id']}})[_0x276d('0x29')](handleEntityNotFound(_0x2ad1fe,null))[_0x276d('0x29')](saveUpdates(_0x1642d7['body'],null))[_0x276d('0x29')](respondWithResult(_0x2ad1fe,null))['catch'](handleError(_0x2ad1fe,null));};exports['destroy']=function(_0x4e8ea3,_0x525c45){return db[_0x276d('0x2e')][_0x276d('0x4a')]({'where':{'id':_0x4e8ea3[_0x276d('0x48')]['id']}})['then'](handleEntityNotFound(_0x525c45,null))['then'](removeEntity(_0x525c45,null))['catch'](handleError(_0x525c45,null));};exports[_0x276d('0x4d')]=function(_0x3c279c,_0x27e5a7,_0x75136f){var _0x4d4c97={};var _0x5de49a={};var _0x4d16ae;var _0x21d079;return db[_0x276d('0x2e')][_0x276d('0x4e')]({'where':{'id':_0x3c279c[_0x276d('0x48')]['id']}})['then'](handleEntityNotFound(_0x27e5a7,null))[_0x276d('0x29')](function(_0x2be3ef){if(_0x2be3ef){_0x4d16ae=_0x2be3ef;_0x5de49a[_0x276d('0x32')]=_[_0x276d('0x35')](db[_0x276d('0x4f')][_0x276d('0x2f')]);_0x5de49a[_0x276d('0x34')]=_[_0x276d('0x35')](_0x3c279c['query']);_0x5de49a['filters']=_[_0x276d('0x37')](_0x5de49a['model'],_0x5de49a[_0x276d('0x34')]);_0x4d4c97[_0x276d('0x39')]=_[_0x276d('0x37')](_0x5de49a[_0x276d('0x32')],qs[_0x276d('0x38')](_0x3c279c['query'][_0x276d('0x38')]));_0x4d4c97[_0x276d('0x39')]=_0x4d4c97[_0x276d('0x39')][_0x276d('0x3a')]?_0x4d4c97[_0x276d('0x39')]:_0x5de49a['model'];_0x4d4c97[_0x276d('0x50')]=qs[_0x276d('0x3c')](_0x3c279c['query'][_0x276d('0x3c')]);_0x4d4c97[_0x276d('0x3f')]=qs['filters'](_[_0x276d('0x3d')](_0x3c279c[_0x276d('0x34')],_0x5de49a[_0x276d('0x36')]));if(_0x3c279c[_0x276d('0x34')][_0x276d('0x3e')]){_0x4d4c97[_0x276d('0x3f')]=_[_0x276d('0x40')](_0x4d4c97[_0x276d('0x3f')],{'$or':_[_0x276d('0x2d')](_0x4d4c97[_0x276d('0x39')],function(_0x38e2f1){var _0x44cbd0={};_0x44cbd0[_0x38e2f1]={'$like':'%'+_0x3c279c[_0x276d('0x34')]['filter']+'%'};return _0x44cbd0;})});}_0x4d4c97=_[_0x276d('0x40')]({},_0x4d4c97,_0x3c279c[_0x276d('0x49')]);return _0x4d16ae[_0x276d('0x4d')](_0x4d4c97);}})[_0x276d('0x29')](function(_0x4876f4){if(_0x4876f4){_0x21d079=_0x4876f4['length'];if(!_0x3c279c['query'][_0x276d('0x51')](_0x276d('0x3b'))){_0x4d4c97[_0x276d('0x20')]=qs[_0x276d('0x20')](_0x3c279c['query'][_0x276d('0x20')]);_0x4d4c97[_0x276d('0x21')]=qs[_0x276d('0x21')](_0x3c279c[_0x276d('0x34')][_0x276d('0x21')]);}return _0x4d16ae[_0x276d('0x4d')](_0x4d4c97);}})[_0x276d('0x29')](function(_0x357a8c){if(_0x357a8c){return _0x357a8c?{'count':_0x21d079,'rows':_0x357a8c}:null;}})[_0x276d('0x29')](respondWithResult(_0x27e5a7,null))[_0x276d('0x46')](handleError(_0x27e5a7,null));};exports[_0x276d('0x52')]=function(_0x4f847c,_0x39b4fa,_0x3c3408){if(_0x4f847c['body']['id']){delete _0x4f847c[_0x276d('0x4c')]['id'];}return db[_0x276d('0x2e')]['findOne']({'where':{'id':_0x4f847c[_0x276d('0x48')]['id']}})[_0x276d('0x29')](handleEntityNotFound(_0x39b4fa,null))[_0x276d('0x29')](function(_0x5db132){if(_0x5db132){_0x4f847c[_0x276d('0x4c')][_0x276d('0x53')]=_0x5db132['id'];_0x4f847c[_0x276d('0x4c')][_0x276d('0x54')]=integrations[_0x276d('0x55')](_0x4f847c[_0x276d('0x4c')][_0x276d('0x56')],_0x4f847c[_0x276d('0x4c')]['type']);_0x4f847c[_0x276d('0x4c')]['Descriptions']=integrations['getDescriptions'](_0x4f847c[_0x276d('0x4c')][_0x276d('0x56')],_0x4f847c[_0x276d('0x4c')][_0x276d('0x30')]);return db['FreshdeskConfiguration'][_0x276d('0x4b')](_0x4f847c[_0x276d('0x4c')],{'include':[{'model':db[_0x276d('0x57')],'as':_0x276d('0x54')},{'model':db[_0x276d('0x57')],'as':_0x276d('0x58')}]});}return null;})[_0x276d('0x29')](respondWithResult(_0x39b4fa,null))[_0x276d('0x46')](handleError(_0x39b4fa,null));};exports[_0x276d('0x59')]=function(_0x196257,_0x298867,_0x4c910d){var _0x2db556='';return db[_0x276d('0x2e')][_0x276d('0x4e')]({'where':{'id':_0x196257[_0x276d('0x48')]['id']},'attributes':['id',_0x276d('0x5a'),_0x276d('0x5b')]})[_0x276d('0x29')](handleEntityNotFound(_0x298867,null))[_0x276d('0x29')](function(_0x240d9d){if(_0x240d9d){_0x2db556=_0x240d9d['remoteUri'];var _0x18364b=_0x2db556[_0x276d('0x5c')](-0x1);if(_0x18364b==='/'){_0x2db556=_0x2db556[_0x276d('0x5d')](0x0,_0x2db556[_0x276d('0x5e')](_0x18364b));}return rp({'method':_0x276d('0x5f'),'uri':util[_0x276d('0x60')]('%s/%s',_0x2db556,_0x276d('0x61')),'headers':{'Authorization':util[_0x276d('0x60')](_0x276d('0x62'),new Buffer(util[_0x276d('0x60')](_0x276d('0x63'),_0x240d9d['apiKey']))[_0x276d('0x64')]('base64'))},'json':!![]});}})['then'](function(_0x2963bf){if(_0x2963bf){var _0xd66b05=[_0x276d('0x65'),_0x276d('0x66'),_0x276d('0x67'),_0x276d('0x68'),_0x276d('0x1c'),_0x276d('0x69'),_0x276d('0x6a'),_0x276d('0x6b'),_0x276d('0x6c'),_0x276d('0x6a'),_0x276d('0x6d')];_['remove'](_0x2963bf,function(_0x215098){return _0xd66b05[_0x276d('0x6e')](_0x215098[_0x276d('0x33')])||!_0x215098[_0x276d('0x6f')]&&_0x215098[_0x276d('0x30')]!==_0x276d('0x70')&&_0x215098[_0x276d('0x30')]!==_0x276d('0x71');});return{'count':_0x2963bf['length'],'rows':_['map'](_0x2963bf,function(_0x35538e){return{'id':_0x35538e[_0x276d('0x33')],'name':_0x35538e[_0x276d('0x72')],'custom':!_0x35538e[_0x276d('0x6f')],'options':_0x35538e[_0x276d('0x73')]?_['map'](_0x35538e['choices'],function(_0x11d3ec){return{'name':_['capitalize'](_0x11d3ec),'value':_0x11d3ec};}):[]};})};}})[_0x276d('0x29')](respondWithResult(_0x298867,null))[_0x276d('0x46')](function(_0x346ecd){var _0x5aa634=_0x196257[_0x276d('0x34')]['test']?0x1f4:_0x346ecd[_0x276d('0x74')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x5aa634,JSON[_0x276d('0x75')](_0x346ecd));delete _0x346ecd[_0x276d('0x33')];if(_0x5aa634===0x191){_0x5aa634=0x190;}_0x298867[_0x276d('0x1c')](_0x5aa634)[_0x276d('0x2b')](_0x196257[_0x276d('0x34')][_0x276d('0x76')]?{'message':_0x276d('0x77'),'statusCode':_0x346ecd[_0x276d('0x74')]}:_0x346ecd);});};
\ No newline at end of file
+var _0xf6ed=['FreshdeskField','getFields','apiKey','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','%s:X','toString','base64','subject','agent','description','priority','group','source','ticket_type','remove','includes','default','custom_text','custom_dropdown','choices','capitalize','test','stringify','Wrong\x20credentials','eml-format','zip-dir','fast-json-patch','request-promise','mustache','sox','ejs','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','update','error','name','send','FreshdeskAccount','fieldName','key','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','filter','type','VIRTUAL','merge','then','includeAll','include','catch','show','params','rawAttributes','options','find','create','body','destroy','getConfigurations','findOne','FreshdeskConfiguration','sort','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','channel'];(function(_0x2d8b5c,_0x1eac61){var _0x49f5de=function(_0x2eaacd){while(--_0x2eaacd){_0x2d8b5c['push'](_0x2d8b5c['shift']());}};_0x49f5de(++_0x1eac61);}(_0xf6ed,0x1ce));var _0xdf6e=function(_0x489e48,_0x41678d){_0x489e48=_0x489e48-0x0;var _0x472fbc=_0xf6ed[_0x489e48];return _0x472fbc;};'use strict';var emlformat=require(_0xdf6e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xdf6e('0x1'));var jsonpatch=require(_0xdf6e('0x2'));var rp=require(_0xdf6e('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xdf6e('0x4'));var util=require('util');var path=require('path');var sox=require(_0xdf6e('0x5'));var csv=require('to-csv');var ejs=require(_0xdf6e('0x6'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdf6e('0x7'));var squel=require(_0xdf6e('0x8'));var crypto=require(_0xdf6e('0x9'));var jsforce=require(_0xdf6e('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xdf6e('0xb'));var querystring=require(_0xdf6e('0xc'));var Papa=require(_0xdf6e('0xd'));var Redis=require(_0xdf6e('0xe'));var authService=require(_0xdf6e('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0xdf6e('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xdf6e('0x11'))('api');var utils=require(_0xdf6e('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xdf6e('0x13'));var db=require(_0xdf6e('0x14'))['db'];var integrations=require('../../components/integrations/configuration');function respondWithStatusCode(_0x12e817,_0x18a504){_0x18a504=_0x18a504||0xcc;return function(_0x3c9e75){if(_0x3c9e75){return _0x12e817[_0xdf6e('0x15')](_0x18a504);}return _0x12e817[_0xdf6e('0x16')](_0x18a504)[_0xdf6e('0x17')]();};}function respondWithResult(_0x500ea4,_0x41ad53){_0x41ad53=_0x41ad53||0xc8;return function(_0x5c6805){if(_0x5c6805){return _0x500ea4[_0xdf6e('0x16')](_0x41ad53)[_0xdf6e('0x18')](_0x5c6805);}};}function respondWithFilteredResult(_0x45a3f1,_0x458c86){return function(_0x2eb619){if(_0x2eb619){var _0xa41255=typeof _0x458c86[_0xdf6e('0x19')]==='undefined'&&typeof _0x458c86[_0xdf6e('0x1a')]==='undefined';var _0x1f98ca=_0x2eb619[_0xdf6e('0x1b')];var _0x5beead=_0xa41255?0x0:_0x458c86['offset'];var _0x2f32ec=_0xa41255?_0x2eb619[_0xdf6e('0x1b')]:_0x458c86[_0xdf6e('0x19')]+_0x458c86['limit'];var _0x2b5ec6;if(_0x2f32ec>=_0x1f98ca){_0x2f32ec=_0x1f98ca;_0x2b5ec6=0xc8;}else{_0x2b5ec6=0xce;}_0x45a3f1[_0xdf6e('0x16')](_0x2b5ec6);return _0x45a3f1[_0xdf6e('0x1c')](_0xdf6e('0x1d'),_0x5beead+'-'+_0x2f32ec+'/'+_0x1f98ca)[_0xdf6e('0x18')](_0x2eb619);}return null;};}function patchUpdates(_0x359100){return function(_0x530290){try{jsonpatch[_0xdf6e('0x1e')](_0x530290,_0x359100,!![]);}catch(_0x1dbe4a){return BPromise[_0xdf6e('0x1f')](_0x1dbe4a);}return _0x530290['save']();};}function saveUpdates(_0x3e985c,_0x5edc14){return function(_0x30af87){if(_0x30af87){return _0x30af87[_0xdf6e('0x20')](_0x3e985c)['then'](function(_0xb553d1){return _0xb553d1;});}return null;};}function removeEntity(_0x17aa52,_0x45f053){return function(_0x44caed){if(_0x44caed){return _0x44caed['destroy']()['then'](function(){_0x17aa52[_0xdf6e('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x11d19a,_0xf10cda){return function(_0x70ef58){if(!_0x70ef58){_0x11d19a[_0xdf6e('0x15')](0x194);}return _0x70ef58;};}function handleError(_0x5d4897,_0x331f27){_0x331f27=_0x331f27||0x1f4;return function(_0x720f52){logger[_0xdf6e('0x21')](_0x720f52['stack']);if(_0x720f52[_0xdf6e('0x22')]){delete _0x720f52[_0xdf6e('0x22')];}_0x5d4897[_0xdf6e('0x16')](_0x331f27)[_0xdf6e('0x23')](_0x720f52);};}exports['index']=function(_0x1ef42a,_0x2ed48e){var _0x533a8c={},_0x6b4289={},_0x586eb3={'count':0x0,'rows':[]};var _0x3d47=_['map'](db[_0xdf6e('0x24')]['rawAttributes'],function(_0x397cc5){return{'name':_0x397cc5[_0xdf6e('0x25')],'type':_0x397cc5['type'][_0xdf6e('0x26')]};});_0x6b4289[_0xdf6e('0x27')]=_[_0xdf6e('0x28')](_0x3d47,_0xdf6e('0x22'));_0x6b4289['query']=_[_0xdf6e('0x29')](_0x1ef42a[_0xdf6e('0x2a')]);_0x6b4289[_0xdf6e('0x2b')]=_[_0xdf6e('0x2c')](_0x6b4289[_0xdf6e('0x27')],_0x6b4289[_0xdf6e('0x2a')]);_0x533a8c[_0xdf6e('0x2d')]=_[_0xdf6e('0x2c')](_0x6b4289['model'],qs['fields'](_0x1ef42a[_0xdf6e('0x2a')][_0xdf6e('0x2e')]));_0x533a8c['attributes']=_0x533a8c['attributes'][_0xdf6e('0x2f')]?_0x533a8c[_0xdf6e('0x2d')]:_0x6b4289[_0xdf6e('0x27')];if(!_0x1ef42a[_0xdf6e('0x2a')][_0xdf6e('0x30')](_0xdf6e('0x31'))){_0x533a8c[_0xdf6e('0x1a')]=qs[_0xdf6e('0x1a')](_0x1ef42a[_0xdf6e('0x2a')]['limit']);_0x533a8c['offset']=qs[_0xdf6e('0x19')](_0x1ef42a['query'][_0xdf6e('0x19')]);}_0x533a8c[_0xdf6e('0x32')]=qs['sort'](_0x1ef42a[_0xdf6e('0x2a')]['sort']);_0x533a8c[_0xdf6e('0x33')]=qs[_0xdf6e('0x2b')](_['pick'](_0x1ef42a[_0xdf6e('0x2a')],_0x6b4289['filters']),_0x3d47);if(_0x1ef42a[_0xdf6e('0x2a')][_0xdf6e('0x34')]){_0x533a8c[_0xdf6e('0x33')]=_['merge'](_0x533a8c[_0xdf6e('0x33')],{'$or':_[_0xdf6e('0x28')](_0x3d47,function(_0x286369){if(_0x286369[_0xdf6e('0x35')]!==_0xdf6e('0x36')){var _0x5d35bc={};_0x5d35bc[_0x286369[_0xdf6e('0x22')]]={'$like':'%'+_0x1ef42a[_0xdf6e('0x2a')][_0xdf6e('0x34')]+'%'};return _0x5d35bc;}})});}_0x533a8c=_[_0xdf6e('0x37')]({},_0x533a8c,_0x1ef42a['options']);var _0xa8b5df={'where':_0x533a8c[_0xdf6e('0x33')]};return db[_0xdf6e('0x24')][_0xdf6e('0x1b')](_0xa8b5df)[_0xdf6e('0x38')](function(_0x3e8153){_0x586eb3['count']=_0x3e8153;if(_0x1ef42a[_0xdf6e('0x2a')][_0xdf6e('0x39')]){_0x533a8c[_0xdf6e('0x3a')]=[{'all':!![]}];}return db[_0xdf6e('0x24')]['findAll'](_0x533a8c);})[_0xdf6e('0x38')](function(_0x1e6143){_0x586eb3['rows']=_0x1e6143;return _0x586eb3;})[_0xdf6e('0x38')](respondWithFilteredResult(_0x2ed48e,_0x533a8c))[_0xdf6e('0x3b')](handleError(_0x2ed48e,null));};exports[_0xdf6e('0x3c')]=function(_0x3148e0,_0x3f1e5f){var _0x3878fc={'raw':![],'where':{'id':_0x3148e0[_0xdf6e('0x3d')]['id']}},_0x2e033d={};_0x2e033d[_0xdf6e('0x27')]=_['keys'](db[_0xdf6e('0x24')][_0xdf6e('0x3e')]);_0x2e033d[_0xdf6e('0x2a')]=_[_0xdf6e('0x29')](_0x3148e0[_0xdf6e('0x2a')]);_0x2e033d[_0xdf6e('0x2b')]=_[_0xdf6e('0x2c')](_0x2e033d['model'],_0x2e033d[_0xdf6e('0x2a')]);_0x3878fc['attributes']=_[_0xdf6e('0x2c')](_0x2e033d[_0xdf6e('0x27')],qs[_0xdf6e('0x2e')](_0x3148e0[_0xdf6e('0x2a')]['fields']));_0x3878fc[_0xdf6e('0x2d')]=_0x3878fc[_0xdf6e('0x2d')][_0xdf6e('0x2f')]?_0x3878fc['attributes']:_0x2e033d[_0xdf6e('0x27')];if(_0x3148e0[_0xdf6e('0x2a')][_0xdf6e('0x39')]){_0x3878fc[_0xdf6e('0x3a')]=[{'all':!![]}];}_0x3878fc=_[_0xdf6e('0x37')]({},_0x3878fc,_0x3148e0[_0xdf6e('0x3f')]);return db[_0xdf6e('0x24')][_0xdf6e('0x40')](_0x3878fc)[_0xdf6e('0x38')](handleEntityNotFound(_0x3f1e5f,null))['then'](respondWithResult(_0x3f1e5f,null))[_0xdf6e('0x3b')](handleError(_0x3f1e5f,null));};exports['create']=function(_0x10a9c8,_0x2edfe5){return db[_0xdf6e('0x24')][_0xdf6e('0x41')](_0x10a9c8[_0xdf6e('0x42')],{})['then'](respondWithResult(_0x2edfe5,0xc9))['catch'](handleError(_0x2edfe5,null));};exports['update']=function(_0x592327,_0x5e7c6a){if(_0x592327[_0xdf6e('0x42')]['id']){delete _0x592327[_0xdf6e('0x42')]['id'];}return db['FreshdeskAccount'][_0xdf6e('0x40')]({'where':{'id':_0x592327[_0xdf6e('0x3d')]['id']}})[_0xdf6e('0x38')](handleEntityNotFound(_0x5e7c6a,null))[_0xdf6e('0x38')](saveUpdates(_0x592327[_0xdf6e('0x42')],null))[_0xdf6e('0x38')](respondWithResult(_0x5e7c6a,null))['catch'](handleError(_0x5e7c6a,null));};exports[_0xdf6e('0x43')]=function(_0x3e60eb,_0x4f378c){return db[_0xdf6e('0x24')]['find']({'where':{'id':_0x3e60eb[_0xdf6e('0x3d')]['id']}})[_0xdf6e('0x38')](handleEntityNotFound(_0x4f378c,null))[_0xdf6e('0x38')](removeEntity(_0x4f378c,null))[_0xdf6e('0x3b')](handleError(_0x4f378c,null));};exports[_0xdf6e('0x44')]=function(_0x4e7596,_0x1ce3b0,_0x38bc6d){var _0x2dcffe={};var _0x2899af={};var _0x3db796;var _0x1275b6;return db[_0xdf6e('0x24')][_0xdf6e('0x45')]({'where':{'id':_0x4e7596['params']['id']}})[_0xdf6e('0x38')](handleEntityNotFound(_0x1ce3b0,null))['then'](function(_0xbeef0a){if(_0xbeef0a){_0x3db796=_0xbeef0a;_0x2899af[_0xdf6e('0x27')]=_[_0xdf6e('0x29')](db[_0xdf6e('0x46')][_0xdf6e('0x3e')]);_0x2899af['query']=_[_0xdf6e('0x29')](_0x4e7596[_0xdf6e('0x2a')]);_0x2899af['filters']=_[_0xdf6e('0x2c')](_0x2899af[_0xdf6e('0x27')],_0x2899af['query']);_0x2dcffe[_0xdf6e('0x2d')]=_[_0xdf6e('0x2c')](_0x2899af['model'],qs[_0xdf6e('0x2e')](_0x4e7596['query'][_0xdf6e('0x2e')]));_0x2dcffe['attributes']=_0x2dcffe['attributes'][_0xdf6e('0x2f')]?_0x2dcffe['attributes']:_0x2899af[_0xdf6e('0x27')];_0x2dcffe[_0xdf6e('0x32')]=qs[_0xdf6e('0x47')](_0x4e7596[_0xdf6e('0x2a')][_0xdf6e('0x47')]);_0x2dcffe[_0xdf6e('0x33')]=qs[_0xdf6e('0x2b')](_['pick'](_0x4e7596['query'],_0x2899af[_0xdf6e('0x2b')]));if(_0x4e7596[_0xdf6e('0x2a')][_0xdf6e('0x34')]){_0x2dcffe[_0xdf6e('0x33')]=_['merge'](_0x2dcffe['where'],{'$or':_[_0xdf6e('0x28')](_0x2dcffe[_0xdf6e('0x2d')],function(_0x3ff904){var _0xf8a5da={};_0xf8a5da[_0x3ff904]={'$like':'%'+_0x4e7596['query'][_0xdf6e('0x34')]+'%'};return _0xf8a5da;})});}_0x2dcffe=_[_0xdf6e('0x37')]({},_0x2dcffe,_0x4e7596[_0xdf6e('0x3f')]);return _0x3db796['getConfigurations'](_0x2dcffe);}})['then'](function(_0x1219dd){if(_0x1219dd){_0x1275b6=_0x1219dd[_0xdf6e('0x2f')];if(!_0x4e7596[_0xdf6e('0x2a')][_0xdf6e('0x30')](_0xdf6e('0x31'))){_0x2dcffe['limit']=qs[_0xdf6e('0x1a')](_0x4e7596['query']['limit']);_0x2dcffe[_0xdf6e('0x19')]=qs[_0xdf6e('0x19')](_0x4e7596[_0xdf6e('0x2a')][_0xdf6e('0x19')]);}return _0x3db796['getConfigurations'](_0x2dcffe);}})[_0xdf6e('0x38')](function(_0x2c33b8){if(_0x2c33b8){return _0x2c33b8?{'count':_0x1275b6,'rows':_0x2c33b8}:null;}})[_0xdf6e('0x38')](respondWithResult(_0x1ce3b0,null))[_0xdf6e('0x3b')](handleError(_0x1ce3b0,null));};exports[_0xdf6e('0x48')]=function(_0x300801,_0x5a9284,_0x1ce77a){if(_0x300801['body']['id']){delete _0x300801[_0xdf6e('0x42')]['id'];}return db[_0xdf6e('0x24')][_0xdf6e('0x45')]({'where':{'id':_0x300801[_0xdf6e('0x3d')]['id']}})['then'](handleEntityNotFound(_0x5a9284,null))['then'](function(_0x5b2bb7){if(_0x5b2bb7){_0x300801[_0xdf6e('0x42')][_0xdf6e('0x49')]=_0x5b2bb7['id'];_0x300801['body'][_0xdf6e('0x4a')]=integrations[_0xdf6e('0x4b')](_0x300801[_0xdf6e('0x42')]['channel'],_0x300801['body'][_0xdf6e('0x35')]);_0x300801[_0xdf6e('0x42')][_0xdf6e('0x4c')]=integrations['getDescriptions'](_0x300801[_0xdf6e('0x42')][_0xdf6e('0x4d')],_0x300801[_0xdf6e('0x42')][_0xdf6e('0x35')]);return db[_0xdf6e('0x46')][_0xdf6e('0x41')](_0x300801[_0xdf6e('0x42')],{'include':[{'model':db[_0xdf6e('0x4e')],'as':_0xdf6e('0x4a')},{'model':db[_0xdf6e('0x4e')],'as':_0xdf6e('0x4c')}]});}return null;})['then'](respondWithResult(_0x5a9284,null))['catch'](handleError(_0x5a9284,null));};exports[_0xdf6e('0x4f')]=function(_0x37101c,_0x3eaf48,_0x120909){var _0x7c3910='';return db[_0xdf6e('0x24')][_0xdf6e('0x45')]({'where':{'id':_0x37101c[_0xdf6e('0x3d')]['id']},'attributes':['id','remoteUri',_0xdf6e('0x50')]})[_0xdf6e('0x38')](handleEntityNotFound(_0x3eaf48,null))[_0xdf6e('0x38')](function(_0x33629d){if(_0x33629d){_0x7c3910=_0x33629d[_0xdf6e('0x51')];var _0xf8353d=_0x7c3910[_0xdf6e('0x52')](-0x1);if(_0xf8353d==='/'){_0x7c3910=_0x7c3910[_0xdf6e('0x53')](0x0,_0x7c3910[_0xdf6e('0x54')](_0xf8353d));}return rp({'method':_0xdf6e('0x55'),'uri':util[_0xdf6e('0x56')](_0xdf6e('0x57'),_0x7c3910,'api/v2/ticket_fields'),'headers':{'Authorization':util[_0xdf6e('0x56')]('Basic\x20%s',new Buffer(util[_0xdf6e('0x56')](_0xdf6e('0x58'),_0x33629d[_0xdf6e('0x50')]))[_0xdf6e('0x59')](_0xdf6e('0x5a')))},'json':!![]});}})['then'](function(_0xc7d10){if(_0xc7d10){var _0xf2b1ea=['requester',_0xdf6e('0x5b'),_0xdf6e('0x5c'),_0xdf6e('0x5d'),'status',_0xdf6e('0x5e'),_0xdf6e('0x5f'),_0xdf6e('0x60'),_0xdf6e('0x61'),_0xdf6e('0x5f'),'company'];_[_0xdf6e('0x62')](_0xc7d10,function(_0x55a4b4){return _0xf2b1ea[_0xdf6e('0x63')](_0x55a4b4['name'])||!_0x55a4b4[_0xdf6e('0x64')]&&_0x55a4b4[_0xdf6e('0x35')]!==_0xdf6e('0x65')&&_0x55a4b4['type']!==_0xdf6e('0x66');});return{'count':_0xc7d10[_0xdf6e('0x2f')],'rows':_[_0xdf6e('0x28')](_0xc7d10,function(_0x4d6569){return{'id':_0x4d6569[_0xdf6e('0x22')],'name':_0x4d6569['label'],'custom':!_0x4d6569[_0xdf6e('0x64')],'options':_0x4d6569['choices']?_[_0xdf6e('0x28')](_0x4d6569[_0xdf6e('0x67')],function(_0x5d37fb){return{'name':_[_0xdf6e('0x68')](_0x5d37fb),'value':_0x5d37fb};}):[]};})};}})[_0xdf6e('0x38')](respondWithResult(_0x3eaf48,null))[_0xdf6e('0x3b')](function(_0xcfe81){var _0x42eb9c=_0x37101c[_0xdf6e('0x2a')][_0xdf6e('0x69')]?0x1f4:_0xcfe81['statusCode']||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s','getFields',_0x42eb9c,JSON[_0xdf6e('0x6a')](_0xcfe81));delete _0xcfe81[_0xdf6e('0x22')];if(_0x42eb9c===0x191){_0x42eb9c=0x190;}_0x3eaf48[_0xdf6e('0x16')](_0x42eb9c)[_0xdf6e('0x23')](_0x37101c[_0xdf6e('0x2a')]['test']?{'message':_0xdf6e('0x6b'),'statusCode':_0xcfe81['statusCode']}:_0xcfe81);});};
\ No newline at end of file
index 836137f..c25a4c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd548=['bluebird','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','define','FreshdeskAccount','util','../../config/logger','moment'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xd548,0x1cb));var _0x8d54=function(_0x688c0e,_0xc9e8e8){_0x688c0e=_0x688c0e-0x0;var _0x351de9=_0xd548[_0x688c0e];return _0x351de9;};'use strict';var _=require('lodash');var util=require(_0x8d54('0x0'));var logger=require(_0x8d54('0x1'))('api');var moment=require(_0x8d54('0x2'));var BPromise=require(_0x8d54('0x3'));var rp=require(_0x8d54('0x4'));var fs=require('fs');var path=require(_0x8d54('0x5'));var rimraf=require(_0x8d54('0x6'));var config=require(_0x8d54('0x7'));var attributes=require('./intFreshdeskAccount.attributes');var integrations=require(_0x8d54('0x8'));module['exports']=function(_0x2c98bc,_0x1c73d3){return _0x2c98bc[_0x8d54('0x9')](_0x8d54('0xa'),attributes,{'tableName':'int_freshdesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6850=['exports','define','FreshdeskAccount','int_freshdesk_accounts','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','../../components/integrations/configuration'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x6850,0xba));var _0x0685=function(_0x12f238,_0x496285){_0x12f238=_0x12f238-0x0;var _0x454cd8=_0x6850[_0x12f238];return _0x454cd8;};'use strict';var _=require(_0x0685('0x0'));var util=require(_0x0685('0x1'));var logger=require(_0x0685('0x2'))(_0x0685('0x3'));var moment=require(_0x0685('0x4'));var BPromise=require(_0x0685('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x0685('0x6'));var rimraf=require(_0x0685('0x7'));var config=require(_0x0685('0x8'));var attributes=require('./intFreshdeskAccount.attributes');var integrations=require(_0x0685('0x9'));module[_0x0685('0xa')]=function(_0x547932,_0x54be09){return _0x547932[_0x0685('0xb')](_0x0685('0xc'),attributes,{'tableName':_0x0685('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 89b6334..3ca84e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb84=['message','result','catch','GetFreshdeskAccount','findAll','options','raw','where','limit','attributes','include','map','model','ShowFreshdeskAccount','FreshdeskAccount','find','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','FreshdeskAccount,\x20%s,\x20%s','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error'];(function(_0xb138ab,_0x31f3f){var _0x593064=function(_0x11e020){while(--_0x11e020){_0xb138ab['push'](_0xb138ab['shift']());}};_0x593064(++_0x31f3f);}(_0xbb84,0x1be));var _0x4bb8=function(_0x7bff4f,_0x45ce80){_0x7bff4f=_0x7bff4f-0x0;var _0x3c6a26=_0xbb84[_0x7bff4f];return _0x3c6a26;};'use strict';var _=require(_0x4bb8('0x0'));var util=require(_0x4bb8('0x1'));var moment=require(_0x4bb8('0x2'));var BPromise=require(_0x4bb8('0x3'));var rs=require(_0x4bb8('0x4'));var fs=require('fs');var Redis=require(_0x4bb8('0x5'));var db=require(_0x4bb8('0x6'))['db'];var utils=require(_0x4bb8('0x7'));var logger=require(_0x4bb8('0x8'))(_0x4bb8('0x9'));var config=require(_0x4bb8('0xa'));var jayson=require(_0x4bb8('0xb'));var client=jayson[_0x4bb8('0xc')][_0x4bb8('0xd')]({'port':0x232a});function respondWithRpcPromise(_0xf19326,_0x7f3aae,_0x2b0cd2){return new BPromise(function(_0xfe90e2,_0x6f21d1){return client[_0x4bb8('0xe')](_0xf19326,_0x2b0cd2)[_0x4bb8('0xf')](function(_0x5be7ec){logger[_0x4bb8('0x10')](_0x4bb8('0x11'),_0x7f3aae,'request\x20sent');logger[_0x4bb8('0x12')](_0x4bb8('0x13'),_0x7f3aae,_0x4bb8('0x14'),JSON['stringify'](_0x5be7ec));if(_0x5be7ec['error']){if(_0x5be7ec['error']['code']===0x1f4){logger[_0x4bb8('0x15')](_0x4bb8('0x11'),_0x7f3aae,_0x5be7ec[_0x4bb8('0x15')][_0x4bb8('0x16')]);return _0x6f21d1(_0x5be7ec[_0x4bb8('0x15')][_0x4bb8('0x16')]);}logger['error'](_0x4bb8('0x11'),_0x7f3aae,_0x5be7ec['error'][_0x4bb8('0x16')]);return _0xfe90e2(_0x5be7ec['error'][_0x4bb8('0x16')]);}else{logger[_0x4bb8('0x10')]('FreshdeskAccount,\x20%s,\x20%s',_0x7f3aae,'request\x20sent');_0xfe90e2(_0x5be7ec[_0x4bb8('0x17')][_0x4bb8('0x16')]);}})[_0x4bb8('0x18')](function(_0x7f63c7){logger['error']('FreshdeskAccount,\x20%s,\x20%s',_0x7f3aae,_0x7f63c7);_0x6f21d1(_0x7f63c7);});});}exports[_0x4bb8('0x19')]=function(_0x281e30){var _0x46d65e=this;return new Promise(function(_0x3ebf93,_0x323958){return db['FreshdeskAccount'][_0x4bb8('0x1a')]({'raw':_0x281e30[_0x4bb8('0x1b')]?_0x281e30[_0x4bb8('0x1b')][_0x4bb8('0x1c')]===undefined?!![]:![]:!![],'where':_0x281e30[_0x4bb8('0x1b')]?_0x281e30[_0x4bb8('0x1b')][_0x4bb8('0x1d')]||null:null,'attributes':_0x281e30[_0x4bb8('0x1b')]?_0x281e30[_0x4bb8('0x1b')]['attributes']||null:null,'limit':_0x281e30[_0x4bb8('0x1b')]?_0x281e30['options'][_0x4bb8('0x1e')]||null:null,'include':_0x281e30['options']?_0x281e30[_0x4bb8('0x1b')]['include']?_['map'](_0x281e30[_0x4bb8('0x1b')]['include'],function(_0x5b84f0){return{'model':db[_0x5b84f0['model']],'as':_0x5b84f0['as'],'attributes':_0x5b84f0[_0x4bb8('0x1f')],'include':_0x5b84f0[_0x4bb8('0x20')]?_[_0x4bb8('0x21')](_0x5b84f0[_0x4bb8('0x20')],function(_0xce59cb){return{'model':db[_0xce59cb[_0x4bb8('0x22')]],'as':_0xce59cb['as'],'attributes':_0xce59cb['attributes'],'include':_0xce59cb[_0x4bb8('0x20')]?_['map'](_0xce59cb[_0x4bb8('0x20')],function(_0x4bc3e0){return{'model':db[_0x4bc3e0['model']],'as':_0x4bc3e0['as'],'attributes':_0x4bc3e0['attributes']};}):[]};}):[]};}):[]:[]})[_0x4bb8('0xf')](function(_0x5def5f){logger[_0x4bb8('0x10')](_0x4bb8('0x19'),_0x281e30);logger['debug'](_0x4bb8('0x19'),_0x281e30,JSON['stringify'](_0x5def5f));_0x3ebf93(_0x5def5f);})[_0x4bb8('0x18')](function(_0x5ebe80){logger[_0x4bb8('0x15')](_0x4bb8('0x19'),_0x5ebe80['message'],_0x281e30);_0x323958(_0x46d65e[_0x4bb8('0x15')](0x1f4,_0x5ebe80[_0x4bb8('0x16')]));});});};exports[_0x4bb8('0x23')]=function(_0x87fefb){var _0x28cf76=this;return new Promise(function(_0x33a9ae,_0x421d7e){return db[_0x4bb8('0x24')][_0x4bb8('0x25')]({'raw':_0x87fefb[_0x4bb8('0x1b')]?_0x87fefb[_0x4bb8('0x1b')][_0x4bb8('0x1c')]===undefined?!![]:![]:!![],'where':_0x87fefb[_0x4bb8('0x1b')]?_0x87fefb['options']['where']||null:null,'attributes':_0x87fefb[_0x4bb8('0x1b')]?_0x87fefb[_0x4bb8('0x1b')][_0x4bb8('0x1f')]||null:null,'include':_0x87fefb[_0x4bb8('0x1b')]?_0x87fefb[_0x4bb8('0x1b')][_0x4bb8('0x20')]?_[_0x4bb8('0x21')](_0x87fefb[_0x4bb8('0x1b')]['include'],function(_0x3b4506){return{'model':db[_0x3b4506[_0x4bb8('0x22')]],'as':_0x3b4506['as'],'attributes':_0x3b4506[_0x4bb8('0x1f')],'include':_0x3b4506['include']?_[_0x4bb8('0x21')](_0x3b4506[_0x4bb8('0x20')],function(_0x24b091){return{'model':db[_0x24b091[_0x4bb8('0x22')]],'as':_0x24b091['as'],'attributes':_0x24b091['attributes'],'include':_0x24b091['include']?_[_0x4bb8('0x21')](_0x24b091[_0x4bb8('0x20')],function(_0x25c5e8){return{'model':db[_0x25c5e8[_0x4bb8('0x22')]],'as':_0x25c5e8['as'],'attributes':_0x25c5e8['attributes']};}):[]};}):[]};}):[]:[]})[_0x4bb8('0xf')](function(_0x2f78fa){logger[_0x4bb8('0x10')](_0x4bb8('0x23'),_0x87fefb);logger['debug']('ShowFreshdeskAccount',_0x87fefb,JSON[_0x4bb8('0x26')](_0x2f78fa));_0x33a9ae(_0x2f78fa);})[_0x4bb8('0x18')](function(_0x56009f){logger[_0x4bb8('0x15')](_0x4bb8('0x23'),_0x56009f[_0x4bb8('0x16')],_0x87fefb);_0x421d7e(_0x28cf76[_0x4bb8('0x15')](0x1f4,_0x56009f[_0x4bb8('0x16')]));});});};
\ No newline at end of file
+var _0xfe88=['find','where','lodash','util','randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','http','request','then','FreshdeskAccount,\x20%s,\x20%s','debug','FreshdeskAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','FreshdeskAccount','findAll','options','raw','attributes','include','map','model','info','GetFreshdeskAccount','ShowFreshdeskAccount'];(function(_0x294ee4,_0x3773a9){var _0x1a3f59=function(_0x3a9f53){while(--_0x3a9f53){_0x294ee4['push'](_0x294ee4['shift']());}};_0x1a3f59(++_0x3773a9);}(_0xfe88,0x1af));var _0x8fe8=function(_0x1443be,_0x31b17d){_0x1443be=_0x1443be-0x0;var _0x38823d=_0xfe88[_0x1443be];return _0x38823d;};'use strict';var _=require(_0x8fe8('0x0'));var util=require(_0x8fe8('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x8fe8('0x2'));var fs=require('fs');var Redis=require(_0x8fe8('0x3'));var db=require(_0x8fe8('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x8fe8('0x5'));var jayson=require(_0x8fe8('0x6'));var client=jayson['client'][_0x8fe8('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x56ea18,_0x474890,_0x23d57e){return new BPromise(function(_0x50735d,_0x5ce4f8){return client[_0x8fe8('0x8')](_0x56ea18,_0x23d57e)[_0x8fe8('0x9')](function(_0x211e20){logger['info'](_0x8fe8('0xa'),_0x474890,'request\x20sent');logger[_0x8fe8('0xb')](_0x8fe8('0xc'),_0x474890,_0x8fe8('0xd'),JSON[_0x8fe8('0xe')](_0x211e20));if(_0x211e20[_0x8fe8('0xf')]){if(_0x211e20[_0x8fe8('0xf')][_0x8fe8('0x10')]===0x1f4){logger[_0x8fe8('0xf')]('FreshdeskAccount,\x20%s,\x20%s',_0x474890,_0x211e20[_0x8fe8('0xf')]['message']);return _0x5ce4f8(_0x211e20[_0x8fe8('0xf')][_0x8fe8('0x11')]);}logger[_0x8fe8('0xf')]('FreshdeskAccount,\x20%s,\x20%s',_0x474890,_0x211e20[_0x8fe8('0xf')][_0x8fe8('0x11')]);return _0x50735d(_0x211e20[_0x8fe8('0xf')][_0x8fe8('0x11')]);}else{logger['info']('FreshdeskAccount,\x20%s,\x20%s',_0x474890,_0x8fe8('0xd'));_0x50735d(_0x211e20[_0x8fe8('0x12')]['message']);}})[_0x8fe8('0x13')](function(_0x1add49){logger[_0x8fe8('0xf')]('FreshdeskAccount,\x20%s,\x20%s',_0x474890,_0x1add49);_0x5ce4f8(_0x1add49);});});}exports['GetFreshdeskAccount']=function(_0x4cefcb){var _0x7aa0d7=this;return new Promise(function(_0x13d623,_0x2eaa1a){return db[_0x8fe8('0x14')][_0x8fe8('0x15')]({'raw':_0x4cefcb[_0x8fe8('0x16')]?_0x4cefcb['options'][_0x8fe8('0x17')]===undefined?!![]:![]:!![],'where':_0x4cefcb[_0x8fe8('0x16')]?_0x4cefcb[_0x8fe8('0x16')]['where']||null:null,'attributes':_0x4cefcb[_0x8fe8('0x16')]?_0x4cefcb['options'][_0x8fe8('0x18')]||null:null,'limit':_0x4cefcb[_0x8fe8('0x16')]?_0x4cefcb[_0x8fe8('0x16')]['limit']||null:null,'include':_0x4cefcb[_0x8fe8('0x16')]?_0x4cefcb['options'][_0x8fe8('0x19')]?_[_0x8fe8('0x1a')](_0x4cefcb[_0x8fe8('0x16')][_0x8fe8('0x19')],function(_0x2856ac){return{'model':db[_0x2856ac[_0x8fe8('0x1b')]],'as':_0x2856ac['as'],'attributes':_0x2856ac[_0x8fe8('0x18')],'include':_0x2856ac[_0x8fe8('0x19')]?_[_0x8fe8('0x1a')](_0x2856ac[_0x8fe8('0x19')],function(_0x4cfe6d){return{'model':db[_0x4cfe6d['model']],'as':_0x4cfe6d['as'],'attributes':_0x4cfe6d[_0x8fe8('0x18')],'include':_0x4cfe6d[_0x8fe8('0x19')]?_[_0x8fe8('0x1a')](_0x4cfe6d['include'],function(_0x2670db){return{'model':db[_0x2670db['model']],'as':_0x2670db['as'],'attributes':_0x2670db[_0x8fe8('0x18')]};}):[]};}):[]};}):[]:[]})[_0x8fe8('0x9')](function(_0x36fe64){logger[_0x8fe8('0x1c')](_0x8fe8('0x1d'),_0x4cefcb);logger['debug'](_0x8fe8('0x1d'),_0x4cefcb,JSON[_0x8fe8('0xe')](_0x36fe64));_0x13d623(_0x36fe64);})['catch'](function(_0x141e1b){logger[_0x8fe8('0xf')](_0x8fe8('0x1d'),_0x141e1b['message'],_0x4cefcb);_0x2eaa1a(_0x7aa0d7[_0x8fe8('0xf')](0x1f4,_0x141e1b[_0x8fe8('0x11')]));});});};exports[_0x8fe8('0x1e')]=function(_0x1b70ec){var _0x417d79=this;return new Promise(function(_0x2c04b6,_0x1d2728){return db[_0x8fe8('0x14')][_0x8fe8('0x1f')]({'raw':_0x1b70ec[_0x8fe8('0x16')]?_0x1b70ec[_0x8fe8('0x16')][_0x8fe8('0x17')]===undefined?!![]:![]:!![],'where':_0x1b70ec['options']?_0x1b70ec[_0x8fe8('0x16')][_0x8fe8('0x20')]||null:null,'attributes':_0x1b70ec[_0x8fe8('0x16')]?_0x1b70ec['options']['attributes']||null:null,'include':_0x1b70ec[_0x8fe8('0x16')]?_0x1b70ec[_0x8fe8('0x16')][_0x8fe8('0x19')]?_[_0x8fe8('0x1a')](_0x1b70ec[_0x8fe8('0x16')][_0x8fe8('0x19')],function(_0x330561){return{'model':db[_0x330561[_0x8fe8('0x1b')]],'as':_0x330561['as'],'attributes':_0x330561[_0x8fe8('0x18')],'include':_0x330561[_0x8fe8('0x19')]?_[_0x8fe8('0x1a')](_0x330561[_0x8fe8('0x19')],function(_0xa93e02){return{'model':db[_0xa93e02[_0x8fe8('0x1b')]],'as':_0xa93e02['as'],'attributes':_0xa93e02[_0x8fe8('0x18')],'include':_0xa93e02[_0x8fe8('0x19')]?_[_0x8fe8('0x1a')](_0xa93e02[_0x8fe8('0x19')],function(_0x1ada34){return{'model':db[_0x1ada34[_0x8fe8('0x1b')]],'as':_0x1ada34['as'],'attributes':_0x1ada34[_0x8fe8('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1fe3f7){logger[_0x8fe8('0x1c')](_0x8fe8('0x1e'),_0x1b70ec);logger[_0x8fe8('0xb')](_0x8fe8('0x1e'),_0x1b70ec,JSON[_0x8fe8('0xe')](_0x1fe3f7));_0x2c04b6(_0x1fe3f7);})[_0x8fe8('0x13')](function(_0x4b80bd){logger[_0x8fe8('0xf')](_0x8fe8('0x1e'),_0x4b80bd['message'],_0x1b70ec);_0x1d2728(_0x417d79['error'](0x1f4,_0x4b80bd[_0x8fe8('0x11')]));});});};
\ No newline at end of file
index ce68493..94c6d0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7221=['getSubjects','/:id/descriptions','getTags','post','create','/:id/tags','setTags','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intFreshdeskConfiguration.controller','get','isAuthenticated','index','/:id','/:id/fields','getFields','/:id/subjects'];(function(_0x328131,_0x1b76f9){var _0x5e4d16=function(_0x5a0e79){while(--_0x5a0e79){_0x328131['push'](_0x328131['shift']());}};_0x5e4d16(++_0x1b76f9);}(_0x7221,0x13f));var _0x1722=function(_0x2798dc,_0x5084c9){_0x2798dc=_0x2798dc-0x0;var _0x38b659=_0x7221[_0x2798dc];return _0x38b659;};'use strict';var multer=require(_0x1722('0x0'));var util=require(_0x1722('0x1'));var path=require(_0x1722('0x2'));var timeout=require(_0x1722('0x3'));var express=require(_0x1722('0x4'));var router=express[_0x1722('0x5')]();var fs_extra=require(_0x1722('0x6'));var auth=require(_0x1722('0x7'));var interaction=require(_0x1722('0x8'));var config=require('../../config/environment');var controller=require(_0x1722('0x9'));router[_0x1722('0xa')]('/',auth[_0x1722('0xb')](),controller[_0x1722('0xc')]);router[_0x1722('0xa')](_0x1722('0xd'),auth[_0x1722('0xb')](),controller['show']);router[_0x1722('0xa')](_0x1722('0xe'),auth[_0x1722('0xb')](),controller[_0x1722('0xf')]);router[_0x1722('0xa')](_0x1722('0x10'),auth['isAuthenticated'](),controller[_0x1722('0x11')]);router[_0x1722('0xa')](_0x1722('0x12'),auth[_0x1722('0xb')](),controller['getDescriptions']);router[_0x1722('0xa')]('/:id/tags',auth[_0x1722('0xb')](),controller[_0x1722('0x13')]);router[_0x1722('0x14')]('/',auth[_0x1722('0xb')](),controller[_0x1722('0x15')]);router[_0x1722('0x14')](_0x1722('0x16'),auth[_0x1722('0xb')](),controller[_0x1722('0x17')]);router[_0x1722('0x18')](_0x1722('0xd'),auth['isAuthenticated'](),controller[_0x1722('0x19')]);router[_0x1722('0x1a')](_0x1722('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0x1722('0x1b')]=router;
\ No newline at end of file
+var _0x6254=['/:id/tags','getTags','post','setTags','put','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','./intFreshdeskConfiguration.controller','isAuthenticated','index','get','/:id','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions'];(function(_0x1f4e6d,_0x57b1f5){var _0x3d70e6=function(_0x382019){while(--_0x382019){_0x1f4e6d['push'](_0x1f4e6d['shift']());}};_0x3d70e6(++_0x57b1f5);}(_0x6254,0xe8));var _0x4625=function(_0x404cde,_0x27b51c){_0x404cde=_0x404cde-0x0;var _0x139882=_0x6254[_0x404cde];return _0x139882;};'use strict';var multer=require(_0x4625('0x0'));var util=require(_0x4625('0x1'));var path=require(_0x4625('0x2'));var timeout=require(_0x4625('0x3'));var express=require(_0x4625('0x4'));var router=express[_0x4625('0x5')]();var fs_extra=require(_0x4625('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x4625('0x7'));router['get']('/',auth[_0x4625('0x8')](),controller[_0x4625('0x9')]);router[_0x4625('0xa')](_0x4625('0xb'),auth[_0x4625('0x8')](),controller[_0x4625('0xc')]);router[_0x4625('0xa')]('/:id/fields',auth[_0x4625('0x8')](),controller[_0x4625('0xd')]);router[_0x4625('0xa')](_0x4625('0xe'),auth[_0x4625('0x8')](),controller[_0x4625('0xf')]);router[_0x4625('0xa')](_0x4625('0x10'),auth['isAuthenticated'](),controller[_0x4625('0x11')]);router[_0x4625('0xa')](_0x4625('0x12'),auth['isAuthenticated'](),controller[_0x4625('0x13')]);router['post']('/',auth[_0x4625('0x8')](),controller['create']);router[_0x4625('0x14')](_0x4625('0x12'),auth[_0x4625('0x8')](),controller[_0x4625('0x15')]);router[_0x4625('0x16')](_0x4625('0xb'),auth[_0x4625('0x8')](),controller['update']);router['delete']('/:id',auth[_0x4625('0x8')](),controller[_0x4625('0x17')]);module[_0x4625('0x18')]=router;
\ No newline at end of file
index 2208639..628bdbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x849d=['STRING','sequelize'];(function(_0x55e1a6,_0x1241e1){var _0x347a38=function(_0x4d7861){while(--_0x4d7861){_0x55e1a6['push'](_0x55e1a6['shift']());}};_0x347a38(++_0x1241e1);}(_0x849d,0x181));var _0xd849=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x849d[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xd849('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xd849('0x1')]}};
\ No newline at end of file
+var _0x925a=['STRING','sequelize','exports'];(function(_0x4d579e,_0x570463){var _0x591673=function(_0x39e44c){while(--_0x39e44c){_0x4d579e['push'](_0x4d579e['shift']());}};_0x591673(++_0x570463);}(_0x925a,0xcd));var _0xa925=function(_0x1ac9f1,_0x2de131){_0x1ac9f1=_0x1ac9f1-0x0;var _0x2924dc=_0x925a[_0x1ac9f1];return _0x2924dc;};'use strict';var Sequelize=require(_0xa925('0x0'));module[_0xa925('0x1')]={'name':{'type':Sequelize[_0xa925('0x2')]},'description':{'type':Sequelize[_0xa925('0x2')]}};
\ No newline at end of file
index 06d3570..8f42d61 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d14=['getFields','FreshdeskField','getSubjects','findOne','getDescriptions','Tag','getTags','setTags','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','../../mysqldb','sendStatus','end','status','limit','undefined','offset','count','set','Content-Range','json','apply','save','then','destroy','stack','name','send','index','map','FreshdeskConfiguration','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filters','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','create','body','find','params'];(function(_0x5c6e79,_0x5e3dc8){var _0x4fdfda=function(_0x128163){while(--_0x128163){_0x5c6e79['push'](_0x5c6e79['shift']());}};_0x4fdfda(++_0x5e3dc8);}(_0x4d14,0xaa));var _0x44d1=function(_0x1a7846,_0x59723e){_0x1a7846=_0x1a7846-0x0;var _0x48049=_0x4d14[_0x1a7846];return _0x48049;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x44d1('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x44d1('0x1'));var rp=require(_0x44d1('0x2'));var moment=require(_0x44d1('0x3'));var BPromise=require(_0x44d1('0x4'));var Mustache=require(_0x44d1('0x5'));var util=require(_0x44d1('0x6'));var path=require('path');var sox=require(_0x44d1('0x7'));var csv=require(_0x44d1('0x8'));var ejs=require(_0x44d1('0x9'));var fs=require('fs');var fs_extra=require(_0x44d1('0xa'));var _=require(_0x44d1('0xb'));var squel=require(_0x44d1('0xc'));var crypto=require(_0x44d1('0xd'));var jsforce=require(_0x44d1('0xe'));var deskjs=require(_0x44d1('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x44d1('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x44d1('0x11'));var hardwareService=require(_0x44d1('0x12'));var logger=require(_0x44d1('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x44d1('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x44d1('0x15'))['db'];function respondWithStatusCode(_0x54508b,_0xb4bb3b){_0xb4bb3b=_0xb4bb3b||0xcc;return function(_0x27915b){if(_0x27915b){return _0x54508b[_0x44d1('0x16')](_0xb4bb3b);}return _0x54508b['status'](_0xb4bb3b)[_0x44d1('0x17')]();};}function respondWithResult(_0x3164e0,_0x3b9eb8){_0x3b9eb8=_0x3b9eb8||0xc8;return function(_0x53fee7){if(_0x53fee7){return _0x3164e0[_0x44d1('0x18')](_0x3b9eb8)['json'](_0x53fee7);}};}function respondWithFilteredResult(_0x5828eb,_0x2704a2){return function(_0x512d70){if(_0x512d70){var _0x5709d9=typeof _0x2704a2['offset']==='undefined'&&typeof _0x2704a2[_0x44d1('0x19')]===_0x44d1('0x1a');var _0x405ba8=_0x512d70['count'];var _0x828170=_0x5709d9?0x0:_0x2704a2[_0x44d1('0x1b')];var _0x4c07c9=_0x5709d9?_0x512d70[_0x44d1('0x1c')]:_0x2704a2[_0x44d1('0x1b')]+_0x2704a2['limit'];var _0x2b4b72;if(_0x4c07c9>=_0x405ba8){_0x4c07c9=_0x405ba8;_0x2b4b72=0xc8;}else{_0x2b4b72=0xce;}_0x5828eb[_0x44d1('0x18')](_0x2b4b72);return _0x5828eb[_0x44d1('0x1d')](_0x44d1('0x1e'),_0x828170+'-'+_0x4c07c9+'/'+_0x405ba8)[_0x44d1('0x1f')](_0x512d70);}return null;};}function patchUpdates(_0xc4e532){return function(_0xe4e887){try{jsonpatch[_0x44d1('0x20')](_0xe4e887,_0xc4e532,!![]);}catch(_0x339b46){return BPromise['reject'](_0x339b46);}return _0xe4e887[_0x44d1('0x21')]();};}function saveUpdates(_0x20ea5e,_0x421e7a){return function(_0x29c8f3){if(_0x29c8f3){return _0x29c8f3['update'](_0x20ea5e)[_0x44d1('0x22')](function(_0x3d398d){return _0x3d398d;});}return null;};}function removeEntity(_0x24ae10,_0x4f05a4){return function(_0x19f6d0){if(_0x19f6d0){return _0x19f6d0[_0x44d1('0x23')]()['then'](function(){_0x24ae10[_0x44d1('0x18')](0xcc)[_0x44d1('0x17')]();});}};}function handleEntityNotFound(_0x39e014,_0x5338d4){return function(_0x76f8f2){if(!_0x76f8f2){_0x39e014[_0x44d1('0x16')](0x194);}return _0x76f8f2;};}function handleError(_0x389181,_0x1ceaa5){_0x1ceaa5=_0x1ceaa5||0x1f4;return function(_0x1b65f7){logger['error'](_0x1b65f7[_0x44d1('0x24')]);if(_0x1b65f7['name']){delete _0x1b65f7[_0x44d1('0x25')];}_0x389181['status'](_0x1ceaa5)[_0x44d1('0x26')](_0x1b65f7);};}exports[_0x44d1('0x27')]=function(_0x3176ff,_0x410208){var _0x41efc0={},_0x3080f1={},_0x17a77b={'count':0x0,'rows':[]};var _0x24b463=_[_0x44d1('0x28')](db[_0x44d1('0x29')][_0x44d1('0x2a')],function(_0x55c830){return{'name':_0x55c830[_0x44d1('0x2b')],'type':_0x55c830[_0x44d1('0x2c')][_0x44d1('0x2d')]};});_0x3080f1[_0x44d1('0x2e')]=_['map'](_0x24b463,_0x44d1('0x25'));_0x3080f1[_0x44d1('0x2f')]=_[_0x44d1('0x30')](_0x3176ff[_0x44d1('0x2f')]);_0x3080f1['filters']=_[_0x44d1('0x31')](_0x3080f1['model'],_0x3080f1[_0x44d1('0x2f')]);_0x41efc0['attributes']=_[_0x44d1('0x31')](_0x3080f1[_0x44d1('0x2e')],qs[_0x44d1('0x32')](_0x3176ff[_0x44d1('0x2f')][_0x44d1('0x32')]));_0x41efc0[_0x44d1('0x33')]=_0x41efc0[_0x44d1('0x33')][_0x44d1('0x34')]?_0x41efc0['attributes']:_0x3080f1['model'];if(!_0x3176ff[_0x44d1('0x2f')][_0x44d1('0x35')](_0x44d1('0x36'))){_0x41efc0[_0x44d1('0x19')]=qs[_0x44d1('0x19')](_0x3176ff[_0x44d1('0x2f')][_0x44d1('0x19')]);_0x41efc0['offset']=qs[_0x44d1('0x1b')](_0x3176ff[_0x44d1('0x2f')][_0x44d1('0x1b')]);}_0x41efc0[_0x44d1('0x37')]=qs[_0x44d1('0x38')](_0x3176ff['query'][_0x44d1('0x38')]);_0x41efc0['where']=qs['filters'](_[_0x44d1('0x39')](_0x3176ff[_0x44d1('0x2f')],_0x3080f1[_0x44d1('0x3a')]),_0x24b463);if(_0x3176ff[_0x44d1('0x2f')][_0x44d1('0x3b')]){_0x41efc0[_0x44d1('0x3c')]=_[_0x44d1('0x3d')](_0x41efc0['where'],{'$or':_['map'](_0x24b463,function(_0x1a9e9d){if(_0x1a9e9d[_0x44d1('0x2c')]!==_0x44d1('0x3e')){var _0x2a1438={};_0x2a1438[_0x1a9e9d[_0x44d1('0x25')]]={'$like':'%'+_0x3176ff[_0x44d1('0x2f')][_0x44d1('0x3b')]+'%'};return _0x2a1438;}})});}_0x41efc0=_['merge']({},_0x41efc0,_0x3176ff[_0x44d1('0x3f')]);var _0x21d081={'where':_0x41efc0[_0x44d1('0x3c')]};return db[_0x44d1('0x29')][_0x44d1('0x1c')](_0x21d081)[_0x44d1('0x22')](function(_0x32f5e0){_0x17a77b['count']=_0x32f5e0;if(_0x3176ff[_0x44d1('0x2f')][_0x44d1('0x40')]){_0x41efc0[_0x44d1('0x41')]=[{'all':!![]}];}return db[_0x44d1('0x29')][_0x44d1('0x42')](_0x41efc0);})['then'](function(_0x1a2aac){_0x17a77b[_0x44d1('0x43')]=_0x1a2aac;return _0x17a77b;})[_0x44d1('0x22')](respondWithFilteredResult(_0x410208,_0x41efc0))[_0x44d1('0x44')](handleError(_0x410208,null));};exports['show']=function(_0x4ac2a5,_0x207ded){var _0x7215d8={'raw':![],'where':{'id':_0x4ac2a5['params']['id']}},_0x156acb={};_0x156acb[_0x44d1('0x2e')]=_['keys'](db[_0x44d1('0x29')][_0x44d1('0x2a')]);_0x156acb[_0x44d1('0x2f')]=_[_0x44d1('0x30')](_0x4ac2a5[_0x44d1('0x2f')]);_0x156acb[_0x44d1('0x3a')]=_[_0x44d1('0x31')](_0x156acb['model'],_0x156acb[_0x44d1('0x2f')]);_0x7215d8[_0x44d1('0x33')]=_[_0x44d1('0x31')](_0x156acb['model'],qs['fields'](_0x4ac2a5[_0x44d1('0x2f')][_0x44d1('0x32')]));_0x7215d8[_0x44d1('0x33')]=_0x7215d8[_0x44d1('0x33')][_0x44d1('0x34')]?_0x7215d8[_0x44d1('0x33')]:_0x156acb[_0x44d1('0x2e')];if(_0x4ac2a5['query'][_0x44d1('0x40')]){_0x7215d8[_0x44d1('0x41')]=[{'all':!![]}];}_0x7215d8=_['merge']({},_0x7215d8,_0x4ac2a5[_0x44d1('0x3f')]);return db[_0x44d1('0x29')]['find'](_0x7215d8)[_0x44d1('0x22')](handleEntityNotFound(_0x207ded,null))['then'](respondWithResult(_0x207ded,null))[_0x44d1('0x44')](handleError(_0x207ded,null));};exports[_0x44d1('0x45')]=function(_0x14f7d9,_0x335d43){return db[_0x44d1('0x29')][_0x44d1('0x45')](_0x14f7d9[_0x44d1('0x46')],{})[_0x44d1('0x22')](respondWithResult(_0x335d43,0xc9))[_0x44d1('0x44')](handleError(_0x335d43,null));};exports['update']=function(_0x1a120b,_0x5db219){if(_0x1a120b[_0x44d1('0x46')]['id']){delete _0x1a120b[_0x44d1('0x46')]['id'];}return db['FreshdeskConfiguration'][_0x44d1('0x47')]({'where':{'id':_0x1a120b[_0x44d1('0x48')]['id']}})[_0x44d1('0x22')](handleEntityNotFound(_0x5db219,null))[_0x44d1('0x22')](saveUpdates(_0x1a120b[_0x44d1('0x46')],null))[_0x44d1('0x22')](respondWithResult(_0x5db219,null))[_0x44d1('0x44')](handleError(_0x5db219,null));};exports[_0x44d1('0x23')]=function(_0x284670,_0x1733ce){return db[_0x44d1('0x29')][_0x44d1('0x47')]({'where':{'id':_0x284670[_0x44d1('0x48')]['id']}})['then'](handleEntityNotFound(_0x1733ce,null))[_0x44d1('0x22')](removeEntity(_0x1733ce,null))[_0x44d1('0x44')](handleError(_0x1733ce,null));};exports[_0x44d1('0x49')]=function(_0x52241f,_0x35e251,_0x28250a){var _0x5ec934={};var _0x298267={};var _0x1ddc3d;var _0x29e3fd;return db[_0x44d1('0x29')]['findOne']({'where':{'id':_0x52241f['params']['id']}})[_0x44d1('0x22')](handleEntityNotFound(_0x35e251,null))[_0x44d1('0x22')](function(_0x49d01a){if(_0x49d01a){_0x1ddc3d=_0x49d01a;_0x298267[_0x44d1('0x2e')]=_[_0x44d1('0x30')](db[_0x44d1('0x4a')][_0x44d1('0x2a')]);_0x298267[_0x44d1('0x2f')]=_['keys'](_0x52241f[_0x44d1('0x2f')]);_0x298267[_0x44d1('0x3a')]=_[_0x44d1('0x31')](_0x298267[_0x44d1('0x2e')],_0x298267[_0x44d1('0x2f')]);_0x5ec934['attributes']=_['intersection'](_0x298267[_0x44d1('0x2e')],qs[_0x44d1('0x32')](_0x52241f['query'][_0x44d1('0x32')]));_0x5ec934[_0x44d1('0x33')]=_0x5ec934[_0x44d1('0x33')][_0x44d1('0x34')]?_0x5ec934['attributes']:_0x298267[_0x44d1('0x2e')];_0x5ec934[_0x44d1('0x37')]=qs[_0x44d1('0x38')](_0x52241f[_0x44d1('0x2f')][_0x44d1('0x38')]);_0x5ec934[_0x44d1('0x3c')]=qs[_0x44d1('0x3a')](_[_0x44d1('0x39')](_0x52241f[_0x44d1('0x2f')],_0x298267[_0x44d1('0x3a')]));if(_0x52241f[_0x44d1('0x2f')][_0x44d1('0x3b')]){_0x5ec934[_0x44d1('0x3c')]=_['merge'](_0x5ec934['where'],{'$or':_['map'](_0x5ec934[_0x44d1('0x33')],function(_0xfc301d){var _0x40fae5={};_0x40fae5[_0xfc301d]={'$like':'%'+_0x52241f[_0x44d1('0x2f')][_0x44d1('0x3b')]+'%'};return _0x40fae5;})});}_0x5ec934=_['merge']({},_0x5ec934,_0x52241f[_0x44d1('0x3f')]);return _0x1ddc3d[_0x44d1('0x49')](_0x5ec934);}})[_0x44d1('0x22')](function(_0x41f531){if(_0x41f531){_0x29e3fd=_0x41f531[_0x44d1('0x34')];if(!_0x52241f['query'][_0x44d1('0x35')](_0x44d1('0x36'))){_0x5ec934[_0x44d1('0x19')]=qs[_0x44d1('0x19')](_0x52241f[_0x44d1('0x2f')][_0x44d1('0x19')]);_0x5ec934[_0x44d1('0x1b')]=qs['offset'](_0x52241f[_0x44d1('0x2f')][_0x44d1('0x1b')]);}return _0x1ddc3d[_0x44d1('0x49')](_0x5ec934);}})[_0x44d1('0x22')](function(_0xf52ff3){if(_0xf52ff3){return _0xf52ff3?{'count':_0x29e3fd,'rows':_0xf52ff3}:null;}})[_0x44d1('0x22')](respondWithResult(_0x35e251,null))[_0x44d1('0x44')](handleError(_0x35e251,null));};exports[_0x44d1('0x4b')]=function(_0xdd90d7,_0x349378,_0x34050d){var _0x40d883={};var _0x48bfa8={};var _0x45da12;var _0x432c81;return db[_0x44d1('0x29')][_0x44d1('0x4c')]({'where':{'id':_0xdd90d7[_0x44d1('0x48')]['id']}})[_0x44d1('0x22')](handleEntityNotFound(_0x349378,null))[_0x44d1('0x22')](function(_0x1adf5b){if(_0x1adf5b){_0x45da12=_0x1adf5b;_0x48bfa8['model']=_[_0x44d1('0x30')](db['FreshdeskField'][_0x44d1('0x2a')]);_0x48bfa8[_0x44d1('0x2f')]=_[_0x44d1('0x30')](_0xdd90d7[_0x44d1('0x2f')]);_0x48bfa8['filters']=_[_0x44d1('0x31')](_0x48bfa8[_0x44d1('0x2e')],_0x48bfa8[_0x44d1('0x2f')]);_0x40d883['attributes']=_[_0x44d1('0x31')](_0x48bfa8[_0x44d1('0x2e')],qs[_0x44d1('0x32')](_0xdd90d7[_0x44d1('0x2f')][_0x44d1('0x32')]));_0x40d883['attributes']=_0x40d883[_0x44d1('0x33')][_0x44d1('0x34')]?_0x40d883['attributes']:_0x48bfa8[_0x44d1('0x2e')];_0x40d883[_0x44d1('0x37')]=qs[_0x44d1('0x38')](_0xdd90d7[_0x44d1('0x2f')][_0x44d1('0x38')]);_0x40d883[_0x44d1('0x3c')]=qs[_0x44d1('0x3a')](_[_0x44d1('0x39')](_0xdd90d7[_0x44d1('0x2f')],_0x48bfa8[_0x44d1('0x3a')]));if(_0xdd90d7[_0x44d1('0x2f')][_0x44d1('0x3b')]){_0x40d883['where']=_[_0x44d1('0x3d')](_0x40d883[_0x44d1('0x3c')],{'$or':_[_0x44d1('0x28')](_0x40d883[_0x44d1('0x33')],function(_0x49d5b0){var _0x2f1b11={};_0x2f1b11[_0x49d5b0]={'$like':'%'+_0xdd90d7[_0x44d1('0x2f')][_0x44d1('0x3b')]+'%'};return _0x2f1b11;})});}_0x40d883=_[_0x44d1('0x3d')]({},_0x40d883,_0xdd90d7['options']);return _0x45da12[_0x44d1('0x4b')](_0x40d883);}})['then'](function(_0x376966){if(_0x376966){_0x432c81=_0x376966[_0x44d1('0x34')];if(!_0xdd90d7[_0x44d1('0x2f')]['hasOwnProperty'](_0x44d1('0x36'))){_0x40d883[_0x44d1('0x19')]=qs[_0x44d1('0x19')](_0xdd90d7['query'][_0x44d1('0x19')]);_0x40d883[_0x44d1('0x1b')]=qs[_0x44d1('0x1b')](_0xdd90d7['query'][_0x44d1('0x1b')]);}return _0x45da12[_0x44d1('0x4b')](_0x40d883);}})[_0x44d1('0x22')](function(_0x253d34){if(_0x253d34){return _0x253d34?{'count':_0x432c81,'rows':_0x253d34}:null;}})[_0x44d1('0x22')](respondWithResult(_0x349378,null))[_0x44d1('0x44')](handleError(_0x349378,null));};exports[_0x44d1('0x4d')]=function(_0x25b8fb,_0x2a1613,_0x8d59ce){var _0x5607d6={};var _0x5a15f1={};var _0x36d06a;var _0x2ee3a1;return db[_0x44d1('0x29')][_0x44d1('0x4c')]({'where':{'id':_0x25b8fb[_0x44d1('0x48')]['id']}})[_0x44d1('0x22')](handleEntityNotFound(_0x2a1613,null))[_0x44d1('0x22')](function(_0x47a827){if(_0x47a827){_0x36d06a=_0x47a827;_0x5a15f1[_0x44d1('0x2e')]=_[_0x44d1('0x30')](db['FreshdeskField'][_0x44d1('0x2a')]);_0x5a15f1['query']=_[_0x44d1('0x30')](_0x25b8fb[_0x44d1('0x2f')]);_0x5a15f1[_0x44d1('0x3a')]=_['intersection'](_0x5a15f1[_0x44d1('0x2e')],_0x5a15f1['query']);_0x5607d6[_0x44d1('0x33')]=_[_0x44d1('0x31')](_0x5a15f1['model'],qs[_0x44d1('0x32')](_0x25b8fb[_0x44d1('0x2f')][_0x44d1('0x32')]));_0x5607d6[_0x44d1('0x33')]=_0x5607d6[_0x44d1('0x33')]['length']?_0x5607d6[_0x44d1('0x33')]:_0x5a15f1['model'];_0x5607d6[_0x44d1('0x37')]=qs[_0x44d1('0x38')](_0x25b8fb[_0x44d1('0x2f')][_0x44d1('0x38')]);_0x5607d6['where']=qs[_0x44d1('0x3a')](_['pick'](_0x25b8fb[_0x44d1('0x2f')],_0x5a15f1[_0x44d1('0x3a')]));if(_0x25b8fb['query'][_0x44d1('0x3b')]){_0x5607d6[_0x44d1('0x3c')]=_[_0x44d1('0x3d')](_0x5607d6[_0x44d1('0x3c')],{'$or':_[_0x44d1('0x28')](_0x5607d6[_0x44d1('0x33')],function(_0xdbec18){var _0x13342e={};_0x13342e[_0xdbec18]={'$like':'%'+_0x25b8fb[_0x44d1('0x2f')][_0x44d1('0x3b')]+'%'};return _0x13342e;})});}_0x5607d6=_[_0x44d1('0x3d')]({},_0x5607d6,_0x25b8fb[_0x44d1('0x3f')]);return _0x36d06a[_0x44d1('0x4d')](_0x5607d6);}})['then'](function(_0x339858){if(_0x339858){_0x2ee3a1=_0x339858[_0x44d1('0x34')];if(!_0x25b8fb['query'][_0x44d1('0x35')](_0x44d1('0x36'))){_0x5607d6['limit']=qs[_0x44d1('0x19')](_0x25b8fb[_0x44d1('0x2f')][_0x44d1('0x19')]);_0x5607d6[_0x44d1('0x1b')]=qs[_0x44d1('0x1b')](_0x25b8fb[_0x44d1('0x2f')]['offset']);}return _0x36d06a[_0x44d1('0x4d')](_0x5607d6);}})[_0x44d1('0x22')](function(_0x5da6e4){if(_0x5da6e4){return _0x5da6e4?{'count':_0x2ee3a1,'rows':_0x5da6e4}:null;}})[_0x44d1('0x22')](respondWithResult(_0x2a1613,null))[_0x44d1('0x44')](handleError(_0x2a1613,null));};exports['getTags']=function(_0x1aa106,_0xea2623,_0x445b16){var _0x36d911={};var _0x24e128={};var _0x3f58b4;var _0x20f028;return db[_0x44d1('0x29')]['findOne']({'where':{'id':_0x1aa106[_0x44d1('0x48')]['id']}})[_0x44d1('0x22')](handleEntityNotFound(_0xea2623,null))[_0x44d1('0x22')](function(_0x33b254){if(_0x33b254){_0x3f58b4=_0x33b254;_0x24e128[_0x44d1('0x2e')]=_[_0x44d1('0x30')](db[_0x44d1('0x4e')]['rawAttributes']);_0x24e128[_0x44d1('0x2f')]=_[_0x44d1('0x30')](_0x1aa106['query']);_0x24e128[_0x44d1('0x3a')]=_[_0x44d1('0x31')](_0x24e128[_0x44d1('0x2e')],_0x24e128[_0x44d1('0x2f')]);_0x36d911[_0x44d1('0x33')]=_['intersection'](_0x24e128[_0x44d1('0x2e')],qs[_0x44d1('0x32')](_0x1aa106['query'][_0x44d1('0x32')]));_0x36d911[_0x44d1('0x33')]=_0x36d911[_0x44d1('0x33')]['length']?_0x36d911['attributes']:_0x24e128[_0x44d1('0x2e')];_0x36d911[_0x44d1('0x37')]=qs[_0x44d1('0x38')](_0x1aa106[_0x44d1('0x2f')][_0x44d1('0x38')]);_0x36d911[_0x44d1('0x3c')]=qs['filters'](_['pick'](_0x1aa106['query'],_0x24e128[_0x44d1('0x3a')]));if(_0x1aa106['query'][_0x44d1('0x3b')]){_0x36d911['where']=_['merge'](_0x36d911[_0x44d1('0x3c')],{'$or':_[_0x44d1('0x28')](_0x36d911[_0x44d1('0x33')],function(_0x1efec6){var _0x276ec2={};_0x276ec2[_0x1efec6]={'$like':'%'+_0x1aa106[_0x44d1('0x2f')][_0x44d1('0x3b')]+'%'};return _0x276ec2;})});}_0x36d911=_[_0x44d1('0x3d')]({},_0x36d911,_0x1aa106[_0x44d1('0x3f')]);return _0x3f58b4[_0x44d1('0x4f')](_0x36d911);}})[_0x44d1('0x22')](function(_0x66f09e){if(_0x66f09e){_0x20f028=_0x66f09e[_0x44d1('0x34')];if(!_0x1aa106[_0x44d1('0x2f')]['hasOwnProperty']('nolimit')){_0x36d911[_0x44d1('0x19')]=qs[_0x44d1('0x19')](_0x1aa106['query'][_0x44d1('0x19')]);_0x36d911['offset']=qs[_0x44d1('0x1b')](_0x1aa106['query'][_0x44d1('0x1b')]);}return _0x3f58b4[_0x44d1('0x4f')](_0x36d911);}})[_0x44d1('0x22')](function(_0x19f10a){if(_0x19f10a){return _0x19f10a?{'count':_0x20f028,'rows':_0x19f10a}:null;}})[_0x44d1('0x22')](respondWithResult(_0xea2623,null))[_0x44d1('0x44')](handleError(_0xea2623,null));};exports[_0x44d1('0x50')]=function(_0x2fe8a3,_0x1ed08a,_0xba7f63){if(_0x2fe8a3[_0x44d1('0x46')]['id']){delete _0x2fe8a3[_0x44d1('0x46')]['id'];}return db[_0x44d1('0x29')][_0x44d1('0x4c')]({'where':{'id':_0x2fe8a3[_0x44d1('0x48')]['id']}})[_0x44d1('0x22')](handleEntityNotFound(_0x1ed08a,null))[_0x44d1('0x22')](function(_0x413cff){if(_0x413cff){return _0x413cff[_0x44d1('0x50')](_0x2fe8a3[_0x44d1('0x46')]['ids']||[]);}return null;})[_0x44d1('0x22')](respondWithResult(_0x1ed08a,null))[_0x44d1('0x44')](handleError(_0x1ed08a,null));};
\ No newline at end of file
+var _0x0567=['attributes','length','hasOwnProperty','nolimit','sort','where','filter','merge','VIRTUAL','include','findAll','rows','catch','show','params','fields','includeAll','options','find','body','destroy','FreshdeskField','order','getFields','getSubjects','pick','getDescriptions','findOne','getTags','Tag','setTags','ids','rimraf','fast-json-patch','request-promise','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','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','save','update','then','error','stack','name','send','index','FreshdeskConfiguration','rawAttributes','fieldName','type','key','model','map','query','keys','filters','intersection'];(function(_0x33af7d,_0x1d60ad){var _0x17c2f5=function(_0x36302e){while(--_0x36302e){_0x33af7d['push'](_0x33af7d['shift']());}};_0x17c2f5(++_0x1d60ad);}(_0x0567,0x122));var _0x7056=function(_0x1979d2,_0x37e861){_0x1979d2=_0x1979d2-0x0;var _0x5793c8=_0x0567[_0x1979d2];return _0x5793c8;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7056('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7056('0x1'));var rp=require(_0x7056('0x2'));var moment=require('moment');var BPromise=require(_0x7056('0x3'));var Mustache=require(_0x7056('0x4'));var util=require(_0x7056('0x5'));var path=require('path');var sox=require(_0x7056('0x6'));var csv=require(_0x7056('0x7'));var ejs=require(_0x7056('0x8'));var fs=require('fs');var fs_extra=require(_0x7056('0x9'));var _=require(_0x7056('0xa'));var squel=require(_0x7056('0xb'));var crypto=require(_0x7056('0xc'));var jsforce=require(_0x7056('0xd'));var deskjs=require('desk.js');var toCsv=require(_0x7056('0x7'));var querystring=require(_0x7056('0xe'));var Papa=require(_0x7056('0xf'));var Redis=require(_0x7056('0x10'));var authService=require(_0x7056('0x11'));var qs=require(_0x7056('0x12'));var as=require(_0x7056('0x13'));var hardwareService=require(_0x7056('0x14'));var logger=require(_0x7056('0x15'))(_0x7056('0x16'));var utils=require(_0x7056('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x7056('0x18'));var db=require(_0x7056('0x19'))['db'];function respondWithStatusCode(_0x4f7590,_0x5af356){_0x5af356=_0x5af356||0xcc;return function(_0x3837e0){if(_0x3837e0){return _0x4f7590[_0x7056('0x1a')](_0x5af356);}return _0x4f7590['status'](_0x5af356)[_0x7056('0x1b')]();};}function respondWithResult(_0x4238ae,_0x393d41){_0x393d41=_0x393d41||0xc8;return function(_0x5cbe51){if(_0x5cbe51){return _0x4238ae[_0x7056('0x1c')](_0x393d41)[_0x7056('0x1d')](_0x5cbe51);}};}function respondWithFilteredResult(_0x4450e5,_0x5df27e){return function(_0x42863){if(_0x42863){var _0x4b489e=typeof _0x5df27e[_0x7056('0x1e')]===_0x7056('0x1f')&&typeof _0x5df27e[_0x7056('0x20')]===_0x7056('0x1f');var _0x5dc261=_0x42863[_0x7056('0x21')];var _0x2659c6=_0x4b489e?0x0:_0x5df27e[_0x7056('0x1e')];var _0x454646=_0x4b489e?_0x42863['count']:_0x5df27e['offset']+_0x5df27e[_0x7056('0x20')];var _0x34ef0b;if(_0x454646>=_0x5dc261){_0x454646=_0x5dc261;_0x34ef0b=0xc8;}else{_0x34ef0b=0xce;}_0x4450e5[_0x7056('0x1c')](_0x34ef0b);return _0x4450e5['set'](_0x7056('0x22'),_0x2659c6+'-'+_0x454646+'/'+_0x5dc261)[_0x7056('0x1d')](_0x42863);}return null;};}function patchUpdates(_0x42c86b){return function(_0x50bd26){try{jsonpatch['apply'](_0x50bd26,_0x42c86b,!![]);}catch(_0x4fcefd){return BPromise['reject'](_0x4fcefd);}return _0x50bd26[_0x7056('0x23')]();};}function saveUpdates(_0x5f45a4,_0x32331c){return function(_0x1491c7){if(_0x1491c7){return _0x1491c7[_0x7056('0x24')](_0x5f45a4)[_0x7056('0x25')](function(_0x3ea8f4){return _0x3ea8f4;});}return null;};}function removeEntity(_0x430786,_0x14e2c5){return function(_0x1facbb){if(_0x1facbb){return _0x1facbb['destroy']()[_0x7056('0x25')](function(){_0x430786['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x3b9a0d,_0x2075ba){return function(_0x42c89c){if(!_0x42c89c){_0x3b9a0d[_0x7056('0x1a')](0x194);}return _0x42c89c;};}function handleError(_0x28c8ba,_0x17d78b){_0x17d78b=_0x17d78b||0x1f4;return function(_0x3b031e){logger[_0x7056('0x26')](_0x3b031e[_0x7056('0x27')]);if(_0x3b031e[_0x7056('0x28')]){delete _0x3b031e[_0x7056('0x28')];}_0x28c8ba[_0x7056('0x1c')](_0x17d78b)[_0x7056('0x29')](_0x3b031e);};}exports[_0x7056('0x2a')]=function(_0x158a32,_0x4e7b44){var _0x3ac408={},_0x25b7f0={},_0x1e70b5={'count':0x0,'rows':[]};var _0x201e0c=_['map'](db[_0x7056('0x2b')][_0x7056('0x2c')],function(_0x5db6ce){return{'name':_0x5db6ce[_0x7056('0x2d')],'type':_0x5db6ce[_0x7056('0x2e')][_0x7056('0x2f')]};});_0x25b7f0[_0x7056('0x30')]=_[_0x7056('0x31')](_0x201e0c,_0x7056('0x28'));_0x25b7f0[_0x7056('0x32')]=_[_0x7056('0x33')](_0x158a32[_0x7056('0x32')]);_0x25b7f0[_0x7056('0x34')]=_[_0x7056('0x35')](_0x25b7f0[_0x7056('0x30')],_0x25b7f0[_0x7056('0x32')]);_0x3ac408[_0x7056('0x36')]=_[_0x7056('0x35')](_0x25b7f0[_0x7056('0x30')],qs['fields'](_0x158a32[_0x7056('0x32')]['fields']));_0x3ac408[_0x7056('0x36')]=_0x3ac408[_0x7056('0x36')][_0x7056('0x37')]?_0x3ac408[_0x7056('0x36')]:_0x25b7f0[_0x7056('0x30')];if(!_0x158a32[_0x7056('0x32')][_0x7056('0x38')](_0x7056('0x39'))){_0x3ac408['limit']=qs['limit'](_0x158a32[_0x7056('0x32')][_0x7056('0x20')]);_0x3ac408[_0x7056('0x1e')]=qs[_0x7056('0x1e')](_0x158a32[_0x7056('0x32')]['offset']);}_0x3ac408['order']=qs[_0x7056('0x3a')](_0x158a32[_0x7056('0x32')][_0x7056('0x3a')]);_0x3ac408[_0x7056('0x3b')]=qs[_0x7056('0x34')](_['pick'](_0x158a32[_0x7056('0x32')],_0x25b7f0[_0x7056('0x34')]),_0x201e0c);if(_0x158a32[_0x7056('0x32')][_0x7056('0x3c')]){_0x3ac408[_0x7056('0x3b')]=_[_0x7056('0x3d')](_0x3ac408[_0x7056('0x3b')],{'$or':_[_0x7056('0x31')](_0x201e0c,function(_0x4010e5){if(_0x4010e5['type']!==_0x7056('0x3e')){var _0x109b87={};_0x109b87[_0x4010e5[_0x7056('0x28')]]={'$like':'%'+_0x158a32[_0x7056('0x32')]['filter']+'%'};return _0x109b87;}})});}_0x3ac408=_[_0x7056('0x3d')]({},_0x3ac408,_0x158a32['options']);var _0x523db8={'where':_0x3ac408[_0x7056('0x3b')]};return db[_0x7056('0x2b')][_0x7056('0x21')](_0x523db8)[_0x7056('0x25')](function(_0x51a846){_0x1e70b5[_0x7056('0x21')]=_0x51a846;if(_0x158a32[_0x7056('0x32')]['includeAll']){_0x3ac408[_0x7056('0x3f')]=[{'all':!![]}];}return db[_0x7056('0x2b')][_0x7056('0x40')](_0x3ac408);})['then'](function(_0x243d9d){_0x1e70b5[_0x7056('0x41')]=_0x243d9d;return _0x1e70b5;})[_0x7056('0x25')](respondWithFilteredResult(_0x4e7b44,_0x3ac408))[_0x7056('0x42')](handleError(_0x4e7b44,null));};exports[_0x7056('0x43')]=function(_0x327ed3,_0x1c7610){var _0x20dc28={'raw':![],'where':{'id':_0x327ed3[_0x7056('0x44')]['id']}},_0x5bd05e={};_0x5bd05e['model']=_[_0x7056('0x33')](db[_0x7056('0x2b')]['rawAttributes']);_0x5bd05e[_0x7056('0x32')]=_[_0x7056('0x33')](_0x327ed3[_0x7056('0x32')]);_0x5bd05e[_0x7056('0x34')]=_[_0x7056('0x35')](_0x5bd05e[_0x7056('0x30')],_0x5bd05e[_0x7056('0x32')]);_0x20dc28['attributes']=_[_0x7056('0x35')](_0x5bd05e[_0x7056('0x30')],qs[_0x7056('0x45')](_0x327ed3[_0x7056('0x32')][_0x7056('0x45')]));_0x20dc28['attributes']=_0x20dc28[_0x7056('0x36')][_0x7056('0x37')]?_0x20dc28[_0x7056('0x36')]:_0x5bd05e['model'];if(_0x327ed3[_0x7056('0x32')][_0x7056('0x46')]){_0x20dc28['include']=[{'all':!![]}];}_0x20dc28=_[_0x7056('0x3d')]({},_0x20dc28,_0x327ed3[_0x7056('0x47')]);return db[_0x7056('0x2b')][_0x7056('0x48')](_0x20dc28)[_0x7056('0x25')](handleEntityNotFound(_0x1c7610,null))[_0x7056('0x25')](respondWithResult(_0x1c7610,null))[_0x7056('0x42')](handleError(_0x1c7610,null));};exports['create']=function(_0xf7cf0e,_0x19a146){return db['FreshdeskConfiguration']['create'](_0xf7cf0e[_0x7056('0x49')],{})['then'](respondWithResult(_0x19a146,0xc9))['catch'](handleError(_0x19a146,null));};exports[_0x7056('0x24')]=function(_0x3cdb5f,_0x2ed193){if(_0x3cdb5f[_0x7056('0x49')]['id']){delete _0x3cdb5f[_0x7056('0x49')]['id'];}return db['FreshdeskConfiguration'][_0x7056('0x48')]({'where':{'id':_0x3cdb5f[_0x7056('0x44')]['id']}})['then'](handleEntityNotFound(_0x2ed193,null))[_0x7056('0x25')](saveUpdates(_0x3cdb5f[_0x7056('0x49')],null))[_0x7056('0x25')](respondWithResult(_0x2ed193,null))['catch'](handleError(_0x2ed193,null));};exports[_0x7056('0x4a')]=function(_0x52c4f2,_0x43fd31){return db[_0x7056('0x2b')]['find']({'where':{'id':_0x52c4f2[_0x7056('0x44')]['id']}})[_0x7056('0x25')](handleEntityNotFound(_0x43fd31,null))[_0x7056('0x25')](removeEntity(_0x43fd31,null))[_0x7056('0x42')](handleError(_0x43fd31,null));};exports['getFields']=function(_0x4fe35e,_0xb6cd88,_0x9d1e4c){var _0x4634b3={};var _0x1d8ca6={};var _0x3412b3;var _0x5d9f6b;return db[_0x7056('0x2b')]['findOne']({'where':{'id':_0x4fe35e[_0x7056('0x44')]['id']}})[_0x7056('0x25')](handleEntityNotFound(_0xb6cd88,null))['then'](function(_0x2ae0c0){if(_0x2ae0c0){_0x3412b3=_0x2ae0c0;_0x1d8ca6[_0x7056('0x30')]=_[_0x7056('0x33')](db[_0x7056('0x4b')][_0x7056('0x2c')]);_0x1d8ca6[_0x7056('0x32')]=_[_0x7056('0x33')](_0x4fe35e[_0x7056('0x32')]);_0x1d8ca6[_0x7056('0x34')]=_['intersection'](_0x1d8ca6[_0x7056('0x30')],_0x1d8ca6[_0x7056('0x32')]);_0x4634b3[_0x7056('0x36')]=_['intersection'](_0x1d8ca6['model'],qs[_0x7056('0x45')](_0x4fe35e[_0x7056('0x32')]['fields']));_0x4634b3[_0x7056('0x36')]=_0x4634b3['attributes'][_0x7056('0x37')]?_0x4634b3[_0x7056('0x36')]:_0x1d8ca6[_0x7056('0x30')];_0x4634b3[_0x7056('0x4c')]=qs[_0x7056('0x3a')](_0x4fe35e[_0x7056('0x32')][_0x7056('0x3a')]);_0x4634b3[_0x7056('0x3b')]=qs[_0x7056('0x34')](_['pick'](_0x4fe35e[_0x7056('0x32')],_0x1d8ca6[_0x7056('0x34')]));if(_0x4fe35e[_0x7056('0x32')][_0x7056('0x3c')]){_0x4634b3[_0x7056('0x3b')]=_[_0x7056('0x3d')](_0x4634b3[_0x7056('0x3b')],{'$or':_[_0x7056('0x31')](_0x4634b3[_0x7056('0x36')],function(_0x349eb5){var _0x5ccb6d={};_0x5ccb6d[_0x349eb5]={'$like':'%'+_0x4fe35e[_0x7056('0x32')][_0x7056('0x3c')]+'%'};return _0x5ccb6d;})});}_0x4634b3=_[_0x7056('0x3d')]({},_0x4634b3,_0x4fe35e[_0x7056('0x47')]);return _0x3412b3['getFields'](_0x4634b3);}})[_0x7056('0x25')](function(_0x1e86c2){if(_0x1e86c2){_0x5d9f6b=_0x1e86c2['length'];if(!_0x4fe35e[_0x7056('0x32')]['hasOwnProperty']('nolimit')){_0x4634b3[_0x7056('0x20')]=qs[_0x7056('0x20')](_0x4fe35e[_0x7056('0x32')][_0x7056('0x20')]);_0x4634b3[_0x7056('0x1e')]=qs[_0x7056('0x1e')](_0x4fe35e[_0x7056('0x32')][_0x7056('0x1e')]);}return _0x3412b3[_0x7056('0x4d')](_0x4634b3);}})[_0x7056('0x25')](function(_0x1aa2d8){if(_0x1aa2d8){return _0x1aa2d8?{'count':_0x5d9f6b,'rows':_0x1aa2d8}:null;}})[_0x7056('0x25')](respondWithResult(_0xb6cd88,null))[_0x7056('0x42')](handleError(_0xb6cd88,null));};exports[_0x7056('0x4e')]=function(_0x42c221,_0x1c9d1d,_0xe6d6c8){var _0x21bac4={};var _0x5d1fca={};var _0xd06586;var _0xc56e7e;return db[_0x7056('0x2b')]['findOne']({'where':{'id':_0x42c221['params']['id']}})[_0x7056('0x25')](handleEntityNotFound(_0x1c9d1d,null))[_0x7056('0x25')](function(_0x5a5609){if(_0x5a5609){_0xd06586=_0x5a5609;_0x5d1fca[_0x7056('0x30')]=_['keys'](db[_0x7056('0x4b')][_0x7056('0x2c')]);_0x5d1fca[_0x7056('0x32')]=_['keys'](_0x42c221[_0x7056('0x32')]);_0x5d1fca[_0x7056('0x34')]=_[_0x7056('0x35')](_0x5d1fca['model'],_0x5d1fca[_0x7056('0x32')]);_0x21bac4[_0x7056('0x36')]=_[_0x7056('0x35')](_0x5d1fca[_0x7056('0x30')],qs[_0x7056('0x45')](_0x42c221['query']['fields']));_0x21bac4[_0x7056('0x36')]=_0x21bac4[_0x7056('0x36')][_0x7056('0x37')]?_0x21bac4['attributes']:_0x5d1fca[_0x7056('0x30')];_0x21bac4[_0x7056('0x4c')]=qs[_0x7056('0x3a')](_0x42c221[_0x7056('0x32')]['sort']);_0x21bac4[_0x7056('0x3b')]=qs['filters'](_[_0x7056('0x4f')](_0x42c221['query'],_0x5d1fca[_0x7056('0x34')]));if(_0x42c221[_0x7056('0x32')][_0x7056('0x3c')]){_0x21bac4[_0x7056('0x3b')]=_[_0x7056('0x3d')](_0x21bac4[_0x7056('0x3b')],{'$or':_['map'](_0x21bac4[_0x7056('0x36')],function(_0x3ed3da){var _0x2c3ee6={};_0x2c3ee6[_0x3ed3da]={'$like':'%'+_0x42c221[_0x7056('0x32')]['filter']+'%'};return _0x2c3ee6;})});}_0x21bac4=_['merge']({},_0x21bac4,_0x42c221[_0x7056('0x47')]);return _0xd06586[_0x7056('0x4e')](_0x21bac4);}})[_0x7056('0x25')](function(_0x1a39dd){if(_0x1a39dd){_0xc56e7e=_0x1a39dd[_0x7056('0x37')];if(!_0x42c221[_0x7056('0x32')][_0x7056('0x38')](_0x7056('0x39'))){_0x21bac4['limit']=qs[_0x7056('0x20')](_0x42c221[_0x7056('0x32')]['limit']);_0x21bac4['offset']=qs[_0x7056('0x1e')](_0x42c221[_0x7056('0x32')]['offset']);}return _0xd06586['getSubjects'](_0x21bac4);}})['then'](function(_0x2c2996){if(_0x2c2996){return _0x2c2996?{'count':_0xc56e7e,'rows':_0x2c2996}:null;}})[_0x7056('0x25')](respondWithResult(_0x1c9d1d,null))[_0x7056('0x42')](handleError(_0x1c9d1d,null));};exports[_0x7056('0x50')]=function(_0x4a1f0d,_0x28aaab,_0x542fd7){var _0x46988d={};var _0x474d46={};var _0x5371d8;var _0x3f94b9;return db[_0x7056('0x2b')][_0x7056('0x51')]({'where':{'id':_0x4a1f0d['params']['id']}})[_0x7056('0x25')](handleEntityNotFound(_0x28aaab,null))['then'](function(_0x520eaf){if(_0x520eaf){_0x5371d8=_0x520eaf;_0x474d46[_0x7056('0x30')]=_[_0x7056('0x33')](db[_0x7056('0x4b')]['rawAttributes']);_0x474d46['query']=_[_0x7056('0x33')](_0x4a1f0d[_0x7056('0x32')]);_0x474d46[_0x7056('0x34')]=_[_0x7056('0x35')](_0x474d46['model'],_0x474d46[_0x7056('0x32')]);_0x46988d[_0x7056('0x36')]=_[_0x7056('0x35')](_0x474d46[_0x7056('0x30')],qs[_0x7056('0x45')](_0x4a1f0d[_0x7056('0x32')][_0x7056('0x45')]));_0x46988d[_0x7056('0x36')]=_0x46988d['attributes']['length']?_0x46988d[_0x7056('0x36')]:_0x474d46['model'];_0x46988d[_0x7056('0x4c')]=qs[_0x7056('0x3a')](_0x4a1f0d[_0x7056('0x32')]['sort']);_0x46988d[_0x7056('0x3b')]=qs[_0x7056('0x34')](_[_0x7056('0x4f')](_0x4a1f0d[_0x7056('0x32')],_0x474d46[_0x7056('0x34')]));if(_0x4a1f0d[_0x7056('0x32')][_0x7056('0x3c')]){_0x46988d[_0x7056('0x3b')]=_[_0x7056('0x3d')](_0x46988d[_0x7056('0x3b')],{'$or':_[_0x7056('0x31')](_0x46988d[_0x7056('0x36')],function(_0x215c4e){var _0x500359={};_0x500359[_0x215c4e]={'$like':'%'+_0x4a1f0d['query'][_0x7056('0x3c')]+'%'};return _0x500359;})});}_0x46988d=_[_0x7056('0x3d')]({},_0x46988d,_0x4a1f0d[_0x7056('0x47')]);return _0x5371d8['getDescriptions'](_0x46988d);}})['then'](function(_0x3b036f){if(_0x3b036f){_0x3f94b9=_0x3b036f[_0x7056('0x37')];if(!_0x4a1f0d[_0x7056('0x32')][_0x7056('0x38')]('nolimit')){_0x46988d[_0x7056('0x20')]=qs[_0x7056('0x20')](_0x4a1f0d[_0x7056('0x32')][_0x7056('0x20')]);_0x46988d[_0x7056('0x1e')]=qs['offset'](_0x4a1f0d[_0x7056('0x32')]['offset']);}return _0x5371d8[_0x7056('0x50')](_0x46988d);}})['then'](function(_0x13f5fd){if(_0x13f5fd){return _0x13f5fd?{'count':_0x3f94b9,'rows':_0x13f5fd}:null;}})[_0x7056('0x25')](respondWithResult(_0x28aaab,null))[_0x7056('0x42')](handleError(_0x28aaab,null));};exports[_0x7056('0x52')]=function(_0x4ccd38,_0x219fb7,_0x1acc7b){var _0x570da1={};var _0x38e3c1={};var _0x2c29bc;var _0x294581;return db['FreshdeskConfiguration'][_0x7056('0x51')]({'where':{'id':_0x4ccd38['params']['id']}})[_0x7056('0x25')](handleEntityNotFound(_0x219fb7,null))[_0x7056('0x25')](function(_0x1578f9){if(_0x1578f9){_0x2c29bc=_0x1578f9;_0x38e3c1['model']=_[_0x7056('0x33')](db[_0x7056('0x53')][_0x7056('0x2c')]);_0x38e3c1[_0x7056('0x32')]=_[_0x7056('0x33')](_0x4ccd38[_0x7056('0x32')]);_0x38e3c1[_0x7056('0x34')]=_[_0x7056('0x35')](_0x38e3c1[_0x7056('0x30')],_0x38e3c1['query']);_0x570da1['attributes']=_['intersection'](_0x38e3c1[_0x7056('0x30')],qs[_0x7056('0x45')](_0x4ccd38[_0x7056('0x32')]['fields']));_0x570da1[_0x7056('0x36')]=_0x570da1['attributes'][_0x7056('0x37')]?_0x570da1[_0x7056('0x36')]:_0x38e3c1[_0x7056('0x30')];_0x570da1[_0x7056('0x4c')]=qs[_0x7056('0x3a')](_0x4ccd38['query'][_0x7056('0x3a')]);_0x570da1[_0x7056('0x3b')]=qs[_0x7056('0x34')](_[_0x7056('0x4f')](_0x4ccd38['query'],_0x38e3c1['filters']));if(_0x4ccd38['query']['filter']){_0x570da1['where']=_[_0x7056('0x3d')](_0x570da1[_0x7056('0x3b')],{'$or':_[_0x7056('0x31')](_0x570da1[_0x7056('0x36')],function(_0xede904){var _0x275d83={};_0x275d83[_0xede904]={'$like':'%'+_0x4ccd38['query'][_0x7056('0x3c')]+'%'};return _0x275d83;})});}_0x570da1=_['merge']({},_0x570da1,_0x4ccd38[_0x7056('0x47')]);return _0x2c29bc[_0x7056('0x52')](_0x570da1);}})['then'](function(_0x3e6916){if(_0x3e6916){_0x294581=_0x3e6916['length'];if(!_0x4ccd38['query']['hasOwnProperty'](_0x7056('0x39'))){_0x570da1['limit']=qs[_0x7056('0x20')](_0x4ccd38[_0x7056('0x32')]['limit']);_0x570da1[_0x7056('0x1e')]=qs[_0x7056('0x1e')](_0x4ccd38[_0x7056('0x32')][_0x7056('0x1e')]);}return _0x2c29bc['getTags'](_0x570da1);}})[_0x7056('0x25')](function(_0x1b1d21){if(_0x1b1d21){return _0x1b1d21?{'count':_0x294581,'rows':_0x1b1d21}:null;}})['then'](respondWithResult(_0x219fb7,null))[_0x7056('0x42')](handleError(_0x219fb7,null));};exports['setTags']=function(_0x365ec,_0x37fa64,_0x1d0839){if(_0x365ec['body']['id']){delete _0x365ec[_0x7056('0x49')]['id'];}return db[_0x7056('0x2b')][_0x7056('0x51')]({'where':{'id':_0x365ec[_0x7056('0x44')]['id']}})[_0x7056('0x25')](handleEntityNotFound(_0x37fa64,null))[_0x7056('0x25')](function(_0x2751b8){if(_0x2751b8){return _0x2751b8[_0x7056('0x54')](_0x365ec[_0x7056('0x49')][_0x7056('0x55')]||[]);}return null;})[_0x7056('0x25')](respondWithResult(_0x37fa64,null))[_0x7056('0x42')](handleError(_0x37fa64,null));};
\ No newline at end of file
index aa6b9c2..8a36bd1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37a3=['moment','request-promise','path','rimraf','../../config/environment','./intFreshdeskConfiguration.attributes','int_freshdesk_configurations','util','../../config/logger','api'];(function(_0x2476c3,_0x353f77){var _0x59e0ed=function(_0x4bd314){while(--_0x4bd314){_0x2476c3['push'](_0x2476c3['shift']());}};_0x59e0ed(++_0x353f77);}(_0x37a3,0x1f1));var _0x337a=function(_0x20f6b0,_0x4f3e16){_0x20f6b0=_0x20f6b0-0x0;var _0x4da167=_0x37a3[_0x20f6b0];return _0x4da167;};'use strict';var _=require('lodash');var util=require(_0x337a('0x0'));var logger=require(_0x337a('0x1'))(_0x337a('0x2'));var moment=require(_0x337a('0x3'));var BPromise=require('bluebird');var rp=require(_0x337a('0x4'));var fs=require('fs');var path=require(_0x337a('0x5'));var rimraf=require(_0x337a('0x6'));var config=require(_0x337a('0x7'));var attributes=require(_0x337a('0x8'));module['exports']=function(_0x3892db,_0x289b3c){return _0x3892db['define']('FreshdeskConfiguration',attributes,{'tableName':_0x337a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xcf65=['api','bluebird','request-promise','path','../../config/environment','./intFreshdeskConfiguration.attributes','exports','FreshdeskConfiguration','int_freshdesk_configurations','lodash','util','../../config/logger'];(function(_0x4cacfc,_0x56dfe0){var _0xffb88c=function(_0x3023b7){while(--_0x3023b7){_0x4cacfc['push'](_0x4cacfc['shift']());}};_0xffb88c(++_0x56dfe0);}(_0xcf65,0x105));var _0x5cf6=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xcf65[_0x4b369d];return _0x571a98;};'use strict';var _=require(_0x5cf6('0x0'));var util=require(_0x5cf6('0x1'));var logger=require(_0x5cf6('0x2'))(_0x5cf6('0x3'));var moment=require('moment');var BPromise=require(_0x5cf6('0x4'));var rp=require(_0x5cf6('0x5'));var fs=require('fs');var path=require(_0x5cf6('0x6'));var rimraf=require('rimraf');var config=require(_0x5cf6('0x7'));var attributes=require(_0x5cf6('0x8'));module[_0x5cf6('0x9')]=function(_0x1e4c42,_0x580780){return _0x1e4c42['define'](_0x5cf6('0xa'),attributes,{'tableName':_0x5cf6('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3228a4f..1a5069f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x477c=['debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','FreshdeskConfiguration,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x477c,0x11c));var _0xc477=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x477c[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xc477('0x0'));var util=require(_0xc477('0x1'));var moment=require(_0xc477('0x2'));var BPromise=require(_0xc477('0x3'));var rs=require(_0xc477('0x4'));var fs=require('fs');var Redis=require(_0xc477('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc477('0x6'));var logger=require(_0xc477('0x7'))(_0xc477('0x8'));var config=require(_0xc477('0x9'));var jayson=require(_0xc477('0xa'));var client=jayson[_0xc477('0xb')][_0xc477('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2a8d72,_0x5cb749,_0x429598){return new BPromise(function(_0x403128,_0x6b6e1a){return client[_0xc477('0xd')](_0x2a8d72,_0x429598)['then'](function(_0x583c1f){logger[_0xc477('0xe')]('FreshdeskConfiguration,\x20%s,\x20%s',_0x5cb749,'request\x20sent');logger[_0xc477('0xf')](_0xc477('0x10'),_0x5cb749,_0xc477('0x11'),JSON[_0xc477('0x12')](_0x583c1f));if(_0x583c1f[_0xc477('0x13')]){if(_0x583c1f[_0xc477('0x13')]['code']===0x1f4){logger[_0xc477('0x13')](_0xc477('0x14'),_0x5cb749,_0x583c1f[_0xc477('0x13')][_0xc477('0x15')]);return _0x6b6e1a(_0x583c1f[_0xc477('0x13')][_0xc477('0x15')]);}logger[_0xc477('0x13')](_0xc477('0x14'),_0x5cb749,_0x583c1f[_0xc477('0x13')][_0xc477('0x15')]);return _0x403128(_0x583c1f['error'][_0xc477('0x15')]);}else{logger[_0xc477('0xe')](_0xc477('0x14'),_0x5cb749,'request\x20sent');_0x403128(_0x583c1f['result'][_0xc477('0x15')]);}})[_0xc477('0x16')](function(_0x57bbd4){logger[_0xc477('0x13')](_0xc477('0x14'),_0x5cb749,_0x57bbd4);_0x6b6e1a(_0x57bbd4);});});}
\ No newline at end of file
+var _0x8824=['request\x20sent','debug','FreshdeskConfiguration,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','FreshdeskConfiguration,\x20%s,\x20%s'];(function(_0x588011,_0x5e9d11){var _0x3b3773=function(_0x4cca54){while(--_0x4cca54){_0x588011['push'](_0x588011['shift']());}};_0x3b3773(++_0x5e9d11);}(_0x8824,0x144));var _0x4882=function(_0x155dfc,_0xf5455c){_0x155dfc=_0x155dfc-0x0;var _0x124d23=_0x8824[_0x155dfc];return _0x124d23;};'use strict';var _=require(_0x4882('0x0'));var util=require(_0x4882('0x1'));var moment=require('moment');var BPromise=require(_0x4882('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4882('0x3'));var db=require(_0x4882('0x4'))['db'];var utils=require(_0x4882('0x5'));var logger=require(_0x4882('0x6'))(_0x4882('0x7'));var config=require(_0x4882('0x8'));var jayson=require(_0x4882('0x9'));var client=jayson[_0x4882('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5196c7,_0x2ccf07,_0x5df4fb){return new BPromise(function(_0x5366c4,_0x533df0){return client['request'](_0x5196c7,_0x5df4fb)['then'](function(_0x3dbc6c){logger['info'](_0x4882('0xb'),_0x2ccf07,_0x4882('0xc'));logger[_0x4882('0xd')](_0x4882('0xe'),_0x2ccf07,_0x4882('0xc'),JSON['stringify'](_0x3dbc6c));if(_0x3dbc6c['error']){if(_0x3dbc6c[_0x4882('0xf')][_0x4882('0x10')]===0x1f4){logger[_0x4882('0xf')](_0x4882('0xb'),_0x2ccf07,_0x3dbc6c[_0x4882('0xf')][_0x4882('0x11')]);return _0x533df0(_0x3dbc6c[_0x4882('0xf')][_0x4882('0x11')]);}logger['error'](_0x4882('0xb'),_0x2ccf07,_0x3dbc6c['error']['message']);return _0x5366c4(_0x3dbc6c[_0x4882('0xf')]['message']);}else{logger[_0x4882('0x12')](_0x4882('0xb'),_0x2ccf07,_0x4882('0xc'));_0x5366c4(_0x3dbc6c[_0x4882('0x13')][_0x4882('0x11')]);}})[_0x4882('0x14')](function(_0xd1c9e1){logger[_0x4882('0xf')](_0x4882('0xb'),_0x2ccf07,_0xd1c9e1);_0x533df0(_0xd1c9e1);});});}
\ No newline at end of file
index 8055393..ea91aea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad93=['../../components/auth/service','../../config/environment','get','isAuthenticated','show','post','create','/:id','update','delete','destroy','multer','path','connect-timeout','Router'];(function(_0x55c307,_0x22b2ce){var _0xcca0a9=function(_0x1a2fa9){while(--_0x1a2fa9){_0x55c307['push'](_0x55c307['shift']());}};_0xcca0a9(++_0x22b2ce);}(_0xad93,0xbf));var _0x3ad9=function(_0x1ca7ed,_0x2cccb4){_0x1ca7ed=_0x1ca7ed-0x0;var _0x5d706a=_0xad93[_0x1ca7ed];return _0x5d706a;};'use strict';var multer=require(_0x3ad9('0x0'));var util=require('util');var path=require(_0x3ad9('0x1'));var timeout=require(_0x3ad9('0x2'));var express=require('express');var router=express[_0x3ad9('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x3ad9('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x3ad9('0x5'));var controller=require('./intFreshdeskField.controller');router[_0x3ad9('0x6')]('/',auth['isAuthenticated'](),controller['index']);router[_0x3ad9('0x6')]('/:id',auth[_0x3ad9('0x7')](),controller[_0x3ad9('0x8')]);router[_0x3ad9('0x9')]('/',auth[_0x3ad9('0x7')](),controller[_0x3ad9('0xa')]);router['put'](_0x3ad9('0xb'),auth['isAuthenticated'](),controller[_0x3ad9('0xc')]);router[_0x3ad9('0xd')](_0x3ad9('0xb'),auth[_0x3ad9('0x7')](),controller[_0x3ad9('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0xc6f7=['isAuthenticated','index','/:id','post','put','update','destroy','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','./intFreshdeskField.controller','get'];(function(_0x3a21c0,_0x348451){var _0x411e84=function(_0xdd7b02){while(--_0xdd7b02){_0x3a21c0['push'](_0x3a21c0['shift']());}};_0x411e84(++_0x348451);}(_0xc6f7,0x70));var _0x7c6f=function(_0xf8be97,_0x14c860){_0xf8be97=_0xf8be97-0x0;var _0x1bbed1=_0xc6f7[_0xf8be97];return _0x1bbed1;};'use strict';var multer=require('multer');var util=require(_0x7c6f('0x0'));var path=require(_0x7c6f('0x1'));var timeout=require(_0x7c6f('0x2'));var express=require(_0x7c6f('0x3'));var router=express['Router']();var fs_extra=require(_0x7c6f('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x7c6f('0x5'));var config=require('../../config/environment');var controller=require(_0x7c6f('0x6'));router[_0x7c6f('0x7')]('/',auth[_0x7c6f('0x8')](),controller[_0x7c6f('0x9')]);router[_0x7c6f('0x7')](_0x7c6f('0xa'),auth[_0x7c6f('0x8')](),controller['show']);router[_0x7c6f('0xb')]('/',auth[_0x7c6f('0x8')](),controller['create']);router[_0x7c6f('0xc')](_0x7c6f('0xa'),auth[_0x7c6f('0x8')](),controller[_0x7c6f('0xd')]);router['delete'](_0x7c6f('0xa'),auth['isAuthenticated'](),controller[_0x7c6f('0xe')]);module['exports']=router;
\ No newline at end of file
index fc84b47..0df3cf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb854=['ENUM','string','variable','picklist','customVariable','STRING','sequelize','exports'];(function(_0x59a19f,_0x589a82){var _0x44a3cb=function(_0x46547c){while(--_0x46547c){_0x59a19f['push'](_0x59a19f['shift']());}};_0x44a3cb(++_0x589a82);}(_0xb854,0x8e));var _0x4b85=function(_0x123de5,_0x400698){_0x123de5=_0x123de5-0x0;var _0x37baab=_0xb854[_0x123de5];return _0x37baab;};'use strict';var Sequelize=require(_0x4b85('0x0'));module[_0x4b85('0x1')]={'type':{'type':Sequelize[_0x4b85('0x2')](_0x4b85('0x3'),_0x4b85('0x4'),'customVariable','keyValue',_0x4b85('0x5')),'defaultValue':_0x4b85('0x3')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x4b85('0x2')](_0x4b85('0x3'),_0x4b85('0x4'),_0x4b85('0x6'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x4b85('0x7')]},'nameField':{'type':Sequelize[_0x4b85('0x7')]},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xc837=['picklist','STRING','BOOLEAN','exports','ENUM','string','variable','customVariable'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0xc837,0x1b3));var _0x7c83=function(_0x309f89,_0x4dcee4){_0x309f89=_0x309f89-0x0;var _0xbbbf35=_0xc837[_0x309f89];return _0xbbbf35;};'use strict';var Sequelize=require('sequelize');module[_0x7c83('0x0')]={'type':{'type':Sequelize[_0x7c83('0x1')](_0x7c83('0x2'),_0x7c83('0x3'),_0x7c83('0x4'),'keyValue',_0x7c83('0x5')),'defaultValue':'string'},'content':{'type':Sequelize[_0x7c83('0x6')]},'key':{'type':Sequelize[_0x7c83('0x6')]},'keyType':{'type':Sequelize['ENUM'](_0x7c83('0x2'),_0x7c83('0x3'),_0x7c83('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x7c83('0x6')]},'customField':{'type':Sequelize[_0x7c83('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x7c83('0x6')]}};
\ No newline at end of file
index aab1523..9eef784 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3667=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','destroy','stack','name','index','map','FreshdeskField','rawAttributes','fieldName','type','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','where','merge','options','includeAll','findAll','catch','params','include','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','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'];(function(_0x90ad39,_0x1b90f1){var _0x316910=function(_0x48205d){while(--_0x48205d){_0x90ad39['push'](_0x90ad39['shift']());}};_0x316910(++_0x1b90f1);}(_0x3667,0xcd));var _0x7366=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3667[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x7366('0x0'));var rimraf=require(_0x7366('0x1'));var zipdir=require(_0x7366('0x2'));var jsonpatch=require(_0x7366('0x3'));var rp=require(_0x7366('0x4'));var moment=require('moment');var BPromise=require(_0x7366('0x5'));var Mustache=require(_0x7366('0x6'));var util=require('util');var path=require(_0x7366('0x7'));var sox=require(_0x7366('0x8'));var csv=require(_0x7366('0x9'));var ejs=require(_0x7366('0xa'));var fs=require('fs');var fs_extra=require(_0x7366('0xb'));var _=require('lodash');var squel=require(_0x7366('0xc'));var crypto=require(_0x7366('0xd'));var jsforce=require(_0x7366('0xe'));var deskjs=require(_0x7366('0xf'));var toCsv=require(_0x7366('0x9'));var querystring=require(_0x7366('0x10'));var Papa=require(_0x7366('0x11'));var Redis=require(_0x7366('0x12'));var authService=require(_0x7366('0x13'));var qs=require(_0x7366('0x14'));var as=require(_0x7366('0x15'));var hardwareService=require(_0x7366('0x16'));var logger=require(_0x7366('0x17'))(_0x7366('0x18'));var utils=require(_0x7366('0x19'));var config=require(_0x7366('0x1a'));var licenseUtil=require(_0x7366('0x1b'));var db=require(_0x7366('0x1c'))['db'];function respondWithStatusCode(_0xd5bac8,_0x3e3a73){_0x3e3a73=_0x3e3a73||0xcc;return function(_0x262659){if(_0x262659){return _0xd5bac8[_0x7366('0x1d')](_0x3e3a73);}return _0xd5bac8[_0x7366('0x1e')](_0x3e3a73)[_0x7366('0x1f')]();};}function respondWithResult(_0x308253,_0x27500c){_0x27500c=_0x27500c||0xc8;return function(_0x22562f){if(_0x22562f){return _0x308253[_0x7366('0x1e')](_0x27500c)['json'](_0x22562f);}};}function respondWithFilteredResult(_0x23e763,_0x308752){return function(_0x338719){if(_0x338719){var _0x2c0422=typeof _0x308752[_0x7366('0x20')]===_0x7366('0x21')&&typeof _0x308752[_0x7366('0x22')]===_0x7366('0x21');var _0x83e5d5=_0x338719[_0x7366('0x23')];var _0x1a71f5=_0x2c0422?0x0:_0x308752['offset'];var _0x208ac8=_0x2c0422?_0x338719['count']:_0x308752[_0x7366('0x20')]+_0x308752[_0x7366('0x22')];var _0x3f23cd;if(_0x208ac8>=_0x83e5d5){_0x208ac8=_0x83e5d5;_0x3f23cd=0xc8;}else{_0x3f23cd=0xce;}_0x23e763['status'](_0x3f23cd);return _0x23e763[_0x7366('0x24')](_0x7366('0x25'),_0x1a71f5+'-'+_0x208ac8+'/'+_0x83e5d5)[_0x7366('0x26')](_0x338719);}return null;};}function patchUpdates(_0x532ce2){return function(_0x16e038){try{jsonpatch[_0x7366('0x27')](_0x16e038,_0x532ce2,!![]);}catch(_0x482946){return BPromise[_0x7366('0x28')](_0x482946);}return _0x16e038[_0x7366('0x29')]();};}function saveUpdates(_0xaab659,_0x1a12d2){return function(_0x3c30a2){if(_0x3c30a2){return _0x3c30a2[_0x7366('0x2a')](_0xaab659)[_0x7366('0x2b')](function(_0x22ed7e){return _0x22ed7e;});}return null;};}function removeEntity(_0x2095a1,_0x301220){return function(_0x12aed6){if(_0x12aed6){return _0x12aed6[_0x7366('0x2c')]()[_0x7366('0x2b')](function(){_0x2095a1['status'](0xcc)[_0x7366('0x1f')]();});}};}function handleEntityNotFound(_0x4fe7cf,_0x379146){return function(_0x4ab987){if(!_0x4ab987){_0x4fe7cf['sendStatus'](0x194);}return _0x4ab987;};}function handleError(_0x383055,_0x4d4cb5){_0x4d4cb5=_0x4d4cb5||0x1f4;return function(_0x254374){logger['error'](_0x254374[_0x7366('0x2d')]);if(_0x254374[_0x7366('0x2e')]){delete _0x254374['name'];}_0x383055[_0x7366('0x1e')](_0x4d4cb5)['send'](_0x254374);};}exports[_0x7366('0x2f')]=function(_0x2b61af,_0x4a4e67){var _0x3cef4a={},_0x507baf={},_0xc58ac7={'count':0x0,'rows':[]};var _0x46f80f=_[_0x7366('0x30')](db[_0x7366('0x31')][_0x7366('0x32')],function(_0x5e075c){return{'name':_0x5e075c[_0x7366('0x33')],'type':_0x5e075c[_0x7366('0x34')]['key']};});_0x507baf['model']=_['map'](_0x46f80f,'name');_0x507baf[_0x7366('0x35')]=_[_0x7366('0x36')](_0x2b61af[_0x7366('0x35')]);_0x507baf[_0x7366('0x37')]=_['intersection'](_0x507baf[_0x7366('0x38')],_0x507baf[_0x7366('0x35')]);_0x3cef4a[_0x7366('0x39')]=_[_0x7366('0x3a')](_0x507baf['model'],qs[_0x7366('0x3b')](_0x2b61af[_0x7366('0x35')]['fields']));_0x3cef4a[_0x7366('0x39')]=_0x3cef4a[_0x7366('0x39')][_0x7366('0x3c')]?_0x3cef4a[_0x7366('0x39')]:_0x507baf[_0x7366('0x38')];if(!_0x2b61af[_0x7366('0x35')][_0x7366('0x3d')](_0x7366('0x3e'))){_0x3cef4a[_0x7366('0x22')]=qs['limit'](_0x2b61af[_0x7366('0x35')][_0x7366('0x22')]);_0x3cef4a['offset']=qs[_0x7366('0x20')](_0x2b61af[_0x7366('0x35')][_0x7366('0x20')]);}_0x3cef4a['order']=qs[_0x7366('0x3f')](_0x2b61af['query'][_0x7366('0x3f')]);_0x3cef4a['where']=qs['filters'](_[_0x7366('0x40')](_0x2b61af['query'],_0x507baf[_0x7366('0x37')]),_0x46f80f);if(_0x2b61af[_0x7366('0x35')]['filter']){_0x3cef4a[_0x7366('0x41')]=_['merge'](_0x3cef4a[_0x7366('0x41')],{'$or':_[_0x7366('0x30')](_0x46f80f,function(_0x5e58c5){if(_0x5e58c5[_0x7366('0x34')]!=='VIRTUAL'){var _0x8ed827={};_0x8ed827[_0x5e58c5[_0x7366('0x2e')]]={'$like':'%'+_0x2b61af[_0x7366('0x35')]['filter']+'%'};return _0x8ed827;}})});}_0x3cef4a=_[_0x7366('0x42')]({},_0x3cef4a,_0x2b61af[_0x7366('0x43')]);var _0x14ec01={'where':_0x3cef4a[_0x7366('0x41')]};return db[_0x7366('0x31')][_0x7366('0x23')](_0x14ec01)[_0x7366('0x2b')](function(_0x4d45dd){_0xc58ac7['count']=_0x4d45dd;if(_0x2b61af[_0x7366('0x35')][_0x7366('0x44')]){_0x3cef4a['include']=[{'all':!![]}];}return db[_0x7366('0x31')][_0x7366('0x45')](_0x3cef4a);})['then'](function(_0x432f79){_0xc58ac7['rows']=_0x432f79;return _0xc58ac7;})[_0x7366('0x2b')](respondWithFilteredResult(_0x4a4e67,_0x3cef4a))[_0x7366('0x46')](handleError(_0x4a4e67,null));};exports['show']=function(_0x5b5a95,_0x3bc879){var _0xedc3c7={'raw':!![],'where':{'id':_0x5b5a95[_0x7366('0x47')]['id']}},_0x2ac2e6={};_0x2ac2e6['model']=_[_0x7366('0x36')](db[_0x7366('0x31')][_0x7366('0x32')]);_0x2ac2e6[_0x7366('0x35')]=_[_0x7366('0x36')](_0x5b5a95[_0x7366('0x35')]);_0x2ac2e6[_0x7366('0x37')]=_['intersection'](_0x2ac2e6[_0x7366('0x38')],_0x2ac2e6[_0x7366('0x35')]);_0xedc3c7[_0x7366('0x39')]=_['intersection'](_0x2ac2e6[_0x7366('0x38')],qs[_0x7366('0x3b')](_0x5b5a95['query'][_0x7366('0x3b')]));_0xedc3c7[_0x7366('0x39')]=_0xedc3c7[_0x7366('0x39')]['length']?_0xedc3c7[_0x7366('0x39')]:_0x2ac2e6[_0x7366('0x38')];if(_0x5b5a95[_0x7366('0x35')]['includeAll']){_0xedc3c7[_0x7366('0x48')]=[{'all':!![]}];}_0xedc3c7=_[_0x7366('0x42')]({},_0xedc3c7,_0x5b5a95[_0x7366('0x43')]);return db['FreshdeskField'][_0x7366('0x49')](_0xedc3c7)[_0x7366('0x2b')](handleEntityNotFound(_0x3bc879,null))[_0x7366('0x2b')](respondWithResult(_0x3bc879,null))[_0x7366('0x46')](handleError(_0x3bc879,null));};exports['create']=function(_0x3725aa,_0x2d1c52){return db[_0x7366('0x31')][_0x7366('0x4a')](_0x3725aa[_0x7366('0x4b')],{})[_0x7366('0x2b')](respondWithResult(_0x2d1c52,0xc9))[_0x7366('0x46')](handleError(_0x2d1c52,null));};exports[_0x7366('0x2a')]=function(_0x2ad8bf,_0x59f078){if(_0x2ad8bf[_0x7366('0x4b')]['id']){delete _0x2ad8bf[_0x7366('0x4b')]['id'];}return db['FreshdeskField'][_0x7366('0x49')]({'where':{'id':_0x2ad8bf[_0x7366('0x47')]['id']}})['then'](handleEntityNotFound(_0x59f078,null))[_0x7366('0x2b')](saveUpdates(_0x2ad8bf['body'],null))[_0x7366('0x2b')](respondWithResult(_0x59f078,null))[_0x7366('0x46')](handleError(_0x59f078,null));};exports[_0x7366('0x2c')]=function(_0x22026a,_0x588b31){return db[_0x7366('0x31')][_0x7366('0x49')]({'where':{'id':_0x22026a[_0x7366('0x47')]['id']}})[_0x7366('0x2b')](handleEntityNotFound(_0x588b31,null))[_0x7366('0x2b')](removeEntity(_0x588b31,null))[_0x7366('0x46')](handleError(_0x588b31,null));};
\ No newline at end of file
+var _0x235a=['set','Content-Range','apply','reject','save','update','then','destroy','error','name','send','index','FreshdeskField','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','map','VIRTUAL','filter','count','includeAll','include','findAll','rows','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit'];(function(_0xbc1231,_0x5b9bb7){var _0x1dbf20=function(_0x173863){while(--_0x173863){_0xbc1231['push'](_0xbc1231['shift']());}};_0x1dbf20(++_0x5b9bb7);}(_0x235a,0x1ef));var _0xa235=function(_0x459026,_0x537090){_0x459026=_0x459026-0x0;var _0x1736eb=_0x235a[_0x459026];return _0x1736eb;};'use strict';var emlformat=require(_0xa235('0x0'));var rimraf=require(_0xa235('0x1'));var zipdir=require(_0xa235('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa235('0x3'));var moment=require('moment');var BPromise=require(_0xa235('0x4'));var Mustache=require(_0xa235('0x5'));var util=require(_0xa235('0x6'));var path=require(_0xa235('0x7'));var sox=require(_0xa235('0x8'));var csv=require(_0xa235('0x9'));var ejs=require(_0xa235('0xa'));var fs=require('fs');var fs_extra=require(_0xa235('0xb'));var _=require('lodash');var squel=require(_0xa235('0xc'));var crypto=require(_0xa235('0xd'));var jsforce=require(_0xa235('0xe'));var deskjs=require(_0xa235('0xf'));var toCsv=require('to-csv');var querystring=require(_0xa235('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xa235('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0xa235('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0xa235('0x13'));var config=require(_0xa235('0x14'));var licenseUtil=require(_0xa235('0x15'));var db=require(_0xa235('0x16'))['db'];function respondWithStatusCode(_0x5330db,_0x5510ff){_0x5510ff=_0x5510ff||0xcc;return function(_0x47aad7){if(_0x47aad7){return _0x5330db[_0xa235('0x17')](_0x5510ff);}return _0x5330db[_0xa235('0x18')](_0x5510ff)[_0xa235('0x19')]();};}function respondWithResult(_0x3bf6fc,_0x36b4b1){_0x36b4b1=_0x36b4b1||0xc8;return function(_0x44ea6a){if(_0x44ea6a){return _0x3bf6fc[_0xa235('0x18')](_0x36b4b1)[_0xa235('0x1a')](_0x44ea6a);}};}function respondWithFilteredResult(_0x1369de,_0x4aceee){return function(_0x352463){if(_0x352463){var _0x20cd67=typeof _0x4aceee[_0xa235('0x1b')]===_0xa235('0x1c')&&typeof _0x4aceee[_0xa235('0x1d')]===_0xa235('0x1c');var _0x5c6e95=_0x352463['count'];var _0x446ea2=_0x20cd67?0x0:_0x4aceee[_0xa235('0x1b')];var _0x2b3769=_0x20cd67?_0x352463['count']:_0x4aceee[_0xa235('0x1b')]+_0x4aceee[_0xa235('0x1d')];var _0x3ca514;if(_0x2b3769>=_0x5c6e95){_0x2b3769=_0x5c6e95;_0x3ca514=0xc8;}else{_0x3ca514=0xce;}_0x1369de[_0xa235('0x18')](_0x3ca514);return _0x1369de[_0xa235('0x1e')](_0xa235('0x1f'),_0x446ea2+'-'+_0x2b3769+'/'+_0x5c6e95)[_0xa235('0x1a')](_0x352463);}return null;};}function patchUpdates(_0x483771){return function(_0x5a3bea){try{jsonpatch[_0xa235('0x20')](_0x5a3bea,_0x483771,!![]);}catch(_0x21940f){return BPromise[_0xa235('0x21')](_0x21940f);}return _0x5a3bea[_0xa235('0x22')]();};}function saveUpdates(_0x2e38e,_0x3deeea){return function(_0x3d9f70){if(_0x3d9f70){return _0x3d9f70[_0xa235('0x23')](_0x2e38e)[_0xa235('0x24')](function(_0x216083){return _0x216083;});}return null;};}function removeEntity(_0x3219f1,_0x20292c){return function(_0xee45e1){if(_0xee45e1){return _0xee45e1[_0xa235('0x25')]()[_0xa235('0x24')](function(){_0x3219f1[_0xa235('0x18')](0xcc)[_0xa235('0x19')]();});}};}function handleEntityNotFound(_0x13c868,_0x976c9f){return function(_0x1cb892){if(!_0x1cb892){_0x13c868[_0xa235('0x17')](0x194);}return _0x1cb892;};}function handleError(_0x57f591,_0xe1176c){_0xe1176c=_0xe1176c||0x1f4;return function(_0x533b15){logger[_0xa235('0x26')](_0x533b15['stack']);if(_0x533b15[_0xa235('0x27')]){delete _0x533b15[_0xa235('0x27')];}_0x57f591[_0xa235('0x18')](_0xe1176c)[_0xa235('0x28')](_0x533b15);};}exports[_0xa235('0x29')]=function(_0x5d811a,_0x2585c7){var _0x612f2={},_0x55a21e={},_0x4b33ef={'count':0x0,'rows':[]};var _0x502df9=_['map'](db[_0xa235('0x2a')][_0xa235('0x2b')],function(_0x2d8073){return{'name':_0x2d8073[_0xa235('0x2c')],'type':_0x2d8073[_0xa235('0x2d')][_0xa235('0x2e')]};});_0x55a21e[_0xa235('0x2f')]=_['map'](_0x502df9,'name');_0x55a21e[_0xa235('0x30')]=_[_0xa235('0x31')](_0x5d811a['query']);_0x55a21e[_0xa235('0x32')]=_[_0xa235('0x33')](_0x55a21e[_0xa235('0x2f')],_0x55a21e[_0xa235('0x30')]);_0x612f2[_0xa235('0x34')]=_[_0xa235('0x33')](_0x55a21e[_0xa235('0x2f')],qs[_0xa235('0x35')](_0x5d811a['query'][_0xa235('0x35')]));_0x612f2['attributes']=_0x612f2[_0xa235('0x34')][_0xa235('0x36')]?_0x612f2[_0xa235('0x34')]:_0x55a21e[_0xa235('0x2f')];if(!_0x5d811a[_0xa235('0x30')][_0xa235('0x37')](_0xa235('0x38'))){_0x612f2[_0xa235('0x1d')]=qs[_0xa235('0x1d')](_0x5d811a[_0xa235('0x30')][_0xa235('0x1d')]);_0x612f2[_0xa235('0x1b')]=qs[_0xa235('0x1b')](_0x5d811a['query']['offset']);}_0x612f2['order']=qs[_0xa235('0x39')](_0x5d811a['query'][_0xa235('0x39')]);_0x612f2[_0xa235('0x3a')]=qs[_0xa235('0x32')](_[_0xa235('0x3b')](_0x5d811a[_0xa235('0x30')],_0x55a21e[_0xa235('0x32')]),_0x502df9);if(_0x5d811a[_0xa235('0x30')]['filter']){_0x612f2[_0xa235('0x3a')]=_[_0xa235('0x3c')](_0x612f2['where'],{'$or':_[_0xa235('0x3d')](_0x502df9,function(_0x3fa927){if(_0x3fa927[_0xa235('0x2d')]!==_0xa235('0x3e')){var _0x45cc55={};_0x45cc55[_0x3fa927[_0xa235('0x27')]]={'$like':'%'+_0x5d811a[_0xa235('0x30')][_0xa235('0x3f')]+'%'};return _0x45cc55;}})});}_0x612f2=_[_0xa235('0x3c')]({},_0x612f2,_0x5d811a['options']);var _0x28c259={'where':_0x612f2[_0xa235('0x3a')]};return db[_0xa235('0x2a')][_0xa235('0x40')](_0x28c259)[_0xa235('0x24')](function(_0x542755){_0x4b33ef[_0xa235('0x40')]=_0x542755;if(_0x5d811a[_0xa235('0x30')][_0xa235('0x41')]){_0x612f2[_0xa235('0x42')]=[{'all':!![]}];}return db['FreshdeskField'][_0xa235('0x43')](_0x612f2);})[_0xa235('0x24')](function(_0x47801f){_0x4b33ef[_0xa235('0x44')]=_0x47801f;return _0x4b33ef;})[_0xa235('0x24')](respondWithFilteredResult(_0x2585c7,_0x612f2))[_0xa235('0x45')](handleError(_0x2585c7,null));};exports[_0xa235('0x46')]=function(_0x5c203c,_0x333ed8){var _0x4748d8={'raw':!![],'where':{'id':_0x5c203c[_0xa235('0x47')]['id']}},_0x1e90a9={};_0x1e90a9[_0xa235('0x2f')]=_['keys'](db[_0xa235('0x2a')][_0xa235('0x2b')]);_0x1e90a9[_0xa235('0x30')]=_[_0xa235('0x31')](_0x5c203c[_0xa235('0x30')]);_0x1e90a9['filters']=_[_0xa235('0x33')](_0x1e90a9[_0xa235('0x2f')],_0x1e90a9[_0xa235('0x30')]);_0x4748d8[_0xa235('0x34')]=_[_0xa235('0x33')](_0x1e90a9[_0xa235('0x2f')],qs[_0xa235('0x35')](_0x5c203c[_0xa235('0x30')]['fields']));_0x4748d8[_0xa235('0x34')]=_0x4748d8[_0xa235('0x34')][_0xa235('0x36')]?_0x4748d8[_0xa235('0x34')]:_0x1e90a9[_0xa235('0x2f')];if(_0x5c203c[_0xa235('0x30')][_0xa235('0x41')]){_0x4748d8[_0xa235('0x42')]=[{'all':!![]}];}_0x4748d8=_[_0xa235('0x3c')]({},_0x4748d8,_0x5c203c['options']);return db[_0xa235('0x2a')][_0xa235('0x48')](_0x4748d8)[_0xa235('0x24')](handleEntityNotFound(_0x333ed8,null))[_0xa235('0x24')](respondWithResult(_0x333ed8,null))[_0xa235('0x45')](handleError(_0x333ed8,null));};exports['create']=function(_0x22f11c,_0x11b5e7){return db['FreshdeskField'][_0xa235('0x49')](_0x22f11c[_0xa235('0x4a')],{})[_0xa235('0x24')](respondWithResult(_0x11b5e7,0xc9))[_0xa235('0x45')](handleError(_0x11b5e7,null));};exports['update']=function(_0x16d9e8,_0x4909e9){if(_0x16d9e8[_0xa235('0x4a')]['id']){delete _0x16d9e8[_0xa235('0x4a')]['id'];}return db['FreshdeskField'][_0xa235('0x48')]({'where':{'id':_0x16d9e8[_0xa235('0x47')]['id']}})[_0xa235('0x24')](handleEntityNotFound(_0x4909e9,null))[_0xa235('0x24')](saveUpdates(_0x16d9e8[_0xa235('0x4a')],null))[_0xa235('0x24')](respondWithResult(_0x4909e9,null))[_0xa235('0x45')](handleError(_0x4909e9,null));};exports[_0xa235('0x25')]=function(_0x5ab614,_0x5033dc){return db['FreshdeskField'][_0xa235('0x48')]({'where':{'id':_0x5ab614[_0xa235('0x47')]['id']}})[_0xa235('0x24')](handleEntityNotFound(_0x5033dc,null))[_0xa235('0x24')](removeEntity(_0x5033dc,null))['catch'](handleError(_0x5033dc,null));};
\ No newline at end of file
index fde78f2..e2da6c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12f1=['moment','bluebird','request-promise','./intFreshdeskField.attributes','define','FreshdeskField','int_freshdesk_fields','freshdesk_unique_index','idField','FieldId','lodash','../../config/logger','api'];(function(_0x12723c,_0x148a5a){var _0x3fc804=function(_0x810da6){while(--_0x810da6){_0x12723c['push'](_0x12723c['shift']());}};_0x3fc804(++_0x148a5a);}(_0x12f1,0xf4));var _0x112f=function(_0x53a51f,_0x1e9256){_0x53a51f=_0x53a51f-0x0;var _0x149579=_0x12f1[_0x53a51f];return _0x149579;};'use strict';var _=require(_0x112f('0x0'));var util=require('util');var logger=require(_0x112f('0x1'))(_0x112f('0x2'));var moment=require(_0x112f('0x3'));var BPromise=require(_0x112f('0x4'));var rp=require(_0x112f('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x112f('0x6'));module['exports']=function(_0x21cccd,_0x2044f2){return _0x21cccd[_0x112f('0x7')](_0x112f('0x8'),attributes,{'tableName':_0x112f('0x9'),'paranoid':![],'indexes':[{'name':_0x112f('0xa'),'fields':[_0x112f('0xb'),_0x112f('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xe489=['idField','FieldId','lodash','util','api','moment','bluebird','request-promise','path','./intFreshdeskField.attributes','define','FreshdeskField','freshdesk_unique_index'];(function(_0x58fc2f,_0x111399){var _0x3a1312=function(_0x3d2ff2){while(--_0x3d2ff2){_0x58fc2f['push'](_0x58fc2f['shift']());}};_0x3a1312(++_0x111399);}(_0xe489,0x9e));var _0x9e48=function(_0x1accb4,_0x29aa72){_0x1accb4=_0x1accb4-0x0;var _0x30e29b=_0xe489[_0x1accb4];return _0x30e29b;};'use strict';var _=require(_0x9e48('0x0'));var util=require(_0x9e48('0x1'));var logger=require('../../config/logger')(_0x9e48('0x2'));var moment=require(_0x9e48('0x3'));var BPromise=require(_0x9e48('0x4'));var rp=require(_0x9e48('0x5'));var fs=require('fs');var path=require(_0x9e48('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x9e48('0x7'));module['exports']=function(_0x9b6c19,_0x42747f){return _0x9b6c19[_0x9e48('0x8')](_0x9e48('0x9'),attributes,{'tableName':'int_freshdesk_fields','paranoid':![],'indexes':[{'name':_0x9e48('0xa'),'fields':[_0x9e48('0xb'),_0x9e48('0xc')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index e4242dc..fec482d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49d3=['../../config/utils','rpc','../../config/environment','jayson/promise','client','http','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash','util','moment','../../mysqldb'];(function(_0x2e04ef,_0x31a596){var _0x5722b0=function(_0x386fbd){while(--_0x386fbd){_0x2e04ef['push'](_0x2e04ef['shift']());}};_0x5722b0(++_0x31a596);}(_0x49d3,0x1d7));var _0x349d=function(_0x4b00e8,_0x17e10c){_0x4b00e8=_0x4b00e8-0x0;var _0x272ed1=_0x49d3[_0x4b00e8];return _0x272ed1;};'use strict';var _=require(_0x349d('0x0'));var util=require(_0x349d('0x1'));var moment=require(_0x349d('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x349d('0x3'))['db'];var utils=require(_0x349d('0x4'));var logger=require('../../config/logger')(_0x349d('0x5'));var config=require(_0x349d('0x6'));var jayson=require(_0x349d('0x7'));var client=jayson[_0x349d('0x8')][_0x349d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x472b27,_0x152027,_0x1214f3){return new BPromise(function(_0x2d332e,_0x2b750c){return client['request'](_0x472b27,_0x1214f3)['then'](function(_0x346420){logger[_0x349d('0xa')](_0x349d('0xb'),_0x152027,_0x349d('0xc'));logger[_0x349d('0xd')]('FreshdeskField,\x20%s,\x20%s,\x20%s',_0x152027,_0x349d('0xc'),JSON['stringify'](_0x346420));if(_0x346420[_0x349d('0xe')]){if(_0x346420[_0x349d('0xe')][_0x349d('0xf')]===0x1f4){logger['error'](_0x349d('0xb'),_0x152027,_0x346420[_0x349d('0xe')]['message']);return _0x2b750c(_0x346420[_0x349d('0xe')]['message']);}logger['error'](_0x349d('0xb'),_0x152027,_0x346420[_0x349d('0xe')]['message']);return _0x2d332e(_0x346420[_0x349d('0xe')][_0x349d('0x10')]);}else{logger[_0x349d('0xa')](_0x349d('0xb'),_0x152027,_0x349d('0xc'));_0x2d332e(_0x346420[_0x349d('0x11')][_0x349d('0x10')]);}})[_0x349d('0x12')](function(_0x1262d5){logger[_0x349d('0xe')]('FreshdeskField,\x20%s,\x20%s',_0x152027,_0x1262d5);_0x2b750c(_0x1262d5);});});}
\ No newline at end of file
+var _0xc649=['../../config/logger','rpc','jayson/promise','client','http','request','then','info','FreshdeskField,\x20%s,\x20%s','request\x20sent','debug','FreshdeskField,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x157bba,_0xda0479){var _0x57b9d3=function(_0x26d4f7){while(--_0x26d4f7){_0x157bba['push'](_0x157bba['shift']());}};_0x57b9d3(++_0xda0479);}(_0xc649,0x13e));var _0x9c64=function(_0x40a7d3,_0x42acda){_0x40a7d3=_0x40a7d3-0x0;var _0x3393f4=_0xc649[_0x40a7d3];return _0x3393f4;};'use strict';var _=require(_0x9c64('0x0'));var util=require(_0x9c64('0x1'));var moment=require(_0x9c64('0x2'));var BPromise=require('bluebird');var rs=require(_0x9c64('0x3'));var fs=require('fs');var Redis=require(_0x9c64('0x4'));var db=require(_0x9c64('0x5'))['db'];var utils=require(_0x9c64('0x6'));var logger=require(_0x9c64('0x7'))(_0x9c64('0x8'));var config=require('../../config/environment');var jayson=require(_0x9c64('0x9'));var client=jayson[_0x9c64('0xa')][_0x9c64('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x21c4c3,_0x157fc5,_0x4b4b3c){return new BPromise(function(_0x8201a7,_0x3481ce){return client[_0x9c64('0xc')](_0x21c4c3,_0x4b4b3c)[_0x9c64('0xd')](function(_0xd5ca1b){logger[_0x9c64('0xe')](_0x9c64('0xf'),_0x157fc5,_0x9c64('0x10'));logger[_0x9c64('0x11')](_0x9c64('0x12'),_0x157fc5,'request\x20sent',JSON[_0x9c64('0x13')](_0xd5ca1b));if(_0xd5ca1b['error']){if(_0xd5ca1b['error'][_0x9c64('0x14')]===0x1f4){logger[_0x9c64('0x15')](_0x9c64('0xf'),_0x157fc5,_0xd5ca1b[_0x9c64('0x15')][_0x9c64('0x16')]);return _0x3481ce(_0xd5ca1b[_0x9c64('0x15')][_0x9c64('0x16')]);}logger[_0x9c64('0x15')](_0x9c64('0xf'),_0x157fc5,_0xd5ca1b[_0x9c64('0x15')][_0x9c64('0x16')]);return _0x8201a7(_0xd5ca1b[_0x9c64('0x15')]['message']);}else{logger[_0x9c64('0xe')](_0x9c64('0xf'),_0x157fc5,_0x9c64('0x10'));_0x8201a7(_0xd5ca1b[_0x9c64('0x17')][_0x9c64('0x16')]);}})[_0x9c64('0x18')](function(_0x3b6f58){logger[_0x9c64('0x15')](_0x9c64('0xf'),_0x157fc5,_0x3b6f58);_0x3481ce(_0x3b6f58);});});}
\ No newline at end of file
index c2fe4ce..b4e54d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x557b92,_0x5d42e5){var _0x17aa04=function(_0x2821a2){while(--_0x2821a2){_0x557b92['push'](_0x557b92['shift']());}};_0x17aa04(++_0x5d42e5);}(_0x36ee,0xe8));var _0xe36e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x36ee[_0x1facfa];return _0x9ec701;};'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
+var _0xab40=['../../components/interaction/service','../../config/environment','isAuthenticated','get','/:id','show','getConfigurations','/:id/fields','getFields','post','create','put','update','delete','destroy','exports','multer','util','Router','fs-extra','../../components/auth/service'];(function(_0x346737,_0x3e6081){var _0x1ade2e=function(_0x15e50e){while(--_0x15e50e){_0x346737['push'](_0x346737['shift']());}};_0x1ade2e(++_0x3e6081);}(_0xab40,0xcd));var _0x0ab4=function(_0x2575a3,_0xf80329){_0x2575a3=_0x2575a3-0x0;var _0x6b1bd0=_0xab40[_0x2575a3];return _0x6b1bd0;};'use strict';var multer=require(_0x0ab4('0x0'));var util=require(_0x0ab4('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x0ab4('0x2')]();var fs_extra=require(_0x0ab4('0x3'));var auth=require(_0x0ab4('0x4'));var interaction=require(_0x0ab4('0x5'));var config=require(_0x0ab4('0x6'));var controller=require('./intFreshsalesAccount.controller');router['get']('/',auth[_0x0ab4('0x7')](),controller['index']);router[_0x0ab4('0x8')](_0x0ab4('0x9'),auth[_0x0ab4('0x7')](),controller[_0x0ab4('0xa')]);router['get']('/:id/configurations',auth['isAuthenticated'](),controller[_0x0ab4('0xb')]);router[_0x0ab4('0x8')](_0x0ab4('0xc'),auth[_0x0ab4('0x7')](),controller[_0x0ab4('0xd')]);router[_0x0ab4('0xe')]('/',auth[_0x0ab4('0x7')](),controller[_0x0ab4('0xf')]);router['post']('/:id/configurations',auth[_0x0ab4('0x7')](),controller['addConfiguration']);router[_0x0ab4('0x10')](_0x0ab4('0x9'),auth[_0x0ab4('0x7')](),controller[_0x0ab4('0x11')]);router[_0x0ab4('0x12')](_0x0ab4('0x9'),auth[_0x0ab4('0x7')](),controller[_0x0ab4('0x13')]);module[_0x0ab4('0x14')]=router;
\ No newline at end of file
index 3258050..5fd2227 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x065e=['sequelize','STRING','username'];(function(_0x2134b7,_0x1eb5e2){var _0x6c5914=function(_0x1da201){while(--_0x1da201){_0x2134b7['push'](_0x2134b7['shift']());}};_0x6c5914(++_0x1eb5e2);}(_0x065e,0x1a7));var _0xe065=function(_0x18211c,_0x5da85f){_0x18211c=_0x18211c-0x0;var _0x519e10=_0x065e[_0x18211c];return _0x519e10;};'use strict';var Sequelize=require(_0xe065('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0xe065('0x1')],'unique':_0xe065('0x2')},'apiKey':{'type':Sequelize[_0xe065('0x1')]},'remoteUri':{'type':Sequelize['STRING'],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xe065('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x4b17=['username','sequelize','STRING'];(function(_0x8fbc56,_0x3b8afc){var _0x26f4ab=function(_0x104fcb){while(--_0x104fcb){_0x8fbc56['push'](_0x8fbc56['shift']());}};_0x26f4ab(++_0x3b8afc);}(_0x4b17,0x10f));var _0x74b1=function(_0x47aa64,_0xfb8a07){_0x47aa64=_0x47aa64-0x0;var _0x549c7a=_0x4b17[_0x47aa64];return _0x549c7a;};'use strict';var Sequelize=require(_0x74b1('0x0'));module['exports']={'name':{'type':Sequelize[_0x74b1('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x74b1('0x1')],'unique':_0x74b1('0x2')},'apiKey':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x74b1('0x1')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]}};
\ No newline at end of file
index fcb3a38..8bafc64 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd00=['sox','ejs','fs-extra','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','end','status','json','undefined','limit','offset','set','apply','reject','save','update','then','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','pick','filter','merge','options','where','FreshsalesAccount','count','findAll','rows','catch','show','includeAll','include','find','create','body','params','destroy','getConfigurations','findOne','FreshsalesConfiguration','addConfiguration','AccountId','Subjects','getSubjects','channel','getDescriptions','FreshsalesField','Descriptions','getFields','username','remoteUri','slice','substring','GET','format','/api/selector/owners','apiKey','users','email','Requested\x20Resource\x20not\x20Found','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xdd00,0x19d));var _0x0dd0=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdd00[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x0dd0('0x0'));var jsonpatch=require(_0x0dd0('0x1'));var rp=require(_0x0dd0('0x2'));var moment=require(_0x0dd0('0x3'));var BPromise=require(_0x0dd0('0x4'));var Mustache=require('mustache');var util=require(_0x0dd0('0x5'));var path=require(_0x0dd0('0x6'));var sox=require(_0x0dd0('0x7'));var csv=require('to-csv');var ejs=require(_0x0dd0('0x8'));var fs=require('fs');var fs_extra=require(_0x0dd0('0x9'));var _=require('lodash');var squel=require(_0x0dd0('0xa'));var crypto=require('crypto');var jsforce=require(_0x0dd0('0xb'));var deskjs=require(_0x0dd0('0xc'));var toCsv=require(_0x0dd0('0xd'));var querystring=require(_0x0dd0('0xe'));var Papa=require(_0x0dd0('0xf'));var Redis=require(_0x0dd0('0x10'));var authService=require(_0x0dd0('0x11'));var qs=require(_0x0dd0('0x12'));var as=require(_0x0dd0('0x13'));var hardwareService=require(_0x0dd0('0x14'));var logger=require('../../config/logger')(_0x0dd0('0x15'));var utils=require(_0x0dd0('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x0dd0('0x17'));var db=require(_0x0dd0('0x18'))['db'];var integrations=require(_0x0dd0('0x19'));function respondWithStatusCode(_0x4e668b,_0x3a446c){_0x3a446c=_0x3a446c||0xcc;return function(_0x46b442){if(_0x46b442){return _0x4e668b['sendStatus'](_0x3a446c);}return _0x4e668b['status'](_0x3a446c)[_0x0dd0('0x1a')]();};}function respondWithResult(_0x893503,_0x2892f6){_0x2892f6=_0x2892f6||0xc8;return function(_0x52cf62){if(_0x52cf62){return _0x893503[_0x0dd0('0x1b')](_0x2892f6)[_0x0dd0('0x1c')](_0x52cf62);}};}function respondWithFilteredResult(_0x52ce36,_0xcfeb95){return function(_0x63d317){if(_0x63d317){var _0x43533b=typeof _0xcfeb95['offset']===_0x0dd0('0x1d')&&typeof _0xcfeb95[_0x0dd0('0x1e')]===_0x0dd0('0x1d');var _0x2e2dab=_0x63d317['count'];var _0x1435e9=_0x43533b?0x0:_0xcfeb95[_0x0dd0('0x1f')];var _0x510405=_0x43533b?_0x63d317['count']:_0xcfeb95[_0x0dd0('0x1f')]+_0xcfeb95['limit'];var _0x347cca;if(_0x510405>=_0x2e2dab){_0x510405=_0x2e2dab;_0x347cca=0xc8;}else{_0x347cca=0xce;}_0x52ce36[_0x0dd0('0x1b')](_0x347cca);return _0x52ce36[_0x0dd0('0x20')]('Content-Range',_0x1435e9+'-'+_0x510405+'/'+_0x2e2dab)[_0x0dd0('0x1c')](_0x63d317);}return null;};}function patchUpdates(_0x3cf5d2){return function(_0x308a5b){try{jsonpatch[_0x0dd0('0x21')](_0x308a5b,_0x3cf5d2,!![]);}catch(_0x21d23c){return BPromise[_0x0dd0('0x22')](_0x21d23c);}return _0x308a5b[_0x0dd0('0x23')]();};}function saveUpdates(_0x181480,_0x434b85){return function(_0x49910c){if(_0x49910c){return _0x49910c[_0x0dd0('0x24')](_0x181480)[_0x0dd0('0x25')](function(_0x1ac32b){return _0x1ac32b;});}return null;};}function removeEntity(_0x1bd2fd,_0x4679b3){return function(_0x1689e2){if(_0x1689e2){return _0x1689e2['destroy']()[_0x0dd0('0x25')](function(){_0x1bd2fd['status'](0xcc)[_0x0dd0('0x1a')]();});}};}function handleEntityNotFound(_0x449af9,_0x4d4f01){return function(_0x25aebe){if(!_0x25aebe){_0x449af9[_0x0dd0('0x26')](0x194);}return _0x25aebe;};}function handleError(_0x563a73,_0x5174d5){_0x5174d5=_0x5174d5||0x1f4;return function(_0x3ba7cf){logger[_0x0dd0('0x27')](_0x3ba7cf[_0x0dd0('0x28')]);if(_0x3ba7cf[_0x0dd0('0x29')]){delete _0x3ba7cf[_0x0dd0('0x29')];}_0x563a73['status'](_0x5174d5)[_0x0dd0('0x2a')](_0x3ba7cf);};}exports[_0x0dd0('0x2b')]=function(_0x2495cf,_0x2a1b73){var _0x5eefbd={},_0x4959cb={},_0x5df5c5={'count':0x0,'rows':[]};var _0x305d70=_[_0x0dd0('0x2c')](db['FreshsalesAccount'][_0x0dd0('0x2d')],function(_0x463bfc){return{'name':_0x463bfc[_0x0dd0('0x2e')],'type':_0x463bfc[_0x0dd0('0x2f')][_0x0dd0('0x30')]};});_0x4959cb[_0x0dd0('0x31')]=_[_0x0dd0('0x2c')](_0x305d70,_0x0dd0('0x29'));_0x4959cb[_0x0dd0('0x32')]=_[_0x0dd0('0x33')](_0x2495cf[_0x0dd0('0x32')]);_0x4959cb[_0x0dd0('0x34')]=_[_0x0dd0('0x35')](_0x4959cb[_0x0dd0('0x31')],_0x4959cb[_0x0dd0('0x32')]);_0x5eefbd[_0x0dd0('0x36')]=_[_0x0dd0('0x35')](_0x4959cb[_0x0dd0('0x31')],qs[_0x0dd0('0x37')](_0x2495cf[_0x0dd0('0x32')][_0x0dd0('0x37')]));_0x5eefbd[_0x0dd0('0x36')]=_0x5eefbd[_0x0dd0('0x36')][_0x0dd0('0x38')]?_0x5eefbd[_0x0dd0('0x36')]:_0x4959cb[_0x0dd0('0x31')];if(!_0x2495cf[_0x0dd0('0x32')][_0x0dd0('0x39')](_0x0dd0('0x3a'))){_0x5eefbd['limit']=qs['limit'](_0x2495cf['query'][_0x0dd0('0x1e')]);_0x5eefbd[_0x0dd0('0x1f')]=qs[_0x0dd0('0x1f')](_0x2495cf[_0x0dd0('0x32')][_0x0dd0('0x1f')]);}_0x5eefbd['order']=qs[_0x0dd0('0x3b')](_0x2495cf['query'][_0x0dd0('0x3b')]);_0x5eefbd['where']=qs['filters'](_[_0x0dd0('0x3c')](_0x2495cf[_0x0dd0('0x32')],_0x4959cb['filters']),_0x305d70);if(_0x2495cf[_0x0dd0('0x32')][_0x0dd0('0x3d')]){_0x5eefbd['where']=_[_0x0dd0('0x3e')](_0x5eefbd['where'],{'$or':_[_0x0dd0('0x2c')](_0x305d70,function(_0xe38247){if(_0xe38247[_0x0dd0('0x2f')]!=='VIRTUAL'){var _0x5c13a6={};_0x5c13a6[_0xe38247[_0x0dd0('0x29')]]={'$like':'%'+_0x2495cf[_0x0dd0('0x32')][_0x0dd0('0x3d')]+'%'};return _0x5c13a6;}})});}_0x5eefbd=_[_0x0dd0('0x3e')]({},_0x5eefbd,_0x2495cf[_0x0dd0('0x3f')]);var _0x53b9bc={'where':_0x5eefbd[_0x0dd0('0x40')]};return db[_0x0dd0('0x41')][_0x0dd0('0x42')](_0x53b9bc)[_0x0dd0('0x25')](function(_0x43ac5a){_0x5df5c5[_0x0dd0('0x42')]=_0x43ac5a;if(_0x2495cf[_0x0dd0('0x32')]['includeAll']){_0x5eefbd['include']=[{'all':!![]}];}return db[_0x0dd0('0x41')][_0x0dd0('0x43')](_0x5eefbd);})[_0x0dd0('0x25')](function(_0x117b82){_0x5df5c5[_0x0dd0('0x44')]=_0x117b82;return _0x5df5c5;})[_0x0dd0('0x25')](respondWithFilteredResult(_0x2a1b73,_0x5eefbd))[_0x0dd0('0x45')](handleError(_0x2a1b73,null));};exports[_0x0dd0('0x46')]=function(_0x32a2ac,_0x55945d){var _0x327cfa={'raw':![],'where':{'id':_0x32a2ac['params']['id']}},_0x56326b={};_0x56326b[_0x0dd0('0x31')]=_[_0x0dd0('0x33')](db[_0x0dd0('0x41')]['rawAttributes']);_0x56326b['query']=_['keys'](_0x32a2ac[_0x0dd0('0x32')]);_0x56326b[_0x0dd0('0x34')]=_[_0x0dd0('0x35')](_0x56326b['model'],_0x56326b[_0x0dd0('0x32')]);_0x327cfa[_0x0dd0('0x36')]=_[_0x0dd0('0x35')](_0x56326b[_0x0dd0('0x31')],qs[_0x0dd0('0x37')](_0x32a2ac[_0x0dd0('0x32')][_0x0dd0('0x37')]));_0x327cfa['attributes']=_0x327cfa[_0x0dd0('0x36')][_0x0dd0('0x38')]?_0x327cfa[_0x0dd0('0x36')]:_0x56326b['model'];if(_0x32a2ac[_0x0dd0('0x32')][_0x0dd0('0x47')]){_0x327cfa[_0x0dd0('0x48')]=[{'all':!![]}];}_0x327cfa=_[_0x0dd0('0x3e')]({},_0x327cfa,_0x32a2ac[_0x0dd0('0x3f')]);return db[_0x0dd0('0x41')][_0x0dd0('0x49')](_0x327cfa)[_0x0dd0('0x25')](handleEntityNotFound(_0x55945d,null))['then'](respondWithResult(_0x55945d,null))['catch'](handleError(_0x55945d,null));};exports['create']=function(_0x1a6921,_0x423532){return db[_0x0dd0('0x41')][_0x0dd0('0x4a')](_0x1a6921[_0x0dd0('0x4b')],{})[_0x0dd0('0x25')](respondWithResult(_0x423532,0xc9))[_0x0dd0('0x45')](handleError(_0x423532,null));};exports['update']=function(_0x5556e8,_0x27ce6e){if(_0x5556e8['body']['id']){delete _0x5556e8['body']['id'];}return db[_0x0dd0('0x41')][_0x0dd0('0x49')]({'where':{'id':_0x5556e8[_0x0dd0('0x4c')]['id']}})[_0x0dd0('0x25')](handleEntityNotFound(_0x27ce6e,null))[_0x0dd0('0x25')](saveUpdates(_0x5556e8[_0x0dd0('0x4b')],null))[_0x0dd0('0x25')](respondWithResult(_0x27ce6e,null))[_0x0dd0('0x45')](handleError(_0x27ce6e,null));};exports[_0x0dd0('0x4d')]=function(_0x5961e4,_0x125ea4){return db[_0x0dd0('0x41')][_0x0dd0('0x49')]({'where':{'id':_0x5961e4[_0x0dd0('0x4c')]['id']}})[_0x0dd0('0x25')](handleEntityNotFound(_0x125ea4,null))[_0x0dd0('0x25')](removeEntity(_0x125ea4,null))[_0x0dd0('0x45')](handleError(_0x125ea4,null));};exports[_0x0dd0('0x4e')]=function(_0x1122d3,_0x49c5d3,_0x228aab){var _0x3cb136={};var _0x5433b6={};var _0x2db552;var _0x13b714;return db[_0x0dd0('0x41')][_0x0dd0('0x4f')]({'where':{'id':_0x1122d3[_0x0dd0('0x4c')]['id']}})[_0x0dd0('0x25')](handleEntityNotFound(_0x49c5d3,null))[_0x0dd0('0x25')](function(_0x3778cf){if(_0x3778cf){_0x2db552=_0x3778cf;_0x5433b6['model']=_['keys'](db[_0x0dd0('0x50')]['rawAttributes']);_0x5433b6['query']=_[_0x0dd0('0x33')](_0x1122d3['query']);_0x5433b6['filters']=_[_0x0dd0('0x35')](_0x5433b6[_0x0dd0('0x31')],_0x5433b6[_0x0dd0('0x32')]);_0x3cb136[_0x0dd0('0x36')]=_['intersection'](_0x5433b6[_0x0dd0('0x31')],qs[_0x0dd0('0x37')](_0x1122d3['query']['fields']));_0x3cb136['attributes']=_0x3cb136[_0x0dd0('0x36')][_0x0dd0('0x38')]?_0x3cb136[_0x0dd0('0x36')]:_0x5433b6[_0x0dd0('0x31')];_0x3cb136['order']=qs[_0x0dd0('0x3b')](_0x1122d3[_0x0dd0('0x32')]['sort']);_0x3cb136[_0x0dd0('0x40')]=qs['filters'](_[_0x0dd0('0x3c')](_0x1122d3['query'],_0x5433b6['filters']));if(_0x1122d3[_0x0dd0('0x32')][_0x0dd0('0x3d')]){_0x3cb136[_0x0dd0('0x40')]=_[_0x0dd0('0x3e')](_0x3cb136['where'],{'$or':_[_0x0dd0('0x2c')](_0x3cb136[_0x0dd0('0x36')],function(_0x53e179){var _0x32beac={};_0x32beac[_0x53e179]={'$like':'%'+_0x1122d3[_0x0dd0('0x32')][_0x0dd0('0x3d')]+'%'};return _0x32beac;})});}_0x3cb136=_[_0x0dd0('0x3e')]({},_0x3cb136,_0x1122d3[_0x0dd0('0x3f')]);return _0x2db552['getConfigurations'](_0x3cb136);}})[_0x0dd0('0x25')](function(_0x2b1021){if(_0x2b1021){_0x13b714=_0x2b1021[_0x0dd0('0x38')];if(!_0x1122d3['query'][_0x0dd0('0x39')](_0x0dd0('0x3a'))){_0x3cb136[_0x0dd0('0x1e')]=qs['limit'](_0x1122d3[_0x0dd0('0x32')][_0x0dd0('0x1e')]);_0x3cb136['offset']=qs['offset'](_0x1122d3['query']['offset']);}return _0x2db552[_0x0dd0('0x4e')](_0x3cb136);}})[_0x0dd0('0x25')](function(_0x52036e){if(_0x52036e){return _0x52036e?{'count':_0x13b714,'rows':_0x52036e}:null;}})[_0x0dd0('0x25')](respondWithResult(_0x49c5d3,null))[_0x0dd0('0x45')](handleError(_0x49c5d3,null));};exports[_0x0dd0('0x51')]=function(_0x1c6843,_0x4aef33,_0x12267a){if(_0x1c6843['body']['id']){delete _0x1c6843[_0x0dd0('0x4b')]['id'];}return db[_0x0dd0('0x41')][_0x0dd0('0x4f')]({'where':{'id':_0x1c6843['params']['id']}})[_0x0dd0('0x25')](handleEntityNotFound(_0x4aef33,null))['then'](function(_0x459718){if(_0x459718){_0x1c6843[_0x0dd0('0x4b')][_0x0dd0('0x52')]=_0x459718['id'];_0x1c6843[_0x0dd0('0x4b')][_0x0dd0('0x53')]=integrations[_0x0dd0('0x54')](_0x1c6843[_0x0dd0('0x4b')][_0x0dd0('0x55')],_0x1c6843[_0x0dd0('0x4b')][_0x0dd0('0x2f')]);_0x1c6843[_0x0dd0('0x4b')]['Descriptions']=integrations[_0x0dd0('0x56')](_0x1c6843[_0x0dd0('0x4b')]['channel'],_0x1c6843[_0x0dd0('0x4b')][_0x0dd0('0x2f')]);return db['FreshsalesConfiguration'][_0x0dd0('0x4a')](_0x1c6843[_0x0dd0('0x4b')],{'include':[{'model':db[_0x0dd0('0x57')],'as':_0x0dd0('0x53')},{'model':db['FreshsalesField'],'as':_0x0dd0('0x58')}]});}return null;})[_0x0dd0('0x25')](respondWithResult(_0x4aef33,null))[_0x0dd0('0x45')](handleError(_0x4aef33,null));};exports[_0x0dd0('0x59')]=function(_0x311710,_0x369c34,_0x33ad47){var _0xde44f2='';var _0x78e064='';return db['FreshsalesAccount'][_0x0dd0('0x4f')]({'where':{'id':_0x311710[_0x0dd0('0x4c')]['id']},'attributes':['id',_0x0dd0('0x5a'),'remoteUri','apiKey']})[_0x0dd0('0x25')](handleEntityNotFound(_0x369c34,null))[_0x0dd0('0x25')](function(_0x24d970){if(_0x24d970){_0x78e064=_0x24d970[_0x0dd0('0x5a')];_0xde44f2=_0x24d970['remoteUri'];var _0x4b0378=_0x24d970[_0x0dd0('0x5b')][_0x0dd0('0x5c')](-0x1);if(_0x4b0378==='/'){_0xde44f2=_0xde44f2[_0x0dd0('0x5d')](0x0,_0xde44f2['lastIndexOf'](_0x4b0378));}return rp({'method':_0x0dd0('0x5e'),'uri':util[_0x0dd0('0x5f')]('%s%s',_0xde44f2,_0x0dd0('0x60')),'headers':{'Authorization':'Token\x20token='+_0x24d970[_0x0dd0('0x61')]},'json':!![]});}})[_0x0dd0('0x25')](function(_0x20d967){if(_0x20d967){var _0x448061=_0x20d967[_0x0dd0('0x62')];var _0x2e56fb=![];var _0x18c519=null;for(_0x18c519=0x0;_0x18c519<_0x448061[_0x0dd0('0x38')];_0x18c519++){if(_0x448061[_0x18c519][_0x0dd0('0x63')]===_0x78e064){_0x2e56fb=!![];}}if(_0x2e56fb){return!![];}else{throw new Error({'statusCode':0x194,'message':_0x0dd0('0x64')});}}})['then'](respondWithResult(_0x369c34,null))[_0x0dd0('0x45')](function(_0x1681aa){var _0x4b6991=_0x311710[_0x0dd0('0x32')][_0x0dd0('0x65')]?0x1f4:_0x1681aa[_0x0dd0('0x66')]||0x1f4;logger[_0x0dd0('0x27')](_0x0dd0('0x67'),'getFields',_0x4b6991,JSON[_0x0dd0('0x68')](_0x1681aa));delete _0x1681aa['name'];if(_0x4b6991===0x191){_0x4b6991=0x190;}_0x369c34['status'](_0x4b6991)[_0x0dd0('0x2a')](_0x311710[_0x0dd0('0x32')][_0x0dd0('0x65')]?{'message':'Wrong\x20credentials','statusCode':_0x1681aa[_0x0dd0('0x66')]}:_0x1681aa);});};
\ No newline at end of file
+var _0x520c=['stack','name','send','index','map','FreshsalesAccount','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','merge','type','options','includeAll','include','findAll','show','params','length','find','catch','create','body','update','getConfigurations','filter','addConfiguration','AccountId','getSubjects','channel','Descriptions','getDescriptions','FreshsalesConfiguration','Subjects','FreshsalesField','getFields','remoteUri','apiKey','slice','substring','lastIndexOf','GET','format','%s%s','/api/selector/owners','Token\x20token=','users','email','getFields,\x20%s,\x20%s,\x20%s','stringify','test','Wrong\x20credentials','statusCode','rimraf','request-promise','moment','util','path','sox','to-csv','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/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','reject','then','destroy','error'];(function(_0x1fe8be,_0x5e7860){var _0x1449bb=function(_0x17b23e){while(--_0x17b23e){_0x1fe8be['push'](_0x1fe8be['shift']());}};_0x1449bb(++_0x5e7860);}(_0x520c,0x10e));var _0xc520=function(_0x5192de,_0x4e91cd){_0x5192de=_0x5192de-0x0;var _0x4e287e=_0x520c[_0x5192de];return _0x4e287e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc520('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xc520('0x1'));var moment=require(_0xc520('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xc520('0x3'));var path=require(_0xc520('0x4'));var sox=require(_0xc520('0x5'));var csv=require(_0xc520('0x6'));var ejs=require(_0xc520('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc520('0x8'));var squel=require('squel');var crypto=require(_0xc520('0x9'));var jsforce=require(_0xc520('0xa'));var deskjs=require(_0xc520('0xb'));var toCsv=require(_0xc520('0x6'));var querystring=require(_0xc520('0xc'));var Papa=require(_0xc520('0xd'));var Redis=require(_0xc520('0xe'));var authService=require(_0xc520('0xf'));var qs=require(_0xc520('0x10'));var as=require(_0xc520('0x11'));var hardwareService=require(_0xc520('0x12'));var logger=require(_0xc520('0x13'))(_0xc520('0x14'));var utils=require('../../config/utils');var config=require(_0xc520('0x15'));var licenseUtil=require(_0xc520('0x16'));var db=require(_0xc520('0x17'))['db'];var integrations=require(_0xc520('0x18'));function respondWithStatusCode(_0x44df8d,_0x258499){_0x258499=_0x258499||0xcc;return function(_0x22a20a){if(_0x22a20a){return _0x44df8d[_0xc520('0x19')](_0x258499);}return _0x44df8d[_0xc520('0x1a')](_0x258499)[_0xc520('0x1b')]();};}function respondWithResult(_0x103579,_0x931e33){_0x931e33=_0x931e33||0xc8;return function(_0x2b5b79){if(_0x2b5b79){return _0x103579[_0xc520('0x1a')](_0x931e33)[_0xc520('0x1c')](_0x2b5b79);}};}function respondWithFilteredResult(_0xec59ce,_0x4ce17d){return function(_0x309ce5){if(_0x309ce5){var _0x59afb1=typeof _0x4ce17d['offset']===_0xc520('0x1d')&&typeof _0x4ce17d[_0xc520('0x1e')]===_0xc520('0x1d');var _0x47265b=_0x309ce5[_0xc520('0x1f')];var _0x537395=_0x59afb1?0x0:_0x4ce17d['offset'];var _0x558b52=_0x59afb1?_0x309ce5['count']:_0x4ce17d[_0xc520('0x20')]+_0x4ce17d[_0xc520('0x1e')];var _0xe23559;if(_0x558b52>=_0x47265b){_0x558b52=_0x47265b;_0xe23559=0xc8;}else{_0xe23559=0xce;}_0xec59ce[_0xc520('0x1a')](_0xe23559);return _0xec59ce[_0xc520('0x21')](_0xc520('0x22'),_0x537395+'-'+_0x558b52+'/'+_0x47265b)[_0xc520('0x1c')](_0x309ce5);}return null;};}function patchUpdates(_0x26e03a){return function(_0x2d250d){try{jsonpatch['apply'](_0x2d250d,_0x26e03a,!![]);}catch(_0x43ec0b){return BPromise[_0xc520('0x23')](_0x43ec0b);}return _0x2d250d['save']();};}function saveUpdates(_0x383c74,_0x5dd787){return function(_0x5a0305){if(_0x5a0305){return _0x5a0305['update'](_0x383c74)[_0xc520('0x24')](function(_0x1b4095){return _0x1b4095;});}return null;};}function removeEntity(_0x27c19e,_0xf161e3){return function(_0x22d974){if(_0x22d974){return _0x22d974[_0xc520('0x25')]()[_0xc520('0x24')](function(){_0x27c19e[_0xc520('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x13faf5,_0x1c7888){return function(_0x39b6c6){if(!_0x39b6c6){_0x13faf5[_0xc520('0x19')](0x194);}return _0x39b6c6;};}function handleError(_0x1182d5,_0x28b64c){_0x28b64c=_0x28b64c||0x1f4;return function(_0x87ea8a){logger[_0xc520('0x26')](_0x87ea8a[_0xc520('0x27')]);if(_0x87ea8a[_0xc520('0x28')]){delete _0x87ea8a[_0xc520('0x28')];}_0x1182d5[_0xc520('0x1a')](_0x28b64c)[_0xc520('0x29')](_0x87ea8a);};}exports[_0xc520('0x2a')]=function(_0xed93cb,_0x39083a){var _0x251433={},_0x144314={},_0x141b14={'count':0x0,'rows':[]};var _0xb799e6=_[_0xc520('0x2b')](db[_0xc520('0x2c')][_0xc520('0x2d')],function(_0x4b074b){return{'name':_0x4b074b[_0xc520('0x2e')],'type':_0x4b074b['type'][_0xc520('0x2f')]};});_0x144314[_0xc520('0x30')]=_[_0xc520('0x2b')](_0xb799e6,_0xc520('0x28'));_0x144314['query']=_[_0xc520('0x31')](_0xed93cb[_0xc520('0x32')]);_0x144314[_0xc520('0x33')]=_[_0xc520('0x34')](_0x144314['model'],_0x144314['query']);_0x251433[_0xc520('0x35')]=_[_0xc520('0x34')](_0x144314[_0xc520('0x30')],qs[_0xc520('0x36')](_0xed93cb[_0xc520('0x32')][_0xc520('0x36')]));_0x251433[_0xc520('0x35')]=_0x251433[_0xc520('0x35')]['length']?_0x251433[_0xc520('0x35')]:_0x144314['model'];if(!_0xed93cb[_0xc520('0x32')][_0xc520('0x37')]('nolimit')){_0x251433[_0xc520('0x1e')]=qs[_0xc520('0x1e')](_0xed93cb[_0xc520('0x32')]['limit']);_0x251433[_0xc520('0x20')]=qs['offset'](_0xed93cb[_0xc520('0x32')][_0xc520('0x20')]);}_0x251433[_0xc520('0x38')]=qs[_0xc520('0x39')](_0xed93cb[_0xc520('0x32')][_0xc520('0x39')]);_0x251433[_0xc520('0x3a')]=qs[_0xc520('0x33')](_[_0xc520('0x3b')](_0xed93cb[_0xc520('0x32')],_0x144314[_0xc520('0x33')]),_0xb799e6);if(_0xed93cb['query']['filter']){_0x251433[_0xc520('0x3a')]=_[_0xc520('0x3c')](_0x251433[_0xc520('0x3a')],{'$or':_[_0xc520('0x2b')](_0xb799e6,function(_0x1aa644){if(_0x1aa644[_0xc520('0x3d')]!=='VIRTUAL'){var _0x2b8ed5={};_0x2b8ed5[_0x1aa644[_0xc520('0x28')]]={'$like':'%'+_0xed93cb[_0xc520('0x32')]['filter']+'%'};return _0x2b8ed5;}})});}_0x251433=_[_0xc520('0x3c')]({},_0x251433,_0xed93cb[_0xc520('0x3e')]);var _0x2f9d32={'where':_0x251433[_0xc520('0x3a')]};return db['FreshsalesAccount']['count'](_0x2f9d32)[_0xc520('0x24')](function(_0xbdd328){_0x141b14[_0xc520('0x1f')]=_0xbdd328;if(_0xed93cb[_0xc520('0x32')][_0xc520('0x3f')]){_0x251433[_0xc520('0x40')]=[{'all':!![]}];}return db[_0xc520('0x2c')][_0xc520('0x41')](_0x251433);})[_0xc520('0x24')](function(_0x2d679d){_0x141b14['rows']=_0x2d679d;return _0x141b14;})['then'](respondWithFilteredResult(_0x39083a,_0x251433))['catch'](handleError(_0x39083a,null));};exports[_0xc520('0x42')]=function(_0x1c5ae4,_0x3c0fcc){var _0x4ec6db={'raw':![],'where':{'id':_0x1c5ae4[_0xc520('0x43')]['id']}},_0x452630={};_0x452630[_0xc520('0x30')]=_[_0xc520('0x31')](db['FreshsalesAccount']['rawAttributes']);_0x452630['query']=_[_0xc520('0x31')](_0x1c5ae4[_0xc520('0x32')]);_0x452630[_0xc520('0x33')]=_[_0xc520('0x34')](_0x452630[_0xc520('0x30')],_0x452630[_0xc520('0x32')]);_0x4ec6db['attributes']=_[_0xc520('0x34')](_0x452630[_0xc520('0x30')],qs[_0xc520('0x36')](_0x1c5ae4['query'][_0xc520('0x36')]));_0x4ec6db[_0xc520('0x35')]=_0x4ec6db['attributes'][_0xc520('0x44')]?_0x4ec6db[_0xc520('0x35')]:_0x452630[_0xc520('0x30')];if(_0x1c5ae4[_0xc520('0x32')][_0xc520('0x3f')]){_0x4ec6db[_0xc520('0x40')]=[{'all':!![]}];}_0x4ec6db=_[_0xc520('0x3c')]({},_0x4ec6db,_0x1c5ae4[_0xc520('0x3e')]);return db['FreshsalesAccount'][_0xc520('0x45')](_0x4ec6db)[_0xc520('0x24')](handleEntityNotFound(_0x3c0fcc,null))[_0xc520('0x24')](respondWithResult(_0x3c0fcc,null))[_0xc520('0x46')](handleError(_0x3c0fcc,null));};exports[_0xc520('0x47')]=function(_0x47bf15,_0x3999e7){return db['FreshsalesAccount'][_0xc520('0x47')](_0x47bf15[_0xc520('0x48')],{})['then'](respondWithResult(_0x3999e7,0xc9))[_0xc520('0x46')](handleError(_0x3999e7,null));};exports[_0xc520('0x49')]=function(_0x28175a,_0x52f7da){if(_0x28175a[_0xc520('0x48')]['id']){delete _0x28175a['body']['id'];}return db['FreshsalesAccount'][_0xc520('0x45')]({'where':{'id':_0x28175a[_0xc520('0x43')]['id']}})['then'](handleEntityNotFound(_0x52f7da,null))[_0xc520('0x24')](saveUpdates(_0x28175a[_0xc520('0x48')],null))[_0xc520('0x24')](respondWithResult(_0x52f7da,null))['catch'](handleError(_0x52f7da,null));};exports['destroy']=function(_0x386d0f,_0x5b8708){return db[_0xc520('0x2c')][_0xc520('0x45')]({'where':{'id':_0x386d0f['params']['id']}})['then'](handleEntityNotFound(_0x5b8708,null))[_0xc520('0x24')](removeEntity(_0x5b8708,null))[_0xc520('0x46')](handleError(_0x5b8708,null));};exports[_0xc520('0x4a')]=function(_0x303be2,_0x310536,_0x5ab3cd){var _0x2a4192={};var _0x34c607={};var _0x10f80d;var _0x257a4d;return db[_0xc520('0x2c')]['findOne']({'where':{'id':_0x303be2['params']['id']}})[_0xc520('0x24')](handleEntityNotFound(_0x310536,null))[_0xc520('0x24')](function(_0x4a2d44){if(_0x4a2d44){_0x10f80d=_0x4a2d44;_0x34c607[_0xc520('0x30')]=_[_0xc520('0x31')](db['FreshsalesConfiguration'][_0xc520('0x2d')]);_0x34c607[_0xc520('0x32')]=_[_0xc520('0x31')](_0x303be2[_0xc520('0x32')]);_0x34c607['filters']=_[_0xc520('0x34')](_0x34c607[_0xc520('0x30')],_0x34c607[_0xc520('0x32')]);_0x2a4192[_0xc520('0x35')]=_[_0xc520('0x34')](_0x34c607[_0xc520('0x30')],qs[_0xc520('0x36')](_0x303be2[_0xc520('0x32')]['fields']));_0x2a4192[_0xc520('0x35')]=_0x2a4192['attributes']['length']?_0x2a4192[_0xc520('0x35')]:_0x34c607[_0xc520('0x30')];_0x2a4192[_0xc520('0x38')]=qs[_0xc520('0x39')](_0x303be2[_0xc520('0x32')][_0xc520('0x39')]);_0x2a4192[_0xc520('0x3a')]=qs[_0xc520('0x33')](_['pick'](_0x303be2['query'],_0x34c607[_0xc520('0x33')]));if(_0x303be2['query']['filter']){_0x2a4192[_0xc520('0x3a')]=_[_0xc520('0x3c')](_0x2a4192[_0xc520('0x3a')],{'$or':_[_0xc520('0x2b')](_0x2a4192[_0xc520('0x35')],function(_0x119041){var _0x41dec8={};_0x41dec8[_0x119041]={'$like':'%'+_0x303be2[_0xc520('0x32')][_0xc520('0x4b')]+'%'};return _0x41dec8;})});}_0x2a4192=_[_0xc520('0x3c')]({},_0x2a4192,_0x303be2['options']);return _0x10f80d[_0xc520('0x4a')](_0x2a4192);}})[_0xc520('0x24')](function(_0xb6edfb){if(_0xb6edfb){_0x257a4d=_0xb6edfb['length'];if(!_0x303be2['query']['hasOwnProperty']('nolimit')){_0x2a4192['limit']=qs[_0xc520('0x1e')](_0x303be2['query'][_0xc520('0x1e')]);_0x2a4192[_0xc520('0x20')]=qs[_0xc520('0x20')](_0x303be2[_0xc520('0x32')][_0xc520('0x20')]);}return _0x10f80d[_0xc520('0x4a')](_0x2a4192);}})['then'](function(_0x32db87){if(_0x32db87){return _0x32db87?{'count':_0x257a4d,'rows':_0x32db87}:null;}})[_0xc520('0x24')](respondWithResult(_0x310536,null))[_0xc520('0x46')](handleError(_0x310536,null));};exports[_0xc520('0x4c')]=function(_0x4dc34d,_0xb3ee64,_0x4bd5e0){if(_0x4dc34d[_0xc520('0x48')]['id']){delete _0x4dc34d[_0xc520('0x48')]['id'];}return db[_0xc520('0x2c')]['findOne']({'where':{'id':_0x4dc34d['params']['id']}})[_0xc520('0x24')](handleEntityNotFound(_0xb3ee64,null))[_0xc520('0x24')](function(_0xedfae2){if(_0xedfae2){_0x4dc34d[_0xc520('0x48')][_0xc520('0x4d')]=_0xedfae2['id'];_0x4dc34d[_0xc520('0x48')]['Subjects']=integrations[_0xc520('0x4e')](_0x4dc34d[_0xc520('0x48')][_0xc520('0x4f')],_0x4dc34d[_0xc520('0x48')]['type']);_0x4dc34d[_0xc520('0x48')][_0xc520('0x50')]=integrations[_0xc520('0x51')](_0x4dc34d[_0xc520('0x48')][_0xc520('0x4f')],_0x4dc34d[_0xc520('0x48')][_0xc520('0x3d')]);return db[_0xc520('0x52')][_0xc520('0x47')](_0x4dc34d[_0xc520('0x48')],{'include':[{'model':db['FreshsalesField'],'as':_0xc520('0x53')},{'model':db[_0xc520('0x54')],'as':_0xc520('0x50')}]});}return null;})[_0xc520('0x24')](respondWithResult(_0xb3ee64,null))[_0xc520('0x46')](handleError(_0xb3ee64,null));};exports[_0xc520('0x55')]=function(_0x5e3f58,_0x33c806,_0xb33fa9){var _0x754b45='';var _0x199475='';return db[_0xc520('0x2c')]['findOne']({'where':{'id':_0x5e3f58[_0xc520('0x43')]['id']},'attributes':['id','username',_0xc520('0x56'),_0xc520('0x57')]})[_0xc520('0x24')](handleEntityNotFound(_0x33c806,null))[_0xc520('0x24')](function(_0xe8d0ca){if(_0xe8d0ca){_0x199475=_0xe8d0ca['username'];_0x754b45=_0xe8d0ca[_0xc520('0x56')];var _0x1ec254=_0xe8d0ca[_0xc520('0x56')][_0xc520('0x58')](-0x1);if(_0x1ec254==='/'){_0x754b45=_0x754b45[_0xc520('0x59')](0x0,_0x754b45[_0xc520('0x5a')](_0x1ec254));}return rp({'method':_0xc520('0x5b'),'uri':util[_0xc520('0x5c')](_0xc520('0x5d'),_0x754b45,_0xc520('0x5e')),'headers':{'Authorization':_0xc520('0x5f')+_0xe8d0ca[_0xc520('0x57')]},'json':!![]});}})[_0xc520('0x24')](function(_0x3df8f0){if(_0x3df8f0){var _0x2d66aa=_0x3df8f0[_0xc520('0x60')];var _0x5d0a08=![];var _0x35974a=null;for(_0x35974a=0x0;_0x35974a<_0x2d66aa[_0xc520('0x44')];_0x35974a++){if(_0x2d66aa[_0x35974a][_0xc520('0x61')]===_0x199475){_0x5d0a08=!![];}}if(_0x5d0a08){return!![];}else{throw new Error({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}})[_0xc520('0x24')](respondWithResult(_0x33c806,null))[_0xc520('0x46')](function(_0x2bcd3c){var _0x27b176=_0x5e3f58[_0xc520('0x32')]['test']?0x1f4:_0x2bcd3c['statusCode']||0x1f4;logger['error'](_0xc520('0x62'),_0xc520('0x55'),_0x27b176,JSON[_0xc520('0x63')](_0x2bcd3c));delete _0x2bcd3c['name'];if(_0x27b176===0x191){_0x27b176=0x190;}_0x33c806[_0xc520('0x1a')](_0x27b176)[_0xc520('0x29')](_0x5e3f58[_0xc520('0x32')][_0xc520('0x64')]?{'message':_0xc520('0x65'),'statusCode':_0x2bcd3c[_0xc520('0x66')]}:_0x2bcd3c);});};
\ No newline at end of file
index f595142..a3829ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e24=['request-promise','path','../../config/environment','./intFreshsalesAccount.attributes','../../components/integrations/configuration','exports','define','int_freshsales_accounts','lodash','util','../../config/logger','api','moment'];(function(_0x4d82ea,_0x4d459f){var _0x257f4a=function(_0x424c4f){while(--_0x424c4f){_0x4d82ea['push'](_0x4d82ea['shift']());}};_0x257f4a(++_0x4d459f);}(_0x3e24,0x167));var _0x43e2=function(_0x50d086,_0x4e96e0){_0x50d086=_0x50d086-0x0;var _0x2e9e27=_0x3e24[_0x50d086];return _0x2e9e27;};'use strict';var _=require(_0x43e2('0x0'));var util=require(_0x43e2('0x1'));var logger=require(_0x43e2('0x2'))(_0x43e2('0x3'));var moment=require(_0x43e2('0x4'));var BPromise=require('bluebird');var rp=require(_0x43e2('0x5'));var fs=require('fs');var path=require(_0x43e2('0x6'));var rimraf=require('rimraf');var config=require(_0x43e2('0x7'));var attributes=require(_0x43e2('0x8'));var integrations=require(_0x43e2('0x9'));module[_0x43e2('0xa')]=function(_0x43b5a7,_0x121e2e){return _0x43b5a7[_0x43e2('0xb')]('FreshsalesAccount',attributes,{'tableName':_0x43e2('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1261=['util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intFreshsalesAccount.attributes','FreshsalesAccount','int_freshsales_accounts'];(function(_0x28242f,_0x3560ce){var _0x15f5fe=function(_0x24cf5f){while(--_0x24cf5f){_0x28242f['push'](_0x28242f['shift']());}};_0x15f5fe(++_0x3560ce);}(_0x1261,0x144));var _0x1126=function(_0x15fa77,_0x93eaff){_0x15fa77=_0x15fa77-0x0;var _0x1385ff=_0x1261[_0x15fa77];return _0x1385ff;};'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'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x40ba58,_0x907180){return _0x40ba58['define'](_0x1126('0xa'),attributes,{'tableName':_0x1126('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 862a043..fdf82d0 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(_0x4cf98e,_0xba4b79){var _0x1623ac=function(_0x459bc0){while(--_0x459bc0){_0x4cf98e['push'](_0x4cf98e['shift']());}};_0x1623ac(++_0xba4b79);}(_0xdf55,0x83));var _0x5df5=function(_0x237398,_0xc0ef22){_0x237398=_0x237398-0x0;var _0x5598de=_0xdf55[_0x237398];return _0x5598de;};'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 _0x5c3c=['find','raw','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','FreshsalesAccount,\x20%s,\x20%s','request\x20sent','FreshsalesAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','GetFreshsalesAccount','FreshsalesAccount','findAll','options','where','limit','include','map','model','attributes','debug','catch','ShowFreshsalesAccount'];(function(_0x1d5966,_0x196f2d){var _0x261bd5=function(_0x361952){while(--_0x361952){_0x1d5966['push'](_0x1d5966['shift']());}};_0x261bd5(++_0x196f2d);}(_0x5c3c,0x132));var _0xc5c3=function(_0x9fd887,_0x47f76c){_0x9fd887=_0x9fd887-0x0;var _0x1a54ab=_0x5c3c[_0x9fd887];return _0x1a54ab;};'use strict';var _=require(_0xc5c3('0x0'));var util=require(_0xc5c3('0x1'));var moment=require(_0xc5c3('0x2'));var BPromise=require(_0xc5c3('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc5c3('0x4'));var db=require(_0xc5c3('0x5'))['db'];var utils=require(_0xc5c3('0x6'));var logger=require(_0xc5c3('0x7'))(_0xc5c3('0x8'));var config=require(_0xc5c3('0x9'));var jayson=require(_0xc5c3('0xa'));var client=jayson[_0xc5c3('0xb')][_0xc5c3('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x5a392b,_0x4b8404,_0x591f7d){return new BPromise(function(_0x723c31,_0x522be1){return client['request'](_0x5a392b,_0x591f7d)[_0xc5c3('0xd')](function(_0x46e2c1){logger['info'](_0xc5c3('0xe'),_0x4b8404,_0xc5c3('0xf'));logger['debug'](_0xc5c3('0x10'),_0x4b8404,_0xc5c3('0xf'),JSON[_0xc5c3('0x11')](_0x46e2c1));if(_0x46e2c1['error']){if(_0x46e2c1[_0xc5c3('0x12')][_0xc5c3('0x13')]===0x1f4){logger['error'](_0xc5c3('0xe'),_0x4b8404,_0x46e2c1[_0xc5c3('0x12')][_0xc5c3('0x14')]);return _0x522be1(_0x46e2c1['error'][_0xc5c3('0x14')]);}logger[_0xc5c3('0x12')](_0xc5c3('0xe'),_0x4b8404,_0x46e2c1[_0xc5c3('0x12')][_0xc5c3('0x14')]);return _0x723c31(_0x46e2c1['error']['message']);}else{logger[_0xc5c3('0x15')](_0xc5c3('0xe'),_0x4b8404,_0xc5c3('0xf'));_0x723c31(_0x46e2c1[_0xc5c3('0x16')]['message']);}})['catch'](function(_0x467ba9){logger['error'](_0xc5c3('0xe'),_0x4b8404,_0x467ba9);_0x522be1(_0x467ba9);});});}exports[_0xc5c3('0x17')]=function(_0x2ff158){var _0x13c867=this;return new Promise(function(_0x28bae6,_0x5e11d5){return db[_0xc5c3('0x18')][_0xc5c3('0x19')]({'raw':_0x2ff158[_0xc5c3('0x1a')]?_0x2ff158[_0xc5c3('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x2ff158[_0xc5c3('0x1a')]?_0x2ff158[_0xc5c3('0x1a')][_0xc5c3('0x1b')]||null:null,'attributes':_0x2ff158[_0xc5c3('0x1a')]?_0x2ff158[_0xc5c3('0x1a')]['attributes']||null:null,'limit':_0x2ff158[_0xc5c3('0x1a')]?_0x2ff158[_0xc5c3('0x1a')][_0xc5c3('0x1c')]||null:null,'include':_0x2ff158[_0xc5c3('0x1a')]?_0x2ff158[_0xc5c3('0x1a')][_0xc5c3('0x1d')]?_[_0xc5c3('0x1e')](_0x2ff158['options']['include'],function(_0x45affe){return{'model':db[_0x45affe[_0xc5c3('0x1f')]],'as':_0x45affe['as'],'attributes':_0x45affe['attributes'],'include':_0x45affe['include']?_[_0xc5c3('0x1e')](_0x45affe[_0xc5c3('0x1d')],function(_0x38a3df){return{'model':db[_0x38a3df['model']],'as':_0x38a3df['as'],'attributes':_0x38a3df['attributes'],'include':_0x38a3df[_0xc5c3('0x1d')]?_[_0xc5c3('0x1e')](_0x38a3df[_0xc5c3('0x1d')],function(_0x29791c){return{'model':db[_0x29791c['model']],'as':_0x29791c['as'],'attributes':_0x29791c[_0xc5c3('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2eacec){logger['info'](_0xc5c3('0x17'),_0x2ff158);logger[_0xc5c3('0x21')](_0xc5c3('0x17'),_0x2ff158,JSON[_0xc5c3('0x11')](_0x2eacec));_0x28bae6(_0x2eacec);})[_0xc5c3('0x22')](function(_0x2d07e1){logger[_0xc5c3('0x12')]('GetFreshsalesAccount',_0x2d07e1[_0xc5c3('0x14')],_0x2ff158);_0x5e11d5(_0x13c867['error'](0x1f4,_0x2d07e1[_0xc5c3('0x14')]));});});};exports[_0xc5c3('0x23')]=function(_0x5b26e9){var _0x4daa8b=this;return new Promise(function(_0x2e648f,_0x46f149){return db[_0xc5c3('0x18')][_0xc5c3('0x24')]({'raw':_0x5b26e9['options']?_0x5b26e9[_0xc5c3('0x1a')][_0xc5c3('0x25')]===undefined?!![]:![]:!![],'where':_0x5b26e9[_0xc5c3('0x1a')]?_0x5b26e9[_0xc5c3('0x1a')][_0xc5c3('0x1b')]||null:null,'attributes':_0x5b26e9[_0xc5c3('0x1a')]?_0x5b26e9[_0xc5c3('0x1a')][_0xc5c3('0x20')]||null:null,'include':_0x5b26e9[_0xc5c3('0x1a')]?_0x5b26e9['options'][_0xc5c3('0x1d')]?_[_0xc5c3('0x1e')](_0x5b26e9[_0xc5c3('0x1a')][_0xc5c3('0x1d')],function(_0x330391){return{'model':db[_0x330391[_0xc5c3('0x1f')]],'as':_0x330391['as'],'attributes':_0x330391[_0xc5c3('0x20')],'include':_0x330391['include']?_['map'](_0x330391[_0xc5c3('0x1d')],function(_0x55fccf){return{'model':db[_0x55fccf[_0xc5c3('0x1f')]],'as':_0x55fccf['as'],'attributes':_0x55fccf[_0xc5c3('0x20')],'include':_0x55fccf[_0xc5c3('0x1d')]?_[_0xc5c3('0x1e')](_0x55fccf[_0xc5c3('0x1d')],function(_0x498677){return{'model':db[_0x498677[_0xc5c3('0x1f')]],'as':_0x498677['as'],'attributes':_0x498677[_0xc5c3('0x20')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x29f57d){logger[_0xc5c3('0x15')](_0xc5c3('0x23'),_0x5b26e9);logger[_0xc5c3('0x21')](_0xc5c3('0x23'),_0x5b26e9,JSON[_0xc5c3('0x11')](_0x29f57d));_0x2e648f(_0x29f57d);})[_0xc5c3('0x22')](function(_0x2ad440){logger[_0xc5c3('0x12')](_0xc5c3('0x23'),_0x2ad440['message'],_0x5b26e9);_0x46f149(_0x4daa8b[_0xc5c3('0x12')](0x1f4,_0x2ad440['message']));});});};
\ No newline at end of file
index 9367f07..d4502e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d1b=['../../components/interaction/service','./intFreshsalesConfiguration.controller','get','index','isAuthenticated','show','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','/:id/fields','getFields','put','delete','/:id','destroy','exports','util','path','Router','fs-extra'];(function(_0x333091,_0x1fa916){var _0x48c176=function(_0x5ad99c){while(--_0x5ad99c){_0x333091['push'](_0x333091['shift']());}};_0x48c176(++_0x1fa916);}(_0x6d1b,0xe3));var _0xb6d1=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x6d1b[_0x20a584];return _0x4b41a8;};'use strict';var multer=require('multer');var util=require(_0xb6d1('0x0'));var path=require(_0xb6d1('0x1'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xb6d1('0x2')]();var fs_extra=require(_0xb6d1('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0xb6d1('0x4'));var config=require('../../config/environment');var controller=require(_0xb6d1('0x5'));router[_0xb6d1('0x6')]('/',auth['isAuthenticated'](),controller[_0xb6d1('0x7')]);router[_0xb6d1('0x6')]('/:id',auth[_0xb6d1('0x8')](),controller[_0xb6d1('0x9')]);router[_0xb6d1('0x6')](_0xb6d1('0xa'),auth[_0xb6d1('0x8')](),controller[_0xb6d1('0xb')]);router[_0xb6d1('0x6')](_0xb6d1('0xc'),auth[_0xb6d1('0x8')](),controller[_0xb6d1('0xd')]);router['get'](_0xb6d1('0xe'),auth[_0xb6d1('0x8')](),controller[_0xb6d1('0xf')]);router['post']('/',auth[_0xb6d1('0x8')](),controller['create']);router[_0xb6d1('0x10')]('/:id',auth[_0xb6d1('0x8')](),controller['update']);router[_0xb6d1('0x11')](_0xb6d1('0x12'),auth[_0xb6d1('0x8')](),controller[_0xb6d1('0x13')]);module[_0xb6d1('0x14')]=router;
\ No newline at end of file
+var _0xb3fb=['index','/:id','isAuthenticated','show','get','/:id/subjects','getSubjects','getDescriptions','/:id/fields','getFields','post','create','put','update','exports','multer','util','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x4d04f4,_0x58f87b){var _0x245e8b=function(_0x7660bd){while(--_0x7660bd){_0x4d04f4['push'](_0x4d04f4['shift']());}};_0x245e8b(++_0x58f87b);}(_0xb3fb,0xb0));var _0xbb3f=function(_0x3dff8c,_0x5bf28a){_0x3dff8c=_0x3dff8c-0x0;var _0x1199cf=_0xb3fb[_0x3dff8c];return _0x1199cf;};'use strict';var multer=require(_0xbb3f('0x0'));var util=require(_0xbb3f('0x1'));var path=require('path');var timeout=require(_0xbb3f('0x2'));var express=require('express');var router=express[_0xbb3f('0x3')]();var fs_extra=require(_0xbb3f('0x4'));var auth=require(_0xbb3f('0x5'));var interaction=require(_0xbb3f('0x6'));var config=require(_0xbb3f('0x7'));var controller=require('./intFreshsalesConfiguration.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xbb3f('0x8')]);router['get'](_0xbb3f('0x9'),auth[_0xbb3f('0xa')](),controller[_0xbb3f('0xb')]);router[_0xbb3f('0xc')](_0xbb3f('0xd'),auth[_0xbb3f('0xa')](),controller[_0xbb3f('0xe')]);router[_0xbb3f('0xc')]('/:id/descriptions',auth[_0xbb3f('0xa')](),controller[_0xbb3f('0xf')]);router[_0xbb3f('0xc')](_0xbb3f('0x10'),auth[_0xbb3f('0xa')](),controller[_0xbb3f('0x11')]);router[_0xbb3f('0x12')]('/',auth[_0xbb3f('0xa')](),controller[_0xbb3f('0x13')]);router[_0xbb3f('0x14')](_0xbb3f('0x9'),auth[_0xbb3f('0xa')](),controller[_0xbb3f('0x15')]);router['delete']('/:id',auth['isAuthenticated'](),controller['destroy']);module[_0xbb3f('0x16')]=router;
\ No newline at end of file
index 8125c9d..802ee63 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38d5=['STRING','sequelize','exports'];(function(_0xc8b975,_0x499782){var _0x34d041=function(_0x202301){while(--_0x202301){_0xc8b975['push'](_0xc8b975['shift']());}};_0x34d041(++_0x499782);}(_0x38d5,0x16f));var _0x538d=function(_0x46e1c5,_0x449de7){_0x46e1c5=_0x46e1c5-0x0;var _0x2ea10c=_0x38d5[_0x46e1c5];return _0x2ea10c;};'use strict';var Sequelize=require(_0x538d('0x0'));module[_0x538d('0x1')]={'name':{'type':Sequelize[_0x538d('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0xdac5=['STRING','exports'];(function(_0x3abac1,_0x57d090){var _0x4e4a63=function(_0x1e9be3){while(--_0x1e9be3){_0x3abac1['push'](_0x3abac1['shift']());}};_0x4e4a63(++_0x57d090);}(_0xdac5,0x71));var _0x5dac=function(_0x4d30a7,_0x3295b6){_0x4d30a7=_0x4d30a7-0x0;var _0x314be1=_0xdac5[_0x4d30a7];return _0x314be1;};'use strict';var Sequelize=require('sequelize');module[_0x5dac('0x0')]={'name':{'type':Sequelize[_0x5dac('0x1')]},'description':{'type':Sequelize[_0x5dac('0x1')]}};
\ No newline at end of file
index bdb00f6..b9a0386 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbb2=['json','offset','undefined','limit','count','set','apply','reject','save','update','then','error','name','map','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','order','sort','where','pick','filter','merge','VIRTUAL','options','FreshsalesConfiguration','includeAll','include','findAll','rows','catch','params','create','body','find','destroy','getSubjects','findOne','FreshsalesField','hasOwnProperty','getDescriptions','getFields','nolimit','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status'];(function(_0x3cd4d8,_0x1a125a){var _0x34dd3c=function(_0x1bdb76){while(--_0x1bdb76){_0x3cd4d8['push'](_0x3cd4d8['shift']());}};_0x34dd3c(++_0x1a125a);}(_0xcbb2,0x1b4));var _0x2cbb=function(_0x5430b4,_0x4d4e24){_0x5430b4=_0x5430b4-0x0;var _0x1aa18d=_0xcbb2[_0x5430b4];return _0x1aa18d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2cbb('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x2cbb('0x1'));var rp=require(_0x2cbb('0x2'));var moment=require(_0x2cbb('0x3'));var BPromise=require(_0x2cbb('0x4'));var Mustache=require(_0x2cbb('0x5'));var util=require(_0x2cbb('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x2cbb('0x7'));var ejs=require(_0x2cbb('0x8'));var fs=require('fs');var fs_extra=require(_0x2cbb('0x9'));var _=require(_0x2cbb('0xa'));var squel=require('squel');var crypto=require(_0x2cbb('0xb'));var jsforce=require(_0x2cbb('0xc'));var deskjs=require(_0x2cbb('0xd'));var toCsv=require('to-csv');var querystring=require(_0x2cbb('0xe'));var Papa=require(_0x2cbb('0xf'));var Redis=require(_0x2cbb('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x2cbb('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x2cbb('0x12'))('api');var utils=require(_0x2cbb('0x13'));var config=require(_0x2cbb('0x14'));var licenseUtil=require(_0x2cbb('0x15'));var db=require(_0x2cbb('0x16'))['db'];function respondWithStatusCode(_0x265e19,_0x19b36b){_0x19b36b=_0x19b36b||0xcc;return function(_0x2113b2){if(_0x2113b2){return _0x265e19[_0x2cbb('0x17')](_0x19b36b);}return _0x265e19['status'](_0x19b36b)[_0x2cbb('0x18')]();};}function respondWithResult(_0x246ee5,_0x4cb52e){_0x4cb52e=_0x4cb52e||0xc8;return function(_0x500bcf){if(_0x500bcf){return _0x246ee5[_0x2cbb('0x19')](_0x4cb52e)[_0x2cbb('0x1a')](_0x500bcf);}};}function respondWithFilteredResult(_0x371ebd,_0x6759fb){return function(_0x56c7e3){if(_0x56c7e3){var _0x4ed88e=typeof _0x6759fb[_0x2cbb('0x1b')]===_0x2cbb('0x1c')&&typeof _0x6759fb[_0x2cbb('0x1d')]===_0x2cbb('0x1c');var _0x19e335=_0x56c7e3['count'];var _0x5c1a97=_0x4ed88e?0x0:_0x6759fb[_0x2cbb('0x1b')];var _0x4bfee8=_0x4ed88e?_0x56c7e3[_0x2cbb('0x1e')]:_0x6759fb[_0x2cbb('0x1b')]+_0x6759fb[_0x2cbb('0x1d')];var _0x279e8f;if(_0x4bfee8>=_0x19e335){_0x4bfee8=_0x19e335;_0x279e8f=0xc8;}else{_0x279e8f=0xce;}_0x371ebd[_0x2cbb('0x19')](_0x279e8f);return _0x371ebd[_0x2cbb('0x1f')]('Content-Range',_0x5c1a97+'-'+_0x4bfee8+'/'+_0x19e335)[_0x2cbb('0x1a')](_0x56c7e3);}return null;};}function patchUpdates(_0xa11ab1){return function(_0x1e08e8){try{jsonpatch[_0x2cbb('0x20')](_0x1e08e8,_0xa11ab1,!![]);}catch(_0x526242){return BPromise[_0x2cbb('0x21')](_0x526242);}return _0x1e08e8[_0x2cbb('0x22')]();};}function saveUpdates(_0x563ce4,_0x40a5d8){return function(_0x4880ff){if(_0x4880ff){return _0x4880ff[_0x2cbb('0x23')](_0x563ce4)[_0x2cbb('0x24')](function(_0xbfad67){return _0xbfad67;});}return null;};}function removeEntity(_0x29645d,_0x5059d1){return function(_0x254a5f){if(_0x254a5f){return _0x254a5f['destroy']()['then'](function(){_0x29645d['status'](0xcc)[_0x2cbb('0x18')]();});}};}function handleEntityNotFound(_0x105e32,_0x7c9a63){return function(_0x32d967){if(!_0x32d967){_0x105e32[_0x2cbb('0x17')](0x194);}return _0x32d967;};}function handleError(_0x2ca1fb,_0x5f04d1){_0x5f04d1=_0x5f04d1||0x1f4;return function(_0x3506cc){logger[_0x2cbb('0x25')](_0x3506cc['stack']);if(_0x3506cc['name']){delete _0x3506cc[_0x2cbb('0x26')];}_0x2ca1fb[_0x2cbb('0x19')](_0x5f04d1)['send'](_0x3506cc);};}exports['index']=function(_0x44829c,_0x1217a6){var _0x4a069f={},_0x1655e2={},_0x4c3ed1={'count':0x0,'rows':[]};var _0x279566=_[_0x2cbb('0x27')](db['FreshsalesConfiguration'][_0x2cbb('0x28')],function(_0x2b5522){return{'name':_0x2b5522[_0x2cbb('0x29')],'type':_0x2b5522[_0x2cbb('0x2a')]['key']};});_0x1655e2[_0x2cbb('0x2b')]=_[_0x2cbb('0x27')](_0x279566,_0x2cbb('0x26'));_0x1655e2[_0x2cbb('0x2c')]=_[_0x2cbb('0x2d')](_0x44829c['query']);_0x1655e2[_0x2cbb('0x2e')]=_['intersection'](_0x1655e2[_0x2cbb('0x2b')],_0x1655e2[_0x2cbb('0x2c')]);_0x4a069f[_0x2cbb('0x2f')]=_[_0x2cbb('0x30')](_0x1655e2[_0x2cbb('0x2b')],qs[_0x2cbb('0x31')](_0x44829c[_0x2cbb('0x2c')][_0x2cbb('0x31')]));_0x4a069f[_0x2cbb('0x2f')]=_0x4a069f[_0x2cbb('0x2f')][_0x2cbb('0x32')]?_0x4a069f[_0x2cbb('0x2f')]:_0x1655e2[_0x2cbb('0x2b')];if(!_0x44829c[_0x2cbb('0x2c')]['hasOwnProperty']('nolimit')){_0x4a069f[_0x2cbb('0x1d')]=qs[_0x2cbb('0x1d')](_0x44829c[_0x2cbb('0x2c')][_0x2cbb('0x1d')]);_0x4a069f['offset']=qs[_0x2cbb('0x1b')](_0x44829c['query'][_0x2cbb('0x1b')]);}_0x4a069f[_0x2cbb('0x33')]=qs[_0x2cbb('0x34')](_0x44829c['query']['sort']);_0x4a069f[_0x2cbb('0x35')]=qs[_0x2cbb('0x2e')](_[_0x2cbb('0x36')](_0x44829c[_0x2cbb('0x2c')],_0x1655e2[_0x2cbb('0x2e')]),_0x279566);if(_0x44829c['query'][_0x2cbb('0x37')]){_0x4a069f[_0x2cbb('0x35')]=_[_0x2cbb('0x38')](_0x4a069f[_0x2cbb('0x35')],{'$or':_[_0x2cbb('0x27')](_0x279566,function(_0x25b9d9){if(_0x25b9d9[_0x2cbb('0x2a')]!==_0x2cbb('0x39')){var _0x230a0a={};_0x230a0a[_0x25b9d9[_0x2cbb('0x26')]]={'$like':'%'+_0x44829c[_0x2cbb('0x2c')][_0x2cbb('0x37')]+'%'};return _0x230a0a;}})});}_0x4a069f=_[_0x2cbb('0x38')]({},_0x4a069f,_0x44829c[_0x2cbb('0x3a')]);var _0x13e1c7={'where':_0x4a069f[_0x2cbb('0x35')]};return db[_0x2cbb('0x3b')]['count'](_0x13e1c7)['then'](function(_0x1bf3d3){_0x4c3ed1[_0x2cbb('0x1e')]=_0x1bf3d3;if(_0x44829c['query'][_0x2cbb('0x3c')]){_0x4a069f[_0x2cbb('0x3d')]=[{'all':!![]}];}return db[_0x2cbb('0x3b')][_0x2cbb('0x3e')](_0x4a069f);})[_0x2cbb('0x24')](function(_0x4e7eb2){_0x4c3ed1[_0x2cbb('0x3f')]=_0x4e7eb2;return _0x4c3ed1;})[_0x2cbb('0x24')](respondWithFilteredResult(_0x1217a6,_0x4a069f))[_0x2cbb('0x40')](handleError(_0x1217a6,null));};exports['show']=function(_0x3a620b,_0x3695b1){var _0x39ebe4={'raw':![],'where':{'id':_0x3a620b[_0x2cbb('0x41')]['id']}},_0x4f3535={};_0x4f3535[_0x2cbb('0x2b')]=_[_0x2cbb('0x2d')](db[_0x2cbb('0x3b')]['rawAttributes']);_0x4f3535[_0x2cbb('0x2c')]=_[_0x2cbb('0x2d')](_0x3a620b[_0x2cbb('0x2c')]);_0x4f3535[_0x2cbb('0x2e')]=_[_0x2cbb('0x30')](_0x4f3535['model'],_0x4f3535[_0x2cbb('0x2c')]);_0x39ebe4[_0x2cbb('0x2f')]=_[_0x2cbb('0x30')](_0x4f3535[_0x2cbb('0x2b')],qs[_0x2cbb('0x31')](_0x3a620b[_0x2cbb('0x2c')][_0x2cbb('0x31')]));_0x39ebe4[_0x2cbb('0x2f')]=_0x39ebe4[_0x2cbb('0x2f')][_0x2cbb('0x32')]?_0x39ebe4[_0x2cbb('0x2f')]:_0x4f3535['model'];if(_0x3a620b[_0x2cbb('0x2c')][_0x2cbb('0x3c')]){_0x39ebe4[_0x2cbb('0x3d')]=[{'all':!![]}];}_0x39ebe4=_[_0x2cbb('0x38')]({},_0x39ebe4,_0x3a620b[_0x2cbb('0x3a')]);return db[_0x2cbb('0x3b')]['find'](_0x39ebe4)[_0x2cbb('0x24')](handleEntityNotFound(_0x3695b1,null))[_0x2cbb('0x24')](respondWithResult(_0x3695b1,null))[_0x2cbb('0x40')](handleError(_0x3695b1,null));};exports['create']=function(_0x459645,_0x4e9ec7){return db[_0x2cbb('0x3b')][_0x2cbb('0x42')](_0x459645[_0x2cbb('0x43')],{})[_0x2cbb('0x24')](respondWithResult(_0x4e9ec7,0xc9))[_0x2cbb('0x40')](handleError(_0x4e9ec7,null));};exports['update']=function(_0x281837,_0x1dc5af){if(_0x281837[_0x2cbb('0x43')]['id']){delete _0x281837[_0x2cbb('0x43')]['id'];}return db[_0x2cbb('0x3b')][_0x2cbb('0x44')]({'where':{'id':_0x281837[_0x2cbb('0x41')]['id']}})[_0x2cbb('0x24')](handleEntityNotFound(_0x1dc5af,null))[_0x2cbb('0x24')](saveUpdates(_0x281837[_0x2cbb('0x43')],null))[_0x2cbb('0x24')](respondWithResult(_0x1dc5af,null))[_0x2cbb('0x40')](handleError(_0x1dc5af,null));};exports[_0x2cbb('0x45')]=function(_0x16d759,_0x38a767){return db['FreshsalesConfiguration']['find']({'where':{'id':_0x16d759[_0x2cbb('0x41')]['id']}})[_0x2cbb('0x24')](handleEntityNotFound(_0x38a767,null))[_0x2cbb('0x24')](removeEntity(_0x38a767,null))[_0x2cbb('0x40')](handleError(_0x38a767,null));};exports[_0x2cbb('0x46')]=function(_0x52100b,_0x40e00b,_0x52e934){var _0x34a037={};var _0x1a2df2={};var _0x580d00;var _0x54f2ed;return db[_0x2cbb('0x3b')][_0x2cbb('0x47')]({'where':{'id':_0x52100b['params']['id']}})[_0x2cbb('0x24')](handleEntityNotFound(_0x40e00b,null))[_0x2cbb('0x24')](function(_0x1c4345){if(_0x1c4345){_0x580d00=_0x1c4345;_0x1a2df2[_0x2cbb('0x2b')]=_['keys'](db[_0x2cbb('0x48')][_0x2cbb('0x28')]);_0x1a2df2[_0x2cbb('0x2c')]=_[_0x2cbb('0x2d')](_0x52100b['query']);_0x1a2df2[_0x2cbb('0x2e')]=_['intersection'](_0x1a2df2[_0x2cbb('0x2b')],_0x1a2df2['query']);_0x34a037[_0x2cbb('0x2f')]=_[_0x2cbb('0x30')](_0x1a2df2['model'],qs[_0x2cbb('0x31')](_0x52100b[_0x2cbb('0x2c')][_0x2cbb('0x31')]));_0x34a037[_0x2cbb('0x2f')]=_0x34a037[_0x2cbb('0x2f')]['length']?_0x34a037[_0x2cbb('0x2f')]:_0x1a2df2[_0x2cbb('0x2b')];_0x34a037[_0x2cbb('0x33')]=qs[_0x2cbb('0x34')](_0x52100b[_0x2cbb('0x2c')][_0x2cbb('0x34')]);_0x34a037[_0x2cbb('0x35')]=qs[_0x2cbb('0x2e')](_['pick'](_0x52100b[_0x2cbb('0x2c')],_0x1a2df2[_0x2cbb('0x2e')]));if(_0x52100b[_0x2cbb('0x2c')]['filter']){_0x34a037[_0x2cbb('0x35')]=_[_0x2cbb('0x38')](_0x34a037[_0x2cbb('0x35')],{'$or':_[_0x2cbb('0x27')](_0x34a037['attributes'],function(_0x320b2d){var _0x3e9e8d={};_0x3e9e8d[_0x320b2d]={'$like':'%'+_0x52100b['query'][_0x2cbb('0x37')]+'%'};return _0x3e9e8d;})});}_0x34a037=_[_0x2cbb('0x38')]({},_0x34a037,_0x52100b[_0x2cbb('0x3a')]);return _0x580d00[_0x2cbb('0x46')](_0x34a037);}})[_0x2cbb('0x24')](function(_0x5d8003){if(_0x5d8003){_0x54f2ed=_0x5d8003['length'];if(!_0x52100b[_0x2cbb('0x2c')][_0x2cbb('0x49')]('nolimit')){_0x34a037[_0x2cbb('0x1d')]=qs[_0x2cbb('0x1d')](_0x52100b[_0x2cbb('0x2c')][_0x2cbb('0x1d')]);_0x34a037[_0x2cbb('0x1b')]=qs['offset'](_0x52100b['query'][_0x2cbb('0x1b')]);}return _0x580d00[_0x2cbb('0x46')](_0x34a037);}})['then'](function(_0x473e0b){if(_0x473e0b){return _0x473e0b?{'count':_0x54f2ed,'rows':_0x473e0b}:null;}})[_0x2cbb('0x24')](respondWithResult(_0x40e00b,null))[_0x2cbb('0x40')](handleError(_0x40e00b,null));};exports['getDescriptions']=function(_0xd004b7,_0x1f4957,_0x5c8b8b){var _0xf4841b={};var _0xd4b97={};var _0x2fb56c;var _0x603561;return db[_0x2cbb('0x3b')][_0x2cbb('0x47')]({'where':{'id':_0xd004b7[_0x2cbb('0x41')]['id']}})[_0x2cbb('0x24')](handleEntityNotFound(_0x1f4957,null))[_0x2cbb('0x24')](function(_0x4c9f24){if(_0x4c9f24){_0x2fb56c=_0x4c9f24;_0xd4b97[_0x2cbb('0x2b')]=_['keys'](db[_0x2cbb('0x48')]['rawAttributes']);_0xd4b97[_0x2cbb('0x2c')]=_[_0x2cbb('0x2d')](_0xd004b7[_0x2cbb('0x2c')]);_0xd4b97[_0x2cbb('0x2e')]=_[_0x2cbb('0x30')](_0xd4b97[_0x2cbb('0x2b')],_0xd4b97['query']);_0xf4841b['attributes']=_[_0x2cbb('0x30')](_0xd4b97[_0x2cbb('0x2b')],qs[_0x2cbb('0x31')](_0xd004b7[_0x2cbb('0x2c')][_0x2cbb('0x31')]));_0xf4841b[_0x2cbb('0x2f')]=_0xf4841b[_0x2cbb('0x2f')][_0x2cbb('0x32')]?_0xf4841b[_0x2cbb('0x2f')]:_0xd4b97[_0x2cbb('0x2b')];_0xf4841b[_0x2cbb('0x33')]=qs[_0x2cbb('0x34')](_0xd004b7[_0x2cbb('0x2c')][_0x2cbb('0x34')]);_0xf4841b['where']=qs['filters'](_['pick'](_0xd004b7[_0x2cbb('0x2c')],_0xd4b97[_0x2cbb('0x2e')]));if(_0xd004b7[_0x2cbb('0x2c')][_0x2cbb('0x37')]){_0xf4841b[_0x2cbb('0x35')]=_[_0x2cbb('0x38')](_0xf4841b['where'],{'$or':_[_0x2cbb('0x27')](_0xf4841b[_0x2cbb('0x2f')],function(_0x306a31){var _0x300a60={};_0x300a60[_0x306a31]={'$like':'%'+_0xd004b7[_0x2cbb('0x2c')][_0x2cbb('0x37')]+'%'};return _0x300a60;})});}_0xf4841b=_[_0x2cbb('0x38')]({},_0xf4841b,_0xd004b7[_0x2cbb('0x3a')]);return _0x2fb56c['getDescriptions'](_0xf4841b);}})['then'](function(_0x3bc0fe){if(_0x3bc0fe){_0x603561=_0x3bc0fe[_0x2cbb('0x32')];if(!_0xd004b7[_0x2cbb('0x2c')]['hasOwnProperty']('nolimit')){_0xf4841b['limit']=qs[_0x2cbb('0x1d')](_0xd004b7[_0x2cbb('0x2c')][_0x2cbb('0x1d')]);_0xf4841b[_0x2cbb('0x1b')]=qs[_0x2cbb('0x1b')](_0xd004b7[_0x2cbb('0x2c')][_0x2cbb('0x1b')]);}return _0x2fb56c[_0x2cbb('0x4a')](_0xf4841b);}})[_0x2cbb('0x24')](function(_0x8ae076){if(_0x8ae076){return _0x8ae076?{'count':_0x603561,'rows':_0x8ae076}:null;}})[_0x2cbb('0x24')](respondWithResult(_0x1f4957,null))[_0x2cbb('0x40')](handleError(_0x1f4957,null));};exports[_0x2cbb('0x4b')]=function(_0x1b0543,_0x46f7cd,_0x1714be){var _0x10d02b={};var _0x1d8bed={};var _0x371af2;var _0x21f3e9;return db[_0x2cbb('0x3b')][_0x2cbb('0x47')]({'where':{'id':_0x1b0543[_0x2cbb('0x41')]['id']}})[_0x2cbb('0x24')](handleEntityNotFound(_0x46f7cd,null))['then'](function(_0x3727dc){if(_0x3727dc){_0x371af2=_0x3727dc;_0x1d8bed[_0x2cbb('0x2b')]=_['keys'](db[_0x2cbb('0x48')][_0x2cbb('0x28')]);_0x1d8bed['query']=_[_0x2cbb('0x2d')](_0x1b0543[_0x2cbb('0x2c')]);_0x1d8bed[_0x2cbb('0x2e')]=_[_0x2cbb('0x30')](_0x1d8bed[_0x2cbb('0x2b')],_0x1d8bed['query']);_0x10d02b['attributes']=_[_0x2cbb('0x30')](_0x1d8bed['model'],qs['fields'](_0x1b0543['query'][_0x2cbb('0x31')]));_0x10d02b[_0x2cbb('0x2f')]=_0x10d02b[_0x2cbb('0x2f')][_0x2cbb('0x32')]?_0x10d02b[_0x2cbb('0x2f')]:_0x1d8bed['model'];_0x10d02b[_0x2cbb('0x33')]=qs[_0x2cbb('0x34')](_0x1b0543[_0x2cbb('0x2c')]['sort']);_0x10d02b[_0x2cbb('0x35')]=qs[_0x2cbb('0x2e')](_[_0x2cbb('0x36')](_0x1b0543['query'],_0x1d8bed['filters']));if(_0x1b0543[_0x2cbb('0x2c')]['filter']){_0x10d02b[_0x2cbb('0x35')]=_[_0x2cbb('0x38')](_0x10d02b[_0x2cbb('0x35')],{'$or':_[_0x2cbb('0x27')](_0x10d02b[_0x2cbb('0x2f')],function(_0x4b0370){var _0x817fda={};_0x817fda[_0x4b0370]={'$like':'%'+_0x1b0543[_0x2cbb('0x2c')]['filter']+'%'};return _0x817fda;})});}_0x10d02b=_['merge']({},_0x10d02b,_0x1b0543[_0x2cbb('0x3a')]);return _0x371af2[_0x2cbb('0x4b')](_0x10d02b);}})[_0x2cbb('0x24')](function(_0x33acb){if(_0x33acb){_0x21f3e9=_0x33acb[_0x2cbb('0x32')];if(!_0x1b0543['query'][_0x2cbb('0x49')](_0x2cbb('0x4c'))){_0x10d02b[_0x2cbb('0x1d')]=qs['limit'](_0x1b0543[_0x2cbb('0x2c')][_0x2cbb('0x1d')]);_0x10d02b[_0x2cbb('0x1b')]=qs['offset'](_0x1b0543[_0x2cbb('0x2c')]['offset']);}return _0x371af2[_0x2cbb('0x4b')](_0x10d02b);}})[_0x2cbb('0x24')](function(_0x4e81ce){if(_0x4e81ce){return _0x4e81ce?{'count':_0x21f3e9,'rows':_0x4e81ce}:null;}})['then'](respondWithResult(_0x46f7cd,null))[_0x2cbb('0x40')](handleError(_0x46f7cd,null));};
\ No newline at end of file
+var _0xbae3=['key','model','keys','query','filters','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','includeAll','findAll','rows','catch','show','params','rawAttributes','intersection','fields','include','options','find','create','body','findOne','getSubjects','FreshsalesField','getDescriptions','getFields','rimraf','fast-json-patch','mustache','util','path','ejs','fs-extra','lodash','squel','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','apply','reject','update','then','destroy','sendStatus','stack','name','send','index','map','FreshsalesConfiguration','fieldName','type'];(function(_0xd31621,_0x17b567){var _0x2e7ac0=function(_0x3c5a8d){while(--_0x3c5a8d){_0xd31621['push'](_0xd31621['shift']());}};_0x2e7ac0(++_0x17b567);}(_0xbae3,0x19a));var _0x3bae=function(_0x26db91,_0x5dd131){_0x26db91=_0x26db91-0x0;var _0x2a9476=_0xbae3[_0x26db91];return _0x2a9476;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3bae('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3bae('0x1'));var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x3bae('0x2'));var util=require(_0x3bae('0x3'));var path=require(_0x3bae('0x4'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x3bae('0x5'));var fs=require('fs');var fs_extra=require(_0x3bae('0x6'));var _=require(_0x3bae('0x7'));var squel=require(_0x3bae('0x8'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x3bae('0x9'));var toCsv=require('to-csv');var querystring=require(_0x3bae('0xa'));var Papa=require('papaparse');var Redis=require(_0x3bae('0xb'));var authService=require(_0x3bae('0xc'));var qs=require('../../components/parsers/qs');var as=require(_0x3bae('0xd'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3bae('0xe'))(_0x3bae('0xf'));var utils=require('../../config/utils');var config=require(_0x3bae('0x10'));var licenseUtil=require(_0x3bae('0x11'));var db=require(_0x3bae('0x12'))['db'];function respondWithStatusCode(_0x19b5c7,_0x12b5f0){_0x12b5f0=_0x12b5f0||0xcc;return function(_0x250959){if(_0x250959){return _0x19b5c7['sendStatus'](_0x12b5f0);}return _0x19b5c7[_0x3bae('0x13')](_0x12b5f0)[_0x3bae('0x14')]();};}function respondWithResult(_0xee2fa7,_0x5c6ea2){_0x5c6ea2=_0x5c6ea2||0xc8;return function(_0x3d3668){if(_0x3d3668){return _0xee2fa7['status'](_0x5c6ea2)[_0x3bae('0x15')](_0x3d3668);}};}function respondWithFilteredResult(_0x2d67da,_0xa6c418){return function(_0x3b1b00){if(_0x3b1b00){var _0x62c0b9=typeof _0xa6c418[_0x3bae('0x16')]===_0x3bae('0x17')&&typeof _0xa6c418['limit']===_0x3bae('0x17');var _0x2ebfc6=_0x3b1b00['count'];var _0xc8a49=_0x62c0b9?0x0:_0xa6c418[_0x3bae('0x16')];var _0x1696e7=_0x62c0b9?_0x3b1b00[_0x3bae('0x18')]:_0xa6c418[_0x3bae('0x16')]+_0xa6c418[_0x3bae('0x19')];var _0x326723;if(_0x1696e7>=_0x2ebfc6){_0x1696e7=_0x2ebfc6;_0x326723=0xc8;}else{_0x326723=0xce;}_0x2d67da['status'](_0x326723);return _0x2d67da['set']('Content-Range',_0xc8a49+'-'+_0x1696e7+'/'+_0x2ebfc6)[_0x3bae('0x15')](_0x3b1b00);}return null;};}function patchUpdates(_0x42e051){return function(_0x20a16f){try{jsonpatch[_0x3bae('0x1a')](_0x20a16f,_0x42e051,!![]);}catch(_0x98a080){return BPromise[_0x3bae('0x1b')](_0x98a080);}return _0x20a16f['save']();};}function saveUpdates(_0x353d15,_0xee910c){return function(_0x378ae4){if(_0x378ae4){return _0x378ae4[_0x3bae('0x1c')](_0x353d15)[_0x3bae('0x1d')](function(_0x483a01){return _0x483a01;});}return null;};}function removeEntity(_0x58ab7b,_0x2b1068){return function(_0xb9117b){if(_0xb9117b){return _0xb9117b[_0x3bae('0x1e')]()[_0x3bae('0x1d')](function(){_0x58ab7b[_0x3bae('0x13')](0xcc)[_0x3bae('0x14')]();});}};}function handleEntityNotFound(_0x2336ff,_0xa82235){return function(_0x1ff7c4){if(!_0x1ff7c4){_0x2336ff[_0x3bae('0x1f')](0x194);}return _0x1ff7c4;};}function handleError(_0x4c7cc1,_0x546a01){_0x546a01=_0x546a01||0x1f4;return function(_0x1a1320){logger['error'](_0x1a1320[_0x3bae('0x20')]);if(_0x1a1320['name']){delete _0x1a1320[_0x3bae('0x21')];}_0x4c7cc1[_0x3bae('0x13')](_0x546a01)[_0x3bae('0x22')](_0x1a1320);};}exports[_0x3bae('0x23')]=function(_0x262981,_0x15bd40){var _0x3bc56f={},_0x306968={},_0x328860={'count':0x0,'rows':[]};var _0x4df544=_[_0x3bae('0x24')](db[_0x3bae('0x25')]['rawAttributes'],function(_0x2a468f){return{'name':_0x2a468f[_0x3bae('0x26')],'type':_0x2a468f[_0x3bae('0x27')][_0x3bae('0x28')]};});_0x306968[_0x3bae('0x29')]=_['map'](_0x4df544,_0x3bae('0x21'));_0x306968['query']=_[_0x3bae('0x2a')](_0x262981[_0x3bae('0x2b')]);_0x306968[_0x3bae('0x2c')]=_['intersection'](_0x306968[_0x3bae('0x29')],_0x306968['query']);_0x3bc56f[_0x3bae('0x2d')]=_['intersection'](_0x306968[_0x3bae('0x29')],qs['fields'](_0x262981[_0x3bae('0x2b')]['fields']));_0x3bc56f['attributes']=_0x3bc56f[_0x3bae('0x2d')][_0x3bae('0x2e')]?_0x3bc56f['attributes']:_0x306968[_0x3bae('0x29')];if(!_0x262981[_0x3bae('0x2b')][_0x3bae('0x2f')](_0x3bae('0x30'))){_0x3bc56f['limit']=qs['limit'](_0x262981[_0x3bae('0x2b')][_0x3bae('0x19')]);_0x3bc56f[_0x3bae('0x16')]=qs['offset'](_0x262981[_0x3bae('0x2b')][_0x3bae('0x16')]);}_0x3bc56f[_0x3bae('0x31')]=qs['sort'](_0x262981[_0x3bae('0x2b')][_0x3bae('0x32')]);_0x3bc56f[_0x3bae('0x33')]=qs[_0x3bae('0x2c')](_[_0x3bae('0x34')](_0x262981[_0x3bae('0x2b')],_0x306968[_0x3bae('0x2c')]),_0x4df544);if(_0x262981[_0x3bae('0x2b')]['filter']){_0x3bc56f[_0x3bae('0x33')]=_[_0x3bae('0x35')](_0x3bc56f[_0x3bae('0x33')],{'$or':_['map'](_0x4df544,function(_0x58fec2){if(_0x58fec2['type']!==_0x3bae('0x36')){var _0x27ce96={};_0x27ce96[_0x58fec2[_0x3bae('0x21')]]={'$like':'%'+_0x262981['query'][_0x3bae('0x37')]+'%'};return _0x27ce96;}})});}_0x3bc56f=_[_0x3bae('0x35')]({},_0x3bc56f,_0x262981['options']);var _0x100ec6={'where':_0x3bc56f['where']};return db[_0x3bae('0x25')][_0x3bae('0x18')](_0x100ec6)[_0x3bae('0x1d')](function(_0x16d966){_0x328860['count']=_0x16d966;if(_0x262981[_0x3bae('0x2b')][_0x3bae('0x38')]){_0x3bc56f['include']=[{'all':!![]}];}return db['FreshsalesConfiguration'][_0x3bae('0x39')](_0x3bc56f);})[_0x3bae('0x1d')](function(_0x159c33){_0x328860[_0x3bae('0x3a')]=_0x159c33;return _0x328860;})[_0x3bae('0x1d')](respondWithFilteredResult(_0x15bd40,_0x3bc56f))[_0x3bae('0x3b')](handleError(_0x15bd40,null));};exports[_0x3bae('0x3c')]=function(_0x4fcd4e,_0x253348){var _0xa27bdd={'raw':![],'where':{'id':_0x4fcd4e[_0x3bae('0x3d')]['id']}},_0x18c443={};_0x18c443['model']=_[_0x3bae('0x2a')](db[_0x3bae('0x25')][_0x3bae('0x3e')]);_0x18c443[_0x3bae('0x2b')]=_[_0x3bae('0x2a')](_0x4fcd4e['query']);_0x18c443[_0x3bae('0x2c')]=_[_0x3bae('0x3f')](_0x18c443[_0x3bae('0x29')],_0x18c443['query']);_0xa27bdd[_0x3bae('0x2d')]=_[_0x3bae('0x3f')](_0x18c443[_0x3bae('0x29')],qs[_0x3bae('0x40')](_0x4fcd4e[_0x3bae('0x2b')][_0x3bae('0x40')]));_0xa27bdd['attributes']=_0xa27bdd[_0x3bae('0x2d')]['length']?_0xa27bdd[_0x3bae('0x2d')]:_0x18c443['model'];if(_0x4fcd4e[_0x3bae('0x2b')][_0x3bae('0x38')]){_0xa27bdd[_0x3bae('0x41')]=[{'all':!![]}];}_0xa27bdd=_[_0x3bae('0x35')]({},_0xa27bdd,_0x4fcd4e[_0x3bae('0x42')]);return db[_0x3bae('0x25')][_0x3bae('0x43')](_0xa27bdd)[_0x3bae('0x1d')](handleEntityNotFound(_0x253348,null))['then'](respondWithResult(_0x253348,null))['catch'](handleError(_0x253348,null));};exports[_0x3bae('0x44')]=function(_0x1ca824,_0x4ae9b8){return db['FreshsalesConfiguration'][_0x3bae('0x44')](_0x1ca824[_0x3bae('0x45')],{})[_0x3bae('0x1d')](respondWithResult(_0x4ae9b8,0xc9))[_0x3bae('0x3b')](handleError(_0x4ae9b8,null));};exports['update']=function(_0x22c923,_0xb542a0){if(_0x22c923['body']['id']){delete _0x22c923['body']['id'];}return db[_0x3bae('0x25')][_0x3bae('0x43')]({'where':{'id':_0x22c923[_0x3bae('0x3d')]['id']}})[_0x3bae('0x1d')](handleEntityNotFound(_0xb542a0,null))[_0x3bae('0x1d')](saveUpdates(_0x22c923['body'],null))[_0x3bae('0x1d')](respondWithResult(_0xb542a0,null))[_0x3bae('0x3b')](handleError(_0xb542a0,null));};exports['destroy']=function(_0x25af53,_0x4ac9d2){return db['FreshsalesConfiguration']['find']({'where':{'id':_0x25af53[_0x3bae('0x3d')]['id']}})[_0x3bae('0x1d')](handleEntityNotFound(_0x4ac9d2,null))[_0x3bae('0x1d')](removeEntity(_0x4ac9d2,null))['catch'](handleError(_0x4ac9d2,null));};exports['getSubjects']=function(_0x19bf64,_0x1d612a,_0x43c952){var _0x352e47={};var _0x270ce8={};var _0x568c99;var _0xda5ba4;return db[_0x3bae('0x25')][_0x3bae('0x46')]({'where':{'id':_0x19bf64[_0x3bae('0x3d')]['id']}})[_0x3bae('0x1d')](handleEntityNotFound(_0x1d612a,null))[_0x3bae('0x1d')](function(_0x1c70dd){if(_0x1c70dd){_0x568c99=_0x1c70dd;_0x270ce8[_0x3bae('0x29')]=_[_0x3bae('0x2a')](db['FreshsalesField'][_0x3bae('0x3e')]);_0x270ce8[_0x3bae('0x2b')]=_[_0x3bae('0x2a')](_0x19bf64[_0x3bae('0x2b')]);_0x270ce8[_0x3bae('0x2c')]=_[_0x3bae('0x3f')](_0x270ce8['model'],_0x270ce8[_0x3bae('0x2b')]);_0x352e47['attributes']=_[_0x3bae('0x3f')](_0x270ce8[_0x3bae('0x29')],qs[_0x3bae('0x40')](_0x19bf64[_0x3bae('0x2b')][_0x3bae('0x40')]));_0x352e47['attributes']=_0x352e47[_0x3bae('0x2d')]['length']?_0x352e47[_0x3bae('0x2d')]:_0x270ce8[_0x3bae('0x29')];_0x352e47['order']=qs['sort'](_0x19bf64['query'][_0x3bae('0x32')]);_0x352e47['where']=qs[_0x3bae('0x2c')](_['pick'](_0x19bf64[_0x3bae('0x2b')],_0x270ce8[_0x3bae('0x2c')]));if(_0x19bf64[_0x3bae('0x2b')][_0x3bae('0x37')]){_0x352e47[_0x3bae('0x33')]=_['merge'](_0x352e47[_0x3bae('0x33')],{'$or':_[_0x3bae('0x24')](_0x352e47[_0x3bae('0x2d')],function(_0x284b1e){var _0x2c92fb={};_0x2c92fb[_0x284b1e]={'$like':'%'+_0x19bf64['query']['filter']+'%'};return _0x2c92fb;})});}_0x352e47=_[_0x3bae('0x35')]({},_0x352e47,_0x19bf64[_0x3bae('0x42')]);return _0x568c99[_0x3bae('0x47')](_0x352e47);}})['then'](function(_0x35ab7e){if(_0x35ab7e){_0xda5ba4=_0x35ab7e['length'];if(!_0x19bf64[_0x3bae('0x2b')][_0x3bae('0x2f')](_0x3bae('0x30'))){_0x352e47[_0x3bae('0x19')]=qs['limit'](_0x19bf64[_0x3bae('0x2b')][_0x3bae('0x19')]);_0x352e47[_0x3bae('0x16')]=qs[_0x3bae('0x16')](_0x19bf64['query'][_0x3bae('0x16')]);}return _0x568c99[_0x3bae('0x47')](_0x352e47);}})[_0x3bae('0x1d')](function(_0x4112a9){if(_0x4112a9){return _0x4112a9?{'count':_0xda5ba4,'rows':_0x4112a9}:null;}})[_0x3bae('0x1d')](respondWithResult(_0x1d612a,null))['catch'](handleError(_0x1d612a,null));};exports['getDescriptions']=function(_0x14f8fa,_0x9b3ebe,_0x708964){var _0x113289={};var _0x161e9d={};var _0x2c87d6;var _0x53cc96;return db[_0x3bae('0x25')][_0x3bae('0x46')]({'where':{'id':_0x14f8fa[_0x3bae('0x3d')]['id']}})[_0x3bae('0x1d')](handleEntityNotFound(_0x9b3ebe,null))[_0x3bae('0x1d')](function(_0x17de8a){if(_0x17de8a){_0x2c87d6=_0x17de8a;_0x161e9d['model']=_[_0x3bae('0x2a')](db[_0x3bae('0x48')]['rawAttributes']);_0x161e9d[_0x3bae('0x2b')]=_[_0x3bae('0x2a')](_0x14f8fa['query']);_0x161e9d[_0x3bae('0x2c')]=_[_0x3bae('0x3f')](_0x161e9d['model'],_0x161e9d['query']);_0x113289[_0x3bae('0x2d')]=_[_0x3bae('0x3f')](_0x161e9d[_0x3bae('0x29')],qs[_0x3bae('0x40')](_0x14f8fa['query'][_0x3bae('0x40')]));_0x113289[_0x3bae('0x2d')]=_0x113289[_0x3bae('0x2d')][_0x3bae('0x2e')]?_0x113289[_0x3bae('0x2d')]:_0x161e9d[_0x3bae('0x29')];_0x113289['order']=qs[_0x3bae('0x32')](_0x14f8fa['query'][_0x3bae('0x32')]);_0x113289[_0x3bae('0x33')]=qs[_0x3bae('0x2c')](_['pick'](_0x14f8fa[_0x3bae('0x2b')],_0x161e9d['filters']));if(_0x14f8fa[_0x3bae('0x2b')][_0x3bae('0x37')]){_0x113289['where']=_[_0x3bae('0x35')](_0x113289[_0x3bae('0x33')],{'$or':_[_0x3bae('0x24')](_0x113289['attributes'],function(_0x150e44){var _0x379f0e={};_0x379f0e[_0x150e44]={'$like':'%'+_0x14f8fa[_0x3bae('0x2b')]['filter']+'%'};return _0x379f0e;})});}_0x113289=_[_0x3bae('0x35')]({},_0x113289,_0x14f8fa[_0x3bae('0x42')]);return _0x2c87d6[_0x3bae('0x49')](_0x113289);}})[_0x3bae('0x1d')](function(_0x500fd3){if(_0x500fd3){_0x53cc96=_0x500fd3[_0x3bae('0x2e')];if(!_0x14f8fa[_0x3bae('0x2b')]['hasOwnProperty'](_0x3bae('0x30'))){_0x113289[_0x3bae('0x19')]=qs[_0x3bae('0x19')](_0x14f8fa[_0x3bae('0x2b')]['limit']);_0x113289[_0x3bae('0x16')]=qs[_0x3bae('0x16')](_0x14f8fa[_0x3bae('0x2b')][_0x3bae('0x16')]);}return _0x2c87d6[_0x3bae('0x49')](_0x113289);}})[_0x3bae('0x1d')](function(_0x2380e9){if(_0x2380e9){return _0x2380e9?{'count':_0x53cc96,'rows':_0x2380e9}:null;}})[_0x3bae('0x1d')](respondWithResult(_0x9b3ebe,null))[_0x3bae('0x3b')](handleError(_0x9b3ebe,null));};exports[_0x3bae('0x4a')]=function(_0x53ae13,_0x2eb7b3,_0x2c5468){var _0x64e438={};var _0x1969fa={};var _0x1d04ca;var _0x10d0d3;return db['FreshsalesConfiguration'][_0x3bae('0x46')]({'where':{'id':_0x53ae13['params']['id']}})[_0x3bae('0x1d')](handleEntityNotFound(_0x2eb7b3,null))['then'](function(_0x7feb2a){if(_0x7feb2a){_0x1d04ca=_0x7feb2a;_0x1969fa[_0x3bae('0x29')]=_['keys'](db[_0x3bae('0x48')]['rawAttributes']);_0x1969fa[_0x3bae('0x2b')]=_[_0x3bae('0x2a')](_0x53ae13[_0x3bae('0x2b')]);_0x1969fa[_0x3bae('0x2c')]=_[_0x3bae('0x3f')](_0x1969fa['model'],_0x1969fa[_0x3bae('0x2b')]);_0x64e438[_0x3bae('0x2d')]=_[_0x3bae('0x3f')](_0x1969fa[_0x3bae('0x29')],qs[_0x3bae('0x40')](_0x53ae13['query'][_0x3bae('0x40')]));_0x64e438[_0x3bae('0x2d')]=_0x64e438[_0x3bae('0x2d')][_0x3bae('0x2e')]?_0x64e438['attributes']:_0x1969fa[_0x3bae('0x29')];_0x64e438['order']=qs[_0x3bae('0x32')](_0x53ae13[_0x3bae('0x2b')][_0x3bae('0x32')]);_0x64e438[_0x3bae('0x33')]=qs[_0x3bae('0x2c')](_[_0x3bae('0x34')](_0x53ae13['query'],_0x1969fa[_0x3bae('0x2c')]));if(_0x53ae13[_0x3bae('0x2b')][_0x3bae('0x37')]){_0x64e438[_0x3bae('0x33')]=_[_0x3bae('0x35')](_0x64e438['where'],{'$or':_[_0x3bae('0x24')](_0x64e438[_0x3bae('0x2d')],function(_0x30683e){var _0x35822b={};_0x35822b[_0x30683e]={'$like':'%'+_0x53ae13[_0x3bae('0x2b')][_0x3bae('0x37')]+'%'};return _0x35822b;})});}_0x64e438=_[_0x3bae('0x35')]({},_0x64e438,_0x53ae13[_0x3bae('0x42')]);return _0x1d04ca[_0x3bae('0x4a')](_0x64e438);}})['then'](function(_0x28de81){if(_0x28de81){_0x10d0d3=_0x28de81[_0x3bae('0x2e')];if(!_0x53ae13[_0x3bae('0x2b')][_0x3bae('0x2f')](_0x3bae('0x30'))){_0x64e438[_0x3bae('0x19')]=qs['limit'](_0x53ae13[_0x3bae('0x2b')][_0x3bae('0x19')]);_0x64e438[_0x3bae('0x16')]=qs[_0x3bae('0x16')](_0x53ae13[_0x3bae('0x2b')]['offset']);}return _0x1d04ca[_0x3bae('0x4a')](_0x64e438);}})['then'](function(_0x24d7f5){if(_0x24d7f5){return _0x24d7f5?{'count':_0x10d0d3,'rows':_0x24d7f5}:null;}})[_0x3bae('0x1d')](respondWithResult(_0x2eb7b3,null))[_0x3bae('0x3b')](handleError(_0x2eb7b3,null));};
\ No newline at end of file
index 5c0fab8..8873f21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0a=['../../config/environment','exports','int_freshsales_configurations','util','../../config/logger','api','bluebird','path'];(function(_0x113c70,_0x4f216a){var _0x3b5efa=function(_0x2268eb){while(--_0x2268eb){_0x113c70['push'](_0x113c70['shift']());}};_0x3b5efa(++_0x4f216a);}(_0xef0a,0x18b));var _0xaef0=function(_0x37de9e,_0x5a083d){_0x37de9e=_0x37de9e-0x0;var _0x1f066c=_0xef0a[_0x37de9e];return _0x1f066c;};'use strict';var _=require('lodash');var util=require(_0xaef0('0x0'));var logger=require(_0xaef0('0x1'))(_0xaef0('0x2'));var moment=require('moment');var BPromise=require(_0xaef0('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xaef0('0x4'));var rimraf=require('rimraf');var config=require(_0xaef0('0x5'));var attributes=require('./intFreshsalesConfiguration.attributes');module[_0xaef0('0x6')]=function(_0x218587,_0x41c6b4){return _0x218587['define']('FreshsalesConfiguration',attributes,{'tableName':_0xaef0('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7143=['path','rimraf','../../config/environment','./intFreshsalesConfiguration.attributes','exports','define','int_freshsales_configurations','lodash','util','../../config/logger','api','request-promise'];(function(_0x2d0bd7,_0x4557f8){var _0x262ffa=function(_0x2f8b0a){while(--_0x2f8b0a){_0x2d0bd7['push'](_0x2d0bd7['shift']());}};_0x262ffa(++_0x4557f8);}(_0x7143,0x11b));var _0x3714=function(_0x27b2ac,_0x14ea80){_0x27b2ac=_0x27b2ac-0x0;var _0x566ca0=_0x7143[_0x27b2ac];return _0x566ca0;};'use strict';var _=require(_0x3714('0x0'));var util=require(_0x3714('0x1'));var logger=require(_0x3714('0x2'))(_0x3714('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3714('0x4'));var fs=require('fs');var path=require(_0x3714('0x5'));var rimraf=require(_0x3714('0x6'));var config=require(_0x3714('0x7'));var attributes=require(_0x3714('0x8'));module[_0x3714('0x9')]=function(_0x11a63c,_0x38dba8){return _0x11a63c[_0x3714('0xa')]('FreshsalesConfiguration',attributes,{'tableName':_0x3714('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8b2faf8..96a50cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe778=['debug','FreshsalesConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','FreshsalesConfiguration,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','then','info','request\x20sent'];(function(_0x1dafa4,_0x397898){var _0x209e21=function(_0x5096e1){while(--_0x5096e1){_0x1dafa4['push'](_0x1dafa4['shift']());}};_0x209e21(++_0x397898);}(_0xe778,0x99));var _0x8e77=function(_0x59c33f,_0x25aea2){_0x59c33f=_0x59c33f-0x0;var _0x8a5789=_0xe778[_0x59c33f];return _0x8a5789;};'use strict';var _=require('lodash');var util=require(_0x8e77('0x0'));var moment=require(_0x8e77('0x1'));var BPromise=require(_0x8e77('0x2'));var rs=require(_0x8e77('0x3'));var fs=require('fs');var Redis=require(_0x8e77('0x4'));var db=require(_0x8e77('0x5'))['db'];var utils=require(_0x8e77('0x6'));var logger=require('../../config/logger')(_0x8e77('0x7'));var config=require(_0x8e77('0x8'));var jayson=require(_0x8e77('0x9'));var client=jayson[_0x8e77('0xa')][_0x8e77('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1cd94e,_0x11072e,_0x10c0d1){return new BPromise(function(_0x4b8235,_0x705ca7){return client['request'](_0x1cd94e,_0x10c0d1)[_0x8e77('0xc')](function(_0x293b15){logger[_0x8e77('0xd')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x11072e,_0x8e77('0xe'));logger[_0x8e77('0xf')](_0x8e77('0x10'),_0x11072e,_0x8e77('0xe'),JSON[_0x8e77('0x11')](_0x293b15));if(_0x293b15[_0x8e77('0x12')]){if(_0x293b15[_0x8e77('0x12')][_0x8e77('0x13')]===0x1f4){logger[_0x8e77('0x12')](_0x8e77('0x14'),_0x11072e,_0x293b15[_0x8e77('0x12')][_0x8e77('0x15')]);return _0x705ca7(_0x293b15[_0x8e77('0x12')]['message']);}logger[_0x8e77('0x12')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x11072e,_0x293b15[_0x8e77('0x12')][_0x8e77('0x15')]);return _0x4b8235(_0x293b15[_0x8e77('0x12')]['message']);}else{logger[_0x8e77('0xd')](_0x8e77('0x14'),_0x11072e,'request\x20sent');_0x4b8235(_0x293b15[_0x8e77('0x16')][_0x8e77('0x15')]);}})[_0x8e77('0x17')](function(_0x5e5a73){logger['error']('FreshsalesConfiguration,\x20%s,\x20%s',_0x11072e,_0x5e5a73);_0x705ca7(_0x5e5a73);});});}
\ No newline at end of file
+var _0x3a48=['lodash','moment','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','http','request','then','info','FreshsalesConfiguration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch'];(function(_0x5a33ce,_0x20de18){var _0x2828d0=function(_0x595454){while(--_0x595454){_0x5a33ce['push'](_0x5a33ce['shift']());}};_0x2828d0(++_0x20de18);}(_0x3a48,0x64));var _0x83a4=function(_0x3ad20d,_0x3cadba){_0x3ad20d=_0x3ad20d-0x0;var _0x7c47d9=_0x3a48[_0x3ad20d];return _0x7c47d9;};'use strict';var _=require(_0x83a4('0x0'));var util=require('util');var moment=require(_0x83a4('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x83a4('0x2'))['db'];var utils=require(_0x83a4('0x3'));var logger=require(_0x83a4('0x4'))('rpc');var config=require('../../config/environment');var jayson=require(_0x83a4('0x5'));var client=jayson[_0x83a4('0x6')][_0x83a4('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x11d408,_0x3adcff,_0x25339d){return new BPromise(function(_0x273008,_0x484363){return client[_0x83a4('0x8')](_0x11d408,_0x25339d)[_0x83a4('0x9')](function(_0x350645){logger[_0x83a4('0xa')](_0x83a4('0xb'),_0x3adcff,_0x83a4('0xc'));logger[_0x83a4('0xd')]('FreshsalesConfiguration,\x20%s,\x20%s,\x20%s',_0x3adcff,_0x83a4('0xc'),JSON[_0x83a4('0xe')](_0x350645));if(_0x350645[_0x83a4('0xf')]){if(_0x350645[_0x83a4('0xf')][_0x83a4('0x10')]===0x1f4){logger[_0x83a4('0xf')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x3adcff,_0x350645['error']['message']);return _0x484363(_0x350645[_0x83a4('0xf')][_0x83a4('0x11')]);}logger[_0x83a4('0xf')](_0x83a4('0xb'),_0x3adcff,_0x350645[_0x83a4('0xf')]['message']);return _0x273008(_0x350645['error'][_0x83a4('0x11')]);}else{logger[_0x83a4('0xa')]('FreshsalesConfiguration,\x20%s,\x20%s',_0x3adcff,_0x83a4('0xc'));_0x273008(_0x350645[_0x83a4('0x12')][_0x83a4('0x11')]);}})[_0x83a4('0x13')](function(_0x49ab91){logger[_0x83a4('0xf')](_0x83a4('0xb'),_0x3adcff,_0x49ab91);_0x484363(_0x49ab91);});});}
\ No newline at end of file
index a0a6a31..deb8a92 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d0b=['path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intFreshsalesField.controller','isAuthenticated','index','get','/:id','show','post','create','put','delete','destroy','multer'];(function(_0x58417b,_0xc00192){var _0x418f5f=function(_0xce9685){while(--_0xce9685){_0x58417b['push'](_0x58417b['shift']());}};_0x418f5f(++_0xc00192);}(_0x6d0b,0x71));var _0xb6d0=function(_0x5a55e3,_0x10732a){_0x5a55e3=_0x5a55e3-0x0;var _0x2d3443=_0x6d0b[_0x5a55e3];return _0x2d3443;};'use strict';var multer=require(_0xb6d0('0x0'));var util=require('util');var path=require(_0xb6d0('0x1'));var timeout=require('connect-timeout');var express=require(_0xb6d0('0x2'));var router=express[_0xb6d0('0x3')]();var fs_extra=require(_0xb6d0('0x4'));var auth=require(_0xb6d0('0x5'));var interaction=require(_0xb6d0('0x6'));var config=require(_0xb6d0('0x7'));var controller=require(_0xb6d0('0x8'));router['get']('/',auth[_0xb6d0('0x9')](),controller[_0xb6d0('0xa')]);router[_0xb6d0('0xb')](_0xb6d0('0xc'),auth[_0xb6d0('0x9')](),controller[_0xb6d0('0xd')]);router[_0xb6d0('0xe')]('/',auth[_0xb6d0('0x9')](),controller[_0xb6d0('0xf')]);router[_0xb6d0('0x10')](_0xb6d0('0xc'),auth[_0xb6d0('0x9')](),controller['update']);router[_0xb6d0('0x11')]('/:id',auth[_0xb6d0('0x9')](),controller[_0xb6d0('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xa25a=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','/:id','post','put','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x4c978c,_0xbd7d69){var _0x48db9c=function(_0x4127c8){while(--_0x4127c8){_0x4c978c['push'](_0x4c978c['shift']());}};_0x48db9c(++_0xbd7d69);}(_0xa25a,0x160));var _0xaa25=function(_0x4e56f3,_0x3af884){_0x4e56f3=_0x4e56f3-0x0;var _0x263ad2=_0xa25a[_0x4e56f3];return _0x263ad2;};'use strict';var multer=require(_0xaa25('0x0'));var util=require(_0xaa25('0x1'));var path=require(_0xaa25('0x2'));var timeout=require(_0xaa25('0x3'));var express=require(_0xaa25('0x4'));var router=express[_0xaa25('0x5')]();var fs_extra=require(_0xaa25('0x6'));var auth=require(_0xaa25('0x7'));var interaction=require(_0xaa25('0x8'));var config=require('../../config/environment');var controller=require('./intFreshsalesField.controller');router[_0xaa25('0x9')]('/',auth[_0xaa25('0xa')](),controller['index']);router[_0xaa25('0x9')](_0xaa25('0xb'),auth['isAuthenticated'](),controller['show']);router[_0xaa25('0xc')]('/',auth[_0xaa25('0xa')](),controller['create']);router[_0xaa25('0xd')]('/:id',auth[_0xaa25('0xa')](),controller['update']);router[_0xaa25('0xe')](_0xaa25('0xb'),auth['isAuthenticated'](),controller[_0xaa25('0xf')]);module[_0xaa25('0x10')]=router;
\ No newline at end of file
index 3fb6ed7..6ca9ae5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f24=['picklist','variable','STRING','sequelize','ENUM','string','customVariable','keyValue'];(function(_0x1ea430,_0x4b1875){var _0x1a4b47=function(_0xc99524){while(--_0xc99524){_0x1ea430['push'](_0x1ea430['shift']());}};_0x1a4b47(++_0x4b1875);}(_0x8f24,0x113));var _0x48f2=function(_0x1e2af9,_0x4e9b02){_0x1e2af9=_0x1e2af9-0x0;var _0x1ce929=_0x8f24[_0x1e2af9];return _0x1ce929;};'use strict';var Sequelize=require(_0x48f2('0x0'));module['exports']={'type':{'type':Sequelize[_0x48f2('0x1')](_0x48f2('0x2'),'variable',_0x48f2('0x3'),_0x48f2('0x4'),_0x48f2('0x5')),'defaultValue':_0x48f2('0x2')},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x48f2('0x1')]('string',_0x48f2('0x6'),_0x48f2('0x3'))},'keyContent':{'type':Sequelize[_0x48f2('0x7')]},'idField':{'type':Sequelize[_0x48f2('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x48f2('0x7')]}};
\ No newline at end of file
+var _0x5229=['picklist','STRING','string','variable','customVariable','BOOLEAN','sequelize','exports','keyValue'];(function(_0x34d8f7,_0x2abf6b){var _0x201f01=function(_0x3afbbd){while(--_0x3afbbd){_0x34d8f7['push'](_0x34d8f7['shift']());}};_0x201f01(++_0x2abf6b);}(_0x5229,0x1c8));var _0x9522=function(_0x37b0d6,_0x26dd2c){_0x37b0d6=_0x37b0d6-0x0;var _0x4f7e7c=_0x5229[_0x37b0d6];return _0x4f7e7c;};'use strict';var Sequelize=require(_0x9522('0x0'));module[_0x9522('0x1')]={'type':{'type':Sequelize['ENUM']('string','variable','customVariable',_0x9522('0x2'),_0x9522('0x3')),'defaultValue':'string'},'content':{'type':Sequelize[_0x9522('0x4')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0x9522('0x5'),_0x9522('0x6'),_0x9522('0x7'))},'keyContent':{'type':Sequelize[_0x9522('0x4')]},'idField':{'type':Sequelize[_0x9522('0x4')]},'nameField':{'type':Sequelize[_0x9522('0x4')]},'customField':{'type':Sequelize[_0x9522('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 1c0a26f..e7ab163 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76d1=['squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','api','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','save','update','then','destroy','error','stack','name','send','FreshsalesField','rawAttributes','fieldName','type','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','to-csv','fs-extra'];(function(_0x30059c,_0x58098a){var _0x27e3b7=function(_0x7481ef){while(--_0x7481ef){_0x30059c['push'](_0x30059c['shift']());}};_0x27e3b7(++_0x58098a);}(_0x76d1,0x106));var _0x176d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x76d1[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x176d('0x0'));var rimraf=require(_0x176d('0x1'));var zipdir=require(_0x176d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x176d('0x3'));var BPromise=require(_0x176d('0x4'));var Mustache=require(_0x176d('0x5'));var util=require(_0x176d('0x6'));var path=require('path');var sox=require(_0x176d('0x7'));var csv=require(_0x176d('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x176d('0x9'));var _=require('lodash');var squel=require(_0x176d('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x176d('0xb'));var toCsv=require('to-csv');var querystring=require(_0x176d('0xc'));var Papa=require(_0x176d('0xd'));var Redis=require('ioredis');var authService=require(_0x176d('0xe'));var qs=require(_0x176d('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x176d('0x10'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x176d('0x11'))['db'];function respondWithStatusCode(_0x284420,_0x1e1c37){_0x1e1c37=_0x1e1c37||0xcc;return function(_0x258522){if(_0x258522){return _0x284420[_0x176d('0x12')](_0x1e1c37);}return _0x284420[_0x176d('0x13')](_0x1e1c37)[_0x176d('0x14')]();};}function respondWithResult(_0x47b513,_0x563f0f){_0x563f0f=_0x563f0f||0xc8;return function(_0x33f7b8){if(_0x33f7b8){return _0x47b513['status'](_0x563f0f)[_0x176d('0x15')](_0x33f7b8);}};}function respondWithFilteredResult(_0x3b091e,_0x4023d9){return function(_0x49e5b5){if(_0x49e5b5){var _0x2527a7=typeof _0x4023d9[_0x176d('0x16')]==='undefined'&&typeof _0x4023d9[_0x176d('0x17')]===_0x176d('0x18');var _0x47af47=_0x49e5b5[_0x176d('0x19')];var _0x2dbd86=_0x2527a7?0x0:_0x4023d9['offset'];var _0x9c0fe6=_0x2527a7?_0x49e5b5['count']:_0x4023d9[_0x176d('0x16')]+_0x4023d9[_0x176d('0x17')];var _0x38c57d;if(_0x9c0fe6>=_0x47af47){_0x9c0fe6=_0x47af47;_0x38c57d=0xc8;}else{_0x38c57d=0xce;}_0x3b091e['status'](_0x38c57d);return _0x3b091e['set'](_0x176d('0x1a'),_0x2dbd86+'-'+_0x9c0fe6+'/'+_0x47af47)[_0x176d('0x15')](_0x49e5b5);}return null;};}function patchUpdates(_0x415102){return function(_0x4b2211){try{jsonpatch[_0x176d('0x1b')](_0x4b2211,_0x415102,!![]);}catch(_0x1cd570){return BPromise['reject'](_0x1cd570);}return _0x4b2211[_0x176d('0x1c')]();};}function saveUpdates(_0x54ba52,_0x56b7be){return function(_0x117616){if(_0x117616){return _0x117616[_0x176d('0x1d')](_0x54ba52)[_0x176d('0x1e')](function(_0x11571c){return _0x11571c;});}return null;};}function removeEntity(_0xa0eb02,_0x39dce9){return function(_0x23e942){if(_0x23e942){return _0x23e942[_0x176d('0x1f')]()['then'](function(){_0xa0eb02[_0x176d('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x49a709,_0x29f69c){return function(_0x197ff0){if(!_0x197ff0){_0x49a709['sendStatus'](0x194);}return _0x197ff0;};}function handleError(_0xbbdce4,_0x24eeab){_0x24eeab=_0x24eeab||0x1f4;return function(_0x3a4152){logger[_0x176d('0x20')](_0x3a4152[_0x176d('0x21')]);if(_0x3a4152[_0x176d('0x22')]){delete _0x3a4152[_0x176d('0x22')];}_0xbbdce4[_0x176d('0x13')](_0x24eeab)[_0x176d('0x23')](_0x3a4152);};}exports['index']=function(_0x4216b9,_0x412208){var _0x59dd61={},_0x84c125={},_0x5717a9={'count':0x0,'rows':[]};var _0x8c4a09=_['map'](db[_0x176d('0x24')][_0x176d('0x25')],function(_0x3230ee){return{'name':_0x3230ee[_0x176d('0x26')],'type':_0x3230ee[_0x176d('0x27')]['key']};});_0x84c125[_0x176d('0x28')]=_[_0x176d('0x29')](_0x8c4a09,_0x176d('0x22'));_0x84c125['query']=_[_0x176d('0x2a')](_0x4216b9[_0x176d('0x2b')]);_0x84c125[_0x176d('0x2c')]=_[_0x176d('0x2d')](_0x84c125[_0x176d('0x28')],_0x84c125['query']);_0x59dd61[_0x176d('0x2e')]=_[_0x176d('0x2d')](_0x84c125[_0x176d('0x28')],qs[_0x176d('0x2f')](_0x4216b9[_0x176d('0x2b')]['fields']));_0x59dd61[_0x176d('0x2e')]=_0x59dd61['attributes'][_0x176d('0x30')]?_0x59dd61[_0x176d('0x2e')]:_0x84c125['model'];if(!_0x4216b9[_0x176d('0x2b')][_0x176d('0x31')](_0x176d('0x32'))){_0x59dd61[_0x176d('0x17')]=qs['limit'](_0x4216b9['query'][_0x176d('0x17')]);_0x59dd61[_0x176d('0x16')]=qs['offset'](_0x4216b9['query'][_0x176d('0x16')]);}_0x59dd61[_0x176d('0x33')]=qs[_0x176d('0x34')](_0x4216b9[_0x176d('0x2b')]['sort']);_0x59dd61['where']=qs['filters'](_[_0x176d('0x35')](_0x4216b9['query'],_0x84c125[_0x176d('0x2c')]),_0x8c4a09);if(_0x4216b9[_0x176d('0x2b')][_0x176d('0x36')]){_0x59dd61[_0x176d('0x37')]=_[_0x176d('0x38')](_0x59dd61['where'],{'$or':_[_0x176d('0x29')](_0x8c4a09,function(_0x1e0a15){if(_0x1e0a15[_0x176d('0x27')]!==_0x176d('0x39')){var _0x13e550={};_0x13e550[_0x1e0a15[_0x176d('0x22')]]={'$like':'%'+_0x4216b9[_0x176d('0x2b')][_0x176d('0x36')]+'%'};return _0x13e550;}})});}_0x59dd61=_[_0x176d('0x38')]({},_0x59dd61,_0x4216b9[_0x176d('0x3a')]);var _0x3f4b5d={'where':_0x59dd61[_0x176d('0x37')]};return db['FreshsalesField'][_0x176d('0x19')](_0x3f4b5d)['then'](function(_0x38eb55){_0x5717a9['count']=_0x38eb55;if(_0x4216b9['query'][_0x176d('0x3b')]){_0x59dd61[_0x176d('0x3c')]=[{'all':!![]}];}return db[_0x176d('0x24')][_0x176d('0x3d')](_0x59dd61);})[_0x176d('0x1e')](function(_0x5e2929){_0x5717a9['rows']=_0x5e2929;return _0x5717a9;})[_0x176d('0x1e')](respondWithFilteredResult(_0x412208,_0x59dd61))[_0x176d('0x3e')](handleError(_0x412208,null));};exports[_0x176d('0x3f')]=function(_0x4e25e1,_0x5a3575){var _0x27d883={'raw':!![],'where':{'id':_0x4e25e1[_0x176d('0x40')]['id']}},_0x5761c7={};_0x5761c7['model']=_[_0x176d('0x2a')](db[_0x176d('0x24')][_0x176d('0x25')]);_0x5761c7[_0x176d('0x2b')]=_[_0x176d('0x2a')](_0x4e25e1[_0x176d('0x2b')]);_0x5761c7[_0x176d('0x2c')]=_[_0x176d('0x2d')](_0x5761c7[_0x176d('0x28')],_0x5761c7[_0x176d('0x2b')]);_0x27d883['attributes']=_['intersection'](_0x5761c7[_0x176d('0x28')],qs[_0x176d('0x2f')](_0x4e25e1['query'][_0x176d('0x2f')]));_0x27d883[_0x176d('0x2e')]=_0x27d883[_0x176d('0x2e')][_0x176d('0x30')]?_0x27d883[_0x176d('0x2e')]:_0x5761c7[_0x176d('0x28')];if(_0x4e25e1['query'][_0x176d('0x3b')]){_0x27d883[_0x176d('0x3c')]=[{'all':!![]}];}_0x27d883=_['merge']({},_0x27d883,_0x4e25e1[_0x176d('0x3a')]);return db[_0x176d('0x24')][_0x176d('0x41')](_0x27d883)[_0x176d('0x1e')](handleEntityNotFound(_0x5a3575,null))[_0x176d('0x1e')](respondWithResult(_0x5a3575,null))[_0x176d('0x3e')](handleError(_0x5a3575,null));};exports[_0x176d('0x42')]=function(_0x526f36,_0x5e0d93){return db[_0x176d('0x24')][_0x176d('0x42')](_0x526f36[_0x176d('0x43')],{})['then'](respondWithResult(_0x5e0d93,0xc9))['catch'](handleError(_0x5e0d93,null));};exports[_0x176d('0x1d')]=function(_0xa8fe1,_0x4e1da7){if(_0xa8fe1['body']['id']){delete _0xa8fe1[_0x176d('0x43')]['id'];}return db['FreshsalesField']['find']({'where':{'id':_0xa8fe1[_0x176d('0x40')]['id']}})[_0x176d('0x1e')](handleEntityNotFound(_0x4e1da7,null))[_0x176d('0x1e')](saveUpdates(_0xa8fe1[_0x176d('0x43')],null))[_0x176d('0x1e')](respondWithResult(_0x4e1da7,null))[_0x176d('0x3e')](handleError(_0x4e1da7,null));};exports[_0x176d('0x1f')]=function(_0x227e83,_0x48a030){return db[_0x176d('0x24')]['find']({'where':{'id':_0x227e83[_0x176d('0x40')]['id']}})[_0x176d('0x1e')](handleEntityNotFound(_0x48a030,null))[_0x176d('0x1e')](removeEntity(_0x48a030,null))[_0x176d('0x3e')](handleError(_0x48a030,null));};
\ No newline at end of file
+var _0x5c50=['type','key','model','query','intersection','fields','attributes','nolimit','order','sort','where','filters','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','params','keys','length','options','find','create','body','eml-format','request-promise','util','sox','to-csv','lodash','squel','crypto','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','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','FreshsalesField','rawAttributes','fieldName'];(function(_0x187dcb,_0x2f3d32){var _0x27f48b=function(_0x4451ad){while(--_0x4451ad){_0x187dcb['push'](_0x187dcb['shift']());}};_0x27f48b(++_0x2f3d32);}(_0x5c50,0xab));var _0x05c5=function(_0x81dcac,_0x8ff7db){_0x81dcac=_0x81dcac-0x0;var _0xc7803b=_0x5c50[_0x81dcac];return _0xc7803b;};'use strict';var emlformat=require(_0x05c5('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x05c5('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x05c5('0x2'));var path=require('path');var sox=require(_0x05c5('0x3'));var csv=require(_0x05c5('0x4'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x05c5('0x5'));var squel=require(_0x05c5('0x6'));var crypto=require(_0x05c5('0x7'));var jsforce=require('jsforce');var deskjs=require(_0x05c5('0x8'));var toCsv=require(_0x05c5('0x4'));var querystring=require(_0x05c5('0x9'));var Papa=require(_0x05c5('0xa'));var Redis=require(_0x05c5('0xb'));var authService=require(_0x05c5('0xc'));var qs=require(_0x05c5('0xd'));var as=require(_0x05c5('0xe'));var hardwareService=require(_0x05c5('0xf'));var logger=require(_0x05c5('0x10'))(_0x05c5('0x11'));var utils=require(_0x05c5('0x12'));var config=require(_0x05c5('0x13'));var licenseUtil=require(_0x05c5('0x14'));var db=require(_0x05c5('0x15'))['db'];function respondWithStatusCode(_0x53ed27,_0x1d38cd){_0x1d38cd=_0x1d38cd||0xcc;return function(_0x425ce7){if(_0x425ce7){return _0x53ed27[_0x05c5('0x16')](_0x1d38cd);}return _0x53ed27[_0x05c5('0x17')](_0x1d38cd)[_0x05c5('0x18')]();};}function respondWithResult(_0x2fde73,_0x5e41cf){_0x5e41cf=_0x5e41cf||0xc8;return function(_0x3d1313){if(_0x3d1313){return _0x2fde73[_0x05c5('0x17')](_0x5e41cf)['json'](_0x3d1313);}};}function respondWithFilteredResult(_0x54b4f2,_0x36bd9a){return function(_0xff188d){if(_0xff188d){var _0x20a388=typeof _0x36bd9a['offset']===_0x05c5('0x19')&&typeof _0x36bd9a[_0x05c5('0x1a')]===_0x05c5('0x19');var _0x1f588f=_0xff188d[_0x05c5('0x1b')];var _0xd0aacf=_0x20a388?0x0:_0x36bd9a[_0x05c5('0x1c')];var _0x2b84df=_0x20a388?_0xff188d[_0x05c5('0x1b')]:_0x36bd9a['offset']+_0x36bd9a[_0x05c5('0x1a')];var _0x24c5e1;if(_0x2b84df>=_0x1f588f){_0x2b84df=_0x1f588f;_0x24c5e1=0xc8;}else{_0x24c5e1=0xce;}_0x54b4f2[_0x05c5('0x17')](_0x24c5e1);return _0x54b4f2[_0x05c5('0x1d')](_0x05c5('0x1e'),_0xd0aacf+'-'+_0x2b84df+'/'+_0x1f588f)['json'](_0xff188d);}return null;};}function patchUpdates(_0x11302f){return function(_0x6dcff7){try{jsonpatch[_0x05c5('0x1f')](_0x6dcff7,_0x11302f,!![]);}catch(_0x17c4f4){return BPromise[_0x05c5('0x20')](_0x17c4f4);}return _0x6dcff7[_0x05c5('0x21')]();};}function saveUpdates(_0x25de0a,_0x5ec765){return function(_0x46ddf4){if(_0x46ddf4){return _0x46ddf4[_0x05c5('0x22')](_0x25de0a)[_0x05c5('0x23')](function(_0x58b38f){return _0x58b38f;});}return null;};}function removeEntity(_0x48b138,_0x19729f){return function(_0x432b3c){if(_0x432b3c){return _0x432b3c[_0x05c5('0x24')]()['then'](function(){_0x48b138[_0x05c5('0x17')](0xcc)[_0x05c5('0x18')]();});}};}function handleEntityNotFound(_0x36cb80,_0x32407c){return function(_0x4682a6){if(!_0x4682a6){_0x36cb80[_0x05c5('0x16')](0x194);}return _0x4682a6;};}function handleError(_0x281082,_0x1c6ed0){_0x1c6ed0=_0x1c6ed0||0x1f4;return function(_0x5c9d2f){logger[_0x05c5('0x25')](_0x5c9d2f[_0x05c5('0x26')]);if(_0x5c9d2f[_0x05c5('0x27')]){delete _0x5c9d2f[_0x05c5('0x27')];}_0x281082[_0x05c5('0x17')](_0x1c6ed0)[_0x05c5('0x28')](_0x5c9d2f);};}exports['index']=function(_0x34e9c5,_0x2ed254){var _0x5d360a={},_0x16b197={},_0x4735a5={'count':0x0,'rows':[]};var _0x93e4df=_[_0x05c5('0x29')](db[_0x05c5('0x2a')][_0x05c5('0x2b')],function(_0x38bdcb){return{'name':_0x38bdcb[_0x05c5('0x2c')],'type':_0x38bdcb[_0x05c5('0x2d')][_0x05c5('0x2e')]};});_0x16b197[_0x05c5('0x2f')]=_[_0x05c5('0x29')](_0x93e4df,_0x05c5('0x27'));_0x16b197['query']=_['keys'](_0x34e9c5[_0x05c5('0x30')]);_0x16b197['filters']=_[_0x05c5('0x31')](_0x16b197[_0x05c5('0x2f')],_0x16b197['query']);_0x5d360a['attributes']=_['intersection'](_0x16b197['model'],qs['fields'](_0x34e9c5[_0x05c5('0x30')][_0x05c5('0x32')]));_0x5d360a[_0x05c5('0x33')]=_0x5d360a[_0x05c5('0x33')]['length']?_0x5d360a['attributes']:_0x16b197[_0x05c5('0x2f')];if(!_0x34e9c5[_0x05c5('0x30')]['hasOwnProperty'](_0x05c5('0x34'))){_0x5d360a[_0x05c5('0x1a')]=qs[_0x05c5('0x1a')](_0x34e9c5[_0x05c5('0x30')][_0x05c5('0x1a')]);_0x5d360a[_0x05c5('0x1c')]=qs['offset'](_0x34e9c5[_0x05c5('0x30')][_0x05c5('0x1c')]);}_0x5d360a[_0x05c5('0x35')]=qs[_0x05c5('0x36')](_0x34e9c5[_0x05c5('0x30')]['sort']);_0x5d360a[_0x05c5('0x37')]=qs[_0x05c5('0x38')](_['pick'](_0x34e9c5[_0x05c5('0x30')],_0x16b197[_0x05c5('0x38')]),_0x93e4df);if(_0x34e9c5['query'][_0x05c5('0x39')]){_0x5d360a[_0x05c5('0x37')]=_[_0x05c5('0x3a')](_0x5d360a[_0x05c5('0x37')],{'$or':_[_0x05c5('0x29')](_0x93e4df,function(_0x238c8e){if(_0x238c8e[_0x05c5('0x2d')]!==_0x05c5('0x3b')){var _0x1260a0={};_0x1260a0[_0x238c8e[_0x05c5('0x27')]]={'$like':'%'+_0x34e9c5[_0x05c5('0x30')][_0x05c5('0x39')]+'%'};return _0x1260a0;}})});}_0x5d360a=_[_0x05c5('0x3a')]({},_0x5d360a,_0x34e9c5['options']);var _0x452df2={'where':_0x5d360a[_0x05c5('0x37')]};return db[_0x05c5('0x2a')]['count'](_0x452df2)['then'](function(_0x35cd9c){_0x4735a5[_0x05c5('0x1b')]=_0x35cd9c;if(_0x34e9c5[_0x05c5('0x30')][_0x05c5('0x3c')]){_0x5d360a[_0x05c5('0x3d')]=[{'all':!![]}];}return db[_0x05c5('0x2a')][_0x05c5('0x3e')](_0x5d360a);})[_0x05c5('0x23')](function(_0x30d4ef){_0x4735a5[_0x05c5('0x3f')]=_0x30d4ef;return _0x4735a5;})[_0x05c5('0x23')](respondWithFilteredResult(_0x2ed254,_0x5d360a))[_0x05c5('0x40')](handleError(_0x2ed254,null));};exports['show']=function(_0x171c16,_0x4c059a){var _0x3b73b3={'raw':!![],'where':{'id':_0x171c16[_0x05c5('0x41')]['id']}},_0x5d7793={};_0x5d7793[_0x05c5('0x2f')]=_[_0x05c5('0x42')](db[_0x05c5('0x2a')][_0x05c5('0x2b')]);_0x5d7793[_0x05c5('0x30')]=_[_0x05c5('0x42')](_0x171c16[_0x05c5('0x30')]);_0x5d7793[_0x05c5('0x38')]=_[_0x05c5('0x31')](_0x5d7793[_0x05c5('0x2f')],_0x5d7793[_0x05c5('0x30')]);_0x3b73b3[_0x05c5('0x33')]=_['intersection'](_0x5d7793[_0x05c5('0x2f')],qs['fields'](_0x171c16[_0x05c5('0x30')]['fields']));_0x3b73b3[_0x05c5('0x33')]=_0x3b73b3[_0x05c5('0x33')][_0x05c5('0x43')]?_0x3b73b3['attributes']:_0x5d7793['model'];if(_0x171c16[_0x05c5('0x30')][_0x05c5('0x3c')]){_0x3b73b3[_0x05c5('0x3d')]=[{'all':!![]}];}_0x3b73b3=_[_0x05c5('0x3a')]({},_0x3b73b3,_0x171c16[_0x05c5('0x44')]);return db['FreshsalesField'][_0x05c5('0x45')](_0x3b73b3)[_0x05c5('0x23')](handleEntityNotFound(_0x4c059a,null))[_0x05c5('0x23')](respondWithResult(_0x4c059a,null))['catch'](handleError(_0x4c059a,null));};exports[_0x05c5('0x46')]=function(_0x3d8050,_0x468598){return db['FreshsalesField'][_0x05c5('0x46')](_0x3d8050[_0x05c5('0x47')],{})['then'](respondWithResult(_0x468598,0xc9))['catch'](handleError(_0x468598,null));};exports[_0x05c5('0x22')]=function(_0x415c69,_0x35b794){if(_0x415c69[_0x05c5('0x47')]['id']){delete _0x415c69['body']['id'];}return db['FreshsalesField'][_0x05c5('0x45')]({'where':{'id':_0x415c69[_0x05c5('0x41')]['id']}})[_0x05c5('0x23')](handleEntityNotFound(_0x35b794,null))['then'](saveUpdates(_0x415c69[_0x05c5('0x47')],null))[_0x05c5('0x23')](respondWithResult(_0x35b794,null))[_0x05c5('0x40')](handleError(_0x35b794,null));};exports[_0x05c5('0x24')]=function(_0x46b461,_0x3e23ba){return db['FreshsalesField'][_0x05c5('0x45')]({'where':{'id':_0x46b461['params']['id']}})[_0x05c5('0x23')](handleEntityNotFound(_0x3e23ba,null))[_0x05c5('0x23')](removeEntity(_0x3e23ba,null))['catch'](handleError(_0x3e23ba,null));};
\ No newline at end of file
index ecc3068..1790f72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2eba=['FieldId','util','../../config/logger','api','moment','path','../../config/environment','./intFreshsalesField.attributes','exports','int_freshsales_fields','idField'];(function(_0x19194f,_0x24c1a0){var _0x571264=function(_0x515361){while(--_0x515361){_0x19194f['push'](_0x19194f['shift']());}};_0x571264(++_0x24c1a0);}(_0x2eba,0xc7));var _0xa2eb=function(_0x4a463a,_0x16dd8d){_0x4a463a=_0x4a463a-0x0;var _0x43d08d=_0x2eba[_0x4a463a];return _0x43d08d;};'use strict';var _=require('lodash');var util=require(_0xa2eb('0x0'));var logger=require(_0xa2eb('0x1'))(_0xa2eb('0x2'));var moment=require(_0xa2eb('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0xa2eb('0x4'));var rimraf=require('rimraf');var config=require(_0xa2eb('0x5'));var attributes=require(_0xa2eb('0x6'));module[_0xa2eb('0x7')]=function(_0x1e6fa2,_0x575a5c){return _0x1e6fa2['define']('FreshsalesField',attributes,{'tableName':_0xa2eb('0x8'),'paranoid':![],'indexes':[{'name':'freshsales_unique_index','fields':[_0xa2eb('0x9'),_0xa2eb('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x556a=['api','moment','bluebird','request-promise','path','rimraf','./intFreshsalesField.attributes','exports','define','int_freshsales_fields','freshsales_unique_index','idField','FieldId','lodash','util','../../config/logger'];(function(_0x47a349,_0x4699d9){var _0x18ab75=function(_0x210796){while(--_0x210796){_0x47a349['push'](_0x47a349['shift']());}};_0x18ab75(++_0x4699d9);}(_0x556a,0x1dd));var _0xa556=function(_0x1150dc,_0x3e5a8a){_0x1150dc=_0x1150dc-0x0;var _0xdf8174=_0x556a[_0x1150dc];return _0xdf8174;};'use strict';var _=require(_0xa556('0x0'));var util=require(_0xa556('0x1'));var logger=require(_0xa556('0x2'))(_0xa556('0x3'));var moment=require(_0xa556('0x4'));var BPromise=require(_0xa556('0x5'));var rp=require(_0xa556('0x6'));var fs=require('fs');var path=require(_0xa556('0x7'));var rimraf=require(_0xa556('0x8'));var config=require('../../config/environment');var attributes=require(_0xa556('0x9'));module[_0xa556('0xa')]=function(_0x3339aa,_0x3095b0){return _0x3339aa[_0xa556('0xb')]('FreshsalesField',attributes,{'tableName':_0xa556('0xc'),'paranoid':![],'indexes':[{'name':_0xa556('0xd'),'fields':[_0xa556('0xe'),_0xa556('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index cabc1d0..6c39fe9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90b1=['message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','http','request','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x41e66a,_0x5064f4){var _0x38988a=function(_0x49011f){while(--_0x49011f){_0x41e66a['push'](_0x41e66a['shift']());}};_0x38988a(++_0x5064f4);}(_0x90b1,0x1bb));var _0x190b=function(_0xf9a6cf,_0x11870e){_0xf9a6cf=_0xf9a6cf-0x0;var _0x59e2bc=_0x90b1[_0xf9a6cf];return _0x59e2bc;};'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')]('FreshsalesField,\x20%s,\x20%s',_0x3b57f7,_0x5c63d9);_0x802924(_0x5c63d9);});});}
\ No newline at end of file
+var _0xba34=['../../config/environment','jayson/promise','client','http','request','then','info','FreshsalesField,\x20%s,\x20%s','request\x20sent','debug','FreshsalesField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/logger','rpc'];(function(_0x652cd4,_0x4f20f6){var _0x49f3bf=function(_0x25643a){while(--_0x25643a){_0x652cd4['push'](_0x652cd4['shift']());}};_0x49f3bf(++_0x4f20f6);}(_0xba34,0x119));var _0x4ba3=function(_0x1bdcb7,_0x336a1e){_0x1bdcb7=_0x1bdcb7-0x0;var _0x5137fe=_0xba34[_0x1bdcb7];return _0x5137fe;};'use strict';var _=require(_0x4ba3('0x0'));var util=require(_0x4ba3('0x1'));var moment=require(_0x4ba3('0x2'));var BPromise=require(_0x4ba3('0x3'));var rs=require(_0x4ba3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x4ba3('0x5'))(_0x4ba3('0x6'));var config=require(_0x4ba3('0x7'));var jayson=require(_0x4ba3('0x8'));var client=jayson[_0x4ba3('0x9')][_0x4ba3('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xe5f99a,_0x585f2d,_0x6254fb){return new BPromise(function(_0x368eee,_0x2df7f3){return client[_0x4ba3('0xb')](_0xe5f99a,_0x6254fb)[_0x4ba3('0xc')](function(_0xcf1ec3){logger[_0x4ba3('0xd')](_0x4ba3('0xe'),_0x585f2d,_0x4ba3('0xf'));logger[_0x4ba3('0x10')](_0x4ba3('0x11'),_0x585f2d,'request\x20sent',JSON[_0x4ba3('0x12')](_0xcf1ec3));if(_0xcf1ec3[_0x4ba3('0x13')]){if(_0xcf1ec3['error'][_0x4ba3('0x14')]===0x1f4){logger['error'](_0x4ba3('0xe'),_0x585f2d,_0xcf1ec3['error'][_0x4ba3('0x15')]);return _0x2df7f3(_0xcf1ec3[_0x4ba3('0x13')][_0x4ba3('0x15')]);}logger[_0x4ba3('0x13')](_0x4ba3('0xe'),_0x585f2d,_0xcf1ec3[_0x4ba3('0x13')][_0x4ba3('0x15')]);return _0x368eee(_0xcf1ec3[_0x4ba3('0x13')][_0x4ba3('0x15')]);}else{logger[_0x4ba3('0xd')](_0x4ba3('0xe'),_0x585f2d,_0x4ba3('0xf'));_0x368eee(_0xcf1ec3[_0x4ba3('0x16')][_0x4ba3('0x15')]);}})[_0x4ba3('0x17')](function(_0x1b7776){logger['error'](_0x4ba3('0xe'),_0x585f2d,_0x1b7776);_0x2df7f3(_0x1b7776);});});}
\ No newline at end of file
index da1c027..2c74751 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','./intSalesforceAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x1a4ea7,_0x44af17){var _0x39d1d9=function(_0x485494){while(--_0x485494){_0x1a4ea7['push'](_0x1a4ea7['shift']());}};_0x39d1d9(++_0x44af17);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'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/configurations',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/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSalesforceAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x4e13b0,_0x1c47a6){var _0x56ea2a=function(_0x34426f){while(--_0x34426f){_0x4e13b0['push'](_0x4e13b0['shift']());}};_0x56ea2a(++_0x1c47a6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0xa9e0[_0x1da04e];return _0xdd8c41;};'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/configurations',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/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
index 5be0d6f..69d130b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a47=['sequelize','exports','STRING','username','ENUM','integrationTab'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x6a47,0x84));var _0x76a4=function(_0x40a045,_0x516f0e){_0x40a045=_0x40a045-0x0;var _0x1a687c=_0x6a47[_0x40a045];return _0x1a687c;};'use strict';var Sequelize=require(_0x76a4('0x0'));module[_0x76a4('0x1')]={'name':{'type':Sequelize[_0x76a4('0x2')]},'description':{'type':Sequelize[_0x76a4('0x2')]},'username':{'type':Sequelize[_0x76a4('0x2')],'unique':_0x76a4('0x3')},'remoteUri':{'type':Sequelize[_0x76a4('0x2')]},'password':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0x76a4('0x2')]},'clientSecret':{'type':Sequelize[_0x76a4('0x2')]},'securityToken':{'type':Sequelize[_0x76a4('0x2')]},'serverUrl':{'type':Sequelize[_0x76a4('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x76a4('0x4')](_0x76a4('0x5'),'newTab'),'defaultValue':_0x76a4('0x5')}};
\ No newline at end of file
+var _0x419f=['ENUM','integrationTab','newTab','sequelize','exports','STRING','username'];(function(_0x6c910f,_0x548d14){var _0x1b5af4=function(_0x55dfc4){while(--_0x55dfc4){_0x6c910f['push'](_0x6c910f['shift']());}};_0x1b5af4(++_0x548d14);}(_0x419f,0x176));var _0xf419=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x419f[_0x2d7f0e];return _0x110b07;};'use strict';var Sequelize=require(_0xf419('0x0'));module[_0xf419('0x1')]={'name':{'type':Sequelize[_0xf419('0x2')]},'description':{'type':Sequelize[_0xf419('0x2')]},'username':{'type':Sequelize[_0xf419('0x2')],'unique':_0xf419('0x3')},'remoteUri':{'type':Sequelize['STRING']},'password':{'type':Sequelize[_0xf419('0x2')]},'clientId':{'type':Sequelize['STRING']},'clientSecret':{'type':Sequelize[_0xf419('0x2')]},'securityToken':{'type':Sequelize[_0xf419('0x2')]},'serverUrl':{'type':Sequelize[_0xf419('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0xf419('0x4')](_0xf419('0x5'),_0xf419('0x6')),'defaultValue':_0xf419('0x5')}};
\ No newline at end of file
index 337adea..454aebd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x473a=['slice','substring','lastIndexOf','Connection','clientSecret','login','isNil','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Subject','string','int','picklist','boolean','email','textarea','phone','remove','includes','label','custom','picklistValues','value','true','False','false','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','send','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','map','SalesforceAccount','type','key','model','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','pick','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','length','find','create','body','getConfigurations','findOne','SalesforceConfiguration','order','AccountId','Subjects','getSubjects','getDescriptions','channel','SalesforceField','getFields','Task','remoteUri','clientId','username','password','securityToken'];(function(_0x257c45,_0x3555b3){var _0x24454c=function(_0x2faea1){while(--_0x2faea1){_0x257c45['push'](_0x257c45['shift']());}};_0x24454c(++_0x3555b3);}(_0x473a,0x1a4));var _0xa473=function(_0x329d5b,_0x146ff1){_0x329d5b=_0x329d5b-0x0;var _0x250c0e=_0x473a[_0x329d5b];return _0x250c0e;};'use strict';var emlformat=require(_0xa473('0x0'));var rimraf=require(_0xa473('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa473('0x2'));var moment=require(_0xa473('0x3'));var BPromise=require(_0xa473('0x4'));var Mustache=require(_0xa473('0x5'));var util=require(_0xa473('0x6'));var path=require(_0xa473('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa473('0x8'));var _=require(_0xa473('0x9'));var squel=require(_0xa473('0xa'));var crypto=require(_0xa473('0xb'));var jsforce=require(_0xa473('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xa473('0xd'));var Papa=require('papaparse');var Redis=require(_0xa473('0xe'));var authService=require(_0xa473('0xf'));var qs=require(_0xa473('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xa473('0x11'))(_0xa473('0x12'));var utils=require(_0xa473('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xa473('0x14'));var db=require(_0xa473('0x15'))['db'];var integrations=require(_0xa473('0x16'));function respondWithStatusCode(_0x388235,_0x3cc8e5){_0x3cc8e5=_0x3cc8e5||0xcc;return function(_0x5e8ed1){if(_0x5e8ed1){return _0x388235[_0xa473('0x17')](_0x3cc8e5);}return _0x388235[_0xa473('0x18')](_0x3cc8e5)[_0xa473('0x19')]();};}function respondWithResult(_0x161fe1,_0x6baabe){_0x6baabe=_0x6baabe||0xc8;return function(_0x2f920c){if(_0x2f920c){return _0x161fe1[_0xa473('0x18')](_0x6baabe)[_0xa473('0x1a')](_0x2f920c);}};}function respondWithFilteredResult(_0x4408e5,_0x4a765e){return function(_0x6a4e){if(_0x6a4e){var _0x1a773f=typeof _0x4a765e[_0xa473('0x1b')]==='undefined'&&typeof _0x4a765e[_0xa473('0x1c')]===_0xa473('0x1d');var _0x5a4bf2=_0x6a4e['count'];var _0x3f11f6=_0x1a773f?0x0:_0x4a765e['offset'];var _0x2e5a83=_0x1a773f?_0x6a4e[_0xa473('0x1e')]:_0x4a765e['offset']+_0x4a765e[_0xa473('0x1c')];var _0xbd2321;if(_0x2e5a83>=_0x5a4bf2){_0x2e5a83=_0x5a4bf2;_0xbd2321=0xc8;}else{_0xbd2321=0xce;}_0x4408e5[_0xa473('0x18')](_0xbd2321);return _0x4408e5[_0xa473('0x1f')](_0xa473('0x20'),_0x3f11f6+'-'+_0x2e5a83+'/'+_0x5a4bf2)[_0xa473('0x1a')](_0x6a4e);}return null;};}function patchUpdates(_0x178bfa){return function(_0x4309e3){try{jsonpatch[_0xa473('0x21')](_0x4309e3,_0x178bfa,!![]);}catch(_0x395213){return BPromise[_0xa473('0x22')](_0x395213);}return _0x4309e3[_0xa473('0x23')]();};}function saveUpdates(_0x324337,_0x2ff691){return function(_0x3c8043){if(_0x3c8043){return _0x3c8043[_0xa473('0x24')](_0x324337)[_0xa473('0x25')](function(_0x3cb9c4){return _0x3cb9c4;});}return null;};}function removeEntity(_0xec543f,_0x19604e){return function(_0x5a679f){if(_0x5a679f){return _0x5a679f[_0xa473('0x26')]()[_0xa473('0x25')](function(){_0xec543f[_0xa473('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x500bba,_0x356c16){return function(_0x290905){if(!_0x290905){_0x500bba[_0xa473('0x17')](0x194);}return _0x290905;};}function handleError(_0x14c6a5,_0xc5bd1){_0xc5bd1=_0xc5bd1||0x1f4;return function(_0x57cac4){logger[_0xa473('0x27')](_0x57cac4[_0xa473('0x28')]);if(_0x57cac4[_0xa473('0x29')]){delete _0x57cac4[_0xa473('0x29')];}_0x14c6a5[_0xa473('0x18')](_0xc5bd1)['send'](_0x57cac4);};}exports[_0xa473('0x2a')]=function(_0x37efcd,_0x56c28c){var _0x4b39cc={},_0x105551={},_0x529c06={'count':0x0,'rows':[]};var _0x3d4895=_[_0xa473('0x2b')](db[_0xa473('0x2c')]['rawAttributes'],function(_0x5bbb82){return{'name':_0x5bbb82['fieldName'],'type':_0x5bbb82[_0xa473('0x2d')][_0xa473('0x2e')]};});_0x105551[_0xa473('0x2f')]=_[_0xa473('0x2b')](_0x3d4895,_0xa473('0x29'));_0x105551[_0xa473('0x30')]=_[_0xa473('0x31')](_0x37efcd[_0xa473('0x30')]);_0x105551[_0xa473('0x32')]=_['intersection'](_0x105551[_0xa473('0x2f')],_0x105551[_0xa473('0x30')]);_0x4b39cc[_0xa473('0x33')]=_[_0xa473('0x34')](_0x105551[_0xa473('0x2f')],qs['fields'](_0x37efcd[_0xa473('0x30')][_0xa473('0x35')]));_0x4b39cc['attributes']=_0x4b39cc[_0xa473('0x33')]['length']?_0x4b39cc[_0xa473('0x33')]:_0x105551[_0xa473('0x2f')];if(!_0x37efcd['query'][_0xa473('0x36')](_0xa473('0x37'))){_0x4b39cc[_0xa473('0x1c')]=qs[_0xa473('0x1c')](_0x37efcd['query']['limit']);_0x4b39cc[_0xa473('0x1b')]=qs['offset'](_0x37efcd[_0xa473('0x30')][_0xa473('0x1b')]);}_0x4b39cc['order']=qs[_0xa473('0x38')](_0x37efcd['query'][_0xa473('0x38')]);_0x4b39cc['where']=qs[_0xa473('0x32')](_[_0xa473('0x39')](_0x37efcd['query'],_0x105551[_0xa473('0x32')]),_0x3d4895);if(_0x37efcd[_0xa473('0x30')]['filter']){_0x4b39cc[_0xa473('0x3a')]=_[_0xa473('0x3b')](_0x4b39cc[_0xa473('0x3a')],{'$or':_[_0xa473('0x2b')](_0x3d4895,function(_0x1b1c95){if(_0x1b1c95[_0xa473('0x2d')]!==_0xa473('0x3c')){var _0x19afe2={};_0x19afe2[_0x1b1c95['name']]={'$like':'%'+_0x37efcd[_0xa473('0x30')][_0xa473('0x3d')]+'%'};return _0x19afe2;}})});}_0x4b39cc=_[_0xa473('0x3b')]({},_0x4b39cc,_0x37efcd[_0xa473('0x3e')]);var _0xa99024={'where':_0x4b39cc[_0xa473('0x3a')]};return db[_0xa473('0x2c')]['count'](_0xa99024)[_0xa473('0x25')](function(_0x41066f){_0x529c06[_0xa473('0x1e')]=_0x41066f;if(_0x37efcd[_0xa473('0x30')][_0xa473('0x3f')]){_0x4b39cc[_0xa473('0x40')]=[{'all':!![]}];}return db[_0xa473('0x2c')][_0xa473('0x41')](_0x4b39cc);})[_0xa473('0x25')](function(_0x17d4ff){_0x529c06[_0xa473('0x42')]=_0x17d4ff;return _0x529c06;})[_0xa473('0x25')](respondWithFilteredResult(_0x56c28c,_0x4b39cc))[_0xa473('0x43')](handleError(_0x56c28c,null));};exports[_0xa473('0x44')]=function(_0xc39fe5,_0x477bf5){var _0xa61bf2={'raw':![],'where':{'id':_0xc39fe5[_0xa473('0x45')]['id']}},_0x43465b={};_0x43465b['model']=_['keys'](db[_0xa473('0x2c')][_0xa473('0x46')]);_0x43465b[_0xa473('0x30')]=_[_0xa473('0x31')](_0xc39fe5[_0xa473('0x30')]);_0x43465b['filters']=_['intersection'](_0x43465b[_0xa473('0x2f')],_0x43465b[_0xa473('0x30')]);_0xa61bf2['attributes']=_['intersection'](_0x43465b[_0xa473('0x2f')],qs[_0xa473('0x35')](_0xc39fe5[_0xa473('0x30')]['fields']));_0xa61bf2['attributes']=_0xa61bf2[_0xa473('0x33')][_0xa473('0x47')]?_0xa61bf2[_0xa473('0x33')]:_0x43465b[_0xa473('0x2f')];if(_0xc39fe5[_0xa473('0x30')][_0xa473('0x3f')]){_0xa61bf2[_0xa473('0x40')]=[{'all':!![]}];}_0xa61bf2=_[_0xa473('0x3b')]({},_0xa61bf2,_0xc39fe5[_0xa473('0x3e')]);return db['SalesforceAccount'][_0xa473('0x48')](_0xa61bf2)[_0xa473('0x25')](handleEntityNotFound(_0x477bf5,null))[_0xa473('0x25')](respondWithResult(_0x477bf5,null))[_0xa473('0x43')](handleError(_0x477bf5,null));};exports[_0xa473('0x49')]=function(_0x47e7b5,_0x2e7279){return db['SalesforceAccount']['create'](_0x47e7b5['body'],{})[_0xa473('0x25')](respondWithResult(_0x2e7279,0xc9))[_0xa473('0x43')](handleError(_0x2e7279,null));};exports[_0xa473('0x24')]=function(_0x56151e,_0xc980f8){if(_0x56151e[_0xa473('0x4a')]['id']){delete _0x56151e['body']['id'];}return db['SalesforceAccount'][_0xa473('0x48')]({'where':{'id':_0x56151e[_0xa473('0x45')]['id']}})[_0xa473('0x25')](handleEntityNotFound(_0xc980f8,null))[_0xa473('0x25')](saveUpdates(_0x56151e[_0xa473('0x4a')],null))['then'](respondWithResult(_0xc980f8,null))['catch'](handleError(_0xc980f8,null));};exports[_0xa473('0x26')]=function(_0xc36dbb,_0x51044c){return db[_0xa473('0x2c')][_0xa473('0x48')]({'where':{'id':_0xc36dbb[_0xa473('0x45')]['id']}})[_0xa473('0x25')](handleEntityNotFound(_0x51044c,null))['then'](removeEntity(_0x51044c,null))[_0xa473('0x43')](handleError(_0x51044c,null));};exports[_0xa473('0x4b')]=function(_0x2ff673,_0x2d787a,_0x129722){var _0x374044={};var _0x553c71={};var _0x5f289f;var _0x5c9a04;return db[_0xa473('0x2c')][_0xa473('0x4c')]({'where':{'id':_0x2ff673[_0xa473('0x45')]['id']}})[_0xa473('0x25')](handleEntityNotFound(_0x2d787a,null))[_0xa473('0x25')](function(_0xf64824){if(_0xf64824){_0x5f289f=_0xf64824;_0x553c71[_0xa473('0x2f')]=_[_0xa473('0x31')](db[_0xa473('0x4d')]['rawAttributes']);_0x553c71['query']=_[_0xa473('0x31')](_0x2ff673[_0xa473('0x30')]);_0x553c71[_0xa473('0x32')]=_[_0xa473('0x34')](_0x553c71[_0xa473('0x2f')],_0x553c71[_0xa473('0x30')]);_0x374044[_0xa473('0x33')]=_[_0xa473('0x34')](_0x553c71['model'],qs[_0xa473('0x35')](_0x2ff673[_0xa473('0x30')]['fields']));_0x374044[_0xa473('0x33')]=_0x374044['attributes']['length']?_0x374044['attributes']:_0x553c71[_0xa473('0x2f')];_0x374044[_0xa473('0x4e')]=qs[_0xa473('0x38')](_0x2ff673[_0xa473('0x30')][_0xa473('0x38')]);_0x374044[_0xa473('0x3a')]=qs['filters'](_['pick'](_0x2ff673[_0xa473('0x30')],_0x553c71[_0xa473('0x32')]));if(_0x2ff673[_0xa473('0x30')][_0xa473('0x3d')]){_0x374044[_0xa473('0x3a')]=_[_0xa473('0x3b')](_0x374044[_0xa473('0x3a')],{'$or':_[_0xa473('0x2b')](_0x374044[_0xa473('0x33')],function(_0x2eea3a){var _0x17f5a9={};_0x17f5a9[_0x2eea3a]={'$like':'%'+_0x2ff673[_0xa473('0x30')]['filter']+'%'};return _0x17f5a9;})});}_0x374044=_[_0xa473('0x3b')]({},_0x374044,_0x2ff673[_0xa473('0x3e')]);return _0x5f289f[_0xa473('0x4b')](_0x374044);}})[_0xa473('0x25')](function(_0x3c7b00){if(_0x3c7b00){_0x5c9a04=_0x3c7b00[_0xa473('0x47')];if(!_0x2ff673['query'][_0xa473('0x36')](_0xa473('0x37'))){_0x374044['limit']=qs[_0xa473('0x1c')](_0x2ff673['query'][_0xa473('0x1c')]);_0x374044[_0xa473('0x1b')]=qs[_0xa473('0x1b')](_0x2ff673['query'][_0xa473('0x1b')]);}return _0x5f289f['getConfigurations'](_0x374044);}})['then'](function(_0x3be8db){if(_0x3be8db){return _0x3be8db?{'count':_0x5c9a04,'rows':_0x3be8db}:null;}})[_0xa473('0x25')](respondWithResult(_0x2d787a,null))[_0xa473('0x43')](handleError(_0x2d787a,null));};exports['addConfiguration']=function(_0x39d954,_0x36550f,_0x2050d0){if(_0x39d954[_0xa473('0x4a')]['id']){delete _0x39d954[_0xa473('0x4a')]['id'];}return db[_0xa473('0x2c')]['findOne']({'where':{'id':_0x39d954[_0xa473('0x45')]['id']}})['then'](handleEntityNotFound(_0x36550f,null))[_0xa473('0x25')](function(_0x5e0cb0){if(_0x5e0cb0){_0x39d954[_0xa473('0x4a')][_0xa473('0x4f')]=_0x5e0cb0['id'];_0x39d954['body'][_0xa473('0x50')]=integrations[_0xa473('0x51')](_0x39d954[_0xa473('0x4a')]['channel'],_0x39d954[_0xa473('0x4a')][_0xa473('0x2d')]);_0x39d954[_0xa473('0x4a')]['Descriptions']=integrations[_0xa473('0x52')](_0x39d954[_0xa473('0x4a')][_0xa473('0x53')],_0x39d954[_0xa473('0x4a')][_0xa473('0x2d')]);return db['SalesforceConfiguration'][_0xa473('0x49')](_0x39d954['body'],{'include':[{'model':db[_0xa473('0x54')],'as':_0xa473('0x50')},{'model':db[_0xa473('0x54')],'as':'Descriptions'}]});}return null;})['then'](respondWithResult(_0x36550f,null))[_0xa473('0x43')](handleError(_0x36550f,null));};exports[_0xa473('0x55')]=function(_0x23aaf3,_0x1ff886,_0x46a0ef){var _0x6224e5;var _0x2a4ef4='';var _0xcfd5f5=_0xa473('0x56');return db[_0xa473('0x2c')][_0xa473('0x4c')]({'where':{'id':_0x23aaf3[_0xa473('0x45')]['id']},'attributes':['id',_0xa473('0x57'),_0xa473('0x58'),'clientSecret',_0xa473('0x59'),_0xa473('0x5a'),_0xa473('0x5b')]})[_0xa473('0x25')](handleEntityNotFound(_0x1ff886,null))[_0xa473('0x25')](function(_0x3206a0){if(_0x3206a0){_0x2a4ef4=_0x3206a0[_0xa473('0x57')];var _0x2e831d=_0x2a4ef4[_0xa473('0x5c')](-0x1);if(_0x2e831d==='/'){_0x2a4ef4=_0x2a4ef4[_0xa473('0x5d')](0x0,_0x2a4ef4[_0xa473('0x5e')](_0x2e831d));}_0x6224e5=new jsforce[(_0xa473('0x5f'))]({'oauth2':{'loginUrl':_0x2a4ef4,'clientId':_0x3206a0[_0xa473('0x58')],'clientSecret':_0x3206a0[_0xa473('0x60')]}});return _0x6224e5[_0xa473('0x61')](_0x3206a0[_0xa473('0x59')],_0x3206a0[_0xa473('0x5a')]['concat'](_0x3206a0[_0xa473('0x5b')]));}})['then'](function(_0x3fe78c){if(_0x3fe78c){if(!_[_0xa473('0x62')](_0x23aaf3[_0xa473('0x30')][_0xa473('0x63')])){_0xcfd5f5=_0x23aaf3[_0xa473('0x30')][_0xa473('0x63')];}return _0x6224e5[_0xa473('0x64')](_0xcfd5f5)[_0xa473('0x65')]();}})[_0xa473('0x25')](function(_0x3a3c32){var _0x52e227=[_0xa473('0x66'),_0xa473('0x67'),_0xa473('0x68'),_0xa473('0x69'),_0xa473('0x6a'),'Description'];var _0xdcae30=[_0xa473('0x6b'),_0xa473('0x6c'),_0xa473('0x6d'),_0xa473('0x6e'),_0xa473('0x6f'),_0xa473('0x70'),_0xa473('0x71')];if(_0x3a3c32){_[_0xa473('0x72')](_0x3a3c32[_0xa473('0x35')],function(_0x47f9e0){return _0x52e227[_0xa473('0x73')](_0x47f9e0[_0xa473('0x29')])||!_0xdcae30[_0xa473('0x73')](_0x47f9e0[_0xa473('0x2d')]);});return{'count':_0x3a3c32[_0xa473('0x35')][_0xa473('0x47')],'rows':_['map'](_0x3a3c32[_0xa473('0x35')],function(_0x3628ae){return{'id':_0x3628ae['name'],'name':_0x3628ae[_0xa473('0x74')],'custom':_0x3628ae[_0xa473('0x75')],'options':_0x3628ae[_0xa473('0x76')][_0xa473('0x47')]>0x0?_[_0xa473('0x2b')](_0x3628ae['picklistValues'],function(_0x5b3b30){return{'name':_0x5b3b30[_0xa473('0x74')],'value':_0x5b3b30[_0xa473('0x77')]};}):_0x3628ae[_0xa473('0x2d')]=='boolean'?[{'name':'True','value':_0xa473('0x78')},{'name':_0xa473('0x79'),'value':_0xa473('0x7a')}]:[]};})};}})[_0xa473('0x25')](respondWithResult(_0x1ff886,null))[_0xa473('0x43')](function(_0x24a274){var _0x33ab25=_0x23aaf3[_0xa473('0x30')][_0xa473('0x7b')]?0x1f4:_0x24a274[_0xa473('0x7c')]||0x1f4;logger['error'](_0xa473('0x7d'),_0xa473('0x55'),_0x33ab25,JSON[_0xa473('0x7e')](_0x24a274));delete _0x24a274['name'];if(_0x33ab25===0x191){_0x33ab25=0x190;}_0x1ff886[_0xa473('0x18')](_0x33ab25)[_0xa473('0x7f')](_0x23aaf3[_0xa473('0x30')]['test']?{'message':'Wrong\x20credentials','statusCode':_0x24a274[_0xa473('0x7c')]}:_0x24a274);});};
\ No newline at end of file
+var _0x7562=['include','SalesforceAccount','findAll','catch','show','params','keys','create','body','find','getConfigurations','findOne','SalesforceConfiguration','pick','addConfiguration','Subjects','getSubjects','channel','getDescriptions','SalesforceField','Descriptions','getFields','Task','clientId','clientSecret','username','password','securityToken','remoteUri','slice','substring','Connection','login','concat','ticketType','sobject','describe','OwnerId','ActivityDate','IsReminderSet','IsRecurrence','Description','string','boolean','email','textarea','phone','includes','label','custom','picklistValues','True','true','false','statusCode','error','getFields,\x20%s,\x20%s,\x20%s','stringify','test','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','count','limit','reject','update','then','destroy','stack','name','send','map','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','options','includeAll'];(function(_0x4aec19,_0x144670){var _0x27a282=function(_0x1d2518){while(--_0x1d2518){_0x4aec19['push'](_0x4aec19['shift']());}};_0x27a282(++_0x144670);}(_0x7562,0x1a3));var _0x2756=function(_0x5a7613,_0x2a6b1d){_0x5a7613=_0x5a7613-0x0;var _0x18e6e7=_0x7562[_0x5a7613];return _0x18e6e7;};'use strict';var emlformat=require(_0x2756('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x2756('0x1'));var jsonpatch=require(_0x2756('0x2'));var rp=require(_0x2756('0x3'));var moment=require(_0x2756('0x4'));var BPromise=require(_0x2756('0x5'));var Mustache=require(_0x2756('0x6'));var util=require(_0x2756('0x7'));var path=require(_0x2756('0x8'));var sox=require(_0x2756('0x9'));var csv=require(_0x2756('0xa'));var ejs=require(_0x2756('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x2756('0xc'));var squel=require(_0x2756('0xd'));var crypto=require(_0x2756('0xe'));var jsforce=require(_0x2756('0xf'));var deskjs=require(_0x2756('0x10'));var toCsv=require(_0x2756('0xa'));var querystring=require(_0x2756('0x11'));var Papa=require(_0x2756('0x12'));var Redis=require(_0x2756('0x13'));var authService=require(_0x2756('0x14'));var qs=require(_0x2756('0x15'));var as=require(_0x2756('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x2756('0x17'));var utils=require(_0x2756('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x2756('0x19'))['db'];var integrations=require(_0x2756('0x1a'));function respondWithStatusCode(_0x3b2282,_0x43d8c6){_0x43d8c6=_0x43d8c6||0xcc;return function(_0x3158ad){if(_0x3158ad){return _0x3b2282[_0x2756('0x1b')](_0x43d8c6);}return _0x3b2282[_0x2756('0x1c')](_0x43d8c6)[_0x2756('0x1d')]();};}function respondWithResult(_0x5d69db,_0x424ca0){_0x424ca0=_0x424ca0||0xc8;return function(_0x188c65){if(_0x188c65){return _0x5d69db[_0x2756('0x1c')](_0x424ca0)[_0x2756('0x1e')](_0x188c65);}};}function respondWithFilteredResult(_0x28d6c2,_0x2b7b93){return function(_0x4d6f8d){if(_0x4d6f8d){var _0x3cf448=typeof _0x2b7b93[_0x2756('0x1f')]===_0x2756('0x20')&&typeof _0x2b7b93['limit']===_0x2756('0x20');var _0x298ac4=_0x4d6f8d[_0x2756('0x21')];var _0x28f108=_0x3cf448?0x0:_0x2b7b93[_0x2756('0x1f')];var _0x4776a4=_0x3cf448?_0x4d6f8d['count']:_0x2b7b93['offset']+_0x2b7b93[_0x2756('0x22')];var _0x157076;if(_0x4776a4>=_0x298ac4){_0x4776a4=_0x298ac4;_0x157076=0xc8;}else{_0x157076=0xce;}_0x28d6c2[_0x2756('0x1c')](_0x157076);return _0x28d6c2['set']('Content-Range',_0x28f108+'-'+_0x4776a4+'/'+_0x298ac4)['json'](_0x4d6f8d);}return null;};}function patchUpdates(_0x5c6923){return function(_0x49aa10){try{jsonpatch['apply'](_0x49aa10,_0x5c6923,!![]);}catch(_0x5fdf5e){return BPromise[_0x2756('0x23')](_0x5fdf5e);}return _0x49aa10['save']();};}function saveUpdates(_0xfb297c,_0x48a75a){return function(_0x5f08fe){if(_0x5f08fe){return _0x5f08fe[_0x2756('0x24')](_0xfb297c)[_0x2756('0x25')](function(_0x2412e5){return _0x2412e5;});}return null;};}function removeEntity(_0x2aa2df,_0x473c96){return function(_0x40585d){if(_0x40585d){return _0x40585d[_0x2756('0x26')]()[_0x2756('0x25')](function(){_0x2aa2df[_0x2756('0x1c')](0xcc)[_0x2756('0x1d')]();});}};}function handleEntityNotFound(_0x248708,_0x7b8eaa){return function(_0x223f5e){if(!_0x223f5e){_0x248708[_0x2756('0x1b')](0x194);}return _0x223f5e;};}function handleError(_0x41944f,_0x57c913){_0x57c913=_0x57c913||0x1f4;return function(_0x24d4f5){logger['error'](_0x24d4f5[_0x2756('0x27')]);if(_0x24d4f5[_0x2756('0x28')]){delete _0x24d4f5[_0x2756('0x28')];}_0x41944f[_0x2756('0x1c')](_0x57c913)[_0x2756('0x29')](_0x24d4f5);};}exports['index']=function(_0x58e169,_0x2fa70d){var _0x5b3068={},_0x5d7231={},_0x4fff78={'count':0x0,'rows':[]};var _0x24b010=_[_0x2756('0x2a')](db['SalesforceAccount'][_0x2756('0x2b')],function(_0x309a76){return{'name':_0x309a76[_0x2756('0x2c')],'type':_0x309a76[_0x2756('0x2d')]['key']};});_0x5d7231[_0x2756('0x2e')]=_[_0x2756('0x2a')](_0x24b010,'name');_0x5d7231[_0x2756('0x2f')]=_['keys'](_0x58e169[_0x2756('0x2f')]);_0x5d7231[_0x2756('0x30')]=_[_0x2756('0x31')](_0x5d7231[_0x2756('0x2e')],_0x5d7231[_0x2756('0x2f')]);_0x5b3068[_0x2756('0x32')]=_[_0x2756('0x31')](_0x5d7231[_0x2756('0x2e')],qs[_0x2756('0x33')](_0x58e169[_0x2756('0x2f')][_0x2756('0x33')]));_0x5b3068[_0x2756('0x32')]=_0x5b3068[_0x2756('0x32')][_0x2756('0x34')]?_0x5b3068[_0x2756('0x32')]:_0x5d7231[_0x2756('0x2e')];if(!_0x58e169[_0x2756('0x2f')][_0x2756('0x35')](_0x2756('0x36'))){_0x5b3068['limit']=qs[_0x2756('0x22')](_0x58e169[_0x2756('0x2f')][_0x2756('0x22')]);_0x5b3068[_0x2756('0x1f')]=qs[_0x2756('0x1f')](_0x58e169[_0x2756('0x2f')][_0x2756('0x1f')]);}_0x5b3068['order']=qs[_0x2756('0x37')](_0x58e169['query'][_0x2756('0x37')]);_0x5b3068[_0x2756('0x38')]=qs[_0x2756('0x30')](_['pick'](_0x58e169[_0x2756('0x2f')],_0x5d7231[_0x2756('0x30')]),_0x24b010);if(_0x58e169[_0x2756('0x2f')][_0x2756('0x39')]){_0x5b3068[_0x2756('0x38')]=_[_0x2756('0x3a')](_0x5b3068['where'],{'$or':_[_0x2756('0x2a')](_0x24b010,function(_0x19a4f9){if(_0x19a4f9[_0x2756('0x2d')]!=='VIRTUAL'){var _0x2ba2a8={};_0x2ba2a8[_0x19a4f9['name']]={'$like':'%'+_0x58e169[_0x2756('0x2f')][_0x2756('0x39')]+'%'};return _0x2ba2a8;}})});}_0x5b3068=_[_0x2756('0x3a')]({},_0x5b3068,_0x58e169[_0x2756('0x3b')]);var _0xfeeb0a={'where':_0x5b3068[_0x2756('0x38')]};return db['SalesforceAccount'][_0x2756('0x21')](_0xfeeb0a)['then'](function(_0xb48c48){_0x4fff78[_0x2756('0x21')]=_0xb48c48;if(_0x58e169[_0x2756('0x2f')][_0x2756('0x3c')]){_0x5b3068[_0x2756('0x3d')]=[{'all':!![]}];}return db[_0x2756('0x3e')][_0x2756('0x3f')](_0x5b3068);})[_0x2756('0x25')](function(_0xf7e6d9){_0x4fff78['rows']=_0xf7e6d9;return _0x4fff78;})[_0x2756('0x25')](respondWithFilteredResult(_0x2fa70d,_0x5b3068))[_0x2756('0x40')](handleError(_0x2fa70d,null));};exports[_0x2756('0x41')]=function(_0x4e952b,_0xfdc4a1){var _0x18af50={'raw':![],'where':{'id':_0x4e952b[_0x2756('0x42')]['id']}},_0x1ed107={};_0x1ed107[_0x2756('0x2e')]=_[_0x2756('0x43')](db[_0x2756('0x3e')][_0x2756('0x2b')]);_0x1ed107['query']=_['keys'](_0x4e952b[_0x2756('0x2f')]);_0x1ed107[_0x2756('0x30')]=_['intersection'](_0x1ed107['model'],_0x1ed107[_0x2756('0x2f')]);_0x18af50['attributes']=_[_0x2756('0x31')](_0x1ed107[_0x2756('0x2e')],qs[_0x2756('0x33')](_0x4e952b[_0x2756('0x2f')][_0x2756('0x33')]));_0x18af50[_0x2756('0x32')]=_0x18af50[_0x2756('0x32')][_0x2756('0x34')]?_0x18af50[_0x2756('0x32')]:_0x1ed107[_0x2756('0x2e')];if(_0x4e952b[_0x2756('0x2f')][_0x2756('0x3c')]){_0x18af50[_0x2756('0x3d')]=[{'all':!![]}];}_0x18af50=_[_0x2756('0x3a')]({},_0x18af50,_0x4e952b[_0x2756('0x3b')]);return db[_0x2756('0x3e')]['find'](_0x18af50)[_0x2756('0x25')](handleEntityNotFound(_0xfdc4a1,null))[_0x2756('0x25')](respondWithResult(_0xfdc4a1,null))[_0x2756('0x40')](handleError(_0xfdc4a1,null));};exports[_0x2756('0x44')]=function(_0x83be0b,_0xc92c3e){return db[_0x2756('0x3e')][_0x2756('0x44')](_0x83be0b[_0x2756('0x45')],{})['then'](respondWithResult(_0xc92c3e,0xc9))[_0x2756('0x40')](handleError(_0xc92c3e,null));};exports['update']=function(_0x4867db,_0x5a96a4){if(_0x4867db['body']['id']){delete _0x4867db[_0x2756('0x45')]['id'];}return db[_0x2756('0x3e')][_0x2756('0x46')]({'where':{'id':_0x4867db[_0x2756('0x42')]['id']}})[_0x2756('0x25')](handleEntityNotFound(_0x5a96a4,null))['then'](saveUpdates(_0x4867db['body'],null))[_0x2756('0x25')](respondWithResult(_0x5a96a4,null))[_0x2756('0x40')](handleError(_0x5a96a4,null));};exports[_0x2756('0x26')]=function(_0x19b3ce,_0x598423){return db[_0x2756('0x3e')][_0x2756('0x46')]({'where':{'id':_0x19b3ce['params']['id']}})[_0x2756('0x25')](handleEntityNotFound(_0x598423,null))[_0x2756('0x25')](removeEntity(_0x598423,null))['catch'](handleError(_0x598423,null));};exports[_0x2756('0x47')]=function(_0x55334e,_0x5c26bb,_0x1a2811){var _0x2be6df={};var _0x42799={};var _0xe65988;var _0x2d4a74;return db[_0x2756('0x3e')][_0x2756('0x48')]({'where':{'id':_0x55334e[_0x2756('0x42')]['id']}})[_0x2756('0x25')](handleEntityNotFound(_0x5c26bb,null))[_0x2756('0x25')](function(_0x291394){if(_0x291394){_0xe65988=_0x291394;_0x42799[_0x2756('0x2e')]=_['keys'](db[_0x2756('0x49')]['rawAttributes']);_0x42799[_0x2756('0x2f')]=_[_0x2756('0x43')](_0x55334e['query']);_0x42799[_0x2756('0x30')]=_[_0x2756('0x31')](_0x42799[_0x2756('0x2e')],_0x42799[_0x2756('0x2f')]);_0x2be6df[_0x2756('0x32')]=_[_0x2756('0x31')](_0x42799[_0x2756('0x2e')],qs[_0x2756('0x33')](_0x55334e[_0x2756('0x2f')][_0x2756('0x33')]));_0x2be6df[_0x2756('0x32')]=_0x2be6df[_0x2756('0x32')][_0x2756('0x34')]?_0x2be6df[_0x2756('0x32')]:_0x42799['model'];_0x2be6df['order']=qs[_0x2756('0x37')](_0x55334e[_0x2756('0x2f')][_0x2756('0x37')]);_0x2be6df['where']=qs[_0x2756('0x30')](_[_0x2756('0x4a')](_0x55334e[_0x2756('0x2f')],_0x42799[_0x2756('0x30')]));if(_0x55334e[_0x2756('0x2f')][_0x2756('0x39')]){_0x2be6df['where']=_[_0x2756('0x3a')](_0x2be6df[_0x2756('0x38')],{'$or':_['map'](_0x2be6df[_0x2756('0x32')],function(_0x2921a0){var _0x41f333={};_0x41f333[_0x2921a0]={'$like':'%'+_0x55334e[_0x2756('0x2f')][_0x2756('0x39')]+'%'};return _0x41f333;})});}_0x2be6df=_[_0x2756('0x3a')]({},_0x2be6df,_0x55334e[_0x2756('0x3b')]);return _0xe65988[_0x2756('0x47')](_0x2be6df);}})[_0x2756('0x25')](function(_0x3f4cae){if(_0x3f4cae){_0x2d4a74=_0x3f4cae['length'];if(!_0x55334e[_0x2756('0x2f')][_0x2756('0x35')](_0x2756('0x36'))){_0x2be6df[_0x2756('0x22')]=qs['limit'](_0x55334e[_0x2756('0x2f')][_0x2756('0x22')]);_0x2be6df[_0x2756('0x1f')]=qs[_0x2756('0x1f')](_0x55334e[_0x2756('0x2f')]['offset']);}return _0xe65988['getConfigurations'](_0x2be6df);}})[_0x2756('0x25')](function(_0x570894){if(_0x570894){return _0x570894?{'count':_0x2d4a74,'rows':_0x570894}:null;}})[_0x2756('0x25')](respondWithResult(_0x5c26bb,null))[_0x2756('0x40')](handleError(_0x5c26bb,null));};exports[_0x2756('0x4b')]=function(_0x2e9423,_0xb207f6,_0x200302){if(_0x2e9423['body']['id']){delete _0x2e9423['body']['id'];}return db[_0x2756('0x3e')][_0x2756('0x48')]({'where':{'id':_0x2e9423['params']['id']}})[_0x2756('0x25')](handleEntityNotFound(_0xb207f6,null))[_0x2756('0x25')](function(_0x5be374){if(_0x5be374){_0x2e9423[_0x2756('0x45')]['AccountId']=_0x5be374['id'];_0x2e9423[_0x2756('0x45')][_0x2756('0x4c')]=integrations[_0x2756('0x4d')](_0x2e9423['body'][_0x2756('0x4e')],_0x2e9423[_0x2756('0x45')][_0x2756('0x2d')]);_0x2e9423[_0x2756('0x45')]['Descriptions']=integrations[_0x2756('0x4f')](_0x2e9423[_0x2756('0x45')]['channel'],_0x2e9423['body'][_0x2756('0x2d')]);return db[_0x2756('0x49')][_0x2756('0x44')](_0x2e9423[_0x2756('0x45')],{'include':[{'model':db[_0x2756('0x50')],'as':'Subjects'},{'model':db['SalesforceField'],'as':_0x2756('0x51')}]});}return null;})['then'](respondWithResult(_0xb207f6,null))[_0x2756('0x40')](handleError(_0xb207f6,null));};exports[_0x2756('0x52')]=function(_0x42cf17,_0x623548,_0x193ddf){var _0x11dc8b;var _0x4bb003='';var _0xa8470d=_0x2756('0x53');return db[_0x2756('0x3e')][_0x2756('0x48')]({'where':{'id':_0x42cf17[_0x2756('0x42')]['id']},'attributes':['id','remoteUri',_0x2756('0x54'),_0x2756('0x55'),_0x2756('0x56'),_0x2756('0x57'),_0x2756('0x58')]})[_0x2756('0x25')](handleEntityNotFound(_0x623548,null))[_0x2756('0x25')](function(_0x21c578){if(_0x21c578){_0x4bb003=_0x21c578[_0x2756('0x59')];var _0x34c4c3=_0x4bb003[_0x2756('0x5a')](-0x1);if(_0x34c4c3==='/'){_0x4bb003=_0x4bb003[_0x2756('0x5b')](0x0,_0x4bb003['lastIndexOf'](_0x34c4c3));}_0x11dc8b=new jsforce[(_0x2756('0x5c'))]({'oauth2':{'loginUrl':_0x4bb003,'clientId':_0x21c578[_0x2756('0x54')],'clientSecret':_0x21c578['clientSecret']}});return _0x11dc8b[_0x2756('0x5d')](_0x21c578['username'],_0x21c578[_0x2756('0x57')][_0x2756('0x5e')](_0x21c578['securityToken']));}})[_0x2756('0x25')](function(_0x5d3ce3){if(_0x5d3ce3){if(!_['isNil'](_0x42cf17[_0x2756('0x2f')][_0x2756('0x5f')])){_0xa8470d=_0x42cf17[_0x2756('0x2f')]['ticketType'];}return _0x11dc8b[_0x2756('0x60')](_0xa8470d)[_0x2756('0x61')]();}})[_0x2756('0x25')](function(_0x44829e){var _0x137164=[_0x2756('0x62'),_0x2756('0x63'),_0x2756('0x64'),_0x2756('0x65'),'Subject',_0x2756('0x66')];var _0x13bac6=[_0x2756('0x67'),'int','picklist',_0x2756('0x68'),_0x2756('0x69'),_0x2756('0x6a'),_0x2756('0x6b')];if(_0x44829e){_['remove'](_0x44829e[_0x2756('0x33')],function(_0x270765){return _0x137164[_0x2756('0x6c')](_0x270765[_0x2756('0x28')])||!_0x13bac6['includes'](_0x270765[_0x2756('0x2d')]);});return{'count':_0x44829e['fields'][_0x2756('0x34')],'rows':_[_0x2756('0x2a')](_0x44829e['fields'],function(_0x294316){return{'id':_0x294316[_0x2756('0x28')],'name':_0x294316[_0x2756('0x6d')],'custom':_0x294316[_0x2756('0x6e')],'options':_0x294316[_0x2756('0x6f')][_0x2756('0x34')]>0x0?_['map'](_0x294316['picklistValues'],function(_0x2f1eda){return{'name':_0x2f1eda[_0x2756('0x6d')],'value':_0x2f1eda['value']};}):_0x294316[_0x2756('0x2d')]==_0x2756('0x68')?[{'name':_0x2756('0x70'),'value':_0x2756('0x71')},{'name':'False','value':_0x2756('0x72')}]:[]};})};}})[_0x2756('0x25')](respondWithResult(_0x623548,null))[_0x2756('0x40')](function(_0x2c2908){var _0x4d857b=_0x42cf17[_0x2756('0x2f')]['test']?0x1f4:_0x2c2908[_0x2756('0x73')]||0x1f4;logger[_0x2756('0x74')](_0x2756('0x75'),'getFields',_0x4d857b,JSON[_0x2756('0x76')](_0x2c2908));delete _0x2c2908[_0x2756('0x28')];if(_0x4d857b===0x191){_0x4d857b=0x190;}_0x623548[_0x2756('0x1c')](_0x4d857b)[_0x2756('0x29')](_0x42cf17[_0x2756('0x2f')][_0x2756('0x77')]?{'message':'Wrong\x20credentials','statusCode':_0x2c2908[_0x2756('0x73')]}:_0x2c2908);});};
\ No newline at end of file
index 4f7e255..26293bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf3f=['SalesforceAccount','lodash','request-promise','path','rimraf','./intSalesforceAccount.attributes','../../components/integrations/configuration','exports','define'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xbf3f,0x10f));var _0xfbf3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbf3f[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0xfbf3('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xfbf3('0x1'));var fs=require('fs');var path=require(_0xfbf3('0x2'));var rimraf=require(_0xfbf3('0x3'));var config=require('../../config/environment');var attributes=require(_0xfbf3('0x4'));var integrations=require(_0xfbf3('0x5'));module[_0xfbf3('0x6')]=function(_0x1584e2,_0x218007){return _0x1584e2[_0xfbf3('0x7')](_0xfbf3('0x8'),attributes,{'tableName':'int_salesforce_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xff96=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSalesforceAccount.attributes','../../components/integrations/configuration','int_salesforce_accounts'];(function(_0x1fe3c8,_0x2be277){var _0x5bdac=function(_0x24cdb0){while(--_0x24cdb0){_0x1fe3c8['push'](_0x1fe3c8['shift']());}};_0x5bdac(++_0x2be277);}(_0xff96,0x179));var _0x6ff9=function(_0x499ca5,_0x4986cf){_0x499ca5=_0x499ca5-0x0;var _0x7bfd9c=_0xff96[_0x499ca5];return _0x7bfd9c;};'use strict';var _=require(_0x6ff9('0x0'));var util=require(_0x6ff9('0x1'));var logger=require(_0x6ff9('0x2'))(_0x6ff9('0x3'));var moment=require(_0x6ff9('0x4'));var BPromise=require(_0x6ff9('0x5'));var rp=require(_0x6ff9('0x6'));var fs=require('fs');var path=require(_0x6ff9('0x7'));var rimraf=require(_0x6ff9('0x8'));var config=require(_0x6ff9('0x9'));var attributes=require(_0x6ff9('0xa'));var integrations=require(_0x6ff9('0xb'));module['exports']=function(_0x3efaff,_0x5509ee){return _0x3efaff['define']('SalesforceAccount',attributes,{'tableName':_0x6ff9('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bc20b40..4858f99 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc3c=['rpc','../../config/environment','jayson/promise','client','http','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetSalesforceAccount','SalesforceAccount','findAll','options','raw','attributes','limit','include','model','map','then','ShowSalesforceAccount','find','where','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x594650,_0x338ece){var _0x24f70a=function(_0x35cbd6){while(--_0x35cbd6){_0x594650['push'](_0x594650['shift']());}};_0x24f70a(++_0x338ece);}(_0xdc3c,0x1b4));var _0xcdc3=function(_0xcfb4e6,_0x227348){_0xcfb4e6=_0xcfb4e6-0x0;var _0x326bd1=_0xdc3c[_0xcfb4e6];return _0x326bd1;};'use strict';var _=require(_0xcdc3('0x0'));var util=require('util');var moment=require(_0xcdc3('0x1'));var BPromise=require(_0xcdc3('0x2'));var rs=require(_0xcdc3('0x3'));var fs=require('fs');var Redis=require(_0xcdc3('0x4'));var db=require(_0xcdc3('0x5'))['db'];var utils=require(_0xcdc3('0x6'));var logger=require(_0xcdc3('0x7'))(_0xcdc3('0x8'));var config=require(_0xcdc3('0x9'));var jayson=require(_0xcdc3('0xa'));var client=jayson[_0xcdc3('0xb')][_0xcdc3('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x406814,_0x428b03,_0x79b6b1){return new BPromise(function(_0xcbc8f1,_0x58c8f3){return client['request'](_0x406814,_0x79b6b1)['then'](function(_0x3aa1b2){logger[_0xcdc3('0xd')](_0xcdc3('0xe'),_0x428b03,_0xcdc3('0xf'));logger[_0xcdc3('0x10')](_0xcdc3('0x11'),_0x428b03,_0xcdc3('0xf'),JSON[_0xcdc3('0x12')](_0x3aa1b2));if(_0x3aa1b2[_0xcdc3('0x13')]){if(_0x3aa1b2['error']['code']===0x1f4){logger[_0xcdc3('0x13')](_0xcdc3('0xe'),_0x428b03,_0x3aa1b2[_0xcdc3('0x13')][_0xcdc3('0x14')]);return _0x58c8f3(_0x3aa1b2[_0xcdc3('0x13')][_0xcdc3('0x14')]);}logger[_0xcdc3('0x13')](_0xcdc3('0xe'),_0x428b03,_0x3aa1b2['error'][_0xcdc3('0x14')]);return _0xcbc8f1(_0x3aa1b2['error'][_0xcdc3('0x14')]);}else{logger['info'](_0xcdc3('0xe'),_0x428b03,_0xcdc3('0xf'));_0xcbc8f1(_0x3aa1b2[_0xcdc3('0x15')][_0xcdc3('0x14')]);}})[_0xcdc3('0x16')](function(_0xaf3ec3){logger[_0xcdc3('0x13')](_0xcdc3('0xe'),_0x428b03,_0xaf3ec3);_0x58c8f3(_0xaf3ec3);});});}exports[_0xcdc3('0x17')]=function(_0xc24bd1){var _0x1a28e6=this;return new Promise(function(_0x480c1c,_0x285adb){return db[_0xcdc3('0x18')][_0xcdc3('0x19')]({'raw':_0xc24bd1[_0xcdc3('0x1a')]?_0xc24bd1[_0xcdc3('0x1a')][_0xcdc3('0x1b')]===undefined?!![]:![]:!![],'where':_0xc24bd1['options']?_0xc24bd1['options']['where']||null:null,'attributes':_0xc24bd1[_0xcdc3('0x1a')]?_0xc24bd1['options'][_0xcdc3('0x1c')]||null:null,'limit':_0xc24bd1[_0xcdc3('0x1a')]?_0xc24bd1[_0xcdc3('0x1a')][_0xcdc3('0x1d')]||null:null,'include':_0xc24bd1[_0xcdc3('0x1a')]?_0xc24bd1[_0xcdc3('0x1a')][_0xcdc3('0x1e')]?_['map'](_0xc24bd1['options'][_0xcdc3('0x1e')],function(_0x2bc477){return{'model':db[_0x2bc477[_0xcdc3('0x1f')]],'as':_0x2bc477['as'],'attributes':_0x2bc477[_0xcdc3('0x1c')],'include':_0x2bc477['include']?_[_0xcdc3('0x20')](_0x2bc477[_0xcdc3('0x1e')],function(_0x499d63){return{'model':db[_0x499d63[_0xcdc3('0x1f')]],'as':_0x499d63['as'],'attributes':_0x499d63[_0xcdc3('0x1c')],'include':_0x499d63['include']?_[_0xcdc3('0x20')](_0x499d63[_0xcdc3('0x1e')],function(_0x41efc9){return{'model':db[_0x41efc9[_0xcdc3('0x1f')]],'as':_0x41efc9['as'],'attributes':_0x41efc9[_0xcdc3('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xcdc3('0x21')](function(_0x32a44d){logger[_0xcdc3('0xd')]('GetSalesforceAccount',_0xc24bd1);logger[_0xcdc3('0x10')]('GetSalesforceAccount',_0xc24bd1,JSON[_0xcdc3('0x12')](_0x32a44d));_0x480c1c(_0x32a44d);})[_0xcdc3('0x16')](function(_0x574da2){logger[_0xcdc3('0x13')](_0xcdc3('0x17'),_0x574da2['message'],_0xc24bd1);_0x285adb(_0x1a28e6[_0xcdc3('0x13')](0x1f4,_0x574da2[_0xcdc3('0x14')]));});});};exports[_0xcdc3('0x22')]=function(_0x117edd){var _0x3d64ac=this;return new Promise(function(_0x5baa2e,_0x359482){return db[_0xcdc3('0x18')][_0xcdc3('0x23')]({'raw':_0x117edd[_0xcdc3('0x1a')]?_0x117edd[_0xcdc3('0x1a')][_0xcdc3('0x1b')]===undefined?!![]:![]:!![],'where':_0x117edd[_0xcdc3('0x1a')]?_0x117edd[_0xcdc3('0x1a')][_0xcdc3('0x24')]||null:null,'attributes':_0x117edd['options']?_0x117edd[_0xcdc3('0x1a')][_0xcdc3('0x1c')]||null:null,'include':_0x117edd[_0xcdc3('0x1a')]?_0x117edd['options'][_0xcdc3('0x1e')]?_[_0xcdc3('0x20')](_0x117edd[_0xcdc3('0x1a')][_0xcdc3('0x1e')],function(_0x459919){return{'model':db[_0x459919[_0xcdc3('0x1f')]],'as':_0x459919['as'],'attributes':_0x459919[_0xcdc3('0x1c')],'include':_0x459919[_0xcdc3('0x1e')]?_[_0xcdc3('0x20')](_0x459919[_0xcdc3('0x1e')],function(_0x18dcee){return{'model':db[_0x18dcee[_0xcdc3('0x1f')]],'as':_0x18dcee['as'],'attributes':_0x18dcee[_0xcdc3('0x1c')],'include':_0x18dcee[_0xcdc3('0x1e')]?_[_0xcdc3('0x20')](_0x18dcee['include'],function(_0xb1935){return{'model':db[_0xb1935[_0xcdc3('0x1f')]],'as':_0xb1935['as'],'attributes':_0xb1935[_0xcdc3('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xcdc3('0x21')](function(_0x12b03e){logger[_0xcdc3('0xd')]('ShowSalesforceAccount',_0x117edd);logger[_0xcdc3('0x10')](_0xcdc3('0x22'),_0x117edd,JSON['stringify'](_0x12b03e));_0x5baa2e(_0x12b03e);})[_0xcdc3('0x16')](function(_0x144283){logger[_0xcdc3('0x13')](_0xcdc3('0x22'),_0x144283[_0xcdc3('0x14')],_0x117edd);_0x359482(_0x3d64ac[_0xcdc3('0x13')](0x1f4,_0x144283[_0xcdc3('0x14')]));});});};
\ No newline at end of file
+var _0x5c01=['then','info','SalesforceAccount,\x20%s,\x20%s','request\x20sent','debug','SalesforceAccount,\x20%s,\x20%s,\x20%s','error','code','message','catch','SalesforceAccount','findAll','options','where','attributes','limit','include','map','model','GetSalesforceAccount','stringify','ShowSalesforceAccount','find','raw','lodash','moment','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','client','request'];(function(_0x125854,_0x4f75b3){var _0x127d85=function(_0x506937){while(--_0x506937){_0x125854['push'](_0x125854['shift']());}};_0x127d85(++_0x4f75b3);}(_0x5c01,0x9c));var _0x15c0=function(_0x1bcc0e,_0x40b4a9){_0x1bcc0e=_0x1bcc0e-0x0;var _0x47279a=_0x5c01[_0x1bcc0e];return _0x47279a;};'use strict';var _=require(_0x15c0('0x0'));var util=require('util');var moment=require(_0x15c0('0x1'));var BPromise=require('bluebird');var rs=require(_0x15c0('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x15c0('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x15c0('0x4'))(_0x15c0('0x5'));var config=require('../../config/environment');var jayson=require(_0x15c0('0x6'));var client=jayson[_0x15c0('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0xc10fdb,_0x3f811c,_0xb8f6da){return new BPromise(function(_0xc4a0a1,_0x4e6c48){return client[_0x15c0('0x8')](_0xc10fdb,_0xb8f6da)[_0x15c0('0x9')](function(_0x44fba6){logger[_0x15c0('0xa')](_0x15c0('0xb'),_0x3f811c,_0x15c0('0xc'));logger[_0x15c0('0xd')](_0x15c0('0xe'),_0x3f811c,_0x15c0('0xc'),JSON['stringify'](_0x44fba6));if(_0x44fba6[_0x15c0('0xf')]){if(_0x44fba6[_0x15c0('0xf')][_0x15c0('0x10')]===0x1f4){logger[_0x15c0('0xf')]('SalesforceAccount,\x20%s,\x20%s',_0x3f811c,_0x44fba6['error'][_0x15c0('0x11')]);return _0x4e6c48(_0x44fba6[_0x15c0('0xf')][_0x15c0('0x11')]);}logger['error']('SalesforceAccount,\x20%s,\x20%s',_0x3f811c,_0x44fba6['error'][_0x15c0('0x11')]);return _0xc4a0a1(_0x44fba6[_0x15c0('0xf')][_0x15c0('0x11')]);}else{logger['info'](_0x15c0('0xb'),_0x3f811c,_0x15c0('0xc'));_0xc4a0a1(_0x44fba6['result'][_0x15c0('0x11')]);}})[_0x15c0('0x12')](function(_0x1f3cb8){logger[_0x15c0('0xf')](_0x15c0('0xb'),_0x3f811c,_0x1f3cb8);_0x4e6c48(_0x1f3cb8);});});}exports['GetSalesforceAccount']=function(_0x447e47){var _0x41a3fd=this;return new Promise(function(_0x3e744d,_0x27485e){return db[_0x15c0('0x13')][_0x15c0('0x14')]({'raw':_0x447e47['options']?_0x447e47[_0x15c0('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x447e47[_0x15c0('0x15')]?_0x447e47[_0x15c0('0x15')][_0x15c0('0x16')]||null:null,'attributes':_0x447e47[_0x15c0('0x15')]?_0x447e47[_0x15c0('0x15')][_0x15c0('0x17')]||null:null,'limit':_0x447e47[_0x15c0('0x15')]?_0x447e47['options'][_0x15c0('0x18')]||null:null,'include':_0x447e47['options']?_0x447e47[_0x15c0('0x15')][_0x15c0('0x19')]?_['map'](_0x447e47[_0x15c0('0x15')]['include'],function(_0x26878d){return{'model':db[_0x26878d['model']],'as':_0x26878d['as'],'attributes':_0x26878d['attributes'],'include':_0x26878d[_0x15c0('0x19')]?_[_0x15c0('0x1a')](_0x26878d[_0x15c0('0x19')],function(_0x1d7129){return{'model':db[_0x1d7129['model']],'as':_0x1d7129['as'],'attributes':_0x1d7129[_0x15c0('0x17')],'include':_0x1d7129['include']?_['map'](_0x1d7129[_0x15c0('0x19')],function(_0x36f45c){return{'model':db[_0x36f45c[_0x15c0('0x1b')]],'as':_0x36f45c['as'],'attributes':_0x36f45c['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x425e90){logger['info'](_0x15c0('0x1c'),_0x447e47);logger[_0x15c0('0xd')](_0x15c0('0x1c'),_0x447e47,JSON[_0x15c0('0x1d')](_0x425e90));_0x3e744d(_0x425e90);})[_0x15c0('0x12')](function(_0x4e5f8f){logger[_0x15c0('0xf')]('GetSalesforceAccount',_0x4e5f8f[_0x15c0('0x11')],_0x447e47);_0x27485e(_0x41a3fd[_0x15c0('0xf')](0x1f4,_0x4e5f8f[_0x15c0('0x11')]));});});};exports[_0x15c0('0x1e')]=function(_0x515553){var _0x35ffb5=this;return new Promise(function(_0x38ddad,_0x342808){return db[_0x15c0('0x13')][_0x15c0('0x1f')]({'raw':_0x515553['options']?_0x515553[_0x15c0('0x15')][_0x15c0('0x20')]===undefined?!![]:![]:!![],'where':_0x515553[_0x15c0('0x15')]?_0x515553[_0x15c0('0x15')][_0x15c0('0x16')]||null:null,'attributes':_0x515553['options']?_0x515553[_0x15c0('0x15')][_0x15c0('0x17')]||null:null,'include':_0x515553[_0x15c0('0x15')]?_0x515553[_0x15c0('0x15')][_0x15c0('0x19')]?_[_0x15c0('0x1a')](_0x515553[_0x15c0('0x15')]['include'],function(_0x50418){return{'model':db[_0x50418[_0x15c0('0x1b')]],'as':_0x50418['as'],'attributes':_0x50418[_0x15c0('0x17')],'include':_0x50418[_0x15c0('0x19')]?_[_0x15c0('0x1a')](_0x50418['include'],function(_0xde88d4){return{'model':db[_0xde88d4[_0x15c0('0x1b')]],'as':_0xde88d4['as'],'attributes':_0xde88d4[_0x15c0('0x17')],'include':_0xde88d4[_0x15c0('0x19')]?_[_0x15c0('0x1a')](_0xde88d4[_0x15c0('0x19')],function(_0x1167bb){return{'model':db[_0x1167bb[_0x15c0('0x1b')]],'as':_0x1167bb['as'],'attributes':_0x1167bb[_0x15c0('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4091c5){logger[_0x15c0('0xa')]('ShowSalesforceAccount',_0x515553);logger[_0x15c0('0xd')](_0x15c0('0x1e'),_0x515553,JSON[_0x15c0('0x1d')](_0x4091c5));_0x38ddad(_0x4091c5);})[_0x15c0('0x12')](function(_0x432076){logger['error'](_0x15c0('0x1e'),_0x432076[_0x15c0('0x11')],_0x515553);_0x342808(_0x35ffb5[_0x15c0('0xf')](0x1f4,_0x432076[_0x15c0('0x11')]));});});};
\ No newline at end of file
index bb6d239..5ab702e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['Router','fs-extra','../../components/interaction/service','../../config/environment','./intSalesforceConfiguration.controller','get','isAuthenticated','index','/:id','show','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','create','exports','util','path','connect-timeout'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x2032,0xd9));var _0x2203=function(_0x5f1403,_0x3cb05f){_0x5f1403=_0x5f1403-0x0;var _0x1c3b83=_0x2032[_0x5f1403];return _0x1c3b83;};'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('0x8')]('/:id/fields',auth['isAuthenticated'](),controller[_0x2203('0xd')]);router['get'](_0x2203('0xe'),auth[_0x2203('0x9')](),controller[_0x2203('0xf')]);router['get'](_0x2203('0x10'),auth['isAuthenticated'](),controller[_0x2203('0x11')]);router['post']('/',auth[_0x2203('0x9')](),controller[_0x2203('0x12')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router['delete'](_0x2203('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x2203('0x13')]=router;
\ No newline at end of file
+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(_0xae7c2f,_0xf31e04){var _0x5d7001=function(_0x4eeadb){while(--_0x4eeadb){_0xae7c2f['push'](_0xae7c2f['shift']());}};_0x5d7001(++_0xf31e04);}(_0x0b0e,0x187));var _0xe0b0=function(_0x47159c,_0x1c8216){_0x47159c=_0x47159c-0x0;var _0x454dbe=_0x0b0e[_0x47159c];return _0x454dbe;};'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
index 2992336..33d7046 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1655=['STRING','ENUM','Task','Case','account','contact_lead','nothing','contact','lead','exports'];(function(_0x56353b,_0xb27235){var _0x379723=function(_0x4a231b){while(--_0x4a231b){_0x56353b['push'](_0x56353b['shift']());}};_0x379723(++_0xb27235);}(_0x1655,0x95));var _0x5165=function(_0x486935,_0x4ca90a){_0x486935=_0x486935-0x0;var _0xb24d8c=_0x1655[_0x486935];return _0xb24d8c;};'use strict';var Sequelize=require('sequelize');module[_0x5165('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x5165('0x1')]},'ticketType':{'type':Sequelize[_0x5165('0x2')](_0x5165('0x3'),_0x5165('0x4')),'defaultValue':_0x5165('0x3')},'moduleSearch':{'type':Sequelize[_0x5165('0x2')]('contact_lead','contact','lead','account_contact_lead',_0x5165('0x5')),'defaultValue':_0x5165('0x6')},'moduleCreate':{'type':Sequelize['ENUM'](_0x5165('0x7'),_0x5165('0x8'),_0x5165('0x9'),_0x5165('0x5')),'defaultValue':'lead'},'leadId':{'type':Sequelize['STRING']},'additionalSearchAccount':{'type':Sequelize['STRING']},'additionalSearchContact':{'type':Sequelize[_0x5165('0x1')]},'additionalSearchLead':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x6780=['STRING','ENUM','Task','Case','contact_lead','contact','lead','account_contact_lead','account','nothing','sequelize','exports'];(function(_0x2a94cf,_0x2b970d){var _0x22147f=function(_0xfc71ab){while(--_0xfc71ab){_0x2a94cf['push'](_0x2a94cf['shift']());}};_0x22147f(++_0x2b970d);}(_0x6780,0x9a));var _0x0678=function(_0xeba572,_0x5a015f){_0xeba572=_0xeba572-0x0;var _0x439367=_0x6780[_0xeba572];return _0x439367;};'use strict';var Sequelize=require(_0x0678('0x0'));module[_0x0678('0x1')]={'name':{'type':Sequelize[_0x0678('0x2')]},'description':{'type':Sequelize[_0x0678('0x2')]},'ticketType':{'type':Sequelize[_0x0678('0x3')](_0x0678('0x4'),_0x0678('0x5')),'defaultValue':_0x0678('0x4')},'moduleSearch':{'type':Sequelize[_0x0678('0x3')](_0x0678('0x6'),_0x0678('0x7'),_0x0678('0x8'),_0x0678('0x9'),_0x0678('0xa')),'defaultValue':'contact_lead'},'moduleCreate':{'type':Sequelize[_0x0678('0x3')](_0x0678('0xb'),'contact',_0x0678('0x8'),_0x0678('0xa')),'defaultValue':_0x0678('0x8')},'leadId':{'type':Sequelize[_0x0678('0x2')]},'additionalSearchAccount':{'type':Sequelize['STRING']},'additionalSearchContact':{'type':Sequelize[_0x0678('0x2')]},'additionalSearchLead':{'type':Sequelize[_0x0678('0x2')]}};
\ No newline at end of file
index afcd1c4..140ed33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1976=['status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','error','stack','name','send','index','SalesforceConfiguration','fieldName','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','then','catch','show','params','keys','rawAttributes','find','create','body','findOne','SalesforceField','getFields','getSubjects','order','getDescriptions','rimraf','fast-json-patch','moment','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','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1976,0x1e3));var _0x6197=function(_0x201a8e,_0x409d6b){_0x201a8e=_0x201a8e-0x0;var _0x47e92d=_0x1976[_0x201a8e];return _0x47e92d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6197('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6197('0x1'));var rp=require('request-promise');var moment=require(_0x6197('0x2'));var BPromise=require(_0x6197('0x3'));var Mustache=require(_0x6197('0x4'));var util=require(_0x6197('0x5'));var path=require(_0x6197('0x6'));var sox=require('sox');var csv=require(_0x6197('0x7'));var ejs=require(_0x6197('0x8'));var fs=require('fs');var fs_extra=require(_0x6197('0x9'));var _=require(_0x6197('0xa'));var squel=require(_0x6197('0xb'));var crypto=require(_0x6197('0xc'));var jsforce=require(_0x6197('0xd'));var deskjs=require(_0x6197('0xe'));var toCsv=require(_0x6197('0x7'));var querystring=require(_0x6197('0xf'));var Papa=require(_0x6197('0x10'));var Redis=require(_0x6197('0x11'));var authService=require(_0x6197('0x12'));var qs=require(_0x6197('0x13'));var as=require(_0x6197('0x14'));var hardwareService=require(_0x6197('0x15'));var logger=require('../../config/logger')(_0x6197('0x16'));var utils=require(_0x6197('0x17'));var config=require(_0x6197('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x6197('0x19'))['db'];function respondWithStatusCode(_0x1e6d76,_0x5c77bb){_0x5c77bb=_0x5c77bb||0xcc;return function(_0x816ad1){if(_0x816ad1){return _0x1e6d76[_0x6197('0x1a')](_0x5c77bb);}return _0x1e6d76[_0x6197('0x1b')](_0x5c77bb)[_0x6197('0x1c')]();};}function respondWithResult(_0x237748,_0x2b7009){_0x2b7009=_0x2b7009||0xc8;return function(_0x1a731c){if(_0x1a731c){return _0x237748[_0x6197('0x1b')](_0x2b7009)['json'](_0x1a731c);}};}function respondWithFilteredResult(_0x3d3582,_0x171174){return function(_0x50155b){if(_0x50155b){var _0x35ccb6=typeof _0x171174[_0x6197('0x1d')]===_0x6197('0x1e')&&typeof _0x171174[_0x6197('0x1f')]==='undefined';var _0x2d7b83=_0x50155b[_0x6197('0x20')];var _0x143836=_0x35ccb6?0x0:_0x171174[_0x6197('0x1d')];var _0x48024e=_0x35ccb6?_0x50155b[_0x6197('0x20')]:_0x171174['offset']+_0x171174[_0x6197('0x1f')];var _0x1a7087;if(_0x48024e>=_0x2d7b83){_0x48024e=_0x2d7b83;_0x1a7087=0xc8;}else{_0x1a7087=0xce;}_0x3d3582[_0x6197('0x1b')](_0x1a7087);return _0x3d3582[_0x6197('0x21')](_0x6197('0x22'),_0x143836+'-'+_0x48024e+'/'+_0x2d7b83)[_0x6197('0x23')](_0x50155b);}return null;};}function patchUpdates(_0x1f6b72){return function(_0x185047){try{jsonpatch[_0x6197('0x24')](_0x185047,_0x1f6b72,!![]);}catch(_0x8763d7){return BPromise[_0x6197('0x25')](_0x8763d7);}return _0x185047[_0x6197('0x26')]();};}function saveUpdates(_0x498045,_0x29d0d0){return function(_0x5f55cd){if(_0x5f55cd){return _0x5f55cd[_0x6197('0x27')](_0x498045)['then'](function(_0x305107){return _0x305107;});}return null;};}function removeEntity(_0xbc06ed,_0x3cc115){return function(_0x5ce231){if(_0x5ce231){return _0x5ce231[_0x6197('0x28')]()['then'](function(){_0xbc06ed[_0x6197('0x1b')](0xcc)[_0x6197('0x1c')]();});}};}function handleEntityNotFound(_0x5bd5d9,_0x1f4759){return function(_0x1afde8){if(!_0x1afde8){_0x5bd5d9['sendStatus'](0x194);}return _0x1afde8;};}function handleError(_0x238d1c,_0x2d2856){_0x2d2856=_0x2d2856||0x1f4;return function(_0x191065){logger[_0x6197('0x29')](_0x191065[_0x6197('0x2a')]);if(_0x191065[_0x6197('0x2b')]){delete _0x191065[_0x6197('0x2b')];}_0x238d1c[_0x6197('0x1b')](_0x2d2856)[_0x6197('0x2c')](_0x191065);};}exports[_0x6197('0x2d')]=function(_0x57e898,_0x368c5e){var _0x9c93af={},_0x2eb8bc={},_0x14400f={'count':0x0,'rows':[]};var _0x3fa8fa=_['map'](db[_0x6197('0x2e')]['rawAttributes'],function(_0x589611){return{'name':_0x589611[_0x6197('0x2f')],'type':_0x589611['type']['key']};});_0x2eb8bc[_0x6197('0x30')]=_[_0x6197('0x31')](_0x3fa8fa,_0x6197('0x2b'));_0x2eb8bc['query']=_['keys'](_0x57e898[_0x6197('0x32')]);_0x2eb8bc[_0x6197('0x33')]=_[_0x6197('0x34')](_0x2eb8bc['model'],_0x2eb8bc['query']);_0x9c93af['attributes']=_[_0x6197('0x34')](_0x2eb8bc[_0x6197('0x30')],qs[_0x6197('0x35')](_0x57e898[_0x6197('0x32')][_0x6197('0x35')]));_0x9c93af[_0x6197('0x36')]=_0x9c93af[_0x6197('0x36')][_0x6197('0x37')]?_0x9c93af[_0x6197('0x36')]:_0x2eb8bc[_0x6197('0x30')];if(!_0x57e898[_0x6197('0x32')][_0x6197('0x38')](_0x6197('0x39'))){_0x9c93af[_0x6197('0x1f')]=qs[_0x6197('0x1f')](_0x57e898['query']['limit']);_0x9c93af[_0x6197('0x1d')]=qs[_0x6197('0x1d')](_0x57e898[_0x6197('0x32')]['offset']);}_0x9c93af['order']=qs[_0x6197('0x3a')](_0x57e898[_0x6197('0x32')][_0x6197('0x3a')]);_0x9c93af[_0x6197('0x3b')]=qs[_0x6197('0x33')](_[_0x6197('0x3c')](_0x57e898[_0x6197('0x32')],_0x2eb8bc[_0x6197('0x33')]),_0x3fa8fa);if(_0x57e898['query'][_0x6197('0x3d')]){_0x9c93af[_0x6197('0x3b')]=_['merge'](_0x9c93af[_0x6197('0x3b')],{'$or':_['map'](_0x3fa8fa,function(_0x3a97af){if(_0x3a97af[_0x6197('0x3e')]!==_0x6197('0x3f')){var _0x3aaaf2={};_0x3aaaf2[_0x3a97af['name']]={'$like':'%'+_0x57e898[_0x6197('0x32')][_0x6197('0x3d')]+'%'};return _0x3aaaf2;}})});}_0x9c93af=_[_0x6197('0x40')]({},_0x9c93af,_0x57e898[_0x6197('0x41')]);var _0x2bb673={'where':_0x9c93af['where']};return db[_0x6197('0x2e')][_0x6197('0x20')](_0x2bb673)['then'](function(_0x418241){_0x14400f['count']=_0x418241;if(_0x57e898[_0x6197('0x32')][_0x6197('0x42')]){_0x9c93af[_0x6197('0x43')]=[{'all':!![]}];}return db[_0x6197('0x2e')][_0x6197('0x44')](_0x9c93af);})['then'](function(_0x4f924c){_0x14400f[_0x6197('0x45')]=_0x4f924c;return _0x14400f;})[_0x6197('0x46')](respondWithFilteredResult(_0x368c5e,_0x9c93af))[_0x6197('0x47')](handleError(_0x368c5e,null));};exports[_0x6197('0x48')]=function(_0x32755a,_0x37f9b1){var _0x613d51={'raw':![],'where':{'id':_0x32755a[_0x6197('0x49')]['id']}},_0x17d649={};_0x17d649[_0x6197('0x30')]=_[_0x6197('0x4a')](db['SalesforceConfiguration'][_0x6197('0x4b')]);_0x17d649['query']=_[_0x6197('0x4a')](_0x32755a[_0x6197('0x32')]);_0x17d649[_0x6197('0x33')]=_[_0x6197('0x34')](_0x17d649[_0x6197('0x30')],_0x17d649[_0x6197('0x32')]);_0x613d51[_0x6197('0x36')]=_[_0x6197('0x34')](_0x17d649[_0x6197('0x30')],qs[_0x6197('0x35')](_0x32755a['query']['fields']));_0x613d51['attributes']=_0x613d51[_0x6197('0x36')][_0x6197('0x37')]?_0x613d51[_0x6197('0x36')]:_0x17d649[_0x6197('0x30')];if(_0x32755a[_0x6197('0x32')][_0x6197('0x42')]){_0x613d51[_0x6197('0x43')]=[{'all':!![]}];}_0x613d51=_[_0x6197('0x40')]({},_0x613d51,_0x32755a['options']);return db[_0x6197('0x2e')][_0x6197('0x4c')](_0x613d51)[_0x6197('0x46')](handleEntityNotFound(_0x37f9b1,null))[_0x6197('0x46')](respondWithResult(_0x37f9b1,null))[_0x6197('0x47')](handleError(_0x37f9b1,null));};exports[_0x6197('0x4d')]=function(_0x4b682e,_0x22cff2){return db[_0x6197('0x2e')][_0x6197('0x4d')](_0x4b682e[_0x6197('0x4e')],{})[_0x6197('0x46')](respondWithResult(_0x22cff2,0xc9))[_0x6197('0x47')](handleError(_0x22cff2,null));};exports[_0x6197('0x27')]=function(_0x4bc338,_0x1aad90){if(_0x4bc338[_0x6197('0x4e')]['id']){delete _0x4bc338[_0x6197('0x4e')]['id'];}return db[_0x6197('0x2e')][_0x6197('0x4c')]({'where':{'id':_0x4bc338[_0x6197('0x49')]['id']}})['then'](handleEntityNotFound(_0x1aad90,null))[_0x6197('0x46')](saveUpdates(_0x4bc338[_0x6197('0x4e')],null))[_0x6197('0x46')](respondWithResult(_0x1aad90,null))[_0x6197('0x47')](handleError(_0x1aad90,null));};exports[_0x6197('0x28')]=function(_0x3b9b95,_0x3e2d32){return db[_0x6197('0x2e')]['find']({'where':{'id':_0x3b9b95[_0x6197('0x49')]['id']}})['then'](handleEntityNotFound(_0x3e2d32,null))['then'](removeEntity(_0x3e2d32,null))[_0x6197('0x47')](handleError(_0x3e2d32,null));};exports['getFields']=function(_0x24fcbc,_0x468224,_0x510209){var _0x2f17e2={};var _0x1c09ea={};var _0x5e1555;var _0x3228f0;return db[_0x6197('0x2e')][_0x6197('0x4f')]({'where':{'id':_0x24fcbc[_0x6197('0x49')]['id']}})[_0x6197('0x46')](handleEntityNotFound(_0x468224,null))[_0x6197('0x46')](function(_0x2159ea){if(_0x2159ea){_0x5e1555=_0x2159ea;_0x1c09ea[_0x6197('0x30')]=_[_0x6197('0x4a')](db[_0x6197('0x50')][_0x6197('0x4b')]);_0x1c09ea[_0x6197('0x32')]=_[_0x6197('0x4a')](_0x24fcbc[_0x6197('0x32')]);_0x1c09ea[_0x6197('0x33')]=_[_0x6197('0x34')](_0x1c09ea[_0x6197('0x30')],_0x1c09ea['query']);_0x2f17e2[_0x6197('0x36')]=_['intersection'](_0x1c09ea[_0x6197('0x30')],qs[_0x6197('0x35')](_0x24fcbc['query']['fields']));_0x2f17e2[_0x6197('0x36')]=_0x2f17e2[_0x6197('0x36')][_0x6197('0x37')]?_0x2f17e2[_0x6197('0x36')]:_0x1c09ea[_0x6197('0x30')];_0x2f17e2['order']=qs[_0x6197('0x3a')](_0x24fcbc[_0x6197('0x32')]['sort']);_0x2f17e2[_0x6197('0x3b')]=qs[_0x6197('0x33')](_[_0x6197('0x3c')](_0x24fcbc[_0x6197('0x32')],_0x1c09ea[_0x6197('0x33')]));if(_0x24fcbc[_0x6197('0x32')][_0x6197('0x3d')]){_0x2f17e2[_0x6197('0x3b')]=_[_0x6197('0x40')](_0x2f17e2[_0x6197('0x3b')],{'$or':_[_0x6197('0x31')](_0x2f17e2['attributes'],function(_0x5b4335){var _0x107329={};_0x107329[_0x5b4335]={'$like':'%'+_0x24fcbc['query'][_0x6197('0x3d')]+'%'};return _0x107329;})});}_0x2f17e2=_[_0x6197('0x40')]({},_0x2f17e2,_0x24fcbc[_0x6197('0x41')]);return _0x5e1555[_0x6197('0x51')](_0x2f17e2);}})[_0x6197('0x46')](function(_0x5035eb){if(_0x5035eb){_0x3228f0=_0x5035eb[_0x6197('0x37')];if(!_0x24fcbc[_0x6197('0x32')]['hasOwnProperty']('nolimit')){_0x2f17e2[_0x6197('0x1f')]=qs[_0x6197('0x1f')](_0x24fcbc[_0x6197('0x32')][_0x6197('0x1f')]);_0x2f17e2[_0x6197('0x1d')]=qs[_0x6197('0x1d')](_0x24fcbc['query'][_0x6197('0x1d')]);}return _0x5e1555['getFields'](_0x2f17e2);}})[_0x6197('0x46')](function(_0x3716f3){if(_0x3716f3){return _0x3716f3?{'count':_0x3228f0,'rows':_0x3716f3}:null;}})[_0x6197('0x46')](respondWithResult(_0x468224,null))[_0x6197('0x47')](handleError(_0x468224,null));};exports[_0x6197('0x52')]=function(_0x332e73,_0x3970a5,_0x1bd28d){var _0x27eab6={};var _0x49fe27={};var _0x437662;var _0x430a56;return db[_0x6197('0x2e')][_0x6197('0x4f')]({'where':{'id':_0x332e73[_0x6197('0x49')]['id']}})[_0x6197('0x46')](handleEntityNotFound(_0x3970a5,null))[_0x6197('0x46')](function(_0x4a6a4e){if(_0x4a6a4e){_0x437662=_0x4a6a4e;_0x49fe27['model']=_[_0x6197('0x4a')](db['SalesforceField']['rawAttributes']);_0x49fe27[_0x6197('0x32')]=_[_0x6197('0x4a')](_0x332e73[_0x6197('0x32')]);_0x49fe27[_0x6197('0x33')]=_[_0x6197('0x34')](_0x49fe27[_0x6197('0x30')],_0x49fe27[_0x6197('0x32')]);_0x27eab6['attributes']=_['intersection'](_0x49fe27[_0x6197('0x30')],qs['fields'](_0x332e73[_0x6197('0x32')][_0x6197('0x35')]));_0x27eab6[_0x6197('0x36')]=_0x27eab6[_0x6197('0x36')][_0x6197('0x37')]?_0x27eab6['attributes']:_0x49fe27[_0x6197('0x30')];_0x27eab6[_0x6197('0x53')]=qs[_0x6197('0x3a')](_0x332e73['query'][_0x6197('0x3a')]);_0x27eab6[_0x6197('0x3b')]=qs[_0x6197('0x33')](_['pick'](_0x332e73['query'],_0x49fe27[_0x6197('0x33')]));if(_0x332e73[_0x6197('0x32')][_0x6197('0x3d')]){_0x27eab6['where']=_['merge'](_0x27eab6[_0x6197('0x3b')],{'$or':_[_0x6197('0x31')](_0x27eab6[_0x6197('0x36')],function(_0x5bc2f6){var _0x53829d={};_0x53829d[_0x5bc2f6]={'$like':'%'+_0x332e73[_0x6197('0x32')][_0x6197('0x3d')]+'%'};return _0x53829d;})});}_0x27eab6=_[_0x6197('0x40')]({},_0x27eab6,_0x332e73[_0x6197('0x41')]);return _0x437662[_0x6197('0x52')](_0x27eab6);}})[_0x6197('0x46')](function(_0x57025c){if(_0x57025c){_0x430a56=_0x57025c[_0x6197('0x37')];if(!_0x332e73[_0x6197('0x32')][_0x6197('0x38')](_0x6197('0x39'))){_0x27eab6['limit']=qs['limit'](_0x332e73[_0x6197('0x32')][_0x6197('0x1f')]);_0x27eab6['offset']=qs[_0x6197('0x1d')](_0x332e73[_0x6197('0x32')][_0x6197('0x1d')]);}return _0x437662[_0x6197('0x52')](_0x27eab6);}})[_0x6197('0x46')](function(_0x3310c0){if(_0x3310c0){return _0x3310c0?{'count':_0x430a56,'rows':_0x3310c0}:null;}})[_0x6197('0x46')](respondWithResult(_0x3970a5,null))[_0x6197('0x47')](handleError(_0x3970a5,null));};exports[_0x6197('0x54')]=function(_0x497ca2,_0x355c91,_0x51d3ba){var _0x10aac8={};var _0x1a4f77={};var _0x4f352b;var _0x13bec5;return db['SalesforceConfiguration'][_0x6197('0x4f')]({'where':{'id':_0x497ca2[_0x6197('0x49')]['id']}})[_0x6197('0x46')](handleEntityNotFound(_0x355c91,null))['then'](function(_0x9ede5d){if(_0x9ede5d){_0x4f352b=_0x9ede5d;_0x1a4f77[_0x6197('0x30')]=_[_0x6197('0x4a')](db[_0x6197('0x50')]['rawAttributes']);_0x1a4f77['query']=_[_0x6197('0x4a')](_0x497ca2[_0x6197('0x32')]);_0x1a4f77['filters']=_[_0x6197('0x34')](_0x1a4f77[_0x6197('0x30')],_0x1a4f77[_0x6197('0x32')]);_0x10aac8['attributes']=_[_0x6197('0x34')](_0x1a4f77[_0x6197('0x30')],qs[_0x6197('0x35')](_0x497ca2[_0x6197('0x32')]['fields']));_0x10aac8['attributes']=_0x10aac8[_0x6197('0x36')]['length']?_0x10aac8[_0x6197('0x36')]:_0x1a4f77['model'];_0x10aac8[_0x6197('0x53')]=qs[_0x6197('0x3a')](_0x497ca2['query'][_0x6197('0x3a')]);_0x10aac8[_0x6197('0x3b')]=qs[_0x6197('0x33')](_['pick'](_0x497ca2[_0x6197('0x32')],_0x1a4f77['filters']));if(_0x497ca2['query']['filter']){_0x10aac8['where']=_[_0x6197('0x40')](_0x10aac8[_0x6197('0x3b')],{'$or':_['map'](_0x10aac8['attributes'],function(_0x360a53){var _0x1b47f5={};_0x1b47f5[_0x360a53]={'$like':'%'+_0x497ca2['query'][_0x6197('0x3d')]+'%'};return _0x1b47f5;})});}_0x10aac8=_[_0x6197('0x40')]({},_0x10aac8,_0x497ca2['options']);return _0x4f352b[_0x6197('0x54')](_0x10aac8);}})[_0x6197('0x46')](function(_0x31acd3){if(_0x31acd3){_0x13bec5=_0x31acd3['length'];if(!_0x497ca2[_0x6197('0x32')][_0x6197('0x38')](_0x6197('0x39'))){_0x10aac8[_0x6197('0x1f')]=qs['limit'](_0x497ca2[_0x6197('0x32')]['limit']);_0x10aac8[_0x6197('0x1d')]=qs['offset'](_0x497ca2['query'][_0x6197('0x1d')]);}return _0x4f352b[_0x6197('0x54')](_0x10aac8);}})['then'](function(_0x10a5b1){if(_0x10a5b1){return _0x10a5b1?{'count':_0x13bec5,'rows':_0x10a5b1}:null;}})[_0x6197('0x46')](respondWithResult(_0x355c91,null))['catch'](handleError(_0x355c91,null));};
\ No newline at end of file
+var _0x0e99=['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','json','offset','undefined','count','limit','set','apply','update','then','destroy','error','stack','name','send','index','map','fieldName','key','model','keys','filters','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','options','includeAll','include','rows','catch','show','params','rawAttributes','SalesforceConfiguration','find','create','body','getFields','SalesforceField','filter','getSubjects','findOne','getDescriptions','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel'];(function(_0x16ec8d,_0x4bf3f0){var _0x12bdbf=function(_0x1a73ba){while(--_0x1a73ba){_0x16ec8d['push'](_0x16ec8d['shift']());}};_0x12bdbf(++_0x4bf3f0);}(_0x0e99,0xeb));var _0x90e9=function(_0x3a50ae,_0x4a505b){_0x3a50ae=_0x3a50ae-0x0;var _0x3a16f4=_0x0e99[_0x3a50ae];return _0x3a16f4;};'use strict';var emlformat=require(_0x90e9('0x0'));var rimraf=require(_0x90e9('0x1'));var zipdir=require(_0x90e9('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x90e9('0x3'));var BPromise=require(_0x90e9('0x4'));var Mustache=require(_0x90e9('0x5'));var util=require(_0x90e9('0x6'));var path=require(_0x90e9('0x7'));var sox=require(_0x90e9('0x8'));var csv=require(_0x90e9('0x9'));var ejs=require(_0x90e9('0xa'));var fs=require('fs');var fs_extra=require(_0x90e9('0xb'));var _=require(_0x90e9('0xc'));var squel=require(_0x90e9('0xd'));var crypto=require(_0x90e9('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x90e9('0xf'));var toCsv=require(_0x90e9('0x9'));var querystring=require(_0x90e9('0x10'));var Papa=require(_0x90e9('0x11'));var Redis=require(_0x90e9('0x12'));var authService=require(_0x90e9('0x13'));var qs=require(_0x90e9('0x14'));var as=require(_0x90e9('0x15'));var hardwareService=require(_0x90e9('0x16'));var logger=require('../../config/logger')(_0x90e9('0x17'));var utils=require(_0x90e9('0x18'));var config=require(_0x90e9('0x19'));var licenseUtil=require(_0x90e9('0x1a'));var db=require(_0x90e9('0x1b'))['db'];function respondWithStatusCode(_0x313790,_0x17fe4d){_0x17fe4d=_0x17fe4d||0xcc;return function(_0x52fc33){if(_0x52fc33){return _0x313790[_0x90e9('0x1c')](_0x17fe4d);}return _0x313790[_0x90e9('0x1d')](_0x17fe4d)[_0x90e9('0x1e')]();};}function respondWithResult(_0x10a418,_0x377d21){_0x377d21=_0x377d21||0xc8;return function(_0x4bce54){if(_0x4bce54){return _0x10a418[_0x90e9('0x1d')](_0x377d21)[_0x90e9('0x1f')](_0x4bce54);}};}function respondWithFilteredResult(_0x19a387,_0x2ae256){return function(_0x1128b2){if(_0x1128b2){var _0x3a01f4=typeof _0x2ae256[_0x90e9('0x20')]===_0x90e9('0x21')&&typeof _0x2ae256['limit']===_0x90e9('0x21');var _0x228a52=_0x1128b2['count'];var _0x3e61c1=_0x3a01f4?0x0:_0x2ae256['offset'];var _0x183492=_0x3a01f4?_0x1128b2[_0x90e9('0x22')]:_0x2ae256[_0x90e9('0x20')]+_0x2ae256[_0x90e9('0x23')];var _0x45d75f;if(_0x183492>=_0x228a52){_0x183492=_0x228a52;_0x45d75f=0xc8;}else{_0x45d75f=0xce;}_0x19a387[_0x90e9('0x1d')](_0x45d75f);return _0x19a387[_0x90e9('0x24')]('Content-Range',_0x3e61c1+'-'+_0x183492+'/'+_0x228a52)[_0x90e9('0x1f')](_0x1128b2);}return null;};}function patchUpdates(_0x5b8f23){return function(_0x38f800){try{jsonpatch[_0x90e9('0x25')](_0x38f800,_0x5b8f23,!![]);}catch(_0x16d590){return BPromise['reject'](_0x16d590);}return _0x38f800['save']();};}function saveUpdates(_0x8632bc,_0x2400d5){return function(_0x2067ae){if(_0x2067ae){return _0x2067ae[_0x90e9('0x26')](_0x8632bc)[_0x90e9('0x27')](function(_0x27cc39){return _0x27cc39;});}return null;};}function removeEntity(_0x5066de,_0x1899c4){return function(_0x5a9e23){if(_0x5a9e23){return _0x5a9e23[_0x90e9('0x28')]()[_0x90e9('0x27')](function(){_0x5066de[_0x90e9('0x1d')](0xcc)[_0x90e9('0x1e')]();});}};}function handleEntityNotFound(_0x270ccb,_0xe9b4af){return function(_0x3aceb3){if(!_0x3aceb3){_0x270ccb[_0x90e9('0x1c')](0x194);}return _0x3aceb3;};}function handleError(_0x231e77,_0x1e3c24){_0x1e3c24=_0x1e3c24||0x1f4;return function(_0x158e7b){logger[_0x90e9('0x29')](_0x158e7b[_0x90e9('0x2a')]);if(_0x158e7b['name']){delete _0x158e7b[_0x90e9('0x2b')];}_0x231e77[_0x90e9('0x1d')](_0x1e3c24)[_0x90e9('0x2c')](_0x158e7b);};}exports[_0x90e9('0x2d')]=function(_0xb882b2,_0x1c324b){var _0x4be1aa={},_0x366c63={},_0x3eea39={'count':0x0,'rows':[]};var _0xb6bfcd=_[_0x90e9('0x2e')](db['SalesforceConfiguration']['rawAttributes'],function(_0x51ebef){return{'name':_0x51ebef[_0x90e9('0x2f')],'type':_0x51ebef['type'][_0x90e9('0x30')]};});_0x366c63[_0x90e9('0x31')]=_[_0x90e9('0x2e')](_0xb6bfcd,_0x90e9('0x2b'));_0x366c63['query']=_[_0x90e9('0x32')](_0xb882b2['query']);_0x366c63[_0x90e9('0x33')]=_['intersection'](_0x366c63[_0x90e9('0x31')],_0x366c63[_0x90e9('0x34')]);_0x4be1aa[_0x90e9('0x35')]=_[_0x90e9('0x36')](_0x366c63[_0x90e9('0x31')],qs[_0x90e9('0x37')](_0xb882b2[_0x90e9('0x34')][_0x90e9('0x37')]));_0x4be1aa[_0x90e9('0x35')]=_0x4be1aa[_0x90e9('0x35')][_0x90e9('0x38')]?_0x4be1aa[_0x90e9('0x35')]:_0x366c63[_0x90e9('0x31')];if(!_0xb882b2['query'][_0x90e9('0x39')](_0x90e9('0x3a'))){_0x4be1aa[_0x90e9('0x23')]=qs[_0x90e9('0x23')](_0xb882b2[_0x90e9('0x34')][_0x90e9('0x23')]);_0x4be1aa['offset']=qs['offset'](_0xb882b2[_0x90e9('0x34')][_0x90e9('0x20')]);}_0x4be1aa[_0x90e9('0x3b')]=qs[_0x90e9('0x3c')](_0xb882b2[_0x90e9('0x34')][_0x90e9('0x3c')]);_0x4be1aa[_0x90e9('0x3d')]=qs[_0x90e9('0x33')](_[_0x90e9('0x3e')](_0xb882b2['query'],_0x366c63[_0x90e9('0x33')]),_0xb6bfcd);if(_0xb882b2[_0x90e9('0x34')]['filter']){_0x4be1aa[_0x90e9('0x3d')]=_[_0x90e9('0x3f')](_0x4be1aa[_0x90e9('0x3d')],{'$or':_[_0x90e9('0x2e')](_0xb6bfcd,function(_0x23c9ee){if(_0x23c9ee[_0x90e9('0x40')]!=='VIRTUAL'){var _0x3d6ad7={};_0x3d6ad7[_0x23c9ee[_0x90e9('0x2b')]]={'$like':'%'+_0xb882b2[_0x90e9('0x34')]['filter']+'%'};return _0x3d6ad7;}})});}_0x4be1aa=_['merge']({},_0x4be1aa,_0xb882b2[_0x90e9('0x41')]);var _0x4195ba={'where':_0x4be1aa['where']};return db['SalesforceConfiguration'][_0x90e9('0x22')](_0x4195ba)[_0x90e9('0x27')](function(_0x3f3af3){_0x3eea39[_0x90e9('0x22')]=_0x3f3af3;if(_0xb882b2[_0x90e9('0x34')][_0x90e9('0x42')]){_0x4be1aa[_0x90e9('0x43')]=[{'all':!![]}];}return db['SalesforceConfiguration']['findAll'](_0x4be1aa);})[_0x90e9('0x27')](function(_0x190167){_0x3eea39[_0x90e9('0x44')]=_0x190167;return _0x3eea39;})[_0x90e9('0x27')](respondWithFilteredResult(_0x1c324b,_0x4be1aa))[_0x90e9('0x45')](handleError(_0x1c324b,null));};exports[_0x90e9('0x46')]=function(_0x2d1da2,_0x58d75b){var _0x49aa86={'raw':![],'where':{'id':_0x2d1da2[_0x90e9('0x47')]['id']}},_0x424fd1={};_0x424fd1[_0x90e9('0x31')]=_[_0x90e9('0x32')](db['SalesforceConfiguration'][_0x90e9('0x48')]);_0x424fd1[_0x90e9('0x34')]=_[_0x90e9('0x32')](_0x2d1da2[_0x90e9('0x34')]);_0x424fd1[_0x90e9('0x33')]=_[_0x90e9('0x36')](_0x424fd1[_0x90e9('0x31')],_0x424fd1[_0x90e9('0x34')]);_0x49aa86[_0x90e9('0x35')]=_['intersection'](_0x424fd1[_0x90e9('0x31')],qs[_0x90e9('0x37')](_0x2d1da2[_0x90e9('0x34')][_0x90e9('0x37')]));_0x49aa86[_0x90e9('0x35')]=_0x49aa86[_0x90e9('0x35')][_0x90e9('0x38')]?_0x49aa86[_0x90e9('0x35')]:_0x424fd1[_0x90e9('0x31')];if(_0x2d1da2[_0x90e9('0x34')][_0x90e9('0x42')]){_0x49aa86[_0x90e9('0x43')]=[{'all':!![]}];}_0x49aa86=_[_0x90e9('0x3f')]({},_0x49aa86,_0x2d1da2['options']);return db[_0x90e9('0x49')][_0x90e9('0x4a')](_0x49aa86)['then'](handleEntityNotFound(_0x58d75b,null))[_0x90e9('0x27')](respondWithResult(_0x58d75b,null))['catch'](handleError(_0x58d75b,null));};exports[_0x90e9('0x4b')]=function(_0x4921ee,_0x4925b1){return db[_0x90e9('0x49')]['create'](_0x4921ee['body'],{})['then'](respondWithResult(_0x4925b1,0xc9))[_0x90e9('0x45')](handleError(_0x4925b1,null));};exports[_0x90e9('0x26')]=function(_0x4052f2,_0x5b6b38){if(_0x4052f2[_0x90e9('0x4c')]['id']){delete _0x4052f2[_0x90e9('0x4c')]['id'];}return db['SalesforceConfiguration'][_0x90e9('0x4a')]({'where':{'id':_0x4052f2[_0x90e9('0x47')]['id']}})[_0x90e9('0x27')](handleEntityNotFound(_0x5b6b38,null))[_0x90e9('0x27')](saveUpdates(_0x4052f2['body'],null))[_0x90e9('0x27')](respondWithResult(_0x5b6b38,null))[_0x90e9('0x45')](handleError(_0x5b6b38,null));};exports[_0x90e9('0x28')]=function(_0x1749bc,_0x5ce7ba){return db[_0x90e9('0x49')]['find']({'where':{'id':_0x1749bc['params']['id']}})[_0x90e9('0x27')](handleEntityNotFound(_0x5ce7ba,null))[_0x90e9('0x27')](removeEntity(_0x5ce7ba,null))['catch'](handleError(_0x5ce7ba,null));};exports[_0x90e9('0x4d')]=function(_0x187161,_0xca45e,_0x2354f3){var _0x54fb18={};var _0x44fd38={};var _0x7d3b3b;var _0x2fee5f;return db['SalesforceConfiguration']['findOne']({'where':{'id':_0x187161['params']['id']}})[_0x90e9('0x27')](handleEntityNotFound(_0xca45e,null))[_0x90e9('0x27')](function(_0x2c9ce9){if(_0x2c9ce9){_0x7d3b3b=_0x2c9ce9;_0x44fd38[_0x90e9('0x31')]=_[_0x90e9('0x32')](db[_0x90e9('0x4e')][_0x90e9('0x48')]);_0x44fd38[_0x90e9('0x34')]=_[_0x90e9('0x32')](_0x187161['query']);_0x44fd38['filters']=_[_0x90e9('0x36')](_0x44fd38[_0x90e9('0x31')],_0x44fd38[_0x90e9('0x34')]);_0x54fb18[_0x90e9('0x35')]=_['intersection'](_0x44fd38['model'],qs[_0x90e9('0x37')](_0x187161[_0x90e9('0x34')][_0x90e9('0x37')]));_0x54fb18[_0x90e9('0x35')]=_0x54fb18['attributes']['length']?_0x54fb18[_0x90e9('0x35')]:_0x44fd38[_0x90e9('0x31')];_0x54fb18[_0x90e9('0x3b')]=qs[_0x90e9('0x3c')](_0x187161[_0x90e9('0x34')][_0x90e9('0x3c')]);_0x54fb18[_0x90e9('0x3d')]=qs[_0x90e9('0x33')](_[_0x90e9('0x3e')](_0x187161[_0x90e9('0x34')],_0x44fd38[_0x90e9('0x33')]));if(_0x187161[_0x90e9('0x34')][_0x90e9('0x4f')]){_0x54fb18[_0x90e9('0x3d')]=_['merge'](_0x54fb18['where'],{'$or':_[_0x90e9('0x2e')](_0x54fb18[_0x90e9('0x35')],function(_0x4376fe){var _0x4f7ad4={};_0x4f7ad4[_0x4376fe]={'$like':'%'+_0x187161['query'][_0x90e9('0x4f')]+'%'};return _0x4f7ad4;})});}_0x54fb18=_[_0x90e9('0x3f')]({},_0x54fb18,_0x187161[_0x90e9('0x41')]);return _0x7d3b3b['getFields'](_0x54fb18);}})['then'](function(_0x4f1fd2){if(_0x4f1fd2){_0x2fee5f=_0x4f1fd2['length'];if(!_0x187161['query'][_0x90e9('0x39')](_0x90e9('0x3a'))){_0x54fb18['limit']=qs[_0x90e9('0x23')](_0x187161[_0x90e9('0x34')]['limit']);_0x54fb18[_0x90e9('0x20')]=qs[_0x90e9('0x20')](_0x187161[_0x90e9('0x34')][_0x90e9('0x20')]);}return _0x7d3b3b[_0x90e9('0x4d')](_0x54fb18);}})[_0x90e9('0x27')](function(_0x5a9bc4){if(_0x5a9bc4){return _0x5a9bc4?{'count':_0x2fee5f,'rows':_0x5a9bc4}:null;}})[_0x90e9('0x27')](respondWithResult(_0xca45e,null))[_0x90e9('0x45')](handleError(_0xca45e,null));};exports[_0x90e9('0x50')]=function(_0x49f033,_0x4d9a7f,_0x11df64){var _0x115fb5={};var _0x4dd775={};var _0x38f248;var _0x3ac032;return db[_0x90e9('0x49')][_0x90e9('0x51')]({'where':{'id':_0x49f033[_0x90e9('0x47')]['id']}})[_0x90e9('0x27')](handleEntityNotFound(_0x4d9a7f,null))[_0x90e9('0x27')](function(_0x29ce4c){if(_0x29ce4c){_0x38f248=_0x29ce4c;_0x4dd775['model']=_[_0x90e9('0x32')](db[_0x90e9('0x4e')][_0x90e9('0x48')]);_0x4dd775['query']=_[_0x90e9('0x32')](_0x49f033[_0x90e9('0x34')]);_0x4dd775[_0x90e9('0x33')]=_[_0x90e9('0x36')](_0x4dd775[_0x90e9('0x31')],_0x4dd775['query']);_0x115fb5[_0x90e9('0x35')]=_[_0x90e9('0x36')](_0x4dd775['model'],qs[_0x90e9('0x37')](_0x49f033[_0x90e9('0x34')][_0x90e9('0x37')]));_0x115fb5[_0x90e9('0x35')]=_0x115fb5[_0x90e9('0x35')]['length']?_0x115fb5['attributes']:_0x4dd775['model'];_0x115fb5[_0x90e9('0x3b')]=qs['sort'](_0x49f033['query'][_0x90e9('0x3c')]);_0x115fb5[_0x90e9('0x3d')]=qs[_0x90e9('0x33')](_[_0x90e9('0x3e')](_0x49f033['query'],_0x4dd775[_0x90e9('0x33')]));if(_0x49f033[_0x90e9('0x34')][_0x90e9('0x4f')]){_0x115fb5[_0x90e9('0x3d')]=_[_0x90e9('0x3f')](_0x115fb5[_0x90e9('0x3d')],{'$or':_[_0x90e9('0x2e')](_0x115fb5[_0x90e9('0x35')],function(_0x267be7){var _0x2dd4b9={};_0x2dd4b9[_0x267be7]={'$like':'%'+_0x49f033['query'][_0x90e9('0x4f')]+'%'};return _0x2dd4b9;})});}_0x115fb5=_[_0x90e9('0x3f')]({},_0x115fb5,_0x49f033['options']);return _0x38f248[_0x90e9('0x50')](_0x115fb5);}})[_0x90e9('0x27')](function(_0x199d16){if(_0x199d16){_0x3ac032=_0x199d16[_0x90e9('0x38')];if(!_0x49f033[_0x90e9('0x34')]['hasOwnProperty'](_0x90e9('0x3a'))){_0x115fb5['limit']=qs[_0x90e9('0x23')](_0x49f033[_0x90e9('0x34')][_0x90e9('0x23')]);_0x115fb5['offset']=qs[_0x90e9('0x20')](_0x49f033[_0x90e9('0x34')][_0x90e9('0x20')]);}return _0x38f248[_0x90e9('0x50')](_0x115fb5);}})[_0x90e9('0x27')](function(_0x356e5f){if(_0x356e5f){return _0x356e5f?{'count':_0x3ac032,'rows':_0x356e5f}:null;}})[_0x90e9('0x27')](respondWithResult(_0x4d9a7f,null))[_0x90e9('0x45')](handleError(_0x4d9a7f,null));};exports[_0x90e9('0x52')]=function(_0x38ddf6,_0x3008bc,_0x176307){var _0x226edf={};var _0x190f91={};var _0xf6b486;var _0x366505;return db[_0x90e9('0x49')][_0x90e9('0x51')]({'where':{'id':_0x38ddf6['params']['id']}})[_0x90e9('0x27')](handleEntityNotFound(_0x3008bc,null))[_0x90e9('0x27')](function(_0xe4f5c1){if(_0xe4f5c1){_0xf6b486=_0xe4f5c1;_0x190f91['model']=_[_0x90e9('0x32')](db[_0x90e9('0x4e')]['rawAttributes']);_0x190f91['query']=_[_0x90e9('0x32')](_0x38ddf6[_0x90e9('0x34')]);_0x190f91[_0x90e9('0x33')]=_[_0x90e9('0x36')](_0x190f91[_0x90e9('0x31')],_0x190f91['query']);_0x226edf[_0x90e9('0x35')]=_[_0x90e9('0x36')](_0x190f91[_0x90e9('0x31')],qs[_0x90e9('0x37')](_0x38ddf6[_0x90e9('0x34')][_0x90e9('0x37')]));_0x226edf['attributes']=_0x226edf['attributes'][_0x90e9('0x38')]?_0x226edf[_0x90e9('0x35')]:_0x190f91[_0x90e9('0x31')];_0x226edf['order']=qs[_0x90e9('0x3c')](_0x38ddf6[_0x90e9('0x34')][_0x90e9('0x3c')]);_0x226edf[_0x90e9('0x3d')]=qs[_0x90e9('0x33')](_[_0x90e9('0x3e')](_0x38ddf6[_0x90e9('0x34')],_0x190f91[_0x90e9('0x33')]));if(_0x38ddf6[_0x90e9('0x34')]['filter']){_0x226edf[_0x90e9('0x3d')]=_[_0x90e9('0x3f')](_0x226edf[_0x90e9('0x3d')],{'$or':_[_0x90e9('0x2e')](_0x226edf['attributes'],function(_0xffb17d){var _0x4b895c={};_0x4b895c[_0xffb17d]={'$like':'%'+_0x38ddf6[_0x90e9('0x34')]['filter']+'%'};return _0x4b895c;})});}_0x226edf=_[_0x90e9('0x3f')]({},_0x226edf,_0x38ddf6[_0x90e9('0x41')]);return _0xf6b486[_0x90e9('0x52')](_0x226edf);}})['then'](function(_0x18e4ed){if(_0x18e4ed){_0x366505=_0x18e4ed['length'];if(!_0x38ddf6[_0x90e9('0x34')][_0x90e9('0x39')]('nolimit')){_0x226edf['limit']=qs[_0x90e9('0x23')](_0x38ddf6[_0x90e9('0x34')][_0x90e9('0x23')]);_0x226edf['offset']=qs[_0x90e9('0x20')](_0x38ddf6[_0x90e9('0x34')][_0x90e9('0x20')]);}return _0xf6b486[_0x90e9('0x52')](_0x226edf);}})[_0x90e9('0x27')](function(_0x1ab998){if(_0x1ab998){return _0x1ab998?{'count':_0x366505,'rows':_0x1ab998}:null;}})[_0x90e9('0x27')](respondWithResult(_0x3008bc,null))[_0x90e9('0x45')](handleError(_0x3008bc,null));};
\ No newline at end of file
index 06f2ac7..5bd26aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22cf=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./intSalesforceConfiguration.attributes','define','SalesforceConfiguration','int_salesforce_configurations'];(function(_0x3f2a64,_0x2801de){var _0x4179ab=function(_0x322b2f){while(--_0x322b2f){_0x3f2a64['push'](_0x3f2a64['shift']());}};_0x4179ab(++_0x2801de);}(_0x22cf,0x8f));var _0xf22c=function(_0x34de65,_0x9cd2c){_0x34de65=_0x34de65-0x0;var _0x5d9ff7=_0x22cf[_0x34de65];return _0x5d9ff7;};'use strict';var _=require(_0xf22c('0x0'));var util=require(_0xf22c('0x1'));var logger=require(_0xf22c('0x2'))(_0xf22c('0x3'));var moment=require(_0xf22c('0x4'));var BPromise=require(_0xf22c('0x5'));var rp=require(_0xf22c('0x6'));var fs=require('fs');var path=require(_0xf22c('0x7'));var rimraf=require(_0xf22c('0x8'));var config=require('../../config/environment');var attributes=require(_0xf22c('0x9'));module['exports']=function(_0x4cfd79,_0x1ab24e){return _0x4cfd79[_0xf22c('0xa')](_0xf22c('0xb'),attributes,{'tableName':_0xf22c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0053=['rimraf','./intSalesforceConfiguration.attributes','define','SalesforceConfiguration','lodash','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x3dd42b,_0x461728){var _0x116f39=function(_0x22efc6){while(--_0x22efc6){_0x3dd42b['push'](_0x3dd42b['shift']());}};_0x116f39(++_0x461728);}(_0x0053,0xeb));var _0x3005=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0053[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3005('0x0'));var util=require(_0x3005('0x1'));var logger=require(_0x3005('0x2'))('api');var moment=require(_0x3005('0x3'));var BPromise=require(_0x3005('0x4'));var rp=require(_0x3005('0x5'));var fs=require('fs');var path=require(_0x3005('0x6'));var rimraf=require(_0x3005('0x7'));var config=require('../../config/environment');var attributes=require(_0x3005('0x8'));module['exports']=function(_0x3401d9,_0x4b0aaf){return _0x3401d9[_0x3005('0x9')](_0x3005('0xa'),attributes,{'tableName':'int_salesforce_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index e206810..81c63f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x37fc=['result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SalesforceConfiguration,\x20%s,\x20%s','request\x20sent','debug','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x87a931,_0x1fa3a1){var _0x377905=function(_0x1e96fd){while(--_0x1e96fd){_0x87a931['push'](_0x87a931['shift']());}};_0x377905(++_0x1fa3a1);}(_0x37fc,0xec));var _0xc37f=function(_0x49fe99,_0x48b719){_0x49fe99=_0x49fe99-0x0;var _0x140c9c=_0x37fc[_0x49fe99];return _0x140c9c;};'use strict';var _=require('lodash');var util=require(_0xc37f('0x0'));var moment=require(_0xc37f('0x1'));var BPromise=require(_0xc37f('0x2'));var rs=require(_0xc37f('0x3'));var fs=require('fs');var Redis=require(_0xc37f('0x4'));var db=require(_0xc37f('0x5'))['db'];var utils=require(_0xc37f('0x6'));var logger=require(_0xc37f('0x7'))(_0xc37f('0x8'));var config=require(_0xc37f('0x9'));var jayson=require(_0xc37f('0xa'));var client=jayson[_0xc37f('0xb')][_0xc37f('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x109b02,_0xf8e547,_0x5cd38b){return new BPromise(function(_0x255011,_0x5bd97b){return client[_0xc37f('0xd')](_0x109b02,_0x5cd38b)[_0xc37f('0xe')](function(_0x4dea50){logger[_0xc37f('0xf')](_0xc37f('0x10'),_0xf8e547,_0xc37f('0x11'));logger[_0xc37f('0x12')](_0xc37f('0x13'),_0xf8e547,_0xc37f('0x11'),JSON[_0xc37f('0x14')](_0x4dea50));if(_0x4dea50['error']){if(_0x4dea50[_0xc37f('0x15')][_0xc37f('0x16')]===0x1f4){logger[_0xc37f('0x15')](_0xc37f('0x10'),_0xf8e547,_0x4dea50[_0xc37f('0x15')][_0xc37f('0x17')]);return _0x5bd97b(_0x4dea50['error'][_0xc37f('0x17')]);}logger['error'](_0xc37f('0x10'),_0xf8e547,_0x4dea50[_0xc37f('0x15')]['message']);return _0x255011(_0x4dea50[_0xc37f('0x15')][_0xc37f('0x17')]);}else{logger['info'](_0xc37f('0x10'),_0xf8e547,_0xc37f('0x11'));_0x255011(_0x4dea50[_0xc37f('0x18')]['message']);}})[_0xc37f('0x19')](function(_0x4145a4){logger[_0xc37f('0x15')]('SalesforceConfiguration,\x20%s,\x20%s',_0xf8e547,_0x4145a4);_0x5bd97b(_0x4145a4);});});}
\ No newline at end of file
+var _0x3e62=['info','request\x20sent','SalesforceConfiguration,\x20%s,\x20%s,\x20%s','stringify','code','error','SalesforceConfiguration,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x1035c1,_0x2d8583){var _0x308d67=function(_0x58ddb6){while(--_0x58ddb6){_0x1035c1['push'](_0x1035c1['shift']());}};_0x308d67(++_0x2d8583);}(_0x3e62,0x78));var _0x23e6=function(_0x36b0b4,_0x3aee14){_0x36b0b4=_0x36b0b4-0x0;var _0x172121=_0x3e62[_0x36b0b4];return _0x172121;};'use strict';var _=require(_0x23e6('0x0'));var util=require(_0x23e6('0x1'));var moment=require(_0x23e6('0x2'));var BPromise=require(_0x23e6('0x3'));var rs=require(_0x23e6('0x4'));var fs=require('fs');var Redis=require(_0x23e6('0x5'));var db=require(_0x23e6('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x23e6('0x7'))(_0x23e6('0x8'));var config=require(_0x23e6('0x9'));var jayson=require(_0x23e6('0xa'));var client=jayson[_0x23e6('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x522418,_0x544d9f,_0x40d4cc){return new BPromise(function(_0x41cbd1,_0x3a7ba0){return client['request'](_0x522418,_0x40d4cc)['then'](function(_0x3f4853){logger[_0x23e6('0xc')]('SalesforceConfiguration,\x20%s,\x20%s',_0x544d9f,_0x23e6('0xd'));logger['debug'](_0x23e6('0xe'),_0x544d9f,_0x23e6('0xd'),JSON[_0x23e6('0xf')](_0x3f4853));if(_0x3f4853['error']){if(_0x3f4853['error'][_0x23e6('0x10')]===0x1f4){logger[_0x23e6('0x11')](_0x23e6('0x12'),_0x544d9f,_0x3f4853[_0x23e6('0x11')]['message']);return _0x3a7ba0(_0x3f4853[_0x23e6('0x11')]['message']);}logger[_0x23e6('0x11')](_0x23e6('0x12'),_0x544d9f,_0x3f4853[_0x23e6('0x11')][_0x23e6('0x13')]);return _0x41cbd1(_0x3f4853[_0x23e6('0x11')]['message']);}else{logger[_0x23e6('0xc')](_0x23e6('0x12'),_0x544d9f,_0x23e6('0xd'));_0x41cbd1(_0x3f4853[_0x23e6('0x14')][_0x23e6('0x13')]);}})[_0x23e6('0x15')](function(_0x28af82){logger[_0x23e6('0x11')]('SalesforceConfiguration,\x20%s,\x20%s',_0x544d9f,_0x28af82);_0x3a7ba0(_0x28af82);});});}
\ No newline at end of file
index 9632447..4daa9ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26a2=['../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','post','create','put','update','delete','multer','util','path','connect-timeout','express','Router','fs-extra'];(function(_0x27f4ca,_0x163cb1){var _0x6fb4b1=function(_0x51275e){while(--_0x51275e){_0x27f4ca['push'](_0x27f4ca['shift']());}};_0x6fb4b1(++_0x163cb1);}(_0x26a2,0x89));var _0x226a=function(_0x451766,_0x13ff6c){_0x451766=_0x451766-0x0;var _0x53e492=_0x26a2[_0x451766];return _0x53e492;};'use strict';var multer=require(_0x226a('0x0'));var util=require(_0x226a('0x1'));var path=require(_0x226a('0x2'));var timeout=require(_0x226a('0x3'));var express=require(_0x226a('0x4'));var router=express[_0x226a('0x5')]();var fs_extra=require(_0x226a('0x6'));var auth=require(_0x226a('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x226a('0x8'));var controller=require('./intSalesforceField.controller');router[_0x226a('0x9')]('/',auth[_0x226a('0xa')](),controller['index']);router['get'](_0x226a('0xb'),auth['isAuthenticated'](),controller[_0x226a('0xc')]);router[_0x226a('0xd')]('/',auth['isAuthenticated'](),controller[_0x226a('0xe')]);router[_0x226a('0xf')](_0x226a('0xb'),auth[_0x226a('0xa')](),controller[_0x226a('0x10')]);router[_0x226a('0x11')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x90a7=['exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','./intSalesforceField.controller','isAuthenticated','index','get','/:id','show','post','create','put','update','delete','destroy'];(function(_0x29c54e,_0xac883d){var _0x2be9d9=function(_0x19f1b7){while(--_0x19f1b7){_0x29c54e['push'](_0x29c54e['shift']());}};_0x2be9d9(++_0xac883d);}(_0x90a7,0x79));var _0x790a=function(_0x77ab6b,_0x561702){_0x77ab6b=_0x77ab6b-0x0;var _0x53ddb4=_0x90a7[_0x77ab6b];return _0x53ddb4;};'use strict';var multer=require(_0x790a('0x0'));var util=require(_0x790a('0x1'));var path=require(_0x790a('0x2'));var timeout=require('connect-timeout');var express=require(_0x790a('0x3'));var router=express['Router']();var fs_extra=require(_0x790a('0x4'));var auth=require(_0x790a('0x5'));var interaction=require(_0x790a('0x6'));var config=require('../../config/environment');var controller=require(_0x790a('0x7'));router['get']('/',auth[_0x790a('0x8')](),controller[_0x790a('0x9')]);router[_0x790a('0xa')](_0x790a('0xb'),auth[_0x790a('0x8')](),controller[_0x790a('0xc')]);router[_0x790a('0xd')]('/',auth[_0x790a('0x8')](),controller[_0x790a('0xe')]);router[_0x790a('0xf')](_0x790a('0xb'),auth['isAuthenticated'](),controller[_0x790a('0x10')]);router[_0x790a('0x11')](_0x790a('0xb'),auth[_0x790a('0x8')](),controller[_0x790a('0x12')]);module[_0x790a('0x13')]=router;
\ No newline at end of file
index 5886550..1c8108a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x618f=['variable','customVariable','keyValue','STRING','sequelize','exports','string'];(function(_0x5771af,_0x25ac59){var _0x3de7e9=function(_0x5c337a){while(--_0x5c337a){_0x5771af['push'](_0x5771af['shift']());}};_0x3de7e9(++_0x25ac59);}(_0x618f,0x1af));var _0xf618=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x618f[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xf618('0x0'));module[_0xf618('0x1')]={'type':{'type':Sequelize['ENUM'](_0xf618('0x2'),_0xf618('0x3'),_0xf618('0x4'),_0xf618('0x5'),'picklist'),'defaultValue':_0xf618('0x2')},'content':{'type':Sequelize[_0xf618('0x6')]},'key':{'type':Sequelize[_0xf618('0x6')]},'keyType':{'type':Sequelize['ENUM']('string','variable',_0xf618('0x4'))},'keyContent':{'type':Sequelize[_0xf618('0x6')]},'idField':{'type':Sequelize['STRING']},'variableName':{'type':Sequelize[_0xf618('0x6')]}};
\ No newline at end of file
+var _0x21ab=['ENUM','exports','variable','customVariable','picklist','string','STRING'];(function(_0x164a42,_0x28d637){var _0x585d7a=function(_0x4f5c91){while(--_0x4f5c91){_0x164a42['push'](_0x164a42['shift']());}};_0x585d7a(++_0x28d637);}(_0x21ab,0x190));var _0xb21a=function(_0x486eff,_0x5cb3b0){_0x486eff=_0x486eff-0x0;var _0x95293b=_0x21ab[_0x486eff];return _0x95293b;};'use strict';var Sequelize=require('sequelize');module[_0xb21a('0x0')]={'type':{'type':Sequelize['ENUM']('string',_0xb21a('0x1'),_0xb21a('0x2'),'keyValue',_0xb21a('0x3')),'defaultValue':_0xb21a('0x4')},'content':{'type':Sequelize[_0xb21a('0x5')]},'key':{'type':Sequelize[_0xb21a('0x5')]},'keyType':{'type':Sequelize[_0xb21a('0x6')](_0xb21a('0x4'),_0xb21a('0x1'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xb21a('0x5')]},'variableName':{'type':Sequelize[_0xb21a('0x5')]}};
\ No newline at end of file
index 9bbbca9..c2d44bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb646=['fields','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','rawAttributes','length','options','find','create','body','zip-dir','moment','bluebird','mustache','util','path','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/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','error','stack','name','send','index','map','SalesforceField','fieldName','type','model','query','keys','filters','intersection','attributes'];(function(_0x2e9ea3,_0x11819e){var _0x2d72d0=function(_0x3db72b){while(--_0x3db72b){_0x2e9ea3['push'](_0x2e9ea3['shift']());}};_0x2d72d0(++_0x11819e);}(_0xb646,0x14a));var _0x6b64=function(_0x19d873,_0x1b5249){_0x19d873=_0x19d873-0x0;var _0x26be90=_0xb646[_0x19d873];return _0x26be90;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x6b64('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x6b64('0x1'));var BPromise=require(_0x6b64('0x2'));var Mustache=require(_0x6b64('0x3'));var util=require(_0x6b64('0x4'));var path=require(_0x6b64('0x5'));var sox=require('sox');var csv=require(_0x6b64('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x6b64('0x7'));var _=require(_0x6b64('0x8'));var squel=require(_0x6b64('0x9'));var crypto=require(_0x6b64('0xa'));var jsforce=require(_0x6b64('0xb'));var deskjs=require(_0x6b64('0xc'));var toCsv=require('to-csv');var querystring=require(_0x6b64('0xd'));var Papa=require(_0x6b64('0xe'));var Redis=require(_0x6b64('0xf'));var authService=require(_0x6b64('0x10'));var qs=require(_0x6b64('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6b64('0x12'));var logger=require(_0x6b64('0x13'))(_0x6b64('0x14'));var utils=require(_0x6b64('0x15'));var config=require(_0x6b64('0x16'));var licenseUtil=require(_0x6b64('0x17'));var db=require(_0x6b64('0x18'))['db'];function respondWithStatusCode(_0x203269,_0x223780){_0x223780=_0x223780||0xcc;return function(_0x4e77c8){if(_0x4e77c8){return _0x203269[_0x6b64('0x19')](_0x223780);}return _0x203269[_0x6b64('0x1a')](_0x223780)[_0x6b64('0x1b')]();};}function respondWithResult(_0x239f2b,_0x221d92){_0x221d92=_0x221d92||0xc8;return function(_0x37e5d8){if(_0x37e5d8){return _0x239f2b[_0x6b64('0x1a')](_0x221d92)[_0x6b64('0x1c')](_0x37e5d8);}};}function respondWithFilteredResult(_0x313ebf,_0x139216){return function(_0x148a01){if(_0x148a01){var _0x449d09=typeof _0x139216[_0x6b64('0x1d')]===_0x6b64('0x1e')&&typeof _0x139216[_0x6b64('0x1f')]===_0x6b64('0x1e');var _0x57b27b=_0x148a01[_0x6b64('0x20')];var _0x38cf54=_0x449d09?0x0:_0x139216[_0x6b64('0x1d')];var _0x56590e=_0x449d09?_0x148a01[_0x6b64('0x20')]:_0x139216[_0x6b64('0x1d')]+_0x139216[_0x6b64('0x1f')];var _0x4c4b1f;if(_0x56590e>=_0x57b27b){_0x56590e=_0x57b27b;_0x4c4b1f=0xc8;}else{_0x4c4b1f=0xce;}_0x313ebf[_0x6b64('0x1a')](_0x4c4b1f);return _0x313ebf[_0x6b64('0x21')](_0x6b64('0x22'),_0x38cf54+'-'+_0x56590e+'/'+_0x57b27b)[_0x6b64('0x1c')](_0x148a01);}return null;};}function patchUpdates(_0x17c015){return function(_0x21d180){try{jsonpatch['apply'](_0x21d180,_0x17c015,!![]);}catch(_0x4762a3){return BPromise[_0x6b64('0x23')](_0x4762a3);}return _0x21d180[_0x6b64('0x24')]();};}function saveUpdates(_0x7fcfd5,_0x31bc74){return function(_0x1f5140){if(_0x1f5140){return _0x1f5140[_0x6b64('0x25')](_0x7fcfd5)[_0x6b64('0x26')](function(_0x365ebf){return _0x365ebf;});}return null;};}function removeEntity(_0x2250fa,_0x7b681f){return function(_0x3bdc20){if(_0x3bdc20){return _0x3bdc20[_0x6b64('0x27')]()[_0x6b64('0x26')](function(){_0x2250fa[_0x6b64('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x29d54c,_0x229802){return function(_0x1c7b60){if(!_0x1c7b60){_0x29d54c[_0x6b64('0x19')](0x194);}return _0x1c7b60;};}function handleError(_0x5aeb6f,_0x5aef41){_0x5aef41=_0x5aef41||0x1f4;return function(_0x145e61){logger[_0x6b64('0x28')](_0x145e61[_0x6b64('0x29')]);if(_0x145e61[_0x6b64('0x2a')]){delete _0x145e61['name'];}_0x5aeb6f[_0x6b64('0x1a')](_0x5aef41)[_0x6b64('0x2b')](_0x145e61);};}exports[_0x6b64('0x2c')]=function(_0xd3a260,_0x4e793a){var _0x256a6a={},_0x311879={},_0xa67698={'count':0x0,'rows':[]};var _0x42272a=_[_0x6b64('0x2d')](db[_0x6b64('0x2e')]['rawAttributes'],function(_0x31e3c0){return{'name':_0x31e3c0[_0x6b64('0x2f')],'type':_0x31e3c0[_0x6b64('0x30')]['key']};});_0x311879[_0x6b64('0x31')]=_[_0x6b64('0x2d')](_0x42272a,_0x6b64('0x2a'));_0x311879[_0x6b64('0x32')]=_[_0x6b64('0x33')](_0xd3a260[_0x6b64('0x32')]);_0x311879[_0x6b64('0x34')]=_[_0x6b64('0x35')](_0x311879[_0x6b64('0x31')],_0x311879[_0x6b64('0x32')]);_0x256a6a[_0x6b64('0x36')]=_[_0x6b64('0x35')](_0x311879[_0x6b64('0x31')],qs[_0x6b64('0x37')](_0xd3a260[_0x6b64('0x32')][_0x6b64('0x37')]));_0x256a6a[_0x6b64('0x36')]=_0x256a6a['attributes']['length']?_0x256a6a['attributes']:_0x311879[_0x6b64('0x31')];if(!_0xd3a260[_0x6b64('0x32')][_0x6b64('0x38')](_0x6b64('0x39'))){_0x256a6a[_0x6b64('0x1f')]=qs['limit'](_0xd3a260[_0x6b64('0x32')][_0x6b64('0x1f')]);_0x256a6a['offset']=qs['offset'](_0xd3a260['query'][_0x6b64('0x1d')]);}_0x256a6a[_0x6b64('0x3a')]=qs[_0x6b64('0x3b')](_0xd3a260[_0x6b64('0x32')][_0x6b64('0x3b')]);_0x256a6a[_0x6b64('0x3c')]=qs[_0x6b64('0x34')](_['pick'](_0xd3a260[_0x6b64('0x32')],_0x311879[_0x6b64('0x34')]),_0x42272a);if(_0xd3a260[_0x6b64('0x32')][_0x6b64('0x3d')]){_0x256a6a[_0x6b64('0x3c')]=_['merge'](_0x256a6a[_0x6b64('0x3c')],{'$or':_[_0x6b64('0x2d')](_0x42272a,function(_0x579e95){if(_0x579e95[_0x6b64('0x30')]!==_0x6b64('0x3e')){var _0x518494={};_0x518494[_0x579e95[_0x6b64('0x2a')]]={'$like':'%'+_0xd3a260[_0x6b64('0x32')][_0x6b64('0x3d')]+'%'};return _0x518494;}})});}_0x256a6a=_[_0x6b64('0x3f')]({},_0x256a6a,_0xd3a260['options']);var _0x46b356={'where':_0x256a6a[_0x6b64('0x3c')]};return db[_0x6b64('0x2e')][_0x6b64('0x20')](_0x46b356)[_0x6b64('0x26')](function(_0x9a34f6){_0xa67698[_0x6b64('0x20')]=_0x9a34f6;if(_0xd3a260['query'][_0x6b64('0x40')]){_0x256a6a[_0x6b64('0x41')]=[{'all':!![]}];}return db[_0x6b64('0x2e')][_0x6b64('0x42')](_0x256a6a);})[_0x6b64('0x26')](function(_0x59f87e){_0xa67698[_0x6b64('0x43')]=_0x59f87e;return _0xa67698;})[_0x6b64('0x26')](respondWithFilteredResult(_0x4e793a,_0x256a6a))[_0x6b64('0x44')](handleError(_0x4e793a,null));};exports[_0x6b64('0x45')]=function(_0x2dd25d,_0xfc61e7){var _0x525b6e={'raw':!![],'where':{'id':_0x2dd25d[_0x6b64('0x46')]['id']}},_0x4cbd75={};_0x4cbd75['model']=_[_0x6b64('0x33')](db['SalesforceField'][_0x6b64('0x47')]);_0x4cbd75[_0x6b64('0x32')]=_[_0x6b64('0x33')](_0x2dd25d[_0x6b64('0x32')]);_0x4cbd75[_0x6b64('0x34')]=_[_0x6b64('0x35')](_0x4cbd75[_0x6b64('0x31')],_0x4cbd75[_0x6b64('0x32')]);_0x525b6e[_0x6b64('0x36')]=_[_0x6b64('0x35')](_0x4cbd75[_0x6b64('0x31')],qs[_0x6b64('0x37')](_0x2dd25d[_0x6b64('0x32')][_0x6b64('0x37')]));_0x525b6e[_0x6b64('0x36')]=_0x525b6e[_0x6b64('0x36')][_0x6b64('0x48')]?_0x525b6e[_0x6b64('0x36')]:_0x4cbd75[_0x6b64('0x31')];if(_0x2dd25d[_0x6b64('0x32')][_0x6b64('0x40')]){_0x525b6e[_0x6b64('0x41')]=[{'all':!![]}];}_0x525b6e=_[_0x6b64('0x3f')]({},_0x525b6e,_0x2dd25d[_0x6b64('0x49')]);return db['SalesforceField'][_0x6b64('0x4a')](_0x525b6e)[_0x6b64('0x26')](handleEntityNotFound(_0xfc61e7,null))[_0x6b64('0x26')](respondWithResult(_0xfc61e7,null))['catch'](handleError(_0xfc61e7,null));};exports[_0x6b64('0x4b')]=function(_0x36e602,_0xa5d4fe){return db[_0x6b64('0x2e')][_0x6b64('0x4b')](_0x36e602['body'],{})[_0x6b64('0x26')](respondWithResult(_0xa5d4fe,0xc9))['catch'](handleError(_0xa5d4fe,null));};exports[_0x6b64('0x25')]=function(_0x8ed931,_0x4d652c){if(_0x8ed931[_0x6b64('0x4c')]['id']){delete _0x8ed931[_0x6b64('0x4c')]['id'];}return db[_0x6b64('0x2e')][_0x6b64('0x4a')]({'where':{'id':_0x8ed931['params']['id']}})[_0x6b64('0x26')](handleEntityNotFound(_0x4d652c,null))['then'](saveUpdates(_0x8ed931[_0x6b64('0x4c')],null))['then'](respondWithResult(_0x4d652c,null))[_0x6b64('0x44')](handleError(_0x4d652c,null));};exports['destroy']=function(_0x1c7f63,_0x3fbbbd){return db['SalesforceField']['find']({'where':{'id':_0x1c7f63[_0x6b64('0x46')]['id']}})[_0x6b64('0x26')](handleEntityNotFound(_0x3fbbbd,null))['then'](removeEntity(_0x3fbbbd,null))[_0x6b64('0x44')](handleError(_0x3fbbbd,null));};
\ No newline at end of file
+var _0x2efb=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','SalesforceField','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','options','includeAll','catch','show','params','keys','include','find','create','body','eml-format','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','desk.js','to-csv','querystring','ioredis','../../components/parsers/advancedSearch'];(function(_0x4ea955,_0x1eda76){var _0x558561=function(_0x5b20f4){while(--_0x5b20f4){_0x4ea955['push'](_0x4ea955['shift']());}};_0x558561(++_0x1eda76);}(_0x2efb,0x157));var _0xb2ef=function(_0x266d63,_0x1c1e64){_0x266d63=_0x266d63-0x0;var _0x1bf903=_0x2efb[_0x266d63];return _0x1bf903;};'use strict';var emlformat=require(_0xb2ef('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xb2ef('0x1'));var rp=require(_0xb2ef('0x2'));var moment=require(_0xb2ef('0x3'));var BPromise=require(_0xb2ef('0x4'));var Mustache=require('mustache');var util=require(_0xb2ef('0x5'));var path=require(_0xb2ef('0x6'));var sox=require(_0xb2ef('0x7'));var csv=require('to-csv');var ejs=require(_0xb2ef('0x8'));var fs=require('fs');var fs_extra=require(_0xb2ef('0x9'));var _=require(_0xb2ef('0xa'));var squel=require(_0xb2ef('0xb'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xb2ef('0xc'));var toCsv=require(_0xb2ef('0xd'));var querystring=require(_0xb2ef('0xe'));var Papa=require('papaparse');var Redis=require(_0xb2ef('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xb2ef('0x10'));var hardwareService=require(_0xb2ef('0x11'));var logger=require(_0xb2ef('0x12'))(_0xb2ef('0x13'));var utils=require(_0xb2ef('0x14'));var config=require(_0xb2ef('0x15'));var licenseUtil=require(_0xb2ef('0x16'));var db=require(_0xb2ef('0x17'))['db'];function respondWithStatusCode(_0x368123,_0x7fae75){_0x7fae75=_0x7fae75||0xcc;return function(_0x5e81ef){if(_0x5e81ef){return _0x368123[_0xb2ef('0x18')](_0x7fae75);}return _0x368123[_0xb2ef('0x19')](_0x7fae75)[_0xb2ef('0x1a')]();};}function respondWithResult(_0x11499f,_0x43fdc){_0x43fdc=_0x43fdc||0xc8;return function(_0x496b5f){if(_0x496b5f){return _0x11499f[_0xb2ef('0x19')](_0x43fdc)['json'](_0x496b5f);}};}function respondWithFilteredResult(_0x390bf6,_0x592245){return function(_0x5610fc){if(_0x5610fc){var _0x536ac2=typeof _0x592245[_0xb2ef('0x1b')]===_0xb2ef('0x1c')&&typeof _0x592245[_0xb2ef('0x1d')]===_0xb2ef('0x1c');var _0x476348=_0x5610fc[_0xb2ef('0x1e')];var _0xec8db8=_0x536ac2?0x0:_0x592245[_0xb2ef('0x1b')];var _0x5088bc=_0x536ac2?_0x5610fc[_0xb2ef('0x1e')]:_0x592245['offset']+_0x592245[_0xb2ef('0x1d')];var _0x472772;if(_0x5088bc>=_0x476348){_0x5088bc=_0x476348;_0x472772=0xc8;}else{_0x472772=0xce;}_0x390bf6[_0xb2ef('0x19')](_0x472772);return _0x390bf6['set'](_0xb2ef('0x1f'),_0xec8db8+'-'+_0x5088bc+'/'+_0x476348)['json'](_0x5610fc);}return null;};}function patchUpdates(_0x5869fb){return function(_0x4ffe9a){try{jsonpatch[_0xb2ef('0x20')](_0x4ffe9a,_0x5869fb,!![]);}catch(_0x28ab03){return BPromise[_0xb2ef('0x21')](_0x28ab03);}return _0x4ffe9a[_0xb2ef('0x22')]();};}function saveUpdates(_0x5713c6,_0x2b2fe9){return function(_0x2cfe86){if(_0x2cfe86){return _0x2cfe86[_0xb2ef('0x23')](_0x5713c6)[_0xb2ef('0x24')](function(_0x9e5b4b){return _0x9e5b4b;});}return null;};}function removeEntity(_0x88ea2c,_0x537bc7){return function(_0x3945c2){if(_0x3945c2){return _0x3945c2[_0xb2ef('0x25')]()['then'](function(){_0x88ea2c[_0xb2ef('0x19')](0xcc)[_0xb2ef('0x1a')]();});}};}function handleEntityNotFound(_0x29c3c4,_0x16f3a7){return function(_0x195ee4){if(!_0x195ee4){_0x29c3c4[_0xb2ef('0x18')](0x194);}return _0x195ee4;};}function handleError(_0x2d3f6f,_0x249969){_0x249969=_0x249969||0x1f4;return function(_0x2fb336){logger[_0xb2ef('0x26')](_0x2fb336[_0xb2ef('0x27')]);if(_0x2fb336[_0xb2ef('0x28')]){delete _0x2fb336[_0xb2ef('0x28')];}_0x2d3f6f['status'](_0x249969)[_0xb2ef('0x29')](_0x2fb336);};}exports[_0xb2ef('0x2a')]=function(_0x4e0e97,_0x61c35d){var _0x416926={},_0x56f7cc={},_0x140e57={'count':0x0,'rows':[]};var _0x4aec3b=_[_0xb2ef('0x2b')](db[_0xb2ef('0x2c')]['rawAttributes'],function(_0x2131eb){return{'name':_0x2131eb[_0xb2ef('0x2d')],'type':_0x2131eb[_0xb2ef('0x2e')][_0xb2ef('0x2f')]};});_0x56f7cc[_0xb2ef('0x30')]=_['map'](_0x4aec3b,_0xb2ef('0x28'));_0x56f7cc[_0xb2ef('0x31')]=_['keys'](_0x4e0e97[_0xb2ef('0x31')]);_0x56f7cc[_0xb2ef('0x32')]=_[_0xb2ef('0x33')](_0x56f7cc[_0xb2ef('0x30')],_0x56f7cc['query']);_0x416926['attributes']=_['intersection'](_0x56f7cc[_0xb2ef('0x30')],qs[_0xb2ef('0x34')](_0x4e0e97[_0xb2ef('0x31')][_0xb2ef('0x34')]));_0x416926[_0xb2ef('0x35')]=_0x416926[_0xb2ef('0x35')][_0xb2ef('0x36')]?_0x416926['attributes']:_0x56f7cc[_0xb2ef('0x30')];if(!_0x4e0e97['query'][_0xb2ef('0x37')](_0xb2ef('0x38'))){_0x416926[_0xb2ef('0x1d')]=qs['limit'](_0x4e0e97[_0xb2ef('0x31')][_0xb2ef('0x1d')]);_0x416926[_0xb2ef('0x1b')]=qs[_0xb2ef('0x1b')](_0x4e0e97['query'][_0xb2ef('0x1b')]);}_0x416926[_0xb2ef('0x39')]=qs['sort'](_0x4e0e97[_0xb2ef('0x31')][_0xb2ef('0x3a')]);_0x416926[_0xb2ef('0x3b')]=qs['filters'](_['pick'](_0x4e0e97[_0xb2ef('0x31')],_0x56f7cc[_0xb2ef('0x32')]),_0x4aec3b);if(_0x4e0e97['query'][_0xb2ef('0x3c')]){_0x416926[_0xb2ef('0x3b')]=_[_0xb2ef('0x3d')](_0x416926[_0xb2ef('0x3b')],{'$or':_['map'](_0x4aec3b,function(_0x3d4bc6){if(_0x3d4bc6[_0xb2ef('0x2e')]!=='VIRTUAL'){var _0x4b375b={};_0x4b375b[_0x3d4bc6[_0xb2ef('0x28')]]={'$like':'%'+_0x4e0e97[_0xb2ef('0x31')][_0xb2ef('0x3c')]+'%'};return _0x4b375b;}})});}_0x416926=_[_0xb2ef('0x3d')]({},_0x416926,_0x4e0e97[_0xb2ef('0x3e')]);var _0x81d8b2={'where':_0x416926[_0xb2ef('0x3b')]};return db[_0xb2ef('0x2c')][_0xb2ef('0x1e')](_0x81d8b2)[_0xb2ef('0x24')](function(_0x440ac9){_0x140e57[_0xb2ef('0x1e')]=_0x440ac9;if(_0x4e0e97[_0xb2ef('0x31')][_0xb2ef('0x3f')]){_0x416926['include']=[{'all':!![]}];}return db[_0xb2ef('0x2c')]['findAll'](_0x416926);})['then'](function(_0x5c1a39){_0x140e57['rows']=_0x5c1a39;return _0x140e57;})['then'](respondWithFilteredResult(_0x61c35d,_0x416926))[_0xb2ef('0x40')](handleError(_0x61c35d,null));};exports[_0xb2ef('0x41')]=function(_0x35f87d,_0x23e2a8){var _0x274e7={'raw':!![],'where':{'id':_0x35f87d[_0xb2ef('0x42')]['id']}},_0x3f160b={};_0x3f160b[_0xb2ef('0x30')]=_[_0xb2ef('0x43')](db['SalesforceField']['rawAttributes']);_0x3f160b[_0xb2ef('0x31')]=_[_0xb2ef('0x43')](_0x35f87d[_0xb2ef('0x31')]);_0x3f160b['filters']=_['intersection'](_0x3f160b[_0xb2ef('0x30')],_0x3f160b[_0xb2ef('0x31')]);_0x274e7[_0xb2ef('0x35')]=_[_0xb2ef('0x33')](_0x3f160b[_0xb2ef('0x30')],qs[_0xb2ef('0x34')](_0x35f87d[_0xb2ef('0x31')][_0xb2ef('0x34')]));_0x274e7[_0xb2ef('0x35')]=_0x274e7[_0xb2ef('0x35')]['length']?_0x274e7['attributes']:_0x3f160b[_0xb2ef('0x30')];if(_0x35f87d[_0xb2ef('0x31')]['includeAll']){_0x274e7[_0xb2ef('0x44')]=[{'all':!![]}];}_0x274e7=_['merge']({},_0x274e7,_0x35f87d[_0xb2ef('0x3e')]);return db[_0xb2ef('0x2c')][_0xb2ef('0x45')](_0x274e7)['then'](handleEntityNotFound(_0x23e2a8,null))['then'](respondWithResult(_0x23e2a8,null))[_0xb2ef('0x40')](handleError(_0x23e2a8,null));};exports[_0xb2ef('0x46')]=function(_0x37d49d,_0x236f39){return db[_0xb2ef('0x2c')][_0xb2ef('0x46')](_0x37d49d[_0xb2ef('0x47')],{})[_0xb2ef('0x24')](respondWithResult(_0x236f39,0xc9))['catch'](handleError(_0x236f39,null));};exports[_0xb2ef('0x23')]=function(_0x31f2e2,_0x387806){if(_0x31f2e2[_0xb2ef('0x47')]['id']){delete _0x31f2e2[_0xb2ef('0x47')]['id'];}return db[_0xb2ef('0x2c')][_0xb2ef('0x45')]({'where':{'id':_0x31f2e2[_0xb2ef('0x42')]['id']}})[_0xb2ef('0x24')](handleEntityNotFound(_0x387806,null))[_0xb2ef('0x24')](saveUpdates(_0x31f2e2[_0xb2ef('0x47')],null))[_0xb2ef('0x24')](respondWithResult(_0x387806,null))[_0xb2ef('0x40')](handleError(_0x387806,null));};exports[_0xb2ef('0x25')]=function(_0x3e4d6f,_0x5d9a73){return db[_0xb2ef('0x2c')][_0xb2ef('0x45')]({'where':{'id':_0x3e4d6f['params']['id']}})[_0xb2ef('0x24')](handleEntityNotFound(_0x5d9a73,null))[_0xb2ef('0x24')](removeEntity(_0x5d9a73,null))[_0xb2ef('0x40')](handleError(_0x5d9a73,null));};
\ No newline at end of file
index 1bc2878..97ce7ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8ff=['../../config/logger','moment','request-promise','path','rimraf','../../config/environment','SalesforceField','salesforce_unique_index','idField','FieldId'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xb8ff,0x64));var _0xfb8f=function(_0x3cba8e,_0x2377a8){_0x3cba8e=_0x3cba8e-0x0;var _0x25e9cd=_0xb8ff[_0x3cba8e];return _0x25e9cd;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xfb8f('0x0'))('api');var moment=require(_0xfb8f('0x1'));var BPromise=require('bluebird');var rp=require(_0xfb8f('0x2'));var fs=require('fs');var path=require(_0xfb8f('0x3'));var rimraf=require(_0xfb8f('0x4'));var config=require(_0xfb8f('0x5'));var attributes=require('./intSalesforceField.attributes');module['exports']=function(_0x52b068,_0x348b08){return _0x52b068['define'](_0xfb8f('0x6'),attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':_0xfb8f('0x7'),'fields':[_0xfb8f('0x8'),_0xfb8f('0x9')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xa412=['path','rimraf','./intSalesforceField.attributes','define','SalesforceField','salesforce_unique_index','idField','lodash','util','api','moment','bluebird'];(function(_0x1b42ef,_0x56dc8b){var _0x573086=function(_0x31a09c){while(--_0x31a09c){_0x1b42ef['push'](_0x1b42ef['shift']());}};_0x573086(++_0x56dc8b);}(_0xa412,0x103));var _0x2a41=function(_0x507cd8,_0x45c1b1){_0x507cd8=_0x507cd8-0x0;var _0x43cc87=_0xa412[_0x507cd8];return _0x43cc87;};'use strict';var _=require(_0x2a41('0x0'));var util=require(_0x2a41('0x1'));var logger=require('../../config/logger')(_0x2a41('0x2'));var moment=require(_0x2a41('0x3'));var BPromise=require(_0x2a41('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2a41('0x5'));var rimraf=require(_0x2a41('0x6'));var config=require('../../config/environment');var attributes=require(_0x2a41('0x7'));module['exports']=function(_0x214c48,_0x47d6cb){return _0x214c48[_0x2a41('0x8')](_0x2a41('0x9'),attributes,{'tableName':'int_salesforce_fields','paranoid':![],'indexes':[{'name':_0x2a41('0xa'),'fields':[_0x2a41('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 54fcaee..39891ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3ca1=['result','catch','lodash','moment','bluebird','ioredis','jayson/promise','client','http','request','then','info','SalesforceField,\x20%s,\x20%s','request\x20sent','SalesforceField,\x20%s,\x20%s,\x20%s','error','code','message'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3ca1,0x134));var _0x13ca=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3ca1[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x13ca('0x0'));var util=require('util');var moment=require(_0x13ca('0x1'));var BPromise=require(_0x13ca('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x13ca('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x13ca('0x4'));var client=jayson[_0x13ca('0x5')][_0x13ca('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x3e68f0,_0x2bb677,_0x2c09d4){return new BPromise(function(_0x2db7bf,_0x1c19de){return client[_0x13ca('0x7')](_0x3e68f0,_0x2c09d4)[_0x13ca('0x8')](function(_0x32b7a2){logger[_0x13ca('0x9')](_0x13ca('0xa'),_0x2bb677,_0x13ca('0xb'));logger['debug'](_0x13ca('0xc'),_0x2bb677,_0x13ca('0xb'),JSON['stringify'](_0x32b7a2));if(_0x32b7a2['error']){if(_0x32b7a2[_0x13ca('0xd')][_0x13ca('0xe')]===0x1f4){logger[_0x13ca('0xd')](_0x13ca('0xa'),_0x2bb677,_0x32b7a2['error']['message']);return _0x1c19de(_0x32b7a2[_0x13ca('0xd')][_0x13ca('0xf')]);}logger['error']('SalesforceField,\x20%s,\x20%s',_0x2bb677,_0x32b7a2[_0x13ca('0xd')]['message']);return _0x2db7bf(_0x32b7a2[_0x13ca('0xd')][_0x13ca('0xf')]);}else{logger[_0x13ca('0x9')](_0x13ca('0xa'),_0x2bb677,'request\x20sent');_0x2db7bf(_0x32b7a2[_0x13ca('0x10')][_0x13ca('0xf')]);}})[_0x13ca('0x11')](function(_0x1f8a62){logger[_0x13ca('0xd')](_0x13ca('0xa'),_0x2bb677,_0x1f8a62);_0x1c19de(_0x1f8a62);});});}
\ No newline at end of file
+var _0x2084=['http','request','then','info','request\x20sent','debug','SalesforceField,\x20%s,\x20%s,\x20%s','stringify','error','code','SalesforceField,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x171adc,_0x471b60){var _0x11c4af=function(_0x33fee1){while(--_0x33fee1){_0x171adc['push'](_0x171adc['shift']());}};_0x11c4af(++_0x471b60);}(_0x2084,0x17d));var _0x4208=function(_0x1e2aaa,_0x4e9612){_0x1e2aaa=_0x1e2aaa-0x0;var _0xf1432a=_0x2084[_0x1e2aaa];return _0xf1432a;};'use strict';var _=require(_0x4208('0x0'));var util=require(_0x4208('0x1'));var moment=require(_0x4208('0x2'));var BPromise=require(_0x4208('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x4208('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x4208('0x5'))(_0x4208('0x6'));var config=require(_0x4208('0x7'));var jayson=require(_0x4208('0x8'));var client=jayson[_0x4208('0x9')][_0x4208('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2e649f,_0x20c4fe,_0xa359a4){return new BPromise(function(_0x380a49,_0x589185){return client[_0x4208('0xb')](_0x2e649f,_0xa359a4)[_0x4208('0xc')](function(_0xbc95a1){logger[_0x4208('0xd')]('SalesforceField,\x20%s,\x20%s',_0x20c4fe,_0x4208('0xe'));logger[_0x4208('0xf')](_0x4208('0x10'),_0x20c4fe,_0x4208('0xe'),JSON[_0x4208('0x11')](_0xbc95a1));if(_0xbc95a1[_0x4208('0x12')]){if(_0xbc95a1[_0x4208('0x12')][_0x4208('0x13')]===0x1f4){logger[_0x4208('0x12')](_0x4208('0x14'),_0x20c4fe,_0xbc95a1['error'][_0x4208('0x15')]);return _0x589185(_0xbc95a1['error'][_0x4208('0x15')]);}logger['error'](_0x4208('0x14'),_0x20c4fe,_0xbc95a1['error']['message']);return _0x380a49(_0xbc95a1[_0x4208('0x12')][_0x4208('0x15')]);}else{logger[_0x4208('0xd')]('SalesforceField,\x20%s,\x20%s',_0x20c4fe,'request\x20sent');_0x380a49(_0xbc95a1['result'][_0x4208('0x15')]);}})[_0x4208('0x16')](function(_0x17adbc){logger[_0x4208('0x12')](_0x4208('0x14'),_0x20c4fe,_0x17adbc);_0x589185(_0x17adbc);});});}
\ No newline at end of file
index 0fbc4a9..5a8f375 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b84=['create','post','addConfiguration','put','update','/:id','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowAccount.controller','get','isAuthenticated','index','getConfigurations','/:id/fields','getFields'];(function(_0x3fb92e,_0x885b36){var _0x51ec88=function(_0x3b695d){while(--_0x3b695d){_0x3fb92e['push'](_0x3fb92e['shift']());}};_0x51ec88(++_0x885b36);}(_0x2b84,0x105));var _0x42b8=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0x2b84[_0x2a6809];return _0x11c371;};'use strict';var multer=require(_0x42b8('0x0'));var util=require('util');var path=require(_0x42b8('0x1'));var timeout=require(_0x42b8('0x2'));var express=require(_0x42b8('0x3'));var router=express[_0x42b8('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x42b8('0x5'));var interaction=require(_0x42b8('0x6'));var config=require(_0x42b8('0x7'));var controller=require(_0x42b8('0x8'));router[_0x42b8('0x9')]('/',auth[_0x42b8('0xa')](),controller[_0x42b8('0xb')]);router[_0x42b8('0x9')]('/:id',auth[_0x42b8('0xa')](),controller['show']);router[_0x42b8('0x9')]('/:id/configurations',auth['isAuthenticated'](),controller[_0x42b8('0xc')]);router[_0x42b8('0x9')](_0x42b8('0xd'),auth[_0x42b8('0xa')](),controller[_0x42b8('0xe')]);router['post']('/',auth[_0x42b8('0xa')](),controller[_0x42b8('0xf')]);router[_0x42b8('0x10')]('/:id/configurations',auth[_0x42b8('0xa')](),controller[_0x42b8('0x11')]);router[_0x42b8('0x12')]('/:id',auth[_0x42b8('0xa')](),controller[_0x42b8('0x13')]);router['delete'](_0x42b8('0x14'),auth[_0x42b8('0xa')](),controller[_0x42b8('0x15')]);module[_0x42b8('0x16')]=router;
\ No newline at end of file
+var _0x71a6=['multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intServicenowAccount.controller','get','isAuthenticated','index','/:id','show','/:id/configurations','getConfigurations','getFields','post','addConfiguration','put','delete','exports'];(function(_0xac327d,_0x27a843){var _0x4703be=function(_0x6bf9e1){while(--_0x6bf9e1){_0xac327d['push'](_0xac327d['shift']());}};_0x4703be(++_0x27a843);}(_0x71a6,0xa8));var _0x671a=function(_0x13639d,_0x3c996b){_0x13639d=_0x13639d-0x0;var _0x52ef14=_0x71a6[_0x13639d];return _0x52ef14;};'use strict';var multer=require(_0x671a('0x0'));var util=require(_0x671a('0x1'));var path=require(_0x671a('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x671a('0x3')]();var fs_extra=require(_0x671a('0x4'));var auth=require(_0x671a('0x5'));var interaction=require(_0x671a('0x6'));var config=require('../../config/environment');var controller=require(_0x671a('0x7'));router[_0x671a('0x8')]('/',auth[_0x671a('0x9')](),controller[_0x671a('0xa')]);router[_0x671a('0x8')](_0x671a('0xb'),auth['isAuthenticated'](),controller[_0x671a('0xc')]);router[_0x671a('0x8')](_0x671a('0xd'),auth[_0x671a('0x9')](),controller[_0x671a('0xe')]);router[_0x671a('0x8')]('/:id/fields',auth[_0x671a('0x9')](),controller[_0x671a('0xf')]);router[_0x671a('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0x671a('0x10')](_0x671a('0xd'),auth[_0x671a('0x9')](),controller[_0x671a('0x11')]);router[_0x671a('0x12')](_0x671a('0xb'),auth[_0x671a('0x9')](),controller['update']);router[_0x671a('0x13')](_0x671a('0xb'),auth['isAuthenticated'](),controller['destroy']);module[_0x671a('0x14')]=router;
\ No newline at end of file
index aaf4b7c..0eadfc5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4a1=['STRING','username','remoteUri','sequelize'];(function(_0x4d423b,_0x5b9c4d){var _0x2c7a06=function(_0x399bc6){while(--_0x399bc6){_0x4d423b['push'](_0x4d423b['shift']());}};_0x2c7a06(++_0x5b9c4d);}(_0xf4a1,0x1d7));var _0x1f4a=function(_0x24237f,_0x4cf32c){_0x24237f=_0x24237f-0x0;var _0x48298e=_0xf4a1[_0x24237f];return _0x48298e;};'use strict';var Sequelize=require(_0x1f4a('0x0'));module['exports']={'name':{'type':Sequelize[_0x1f4a('0x1')]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x1f4a('0x1')],'unique':_0x1f4a('0x2')},'password':{'type':Sequelize[_0x1f4a('0x1')]},'email':{'type':Sequelize['STRING']},'remoteUri':{'type':Sequelize[_0x1f4a('0x1')],'unique':_0x1f4a('0x3')},'serverUrl':{'type':Sequelize[_0x1f4a('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0xa03a=['STRING','username','sequelize','exports'];(function(_0x1e2215,_0x2b2bd5){var _0x28f0cf=function(_0x24da81){while(--_0x24da81){_0x1e2215['push'](_0x1e2215['shift']());}};_0x28f0cf(++_0x2b2bd5);}(_0xa03a,0x152));var _0xaa03=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0xa03a[_0x2be8c2];return _0x97f531;};'use strict';var Sequelize=require(_0xaa03('0x0'));module[_0xaa03('0x1')]={'name':{'type':Sequelize[_0xaa03('0x2')]},'description':{'type':Sequelize[_0xaa03('0x2')]},'username':{'type':Sequelize[_0xaa03('0x2')],'unique':_0xaa03('0x3')},'password':{'type':Sequelize[_0xaa03('0x2')]},'email':{'type':Sequelize[_0xaa03('0x2')]},'remoteUri':{'type':Sequelize[_0xaa03('0x2')],'unique':'remoteUri'},'serverUrl':{'type':Sequelize[_0xaa03('0x2')],'allowNull':![]}};
\ No newline at end of file
index 3dd1342..3555bc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcc8=['nolimit','order','sort','where','filter','merge','VIRTUAL','includeAll','include','ServicenowAccount','rows','params','options','find','catch','create','body','destroy','getConfigurations','ServicenowConfiguration','pick','addConfiguration','findOne','AccountId','Subjects','getSubjects','channel','getDescriptions','ServicenowField','Descriptions','getFields','made_sla','hold_reason','knowledge','subcategory','incident_state','severity','caused_by','upon_reject','sys_updated_on','child_incidents','approval_history','number','resolved_by','user_input','sys_created_on','sys_domain','state','calendar_stc','closed_at','cmdb_ci','impact','active','work_notes_list','business_service','priority','time_worked','expected_start','opened_at','business_duration','reopened_time','resolved_at','caller_id','approval_set','work_notes','close_code','correlation_display','work_start','assignment_group','business_stc','additional_assignee_list','description','notify','sys_class_name','close_notes','closed_by','follow_up','parent_incident','sys_id','contact_type','reopened_by','problem_id','reassignment_count','activity_due','assigned_to','sla_due','approval','comments_and_work_notes','due_date','sys_mod_count','reopen_count','sys_tags','escalation','upon_approval','correlation_id','location','category','username','password','email','remoteUri','slice','substring','lastIndexOf','%s/api/now/doc/table/schema/','%s/api/now/table/','GET','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','remove','forEach','internalType','label','push','TCL:\x20_object','TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom','concat','test','Wrong\x20credentials','statusCode','True','true','False','false','sys_choice?sysparm_query=name=incident^element=','inactive','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','fs-extra','lodash','squel','crypto','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','error','stack','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty'];(function(_0x53eba7,_0x38744c){var _0x32491b=function(_0x61ea1d){while(--_0x61ea1d){_0x53eba7['push'](_0x53eba7['shift']());}};_0x32491b(++_0x38744c);}(_0xbcc8,0x80));var _0x8bcc=function(_0x2aee2f,_0xad9887){_0x2aee2f=_0x2aee2f-0x0;var _0x19337f=_0xbcc8[_0x2aee2f];return _0x19337f;};'use strict';var emlformat=require(_0x8bcc('0x0'));var rimraf=require(_0x8bcc('0x1'));var zipdir=require(_0x8bcc('0x2'));var jsonpatch=require(_0x8bcc('0x3'));var rp=require(_0x8bcc('0x4'));var moment=require(_0x8bcc('0x5'));var BPromise=require(_0x8bcc('0x6'));var Mustache=require(_0x8bcc('0x7'));var util=require(_0x8bcc('0x8'));var path=require(_0x8bcc('0x9'));var sox=require('sox');var csv=require(_0x8bcc('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8bcc('0xb'));var _=require(_0x8bcc('0xc'));var squel=require(_0x8bcc('0xd'));var crypto=require(_0x8bcc('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x8bcc('0xf'));var toCsv=require(_0x8bcc('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x8bcc('0x10'));var authService=require(_0x8bcc('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x8bcc('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8bcc('0x13'))(_0x8bcc('0x14'));var utils=require('../../config/utils');var config=require(_0x8bcc('0x15'));var licenseUtil=require(_0x8bcc('0x16'));var db=require(_0x8bcc('0x17'))['db'];var integrations=require(_0x8bcc('0x18'));function respondWithStatusCode(_0x58897d,_0x5802a9){_0x5802a9=_0x5802a9||0xcc;return function(_0x48d66a){if(_0x48d66a){return _0x58897d[_0x8bcc('0x19')](_0x5802a9);}return _0x58897d[_0x8bcc('0x1a')](_0x5802a9)[_0x8bcc('0x1b')]();};}function respondWithResult(_0x2be94e,_0x311fd4){_0x311fd4=_0x311fd4||0xc8;return function(_0x10e59f){if(_0x10e59f){return _0x2be94e[_0x8bcc('0x1a')](_0x311fd4)[_0x8bcc('0x1c')](_0x10e59f);}};}function respondWithFilteredResult(_0x44c045,_0x570746){return function(_0x185f76){if(_0x185f76){var _0x576826=typeof _0x570746['offset']===_0x8bcc('0x1d')&&typeof _0x570746[_0x8bcc('0x1e')]==='undefined';var _0x39256b=_0x185f76[_0x8bcc('0x1f')];var _0x3b1aca=_0x576826?0x0:_0x570746[_0x8bcc('0x20')];var _0x215c61=_0x576826?_0x185f76[_0x8bcc('0x1f')]:_0x570746[_0x8bcc('0x20')]+_0x570746[_0x8bcc('0x1e')];var _0x5a66ba;if(_0x215c61>=_0x39256b){_0x215c61=_0x39256b;_0x5a66ba=0xc8;}else{_0x5a66ba=0xce;}_0x44c045[_0x8bcc('0x1a')](_0x5a66ba);return _0x44c045[_0x8bcc('0x21')](_0x8bcc('0x22'),_0x3b1aca+'-'+_0x215c61+'/'+_0x39256b)[_0x8bcc('0x1c')](_0x185f76);}return null;};}function patchUpdates(_0x1391e7){return function(_0x595786){try{jsonpatch[_0x8bcc('0x23')](_0x595786,_0x1391e7,!![]);}catch(_0x100fbe){return BPromise[_0x8bcc('0x24')](_0x100fbe);}return _0x595786[_0x8bcc('0x25')]();};}function saveUpdates(_0x4faf64,_0x12fd29){return function(_0x301e23){if(_0x301e23){return _0x301e23[_0x8bcc('0x26')](_0x4faf64)['then'](function(_0x50cb0e){return _0x50cb0e;});}return null;};}function removeEntity(_0x354b85,_0x1b18a0){return function(_0x2aa0a6){if(_0x2aa0a6){return _0x2aa0a6['destroy']()[_0x8bcc('0x27')](function(){_0x354b85[_0x8bcc('0x1a')](0xcc)[_0x8bcc('0x1b')]();});}};}function handleEntityNotFound(_0x29fd49,_0x2e4212){return function(_0x311a6e){if(!_0x311a6e){_0x29fd49[_0x8bcc('0x19')](0x194);}return _0x311a6e;};}function handleError(_0x2f82e2,_0x5f5002){_0x5f5002=_0x5f5002||0x1f4;return function(_0x12c0f3){logger[_0x8bcc('0x28')](_0x12c0f3[_0x8bcc('0x29')]);if(_0x12c0f3[_0x8bcc('0x2a')]){delete _0x12c0f3[_0x8bcc('0x2a')];}_0x2f82e2['status'](_0x5f5002)[_0x8bcc('0x2b')](_0x12c0f3);};}exports[_0x8bcc('0x2c')]=function(_0x4f545d,_0xb78036){var _0x413ff0={},_0x3ecca0={},_0x4cb29a={'count':0x0,'rows':[]};var _0x1578c8=_[_0x8bcc('0x2d')](db['ServicenowAccount'][_0x8bcc('0x2e')],function(_0x19c6e7){return{'name':_0x19c6e7['fieldName'],'type':_0x19c6e7[_0x8bcc('0x2f')][_0x8bcc('0x30')]};});_0x3ecca0[_0x8bcc('0x31')]=_['map'](_0x1578c8,_0x8bcc('0x2a'));_0x3ecca0[_0x8bcc('0x32')]=_[_0x8bcc('0x33')](_0x4f545d[_0x8bcc('0x32')]);_0x3ecca0[_0x8bcc('0x34')]=_[_0x8bcc('0x35')](_0x3ecca0[_0x8bcc('0x31')],_0x3ecca0[_0x8bcc('0x32')]);_0x413ff0[_0x8bcc('0x36')]=_[_0x8bcc('0x35')](_0x3ecca0['model'],qs[_0x8bcc('0x37')](_0x4f545d[_0x8bcc('0x32')]['fields']));_0x413ff0[_0x8bcc('0x36')]=_0x413ff0[_0x8bcc('0x36')][_0x8bcc('0x38')]?_0x413ff0[_0x8bcc('0x36')]:_0x3ecca0[_0x8bcc('0x31')];if(!_0x4f545d[_0x8bcc('0x32')][_0x8bcc('0x39')](_0x8bcc('0x3a'))){_0x413ff0[_0x8bcc('0x1e')]=qs[_0x8bcc('0x1e')](_0x4f545d[_0x8bcc('0x32')]['limit']);_0x413ff0[_0x8bcc('0x20')]=qs[_0x8bcc('0x20')](_0x4f545d[_0x8bcc('0x32')][_0x8bcc('0x20')]);}_0x413ff0[_0x8bcc('0x3b')]=qs[_0x8bcc('0x3c')](_0x4f545d[_0x8bcc('0x32')][_0x8bcc('0x3c')]);_0x413ff0[_0x8bcc('0x3d')]=qs['filters'](_['pick'](_0x4f545d[_0x8bcc('0x32')],_0x3ecca0[_0x8bcc('0x34')]),_0x1578c8);if(_0x4f545d[_0x8bcc('0x32')][_0x8bcc('0x3e')]){_0x413ff0['where']=_[_0x8bcc('0x3f')](_0x413ff0[_0x8bcc('0x3d')],{'$or':_[_0x8bcc('0x2d')](_0x1578c8,function(_0x2b96e8){if(_0x2b96e8[_0x8bcc('0x2f')]!==_0x8bcc('0x40')){var _0x1a9ec5={};_0x1a9ec5[_0x2b96e8[_0x8bcc('0x2a')]]={'$like':'%'+_0x4f545d[_0x8bcc('0x32')][_0x8bcc('0x3e')]+'%'};return _0x1a9ec5;}})});}_0x413ff0=_[_0x8bcc('0x3f')]({},_0x413ff0,_0x4f545d['options']);var _0x141592={'where':_0x413ff0[_0x8bcc('0x3d')]};return db['ServicenowAccount'][_0x8bcc('0x1f')](_0x141592)[_0x8bcc('0x27')](function(_0x250b98){_0x4cb29a[_0x8bcc('0x1f')]=_0x250b98;if(_0x4f545d[_0x8bcc('0x32')][_0x8bcc('0x41')]){_0x413ff0[_0x8bcc('0x42')]=[{'all':!![]}];}return db[_0x8bcc('0x43')]['findAll'](_0x413ff0);})[_0x8bcc('0x27')](function(_0x2feb26){_0x4cb29a[_0x8bcc('0x44')]=_0x2feb26;return _0x4cb29a;})[_0x8bcc('0x27')](respondWithFilteredResult(_0xb78036,_0x413ff0))['catch'](handleError(_0xb78036,null));};exports['show']=function(_0x4fb205,_0x1cb9d8){var _0xb830ad={'raw':![],'where':{'id':_0x4fb205[_0x8bcc('0x45')]['id']}},_0x2ea673={};_0x2ea673[_0x8bcc('0x31')]=_[_0x8bcc('0x33')](db[_0x8bcc('0x43')][_0x8bcc('0x2e')]);_0x2ea673['query']=_[_0x8bcc('0x33')](_0x4fb205['query']);_0x2ea673[_0x8bcc('0x34')]=_[_0x8bcc('0x35')](_0x2ea673[_0x8bcc('0x31')],_0x2ea673[_0x8bcc('0x32')]);_0xb830ad['attributes']=_[_0x8bcc('0x35')](_0x2ea673[_0x8bcc('0x31')],qs[_0x8bcc('0x37')](_0x4fb205[_0x8bcc('0x32')]['fields']));_0xb830ad[_0x8bcc('0x36')]=_0xb830ad[_0x8bcc('0x36')]['length']?_0xb830ad[_0x8bcc('0x36')]:_0x2ea673['model'];if(_0x4fb205[_0x8bcc('0x32')][_0x8bcc('0x41')]){_0xb830ad[_0x8bcc('0x42')]=[{'all':!![]}];}_0xb830ad=_['merge']({},_0xb830ad,_0x4fb205[_0x8bcc('0x46')]);return db[_0x8bcc('0x43')][_0x8bcc('0x47')](_0xb830ad)[_0x8bcc('0x27')](handleEntityNotFound(_0x1cb9d8,null))[_0x8bcc('0x27')](respondWithResult(_0x1cb9d8,null))[_0x8bcc('0x48')](handleError(_0x1cb9d8,null));};exports[_0x8bcc('0x49')]=function(_0x16876a,_0x4b6520){return db[_0x8bcc('0x43')][_0x8bcc('0x49')](_0x16876a[_0x8bcc('0x4a')],{})['then'](respondWithResult(_0x4b6520,0xc9))['catch'](handleError(_0x4b6520,null));};exports[_0x8bcc('0x26')]=function(_0x146628,_0x40cf60){if(_0x146628[_0x8bcc('0x4a')]['id']){delete _0x146628[_0x8bcc('0x4a')]['id'];}return db[_0x8bcc('0x43')][_0x8bcc('0x47')]({'where':{'id':_0x146628[_0x8bcc('0x45')]['id']}})[_0x8bcc('0x27')](handleEntityNotFound(_0x40cf60,null))[_0x8bcc('0x27')](saveUpdates(_0x146628[_0x8bcc('0x4a')],null))['then'](respondWithResult(_0x40cf60,null))[_0x8bcc('0x48')](handleError(_0x40cf60,null));};exports[_0x8bcc('0x4b')]=function(_0x437600,_0x27f0ec){return db['ServicenowAccount'][_0x8bcc('0x47')]({'where':{'id':_0x437600[_0x8bcc('0x45')]['id']}})['then'](handleEntityNotFound(_0x27f0ec,null))['then'](removeEntity(_0x27f0ec,null))[_0x8bcc('0x48')](handleError(_0x27f0ec,null));};exports[_0x8bcc('0x4c')]=function(_0xb091,_0xeab1ac,_0xca6be6){var _0x5c5351={};var _0x20e11f={};var _0x3ba2f2;var _0x170c4a;return db[_0x8bcc('0x43')]['findOne']({'where':{'id':_0xb091[_0x8bcc('0x45')]['id']}})[_0x8bcc('0x27')](handleEntityNotFound(_0xeab1ac,null))[_0x8bcc('0x27')](function(_0x24aabf){if(_0x24aabf){_0x3ba2f2=_0x24aabf;_0x20e11f[_0x8bcc('0x31')]=_[_0x8bcc('0x33')](db[_0x8bcc('0x4d')][_0x8bcc('0x2e')]);_0x20e11f[_0x8bcc('0x32')]=_[_0x8bcc('0x33')](_0xb091[_0x8bcc('0x32')]);_0x20e11f[_0x8bcc('0x34')]=_[_0x8bcc('0x35')](_0x20e11f['model'],_0x20e11f[_0x8bcc('0x32')]);_0x5c5351[_0x8bcc('0x36')]=_[_0x8bcc('0x35')](_0x20e11f[_0x8bcc('0x31')],qs[_0x8bcc('0x37')](_0xb091[_0x8bcc('0x32')][_0x8bcc('0x37')]));_0x5c5351[_0x8bcc('0x36')]=_0x5c5351['attributes'][_0x8bcc('0x38')]?_0x5c5351['attributes']:_0x20e11f[_0x8bcc('0x31')];_0x5c5351[_0x8bcc('0x3b')]=qs[_0x8bcc('0x3c')](_0xb091[_0x8bcc('0x32')]['sort']);_0x5c5351['where']=qs[_0x8bcc('0x34')](_[_0x8bcc('0x4e')](_0xb091[_0x8bcc('0x32')],_0x20e11f['filters']));if(_0xb091[_0x8bcc('0x32')]['filter']){_0x5c5351['where']=_[_0x8bcc('0x3f')](_0x5c5351['where'],{'$or':_[_0x8bcc('0x2d')](_0x5c5351[_0x8bcc('0x36')],function(_0x58505c){var _0x11fd17={};_0x11fd17[_0x58505c]={'$like':'%'+_0xb091['query'][_0x8bcc('0x3e')]+'%'};return _0x11fd17;})});}_0x5c5351=_[_0x8bcc('0x3f')]({},_0x5c5351,_0xb091[_0x8bcc('0x46')]);return _0x3ba2f2[_0x8bcc('0x4c')](_0x5c5351);}})['then'](function(_0x54a168){if(_0x54a168){_0x170c4a=_0x54a168['length'];if(!_0xb091[_0x8bcc('0x32')]['hasOwnProperty'](_0x8bcc('0x3a'))){_0x5c5351[_0x8bcc('0x1e')]=qs[_0x8bcc('0x1e')](_0xb091['query'][_0x8bcc('0x1e')]);_0x5c5351[_0x8bcc('0x20')]=qs[_0x8bcc('0x20')](_0xb091[_0x8bcc('0x32')][_0x8bcc('0x20')]);}return _0x3ba2f2[_0x8bcc('0x4c')](_0x5c5351);}})[_0x8bcc('0x27')](function(_0x808b17){if(_0x808b17){return _0x808b17?{'count':_0x170c4a,'rows':_0x808b17}:null;}})[_0x8bcc('0x27')](respondWithResult(_0xeab1ac,null))[_0x8bcc('0x48')](handleError(_0xeab1ac,null));};exports[_0x8bcc('0x4f')]=function(_0x522746,_0x3452dd,_0x4f3c9e){if(_0x522746[_0x8bcc('0x4a')]['id']){delete _0x522746[_0x8bcc('0x4a')]['id'];}return db[_0x8bcc('0x43')][_0x8bcc('0x50')]({'where':{'id':_0x522746[_0x8bcc('0x45')]['id']}})[_0x8bcc('0x27')](handleEntityNotFound(_0x3452dd,null))[_0x8bcc('0x27')](function(_0x4f0792){if(_0x4f0792){_0x522746['body'][_0x8bcc('0x51')]=_0x4f0792['id'];_0x522746['body'][_0x8bcc('0x52')]=integrations[_0x8bcc('0x53')](_0x522746['body'][_0x8bcc('0x54')],_0x522746[_0x8bcc('0x4a')][_0x8bcc('0x2f')]);_0x522746[_0x8bcc('0x4a')]['Descriptions']=integrations[_0x8bcc('0x55')](_0x522746['body']['channel'],_0x522746['body'][_0x8bcc('0x2f')]);return db[_0x8bcc('0x4d')][_0x8bcc('0x49')](_0x522746['body'],{'include':[{'model':db[_0x8bcc('0x56')],'as':_0x8bcc('0x52')},{'model':db['ServicenowField'],'as':_0x8bcc('0x57')}]});}return null;})['then'](respondWithResult(_0x3452dd,null))[_0x8bcc('0x48')](handleError(_0x3452dd,null));};exports[_0x8bcc('0x58')]=function(_0x221f7c,_0x4aeb79,_0x550bf2){var _0x35d5d5=[_0x8bcc('0x59'),_0x8bcc('0x5a'),_0x8bcc('0x5b'),_0x8bcc('0x5c'),'close_code','notify',_0x8bcc('0x5d'),_0x8bcc('0x5e'),'category'];var _0xe0e396=['parent',_0x8bcc('0x59'),_0x8bcc('0x5f'),'watch_list',_0x8bcc('0x60'),_0x8bcc('0x61'),_0x8bcc('0x62'),_0x8bcc('0x5a'),_0x8bcc('0x63'),_0x8bcc('0x64'),_0x8bcc('0x65'),'sys_updated_by','opened_by',_0x8bcc('0x66'),_0x8bcc('0x67'),_0x8bcc('0x68'),_0x8bcc('0x69'),'sys_created_by','knowledge',_0x8bcc('0x3b'),_0x8bcc('0x6a'),_0x8bcc('0x6b'),_0x8bcc('0x6c'),'delivery_plan',_0x8bcc('0x6d'),_0x8bcc('0x6e'),_0x8bcc('0x6f'),_0x8bcc('0x70'),_0x8bcc('0x71'),'sys_domain_path','rfc',_0x8bcc('0x72'),_0x8bcc('0x73'),_0x8bcc('0x74'),_0x8bcc('0x75'),'group_list','work_end',_0x8bcc('0x76'),_0x8bcc('0x77'),_0x8bcc('0x78'),_0x8bcc('0x79'),_0x8bcc('0x5c'),_0x8bcc('0x7a'),'short_description',_0x8bcc('0x7b'),_0x8bcc('0x7c'),'delivery_task',_0x8bcc('0x7d'),_0x8bcc('0x7e'),_0x8bcc('0x7f'),_0x8bcc('0x80'),_0x8bcc('0x81'),'calendar_duration',_0x8bcc('0x82'),_0x8bcc('0x83'),_0x8bcc('0x84'),_0x8bcc('0x85'),_0x8bcc('0x86'),_0x8bcc('0x87'),_0x8bcc('0x88'),_0x8bcc('0x89'),_0x8bcc('0x8a'),_0x8bcc('0x5d'),'urgency',_0x8bcc('0x8b'),'company',_0x8bcc('0x8c'),_0x8bcc('0x8d'),_0x8bcc('0x8e'),'severity','comments',_0x8bcc('0x8f'),_0x8bcc('0x90'),_0x8bcc('0x91'),_0x8bcc('0x92'),_0x8bcc('0x93'),_0x8bcc('0x94'),_0x8bcc('0x95'),_0x8bcc('0x96'),_0x8bcc('0x97'),_0x8bcc('0x98'),_0x8bcc('0x99'),_0x8bcc('0x9a')];var _0x274423='';var _0x1350a2='';var _0x4b78ab=[];var _0x1c2f20='';var _0x3430b5='';var _0x2f0f8f=[];var _0x324cbe='';var _0x6939ee='';var _0x361816={};var _0x693701='';return db['ServicenowAccount'][_0x8bcc('0x50')]({'where':{'id':_0x221f7c['params']['id']},'attributes':['id',_0x8bcc('0x9b'),_0x8bcc('0x9c'),_0x8bcc('0x9d'),_0x8bcc('0x9e'),'serverUrl']})[_0x8bcc('0x27')](handleEntityNotFound(_0x4aeb79,null))['then'](function(_0x4f2c19){if(_0x4f2c19){_0x693701=_0x4f2c19[_0x8bcc('0x9e')];var _0x423cd9=_0x693701[_0x8bcc('0x9f')](-0x1);if(_0x423cd9==='/'){_0x693701=_0x693701[_0x8bcc('0xa0')](0x0,_0x693701[_0x8bcc('0xa1')](_0x423cd9));}_0x6939ee=util['format'](_0x8bcc('0xa2'),_0x693701);_0x324cbe=util['format'](_0x8bcc('0xa3'),_0x693701);_0x361816={'user':_0x4f2c19[_0x8bcc('0x9b')],'pass':_0x4f2c19[_0x8bcc('0x9c')]};var _0x244236={'method':_0x8bcc('0xa4'),'uri':_0x6939ee+_0x8bcc('0xa5'),'auth':_0x361816,'json':!![]};return rp(_0x244236);}})[_0x8bcc('0x27')](function(_0x4b66da){if(_0x4b66da[_0x8bcc('0xa6')][_0x8bcc('0x38')]>0x0){_0x274423=_0x4b66da[_0x8bcc('0xa6')];}console[_0x8bcc('0xa7')](_0x8bcc('0xa8'),_0x274423);_0x2f0f8f=[];_0x1350a2=Object['assign']([],_0x274423);_[_0x8bcc('0xa9')](_0x1350a2,function(_0x168c70){return!_0x35d5d5['includes'](_0x168c70[_0x8bcc('0x2a')]);});_0x1350a2[_0x8bcc('0xaa')](function(_0x169f01){var _0x2b8c1b=createFieldObject(_0x324cbe,_0x361816,_0x169f01[_0x8bcc('0xab')],_0x169f01['name'],_0x169f01[_0x8bcc('0xac')],![]);_0x2f0f8f[_0x8bcc('0xad')](_0x2b8c1b);});return Promise['all'](_0x2f0f8f);})[_0x8bcc('0x27')](function(_0xb4afeb){_0x4b78ab=_0xb4afeb;_0x1c2f20=Object['assign']([],_0x274423);console[_0x8bcc('0xa7')](_0x8bcc('0xae'),_0x274423);_[_0x8bcc('0xa9')](_0x1c2f20,function(_0x5ab06b){return _0xe0e396['includes'](_0x5ab06b['name']);});console[_0x8bcc('0xa7')](_0x8bcc('0xaf'),_0x1c2f20);_0x2f0f8f=[];_0x1c2f20[_0x8bcc('0xaa')](function(_0x5774ea){var _0x5553f3=createFieldObject(_0x324cbe,_0x361816,_0x5774ea[_0x8bcc('0xab')],_0x5774ea['name'],_0x5774ea[_0x8bcc('0xac')],!![]);_0x2f0f8f['push'](_0x5553f3);});return Promise['all'](_0x2f0f8f);})[_0x8bcc('0x27')](function(_0x162cd0){_0x3430b5=_0x162cd0;var _0xf9a250=_0x4b78ab[_0x8bcc('0xb0')](_0x3430b5);return{'count':_0xf9a250[_0x8bcc('0x38')],'rows':_0xf9a250};})[_0x8bcc('0x27')](respondWithResult(_0x4aeb79,null))[_0x8bcc('0x48')](function(_0x2048fc){console[_0x8bcc('0xa7')]('ServiceNow\x20error:\x20'+_0x2048fc);var _0x4696cf=_0x221f7c[_0x8bcc('0x32')][_0x8bcc('0xb1')]?0x1f4:_0x2048fc['statusCode']||0x1f4;logger[_0x8bcc('0x28')](_0x2048fc['stack']);delete _0x2048fc['name'];if(_0x4696cf===0x191){_0x4696cf=0x190;}_0x4aeb79[_0x8bcc('0x1a')](_0x4696cf)[_0x8bcc('0x2b')](_0x221f7c[_0x8bcc('0x32')]['test']?{'message':_0x8bcc('0xb2'),'statusCode':_0x2048fc[_0x8bcc('0xb3')]}:_0x2048fc);});};function createFieldObject(_0x578ff0,_0x6c25f8,_0x1fd42e,_0x1e0484,_0x5ae40a,_0xac8153){return new Promise(function(_0x465c00,_0x5b0a95){var _0x372df7={'id':_0x1e0484,'name':_0x5ae40a,'custom':_0xac8153};if(_0x1fd42e==='boolean'){_0x372df7[_0x8bcc('0x46')]=[{'name':_0x8bcc('0xb4'),'value':_0x8bcc('0xb5')},{'name':_0x8bcc('0xb6'),'value':_0x8bcc('0xb7')}];_0x465c00(_0x372df7);}else{var _0x52b254={'method':_0x8bcc('0xa4'),'uri':_0x578ff0+_0x8bcc('0xb8')+_0x1e0484,'auth':_0x6c25f8,'json':!![]};return rp(_0x52b254)[_0x8bcc('0x27')](function(_0xb6ed1b){var _0x2c401d=[];if(_0xb6ed1b[_0x8bcc('0xa6')][_0x8bcc('0x38')]>0x0){_0xb6ed1b[_0x8bcc('0xa6')][_0x8bcc('0xaa')](function(_0x5f2fc){if(_0x5f2fc[_0x8bcc('0xb9')]===_0x8bcc('0xb7')){var _0x2b4473={'name':_0x5f2fc[_0x8bcc('0xac')],'value':_0x5f2fc['value']};_0x2c401d[_0x8bcc('0xad')](_0x2b4473);}});}_0x372df7[_0x8bcc('0x46')]=_0x2c401d;if(_0x372df7[_0x8bcc('0x46')][_0x8bcc('0x38')]>0x0){_0x465c00(_0x372df7);}else{if(_0xac8153==![]){_0x465c00();}else{_0x465c00(_0x372df7);}}});}});}
\ No newline at end of file
+var _0x796c=['sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','status','end','json','offset','undefined','limit','count','set','reject','then','destroy','stack','name','send','index','map','ServicenowAccount','rawAttributes','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','filter','merge','VIRTUAL','options','includeAll','findAll','rows','catch','params','include','find','create','body','update','getConfigurations','findOne','ServicenowConfiguration','order','addConfiguration','Subjects','getSubjects','channel','type','Descriptions','getDescriptions','ServicenowField','getFields','hold_reason','knowledge','subcategory','close_code','notify','incident_state','severity','made_sla','watch_list','upon_reject','child_incidents','approval_history','number','resolved_by','sys_updated_by','opened_by','user_input','sys_created_on','sys_domain','state','sys_created_by','calendar_stc','closed_at','cmdb_ci','delivery_plan','work_notes_list','priority','rfc','time_worked','expected_start','opened_at','group_list','work_end','reopened_time','resolved_at','caller_id','approval_set','correlation_display','delivery_task','work_start','assignment_group','business_stc','additional_assignee_list','description','calendar_duration','sys_class_name','close_notes','closed_by','follow_up','parent_incident','sys_id','contact_type','reopened_by','urgency','problem_id','company','reassignment_count','activity_due','assigned_to','comments','sla_due','approval','due_date','sys_mod_count','reopen_count','sys_tags','escalation','upon_approval','location','username','password','email','serverUrl','remoteUri','slice','substring','format','%s/api/now/doc/table/schema/','%s/api/now/table/','incident?sysparm_display_value=all','result','log','incident\x20table\x20objects','assign','remove','includes','forEach','internalType','label','push','all','concat','ServiceNow\x20error:\x20','test','statusCode','error','Wrong\x20credentials','boolean','True','true','False','false','GET','sys_choice?sysparm_query=name=incident^element=','value','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x796c,0xb4));var _0xc796=function(_0x16d10f,_0x2ba2d5){_0x16d10f=_0x16d10f-0x0;var _0x50c823=_0x796c[_0x16d10f];return _0x50c823;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc796('0x0'));var zipdir=require(_0xc796('0x1'));var jsonpatch=require(_0xc796('0x2'));var rp=require(_0xc796('0x3'));var moment=require('moment');var BPromise=require(_0xc796('0x4'));var Mustache=require(_0xc796('0x5'));var util=require(_0xc796('0x6'));var path=require(_0xc796('0x7'));var sox=require(_0xc796('0x8'));var csv=require(_0xc796('0x9'));var ejs=require(_0xc796('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc796('0xb'));var squel=require(_0xc796('0xc'));var crypto=require(_0xc796('0xd'));var jsforce=require(_0xc796('0xe'));var deskjs=require(_0xc796('0xf'));var toCsv=require('to-csv');var querystring=require(_0xc796('0x10'));var Papa=require('papaparse');var Redis=require(_0xc796('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xc796('0x12'));var as=require(_0xc796('0x13'));var hardwareService=require(_0xc796('0x14'));var logger=require(_0xc796('0x15'))('api');var utils=require(_0xc796('0x16'));var config=require(_0xc796('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xc796('0x18'))['db'];var integrations=require(_0xc796('0x19'));function respondWithStatusCode(_0x228b21,_0x51989b){_0x51989b=_0x51989b||0xcc;return function(_0x3311e6){if(_0x3311e6){return _0x228b21['sendStatus'](_0x51989b);}return _0x228b21[_0xc796('0x1a')](_0x51989b)[_0xc796('0x1b')]();};}function respondWithResult(_0x564508,_0x27c31e){_0x27c31e=_0x27c31e||0xc8;return function(_0x2e0a8c){if(_0x2e0a8c){return _0x564508['status'](_0x27c31e)[_0xc796('0x1c')](_0x2e0a8c);}};}function respondWithFilteredResult(_0x166bd3,_0x18b673){return function(_0x2567d2){if(_0x2567d2){var _0x34accc=typeof _0x18b673[_0xc796('0x1d')]===_0xc796('0x1e')&&typeof _0x18b673[_0xc796('0x1f')]===_0xc796('0x1e');var _0x1874a5=_0x2567d2[_0xc796('0x20')];var _0x347dbc=_0x34accc?0x0:_0x18b673[_0xc796('0x1d')];var _0x25646e=_0x34accc?_0x2567d2[_0xc796('0x20')]:_0x18b673[_0xc796('0x1d')]+_0x18b673[_0xc796('0x1f')];var _0x2c80ff;if(_0x25646e>=_0x1874a5){_0x25646e=_0x1874a5;_0x2c80ff=0xc8;}else{_0x2c80ff=0xce;}_0x166bd3['status'](_0x2c80ff);return _0x166bd3[_0xc796('0x21')]('Content-Range',_0x347dbc+'-'+_0x25646e+'/'+_0x1874a5)['json'](_0x2567d2);}return null;};}function patchUpdates(_0x33753d){return function(_0x410139){try{jsonpatch['apply'](_0x410139,_0x33753d,!![]);}catch(_0x4e3142){return BPromise[_0xc796('0x22')](_0x4e3142);}return _0x410139['save']();};}function saveUpdates(_0x54018e,_0x2a0792){return function(_0x3e1218){if(_0x3e1218){return _0x3e1218['update'](_0x54018e)[_0xc796('0x23')](function(_0x24b177){return _0x24b177;});}return null;};}function removeEntity(_0x5dc474,_0x24f641){return function(_0xdfb269){if(_0xdfb269){return _0xdfb269[_0xc796('0x24')]()['then'](function(){_0x5dc474[_0xc796('0x1a')](0xcc)[_0xc796('0x1b')]();});}};}function handleEntityNotFound(_0x5a2c69,_0x59924f){return function(_0x3c12f5){if(!_0x3c12f5){_0x5a2c69['sendStatus'](0x194);}return _0x3c12f5;};}function handleError(_0xb93ace,_0x56aab1){_0x56aab1=_0x56aab1||0x1f4;return function(_0x3fda4f){logger['error'](_0x3fda4f[_0xc796('0x25')]);if(_0x3fda4f['name']){delete _0x3fda4f[_0xc796('0x26')];}_0xb93ace[_0xc796('0x1a')](_0x56aab1)[_0xc796('0x27')](_0x3fda4f);};}exports[_0xc796('0x28')]=function(_0x339ed1,_0x392d13){var _0x29a3b2={},_0x3f8830={},_0x24daed={'count':0x0,'rows':[]};var _0x29b362=_[_0xc796('0x29')](db[_0xc796('0x2a')][_0xc796('0x2b')],function(_0x1df84a){return{'name':_0x1df84a['fieldName'],'type':_0x1df84a['type']['key']};});_0x3f8830[_0xc796('0x2c')]=_['map'](_0x29b362,_0xc796('0x26'));_0x3f8830[_0xc796('0x2d')]=_[_0xc796('0x2e')](_0x339ed1[_0xc796('0x2d')]);_0x3f8830['filters']=_[_0xc796('0x2f')](_0x3f8830['model'],_0x3f8830[_0xc796('0x2d')]);_0x29a3b2['attributes']=_[_0xc796('0x2f')](_0x3f8830['model'],qs[_0xc796('0x30')](_0x339ed1['query'][_0xc796('0x30')]));_0x29a3b2[_0xc796('0x31')]=_0x29a3b2[_0xc796('0x31')][_0xc796('0x32')]?_0x29a3b2[_0xc796('0x31')]:_0x3f8830[_0xc796('0x2c')];if(!_0x339ed1[_0xc796('0x2d')][_0xc796('0x33')](_0xc796('0x34'))){_0x29a3b2['limit']=qs[_0xc796('0x1f')](_0x339ed1[_0xc796('0x2d')][_0xc796('0x1f')]);_0x29a3b2[_0xc796('0x1d')]=qs[_0xc796('0x1d')](_0x339ed1['query'][_0xc796('0x1d')]);}_0x29a3b2['order']=qs[_0xc796('0x35')](_0x339ed1[_0xc796('0x2d')][_0xc796('0x35')]);_0x29a3b2[_0xc796('0x36')]=qs[_0xc796('0x37')](_['pick'](_0x339ed1[_0xc796('0x2d')],_0x3f8830[_0xc796('0x37')]),_0x29b362);if(_0x339ed1[_0xc796('0x2d')][_0xc796('0x38')]){_0x29a3b2['where']=_[_0xc796('0x39')](_0x29a3b2[_0xc796('0x36')],{'$or':_[_0xc796('0x29')](_0x29b362,function(_0x48cd43){if(_0x48cd43['type']!==_0xc796('0x3a')){var _0x49f139={};_0x49f139[_0x48cd43[_0xc796('0x26')]]={'$like':'%'+_0x339ed1[_0xc796('0x2d')][_0xc796('0x38')]+'%'};return _0x49f139;}})});}_0x29a3b2=_[_0xc796('0x39')]({},_0x29a3b2,_0x339ed1[_0xc796('0x3b')]);var _0x561539={'where':_0x29a3b2['where']};return db[_0xc796('0x2a')][_0xc796('0x20')](_0x561539)[_0xc796('0x23')](function(_0x928e6d){_0x24daed['count']=_0x928e6d;if(_0x339ed1[_0xc796('0x2d')][_0xc796('0x3c')]){_0x29a3b2['include']=[{'all':!![]}];}return db['ServicenowAccount'][_0xc796('0x3d')](_0x29a3b2);})['then'](function(_0x1a6909){_0x24daed[_0xc796('0x3e')]=_0x1a6909;return _0x24daed;})['then'](respondWithFilteredResult(_0x392d13,_0x29a3b2))[_0xc796('0x3f')](handleError(_0x392d13,null));};exports['show']=function(_0x1130df,_0x5e6b44){var _0x4bb5df={'raw':![],'where':{'id':_0x1130df[_0xc796('0x40')]['id']}},_0x2defa4={};_0x2defa4['model']=_[_0xc796('0x2e')](db[_0xc796('0x2a')][_0xc796('0x2b')]);_0x2defa4['query']=_[_0xc796('0x2e')](_0x1130df['query']);_0x2defa4[_0xc796('0x37')]=_[_0xc796('0x2f')](_0x2defa4[_0xc796('0x2c')],_0x2defa4[_0xc796('0x2d')]);_0x4bb5df[_0xc796('0x31')]=_[_0xc796('0x2f')](_0x2defa4[_0xc796('0x2c')],qs['fields'](_0x1130df[_0xc796('0x2d')][_0xc796('0x30')]));_0x4bb5df[_0xc796('0x31')]=_0x4bb5df['attributes'][_0xc796('0x32')]?_0x4bb5df[_0xc796('0x31')]:_0x2defa4[_0xc796('0x2c')];if(_0x1130df[_0xc796('0x2d')]['includeAll']){_0x4bb5df[_0xc796('0x41')]=[{'all':!![]}];}_0x4bb5df=_[_0xc796('0x39')]({},_0x4bb5df,_0x1130df[_0xc796('0x3b')]);return db['ServicenowAccount'][_0xc796('0x42')](_0x4bb5df)['then'](handleEntityNotFound(_0x5e6b44,null))['then'](respondWithResult(_0x5e6b44,null))['catch'](handleError(_0x5e6b44,null));};exports['create']=function(_0x23fb38,_0x3faa52){return db['ServicenowAccount'][_0xc796('0x43')](_0x23fb38[_0xc796('0x44')],{})['then'](respondWithResult(_0x3faa52,0xc9))['catch'](handleError(_0x3faa52,null));};exports[_0xc796('0x45')]=function(_0x213b47,_0x346553){if(_0x213b47[_0xc796('0x44')]['id']){delete _0x213b47['body']['id'];}return db[_0xc796('0x2a')][_0xc796('0x42')]({'where':{'id':_0x213b47[_0xc796('0x40')]['id']}})['then'](handleEntityNotFound(_0x346553,null))[_0xc796('0x23')](saveUpdates(_0x213b47['body'],null))['then'](respondWithResult(_0x346553,null))[_0xc796('0x3f')](handleError(_0x346553,null));};exports[_0xc796('0x24')]=function(_0x2a0af2,_0x3a084f){return db[_0xc796('0x2a')]['find']({'where':{'id':_0x2a0af2['params']['id']}})[_0xc796('0x23')](handleEntityNotFound(_0x3a084f,null))[_0xc796('0x23')](removeEntity(_0x3a084f,null))[_0xc796('0x3f')](handleError(_0x3a084f,null));};exports[_0xc796('0x46')]=function(_0x19e6f4,_0x210b0f,_0x2fbd8b){var _0x305433={};var _0x57225c={};var _0x2e294c;var _0x232047;return db[_0xc796('0x2a')][_0xc796('0x47')]({'where':{'id':_0x19e6f4[_0xc796('0x40')]['id']}})['then'](handleEntityNotFound(_0x210b0f,null))[_0xc796('0x23')](function(_0x311d49){if(_0x311d49){_0x2e294c=_0x311d49;_0x57225c[_0xc796('0x2c')]=_[_0xc796('0x2e')](db[_0xc796('0x48')][_0xc796('0x2b')]);_0x57225c[_0xc796('0x2d')]=_['keys'](_0x19e6f4['query']);_0x57225c['filters']=_[_0xc796('0x2f')](_0x57225c[_0xc796('0x2c')],_0x57225c['query']);_0x305433[_0xc796('0x31')]=_[_0xc796('0x2f')](_0x57225c[_0xc796('0x2c')],qs['fields'](_0x19e6f4[_0xc796('0x2d')][_0xc796('0x30')]));_0x305433['attributes']=_0x305433[_0xc796('0x31')][_0xc796('0x32')]?_0x305433['attributes']:_0x57225c[_0xc796('0x2c')];_0x305433[_0xc796('0x49')]=qs[_0xc796('0x35')](_0x19e6f4['query'][_0xc796('0x35')]);_0x305433[_0xc796('0x36')]=qs[_0xc796('0x37')](_['pick'](_0x19e6f4[_0xc796('0x2d')],_0x57225c[_0xc796('0x37')]));if(_0x19e6f4[_0xc796('0x2d')][_0xc796('0x38')]){_0x305433['where']=_['merge'](_0x305433['where'],{'$or':_['map'](_0x305433[_0xc796('0x31')],function(_0x52231f){var _0x2e62b9={};_0x2e62b9[_0x52231f]={'$like':'%'+_0x19e6f4[_0xc796('0x2d')][_0xc796('0x38')]+'%'};return _0x2e62b9;})});}_0x305433=_['merge']({},_0x305433,_0x19e6f4['options']);return _0x2e294c[_0xc796('0x46')](_0x305433);}})[_0xc796('0x23')](function(_0x174620){if(_0x174620){_0x232047=_0x174620[_0xc796('0x32')];if(!_0x19e6f4[_0xc796('0x2d')][_0xc796('0x33')]('nolimit')){_0x305433[_0xc796('0x1f')]=qs[_0xc796('0x1f')](_0x19e6f4['query'][_0xc796('0x1f')]);_0x305433[_0xc796('0x1d')]=qs[_0xc796('0x1d')](_0x19e6f4[_0xc796('0x2d')][_0xc796('0x1d')]);}return _0x2e294c[_0xc796('0x46')](_0x305433);}})['then'](function(_0x54057c){if(_0x54057c){return _0x54057c?{'count':_0x232047,'rows':_0x54057c}:null;}})[_0xc796('0x23')](respondWithResult(_0x210b0f,null))['catch'](handleError(_0x210b0f,null));};exports[_0xc796('0x4a')]=function(_0x48dd82,_0x5732a3,_0x5d0a71){if(_0x48dd82[_0xc796('0x44')]['id']){delete _0x48dd82['body']['id'];}return db[_0xc796('0x2a')][_0xc796('0x47')]({'where':{'id':_0x48dd82[_0xc796('0x40')]['id']}})['then'](handleEntityNotFound(_0x5732a3,null))[_0xc796('0x23')](function(_0x9e6aa7){if(_0x9e6aa7){_0x48dd82[_0xc796('0x44')]['AccountId']=_0x9e6aa7['id'];_0x48dd82['body'][_0xc796('0x4b')]=integrations[_0xc796('0x4c')](_0x48dd82[_0xc796('0x44')][_0xc796('0x4d')],_0x48dd82[_0xc796('0x44')][_0xc796('0x4e')]);_0x48dd82[_0xc796('0x44')][_0xc796('0x4f')]=integrations[_0xc796('0x50')](_0x48dd82[_0xc796('0x44')][_0xc796('0x4d')],_0x48dd82['body'][_0xc796('0x4e')]);return db['ServicenowConfiguration'][_0xc796('0x43')](_0x48dd82[_0xc796('0x44')],{'include':[{'model':db[_0xc796('0x51')],'as':_0xc796('0x4b')},{'model':db[_0xc796('0x51')],'as':_0xc796('0x4f')}]});}return null;})[_0xc796('0x23')](respondWithResult(_0x5732a3,null))[_0xc796('0x3f')](handleError(_0x5732a3,null));};exports[_0xc796('0x52')]=function(_0x89345a,_0x1eec7e,_0x2691aa){var _0x3457a2=['made_sla',_0xc796('0x53'),_0xc796('0x54'),_0xc796('0x55'),_0xc796('0x56'),_0xc796('0x57'),_0xc796('0x58'),_0xc796('0x59'),'category'];var _0x19e539=['parent',_0xc796('0x5a'),'caused_by',_0xc796('0x5b'),_0xc796('0x5c'),'sys_updated_on',_0xc796('0x5d'),_0xc796('0x53'),_0xc796('0x5e'),_0xc796('0x5f'),_0xc796('0x60'),_0xc796('0x61'),_0xc796('0x62'),_0xc796('0x63'),_0xc796('0x64'),_0xc796('0x65'),_0xc796('0x66'),_0xc796('0x67'),_0xc796('0x54'),_0xc796('0x49'),_0xc796('0x68'),_0xc796('0x69'),_0xc796('0x6a'),_0xc796('0x6b'),'impact','active',_0xc796('0x6c'),'business_service',_0xc796('0x6d'),'sys_domain_path',_0xc796('0x6e'),_0xc796('0x6f'),_0xc796('0x70'),_0xc796('0x71'),'business_duration',_0xc796('0x72'),_0xc796('0x73'),_0xc796('0x74'),_0xc796('0x75'),_0xc796('0x76'),_0xc796('0x77'),_0xc796('0x55'),'work_notes','short_description',_0xc796('0x56'),_0xc796('0x78'),_0xc796('0x79'),_0xc796('0x7a'),_0xc796('0x7b'),_0xc796('0x7c'),_0xc796('0x7d'),_0xc796('0x7e'),_0xc796('0x7f'),_0xc796('0x57'),_0xc796('0x80'),_0xc796('0x81'),_0xc796('0x82'),_0xc796('0x83'),_0xc796('0x84'),_0xc796('0x85'),_0xc796('0x86'),_0xc796('0x87'),_0xc796('0x58'),_0xc796('0x88'),_0xc796('0x89'),_0xc796('0x8a'),_0xc796('0x8b'),_0xc796('0x8c'),_0xc796('0x8d'),'severity',_0xc796('0x8e'),_0xc796('0x8f'),_0xc796('0x90'),'comments_and_work_notes',_0xc796('0x91'),_0xc796('0x92'),_0xc796('0x93'),_0xc796('0x94'),_0xc796('0x95'),_0xc796('0x96'),'correlation_id',_0xc796('0x97'),'category'];var _0x40fa64='';var _0x2ea795='';var _0x44ea84=[];var _0x496a30='';var _0x3cfc0d='';var _0x55bee7=[];var _0x110e1e='';var _0x283859='';var _0x2b76f7={};var _0x43e1d7='';return db[_0xc796('0x2a')][_0xc796('0x47')]({'where':{'id':_0x89345a[_0xc796('0x40')]['id']},'attributes':['id',_0xc796('0x98'),_0xc796('0x99'),_0xc796('0x9a'),'remoteUri',_0xc796('0x9b')]})['then'](handleEntityNotFound(_0x1eec7e,null))[_0xc796('0x23')](function(_0x50c8e7){if(_0x50c8e7){_0x43e1d7=_0x50c8e7[_0xc796('0x9c')];var _0x4df319=_0x43e1d7[_0xc796('0x9d')](-0x1);if(_0x4df319==='/'){_0x43e1d7=_0x43e1d7[_0xc796('0x9e')](0x0,_0x43e1d7['lastIndexOf'](_0x4df319));}_0x283859=util[_0xc796('0x9f')](_0xc796('0xa0'),_0x43e1d7);_0x110e1e=util[_0xc796('0x9f')](_0xc796('0xa1'),_0x43e1d7);_0x2b76f7={'user':_0x50c8e7['username'],'pass':_0x50c8e7[_0xc796('0x99')]};var _0x13f6b2={'method':'GET','uri':_0x283859+_0xc796('0xa2'),'auth':_0x2b76f7,'json':!![]};return rp(_0x13f6b2);}})[_0xc796('0x23')](function(_0x178d97){if(_0x178d97[_0xc796('0xa3')][_0xc796('0x32')]>0x0){_0x40fa64=_0x178d97['result'];}console[_0xc796('0xa4')](_0xc796('0xa5'),_0x40fa64);_0x55bee7=[];_0x2ea795=Object[_0xc796('0xa6')]([],_0x40fa64);_[_0xc796('0xa7')](_0x2ea795,function(_0x2b143a){return!_0x3457a2[_0xc796('0xa8')](_0x2b143a[_0xc796('0x26')]);});_0x2ea795[_0xc796('0xa9')](function(_0x5b0ba4){var _0x5761f8=createFieldObject(_0x110e1e,_0x2b76f7,_0x5b0ba4[_0xc796('0xaa')],_0x5b0ba4[_0xc796('0x26')],_0x5b0ba4[_0xc796('0xab')],![]);_0x55bee7[_0xc796('0xac')](_0x5761f8);});return Promise['all'](_0x55bee7);})['then'](function(_0x6c63e3){_0x44ea84=_0x6c63e3;_0x496a30=Object[_0xc796('0xa6')]([],_0x40fa64);console['log']('TCL:\x20_object',_0x40fa64);_[_0xc796('0xa7')](_0x496a30,function(_0x496d6c){return _0x19e539[_0xc796('0xa8')](_0x496d6c[_0xc796('0x26')]);});console[_0xc796('0xa4')]('TCL:\x20exports.getEntityFields\x20->\x20_objectsCustom',_0x496a30);_0x55bee7=[];_0x496a30['forEach'](function(_0x21aab0){var _0x3a7b0c=createFieldObject(_0x110e1e,_0x2b76f7,_0x21aab0[_0xc796('0xaa')],_0x21aab0[_0xc796('0x26')],_0x21aab0[_0xc796('0xab')],!![]);_0x55bee7[_0xc796('0xac')](_0x3a7b0c);});return Promise[_0xc796('0xad')](_0x55bee7);})['then'](function(_0x37cc83){_0x3cfc0d=_0x37cc83;var _0xafa15a=_0x44ea84[_0xc796('0xae')](_0x3cfc0d);return{'count':_0xafa15a[_0xc796('0x32')],'rows':_0xafa15a};})[_0xc796('0x23')](respondWithResult(_0x1eec7e,null))[_0xc796('0x3f')](function(_0x28a39d){console[_0xc796('0xa4')](_0xc796('0xaf')+_0x28a39d);var _0xe01a89=_0x89345a[_0xc796('0x2d')][_0xc796('0xb0')]?0x1f4:_0x28a39d[_0xc796('0xb1')]||0x1f4;logger[_0xc796('0xb2')](_0x28a39d[_0xc796('0x25')]);delete _0x28a39d[_0xc796('0x26')];if(_0xe01a89===0x191){_0xe01a89=0x190;}_0x1eec7e[_0xc796('0x1a')](_0xe01a89)[_0xc796('0x27')](_0x89345a['query'][_0xc796('0xb0')]?{'message':_0xc796('0xb3'),'statusCode':_0x28a39d['statusCode']}:_0x28a39d);});};function createFieldObject(_0x128c49,_0x495b53,_0x5f7906,_0x22e475,_0x20b8ed,_0xa590b6){return new Promise(function(_0x13cbea,_0xe15c7){var _0x1c387a={'id':_0x22e475,'name':_0x20b8ed,'custom':_0xa590b6};if(_0x5f7906===_0xc796('0xb4')){_0x1c387a['options']=[{'name':_0xc796('0xb5'),'value':_0xc796('0xb6')},{'name':_0xc796('0xb7'),'value':_0xc796('0xb8')}];_0x13cbea(_0x1c387a);}else{var _0x4fa5d4={'method':_0xc796('0xb9'),'uri':_0x128c49+_0xc796('0xba')+_0x22e475,'auth':_0x495b53,'json':!![]};return rp(_0x4fa5d4)['then'](function(_0x2f1a21){var _0x5547a9=[];if(_0x2f1a21[_0xc796('0xa3')][_0xc796('0x32')]>0x0){_0x2f1a21[_0xc796('0xa3')][_0xc796('0xa9')](function(_0x1498ec){if(_0x1498ec['inactive']===_0xc796('0xb8')){var _0x2e0e49={'name':_0x1498ec[_0xc796('0xab')],'value':_0x1498ec[_0xc796('0xbb')]};_0x5547a9['push'](_0x2e0e49);}});}_0x1c387a[_0xc796('0x3b')]=_0x5547a9;if(_0x1c387a[_0xc796('0x3b')][_0xc796('0x32')]>0x0){_0x13cbea(_0x1c387a);}else{if(_0xa590b6==![]){_0x13cbea();}else{_0x13cbea(_0x1c387a);}}});}});}
\ No newline at end of file
index 1b59448..aec0e97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x187d=['exports','define','ServicenowAccount','int_servicenow_accounts','lodash','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./intServicenowAccount.attributes'];(function(_0x1b5cc2,_0x4321c2){var _0x375f3b=function(_0x265ddb){while(--_0x265ddb){_0x1b5cc2['push'](_0x1b5cc2['shift']());}};_0x375f3b(++_0x4321c2);}(_0x187d,0x93));var _0xd187=function(_0xbb091,_0x3fe7ee){_0xbb091=_0xbb091-0x0;var _0x467a04=_0x187d[_0xbb091];return _0x467a04;};'use strict';var _=require(_0xd187('0x0'));var util=require('util');var logger=require(_0xd187('0x1'))(_0xd187('0x2'));var moment=require(_0xd187('0x3'));var BPromise=require(_0xd187('0x4'));var rp=require(_0xd187('0x5'));var fs=require('fs');var path=require(_0xd187('0x6'));var rimraf=require('rimraf');var config=require(_0xd187('0x7'));var attributes=require(_0xd187('0x8'));var integrations=require('../../components/integrations/configuration');module[_0xd187('0x9')]=function(_0x58ee7,_0x444a60){return _0x58ee7[_0xd187('0xa')](_0xd187('0xb'),attributes,{'tableName':_0xd187('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7c09=['rimraf','../../config/environment','./intServicenowAccount.attributes','define','ServicenowAccount','int_servicenow_accounts','util','../../config/logger','moment','bluebird','request-promise','path'];(function(_0x1ab8f8,_0x387f87){var _0x777a63=function(_0x3021e3){while(--_0x3021e3){_0x1ab8f8['push'](_0x1ab8f8['shift']());}};_0x777a63(++_0x387f87);}(_0x7c09,0x102));var _0x97c0=function(_0x20aad2,_0x5c8f54){_0x20aad2=_0x20aad2-0x0;var _0x55a9c3=_0x7c09[_0x20aad2];return _0x55a9c3;};'use strict';var _=require('lodash');var util=require(_0x97c0('0x0'));var logger=require(_0x97c0('0x1'))('api');var moment=require(_0x97c0('0x2'));var BPromise=require(_0x97c0('0x3'));var rp=require(_0x97c0('0x4'));var fs=require('fs');var path=require(_0x97c0('0x5'));var rimraf=require(_0x97c0('0x6'));var config=require(_0x97c0('0x7'));var attributes=require(_0x97c0('0x8'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x590368,_0x46fdd9){return _0x590368[_0x97c0('0x9')](_0x97c0('0xa'),attributes,{'tableName':_0x97c0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d147ad6..ef85221 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6c3=['where','attributes','include','map','model','ShowServicenowAccount','ServicenowAccount','find','then','lodash','moment','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','info','request\x20sent','debug','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ServicenowAccount,\x20%s,\x20%s','result','catch','GetServicenowAccount','findAll','options','raw'];(function(_0x380016,_0x178dd6){var _0x5c7ac0=function(_0xa8ddca){while(--_0xa8ddca){_0x380016['push'](_0x380016['shift']());}};_0x5c7ac0(++_0x178dd6);}(_0xf6c3,0x121));var _0x3f6c=function(_0xb704d2,_0x2d8ff7){_0xb704d2=_0xb704d2-0x0;var _0x321949=_0xf6c3[_0xb704d2];return _0x321949;};'use strict';var _=require(_0x3f6c('0x0'));var util=require('util');var moment=require(_0x3f6c('0x1'));var BPromise=require(_0x3f6c('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x3f6c('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x3f6c('0x4'));var logger=require(_0x3f6c('0x5'))(_0x3f6c('0x6'));var config=require(_0x3f6c('0x7'));var jayson=require(_0x3f6c('0x8'));var client=jayson['client'][_0x3f6c('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1f373f,_0x4e6896,_0x4ef339){return new BPromise(function(_0x18cdab,_0x3342f8){return client[_0x3f6c('0xa')](_0x1f373f,_0x4ef339)['then'](function(_0x43b84a){logger[_0x3f6c('0xb')]('ServicenowAccount,\x20%s,\x20%s',_0x4e6896,_0x3f6c('0xc'));logger[_0x3f6c('0xd')](_0x3f6c('0xe'),_0x4e6896,_0x3f6c('0xc'),JSON[_0x3f6c('0xf')](_0x43b84a));if(_0x43b84a['error']){if(_0x43b84a[_0x3f6c('0x10')][_0x3f6c('0x11')]===0x1f4){logger[_0x3f6c('0x10')]('ServicenowAccount,\x20%s,\x20%s',_0x4e6896,_0x43b84a[_0x3f6c('0x10')][_0x3f6c('0x12')]);return _0x3342f8(_0x43b84a[_0x3f6c('0x10')][_0x3f6c('0x12')]);}logger['error']('ServicenowAccount,\x20%s,\x20%s',_0x4e6896,_0x43b84a[_0x3f6c('0x10')][_0x3f6c('0x12')]);return _0x18cdab(_0x43b84a[_0x3f6c('0x10')][_0x3f6c('0x12')]);}else{logger[_0x3f6c('0xb')](_0x3f6c('0x13'),_0x4e6896,'request\x20sent');_0x18cdab(_0x43b84a[_0x3f6c('0x14')][_0x3f6c('0x12')]);}})[_0x3f6c('0x15')](function(_0x223403){logger[_0x3f6c('0x10')]('ServicenowAccount,\x20%s,\x20%s',_0x4e6896,_0x223403);_0x3342f8(_0x223403);});});}exports[_0x3f6c('0x16')]=function(_0x4f6c93){var _0x2201cc=this;return new Promise(function(_0x40a05a,_0x20a537){return db['ServicenowAccount'][_0x3f6c('0x17')]({'raw':_0x4f6c93[_0x3f6c('0x18')]?_0x4f6c93[_0x3f6c('0x18')][_0x3f6c('0x19')]===undefined?!![]:![]:!![],'where':_0x4f6c93[_0x3f6c('0x18')]?_0x4f6c93[_0x3f6c('0x18')][_0x3f6c('0x1a')]||null:null,'attributes':_0x4f6c93[_0x3f6c('0x18')]?_0x4f6c93[_0x3f6c('0x18')][_0x3f6c('0x1b')]||null:null,'limit':_0x4f6c93[_0x3f6c('0x18')]?_0x4f6c93[_0x3f6c('0x18')]['limit']||null:null,'include':_0x4f6c93[_0x3f6c('0x18')]?_0x4f6c93[_0x3f6c('0x18')][_0x3f6c('0x1c')]?_[_0x3f6c('0x1d')](_0x4f6c93[_0x3f6c('0x18')]['include'],function(_0xd05a9f){return{'model':db[_0xd05a9f['model']],'as':_0xd05a9f['as'],'attributes':_0xd05a9f[_0x3f6c('0x1b')],'include':_0xd05a9f[_0x3f6c('0x1c')]?_['map'](_0xd05a9f['include'],function(_0x16fbe7){return{'model':db[_0x16fbe7['model']],'as':_0x16fbe7['as'],'attributes':_0x16fbe7[_0x3f6c('0x1b')],'include':_0x16fbe7[_0x3f6c('0x1c')]?_[_0x3f6c('0x1d')](_0x16fbe7[_0x3f6c('0x1c')],function(_0x5855dd){return{'model':db[_0x5855dd[_0x3f6c('0x1e')]],'as':_0x5855dd['as'],'attributes':_0x5855dd[_0x3f6c('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x44b6c4){logger[_0x3f6c('0xb')]('GetServicenowAccount',_0x4f6c93);logger[_0x3f6c('0xd')](_0x3f6c('0x16'),_0x4f6c93,JSON[_0x3f6c('0xf')](_0x44b6c4));_0x40a05a(_0x44b6c4);})[_0x3f6c('0x15')](function(_0x4bfeae){logger[_0x3f6c('0x10')](_0x3f6c('0x16'),_0x4bfeae[_0x3f6c('0x12')],_0x4f6c93);_0x20a537(_0x2201cc[_0x3f6c('0x10')](0x1f4,_0x4bfeae[_0x3f6c('0x12')]));});});};exports[_0x3f6c('0x1f')]=function(_0x4032cc){var _0x362d81=this;return new Promise(function(_0x167903,_0x495b4a){return db[_0x3f6c('0x20')][_0x3f6c('0x21')]({'raw':_0x4032cc['options']?_0x4032cc['options'][_0x3f6c('0x19')]===undefined?!![]:![]:!![],'where':_0x4032cc[_0x3f6c('0x18')]?_0x4032cc['options'][_0x3f6c('0x1a')]||null:null,'attributes':_0x4032cc[_0x3f6c('0x18')]?_0x4032cc[_0x3f6c('0x18')][_0x3f6c('0x1b')]||null:null,'include':_0x4032cc['options']?_0x4032cc[_0x3f6c('0x18')]['include']?_[_0x3f6c('0x1d')](_0x4032cc[_0x3f6c('0x18')][_0x3f6c('0x1c')],function(_0x5a7876){return{'model':db[_0x5a7876[_0x3f6c('0x1e')]],'as':_0x5a7876['as'],'attributes':_0x5a7876['attributes'],'include':_0x5a7876['include']?_[_0x3f6c('0x1d')](_0x5a7876['include'],function(_0x3daf52){return{'model':db[_0x3daf52['model']],'as':_0x3daf52['as'],'attributes':_0x3daf52[_0x3f6c('0x1b')],'include':_0x3daf52[_0x3f6c('0x1c')]?_[_0x3f6c('0x1d')](_0x3daf52['include'],function(_0x597cfe){return{'model':db[_0x597cfe[_0x3f6c('0x1e')]],'as':_0x597cfe['as'],'attributes':_0x597cfe[_0x3f6c('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x3f6c('0x22')](function(_0x31bd46){logger[_0x3f6c('0xb')]('ShowServicenowAccount',_0x4032cc);logger['debug'](_0x3f6c('0x1f'),_0x4032cc,JSON[_0x3f6c('0xf')](_0x31bd46));_0x167903(_0x31bd46);})[_0x3f6c('0x15')](function(_0x432bca){logger[_0x3f6c('0x10')]('ShowServicenowAccount',_0x432bca[_0x3f6c('0x12')],_0x4032cc);_0x495b4a(_0x362d81[_0x3f6c('0x10')](0x1f4,_0x432bca[_0x3f6c('0x12')]));});});};
\ No newline at end of file
+var _0xea5f=['model','map','debug','ShowServicenowAccount','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','http','then','info','request\x20sent','ServicenowAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','ServicenowAccount,\x20%s,\x20%s','message','result','catch','GetServicenowAccount','ServicenowAccount','findAll','options','raw','where','attributes','limit','include'];(function(_0x456907,_0x2bbabc){var _0x2a5e93=function(_0x5cab7c){while(--_0x5cab7c){_0x456907['push'](_0x456907['shift']());}};_0x2a5e93(++_0x2bbabc);}(_0xea5f,0x114));var _0xfea5=function(_0x3c8e9a,_0x384306){_0x3c8e9a=_0x3c8e9a-0x0;var _0x2d4c57=_0xea5f[_0x3c8e9a];return _0x2d4c57;};'use strict';var _=require(_0xfea5('0x0'));var util=require('util');var moment=require(_0xfea5('0x1'));var BPromise=require('bluebird');var rs=require(_0xfea5('0x2'));var fs=require('fs');var Redis=require(_0xfea5('0x3'));var db=require(_0xfea5('0x4'))['db'];var utils=require(_0xfea5('0x5'));var logger=require(_0xfea5('0x6'))(_0xfea5('0x7'));var config=require(_0xfea5('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xfea5('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2ee16b,_0x223ab3,_0x111fa9){return new BPromise(function(_0x2f1d02,_0xcc06e0){return client['request'](_0x2ee16b,_0x111fa9)[_0xfea5('0xa')](function(_0x204afb){logger[_0xfea5('0xb')]('ServicenowAccount,\x20%s,\x20%s',_0x223ab3,_0xfea5('0xc'));logger['debug'](_0xfea5('0xd'),_0x223ab3,_0xfea5('0xc'),JSON[_0xfea5('0xe')](_0x204afb));if(_0x204afb[_0xfea5('0xf')]){if(_0x204afb[_0xfea5('0xf')][_0xfea5('0x10')]===0x1f4){logger[_0xfea5('0xf')](_0xfea5('0x11'),_0x223ab3,_0x204afb['error'][_0xfea5('0x12')]);return _0xcc06e0(_0x204afb[_0xfea5('0xf')][_0xfea5('0x12')]);}logger[_0xfea5('0xf')](_0xfea5('0x11'),_0x223ab3,_0x204afb[_0xfea5('0xf')][_0xfea5('0x12')]);return _0x2f1d02(_0x204afb['error'][_0xfea5('0x12')]);}else{logger[_0xfea5('0xb')](_0xfea5('0x11'),_0x223ab3,_0xfea5('0xc'));_0x2f1d02(_0x204afb[_0xfea5('0x13')][_0xfea5('0x12')]);}})[_0xfea5('0x14')](function(_0x530516){logger['error'](_0xfea5('0x11'),_0x223ab3,_0x530516);_0xcc06e0(_0x530516);});});}exports[_0xfea5('0x15')]=function(_0x2dfffd){var _0x1a8b8a=this;return new Promise(function(_0x3df3fb,_0x4e7872){return db[_0xfea5('0x16')][_0xfea5('0x17')]({'raw':_0x2dfffd[_0xfea5('0x18')]?_0x2dfffd[_0xfea5('0x18')][_0xfea5('0x19')]===undefined?!![]:![]:!![],'where':_0x2dfffd[_0xfea5('0x18')]?_0x2dfffd['options'][_0xfea5('0x1a')]||null:null,'attributes':_0x2dfffd['options']?_0x2dfffd[_0xfea5('0x18')][_0xfea5('0x1b')]||null:null,'limit':_0x2dfffd[_0xfea5('0x18')]?_0x2dfffd[_0xfea5('0x18')][_0xfea5('0x1c')]||null:null,'include':_0x2dfffd[_0xfea5('0x18')]?_0x2dfffd[_0xfea5('0x18')]['include']?_['map'](_0x2dfffd[_0xfea5('0x18')][_0xfea5('0x1d')],function(_0x2c0526){return{'model':db[_0x2c0526[_0xfea5('0x1e')]],'as':_0x2c0526['as'],'attributes':_0x2c0526[_0xfea5('0x1b')],'include':_0x2c0526[_0xfea5('0x1d')]?_[_0xfea5('0x1f')](_0x2c0526['include'],function(_0xe556fd){return{'model':db[_0xe556fd['model']],'as':_0xe556fd['as'],'attributes':_0xe556fd[_0xfea5('0x1b')],'include':_0xe556fd[_0xfea5('0x1d')]?_[_0xfea5('0x1f')](_0xe556fd['include'],function(_0x54dcbf){return{'model':db[_0x54dcbf[_0xfea5('0x1e')]],'as':_0x54dcbf['as'],'attributes':_0x54dcbf[_0xfea5('0x1b')]};}):[]};}):[]};}):[]:[]})[_0xfea5('0xa')](function(_0x540d14){logger[_0xfea5('0xb')](_0xfea5('0x15'),_0x2dfffd);logger[_0xfea5('0x20')](_0xfea5('0x15'),_0x2dfffd,JSON[_0xfea5('0xe')](_0x540d14));_0x3df3fb(_0x540d14);})[_0xfea5('0x14')](function(_0x29acf1){logger[_0xfea5('0xf')](_0xfea5('0x15'),_0x29acf1[_0xfea5('0x12')],_0x2dfffd);_0x4e7872(_0x1a8b8a['error'](0x1f4,_0x29acf1['message']));});});};exports['ShowServicenowAccount']=function(_0x23a0ea){var _0x44c6e2=this;return new Promise(function(_0x3b9ed2,_0x1022ac){return db['ServicenowAccount']['find']({'raw':_0x23a0ea[_0xfea5('0x18')]?_0x23a0ea[_0xfea5('0x18')][_0xfea5('0x19')]===undefined?!![]:![]:!![],'where':_0x23a0ea[_0xfea5('0x18')]?_0x23a0ea[_0xfea5('0x18')][_0xfea5('0x1a')]||null:null,'attributes':_0x23a0ea[_0xfea5('0x18')]?_0x23a0ea[_0xfea5('0x18')][_0xfea5('0x1b')]||null:null,'include':_0x23a0ea[_0xfea5('0x18')]?_0x23a0ea['options']['include']?_[_0xfea5('0x1f')](_0x23a0ea[_0xfea5('0x18')][_0xfea5('0x1d')],function(_0x459be8){return{'model':db[_0x459be8[_0xfea5('0x1e')]],'as':_0x459be8['as'],'attributes':_0x459be8[_0xfea5('0x1b')],'include':_0x459be8[_0xfea5('0x1d')]?_[_0xfea5('0x1f')](_0x459be8['include'],function(_0x1b2b20){return{'model':db[_0x1b2b20[_0xfea5('0x1e')]],'as':_0x1b2b20['as'],'attributes':_0x1b2b20[_0xfea5('0x1b')],'include':_0x1b2b20[_0xfea5('0x1d')]?_[_0xfea5('0x1f')](_0x1b2b20[_0xfea5('0x1d')],function(_0x39f104){return{'model':db[_0x39f104[_0xfea5('0x1e')]],'as':_0x39f104['as'],'attributes':_0x39f104['attributes']};}):[]};}):[]};}):[]:[]})[_0xfea5('0xa')](function(_0xf994a7){logger[_0xfea5('0xb')](_0xfea5('0x21'),_0x23a0ea);logger[_0xfea5('0x20')](_0xfea5('0x21'),_0x23a0ea,JSON[_0xfea5('0xe')](_0xf994a7));_0x3b9ed2(_0xf994a7);})[_0xfea5('0x14')](function(_0x441ba5){logger[_0xfea5('0xf')](_0xfea5('0x21'),_0x441ba5[_0xfea5('0x12')],_0x23a0ea);_0x1022ac(_0x44c6e2[_0xfea5('0xf')](0x1f4,_0x441ba5[_0xfea5('0x12')]));});});};
\ No newline at end of file
index de872ec..5208a06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d95=['destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','get','isAuthenticated','index','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','getDescriptions','post','create','update','delete','/:id'];(function(_0x476fd6,_0x1bfa71){var _0x4d9318=function(_0x3c6868){while(--_0x3c6868){_0x476fd6['push'](_0x476fd6['shift']());}};_0x4d9318(++_0x1bfa71);}(_0x6d95,0x72));var _0x56d9=function(_0x5046f0,_0x5165fd){_0x5046f0=_0x5046f0-0x0;var _0x34049c=_0x6d95[_0x5046f0];return _0x34049c;};'use strict';var multer=require(_0x56d9('0x0'));var util=require(_0x56d9('0x1'));var path=require(_0x56d9('0x2'));var timeout=require(_0x56d9('0x3'));var express=require(_0x56d9('0x4'));var router=express[_0x56d9('0x5')]();var fs_extra=require(_0x56d9('0x6'));var auth=require(_0x56d9('0x7'));var interaction=require(_0x56d9('0x8'));var config=require(_0x56d9('0x9'));var controller=require(_0x56d9('0xa'));router[_0x56d9('0xb')]('/',auth[_0x56d9('0xc')](),controller[_0x56d9('0xd')]);router[_0x56d9('0xb')]('/:id',auth[_0x56d9('0xc')](),controller[_0x56d9('0xe')]);router[_0x56d9('0xb')](_0x56d9('0xf'),auth[_0x56d9('0xc')](),controller[_0x56d9('0x10')]);router[_0x56d9('0xb')](_0x56d9('0x11'),auth[_0x56d9('0xc')](),controller[_0x56d9('0x12')]);router[_0x56d9('0xb')](_0x56d9('0x13'),auth[_0x56d9('0xc')](),controller[_0x56d9('0x14')]);router[_0x56d9('0x15')]('/',auth[_0x56d9('0xc')](),controller[_0x56d9('0x16')]);router['put']('/:id',auth[_0x56d9('0xc')](),controller[_0x56d9('0x17')]);router[_0x56d9('0x18')](_0x56d9('0x19'),auth[_0x56d9('0xc')](),controller[_0x56d9('0x1a')]);module[_0x56d9('0x1b')]=router;
\ No newline at end of file
+var _0xe0b9=['show','getFields','getSubjects','/:id/descriptions','post','create','put','delete','destroy','exports','multer','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./intServicenowConfiguration.controller','isAuthenticated','get','/:id'];(function(_0x273c52,_0x244499){var _0x2c29b1=function(_0x54c3bd){while(--_0x54c3bd){_0x273c52['push'](_0x273c52['shift']());}};_0x2c29b1(++_0x244499);}(_0xe0b9,0x1c2));var _0x9e0b=function(_0x53ad58,_0x3fb489){_0x53ad58=_0x53ad58-0x0;var _0x554b03=_0xe0b9[_0x53ad58];return _0x554b03;};'use strict';var multer=require(_0x9e0b('0x0'));var util=require('util');var path=require(_0x9e0b('0x1'));var timeout=require(_0x9e0b('0x2'));var express=require('express');var router=express[_0x9e0b('0x3')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x9e0b('0x4'));var config=require(_0x9e0b('0x5'));var controller=require(_0x9e0b('0x6'));router['get']('/',auth[_0x9e0b('0x7')](),controller['index']);router[_0x9e0b('0x8')](_0x9e0b('0x9'),auth[_0x9e0b('0x7')](),controller[_0x9e0b('0xa')]);router[_0x9e0b('0x8')]('/:id/fields',auth[_0x9e0b('0x7')](),controller[_0x9e0b('0xb')]);router[_0x9e0b('0x8')]('/:id/subjects',auth[_0x9e0b('0x7')](),controller[_0x9e0b('0xc')]);router['get'](_0x9e0b('0xd'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0x9e0b('0xe')]('/',auth['isAuthenticated'](),controller[_0x9e0b('0xf')]);router[_0x9e0b('0x10')](_0x9e0b('0x9'),auth[_0x9e0b('0x7')](),controller['update']);router[_0x9e0b('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x9e0b('0x12')]);module[_0x9e0b('0x13')]=router;
\ No newline at end of file
index 59b2d29..eb46295 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x73b7=['STRING','exports'];(function(_0x18cac4,_0x57a4d5){var _0x2227c6=function(_0x72934d){while(--_0x72934d){_0x18cac4['push'](_0x18cac4['shift']());}};_0x2227c6(++_0x57a4d5);}(_0x73b7,0xcd));var _0x773b=function(_0x4e0b4f,_0x34b2af){_0x4e0b4f=_0x4e0b4f-0x0;var _0x1be0bf=_0x73b7[_0x4e0b4f];return _0x1be0bf;};'use strict';var Sequelize=require('sequelize');module[_0x773b('0x0')]={'name':{'type':Sequelize[_0x773b('0x1')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x8f10=['STRING','sequelize'];(function(_0x38ff1e,_0x3b9385){var _0x3755d4=function(_0x6e6692){while(--_0x6e6692){_0x38ff1e['push'](_0x38ff1e['shift']());}};_0x3755d4(++_0x3b9385);}(_0x8f10,0x10d));var _0x08f1=function(_0x1e12f8,_0x5ccb8a){_0x1e12f8=_0x1e12f8-0x0;var _0x3de138=_0x8f10[_0x1e12f8];return _0x3de138;};'use strict';var Sequelize=require(_0x08f1('0x0'));module['exports']={'name':{'type':Sequelize[_0x08f1('0x1')]},'description':{'type':Sequelize[_0x08f1('0x1')]}};
\ No newline at end of file
index f83192c..8201c2a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe28d=['path','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/utils','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','then','destroy','error','stack','name','index','map','ServicenowConfiguration','rawAttributes','fieldName','type','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','VIRTUAL','filter','merge','options','includeAll','include','findAll','show','params','find','catch','create','update','body','ServicenowField','getFields','getSubjects','getDescriptions','findOne','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x64e55,_0x2cd630){var _0x33dd01=function(_0x52abe0){while(--_0x52abe0){_0x64e55['push'](_0x64e55['shift']());}};_0x33dd01(++_0x2cd630);}(_0xe28d,0x139));var _0xde28=function(_0x43776a,_0x4eb74c){_0x43776a=_0x43776a-0x0;var _0x18eb8f=_0xe28d[_0x43776a];return _0x18eb8f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xde28('0x0'));var zipdir=require(_0xde28('0x1'));var jsonpatch=require(_0xde28('0x2'));var rp=require(_0xde28('0x3'));var moment=require(_0xde28('0x4'));var BPromise=require(_0xde28('0x5'));var Mustache=require(_0xde28('0x6'));var util=require('util');var path=require(_0xde28('0x7'));var sox=require(_0xde28('0x8'));var csv=require(_0xde28('0x9'));var ejs=require(_0xde28('0xa'));var fs=require('fs');var fs_extra=require(_0xde28('0xb'));var _=require('lodash');var squel=require(_0xde28('0xc'));var crypto=require(_0xde28('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xde28('0xe'));var toCsv=require('to-csv');var querystring=require(_0xde28('0xf'));var Papa=require(_0xde28('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xde28('0x11'));var as=require(_0xde28('0x12'));var hardwareService=require(_0xde28('0x13'));var logger=require(_0xde28('0x14'))(_0xde28('0x15'));var utils=require(_0xde28('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xde28('0x17'))['db'];function respondWithStatusCode(_0x11f5c2,_0x166be9){_0x166be9=_0x166be9||0xcc;return function(_0x805675){if(_0x805675){return _0x11f5c2[_0xde28('0x18')](_0x166be9);}return _0x11f5c2[_0xde28('0x19')](_0x166be9)[_0xde28('0x1a')]();};}function respondWithResult(_0x2c358d,_0x3eb489){_0x3eb489=_0x3eb489||0xc8;return function(_0x300c87){if(_0x300c87){return _0x2c358d[_0xde28('0x19')](_0x3eb489)['json'](_0x300c87);}};}function respondWithFilteredResult(_0x427d4f,_0x545ba5){return function(_0x47fc8d){if(_0x47fc8d){var _0x280307=typeof _0x545ba5[_0xde28('0x1b')]===_0xde28('0x1c')&&typeof _0x545ba5[_0xde28('0x1d')]===_0xde28('0x1c');var _0x29bd3c=_0x47fc8d['count'];var _0x1c626f=_0x280307?0x0:_0x545ba5[_0xde28('0x1b')];var _0x51ebed=_0x280307?_0x47fc8d[_0xde28('0x1e')]:_0x545ba5[_0xde28('0x1b')]+_0x545ba5[_0xde28('0x1d')];var _0x1396d2;if(_0x51ebed>=_0x29bd3c){_0x51ebed=_0x29bd3c;_0x1396d2=0xc8;}else{_0x1396d2=0xce;}_0x427d4f['status'](_0x1396d2);return _0x427d4f[_0xde28('0x1f')]('Content-Range',_0x1c626f+'-'+_0x51ebed+'/'+_0x29bd3c)[_0xde28('0x20')](_0x47fc8d);}return null;};}function patchUpdates(_0x25b82d){return function(_0x5c2a88){try{jsonpatch[_0xde28('0x21')](_0x5c2a88,_0x25b82d,!![]);}catch(_0x3cad34){return BPromise[_0xde28('0x22')](_0x3cad34);}return _0x5c2a88[_0xde28('0x23')]();};}function saveUpdates(_0x153888,_0x5ea635){return function(_0x57c82b){if(_0x57c82b){return _0x57c82b['update'](_0x153888)[_0xde28('0x24')](function(_0x239aec){return _0x239aec;});}return null;};}function removeEntity(_0x25618e,_0x34a757){return function(_0x5188bc){if(_0x5188bc){return _0x5188bc[_0xde28('0x25')]()['then'](function(){_0x25618e[_0xde28('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0xfa73ff,_0x25bb59){return function(_0x531f74){if(!_0x531f74){_0xfa73ff[_0xde28('0x18')](0x194);}return _0x531f74;};}function handleError(_0x433659,_0x43bb7e){_0x43bb7e=_0x43bb7e||0x1f4;return function(_0x59c6a1){logger[_0xde28('0x26')](_0x59c6a1[_0xde28('0x27')]);if(_0x59c6a1[_0xde28('0x28')]){delete _0x59c6a1['name'];}_0x433659[_0xde28('0x19')](_0x43bb7e)['send'](_0x59c6a1);};}exports[_0xde28('0x29')]=function(_0x39a988,_0x5c82e8){var _0x1655d4={},_0xc896b={},_0x111c62={'count':0x0,'rows':[]};var _0x47641f=_[_0xde28('0x2a')](db[_0xde28('0x2b')][_0xde28('0x2c')],function(_0x270eae){return{'name':_0x270eae[_0xde28('0x2d')],'type':_0x270eae[_0xde28('0x2e')]['key']};});_0xc896b[_0xde28('0x2f')]=_['map'](_0x47641f,_0xde28('0x28'));_0xc896b[_0xde28('0x30')]=_[_0xde28('0x31')](_0x39a988[_0xde28('0x30')]);_0xc896b['filters']=_[_0xde28('0x32')](_0xc896b[_0xde28('0x2f')],_0xc896b[_0xde28('0x30')]);_0x1655d4[_0xde28('0x33')]=_[_0xde28('0x32')](_0xc896b[_0xde28('0x2f')],qs[_0xde28('0x34')](_0x39a988[_0xde28('0x30')][_0xde28('0x34')]));_0x1655d4[_0xde28('0x33')]=_0x1655d4[_0xde28('0x33')][_0xde28('0x35')]?_0x1655d4[_0xde28('0x33')]:_0xc896b['model'];if(!_0x39a988[_0xde28('0x30')][_0xde28('0x36')](_0xde28('0x37'))){_0x1655d4[_0xde28('0x1d')]=qs[_0xde28('0x1d')](_0x39a988[_0xde28('0x30')]['limit']);_0x1655d4[_0xde28('0x1b')]=qs[_0xde28('0x1b')](_0x39a988[_0xde28('0x30')][_0xde28('0x1b')]);}_0x1655d4[_0xde28('0x38')]=qs[_0xde28('0x39')](_0x39a988['query']['sort']);_0x1655d4[_0xde28('0x3a')]=qs[_0xde28('0x3b')](_[_0xde28('0x3c')](_0x39a988[_0xde28('0x30')],_0xc896b[_0xde28('0x3b')]),_0x47641f);if(_0x39a988[_0xde28('0x30')]['filter']){_0x1655d4['where']=_['merge'](_0x1655d4[_0xde28('0x3a')],{'$or':_[_0xde28('0x2a')](_0x47641f,function(_0x23c204){if(_0x23c204[_0xde28('0x2e')]!==_0xde28('0x3d')){var _0x4b0915={};_0x4b0915[_0x23c204[_0xde28('0x28')]]={'$like':'%'+_0x39a988[_0xde28('0x30')][_0xde28('0x3e')]+'%'};return _0x4b0915;}})});}_0x1655d4=_[_0xde28('0x3f')]({},_0x1655d4,_0x39a988[_0xde28('0x40')]);var _0x2fa45b={'where':_0x1655d4[_0xde28('0x3a')]};return db['ServicenowConfiguration'][_0xde28('0x1e')](_0x2fa45b)[_0xde28('0x24')](function(_0x3733c7){_0x111c62[_0xde28('0x1e')]=_0x3733c7;if(_0x39a988['query'][_0xde28('0x41')]){_0x1655d4[_0xde28('0x42')]=[{'all':!![]}];}return db[_0xde28('0x2b')][_0xde28('0x43')](_0x1655d4);})[_0xde28('0x24')](function(_0x235503){_0x111c62['rows']=_0x235503;return _0x111c62;})[_0xde28('0x24')](respondWithFilteredResult(_0x5c82e8,_0x1655d4))['catch'](handleError(_0x5c82e8,null));};exports[_0xde28('0x44')]=function(_0x87e9c5,_0x4d9a8f){var _0x3df679={'raw':![],'where':{'id':_0x87e9c5[_0xde28('0x45')]['id']}},_0x36747c={};_0x36747c['model']=_[_0xde28('0x31')](db[_0xde28('0x2b')]['rawAttributes']);_0x36747c['query']=_[_0xde28('0x31')](_0x87e9c5['query']);_0x36747c[_0xde28('0x3b')]=_[_0xde28('0x32')](_0x36747c[_0xde28('0x2f')],_0x36747c['query']);_0x3df679['attributes']=_['intersection'](_0x36747c[_0xde28('0x2f')],qs[_0xde28('0x34')](_0x87e9c5[_0xde28('0x30')][_0xde28('0x34')]));_0x3df679[_0xde28('0x33')]=_0x3df679[_0xde28('0x33')][_0xde28('0x35')]?_0x3df679[_0xde28('0x33')]:_0x36747c[_0xde28('0x2f')];if(_0x87e9c5[_0xde28('0x30')]['includeAll']){_0x3df679[_0xde28('0x42')]=[{'all':!![]}];}_0x3df679=_[_0xde28('0x3f')]({},_0x3df679,_0x87e9c5[_0xde28('0x40')]);return db[_0xde28('0x2b')][_0xde28('0x46')](_0x3df679)[_0xde28('0x24')](handleEntityNotFound(_0x4d9a8f,null))[_0xde28('0x24')](respondWithResult(_0x4d9a8f,null))[_0xde28('0x47')](handleError(_0x4d9a8f,null));};exports[_0xde28('0x48')]=function(_0x3eb4e1,_0x5508a2){return db[_0xde28('0x2b')][_0xde28('0x48')](_0x3eb4e1['body'],{})['then'](respondWithResult(_0x5508a2,0xc9))[_0xde28('0x47')](handleError(_0x5508a2,null));};exports[_0xde28('0x49')]=function(_0x495391,_0x187658){if(_0x495391[_0xde28('0x4a')]['id']){delete _0x495391[_0xde28('0x4a')]['id'];}return db['ServicenowConfiguration'][_0xde28('0x46')]({'where':{'id':_0x495391['params']['id']}})['then'](handleEntityNotFound(_0x187658,null))['then'](saveUpdates(_0x495391[_0xde28('0x4a')],null))[_0xde28('0x24')](respondWithResult(_0x187658,null))['catch'](handleError(_0x187658,null));};exports['destroy']=function(_0x14cf06,_0x3bb33b){return db['ServicenowConfiguration'][_0xde28('0x46')]({'where':{'id':_0x14cf06[_0xde28('0x45')]['id']}})[_0xde28('0x24')](handleEntityNotFound(_0x3bb33b,null))[_0xde28('0x24')](removeEntity(_0x3bb33b,null))[_0xde28('0x47')](handleError(_0x3bb33b,null));};exports['getFields']=function(_0x1bbf58,_0x315ac9,_0x5da8ff){var _0x56a804={};var _0x262831={};var _0x323572;var _0x47e21c;return db[_0xde28('0x2b')]['findOne']({'where':{'id':_0x1bbf58['params']['id']}})[_0xde28('0x24')](handleEntityNotFound(_0x315ac9,null))[_0xde28('0x24')](function(_0x395495){if(_0x395495){_0x323572=_0x395495;_0x262831[_0xde28('0x2f')]=_[_0xde28('0x31')](db[_0xde28('0x4b')][_0xde28('0x2c')]);_0x262831[_0xde28('0x30')]=_[_0xde28('0x31')](_0x1bbf58[_0xde28('0x30')]);_0x262831[_0xde28('0x3b')]=_[_0xde28('0x32')](_0x262831[_0xde28('0x2f')],_0x262831[_0xde28('0x30')]);_0x56a804[_0xde28('0x33')]=_[_0xde28('0x32')](_0x262831['model'],qs['fields'](_0x1bbf58['query'][_0xde28('0x34')]));_0x56a804[_0xde28('0x33')]=_0x56a804[_0xde28('0x33')][_0xde28('0x35')]?_0x56a804[_0xde28('0x33')]:_0x262831[_0xde28('0x2f')];_0x56a804['order']=qs[_0xde28('0x39')](_0x1bbf58[_0xde28('0x30')][_0xde28('0x39')]);_0x56a804[_0xde28('0x3a')]=qs[_0xde28('0x3b')](_[_0xde28('0x3c')](_0x1bbf58[_0xde28('0x30')],_0x262831[_0xde28('0x3b')]));if(_0x1bbf58['query'][_0xde28('0x3e')]){_0x56a804['where']=_[_0xde28('0x3f')](_0x56a804[_0xde28('0x3a')],{'$or':_[_0xde28('0x2a')](_0x56a804['attributes'],function(_0x338b2c){var _0x178d25={};_0x178d25[_0x338b2c]={'$like':'%'+_0x1bbf58[_0xde28('0x30')][_0xde28('0x3e')]+'%'};return _0x178d25;})});}_0x56a804=_['merge']({},_0x56a804,_0x1bbf58['options']);return _0x323572[_0xde28('0x4c')](_0x56a804);}})[_0xde28('0x24')](function(_0x83d894){if(_0x83d894){_0x47e21c=_0x83d894[_0xde28('0x35')];if(!_0x1bbf58[_0xde28('0x30')][_0xde28('0x36')](_0xde28('0x37'))){_0x56a804[_0xde28('0x1d')]=qs[_0xde28('0x1d')](_0x1bbf58[_0xde28('0x30')]['limit']);_0x56a804[_0xde28('0x1b')]=qs[_0xde28('0x1b')](_0x1bbf58['query'][_0xde28('0x1b')]);}return _0x323572[_0xde28('0x4c')](_0x56a804);}})[_0xde28('0x24')](function(_0x3b8f2d){if(_0x3b8f2d){return _0x3b8f2d?{'count':_0x47e21c,'rows':_0x3b8f2d}:null;}})[_0xde28('0x24')](respondWithResult(_0x315ac9,null))[_0xde28('0x47')](handleError(_0x315ac9,null));};exports[_0xde28('0x4d')]=function(_0x3965d1,_0x23e7ca,_0xdb5f90){var _0x3b4cde={};var _0x2297ee={};var _0x342fe9;var _0x226766;return db['ServicenowConfiguration']['findOne']({'where':{'id':_0x3965d1[_0xde28('0x45')]['id']}})[_0xde28('0x24')](handleEntityNotFound(_0x23e7ca,null))[_0xde28('0x24')](function(_0x5d2600){if(_0x5d2600){_0x342fe9=_0x5d2600;_0x2297ee['model']=_[_0xde28('0x31')](db[_0xde28('0x4b')][_0xde28('0x2c')]);_0x2297ee[_0xde28('0x30')]=_[_0xde28('0x31')](_0x3965d1[_0xde28('0x30')]);_0x2297ee[_0xde28('0x3b')]=_[_0xde28('0x32')](_0x2297ee[_0xde28('0x2f')],_0x2297ee[_0xde28('0x30')]);_0x3b4cde[_0xde28('0x33')]=_[_0xde28('0x32')](_0x2297ee[_0xde28('0x2f')],qs['fields'](_0x3965d1[_0xde28('0x30')]['fields']));_0x3b4cde[_0xde28('0x33')]=_0x3b4cde[_0xde28('0x33')][_0xde28('0x35')]?_0x3b4cde['attributes']:_0x2297ee['model'];_0x3b4cde[_0xde28('0x38')]=qs[_0xde28('0x39')](_0x3965d1['query'][_0xde28('0x39')]);_0x3b4cde[_0xde28('0x3a')]=qs['filters'](_[_0xde28('0x3c')](_0x3965d1['query'],_0x2297ee[_0xde28('0x3b')]));if(_0x3965d1[_0xde28('0x30')][_0xde28('0x3e')]){_0x3b4cde[_0xde28('0x3a')]=_[_0xde28('0x3f')](_0x3b4cde[_0xde28('0x3a')],{'$or':_[_0xde28('0x2a')](_0x3b4cde['attributes'],function(_0x552243){var _0x2b5a53={};_0x2b5a53[_0x552243]={'$like':'%'+_0x3965d1[_0xde28('0x30')][_0xde28('0x3e')]+'%'};return _0x2b5a53;})});}_0x3b4cde=_[_0xde28('0x3f')]({},_0x3b4cde,_0x3965d1[_0xde28('0x40')]);return _0x342fe9[_0xde28('0x4d')](_0x3b4cde);}})['then'](function(_0x39c0e4){if(_0x39c0e4){_0x226766=_0x39c0e4[_0xde28('0x35')];if(!_0x3965d1[_0xde28('0x30')]['hasOwnProperty']('nolimit')){_0x3b4cde['limit']=qs[_0xde28('0x1d')](_0x3965d1['query'][_0xde28('0x1d')]);_0x3b4cde[_0xde28('0x1b')]=qs['offset'](_0x3965d1['query']['offset']);}return _0x342fe9[_0xde28('0x4d')](_0x3b4cde);}})[_0xde28('0x24')](function(_0xc8c7b6){if(_0xc8c7b6){return _0xc8c7b6?{'count':_0x226766,'rows':_0xc8c7b6}:null;}})[_0xde28('0x24')](respondWithResult(_0x23e7ca,null))[_0xde28('0x47')](handleError(_0x23e7ca,null));};exports[_0xde28('0x4e')]=function(_0x6e07c6,_0x31929e,_0xa2e6c7){var _0x16be37={};var _0x2e0578={};var _0x335b57;var _0x2ee791;return db[_0xde28('0x2b')][_0xde28('0x4f')]({'where':{'id':_0x6e07c6[_0xde28('0x45')]['id']}})['then'](handleEntityNotFound(_0x31929e,null))[_0xde28('0x24')](function(_0x10e109){if(_0x10e109){_0x335b57=_0x10e109;_0x2e0578['model']=_[_0xde28('0x31')](db[_0xde28('0x4b')]['rawAttributes']);_0x2e0578['query']=_[_0xde28('0x31')](_0x6e07c6[_0xde28('0x30')]);_0x2e0578[_0xde28('0x3b')]=_[_0xde28('0x32')](_0x2e0578['model'],_0x2e0578['query']);_0x16be37['attributes']=_['intersection'](_0x2e0578[_0xde28('0x2f')],qs[_0xde28('0x34')](_0x6e07c6['query'][_0xde28('0x34')]));_0x16be37[_0xde28('0x33')]=_0x16be37['attributes']['length']?_0x16be37[_0xde28('0x33')]:_0x2e0578[_0xde28('0x2f')];_0x16be37[_0xde28('0x38')]=qs[_0xde28('0x39')](_0x6e07c6['query']['sort']);_0x16be37['where']=qs[_0xde28('0x3b')](_[_0xde28('0x3c')](_0x6e07c6[_0xde28('0x30')],_0x2e0578[_0xde28('0x3b')]));if(_0x6e07c6[_0xde28('0x30')][_0xde28('0x3e')]){_0x16be37[_0xde28('0x3a')]=_[_0xde28('0x3f')](_0x16be37[_0xde28('0x3a')],{'$or':_[_0xde28('0x2a')](_0x16be37[_0xde28('0x33')],function(_0x1eefdb){var _0x443818={};_0x443818[_0x1eefdb]={'$like':'%'+_0x6e07c6[_0xde28('0x30')][_0xde28('0x3e')]+'%'};return _0x443818;})});}_0x16be37=_[_0xde28('0x3f')]({},_0x16be37,_0x6e07c6[_0xde28('0x40')]);return _0x335b57['getDescriptions'](_0x16be37);}})['then'](function(_0x353933){if(_0x353933){_0x2ee791=_0x353933['length'];if(!_0x6e07c6[_0xde28('0x30')][_0xde28('0x36')](_0xde28('0x37'))){_0x16be37[_0xde28('0x1d')]=qs[_0xde28('0x1d')](_0x6e07c6[_0xde28('0x30')][_0xde28('0x1d')]);_0x16be37[_0xde28('0x1b')]=qs[_0xde28('0x1b')](_0x6e07c6[_0xde28('0x30')][_0xde28('0x1b')]);}return _0x335b57[_0xde28('0x4e')](_0x16be37);}})['then'](function(_0xcf0b7d){if(_0xcf0b7d){return _0xcf0b7d?{'count':_0x2ee791,'rows':_0xcf0b7d}:null;}})[_0xde28('0x24')](respondWithResult(_0x31929e,null))[_0xde28('0x47')](handleError(_0x31929e,null));};
\ No newline at end of file
+var _0x8577=['../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','json','limit','undefined','count','offset','apply','reject','save','destroy','end','error','name','send','map','ServicenowConfiguration','fieldName','type','key','model','keys','filters','intersection','query','attributes','fields','length','nolimit','order','pick','where','VIRTUAL','filter','merge','options','then','include','rows','catch','show','rawAttributes','create','body','find','params','getFields','findOne','sort','getSubjects','ServicenowField','hasOwnProperty','getDescriptions','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','desk.js','querystring','papaparse','ioredis','../../components/auth/service'];(function(_0x15833e,_0x58a046){var _0x5c4745=function(_0x2d1a2c){while(--_0x2d1a2c){_0x15833e['push'](_0x15833e['shift']());}};_0x5c4745(++_0x58a046);}(_0x8577,0x1be));var _0x7857=function(_0x4f4cea,_0x78d06c){_0x4f4cea=_0x4f4cea-0x0;var _0x1d00bb=_0x8577[_0x4f4cea];return _0x1d00bb;};'use strict';var emlformat=require(_0x7857('0x0'));var rimraf=require(_0x7857('0x1'));var zipdir=require(_0x7857('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x7857('0x3'));var moment=require('moment');var BPromise=require(_0x7857('0x4'));var Mustache=require(_0x7857('0x5'));var util=require(_0x7857('0x6'));var path=require(_0x7857('0x7'));var sox=require(_0x7857('0x8'));var csv=require(_0x7857('0x9'));var ejs=require(_0x7857('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x7857('0xb'));var toCsv=require(_0x7857('0x9'));var querystring=require(_0x7857('0xc'));var Papa=require(_0x7857('0xd'));var Redis=require(_0x7857('0xe'));var authService=require(_0x7857('0xf'));var qs=require(_0x7857('0x10'));var as=require(_0x7857('0x11'));var hardwareService=require(_0x7857('0x12'));var logger=require(_0x7857('0x13'))(_0x7857('0x14'));var utils=require(_0x7857('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x7857('0x16'));var db=require(_0x7857('0x17'))['db'];function respondWithStatusCode(_0x4dec6b,_0x104357){_0x104357=_0x104357||0xcc;return function(_0x15adf1){if(_0x15adf1){return _0x4dec6b[_0x7857('0x18')](_0x104357);}return _0x4dec6b['status'](_0x104357)['end']();};}function respondWithResult(_0x2fbe39,_0x31a91a){_0x31a91a=_0x31a91a||0xc8;return function(_0xb14378){if(_0xb14378){return _0x2fbe39[_0x7857('0x19')](_0x31a91a)[_0x7857('0x1a')](_0xb14378);}};}function respondWithFilteredResult(_0x6a08de,_0x394a3c){return function(_0x3ba266){if(_0x3ba266){var _0x4320c3=typeof _0x394a3c['offset']==='undefined'&&typeof _0x394a3c[_0x7857('0x1b')]===_0x7857('0x1c');var _0x1317f0=_0x3ba266[_0x7857('0x1d')];var _0x369447=_0x4320c3?0x0:_0x394a3c[_0x7857('0x1e')];var _0x717e44=_0x4320c3?_0x3ba266[_0x7857('0x1d')]:_0x394a3c[_0x7857('0x1e')]+_0x394a3c['limit'];var _0x436685;if(_0x717e44>=_0x1317f0){_0x717e44=_0x1317f0;_0x436685=0xc8;}else{_0x436685=0xce;}_0x6a08de[_0x7857('0x19')](_0x436685);return _0x6a08de['set']('Content-Range',_0x369447+'-'+_0x717e44+'/'+_0x1317f0)[_0x7857('0x1a')](_0x3ba266);}return null;};}function patchUpdates(_0x492fc7){return function(_0x57e15d){try{jsonpatch[_0x7857('0x1f')](_0x57e15d,_0x492fc7,!![]);}catch(_0x54304c){return BPromise[_0x7857('0x20')](_0x54304c);}return _0x57e15d[_0x7857('0x21')]();};}function saveUpdates(_0x5f07a2,_0x122cae){return function(_0x5fd68f){if(_0x5fd68f){return _0x5fd68f['update'](_0x5f07a2)['then'](function(_0x5646bb){return _0x5646bb;});}return null;};}function removeEntity(_0x5a6647,_0x559a67){return function(_0x131ee3){if(_0x131ee3){return _0x131ee3[_0x7857('0x22')]()['then'](function(){_0x5a6647[_0x7857('0x19')](0xcc)[_0x7857('0x23')]();});}};}function handleEntityNotFound(_0x580acb,_0x34de8d){return function(_0x73980c){if(!_0x73980c){_0x580acb[_0x7857('0x18')](0x194);}return _0x73980c;};}function handleError(_0x2235fd,_0x57548a){_0x57548a=_0x57548a||0x1f4;return function(_0x55b788){logger[_0x7857('0x24')](_0x55b788['stack']);if(_0x55b788[_0x7857('0x25')]){delete _0x55b788['name'];}_0x2235fd[_0x7857('0x19')](_0x57548a)[_0x7857('0x26')](_0x55b788);};}exports['index']=function(_0x1beb6f,_0x4fa2ca){var _0x1f6ad4={},_0x5453cc={},_0x3a5cfb={'count':0x0,'rows':[]};var _0x51a721=_[_0x7857('0x27')](db[_0x7857('0x28')]['rawAttributes'],function(_0x275cab){return{'name':_0x275cab[_0x7857('0x29')],'type':_0x275cab[_0x7857('0x2a')][_0x7857('0x2b')]};});_0x5453cc[_0x7857('0x2c')]=_['map'](_0x51a721,'name');_0x5453cc['query']=_[_0x7857('0x2d')](_0x1beb6f['query']);_0x5453cc[_0x7857('0x2e')]=_[_0x7857('0x2f')](_0x5453cc[_0x7857('0x2c')],_0x5453cc[_0x7857('0x30')]);_0x1f6ad4[_0x7857('0x31')]=_['intersection'](_0x5453cc[_0x7857('0x2c')],qs[_0x7857('0x32')](_0x1beb6f[_0x7857('0x30')][_0x7857('0x32')]));_0x1f6ad4[_0x7857('0x31')]=_0x1f6ad4[_0x7857('0x31')][_0x7857('0x33')]?_0x1f6ad4['attributes']:_0x5453cc[_0x7857('0x2c')];if(!_0x1beb6f['query']['hasOwnProperty'](_0x7857('0x34'))){_0x1f6ad4[_0x7857('0x1b')]=qs['limit'](_0x1beb6f[_0x7857('0x30')][_0x7857('0x1b')]);_0x1f6ad4[_0x7857('0x1e')]=qs['offset'](_0x1beb6f[_0x7857('0x30')][_0x7857('0x1e')]);}_0x1f6ad4[_0x7857('0x35')]=qs['sort'](_0x1beb6f['query']['sort']);_0x1f6ad4['where']=qs[_0x7857('0x2e')](_[_0x7857('0x36')](_0x1beb6f[_0x7857('0x30')],_0x5453cc[_0x7857('0x2e')]),_0x51a721);if(_0x1beb6f[_0x7857('0x30')]['filter']){_0x1f6ad4[_0x7857('0x37')]=_['merge'](_0x1f6ad4['where'],{'$or':_['map'](_0x51a721,function(_0x36d763){if(_0x36d763['type']!==_0x7857('0x38')){var _0x19887c={};_0x19887c[_0x36d763[_0x7857('0x25')]]={'$like':'%'+_0x1beb6f[_0x7857('0x30')][_0x7857('0x39')]+'%'};return _0x19887c;}})});}_0x1f6ad4=_[_0x7857('0x3a')]({},_0x1f6ad4,_0x1beb6f[_0x7857('0x3b')]);var _0x41a031={'where':_0x1f6ad4[_0x7857('0x37')]};return db['ServicenowConfiguration'][_0x7857('0x1d')](_0x41a031)[_0x7857('0x3c')](function(_0x23860d){_0x3a5cfb[_0x7857('0x1d')]=_0x23860d;if(_0x1beb6f[_0x7857('0x30')]['includeAll']){_0x1f6ad4[_0x7857('0x3d')]=[{'all':!![]}];}return db[_0x7857('0x28')]['findAll'](_0x1f6ad4);})[_0x7857('0x3c')](function(_0x44c158){_0x3a5cfb[_0x7857('0x3e')]=_0x44c158;return _0x3a5cfb;})[_0x7857('0x3c')](respondWithFilteredResult(_0x4fa2ca,_0x1f6ad4))[_0x7857('0x3f')](handleError(_0x4fa2ca,null));};exports[_0x7857('0x40')]=function(_0x454790,_0x3dc809){var _0x1f06c0={'raw':![],'where':{'id':_0x454790['params']['id']}},_0x52a24c={};_0x52a24c[_0x7857('0x2c')]=_['keys'](db[_0x7857('0x28')][_0x7857('0x41')]);_0x52a24c[_0x7857('0x30')]=_['keys'](_0x454790['query']);_0x52a24c['filters']=_[_0x7857('0x2f')](_0x52a24c[_0x7857('0x2c')],_0x52a24c['query']);_0x1f06c0[_0x7857('0x31')]=_[_0x7857('0x2f')](_0x52a24c['model'],qs[_0x7857('0x32')](_0x454790[_0x7857('0x30')]['fields']));_0x1f06c0[_0x7857('0x31')]=_0x1f06c0['attributes']['length']?_0x1f06c0[_0x7857('0x31')]:_0x52a24c[_0x7857('0x2c')];if(_0x454790[_0x7857('0x30')]['includeAll']){_0x1f06c0['include']=[{'all':!![]}];}_0x1f06c0=_[_0x7857('0x3a')]({},_0x1f06c0,_0x454790[_0x7857('0x3b')]);return db[_0x7857('0x28')]['find'](_0x1f06c0)[_0x7857('0x3c')](handleEntityNotFound(_0x3dc809,null))[_0x7857('0x3c')](respondWithResult(_0x3dc809,null))['catch'](handleError(_0x3dc809,null));};exports['create']=function(_0x1b8bd3,_0x5b7365){return db[_0x7857('0x28')][_0x7857('0x42')](_0x1b8bd3['body'],{})[_0x7857('0x3c')](respondWithResult(_0x5b7365,0xc9))[_0x7857('0x3f')](handleError(_0x5b7365,null));};exports['update']=function(_0x3522d1,_0x26a759){if(_0x3522d1[_0x7857('0x43')]['id']){delete _0x3522d1[_0x7857('0x43')]['id'];}return db[_0x7857('0x28')][_0x7857('0x44')]({'where':{'id':_0x3522d1[_0x7857('0x45')]['id']}})[_0x7857('0x3c')](handleEntityNotFound(_0x26a759,null))[_0x7857('0x3c')](saveUpdates(_0x3522d1[_0x7857('0x43')],null))['then'](respondWithResult(_0x26a759,null))[_0x7857('0x3f')](handleError(_0x26a759,null));};exports[_0x7857('0x22')]=function(_0x36ca9f,_0x531348){return db[_0x7857('0x28')][_0x7857('0x44')]({'where':{'id':_0x36ca9f[_0x7857('0x45')]['id']}})['then'](handleEntityNotFound(_0x531348,null))['then'](removeEntity(_0x531348,null))['catch'](handleError(_0x531348,null));};exports[_0x7857('0x46')]=function(_0x478a87,_0x64edbf,_0x4a8c29){var _0xeae788={};var _0x53b04a={};var _0x58360a;var _0x3c3b26;return db[_0x7857('0x28')][_0x7857('0x47')]({'where':{'id':_0x478a87[_0x7857('0x45')]['id']}})[_0x7857('0x3c')](handleEntityNotFound(_0x64edbf,null))[_0x7857('0x3c')](function(_0x305a5d){if(_0x305a5d){_0x58360a=_0x305a5d;_0x53b04a[_0x7857('0x2c')]=_['keys'](db['ServicenowField'][_0x7857('0x41')]);_0x53b04a[_0x7857('0x30')]=_[_0x7857('0x2d')](_0x478a87[_0x7857('0x30')]);_0x53b04a[_0x7857('0x2e')]=_['intersection'](_0x53b04a[_0x7857('0x2c')],_0x53b04a[_0x7857('0x30')]);_0xeae788['attributes']=_['intersection'](_0x53b04a[_0x7857('0x2c')],qs[_0x7857('0x32')](_0x478a87['query'][_0x7857('0x32')]));_0xeae788[_0x7857('0x31')]=_0xeae788[_0x7857('0x31')][_0x7857('0x33')]?_0xeae788['attributes']:_0x53b04a[_0x7857('0x2c')];_0xeae788[_0x7857('0x35')]=qs[_0x7857('0x48')](_0x478a87['query'][_0x7857('0x48')]);_0xeae788[_0x7857('0x37')]=qs[_0x7857('0x2e')](_['pick'](_0x478a87[_0x7857('0x30')],_0x53b04a[_0x7857('0x2e')]));if(_0x478a87[_0x7857('0x30')]['filter']){_0xeae788[_0x7857('0x37')]=_['merge'](_0xeae788[_0x7857('0x37')],{'$or':_[_0x7857('0x27')](_0xeae788[_0x7857('0x31')],function(_0x115e1e){var _0x1d0693={};_0x1d0693[_0x115e1e]={'$like':'%'+_0x478a87[_0x7857('0x30')][_0x7857('0x39')]+'%'};return _0x1d0693;})});}_0xeae788=_['merge']({},_0xeae788,_0x478a87[_0x7857('0x3b')]);return _0x58360a[_0x7857('0x46')](_0xeae788);}})[_0x7857('0x3c')](function(_0x3ce570){if(_0x3ce570){_0x3c3b26=_0x3ce570[_0x7857('0x33')];if(!_0x478a87[_0x7857('0x30')]['hasOwnProperty']('nolimit')){_0xeae788[_0x7857('0x1b')]=qs['limit'](_0x478a87[_0x7857('0x30')][_0x7857('0x1b')]);_0xeae788['offset']=qs[_0x7857('0x1e')](_0x478a87['query'][_0x7857('0x1e')]);}return _0x58360a[_0x7857('0x46')](_0xeae788);}})[_0x7857('0x3c')](function(_0x49303d){if(_0x49303d){return _0x49303d?{'count':_0x3c3b26,'rows':_0x49303d}:null;}})[_0x7857('0x3c')](respondWithResult(_0x64edbf,null))[_0x7857('0x3f')](handleError(_0x64edbf,null));};exports[_0x7857('0x49')]=function(_0x131631,_0x5ac9d5,_0x44ba4f){var _0x583846={};var _0x347783={};var _0x46f8d6;var _0x127dc3;return db[_0x7857('0x28')][_0x7857('0x47')]({'where':{'id':_0x131631[_0x7857('0x45')]['id']}})['then'](handleEntityNotFound(_0x5ac9d5,null))[_0x7857('0x3c')](function(_0x99384){if(_0x99384){_0x46f8d6=_0x99384;_0x347783[_0x7857('0x2c')]=_[_0x7857('0x2d')](db[_0x7857('0x4a')][_0x7857('0x41')]);_0x347783['query']=_['keys'](_0x131631[_0x7857('0x30')]);_0x347783[_0x7857('0x2e')]=_['intersection'](_0x347783[_0x7857('0x2c')],_0x347783[_0x7857('0x30')]);_0x583846[_0x7857('0x31')]=_['intersection'](_0x347783[_0x7857('0x2c')],qs['fields'](_0x131631[_0x7857('0x30')][_0x7857('0x32')]));_0x583846[_0x7857('0x31')]=_0x583846['attributes'][_0x7857('0x33')]?_0x583846[_0x7857('0x31')]:_0x347783['model'];_0x583846['order']=qs[_0x7857('0x48')](_0x131631['query'][_0x7857('0x48')]);_0x583846[_0x7857('0x37')]=qs[_0x7857('0x2e')](_[_0x7857('0x36')](_0x131631['query'],_0x347783[_0x7857('0x2e')]));if(_0x131631['query'][_0x7857('0x39')]){_0x583846['where']=_['merge'](_0x583846[_0x7857('0x37')],{'$or':_['map'](_0x583846['attributes'],function(_0x5266a0){var _0x280389={};_0x280389[_0x5266a0]={'$like':'%'+_0x131631[_0x7857('0x30')][_0x7857('0x39')]+'%'};return _0x280389;})});}_0x583846=_['merge']({},_0x583846,_0x131631['options']);return _0x46f8d6[_0x7857('0x49')](_0x583846);}})[_0x7857('0x3c')](function(_0x1d80a3){if(_0x1d80a3){_0x127dc3=_0x1d80a3[_0x7857('0x33')];if(!_0x131631['query'][_0x7857('0x4b')](_0x7857('0x34'))){_0x583846[_0x7857('0x1b')]=qs[_0x7857('0x1b')](_0x131631[_0x7857('0x30')]['limit']);_0x583846[_0x7857('0x1e')]=qs['offset'](_0x131631['query'][_0x7857('0x1e')]);}return _0x46f8d6[_0x7857('0x49')](_0x583846);}})[_0x7857('0x3c')](function(_0x4d6cab){if(_0x4d6cab){return _0x4d6cab?{'count':_0x127dc3,'rows':_0x4d6cab}:null;}})['then'](respondWithResult(_0x5ac9d5,null))[_0x7857('0x3f')](handleError(_0x5ac9d5,null));};exports[_0x7857('0x4c')]=function(_0xf4a2ed,_0x5b0490,_0x111264){var _0x412b49={};var _0x29b090={};var _0x1bc4c7;var _0x232211;return db[_0x7857('0x28')][_0x7857('0x47')]({'where':{'id':_0xf4a2ed['params']['id']}})[_0x7857('0x3c')](handleEntityNotFound(_0x5b0490,null))[_0x7857('0x3c')](function(_0x3a9969){if(_0x3a9969){_0x1bc4c7=_0x3a9969;_0x29b090[_0x7857('0x2c')]=_[_0x7857('0x2d')](db[_0x7857('0x4a')][_0x7857('0x41')]);_0x29b090[_0x7857('0x30')]=_[_0x7857('0x2d')](_0xf4a2ed[_0x7857('0x30')]);_0x29b090[_0x7857('0x2e')]=_[_0x7857('0x2f')](_0x29b090[_0x7857('0x2c')],_0x29b090[_0x7857('0x30')]);_0x412b49['attributes']=_[_0x7857('0x2f')](_0x29b090[_0x7857('0x2c')],qs[_0x7857('0x32')](_0xf4a2ed['query'][_0x7857('0x32')]));_0x412b49[_0x7857('0x31')]=_0x412b49[_0x7857('0x31')][_0x7857('0x33')]?_0x412b49[_0x7857('0x31')]:_0x29b090[_0x7857('0x2c')];_0x412b49['order']=qs['sort'](_0xf4a2ed['query'][_0x7857('0x48')]);_0x412b49[_0x7857('0x37')]=qs[_0x7857('0x2e')](_[_0x7857('0x36')](_0xf4a2ed['query'],_0x29b090[_0x7857('0x2e')]));if(_0xf4a2ed[_0x7857('0x30')]['filter']){_0x412b49['where']=_[_0x7857('0x3a')](_0x412b49[_0x7857('0x37')],{'$or':_[_0x7857('0x27')](_0x412b49['attributes'],function(_0x236083){var _0x20d2d6={};_0x20d2d6[_0x236083]={'$like':'%'+_0xf4a2ed[_0x7857('0x30')][_0x7857('0x39')]+'%'};return _0x20d2d6;})});}_0x412b49=_['merge']({},_0x412b49,_0xf4a2ed[_0x7857('0x3b')]);return _0x1bc4c7[_0x7857('0x4c')](_0x412b49);}})[_0x7857('0x3c')](function(_0x2c9c0d){if(_0x2c9c0d){_0x232211=_0x2c9c0d[_0x7857('0x33')];if(!_0xf4a2ed['query'][_0x7857('0x4b')](_0x7857('0x34'))){_0x412b49[_0x7857('0x1b')]=qs[_0x7857('0x1b')](_0xf4a2ed[_0x7857('0x30')][_0x7857('0x1b')]);_0x412b49['offset']=qs[_0x7857('0x1e')](_0xf4a2ed[_0x7857('0x30')]['offset']);}return _0x1bc4c7[_0x7857('0x4c')](_0x412b49);}})[_0x7857('0x3c')](function(_0x4c8877){if(_0x4c8877){return _0x4c8877?{'count':_0x232211,'rows':_0x4c8877}:null;}})[_0x7857('0x3c')](respondWithResult(_0x5b0490,null))[_0x7857('0x3f')](handleError(_0x5b0490,null));};
\ No newline at end of file
index 6c837fe..6d30068 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbe1=['ServicenowConfiguration','int_servicenow_configurations','util','request-promise','path','../../config/environment','exports','define'];(function(_0x5f28e3,_0x27a373){var _0x1529af=function(_0x4473df){while(--_0x4473df){_0x5f28e3['push'](_0x5f28e3['shift']());}};_0x1529af(++_0x27a373);}(_0xcbe1,0x1a2));var _0x1cbe=function(_0x3ccc28,_0x5036d5){_0x3ccc28=_0x3ccc28-0x0;var _0x47dd45=_0xcbe1[_0x3ccc28];return _0x47dd45;};'use strict';var _=require('lodash');var util=require(_0x1cbe('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1cbe('0x1'));var fs=require('fs');var path=require(_0x1cbe('0x2'));var rimraf=require('rimraf');var config=require(_0x1cbe('0x3'));var attributes=require('./intServicenowConfiguration.attributes');module[_0x1cbe('0x4')]=function(_0x168121,_0x5603f7){return _0x168121[_0x1cbe('0x5')](_0x1cbe('0x6'),attributes,{'tableName':_0x1cbe('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6b20=['lodash','util','api','bluebird','request-promise','path','../../config/environment','./intServicenowConfiguration.attributes','exports','define','ServicenowConfiguration'];(function(_0x205f83,_0x2eecc5){var _0x4e3699=function(_0x4f516d){while(--_0x4f516d){_0x205f83['push'](_0x205f83['shift']());}};_0x4e3699(++_0x2eecc5);}(_0x6b20,0xd1));var _0x06b2=function(_0x4423d1,_0xd2c924){_0x4423d1=_0x4423d1-0x0;var _0x27a3c6=_0x6b20[_0x4423d1];return _0x27a3c6;};'use strict';var _=require(_0x06b2('0x0'));var util=require(_0x06b2('0x1'));var logger=require('../../config/logger')(_0x06b2('0x2'));var moment=require('moment');var BPromise=require(_0x06b2('0x3'));var rp=require(_0x06b2('0x4'));var fs=require('fs');var path=require(_0x06b2('0x5'));var rimraf=require('rimraf');var config=require(_0x06b2('0x6'));var attributes=require(_0x06b2('0x7'));module[_0x06b2('0x8')]=function(_0x30d39c,_0x3b792b){return _0x30d39c[_0x06b2('0x9')](_0x06b2('0xa'),attributes,{'tableName':'int_servicenow_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index adee576..f78fbf9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe862=['client','http','request','info','request\x20sent','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','stringify','code','error','ServicenowConfiguration,\x20%s,\x20%s','message','result','catch','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment'];(function(_0x3816c2,_0xb221e1){var _0x144669=function(_0x149c29){while(--_0x149c29){_0x3816c2['push'](_0x3816c2['shift']());}};_0x144669(++_0xb221e1);}(_0xe862,0x76));var _0x2e86=function(_0x89a2cd,_0x268e9c){_0x89a2cd=_0x89a2cd-0x0;var _0x24d57d=_0xe862[_0x89a2cd];return _0x24d57d;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x2e86('0x0'));var BPromise=require(_0x2e86('0x1'));var rs=require(_0x2e86('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x2e86('0x3'))['db'];var utils=require(_0x2e86('0x4'));var logger=require(_0x2e86('0x5'))(_0x2e86('0x6'));var config=require(_0x2e86('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x2e86('0x8')][_0x2e86('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x139bac,_0xe5d0c1,_0x55efc6){return new BPromise(function(_0x1b970b,_0xafcdca){return client[_0x2e86('0xa')](_0x139bac,_0x55efc6)['then'](function(_0x2886ed){logger[_0x2e86('0xb')]('ServicenowConfiguration,\x20%s,\x20%s',_0xe5d0c1,_0x2e86('0xc'));logger['debug'](_0x2e86('0xd'),_0xe5d0c1,_0x2e86('0xc'),JSON[_0x2e86('0xe')](_0x2886ed));if(_0x2886ed['error']){if(_0x2886ed['error'][_0x2e86('0xf')]===0x1f4){logger[_0x2e86('0x10')](_0x2e86('0x11'),_0xe5d0c1,_0x2886ed[_0x2e86('0x10')][_0x2e86('0x12')]);return _0xafcdca(_0x2886ed['error'][_0x2e86('0x12')]);}logger[_0x2e86('0x10')](_0x2e86('0x11'),_0xe5d0c1,_0x2886ed[_0x2e86('0x10')][_0x2e86('0x12')]);return _0x1b970b(_0x2886ed[_0x2e86('0x10')][_0x2e86('0x12')]);}else{logger['info']('ServicenowConfiguration,\x20%s,\x20%s',_0xe5d0c1,_0x2e86('0xc'));_0x1b970b(_0x2886ed[_0x2e86('0x13')][_0x2e86('0x12')]);}})[_0x2e86('0x14')](function(_0x4c37f4){logger[_0x2e86('0x10')](_0x2e86('0x11'),_0xe5d0c1,_0x4c37f4);_0xafcdca(_0x4c37f4);});});}
\ No newline at end of file
+var _0x038f=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','ServicenowConfiguration,\x20%s,\x20%s','ServicenowConfiguration,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','info','result','catch','util','moment','ioredis'];(function(_0x360afd,_0x331095){var _0x1624eb=function(_0x1f02fd){while(--_0x1f02fd){_0x360afd['push'](_0x360afd['shift']());}};_0x1624eb(++_0x331095);}(_0x038f,0xe1));var _0xf038=function(_0x5235dd,_0x3f91cf){_0x5235dd=_0x5235dd-0x0;var _0x13059d=_0x038f[_0x5235dd];return _0x13059d;};'use strict';var _=require('lodash');var util=require(_0xf038('0x0'));var moment=require(_0xf038('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xf038('0x2'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xf038('0x3'))(_0xf038('0x4'));var config=require(_0xf038('0x5'));var jayson=require(_0xf038('0x6'));var client=jayson[_0xf038('0x7')][_0xf038('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x904d31,_0x2e408a,_0x3ba21c){return new BPromise(function(_0x4115a5,_0x4efe14){return client[_0xf038('0x9')](_0x904d31,_0x3ba21c)['then'](function(_0x10c858){logger['info'](_0xf038('0xa'),_0x2e408a,'request\x20sent');logger['debug'](_0xf038('0xb'),_0x2e408a,_0xf038('0xc'),JSON['stringify'](_0x10c858));if(_0x10c858[_0xf038('0xd')]){if(_0x10c858[_0xf038('0xd')][_0xf038('0xe')]===0x1f4){logger[_0xf038('0xd')](_0xf038('0xa'),_0x2e408a,_0x10c858[_0xf038('0xd')][_0xf038('0xf')]);return _0x4efe14(_0x10c858[_0xf038('0xd')][_0xf038('0xf')]);}logger['error']('ServicenowConfiguration,\x20%s,\x20%s',_0x2e408a,_0x10c858[_0xf038('0xd')][_0xf038('0xf')]);return _0x4115a5(_0x10c858[_0xf038('0xd')][_0xf038('0xf')]);}else{logger[_0xf038('0x10')](_0xf038('0xa'),_0x2e408a,_0xf038('0xc'));_0x4115a5(_0x10c858[_0xf038('0x11')][_0xf038('0xf')]);}})[_0xf038('0x12')](function(_0xd00508){logger[_0xf038('0xd')](_0xf038('0xa'),_0x2e408a,_0xd00508);_0x4efe14(_0xd00508);});});}
\ No newline at end of file
index a45835d..a1eec2e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd33a=['delete','destroy','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intServicenowField.controller','get','isAuthenticated','/:id','show','post','create','put','update'];(function(_0x5ebe02,_0x14f7db){var _0x209130=function(_0x342a52){while(--_0x342a52){_0x5ebe02['push'](_0x5ebe02['shift']());}};_0x209130(++_0x14f7db);}(_0xd33a,0x87));var _0xad33=function(_0x72d0d8,_0x3698f1){_0x72d0d8=_0x72d0d8-0x0;var _0x54fedd=_0xd33a[_0x72d0d8];return _0x54fedd;};'use strict';var multer=require('multer');var util=require(_0xad33('0x0'));var path=require(_0xad33('0x1'));var timeout=require(_0xad33('0x2'));var express=require(_0xad33('0x3'));var router=express['Router']();var fs_extra=require(_0xad33('0x4'));var auth=require(_0xad33('0x5'));var interaction=require(_0xad33('0x6'));var config=require(_0xad33('0x7'));var controller=require(_0xad33('0x8'));router[_0xad33('0x9')]('/',auth[_0xad33('0xa')](),controller['index']);router[_0xad33('0x9')](_0xad33('0xb'),auth['isAuthenticated'](),controller[_0xad33('0xc')]);router[_0xad33('0xd')]('/',auth[_0xad33('0xa')](),controller[_0xad33('0xe')]);router[_0xad33('0xf')](_0xad33('0xb'),auth['isAuthenticated'](),controller[_0xad33('0x10')]);router[_0xad33('0x11')](_0xad33('0xb'),auth[_0xad33('0xa')](),controller[_0xad33('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x348f=['../../components/auth/service','../../config/environment','isAuthenticated','index','get','/:id','show','post','create','put','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra'];(function(_0x4f8698,_0x224ddc){var _0x225202=function(_0x3693ff){while(--_0x3693ff){_0x4f8698['push'](_0x4f8698['shift']());}};_0x225202(++_0x224ddc);}(_0x348f,0x117));var _0xf348=function(_0x4d6179,_0x4cb0ed){_0x4d6179=_0x4d6179-0x0;var _0x58a7c3=_0x348f[_0x4d6179];return _0x58a7c3;};'use strict';var multer=require(_0xf348('0x0'));var util=require(_0xf348('0x1'));var path=require(_0xf348('0x2'));var timeout=require(_0xf348('0x3'));var express=require(_0xf348('0x4'));var router=express['Router']();var fs_extra=require(_0xf348('0x5'));var auth=require(_0xf348('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xf348('0x7'));var controller=require('./intServicenowField.controller');router['get']('/',auth[_0xf348('0x8')](),controller[_0xf348('0x9')]);router[_0xf348('0xa')](_0xf348('0xb'),auth[_0xf348('0x8')](),controller[_0xf348('0xc')]);router[_0xf348('0xd')]('/',auth['isAuthenticated'](),controller[_0xf348('0xe')]);router[_0xf348('0xf')](_0xf348('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xf348('0x10')](_0xf348('0xb'),auth[_0xf348('0x8')](),controller[_0xf348('0x11')]);module[_0xf348('0x12')]=router;
\ No newline at end of file
index 8dd3e40..e66ad89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c8f=['picklist','STRING','BOOLEAN','sequelize','exports','ENUM','string','variable','customVariable','keyValue'];(function(_0x3ee8b1,_0x375088){var _0x53aa77=function(_0x191971){while(--_0x191971){_0x3ee8b1['push'](_0x3ee8b1['shift']());}};_0x53aa77(++_0x375088);}(_0x0c8f,0xd5));var _0xf0c8=function(_0xf5509,_0x17773c){_0xf5509=_0xf5509-0x0;var _0x5146be=_0x0c8f[_0xf5509];return _0x5146be;};'use strict';var Sequelize=require(_0xf0c8('0x0'));module[_0xf0c8('0x1')]={'type':{'type':Sequelize[_0xf0c8('0x2')](_0xf0c8('0x3'),_0xf0c8('0x4'),_0xf0c8('0x5'),_0xf0c8('0x6'),_0xf0c8('0x7')),'defaultValue':_0xf0c8('0x3')},'content':{'type':Sequelize[_0xf0c8('0x8')]},'key':{'type':Sequelize[_0xf0c8('0x8')]},'keyType':{'type':Sequelize[_0xf0c8('0x2')](_0xf0c8('0x3'),_0xf0c8('0x4'),_0xf0c8('0x5'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0xf0c8('0x8')]},'nameField':{'type':Sequelize[_0xf0c8('0x8')]},'customField':{'type':Sequelize[_0xf0c8('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x1620=['ENUM','string','customVariable','keyValue','picklist','STRING','variable','BOOLEAN','exports'];(function(_0x4077f1,_0x34aa2d){var _0x1f709c=function(_0x8ea8f9){while(--_0x8ea8f9){_0x4077f1['push'](_0x4077f1['shift']());}};_0x1f709c(++_0x34aa2d);}(_0x1620,0x143));var _0x0162=function(_0x1d5591,_0x20235e){_0x1d5591=_0x1d5591-0x0;var _0x32210d=_0x1620[_0x1d5591];return _0x32210d;};'use strict';var Sequelize=require('sequelize');module[_0x0162('0x0')]={'type':{'type':Sequelize[_0x0162('0x1')](_0x0162('0x2'),'variable',_0x0162('0x3'),_0x0162('0x4'),_0x0162('0x5')),'defaultValue':_0x0162('0x2')},'content':{'type':Sequelize[_0x0162('0x6')]},'key':{'type':Sequelize[_0x0162('0x6')]},'keyType':{'type':Sequelize[_0x0162('0x1')]('string',_0x0162('0x7'),'customVariable')},'keyContent':{'type':Sequelize[_0x0162('0x6')]},'idField':{'type':Sequelize[_0x0162('0x6')]},'nameField':{'type':Sequelize[_0x0162('0x6')]},'customField':{'type':Sequelize[_0x0162('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x0162('0x6')]}};
\ No newline at end of file
index 7d576a4..a2b0f76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a33=['keys','query','intersection','attributes','fields','length','hasOwnProperty','limit','order','sort','filters','pick','filter','where','VIRTUAL','merge','options','includeAll','findAll','rows','show','params','include','find','create','body','catch','rimraf','fast-json-patch','request-promise','moment','util','path','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','Content-Range','apply','save','update','then','destroy','stack','name','ServicenowField','rawAttributes','fieldName','type','key','model','map'];(function(_0x1f333e,_0x49f143){var _0x2c8cde=function(_0x7da9c2){while(--_0x7da9c2){_0x1f333e['push'](_0x1f333e['shift']());}};_0x2c8cde(++_0x49f143);}(_0x7a33,0x137));var _0x37a3=function(_0x5eef66,_0x5384bb){_0x5eef66=_0x5eef66-0x0;var _0x3b384a=_0x7a33[_0x5eef66];return _0x3b384a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x37a3('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x37a3('0x1'));var rp=require(_0x37a3('0x2'));var moment=require(_0x37a3('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x37a3('0x4'));var path=require(_0x37a3('0x5'));var sox=require('sox');var csv=require(_0x37a3('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x37a3('0x7'));var squel=require(_0x37a3('0x8'));var crypto=require(_0x37a3('0x9'));var jsforce=require(_0x37a3('0xa'));var deskjs=require(_0x37a3('0xb'));var toCsv=require(_0x37a3('0x6'));var querystring=require(_0x37a3('0xc'));var Papa=require(_0x37a3('0xd'));var Redis=require(_0x37a3('0xe'));var authService=require(_0x37a3('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x37a3('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x37a3('0x11'));var utils=require(_0x37a3('0x12'));var config=require(_0x37a3('0x13'));var licenseUtil=require(_0x37a3('0x14'));var db=require(_0x37a3('0x15'))['db'];function respondWithStatusCode(_0x1ce941,_0x13b977){_0x13b977=_0x13b977||0xcc;return function(_0x14460e){if(_0x14460e){return _0x1ce941[_0x37a3('0x16')](_0x13b977);}return _0x1ce941[_0x37a3('0x17')](_0x13b977)[_0x37a3('0x18')]();};}function respondWithResult(_0xdd9948,_0x3debd5){_0x3debd5=_0x3debd5||0xc8;return function(_0x47ce4b){if(_0x47ce4b){return _0xdd9948['status'](_0x3debd5)[_0x37a3('0x19')](_0x47ce4b);}};}function respondWithFilteredResult(_0x39dfea,_0xc66675){return function(_0x26ca78){if(_0x26ca78){var _0x2522ba=typeof _0xc66675['offset']===_0x37a3('0x1a')&&typeof _0xc66675['limit']===_0x37a3('0x1a');var _0x436639=_0x26ca78[_0x37a3('0x1b')];var _0x4a9b35=_0x2522ba?0x0:_0xc66675[_0x37a3('0x1c')];var _0x2991fe=_0x2522ba?_0x26ca78[_0x37a3('0x1b')]:_0xc66675[_0x37a3('0x1c')]+_0xc66675['limit'];var _0x534aab;if(_0x2991fe>=_0x436639){_0x2991fe=_0x436639;_0x534aab=0xc8;}else{_0x534aab=0xce;}_0x39dfea['status'](_0x534aab);return _0x39dfea['set'](_0x37a3('0x1d'),_0x4a9b35+'-'+_0x2991fe+'/'+_0x436639)['json'](_0x26ca78);}return null;};}function patchUpdates(_0x280247){return function(_0x4b35bf){try{jsonpatch[_0x37a3('0x1e')](_0x4b35bf,_0x280247,!![]);}catch(_0x2b130a){return BPromise['reject'](_0x2b130a);}return _0x4b35bf[_0x37a3('0x1f')]();};}function saveUpdates(_0x19652a,_0x5763a0){return function(_0x4ff800){if(_0x4ff800){return _0x4ff800[_0x37a3('0x20')](_0x19652a)[_0x37a3('0x21')](function(_0xc4f801){return _0xc4f801;});}return null;};}function removeEntity(_0x40b7c1,_0x25ebb7){return function(_0x1065cc){if(_0x1065cc){return _0x1065cc[_0x37a3('0x22')]()[_0x37a3('0x21')](function(){_0x40b7c1[_0x37a3('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x566e10,_0x567889){return function(_0x533635){if(!_0x533635){_0x566e10[_0x37a3('0x16')](0x194);}return _0x533635;};}function handleError(_0x5e8a51,_0x9750c4){_0x9750c4=_0x9750c4||0x1f4;return function(_0x55abc1){logger['error'](_0x55abc1[_0x37a3('0x23')]);if(_0x55abc1[_0x37a3('0x24')]){delete _0x55abc1[_0x37a3('0x24')];}_0x5e8a51[_0x37a3('0x17')](_0x9750c4)['send'](_0x55abc1);};}exports['index']=function(_0x261a4f,_0x49b3aa){var _0x428617={},_0x2270a6={},_0x33fd14={'count':0x0,'rows':[]};var _0x471b85=_['map'](db[_0x37a3('0x25')][_0x37a3('0x26')],function(_0x187d8a){return{'name':_0x187d8a[_0x37a3('0x27')],'type':_0x187d8a[_0x37a3('0x28')][_0x37a3('0x29')]};});_0x2270a6[_0x37a3('0x2a')]=_[_0x37a3('0x2b')](_0x471b85,_0x37a3('0x24'));_0x2270a6['query']=_[_0x37a3('0x2c')](_0x261a4f[_0x37a3('0x2d')]);_0x2270a6['filters']=_[_0x37a3('0x2e')](_0x2270a6[_0x37a3('0x2a')],_0x2270a6[_0x37a3('0x2d')]);_0x428617[_0x37a3('0x2f')]=_['intersection'](_0x2270a6['model'],qs['fields'](_0x261a4f['query'][_0x37a3('0x30')]));_0x428617[_0x37a3('0x2f')]=_0x428617[_0x37a3('0x2f')][_0x37a3('0x31')]?_0x428617[_0x37a3('0x2f')]:_0x2270a6['model'];if(!_0x261a4f[_0x37a3('0x2d')][_0x37a3('0x32')]('nolimit')){_0x428617['limit']=qs[_0x37a3('0x33')](_0x261a4f['query']['limit']);_0x428617[_0x37a3('0x1c')]=qs['offset'](_0x261a4f['query'][_0x37a3('0x1c')]);}_0x428617[_0x37a3('0x34')]=qs[_0x37a3('0x35')](_0x261a4f[_0x37a3('0x2d')][_0x37a3('0x35')]);_0x428617['where']=qs[_0x37a3('0x36')](_[_0x37a3('0x37')](_0x261a4f[_0x37a3('0x2d')],_0x2270a6[_0x37a3('0x36')]),_0x471b85);if(_0x261a4f['query'][_0x37a3('0x38')]){_0x428617['where']=_['merge'](_0x428617[_0x37a3('0x39')],{'$or':_[_0x37a3('0x2b')](_0x471b85,function(_0x37212c){if(_0x37212c[_0x37a3('0x28')]!==_0x37a3('0x3a')){var _0x42bc13={};_0x42bc13[_0x37212c[_0x37a3('0x24')]]={'$like':'%'+_0x261a4f[_0x37a3('0x2d')][_0x37a3('0x38')]+'%'};return _0x42bc13;}})});}_0x428617=_[_0x37a3('0x3b')]({},_0x428617,_0x261a4f[_0x37a3('0x3c')]);var _0xd983e4={'where':_0x428617[_0x37a3('0x39')]};return db[_0x37a3('0x25')]['count'](_0xd983e4)[_0x37a3('0x21')](function(_0x51404a){_0x33fd14[_0x37a3('0x1b')]=_0x51404a;if(_0x261a4f[_0x37a3('0x2d')][_0x37a3('0x3d')]){_0x428617['include']=[{'all':!![]}];}return db[_0x37a3('0x25')][_0x37a3('0x3e')](_0x428617);})[_0x37a3('0x21')](function(_0x2a3b72){_0x33fd14[_0x37a3('0x3f')]=_0x2a3b72;return _0x33fd14;})[_0x37a3('0x21')](respondWithFilteredResult(_0x49b3aa,_0x428617))['catch'](handleError(_0x49b3aa,null));};exports[_0x37a3('0x40')]=function(_0x164b29,_0x3b50cb){var _0x281c73={'raw':!![],'where':{'id':_0x164b29[_0x37a3('0x41')]['id']}},_0x2c73ca={};_0x2c73ca['model']=_[_0x37a3('0x2c')](db['ServicenowField']['rawAttributes']);_0x2c73ca[_0x37a3('0x2d')]=_[_0x37a3('0x2c')](_0x164b29[_0x37a3('0x2d')]);_0x2c73ca['filters']=_[_0x37a3('0x2e')](_0x2c73ca[_0x37a3('0x2a')],_0x2c73ca[_0x37a3('0x2d')]);_0x281c73[_0x37a3('0x2f')]=_[_0x37a3('0x2e')](_0x2c73ca[_0x37a3('0x2a')],qs[_0x37a3('0x30')](_0x164b29['query'][_0x37a3('0x30')]));_0x281c73['attributes']=_0x281c73[_0x37a3('0x2f')][_0x37a3('0x31')]?_0x281c73[_0x37a3('0x2f')]:_0x2c73ca['model'];if(_0x164b29[_0x37a3('0x2d')][_0x37a3('0x3d')]){_0x281c73[_0x37a3('0x42')]=[{'all':!![]}];}_0x281c73=_[_0x37a3('0x3b')]({},_0x281c73,_0x164b29[_0x37a3('0x3c')]);return db['ServicenowField'][_0x37a3('0x43')](_0x281c73)[_0x37a3('0x21')](handleEntityNotFound(_0x3b50cb,null))[_0x37a3('0x21')](respondWithResult(_0x3b50cb,null))['catch'](handleError(_0x3b50cb,null));};exports[_0x37a3('0x44')]=function(_0xd0f146,_0x2f61c8){return db[_0x37a3('0x25')][_0x37a3('0x44')](_0xd0f146['body'],{})[_0x37a3('0x21')](respondWithResult(_0x2f61c8,0xc9))['catch'](handleError(_0x2f61c8,null));};exports['update']=function(_0x28cdbb,_0x479260){if(_0x28cdbb[_0x37a3('0x45')]['id']){delete _0x28cdbb[_0x37a3('0x45')]['id'];}return db['ServicenowField']['find']({'where':{'id':_0x28cdbb[_0x37a3('0x41')]['id']}})[_0x37a3('0x21')](handleEntityNotFound(_0x479260,null))[_0x37a3('0x21')](saveUpdates(_0x28cdbb[_0x37a3('0x45')],null))[_0x37a3('0x21')](respondWithResult(_0x479260,null))['catch'](handleError(_0x479260,null));};exports['destroy']=function(_0x432bdf,_0x983ad7){return db[_0x37a3('0x25')][_0x37a3('0x43')]({'where':{'id':_0x432bdf[_0x37a3('0x41')]['id']}})[_0x37a3('0x21')](handleEntityNotFound(_0x983ad7,null))[_0x37a3('0x21')](removeEntity(_0x983ad7,null))[_0x37a3('0x46')](handleError(_0x983ad7,null));};
\ No newline at end of file
+var _0x1303=['lodash','squel','crypto','jsforce','desk.js','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','offset','limit','undefined','count','set','Content-Range','json','apply','reject','destroy','then','stack','name','send','map','rawAttributes','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','filter','options','ServicenowField','includeAll','include','findAll','catch','show','params','find','create','update','body','eml-format','rimraf','fast-json-patch','bluebird','mustache','util','sox','to-csv','fs-extra'];(function(_0x7239aa,_0x270ee5){var _0xd16b3a=function(_0x40cc68){while(--_0x40cc68){_0x7239aa['push'](_0x7239aa['shift']());}};_0xd16b3a(++_0x270ee5);}(_0x1303,0x1b9));var _0x3130=function(_0xc09b83,_0x4a8f7c){_0xc09b83=_0xc09b83-0x0;var _0x986879=_0x1303[_0xc09b83];return _0x986879;};'use strict';var emlformat=require(_0x3130('0x0'));var rimraf=require(_0x3130('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3130('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3130('0x3'));var Mustache=require(_0x3130('0x4'));var util=require(_0x3130('0x5'));var path=require('path');var sox=require(_0x3130('0x6'));var csv=require(_0x3130('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x3130('0x8'));var _=require(_0x3130('0x9'));var squel=require(_0x3130('0xa'));var crypto=require(_0x3130('0xb'));var jsforce=require(_0x3130('0xc'));var deskjs=require(_0x3130('0xd'));var toCsv=require(_0x3130('0x7'));var querystring=require('querystring');var Papa=require(_0x3130('0xe'));var Redis=require(_0x3130('0xf'));var authService=require(_0x3130('0x10'));var qs=require(_0x3130('0x11'));var as=require(_0x3130('0x12'));var hardwareService=require(_0x3130('0x13'));var logger=require(_0x3130('0x14'))(_0x3130('0x15'));var utils=require('../../config/utils');var config=require(_0x3130('0x16'));var licenseUtil=require(_0x3130('0x17'));var db=require(_0x3130('0x18'))['db'];function respondWithStatusCode(_0x117961,_0x12dafd){_0x12dafd=_0x12dafd||0xcc;return function(_0x422830){if(_0x422830){return _0x117961[_0x3130('0x19')](_0x12dafd);}return _0x117961[_0x3130('0x1a')](_0x12dafd)[_0x3130('0x1b')]();};}function respondWithResult(_0xc26fe8,_0x34a10d){_0x34a10d=_0x34a10d||0xc8;return function(_0x3281dc){if(_0x3281dc){return _0xc26fe8[_0x3130('0x1a')](_0x34a10d)['json'](_0x3281dc);}};}function respondWithFilteredResult(_0x3f103c,_0x55287a){return function(_0x2c5c82){if(_0x2c5c82){var _0xb2891d=typeof _0x55287a[_0x3130('0x1c')]==='undefined'&&typeof _0x55287a[_0x3130('0x1d')]===_0x3130('0x1e');var _0x5ca69a=_0x2c5c82[_0x3130('0x1f')];var _0x36e0f8=_0xb2891d?0x0:_0x55287a[_0x3130('0x1c')];var _0x31a20e=_0xb2891d?_0x2c5c82[_0x3130('0x1f')]:_0x55287a[_0x3130('0x1c')]+_0x55287a[_0x3130('0x1d')];var _0x3d0a1f;if(_0x31a20e>=_0x5ca69a){_0x31a20e=_0x5ca69a;_0x3d0a1f=0xc8;}else{_0x3d0a1f=0xce;}_0x3f103c[_0x3130('0x1a')](_0x3d0a1f);return _0x3f103c[_0x3130('0x20')](_0x3130('0x21'),_0x36e0f8+'-'+_0x31a20e+'/'+_0x5ca69a)[_0x3130('0x22')](_0x2c5c82);}return null;};}function patchUpdates(_0xfd0f9f){return function(_0x40c777){try{jsonpatch[_0x3130('0x23')](_0x40c777,_0xfd0f9f,!![]);}catch(_0x3cefae){return BPromise[_0x3130('0x24')](_0x3cefae);}return _0x40c777['save']();};}function saveUpdates(_0x2b8a9b,_0x46230c){return function(_0x516fff){if(_0x516fff){return _0x516fff['update'](_0x2b8a9b)['then'](function(_0x55ee73){return _0x55ee73;});}return null;};}function removeEntity(_0x13d28b,_0xf134b2){return function(_0x35f2fb){if(_0x35f2fb){return _0x35f2fb[_0x3130('0x25')]()[_0x3130('0x26')](function(){_0x13d28b[_0x3130('0x1a')](0xcc)[_0x3130('0x1b')]();});}};}function handleEntityNotFound(_0x21e3de,_0x5c6aa0){return function(_0x5b4f11){if(!_0x5b4f11){_0x21e3de[_0x3130('0x19')](0x194);}return _0x5b4f11;};}function handleError(_0x49699a,_0xb7d714){_0xb7d714=_0xb7d714||0x1f4;return function(_0x49184a){logger['error'](_0x49184a[_0x3130('0x27')]);if(_0x49184a[_0x3130('0x28')]){delete _0x49184a[_0x3130('0x28')];}_0x49699a[_0x3130('0x1a')](_0xb7d714)[_0x3130('0x29')](_0x49184a);};}exports['index']=function(_0x10e411,_0x4bb928){var _0x3ee7e4={},_0x535b07={},_0x9831a4={'count':0x0,'rows':[]};var _0x1a49c7=_[_0x3130('0x2a')](db['ServicenowField'][_0x3130('0x2b')],function(_0x47aac1){return{'name':_0x47aac1['fieldName'],'type':_0x47aac1['type'][_0x3130('0x2c')]};});_0x535b07['model']=_['map'](_0x1a49c7,_0x3130('0x28'));_0x535b07[_0x3130('0x2d')]=_[_0x3130('0x2e')](_0x10e411[_0x3130('0x2d')]);_0x535b07[_0x3130('0x2f')]=_[_0x3130('0x30')](_0x535b07[_0x3130('0x31')],_0x535b07[_0x3130('0x2d')]);_0x3ee7e4['attributes']=_[_0x3130('0x30')](_0x535b07[_0x3130('0x31')],qs[_0x3130('0x32')](_0x10e411['query'][_0x3130('0x32')]));_0x3ee7e4[_0x3130('0x33')]=_0x3ee7e4[_0x3130('0x33')][_0x3130('0x34')]?_0x3ee7e4['attributes']:_0x535b07[_0x3130('0x31')];if(!_0x10e411[_0x3130('0x2d')][_0x3130('0x35')](_0x3130('0x36'))){_0x3ee7e4[_0x3130('0x1d')]=qs[_0x3130('0x1d')](_0x10e411[_0x3130('0x2d')][_0x3130('0x1d')]);_0x3ee7e4['offset']=qs[_0x3130('0x1c')](_0x10e411[_0x3130('0x2d')]['offset']);}_0x3ee7e4[_0x3130('0x37')]=qs[_0x3130('0x38')](_0x10e411['query']['sort']);_0x3ee7e4[_0x3130('0x39')]=qs[_0x3130('0x2f')](_[_0x3130('0x3a')](_0x10e411[_0x3130('0x2d')],_0x535b07['filters']),_0x1a49c7);if(_0x10e411[_0x3130('0x2d')]['filter']){_0x3ee7e4['where']=_[_0x3130('0x3b')](_0x3ee7e4[_0x3130('0x39')],{'$or':_[_0x3130('0x2a')](_0x1a49c7,function(_0x54c92f){if(_0x54c92f[_0x3130('0x3c')]!==_0x3130('0x3d')){var _0x142c33={};_0x142c33[_0x54c92f[_0x3130('0x28')]]={'$like':'%'+_0x10e411['query'][_0x3130('0x3e')]+'%'};return _0x142c33;}})});}_0x3ee7e4=_[_0x3130('0x3b')]({},_0x3ee7e4,_0x10e411[_0x3130('0x3f')]);var _0x3709b1={'where':_0x3ee7e4[_0x3130('0x39')]};return db[_0x3130('0x40')]['count'](_0x3709b1)[_0x3130('0x26')](function(_0x3e3dc7){_0x9831a4[_0x3130('0x1f')]=_0x3e3dc7;if(_0x10e411['query'][_0x3130('0x41')]){_0x3ee7e4[_0x3130('0x42')]=[{'all':!![]}];}return db[_0x3130('0x40')][_0x3130('0x43')](_0x3ee7e4);})[_0x3130('0x26')](function(_0x4e999d){_0x9831a4['rows']=_0x4e999d;return _0x9831a4;})['then'](respondWithFilteredResult(_0x4bb928,_0x3ee7e4))[_0x3130('0x44')](handleError(_0x4bb928,null));};exports[_0x3130('0x45')]=function(_0x5588ef,_0x334c7a){var _0x225306={'raw':!![],'where':{'id':_0x5588ef[_0x3130('0x46')]['id']}},_0x237ff9={};_0x237ff9[_0x3130('0x31')]=_['keys'](db[_0x3130('0x40')]['rawAttributes']);_0x237ff9[_0x3130('0x2d')]=_[_0x3130('0x2e')](_0x5588ef[_0x3130('0x2d')]);_0x237ff9['filters']=_[_0x3130('0x30')](_0x237ff9['model'],_0x237ff9['query']);_0x225306['attributes']=_[_0x3130('0x30')](_0x237ff9['model'],qs[_0x3130('0x32')](_0x5588ef[_0x3130('0x2d')][_0x3130('0x32')]));_0x225306[_0x3130('0x33')]=_0x225306[_0x3130('0x33')][_0x3130('0x34')]?_0x225306['attributes']:_0x237ff9[_0x3130('0x31')];if(_0x5588ef['query'][_0x3130('0x41')]){_0x225306[_0x3130('0x42')]=[{'all':!![]}];}_0x225306=_[_0x3130('0x3b')]({},_0x225306,_0x5588ef[_0x3130('0x3f')]);return db[_0x3130('0x40')][_0x3130('0x47')](_0x225306)[_0x3130('0x26')](handleEntityNotFound(_0x334c7a,null))[_0x3130('0x26')](respondWithResult(_0x334c7a,null))[_0x3130('0x44')](handleError(_0x334c7a,null));};exports[_0x3130('0x48')]=function(_0x370873,_0x185785){return db[_0x3130('0x40')]['create'](_0x370873['body'],{})[_0x3130('0x26')](respondWithResult(_0x185785,0xc9))['catch'](handleError(_0x185785,null));};exports[_0x3130('0x49')]=function(_0x4ed440,_0x10e013){if(_0x4ed440[_0x3130('0x4a')]['id']){delete _0x4ed440[_0x3130('0x4a')]['id'];}return db[_0x3130('0x40')][_0x3130('0x47')]({'where':{'id':_0x4ed440[_0x3130('0x46')]['id']}})[_0x3130('0x26')](handleEntityNotFound(_0x10e013,null))[_0x3130('0x26')](saveUpdates(_0x4ed440['body'],null))[_0x3130('0x26')](respondWithResult(_0x10e013,null))[_0x3130('0x44')](handleError(_0x10e013,null));};exports[_0x3130('0x25')]=function(_0x2761de,_0x1e8a9a){return db[_0x3130('0x40')][_0x3130('0x47')]({'where':{'id':_0x2761de['params']['id']}})[_0x3130('0x26')](handleEntityNotFound(_0x1e8a9a,null))['then'](removeEntity(_0x1e8a9a,null))[_0x3130('0x44')](handleError(_0x1e8a9a,null));};
\ No newline at end of file
index f3ad384..3c52d7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1324=['ServicenowField','int_servicenow_fields','servicenow_unique_index','idField','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','exports','define'];(function(_0x31f201,_0x49649f){var _0x407796=function(_0x23fc83){while(--_0x23fc83){_0x31f201['push'](_0x31f201['shift']());}};_0x407796(++_0x49649f);}(_0x1324,0x163));var _0x4132=function(_0x94084f,_0x146371){_0x94084f=_0x94084f-0x0;var _0x33ae15=_0x1324[_0x94084f];return _0x33ae15;};'use strict';var _=require('lodash');var util=require(_0x4132('0x0'));var logger=require(_0x4132('0x1'))('api');var moment=require(_0x4132('0x2'));var BPromise=require(_0x4132('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4132('0x4'));var rimraf=require(_0x4132('0x5'));var config=require(_0x4132('0x6'));var attributes=require('./intServicenowField.attributes');module[_0x4132('0x7')]=function(_0x37c486,_0x5f5924){return _0x37c486[_0x4132('0x8')](_0x4132('0x9'),attributes,{'tableName':_0x4132('0xa'),'paranoid':![],'indexes':[{'name':_0x4132('0xb'),'fields':[_0x4132('0xc'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0ace=['api','moment','bluebird','request-promise','rimraf','define','int_servicenow_fields','idField','FieldId','util'];(function(_0x53e83d,_0x760f0f){var _0x212614=function(_0x3fc40a){while(--_0x3fc40a){_0x53e83d['push'](_0x53e83d['shift']());}};_0x212614(++_0x760f0f);}(_0x0ace,0x103));var _0xe0ac=function(_0x5cdf5d,_0x616e66){_0x5cdf5d=_0x5cdf5d-0x0;var _0x2b947a=_0x0ace[_0x5cdf5d];return _0x2b947a;};'use strict';var _=require('lodash');var util=require(_0xe0ac('0x0'));var logger=require('../../config/logger')(_0xe0ac('0x1'));var moment=require(_0xe0ac('0x2'));var BPromise=require(_0xe0ac('0x3'));var rp=require(_0xe0ac('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xe0ac('0x5'));var config=require('../../config/environment');var attributes=require('./intServicenowField.attributes');module['exports']=function(_0x21c3cc,_0x14ad82){return _0x21c3cc[_0xe0ac('0x6')]('ServicenowField',attributes,{'tableName':_0xe0ac('0x7'),'paranoid':![],'indexes':[{'name':'servicenow_unique_index','fields':[_0xe0ac('0x8'),_0xe0ac('0x9')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index aabc8ef..e39aec0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','request','then','info','ServicenowField,\x20%s,\x20%s','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','ioredis'];(function(_0x2a99e2,_0x1803e4){var _0x23fb5f=function(_0x568ec9){while(--_0x568ec9){_0x2a99e2['push'](_0x2a99e2['shift']());}};_0x23fb5f(++_0x1803e4);}(_0xd8b0,0xad));var _0x0d8b=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0xd8b0[_0x122ef9];return _0x42fba0;};'use strict';var _=require(_0x0d8b('0x0'));var util=require(_0x0d8b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x0d8b('0x2'));var db=require(_0x0d8b('0x3'))['db'];var utils=require(_0x0d8b('0x4'));var logger=require(_0x0d8b('0x5'))(_0x0d8b('0x6'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x0d8b('0x7')][_0x0d8b('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x39f43a,_0x4a4470,_0x413284){return new BPromise(function(_0x284169,_0x58e4e2){return client[_0x0d8b('0x9')](_0x39f43a,_0x413284)[_0x0d8b('0xa')](function(_0x3b027f){logger[_0x0d8b('0xb')](_0x0d8b('0xc'),_0x4a4470,_0x0d8b('0xd'));logger[_0x0d8b('0xe')](_0x0d8b('0xf'),_0x4a4470,'request\x20sent',JSON[_0x0d8b('0x10')](_0x3b027f));if(_0x3b027f['error']){if(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x12')]===0x1f4){logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);return _0x58e4e2(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);}logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);return _0x284169(_0x3b027f[_0x0d8b('0x11')][_0x0d8b('0x13')]);}else{logger['info'](_0x0d8b('0xc'),_0x4a4470,_0x0d8b('0xd'));_0x284169(_0x3b027f[_0x0d8b('0x14')][_0x0d8b('0x13')]);}})[_0x0d8b('0x15')](function(_0x5cd485){logger[_0x0d8b('0x11')](_0x0d8b('0xc'),_0x4a4470,_0x5cd485);_0x58e4e2(_0x5cd485);});});}
\ No newline at end of file
+var _0xb43b=['rpc','../../config/environment','http','request','info','request\x20sent','debug','ServicenowField,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ServicenowField,\x20%s,\x20%s','catch','lodash','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x410b06,_0x2d35b6){var _0x5522ee=function(_0x41333a){while(--_0x41333a){_0x410b06['push'](_0x410b06['shift']());}};_0x5522ee(++_0x2d35b6);}(_0xb43b,0x1b2));var _0xbb43=function(_0x59acaf,_0x65d7e2){_0x59acaf=_0x59acaf-0x0;var _0x3788f4=_0xb43b[_0x59acaf];return _0x3788f4;};'use strict';var _=require(_0xbb43('0x0'));var util=require(_0xbb43('0x1'));var moment=require('moment');var BPromise=require(_0xbb43('0x2'));var rs=require(_0xbb43('0x3'));var fs=require('fs');var Redis=require(_0xbb43('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xbb43('0x5'));var logger=require(_0xbb43('0x6'))(_0xbb43('0x7'));var config=require(_0xbb43('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0xbb43('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x553520,_0x80fe61,_0x1ccd49){return new BPromise(function(_0x2a2f11,_0x29ae1a){return client[_0xbb43('0xa')](_0x553520,_0x1ccd49)['then'](function(_0x208c2b){logger[_0xbb43('0xb')]('ServicenowField,\x20%s,\x20%s',_0x80fe61,_0xbb43('0xc'));logger[_0xbb43('0xd')](_0xbb43('0xe'),_0x80fe61,_0xbb43('0xc'),JSON[_0xbb43('0xf')](_0x208c2b));if(_0x208c2b[_0xbb43('0x10')]){if(_0x208c2b['error'][_0xbb43('0x11')]===0x1f4){logger[_0xbb43('0x10')]('ServicenowField,\x20%s,\x20%s',_0x80fe61,_0x208c2b['error'][_0xbb43('0x12')]);return _0x29ae1a(_0x208c2b['error']['message']);}logger[_0xbb43('0x10')]('ServicenowField,\x20%s,\x20%s',_0x80fe61,_0x208c2b[_0xbb43('0x10')][_0xbb43('0x12')]);return _0x2a2f11(_0x208c2b['error']['message']);}else{logger['info'](_0xbb43('0x13'),_0x80fe61,_0xbb43('0xc'));_0x2a2f11(_0x208c2b['result']['message']);}})[_0xbb43('0x14')](function(_0x563ce1){logger['error'](_0xbb43('0x13'),_0x80fe61,_0x563ce1);_0x29ae1a(_0x563ce1);});});}
\ No newline at end of file
index 5cb1616..d267eca 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','./intSugarcrmAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x48dd9c,_0x48f8b2){var _0x383bbb=function(_0x5a1bd5){while(--_0x5a1bd5){_0x48dd9c['push'](_0x48dd9c['shift']());}};_0x383bbb(++_0x48f8b2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2a6809,_0x44edde){_0x2a6809=_0x2a6809-0x0;var _0x11c371=_0xa9e0[_0x2a6809];return _0x11c371;};'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/configurations',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/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
+var _0xa9e0=['Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmAccount.controller','get','index','/:id','getConfigurations','/:id/fields','isAuthenticated','getFields','post','addConfiguration','put','update','destroy','exports','multer','util','path'];(function(_0x591d6a,_0x132f33){var _0x90a340=function(_0x25fb32){while(--_0x25fb32){_0x591d6a['push'](_0x591d6a['shift']());}};_0x90a340(++_0x132f33);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0xa9e0[_0x2bf141];return _0x48277b;};'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/configurations',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/configurations',auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x10')]);router[_0x0a9e('0x11')](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x12')]);router['delete'](_0x0a9e('0xa'),auth[_0x0a9e('0xd')](),controller[_0x0a9e('0x13')]);module[_0x0a9e('0x14')]=router;
\ No newline at end of file
index b928d58..6ad5e60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['remoteUri','sequelize','exports','STRING','username'];(function(_0x27aea0,_0x4da832){var _0x14a412=function(_0x38eb41){while(--_0x38eb41){_0x27aea0['push'](_0x27aea0['shift']());}};_0x14a412(++_0x4da832);}(_0xa9e0,0x123));var _0x0a9e=function(_0x34bc30,_0x177cb0){_0x34bc30=_0x34bc30-0x0;var _0x5706de=_0xa9e0[_0x34bc30];return _0x5706de;};'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(_0x4e22c6,_0x2ca391){var _0x5e4c2a=function(_0x35fecd){while(--_0x35fecd){_0x4e22c6['push'](_0x4e22c6['shift']());}};_0x5e4c2a(++_0x2ca391);}(_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
index eeaacb8..5eb9b10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce49=['undefined','count','set','Content-Range','save','then','destroy','error','stack','name','send','map','SugarcrmAccount','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','catch','params','find','create','update','body','getConfigurations','findOne','SugarcrmConfiguration','rawAttributes','order','addConfiguration','AccountId','Subjects','getSubjects','channel','Descriptions','SugarcrmField','getFields','created_by','description','date_start','parent_name','direction','username','password','remoteUri','slice','lastIndexOf','POST','%s%s','login','JSON','stringify','PLAIN','Invalid\x20Login','Password\x20Expired','format','get_module_fields','values','module_fields','remove','includes','value','test','getFields,\x20%s,\x20%s,\x20%s','Wrong\x20credentials','statusCode','rimraf','util','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/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','limit'];(function(_0x10220b,_0x5d681f){var _0x259f15=function(_0x3c608f){while(--_0x3c608f){_0x10220b['push'](_0x10220b['shift']());}};_0x259f15(++_0x5d681f);}(_0xce49,0x132));var _0x9ce4=function(_0x73bc65,_0x4baf77){_0x73bc65=_0x73bc65-0x0;var _0x512e06=_0xce49[_0x73bc65];return _0x512e06;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9ce4('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x9ce4('0x1'));var path=require('path');var sox=require('sox');var csv=require(_0x9ce4('0x2'));var ejs=require(_0x9ce4('0x3'));var fs=require('fs');var fs_extra=require(_0x9ce4('0x4'));var _=require(_0x9ce4('0x5'));var squel=require(_0x9ce4('0x6'));var crypto=require(_0x9ce4('0x7'));var jsforce=require(_0x9ce4('0x8'));var deskjs=require('desk.js');var toCsv=require(_0x9ce4('0x2'));var querystring=require(_0x9ce4('0x9'));var Papa=require(_0x9ce4('0xa'));var Redis=require(_0x9ce4('0xb'));var authService=require(_0x9ce4('0xc'));var qs=require(_0x9ce4('0xd'));var as=require(_0x9ce4('0xe'));var hardwareService=require(_0x9ce4('0xf'));var logger=require('../../config/logger')(_0x9ce4('0x10'));var utils=require(_0x9ce4('0x11'));var config=require('../../config/environment');var licenseUtil=require(_0x9ce4('0x12'));var db=require(_0x9ce4('0x13'))['db'];var integrations=require(_0x9ce4('0x14'));function respondWithStatusCode(_0x45ba01,_0x50ea36){_0x50ea36=_0x50ea36||0xcc;return function(_0x1f0353){if(_0x1f0353){return _0x45ba01[_0x9ce4('0x15')](_0x50ea36);}return _0x45ba01[_0x9ce4('0x16')](_0x50ea36)[_0x9ce4('0x17')]();};}function respondWithResult(_0x116663,_0x3614d2){_0x3614d2=_0x3614d2||0xc8;return function(_0x5caad8){if(_0x5caad8){return _0x116663['status'](_0x3614d2)[_0x9ce4('0x18')](_0x5caad8);}};}function respondWithFilteredResult(_0x3e66e6,_0x1a19a3){return function(_0xa4d55f){if(_0xa4d55f){var _0x40de5e=typeof _0x1a19a3[_0x9ce4('0x19')]==='undefined'&&typeof _0x1a19a3[_0x9ce4('0x1a')]===_0x9ce4('0x1b');var _0x388970=_0xa4d55f['count'];var _0x4d7390=_0x40de5e?0x0:_0x1a19a3[_0x9ce4('0x19')];var _0x3c14a5=_0x40de5e?_0xa4d55f[_0x9ce4('0x1c')]:_0x1a19a3[_0x9ce4('0x19')]+_0x1a19a3[_0x9ce4('0x1a')];var _0x3529ea;if(_0x3c14a5>=_0x388970){_0x3c14a5=_0x388970;_0x3529ea=0xc8;}else{_0x3529ea=0xce;}_0x3e66e6[_0x9ce4('0x16')](_0x3529ea);return _0x3e66e6[_0x9ce4('0x1d')](_0x9ce4('0x1e'),_0x4d7390+'-'+_0x3c14a5+'/'+_0x388970)[_0x9ce4('0x18')](_0xa4d55f);}return null;};}function patchUpdates(_0xeb22b1){return function(_0x21da49){try{jsonpatch['apply'](_0x21da49,_0xeb22b1,!![]);}catch(_0x146aa5){return BPromise['reject'](_0x146aa5);}return _0x21da49[_0x9ce4('0x1f')]();};}function saveUpdates(_0x385de5,_0x3e364f){return function(_0x253886){if(_0x253886){return _0x253886['update'](_0x385de5)[_0x9ce4('0x20')](function(_0x4ead4f){return _0x4ead4f;});}return null;};}function removeEntity(_0x2384c2,_0x17e99b){return function(_0x3799ab){if(_0x3799ab){return _0x3799ab[_0x9ce4('0x21')]()[_0x9ce4('0x20')](function(){_0x2384c2['status'](0xcc)[_0x9ce4('0x17')]();});}};}function handleEntityNotFound(_0x1f1f5f,_0x172fbb){return function(_0x5d9a4e){if(!_0x5d9a4e){_0x1f1f5f[_0x9ce4('0x15')](0x194);}return _0x5d9a4e;};}function handleError(_0x28b48d,_0x2767e6){_0x2767e6=_0x2767e6||0x1f4;return function(_0x2e0558){logger[_0x9ce4('0x22')](_0x2e0558[_0x9ce4('0x23')]);if(_0x2e0558['name']){delete _0x2e0558[_0x9ce4('0x24')];}_0x28b48d[_0x9ce4('0x16')](_0x2767e6)[_0x9ce4('0x25')](_0x2e0558);};}exports['index']=function(_0x2b79fd,_0x1a856a){var _0x59171d={},_0x3b3791={},_0x143d74={'count':0x0,'rows':[]};var _0xa430ab=_[_0x9ce4('0x26')](db[_0x9ce4('0x27')]['rawAttributes'],function(_0x2d7f70){return{'name':_0x2d7f70[_0x9ce4('0x28')],'type':_0x2d7f70[_0x9ce4('0x29')][_0x9ce4('0x2a')]};});_0x3b3791[_0x9ce4('0x2b')]=_['map'](_0xa430ab,'name');_0x3b3791[_0x9ce4('0x2c')]=_[_0x9ce4('0x2d')](_0x2b79fd[_0x9ce4('0x2c')]);_0x3b3791[_0x9ce4('0x2e')]=_['intersection'](_0x3b3791[_0x9ce4('0x2b')],_0x3b3791[_0x9ce4('0x2c')]);_0x59171d[_0x9ce4('0x2f')]=_[_0x9ce4('0x30')](_0x3b3791[_0x9ce4('0x2b')],qs['fields'](_0x2b79fd[_0x9ce4('0x2c')][_0x9ce4('0x31')]));_0x59171d['attributes']=_0x59171d['attributes'][_0x9ce4('0x32')]?_0x59171d[_0x9ce4('0x2f')]:_0x3b3791[_0x9ce4('0x2b')];if(!_0x2b79fd['query'][_0x9ce4('0x33')](_0x9ce4('0x34'))){_0x59171d[_0x9ce4('0x1a')]=qs[_0x9ce4('0x1a')](_0x2b79fd[_0x9ce4('0x2c')][_0x9ce4('0x1a')]);_0x59171d['offset']=qs['offset'](_0x2b79fd[_0x9ce4('0x2c')]['offset']);}_0x59171d['order']=qs[_0x9ce4('0x35')](_0x2b79fd[_0x9ce4('0x2c')]['sort']);_0x59171d[_0x9ce4('0x36')]=qs['filters'](_[_0x9ce4('0x37')](_0x2b79fd[_0x9ce4('0x2c')],_0x3b3791['filters']),_0xa430ab);if(_0x2b79fd[_0x9ce4('0x2c')][_0x9ce4('0x38')]){_0x59171d[_0x9ce4('0x36')]=_[_0x9ce4('0x39')](_0x59171d[_0x9ce4('0x36')],{'$or':_[_0x9ce4('0x26')](_0xa430ab,function(_0x137177){if(_0x137177[_0x9ce4('0x29')]!=='VIRTUAL'){var _0x5cb77d={};_0x5cb77d[_0x137177[_0x9ce4('0x24')]]={'$like':'%'+_0x2b79fd[_0x9ce4('0x2c')][_0x9ce4('0x38')]+'%'};return _0x5cb77d;}})});}_0x59171d=_[_0x9ce4('0x39')]({},_0x59171d,_0x2b79fd[_0x9ce4('0x3a')]);var _0x5165ca={'where':_0x59171d['where']};return db['SugarcrmAccount'][_0x9ce4('0x1c')](_0x5165ca)[_0x9ce4('0x20')](function(_0x18676f){_0x143d74[_0x9ce4('0x1c')]=_0x18676f;if(_0x2b79fd[_0x9ce4('0x2c')][_0x9ce4('0x3b')]){_0x59171d[_0x9ce4('0x3c')]=[{'all':!![]}];}return db[_0x9ce4('0x27')][_0x9ce4('0x3d')](_0x59171d);})[_0x9ce4('0x20')](function(_0x235b36){_0x143d74[_0x9ce4('0x3e')]=_0x235b36;return _0x143d74;})[_0x9ce4('0x20')](respondWithFilteredResult(_0x1a856a,_0x59171d))[_0x9ce4('0x3f')](handleError(_0x1a856a,null));};exports['show']=function(_0x439bd6,_0x3346f2){var _0x4664f6={'raw':![],'where':{'id':_0x439bd6[_0x9ce4('0x40')]['id']}},_0x58d5a5={};_0x58d5a5[_0x9ce4('0x2b')]=_[_0x9ce4('0x2d')](db['SugarcrmAccount']['rawAttributes']);_0x58d5a5[_0x9ce4('0x2c')]=_[_0x9ce4('0x2d')](_0x439bd6[_0x9ce4('0x2c')]);_0x58d5a5[_0x9ce4('0x2e')]=_[_0x9ce4('0x30')](_0x58d5a5['model'],_0x58d5a5[_0x9ce4('0x2c')]);_0x4664f6[_0x9ce4('0x2f')]=_[_0x9ce4('0x30')](_0x58d5a5[_0x9ce4('0x2b')],qs[_0x9ce4('0x31')](_0x439bd6[_0x9ce4('0x2c')]['fields']));_0x4664f6[_0x9ce4('0x2f')]=_0x4664f6[_0x9ce4('0x2f')]['length']?_0x4664f6[_0x9ce4('0x2f')]:_0x58d5a5['model'];if(_0x439bd6[_0x9ce4('0x2c')][_0x9ce4('0x3b')]){_0x4664f6[_0x9ce4('0x3c')]=[{'all':!![]}];}_0x4664f6=_[_0x9ce4('0x39')]({},_0x4664f6,_0x439bd6[_0x9ce4('0x3a')]);return db[_0x9ce4('0x27')][_0x9ce4('0x41')](_0x4664f6)[_0x9ce4('0x20')](handleEntityNotFound(_0x3346f2,null))[_0x9ce4('0x20')](respondWithResult(_0x3346f2,null))[_0x9ce4('0x3f')](handleError(_0x3346f2,null));};exports[_0x9ce4('0x42')]=function(_0x493398,_0x486e4b){return db[_0x9ce4('0x27')][_0x9ce4('0x42')](_0x493398['body'],{})[_0x9ce4('0x20')](respondWithResult(_0x486e4b,0xc9))['catch'](handleError(_0x486e4b,null));};exports[_0x9ce4('0x43')]=function(_0x33434c,_0x115dea){if(_0x33434c[_0x9ce4('0x44')]['id']){delete _0x33434c[_0x9ce4('0x44')]['id'];}return db[_0x9ce4('0x27')][_0x9ce4('0x41')]({'where':{'id':_0x33434c[_0x9ce4('0x40')]['id']}})[_0x9ce4('0x20')](handleEntityNotFound(_0x115dea,null))['then'](saveUpdates(_0x33434c[_0x9ce4('0x44')],null))[_0x9ce4('0x20')](respondWithResult(_0x115dea,null))[_0x9ce4('0x3f')](handleError(_0x115dea,null));};exports[_0x9ce4('0x21')]=function(_0x948a0a,_0x359d10){return db[_0x9ce4('0x27')]['find']({'where':{'id':_0x948a0a['params']['id']}})[_0x9ce4('0x20')](handleEntityNotFound(_0x359d10,null))[_0x9ce4('0x20')](removeEntity(_0x359d10,null))[_0x9ce4('0x3f')](handleError(_0x359d10,null));};exports[_0x9ce4('0x45')]=function(_0x5808cf,_0x2db0f7,_0x22993b){var _0x56a3d0={};var _0x4c742c={};var _0x3d7d51;var _0xbb9ea4;return db[_0x9ce4('0x27')][_0x9ce4('0x46')]({'where':{'id':_0x5808cf[_0x9ce4('0x40')]['id']}})[_0x9ce4('0x20')](handleEntityNotFound(_0x2db0f7,null))[_0x9ce4('0x20')](function(_0x1067bc){if(_0x1067bc){_0x3d7d51=_0x1067bc;_0x4c742c[_0x9ce4('0x2b')]=_[_0x9ce4('0x2d')](db[_0x9ce4('0x47')][_0x9ce4('0x48')]);_0x4c742c[_0x9ce4('0x2c')]=_[_0x9ce4('0x2d')](_0x5808cf[_0x9ce4('0x2c')]);_0x4c742c[_0x9ce4('0x2e')]=_[_0x9ce4('0x30')](_0x4c742c['model'],_0x4c742c['query']);_0x56a3d0['attributes']=_[_0x9ce4('0x30')](_0x4c742c[_0x9ce4('0x2b')],qs[_0x9ce4('0x31')](_0x5808cf['query'][_0x9ce4('0x31')]));_0x56a3d0['attributes']=_0x56a3d0['attributes'][_0x9ce4('0x32')]?_0x56a3d0[_0x9ce4('0x2f')]:_0x4c742c[_0x9ce4('0x2b')];_0x56a3d0[_0x9ce4('0x49')]=qs[_0x9ce4('0x35')](_0x5808cf[_0x9ce4('0x2c')][_0x9ce4('0x35')]);_0x56a3d0['where']=qs[_0x9ce4('0x2e')](_['pick'](_0x5808cf[_0x9ce4('0x2c')],_0x4c742c['filters']));if(_0x5808cf[_0x9ce4('0x2c')][_0x9ce4('0x38')]){_0x56a3d0[_0x9ce4('0x36')]=_[_0x9ce4('0x39')](_0x56a3d0[_0x9ce4('0x36')],{'$or':_[_0x9ce4('0x26')](_0x56a3d0[_0x9ce4('0x2f')],function(_0x5e286c){var _0xa96bcf={};_0xa96bcf[_0x5e286c]={'$like':'%'+_0x5808cf[_0x9ce4('0x2c')][_0x9ce4('0x38')]+'%'};return _0xa96bcf;})});}_0x56a3d0=_[_0x9ce4('0x39')]({},_0x56a3d0,_0x5808cf[_0x9ce4('0x3a')]);return _0x3d7d51[_0x9ce4('0x45')](_0x56a3d0);}})[_0x9ce4('0x20')](function(_0x1bc711){if(_0x1bc711){_0xbb9ea4=_0x1bc711[_0x9ce4('0x32')];if(!_0x5808cf[_0x9ce4('0x2c')][_0x9ce4('0x33')](_0x9ce4('0x34'))){_0x56a3d0[_0x9ce4('0x1a')]=qs[_0x9ce4('0x1a')](_0x5808cf[_0x9ce4('0x2c')]['limit']);_0x56a3d0['offset']=qs[_0x9ce4('0x19')](_0x5808cf['query'][_0x9ce4('0x19')]);}return _0x3d7d51['getConfigurations'](_0x56a3d0);}})[_0x9ce4('0x20')](function(_0x33af59){if(_0x33af59){return _0x33af59?{'count':_0xbb9ea4,'rows':_0x33af59}:null;}})[_0x9ce4('0x20')](respondWithResult(_0x2db0f7,null))[_0x9ce4('0x3f')](handleError(_0x2db0f7,null));};exports[_0x9ce4('0x4a')]=function(_0x1bd04a,_0x1bc873,_0x196249){if(_0x1bd04a['body']['id']){delete _0x1bd04a[_0x9ce4('0x44')]['id'];}return db[_0x9ce4('0x27')][_0x9ce4('0x46')]({'where':{'id':_0x1bd04a[_0x9ce4('0x40')]['id']}})['then'](handleEntityNotFound(_0x1bc873,null))[_0x9ce4('0x20')](function(_0xabbfc9){if(_0xabbfc9){_0x1bd04a[_0x9ce4('0x44')][_0x9ce4('0x4b')]=_0xabbfc9['id'];_0x1bd04a[_0x9ce4('0x44')][_0x9ce4('0x4c')]=integrations[_0x9ce4('0x4d')](_0x1bd04a['body'][_0x9ce4('0x4e')],_0x1bd04a[_0x9ce4('0x44')][_0x9ce4('0x29')]);_0x1bd04a[_0x9ce4('0x44')][_0x9ce4('0x4f')]=integrations['getDescriptions'](_0x1bd04a['body'][_0x9ce4('0x4e')],_0x1bd04a[_0x9ce4('0x44')]['type']);return db[_0x9ce4('0x47')][_0x9ce4('0x42')](_0x1bd04a['body'],{'include':[{'model':db[_0x9ce4('0x50')],'as':_0x9ce4('0x4c')},{'model':db[_0x9ce4('0x50')],'as':_0x9ce4('0x4f')}]});}return null;})[_0x9ce4('0x20')](respondWithResult(_0x1bc873,null))[_0x9ce4('0x3f')](handleError(_0x1bc873,null));};exports[_0x9ce4('0x51')]=function(_0x312db8,_0x32f3eb,_0x2a1747){var _0x452a5c='';var _0x2042ce=['id',_0x9ce4('0x24'),'assigned_user_id',_0x9ce4('0x52'),_0x9ce4('0x53'),_0x9ce4('0x54'),'duration_hours','duration_minutes','parent_id','parent_type',_0x9ce4('0x55'),_0x9ce4('0x56')];return db[_0x9ce4('0x27')][_0x9ce4('0x46')]({'where':{'id':_0x312db8['params']['id']},'attributes':['id',_0x9ce4('0x57'),_0x9ce4('0x58'),_0x9ce4('0x59')]})[_0x9ce4('0x20')](handleEntityNotFound(_0x32f3eb,null))[_0x9ce4('0x20')](function(_0x6341ca){if(_0x6341ca){_0x452a5c=_0x6341ca[_0x9ce4('0x59')];var _0x26fd9d=_0x452a5c[_0x9ce4('0x5a')](-0x1);if(_0x26fd9d==='/'){_0x452a5c=_0x452a5c['substring'](0x0,_0x452a5c[_0x9ce4('0x5b')](_0x26fd9d));}return rp({'method':_0x9ce4('0x5c'),'uri':util['format'](_0x9ce4('0x5d'),_0x452a5c,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x9ce4('0x5e'),'input_type':_0x9ce4('0x5f'),'response_type':_0x9ce4('0x5f'),'rest_data':JSON[_0x9ce4('0x60')]({'user_auth':{'user_name':_0x6341ca['username'],'password':_0x6341ca['password'],'encryption':_0x9ce4('0x61')},'application':'xCALLY\x20Motion\x20Integration'})}});}})[_0x9ce4('0x20')](function(_0x2fce2e){if(_0x2fce2e&&_0x2fce2e[_0x9ce4('0x24')]!==_0x9ce4('0x62')&&_0x2fce2e['name']!==_0x9ce4('0x63')){return rp({'method':_0x9ce4('0x5c'),'uri':util[_0x9ce4('0x64')](_0x9ce4('0x5d'),_0x452a5c,'/service/v4_1/rest.php'),'json':!![],'form':{'method':_0x9ce4('0x65'),'input_type':_0x9ce4('0x5f'),'response_type':_0x9ce4('0x5f'),'rest_data':JSON[_0x9ce4('0x60')]({'session':_0x2fce2e['id'],'module_name':'Calls'})}})['then'](function(_0x1a2202){if(_0x1a2202){var _0x11fc0d=_[_0x9ce4('0x66')](_0x1a2202[_0x9ce4('0x67')]);_[_0x9ce4('0x68')](_0x11fc0d,function(_0x3121f7){return _0x2042ce[_0x9ce4('0x69')](_0x3121f7[_0x9ce4('0x24')]);});return{'count':_0x11fc0d['length'],'rows':_[_0x9ce4('0x26')](_0x11fc0d,function(_0x894a11){return{'id':_0x894a11[_0x9ce4('0x24')],'name':_0x894a11['label'],'custom':_['endsWith'](_0x894a11['name'],'_c')?!![]:![],'options':_0x894a11[_0x9ce4('0x3a')]?_['map'](_[_0x9ce4('0x66')](_0x894a11[_0x9ce4('0x3a')]),function(_0xc278c2){return{'name':_0xc278c2[_0x9ce4('0x6a')],'value':_0xc278c2[_0x9ce4('0x24')]};}):[]};})};}})['then'](respondWithResult(_0x32f3eb,null))['catch'](function(_0x416e1d){var _0x57b3e1=_0x312db8['query'][_0x9ce4('0x6b')]?0x1f4:_0x416e1d['statusCode']||0x1f4;logger[_0x9ce4('0x22')](_0x9ce4('0x6c'),'getFields',_0x57b3e1,JSON['stringify'](_0x416e1d));delete _0x416e1d[_0x9ce4('0x24')];if(_0x57b3e1===0x191){_0x57b3e1=0x190;}_0x32f3eb[_0x9ce4('0x16')](_0x57b3e1)['send'](_0x312db8[_0x9ce4('0x2c')][_0x9ce4('0x6b')]?{'message':_0x9ce4('0x6d'),'statusCode':_0x416e1d[_0x9ce4('0x6e')]}:_0x416e1d);});}else{var _0x5c6258=0x1f4;_0x32f3eb['status'](_0x5c6258)[_0x9ce4('0x25')]({'message':'Wrong\x20credentials','statusCode':0x190});}});};
\ No newline at end of file
+var _0x9cbe=['set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','SugarcrmAccount','findAll','catch','show','params','fields','length','includeAll','find','create','body','getConfigurations','findOne','SugarcrmConfiguration','addConfiguration','getSubjects','channel','Descriptions','getDescriptions','SugarcrmField','Subjects','getFields','assigned_user_id','description','date_start','duration_minutes','parent_id','parent_name','direction','username','password','remoteUri','slice','substring','lastIndexOf','POST','format','%s%s','/service/v4_1/rest.php','login','JSON','PLAIN','xCALLY\x20Motion\x20Integration','Invalid\x20Login','get_module_fields','stringify','values','module_fields','includes','getFields,\x20%s,\x20%s,\x20%s','test','Wrong\x20credentials','statusCode','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','../../components/integrations/configuration','sendStatus','end','status','offset','limit','undefined','count'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x9cbe,0xcb));var _0xe9cb=function(_0xfa634c,_0x414e0e){_0xfa634c=_0xfa634c-0x0;var _0x73e478=_0x9cbe[_0xfa634c];return _0x73e478;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe9cb('0x0'));var zipdir=require(_0xe9cb('0x1'));var jsonpatch=require(_0xe9cb('0x2'));var rp=require('request-promise');var moment=require(_0xe9cb('0x3'));var BPromise=require(_0xe9cb('0x4'));var Mustache=require('mustache');var util=require(_0xe9cb('0x5'));var path=require(_0xe9cb('0x6'));var sox=require(_0xe9cb('0x7'));var csv=require('to-csv');var ejs=require(_0xe9cb('0x8'));var fs=require('fs');var fs_extra=require(_0xe9cb('0x9'));var _=require(_0xe9cb('0xa'));var squel=require(_0xe9cb('0xb'));var crypto=require(_0xe9cb('0xc'));var jsforce=require(_0xe9cb('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xe9cb('0xe'));var querystring=require('querystring');var Papa=require(_0xe9cb('0xf'));var Redis=require(_0xe9cb('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe9cb('0x11'));var hardwareService=require(_0xe9cb('0x12'));var logger=require(_0xe9cb('0x13'))('api');var utils=require(_0xe9cb('0x14'));var config=require(_0xe9cb('0x15'));var licenseUtil=require('../../config/license/util');var db=require(_0xe9cb('0x16'))['db'];var integrations=require(_0xe9cb('0x17'));function respondWithStatusCode(_0x481516,_0x36f310){_0x36f310=_0x36f310||0xcc;return function(_0x128f57){if(_0x128f57){return _0x481516[_0xe9cb('0x18')](_0x36f310);}return _0x481516['status'](_0x36f310)[_0xe9cb('0x19')]();};}function respondWithResult(_0x1fc4f9,_0x374f9d){_0x374f9d=_0x374f9d||0xc8;return function(_0x5119ec){if(_0x5119ec){return _0x1fc4f9[_0xe9cb('0x1a')](_0x374f9d)['json'](_0x5119ec);}};}function respondWithFilteredResult(_0x56a291,_0x1da900){return function(_0x40005e){if(_0x40005e){var _0x10207e=typeof _0x1da900[_0xe9cb('0x1b')]==='undefined'&&typeof _0x1da900[_0xe9cb('0x1c')]===_0xe9cb('0x1d');var _0x41c390=_0x40005e['count'];var _0x57b73b=_0x10207e?0x0:_0x1da900[_0xe9cb('0x1b')];var _0x2a66ca=_0x10207e?_0x40005e[_0xe9cb('0x1e')]:_0x1da900[_0xe9cb('0x1b')]+_0x1da900[_0xe9cb('0x1c')];var _0x52ae90;if(_0x2a66ca>=_0x41c390){_0x2a66ca=_0x41c390;_0x52ae90=0xc8;}else{_0x52ae90=0xce;}_0x56a291[_0xe9cb('0x1a')](_0x52ae90);return _0x56a291[_0xe9cb('0x1f')](_0xe9cb('0x20'),_0x57b73b+'-'+_0x2a66ca+'/'+_0x41c390)['json'](_0x40005e);}return null;};}function patchUpdates(_0x2234b7){return function(_0x38929d){try{jsonpatch[_0xe9cb('0x21')](_0x38929d,_0x2234b7,!![]);}catch(_0x538138){return BPromise[_0xe9cb('0x22')](_0x538138);}return _0x38929d[_0xe9cb('0x23')]();};}function saveUpdates(_0x2dc742,_0x420bfa){return function(_0x110f4c){if(_0x110f4c){return _0x110f4c[_0xe9cb('0x24')](_0x2dc742)[_0xe9cb('0x25')](function(_0x51549d){return _0x51549d;});}return null;};}function removeEntity(_0x47a819,_0xc731da){return function(_0x62f13d){if(_0x62f13d){return _0x62f13d[_0xe9cb('0x26')]()[_0xe9cb('0x25')](function(){_0x47a819[_0xe9cb('0x1a')](0xcc)[_0xe9cb('0x19')]();});}};}function handleEntityNotFound(_0x2d18e0,_0xb18161){return function(_0x3dd65c){if(!_0x3dd65c){_0x2d18e0[_0xe9cb('0x18')](0x194);}return _0x3dd65c;};}function handleError(_0x515a14,_0x23a3c1){_0x23a3c1=_0x23a3c1||0x1f4;return function(_0x4abbb2){logger[_0xe9cb('0x27')](_0x4abbb2[_0xe9cb('0x28')]);if(_0x4abbb2[_0xe9cb('0x29')]){delete _0x4abbb2[_0xe9cb('0x29')];}_0x515a14[_0xe9cb('0x1a')](_0x23a3c1)[_0xe9cb('0x2a')](_0x4abbb2);};}exports['index']=function(_0x5b26c9,_0x42f339){var _0x186632={},_0x258e98={},_0x184e15={'count':0x0,'rows':[]};var _0x3e8f89=_[_0xe9cb('0x2b')](db['SugarcrmAccount'][_0xe9cb('0x2c')],function(_0x532b41){return{'name':_0x532b41[_0xe9cb('0x2d')],'type':_0x532b41[_0xe9cb('0x2e')][_0xe9cb('0x2f')]};});_0x258e98[_0xe9cb('0x30')]=_['map'](_0x3e8f89,_0xe9cb('0x29'));_0x258e98[_0xe9cb('0x31')]=_[_0xe9cb('0x32')](_0x5b26c9[_0xe9cb('0x31')]);_0x258e98[_0xe9cb('0x33')]=_[_0xe9cb('0x34')](_0x258e98[_0xe9cb('0x30')],_0x258e98[_0xe9cb('0x31')]);_0x186632['attributes']=_[_0xe9cb('0x34')](_0x258e98[_0xe9cb('0x30')],qs['fields'](_0x5b26c9[_0xe9cb('0x31')]['fields']));_0x186632[_0xe9cb('0x35')]=_0x186632['attributes']['length']?_0x186632[_0xe9cb('0x35')]:_0x258e98[_0xe9cb('0x30')];if(!_0x5b26c9[_0xe9cb('0x31')][_0xe9cb('0x36')](_0xe9cb('0x37'))){_0x186632[_0xe9cb('0x1c')]=qs[_0xe9cb('0x1c')](_0x5b26c9['query'][_0xe9cb('0x1c')]);_0x186632[_0xe9cb('0x1b')]=qs[_0xe9cb('0x1b')](_0x5b26c9[_0xe9cb('0x31')][_0xe9cb('0x1b')]);}_0x186632[_0xe9cb('0x38')]=qs[_0xe9cb('0x39')](_0x5b26c9[_0xe9cb('0x31')]['sort']);_0x186632[_0xe9cb('0x3a')]=qs[_0xe9cb('0x33')](_[_0xe9cb('0x3b')](_0x5b26c9[_0xe9cb('0x31')],_0x258e98[_0xe9cb('0x33')]),_0x3e8f89);if(_0x5b26c9[_0xe9cb('0x31')]['filter']){_0x186632[_0xe9cb('0x3a')]=_[_0xe9cb('0x3c')](_0x186632[_0xe9cb('0x3a')],{'$or':_['map'](_0x3e8f89,function(_0xf3bcf9){if(_0xf3bcf9[_0xe9cb('0x2e')]!==_0xe9cb('0x3d')){var _0x53cd43={};_0x53cd43[_0xf3bcf9['name']]={'$like':'%'+_0x5b26c9['query'][_0xe9cb('0x3e')]+'%'};return _0x53cd43;}})});}_0x186632=_[_0xe9cb('0x3c')]({},_0x186632,_0x5b26c9[_0xe9cb('0x3f')]);var _0x5cc7eb={'where':_0x186632[_0xe9cb('0x3a')]};return db[_0xe9cb('0x40')]['count'](_0x5cc7eb)[_0xe9cb('0x25')](function(_0x2d5325){_0x184e15['count']=_0x2d5325;if(_0x5b26c9[_0xe9cb('0x31')]['includeAll']){_0x186632['include']=[{'all':!![]}];}return db[_0xe9cb('0x40')][_0xe9cb('0x41')](_0x186632);})[_0xe9cb('0x25')](function(_0x5de5b9){_0x184e15['rows']=_0x5de5b9;return _0x184e15;})[_0xe9cb('0x25')](respondWithFilteredResult(_0x42f339,_0x186632))[_0xe9cb('0x42')](handleError(_0x42f339,null));};exports[_0xe9cb('0x43')]=function(_0x384d5c,_0x5863b9){var _0x255019={'raw':![],'where':{'id':_0x384d5c[_0xe9cb('0x44')]['id']}},_0x1db92f={};_0x1db92f[_0xe9cb('0x30')]=_[_0xe9cb('0x32')](db[_0xe9cb('0x40')]['rawAttributes']);_0x1db92f[_0xe9cb('0x31')]=_[_0xe9cb('0x32')](_0x384d5c[_0xe9cb('0x31')]);_0x1db92f[_0xe9cb('0x33')]=_[_0xe9cb('0x34')](_0x1db92f['model'],_0x1db92f[_0xe9cb('0x31')]);_0x255019[_0xe9cb('0x35')]=_[_0xe9cb('0x34')](_0x1db92f['model'],qs['fields'](_0x384d5c[_0xe9cb('0x31')][_0xe9cb('0x45')]));_0x255019[_0xe9cb('0x35')]=_0x255019['attributes'][_0xe9cb('0x46')]?_0x255019[_0xe9cb('0x35')]:_0x1db92f[_0xe9cb('0x30')];if(_0x384d5c[_0xe9cb('0x31')][_0xe9cb('0x47')]){_0x255019['include']=[{'all':!![]}];}_0x255019=_[_0xe9cb('0x3c')]({},_0x255019,_0x384d5c[_0xe9cb('0x3f')]);return db[_0xe9cb('0x40')][_0xe9cb('0x48')](_0x255019)[_0xe9cb('0x25')](handleEntityNotFound(_0x5863b9,null))[_0xe9cb('0x25')](respondWithResult(_0x5863b9,null))[_0xe9cb('0x42')](handleError(_0x5863b9,null));};exports[_0xe9cb('0x49')]=function(_0x367cf6,_0x286f23){return db['SugarcrmAccount'][_0xe9cb('0x49')](_0x367cf6[_0xe9cb('0x4a')],{})[_0xe9cb('0x25')](respondWithResult(_0x286f23,0xc9))[_0xe9cb('0x42')](handleError(_0x286f23,null));};exports['update']=function(_0x2254e1,_0x49f15e){if(_0x2254e1[_0xe9cb('0x4a')]['id']){delete _0x2254e1[_0xe9cb('0x4a')]['id'];}return db[_0xe9cb('0x40')][_0xe9cb('0x48')]({'where':{'id':_0x2254e1['params']['id']}})[_0xe9cb('0x25')](handleEntityNotFound(_0x49f15e,null))[_0xe9cb('0x25')](saveUpdates(_0x2254e1[_0xe9cb('0x4a')],null))['then'](respondWithResult(_0x49f15e,null))[_0xe9cb('0x42')](handleError(_0x49f15e,null));};exports[_0xe9cb('0x26')]=function(_0x4be300,_0x5d9bc6){return db['SugarcrmAccount'][_0xe9cb('0x48')]({'where':{'id':_0x4be300[_0xe9cb('0x44')]['id']}})['then'](handleEntityNotFound(_0x5d9bc6,null))['then'](removeEntity(_0x5d9bc6,null))[_0xe9cb('0x42')](handleError(_0x5d9bc6,null));};exports[_0xe9cb('0x4b')]=function(_0x138b24,_0x2754ea,_0x6ee8a7){var _0x490d15={};var _0x447afa={};var _0x21b363;var _0x535085;return db[_0xe9cb('0x40')][_0xe9cb('0x4c')]({'where':{'id':_0x138b24[_0xe9cb('0x44')]['id']}})['then'](handleEntityNotFound(_0x2754ea,null))[_0xe9cb('0x25')](function(_0x5d16f5){if(_0x5d16f5){_0x21b363=_0x5d16f5;_0x447afa['model']=_[_0xe9cb('0x32')](db[_0xe9cb('0x4d')]['rawAttributes']);_0x447afa[_0xe9cb('0x31')]=_[_0xe9cb('0x32')](_0x138b24[_0xe9cb('0x31')]);_0x447afa[_0xe9cb('0x33')]=_['intersection'](_0x447afa[_0xe9cb('0x30')],_0x447afa['query']);_0x490d15[_0xe9cb('0x35')]=_[_0xe9cb('0x34')](_0x447afa[_0xe9cb('0x30')],qs[_0xe9cb('0x45')](_0x138b24['query'][_0xe9cb('0x45')]));_0x490d15[_0xe9cb('0x35')]=_0x490d15[_0xe9cb('0x35')][_0xe9cb('0x46')]?_0x490d15[_0xe9cb('0x35')]:_0x447afa[_0xe9cb('0x30')];_0x490d15[_0xe9cb('0x38')]=qs[_0xe9cb('0x39')](_0x138b24[_0xe9cb('0x31')]['sort']);_0x490d15['where']=qs[_0xe9cb('0x33')](_['pick'](_0x138b24[_0xe9cb('0x31')],_0x447afa['filters']));if(_0x138b24[_0xe9cb('0x31')][_0xe9cb('0x3e')]){_0x490d15['where']=_['merge'](_0x490d15['where'],{'$or':_[_0xe9cb('0x2b')](_0x490d15[_0xe9cb('0x35')],function(_0x10c8be){var _0x1fc01d={};_0x1fc01d[_0x10c8be]={'$like':'%'+_0x138b24[_0xe9cb('0x31')][_0xe9cb('0x3e')]+'%'};return _0x1fc01d;})});}_0x490d15=_[_0xe9cb('0x3c')]({},_0x490d15,_0x138b24[_0xe9cb('0x3f')]);return _0x21b363[_0xe9cb('0x4b')](_0x490d15);}})[_0xe9cb('0x25')](function(_0x44468b){if(_0x44468b){_0x535085=_0x44468b[_0xe9cb('0x46')];if(!_0x138b24['query'][_0xe9cb('0x36')](_0xe9cb('0x37'))){_0x490d15['limit']=qs[_0xe9cb('0x1c')](_0x138b24['query'][_0xe9cb('0x1c')]);_0x490d15[_0xe9cb('0x1b')]=qs[_0xe9cb('0x1b')](_0x138b24[_0xe9cb('0x31')][_0xe9cb('0x1b')]);}return _0x21b363['getConfigurations'](_0x490d15);}})[_0xe9cb('0x25')](function(_0x591458){if(_0x591458){return _0x591458?{'count':_0x535085,'rows':_0x591458}:null;}})['then'](respondWithResult(_0x2754ea,null))[_0xe9cb('0x42')](handleError(_0x2754ea,null));};exports[_0xe9cb('0x4e')]=function(_0x167d71,_0x2e66dc,_0x28ce3a){if(_0x167d71[_0xe9cb('0x4a')]['id']){delete _0x167d71[_0xe9cb('0x4a')]['id'];}return db[_0xe9cb('0x40')]['findOne']({'where':{'id':_0x167d71[_0xe9cb('0x44')]['id']}})[_0xe9cb('0x25')](handleEntityNotFound(_0x2e66dc,null))['then'](function(_0x3744a5){if(_0x3744a5){_0x167d71[_0xe9cb('0x4a')]['AccountId']=_0x3744a5['id'];_0x167d71['body']['Subjects']=integrations[_0xe9cb('0x4f')](_0x167d71[_0xe9cb('0x4a')][_0xe9cb('0x50')],_0x167d71[_0xe9cb('0x4a')]['type']);_0x167d71[_0xe9cb('0x4a')][_0xe9cb('0x51')]=integrations[_0xe9cb('0x52')](_0x167d71[_0xe9cb('0x4a')][_0xe9cb('0x50')],_0x167d71[_0xe9cb('0x4a')]['type']);return db['SugarcrmConfiguration'][_0xe9cb('0x49')](_0x167d71[_0xe9cb('0x4a')],{'include':[{'model':db[_0xe9cb('0x53')],'as':_0xe9cb('0x54')},{'model':db[_0xe9cb('0x53')],'as':_0xe9cb('0x51')}]});}return null;})['then'](respondWithResult(_0x2e66dc,null))[_0xe9cb('0x42')](handleError(_0x2e66dc,null));};exports[_0xe9cb('0x55')]=function(_0x27a0ce,_0x1af4f5,_0x4549a0){var _0x53c5dc='';var _0x4558bf=['id',_0xe9cb('0x29'),_0xe9cb('0x56'),'created_by',_0xe9cb('0x57'),_0xe9cb('0x58'),'duration_hours',_0xe9cb('0x59'),_0xe9cb('0x5a'),'parent_type',_0xe9cb('0x5b'),_0xe9cb('0x5c')];return db[_0xe9cb('0x40')][_0xe9cb('0x4c')]({'where':{'id':_0x27a0ce['params']['id']},'attributes':['id',_0xe9cb('0x5d'),_0xe9cb('0x5e'),_0xe9cb('0x5f')]})[_0xe9cb('0x25')](handleEntityNotFound(_0x1af4f5,null))[_0xe9cb('0x25')](function(_0x1e66c4){if(_0x1e66c4){_0x53c5dc=_0x1e66c4[_0xe9cb('0x5f')];var _0x433d79=_0x53c5dc[_0xe9cb('0x60')](-0x1);if(_0x433d79==='/'){_0x53c5dc=_0x53c5dc[_0xe9cb('0x61')](0x0,_0x53c5dc[_0xe9cb('0x62')](_0x433d79));}return rp({'method':_0xe9cb('0x63'),'uri':util[_0xe9cb('0x64')](_0xe9cb('0x65'),_0x53c5dc,_0xe9cb('0x66')),'json':!![],'form':{'method':_0xe9cb('0x67'),'input_type':_0xe9cb('0x68'),'response_type':_0xe9cb('0x68'),'rest_data':JSON['stringify']({'user_auth':{'user_name':_0x1e66c4[_0xe9cb('0x5d')],'password':_0x1e66c4[_0xe9cb('0x5e')],'encryption':_0xe9cb('0x69')},'application':_0xe9cb('0x6a')})}});}})[_0xe9cb('0x25')](function(_0xb58b1b){if(_0xb58b1b&&_0xb58b1b[_0xe9cb('0x29')]!==_0xe9cb('0x6b')&&_0xb58b1b[_0xe9cb('0x29')]!=='Password\x20Expired'){return rp({'method':_0xe9cb('0x63'),'uri':util[_0xe9cb('0x64')](_0xe9cb('0x65'),_0x53c5dc,_0xe9cb('0x66')),'json':!![],'form':{'method':_0xe9cb('0x6c'),'input_type':_0xe9cb('0x68'),'response_type':'JSON','rest_data':JSON[_0xe9cb('0x6d')]({'session':_0xb58b1b['id'],'module_name':'Calls'})}})[_0xe9cb('0x25')](function(_0x5da3ad){if(_0x5da3ad){var _0x61b058=_[_0xe9cb('0x6e')](_0x5da3ad[_0xe9cb('0x6f')]);_['remove'](_0x61b058,function(_0x23564b){return _0x4558bf[_0xe9cb('0x70')](_0x23564b['name']);});return{'count':_0x61b058[_0xe9cb('0x46')],'rows':_[_0xe9cb('0x2b')](_0x61b058,function(_0x19b44a){return{'id':_0x19b44a[_0xe9cb('0x29')],'name':_0x19b44a['label'],'custom':_['endsWith'](_0x19b44a[_0xe9cb('0x29')],'_c')?!![]:![],'options':_0x19b44a[_0xe9cb('0x3f')]?_[_0xe9cb('0x2b')](_['values'](_0x19b44a[_0xe9cb('0x3f')]),function(_0x109859){return{'name':_0x109859['value'],'value':_0x109859[_0xe9cb('0x29')]};}):[]};})};}})[_0xe9cb('0x25')](respondWithResult(_0x1af4f5,null))[_0xe9cb('0x42')](function(_0x1cf0cd){var _0x3f1f3c=_0x27a0ce[_0xe9cb('0x31')]['test']?0x1f4:_0x1cf0cd['statusCode']||0x1f4;logger[_0xe9cb('0x27')](_0xe9cb('0x71'),'getFields',_0x3f1f3c,JSON[_0xe9cb('0x6d')](_0x1cf0cd));delete _0x1cf0cd['name'];if(_0x3f1f3c===0x191){_0x3f1f3c=0x190;}_0x1af4f5['status'](_0x3f1f3c)[_0xe9cb('0x2a')](_0x27a0ce[_0xe9cb('0x31')][_0xe9cb('0x72')]?{'message':_0xe9cb('0x73'),'statusCode':_0x1cf0cd[_0xe9cb('0x74')]}:_0x1cf0cd);});}else{var _0x1726a4=0x1f4;_0x1af4f5[_0xe9cb('0x1a')](_0x1726a4)[_0xe9cb('0x2a')]({'message':_0xe9cb('0x73'),'statusCode':0x190});}});};
\ No newline at end of file
index f1e40a0..ce18d5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef1a=['int_sugarcrm_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmAccount.attributes','../../components/integrations/configuration','exports','define','SugarcrmAccount'];(function(_0x264545,_0x214037){var _0x114d10=function(_0x9e3461){while(--_0x9e3461){_0x264545['push'](_0x264545['shift']());}};_0x114d10(++_0x214037);}(_0xef1a,0x1c1));var _0xaef1=function(_0x174b96,_0x1d7827){_0x174b96=_0x174b96-0x0;var _0x219bab=_0xef1a[_0x174b96];return _0x219bab;};'use strict';var _=require(_0xaef1('0x0'));var util=require(_0xaef1('0x1'));var logger=require(_0xaef1('0x2'))(_0xaef1('0x3'));var moment=require(_0xaef1('0x4'));var BPromise=require(_0xaef1('0x5'));var rp=require(_0xaef1('0x6'));var fs=require('fs');var path=require(_0xaef1('0x7'));var rimraf=require(_0xaef1('0x8'));var config=require(_0xaef1('0x9'));var attributes=require(_0xaef1('0xa'));var integrations=require(_0xaef1('0xb'));module[_0xaef1('0xc')]=function(_0x20bf1c,_0x4142d0){return _0x20bf1c[_0xaef1('0xd')](_0xaef1('0xe'),attributes,{'tableName':_0xaef1('0xf'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xafcd=['../../config/environment','./intSugarcrmAccount.attributes','exports','SugarcrmAccount','int_sugarcrm_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf'];(function(_0xb6e43,_0x1568fc){var _0x47c40f=function(_0x107786){while(--_0x107786){_0xb6e43['push'](_0xb6e43['shift']());}};_0x47c40f(++_0x1568fc);}(_0xafcd,0x157));var _0xdafc=function(_0x1c9fc5,_0x3ca335){_0x1c9fc5=_0x1c9fc5-0x0;var _0x4eea03=_0xafcd[_0x1c9fc5];return _0x4eea03;};'use strict';var _=require(_0xdafc('0x0'));var util=require(_0xdafc('0x1'));var logger=require(_0xdafc('0x2'))(_0xdafc('0x3'));var moment=require(_0xdafc('0x4'));var BPromise=require(_0xdafc('0x5'));var rp=require(_0xdafc('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0xdafc('0x7'));var config=require(_0xdafc('0x8'));var attributes=require(_0xdafc('0x9'));var integrations=require('../../components/integrations/configuration');module[_0xdafc('0xa')]=function(_0x2aa781,_0x33adc9){return _0x2aa781['define'](_0xdafc('0xb'),attributes,{'tableName':_0xdafc('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6187a63..6d5ce42 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1137=['SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','GetSugarcrmAccount','SugarcrmAccount','findAll','options','raw','where','attributes','limit','include','map','model','debug','ShowSugarcrmAccount','find','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/environment','client','http','then','info','SugarcrmAccount,\x20%s,\x20%s','request\x20sent'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1137,0x1c1));var _0x7113=function(_0x4b2436,_0x452299){_0x4b2436=_0x4b2436-0x0;var _0x4f5ab2=_0x1137[_0x4b2436];return _0x4f5ab2;};'use strict';var _=require(_0x7113('0x0'));var util=require(_0x7113('0x1'));var moment=require('moment');var BPromise=require(_0x7113('0x2'));var rs=require(_0x7113('0x3'));var fs=require('fs');var Redis=require(_0x7113('0x4'));var db=require(_0x7113('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0x7113('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x7113('0x7')][_0x7113('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x2c5378,_0x3bebd9,_0x415ae7){return new BPromise(function(_0xcde3e1,_0x51234c){return client['request'](_0x2c5378,_0x415ae7)[_0x7113('0x9')](function(_0x423fb1){logger[_0x7113('0xa')](_0x7113('0xb'),_0x3bebd9,_0x7113('0xc'));logger['debug'](_0x7113('0xd'),_0x3bebd9,_0x7113('0xc'),JSON[_0x7113('0xe')](_0x423fb1));if(_0x423fb1[_0x7113('0xf')]){if(_0x423fb1[_0x7113('0xf')][_0x7113('0x10')]===0x1f4){logger['error']('SugarcrmAccount,\x20%s,\x20%s',_0x3bebd9,_0x423fb1[_0x7113('0xf')][_0x7113('0x11')]);return _0x51234c(_0x423fb1[_0x7113('0xf')][_0x7113('0x11')]);}logger[_0x7113('0xf')](_0x7113('0xb'),_0x3bebd9,_0x423fb1[_0x7113('0xf')]['message']);return _0xcde3e1(_0x423fb1[_0x7113('0xf')]['message']);}else{logger[_0x7113('0xa')]('SugarcrmAccount,\x20%s,\x20%s',_0x3bebd9,'request\x20sent');_0xcde3e1(_0x423fb1['result']['message']);}})[_0x7113('0x12')](function(_0x25560c){logger['error'](_0x7113('0xb'),_0x3bebd9,_0x25560c);_0x51234c(_0x25560c);});});}exports[_0x7113('0x13')]=function(_0x33e076){var _0xf54b2f=this;return new Promise(function(_0x1daba1,_0x198a51){return db[_0x7113('0x14')][_0x7113('0x15')]({'raw':_0x33e076[_0x7113('0x16')]?_0x33e076['options'][_0x7113('0x17')]===undefined?!![]:![]:!![],'where':_0x33e076[_0x7113('0x16')]?_0x33e076[_0x7113('0x16')][_0x7113('0x18')]||null:null,'attributes':_0x33e076[_0x7113('0x16')]?_0x33e076[_0x7113('0x16')][_0x7113('0x19')]||null:null,'limit':_0x33e076['options']?_0x33e076[_0x7113('0x16')][_0x7113('0x1a')]||null:null,'include':_0x33e076[_0x7113('0x16')]?_0x33e076[_0x7113('0x16')][_0x7113('0x1b')]?_['map'](_0x33e076[_0x7113('0x16')][_0x7113('0x1b')],function(_0x1c7425){return{'model':db[_0x1c7425['model']],'as':_0x1c7425['as'],'attributes':_0x1c7425[_0x7113('0x19')],'include':_0x1c7425[_0x7113('0x1b')]?_[_0x7113('0x1c')](_0x1c7425[_0x7113('0x1b')],function(_0x5c3c0f){return{'model':db[_0x5c3c0f[_0x7113('0x1d')]],'as':_0x5c3c0f['as'],'attributes':_0x5c3c0f[_0x7113('0x19')],'include':_0x5c3c0f[_0x7113('0x1b')]?_[_0x7113('0x1c')](_0x5c3c0f[_0x7113('0x1b')],function(_0x398cff){return{'model':db[_0x398cff[_0x7113('0x1d')]],'as':_0x398cff['as'],'attributes':_0x398cff[_0x7113('0x19')]};}):[]};}):[]};}):[]:[]})[_0x7113('0x9')](function(_0x2df32d){logger[_0x7113('0xa')]('GetSugarcrmAccount',_0x33e076);logger[_0x7113('0x1e')](_0x7113('0x13'),_0x33e076,JSON[_0x7113('0xe')](_0x2df32d));_0x1daba1(_0x2df32d);})[_0x7113('0x12')](function(_0x3e23c4){logger[_0x7113('0xf')](_0x7113('0x13'),_0x3e23c4[_0x7113('0x11')],_0x33e076);_0x198a51(_0xf54b2f[_0x7113('0xf')](0x1f4,_0x3e23c4[_0x7113('0x11')]));});});};exports[_0x7113('0x1f')]=function(_0x429441){var _0x2c1f61=this;return new Promise(function(_0x139730,_0x140501){return db[_0x7113('0x14')][_0x7113('0x20')]({'raw':_0x429441[_0x7113('0x16')]?_0x429441[_0x7113('0x16')]['raw']===undefined?!![]:![]:!![],'where':_0x429441[_0x7113('0x16')]?_0x429441['options'][_0x7113('0x18')]||null:null,'attributes':_0x429441['options']?_0x429441[_0x7113('0x16')][_0x7113('0x19')]||null:null,'include':_0x429441[_0x7113('0x16')]?_0x429441['options'][_0x7113('0x1b')]?_[_0x7113('0x1c')](_0x429441[_0x7113('0x16')][_0x7113('0x1b')],function(_0x4723b5){return{'model':db[_0x4723b5['model']],'as':_0x4723b5['as'],'attributes':_0x4723b5[_0x7113('0x19')],'include':_0x4723b5['include']?_['map'](_0x4723b5[_0x7113('0x1b')],function(_0x1604eb){return{'model':db[_0x1604eb[_0x7113('0x1d')]],'as':_0x1604eb['as'],'attributes':_0x1604eb['attributes'],'include':_0x1604eb[_0x7113('0x1b')]?_[_0x7113('0x1c')](_0x1604eb[_0x7113('0x1b')],function(_0x491657){return{'model':db[_0x491657['model']],'as':_0x491657['as'],'attributes':_0x491657[_0x7113('0x19')]};}):[]};}):[]};}):[]:[]})[_0x7113('0x9')](function(_0x55980d){logger[_0x7113('0xa')](_0x7113('0x1f'),_0x429441);logger[_0x7113('0x1e')](_0x7113('0x1f'),_0x429441,JSON[_0x7113('0xe')](_0x55980d));_0x139730(_0x55980d);})[_0x7113('0x12')](function(_0x8bd542){logger[_0x7113('0xf')](_0x7113('0x1f'),_0x8bd542['message'],_0x429441);_0x140501(_0x2c1f61[_0x7113('0xf')](0x1f4,_0x8bd542[_0x7113('0x11')]));});});};
\ No newline at end of file
+var _0x1324=['SugarcrmAccount,\x20%s,\x20%s','message','result','SugarcrmAccount','findAll','options','where','attributes','limit','include','map','catch','model','ShowSugarcrmAccount','lodash','moment','bluebird','randomstring','ioredis','jayson/promise','client','http','then','info','request\x20sent','debug','SugarcrmAccount,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x545b71,_0x4f44eb){var _0x26e587=function(_0x293b81){while(--_0x293b81){_0x545b71['push'](_0x545b71['shift']());}};_0x26e587(++_0x4f44eb);}(_0x1324,0x11c));var _0x4132=function(_0x4248e9,_0x19f4bc){_0x4248e9=_0x4248e9-0x0;var _0x4a26af=_0x1324[_0x4248e9];return _0x4a26af;};'use strict';var _=require(_0x4132('0x0'));var util=require('util');var moment=require(_0x4132('0x1'));var BPromise=require(_0x4132('0x2'));var rs=require(_0x4132('0x3'));var fs=require('fs');var Redis=require(_0x4132('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x4132('0x5'));var client=jayson[_0x4132('0x6')][_0x4132('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x584e72,_0x20f735,_0x9116f4){return new BPromise(function(_0x10e1d3,_0x52dbc7){return client['request'](_0x584e72,_0x9116f4)[_0x4132('0x8')](function(_0x2ac930){logger[_0x4132('0x9')]('SugarcrmAccount,\x20%s,\x20%s',_0x20f735,_0x4132('0xa'));logger[_0x4132('0xb')](_0x4132('0xc'),_0x20f735,_0x4132('0xa'),JSON[_0x4132('0xd')](_0x2ac930));if(_0x2ac930['error']){if(_0x2ac930[_0x4132('0xe')][_0x4132('0xf')]===0x1f4){logger[_0x4132('0xe')](_0x4132('0x10'),_0x20f735,_0x2ac930[_0x4132('0xe')][_0x4132('0x11')]);return _0x52dbc7(_0x2ac930[_0x4132('0xe')][_0x4132('0x11')]);}logger[_0x4132('0xe')]('SugarcrmAccount,\x20%s,\x20%s',_0x20f735,_0x2ac930[_0x4132('0xe')]['message']);return _0x10e1d3(_0x2ac930['error'][_0x4132('0x11')]);}else{logger['info']('SugarcrmAccount,\x20%s,\x20%s',_0x20f735,'request\x20sent');_0x10e1d3(_0x2ac930[_0x4132('0x12')]['message']);}})['catch'](function(_0x3cc37c){logger[_0x4132('0xe')]('SugarcrmAccount,\x20%s,\x20%s',_0x20f735,_0x3cc37c);_0x52dbc7(_0x3cc37c);});});}exports['GetSugarcrmAccount']=function(_0x296d91){var _0x3040ed=this;return new Promise(function(_0xb25952,_0x4da3eb){return db[_0x4132('0x13')][_0x4132('0x14')]({'raw':_0x296d91[_0x4132('0x15')]?_0x296d91[_0x4132('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x296d91[_0x4132('0x15')]?_0x296d91[_0x4132('0x15')][_0x4132('0x16')]||null:null,'attributes':_0x296d91[_0x4132('0x15')]?_0x296d91['options'][_0x4132('0x17')]||null:null,'limit':_0x296d91[_0x4132('0x15')]?_0x296d91[_0x4132('0x15')][_0x4132('0x18')]||null:null,'include':_0x296d91[_0x4132('0x15')]?_0x296d91[_0x4132('0x15')][_0x4132('0x19')]?_[_0x4132('0x1a')](_0x296d91[_0x4132('0x15')][_0x4132('0x19')],function(_0x1daa1f){return{'model':db[_0x1daa1f['model']],'as':_0x1daa1f['as'],'attributes':_0x1daa1f[_0x4132('0x17')],'include':_0x1daa1f['include']?_[_0x4132('0x1a')](_0x1daa1f[_0x4132('0x19')],function(_0x21f17e){return{'model':db[_0x21f17e['model']],'as':_0x21f17e['as'],'attributes':_0x21f17e['attributes'],'include':_0x21f17e[_0x4132('0x19')]?_[_0x4132('0x1a')](_0x21f17e[_0x4132('0x19')],function(_0x1314f9){return{'model':db[_0x1314f9['model']],'as':_0x1314f9['as'],'attributes':_0x1314f9[_0x4132('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x1da39c){logger[_0x4132('0x9')]('GetSugarcrmAccount',_0x296d91);logger[_0x4132('0xb')]('GetSugarcrmAccount',_0x296d91,JSON[_0x4132('0xd')](_0x1da39c));_0xb25952(_0x1da39c);})[_0x4132('0x1b')](function(_0x8315a5){logger['error']('GetSugarcrmAccount',_0x8315a5['message'],_0x296d91);_0x4da3eb(_0x3040ed[_0x4132('0xe')](0x1f4,_0x8315a5[_0x4132('0x11')]));});});};exports['ShowSugarcrmAccount']=function(_0x1498bf){var _0x371e57=this;return new Promise(function(_0x4e5115,_0x3cff4c){return db[_0x4132('0x13')]['find']({'raw':_0x1498bf['options']?_0x1498bf[_0x4132('0x15')]['raw']===undefined?!![]:![]:!![],'where':_0x1498bf['options']?_0x1498bf[_0x4132('0x15')][_0x4132('0x16')]||null:null,'attributes':_0x1498bf[_0x4132('0x15')]?_0x1498bf[_0x4132('0x15')][_0x4132('0x17')]||null:null,'include':_0x1498bf[_0x4132('0x15')]?_0x1498bf[_0x4132('0x15')][_0x4132('0x19')]?_[_0x4132('0x1a')](_0x1498bf[_0x4132('0x15')][_0x4132('0x19')],function(_0x3489e7){return{'model':db[_0x3489e7[_0x4132('0x1c')]],'as':_0x3489e7['as'],'attributes':_0x3489e7[_0x4132('0x17')],'include':_0x3489e7[_0x4132('0x19')]?_[_0x4132('0x1a')](_0x3489e7[_0x4132('0x19')],function(_0xcdb0f){return{'model':db[_0xcdb0f['model']],'as':_0xcdb0f['as'],'attributes':_0xcdb0f[_0x4132('0x17')],'include':_0xcdb0f[_0x4132('0x19')]?_[_0x4132('0x1a')](_0xcdb0f['include'],function(_0x527fbf){return{'model':db[_0x527fbf[_0x4132('0x1c')]],'as':_0x527fbf['as'],'attributes':_0x527fbf[_0x4132('0x17')]};}):[]};}):[]};}):[]:[]})[_0x4132('0x8')](function(_0x37400b){logger['info'](_0x4132('0x1d'),_0x1498bf);logger['debug'](_0x4132('0x1d'),_0x1498bf,JSON[_0x4132('0xd')](_0x37400b));_0x4e5115(_0x37400b);})[_0x4132('0x1b')](function(_0x1b5c98){logger[_0x4132('0xe')]('ShowSugarcrmAccount',_0x1b5c98['message'],_0x1498bf);_0x3cff4c(_0x371e57[_0x4132('0xe')](0x1f4,_0x1b5c98[_0x4132('0x11')]));});});};
\ No newline at end of file
index bd3c50b..149cf02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca70=['index','/:id','show','/:id/fields','getFields','/:id/subjects','getSubjects','/:id/descriptions','post','put','delete','destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intSugarcrmConfiguration.controller','get','isAuthenticated'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xca70,0x152));var _0x0ca7=function(_0x4e5964,_0x353e81){_0x4e5964=_0x4e5964-0x0;var _0x306ee5=_0xca70[_0x4e5964];return _0x306ee5;};'use strict';var multer=require('multer');var util=require(_0x0ca7('0x0'));var path=require(_0x0ca7('0x1'));var timeout=require(_0x0ca7('0x2'));var express=require(_0x0ca7('0x3'));var router=express[_0x0ca7('0x4')]();var fs_extra=require(_0x0ca7('0x5'));var auth=require(_0x0ca7('0x6'));var interaction=require(_0x0ca7('0x7'));var config=require(_0x0ca7('0x8'));var controller=require(_0x0ca7('0x9'));router[_0x0ca7('0xa')]('/',auth[_0x0ca7('0xb')](),controller[_0x0ca7('0xc')]);router[_0x0ca7('0xa')](_0x0ca7('0xd'),auth[_0x0ca7('0xb')](),controller[_0x0ca7('0xe')]);router[_0x0ca7('0xa')](_0x0ca7('0xf'),auth['isAuthenticated'](),controller[_0x0ca7('0x10')]);router[_0x0ca7('0xa')](_0x0ca7('0x11'),auth[_0x0ca7('0xb')](),controller[_0x0ca7('0x12')]);router[_0x0ca7('0xa')](_0x0ca7('0x13'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0x0ca7('0x14')]('/',auth[_0x0ca7('0xb')](),controller['create']);router[_0x0ca7('0x15')]('/:id',auth['isAuthenticated'](),controller['update']);router[_0x0ca7('0x16')](_0x0ca7('0xd'),auth[_0x0ca7('0xb')](),controller[_0x0ca7('0x17')]);module[_0x0ca7('0x18')]=router;
\ No newline at end of file
+var _0xbf28=['getSubjects','getDescriptions','post','create','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intSugarcrmConfiguration.controller','get','isAuthenticated','index','show','getFields','/:id/subjects'];(function(_0x31282b,_0xa476db){var _0x19c632=function(_0x207214){while(--_0x207214){_0x31282b['push'](_0x31282b['shift']());}};_0x19c632(++_0xa476db);}(_0xbf28,0x1c4));var _0x8bf2=function(_0x3991e2,_0x406cca){_0x3991e2=_0x3991e2-0x0;var _0x2f72a0=_0xbf28[_0x3991e2];return _0x2f72a0;};'use strict';var multer=require(_0x8bf2('0x0'));var util=require(_0x8bf2('0x1'));var path=require(_0x8bf2('0x2'));var timeout=require(_0x8bf2('0x3'));var express=require(_0x8bf2('0x4'));var router=express[_0x8bf2('0x5')]();var fs_extra=require(_0x8bf2('0x6'));var auth=require(_0x8bf2('0x7'));var interaction=require(_0x8bf2('0x8'));var config=require('../../config/environment');var controller=require(_0x8bf2('0x9'));router[_0x8bf2('0xa')]('/',auth[_0x8bf2('0xb')](),controller[_0x8bf2('0xc')]);router[_0x8bf2('0xa')]('/:id',auth[_0x8bf2('0xb')](),controller[_0x8bf2('0xd')]);router['get']('/:id/fields',auth[_0x8bf2('0xb')](),controller[_0x8bf2('0xe')]);router[_0x8bf2('0xa')](_0x8bf2('0xf'),auth[_0x8bf2('0xb')](),controller[_0x8bf2('0x10')]);router['get']('/:id/descriptions',auth['isAuthenticated'](),controller[_0x8bf2('0x11')]);router[_0x8bf2('0x12')]('/',auth['isAuthenticated'](),controller[_0x8bf2('0x13')]);router[_0x8bf2('0x14')](_0x8bf2('0x15'),auth[_0x8bf2('0xb')](),controller[_0x8bf2('0x16')]);router[_0x8bf2('0x17')]('/:id',auth[_0x8bf2('0xb')](),controller[_0x8bf2('0x18')]);module[_0x8bf2('0x19')]=router;
\ No newline at end of file
index 960f67e..40f2cb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4174=['STRING','sequelize','exports'];(function(_0xec7b2d,_0x150fa2){var _0x5004ae=function(_0x1102ab){while(--_0x1102ab){_0xec7b2d['push'](_0xec7b2d['shift']());}};_0x5004ae(++_0x150fa2);}(_0x4174,0xdc));var _0x4417=function(_0x23f9a4,_0x2bd07f){_0x23f9a4=_0x23f9a4-0x0;var _0x5eb386=_0x4174[_0x23f9a4];return _0x5eb386;};'use strict';var Sequelize=require(_0x4417('0x0'));module[_0x4417('0x1')]={'name':{'type':Sequelize[_0x4417('0x2')]},'description':{'type':Sequelize[_0x4417('0x2')]}};
\ No newline at end of file
+var _0xd589=['sequelize','exports','STRING'];(function(_0x47a7de,_0x45d33d){var _0x3abf02=function(_0x3e69d9){while(--_0x3e69d9){_0x47a7de['push'](_0x47a7de['shift']());}};_0x3abf02(++_0x45d33d);}(_0xd589,0x126));var _0x9d58=function(_0x2fd897,_0x1b5305){_0x2fd897=_0x2fd897-0x0;var _0x1de92f=_0xd589[_0x2fd897];return _0x1de92f;};'use strict';var Sequelize=require(_0x9d58('0x0'));module[_0x9d58('0x1')]={'name':{'type':Sequelize[_0x9d58('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 973c7d8..86bf770 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xca38=['filters','intersection','model','attributes','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','keys','fields','length','find','create','body','update','getFields','getSubjects','findOne','getDescriptions','SugarcrmField','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','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','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then','sendStatus','error','stack','name','index','map','SugarcrmConfiguration','rawAttributes','fieldName','type','query'];(function(_0x24fa1a,_0x16d9c2){var _0xc5621f=function(_0x5616ac){while(--_0x5616ac){_0x24fa1a['push'](_0x24fa1a['shift']());}};_0xc5621f(++_0x16d9c2);}(_0xca38,0x1ba));var _0x8ca3=function(_0x591aae,_0x1259f7){_0x591aae=_0x591aae-0x0;var _0x5d0fef=_0xca38[_0x591aae];return _0x5d0fef;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x8ca3('0x0'));var jsonpatch=require(_0x8ca3('0x1'));var rp=require(_0x8ca3('0x2'));var moment=require(_0x8ca3('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x8ca3('0x4'));var util=require('util');var path=require(_0x8ca3('0x5'));var sox=require(_0x8ca3('0x6'));var csv=require('to-csv');var ejs=require(_0x8ca3('0x7'));var fs=require('fs');var fs_extra=require(_0x8ca3('0x8'));var _=require(_0x8ca3('0x9'));var squel=require('squel');var crypto=require(_0x8ca3('0xa'));var jsforce=require(_0x8ca3('0xb'));var deskjs=require(_0x8ca3('0xc'));var toCsv=require(_0x8ca3('0xd'));var querystring=require(_0x8ca3('0xe'));var Papa=require(_0x8ca3('0xf'));var Redis=require(_0x8ca3('0x10'));var authService=require(_0x8ca3('0x11'));var qs=require(_0x8ca3('0x12'));var as=require(_0x8ca3('0x13'));var hardwareService=require(_0x8ca3('0x14'));var logger=require(_0x8ca3('0x15'))(_0x8ca3('0x16'));var utils=require(_0x8ca3('0x17'));var config=require(_0x8ca3('0x18'));var licenseUtil=require(_0x8ca3('0x19'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1e5ef3,_0x5203fb){_0x5203fb=_0x5203fb||0xcc;return function(_0x80f231){if(_0x80f231){return _0x1e5ef3['sendStatus'](_0x5203fb);}return _0x1e5ef3[_0x8ca3('0x1a')](_0x5203fb)[_0x8ca3('0x1b')]();};}function respondWithResult(_0x478f4e,_0x1002b9){_0x1002b9=_0x1002b9||0xc8;return function(_0x42f3f3){if(_0x42f3f3){return _0x478f4e[_0x8ca3('0x1a')](_0x1002b9)[_0x8ca3('0x1c')](_0x42f3f3);}};}function respondWithFilteredResult(_0x43de29,_0x1535d3){return function(_0x22bced){if(_0x22bced){var _0x345627=typeof _0x1535d3[_0x8ca3('0x1d')]===_0x8ca3('0x1e')&&typeof _0x1535d3[_0x8ca3('0x1f')]===_0x8ca3('0x1e');var _0x5177e9=_0x22bced[_0x8ca3('0x20')];var _0xdf90e6=_0x345627?0x0:_0x1535d3[_0x8ca3('0x1d')];var _0x44f964=_0x345627?_0x22bced[_0x8ca3('0x20')]:_0x1535d3[_0x8ca3('0x1d')]+_0x1535d3[_0x8ca3('0x1f')];var _0x251a88;if(_0x44f964>=_0x5177e9){_0x44f964=_0x5177e9;_0x251a88=0xc8;}else{_0x251a88=0xce;}_0x43de29[_0x8ca3('0x1a')](_0x251a88);return _0x43de29[_0x8ca3('0x21')](_0x8ca3('0x22'),_0xdf90e6+'-'+_0x44f964+'/'+_0x5177e9)[_0x8ca3('0x1c')](_0x22bced);}return null;};}function patchUpdates(_0x4ddb9f){return function(_0x2c9942){try{jsonpatch[_0x8ca3('0x23')](_0x2c9942,_0x4ddb9f,!![]);}catch(_0x4a4ded){return BPromise[_0x8ca3('0x24')](_0x4a4ded);}return _0x2c9942[_0x8ca3('0x25')]();};}function saveUpdates(_0x29f681,_0x18b0f8){return function(_0x55e599){if(_0x55e599){return _0x55e599['update'](_0x29f681)[_0x8ca3('0x26')](function(_0x93acfe){return _0x93acfe;});}return null;};}function removeEntity(_0x20b423,_0x74fee){return function(_0x526072){if(_0x526072){return _0x526072['destroy']()[_0x8ca3('0x26')](function(){_0x20b423[_0x8ca3('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x103874,_0x5c21ab){return function(_0x25b5bb){if(!_0x25b5bb){_0x103874[_0x8ca3('0x27')](0x194);}return _0x25b5bb;};}function handleError(_0x5d1fd3,_0x565812){_0x565812=_0x565812||0x1f4;return function(_0x27d537){logger[_0x8ca3('0x28')](_0x27d537[_0x8ca3('0x29')]);if(_0x27d537[_0x8ca3('0x2a')]){delete _0x27d537[_0x8ca3('0x2a')];}_0x5d1fd3['status'](_0x565812)['send'](_0x27d537);};}exports[_0x8ca3('0x2b')]=function(_0x301a85,_0x58ba83){var _0x1e45c3={},_0x2443c3={},_0xefb575={'count':0x0,'rows':[]};var _0x19ab47=_[_0x8ca3('0x2c')](db[_0x8ca3('0x2d')][_0x8ca3('0x2e')],function(_0x154273){return{'name':_0x154273[_0x8ca3('0x2f')],'type':_0x154273[_0x8ca3('0x30')]['key']};});_0x2443c3['model']=_['map'](_0x19ab47,_0x8ca3('0x2a'));_0x2443c3[_0x8ca3('0x31')]=_['keys'](_0x301a85[_0x8ca3('0x31')]);_0x2443c3[_0x8ca3('0x32')]=_[_0x8ca3('0x33')](_0x2443c3[_0x8ca3('0x34')],_0x2443c3[_0x8ca3('0x31')]);_0x1e45c3[_0x8ca3('0x35')]=_[_0x8ca3('0x33')](_0x2443c3[_0x8ca3('0x34')],qs['fields'](_0x301a85[_0x8ca3('0x31')]['fields']));_0x1e45c3['attributes']=_0x1e45c3[_0x8ca3('0x35')]['length']?_0x1e45c3[_0x8ca3('0x35')]:_0x2443c3[_0x8ca3('0x34')];if(!_0x301a85[_0x8ca3('0x31')][_0x8ca3('0x36')](_0x8ca3('0x37'))){_0x1e45c3['limit']=qs[_0x8ca3('0x1f')](_0x301a85[_0x8ca3('0x31')]['limit']);_0x1e45c3['offset']=qs[_0x8ca3('0x1d')](_0x301a85[_0x8ca3('0x31')]['offset']);}_0x1e45c3[_0x8ca3('0x38')]=qs[_0x8ca3('0x39')](_0x301a85[_0x8ca3('0x31')][_0x8ca3('0x39')]);_0x1e45c3['where']=qs[_0x8ca3('0x32')](_[_0x8ca3('0x3a')](_0x301a85[_0x8ca3('0x31')],_0x2443c3[_0x8ca3('0x32')]),_0x19ab47);if(_0x301a85[_0x8ca3('0x31')][_0x8ca3('0x3b')]){_0x1e45c3[_0x8ca3('0x3c')]=_[_0x8ca3('0x3d')](_0x1e45c3[_0x8ca3('0x3c')],{'$or':_[_0x8ca3('0x2c')](_0x19ab47,function(_0x5a968f){if(_0x5a968f[_0x8ca3('0x30')]!==_0x8ca3('0x3e')){var _0x5b8f28={};_0x5b8f28[_0x5a968f['name']]={'$like':'%'+_0x301a85[_0x8ca3('0x31')]['filter']+'%'};return _0x5b8f28;}})});}_0x1e45c3=_[_0x8ca3('0x3d')]({},_0x1e45c3,_0x301a85[_0x8ca3('0x3f')]);var _0x56d87f={'where':_0x1e45c3['where']};return db['SugarcrmConfiguration']['count'](_0x56d87f)[_0x8ca3('0x26')](function(_0xf462a3){_0xefb575[_0x8ca3('0x20')]=_0xf462a3;if(_0x301a85['query'][_0x8ca3('0x40')]){_0x1e45c3[_0x8ca3('0x41')]=[{'all':!![]}];}return db[_0x8ca3('0x2d')]['findAll'](_0x1e45c3);})[_0x8ca3('0x26')](function(_0x1859d4){_0xefb575[_0x8ca3('0x42')]=_0x1859d4;return _0xefb575;})[_0x8ca3('0x26')](respondWithFilteredResult(_0x58ba83,_0x1e45c3))[_0x8ca3('0x43')](handleError(_0x58ba83,null));};exports[_0x8ca3('0x44')]=function(_0x511755,_0x58c8a8){var _0x52fb7f={'raw':![],'where':{'id':_0x511755[_0x8ca3('0x45')]['id']}},_0x165785={};_0x165785[_0x8ca3('0x34')]=_[_0x8ca3('0x46')](db[_0x8ca3('0x2d')][_0x8ca3('0x2e')]);_0x165785['query']=_['keys'](_0x511755[_0x8ca3('0x31')]);_0x165785[_0x8ca3('0x32')]=_[_0x8ca3('0x33')](_0x165785[_0x8ca3('0x34')],_0x165785[_0x8ca3('0x31')]);_0x52fb7f[_0x8ca3('0x35')]=_[_0x8ca3('0x33')](_0x165785[_0x8ca3('0x34')],qs[_0x8ca3('0x47')](_0x511755[_0x8ca3('0x31')][_0x8ca3('0x47')]));_0x52fb7f[_0x8ca3('0x35')]=_0x52fb7f[_0x8ca3('0x35')][_0x8ca3('0x48')]?_0x52fb7f['attributes']:_0x165785[_0x8ca3('0x34')];if(_0x511755['query'][_0x8ca3('0x40')]){_0x52fb7f[_0x8ca3('0x41')]=[{'all':!![]}];}_0x52fb7f=_[_0x8ca3('0x3d')]({},_0x52fb7f,_0x511755[_0x8ca3('0x3f')]);return db[_0x8ca3('0x2d')][_0x8ca3('0x49')](_0x52fb7f)[_0x8ca3('0x26')](handleEntityNotFound(_0x58c8a8,null))['then'](respondWithResult(_0x58c8a8,null))[_0x8ca3('0x43')](handleError(_0x58c8a8,null));};exports[_0x8ca3('0x4a')]=function(_0x84055f,_0x154a26){return db[_0x8ca3('0x2d')]['create'](_0x84055f[_0x8ca3('0x4b')],{})['then'](respondWithResult(_0x154a26,0xc9))['catch'](handleError(_0x154a26,null));};exports[_0x8ca3('0x4c')]=function(_0x301e05,_0x10f016){if(_0x301e05['body']['id']){delete _0x301e05[_0x8ca3('0x4b')]['id'];}return db['SugarcrmConfiguration'][_0x8ca3('0x49')]({'where':{'id':_0x301e05[_0x8ca3('0x45')]['id']}})[_0x8ca3('0x26')](handleEntityNotFound(_0x10f016,null))['then'](saveUpdates(_0x301e05['body'],null))['then'](respondWithResult(_0x10f016,null))[_0x8ca3('0x43')](handleError(_0x10f016,null));};exports['destroy']=function(_0x49eb9b,_0x536335){return db[_0x8ca3('0x2d')][_0x8ca3('0x49')]({'where':{'id':_0x49eb9b[_0x8ca3('0x45')]['id']}})[_0x8ca3('0x26')](handleEntityNotFound(_0x536335,null))['then'](removeEntity(_0x536335,null))[_0x8ca3('0x43')](handleError(_0x536335,null));};exports[_0x8ca3('0x4d')]=function(_0x2a6f3c,_0x5abc60,_0x286431){var _0x16d02b={};var _0x5bdd40={};var _0x3e8938;var _0x298e70;return db[_0x8ca3('0x2d')]['findOne']({'where':{'id':_0x2a6f3c[_0x8ca3('0x45')]['id']}})['then'](handleEntityNotFound(_0x5abc60,null))[_0x8ca3('0x26')](function(_0xec8b1){if(_0xec8b1){_0x3e8938=_0xec8b1;_0x5bdd40[_0x8ca3('0x34')]=_['keys'](db['SugarcrmField'][_0x8ca3('0x2e')]);_0x5bdd40[_0x8ca3('0x31')]=_[_0x8ca3('0x46')](_0x2a6f3c[_0x8ca3('0x31')]);_0x5bdd40[_0x8ca3('0x32')]=_[_0x8ca3('0x33')](_0x5bdd40[_0x8ca3('0x34')],_0x5bdd40['query']);_0x16d02b[_0x8ca3('0x35')]=_[_0x8ca3('0x33')](_0x5bdd40[_0x8ca3('0x34')],qs[_0x8ca3('0x47')](_0x2a6f3c[_0x8ca3('0x31')][_0x8ca3('0x47')]));_0x16d02b[_0x8ca3('0x35')]=_0x16d02b['attributes'][_0x8ca3('0x48')]?_0x16d02b[_0x8ca3('0x35')]:_0x5bdd40[_0x8ca3('0x34')];_0x16d02b[_0x8ca3('0x38')]=qs[_0x8ca3('0x39')](_0x2a6f3c[_0x8ca3('0x31')][_0x8ca3('0x39')]);_0x16d02b[_0x8ca3('0x3c')]=qs[_0x8ca3('0x32')](_['pick'](_0x2a6f3c[_0x8ca3('0x31')],_0x5bdd40[_0x8ca3('0x32')]));if(_0x2a6f3c[_0x8ca3('0x31')][_0x8ca3('0x3b')]){_0x16d02b[_0x8ca3('0x3c')]=_[_0x8ca3('0x3d')](_0x16d02b['where'],{'$or':_[_0x8ca3('0x2c')](_0x16d02b[_0x8ca3('0x35')],function(_0x469d33){var _0x3d0c75={};_0x3d0c75[_0x469d33]={'$like':'%'+_0x2a6f3c[_0x8ca3('0x31')][_0x8ca3('0x3b')]+'%'};return _0x3d0c75;})});}_0x16d02b=_['merge']({},_0x16d02b,_0x2a6f3c['options']);return _0x3e8938[_0x8ca3('0x4d')](_0x16d02b);}})['then'](function(_0x4320e0){if(_0x4320e0){_0x298e70=_0x4320e0[_0x8ca3('0x48')];if(!_0x2a6f3c[_0x8ca3('0x31')][_0x8ca3('0x36')](_0x8ca3('0x37'))){_0x16d02b['limit']=qs[_0x8ca3('0x1f')](_0x2a6f3c[_0x8ca3('0x31')][_0x8ca3('0x1f')]);_0x16d02b[_0x8ca3('0x1d')]=qs['offset'](_0x2a6f3c[_0x8ca3('0x31')][_0x8ca3('0x1d')]);}return _0x3e8938[_0x8ca3('0x4d')](_0x16d02b);}})[_0x8ca3('0x26')](function(_0x5450cc){if(_0x5450cc){return _0x5450cc?{'count':_0x298e70,'rows':_0x5450cc}:null;}})[_0x8ca3('0x26')](respondWithResult(_0x5abc60,null))[_0x8ca3('0x43')](handleError(_0x5abc60,null));};exports[_0x8ca3('0x4e')]=function(_0x1e1cec,_0x7c20ba,_0x16f9b2){var _0x56e888={};var _0x312d91={};var _0x2fe64a;var _0x5d070f;return db[_0x8ca3('0x2d')][_0x8ca3('0x4f')]({'where':{'id':_0x1e1cec[_0x8ca3('0x45')]['id']}})[_0x8ca3('0x26')](handleEntityNotFound(_0x7c20ba,null))[_0x8ca3('0x26')](function(_0x562286){if(_0x562286){_0x2fe64a=_0x562286;_0x312d91[_0x8ca3('0x34')]=_['keys'](db['SugarcrmField']['rawAttributes']);_0x312d91[_0x8ca3('0x31')]=_[_0x8ca3('0x46')](_0x1e1cec[_0x8ca3('0x31')]);_0x312d91[_0x8ca3('0x32')]=_[_0x8ca3('0x33')](_0x312d91[_0x8ca3('0x34')],_0x312d91['query']);_0x56e888[_0x8ca3('0x35')]=_['intersection'](_0x312d91[_0x8ca3('0x34')],qs[_0x8ca3('0x47')](_0x1e1cec['query']['fields']));_0x56e888[_0x8ca3('0x35')]=_0x56e888[_0x8ca3('0x35')][_0x8ca3('0x48')]?_0x56e888[_0x8ca3('0x35')]:_0x312d91[_0x8ca3('0x34')];_0x56e888[_0x8ca3('0x38')]=qs[_0x8ca3('0x39')](_0x1e1cec['query'][_0x8ca3('0x39')]);_0x56e888[_0x8ca3('0x3c')]=qs[_0x8ca3('0x32')](_[_0x8ca3('0x3a')](_0x1e1cec[_0x8ca3('0x31')],_0x312d91[_0x8ca3('0x32')]));if(_0x1e1cec['query'][_0x8ca3('0x3b')]){_0x56e888[_0x8ca3('0x3c')]=_[_0x8ca3('0x3d')](_0x56e888[_0x8ca3('0x3c')],{'$or':_['map'](_0x56e888['attributes'],function(_0x3eb859){var _0x49cb1d={};_0x49cb1d[_0x3eb859]={'$like':'%'+_0x1e1cec[_0x8ca3('0x31')][_0x8ca3('0x3b')]+'%'};return _0x49cb1d;})});}_0x56e888=_[_0x8ca3('0x3d')]({},_0x56e888,_0x1e1cec[_0x8ca3('0x3f')]);return _0x2fe64a[_0x8ca3('0x4e')](_0x56e888);}})['then'](function(_0x4bbaaf){if(_0x4bbaaf){_0x5d070f=_0x4bbaaf[_0x8ca3('0x48')];if(!_0x1e1cec['query'][_0x8ca3('0x36')](_0x8ca3('0x37'))){_0x56e888[_0x8ca3('0x1f')]=qs['limit'](_0x1e1cec[_0x8ca3('0x31')][_0x8ca3('0x1f')]);_0x56e888['offset']=qs[_0x8ca3('0x1d')](_0x1e1cec[_0x8ca3('0x31')][_0x8ca3('0x1d')]);}return _0x2fe64a['getSubjects'](_0x56e888);}})[_0x8ca3('0x26')](function(_0x529009){if(_0x529009){return _0x529009?{'count':_0x5d070f,'rows':_0x529009}:null;}})[_0x8ca3('0x26')](respondWithResult(_0x7c20ba,null))['catch'](handleError(_0x7c20ba,null));};exports[_0x8ca3('0x50')]=function(_0x36eff7,_0x317952,_0x4a5b91){var _0x47706d={};var _0x586526={};var _0x23de6e;var _0x50f419;return db[_0x8ca3('0x2d')][_0x8ca3('0x4f')]({'where':{'id':_0x36eff7['params']['id']}})['then'](handleEntityNotFound(_0x317952,null))[_0x8ca3('0x26')](function(_0x37a86f){if(_0x37a86f){_0x23de6e=_0x37a86f;_0x586526[_0x8ca3('0x34')]=_[_0x8ca3('0x46')](db[_0x8ca3('0x51')][_0x8ca3('0x2e')]);_0x586526['query']=_[_0x8ca3('0x46')](_0x36eff7['query']);_0x586526[_0x8ca3('0x32')]=_[_0x8ca3('0x33')](_0x586526[_0x8ca3('0x34')],_0x586526['query']);_0x47706d[_0x8ca3('0x35')]=_[_0x8ca3('0x33')](_0x586526[_0x8ca3('0x34')],qs[_0x8ca3('0x47')](_0x36eff7[_0x8ca3('0x31')][_0x8ca3('0x47')]));_0x47706d[_0x8ca3('0x35')]=_0x47706d['attributes']['length']?_0x47706d[_0x8ca3('0x35')]:_0x586526[_0x8ca3('0x34')];_0x47706d[_0x8ca3('0x38')]=qs['sort'](_0x36eff7[_0x8ca3('0x31')][_0x8ca3('0x39')]);_0x47706d[_0x8ca3('0x3c')]=qs[_0x8ca3('0x32')](_[_0x8ca3('0x3a')](_0x36eff7[_0x8ca3('0x31')],_0x586526[_0x8ca3('0x32')]));if(_0x36eff7[_0x8ca3('0x31')][_0x8ca3('0x3b')]){_0x47706d[_0x8ca3('0x3c')]=_[_0x8ca3('0x3d')](_0x47706d[_0x8ca3('0x3c')],{'$or':_[_0x8ca3('0x2c')](_0x47706d[_0x8ca3('0x35')],function(_0x16cbe5){var _0x607d8f={};_0x607d8f[_0x16cbe5]={'$like':'%'+_0x36eff7['query']['filter']+'%'};return _0x607d8f;})});}_0x47706d=_[_0x8ca3('0x3d')]({},_0x47706d,_0x36eff7[_0x8ca3('0x3f')]);return _0x23de6e[_0x8ca3('0x50')](_0x47706d);}})[_0x8ca3('0x26')](function(_0x21d809){if(_0x21d809){_0x50f419=_0x21d809[_0x8ca3('0x48')];if(!_0x36eff7[_0x8ca3('0x31')][_0x8ca3('0x36')](_0x8ca3('0x37'))){_0x47706d[_0x8ca3('0x1f')]=qs[_0x8ca3('0x1f')](_0x36eff7[_0x8ca3('0x31')][_0x8ca3('0x1f')]);_0x47706d[_0x8ca3('0x1d')]=qs['offset'](_0x36eff7['query']['offset']);}return _0x23de6e[_0x8ca3('0x50')](_0x47706d);}})[_0x8ca3('0x26')](function(_0x359285){if(_0x359285){return _0x359285?{'count':_0x50f419,'rows':_0x359285}:null;}})[_0x8ca3('0x26')](respondWithResult(_0x317952,null))[_0x8ca3('0x43')](handleError(_0x317952,null));};
\ No newline at end of file
+var _0x48c5=['sort','pick','merge','where','filter','includeAll','findAll','rows','show','keys','rawAttributes','include','find','catch','create','body','update','params','getFields','findOne','SugarcrmField','order','options','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/environment','sendStatus','status','offset','undefined','count','limit','Content-Range','json','apply','reject','save','then','destroy','end','error','stack','name','send','index','map','SugarcrmConfiguration','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x1324f0,_0x2e6ce7){var _0x4ca48d=function(_0x154eb5){while(--_0x154eb5){_0x1324f0['push'](_0x1324f0['shift']());}};_0x4ca48d(++_0x2e6ce7);}(_0x48c5,0x151));var _0x548c=function(_0x4b4e18,_0x192190){_0x4b4e18=_0x4b4e18-0x0;var _0x323ea5=_0x48c5[_0x4b4e18];return _0x323ea5;};'use strict';var emlformat=require(_0x548c('0x0'));var rimraf=require(_0x548c('0x1'));var zipdir=require(_0x548c('0x2'));var jsonpatch=require(_0x548c('0x3'));var rp=require(_0x548c('0x4'));var moment=require(_0x548c('0x5'));var BPromise=require(_0x548c('0x6'));var Mustache=require(_0x548c('0x7'));var util=require(_0x548c('0x8'));var path=require(_0x548c('0x9'));var sox=require(_0x548c('0xa'));var csv=require(_0x548c('0xb'));var ejs=require(_0x548c('0xc'));var fs=require('fs');var fs_extra=require(_0x548c('0xd'));var _=require(_0x548c('0xe'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x548c('0xf'));var toCsv=require(_0x548c('0xb'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x548c('0x10'));var qs=require(_0x548c('0x11'));var as=require(_0x548c('0x12'));var hardwareService=require(_0x548c('0x13'));var logger=require(_0x548c('0x14'))('api');var utils=require('../../config/utils');var config=require(_0x548c('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x315ad4,_0x12deb7){_0x12deb7=_0x12deb7||0xcc;return function(_0x369831){if(_0x369831){return _0x315ad4[_0x548c('0x16')](_0x12deb7);}return _0x315ad4[_0x548c('0x17')](_0x12deb7)['end']();};}function respondWithResult(_0x1af87a,_0x83308b){_0x83308b=_0x83308b||0xc8;return function(_0x108ed5){if(_0x108ed5){return _0x1af87a['status'](_0x83308b)['json'](_0x108ed5);}};}function respondWithFilteredResult(_0x16f9f8,_0x3e7dc3){return function(_0x11bf32){if(_0x11bf32){var _0x6a25e5=typeof _0x3e7dc3[_0x548c('0x18')]===_0x548c('0x19')&&typeof _0x3e7dc3['limit']==='undefined';var _0x2fbe55=_0x11bf32[_0x548c('0x1a')];var _0x11548b=_0x6a25e5?0x0:_0x3e7dc3[_0x548c('0x18')];var _0x44b3c4=_0x6a25e5?_0x11bf32[_0x548c('0x1a')]:_0x3e7dc3[_0x548c('0x18')]+_0x3e7dc3[_0x548c('0x1b')];var _0x281919;if(_0x44b3c4>=_0x2fbe55){_0x44b3c4=_0x2fbe55;_0x281919=0xc8;}else{_0x281919=0xce;}_0x16f9f8['status'](_0x281919);return _0x16f9f8['set'](_0x548c('0x1c'),_0x11548b+'-'+_0x44b3c4+'/'+_0x2fbe55)[_0x548c('0x1d')](_0x11bf32);}return null;};}function patchUpdates(_0x58298c){return function(_0x5b97fb){try{jsonpatch[_0x548c('0x1e')](_0x5b97fb,_0x58298c,!![]);}catch(_0x13f980){return BPromise[_0x548c('0x1f')](_0x13f980);}return _0x5b97fb[_0x548c('0x20')]();};}function saveUpdates(_0x398414,_0x573e59){return function(_0x15e116){if(_0x15e116){return _0x15e116['update'](_0x398414)[_0x548c('0x21')](function(_0x1797fe){return _0x1797fe;});}return null;};}function removeEntity(_0x4c0367,_0x17481b){return function(_0x256e3b){if(_0x256e3b){return _0x256e3b[_0x548c('0x22')]()[_0x548c('0x21')](function(){_0x4c0367[_0x548c('0x17')](0xcc)[_0x548c('0x23')]();});}};}function handleEntityNotFound(_0x372f6f,_0x2d54d2){return function(_0x234a71){if(!_0x234a71){_0x372f6f[_0x548c('0x16')](0x194);}return _0x234a71;};}function handleError(_0x5a4a08,_0x5bceac){_0x5bceac=_0x5bceac||0x1f4;return function(_0x40c457){logger[_0x548c('0x24')](_0x40c457[_0x548c('0x25')]);if(_0x40c457[_0x548c('0x26')]){delete _0x40c457[_0x548c('0x26')];}_0x5a4a08[_0x548c('0x17')](_0x5bceac)[_0x548c('0x27')](_0x40c457);};}exports[_0x548c('0x28')]=function(_0x4df279,_0x2628a3){var _0x4ba8d1={},_0x5648b4={},_0x240f1c={'count':0x0,'rows':[]};var _0x3dd655=_[_0x548c('0x29')](db[_0x548c('0x2a')]['rawAttributes'],function(_0x2b2577){return{'name':_0x2b2577['fieldName'],'type':_0x2b2577['type'][_0x548c('0x2b')]};});_0x5648b4[_0x548c('0x2c')]=_['map'](_0x3dd655,_0x548c('0x26'));_0x5648b4[_0x548c('0x2d')]=_['keys'](_0x4df279[_0x548c('0x2d')]);_0x5648b4[_0x548c('0x2e')]=_[_0x548c('0x2f')](_0x5648b4['model'],_0x5648b4['query']);_0x4ba8d1[_0x548c('0x30')]=_[_0x548c('0x2f')](_0x5648b4[_0x548c('0x2c')],qs[_0x548c('0x31')](_0x4df279[_0x548c('0x2d')][_0x548c('0x31')]));_0x4ba8d1['attributes']=_0x4ba8d1['attributes'][_0x548c('0x32')]?_0x4ba8d1[_0x548c('0x30')]:_0x5648b4[_0x548c('0x2c')];if(!_0x4df279[_0x548c('0x2d')][_0x548c('0x33')](_0x548c('0x34'))){_0x4ba8d1['limit']=qs['limit'](_0x4df279[_0x548c('0x2d')][_0x548c('0x1b')]);_0x4ba8d1[_0x548c('0x18')]=qs[_0x548c('0x18')](_0x4df279['query'][_0x548c('0x18')]);}_0x4ba8d1['order']=qs[_0x548c('0x35')](_0x4df279[_0x548c('0x2d')]['sort']);_0x4ba8d1['where']=qs[_0x548c('0x2e')](_[_0x548c('0x36')](_0x4df279[_0x548c('0x2d')],_0x5648b4[_0x548c('0x2e')]),_0x3dd655);if(_0x4df279[_0x548c('0x2d')]['filter']){_0x4ba8d1['where']=_[_0x548c('0x37')](_0x4ba8d1[_0x548c('0x38')],{'$or':_[_0x548c('0x29')](_0x3dd655,function(_0x4778a8){if(_0x4778a8['type']!=='VIRTUAL'){var _0x5a829e={};_0x5a829e[_0x4778a8['name']]={'$like':'%'+_0x4df279[_0x548c('0x2d')][_0x548c('0x39')]+'%'};return _0x5a829e;}})});}_0x4ba8d1=_[_0x548c('0x37')]({},_0x4ba8d1,_0x4df279['options']);var _0x22f017={'where':_0x4ba8d1[_0x548c('0x38')]};return db[_0x548c('0x2a')][_0x548c('0x1a')](_0x22f017)[_0x548c('0x21')](function(_0x2a72ff){_0x240f1c['count']=_0x2a72ff;if(_0x4df279[_0x548c('0x2d')][_0x548c('0x3a')]){_0x4ba8d1['include']=[{'all':!![]}];}return db['SugarcrmConfiguration'][_0x548c('0x3b')](_0x4ba8d1);})[_0x548c('0x21')](function(_0x37f0a5){_0x240f1c[_0x548c('0x3c')]=_0x37f0a5;return _0x240f1c;})[_0x548c('0x21')](respondWithFilteredResult(_0x2628a3,_0x4ba8d1))['catch'](handleError(_0x2628a3,null));};exports[_0x548c('0x3d')]=function(_0x123d0c,_0x2c8558){var _0xc6eb5e={'raw':![],'where':{'id':_0x123d0c['params']['id']}},_0x550977={};_0x550977['model']=_[_0x548c('0x3e')](db[_0x548c('0x2a')][_0x548c('0x3f')]);_0x550977[_0x548c('0x2d')]=_[_0x548c('0x3e')](_0x123d0c[_0x548c('0x2d')]);_0x550977[_0x548c('0x2e')]=_[_0x548c('0x2f')](_0x550977[_0x548c('0x2c')],_0x550977[_0x548c('0x2d')]);_0xc6eb5e[_0x548c('0x30')]=_['intersection'](_0x550977['model'],qs[_0x548c('0x31')](_0x123d0c[_0x548c('0x2d')][_0x548c('0x31')]));_0xc6eb5e[_0x548c('0x30')]=_0xc6eb5e[_0x548c('0x30')][_0x548c('0x32')]?_0xc6eb5e['attributes']:_0x550977[_0x548c('0x2c')];if(_0x123d0c['query'][_0x548c('0x3a')]){_0xc6eb5e[_0x548c('0x40')]=[{'all':!![]}];}_0xc6eb5e=_[_0x548c('0x37')]({},_0xc6eb5e,_0x123d0c['options']);return db[_0x548c('0x2a')][_0x548c('0x41')](_0xc6eb5e)[_0x548c('0x21')](handleEntityNotFound(_0x2c8558,null))[_0x548c('0x21')](respondWithResult(_0x2c8558,null))[_0x548c('0x42')](handleError(_0x2c8558,null));};exports['create']=function(_0x2a7e93,_0x2cd3fa){return db[_0x548c('0x2a')][_0x548c('0x43')](_0x2a7e93[_0x548c('0x44')],{})[_0x548c('0x21')](respondWithResult(_0x2cd3fa,0xc9))['catch'](handleError(_0x2cd3fa,null));};exports[_0x548c('0x45')]=function(_0x5a6a26,_0x1d174a){if(_0x5a6a26[_0x548c('0x44')]['id']){delete _0x5a6a26['body']['id'];}return db['SugarcrmConfiguration'][_0x548c('0x41')]({'where':{'id':_0x5a6a26[_0x548c('0x46')]['id']}})[_0x548c('0x21')](handleEntityNotFound(_0x1d174a,null))['then'](saveUpdates(_0x5a6a26[_0x548c('0x44')],null))[_0x548c('0x21')](respondWithResult(_0x1d174a,null))[_0x548c('0x42')](handleError(_0x1d174a,null));};exports[_0x548c('0x22')]=function(_0x23eb21,_0x259ea3){return db[_0x548c('0x2a')]['find']({'where':{'id':_0x23eb21['params']['id']}})[_0x548c('0x21')](handleEntityNotFound(_0x259ea3,null))[_0x548c('0x21')](removeEntity(_0x259ea3,null))[_0x548c('0x42')](handleError(_0x259ea3,null));};exports[_0x548c('0x47')]=function(_0xef70c8,_0x44ae11,_0x9707cb){var _0x1e53b4={};var _0x55e414={};var _0x3c1402;var _0x29cd4c;return db[_0x548c('0x2a')][_0x548c('0x48')]({'where':{'id':_0xef70c8[_0x548c('0x46')]['id']}})[_0x548c('0x21')](handleEntityNotFound(_0x44ae11,null))[_0x548c('0x21')](function(_0x364977){if(_0x364977){_0x3c1402=_0x364977;_0x55e414['model']=_[_0x548c('0x3e')](db[_0x548c('0x49')][_0x548c('0x3f')]);_0x55e414[_0x548c('0x2d')]=_[_0x548c('0x3e')](_0xef70c8[_0x548c('0x2d')]);_0x55e414[_0x548c('0x2e')]=_[_0x548c('0x2f')](_0x55e414[_0x548c('0x2c')],_0x55e414['query']);_0x1e53b4[_0x548c('0x30')]=_[_0x548c('0x2f')](_0x55e414[_0x548c('0x2c')],qs[_0x548c('0x31')](_0xef70c8[_0x548c('0x2d')][_0x548c('0x31')]));_0x1e53b4['attributes']=_0x1e53b4[_0x548c('0x30')][_0x548c('0x32')]?_0x1e53b4[_0x548c('0x30')]:_0x55e414[_0x548c('0x2c')];_0x1e53b4[_0x548c('0x4a')]=qs[_0x548c('0x35')](_0xef70c8['query'][_0x548c('0x35')]);_0x1e53b4['where']=qs[_0x548c('0x2e')](_['pick'](_0xef70c8[_0x548c('0x2d')],_0x55e414[_0x548c('0x2e')]));if(_0xef70c8[_0x548c('0x2d')][_0x548c('0x39')]){_0x1e53b4[_0x548c('0x38')]=_[_0x548c('0x37')](_0x1e53b4[_0x548c('0x38')],{'$or':_[_0x548c('0x29')](_0x1e53b4['attributes'],function(_0x454db0){var _0x386c68={};_0x386c68[_0x454db0]={'$like':'%'+_0xef70c8['query'][_0x548c('0x39')]+'%'};return _0x386c68;})});}_0x1e53b4=_[_0x548c('0x37')]({},_0x1e53b4,_0xef70c8[_0x548c('0x4b')]);return _0x3c1402[_0x548c('0x47')](_0x1e53b4);}})['then'](function(_0x43c497){if(_0x43c497){_0x29cd4c=_0x43c497['length'];if(!_0xef70c8['query'][_0x548c('0x33')]('nolimit')){_0x1e53b4['limit']=qs[_0x548c('0x1b')](_0xef70c8[_0x548c('0x2d')][_0x548c('0x1b')]);_0x1e53b4[_0x548c('0x18')]=qs['offset'](_0xef70c8['query'][_0x548c('0x18')]);}return _0x3c1402[_0x548c('0x47')](_0x1e53b4);}})[_0x548c('0x21')](function(_0x30c657){if(_0x30c657){return _0x30c657?{'count':_0x29cd4c,'rows':_0x30c657}:null;}})[_0x548c('0x21')](respondWithResult(_0x44ae11,null))[_0x548c('0x42')](handleError(_0x44ae11,null));};exports[_0x548c('0x4c')]=function(_0x1da460,_0x445783,_0x456e21){var _0x2ed780={};var _0x3a8476={};var _0xc19a79;var _0x5ad1f5;return db[_0x548c('0x2a')][_0x548c('0x48')]({'where':{'id':_0x1da460[_0x548c('0x46')]['id']}})[_0x548c('0x21')](handleEntityNotFound(_0x445783,null))[_0x548c('0x21')](function(_0x5d025d){if(_0x5d025d){_0xc19a79=_0x5d025d;_0x3a8476[_0x548c('0x2c')]=_[_0x548c('0x3e')](db[_0x548c('0x49')][_0x548c('0x3f')]);_0x3a8476[_0x548c('0x2d')]=_[_0x548c('0x3e')](_0x1da460['query']);_0x3a8476['filters']=_[_0x548c('0x2f')](_0x3a8476[_0x548c('0x2c')],_0x3a8476['query']);_0x2ed780['attributes']=_[_0x548c('0x2f')](_0x3a8476[_0x548c('0x2c')],qs[_0x548c('0x31')](_0x1da460[_0x548c('0x2d')][_0x548c('0x31')]));_0x2ed780[_0x548c('0x30')]=_0x2ed780[_0x548c('0x30')][_0x548c('0x32')]?_0x2ed780[_0x548c('0x30')]:_0x3a8476[_0x548c('0x2c')];_0x2ed780[_0x548c('0x4a')]=qs[_0x548c('0x35')](_0x1da460[_0x548c('0x2d')][_0x548c('0x35')]);_0x2ed780['where']=qs[_0x548c('0x2e')](_['pick'](_0x1da460[_0x548c('0x2d')],_0x3a8476['filters']));if(_0x1da460['query'][_0x548c('0x39')]){_0x2ed780[_0x548c('0x38')]=_[_0x548c('0x37')](_0x2ed780['where'],{'$or':_[_0x548c('0x29')](_0x2ed780['attributes'],function(_0x4c60c3){var _0x5e8ab8={};_0x5e8ab8[_0x4c60c3]={'$like':'%'+_0x1da460[_0x548c('0x2d')][_0x548c('0x39')]+'%'};return _0x5e8ab8;})});}_0x2ed780=_[_0x548c('0x37')]({},_0x2ed780,_0x1da460[_0x548c('0x4b')]);return _0xc19a79[_0x548c('0x4c')](_0x2ed780);}})[_0x548c('0x21')](function(_0x5cd398){if(_0x5cd398){_0x5ad1f5=_0x5cd398[_0x548c('0x32')];if(!_0x1da460[_0x548c('0x2d')][_0x548c('0x33')](_0x548c('0x34'))){_0x2ed780[_0x548c('0x1b')]=qs[_0x548c('0x1b')](_0x1da460[_0x548c('0x2d')][_0x548c('0x1b')]);_0x2ed780[_0x548c('0x18')]=qs['offset'](_0x1da460['query'][_0x548c('0x18')]);}return _0xc19a79['getSubjects'](_0x2ed780);}})['then'](function(_0x27f6e4){if(_0x27f6e4){return _0x27f6e4?{'count':_0x5ad1f5,'rows':_0x27f6e4}:null;}})[_0x548c('0x21')](respondWithResult(_0x445783,null))[_0x548c('0x42')](handleError(_0x445783,null));};exports[_0x548c('0x4d')]=function(_0x4747fc,_0x1c5c4e,_0x56e3d6){var _0xee5330={};var _0x40d666={};var _0xa9bc62;var _0x43ca81;return db['SugarcrmConfiguration'][_0x548c('0x48')]({'where':{'id':_0x4747fc[_0x548c('0x46')]['id']}})[_0x548c('0x21')](handleEntityNotFound(_0x1c5c4e,null))[_0x548c('0x21')](function(_0x2317f4){if(_0x2317f4){_0xa9bc62=_0x2317f4;_0x40d666[_0x548c('0x2c')]=_[_0x548c('0x3e')](db[_0x548c('0x49')][_0x548c('0x3f')]);_0x40d666[_0x548c('0x2d')]=_[_0x548c('0x3e')](_0x4747fc[_0x548c('0x2d')]);_0x40d666[_0x548c('0x2e')]=_['intersection'](_0x40d666[_0x548c('0x2c')],_0x40d666[_0x548c('0x2d')]);_0xee5330[_0x548c('0x30')]=_[_0x548c('0x2f')](_0x40d666[_0x548c('0x2c')],qs['fields'](_0x4747fc[_0x548c('0x2d')][_0x548c('0x31')]));_0xee5330['attributes']=_0xee5330[_0x548c('0x30')]['length']?_0xee5330[_0x548c('0x30')]:_0x40d666[_0x548c('0x2c')];_0xee5330['order']=qs[_0x548c('0x35')](_0x4747fc[_0x548c('0x2d')][_0x548c('0x35')]);_0xee5330[_0x548c('0x38')]=qs[_0x548c('0x2e')](_['pick'](_0x4747fc[_0x548c('0x2d')],_0x40d666[_0x548c('0x2e')]));if(_0x4747fc['query']['filter']){_0xee5330[_0x548c('0x38')]=_[_0x548c('0x37')](_0xee5330[_0x548c('0x38')],{'$or':_[_0x548c('0x29')](_0xee5330[_0x548c('0x30')],function(_0x3d14f8){var _0x484672={};_0x484672[_0x3d14f8]={'$like':'%'+_0x4747fc[_0x548c('0x2d')][_0x548c('0x39')]+'%'};return _0x484672;})});}_0xee5330=_[_0x548c('0x37')]({},_0xee5330,_0x4747fc[_0x548c('0x4b')]);return _0xa9bc62['getDescriptions'](_0xee5330);}})['then'](function(_0xc6592a){if(_0xc6592a){_0x43ca81=_0xc6592a['length'];if(!_0x4747fc[_0x548c('0x2d')]['hasOwnProperty']('nolimit')){_0xee5330[_0x548c('0x1b')]=qs['limit'](_0x4747fc[_0x548c('0x2d')][_0x548c('0x1b')]);_0xee5330['offset']=qs[_0x548c('0x18')](_0x4747fc['query'][_0x548c('0x18')]);}return _0xa9bc62[_0x548c('0x4d')](_0xee5330);}})['then'](function(_0x3b510e){if(_0x3b510e){return _0x3b510e?{'count':_0x43ca81,'rows':_0x3b510e}:null;}})['then'](respondWithResult(_0x1c5c4e,null))['catch'](handleError(_0x1c5c4e,null));};
\ No newline at end of file
index 6094bd2..fe8979e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2488=['lodash','util','../../config/logger','api','moment','path','rimraf','exports','define','int_sugarcrm_configurations'];(function(_0x3190ba,_0x261a22){var _0xd4a18=function(_0x598dcd){while(--_0x598dcd){_0x3190ba['push'](_0x3190ba['shift']());}};_0xd4a18(++_0x261a22);}(_0x2488,0xaa));var _0x8248=function(_0x23ed26,_0x1d2ff4){_0x23ed26=_0x23ed26-0x0;var _0x545502=_0x2488[_0x23ed26];return _0x545502;};'use strict';var _=require(_0x8248('0x0'));var util=require(_0x8248('0x1'));var logger=require(_0x8248('0x2'))(_0x8248('0x3'));var moment=require(_0x8248('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8248('0x5'));var rimraf=require(_0x8248('0x6'));var config=require('../../config/environment');var attributes=require('./intSugarcrmConfiguration.attributes');module[_0x8248('0x7')]=function(_0x3f7c9e,_0x420067){return _0x3f7c9e[_0x8248('0x8')]('SugarcrmConfiguration',attributes,{'tableName':_0x8248('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd754=['rimraf','./intSugarcrmConfiguration.attributes','exports','define','SugarcrmConfiguration','int_sugarcrm_configurations','lodash','../../config/logger','api','bluebird','path'];(function(_0x23a7d8,_0x452474){var _0x616ed5=function(_0x226f1e){while(--_0x226f1e){_0x23a7d8['push'](_0x23a7d8['shift']());}};_0x616ed5(++_0x452474);}(_0xd754,0x17c));var _0x4d75=function(_0x243b2f,_0x30aa15){_0x243b2f=_0x243b2f-0x0;var _0xcb3c2d=_0xd754[_0x243b2f];return _0xcb3c2d;};'use strict';var _=require(_0x4d75('0x0'));var util=require('util');var logger=require(_0x4d75('0x1'))(_0x4d75('0x2'));var moment=require('moment');var BPromise=require(_0x4d75('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4d75('0x4'));var rimraf=require(_0x4d75('0x5'));var config=require('../../config/environment');var attributes=require(_0x4d75('0x6'));module[_0x4d75('0x7')]=function(_0x179c1e,_0x3192ab){return _0x179c1e[_0x4d75('0x8')](_0x4d75('0x9'),attributes,{'tableName':_0x4d75('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 60a739e..74fa5ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe438=['jayson/promise','client','http','info','request\x20sent','stringify','code','error','SugarcrmConfiguration,\x20%s,\x20%s','message','result','catch','util','randomstring','../../config/utils','rpc','../../config/environment'];(function(_0xdd0313,_0x251c2b){var _0x2bd7e8=function(_0x340f1f){while(--_0x340f1f){_0xdd0313['push'](_0xdd0313['shift']());}};_0x2bd7e8(++_0x251c2b);}(_0xe438,0xb6));var _0x8e43=function(_0x54a216,_0x3945a0){_0x54a216=_0x54a216-0x0;var _0x240fa6=_0xe438[_0x54a216];return _0x240fa6;};'use strict';var _=require('lodash');var util=require(_0x8e43('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x8e43('0x1'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x8e43('0x2'));var logger=require('../../config/logger')(_0x8e43('0x3'));var config=require(_0x8e43('0x4'));var jayson=require(_0x8e43('0x5'));var client=jayson[_0x8e43('0x6')][_0x8e43('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x396a17,_0x30da66,_0x4b5eaf){return new BPromise(function(_0x3e3206,_0x186a4c){return client['request'](_0x396a17,_0x4b5eaf)['then'](function(_0x19d049){logger[_0x8e43('0x8')]('SugarcrmConfiguration,\x20%s,\x20%s',_0x30da66,_0x8e43('0x9'));logger['debug']('SugarcrmConfiguration,\x20%s,\x20%s,\x20%s',_0x30da66,_0x8e43('0x9'),JSON[_0x8e43('0xa')](_0x19d049));if(_0x19d049['error']){if(_0x19d049['error'][_0x8e43('0xb')]===0x1f4){logger[_0x8e43('0xc')](_0x8e43('0xd'),_0x30da66,_0x19d049[_0x8e43('0xc')][_0x8e43('0xe')]);return _0x186a4c(_0x19d049[_0x8e43('0xc')][_0x8e43('0xe')]);}logger[_0x8e43('0xc')](_0x8e43('0xd'),_0x30da66,_0x19d049[_0x8e43('0xc')][_0x8e43('0xe')]);return _0x3e3206(_0x19d049[_0x8e43('0xc')][_0x8e43('0xe')]);}else{logger['info']('SugarcrmConfiguration,\x20%s,\x20%s',_0x30da66,_0x8e43('0x9'));_0x3e3206(_0x19d049[_0x8e43('0xf')][_0x8e43('0xe')]);}})[_0x8e43('0x10')](function(_0x38e1bc){logger['error'](_0x8e43('0xd'),_0x30da66,_0x38e1bc);_0x186a4c(_0x38e1bc);});});}
\ No newline at end of file
+var _0x07a8=['catch','util','bluebird','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','SugarcrmConfiguration,\x20%s,\x20%s','request\x20sent','debug','SugarcrmConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0xd2f4ac,_0x5aa8e5){var _0x9757b2=function(_0x442ced){while(--_0x442ced){_0xd2f4ac['push'](_0xd2f4ac['shift']());}};_0x9757b2(++_0x5aa8e5);}(_0x07a8,0xd0));var _0x807a=function(_0x2811a0,_0x205266){_0x2811a0=_0x2811a0-0x0;var _0x596793=_0x07a8[_0x2811a0];return _0x596793;};'use strict';var _=require('lodash');var util=require(_0x807a('0x0'));var moment=require('moment');var BPromise=require(_0x807a('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x807a('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x807a('0x3'));var logger=require(_0x807a('0x4'))(_0x807a('0x5'));var config=require(_0x807a('0x6'));var jayson=require(_0x807a('0x7'));var client=jayson[_0x807a('0x8')][_0x807a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2cb2c8,_0x300976,_0xd048e3){return new BPromise(function(_0x19cad3,_0xdcbb99){return client[_0x807a('0xa')](_0x2cb2c8,_0xd048e3)[_0x807a('0xb')](function(_0x1c58d8){logger[_0x807a('0xc')](_0x807a('0xd'),_0x300976,_0x807a('0xe'));logger[_0x807a('0xf')](_0x807a('0x10'),_0x300976,_0x807a('0xe'),JSON[_0x807a('0x11')](_0x1c58d8));if(_0x1c58d8[_0x807a('0x12')]){if(_0x1c58d8[_0x807a('0x12')][_0x807a('0x13')]===0x1f4){logger['error'](_0x807a('0xd'),_0x300976,_0x1c58d8[_0x807a('0x12')][_0x807a('0x14')]);return _0xdcbb99(_0x1c58d8[_0x807a('0x12')]['message']);}logger[_0x807a('0x12')](_0x807a('0xd'),_0x300976,_0x1c58d8[_0x807a('0x12')]['message']);return _0x19cad3(_0x1c58d8[_0x807a('0x12')]['message']);}else{logger[_0x807a('0xc')](_0x807a('0xd'),_0x300976,_0x807a('0xe'));_0x19cad3(_0x1c58d8[_0x807a('0x15')][_0x807a('0x14')]);}})[_0x807a('0x16')](function(_0x10164a){logger[_0x807a('0x12')](_0x807a('0xd'),_0x300976,_0x10164a);_0xdcbb99(_0x10164a);});});}
\ No newline at end of file
index aa47e7d..d5bf781 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x424f=['show','post','create','put','delete','destroy','multer','util','connect-timeout','express','../../components/interaction/service','./intSugarcrmField.controller','get','index','/:id','isAuthenticated'];(function(_0x2b0a08,_0x3c62e2){var _0xdef916=function(_0x994197){while(--_0x994197){_0x2b0a08['push'](_0x2b0a08['shift']());}};_0xdef916(++_0x3c62e2);}(_0x424f,0xc6));var _0xf424=function(_0x22417e,_0xa44a31){_0x22417e=_0x22417e-0x0;var _0x9bd087=_0x424f[_0x22417e];return _0x9bd087;};'use strict';var multer=require(_0xf424('0x0'));var util=require(_0xf424('0x1'));var path=require('path');var timeout=require(_0xf424('0x2'));var express=require(_0xf424('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xf424('0x4'));var config=require('../../config/environment');var controller=require(_0xf424('0x5'));router[_0xf424('0x6')]('/',auth['isAuthenticated'](),controller[_0xf424('0x7')]);router[_0xf424('0x6')](_0xf424('0x8'),auth[_0xf424('0x9')](),controller[_0xf424('0xa')]);router[_0xf424('0xb')]('/',auth[_0xf424('0x9')](),controller[_0xf424('0xc')]);router[_0xf424('0xd')]('/:id',auth[_0xf424('0x9')](),controller['update']);router[_0xf424('0xe')](_0xf424('0x8'),auth[_0xf424('0x9')](),controller[_0xf424('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x7012=['delete','destroy','exports','multer','util','connect-timeout','express','../../components/auth/service','../../components/interaction/service','./intSugarcrmField.controller','get','isAuthenticated','show','post','create','put','/:id','update'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x7012,0xc9));var _0x2701=function(_0x17b6e3,_0x4522ed){_0x17b6e3=_0x17b6e3-0x0;var _0x3906f3=_0x7012[_0x17b6e3];return _0x3906f3;};'use strict';var multer=require(_0x2701('0x0'));var util=require(_0x2701('0x1'));var path=require('path');var timeout=require(_0x2701('0x2'));var express=require(_0x2701('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x2701('0x4'));var interaction=require(_0x2701('0x5'));var config=require('../../config/environment');var controller=require(_0x2701('0x6'));router[_0x2701('0x7')]('/',auth['isAuthenticated'](),controller['index']);router[_0x2701('0x7')]('/:id',auth[_0x2701('0x8')](),controller[_0x2701('0x9')]);router[_0x2701('0xa')]('/',auth[_0x2701('0x8')](),controller[_0x2701('0xb')]);router[_0x2701('0xc')](_0x2701('0xd'),auth['isAuthenticated'](),controller[_0x2701('0xe')]);router[_0x2701('0xf')](_0x2701('0xd'),auth[_0x2701('0x8')](),controller[_0x2701('0x10')]);module[_0x2701('0x11')]=router;
\ No newline at end of file
index 91e7e1e..a4921ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7890=['string','keyValue','picklist','STRING','variable','customVariable','BOOLEAN','sequelize','exports','ENUM'];(function(_0xa1b5fb,_0x41a2bd){var _0x123597=function(_0x1b3157){while(--_0x1b3157){_0xa1b5fb['push'](_0xa1b5fb['shift']());}};_0x123597(++_0x41a2bd);}(_0x7890,0xd9));var _0x0789=function(_0x47d697,_0x56b743){_0x47d697=_0x47d697-0x0;var _0x2799bf=_0x7890[_0x47d697];return _0x2799bf;};'use strict';var Sequelize=require(_0x0789('0x0'));module[_0x0789('0x1')]={'type':{'type':Sequelize[_0x0789('0x2')](_0x0789('0x3'),'variable','customVariable',_0x0789('0x4'),_0x0789('0x5')),'defaultValue':_0x0789('0x3')},'content':{'type':Sequelize[_0x0789('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x0789('0x2')](_0x0789('0x3'),_0x0789('0x7'),_0x0789('0x8'))},'keyContent':{'type':Sequelize[_0x0789('0x6')]},'idField':{'type':Sequelize[_0x0789('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x0789('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x3a54=['string','customVariable','keyValue','picklist','STRING','ENUM','variable','BOOLEAN'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x3a54,0x180));var _0x43a5=function(_0x3aecbf,_0x1bcaa4){_0x3aecbf=_0x3aecbf-0x0;var _0x26135d=_0x3a54[_0x3aecbf];return _0x26135d;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize['ENUM'](_0x43a5('0x0'),'variable',_0x43a5('0x1'),_0x43a5('0x2'),_0x43a5('0x3')),'defaultValue':'string'},'content':{'type':Sequelize[_0x43a5('0x4')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize[_0x43a5('0x5')](_0x43a5('0x0'),_0x43a5('0x6'),'customVariable')},'keyContent':{'type':Sequelize[_0x43a5('0x4')]},'idField':{'type':Sequelize['STRING']},'nameField':{'type':Sequelize[_0x43a5('0x4')]},'customField':{'type':Sequelize[_0x43a5('0x7')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index c99ed63..7994398 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeec0=['name','send','map','SugarcrmField','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','length','order','sort','pick','where','VIRTUAL','filter','merge','includeAll','include','findAll','rows','catch','show','params','options','find','body','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','update','then','destroy','end','error','stack'];(function(_0x306da5,_0x21c2ff){var _0x54bc07=function(_0x113ed8){while(--_0x113ed8){_0x306da5['push'](_0x306da5['shift']());}};_0x54bc07(++_0x21c2ff);}(_0xeec0,0x155));var _0x0eec=function(_0x157a2a,_0x503fe9){_0x157a2a=_0x157a2a-0x0;var _0x428b6e=_0xeec0[_0x157a2a];return _0x428b6e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0eec('0x0'));var zipdir=require(_0x0eec('0x1'));var jsonpatch=require(_0x0eec('0x2'));var rp=require(_0x0eec('0x3'));var moment=require(_0x0eec('0x4'));var BPromise=require(_0x0eec('0x5'));var Mustache=require(_0x0eec('0x6'));var util=require(_0x0eec('0x7'));var path=require(_0x0eec('0x8'));var sox=require(_0x0eec('0x9'));var csv=require(_0x0eec('0xa'));var ejs=require(_0x0eec('0xb'));var fs=require('fs');var fs_extra=require(_0x0eec('0xc'));var _=require(_0x0eec('0xd'));var squel=require('squel');var crypto=require(_0x0eec('0xe'));var jsforce=require(_0x0eec('0xf'));var deskjs=require(_0x0eec('0x10'));var toCsv=require('to-csv');var querystring=require(_0x0eec('0x11'));var Papa=require(_0x0eec('0x12'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x0eec('0x13'));var as=require(_0x0eec('0x14'));var hardwareService=require(_0x0eec('0x15'));var logger=require(_0x0eec('0x16'))(_0x0eec('0x17'));var utils=require('../../config/utils');var config=require(_0x0eec('0x18'));var licenseUtil=require(_0x0eec('0x19'));var db=require(_0x0eec('0x1a'))['db'];function respondWithStatusCode(_0x3696a4,_0x2ae4b9){_0x2ae4b9=_0x2ae4b9||0xcc;return function(_0xade9c6){if(_0xade9c6){return _0x3696a4[_0x0eec('0x1b')](_0x2ae4b9);}return _0x3696a4[_0x0eec('0x1c')](_0x2ae4b9)['end']();};}function respondWithResult(_0x3df297,_0x4fb9ff){_0x4fb9ff=_0x4fb9ff||0xc8;return function(_0x10be37){if(_0x10be37){return _0x3df297[_0x0eec('0x1c')](_0x4fb9ff)[_0x0eec('0x1d')](_0x10be37);}};}function respondWithFilteredResult(_0x13d5c2,_0x49c73d){return function(_0x3701e6){if(_0x3701e6){var _0xe9b743=typeof _0x49c73d[_0x0eec('0x1e')]==='undefined'&&typeof _0x49c73d[_0x0eec('0x1f')]===_0x0eec('0x20');var _0x536979=_0x3701e6[_0x0eec('0x21')];var _0x50a340=_0xe9b743?0x0:_0x49c73d[_0x0eec('0x1e')];var _0xb8e3dd=_0xe9b743?_0x3701e6['count']:_0x49c73d[_0x0eec('0x1e')]+_0x49c73d[_0x0eec('0x1f')];var _0x1da8da;if(_0xb8e3dd>=_0x536979){_0xb8e3dd=_0x536979;_0x1da8da=0xc8;}else{_0x1da8da=0xce;}_0x13d5c2[_0x0eec('0x1c')](_0x1da8da);return _0x13d5c2[_0x0eec('0x22')](_0x0eec('0x23'),_0x50a340+'-'+_0xb8e3dd+'/'+_0x536979)['json'](_0x3701e6);}return null;};}function patchUpdates(_0x264b12){return function(_0x1ce962){try{jsonpatch[_0x0eec('0x24')](_0x1ce962,_0x264b12,!![]);}catch(_0xaaf512){return BPromise[_0x0eec('0x25')](_0xaaf512);}return _0x1ce962['save']();};}function saveUpdates(_0xc47f67,_0x25fce8){return function(_0x215389){if(_0x215389){return _0x215389[_0x0eec('0x26')](_0xc47f67)[_0x0eec('0x27')](function(_0x1f4fc0){return _0x1f4fc0;});}return null;};}function removeEntity(_0x3009f3,_0x169062){return function(_0x14ad9b){if(_0x14ad9b){return _0x14ad9b[_0x0eec('0x28')]()['then'](function(){_0x3009f3['status'](0xcc)[_0x0eec('0x29')]();});}};}function handleEntityNotFound(_0x3c272d,_0x53c4f8){return function(_0x1b1ca6){if(!_0x1b1ca6){_0x3c272d[_0x0eec('0x1b')](0x194);}return _0x1b1ca6;};}function handleError(_0x5a191d,_0x5acc48){_0x5acc48=_0x5acc48||0x1f4;return function(_0x2b2005){logger[_0x0eec('0x2a')](_0x2b2005[_0x0eec('0x2b')]);if(_0x2b2005[_0x0eec('0x2c')]){delete _0x2b2005[_0x0eec('0x2c')];}_0x5a191d[_0x0eec('0x1c')](_0x5acc48)[_0x0eec('0x2d')](_0x2b2005);};}exports['index']=function(_0x57e71e,_0x41881e){var _0xf1f464={},_0x9b293a={},_0x27db31={'count':0x0,'rows':[]};var _0x365eae=_[_0x0eec('0x2e')](db[_0x0eec('0x2f')][_0x0eec('0x30')],function(_0x416906){return{'name':_0x416906[_0x0eec('0x31')],'type':_0x416906[_0x0eec('0x32')][_0x0eec('0x33')]};});_0x9b293a[_0x0eec('0x34')]=_[_0x0eec('0x2e')](_0x365eae,_0x0eec('0x2c'));_0x9b293a['query']=_[_0x0eec('0x35')](_0x57e71e[_0x0eec('0x36')]);_0x9b293a[_0x0eec('0x37')]=_['intersection'](_0x9b293a['model'],_0x9b293a['query']);_0xf1f464[_0x0eec('0x38')]=_[_0x0eec('0x39')](_0x9b293a['model'],qs['fields'](_0x57e71e[_0x0eec('0x36')][_0x0eec('0x3a')]));_0xf1f464[_0x0eec('0x38')]=_0xf1f464[_0x0eec('0x38')][_0x0eec('0x3b')]?_0xf1f464[_0x0eec('0x38')]:_0x9b293a[_0x0eec('0x34')];if(!_0x57e71e[_0x0eec('0x36')]['hasOwnProperty']('nolimit')){_0xf1f464[_0x0eec('0x1f')]=qs[_0x0eec('0x1f')](_0x57e71e[_0x0eec('0x36')][_0x0eec('0x1f')]);_0xf1f464[_0x0eec('0x1e')]=qs['offset'](_0x57e71e[_0x0eec('0x36')][_0x0eec('0x1e')]);}_0xf1f464[_0x0eec('0x3c')]=qs[_0x0eec('0x3d')](_0x57e71e[_0x0eec('0x36')][_0x0eec('0x3d')]);_0xf1f464['where']=qs[_0x0eec('0x37')](_[_0x0eec('0x3e')](_0x57e71e[_0x0eec('0x36')],_0x9b293a[_0x0eec('0x37')]),_0x365eae);if(_0x57e71e[_0x0eec('0x36')]['filter']){_0xf1f464['where']=_['merge'](_0xf1f464[_0x0eec('0x3f')],{'$or':_[_0x0eec('0x2e')](_0x365eae,function(_0x44eae2){if(_0x44eae2[_0x0eec('0x32')]!==_0x0eec('0x40')){var _0x41f49e={};_0x41f49e[_0x44eae2[_0x0eec('0x2c')]]={'$like':'%'+_0x57e71e[_0x0eec('0x36')][_0x0eec('0x41')]+'%'};return _0x41f49e;}})});}_0xf1f464=_[_0x0eec('0x42')]({},_0xf1f464,_0x57e71e['options']);var _0x3651e4={'where':_0xf1f464['where']};return db[_0x0eec('0x2f')][_0x0eec('0x21')](_0x3651e4)[_0x0eec('0x27')](function(_0x4289ed){_0x27db31['count']=_0x4289ed;if(_0x57e71e[_0x0eec('0x36')][_0x0eec('0x43')]){_0xf1f464[_0x0eec('0x44')]=[{'all':!![]}];}return db[_0x0eec('0x2f')][_0x0eec('0x45')](_0xf1f464);})[_0x0eec('0x27')](function(_0x22e253){_0x27db31[_0x0eec('0x46')]=_0x22e253;return _0x27db31;})['then'](respondWithFilteredResult(_0x41881e,_0xf1f464))[_0x0eec('0x47')](handleError(_0x41881e,null));};exports[_0x0eec('0x48')]=function(_0x9a5f90,_0x2345d9){var _0x18349c={'raw':!![],'where':{'id':_0x9a5f90[_0x0eec('0x49')]['id']}},_0x44c6b3={};_0x44c6b3[_0x0eec('0x34')]=_[_0x0eec('0x35')](db[_0x0eec('0x2f')][_0x0eec('0x30')]);_0x44c6b3[_0x0eec('0x36')]=_[_0x0eec('0x35')](_0x9a5f90[_0x0eec('0x36')]);_0x44c6b3[_0x0eec('0x37')]=_['intersection'](_0x44c6b3['model'],_0x44c6b3[_0x0eec('0x36')]);_0x18349c[_0x0eec('0x38')]=_['intersection'](_0x44c6b3[_0x0eec('0x34')],qs[_0x0eec('0x3a')](_0x9a5f90['query'][_0x0eec('0x3a')]));_0x18349c[_0x0eec('0x38')]=_0x18349c[_0x0eec('0x38')][_0x0eec('0x3b')]?_0x18349c['attributes']:_0x44c6b3[_0x0eec('0x34')];if(_0x9a5f90[_0x0eec('0x36')][_0x0eec('0x43')]){_0x18349c[_0x0eec('0x44')]=[{'all':!![]}];}_0x18349c=_[_0x0eec('0x42')]({},_0x18349c,_0x9a5f90[_0x0eec('0x4a')]);return db[_0x0eec('0x2f')][_0x0eec('0x4b')](_0x18349c)[_0x0eec('0x27')](handleEntityNotFound(_0x2345d9,null))[_0x0eec('0x27')](respondWithResult(_0x2345d9,null))[_0x0eec('0x47')](handleError(_0x2345d9,null));};exports['create']=function(_0x32c4ca,_0x35b592){return db['SugarcrmField']['create'](_0x32c4ca[_0x0eec('0x4c')],{})[_0x0eec('0x27')](respondWithResult(_0x35b592,0xc9))[_0x0eec('0x47')](handleError(_0x35b592,null));};exports['update']=function(_0x203b03,_0x302fec){if(_0x203b03[_0x0eec('0x4c')]['id']){delete _0x203b03[_0x0eec('0x4c')]['id'];}return db[_0x0eec('0x2f')][_0x0eec('0x4b')]({'where':{'id':_0x203b03[_0x0eec('0x49')]['id']}})[_0x0eec('0x27')](handleEntityNotFound(_0x302fec,null))['then'](saveUpdates(_0x203b03['body'],null))[_0x0eec('0x27')](respondWithResult(_0x302fec,null))[_0x0eec('0x47')](handleError(_0x302fec,null));};exports['destroy']=function(_0x32d478,_0x3c4c14){return db[_0x0eec('0x2f')][_0x0eec('0x4b')]({'where':{'id':_0x32d478[_0x0eec('0x49')]['id']}})[_0x0eec('0x27')](handleEntityNotFound(_0x3c4c14,null))[_0x0eec('0x27')](removeEntity(_0x3c4c14,null))[_0x0eec('0x47')](handleError(_0x3c4c14,null));};
\ No newline at end of file
+var _0xb98e=['map','query','keys','filters','intersection','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','include','rows','show','params','fields','includeAll','options','find','catch','create','body','eml-format','fast-json-patch','moment','mustache','util','path','to-csv','ejs','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','update','then','destroy','error','name','send','SugarcrmField','rawAttributes','fieldName','type','key','model'];(function(_0x4424c8,_0x1ca07f){var _0x8355a2=function(_0x5f093d){while(--_0x5f093d){_0x4424c8['push'](_0x4424c8['shift']());}};_0x8355a2(++_0x1ca07f);}(_0xb98e,0x133));var _0xeb98=function(_0x3b26f6,_0x466858){_0x3b26f6=_0x3b26f6-0x0;var _0x51172e=_0xb98e[_0x3b26f6];return _0x51172e;};'use strict';var emlformat=require(_0xeb98('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xeb98('0x1'));var rp=require('request-promise');var moment=require(_0xeb98('0x2'));var BPromise=require('bluebird');var Mustache=require(_0xeb98('0x3'));var util=require(_0xeb98('0x4'));var path=require(_0xeb98('0x5'));var sox=require('sox');var csv=require(_0xeb98('0x6'));var ejs=require(_0xeb98('0x7'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xeb98('0x8'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xeb98('0x9'));var toCsv=require(_0xeb98('0x6'));var querystring=require(_0xeb98('0xa'));var Papa=require(_0xeb98('0xb'));var Redis=require(_0xeb98('0xc'));var authService=require(_0xeb98('0xd'));var qs=require(_0xeb98('0xe'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xeb98('0xf'))(_0xeb98('0x10'));var utils=require(_0xeb98('0x11'));var config=require(_0xeb98('0x12'));var licenseUtil=require(_0xeb98('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x39ed9f,_0xb4726){_0xb4726=_0xb4726||0xcc;return function(_0x1e5521){if(_0x1e5521){return _0x39ed9f[_0xeb98('0x14')](_0xb4726);}return _0x39ed9f[_0xeb98('0x15')](_0xb4726)[_0xeb98('0x16')]();};}function respondWithResult(_0x13c3a5,_0x708f8d){_0x708f8d=_0x708f8d||0xc8;return function(_0x2e10fd){if(_0x2e10fd){return _0x13c3a5['status'](_0x708f8d)['json'](_0x2e10fd);}};}function respondWithFilteredResult(_0x4d8554,_0x5862f3){return function(_0x47800f){if(_0x47800f){var _0x24fec7=typeof _0x5862f3[_0xeb98('0x17')]===_0xeb98('0x18')&&typeof _0x5862f3[_0xeb98('0x19')]===_0xeb98('0x18');var _0x5b3ee3=_0x47800f[_0xeb98('0x1a')];var _0x226a9d=_0x24fec7?0x0:_0x5862f3['offset'];var _0x99fc4a=_0x24fec7?_0x47800f['count']:_0x5862f3[_0xeb98('0x17')]+_0x5862f3[_0xeb98('0x19')];var _0xb56b4e;if(_0x99fc4a>=_0x5b3ee3){_0x99fc4a=_0x5b3ee3;_0xb56b4e=0xc8;}else{_0xb56b4e=0xce;}_0x4d8554['status'](_0xb56b4e);return _0x4d8554[_0xeb98('0x1b')]('Content-Range',_0x226a9d+'-'+_0x99fc4a+'/'+_0x5b3ee3)[_0xeb98('0x1c')](_0x47800f);}return null;};}function patchUpdates(_0x539a90){return function(_0x31eccf){try{jsonpatch[_0xeb98('0x1d')](_0x31eccf,_0x539a90,!![]);}catch(_0xae8428){return BPromise[_0xeb98('0x1e')](_0xae8428);}return _0x31eccf['save']();};}function saveUpdates(_0x43c114,_0x56bc5a){return function(_0x1b48d5){if(_0x1b48d5){return _0x1b48d5[_0xeb98('0x1f')](_0x43c114)[_0xeb98('0x20')](function(_0x37398c){return _0x37398c;});}return null;};}function removeEntity(_0x46f961,_0x599407){return function(_0x531f3c){if(_0x531f3c){return _0x531f3c[_0xeb98('0x21')]()[_0xeb98('0x20')](function(){_0x46f961['status'](0xcc)[_0xeb98('0x16')]();});}};}function handleEntityNotFound(_0x321165,_0x5d8db4){return function(_0x88c281){if(!_0x88c281){_0x321165[_0xeb98('0x14')](0x194);}return _0x88c281;};}function handleError(_0x2cb4ea,_0xc55579){_0xc55579=_0xc55579||0x1f4;return function(_0x4133d4){logger[_0xeb98('0x22')](_0x4133d4['stack']);if(_0x4133d4[_0xeb98('0x23')]){delete _0x4133d4[_0xeb98('0x23')];}_0x2cb4ea[_0xeb98('0x15')](_0xc55579)[_0xeb98('0x24')](_0x4133d4);};}exports['index']=function(_0x9bea97,_0x55e1a8){var _0x196634={},_0x46c6ab={},_0x1a79bd={'count':0x0,'rows':[]};var _0x18f525=_['map'](db[_0xeb98('0x25')][_0xeb98('0x26')],function(_0x1b0ab1){return{'name':_0x1b0ab1[_0xeb98('0x27')],'type':_0x1b0ab1[_0xeb98('0x28')][_0xeb98('0x29')]};});_0x46c6ab[_0xeb98('0x2a')]=_[_0xeb98('0x2b')](_0x18f525,'name');_0x46c6ab[_0xeb98('0x2c')]=_[_0xeb98('0x2d')](_0x9bea97[_0xeb98('0x2c')]);_0x46c6ab[_0xeb98('0x2e')]=_[_0xeb98('0x2f')](_0x46c6ab[_0xeb98('0x2a')],_0x46c6ab[_0xeb98('0x2c')]);_0x196634[_0xeb98('0x30')]=_[_0xeb98('0x2f')](_0x46c6ab['model'],qs['fields'](_0x9bea97[_0xeb98('0x2c')]['fields']));_0x196634[_0xeb98('0x30')]=_0x196634[_0xeb98('0x30')][_0xeb98('0x31')]?_0x196634['attributes']:_0x46c6ab[_0xeb98('0x2a')];if(!_0x9bea97[_0xeb98('0x2c')][_0xeb98('0x32')](_0xeb98('0x33'))){_0x196634[_0xeb98('0x19')]=qs['limit'](_0x9bea97[_0xeb98('0x2c')][_0xeb98('0x19')]);_0x196634[_0xeb98('0x17')]=qs[_0xeb98('0x17')](_0x9bea97['query'][_0xeb98('0x17')]);}_0x196634[_0xeb98('0x34')]=qs[_0xeb98('0x35')](_0x9bea97[_0xeb98('0x2c')][_0xeb98('0x35')]);_0x196634[_0xeb98('0x36')]=qs[_0xeb98('0x2e')](_[_0xeb98('0x37')](_0x9bea97[_0xeb98('0x2c')],_0x46c6ab[_0xeb98('0x2e')]),_0x18f525);if(_0x9bea97[_0xeb98('0x2c')][_0xeb98('0x38')]){_0x196634[_0xeb98('0x36')]=_['merge'](_0x196634['where'],{'$or':_['map'](_0x18f525,function(_0x5d5bee){if(_0x5d5bee[_0xeb98('0x28')]!==_0xeb98('0x39')){var _0x5c0274={};_0x5c0274[_0x5d5bee['name']]={'$like':'%'+_0x9bea97[_0xeb98('0x2c')]['filter']+'%'};return _0x5c0274;}})});}_0x196634=_[_0xeb98('0x3a')]({},_0x196634,_0x9bea97['options']);var _0xc53aa2={'where':_0x196634[_0xeb98('0x36')]};return db['SugarcrmField']['count'](_0xc53aa2)['then'](function(_0x4d39a5){_0x1a79bd[_0xeb98('0x1a')]=_0x4d39a5;if(_0x9bea97[_0xeb98('0x2c')]['includeAll']){_0x196634[_0xeb98('0x3b')]=[{'all':!![]}];}return db[_0xeb98('0x25')]['findAll'](_0x196634);})[_0xeb98('0x20')](function(_0x2cb6a6){_0x1a79bd[_0xeb98('0x3c')]=_0x2cb6a6;return _0x1a79bd;})[_0xeb98('0x20')](respondWithFilteredResult(_0x55e1a8,_0x196634))['catch'](handleError(_0x55e1a8,null));};exports[_0xeb98('0x3d')]=function(_0x932260,_0x5cdf30){var _0x3036fc={'raw':!![],'where':{'id':_0x932260[_0xeb98('0x3e')]['id']}},_0x36a8df={};_0x36a8df['model']=_[_0xeb98('0x2d')](db[_0xeb98('0x25')][_0xeb98('0x26')]);_0x36a8df[_0xeb98('0x2c')]=_['keys'](_0x932260[_0xeb98('0x2c')]);_0x36a8df['filters']=_[_0xeb98('0x2f')](_0x36a8df[_0xeb98('0x2a')],_0x36a8df[_0xeb98('0x2c')]);_0x3036fc[_0xeb98('0x30')]=_[_0xeb98('0x2f')](_0x36a8df[_0xeb98('0x2a')],qs[_0xeb98('0x3f')](_0x932260[_0xeb98('0x2c')][_0xeb98('0x3f')]));_0x3036fc[_0xeb98('0x30')]=_0x3036fc[_0xeb98('0x30')]['length']?_0x3036fc[_0xeb98('0x30')]:_0x36a8df[_0xeb98('0x2a')];if(_0x932260[_0xeb98('0x2c')][_0xeb98('0x40')]){_0x3036fc['include']=[{'all':!![]}];}_0x3036fc=_['merge']({},_0x3036fc,_0x932260[_0xeb98('0x41')]);return db[_0xeb98('0x25')][_0xeb98('0x42')](_0x3036fc)[_0xeb98('0x20')](handleEntityNotFound(_0x5cdf30,null))[_0xeb98('0x20')](respondWithResult(_0x5cdf30,null))[_0xeb98('0x43')](handleError(_0x5cdf30,null));};exports[_0xeb98('0x44')]=function(_0xeec5be,_0x52a1ab){return db[_0xeb98('0x25')][_0xeb98('0x44')](_0xeec5be[_0xeb98('0x45')],{})['then'](respondWithResult(_0x52a1ab,0xc9))['catch'](handleError(_0x52a1ab,null));};exports[_0xeb98('0x1f')]=function(_0x3243df,_0x51df72){if(_0x3243df[_0xeb98('0x45')]['id']){delete _0x3243df[_0xeb98('0x45')]['id'];}return db[_0xeb98('0x25')][_0xeb98('0x42')]({'where':{'id':_0x3243df[_0xeb98('0x3e')]['id']}})['then'](handleEntityNotFound(_0x51df72,null))[_0xeb98('0x20')](saveUpdates(_0x3243df['body'],null))['then'](respondWithResult(_0x51df72,null))['catch'](handleError(_0x51df72,null));};exports['destroy']=function(_0x295e5c,_0x2a663b){return db['SugarcrmField'][_0xeb98('0x42')]({'where':{'id':_0x295e5c[_0xeb98('0x3e')]['id']}})[_0xeb98('0x20')](handleEntityNotFound(_0x2a663b,null))[_0xeb98('0x20')](removeEntity(_0x2a663b,null))[_0xeb98('0x43')](handleError(_0x2a663b,null));};
\ No newline at end of file
index d15074c..af9bd36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffad=['../../config/logger','bluebird','request-promise','path','rimraf','../../config/environment','./intSugarcrmField.attributes','exports','define','idField','FieldId','util'];(function(_0x221637,_0x42a5e0){var _0x11bf9e=function(_0xbc416e){while(--_0xbc416e){_0x221637['push'](_0x221637['shift']());}};_0x11bf9e(++_0x42a5e0);}(_0xffad,0xa7));var _0xdffa=function(_0x39bc23,_0x2fdaf4){_0x39bc23=_0x39bc23-0x0;var _0x38b26a=_0xffad[_0x39bc23];return _0x38b26a;};'use strict';var _=require('lodash');var util=require(_0xdffa('0x0'));var logger=require(_0xdffa('0x1'))('api');var moment=require('moment');var BPromise=require(_0xdffa('0x2'));var rp=require(_0xdffa('0x3'));var fs=require('fs');var path=require(_0xdffa('0x4'));var rimraf=require(_0xdffa('0x5'));var config=require(_0xdffa('0x6'));var attributes=require(_0xdffa('0x7'));module[_0xdffa('0x8')]=function(_0x243f69,_0x63eb0b){return _0x243f69[_0xdffa('0x9')]('SugarcrmField',attributes,{'tableName':'int_sugarcrm_fields','paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':[_0xdffa('0xa'),_0xdffa('0xb')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5157=['util','../../config/logger','moment','../../config/environment','./intSugarcrmField.attributes','define','SugarcrmField','int_sugarcrm_fields','FieldId','lodash'];(function(_0x5cdf3c,_0x233f63){var _0x515b20=function(_0x10ef8c){while(--_0x10ef8c){_0x5cdf3c['push'](_0x5cdf3c['shift']());}};_0x515b20(++_0x233f63);}(_0x5157,0xbd));var _0x7515=function(_0x494630,_0x45bda2){_0x494630=_0x494630-0x0;var _0x3fa060=_0x5157[_0x494630];return _0x3fa060;};'use strict';var _=require(_0x7515('0x0'));var util=require(_0x7515('0x1'));var logger=require(_0x7515('0x2'))('api');var moment=require(_0x7515('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(_0x7515('0x4'));var attributes=require(_0x7515('0x5'));module['exports']=function(_0x2befe3,_0x55bc54){return _0x2befe3[_0x7515('0x6')](_0x7515('0x7'),attributes,{'tableName':_0x7515('0x8'),'paranoid':![],'indexes':[{'name':'sugarcrm_unique_index','fields':['idField',_0x7515('0x9')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index f2ddaa5..e7951a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a6b=['result','catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','error','code','SugarcrmField,\x20%s,\x20%s','message'];(function(_0x15cc4c,_0x1ca52c){var _0x42e443=function(_0x421e88){while(--_0x421e88){_0x15cc4c['push'](_0x15cc4c['shift']());}};_0x42e443(++_0x1ca52c);}(_0x2a6b,0x1e5));var _0xb2a6=function(_0x1c9e67,_0x3dbce0){_0x1c9e67=_0x1c9e67-0x0;var _0x31d020=_0x2a6b[_0x1c9e67];return _0x31d020;};'use strict';var _=require(_0xb2a6('0x0'));var util=require(_0xb2a6('0x1'));var moment=require(_0xb2a6('0x2'));var BPromise=require('bluebird');var rs=require(_0xb2a6('0x3'));var fs=require('fs');var Redis=require(_0xb2a6('0x4'));var db=require(_0xb2a6('0x5'))['db'];var utils=require(_0xb2a6('0x6'));var logger=require(_0xb2a6('0x7'))(_0xb2a6('0x8'));var config=require(_0xb2a6('0x9'));var jayson=require(_0xb2a6('0xa'));var client=jayson['client'][_0xb2a6('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3a3605,_0x2aed60,_0x54351c){return new BPromise(function(_0x569637,_0x58de6c){return client[_0xb2a6('0xc')](_0x3a3605,_0x54351c)[_0xb2a6('0xd')](function(_0x67e82a){logger[_0xb2a6('0xe')]('SugarcrmField,\x20%s,\x20%s',_0x2aed60,_0xb2a6('0xf'));logger[_0xb2a6('0x10')]('SugarcrmField,\x20%s,\x20%s,\x20%s',_0x2aed60,'request\x20sent',JSON['stringify'](_0x67e82a));if(_0x67e82a[_0xb2a6('0x11')]){if(_0x67e82a['error'][_0xb2a6('0x12')]===0x1f4){logger[_0xb2a6('0x11')](_0xb2a6('0x13'),_0x2aed60,_0x67e82a[_0xb2a6('0x11')][_0xb2a6('0x14')]);return _0x58de6c(_0x67e82a[_0xb2a6('0x11')][_0xb2a6('0x14')]);}logger[_0xb2a6('0x11')]('SugarcrmField,\x20%s,\x20%s',_0x2aed60,_0x67e82a[_0xb2a6('0x11')]['message']);return _0x569637(_0x67e82a[_0xb2a6('0x11')][_0xb2a6('0x14')]);}else{logger[_0xb2a6('0xe')](_0xb2a6('0x13'),_0x2aed60,_0xb2a6('0xf'));_0x569637(_0x67e82a[_0xb2a6('0x15')][_0xb2a6('0x14')]);}})[_0xb2a6('0x16')](function(_0xf25c6f){logger[_0xb2a6('0x11')](_0xb2a6('0x13'),_0x2aed60,_0xf25c6f);_0x58de6c(_0xf25c6f);});});}
\ No newline at end of file
+var _0x1b60=['result','lodash','util','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','http','request','then','info','SugarcrmField,\x20%s,\x20%s','request\x20sent','SugarcrmField,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x4c9173,_0x54c378){var _0x48bf57=function(_0x51d72f){while(--_0x51d72f){_0x4c9173['push'](_0x4c9173['shift']());}};_0x48bf57(++_0x54c378);}(_0x1b60,0x73));var _0x01b6=function(_0x51aebb,_0x337d75){_0x51aebb=_0x51aebb-0x0;var _0x4d162e=_0x1b60[_0x51aebb];return _0x4d162e;};'use strict';var _=require(_0x01b6('0x0'));var util=require(_0x01b6('0x1'));var moment=require('moment');var BPromise=require(_0x01b6('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x01b6('0x3'));var db=require(_0x01b6('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x01b6('0x5'))('rpc');var config=require(_0x01b6('0x6'));var jayson=require('jayson/promise');var client=jayson['client'][_0x01b6('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x11ba53,_0x28f2aa,_0x317f51){return new BPromise(function(_0x327cb6,_0xc6f493){return client[_0x01b6('0x8')](_0x11ba53,_0x317f51)[_0x01b6('0x9')](function(_0x2b1050){logger[_0x01b6('0xa')](_0x01b6('0xb'),_0x28f2aa,_0x01b6('0xc'));logger['debug'](_0x01b6('0xd'),_0x28f2aa,_0x01b6('0xc'),JSON[_0x01b6('0xe')](_0x2b1050));if(_0x2b1050[_0x01b6('0xf')]){if(_0x2b1050[_0x01b6('0xf')][_0x01b6('0x10')]===0x1f4){logger[_0x01b6('0xf')](_0x01b6('0xb'),_0x28f2aa,_0x2b1050[_0x01b6('0xf')]['message']);return _0xc6f493(_0x2b1050[_0x01b6('0xf')]['message']);}logger[_0x01b6('0xf')]('SugarcrmField,\x20%s,\x20%s',_0x28f2aa,_0x2b1050[_0x01b6('0xf')]['message']);return _0x327cb6(_0x2b1050[_0x01b6('0xf')][_0x01b6('0x11')]);}else{logger[_0x01b6('0xa')](_0x01b6('0xb'),_0x28f2aa,'request\x20sent');_0x327cb6(_0x2b1050[_0x01b6('0x12')][_0x01b6('0x11')]);}})['catch'](function(_0x2e7008){logger[_0x01b6('0xf')](_0x01b6('0xb'),_0x28f2aa,_0x2e7008);_0xc6f493(_0x2e7008);});});}
\ No newline at end of file
index 3f36695..1cfd7bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb94=['delete','exports','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerAccount.controller','get','isAuthenticated','/:id','/:id/configurations','getConfigurations','/:id/fields','create','post','put','update'];(function(_0x3a833e,_0x5a1878){var _0xdff445=function(_0x1715a3){while(--_0x1715a3){_0x3a833e['push'](_0x3a833e['shift']());}};_0xdff445(++_0x5a1878);}(_0xbb94,0xde));var _0x4bb9=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xbb94[_0x167cc1];return _0x10bc4b;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x4bb9('0x0'));var timeout=require('connect-timeout');var express=require(_0x4bb9('0x1'));var router=express[_0x4bb9('0x2')]();var fs_extra=require(_0x4bb9('0x3'));var auth=require(_0x4bb9('0x4'));var interaction=require(_0x4bb9('0x5'));var config=require(_0x4bb9('0x6'));var controller=require(_0x4bb9('0x7'));router[_0x4bb9('0x8')]('/',auth[_0x4bb9('0x9')](),controller['index']);router[_0x4bb9('0x8')](_0x4bb9('0xa'),auth[_0x4bb9('0x9')](),controller['show']);router[_0x4bb9('0x8')](_0x4bb9('0xb'),auth['isAuthenticated'](),controller[_0x4bb9('0xc')]);router['get'](_0x4bb9('0xd'),auth[_0x4bb9('0x9')](),controller['getFields']);router['post']('/',auth[_0x4bb9('0x9')](),controller[_0x4bb9('0xe')]);router[_0x4bb9('0xf')](_0x4bb9('0xb'),auth[_0x4bb9('0x9')](),controller['addConfiguration']);router[_0x4bb9('0x10')]('/:id',auth[_0x4bb9('0x9')](),controller[_0x4bb9('0x11')]);router[_0x4bb9('0x12')](_0x4bb9('0xa'),auth[_0x4bb9('0x9')](),controller['destroy']);module[_0x4bb9('0x13')]=router;
\ No newline at end of file
+var _0x5af0=['show','/:id/configurations','getFields','post','create','addConfiguration','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id'];(function(_0x28158f,_0x51146d){var _0x274ae4=function(_0x223e1b){while(--_0x223e1b){_0x28158f['push'](_0x28158f['shift']());}};_0x274ae4(++_0x51146d);}(_0x5af0,0x1eb));var _0x05af=function(_0x3a2415,_0x44cd83){_0x3a2415=_0x3a2415-0x0;var _0x853d89=_0x5af0[_0x3a2415];return _0x853d89;};'use strict';var multer=require(_0x05af('0x0'));var util=require(_0x05af('0x1'));var path=require(_0x05af('0x2'));var timeout=require(_0x05af('0x3'));var express=require(_0x05af('0x4'));var router=express[_0x05af('0x5')]();var fs_extra=require(_0x05af('0x6'));var auth=require(_0x05af('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x05af('0x8'));var controller=require('./intVtigerAccount.controller');router[_0x05af('0x9')]('/',auth[_0x05af('0xa')](),controller[_0x05af('0xb')]);router['get'](_0x05af('0xc'),auth['isAuthenticated'](),controller[_0x05af('0xd')]);router[_0x05af('0x9')](_0x05af('0xe'),auth['isAuthenticated'](),controller['getConfigurations']);router['get']('/:id/fields',auth[_0x05af('0xa')](),controller[_0x05af('0xf')]);router[_0x05af('0x10')]('/',auth['isAuthenticated'](),controller[_0x05af('0x11')]);router['post']('/:id/configurations',auth[_0x05af('0xa')](),controller[_0x05af('0x12')]);router[_0x05af('0x13')](_0x05af('0xc'),auth[_0x05af('0xa')](),controller[_0x05af('0x14')]);router[_0x05af('0x15')](_0x05af('0xc'),auth[_0x05af('0xa')](),controller[_0x05af('0x16')]);module[_0x05af('0x17')]=router;
\ No newline at end of file
index 9a172f6..fe91b8e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d59=['sequelize','STRING','HelpDesk'];(function(_0x48a353,_0x323a22){var _0x4de5a2=function(_0x3e6614){while(--_0x3e6614){_0x48a353['push'](_0x48a353['shift']());}};_0x4de5a2(++_0x323a22);}(_0x9d59,0x183));var _0x99d5=function(_0x60305e,_0x3db792){_0x60305e=_0x60305e-0x0;var _0x2a95d0=_0x9d59[_0x60305e];return _0x2a95d0;};'use strict';var Sequelize=require(_0x99d5('0x0'));module['exports']={'name':{'type':Sequelize[_0x99d5('0x1')],'allowNull':![]},'description':{'type':Sequelize['STRING']},'username':{'type':Sequelize[_0x99d5('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x99d5('0x2')},'remoteUri':{'type':Sequelize[_0x99d5('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x99d5('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x99d5('0x1')],'allowNull':![]}};
\ No newline at end of file
+var _0x2464=['STRING','HelpDesk','exports'];(function(_0x3a8eaf,_0x449cad){var _0x4f9110=function(_0x169362){while(--_0x169362){_0x3a8eaf['push'](_0x3a8eaf['shift']());}};_0x4f9110(++_0x449cad);}(_0x2464,0xc2));var _0x4246=function(_0x29f5bb,_0x575ea5){_0x29f5bb=_0x29f5bb-0x0;var _0x5c1d0c=_0x2464[_0x29f5bb];return _0x5c1d0c;};'use strict';var Sequelize=require('sequelize');module[_0x4246('0x0')]={'name':{'type':Sequelize[_0x4246('0x1')],'allowNull':![]},'description':{'type':Sequelize[_0x4246('0x1')]},'username':{'type':Sequelize[_0x4246('0x1')],'allowNull':![]},'moduleName':{'type':Sequelize[_0x4246('0x1')],'allowNull':![],'defaultValue':_0x4246('0x2')},'remoteUri':{'type':Sequelize[_0x4246('0x1')],'allowNull':![]},'serverUrl':{'type':Sequelize[_0x4246('0x1')],'allowNull':![]},'accessKey':{'type':Sequelize[_0x4246('0x1')],'allowNull':![]}};
\ No newline at end of file
index f528c5d..9f76600 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26b6=['username','moduleName','accessKey','remoteUri','substring','lastIndexOf','%s/webservice.php','getchallenge','success','POST','login','result','token','GET','describe','sessionName','autogenerated','reference','owner','remove','editable','label','startsWith','cf_','picklist','picklistValues','value','log','vTiger\x20error:\x20','test','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','statusCode','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','save','update','destroy','then','error','stack','name','send','index','map','VtigerAccount','fieldName','key','model','query','keys','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','type','merge','options','count','includeAll','include','findAll','rows','catch','show','rawAttributes','find','create','body','params','VtigerConfiguration','getConfigurations','addConfiguration','findOne','AccountId','Subjects','getDescriptions','channel','VtigerField','Descriptions','md5','getFields'];(function(_0x2b7389,_0x58311b){var _0xe5d9da=function(_0xecec75){while(--_0xecec75){_0x2b7389['push'](_0x2b7389['shift']());}};_0xe5d9da(++_0x58311b);}(_0x26b6,0x116));var _0x626b=function(_0xfbd68d,_0x1ec578){_0xfbd68d=_0xfbd68d-0x0;var _0x470f50=_0x26b6[_0xfbd68d];return _0x470f50;};'use strict';var emlformat=require(_0x626b('0x0'));var rimraf=require(_0x626b('0x1'));var zipdir=require(_0x626b('0x2'));var jsonpatch=require(_0x626b('0x3'));var rp=require(_0x626b('0x4'));var moment=require(_0x626b('0x5'));var BPromise=require(_0x626b('0x6'));var Mustache=require(_0x626b('0x7'));var util=require(_0x626b('0x8'));var path=require('path');var sox=require(_0x626b('0x9'));var csv=require(_0x626b('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x626b('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x626b('0xc'));var deskjs=require(_0x626b('0xd'));var toCsv=require(_0x626b('0xa'));var querystring=require(_0x626b('0xe'));var Papa=require(_0x626b('0xf'));var Redis=require(_0x626b('0x10'));var authService=require(_0x626b('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x626b('0x12'));var hardwareService=require(_0x626b('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0x626b('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x626b('0x15'));var db=require(_0x626b('0x16'))['db'];var integrations=require(_0x626b('0x17'));function respondWithStatusCode(_0x4d3d6,_0x3ea9da){_0x3ea9da=_0x3ea9da||0xcc;return function(_0x5b691e){if(_0x5b691e){return _0x4d3d6[_0x626b('0x18')](_0x3ea9da);}return _0x4d3d6[_0x626b('0x19')](_0x3ea9da)[_0x626b('0x1a')]();};}function respondWithResult(_0x6e349,_0x954d89){_0x954d89=_0x954d89||0xc8;return function(_0x25d0c1){if(_0x25d0c1){return _0x6e349[_0x626b('0x19')](_0x954d89)[_0x626b('0x1b')](_0x25d0c1);}};}function respondWithFilteredResult(_0x390940,_0x2a5ac2){return function(_0x154b4b){if(_0x154b4b){var _0x448951=typeof _0x2a5ac2[_0x626b('0x1c')]===_0x626b('0x1d')&&typeof _0x2a5ac2['limit']===_0x626b('0x1d');var _0x2369a7=_0x154b4b['count'];var _0x598b98=_0x448951?0x0:_0x2a5ac2[_0x626b('0x1c')];var _0x4ad6d3=_0x448951?_0x154b4b['count']:_0x2a5ac2['offset']+_0x2a5ac2[_0x626b('0x1e')];var _0xbb3efb;if(_0x4ad6d3>=_0x2369a7){_0x4ad6d3=_0x2369a7;_0xbb3efb=0xc8;}else{_0xbb3efb=0xce;}_0x390940['status'](_0xbb3efb);return _0x390940[_0x626b('0x1f')](_0x626b('0x20'),_0x598b98+'-'+_0x4ad6d3+'/'+_0x2369a7)[_0x626b('0x1b')](_0x154b4b);}return null;};}function patchUpdates(_0x446bf4){return function(_0x35da9a){try{jsonpatch['apply'](_0x35da9a,_0x446bf4,!![]);}catch(_0x4aa433){return BPromise['reject'](_0x4aa433);}return _0x35da9a[_0x626b('0x21')]();};}function saveUpdates(_0x46ab52,_0x378ff0){return function(_0x2065c0){if(_0x2065c0){return _0x2065c0[_0x626b('0x22')](_0x46ab52)['then'](function(_0x5614ee){return _0x5614ee;});}return null;};}function removeEntity(_0x318195,_0x51a92a){return function(_0x298a9f){if(_0x298a9f){return _0x298a9f[_0x626b('0x23')]()[_0x626b('0x24')](function(){_0x318195['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x12066f,_0x5a54a9){return function(_0x56f25a){if(!_0x56f25a){_0x12066f[_0x626b('0x18')](0x194);}return _0x56f25a;};}function handleError(_0x4723a3,_0x4107d8){_0x4107d8=_0x4107d8||0x1f4;return function(_0xf620a0){logger[_0x626b('0x25')](_0xf620a0[_0x626b('0x26')]);if(_0xf620a0[_0x626b('0x27')]){delete _0xf620a0[_0x626b('0x27')];}_0x4723a3[_0x626b('0x19')](_0x4107d8)[_0x626b('0x28')](_0xf620a0);};}exports[_0x626b('0x29')]=function(_0x39a61c,_0x5a5618){var _0x5948e8={},_0x3ff12e={},_0x1da444={'count':0x0,'rows':[]};var _0x336f08=_[_0x626b('0x2a')](db[_0x626b('0x2b')]['rawAttributes'],function(_0x1900c4){return{'name':_0x1900c4[_0x626b('0x2c')],'type':_0x1900c4['type'][_0x626b('0x2d')]};});_0x3ff12e[_0x626b('0x2e')]=_[_0x626b('0x2a')](_0x336f08,_0x626b('0x27'));_0x3ff12e[_0x626b('0x2f')]=_[_0x626b('0x30')](_0x39a61c[_0x626b('0x2f')]);_0x3ff12e['filters']=_['intersection'](_0x3ff12e[_0x626b('0x2e')],_0x3ff12e[_0x626b('0x2f')]);_0x5948e8[_0x626b('0x31')]=_[_0x626b('0x32')](_0x3ff12e[_0x626b('0x2e')],qs['fields'](_0x39a61c[_0x626b('0x2f')][_0x626b('0x33')]));_0x5948e8[_0x626b('0x31')]=_0x5948e8[_0x626b('0x31')][_0x626b('0x34')]?_0x5948e8[_0x626b('0x31')]:_0x3ff12e['model'];if(!_0x39a61c[_0x626b('0x2f')][_0x626b('0x35')](_0x626b('0x36'))){_0x5948e8['limit']=qs['limit'](_0x39a61c[_0x626b('0x2f')][_0x626b('0x1e')]);_0x5948e8[_0x626b('0x1c')]=qs['offset'](_0x39a61c[_0x626b('0x2f')][_0x626b('0x1c')]);}_0x5948e8[_0x626b('0x37')]=qs[_0x626b('0x38')](_0x39a61c['query']['sort']);_0x5948e8[_0x626b('0x39')]=qs[_0x626b('0x3a')](_[_0x626b('0x3b')](_0x39a61c['query'],_0x3ff12e[_0x626b('0x3a')]),_0x336f08);if(_0x39a61c[_0x626b('0x2f')][_0x626b('0x3c')]){_0x5948e8[_0x626b('0x39')]=_['merge'](_0x5948e8[_0x626b('0x39')],{'$or':_['map'](_0x336f08,function(_0x2d9fa3){if(_0x2d9fa3[_0x626b('0x3d')]!=='VIRTUAL'){var _0x4b2119={};_0x4b2119[_0x2d9fa3['name']]={'$like':'%'+_0x39a61c['query'][_0x626b('0x3c')]+'%'};return _0x4b2119;}})});}_0x5948e8=_[_0x626b('0x3e')]({},_0x5948e8,_0x39a61c[_0x626b('0x3f')]);var _0x5de409={'where':_0x5948e8[_0x626b('0x39')]};return db[_0x626b('0x2b')][_0x626b('0x40')](_0x5de409)[_0x626b('0x24')](function(_0x32ef6e){_0x1da444[_0x626b('0x40')]=_0x32ef6e;if(_0x39a61c['query'][_0x626b('0x41')]){_0x5948e8[_0x626b('0x42')]=[{'all':!![]}];}return db[_0x626b('0x2b')][_0x626b('0x43')](_0x5948e8);})[_0x626b('0x24')](function(_0x13d7ab){_0x1da444[_0x626b('0x44')]=_0x13d7ab;return _0x1da444;})[_0x626b('0x24')](respondWithFilteredResult(_0x5a5618,_0x5948e8))[_0x626b('0x45')](handleError(_0x5a5618,null));};exports[_0x626b('0x46')]=function(_0x5e07e6,_0x3c4ea9){var _0x29bebb={'raw':![],'where':{'id':_0x5e07e6['params']['id']}},_0x527358={};_0x527358[_0x626b('0x2e')]=_[_0x626b('0x30')](db['VtigerAccount'][_0x626b('0x47')]);_0x527358[_0x626b('0x2f')]=_['keys'](_0x5e07e6['query']);_0x527358[_0x626b('0x3a')]=_[_0x626b('0x32')](_0x527358['model'],_0x527358[_0x626b('0x2f')]);_0x29bebb[_0x626b('0x31')]=_[_0x626b('0x32')](_0x527358[_0x626b('0x2e')],qs[_0x626b('0x33')](_0x5e07e6[_0x626b('0x2f')][_0x626b('0x33')]));_0x29bebb[_0x626b('0x31')]=_0x29bebb[_0x626b('0x31')][_0x626b('0x34')]?_0x29bebb[_0x626b('0x31')]:_0x527358[_0x626b('0x2e')];if(_0x5e07e6[_0x626b('0x2f')]['includeAll']){_0x29bebb[_0x626b('0x42')]=[{'all':!![]}];}_0x29bebb=_[_0x626b('0x3e')]({},_0x29bebb,_0x5e07e6[_0x626b('0x3f')]);return db['VtigerAccount'][_0x626b('0x48')](_0x29bebb)[_0x626b('0x24')](handleEntityNotFound(_0x3c4ea9,null))[_0x626b('0x24')](respondWithResult(_0x3c4ea9,null))[_0x626b('0x45')](handleError(_0x3c4ea9,null));};exports[_0x626b('0x49')]=function(_0x1064f5,_0x335f51){return db[_0x626b('0x2b')]['create'](_0x1064f5[_0x626b('0x4a')],{})[_0x626b('0x24')](respondWithResult(_0x335f51,0xc9))[_0x626b('0x45')](handleError(_0x335f51,null));};exports[_0x626b('0x22')]=function(_0x3991c0,_0x41e1ee){if(_0x3991c0[_0x626b('0x4a')]['id']){delete _0x3991c0[_0x626b('0x4a')]['id'];}return db[_0x626b('0x2b')]['find']({'where':{'id':_0x3991c0[_0x626b('0x4b')]['id']}})[_0x626b('0x24')](handleEntityNotFound(_0x41e1ee,null))[_0x626b('0x24')](saveUpdates(_0x3991c0[_0x626b('0x4a')],null))[_0x626b('0x24')](respondWithResult(_0x41e1ee,null))[_0x626b('0x45')](handleError(_0x41e1ee,null));};exports[_0x626b('0x23')]=function(_0x58aca8,_0x5ed6fb){return db[_0x626b('0x2b')][_0x626b('0x48')]({'where':{'id':_0x58aca8[_0x626b('0x4b')]['id']}})['then'](handleEntityNotFound(_0x5ed6fb,null))[_0x626b('0x24')](removeEntity(_0x5ed6fb,null))['catch'](handleError(_0x5ed6fb,null));};exports['getConfigurations']=function(_0x387930,_0x17e861,_0x369ac3){var _0x45eab7={};var _0x20bb74={};var _0xe0a478;var _0x490d43;return db[_0x626b('0x2b')]['findOne']({'where':{'id':_0x387930['params']['id']}})[_0x626b('0x24')](handleEntityNotFound(_0x17e861,null))[_0x626b('0x24')](function(_0x2f4e4a){if(_0x2f4e4a){_0xe0a478=_0x2f4e4a;_0x20bb74['model']=_['keys'](db[_0x626b('0x4c')][_0x626b('0x47')]);_0x20bb74[_0x626b('0x2f')]=_[_0x626b('0x30')](_0x387930[_0x626b('0x2f')]);_0x20bb74[_0x626b('0x3a')]=_['intersection'](_0x20bb74[_0x626b('0x2e')],_0x20bb74['query']);_0x45eab7[_0x626b('0x31')]=_['intersection'](_0x20bb74[_0x626b('0x2e')],qs[_0x626b('0x33')](_0x387930[_0x626b('0x2f')][_0x626b('0x33')]));_0x45eab7[_0x626b('0x31')]=_0x45eab7[_0x626b('0x31')][_0x626b('0x34')]?_0x45eab7[_0x626b('0x31')]:_0x20bb74['model'];_0x45eab7[_0x626b('0x37')]=qs[_0x626b('0x38')](_0x387930[_0x626b('0x2f')][_0x626b('0x38')]);_0x45eab7[_0x626b('0x39')]=qs[_0x626b('0x3a')](_[_0x626b('0x3b')](_0x387930[_0x626b('0x2f')],_0x20bb74['filters']));if(_0x387930[_0x626b('0x2f')][_0x626b('0x3c')]){_0x45eab7[_0x626b('0x39')]=_['merge'](_0x45eab7[_0x626b('0x39')],{'$or':_[_0x626b('0x2a')](_0x45eab7[_0x626b('0x31')],function(_0x58d140){var _0x527451={};_0x527451[_0x58d140]={'$like':'%'+_0x387930[_0x626b('0x2f')]['filter']+'%'};return _0x527451;})});}_0x45eab7=_[_0x626b('0x3e')]({},_0x45eab7,_0x387930[_0x626b('0x3f')]);return _0xe0a478[_0x626b('0x4d')](_0x45eab7);}})[_0x626b('0x24')](function(_0x2c4199){if(_0x2c4199){_0x490d43=_0x2c4199['length'];if(!_0x387930[_0x626b('0x2f')][_0x626b('0x35')]('nolimit')){_0x45eab7['limit']=qs['limit'](_0x387930[_0x626b('0x2f')]['limit']);_0x45eab7[_0x626b('0x1c')]=qs[_0x626b('0x1c')](_0x387930[_0x626b('0x2f')][_0x626b('0x1c')]);}return _0xe0a478[_0x626b('0x4d')](_0x45eab7);}})[_0x626b('0x24')](function(_0x23fae3){if(_0x23fae3){return _0x23fae3?{'count':_0x490d43,'rows':_0x23fae3}:null;}})['then'](respondWithResult(_0x17e861,null))[_0x626b('0x45')](handleError(_0x17e861,null));};exports[_0x626b('0x4e')]=function(_0x9d2c76,_0x361f02,_0x3798f8){if(_0x9d2c76['body']['id']){delete _0x9d2c76[_0x626b('0x4a')]['id'];}return db['VtigerAccount'][_0x626b('0x4f')]({'where':{'id':_0x9d2c76['params']['id']}})[_0x626b('0x24')](handleEntityNotFound(_0x361f02,null))['then'](function(_0x4ecf4f){if(_0x4ecf4f){_0x9d2c76['body'][_0x626b('0x50')]=_0x4ecf4f['id'];_0x9d2c76[_0x626b('0x4a')][_0x626b('0x51')]=integrations['getSubjects'](_0x9d2c76['body']['channel'],_0x9d2c76[_0x626b('0x4a')]['type']);_0x9d2c76[_0x626b('0x4a')]['Descriptions']=integrations[_0x626b('0x52')](_0x9d2c76['body'][_0x626b('0x53')],_0x9d2c76[_0x626b('0x4a')]['type']);return db[_0x626b('0x4c')][_0x626b('0x49')](_0x9d2c76['body'],{'include':[{'model':db['VtigerField'],'as':'Subjects'},{'model':db[_0x626b('0x54')],'as':_0x626b('0x55')}]});}return null;})[_0x626b('0x24')](respondWithResult(_0x361f02,null))[_0x626b('0x45')](handleError(_0x361f02,null));};var md5=require(_0x626b('0x56'));exports[_0x626b('0x57')]=function(_0x2850d4,_0x5175c1,_0x4b791b){var _0x1678e1=null;var _0x4f3d6b=null;var _0xd31b0a=null;var _0x22df4c=null;var _0x13b507='';return db[_0x626b('0x2b')][_0x626b('0x4f')]({'where':{'id':_0x2850d4[_0x626b('0x4b')]['id']},'attributes':['id','name',_0x626b('0x58'),'description',_0x626b('0x59'),'remoteUri','serverUrl',_0x626b('0x5a')]})[_0x626b('0x24')](handleEntityNotFound(_0x5175c1,null))[_0x626b('0x24')](function(_0x720183){if(_0x720183){_0x1678e1=_0x720183['username'];_0x4f3d6b=_0x720183['accessKey'];_0xd31b0a=_0x720183[_0x626b('0x59')];_0x13b507=_0x720183[_0x626b('0x5b')];var _0xc1f2ae=_0x13b507['slice'](-0x1);if(_0xc1f2ae==='/'){_0x13b507=_0x13b507[_0x626b('0x5c')](0x0,_0x13b507[_0x626b('0x5d')](_0xc1f2ae));}_0x22df4c=util['format'](_0x626b('0x5e'),_0x13b507);var _0x349ede={'method':'GET','uri':_0x22df4c,'qs':{'operation':_0x626b('0x5f'),'username':_0x720183[_0x626b('0x58')]},'json':!![]};return rp(_0x349ede);}})['then'](function(_0x4cf13c){if(_0x4cf13c[_0x626b('0x60')]){var _0x1bc5a7={'method':_0x626b('0x61'),'uri':_0x22df4c,'form':{'operation':_0x626b('0x62'),'username':_0x1678e1,'accessKey':md5(_0x4cf13c[_0x626b('0x63')][_0x626b('0x64')]+_0x4f3d6b)},'json':!![]};return rp(_0x1bc5a7);}})[_0x626b('0x24')](function(_0x566909){if(_0x566909[_0x626b('0x60')]){var _0x39d771={'method':_0x626b('0x65'),'uri':_0x22df4c,'qs':{'operation':_0x626b('0x66'),'username':_0x1678e1,'sessionName':_0x566909[_0x626b('0x63')][_0x626b('0x67')],'elementType':_0xd31b0a},'json':!![]};return rp(_0x39d771);}})['then'](function(_0x40b5a1){if(_0x40b5a1[_0x626b('0x60')]){var _0x72ff94=[_0x626b('0x68'),_0x626b('0x69'),_0x626b('0x6a')];_[_0x626b('0x6b')](_0x40b5a1[_0x626b('0x63')]['fields'],function(_0x148e78){return _0x72ff94['includes'](_0x148e78['type']['name']);});_['remove'](_0x40b5a1['result'][_0x626b('0x33')],function(_0x2c3836){return _0x2c3836[_0x626b('0x6c')]==='false';});return{'count':_0x40b5a1[_0x626b('0x63')]['fields'][_0x626b('0x34')],'rows':_['map'](_0x40b5a1[_0x626b('0x63')][_0x626b('0x33')],function(_0x75140c){return{'id':_0x75140c[_0x626b('0x27')],'name':_0x75140c[_0x626b('0x6d')],'custom':_[_0x626b('0x6e')](_0x75140c[_0x626b('0x27')],_0x626b('0x6f'))?!![]:![],'options':_0x75140c['type']['name']===_0x626b('0x70')&&_0x75140c[_0x626b('0x3d')][_0x626b('0x71')][_0x626b('0x34')]>0x0?_[_0x626b('0x2a')](_0x75140c[_0x626b('0x3d')][_0x626b('0x71')],function(_0x137b02){return{'name':_0x137b02[_0x626b('0x6d')],'value':_0x137b02[_0x626b('0x72')]};}):[]};})};}})[_0x626b('0x24')](respondWithResult(_0x5175c1,null))['catch'](function(_0x533b18){console[_0x626b('0x73')](_0x626b('0x74')+_0x533b18);var _0x5e84cf=_0x2850d4['query'][_0x626b('0x75')]?0x1f4:_0x533b18['statusCode']||0x1f4;logger[_0x626b('0x25')](_0x626b('0x76'),_0x626b('0x57'),_0x5e84cf,JSON[_0x626b('0x77')](_0x533b18));delete _0x533b18['name'];if(_0x5e84cf===0x191){_0x5e84cf=0x190;}_0x5175c1[_0x626b('0x19')](_0x5e84cf)[_0x626b('0x28')](_0x2850d4[_0x626b('0x2f')]['test']?{'message':_0x626b('0x78'),'statusCode':_0x533b18[_0x626b('0x79')]}:_0x533b18);});};
\ No newline at end of file
+var _0xe7e9=['substring','lastIndexOf','format','%s/webservice.php','getchallenge','POST','login','result','token','success','GET','sessionName','autogenerated','reference','remove','includes','false','label','startsWith','cf_','picklist','picklistValues','log','test','statusCode','getFields,\x20%s,\x20%s,\x20%s','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','request-promise','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../components/integrations/configuration','status','end','json','limit','offset','count','Content-Range','apply','reject','save','then','destroy','error','stack','name','send','map','rawAttributes','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','options','VtigerAccount','includeAll','include','findAll','catch','show','merge','find','create','body','params','getConfigurations','findOne','VtigerConfiguration','addConfiguration','AccountId','Subjects','getSubjects','Descriptions','getDescriptions','channel','VtigerField','md5','getFields','description','moduleName','remoteUri','serverUrl','accessKey','username','slice'];(function(_0xe323e3,_0x110473){var _0x208a43=function(_0x18695c){while(--_0x18695c){_0xe323e3['push'](_0xe323e3['shift']());}};_0x208a43(++_0x110473);}(_0xe7e9,0x94));var _0x9e7e=function(_0x13ecca,_0xfd4f01){_0x13ecca=_0x13ecca-0x0;var _0x17c3b6=_0xe7e9[_0x13ecca];return _0x17c3b6;};'use strict';var emlformat=require(_0x9e7e('0x0'));var rimraf=require(_0x9e7e('0x1'));var zipdir=require(_0x9e7e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9e7e('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x9e7e('0x4'));var path=require(_0x9e7e('0x5'));var sox=require(_0x9e7e('0x6'));var csv=require(_0x9e7e('0x7'));var ejs=require(_0x9e7e('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9e7e('0x9'));var squel=require(_0x9e7e('0xa'));var crypto=require(_0x9e7e('0xb'));var jsforce=require(_0x9e7e('0xc'));var deskjs=require(_0x9e7e('0xd'));var toCsv=require('to-csv');var querystring=require(_0x9e7e('0xe'));var Papa=require(_0x9e7e('0xf'));var Redis=require('ioredis');var authService=require(_0x9e7e('0x10'));var qs=require(_0x9e7e('0x11'));var as=require(_0x9e7e('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x9e7e('0x13'));var utils=require(_0x9e7e('0x14'));var config=require(_0x9e7e('0x15'));var licenseUtil=require(_0x9e7e('0x16'));var db=require('../../mysqldb')['db'];var integrations=require(_0x9e7e('0x17'));function respondWithStatusCode(_0xdeda6b,_0x4a28ab){_0x4a28ab=_0x4a28ab||0xcc;return function(_0x52444d){if(_0x52444d){return _0xdeda6b['sendStatus'](_0x4a28ab);}return _0xdeda6b[_0x9e7e('0x18')](_0x4a28ab)[_0x9e7e('0x19')]();};}function respondWithResult(_0x6fe79d,_0x7f7114){_0x7f7114=_0x7f7114||0xc8;return function(_0x46b33c){if(_0x46b33c){return _0x6fe79d[_0x9e7e('0x18')](_0x7f7114)[_0x9e7e('0x1a')](_0x46b33c);}};}function respondWithFilteredResult(_0x947c1a,_0x3b2ec7){return function(_0x595571){if(_0x595571){var _0x5353a7=typeof _0x3b2ec7['offset']==='undefined'&&typeof _0x3b2ec7[_0x9e7e('0x1b')]==='undefined';var _0x186a1b=_0x595571['count'];var _0x4eabfc=_0x5353a7?0x0:_0x3b2ec7[_0x9e7e('0x1c')];var _0x4fd2c0=_0x5353a7?_0x595571[_0x9e7e('0x1d')]:_0x3b2ec7[_0x9e7e('0x1c')]+_0x3b2ec7[_0x9e7e('0x1b')];var _0x2f3ba1;if(_0x4fd2c0>=_0x186a1b){_0x4fd2c0=_0x186a1b;_0x2f3ba1=0xc8;}else{_0x2f3ba1=0xce;}_0x947c1a[_0x9e7e('0x18')](_0x2f3ba1);return _0x947c1a['set'](_0x9e7e('0x1e'),_0x4eabfc+'-'+_0x4fd2c0+'/'+_0x186a1b)[_0x9e7e('0x1a')](_0x595571);}return null;};}function patchUpdates(_0xb53e26){return function(_0x479d2c){try{jsonpatch[_0x9e7e('0x1f')](_0x479d2c,_0xb53e26,!![]);}catch(_0x55512){return BPromise[_0x9e7e('0x20')](_0x55512);}return _0x479d2c[_0x9e7e('0x21')]();};}function saveUpdates(_0x41b663,_0x4a956d){return function(_0x2d8858){if(_0x2d8858){return _0x2d8858['update'](_0x41b663)[_0x9e7e('0x22')](function(_0x3bc334){return _0x3bc334;});}return null;};}function removeEntity(_0x130a49,_0x49e63e){return function(_0x4681bb){if(_0x4681bb){return _0x4681bb[_0x9e7e('0x23')]()[_0x9e7e('0x22')](function(){_0x130a49[_0x9e7e('0x18')](0xcc)[_0x9e7e('0x19')]();});}};}function handleEntityNotFound(_0x1e1b82,_0x54fefb){return function(_0x4c7050){if(!_0x4c7050){_0x1e1b82['sendStatus'](0x194);}return _0x4c7050;};}function handleError(_0x2a9b4b,_0x5637b7){_0x5637b7=_0x5637b7||0x1f4;return function(_0x2a7404){logger[_0x9e7e('0x24')](_0x2a7404[_0x9e7e('0x25')]);if(_0x2a7404[_0x9e7e('0x26')]){delete _0x2a7404['name'];}_0x2a9b4b[_0x9e7e('0x18')](_0x5637b7)[_0x9e7e('0x27')](_0x2a7404);};}exports['index']=function(_0x2ec06c,_0x111975){var _0x43a0ee={},_0x509f96={},_0x27aaed={'count':0x0,'rows':[]};var _0x3bcd80=_[_0x9e7e('0x28')](db['VtigerAccount'][_0x9e7e('0x29')],function(_0x3c1474){return{'name':_0x3c1474['fieldName'],'type':_0x3c1474[_0x9e7e('0x2a')][_0x9e7e('0x2b')]};});_0x509f96[_0x9e7e('0x2c')]=_[_0x9e7e('0x28')](_0x3bcd80,_0x9e7e('0x26'));_0x509f96[_0x9e7e('0x2d')]=_[_0x9e7e('0x2e')](_0x2ec06c[_0x9e7e('0x2d')]);_0x509f96['filters']=_[_0x9e7e('0x2f')](_0x509f96[_0x9e7e('0x2c')],_0x509f96[_0x9e7e('0x2d')]);_0x43a0ee[_0x9e7e('0x30')]=_[_0x9e7e('0x2f')](_0x509f96[_0x9e7e('0x2c')],qs[_0x9e7e('0x31')](_0x2ec06c[_0x9e7e('0x2d')][_0x9e7e('0x31')]));_0x43a0ee['attributes']=_0x43a0ee['attributes'][_0x9e7e('0x32')]?_0x43a0ee[_0x9e7e('0x30')]:_0x509f96[_0x9e7e('0x2c')];if(!_0x2ec06c[_0x9e7e('0x2d')][_0x9e7e('0x33')](_0x9e7e('0x34'))){_0x43a0ee[_0x9e7e('0x1b')]=qs[_0x9e7e('0x1b')](_0x2ec06c['query'][_0x9e7e('0x1b')]);_0x43a0ee['offset']=qs[_0x9e7e('0x1c')](_0x2ec06c['query']['offset']);}_0x43a0ee[_0x9e7e('0x35')]=qs[_0x9e7e('0x36')](_0x2ec06c[_0x9e7e('0x2d')][_0x9e7e('0x36')]);_0x43a0ee[_0x9e7e('0x37')]=qs[_0x9e7e('0x38')](_[_0x9e7e('0x39')](_0x2ec06c[_0x9e7e('0x2d')],_0x509f96[_0x9e7e('0x38')]),_0x3bcd80);if(_0x2ec06c['query'][_0x9e7e('0x3a')]){_0x43a0ee['where']=_['merge'](_0x43a0ee[_0x9e7e('0x37')],{'$or':_[_0x9e7e('0x28')](_0x3bcd80,function(_0x1c5780){if(_0x1c5780[_0x9e7e('0x2a')]!==_0x9e7e('0x3b')){var _0x3ad319={};_0x3ad319[_0x1c5780[_0x9e7e('0x26')]]={'$like':'%'+_0x2ec06c[_0x9e7e('0x2d')][_0x9e7e('0x3a')]+'%'};return _0x3ad319;}})});}_0x43a0ee=_['merge']({},_0x43a0ee,_0x2ec06c[_0x9e7e('0x3c')]);var _0x308004={'where':_0x43a0ee[_0x9e7e('0x37')]};return db[_0x9e7e('0x3d')][_0x9e7e('0x1d')](_0x308004)[_0x9e7e('0x22')](function(_0xe83b50){_0x27aaed[_0x9e7e('0x1d')]=_0xe83b50;if(_0x2ec06c[_0x9e7e('0x2d')][_0x9e7e('0x3e')]){_0x43a0ee[_0x9e7e('0x3f')]=[{'all':!![]}];}return db[_0x9e7e('0x3d')][_0x9e7e('0x40')](_0x43a0ee);})[_0x9e7e('0x22')](function(_0x2ada5c){_0x27aaed['rows']=_0x2ada5c;return _0x27aaed;})[_0x9e7e('0x22')](respondWithFilteredResult(_0x111975,_0x43a0ee))[_0x9e7e('0x41')](handleError(_0x111975,null));};exports[_0x9e7e('0x42')]=function(_0x52a5ef,_0x325004){var _0x5c24f4={'raw':![],'where':{'id':_0x52a5ef['params']['id']}},_0x448965={};_0x448965[_0x9e7e('0x2c')]=_['keys'](db[_0x9e7e('0x3d')]['rawAttributes']);_0x448965[_0x9e7e('0x2d')]=_['keys'](_0x52a5ef[_0x9e7e('0x2d')]);_0x448965[_0x9e7e('0x38')]=_[_0x9e7e('0x2f')](_0x448965['model'],_0x448965[_0x9e7e('0x2d')]);_0x5c24f4[_0x9e7e('0x30')]=_[_0x9e7e('0x2f')](_0x448965[_0x9e7e('0x2c')],qs[_0x9e7e('0x31')](_0x52a5ef[_0x9e7e('0x2d')][_0x9e7e('0x31')]));_0x5c24f4[_0x9e7e('0x30')]=_0x5c24f4[_0x9e7e('0x30')][_0x9e7e('0x32')]?_0x5c24f4['attributes']:_0x448965[_0x9e7e('0x2c')];if(_0x52a5ef[_0x9e7e('0x2d')][_0x9e7e('0x3e')]){_0x5c24f4['include']=[{'all':!![]}];}_0x5c24f4=_[_0x9e7e('0x43')]({},_0x5c24f4,_0x52a5ef[_0x9e7e('0x3c')]);return db[_0x9e7e('0x3d')][_0x9e7e('0x44')](_0x5c24f4)[_0x9e7e('0x22')](handleEntityNotFound(_0x325004,null))['then'](respondWithResult(_0x325004,null))['catch'](handleError(_0x325004,null));};exports[_0x9e7e('0x45')]=function(_0x132450,_0x192060){return db[_0x9e7e('0x3d')]['create'](_0x132450[_0x9e7e('0x46')],{})[_0x9e7e('0x22')](respondWithResult(_0x192060,0xc9))[_0x9e7e('0x41')](handleError(_0x192060,null));};exports['update']=function(_0x6b0873,_0x2af332){if(_0x6b0873[_0x9e7e('0x46')]['id']){delete _0x6b0873[_0x9e7e('0x46')]['id'];}return db[_0x9e7e('0x3d')][_0x9e7e('0x44')]({'where':{'id':_0x6b0873[_0x9e7e('0x47')]['id']}})[_0x9e7e('0x22')](handleEntityNotFound(_0x2af332,null))[_0x9e7e('0x22')](saveUpdates(_0x6b0873[_0x9e7e('0x46')],null))[_0x9e7e('0x22')](respondWithResult(_0x2af332,null))[_0x9e7e('0x41')](handleError(_0x2af332,null));};exports[_0x9e7e('0x23')]=function(_0x15dc03,_0x3de88f){return db[_0x9e7e('0x3d')][_0x9e7e('0x44')]({'where':{'id':_0x15dc03[_0x9e7e('0x47')]['id']}})['then'](handleEntityNotFound(_0x3de88f,null))['then'](removeEntity(_0x3de88f,null))[_0x9e7e('0x41')](handleError(_0x3de88f,null));};exports[_0x9e7e('0x48')]=function(_0x4702df,_0x5e0b53,_0x4b7283){var _0x162a26={};var _0x5948c3={};var _0x10f843;var _0x506483;return db[_0x9e7e('0x3d')][_0x9e7e('0x49')]({'where':{'id':_0x4702df['params']['id']}})[_0x9e7e('0x22')](handleEntityNotFound(_0x5e0b53,null))['then'](function(_0x3272a9){if(_0x3272a9){_0x10f843=_0x3272a9;_0x5948c3['model']=_[_0x9e7e('0x2e')](db[_0x9e7e('0x4a')][_0x9e7e('0x29')]);_0x5948c3['query']=_[_0x9e7e('0x2e')](_0x4702df[_0x9e7e('0x2d')]);_0x5948c3[_0x9e7e('0x38')]=_[_0x9e7e('0x2f')](_0x5948c3[_0x9e7e('0x2c')],_0x5948c3['query']);_0x162a26['attributes']=_[_0x9e7e('0x2f')](_0x5948c3[_0x9e7e('0x2c')],qs[_0x9e7e('0x31')](_0x4702df[_0x9e7e('0x2d')][_0x9e7e('0x31')]));_0x162a26[_0x9e7e('0x30')]=_0x162a26['attributes']['length']?_0x162a26[_0x9e7e('0x30')]:_0x5948c3[_0x9e7e('0x2c')];_0x162a26[_0x9e7e('0x35')]=qs[_0x9e7e('0x36')](_0x4702df['query'][_0x9e7e('0x36')]);_0x162a26['where']=qs[_0x9e7e('0x38')](_[_0x9e7e('0x39')](_0x4702df[_0x9e7e('0x2d')],_0x5948c3[_0x9e7e('0x38')]));if(_0x4702df[_0x9e7e('0x2d')][_0x9e7e('0x3a')]){_0x162a26[_0x9e7e('0x37')]=_[_0x9e7e('0x43')](_0x162a26[_0x9e7e('0x37')],{'$or':_[_0x9e7e('0x28')](_0x162a26[_0x9e7e('0x30')],function(_0x43e14d){var _0x451411={};_0x451411[_0x43e14d]={'$like':'%'+_0x4702df[_0x9e7e('0x2d')][_0x9e7e('0x3a')]+'%'};return _0x451411;})});}_0x162a26=_[_0x9e7e('0x43')]({},_0x162a26,_0x4702df[_0x9e7e('0x3c')]);return _0x10f843['getConfigurations'](_0x162a26);}})[_0x9e7e('0x22')](function(_0x56d587){if(_0x56d587){_0x506483=_0x56d587[_0x9e7e('0x32')];if(!_0x4702df[_0x9e7e('0x2d')][_0x9e7e('0x33')](_0x9e7e('0x34'))){_0x162a26[_0x9e7e('0x1b')]=qs['limit'](_0x4702df[_0x9e7e('0x2d')][_0x9e7e('0x1b')]);_0x162a26['offset']=qs[_0x9e7e('0x1c')](_0x4702df[_0x9e7e('0x2d')][_0x9e7e('0x1c')]);}return _0x10f843['getConfigurations'](_0x162a26);}})[_0x9e7e('0x22')](function(_0x579305){if(_0x579305){return _0x579305?{'count':_0x506483,'rows':_0x579305}:null;}})[_0x9e7e('0x22')](respondWithResult(_0x5e0b53,null))[_0x9e7e('0x41')](handleError(_0x5e0b53,null));};exports[_0x9e7e('0x4b')]=function(_0x36b0ee,_0x38e7a4,_0x4c2bf3){if(_0x36b0ee[_0x9e7e('0x46')]['id']){delete _0x36b0ee[_0x9e7e('0x46')]['id'];}return db['VtigerAccount'][_0x9e7e('0x49')]({'where':{'id':_0x36b0ee[_0x9e7e('0x47')]['id']}})[_0x9e7e('0x22')](handleEntityNotFound(_0x38e7a4,null))[_0x9e7e('0x22')](function(_0x5be982){if(_0x5be982){_0x36b0ee[_0x9e7e('0x46')][_0x9e7e('0x4c')]=_0x5be982['id'];_0x36b0ee['body'][_0x9e7e('0x4d')]=integrations[_0x9e7e('0x4e')](_0x36b0ee[_0x9e7e('0x46')]['channel'],_0x36b0ee['body']['type']);_0x36b0ee[_0x9e7e('0x46')][_0x9e7e('0x4f')]=integrations[_0x9e7e('0x50')](_0x36b0ee[_0x9e7e('0x46')][_0x9e7e('0x51')],_0x36b0ee[_0x9e7e('0x46')][_0x9e7e('0x2a')]);return db[_0x9e7e('0x4a')]['create'](_0x36b0ee[_0x9e7e('0x46')],{'include':[{'model':db[_0x9e7e('0x52')],'as':_0x9e7e('0x4d')},{'model':db[_0x9e7e('0x52')],'as':'Descriptions'}]});}return null;})[_0x9e7e('0x22')](respondWithResult(_0x38e7a4,null))['catch'](handleError(_0x38e7a4,null));};var md5=require(_0x9e7e('0x53'));exports[_0x9e7e('0x54')]=function(_0x37f16d,_0x4a527c,_0x45b030){var _0x5859a7=null;var _0xb9cc86=null;var _0x17f72a=null;var _0xa0e538=null;var _0x2bf02c='';return db[_0x9e7e('0x3d')][_0x9e7e('0x49')]({'where':{'id':_0x37f16d[_0x9e7e('0x47')]['id']},'attributes':['id',_0x9e7e('0x26'),'username',_0x9e7e('0x55'),_0x9e7e('0x56'),_0x9e7e('0x57'),_0x9e7e('0x58'),_0x9e7e('0x59')]})[_0x9e7e('0x22')](handleEntityNotFound(_0x4a527c,null))[_0x9e7e('0x22')](function(_0x2918ab){if(_0x2918ab){_0x5859a7=_0x2918ab[_0x9e7e('0x5a')];_0xb9cc86=_0x2918ab[_0x9e7e('0x59')];_0x17f72a=_0x2918ab[_0x9e7e('0x56')];_0x2bf02c=_0x2918ab['remoteUri'];var _0x2830f3=_0x2bf02c[_0x9e7e('0x5b')](-0x1);if(_0x2830f3==='/'){_0x2bf02c=_0x2bf02c[_0x9e7e('0x5c')](0x0,_0x2bf02c[_0x9e7e('0x5d')](_0x2830f3));}_0xa0e538=util[_0x9e7e('0x5e')](_0x9e7e('0x5f'),_0x2bf02c);var _0x276191={'method':'GET','uri':_0xa0e538,'qs':{'operation':_0x9e7e('0x60'),'username':_0x2918ab[_0x9e7e('0x5a')]},'json':!![]};return rp(_0x276191);}})[_0x9e7e('0x22')](function(_0x30729a){if(_0x30729a['success']){var _0x48210d={'method':_0x9e7e('0x61'),'uri':_0xa0e538,'form':{'operation':_0x9e7e('0x62'),'username':_0x5859a7,'accessKey':md5(_0x30729a[_0x9e7e('0x63')][_0x9e7e('0x64')]+_0xb9cc86)},'json':!![]};return rp(_0x48210d);}})[_0x9e7e('0x22')](function(_0x433137){if(_0x433137[_0x9e7e('0x65')]){var _0x543c6d={'method':_0x9e7e('0x66'),'uri':_0xa0e538,'qs':{'operation':'describe','username':_0x5859a7,'sessionName':_0x433137['result'][_0x9e7e('0x67')],'elementType':_0x17f72a},'json':!![]};return rp(_0x543c6d);}})['then'](function(_0x1d94af){if(_0x1d94af[_0x9e7e('0x65')]){var _0x27a9ec=[_0x9e7e('0x68'),_0x9e7e('0x69'),'owner'];_[_0x9e7e('0x6a')](_0x1d94af['result'][_0x9e7e('0x31')],function(_0x38f32c){return _0x27a9ec[_0x9e7e('0x6b')](_0x38f32c['type'][_0x9e7e('0x26')]);});_[_0x9e7e('0x6a')](_0x1d94af[_0x9e7e('0x63')][_0x9e7e('0x31')],function(_0x2b535d){return _0x2b535d['editable']===_0x9e7e('0x6c');});return{'count':_0x1d94af['result'][_0x9e7e('0x31')][_0x9e7e('0x32')],'rows':_[_0x9e7e('0x28')](_0x1d94af[_0x9e7e('0x63')][_0x9e7e('0x31')],function(_0x4f9548){return{'id':_0x4f9548[_0x9e7e('0x26')],'name':_0x4f9548[_0x9e7e('0x6d')],'custom':_[_0x9e7e('0x6e')](_0x4f9548[_0x9e7e('0x26')],_0x9e7e('0x6f'))?!![]:![],'options':_0x4f9548['type'][_0x9e7e('0x26')]===_0x9e7e('0x70')&&_0x4f9548[_0x9e7e('0x2a')][_0x9e7e('0x71')]['length']>0x0?_[_0x9e7e('0x28')](_0x4f9548[_0x9e7e('0x2a')][_0x9e7e('0x71')],function(_0x55e2ab){return{'name':_0x55e2ab[_0x9e7e('0x6d')],'value':_0x55e2ab['value']};}):[]};})};}})[_0x9e7e('0x22')](respondWithResult(_0x4a527c,null))[_0x9e7e('0x41')](function(_0x58c7ed){console[_0x9e7e('0x72')]('vTiger\x20error:\x20'+_0x58c7ed);var _0x5e310d=_0x37f16d[_0x9e7e('0x2d')][_0x9e7e('0x73')]?0x1f4:_0x58c7ed[_0x9e7e('0x74')]||0x1f4;logger[_0x9e7e('0x24')](_0x9e7e('0x75'),_0x9e7e('0x54'),_0x5e310d,JSON[_0x9e7e('0x76')](_0x58c7ed));delete _0x58c7ed[_0x9e7e('0x26')];if(_0x5e310d===0x191){_0x5e310d=0x190;}_0x4a527c['status'](_0x5e310d)['send'](_0x37f16d[_0x9e7e('0x2d')][_0x9e7e('0x73')]?{'message':_0x9e7e('0x77'),'statusCode':_0x58c7ed['statusCode']}:_0x58c7ed);});};
\ No newline at end of file
index 7f23b85..f56c0ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe30e=['../../components/integrations/configuration','exports','define','VtigerAccount','int_vtiger_accounts','lodash','util','api','bluebird','request-promise','rimraf','../../config/environment'];(function(_0xbb8d5d,_0x2eeaea){var _0x59c7ea=function(_0x9fe3ee){while(--_0x9fe3ee){_0xbb8d5d['push'](_0xbb8d5d['shift']());}};_0x59c7ea(++_0x2eeaea);}(_0xe30e,0x179));var _0xee30=function(_0x2b5ee5,_0x3741bf){_0x2b5ee5=_0x2b5ee5-0x0;var _0x1c480b=_0xe30e[_0x2b5ee5];return _0x1c480b;};'use strict';var _=require(_0xee30('0x0'));var util=require(_0xee30('0x1'));var logger=require('../../config/logger')(_0xee30('0x2'));var moment=require('moment');var BPromise=require(_0xee30('0x3'));var rp=require(_0xee30('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xee30('0x5'));var config=require(_0xee30('0x6'));var attributes=require('./intVtigerAccount.attributes');var integrations=require(_0xee30('0x7'));module[_0xee30('0x8')]=function(_0x114d7d,_0x272cb3){return _0x114d7d[_0xee30('0x9')](_0xee30('0xa'),attributes,{'tableName':_0xee30('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x4a33=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','../../components/integrations/configuration','exports','define','VtigerAccount','int_vtiger_accounts','util'];(function(_0x3a902a,_0xca8442){var _0x24f2d5=function(_0xb6799a){while(--_0xb6799a){_0x3a902a['push'](_0x3a902a['shift']());}};_0x24f2d5(++_0xca8442);}(_0x4a33,0x1ac));var _0x34a3=function(_0x2b4411,_0x2625ed){_0x2b4411=_0x2b4411-0x0;var _0x8e41ef=_0x4a33[_0x2b4411];return _0x8e41ef;};'use strict';var _=require('lodash');var util=require(_0x34a3('0x0'));var logger=require(_0x34a3('0x1'))(_0x34a3('0x2'));var moment=require(_0x34a3('0x3'));var BPromise=require('bluebird');var rp=require(_0x34a3('0x4'));var fs=require('fs');var path=require(_0x34a3('0x5'));var rimraf=require(_0x34a3('0x6'));var config=require(_0x34a3('0x7'));var attributes=require('./intVtigerAccount.attributes');var integrations=require(_0x34a3('0x8'));module[_0x34a3('0x9')]=function(_0x284696,_0x310c2d){return _0x284696[_0x34a3('0xa')](_0x34a3('0xb'),attributes,{'tableName':_0x34a3('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b10d67a..841f207 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x91a7=['VtigerAccount,\x20%s,\x20%s','catch','GetVtigerAccount','options','raw','where','attributes','limit','include','map','model','ShowVtigerAccount','VtigerAccount','find','util','moment','bluebird','ioredis','../../config/utils','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','stringify','error','code','message'];(function(_0x4bafac,_0x4ab088){var _0x2f706b=function(_0xb49191){while(--_0xb49191){_0x4bafac['push'](_0x4bafac['shift']());}};_0x2f706b(++_0x4ab088);}(_0x91a7,0xe7));var _0x791a=function(_0x5d9872,_0x296c01){_0x5d9872=_0x5d9872-0x0;var _0x47fb8a=_0x91a7[_0x5d9872];return _0x47fb8a;};'use strict';var _=require('lodash');var util=require(_0x791a('0x0'));var moment=require(_0x791a('0x1'));var BPromise=require(_0x791a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x791a('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x791a('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x791a('0x5'));var jayson=require(_0x791a('0x6'));var client=jayson['client'][_0x791a('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x5db6db,_0x33baac,_0x159e24){return new BPromise(function(_0x5aa10a,_0x1a32b4){return client[_0x791a('0x8')](_0x5db6db,_0x159e24)[_0x791a('0x9')](function(_0x80ff65){logger[_0x791a('0xa')]('VtigerAccount,\x20%s,\x20%s',_0x33baac,_0x791a('0xb'));logger[_0x791a('0xc')]('VtigerAccount,\x20%s,\x20%s,\x20%s',_0x33baac,_0x791a('0xb'),JSON[_0x791a('0xd')](_0x80ff65));if(_0x80ff65[_0x791a('0xe')]){if(_0x80ff65[_0x791a('0xe')][_0x791a('0xf')]===0x1f4){logger[_0x791a('0xe')]('VtigerAccount,\x20%s,\x20%s',_0x33baac,_0x80ff65['error'][_0x791a('0x10')]);return _0x1a32b4(_0x80ff65[_0x791a('0xe')]['message']);}logger[_0x791a('0xe')](_0x791a('0x11'),_0x33baac,_0x80ff65['error'][_0x791a('0x10')]);return _0x5aa10a(_0x80ff65[_0x791a('0xe')][_0x791a('0x10')]);}else{logger[_0x791a('0xa')]('VtigerAccount,\x20%s,\x20%s',_0x33baac,_0x791a('0xb'));_0x5aa10a(_0x80ff65['result'][_0x791a('0x10')]);}})[_0x791a('0x12')](function(_0x49ae3e){logger[_0x791a('0xe')]('VtigerAccount,\x20%s,\x20%s',_0x33baac,_0x49ae3e);_0x1a32b4(_0x49ae3e);});});}exports[_0x791a('0x13')]=function(_0x52941d){var _0x4a84ee=this;return new Promise(function(_0x588d00,_0x40f0d3){return db['VtigerAccount']['findAll']({'raw':_0x52941d[_0x791a('0x14')]?_0x52941d[_0x791a('0x14')][_0x791a('0x15')]===undefined?!![]:![]:!![],'where':_0x52941d[_0x791a('0x14')]?_0x52941d['options'][_0x791a('0x16')]||null:null,'attributes':_0x52941d[_0x791a('0x14')]?_0x52941d[_0x791a('0x14')][_0x791a('0x17')]||null:null,'limit':_0x52941d['options']?_0x52941d[_0x791a('0x14')][_0x791a('0x18')]||null:null,'include':_0x52941d[_0x791a('0x14')]?_0x52941d[_0x791a('0x14')][_0x791a('0x19')]?_[_0x791a('0x1a')](_0x52941d[_0x791a('0x14')][_0x791a('0x19')],function(_0x323c6a){return{'model':db[_0x323c6a[_0x791a('0x1b')]],'as':_0x323c6a['as'],'attributes':_0x323c6a[_0x791a('0x17')],'include':_0x323c6a['include']?_[_0x791a('0x1a')](_0x323c6a[_0x791a('0x19')],function(_0x380329){return{'model':db[_0x380329[_0x791a('0x1b')]],'as':_0x380329['as'],'attributes':_0x380329['attributes'],'include':_0x380329[_0x791a('0x19')]?_[_0x791a('0x1a')](_0x380329['include'],function(_0xdfa84f){return{'model':db[_0xdfa84f[_0x791a('0x1b')]],'as':_0xdfa84f['as'],'attributes':_0xdfa84f[_0x791a('0x17')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x29194d){logger[_0x791a('0xa')](_0x791a('0x13'),_0x52941d);logger[_0x791a('0xc')](_0x791a('0x13'),_0x52941d,JSON[_0x791a('0xd')](_0x29194d));_0x588d00(_0x29194d);})[_0x791a('0x12')](function(_0x889534){logger['error'](_0x791a('0x13'),_0x889534[_0x791a('0x10')],_0x52941d);_0x40f0d3(_0x4a84ee[_0x791a('0xe')](0x1f4,_0x889534['message']));});});};exports[_0x791a('0x1c')]=function(_0x5df656){var _0xc59f5e=this;return new Promise(function(_0x2e4ec8,_0xcde862){return db[_0x791a('0x1d')][_0x791a('0x1e')]({'raw':_0x5df656[_0x791a('0x14')]?_0x5df656[_0x791a('0x14')]['raw']===undefined?!![]:![]:!![],'where':_0x5df656[_0x791a('0x14')]?_0x5df656[_0x791a('0x14')][_0x791a('0x16')]||null:null,'attributes':_0x5df656[_0x791a('0x14')]?_0x5df656[_0x791a('0x14')]['attributes']||null:null,'include':_0x5df656[_0x791a('0x14')]?_0x5df656[_0x791a('0x14')][_0x791a('0x19')]?_[_0x791a('0x1a')](_0x5df656[_0x791a('0x14')]['include'],function(_0x305836){return{'model':db[_0x305836[_0x791a('0x1b')]],'as':_0x305836['as'],'attributes':_0x305836[_0x791a('0x17')],'include':_0x305836[_0x791a('0x19')]?_[_0x791a('0x1a')](_0x305836['include'],function(_0xd5609){return{'model':db[_0xd5609['model']],'as':_0xd5609['as'],'attributes':_0xd5609[_0x791a('0x17')],'include':_0xd5609['include']?_['map'](_0xd5609[_0x791a('0x19')],function(_0x404530){return{'model':db[_0x404530[_0x791a('0x1b')]],'as':_0x404530['as'],'attributes':_0x404530[_0x791a('0x17')]};}):[]};}):[]};}):[]:[]})[_0x791a('0x9')](function(_0x3f46be){logger[_0x791a('0xa')]('ShowVtigerAccount',_0x5df656);logger[_0x791a('0xc')]('ShowVtigerAccount',_0x5df656,JSON[_0x791a('0xd')](_0x3f46be));_0x2e4ec8(_0x3f46be);})['catch'](function(_0x25e8cc){logger[_0x791a('0xe')]('ShowVtigerAccount',_0x25e8cc[_0x791a('0x10')],_0x5df656);_0xcde862(_0xc59f5e[_0x791a('0xe')](0x1f4,_0x25e8cc['message']));});});};
\ No newline at end of file
+var _0x7334=['code','message','request\x20sent','result','GetVtigerAccount','findAll','options','raw','where','attributes','limit','include','map','model','VtigerAccount','find','ShowVtigerAccount','catch','lodash','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','VtigerAccount,\x20%s,\x20%s','debug','VtigerAccount,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x7334,0x184));var _0x4733=function(_0xc50cf9,_0x5d012a){_0xc50cf9=_0xc50cf9-0x0;var _0x55c6f4=_0x7334[_0xc50cf9];return _0x55c6f4;};'use strict';var _=require(_0x4733('0x0'));var util=require(_0x4733('0x1'));var moment=require(_0x4733('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4733('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x4733('0x4'));var logger=require(_0x4733('0x5'))(_0x4733('0x6'));var config=require(_0x4733('0x7'));var jayson=require(_0x4733('0x8'));var client=jayson[_0x4733('0x9')][_0x4733('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x283754,_0x12cafa,_0x43d95c){return new BPromise(function(_0x8257cf,_0x3562b7){return client[_0x4733('0xb')](_0x283754,_0x43d95c)[_0x4733('0xc')](function(_0x2d5fde){logger[_0x4733('0xd')](_0x4733('0xe'),_0x12cafa,'request\x20sent');logger[_0x4733('0xf')](_0x4733('0x10'),_0x12cafa,'request\x20sent',JSON[_0x4733('0x11')](_0x2d5fde));if(_0x2d5fde['error']){if(_0x2d5fde[_0x4733('0x12')][_0x4733('0x13')]===0x1f4){logger[_0x4733('0x12')](_0x4733('0xe'),_0x12cafa,_0x2d5fde[_0x4733('0x12')][_0x4733('0x14')]);return _0x3562b7(_0x2d5fde[_0x4733('0x12')]['message']);}logger[_0x4733('0x12')]('VtigerAccount,\x20%s,\x20%s',_0x12cafa,_0x2d5fde[_0x4733('0x12')][_0x4733('0x14')]);return _0x8257cf(_0x2d5fde[_0x4733('0x12')][_0x4733('0x14')]);}else{logger[_0x4733('0xd')](_0x4733('0xe'),_0x12cafa,_0x4733('0x15'));_0x8257cf(_0x2d5fde[_0x4733('0x16')][_0x4733('0x14')]);}})['catch'](function(_0x2c0031){logger[_0x4733('0x12')]('VtigerAccount,\x20%s,\x20%s',_0x12cafa,_0x2c0031);_0x3562b7(_0x2c0031);});});}exports[_0x4733('0x17')]=function(_0x1d2fb6){var _0x2aa223=this;return new Promise(function(_0x384e0c,_0x579f67){return db['VtigerAccount'][_0x4733('0x18')]({'raw':_0x1d2fb6[_0x4733('0x19')]?_0x1d2fb6['options'][_0x4733('0x1a')]===undefined?!![]:![]:!![],'where':_0x1d2fb6[_0x4733('0x19')]?_0x1d2fb6[_0x4733('0x19')][_0x4733('0x1b')]||null:null,'attributes':_0x1d2fb6['options']?_0x1d2fb6[_0x4733('0x19')][_0x4733('0x1c')]||null:null,'limit':_0x1d2fb6['options']?_0x1d2fb6[_0x4733('0x19')][_0x4733('0x1d')]||null:null,'include':_0x1d2fb6['options']?_0x1d2fb6[_0x4733('0x19')][_0x4733('0x1e')]?_[_0x4733('0x1f')](_0x1d2fb6[_0x4733('0x19')][_0x4733('0x1e')],function(_0x24db74){return{'model':db[_0x24db74[_0x4733('0x20')]],'as':_0x24db74['as'],'attributes':_0x24db74[_0x4733('0x1c')],'include':_0x24db74['include']?_[_0x4733('0x1f')](_0x24db74[_0x4733('0x1e')],function(_0x7884e5){return{'model':db[_0x7884e5[_0x4733('0x20')]],'as':_0x7884e5['as'],'attributes':_0x7884e5[_0x4733('0x1c')],'include':_0x7884e5[_0x4733('0x1e')]?_[_0x4733('0x1f')](_0x7884e5[_0x4733('0x1e')],function(_0x13bc12){return{'model':db[_0x13bc12[_0x4733('0x20')]],'as':_0x13bc12['as'],'attributes':_0x13bc12['attributes']};}):[]};}):[]};}):[]:[]})[_0x4733('0xc')](function(_0x4c91bc){logger['info'](_0x4733('0x17'),_0x1d2fb6);logger['debug'](_0x4733('0x17'),_0x1d2fb6,JSON['stringify'](_0x4c91bc));_0x384e0c(_0x4c91bc);})['catch'](function(_0x517c73){logger[_0x4733('0x12')](_0x4733('0x17'),_0x517c73[_0x4733('0x14')],_0x1d2fb6);_0x579f67(_0x2aa223[_0x4733('0x12')](0x1f4,_0x517c73['message']));});});};exports['ShowVtigerAccount']=function(_0x50f67e){var _0x2b2757=this;return new Promise(function(_0x56872b,_0x5a4814){return db[_0x4733('0x21')][_0x4733('0x22')]({'raw':_0x50f67e[_0x4733('0x19')]?_0x50f67e['options']['raw']===undefined?!![]:![]:!![],'where':_0x50f67e[_0x4733('0x19')]?_0x50f67e[_0x4733('0x19')][_0x4733('0x1b')]||null:null,'attributes':_0x50f67e[_0x4733('0x19')]?_0x50f67e[_0x4733('0x19')]['attributes']||null:null,'include':_0x50f67e[_0x4733('0x19')]?_0x50f67e[_0x4733('0x19')][_0x4733('0x1e')]?_[_0x4733('0x1f')](_0x50f67e[_0x4733('0x19')]['include'],function(_0x570bc6){return{'model':db[_0x570bc6[_0x4733('0x20')]],'as':_0x570bc6['as'],'attributes':_0x570bc6[_0x4733('0x1c')],'include':_0x570bc6[_0x4733('0x1e')]?_[_0x4733('0x1f')](_0x570bc6[_0x4733('0x1e')],function(_0x5e31c8){return{'model':db[_0x5e31c8[_0x4733('0x20')]],'as':_0x5e31c8['as'],'attributes':_0x5e31c8[_0x4733('0x1c')],'include':_0x5e31c8[_0x4733('0x1e')]?_['map'](_0x5e31c8[_0x4733('0x1e')],function(_0x10a5e9){return{'model':db[_0x10a5e9[_0x4733('0x20')]],'as':_0x10a5e9['as'],'attributes':_0x10a5e9[_0x4733('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x4733('0xc')](function(_0x311c1d){logger[_0x4733('0xd')](_0x4733('0x23'),_0x50f67e);logger['debug'](_0x4733('0x23'),_0x50f67e,JSON['stringify'](_0x311c1d));_0x56872b(_0x311c1d);})[_0x4733('0x24')](function(_0x29db03){logger[_0x4733('0x12')](_0x4733('0x23'),_0x29db03[_0x4733('0x14')],_0x50f67e);_0x5a4814(_0x2b2757[_0x4733('0x12')](0x1f4,_0x29db03[_0x4733('0x14')]));});});};
\ No newline at end of file
index 14f1441..f642729 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4f8=['fs-extra','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','get','isAuthenticated','/:id','show','/:id/fields','getFields','getDescriptions','put','update','destroy','exports','util','connect-timeout','express'];(function(_0x404c68,_0x465eff){var _0x3143bc=function(_0x4cae3e){while(--_0x4cae3e){_0x404c68['push'](_0x404c68['shift']());}};_0x3143bc(++_0x465eff);}(_0xd4f8,0x19b));var _0x8d4f=function(_0x2461ec,_0xd693c3){_0x2461ec=_0x2461ec-0x0;var _0x3ba75c=_0xd4f8[_0x2461ec];return _0x3ba75c;};'use strict';var multer=require('multer');var util=require(_0x8d4f('0x0'));var path=require('path');var timeout=require(_0x8d4f('0x1'));var express=require(_0x8d4f('0x2'));var router=express['Router']();var fs_extra=require(_0x8d4f('0x3'));var auth=require('../../components/auth/service');var interaction=require(_0x8d4f('0x4'));var config=require(_0x8d4f('0x5'));var controller=require(_0x8d4f('0x6'));router[_0x8d4f('0x7')]('/',auth[_0x8d4f('0x8')](),controller['index']);router['get'](_0x8d4f('0x9'),auth[_0x8d4f('0x8')](),controller[_0x8d4f('0xa')]);router[_0x8d4f('0x7')](_0x8d4f('0xb'),auth[_0x8d4f('0x8')](),controller[_0x8d4f('0xc')]);router[_0x8d4f('0x7')]('/:id/subjects',auth[_0x8d4f('0x8')](),controller['getSubjects']);router[_0x8d4f('0x7')]('/:id/descriptions',auth[_0x8d4f('0x8')](),controller[_0x8d4f('0xd')]);router['post']('/',auth[_0x8d4f('0x8')](),controller['create']);router[_0x8d4f('0xe')](_0x8d4f('0x9'),auth[_0x8d4f('0x8')](),controller[_0x8d4f('0xf')]);router['delete'](_0x8d4f('0x9'),auth[_0x8d4f('0x8')](),controller[_0x8d4f('0x10')]);module[_0x8d4f('0x11')]=router;
\ No newline at end of file
+var _0x5be4=['multer','util','path','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./intVtigerConfiguration.controller','isAuthenticated','index','get','/:id','show','/:id/fields','/:id/subjects','/:id/descriptions','post','create','put','update','delete','destroy'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x5be4,0x1e3));var _0x45be=function(_0xc6960b,_0x13c71c){_0xc6960b=_0xc6960b-0x0;var _0x35c2ed=_0x5be4[_0xc6960b];return _0x35c2ed;};'use strict';var multer=require(_0x45be('0x0'));var util=require(_0x45be('0x1'));var path=require(_0x45be('0x2'));var timeout=require(_0x45be('0x3'));var express=require('express');var router=express[_0x45be('0x4')]();var fs_extra=require(_0x45be('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x45be('0x6'));var config=require(_0x45be('0x7'));var controller=require(_0x45be('0x8'));router['get']('/',auth[_0x45be('0x9')](),controller[_0x45be('0xa')]);router[_0x45be('0xb')](_0x45be('0xc'),auth[_0x45be('0x9')](),controller[_0x45be('0xd')]);router[_0x45be('0xb')](_0x45be('0xe'),auth[_0x45be('0x9')](),controller['getFields']);router['get'](_0x45be('0xf'),auth['isAuthenticated'](),controller['getSubjects']);router['get'](_0x45be('0x10'),auth['isAuthenticated'](),controller['getDescriptions']);router[_0x45be('0x11')]('/',auth[_0x45be('0x9')](),controller[_0x45be('0x12')]);router[_0x45be('0x13')](_0x45be('0xc'),auth[_0x45be('0x9')](),controller[_0x45be('0x14')]);router[_0x45be('0x15')](_0x45be('0xc'),auth[_0x45be('0x9')](),controller[_0x45be('0x16')]);module['exports']=router;
\ No newline at end of file
index 3ca5670..a4b01d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb69d=['exports','STRING','sequelize'];(function(_0x3ff085,_0x27c92e){var _0x2b68c3=function(_0x37811e){while(--_0x37811e){_0x3ff085['push'](_0x3ff085['shift']());}};_0x2b68c3(++_0x27c92e);}(_0xb69d,0x16a));var _0xdb69=function(_0x43a862,_0x44672a){_0x43a862=_0x43a862-0x0;var _0x10d2b7=_0xb69d[_0x43a862];return _0x10d2b7;};'use strict';var Sequelize=require(_0xdb69('0x0'));module[_0xdb69('0x1')]={'name':{'type':Sequelize[_0xdb69('0x2')]},'description':{'type':Sequelize[_0xdb69('0x2')]}};
\ No newline at end of file
+var _0x9ff4=['sequelize','exports','STRING'];(function(_0x1fb37e,_0x49de19){var _0x15177d=function(_0xb07731){while(--_0xb07731){_0x1fb37e['push'](_0x1fb37e['shift']());}};_0x15177d(++_0x49de19);}(_0x9ff4,0x12f));var _0x49ff=function(_0x551bd8,_0x280da8){_0x551bd8=_0x551bd8-0x0;var _0x5766e1=_0x9ff4[_0x551bd8];return _0x5766e1;};'use strict';var Sequelize=require(_0x49ff('0x0'));module[_0x49ff('0x1')]={'name':{'type':Sequelize[_0x49ff('0x2')]},'description':{'type':Sequelize[_0x49ff('0x2')]}};
\ No newline at end of file
index 2173eb5..c090a0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6ec=['fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','filter','merge','type','options','includeAll','findAll','rows','catch','show','params','include','find','create','body','destroy','VtigerField','order','pick','getFields','getSubjects','findOne','getDescriptions','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','json','undefined','limit','count','offset','status','Content-Range','apply','reject','save','update','then','end','error','stack','name','send','index','map','VtigerConfiguration','rawAttributes'];(function(_0x476036,_0x13c6a6){var _0x30b0ef=function(_0x35af25){while(--_0x35af25){_0x476036['push'](_0x476036['shift']());}};_0x30b0ef(++_0x13c6a6);}(_0xb6ec,0x74));var _0xcb6e=function(_0x2c083c,_0x53d463){_0x2c083c=_0x2c083c-0x0;var _0x48f345=_0xb6ec[_0x2c083c];return _0x48f345;};'use strict';var emlformat=require(_0xcb6e('0x0'));var rimraf=require(_0xcb6e('0x1'));var zipdir=require(_0xcb6e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xcb6e('0x3'));var moment=require(_0xcb6e('0x4'));var BPromise=require(_0xcb6e('0x5'));var Mustache=require('mustache');var util=require(_0xcb6e('0x6'));var path=require('path');var sox=require(_0xcb6e('0x7'));var csv=require(_0xcb6e('0x8'));var ejs=require(_0xcb6e('0x9'));var fs=require('fs');var fs_extra=require(_0xcb6e('0xa'));var _=require(_0xcb6e('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xcb6e('0xc'));var toCsv=require(_0xcb6e('0x8'));var querystring=require(_0xcb6e('0xd'));var Papa=require(_0xcb6e('0xe'));var Redis=require('ioredis');var authService=require(_0xcb6e('0xf'));var qs=require(_0xcb6e('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xcb6e('0x11'));var logger=require('../../config/logger')(_0xcb6e('0x12'));var utils=require('../../config/utils');var config=require(_0xcb6e('0x13'));var licenseUtil=require(_0xcb6e('0x14'));var db=require(_0xcb6e('0x15'))['db'];function respondWithStatusCode(_0x24e235,_0x311988){_0x311988=_0x311988||0xcc;return function(_0x4391f9){if(_0x4391f9){return _0x24e235[_0xcb6e('0x16')](_0x311988);}return _0x24e235['status'](_0x311988)['end']();};}function respondWithResult(_0x4f65e7,_0x5f1fd3){_0x5f1fd3=_0x5f1fd3||0xc8;return function(_0x4e8cfd){if(_0x4e8cfd){return _0x4f65e7['status'](_0x5f1fd3)[_0xcb6e('0x17')](_0x4e8cfd);}};}function respondWithFilteredResult(_0x2e0b9a,_0x6d72c2){return function(_0x539582){if(_0x539582){var _0x160a40=typeof _0x6d72c2['offset']===_0xcb6e('0x18')&&typeof _0x6d72c2[_0xcb6e('0x19')]===_0xcb6e('0x18');var _0x2f477b=_0x539582[_0xcb6e('0x1a')];var _0x29718e=_0x160a40?0x0:_0x6d72c2['offset'];var _0xdcae5f=_0x160a40?_0x539582[_0xcb6e('0x1a')]:_0x6d72c2[_0xcb6e('0x1b')]+_0x6d72c2['limit'];var _0x2c923d;if(_0xdcae5f>=_0x2f477b){_0xdcae5f=_0x2f477b;_0x2c923d=0xc8;}else{_0x2c923d=0xce;}_0x2e0b9a[_0xcb6e('0x1c')](_0x2c923d);return _0x2e0b9a['set'](_0xcb6e('0x1d'),_0x29718e+'-'+_0xdcae5f+'/'+_0x2f477b)[_0xcb6e('0x17')](_0x539582);}return null;};}function patchUpdates(_0x17d806){return function(_0x3fa7da){try{jsonpatch[_0xcb6e('0x1e')](_0x3fa7da,_0x17d806,!![]);}catch(_0x5ec970){return BPromise[_0xcb6e('0x1f')](_0x5ec970);}return _0x3fa7da[_0xcb6e('0x20')]();};}function saveUpdates(_0x25b020,_0x2d9cd0){return function(_0x3a4de2){if(_0x3a4de2){return _0x3a4de2[_0xcb6e('0x21')](_0x25b020)[_0xcb6e('0x22')](function(_0xa91355){return _0xa91355;});}return null;};}function removeEntity(_0x1ceaaf,_0x3566b3){return function(_0x5db5ba){if(_0x5db5ba){return _0x5db5ba['destroy']()[_0xcb6e('0x22')](function(){_0x1ceaaf[_0xcb6e('0x1c')](0xcc)[_0xcb6e('0x23')]();});}};}function handleEntityNotFound(_0x22421e,_0x3601b4){return function(_0x402e47){if(!_0x402e47){_0x22421e['sendStatus'](0x194);}return _0x402e47;};}function handleError(_0x125b56,_0x417dd5){_0x417dd5=_0x417dd5||0x1f4;return function(_0x557548){logger[_0xcb6e('0x24')](_0x557548[_0xcb6e('0x25')]);if(_0x557548[_0xcb6e('0x26')]){delete _0x557548['name'];}_0x125b56[_0xcb6e('0x1c')](_0x417dd5)[_0xcb6e('0x27')](_0x557548);};}exports[_0xcb6e('0x28')]=function(_0x1a15ec,_0x1ce205){var _0x513766={},_0x3dd9a5={},_0x40e773={'count':0x0,'rows':[]};var _0x3f3957=_[_0xcb6e('0x29')](db[_0xcb6e('0x2a')][_0xcb6e('0x2b')],function(_0xdfcec5){return{'name':_0xdfcec5[_0xcb6e('0x2c')],'type':_0xdfcec5['type'][_0xcb6e('0x2d')]};});_0x3dd9a5[_0xcb6e('0x2e')]=_[_0xcb6e('0x29')](_0x3f3957,_0xcb6e('0x26'));_0x3dd9a5[_0xcb6e('0x2f')]=_[_0xcb6e('0x30')](_0x1a15ec['query']);_0x3dd9a5[_0xcb6e('0x31')]=_['intersection'](_0x3dd9a5[_0xcb6e('0x2e')],_0x3dd9a5[_0xcb6e('0x2f')]);_0x513766[_0xcb6e('0x32')]=_[_0xcb6e('0x33')](_0x3dd9a5[_0xcb6e('0x2e')],qs['fields'](_0x1a15ec[_0xcb6e('0x2f')][_0xcb6e('0x34')]));_0x513766[_0xcb6e('0x32')]=_0x513766[_0xcb6e('0x32')][_0xcb6e('0x35')]?_0x513766['attributes']:_0x3dd9a5['model'];if(!_0x1a15ec[_0xcb6e('0x2f')][_0xcb6e('0x36')](_0xcb6e('0x37'))){_0x513766[_0xcb6e('0x19')]=qs[_0xcb6e('0x19')](_0x1a15ec[_0xcb6e('0x2f')]['limit']);_0x513766['offset']=qs[_0xcb6e('0x1b')](_0x1a15ec[_0xcb6e('0x2f')][_0xcb6e('0x1b')]);}_0x513766['order']=qs['sort'](_0x1a15ec[_0xcb6e('0x2f')][_0xcb6e('0x38')]);_0x513766[_0xcb6e('0x39')]=qs[_0xcb6e('0x31')](_['pick'](_0x1a15ec[_0xcb6e('0x2f')],_0x3dd9a5[_0xcb6e('0x31')]),_0x3f3957);if(_0x1a15ec[_0xcb6e('0x2f')][_0xcb6e('0x3a')]){_0x513766[_0xcb6e('0x39')]=_[_0xcb6e('0x3b')](_0x513766[_0xcb6e('0x39')],{'$or':_[_0xcb6e('0x29')](_0x3f3957,function(_0x6a09e8){if(_0x6a09e8[_0xcb6e('0x3c')]!=='VIRTUAL'){var _0x4aade3={};_0x4aade3[_0x6a09e8[_0xcb6e('0x26')]]={'$like':'%'+_0x1a15ec[_0xcb6e('0x2f')][_0xcb6e('0x3a')]+'%'};return _0x4aade3;}})});}_0x513766=_[_0xcb6e('0x3b')]({},_0x513766,_0x1a15ec[_0xcb6e('0x3d')]);var _0x308c51={'where':_0x513766[_0xcb6e('0x39')]};return db['VtigerConfiguration'][_0xcb6e('0x1a')](_0x308c51)[_0xcb6e('0x22')](function(_0x35af3d){_0x40e773[_0xcb6e('0x1a')]=_0x35af3d;if(_0x1a15ec[_0xcb6e('0x2f')][_0xcb6e('0x3e')]){_0x513766['include']=[{'all':!![]}];}return db[_0xcb6e('0x2a')][_0xcb6e('0x3f')](_0x513766);})[_0xcb6e('0x22')](function(_0x27dc48){_0x40e773[_0xcb6e('0x40')]=_0x27dc48;return _0x40e773;})['then'](respondWithFilteredResult(_0x1ce205,_0x513766))[_0xcb6e('0x41')](handleError(_0x1ce205,null));};exports[_0xcb6e('0x42')]=function(_0x306e71,_0x53fde7){var _0x20ee90={'raw':![],'where':{'id':_0x306e71[_0xcb6e('0x43')]['id']}},_0x2e35ab={};_0x2e35ab[_0xcb6e('0x2e')]=_[_0xcb6e('0x30')](db[_0xcb6e('0x2a')][_0xcb6e('0x2b')]);_0x2e35ab[_0xcb6e('0x2f')]=_[_0xcb6e('0x30')](_0x306e71[_0xcb6e('0x2f')]);_0x2e35ab[_0xcb6e('0x31')]=_['intersection'](_0x2e35ab['model'],_0x2e35ab[_0xcb6e('0x2f')]);_0x20ee90[_0xcb6e('0x32')]=_[_0xcb6e('0x33')](_0x2e35ab[_0xcb6e('0x2e')],qs['fields'](_0x306e71['query'][_0xcb6e('0x34')]));_0x20ee90[_0xcb6e('0x32')]=_0x20ee90[_0xcb6e('0x32')][_0xcb6e('0x35')]?_0x20ee90[_0xcb6e('0x32')]:_0x2e35ab[_0xcb6e('0x2e')];if(_0x306e71[_0xcb6e('0x2f')]['includeAll']){_0x20ee90[_0xcb6e('0x44')]=[{'all':!![]}];}_0x20ee90=_[_0xcb6e('0x3b')]({},_0x20ee90,_0x306e71['options']);return db[_0xcb6e('0x2a')][_0xcb6e('0x45')](_0x20ee90)[_0xcb6e('0x22')](handleEntityNotFound(_0x53fde7,null))[_0xcb6e('0x22')](respondWithResult(_0x53fde7,null))[_0xcb6e('0x41')](handleError(_0x53fde7,null));};exports[_0xcb6e('0x46')]=function(_0x4748e6,_0x241cd5){return db['VtigerConfiguration'][_0xcb6e('0x46')](_0x4748e6[_0xcb6e('0x47')],{})[_0xcb6e('0x22')](respondWithResult(_0x241cd5,0xc9))[_0xcb6e('0x41')](handleError(_0x241cd5,null));};exports['update']=function(_0x57b005,_0x1fcbf5){if(_0x57b005[_0xcb6e('0x47')]['id']){delete _0x57b005[_0xcb6e('0x47')]['id'];}return db['VtigerConfiguration'][_0xcb6e('0x45')]({'where':{'id':_0x57b005[_0xcb6e('0x43')]['id']}})[_0xcb6e('0x22')](handleEntityNotFound(_0x1fcbf5,null))['then'](saveUpdates(_0x57b005['body'],null))[_0xcb6e('0x22')](respondWithResult(_0x1fcbf5,null))[_0xcb6e('0x41')](handleError(_0x1fcbf5,null));};exports[_0xcb6e('0x48')]=function(_0x58f9b9,_0x5e9076){return db[_0xcb6e('0x2a')][_0xcb6e('0x45')]({'where':{'id':_0x58f9b9['params']['id']}})['then'](handleEntityNotFound(_0x5e9076,null))['then'](removeEntity(_0x5e9076,null))[_0xcb6e('0x41')](handleError(_0x5e9076,null));};exports['getFields']=function(_0x2aaa34,_0x212ce8,_0x2b8695){var _0x30fe5b={};var _0x274009={};var _0x36aa3a;var _0x45a53c;return db[_0xcb6e('0x2a')]['findOne']({'where':{'id':_0x2aaa34[_0xcb6e('0x43')]['id']}})[_0xcb6e('0x22')](handleEntityNotFound(_0x212ce8,null))[_0xcb6e('0x22')](function(_0x433048){if(_0x433048){_0x36aa3a=_0x433048;_0x274009[_0xcb6e('0x2e')]=_[_0xcb6e('0x30')](db[_0xcb6e('0x49')][_0xcb6e('0x2b')]);_0x274009['query']=_[_0xcb6e('0x30')](_0x2aaa34[_0xcb6e('0x2f')]);_0x274009[_0xcb6e('0x31')]=_[_0xcb6e('0x33')](_0x274009[_0xcb6e('0x2e')],_0x274009[_0xcb6e('0x2f')]);_0x30fe5b['attributes']=_[_0xcb6e('0x33')](_0x274009['model'],qs['fields'](_0x2aaa34[_0xcb6e('0x2f')][_0xcb6e('0x34')]));_0x30fe5b['attributes']=_0x30fe5b[_0xcb6e('0x32')][_0xcb6e('0x35')]?_0x30fe5b[_0xcb6e('0x32')]:_0x274009[_0xcb6e('0x2e')];_0x30fe5b[_0xcb6e('0x4a')]=qs[_0xcb6e('0x38')](_0x2aaa34['query'][_0xcb6e('0x38')]);_0x30fe5b[_0xcb6e('0x39')]=qs[_0xcb6e('0x31')](_[_0xcb6e('0x4b')](_0x2aaa34['query'],_0x274009[_0xcb6e('0x31')]));if(_0x2aaa34[_0xcb6e('0x2f')]['filter']){_0x30fe5b['where']=_[_0xcb6e('0x3b')](_0x30fe5b[_0xcb6e('0x39')],{'$or':_[_0xcb6e('0x29')](_0x30fe5b[_0xcb6e('0x32')],function(_0x3f9580){var _0x47ff75={};_0x47ff75[_0x3f9580]={'$like':'%'+_0x2aaa34[_0xcb6e('0x2f')][_0xcb6e('0x3a')]+'%'};return _0x47ff75;})});}_0x30fe5b=_[_0xcb6e('0x3b')]({},_0x30fe5b,_0x2aaa34[_0xcb6e('0x3d')]);return _0x36aa3a['getFields'](_0x30fe5b);}})[_0xcb6e('0x22')](function(_0x812ff8){if(_0x812ff8){_0x45a53c=_0x812ff8[_0xcb6e('0x35')];if(!_0x2aaa34[_0xcb6e('0x2f')]['hasOwnProperty'](_0xcb6e('0x37'))){_0x30fe5b[_0xcb6e('0x19')]=qs[_0xcb6e('0x19')](_0x2aaa34[_0xcb6e('0x2f')][_0xcb6e('0x19')]);_0x30fe5b[_0xcb6e('0x1b')]=qs[_0xcb6e('0x1b')](_0x2aaa34[_0xcb6e('0x2f')][_0xcb6e('0x1b')]);}return _0x36aa3a[_0xcb6e('0x4c')](_0x30fe5b);}})[_0xcb6e('0x22')](function(_0x51cc77){if(_0x51cc77){return _0x51cc77?{'count':_0x45a53c,'rows':_0x51cc77}:null;}})[_0xcb6e('0x22')](respondWithResult(_0x212ce8,null))[_0xcb6e('0x41')](handleError(_0x212ce8,null));};exports[_0xcb6e('0x4d')]=function(_0x301f5e,_0xdd742e,_0x163714){var _0x4a0a92={};var _0x42738c={};var _0x93034;var _0x1e6791;return db[_0xcb6e('0x2a')][_0xcb6e('0x4e')]({'where':{'id':_0x301f5e[_0xcb6e('0x43')]['id']}})[_0xcb6e('0x22')](handleEntityNotFound(_0xdd742e,null))[_0xcb6e('0x22')](function(_0x372180){if(_0x372180){_0x93034=_0x372180;_0x42738c['model']=_[_0xcb6e('0x30')](db[_0xcb6e('0x49')][_0xcb6e('0x2b')]);_0x42738c[_0xcb6e('0x2f')]=_['keys'](_0x301f5e[_0xcb6e('0x2f')]);_0x42738c['filters']=_[_0xcb6e('0x33')](_0x42738c[_0xcb6e('0x2e')],_0x42738c[_0xcb6e('0x2f')]);_0x4a0a92[_0xcb6e('0x32')]=_['intersection'](_0x42738c['model'],qs[_0xcb6e('0x34')](_0x301f5e[_0xcb6e('0x2f')][_0xcb6e('0x34')]));_0x4a0a92[_0xcb6e('0x32')]=_0x4a0a92['attributes']['length']?_0x4a0a92[_0xcb6e('0x32')]:_0x42738c[_0xcb6e('0x2e')];_0x4a0a92[_0xcb6e('0x4a')]=qs[_0xcb6e('0x38')](_0x301f5e['query']['sort']);_0x4a0a92['where']=qs[_0xcb6e('0x31')](_[_0xcb6e('0x4b')](_0x301f5e[_0xcb6e('0x2f')],_0x42738c[_0xcb6e('0x31')]));if(_0x301f5e[_0xcb6e('0x2f')][_0xcb6e('0x3a')]){_0x4a0a92[_0xcb6e('0x39')]=_[_0xcb6e('0x3b')](_0x4a0a92[_0xcb6e('0x39')],{'$or':_['map'](_0x4a0a92[_0xcb6e('0x32')],function(_0x2a25e3){var _0x43aad4={};_0x43aad4[_0x2a25e3]={'$like':'%'+_0x301f5e[_0xcb6e('0x2f')][_0xcb6e('0x3a')]+'%'};return _0x43aad4;})});}_0x4a0a92=_[_0xcb6e('0x3b')]({},_0x4a0a92,_0x301f5e[_0xcb6e('0x3d')]);return _0x93034[_0xcb6e('0x4d')](_0x4a0a92);}})[_0xcb6e('0x22')](function(_0x156880){if(_0x156880){_0x1e6791=_0x156880[_0xcb6e('0x35')];if(!_0x301f5e[_0xcb6e('0x2f')][_0xcb6e('0x36')]('nolimit')){_0x4a0a92[_0xcb6e('0x19')]=qs[_0xcb6e('0x19')](_0x301f5e['query'][_0xcb6e('0x19')]);_0x4a0a92[_0xcb6e('0x1b')]=qs['offset'](_0x301f5e[_0xcb6e('0x2f')][_0xcb6e('0x1b')]);}return _0x93034[_0xcb6e('0x4d')](_0x4a0a92);}})[_0xcb6e('0x22')](function(_0x4532aa){if(_0x4532aa){return _0x4532aa?{'count':_0x1e6791,'rows':_0x4532aa}:null;}})[_0xcb6e('0x22')](respondWithResult(_0xdd742e,null))[_0xcb6e('0x41')](handleError(_0xdd742e,null));};exports['getDescriptions']=function(_0x80fa64,_0x4c70c3,_0x1dea36){var _0xc4fd14={};var _0x2737cf={};var _0x3a05c2;var _0x25cd5d;return db[_0xcb6e('0x2a')][_0xcb6e('0x4e')]({'where':{'id':_0x80fa64[_0xcb6e('0x43')]['id']}})[_0xcb6e('0x22')](handleEntityNotFound(_0x4c70c3,null))[_0xcb6e('0x22')](function(_0x1442ae){if(_0x1442ae){_0x3a05c2=_0x1442ae;_0x2737cf['model']=_[_0xcb6e('0x30')](db[_0xcb6e('0x49')][_0xcb6e('0x2b')]);_0x2737cf[_0xcb6e('0x2f')]=_[_0xcb6e('0x30')](_0x80fa64[_0xcb6e('0x2f')]);_0x2737cf[_0xcb6e('0x31')]=_['intersection'](_0x2737cf[_0xcb6e('0x2e')],_0x2737cf['query']);_0xc4fd14[_0xcb6e('0x32')]=_[_0xcb6e('0x33')](_0x2737cf[_0xcb6e('0x2e')],qs['fields'](_0x80fa64['query'][_0xcb6e('0x34')]));_0xc4fd14[_0xcb6e('0x32')]=_0xc4fd14[_0xcb6e('0x32')][_0xcb6e('0x35')]?_0xc4fd14[_0xcb6e('0x32')]:_0x2737cf[_0xcb6e('0x2e')];_0xc4fd14[_0xcb6e('0x4a')]=qs[_0xcb6e('0x38')](_0x80fa64[_0xcb6e('0x2f')]['sort']);_0xc4fd14[_0xcb6e('0x39')]=qs[_0xcb6e('0x31')](_[_0xcb6e('0x4b')](_0x80fa64[_0xcb6e('0x2f')],_0x2737cf[_0xcb6e('0x31')]));if(_0x80fa64[_0xcb6e('0x2f')][_0xcb6e('0x3a')]){_0xc4fd14['where']=_[_0xcb6e('0x3b')](_0xc4fd14[_0xcb6e('0x39')],{'$or':_[_0xcb6e('0x29')](_0xc4fd14[_0xcb6e('0x32')],function(_0x41ebee){var _0x28f4cc={};_0x28f4cc[_0x41ebee]={'$like':'%'+_0x80fa64[_0xcb6e('0x2f')]['filter']+'%'};return _0x28f4cc;})});}_0xc4fd14=_['merge']({},_0xc4fd14,_0x80fa64['options']);return _0x3a05c2['getDescriptions'](_0xc4fd14);}})['then'](function(_0x8844c6){if(_0x8844c6){_0x25cd5d=_0x8844c6[_0xcb6e('0x35')];if(!_0x80fa64[_0xcb6e('0x2f')][_0xcb6e('0x36')](_0xcb6e('0x37'))){_0xc4fd14['limit']=qs[_0xcb6e('0x19')](_0x80fa64[_0xcb6e('0x2f')][_0xcb6e('0x19')]);_0xc4fd14['offset']=qs['offset'](_0x80fa64[_0xcb6e('0x2f')]['offset']);}return _0x3a05c2[_0xcb6e('0x4f')](_0xc4fd14);}})[_0xcb6e('0x22')](function(_0x524e45){if(_0x524e45){return _0x524e45?{'count':_0x25cd5d,'rows':_0x524e45}:null;}})[_0xcb6e('0x22')](respondWithResult(_0x4c70c3,null))[_0xcb6e('0x41')](handleError(_0x4c70c3,null));};
\ No newline at end of file
+var _0x98d9=['../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','limit','set','apply','save','update','destroy','then','stack','name','send','index','map','type','model','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','includeAll','include','findAll','rows','show','params','keys','VtigerConfiguration','options','catch','create','body','getFields','findOne','VtigerField','rawAttributes','filter','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','to-csv','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware'];(function(_0x573b40,_0x4efa0c){var _0x4d410d=function(_0x28a01e){while(--_0x28a01e){_0x573b40['push'](_0x573b40['shift']());}};_0x4d410d(++_0x4efa0c);}(_0x98d9,0x12b));var _0x998d=function(_0xf2dca1,_0x312dba){_0xf2dca1=_0xf2dca1-0x0;var _0x1deaf5=_0x98d9[_0xf2dca1];return _0x1deaf5;};'use strict';var emlformat=require(_0x998d('0x0'));var rimraf=require(_0x998d('0x1'));var zipdir=require(_0x998d('0x2'));var jsonpatch=require(_0x998d('0x3'));var rp=require(_0x998d('0x4'));var moment=require(_0x998d('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x998d('0x6'));var util=require(_0x998d('0x7'));var path=require(_0x998d('0x8'));var sox=require(_0x998d('0x9'));var csv=require('to-csv');var ejs=require(_0x998d('0xa'));var fs=require('fs');var fs_extra=require(_0x998d('0xb'));var _=require('lodash');var squel=require(_0x998d('0xc'));var crypto=require(_0x998d('0xd'));var jsforce=require(_0x998d('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x998d('0xf'));var querystring=require(_0x998d('0x10'));var Papa=require(_0x998d('0x11'));var Redis=require('ioredis');var authService=require(_0x998d('0x12'));var qs=require(_0x998d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x998d('0x14'));var logger=require(_0x998d('0x15'))(_0x998d('0x16'));var utils=require(_0x998d('0x17'));var config=require(_0x998d('0x18'));var licenseUtil=require(_0x998d('0x19'));var db=require(_0x998d('0x1a'))['db'];function respondWithStatusCode(_0x31f7f8,_0x303478){_0x303478=_0x303478||0xcc;return function(_0x47ed10){if(_0x47ed10){return _0x31f7f8[_0x998d('0x1b')](_0x303478);}return _0x31f7f8[_0x998d('0x1c')](_0x303478)[_0x998d('0x1d')]();};}function respondWithResult(_0x5d075f,_0x2ed159){_0x2ed159=_0x2ed159||0xc8;return function(_0x555ba1){if(_0x555ba1){return _0x5d075f[_0x998d('0x1c')](_0x2ed159)[_0x998d('0x1e')](_0x555ba1);}};}function respondWithFilteredResult(_0x4b92e7,_0x53c8ac){return function(_0x3a14e5){if(_0x3a14e5){var _0xb11b89=typeof _0x53c8ac[_0x998d('0x1f')]===_0x998d('0x20')&&typeof _0x53c8ac['limit']===_0x998d('0x20');var _0x2222d3=_0x3a14e5['count'];var _0x5e455b=_0xb11b89?0x0:_0x53c8ac[_0x998d('0x1f')];var _0x84498d=_0xb11b89?_0x3a14e5[_0x998d('0x21')]:_0x53c8ac['offset']+_0x53c8ac[_0x998d('0x22')];var _0x28f28e;if(_0x84498d>=_0x2222d3){_0x84498d=_0x2222d3;_0x28f28e=0xc8;}else{_0x28f28e=0xce;}_0x4b92e7['status'](_0x28f28e);return _0x4b92e7[_0x998d('0x23')]('Content-Range',_0x5e455b+'-'+_0x84498d+'/'+_0x2222d3)[_0x998d('0x1e')](_0x3a14e5);}return null;};}function patchUpdates(_0x39fc8e){return function(_0x5d7010){try{jsonpatch[_0x998d('0x24')](_0x5d7010,_0x39fc8e,!![]);}catch(_0x821c7){return BPromise['reject'](_0x821c7);}return _0x5d7010[_0x998d('0x25')]();};}function saveUpdates(_0x44456c,_0x196a1c){return function(_0x4d427d){if(_0x4d427d){return _0x4d427d[_0x998d('0x26')](_0x44456c)['then'](function(_0x2f1bf5){return _0x2f1bf5;});}return null;};}function removeEntity(_0x50e013,_0x52a879){return function(_0x527c37){if(_0x527c37){return _0x527c37[_0x998d('0x27')]()[_0x998d('0x28')](function(){_0x50e013[_0x998d('0x1c')](0xcc)[_0x998d('0x1d')]();});}};}function handleEntityNotFound(_0x1c3b02,_0x5bd63e){return function(_0x37b159){if(!_0x37b159){_0x1c3b02[_0x998d('0x1b')](0x194);}return _0x37b159;};}function handleError(_0x2784c3,_0x5e7f84){_0x5e7f84=_0x5e7f84||0x1f4;return function(_0x74fa70){logger['error'](_0x74fa70[_0x998d('0x29')]);if(_0x74fa70[_0x998d('0x2a')]){delete _0x74fa70[_0x998d('0x2a')];}_0x2784c3['status'](_0x5e7f84)[_0x998d('0x2b')](_0x74fa70);};}exports[_0x998d('0x2c')]=function(_0xd6fdec,_0x2a9d9e){var _0x3d1e77={},_0x109e6a={},_0x278bae={'count':0x0,'rows':[]};var _0x405094=_[_0x998d('0x2d')](db['VtigerConfiguration']['rawAttributes'],function(_0x2028fd){return{'name':_0x2028fd['fieldName'],'type':_0x2028fd[_0x998d('0x2e')]['key']};});_0x109e6a[_0x998d('0x2f')]=_[_0x998d('0x2d')](_0x405094,'name');_0x109e6a[_0x998d('0x30')]=_['keys'](_0xd6fdec[_0x998d('0x30')]);_0x109e6a['filters']=_['intersection'](_0x109e6a[_0x998d('0x2f')],_0x109e6a[_0x998d('0x30')]);_0x3d1e77[_0x998d('0x31')]=_[_0x998d('0x32')](_0x109e6a['model'],qs[_0x998d('0x33')](_0xd6fdec['query'][_0x998d('0x33')]));_0x3d1e77[_0x998d('0x31')]=_0x3d1e77[_0x998d('0x31')][_0x998d('0x34')]?_0x3d1e77[_0x998d('0x31')]:_0x109e6a[_0x998d('0x2f')];if(!_0xd6fdec[_0x998d('0x30')][_0x998d('0x35')](_0x998d('0x36'))){_0x3d1e77['limit']=qs['limit'](_0xd6fdec[_0x998d('0x30')][_0x998d('0x22')]);_0x3d1e77['offset']=qs[_0x998d('0x1f')](_0xd6fdec[_0x998d('0x30')][_0x998d('0x1f')]);}_0x3d1e77[_0x998d('0x37')]=qs[_0x998d('0x38')](_0xd6fdec[_0x998d('0x30')][_0x998d('0x38')]);_0x3d1e77[_0x998d('0x39')]=qs[_0x998d('0x3a')](_[_0x998d('0x3b')](_0xd6fdec[_0x998d('0x30')],_0x109e6a[_0x998d('0x3a')]),_0x405094);if(_0xd6fdec[_0x998d('0x30')]['filter']){_0x3d1e77['where']=_[_0x998d('0x3c')](_0x3d1e77[_0x998d('0x39')],{'$or':_['map'](_0x405094,function(_0x477297){if(_0x477297[_0x998d('0x2e')]!=='VIRTUAL'){var _0x32a575={};_0x32a575[_0x477297['name']]={'$like':'%'+_0xd6fdec['query']['filter']+'%'};return _0x32a575;}})});}_0x3d1e77=_['merge']({},_0x3d1e77,_0xd6fdec['options']);var _0xd431cd={'where':_0x3d1e77['where']};return db['VtigerConfiguration'][_0x998d('0x21')](_0xd431cd)['then'](function(_0x49b8ad){_0x278bae[_0x998d('0x21')]=_0x49b8ad;if(_0xd6fdec[_0x998d('0x30')][_0x998d('0x3d')]){_0x3d1e77[_0x998d('0x3e')]=[{'all':!![]}];}return db['VtigerConfiguration'][_0x998d('0x3f')](_0x3d1e77);})[_0x998d('0x28')](function(_0x40d489){_0x278bae[_0x998d('0x40')]=_0x40d489;return _0x278bae;})[_0x998d('0x28')](respondWithFilteredResult(_0x2a9d9e,_0x3d1e77))['catch'](handleError(_0x2a9d9e,null));};exports[_0x998d('0x41')]=function(_0x24eb5a,_0x573ef1){var _0x5ecff3={'raw':![],'where':{'id':_0x24eb5a[_0x998d('0x42')]['id']}},_0x28fb41={};_0x28fb41[_0x998d('0x2f')]=_[_0x998d('0x43')](db[_0x998d('0x44')]['rawAttributes']);_0x28fb41[_0x998d('0x30')]=_[_0x998d('0x43')](_0x24eb5a[_0x998d('0x30')]);_0x28fb41[_0x998d('0x3a')]=_[_0x998d('0x32')](_0x28fb41[_0x998d('0x2f')],_0x28fb41['query']);_0x5ecff3[_0x998d('0x31')]=_[_0x998d('0x32')](_0x28fb41[_0x998d('0x2f')],qs[_0x998d('0x33')](_0x24eb5a[_0x998d('0x30')][_0x998d('0x33')]));_0x5ecff3[_0x998d('0x31')]=_0x5ecff3['attributes']['length']?_0x5ecff3[_0x998d('0x31')]:_0x28fb41[_0x998d('0x2f')];if(_0x24eb5a[_0x998d('0x30')][_0x998d('0x3d')]){_0x5ecff3[_0x998d('0x3e')]=[{'all':!![]}];}_0x5ecff3=_['merge']({},_0x5ecff3,_0x24eb5a[_0x998d('0x45')]);return db[_0x998d('0x44')]['find'](_0x5ecff3)['then'](handleEntityNotFound(_0x573ef1,null))[_0x998d('0x28')](respondWithResult(_0x573ef1,null))[_0x998d('0x46')](handleError(_0x573ef1,null));};exports[_0x998d('0x47')]=function(_0x52bd73,_0x6efdbd){return db[_0x998d('0x44')][_0x998d('0x47')](_0x52bd73['body'],{})['then'](respondWithResult(_0x6efdbd,0xc9))['catch'](handleError(_0x6efdbd,null));};exports['update']=function(_0x2b4398,_0x43aea1){if(_0x2b4398[_0x998d('0x48')]['id']){delete _0x2b4398[_0x998d('0x48')]['id'];}return db[_0x998d('0x44')]['find']({'where':{'id':_0x2b4398[_0x998d('0x42')]['id']}})[_0x998d('0x28')](handleEntityNotFound(_0x43aea1,null))[_0x998d('0x28')](saveUpdates(_0x2b4398[_0x998d('0x48')],null))['then'](respondWithResult(_0x43aea1,null))[_0x998d('0x46')](handleError(_0x43aea1,null));};exports[_0x998d('0x27')]=function(_0x517684,_0x1bfdba){return db['VtigerConfiguration']['find']({'where':{'id':_0x517684['params']['id']}})['then'](handleEntityNotFound(_0x1bfdba,null))[_0x998d('0x28')](removeEntity(_0x1bfdba,null))[_0x998d('0x46')](handleError(_0x1bfdba,null));};exports[_0x998d('0x49')]=function(_0x4cddbb,_0x467e0a,_0x2df447){var _0x17ca72={};var _0x54546d={};var _0x235ee0;var _0x527be1;return db[_0x998d('0x44')][_0x998d('0x4a')]({'where':{'id':_0x4cddbb[_0x998d('0x42')]['id']}})[_0x998d('0x28')](handleEntityNotFound(_0x467e0a,null))['then'](function(_0x4c6910){if(_0x4c6910){_0x235ee0=_0x4c6910;_0x54546d[_0x998d('0x2f')]=_[_0x998d('0x43')](db[_0x998d('0x4b')][_0x998d('0x4c')]);_0x54546d[_0x998d('0x30')]=_[_0x998d('0x43')](_0x4cddbb[_0x998d('0x30')]);_0x54546d['filters']=_[_0x998d('0x32')](_0x54546d[_0x998d('0x2f')],_0x54546d[_0x998d('0x30')]);_0x17ca72[_0x998d('0x31')]=_['intersection'](_0x54546d['model'],qs[_0x998d('0x33')](_0x4cddbb[_0x998d('0x30')][_0x998d('0x33')]));_0x17ca72['attributes']=_0x17ca72[_0x998d('0x31')]['length']?_0x17ca72['attributes']:_0x54546d[_0x998d('0x2f')];_0x17ca72[_0x998d('0x37')]=qs[_0x998d('0x38')](_0x4cddbb[_0x998d('0x30')][_0x998d('0x38')]);_0x17ca72['where']=qs[_0x998d('0x3a')](_[_0x998d('0x3b')](_0x4cddbb[_0x998d('0x30')],_0x54546d[_0x998d('0x3a')]));if(_0x4cddbb[_0x998d('0x30')]['filter']){_0x17ca72[_0x998d('0x39')]=_['merge'](_0x17ca72['where'],{'$or':_['map'](_0x17ca72[_0x998d('0x31')],function(_0x40a1b1){var _0x1b73a9={};_0x1b73a9[_0x40a1b1]={'$like':'%'+_0x4cddbb[_0x998d('0x30')][_0x998d('0x4d')]+'%'};return _0x1b73a9;})});}_0x17ca72=_[_0x998d('0x3c')]({},_0x17ca72,_0x4cddbb[_0x998d('0x45')]);return _0x235ee0[_0x998d('0x49')](_0x17ca72);}})[_0x998d('0x28')](function(_0x32f9dc){if(_0x32f9dc){_0x527be1=_0x32f9dc[_0x998d('0x34')];if(!_0x4cddbb[_0x998d('0x30')]['hasOwnProperty'](_0x998d('0x36'))){_0x17ca72[_0x998d('0x22')]=qs['limit'](_0x4cddbb['query'][_0x998d('0x22')]);_0x17ca72[_0x998d('0x1f')]=qs[_0x998d('0x1f')](_0x4cddbb['query']['offset']);}return _0x235ee0[_0x998d('0x49')](_0x17ca72);}})[_0x998d('0x28')](function(_0x4583e6){if(_0x4583e6){return _0x4583e6?{'count':_0x527be1,'rows':_0x4583e6}:null;}})[_0x998d('0x28')](respondWithResult(_0x467e0a,null))['catch'](handleError(_0x467e0a,null));};exports['getSubjects']=function(_0x387fb9,_0x4c79ea,_0x1ad193){var _0x4b0514={};var _0x1b31f2={};var _0x72873b;var _0x3362fd;return db['VtigerConfiguration'][_0x998d('0x4a')]({'where':{'id':_0x387fb9[_0x998d('0x42')]['id']}})[_0x998d('0x28')](handleEntityNotFound(_0x4c79ea,null))[_0x998d('0x28')](function(_0xc9be2b){if(_0xc9be2b){_0x72873b=_0xc9be2b;_0x1b31f2[_0x998d('0x2f')]=_[_0x998d('0x43')](db['VtigerField'][_0x998d('0x4c')]);_0x1b31f2['query']=_[_0x998d('0x43')](_0x387fb9[_0x998d('0x30')]);_0x1b31f2[_0x998d('0x3a')]=_[_0x998d('0x32')](_0x1b31f2[_0x998d('0x2f')],_0x1b31f2[_0x998d('0x30')]);_0x4b0514[_0x998d('0x31')]=_['intersection'](_0x1b31f2[_0x998d('0x2f')],qs[_0x998d('0x33')](_0x387fb9['query'][_0x998d('0x33')]));_0x4b0514['attributes']=_0x4b0514[_0x998d('0x31')]['length']?_0x4b0514[_0x998d('0x31')]:_0x1b31f2[_0x998d('0x2f')];_0x4b0514[_0x998d('0x37')]=qs[_0x998d('0x38')](_0x387fb9[_0x998d('0x30')][_0x998d('0x38')]);_0x4b0514[_0x998d('0x39')]=qs[_0x998d('0x3a')](_['pick'](_0x387fb9[_0x998d('0x30')],_0x1b31f2[_0x998d('0x3a')]));if(_0x387fb9[_0x998d('0x30')][_0x998d('0x4d')]){_0x4b0514[_0x998d('0x39')]=_[_0x998d('0x3c')](_0x4b0514[_0x998d('0x39')],{'$or':_[_0x998d('0x2d')](_0x4b0514[_0x998d('0x31')],function(_0x54a2a3){var _0x367f79={};_0x367f79[_0x54a2a3]={'$like':'%'+_0x387fb9[_0x998d('0x30')][_0x998d('0x4d')]+'%'};return _0x367f79;})});}_0x4b0514=_[_0x998d('0x3c')]({},_0x4b0514,_0x387fb9[_0x998d('0x45')]);return _0x72873b['getSubjects'](_0x4b0514);}})[_0x998d('0x28')](function(_0x3c9288){if(_0x3c9288){_0x3362fd=_0x3c9288[_0x998d('0x34')];if(!_0x387fb9[_0x998d('0x30')][_0x998d('0x35')]('nolimit')){_0x4b0514[_0x998d('0x22')]=qs[_0x998d('0x22')](_0x387fb9[_0x998d('0x30')][_0x998d('0x22')]);_0x4b0514['offset']=qs['offset'](_0x387fb9[_0x998d('0x30')][_0x998d('0x1f')]);}return _0x72873b[_0x998d('0x4e')](_0x4b0514);}})[_0x998d('0x28')](function(_0x2092c1){if(_0x2092c1){return _0x2092c1?{'count':_0x3362fd,'rows':_0x2092c1}:null;}})[_0x998d('0x28')](respondWithResult(_0x4c79ea,null))['catch'](handleError(_0x4c79ea,null));};exports[_0x998d('0x4f')]=function(_0x480726,_0x3af409,_0x17c1cc){var _0x3f4050={};var _0x23e4b1={};var _0x2c5d64;var _0x395c0d;return db['VtigerConfiguration'][_0x998d('0x4a')]({'where':{'id':_0x480726[_0x998d('0x42')]['id']}})[_0x998d('0x28')](handleEntityNotFound(_0x3af409,null))[_0x998d('0x28')](function(_0x31d9d5){if(_0x31d9d5){_0x2c5d64=_0x31d9d5;_0x23e4b1[_0x998d('0x2f')]=_['keys'](db[_0x998d('0x4b')][_0x998d('0x4c')]);_0x23e4b1[_0x998d('0x30')]=_[_0x998d('0x43')](_0x480726[_0x998d('0x30')]);_0x23e4b1[_0x998d('0x3a')]=_[_0x998d('0x32')](_0x23e4b1[_0x998d('0x2f')],_0x23e4b1['query']);_0x3f4050[_0x998d('0x31')]=_[_0x998d('0x32')](_0x23e4b1[_0x998d('0x2f')],qs[_0x998d('0x33')](_0x480726[_0x998d('0x30')][_0x998d('0x33')]));_0x3f4050[_0x998d('0x31')]=_0x3f4050[_0x998d('0x31')][_0x998d('0x34')]?_0x3f4050[_0x998d('0x31')]:_0x23e4b1[_0x998d('0x2f')];_0x3f4050['order']=qs[_0x998d('0x38')](_0x480726['query'][_0x998d('0x38')]);_0x3f4050[_0x998d('0x39')]=qs[_0x998d('0x3a')](_['pick'](_0x480726[_0x998d('0x30')],_0x23e4b1[_0x998d('0x3a')]));if(_0x480726[_0x998d('0x30')][_0x998d('0x4d')]){_0x3f4050[_0x998d('0x39')]=_[_0x998d('0x3c')](_0x3f4050[_0x998d('0x39')],{'$or':_[_0x998d('0x2d')](_0x3f4050['attributes'],function(_0x4a45aa){var _0x2f5ca5={};_0x2f5ca5[_0x4a45aa]={'$like':'%'+_0x480726[_0x998d('0x30')][_0x998d('0x4d')]+'%'};return _0x2f5ca5;})});}_0x3f4050=_['merge']({},_0x3f4050,_0x480726[_0x998d('0x45')]);return _0x2c5d64['getDescriptions'](_0x3f4050);}})[_0x998d('0x28')](function(_0x408f5b){if(_0x408f5b){_0x395c0d=_0x408f5b[_0x998d('0x34')];if(!_0x480726[_0x998d('0x30')][_0x998d('0x35')](_0x998d('0x36'))){_0x3f4050[_0x998d('0x22')]=qs[_0x998d('0x22')](_0x480726[_0x998d('0x30')]['limit']);_0x3f4050[_0x998d('0x1f')]=qs[_0x998d('0x1f')](_0x480726[_0x998d('0x30')][_0x998d('0x1f')]);}return _0x2c5d64[_0x998d('0x4f')](_0x3f4050);}})[_0x998d('0x28')](function(_0x1cea13){if(_0x1cea13){return _0x1cea13?{'count':_0x395c0d,'rows':_0x1cea13}:null;}})[_0x998d('0x28')](respondWithResult(_0x3af409,null))['catch'](handleError(_0x3af409,null));};
\ No newline at end of file
index e0bd46d..c8677a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xecc3=['int_vtiger_configurations','lodash','../../config/logger','api','request-promise','path','../../config/environment','exports','define','VtigerConfiguration'];(function(_0x150fd9,_0xa49dcb){var _0x556529=function(_0x4deec6){while(--_0x4deec6){_0x150fd9['push'](_0x150fd9['shift']());}};_0x556529(++_0xa49dcb);}(_0xecc3,0x1af));var _0x3ecc=function(_0x5357b4,_0x5bcad2){_0x5357b4=_0x5357b4-0x0;var _0xe22ed=_0xecc3[_0x5357b4];return _0xe22ed;};'use strict';var _=require(_0x3ecc('0x0'));var util=require('util');var logger=require(_0x3ecc('0x1'))(_0x3ecc('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3ecc('0x3'));var fs=require('fs');var path=require(_0x3ecc('0x4'));var rimraf=require('rimraf');var config=require(_0x3ecc('0x5'));var attributes=require('./intVtigerConfiguration.attributes');module[_0x3ecc('0x6')]=function(_0x222a15,_0x19728d){return _0x222a15[_0x3ecc('0x7')](_0x3ecc('0x8'),attributes,{'tableName':_0x3ecc('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf203=['bluebird','request-promise','../../config/environment','./intVtigerConfiguration.attributes','exports','VtigerConfiguration','lodash','api','moment'];(function(_0x1e2c73,_0x12cd55){var _0x46f8d5=function(_0xe5a2fd){while(--_0xe5a2fd){_0x1e2c73['push'](_0x1e2c73['shift']());}};_0x46f8d5(++_0x12cd55);}(_0xf203,0x72));var _0x3f20=function(_0x1c421e,_0x5e8ebc){_0x1c421e=_0x1c421e-0x0;var _0x58fcb0=_0xf203[_0x1c421e];return _0x58fcb0;};'use strict';var _=require(_0x3f20('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x3f20('0x1'));var moment=require(_0x3f20('0x2'));var BPromise=require(_0x3f20('0x3'));var rp=require(_0x3f20('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x3f20('0x5'));var attributes=require(_0x3f20('0x6'));module[_0x3f20('0x7')]=function(_0x3656db,_0x4a85b9){return _0x3656db['define'](_0x3f20('0x8'),attributes,{'tableName':'int_vtiger_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 3674c0b..54122f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c3c=['../../config/environment','jayson/promise','client','http','request','info','VtigerConfiguration,\x20%s,\x20%s','request\x20sent','VtigerConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x1ac149,_0x3c7233){var _0x478535=function(_0x3b32d2){while(--_0x3b32d2){_0x1ac149['push'](_0x1ac149['shift']());}};_0x478535(++_0x3c7233);}(_0x7c3c,0x184));var _0xc7c3=function(_0x9a825b,_0x35c63e){_0x9a825b=_0x9a825b-0x0;var _0x4e5706=_0x7c3c[_0x9a825b];return _0x4e5706;};'use strict';var _=require(_0xc7c3('0x0'));var util=require(_0xc7c3('0x1'));var moment=require(_0xc7c3('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc7c3('0x3'));var db=require(_0xc7c3('0x4'))['db'];var utils=require(_0xc7c3('0x5'));var logger=require(_0xc7c3('0x6'))(_0xc7c3('0x7'));var config=require(_0xc7c3('0x8'));var jayson=require(_0xc7c3('0x9'));var client=jayson[_0xc7c3('0xa')][_0xc7c3('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x27251d,_0xdaa70,_0x39d073){return new BPromise(function(_0x1ebbf4,_0x104770){return client[_0xc7c3('0xc')](_0x27251d,_0x39d073)['then'](function(_0x5e09db){logger[_0xc7c3('0xd')](_0xc7c3('0xe'),_0xdaa70,_0xc7c3('0xf'));logger['debug'](_0xc7c3('0x10'),_0xdaa70,_0xc7c3('0xf'),JSON[_0xc7c3('0x11')](_0x5e09db));if(_0x5e09db[_0xc7c3('0x12')]){if(_0x5e09db[_0xc7c3('0x12')][_0xc7c3('0x13')]===0x1f4){logger[_0xc7c3('0x12')](_0xc7c3('0xe'),_0xdaa70,_0x5e09db[_0xc7c3('0x12')][_0xc7c3('0x14')]);return _0x104770(_0x5e09db[_0xc7c3('0x12')][_0xc7c3('0x14')]);}logger[_0xc7c3('0x12')]('VtigerConfiguration,\x20%s,\x20%s',_0xdaa70,_0x5e09db[_0xc7c3('0x12')][_0xc7c3('0x14')]);return _0x1ebbf4(_0x5e09db[_0xc7c3('0x12')][_0xc7c3('0x14')]);}else{logger[_0xc7c3('0xd')](_0xc7c3('0xe'),_0xdaa70,_0xc7c3('0xf'));_0x1ebbf4(_0x5e09db[_0xc7c3('0x15')][_0xc7c3('0x14')]);}})['catch'](function(_0x4d3851){logger[_0xc7c3('0x12')](_0xc7c3('0xe'),_0xdaa70,_0x4d3851);_0x104770(_0x4d3851);});});}
\ No newline at end of file
+var _0x617b=['request','then','info','request\x20sent','stringify','error','code','message','VtigerConfiguration,\x20%s,\x20%s','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http'];(function(_0x4078cf,_0x33bcad){var _0x1b5d7e=function(_0x5f30a9){while(--_0x5f30a9){_0x4078cf['push'](_0x4078cf['shift']());}};_0x1b5d7e(++_0x33bcad);}(_0x617b,0xe7));var _0xb617=function(_0x5d3c57,_0x20d2b8){_0x5d3c57=_0x5d3c57-0x0;var _0x4be5e8=_0x617b[_0x5d3c57];return _0x4be5e8;};'use strict';var _=require(_0xb617('0x0'));var util=require('util');var moment=require(_0xb617('0x1'));var BPromise=require(_0xb617('0x2'));var rs=require(_0xb617('0x3'));var fs=require('fs');var Redis=require(_0xb617('0x4'));var db=require(_0xb617('0x5'))['db'];var utils=require(_0xb617('0x6'));var logger=require(_0xb617('0x7'))(_0xb617('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xb617('0x9')][_0xb617('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x59893a,_0x18a0b2,_0x2149b8){return new BPromise(function(_0x392339,_0x9dd03c){return client[_0xb617('0xb')](_0x59893a,_0x2149b8)[_0xb617('0xc')](function(_0x4fdefb){logger[_0xb617('0xd')]('VtigerConfiguration,\x20%s,\x20%s',_0x18a0b2,_0xb617('0xe'));logger['debug']('VtigerConfiguration,\x20%s,\x20%s,\x20%s',_0x18a0b2,_0xb617('0xe'),JSON[_0xb617('0xf')](_0x4fdefb));if(_0x4fdefb[_0xb617('0x10')]){if(_0x4fdefb['error'][_0xb617('0x11')]===0x1f4){logger['error']('VtigerConfiguration,\x20%s,\x20%s',_0x18a0b2,_0x4fdefb[_0xb617('0x10')][_0xb617('0x12')]);return _0x9dd03c(_0x4fdefb[_0xb617('0x10')][_0xb617('0x12')]);}logger['error']('VtigerConfiguration,\x20%s,\x20%s',_0x18a0b2,_0x4fdefb[_0xb617('0x10')][_0xb617('0x12')]);return _0x392339(_0x4fdefb[_0xb617('0x10')][_0xb617('0x12')]);}else{logger['info'](_0xb617('0x13'),_0x18a0b2,_0xb617('0xe'));_0x392339(_0x4fdefb[_0xb617('0x14')][_0xb617('0x12')]);}})[_0xb617('0x15')](function(_0x4ebe45){logger['error'](_0xb617('0x13'),_0x18a0b2,_0x4ebe45);_0x9dd03c(_0x4ebe45);});});}
\ No newline at end of file
index d6aa0bc..f693b33 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2dd1=['./intVtigerField.controller','get','index','/:id','show','isAuthenticated','create','put','delete','destroy','util','connect-timeout','express','Router','../../components/auth/service','../../config/environment'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x2dd1,0x1aa));var _0x12dd=function(_0x241980,_0x120604){_0x241980=_0x241980-0x0;var _0x4d888b=_0x2dd1[_0x241980];return _0x4d888b;};'use strict';var multer=require('multer');var util=require(_0x12dd('0x0'));var path=require('path');var timeout=require(_0x12dd('0x1'));var express=require(_0x12dd('0x2'));var router=express[_0x12dd('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x12dd('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x12dd('0x5'));var controller=require(_0x12dd('0x6'));router[_0x12dd('0x7')]('/',auth['isAuthenticated'](),controller[_0x12dd('0x8')]);router[_0x12dd('0x7')](_0x12dd('0x9'),auth['isAuthenticated'](),controller[_0x12dd('0xa')]);router['post']('/',auth[_0x12dd('0xb')](),controller[_0x12dd('0xc')]);router[_0x12dd('0xd')]('/:id',auth[_0x12dd('0xb')](),controller['update']);router[_0x12dd('0xe')]('/:id',auth['isAuthenticated'](),controller[_0x12dd('0xf')]);module['exports']=router;
\ No newline at end of file
+var _0x0700=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intVtigerField.controller','index','get','isAuthenticated','show','post','/:id','update','delete','multer'];(function(_0x3a49ed,_0x5942c0){var _0xfc681=function(_0x11d26b){while(--_0x11d26b){_0x3a49ed['push'](_0x3a49ed['shift']());}};_0xfc681(++_0x5942c0);}(_0x0700,0x18e));var _0x0070=function(_0x501670,_0x4b33ad){_0x501670=_0x501670-0x0;var _0x1054cd=_0x0700[_0x501670];return _0x1054cd;};'use strict';var multer=require(_0x0070('0x0'));var util=require(_0x0070('0x1'));var path=require(_0x0070('0x2'));var timeout=require(_0x0070('0x3'));var express=require(_0x0070('0x4'));var router=express[_0x0070('0x5')]();var fs_extra=require(_0x0070('0x6'));var auth=require(_0x0070('0x7'));var interaction=require(_0x0070('0x8'));var config=require(_0x0070('0x9'));var controller=require(_0x0070('0xa'));router['get']('/',auth['isAuthenticated'](),controller[_0x0070('0xb')]);router[_0x0070('0xc')]('/:id',auth[_0x0070('0xd')](),controller[_0x0070('0xe')]);router[_0x0070('0xf')]('/',auth[_0x0070('0xd')](),controller['create']);router['put'](_0x0070('0x10'),auth['isAuthenticated'](),controller[_0x0070('0x11')]);router[_0x0070('0x12')](_0x0070('0x10'),auth[_0x0070('0xd')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index cd73823..0e11fc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3063=['sequelize','exports','ENUM','variable','customVariable','keyValue','picklist','STRING','string','BOOLEAN'];(function(_0x565ed7,_0x398228){var _0x183ad7=function(_0x5a43d7){while(--_0x5a43d7){_0x565ed7['push'](_0x565ed7['shift']());}};_0x183ad7(++_0x398228);}(_0x3063,0x96));var _0x3306=function(_0x2f227c,_0x360c3a){_0x2f227c=_0x2f227c-0x0;var _0x5032bc=_0x3063[_0x2f227c];return _0x5032bc;};'use strict';var Sequelize=require(_0x3306('0x0'));module[_0x3306('0x1')]={'type':{'type':Sequelize[_0x3306('0x2')]('string',_0x3306('0x3'),_0x3306('0x4'),_0x3306('0x5'),_0x3306('0x6')),'defaultValue':'string'},'content':{'type':Sequelize[_0x3306('0x7')]},'key':{'type':Sequelize[_0x3306('0x7')]},'keyType':{'type':Sequelize[_0x3306('0x2')](_0x3306('0x8'),_0x3306('0x3'),_0x3306('0x4'))},'keyContent':{'type':Sequelize[_0x3306('0x7')]},'idField':{'type':Sequelize[_0x3306('0x7')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x3306('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x3306('0x7')]}};
\ No newline at end of file
+var _0x0886=['BOOLEAN','sequelize','exports','ENUM','variable','customVariable','keyValue','picklist','string','STRING'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x0886,0x155));var _0x6088=function(_0x1f28be,_0xbf0af9){_0x1f28be=_0x1f28be-0x0;var _0x1abe4b=_0x0886[_0x1f28be];return _0x1abe4b;};'use strict';var Sequelize=require(_0x6088('0x0'));module[_0x6088('0x1')]={'type':{'type':Sequelize[_0x6088('0x2')]('string',_0x6088('0x3'),_0x6088('0x4'),_0x6088('0x5'),_0x6088('0x6')),'defaultValue':_0x6088('0x7')},'content':{'type':Sequelize[_0x6088('0x8')]},'key':{'type':Sequelize[_0x6088('0x8')]},'keyType':{'type':Sequelize['ENUM'](_0x6088('0x7'),_0x6088('0x3'),_0x6088('0x4'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x6088('0x8')]},'nameField':{'type':Sequelize[_0x6088('0x8')]},'customField':{'type':Sequelize[_0x6088('0x9')],'defaultValue':!![]},'variableName':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 3e7a1f0..70dc1e3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cca=['Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','index','map','VtigerField','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','hasOwnProperty','nolimit','order','pick','filter','where','merge','VIRTUAL','options','include','rows','catch','params','rawAttributes','find','create','body','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','offset','count','set'];(function(_0x2d9e27,_0x5965b2){var _0xd35381=function(_0x343d18){while(--_0x343d18){_0x2d9e27['push'](_0x2d9e27['shift']());}};_0xd35381(++_0x5965b2);}(_0x5cca,0xbb));var _0xa5cc=function(_0x5c5c1b,_0x4a67da){_0x5c5c1b=_0x5c5c1b-0x0;var _0x27ab42=_0x5cca[_0x5c5c1b];return _0x27ab42;};'use strict';var emlformat=require(_0xa5cc('0x0'));var rimraf=require(_0xa5cc('0x1'));var zipdir=require(_0xa5cc('0x2'));var jsonpatch=require(_0xa5cc('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xa5cc('0x4'));var Mustache=require(_0xa5cc('0x5'));var util=require(_0xa5cc('0x6'));var path=require(_0xa5cc('0x7'));var sox=require(_0xa5cc('0x8'));var csv=require(_0xa5cc('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xa5cc('0xa'));var squel=require(_0xa5cc('0xb'));var crypto=require('crypto');var jsforce=require(_0xa5cc('0xc'));var deskjs=require(_0xa5cc('0xd'));var toCsv=require(_0xa5cc('0x9'));var querystring=require('querystring');var Papa=require(_0xa5cc('0xe'));var Redis=require(_0xa5cc('0xf'));var authService=require(_0xa5cc('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa5cc('0x11'));var logger=require(_0xa5cc('0x12'))(_0xa5cc('0x13'));var utils=require(_0xa5cc('0x14'));var config=require(_0xa5cc('0x15'));var licenseUtil=require(_0xa5cc('0x16'));var db=require(_0xa5cc('0x17'))['db'];function respondWithStatusCode(_0x5d695f,_0x746ec9){_0x746ec9=_0x746ec9||0xcc;return function(_0x1876e6){if(_0x1876e6){return _0x5d695f['sendStatus'](_0x746ec9);}return _0x5d695f[_0xa5cc('0x18')](_0x746ec9)[_0xa5cc('0x19')]();};}function respondWithResult(_0x40a6e5,_0x497fd6){_0x497fd6=_0x497fd6||0xc8;return function(_0x57c5b7){if(_0x57c5b7){return _0x40a6e5[_0xa5cc('0x18')](_0x497fd6)[_0xa5cc('0x1a')](_0x57c5b7);}};}function respondWithFilteredResult(_0x41950c,_0x4cfdb3){return function(_0x9960c9){if(_0x9960c9){var _0x5c88d6=typeof _0x4cfdb3['offset']===_0xa5cc('0x1b')&&typeof _0x4cfdb3[_0xa5cc('0x1c')]===_0xa5cc('0x1b');var _0x42cfb1=_0x9960c9['count'];var _0x5145a0=_0x5c88d6?0x0:_0x4cfdb3[_0xa5cc('0x1d')];var _0x2d688c=_0x5c88d6?_0x9960c9[_0xa5cc('0x1e')]:_0x4cfdb3[_0xa5cc('0x1d')]+_0x4cfdb3[_0xa5cc('0x1c')];var _0x2b43d8;if(_0x2d688c>=_0x42cfb1){_0x2d688c=_0x42cfb1;_0x2b43d8=0xc8;}else{_0x2b43d8=0xce;}_0x41950c[_0xa5cc('0x18')](_0x2b43d8);return _0x41950c[_0xa5cc('0x1f')](_0xa5cc('0x20'),_0x5145a0+'-'+_0x2d688c+'/'+_0x42cfb1)[_0xa5cc('0x1a')](_0x9960c9);}return null;};}function patchUpdates(_0x485d24){return function(_0x4f8781){try{jsonpatch[_0xa5cc('0x21')](_0x4f8781,_0x485d24,!![]);}catch(_0x244757){return BPromise[_0xa5cc('0x22')](_0x244757);}return _0x4f8781[_0xa5cc('0x23')]();};}function saveUpdates(_0x364507,_0x4b5ea8){return function(_0x4c0131){if(_0x4c0131){return _0x4c0131[_0xa5cc('0x24')](_0x364507)[_0xa5cc('0x25')](function(_0x2dc880){return _0x2dc880;});}return null;};}function removeEntity(_0x443b72,_0x5cd2c1){return function(_0x30c62c){if(_0x30c62c){return _0x30c62c[_0xa5cc('0x26')]()[_0xa5cc('0x25')](function(){_0x443b72[_0xa5cc('0x18')](0xcc)[_0xa5cc('0x19')]();});}};}function handleEntityNotFound(_0x519853,_0xb79ed6){return function(_0x3f3c10){if(!_0x3f3c10){_0x519853[_0xa5cc('0x27')](0x194);}return _0x3f3c10;};}function handleError(_0x1eb49b,_0x3e7f41){_0x3e7f41=_0x3e7f41||0x1f4;return function(_0x5ccbcc){logger[_0xa5cc('0x28')](_0x5ccbcc[_0xa5cc('0x29')]);if(_0x5ccbcc[_0xa5cc('0x2a')]){delete _0x5ccbcc[_0xa5cc('0x2a')];}_0x1eb49b[_0xa5cc('0x18')](_0x3e7f41)['send'](_0x5ccbcc);};}exports[_0xa5cc('0x2b')]=function(_0x240ba8,_0x187570){var _0x110d31={},_0x226203={},_0x14bb48={'count':0x0,'rows':[]};var _0x3e5c18=_[_0xa5cc('0x2c')](db[_0xa5cc('0x2d')]['rawAttributes'],function(_0x5c6fbf){return{'name':_0x5c6fbf[_0xa5cc('0x2e')],'type':_0x5c6fbf[_0xa5cc('0x2f')][_0xa5cc('0x30')]};});_0x226203['model']=_[_0xa5cc('0x2c')](_0x3e5c18,_0xa5cc('0x2a'));_0x226203[_0xa5cc('0x31')]=_[_0xa5cc('0x32')](_0x240ba8[_0xa5cc('0x31')]);_0x226203[_0xa5cc('0x33')]=_[_0xa5cc('0x34')](_0x226203[_0xa5cc('0x35')],_0x226203['query']);_0x110d31[_0xa5cc('0x36')]=_[_0xa5cc('0x34')](_0x226203[_0xa5cc('0x35')],qs[_0xa5cc('0x37')](_0x240ba8[_0xa5cc('0x31')][_0xa5cc('0x37')]));_0x110d31[_0xa5cc('0x36')]=_0x110d31['attributes']['length']?_0x110d31[_0xa5cc('0x36')]:_0x226203['model'];if(!_0x240ba8[_0xa5cc('0x31')][_0xa5cc('0x38')](_0xa5cc('0x39'))){_0x110d31[_0xa5cc('0x1c')]=qs[_0xa5cc('0x1c')](_0x240ba8[_0xa5cc('0x31')]['limit']);_0x110d31[_0xa5cc('0x1d')]=qs['offset'](_0x240ba8['query'][_0xa5cc('0x1d')]);}_0x110d31[_0xa5cc('0x3a')]=qs['sort'](_0x240ba8[_0xa5cc('0x31')]['sort']);_0x110d31['where']=qs[_0xa5cc('0x33')](_[_0xa5cc('0x3b')](_0x240ba8['query'],_0x226203[_0xa5cc('0x33')]),_0x3e5c18);if(_0x240ba8[_0xa5cc('0x31')][_0xa5cc('0x3c')]){_0x110d31[_0xa5cc('0x3d')]=_[_0xa5cc('0x3e')](_0x110d31[_0xa5cc('0x3d')],{'$or':_[_0xa5cc('0x2c')](_0x3e5c18,function(_0x36231d){if(_0x36231d[_0xa5cc('0x2f')]!==_0xa5cc('0x3f')){var _0x4aa98d={};_0x4aa98d[_0x36231d['name']]={'$like':'%'+_0x240ba8[_0xa5cc('0x31')][_0xa5cc('0x3c')]+'%'};return _0x4aa98d;}})});}_0x110d31=_[_0xa5cc('0x3e')]({},_0x110d31,_0x240ba8[_0xa5cc('0x40')]);var _0x3547a5={'where':_0x110d31[_0xa5cc('0x3d')]};return db[_0xa5cc('0x2d')][_0xa5cc('0x1e')](_0x3547a5)['then'](function(_0x5cec47){_0x14bb48[_0xa5cc('0x1e')]=_0x5cec47;if(_0x240ba8['query']['includeAll']){_0x110d31[_0xa5cc('0x41')]=[{'all':!![]}];}return db[_0xa5cc('0x2d')]['findAll'](_0x110d31);})[_0xa5cc('0x25')](function(_0x537c0d){_0x14bb48[_0xa5cc('0x42')]=_0x537c0d;return _0x14bb48;})['then'](respondWithFilteredResult(_0x187570,_0x110d31))[_0xa5cc('0x43')](handleError(_0x187570,null));};exports['show']=function(_0x490808,_0x525d94){var _0x3f94f1={'raw':!![],'where':{'id':_0x490808[_0xa5cc('0x44')]['id']}},_0x5729d8={};_0x5729d8[_0xa5cc('0x35')]=_['keys'](db[_0xa5cc('0x2d')][_0xa5cc('0x45')]);_0x5729d8['query']=_[_0xa5cc('0x32')](_0x490808[_0xa5cc('0x31')]);_0x5729d8[_0xa5cc('0x33')]=_[_0xa5cc('0x34')](_0x5729d8[_0xa5cc('0x35')],_0x5729d8['query']);_0x3f94f1['attributes']=_['intersection'](_0x5729d8[_0xa5cc('0x35')],qs[_0xa5cc('0x37')](_0x490808['query'][_0xa5cc('0x37')]));_0x3f94f1[_0xa5cc('0x36')]=_0x3f94f1[_0xa5cc('0x36')]['length']?_0x3f94f1[_0xa5cc('0x36')]:_0x5729d8['model'];if(_0x490808['query']['includeAll']){_0x3f94f1[_0xa5cc('0x41')]=[{'all':!![]}];}_0x3f94f1=_['merge']({},_0x3f94f1,_0x490808[_0xa5cc('0x40')]);return db[_0xa5cc('0x2d')][_0xa5cc('0x46')](_0x3f94f1)[_0xa5cc('0x25')](handleEntityNotFound(_0x525d94,null))['then'](respondWithResult(_0x525d94,null))[_0xa5cc('0x43')](handleError(_0x525d94,null));};exports[_0xa5cc('0x47')]=function(_0x224cd7,_0x437e72){return db[_0xa5cc('0x2d')]['create'](_0x224cd7[_0xa5cc('0x48')],{})[_0xa5cc('0x25')](respondWithResult(_0x437e72,0xc9))[_0xa5cc('0x43')](handleError(_0x437e72,null));};exports['update']=function(_0x3351da,_0x33e6f1){if(_0x3351da[_0xa5cc('0x48')]['id']){delete _0x3351da['body']['id'];}return db['VtigerField'][_0xa5cc('0x46')]({'where':{'id':_0x3351da[_0xa5cc('0x44')]['id']}})[_0xa5cc('0x25')](handleEntityNotFound(_0x33e6f1,null))[_0xa5cc('0x25')](saveUpdates(_0x3351da[_0xa5cc('0x48')],null))[_0xa5cc('0x25')](respondWithResult(_0x33e6f1,null))[_0xa5cc('0x43')](handleError(_0x33e6f1,null));};exports[_0xa5cc('0x26')]=function(_0xbb728e,_0x515f0f){return db['VtigerField'][_0xa5cc('0x46')]({'where':{'id':_0xbb728e[_0xa5cc('0x44')]['id']}})[_0xa5cc('0x25')](handleEntityNotFound(_0x515f0f,null))['then'](removeEntity(_0x515f0f,null))['catch'](handleError(_0x515f0f,null));};
\ No newline at end of file
+var _0x7ed3=['query','filters','intersection','attributes','fields','length','order','sort','where','pick','filter','merge','type','VIRTUAL','options','include','catch','includeAll','find','create','body','params','destroy','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','fs-extra','lodash','squel','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','update','then','error','stack','name','send','index','map','VtigerField','rawAttributes','fieldName','key','model','keys'];(function(_0x5760f6,_0x498ace){var _0x17ef08=function(_0x568ad4){while(--_0x568ad4){_0x5760f6['push'](_0x5760f6['shift']());}};_0x17ef08(++_0x498ace);}(_0x7ed3,0x12b));var _0x37ed=function(_0x111969,_0x4507d3){_0x111969=_0x111969-0x0;var _0x40c0d7=_0x7ed3[_0x111969];return _0x40c0d7;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x37ed('0x0'));var jsonpatch=require(_0x37ed('0x1'));var rp=require(_0x37ed('0x2'));var moment=require(_0x37ed('0x3'));var BPromise=require(_0x37ed('0x4'));var Mustache=require('mustache');var util=require(_0x37ed('0x5'));var path=require(_0x37ed('0x6'));var sox=require('sox');var csv=require(_0x37ed('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x37ed('0x8'));var _=require(_0x37ed('0x9'));var squel=require(_0x37ed('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0x37ed('0x7'));var querystring=require(_0x37ed('0xb'));var Papa=require(_0x37ed('0xc'));var Redis=require('ioredis');var authService=require(_0x37ed('0xd'));var qs=require(_0x37ed('0xe'));var as=require(_0x37ed('0xf'));var hardwareService=require(_0x37ed('0x10'));var logger=require(_0x37ed('0x11'))(_0x37ed('0x12'));var utils=require(_0x37ed('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x37ed('0x14'))['db'];function respondWithStatusCode(_0x29f82f,_0x136eee){_0x136eee=_0x136eee||0xcc;return function(_0x4f7041){if(_0x4f7041){return _0x29f82f[_0x37ed('0x15')](_0x136eee);}return _0x29f82f[_0x37ed('0x16')](_0x136eee)[_0x37ed('0x17')]();};}function respondWithResult(_0x3582b6,_0x7b2b45){_0x7b2b45=_0x7b2b45||0xc8;return function(_0x188998){if(_0x188998){return _0x3582b6[_0x37ed('0x16')](_0x7b2b45)[_0x37ed('0x18')](_0x188998);}};}function respondWithFilteredResult(_0x25e0d2,_0x1fd8d0){return function(_0x14ede0){if(_0x14ede0){var _0x56a8f5=typeof _0x1fd8d0['offset']===_0x37ed('0x19')&&typeof _0x1fd8d0[_0x37ed('0x1a')]===_0x37ed('0x19');var _0x332a06=_0x14ede0[_0x37ed('0x1b')];var _0x100bb4=_0x56a8f5?0x0:_0x1fd8d0[_0x37ed('0x1c')];var _0x584884=_0x56a8f5?_0x14ede0[_0x37ed('0x1b')]:_0x1fd8d0['offset']+_0x1fd8d0['limit'];var _0x173f30;if(_0x584884>=_0x332a06){_0x584884=_0x332a06;_0x173f30=0xc8;}else{_0x173f30=0xce;}_0x25e0d2[_0x37ed('0x16')](_0x173f30);return _0x25e0d2['set'](_0x37ed('0x1d'),_0x100bb4+'-'+_0x584884+'/'+_0x332a06)[_0x37ed('0x18')](_0x14ede0);}return null;};}function patchUpdates(_0x4d10dc){return function(_0x371692){try{jsonpatch[_0x37ed('0x1e')](_0x371692,_0x4d10dc,!![]);}catch(_0x158e58){return BPromise[_0x37ed('0x1f')](_0x158e58);}return _0x371692['save']();};}function saveUpdates(_0x9f8c42,_0x28ce0a){return function(_0x59b048){if(_0x59b048){return _0x59b048[_0x37ed('0x20')](_0x9f8c42)['then'](function(_0x9d2892){return _0x9d2892;});}return null;};}function removeEntity(_0x40fef9,_0x80ebcf){return function(_0x1a5ef3){if(_0x1a5ef3){return _0x1a5ef3['destroy']()[_0x37ed('0x21')](function(){_0x40fef9['status'](0xcc)[_0x37ed('0x17')]();});}};}function handleEntityNotFound(_0x249e50,_0xe533a1){return function(_0x3e0c4){if(!_0x3e0c4){_0x249e50[_0x37ed('0x15')](0x194);}return _0x3e0c4;};}function handleError(_0x43e6f5,_0x52920d){_0x52920d=_0x52920d||0x1f4;return function(_0x1e2321){logger[_0x37ed('0x22')](_0x1e2321[_0x37ed('0x23')]);if(_0x1e2321[_0x37ed('0x24')]){delete _0x1e2321[_0x37ed('0x24')];}_0x43e6f5[_0x37ed('0x16')](_0x52920d)[_0x37ed('0x25')](_0x1e2321);};}exports[_0x37ed('0x26')]=function(_0x2989d3,_0x21a4f0){var _0x197062={},_0x27ab2f={},_0x3b533b={'count':0x0,'rows':[]};var _0x2dac0a=_[_0x37ed('0x27')](db[_0x37ed('0x28')][_0x37ed('0x29')],function(_0x48f1e0){return{'name':_0x48f1e0[_0x37ed('0x2a')],'type':_0x48f1e0['type'][_0x37ed('0x2b')]};});_0x27ab2f[_0x37ed('0x2c')]=_[_0x37ed('0x27')](_0x2dac0a,_0x37ed('0x24'));_0x27ab2f['query']=_[_0x37ed('0x2d')](_0x2989d3[_0x37ed('0x2e')]);_0x27ab2f[_0x37ed('0x2f')]=_[_0x37ed('0x30')](_0x27ab2f[_0x37ed('0x2c')],_0x27ab2f[_0x37ed('0x2e')]);_0x197062[_0x37ed('0x31')]=_[_0x37ed('0x30')](_0x27ab2f[_0x37ed('0x2c')],qs[_0x37ed('0x32')](_0x2989d3[_0x37ed('0x2e')][_0x37ed('0x32')]));_0x197062[_0x37ed('0x31')]=_0x197062[_0x37ed('0x31')][_0x37ed('0x33')]?_0x197062[_0x37ed('0x31')]:_0x27ab2f[_0x37ed('0x2c')];if(!_0x2989d3[_0x37ed('0x2e')]['hasOwnProperty']('nolimit')){_0x197062['limit']=qs[_0x37ed('0x1a')](_0x2989d3['query'][_0x37ed('0x1a')]);_0x197062[_0x37ed('0x1c')]=qs[_0x37ed('0x1c')](_0x2989d3[_0x37ed('0x2e')][_0x37ed('0x1c')]);}_0x197062[_0x37ed('0x34')]=qs['sort'](_0x2989d3[_0x37ed('0x2e')][_0x37ed('0x35')]);_0x197062[_0x37ed('0x36')]=qs[_0x37ed('0x2f')](_[_0x37ed('0x37')](_0x2989d3['query'],_0x27ab2f['filters']),_0x2dac0a);if(_0x2989d3[_0x37ed('0x2e')][_0x37ed('0x38')]){_0x197062[_0x37ed('0x36')]=_[_0x37ed('0x39')](_0x197062[_0x37ed('0x36')],{'$or':_[_0x37ed('0x27')](_0x2dac0a,function(_0x2c91e5){if(_0x2c91e5[_0x37ed('0x3a')]!==_0x37ed('0x3b')){var _0x4a0890={};_0x4a0890[_0x2c91e5['name']]={'$like':'%'+_0x2989d3[_0x37ed('0x2e')][_0x37ed('0x38')]+'%'};return _0x4a0890;}})});}_0x197062=_[_0x37ed('0x39')]({},_0x197062,_0x2989d3[_0x37ed('0x3c')]);var _0x8a1e76={'where':_0x197062['where']};return db[_0x37ed('0x28')][_0x37ed('0x1b')](_0x8a1e76)[_0x37ed('0x21')](function(_0x3cecb1){_0x3b533b['count']=_0x3cecb1;if(_0x2989d3[_0x37ed('0x2e')]['includeAll']){_0x197062[_0x37ed('0x3d')]=[{'all':!![]}];}return db['VtigerField']['findAll'](_0x197062);})[_0x37ed('0x21')](function(_0x352414){_0x3b533b['rows']=_0x352414;return _0x3b533b;})[_0x37ed('0x21')](respondWithFilteredResult(_0x21a4f0,_0x197062))[_0x37ed('0x3e')](handleError(_0x21a4f0,null));};exports['show']=function(_0x483f7b,_0x30ba04){var _0x136810={'raw':!![],'where':{'id':_0x483f7b['params']['id']}},_0x51ba3={};_0x51ba3['model']=_[_0x37ed('0x2d')](db[_0x37ed('0x28')][_0x37ed('0x29')]);_0x51ba3['query']=_[_0x37ed('0x2d')](_0x483f7b[_0x37ed('0x2e')]);_0x51ba3[_0x37ed('0x2f')]=_[_0x37ed('0x30')](_0x51ba3[_0x37ed('0x2c')],_0x51ba3[_0x37ed('0x2e')]);_0x136810[_0x37ed('0x31')]=_['intersection'](_0x51ba3[_0x37ed('0x2c')],qs[_0x37ed('0x32')](_0x483f7b[_0x37ed('0x2e')][_0x37ed('0x32')]));_0x136810[_0x37ed('0x31')]=_0x136810[_0x37ed('0x31')][_0x37ed('0x33')]?_0x136810[_0x37ed('0x31')]:_0x51ba3[_0x37ed('0x2c')];if(_0x483f7b['query'][_0x37ed('0x3f')]){_0x136810[_0x37ed('0x3d')]=[{'all':!![]}];}_0x136810=_[_0x37ed('0x39')]({},_0x136810,_0x483f7b[_0x37ed('0x3c')]);return db[_0x37ed('0x28')][_0x37ed('0x40')](_0x136810)[_0x37ed('0x21')](handleEntityNotFound(_0x30ba04,null))[_0x37ed('0x21')](respondWithResult(_0x30ba04,null))[_0x37ed('0x3e')](handleError(_0x30ba04,null));};exports[_0x37ed('0x41')]=function(_0x260e13,_0x123158){return db[_0x37ed('0x28')][_0x37ed('0x41')](_0x260e13[_0x37ed('0x42')],{})[_0x37ed('0x21')](respondWithResult(_0x123158,0xc9))[_0x37ed('0x3e')](handleError(_0x123158,null));};exports[_0x37ed('0x20')]=function(_0x34d04a,_0x4b6f55){if(_0x34d04a[_0x37ed('0x42')]['id']){delete _0x34d04a[_0x37ed('0x42')]['id'];}return db[_0x37ed('0x28')][_0x37ed('0x40')]({'where':{'id':_0x34d04a[_0x37ed('0x43')]['id']}})[_0x37ed('0x21')](handleEntityNotFound(_0x4b6f55,null))['then'](saveUpdates(_0x34d04a[_0x37ed('0x42')],null))[_0x37ed('0x21')](respondWithResult(_0x4b6f55,null))[_0x37ed('0x3e')](handleError(_0x4b6f55,null));};exports[_0x37ed('0x44')]=function(_0x1bc647,_0x42c643){return db[_0x37ed('0x28')][_0x37ed('0x40')]({'where':{'id':_0x1bc647['params']['id']}})['then'](handleEntityNotFound(_0x42c643,null))['then'](removeEntity(_0x42c643,null))[_0x37ed('0x3e')](handleError(_0x42c643,null));};
\ No newline at end of file
index c618a14..8745807 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97a0=['../../config/environment','./intVtigerField.attributes','exports','define','VtigerField','vtiger_unique_index','idField','FieldId','lodash','util','../../config/logger','api','moment','bluebird','rimraf'];(function(_0x2d8a23,_0x522080){var _0xd7bce1=function(_0x6adbdd){while(--_0x6adbdd){_0x2d8a23['push'](_0x2d8a23['shift']());}};_0xd7bce1(++_0x522080);}(_0x97a0,0x134));var _0x097a=function(_0x18bf52,_0x577435){_0x18bf52=_0x18bf52-0x0;var _0x5c514b=_0x97a0[_0x18bf52];return _0x5c514b;};'use strict';var _=require(_0x097a('0x0'));var util=require(_0x097a('0x1'));var logger=require(_0x097a('0x2'))(_0x097a('0x3'));var moment=require(_0x097a('0x4'));var BPromise=require(_0x097a('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x097a('0x6'));var config=require(_0x097a('0x7'));var attributes=require(_0x097a('0x8'));module[_0x097a('0x9')]=function(_0x5108a0,_0x33c6cf){return _0x5108a0[_0x097a('0xa')](_0x097a('0xb'),attributes,{'tableName':'int_vtiger_fields','paranoid':![],'indexes':[{'name':_0x097a('0xc'),'fields':[_0x097a('0xd'),_0x097a('0xe')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5743=['util','api','bluebird','request-promise','path','../../config/environment','exports','define','VtigerField','int_vtiger_fields','vtiger_unique_index','idField'];(function(_0x34df1e,_0x3b27b4){var _0x458999=function(_0x3092cf){while(--_0x3092cf){_0x34df1e['push'](_0x34df1e['shift']());}};_0x458999(++_0x3b27b4);}(_0x5743,0x1ec));var _0x3574=function(_0x375aed,_0x56b1eb){_0x375aed=_0x375aed-0x0;var _0x4e88cc=_0x5743[_0x375aed];return _0x4e88cc;};'use strict';var _=require('lodash');var util=require(_0x3574('0x0'));var logger=require('../../config/logger')(_0x3574('0x1'));var moment=require('moment');var BPromise=require(_0x3574('0x2'));var rp=require(_0x3574('0x3'));var fs=require('fs');var path=require(_0x3574('0x4'));var rimraf=require('rimraf');var config=require(_0x3574('0x5'));var attributes=require('./intVtigerField.attributes');module[_0x3574('0x6')]=function(_0x3e3ddc,_0x10abb3){return _0x3e3ddc[_0x3574('0x7')](_0x3574('0x8'),attributes,{'tableName':_0x3574('0x9'),'paranoid':![],'indexes':[{'name':_0x3574('0xa'),'fields':[_0x3574('0xb'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index fe53577..a378e9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cf9=['request\x20sent','debug','VtigerField,\x20%s,\x20%s,\x20%s','stringify','error','VtigerField,\x20%s,\x20%s','message','result','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info'];(function(_0x1960c3,_0x19b981){var _0x535438=function(_0x328db2){while(--_0x328db2){_0x1960c3['push'](_0x1960c3['shift']());}};_0x535438(++_0x19b981);}(_0x6cf9,0x9b));var _0x96cf=function(_0xffa198,_0x5a8940){_0xffa198=_0xffa198-0x0;var _0x1e4b50=_0x6cf9[_0xffa198];return _0x1e4b50;};'use strict';var _=require('lodash');var util=require(_0x96cf('0x0'));var moment=require(_0x96cf('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x96cf('0x2'));var db=require(_0x96cf('0x3'))['db'];var utils=require(_0x96cf('0x4'));var logger=require(_0x96cf('0x5'))(_0x96cf('0x6'));var config=require(_0x96cf('0x7'));var jayson=require(_0x96cf('0x8'));var client=jayson[_0x96cf('0x9')][_0x96cf('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1588ce,_0x36f7fc,_0x2a6245){return new BPromise(function(_0x99d957,_0x23a8e8){return client['request'](_0x1588ce,_0x2a6245)[_0x96cf('0xb')](function(_0x44dd16){logger[_0x96cf('0xc')]('VtigerField,\x20%s,\x20%s',_0x36f7fc,_0x96cf('0xd'));logger[_0x96cf('0xe')](_0x96cf('0xf'),_0x36f7fc,_0x96cf('0xd'),JSON[_0x96cf('0x10')](_0x44dd16));if(_0x44dd16[_0x96cf('0x11')]){if(_0x44dd16[_0x96cf('0x11')]['code']===0x1f4){logger[_0x96cf('0x11')](_0x96cf('0x12'),_0x36f7fc,_0x44dd16['error'][_0x96cf('0x13')]);return _0x23a8e8(_0x44dd16[_0x96cf('0x11')][_0x96cf('0x13')]);}logger[_0x96cf('0x11')](_0x96cf('0x12'),_0x36f7fc,_0x44dd16['error'][_0x96cf('0x13')]);return _0x99d957(_0x44dd16[_0x96cf('0x11')][_0x96cf('0x13')]);}else{logger['info'](_0x96cf('0x12'),_0x36f7fc,_0x96cf('0xd'));_0x99d957(_0x44dd16[_0x96cf('0x14')][_0x96cf('0x13')]);}})['catch'](function(_0x34580a){logger[_0x96cf('0x11')](_0x96cf('0x12'),_0x36f7fc,_0x34580a);_0x23a8e8(_0x34580a);});});}
\ No newline at end of file
+var _0x2bef=['moment','bluebird','randomstring','ioredis','../../config/utils','../../config/environment','jayson/promise','request','then','info','request\x20sent','debug','stringify','error','code','VtigerField,\x20%s,\x20%s','message','lodash','util'];(function(_0xa0032b,_0x5bd969){var _0x22457b=function(_0x4efb95){while(--_0x4efb95){_0xa0032b['push'](_0xa0032b['shift']());}};_0x22457b(++_0x5bd969);}(_0x2bef,0x11b));var _0xf2be=function(_0xb82940,_0x530318){_0xb82940=_0xb82940-0x0;var _0x2e152a=_0x2bef[_0xb82940];return _0x2e152a;};'use strict';var _=require(_0xf2be('0x0'));var util=require(_0xf2be('0x1'));var moment=require(_0xf2be('0x2'));var BPromise=require(_0xf2be('0x3'));var rs=require(_0xf2be('0x4'));var fs=require('fs');var Redis=require(_0xf2be('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xf2be('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xf2be('0x7'));var jayson=require(_0xf2be('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xd96d5c,_0x4335ac,_0x12670e){return new BPromise(function(_0x4eeb00,_0x56bfec){return client[_0xf2be('0x9')](_0xd96d5c,_0x12670e)[_0xf2be('0xa')](function(_0x1f2d37){logger[_0xf2be('0xb')]('VtigerField,\x20%s,\x20%s',_0x4335ac,_0xf2be('0xc'));logger[_0xf2be('0xd')]('VtigerField,\x20%s,\x20%s,\x20%s',_0x4335ac,_0xf2be('0xc'),JSON[_0xf2be('0xe')](_0x1f2d37));if(_0x1f2d37[_0xf2be('0xf')]){if(_0x1f2d37[_0xf2be('0xf')][_0xf2be('0x10')]===0x1f4){logger[_0xf2be('0xf')](_0xf2be('0x11'),_0x4335ac,_0x1f2d37[_0xf2be('0xf')][_0xf2be('0x12')]);return _0x56bfec(_0x1f2d37[_0xf2be('0xf')][_0xf2be('0x12')]);}logger['error']('VtigerField,\x20%s,\x20%s',_0x4335ac,_0x1f2d37['error'][_0xf2be('0x12')]);return _0x4eeb00(_0x1f2d37['error']['message']);}else{logger[_0xf2be('0xb')](_0xf2be('0x11'),_0x4335ac,_0xf2be('0xc'));_0x4eeb00(_0x1f2d37['result'][_0xf2be('0x12')]);}})['catch'](function(_0x5eded8){logger[_0xf2be('0xf')]('VtigerField,\x20%s,\x20%s',_0x4335ac,_0x5eded8);_0x56bfec(_0x5eded8);});});}
\ No newline at end of file
index 9b6d209..1db2131 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3f3=['Router','fs-extra','../../config/environment','./intZendeskAccount.controller','get','index','isAuthenticated','show','/:id/configurations','getFields','post','addConfiguration','put','/:id','update','delete','destroy','exports','util','connect-timeout','express'];(function(_0x5357ca,_0x801fac){var _0x24a125=function(_0x29ff8c){while(--_0x29ff8c){_0x5357ca['push'](_0x5357ca['shift']());}};_0x24a125(++_0x801fac);}(_0xb3f3,0xcf));var _0x3b3f=function(_0x4b40de,_0x3efe59){_0x4b40de=_0x4b40de-0x0;var _0x5c9460=_0xb3f3[_0x4b40de];return _0x5c9460;};'use strict';var multer=require('multer');var util=require(_0x3b3f('0x0'));var path=require('path');var timeout=require(_0x3b3f('0x1'));var express=require(_0x3b3f('0x2'));var router=express[_0x3b3f('0x3')]();var fs_extra=require(_0x3b3f('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0x3b3f('0x5'));var controller=require(_0x3b3f('0x6'));router[_0x3b3f('0x7')]('/',auth['isAuthenticated'](),controller[_0x3b3f('0x8')]);router['get']('/:id',auth[_0x3b3f('0x9')](),controller[_0x3b3f('0xa')]);router['get'](_0x3b3f('0xb'),auth[_0x3b3f('0x9')](),controller['getConfigurations']);router[_0x3b3f('0x7')]('/:id/fields',auth[_0x3b3f('0x9')](),controller[_0x3b3f('0xc')]);router[_0x3b3f('0xd')]('/',auth['isAuthenticated'](),controller['create']);router['post'](_0x3b3f('0xb'),auth[_0x3b3f('0x9')](),controller[_0x3b3f('0xe')]);router[_0x3b3f('0xf')](_0x3b3f('0x10'),auth[_0x3b3f('0x9')](),controller[_0x3b3f('0x11')]);router[_0x3b3f('0x12')](_0x3b3f('0x10'),auth[_0x3b3f('0x9')](),controller[_0x3b3f('0x13')]);module[_0x3b3f('0x14')]=router;
\ No newline at end of file
+var _0x4472=['../../components/interaction/service','../../config/environment','./intZendeskAccount.controller','get','isAuthenticated','index','/:id','show','getConfigurations','/:id/fields','getFields','post','/:id/configurations','addConfiguration','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service'];(function(_0x4890bd,_0x2e3958){var _0x14ccbb=function(_0x1a73b3){while(--_0x1a73b3){_0x4890bd['push'](_0x4890bd['shift']());}};_0x14ccbb(++_0x2e3958);}(_0x4472,0x1d4));var _0x2447=function(_0x162d13,_0x360595){_0x162d13=_0x162d13-0x0;var _0x516557=_0x4472[_0x162d13];return _0x516557;};'use strict';var multer=require(_0x2447('0x0'));var util=require(_0x2447('0x1'));var path=require(_0x2447('0x2'));var timeout=require(_0x2447('0x3'));var express=require('express');var router=express[_0x2447('0x4')]();var fs_extra=require(_0x2447('0x5'));var auth=require(_0x2447('0x6'));var interaction=require(_0x2447('0x7'));var config=require(_0x2447('0x8'));var controller=require(_0x2447('0x9'));router[_0x2447('0xa')]('/',auth[_0x2447('0xb')](),controller[_0x2447('0xc')]);router[_0x2447('0xa')](_0x2447('0xd'),auth[_0x2447('0xb')](),controller[_0x2447('0xe')]);router[_0x2447('0xa')]('/:id/configurations',auth[_0x2447('0xb')](),controller[_0x2447('0xf')]);router[_0x2447('0xa')](_0x2447('0x10'),auth[_0x2447('0xb')](),controller[_0x2447('0x11')]);router[_0x2447('0x12')]('/',auth['isAuthenticated'](),controller['create']);router[_0x2447('0x12')](_0x2447('0x13'),auth['isAuthenticated'](),controller[_0x2447('0x14')]);router['put'](_0x2447('0xd'),auth[_0x2447('0xb')](),controller[_0x2447('0x15')]);router[_0x2447('0x16')]('/:id',auth['isAuthenticated'](),controller[_0x2447('0x17')]);module[_0x2447('0x18')]=router;
\ No newline at end of file
index 10b4cd8..36a63b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf963=['ENUM','token','integrationTab','sequelize','STRING','remoteUri'];(function(_0x10c33e,_0x490499){var _0x1b681e=function(_0x4edf8a){while(--_0x4edf8a){_0x10c33e['push'](_0x10c33e['shift']());}};_0x1b681e(++_0x490499);}(_0xf963,0x11d));var _0x3f96=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xf963[_0x3b380d];return _0x54502b;};'use strict';var Sequelize=require(_0x3f96('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x3f96('0x1')]},'username':{'type':Sequelize[_0x3f96('0x1')],'unique':'username'},'password':{'type':Sequelize['STRING']},'token':{'type':Sequelize[_0x3f96('0x1')]},'remoteUri':{'type':Sequelize[_0x3f96('0x1')],'unique':_0x3f96('0x2')},'authType':{'type':Sequelize[_0x3f96('0x3')]('password',_0x3f96('0x4')),'defaultValue':'password'},'serverUrl':{'type':Sequelize[_0x3f96('0x1')],'allowNull':![]},'type':{'type':Sequelize[_0x3f96('0x3')](_0x3f96('0x5'),'newTab'),'defaultValue':_0x3f96('0x5')}};
\ No newline at end of file
+var _0xf981=['remoteUri','ENUM','password','token','integrationTab','sequelize','exports','STRING','username'];(function(_0x41488a,_0x3305af){var _0x3dbeeb=function(_0x1499c8){while(--_0x1499c8){_0x41488a['push'](_0x41488a['shift']());}};_0x3dbeeb(++_0x3305af);}(_0xf981,0xe6));var _0x1f98=function(_0x24dc0f,_0x393669){_0x24dc0f=_0x24dc0f-0x0;var _0xff8cea=_0xf981[_0x24dc0f];return _0xff8cea;};'use strict';var Sequelize=require(_0x1f98('0x0'));module[_0x1f98('0x1')]={'name':{'type':Sequelize[_0x1f98('0x2')]},'description':{'type':Sequelize[_0x1f98('0x2')]},'username':{'type':Sequelize[_0x1f98('0x2')],'unique':_0x1f98('0x3')},'password':{'type':Sequelize[_0x1f98('0x2')]},'token':{'type':Sequelize[_0x1f98('0x2')]},'remoteUri':{'type':Sequelize['STRING'],'unique':_0x1f98('0x4')},'authType':{'type':Sequelize[_0x1f98('0x5')](_0x1f98('0x6'),_0x1f98('0x7')),'defaultValue':_0x1f98('0x6')},'serverUrl':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0x1f98('0x8'),'newTab'),'defaultValue':_0x1f98('0x8')}};
\ No newline at end of file
index b79f829..c9f34bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['includes','position','title','system_field_options','custom_field_options','test','statusCode','error','getFields','stringify','send','Wrong\x20credentials','eml-format','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','../../config/license/util','../../components/integrations/configuration','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','stack','name','index','map','ZendeskAccount','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','sort','where','pick','merge','filter','options','includeAll','include','catch','show','params','find','create','body','getConfigurations','order','nolimit','addConfiguration','Subjects','getSubjects','channel','getDescriptions','ZendeskConfiguration','ZendeskField','findOne','username','password','authType','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','headers','Basic\x20%s','%s:%s','toString','base64','%s/token:%s','token','ValidationError','description','assignee','remove','ticket_fields'];(function(_0x26b2bd,_0x1b4823){var _0x29da53=function(_0x3567da){while(--_0x3567da){_0x26b2bd['push'](_0x26b2bd['shift']());}};_0x29da53(++_0x1b4823);}(_0xf4eb,0xec));var _0xbf4e=function(_0x336620,_0x5bb799){_0x336620=_0x336620-0x0;var _0xe2ce48=_0xf4eb[_0x336620];return _0xe2ce48;};'use strict';var emlformat=require(_0xbf4e('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xbf4e('0x1'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbf4e('0x2'));var path=require(_0xbf4e('0x3'));var sox=require(_0xbf4e('0x4'));var csv=require(_0xbf4e('0x5'));var ejs=require(_0xbf4e('0x6'));var fs=require('fs');var fs_extra=require(_0xbf4e('0x7'));var _=require(_0xbf4e('0x8'));var squel=require('squel');var crypto=require(_0xbf4e('0x9'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xbf4e('0x5'));var querystring=require(_0xbf4e('0xa'));var Papa=require(_0xbf4e('0xb'));var Redis=require(_0xbf4e('0xc'));var authService=require(_0xbf4e('0xd'));var qs=require(_0xbf4e('0xe'));var as=require(_0xbf4e('0xf'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xbf4e('0x10'));var utils=require('../../config/utils');var config=require(_0xbf4e('0x11'));var licenseUtil=require(_0xbf4e('0x12'));var db=require('../../mysqldb')['db'];var integrations=require(_0xbf4e('0x13'));function respondWithStatusCode(_0x5a3035,_0x56d185){_0x56d185=_0x56d185||0xcc;return function(_0x209b25){if(_0x209b25){return _0x5a3035[_0xbf4e('0x14')](_0x56d185);}return _0x5a3035[_0xbf4e('0x15')](_0x56d185)[_0xbf4e('0x16')]();};}function respondWithResult(_0x3b74bd,_0x61bd54){_0x61bd54=_0x61bd54||0xc8;return function(_0x4984b4){if(_0x4984b4){return _0x3b74bd['status'](_0x61bd54)[_0xbf4e('0x17')](_0x4984b4);}};}function respondWithFilteredResult(_0x1735ae,_0x28fc6b){return function(_0x542909){if(_0x542909){var _0x14110b=typeof _0x28fc6b[_0xbf4e('0x18')]===_0xbf4e('0x19')&&typeof _0x28fc6b[_0xbf4e('0x1a')]==='undefined';var _0x247322=_0x542909['count'];var _0x5db03f=_0x14110b?0x0:_0x28fc6b['offset'];var _0x4f8762=_0x14110b?_0x542909[_0xbf4e('0x1b')]:_0x28fc6b[_0xbf4e('0x18')]+_0x28fc6b[_0xbf4e('0x1a')];var _0x4d9c2a;if(_0x4f8762>=_0x247322){_0x4f8762=_0x247322;_0x4d9c2a=0xc8;}else{_0x4d9c2a=0xce;}_0x1735ae['status'](_0x4d9c2a);return _0x1735ae[_0xbf4e('0x1c')](_0xbf4e('0x1d'),_0x5db03f+'-'+_0x4f8762+'/'+_0x247322)[_0xbf4e('0x17')](_0x542909);}return null;};}function patchUpdates(_0x3a875b){return function(_0x344727){try{jsonpatch[_0xbf4e('0x1e')](_0x344727,_0x3a875b,!![]);}catch(_0x415963){return BPromise[_0xbf4e('0x1f')](_0x415963);}return _0x344727[_0xbf4e('0x20')]();};}function saveUpdates(_0x376832,_0x30539b){return function(_0x59bd84){if(_0x59bd84){return _0x59bd84[_0xbf4e('0x21')](_0x376832)[_0xbf4e('0x22')](function(_0x51648c){return _0x51648c;});}return null;};}function removeEntity(_0x31e3f5,_0x30994d){return function(_0x114412){if(_0x114412){return _0x114412[_0xbf4e('0x23')]()[_0xbf4e('0x22')](function(){_0x31e3f5['status'](0xcc)[_0xbf4e('0x16')]();});}};}function handleEntityNotFound(_0x36688a,_0x3d6863){return function(_0x5766d4){if(!_0x5766d4){_0x36688a[_0xbf4e('0x14')](0x194);}return _0x5766d4;};}function handleError(_0x5e08b1,_0x5bcf71){_0x5bcf71=_0x5bcf71||0x1f4;return function(_0x2bfccf){logger['error'](_0x2bfccf[_0xbf4e('0x24')]);if(_0x2bfccf[_0xbf4e('0x25')]){delete _0x2bfccf[_0xbf4e('0x25')];}_0x5e08b1[_0xbf4e('0x15')](_0x5bcf71)['send'](_0x2bfccf);};}exports[_0xbf4e('0x26')]=function(_0x8e0ab5,_0x43879d){var _0x4cd4a1={},_0x681c3b={},_0x590c85={'count':0x0,'rows':[]};var _0x1dfa81=_[_0xbf4e('0x27')](db[_0xbf4e('0x28')]['rawAttributes'],function(_0x1d12e2){return{'name':_0x1d12e2[_0xbf4e('0x29')],'type':_0x1d12e2[_0xbf4e('0x2a')][_0xbf4e('0x2b')]};});_0x681c3b[_0xbf4e('0x2c')]=_[_0xbf4e('0x27')](_0x1dfa81,'name');_0x681c3b[_0xbf4e('0x2d')]=_[_0xbf4e('0x2e')](_0x8e0ab5['query']);_0x681c3b[_0xbf4e('0x2f')]=_[_0xbf4e('0x30')](_0x681c3b['model'],_0x681c3b[_0xbf4e('0x2d')]);_0x4cd4a1['attributes']=_[_0xbf4e('0x30')](_0x681c3b['model'],qs[_0xbf4e('0x31')](_0x8e0ab5[_0xbf4e('0x2d')][_0xbf4e('0x31')]));_0x4cd4a1['attributes']=_0x4cd4a1[_0xbf4e('0x32')][_0xbf4e('0x33')]?_0x4cd4a1[_0xbf4e('0x32')]:_0x681c3b[_0xbf4e('0x2c')];if(!_0x8e0ab5[_0xbf4e('0x2d')][_0xbf4e('0x34')]('nolimit')){_0x4cd4a1[_0xbf4e('0x1a')]=qs[_0xbf4e('0x1a')](_0x8e0ab5[_0xbf4e('0x2d')][_0xbf4e('0x1a')]);_0x4cd4a1[_0xbf4e('0x18')]=qs['offset'](_0x8e0ab5['query']['offset']);}_0x4cd4a1['order']=qs[_0xbf4e('0x35')](_0x8e0ab5[_0xbf4e('0x2d')][_0xbf4e('0x35')]);_0x4cd4a1[_0xbf4e('0x36')]=qs[_0xbf4e('0x2f')](_[_0xbf4e('0x37')](_0x8e0ab5[_0xbf4e('0x2d')],_0x681c3b[_0xbf4e('0x2f')]),_0x1dfa81);if(_0x8e0ab5[_0xbf4e('0x2d')]['filter']){_0x4cd4a1['where']=_[_0xbf4e('0x38')](_0x4cd4a1[_0xbf4e('0x36')],{'$or':_[_0xbf4e('0x27')](_0x1dfa81,function(_0x4ae676){if(_0x4ae676[_0xbf4e('0x2a')]!=='VIRTUAL'){var _0x370d90={};_0x370d90[_0x4ae676[_0xbf4e('0x25')]]={'$like':'%'+_0x8e0ab5[_0xbf4e('0x2d')][_0xbf4e('0x39')]+'%'};return _0x370d90;}})});}_0x4cd4a1=_['merge']({},_0x4cd4a1,_0x8e0ab5[_0xbf4e('0x3a')]);var _0x78ab2d={'where':_0x4cd4a1[_0xbf4e('0x36')]};return db[_0xbf4e('0x28')]['count'](_0x78ab2d)[_0xbf4e('0x22')](function(_0x44e96b){_0x590c85[_0xbf4e('0x1b')]=_0x44e96b;if(_0x8e0ab5[_0xbf4e('0x2d')][_0xbf4e('0x3b')]){_0x4cd4a1[_0xbf4e('0x3c')]=[{'all':!![]}];}return db[_0xbf4e('0x28')]['findAll'](_0x4cd4a1);})[_0xbf4e('0x22')](function(_0x7b3a94){_0x590c85['rows']=_0x7b3a94;return _0x590c85;})['then'](respondWithFilteredResult(_0x43879d,_0x4cd4a1))[_0xbf4e('0x3d')](handleError(_0x43879d,null));};exports[_0xbf4e('0x3e')]=function(_0x495e53,_0x5bfc4d){var _0x2b1bf4={'raw':![],'where':{'id':_0x495e53[_0xbf4e('0x3f')]['id']}},_0x150224={};_0x150224[_0xbf4e('0x2c')]=_[_0xbf4e('0x2e')](db[_0xbf4e('0x28')]['rawAttributes']);_0x150224[_0xbf4e('0x2d')]=_[_0xbf4e('0x2e')](_0x495e53['query']);_0x150224['filters']=_['intersection'](_0x150224['model'],_0x150224[_0xbf4e('0x2d')]);_0x2b1bf4['attributes']=_[_0xbf4e('0x30')](_0x150224[_0xbf4e('0x2c')],qs['fields'](_0x495e53['query'][_0xbf4e('0x31')]));_0x2b1bf4[_0xbf4e('0x32')]=_0x2b1bf4[_0xbf4e('0x32')][_0xbf4e('0x33')]?_0x2b1bf4[_0xbf4e('0x32')]:_0x150224['model'];if(_0x495e53[_0xbf4e('0x2d')][_0xbf4e('0x3b')]){_0x2b1bf4[_0xbf4e('0x3c')]=[{'all':!![]}];}_0x2b1bf4=_[_0xbf4e('0x38')]({},_0x2b1bf4,_0x495e53[_0xbf4e('0x3a')]);return db[_0xbf4e('0x28')][_0xbf4e('0x40')](_0x2b1bf4)[_0xbf4e('0x22')](handleEntityNotFound(_0x5bfc4d,null))['then'](respondWithResult(_0x5bfc4d,null))[_0xbf4e('0x3d')](handleError(_0x5bfc4d,null));};exports[_0xbf4e('0x41')]=function(_0x1833c1,_0x32bed6){return db[_0xbf4e('0x28')][_0xbf4e('0x41')](_0x1833c1[_0xbf4e('0x42')],{})[_0xbf4e('0x22')](respondWithResult(_0x32bed6,0xc9))[_0xbf4e('0x3d')](handleError(_0x32bed6,null));};exports[_0xbf4e('0x21')]=function(_0x2fdba9,_0x6fd78d){if(_0x2fdba9[_0xbf4e('0x42')]['id']){delete _0x2fdba9[_0xbf4e('0x42')]['id'];}return db[_0xbf4e('0x28')][_0xbf4e('0x40')]({'where':{'id':_0x2fdba9[_0xbf4e('0x3f')]['id']}})['then'](handleEntityNotFound(_0x6fd78d,null))[_0xbf4e('0x22')](saveUpdates(_0x2fdba9[_0xbf4e('0x42')],null))[_0xbf4e('0x22')](respondWithResult(_0x6fd78d,null))['catch'](handleError(_0x6fd78d,null));};exports[_0xbf4e('0x23')]=function(_0x5ed838,_0x4a050e){return db[_0xbf4e('0x28')][_0xbf4e('0x40')]({'where':{'id':_0x5ed838['params']['id']}})[_0xbf4e('0x22')](handleEntityNotFound(_0x4a050e,null))[_0xbf4e('0x22')](removeEntity(_0x4a050e,null))[_0xbf4e('0x3d')](handleError(_0x4a050e,null));};exports[_0xbf4e('0x43')]=function(_0x42eef6,_0x2ac2c8,_0x419969){var _0x1cdd8c={};var _0x3cd61b={};var _0xc058e1;var _0x271ad2;return db['ZendeskAccount']['findOne']({'where':{'id':_0x42eef6[_0xbf4e('0x3f')]['id']}})[_0xbf4e('0x22')](handleEntityNotFound(_0x2ac2c8,null))[_0xbf4e('0x22')](function(_0x586f5d){if(_0x586f5d){_0xc058e1=_0x586f5d;_0x3cd61b[_0xbf4e('0x2c')]=_[_0xbf4e('0x2e')](db['ZendeskConfiguration']['rawAttributes']);_0x3cd61b[_0xbf4e('0x2d')]=_['keys'](_0x42eef6['query']);_0x3cd61b[_0xbf4e('0x2f')]=_[_0xbf4e('0x30')](_0x3cd61b[_0xbf4e('0x2c')],_0x3cd61b[_0xbf4e('0x2d')]);_0x1cdd8c[_0xbf4e('0x32')]=_['intersection'](_0x3cd61b[_0xbf4e('0x2c')],qs['fields'](_0x42eef6[_0xbf4e('0x2d')]['fields']));_0x1cdd8c[_0xbf4e('0x32')]=_0x1cdd8c['attributes'][_0xbf4e('0x33')]?_0x1cdd8c[_0xbf4e('0x32')]:_0x3cd61b[_0xbf4e('0x2c')];_0x1cdd8c[_0xbf4e('0x44')]=qs[_0xbf4e('0x35')](_0x42eef6['query']['sort']);_0x1cdd8c['where']=qs['filters'](_[_0xbf4e('0x37')](_0x42eef6[_0xbf4e('0x2d')],_0x3cd61b['filters']));if(_0x42eef6[_0xbf4e('0x2d')][_0xbf4e('0x39')]){_0x1cdd8c[_0xbf4e('0x36')]=_[_0xbf4e('0x38')](_0x1cdd8c[_0xbf4e('0x36')],{'$or':_[_0xbf4e('0x27')](_0x1cdd8c[_0xbf4e('0x32')],function(_0x48682c){var _0x25c254={};_0x25c254[_0x48682c]={'$like':'%'+_0x42eef6[_0xbf4e('0x2d')][_0xbf4e('0x39')]+'%'};return _0x25c254;})});}_0x1cdd8c=_['merge']({},_0x1cdd8c,_0x42eef6['options']);return _0xc058e1[_0xbf4e('0x43')](_0x1cdd8c);}})[_0xbf4e('0x22')](function(_0x2e8a62){if(_0x2e8a62){_0x271ad2=_0x2e8a62['length'];if(!_0x42eef6[_0xbf4e('0x2d')][_0xbf4e('0x34')](_0xbf4e('0x45'))){_0x1cdd8c[_0xbf4e('0x1a')]=qs[_0xbf4e('0x1a')](_0x42eef6[_0xbf4e('0x2d')][_0xbf4e('0x1a')]);_0x1cdd8c[_0xbf4e('0x18')]=qs[_0xbf4e('0x18')](_0x42eef6[_0xbf4e('0x2d')][_0xbf4e('0x18')]);}return _0xc058e1[_0xbf4e('0x43')](_0x1cdd8c);}})['then'](function(_0x21cbd2){if(_0x21cbd2){return _0x21cbd2?{'count':_0x271ad2,'rows':_0x21cbd2}:null;}})['then'](respondWithResult(_0x2ac2c8,null))[_0xbf4e('0x3d')](handleError(_0x2ac2c8,null));};exports[_0xbf4e('0x46')]=function(_0x400fa5,_0x180b13,_0x2080ec){if(_0x400fa5[_0xbf4e('0x42')]['id']){delete _0x400fa5[_0xbf4e('0x42')]['id'];}return db[_0xbf4e('0x28')]['findOne']({'where':{'id':_0x400fa5[_0xbf4e('0x3f')]['id']}})[_0xbf4e('0x22')](handleEntityNotFound(_0x180b13,null))[_0xbf4e('0x22')](function(_0x33f9c4){if(_0x33f9c4){_0x400fa5[_0xbf4e('0x42')]['AccountId']=_0x33f9c4['id'];_0x400fa5[_0xbf4e('0x42')][_0xbf4e('0x47')]=integrations[_0xbf4e('0x48')](_0x400fa5[_0xbf4e('0x42')][_0xbf4e('0x49')],_0x400fa5[_0xbf4e('0x42')]['type']);_0x400fa5[_0xbf4e('0x42')]['Descriptions']=integrations[_0xbf4e('0x4a')](_0x400fa5[_0xbf4e('0x42')][_0xbf4e('0x49')],_0x400fa5[_0xbf4e('0x42')]['type']);return db[_0xbf4e('0x4b')]['create'](_0x400fa5['body'],{'include':[{'model':db[_0xbf4e('0x4c')],'as':_0xbf4e('0x47')},{'model':db[_0xbf4e('0x4c')],'as':'Descriptions'}]});}return null;})[_0xbf4e('0x22')](respondWithResult(_0x180b13,null))[_0xbf4e('0x3d')](handleError(_0x180b13,null));};exports['getFields']=function(_0x19c5b4,_0x42df5f,_0x4405b9){var _0x137224='';return db[_0xbf4e('0x28')][_0xbf4e('0x4d')]({'where':{'id':_0x19c5b4[_0xbf4e('0x3f')]['id']},'attributes':['id',_0xbf4e('0x4e'),_0xbf4e('0x4f'),'token',_0xbf4e('0x50'),_0xbf4e('0x51')]})[_0xbf4e('0x22')](handleEntityNotFound(_0x42df5f,null))[_0xbf4e('0x22')](function(_0x54f450){if(_0x54f450){_0x137224=_0x54f450[_0xbf4e('0x51')];var _0x667836=_0x137224[_0xbf4e('0x52')](-0x1);if(_0x667836==='/'){_0x137224=_0x137224[_0xbf4e('0x53')](0x0,_0x137224[_0xbf4e('0x54')](_0x667836));}var _0x3448f5={'method':_0xbf4e('0x55'),'uri':util[_0xbf4e('0x56')](_0xbf4e('0x57'),_0x137224,'ticket_fields'),'json':!![]};switch(_0x54f450[_0xbf4e('0x50')]){case'password':_0x3448f5[_0xbf4e('0x58')]={'Authorization':util[_0xbf4e('0x56')](_0xbf4e('0x59'),new Buffer(util[_0xbf4e('0x56')](_0xbf4e('0x5a'),_0x54f450['username'],_0x54f450[_0xbf4e('0x4f')]))[_0xbf4e('0x5b')](_0xbf4e('0x5c')))};break;case'token':_0x3448f5[_0xbf4e('0x58')]={'Authorization':util[_0xbf4e('0x56')](_0xbf4e('0x59'),new Buffer(util['format'](_0xbf4e('0x5d'),_0x54f450[_0xbf4e('0x4e')],_0x54f450[_0xbf4e('0x5e')]))[_0xbf4e('0x5b')](_0xbf4e('0x5c')))};break;default:throw new db['Sequelize'][(_0xbf4e('0x5f'))]('Unknown\x20authentication\x20type');}return rp(_0x3448f5);}})[_0xbf4e('0x22')](function(_0x504723){if(_0x504723){var _0x19a7e9=['subject',_0xbf4e('0x60'),'group',_0xbf4e('0x61')];_[_0xbf4e('0x62')](_0x504723[_0xbf4e('0x63')],function(_0x23de82){return _0x19a7e9[_0xbf4e('0x64')](_0x23de82[_0xbf4e('0x2a')]);});return{'count':_0x504723[_0xbf4e('0x63')]['length'],'rows':_[_0xbf4e('0x27')](_0x504723[_0xbf4e('0x63')],function(_0x2a242b){return{'id':_0x2a242b['id'],'name':_0x2a242b[_0xbf4e('0x65')]>0x7?_0x2a242b[_0xbf4e('0x66')]:_0x2a242b[_0xbf4e('0x2a')],'custom':_0x2a242b['position']>0x7?!![]:![],'options':_0x2a242b[_0xbf4e('0x67')]?_0x2a242b[_0xbf4e('0x67')]:_0x2a242b['custom_field_options']?_0x2a242b[_0xbf4e('0x68')]:[]};})};}})[_0xbf4e('0x22')](respondWithResult(_0x42df5f,null))[_0xbf4e('0x3d')](function(_0xb6d122){var _0x19ec7e=_0x19c5b4[_0xbf4e('0x2d')][_0xbf4e('0x69')]?0x1f4:_0xb6d122[_0xbf4e('0x6a')]||0x1f4;logger[_0xbf4e('0x6b')]('getFields,\x20%s,\x20%s,\x20%s',_0xbf4e('0x6c'),_0x19ec7e,JSON[_0xbf4e('0x6d')](_0xb6d122));delete _0xb6d122[_0xbf4e('0x25')];if(_0x19ec7e===0x191){_0x19ec7e=0x190;}_0x42df5f['status'](_0x19ec7e)[_0xbf4e('0x6e')](_0x19c5b4[_0xbf4e('0x2d')]['test']?{'message':_0xbf4e('0x6f'),'statusCode':_0xb6d122[_0xbf4e('0x6a')]}:_0xb6d122);});};
\ No newline at end of file
+var _0x065e=['filter','merge','where','VIRTUAL','name','options','include','findAll','rows','catch','show','keys','intersection','includeAll','find','create','body','params','findOne','ZendeskConfiguration','rawAttributes','getConfigurations','nolimit','addConfiguration','channel','Descriptions','getDescriptions','ZendeskField','Subjects','getFields','username','password','token','authType','remoteUri','slice','substring','lastIndexOf','GET','format','%s/%s','ticket_fields','headers','%s:%s','toString','base64','Basic\x20%s','Sequelize','ValidationError','Unknown\x20authentication\x20type','subject','description','group','remove','includes','position','title','system_field_options','custom_field_options','statusCode','stringify','test','Wrong\x20credentials','eml-format','request-promise','moment','bluebird','path','sox','ejs','fs-extra','lodash','crypto','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','send','index','map','ZendeskAccount','type','key','model','query','filters','attributes','fields','length','hasOwnProperty','order','sort','pick'];(function(_0x33b4ae,_0x264f82){var _0x25d99c=function(_0xf8d3a3){while(--_0xf8d3a3){_0x33b4ae['push'](_0x33b4ae['shift']());}};_0x25d99c(++_0x264f82);}(_0x065e,0x1a7));var _0xe065=function(_0x26d3d5,_0x4067c1){_0x26d3d5=_0x26d3d5-0x0;var _0x2c1fb2=_0x065e[_0x26d3d5];return _0x2c1fb2;};'use strict';var emlformat=require(_0xe065('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xe065('0x1'));var moment=require(_0xe065('0x2'));var BPromise=require(_0xe065('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0xe065('0x4'));var sox=require(_0xe065('0x5'));var csv=require('to-csv');var ejs=require(_0xe065('0x6'));var fs=require('fs');var fs_extra=require(_0xe065('0x7'));var _=require(_0xe065('0x8'));var squel=require('squel');var crypto=require(_0xe065('0x9'));var jsforce=require('jsforce');var deskjs=require(_0xe065('0xa'));var toCsv=require(_0xe065('0xb'));var querystring=require(_0xe065('0xc'));var Papa=require(_0xe065('0xd'));var Redis=require(_0xe065('0xe'));var authService=require('../../components/auth/service');var qs=require(_0xe065('0xf'));var as=require(_0xe065('0x10'));var hardwareService=require(_0xe065('0x11'));var logger=require(_0xe065('0x12'))(_0xe065('0x13'));var utils=require(_0xe065('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xe065('0x15'))['db'];var integrations=require(_0xe065('0x16'));function respondWithStatusCode(_0xf5ab44,_0x5bd30f){_0x5bd30f=_0x5bd30f||0xcc;return function(_0x3aa3be){if(_0x3aa3be){return _0xf5ab44[_0xe065('0x17')](_0x5bd30f);}return _0xf5ab44[_0xe065('0x18')](_0x5bd30f)[_0xe065('0x19')]();};}function respondWithResult(_0x29297b,_0x541985){_0x541985=_0x541985||0xc8;return function(_0x3d3557){if(_0x3d3557){return _0x29297b[_0xe065('0x18')](_0x541985)[_0xe065('0x1a')](_0x3d3557);}};}function respondWithFilteredResult(_0xc5ef4f,_0x434e07){return function(_0x352206){if(_0x352206){var _0x2e5feb=typeof _0x434e07['offset']===_0xe065('0x1b')&&typeof _0x434e07[_0xe065('0x1c')]==='undefined';var _0x2bfec0=_0x352206[_0xe065('0x1d')];var _0x397f05=_0x2e5feb?0x0:_0x434e07[_0xe065('0x1e')];var _0x1e7177=_0x2e5feb?_0x352206[_0xe065('0x1d')]:_0x434e07[_0xe065('0x1e')]+_0x434e07['limit'];var _0x45479e;if(_0x1e7177>=_0x2bfec0){_0x1e7177=_0x2bfec0;_0x45479e=0xc8;}else{_0x45479e=0xce;}_0xc5ef4f['status'](_0x45479e);return _0xc5ef4f[_0xe065('0x1f')](_0xe065('0x20'),_0x397f05+'-'+_0x1e7177+'/'+_0x2bfec0)['json'](_0x352206);}return null;};}function patchUpdates(_0x1c6567){return function(_0x587d47){try{jsonpatch[_0xe065('0x21')](_0x587d47,_0x1c6567,!![]);}catch(_0x5fe80){return BPromise[_0xe065('0x22')](_0x5fe80);}return _0x587d47[_0xe065('0x23')]();};}function saveUpdates(_0x3ecd13,_0x105cb2){return function(_0x22a0cb){if(_0x22a0cb){return _0x22a0cb[_0xe065('0x24')](_0x3ecd13)[_0xe065('0x25')](function(_0x5081a3){return _0x5081a3;});}return null;};}function removeEntity(_0x7208af,_0x43b712){return function(_0x44ec95){if(_0x44ec95){return _0x44ec95[_0xe065('0x26')]()['then'](function(){_0x7208af['status'](0xcc)[_0xe065('0x19')]();});}};}function handleEntityNotFound(_0x530dc0,_0x14e6b6){return function(_0x27e669){if(!_0x27e669){_0x530dc0[_0xe065('0x17')](0x194);}return _0x27e669;};}function handleError(_0x15b598,_0x418731){_0x418731=_0x418731||0x1f4;return function(_0x3ec154){logger[_0xe065('0x27')](_0x3ec154[_0xe065('0x28')]);if(_0x3ec154['name']){delete _0x3ec154['name'];}_0x15b598[_0xe065('0x18')](_0x418731)[_0xe065('0x29')](_0x3ec154);};}exports[_0xe065('0x2a')]=function(_0x441e96,_0x5b1220){var _0x23f573={},_0x55ecaa={},_0x522420={'count':0x0,'rows':[]};var _0x182743=_[_0xe065('0x2b')](db[_0xe065('0x2c')]['rawAttributes'],function(_0x883747){return{'name':_0x883747['fieldName'],'type':_0x883747[_0xe065('0x2d')][_0xe065('0x2e')]};});_0x55ecaa[_0xe065('0x2f')]=_[_0xe065('0x2b')](_0x182743,'name');_0x55ecaa[_0xe065('0x30')]=_['keys'](_0x441e96[_0xe065('0x30')]);_0x55ecaa[_0xe065('0x31')]=_['intersection'](_0x55ecaa[_0xe065('0x2f')],_0x55ecaa['query']);_0x23f573[_0xe065('0x32')]=_['intersection'](_0x55ecaa[_0xe065('0x2f')],qs[_0xe065('0x33')](_0x441e96[_0xe065('0x30')][_0xe065('0x33')]));_0x23f573['attributes']=_0x23f573[_0xe065('0x32')][_0xe065('0x34')]?_0x23f573[_0xe065('0x32')]:_0x55ecaa[_0xe065('0x2f')];if(!_0x441e96[_0xe065('0x30')][_0xe065('0x35')]('nolimit')){_0x23f573[_0xe065('0x1c')]=qs[_0xe065('0x1c')](_0x441e96['query'][_0xe065('0x1c')]);_0x23f573[_0xe065('0x1e')]=qs[_0xe065('0x1e')](_0x441e96[_0xe065('0x30')][_0xe065('0x1e')]);}_0x23f573[_0xe065('0x36')]=qs[_0xe065('0x37')](_0x441e96['query'][_0xe065('0x37')]);_0x23f573['where']=qs[_0xe065('0x31')](_[_0xe065('0x38')](_0x441e96[_0xe065('0x30')],_0x55ecaa[_0xe065('0x31')]),_0x182743);if(_0x441e96[_0xe065('0x30')][_0xe065('0x39')]){_0x23f573['where']=_[_0xe065('0x3a')](_0x23f573[_0xe065('0x3b')],{'$or':_[_0xe065('0x2b')](_0x182743,function(_0x4c6a77){if(_0x4c6a77[_0xe065('0x2d')]!==_0xe065('0x3c')){var _0x1b273d={};_0x1b273d[_0x4c6a77[_0xe065('0x3d')]]={'$like':'%'+_0x441e96[_0xe065('0x30')]['filter']+'%'};return _0x1b273d;}})});}_0x23f573=_[_0xe065('0x3a')]({},_0x23f573,_0x441e96[_0xe065('0x3e')]);var _0x5d4f19={'where':_0x23f573[_0xe065('0x3b')]};return db['ZendeskAccount'][_0xe065('0x1d')](_0x5d4f19)[_0xe065('0x25')](function(_0x4a3152){_0x522420[_0xe065('0x1d')]=_0x4a3152;if(_0x441e96[_0xe065('0x30')]['includeAll']){_0x23f573[_0xe065('0x3f')]=[{'all':!![]}];}return db[_0xe065('0x2c')][_0xe065('0x40')](_0x23f573);})[_0xe065('0x25')](function(_0x3a617c){_0x522420[_0xe065('0x41')]=_0x3a617c;return _0x522420;})[_0xe065('0x25')](respondWithFilteredResult(_0x5b1220,_0x23f573))[_0xe065('0x42')](handleError(_0x5b1220,null));};exports[_0xe065('0x43')]=function(_0x445738,_0x326493){var _0x4364c3={'raw':![],'where':{'id':_0x445738['params']['id']}},_0x137627={};_0x137627['model']=_[_0xe065('0x44')](db[_0xe065('0x2c')]['rawAttributes']);_0x137627[_0xe065('0x30')]=_[_0xe065('0x44')](_0x445738[_0xe065('0x30')]);_0x137627[_0xe065('0x31')]=_[_0xe065('0x45')](_0x137627[_0xe065('0x2f')],_0x137627[_0xe065('0x30')]);_0x4364c3[_0xe065('0x32')]=_[_0xe065('0x45')](_0x137627['model'],qs[_0xe065('0x33')](_0x445738[_0xe065('0x30')][_0xe065('0x33')]));_0x4364c3['attributes']=_0x4364c3[_0xe065('0x32')][_0xe065('0x34')]?_0x4364c3[_0xe065('0x32')]:_0x137627[_0xe065('0x2f')];if(_0x445738['query'][_0xe065('0x46')]){_0x4364c3[_0xe065('0x3f')]=[{'all':!![]}];}_0x4364c3=_[_0xe065('0x3a')]({},_0x4364c3,_0x445738[_0xe065('0x3e')]);return db[_0xe065('0x2c')][_0xe065('0x47')](_0x4364c3)[_0xe065('0x25')](handleEntityNotFound(_0x326493,null))['then'](respondWithResult(_0x326493,null))[_0xe065('0x42')](handleError(_0x326493,null));};exports[_0xe065('0x48')]=function(_0x335744,_0xe9f589){return db[_0xe065('0x2c')][_0xe065('0x48')](_0x335744[_0xe065('0x49')],{})['then'](respondWithResult(_0xe9f589,0xc9))[_0xe065('0x42')](handleError(_0xe9f589,null));};exports['update']=function(_0x45fe1f,_0x2d2e63){if(_0x45fe1f[_0xe065('0x49')]['id']){delete _0x45fe1f['body']['id'];}return db[_0xe065('0x2c')][_0xe065('0x47')]({'where':{'id':_0x45fe1f[_0xe065('0x4a')]['id']}})[_0xe065('0x25')](handleEntityNotFound(_0x2d2e63,null))[_0xe065('0x25')](saveUpdates(_0x45fe1f[_0xe065('0x49')],null))[_0xe065('0x25')](respondWithResult(_0x2d2e63,null))[_0xe065('0x42')](handleError(_0x2d2e63,null));};exports[_0xe065('0x26')]=function(_0x2ca55a,_0x3f91a2){return db[_0xe065('0x2c')][_0xe065('0x47')]({'where':{'id':_0x2ca55a['params']['id']}})['then'](handleEntityNotFound(_0x3f91a2,null))['then'](removeEntity(_0x3f91a2,null))[_0xe065('0x42')](handleError(_0x3f91a2,null));};exports['getConfigurations']=function(_0x105bf7,_0x2c5e42,_0x5a7a98){var _0x480aec={};var _0x45a60e={};var _0x20272a;var _0x5cce78;return db[_0xe065('0x2c')][_0xe065('0x4b')]({'where':{'id':_0x105bf7[_0xe065('0x4a')]['id']}})[_0xe065('0x25')](handleEntityNotFound(_0x2c5e42,null))[_0xe065('0x25')](function(_0x1ea568){if(_0x1ea568){_0x20272a=_0x1ea568;_0x45a60e[_0xe065('0x2f')]=_[_0xe065('0x44')](db[_0xe065('0x4c')][_0xe065('0x4d')]);_0x45a60e['query']=_[_0xe065('0x44')](_0x105bf7[_0xe065('0x30')]);_0x45a60e[_0xe065('0x31')]=_[_0xe065('0x45')](_0x45a60e['model'],_0x45a60e[_0xe065('0x30')]);_0x480aec[_0xe065('0x32')]=_[_0xe065('0x45')](_0x45a60e[_0xe065('0x2f')],qs['fields'](_0x105bf7[_0xe065('0x30')][_0xe065('0x33')]));_0x480aec[_0xe065('0x32')]=_0x480aec['attributes'][_0xe065('0x34')]?_0x480aec[_0xe065('0x32')]:_0x45a60e[_0xe065('0x2f')];_0x480aec[_0xe065('0x36')]=qs[_0xe065('0x37')](_0x105bf7[_0xe065('0x30')][_0xe065('0x37')]);_0x480aec[_0xe065('0x3b')]=qs[_0xe065('0x31')](_['pick'](_0x105bf7[_0xe065('0x30')],_0x45a60e['filters']));if(_0x105bf7[_0xe065('0x30')][_0xe065('0x39')]){_0x480aec[_0xe065('0x3b')]=_['merge'](_0x480aec['where'],{'$or':_['map'](_0x480aec[_0xe065('0x32')],function(_0x380664){var _0x82a39f={};_0x82a39f[_0x380664]={'$like':'%'+_0x105bf7[_0xe065('0x30')][_0xe065('0x39')]+'%'};return _0x82a39f;})});}_0x480aec=_[_0xe065('0x3a')]({},_0x480aec,_0x105bf7[_0xe065('0x3e')]);return _0x20272a[_0xe065('0x4e')](_0x480aec);}})[_0xe065('0x25')](function(_0x3169fa){if(_0x3169fa){_0x5cce78=_0x3169fa[_0xe065('0x34')];if(!_0x105bf7['query']['hasOwnProperty'](_0xe065('0x4f'))){_0x480aec[_0xe065('0x1c')]=qs['limit'](_0x105bf7[_0xe065('0x30')]['limit']);_0x480aec['offset']=qs[_0xe065('0x1e')](_0x105bf7[_0xe065('0x30')][_0xe065('0x1e')]);}return _0x20272a[_0xe065('0x4e')](_0x480aec);}})[_0xe065('0x25')](function(_0x817baf){if(_0x817baf){return _0x817baf?{'count':_0x5cce78,'rows':_0x817baf}:null;}})[_0xe065('0x25')](respondWithResult(_0x2c5e42,null))['catch'](handleError(_0x2c5e42,null));};exports[_0xe065('0x50')]=function(_0x265c5e,_0xaef095,_0xb3591e){if(_0x265c5e[_0xe065('0x49')]['id']){delete _0x265c5e['body']['id'];}return db[_0xe065('0x2c')][_0xe065('0x4b')]({'where':{'id':_0x265c5e[_0xe065('0x4a')]['id']}})[_0xe065('0x25')](handleEntityNotFound(_0xaef095,null))[_0xe065('0x25')](function(_0xfce2e){if(_0xfce2e){_0x265c5e['body']['AccountId']=_0xfce2e['id'];_0x265c5e['body']['Subjects']=integrations['getSubjects'](_0x265c5e[_0xe065('0x49')][_0xe065('0x51')],_0x265c5e[_0xe065('0x49')][_0xe065('0x2d')]);_0x265c5e[_0xe065('0x49')][_0xe065('0x52')]=integrations[_0xe065('0x53')](_0x265c5e[_0xe065('0x49')]['channel'],_0x265c5e['body'][_0xe065('0x2d')]);return db[_0xe065('0x4c')][_0xe065('0x48')](_0x265c5e['body'],{'include':[{'model':db[_0xe065('0x54')],'as':_0xe065('0x55')},{'model':db[_0xe065('0x54')],'as':_0xe065('0x52')}]});}return null;})[_0xe065('0x25')](respondWithResult(_0xaef095,null))[_0xe065('0x42')](handleError(_0xaef095,null));};exports[_0xe065('0x56')]=function(_0x199ca3,_0x27863d,_0xecef2){var _0x213feb='';return db[_0xe065('0x2c')][_0xe065('0x4b')]({'where':{'id':_0x199ca3[_0xe065('0x4a')]['id']},'attributes':['id',_0xe065('0x57'),_0xe065('0x58'),_0xe065('0x59'),_0xe065('0x5a'),'remoteUri']})[_0xe065('0x25')](handleEntityNotFound(_0x27863d,null))[_0xe065('0x25')](function(_0x233a43){if(_0x233a43){_0x213feb=_0x233a43[_0xe065('0x5b')];var _0x36b88d=_0x213feb[_0xe065('0x5c')](-0x1);if(_0x36b88d==='/'){_0x213feb=_0x213feb[_0xe065('0x5d')](0x0,_0x213feb[_0xe065('0x5e')](_0x36b88d));}var _0x3364c7={'method':_0xe065('0x5f'),'uri':util[_0xe065('0x60')](_0xe065('0x61'),_0x213feb,_0xe065('0x62')),'json':!![]};switch(_0x233a43[_0xe065('0x5a')]){case _0xe065('0x58'):_0x3364c7[_0xe065('0x63')]={'Authorization':util[_0xe065('0x60')]('Basic\x20%s',new Buffer(util[_0xe065('0x60')](_0xe065('0x64'),_0x233a43[_0xe065('0x57')],_0x233a43[_0xe065('0x58')]))[_0xe065('0x65')](_0xe065('0x66')))};break;case _0xe065('0x59'):_0x3364c7[_0xe065('0x63')]={'Authorization':util[_0xe065('0x60')](_0xe065('0x67'),new Buffer(util['format']('%s/token:%s',_0x233a43[_0xe065('0x57')],_0x233a43['token']))[_0xe065('0x65')]('base64'))};break;default:throw new db[(_0xe065('0x68'))][(_0xe065('0x69'))](_0xe065('0x6a'));}return rp(_0x3364c7);}})[_0xe065('0x25')](function(_0x42cb90){if(_0x42cb90){var _0x3318d4=[_0xe065('0x6b'),_0xe065('0x6c'),_0xe065('0x6d'),'assignee'];_[_0xe065('0x6e')](_0x42cb90[_0xe065('0x62')],function(_0x134d0a){return _0x3318d4[_0xe065('0x6f')](_0x134d0a['type']);});return{'count':_0x42cb90[_0xe065('0x62')][_0xe065('0x34')],'rows':_[_0xe065('0x2b')](_0x42cb90['ticket_fields'],function(_0x200d25){return{'id':_0x200d25['id'],'name':_0x200d25[_0xe065('0x70')]>0x7?_0x200d25[_0xe065('0x71')]:_0x200d25['type'],'custom':_0x200d25[_0xe065('0x70')]>0x7?!![]:![],'options':_0x200d25[_0xe065('0x72')]?_0x200d25['system_field_options']:_0x200d25['custom_field_options']?_0x200d25[_0xe065('0x73')]:[]};})};}})[_0xe065('0x25')](respondWithResult(_0x27863d,null))[_0xe065('0x42')](function(_0x3f3878){var _0x260588=_0x199ca3['query']['test']?0x1f4:_0x3f3878[_0xe065('0x74')]||0x1f4;logger[_0xe065('0x27')]('getFields,\x20%s,\x20%s,\x20%s',_0xe065('0x56'),_0x260588,JSON[_0xe065('0x75')](_0x3f3878));delete _0x3f3878[_0xe065('0x3d')];if(_0x260588===0x191){_0x260588=0x190;}_0x27863d[_0xe065('0x18')](_0x260588)[_0xe065('0x29')](_0x199ca3[_0xe065('0x30')][_0xe065('0x76')]?{'message':_0xe065('0x77'),'statusCode':_0x3f3878[_0xe065('0x74')]}:_0x3f3878);});};
\ No newline at end of file
index 4425cc8..e2e2981 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf4e=['ZendeskAccount','int_zendesk_accounts','lodash','../../config/logger','api','moment','bluebird','path','rimraf','./intZendeskAccount.attributes','../../components/integrations/configuration'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xcf4e,0x1ba));var _0xecf4=function(_0x473c40,_0x29eb17){_0x473c40=_0x473c40-0x0;var _0x217587=_0xcf4e[_0x473c40];return _0x217587;};'use strict';var _=require(_0xecf4('0x0'));var util=require('util');var logger=require(_0xecf4('0x1'))(_0xecf4('0x2'));var moment=require(_0xecf4('0x3'));var BPromise=require(_0xecf4('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xecf4('0x5'));var rimraf=require(_0xecf4('0x6'));var config=require('../../config/environment');var attributes=require(_0xecf4('0x7'));var integrations=require(_0xecf4('0x8'));module['exports']=function(_0x16de97,_0x2c45f3){return _0x16de97['define'](_0xecf4('0x9'),attributes,{'tableName':_0xecf4('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xd495=['bluebird','request-promise','path','rimraf','./intZendeskAccount.attributes','define','ZendeskAccount','../../config/logger','api','moment'];(function(_0x3054be,_0x1bdc8b){var _0x3df150=function(_0x56cfbf){while(--_0x56cfbf){_0x3054be['push'](_0x3054be['shift']());}};_0x3df150(++_0x1bdc8b);}(_0xd495,0xe3));var _0x5d49=function(_0x3fc97b,_0x20ca29){_0x3fc97b=_0x3fc97b-0x0;var _0x3a0c82=_0xd495[_0x3fc97b];return _0x3a0c82;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x5d49('0x0'))(_0x5d49('0x1'));var moment=require(_0x5d49('0x2'));var BPromise=require(_0x5d49('0x3'));var rp=require(_0x5d49('0x4'));var fs=require('fs');var path=require(_0x5d49('0x5'));var rimraf=require(_0x5d49('0x6'));var config=require('../../config/environment');var attributes=require(_0x5d49('0x7'));var integrations=require('../../components/integrations/configuration');module['exports']=function(_0x455b16,_0x23c7b9){return _0x455b16[_0x5d49('0x8')](_0x5d49('0x9'),attributes,{'tableName':'int_zendesk_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 08b4dc3..4e280a6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc69b=['raw','attributes','limit','include','map','model','ShowZendeskAccount','ZendeskAccount','find','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','request','then','info','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','ZendeskAccount,\x20%s,\x20%s','message','result','catch','GetZendeskAccount','findAll','options'];(function(_0x3def18,_0x53aa85){var _0x5f0f8a=function(_0x287429){while(--_0x287429){_0x3def18['push'](_0x3def18['shift']());}};_0x5f0f8a(++_0x53aa85);}(_0xc69b,0xcf));var _0xbc69=function(_0x40bffc,_0x3a45d7){_0x40bffc=_0x40bffc-0x0;var _0x3007e9=_0xc69b[_0x40bffc];return _0x3007e9;};'use strict';var _=require(_0xbc69('0x0'));var util=require('util');var moment=require(_0xbc69('0x1'));var BPromise=require('bluebird');var rs=require(_0xbc69('0x2'));var fs=require('fs');var Redis=require(_0xbc69('0x3'));var db=require(_0xbc69('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xbc69('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xbc69('0x6'));var client=jayson[_0xbc69('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x463ff1,_0x135bda,_0x3ae5f3){return new BPromise(function(_0x507863,_0xf39d7b){return client[_0xbc69('0x8')](_0x463ff1,_0x3ae5f3)[_0xbc69('0x9')](function(_0x13d7b1){logger[_0xbc69('0xa')]('ZendeskAccount,\x20%s,\x20%s',_0x135bda,_0xbc69('0xb'));logger[_0xbc69('0xc')](_0xbc69('0xd'),_0x135bda,_0xbc69('0xb'),JSON[_0xbc69('0xe')](_0x13d7b1));if(_0x13d7b1['error']){if(_0x13d7b1[_0xbc69('0xf')][_0xbc69('0x10')]===0x1f4){logger[_0xbc69('0xf')](_0xbc69('0x11'),_0x135bda,_0x13d7b1['error'][_0xbc69('0x12')]);return _0xf39d7b(_0x13d7b1['error'][_0xbc69('0x12')]);}logger['error'](_0xbc69('0x11'),_0x135bda,_0x13d7b1[_0xbc69('0xf')]['message']);return _0x507863(_0x13d7b1['error'][_0xbc69('0x12')]);}else{logger[_0xbc69('0xa')](_0xbc69('0x11'),_0x135bda,_0xbc69('0xb'));_0x507863(_0x13d7b1[_0xbc69('0x13')][_0xbc69('0x12')]);}})[_0xbc69('0x14')](function(_0xe97147){logger[_0xbc69('0xf')]('ZendeskAccount,\x20%s,\x20%s',_0x135bda,_0xe97147);_0xf39d7b(_0xe97147);});});}exports[_0xbc69('0x15')]=function(_0x3c941e){var _0x3f7327=this;return new Promise(function(_0x5495d7,_0x475a78){return db['ZendeskAccount'][_0xbc69('0x16')]({'raw':_0x3c941e[_0xbc69('0x17')]?_0x3c941e[_0xbc69('0x17')][_0xbc69('0x18')]===undefined?!![]:![]:!![],'where':_0x3c941e[_0xbc69('0x17')]?_0x3c941e[_0xbc69('0x17')]['where']||null:null,'attributes':_0x3c941e[_0xbc69('0x17')]?_0x3c941e[_0xbc69('0x17')][_0xbc69('0x19')]||null:null,'limit':_0x3c941e[_0xbc69('0x17')]?_0x3c941e[_0xbc69('0x17')][_0xbc69('0x1a')]||null:null,'include':_0x3c941e[_0xbc69('0x17')]?_0x3c941e[_0xbc69('0x17')][_0xbc69('0x1b')]?_[_0xbc69('0x1c')](_0x3c941e[_0xbc69('0x17')]['include'],function(_0x509c3e){return{'model':db[_0x509c3e[_0xbc69('0x1d')]],'as':_0x509c3e['as'],'attributes':_0x509c3e['attributes'],'include':_0x509c3e[_0xbc69('0x1b')]?_['map'](_0x509c3e[_0xbc69('0x1b')],function(_0x1e179d){return{'model':db[_0x1e179d['model']],'as':_0x1e179d['as'],'attributes':_0x1e179d[_0xbc69('0x19')],'include':_0x1e179d[_0xbc69('0x1b')]?_[_0xbc69('0x1c')](_0x1e179d['include'],function(_0x2a7ee5){return{'model':db[_0x2a7ee5['model']],'as':_0x2a7ee5['as'],'attributes':_0x2a7ee5[_0xbc69('0x19')]};}):[]};}):[]};}):[]:[]})[_0xbc69('0x9')](function(_0x921665){logger['info'](_0xbc69('0x15'),_0x3c941e);logger[_0xbc69('0xc')]('GetZendeskAccount',_0x3c941e,JSON[_0xbc69('0xe')](_0x921665));_0x5495d7(_0x921665);})[_0xbc69('0x14')](function(_0x3f2e3b){logger[_0xbc69('0xf')](_0xbc69('0x15'),_0x3f2e3b['message'],_0x3c941e);_0x475a78(_0x3f7327['error'](0x1f4,_0x3f2e3b[_0xbc69('0x12')]));});});};exports[_0xbc69('0x1e')]=function(_0x6fab84){var _0x38d797=this;return new Promise(function(_0x22bdfe,_0x3f3973){return db[_0xbc69('0x1f')][_0xbc69('0x20')]({'raw':_0x6fab84[_0xbc69('0x17')]?_0x6fab84[_0xbc69('0x17')][_0xbc69('0x18')]===undefined?!![]:![]:!![],'where':_0x6fab84['options']?_0x6fab84[_0xbc69('0x17')]['where']||null:null,'attributes':_0x6fab84['options']?_0x6fab84[_0xbc69('0x17')][_0xbc69('0x19')]||null:null,'include':_0x6fab84[_0xbc69('0x17')]?_0x6fab84['options']['include']?_[_0xbc69('0x1c')](_0x6fab84[_0xbc69('0x17')][_0xbc69('0x1b')],function(_0x580331){return{'model':db[_0x580331[_0xbc69('0x1d')]],'as':_0x580331['as'],'attributes':_0x580331[_0xbc69('0x19')],'include':_0x580331[_0xbc69('0x1b')]?_[_0xbc69('0x1c')](_0x580331[_0xbc69('0x1b')],function(_0x3b2818){return{'model':db[_0x3b2818['model']],'as':_0x3b2818['as'],'attributes':_0x3b2818[_0xbc69('0x19')],'include':_0x3b2818[_0xbc69('0x1b')]?_[_0xbc69('0x1c')](_0x3b2818['include'],function(_0xf71a39){return{'model':db[_0xf71a39[_0xbc69('0x1d')]],'as':_0xf71a39['as'],'attributes':_0xf71a39[_0xbc69('0x19')]};}):[]};}):[]};}):[]:[]})[_0xbc69('0x9')](function(_0xfb7d8d){logger['info'](_0xbc69('0x1e'),_0x6fab84);logger[_0xbc69('0xc')](_0xbc69('0x1e'),_0x6fab84,JSON[_0xbc69('0xe')](_0xfb7d8d));_0x22bdfe(_0xfb7d8d);})[_0xbc69('0x14')](function(_0x546e6e){logger['error'](_0xbc69('0x1e'),_0x546e6e[_0xbc69('0x12')],_0x6fab84);_0x3f3973(_0x38d797[_0xbc69('0xf')](0x1f4,_0x546e6e['message']));});});};
\ No newline at end of file
+var _0x60f0=['lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ZendeskAccount,\x20%s,\x20%s','request\x20sent','debug','ZendeskAccount,\x20%s,\x20%s,\x20%s','error','code','message','GetZendeskAccount','options','raw','where','attributes','limit','map','include','model','ShowZendeskAccount','ZendeskAccount','stringify','catch'];(function(_0x40220a,_0x22feb1){var _0x3903cc=function(_0x33a296){while(--_0x33a296){_0x40220a['push'](_0x40220a['shift']());}};_0x3903cc(++_0x22feb1);}(_0x60f0,0x128));var _0x060f=function(_0x36f80b,_0xf0af3d){_0x36f80b=_0x36f80b-0x0;var _0x297f03=_0x60f0[_0x36f80b];return _0x297f03;};'use strict';var _=require(_0x060f('0x0'));var util=require(_0x060f('0x1'));var moment=require(_0x060f('0x2'));var BPromise=require(_0x060f('0x3'));var rs=require(_0x060f('0x4'));var fs=require('fs');var Redis=require(_0x060f('0x5'));var db=require(_0x060f('0x6'))['db'];var utils=require(_0x060f('0x7'));var logger=require(_0x060f('0x8'))(_0x060f('0x9'));var config=require(_0x060f('0xa'));var jayson=require(_0x060f('0xb'));var client=jayson[_0x060f('0xc')][_0x060f('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x3b9185,_0x42ce50,_0x1c183b){return new BPromise(function(_0x1c7c06,_0x252b93){return client[_0x060f('0xe')](_0x3b9185,_0x1c183b)[_0x060f('0xf')](function(_0x206489){logger[_0x060f('0x10')](_0x060f('0x11'),_0x42ce50,_0x060f('0x12'));logger[_0x060f('0x13')](_0x060f('0x14'),_0x42ce50,_0x060f('0x12'),JSON['stringify'](_0x206489));if(_0x206489[_0x060f('0x15')]){if(_0x206489[_0x060f('0x15')][_0x060f('0x16')]===0x1f4){logger[_0x060f('0x15')](_0x060f('0x11'),_0x42ce50,_0x206489[_0x060f('0x15')][_0x060f('0x17')]);return _0x252b93(_0x206489[_0x060f('0x15')][_0x060f('0x17')]);}logger[_0x060f('0x15')]('ZendeskAccount,\x20%s,\x20%s',_0x42ce50,_0x206489[_0x060f('0x15')]['message']);return _0x1c7c06(_0x206489[_0x060f('0x15')]['message']);}else{logger['info'](_0x060f('0x11'),_0x42ce50,_0x060f('0x12'));_0x1c7c06(_0x206489['result']['message']);}})['catch'](function(_0x838d7b){logger[_0x060f('0x15')](_0x060f('0x11'),_0x42ce50,_0x838d7b);_0x252b93(_0x838d7b);});});}exports[_0x060f('0x18')]=function(_0x293a06){var _0x2c65d7=this;return new Promise(function(_0x26c658,_0x22bc73){return db['ZendeskAccount']['findAll']({'raw':_0x293a06[_0x060f('0x19')]?_0x293a06[_0x060f('0x19')][_0x060f('0x1a')]===undefined?!![]:![]:!![],'where':_0x293a06[_0x060f('0x19')]?_0x293a06[_0x060f('0x19')][_0x060f('0x1b')]||null:null,'attributes':_0x293a06[_0x060f('0x19')]?_0x293a06[_0x060f('0x19')][_0x060f('0x1c')]||null:null,'limit':_0x293a06['options']?_0x293a06[_0x060f('0x19')][_0x060f('0x1d')]||null:null,'include':_0x293a06[_0x060f('0x19')]?_0x293a06[_0x060f('0x19')]['include']?_[_0x060f('0x1e')](_0x293a06['options'][_0x060f('0x1f')],function(_0x1986c7){return{'model':db[_0x1986c7['model']],'as':_0x1986c7['as'],'attributes':_0x1986c7[_0x060f('0x1c')],'include':_0x1986c7[_0x060f('0x1f')]?_[_0x060f('0x1e')](_0x1986c7[_0x060f('0x1f')],function(_0x5873de){return{'model':db[_0x5873de[_0x060f('0x20')]],'as':_0x5873de['as'],'attributes':_0x5873de[_0x060f('0x1c')],'include':_0x5873de[_0x060f('0x1f')]?_['map'](_0x5873de['include'],function(_0x2cdbf4){return{'model':db[_0x2cdbf4[_0x060f('0x20')]],'as':_0x2cdbf4['as'],'attributes':_0x2cdbf4[_0x060f('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x177d63){logger[_0x060f('0x10')](_0x060f('0x18'),_0x293a06);logger[_0x060f('0x13')](_0x060f('0x18'),_0x293a06,JSON['stringify'](_0x177d63));_0x26c658(_0x177d63);})['catch'](function(_0x4fc638){logger[_0x060f('0x15')](_0x060f('0x18'),_0x4fc638[_0x060f('0x17')],_0x293a06);_0x22bc73(_0x2c65d7[_0x060f('0x15')](0x1f4,_0x4fc638[_0x060f('0x17')]));});});};exports[_0x060f('0x21')]=function(_0x37f3ea){var _0x227de8=this;return new Promise(function(_0x31375d,_0x178943){return db[_0x060f('0x22')]['find']({'raw':_0x37f3ea[_0x060f('0x19')]?_0x37f3ea[_0x060f('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x37f3ea[_0x060f('0x19')]?_0x37f3ea['options'][_0x060f('0x1b')]||null:null,'attributes':_0x37f3ea['options']?_0x37f3ea[_0x060f('0x19')]['attributes']||null:null,'include':_0x37f3ea[_0x060f('0x19')]?_0x37f3ea[_0x060f('0x19')][_0x060f('0x1f')]?_[_0x060f('0x1e')](_0x37f3ea[_0x060f('0x19')]['include'],function(_0x342a9d){return{'model':db[_0x342a9d[_0x060f('0x20')]],'as':_0x342a9d['as'],'attributes':_0x342a9d[_0x060f('0x1c')],'include':_0x342a9d[_0x060f('0x1f')]?_['map'](_0x342a9d[_0x060f('0x1f')],function(_0x2ded74){return{'model':db[_0x2ded74[_0x060f('0x20')]],'as':_0x2ded74['as'],'attributes':_0x2ded74[_0x060f('0x1c')],'include':_0x2ded74[_0x060f('0x1f')]?_[_0x060f('0x1e')](_0x2ded74[_0x060f('0x1f')],function(_0x3caf05){return{'model':db[_0x3caf05[_0x060f('0x20')]],'as':_0x3caf05['as'],'attributes':_0x3caf05[_0x060f('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x060f('0xf')](function(_0x24df36){logger[_0x060f('0x10')](_0x060f('0x21'),_0x37f3ea);logger[_0x060f('0x13')](_0x060f('0x21'),_0x37f3ea,JSON[_0x060f('0x23')](_0x24df36));_0x31375d(_0x24df36);})[_0x060f('0x24')](function(_0x58ad44){logger['error'](_0x060f('0x21'),_0x58ad44[_0x060f('0x17')],_0x37f3ea);_0x178943(_0x227de8[_0x060f('0x15')](0x1f4,_0x58ad44['message']));});});};
\ No newline at end of file
index 7c4e2ea..f6092d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xea28=['Router','fs-extra','../../components/auth/service','../../config/environment','./intZendeskConfiguration.controller','get','index','/:id','isAuthenticated','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','/:id/tags','getTags','post','setTags','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express'];(function(_0x14135c,_0x35bd89){var _0x2f6f6e=function(_0x4cdd15){while(--_0x4cdd15){_0x14135c['push'](_0x14135c['shift']());}};_0x2f6f6e(++_0x35bd89);}(_0xea28,0x13a));var _0x8ea2=function(_0x5d77a,_0x248546){_0x5d77a=_0x5d77a-0x0;var _0x4ef997=_0xea28[_0x5d77a];return _0x4ef997;};'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['getSubjects']);router['get'](_0x8ea2('0x12'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x13')]);router['get'](_0x8ea2('0x14'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x15')]);router[_0x8ea2('0x16')]('/',auth[_0x8ea2('0xd')](),controller['create']);router[_0x8ea2('0x16')]('/:id/tags',auth['isAuthenticated'](),controller[_0x8ea2('0x17')]);router[_0x8ea2('0x18')](_0x8ea2('0xc'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x19')]);router[_0x8ea2('0x1a')](_0x8ea2('0xc'),auth[_0x8ea2('0xd')](),controller[_0x8ea2('0x1b')]);module[_0x8ea2('0x1c')]=router;
\ No newline at end of file
+var _0xcb91=['get','index','isAuthenticated','show','/:id/fields','/:id/subjects','getSubjects','getDescriptions','/:id/tags','create','post','put','/:id','update','delete','destroy','exports','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','./intZendeskConfiguration.controller'];(function(_0x5e3fb7,_0x4f0c05){var _0x3c9228=function(_0x8636ae){while(--_0x8636ae){_0x5e3fb7['push'](_0x5e3fb7['shift']());}};_0x3c9228(++_0x4f0c05);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x236c89,_0xd76ba9){_0x236c89=_0x236c89-0x0;var _0x3b2a15=_0xcb91[_0x236c89];return _0x3b2a15;};'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');var controller=require(_0x1cb9('0x6'));router[_0x1cb9('0x7')]('/',auth['isAuthenticated'](),controller[_0x1cb9('0x8')]);router[_0x1cb9('0x7')]('/:id',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xa')]);router['get'](_0x1cb9('0xb'),auth['isAuthenticated'](),controller['getFields']);router[_0x1cb9('0x7')](_0x1cb9('0xc'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xd')]);router[_0x1cb9('0x7')]('/:id/descriptions',auth[_0x1cb9('0x9')](),controller[_0x1cb9('0xe')]);router[_0x1cb9('0x7')](_0x1cb9('0xf'),auth[_0x1cb9('0x9')](),controller['getTags']);router['post']('/',auth['isAuthenticated'](),controller[_0x1cb9('0x10')]);router[_0x1cb9('0x11')](_0x1cb9('0xf'),auth[_0x1cb9('0x9')](),controller['setTags']);router[_0x1cb9('0x12')](_0x1cb9('0x13'),auth[_0x1cb9('0x9')](),controller[_0x1cb9('0x14')]);router[_0x1cb9('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x1cb9('0x16')]);module[_0x1cb9('0x17')]=router;
\ No newline at end of file
index 5bd05d4..74244f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfa9=['sequelize','exports'];(function(_0x300281,_0x396f6a){var _0x5007eb=function(_0x558fc4){while(--_0x558fc4){_0x300281['push'](_0x300281['shift']());}};_0x5007eb(++_0x396f6a);}(_0xbfa9,0x1b2));var _0x9bfa=function(_0x38ee8c,_0x41ae11){_0x38ee8c=_0x38ee8c-0x0;var _0x95d48c=_0xbfa9[_0x38ee8c];return _0x95d48c;};'use strict';var Sequelize=require(_0x9bfa('0x0'));module[_0x9bfa('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x2307=['STRING','exports'];(function(_0x190a73,_0x23e3b7){var _0x45971d=function(_0x2a8309){while(--_0x2a8309){_0x190a73['push'](_0x190a73['shift']());}};_0x45971d(++_0x23e3b7);}(_0x2307,0x1f3));var _0x7230=function(_0x4be578,_0x30a6e0){_0x4be578=_0x4be578-0x0;var _0x4ee00c=_0x2307[_0x4be578];return _0x4ee00c;};'use strict';var Sequelize=require('sequelize');module[_0x7230('0x0')]={'name':{'type':Sequelize[_0x7230('0x1')]},'description':{'type':Sequelize[_0x7230('0x1')]}};
\ No newline at end of file
index 7aed354..34e4413 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3910=['intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','merge','type','options','includeAll','include','findAll','catch','show','params','ZendeskConfiguration','create','body','find','getFields','findOne','ZendeskField','getSubjects','getDescriptions','getTags','setTags','ids','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','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','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','then','destroy','stack','name','index','rawAttributes','fieldName','key','model','map','keys','query'];(function(_0x3fd1bd,_0x2e9deb){var _0x3a6b1c=function(_0x51caf3){while(--_0x51caf3){_0x3fd1bd['push'](_0x3fd1bd['shift']());}};_0x3a6b1c(++_0x2e9deb);}(_0x3910,0xcd));var _0x0391=function(_0x24acf3,_0x1e2961){_0x24acf3=_0x24acf3-0x0;var _0x4f38dc=_0x3910[_0x24acf3];return _0x4f38dc;};'use strict';var emlformat=require(_0x0391('0x0'));var rimraf=require(_0x0391('0x1'));var zipdir=require(_0x0391('0x2'));var jsonpatch=require(_0x0391('0x3'));var rp=require(_0x0391('0x4'));var moment=require(_0x0391('0x5'));var BPromise=require(_0x0391('0x6'));var Mustache=require(_0x0391('0x7'));var util=require('util');var path=require(_0x0391('0x8'));var sox=require(_0x0391('0x9'));var csv=require(_0x0391('0xa'));var ejs=require(_0x0391('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0391('0xc'));var squel=require(_0x0391('0xd'));var crypto=require(_0x0391('0xe'));var jsforce=require(_0x0391('0xf'));var deskjs=require(_0x0391('0x10'));var toCsv=require(_0x0391('0xa'));var querystring=require(_0x0391('0x11'));var Papa=require(_0x0391('0x12'));var Redis=require(_0x0391('0x13'));var authService=require(_0x0391('0x14'));var qs=require(_0x0391('0x15'));var as=require(_0x0391('0x16'));var hardwareService=require(_0x0391('0x17'));var logger=require('../../config/logger')(_0x0391('0x18'));var utils=require(_0x0391('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x0391('0x1a'));var db=require(_0x0391('0x1b'))['db'];function respondWithStatusCode(_0x2072c7,_0x458cc3){_0x458cc3=_0x458cc3||0xcc;return function(_0x47213f){if(_0x47213f){return _0x2072c7[_0x0391('0x1c')](_0x458cc3);}return _0x2072c7[_0x0391('0x1d')](_0x458cc3)[_0x0391('0x1e')]();};}function respondWithResult(_0x21f21d,_0x179a62){_0x179a62=_0x179a62||0xc8;return function(_0x10e74e){if(_0x10e74e){return _0x21f21d[_0x0391('0x1d')](_0x179a62)[_0x0391('0x1f')](_0x10e74e);}};}function respondWithFilteredResult(_0x34b7f2,_0x144ffe){return function(_0x59a1c3){if(_0x59a1c3){var _0x14db73=typeof _0x144ffe[_0x0391('0x20')]===_0x0391('0x21')&&typeof _0x144ffe[_0x0391('0x22')]===_0x0391('0x21');var _0x31c83d=_0x59a1c3['count'];var _0x45be28=_0x14db73?0x0:_0x144ffe['offset'];var _0x5200fe=_0x14db73?_0x59a1c3[_0x0391('0x23')]:_0x144ffe[_0x0391('0x20')]+_0x144ffe[_0x0391('0x22')];var _0x4f9bc9;if(_0x5200fe>=_0x31c83d){_0x5200fe=_0x31c83d;_0x4f9bc9=0xc8;}else{_0x4f9bc9=0xce;}_0x34b7f2[_0x0391('0x1d')](_0x4f9bc9);return _0x34b7f2['set'](_0x0391('0x24'),_0x45be28+'-'+_0x5200fe+'/'+_0x31c83d)[_0x0391('0x1f')](_0x59a1c3);}return null;};}function patchUpdates(_0x3b09ee){return function(_0x105bef){try{jsonpatch[_0x0391('0x25')](_0x105bef,_0x3b09ee,!![]);}catch(_0x1d9d17){return BPromise[_0x0391('0x26')](_0x1d9d17);}return _0x105bef[_0x0391('0x27')]();};}function saveUpdates(_0x925b37,_0x37d81c){return function(_0x44ade9){if(_0x44ade9){return _0x44ade9[_0x0391('0x28')](_0x925b37)[_0x0391('0x29')](function(_0x292538){return _0x292538;});}return null;};}function removeEntity(_0x341483,_0x5a937b){return function(_0x275e7a){if(_0x275e7a){return _0x275e7a[_0x0391('0x2a')]()[_0x0391('0x29')](function(){_0x341483[_0x0391('0x1d')](0xcc)[_0x0391('0x1e')]();});}};}function handleEntityNotFound(_0x1ba0f0,_0x36b3d5){return function(_0x234eb1){if(!_0x234eb1){_0x1ba0f0['sendStatus'](0x194);}return _0x234eb1;};}function handleError(_0x3ce15a,_0x3e771a){_0x3e771a=_0x3e771a||0x1f4;return function(_0x24bb6f){logger['error'](_0x24bb6f[_0x0391('0x2b')]);if(_0x24bb6f[_0x0391('0x2c')]){delete _0x24bb6f[_0x0391('0x2c')];}_0x3ce15a[_0x0391('0x1d')](_0x3e771a)['send'](_0x24bb6f);};}exports[_0x0391('0x2d')]=function(_0x1ee272,_0x55ee77){var _0x5b5d15={},_0x4aa91e={},_0x50b72d={'count':0x0,'rows':[]};var _0x5d6c3f=_['map'](db['ZendeskConfiguration'][_0x0391('0x2e')],function(_0x511eab){return{'name':_0x511eab[_0x0391('0x2f')],'type':_0x511eab['type'][_0x0391('0x30')]};});_0x4aa91e[_0x0391('0x31')]=_[_0x0391('0x32')](_0x5d6c3f,'name');_0x4aa91e['query']=_[_0x0391('0x33')](_0x1ee272[_0x0391('0x34')]);_0x4aa91e['filters']=_[_0x0391('0x35')](_0x4aa91e[_0x0391('0x31')],_0x4aa91e['query']);_0x5b5d15[_0x0391('0x36')]=_[_0x0391('0x35')](_0x4aa91e['model'],qs[_0x0391('0x37')](_0x1ee272['query'][_0x0391('0x37')]));_0x5b5d15[_0x0391('0x36')]=_0x5b5d15[_0x0391('0x36')][_0x0391('0x38')]?_0x5b5d15['attributes']:_0x4aa91e[_0x0391('0x31')];if(!_0x1ee272[_0x0391('0x34')][_0x0391('0x39')](_0x0391('0x3a'))){_0x5b5d15[_0x0391('0x22')]=qs['limit'](_0x1ee272['query']['limit']);_0x5b5d15['offset']=qs[_0x0391('0x20')](_0x1ee272[_0x0391('0x34')][_0x0391('0x20')]);}_0x5b5d15[_0x0391('0x3b')]=qs[_0x0391('0x3c')](_0x1ee272[_0x0391('0x34')][_0x0391('0x3c')]);_0x5b5d15[_0x0391('0x3d')]=qs[_0x0391('0x3e')](_[_0x0391('0x3f')](_0x1ee272[_0x0391('0x34')],_0x4aa91e[_0x0391('0x3e')]),_0x5d6c3f);if(_0x1ee272[_0x0391('0x34')][_0x0391('0x40')]){_0x5b5d15[_0x0391('0x3d')]=_[_0x0391('0x41')](_0x5b5d15[_0x0391('0x3d')],{'$or':_['map'](_0x5d6c3f,function(_0x3044be){if(_0x3044be[_0x0391('0x42')]!=='VIRTUAL'){var _0x505ee9={};_0x505ee9[_0x3044be['name']]={'$like':'%'+_0x1ee272[_0x0391('0x34')][_0x0391('0x40')]+'%'};return _0x505ee9;}})});}_0x5b5d15=_[_0x0391('0x41')]({},_0x5b5d15,_0x1ee272[_0x0391('0x43')]);var _0x1f8a16={'where':_0x5b5d15['where']};return db['ZendeskConfiguration'][_0x0391('0x23')](_0x1f8a16)[_0x0391('0x29')](function(_0x5b18df){_0x50b72d[_0x0391('0x23')]=_0x5b18df;if(_0x1ee272[_0x0391('0x34')][_0x0391('0x44')]){_0x5b5d15[_0x0391('0x45')]=[{'all':!![]}];}return db['ZendeskConfiguration'][_0x0391('0x46')](_0x5b5d15);})[_0x0391('0x29')](function(_0x38a6e5){_0x50b72d['rows']=_0x38a6e5;return _0x50b72d;})[_0x0391('0x29')](respondWithFilteredResult(_0x55ee77,_0x5b5d15))[_0x0391('0x47')](handleError(_0x55ee77,null));};exports[_0x0391('0x48')]=function(_0x3028cd,_0x5d0635){var _0x1511a2={'raw':![],'where':{'id':_0x3028cd[_0x0391('0x49')]['id']}},_0x281afa={};_0x281afa[_0x0391('0x31')]=_[_0x0391('0x33')](db[_0x0391('0x4a')][_0x0391('0x2e')]);_0x281afa[_0x0391('0x34')]=_[_0x0391('0x33')](_0x3028cd['query']);_0x281afa['filters']=_[_0x0391('0x35')](_0x281afa[_0x0391('0x31')],_0x281afa[_0x0391('0x34')]);_0x1511a2[_0x0391('0x36')]=_['intersection'](_0x281afa[_0x0391('0x31')],qs[_0x0391('0x37')](_0x3028cd[_0x0391('0x34')][_0x0391('0x37')]));_0x1511a2[_0x0391('0x36')]=_0x1511a2[_0x0391('0x36')][_0x0391('0x38')]?_0x1511a2[_0x0391('0x36')]:_0x281afa[_0x0391('0x31')];if(_0x3028cd[_0x0391('0x34')]['includeAll']){_0x1511a2[_0x0391('0x45')]=[{'all':!![]}];}_0x1511a2=_['merge']({},_0x1511a2,_0x3028cd[_0x0391('0x43')]);return db[_0x0391('0x4a')]['find'](_0x1511a2)[_0x0391('0x29')](handleEntityNotFound(_0x5d0635,null))[_0x0391('0x29')](respondWithResult(_0x5d0635,null))[_0x0391('0x47')](handleError(_0x5d0635,null));};exports[_0x0391('0x4b')]=function(_0x4cc06b,_0x49bdc1){return db[_0x0391('0x4a')][_0x0391('0x4b')](_0x4cc06b[_0x0391('0x4c')],{})['then'](respondWithResult(_0x49bdc1,0xc9))[_0x0391('0x47')](handleError(_0x49bdc1,null));};exports['update']=function(_0x1828fd,_0x58cfce){if(_0x1828fd[_0x0391('0x4c')]['id']){delete _0x1828fd[_0x0391('0x4c')]['id'];}return db['ZendeskConfiguration'][_0x0391('0x4d')]({'where':{'id':_0x1828fd[_0x0391('0x49')]['id']}})[_0x0391('0x29')](handleEntityNotFound(_0x58cfce,null))[_0x0391('0x29')](saveUpdates(_0x1828fd[_0x0391('0x4c')],null))[_0x0391('0x29')](respondWithResult(_0x58cfce,null))[_0x0391('0x47')](handleError(_0x58cfce,null));};exports['destroy']=function(_0x33dd70,_0x583848){return db['ZendeskConfiguration'][_0x0391('0x4d')]({'where':{'id':_0x33dd70[_0x0391('0x49')]['id']}})[_0x0391('0x29')](handleEntityNotFound(_0x583848,null))[_0x0391('0x29')](removeEntity(_0x583848,null))['catch'](handleError(_0x583848,null));};exports[_0x0391('0x4e')]=function(_0x42bc4a,_0x464091,_0xc2c72e){var _0x3adfea={};var _0x3c31a0={};var _0x1d1aaf;var _0x41b0dc;return db[_0x0391('0x4a')][_0x0391('0x4f')]({'where':{'id':_0x42bc4a['params']['id']}})[_0x0391('0x29')](handleEntityNotFound(_0x464091,null))[_0x0391('0x29')](function(_0x3379ec){if(_0x3379ec){_0x1d1aaf=_0x3379ec;_0x3c31a0[_0x0391('0x31')]=_[_0x0391('0x33')](db[_0x0391('0x50')][_0x0391('0x2e')]);_0x3c31a0[_0x0391('0x34')]=_['keys'](_0x42bc4a[_0x0391('0x34')]);_0x3c31a0[_0x0391('0x3e')]=_[_0x0391('0x35')](_0x3c31a0[_0x0391('0x31')],_0x3c31a0['query']);_0x3adfea[_0x0391('0x36')]=_['intersection'](_0x3c31a0[_0x0391('0x31')],qs[_0x0391('0x37')](_0x42bc4a['query'][_0x0391('0x37')]));_0x3adfea['attributes']=_0x3adfea[_0x0391('0x36')]['length']?_0x3adfea[_0x0391('0x36')]:_0x3c31a0[_0x0391('0x31')];_0x3adfea[_0x0391('0x3b')]=qs[_0x0391('0x3c')](_0x42bc4a[_0x0391('0x34')][_0x0391('0x3c')]);_0x3adfea[_0x0391('0x3d')]=qs[_0x0391('0x3e')](_[_0x0391('0x3f')](_0x42bc4a['query'],_0x3c31a0[_0x0391('0x3e')]));if(_0x42bc4a[_0x0391('0x34')][_0x0391('0x40')]){_0x3adfea['where']=_[_0x0391('0x41')](_0x3adfea[_0x0391('0x3d')],{'$or':_['map'](_0x3adfea['attributes'],function(_0x544136){var _0xef419d={};_0xef419d[_0x544136]={'$like':'%'+_0x42bc4a[_0x0391('0x34')][_0x0391('0x40')]+'%'};return _0xef419d;})});}_0x3adfea=_[_0x0391('0x41')]({},_0x3adfea,_0x42bc4a[_0x0391('0x43')]);return _0x1d1aaf[_0x0391('0x4e')](_0x3adfea);}})[_0x0391('0x29')](function(_0x4fdd4d){if(_0x4fdd4d){_0x41b0dc=_0x4fdd4d[_0x0391('0x38')];if(!_0x42bc4a[_0x0391('0x34')][_0x0391('0x39')](_0x0391('0x3a'))){_0x3adfea[_0x0391('0x22')]=qs[_0x0391('0x22')](_0x42bc4a[_0x0391('0x34')][_0x0391('0x22')]);_0x3adfea[_0x0391('0x20')]=qs['offset'](_0x42bc4a[_0x0391('0x34')][_0x0391('0x20')]);}return _0x1d1aaf[_0x0391('0x4e')](_0x3adfea);}})[_0x0391('0x29')](function(_0x1d39ea){if(_0x1d39ea){return _0x1d39ea?{'count':_0x41b0dc,'rows':_0x1d39ea}:null;}})[_0x0391('0x29')](respondWithResult(_0x464091,null))[_0x0391('0x47')](handleError(_0x464091,null));};exports[_0x0391('0x51')]=function(_0x2c0602,_0x11704b,_0x383423){var _0x5f0897={};var _0xb558a8={};var _0x463a68;var _0x14d912;return db[_0x0391('0x4a')][_0x0391('0x4f')]({'where':{'id':_0x2c0602['params']['id']}})[_0x0391('0x29')](handleEntityNotFound(_0x11704b,null))[_0x0391('0x29')](function(_0x36c0c2){if(_0x36c0c2){_0x463a68=_0x36c0c2;_0xb558a8[_0x0391('0x31')]=_['keys'](db['ZendeskField'][_0x0391('0x2e')]);_0xb558a8['query']=_['keys'](_0x2c0602[_0x0391('0x34')]);_0xb558a8[_0x0391('0x3e')]=_['intersection'](_0xb558a8[_0x0391('0x31')],_0xb558a8[_0x0391('0x34')]);_0x5f0897[_0x0391('0x36')]=_[_0x0391('0x35')](_0xb558a8['model'],qs['fields'](_0x2c0602[_0x0391('0x34')][_0x0391('0x37')]));_0x5f0897['attributes']=_0x5f0897[_0x0391('0x36')]['length']?_0x5f0897[_0x0391('0x36')]:_0xb558a8['model'];_0x5f0897[_0x0391('0x3b')]=qs[_0x0391('0x3c')](_0x2c0602[_0x0391('0x34')]['sort']);_0x5f0897[_0x0391('0x3d')]=qs[_0x0391('0x3e')](_[_0x0391('0x3f')](_0x2c0602[_0x0391('0x34')],_0xb558a8['filters']));if(_0x2c0602[_0x0391('0x34')]['filter']){_0x5f0897['where']=_[_0x0391('0x41')](_0x5f0897['where'],{'$or':_[_0x0391('0x32')](_0x5f0897[_0x0391('0x36')],function(_0x4e9711){var _0x596a74={};_0x596a74[_0x4e9711]={'$like':'%'+_0x2c0602[_0x0391('0x34')]['filter']+'%'};return _0x596a74;})});}_0x5f0897=_[_0x0391('0x41')]({},_0x5f0897,_0x2c0602[_0x0391('0x43')]);return _0x463a68['getSubjects'](_0x5f0897);}})[_0x0391('0x29')](function(_0x1c1c5b){if(_0x1c1c5b){_0x14d912=_0x1c1c5b[_0x0391('0x38')];if(!_0x2c0602[_0x0391('0x34')][_0x0391('0x39')](_0x0391('0x3a'))){_0x5f0897['limit']=qs[_0x0391('0x22')](_0x2c0602[_0x0391('0x34')][_0x0391('0x22')]);_0x5f0897[_0x0391('0x20')]=qs[_0x0391('0x20')](_0x2c0602[_0x0391('0x34')][_0x0391('0x20')]);}return _0x463a68['getSubjects'](_0x5f0897);}})[_0x0391('0x29')](function(_0x352849){if(_0x352849){return _0x352849?{'count':_0x14d912,'rows':_0x352849}:null;}})[_0x0391('0x29')](respondWithResult(_0x11704b,null))['catch'](handleError(_0x11704b,null));};exports[_0x0391('0x52')]=function(_0x51e023,_0x5d4b7a,_0x1c517e){var _0x43dbc6={};var _0x376714={};var _0x36aa9e;var _0x4650ee;return db[_0x0391('0x4a')]['findOne']({'where':{'id':_0x51e023['params']['id']}})[_0x0391('0x29')](handleEntityNotFound(_0x5d4b7a,null))['then'](function(_0x17c14c){if(_0x17c14c){_0x36aa9e=_0x17c14c;_0x376714[_0x0391('0x31')]=_[_0x0391('0x33')](db[_0x0391('0x50')][_0x0391('0x2e')]);_0x376714['query']=_[_0x0391('0x33')](_0x51e023[_0x0391('0x34')]);_0x376714[_0x0391('0x3e')]=_[_0x0391('0x35')](_0x376714['model'],_0x376714[_0x0391('0x34')]);_0x43dbc6[_0x0391('0x36')]=_['intersection'](_0x376714[_0x0391('0x31')],qs[_0x0391('0x37')](_0x51e023[_0x0391('0x34')][_0x0391('0x37')]));_0x43dbc6[_0x0391('0x36')]=_0x43dbc6[_0x0391('0x36')][_0x0391('0x38')]?_0x43dbc6[_0x0391('0x36')]:_0x376714['model'];_0x43dbc6['order']=qs[_0x0391('0x3c')](_0x51e023[_0x0391('0x34')][_0x0391('0x3c')]);_0x43dbc6[_0x0391('0x3d')]=qs[_0x0391('0x3e')](_[_0x0391('0x3f')](_0x51e023['query'],_0x376714[_0x0391('0x3e')]));if(_0x51e023[_0x0391('0x34')][_0x0391('0x40')]){_0x43dbc6[_0x0391('0x3d')]=_[_0x0391('0x41')](_0x43dbc6[_0x0391('0x3d')],{'$or':_['map'](_0x43dbc6['attributes'],function(_0x2dab95){var _0x500e84={};_0x500e84[_0x2dab95]={'$like':'%'+_0x51e023[_0x0391('0x34')][_0x0391('0x40')]+'%'};return _0x500e84;})});}_0x43dbc6=_[_0x0391('0x41')]({},_0x43dbc6,_0x51e023[_0x0391('0x43')]);return _0x36aa9e[_0x0391('0x52')](_0x43dbc6);}})[_0x0391('0x29')](function(_0x19ba67){if(_0x19ba67){_0x4650ee=_0x19ba67[_0x0391('0x38')];if(!_0x51e023[_0x0391('0x34')]['hasOwnProperty']('nolimit')){_0x43dbc6[_0x0391('0x22')]=qs[_0x0391('0x22')](_0x51e023['query'][_0x0391('0x22')]);_0x43dbc6[_0x0391('0x20')]=qs['offset'](_0x51e023[_0x0391('0x34')]['offset']);}return _0x36aa9e[_0x0391('0x52')](_0x43dbc6);}})[_0x0391('0x29')](function(_0x57db6f){if(_0x57db6f){return _0x57db6f?{'count':_0x4650ee,'rows':_0x57db6f}:null;}})['then'](respondWithResult(_0x5d4b7a,null))[_0x0391('0x47')](handleError(_0x5d4b7a,null));};exports['getTags']=function(_0x894d5f,_0x422b4a,_0x418a10){var _0x5b9593={};var _0x187f9e={};var _0x565e97;var _0x591a55;return db['ZendeskConfiguration']['findOne']({'where':{'id':_0x894d5f['params']['id']}})[_0x0391('0x29')](handleEntityNotFound(_0x422b4a,null))[_0x0391('0x29')](function(_0x54c6ce){if(_0x54c6ce){_0x565e97=_0x54c6ce;_0x187f9e['model']=_[_0x0391('0x33')](db['Tag'][_0x0391('0x2e')]);_0x187f9e[_0x0391('0x34')]=_[_0x0391('0x33')](_0x894d5f[_0x0391('0x34')]);_0x187f9e[_0x0391('0x3e')]=_[_0x0391('0x35')](_0x187f9e[_0x0391('0x31')],_0x187f9e[_0x0391('0x34')]);_0x5b9593[_0x0391('0x36')]=_['intersection'](_0x187f9e[_0x0391('0x31')],qs[_0x0391('0x37')](_0x894d5f[_0x0391('0x34')][_0x0391('0x37')]));_0x5b9593[_0x0391('0x36')]=_0x5b9593[_0x0391('0x36')][_0x0391('0x38')]?_0x5b9593['attributes']:_0x187f9e[_0x0391('0x31')];_0x5b9593[_0x0391('0x3b')]=qs[_0x0391('0x3c')](_0x894d5f[_0x0391('0x34')]['sort']);_0x5b9593[_0x0391('0x3d')]=qs[_0x0391('0x3e')](_[_0x0391('0x3f')](_0x894d5f[_0x0391('0x34')],_0x187f9e[_0x0391('0x3e')]));if(_0x894d5f['query'][_0x0391('0x40')]){_0x5b9593['where']=_[_0x0391('0x41')](_0x5b9593['where'],{'$or':_['map'](_0x5b9593[_0x0391('0x36')],function(_0x2e9f72){var _0x428a46={};_0x428a46[_0x2e9f72]={'$like':'%'+_0x894d5f[_0x0391('0x34')][_0x0391('0x40')]+'%'};return _0x428a46;})});}_0x5b9593=_[_0x0391('0x41')]({},_0x5b9593,_0x894d5f[_0x0391('0x43')]);return _0x565e97['getTags'](_0x5b9593);}})[_0x0391('0x29')](function(_0x16f557){if(_0x16f557){_0x591a55=_0x16f557['length'];if(!_0x894d5f[_0x0391('0x34')][_0x0391('0x39')](_0x0391('0x3a'))){_0x5b9593[_0x0391('0x22')]=qs[_0x0391('0x22')](_0x894d5f[_0x0391('0x34')][_0x0391('0x22')]);_0x5b9593[_0x0391('0x20')]=qs['offset'](_0x894d5f['query'][_0x0391('0x20')]);}return _0x565e97[_0x0391('0x53')](_0x5b9593);}})[_0x0391('0x29')](function(_0x584985){if(_0x584985){return _0x584985?{'count':_0x591a55,'rows':_0x584985}:null;}})['then'](respondWithResult(_0x422b4a,null))[_0x0391('0x47')](handleError(_0x422b4a,null));};exports['setTags']=function(_0x12858,_0x270696,_0x542a2c){if(_0x12858[_0x0391('0x4c')]['id']){delete _0x12858[_0x0391('0x4c')]['id'];}return db[_0x0391('0x4a')][_0x0391('0x4f')]({'where':{'id':_0x12858[_0x0391('0x49')]['id']}})[_0x0391('0x29')](handleEntityNotFound(_0x270696,null))[_0x0391('0x29')](function(_0x4829fb){if(_0x4829fb){return _0x4829fb[_0x0391('0x54')](_0x12858[_0x0391('0x4c')][_0x0391('0x55')]||[]);}return null;})[_0x0391('0x29')](respondWithResult(_0x270696,null))[_0x0391('0x47')](handleError(_0x270696,null));};
\ No newline at end of file
+var _0xf56f=['model','query','keys','intersection','attributes','length','hasOwnProperty','order','sort','filters','filter','where','merge','VIRTUAL','includeAll','include','rows','catch','params','fields','options','find','create','body','getFields','findOne','ZendeskField','pick','nolimit','getSubjects','getDescriptions','getTags','Tag','setTags','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','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','../../mysqldb','sendStatus','status','end','json','undefined','count','offset','limit','set','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','ZendeskConfiguration','rawAttributes','fieldName','type','key'];(function(_0x2e1294,_0x2cd97a){var _0x3e795d=function(_0x5c6b97){while(--_0x5c6b97){_0x2e1294['push'](_0x2e1294['shift']());}};_0x3e795d(++_0x2cd97a);}(_0xf56f,0x17e));var _0xff56=function(_0x47e549,_0x2e53d6){_0x47e549=_0x47e549-0x0;var _0x251374=_0xf56f[_0x47e549];return _0x251374;};'use strict';var emlformat=require(_0xff56('0x0'));var rimraf=require(_0xff56('0x1'));var zipdir=require(_0xff56('0x2'));var jsonpatch=require(_0xff56('0x3'));var rp=require(_0xff56('0x4'));var moment=require(_0xff56('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xff56('0x6'));var util=require('util');var path=require(_0xff56('0x7'));var sox=require('sox');var csv=require(_0xff56('0x8'));var ejs=require(_0xff56('0x9'));var fs=require('fs');var fs_extra=require(_0xff56('0xa'));var _=require(_0xff56('0xb'));var squel=require(_0xff56('0xc'));var crypto=require(_0xff56('0xd'));var jsforce=require(_0xff56('0xe'));var deskjs=require(_0xff56('0xf'));var toCsv=require(_0xff56('0x8'));var querystring=require(_0xff56('0x10'));var Papa=require(_0xff56('0x11'));var Redis=require('ioredis');var authService=require(_0xff56('0x12'));var qs=require(_0xff56('0x13'));var as=require(_0xff56('0x14'));var hardwareService=require(_0xff56('0x15'));var logger=require(_0xff56('0x16'))(_0xff56('0x17'));var utils=require(_0xff56('0x18'));var config=require(_0xff56('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0xff56('0x1a'))['db'];function respondWithStatusCode(_0x4c9325,_0x4a175f){_0x4a175f=_0x4a175f||0xcc;return function(_0x4c2d29){if(_0x4c2d29){return _0x4c9325[_0xff56('0x1b')](_0x4a175f);}return _0x4c9325[_0xff56('0x1c')](_0x4a175f)[_0xff56('0x1d')]();};}function respondWithResult(_0x1bd448,_0x11e23c){_0x11e23c=_0x11e23c||0xc8;return function(_0x34c61a){if(_0x34c61a){return _0x1bd448[_0xff56('0x1c')](_0x11e23c)[_0xff56('0x1e')](_0x34c61a);}};}function respondWithFilteredResult(_0x4cc171,_0xfbfdc6){return function(_0x447e9b){if(_0x447e9b){var _0x54a61d=typeof _0xfbfdc6['offset']===_0xff56('0x1f')&&typeof _0xfbfdc6['limit']==='undefined';var _0x568630=_0x447e9b[_0xff56('0x20')];var _0x1512ab=_0x54a61d?0x0:_0xfbfdc6[_0xff56('0x21')];var _0x1247ca=_0x54a61d?_0x447e9b[_0xff56('0x20')]:_0xfbfdc6[_0xff56('0x21')]+_0xfbfdc6[_0xff56('0x22')];var _0x3596a7;if(_0x1247ca>=_0x568630){_0x1247ca=_0x568630;_0x3596a7=0xc8;}else{_0x3596a7=0xce;}_0x4cc171[_0xff56('0x1c')](_0x3596a7);return _0x4cc171[_0xff56('0x23')]('Content-Range',_0x1512ab+'-'+_0x1247ca+'/'+_0x568630)[_0xff56('0x1e')](_0x447e9b);}return null;};}function patchUpdates(_0x47e68e){return function(_0x354c43){try{jsonpatch[_0xff56('0x24')](_0x354c43,_0x47e68e,!![]);}catch(_0x33477c){return BPromise[_0xff56('0x25')](_0x33477c);}return _0x354c43[_0xff56('0x26')]();};}function saveUpdates(_0x3fbe68,_0x4384e5){return function(_0x19a4ed){if(_0x19a4ed){return _0x19a4ed[_0xff56('0x27')](_0x3fbe68)[_0xff56('0x28')](function(_0x57e56b){return _0x57e56b;});}return null;};}function removeEntity(_0xf50606,_0x390d98){return function(_0x45f86a){if(_0x45f86a){return _0x45f86a[_0xff56('0x29')]()[_0xff56('0x28')](function(){_0xf50606[_0xff56('0x1c')](0xcc)[_0xff56('0x1d')]();});}};}function handleEntityNotFound(_0x4b5ac9,_0x4886db){return function(_0x55ab15){if(!_0x55ab15){_0x4b5ac9['sendStatus'](0x194);}return _0x55ab15;};}function handleError(_0x2f86cc,_0x5752fb){_0x5752fb=_0x5752fb||0x1f4;return function(_0x25c09c){logger[_0xff56('0x2a')](_0x25c09c[_0xff56('0x2b')]);if(_0x25c09c[_0xff56('0x2c')]){delete _0x25c09c['name'];}_0x2f86cc[_0xff56('0x1c')](_0x5752fb)[_0xff56('0x2d')](_0x25c09c);};}exports[_0xff56('0x2e')]=function(_0x55e8da,_0x5643e3){var _0x5dea5a={},_0x22c3a={},_0xf1d8e5={'count':0x0,'rows':[]};var _0x1ff342=_[_0xff56('0x2f')](db[_0xff56('0x30')][_0xff56('0x31')],function(_0x38e67e){return{'name':_0x38e67e[_0xff56('0x32')],'type':_0x38e67e[_0xff56('0x33')][_0xff56('0x34')]};});_0x22c3a[_0xff56('0x35')]=_['map'](_0x1ff342,_0xff56('0x2c'));_0x22c3a[_0xff56('0x36')]=_[_0xff56('0x37')](_0x55e8da['query']);_0x22c3a['filters']=_[_0xff56('0x38')](_0x22c3a[_0xff56('0x35')],_0x22c3a['query']);_0x5dea5a[_0xff56('0x39')]=_[_0xff56('0x38')](_0x22c3a[_0xff56('0x35')],qs['fields'](_0x55e8da[_0xff56('0x36')]['fields']));_0x5dea5a[_0xff56('0x39')]=_0x5dea5a['attributes'][_0xff56('0x3a')]?_0x5dea5a[_0xff56('0x39')]:_0x22c3a[_0xff56('0x35')];if(!_0x55e8da[_0xff56('0x36')][_0xff56('0x3b')]('nolimit')){_0x5dea5a['limit']=qs[_0xff56('0x22')](_0x55e8da[_0xff56('0x36')][_0xff56('0x22')]);_0x5dea5a[_0xff56('0x21')]=qs['offset'](_0x55e8da[_0xff56('0x36')][_0xff56('0x21')]);}_0x5dea5a[_0xff56('0x3c')]=qs[_0xff56('0x3d')](_0x55e8da['query'][_0xff56('0x3d')]);_0x5dea5a['where']=qs['filters'](_['pick'](_0x55e8da['query'],_0x22c3a[_0xff56('0x3e')]),_0x1ff342);if(_0x55e8da[_0xff56('0x36')][_0xff56('0x3f')]){_0x5dea5a[_0xff56('0x40')]=_[_0xff56('0x41')](_0x5dea5a[_0xff56('0x40')],{'$or':_[_0xff56('0x2f')](_0x1ff342,function(_0x5aca9b){if(_0x5aca9b[_0xff56('0x33')]!==_0xff56('0x42')){var _0x811679={};_0x811679[_0x5aca9b[_0xff56('0x2c')]]={'$like':'%'+_0x55e8da['query'][_0xff56('0x3f')]+'%'};return _0x811679;}})});}_0x5dea5a=_['merge']({},_0x5dea5a,_0x55e8da['options']);var _0x3b43ab={'where':_0x5dea5a[_0xff56('0x40')]};return db[_0xff56('0x30')]['count'](_0x3b43ab)['then'](function(_0x54ab55){_0xf1d8e5['count']=_0x54ab55;if(_0x55e8da['query'][_0xff56('0x43')]){_0x5dea5a[_0xff56('0x44')]=[{'all':!![]}];}return db[_0xff56('0x30')]['findAll'](_0x5dea5a);})[_0xff56('0x28')](function(_0x580db8){_0xf1d8e5[_0xff56('0x45')]=_0x580db8;return _0xf1d8e5;})[_0xff56('0x28')](respondWithFilteredResult(_0x5643e3,_0x5dea5a))[_0xff56('0x46')](handleError(_0x5643e3,null));};exports['show']=function(_0x41801a,_0x3f1f23){var _0x1e5fe8={'raw':![],'where':{'id':_0x41801a[_0xff56('0x47')]['id']}},_0x3f0349={};_0x3f0349['model']=_[_0xff56('0x37')](db[_0xff56('0x30')]['rawAttributes']);_0x3f0349[_0xff56('0x36')]=_[_0xff56('0x37')](_0x41801a['query']);_0x3f0349['filters']=_[_0xff56('0x38')](_0x3f0349['model'],_0x3f0349['query']);_0x1e5fe8[_0xff56('0x39')]=_[_0xff56('0x38')](_0x3f0349[_0xff56('0x35')],qs[_0xff56('0x48')](_0x41801a[_0xff56('0x36')]['fields']));_0x1e5fe8['attributes']=_0x1e5fe8[_0xff56('0x39')][_0xff56('0x3a')]?_0x1e5fe8[_0xff56('0x39')]:_0x3f0349['model'];if(_0x41801a['query']['includeAll']){_0x1e5fe8[_0xff56('0x44')]=[{'all':!![]}];}_0x1e5fe8=_['merge']({},_0x1e5fe8,_0x41801a[_0xff56('0x49')]);return db['ZendeskConfiguration'][_0xff56('0x4a')](_0x1e5fe8)[_0xff56('0x28')](handleEntityNotFound(_0x3f1f23,null))[_0xff56('0x28')](respondWithResult(_0x3f1f23,null))[_0xff56('0x46')](handleError(_0x3f1f23,null));};exports[_0xff56('0x4b')]=function(_0xc52b1c,_0x2cc158){return db[_0xff56('0x30')][_0xff56('0x4b')](_0xc52b1c['body'],{})['then'](respondWithResult(_0x2cc158,0xc9))[_0xff56('0x46')](handleError(_0x2cc158,null));};exports['update']=function(_0x2284ca,_0x391202){if(_0x2284ca[_0xff56('0x4c')]['id']){delete _0x2284ca[_0xff56('0x4c')]['id'];}return db[_0xff56('0x30')]['find']({'where':{'id':_0x2284ca[_0xff56('0x47')]['id']}})[_0xff56('0x28')](handleEntityNotFound(_0x391202,null))['then'](saveUpdates(_0x2284ca[_0xff56('0x4c')],null))[_0xff56('0x28')](respondWithResult(_0x391202,null))[_0xff56('0x46')](handleError(_0x391202,null));};exports[_0xff56('0x29')]=function(_0x3caf47,_0x968fe2){return db[_0xff56('0x30')][_0xff56('0x4a')]({'where':{'id':_0x3caf47[_0xff56('0x47')]['id']}})[_0xff56('0x28')](handleEntityNotFound(_0x968fe2,null))[_0xff56('0x28')](removeEntity(_0x968fe2,null))[_0xff56('0x46')](handleError(_0x968fe2,null));};exports[_0xff56('0x4d')]=function(_0x699fc4,_0x1f48b4,_0x4de6f5){var _0x1c2ca8={};var _0x6e686b={};var _0x12da9e;var _0x14c2cd;return db[_0xff56('0x30')][_0xff56('0x4e')]({'where':{'id':_0x699fc4['params']['id']}})[_0xff56('0x28')](handleEntityNotFound(_0x1f48b4,null))['then'](function(_0xa95d9a){if(_0xa95d9a){_0x12da9e=_0xa95d9a;_0x6e686b['model']=_[_0xff56('0x37')](db[_0xff56('0x4f')][_0xff56('0x31')]);_0x6e686b[_0xff56('0x36')]=_[_0xff56('0x37')](_0x699fc4['query']);_0x6e686b['filters']=_[_0xff56('0x38')](_0x6e686b['model'],_0x6e686b[_0xff56('0x36')]);_0x1c2ca8[_0xff56('0x39')]=_[_0xff56('0x38')](_0x6e686b[_0xff56('0x35')],qs[_0xff56('0x48')](_0x699fc4['query'][_0xff56('0x48')]));_0x1c2ca8[_0xff56('0x39')]=_0x1c2ca8['attributes'][_0xff56('0x3a')]?_0x1c2ca8[_0xff56('0x39')]:_0x6e686b[_0xff56('0x35')];_0x1c2ca8[_0xff56('0x3c')]=qs[_0xff56('0x3d')](_0x699fc4[_0xff56('0x36')][_0xff56('0x3d')]);_0x1c2ca8[_0xff56('0x40')]=qs['filters'](_[_0xff56('0x50')](_0x699fc4[_0xff56('0x36')],_0x6e686b[_0xff56('0x3e')]));if(_0x699fc4[_0xff56('0x36')]['filter']){_0x1c2ca8[_0xff56('0x40')]=_[_0xff56('0x41')](_0x1c2ca8[_0xff56('0x40')],{'$or':_['map'](_0x1c2ca8['attributes'],function(_0x17a9f5){var _0x3c1233={};_0x3c1233[_0x17a9f5]={'$like':'%'+_0x699fc4['query'][_0xff56('0x3f')]+'%'};return _0x3c1233;})});}_0x1c2ca8=_['merge']({},_0x1c2ca8,_0x699fc4['options']);return _0x12da9e['getFields'](_0x1c2ca8);}})['then'](function(_0x24c001){if(_0x24c001){_0x14c2cd=_0x24c001[_0xff56('0x3a')];if(!_0x699fc4[_0xff56('0x36')]['hasOwnProperty'](_0xff56('0x51'))){_0x1c2ca8[_0xff56('0x22')]=qs[_0xff56('0x22')](_0x699fc4[_0xff56('0x36')][_0xff56('0x22')]);_0x1c2ca8[_0xff56('0x21')]=qs[_0xff56('0x21')](_0x699fc4[_0xff56('0x36')][_0xff56('0x21')]);}return _0x12da9e[_0xff56('0x4d')](_0x1c2ca8);}})[_0xff56('0x28')](function(_0x3f13de){if(_0x3f13de){return _0x3f13de?{'count':_0x14c2cd,'rows':_0x3f13de}:null;}})[_0xff56('0x28')](respondWithResult(_0x1f48b4,null))['catch'](handleError(_0x1f48b4,null));};exports[_0xff56('0x52')]=function(_0x18f4dc,_0x41430b,_0x44618d){var _0xa38d45={};var _0x6aac59={};var _0x38b749;var _0x3ab8f2;return db['ZendeskConfiguration'][_0xff56('0x4e')]({'where':{'id':_0x18f4dc[_0xff56('0x47')]['id']}})[_0xff56('0x28')](handleEntityNotFound(_0x41430b,null))['then'](function(_0x493570){if(_0x493570){_0x38b749=_0x493570;_0x6aac59[_0xff56('0x35')]=_[_0xff56('0x37')](db['ZendeskField'][_0xff56('0x31')]);_0x6aac59[_0xff56('0x36')]=_['keys'](_0x18f4dc[_0xff56('0x36')]);_0x6aac59[_0xff56('0x3e')]=_[_0xff56('0x38')](_0x6aac59[_0xff56('0x35')],_0x6aac59['query']);_0xa38d45[_0xff56('0x39')]=_[_0xff56('0x38')](_0x6aac59['model'],qs['fields'](_0x18f4dc['query'][_0xff56('0x48')]));_0xa38d45[_0xff56('0x39')]=_0xa38d45[_0xff56('0x39')][_0xff56('0x3a')]?_0xa38d45[_0xff56('0x39')]:_0x6aac59['model'];_0xa38d45['order']=qs['sort'](_0x18f4dc[_0xff56('0x36')][_0xff56('0x3d')]);_0xa38d45[_0xff56('0x40')]=qs[_0xff56('0x3e')](_[_0xff56('0x50')](_0x18f4dc[_0xff56('0x36')],_0x6aac59[_0xff56('0x3e')]));if(_0x18f4dc[_0xff56('0x36')][_0xff56('0x3f')]){_0xa38d45[_0xff56('0x40')]=_[_0xff56('0x41')](_0xa38d45[_0xff56('0x40')],{'$or':_[_0xff56('0x2f')](_0xa38d45['attributes'],function(_0x40faf3){var _0x32e9d5={};_0x32e9d5[_0x40faf3]={'$like':'%'+_0x18f4dc[_0xff56('0x36')][_0xff56('0x3f')]+'%'};return _0x32e9d5;})});}_0xa38d45=_['merge']({},_0xa38d45,_0x18f4dc['options']);return _0x38b749[_0xff56('0x52')](_0xa38d45);}})[_0xff56('0x28')](function(_0x157828){if(_0x157828){_0x3ab8f2=_0x157828[_0xff56('0x3a')];if(!_0x18f4dc[_0xff56('0x36')][_0xff56('0x3b')](_0xff56('0x51'))){_0xa38d45['limit']=qs['limit'](_0x18f4dc[_0xff56('0x36')][_0xff56('0x22')]);_0xa38d45[_0xff56('0x21')]=qs[_0xff56('0x21')](_0x18f4dc[_0xff56('0x36')]['offset']);}return _0x38b749[_0xff56('0x52')](_0xa38d45);}})[_0xff56('0x28')](function(_0x5d02d3){if(_0x5d02d3){return _0x5d02d3?{'count':_0x3ab8f2,'rows':_0x5d02d3}:null;}})['then'](respondWithResult(_0x41430b,null))['catch'](handleError(_0x41430b,null));};exports[_0xff56('0x53')]=function(_0x38dc1e,_0xabe421,_0x15f7af){var _0x18869d={};var _0x3dfd25={};var _0xe6d06f;var _0x3a3d35;return db[_0xff56('0x30')][_0xff56('0x4e')]({'where':{'id':_0x38dc1e['params']['id']}})[_0xff56('0x28')](handleEntityNotFound(_0xabe421,null))[_0xff56('0x28')](function(_0x43d009){if(_0x43d009){_0xe6d06f=_0x43d009;_0x3dfd25[_0xff56('0x35')]=_['keys'](db[_0xff56('0x4f')][_0xff56('0x31')]);_0x3dfd25['query']=_[_0xff56('0x37')](_0x38dc1e[_0xff56('0x36')]);_0x3dfd25['filters']=_[_0xff56('0x38')](_0x3dfd25[_0xff56('0x35')],_0x3dfd25['query']);_0x18869d[_0xff56('0x39')]=_[_0xff56('0x38')](_0x3dfd25[_0xff56('0x35')],qs['fields'](_0x38dc1e['query'][_0xff56('0x48')]));_0x18869d[_0xff56('0x39')]=_0x18869d[_0xff56('0x39')]['length']?_0x18869d[_0xff56('0x39')]:_0x3dfd25[_0xff56('0x35')];_0x18869d[_0xff56('0x3c')]=qs[_0xff56('0x3d')](_0x38dc1e[_0xff56('0x36')][_0xff56('0x3d')]);_0x18869d[_0xff56('0x40')]=qs[_0xff56('0x3e')](_[_0xff56('0x50')](_0x38dc1e['query'],_0x3dfd25[_0xff56('0x3e')]));if(_0x38dc1e['query'][_0xff56('0x3f')]){_0x18869d[_0xff56('0x40')]=_[_0xff56('0x41')](_0x18869d[_0xff56('0x40')],{'$or':_[_0xff56('0x2f')](_0x18869d[_0xff56('0x39')],function(_0x1b3a09){var _0x4a9c56={};_0x4a9c56[_0x1b3a09]={'$like':'%'+_0x38dc1e['query'][_0xff56('0x3f')]+'%'};return _0x4a9c56;})});}_0x18869d=_[_0xff56('0x41')]({},_0x18869d,_0x38dc1e[_0xff56('0x49')]);return _0xe6d06f[_0xff56('0x53')](_0x18869d);}})['then'](function(_0x205715){if(_0x205715){_0x3a3d35=_0x205715[_0xff56('0x3a')];if(!_0x38dc1e[_0xff56('0x36')][_0xff56('0x3b')](_0xff56('0x51'))){_0x18869d[_0xff56('0x22')]=qs[_0xff56('0x22')](_0x38dc1e[_0xff56('0x36')][_0xff56('0x22')]);_0x18869d[_0xff56('0x21')]=qs['offset'](_0x38dc1e[_0xff56('0x36')][_0xff56('0x21')]);}return _0xe6d06f[_0xff56('0x53')](_0x18869d);}})[_0xff56('0x28')](function(_0x396b27){if(_0x396b27){return _0x396b27?{'count':_0x3a3d35,'rows':_0x396b27}:null;}})[_0xff56('0x28')](respondWithResult(_0xabe421,null))[_0xff56('0x46')](handleError(_0xabe421,null));};exports[_0xff56('0x54')]=function(_0x2ddfaf,_0x3dc6d6,_0x469ea2){var _0x57077b={};var _0x35bc02={};var _0x30b49f;var _0xd855d9;return db[_0xff56('0x30')][_0xff56('0x4e')]({'where':{'id':_0x2ddfaf[_0xff56('0x47')]['id']}})[_0xff56('0x28')](handleEntityNotFound(_0x3dc6d6,null))[_0xff56('0x28')](function(_0x30823b){if(_0x30823b){_0x30b49f=_0x30823b;_0x35bc02[_0xff56('0x35')]=_['keys'](db[_0xff56('0x55')]['rawAttributes']);_0x35bc02[_0xff56('0x36')]=_[_0xff56('0x37')](_0x2ddfaf[_0xff56('0x36')]);_0x35bc02[_0xff56('0x3e')]=_[_0xff56('0x38')](_0x35bc02['model'],_0x35bc02['query']);_0x57077b[_0xff56('0x39')]=_[_0xff56('0x38')](_0x35bc02['model'],qs['fields'](_0x2ddfaf[_0xff56('0x36')][_0xff56('0x48')]));_0x57077b['attributes']=_0x57077b[_0xff56('0x39')][_0xff56('0x3a')]?_0x57077b[_0xff56('0x39')]:_0x35bc02['model'];_0x57077b['order']=qs[_0xff56('0x3d')](_0x2ddfaf[_0xff56('0x36')][_0xff56('0x3d')]);_0x57077b[_0xff56('0x40')]=qs[_0xff56('0x3e')](_['pick'](_0x2ddfaf[_0xff56('0x36')],_0x35bc02[_0xff56('0x3e')]));if(_0x2ddfaf[_0xff56('0x36')]['filter']){_0x57077b[_0xff56('0x40')]=_['merge'](_0x57077b[_0xff56('0x40')],{'$or':_[_0xff56('0x2f')](_0x57077b[_0xff56('0x39')],function(_0x5985f7){var _0x146c51={};_0x146c51[_0x5985f7]={'$like':'%'+_0x2ddfaf[_0xff56('0x36')][_0xff56('0x3f')]+'%'};return _0x146c51;})});}_0x57077b=_[_0xff56('0x41')]({},_0x57077b,_0x2ddfaf[_0xff56('0x49')]);return _0x30b49f['getTags'](_0x57077b);}})[_0xff56('0x28')](function(_0x2a796c){if(_0x2a796c){_0xd855d9=_0x2a796c[_0xff56('0x3a')];if(!_0x2ddfaf[_0xff56('0x36')]['hasOwnProperty'](_0xff56('0x51'))){_0x57077b['limit']=qs[_0xff56('0x22')](_0x2ddfaf[_0xff56('0x36')]['limit']);_0x57077b[_0xff56('0x21')]=qs[_0xff56('0x21')](_0x2ddfaf[_0xff56('0x36')][_0xff56('0x21')]);}return _0x30b49f[_0xff56('0x54')](_0x57077b);}})[_0xff56('0x28')](function(_0x49b8a8){if(_0x49b8a8){return _0x49b8a8?{'count':_0xd855d9,'rows':_0x49b8a8}:null;}})[_0xff56('0x28')](respondWithResult(_0x3dc6d6,null))[_0xff56('0x46')](handleError(_0x3dc6d6,null));};exports['setTags']=function(_0x346c7f,_0x1a2ec8,_0x569580){if(_0x346c7f[_0xff56('0x4c')]['id']){delete _0x346c7f[_0xff56('0x4c')]['id'];}return db['ZendeskConfiguration'][_0xff56('0x4e')]({'where':{'id':_0x346c7f['params']['id']}})[_0xff56('0x28')](handleEntityNotFound(_0x1a2ec8,null))[_0xff56('0x28')](function(_0x559ae1){if(_0x559ae1){return _0x559ae1[_0xff56('0x56')](_0x346c7f['body']['ids']||[]);}return null;})[_0xff56('0x28')](respondWithResult(_0x1a2ec8,null))[_0xff56('0x46')](handleError(_0x1a2ec8,null));};
\ No newline at end of file
index a8a9fb4..db9c7eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0598=['ZendeskConfiguration','int_zendesk_configurations','lodash','util','api','request-promise','path','exports'];(function(_0x2e6dee,_0x1a61b0){var _0x47706=function(_0x365546){while(--_0x365546){_0x2e6dee['push'](_0x2e6dee['shift']());}};_0x47706(++_0x1a61b0);}(_0x0598,0x92));var _0x8059=function(_0x2b6d3a,_0x29f8fa){_0x2b6d3a=_0x2b6d3a-0x0;var _0x55d310=_0x0598[_0x2b6d3a];return _0x55d310;};'use strict';var _=require(_0x8059('0x0'));var util=require(_0x8059('0x1'));var logger=require('../../config/logger')(_0x8059('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x8059('0x3'));var fs=require('fs');var path=require(_0x8059('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./intZendeskConfiguration.attributes');module[_0x8059('0x5')]=function(_0xa7d7c1,_0x512c0f){return _0xa7d7c1['define'](_0x8059('0x6'),attributes,{'tableName':_0x8059('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x84a0=['define','ZendeskConfiguration','int_zendesk_configurations','lodash','util','../../config/logger','api','bluebird','request-promise','../../config/environment','./intZendeskConfiguration.attributes'];(function(_0x1e500e,_0x2c9d74){var _0x10dc5e=function(_0x354423){while(--_0x354423){_0x1e500e['push'](_0x1e500e['shift']());}};_0x10dc5e(++_0x2c9d74);}(_0x84a0,0x66));var _0x084a=function(_0x30f0f2,_0x8a4674){_0x30f0f2=_0x30f0f2-0x0;var _0x1abc3f=_0x84a0[_0x30f0f2];return _0x1abc3f;};'use strict';var _=require(_0x084a('0x0'));var util=require(_0x084a('0x1'));var logger=require(_0x084a('0x2'))(_0x084a('0x3'));var moment=require('moment');var BPromise=require(_0x084a('0x4'));var rp=require(_0x084a('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x084a('0x6'));var attributes=require(_0x084a('0x7'));module['exports']=function(_0x16f8a7,_0x4325ce){return _0x16f8a7[_0x084a('0x8')](_0x084a('0x9'),attributes,{'tableName':_0x084a('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 60500ca..93318b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2687=['request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','lodash','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','request','then','info','ZendeskConfiguration,\x20%s,\x20%s'];(function(_0x1ac120,_0x3e7e45){var _0x19b703=function(_0x5f32cb){while(--_0x5f32cb){_0x1ac120['push'](_0x1ac120['shift']());}};_0x19b703(++_0x3e7e45);}(_0x2687,0xbc));var _0x7268=function(_0x1e9992,_0x24a7db){_0x1e9992=_0x1e9992-0x0;var _0x4204e2=_0x2687[_0x1e9992];return _0x4204e2;};'use strict';var _=require(_0x7268('0x0'));var util=require('util');var moment=require(_0x7268('0x1'));var BPromise=require('bluebird');var rs=require(_0x7268('0x2'));var fs=require('fs');var Redis=require(_0x7268('0x3'));var db=require(_0x7268('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7268('0x5'));var config=require(_0x7268('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x7268('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x25bcd7,_0x32fca6,_0x470b5b){return new BPromise(function(_0x1ea0d2,_0x49bb32){return client[_0x7268('0x8')](_0x25bcd7,_0x470b5b)[_0x7268('0x9')](function(_0x4916ea){logger[_0x7268('0xa')](_0x7268('0xb'),_0x32fca6,_0x7268('0xc'));logger[_0x7268('0xd')](_0x7268('0xe'),_0x32fca6,_0x7268('0xc'),JSON[_0x7268('0xf')](_0x4916ea));if(_0x4916ea[_0x7268('0x10')]){if(_0x4916ea['error'][_0x7268('0x11')]===0x1f4){logger['error'](_0x7268('0xb'),_0x32fca6,_0x4916ea[_0x7268('0x10')][_0x7268('0x12')]);return _0x49bb32(_0x4916ea[_0x7268('0x10')][_0x7268('0x12')]);}logger[_0x7268('0x10')]('ZendeskConfiguration,\x20%s,\x20%s',_0x32fca6,_0x4916ea['error'][_0x7268('0x12')]);return _0x1ea0d2(_0x4916ea['error'][_0x7268('0x12')]);}else{logger[_0x7268('0xa')](_0x7268('0xb'),_0x32fca6,_0x7268('0xc'));_0x1ea0d2(_0x4916ea['result'][_0x7268('0x12')]);}})[_0x7268('0x13')](function(_0x5eb244){logger['error'](_0x7268('0xb'),_0x32fca6,_0x5eb244);_0x49bb32(_0x5eb244);});});}
\ No newline at end of file
+var _0x828d=['lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','request\x20sent','debug','ZendeskConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','code','message','ZendeskConfiguration,\x20%s,\x20%s','result'];(function(_0x301d88,_0x36caa3){var _0x5a98e4=function(_0x346680){while(--_0x346680){_0x301d88['push'](_0x301d88['shift']());}};_0x5a98e4(++_0x36caa3);}(_0x828d,0x1b0));var _0xd828=function(_0xeff1c5,_0x4258b0){_0xeff1c5=_0xeff1c5-0x0;var _0x246351=_0x828d[_0xeff1c5];return _0x246351;};'use strict';var _=require(_0xd828('0x0'));var util=require(_0xd828('0x1'));var moment=require(_0xd828('0x2'));var BPromise=require(_0xd828('0x3'));var rs=require(_0xd828('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd828('0x5'))['db'];var utils=require(_0xd828('0x6'));var logger=require(_0xd828('0x7'))(_0xd828('0x8'));var config=require(_0xd828('0x9'));var jayson=require(_0xd828('0xa'));var client=jayson['client'][_0xd828('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5b9169,_0x145945,_0x143439){return new BPromise(function(_0x1731ce,_0x193463){return client[_0xd828('0xc')](_0x5b9169,_0x143439)[_0xd828('0xd')](function(_0x29ec7d){logger[_0xd828('0xe')]('ZendeskConfiguration,\x20%s,\x20%s',_0x145945,_0xd828('0xf'));logger[_0xd828('0x10')](_0xd828('0x11'),_0x145945,_0xd828('0xf'),JSON[_0xd828('0x12')](_0x29ec7d));if(_0x29ec7d[_0xd828('0x13')]){if(_0x29ec7d['error'][_0xd828('0x14')]===0x1f4){logger[_0xd828('0x13')]('ZendeskConfiguration,\x20%s,\x20%s',_0x145945,_0x29ec7d[_0xd828('0x13')][_0xd828('0x15')]);return _0x193463(_0x29ec7d[_0xd828('0x13')][_0xd828('0x15')]);}logger['error']('ZendeskConfiguration,\x20%s,\x20%s',_0x145945,_0x29ec7d[_0xd828('0x13')]['message']);return _0x1731ce(_0x29ec7d[_0xd828('0x13')]['message']);}else{logger['info'](_0xd828('0x16'),_0x145945,_0xd828('0xf'));_0x1731ce(_0x29ec7d[_0xd828('0x17')]['message']);}})['catch'](function(_0x10cf5b){logger[_0xd828('0x13')](_0xd828('0x16'),_0x145945,_0x10cf5b);_0x193463(_0x10cf5b);});});}
\ No newline at end of file
index 54377e8..3f11e59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29ee=['../../components/interaction/service','./intZendeskField.controller','get','isAuthenticated','index','/:id','show','post','put','update','delete','destroy','multer','util','path','Router','fs-extra'];(function(_0xce9836,_0x4ac88b){var _0x170413=function(_0x77e440){while(--_0x77e440){_0xce9836['push'](_0xce9836['shift']());}};_0x170413(++_0x4ac88b);}(_0x29ee,0xfa));var _0xe29e=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x29ee[_0x17d9e3];return _0x14192d;};'use strict';var multer=require(_0xe29e('0x0'));var util=require(_0xe29e('0x1'));var path=require(_0xe29e('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xe29e('0x3')]();var fs_extra=require(_0xe29e('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xe29e('0x5'));var config=require('../../config/environment');var controller=require(_0xe29e('0x6'));router[_0xe29e('0x7')]('/',auth[_0xe29e('0x8')](),controller[_0xe29e('0x9')]);router['get'](_0xe29e('0xa'),auth[_0xe29e('0x8')](),controller[_0xe29e('0xb')]);router[_0xe29e('0xc')]('/',auth[_0xe29e('0x8')](),controller['create']);router[_0xe29e('0xd')](_0xe29e('0xa'),auth[_0xe29e('0x8')](),controller[_0xe29e('0xe')]);router[_0xe29e('0xf')](_0xe29e('0xa'),auth[_0xe29e('0x8')](),controller[_0xe29e('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x958a=['util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./intZendeskField.controller','get','isAuthenticated','index','/:id','show','post','create','put','destroy','exports','multer'];(function(_0x494376,_0x1c77a2){var _0x9fd443=function(_0xea6c32){while(--_0xea6c32){_0x494376['push'](_0x494376['shift']());}};_0x9fd443(++_0x1c77a2);}(_0x958a,0xe3));var _0xa958=function(_0x1070e2,_0x4063a8){_0x1070e2=_0x1070e2-0x0;var _0x33b8a9=_0x958a[_0x1070e2];return _0x33b8a9;};'use strict';var multer=require(_0xa958('0x0'));var util=require(_0xa958('0x1'));var path=require(_0xa958('0x2'));var timeout=require('connect-timeout');var express=require(_0xa958('0x3'));var router=express[_0xa958('0x4')]();var fs_extra=require(_0xa958('0x5'));var auth=require(_0xa958('0x6'));var interaction=require(_0xa958('0x7'));var config=require('../../config/environment');var controller=require(_0xa958('0x8'));router[_0xa958('0x9')]('/',auth[_0xa958('0xa')](),controller[_0xa958('0xb')]);router[_0xa958('0x9')](_0xa958('0xc'),auth[_0xa958('0xa')](),controller[_0xa958('0xd')]);router[_0xa958('0xe')]('/',auth[_0xa958('0xa')](),controller[_0xa958('0xf')]);router[_0xa958('0x10')](_0xa958('0xc'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xa958('0xc'),auth[_0xa958('0xa')](),controller[_0xa958('0x11')]);module[_0xa958('0x12')]=router;
\ No newline at end of file
index afd0ce5..88f64f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb56b=['STRING','BOOLEAN','exports','string','variable','customVariable','keyValue'];(function(_0x3bd2c8,_0x395b96){var _0x25374f=function(_0x5ee528){while(--_0x5ee528){_0x3bd2c8['push'](_0x3bd2c8['shift']());}};_0x25374f(++_0x395b96);}(_0xb56b,0x191));var _0xbb56=function(_0x596565,_0x1258ad){_0x596565=_0x596565-0x0;var _0x474b1b=_0xb56b[_0x596565];return _0x474b1b;};'use strict';var Sequelize=require('sequelize');module[_0xbb56('0x0')]={'type':{'type':Sequelize['ENUM'](_0xbb56('0x1'),_0xbb56('0x2'),_0xbb56('0x3'),_0xbb56('0x4'),'picklist'),'defaultValue':'string'},'content':{'type':Sequelize[_0xbb56('0x5')]},'key':{'type':Sequelize[_0xbb56('0x5')]},'keyType':{'type':Sequelize['ENUM'](_0xbb56('0x1'),_0xbb56('0x2'),_0xbb56('0x3'))},'keyContent':{'type':Sequelize[_0xbb56('0x5')]},'idField':{'type':Sequelize[_0xbb56('0x5')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0xbb56('0x6')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xbb56('0x5')]}};
\ No newline at end of file
+var _0xc598=['string','customVariable','keyValue','picklist','STRING','variable','BOOLEAN','exports','ENUM'];(function(_0x5a6ce4,_0x4b550d){var _0x3a874d=function(_0x12ea3a){while(--_0x12ea3a){_0x5a6ce4['push'](_0x5a6ce4['shift']());}};_0x3a874d(++_0x4b550d);}(_0xc598,0x10c));var _0x8c59=function(_0x18844f,_0x29d9d4){_0x18844f=_0x18844f-0x0;var _0xbbadad=_0xc598[_0x18844f];return _0xbbadad;};'use strict';var Sequelize=require('sequelize');module[_0x8c59('0x0')]={'type':{'type':Sequelize[_0x8c59('0x1')](_0x8c59('0x2'),'variable',_0x8c59('0x3'),_0x8c59('0x4'),_0x8c59('0x5')),'defaultValue':_0x8c59('0x2')},'content':{'type':Sequelize[_0x8c59('0x6')]},'key':{'type':Sequelize['STRING']},'keyType':{'type':Sequelize['ENUM'](_0x8c59('0x2'),_0x8c59('0x7'),_0x8c59('0x3'))},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x8c59('0x6')]},'nameField':{'type':Sequelize['STRING']},'customField':{'type':Sequelize[_0x8c59('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x8c59('0x6')]}};
\ No newline at end of file
index 1552439..8ff50f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x617a=['model','query','keys','filters','intersection','attributes','fields','length','order','sort','pick','where','merge','type','VIRTUAL','filter','options','count','includeAll','include','findAll','rows','catch','show','params','find','create','body','eml-format','rimraf','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','set','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','ZendeskField','rawAttributes','fieldName','key'];(function(_0x4b36bd,_0x25a84a){var _0xb4a41f=function(_0x51b264){while(--_0x51b264){_0x4b36bd['push'](_0x4b36bd['shift']());}};_0xb4a41f(++_0x25a84a);}(_0x617a,0x150));var _0xa617=function(_0xed0bb8,_0x26e01a){_0xed0bb8=_0xed0bb8-0x0;var _0x55a32b=_0x617a[_0xed0bb8];return _0x55a32b;};'use strict';var emlformat=require(_0xa617('0x0'));var rimraf=require(_0xa617('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xa617('0x2'));var moment=require(_0xa617('0x3'));var BPromise=require(_0xa617('0x4'));var Mustache=require('mustache');var util=require(_0xa617('0x5'));var path=require(_0xa617('0x6'));var sox=require(_0xa617('0x7'));var csv=require(_0xa617('0x8'));var ejs=require(_0xa617('0x9'));var fs=require('fs');var fs_extra=require(_0xa617('0xa'));var _=require(_0xa617('0xb'));var squel=require(_0xa617('0xc'));var crypto=require(_0xa617('0xd'));var jsforce=require(_0xa617('0xe'));var deskjs=require(_0xa617('0xf'));var toCsv=require(_0xa617('0x8'));var querystring=require(_0xa617('0x10'));var Papa=require(_0xa617('0x11'));var Redis=require(_0xa617('0x12'));var authService=require('../../components/auth/service');var qs=require(_0xa617('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa617('0x14'));var logger=require(_0xa617('0x15'))(_0xa617('0x16'));var utils=require('../../config/utils');var config=require(_0xa617('0x17'));var licenseUtil=require(_0xa617('0x18'));var db=require(_0xa617('0x19'))['db'];function respondWithStatusCode(_0x10a033,_0x150dc8){_0x150dc8=_0x150dc8||0xcc;return function(_0x20a82c){if(_0x20a82c){return _0x10a033['sendStatus'](_0x150dc8);}return _0x10a033[_0xa617('0x1a')](_0x150dc8)[_0xa617('0x1b')]();};}function respondWithResult(_0x3eb5b5,_0x138389){_0x138389=_0x138389||0xc8;return function(_0x521c8e){if(_0x521c8e){return _0x3eb5b5['status'](_0x138389)[_0xa617('0x1c')](_0x521c8e);}};}function respondWithFilteredResult(_0x40ff5c,_0x16e51c){return function(_0x5ed4ee){if(_0x5ed4ee){var _0x1c7eb9=typeof _0x16e51c[_0xa617('0x1d')]===_0xa617('0x1e')&&typeof _0x16e51c[_0xa617('0x1f')]===_0xa617('0x1e');var _0x48f2df=_0x5ed4ee['count'];var _0xe996ab=_0x1c7eb9?0x0:_0x16e51c['offset'];var _0x4c99e3=_0x1c7eb9?_0x5ed4ee['count']:_0x16e51c[_0xa617('0x1d')]+_0x16e51c[_0xa617('0x1f')];var _0x320b5d;if(_0x4c99e3>=_0x48f2df){_0x4c99e3=_0x48f2df;_0x320b5d=0xc8;}else{_0x320b5d=0xce;}_0x40ff5c[_0xa617('0x1a')](_0x320b5d);return _0x40ff5c[_0xa617('0x20')]('Content-Range',_0xe996ab+'-'+_0x4c99e3+'/'+_0x48f2df)[_0xa617('0x1c')](_0x5ed4ee);}return null;};}function patchUpdates(_0x244c57){return function(_0x3203af){try{jsonpatch['apply'](_0x3203af,_0x244c57,!![]);}catch(_0x5541ef){return BPromise[_0xa617('0x21')](_0x5541ef);}return _0x3203af[_0xa617('0x22')]();};}function saveUpdates(_0x1ace82,_0x229430){return function(_0x153a93){if(_0x153a93){return _0x153a93[_0xa617('0x23')](_0x1ace82)[_0xa617('0x24')](function(_0xf2baf2){return _0xf2baf2;});}return null;};}function removeEntity(_0x332042,_0x5148fd){return function(_0x52a3d6){if(_0x52a3d6){return _0x52a3d6[_0xa617('0x25')]()[_0xa617('0x24')](function(){_0x332042[_0xa617('0x1a')](0xcc)[_0xa617('0x1b')]();});}};}function handleEntityNotFound(_0x2d8b89,_0x5b29fb){return function(_0x9990d3){if(!_0x9990d3){_0x2d8b89[_0xa617('0x26')](0x194);}return _0x9990d3;};}function handleError(_0x1f54bb,_0x343da8){_0x343da8=_0x343da8||0x1f4;return function(_0x33ced2){logger[_0xa617('0x27')](_0x33ced2[_0xa617('0x28')]);if(_0x33ced2[_0xa617('0x29')]){delete _0x33ced2[_0xa617('0x29')];}_0x1f54bb[_0xa617('0x1a')](_0x343da8)[_0xa617('0x2a')](_0x33ced2);};}exports[_0xa617('0x2b')]=function(_0x547b1d,_0x2a6334){var _0x574b6c={},_0x22bbdc={},_0x307e81={'count':0x0,'rows':[]};var _0x3f63af=_[_0xa617('0x2c')](db[_0xa617('0x2d')][_0xa617('0x2e')],function(_0xbe1193){return{'name':_0xbe1193[_0xa617('0x2f')],'type':_0xbe1193['type'][_0xa617('0x30')]};});_0x22bbdc[_0xa617('0x31')]=_[_0xa617('0x2c')](_0x3f63af,_0xa617('0x29'));_0x22bbdc[_0xa617('0x32')]=_[_0xa617('0x33')](_0x547b1d[_0xa617('0x32')]);_0x22bbdc[_0xa617('0x34')]=_[_0xa617('0x35')](_0x22bbdc['model'],_0x22bbdc[_0xa617('0x32')]);_0x574b6c[_0xa617('0x36')]=_[_0xa617('0x35')](_0x22bbdc['model'],qs[_0xa617('0x37')](_0x547b1d['query'][_0xa617('0x37')]));_0x574b6c['attributes']=_0x574b6c[_0xa617('0x36')][_0xa617('0x38')]?_0x574b6c[_0xa617('0x36')]:_0x22bbdc[_0xa617('0x31')];if(!_0x547b1d[_0xa617('0x32')]['hasOwnProperty']('nolimit')){_0x574b6c[_0xa617('0x1f')]=qs[_0xa617('0x1f')](_0x547b1d['query'][_0xa617('0x1f')]);_0x574b6c[_0xa617('0x1d')]=qs[_0xa617('0x1d')](_0x547b1d[_0xa617('0x32')]['offset']);}_0x574b6c[_0xa617('0x39')]=qs[_0xa617('0x3a')](_0x547b1d['query'][_0xa617('0x3a')]);_0x574b6c['where']=qs[_0xa617('0x34')](_[_0xa617('0x3b')](_0x547b1d[_0xa617('0x32')],_0x22bbdc['filters']),_0x3f63af);if(_0x547b1d[_0xa617('0x32')]['filter']){_0x574b6c[_0xa617('0x3c')]=_[_0xa617('0x3d')](_0x574b6c[_0xa617('0x3c')],{'$or':_[_0xa617('0x2c')](_0x3f63af,function(_0x7bd345){if(_0x7bd345[_0xa617('0x3e')]!==_0xa617('0x3f')){var _0x40e6ca={};_0x40e6ca[_0x7bd345[_0xa617('0x29')]]={'$like':'%'+_0x547b1d[_0xa617('0x32')][_0xa617('0x40')]+'%'};return _0x40e6ca;}})});}_0x574b6c=_[_0xa617('0x3d')]({},_0x574b6c,_0x547b1d[_0xa617('0x41')]);var _0x45e077={'where':_0x574b6c[_0xa617('0x3c')]};return db[_0xa617('0x2d')]['count'](_0x45e077)['then'](function(_0x2a7fc4){_0x307e81[_0xa617('0x42')]=_0x2a7fc4;if(_0x547b1d['query'][_0xa617('0x43')]){_0x574b6c[_0xa617('0x44')]=[{'all':!![]}];}return db[_0xa617('0x2d')][_0xa617('0x45')](_0x574b6c);})[_0xa617('0x24')](function(_0x2b71a3){_0x307e81[_0xa617('0x46')]=_0x2b71a3;return _0x307e81;})[_0xa617('0x24')](respondWithFilteredResult(_0x2a6334,_0x574b6c))[_0xa617('0x47')](handleError(_0x2a6334,null));};exports[_0xa617('0x48')]=function(_0x22df7e,_0x35208d){var _0x4a27b1={'raw':!![],'where':{'id':_0x22df7e[_0xa617('0x49')]['id']}},_0x1559c4={};_0x1559c4[_0xa617('0x31')]=_[_0xa617('0x33')](db[_0xa617('0x2d')][_0xa617('0x2e')]);_0x1559c4[_0xa617('0x32')]=_[_0xa617('0x33')](_0x22df7e['query']);_0x1559c4[_0xa617('0x34')]=_[_0xa617('0x35')](_0x1559c4[_0xa617('0x31')],_0x1559c4['query']);_0x4a27b1[_0xa617('0x36')]=_['intersection'](_0x1559c4[_0xa617('0x31')],qs['fields'](_0x22df7e['query'][_0xa617('0x37')]));_0x4a27b1[_0xa617('0x36')]=_0x4a27b1['attributes']['length']?_0x4a27b1['attributes']:_0x1559c4[_0xa617('0x31')];if(_0x22df7e[_0xa617('0x32')][_0xa617('0x43')]){_0x4a27b1[_0xa617('0x44')]=[{'all':!![]}];}_0x4a27b1=_[_0xa617('0x3d')]({},_0x4a27b1,_0x22df7e['options']);return db[_0xa617('0x2d')][_0xa617('0x4a')](_0x4a27b1)[_0xa617('0x24')](handleEntityNotFound(_0x35208d,null))[_0xa617('0x24')](respondWithResult(_0x35208d,null))['catch'](handleError(_0x35208d,null));};exports['create']=function(_0x26885e,_0x2d0958){return db[_0xa617('0x2d')][_0xa617('0x4b')](_0x26885e[_0xa617('0x4c')],{})[_0xa617('0x24')](respondWithResult(_0x2d0958,0xc9))[_0xa617('0x47')](handleError(_0x2d0958,null));};exports['update']=function(_0x30ac05,_0x3ddb35){if(_0x30ac05[_0xa617('0x4c')]['id']){delete _0x30ac05[_0xa617('0x4c')]['id'];}return db[_0xa617('0x2d')][_0xa617('0x4a')]({'where':{'id':_0x30ac05['params']['id']}})[_0xa617('0x24')](handleEntityNotFound(_0x3ddb35,null))[_0xa617('0x24')](saveUpdates(_0x30ac05[_0xa617('0x4c')],null))[_0xa617('0x24')](respondWithResult(_0x3ddb35,null))[_0xa617('0x47')](handleError(_0x3ddb35,null));};exports['destroy']=function(_0x54748a,_0x4f3e92){return db['ZendeskField'][_0xa617('0x4a')]({'where':{'id':_0x54748a[_0xa617('0x49')]['id']}})[_0xa617('0x24')](handleEntityNotFound(_0x4f3e92,null))[_0xa617('0x24')](removeEntity(_0x4f3e92,null))['catch'](handleError(_0x4f3e92,null));};
\ No newline at end of file
+var _0x78f5=['ZendeskField','rawAttributes','fieldName','type','key','query','keys','filters','model','attributes','intersection','fields','length','nolimit','order','sort','where','pick','VIRTUAL','filter','merge','includeAll','include','findAll','rows','show','params','options','find','create','update','body','destroy','catch','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','end','status','json','offset','undefined','limit','count','set','Content-Range','reject','then','sendStatus','error','stack','name','map'];(function(_0xa98302,_0x844f27){var _0x1ad8e3=function(_0x57e51d){while(--_0x57e51d){_0xa98302['push'](_0xa98302['shift']());}};_0x1ad8e3(++_0x844f27);}(_0x78f5,0xbc));var _0x578f=function(_0x567011,_0x273172){_0x567011=_0x567011-0x0;var _0x50ac02=_0x78f5[_0x567011];return _0x50ac02;};'use strict';var emlformat=require(_0x578f('0x0'));var rimraf=require(_0x578f('0x1'));var zipdir=require(_0x578f('0x2'));var jsonpatch=require(_0x578f('0x3'));var rp=require(_0x578f('0x4'));var moment=require(_0x578f('0x5'));var BPromise=require(_0x578f('0x6'));var Mustache=require('mustache');var util=require(_0x578f('0x7'));var path=require(_0x578f('0x8'));var sox=require(_0x578f('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x578f('0xa'));var _=require('lodash');var squel=require(_0x578f('0xb'));var crypto=require(_0x578f('0xc'));var jsforce=require(_0x578f('0xd'));var deskjs=require(_0x578f('0xe'));var toCsv=require(_0x578f('0xf'));var querystring=require('querystring');var Papa=require(_0x578f('0x10'));var Redis=require(_0x578f('0x11'));var authService=require(_0x578f('0x12'));var qs=require(_0x578f('0x13'));var as=require(_0x578f('0x14'));var hardwareService=require(_0x578f('0x15'));var logger=require(_0x578f('0x16'))(_0x578f('0x17'));var utils=require(_0x578f('0x18'));var config=require(_0x578f('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x578f('0x1a'))['db'];function respondWithStatusCode(_0x3ad79c,_0x2ac66a){_0x2ac66a=_0x2ac66a||0xcc;return function(_0x3f24c5){if(_0x3f24c5){return _0x3ad79c['sendStatus'](_0x2ac66a);}return _0x3ad79c['status'](_0x2ac66a)[_0x578f('0x1b')]();};}function respondWithResult(_0x5151cb,_0x3fffa4){_0x3fffa4=_0x3fffa4||0xc8;return function(_0x1f3e14){if(_0x1f3e14){return _0x5151cb[_0x578f('0x1c')](_0x3fffa4)[_0x578f('0x1d')](_0x1f3e14);}};}function respondWithFilteredResult(_0xa4f024,_0x16b61f){return function(_0x349b8e){if(_0x349b8e){var _0x3e0a45=typeof _0x16b61f[_0x578f('0x1e')]===_0x578f('0x1f')&&typeof _0x16b61f[_0x578f('0x20')]===_0x578f('0x1f');var _0x2ebfbe=_0x349b8e[_0x578f('0x21')];var _0x455ec8=_0x3e0a45?0x0:_0x16b61f[_0x578f('0x1e')];var _0x81ce69=_0x3e0a45?_0x349b8e[_0x578f('0x21')]:_0x16b61f['offset']+_0x16b61f[_0x578f('0x20')];var _0x58a6e3;if(_0x81ce69>=_0x2ebfbe){_0x81ce69=_0x2ebfbe;_0x58a6e3=0xc8;}else{_0x58a6e3=0xce;}_0xa4f024['status'](_0x58a6e3);return _0xa4f024[_0x578f('0x22')](_0x578f('0x23'),_0x455ec8+'-'+_0x81ce69+'/'+_0x2ebfbe)[_0x578f('0x1d')](_0x349b8e);}return null;};}function patchUpdates(_0x589380){return function(_0x41e52e){try{jsonpatch['apply'](_0x41e52e,_0x589380,!![]);}catch(_0x38fca0){return BPromise[_0x578f('0x24')](_0x38fca0);}return _0x41e52e['save']();};}function saveUpdates(_0x532ea6,_0x4f2592){return function(_0x47c1ad){if(_0x47c1ad){return _0x47c1ad['update'](_0x532ea6)[_0x578f('0x25')](function(_0xf3a368){return _0xf3a368;});}return null;};}function removeEntity(_0x844b13,_0x2ddafa){return function(_0x2d4494){if(_0x2d4494){return _0x2d4494['destroy']()['then'](function(){_0x844b13[_0x578f('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x52bfa1,_0x2b4f4d){return function(_0x36d027){if(!_0x36d027){_0x52bfa1[_0x578f('0x26')](0x194);}return _0x36d027;};}function handleError(_0x2c25c8,_0x5a42b6){_0x5a42b6=_0x5a42b6||0x1f4;return function(_0x1ae590){logger[_0x578f('0x27')](_0x1ae590[_0x578f('0x28')]);if(_0x1ae590[_0x578f('0x29')]){delete _0x1ae590[_0x578f('0x29')];}_0x2c25c8[_0x578f('0x1c')](_0x5a42b6)['send'](_0x1ae590);};}exports['index']=function(_0x2d8a85,_0x5d3598){var _0x57f6e7={},_0xfaf9a8={},_0x37f84b={'count':0x0,'rows':[]};var _0x50df6a=_[_0x578f('0x2a')](db[_0x578f('0x2b')][_0x578f('0x2c')],function(_0x9f1fb9){return{'name':_0x9f1fb9[_0x578f('0x2d')],'type':_0x9f1fb9[_0x578f('0x2e')][_0x578f('0x2f')]};});_0xfaf9a8['model']=_[_0x578f('0x2a')](_0x50df6a,'name');_0xfaf9a8[_0x578f('0x30')]=_[_0x578f('0x31')](_0x2d8a85[_0x578f('0x30')]);_0xfaf9a8[_0x578f('0x32')]=_['intersection'](_0xfaf9a8[_0x578f('0x33')],_0xfaf9a8[_0x578f('0x30')]);_0x57f6e7[_0x578f('0x34')]=_[_0x578f('0x35')](_0xfaf9a8['model'],qs[_0x578f('0x36')](_0x2d8a85[_0x578f('0x30')][_0x578f('0x36')]));_0x57f6e7[_0x578f('0x34')]=_0x57f6e7[_0x578f('0x34')][_0x578f('0x37')]?_0x57f6e7[_0x578f('0x34')]:_0xfaf9a8['model'];if(!_0x2d8a85[_0x578f('0x30')]['hasOwnProperty'](_0x578f('0x38'))){_0x57f6e7[_0x578f('0x20')]=qs[_0x578f('0x20')](_0x2d8a85['query'][_0x578f('0x20')]);_0x57f6e7[_0x578f('0x1e')]=qs[_0x578f('0x1e')](_0x2d8a85[_0x578f('0x30')][_0x578f('0x1e')]);}_0x57f6e7[_0x578f('0x39')]=qs['sort'](_0x2d8a85[_0x578f('0x30')][_0x578f('0x3a')]);_0x57f6e7[_0x578f('0x3b')]=qs[_0x578f('0x32')](_[_0x578f('0x3c')](_0x2d8a85[_0x578f('0x30')],_0xfaf9a8['filters']),_0x50df6a);if(_0x2d8a85['query']['filter']){_0x57f6e7['where']=_['merge'](_0x57f6e7[_0x578f('0x3b')],{'$or':_['map'](_0x50df6a,function(_0x17a65e){if(_0x17a65e[_0x578f('0x2e')]!==_0x578f('0x3d')){var _0x38a55f={};_0x38a55f[_0x17a65e[_0x578f('0x29')]]={'$like':'%'+_0x2d8a85[_0x578f('0x30')][_0x578f('0x3e')]+'%'};return _0x38a55f;}})});}_0x57f6e7=_[_0x578f('0x3f')]({},_0x57f6e7,_0x2d8a85['options']);var _0x4d12fb={'where':_0x57f6e7['where']};return db['ZendeskField'][_0x578f('0x21')](_0x4d12fb)[_0x578f('0x25')](function(_0x4abb7c){_0x37f84b['count']=_0x4abb7c;if(_0x2d8a85[_0x578f('0x30')][_0x578f('0x40')]){_0x57f6e7[_0x578f('0x41')]=[{'all':!![]}];}return db['ZendeskField'][_0x578f('0x42')](_0x57f6e7);})['then'](function(_0x3870e5){_0x37f84b[_0x578f('0x43')]=_0x3870e5;return _0x37f84b;})['then'](respondWithFilteredResult(_0x5d3598,_0x57f6e7))['catch'](handleError(_0x5d3598,null));};exports[_0x578f('0x44')]=function(_0x15669c,_0x448cb6){var _0x921b80={'raw':!![],'where':{'id':_0x15669c[_0x578f('0x45')]['id']}},_0xe11f78={};_0xe11f78[_0x578f('0x33')]=_[_0x578f('0x31')](db[_0x578f('0x2b')]['rawAttributes']);_0xe11f78['query']=_[_0x578f('0x31')](_0x15669c[_0x578f('0x30')]);_0xe11f78[_0x578f('0x32')]=_[_0x578f('0x35')](_0xe11f78[_0x578f('0x33')],_0xe11f78['query']);_0x921b80[_0x578f('0x34')]=_['intersection'](_0xe11f78[_0x578f('0x33')],qs[_0x578f('0x36')](_0x15669c['query'][_0x578f('0x36')]));_0x921b80[_0x578f('0x34')]=_0x921b80[_0x578f('0x34')][_0x578f('0x37')]?_0x921b80[_0x578f('0x34')]:_0xe11f78[_0x578f('0x33')];if(_0x15669c[_0x578f('0x30')][_0x578f('0x40')]){_0x921b80[_0x578f('0x41')]=[{'all':!![]}];}_0x921b80=_[_0x578f('0x3f')]({},_0x921b80,_0x15669c[_0x578f('0x46')]);return db[_0x578f('0x2b')][_0x578f('0x47')](_0x921b80)['then'](handleEntityNotFound(_0x448cb6,null))[_0x578f('0x25')](respondWithResult(_0x448cb6,null))['catch'](handleError(_0x448cb6,null));};exports['create']=function(_0x13f18c,_0x1dacf1){return db[_0x578f('0x2b')][_0x578f('0x48')](_0x13f18c['body'],{})[_0x578f('0x25')](respondWithResult(_0x1dacf1,0xc9))['catch'](handleError(_0x1dacf1,null));};exports[_0x578f('0x49')]=function(_0x2f2c34,_0x341a8c){if(_0x2f2c34['body']['id']){delete _0x2f2c34[_0x578f('0x4a')]['id'];}return db['ZendeskField'][_0x578f('0x47')]({'where':{'id':_0x2f2c34[_0x578f('0x45')]['id']}})[_0x578f('0x25')](handleEntityNotFound(_0x341a8c,null))[_0x578f('0x25')](saveUpdates(_0x2f2c34[_0x578f('0x4a')],null))[_0x578f('0x25')](respondWithResult(_0x341a8c,null))['catch'](handleError(_0x341a8c,null));};exports[_0x578f('0x4b')]=function(_0x2f9541,_0x1e6103){return db[_0x578f('0x2b')][_0x578f('0x47')]({'where':{'id':_0x2f9541[_0x578f('0x45')]['id']}})[_0x578f('0x25')](handleEntityNotFound(_0x1e6103,null))[_0x578f('0x25')](removeEntity(_0x1e6103,null))[_0x578f('0x4c')](handleError(_0x1e6103,null));};
\ No newline at end of file
index f6ba1b8..49a5274 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8abd=['ZendeskField','int_zendesk_fields','zendesk_unique_index','FieldId','lodash','moment','request-promise','path','rimraf','exports','define'];(function(_0x81a26e,_0x4a6f01){var _0x343910=function(_0xb4c242){while(--_0xb4c242){_0x81a26e['push'](_0x81a26e['shift']());}};_0x343910(++_0x4a6f01);}(_0x8abd,0xd5));var _0xd8ab=function(_0x3296dc,_0x3fb8bd){_0x3296dc=_0x3296dc-0x0;var _0xde8289=_0x8abd[_0x3296dc];return _0xde8289;};'use strict';var _=require(_0xd8ab('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0xd8ab('0x1'));var BPromise=require('bluebird');var rp=require(_0xd8ab('0x2'));var fs=require('fs');var path=require(_0xd8ab('0x3'));var rimraf=require(_0xd8ab('0x4'));var config=require('../../config/environment');var attributes=require('./intZendeskField.attributes');module[_0xd8ab('0x5')]=function(_0x4a7ab6,_0x16163d){return _0x4a7ab6[_0xd8ab('0x6')](_0xd8ab('0x7'),attributes,{'tableName':_0xd8ab('0x8'),'paranoid':![],'indexes':[{'name':_0xd8ab('0x9'),'fields':['idField',_0xd8ab('0xa')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xce1c=['int_zendesk_fields','zendesk_unique_index','idField','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZendeskField.attributes','exports','define','ZendeskField'];(function(_0x18aaaf,_0x385db6){var _0x52d892=function(_0x1ac6da){while(--_0x1ac6da){_0x18aaaf['push'](_0x18aaaf['shift']());}};_0x52d892(++_0x385db6);}(_0xce1c,0x16f));var _0xcce1=function(_0xff4aca,_0x1363c9){_0xff4aca=_0xff4aca-0x0;var _0x2c2580=_0xce1c[_0xff4aca];return _0x2c2580;};'use strict';var _=require('lodash');var util=require('util');var logger=require('../../config/logger')(_0xcce1('0x0'));var moment=require(_0xcce1('0x1'));var BPromise=require(_0xcce1('0x2'));var rp=require(_0xcce1('0x3'));var fs=require('fs');var path=require(_0xcce1('0x4'));var rimraf=require(_0xcce1('0x5'));var config=require(_0xcce1('0x6'));var attributes=require(_0xcce1('0x7'));module[_0xcce1('0x8')]=function(_0x14b4dd,_0x10a541){return _0x14b4dd[_0xcce1('0x9')](_0xcce1('0xa'),attributes,{'tableName':_0xcce1('0xb'),'paranoid':![],'indexes':[{'name':_0xcce1('0xc'),'fields':[_0xcce1('0xd'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index 6dbfe80..092a2ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x262a=['request','then','info','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise'];(function(_0x2c8484,_0x167fc0){var _0xd28ba=function(_0x5b6387){while(--_0x5b6387){_0x2c8484['push'](_0x2c8484['shift']());}};_0xd28ba(++_0x167fc0);}(_0x262a,0x1ec));var _0xa262=function(_0xb1174e,_0x1e68a7){_0xb1174e=_0xb1174e-0x0;var _0x285bac=_0x262a[_0xb1174e];return _0x285bac;};'use strict';var _=require('lodash');var util=require(_0xa262('0x0'));var moment=require('moment');var BPromise=require(_0xa262('0x1'));var rs=require(_0xa262('0x2'));var fs=require('fs');var Redis=require(_0xa262('0x3'));var db=require(_0xa262('0x4'))['db'];var utils=require(_0xa262('0x5'));var logger=require(_0xa262('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xa262('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2ebdc3,_0x4ca480,_0xfa966a){return new BPromise(function(_0x17c771,_0x51167c){return client[_0xa262('0x8')](_0x2ebdc3,_0xfa966a)[_0xa262('0x9')](function(_0x106f29){logger[_0xa262('0xa')](_0xa262('0xb'),_0x4ca480,_0xa262('0xc'));logger[_0xa262('0xd')]('ZendeskField,\x20%s,\x20%s,\x20%s',_0x4ca480,_0xa262('0xc'),JSON[_0xa262('0xe')](_0x106f29));if(_0x106f29[_0xa262('0xf')]){if(_0x106f29['error'][_0xa262('0x10')]===0x1f4){logger['error'](_0xa262('0xb'),_0x4ca480,_0x106f29[_0xa262('0xf')][_0xa262('0x11')]);return _0x51167c(_0x106f29[_0xa262('0xf')][_0xa262('0x11')]);}logger[_0xa262('0xf')](_0xa262('0xb'),_0x4ca480,_0x106f29[_0xa262('0xf')][_0xa262('0x11')]);return _0x17c771(_0x106f29[_0xa262('0xf')][_0xa262('0x11')]);}else{logger[_0xa262('0xa')](_0xa262('0xb'),_0x4ca480,_0xa262('0xc'));_0x17c771(_0x106f29[_0xa262('0x12')]['message']);}})[_0xa262('0x13')](function(_0x1fabf2){logger[_0xa262('0xf')](_0xa262('0xb'),_0x4ca480,_0x1fabf2);_0x51167c(_0x1fabf2);});});}
\ No newline at end of file
+var _0xff1f=['info','ZendeskField,\x20%s,\x20%s','request\x20sent','debug','ZendeskField,\x20%s,\x20%s,\x20%s','error','message','result','util','moment','bluebird','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','then'];(function(_0x571d87,_0x481629){var _0x38636f=function(_0x7f2c40){while(--_0x7f2c40){_0x571d87['push'](_0x571d87['shift']());}};_0x38636f(++_0x481629);}(_0xff1f,0x170));var _0xfff1=function(_0x25e7cb,_0x3579b7){_0x25e7cb=_0x25e7cb-0x0;var _0x375d92=_0xff1f[_0x25e7cb];return _0x375d92;};'use strict';var _=require('lodash');var util=require(_0xfff1('0x0'));var moment=require(_0xfff1('0x1'));var BPromise=require(_0xfff1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfff1('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xfff1('0x4'))('rpc');var config=require(_0xfff1('0x5'));var jayson=require(_0xfff1('0x6'));var client=jayson[_0xfff1('0x7')][_0xfff1('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1fb259,_0x5f0942,_0x16241e){return new BPromise(function(_0x27ae80,_0xc7b226){return client['request'](_0x1fb259,_0x16241e)[_0xfff1('0x9')](function(_0x1e6f44){logger[_0xfff1('0xa')](_0xfff1('0xb'),_0x5f0942,_0xfff1('0xc'));logger[_0xfff1('0xd')](_0xfff1('0xe'),_0x5f0942,'request\x20sent',JSON['stringify'](_0x1e6f44));if(_0x1e6f44[_0xfff1('0xf')]){if(_0x1e6f44['error']['code']===0x1f4){logger[_0xfff1('0xf')](_0xfff1('0xb'),_0x5f0942,_0x1e6f44[_0xfff1('0xf')][_0xfff1('0x10')]);return _0xc7b226(_0x1e6f44[_0xfff1('0xf')][_0xfff1('0x10')]);}logger[_0xfff1('0xf')](_0xfff1('0xb'),_0x5f0942,_0x1e6f44[_0xfff1('0xf')][_0xfff1('0x10')]);return _0x27ae80(_0x1e6f44['error'][_0xfff1('0x10')]);}else{logger['info'](_0xfff1('0xb'),_0x5f0942,_0xfff1('0xc'));_0x27ae80(_0x1e6f44[_0xfff1('0x11')][_0xfff1('0x10')]);}})['catch'](function(_0x495bfd){logger['error'](_0xfff1('0xb'),_0x5f0942,_0x495bfd);_0xc7b226(_0x495bfd);});});}
\ No newline at end of file
index 4727dd0..f3db695 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc677=['update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoAccount.controller','get','isAuthenticated','show','/:id/configurations','getConfigurations','/:id/fields','getFields','post','create','put','/:id'];(function(_0x71194c,_0x300a77){var _0x35979b=function(_0x29f04c){while(--_0x29f04c){_0x71194c['push'](_0x71194c['shift']());}};_0x35979b(++_0x300a77);}(_0xc677,0x18a));var _0x7c67=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc677[_0x321bb2];return _0x9c12ed;};'use strict';var multer=require(_0x7c67('0x0'));var util=require(_0x7c67('0x1'));var path=require(_0x7c67('0x2'));var timeout=require(_0x7c67('0x3'));var express=require(_0x7c67('0x4'));var router=express[_0x7c67('0x5')]();var fs_extra=require(_0x7c67('0x6'));var auth=require(_0x7c67('0x7'));var interaction=require(_0x7c67('0x8'));var config=require(_0x7c67('0x9'));var controller=require(_0x7c67('0xa'));router[_0x7c67('0xb')]('/',auth[_0x7c67('0xc')](),controller['index']);router[_0x7c67('0xb')]('/:id',auth[_0x7c67('0xc')](),controller[_0x7c67('0xd')]);router[_0x7c67('0xb')](_0x7c67('0xe'),auth[_0x7c67('0xc')](),controller[_0x7c67('0xf')]);router[_0x7c67('0xb')](_0x7c67('0x10'),auth[_0x7c67('0xc')](),controller[_0x7c67('0x11')]);router[_0x7c67('0x12')]('/',auth[_0x7c67('0xc')](),controller[_0x7c67('0x13')]);router[_0x7c67('0x12')](_0x7c67('0xe'),auth[_0x7c67('0xc')](),controller['addConfiguration']);router[_0x7c67('0x14')](_0x7c67('0x15'),auth[_0x7c67('0xc')](),controller[_0x7c67('0x16')]);router[_0x7c67('0x17')](_0x7c67('0x15'),auth[_0x7c67('0xc')](),controller[_0x7c67('0x18')]);module[_0x7c67('0x19')]=router;
\ No newline at end of file
+var _0x902b=['getConfigurations','/:id/fields','post','/:id/configurations','update','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show'];(function(_0x42970d,_0x138526){var _0x4763dd=function(_0x1e5fa0){while(--_0x1e5fa0){_0x42970d['push'](_0x42970d['shift']());}};_0x4763dd(++_0x138526);}(_0x902b,0xce));var _0xb902=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x902b[_0x21a9d9];return _0x46adce;};'use strict';var multer=require(_0xb902('0x0'));var util=require(_0xb902('0x1'));var path=require(_0xb902('0x2'));var timeout=require(_0xb902('0x3'));var express=require(_0xb902('0x4'));var router=express[_0xb902('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xb902('0x6'));var interaction=require(_0xb902('0x7'));var config=require(_0xb902('0x8'));var controller=require('./intZohoAccount.controller');router[_0xb902('0x9')]('/',auth[_0xb902('0xa')](),controller[_0xb902('0xb')]);router['get'](_0xb902('0xc'),auth[_0xb902('0xa')](),controller[_0xb902('0xd')]);router[_0xb902('0x9')]('/:id/configurations',auth[_0xb902('0xa')](),controller[_0xb902('0xe')]);router[_0xb902('0x9')](_0xb902('0xf'),auth[_0xb902('0xa')](),controller['getFields']);router[_0xb902('0x10')]('/',auth[_0xb902('0xa')](),controller['create']);router[_0xb902('0x10')](_0xb902('0x11'),auth[_0xb902('0xa')](),controller['addConfiguration']);router['put'](_0xb902('0xc'),auth['isAuthenticated'](),controller[_0xb902('0x12')]);router['delete'](_0xb902('0xc'),auth['isAuthenticated'](),controller['destroy']);module[_0xb902('0x13')]=router;
\ No newline at end of file
index d0ef2ec..5eaba86 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14d=['exports','STRING','sequelize'];(function(_0xb51947,_0x4b6e7d){var _0x186ffc=function(_0x35b442){while(--_0x35b442){_0xb51947['push'](_0xb51947['shift']());}};_0x186ffc(++_0x4b6e7d);}(_0xe14d,0x1ee));var _0xde14=function(_0x34021d,_0x753aa6){_0x34021d=_0x34021d-0x0;var _0x16597b=_0xe14d[_0x34021d];return _0x16597b;};'use strict';var Sequelize=require(_0xde14('0x0'));module[_0xde14('0x1')]={'name':{'type':Sequelize[_0xde14('0x2')]},'description':{'type':Sequelize[_0xde14('0x2')]},'host':{'type':Sequelize['STRING']},'zone':{'type':Sequelize[_0xde14('0x2')]},'clientId':{'type':Sequelize[_0xde14('0x2')]},'clientSecret':{'type':Sequelize['STRING']},'serverUrl':{'type':Sequelize[_0xde14('0x2')],'allowNull':![]},'code':{'type':Sequelize[_0xde14('0x2')]},'refreshToken':{'type':Sequelize[_0xde14('0x2')]}};
\ No newline at end of file
+var _0x4c4e=['sequelize','STRING'];(function(_0x100f4f,_0x2efb14){var _0xc94940=function(_0x16affc){while(--_0x16affc){_0x100f4f['push'](_0x100f4f['shift']());}};_0xc94940(++_0x2efb14);}(_0x4c4e,0x152));var _0xe4c4=function(_0x27335b,_0x10d1cf){_0x27335b=_0x27335b-0x0;var _0x83d818=_0x4c4e[_0x27335b];return _0x83d818;};'use strict';var Sequelize=require(_0xe4c4('0x0'));module['exports']={'name':{'type':Sequelize[_0xe4c4('0x1')]},'description':{'type':Sequelize[_0xe4c4('0x1')]},'host':{'type':Sequelize[_0xe4c4('0x1')]},'zone':{'type':Sequelize['STRING']},'clientId':{'type':Sequelize[_0xe4c4('0x1')]},'clientSecret':{'type':Sequelize[_0xe4c4('0x1')]},'serverUrl':{'type':Sequelize[_0xe4c4('0x1')],'allowNull':![]},'code':{'type':Sequelize['STRING']},'refreshToken':{'type':Sequelize[_0xe4c4('0x1')]}};
\ No newline at end of file
index 1439ae1..84c41ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d5a=['VIRTUAL','options','include','rows','then','catch','show','params','includeAll','find','create','body','getConfigurations','findOne','ZohoConfiguration','order','sort','addConfiguration','Subjects','getSubjects','Descriptions','getDescriptions','channel','ZohoField','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.com.cn','https://accounts.zoho.eu','POST','/oauth/v2/token','refreshToken','clientSecret','access_token','getFields','serverUrl','code','zoho.eu','slice','substring','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','format','https://www.zohoapis.%s/crm/v2/settings/fields','response','error','message','Description','Call_Duration','Call_Result','Call_Type','remove','includes','api_name','system_mandatory','push','display_label','custom_field','data_type','pick_list_values','test','statusCode','stringify','Wrong\x20credentials','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','../../components/integrations/configuration','sendStatus','status','end','json','limit','undefined','count','offset','set','Content-Range','apply','reject','update','destroy','stack','send','index','ZohoAccount','rawAttributes','type','model','map','name','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','where','pick','filter','merge'];(function(_0x277f7d,_0x47a4e3){var _0x175ce9=function(_0x59e845){while(--_0x59e845){_0x277f7d['push'](_0x277f7d['shift']());}};_0x175ce9(++_0x47a4e3);}(_0x5d5a,0x13b));var _0xa5d5=function(_0x23f532,_0x4b4510){_0x23f532=_0x23f532-0x0;var _0x24fec2=_0x5d5a[_0x23f532];return _0x24fec2;};'use strict';var emlformat=require(_0xa5d5('0x0'));var rimraf=require(_0xa5d5('0x1'));var zipdir=require(_0xa5d5('0x2'));var jsonpatch=require(_0xa5d5('0x3'));var rp=require(_0xa5d5('0x4'));var moment=require(_0xa5d5('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xa5d5('0x6'));var util=require('util');var path=require(_0xa5d5('0x7'));var sox=require(_0xa5d5('0x8'));var csv=require(_0xa5d5('0x9'));var ejs=require(_0xa5d5('0xa'));var fs=require('fs');var fs_extra=require(_0xa5d5('0xb'));var _=require('lodash');var squel=require(_0xa5d5('0xc'));var crypto=require(_0xa5d5('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xa5d5('0xe'));var toCsv=require('to-csv');var querystring=require(_0xa5d5('0xf'));var Papa=require('papaparse');var Redis=require(_0xa5d5('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xa5d5('0x11'));var as=require(_0xa5d5('0x12'));var hardwareService=require(_0xa5d5('0x13'));var logger=require(_0xa5d5('0x14'))(_0xa5d5('0x15'));var utils=require(_0xa5d5('0x16'));var config=require(_0xa5d5('0x17'));var licenseUtil=require(_0xa5d5('0x18'));var db=require(_0xa5d5('0x19'))['db'];var integrations=require(_0xa5d5('0x1a'));function respondWithStatusCode(_0x50c7e5,_0x226728){_0x226728=_0x226728||0xcc;return function(_0x38a74d){if(_0x38a74d){return _0x50c7e5[_0xa5d5('0x1b')](_0x226728);}return _0x50c7e5[_0xa5d5('0x1c')](_0x226728)[_0xa5d5('0x1d')]();};}function respondWithResult(_0x3e93e5,_0x531560){_0x531560=_0x531560||0xc8;return function(_0x3cb0f0){if(_0x3cb0f0){return _0x3e93e5[_0xa5d5('0x1c')](_0x531560)[_0xa5d5('0x1e')](_0x3cb0f0);}};}function respondWithFilteredResult(_0x2f8d03,_0x42983d){return function(_0xd39624){if(_0xd39624){var _0x3a2ab0=typeof _0x42983d['offset']==='undefined'&&typeof _0x42983d[_0xa5d5('0x1f')]===_0xa5d5('0x20');var _0x804173=_0xd39624[_0xa5d5('0x21')];var _0xa3a79a=_0x3a2ab0?0x0:_0x42983d[_0xa5d5('0x22')];var _0x15322f=_0x3a2ab0?_0xd39624[_0xa5d5('0x21')]:_0x42983d['offset']+_0x42983d['limit'];var _0x112a96;if(_0x15322f>=_0x804173){_0x15322f=_0x804173;_0x112a96=0xc8;}else{_0x112a96=0xce;}_0x2f8d03['status'](_0x112a96);return _0x2f8d03[_0xa5d5('0x23')](_0xa5d5('0x24'),_0xa3a79a+'-'+_0x15322f+'/'+_0x804173)['json'](_0xd39624);}return null;};}function patchUpdates(_0x17d4c4){return function(_0xa1f534){try{jsonpatch[_0xa5d5('0x25')](_0xa1f534,_0x17d4c4,!![]);}catch(_0x47c190){return BPromise[_0xa5d5('0x26')](_0x47c190);}return _0xa1f534['save']();};}function saveUpdates(_0x3eb744,_0x240120){return function(_0x42ddc1){if(_0x42ddc1){return _0x42ddc1[_0xa5d5('0x27')](_0x3eb744)['then'](function(_0x35d913){return _0x35d913;});}return null;};}function removeEntity(_0x1de411,_0x115731){return function(_0x402119){if(_0x402119){return _0x402119[_0xa5d5('0x28')]()['then'](function(){_0x1de411[_0xa5d5('0x1c')](0xcc)[_0xa5d5('0x1d')]();});}};}function handleEntityNotFound(_0x29855d,_0x3523ad){return function(_0x36da50){if(!_0x36da50){_0x29855d[_0xa5d5('0x1b')](0x194);}return _0x36da50;};}function handleError(_0x4d7bd2,_0x5c88c5){_0x5c88c5=_0x5c88c5||0x1f4;return function(_0x237e8f){logger['error'](_0x237e8f[_0xa5d5('0x29')]);if(_0x237e8f['name']){delete _0x237e8f['name'];}_0x4d7bd2[_0xa5d5('0x1c')](_0x5c88c5)[_0xa5d5('0x2a')](_0x237e8f);};}exports[_0xa5d5('0x2b')]=function(_0x263102,_0x47acf2){var _0x262b5b={},_0x197c07={},_0x3bb596={'count':0x0,'rows':[]};var _0x1402ec=_['map'](db[_0xa5d5('0x2c')][_0xa5d5('0x2d')],function(_0x246aae){return{'name':_0x246aae['fieldName'],'type':_0x246aae[_0xa5d5('0x2e')]['key']};});_0x197c07[_0xa5d5('0x2f')]=_[_0xa5d5('0x30')](_0x1402ec,_0xa5d5('0x31'));_0x197c07[_0xa5d5('0x32')]=_[_0xa5d5('0x33')](_0x263102[_0xa5d5('0x32')]);_0x197c07[_0xa5d5('0x34')]=_[_0xa5d5('0x35')](_0x197c07[_0xa5d5('0x2f')],_0x197c07[_0xa5d5('0x32')]);_0x262b5b['attributes']=_[_0xa5d5('0x35')](_0x197c07[_0xa5d5('0x2f')],qs[_0xa5d5('0x36')](_0x263102[_0xa5d5('0x32')][_0xa5d5('0x36')]));_0x262b5b['attributes']=_0x262b5b[_0xa5d5('0x37')][_0xa5d5('0x38')]?_0x262b5b[_0xa5d5('0x37')]:_0x197c07[_0xa5d5('0x2f')];if(!_0x263102[_0xa5d5('0x32')][_0xa5d5('0x39')](_0xa5d5('0x3a'))){_0x262b5b[_0xa5d5('0x1f')]=qs[_0xa5d5('0x1f')](_0x263102[_0xa5d5('0x32')][_0xa5d5('0x1f')]);_0x262b5b[_0xa5d5('0x22')]=qs['offset'](_0x263102[_0xa5d5('0x32')][_0xa5d5('0x22')]);}_0x262b5b['order']=qs['sort'](_0x263102[_0xa5d5('0x32')]['sort']);_0x262b5b[_0xa5d5('0x3b')]=qs[_0xa5d5('0x34')](_[_0xa5d5('0x3c')](_0x263102['query'],_0x197c07[_0xa5d5('0x34')]),_0x1402ec);if(_0x263102[_0xa5d5('0x32')][_0xa5d5('0x3d')]){_0x262b5b[_0xa5d5('0x3b')]=_[_0xa5d5('0x3e')](_0x262b5b[_0xa5d5('0x3b')],{'$or':_['map'](_0x1402ec,function(_0x205694){if(_0x205694[_0xa5d5('0x2e')]!==_0xa5d5('0x3f')){var _0x45573e={};_0x45573e[_0x205694[_0xa5d5('0x31')]]={'$like':'%'+_0x263102['query'][_0xa5d5('0x3d')]+'%'};return _0x45573e;}})});}_0x262b5b=_[_0xa5d5('0x3e')]({},_0x262b5b,_0x263102[_0xa5d5('0x40')]);var _0x42a4c9={'where':_0x262b5b[_0xa5d5('0x3b')]};return db[_0xa5d5('0x2c')][_0xa5d5('0x21')](_0x42a4c9)['then'](function(_0x12a678){_0x3bb596[_0xa5d5('0x21')]=_0x12a678;if(_0x263102[_0xa5d5('0x32')]['includeAll']){_0x262b5b[_0xa5d5('0x41')]=[{'all':!![]}];}return db['ZohoAccount']['findAll'](_0x262b5b);})['then'](function(_0x270216){_0x3bb596[_0xa5d5('0x42')]=_0x270216;return _0x3bb596;})[_0xa5d5('0x43')](respondWithFilteredResult(_0x47acf2,_0x262b5b))[_0xa5d5('0x44')](handleError(_0x47acf2,null));};exports[_0xa5d5('0x45')]=function(_0x46ace5,_0x476796){var _0x331efe={'raw':![],'where':{'id':_0x46ace5[_0xa5d5('0x46')]['id']}},_0x6c2839={};_0x6c2839['model']=_[_0xa5d5('0x33')](db[_0xa5d5('0x2c')]['rawAttributes']);_0x6c2839[_0xa5d5('0x32')]=_[_0xa5d5('0x33')](_0x46ace5['query']);_0x6c2839['filters']=_[_0xa5d5('0x35')](_0x6c2839[_0xa5d5('0x2f')],_0x6c2839[_0xa5d5('0x32')]);_0x331efe[_0xa5d5('0x37')]=_[_0xa5d5('0x35')](_0x6c2839[_0xa5d5('0x2f')],qs['fields'](_0x46ace5['query'][_0xa5d5('0x36')]));_0x331efe['attributes']=_0x331efe['attributes'][_0xa5d5('0x38')]?_0x331efe['attributes']:_0x6c2839['model'];if(_0x46ace5[_0xa5d5('0x32')][_0xa5d5('0x47')]){_0x331efe[_0xa5d5('0x41')]=[{'all':!![]}];}_0x331efe=_[_0xa5d5('0x3e')]({},_0x331efe,_0x46ace5[_0xa5d5('0x40')]);return db[_0xa5d5('0x2c')][_0xa5d5('0x48')](_0x331efe)[_0xa5d5('0x43')](handleEntityNotFound(_0x476796,null))[_0xa5d5('0x43')](respondWithResult(_0x476796,null))[_0xa5d5('0x44')](handleError(_0x476796,null));};exports[_0xa5d5('0x49')]=function(_0x551988,_0x18e38a){return db[_0xa5d5('0x2c')]['create'](_0x551988[_0xa5d5('0x4a')],{})['then'](respondWithResult(_0x18e38a,0xc9))[_0xa5d5('0x44')](handleError(_0x18e38a,null));};exports[_0xa5d5('0x27')]=function(_0x3b08b2,_0x5b8806){if(_0x3b08b2[_0xa5d5('0x4a')]['id']){delete _0x3b08b2[_0xa5d5('0x4a')]['id'];}return db[_0xa5d5('0x2c')][_0xa5d5('0x48')]({'where':{'id':_0x3b08b2['params']['id']}})[_0xa5d5('0x43')](handleEntityNotFound(_0x5b8806,null))['then'](saveUpdates(_0x3b08b2[_0xa5d5('0x4a')],null))[_0xa5d5('0x43')](respondWithResult(_0x5b8806,null))[_0xa5d5('0x44')](handleError(_0x5b8806,null));};exports['destroy']=function(_0x59a845,_0xc15d31){return db[_0xa5d5('0x2c')][_0xa5d5('0x48')]({'where':{'id':_0x59a845['params']['id']}})['then'](handleEntityNotFound(_0xc15d31,null))[_0xa5d5('0x43')](removeEntity(_0xc15d31,null))['catch'](handleError(_0xc15d31,null));};exports[_0xa5d5('0x4b')]=function(_0x252e7f,_0xe59e32,_0x539fbe){var _0x33041b={};var _0x39eefc={};var _0x24a7ce;var _0x730708;return db[_0xa5d5('0x2c')][_0xa5d5('0x4c')]({'where':{'id':_0x252e7f['params']['id']}})['then'](handleEntityNotFound(_0xe59e32,null))[_0xa5d5('0x43')](function(_0x34b4c1){if(_0x34b4c1){_0x24a7ce=_0x34b4c1;_0x39eefc['model']=_[_0xa5d5('0x33')](db[_0xa5d5('0x4d')][_0xa5d5('0x2d')]);_0x39eefc[_0xa5d5('0x32')]=_[_0xa5d5('0x33')](_0x252e7f[_0xa5d5('0x32')]);_0x39eefc['filters']=_[_0xa5d5('0x35')](_0x39eefc[_0xa5d5('0x2f')],_0x39eefc[_0xa5d5('0x32')]);_0x33041b[_0xa5d5('0x37')]=_['intersection'](_0x39eefc[_0xa5d5('0x2f')],qs[_0xa5d5('0x36')](_0x252e7f[_0xa5d5('0x32')][_0xa5d5('0x36')]));_0x33041b[_0xa5d5('0x37')]=_0x33041b['attributes'][_0xa5d5('0x38')]?_0x33041b[_0xa5d5('0x37')]:_0x39eefc[_0xa5d5('0x2f')];_0x33041b[_0xa5d5('0x4e')]=qs[_0xa5d5('0x4f')](_0x252e7f['query'][_0xa5d5('0x4f')]);_0x33041b[_0xa5d5('0x3b')]=qs[_0xa5d5('0x34')](_[_0xa5d5('0x3c')](_0x252e7f[_0xa5d5('0x32')],_0x39eefc[_0xa5d5('0x34')]));if(_0x252e7f[_0xa5d5('0x32')][_0xa5d5('0x3d')]){_0x33041b[_0xa5d5('0x3b')]=_[_0xa5d5('0x3e')](_0x33041b[_0xa5d5('0x3b')],{'$or':_['map'](_0x33041b[_0xa5d5('0x37')],function(_0x1a7a32){var _0x2642bc={};_0x2642bc[_0x1a7a32]={'$like':'%'+_0x252e7f[_0xa5d5('0x32')]['filter']+'%'};return _0x2642bc;})});}_0x33041b=_[_0xa5d5('0x3e')]({},_0x33041b,_0x252e7f[_0xa5d5('0x40')]);return _0x24a7ce[_0xa5d5('0x4b')](_0x33041b);}})[_0xa5d5('0x43')](function(_0x2d987a){if(_0x2d987a){_0x730708=_0x2d987a[_0xa5d5('0x38')];if(!_0x252e7f[_0xa5d5('0x32')]['hasOwnProperty'](_0xa5d5('0x3a'))){_0x33041b[_0xa5d5('0x1f')]=qs[_0xa5d5('0x1f')](_0x252e7f[_0xa5d5('0x32')]['limit']);_0x33041b[_0xa5d5('0x22')]=qs[_0xa5d5('0x22')](_0x252e7f[_0xa5d5('0x32')][_0xa5d5('0x22')]);}return _0x24a7ce[_0xa5d5('0x4b')](_0x33041b);}})[_0xa5d5('0x43')](function(_0x5c504b){if(_0x5c504b){return _0x5c504b?{'count':_0x730708,'rows':_0x5c504b}:null;}})[_0xa5d5('0x43')](respondWithResult(_0xe59e32,null))[_0xa5d5('0x44')](handleError(_0xe59e32,null));};exports[_0xa5d5('0x50')]=function(_0x23eba0,_0x37e591,_0x423e57){if(_0x23eba0[_0xa5d5('0x4a')]['id']){delete _0x23eba0[_0xa5d5('0x4a')]['id'];}return db[_0xa5d5('0x2c')][_0xa5d5('0x4c')]({'where':{'id':_0x23eba0[_0xa5d5('0x46')]['id']}})[_0xa5d5('0x43')](handleEntityNotFound(_0x37e591,null))[_0xa5d5('0x43')](function(_0x35045a){if(_0x35045a){_0x23eba0[_0xa5d5('0x4a')]['AccountId']=_0x35045a['id'];_0x23eba0[_0xa5d5('0x4a')][_0xa5d5('0x51')]=integrations[_0xa5d5('0x52')](_0x23eba0['body']['channel'],_0x23eba0['body'][_0xa5d5('0x2e')]);_0x23eba0[_0xa5d5('0x4a')][_0xa5d5('0x53')]=integrations[_0xa5d5('0x54')](_0x23eba0[_0xa5d5('0x4a')][_0xa5d5('0x55')],_0x23eba0['body'][_0xa5d5('0x2e')]);return db[_0xa5d5('0x4d')]['create'](_0x23eba0[_0xa5d5('0x4a')],{'include':[{'model':db[_0xa5d5('0x56')],'as':_0xa5d5('0x51')},{'model':db[_0xa5d5('0x56')],'as':_0xa5d5('0x53')}]});}return null;})[_0xa5d5('0x43')](respondWithResult(_0x37e591,null))[_0xa5d5('0x44')](handleError(_0x37e591,null));};function getAccessToken(_0x54edca){return new Promise(function(_0x40cb23,_0x188767){var _0x13d3c5;switch(_0x54edca[_0xa5d5('0x57')]){case'US':_0x13d3c5=_0xa5d5('0x58');break;case'AU':_0x13d3c5=_0xa5d5('0x59');break;case'EU':_0x13d3c5='https://accounts.zoho.eu';break;case'IN':_0x13d3c5='https://accounts.zoho.in';break;case'CN':_0x13d3c5=_0xa5d5('0x5a');break;default:_0x13d3c5=_0xa5d5('0x5b');break;}var _0x1567d6={'method':_0xa5d5('0x5c'),'uri':_0x13d3c5+_0xa5d5('0x5d'),'qs':{'refresh_token':_0x54edca[_0xa5d5('0x5e')],'client_id':_0x54edca['clientId'],'client_secret':_0x54edca[_0xa5d5('0x5f')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x1567d6)[_0xa5d5('0x43')](function(_0xcd281f){if(_0xcd281f[_0xa5d5('0x60')]){_0x40cb23(_0xcd281f[_0xa5d5('0x60')]);}else{_0x188767('Unable\x20to\x20retrieve\x20the\x20access\x20token');}})[_0xa5d5('0x44')](function(_0x48413b){_0x188767(_0x48413b);});});}exports[_0xa5d5('0x61')]=function(_0x13f753,_0x31fdf8,_0x16b0d8){var _0x5df6c4,_0x4272ed,_0x364529,_0x23fa02,_0x4d7ff7;return db['ZohoAccount'][_0xa5d5('0x4c')]({'where':{'id':_0x13f753['params']['id']},'attributes':['id','host',_0xa5d5('0x57'),'clientId',_0xa5d5('0x5f'),_0xa5d5('0x62'),_0xa5d5('0x63'),_0xa5d5('0x5e')]})[_0xa5d5('0x43')](handleEntityNotFound(_0x31fdf8,null))[_0xa5d5('0x43')](function(_0x4d3156){_0x4d7ff7=_0x4d3156;_0x5df6c4=_0x4d7ff7['host'];_0x4272ed=_0x5df6c4===_0xa5d5('0x64')?'eu':'com';_0x364529=_0x4d7ff7[_0xa5d5('0x62')];var _0x2e9a15=_0x364529[_0xa5d5('0x65')](-0x1);if(_0x2e9a15==='/'||_0x2e9a15==='\x5c'||_0x2e9a15===':'){_0x364529=_0x364529[_0xa5d5('0x66')](0x0,_0x364529['lastIndexOf'](_0x2e9a15));}if(!_0x4d7ff7[_0xa5d5('0x5e')]){throw new Error(_0xa5d5('0x67'));}return getAccessToken(_0x4d7ff7);})[_0xa5d5('0x43')](function(_0x33cd22){if(_0x33cd22){return rp({'method':'GET','uri':util[_0xa5d5('0x68')](_0xa5d5('0x69'),_0x4272ed),'qs':{'module':'Calls'},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x33cd22},'json':!![]});}})[_0xa5d5('0x43')](function(_0x17bb38){if(_0x17bb38){if(_0x17bb38[_0xa5d5('0x6a')]&&_0x17bb38['response'][_0xa5d5('0x6b')]){throw new Error(_0x17bb38[_0xa5d5('0x6a')][_0xa5d5('0x6b')][_0xa5d5('0x6c')]);}var _0x2c5041=[];var _0x40ff37=[];var _0x149138=['Owner','Subject',_0xa5d5('0x6d'),'WhoId',_0xa5d5('0x6e'),_0xa5d5('0x6f'),'Call_Start_Time',_0xa5d5('0x70')];_0x40ff37=_[_0xa5d5('0x71')](_0x17bb38[_0xa5d5('0x36')],function(_0x2aafbd){return _0x149138[_0xa5d5('0x72')](_0x2aafbd[_0xa5d5('0x73')]);});for(var _0x1a11a0=0x0;_0x1a11a0<_0x40ff37[_0xa5d5('0x38')];_0x1a11a0++){if(_0x40ff37[_0x1a11a0][_0xa5d5('0x74')]===![]){_0x2c5041[_0xa5d5('0x75')]({'id':_0x40ff37[_0x1a11a0]['id'],'name':_0x40ff37[_0x1a11a0][_0xa5d5('0x76')],'custom':_0x40ff37[_0x1a11a0][_0xa5d5('0x77')],'options':_0x40ff37[_0x1a11a0][_0xa5d5('0x78')]==='picklist'&&_0x40ff37[_0x1a11a0][_0xa5d5('0x79')][_0xa5d5('0x38')]>-0x1?_[_0xa5d5('0x30')](_0x40ff37[_0x1a11a0][_0xa5d5('0x79')],function(_0x3abba3){return{'name':_0x3abba3,'value':_0x3abba3};}):[]});}}return{'count':_0x2c5041[_0xa5d5('0x38')],'rows':_0x2c5041};}else{return{'count':0x0,'rows':[]};}})[_0xa5d5('0x43')](respondWithResult(_0x31fdf8,null))[_0xa5d5('0x44')](function(_0x421039){var _0x45611f=_0x13f753[_0xa5d5('0x32')][_0xa5d5('0x7a')]?0x1f4:_0x421039[_0xa5d5('0x7b')]||0x1f4;logger['error']('getFields,\x20%s,\x20%s,\x20%s',_0xa5d5('0x61'),_0x45611f,JSON[_0xa5d5('0x7c')](_0x421039));delete _0x421039[_0xa5d5('0x31')];if(_0x45611f===0x191){_0x45611f=0x190;}_0x31fdf8[_0xa5d5('0x1c')](_0x45611f)[_0xa5d5('0x2a')](_0x13f753[_0xa5d5('0x32')][_0xa5d5('0x7a')]?{'message':_0xa5d5('0x7d'),'statusCode':_0x421039[_0xa5d5('0x7b')]}:_0x421039);});};
\ No newline at end of file
+var _0x2469=['code','zoho.eu','slice','Refresh\x20Token\x20not\x20available\x20for\x20the\x20account','GET','format','https://www.zohoapis.%s/crm/v2/settings/fields','Calls','Zoho-oauthtoken\x20','response','message','Description','Call_Result','Call_Start_Time','Call_Type','remove','api_name','system_mandatory','push','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','bluebird','mustache','sox','to-csv','ejs','fs-extra','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','../../components/integrations/configuration','status','end','json','undefined','count','offset','limit','set','reject','update','then','destroy','sendStatus','error','stack','name','send','index','map','ZohoAccount','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','options','includeAll','include','rows','catch','show','params','length','merge','create','body','find','findOne','getConfigurations','addConfiguration','AccountId','getSubjects','channel','ZohoField','Subjects','Descriptions','zone','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.eu','/oauth/v2/token','refreshToken','clientId','refresh_token','access_token','Unable\x20to\x20retrieve\x20the\x20access\x20token','getFields','host','clientSecret','serverUrl'];(function(_0x1725a4,_0x25bcc2){var _0x5edfc9=function(_0x211af9){while(--_0x211af9){_0x1725a4['push'](_0x1725a4['shift']());}};_0x5edfc9(++_0x25bcc2);}(_0x2469,0x11f));var _0x9246=function(_0x43555f,_0x1d9fbf){_0x43555f=_0x43555f-0x0;var _0x5c535c=_0x2469[_0x43555f];return _0x5c535c;};'use strict';var emlformat=require(_0x9246('0x0'));var rimraf=require(_0x9246('0x1'));var zipdir=require(_0x9246('0x2'));var jsonpatch=require(_0x9246('0x3'));var rp=require(_0x9246('0x4'));var moment=require('moment');var BPromise=require(_0x9246('0x5'));var Mustache=require(_0x9246('0x6'));var util=require('util');var path=require('path');var sox=require(_0x9246('0x7'));var csv=require(_0x9246('0x8'));var ejs=require(_0x9246('0x9'));var fs=require('fs');var fs_extra=require(_0x9246('0xa'));var _=require(_0x9246('0xb'));var squel=require(_0x9246('0xc'));var crypto=require(_0x9246('0xd'));var jsforce=require(_0x9246('0xe'));var deskjs=require(_0x9246('0xf'));var toCsv=require(_0x9246('0x8'));var querystring=require(_0x9246('0x10'));var Papa=require(_0x9246('0x11'));var Redis=require(_0x9246('0x12'));var authService=require('../../components/auth/service');var qs=require(_0x9246('0x13'));var as=require(_0x9246('0x14'));var hardwareService=require(_0x9246('0x15'));var logger=require(_0x9246('0x16'))(_0x9246('0x17'));var utils=require(_0x9246('0x18'));var config=require(_0x9246('0x19'));var licenseUtil=require(_0x9246('0x1a'));var db=require('../../mysqldb')['db'];var integrations=require(_0x9246('0x1b'));function respondWithStatusCode(_0x455044,_0x47c472){_0x47c472=_0x47c472||0xcc;return function(_0x3200a2){if(_0x3200a2){return _0x455044['sendStatus'](_0x47c472);}return _0x455044[_0x9246('0x1c')](_0x47c472)[_0x9246('0x1d')]();};}function respondWithResult(_0x196c0a,_0x2b4726){_0x2b4726=_0x2b4726||0xc8;return function(_0x203345){if(_0x203345){return _0x196c0a[_0x9246('0x1c')](_0x2b4726)[_0x9246('0x1e')](_0x203345);}};}function respondWithFilteredResult(_0xd95fc,_0x37dd46){return function(_0xc2b47a){if(_0xc2b47a){var _0xb41c6e=typeof _0x37dd46['offset']===_0x9246('0x1f')&&typeof _0x37dd46['limit']===_0x9246('0x1f');var _0x2464bf=_0xc2b47a[_0x9246('0x20')];var _0x1fa5ad=_0xb41c6e?0x0:_0x37dd46['offset'];var _0x12491a=_0xb41c6e?_0xc2b47a['count']:_0x37dd46[_0x9246('0x21')]+_0x37dd46[_0x9246('0x22')];var _0x1209d2;if(_0x12491a>=_0x2464bf){_0x12491a=_0x2464bf;_0x1209d2=0xc8;}else{_0x1209d2=0xce;}_0xd95fc[_0x9246('0x1c')](_0x1209d2);return _0xd95fc[_0x9246('0x23')]('Content-Range',_0x1fa5ad+'-'+_0x12491a+'/'+_0x2464bf)[_0x9246('0x1e')](_0xc2b47a);}return null;};}function patchUpdates(_0x34d2d0){return function(_0x49b58b){try{jsonpatch['apply'](_0x49b58b,_0x34d2d0,!![]);}catch(_0x2220cf){return BPromise[_0x9246('0x24')](_0x2220cf);}return _0x49b58b['save']();};}function saveUpdates(_0x306c1a,_0x331773){return function(_0x244836){if(_0x244836){return _0x244836[_0x9246('0x25')](_0x306c1a)[_0x9246('0x26')](function(_0x31fa27){return _0x31fa27;});}return null;};}function removeEntity(_0x1378dc,_0x9df033){return function(_0x3ad333){if(_0x3ad333){return _0x3ad333[_0x9246('0x27')]()[_0x9246('0x26')](function(){_0x1378dc[_0x9246('0x1c')](0xcc)[_0x9246('0x1d')]();});}};}function handleEntityNotFound(_0xe48191,_0x421540){return function(_0x2158ed){if(!_0x2158ed){_0xe48191[_0x9246('0x28')](0x194);}return _0x2158ed;};}function handleError(_0x3432d4,_0x17fcaf){_0x17fcaf=_0x17fcaf||0x1f4;return function(_0x584cb1){logger[_0x9246('0x29')](_0x584cb1[_0x9246('0x2a')]);if(_0x584cb1[_0x9246('0x2b')]){delete _0x584cb1['name'];}_0x3432d4['status'](_0x17fcaf)[_0x9246('0x2c')](_0x584cb1);};}exports[_0x9246('0x2d')]=function(_0x583541,_0x52484){var _0xfc13dd={},_0x92c755={},_0x3fbb99={'count':0x0,'rows':[]};var _0x43272=_[_0x9246('0x2e')](db[_0x9246('0x2f')][_0x9246('0x30')],function(_0xdc4f26){return{'name':_0xdc4f26[_0x9246('0x31')],'type':_0xdc4f26[_0x9246('0x32')]['key']};});_0x92c755[_0x9246('0x33')]=_['map'](_0x43272,_0x9246('0x2b'));_0x92c755[_0x9246('0x34')]=_[_0x9246('0x35')](_0x583541[_0x9246('0x34')]);_0x92c755[_0x9246('0x36')]=_[_0x9246('0x37')](_0x92c755[_0x9246('0x33')],_0x92c755[_0x9246('0x34')]);_0xfc13dd[_0x9246('0x38')]=_['intersection'](_0x92c755['model'],qs[_0x9246('0x39')](_0x583541[_0x9246('0x34')][_0x9246('0x39')]));_0xfc13dd['attributes']=_0xfc13dd[_0x9246('0x38')]['length']?_0xfc13dd[_0x9246('0x38')]:_0x92c755[_0x9246('0x33')];if(!_0x583541[_0x9246('0x34')][_0x9246('0x3a')](_0x9246('0x3b'))){_0xfc13dd['limit']=qs[_0x9246('0x22')](_0x583541[_0x9246('0x34')][_0x9246('0x22')]);_0xfc13dd['offset']=qs[_0x9246('0x21')](_0x583541['query'][_0x9246('0x21')]);}_0xfc13dd[_0x9246('0x3c')]=qs[_0x9246('0x3d')](_0x583541[_0x9246('0x34')][_0x9246('0x3d')]);_0xfc13dd[_0x9246('0x3e')]=qs[_0x9246('0x36')](_['pick'](_0x583541[_0x9246('0x34')],_0x92c755[_0x9246('0x36')]),_0x43272);if(_0x583541[_0x9246('0x34')][_0x9246('0x3f')]){_0xfc13dd[_0x9246('0x3e')]=_['merge'](_0xfc13dd[_0x9246('0x3e')],{'$or':_[_0x9246('0x2e')](_0x43272,function(_0xb712fc){if(_0xb712fc['type']!==_0x9246('0x40')){var _0x4d2c26={};_0x4d2c26[_0xb712fc[_0x9246('0x2b')]]={'$like':'%'+_0x583541['query'][_0x9246('0x3f')]+'%'};return _0x4d2c26;}})});}_0xfc13dd=_['merge']({},_0xfc13dd,_0x583541[_0x9246('0x41')]);var _0x4302fa={'where':_0xfc13dd[_0x9246('0x3e')]};return db['ZohoAccount'][_0x9246('0x20')](_0x4302fa)[_0x9246('0x26')](function(_0x11dc7e){_0x3fbb99['count']=_0x11dc7e;if(_0x583541['query'][_0x9246('0x42')]){_0xfc13dd[_0x9246('0x43')]=[{'all':!![]}];}return db['ZohoAccount']['findAll'](_0xfc13dd);})[_0x9246('0x26')](function(_0x33c529){_0x3fbb99[_0x9246('0x44')]=_0x33c529;return _0x3fbb99;})[_0x9246('0x26')](respondWithFilteredResult(_0x52484,_0xfc13dd))[_0x9246('0x45')](handleError(_0x52484,null));};exports[_0x9246('0x46')]=function(_0x102d6e,_0x2ad199){var _0x6a3fc4={'raw':![],'where':{'id':_0x102d6e[_0x9246('0x47')]['id']}},_0x2a7269={};_0x2a7269[_0x9246('0x33')]=_[_0x9246('0x35')](db[_0x9246('0x2f')][_0x9246('0x30')]);_0x2a7269['query']=_['keys'](_0x102d6e['query']);_0x2a7269[_0x9246('0x36')]=_[_0x9246('0x37')](_0x2a7269[_0x9246('0x33')],_0x2a7269[_0x9246('0x34')]);_0x6a3fc4[_0x9246('0x38')]=_[_0x9246('0x37')](_0x2a7269[_0x9246('0x33')],qs['fields'](_0x102d6e[_0x9246('0x34')][_0x9246('0x39')]));_0x6a3fc4['attributes']=_0x6a3fc4['attributes'][_0x9246('0x48')]?_0x6a3fc4[_0x9246('0x38')]:_0x2a7269[_0x9246('0x33')];if(_0x102d6e[_0x9246('0x34')][_0x9246('0x42')]){_0x6a3fc4[_0x9246('0x43')]=[{'all':!![]}];}_0x6a3fc4=_[_0x9246('0x49')]({},_0x6a3fc4,_0x102d6e[_0x9246('0x41')]);return db['ZohoAccount']['find'](_0x6a3fc4)[_0x9246('0x26')](handleEntityNotFound(_0x2ad199,null))[_0x9246('0x26')](respondWithResult(_0x2ad199,null))['catch'](handleError(_0x2ad199,null));};exports[_0x9246('0x4a')]=function(_0x456915,_0x3d51e6){return db['ZohoAccount']['create'](_0x456915[_0x9246('0x4b')],{})[_0x9246('0x26')](respondWithResult(_0x3d51e6,0xc9))['catch'](handleError(_0x3d51e6,null));};exports[_0x9246('0x25')]=function(_0x2190d4,_0x34d591){if(_0x2190d4['body']['id']){delete _0x2190d4[_0x9246('0x4b')]['id'];}return db[_0x9246('0x2f')]['find']({'where':{'id':_0x2190d4['params']['id']}})[_0x9246('0x26')](handleEntityNotFound(_0x34d591,null))[_0x9246('0x26')](saveUpdates(_0x2190d4['body'],null))[_0x9246('0x26')](respondWithResult(_0x34d591,null))[_0x9246('0x45')](handleError(_0x34d591,null));};exports['destroy']=function(_0x41c5f8,_0x24e978){return db[_0x9246('0x2f')][_0x9246('0x4c')]({'where':{'id':_0x41c5f8[_0x9246('0x47')]['id']}})[_0x9246('0x26')](handleEntityNotFound(_0x24e978,null))[_0x9246('0x26')](removeEntity(_0x24e978,null))[_0x9246('0x45')](handleError(_0x24e978,null));};exports['getConfigurations']=function(_0x1d05bc,_0x1d7a12,_0x286e51){var _0x3aef3d={};var _0x2537f1={};var _0x435acc;var _0x1ad7da;return db[_0x9246('0x2f')][_0x9246('0x4d')]({'where':{'id':_0x1d05bc['params']['id']}})[_0x9246('0x26')](handleEntityNotFound(_0x1d7a12,null))[_0x9246('0x26')](function(_0x1e9bd8){if(_0x1e9bd8){_0x435acc=_0x1e9bd8;_0x2537f1['model']=_['keys'](db['ZohoConfiguration'][_0x9246('0x30')]);_0x2537f1[_0x9246('0x34')]=_[_0x9246('0x35')](_0x1d05bc['query']);_0x2537f1[_0x9246('0x36')]=_[_0x9246('0x37')](_0x2537f1['model'],_0x2537f1[_0x9246('0x34')]);_0x3aef3d['attributes']=_['intersection'](_0x2537f1[_0x9246('0x33')],qs[_0x9246('0x39')](_0x1d05bc[_0x9246('0x34')]['fields']));_0x3aef3d[_0x9246('0x38')]=_0x3aef3d['attributes'][_0x9246('0x48')]?_0x3aef3d[_0x9246('0x38')]:_0x2537f1[_0x9246('0x33')];_0x3aef3d[_0x9246('0x3c')]=qs[_0x9246('0x3d')](_0x1d05bc[_0x9246('0x34')][_0x9246('0x3d')]);_0x3aef3d[_0x9246('0x3e')]=qs[_0x9246('0x36')](_['pick'](_0x1d05bc[_0x9246('0x34')],_0x2537f1['filters']));if(_0x1d05bc['query'][_0x9246('0x3f')]){_0x3aef3d[_0x9246('0x3e')]=_[_0x9246('0x49')](_0x3aef3d['where'],{'$or':_[_0x9246('0x2e')](_0x3aef3d[_0x9246('0x38')],function(_0x34636d){var _0x2086b0={};_0x2086b0[_0x34636d]={'$like':'%'+_0x1d05bc[_0x9246('0x34')]['filter']+'%'};return _0x2086b0;})});}_0x3aef3d=_[_0x9246('0x49')]({},_0x3aef3d,_0x1d05bc[_0x9246('0x41')]);return _0x435acc[_0x9246('0x4e')](_0x3aef3d);}})['then'](function(_0x36f83e){if(_0x36f83e){_0x1ad7da=_0x36f83e[_0x9246('0x48')];if(!_0x1d05bc['query'][_0x9246('0x3a')]('nolimit')){_0x3aef3d[_0x9246('0x22')]=qs[_0x9246('0x22')](_0x1d05bc['query'][_0x9246('0x22')]);_0x3aef3d[_0x9246('0x21')]=qs[_0x9246('0x21')](_0x1d05bc[_0x9246('0x34')][_0x9246('0x21')]);}return _0x435acc['getConfigurations'](_0x3aef3d);}})[_0x9246('0x26')](function(_0x4c7030){if(_0x4c7030){return _0x4c7030?{'count':_0x1ad7da,'rows':_0x4c7030}:null;}})['then'](respondWithResult(_0x1d7a12,null))[_0x9246('0x45')](handleError(_0x1d7a12,null));};exports[_0x9246('0x4f')]=function(_0x4be0b8,_0x1bdbc9,_0x1100c4){if(_0x4be0b8['body']['id']){delete _0x4be0b8[_0x9246('0x4b')]['id'];}return db['ZohoAccount'][_0x9246('0x4d')]({'where':{'id':_0x4be0b8[_0x9246('0x47')]['id']}})[_0x9246('0x26')](handleEntityNotFound(_0x1bdbc9,null))[_0x9246('0x26')](function(_0x5db9d9){if(_0x5db9d9){_0x4be0b8['body'][_0x9246('0x50')]=_0x5db9d9['id'];_0x4be0b8[_0x9246('0x4b')]['Subjects']=integrations[_0x9246('0x51')](_0x4be0b8[_0x9246('0x4b')][_0x9246('0x52')],_0x4be0b8['body'][_0x9246('0x32')]);_0x4be0b8[_0x9246('0x4b')]['Descriptions']=integrations['getDescriptions'](_0x4be0b8[_0x9246('0x4b')][_0x9246('0x52')],_0x4be0b8[_0x9246('0x4b')][_0x9246('0x32')]);return db['ZohoConfiguration'][_0x9246('0x4a')](_0x4be0b8[_0x9246('0x4b')],{'include':[{'model':db[_0x9246('0x53')],'as':_0x9246('0x54')},{'model':db[_0x9246('0x53')],'as':_0x9246('0x55')}]});}return null;})[_0x9246('0x26')](respondWithResult(_0x1bdbc9,null))[_0x9246('0x45')](handleError(_0x1bdbc9,null));};function getAccessToken(_0x5c66da){return new Promise(function(_0x19b675,_0x177eb7){var _0x4e480c;switch(_0x5c66da[_0x9246('0x56')]){case'US':_0x4e480c='https://accounts.zoho.com';break;case'AU':_0x4e480c=_0x9246('0x57');break;case'EU':_0x4e480c='https://accounts.zoho.eu';break;case'IN':_0x4e480c=_0x9246('0x58');break;case'CN':_0x4e480c='https://accounts.zoho.com.cn';break;default:_0x4e480c=_0x9246('0x59');break;}var _0x5b8366={'method':'POST','uri':_0x4e480c+_0x9246('0x5a'),'qs':{'refresh_token':_0x5c66da[_0x9246('0x5b')],'client_id':_0x5c66da[_0x9246('0x5c')],'client_secret':_0x5c66da['clientSecret'],'grant_type':_0x9246('0x5d')},'json':!![]};return rp(_0x5b8366)[_0x9246('0x26')](function(_0x5cfab3){if(_0x5cfab3[_0x9246('0x5e')]){_0x19b675(_0x5cfab3['access_token']);}else{_0x177eb7(_0x9246('0x5f'));}})['catch'](function(_0x2b0298){_0x177eb7(_0x2b0298);});});}exports[_0x9246('0x60')]=function(_0x35c22d,_0x3479d1,_0x51181){var _0x2a4ca6,_0x4376b5,_0x1932f5,_0x4117ec,_0x5f0e3e;return db['ZohoAccount'][_0x9246('0x4d')]({'where':{'id':_0x35c22d[_0x9246('0x47')]['id']},'attributes':['id',_0x9246('0x61'),_0x9246('0x56'),_0x9246('0x5c'),_0x9246('0x62'),_0x9246('0x63'),_0x9246('0x64'),'refreshToken']})[_0x9246('0x26')](handleEntityNotFound(_0x3479d1,null))['then'](function(_0x5d0819){_0x5f0e3e=_0x5d0819;_0x2a4ca6=_0x5f0e3e[_0x9246('0x61')];_0x4376b5=_0x2a4ca6===_0x9246('0x65')?'eu':'com';_0x1932f5=_0x5f0e3e[_0x9246('0x63')];var _0x253d65=_0x1932f5[_0x9246('0x66')](-0x1);if(_0x253d65==='/'||_0x253d65==='\x5c'||_0x253d65===':'){_0x1932f5=_0x1932f5['substring'](0x0,_0x1932f5['lastIndexOf'](_0x253d65));}if(!_0x5f0e3e['refreshToken']){throw new Error(_0x9246('0x67'));}return getAccessToken(_0x5f0e3e);})[_0x9246('0x26')](function(_0x24a73c){if(_0x24a73c){return rp({'method':_0x9246('0x68'),'uri':util[_0x9246('0x69')](_0x9246('0x6a'),_0x4376b5),'qs':{'module':_0x9246('0x6b')},'headers':{'Authorization':_0x9246('0x6c')+_0x24a73c},'json':!![]});}})['then'](function(_0x515de7){if(_0x515de7){if(_0x515de7[_0x9246('0x6d')]&&_0x515de7[_0x9246('0x6d')][_0x9246('0x29')]){throw new Error(_0x515de7['response'][_0x9246('0x29')][_0x9246('0x6e')]);}var _0x18de5e=[];var _0x3c900c=[];var _0x3a1d4b=['Owner','Subject',_0x9246('0x6f'),'WhoId','Call_Duration',_0x9246('0x70'),_0x9246('0x71'),_0x9246('0x72')];_0x3c900c=_[_0x9246('0x73')](_0x515de7[_0x9246('0x39')],function(_0x4db9bc){return _0x3a1d4b['includes'](_0x4db9bc[_0x9246('0x74')]);});for(var _0x5365b6=0x0;_0x5365b6<_0x3c900c[_0x9246('0x48')];_0x5365b6++){if(_0x3c900c[_0x5365b6][_0x9246('0x75')]===![]){_0x18de5e[_0x9246('0x76')]({'id':_0x3c900c[_0x5365b6]['id'],'name':_0x3c900c[_0x5365b6][_0x9246('0x77')],'custom':_0x3c900c[_0x5365b6][_0x9246('0x78')],'options':_0x3c900c[_0x5365b6][_0x9246('0x79')]===_0x9246('0x7a')&&_0x3c900c[_0x5365b6][_0x9246('0x7b')][_0x9246('0x48')]>-0x1?_['map'](_0x3c900c[_0x5365b6]['pick_list_values'],function(_0x101d6f){return{'name':_0x101d6f,'value':_0x101d6f};}):[]});}}return{'count':_0x18de5e[_0x9246('0x48')],'rows':_0x18de5e};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithResult(_0x3479d1,null))['catch'](function(_0x2364e9){var _0x4e1ec5=_0x35c22d['query'][_0x9246('0x7c')]?0x1f4:_0x2364e9[_0x9246('0x7d')]||0x1f4;logger[_0x9246('0x29')](_0x9246('0x7e'),_0x9246('0x60'),_0x4e1ec5,JSON[_0x9246('0x7f')](_0x2364e9));delete _0x2364e9[_0x9246('0x2b')];if(_0x4e1ec5===0x191){_0x4e1ec5=0x190;}_0x3479d1[_0x9246('0x1c')](_0x4e1ec5)[_0x9246('0x2c')](_0x35c22d['query'][_0x9246('0x7c')]?{'message':_0x9246('0x80'),'statusCode':_0x2364e9['statusCode']}:_0x2364e9);});};
\ No newline at end of file
index 52343b9..91f2d2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa063=['clientId','clientSecret','code','host','substring','lastIndexOf','https://accounts.zoho.com.au','https://accounts.zoho.in','https://accounts.zoho.com.cn','POST','/oauth/v2/token','authorization_code','then','parse','refresh_token','refreshToken','info','format','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','error','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','name','inspect','slice','https://accounts.zoho.eu','catch','lodash','util','api','bluebird','request-promise','path','rimraf','./intZohoAccount.attributes','../../components/integrations/configuration','exports','define','ZohoAccount','zone','serverUrl','changed'];(function(_0x343b94,_0x51ee36){var _0x2b7611=function(_0xa0c8a2){while(--_0xa0c8a2){_0x343b94['push'](_0x343b94['shift']());}};_0x2b7611(++_0x51ee36);}(_0xa063,0x18b));var _0x3a06=function(_0x2dc143,_0x2a622e){_0x2dc143=_0x2dc143-0x0;var _0xbd8c38=_0xa063[_0x2dc143];return _0xbd8c38;};'use strict';var _=require(_0x3a06('0x0'));var util=require(_0x3a06('0x1'));var logger=require('../../config/logger')(_0x3a06('0x2'));var moment=require('moment');var BPromise=require(_0x3a06('0x3'));var rp=require(_0x3a06('0x4'));var fs=require('fs');var path=require(_0x3a06('0x5'));var rimraf=require(_0x3a06('0x6'));var config=require('../../config/environment');var attributes=require(_0x3a06('0x7'));var integrations=require(_0x3a06('0x8'));module[_0x3a06('0x9')]=function(_0x1c8341,_0x4667d4){return _0x1c8341[_0x3a06('0xa')](_0x3a06('0xb'),attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x2b5914,_0x393017,_0x29c153){if(_0x2b5914['changed'](_0x3a06('0xc'))||_0x2b5914['changed'](_0x3a06('0xd'))||_0x2b5914[_0x3a06('0xe')](_0x3a06('0xf'))||_0x2b5914[_0x3a06('0xe')](_0x3a06('0x10'))||_0x2b5914['changed'](_0x3a06('0x11'))||_0x2b5914[_0x3a06('0xe')](_0x3a06('0x12'))){var _0x14cc67,_0x58ac48;_0x14cc67=_0x2b5914[_0x3a06('0xd')];var _0x2e8ea6=_0x14cc67['slice'](-0x1);if(_0x2e8ea6==='/'||_0x2e8ea6==='\x5c'||_0x2e8ea6===':'){_0x14cc67=_0x14cc67[_0x3a06('0x13')](0x0,_0x14cc67[_0x3a06('0x14')](_0x2e8ea6));}switch(_0x2b5914[_0x3a06('0xc')]){case'US':_0x58ac48='https://accounts.zoho.com';break;case'AU':_0x58ac48=_0x3a06('0x15');break;case'IN':_0x58ac48=_0x3a06('0x16');break;case'CN':_0x58ac48=_0x3a06('0x17');break;default:_0x58ac48='https://accounts.zoho.eu';break;}var _0x417fe0={'method':_0x3a06('0x18'),'uri':_0x58ac48+_0x3a06('0x19'),'form':{'grant_type':_0x3a06('0x1a'),'client_id':_0x2b5914[_0x3a06('0xf')],'client_secret':_0x2b5914[_0x3a06('0x10')],'redirect_uri':_0x2b5914[_0x3a06('0xd')],'code':_0x2b5914[_0x3a06('0x11')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x417fe0)[_0x3a06('0x1b')](function(_0x2eeba5){var _0x244103=JSON[_0x3a06('0x1c')](_0x2eeba5);if(_0x244103[_0x3a06('0x1d')]){_0x2b5914[_0x3a06('0x1e')]=_0x244103[_0x3a06('0x1d')];logger[_0x3a06('0x1f')](util[_0x3a06('0x20')](_0x3a06('0x21'),_0x2b5914['name'],_0x2b5914['id']));}else{logger[_0x3a06('0x22')](util['format'](_0x3a06('0x23'),_0x2b5914[_0x3a06('0x24')],_0x2b5914['id']),util[_0x3a06('0x25')](_0x244103,{'showHidden':![],'depth':null}));}return _0x29c153(null,_0x393017);})['catch'](function(_0x4e859c){logger[_0x3a06('0x22')](util['format'](_0x3a06('0x23'),_0x2b5914[_0x3a06('0x24')],_0x2b5914['id']),util[_0x3a06('0x25')](parsedResult,{'showHidden':![],'depth':null}));return _0x29c153(_0x4e859c);});}else{return _0x29c153(null,_0x393017);}},'beforeUpdate':function(_0x53bc69,_0xe35d61,_0x5a7c26){if(_0x53bc69['changed'](_0x3a06('0xc'))||_0x53bc69[_0x3a06('0xe')](_0x3a06('0xd'))||_0x53bc69[_0x3a06('0xe')]('clientId')||_0x53bc69[_0x3a06('0xe')]('clientSecret')||_0x53bc69['changed'](_0x3a06('0x11'))||_0x53bc69[_0x3a06('0xe')](_0x3a06('0x12'))){var _0x35275e,_0x406072;_0x35275e=_0x53bc69[_0x3a06('0xd')];var _0xf06026=_0x35275e[_0x3a06('0x26')](-0x1);if(_0xf06026==='/'||_0xf06026==='\x5c'||_0xf06026===':'){_0x35275e=_0x35275e[_0x3a06('0x13')](0x0,_0x35275e[_0x3a06('0x14')](_0xf06026));}switch(_0x53bc69[_0x3a06('0xc')]){case'US':_0x406072='https://accounts.zoho.com';break;case'AU':_0x406072='https://accounts.zoho.com.au';break;case'IN':_0x406072=_0x3a06('0x16');break;case'CN':_0x406072='https://accounts.zoho.com.cn';break;default:_0x406072=_0x3a06('0x27');break;}var _0x4f4878={'method':'POST','uri':_0x406072+_0x3a06('0x19'),'form':{'grant_type':_0x3a06('0x1a'),'client_id':_0x53bc69[_0x3a06('0xf')],'client_secret':_0x53bc69[_0x3a06('0x10')],'redirect_uri':_0x53bc69[_0x3a06('0xd')],'code':_0x53bc69[_0x3a06('0x11')]},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x4f4878)[_0x3a06('0x1b')](function(_0x2e7f32){var _0xae8e01=JSON['parse'](_0x2e7f32);if(_0xae8e01['refresh_token']){_0x53bc69[_0x3a06('0x1e')]=_0xae8e01['refresh_token'];logger[_0x3a06('0x1f')](util[_0x3a06('0x20')](_0x3a06('0x21'),_0x53bc69['name'],_0x53bc69['id']));}else{logger['error'](util[_0x3a06('0x20')](_0x3a06('0x23'),_0x53bc69[_0x3a06('0x24')],_0x53bc69['id']),util[_0x3a06('0x25')](_0xae8e01,{'showHidden':![],'depth':null}));}return _0x5a7c26(null,_0xe35d61);})[_0x3a06('0x28')](function(_0x49c7fb){logger[_0x3a06('0x22')](util['format']('ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d',_0x53bc69['name'],_0x53bc69['id']),util[_0x3a06('0x25')](parsedResult,{'showHidden':![],'depth':null}));return _0x5a7c26(_0x49c7fb);});}else{return _0x5a7c26(null,_0xe35d61);}}}});};
\ No newline at end of file
+var _0xe721=['lastIndexOf','https://accounts.zoho.eu','POST','application/x-www-form-urlencoded','parse','ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./intZohoAccount.attributes','exports','ZohoAccount','changed','zone','serverUrl','clientId','clientSecret','code','https://accounts.zoho.com','https://accounts.zoho.in','https://accounts.zoho.com.cn','/oauth/v2/token','authorization_code','then','refresh_token','info','format','name','ZohoAccount,\x20Unable\x20to\x20generate\x20the\x20refresh\x20token\x20for\x20account\x20\x22%s\x22\x20#%d','inspect','catch','error','host','slice','substring'];(function(_0x1a4a6a,_0x822688){var _0x1fd278=function(_0xe729f5){while(--_0xe729f5){_0x1a4a6a['push'](_0x1a4a6a['shift']());}};_0x1fd278(++_0x822688);}(_0xe721,0xa2));var _0x1e72=function(_0x3da91c,_0x5f436a){_0x3da91c=_0x3da91c-0x0;var _0x14d860=_0xe721[_0x3da91c];return _0x14d860;};'use strict';var _=require('lodash');var util=require(_0x1e72('0x0'));var logger=require(_0x1e72('0x1'))(_0x1e72('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x1e72('0x3'));var fs=require('fs');var path=require(_0x1e72('0x4'));var rimraf=require(_0x1e72('0x5'));var config=require(_0x1e72('0x6'));var attributes=require(_0x1e72('0x7'));var integrations=require('../../components/integrations/configuration');module[_0x1e72('0x8')]=function(_0x4397bc,_0x41eb25){return _0x4397bc['define'](_0x1e72('0x9'),attributes,{'tableName':'int_zoho_accounts','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeCreate':function(_0x2edee3,_0x311e20,_0x4e202e){if(_0x2edee3[_0x1e72('0xa')](_0x1e72('0xb'))||_0x2edee3[_0x1e72('0xa')](_0x1e72('0xc'))||_0x2edee3[_0x1e72('0xa')](_0x1e72('0xd'))||_0x2edee3[_0x1e72('0xa')](_0x1e72('0xe'))||_0x2edee3['changed'](_0x1e72('0xf'))||_0x2edee3['changed']('host')){var _0x6e9bcf,_0x2c5f86;_0x6e9bcf=_0x2edee3[_0x1e72('0xc')];var _0x1ce88b=_0x6e9bcf['slice'](-0x1);if(_0x1ce88b==='/'||_0x1ce88b==='\x5c'||_0x1ce88b===':'){_0x6e9bcf=_0x6e9bcf['substring'](0x0,_0x6e9bcf['lastIndexOf'](_0x1ce88b));}switch(_0x2edee3['zone']){case'US':_0x2c5f86=_0x1e72('0x10');break;case'AU':_0x2c5f86='https://accounts.zoho.com.au';break;case'IN':_0x2c5f86=_0x1e72('0x11');break;case'CN':_0x2c5f86=_0x1e72('0x12');break;default:_0x2c5f86='https://accounts.zoho.eu';break;}var _0x555f1b={'method':'POST','uri':_0x2c5f86+_0x1e72('0x13'),'form':{'grant_type':_0x1e72('0x14'),'client_id':_0x2edee3['clientId'],'client_secret':_0x2edee3[_0x1e72('0xe')],'redirect_uri':_0x2edee3[_0x1e72('0xc')],'code':_0x2edee3['code']},'headers':{'Content-Type':'application/x-www-form-urlencoded'}};return rp(_0x555f1b)[_0x1e72('0x15')](function(_0x54adfc){var _0x2cd05c=JSON['parse'](_0x54adfc);if(_0x2cd05c['refresh_token']){_0x2edee3['refreshToken']=_0x2cd05c[_0x1e72('0x16')];logger[_0x1e72('0x17')](util[_0x1e72('0x18')]('ZohoAccount,\x20Refresh\x20token\x20successfully\x20generated\x20for\x20account\x20\x22%s\x22\x20#%d',_0x2edee3[_0x1e72('0x19')],_0x2edee3['id']));}else{logger['error'](util[_0x1e72('0x18')](_0x1e72('0x1a'),_0x2edee3[_0x1e72('0x19')],_0x2edee3['id']),util[_0x1e72('0x1b')](_0x2cd05c,{'showHidden':![],'depth':null}));}return _0x4e202e(null,_0x311e20);})[_0x1e72('0x1c')](function(_0xede640){logger[_0x1e72('0x1d')](util['format'](_0x1e72('0x1a'),_0x2edee3[_0x1e72('0x19')],_0x2edee3['id']),util[_0x1e72('0x1b')](parsedResult,{'showHidden':![],'depth':null}));return _0x4e202e(_0xede640);});}else{return _0x4e202e(null,_0x311e20);}},'beforeUpdate':function(_0x295e13,_0x159896,_0x5da6d1){if(_0x295e13[_0x1e72('0xa')](_0x1e72('0xb'))||_0x295e13[_0x1e72('0xa')](_0x1e72('0xc'))||_0x295e13[_0x1e72('0xa')]('clientId')||_0x295e13[_0x1e72('0xa')](_0x1e72('0xe'))||_0x295e13[_0x1e72('0xa')](_0x1e72('0xf'))||_0x295e13['changed'](_0x1e72('0x1e'))){var _0x34ea37,_0x1466d2;_0x34ea37=_0x295e13[_0x1e72('0xc')];var _0x2ff71a=_0x34ea37[_0x1e72('0x1f')](-0x1);if(_0x2ff71a==='/'||_0x2ff71a==='\x5c'||_0x2ff71a===':'){_0x34ea37=_0x34ea37[_0x1e72('0x20')](0x0,_0x34ea37[_0x1e72('0x21')](_0x2ff71a));}switch(_0x295e13['zone']){case'US':_0x1466d2=_0x1e72('0x10');break;case'AU':_0x1466d2='https://accounts.zoho.com.au';break;case'IN':_0x1466d2='https://accounts.zoho.in';break;case'CN':_0x1466d2=_0x1e72('0x12');break;default:_0x1466d2=_0x1e72('0x22');break;}var _0x448d93={'method':_0x1e72('0x23'),'uri':_0x1466d2+'/oauth/v2/token','form':{'grant_type':'authorization_code','client_id':_0x295e13[_0x1e72('0xd')],'client_secret':_0x295e13[_0x1e72('0xe')],'redirect_uri':_0x295e13[_0x1e72('0xc')],'code':_0x295e13[_0x1e72('0xf')]},'headers':{'Content-Type':_0x1e72('0x24')}};return rp(_0x448d93)[_0x1e72('0x15')](function(_0x5314e5){var _0x9666f1=JSON[_0x1e72('0x25')](_0x5314e5);if(_0x9666f1[_0x1e72('0x16')]){_0x295e13['refreshToken']=_0x9666f1[_0x1e72('0x16')];logger[_0x1e72('0x17')](util['format'](_0x1e72('0x26'),_0x295e13[_0x1e72('0x19')],_0x295e13['id']));}else{logger[_0x1e72('0x1d')](util[_0x1e72('0x18')](_0x1e72('0x1a'),_0x295e13[_0x1e72('0x19')],_0x295e13['id']),util['inspect'](_0x9666f1,{'showHidden':![],'depth':null}));}return _0x5da6d1(null,_0x159896);})['catch'](function(_0x5215b6){logger[_0x1e72('0x1d')](util[_0x1e72('0x18')](_0x1e72('0x1a'),_0x295e13[_0x1e72('0x19')],_0x295e13['id']),util[_0x1e72('0x1b')](parsedResult,{'showHidden':![],'depth':null}));return _0x5da6d1(_0x5215b6);});}else{return _0x5da6d1(null,_0x159896);}}}});};
\ No newline at end of file
index 4d8818f..7a1eafc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a48=['ZohoAccount','findAll','options','raw','where','attributes','include','map','model','then','stringify','ShowZohoAccount','find','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','client','http','request','info','ZohoAccount,\x20%s,\x20%s','request\x20sent','debug','error','code','message','catch','GetZohoAccount'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0x0a48,0x95));var _0x80a4=function(_0x110df9,_0x2b9801){_0x110df9=_0x110df9-0x0;var _0x54fbc2=_0x0a48[_0x110df9];return _0x54fbc2;};'use strict';var _=require(_0x80a4('0x0'));var util=require(_0x80a4('0x1'));var moment=require('moment');var BPromise=require(_0x80a4('0x2'));var rs=require(_0x80a4('0x3'));var fs=require('fs');var Redis=require(_0x80a4('0x4'));var db=require(_0x80a4('0x5'))['db'];var utils=require(_0x80a4('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x80a4('0x7'));var jayson=require(_0x80a4('0x8'));var client=jayson[_0x80a4('0x9')][_0x80a4('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5f3ac0,_0x3ccc33,_0x55bd77){return new BPromise(function(_0x5c7c37,_0x338d47){return client[_0x80a4('0xb')](_0x5f3ac0,_0x55bd77)['then'](function(_0x5dfe4a){logger[_0x80a4('0xc')](_0x80a4('0xd'),_0x3ccc33,_0x80a4('0xe'));logger[_0x80a4('0xf')]('ZohoAccount,\x20%s,\x20%s,\x20%s',_0x3ccc33,_0x80a4('0xe'),JSON['stringify'](_0x5dfe4a));if(_0x5dfe4a[_0x80a4('0x10')]){if(_0x5dfe4a['error'][_0x80a4('0x11')]===0x1f4){logger[_0x80a4('0x10')]('ZohoAccount,\x20%s,\x20%s',_0x3ccc33,_0x5dfe4a[_0x80a4('0x10')][_0x80a4('0x12')]);return _0x338d47(_0x5dfe4a[_0x80a4('0x10')][_0x80a4('0x12')]);}logger[_0x80a4('0x10')](_0x80a4('0xd'),_0x3ccc33,_0x5dfe4a[_0x80a4('0x10')]['message']);return _0x5c7c37(_0x5dfe4a['error'][_0x80a4('0x12')]);}else{logger[_0x80a4('0xc')](_0x80a4('0xd'),_0x3ccc33,_0x80a4('0xe'));_0x5c7c37(_0x5dfe4a['result'][_0x80a4('0x12')]);}})[_0x80a4('0x13')](function(_0x38ba44){logger[_0x80a4('0x10')](_0x80a4('0xd'),_0x3ccc33,_0x38ba44);_0x338d47(_0x38ba44);});});}exports[_0x80a4('0x14')]=function(_0x2fb676){var _0x239e9e=this;return new Promise(function(_0x28193d,_0x13b56e){return db[_0x80a4('0x15')][_0x80a4('0x16')]({'raw':_0x2fb676[_0x80a4('0x17')]?_0x2fb676[_0x80a4('0x17')][_0x80a4('0x18')]===undefined?!![]:![]:!![],'where':_0x2fb676['options']?_0x2fb676[_0x80a4('0x17')][_0x80a4('0x19')]||null:null,'attributes':_0x2fb676['options']?_0x2fb676[_0x80a4('0x17')][_0x80a4('0x1a')]||null:null,'limit':_0x2fb676['options']?_0x2fb676[_0x80a4('0x17')]['limit']||null:null,'include':_0x2fb676[_0x80a4('0x17')]?_0x2fb676[_0x80a4('0x17')][_0x80a4('0x1b')]?_[_0x80a4('0x1c')](_0x2fb676[_0x80a4('0x17')][_0x80a4('0x1b')],function(_0xd08602){return{'model':db[_0xd08602[_0x80a4('0x1d')]],'as':_0xd08602['as'],'attributes':_0xd08602['attributes'],'include':_0xd08602[_0x80a4('0x1b')]?_[_0x80a4('0x1c')](_0xd08602[_0x80a4('0x1b')],function(_0x5a41b6){return{'model':db[_0x5a41b6['model']],'as':_0x5a41b6['as'],'attributes':_0x5a41b6[_0x80a4('0x1a')],'include':_0x5a41b6[_0x80a4('0x1b')]?_['map'](_0x5a41b6[_0x80a4('0x1b')],function(_0x158ab2){return{'model':db[_0x158ab2[_0x80a4('0x1d')]],'as':_0x158ab2['as'],'attributes':_0x158ab2[_0x80a4('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x80a4('0x1e')](function(_0x472668){logger[_0x80a4('0xc')]('GetZohoAccount',_0x2fb676);logger[_0x80a4('0xf')](_0x80a4('0x14'),_0x2fb676,JSON[_0x80a4('0x1f')](_0x472668));_0x28193d(_0x472668);})[_0x80a4('0x13')](function(_0x27ab9b){logger[_0x80a4('0x10')](_0x80a4('0x14'),_0x27ab9b[_0x80a4('0x12')],_0x2fb676);_0x13b56e(_0x239e9e[_0x80a4('0x10')](0x1f4,_0x27ab9b[_0x80a4('0x12')]));});});};exports[_0x80a4('0x20')]=function(_0x173ff4){var _0xc43442=this;return new Promise(function(_0x5894b9,_0x4b2bde){return db['ZohoAccount'][_0x80a4('0x21')]({'raw':_0x173ff4[_0x80a4('0x17')]?_0x173ff4[_0x80a4('0x17')][_0x80a4('0x18')]===undefined?!![]:![]:!![],'where':_0x173ff4[_0x80a4('0x17')]?_0x173ff4[_0x80a4('0x17')][_0x80a4('0x19')]||null:null,'attributes':_0x173ff4[_0x80a4('0x17')]?_0x173ff4[_0x80a4('0x17')][_0x80a4('0x1a')]||null:null,'include':_0x173ff4['options']?_0x173ff4[_0x80a4('0x17')]['include']?_[_0x80a4('0x1c')](_0x173ff4['options'][_0x80a4('0x1b')],function(_0x3e441f){return{'model':db[_0x3e441f[_0x80a4('0x1d')]],'as':_0x3e441f['as'],'attributes':_0x3e441f[_0x80a4('0x1a')],'include':_0x3e441f[_0x80a4('0x1b')]?_[_0x80a4('0x1c')](_0x3e441f[_0x80a4('0x1b')],function(_0x514a1e){return{'model':db[_0x514a1e[_0x80a4('0x1d')]],'as':_0x514a1e['as'],'attributes':_0x514a1e[_0x80a4('0x1a')],'include':_0x514a1e[_0x80a4('0x1b')]?_[_0x80a4('0x1c')](_0x514a1e[_0x80a4('0x1b')],function(_0x658d83){return{'model':db[_0x658d83[_0x80a4('0x1d')]],'as':_0x658d83['as'],'attributes':_0x658d83[_0x80a4('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x80a4('0x1e')](function(_0x221008){logger[_0x80a4('0xc')](_0x80a4('0x20'),_0x173ff4);logger[_0x80a4('0xf')]('ShowZohoAccount',_0x173ff4,JSON['stringify'](_0x221008));_0x5894b9(_0x221008);})['catch'](function(_0x5531c9){logger[_0x80a4('0x10')](_0x80a4('0x20'),_0x5531c9[_0x80a4('0x12')],_0x173ff4);_0x4b2bde(_0xc43442['error'](0x1f4,_0x5531c9[_0x80a4('0x12')]));});});};
\ No newline at end of file
+var _0x0eeb=['options','raw','where','attributes','limit','include','map','model','debug','GetZohoAccount','stringify','ShowZohoAccount','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','ZohoAccount,\x20%s,\x20%s','ZohoAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','ZohoAccount','findAll'];(function(_0xead1bf,_0x516121){var _0x4186b2=function(_0x163d50){while(--_0x163d50){_0xead1bf['push'](_0xead1bf['shift']());}};_0x4186b2(++_0x516121);}(_0x0eeb,0xc5));var _0xb0ee=function(_0x4565bf,_0x5ad9d6){_0x4565bf=_0x4565bf-0x0;var _0x5610ba=_0x0eeb[_0x4565bf];return _0x5610ba;};'use strict';var _=require(_0xb0ee('0x0'));var util=require(_0xb0ee('0x1'));var moment=require(_0xb0ee('0x2'));var BPromise=require(_0xb0ee('0x3'));var rs=require(_0xb0ee('0x4'));var fs=require('fs');var Redis=require(_0xb0ee('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0xb0ee('0x6'))(_0xb0ee('0x7'));var config=require(_0xb0ee('0x8'));var jayson=require(_0xb0ee('0x9'));var client=jayson[_0xb0ee('0xa')][_0xb0ee('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x17f445,_0x5377b4,_0x207a85){return new BPromise(function(_0x586bc9,_0x13c198){return client[_0xb0ee('0xc')](_0x17f445,_0x207a85)[_0xb0ee('0xd')](function(_0x308603){logger[_0xb0ee('0xe')](_0xb0ee('0xf'),_0x5377b4,'request\x20sent');logger['debug'](_0xb0ee('0x10'),_0x5377b4,_0xb0ee('0x11'),JSON['stringify'](_0x308603));if(_0x308603['error']){if(_0x308603[_0xb0ee('0x12')][_0xb0ee('0x13')]===0x1f4){logger[_0xb0ee('0x12')](_0xb0ee('0xf'),_0x5377b4,_0x308603['error'][_0xb0ee('0x14')]);return _0x13c198(_0x308603['error']['message']);}logger['error'](_0xb0ee('0xf'),_0x5377b4,_0x308603[_0xb0ee('0x12')]['message']);return _0x586bc9(_0x308603[_0xb0ee('0x12')][_0xb0ee('0x14')]);}else{logger[_0xb0ee('0xe')](_0xb0ee('0xf'),_0x5377b4,_0xb0ee('0x11'));_0x586bc9(_0x308603[_0xb0ee('0x15')][_0xb0ee('0x14')]);}})[_0xb0ee('0x16')](function(_0x549e64){logger['error'](_0xb0ee('0xf'),_0x5377b4,_0x549e64);_0x13c198(_0x549e64);});});}exports['GetZohoAccount']=function(_0x1a2018){var _0x35ec11=this;return new Promise(function(_0x480e51,_0x5f3a4e){return db[_0xb0ee('0x17')][_0xb0ee('0x18')]({'raw':_0x1a2018[_0xb0ee('0x19')]?_0x1a2018['options'][_0xb0ee('0x1a')]===undefined?!![]:![]:!![],'where':_0x1a2018[_0xb0ee('0x19')]?_0x1a2018[_0xb0ee('0x19')][_0xb0ee('0x1b')]||null:null,'attributes':_0x1a2018['options']?_0x1a2018[_0xb0ee('0x19')][_0xb0ee('0x1c')]||null:null,'limit':_0x1a2018[_0xb0ee('0x19')]?_0x1a2018[_0xb0ee('0x19')][_0xb0ee('0x1d')]||null:null,'include':_0x1a2018[_0xb0ee('0x19')]?_0x1a2018[_0xb0ee('0x19')][_0xb0ee('0x1e')]?_[_0xb0ee('0x1f')](_0x1a2018[_0xb0ee('0x19')][_0xb0ee('0x1e')],function(_0x129ee8){return{'model':db[_0x129ee8[_0xb0ee('0x20')]],'as':_0x129ee8['as'],'attributes':_0x129ee8[_0xb0ee('0x1c')],'include':_0x129ee8[_0xb0ee('0x1e')]?_['map'](_0x129ee8[_0xb0ee('0x1e')],function(_0x4c4433){return{'model':db[_0x4c4433['model']],'as':_0x4c4433['as'],'attributes':_0x4c4433[_0xb0ee('0x1c')],'include':_0x4c4433[_0xb0ee('0x1e')]?_[_0xb0ee('0x1f')](_0x4c4433[_0xb0ee('0x1e')],function(_0x560e40){return{'model':db[_0x560e40[_0xb0ee('0x20')]],'as':_0x560e40['as'],'attributes':_0x560e40[_0xb0ee('0x1c')]};}):[]};}):[]};}):[]:[]})[_0xb0ee('0xd')](function(_0xd556e6){logger['info']('GetZohoAccount',_0x1a2018);logger[_0xb0ee('0x21')](_0xb0ee('0x22'),_0x1a2018,JSON[_0xb0ee('0x23')](_0xd556e6));_0x480e51(_0xd556e6);})[_0xb0ee('0x16')](function(_0x2a7a36){logger['error']('GetZohoAccount',_0x2a7a36[_0xb0ee('0x14')],_0x1a2018);_0x5f3a4e(_0x35ec11[_0xb0ee('0x12')](0x1f4,_0x2a7a36[_0xb0ee('0x14')]));});});};exports[_0xb0ee('0x24')]=function(_0x1f0db8){var _0x34bb9d=this;return new Promise(function(_0x111c57,_0x45b626){return db[_0xb0ee('0x17')]['find']({'raw':_0x1f0db8[_0xb0ee('0x19')]?_0x1f0db8[_0xb0ee('0x19')][_0xb0ee('0x1a')]===undefined?!![]:![]:!![],'where':_0x1f0db8[_0xb0ee('0x19')]?_0x1f0db8[_0xb0ee('0x19')][_0xb0ee('0x1b')]||null:null,'attributes':_0x1f0db8[_0xb0ee('0x19')]?_0x1f0db8[_0xb0ee('0x19')]['attributes']||null:null,'include':_0x1f0db8[_0xb0ee('0x19')]?_0x1f0db8['options'][_0xb0ee('0x1e')]?_[_0xb0ee('0x1f')](_0x1f0db8[_0xb0ee('0x19')]['include'],function(_0x49e5a6){return{'model':db[_0x49e5a6['model']],'as':_0x49e5a6['as'],'attributes':_0x49e5a6['attributes'],'include':_0x49e5a6[_0xb0ee('0x1e')]?_[_0xb0ee('0x1f')](_0x49e5a6['include'],function(_0xe4b1cc){return{'model':db[_0xe4b1cc['model']],'as':_0xe4b1cc['as'],'attributes':_0xe4b1cc['attributes'],'include':_0xe4b1cc[_0xb0ee('0x1e')]?_['map'](_0xe4b1cc['include'],function(_0x5402ca){return{'model':db[_0x5402ca[_0xb0ee('0x20')]],'as':_0x5402ca['as'],'attributes':_0x5402ca[_0xb0ee('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x354bdc){logger[_0xb0ee('0xe')](_0xb0ee('0x24'),_0x1f0db8);logger[_0xb0ee('0x21')](_0xb0ee('0x24'),_0x1f0db8,JSON[_0xb0ee('0x23')](_0x354bdc));_0x111c57(_0x354bdc);})[_0xb0ee('0x16')](function(_0x3b3d22){logger[_0xb0ee('0x12')](_0xb0ee('0x24'),_0x3b3d22[_0xb0ee('0x14')],_0x1f0db8);_0x45b626(_0x34bb9d[_0xb0ee('0x12')](0x1f4,_0x3b3d22[_0xb0ee('0x14')]));});});};
\ No newline at end of file
index 62c442d..6b2352a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x54a8=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/:id','show','/:id/fields','getFields','/:id/descriptions','getDescriptions','post','create','put','update','delete','destroy','exports'];(function(_0x270a7c,_0x1390e0){var _0x6b4732=function(_0x5205d1){while(--_0x5205d1){_0x270a7c['push'](_0x270a7c['shift']());}};_0x6b4732(++_0x1390e0);}(_0x54a8,0x120));var _0x854a=function(_0x2489f6,_0x299706){_0x2489f6=_0x2489f6-0x0;var _0x1cf056=_0x54a8[_0x2489f6];return _0x1cf056;};'use strict';var multer=require(_0x854a('0x0'));var util=require(_0x854a('0x1'));var path=require(_0x854a('0x2'));var timeout=require(_0x854a('0x3'));var express=require(_0x854a('0x4'));var router=express[_0x854a('0x5')]();var fs_extra=require(_0x854a('0x6'));var auth=require(_0x854a('0x7'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intZohoConfiguration.controller');router[_0x854a('0x8')]('/',auth[_0x854a('0x9')](),controller[_0x854a('0xa')]);router['get'](_0x854a('0xb'),auth[_0x854a('0x9')](),controller[_0x854a('0xc')]);router[_0x854a('0x8')](_0x854a('0xd'),auth[_0x854a('0x9')](),controller[_0x854a('0xe')]);router[_0x854a('0x8')]('/:id/subjects',auth['isAuthenticated'](),controller['getSubjects']);router['get'](_0x854a('0xf'),auth[_0x854a('0x9')](),controller[_0x854a('0x10')]);router[_0x854a('0x11')]('/',auth[_0x854a('0x9')](),controller[_0x854a('0x12')]);router[_0x854a('0x13')](_0x854a('0xb'),auth[_0x854a('0x9')](),controller[_0x854a('0x14')]);router[_0x854a('0x15')]('/:id',auth['isAuthenticated'](),controller[_0x854a('0x16')]);module[_0x854a('0x17')]=router;
\ No newline at end of file
+var _0x81ef=['../../components/auth/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/fields','getFields','/:id/subjects','/:id/descriptions','getDescriptions','create','delete','destroy','multer','util','path','connect-timeout','express','Router'];(function(_0x20ef64,_0x4a8fe9){var _0x3707d8=function(_0x5b9a88){while(--_0x5b9a88){_0x20ef64['push'](_0x20ef64['shift']());}};_0x3707d8(++_0x4a8fe9);}(_0x81ef,0x14e));var _0xf81e=function(_0x26e209,_0x5dc55d){_0x26e209=_0x26e209-0x0;var _0x42fc16=_0x81ef[_0x26e209];return _0x42fc16;};'use strict';var multer=require(_0xf81e('0x0'));var util=require(_0xf81e('0x1'));var path=require(_0xf81e('0x2'));var timeout=require(_0xf81e('0x3'));var express=require(_0xf81e('0x4'));var router=express[_0xf81e('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0xf81e('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xf81e('0x7'));var controller=require('./intZohoConfiguration.controller');router[_0xf81e('0x8')]('/',auth[_0xf81e('0x9')](),controller['index']);router[_0xf81e('0x8')](_0xf81e('0xa'),auth['isAuthenticated'](),controller[_0xf81e('0xb')]);router[_0xf81e('0x8')](_0xf81e('0xc'),auth[_0xf81e('0x9')](),controller[_0xf81e('0xd')]);router[_0xf81e('0x8')](_0xf81e('0xe'),auth['isAuthenticated'](),controller['getSubjects']);router[_0xf81e('0x8')](_0xf81e('0xf'),auth['isAuthenticated'](),controller[_0xf81e('0x10')]);router['post']('/',auth[_0xf81e('0x9')](),controller[_0xf81e('0x11')]);router['put'](_0xf81e('0xa'),auth[_0xf81e('0x9')](),controller['update']);router[_0xf81e('0x12')](_0xf81e('0xa'),auth['isAuthenticated'](),controller[_0xf81e('0x13')]);module['exports']=router;
\ No newline at end of file
index f07ce6a..2dde52e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd64=['lead','nothing','contact_lead','contact','sequelize','STRING','ENUM'];(function(_0x334dd6,_0x20d277){var _0x36443d=function(_0x51e3b3){while(--_0x51e3b3){_0x334dd6['push'](_0x334dd6['shift']());}};_0x36443d(++_0x20d277);}(_0xdd64,0x1c4));var _0x4dd6=function(_0x23fc7a,_0x481f4f){_0x23fc7a=_0x23fc7a-0x0;var _0x2978f9=_0xdd64[_0x23fc7a];return _0x2978f9;};'use strict';var Sequelize=require(_0x4dd6('0x0'));module['exports']={'name':{'type':Sequelize[_0x4dd6('0x1')]},'moduleCreate':{'type':Sequelize[_0x4dd6('0x2')](_0x4dd6('0x3'),'contact',_0x4dd6('0x4')),'defaultValue':'lead'},'moduleSearch':{'type':Sequelize[_0x4dd6('0x2')](_0x4dd6('0x5'),_0x4dd6('0x6'),'lead'),'defaultValue':_0x4dd6('0x5')},'description':{'type':Sequelize[_0x4dd6('0x1')]}};
\ No newline at end of file
+var _0xdccb=['lead','nothing','contact_lead','contact','sequelize','exports','STRING','ENUM'];(function(_0x9a30c8,_0x42c25e){var _0x4ad3d9=function(_0x3777d1){while(--_0x3777d1){_0x9a30c8['push'](_0x9a30c8['shift']());}};_0x4ad3d9(++_0x42c25e);}(_0xdccb,0x16c));var _0xbdcc=function(_0x5da416,_0x47b448){_0x5da416=_0x5da416-0x0;var _0x560fa5=_0xdccb[_0x5da416];return _0x560fa5;};'use strict';var Sequelize=require(_0xbdcc('0x0'));module[_0xbdcc('0x1')]={'name':{'type':Sequelize[_0xbdcc('0x2')]},'moduleCreate':{'type':Sequelize[_0xbdcc('0x3')](_0xbdcc('0x4'),'contact',_0xbdcc('0x5')),'defaultValue':_0xbdcc('0x4')},'moduleSearch':{'type':Sequelize['ENUM'](_0xbdcc('0x6'),_0xbdcc('0x7'),_0xbdcc('0x4')),'defaultValue':_0xbdcc('0x6')},'description':{'type':Sequelize[_0xbdcc('0x2')]}};
\ No newline at end of file
index 13068ae..5fd1c34 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1956=['body','findOne','ZohoField','getFields','getSubjects','getDescriptions','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','squel','jsforce','desk.js','querystring','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','offset','count','limit','set','reject','update','then','destroy','stack','name','index','map','ZohoConfiguration','rawAttributes','key','model','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','filters','pick','filter','merge','where','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','keys','length','find','create'];(function(_0x5911ae,_0x7d49b){var _0x455387=function(_0x23921d){while(--_0x23921d){_0x5911ae['push'](_0x5911ae['shift']());}};_0x455387(++_0x7d49b);}(_0x1956,0x1b6));var _0x6195=function(_0x456b57,_0x58691a){_0x456b57=_0x456b57-0x0;var _0x18f49f=_0x1956[_0x456b57];return _0x18f49f;};'use strict';var emlformat=require(_0x6195('0x0'));var rimraf=require(_0x6195('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x6195('0x2'));var rp=require(_0x6195('0x3'));var moment=require(_0x6195('0x4'));var BPromise=require(_0x6195('0x5'));var Mustache=require('mustache');var util=require(_0x6195('0x6'));var path=require(_0x6195('0x7'));var sox=require(_0x6195('0x8'));var csv=require('to-csv');var ejs=require(_0x6195('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x6195('0xa'));var crypto=require('crypto');var jsforce=require(_0x6195('0xb'));var deskjs=require(_0x6195('0xc'));var toCsv=require('to-csv');var querystring=require(_0x6195('0xd'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x6195('0xe'));var qs=require(_0x6195('0xf'));var as=require(_0x6195('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x6195('0x11'));var config=require(_0x6195('0x12'));var licenseUtil=require(_0x6195('0x13'));var db=require(_0x6195('0x14'))['db'];function respondWithStatusCode(_0x532f2b,_0x37288d){_0x37288d=_0x37288d||0xcc;return function(_0x2fe0d8){if(_0x2fe0d8){return _0x532f2b['sendStatus'](_0x37288d);}return _0x532f2b[_0x6195('0x15')](_0x37288d)['end']();};}function respondWithResult(_0x24986d,_0x4b1742){_0x4b1742=_0x4b1742||0xc8;return function(_0x13a473){if(_0x13a473){return _0x24986d[_0x6195('0x15')](_0x4b1742)[_0x6195('0x16')](_0x13a473);}};}function respondWithFilteredResult(_0x31616a,_0x486ddb){return function(_0x4ae6fa){if(_0x4ae6fa){var _0x1bef6f=typeof _0x486ddb[_0x6195('0x17')]==='undefined'&&typeof _0x486ddb['limit']==='undefined';var _0x3970ec=_0x4ae6fa[_0x6195('0x18')];var _0x1c0ea4=_0x1bef6f?0x0:_0x486ddb['offset'];var _0x303cda=_0x1bef6f?_0x4ae6fa[_0x6195('0x18')]:_0x486ddb['offset']+_0x486ddb[_0x6195('0x19')];var _0x99cc79;if(_0x303cda>=_0x3970ec){_0x303cda=_0x3970ec;_0x99cc79=0xc8;}else{_0x99cc79=0xce;}_0x31616a[_0x6195('0x15')](_0x99cc79);return _0x31616a[_0x6195('0x1a')]('Content-Range',_0x1c0ea4+'-'+_0x303cda+'/'+_0x3970ec)[_0x6195('0x16')](_0x4ae6fa);}return null;};}function patchUpdates(_0x146eee){return function(_0x1fdb5a){try{jsonpatch['apply'](_0x1fdb5a,_0x146eee,!![]);}catch(_0x51fa01){return BPromise[_0x6195('0x1b')](_0x51fa01);}return _0x1fdb5a['save']();};}function saveUpdates(_0x61d706,_0x564370){return function(_0xdcd3){if(_0xdcd3){return _0xdcd3[_0x6195('0x1c')](_0x61d706)[_0x6195('0x1d')](function(_0x396234){return _0x396234;});}return null;};}function removeEntity(_0x15e5c4,_0x1a3269){return function(_0xf2ae52){if(_0xf2ae52){return _0xf2ae52[_0x6195('0x1e')]()[_0x6195('0x1d')](function(){_0x15e5c4[_0x6195('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x13ac3a,_0x33ba00){return function(_0xbc6818){if(!_0xbc6818){_0x13ac3a['sendStatus'](0x194);}return _0xbc6818;};}function handleError(_0x49e592,_0x30e8b2){_0x30e8b2=_0x30e8b2||0x1f4;return function(_0x4bfec4){logger['error'](_0x4bfec4[_0x6195('0x1f')]);if(_0x4bfec4[_0x6195('0x20')]){delete _0x4bfec4['name'];}_0x49e592[_0x6195('0x15')](_0x30e8b2)['send'](_0x4bfec4);};}exports[_0x6195('0x21')]=function(_0x14b924,_0x3bf5aa){var _0x34587e={},_0x4541b6={},_0xb93185={'count':0x0,'rows':[]};var _0x1514ae=_[_0x6195('0x22')](db[_0x6195('0x23')][_0x6195('0x24')],function(_0x2914d6){return{'name':_0x2914d6['fieldName'],'type':_0x2914d6['type'][_0x6195('0x25')]};});_0x4541b6[_0x6195('0x26')]=_[_0x6195('0x22')](_0x1514ae,_0x6195('0x20'));_0x4541b6[_0x6195('0x27')]=_['keys'](_0x14b924[_0x6195('0x27')]);_0x4541b6['filters']=_[_0x6195('0x28')](_0x4541b6[_0x6195('0x26')],_0x4541b6[_0x6195('0x27')]);_0x34587e[_0x6195('0x29')]=_[_0x6195('0x28')](_0x4541b6[_0x6195('0x26')],qs[_0x6195('0x2a')](_0x14b924[_0x6195('0x27')][_0x6195('0x2a')]));_0x34587e[_0x6195('0x29')]=_0x34587e[_0x6195('0x29')]['length']?_0x34587e['attributes']:_0x4541b6[_0x6195('0x26')];if(!_0x14b924['query'][_0x6195('0x2b')](_0x6195('0x2c'))){_0x34587e[_0x6195('0x19')]=qs['limit'](_0x14b924['query'][_0x6195('0x19')]);_0x34587e[_0x6195('0x17')]=qs[_0x6195('0x17')](_0x14b924[_0x6195('0x27')][_0x6195('0x17')]);}_0x34587e[_0x6195('0x2d')]=qs[_0x6195('0x2e')](_0x14b924['query']['sort']);_0x34587e['where']=qs[_0x6195('0x2f')](_[_0x6195('0x30')](_0x14b924[_0x6195('0x27')],_0x4541b6[_0x6195('0x2f')]),_0x1514ae);if(_0x14b924['query'][_0x6195('0x31')]){_0x34587e['where']=_[_0x6195('0x32')](_0x34587e[_0x6195('0x33')],{'$or':_[_0x6195('0x22')](_0x1514ae,function(_0x4ba4cd){if(_0x4ba4cd[_0x6195('0x34')]!==_0x6195('0x35')){var _0x200be3={};_0x200be3[_0x4ba4cd[_0x6195('0x20')]]={'$like':'%'+_0x14b924[_0x6195('0x27')]['filter']+'%'};return _0x200be3;}})});}_0x34587e=_[_0x6195('0x32')]({},_0x34587e,_0x14b924[_0x6195('0x36')]);var _0x23af74={'where':_0x34587e[_0x6195('0x33')]};return db[_0x6195('0x23')][_0x6195('0x18')](_0x23af74)[_0x6195('0x1d')](function(_0x498693){_0xb93185[_0x6195('0x18')]=_0x498693;if(_0x14b924[_0x6195('0x27')][_0x6195('0x37')]){_0x34587e[_0x6195('0x38')]=[{'all':!![]}];}return db['ZohoConfiguration'][_0x6195('0x39')](_0x34587e);})[_0x6195('0x1d')](function(_0x2a5e1c){_0xb93185[_0x6195('0x3a')]=_0x2a5e1c;return _0xb93185;})['then'](respondWithFilteredResult(_0x3bf5aa,_0x34587e))[_0x6195('0x3b')](handleError(_0x3bf5aa,null));};exports[_0x6195('0x3c')]=function(_0x1f6e7a,_0x1d189a){var _0x1d8fcd={'raw':![],'where':{'id':_0x1f6e7a[_0x6195('0x3d')]['id']}},_0x1ca0a5={};_0x1ca0a5[_0x6195('0x26')]=_[_0x6195('0x3e')](db['ZohoConfiguration'][_0x6195('0x24')]);_0x1ca0a5[_0x6195('0x27')]=_[_0x6195('0x3e')](_0x1f6e7a['query']);_0x1ca0a5['filters']=_['intersection'](_0x1ca0a5[_0x6195('0x26')],_0x1ca0a5[_0x6195('0x27')]);_0x1d8fcd['attributes']=_[_0x6195('0x28')](_0x1ca0a5[_0x6195('0x26')],qs[_0x6195('0x2a')](_0x1f6e7a[_0x6195('0x27')][_0x6195('0x2a')]));_0x1d8fcd[_0x6195('0x29')]=_0x1d8fcd['attributes'][_0x6195('0x3f')]?_0x1d8fcd[_0x6195('0x29')]:_0x1ca0a5[_0x6195('0x26')];if(_0x1f6e7a[_0x6195('0x27')]['includeAll']){_0x1d8fcd[_0x6195('0x38')]=[{'all':!![]}];}_0x1d8fcd=_[_0x6195('0x32')]({},_0x1d8fcd,_0x1f6e7a['options']);return db[_0x6195('0x23')][_0x6195('0x40')](_0x1d8fcd)[_0x6195('0x1d')](handleEntityNotFound(_0x1d189a,null))[_0x6195('0x1d')](respondWithResult(_0x1d189a,null))[_0x6195('0x3b')](handleError(_0x1d189a,null));};exports[_0x6195('0x41')]=function(_0x19ed3c,_0x1dbe72){return db[_0x6195('0x23')]['create'](_0x19ed3c['body'],{})[_0x6195('0x1d')](respondWithResult(_0x1dbe72,0xc9))[_0x6195('0x3b')](handleError(_0x1dbe72,null));};exports['update']=function(_0x268f26,_0x259527){if(_0x268f26['body']['id']){delete _0x268f26[_0x6195('0x42')]['id'];}return db[_0x6195('0x23')][_0x6195('0x40')]({'where':{'id':_0x268f26['params']['id']}})['then'](handleEntityNotFound(_0x259527,null))[_0x6195('0x1d')](saveUpdates(_0x268f26[_0x6195('0x42')],null))['then'](respondWithResult(_0x259527,null))['catch'](handleError(_0x259527,null));};exports['destroy']=function(_0x42b5b1,_0x4bbea2){return db['ZohoConfiguration'][_0x6195('0x40')]({'where':{'id':_0x42b5b1[_0x6195('0x3d')]['id']}})[_0x6195('0x1d')](handleEntityNotFound(_0x4bbea2,null))['then'](removeEntity(_0x4bbea2,null))[_0x6195('0x3b')](handleError(_0x4bbea2,null));};exports['getFields']=function(_0x457f4f,_0x5db6de,_0x138f7e){var _0x5df1a4={};var _0x3ca802={};var _0x57c28b;var _0x4e9c31;return db[_0x6195('0x23')][_0x6195('0x43')]({'where':{'id':_0x457f4f['params']['id']}})[_0x6195('0x1d')](handleEntityNotFound(_0x5db6de,null))[_0x6195('0x1d')](function(_0x59fb29){if(_0x59fb29){_0x57c28b=_0x59fb29;_0x3ca802[_0x6195('0x26')]=_[_0x6195('0x3e')](db[_0x6195('0x44')][_0x6195('0x24')]);_0x3ca802[_0x6195('0x27')]=_[_0x6195('0x3e')](_0x457f4f[_0x6195('0x27')]);_0x3ca802[_0x6195('0x2f')]=_[_0x6195('0x28')](_0x3ca802['model'],_0x3ca802[_0x6195('0x27')]);_0x5df1a4['attributes']=_[_0x6195('0x28')](_0x3ca802[_0x6195('0x26')],qs[_0x6195('0x2a')](_0x457f4f['query']['fields']));_0x5df1a4[_0x6195('0x29')]=_0x5df1a4['attributes'][_0x6195('0x3f')]?_0x5df1a4[_0x6195('0x29')]:_0x3ca802['model'];_0x5df1a4[_0x6195('0x2d')]=qs['sort'](_0x457f4f[_0x6195('0x27')][_0x6195('0x2e')]);_0x5df1a4['where']=qs[_0x6195('0x2f')](_[_0x6195('0x30')](_0x457f4f['query'],_0x3ca802[_0x6195('0x2f')]));if(_0x457f4f[_0x6195('0x27')][_0x6195('0x31')]){_0x5df1a4['where']=_[_0x6195('0x32')](_0x5df1a4[_0x6195('0x33')],{'$or':_[_0x6195('0x22')](_0x5df1a4[_0x6195('0x29')],function(_0x7c17f6){var _0x6a46c3={};_0x6a46c3[_0x7c17f6]={'$like':'%'+_0x457f4f['query'][_0x6195('0x31')]+'%'};return _0x6a46c3;})});}_0x5df1a4=_[_0x6195('0x32')]({},_0x5df1a4,_0x457f4f[_0x6195('0x36')]);return _0x57c28b[_0x6195('0x45')](_0x5df1a4);}})[_0x6195('0x1d')](function(_0x3dd0b3){if(_0x3dd0b3){_0x4e9c31=_0x3dd0b3[_0x6195('0x3f')];if(!_0x457f4f[_0x6195('0x27')][_0x6195('0x2b')](_0x6195('0x2c'))){_0x5df1a4[_0x6195('0x19')]=qs[_0x6195('0x19')](_0x457f4f[_0x6195('0x27')][_0x6195('0x19')]);_0x5df1a4[_0x6195('0x17')]=qs[_0x6195('0x17')](_0x457f4f[_0x6195('0x27')][_0x6195('0x17')]);}return _0x57c28b[_0x6195('0x45')](_0x5df1a4);}})[_0x6195('0x1d')](function(_0x4ef521){if(_0x4ef521){return _0x4ef521?{'count':_0x4e9c31,'rows':_0x4ef521}:null;}})[_0x6195('0x1d')](respondWithResult(_0x5db6de,null))['catch'](handleError(_0x5db6de,null));};exports[_0x6195('0x46')]=function(_0x39e46b,_0x79cb7e,_0x49e0da){var _0x34eb01={};var _0x37e5f9={};var _0x3c41bb;var _0x280547;return db[_0x6195('0x23')][_0x6195('0x43')]({'where':{'id':_0x39e46b[_0x6195('0x3d')]['id']}})[_0x6195('0x1d')](handleEntityNotFound(_0x79cb7e,null))[_0x6195('0x1d')](function(_0x350ec6){if(_0x350ec6){_0x3c41bb=_0x350ec6;_0x37e5f9[_0x6195('0x26')]=_[_0x6195('0x3e')](db['ZohoField'][_0x6195('0x24')]);_0x37e5f9['query']=_[_0x6195('0x3e')](_0x39e46b['query']);_0x37e5f9['filters']=_[_0x6195('0x28')](_0x37e5f9[_0x6195('0x26')],_0x37e5f9[_0x6195('0x27')]);_0x34eb01[_0x6195('0x29')]=_[_0x6195('0x28')](_0x37e5f9[_0x6195('0x26')],qs[_0x6195('0x2a')](_0x39e46b[_0x6195('0x27')][_0x6195('0x2a')]));_0x34eb01[_0x6195('0x29')]=_0x34eb01[_0x6195('0x29')][_0x6195('0x3f')]?_0x34eb01[_0x6195('0x29')]:_0x37e5f9[_0x6195('0x26')];_0x34eb01[_0x6195('0x2d')]=qs[_0x6195('0x2e')](_0x39e46b['query'][_0x6195('0x2e')]);_0x34eb01[_0x6195('0x33')]=qs[_0x6195('0x2f')](_['pick'](_0x39e46b[_0x6195('0x27')],_0x37e5f9['filters']));if(_0x39e46b[_0x6195('0x27')][_0x6195('0x31')]){_0x34eb01[_0x6195('0x33')]=_[_0x6195('0x32')](_0x34eb01['where'],{'$or':_[_0x6195('0x22')](_0x34eb01[_0x6195('0x29')],function(_0x346c05){var _0x5f02dd={};_0x5f02dd[_0x346c05]={'$like':'%'+_0x39e46b[_0x6195('0x27')][_0x6195('0x31')]+'%'};return _0x5f02dd;})});}_0x34eb01=_['merge']({},_0x34eb01,_0x39e46b[_0x6195('0x36')]);return _0x3c41bb['getSubjects'](_0x34eb01);}})[_0x6195('0x1d')](function(_0x52fccd){if(_0x52fccd){_0x280547=_0x52fccd[_0x6195('0x3f')];if(!_0x39e46b['query'][_0x6195('0x2b')](_0x6195('0x2c'))){_0x34eb01[_0x6195('0x19')]=qs[_0x6195('0x19')](_0x39e46b[_0x6195('0x27')][_0x6195('0x19')]);_0x34eb01[_0x6195('0x17')]=qs[_0x6195('0x17')](_0x39e46b[_0x6195('0x27')][_0x6195('0x17')]);}return _0x3c41bb[_0x6195('0x46')](_0x34eb01);}})[_0x6195('0x1d')](function(_0x20bb31){if(_0x20bb31){return _0x20bb31?{'count':_0x280547,'rows':_0x20bb31}:null;}})[_0x6195('0x1d')](respondWithResult(_0x79cb7e,null))[_0x6195('0x3b')](handleError(_0x79cb7e,null));};exports[_0x6195('0x47')]=function(_0x235716,_0x5e4ea7,_0x228c50){var _0x37f934={};var _0x46024c={};var _0x3a531c;var _0x25a910;return db['ZohoConfiguration'][_0x6195('0x43')]({'where':{'id':_0x235716[_0x6195('0x3d')]['id']}})[_0x6195('0x1d')](handleEntityNotFound(_0x5e4ea7,null))['then'](function(_0x34940d){if(_0x34940d){_0x3a531c=_0x34940d;_0x46024c[_0x6195('0x26')]=_['keys'](db[_0x6195('0x44')]['rawAttributes']);_0x46024c[_0x6195('0x27')]=_[_0x6195('0x3e')](_0x235716[_0x6195('0x27')]);_0x46024c[_0x6195('0x2f')]=_[_0x6195('0x28')](_0x46024c[_0x6195('0x26')],_0x46024c[_0x6195('0x27')]);_0x37f934[_0x6195('0x29')]=_[_0x6195('0x28')](_0x46024c[_0x6195('0x26')],qs[_0x6195('0x2a')](_0x235716[_0x6195('0x27')][_0x6195('0x2a')]));_0x37f934[_0x6195('0x29')]=_0x37f934[_0x6195('0x29')][_0x6195('0x3f')]?_0x37f934['attributes']:_0x46024c[_0x6195('0x26')];_0x37f934[_0x6195('0x2d')]=qs[_0x6195('0x2e')](_0x235716[_0x6195('0x27')][_0x6195('0x2e')]);_0x37f934[_0x6195('0x33')]=qs[_0x6195('0x2f')](_[_0x6195('0x30')](_0x235716[_0x6195('0x27')],_0x46024c[_0x6195('0x2f')]));if(_0x235716['query'][_0x6195('0x31')]){_0x37f934[_0x6195('0x33')]=_[_0x6195('0x32')](_0x37f934[_0x6195('0x33')],{'$or':_[_0x6195('0x22')](_0x37f934[_0x6195('0x29')],function(_0x4f715f){var _0x1b0329={};_0x1b0329[_0x4f715f]={'$like':'%'+_0x235716[_0x6195('0x27')][_0x6195('0x31')]+'%'};return _0x1b0329;})});}_0x37f934=_[_0x6195('0x32')]({},_0x37f934,_0x235716['options']);return _0x3a531c['getDescriptions'](_0x37f934);}})['then'](function(_0x22a9c2){if(_0x22a9c2){_0x25a910=_0x22a9c2[_0x6195('0x3f')];if(!_0x235716[_0x6195('0x27')][_0x6195('0x2b')](_0x6195('0x2c'))){_0x37f934[_0x6195('0x19')]=qs['limit'](_0x235716[_0x6195('0x27')][_0x6195('0x19')]);_0x37f934[_0x6195('0x17')]=qs[_0x6195('0x17')](_0x235716[_0x6195('0x27')][_0x6195('0x17')]);}return _0x3a531c['getDescriptions'](_0x37f934);}})[_0x6195('0x1d')](function(_0x20714f){if(_0x20714f){return _0x20714f?{'count':_0x25a910,'rows':_0x20714f}:null;}})['then'](respondWithResult(_0x5e4ea7,null))['catch'](handleError(_0x5e4ea7,null));};
\ No newline at end of file
+var _0x36d9=['undefined','count','Content-Range','apply','reject','save','update','then','destroy','sendStatus','stack','name','send','index','map','ZohoConfiguration','fieldName','model','query','keys','filters','intersection','attributes','fields','length','nolimit','limit','order','sort','where','filter','type','merge','options','include','findAll','catch','show','params','rawAttributes','includeAll','find','create','body','getFields','findOne','pick','hasOwnProperty','getSubjects','ZohoField','getDescriptions','rimraf','zip-dir','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset'];(function(_0x200dc7,_0x3e404f){var _0x4fe35e=function(_0x4569db){while(--_0x4569db){_0x200dc7['push'](_0x200dc7['shift']());}};_0x4fe35e(++_0x3e404f);}(_0x36d9,0x1b9));var _0x936d=function(_0x51ba7c,_0x3dfabd){_0x51ba7c=_0x51ba7c-0x0;var _0x43704b=_0x36d9[_0x51ba7c];return _0x43704b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x936d('0x0'));var zipdir=require(_0x936d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x936d('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x936d('0x3'));var util=require(_0x936d('0x4'));var path=require(_0x936d('0x5'));var sox=require(_0x936d('0x6'));var csv=require(_0x936d('0x7'));var ejs=require(_0x936d('0x8'));var fs=require('fs');var fs_extra=require(_0x936d('0x9'));var _=require(_0x936d('0xa'));var squel=require(_0x936d('0xb'));var crypto=require(_0x936d('0xc'));var jsforce=require(_0x936d('0xd'));var deskjs=require(_0x936d('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x936d('0xf'));var authService=require(_0x936d('0x10'));var qs=require(_0x936d('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x936d('0x12'));var logger=require(_0x936d('0x13'))('api');var utils=require('../../config/utils');var config=require(_0x936d('0x14'));var licenseUtil=require(_0x936d('0x15'));var db=require(_0x936d('0x16'))['db'];function respondWithStatusCode(_0x3bd413,_0x40c4fa){_0x40c4fa=_0x40c4fa||0xcc;return function(_0x162159){if(_0x162159){return _0x3bd413['sendStatus'](_0x40c4fa);}return _0x3bd413[_0x936d('0x17')](_0x40c4fa)[_0x936d('0x18')]();};}function respondWithResult(_0xa9cd1a,_0x2e68d7){_0x2e68d7=_0x2e68d7||0xc8;return function(_0x4b5dd6){if(_0x4b5dd6){return _0xa9cd1a['status'](_0x2e68d7)[_0x936d('0x19')](_0x4b5dd6);}};}function respondWithFilteredResult(_0x415c2c,_0x342678){return function(_0x522dae){if(_0x522dae){var _0x29ad9a=typeof _0x342678[_0x936d('0x1a')]===_0x936d('0x1b')&&typeof _0x342678['limit']==='undefined';var _0x5beb55=_0x522dae[_0x936d('0x1c')];var _0x498d7c=_0x29ad9a?0x0:_0x342678['offset'];var _0x3076a4=_0x29ad9a?_0x522dae[_0x936d('0x1c')]:_0x342678[_0x936d('0x1a')]+_0x342678['limit'];var _0x56c0f5;if(_0x3076a4>=_0x5beb55){_0x3076a4=_0x5beb55;_0x56c0f5=0xc8;}else{_0x56c0f5=0xce;}_0x415c2c[_0x936d('0x17')](_0x56c0f5);return _0x415c2c['set'](_0x936d('0x1d'),_0x498d7c+'-'+_0x3076a4+'/'+_0x5beb55)['json'](_0x522dae);}return null;};}function patchUpdates(_0xde3adb){return function(_0x2094b9){try{jsonpatch[_0x936d('0x1e')](_0x2094b9,_0xde3adb,!![]);}catch(_0x299633){return BPromise[_0x936d('0x1f')](_0x299633);}return _0x2094b9[_0x936d('0x20')]();};}function saveUpdates(_0x43bf6f,_0xa893dc){return function(_0x1d085d){if(_0x1d085d){return _0x1d085d[_0x936d('0x21')](_0x43bf6f)[_0x936d('0x22')](function(_0x7744de){return _0x7744de;});}return null;};}function removeEntity(_0x3f7e22,_0x3d31fc){return function(_0x5a93a8){if(_0x5a93a8){return _0x5a93a8[_0x936d('0x23')]()[_0x936d('0x22')](function(){_0x3f7e22[_0x936d('0x17')](0xcc)[_0x936d('0x18')]();});}};}function handleEntityNotFound(_0x194cc7,_0x7c9185){return function(_0x2b8adc){if(!_0x2b8adc){_0x194cc7[_0x936d('0x24')](0x194);}return _0x2b8adc;};}function handleError(_0x2864ba,_0x4734f7){_0x4734f7=_0x4734f7||0x1f4;return function(_0x312c4b){logger['error'](_0x312c4b[_0x936d('0x25')]);if(_0x312c4b[_0x936d('0x26')]){delete _0x312c4b[_0x936d('0x26')];}_0x2864ba['status'](_0x4734f7)[_0x936d('0x27')](_0x312c4b);};}exports[_0x936d('0x28')]=function(_0x118878,_0x360006){var _0x3660e2={},_0x5829cf={},_0x57e74a={'count':0x0,'rows':[]};var _0x47be67=_[_0x936d('0x29')](db[_0x936d('0x2a')]['rawAttributes'],function(_0x3c9232){return{'name':_0x3c9232[_0x936d('0x2b')],'type':_0x3c9232['type']['key']};});_0x5829cf[_0x936d('0x2c')]=_[_0x936d('0x29')](_0x47be67,_0x936d('0x26'));_0x5829cf[_0x936d('0x2d')]=_[_0x936d('0x2e')](_0x118878[_0x936d('0x2d')]);_0x5829cf[_0x936d('0x2f')]=_[_0x936d('0x30')](_0x5829cf[_0x936d('0x2c')],_0x5829cf[_0x936d('0x2d')]);_0x3660e2[_0x936d('0x31')]=_[_0x936d('0x30')](_0x5829cf[_0x936d('0x2c')],qs[_0x936d('0x32')](_0x118878[_0x936d('0x2d')]['fields']));_0x3660e2[_0x936d('0x31')]=_0x3660e2[_0x936d('0x31')][_0x936d('0x33')]?_0x3660e2[_0x936d('0x31')]:_0x5829cf['model'];if(!_0x118878[_0x936d('0x2d')]['hasOwnProperty'](_0x936d('0x34'))){_0x3660e2['limit']=qs[_0x936d('0x35')](_0x118878[_0x936d('0x2d')][_0x936d('0x35')]);_0x3660e2['offset']=qs[_0x936d('0x1a')](_0x118878[_0x936d('0x2d')][_0x936d('0x1a')]);}_0x3660e2[_0x936d('0x36')]=qs['sort'](_0x118878[_0x936d('0x2d')][_0x936d('0x37')]);_0x3660e2[_0x936d('0x38')]=qs[_0x936d('0x2f')](_['pick'](_0x118878[_0x936d('0x2d')],_0x5829cf[_0x936d('0x2f')]),_0x47be67);if(_0x118878[_0x936d('0x2d')][_0x936d('0x39')]){_0x3660e2[_0x936d('0x38')]=_['merge'](_0x3660e2[_0x936d('0x38')],{'$or':_[_0x936d('0x29')](_0x47be67,function(_0x56bfbd){if(_0x56bfbd[_0x936d('0x3a')]!=='VIRTUAL'){var _0x13eda7={};_0x13eda7[_0x56bfbd[_0x936d('0x26')]]={'$like':'%'+_0x118878[_0x936d('0x2d')]['filter']+'%'};return _0x13eda7;}})});}_0x3660e2=_[_0x936d('0x3b')]({},_0x3660e2,_0x118878[_0x936d('0x3c')]);var _0x5eadc2={'where':_0x3660e2[_0x936d('0x38')]};return db[_0x936d('0x2a')][_0x936d('0x1c')](_0x5eadc2)[_0x936d('0x22')](function(_0x145b80){_0x57e74a['count']=_0x145b80;if(_0x118878['query']['includeAll']){_0x3660e2[_0x936d('0x3d')]=[{'all':!![]}];}return db['ZohoConfiguration'][_0x936d('0x3e')](_0x3660e2);})['then'](function(_0x201d56){_0x57e74a['rows']=_0x201d56;return _0x57e74a;})[_0x936d('0x22')](respondWithFilteredResult(_0x360006,_0x3660e2))[_0x936d('0x3f')](handleError(_0x360006,null));};exports[_0x936d('0x40')]=function(_0x2e95ac,_0x32f535){var _0x2d6c41={'raw':![],'where':{'id':_0x2e95ac[_0x936d('0x41')]['id']}},_0x35b979={};_0x35b979['model']=_[_0x936d('0x2e')](db[_0x936d('0x2a')][_0x936d('0x42')]);_0x35b979[_0x936d('0x2d')]=_[_0x936d('0x2e')](_0x2e95ac[_0x936d('0x2d')]);_0x35b979['filters']=_[_0x936d('0x30')](_0x35b979[_0x936d('0x2c')],_0x35b979['query']);_0x2d6c41[_0x936d('0x31')]=_['intersection'](_0x35b979['model'],qs[_0x936d('0x32')](_0x2e95ac['query']['fields']));_0x2d6c41[_0x936d('0x31')]=_0x2d6c41[_0x936d('0x31')][_0x936d('0x33')]?_0x2d6c41['attributes']:_0x35b979[_0x936d('0x2c')];if(_0x2e95ac[_0x936d('0x2d')][_0x936d('0x43')]){_0x2d6c41[_0x936d('0x3d')]=[{'all':!![]}];}_0x2d6c41=_['merge']({},_0x2d6c41,_0x2e95ac[_0x936d('0x3c')]);return db[_0x936d('0x2a')][_0x936d('0x44')](_0x2d6c41)['then'](handleEntityNotFound(_0x32f535,null))[_0x936d('0x22')](respondWithResult(_0x32f535,null))[_0x936d('0x3f')](handleError(_0x32f535,null));};exports[_0x936d('0x45')]=function(_0x37ef35,_0x575ce7){return db['ZohoConfiguration'][_0x936d('0x45')](_0x37ef35['body'],{})[_0x936d('0x22')](respondWithResult(_0x575ce7,0xc9))[_0x936d('0x3f')](handleError(_0x575ce7,null));};exports[_0x936d('0x21')]=function(_0x1e5c46,_0x49f6c4){if(_0x1e5c46['body']['id']){delete _0x1e5c46['body']['id'];}return db[_0x936d('0x2a')][_0x936d('0x44')]({'where':{'id':_0x1e5c46['params']['id']}})[_0x936d('0x22')](handleEntityNotFound(_0x49f6c4,null))[_0x936d('0x22')](saveUpdates(_0x1e5c46[_0x936d('0x46')],null))[_0x936d('0x22')](respondWithResult(_0x49f6c4,null))[_0x936d('0x3f')](handleError(_0x49f6c4,null));};exports[_0x936d('0x23')]=function(_0x330d5e,_0x3660f2){return db[_0x936d('0x2a')]['find']({'where':{'id':_0x330d5e[_0x936d('0x41')]['id']}})[_0x936d('0x22')](handleEntityNotFound(_0x3660f2,null))[_0x936d('0x22')](removeEntity(_0x3660f2,null))[_0x936d('0x3f')](handleError(_0x3660f2,null));};exports[_0x936d('0x47')]=function(_0x2c1925,_0x5b7f82,_0x4e926c){var _0xd6298b={};var _0x52b032={};var _0x49ccfd;var _0x4e11c4;return db[_0x936d('0x2a')][_0x936d('0x48')]({'where':{'id':_0x2c1925[_0x936d('0x41')]['id']}})[_0x936d('0x22')](handleEntityNotFound(_0x5b7f82,null))[_0x936d('0x22')](function(_0x425ac0){if(_0x425ac0){_0x49ccfd=_0x425ac0;_0x52b032[_0x936d('0x2c')]=_[_0x936d('0x2e')](db['ZohoField']['rawAttributes']);_0x52b032[_0x936d('0x2d')]=_[_0x936d('0x2e')](_0x2c1925[_0x936d('0x2d')]);_0x52b032['filters']=_[_0x936d('0x30')](_0x52b032[_0x936d('0x2c')],_0x52b032[_0x936d('0x2d')]);_0xd6298b[_0x936d('0x31')]=_[_0x936d('0x30')](_0x52b032[_0x936d('0x2c')],qs['fields'](_0x2c1925[_0x936d('0x2d')][_0x936d('0x32')]));_0xd6298b[_0x936d('0x31')]=_0xd6298b[_0x936d('0x31')][_0x936d('0x33')]?_0xd6298b[_0x936d('0x31')]:_0x52b032[_0x936d('0x2c')];_0xd6298b[_0x936d('0x36')]=qs[_0x936d('0x37')](_0x2c1925['query'][_0x936d('0x37')]);_0xd6298b[_0x936d('0x38')]=qs['filters'](_[_0x936d('0x49')](_0x2c1925[_0x936d('0x2d')],_0x52b032[_0x936d('0x2f')]));if(_0x2c1925['query']['filter']){_0xd6298b[_0x936d('0x38')]=_[_0x936d('0x3b')](_0xd6298b[_0x936d('0x38')],{'$or':_[_0x936d('0x29')](_0xd6298b[_0x936d('0x31')],function(_0x1a38ef){var _0x560568={};_0x560568[_0x1a38ef]={'$like':'%'+_0x2c1925[_0x936d('0x2d')][_0x936d('0x39')]+'%'};return _0x560568;})});}_0xd6298b=_[_0x936d('0x3b')]({},_0xd6298b,_0x2c1925['options']);return _0x49ccfd[_0x936d('0x47')](_0xd6298b);}})[_0x936d('0x22')](function(_0x322f98){if(_0x322f98){_0x4e11c4=_0x322f98['length'];if(!_0x2c1925['query'][_0x936d('0x4a')](_0x936d('0x34'))){_0xd6298b[_0x936d('0x35')]=qs[_0x936d('0x35')](_0x2c1925[_0x936d('0x2d')][_0x936d('0x35')]);_0xd6298b['offset']=qs[_0x936d('0x1a')](_0x2c1925[_0x936d('0x2d')][_0x936d('0x1a')]);}return _0x49ccfd['getFields'](_0xd6298b);}})[_0x936d('0x22')](function(_0x3e4f58){if(_0x3e4f58){return _0x3e4f58?{'count':_0x4e11c4,'rows':_0x3e4f58}:null;}})[_0x936d('0x22')](respondWithResult(_0x5b7f82,null))[_0x936d('0x3f')](handleError(_0x5b7f82,null));};exports[_0x936d('0x4b')]=function(_0x32d6bb,_0x2199db,_0x44cd30){var _0x2cd5ff={};var _0x482e7d={};var _0x3bc1d9;var _0x2964c1;return db[_0x936d('0x2a')]['findOne']({'where':{'id':_0x32d6bb['params']['id']}})[_0x936d('0x22')](handleEntityNotFound(_0x2199db,null))[_0x936d('0x22')](function(_0x11d818){if(_0x11d818){_0x3bc1d9=_0x11d818;_0x482e7d[_0x936d('0x2c')]=_[_0x936d('0x2e')](db[_0x936d('0x4c')][_0x936d('0x42')]);_0x482e7d[_0x936d('0x2d')]=_[_0x936d('0x2e')](_0x32d6bb['query']);_0x482e7d['filters']=_[_0x936d('0x30')](_0x482e7d[_0x936d('0x2c')],_0x482e7d[_0x936d('0x2d')]);_0x2cd5ff[_0x936d('0x31')]=_[_0x936d('0x30')](_0x482e7d['model'],qs['fields'](_0x32d6bb['query'][_0x936d('0x32')]));_0x2cd5ff[_0x936d('0x31')]=_0x2cd5ff[_0x936d('0x31')][_0x936d('0x33')]?_0x2cd5ff[_0x936d('0x31')]:_0x482e7d[_0x936d('0x2c')];_0x2cd5ff[_0x936d('0x36')]=qs[_0x936d('0x37')](_0x32d6bb[_0x936d('0x2d')]['sort']);_0x2cd5ff[_0x936d('0x38')]=qs['filters'](_[_0x936d('0x49')](_0x32d6bb[_0x936d('0x2d')],_0x482e7d['filters']));if(_0x32d6bb[_0x936d('0x2d')][_0x936d('0x39')]){_0x2cd5ff[_0x936d('0x38')]=_['merge'](_0x2cd5ff[_0x936d('0x38')],{'$or':_[_0x936d('0x29')](_0x2cd5ff[_0x936d('0x31')],function(_0xfc7d37){var _0x26aeba={};_0x26aeba[_0xfc7d37]={'$like':'%'+_0x32d6bb['query'][_0x936d('0x39')]+'%'};return _0x26aeba;})});}_0x2cd5ff=_['merge']({},_0x2cd5ff,_0x32d6bb['options']);return _0x3bc1d9[_0x936d('0x4b')](_0x2cd5ff);}})['then'](function(_0x23293e){if(_0x23293e){_0x2964c1=_0x23293e[_0x936d('0x33')];if(!_0x32d6bb[_0x936d('0x2d')][_0x936d('0x4a')](_0x936d('0x34'))){_0x2cd5ff[_0x936d('0x35')]=qs['limit'](_0x32d6bb[_0x936d('0x2d')][_0x936d('0x35')]);_0x2cd5ff[_0x936d('0x1a')]=qs[_0x936d('0x1a')](_0x32d6bb[_0x936d('0x2d')][_0x936d('0x1a')]);}return _0x3bc1d9[_0x936d('0x4b')](_0x2cd5ff);}})[_0x936d('0x22')](function(_0x4d4002){if(_0x4d4002){return _0x4d4002?{'count':_0x2964c1,'rows':_0x4d4002}:null;}})['then'](respondWithResult(_0x2199db,null))['catch'](handleError(_0x2199db,null));};exports[_0x936d('0x4d')]=function(_0x3b9cdc,_0x5623de,_0x4e086f){var _0x209e9c={};var _0x45b403={};var _0x91006a;var _0x254b9a;return db[_0x936d('0x2a')][_0x936d('0x48')]({'where':{'id':_0x3b9cdc['params']['id']}})['then'](handleEntityNotFound(_0x5623de,null))['then'](function(_0x33f1b4){if(_0x33f1b4){_0x91006a=_0x33f1b4;_0x45b403['model']=_[_0x936d('0x2e')](db[_0x936d('0x4c')][_0x936d('0x42')]);_0x45b403[_0x936d('0x2d')]=_[_0x936d('0x2e')](_0x3b9cdc[_0x936d('0x2d')]);_0x45b403[_0x936d('0x2f')]=_[_0x936d('0x30')](_0x45b403[_0x936d('0x2c')],_0x45b403['query']);_0x209e9c[_0x936d('0x31')]=_['intersection'](_0x45b403['model'],qs['fields'](_0x3b9cdc['query'][_0x936d('0x32')]));_0x209e9c['attributes']=_0x209e9c[_0x936d('0x31')]['length']?_0x209e9c['attributes']:_0x45b403['model'];_0x209e9c[_0x936d('0x36')]=qs[_0x936d('0x37')](_0x3b9cdc[_0x936d('0x2d')]['sort']);_0x209e9c[_0x936d('0x38')]=qs[_0x936d('0x2f')](_[_0x936d('0x49')](_0x3b9cdc[_0x936d('0x2d')],_0x45b403[_0x936d('0x2f')]));if(_0x3b9cdc[_0x936d('0x2d')][_0x936d('0x39')]){_0x209e9c['where']=_['merge'](_0x209e9c['where'],{'$or':_[_0x936d('0x29')](_0x209e9c[_0x936d('0x31')],function(_0xf17606){var _0x24f47c={};_0x24f47c[_0xf17606]={'$like':'%'+_0x3b9cdc[_0x936d('0x2d')][_0x936d('0x39')]+'%'};return _0x24f47c;})});}_0x209e9c=_[_0x936d('0x3b')]({},_0x209e9c,_0x3b9cdc[_0x936d('0x3c')]);return _0x91006a['getDescriptions'](_0x209e9c);}})[_0x936d('0x22')](function(_0x54120f){if(_0x54120f){_0x254b9a=_0x54120f[_0x936d('0x33')];if(!_0x3b9cdc['query'][_0x936d('0x4a')](_0x936d('0x34'))){_0x209e9c[_0x936d('0x35')]=qs['limit'](_0x3b9cdc['query'][_0x936d('0x35')]);_0x209e9c[_0x936d('0x1a')]=qs[_0x936d('0x1a')](_0x3b9cdc[_0x936d('0x2d')][_0x936d('0x1a')]);}return _0x91006a[_0x936d('0x4d')](_0x209e9c);}})[_0x936d('0x22')](function(_0x151875){if(_0x151875){return _0x151875?{'count':_0x254b9a,'rows':_0x151875}:null;}})['then'](respondWithResult(_0x5623de,null))[_0x936d('0x3f')](handleError(_0x5623de,null));};
\ No newline at end of file
index 601ed21..89c9881 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7599=['bluebird','request-promise','path','rimraf','../../config/environment','./intZohoConfiguration.attributes','exports','define','ZohoConfiguration','lodash','util','../../config/logger','api','moment'];(function(_0x54b514,_0x2f0c6d){var _0x5c5485=function(_0x6990ba){while(--_0x6990ba){_0x54b514['push'](_0x54b514['shift']());}};_0x5c5485(++_0x2f0c6d);}(_0x7599,0x1f3));var _0x9759=function(_0x3ad0b3,_0x5089d4){_0x3ad0b3=_0x3ad0b3-0x0;var _0x5a64b5=_0x7599[_0x3ad0b3];return _0x5a64b5;};'use strict';var _=require(_0x9759('0x0'));var util=require(_0x9759('0x1'));var logger=require(_0x9759('0x2'))(_0x9759('0x3'));var moment=require(_0x9759('0x4'));var BPromise=require(_0x9759('0x5'));var rp=require(_0x9759('0x6'));var fs=require('fs');var path=require(_0x9759('0x7'));var rimraf=require(_0x9759('0x8'));var config=require(_0x9759('0x9'));var attributes=require(_0x9759('0xa'));module[_0x9759('0xb')]=function(_0x190b56,_0x21af20){return _0x190b56[_0x9759('0xc')](_0x9759('0xd'),attributes,{'tableName':'int_zoho_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfde4=['util','../../config/logger','api','moment','request-promise','path','rimraf','./intZohoConfiguration.attributes','exports','define','ZohoConfiguration','lodash'];(function(_0x509083,_0x2ca7fc){var _0x5c5bcd=function(_0x2ebba4){while(--_0x2ebba4){_0x509083['push'](_0x509083['shift']());}};_0x5c5bcd(++_0x2ca7fc);}(_0xfde4,0xb3));var _0x4fde=function(_0x21c6b8,_0x16d6f6){_0x21c6b8=_0x21c6b8-0x0;var _0x39d474=_0xfde4[_0x21c6b8];return _0x39d474;};'use strict';var _=require(_0x4fde('0x0'));var util=require(_0x4fde('0x1'));var logger=require(_0x4fde('0x2'))(_0x4fde('0x3'));var moment=require(_0x4fde('0x4'));var BPromise=require('bluebird');var rp=require(_0x4fde('0x5'));var fs=require('fs');var path=require(_0x4fde('0x6'));var rimraf=require(_0x4fde('0x7'));var config=require('../../config/environment');var attributes=require(_0x4fde('0x8'));module[_0x4fde('0x9')]=function(_0x376272,_0x3db851){return _0x376272[_0x4fde('0xa')](_0x4fde('0xb'),attributes,{'tableName':'int_zoho_configurations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7619d82..9de19bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5e7a=['../../config/logger','../../config/environment','request','then','info','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','error','code','ZohoConfiguration,\x20%s,\x20%s','message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x6b9bb5,_0x280a6d){var _0x2bd02b=function(_0x51dce4){while(--_0x51dce4){_0x6b9bb5['push'](_0x6b9bb5['shift']());}};_0x2bd02b(++_0x280a6d);}(_0x5e7a,0x116));var _0xa5e7=function(_0x44a64f,_0x38475c){_0x44a64f=_0x44a64f-0x0;var _0x52024b=_0x5e7a[_0x44a64f];return _0x52024b;};'use strict';var _=require(_0xa5e7('0x0'));var util=require(_0xa5e7('0x1'));var moment=require(_0xa5e7('0x2'));var BPromise=require(_0xa5e7('0x3'));var rs=require(_0xa5e7('0x4'));var fs=require('fs');var Redis=require(_0xa5e7('0x5'));var db=require(_0xa5e7('0x6'))['db'];var utils=require(_0xa5e7('0x7'));var logger=require(_0xa5e7('0x8'))('rpc');var config=require(_0xa5e7('0x9'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2cfc26,_0x1e9109,_0x46af5f){return new BPromise(function(_0x1e93f0,_0xd63839){return client[_0xa5e7('0xa')](_0x2cfc26,_0x46af5f)[_0xa5e7('0xb')](function(_0x1f812c){logger[_0xa5e7('0xc')]('ZohoConfiguration,\x20%s,\x20%s',_0x1e9109,'request\x20sent');logger[_0xa5e7('0xd')](_0xa5e7('0xe'),_0x1e9109,'request\x20sent',JSON['stringify'](_0x1f812c));if(_0x1f812c['error']){if(_0x1f812c[_0xa5e7('0xf')][_0xa5e7('0x10')]===0x1f4){logger[_0xa5e7('0xf')](_0xa5e7('0x11'),_0x1e9109,_0x1f812c['error'][_0xa5e7('0x12')]);return _0xd63839(_0x1f812c[_0xa5e7('0xf')]['message']);}logger[_0xa5e7('0xf')](_0xa5e7('0x11'),_0x1e9109,_0x1f812c[_0xa5e7('0xf')][_0xa5e7('0x12')]);return _0x1e93f0(_0x1f812c[_0xa5e7('0xf')]['message']);}else{logger['info'](_0xa5e7('0x11'),_0x1e9109,_0xa5e7('0x13'));_0x1e93f0(_0x1f812c[_0xa5e7('0x14')]['message']);}})[_0xa5e7('0x15')](function(_0x923a12){logger[_0xa5e7('0xf')](_0xa5e7('0x11'),_0x1e9109,_0x923a12);_0xd63839(_0x923a12);});});}
\ No newline at end of file
+var _0x07a3=['ZohoConfiguration,\x20%s,\x20%s','request\x20sent','ZohoConfiguration,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','client','request','then','info'];(function(_0x8f9c00,_0x1a7e71){var _0x2865a4=function(_0x3cb0c0){while(--_0x3cb0c0){_0x8f9c00['push'](_0x8f9c00['shift']());}};_0x2865a4(++_0x1a7e71);}(_0x07a3,0xfe));var _0x307a=function(_0x3635ce,_0x33a6f9){_0x3635ce=_0x3635ce-0x0;var _0x97ecd0=_0x07a3[_0x3635ce];return _0x97ecd0;};'use strict';var _=require(_0x307a('0x0'));var util=require(_0x307a('0x1'));var moment=require(_0x307a('0x2'));var BPromise=require(_0x307a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x307a('0x4'));var db=require(_0x307a('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x307a('0x6'))(_0x307a('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x307a('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x29c247,_0x4b30a0,_0x29aeae){return new BPromise(function(_0x394106,_0x4bdcc0){return client[_0x307a('0x9')](_0x29c247,_0x29aeae)[_0x307a('0xa')](function(_0x1b0449){logger[_0x307a('0xb')](_0x307a('0xc'),_0x4b30a0,_0x307a('0xd'));logger['debug'](_0x307a('0xe'),_0x4b30a0,_0x307a('0xd'),JSON[_0x307a('0xf')](_0x1b0449));if(_0x1b0449[_0x307a('0x10')]){if(_0x1b0449[_0x307a('0x10')]['code']===0x1f4){logger[_0x307a('0x10')](_0x307a('0xc'),_0x4b30a0,_0x1b0449['error']['message']);return _0x4bdcc0(_0x1b0449[_0x307a('0x10')][_0x307a('0x11')]);}logger[_0x307a('0x10')](_0x307a('0xc'),_0x4b30a0,_0x1b0449[_0x307a('0x10')][_0x307a('0x11')]);return _0x394106(_0x1b0449[_0x307a('0x10')][_0x307a('0x11')]);}else{logger[_0x307a('0xb')](_0x307a('0xc'),_0x4b30a0,_0x307a('0xd'));_0x394106(_0x1b0449[_0x307a('0x12')][_0x307a('0x11')]);}})['catch'](function(_0x55572a){logger[_0x307a('0x10')](_0x307a('0xc'),_0x4b30a0,_0x55572a);_0x4bdcc0(_0x55572a);});});}
\ No newline at end of file
index 32cd1e8..b371916 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c8d=['delete','destroy','exports','path','express','Router','get','isAuthenticated','index','/:id','show','post','create','put','update'];(function(_0x28b33c,_0x360db3){var _0x238f9d=function(_0x4c57ad){while(--_0x4c57ad){_0x28b33c['push'](_0x28b33c['shift']());}};_0x238f9d(++_0x360db3);}(_0x5c8d,0x1d4));var _0xd5c8=function(_0x18b3a3,_0x4e1994){_0x18b3a3=_0x18b3a3-0x0;var _0xb552e4=_0x5c8d[_0x18b3a3];return _0xb552e4;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xd5c8('0x0'));var timeout=require('connect-timeout');var express=require(_0xd5c8('0x1'));var router=express[_0xd5c8('0x2')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./intZohoField.controller');router[_0xd5c8('0x3')]('/',auth[_0xd5c8('0x4')](),controller[_0xd5c8('0x5')]);router[_0xd5c8('0x3')](_0xd5c8('0x6'),auth[_0xd5c8('0x4')](),controller[_0xd5c8('0x7')]);router[_0xd5c8('0x8')]('/',auth[_0xd5c8('0x4')](),controller[_0xd5c8('0x9')]);router[_0xd5c8('0xa')](_0xd5c8('0x6'),auth[_0xd5c8('0x4')](),controller[_0xd5c8('0xb')]);router[_0xd5c8('0xc')](_0xd5c8('0x6'),auth[_0xd5c8('0x4')](),controller[_0xd5c8('0xd')]);module[_0xd5c8('0xe')]=router;
\ No newline at end of file
+var _0xd3d0=['/:id','show','create','put','update','delete','destroy','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./intZohoField.controller','get','isAuthenticated'];(function(_0x5e2cb4,_0x592c64){var _0x282902=function(_0x1c1836){while(--_0x1c1836){_0x5e2cb4['push'](_0x5e2cb4['shift']());}};_0x282902(++_0x592c64);}(_0xd3d0,0x1e3));var _0x0d3d=function(_0x148136,_0x42b870){_0x148136=_0x148136-0x0;var _0x1d3efe=_0xd3d0[_0x148136];return _0x1d3efe;};'use strict';var multer=require('multer');var util=require(_0x0d3d('0x0'));var path=require(_0x0d3d('0x1'));var timeout=require(_0x0d3d('0x2'));var express=require('express');var router=express[_0x0d3d('0x3')]();var fs_extra=require(_0x0d3d('0x4'));var auth=require(_0x0d3d('0x5'));var interaction=require(_0x0d3d('0x6'));var config=require(_0x0d3d('0x7'));var controller=require(_0x0d3d('0x8'));router[_0x0d3d('0x9')]('/',auth[_0x0d3d('0xa')](),controller['index']);router['get'](_0x0d3d('0xb'),auth[_0x0d3d('0xa')](),controller[_0x0d3d('0xc')]);router['post']('/',auth[_0x0d3d('0xa')](),controller[_0x0d3d('0xd')]);router[_0x0d3d('0xe')](_0x0d3d('0xb'),auth[_0x0d3d('0xa')](),controller[_0x0d3d('0xf')]);router[_0x0d3d('0x10')](_0x0d3d('0xb'),auth[_0x0d3d('0xa')](),controller[_0x0d3d('0x11')]);module[_0x0d3d('0x12')]=router;
\ No newline at end of file
index ddcc830..0b88d71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x709d=['BOOLEAN','exports','variable','customVariable','keyValue','picklist','STRING','ENUM','string'];(function(_0x1ad669,_0x5cbc8d){var _0x225432=function(_0x142ead){while(--_0x142ead){_0x1ad669['push'](_0x1ad669['shift']());}};_0x225432(++_0x5cbc8d);}(_0x709d,0x14e));var _0xd709=function(_0x35861f,_0x2df8be){_0x35861f=_0x35861f-0x0;var _0x48b442=_0x709d[_0x35861f];return _0x48b442;};'use strict';var Sequelize=require('sequelize');module[_0xd709('0x0')]={'type':{'type':Sequelize['ENUM']('string',_0xd709('0x1'),_0xd709('0x2'),_0xd709('0x3'),_0xd709('0x4')),'defaultValue':'string'},'content':{'type':Sequelize[_0xd709('0x5')]},'key':{'type':Sequelize[_0xd709('0x5')]},'keyType':{'type':Sequelize[_0xd709('0x6')](_0xd709('0x7'),_0xd709('0x1'),_0xd709('0x2'))},'keyContent':{'type':Sequelize[_0xd709('0x5')]},'idField':{'type':Sequelize[_0xd709('0x5')]},'nameField':{'type':Sequelize[_0xd709('0x5')]},'customField':{'type':Sequelize[_0xd709('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0xd709('0x5')]}};
\ No newline at end of file
+var _0x4d39=['BOOLEAN','sequelize','exports','string','variable','customVariable','picklist','STRING','ENUM'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x4d39,0xbe));var _0x94d3=function(_0x51b115,_0x14664c){_0x51b115=_0x51b115-0x0;var _0x43167c=_0x4d39[_0x51b115];return _0x43167c;};'use strict';var Sequelize=require(_0x94d3('0x0'));module[_0x94d3('0x1')]={'type':{'type':Sequelize['ENUM'](_0x94d3('0x2'),_0x94d3('0x3'),_0x94d3('0x4'),'keyValue',_0x94d3('0x5')),'defaultValue':'string'},'content':{'type':Sequelize['STRING']},'key':{'type':Sequelize[_0x94d3('0x6')]},'keyType':{'type':Sequelize[_0x94d3('0x7')]('string',_0x94d3('0x3'),'customVariable')},'keyContent':{'type':Sequelize['STRING']},'idField':{'type':Sequelize[_0x94d3('0x6')]},'nameField':{'type':Sequelize[_0x94d3('0x6')]},'customField':{'type':Sequelize[_0x94d3('0x8')],'defaultValue':!![]},'variableName':{'type':Sequelize[_0x94d3('0x6')]}};
\ No newline at end of file
index 185aa44..0a57a9c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39f8=['model','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','length','find','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','squel','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','destroy','stack','name','send','index','map','ZohoField','rawAttributes','fieldName','type','key'];(function(_0x41ff30,_0x10f6f7){var _0x544f11=function(_0x270390){while(--_0x270390){_0x41ff30['push'](_0x41ff30['shift']());}};_0x544f11(++_0x10f6f7);}(_0x39f8,0xb3));var _0x839f=function(_0x147662,_0x5deefb){_0x147662=_0x147662-0x0;var _0x8e91c9=_0x39f8[_0x147662];return _0x8e91c9;};'use strict';var emlformat=require(_0x839f('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x839f('0x1'));var jsonpatch=require(_0x839f('0x2'));var rp=require(_0x839f('0x3'));var moment=require(_0x839f('0x4'));var BPromise=require(_0x839f('0x5'));var Mustache=require(_0x839f('0x6'));var util=require(_0x839f('0x7'));var path=require('path');var sox=require(_0x839f('0x8'));var csv=require('to-csv');var ejs=require(_0x839f('0x9'));var fs=require('fs');var fs_extra=require(_0x839f('0xa'));var _=require('lodash');var squel=require(_0x839f('0xb'));var crypto=require('crypto');var jsforce=require(_0x839f('0xc'));var deskjs=require(_0x839f('0xd'));var toCsv=require(_0x839f('0xe'));var querystring=require(_0x839f('0xf'));var Papa=require(_0x839f('0x10'));var Redis=require(_0x839f('0x11'));var authService=require(_0x839f('0x12'));var qs=require(_0x839f('0x13'));var as=require(_0x839f('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x839f('0x15'));var utils=require(_0x839f('0x16'));var config=require(_0x839f('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x839f('0x18'))['db'];function respondWithStatusCode(_0x5d619d,_0x1f77cd){_0x1f77cd=_0x1f77cd||0xcc;return function(_0x4147e4){if(_0x4147e4){return _0x5d619d[_0x839f('0x19')](_0x1f77cd);}return _0x5d619d[_0x839f('0x1a')](_0x1f77cd)[_0x839f('0x1b')]();};}function respondWithResult(_0x3dff99,_0x27e3f7){_0x27e3f7=_0x27e3f7||0xc8;return function(_0x566883){if(_0x566883){return _0x3dff99[_0x839f('0x1a')](_0x27e3f7)[_0x839f('0x1c')](_0x566883);}};}function respondWithFilteredResult(_0x1d0c25,_0xda540){return function(_0x58cf55){if(_0x58cf55){var _0x4441ed=typeof _0xda540[_0x839f('0x1d')]===_0x839f('0x1e')&&typeof _0xda540[_0x839f('0x1f')]==='undefined';var _0x1b30f1=_0x58cf55[_0x839f('0x20')];var _0x3ec6ce=_0x4441ed?0x0:_0xda540[_0x839f('0x1d')];var _0x2bb40e=_0x4441ed?_0x58cf55[_0x839f('0x20')]:_0xda540[_0x839f('0x1d')]+_0xda540['limit'];var _0x4f1fce;if(_0x2bb40e>=_0x1b30f1){_0x2bb40e=_0x1b30f1;_0x4f1fce=0xc8;}else{_0x4f1fce=0xce;}_0x1d0c25[_0x839f('0x1a')](_0x4f1fce);return _0x1d0c25[_0x839f('0x21')]('Content-Range',_0x3ec6ce+'-'+_0x2bb40e+'/'+_0x1b30f1)[_0x839f('0x1c')](_0x58cf55);}return null;};}function patchUpdates(_0x1fd5d0){return function(_0x4bfc98){try{jsonpatch[_0x839f('0x22')](_0x4bfc98,_0x1fd5d0,!![]);}catch(_0xaef648){return BPromise[_0x839f('0x23')](_0xaef648);}return _0x4bfc98[_0x839f('0x24')]();};}function saveUpdates(_0xb6b1d4,_0x217f58){return function(_0x345e13){if(_0x345e13){return _0x345e13['update'](_0xb6b1d4)[_0x839f('0x25')](function(_0x10aafd){return _0x10aafd;});}return null;};}function removeEntity(_0x2684eb,_0x188336){return function(_0x3197c2){if(_0x3197c2){return _0x3197c2[_0x839f('0x26')]()[_0x839f('0x25')](function(){_0x2684eb[_0x839f('0x1a')](0xcc)[_0x839f('0x1b')]();});}};}function handleEntityNotFound(_0x38d131,_0x4c5a03){return function(_0x3c157a){if(!_0x3c157a){_0x38d131[_0x839f('0x19')](0x194);}return _0x3c157a;};}function handleError(_0xd16c02,_0x12f981){_0x12f981=_0x12f981||0x1f4;return function(_0x250582){logger['error'](_0x250582[_0x839f('0x27')]);if(_0x250582[_0x839f('0x28')]){delete _0x250582[_0x839f('0x28')];}_0xd16c02[_0x839f('0x1a')](_0x12f981)[_0x839f('0x29')](_0x250582);};}exports[_0x839f('0x2a')]=function(_0x2f9fd0,_0x602c5){var _0x41237e={},_0x3893c7={},_0x5977f3={'count':0x0,'rows':[]};var _0x2856ab=_[_0x839f('0x2b')](db[_0x839f('0x2c')][_0x839f('0x2d')],function(_0x5ec155){return{'name':_0x5ec155[_0x839f('0x2e')],'type':_0x5ec155[_0x839f('0x2f')][_0x839f('0x30')]};});_0x3893c7[_0x839f('0x31')]=_[_0x839f('0x2b')](_0x2856ab,_0x839f('0x28'));_0x3893c7['query']=_['keys'](_0x2f9fd0[_0x839f('0x32')]);_0x3893c7[_0x839f('0x33')]=_[_0x839f('0x34')](_0x3893c7[_0x839f('0x31')],_0x3893c7[_0x839f('0x32')]);_0x41237e[_0x839f('0x35')]=_[_0x839f('0x34')](_0x3893c7[_0x839f('0x31')],qs[_0x839f('0x36')](_0x2f9fd0[_0x839f('0x32')][_0x839f('0x36')]));_0x41237e[_0x839f('0x35')]=_0x41237e[_0x839f('0x35')]['length']?_0x41237e['attributes']:_0x3893c7[_0x839f('0x31')];if(!_0x2f9fd0['query'][_0x839f('0x37')]('nolimit')){_0x41237e['limit']=qs[_0x839f('0x1f')](_0x2f9fd0['query'][_0x839f('0x1f')]);_0x41237e[_0x839f('0x1d')]=qs[_0x839f('0x1d')](_0x2f9fd0['query'][_0x839f('0x1d')]);}_0x41237e[_0x839f('0x38')]=qs[_0x839f('0x39')](_0x2f9fd0[_0x839f('0x32')][_0x839f('0x39')]);_0x41237e[_0x839f('0x3a')]=qs[_0x839f('0x33')](_[_0x839f('0x3b')](_0x2f9fd0[_0x839f('0x32')],_0x3893c7[_0x839f('0x33')]),_0x2856ab);if(_0x2f9fd0[_0x839f('0x32')]['filter']){_0x41237e['where']=_[_0x839f('0x3c')](_0x41237e[_0x839f('0x3a')],{'$or':_[_0x839f('0x2b')](_0x2856ab,function(_0x479cc4){if(_0x479cc4[_0x839f('0x2f')]!==_0x839f('0x3d')){var _0x35eec6={};_0x35eec6[_0x479cc4[_0x839f('0x28')]]={'$like':'%'+_0x2f9fd0[_0x839f('0x32')][_0x839f('0x3e')]+'%'};return _0x35eec6;}})});}_0x41237e=_[_0x839f('0x3c')]({},_0x41237e,_0x2f9fd0[_0x839f('0x3f')]);var _0xb27ce3={'where':_0x41237e['where']};return db[_0x839f('0x2c')][_0x839f('0x20')](_0xb27ce3)[_0x839f('0x25')](function(_0x231684){_0x5977f3[_0x839f('0x20')]=_0x231684;if(_0x2f9fd0[_0x839f('0x32')][_0x839f('0x40')]){_0x41237e[_0x839f('0x41')]=[{'all':!![]}];}return db[_0x839f('0x2c')][_0x839f('0x42')](_0x41237e);})['then'](function(_0xe9ad4d){_0x5977f3[_0x839f('0x43')]=_0xe9ad4d;return _0x5977f3;})[_0x839f('0x25')](respondWithFilteredResult(_0x602c5,_0x41237e))[_0x839f('0x44')](handleError(_0x602c5,null));};exports[_0x839f('0x45')]=function(_0x39c299,_0x158916){var _0x43640b={'raw':!![],'where':{'id':_0x39c299[_0x839f('0x46')]['id']}},_0xb50571={};_0xb50571[_0x839f('0x31')]=_[_0x839f('0x47')](db[_0x839f('0x2c')][_0x839f('0x2d')]);_0xb50571[_0x839f('0x32')]=_['keys'](_0x39c299[_0x839f('0x32')]);_0xb50571[_0x839f('0x33')]=_['intersection'](_0xb50571[_0x839f('0x31')],_0xb50571[_0x839f('0x32')]);_0x43640b[_0x839f('0x35')]=_[_0x839f('0x34')](_0xb50571[_0x839f('0x31')],qs[_0x839f('0x36')](_0x39c299['query']['fields']));_0x43640b['attributes']=_0x43640b[_0x839f('0x35')][_0x839f('0x48')]?_0x43640b[_0x839f('0x35')]:_0xb50571[_0x839f('0x31')];if(_0x39c299[_0x839f('0x32')][_0x839f('0x40')]){_0x43640b['include']=[{'all':!![]}];}_0x43640b=_[_0x839f('0x3c')]({},_0x43640b,_0x39c299[_0x839f('0x3f')]);return db[_0x839f('0x2c')][_0x839f('0x49')](_0x43640b)[_0x839f('0x25')](handleEntityNotFound(_0x158916,null))[_0x839f('0x25')](respondWithResult(_0x158916,null))[_0x839f('0x44')](handleError(_0x158916,null));};exports[_0x839f('0x4a')]=function(_0x1f0fe4,_0x379f65){return db[_0x839f('0x2c')][_0x839f('0x4a')](_0x1f0fe4[_0x839f('0x4b')],{})[_0x839f('0x25')](respondWithResult(_0x379f65,0xc9))[_0x839f('0x44')](handleError(_0x379f65,null));};exports['update']=function(_0x3bc38a,_0x34a617){if(_0x3bc38a[_0x839f('0x4b')]['id']){delete _0x3bc38a[_0x839f('0x4b')]['id'];}return db[_0x839f('0x2c')][_0x839f('0x49')]({'where':{'id':_0x3bc38a['params']['id']}})[_0x839f('0x25')](handleEntityNotFound(_0x34a617,null))[_0x839f('0x25')](saveUpdates(_0x3bc38a[_0x839f('0x4b')],null))['then'](respondWithResult(_0x34a617,null))[_0x839f('0x44')](handleError(_0x34a617,null));};exports[_0x839f('0x26')]=function(_0x425bc7,_0x2ff5e2){return db[_0x839f('0x2c')]['find']({'where':{'id':_0x425bc7[_0x839f('0x46')]['id']}})[_0x839f('0x25')](handleEntityNotFound(_0x2ff5e2,null))[_0x839f('0x25')](removeEntity(_0x2ff5e2,null))['catch'](handleError(_0x2ff5e2,null));};
\ No newline at end of file
+var _0x7610=['type','VIRTUAL','options','includeAll','include','rows','show','keys','fields','find','create','catch','body','params','eml-format','zip-dir','moment','bluebird','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','then','destroy','sendStatus','stack','name','send','ZohoField','rawAttributes','fieldName','key','model','map','query','filters','intersection','attributes','length','hasOwnProperty','sort','where','pick','filter','merge'];(function(_0x11df38,_0x34442d){var _0x6b99a4=function(_0x35cf91){while(--_0x35cf91){_0x11df38['push'](_0x11df38['shift']());}};_0x6b99a4(++_0x34442d);}(_0x7610,0x167));var _0x0761=function(_0x499603,_0x4ca954){_0x499603=_0x499603-0x0;var _0x1c0227=_0x7610[_0x499603];return _0x1c0227;};'use strict';var emlformat=require(_0x0761('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0761('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x0761('0x2'));var BPromise=require(_0x0761('0x3'));var Mustache=require('mustache');var util=require('util');var path=require(_0x0761('0x4'));var sox=require(_0x0761('0x5'));var csv=require(_0x0761('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0761('0x7'));var _=require(_0x0761('0x8'));var squel=require('squel');var crypto=require(_0x0761('0x9'));var jsforce=require(_0x0761('0xa'));var deskjs=require(_0x0761('0xb'));var toCsv=require(_0x0761('0x6'));var querystring=require(_0x0761('0xc'));var Papa=require('papaparse');var Redis=require(_0x0761('0xd'));var authService=require(_0x0761('0xe'));var qs=require(_0x0761('0xf'));var as=require(_0x0761('0x10'));var hardwareService=require(_0x0761('0x11'));var logger=require('../../config/logger')(_0x0761('0x12'));var utils=require('../../config/utils');var config=require(_0x0761('0x13'));var licenseUtil=require(_0x0761('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4f52d5,_0x4ac78b){_0x4ac78b=_0x4ac78b||0xcc;return function(_0x5dd133){if(_0x5dd133){return _0x4f52d5['sendStatus'](_0x4ac78b);}return _0x4f52d5[_0x0761('0x15')](_0x4ac78b)[_0x0761('0x16')]();};}function respondWithResult(_0x3d4eb0,_0x42448d){_0x42448d=_0x42448d||0xc8;return function(_0x48a615){if(_0x48a615){return _0x3d4eb0[_0x0761('0x15')](_0x42448d)[_0x0761('0x17')](_0x48a615);}};}function respondWithFilteredResult(_0x2ad3d7,_0x4d7b3f){return function(_0x5b4998){if(_0x5b4998){var _0x56a857=typeof _0x4d7b3f['offset']===_0x0761('0x18')&&typeof _0x4d7b3f[_0x0761('0x19')]===_0x0761('0x18');var _0x514022=_0x5b4998[_0x0761('0x1a')];var _0x4f0d0b=_0x56a857?0x0:_0x4d7b3f[_0x0761('0x1b')];var _0x4a0525=_0x56a857?_0x5b4998[_0x0761('0x1a')]:_0x4d7b3f[_0x0761('0x1b')]+_0x4d7b3f[_0x0761('0x19')];var _0x4965bf;if(_0x4a0525>=_0x514022){_0x4a0525=_0x514022;_0x4965bf=0xc8;}else{_0x4965bf=0xce;}_0x2ad3d7[_0x0761('0x15')](_0x4965bf);return _0x2ad3d7[_0x0761('0x1c')](_0x0761('0x1d'),_0x4f0d0b+'-'+_0x4a0525+'/'+_0x514022)[_0x0761('0x17')](_0x5b4998);}return null;};}function patchUpdates(_0x3f7f11){return function(_0x7df392){try{jsonpatch[_0x0761('0x1e')](_0x7df392,_0x3f7f11,!![]);}catch(_0x5cd9c8){return BPromise['reject'](_0x5cd9c8);}return _0x7df392[_0x0761('0x1f')]();};}function saveUpdates(_0x2cc68c,_0x5230a2){return function(_0x5ce49f){if(_0x5ce49f){return _0x5ce49f['update'](_0x2cc68c)[_0x0761('0x20')](function(_0x4fd4cb){return _0x4fd4cb;});}return null;};}function removeEntity(_0x252926,_0x5953b8){return function(_0x52b458){if(_0x52b458){return _0x52b458[_0x0761('0x21')]()[_0x0761('0x20')](function(){_0x252926['status'](0xcc)[_0x0761('0x16')]();});}};}function handleEntityNotFound(_0x5ccefc,_0x3f8f80){return function(_0x26f687){if(!_0x26f687){_0x5ccefc[_0x0761('0x22')](0x194);}return _0x26f687;};}function handleError(_0x3a9c88,_0x569249){_0x569249=_0x569249||0x1f4;return function(_0x3c1349){logger['error'](_0x3c1349[_0x0761('0x23')]);if(_0x3c1349[_0x0761('0x24')]){delete _0x3c1349[_0x0761('0x24')];}_0x3a9c88[_0x0761('0x15')](_0x569249)[_0x0761('0x25')](_0x3c1349);};}exports['index']=function(_0x589f66,_0x1e2d88){var _0x2e1957={},_0x23274a={},_0x1803fa={'count':0x0,'rows':[]};var _0x426ac3=_['map'](db[_0x0761('0x26')][_0x0761('0x27')],function(_0x5c2853){return{'name':_0x5c2853[_0x0761('0x28')],'type':_0x5c2853['type'][_0x0761('0x29')]};});_0x23274a[_0x0761('0x2a')]=_[_0x0761('0x2b')](_0x426ac3,'name');_0x23274a[_0x0761('0x2c')]=_['keys'](_0x589f66['query']);_0x23274a[_0x0761('0x2d')]=_[_0x0761('0x2e')](_0x23274a[_0x0761('0x2a')],_0x23274a[_0x0761('0x2c')]);_0x2e1957[_0x0761('0x2f')]=_[_0x0761('0x2e')](_0x23274a[_0x0761('0x2a')],qs['fields'](_0x589f66['query']['fields']));_0x2e1957[_0x0761('0x2f')]=_0x2e1957['attributes'][_0x0761('0x30')]?_0x2e1957[_0x0761('0x2f')]:_0x23274a[_0x0761('0x2a')];if(!_0x589f66[_0x0761('0x2c')][_0x0761('0x31')]('nolimit')){_0x2e1957['limit']=qs[_0x0761('0x19')](_0x589f66['query']['limit']);_0x2e1957[_0x0761('0x1b')]=qs[_0x0761('0x1b')](_0x589f66[_0x0761('0x2c')][_0x0761('0x1b')]);}_0x2e1957['order']=qs[_0x0761('0x32')](_0x589f66['query']['sort']);_0x2e1957[_0x0761('0x33')]=qs[_0x0761('0x2d')](_[_0x0761('0x34')](_0x589f66['query'],_0x23274a[_0x0761('0x2d')]),_0x426ac3);if(_0x589f66[_0x0761('0x2c')][_0x0761('0x35')]){_0x2e1957['where']=_[_0x0761('0x36')](_0x2e1957[_0x0761('0x33')],{'$or':_['map'](_0x426ac3,function(_0x2ef99d){if(_0x2ef99d[_0x0761('0x37')]!==_0x0761('0x38')){var _0x4ac694={};_0x4ac694[_0x2ef99d[_0x0761('0x24')]]={'$like':'%'+_0x589f66[_0x0761('0x2c')][_0x0761('0x35')]+'%'};return _0x4ac694;}})});}_0x2e1957=_[_0x0761('0x36')]({},_0x2e1957,_0x589f66[_0x0761('0x39')]);var _0x4b1ecc={'where':_0x2e1957[_0x0761('0x33')]};return db['ZohoField']['count'](_0x4b1ecc)[_0x0761('0x20')](function(_0x1c19a0){_0x1803fa[_0x0761('0x1a')]=_0x1c19a0;if(_0x589f66[_0x0761('0x2c')][_0x0761('0x3a')]){_0x2e1957[_0x0761('0x3b')]=[{'all':!![]}];}return db['ZohoField']['findAll'](_0x2e1957);})[_0x0761('0x20')](function(_0x58f272){_0x1803fa[_0x0761('0x3c')]=_0x58f272;return _0x1803fa;})[_0x0761('0x20')](respondWithFilteredResult(_0x1e2d88,_0x2e1957))['catch'](handleError(_0x1e2d88,null));};exports[_0x0761('0x3d')]=function(_0xf71c74,_0x70377c){var _0x5d8eb5={'raw':!![],'where':{'id':_0xf71c74['params']['id']}},_0x1c1c0d={};_0x1c1c0d[_0x0761('0x2a')]=_[_0x0761('0x3e')](db[_0x0761('0x26')][_0x0761('0x27')]);_0x1c1c0d[_0x0761('0x2c')]=_[_0x0761('0x3e')](_0xf71c74[_0x0761('0x2c')]);_0x1c1c0d[_0x0761('0x2d')]=_[_0x0761('0x2e')](_0x1c1c0d['model'],_0x1c1c0d[_0x0761('0x2c')]);_0x5d8eb5['attributes']=_[_0x0761('0x2e')](_0x1c1c0d['model'],qs[_0x0761('0x3f')](_0xf71c74['query'][_0x0761('0x3f')]));_0x5d8eb5[_0x0761('0x2f')]=_0x5d8eb5[_0x0761('0x2f')][_0x0761('0x30')]?_0x5d8eb5[_0x0761('0x2f')]:_0x1c1c0d[_0x0761('0x2a')];if(_0xf71c74[_0x0761('0x2c')][_0x0761('0x3a')]){_0x5d8eb5[_0x0761('0x3b')]=[{'all':!![]}];}_0x5d8eb5=_[_0x0761('0x36')]({},_0x5d8eb5,_0xf71c74['options']);return db['ZohoField'][_0x0761('0x40')](_0x5d8eb5)[_0x0761('0x20')](handleEntityNotFound(_0x70377c,null))[_0x0761('0x20')](respondWithResult(_0x70377c,null))['catch'](handleError(_0x70377c,null));};exports[_0x0761('0x41')]=function(_0x20bc98,_0x54eaa6){return db[_0x0761('0x26')][_0x0761('0x41')](_0x20bc98['body'],{})[_0x0761('0x20')](respondWithResult(_0x54eaa6,0xc9))[_0x0761('0x42')](handleError(_0x54eaa6,null));};exports['update']=function(_0x40bbd4,_0x39b248){if(_0x40bbd4['body']['id']){delete _0x40bbd4[_0x0761('0x43')]['id'];}return db[_0x0761('0x26')]['find']({'where':{'id':_0x40bbd4[_0x0761('0x44')]['id']}})['then'](handleEntityNotFound(_0x39b248,null))['then'](saveUpdates(_0x40bbd4[_0x0761('0x43')],null))['then'](respondWithResult(_0x39b248,null))[_0x0761('0x42')](handleError(_0x39b248,null));};exports[_0x0761('0x21')]=function(_0x4c2a24,_0x2cad21){return db[_0x0761('0x26')][_0x0761('0x40')]({'where':{'id':_0x4c2a24[_0x0761('0x44')]['id']}})[_0x0761('0x20')](handleEntityNotFound(_0x2cad21,null))['then'](removeEntity(_0x2cad21,null))[_0x0761('0x42')](handleError(_0x2cad21,null));};
\ No newline at end of file
index 1bb4aa2..4f7e98f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a55=['moment','path','../../config/environment','exports','define','ZohoField','int_zoho_fields','zoho_unique_index','idField','lodash'];(function(_0xf5731a,_0x1bf46b){var _0x2b828c=function(_0x3e7b57){while(--_0x3e7b57){_0xf5731a['push'](_0xf5731a['shift']());}};_0x2b828c(++_0x1bf46b);}(_0x6a55,0xdb));var _0x56a5=function(_0x3de7e0,_0x28cbff){_0x3de7e0=_0x3de7e0-0x0;var _0x11d0b3=_0x6a55[_0x3de7e0];return _0x11d0b3;};'use strict';var _=require(_0x56a5('0x0'));var util=require('util');var logger=require('../../config/logger')('api');var moment=require(_0x56a5('0x1'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x56a5('0x2'));var rimraf=require('rimraf');var config=require(_0x56a5('0x3'));var attributes=require('./intZohoField.attributes');module[_0x56a5('0x4')]=function(_0x380b1b,_0x42d164){return _0x380b1b[_0x56a5('0x5')](_0x56a5('0x6'),attributes,{'tableName':_0x56a5('0x7'),'paranoid':![],'indexes':[{'name':_0x56a5('0x8'),'fields':[_0x56a5('0x9'),'FieldId'],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x323f=['moment','bluebird','request-promise','path','rimraf','../../config/environment','./intZohoField.attributes','exports','define','ZohoField','int_zoho_fields','zoho_unique_index','idField','FieldId','util','api'];(function(_0x50cb5c,_0x377a47){var _0x361ad4=function(_0x3c8d51){while(--_0x3c8d51){_0x50cb5c['push'](_0x50cb5c['shift']());}};_0x361ad4(++_0x377a47);}(_0x323f,0x1ee));var _0xf323=function(_0x618414,_0x1a7a60){_0x618414=_0x618414-0x0;var _0x21c19a=_0x323f[_0x618414];return _0x21c19a;};'use strict';var _=require('lodash');var util=require(_0xf323('0x0'));var logger=require('../../config/logger')(_0xf323('0x1'));var moment=require(_0xf323('0x2'));var BPromise=require(_0xf323('0x3'));var rp=require(_0xf323('0x4'));var fs=require('fs');var path=require(_0xf323('0x5'));var rimraf=require(_0xf323('0x6'));var config=require(_0xf323('0x7'));var attributes=require(_0xf323('0x8'));module[_0xf323('0x9')]=function(_0x371707,_0x5d7d60){return _0x371707[_0xf323('0xa')](_0xf323('0xb'),attributes,{'tableName':_0xf323('0xc'),'paranoid':![],'indexes':[{'name':_0xf323('0xd'),'fields':[_0xf323('0xe'),_0xf323('0xf')],'unique':!![]}],'timestamps':!![]});};
\ No newline at end of file
index d9ada93..5faf9b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5159=['ZohoField,\x20%s,\x20%s','message','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','then','info','request\x20sent','debug','ZohoField,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x4a5182,_0x135866){var _0x5c1ae5=function(_0x59eb7c){while(--_0x59eb7c){_0x4a5182['push'](_0x4a5182['shift']());}};_0x5c1ae5(++_0x135866);}(_0x5159,0xb7));var _0x9515=function(_0x4071dc,_0x4e6c1c){_0x4071dc=_0x4071dc-0x0;var _0x22c825=_0x5159[_0x4071dc];return _0x22c825;};'use strict';var _=require(_0x9515('0x0'));var util=require(_0x9515('0x1'));var moment=require(_0x9515('0x2'));var BPromise=require(_0x9515('0x3'));var rs=require(_0x9515('0x4'));var fs=require('fs');var Redis=require(_0x9515('0x5'));var db=require(_0x9515('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x9515('0x7'))(_0x9515('0x8'));var config=require(_0x9515('0x9'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xdbe4b3,_0xf65dbf,_0x283b0a){return new BPromise(function(_0x2e0902,_0x2cab92){return client['request'](_0xdbe4b3,_0x283b0a)[_0x9515('0xa')](function(_0x520133){logger[_0x9515('0xb')]('ZohoField,\x20%s,\x20%s',_0xf65dbf,_0x9515('0xc'));logger[_0x9515('0xd')](_0x9515('0xe'),_0xf65dbf,_0x9515('0xc'),JSON['stringify'](_0x520133));if(_0x520133[_0x9515('0xf')]){if(_0x520133['error'][_0x9515('0x10')]===0x1f4){logger['error'](_0x9515('0x11'),_0xf65dbf,_0x520133[_0x9515('0xf')][_0x9515('0x12')]);return _0x2cab92(_0x520133[_0x9515('0xf')][_0x9515('0x12')]);}logger[_0x9515('0xf')](_0x9515('0x11'),_0xf65dbf,_0x520133['error'][_0x9515('0x12')]);return _0x2e0902(_0x520133[_0x9515('0xf')]['message']);}else{logger['info'](_0x9515('0x11'),_0xf65dbf,_0x9515('0xc'));_0x2e0902(_0x520133['result'][_0x9515('0x12')]);}})[_0x9515('0x13')](function(_0x2ca202){logger['error']('ZohoField,\x20%s,\x20%s',_0xf65dbf,_0x2ca202);_0x2cab92(_0x2ca202);});});}
\ No newline at end of file
+var _0x754c=['debug','ZohoField,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','util','moment','bluebird','randomstring','../../config/utils','rpc','../../config/environment','client','http','request','then','info','ZohoField,\x20%s,\x20%s'];(function(_0x33ee1d,_0x4d008a){var _0x39cfe4=function(_0x2e52a6){while(--_0x2e52a6){_0x33ee1d['push'](_0x33ee1d['shift']());}};_0x39cfe4(++_0x4d008a);}(_0x754c,0x7f));var _0xc754=function(_0x225976,_0x2b39e7){_0x225976=_0x225976-0x0;var _0x327f7d=_0x754c[_0x225976];return _0x327f7d;};'use strict';var _=require('lodash');var util=require(_0xc754('0x0'));var moment=require(_0xc754('0x1'));var BPromise=require(_0xc754('0x2'));var rs=require(_0xc754('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xc754('0x4'));var logger=require('../../config/logger')(_0xc754('0x5'));var config=require(_0xc754('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xc754('0x7')][_0xc754('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x23b6bd,_0x58e6e3,_0x3e6870){return new BPromise(function(_0x501be5,_0x37dcfa){return client[_0xc754('0x9')](_0x23b6bd,_0x3e6870)[_0xc754('0xa')](function(_0xb14b97){logger[_0xc754('0xb')](_0xc754('0xc'),_0x58e6e3,'request\x20sent');logger[_0xc754('0xd')](_0xc754('0xe'),_0x58e6e3,_0xc754('0xf'),JSON[_0xc754('0x10')](_0xb14b97));if(_0xb14b97[_0xc754('0x11')]){if(_0xb14b97[_0xc754('0x11')]['code']===0x1f4){logger['error'](_0xc754('0xc'),_0x58e6e3,_0xb14b97[_0xc754('0x11')][_0xc754('0x12')]);return _0x37dcfa(_0xb14b97[_0xc754('0x11')][_0xc754('0x12')]);}logger[_0xc754('0x11')](_0xc754('0xc'),_0x58e6e3,_0xb14b97[_0xc754('0x11')][_0xc754('0x12')]);return _0x501be5(_0xb14b97['error'][_0xc754('0x12')]);}else{logger['info'](_0xc754('0xc'),_0x58e6e3,_0xc754('0xf'));_0x501be5(_0xb14b97['result'][_0xc754('0x12')]);}})[_0xc754('0x13')](function(_0x527c29){logger['error'](_0xc754('0xc'),_0x58e6e3,_0x527c29);_0x37dcfa(_0x527c29);});});}
\ No newline at end of file
index 686c5d4..f676e21 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(_0x121b31,_0x3be87c){var _0x35d1c8=function(_0x5cad68){while(--_0x5cad68){_0x121b31['push'](_0x121b31['shift']());}};_0x35d1c8(++_0x3be87c);}(_0xe706,0xa3));var _0x6e70=function(_0x54f695,_0x17e578){_0x54f695=_0x54f695-0x0;var _0x5d8f73=_0xe706[_0x54f695];return _0x5d8f73;};'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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x2d49ae,_0x2b5334){var _0x2c53f5=function(_0x95a71d){while(--_0x95a71d){_0x2d49ae['push'](_0x2d49ae['shift']());}};_0x2c53f5(++_0x2b5334);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x1d87fc,_0x1e5321){_0x1d87fc=_0x1d87fc-0x0;var _0x492b56=_0xcb91[_0x1d87fc];return _0x492b56;};'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
index 18400ad..30d7386 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x705f=['BOOLEAN','state','sequelize','exports','STRING','unique_name_and_version','INTEGER'];(function(_0x4a53d,_0x58a95e){var _0x27410e=function(_0x38fc90){while(--_0x38fc90){_0x4a53d['push'](_0x4a53d['shift']());}};_0x27410e(++_0x58a95e);}(_0x705f,0x1c2));var _0xf705=function(_0x40798d,_0x3d4bbb){_0x40798d=_0x40798d-0x0;var _0x6a942=_0x705f[_0x40798d];return _0x6a942;};'use strict';var Sequelize=require(_0xf705('0x0'));module[_0xf705('0x1')]={'name':{'type':Sequelize[_0xf705('0x2')],'allowNull':![],'unique':_0xf705('0x3')},'version':{'type':Sequelize[_0xf705('0x2')],'allowNull':![],'unique':_0xf705('0x3')},'main':{'type':Sequelize[_0xf705('0x2')],'defaultValue':'app.js'},'filename':{'type':Sequelize[_0xf705('0x2')]},'path':{'type':Sequelize[_0xf705('0x2')]},'type':{'type':Sequelize['STRING']},'size':{'type':Sequelize[_0xf705('0x4')]},'active':{'type':Sequelize[_0xf705('0x5')],'defaultValue':![]},'author':{'type':Sequelize[_0xf705('0x2')]},'logo':{'type':Sequelize['STRING']},'state':{'type':Sequelize[_0xf705('0x2')],'unique':_0xf705('0x6')},'description':{'type':Sequelize[_0xf705('0x2')]},'title':{'type':Sequelize[_0xf705('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize['STRING'],'defaultValue':'#'}};
\ No newline at end of file
+var _0x4c78=['exports','STRING','unique_name_and_version','INTEGER','BOOLEAN','state','sequelize'];(function(_0x577e5f,_0x3993e3){var _0x4ffd61=function(_0x64da39){while(--_0x64da39){_0x577e5f['push'](_0x577e5f['shift']());}};_0x4ffd61(++_0x3993e3);}(_0x4c78,0x117));var _0x84c7=function(_0x2edb69,_0x3ac96c){_0x2edb69=_0x2edb69-0x0;var _0x336857=_0x4c78[_0x2edb69];return _0x336857;};'use strict';var Sequelize=require(_0x84c7('0x0'));module[_0x84c7('0x1')]={'name':{'type':Sequelize[_0x84c7('0x2')],'allowNull':![],'unique':'unique_name_and_version'},'version':{'type':Sequelize[_0x84c7('0x2')],'allowNull':![],'unique':_0x84c7('0x3')},'main':{'type':Sequelize['STRING'],'defaultValue':'app.js'},'filename':{'type':Sequelize[_0x84c7('0x2')]},'path':{'type':Sequelize[_0x84c7('0x2')]},'type':{'type':Sequelize[_0x84c7('0x2')]},'size':{'type':Sequelize[_0x84c7('0x4')]},'active':{'type':Sequelize[_0x84c7('0x5')],'defaultValue':![]},'author':{'type':Sequelize['STRING']},'logo':{'type':Sequelize['STRING']},'state':{'type':Sequelize[_0x84c7('0x2')],'unique':_0x84c7('0x6')},'description':{'type':Sequelize['STRING']},'title':{'type':Sequelize[_0x84c7('0x2')]},'remoteUri':{'type':Sequelize['STRING']},'link':{'type':Sequelize[_0x84c7('0x2')],'defaultValue':'#'}};
\ No newline at end of file
index a87c42b..fc45d68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfdbd=['findAll','rows','show','length','find','catch','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','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','end','json','offset','undefined','count','limit','set','reject','save','update','destroy','then','error','stack','name','send','index','map','Integration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','includeAll','include'];(function(_0x1ee7e3,_0x10dca1){var _0x246ce6=function(_0x4629b9){while(--_0x4629b9){_0x1ee7e3['push'](_0x1ee7e3['shift']());}};_0x246ce6(++_0x10dca1);}(_0xfdbd,0xf0));var _0xdfdb=function(_0x292f93,_0x2c6e8e){_0x292f93=_0x292f93-0x0;var _0x5a94b1=_0xfdbd[_0x292f93];return _0x5a94b1;};'use strict';var emlformat=require(_0xdfdb('0x0'));var rimraf=require(_0xdfdb('0x1'));var zipdir=require(_0xdfdb('0x2'));var jsonpatch=require(_0xdfdb('0x3'));var rp=require(_0xdfdb('0x4'));var moment=require(_0xdfdb('0x5'));var BPromise=require(_0xdfdb('0x6'));var Mustache=require(_0xdfdb('0x7'));var util=require(_0xdfdb('0x8'));var path=require('path');var sox=require(_0xdfdb('0x9'));var csv=require('to-csv');var ejs=require(_0xdfdb('0xa'));var fs=require('fs');var fs_extra=require(_0xdfdb('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xdfdb('0xc'));var deskjs=require(_0xdfdb('0xd'));var toCsv=require('to-csv');var querystring=require(_0xdfdb('0xe'));var Papa=require(_0xdfdb('0xf'));var Redis=require(_0xdfdb('0x10'));var authService=require(_0xdfdb('0x11'));var qs=require(_0xdfdb('0x12'));var as=require(_0xdfdb('0x13'));var hardwareService=require(_0xdfdb('0x14'));var logger=require('../../config/logger')(_0xdfdb('0x15'));var utils=require(_0xdfdb('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xdfdb('0x17'));var db=require(_0xdfdb('0x18'))['db'];function respondWithStatusCode(_0x2bee3b,_0x1918c1){_0x1918c1=_0x1918c1||0xcc;return function(_0x2a95f1){if(_0x2a95f1){return _0x2bee3b[_0xdfdb('0x19')](_0x1918c1);}return _0x2bee3b[_0xdfdb('0x1a')](_0x1918c1)[_0xdfdb('0x1b')]();};}function respondWithResult(_0x51162f,_0x48a66a){_0x48a66a=_0x48a66a||0xc8;return function(_0x2c44dc){if(_0x2c44dc){return _0x51162f['status'](_0x48a66a)[_0xdfdb('0x1c')](_0x2c44dc);}};}function respondWithFilteredResult(_0x9f3039,_0x11a56a){return function(_0x40bc8a){if(_0x40bc8a){var _0x3bfd81=typeof _0x11a56a[_0xdfdb('0x1d')]==='undefined'&&typeof _0x11a56a['limit']===_0xdfdb('0x1e');var _0x8b9193=_0x40bc8a[_0xdfdb('0x1f')];var _0x55ab5a=_0x3bfd81?0x0:_0x11a56a[_0xdfdb('0x1d')];var _0xb677b1=_0x3bfd81?_0x40bc8a[_0xdfdb('0x1f')]:_0x11a56a[_0xdfdb('0x1d')]+_0x11a56a[_0xdfdb('0x20')];var _0x2294de;if(_0xb677b1>=_0x8b9193){_0xb677b1=_0x8b9193;_0x2294de=0xc8;}else{_0x2294de=0xce;}_0x9f3039[_0xdfdb('0x1a')](_0x2294de);return _0x9f3039[_0xdfdb('0x21')]('Content-Range',_0x55ab5a+'-'+_0xb677b1+'/'+_0x8b9193)[_0xdfdb('0x1c')](_0x40bc8a);}return null;};}function patchUpdates(_0xb7417c){return function(_0x172c63){try{jsonpatch['apply'](_0x172c63,_0xb7417c,!![]);}catch(_0x377112){return BPromise[_0xdfdb('0x22')](_0x377112);}return _0x172c63[_0xdfdb('0x23')]();};}function saveUpdates(_0x4d55e5,_0x280e53){return function(_0x789bd2){if(_0x789bd2){return _0x789bd2[_0xdfdb('0x24')](_0x4d55e5)['then'](function(_0x2a80c1){return _0x2a80c1;});}return null;};}function removeEntity(_0x526057,_0x2db1c1){return function(_0x145350){if(_0x145350){return _0x145350[_0xdfdb('0x25')]()[_0xdfdb('0x26')](function(){_0x526057['status'](0xcc)[_0xdfdb('0x1b')]();});}};}function handleEntityNotFound(_0x4363d8,_0x956843){return function(_0x400663){if(!_0x400663){_0x4363d8[_0xdfdb('0x19')](0x194);}return _0x400663;};}function handleError(_0x305954,_0x57d24f){_0x57d24f=_0x57d24f||0x1f4;return function(_0xec4d22){logger[_0xdfdb('0x27')](_0xec4d22[_0xdfdb('0x28')]);if(_0xec4d22['name']){delete _0xec4d22[_0xdfdb('0x29')];}_0x305954['status'](_0x57d24f)[_0xdfdb('0x2a')](_0xec4d22);};}exports[_0xdfdb('0x2b')]=function(_0x19c36f,_0x513fa0){var _0x5bc174={},_0x1c8ca8={},_0xc56435={'count':0x0,'rows':[]};var _0xedbb91=_[_0xdfdb('0x2c')](db[_0xdfdb('0x2d')][_0xdfdb('0x2e')],function(_0x5a9fc4){return{'name':_0x5a9fc4[_0xdfdb('0x2f')],'type':_0x5a9fc4[_0xdfdb('0x30')][_0xdfdb('0x31')]};});_0x1c8ca8[_0xdfdb('0x32')]=_[_0xdfdb('0x2c')](_0xedbb91,_0xdfdb('0x29'));_0x1c8ca8[_0xdfdb('0x33')]=_[_0xdfdb('0x34')](_0x19c36f[_0xdfdb('0x33')]);_0x1c8ca8[_0xdfdb('0x35')]=_[_0xdfdb('0x36')](_0x1c8ca8['model'],_0x1c8ca8['query']);_0x5bc174[_0xdfdb('0x37')]=_['intersection'](_0x1c8ca8[_0xdfdb('0x32')],qs[_0xdfdb('0x38')](_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x38')]));_0x5bc174['attributes']=_0x5bc174[_0xdfdb('0x37')]['length']?_0x5bc174[_0xdfdb('0x37')]:_0x1c8ca8[_0xdfdb('0x32')];if(!_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x39')](_0xdfdb('0x3a'))){_0x5bc174[_0xdfdb('0x20')]=qs['limit'](_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x20')]);_0x5bc174['offset']=qs[_0xdfdb('0x1d')](_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x1d')]);}_0x5bc174[_0xdfdb('0x3b')]=qs[_0xdfdb('0x3c')](_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x3c')]);_0x5bc174[_0xdfdb('0x3d')]=qs[_0xdfdb('0x35')](_[_0xdfdb('0x3e')](_0x19c36f[_0xdfdb('0x33')],_0x1c8ca8['filters']),_0xedbb91);if(_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x3f')]){_0x5bc174[_0xdfdb('0x3d')]=_[_0xdfdb('0x40')](_0x5bc174[_0xdfdb('0x3d')],{'$or':_[_0xdfdb('0x2c')](_0xedbb91,function(_0x3ec73a){if(_0x3ec73a[_0xdfdb('0x30')]!=='VIRTUAL'){var _0x55d707={};_0x55d707[_0x3ec73a[_0xdfdb('0x29')]]={'$like':'%'+_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x3f')]+'%'};return _0x55d707;}})});}_0x5bc174=_[_0xdfdb('0x40')]({},_0x5bc174,_0x19c36f[_0xdfdb('0x41')]);var _0x300884={'where':_0x5bc174[_0xdfdb('0x3d')]};return db[_0xdfdb('0x2d')][_0xdfdb('0x1f')](_0x300884)['then'](function(_0x175f57){_0xc56435[_0xdfdb('0x1f')]=_0x175f57;if(_0x19c36f[_0xdfdb('0x33')][_0xdfdb('0x42')]){_0x5bc174[_0xdfdb('0x43')]=[{'all':!![]}];}return db['Integration'][_0xdfdb('0x44')](_0x5bc174);})[_0xdfdb('0x26')](function(_0x3e9f88){_0xc56435[_0xdfdb('0x45')]=_0x3e9f88;return _0xc56435;})[_0xdfdb('0x26')](respondWithFilteredResult(_0x513fa0,_0x5bc174))['catch'](handleError(_0x513fa0,null));};exports[_0xdfdb('0x46')]=function(_0xd2f8bd,_0xf0482a){var _0x5b4381={'raw':![],'where':{'id':_0xd2f8bd['params']['id']}},_0x2b5139={};_0x2b5139[_0xdfdb('0x32')]=_['keys'](db[_0xdfdb('0x2d')][_0xdfdb('0x2e')]);_0x2b5139['query']=_[_0xdfdb('0x34')](_0xd2f8bd['query']);_0x2b5139[_0xdfdb('0x35')]=_[_0xdfdb('0x36')](_0x2b5139[_0xdfdb('0x32')],_0x2b5139[_0xdfdb('0x33')]);_0x5b4381[_0xdfdb('0x37')]=_['intersection'](_0x2b5139['model'],qs[_0xdfdb('0x38')](_0xd2f8bd[_0xdfdb('0x33')]['fields']));_0x5b4381[_0xdfdb('0x37')]=_0x5b4381['attributes'][_0xdfdb('0x47')]?_0x5b4381[_0xdfdb('0x37')]:_0x2b5139[_0xdfdb('0x32')];if(_0xd2f8bd[_0xdfdb('0x33')][_0xdfdb('0x42')]){_0x5b4381[_0xdfdb('0x43')]=[{'all':!![]}];}_0x5b4381=_[_0xdfdb('0x40')]({},_0x5b4381,_0xd2f8bd[_0xdfdb('0x41')]);return db[_0xdfdb('0x2d')][_0xdfdb('0x48')](_0x5b4381)[_0xdfdb('0x26')](handleEntityNotFound(_0xf0482a,null))[_0xdfdb('0x26')](respondWithResult(_0xf0482a,null))[_0xdfdb('0x49')](handleError(_0xf0482a,null));};exports[_0xdfdb('0x4a')]=function(_0x1c08fb,_0x273477){return db['Integration']['create'](_0x1c08fb[_0xdfdb('0x4b')],{})[_0xdfdb('0x26')](respondWithResult(_0x273477,0xc9))[_0xdfdb('0x49')](handleError(_0x273477,null));};exports['update']=function(_0x36149e,_0x4d4c90){if(_0x36149e[_0xdfdb('0x4b')]['id']){delete _0x36149e[_0xdfdb('0x4b')]['id'];}return db['Integration'][_0xdfdb('0x48')]({'where':{'id':_0x36149e[_0xdfdb('0x4c')]['id']}})['then'](handleEntityNotFound(_0x4d4c90,null))[_0xdfdb('0x26')](saveUpdates(_0x36149e[_0xdfdb('0x4b')],null))[_0xdfdb('0x26')](respondWithResult(_0x4d4c90,null))[_0xdfdb('0x49')](handleError(_0x4d4c90,null));};exports[_0xdfdb('0x25')]=function(_0x10b490,_0x17dfdb){return db[_0xdfdb('0x2d')][_0xdfdb('0x48')]({'where':{'id':_0x10b490['params']['id']}})[_0xdfdb('0x26')](handleEntityNotFound(_0x17dfdb,null))['then'](removeEntity(_0x17dfdb,null))[_0xdfdb('0x49')](handleError(_0x17dfdb,null));};
\ No newline at end of file
+var _0x781d=['../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','Content-Range','json','apply','reject','update','destroy','then','error','name','send','index','map','Integration','fieldName','type','key','query','keys','intersection','model','attributes','fields','length','nolimit','order','where','filters','filter','merge','VIRTUAL','includeAll','catch','show','params','rawAttributes','options','body','find','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch'];(function(_0x165d96,_0x48b5a5){var _0x21953b=function(_0x13643a){while(--_0x13643a){_0x165d96['push'](_0x165d96['shift']());}};_0x21953b(++_0x48b5a5);}(_0x781d,0x14a));var _0xd781=function(_0x160c73,_0x2ee678){_0x160c73=_0x160c73-0x0;var _0xd9302=_0x781d[_0x160c73];return _0xd9302;};'use strict';var emlformat=require(_0xd781('0x0'));var rimraf=require(_0xd781('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xd781('0x2'));var moment=require(_0xd781('0x3'));var BPromise=require(_0xd781('0x4'));var Mustache=require(_0xd781('0x5'));var util=require(_0xd781('0x6'));var path=require(_0xd781('0x7'));var sox=require(_0xd781('0x8'));var csv=require(_0xd781('0x9'));var ejs=require(_0xd781('0xa'));var fs=require('fs');var fs_extra=require(_0xd781('0xb'));var _=require('lodash');var squel=require(_0xd781('0xc'));var crypto=require(_0xd781('0xd'));var jsforce=require(_0xd781('0xe'));var deskjs=require(_0xd781('0xf'));var toCsv=require('to-csv');var querystring=require(_0xd781('0x10'));var Papa=require('papaparse');var Redis=require(_0xd781('0x11'));var authService=require(_0xd781('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xd781('0x13'));var hardwareService=require(_0xd781('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0xd781('0x15'));var config=require(_0xd781('0x16'));var licenseUtil=require(_0xd781('0x17'));var db=require(_0xd781('0x18'))['db'];function respondWithStatusCode(_0xbea78b,_0x1f2f1e){_0x1f2f1e=_0x1f2f1e||0xcc;return function(_0xc7758f){if(_0xc7758f){return _0xbea78b[_0xd781('0x19')](_0x1f2f1e);}return _0xbea78b[_0xd781('0x1a')](_0x1f2f1e)[_0xd781('0x1b')]();};}function respondWithResult(_0xd454e7,_0x587953){_0x587953=_0x587953||0xc8;return function(_0x477bdc){if(_0x477bdc){return _0xd454e7[_0xd781('0x1a')](_0x587953)['json'](_0x477bdc);}};}function respondWithFilteredResult(_0x3a1f48,_0x48bffc){return function(_0x294e5a){if(_0x294e5a){var _0x22d787=typeof _0x48bffc[_0xd781('0x1c')]===_0xd781('0x1d')&&typeof _0x48bffc[_0xd781('0x1e')]===_0xd781('0x1d');var _0x501b0d=_0x294e5a['count'];var _0x1407fc=_0x22d787?0x0:_0x48bffc[_0xd781('0x1c')];var _0x395d9c=_0x22d787?_0x294e5a[_0xd781('0x1f')]:_0x48bffc[_0xd781('0x1c')]+_0x48bffc[_0xd781('0x1e')];var _0x260aa8;if(_0x395d9c>=_0x501b0d){_0x395d9c=_0x501b0d;_0x260aa8=0xc8;}else{_0x260aa8=0xce;}_0x3a1f48[_0xd781('0x1a')](_0x260aa8);return _0x3a1f48['set'](_0xd781('0x20'),_0x1407fc+'-'+_0x395d9c+'/'+_0x501b0d)[_0xd781('0x21')](_0x294e5a);}return null;};}function patchUpdates(_0x1036d3){return function(_0x103758){try{jsonpatch[_0xd781('0x22')](_0x103758,_0x1036d3,!![]);}catch(_0x274665){return BPromise[_0xd781('0x23')](_0x274665);}return _0x103758['save']();};}function saveUpdates(_0xe0c65f,_0x4e2c56){return function(_0x567fdf){if(_0x567fdf){return _0x567fdf[_0xd781('0x24')](_0xe0c65f)['then'](function(_0x175ba6){return _0x175ba6;});}return null;};}function removeEntity(_0x101480,_0x395087){return function(_0x31bf57){if(_0x31bf57){return _0x31bf57[_0xd781('0x25')]()[_0xd781('0x26')](function(){_0x101480[_0xd781('0x1a')](0xcc)[_0xd781('0x1b')]();});}};}function handleEntityNotFound(_0x10940b,_0x5662db){return function(_0x529ca1){if(!_0x529ca1){_0x10940b[_0xd781('0x19')](0x194);}return _0x529ca1;};}function handleError(_0x849587,_0xdad0b1){_0xdad0b1=_0xdad0b1||0x1f4;return function(_0x57b41e){logger[_0xd781('0x27')](_0x57b41e['stack']);if(_0x57b41e['name']){delete _0x57b41e[_0xd781('0x28')];}_0x849587['status'](_0xdad0b1)[_0xd781('0x29')](_0x57b41e);};}exports[_0xd781('0x2a')]=function(_0x5c3848,_0x5b6b9d){var _0x43cc74={},_0x5b0464={},_0x296a0b={'count':0x0,'rows':[]};var _0x4a3bd3=_[_0xd781('0x2b')](db[_0xd781('0x2c')]['rawAttributes'],function(_0x54521e){return{'name':_0x54521e[_0xd781('0x2d')],'type':_0x54521e[_0xd781('0x2e')][_0xd781('0x2f')]};});_0x5b0464['model']=_['map'](_0x4a3bd3,_0xd781('0x28'));_0x5b0464[_0xd781('0x30')]=_[_0xd781('0x31')](_0x5c3848['query']);_0x5b0464['filters']=_[_0xd781('0x32')](_0x5b0464[_0xd781('0x33')],_0x5b0464['query']);_0x43cc74[_0xd781('0x34')]=_[_0xd781('0x32')](_0x5b0464['model'],qs[_0xd781('0x35')](_0x5c3848[_0xd781('0x30')][_0xd781('0x35')]));_0x43cc74[_0xd781('0x34')]=_0x43cc74['attributes'][_0xd781('0x36')]?_0x43cc74[_0xd781('0x34')]:_0x5b0464[_0xd781('0x33')];if(!_0x5c3848[_0xd781('0x30')]['hasOwnProperty'](_0xd781('0x37'))){_0x43cc74[_0xd781('0x1e')]=qs['limit'](_0x5c3848[_0xd781('0x30')]['limit']);_0x43cc74[_0xd781('0x1c')]=qs[_0xd781('0x1c')](_0x5c3848['query'][_0xd781('0x1c')]);}_0x43cc74[_0xd781('0x38')]=qs['sort'](_0x5c3848[_0xd781('0x30')]['sort']);_0x43cc74[_0xd781('0x39')]=qs[_0xd781('0x3a')](_['pick'](_0x5c3848[_0xd781('0x30')],_0x5b0464[_0xd781('0x3a')]),_0x4a3bd3);if(_0x5c3848['query'][_0xd781('0x3b')]){_0x43cc74[_0xd781('0x39')]=_[_0xd781('0x3c')](_0x43cc74['where'],{'$or':_[_0xd781('0x2b')](_0x4a3bd3,function(_0x22b94e){if(_0x22b94e[_0xd781('0x2e')]!==_0xd781('0x3d')){var _0x2e8218={};_0x2e8218[_0x22b94e[_0xd781('0x28')]]={'$like':'%'+_0x5c3848[_0xd781('0x30')][_0xd781('0x3b')]+'%'};return _0x2e8218;}})});}_0x43cc74=_[_0xd781('0x3c')]({},_0x43cc74,_0x5c3848['options']);var _0x2a60d6={'where':_0x43cc74['where']};return db[_0xd781('0x2c')][_0xd781('0x1f')](_0x2a60d6)['then'](function(_0x1a5833){_0x296a0b[_0xd781('0x1f')]=_0x1a5833;if(_0x5c3848[_0xd781('0x30')][_0xd781('0x3e')]){_0x43cc74['include']=[{'all':!![]}];}return db[_0xd781('0x2c')]['findAll'](_0x43cc74);})[_0xd781('0x26')](function(_0xcdaacf){_0x296a0b['rows']=_0xcdaacf;return _0x296a0b;})['then'](respondWithFilteredResult(_0x5b6b9d,_0x43cc74))[_0xd781('0x3f')](handleError(_0x5b6b9d,null));};exports[_0xd781('0x40')]=function(_0x15b49d,_0x23bbab){var _0x53aba6={'raw':![],'where':{'id':_0x15b49d[_0xd781('0x41')]['id']}},_0x46e7f6={};_0x46e7f6['model']=_['keys'](db[_0xd781('0x2c')][_0xd781('0x42')]);_0x46e7f6[_0xd781('0x30')]=_['keys'](_0x15b49d['query']);_0x46e7f6[_0xd781('0x3a')]=_[_0xd781('0x32')](_0x46e7f6[_0xd781('0x33')],_0x46e7f6[_0xd781('0x30')]);_0x53aba6[_0xd781('0x34')]=_[_0xd781('0x32')](_0x46e7f6['model'],qs['fields'](_0x15b49d[_0xd781('0x30')][_0xd781('0x35')]));_0x53aba6[_0xd781('0x34')]=_0x53aba6[_0xd781('0x34')][_0xd781('0x36')]?_0x53aba6['attributes']:_0x46e7f6[_0xd781('0x33')];if(_0x15b49d[_0xd781('0x30')][_0xd781('0x3e')]){_0x53aba6['include']=[{'all':!![]}];}_0x53aba6=_[_0xd781('0x3c')]({},_0x53aba6,_0x15b49d[_0xd781('0x43')]);return db[_0xd781('0x2c')]['find'](_0x53aba6)[_0xd781('0x26')](handleEntityNotFound(_0x23bbab,null))[_0xd781('0x26')](respondWithResult(_0x23bbab,null))['catch'](handleError(_0x23bbab,null));};exports['create']=function(_0x13a907,_0x16d16e){return db[_0xd781('0x2c')]['create'](_0x13a907[_0xd781('0x44')],{})[_0xd781('0x26')](respondWithResult(_0x16d16e,0xc9))[_0xd781('0x3f')](handleError(_0x16d16e,null));};exports[_0xd781('0x24')]=function(_0x336d30,_0x3828ad){if(_0x336d30[_0xd781('0x44')]['id']){delete _0x336d30['body']['id'];}return db[_0xd781('0x2c')][_0xd781('0x45')]({'where':{'id':_0x336d30[_0xd781('0x41')]['id']}})['then'](handleEntityNotFound(_0x3828ad,null))[_0xd781('0x26')](saveUpdates(_0x336d30[_0xd781('0x44')],null))['then'](respondWithResult(_0x3828ad,null))[_0xd781('0x3f')](handleError(_0x3828ad,null));};exports[_0xd781('0x25')]=function(_0x41caac,_0x207546){return db[_0xd781('0x2c')]['find']({'where':{'id':_0x41caac[_0xd781('0x41')]['id']}})['then'](handleEntityNotFound(_0x207546,null))[_0xd781('0x26')](removeEntity(_0x207546,null))['catch'](handleError(_0x207546,null));};
\ No newline at end of file
index bbe2b0c..5c16098 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d24=['util','../../config/logger','moment','rimraf','../../config/environment','exports','integrations','lodash'];(function(_0x532d07,_0x1eea20){var _0x152be1=function(_0x366dc9){while(--_0x366dc9){_0x532d07['push'](_0x532d07['shift']());}};_0x152be1(++_0x1eea20);}(_0x8d24,0x15f));var _0x48d2=function(_0x1d9bc1,_0x52f0a6){_0x1d9bc1=_0x1d9bc1-0x0;var _0x540128=_0x8d24[_0x1d9bc1];return _0x540128;};'use strict';var _=require(_0x48d2('0x0'));var util=require(_0x48d2('0x1'));var logger=require(_0x48d2('0x2'))('api');var moment=require(_0x48d2('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x48d2('0x4'));var config=require(_0x48d2('0x5'));var attributes=require('./integration.attributes');module[_0x48d2('0x6')]=function(_0x3bf2ca,_0x56f4d2){return _0x3bf2ca['define']('Integration',attributes,{'tableName':_0x48d2('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdf09=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','integrations','util'];(function(_0x3680dd,_0x1b53ec){var _0x3c2196=function(_0x3ac000){while(--_0x3ac000){_0x3680dd['push'](_0x3680dd['shift']());}};_0x3c2196(++_0x1b53ec);}(_0xdf09,0x154));var _0x9df0=function(_0x1923b6,_0x3e2204){_0x1923b6=_0x1923b6-0x0;var _0x34afff=_0xdf09[_0x1923b6];return _0x34afff;};'use strict';var _=require('lodash');var util=require(_0x9df0('0x0'));var logger=require(_0x9df0('0x1'))(_0x9df0('0x2'));var moment=require(_0x9df0('0x3'));var BPromise=require(_0x9df0('0x4'));var rp=require(_0x9df0('0x5'));var fs=require('fs');var path=require(_0x9df0('0x6'));var rimraf=require('rimraf');var config=require(_0x9df0('0x7'));var attributes=require('./integration.attributes');module[_0x9df0('0x8')]=function(_0xd87ff2,_0x1b8b33){return _0xd87ff2[_0x9df0('0x9')]('Integration',attributes,{'tableName':_0x9df0('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index bd27f16..08a6133 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda2d=['bluebird','randomstring','ioredis','rpc','../../config/environment','jayson/promise','client','http','then','Integration,\x20%s,\x20%s','request\x20sent','debug','Integration,\x20%s,\x20%s,\x20%s','stringify','error','message','info','result','util','moment'];(function(_0x1e8690,_0x5c6b4c){var _0x414bea=function(_0x6284dd){while(--_0x6284dd){_0x1e8690['push'](_0x1e8690['shift']());}};_0x414bea(++_0x5c6b4c);}(_0xda2d,0x102));var _0xdda2=function(_0x58f4b3,_0x3d5aa7){_0x58f4b3=_0x58f4b3-0x0;var _0x20ec5f=_0xda2d[_0x58f4b3];return _0x20ec5f;};'use strict';var _=require('lodash');var util=require(_0xdda2('0x0'));var moment=require(_0xdda2('0x1'));var BPromise=require(_0xdda2('0x2'));var rs=require(_0xdda2('0x3'));var fs=require('fs');var Redis=require(_0xdda2('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xdda2('0x5'));var config=require(_0xdda2('0x6'));var jayson=require(_0xdda2('0x7'));var client=jayson[_0xdda2('0x8')][_0xdda2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0xf38e58,_0x2f55dc,_0x436676){return new BPromise(function(_0x2e2523,_0x341c7b){return client['request'](_0xf38e58,_0x436676)[_0xdda2('0xa')](function(_0x22c6e5){logger['info'](_0xdda2('0xb'),_0x2f55dc,_0xdda2('0xc'));logger[_0xdda2('0xd')](_0xdda2('0xe'),_0x2f55dc,_0xdda2('0xc'),JSON[_0xdda2('0xf')](_0x22c6e5));if(_0x22c6e5[_0xdda2('0x10')]){if(_0x22c6e5[_0xdda2('0x10')]['code']===0x1f4){logger['error']('Integration,\x20%s,\x20%s',_0x2f55dc,_0x22c6e5[_0xdda2('0x10')][_0xdda2('0x11')]);return _0x341c7b(_0x22c6e5[_0xdda2('0x10')][_0xdda2('0x11')]);}logger[_0xdda2('0x10')](_0xdda2('0xb'),_0x2f55dc,_0x22c6e5[_0xdda2('0x10')]['message']);return _0x2e2523(_0x22c6e5[_0xdda2('0x10')]['message']);}else{logger[_0xdda2('0x12')](_0xdda2('0xb'),_0x2f55dc,_0xdda2('0xc'));_0x2e2523(_0x22c6e5[_0xdda2('0x13')][_0xdda2('0x11')]);}})['catch'](function(_0x55d674){logger[_0xdda2('0x10')]('Integration,\x20%s,\x20%s',_0x2f55dc,_0x55d674);_0x341c7b(_0x55d674);});});}
\ No newline at end of file
+var _0x1967=['then','info','Integration,\x20%s,\x20%s','Integration,\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','client','http','request'];(function(_0x2f1762,_0xab43df){var _0x8ab21=function(_0xf6c1f5){while(--_0xf6c1f5){_0x2f1762['push'](_0x2f1762['shift']());}};_0x8ab21(++_0xab43df);}(_0x1967,0x173));var _0x7196=function(_0x1305fa,_0x3617d7){_0x1305fa=_0x1305fa-0x0;var _0x4ccbd5=_0x1967[_0x1305fa];return _0x4ccbd5;};'use strict';var _=require('lodash');var util=require(_0x7196('0x0'));var moment=require(_0x7196('0x1'));var BPromise=require(_0x7196('0x2'));var rs=require(_0x7196('0x3'));var fs=require('fs');var Redis=require(_0x7196('0x4'));var db=require(_0x7196('0x5'))['db'];var utils=require(_0x7196('0x6'));var logger=require(_0x7196('0x7'))(_0x7196('0x8'));var config=require(_0x7196('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x7196('0xa')][_0x7196('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x194746,_0x40e0af,_0x266a6e){return new BPromise(function(_0xad78a,_0x510c72){return client[_0x7196('0xc')](_0x194746,_0x266a6e)[_0x7196('0xd')](function(_0x3f846e){logger[_0x7196('0xe')](_0x7196('0xf'),_0x40e0af,'request\x20sent');logger['debug'](_0x7196('0x10'),_0x40e0af,_0x7196('0x11'),JSON[_0x7196('0x12')](_0x3f846e));if(_0x3f846e[_0x7196('0x13')]){if(_0x3f846e[_0x7196('0x13')][_0x7196('0x14')]===0x1f4){logger[_0x7196('0x13')](_0x7196('0xf'),_0x40e0af,_0x3f846e[_0x7196('0x13')][_0x7196('0x15')]);return _0x510c72(_0x3f846e[_0x7196('0x13')]['message']);}logger[_0x7196('0x13')](_0x7196('0xf'),_0x40e0af,_0x3f846e[_0x7196('0x13')][_0x7196('0x15')]);return _0xad78a(_0x3f846e['error'][_0x7196('0x15')]);}else{logger['info'](_0x7196('0xf'),_0x40e0af,_0x7196('0x11'));_0xad78a(_0x3f846e[_0x7196('0x16')][_0x7196('0x15')]);}})[_0x7196('0x17')](function(_0x2e3e0e){logger[_0x7196('0x13')](_0x7196('0xf'),_0x40e0af,_0x2e3e0e);_0x510c72(_0x2e3e0e);});});}
\ No newline at end of file
index 979d828..31e8b20 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x955f=['post','create','update','delete','destroy','multer','util','path','connect-timeout','express','fs-extra','../../config/environment','get','isAuthenticated','index','/describe','/:id','show'];(function(_0x4bf1e0,_0x57e978){var _0x439537=function(_0xda205b){while(--_0xda205b){_0x4bf1e0['push'](_0x4bf1e0['shift']());}};_0x439537(++_0x57e978);}(_0x955f,0x1eb));var _0xf955=function(_0x1442fb,_0x2d29fa){_0x1442fb=_0x1442fb-0x0;var _0x5073c2=_0x955f[_0x1442fb];return _0x5073c2;};'use strict';var multer=require(_0xf955('0x0'));var util=require(_0xf955('0x1'));var path=require(_0xf955('0x2'));var timeout=require(_0xf955('0x3'));var express=require(_0xf955('0x4'));var router=express['Router']();var fs_extra=require(_0xf955('0x5'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xf955('0x6'));var controller=require('./integrationReport.controller');router[_0xf955('0x7')]('/',auth[_0xf955('0x8')](),controller[_0xf955('0x9')]);router['get'](_0xf955('0xa'),auth[_0xf955('0x8')](),controller['describe']);router[_0xf955('0x7')](_0xf955('0xb'),auth[_0xf955('0x8')](),controller[_0xf955('0xc')]);router[_0xf955('0xd')]('/',auth[_0xf955('0x8')](),controller[_0xf955('0xe')]);router['put'](_0xf955('0xb'),auth['isAuthenticated'](),controller[_0xf955('0xf')]);router[_0xf955('0x10')](_0xf955('0xb'),auth['isAuthenticated'](),controller[_0xf955('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xd943=['show','post','create','/:id','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','describe'];(function(_0x381379,_0x3f3b86){var _0x3e1063=function(_0x4c282d){while(--_0x4c282d){_0x381379['push'](_0x381379['shift']());}};_0x3e1063(++_0x3f3b86);}(_0xd943,0x15d));var _0x3d94=function(_0x1dfeac,_0x1f40f6){_0x1dfeac=_0x1dfeac-0x0;var _0x268f1a=_0xd943[_0x1dfeac];return _0x268f1a;};'use strict';var multer=require(_0x3d94('0x0'));var util=require(_0x3d94('0x1'));var path=require(_0x3d94('0x2'));var timeout=require(_0x3d94('0x3'));var express=require('express');var router=express[_0x3d94('0x4')]();var fs_extra=require(_0x3d94('0x5'));var auth=require(_0x3d94('0x6'));var interaction=require(_0x3d94('0x7'));var config=require(_0x3d94('0x8'));var controller=require('./integrationReport.controller');router['get']('/',auth[_0x3d94('0x9')](),controller['index']);router['get']('/describe',auth[_0x3d94('0x9')](),controller[_0x3d94('0xa')]);router['get']('/:id',auth[_0x3d94('0x9')](),controller[_0x3d94('0xb')]);router[_0x3d94('0xc')]('/',auth['isAuthenticated'](),controller[_0x3d94('0xd')]);router['put'](_0x3d94('0xe'),auth[_0x3d94('0x9')](),controller['update']);router[_0x3d94('0xf')](_0x3d94('0xe'),auth[_0x3d94('0x9')](),controller[_0x3d94('0x10')]);module[_0x3d94('0x11')]=router;
\ No newline at end of file
index bdfc600..8f64edf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd168=['STRING','DATE','INTEGER','BOOLEAN','TEXT','ENUM','SENDING','RECEIVED','sequelize','exports'];(function(_0x1bb6c3,_0x778fa5){var _0x50801b=function(_0x5ac0d1){while(--_0x5ac0d1){_0x1bb6c3['push'](_0x1bb6c3['shift']());}};_0x50801b(++_0x778fa5);}(_0xd168,0x1e8));var _0x8d16=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0xd168[_0x42cae2];return _0x5f256f;};'use strict';var Sequelize=require(_0x8d16('0x0'));module[_0x8d16('0x1')]={'integration':{'type':Sequelize[_0x8d16('0x2')]},'eventChannel':{'type':Sequelize[_0x8d16('0x2')]},'exitStatus':{'type':Sequelize[_0x8d16('0x2')]},'ticketId':{'type':Sequelize[_0x8d16('0x2')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x8d16('0x2')]},'calleridnum':{'type':Sequelize[_0x8d16('0x2')]},'calleridname':{'type':Sequelize[_0x8d16('0x2')]},'queue':{'type':Sequelize[_0x8d16('0x2')]},'interface':{'type':Sequelize[_0x8d16('0x2')]},'membername':{'type':Sequelize[_0x8d16('0x2')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0x8d16('0x3')]},'holdtime':{'type':Sequelize[_0x8d16('0x4')]},'agentcomplete':{'type':Sequelize[_0x8d16('0x5')],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize['DATE']},'talktime':{'type':Sequelize['INTEGER']},'agentacw':{'type':Sequelize[_0x8d16('0x5')],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize[_0x8d16('0x2')]},'agentringnoanswer':{'type':Sequelize[_0x8d16('0x5')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x8d16('0x3')]},'agentdump':{'type':Sequelize[_0x8d16('0x5')],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x8d16('0x3')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize['INTEGER']},'channelstatedesc':{'type':Sequelize[_0x8d16('0x2')]},'connectedlinenum':{'type':Sequelize[_0x8d16('0x2')]},'connectedlinename':{'type':Sequelize[_0x8d16('0x2')]},'language':{'type':Sequelize[_0x8d16('0x2')]},'accountcode':{'type':Sequelize[_0x8d16('0x2')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x8d16('0x2')]},'priority':{'type':Sequelize[_0x8d16('0x2')]},'destchannel':{'type':Sequelize[_0x8d16('0x2')]},'destchannelstate':{'type':Sequelize[_0x8d16('0x4')]},'destchannelstatedesc':{'type':Sequelize[_0x8d16('0x2')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0x8d16('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0x8d16('0x2')]},'destconnectedlinename':{'type':Sequelize[_0x8d16('0x2')]},'destlanguage':{'type':Sequelize[_0x8d16('0x2')]},'destaccountcode':{'type':Sequelize[_0x8d16('0x2')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x8d16('0x2')]},'destpriority':{'type':Sequelize[_0x8d16('0x2')]},'destuniqueid':{'type':Sequelize[_0x8d16('0x2')]},'messageId':{'type':Sequelize[_0x8d16('0x2')]},'inReplyTo':{'type':Sequelize[_0x8d16('0x2')]},'subject':{'type':Sequelize['STRING']},'from':{'type':Sequelize[_0x8d16('0x2')]},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0x8d16('0x2')]},'attachment':{'type':Sequelize[_0x8d16('0x6')]},'html':{'type':Sequelize[_0x8d16('0x6')]},'text':{'type':Sequelize['TEXT']},'status':{'type':Sequelize[_0x8d16('0x7')]('SENT',_0x8d16('0x8'),_0x8d16('0x9'),'FAILED')},'url':{'type':Sequelize[_0x8d16('0x2')]},'app':{'type':Sequelize[_0x8d16('0x2')]},'appdata':{'type':Sequelize['STRING']},'projectId':{'type':Sequelize[_0x8d16('0x4')]}};
\ No newline at end of file
+var _0xce67=['STRING','INTEGER','DATE','BOOLEAN','TEXT','ENUM','SENDING','RECEIVED','FAILED','exports'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xce67,0x1df));var _0x7ce6=function(_0x152118,_0x4291fb){_0x152118=_0x152118-0x0;var _0x2cb379=_0xce67[_0x152118];return _0x2cb379;};'use strict';var Sequelize=require('sequelize');module[_0x7ce6('0x0')]={'integration':{'type':Sequelize[_0x7ce6('0x1')]},'eventChannel':{'type':Sequelize[_0x7ce6('0x1')]},'exitStatus':{'type':Sequelize[_0x7ce6('0x1')]},'ticketId':{'type':Sequelize[_0x7ce6('0x1')]},'integrationId':{'type':Sequelize['INTEGER']},'contacts':{'type':Sequelize[_0x7ce6('0x1')]},'uniqueid':{'type':Sequelize[_0x7ce6('0x1')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x7ce6('0x1')]},'interface':{'type':Sequelize[_0x7ce6('0x1')]},'membername':{'type':Sequelize[_0x7ce6('0x1')]},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize['DATE']},'holdtime':{'type':Sequelize[_0x7ce6('0x2')]},'agentcomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentcompleteAt':{'type':Sequelize[_0x7ce6('0x3')]},'talktime':{'type':Sequelize[_0x7ce6('0x2')]},'agentacw':{'type':Sequelize[_0x7ce6('0x4')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x7ce6('0x2')]},'reason':{'type':Sequelize['STRING']},'agentringnoanswer':{'type':Sequelize[_0x7ce6('0x4')],'defaultValue':![]},'agentringnoanswerAt':{'type':Sequelize[_0x7ce6('0x3')]},'agentdump':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdumpAt':{'type':Sequelize[_0x7ce6('0x3')]},'lastevent':{'type':Sequelize[_0x7ce6('0x1')]},'channel':{'type':Sequelize[_0x7ce6('0x1')]},'channelstate':{'type':Sequelize[_0x7ce6('0x2')]},'channelstatedesc':{'type':Sequelize[_0x7ce6('0x1')]},'connectedlinenum':{'type':Sequelize[_0x7ce6('0x1')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x7ce6('0x1')]},'accountcode':{'type':Sequelize[_0x7ce6('0x1')]},'context':{'type':Sequelize[_0x7ce6('0x1')]},'exten':{'type':Sequelize[_0x7ce6('0x1')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize['INTEGER']},'destchannelstatedesc':{'type':Sequelize[_0x7ce6('0x1')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x7ce6('0x1')]},'destconnectedlinename':{'type':Sequelize[_0x7ce6('0x1')]},'destlanguage':{'type':Sequelize[_0x7ce6('0x1')]},'destaccountcode':{'type':Sequelize[_0x7ce6('0x1')]},'destcontext':{'type':Sequelize[_0x7ce6('0x1')]},'destexten':{'type':Sequelize[_0x7ce6('0x1')]},'destpriority':{'type':Sequelize[_0x7ce6('0x1')]},'destuniqueid':{'type':Sequelize[_0x7ce6('0x1')]},'messageId':{'type':Sequelize[_0x7ce6('0x1')]},'inReplyTo':{'type':Sequelize[_0x7ce6('0x1')]},'subject':{'type':Sequelize['STRING']},'from':{'type':Sequelize['STRING']},'to':{'type':Sequelize['STRING']},'cc':{'type':Sequelize['STRING']},'attachment':{'type':Sequelize[_0x7ce6('0x5')]},'html':{'type':Sequelize[_0x7ce6('0x5')]},'text':{'type':Sequelize[_0x7ce6('0x5')]},'status':{'type':Sequelize[_0x7ce6('0x6')]('SENT',_0x7ce6('0x7'),_0x7ce6('0x8'),_0x7ce6('0x9'))},'url':{'type':Sequelize[_0x7ce6('0x1')]},'app':{'type':Sequelize['STRING']},'appdata':{'type':Sequelize['STRING']},'projectId':{'type':Sequelize[_0x7ce6('0x2')]}};
\ No newline at end of file
index 668de5e..f6af2c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3ea=['sort','where','pick','merge','options','count','includeAll','include','findAll','rows','catch','show','params','create','body','find','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','sendStatus','status','offset','undefined','limit','set','apply','reject','update','destroy','then','end','error','stack','name','send','index','map','IntegrationReport','rawAttributes','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order'];(function(_0xef8146,_0x459c34){var _0x5a6cb0=function(_0x2f84ec){while(--_0x2f84ec){_0xef8146['push'](_0xef8146['shift']());}};_0x5a6cb0(++_0x459c34);}(_0xb3ea,0x1bb));var _0xab3e=function(_0x447842,_0x4fd257){_0x447842=_0x447842-0x0;var _0xd5a360=_0xb3ea[_0x447842];return _0xd5a360;};'use strict';var emlformat=require(_0xab3e('0x0'));var rimraf=require(_0xab3e('0x1'));var zipdir=require(_0xab3e('0x2'));var jsonpatch=require(_0xab3e('0x3'));var rp=require(_0xab3e('0x4'));var moment=require('moment');var BPromise=require(_0xab3e('0x5'));var Mustache=require(_0xab3e('0x6'));var util=require(_0xab3e('0x7'));var path=require(_0xab3e('0x8'));var sox=require(_0xab3e('0x9'));var csv=require(_0xab3e('0xa'));var ejs=require(_0xab3e('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xab3e('0xc'));var squel=require(_0xab3e('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xab3e('0xa'));var querystring=require('querystring');var Papa=require(_0xab3e('0xe'));var Redis=require(_0xab3e('0xf'));var authService=require(_0xab3e('0x10'));var qs=require(_0xab3e('0x11'));var as=require(_0xab3e('0x12'));var hardwareService=require(_0xab3e('0x13'));var logger=require('../../config/logger')('api');var utils=require(_0xab3e('0x14'));var config=require(_0xab3e('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x49234a,_0x415a66){_0x415a66=_0x415a66||0xcc;return function(_0xc39ed6){if(_0xc39ed6){return _0x49234a[_0xab3e('0x16')](_0x415a66);}return _0x49234a[_0xab3e('0x17')](_0x415a66)['end']();};}function respondWithResult(_0x374d9f,_0xb65cbc){_0xb65cbc=_0xb65cbc||0xc8;return function(_0x544a12){if(_0x544a12){return _0x374d9f['status'](_0xb65cbc)['json'](_0x544a12);}};}function respondWithFilteredResult(_0x5699c7,_0x5026b5){return function(_0x1bd2df){if(_0x1bd2df){var _0x2dbab6=typeof _0x5026b5[_0xab3e('0x18')]===_0xab3e('0x19')&&typeof _0x5026b5[_0xab3e('0x1a')]===_0xab3e('0x19');var _0x1066ff=_0x1bd2df['count'];var _0x1a199e=_0x2dbab6?0x0:_0x5026b5[_0xab3e('0x18')];var _0x3ac422=_0x2dbab6?_0x1bd2df['count']:_0x5026b5[_0xab3e('0x18')]+_0x5026b5[_0xab3e('0x1a')];var _0x36635a;if(_0x3ac422>=_0x1066ff){_0x3ac422=_0x1066ff;_0x36635a=0xc8;}else{_0x36635a=0xce;}_0x5699c7['status'](_0x36635a);return _0x5699c7[_0xab3e('0x1b')]('Content-Range',_0x1a199e+'-'+_0x3ac422+'/'+_0x1066ff)['json'](_0x1bd2df);}return null;};}function patchUpdates(_0x4684dd){return function(_0x4707be){try{jsonpatch[_0xab3e('0x1c')](_0x4707be,_0x4684dd,!![]);}catch(_0x2d3387){return BPromise[_0xab3e('0x1d')](_0x2d3387);}return _0x4707be['save']();};}function saveUpdates(_0x3a9418,_0x17fa91){return function(_0x570055){if(_0x570055){return _0x570055[_0xab3e('0x1e')](_0x3a9418)['then'](function(_0x3a4475){return _0x3a4475;});}return null;};}function removeEntity(_0x4ed3d9,_0xce4989){return function(_0x561f6b){if(_0x561f6b){return _0x561f6b[_0xab3e('0x1f')]()[_0xab3e('0x20')](function(){_0x4ed3d9[_0xab3e('0x17')](0xcc)[_0xab3e('0x21')]();});}};}function handleEntityNotFound(_0x212ad1,_0x1ee16c){return function(_0x7dc538){if(!_0x7dc538){_0x212ad1[_0xab3e('0x16')](0x194);}return _0x7dc538;};}function handleError(_0xa1ca4,_0x17896b){_0x17896b=_0x17896b||0x1f4;return function(_0x3fbc99){logger[_0xab3e('0x22')](_0x3fbc99[_0xab3e('0x23')]);if(_0x3fbc99[_0xab3e('0x24')]){delete _0x3fbc99['name'];}_0xa1ca4[_0xab3e('0x17')](_0x17896b)[_0xab3e('0x25')](_0x3fbc99);};}exports[_0xab3e('0x26')]=function(_0x3fd849,_0x277dba){var _0x14b713={},_0x35ef7c={},_0x58a17f={'count':0x0,'rows':[]};var _0x1c061f=_[_0xab3e('0x27')](db[_0xab3e('0x28')][_0xab3e('0x29')],function(_0x730dc6){return{'name':_0x730dc6['fieldName'],'type':_0x730dc6[_0xab3e('0x2a')][_0xab3e('0x2b')]};});_0x35ef7c['model']=_['map'](_0x1c061f,_0xab3e('0x24'));_0x35ef7c[_0xab3e('0x2c')]=_[_0xab3e('0x2d')](_0x3fd849[_0xab3e('0x2c')]);_0x35ef7c[_0xab3e('0x2e')]=_[_0xab3e('0x2f')](_0x35ef7c[_0xab3e('0x30')],_0x35ef7c['query']);_0x14b713[_0xab3e('0x31')]=_[_0xab3e('0x2f')](_0x35ef7c[_0xab3e('0x30')],qs[_0xab3e('0x32')](_0x3fd849[_0xab3e('0x2c')][_0xab3e('0x32')]));_0x14b713[_0xab3e('0x31')]=_0x14b713['attributes'][_0xab3e('0x33')]?_0x14b713['attributes']:_0x35ef7c[_0xab3e('0x30')];if(!_0x3fd849['query'][_0xab3e('0x34')]('nolimit')){_0x14b713[_0xab3e('0x1a')]=qs[_0xab3e('0x1a')](_0x3fd849['query'][_0xab3e('0x1a')]);_0x14b713[_0xab3e('0x18')]=qs[_0xab3e('0x18')](_0x3fd849[_0xab3e('0x2c')][_0xab3e('0x18')]);}_0x14b713[_0xab3e('0x35')]=qs[_0xab3e('0x36')](_0x3fd849[_0xab3e('0x2c')]['sort']);_0x14b713[_0xab3e('0x37')]=qs[_0xab3e('0x2e')](_[_0xab3e('0x38')](_0x3fd849[_0xab3e('0x2c')],_0x35ef7c[_0xab3e('0x2e')]),_0x1c061f);if(_0x3fd849['query']['filter']){_0x14b713[_0xab3e('0x37')]=_[_0xab3e('0x39')](_0x14b713[_0xab3e('0x37')],{'$or':_[_0xab3e('0x27')](_0x1c061f,function(_0x35d32a){if(_0x35d32a[_0xab3e('0x2a')]!=='VIRTUAL'){var _0x5bf12e={};_0x5bf12e[_0x35d32a['name']]={'$like':'%'+_0x3fd849['query']['filter']+'%'};return _0x5bf12e;}})});}_0x14b713=_['merge']({},_0x14b713,_0x3fd849[_0xab3e('0x3a')]);var _0x36ead6={'where':_0x14b713[_0xab3e('0x37')]};return db[_0xab3e('0x28')][_0xab3e('0x3b')](_0x36ead6)[_0xab3e('0x20')](function(_0x2cc388){_0x58a17f[_0xab3e('0x3b')]=_0x2cc388;if(_0x3fd849[_0xab3e('0x2c')][_0xab3e('0x3c')]){_0x14b713[_0xab3e('0x3d')]=[{'all':!![]}];}return db[_0xab3e('0x28')][_0xab3e('0x3e')](_0x14b713);})['then'](function(_0x11a106){_0x58a17f[_0xab3e('0x3f')]=_0x11a106;return _0x58a17f;})[_0xab3e('0x20')](respondWithFilteredResult(_0x277dba,_0x14b713))[_0xab3e('0x40')](handleError(_0x277dba,null));};exports[_0xab3e('0x41')]=function(_0x37001b,_0x2d2adc){var _0x365f66={'raw':![],'where':{'id':_0x37001b[_0xab3e('0x42')]['id']}},_0xb804f3={};_0xb804f3[_0xab3e('0x30')]=_[_0xab3e('0x2d')](db['IntegrationReport'][_0xab3e('0x29')]);_0xb804f3[_0xab3e('0x2c')]=_[_0xab3e('0x2d')](_0x37001b['query']);_0xb804f3[_0xab3e('0x2e')]=_[_0xab3e('0x2f')](_0xb804f3[_0xab3e('0x30')],_0xb804f3[_0xab3e('0x2c')]);_0x365f66[_0xab3e('0x31')]=_['intersection'](_0xb804f3[_0xab3e('0x30')],qs[_0xab3e('0x32')](_0x37001b[_0xab3e('0x2c')][_0xab3e('0x32')]));_0x365f66[_0xab3e('0x31')]=_0x365f66[_0xab3e('0x31')][_0xab3e('0x33')]?_0x365f66['attributes']:_0xb804f3[_0xab3e('0x30')];if(_0x37001b[_0xab3e('0x2c')]['includeAll']){_0x365f66[_0xab3e('0x3d')]=[{'all':!![]}];}_0x365f66=_[_0xab3e('0x39')]({},_0x365f66,_0x37001b[_0xab3e('0x3a')]);return db[_0xab3e('0x28')]['find'](_0x365f66)[_0xab3e('0x20')](handleEntityNotFound(_0x2d2adc,null))[_0xab3e('0x20')](respondWithResult(_0x2d2adc,null))[_0xab3e('0x40')](handleError(_0x2d2adc,null));};exports[_0xab3e('0x43')]=function(_0x48373f,_0x1ee633){return db[_0xab3e('0x28')][_0xab3e('0x43')](_0x48373f[_0xab3e('0x44')],{})[_0xab3e('0x20')](respondWithResult(_0x1ee633,0xc9))[_0xab3e('0x40')](handleError(_0x1ee633,null));};exports[_0xab3e('0x1e')]=function(_0x4570f2,_0x4b0bc5){if(_0x4570f2[_0xab3e('0x44')]['id']){delete _0x4570f2[_0xab3e('0x44')]['id'];}return db[_0xab3e('0x28')]['find']({'where':{'id':_0x4570f2[_0xab3e('0x42')]['id']}})[_0xab3e('0x20')](handleEntityNotFound(_0x4b0bc5,null))[_0xab3e('0x20')](saveUpdates(_0x4570f2[_0xab3e('0x44')],null))[_0xab3e('0x20')](respondWithResult(_0x4b0bc5,null))['catch'](handleError(_0x4b0bc5,null));};exports[_0xab3e('0x1f')]=function(_0x454b21,_0x76e87d){return db['IntegrationReport'][_0xab3e('0x45')]({'where':{'id':_0x454b21[_0xab3e('0x42')]['id']}})[_0xab3e('0x20')](handleEntityNotFound(_0x76e87d,null))[_0xab3e('0x20')](removeEntity(_0x76e87d,null))['catch'](handleError(_0x76e87d,null));};exports[_0xab3e('0x46')]=function(_0x3327ae,_0x415ee6){return db[_0xab3e('0x28')][_0xab3e('0x46')]()['then'](respondWithResult(_0x415ee6,null))[_0xab3e('0x40')](handleError(_0x415ee6,null));};
\ No newline at end of file
+var _0x3bbf=['name','send','index','map','IntegrationReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','where','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','options','create','body','update','find','describe','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','sendStatus','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','then','destroy'];(function(_0x37b7b6,_0x165a5c){var _0x10c4c3=function(_0x16d71e){while(--_0x16d71e){_0x37b7b6['push'](_0x37b7b6['shift']());}};_0x10c4c3(++_0x165a5c);}(_0x3bbf,0x100));var _0xf3bb=function(_0x548343,_0x2dc5e4){_0x548343=_0x548343-0x0;var _0x527f61=_0x3bbf[_0x548343];return _0x527f61;};'use strict';var emlformat=require(_0xf3bb('0x0'));var rimraf=require(_0xf3bb('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xf3bb('0x2'));var moment=require(_0xf3bb('0x3'));var BPromise=require(_0xf3bb('0x4'));var Mustache=require(_0xf3bb('0x5'));var util=require(_0xf3bb('0x6'));var path=require(_0xf3bb('0x7'));var sox=require(_0xf3bb('0x8'));var csv=require(_0xf3bb('0x9'));var ejs=require(_0xf3bb('0xa'));var fs=require('fs');var fs_extra=require(_0xf3bb('0xb'));var _=require('lodash');var squel=require(_0xf3bb('0xc'));var crypto=require(_0xf3bb('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf3bb('0xe'));var toCsv=require(_0xf3bb('0x9'));var querystring=require('querystring');var Papa=require(_0xf3bb('0xf'));var Redis=require(_0xf3bb('0x10'));var authService=require('../../components/auth/service');var qs=require(_0xf3bb('0x11'));var as=require(_0xf3bb('0x12'));var hardwareService=require(_0xf3bb('0x13'));var logger=require(_0xf3bb('0x14'))(_0xf3bb('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xf3bb('0x16'))['db'];function respondWithStatusCode(_0x4de3fc,_0x5b5c95){_0x5b5c95=_0x5b5c95||0xcc;return function(_0x204d2b){if(_0x204d2b){return _0x4de3fc[_0xf3bb('0x17')](_0x5b5c95);}return _0x4de3fc['status'](_0x5b5c95)['end']();};}function respondWithResult(_0x3b27e5,_0x4bf2a9){_0x4bf2a9=_0x4bf2a9||0xc8;return function(_0xe940d1){if(_0xe940d1){return _0x3b27e5[_0xf3bb('0x18')](_0x4bf2a9)[_0xf3bb('0x19')](_0xe940d1);}};}function respondWithFilteredResult(_0x50b67b,_0x3b90b8){return function(_0x4d2a1c){if(_0x4d2a1c){var _0xe3b095=typeof _0x3b90b8['offset']===_0xf3bb('0x1a')&&typeof _0x3b90b8[_0xf3bb('0x1b')]===_0xf3bb('0x1a');var _0x5b3933=_0x4d2a1c[_0xf3bb('0x1c')];var _0x3a0849=_0xe3b095?0x0:_0x3b90b8[_0xf3bb('0x1d')];var _0x3ecb31=_0xe3b095?_0x4d2a1c[_0xf3bb('0x1c')]:_0x3b90b8[_0xf3bb('0x1d')]+_0x3b90b8[_0xf3bb('0x1b')];var _0x2ff27e;if(_0x3ecb31>=_0x5b3933){_0x3ecb31=_0x5b3933;_0x2ff27e=0xc8;}else{_0x2ff27e=0xce;}_0x50b67b[_0xf3bb('0x18')](_0x2ff27e);return _0x50b67b[_0xf3bb('0x1e')](_0xf3bb('0x1f'),_0x3a0849+'-'+_0x3ecb31+'/'+_0x5b3933)['json'](_0x4d2a1c);}return null;};}function patchUpdates(_0x2b987d){return function(_0x3ffbaa){try{jsonpatch[_0xf3bb('0x20')](_0x3ffbaa,_0x2b987d,!![]);}catch(_0x4f31a6){return BPromise[_0xf3bb('0x21')](_0x4f31a6);}return _0x3ffbaa['save']();};}function saveUpdates(_0x140ba6,_0x387680){return function(_0x5926f1){if(_0x5926f1){return _0x5926f1['update'](_0x140ba6)[_0xf3bb('0x22')](function(_0x51b7f1){return _0x51b7f1;});}return null;};}function removeEntity(_0x3e797e,_0x1f0630){return function(_0x36da08){if(_0x36da08){return _0x36da08[_0xf3bb('0x23')]()['then'](function(){_0x3e797e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x37d361,_0x898ec3){return function(_0x358305){if(!_0x358305){_0x37d361[_0xf3bb('0x17')](0x194);}return _0x358305;};}function handleError(_0x5540a5,_0x20030c){_0x20030c=_0x20030c||0x1f4;return function(_0x5c4045){logger['error'](_0x5c4045['stack']);if(_0x5c4045[_0xf3bb('0x24')]){delete _0x5c4045[_0xf3bb('0x24')];}_0x5540a5['status'](_0x20030c)[_0xf3bb('0x25')](_0x5c4045);};}exports[_0xf3bb('0x26')]=function(_0x307e83,_0x326e0f){var _0x5659b0={},_0x1483f2={},_0x1c4b91={'count':0x0,'rows':[]};var _0x41091b=_[_0xf3bb('0x27')](db[_0xf3bb('0x28')][_0xf3bb('0x29')],function(_0x56ef41){return{'name':_0x56ef41[_0xf3bb('0x2a')],'type':_0x56ef41[_0xf3bb('0x2b')][_0xf3bb('0x2c')]};});_0x1483f2['model']=_[_0xf3bb('0x27')](_0x41091b,'name');_0x1483f2[_0xf3bb('0x2d')]=_[_0xf3bb('0x2e')](_0x307e83[_0xf3bb('0x2d')]);_0x1483f2[_0xf3bb('0x2f')]=_[_0xf3bb('0x30')](_0x1483f2[_0xf3bb('0x31')],_0x1483f2[_0xf3bb('0x2d')]);_0x5659b0[_0xf3bb('0x32')]=_[_0xf3bb('0x30')](_0x1483f2['model'],qs[_0xf3bb('0x33')](_0x307e83[_0xf3bb('0x2d')][_0xf3bb('0x33')]));_0x5659b0[_0xf3bb('0x32')]=_0x5659b0[_0xf3bb('0x32')][_0xf3bb('0x34')]?_0x5659b0[_0xf3bb('0x32')]:_0x1483f2[_0xf3bb('0x31')];if(!_0x307e83[_0xf3bb('0x2d')][_0xf3bb('0x35')]('nolimit')){_0x5659b0[_0xf3bb('0x1b')]=qs[_0xf3bb('0x1b')](_0x307e83[_0xf3bb('0x2d')][_0xf3bb('0x1b')]);_0x5659b0[_0xf3bb('0x1d')]=qs[_0xf3bb('0x1d')](_0x307e83[_0xf3bb('0x2d')][_0xf3bb('0x1d')]);}_0x5659b0[_0xf3bb('0x36')]=qs[_0xf3bb('0x37')](_0x307e83['query'][_0xf3bb('0x37')]);_0x5659b0[_0xf3bb('0x38')]=qs[_0xf3bb('0x2f')](_['pick'](_0x307e83['query'],_0x1483f2[_0xf3bb('0x2f')]),_0x41091b);if(_0x307e83['query'][_0xf3bb('0x39')]){_0x5659b0[_0xf3bb('0x38')]=_['merge'](_0x5659b0[_0xf3bb('0x38')],{'$or':_[_0xf3bb('0x27')](_0x41091b,function(_0x4b70b6){if(_0x4b70b6[_0xf3bb('0x2b')]!==_0xf3bb('0x3a')){var _0xb1dd06={};_0xb1dd06[_0x4b70b6['name']]={'$like':'%'+_0x307e83[_0xf3bb('0x2d')][_0xf3bb('0x39')]+'%'};return _0xb1dd06;}})});}_0x5659b0=_[_0xf3bb('0x3b')]({},_0x5659b0,_0x307e83['options']);var _0xe9d757={'where':_0x5659b0['where']};return db[_0xf3bb('0x28')][_0xf3bb('0x1c')](_0xe9d757)['then'](function(_0x350685){_0x1c4b91[_0xf3bb('0x1c')]=_0x350685;if(_0x307e83['query'][_0xf3bb('0x3c')]){_0x5659b0[_0xf3bb('0x3d')]=[{'all':!![]}];}return db[_0xf3bb('0x28')][_0xf3bb('0x3e')](_0x5659b0);})[_0xf3bb('0x22')](function(_0x39a01e){_0x1c4b91[_0xf3bb('0x3f')]=_0x39a01e;return _0x1c4b91;})[_0xf3bb('0x22')](respondWithFilteredResult(_0x326e0f,_0x5659b0))[_0xf3bb('0x40')](handleError(_0x326e0f,null));};exports[_0xf3bb('0x41')]=function(_0x3a1835,_0x35bc16){var _0x35b5d3={'raw':![],'where':{'id':_0x3a1835[_0xf3bb('0x42')]['id']}},_0xfa72ff={};_0xfa72ff[_0xf3bb('0x31')]=_['keys'](db[_0xf3bb('0x28')][_0xf3bb('0x29')]);_0xfa72ff[_0xf3bb('0x2d')]=_['keys'](_0x3a1835[_0xf3bb('0x2d')]);_0xfa72ff[_0xf3bb('0x2f')]=_['intersection'](_0xfa72ff[_0xf3bb('0x31')],_0xfa72ff[_0xf3bb('0x2d')]);_0x35b5d3[_0xf3bb('0x32')]=_['intersection'](_0xfa72ff[_0xf3bb('0x31')],qs[_0xf3bb('0x33')](_0x3a1835[_0xf3bb('0x2d')]['fields']));_0x35b5d3[_0xf3bb('0x32')]=_0x35b5d3[_0xf3bb('0x32')]['length']?_0x35b5d3[_0xf3bb('0x32')]:_0xfa72ff[_0xf3bb('0x31')];if(_0x3a1835[_0xf3bb('0x2d')][_0xf3bb('0x3c')]){_0x35b5d3['include']=[{'all':!![]}];}_0x35b5d3=_[_0xf3bb('0x3b')]({},_0x35b5d3,_0x3a1835[_0xf3bb('0x43')]);return db['IntegrationReport']['find'](_0x35b5d3)[_0xf3bb('0x22')](handleEntityNotFound(_0x35bc16,null))[_0xf3bb('0x22')](respondWithResult(_0x35bc16,null))[_0xf3bb('0x40')](handleError(_0x35bc16,null));};exports['create']=function(_0x2d205b,_0x374913){return db[_0xf3bb('0x28')][_0xf3bb('0x44')](_0x2d205b[_0xf3bb('0x45')],{})[_0xf3bb('0x22')](respondWithResult(_0x374913,0xc9))[_0xf3bb('0x40')](handleError(_0x374913,null));};exports[_0xf3bb('0x46')]=function(_0x1ecc0d,_0x41507f){if(_0x1ecc0d[_0xf3bb('0x45')]['id']){delete _0x1ecc0d[_0xf3bb('0x45')]['id'];}return db[_0xf3bb('0x28')][_0xf3bb('0x47')]({'where':{'id':_0x1ecc0d[_0xf3bb('0x42')]['id']}})[_0xf3bb('0x22')](handleEntityNotFound(_0x41507f,null))[_0xf3bb('0x22')](saveUpdates(_0x1ecc0d[_0xf3bb('0x45')],null))[_0xf3bb('0x22')](respondWithResult(_0x41507f,null))['catch'](handleError(_0x41507f,null));};exports[_0xf3bb('0x23')]=function(_0x360c70,_0x42f8e0){return db[_0xf3bb('0x28')][_0xf3bb('0x47')]({'where':{'id':_0x360c70[_0xf3bb('0x42')]['id']}})[_0xf3bb('0x22')](handleEntityNotFound(_0x42f8e0,null))['then'](removeEntity(_0x42f8e0,null))[_0xf3bb('0x40')](handleError(_0x42f8e0,null));};exports[_0xf3bb('0x48')]=function(_0x46215d,_0xb33be7){return db[_0xf3bb('0x28')][_0xf3bb('0x48')]()[_0xf3bb('0x22')](respondWithResult(_0xb33be7,null))['catch'](handleError(_0xb33be7,null));};
\ No newline at end of file
index 2080bfe..c4408b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a13=['lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','./integrationReport.attributes','exports','define','IntegrationReport','report_integration'];(function(_0x3fc0a7,_0x4d1a87){var _0x5d3d1a=function(_0x1bc629){while(--_0x1bc629){_0x3fc0a7['push'](_0x3fc0a7['shift']());}};_0x5d3d1a(++_0x4d1a87);}(_0x3a13,0xc3));var _0x33a1=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0x3a13[_0x2bf141];return _0x48277b;};'use strict';var _=require(_0x33a1('0x0'));var util=require(_0x33a1('0x1'));var logger=require(_0x33a1('0x2'))(_0x33a1('0x3'));var moment=require(_0x33a1('0x4'));var BPromise=require('bluebird');var rp=require(_0x33a1('0x5'));var fs=require('fs');var path=require(_0x33a1('0x6'));var rimraf=require(_0x33a1('0x7'));var config=require('../../config/environment');var attributes=require(_0x33a1('0x8'));module[_0x33a1('0x9')]=function(_0xd24b9,_0x4a5194){return _0xd24b9[_0x33a1('0xa')](_0x33a1('0xb'),attributes,{'tableName':_0x33a1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xa30a=['rimraf','../../config/environment','./integrationReport.attributes','exports','IntegrationReport','report_integration','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x92c450,_0x41f1e3){var _0x2a9599=function(_0x4f27df){while(--_0x4f27df){_0x92c450['push'](_0x92c450['shift']());}};_0x2a9599(++_0x41f1e3);}(_0xa30a,0x88));var _0xaa30=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xa30a[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xaa30('0x0'));var util=require(_0xaa30('0x1'));var logger=require(_0xaa30('0x2'))(_0xaa30('0x3'));var moment=require(_0xaa30('0x4'));var BPromise=require('bluebird');var rp=require(_0xaa30('0x5'));var fs=require('fs');var path=require(_0xaa30('0x6'));var rimraf=require(_0xaa30('0x7'));var config=require(_0xaa30('0x8'));var attributes=require(_0xaa30('0x9'));module[_0xaa30('0xa')]=function(_0x3c04cc,_0x1bfa70){return _0x3c04cc['define'](_0xaa30('0xb'),attributes,{'tableName':_0xaa30('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 402b10d..98a3da5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['client','http','then','info','request\x20sent','debug','IntegrationReport,\x20%s,\x20%s,\x20%s','stringify','error','IntegrationReport,\x20%s,\x20%s','message','result','catch','lodash','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x23daa2,_0x516bba){var _0x4c5876=function(_0x3e7543){while(--_0x3e7543){_0x23daa2['push'](_0x23daa2['shift']());}};_0x4c5876(++_0x516bba);}(_0x0295,0x1f0));var _0x5029=function(_0xa98302,_0x844f27){_0xa98302=_0xa98302-0x0;var _0x1ad8e3=_0x0295[_0xa98302];return _0x1ad8e3;};'use strict';var _=require(_0x5029('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x5029('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5029('0x2'))['db'];var utils=require(_0x5029('0x3'));var logger=require(_0x5029('0x4'))(_0x5029('0x5'));var config=require(_0x5029('0x6'));var jayson=require(_0x5029('0x7'));var client=jayson[_0x5029('0x8')][_0x5029('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5b3cd,_0x502a62,_0x54978f){return new BPromise(function(_0x4ee867,_0xf4459b){return client['request'](_0x5b3cd,_0x54978f)[_0x5029('0xa')](function(_0x5bccfc){logger[_0x5029('0xb')]('IntegrationReport,\x20%s,\x20%s',_0x502a62,_0x5029('0xc'));logger[_0x5029('0xd')](_0x5029('0xe'),_0x502a62,'request\x20sent',JSON[_0x5029('0xf')](_0x5bccfc));if(_0x5bccfc[_0x5029('0x10')]){if(_0x5bccfc[_0x5029('0x10')]['code']===0x1f4){logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x5bccfc['error']['message']);return _0xf4459b(_0x5bccfc['error']['message']);}logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x5bccfc[_0x5029('0x10')][_0x5029('0x12')]);return _0x4ee867(_0x5bccfc[_0x5029('0x10')][_0x5029('0x12')]);}else{logger[_0x5029('0xb')](_0x5029('0x11'),_0x502a62,_0x5029('0xc'));_0x4ee867(_0x5bccfc[_0x5029('0x13')][_0x5029('0x12')]);}})[_0x5029('0x14')](function(_0x3786b5){logger[_0x5029('0x10')](_0x5029('0x11'),_0x502a62,_0x3786b5);_0xf4459b(_0x3786b5);});});}
\ No newline at end of file
+var _0xe2fe=['then','info','IntegrationReport,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','request'];(function(_0x3106e3,_0x118652){var _0x42400d=function(_0x110a43){while(--_0x110a43){_0x3106e3['push'](_0x3106e3['shift']());}};_0x42400d(++_0x118652);}(_0xe2fe,0x86));var _0xee2f=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xe2fe[_0x14add3];return _0x4a174f;};'use strict';var _=require(_0xee2f('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xee2f('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xee2f('0x2'));var db=require(_0xee2f('0x3'))['db'];var utils=require(_0xee2f('0x4'));var logger=require(_0xee2f('0x5'))(_0xee2f('0x6'));var config=require('../../config/environment');var jayson=require(_0xee2f('0x7'));var client=jayson[_0xee2f('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1533a0,_0x2e1c8c,_0x5a7975){return new BPromise(function(_0x3c4095,_0x5ea796){return client[_0xee2f('0x9')](_0x1533a0,_0x5a7975)[_0xee2f('0xa')](function(_0x53f7dd){logger[_0xee2f('0xb')](_0xee2f('0xc'),_0x2e1c8c,'request\x20sent');logger['debug']('IntegrationReport,\x20%s,\x20%s,\x20%s',_0x2e1c8c,'request\x20sent',JSON[_0xee2f('0xd')](_0x53f7dd));if(_0x53f7dd['error']){if(_0x53f7dd['error']['code']===0x1f4){logger[_0xee2f('0xe')](_0xee2f('0xc'),_0x2e1c8c,_0x53f7dd[_0xee2f('0xe')][_0xee2f('0xf')]);return _0x5ea796(_0x53f7dd[_0xee2f('0xe')][_0xee2f('0xf')]);}logger['error'](_0xee2f('0xc'),_0x2e1c8c,_0x53f7dd['error'][_0xee2f('0xf')]);return _0x3c4095(_0x53f7dd[_0xee2f('0xe')]['message']);}else{logger[_0xee2f('0xb')](_0xee2f('0xc'),_0x2e1c8c,_0xee2f('0x10'));_0x3c4095(_0x53f7dd[_0xee2f('0x11')][_0xee2f('0xf')]);}})['catch'](function(_0x3f6372){logger['error'](_0xee2f('0xc'),_0x2e1c8c,_0x3f6372);_0x5ea796(_0x3f6372);});});}
\ No newline at end of file
index 4749ae0..0ed1656 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x94ba=['/:id/sub_intervals/create_many','addIntervals','put','update','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','/:id','show','getIntervals','post','/:id/sub_intervals','addInterval'];(function(_0x55c6eb,_0x516995){var _0x40a360=function(_0x3732e8){while(--_0x3732e8){_0x55c6eb['push'](_0x55c6eb['shift']());}};_0x40a360(++_0x516995);}(_0x94ba,0xbe));var _0xa94b=function(_0x364cba,_0x19c43b){_0x364cba=_0x364cba-0x0;var _0x1e6de2=_0x94ba[_0x364cba];return _0x1e6de2;};'use strict';var multer=require(_0xa94b('0x0'));var util=require(_0xa94b('0x1'));var path=require(_0xa94b('0x2'));var timeout=require(_0xa94b('0x3'));var express=require(_0xa94b('0x4'));var router=express['Router']();var fs_extra=require(_0xa94b('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa94b('0x6'));var config=require(_0xa94b('0x7'));var controller=require('./interval.controller');router['get']('/',auth[_0xa94b('0x8')](),controller[_0xa94b('0x9')]);router[_0xa94b('0xa')](_0xa94b('0xb'),auth['isAuthenticated'](),controller[_0xa94b('0xc')]);router[_0xa94b('0xa')]('/:id/sub_intervals',auth['isAuthenticated'](),controller[_0xa94b('0xd')]);router[_0xa94b('0xe')]('/',auth[_0xa94b('0x8')](),controller['create']);router[_0xa94b('0xe')](_0xa94b('0xf'),auth[_0xa94b('0x8')](),controller[_0xa94b('0x10')]);router[_0xa94b('0xe')](_0xa94b('0x11'),auth['isAuthenticated'](),controller[_0xa94b('0x12')]);router[_0xa94b('0x13')](_0xa94b('0xb'),auth[_0xa94b('0x8')](),controller[_0xa94b('0x14')]);router[_0xa94b('0x15')](_0xa94b('0xb'),auth[_0xa94b('0x8')](),controller['destroy']);module[_0xa94b('0x16')]=router;
\ No newline at end of file
+var _0xd7ff=['express','Router','../../components/interaction/service','../../config/environment','./interval.controller','get','index','/:id','isAuthenticated','show','/:id/sub_intervals','getIntervals','post','create','addInterval','/:id/sub_intervals/create_many','addIntervals','put','update','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0xad9b8,_0x534b84){var _0x2a179d=function(_0x3fb189){while(--_0x3fb189){_0xad9b8['push'](_0xad9b8['shift']());}};_0x2a179d(++_0x534b84);}(_0xd7ff,0x100));var _0xfd7f=function(_0x3b8b72,_0x59cf26){_0x3b8b72=_0x3b8b72-0x0;var _0x394b00=_0xd7ff[_0x3b8b72];return _0x394b00;};'use strict';var multer=require(_0xfd7f('0x0'));var util=require(_0xfd7f('0x1'));var path=require(_0xfd7f('0x2'));var timeout=require(_0xfd7f('0x3'));var express=require(_0xfd7f('0x4'));var router=express[_0xfd7f('0x5')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xfd7f('0x6'));var config=require(_0xfd7f('0x7'));var controller=require(_0xfd7f('0x8'));router[_0xfd7f('0x9')]('/',auth['isAuthenticated'](),controller[_0xfd7f('0xa')]);router[_0xfd7f('0x9')](_0xfd7f('0xb'),auth[_0xfd7f('0xc')](),controller[_0xfd7f('0xd')]);router[_0xfd7f('0x9')](_0xfd7f('0xe'),auth[_0xfd7f('0xc')](),controller[_0xfd7f('0xf')]);router[_0xfd7f('0x10')]('/',auth[_0xfd7f('0xc')](),controller[_0xfd7f('0x11')]);router[_0xfd7f('0x10')](_0xfd7f('0xe'),auth[_0xfd7f('0xc')](),controller[_0xfd7f('0x12')]);router['post'](_0xfd7f('0x13'),auth['isAuthenticated'](),controller[_0xfd7f('0x14')]);router[_0xfd7f('0x15')](_0xfd7f('0xb'),auth[_0xfd7f('0xc')](),controller[_0xfd7f('0x16')]);router[_0xfd7f('0x17')](_0xfd7f('0xb'),auth[_0xfd7f('0xc')](),controller[_0xfd7f('0x18')]);module[_0xfd7f('0x19')]=router;
\ No newline at end of file
index f733c6f..990ac7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6121=['exports','STRING'];(function(_0x124096,_0xbb4341){var _0x123aed=function(_0x4db081){while(--_0x4db081){_0x124096['push'](_0x124096['shift']());}};_0x123aed(++_0xbb4341);}(_0x6121,0x1ba));var _0x1612=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x6121[_0x3b380d];return _0x54502b;};'use strict';var Sequelize=require('sequelize');module[_0x1612('0x0')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x1612('0x1')]},'interval':{'type':Sequelize[_0x1612('0x1')],'allowNull':!![]}};
\ No newline at end of file
+var _0xbc54=['STRING','sequelize'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xbc54,0x17f));var _0x4bc5=function(_0x5f5a1a,_0x4887fc){_0x5f5a1a=_0x5f5a1a-0x0;var _0xf3f564=_0xbc54[_0x5f5a1a];return _0xf3f564;};'use strict';var Sequelize=require(_0x4bc5('0x0'));module['exports']={'name':{'type':Sequelize[_0x4bc5('0x1')]},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x4bc5('0x1')],'allowNull':!![]}};
\ No newline at end of file
index 7e93fe0..fd0e741 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x510d=['pick','filter','where','VIRTUAL','options','includeAll','include','findAll','rows','rawAttributes','merge','find','create','user','UserProfileSection','catch','update','body','params','addInterval','IntervalId','findOne','getIntervals','hasOwnProperty','addIntervals','sequelize','transaction','bulkCreate','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','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','limit','undefined','count','offset','Content-Range','reject','save','then','destroy','get','Intervals','UserProfileResource','sendStatus','error','name','send','index','map','Interval','type','key','query','keys','filters','intersection','model','fields','attributes','length','nolimit','order','sort'];(function(_0x3356e3,_0x34e3f7){var _0x41b8ee=function(_0x361da6){while(--_0x361da6){_0x3356e3['push'](_0x3356e3['shift']());}};_0x41b8ee(++_0x34e3f7);}(_0x510d,0x76));var _0xd510=function(_0x2576d7,_0x167624){_0x2576d7=_0x2576d7-0x0;var _0x16a08c=_0x510d[_0x2576d7];return _0x16a08c;};'use strict';var emlformat=require(_0xd510('0x0'));var rimraf=require(_0xd510('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd510('0x2'));var rp=require(_0xd510('0x3'));var moment=require(_0xd510('0x4'));var BPromise=require(_0xd510('0x5'));var Mustache=require(_0xd510('0x6'));var util=require(_0xd510('0x7'));var path=require(_0xd510('0x8'));var sox=require(_0xd510('0x9'));var csv=require('to-csv');var ejs=require(_0xd510('0xa'));var fs=require('fs');var fs_extra=require(_0xd510('0xb'));var _=require(_0xd510('0xc'));var squel=require('squel');var crypto=require(_0xd510('0xd'));var jsforce=require(_0xd510('0xe'));var deskjs=require(_0xd510('0xf'));var toCsv=require(_0xd510('0x10'));var querystring=require(_0xd510('0x11'));var Papa=require('papaparse');var Redis=require(_0xd510('0x12'));var authService=require(_0xd510('0x13'));var qs=require(_0xd510('0x14'));var as=require(_0xd510('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xd510('0x16'))(_0xd510('0x17'));var utils=require(_0xd510('0x18'));var config=require(_0xd510('0x19'));var licenseUtil=require(_0xd510('0x1a'));var db=require('../../mysqldb')['db'];var extensions=require('../../components/extensions/rewrite');function respondWithStatusCode(_0x58da40,_0x3076ff){_0x3076ff=_0x3076ff||0xcc;return function(_0x101f29){if(_0x101f29){return _0x58da40['sendStatus'](_0x3076ff);}return _0x58da40[_0xd510('0x1b')](_0x3076ff)[_0xd510('0x1c')]();};}function respondWithResult(_0x4cba90,_0x15e1bd){_0x15e1bd=_0x15e1bd||0xc8;return function(_0x1ec8e1){if(_0x1ec8e1){return _0x4cba90[_0xd510('0x1b')](_0x15e1bd)[_0xd510('0x1d')](_0x1ec8e1);}};}function respondWithFilteredResult(_0x1bc510,_0x22b2d2){return function(_0x2f3a6c){if(_0x2f3a6c){var _0x57d76f=typeof _0x22b2d2['offset']==='undefined'&&typeof _0x22b2d2[_0xd510('0x1e')]===_0xd510('0x1f');var _0x2a708a=_0x2f3a6c[_0xd510('0x20')];var _0x288e0a=_0x57d76f?0x0:_0x22b2d2[_0xd510('0x21')];var _0x46d114=_0x57d76f?_0x2f3a6c[_0xd510('0x20')]:_0x22b2d2[_0xd510('0x21')]+_0x22b2d2['limit'];var _0x469dbe;if(_0x46d114>=_0x2a708a){_0x46d114=_0x2a708a;_0x469dbe=0xc8;}else{_0x469dbe=0xce;}_0x1bc510[_0xd510('0x1b')](_0x469dbe);return _0x1bc510['set'](_0xd510('0x22'),_0x288e0a+'-'+_0x46d114+'/'+_0x2a708a)['json'](_0x2f3a6c);}return null;};}function patchUpdates(_0x10c950){return function(_0x3a1125){try{jsonpatch['apply'](_0x3a1125,_0x10c950,!![]);}catch(_0x17e077){return BPromise[_0xd510('0x23')](_0x17e077);}return _0x3a1125[_0xd510('0x24')]();};}function saveUpdates(_0x1ecf72,_0x1b7b85){return function(_0x339495){if(_0x339495){return _0x339495['update'](_0x1ecf72)[_0xd510('0x25')](function(_0x49ddda){return _0x49ddda;});}return null;};}function removeEntity(_0x53530b,_0x5c75b7){return function(_0x17c3b1){if(_0x17c3b1){return _0x17c3b1[_0xd510('0x26')]()[_0xd510('0x25')](function(){var _0x2a622d=_0x17c3b1[_0xd510('0x27')]({'plain':!![]});var _0x22b0ba=_0xd510('0x28');return db[_0xd510('0x29')][_0xd510('0x26')]({'where':{'type':_0x22b0ba,'resourceId':_0x2a622d['id']}})['then'](function(){return _0x17c3b1;});})[_0xd510('0x25')](function(){_0x53530b[_0xd510('0x1b')](0xcc)[_0xd510('0x1c')]();});}};}function handleEntityNotFound(_0x3ea717,_0x3e5b64){return function(_0x41d588){if(!_0x41d588){_0x3ea717[_0xd510('0x2a')](0x194);}return _0x41d588;};}function handleError(_0x51d66d,_0x4f35f1){_0x4f35f1=_0x4f35f1||0x1f4;return function(_0x2a5247){logger[_0xd510('0x2b')](_0x2a5247['stack']);if(_0x2a5247[_0xd510('0x2c')]){delete _0x2a5247[_0xd510('0x2c')];}_0x51d66d[_0xd510('0x1b')](_0x4f35f1)[_0xd510('0x2d')](_0x2a5247);};}exports[_0xd510('0x2e')]=function(_0x24465e,_0x24db12){var _0x5cf16a={},_0x5d049f={},_0x22ba2b={'count':0x0,'rows':[]};var _0x3be432=_[_0xd510('0x2f')](db[_0xd510('0x30')]['rawAttributes'],function(_0x54594c){return{'name':_0x54594c['fieldName'],'type':_0x54594c[_0xd510('0x31')][_0xd510('0x32')]};});_0x5d049f['model']=_[_0xd510('0x2f')](_0x3be432,_0xd510('0x2c'));_0x5d049f[_0xd510('0x33')]=_[_0xd510('0x34')](_0x24465e[_0xd510('0x33')]);_0x5d049f[_0xd510('0x35')]=_[_0xd510('0x36')](_0x5d049f[_0xd510('0x37')],_0x5d049f[_0xd510('0x33')]);_0x5cf16a['attributes']=_[_0xd510('0x36')](_0x5d049f[_0xd510('0x37')],qs['fields'](_0x24465e[_0xd510('0x33')][_0xd510('0x38')]));_0x5cf16a['attributes']=_0x5cf16a[_0xd510('0x39')][_0xd510('0x3a')]?_0x5cf16a['attributes']:_0x5d049f[_0xd510('0x37')];if(!_0x24465e[_0xd510('0x33')]['hasOwnProperty'](_0xd510('0x3b'))){_0x5cf16a[_0xd510('0x1e')]=qs[_0xd510('0x1e')](_0x24465e['query'][_0xd510('0x1e')]);_0x5cf16a[_0xd510('0x21')]=qs[_0xd510('0x21')](_0x24465e[_0xd510('0x33')][_0xd510('0x21')]);}_0x5cf16a[_0xd510('0x3c')]=qs[_0xd510('0x3d')](_0x24465e['query'][_0xd510('0x3d')]);_0x5cf16a['where']=qs['filters'](_[_0xd510('0x3e')](_0x24465e[_0xd510('0x33')],_0x5d049f[_0xd510('0x35')]),_0x3be432);if(_0x24465e[_0xd510('0x33')][_0xd510('0x3f')]){_0x5cf16a[_0xd510('0x40')]=_['merge'](_0x5cf16a[_0xd510('0x40')],{'$or':_[_0xd510('0x2f')](_0x3be432,function(_0x467994){if(_0x467994[_0xd510('0x31')]!==_0xd510('0x41')){var _0x1a938d={};_0x1a938d[_0x467994[_0xd510('0x2c')]]={'$like':'%'+_0x24465e[_0xd510('0x33')][_0xd510('0x3f')]+'%'};return _0x1a938d;}})});}_0x5cf16a=_['merge']({},_0x5cf16a,_0x24465e[_0xd510('0x42')]);var _0x52a89f={'where':_0x5cf16a[_0xd510('0x40')]};return db[_0xd510('0x30')][_0xd510('0x20')](_0x52a89f)[_0xd510('0x25')](function(_0x5c6ca8){_0x22ba2b[_0xd510('0x20')]=_0x5c6ca8;if(_0x24465e['query'][_0xd510('0x43')]){_0x5cf16a[_0xd510('0x44')]=[{'all':!![]}];}return db[_0xd510('0x30')][_0xd510('0x45')](_0x5cf16a);})['then'](function(_0x34d52a){_0x22ba2b[_0xd510('0x46')]=_0x34d52a;return _0x22ba2b;})[_0xd510('0x25')](respondWithFilteredResult(_0x24db12,_0x5cf16a))['catch'](handleError(_0x24db12,null));};exports['show']=function(_0x7ff952,_0x4c78b4){var _0x32dd1b={'raw':!![],'where':{'id':_0x7ff952['params']['id']}},_0x3aaa28={};_0x3aaa28[_0xd510('0x37')]=_[_0xd510('0x34')](db['Interval'][_0xd510('0x47')]);_0x3aaa28[_0xd510('0x33')]=_['keys'](_0x7ff952[_0xd510('0x33')]);_0x3aaa28['filters']=_[_0xd510('0x36')](_0x3aaa28[_0xd510('0x37')],_0x3aaa28[_0xd510('0x33')]);_0x32dd1b[_0xd510('0x39')]=_[_0xd510('0x36')](_0x3aaa28[_0xd510('0x37')],qs[_0xd510('0x38')](_0x7ff952['query']['fields']));_0x32dd1b[_0xd510('0x39')]=_0x32dd1b[_0xd510('0x39')][_0xd510('0x3a')]?_0x32dd1b['attributes']:_0x3aaa28[_0xd510('0x37')];if(_0x7ff952['query']['includeAll']){_0x32dd1b[_0xd510('0x44')]=[{'all':!![]}];}_0x32dd1b=_[_0xd510('0x48')]({},_0x32dd1b,_0x7ff952[_0xd510('0x42')]);return db['Interval'][_0xd510('0x49')](_0x32dd1b)[_0xd510('0x25')](handleEntityNotFound(_0x4c78b4,null))[_0xd510('0x25')](respondWithResult(_0x4c78b4,null))['catch'](handleError(_0x4c78b4,null));};exports[_0xd510('0x4a')]=function(_0x520cd4,_0x570162){return db[_0xd510('0x30')]['create'](_0x520cd4['body'],{})[_0xd510('0x25')](function(_0x3b8e2f){var _0x3bf009=_0x520cd4[_0xd510('0x4b')][_0xd510('0x27')]({'plain':!![]});if(!_0x3bf009)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3bf009['role']==='user'){var _0xabf4b6=_0x3b8e2f[_0xd510('0x27')]({'plain':!![]});var _0x57a837=_0xd510('0x28');return db[_0xd510('0x4c')]['find']({'where':{'name':_0x57a837,'userProfileId':_0x3bf009['userProfileId']},'raw':!![]})[_0xd510('0x25')](function(_0x17041f){if(_0x17041f&&_0x17041f['autoAssociation']===0x0){return db[_0xd510('0x29')][_0xd510('0x4a')]({'name':_0xabf4b6['name'],'resourceId':_0xabf4b6['id'],'type':_0x17041f['name'],'sectionId':_0x17041f['id']},{})['then'](function(){return _0x3b8e2f;});}else{return _0x3b8e2f;}})[_0xd510('0x4d')](function(_0x52e9e2){logger[_0xd510('0x2b')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x52e9e2);throw _0x52e9e2;});}return _0x3b8e2f;})['then'](respondWithResult(_0x570162,0xc9))[_0xd510('0x4d')](handleError(_0x570162,null));};exports[_0xd510('0x4e')]=function(_0x148797,_0x5890ba){if(_0x148797[_0xd510('0x4f')]['id']){delete _0x148797[_0xd510('0x4f')]['id'];}return db[_0xd510('0x30')]['find']({'where':{'id':_0x148797[_0xd510('0x50')]['id']}})[_0xd510('0x25')](handleEntityNotFound(_0x5890ba,null))['then'](saveUpdates(_0x148797[_0xd510('0x4f')],null))[_0xd510('0x25')](respondWithResult(_0x5890ba,null))['catch'](handleError(_0x5890ba,null));};exports['destroy']=function(_0xda917b,_0xbd4871){return db[_0xd510('0x30')][_0xd510('0x49')]({'where':{'id':_0xda917b['params']['id']}})[_0xd510('0x25')](handleEntityNotFound(_0xbd4871,null))[_0xd510('0x25')](removeEntity(_0xbd4871,null))[_0xd510('0x4d')](handleError(_0xbd4871,null));};exports[_0xd510('0x51')]=function(_0x45c100,_0x29669e,_0x4e5fdf){if(_0x45c100[_0xd510('0x4f')]['id']){delete _0x45c100[_0xd510('0x4f')]['id'];}return db['Interval']['find']({'where':{'id':_0x45c100[_0xd510('0x50')]['id']}})[_0xd510('0x25')](handleEntityNotFound(_0x29669e,null))[_0xd510('0x25')](function(_0x2c157b){if(_0x2c157b){_0x45c100[_0xd510('0x4f')][_0xd510('0x52')]=_0x2c157b['id'];return db['Interval'][_0xd510('0x4a')](_0x45c100[_0xd510('0x4f')]);}})[_0xd510('0x25')](respondWithResult(_0x29669e,null))[_0xd510('0x4d')](handleError(_0x29669e,null));};exports['getIntervals']=function(_0x3fa85c,_0x564420,_0x367841){var _0x17a7b7={};var _0x4080a2={};var _0x251905;var _0x2ab391;return db[_0xd510('0x30')][_0xd510('0x53')]({'where':{'id':_0x3fa85c[_0xd510('0x50')]['id']}})[_0xd510('0x25')](handleEntityNotFound(_0x564420,null))[_0xd510('0x25')](function(_0x6526b9){if(_0x6526b9){_0x251905=_0x6526b9;_0x4080a2[_0xd510('0x37')]=_[_0xd510('0x34')](db[_0xd510('0x30')][_0xd510('0x47')]);_0x4080a2[_0xd510('0x33')]=_[_0xd510('0x34')](_0x3fa85c[_0xd510('0x33')]);_0x4080a2[_0xd510('0x35')]=_[_0xd510('0x36')](_0x4080a2[_0xd510('0x37')],_0x4080a2[_0xd510('0x33')]);_0x17a7b7['attributes']=_[_0xd510('0x36')](_0x4080a2[_0xd510('0x37')],qs[_0xd510('0x38')](_0x3fa85c[_0xd510('0x33')][_0xd510('0x38')]));_0x17a7b7[_0xd510('0x39')]=_0x17a7b7[_0xd510('0x39')][_0xd510('0x3a')]?_0x17a7b7[_0xd510('0x39')]:_0x4080a2[_0xd510('0x37')];_0x17a7b7[_0xd510('0x3c')]=qs['sort'](_0x3fa85c[_0xd510('0x33')][_0xd510('0x3d')]);_0x17a7b7[_0xd510('0x40')]=qs['filters'](_['pick'](_0x3fa85c['query'],_0x4080a2[_0xd510('0x35')]));if(_0x3fa85c[_0xd510('0x33')]['filter']){_0x17a7b7[_0xd510('0x40')]=_[_0xd510('0x48')](_0x17a7b7['where'],{'$or':_[_0xd510('0x2f')](_0x17a7b7[_0xd510('0x39')],function(_0x5e9afd){var _0x52f38b={};_0x52f38b[_0x5e9afd]={'$like':'%'+_0x3fa85c[_0xd510('0x33')]['filter']+'%'};return _0x52f38b;})});}_0x17a7b7=_[_0xd510('0x48')]({},_0x17a7b7,_0x3fa85c[_0xd510('0x42')]);return _0x251905[_0xd510('0x54')](_0x17a7b7);}})['then'](function(_0x2f817f){if(_0x2f817f){_0x2ab391=_0x2f817f[_0xd510('0x3a')];if(!_0x3fa85c[_0xd510('0x33')][_0xd510('0x55')](_0xd510('0x3b'))){_0x17a7b7['limit']=qs['limit'](_0x3fa85c[_0xd510('0x33')][_0xd510('0x1e')]);_0x17a7b7[_0xd510('0x21')]=qs[_0xd510('0x21')](_0x3fa85c[_0xd510('0x33')][_0xd510('0x21')]);}return _0x251905[_0xd510('0x54')](_0x17a7b7);}})['then'](function(_0x3d08da){if(_0x3d08da){return _0x3d08da?{'count':_0x2ab391,'rows':_0x3d08da}:null;}})[_0xd510('0x25')](respondWithResult(_0x564420,null))['catch'](handleError(_0x564420,null));};exports[_0xd510('0x56')]=function(_0x1117fa,_0x159f0f,_0x8cd393){return db['Interval']['findOne']({'where':{'id':_0x1117fa[_0xd510('0x50')]['id']}})[_0xd510('0x25')](handleEntityNotFound(_0x159f0f,null))[_0xd510('0x25')](function(_0x11573c){if(_0x11573c){return db[_0xd510('0x57')][_0xd510('0x58')](function(_0x1870cd){return db['Interval']['destroy']({'where':{'IntervalId':_0x1117fa[_0xd510('0x50')]['id']},'transaction':_0x1870cd})[_0xd510('0x25')](function(_0x94db52){var _0x4a71ff=_['map'](_0x1117fa[_0xd510('0x4f')],function(_0x2dfa25){delete _0x2dfa25['id'];_0x2dfa25[_0xd510('0x52')]=_0x1117fa[_0xd510('0x50')]['id'];return _0x2dfa25;});return db[_0xd510('0x30')][_0xd510('0x59')](_0x4a71ff,{'transaction':_0x1870cd});});})[_0xd510('0x25')](function(){return db[_0xd510('0x30')][_0xd510('0x45')]({'where':{'IntervalId':_0x1117fa['params']['id']}});});}})['then'](respondWithResult(_0x159f0f,null))['catch'](handleError(_0x159f0f,null));};
\ No newline at end of file
+var _0x1058=['keys','query','intersection','fields','attributes','length','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','Interval','includeAll','include','findAll','rows','catch','show','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','params','addInterval','IntervalId','getIntervals','findOne','rawAttributes','hasOwnProperty','addIntervals','sequelize','transaction','bulkCreate','eml-format','rimraf','request-promise','moment','path','ejs','fs-extra','lodash','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','../../components/extensions/rewrite','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','destroy','then','get','Intervals','UserProfileResource','stack','name','send','map','fieldName','type','key','model'];(function(_0x21c7c5,_0x595075){var _0x42d77c=function(_0x5e3cdf){while(--_0x5e3cdf){_0x21c7c5['push'](_0x21c7c5['shift']());}};_0x42d77c(++_0x595075);}(_0x1058,0x148));var _0x8105=function(_0x1a2dd6,_0x4c8b16){_0x1a2dd6=_0x1a2dd6-0x0;var _0x30953d=_0x1058[_0x1a2dd6];return _0x30953d;};'use strict';var emlformat=require(_0x8105('0x0'));var rimraf=require(_0x8105('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x8105('0x2'));var moment=require(_0x8105('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x8105('0x4'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8105('0x5'));var fs=require('fs');var fs_extra=require(_0x8105('0x6'));var _=require(_0x8105('0x7'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x8105('0x8'));var deskjs=require(_0x8105('0x9'));var toCsv=require(_0x8105('0xa'));var querystring=require(_0x8105('0xb'));var Papa=require(_0x8105('0xc'));var Redis=require(_0x8105('0xd'));var authService=require(_0x8105('0xe'));var qs=require(_0x8105('0xf'));var as=require(_0x8105('0x10'));var hardwareService=require(_0x8105('0x11'));var logger=require('../../config/logger')(_0x8105('0x12'));var utils=require(_0x8105('0x13'));var config=require(_0x8105('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x8105('0x15'))['db'];var extensions=require(_0x8105('0x16'));function respondWithStatusCode(_0x14534f,_0x23ea87){_0x23ea87=_0x23ea87||0xcc;return function(_0x3fd627){if(_0x3fd627){return _0x14534f[_0x8105('0x17')](_0x23ea87);}return _0x14534f[_0x8105('0x18')](_0x23ea87)[_0x8105('0x19')]();};}function respondWithResult(_0x5536b7,_0xfe0de6){_0xfe0de6=_0xfe0de6||0xc8;return function(_0x30f43c){if(_0x30f43c){return _0x5536b7[_0x8105('0x18')](_0xfe0de6)[_0x8105('0x1a')](_0x30f43c);}};}function respondWithFilteredResult(_0x1e5889,_0x403bdc){return function(_0x122882){if(_0x122882){var _0x156c54=typeof _0x403bdc['offset']===_0x8105('0x1b')&&typeof _0x403bdc[_0x8105('0x1c')]===_0x8105('0x1b');var _0x475760=_0x122882[_0x8105('0x1d')];var _0x1c98ed=_0x156c54?0x0:_0x403bdc[_0x8105('0x1e')];var _0x3006e3=_0x156c54?_0x122882[_0x8105('0x1d')]:_0x403bdc['offset']+_0x403bdc[_0x8105('0x1c')];var _0x3e1a16;if(_0x3006e3>=_0x475760){_0x3006e3=_0x475760;_0x3e1a16=0xc8;}else{_0x3e1a16=0xce;}_0x1e5889[_0x8105('0x18')](_0x3e1a16);return _0x1e5889[_0x8105('0x1f')](_0x8105('0x20'),_0x1c98ed+'-'+_0x3006e3+'/'+_0x475760)[_0x8105('0x1a')](_0x122882);}return null;};}function patchUpdates(_0x1b8bf9){return function(_0x405c39){try{jsonpatch[_0x8105('0x21')](_0x405c39,_0x1b8bf9,!![]);}catch(_0x227746){return BPromise['reject'](_0x227746);}return _0x405c39[_0x8105('0x22')]();};}function saveUpdates(_0x2219fa,_0xa93ddb){return function(_0x20ec77){if(_0x20ec77){return _0x20ec77['update'](_0x2219fa)['then'](function(_0x4b9e0e){return _0x4b9e0e;});}return null;};}function removeEntity(_0x47f1b5,_0x66d606){return function(_0x213457){if(_0x213457){return _0x213457[_0x8105('0x23')]()[_0x8105('0x24')](function(){var _0x36b049=_0x213457[_0x8105('0x25')]({'plain':!![]});var _0x534bf0=_0x8105('0x26');return db[_0x8105('0x27')]['destroy']({'where':{'type':_0x534bf0,'resourceId':_0x36b049['id']}})['then'](function(){return _0x213457;});})[_0x8105('0x24')](function(){_0x47f1b5[_0x8105('0x18')](0xcc)[_0x8105('0x19')]();});}};}function handleEntityNotFound(_0x33823a,_0x4c5a16){return function(_0x3272c9){if(!_0x3272c9){_0x33823a[_0x8105('0x17')](0x194);}return _0x3272c9;};}function handleError(_0xa5c881,_0x1a14b8){_0x1a14b8=_0x1a14b8||0x1f4;return function(_0x9b92b1){logger['error'](_0x9b92b1[_0x8105('0x28')]);if(_0x9b92b1[_0x8105('0x29')]){delete _0x9b92b1[_0x8105('0x29')];}_0xa5c881[_0x8105('0x18')](_0x1a14b8)[_0x8105('0x2a')](_0x9b92b1);};}exports['index']=function(_0x57e96a,_0xab364b){var _0x34a805={},_0x39bf1b={},_0x132a42={'count':0x0,'rows':[]};var _0x56459a=_[_0x8105('0x2b')](db['Interval']['rawAttributes'],function(_0x346c85){return{'name':_0x346c85[_0x8105('0x2c')],'type':_0x346c85[_0x8105('0x2d')][_0x8105('0x2e')]};});_0x39bf1b[_0x8105('0x2f')]=_[_0x8105('0x2b')](_0x56459a,_0x8105('0x29'));_0x39bf1b['query']=_[_0x8105('0x30')](_0x57e96a[_0x8105('0x31')]);_0x39bf1b['filters']=_[_0x8105('0x32')](_0x39bf1b[_0x8105('0x2f')],_0x39bf1b[_0x8105('0x31')]);_0x34a805['attributes']=_[_0x8105('0x32')](_0x39bf1b['model'],qs[_0x8105('0x33')](_0x57e96a['query'][_0x8105('0x33')]));_0x34a805[_0x8105('0x34')]=_0x34a805['attributes'][_0x8105('0x35')]?_0x34a805[_0x8105('0x34')]:_0x39bf1b['model'];if(!_0x57e96a[_0x8105('0x31')]['hasOwnProperty'](_0x8105('0x36'))){_0x34a805[_0x8105('0x1c')]=qs[_0x8105('0x1c')](_0x57e96a[_0x8105('0x31')][_0x8105('0x1c')]);_0x34a805[_0x8105('0x1e')]=qs[_0x8105('0x1e')](_0x57e96a[_0x8105('0x31')]['offset']);}_0x34a805[_0x8105('0x37')]=qs[_0x8105('0x38')](_0x57e96a[_0x8105('0x31')][_0x8105('0x38')]);_0x34a805[_0x8105('0x39')]=qs[_0x8105('0x3a')](_[_0x8105('0x3b')](_0x57e96a['query'],_0x39bf1b[_0x8105('0x3a')]),_0x56459a);if(_0x57e96a[_0x8105('0x31')][_0x8105('0x3c')]){_0x34a805['where']=_['merge'](_0x34a805[_0x8105('0x39')],{'$or':_[_0x8105('0x2b')](_0x56459a,function(_0x147c94){if(_0x147c94[_0x8105('0x2d')]!==_0x8105('0x3d')){var _0x326f09={};_0x326f09[_0x147c94[_0x8105('0x29')]]={'$like':'%'+_0x57e96a[_0x8105('0x31')]['filter']+'%'};return _0x326f09;}})});}_0x34a805=_[_0x8105('0x3e')]({},_0x34a805,_0x57e96a[_0x8105('0x3f')]);var _0x4aa821={'where':_0x34a805[_0x8105('0x39')]};return db[_0x8105('0x40')][_0x8105('0x1d')](_0x4aa821)[_0x8105('0x24')](function(_0x3ba070){_0x132a42[_0x8105('0x1d')]=_0x3ba070;if(_0x57e96a[_0x8105('0x31')][_0x8105('0x41')]){_0x34a805[_0x8105('0x42')]=[{'all':!![]}];}return db[_0x8105('0x40')][_0x8105('0x43')](_0x34a805);})[_0x8105('0x24')](function(_0x67471c){_0x132a42[_0x8105('0x44')]=_0x67471c;return _0x132a42;})['then'](respondWithFilteredResult(_0xab364b,_0x34a805))[_0x8105('0x45')](handleError(_0xab364b,null));};exports[_0x8105('0x46')]=function(_0x4f6346,_0x51a7ed){var _0x3863e1={'raw':!![],'where':{'id':_0x4f6346['params']['id']}},_0x2d11df={};_0x2d11df['model']=_[_0x8105('0x30')](db['Interval']['rawAttributes']);_0x2d11df[_0x8105('0x31')]=_[_0x8105('0x30')](_0x4f6346['query']);_0x2d11df[_0x8105('0x3a')]=_[_0x8105('0x32')](_0x2d11df[_0x8105('0x2f')],_0x2d11df['query']);_0x3863e1[_0x8105('0x34')]=_['intersection'](_0x2d11df[_0x8105('0x2f')],qs[_0x8105('0x33')](_0x4f6346['query'][_0x8105('0x33')]));_0x3863e1[_0x8105('0x34')]=_0x3863e1[_0x8105('0x34')][_0x8105('0x35')]?_0x3863e1[_0x8105('0x34')]:_0x2d11df['model'];if(_0x4f6346[_0x8105('0x31')][_0x8105('0x41')]){_0x3863e1[_0x8105('0x42')]=[{'all':!![]}];}_0x3863e1=_[_0x8105('0x3e')]({},_0x3863e1,_0x4f6346[_0x8105('0x3f')]);return db[_0x8105('0x40')][_0x8105('0x47')](_0x3863e1)['then'](handleEntityNotFound(_0x51a7ed,null))[_0x8105('0x24')](respondWithResult(_0x51a7ed,null))['catch'](handleError(_0x51a7ed,null));};exports[_0x8105('0x48')]=function(_0x5ce2c1,_0x40a487){return db[_0x8105('0x40')][_0x8105('0x48')](_0x5ce2c1[_0x8105('0x49')],{})[_0x8105('0x24')](function(_0x47a85b){var _0x1e9040=_0x5ce2c1['user'][_0x8105('0x25')]({'plain':!![]});if(!_0x1e9040)throw new Error(_0x8105('0x4a'));if(_0x1e9040[_0x8105('0x4b')]===_0x8105('0x4c')){var _0x5ccd99=_0x47a85b[_0x8105('0x25')]({'plain':!![]});var _0x484deb=_0x8105('0x26');return db[_0x8105('0x4d')]['find']({'where':{'name':_0x484deb,'userProfileId':_0x1e9040[_0x8105('0x4e')]},'raw':!![]})[_0x8105('0x24')](function(_0x2573a4){if(_0x2573a4&&_0x2573a4[_0x8105('0x4f')]===0x0){return db[_0x8105('0x27')][_0x8105('0x48')]({'name':_0x5ccd99[_0x8105('0x29')],'resourceId':_0x5ccd99['id'],'type':_0x2573a4[_0x8105('0x29')],'sectionId':_0x2573a4['id']},{})[_0x8105('0x24')](function(){return _0x47a85b;});}else{return _0x47a85b;}})['catch'](function(_0xcc2ed1){logger[_0x8105('0x50')](_0x8105('0x51'),_0xcc2ed1);throw _0xcc2ed1;});}return _0x47a85b;})[_0x8105('0x24')](respondWithResult(_0x40a487,0xc9))['catch'](handleError(_0x40a487,null));};exports[_0x8105('0x52')]=function(_0x1acb08,_0xe5b353){if(_0x1acb08[_0x8105('0x49')]['id']){delete _0x1acb08[_0x8105('0x49')]['id'];}return db[_0x8105('0x40')][_0x8105('0x47')]({'where':{'id':_0x1acb08[_0x8105('0x53')]['id']}})[_0x8105('0x24')](handleEntityNotFound(_0xe5b353,null))[_0x8105('0x24')](saveUpdates(_0x1acb08['body'],null))['then'](respondWithResult(_0xe5b353,null))[_0x8105('0x45')](handleError(_0xe5b353,null));};exports['destroy']=function(_0x42cb65,_0xacdba0){return db[_0x8105('0x40')][_0x8105('0x47')]({'where':{'id':_0x42cb65[_0x8105('0x53')]['id']}})['then'](handleEntityNotFound(_0xacdba0,null))[_0x8105('0x24')](removeEntity(_0xacdba0,null))[_0x8105('0x45')](handleError(_0xacdba0,null));};exports[_0x8105('0x54')]=function(_0x208aa2,_0x44b2a0,_0x1c4008){if(_0x208aa2['body']['id']){delete _0x208aa2['body']['id'];}return db[_0x8105('0x40')][_0x8105('0x47')]({'where':{'id':_0x208aa2[_0x8105('0x53')]['id']}})[_0x8105('0x24')](handleEntityNotFound(_0x44b2a0,null))[_0x8105('0x24')](function(_0x475f58){if(_0x475f58){_0x208aa2[_0x8105('0x49')][_0x8105('0x55')]=_0x475f58['id'];return db['Interval'][_0x8105('0x48')](_0x208aa2[_0x8105('0x49')]);}})[_0x8105('0x24')](respondWithResult(_0x44b2a0,null))[_0x8105('0x45')](handleError(_0x44b2a0,null));};exports[_0x8105('0x56')]=function(_0x298791,_0x5b4c06,_0x53a493){var _0x2aac8f={};var _0x115dae={};var _0x1fdb90;var _0x318333;return db[_0x8105('0x40')][_0x8105('0x57')]({'where':{'id':_0x298791['params']['id']}})[_0x8105('0x24')](handleEntityNotFound(_0x5b4c06,null))[_0x8105('0x24')](function(_0x4a6c43){if(_0x4a6c43){_0x1fdb90=_0x4a6c43;_0x115dae['model']=_[_0x8105('0x30')](db[_0x8105('0x40')][_0x8105('0x58')]);_0x115dae[_0x8105('0x31')]=_['keys'](_0x298791[_0x8105('0x31')]);_0x115dae[_0x8105('0x3a')]=_[_0x8105('0x32')](_0x115dae[_0x8105('0x2f')],_0x115dae['query']);_0x2aac8f[_0x8105('0x34')]=_['intersection'](_0x115dae[_0x8105('0x2f')],qs[_0x8105('0x33')](_0x298791[_0x8105('0x31')][_0x8105('0x33')]));_0x2aac8f['attributes']=_0x2aac8f[_0x8105('0x34')][_0x8105('0x35')]?_0x2aac8f[_0x8105('0x34')]:_0x115dae[_0x8105('0x2f')];_0x2aac8f[_0x8105('0x37')]=qs[_0x8105('0x38')](_0x298791[_0x8105('0x31')][_0x8105('0x38')]);_0x2aac8f['where']=qs[_0x8105('0x3a')](_[_0x8105('0x3b')](_0x298791[_0x8105('0x31')],_0x115dae[_0x8105('0x3a')]));if(_0x298791[_0x8105('0x31')][_0x8105('0x3c')]){_0x2aac8f[_0x8105('0x39')]=_[_0x8105('0x3e')](_0x2aac8f[_0x8105('0x39')],{'$or':_[_0x8105('0x2b')](_0x2aac8f[_0x8105('0x34')],function(_0x22bdb4){var _0x376181={};_0x376181[_0x22bdb4]={'$like':'%'+_0x298791['query'][_0x8105('0x3c')]+'%'};return _0x376181;})});}_0x2aac8f=_[_0x8105('0x3e')]({},_0x2aac8f,_0x298791[_0x8105('0x3f')]);return _0x1fdb90['getIntervals'](_0x2aac8f);}})['then'](function(_0x2d9553){if(_0x2d9553){_0x318333=_0x2d9553[_0x8105('0x35')];if(!_0x298791[_0x8105('0x31')][_0x8105('0x59')](_0x8105('0x36'))){_0x2aac8f[_0x8105('0x1c')]=qs[_0x8105('0x1c')](_0x298791['query'][_0x8105('0x1c')]);_0x2aac8f[_0x8105('0x1e')]=qs['offset'](_0x298791[_0x8105('0x31')][_0x8105('0x1e')]);}return _0x1fdb90[_0x8105('0x56')](_0x2aac8f);}})[_0x8105('0x24')](function(_0x361ba4){if(_0x361ba4){return _0x361ba4?{'count':_0x318333,'rows':_0x361ba4}:null;}})[_0x8105('0x24')](respondWithResult(_0x5b4c06,null))['catch'](handleError(_0x5b4c06,null));};exports[_0x8105('0x5a')]=function(_0x1fb6cc,_0x51a4ef,_0x454456){return db[_0x8105('0x40')]['findOne']({'where':{'id':_0x1fb6cc[_0x8105('0x53')]['id']}})[_0x8105('0x24')](handleEntityNotFound(_0x51a4ef,null))[_0x8105('0x24')](function(_0x721e08){if(_0x721e08){return db[_0x8105('0x5b')][_0x8105('0x5c')](function(_0x498428){return db[_0x8105('0x40')][_0x8105('0x23')]({'where':{'IntervalId':_0x1fb6cc['params']['id']},'transaction':_0x498428})[_0x8105('0x24')](function(_0x20ac2a){var _0x580234=_[_0x8105('0x2b')](_0x1fb6cc['body'],function(_0x406051){delete _0x406051['id'];_0x406051[_0x8105('0x55')]=_0x1fb6cc['params']['id'];return _0x406051;});return db['Interval'][_0x8105('0x5d')](_0x580234,{'transaction':_0x498428});});})[_0x8105('0x24')](function(){return db[_0x8105('0x40')][_0x8105('0x43')]({'where':{'IntervalId':_0x1fb6cc[_0x8105('0x53')]['id']}});});}})['then'](respondWithResult(_0x51a4ef,null))[_0x8105('0x45')](handleError(_0x51a4ef,null));};
\ No newline at end of file
index 7c06883..9148401 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0867=['./interval.attributes','exports','tools_intervals','rewrite','lodash','util','bluebird','request-promise','path','rimraf'];(function(_0x55f8b4,_0x43f30d){var _0x2475f9=function(_0xdd6f4a){while(--_0xdd6f4a){_0x55f8b4['push'](_0x55f8b4['shift']());}};_0x2475f9(++_0x43f30d);}(_0x0867,0x72));var _0x7086=function(_0x55166b,_0x5b5c0b){_0x55166b=_0x55166b-0x0;var _0x56b7f7=_0x0867[_0x55166b];return _0x56b7f7;};'use strict';var _=require(_0x7086('0x0'));var util=require(_0x7086('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x7086('0x2'));var rp=require(_0x7086('0x3'));var fs=require('fs');var path=require(_0x7086('0x4'));var rimraf=require(_0x7086('0x5'));var config=require('../../config/environment');var attributes=require(_0x7086('0x6'));var extensions=require('../../components/extensions/rewrite');module[_0x7086('0x7')]=function(_0x28aaf7,_0x46ed84){return _0x28aaf7['define']('Interval',attributes,{'tableName':_0x7086('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x4d38e8,_0x4bd927){extensions['rewrite'](_0x28aaf7,_0x4d38e8);},'afterBulkCreate':function(_0x565f06,_0x3d8b39,_0x2f72d2){_0x2f72d2();extensions[_0x7086('0x9')](_0x28aaf7,_0x565f06[0x0]);},'afterUpdate':function(_0x215b90,_0x205ecb){extensions['rewrite'](_0x28aaf7,_0x215b90);},'afterDestroy':function(_0x2b11ce,_0x32e756){extensions[_0x7086('0x9')](_0x28aaf7,_0x2b11ce);}}});};
\ No newline at end of file
+var _0x06f7=['define','Interval','rewrite','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./interval.attributes','../../components/extensions/rewrite','exports'];(function(_0x38eb23,_0x196e8b){var _0x48506a=function(_0x36edb0){while(--_0x36edb0){_0x38eb23['push'](_0x38eb23['shift']());}};_0x48506a(++_0x196e8b);}(_0x06f7,0x73));var _0x706f=function(_0x5a26db,_0x2c5ccd){_0x5a26db=_0x5a26db-0x0;var _0x4619dd=_0x06f7[_0x5a26db];return _0x4619dd;};'use strict';var _=require(_0x706f('0x0'));var util=require(_0x706f('0x1'));var logger=require(_0x706f('0x2'))(_0x706f('0x3'));var moment=require(_0x706f('0x4'));var BPromise=require(_0x706f('0x5'));var rp=require(_0x706f('0x6'));var fs=require('fs');var path=require(_0x706f('0x7'));var rimraf=require(_0x706f('0x8'));var config=require(_0x706f('0x9'));var attributes=require(_0x706f('0xa'));var extensions=require(_0x706f('0xb'));module[_0x706f('0xc')]=function(_0x2ee647,_0x9a488f){return _0x2ee647[_0x706f('0xd')](_0x706f('0xe'),attributes,{'tableName':'tools_intervals','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x3f5c82,_0x526c20){extensions[_0x706f('0xf')](_0x2ee647,_0x3f5c82);},'afterBulkCreate':function(_0x24385c,_0x166f76,_0x1a7357){_0x1a7357();extensions[_0x706f('0xf')](_0x2ee647,_0x24385c[0x0]);},'afterUpdate':function(_0x57e1a0,_0x23d4ce){extensions[_0x706f('0xf')](_0x2ee647,_0x57e1a0);},'afterDestroy':function(_0xa99d,_0x13cf2b){extensions[_0x706f('0xf')](_0x2ee647,_0xa99d);}}});};
\ No newline at end of file
index 13788bb..0164a96 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(_0x467cb0,_0x303070){var _0x2153f7=function(_0x51775a){while(--_0x51775a){_0x467cb0['push'](_0x467cb0['shift']());}};_0x2153f7(++_0x303070);}(_0xa9e0,0x123));var _0x0a9e=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0xa9e0[_0x481bf7];return _0x461787;};'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(_0x582d0b,_0x28f609){var _0x2e93e1=function(_0xb6a81c){while(--_0xb6a81c){_0x582d0b['push'](_0x582d0b['shift']());}};_0x2e93e1(++_0x28f609);}(_0xa9e0,0x123));var _0x0a9e=function(_0x220dbb,_0x99328d){_0x220dbb=_0x220dbb-0x0;var _0x2b77de=_0xa9e0[_0x220dbb];return _0x2b77de;};'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 fd83f5e..cfa628b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb5=['post','isAuthenticated','exports','Router','./jira.controller'];(function(_0x103ffe,_0x54e511){var _0x5490ae=function(_0x375b88){while(--_0x375b88){_0x103ffe['push'](_0x103ffe['shift']());}};_0x5490ae(++_0x54e511);}(_0xadb5,0xad));var _0x5adb=function(_0x24975a,_0x5ae690){_0x24975a=_0x24975a-0x0;var _0x3a1160=_0xadb5[_0x24975a];return _0x3a1160;};'use strict';var express=require('express');var router=express[_0x5adb('0x0')]();var auth=require('../../components/auth/service');var controller=require(_0x5adb('0x1'));router[_0x5adb('0x2')]('/',auth[_0x5adb('0x3')](),controller['send']);module[_0x5adb('0x4')]=router;
\ No newline at end of file
+var _0x5f66=['send','exports','Router','./jira.controller','post','isAuthenticated'];(function(_0x277107,_0x3420dc){var _0x1da046=function(_0x47122d){while(--_0x47122d){_0x277107['push'](_0x277107['shift']());}};_0x1da046(++_0x3420dc);}(_0x5f66,0x1a0));var _0x65f6=function(_0x126558,_0x143c9a){_0x126558=_0x126558-0x0;var _0x1f6d14=_0x5f66[_0x126558];return _0x1f6d14;};'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
index e93dc39..fa738fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7265=['setEncoding','utf8','data','status','error','Error\x20during\x20license\x20request.\x20Please\x20contact\x20our\x20license\x20team\x20at\x20license@xcally.com\x20with\x20your\x20request','api.jira','write','end','send','body','headers','connection','remoteAddress','https','../../config/logger','api','support','3eAmWpBVP0','key','MOTGUI','summary','\x20from\x20','description','stringify','Bug','fields','email','oldToken','customfield_11502','newToken','customfield_11503','name','reason','customfield_10102','track.xcallymotion.com','/rest/api/2/issue','POST','toString','base64','request'];(function(_0x1b6f02,_0x21c483){var _0x1753b9=function(_0x52f80d){while(--_0x52f80d){_0x1b6f02['push'](_0x1b6f02['shift']());}};_0x1753b9(++_0x21c483);}(_0x7265,0x104));var _0x5726=function(_0x49db42,_0x3350d6){_0x49db42=_0x49db42-0x0;var _0x4a10a4=_0x7265[_0x49db42];return _0x4a10a4;};'use strict';var BPromise=require('bluebird');var https=require(_0x5726('0x0'));var logger=require(_0x5726('0x1'))(_0x5726('0x2'));var USERNAME=_0x5726('0x3');var PASSWORD=_0x5726('0x4');function openIssue(_0x4b3cab,_0x42c6ae){var _0x9c5eca={'fields':{'project':{'key':_0x4b3cab[_0x5726('0x5')]||_0x5726('0x6')},'summary':(_0x4b3cab[_0x5726('0x7')]||'Report')+_0x5726('0x8')+_0x4b3cab['ip'],'description':_0x4b3cab[_0x5726('0x9')]||JSON[_0x5726('0xa')](_0x4b3cab),'issuetype':{'name':_0x4b3cab['issuetype']||_0x5726('0xb')}}};_0x9c5eca[_0x5726('0xc')]['customfield_11500']=_0x4b3cab[_0x5726('0xd')];_0x9c5eca['fields']['customfield_11501']=_0x4b3cab[_0x5726('0xe')];_0x9c5eca['fields'][_0x5726('0xf')]=_0x4b3cab[_0x5726('0x10')];_0x9c5eca[_0x5726('0xc')][_0x5726('0x11')]=_0x4b3cab[_0x5726('0x12')];_0x9c5eca[_0x5726('0xc')]['customfield_11504']=_0x4b3cab[_0x5726('0x13')];_0x9c5eca[_0x5726('0xc')][_0x5726('0x14')]=_0x4b3cab['ip'];var _0x2c8558={'host':_0x5726('0x15'),'port':0x1bb,'path':_0x5726('0x16'),'method':_0x5726('0x17'),'timeout':0x4e20,'headers':{'Content-Type':'application/json','Authorization':'Basic\x20'+new Buffer(USERNAME+':'+PASSWORD)[_0x5726('0x18')](_0x5726('0x19'))}};var _0x1b30fb=JSON[_0x5726('0xa')](_0x9c5eca);var _0xe823cd=https[_0x5726('0x1a')](_0x2c8558,function(_0x3bf8f5){_0x3bf8f5[_0x5726('0x1b')](_0x5726('0x1c'));var _0x53361a='';_0x3bf8f5['on'](_0x5726('0x1d'),function(_0x4fb4fa){_0x53361a+=_0x4fb4fa;});_0x3bf8f5['on']('end',function(){if(_0x42c6ae){return _0x42c6ae[_0x5726('0x1e')](_0x3bf8f5['statusCode'])['json'](JSON['parse'](_0x53361a));}});});_0xe823cd['on'](_0x5726('0x1f'),function(_0x2268e3){if(_0x42c6ae){return _0x42c6ae[_0x5726('0x1e')](0x1f4)['json']({'errors':[{'message':_0x5726('0x20'),'type':_0x5726('0x21')}]});}});_0xe823cd[_0x5726('0x22')](_0x1b30fb);_0xe823cd[_0x5726('0x23')]();}exports['openIssue']=openIssue;exports[_0x5726('0x24')]=function(_0x3e607e,_0x1d4731){_0x3e607e[_0x5726('0x25')]['ip']=_0x3e607e[_0x5726('0x26')]['x-forwarded-for']||_0x3e607e[_0x5726('0x27')][_0x5726('0x28')]||_0x3e607e['socket']['remoteAddress']||_0x3e607e[_0x5726('0x27')]['socket']['remoteAddress'];return openIssue(_0x3e607e[_0x5726('0x25')],_0x1d4731);};
\ No newline at end of file
+var _0xf38c=['issuetype','Bug','customfield_11500','email','fields','customfield_11501','oldToken','customfield_11502','customfield_11503','customfield_11504','customfield_10102','POST','application/json','Basic\x20','toString','stringify','utf8','data','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','headers','x-forwarded-for','connection','socket','remoteAddress','bluebird','https','../../config/logger','support','3eAmWpBVP0','key','summary','Report','description'];(function(_0x9f23f3,_0x1cee28){var _0x258cce=function(_0x453b0e){while(--_0x453b0e){_0x9f23f3['push'](_0x9f23f3['shift']());}};_0x258cce(++_0x1cee28);}(_0xf38c,0x1e3));var _0xcf38=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xf38c[_0x20a584];return _0x4b41a8;};'use strict';var BPromise=require(_0xcf38('0x0'));var https=require(_0xcf38('0x1'));var logger=require(_0xcf38('0x2'))('api');var USERNAME=_0xcf38('0x3');var PASSWORD=_0xcf38('0x4');function openIssue(_0x542885,_0x319bbb){var _0x64ce35={'fields':{'project':{'key':_0x542885[_0xcf38('0x5')]||'MOTGUI'},'summary':(_0x542885[_0xcf38('0x6')]||_0xcf38('0x7'))+'\x20from\x20'+_0x542885['ip'],'description':_0x542885[_0xcf38('0x8')]||JSON['stringify'](_0x542885),'issuetype':{'name':_0x542885[_0xcf38('0x9')]||_0xcf38('0xa')}}};_0x64ce35['fields'][_0xcf38('0xb')]=_0x542885[_0xcf38('0xc')];_0x64ce35[_0xcf38('0xd')][_0xcf38('0xe')]=_0x542885[_0xcf38('0xf')];_0x64ce35[_0xcf38('0xd')][_0xcf38('0x10')]=_0x542885['newToken'];_0x64ce35[_0xcf38('0xd')][_0xcf38('0x11')]=_0x542885['name'];_0x64ce35[_0xcf38('0xd')][_0xcf38('0x12')]=_0x542885['reason'];_0x64ce35[_0xcf38('0xd')][_0xcf38('0x13')]=_0x542885['ip'];var _0x596a8b={'host':'track.xcallymotion.com','port':0x1bb,'path':'/rest/api/2/issue','method':_0xcf38('0x14'),'timeout':0x4e20,'headers':{'Content-Type':_0xcf38('0x15'),'Authorization':_0xcf38('0x16')+new Buffer(USERNAME+':'+PASSWORD)[_0xcf38('0x17')]('base64')}};var _0x453367=JSON[_0xcf38('0x18')](_0x64ce35);var _0x538a0c=https['request'](_0x596a8b,function(_0x33177e){_0x33177e['setEncoding'](_0xcf38('0x19'));var _0x1985e0='';_0x33177e['on'](_0xcf38('0x1a'),function(_0x2a7a8d){_0x1985e0+=_0x2a7a8d;});_0x33177e['on']('end',function(){if(_0x319bbb){return _0x319bbb['status'](_0x33177e[_0xcf38('0x1b')])['json'](JSON[_0xcf38('0x1c')](_0x1985e0));}});});_0x538a0c['on'](_0xcf38('0x1d'),function(_0x4f3161){if(_0x319bbb){return _0x319bbb[_0xcf38('0x1e')](0x1f4)['json']({'errors':[{'message':_0xcf38('0x1f'),'type':_0xcf38('0x20')}]});}});_0x538a0c[_0xcf38('0x21')](_0x453367);_0x538a0c['end']();}exports['openIssue']=openIssue;exports[_0xcf38('0x22')]=function(_0x47828e,_0x3ec794){_0x47828e[_0xcf38('0x23')]['ip']=_0x47828e[_0xcf38('0x24')][_0xcf38('0x25')]||_0x47828e[_0xcf38('0x26')]['remoteAddress']||_0x47828e[_0xcf38('0x27')][_0xcf38('0x28')]||_0x47828e[_0xcf38('0x26')]['socket'][_0xcf38('0x28')];return openIssue(_0x47828e[_0xcf38('0x23')],_0x3ec794);};
\ No newline at end of file
index 886567e..5e0ee4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a9a=['Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','create','update','destroy','util','connect-timeout','express'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x0a9a,0x183));var _0xa0a9=function(_0x28403d,_0x4c95ba){_0x28403d=_0x28403d-0x0;var _0xd20f03=_0x0a9a[_0x28403d];return _0xd20f03;};'use strict';var multer=require('multer');var util=require(_0xa0a9('0x0'));var path=require('path');var timeout=require(_0xa0a9('0x1'));var express=require(_0xa0a9('0x2'));var router=express[_0xa0a9('0x3')]();var fs_extra=require(_0xa0a9('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xa0a9('0x5'));var config=require(_0xa0a9('0x6'));var controller=require('./jscriptyAnswerReport.controller');router[_0xa0a9('0x7')]('/',auth[_0xa0a9('0x8')](),controller[_0xa0a9('0x9')]);router[_0xa0a9('0x7')]('/describe',auth[_0xa0a9('0x8')](),controller['describe']);router[_0xa0a9('0x7')](_0xa0a9('0xa'),auth[_0xa0a9('0x8')](),controller[_0xa0a9('0xb')]);router['post']('/',auth[_0xa0a9('0x8')](),controller[_0xa0a9('0xc')]);router['put']('/:id',auth[_0xa0a9('0x8')](),controller[_0xa0a9('0xd')]);router['delete'](_0xa0a9('0xa'),auth['isAuthenticated'](),controller[_0xa0a9('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x5b02=['destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/interaction/service','../../config/environment','./jscriptyAnswerReport.controller','get','isAuthenticated','/describe','describe','show','post','create','put','/:id','update','delete'];(function(_0x4509cf,_0x3ddcc4){var _0x364f44=function(_0x1ecfea){while(--_0x1ecfea){_0x4509cf['push'](_0x4509cf['shift']());}};_0x364f44(++_0x3ddcc4);}(_0x5b02,0xe9));var _0x25b0=function(_0x11d3ad,_0x466b29){_0x11d3ad=_0x11d3ad-0x0;var _0x2bcdd3=_0x5b02[_0x11d3ad];return _0x2bcdd3;};'use strict';var multer=require(_0x25b0('0x0'));var util=require(_0x25b0('0x1'));var path=require(_0x25b0('0x2'));var timeout=require(_0x25b0('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x25b0('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x25b0('0x5'));var config=require(_0x25b0('0x6'));var controller=require(_0x25b0('0x7'));router[_0x25b0('0x8')]('/',auth[_0x25b0('0x9')](),controller['index']);router[_0x25b0('0x8')](_0x25b0('0xa'),auth['isAuthenticated'](),controller[_0x25b0('0xb')]);router['get']('/:id',auth[_0x25b0('0x9')](),controller[_0x25b0('0xc')]);router[_0x25b0('0xd')]('/',auth['isAuthenticated'](),controller[_0x25b0('0xe')]);router[_0x25b0('0xf')](_0x25b0('0x10'),auth[_0x25b0('0x9')](),controller[_0x25b0('0x11')]);router[_0x25b0('0x12')](_0x25b0('0x10'),auth[_0x25b0('0x9')](),controller[_0x25b0('0x13')]);module[_0x25b0('0x14')]=router;
\ No newline at end of file
index 8d84f20..7cea5b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['long','STRING','sequelize','exports','TEXT'];(function(_0x3b0731,_0xcf9925){var _0x4204d7=function(_0x635ac5){while(--_0x635ac5){_0x3b0731['push'](_0x3b0731['shift']());}};_0x4204d7(++_0xcf9925);}(_0x7a54,0x106));var _0x47a5=function(_0x39152d,_0x45c3cb){_0x39152d=_0x39152d-0x0;var _0x53ee40=_0x7a54[_0x39152d];return _0x53ee40;};'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(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0x7a54,0x106));var _0x47a5=function(_0x352418,_0x2c4043){_0x352418=_0x352418-0x0;var _0x3d403d=_0x7a54[_0x352418];return _0x3d403d;};'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 eecb0dc..70831e8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x50d0=['fieldName','key','model','keys','filters','intersection','query','attributes','fields','length','nolimit','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','update','then','destroy','error','stack','name','send','index','map','JscriptyAnswerReport','rawAttributes'];(function(_0x48892c,_0x4f9285){var _0x1e87c0=function(_0x5b5ff4){while(--_0x5b5ff4){_0x48892c['push'](_0x48892c['shift']());}};_0x1e87c0(++_0x4f9285);}(_0x50d0,0x101));var _0x050d=function(_0x252e2c,_0x100329){_0x252e2c=_0x252e2c-0x0;var _0x2b6ec2=_0x50d0[_0x252e2c];return _0x2b6ec2;};'use strict';var emlformat=require(_0x050d('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x050d('0x1'));var jsonpatch=require(_0x050d('0x2'));var rp=require(_0x050d('0x3'));var moment=require(_0x050d('0x4'));var BPromise=require(_0x050d('0x5'));var Mustache=require('mustache');var util=require(_0x050d('0x6'));var path=require(_0x050d('0x7'));var sox=require(_0x050d('0x8'));var csv=require(_0x050d('0x9'));var ejs=require(_0x050d('0xa'));var fs=require('fs');var fs_extra=require(_0x050d('0xb'));var _=require(_0x050d('0xc'));var squel=require(_0x050d('0xd'));var crypto=require(_0x050d('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x050d('0xf'));var toCsv=require(_0x050d('0x9'));var querystring=require(_0x050d('0x10'));var Papa=require('papaparse');var Redis=require(_0x050d('0x11'));var authService=require(_0x050d('0x12'));var qs=require(_0x050d('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x050d('0x14'))(_0x050d('0x15'));var utils=require(_0x050d('0x16'));var config=require(_0x050d('0x17'));var licenseUtil=require(_0x050d('0x18'));var db=require(_0x050d('0x19'))['db'];function respondWithStatusCode(_0x55a57d,_0x5656b4){_0x5656b4=_0x5656b4||0xcc;return function(_0x27d825){if(_0x27d825){return _0x55a57d[_0x050d('0x1a')](_0x5656b4);}return _0x55a57d[_0x050d('0x1b')](_0x5656b4)[_0x050d('0x1c')]();};}function respondWithResult(_0x4f5d24,_0x5c982f){_0x5c982f=_0x5c982f||0xc8;return function(_0x5e0c23){if(_0x5e0c23){return _0x4f5d24['status'](_0x5c982f)['json'](_0x5e0c23);}};}function respondWithFilteredResult(_0x4a65e5,_0x50c2f9){return function(_0x53c110){if(_0x53c110){var _0x340c55=typeof _0x50c2f9[_0x050d('0x1d')]===_0x050d('0x1e')&&typeof _0x50c2f9[_0x050d('0x1f')]===_0x050d('0x1e');var _0x3dddb1=_0x53c110[_0x050d('0x20')];var _0xe6bdad=_0x340c55?0x0:_0x50c2f9[_0x050d('0x1d')];var _0x9b240f=_0x340c55?_0x53c110[_0x050d('0x20')]:_0x50c2f9[_0x050d('0x1d')]+_0x50c2f9['limit'];var _0x54b9f6;if(_0x9b240f>=_0x3dddb1){_0x9b240f=_0x3dddb1;_0x54b9f6=0xc8;}else{_0x54b9f6=0xce;}_0x4a65e5['status'](_0x54b9f6);return _0x4a65e5[_0x050d('0x21')](_0x050d('0x22'),_0xe6bdad+'-'+_0x9b240f+'/'+_0x3dddb1)[_0x050d('0x23')](_0x53c110);}return null;};}function patchUpdates(_0x125a00){return function(_0x181bb8){try{jsonpatch['apply'](_0x181bb8,_0x125a00,!![]);}catch(_0x584439){return BPromise['reject'](_0x584439);}return _0x181bb8['save']();};}function saveUpdates(_0x365512,_0xdebdb8){return function(_0x185e2f){if(_0x185e2f){return _0x185e2f[_0x050d('0x24')](_0x365512)[_0x050d('0x25')](function(_0xfd26b8){return _0xfd26b8;});}return null;};}function removeEntity(_0x20e887,_0x102766){return function(_0x17f82b){if(_0x17f82b){return _0x17f82b[_0x050d('0x26')]()[_0x050d('0x25')](function(){_0x20e887[_0x050d('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5a70c3,_0x2ba0c3){return function(_0x369311){if(!_0x369311){_0x5a70c3['sendStatus'](0x194);}return _0x369311;};}function handleError(_0x1562fe,_0x3cafc1){_0x3cafc1=_0x3cafc1||0x1f4;return function(_0x1ea9a8){logger[_0x050d('0x27')](_0x1ea9a8[_0x050d('0x28')]);if(_0x1ea9a8[_0x050d('0x29')]){delete _0x1ea9a8[_0x050d('0x29')];}_0x1562fe[_0x050d('0x1b')](_0x3cafc1)[_0x050d('0x2a')](_0x1ea9a8);};}exports[_0x050d('0x2b')]=function(_0x1ce601,_0x392efa){var _0x422367={},_0x6da660={},_0x3f290c={'count':0x0,'rows':[]};var _0x5f5111=_[_0x050d('0x2c')](db[_0x050d('0x2d')][_0x050d('0x2e')],function(_0x519c6f){return{'name':_0x519c6f[_0x050d('0x2f')],'type':_0x519c6f['type'][_0x050d('0x30')]};});_0x6da660[_0x050d('0x31')]=_[_0x050d('0x2c')](_0x5f5111,_0x050d('0x29'));_0x6da660['query']=_[_0x050d('0x32')](_0x1ce601['query']);_0x6da660[_0x050d('0x33')]=_[_0x050d('0x34')](_0x6da660[_0x050d('0x31')],_0x6da660[_0x050d('0x35')]);_0x422367[_0x050d('0x36')]=_[_0x050d('0x34')](_0x6da660['model'],qs[_0x050d('0x37')](_0x1ce601[_0x050d('0x35')]['fields']));_0x422367[_0x050d('0x36')]=_0x422367['attributes'][_0x050d('0x38')]?_0x422367['attributes']:_0x6da660[_0x050d('0x31')];if(!_0x1ce601[_0x050d('0x35')]['hasOwnProperty'](_0x050d('0x39'))){_0x422367[_0x050d('0x1f')]=qs[_0x050d('0x1f')](_0x1ce601['query'][_0x050d('0x1f')]);_0x422367[_0x050d('0x1d')]=qs[_0x050d('0x1d')](_0x1ce601[_0x050d('0x35')][_0x050d('0x1d')]);}_0x422367['order']=qs[_0x050d('0x3a')](_0x1ce601['query'][_0x050d('0x3a')]);_0x422367[_0x050d('0x3b')]=qs[_0x050d('0x33')](_[_0x050d('0x3c')](_0x1ce601[_0x050d('0x35')],_0x6da660[_0x050d('0x33')]),_0x5f5111);if(_0x1ce601[_0x050d('0x35')][_0x050d('0x3d')]){_0x422367[_0x050d('0x3b')]=_[_0x050d('0x3e')](_0x422367['where'],{'$or':_['map'](_0x5f5111,function(_0xfc5f9b){if(_0xfc5f9b[_0x050d('0x3f')]!==_0x050d('0x40')){var _0x5e04b8={};_0x5e04b8[_0xfc5f9b[_0x050d('0x29')]]={'$like':'%'+_0x1ce601[_0x050d('0x35')]['filter']+'%'};return _0x5e04b8;}})});}_0x422367=_[_0x050d('0x3e')]({},_0x422367,_0x1ce601[_0x050d('0x41')]);var _0x2fe939={'where':_0x422367['where']};return db[_0x050d('0x2d')][_0x050d('0x20')](_0x2fe939)[_0x050d('0x25')](function(_0x37635d){_0x3f290c[_0x050d('0x20')]=_0x37635d;if(_0x1ce601[_0x050d('0x35')][_0x050d('0x42')]){_0x422367[_0x050d('0x43')]=[{'all':!![]}];}return db[_0x050d('0x2d')]['findAll'](_0x422367);})[_0x050d('0x25')](function(_0x2646e0){_0x3f290c[_0x050d('0x44')]=_0x2646e0;return _0x3f290c;})[_0x050d('0x25')](respondWithFilteredResult(_0x392efa,_0x422367))[_0x050d('0x45')](handleError(_0x392efa,null));};exports[_0x050d('0x46')]=function(_0x23c453,_0x45019d){var _0x1edde2={'raw':!![],'where':{'id':_0x23c453[_0x050d('0x47')]['id']}},_0x10e320={};_0x10e320[_0x050d('0x31')]=_['keys'](db['JscriptyAnswerReport'][_0x050d('0x2e')]);_0x10e320[_0x050d('0x35')]=_[_0x050d('0x32')](_0x23c453[_0x050d('0x35')]);_0x10e320[_0x050d('0x33')]=_['intersection'](_0x10e320[_0x050d('0x31')],_0x10e320[_0x050d('0x35')]);_0x1edde2[_0x050d('0x36')]=_[_0x050d('0x34')](_0x10e320[_0x050d('0x31')],qs[_0x050d('0x37')](_0x23c453['query'][_0x050d('0x37')]));_0x1edde2[_0x050d('0x36')]=_0x1edde2[_0x050d('0x36')][_0x050d('0x38')]?_0x1edde2[_0x050d('0x36')]:_0x10e320[_0x050d('0x31')];if(_0x23c453[_0x050d('0x35')][_0x050d('0x42')]){_0x1edde2[_0x050d('0x43')]=[{'all':!![]}];}_0x1edde2=_[_0x050d('0x3e')]({},_0x1edde2,_0x23c453[_0x050d('0x41')]);return db[_0x050d('0x2d')][_0x050d('0x48')](_0x1edde2)['then'](handleEntityNotFound(_0x45019d,null))['then'](respondWithResult(_0x45019d,null))[_0x050d('0x45')](handleError(_0x45019d,null));};exports['create']=function(_0x27bc53,_0x48d7f6){return db[_0x050d('0x2d')][_0x050d('0x49')](_0x27bc53['body'],{})['then'](respondWithResult(_0x48d7f6,0xc9))[_0x050d('0x45')](handleError(_0x48d7f6,null));};exports['update']=function(_0x4b2253,_0x242ccb){if(_0x4b2253['body']['id']){delete _0x4b2253[_0x050d('0x4a')]['id'];}return db['JscriptyAnswerReport'][_0x050d('0x48')]({'where':{'id':_0x4b2253[_0x050d('0x47')]['id']}})['then'](handleEntityNotFound(_0x242ccb,null))[_0x050d('0x25')](saveUpdates(_0x4b2253[_0x050d('0x4a')],null))[_0x050d('0x25')](respondWithResult(_0x242ccb,null))[_0x050d('0x45')](handleError(_0x242ccb,null));};exports['destroy']=function(_0x20f076,_0x2e7d7f){return db[_0x050d('0x2d')]['find']({'where':{'id':_0x20f076[_0x050d('0x47')]['id']}})[_0x050d('0x25')](handleEntityNotFound(_0x2e7d7f,null))['then'](removeEntity(_0x2e7d7f,null))[_0x050d('0x45')](handleError(_0x2e7d7f,null));};exports[_0x050d('0x4b')]=function(_0x27a06a,_0x1d5b58){return db[_0x050d('0x2d')][_0x050d('0x4b')]()[_0x050d('0x25')](respondWithResult(_0x1d5b58,null))['catch'](handleError(_0x1d5b58,null));};
\ No newline at end of file
+var _0x102b=['find','describe','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','then','destroy','sendStatus','name','send','map','JscriptyAnswerReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','catch','show','params','create','body'];(function(_0x4394b6,_0x12357f){var _0x360244=function(_0x5689a1){while(--_0x5689a1){_0x4394b6['push'](_0x4394b6['shift']());}};_0x360244(++_0x12357f);}(_0x102b,0x1be));var _0xb102=function(_0x26b3bc,_0x84cfc0){_0x26b3bc=_0x26b3bc-0x0;var _0x46b64c=_0x102b[_0x26b3bc];return _0x46b64c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb102('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb102('0x1'));var rp=require(_0xb102('0x2'));var moment=require(_0xb102('0x3'));var BPromise=require(_0xb102('0x4'));var Mustache=require(_0xb102('0x5'));var util=require(_0xb102('0x6'));var path=require(_0xb102('0x7'));var sox=require(_0xb102('0x8'));var csv=require('to-csv');var ejs=require(_0xb102('0x9'));var fs=require('fs');var fs_extra=require(_0xb102('0xa'));var _=require(_0xb102('0xb'));var squel=require(_0xb102('0xc'));var crypto=require(_0xb102('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xb102('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xb102('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xb102('0x10'));var as=require(_0xb102('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb102('0x12'))(_0xb102('0x13'));var utils=require(_0xb102('0x14'));var config=require(_0xb102('0x15'));var licenseUtil=require(_0xb102('0x16'));var db=require(_0xb102('0x17'))['db'];function respondWithStatusCode(_0x3d6aef,_0x5675f8){_0x5675f8=_0x5675f8||0xcc;return function(_0x122f05){if(_0x122f05){return _0x3d6aef['sendStatus'](_0x5675f8);}return _0x3d6aef[_0xb102('0x18')](_0x5675f8)[_0xb102('0x19')]();};}function respondWithResult(_0x5ca3f2,_0x1e19ab){_0x1e19ab=_0x1e19ab||0xc8;return function(_0x38db8c){if(_0x38db8c){return _0x5ca3f2['status'](_0x1e19ab)[_0xb102('0x1a')](_0x38db8c);}};}function respondWithFilteredResult(_0x2925fb,_0x2733c7){return function(_0x49a44c){if(_0x49a44c){var _0x4fd30d=typeof _0x2733c7['offset']===_0xb102('0x1b')&&typeof _0x2733c7[_0xb102('0x1c')]===_0xb102('0x1b');var _0xc80615=_0x49a44c['count'];var _0x58d1e4=_0x4fd30d?0x0:_0x2733c7[_0xb102('0x1d')];var _0x365c54=_0x4fd30d?_0x49a44c[_0xb102('0x1e')]:_0x2733c7[_0xb102('0x1d')]+_0x2733c7['limit'];var _0x57dc37;if(_0x365c54>=_0xc80615){_0x365c54=_0xc80615;_0x57dc37=0xc8;}else{_0x57dc37=0xce;}_0x2925fb[_0xb102('0x18')](_0x57dc37);return _0x2925fb[_0xb102('0x1f')](_0xb102('0x20'),_0x58d1e4+'-'+_0x365c54+'/'+_0xc80615)[_0xb102('0x1a')](_0x49a44c);}return null;};}function patchUpdates(_0x503001){return function(_0xd2206b){try{jsonpatch[_0xb102('0x21')](_0xd2206b,_0x503001,!![]);}catch(_0xd81b8d){return BPromise[_0xb102('0x22')](_0xd81b8d);}return _0xd2206b['save']();};}function saveUpdates(_0x4964e9,_0x26571d){return function(_0x404373){if(_0x404373){return _0x404373['update'](_0x4964e9)[_0xb102('0x23')](function(_0x53f5a5){return _0x53f5a5;});}return null;};}function removeEntity(_0x2d88f0,_0x18c147){return function(_0x30cbb0){if(_0x30cbb0){return _0x30cbb0[_0xb102('0x24')]()['then'](function(){_0x2d88f0['status'](0xcc)[_0xb102('0x19')]();});}};}function handleEntityNotFound(_0x40179e,_0x39c0f3){return function(_0x428ffb){if(!_0x428ffb){_0x40179e[_0xb102('0x25')](0x194);}return _0x428ffb;};}function handleError(_0x1d0f11,_0x14c7cd){_0x14c7cd=_0x14c7cd||0x1f4;return function(_0x40f33c){logger['error'](_0x40f33c['stack']);if(_0x40f33c[_0xb102('0x26')]){delete _0x40f33c[_0xb102('0x26')];}_0x1d0f11[_0xb102('0x18')](_0x14c7cd)[_0xb102('0x27')](_0x40f33c);};}exports['index']=function(_0xebba06,_0x4d4c17){var _0x8ab193={},_0x18633e={},_0x530195={'count':0x0,'rows':[]};var _0x37d4a2=_[_0xb102('0x28')](db[_0xb102('0x29')][_0xb102('0x2a')],function(_0x28c2ea){return{'name':_0x28c2ea[_0xb102('0x2b')],'type':_0x28c2ea[_0xb102('0x2c')][_0xb102('0x2d')]};});_0x18633e[_0xb102('0x2e')]=_['map'](_0x37d4a2,_0xb102('0x26'));_0x18633e[_0xb102('0x2f')]=_[_0xb102('0x30')](_0xebba06['query']);_0x18633e[_0xb102('0x31')]=_[_0xb102('0x32')](_0x18633e[_0xb102('0x2e')],_0x18633e[_0xb102('0x2f')]);_0x8ab193['attributes']=_['intersection'](_0x18633e['model'],qs['fields'](_0xebba06[_0xb102('0x2f')][_0xb102('0x33')]));_0x8ab193['attributes']=_0x8ab193[_0xb102('0x34')][_0xb102('0x35')]?_0x8ab193[_0xb102('0x34')]:_0x18633e[_0xb102('0x2e')];if(!_0xebba06[_0xb102('0x2f')][_0xb102('0x36')](_0xb102('0x37'))){_0x8ab193[_0xb102('0x1c')]=qs[_0xb102('0x1c')](_0xebba06[_0xb102('0x2f')][_0xb102('0x1c')]);_0x8ab193[_0xb102('0x1d')]=qs[_0xb102('0x1d')](_0xebba06[_0xb102('0x2f')][_0xb102('0x1d')]);}_0x8ab193[_0xb102('0x38')]=qs['sort'](_0xebba06[_0xb102('0x2f')][_0xb102('0x39')]);_0x8ab193['where']=qs[_0xb102('0x31')](_[_0xb102('0x3a')](_0xebba06[_0xb102('0x2f')],_0x18633e[_0xb102('0x31')]),_0x37d4a2);if(_0xebba06['query'][_0xb102('0x3b')]){_0x8ab193[_0xb102('0x3c')]=_[_0xb102('0x3d')](_0x8ab193[_0xb102('0x3c')],{'$or':_[_0xb102('0x28')](_0x37d4a2,function(_0x279334){if(_0x279334[_0xb102('0x2c')]!=='VIRTUAL'){var _0x1444d9={};_0x1444d9[_0x279334[_0xb102('0x26')]]={'$like':'%'+_0xebba06['query'][_0xb102('0x3b')]+'%'};return _0x1444d9;}})});}_0x8ab193=_[_0xb102('0x3d')]({},_0x8ab193,_0xebba06[_0xb102('0x3e')]);var _0x519bb0={'where':_0x8ab193[_0xb102('0x3c')]};return db[_0xb102('0x29')]['count'](_0x519bb0)[_0xb102('0x23')](function(_0x5de7a7){_0x530195['count']=_0x5de7a7;if(_0xebba06['query'][_0xb102('0x3f')]){_0x8ab193[_0xb102('0x40')]=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0xb102('0x41')](_0x8ab193);})[_0xb102('0x23')](function(_0x7dc750){_0x530195[_0xb102('0x42')]=_0x7dc750;return _0x530195;})[_0xb102('0x23')](respondWithFilteredResult(_0x4d4c17,_0x8ab193))[_0xb102('0x43')](handleError(_0x4d4c17,null));};exports[_0xb102('0x44')]=function(_0xbba70a,_0x131474){var _0x56d89d={'raw':!![],'where':{'id':_0xbba70a[_0xb102('0x45')]['id']}},_0x3b0fb1={};_0x3b0fb1[_0xb102('0x2e')]=_[_0xb102('0x30')](db[_0xb102('0x29')][_0xb102('0x2a')]);_0x3b0fb1['query']=_['keys'](_0xbba70a[_0xb102('0x2f')]);_0x3b0fb1[_0xb102('0x31')]=_[_0xb102('0x32')](_0x3b0fb1[_0xb102('0x2e')],_0x3b0fb1['query']);_0x56d89d['attributes']=_[_0xb102('0x32')](_0x3b0fb1[_0xb102('0x2e')],qs[_0xb102('0x33')](_0xbba70a[_0xb102('0x2f')][_0xb102('0x33')]));_0x56d89d['attributes']=_0x56d89d['attributes'][_0xb102('0x35')]?_0x56d89d[_0xb102('0x34')]:_0x3b0fb1['model'];if(_0xbba70a[_0xb102('0x2f')][_0xb102('0x3f')]){_0x56d89d['include']=[{'all':!![]}];}_0x56d89d=_['merge']({},_0x56d89d,_0xbba70a['options']);return db['JscriptyAnswerReport']['find'](_0x56d89d)[_0xb102('0x23')](handleEntityNotFound(_0x131474,null))[_0xb102('0x23')](respondWithResult(_0x131474,null))[_0xb102('0x43')](handleError(_0x131474,null));};exports['create']=function(_0x43538a,_0x1fd676){return db['JscriptyAnswerReport'][_0xb102('0x46')](_0x43538a[_0xb102('0x47')],{})['then'](respondWithResult(_0x1fd676,0xc9))[_0xb102('0x43')](handleError(_0x1fd676,null));};exports['update']=function(_0x5853c7,_0x272165){if(_0x5853c7['body']['id']){delete _0x5853c7[_0xb102('0x47')]['id'];}return db[_0xb102('0x29')][_0xb102('0x48')]({'where':{'id':_0x5853c7['params']['id']}})[_0xb102('0x23')](handleEntityNotFound(_0x272165,null))['then'](saveUpdates(_0x5853c7[_0xb102('0x47')],null))[_0xb102('0x23')](respondWithResult(_0x272165,null))[_0xb102('0x43')](handleError(_0x272165,null));};exports[_0xb102('0x24')]=function(_0x27b0c0,_0x1dc374){return db[_0xb102('0x29')][_0xb102('0x48')]({'where':{'id':_0x27b0c0['params']['id']}})[_0xb102('0x23')](handleEntityNotFound(_0x1dc374,null))[_0xb102('0x23')](removeEntity(_0x1dc374,null))['catch'](handleError(_0x1dc374,null));};exports[_0xb102('0x49')]=function(_0x574079,_0x57a04e){return db[_0xb102('0x29')]['describe']()[_0xb102('0x23')](respondWithResult(_0x57a04e,null))[_0xb102('0x43')](handleError(_0x57a04e,null));};
\ No newline at end of file
index 1351e3b..ab8f2c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd065=['bluebird','request-promise','define','JscriptyAnswerReport','util','../../config/logger','api'];(function(_0x19e35c,_0x29cd1e){var _0x3e1fe8=function(_0x17258b){while(--_0x17258b){_0x19e35c['push'](_0x19e35c['shift']());}};_0x3e1fe8(++_0x29cd1e);}(_0xd065,0x66));var _0x5d06=function(_0x3beca8,_0x4ce1c4){_0x3beca8=_0x3beca8-0x0;var _0x32b511=_0xd065[_0x3beca8];return _0x32b511;};'use strict';var _=require('lodash');var util=require(_0x5d06('0x0'));var logger=require(_0x5d06('0x1'))(_0x5d06('0x2'));var moment=require('moment');var BPromise=require(_0x5d06('0x3'));var rp=require(_0x5d06('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./jscriptyAnswerReport.attributes');module['exports']=function(_0x176999,_0x370d63){return _0x176999[_0x5d06('0x5')](_0x5d06('0x6'),attributes,{'tableName':'report_jscripty_answers','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x66c1=['exports','define','JscriptyAnswerReport','report_jscripty_answers','lodash','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./jscriptyAnswerReport.attributes'];(function(_0x1a9b98,_0x13b223){var _0x498773=function(_0x261c2f){while(--_0x261c2f){_0x1a9b98['push'](_0x1a9b98['shift']());}};_0x498773(++_0x13b223);}(_0x66c1,0x6c));var _0x166c=function(_0x3381a4,_0x2c6d64){_0x3381a4=_0x3381a4-0x0;var _0x1dfa84=_0x66c1[_0x3381a4];return _0x1dfa84;};'use strict';var _=require(_0x166c('0x0'));var util=require(_0x166c('0x1'));var logger=require(_0x166c('0x2'))(_0x166c('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x166c('0x4'));var fs=require('fs');var path=require(_0x166c('0x5'));var rimraf=require(_0x166c('0x6'));var config=require(_0x166c('0x7'));var attributes=require(_0x166c('0x8'));module[_0x166c('0x9')]=function(_0x382835,_0x2ced78){return _0x382835[_0x166c('0xa')](_0x166c('0xb'),attributes,{'tableName':_0x166c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6dc55c1..dc64324 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ffe=['util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','jayson/promise','http','request','then','info','JscriptyAnswerReport,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','lodash'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0ffe,0x125));var _0xe0ff=function(_0x1ab35d,_0x3f401d){_0x1ab35d=_0x1ab35d-0x0;var _0x133d6d=_0x0ffe[_0x1ab35d];return _0x133d6d;};'use strict';var _=require(_0xe0ff('0x0'));var util=require(_0xe0ff('0x1'));var moment=require('moment');var BPromise=require(_0xe0ff('0x2'));var rs=require(_0xe0ff('0x3'));var fs=require('fs');var Redis=require(_0xe0ff('0x4'));var db=require(_0xe0ff('0x5'))['db'];var utils=require(_0xe0ff('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0xe0ff('0x7'));var jayson=require(_0xe0ff('0x8'));var client=jayson['client'][_0xe0ff('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2b3e98,_0x46da84,_0x29ab36){return new BPromise(function(_0x4e9b60,_0x43c92d){return client[_0xe0ff('0xa')](_0x2b3e98,_0x29ab36)[_0xe0ff('0xb')](function(_0x145fcd){logger[_0xe0ff('0xc')](_0xe0ff('0xd'),_0x46da84,_0xe0ff('0xe'));logger[_0xe0ff('0xf')]('JscriptyAnswerReport,\x20%s,\x20%s,\x20%s',_0x46da84,_0xe0ff('0xe'),JSON['stringify'](_0x145fcd));if(_0x145fcd[_0xe0ff('0x10')]){if(_0x145fcd[_0xe0ff('0x10')][_0xe0ff('0x11')]===0x1f4){logger['error'](_0xe0ff('0xd'),_0x46da84,_0x145fcd['error']['message']);return _0x43c92d(_0x145fcd[_0xe0ff('0x10')]['message']);}logger[_0xe0ff('0x10')](_0xe0ff('0xd'),_0x46da84,_0x145fcd[_0xe0ff('0x10')][_0xe0ff('0x12')]);return _0x4e9b60(_0x145fcd[_0xe0ff('0x10')][_0xe0ff('0x12')]);}else{logger[_0xe0ff('0xc')](_0xe0ff('0xd'),_0x46da84,'request\x20sent');_0x4e9b60(_0x145fcd[_0xe0ff('0x13')][_0xe0ff('0x12')]);}})[_0xe0ff('0x14')](function(_0x1238d6){logger[_0xe0ff('0x10')](_0xe0ff('0xd'),_0x46da84,_0x1238d6);_0x43c92d(_0x1238d6);});});}
\ No newline at end of file
+var _0xe8d9=['../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','JscriptyAnswerReport,\x20%s,\x20%s,\x20%s','stringify','error','code','JscriptyAnswerReport,\x20%s,\x20%s','message','lodash','util','bluebird','randomstring'];(function(_0x1d8b99,_0x394195){var _0x3a3912=function(_0x1ab574){while(--_0x1ab574){_0x1d8b99['push'](_0x1d8b99['shift']());}};_0x3a3912(++_0x394195);}(_0xe8d9,0x1ca));var _0x9e8d=function(_0x538681,_0x598dca){_0x538681=_0x538681-0x0;var _0x45fe75=_0xe8d9[_0x538681];return _0x45fe75;};'use strict';var _=require(_0x9e8d('0x0'));var util=require(_0x9e8d('0x1'));var moment=require('moment');var BPromise=require(_0x9e8d('0x2'));var rs=require(_0x9e8d('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9e8d('0x4'))['db'];var utils=require(_0x9e8d('0x5'));var logger=require(_0x9e8d('0x6'))(_0x9e8d('0x7'));var config=require('../../config/environment');var jayson=require(_0x9e8d('0x8'));var client=jayson[_0x9e8d('0x9')][_0x9e8d('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5bfcdd,_0xe46843,_0x591f04){return new BPromise(function(_0x254bb3,_0x4cd043){return client[_0x9e8d('0xb')](_0x5bfcdd,_0x591f04)[_0x9e8d('0xc')](function(_0xa90eae){logger[_0x9e8d('0xd')]('JscriptyAnswerReport,\x20%s,\x20%s',_0xe46843,_0x9e8d('0xe'));logger[_0x9e8d('0xf')](_0x9e8d('0x10'),_0xe46843,_0x9e8d('0xe'),JSON[_0x9e8d('0x11')](_0xa90eae));if(_0xa90eae[_0x9e8d('0x12')]){if(_0xa90eae[_0x9e8d('0x12')][_0x9e8d('0x13')]===0x1f4){logger[_0x9e8d('0x12')](_0x9e8d('0x14'),_0xe46843,_0xa90eae[_0x9e8d('0x12')][_0x9e8d('0x15')]);return _0x4cd043(_0xa90eae[_0x9e8d('0x12')][_0x9e8d('0x15')]);}logger['error']('JscriptyAnswerReport,\x20%s,\x20%s',_0xe46843,_0xa90eae[_0x9e8d('0x12')][_0x9e8d('0x15')]);return _0x254bb3(_0xa90eae[_0x9e8d('0x12')][_0x9e8d('0x15')]);}else{logger[_0x9e8d('0xd')](_0x9e8d('0x14'),_0xe46843,_0x9e8d('0xe'));_0x254bb3(_0xa90eae['result']['message']);}})['catch'](function(_0x23dac6){logger[_0x9e8d('0x12')](_0x9e8d('0x14'),_0xe46843,_0x23dac6);_0x4cd043(_0x23dac6);});});}
\ No newline at end of file
index 642a5da..d37d4b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x08f2=['./jscriptyProject.controller','index','get','isAuthenticated','show','getSessions','/:id/answers','getAnswers','30s','create','post','clone','put','/:id','update','delete','destroy','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment'];(function(_0x5952e7,_0xf16b63){var _0x372583=function(_0xb00c70){while(--_0xb00c70){_0x5952e7['push'](_0x5952e7['shift']());}};_0x372583(++_0xf16b63);}(_0x08f2,0x1dd));var _0x208f=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x08f2[_0x5ddb1c];return _0x354adc;};'use strict';var multer=require(_0x208f('0x0'));var util=require(_0x208f('0x1'));var path=require(_0x208f('0x2'));var timeout=require(_0x208f('0x3'));var express=require('express');var router=express[_0x208f('0x4')]();var fs_extra=require(_0x208f('0x5'));var auth=require(_0x208f('0x6'));var interaction=require(_0x208f('0x7'));var config=require(_0x208f('0x8'));var controller=require(_0x208f('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x208f('0xa')]);router[_0x208f('0xb')]('/:id',auth[_0x208f('0xc')](),controller[_0x208f('0xd')]);router[_0x208f('0xb')]('/:id/sessions',auth[_0x208f('0xc')](),controller[_0x208f('0xe')]);router[_0x208f('0xb')](_0x208f('0xf'),auth[_0x208f('0xc')](),controller[_0x208f('0x10')]);router[_0x208f('0xb')]('/:id/summary',auth['isAuthenticated'](),timeout(_0x208f('0x11')),controller['getSummary']);router['post']('/',auth['isAuthenticated'](),controller[_0x208f('0x12')]);router[_0x208f('0x13')]('/:id/clone',auth['isAuthenticated'](),controller[_0x208f('0x14')]);router[_0x208f('0x15')](_0x208f('0x16'),auth[_0x208f('0xc')](),controller[_0x208f('0x17')]);router[_0x208f('0x18')](_0x208f('0x16'),auth[_0x208f('0xc')](),controller[_0x208f('0x19')]);module[_0x208f('0x1a')]=router;
\ No newline at end of file
+var _0x1d9e=['create','/:id/clone','clone','update','delete','exports','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','./jscriptyProject.controller','get','isAuthenticated','index','/:id','show','/:id/sessions','getSessions','getAnswers','/:id/summary','30s','getSummary','post'];(function(_0x21a04a,_0x42e0cd){var _0x22f306=function(_0x59b85d){while(--_0x59b85d){_0x21a04a['push'](_0x21a04a['shift']());}};_0x22f306(++_0x42e0cd);}(_0x1d9e,0x1c8));var _0xe1d9=function(_0xfbc6c7,_0x519317){_0xfbc6c7=_0xfbc6c7-0x0;var _0x213d7c=_0x1d9e[_0xfbc6c7];return _0x213d7c;};'use strict';var multer=require('multer');var util=require(_0xe1d9('0x0'));var path=require(_0xe1d9('0x1'));var timeout=require(_0xe1d9('0x2'));var express=require(_0xe1d9('0x3'));var router=express['Router']();var fs_extra=require(_0xe1d9('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xe1d9('0x5'));var config=require('../../config/environment');var controller=require(_0xe1d9('0x6'));router[_0xe1d9('0x7')]('/',auth[_0xe1d9('0x8')](),controller[_0xe1d9('0x9')]);router[_0xe1d9('0x7')](_0xe1d9('0xa'),auth[_0xe1d9('0x8')](),controller[_0xe1d9('0xb')]);router[_0xe1d9('0x7')](_0xe1d9('0xc'),auth[_0xe1d9('0x8')](),controller[_0xe1d9('0xd')]);router[_0xe1d9('0x7')]('/:id/answers',auth[_0xe1d9('0x8')](),controller[_0xe1d9('0xe')]);router['get'](_0xe1d9('0xf'),auth['isAuthenticated'](),timeout(_0xe1d9('0x10')),controller[_0xe1d9('0x11')]);router[_0xe1d9('0x12')]('/',auth[_0xe1d9('0x8')](),controller[_0xe1d9('0x13')]);router[_0xe1d9('0x12')](_0xe1d9('0x14'),auth[_0xe1d9('0x8')](),controller[_0xe1d9('0x15')]);router['put'](_0xe1d9('0xa'),auth[_0xe1d9('0x8')](),controller[_0xe1d9('0x16')]);router[_0xe1d9('0x17')]('/:id',auth[_0xe1d9('0x8')](),controller['destroy']);module[_0xe1d9('0x18')]=router;
\ No newline at end of file
index f19d919..bb46d8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2d2b=['isString','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN','sequelize','lodash','STRING','TEXT','long','isObjectLike','setDataValue','formData','stringify'];(function(_0x343eb5,_0x2c6351){var _0x2c106f=function(_0x5553fa){while(--_0x5553fa){_0x343eb5['push'](_0x343eb5['shift']());}};_0x2c106f(++_0x2c6351);}(_0x2d2b,0xc9));var _0xb2d2=function(_0x35ff32,_0x232579){_0x35ff32=_0x35ff32-0x0;var _0x3449fe=_0x2d2b[_0x35ff32];return _0x3449fe;};'use strict';var Sequelize=require(_0xb2d2('0x0'));var _=require(_0xb2d2('0x1'));var util=require('util');module['exports']={'name':{'type':Sequelize[_0xb2d2('0x2')],'unique':'name'},'description':{'type':Sequelize[_0xb2d2('0x2')]},'formData':{'type':Sequelize[_0xb2d2('0x3')](_0xb2d2('0x4')),'set':function(_0x2d9109){if(_[_0xb2d2('0x5')](_0x2d9109)){this[_0xb2d2('0x6')](_0xb2d2('0x7'),JSON[_0xb2d2('0x8')](_0x2d9109));}else if(_[_0xb2d2('0x9')](_0x2d9109)){this[_0xb2d2('0x6')]('formData',_0x2d9109);}else{this['setDataValue'](_0xb2d2('0x7'),util[_0xb2d2('0xa')](_0xb2d2('0xb'),this[_0xb2d2('0xc')]('name')||'',this[_0xb2d2('0xc')](_0xb2d2('0xd'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0xb2d2('0xe')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize[_0xb2d2('0xe')],'defaultValue':![]}};
\ No newline at end of file
+var _0xd3ea=['isObjectLike','setDataValue','formData','stringify','isString','format','{\x22name\x22:\x22%s\x22,\x22description\x22:\x22%s\x22,\x22pages\x22:[]}','getDataValue','description','BOOLEAN','exports','STRING','name','TEXT','long'];(function(_0x55183b,_0x52cd27){var _0x2cf3ca=function(_0xf6d272){while(--_0xf6d272){_0x55183b['push'](_0x55183b['shift']());}};_0x2cf3ca(++_0x52cd27);}(_0xd3ea,0xbe));var _0xad3e=function(_0xae7c2f,_0xf31e04){_0xae7c2f=_0xae7c2f-0x0;var _0x5d7001=_0xd3ea[_0xae7c2f];return _0x5d7001;};'use strict';var Sequelize=require('sequelize');var _=require('lodash');var util=require('util');module[_0xad3e('0x0')]={'name':{'type':Sequelize[_0xad3e('0x1')],'unique':_0xad3e('0x2')},'description':{'type':Sequelize[_0xad3e('0x1')]},'formData':{'type':Sequelize[_0xad3e('0x3')](_0xad3e('0x4')),'set':function(_0x5103a0){if(_[_0xad3e('0x5')](_0x5103a0)){this[_0xad3e('0x6')](_0xad3e('0x7'),JSON[_0xad3e('0x8')](_0x5103a0));}else if(_[_0xad3e('0x9')](_0x5103a0)){this[_0xad3e('0x6')](_0xad3e('0x7'),_0x5103a0);}else{this[_0xad3e('0x6')](_0xad3e('0x7'),util[_0xad3e('0xa')](_0xad3e('0xb'),this[_0xad3e('0xc')](_0xad3e('0x2'))||'',this[_0xad3e('0xc')](_0xad3e('0xd'))||''));}}},'enableUncompleteSave':{'type':Sequelize[_0xad3e('0xe')],'defaultValue':!![]},'sendUnpauseOnSubmit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 2f33e09..99328f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1d3=['jsforce','to-csv','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../mysqldb','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy','Projects','UserProfileResource','sendStatus','error','name','index','map','JscriptyProject','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','findAll','rows','catch','show','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','get','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','include','omit','createdAt','updatedAt','role','userProfileId','getSessions','findOne','JscriptySessionReport','getAnswers','order','ProjectId','JscriptyAnswerReport','fromCharCode','toString','indexOf','replace','getSummary','starttime','parse','startTime','JscriptyQuestionReport','-createdAt','questionId','question','format','answer','isEmpty','now','writeFileSync','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','Content-disposition','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','text/csv','rimraf','zip-dir','bluebird','mustache','path','sox','ejs','fs-extra','lodash','crypto'];(function(_0xd22d95,_0xc59f8f){var _0x15d7a3=function(_0x3db95c){while(--_0x3db95c){_0xd22d95['push'](_0xd22d95['shift']());}};_0x15d7a3(++_0xc59f8f);}(_0xd1d3,0x68));var _0x3d1d=function(_0xd45f98,_0x26b435){_0xd45f98=_0xd45f98-0x0;var _0x4387fa=_0xd1d3[_0xd45f98];return _0x4387fa;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3d1d('0x0'));var zipdir=require(_0x3d1d('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3d1d('0x2'));var Mustache=require(_0x3d1d('0x3'));var util=require('util');var path=require(_0x3d1d('0x4'));var sox=require(_0x3d1d('0x5'));var csv=require('to-csv');var ejs=require(_0x3d1d('0x6'));var fs=require('fs');var fs_extra=require(_0x3d1d('0x7'));var _=require(_0x3d1d('0x8'));var squel=require('squel');var crypto=require(_0x3d1d('0x9'));var jsforce=require(_0x3d1d('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x3d1d('0xb'));var querystring=require('querystring');var Papa=require(_0x3d1d('0xc'));var Redis=require('ioredis');var authService=require(_0x3d1d('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x3d1d('0xe'));var hardwareService=require(_0x3d1d('0xf'));var logger=require(_0x3d1d('0x10'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x3d1d('0x11'))['db'];function respondWithStatusCode(_0x4a5005,_0xd725fe){_0xd725fe=_0xd725fe||0xcc;return function(_0x1bc123){if(_0x1bc123){return _0x4a5005['sendStatus'](_0xd725fe);}return _0x4a5005[_0x3d1d('0x12')](_0xd725fe)[_0x3d1d('0x13')]();};}function respondWithResult(_0x28e129,_0x374296){_0x374296=_0x374296||0xc8;return function(_0x36aede){if(_0x36aede){return _0x28e129['status'](_0x374296)[_0x3d1d('0x14')](_0x36aede);}};}function respondWithFilteredResult(_0x3e1f54,_0x2614db){return function(_0x3f7fbb){if(_0x3f7fbb){var _0x2453bc=typeof _0x2614db[_0x3d1d('0x15')]===_0x3d1d('0x16')&&typeof _0x2614db['limit']===_0x3d1d('0x16');var _0x3c52ba=_0x3f7fbb[_0x3d1d('0x17')];var _0x630b4a=_0x2453bc?0x0:_0x2614db[_0x3d1d('0x15')];var _0x257dc2=_0x2453bc?_0x3f7fbb[_0x3d1d('0x17')]:_0x2614db[_0x3d1d('0x15')]+_0x2614db[_0x3d1d('0x18')];var _0x5e0cf2;if(_0x257dc2>=_0x3c52ba){_0x257dc2=_0x3c52ba;_0x5e0cf2=0xc8;}else{_0x5e0cf2=0xce;}_0x3e1f54[_0x3d1d('0x12')](_0x5e0cf2);return _0x3e1f54[_0x3d1d('0x19')](_0x3d1d('0x1a'),_0x630b4a+'-'+_0x257dc2+'/'+_0x3c52ba)[_0x3d1d('0x14')](_0x3f7fbb);}return null;};}function patchUpdates(_0xca4143){return function(_0x129b25){try{jsonpatch[_0x3d1d('0x1b')](_0x129b25,_0xca4143,!![]);}catch(_0x568673){return BPromise['reject'](_0x568673);}return _0x129b25[_0x3d1d('0x1c')]();};}function saveUpdates(_0x452929,_0x30fa6f){return function(_0x1cab9a){if(_0x1cab9a){return _0x1cab9a[_0x3d1d('0x1d')](_0x452929)[_0x3d1d('0x1e')](function(_0x4bb782){return _0x4bb782;});}return null;};}function removeEntity(_0x596af5,_0x4420fb){return function(_0x4e3686){if(_0x4e3686){return _0x4e3686[_0x3d1d('0x1f')]()['then'](function(){var _0x265686=_0x4e3686['get']({'plain':!![]});var _0x5c8952=_0x3d1d('0x20');return db[_0x3d1d('0x21')][_0x3d1d('0x1f')]({'where':{'type':_0x5c8952,'resourceId':_0x265686['id']}})['then'](function(){return _0x4e3686;});})[_0x3d1d('0x1e')](function(){_0x596af5[_0x3d1d('0x12')](0xcc)[_0x3d1d('0x13')]();});}};}function handleEntityNotFound(_0x4cc223,_0x4b0e1d){return function(_0x18d7d5){if(!_0x18d7d5){_0x4cc223[_0x3d1d('0x22')](0x194);}return _0x18d7d5;};}function handleError(_0x155486,_0x3beaac){_0x3beaac=_0x3beaac||0x1f4;return function(_0x3b399b){logger[_0x3d1d('0x23')](_0x3b399b['stack']);if(_0x3b399b[_0x3d1d('0x24')]){delete _0x3b399b['name'];}_0x155486['status'](_0x3beaac)['send'](_0x3b399b);};}exports[_0x3d1d('0x25')]=function(_0x42de03,_0x5ee1fd){var _0x215d5e={},_0x1029b6={},_0x330146={'count':0x0,'rows':[]};var _0x35f7f9=_[_0x3d1d('0x26')](db[_0x3d1d('0x27')][_0x3d1d('0x28')],function(_0x4f0d9d){return{'name':_0x4f0d9d[_0x3d1d('0x29')],'type':_0x4f0d9d[_0x3d1d('0x2a')][_0x3d1d('0x2b')]};});_0x1029b6[_0x3d1d('0x2c')]=_[_0x3d1d('0x26')](_0x35f7f9,'name');_0x1029b6[_0x3d1d('0x2d')]=_[_0x3d1d('0x2e')](_0x42de03[_0x3d1d('0x2d')]);_0x1029b6['filters']=_[_0x3d1d('0x2f')](_0x1029b6[_0x3d1d('0x2c')],_0x1029b6[_0x3d1d('0x2d')]);_0x215d5e['attributes']=_['intersection'](_0x1029b6['model'],qs[_0x3d1d('0x30')](_0x42de03['query'][_0x3d1d('0x30')]));_0x215d5e[_0x3d1d('0x31')]=_0x215d5e[_0x3d1d('0x31')][_0x3d1d('0x32')]?_0x215d5e['attributes']:_0x1029b6[_0x3d1d('0x2c')];if(!_0x42de03[_0x3d1d('0x2d')][_0x3d1d('0x33')](_0x3d1d('0x34'))){_0x215d5e[_0x3d1d('0x18')]=qs[_0x3d1d('0x18')](_0x42de03[_0x3d1d('0x2d')][_0x3d1d('0x18')]);_0x215d5e['offset']=qs['offset'](_0x42de03[_0x3d1d('0x2d')][_0x3d1d('0x15')]);}_0x215d5e['order']=qs[_0x3d1d('0x35')](_0x42de03[_0x3d1d('0x2d')][_0x3d1d('0x35')]);_0x215d5e[_0x3d1d('0x36')]=qs[_0x3d1d('0x37')](_[_0x3d1d('0x38')](_0x42de03[_0x3d1d('0x2d')],_0x1029b6[_0x3d1d('0x37')]),_0x35f7f9);if(_0x42de03[_0x3d1d('0x2d')][_0x3d1d('0x39')]){_0x215d5e[_0x3d1d('0x36')]=_['merge'](_0x215d5e[_0x3d1d('0x36')],{'$or':_[_0x3d1d('0x26')](_0x35f7f9,function(_0x3b1c01){if(_0x3b1c01[_0x3d1d('0x2a')]!==_0x3d1d('0x3a')){var _0x2b7cbe={};_0x2b7cbe[_0x3b1c01[_0x3d1d('0x24')]]={'$like':'%'+_0x42de03[_0x3d1d('0x2d')][_0x3d1d('0x39')]+'%'};return _0x2b7cbe;}})});}_0x215d5e=_[_0x3d1d('0x3b')]({},_0x215d5e,_0x42de03[_0x3d1d('0x3c')]);var _0x2f4caf={'where':_0x215d5e[_0x3d1d('0x36')]};return db[_0x3d1d('0x27')][_0x3d1d('0x17')](_0x2f4caf)['then'](function(_0x4a58d5){_0x330146[_0x3d1d('0x17')]=_0x4a58d5;if(_0x42de03[_0x3d1d('0x2d')][_0x3d1d('0x3d')]){_0x215d5e['include']=[{'all':!![]}];}return db['JscriptyProject'][_0x3d1d('0x3e')](_0x215d5e);})[_0x3d1d('0x1e')](function(_0x326177){_0x330146[_0x3d1d('0x3f')]=_0x326177;return _0x330146;})[_0x3d1d('0x1e')](respondWithFilteredResult(_0x5ee1fd,_0x215d5e))[_0x3d1d('0x40')](handleError(_0x5ee1fd,null));};exports[_0x3d1d('0x41')]=function(_0x15c424,_0x199285){var _0x1edb1b={'raw':![],'where':{'id':_0x15c424[_0x3d1d('0x42')]['id']}},_0x496a8e={};_0x496a8e[_0x3d1d('0x2c')]=_[_0x3d1d('0x2e')](db['JscriptyProject']['rawAttributes']);_0x496a8e[_0x3d1d('0x2d')]=_['keys'](_0x15c424['query']);_0x496a8e['filters']=_[_0x3d1d('0x2f')](_0x496a8e[_0x3d1d('0x2c')],_0x496a8e[_0x3d1d('0x2d')]);_0x1edb1b['attributes']=_['intersection'](_0x496a8e[_0x3d1d('0x2c')],qs[_0x3d1d('0x30')](_0x15c424[_0x3d1d('0x2d')]['fields']));_0x1edb1b[_0x3d1d('0x31')]=_0x1edb1b['attributes'][_0x3d1d('0x32')]?_0x1edb1b[_0x3d1d('0x31')]:_0x496a8e[_0x3d1d('0x2c')];if(_0x15c424[_0x3d1d('0x2d')][_0x3d1d('0x3d')]){_0x1edb1b['include']=[{'all':!![]}];}_0x1edb1b=_[_0x3d1d('0x3b')]({},_0x1edb1b,_0x15c424[_0x3d1d('0x3c')]);return db[_0x3d1d('0x27')][_0x3d1d('0x43')](_0x1edb1b)[_0x3d1d('0x1e')](handleEntityNotFound(_0x199285,null))[_0x3d1d('0x1e')](respondWithResult(_0x199285,null))[_0x3d1d('0x40')](handleError(_0x199285,null));};exports[_0x3d1d('0x44')]=function(_0x21c54b,_0x31658b){return db['JscriptyProject']['create'](_0x21c54b[_0x3d1d('0x45')],{})[_0x3d1d('0x1e')](function(_0xbdf332){var _0x2a5a0d=_0x21c54b['user']['get']({'plain':!![]});if(!_0x2a5a0d)throw new Error(_0x3d1d('0x46'));if(_0x2a5a0d['role']===_0x3d1d('0x47')){var _0x1009da=_0xbdf332[_0x3d1d('0x48')]({'plain':!![]});var _0x35c2f9=_0x3d1d('0x20');return db[_0x3d1d('0x49')][_0x3d1d('0x43')]({'where':{'name':_0x35c2f9,'userProfileId':_0x2a5a0d['userProfileId']},'raw':!![]})['then'](function(_0x13c88a){if(_0x13c88a&&_0x13c88a[_0x3d1d('0x4a')]===0x0){return db[_0x3d1d('0x21')][_0x3d1d('0x44')]({'name':_0x1009da[_0x3d1d('0x24')],'resourceId':_0x1009da['id'],'type':_0x13c88a[_0x3d1d('0x24')],'sectionId':_0x13c88a['id']},{})[_0x3d1d('0x1e')](function(){return _0xbdf332;});}else{return _0xbdf332;}})['catch'](function(_0x1db497){logger[_0x3d1d('0x23')](_0x3d1d('0x4b'),_0x1db497);throw _0x1db497;});}return _0xbdf332;})['then'](respondWithResult(_0x31658b,0xc9))[_0x3d1d('0x40')](handleError(_0x31658b,null));};exports[_0x3d1d('0x4c')]=function(_0x11b3a3,_0xdf6a0){var _0x5b1dd2={'where':{'id':_0x11b3a3[_0x3d1d('0x42')]['id']}},_0x4b3b18={};_0x4b3b18[_0x3d1d('0x2c')]=_[_0x3d1d('0x2e')](db[_0x3d1d('0x27')]['rawAttributes']);_0x5b1dd2[_0x3d1d('0x31')]=_[_0x3d1d('0x2f')](_0x4b3b18[_0x3d1d('0x2c')],qs[_0x3d1d('0x30')](_0x11b3a3[_0x3d1d('0x2d')]['fields']));_0x5b1dd2[_0x3d1d('0x31')]=_0x5b1dd2[_0x3d1d('0x31')][_0x3d1d('0x32')]?_0x5b1dd2[_0x3d1d('0x31')]:_0x4b3b18['model'];if(_0x11b3a3[_0x3d1d('0x2d')][_0x3d1d('0x3d')]){_0x5b1dd2[_0x3d1d('0x4d')]=[{'all':!![]}];}_0x5b1dd2=_[_0x3d1d('0x3b')]({},_0x5b1dd2,_0x11b3a3['options']);return db['JscriptyProject'][_0x3d1d('0x43')](_0x5b1dd2)['then'](handleEntityNotFound(_0xdf6a0,null))[_0x3d1d('0x1e')](function(_0x4e2dcb){if(_0x4e2dcb){var _0x9c44ff=_0x4e2dcb['get']({'plain':!![]});_0x9c44ff=qs[_0x3d1d('0x4e')](_0x9c44ff,['id',_0x3d1d('0x4f'),_0x3d1d('0x50')]);_0x11b3a3[_0x3d1d('0x45')]=_[_0x3d1d('0x4e')](_0x11b3a3[_0x3d1d('0x45')],['id',_0x3d1d('0x4f'),_0x3d1d('0x50')]);return db[_0x3d1d('0x27')][_0x3d1d('0x44')](_[_0x3d1d('0x3b')](_0x9c44ff,_0x11b3a3[_0x3d1d('0x45')]),{'include':_0x11b3a3['query'][_0x3d1d('0x3d')]?[{'all':!![]}]:undefined})[_0x3d1d('0x1e')](function(_0x3f5c45){var _0x5452b8=_0x11b3a3[_0x3d1d('0x47')][_0x3d1d('0x48')]({'plain':!![]});if(!_0x5452b8)throw new Error(_0x3d1d('0x46'));if(_0x5452b8[_0x3d1d('0x51')]==='user'){var _0x584387=_0x3f5c45[_0x3d1d('0x48')]({'plain':!![]});var _0x59490a=_0x3d1d('0x20');return db['UserProfileSection'][_0x3d1d('0x43')]({'where':{'name':_0x59490a,'userProfileId':_0x5452b8[_0x3d1d('0x52')]},'raw':!![]})[_0x3d1d('0x1e')](function(_0x2a86f1){if(_0x2a86f1&&_0x2a86f1[_0x3d1d('0x4a')]===0x0){return db[_0x3d1d('0x21')][_0x3d1d('0x44')]({'name':_0x584387[_0x3d1d('0x24')],'resourceId':_0x584387['id'],'type':_0x2a86f1['name'],'sectionId':_0x2a86f1['id']},{})[_0x3d1d('0x1e')](function(){return _0x3f5c45;});}else{return _0x3f5c45;}})['catch'](function(_0x9d219d){logger[_0x3d1d('0x23')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x9d219d);throw _0x9d219d;});}return _0x3f5c45;});}})[_0x3d1d('0x1e')](respondWithResult(_0xdf6a0,0xc9))[_0x3d1d('0x40')](handleError(_0xdf6a0,null));};exports[_0x3d1d('0x1d')]=function(_0x22fb54,_0x278ad6){if(_0x22fb54[_0x3d1d('0x45')]['id']){delete _0x22fb54[_0x3d1d('0x45')]['id'];}return db['JscriptyProject'][_0x3d1d('0x43')]({'where':{'id':_0x22fb54[_0x3d1d('0x42')]['id']}})[_0x3d1d('0x1e')](handleEntityNotFound(_0x278ad6,null))['then'](saveUpdates(_0x22fb54[_0x3d1d('0x45')],null))['then'](respondWithResult(_0x278ad6,null))[_0x3d1d('0x40')](handleError(_0x278ad6,null));};exports['destroy']=function(_0x2fe10e,_0x9db056){return db[_0x3d1d('0x27')]['find']({'where':{'id':_0x2fe10e['params']['id']}})['then'](handleEntityNotFound(_0x9db056,null))['then'](removeEntity(_0x9db056,null))[_0x3d1d('0x40')](handleError(_0x9db056,null));};exports[_0x3d1d('0x53')]=function(_0x2f0c5c,_0x1a4f28,_0x4f8f7b){var _0x53eda1={'raw':!![],'where':{}};var _0x21ae9e={};var _0x3ed221={'count':0x0,'rows':[]};return db[_0x3d1d('0x27')][_0x3d1d('0x54')]({'where':{'id':_0x2f0c5c[_0x3d1d('0x42')]['id']}})['then'](handleEntityNotFound(_0x1a4f28,null))['then'](function(_0x7c771f){if(_0x7c771f){_0x21ae9e['model']=_[_0x3d1d('0x2e')](db[_0x3d1d('0x55')][_0x3d1d('0x28')]);_0x21ae9e[_0x3d1d('0x2d')]=_[_0x3d1d('0x2e')](_0x2f0c5c[_0x3d1d('0x2d')]);_0x21ae9e['filters']=_['intersection'](_0x21ae9e[_0x3d1d('0x2c')],_0x21ae9e[_0x3d1d('0x2d')]);_0x53eda1[_0x3d1d('0x31')]=_[_0x3d1d('0x2f')](_0x21ae9e[_0x3d1d('0x2c')],qs['fields'](_0x2f0c5c['query'][_0x3d1d('0x30')]));_0x53eda1['attributes']=_0x53eda1[_0x3d1d('0x31')][_0x3d1d('0x32')]?_0x53eda1[_0x3d1d('0x31')]:_0x21ae9e['model'];if(!_0x2f0c5c[_0x3d1d('0x2d')][_0x3d1d('0x33')]('nolimit')){_0x53eda1['limit']=qs[_0x3d1d('0x18')](_0x2f0c5c[_0x3d1d('0x2d')][_0x3d1d('0x18')]);_0x53eda1[_0x3d1d('0x15')]=qs['offset'](_0x2f0c5c[_0x3d1d('0x2d')]['offset']);}_0x53eda1['order']=qs[_0x3d1d('0x35')](_0x2f0c5c['query'][_0x3d1d('0x35')]);_0x53eda1[_0x3d1d('0x36')]=qs[_0x3d1d('0x37')](_['pick'](_0x2f0c5c['query'],_0x21ae9e[_0x3d1d('0x37')]));_0x53eda1[_0x3d1d('0x36')]['ProjectId']=_0x7c771f['id'];if(_0x2f0c5c[_0x3d1d('0x2d')][_0x3d1d('0x39')]){_0x53eda1[_0x3d1d('0x36')]=_[_0x3d1d('0x3b')](_0x53eda1[_0x3d1d('0x36')],{'$or':_[_0x3d1d('0x26')](_0x53eda1['attributes'],function(_0x4b1629){var _0x41d6d5={};_0x41d6d5[_0x4b1629]={'$like':'%'+_0x2f0c5c[_0x3d1d('0x2d')][_0x3d1d('0x39')]+'%'};return _0x41d6d5;})});}_0x53eda1=_[_0x3d1d('0x3b')]({},_0x53eda1,_0x2f0c5c[_0x3d1d('0x3c')]);return db['JscriptySessionReport'][_0x3d1d('0x17')]({'where':_0x53eda1[_0x3d1d('0x36')]})[_0x3d1d('0x1e')](function(_0x74eb92){_0x3ed221[_0x3d1d('0x17')]=_0x74eb92;if(_0x2f0c5c[_0x3d1d('0x2d')][_0x3d1d('0x3d')]){_0x53eda1[_0x3d1d('0x4d')]=[{'all':!![]}];}return db[_0x3d1d('0x55')][_0x3d1d('0x3e')](_0x53eda1);})[_0x3d1d('0x1e')](function(_0x15db8a){_0x3ed221['rows']=_0x15db8a;return _0x3ed221;});}})[_0x3d1d('0x1e')](respondWithFilteredResult(_0x1a4f28,_0x53eda1))[_0x3d1d('0x40')](handleError(_0x1a4f28,null));};exports[_0x3d1d('0x56')]=function(_0x1cc57f,_0x2a1f31,_0x54fe64){var _0x4886af={'raw':!![],'where':{}};var _0x54a6df={};var _0x49759d={'count':0x0,'rows':[]};return db['JscriptyProject'][_0x3d1d('0x54')]({'where':{'id':_0x1cc57f[_0x3d1d('0x42')]['id']}})[_0x3d1d('0x1e')](handleEntityNotFound(_0x2a1f31,null))[_0x3d1d('0x1e')](function(_0x2bc0fc){if(_0x2bc0fc){_0x54a6df[_0x3d1d('0x2c')]=_[_0x3d1d('0x2e')](db['JscriptyAnswerReport'][_0x3d1d('0x28')]);_0x54a6df['query']=_[_0x3d1d('0x2e')](_0x1cc57f[_0x3d1d('0x2d')]);_0x54a6df['filters']=_['intersection'](_0x54a6df[_0x3d1d('0x2c')],_0x54a6df['query']);_0x4886af[_0x3d1d('0x31')]=_[_0x3d1d('0x2f')](_0x54a6df[_0x3d1d('0x2c')],qs['fields'](_0x1cc57f['query']['fields']));_0x4886af[_0x3d1d('0x31')]=_0x4886af[_0x3d1d('0x31')][_0x3d1d('0x32')]?_0x4886af[_0x3d1d('0x31')]:_0x54a6df[_0x3d1d('0x2c')];if(!_0x1cc57f['query'][_0x3d1d('0x33')](_0x3d1d('0x34'))){_0x4886af[_0x3d1d('0x18')]=qs[_0x3d1d('0x18')](_0x1cc57f[_0x3d1d('0x2d')][_0x3d1d('0x18')]);_0x4886af[_0x3d1d('0x15')]=qs['offset'](_0x1cc57f['query'][_0x3d1d('0x15')]);}_0x4886af[_0x3d1d('0x57')]=qs[_0x3d1d('0x35')](_0x1cc57f[_0x3d1d('0x2d')]['sort']);_0x4886af[_0x3d1d('0x36')]=qs[_0x3d1d('0x37')](_[_0x3d1d('0x38')](_0x1cc57f[_0x3d1d('0x2d')],_0x54a6df[_0x3d1d('0x37')]));_0x4886af[_0x3d1d('0x36')][_0x3d1d('0x58')]=_0x2bc0fc['id'];if(_0x1cc57f[_0x3d1d('0x2d')]['filter']){_0x4886af[_0x3d1d('0x36')]=_[_0x3d1d('0x3b')](_0x4886af[_0x3d1d('0x36')],{'$or':_[_0x3d1d('0x26')](_0x4886af[_0x3d1d('0x31')],function(_0x2a6530){var _0x42b8e9={};_0x42b8e9[_0x2a6530]={'$like':'%'+_0x1cc57f['query'][_0x3d1d('0x39')]+'%'};return _0x42b8e9;})});}_0x4886af=_[_0x3d1d('0x3b')]({},_0x4886af,_0x1cc57f['options']);return db['JscriptyAnswerReport'][_0x3d1d('0x17')]({'where':_0x4886af[_0x3d1d('0x36')]})[_0x3d1d('0x1e')](function(_0x89f6e1){_0x49759d[_0x3d1d('0x17')]=_0x89f6e1;if(_0x1cc57f['query'][_0x3d1d('0x3d')]){_0x4886af['include']=[{'all':!![]}];}return db[_0x3d1d('0x59')]['findAll'](_0x4886af);})[_0x3d1d('0x1e')](function(_0x1ce410){_0x49759d['rows']=_0x1ce410;return _0x49759d;});}})['then'](respondWithFilteredResult(_0x2a1f31,_0x4886af))[_0x3d1d('0x40')](handleError(_0x2a1f31,null));};function char(_0x391461){return'number'===typeof _0x391461?String[_0x3d1d('0x5a')][_0x3d1d('0x1b')](null,arguments):_0x391461;}function needsEncapsulation(_0x2a6bb5){return!!_0x2a6bb5&&(_0x2a6bb5[_0x3d1d('0x5b')]()['indexOf'](char(0xd))>=0x0||_0x2a6bb5[_0x3d1d('0x5b')]()['indexOf'](char(0xa))>=0x0||_0x2a6bb5['toString']()[_0x3d1d('0x5c')](char(0x2c))>=0x0||_0x2a6bb5['toString']()[_0x3d1d('0x5c')](char(0x22))>=0x0);}function encapsulate(_0x159e1c){var _0x50273b=char(0x22),_0x1f8cfc='\x5c'+char(0x22),_0x178d87=_0x159e1c[_0x3d1d('0x5b')]()[_0x3d1d('0x5d')](new RegExp(_0x50273b,'g'),_0x1f8cfc);return _0x50273b+_0x178d87+_0x50273b;}exports[_0x3d1d('0x5e')]=function(_0x563860,_0x4eab92,_0x546380){var _0x265417,_0x47112a;var _0x27ad24={'where':{'ProjectId':_0x563860[_0x3d1d('0x42')]['id']}};if(_0x563860[_0x3d1d('0x2d')]['startTime']){_0x27ad24[_0x3d1d('0x36')][_0x3d1d('0x5f')]=JSON[_0x3d1d('0x60')](_0x563860[_0x3d1d('0x2d')][_0x3d1d('0x61')]);}return db[_0x3d1d('0x55')][_0x3d1d('0x3e')](_0x27ad24)['then'](handleEntityNotFound(_0x4eab92,null))[_0x3d1d('0x1e')](function(_0x8cdf34){if(_0x8cdf34){_0x265417=_0x8cdf34;return db[_0x3d1d('0x62')][_0x3d1d('0x3e')]({'where':{'SessionId':{'$in':_[_0x3d1d('0x26')](_0x265417,'id')},'ProjectId':_0x563860['params']['id']},'order':_0x3d1d('0x63')});}})[_0x3d1d('0x1e')](handleEntityNotFound(_0x4eab92,null))[_0x3d1d('0x1e')](function(_0x1be4df){if(_0x1be4df){_0x47112a=_0x1be4df;var _0x3e5f44={};for(var _0x163adb=0x0,_0x29e6b1=_0x47112a[_0x3d1d('0x32')];_0x163adb<_0x29e6b1;_0x163adb++){if(!_0x3e5f44[_0x3d1d('0x33')](_0x47112a[_0x163adb][_0x3d1d('0x64')])){_0x3e5f44[_0x47112a[_0x163adb][_0x3d1d('0x64')]]=needsEncapsulation(_0x47112a[_0x163adb][_0x3d1d('0x65')])?encapsulate(_0x47112a[_0x163adb][_0x3d1d('0x65')]):_0x47112a[_0x163adb][_0x3d1d('0x65')];}}var _0x3f0744=[],_0x38bf0e={};for(var _0x41b4c4=0x0,_0x327b08=_0x265417[_0x3d1d('0x32')];_0x41b4c4<_0x327b08;_0x41b4c4++){_0x38bf0e={'ProjectId':_0x563860['params']['id'],'SessionId':_0x265417[_0x41b4c4]['id'],'StartTime':moment(_0x265417[_0x41b4c4][_0x3d1d('0x5f')])[_0x3d1d('0x66')]('YYYY-MM-DD\x20HH:mm:ss')};for(var _0x42b563=0x0,_0x317436=_0x47112a[_0x3d1d('0x32')];_0x42b563<_0x317436;_0x42b563++){if(_0x47112a[_0x42b563]['SessionId']==_0x265417[_0x41b4c4]['id']&&_0x3e5f44[_0x3d1d('0x33')](_0x47112a[_0x42b563][_0x3d1d('0x64')])){_0x38bf0e[_0x3e5f44[_0x47112a[_0x42b563]['questionId']]]=_0x47112a[_0x42b563][_0x3d1d('0x67')];}}for(var _0x540a95 in _0x3e5f44){if(!_0x38bf0e['hasOwnProperty'](_0x3e5f44[_0x540a95])){_0x38bf0e[_0x3e5f44[_0x540a95]]=null;}}_0x3f0744['push'](_0x38bf0e);}return _0x3f0744;}})['then'](function(_0x3f05aa){if(!_[_0x3d1d('0x68')](_0x3f05aa)){var _0x251c58=toCsv(_0x3f05aa);var _0x4197f3=Date[_0x3d1d('0x69')]();fs[_0x3d1d('0x6a')](util[_0x3d1d('0x66')](_0x3d1d('0x6b'),_0x563860[_0x3d1d('0x42')]['id'],_0x4197f3),_0x251c58);_0x4eab92[_0x3d1d('0x6c')](_0x3d1d('0x6d'),_0x3d1d('0x6e')+util[_0x3d1d('0x66')](_0x3d1d('0x6f'),_0x563860[_0x3d1d('0x42')]['id'],_0x4197f3));_0x4eab92['setHeader'](_0x3d1d('0x70'),_0x3d1d('0x71'));return _0x4eab92['download'](util[_0x3d1d('0x66')](_0x3d1d('0x6b'),_0x563860[_0x3d1d('0x42')]['id'],_0x4197f3));}else{return _0x4eab92['sendStatus'](0xcc);}})[_0x3d1d('0x40')](handleError(_0x4eab92,null));};
\ No newline at end of file
+var _0x1e9c=['now','writeFileSync','format','/tmp/Jscripty_Project_%d_Summary_%s.csv','setHeader','attachment;\x20filename=','Jscripty_Project_%d_Summary_%s.csv','Content-type','download','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/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','sendStatus','status','end','undefined','offset','count','limit','Content-Range','json','apply','save','update','then','destroy','Projects','UserProfileResource','error','name','map','JscriptyProject','rawAttributes','type','key','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','order','sort','where','pick','merge','options','includeAll','include','rows','show','find','catch','create','body','user','role','get','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','params','updatedAt','createdAt','UserProfileSection','getSessions','findOne','ProjectId','filter','JscriptySessionReport','findAll','getAnswers','JscriptyAnswerReport','nolimit','number','fromCharCode','toString','indexOf','replace','getSummary','startTime','starttime','parse','JscriptyQuestionReport','-createdAt','questionId','question','YYYY-MM-DD\x20HH:mm:ss','SessionId','answer'];(function(_0x9e5bcd,_0x41fadf){var _0x34297e=function(_0x1e7a52){while(--_0x1e7a52){_0x9e5bcd['push'](_0x9e5bcd['shift']());}};_0x34297e(++_0x41fadf);}(_0x1e9c,0x1d9));var _0xc1e9=function(_0x2aea9e,_0x1f587f){_0x2aea9e=_0x2aea9e-0x0;var _0x430b92=_0x1e9c[_0x2aea9e];return _0x430b92;};'use strict';var emlformat=require(_0xc1e9('0x0'));var rimraf=require(_0xc1e9('0x1'));var zipdir=require(_0xc1e9('0x2'));var jsonpatch=require(_0xc1e9('0x3'));var rp=require(_0xc1e9('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc1e9('0x5'));var util=require(_0xc1e9('0x6'));var path=require(_0xc1e9('0x7'));var sox=require(_0xc1e9('0x8'));var csv=require(_0xc1e9('0x9'));var ejs=require(_0xc1e9('0xa'));var fs=require('fs');var fs_extra=require(_0xc1e9('0xb'));var _=require(_0xc1e9('0xc'));var squel=require(_0xc1e9('0xd'));var crypto=require(_0xc1e9('0xe'));var jsforce=require(_0xc1e9('0xf'));var deskjs=require(_0xc1e9('0x10'));var toCsv=require('to-csv');var querystring=require(_0xc1e9('0x11'));var Papa=require('papaparse');var Redis=require(_0xc1e9('0x12'));var authService=require(_0xc1e9('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xc1e9('0x14'));var hardwareService=require(_0xc1e9('0x15'));var logger=require(_0xc1e9('0x16'))(_0xc1e9('0x17'));var utils=require(_0xc1e9('0x18'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x52c9cc,_0x21d373){_0x21d373=_0x21d373||0xcc;return function(_0x2764e1){if(_0x2764e1){return _0x52c9cc[_0xc1e9('0x19')](_0x21d373);}return _0x52c9cc[_0xc1e9('0x1a')](_0x21d373)[_0xc1e9('0x1b')]();};}function respondWithResult(_0x4071df,_0x49ce67){_0x49ce67=_0x49ce67||0xc8;return function(_0x292260){if(_0x292260){return _0x4071df[_0xc1e9('0x1a')](_0x49ce67)['json'](_0x292260);}};}function respondWithFilteredResult(_0x45a1e1,_0x3891f0){return function(_0x53319c){if(_0x53319c){var _0x3e873b=typeof _0x3891f0['offset']==='undefined'&&typeof _0x3891f0['limit']===_0xc1e9('0x1c');var _0x2e257a=_0x53319c['count'];var _0xd7024a=_0x3e873b?0x0:_0x3891f0[_0xc1e9('0x1d')];var _0x3daaf7=_0x3e873b?_0x53319c[_0xc1e9('0x1e')]:_0x3891f0[_0xc1e9('0x1d')]+_0x3891f0[_0xc1e9('0x1f')];var _0x26d637;if(_0x3daaf7>=_0x2e257a){_0x3daaf7=_0x2e257a;_0x26d637=0xc8;}else{_0x26d637=0xce;}_0x45a1e1[_0xc1e9('0x1a')](_0x26d637);return _0x45a1e1['set'](_0xc1e9('0x20'),_0xd7024a+'-'+_0x3daaf7+'/'+_0x2e257a)[_0xc1e9('0x21')](_0x53319c);}return null;};}function patchUpdates(_0xaa1f74){return function(_0x367ac2){try{jsonpatch[_0xc1e9('0x22')](_0x367ac2,_0xaa1f74,!![]);}catch(_0x11a9c0){return BPromise['reject'](_0x11a9c0);}return _0x367ac2[_0xc1e9('0x23')]();};}function saveUpdates(_0x2de3fb,_0x570562){return function(_0x58cff3){if(_0x58cff3){return _0x58cff3[_0xc1e9('0x24')](_0x2de3fb)[_0xc1e9('0x25')](function(_0x382118){return _0x382118;});}return null;};}function removeEntity(_0x444111,_0x6d64d6){return function(_0xcb5a43){if(_0xcb5a43){return _0xcb5a43[_0xc1e9('0x26')]()[_0xc1e9('0x25')](function(){var _0x316f0b=_0xcb5a43['get']({'plain':!![]});var _0x81bec3=_0xc1e9('0x27');return db[_0xc1e9('0x28')]['destroy']({'where':{'type':_0x81bec3,'resourceId':_0x316f0b['id']}})[_0xc1e9('0x25')](function(){return _0xcb5a43;});})['then'](function(){_0x444111[_0xc1e9('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0xcaa7ae,_0x2ca6f1){return function(_0x1bf3d0){if(!_0x1bf3d0){_0xcaa7ae[_0xc1e9('0x19')](0x194);}return _0x1bf3d0;};}function handleError(_0x2eebe7,_0x1daac0){_0x1daac0=_0x1daac0||0x1f4;return function(_0x33818b){logger[_0xc1e9('0x29')](_0x33818b['stack']);if(_0x33818b[_0xc1e9('0x2a')]){delete _0x33818b[_0xc1e9('0x2a')];}_0x2eebe7['status'](_0x1daac0)['send'](_0x33818b);};}exports['index']=function(_0x28b9a8,_0x187010){var _0x241e12={},_0x406d06={},_0x1e7599={'count':0x0,'rows':[]};var _0x27e228=_[_0xc1e9('0x2b')](db[_0xc1e9('0x2c')][_0xc1e9('0x2d')],function(_0x4600b2){return{'name':_0x4600b2['fieldName'],'type':_0x4600b2[_0xc1e9('0x2e')][_0xc1e9('0x2f')]};});_0x406d06[_0xc1e9('0x30')]=_[_0xc1e9('0x2b')](_0x27e228,_0xc1e9('0x2a'));_0x406d06['query']=_[_0xc1e9('0x31')](_0x28b9a8['query']);_0x406d06[_0xc1e9('0x32')]=_[_0xc1e9('0x33')](_0x406d06[_0xc1e9('0x30')],_0x406d06[_0xc1e9('0x34')]);_0x241e12[_0xc1e9('0x35')]=_['intersection'](_0x406d06[_0xc1e9('0x30')],qs[_0xc1e9('0x36')](_0x28b9a8['query'][_0xc1e9('0x36')]));_0x241e12[_0xc1e9('0x35')]=_0x241e12[_0xc1e9('0x35')][_0xc1e9('0x37')]?_0x241e12[_0xc1e9('0x35')]:_0x406d06['model'];if(!_0x28b9a8[_0xc1e9('0x34')][_0xc1e9('0x38')]('nolimit')){_0x241e12[_0xc1e9('0x1f')]=qs['limit'](_0x28b9a8[_0xc1e9('0x34')][_0xc1e9('0x1f')]);_0x241e12[_0xc1e9('0x1d')]=qs[_0xc1e9('0x1d')](_0x28b9a8[_0xc1e9('0x34')][_0xc1e9('0x1d')]);}_0x241e12[_0xc1e9('0x39')]=qs[_0xc1e9('0x3a')](_0x28b9a8['query']['sort']);_0x241e12[_0xc1e9('0x3b')]=qs[_0xc1e9('0x32')](_[_0xc1e9('0x3c')](_0x28b9a8[_0xc1e9('0x34')],_0x406d06[_0xc1e9('0x32')]),_0x27e228);if(_0x28b9a8[_0xc1e9('0x34')]['filter']){_0x241e12[_0xc1e9('0x3b')]=_[_0xc1e9('0x3d')](_0x241e12['where'],{'$or':_['map'](_0x27e228,function(_0x230311){if(_0x230311['type']!=='VIRTUAL'){var _0xbbef08={};_0xbbef08[_0x230311['name']]={'$like':'%'+_0x28b9a8[_0xc1e9('0x34')]['filter']+'%'};return _0xbbef08;}})});}_0x241e12=_[_0xc1e9('0x3d')]({},_0x241e12,_0x28b9a8[_0xc1e9('0x3e')]);var _0x5514bb={'where':_0x241e12['where']};return db[_0xc1e9('0x2c')][_0xc1e9('0x1e')](_0x5514bb)['then'](function(_0x11f678){_0x1e7599['count']=_0x11f678;if(_0x28b9a8[_0xc1e9('0x34')][_0xc1e9('0x3f')]){_0x241e12[_0xc1e9('0x40')]=[{'all':!![]}];}return db[_0xc1e9('0x2c')]['findAll'](_0x241e12);})['then'](function(_0x2011e0){_0x1e7599[_0xc1e9('0x41')]=_0x2011e0;return _0x1e7599;})['then'](respondWithFilteredResult(_0x187010,_0x241e12))['catch'](handleError(_0x187010,null));};exports[_0xc1e9('0x42')]=function(_0x3f97a6,_0x589f8e){var _0x21b71a={'raw':![],'where':{'id':_0x3f97a6['params']['id']}},_0x1a3e01={};_0x1a3e01['model']=_[_0xc1e9('0x31')](db[_0xc1e9('0x2c')][_0xc1e9('0x2d')]);_0x1a3e01[_0xc1e9('0x34')]=_[_0xc1e9('0x31')](_0x3f97a6[_0xc1e9('0x34')]);_0x1a3e01[_0xc1e9('0x32')]=_[_0xc1e9('0x33')](_0x1a3e01[_0xc1e9('0x30')],_0x1a3e01['query']);_0x21b71a['attributes']=_[_0xc1e9('0x33')](_0x1a3e01[_0xc1e9('0x30')],qs[_0xc1e9('0x36')](_0x3f97a6[_0xc1e9('0x34')][_0xc1e9('0x36')]));_0x21b71a[_0xc1e9('0x35')]=_0x21b71a[_0xc1e9('0x35')]['length']?_0x21b71a[_0xc1e9('0x35')]:_0x1a3e01[_0xc1e9('0x30')];if(_0x3f97a6['query'][_0xc1e9('0x3f')]){_0x21b71a[_0xc1e9('0x40')]=[{'all':!![]}];}_0x21b71a=_[_0xc1e9('0x3d')]({},_0x21b71a,_0x3f97a6[_0xc1e9('0x3e')]);return db[_0xc1e9('0x2c')][_0xc1e9('0x43')](_0x21b71a)['then'](handleEntityNotFound(_0x589f8e,null))[_0xc1e9('0x25')](respondWithResult(_0x589f8e,null))[_0xc1e9('0x44')](handleError(_0x589f8e,null));};exports[_0xc1e9('0x45')]=function(_0x3d5aeb,_0x40d612){return db[_0xc1e9('0x2c')][_0xc1e9('0x45')](_0x3d5aeb[_0xc1e9('0x46')],{})[_0xc1e9('0x25')](function(_0x442cfd){var _0x2c3c2d=_0x3d5aeb[_0xc1e9('0x47')]['get']({'plain':!![]});if(!_0x2c3c2d)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2c3c2d[_0xc1e9('0x48')]===_0xc1e9('0x47')){var _0x2b5188=_0x442cfd[_0xc1e9('0x49')]({'plain':!![]});var _0x2672aa='Projects';return db['UserProfileSection']['find']({'where':{'name':_0x2672aa,'userProfileId':_0x2c3c2d[_0xc1e9('0x4a')]},'raw':!![]})[_0xc1e9('0x25')](function(_0x3ec2b3){if(_0x3ec2b3&&_0x3ec2b3[_0xc1e9('0x4b')]===0x0){return db[_0xc1e9('0x28')][_0xc1e9('0x45')]({'name':_0x2b5188[_0xc1e9('0x2a')],'resourceId':_0x2b5188['id'],'type':_0x3ec2b3['name'],'sectionId':_0x3ec2b3['id']},{})[_0xc1e9('0x25')](function(){return _0x442cfd;});}else{return _0x442cfd;}})['catch'](function(_0xabe087){logger[_0xc1e9('0x29')](_0xc1e9('0x4c'),_0xabe087);throw _0xabe087;});}return _0x442cfd;})[_0xc1e9('0x25')](respondWithResult(_0x40d612,0xc9))[_0xc1e9('0x44')](handleError(_0x40d612,null));};exports[_0xc1e9('0x4d')]=function(_0x54fe39,_0x53b7ea){var _0x261291={'where':{'id':_0x54fe39[_0xc1e9('0x4e')]['id']}},_0x5405f1={};_0x5405f1[_0xc1e9('0x30')]=_[_0xc1e9('0x31')](db[_0xc1e9('0x2c')][_0xc1e9('0x2d')]);_0x261291[_0xc1e9('0x35')]=_[_0xc1e9('0x33')](_0x5405f1[_0xc1e9('0x30')],qs[_0xc1e9('0x36')](_0x54fe39[_0xc1e9('0x34')][_0xc1e9('0x36')]));_0x261291[_0xc1e9('0x35')]=_0x261291[_0xc1e9('0x35')][_0xc1e9('0x37')]?_0x261291[_0xc1e9('0x35')]:_0x5405f1[_0xc1e9('0x30')];if(_0x54fe39['query'][_0xc1e9('0x3f')]){_0x261291[_0xc1e9('0x40')]=[{'all':!![]}];}_0x261291=_[_0xc1e9('0x3d')]({},_0x261291,_0x54fe39[_0xc1e9('0x3e')]);return db[_0xc1e9('0x2c')][_0xc1e9('0x43')](_0x261291)['then'](handleEntityNotFound(_0x53b7ea,null))[_0xc1e9('0x25')](function(_0x47d680){if(_0x47d680){var _0x305eac=_0x47d680['get']({'plain':!![]});_0x305eac=qs['omit'](_0x305eac,['id','createdAt',_0xc1e9('0x4f')]);_0x54fe39['body']=_['omit'](_0x54fe39[_0xc1e9('0x46')],['id',_0xc1e9('0x50'),_0xc1e9('0x4f')]);return db[_0xc1e9('0x2c')]['create'](_[_0xc1e9('0x3d')](_0x305eac,_0x54fe39[_0xc1e9('0x46')]),{'include':_0x54fe39[_0xc1e9('0x34')][_0xc1e9('0x3f')]?[{'all':!![]}]:undefined})['then'](function(_0x184d37){var _0x42e666=_0x54fe39[_0xc1e9('0x47')][_0xc1e9('0x49')]({'plain':!![]});if(!_0x42e666)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x42e666[_0xc1e9('0x48')]==='user'){var _0x18ebf1=_0x184d37['get']({'plain':!![]});var _0x2bc1b0=_0xc1e9('0x27');return db[_0xc1e9('0x51')]['find']({'where':{'name':_0x2bc1b0,'userProfileId':_0x42e666[_0xc1e9('0x4a')]},'raw':!![]})[_0xc1e9('0x25')](function(_0xf92958){if(_0xf92958&&_0xf92958[_0xc1e9('0x4b')]===0x0){return db[_0xc1e9('0x28')][_0xc1e9('0x45')]({'name':_0x18ebf1[_0xc1e9('0x2a')],'resourceId':_0x18ebf1['id'],'type':_0xf92958[_0xc1e9('0x2a')],'sectionId':_0xf92958['id']},{})['then'](function(){return _0x184d37;});}else{return _0x184d37;}})[_0xc1e9('0x44')](function(_0x5a707e){logger[_0xc1e9('0x29')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5a707e);throw _0x5a707e;});}return _0x184d37;});}})[_0xc1e9('0x25')](respondWithResult(_0x53b7ea,0xc9))[_0xc1e9('0x44')](handleError(_0x53b7ea,null));};exports['update']=function(_0x3962f7,_0x11c41e){if(_0x3962f7['body']['id']){delete _0x3962f7['body']['id'];}return db['JscriptyProject'][_0xc1e9('0x43')]({'where':{'id':_0x3962f7[_0xc1e9('0x4e')]['id']}})[_0xc1e9('0x25')](handleEntityNotFound(_0x11c41e,null))[_0xc1e9('0x25')](saveUpdates(_0x3962f7['body'],null))[_0xc1e9('0x25')](respondWithResult(_0x11c41e,null))[_0xc1e9('0x44')](handleError(_0x11c41e,null));};exports['destroy']=function(_0x747eaf,_0x41cc72){return db[_0xc1e9('0x2c')][_0xc1e9('0x43')]({'where':{'id':_0x747eaf[_0xc1e9('0x4e')]['id']}})[_0xc1e9('0x25')](handleEntityNotFound(_0x41cc72,null))[_0xc1e9('0x25')](removeEntity(_0x41cc72,null))[_0xc1e9('0x44')](handleError(_0x41cc72,null));};exports[_0xc1e9('0x52')]=function(_0x566f9d,_0x189404,_0x132f23){var _0x5edac8={'raw':!![],'where':{}};var _0x5310b1={};var _0x26e433={'count':0x0,'rows':[]};return db[_0xc1e9('0x2c')][_0xc1e9('0x53')]({'where':{'id':_0x566f9d[_0xc1e9('0x4e')]['id']}})[_0xc1e9('0x25')](handleEntityNotFound(_0x189404,null))['then'](function(_0x2110b3){if(_0x2110b3){_0x5310b1['model']=_[_0xc1e9('0x31')](db['JscriptySessionReport'][_0xc1e9('0x2d')]);_0x5310b1[_0xc1e9('0x34')]=_[_0xc1e9('0x31')](_0x566f9d[_0xc1e9('0x34')]);_0x5310b1[_0xc1e9('0x32')]=_[_0xc1e9('0x33')](_0x5310b1['model'],_0x5310b1[_0xc1e9('0x34')]);_0x5edac8[_0xc1e9('0x35')]=_[_0xc1e9('0x33')](_0x5310b1[_0xc1e9('0x30')],qs[_0xc1e9('0x36')](_0x566f9d[_0xc1e9('0x34')][_0xc1e9('0x36')]));_0x5edac8[_0xc1e9('0x35')]=_0x5edac8[_0xc1e9('0x35')][_0xc1e9('0x37')]?_0x5edac8[_0xc1e9('0x35')]:_0x5310b1[_0xc1e9('0x30')];if(!_0x566f9d[_0xc1e9('0x34')][_0xc1e9('0x38')]('nolimit')){_0x5edac8[_0xc1e9('0x1f')]=qs['limit'](_0x566f9d[_0xc1e9('0x34')][_0xc1e9('0x1f')]);_0x5edac8[_0xc1e9('0x1d')]=qs[_0xc1e9('0x1d')](_0x566f9d[_0xc1e9('0x34')][_0xc1e9('0x1d')]);}_0x5edac8[_0xc1e9('0x39')]=qs[_0xc1e9('0x3a')](_0x566f9d[_0xc1e9('0x34')][_0xc1e9('0x3a')]);_0x5edac8[_0xc1e9('0x3b')]=qs[_0xc1e9('0x32')](_[_0xc1e9('0x3c')](_0x566f9d['query'],_0x5310b1[_0xc1e9('0x32')]));_0x5edac8['where'][_0xc1e9('0x54')]=_0x2110b3['id'];if(_0x566f9d[_0xc1e9('0x34')]['filter']){_0x5edac8['where']=_[_0xc1e9('0x3d')](_0x5edac8[_0xc1e9('0x3b')],{'$or':_[_0xc1e9('0x2b')](_0x5edac8['attributes'],function(_0x34ea1c){var _0x86fe04={};_0x86fe04[_0x34ea1c]={'$like':'%'+_0x566f9d[_0xc1e9('0x34')][_0xc1e9('0x55')]+'%'};return _0x86fe04;})});}_0x5edac8=_['merge']({},_0x5edac8,_0x566f9d[_0xc1e9('0x3e')]);return db['JscriptySessionReport']['count']({'where':_0x5edac8[_0xc1e9('0x3b')]})['then'](function(_0x4a0991){_0x26e433[_0xc1e9('0x1e')]=_0x4a0991;if(_0x566f9d['query'][_0xc1e9('0x3f')]){_0x5edac8['include']=[{'all':!![]}];}return db[_0xc1e9('0x56')][_0xc1e9('0x57')](_0x5edac8);})[_0xc1e9('0x25')](function(_0x56e86f){_0x26e433['rows']=_0x56e86f;return _0x26e433;});}})['then'](respondWithFilteredResult(_0x189404,_0x5edac8))[_0xc1e9('0x44')](handleError(_0x189404,null));};exports[_0xc1e9('0x58')]=function(_0x37f24a,_0x46228b,_0x544cab){var _0x25cdc5={'raw':!![],'where':{}};var _0x8a095b={};var _0xf51620={'count':0x0,'rows':[]};return db[_0xc1e9('0x2c')][_0xc1e9('0x53')]({'where':{'id':_0x37f24a[_0xc1e9('0x4e')]['id']}})[_0xc1e9('0x25')](handleEntityNotFound(_0x46228b,null))['then'](function(_0x213dbd){if(_0x213dbd){_0x8a095b[_0xc1e9('0x30')]=_[_0xc1e9('0x31')](db[_0xc1e9('0x59')][_0xc1e9('0x2d')]);_0x8a095b['query']=_['keys'](_0x37f24a[_0xc1e9('0x34')]);_0x8a095b['filters']=_[_0xc1e9('0x33')](_0x8a095b[_0xc1e9('0x30')],_0x8a095b[_0xc1e9('0x34')]);_0x25cdc5[_0xc1e9('0x35')]=_[_0xc1e9('0x33')](_0x8a095b[_0xc1e9('0x30')],qs[_0xc1e9('0x36')](_0x37f24a['query'][_0xc1e9('0x36')]));_0x25cdc5[_0xc1e9('0x35')]=_0x25cdc5[_0xc1e9('0x35')][_0xc1e9('0x37')]?_0x25cdc5[_0xc1e9('0x35')]:_0x8a095b[_0xc1e9('0x30')];if(!_0x37f24a['query']['hasOwnProperty'](_0xc1e9('0x5a'))){_0x25cdc5['limit']=qs['limit'](_0x37f24a[_0xc1e9('0x34')][_0xc1e9('0x1f')]);_0x25cdc5[_0xc1e9('0x1d')]=qs[_0xc1e9('0x1d')](_0x37f24a[_0xc1e9('0x34')]['offset']);}_0x25cdc5[_0xc1e9('0x39')]=qs[_0xc1e9('0x3a')](_0x37f24a[_0xc1e9('0x34')]['sort']);_0x25cdc5[_0xc1e9('0x3b')]=qs[_0xc1e9('0x32')](_[_0xc1e9('0x3c')](_0x37f24a['query'],_0x8a095b[_0xc1e9('0x32')]));_0x25cdc5['where'][_0xc1e9('0x54')]=_0x213dbd['id'];if(_0x37f24a['query'][_0xc1e9('0x55')]){_0x25cdc5['where']=_[_0xc1e9('0x3d')](_0x25cdc5['where'],{'$or':_[_0xc1e9('0x2b')](_0x25cdc5[_0xc1e9('0x35')],function(_0x4ff67a){var _0x25c303={};_0x25c303[_0x4ff67a]={'$like':'%'+_0x37f24a[_0xc1e9('0x34')]['filter']+'%'};return _0x25c303;})});}_0x25cdc5=_[_0xc1e9('0x3d')]({},_0x25cdc5,_0x37f24a['options']);return db[_0xc1e9('0x59')][_0xc1e9('0x1e')]({'where':_0x25cdc5[_0xc1e9('0x3b')]})[_0xc1e9('0x25')](function(_0x345fa4){_0xf51620[_0xc1e9('0x1e')]=_0x345fa4;if(_0x37f24a['query'][_0xc1e9('0x3f')]){_0x25cdc5['include']=[{'all':!![]}];}return db['JscriptyAnswerReport'][_0xc1e9('0x57')](_0x25cdc5);})['then'](function(_0x5cef1a){_0xf51620[_0xc1e9('0x41')]=_0x5cef1a;return _0xf51620;});}})['then'](respondWithFilteredResult(_0x46228b,_0x25cdc5))[_0xc1e9('0x44')](handleError(_0x46228b,null));};function char(_0x4f1c74){return _0xc1e9('0x5b')===typeof _0x4f1c74?String[_0xc1e9('0x5c')][_0xc1e9('0x22')](null,arguments):_0x4f1c74;}function needsEncapsulation(_0x3d2ecd){return!!_0x3d2ecd&&(_0x3d2ecd[_0xc1e9('0x5d')]()['indexOf'](char(0xd))>=0x0||_0x3d2ecd[_0xc1e9('0x5d')]()[_0xc1e9('0x5e')](char(0xa))>=0x0||_0x3d2ecd[_0xc1e9('0x5d')]()[_0xc1e9('0x5e')](char(0x2c))>=0x0||_0x3d2ecd[_0xc1e9('0x5d')]()[_0xc1e9('0x5e')](char(0x22))>=0x0);}function encapsulate(_0x435d2b){var _0x2d2b77=char(0x22),_0x2cadd2='\x5c'+char(0x22),_0x266941=_0x435d2b['toString']()[_0xc1e9('0x5f')](new RegExp(_0x2d2b77,'g'),_0x2cadd2);return _0x2d2b77+_0x266941+_0x2d2b77;}exports[_0xc1e9('0x60')]=function(_0x19a5be,_0x802029,_0xb507c9){var _0x12c5a3,_0x5d7b77;var _0x4855d7={'where':{'ProjectId':_0x19a5be['params']['id']}};if(_0x19a5be[_0xc1e9('0x34')][_0xc1e9('0x61')]){_0x4855d7[_0xc1e9('0x3b')][_0xc1e9('0x62')]=JSON[_0xc1e9('0x63')](_0x19a5be[_0xc1e9('0x34')][_0xc1e9('0x61')]);}return db['JscriptySessionReport'][_0xc1e9('0x57')](_0x4855d7)[_0xc1e9('0x25')](handleEntityNotFound(_0x802029,null))[_0xc1e9('0x25')](function(_0x120770){if(_0x120770){_0x12c5a3=_0x120770;return db[_0xc1e9('0x64')]['findAll']({'where':{'SessionId':{'$in':_[_0xc1e9('0x2b')](_0x12c5a3,'id')},'ProjectId':_0x19a5be['params']['id']},'order':_0xc1e9('0x65')});}})[_0xc1e9('0x25')](handleEntityNotFound(_0x802029,null))['then'](function(_0x27e368){if(_0x27e368){_0x5d7b77=_0x27e368;var _0x18eac8={};for(var _0x23d690=0x0,_0x3f23a0=_0x5d7b77[_0xc1e9('0x37')];_0x23d690<_0x3f23a0;_0x23d690++){if(!_0x18eac8[_0xc1e9('0x38')](_0x5d7b77[_0x23d690]['questionId'])){_0x18eac8[_0x5d7b77[_0x23d690][_0xc1e9('0x66')]]=needsEncapsulation(_0x5d7b77[_0x23d690][_0xc1e9('0x67')])?encapsulate(_0x5d7b77[_0x23d690][_0xc1e9('0x67')]):_0x5d7b77[_0x23d690][_0xc1e9('0x67')];}}var _0x3e0625=[],_0x3f860d={};for(var _0x3b02f8=0x0,_0x38f2db=_0x12c5a3[_0xc1e9('0x37')];_0x3b02f8<_0x38f2db;_0x3b02f8++){_0x3f860d={'ProjectId':_0x19a5be[_0xc1e9('0x4e')]['id'],'SessionId':_0x12c5a3[_0x3b02f8]['id'],'StartTime':moment(_0x12c5a3[_0x3b02f8][_0xc1e9('0x62')])['format'](_0xc1e9('0x68'))};for(var _0x3694cb=0x0,_0x495813=_0x5d7b77[_0xc1e9('0x37')];_0x3694cb<_0x495813;_0x3694cb++){if(_0x5d7b77[_0x3694cb][_0xc1e9('0x69')]==_0x12c5a3[_0x3b02f8]['id']&&_0x18eac8[_0xc1e9('0x38')](_0x5d7b77[_0x3694cb][_0xc1e9('0x66')])){_0x3f860d[_0x18eac8[_0x5d7b77[_0x3694cb][_0xc1e9('0x66')]]]=_0x5d7b77[_0x3694cb][_0xc1e9('0x6a')];}}for(var _0x253e7b in _0x18eac8){if(!_0x3f860d[_0xc1e9('0x38')](_0x18eac8[_0x253e7b])){_0x3f860d[_0x18eac8[_0x253e7b]]=null;}}_0x3e0625['push'](_0x3f860d);}return _0x3e0625;}})[_0xc1e9('0x25')](function(_0x5d87eb){if(!_['isEmpty'](_0x5d87eb)){var _0x2c71eb=toCsv(_0x5d87eb);var _0x224d2b=Date[_0xc1e9('0x6b')]();fs[_0xc1e9('0x6c')](util[_0xc1e9('0x6d')](_0xc1e9('0x6e'),_0x19a5be[_0xc1e9('0x4e')]['id'],_0x224d2b),_0x2c71eb);_0x802029[_0xc1e9('0x6f')]('Content-disposition',_0xc1e9('0x70')+util[_0xc1e9('0x6d')](_0xc1e9('0x71'),_0x19a5be[_0xc1e9('0x4e')]['id'],_0x224d2b));_0x802029[_0xc1e9('0x6f')](_0xc1e9('0x72'),'text/csv');return _0x802029[_0xc1e9('0x73')](util[_0xc1e9('0x6d')](_0xc1e9('0x6e'),_0x19a5be['params']['id'],_0x224d2b));}else{return _0x802029[_0xc1e9('0x19')](0xcc);}})[_0xc1e9('0x44')](handleError(_0x802029,null));};
\ No newline at end of file
index ba9f7cc..98a3bd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd51f=['lodash','util','api','moment','request-promise','path','../../config/environment','./jscriptyProject.attributes','JscriptyProject','jscripty_projects'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0xd51f,0xf0));var _0xfd51=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0xd51f[_0x4e676e];return _0x336a3c;};'use strict';var _=require(_0xfd51('0x0'));var util=require(_0xfd51('0x1'));var logger=require('../../config/logger')(_0xfd51('0x2'));var moment=require(_0xfd51('0x3'));var BPromise=require('bluebird');var rp=require(_0xfd51('0x4'));var fs=require('fs');var path=require(_0xfd51('0x5'));var rimraf=require('rimraf');var config=require(_0xfd51('0x6'));var attributes=require(_0xfd51('0x7'));module['exports']=function(_0x3e3517,_0x3a2cd4){return _0x3e3517['define'](_0xfd51('0x8'),attributes,{'tableName':_0xfd51('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7edb=['define','JscriptyProject','jscripty_projects','util','../../config/logger','api','moment','bluebird','path','./jscriptyProject.attributes','exports'];(function(_0x4969f5,_0x5c0e3a){var _0xca7c45=function(_0x1476b5){while(--_0x1476b5){_0x4969f5['push'](_0x4969f5['shift']());}};_0xca7c45(++_0x5c0e3a);}(_0x7edb,0x158));var _0xb7ed=function(_0x52ccb7,_0x4a220a){_0x52ccb7=_0x52ccb7-0x0;var _0x4e8c4b=_0x7edb[_0x52ccb7];return _0x4e8c4b;};'use strict';var _=require('lodash');var util=require(_0xb7ed('0x0'));var logger=require(_0xb7ed('0x1'))(_0xb7ed('0x2'));var moment=require(_0xb7ed('0x3'));var BPromise=require(_0xb7ed('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb7ed('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xb7ed('0x6'));module[_0xb7ed('0x7')]=function(_0x2aa67d,_0x246cfa){return _0x2aa67d[_0xb7ed('0x8')](_0xb7ed('0x9'),attributes,{'tableName':_0xb7ed('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 9481b8c..6bbac9b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['code','JscriptyProject,\x20%s,\x20%s','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','info','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x43ef3,_0x361e7c){var _0x5c1191=function(_0x321dfa){while(--_0x321dfa){_0x43ef3['push'](_0x43ef3['shift']());}};_0x5c1191(++_0x361e7c);}(_0x70e0,0x17b));var _0x070e=function(_0x90c3a3,_0x1f7d6a){_0x90c3a3=_0x90c3a3-0x0;var _0x5ed2fe=_0x70e0[_0x90c3a3];return _0x5ed2fe;};'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')]('JscriptyProject,\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')]('JscriptyProject,\x20%s,\x20%s',_0x5032e5,_0x68a09e['error']['message']);return _0x1e11f0(_0x68a09e[_0x070e('0x10')][_0x070e('0x13')]);}else{logger['info']('JscriptyProject,\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 _0xda3f=['rpc','jayson/promise','client','request','then','info','JscriptyProject,\x20%s,\x20%s','request\x20sent','debug','JscriptyProject,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','../../mysqldb','../../config/logger'];(function(_0x2ef8c1,_0x2f72f4){var _0x288305=function(_0x56244b){while(--_0x56244b){_0x2ef8c1['push'](_0x2ef8c1['shift']());}};_0x288305(++_0x2f72f4);}(_0xda3f,0xec));var _0xfda3=function(_0x5c0fba,_0x3f1eea){_0x5c0fba=_0x5c0fba-0x0;var _0x2d1eac=_0xda3f[_0x5c0fba];return _0x2d1eac;};'use strict';var _=require('lodash');var util=require(_0xfda3('0x0'));var moment=require(_0xfda3('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfda3('0x2'))['db'];var utils=require('../../config/utils');var logger=require(_0xfda3('0x3'))(_0xfda3('0x4'));var config=require('../../config/environment');var jayson=require(_0xfda3('0x5'));var client=jayson[_0xfda3('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4e72d1,_0x316792,_0x42476a){return new BPromise(function(_0x125e2a,_0x4018c0){return client[_0xfda3('0x7')](_0x4e72d1,_0x42476a)[_0xfda3('0x8')](function(_0x46655c){logger[_0xfda3('0x9')](_0xfda3('0xa'),_0x316792,_0xfda3('0xb'));logger[_0xfda3('0xc')](_0xfda3('0xd'),_0x316792,'request\x20sent',JSON[_0xfda3('0xe')](_0x46655c));if(_0x46655c[_0xfda3('0xf')]){if(_0x46655c[_0xfda3('0xf')][_0xfda3('0x10')]===0x1f4){logger[_0xfda3('0xf')]('JscriptyProject,\x20%s,\x20%s',_0x316792,_0x46655c[_0xfda3('0xf')]['message']);return _0x4018c0(_0x46655c[_0xfda3('0xf')][_0xfda3('0x11')]);}logger['error']('JscriptyProject,\x20%s,\x20%s',_0x316792,_0x46655c['error'][_0xfda3('0x11')]);return _0x125e2a(_0x46655c[_0xfda3('0xf')]['message']);}else{logger['info']('JscriptyProject,\x20%s,\x20%s',_0x316792,_0xfda3('0xb'));_0x125e2a(_0x46655c[_0xfda3('0x12')][_0xfda3('0x11')]);}})[_0xfda3('0x13')](function(_0x34900d){logger[_0xfda3('0xf')](_0xfda3('0xa'),_0x316792,_0x34900d);_0x4018c0(_0x34900d);});});}
\ No newline at end of file
index 5b2d08c..2a6b46b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x967b=['describe','post','create','/:id','delete','util','path','connect-timeout','express','Router','../../components/interaction/service','./jscriptyQuestionReport.controller','isAuthenticated','get','/describe'];(function(_0x596de3,_0x41f133){var _0x50b3e5=function(_0x1b277d){while(--_0x1b277d){_0x596de3['push'](_0x596de3['shift']());}};_0x50b3e5(++_0x41f133);}(_0x967b,0x19a));var _0xb967=function(_0x3ea913,_0x255df2){_0x3ea913=_0x3ea913-0x0;var _0x2b4f28=_0x967b[_0x3ea913];return _0x2b4f28;};'use strict';var multer=require('multer');var util=require(_0xb967('0x0'));var path=require(_0xb967('0x1'));var timeout=require(_0xb967('0x2'));var express=require(_0xb967('0x3'));var router=express[_0xb967('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xb967('0x5'));var config=require('../../config/environment');var controller=require(_0xb967('0x6'));router['get']('/',auth[_0xb967('0x7')](),controller['index']);router[_0xb967('0x8')](_0xb967('0x9'),auth[_0xb967('0x7')](),controller[_0xb967('0xa')]);router[_0xb967('0x8')]('/:id',auth[_0xb967('0x7')](),controller['show']);router[_0xb967('0xb')]('/',auth[_0xb967('0x7')](),controller[_0xb967('0xc')]);router['put'](_0xb967('0xd'),auth[_0xb967('0x7')](),controller['update']);router[_0xb967('0xe')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x220b=['index','/describe','describe','/:id','show','post','create','put','update','destroy','multer','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated'];(function(_0xbc4560,_0x4020b8){var _0x298cfb=function(_0x254423){while(--_0x254423){_0xbc4560['push'](_0xbc4560['shift']());}};_0x298cfb(++_0x4020b8);}(_0x220b,0x1e5));var _0xb220=function(_0x95942,_0x85da80){_0x95942=_0x95942-0x0;var _0x6d7f81=_0x220b[_0x95942];return _0x6d7f81;};'use strict';var multer=require(_0xb220('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xb220('0x1'));var express=require(_0xb220('0x2'));var router=express['Router']();var fs_extra=require(_0xb220('0x3'));var auth=require(_0xb220('0x4'));var interaction=require(_0xb220('0x5'));var config=require(_0xb220('0x6'));var controller=require('./jscriptyQuestionReport.controller');router[_0xb220('0x7')]('/',auth[_0xb220('0x8')](),controller[_0xb220('0x9')]);router[_0xb220('0x7')](_0xb220('0xa'),auth[_0xb220('0x8')](),controller[_0xb220('0xb')]);router['get'](_0xb220('0xc'),auth[_0xb220('0x8')](),controller[_0xb220('0xd')]);router[_0xb220('0xe')]('/',auth['isAuthenticated'](),controller[_0xb220('0xf')]);router[_0xb220('0x10')](_0xb220('0xc'),auth['isAuthenticated'](),controller[_0xb220('0x11')]);router['delete']('/:id',auth[_0xb220('0x8')](),controller[_0xb220('0x12')]);module['exports']=router;
\ No newline at end of file
index be24ac4..0e7a7d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0xd12176,_0x6bcd07){_0xd12176=_0xd12176-0x0;var _0x3472eb=_0x7a54[_0xd12176];return _0x3472eb;};'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(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0x7a54,0x106));var _0x47a5=function(_0xc587cf,_0x97622d){_0xc587cf=_0xc587cf-0x0;var _0x33a112=_0x7a54[_0xc587cf];return _0x33a112;};'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 efc17bb..f981e06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe9dd=['merge','type','options','JscriptyQuestionReport','includeAll','include','findAll','rows','catch','show','params','find','create','body','describe','eml-format','rimraf','request-promise','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','update','then','destroy','error','stack','name','send','map','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','filter'];(function(_0x13e741,_0x5d3c24){var _0x3f8bb3=function(_0x4440a0){while(--_0x4440a0){_0x13e741['push'](_0x13e741['shift']());}};_0x3f8bb3(++_0x5d3c24);}(_0xe9dd,0xa1));var _0xde9d=function(_0x1f2699,_0x20618f){_0x1f2699=_0x1f2699-0x0;var _0x4ee0f0=_0xe9dd[_0x1f2699];return _0x4ee0f0;};'use strict';var emlformat=require(_0xde9d('0x0'));var rimraf=require(_0xde9d('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xde9d('0x2'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xde9d('0x3'));var util=require(_0xde9d('0x4'));var path=require(_0xde9d('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xde9d('0x6'));var fs=require('fs');var fs_extra=require(_0xde9d('0x7'));var _=require(_0xde9d('0x8'));var squel=require(_0xde9d('0x9'));var crypto=require(_0xde9d('0xa'));var jsforce=require(_0xde9d('0xb'));var deskjs=require(_0xde9d('0xc'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xde9d('0xd'));var Redis=require('ioredis');var authService=require(_0xde9d('0xe'));var qs=require(_0xde9d('0xf'));var as=require(_0xde9d('0x10'));var hardwareService=require(_0xde9d('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0xde9d('0x12'));var config=require(_0xde9d('0x13'));var licenseUtil=require(_0xde9d('0x14'));var db=require(_0xde9d('0x15'))['db'];function respondWithStatusCode(_0x210322,_0x3144fa){_0x3144fa=_0x3144fa||0xcc;return function(_0x149651){if(_0x149651){return _0x210322[_0xde9d('0x16')](_0x3144fa);}return _0x210322['status'](_0x3144fa)[_0xde9d('0x17')]();};}function respondWithResult(_0x3bca92,_0x476836){_0x476836=_0x476836||0xc8;return function(_0x1da8b3){if(_0x1da8b3){return _0x3bca92[_0xde9d('0x18')](_0x476836)['json'](_0x1da8b3);}};}function respondWithFilteredResult(_0x1a0c41,_0x298ca5){return function(_0x3505b5){if(_0x3505b5){var _0x5d5bce=typeof _0x298ca5[_0xde9d('0x19')]===_0xde9d('0x1a')&&typeof _0x298ca5[_0xde9d('0x1b')]===_0xde9d('0x1a');var _0x25b113=_0x3505b5['count'];var _0x424fb8=_0x5d5bce?0x0:_0x298ca5['offset'];var _0x43ebe1=_0x5d5bce?_0x3505b5[_0xde9d('0x1c')]:_0x298ca5[_0xde9d('0x19')]+_0x298ca5['limit'];var _0x27c2fc;if(_0x43ebe1>=_0x25b113){_0x43ebe1=_0x25b113;_0x27c2fc=0xc8;}else{_0x27c2fc=0xce;}_0x1a0c41[_0xde9d('0x18')](_0x27c2fc);return _0x1a0c41[_0xde9d('0x1d')](_0xde9d('0x1e'),_0x424fb8+'-'+_0x43ebe1+'/'+_0x25b113)[_0xde9d('0x1f')](_0x3505b5);}return null;};}function patchUpdates(_0x360d34){return function(_0x2d929a){try{jsonpatch[_0xde9d('0x20')](_0x2d929a,_0x360d34,!![]);}catch(_0xb30a11){return BPromise[_0xde9d('0x21')](_0xb30a11);}return _0x2d929a['save']();};}function saveUpdates(_0x4dec2e,_0x3e3114){return function(_0x28cfa3){if(_0x28cfa3){return _0x28cfa3[_0xde9d('0x22')](_0x4dec2e)[_0xde9d('0x23')](function(_0x5214a5){return _0x5214a5;});}return null;};}function removeEntity(_0x1622ea,_0x2bc501){return function(_0x333382){if(_0x333382){return _0x333382[_0xde9d('0x24')]()['then'](function(){_0x1622ea[_0xde9d('0x18')](0xcc)[_0xde9d('0x17')]();});}};}function handleEntityNotFound(_0x5e7346,_0x1e6574){return function(_0x2e08f2){if(!_0x2e08f2){_0x5e7346[_0xde9d('0x16')](0x194);}return _0x2e08f2;};}function handleError(_0xc58a43,_0x3d0cc9){_0x3d0cc9=_0x3d0cc9||0x1f4;return function(_0xa51f08){logger[_0xde9d('0x25')](_0xa51f08[_0xde9d('0x26')]);if(_0xa51f08[_0xde9d('0x27')]){delete _0xa51f08['name'];}_0xc58a43[_0xde9d('0x18')](_0x3d0cc9)[_0xde9d('0x28')](_0xa51f08);};}exports['index']=function(_0xacfb4d,_0x5d50a7){var _0x4a50fd={},_0x3fb914={},_0x473f80={'count':0x0,'rows':[]};var _0x259dac=_[_0xde9d('0x29')](db['JscriptyQuestionReport']['rawAttributes'],function(_0x3d9284){return{'name':_0x3d9284[_0xde9d('0x2a')],'type':_0x3d9284['type'][_0xde9d('0x2b')]};});_0x3fb914[_0xde9d('0x2c')]=_[_0xde9d('0x29')](_0x259dac,'name');_0x3fb914[_0xde9d('0x2d')]=_[_0xde9d('0x2e')](_0xacfb4d['query']);_0x3fb914[_0xde9d('0x2f')]=_[_0xde9d('0x30')](_0x3fb914[_0xde9d('0x2c')],_0x3fb914[_0xde9d('0x2d')]);_0x4a50fd['attributes']=_[_0xde9d('0x30')](_0x3fb914[_0xde9d('0x2c')],qs[_0xde9d('0x31')](_0xacfb4d[_0xde9d('0x2d')][_0xde9d('0x31')]));_0x4a50fd['attributes']=_0x4a50fd[_0xde9d('0x32')][_0xde9d('0x33')]?_0x4a50fd[_0xde9d('0x32')]:_0x3fb914[_0xde9d('0x2c')];if(!_0xacfb4d[_0xde9d('0x2d')][_0xde9d('0x34')](_0xde9d('0x35'))){_0x4a50fd[_0xde9d('0x1b')]=qs[_0xde9d('0x1b')](_0xacfb4d[_0xde9d('0x2d')][_0xde9d('0x1b')]);_0x4a50fd[_0xde9d('0x19')]=qs['offset'](_0xacfb4d[_0xde9d('0x2d')][_0xde9d('0x19')]);}_0x4a50fd['order']=qs[_0xde9d('0x36')](_0xacfb4d[_0xde9d('0x2d')][_0xde9d('0x36')]);_0x4a50fd[_0xde9d('0x37')]=qs[_0xde9d('0x2f')](_[_0xde9d('0x38')](_0xacfb4d['query'],_0x3fb914[_0xde9d('0x2f')]),_0x259dac);if(_0xacfb4d[_0xde9d('0x2d')][_0xde9d('0x39')]){_0x4a50fd[_0xde9d('0x37')]=_[_0xde9d('0x3a')](_0x4a50fd[_0xde9d('0x37')],{'$or':_[_0xde9d('0x29')](_0x259dac,function(_0x5b8e70){if(_0x5b8e70[_0xde9d('0x3b')]!=='VIRTUAL'){var _0x4dd277={};_0x4dd277[_0x5b8e70['name']]={'$like':'%'+_0xacfb4d['query'][_0xde9d('0x39')]+'%'};return _0x4dd277;}})});}_0x4a50fd=_[_0xde9d('0x3a')]({},_0x4a50fd,_0xacfb4d[_0xde9d('0x3c')]);var _0x5e4de2={'where':_0x4a50fd[_0xde9d('0x37')]};return db[_0xde9d('0x3d')]['count'](_0x5e4de2)[_0xde9d('0x23')](function(_0x43c2d4){_0x473f80[_0xde9d('0x1c')]=_0x43c2d4;if(_0xacfb4d[_0xde9d('0x2d')][_0xde9d('0x3e')]){_0x4a50fd[_0xde9d('0x3f')]=[{'all':!![]}];}return db['JscriptyQuestionReport'][_0xde9d('0x40')](_0x4a50fd);})[_0xde9d('0x23')](function(_0x53a5bc){_0x473f80[_0xde9d('0x41')]=_0x53a5bc;return _0x473f80;})[_0xde9d('0x23')](respondWithFilteredResult(_0x5d50a7,_0x4a50fd))[_0xde9d('0x42')](handleError(_0x5d50a7,null));};exports[_0xde9d('0x43')]=function(_0x297135,_0x5e33f7){var _0x1d675c={'raw':!![],'where':{'id':_0x297135[_0xde9d('0x44')]['id']}},_0x5e20a1={};_0x5e20a1[_0xde9d('0x2c')]=_[_0xde9d('0x2e')](db['JscriptyQuestionReport']['rawAttributes']);_0x5e20a1[_0xde9d('0x2d')]=_['keys'](_0x297135['query']);_0x5e20a1[_0xde9d('0x2f')]=_['intersection'](_0x5e20a1[_0xde9d('0x2c')],_0x5e20a1[_0xde9d('0x2d')]);_0x1d675c[_0xde9d('0x32')]=_[_0xde9d('0x30')](_0x5e20a1['model'],qs['fields'](_0x297135['query'][_0xde9d('0x31')]));_0x1d675c[_0xde9d('0x32')]=_0x1d675c[_0xde9d('0x32')][_0xde9d('0x33')]?_0x1d675c['attributes']:_0x5e20a1[_0xde9d('0x2c')];if(_0x297135[_0xde9d('0x2d')][_0xde9d('0x3e')]){_0x1d675c[_0xde9d('0x3f')]=[{'all':!![]}];}_0x1d675c=_[_0xde9d('0x3a')]({},_0x1d675c,_0x297135['options']);return db['JscriptyQuestionReport'][_0xde9d('0x45')](_0x1d675c)[_0xde9d('0x23')](handleEntityNotFound(_0x5e33f7,null))[_0xde9d('0x23')](respondWithResult(_0x5e33f7,null))[_0xde9d('0x42')](handleError(_0x5e33f7,null));};exports[_0xde9d('0x46')]=function(_0x50fd5e,_0x24a124){return db[_0xde9d('0x3d')][_0xde9d('0x46')](_0x50fd5e['body'],{})['then'](respondWithResult(_0x24a124,0xc9))[_0xde9d('0x42')](handleError(_0x24a124,null));};exports[_0xde9d('0x22')]=function(_0x4ff74e,_0x24fc58){if(_0x4ff74e[_0xde9d('0x47')]['id']){delete _0x4ff74e[_0xde9d('0x47')]['id'];}return db[_0xde9d('0x3d')][_0xde9d('0x45')]({'where':{'id':_0x4ff74e[_0xde9d('0x44')]['id']}})['then'](handleEntityNotFound(_0x24fc58,null))['then'](saveUpdates(_0x4ff74e[_0xde9d('0x47')],null))[_0xde9d('0x23')](respondWithResult(_0x24fc58,null))[_0xde9d('0x42')](handleError(_0x24fc58,null));};exports[_0xde9d('0x24')]=function(_0x45919e,_0x112455){return db[_0xde9d('0x3d')]['find']({'where':{'id':_0x45919e[_0xde9d('0x44')]['id']}})['then'](handleEntityNotFound(_0x112455,null))[_0xde9d('0x23')](removeEntity(_0x112455,null))[_0xde9d('0x42')](handleError(_0x112455,null));};exports[_0xde9d('0x48')]=function(_0x258ee3,_0x25fab5){return db['JscriptyQuestionReport'][_0xde9d('0x48')]()[_0xde9d('0x23')](respondWithResult(_0x25fab5,null))['catch'](handleError(_0x25fab5,null));};
\ No newline at end of file
+var _0x7f1d=['find','params','describe','eml-format','rimraf','zip-dir','request-promise','moment','util','path','sox','to-csv','ejs','fs-extra','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','undefined','offset','limit','set','Content-Range','save','update','then','destroy','end','error','stack','name','index','map','JscriptyQuestionReport','rawAttributes','fieldName','query','model','intersection','fields','attributes','length','nolimit','order','sort','filters','filter','where','merge','type','options','count','includeAll','include','findAll','rows','show','keys','create','catch','body'];(function(_0x45d55e,_0x2fede3){var _0x29812a=function(_0x3c6830){while(--_0x3c6830){_0x45d55e['push'](_0x45d55e['shift']());}};_0x29812a(++_0x2fede3);}(_0x7f1d,0x170));var _0xd7f1=function(_0x4adead,_0x3e7eef){_0x4adead=_0x4adead-0x0;var _0x34cfca=_0x7f1d[_0x4adead];return _0x34cfca;};'use strict';var emlformat=require(_0xd7f1('0x0'));var rimraf=require(_0xd7f1('0x1'));var zipdir=require(_0xd7f1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd7f1('0x3'));var moment=require(_0xd7f1('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xd7f1('0x5'));var path=require(_0xd7f1('0x6'));var sox=require(_0xd7f1('0x7'));var csv=require(_0xd7f1('0x8'));var ejs=require(_0xd7f1('0x9'));var fs=require('fs');var fs_extra=require(_0xd7f1('0xa'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xd7f1('0xb'));var jsforce=require('jsforce');var deskjs=require(_0xd7f1('0xc'));var toCsv=require(_0xd7f1('0x8'));var querystring=require(_0xd7f1('0xd'));var Papa=require(_0xd7f1('0xe'));var Redis=require(_0xd7f1('0xf'));var authService=require(_0xd7f1('0x10'));var qs=require(_0xd7f1('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xd7f1('0x12'));var logger=require(_0xd7f1('0x13'))(_0xd7f1('0x14'));var utils=require(_0xd7f1('0x15'));var config=require(_0xd7f1('0x16'));var licenseUtil=require(_0xd7f1('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x510b27,_0x237f1f){_0x237f1f=_0x237f1f||0xcc;return function(_0x2969af){if(_0x2969af){return _0x510b27[_0xd7f1('0x18')](_0x237f1f);}return _0x510b27[_0xd7f1('0x19')](_0x237f1f)['end']();};}function respondWithResult(_0x517fc1,_0x49b590){_0x49b590=_0x49b590||0xc8;return function(_0x4b7db0){if(_0x4b7db0){return _0x517fc1[_0xd7f1('0x19')](_0x49b590)[_0xd7f1('0x1a')](_0x4b7db0);}};}function respondWithFilteredResult(_0x438219,_0x608a24){return function(_0x43a129){if(_0x43a129){var _0x5532f6=typeof _0x608a24['offset']===_0xd7f1('0x1b')&&typeof _0x608a24['limit']===_0xd7f1('0x1b');var _0x562118=_0x43a129['count'];var _0x324d05=_0x5532f6?0x0:_0x608a24[_0xd7f1('0x1c')];var _0x73e003=_0x5532f6?_0x43a129['count']:_0x608a24[_0xd7f1('0x1c')]+_0x608a24[_0xd7f1('0x1d')];var _0x3d0f96;if(_0x73e003>=_0x562118){_0x73e003=_0x562118;_0x3d0f96=0xc8;}else{_0x3d0f96=0xce;}_0x438219[_0xd7f1('0x19')](_0x3d0f96);return _0x438219[_0xd7f1('0x1e')](_0xd7f1('0x1f'),_0x324d05+'-'+_0x73e003+'/'+_0x562118)[_0xd7f1('0x1a')](_0x43a129);}return null;};}function patchUpdates(_0x316d22){return function(_0x23a626){try{jsonpatch['apply'](_0x23a626,_0x316d22,!![]);}catch(_0x13783f){return BPromise['reject'](_0x13783f);}return _0x23a626[_0xd7f1('0x20')]();};}function saveUpdates(_0x3dc27f,_0x3b3acf){return function(_0x3cb36f){if(_0x3cb36f){return _0x3cb36f[_0xd7f1('0x21')](_0x3dc27f)[_0xd7f1('0x22')](function(_0x1d017b){return _0x1d017b;});}return null;};}function removeEntity(_0x441fd9,_0x50e104){return function(_0x193926){if(_0x193926){return _0x193926[_0xd7f1('0x23')]()[_0xd7f1('0x22')](function(){_0x441fd9[_0xd7f1('0x19')](0xcc)[_0xd7f1('0x24')]();});}};}function handleEntityNotFound(_0x459cb2,_0x2bb33b){return function(_0x5c991a){if(!_0x5c991a){_0x459cb2[_0xd7f1('0x18')](0x194);}return _0x5c991a;};}function handleError(_0x586542,_0x483021){_0x483021=_0x483021||0x1f4;return function(_0x43f400){logger[_0xd7f1('0x25')](_0x43f400[_0xd7f1('0x26')]);if(_0x43f400[_0xd7f1('0x27')]){delete _0x43f400[_0xd7f1('0x27')];}_0x586542[_0xd7f1('0x19')](_0x483021)['send'](_0x43f400);};}exports[_0xd7f1('0x28')]=function(_0x7ab68c,_0x32c142){var _0x2cd28f={},_0x418190={},_0x4f9389={'count':0x0,'rows':[]};var _0x4b148e=_[_0xd7f1('0x29')](db[_0xd7f1('0x2a')][_0xd7f1('0x2b')],function(_0x5a70ac){return{'name':_0x5a70ac[_0xd7f1('0x2c')],'type':_0x5a70ac['type']['key']};});_0x418190['model']=_['map'](_0x4b148e,_0xd7f1('0x27'));_0x418190[_0xd7f1('0x2d')]=_['keys'](_0x7ab68c[_0xd7f1('0x2d')]);_0x418190['filters']=_['intersection'](_0x418190[_0xd7f1('0x2e')],_0x418190[_0xd7f1('0x2d')]);_0x2cd28f['attributes']=_[_0xd7f1('0x2f')](_0x418190[_0xd7f1('0x2e')],qs[_0xd7f1('0x30')](_0x7ab68c[_0xd7f1('0x2d')][_0xd7f1('0x30')]));_0x2cd28f[_0xd7f1('0x31')]=_0x2cd28f[_0xd7f1('0x31')][_0xd7f1('0x32')]?_0x2cd28f[_0xd7f1('0x31')]:_0x418190[_0xd7f1('0x2e')];if(!_0x7ab68c[_0xd7f1('0x2d')]['hasOwnProperty'](_0xd7f1('0x33'))){_0x2cd28f[_0xd7f1('0x1d')]=qs['limit'](_0x7ab68c[_0xd7f1('0x2d')][_0xd7f1('0x1d')]);_0x2cd28f[_0xd7f1('0x1c')]=qs[_0xd7f1('0x1c')](_0x7ab68c['query'][_0xd7f1('0x1c')]);}_0x2cd28f[_0xd7f1('0x34')]=qs['sort'](_0x7ab68c[_0xd7f1('0x2d')][_0xd7f1('0x35')]);_0x2cd28f['where']=qs[_0xd7f1('0x36')](_['pick'](_0x7ab68c['query'],_0x418190[_0xd7f1('0x36')]),_0x4b148e);if(_0x7ab68c[_0xd7f1('0x2d')][_0xd7f1('0x37')]){_0x2cd28f[_0xd7f1('0x38')]=_[_0xd7f1('0x39')](_0x2cd28f[_0xd7f1('0x38')],{'$or':_['map'](_0x4b148e,function(_0x3cf43c){if(_0x3cf43c[_0xd7f1('0x3a')]!=='VIRTUAL'){var _0x54d925={};_0x54d925[_0x3cf43c[_0xd7f1('0x27')]]={'$like':'%'+_0x7ab68c[_0xd7f1('0x2d')][_0xd7f1('0x37')]+'%'};return _0x54d925;}})});}_0x2cd28f=_[_0xd7f1('0x39')]({},_0x2cd28f,_0x7ab68c[_0xd7f1('0x3b')]);var _0x3f6339={'where':_0x2cd28f[_0xd7f1('0x38')]};return db[_0xd7f1('0x2a')][_0xd7f1('0x3c')](_0x3f6339)[_0xd7f1('0x22')](function(_0x4c312d){_0x4f9389[_0xd7f1('0x3c')]=_0x4c312d;if(_0x7ab68c[_0xd7f1('0x2d')][_0xd7f1('0x3d')]){_0x2cd28f[_0xd7f1('0x3e')]=[{'all':!![]}];}return db[_0xd7f1('0x2a')][_0xd7f1('0x3f')](_0x2cd28f);})[_0xd7f1('0x22')](function(_0x5165fe){_0x4f9389[_0xd7f1('0x40')]=_0x5165fe;return _0x4f9389;})[_0xd7f1('0x22')](respondWithFilteredResult(_0x32c142,_0x2cd28f))['catch'](handleError(_0x32c142,null));};exports[_0xd7f1('0x41')]=function(_0x1f682b,_0x4dbc38){var _0x580791={'raw':!![],'where':{'id':_0x1f682b['params']['id']}},_0x4628a8={};_0x4628a8['model']=_[_0xd7f1('0x42')](db[_0xd7f1('0x2a')][_0xd7f1('0x2b')]);_0x4628a8[_0xd7f1('0x2d')]=_['keys'](_0x1f682b[_0xd7f1('0x2d')]);_0x4628a8['filters']=_[_0xd7f1('0x2f')](_0x4628a8[_0xd7f1('0x2e')],_0x4628a8[_0xd7f1('0x2d')]);_0x580791['attributes']=_[_0xd7f1('0x2f')](_0x4628a8[_0xd7f1('0x2e')],qs[_0xd7f1('0x30')](_0x1f682b[_0xd7f1('0x2d')][_0xd7f1('0x30')]));_0x580791[_0xd7f1('0x31')]=_0x580791[_0xd7f1('0x31')]['length']?_0x580791[_0xd7f1('0x31')]:_0x4628a8[_0xd7f1('0x2e')];if(_0x1f682b[_0xd7f1('0x2d')][_0xd7f1('0x3d')]){_0x580791[_0xd7f1('0x3e')]=[{'all':!![]}];}_0x580791=_['merge']({},_0x580791,_0x1f682b[_0xd7f1('0x3b')]);return db[_0xd7f1('0x2a')]['find'](_0x580791)['then'](handleEntityNotFound(_0x4dbc38,null))[_0xd7f1('0x22')](respondWithResult(_0x4dbc38,null))['catch'](handleError(_0x4dbc38,null));};exports[_0xd7f1('0x43')]=function(_0x34105b,_0x45cfe0){return db['JscriptyQuestionReport'][_0xd7f1('0x43')](_0x34105b['body'],{})[_0xd7f1('0x22')](respondWithResult(_0x45cfe0,0xc9))[_0xd7f1('0x44')](handleError(_0x45cfe0,null));};exports[_0xd7f1('0x21')]=function(_0x5b3f18,_0x3d8da8){if(_0x5b3f18[_0xd7f1('0x45')]['id']){delete _0x5b3f18[_0xd7f1('0x45')]['id'];}return db[_0xd7f1('0x2a')][_0xd7f1('0x46')]({'where':{'id':_0x5b3f18[_0xd7f1('0x47')]['id']}})[_0xd7f1('0x22')](handleEntityNotFound(_0x3d8da8,null))[_0xd7f1('0x22')](saveUpdates(_0x5b3f18[_0xd7f1('0x45')],null))[_0xd7f1('0x22')](respondWithResult(_0x3d8da8,null))[_0xd7f1('0x44')](handleError(_0x3d8da8,null));};exports[_0xd7f1('0x23')]=function(_0x4f156d,_0x1f2e5b){return db['JscriptyQuestionReport'][_0xd7f1('0x46')]({'where':{'id':_0x4f156d[_0xd7f1('0x47')]['id']}})[_0xd7f1('0x22')](handleEntityNotFound(_0x1f2e5b,null))[_0xd7f1('0x22')](removeEntity(_0x1f2e5b,null))[_0xd7f1('0x44')](handleError(_0x1f2e5b,null));};exports['describe']=function(_0x36e38c,_0xb3c286){return db[_0xd7f1('0x2a')][_0xd7f1('0x48')]()['then'](respondWithResult(_0xb3c286,null))[_0xd7f1('0x44')](handleError(_0xb3c286,null));};
\ No newline at end of file
index fe94e12..2a05308 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36f2=['report_jscripty_questions','lodash','../../config/logger','api','request-promise','path','./jscriptyQuestionReport.attributes','define','JscriptyQuestionReport'];(function(_0x352934,_0x210375){var _0x4a0573=function(_0x1e7063){while(--_0x1e7063){_0x352934['push'](_0x352934['shift']());}};_0x4a0573(++_0x210375);}(_0x36f2,0x1ba));var _0x236f=function(_0x273aff,_0x457405){_0x273aff=_0x273aff-0x0;var _0x171f64=_0x36f2[_0x273aff];return _0x171f64;};'use strict';var _=require(_0x236f('0x0'));var util=require('util');var logger=require(_0x236f('0x1'))(_0x236f('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x236f('0x3'));var fs=require('fs');var path=require(_0x236f('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x236f('0x5'));module['exports']=function(_0x1e9f18,_0x3ddb2b){return _0x1e9f18[_0x236f('0x6')](_0x236f('0x7'),attributes,{'tableName':_0x236f('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9dc9=['rimraf','../../config/environment','./jscriptyQuestionReport.attributes','exports','define','JscriptyQuestionReport','lodash','util','../../config/logger','bluebird','request-promise'];(function(_0x5a573b,_0x2cdaca){var _0x224e12=function(_0x21672b){while(--_0x21672b){_0x5a573b['push'](_0x5a573b['shift']());}};_0x224e12(++_0x2cdaca);}(_0x9dc9,0xab));var _0x99dc=function(_0x3eca46,_0x476f9e){_0x3eca46=_0x3eca46-0x0;var _0x33f4f0=_0x9dc9[_0x3eca46];return _0x33f4f0;};'use strict';var _=require(_0x99dc('0x0'));var util=require(_0x99dc('0x1'));var logger=require(_0x99dc('0x2'))('api');var moment=require('moment');var BPromise=require(_0x99dc('0x3'));var rp=require(_0x99dc('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x99dc('0x5'));var config=require(_0x99dc('0x6'));var attributes=require(_0x99dc('0x7'));module[_0x99dc('0x8')]=function(_0x123826,_0x5d136a){return _0x123826[_0x99dc('0x9')](_0x99dc('0xa'),attributes,{'tableName':'report_jscripty_questions','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0381518..ef9f06a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe492=['error','code','message','info','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','JscriptyQuestionReport,\x20%s,\x20%s','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','request\x20sent'];(function(_0x5c107c,_0x17aa85){var _0x2b496f=function(_0x4d14c4){while(--_0x4d14c4){_0x5c107c['push'](_0x5c107c['shift']());}};_0x2b496f(++_0x17aa85);}(_0xe492,0x130));var _0x2e49=function(_0x80d21a,_0x26fc3b){_0x80d21a=_0x80d21a-0x0;var _0x239369=_0xe492[_0x80d21a];return _0x239369;};'use strict';var _=require(_0x2e49('0x0'));var util=require(_0x2e49('0x1'));var moment=require(_0x2e49('0x2'));var BPromise=require(_0x2e49('0x3'));var rs=require(_0x2e49('0x4'));var fs=require('fs');var Redis=require(_0x2e49('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x2e49('0x6'));var logger=require(_0x2e49('0x7'))(_0x2e49('0x8'));var config=require(_0x2e49('0x9'));var jayson=require(_0x2e49('0xa'));var client=jayson[_0x2e49('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4f78ca,_0xb5480e,_0x49b845){return new BPromise(function(_0x19c1b2,_0x43389b){return client[_0x2e49('0xc')](_0x4f78ca,_0x49b845)[_0x2e49('0xd')](function(_0x11746d){logger['info'](_0x2e49('0xe'),_0xb5480e,'request\x20sent');logger[_0x2e49('0xf')](_0x2e49('0x10'),_0xb5480e,_0x2e49('0x11'),JSON['stringify'](_0x11746d));if(_0x11746d[_0x2e49('0x12')]){if(_0x11746d[_0x2e49('0x12')][_0x2e49('0x13')]===0x1f4){logger[_0x2e49('0x12')](_0x2e49('0xe'),_0xb5480e,_0x11746d[_0x2e49('0x12')][_0x2e49('0x14')]);return _0x43389b(_0x11746d[_0x2e49('0x12')]['message']);}logger['error'](_0x2e49('0xe'),_0xb5480e,_0x11746d['error'][_0x2e49('0x14')]);return _0x19c1b2(_0x11746d['error']['message']);}else{logger[_0x2e49('0x15')](_0x2e49('0xe'),_0xb5480e,_0x2e49('0x11'));_0x19c1b2(_0x11746d['result'][_0x2e49('0x14')]);}})[_0x2e49('0x16')](function(_0x862875){logger[_0x2e49('0x12')](_0x2e49('0xe'),_0xb5480e,_0x862875);_0x43389b(_0x862875);});});}
\ No newline at end of file
+var _0x6753=['request','info','JscriptyQuestionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptyQuestionReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http'];(function(_0x16503d,_0x2a47e2){var _0x62d1bb=function(_0x1857d9){while(--_0x1857d9){_0x16503d['push'](_0x16503d['shift']());}};_0x62d1bb(++_0x2a47e2);}(_0x6753,0x78));var _0x3675=function(_0x334baf,_0x47d9f4){_0x334baf=_0x334baf-0x0;var _0x3f28df=_0x6753[_0x334baf];return _0x3f28df;};'use strict';var _=require(_0x3675('0x0'));var util=require(_0x3675('0x1'));var moment=require(_0x3675('0x2'));var BPromise=require(_0x3675('0x3'));var rs=require(_0x3675('0x4'));var fs=require('fs');var Redis=require(_0x3675('0x5'));var db=require(_0x3675('0x6'))['db'];var utils=require(_0x3675('0x7'));var logger=require(_0x3675('0x8'))(_0x3675('0x9'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x3675('0xa')][_0x3675('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x180bf0,_0x30b8aa,_0x302aec){return new BPromise(function(_0x5c3ba8,_0x532fd9){return client[_0x3675('0xc')](_0x180bf0,_0x302aec)['then'](function(_0x3819ae){logger[_0x3675('0xd')](_0x3675('0xe'),_0x30b8aa,_0x3675('0xf'));logger[_0x3675('0x10')](_0x3675('0x11'),_0x30b8aa,'request\x20sent',JSON[_0x3675('0x12')](_0x3819ae));if(_0x3819ae[_0x3675('0x13')]){if(_0x3819ae['error']['code']===0x1f4){logger['error']('JscriptyQuestionReport,\x20%s,\x20%s',_0x30b8aa,_0x3819ae[_0x3675('0x13')][_0x3675('0x14')]);return _0x532fd9(_0x3819ae['error'][_0x3675('0x14')]);}logger[_0x3675('0x13')](_0x3675('0xe'),_0x30b8aa,_0x3819ae[_0x3675('0x13')][_0x3675('0x14')]);return _0x5c3ba8(_0x3819ae['error']['message']);}else{logger[_0x3675('0xd')](_0x3675('0xe'),_0x30b8aa,_0x3675('0xf'));_0x5c3ba8(_0x3819ae[_0x3675('0x15')][_0x3675('0x14')]);}})['catch'](function(_0x6378d8){logger[_0x3675('0x13')]('JscriptyQuestionReport,\x20%s,\x20%s',_0x30b8aa,_0x6378d8);_0x532fd9(_0x6378d8);});});}
\ No newline at end of file
index ef5236b..a4dfd26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5aca=['../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','get','index','/describe','isAuthenticated','describe','show','getQuestions','post','put','/:id','update','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x5aca,0x84));var _0xa5ac=function(_0x3f7e71,_0x397f33){_0x3f7e71=_0x3f7e71-0x0;var _0x122c54=_0x5aca[_0x3f7e71];return _0x122c54;};'use strict';var multer=require(_0xa5ac('0x0'));var util=require(_0xa5ac('0x1'));var path=require(_0xa5ac('0x2'));var timeout=require('connect-timeout');var express=require(_0xa5ac('0x3'));var router=express[_0xa5ac('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xa5ac('0x5'));var interaction=require(_0xa5ac('0x6'));var config=require(_0xa5ac('0x7'));var controller=require(_0xa5ac('0x8'));router[_0xa5ac('0x9')]('/',auth['isAuthenticated'](),controller[_0xa5ac('0xa')]);router[_0xa5ac('0x9')](_0xa5ac('0xb'),auth[_0xa5ac('0xc')](),controller[_0xa5ac('0xd')]);router[_0xa5ac('0x9')]('/:id',auth[_0xa5ac('0xc')](),controller[_0xa5ac('0xe')]);router[_0xa5ac('0x9')]('/:id/questions',auth['isAuthenticated'](),controller[_0xa5ac('0xf')]);router[_0xa5ac('0x10')]('/',auth[_0xa5ac('0xc')](),controller['create']);router[_0xa5ac('0x11')](_0xa5ac('0x12'),auth[_0xa5ac('0xc')](),controller[_0xa5ac('0x13')]);router[_0xa5ac('0x14')](_0xa5ac('0x12'),auth[_0xa5ac('0xc')](),controller[_0xa5ac('0x15')]);module[_0xa5ac('0x16')]=router;
\ No newline at end of file
+var _0xf299=['update','delete','destroy','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./jscriptySessionReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/questions','getQuestions','post','create','put'];(function(_0x4243a3,_0x447337){var _0x1b2a33=function(_0x6a8200){while(--_0x6a8200){_0x4243a3['push'](_0x4243a3['shift']());}};_0x1b2a33(++_0x447337);}(_0xf299,0x153));var _0x9f29=function(_0xe556d0,_0x50042b){_0xe556d0=_0xe556d0-0x0;var _0x100250=_0xf299[_0xe556d0];return _0x100250;};'use strict';var multer=require('multer');var util=require(_0x9f29('0x0'));var path=require(_0x9f29('0x1'));var timeout=require(_0x9f29('0x2'));var express=require(_0x9f29('0x3'));var router=express['Router']();var fs_extra=require(_0x9f29('0x4'));var auth=require(_0x9f29('0x5'));var interaction=require(_0x9f29('0x6'));var config=require(_0x9f29('0x7'));var controller=require(_0x9f29('0x8'));router[_0x9f29('0x9')]('/',auth[_0x9f29('0xa')](),controller[_0x9f29('0xb')]);router[_0x9f29('0x9')](_0x9f29('0xc'),auth[_0x9f29('0xa')](),controller[_0x9f29('0xd')]);router['get'](_0x9f29('0xe'),auth[_0x9f29('0xa')](),controller[_0x9f29('0xf')]);router[_0x9f29('0x9')](_0x9f29('0x10'),auth['isAuthenticated'](),controller[_0x9f29('0x11')]);router[_0x9f29('0x12')]('/',auth[_0x9f29('0xa')](),controller[_0x9f29('0x13')]);router[_0x9f29('0x14')]('/:id',auth[_0x9f29('0xa')](),controller[_0x9f29('0x15')]);router[_0x9f29('0x16')]('/:id',auth[_0x9f29('0xa')](),controller[_0x9f29('0x17')]);module['exports']=router;
\ No newline at end of file
index ffd5f0f..8b41a95 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10a2=['STRING','BOOLEAN','moment','DATE','setDataValue','starttime','YYYY-MM-DD\x20HH:mm:ss'];(function(_0x473df0,_0x29db43){var _0x4c20c4=function(_0x29edc2){while(--_0x29edc2){_0x473df0['push'](_0x473df0['shift']());}};_0x4c20c4(++_0x29db43);}(_0x10a2,0x128));var _0x210a=function(_0x547a12,_0x425fb0){_0x547a12=_0x547a12-0x0;var _0x3650a4=_0x10a2[_0x547a12];return _0x3650a4;};'use strict';var moment=require(_0x210a('0x0'));var Sequelize=require('sequelize');module['exports']={'starttime':{'type':Sequelize[_0x210a('0x1')],'set':function(_0x5ea0ea){this[_0x210a('0x2')](_0x210a('0x3'),_0x5ea0ea);this[_0x210a('0x2')]('endtime',moment()['format'](_0x210a('0x4')));}},'endtime':{'type':Sequelize[_0x210a('0x1')]},'membername':{'type':Sequelize[_0x210a('0x5')]},'projectname':{'type':Sequelize[_0x210a('0x5')]},'queue':{'type':Sequelize[_0x210a('0x5')]},'uniqueid':{'type':Sequelize[_0x210a('0x5')]},'calleridname':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x210a('0x5')]},'completed':{'type':Sequelize[_0x210a('0x6')],'defaultValue':![]}};
\ No newline at end of file
+var _0x884f=['setDataValue','format','YYYY-MM-DD\x20HH:mm:ss','DATE','STRING','BOOLEAN','sequelize','starttime'];(function(_0x3bc4c9,_0x4d7cfe){var _0x29cdea=function(_0x229e07){while(--_0x229e07){_0x3bc4c9['push'](_0x3bc4c9['shift']());}};_0x29cdea(++_0x4d7cfe);}(_0x884f,0x116));var _0xf884=function(_0x50e1bc,_0x4128d7){_0x50e1bc=_0x50e1bc-0x0;var _0x3b92f2=_0x884f[_0x50e1bc];return _0x3b92f2;};'use strict';var moment=require('moment');var Sequelize=require(_0xf884('0x0'));module['exports']={'starttime':{'type':Sequelize['DATE'],'set':function(_0x40908d){this['setDataValue'](_0xf884('0x1'),_0x40908d);this[_0xf884('0x2')]('endtime',moment()[_0xf884('0x3')](_0xf884('0x4')));}},'endtime':{'type':Sequelize[_0xf884('0x5')]},'membername':{'type':Sequelize[_0xf884('0x6')]},'projectname':{'type':Sequelize[_0xf884('0x6')]},'queue':{'type':Sequelize[_0xf884('0x6')]},'uniqueid':{'type':Sequelize[_0xf884('0x6')]},'calleridname':{'type':Sequelize[_0xf884('0x6')]},'calleridnum':{'type':Sequelize['STRING']},'completed':{'type':Sequelize[_0xf884('0x7')],'defaultValue':![]}};
\ No newline at end of file
index c0ed532..ecadab0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2720=['name','send','index','map','JscriptySessionReport','type','key','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','sort','pick','filter','where','merge','options','includeAll','include','rows','catch','model','keys','length','find','create','body','destroy','params','describe','getQuestions','JscriptyQuestionReport','rawAttributes','order','SessionId','eml-format','zip-dir','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','crypto','jsforce','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','reject','update','then','error','stack'];(function(_0x5271b1,_0x12698e){var _0x392a09=function(_0x2f5c55){while(--_0x2f5c55){_0x5271b1['push'](_0x5271b1['shift']());}};_0x392a09(++_0x12698e);}(_0x2720,0x70));var _0x0272=function(_0x560fde,_0x512fc8){_0x560fde=_0x560fde-0x0;var _0x25269e=_0x2720[_0x560fde];return _0x25269e;};'use strict';var emlformat=require(_0x0272('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x0272('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x0272('0x2'));var Mustache=require(_0x0272('0x3'));var util=require(_0x0272('0x4'));var path=require(_0x0272('0x5'));var sox=require(_0x0272('0x6'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0272('0x7'));var _=require(_0x0272('0x8'));var squel=require(_0x0272('0x9'));var crypto=require(_0x0272('0xa'));var jsforce=require(_0x0272('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x0272('0xc'));var querystring=require('querystring');var Papa=require(_0x0272('0xd'));var Redis=require(_0x0272('0xe'));var authService=require(_0x0272('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x0272('0x10'));var hardwareService=require(_0x0272('0x11'));var logger=require(_0x0272('0x12'))('api');var utils=require(_0x0272('0x13'));var config=require(_0x0272('0x14'));var licenseUtil=require(_0x0272('0x15'));var db=require(_0x0272('0x16'))['db'];function respondWithStatusCode(_0x24f334,_0x531972){_0x531972=_0x531972||0xcc;return function(_0xf93372){if(_0xf93372){return _0x24f334[_0x0272('0x17')](_0x531972);}return _0x24f334[_0x0272('0x18')](_0x531972)[_0x0272('0x19')]();};}function respondWithResult(_0x4a0f2e,_0x38a5b6){_0x38a5b6=_0x38a5b6||0xc8;return function(_0x19b43c){if(_0x19b43c){return _0x4a0f2e['status'](_0x38a5b6)[_0x0272('0x1a')](_0x19b43c);}};}function respondWithFilteredResult(_0x4ce858,_0x1a820c){return function(_0x188216){if(_0x188216){var _0x1bae45=typeof _0x1a820c[_0x0272('0x1b')]===_0x0272('0x1c')&&typeof _0x1a820c[_0x0272('0x1d')]===_0x0272('0x1c');var _0x4782a5=_0x188216['count'];var _0x3cb688=_0x1bae45?0x0:_0x1a820c[_0x0272('0x1b')];var _0xf4d9b6=_0x1bae45?_0x188216[_0x0272('0x1e')]:_0x1a820c[_0x0272('0x1b')]+_0x1a820c[_0x0272('0x1d')];var _0x4c84d0;if(_0xf4d9b6>=_0x4782a5){_0xf4d9b6=_0x4782a5;_0x4c84d0=0xc8;}else{_0x4c84d0=0xce;}_0x4ce858[_0x0272('0x18')](_0x4c84d0);return _0x4ce858['set']('Content-Range',_0x3cb688+'-'+_0xf4d9b6+'/'+_0x4782a5)['json'](_0x188216);}return null;};}function patchUpdates(_0x363794){return function(_0x584305){try{jsonpatch['apply'](_0x584305,_0x363794,!![]);}catch(_0x4c6517){return BPromise[_0x0272('0x1f')](_0x4c6517);}return _0x584305['save']();};}function saveUpdates(_0x3052b5,_0x5a3a4f){return function(_0x46b3a4){if(_0x46b3a4){return _0x46b3a4[_0x0272('0x20')](_0x3052b5)[_0x0272('0x21')](function(_0x2e3a79){return _0x2e3a79;});}return null;};}function removeEntity(_0x3a4777,_0x510a70){return function(_0x174608){if(_0x174608){return _0x174608['destroy']()[_0x0272('0x21')](function(){_0x3a4777[_0x0272('0x18')](0xcc)[_0x0272('0x19')]();});}};}function handleEntityNotFound(_0x1de696,_0x328740){return function(_0x1745b5){if(!_0x1745b5){_0x1de696['sendStatus'](0x194);}return _0x1745b5;};}function handleError(_0x287bce,_0x827d50){_0x827d50=_0x827d50||0x1f4;return function(_0x551cad){logger[_0x0272('0x22')](_0x551cad[_0x0272('0x23')]);if(_0x551cad['name']){delete _0x551cad[_0x0272('0x24')];}_0x287bce[_0x0272('0x18')](_0x827d50)[_0x0272('0x25')](_0x551cad);};}exports[_0x0272('0x26')]=function(_0x38d8a5,_0x2553c1){var _0x413661={},_0x4cb1f0={},_0x4784a9={'count':0x0,'rows':[]};var _0x29ab6b=_[_0x0272('0x27')](db[_0x0272('0x28')]['rawAttributes'],function(_0x246112){return{'name':_0x246112['fieldName'],'type':_0x246112[_0x0272('0x29')][_0x0272('0x2a')]};});_0x4cb1f0['model']=_['map'](_0x29ab6b,_0x0272('0x24'));_0x4cb1f0[_0x0272('0x2b')]=_['keys'](_0x38d8a5[_0x0272('0x2b')]);_0x4cb1f0[_0x0272('0x2c')]=_['intersection'](_0x4cb1f0['model'],_0x4cb1f0[_0x0272('0x2b')]);_0x413661['attributes']=_[_0x0272('0x2d')](_0x4cb1f0['model'],qs[_0x0272('0x2e')](_0x38d8a5[_0x0272('0x2b')][_0x0272('0x2e')]));_0x413661[_0x0272('0x2f')]=_0x413661[_0x0272('0x2f')]['length']?_0x413661[_0x0272('0x2f')]:_0x4cb1f0['model'];if(!_0x38d8a5[_0x0272('0x2b')][_0x0272('0x30')](_0x0272('0x31'))){_0x413661[_0x0272('0x1d')]=qs[_0x0272('0x1d')](_0x38d8a5['query'][_0x0272('0x1d')]);_0x413661[_0x0272('0x1b')]=qs['offset'](_0x38d8a5[_0x0272('0x2b')][_0x0272('0x1b')]);}_0x413661['order']=qs['sort'](_0x38d8a5[_0x0272('0x2b')][_0x0272('0x32')]);_0x413661['where']=qs[_0x0272('0x2c')](_[_0x0272('0x33')](_0x38d8a5[_0x0272('0x2b')],_0x4cb1f0['filters']),_0x29ab6b);if(_0x38d8a5[_0x0272('0x2b')][_0x0272('0x34')]){_0x413661[_0x0272('0x35')]=_[_0x0272('0x36')](_0x413661[_0x0272('0x35')],{'$or':_[_0x0272('0x27')](_0x29ab6b,function(_0x35793e){if(_0x35793e['type']!=='VIRTUAL'){var _0x4ce9d2={};_0x4ce9d2[_0x35793e['name']]={'$like':'%'+_0x38d8a5[_0x0272('0x2b')]['filter']+'%'};return _0x4ce9d2;}})});}_0x413661=_['merge']({},_0x413661,_0x38d8a5[_0x0272('0x37')]);var _0x2e3c90={'where':_0x413661[_0x0272('0x35')]};return db['JscriptySessionReport'][_0x0272('0x1e')](_0x2e3c90)['then'](function(_0x7a0c3a){_0x4784a9[_0x0272('0x1e')]=_0x7a0c3a;if(_0x38d8a5[_0x0272('0x2b')][_0x0272('0x38')]){_0x413661[_0x0272('0x39')]=[{'all':!![]}];}return db[_0x0272('0x28')]['findAll'](_0x413661);})[_0x0272('0x21')](function(_0x2b858e){_0x4784a9[_0x0272('0x3a')]=_0x2b858e;return _0x4784a9;})[_0x0272('0x21')](respondWithFilteredResult(_0x2553c1,_0x413661))[_0x0272('0x3b')](handleError(_0x2553c1,null));};exports['show']=function(_0x387bff,_0x510291){var _0x42face={'raw':!![],'where':{'id':_0x387bff['params']['id']}},_0x48a2ab={};_0x48a2ab[_0x0272('0x3c')]=_[_0x0272('0x3d')](db[_0x0272('0x28')]['rawAttributes']);_0x48a2ab['query']=_['keys'](_0x387bff[_0x0272('0x2b')]);_0x48a2ab[_0x0272('0x2c')]=_[_0x0272('0x2d')](_0x48a2ab[_0x0272('0x3c')],_0x48a2ab['query']);_0x42face['attributes']=_[_0x0272('0x2d')](_0x48a2ab[_0x0272('0x3c')],qs[_0x0272('0x2e')](_0x387bff['query'][_0x0272('0x2e')]));_0x42face[_0x0272('0x2f')]=_0x42face[_0x0272('0x2f')][_0x0272('0x3e')]?_0x42face['attributes']:_0x48a2ab[_0x0272('0x3c')];if(_0x387bff[_0x0272('0x2b')][_0x0272('0x38')]){_0x42face[_0x0272('0x39')]=[{'all':!![]}];}_0x42face=_[_0x0272('0x36')]({},_0x42face,_0x387bff[_0x0272('0x37')]);return db['JscriptySessionReport'][_0x0272('0x3f')](_0x42face)[_0x0272('0x21')](handleEntityNotFound(_0x510291,null))['then'](respondWithResult(_0x510291,null))[_0x0272('0x3b')](handleError(_0x510291,null));};exports[_0x0272('0x40')]=function(_0x446222,_0x318fca){return db[_0x0272('0x28')]['create'](_0x446222['body'],{})['then'](respondWithResult(_0x318fca,0xc9))[_0x0272('0x3b')](handleError(_0x318fca,null));};exports['update']=function(_0x3a60a7,_0x25fdfc){if(_0x3a60a7['body']['id']){delete _0x3a60a7[_0x0272('0x41')]['id'];}return db[_0x0272('0x28')][_0x0272('0x3f')]({'where':{'id':_0x3a60a7['params']['id']}})['then'](handleEntityNotFound(_0x25fdfc,null))['then'](saveUpdates(_0x3a60a7[_0x0272('0x41')],null))['then'](respondWithResult(_0x25fdfc,null))[_0x0272('0x3b')](handleError(_0x25fdfc,null));};exports[_0x0272('0x42')]=function(_0x6ef460,_0x54a71a){return db[_0x0272('0x28')][_0x0272('0x3f')]({'where':{'id':_0x6ef460[_0x0272('0x43')]['id']}})[_0x0272('0x21')](handleEntityNotFound(_0x54a71a,null))[_0x0272('0x21')](removeEntity(_0x54a71a,null))[_0x0272('0x3b')](handleError(_0x54a71a,null));};exports[_0x0272('0x44')]=function(_0x10425e,_0x16a090){return db['JscriptySessionReport'][_0x0272('0x44')]()['then'](respondWithResult(_0x16a090,null))['catch'](handleError(_0x16a090,null));};exports[_0x0272('0x45')]=function(_0x5a60ca,_0x3e797d,_0x3e5b36){var _0x549704={'raw':!![],'where':{}};var _0x154cce={};var _0x430b08={'count':0x0,'rows':[]};return db[_0x0272('0x28')]['findOne']({'where':{'id':_0x5a60ca[_0x0272('0x43')]['id']}})[_0x0272('0x21')](handleEntityNotFound(_0x3e797d,null))[_0x0272('0x21')](function(_0x54b82b){if(_0x54b82b){_0x154cce[_0x0272('0x3c')]=_[_0x0272('0x3d')](db[_0x0272('0x46')][_0x0272('0x47')]);_0x154cce['query']=_[_0x0272('0x3d')](_0x5a60ca[_0x0272('0x2b')]);_0x154cce[_0x0272('0x2c')]=_[_0x0272('0x2d')](_0x154cce[_0x0272('0x3c')],_0x154cce[_0x0272('0x2b')]);_0x549704[_0x0272('0x2f')]=_['intersection'](_0x154cce[_0x0272('0x3c')],qs[_0x0272('0x2e')](_0x5a60ca[_0x0272('0x2b')][_0x0272('0x2e')]));_0x549704[_0x0272('0x2f')]=_0x549704[_0x0272('0x2f')][_0x0272('0x3e')]?_0x549704[_0x0272('0x2f')]:_0x154cce[_0x0272('0x3c')];if(!_0x5a60ca[_0x0272('0x2b')]['hasOwnProperty']('nolimit')){_0x549704[_0x0272('0x1d')]=qs[_0x0272('0x1d')](_0x5a60ca[_0x0272('0x2b')][_0x0272('0x1d')]);_0x549704[_0x0272('0x1b')]=qs[_0x0272('0x1b')](_0x5a60ca[_0x0272('0x2b')][_0x0272('0x1b')]);}_0x549704[_0x0272('0x48')]=qs[_0x0272('0x32')](_0x5a60ca[_0x0272('0x2b')][_0x0272('0x32')]);_0x549704['where']=qs[_0x0272('0x2c')](_[_0x0272('0x33')](_0x5a60ca['query'],_0x154cce[_0x0272('0x2c')]));_0x549704['where'][_0x0272('0x49')]=_0x54b82b['id'];if(_0x5a60ca['query']['filter']){_0x549704[_0x0272('0x35')]=_[_0x0272('0x36')](_0x549704['where'],{'$or':_[_0x0272('0x27')](_0x549704[_0x0272('0x2f')],function(_0x3e8089){var _0xe54e26={};_0xe54e26[_0x3e8089]={'$like':'%'+_0x5a60ca[_0x0272('0x2b')][_0x0272('0x34')]+'%'};return _0xe54e26;})});}_0x549704=_[_0x0272('0x36')]({},_0x549704,_0x5a60ca[_0x0272('0x37')]);return db[_0x0272('0x46')][_0x0272('0x1e')]({'where':_0x549704['where']})[_0x0272('0x21')](function(_0x136e56){_0x430b08[_0x0272('0x1e')]=_0x136e56;if(_0x5a60ca['query'][_0x0272('0x38')]){_0x549704[_0x0272('0x39')]=[{'all':!![]}];}return db['JscriptyQuestionReport']['findAll'](_0x549704);})['then'](function(_0x3b6d86){_0x430b08[_0x0272('0x3a')]=_0x3b6d86;return _0x430b08;});}})[_0x0272('0x21')](respondWithFilteredResult(_0x3e797d,_0x549704))[_0x0272('0x3b')](handleError(_0x3e797d,null));};
\ No newline at end of file
+var _0xf913=['catch','show','params','rawAttributes','includeAll','include','options','find','create','body','update','describe','getQuestions','findOne','JscriptyQuestionReport','hasOwnProperty','findAll','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','status','json','offset','undefined','limit','count','apply','reject','save','then','destroy','end','error','stack','name','send','index','map','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','type','VIRTUAL','JscriptySessionReport','rows'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xf913,0xb1));var _0x3f91=function(_0x443d9d,_0x5ec425){_0x443d9d=_0x443d9d-0x0;var _0x3e99dc=_0xf913[_0x443d9d];return _0x3e99dc;};'use strict';var emlformat=require(_0x3f91('0x0'));var rimraf=require(_0x3f91('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3f91('0x2'));var rp=require(_0x3f91('0x3'));var moment=require(_0x3f91('0x4'));var BPromise=require(_0x3f91('0x5'));var Mustache=require(_0x3f91('0x6'));var util=require(_0x3f91('0x7'));var path=require(_0x3f91('0x8'));var sox=require('sox');var csv=require(_0x3f91('0x9'));var ejs=require(_0x3f91('0xa'));var fs=require('fs');var fs_extra=require(_0x3f91('0xb'));var _=require(_0x3f91('0xc'));var squel=require(_0x3f91('0xd'));var crypto=require(_0x3f91('0xe'));var jsforce=require(_0x3f91('0xf'));var deskjs=require(_0x3f91('0x10'));var toCsv=require('to-csv');var querystring=require(_0x3f91('0x11'));var Papa=require(_0x3f91('0x12'));var Redis=require(_0x3f91('0x13'));var authService=require('../../components/auth/service');var qs=require(_0x3f91('0x14'));var as=require(_0x3f91('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3f91('0x16'))(_0x3f91('0x17'));var utils=require(_0x3f91('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x3f91('0x19'));var db=require(_0x3f91('0x1a'))['db'];function respondWithStatusCode(_0x59c692,_0x55c5e5){_0x55c5e5=_0x55c5e5||0xcc;return function(_0x114dcf){if(_0x114dcf){return _0x59c692['sendStatus'](_0x55c5e5);}return _0x59c692[_0x3f91('0x1b')](_0x55c5e5)['end']();};}function respondWithResult(_0x535320,_0x56124c){_0x56124c=_0x56124c||0xc8;return function(_0xcbb8e8){if(_0xcbb8e8){return _0x535320[_0x3f91('0x1b')](_0x56124c)[_0x3f91('0x1c')](_0xcbb8e8);}};}function respondWithFilteredResult(_0x1c4f7f,_0xcb7425){return function(_0x582881){if(_0x582881){var _0x3601a7=typeof _0xcb7425[_0x3f91('0x1d')]===_0x3f91('0x1e')&&typeof _0xcb7425[_0x3f91('0x1f')]===_0x3f91('0x1e');var _0x28a2ce=_0x582881[_0x3f91('0x20')];var _0x30758f=_0x3601a7?0x0:_0xcb7425[_0x3f91('0x1d')];var _0x2cb4ea=_0x3601a7?_0x582881['count']:_0xcb7425[_0x3f91('0x1d')]+_0xcb7425[_0x3f91('0x1f')];var _0x406749;if(_0x2cb4ea>=_0x28a2ce){_0x2cb4ea=_0x28a2ce;_0x406749=0xc8;}else{_0x406749=0xce;}_0x1c4f7f[_0x3f91('0x1b')](_0x406749);return _0x1c4f7f['set']('Content-Range',_0x30758f+'-'+_0x2cb4ea+'/'+_0x28a2ce)[_0x3f91('0x1c')](_0x582881);}return null;};}function patchUpdates(_0x59f53e){return function(_0x361b7d){try{jsonpatch[_0x3f91('0x21')](_0x361b7d,_0x59f53e,!![]);}catch(_0x414fe4){return BPromise[_0x3f91('0x22')](_0x414fe4);}return _0x361b7d[_0x3f91('0x23')]();};}function saveUpdates(_0x2a7ca3,_0x5c73dc){return function(_0x262403){if(_0x262403){return _0x262403['update'](_0x2a7ca3)[_0x3f91('0x24')](function(_0x434109){return _0x434109;});}return null;};}function removeEntity(_0x5a353b,_0x1d10a3){return function(_0x5878d3){if(_0x5878d3){return _0x5878d3[_0x3f91('0x25')]()['then'](function(){_0x5a353b['status'](0xcc)[_0x3f91('0x26')]();});}};}function handleEntityNotFound(_0x3d42ee,_0x5707ac){return function(_0x370e16){if(!_0x370e16){_0x3d42ee['sendStatus'](0x194);}return _0x370e16;};}function handleError(_0x48ba09,_0x2f2285){_0x2f2285=_0x2f2285||0x1f4;return function(_0x33e189){logger[_0x3f91('0x27')](_0x33e189[_0x3f91('0x28')]);if(_0x33e189[_0x3f91('0x29')]){delete _0x33e189[_0x3f91('0x29')];}_0x48ba09[_0x3f91('0x1b')](_0x2f2285)[_0x3f91('0x2a')](_0x33e189);};}exports[_0x3f91('0x2b')]=function(_0x4a06ab,_0x3fa48f){var _0x413f2e={},_0x370d80={},_0x31a81a={'count':0x0,'rows':[]};var _0x59af4f=_[_0x3f91('0x2c')](db['JscriptySessionReport']['rawAttributes'],function(_0x24b83e){return{'name':_0x24b83e['fieldName'],'type':_0x24b83e['type']['key']};});_0x370d80[_0x3f91('0x2d')]=_[_0x3f91('0x2c')](_0x59af4f,_0x3f91('0x29'));_0x370d80[_0x3f91('0x2e')]=_[_0x3f91('0x2f')](_0x4a06ab[_0x3f91('0x2e')]);_0x370d80[_0x3f91('0x30')]=_[_0x3f91('0x31')](_0x370d80[_0x3f91('0x2d')],_0x370d80[_0x3f91('0x2e')]);_0x413f2e[_0x3f91('0x32')]=_[_0x3f91('0x31')](_0x370d80[_0x3f91('0x2d')],qs[_0x3f91('0x33')](_0x4a06ab[_0x3f91('0x2e')][_0x3f91('0x33')]));_0x413f2e['attributes']=_0x413f2e[_0x3f91('0x32')][_0x3f91('0x34')]?_0x413f2e[_0x3f91('0x32')]:_0x370d80['model'];if(!_0x4a06ab['query']['hasOwnProperty'](_0x3f91('0x35'))){_0x413f2e[_0x3f91('0x1f')]=qs[_0x3f91('0x1f')](_0x4a06ab[_0x3f91('0x2e')]['limit']);_0x413f2e[_0x3f91('0x1d')]=qs['offset'](_0x4a06ab['query'][_0x3f91('0x1d')]);}_0x413f2e[_0x3f91('0x36')]=qs[_0x3f91('0x37')](_0x4a06ab[_0x3f91('0x2e')][_0x3f91('0x37')]);_0x413f2e[_0x3f91('0x38')]=qs[_0x3f91('0x30')](_['pick'](_0x4a06ab[_0x3f91('0x2e')],_0x370d80[_0x3f91('0x30')]),_0x59af4f);if(_0x4a06ab[_0x3f91('0x2e')][_0x3f91('0x39')]){_0x413f2e[_0x3f91('0x38')]=_[_0x3f91('0x3a')](_0x413f2e[_0x3f91('0x38')],{'$or':_[_0x3f91('0x2c')](_0x59af4f,function(_0x26c9dd){if(_0x26c9dd[_0x3f91('0x3b')]!==_0x3f91('0x3c')){var _0xd1536={};_0xd1536[_0x26c9dd['name']]={'$like':'%'+_0x4a06ab[_0x3f91('0x2e')][_0x3f91('0x39')]+'%'};return _0xd1536;}})});}_0x413f2e=_[_0x3f91('0x3a')]({},_0x413f2e,_0x4a06ab['options']);var _0x1956ed={'where':_0x413f2e[_0x3f91('0x38')]};return db['JscriptySessionReport'][_0x3f91('0x20')](_0x1956ed)[_0x3f91('0x24')](function(_0x5969f1){_0x31a81a[_0x3f91('0x20')]=_0x5969f1;if(_0x4a06ab[_0x3f91('0x2e')]['includeAll']){_0x413f2e['include']=[{'all':!![]}];}return db[_0x3f91('0x3d')]['findAll'](_0x413f2e);})[_0x3f91('0x24')](function(_0x119959){_0x31a81a[_0x3f91('0x3e')]=_0x119959;return _0x31a81a;})[_0x3f91('0x24')](respondWithFilteredResult(_0x3fa48f,_0x413f2e))[_0x3f91('0x3f')](handleError(_0x3fa48f,null));};exports[_0x3f91('0x40')]=function(_0x353b46,_0x5ed420){var _0x148e94={'raw':!![],'where':{'id':_0x353b46[_0x3f91('0x41')]['id']}},_0xfdd8={};_0xfdd8['model']=_[_0x3f91('0x2f')](db[_0x3f91('0x3d')][_0x3f91('0x42')]);_0xfdd8[_0x3f91('0x2e')]=_[_0x3f91('0x2f')](_0x353b46['query']);_0xfdd8['filters']=_[_0x3f91('0x31')](_0xfdd8[_0x3f91('0x2d')],_0xfdd8[_0x3f91('0x2e')]);_0x148e94[_0x3f91('0x32')]=_[_0x3f91('0x31')](_0xfdd8[_0x3f91('0x2d')],qs[_0x3f91('0x33')](_0x353b46[_0x3f91('0x2e')][_0x3f91('0x33')]));_0x148e94[_0x3f91('0x32')]=_0x148e94['attributes'][_0x3f91('0x34')]?_0x148e94['attributes']:_0xfdd8['model'];if(_0x353b46['query'][_0x3f91('0x43')]){_0x148e94[_0x3f91('0x44')]=[{'all':!![]}];}_0x148e94=_[_0x3f91('0x3a')]({},_0x148e94,_0x353b46[_0x3f91('0x45')]);return db['JscriptySessionReport'][_0x3f91('0x46')](_0x148e94)['then'](handleEntityNotFound(_0x5ed420,null))[_0x3f91('0x24')](respondWithResult(_0x5ed420,null))['catch'](handleError(_0x5ed420,null));};exports[_0x3f91('0x47')]=function(_0x4c52b9,_0x36014b){return db['JscriptySessionReport'][_0x3f91('0x47')](_0x4c52b9[_0x3f91('0x48')],{})[_0x3f91('0x24')](respondWithResult(_0x36014b,0xc9))[_0x3f91('0x3f')](handleError(_0x36014b,null));};exports[_0x3f91('0x49')]=function(_0x22a3a8,_0x18918e){if(_0x22a3a8[_0x3f91('0x48')]['id']){delete _0x22a3a8[_0x3f91('0x48')]['id'];}return db['JscriptySessionReport'][_0x3f91('0x46')]({'where':{'id':_0x22a3a8[_0x3f91('0x41')]['id']}})[_0x3f91('0x24')](handleEntityNotFound(_0x18918e,null))[_0x3f91('0x24')](saveUpdates(_0x22a3a8['body'],null))[_0x3f91('0x24')](respondWithResult(_0x18918e,null))[_0x3f91('0x3f')](handleError(_0x18918e,null));};exports[_0x3f91('0x25')]=function(_0x5b4704,_0x1380e1){return db[_0x3f91('0x3d')][_0x3f91('0x46')]({'where':{'id':_0x5b4704[_0x3f91('0x41')]['id']}})[_0x3f91('0x24')](handleEntityNotFound(_0x1380e1,null))[_0x3f91('0x24')](removeEntity(_0x1380e1,null))[_0x3f91('0x3f')](handleError(_0x1380e1,null));};exports[_0x3f91('0x4a')]=function(_0x11927d,_0x5ee443){return db[_0x3f91('0x3d')]['describe']()[_0x3f91('0x24')](respondWithResult(_0x5ee443,null))[_0x3f91('0x3f')](handleError(_0x5ee443,null));};exports[_0x3f91('0x4b')]=function(_0x3dcb5f,_0x4bed1f,_0x4eac5f){var _0x7d2a4b={'raw':!![],'where':{}};var _0x5ed80f={};var _0x385170={'count':0x0,'rows':[]};return db[_0x3f91('0x3d')][_0x3f91('0x4c')]({'where':{'id':_0x3dcb5f[_0x3f91('0x41')]['id']}})[_0x3f91('0x24')](handleEntityNotFound(_0x4bed1f,null))[_0x3f91('0x24')](function(_0x25a545){if(_0x25a545){_0x5ed80f[_0x3f91('0x2d')]=_[_0x3f91('0x2f')](db[_0x3f91('0x4d')]['rawAttributes']);_0x5ed80f[_0x3f91('0x2e')]=_[_0x3f91('0x2f')](_0x3dcb5f[_0x3f91('0x2e')]);_0x5ed80f[_0x3f91('0x30')]=_[_0x3f91('0x31')](_0x5ed80f[_0x3f91('0x2d')],_0x5ed80f[_0x3f91('0x2e')]);_0x7d2a4b[_0x3f91('0x32')]=_[_0x3f91('0x31')](_0x5ed80f[_0x3f91('0x2d')],qs[_0x3f91('0x33')](_0x3dcb5f[_0x3f91('0x2e')][_0x3f91('0x33')]));_0x7d2a4b['attributes']=_0x7d2a4b[_0x3f91('0x32')][_0x3f91('0x34')]?_0x7d2a4b[_0x3f91('0x32')]:_0x5ed80f['model'];if(!_0x3dcb5f[_0x3f91('0x2e')][_0x3f91('0x4e')]('nolimit')){_0x7d2a4b[_0x3f91('0x1f')]=qs[_0x3f91('0x1f')](_0x3dcb5f['query'][_0x3f91('0x1f')]);_0x7d2a4b['offset']=qs[_0x3f91('0x1d')](_0x3dcb5f[_0x3f91('0x2e')][_0x3f91('0x1d')]);}_0x7d2a4b[_0x3f91('0x36')]=qs[_0x3f91('0x37')](_0x3dcb5f[_0x3f91('0x2e')][_0x3f91('0x37')]);_0x7d2a4b[_0x3f91('0x38')]=qs[_0x3f91('0x30')](_['pick'](_0x3dcb5f[_0x3f91('0x2e')],_0x5ed80f[_0x3f91('0x30')]));_0x7d2a4b['where']['SessionId']=_0x25a545['id'];if(_0x3dcb5f[_0x3f91('0x2e')]['filter']){_0x7d2a4b[_0x3f91('0x38')]=_[_0x3f91('0x3a')](_0x7d2a4b[_0x3f91('0x38')],{'$or':_[_0x3f91('0x2c')](_0x7d2a4b[_0x3f91('0x32')],function(_0x104bdd){var _0x3d633d={};_0x3d633d[_0x104bdd]={'$like':'%'+_0x3dcb5f[_0x3f91('0x2e')][_0x3f91('0x39')]+'%'};return _0x3d633d;})});}_0x7d2a4b=_['merge']({},_0x7d2a4b,_0x3dcb5f[_0x3f91('0x45')]);return db['JscriptyQuestionReport'][_0x3f91('0x20')]({'where':_0x7d2a4b[_0x3f91('0x38')]})[_0x3f91('0x24')](function(_0x385943){_0x385170[_0x3f91('0x20')]=_0x385943;if(_0x3dcb5f['query'][_0x3f91('0x43')]){_0x7d2a4b[_0x3f91('0x44')]=[{'all':!![]}];}return db[_0x3f91('0x4d')][_0x3f91('0x4f')](_0x7d2a4b);})[_0x3f91('0x24')](function(_0xcf181a){_0x385170[_0x3f91('0x3e')]=_0xcf181a;return _0x385170;});}})[_0x3f91('0x24')](respondWithFilteredResult(_0x4bed1f,_0x7d2a4b))[_0x3f91('0x3f')](handleError(_0x4bed1f,null));};
\ No newline at end of file
index f628634..51c59f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f9d=['define','JscriptySessionReport','report_jscripty_sessions','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./jscriptySessionReport.attributes'];(function(_0x19b4b9,_0x10b51d){var _0x2f9868=function(_0x5a9edc){while(--_0x5a9edc){_0x19b4b9['push'](_0x19b4b9['shift']());}};_0x2f9868(++_0x10b51d);}(_0x8f9d,0x93));var _0xd8f9=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x8f9d[_0x57b54c];return _0x59cc19;};'use strict';var _=require(_0xd8f9('0x0'));var util=require('util');var logger=require(_0xd8f9('0x1'))('api');var moment=require(_0xd8f9('0x2'));var BPromise=require(_0xd8f9('0x3'));var rp=require(_0xd8f9('0x4'));var fs=require('fs');var path=require(_0xd8f9('0x5'));var rimraf=require(_0xd8f9('0x6'));var config=require(_0xd8f9('0x7'));var attributes=require(_0xd8f9('0x8'));module['exports']=function(_0x1c37be,_0x24dd1e){return _0x1c37be[_0xd8f9('0x9')](_0xd8f9('0xa'),attributes,{'tableName':_0xd8f9('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbff5=['lodash','util','../../config/logger','api','moment','bluebird','request-promise','rimraf','exports','define','JscriptySessionReport','report_jscripty_sessions'];(function(_0x4a2fc5,_0x3098e7){var _0x1ad849=function(_0x301a9c){while(--_0x301a9c){_0x4a2fc5['push'](_0x4a2fc5['shift']());}};_0x1ad849(++_0x3098e7);}(_0xbff5,0x1bc));var _0x5bff=function(_0x15bcb2,_0x7d838a){_0x15bcb2=_0x15bcb2-0x0;var _0x30ecef=_0xbff5[_0x15bcb2];return _0x30ecef;};'use strict';var _=require(_0x5bff('0x0'));var util=require(_0x5bff('0x1'));var logger=require(_0x5bff('0x2'))(_0x5bff('0x3'));var moment=require(_0x5bff('0x4'));var BPromise=require(_0x5bff('0x5'));var rp=require(_0x5bff('0x6'));var fs=require('fs');var path=require('path');var rimraf=require(_0x5bff('0x7'));var config=require('../../config/environment');var attributes=require('./jscriptySessionReport.attributes');module[_0x5bff('0x8')]=function(_0x1d8650,_0x151add){return _0x1d8650[_0x5bff('0x9')](_0x5bff('0xa'),attributes,{'tableName':_0x5bff('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c23da6a..3ccf3d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f0e=['../../config/environment','jayson/promise','request','then','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','util','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc'];(function(_0x221a9f,_0x2a5e1c){var _0x5976c7=function(_0x1c2055){while(--_0x1c2055){_0x221a9f['push'](_0x221a9f['shift']());}};_0x5976c7(++_0x2a5e1c);}(_0x9f0e,0x116));var _0xe9f0=function(_0x11696a,_0x569ec1){_0x11696a=_0x11696a-0x0;var _0x3a34f3=_0x9f0e[_0x11696a];return _0x3a34f3;};'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});function respondWithRpcPromise(_0x3a17b3,_0x167198,_0xe64a79){return new BPromise(function(_0x4be6a6,_0xf4a256){return client[_0xe9f0('0xa')](_0x3a17b3,_0xe64a79)[_0xe9f0('0xb')](function(_0x3386a8){logger[_0xe9f0('0xc')](_0xe9f0('0xd'),_0x167198,_0xe9f0('0xe'));logger[_0xe9f0('0xf')](_0xe9f0('0x10'),_0x167198,'request\x20sent',JSON[_0xe9f0('0x11')](_0x3386a8));if(_0x3386a8[_0xe9f0('0x12')]){if(_0x3386a8[_0xe9f0('0x12')]['code']===0x1f4){logger[_0xe9f0('0x12')]('JscriptySessionReport,\x20%s,\x20%s',_0x167198,_0x3386a8[_0xe9f0('0x12')][_0xe9f0('0x13')]);return _0xf4a256(_0x3386a8[_0xe9f0('0x12')][_0xe9f0('0x13')]);}logger['error'](_0xe9f0('0xd'),_0x167198,_0x3386a8['error'][_0xe9f0('0x13')]);return _0x4be6a6(_0x3386a8[_0xe9f0('0x12')][_0xe9f0('0x13')]);}else{logger['info'](_0xe9f0('0xd'),_0x167198,_0xe9f0('0xe'));_0x4be6a6(_0x3386a8[_0xe9f0('0x14')]['message']);}})[_0xe9f0('0x15')](function(_0x1e16e0){logger[_0xe9f0('0x12')](_0xe9f0('0xd'),_0x167198,_0x1e16e0);_0xf4a256(_0x1e16e0);});});}
\ No newline at end of file
+var _0x7046=['result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','info','JscriptySessionReport,\x20%s,\x20%s','request\x20sent','debug','JscriptySessionReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x1d446b,_0x2c141d){var _0x5ed186=function(_0x54621d){while(--_0x54621d){_0x1d446b['push'](_0x1d446b['shift']());}};_0x5ed186(++_0x2c141d);}(_0x7046,0x144));var _0x6704=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0x7046[_0x5d6456];return _0x4d66c1;};'use strict';var _=require(_0x6704('0x0'));var util=require(_0x6704('0x1'));var moment=require(_0x6704('0x2'));var BPromise=require(_0x6704('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6704('0x4'));var db=require(_0x6704('0x5'))['db'];var utils=require(_0x6704('0x6'));var logger=require('../../config/logger')(_0x6704('0x7'));var config=require(_0x6704('0x8'));var jayson=require(_0x6704('0x9'));var client=jayson[_0x6704('0xa')][_0x6704('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x4badf8,_0x5ced8,_0x49b8b6){return new BPromise(function(_0x56b1ff,_0x390ace){return client['request'](_0x4badf8,_0x49b8b6)['then'](function(_0x3ca599){logger[_0x6704('0xc')](_0x6704('0xd'),_0x5ced8,_0x6704('0xe'));logger[_0x6704('0xf')](_0x6704('0x10'),_0x5ced8,_0x6704('0xe'),JSON[_0x6704('0x11')](_0x3ca599));if(_0x3ca599['error']){if(_0x3ca599[_0x6704('0x12')][_0x6704('0x13')]===0x1f4){logger['error'](_0x6704('0xd'),_0x5ced8,_0x3ca599[_0x6704('0x12')][_0x6704('0x14')]);return _0x390ace(_0x3ca599[_0x6704('0x12')][_0x6704('0x14')]);}logger[_0x6704('0x12')](_0x6704('0xd'),_0x5ced8,_0x3ca599[_0x6704('0x12')][_0x6704('0x14')]);return _0x56b1ff(_0x3ca599['error'][_0x6704('0x14')]);}else{logger[_0x6704('0xc')](_0x6704('0xd'),_0x5ced8,'request\x20sent');_0x56b1ff(_0x3ca599[_0x6704('0x15')][_0x6704('0x14')]);}})[_0x6704('0x16')](function(_0x29fa46){logger[_0x6704('0x12')]('JscriptySessionReport,\x20%s,\x20%s',_0x5ced8,_0x29fa46);_0x390ace(_0x29fa46);});});}
\ No newline at end of file
index 3029013..1958196 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b31=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./license.controller','get','index','/:id','isAuthenticated','update','exports','multer'];(function(_0x5c3b44,_0x537063){var _0x309e3f=function(_0xe7e17b){while(--_0xe7e17b){_0x5c3b44['push'](_0x5c3b44['shift']());}};_0x309e3f(++_0x537063);}(_0x6b31,0x11d));var _0x16b3=function(_0x1e9cbb,_0x271361){_0x1e9cbb=_0x1e9cbb-0x0;var _0x35adaf=_0x6b31[_0x1e9cbb];return _0x35adaf;};'use strict';var multer=require(_0x16b3('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x16b3('0x1')]();var fs_extra=require(_0x16b3('0x2'));var auth=require(_0x16b3('0x3'));var interaction=require(_0x16b3('0x4'));var config=require(_0x16b3('0x5'));var controller=require(_0x16b3('0x6'));router[_0x16b3('0x7')]('/',controller[_0x16b3('0x8')]);router['put'](_0x16b3('0x9'),auth[_0x16b3('0xa')](),controller[_0x16b3('0xb')]);router[_0x16b3('0x7')]('/download_log_file',auth[_0x16b3('0xa')](),controller['downloadLogFile']);module[_0x16b3('0xc')]=router;
\ No newline at end of file
+var _0xf434=['get','index','put','/:id','isAuthenticated','update','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./license.controller'];(function(_0x1d9aa0,_0x272488){var _0x226868=function(_0x17127c){while(--_0x17127c){_0x1d9aa0['push'](_0x1d9aa0['shift']());}};_0x226868(++_0x272488);}(_0xf434,0x15b));var _0x4f43=function(_0x23fc9b,_0x39a51f){_0x23fc9b=_0x23fc9b-0x0;var _0x34842b=_0xf434[_0x23fc9b];return _0x34842b;};'use strict';var multer=require(_0x4f43('0x0'));var util=require('util');var path=require(_0x4f43('0x1'));var timeout=require(_0x4f43('0x2'));var express=require(_0x4f43('0x3'));var router=express[_0x4f43('0x4')]();var fs_extra=require(_0x4f43('0x5'));var auth=require(_0x4f43('0x6'));var interaction=require(_0x4f43('0x7'));var config=require(_0x4f43('0x8'));var controller=require(_0x4f43('0x9'));router[_0x4f43('0xa')]('/',controller[_0x4f43('0xb')]);router[_0x4f43('0xc')](_0x4f43('0xd'),auth[_0x4f43('0xe')](),controller[_0x4f43('0xf')]);router[_0x4f43('0xa')]('/download_log_file',auth['isAuthenticated'](),controller['downloadLogFile']);module[_0x4f43('0x10')]=router;
\ No newline at end of file
index ee119a9..78a6600 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x812e=['STRING','INTEGER','sequelize','exports','TEXT'];(function(_0x10c082,_0x2abb8f){var _0x60b7f2=function(_0x253c74){while(--_0x253c74){_0x10c082['push'](_0x10c082['shift']());}};_0x60b7f2(++_0x2abb8f);}(_0x812e,0x1c9));var _0xe812=function(_0x434b3c,_0x34291a){_0x434b3c=_0x434b3c-0x0;var _0x2f5a9a=_0x812e[_0x434b3c];return _0x2f5a9a;};'use strict';var Sequelize=require(_0xe812('0x0'));module[_0xe812('0x1')]={'license':{'type':Sequelize[_0xe812('0x2')]},'data1':{'type':Sequelize[_0xe812('0x3')]},'data2':{'type':Sequelize[_0xe812('0x3')]},'chatLicenseExceeded':{'type':Sequelize[_0xe812('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xb636=['STRING','INTEGER','sequelize','exports'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xb636,0x1be));var _0x6b63=function(_0x3c6aa0,_0x26d740){_0x3c6aa0=_0x3c6aa0-0x0;var _0x43638a=_0xb636[_0x3c6aa0];return _0x43638a;};'use strict';var Sequelize=require(_0x6b63('0x0'));module[_0x6b63('0x1')]={'license':{'type':Sequelize['TEXT']},'data1':{'type':Sequelize[_0x6b63('0x2')]},'data2':{'type':Sequelize[_0x6b63('0x2')]},'chatLicenseExceeded':{'type':Sequelize[_0x6b63('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 1401f25..35d4ace 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda04=['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','../../config/license/util','sendStatus','status','end','json','undefined','count','offset','limit','set','apply','reject','save','update','then','error','stack','name','send','index','model','keys','License','rawAttributes','query','attributes','intersection','fields','length','merge','options','getLicense','body','find','params','checkLicense','demo','catch','downloadLogFile','/var','log','xcally','setHeader','attachment;\x20filename=','Content-Type','text/plain','download','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra'];(function(_0x3f6e26,_0x811a34){var _0x474345=function(_0x4a0cbe){while(--_0x4a0cbe){_0x3f6e26['push'](_0x3f6e26['shift']());}};_0x474345(++_0x811a34);}(_0xda04,0x161));var _0x4da0=function(_0x31e982,_0x521c6a){_0x31e982=_0x31e982-0x0;var _0x3efb59=_0xda04[_0x31e982];return _0x3efb59;};'use strict';var emlformat=require(_0x4da0('0x0'));var rimraf=require(_0x4da0('0x1'));var zipdir=require(_0x4da0('0x2'));var jsonpatch=require(_0x4da0('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x4da0('0x4'));var Mustache=require(_0x4da0('0x5'));var util=require(_0x4da0('0x6'));var path=require(_0x4da0('0x7'));var sox=require(_0x4da0('0x8'));var csv=require(_0x4da0('0x9'));var ejs=require(_0x4da0('0xa'));var fs=require('fs');var fs_extra=require(_0x4da0('0xb'));var _=require(_0x4da0('0xc'));var squel=require(_0x4da0('0xd'));var crypto=require(_0x4da0('0xe'));var jsforce=require(_0x4da0('0xf'));var deskjs=require(_0x4da0('0x10'));var toCsv=require('to-csv');var querystring=require(_0x4da0('0x11'));var Papa=require('papaparse');var Redis=require(_0x4da0('0x12'));var authService=require(_0x4da0('0x13'));var qs=require(_0x4da0('0x14'));var as=require(_0x4da0('0x15'));var hardwareService=require(_0x4da0('0x16'));var logger=require(_0x4da0('0x17'))(_0x4da0('0x18'));var utils=require(_0x4da0('0x19'));var config=require('../../config/environment');var licenseUtil=require(_0x4da0('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x2ae513,_0x1ae2ae){_0x1ae2ae=_0x1ae2ae||0xcc;return function(_0x3f97ed){if(_0x3f97ed){return _0x2ae513[_0x4da0('0x1b')](_0x1ae2ae);}return _0x2ae513[_0x4da0('0x1c')](_0x1ae2ae)[_0x4da0('0x1d')]();};}function respondWithResult(_0x228faa,_0x143095){_0x143095=_0x143095||0xc8;return function(_0xd511e2){if(_0xd511e2){return _0x228faa[_0x4da0('0x1c')](_0x143095)[_0x4da0('0x1e')](_0xd511e2);}};}function respondWithFilteredResult(_0x506bd1,_0x1cf4c6){return function(_0x4fc268){if(_0x4fc268){var _0x5da7a8=typeof _0x1cf4c6['offset']===_0x4da0('0x1f')&&typeof _0x1cf4c6['limit']==='undefined';var _0x124312=_0x4fc268[_0x4da0('0x20')];var _0x21f723=_0x5da7a8?0x0:_0x1cf4c6[_0x4da0('0x21')];var _0x485940=_0x5da7a8?_0x4fc268['count']:_0x1cf4c6[_0x4da0('0x21')]+_0x1cf4c6[_0x4da0('0x22')];var _0x2ca5a2;if(_0x485940>=_0x124312){_0x485940=_0x124312;_0x2ca5a2=0xc8;}else{_0x2ca5a2=0xce;}_0x506bd1[_0x4da0('0x1c')](_0x2ca5a2);return _0x506bd1[_0x4da0('0x23')]('Content-Range',_0x21f723+'-'+_0x485940+'/'+_0x124312)[_0x4da0('0x1e')](_0x4fc268);}return null;};}function patchUpdates(_0x4704b0){return function(_0x3f56fe){try{jsonpatch[_0x4da0('0x24')](_0x3f56fe,_0x4704b0,!![]);}catch(_0x4b8a54){return BPromise[_0x4da0('0x25')](_0x4b8a54);}return _0x3f56fe[_0x4da0('0x26')]();};}function saveUpdates(_0x19acc0,_0x54bab5){return function(_0xaec553){if(_0xaec553){return _0xaec553[_0x4da0('0x27')](_0x19acc0)[_0x4da0('0x28')](function(_0x57cccd){return _0x57cccd;});}return null;};}function removeEntity(_0x4f49a3,_0x4f5ef3){return function(_0x5c2eb3){if(_0x5c2eb3){return _0x5c2eb3['destroy']()[_0x4da0('0x28')](function(){_0x4f49a3['status'](0xcc)[_0x4da0('0x1d')]();});}};}function handleEntityNotFound(_0x425b03,_0x44d8f1){return function(_0x19cd98){if(!_0x19cd98){_0x425b03[_0x4da0('0x1b')](0x194);}return _0x19cd98;};}function handleError(_0x4d5c65,_0x26d5db){_0x26d5db=_0x26d5db||0x1f4;return function(_0xb1c9fc){logger[_0x4da0('0x29')](_0xb1c9fc[_0x4da0('0x2a')]);if(_0xb1c9fc[_0x4da0('0x2b')]){delete _0xb1c9fc[_0x4da0('0x2b')];}_0x4d5c65[_0x4da0('0x1c')](_0x26d5db)[_0x4da0('0x2c')](_0xb1c9fc);};}var utilLicense=require(_0x4da0('0x1a'));exports[_0x4da0('0x2d')]=function(_0x768d3b,_0x1780b9){var _0xcd197b={'raw':!![],'where':{'id':0x1}},_0x573073={};_0x573073[_0x4da0('0x2e')]=_[_0x4da0('0x2f')](db[_0x4da0('0x30')][_0x4da0('0x31')]);_0x573073['query']=_[_0x4da0('0x2f')](_0x768d3b[_0x4da0('0x32')]);_0x573073['filters']=_['intersection'](_0x573073[_0x4da0('0x2e')],_0x573073[_0x4da0('0x32')]);_0xcd197b[_0x4da0('0x33')]=_[_0x4da0('0x34')](_0x573073[_0x4da0('0x2e')],qs[_0x4da0('0x35')](_0x768d3b[_0x4da0('0x32')]['fields']));_0xcd197b[_0x4da0('0x33')]=_0xcd197b['attributes'][_0x4da0('0x36')]?_0xcd197b[_0x4da0('0x33')]:_0x573073['model'];_0xcd197b=_[_0x4da0('0x37')]({},_0xcd197b,_0x768d3b[_0x4da0('0x38')]);return utilLicense[_0x4da0('0x39')](_0xcd197b)[_0x4da0('0x28')](respondWithResult(_0x1780b9,null))['catch'](handleError(_0x1780b9,null));};exports[_0x4da0('0x27')]=function(_0x105ea7,_0x1f5997){if(_0x105ea7[_0x4da0('0x3a')]['id']){delete _0x105ea7[_0x4da0('0x3a')]['id'];}return db['License'][_0x4da0('0x3b')]({'where':{'id':_0x105ea7[_0x4da0('0x3c')]['id']}})[_0x4da0('0x28')](handleEntityNotFound(_0x1f5997,null))['then'](function(_0xcd29){var _0x15b47e=_0xcd29['get']({'plain':!![]});return utilLicense[_0x4da0('0x3d')](_0x15b47e,_0x105ea7[_0x4da0('0x3a')]['key']);})['then'](function(_0x42ab9c){if(!_0x42ab9c[_0x4da0('0x3e')]){return saveUpdates(_0x105ea7[_0x4da0('0x3a')],null);}return _0x42ab9c;})[_0x4da0('0x28')](respondWithResult(_0x1f5997,null))[_0x4da0('0x3f')](handleError(_0x1f5997,null));};exports[_0x4da0('0x40')]=function(_0x7c3519,_0x3714ce){var _0x475298='license-info.log';var _0x4439a4=path['join'](_0x4da0('0x41'),_0x4da0('0x42'),_0x4da0('0x43'),_0x475298);_0x3714ce[_0x4da0('0x44')]('Content-disposition',_0x4da0('0x45')+_0x475298);_0x3714ce[_0x4da0('0x23')](_0x4da0('0x46'),_0x4da0('0x47'));_0x3714ce[_0x4da0('0x48')](_0x4439a4);};
\ No newline at end of file
+var _0x2e66=['downloadLogFile','license-info.log','join','/var','log','xcally','setHeader','Content-disposition','Content-Type','text/plain','download','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','then','error','stack','name','send','model','keys','License','query','filters','intersection','attributes','length','getLicense','catch','body','find','params','get','checkLicense','key','demo'];(function(_0xbaff55,_0x4811b7){var _0x4fd557=function(_0x1cf4b0){while(--_0x1cf4b0){_0xbaff55['push'](_0xbaff55['shift']());}};_0x4fd557(++_0x4811b7);}(_0x2e66,0x9f));var _0x62e6=function(_0x12ef53,_0x3491ae){_0x12ef53=_0x12ef53-0x0;var _0x542de6=_0x2e66[_0x12ef53];return _0x542de6;};'use strict';var emlformat=require(_0x62e6('0x0'));var rimraf=require(_0x62e6('0x1'));var zipdir=require(_0x62e6('0x2'));var jsonpatch=require(_0x62e6('0x3'));var rp=require(_0x62e6('0x4'));var moment=require(_0x62e6('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x62e6('0x6'));var util=require(_0x62e6('0x7'));var path=require(_0x62e6('0x8'));var sox=require(_0x62e6('0x9'));var csv=require(_0x62e6('0xa'));var ejs=require(_0x62e6('0xb'));var fs=require('fs');var fs_extra=require(_0x62e6('0xc'));var _=require('lodash');var squel=require(_0x62e6('0xd'));var crypto=require(_0x62e6('0xe'));var jsforce=require(_0x62e6('0xf'));var deskjs=require(_0x62e6('0x10'));var toCsv=require(_0x62e6('0xa'));var querystring=require(_0x62e6('0x11'));var Papa=require(_0x62e6('0x12'));var Redis=require(_0x62e6('0x13'));var authService=require(_0x62e6('0x14'));var qs=require(_0x62e6('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x62e6('0x16'));var utils=require(_0x62e6('0x17'));var config=require(_0x62e6('0x18'));var licenseUtil=require(_0x62e6('0x19'));var db=require(_0x62e6('0x1a'))['db'];function respondWithStatusCode(_0x3d47cb,_0xf346c){_0xf346c=_0xf346c||0xcc;return function(_0x320f08){if(_0x320f08){return _0x3d47cb[_0x62e6('0x1b')](_0xf346c);}return _0x3d47cb[_0x62e6('0x1c')](_0xf346c)[_0x62e6('0x1d')]();};}function respondWithResult(_0x3db394,_0x1c28b9){_0x1c28b9=_0x1c28b9||0xc8;return function(_0x1fedff){if(_0x1fedff){return _0x3db394[_0x62e6('0x1c')](_0x1c28b9)['json'](_0x1fedff);}};}function respondWithFilteredResult(_0x2d0104,_0x2550ca){return function(_0x4091de){if(_0x4091de){var _0x1b9df8=typeof _0x2550ca[_0x62e6('0x1e')]===_0x62e6('0x1f')&&typeof _0x2550ca[_0x62e6('0x20')]===_0x62e6('0x1f');var _0x256b43=_0x4091de[_0x62e6('0x21')];var _0x233a32=_0x1b9df8?0x0:_0x2550ca[_0x62e6('0x1e')];var _0x37a6b7=_0x1b9df8?_0x4091de[_0x62e6('0x21')]:_0x2550ca['offset']+_0x2550ca[_0x62e6('0x20')];var _0x5e6887;if(_0x37a6b7>=_0x256b43){_0x37a6b7=_0x256b43;_0x5e6887=0xc8;}else{_0x5e6887=0xce;}_0x2d0104[_0x62e6('0x1c')](_0x5e6887);return _0x2d0104[_0x62e6('0x22')](_0x62e6('0x23'),_0x233a32+'-'+_0x37a6b7+'/'+_0x256b43)[_0x62e6('0x24')](_0x4091de);}return null;};}function patchUpdates(_0x553c94){return function(_0x392061){try{jsonpatch[_0x62e6('0x25')](_0x392061,_0x553c94,!![]);}catch(_0x3aabd5){return BPromise[_0x62e6('0x26')](_0x3aabd5);}return _0x392061[_0x62e6('0x27')]();};}function saveUpdates(_0xc23cf6,_0x4e111f){return function(_0x502384){if(_0x502384){return _0x502384[_0x62e6('0x28')](_0xc23cf6)[_0x62e6('0x29')](function(_0x1fa7db){return _0x1fa7db;});}return null;};}function removeEntity(_0x450111,_0x2ba4cc){return function(_0x2a1132){if(_0x2a1132){return _0x2a1132['destroy']()[_0x62e6('0x29')](function(){_0x450111[_0x62e6('0x1c')](0xcc)[_0x62e6('0x1d')]();});}};}function handleEntityNotFound(_0x124d0a,_0x39ce3d){return function(_0x1057a2){if(!_0x1057a2){_0x124d0a[_0x62e6('0x1b')](0x194);}return _0x1057a2;};}function handleError(_0x46996c,_0x2e8b20){_0x2e8b20=_0x2e8b20||0x1f4;return function(_0x4e52fe){logger[_0x62e6('0x2a')](_0x4e52fe[_0x62e6('0x2b')]);if(_0x4e52fe[_0x62e6('0x2c')]){delete _0x4e52fe[_0x62e6('0x2c')];}_0x46996c[_0x62e6('0x1c')](_0x2e8b20)[_0x62e6('0x2d')](_0x4e52fe);};}var utilLicense=require(_0x62e6('0x19'));exports['index']=function(_0x3db990,_0x34bbdd){var _0x40804a={'raw':!![],'where':{'id':0x1}},_0x580771={};_0x580771[_0x62e6('0x2e')]=_[_0x62e6('0x2f')](db[_0x62e6('0x30')]['rawAttributes']);_0x580771[_0x62e6('0x31')]=_[_0x62e6('0x2f')](_0x3db990[_0x62e6('0x31')]);_0x580771[_0x62e6('0x32')]=_[_0x62e6('0x33')](_0x580771[_0x62e6('0x2e')],_0x580771[_0x62e6('0x31')]);_0x40804a[_0x62e6('0x34')]=_[_0x62e6('0x33')](_0x580771['model'],qs['fields'](_0x3db990[_0x62e6('0x31')]['fields']));_0x40804a['attributes']=_0x40804a[_0x62e6('0x34')][_0x62e6('0x35')]?_0x40804a[_0x62e6('0x34')]:_0x580771[_0x62e6('0x2e')];_0x40804a=_['merge']({},_0x40804a,_0x3db990['options']);return utilLicense[_0x62e6('0x36')](_0x40804a)[_0x62e6('0x29')](respondWithResult(_0x34bbdd,null))[_0x62e6('0x37')](handleError(_0x34bbdd,null));};exports[_0x62e6('0x28')]=function(_0xb04e93,_0x1bcae9){if(_0xb04e93[_0x62e6('0x38')]['id']){delete _0xb04e93['body']['id'];}return db[_0x62e6('0x30')][_0x62e6('0x39')]({'where':{'id':_0xb04e93[_0x62e6('0x3a')]['id']}})[_0x62e6('0x29')](handleEntityNotFound(_0x1bcae9,null))[_0x62e6('0x29')](function(_0x20e779){var _0xb66ceb=_0x20e779[_0x62e6('0x3b')]({'plain':!![]});return utilLicense[_0x62e6('0x3c')](_0xb66ceb,_0xb04e93['body'][_0x62e6('0x3d')]);})[_0x62e6('0x29')](function(_0x3b8eaa){if(!_0x3b8eaa[_0x62e6('0x3e')]){return saveUpdates(_0xb04e93[_0x62e6('0x38')],null);}return _0x3b8eaa;})['then'](respondWithResult(_0x1bcae9,null))[_0x62e6('0x37')](handleError(_0x1bcae9,null));};exports[_0x62e6('0x3f')]=function(_0x22aaf3,_0x4acff6){var _0x1219ca=_0x62e6('0x40');var _0x719665=path[_0x62e6('0x41')](_0x62e6('0x42'),_0x62e6('0x43'),_0x62e6('0x44'),_0x1219ca);_0x4acff6[_0x62e6('0x45')](_0x62e6('0x46'),'attachment;\x20filename='+_0x1219ca);_0x4acff6[_0x62e6('0x22')](_0x62e6('0x47'),_0x62e6('0x48'));_0x4acff6[_0x62e6('0x49')](_0x719665);};
\ No newline at end of file
index 56a149a..8b3b2b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8c7d=['license','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./license.attributes','exports','define','License'];(function(_0x29b609,_0x19d388){var _0x54c952=function(_0xb3c38d){while(--_0xb3c38d){_0x29b609['push'](_0x29b609['shift']());}};_0x54c952(++_0x19d388);}(_0x8c7d,0x1da));var _0xd8c7=function(_0x49ea5f,_0x4df91c){_0x49ea5f=_0x49ea5f-0x0;var _0x9382d4=_0x8c7d[_0x49ea5f];return _0x9382d4;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xd8c7('0x0'))(_0xd8c7('0x1'));var moment=require(_0xd8c7('0x2'));var BPromise=require('bluebird');var rp=require(_0xd8c7('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd8c7('0x4'));var config=require(_0xd8c7('0x5'));var attributes=require(_0xd8c7('0x6'));module[_0xd8c7('0x7')]=function(_0x1f7209,_0xe25b37){return _0x1f7209[_0xd8c7('0x8')](_0xd8c7('0x9'),attributes,{'tableName':_0xd8c7('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0fbe=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','./license.attributes','exports','define','License','license','lodash','util'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x0fbe,0x8a));var _0xe0fb=function(_0x497642,_0x55c481){_0x497642=_0x497642-0x0;var _0x351a14=_0x0fbe[_0x497642];return _0x351a14;};'use strict';var _=require(_0xe0fb('0x0'));var util=require(_0xe0fb('0x1'));var logger=require(_0xe0fb('0x2'))(_0xe0fb('0x3'));var moment=require(_0xe0fb('0x4'));var BPromise=require(_0xe0fb('0x5'));var rp=require(_0xe0fb('0x6'));var fs=require('fs');var path=require(_0xe0fb('0x7'));var rimraf=require(_0xe0fb('0x8'));var config=require('../../config/environment');var attributes=require(_0xe0fb('0x9'));module[_0xe0fb('0xa')]=function(_0x71ecc4,_0x1348e3){return _0x71ecc4[_0xe0fb('0xb')](_0xe0fb('0xc'),attributes,{'tableName':_0xe0fb('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7f19cde..83cd6a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3256=['then','request\x20sent','debug','error','code','License,\x20%s,\x20%s','message','info','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x3256,0x180));var _0x6325=function(_0x3888cc,_0x255fa3){_0x3888cc=_0x3888cc-0x0;var _0x3749f2=_0x3256[_0x3888cc];return _0x3749f2;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6325('0x0'));var BPromise=require(_0x6325('0x1'));var rs=require(_0x6325('0x2'));var fs=require('fs');var Redis=require(_0x6325('0x3'));var db=require(_0x6325('0x4'))['db'];var utils=require(_0x6325('0x5'));var logger=require(_0x6325('0x6'))(_0x6325('0x7'));var config=require('../../config/environment');var jayson=require(_0x6325('0x8'));var client=jayson[_0x6325('0x9')][_0x6325('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1c0d74,_0x1b8adf,_0x154123){return new BPromise(function(_0x213a63,_0xc93f40){return client[_0x6325('0xb')](_0x1c0d74,_0x154123)[_0x6325('0xc')](function(_0x42a71c){logger['info']('License,\x20%s,\x20%s',_0x1b8adf,_0x6325('0xd'));logger[_0x6325('0xe')]('License,\x20%s,\x20%s,\x20%s',_0x1b8adf,_0x6325('0xd'),JSON['stringify'](_0x42a71c));if(_0x42a71c[_0x6325('0xf')]){if(_0x42a71c[_0x6325('0xf')][_0x6325('0x10')]===0x1f4){logger[_0x6325('0xf')](_0x6325('0x11'),_0x1b8adf,_0x42a71c[_0x6325('0xf')][_0x6325('0x12')]);return _0xc93f40(_0x42a71c['error']['message']);}logger['error'](_0x6325('0x11'),_0x1b8adf,_0x42a71c[_0x6325('0xf')][_0x6325('0x12')]);return _0x213a63(_0x42a71c['error'][_0x6325('0x12')]);}else{logger[_0x6325('0x13')](_0x6325('0x11'),_0x1b8adf,_0x6325('0xd'));_0x213a63(_0x42a71c[_0x6325('0x14')][_0x6325('0x12')]);}})[_0x6325('0x15')](function(_0x3d8f4e){logger[_0x6325('0xf')](_0x6325('0x11'),_0x1b8adf,_0x3d8f4e);_0xc93f40(_0x3d8f4e);});});}
\ No newline at end of file
+var _0xc07f=['message','info','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','then','License,\x20%s,\x20%s','debug','License,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0xbca1b1,_0x33f0ce){var _0x4e1686=function(_0x58a80c){while(--_0x58a80c){_0xbca1b1['push'](_0xbca1b1['shift']());}};_0x4e1686(++_0x33f0ce);}(_0xc07f,0x184));var _0xfc07=function(_0x187466,_0x2041b3){_0x187466=_0x187466-0x0;var _0x118a2e=_0xc07f[_0x187466];return _0x118a2e;};'use strict';var _=require(_0xfc07('0x0'));var util=require(_0xfc07('0x1'));var moment=require(_0xfc07('0x2'));var BPromise=require(_0xfc07('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfc07('0x4'));var db=require(_0xfc07('0x5'))['db'];var utils=require(_0xfc07('0x6'));var logger=require(_0xfc07('0x7'))('rpc');var config=require(_0xfc07('0x8'));var jayson=require(_0xfc07('0x9'));var client=jayson[_0xfc07('0xa')][_0xfc07('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2575b6,_0x18bd89,_0x25a800){return new BPromise(function(_0x5adaae,_0xf9f4bd){return client['request'](_0x2575b6,_0x25a800)[_0xfc07('0xc')](function(_0x4e822c){logger['info'](_0xfc07('0xd'),_0x18bd89,'request\x20sent');logger[_0xfc07('0xe')](_0xfc07('0xf'),_0x18bd89,_0xfc07('0x10'),JSON[_0xfc07('0x11')](_0x4e822c));if(_0x4e822c['error']){if(_0x4e822c[_0xfc07('0x12')][_0xfc07('0x13')]===0x1f4){logger['error'](_0xfc07('0xd'),_0x18bd89,_0x4e822c['error'][_0xfc07('0x14')]);return _0xf9f4bd(_0x4e822c[_0xfc07('0x12')]['message']);}logger[_0xfc07('0x12')](_0xfc07('0xd'),_0x18bd89,_0x4e822c[_0xfc07('0x12')][_0xfc07('0x14')]);return _0x5adaae(_0x4e822c[_0xfc07('0x12')][_0xfc07('0x14')]);}else{logger[_0xfc07('0x15')](_0xfc07('0xd'),_0x18bd89,_0xfc07('0x10'));_0x5adaae(_0x4e822c[_0xfc07('0x16')][_0xfc07('0x14')]);}})[_0xfc07('0x17')](function(_0x563d2a){logger['error'](_0xfc07('0xd'),_0x18bd89,_0x563d2a);_0xf9f4bd(_0x563d2a);});});}
\ No newline at end of file
index 993d247..6a4331d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e70=['addImap','/:id/applications','addApplications','/:id/send','addAgents','put','update','delete','removeDispositions','removeAnswers','removeImap','removeSmtp','removeAgents','exports','util','path','express','Router','../../components/auth/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','getImap','/:id/out_servers','/:id/interactions','getInteractions','getApplications','/:id/messages','/:id/verify','/:id/users','getAgents','post','addDisposition','addAnswer','/:id/in_servers'];(function(_0x413feb,_0x10477f){var _0x40ee88=function(_0x32a3f6){while(--_0x32a3f6){_0x413feb['push'](_0x413feb['shift']());}};_0x40ee88(++_0x10477f);}(_0x3e70,0x66));var _0x03e7=function(_0x1900f0,_0x1f2937){_0x1900f0=_0x1900f0-0x0;var _0x52f278=_0x3e70[_0x1900f0];return _0x52f278;};'use strict';var multer=require('multer');var util=require(_0x03e7('0x0'));var path=require(_0x03e7('0x1'));var timeout=require('connect-timeout');var express=require(_0x03e7('0x2'));var router=express[_0x03e7('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x03e7('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x03e7('0x5'));var controller=require('./mailAccount.controller');router[_0x03e7('0x6')]('/',auth['isAuthenticated'](),controller[_0x03e7('0x7')]);router['get'](_0x03e7('0x8'),auth[_0x03e7('0x9')](),controller[_0x03e7('0xa')]);router[_0x03e7('0x6')](_0x03e7('0xb'),auth['isAuthenticated'](),controller[_0x03e7('0xc')]);router[_0x03e7('0x6')](_0x03e7('0xd'),auth[_0x03e7('0x9')](),controller[_0x03e7('0xe')]);router[_0x03e7('0x6')](_0x03e7('0xf'),auth[_0x03e7('0x9')](),controller[_0x03e7('0x10')]);router[_0x03e7('0x6')]('/:id/in_servers',auth[_0x03e7('0x9')](),controller[_0x03e7('0x11')]);router[_0x03e7('0x6')](_0x03e7('0x12'),auth[_0x03e7('0x9')](),controller['getSmtp']);router[_0x03e7('0x6')](_0x03e7('0x13'),auth['isAuthenticated'](),controller[_0x03e7('0x14')]);router[_0x03e7('0x6')]('/:id/applications',auth[_0x03e7('0x9')](),controller[_0x03e7('0x15')]);router['get'](_0x03e7('0x16'),auth['isAuthenticated'](),controller['getMessages']);router[_0x03e7('0x6')](_0x03e7('0x17'),auth['isAuthenticated'](),controller['verifySmtp']);router[_0x03e7('0x6')](_0x03e7('0x18'),auth[_0x03e7('0x9')](),controller[_0x03e7('0x19')]);router[_0x03e7('0x1a')](_0x03e7('0xd'),auth[_0x03e7('0x9')](),controller[_0x03e7('0x1b')]);router[_0x03e7('0x1a')](_0x03e7('0xf'),auth['isAuthenticated'](),controller[_0x03e7('0x1c')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x03e7('0x1a')](_0x03e7('0x1d'),auth['isAuthenticated'](),controller[_0x03e7('0x1e')]);router[_0x03e7('0x1a')](_0x03e7('0x12'),auth[_0x03e7('0x9')](),controller['addSmtp']);router[_0x03e7('0x1a')](_0x03e7('0x13'),auth[_0x03e7('0x9')](),controller['addInteraction']);router[_0x03e7('0x1a')](_0x03e7('0x1f'),auth[_0x03e7('0x9')](),controller[_0x03e7('0x20')]);router['post'](_0x03e7('0x21'),auth[_0x03e7('0x9')](),controller['send']);router[_0x03e7('0x1a')](_0x03e7('0x18'),auth[_0x03e7('0x9')](),controller[_0x03e7('0x22')]);router[_0x03e7('0x23')](_0x03e7('0xb'),auth[_0x03e7('0x9')](),controller[_0x03e7('0x24')]);router[_0x03e7('0x25')](_0x03e7('0xd'),auth[_0x03e7('0x9')](),controller[_0x03e7('0x26')]);router[_0x03e7('0x25')](_0x03e7('0xf'),auth[_0x03e7('0x9')](),controller[_0x03e7('0x27')]);router['delete'](_0x03e7('0x1d'),auth[_0x03e7('0x9')](),controller[_0x03e7('0x28')]);router[_0x03e7('0x25')](_0x03e7('0x12'),auth[_0x03e7('0x9')](),controller[_0x03e7('0x29')]);router[_0x03e7('0x25')](_0x03e7('0xb'),auth['isAuthenticated'](),controller['destroy']);router['delete'](_0x03e7('0x18'),auth[_0x03e7('0x9')](),controller[_0x03e7('0x2a')]);module[_0x03e7('0x2b')]=router;
\ No newline at end of file
+var _0x12e1=['../../components/interaction/service','./mailAccount.controller','isAuthenticated','index','get','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/in_servers','getImap','/:id/out_servers','getSmtp','/:id/interactions','/:id/applications','getApplications','/:id/messages','getMessages','/:id/verify','verifySmtp','getAgents','addDisposition','addAnswer','create','post','addImap','addSmtp','addInteraction','addApplications','/:id/send','send','/:id/users','put','delete','removeAnswers','removeImap','destroy','removeAgents','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0xf48bba,_0x5827a1){var _0x101fd8=function(_0x438a96){while(--_0x438a96){_0xf48bba['push'](_0xf48bba['shift']());}};_0x101fd8(++_0x5827a1);}(_0x12e1,0x1e2));var _0x112e=function(_0x5f0efe,_0x55a6b8){_0x5f0efe=_0x5f0efe-0x0;var _0x33848d=_0x12e1[_0x5f0efe];return _0x33848d;};'use strict';var multer=require(_0x112e('0x0'));var util=require(_0x112e('0x1'));var path=require(_0x112e('0x2'));var timeout=require(_0x112e('0x3'));var express=require(_0x112e('0x4'));var router=express[_0x112e('0x5')]();var fs_extra=require(_0x112e('0x6'));var auth=require(_0x112e('0x7'));var interaction=require(_0x112e('0x8'));var config=require('../../config/environment');var controller=require(_0x112e('0x9'));router['get']('/',auth[_0x112e('0xa')](),controller[_0x112e('0xb')]);router[_0x112e('0xc')]('/describe',auth[_0x112e('0xa')](),controller[_0x112e('0xd')]);router[_0x112e('0xc')](_0x112e('0xe'),auth[_0x112e('0xa')](),controller[_0x112e('0xf')]);router[_0x112e('0xc')](_0x112e('0x10'),auth[_0x112e('0xa')](),controller[_0x112e('0x11')]);router[_0x112e('0xc')](_0x112e('0x12'),auth[_0x112e('0xa')](),controller[_0x112e('0x13')]);router[_0x112e('0xc')](_0x112e('0x14'),auth[_0x112e('0xa')](),controller[_0x112e('0x15')]);router[_0x112e('0xc')](_0x112e('0x16'),auth[_0x112e('0xa')](),controller[_0x112e('0x17')]);router[_0x112e('0xc')](_0x112e('0x18'),auth[_0x112e('0xa')](),controller['getInteractions']);router[_0x112e('0xc')](_0x112e('0x19'),auth[_0x112e('0xa')](),controller[_0x112e('0x1a')]);router[_0x112e('0xc')](_0x112e('0x1b'),auth[_0x112e('0xa')](),controller[_0x112e('0x1c')]);router[_0x112e('0xc')](_0x112e('0x1d'),auth[_0x112e('0xa')](),controller[_0x112e('0x1e')]);router[_0x112e('0xc')]('/:id/users',auth[_0x112e('0xa')](),controller[_0x112e('0x1f')]);router['post']('/:id/dispositions',auth['isAuthenticated'](),controller[_0x112e('0x20')]);router['post']('/:id/canned_answers',auth[_0x112e('0xa')](),controller[_0x112e('0x21')]);router['post']('/',auth[_0x112e('0xa')](),controller[_0x112e('0x22')]);router[_0x112e('0x23')]('/:id/in_servers',auth[_0x112e('0xa')](),controller[_0x112e('0x24')]);router[_0x112e('0x23')]('/:id/out_servers',auth[_0x112e('0xa')](),controller[_0x112e('0x25')]);router[_0x112e('0x23')](_0x112e('0x18'),auth[_0x112e('0xa')](),controller[_0x112e('0x26')]);router[_0x112e('0x23')]('/:id/applications',auth[_0x112e('0xa')](),controller[_0x112e('0x27')]);router[_0x112e('0x23')](_0x112e('0x28'),auth['isAuthenticated'](),controller[_0x112e('0x29')]);router['post'](_0x112e('0x2a'),auth[_0x112e('0xa')](),controller['addAgents']);router[_0x112e('0x2b')](_0x112e('0xe'),auth[_0x112e('0xa')](),controller['update']);router[_0x112e('0x2c')](_0x112e('0x10'),auth[_0x112e('0xa')](),controller['removeDispositions']);router['delete'](_0x112e('0x12'),auth[_0x112e('0xa')](),controller[_0x112e('0x2d')]);router['delete'](_0x112e('0x14'),auth[_0x112e('0xa')](),controller[_0x112e('0x2e')]);router[_0x112e('0x2c')]('/:id/out_servers',auth[_0x112e('0xa')](),controller['removeSmtp']);router[_0x112e('0x2c')](_0x112e('0xe'),auth[_0x112e('0xa')](),controller[_0x112e('0x2f')]);router['delete'](_0x112e('0x2a'),auth[_0x112e('0xa')](),controller[_0x112e('0x30')]);module['exports']=router;
\ No newline at end of file
index a056fdf..d3cd007 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc66=['mandatoryDisposition','ENUM','gmail','hotmail','yahoo','outlook365','provider','custom','sequelize','exports','STRING','BOOLEAN','TEXT','Arial,Helvetica,sans-serif','UNSIGNED','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','setDataValue','mandatoryDispositionPauseId'];(function(_0x3b4715,_0x3a91aa){var _0x591500=function(_0x6a774){while(--_0x6a774){_0x3b4715['push'](_0x3b4715['shift']());}};_0x591500(++_0x3a91aa);}(_0xbc66,0x1d0));var _0x6bc6=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xbc66[_0x4b369d];return _0x571a98;};'use strict';var Sequelize=require(_0x6bc6('0x0'));module[_0x6bc6('0x1')]={'description':{'type':Sequelize[_0x6bc6('0x2')]},'name':{'type':Sequelize[_0x6bc6('0x2')],'allowNull':![]},'service':{'type':Sequelize[_0x6bc6('0x3')],'defaultValue':![]},'email':{'type':Sequelize['STRING'],'validate':{'isEmail':!![]}},'active':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'key':{'type':Sequelize[_0x6bc6('0x2')],'allowNull':![]},'template':{'type':Sequelize[_0x6bc6('0x4')]},'markAsUnread':{'type':Sequelize[_0x6bc6('0x3')],'defaultValue':![]},'fontFamily':{'type':Sequelize[_0x6bc6('0x2')],'allowNull':![],'defaultValue':_0x6bc6('0x5')},'fontSize':{'type':Sequelize['INTEGER'](0x2)[_0x6bc6('0x6')],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x6bc6('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[_0x6bc6('0x3')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x6bc6('0x3')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x6bc6('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x6bc6('0x3')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x6bc6('0x3')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x6bc6('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x6bc6('0x7')],'allowNull':!![],'defaultValue':null,'comment':_0x6bc6('0x8')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':'Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','set':function(_0x421fea){if(!_0x421fea)this[_0x6bc6('0x9')](_0x6bc6('0xa'),null);this[_0x6bc6('0x9')](_0x6bc6('0xb'),_0x421fea);}},'provider':{'type':Sequelize[_0x6bc6('0xc')](_0x6bc6('0xd'),_0x6bc6('0xe'),_0x6bc6('0xf'),_0x6bc6('0x10')),'defaultValue':null,'get':function(){if(!this['getDataValue'](_0x6bc6('0x11')))return'custom';return this['getDataValue']('provider');},'set':function(_0x4c33ae){if(_0x4c33ae===_0x6bc6('0x12'))_0x4c33ae=null;return this['setDataValue'](_0x6bc6('0x11'),_0x4c33ae);}}};
\ No newline at end of file
+var _0xaa30=['BOOLEAN','STRING','TEXT','Arial,Helvetica,sans-serif','INTEGER','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','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDisposition','ENUM','gmail','outlook365','getDataValue','provider','custom','sequelize','exports'];(function(_0xd559c9,_0x2de50b){var _0x4b03f0=function(_0x51f4af){while(--_0x51f4af){_0xd559c9['push'](_0xd559c9['shift']());}};_0x4b03f0(++_0x2de50b);}(_0xaa30,0xc4));var _0x0aa3=function(_0xea8947,_0x1b573d){_0xea8947=_0xea8947-0x0;var _0x2455e9=_0xaa30[_0xea8947];return _0x2455e9;};'use strict';var Sequelize=require(_0x0aa3('0x0'));module[_0x0aa3('0x1')]={'description':{'type':Sequelize['STRING']},'name':{'type':Sequelize['STRING'],'allowNull':![]},'service':{'type':Sequelize[_0x0aa3('0x2')],'defaultValue':![]},'email':{'type':Sequelize[_0x0aa3('0x3')],'validate':{'isEmail':!![]}},'active':{'type':Sequelize[_0x0aa3('0x2')],'defaultValue':!![]},'key':{'type':Sequelize[_0x0aa3('0x3')],'allowNull':![]},'template':{'type':Sequelize[_0x0aa3('0x4')]},'markAsUnread':{'type':Sequelize[_0x0aa3('0x2')],'defaultValue':![]},'fontFamily':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x0aa3('0x5')},'fontSize':{'type':Sequelize[_0x0aa3('0x6')](0x2)['UNSIGNED'],'defaultValue':0xd,'validate':{'min':0x8,'max':0x48}},'notificationTemplate':{'type':Sequelize[_0x0aa3('0x4')],'defaultValue':function(){return _0x0aa3('0x7');}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x0aa3('0x2')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x0aa3('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x0aa3('0x2')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x0aa3('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x0aa3('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0x0aa3('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0x0aa3('0x8')},'mandatoryDisposition':{'type':Sequelize[_0x0aa3('0x2')],'defaultValue':![],'comment':_0x0aa3('0x9'),'set':function(_0x11e2d3){if(!_0x11e2d3)this[_0x0aa3('0xa')]('mandatoryDispositionPauseId',null);this['setDataValue'](_0x0aa3('0xb'),_0x11e2d3);}},'provider':{'type':Sequelize[_0x0aa3('0xc')](_0x0aa3('0xd'),'hotmail','yahoo',_0x0aa3('0xe')),'defaultValue':null,'get':function(){if(!this[_0x0aa3('0xf')](_0x0aa3('0x10')))return _0x0aa3('0x11');return this['getDataValue']('provider');},'set':function(_0x28c6b7){if(_0x28c6b7===_0x0aa3('0x11'))_0x28c6b7=null;return this[_0x0aa3('0xa')](_0x0aa3('0x10'),_0x28c6b7);}}};
\ No newline at end of file
index 15af166..9e12773 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa49e=['status','json','offset','undefined','limit','count','Content-Range','update','get','MailAccounts','UserProfileResource','destroy','end','stack','send','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook.office365.com','Unknown\x20email\x20service\x20provider','smtp.gmail.com','smtp.mail.yahoo.com','smtp-mail.outlook.com','outlook365','smtp.office365.com','user','username','password','pass','modernAuthentication','CloudProviderId','host','port','secure','service','authentication','Imap','Smtp','index','MailServerIn','MailServerOut','Pause','model','name','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','map','type','VIRTUAL','options','MailAccount','includeAll','include','findAll','rows','show','params','mandatoryDispositionPause','find','body','custom','Mail\x20Account\x20not\x20found','describe','Disposition','create','getDispositions','findOne','pick','merge','removeDispositions','addAnswer','MailAccountId','CannedAnswer','getAnswers','rawAttributes','removeAnswers','ids','key','provider','email','ListId','active','description','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','setImap','getSmtp','addSmtp','removeSmtp','addInteraction','MailInteraction','omit','getInteractions','order','CmContact','Contact','User','Tag','Tags','color','tag','addApplications','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','MailApplication','findAndCountAll','finally','sendStatus','getApplications','MailMessage','$gte','split','YYYY-MM-DD\x20HH:mm:ss','inlineCss','List','Contacts','updatedAt','CloudProvider','from','format','attachments','basename','getSmtpOptions','SendMail','sendMail','List\x20not\x20found','messageId','subject','attach','Interaction','Messages','verifySmtp','VerifySmtp','ValidationError','addAgents','spread','isArray','emit','userMailAccount:remove','getAgents','moment','path','lodash','ioredis','../../components/parsers/qs','../../config/logger','redis','defaults','localhost','socket.io-emitter','./mailAccount.socket','register','jayson/promise','client','http','request','then','MailAccount,\x20%s,\x20%s','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xa49e,0xa0));var _0xea49=function(_0xea343d,_0x311197){_0xea343d=_0xea343d-0x0;var _0x2c6e9c=_0xa49e[_0xea343d];return _0x2c6e9c;};'use strict';var moment=require(_0xea49('0x0'));var BPromise=require('bluebird');var util=require('util');var path=require(_0xea49('0x1'));var _=require(_0xea49('0x2'));var juice=require('juice');var Redis=require(_0xea49('0x3'));var qs=require(_0xea49('0x4'));var logger=require(_0xea49('0x5'))('api');var config=require('../../config/environment');var db=require('../../mysqldb')['db'];config[_0xea49('0x6')]=_[_0xea49('0x7')](config['redis'],{'host':_0xea49('0x8'),'port':0x18eb});var socket=require(_0xea49('0x9'))(new Redis(config[_0xea49('0x6')]));require(_0xea49('0xa'))[_0xea49('0xb')](socket);var jayson=require(_0xea49('0xc'));var client=jayson[_0xea49('0xd')][_0xea49('0xe')]({'port':0x232b});function respondWithRpcPromise(_0x4de3f4,_0xb4d065,_0x396556,_0x45e45b){return new BPromise(function(_0x5cef6a,_0x41dc38){var _0x59d99d=_0x45e45b||client;return _0x59d99d[_0xea49('0xf')](_0x4de3f4,_0x396556)[_0xea49('0x10')](function(_0xe771c3){logger['info'](_0xea49('0x11'),_0xb4d065,'request\x20sent');logger['debug'](_0xea49('0x12'),_0xb4d065,_0xea49('0x13'),JSON[_0xea49('0x14')](_0xe771c3));if(_0xe771c3[_0xea49('0x15')]){if(_0xe771c3[_0xea49('0x15')][_0xea49('0x16')]===0x1f4){logger[_0xea49('0x15')](_0xea49('0x11'),_0xb4d065,_0xe771c3[_0xea49('0x15')][_0xea49('0x17')]);return _0x41dc38(_0xe771c3['error'][_0xea49('0x17')]);}logger[_0xea49('0x15')](_0xea49('0x11'),_0xb4d065,_0xe771c3['error'][_0xea49('0x17')]);return _0x5cef6a(_0xe771c3[_0xea49('0x15')][_0xea49('0x17')]);}else{logger[_0xea49('0x18')](_0xea49('0x11'),_0xb4d065,'request\x20sent');_0x5cef6a(_0xe771c3[_0xea49('0x19')][_0xea49('0x17')]);}})[_0xea49('0x1a')](function(_0x551a14){logger[_0xea49('0x15')]('MailAccount,\x20%s,\x20%s',_0xb4d065,_0x551a14);_0x41dc38(_0x551a14);});});}function respondWithStatusCode(_0x378f70,_0x3d2446){_0x3d2446=_0x3d2446||0xcc;return function(_0x374aa9){if(_0x374aa9){return _0x378f70['sendStatus'](_0x3d2446);}return _0x378f70[_0xea49('0x1b')](_0x3d2446)['end']();};}function respondWithResult(_0x1aeb35,_0xc599e4){_0xc599e4=_0xc599e4||0xc8;return function(_0x14943e){if(_0x14943e){return _0x1aeb35[_0xea49('0x1b')](_0xc599e4)[_0xea49('0x1c')](_0x14943e);}};}function respondWithFilteredResult(_0x528cf4,_0x33e63f){return function(_0x771505){if(_0x771505){var _0x202776=typeof _0x33e63f[_0xea49('0x1d')]===_0xea49('0x1e')&&typeof _0x33e63f[_0xea49('0x1f')]===_0xea49('0x1e');var _0x256fac=_0x771505[_0xea49('0x20')];var _0x96296c=_0x202776?0x0:_0x33e63f[_0xea49('0x1d')];var _0x3e41a1=_0x202776?_0x771505[_0xea49('0x20')]:_0x33e63f[_0xea49('0x1d')]+_0x33e63f[_0xea49('0x1f')];var _0x4b8d49;if(_0x3e41a1>=_0x256fac){_0x3e41a1=_0x256fac;_0x4b8d49=0xc8;}else{_0x4b8d49=0xce;}_0x528cf4[_0xea49('0x1b')](_0x4b8d49);return _0x528cf4['set'](_0xea49('0x21'),_0x96296c+'-'+_0x3e41a1+'/'+_0x256fac)['json'](_0x771505);}return null;};}function saveUpdates(_0x127c2b){return function(_0x37f4ec){if(_0x37f4ec){return _0x37f4ec[_0xea49('0x22')](_0x127c2b)[_0xea49('0x10')](function(_0x50120c){return _0x50120c;});}return null;};}function removeEntity(_0x10c97d){return function(_0x1bfd59){if(_0x1bfd59){return _0x1bfd59['destroy']()[_0xea49('0x10')](function(){var _0x33ba28=_0x1bfd59[_0xea49('0x23')]({'plain':!![]});var _0x33f0e3=_0xea49('0x24');return db[_0xea49('0x25')][_0xea49('0x26')]({'where':{'type':_0x33f0e3,'resourceId':_0x33ba28['id']}})[_0xea49('0x10')](function(){return _0x1bfd59;});})[_0xea49('0x10')](function(){_0x10c97d['status'](0xcc)[_0xea49('0x27')]();});}};}function handleEntityNotFound(_0x1d447a){return function(_0x4ca327){if(!_0x4ca327){_0x1d447a['sendStatus'](0x194);}return _0x4ca327;};}function handleError(_0x5cb7c3,_0x39b03c){_0x39b03c=_0x39b03c||0x1f4;return function(_0x307f2e){logger[_0xea49('0x15')](_0x307f2e[_0xea49('0x28')]);if(_0x307f2e['name']){delete _0x307f2e['name'];}_0x5cb7c3['status'](_0x39b03c)[_0xea49('0x29')](_0x307f2e);};}function getImapHost(_0xd02142){switch(_0xd02142){case _0xea49('0x2a'):return _0xea49('0x2b');case _0xea49('0x2c'):return _0xea49('0x2d');case _0xea49('0x2e'):return _0xea49('0x2f');case'outlook365':return _0xea49('0x30');}throw new Error(_0xea49('0x31'),_0xd02142);}function getSmtpHost(_0x123b33){switch(_0x123b33){case _0xea49('0x2a'):return _0xea49('0x32');case _0xea49('0x2c'):return _0xea49('0x33');case _0xea49('0x2e'):return _0xea49('0x34');case _0xea49('0x35'):return _0xea49('0x36');}throw new Error(_0xea49('0x31'),_0x123b33);}function getAuthenticationOptions(_0xa179f,_0xc022bf){var _0x53a8e0={};var _0x320dc1={};if(_0xa179f){_0x53a8e0[_0xea49('0x37')]=_0x320dc1[_0xea49('0x37')]=_0xc022bf[_0xea49('0x38')];_0x53a8e0[_0xea49('0x39')]=_0x320dc1[_0xea49('0x3a')]=_0xc022bf['password'];if(_0xc022bf[_0xea49('0x3b')]){_0x53a8e0[_0xea49('0x3b')]=_0x320dc1['modernAuthentication']=!![];_0x53a8e0[_0xea49('0x3c')]=_0x320dc1['CloudProviderId']=_0xc022bf['CloudProviderId'];_0x53a8e0[_0xea49('0x39')]=_0x320dc1[_0xea49('0x3a')]=null;}else{_0x53a8e0[_0xea49('0x3c')]=_0x320dc1[_0xea49('0x3c')]=null;}_0x53a8e0[_0xea49('0x3d')]=getImapHost(_0xa179f);_0x53a8e0[_0xea49('0x3e')]=0x3e1;_0x320dc1[_0xea49('0x3d')]=getSmtpHost(_0xa179f);_0x320dc1['port']=0x24b;_0x320dc1[_0xea49('0x3f')]=![];_0x53a8e0[_0xea49('0x40')]=_0x320dc1['service']=null;}else{if(_0xc022bf[_0xea49('0x41')]){_0x53a8e0[_0xea49('0x37')]=_0x320dc1[_0xea49('0x37')]=_0xc022bf[_0xea49('0x38')];_0x53a8e0['password']=_0x320dc1[_0xea49('0x3a')]=_0xc022bf[_0xea49('0x39')];}else{_0x53a8e0[_0xea49('0x41')]=_0x320dc1['authentication']=![];_0x53a8e0['user']=_0x320dc1[_0xea49('0x37')]=null;_0x53a8e0['password']=_0x320dc1[_0xea49('0x3a')]=null;}_0x53a8e0[_0xea49('0x3d')]=_0xc022bf[_0xea49('0x42')]['host'];_0x53a8e0[_0xea49('0x3e')]=_0xc022bf[_0xea49('0x42')][_0xea49('0x3e')];_0x320dc1[_0xea49('0x3d')]=_0xc022bf[_0xea49('0x43')][_0xea49('0x3d')];_0x320dc1[_0xea49('0x3e')]=_0xc022bf[_0xea49('0x43')][_0xea49('0x3e')];}return{'Imap':_0x53a8e0,'Smtp':_0x320dc1};}exports[_0xea49('0x44')]=function(_0x558481,_0x204544){var _0x36ec00={'include':[{'model':db[_0xea49('0x45')],'as':'Imap'},{'model':db[_0xea49('0x46')],'as':_0xea49('0x43')},{'model':db[_0xea49('0x47')],'as':'mandatoryDispositionPause'}]},_0x463836={},_0x4156db={'count':0x0,'rows':[]};var _0xc940e3=_['map'](db['MailAccount']['rawAttributes'],function(_0x54aa11){return{'name':_0x54aa11['fieldName'],'type':_0x54aa11['type']['key']};});_0x463836[_0xea49('0x48')]=_['map'](_0xc940e3,_0xea49('0x49'));_0x463836[_0xea49('0x4a')]=_[_0xea49('0x4b')](_0x558481[_0xea49('0x4a')]);_0x463836[_0xea49('0x4c')]=_[_0xea49('0x4d')](_0x463836[_0xea49('0x48')],_0x463836[_0xea49('0x4a')]);_0x36ec00['attributes']=_[_0xea49('0x4d')](_0x463836['model'],qs[_0xea49('0x4e')](_0x558481[_0xea49('0x4a')][_0xea49('0x4e')]));_0x36ec00[_0xea49('0x4f')]=_0x36ec00['attributes'][_0xea49('0x50')]?_0x36ec00[_0xea49('0x4f')]:_0x463836['model'];if(!_0x558481[_0xea49('0x4a')][_0xea49('0x51')](_0xea49('0x52'))){_0x36ec00['limit']=qs[_0xea49('0x1f')](_0x558481[_0xea49('0x4a')][_0xea49('0x1f')]);_0x36ec00['offset']=qs[_0xea49('0x1d')](_0x558481[_0xea49('0x4a')][_0xea49('0x1d')]);}_0x36ec00['order']=qs[_0xea49('0x53')](_0x558481['query'][_0xea49('0x53')]);_0x36ec00[_0xea49('0x54')]=qs[_0xea49('0x4c')](_['pick'](_0x558481['query'],_0x463836['filters']),_0xc940e3);if(_0x558481[_0xea49('0x4a')][_0xea49('0x55')]){_0x36ec00['where']=_['merge'](_0x36ec00[_0xea49('0x54')],{'$or':_[_0xea49('0x56')](_0xc940e3,function(_0x28baf4){if(_0x28baf4[_0xea49('0x57')]!==_0xea49('0x58')){var _0x48573e={};_0x48573e[_0x28baf4[_0xea49('0x49')]]={'$like':'%'+_0x558481['query']['filter']+'%'};return _0x48573e;}})});}_0x36ec00=_['merge']({},_0x36ec00,_0x558481[_0xea49('0x59')]);var _0xcfdd51={'where':_0x36ec00[_0xea49('0x54')]};return db[_0xea49('0x5a')][_0xea49('0x20')](_0xcfdd51)[_0xea49('0x10')](function(_0x8629ba){_0x4156db[_0xea49('0x20')]=_0x8629ba;if(_0x558481[_0xea49('0x4a')][_0xea49('0x5b')]){_0x36ec00[_0xea49('0x5c')]=[{'all':!![]}];}return db[_0xea49('0x5a')][_0xea49('0x5d')](_0x36ec00);})['then'](function(_0x4637af){_0x4156db[_0xea49('0x5e')]=_0x4637af;return _0x4156db;})['then'](respondWithFilteredResult(_0x204544,_0x36ec00))[_0xea49('0x1a')](handleError(_0x204544,null));};exports[_0xea49('0x5f')]=function(_0x52047a,_0x1b2028){var _0x4822d7={'raw':![],'where':{'id':_0x52047a[_0xea49('0x60')]['id']},'include':[{'model':db[_0xea49('0x45')],'as':_0xea49('0x42')},{'model':db[_0xea49('0x46')],'as':'Smtp'},{'model':db[_0xea49('0x47')],'as':_0xea49('0x61')}]},_0x236f48={};_0x236f48[_0xea49('0x48')]=_[_0xea49('0x4b')](db[_0xea49('0x5a')]['rawAttributes']);_0x236f48[_0xea49('0x4a')]=_[_0xea49('0x4b')](_0x52047a[_0xea49('0x4a')]);_0x236f48[_0xea49('0x4c')]=_['intersection'](_0x236f48['model'],_0x236f48[_0xea49('0x4a')]);_0x4822d7[_0xea49('0x4f')]=_[_0xea49('0x4d')](_0x236f48[_0xea49('0x48')],qs['fields'](_0x52047a[_0xea49('0x4a')][_0xea49('0x4e')]));_0x4822d7['attributes']=_0x4822d7[_0xea49('0x4f')][_0xea49('0x50')]?_0x4822d7[_0xea49('0x4f')]:_0x236f48[_0xea49('0x48')];if(_0x52047a[_0xea49('0x4a')][_0xea49('0x5b')]){_0x4822d7[_0xea49('0x5c')]=[{'all':!![]}];}_0x4822d7=_['merge']({},_0x4822d7,_0x52047a[_0xea49('0x59')]);return db[_0xea49('0x5a')][_0xea49('0x62')](_0x4822d7)[_0xea49('0x10')](handleEntityNotFound(_0x1b2028,null))[_0xea49('0x10')](respondWithResult(_0x1b2028,null))[_0xea49('0x1a')](handleError(_0x1b2028,null));};exports[_0xea49('0x22')]=function(_0x47e6e0,_0x336ce6){if(_0x47e6e0[_0xea49('0x63')]['id']){delete _0x47e6e0[_0xea49('0x63')]['id'];}var _0x1ead75=_0x47e6e0['body']['provider']===_0xea49('0x64')?null:_0x47e6e0[_0xea49('0x63')]['provider'];var _0x44e4a2=_0x47e6e0[_0xea49('0x63')][_0xea49('0x42')]||{};var _0x2d8ec4=_0x47e6e0['body'][_0xea49('0x43')]||{};if(_0x1ead75){_0x44e4a2[_0xea49('0x3d')]=getImapHost(_0x1ead75);_0x44e4a2[_0xea49('0x3e')]=0x3e1;_0x2d8ec4[_0xea49('0x3d')]=getSmtpHost(_0x1ead75);_0x2d8ec4[_0xea49('0x3e')]=0x24b;_0x2d8ec4[_0xea49('0x3f')]=![];}if(_0x2d8ec4[_0xea49('0x3b')]){_0x2d8ec4[_0xea49('0x3f')]=![];}else{_0x2d8ec4['CloudProviderId']=null;}if(!_0x44e4a2[_0xea49('0x3b')])_0x44e4a2['CloudProviderId']=null;_0x47e6e0[_0xea49('0x63')][_0xea49('0x42')]=_0x44e4a2;_0x47e6e0[_0xea49('0x63')][_0xea49('0x43')]=_0x2d8ec4;return db['MailAccount'][_0xea49('0x62')]({'where':{'id':_0x47e6e0[_0xea49('0x60')]['id']},'include':[{'model':db[_0xea49('0x45')],'as':_0xea49('0x42')},{'model':db['MailServerOut'],'as':'Smtp'},{'model':db['Pause'],'as':_0xea49('0x61')}]})['then'](handleEntityNotFound(_0x336ce6,null))[_0xea49('0x10')](function(_0x14c0c4){if(!_0x14c0c4)throw new Error(_0xea49('0x65'));if(_0x14c0c4[_0xea49('0x40')])delete _0x47e6e0[_0xea49('0x63')][_0xea49('0x42')];return _0x14c0c4;})[_0xea49('0x10')](saveUpdates(_0x47e6e0[_0xea49('0x63')],null))[_0xea49('0x10')](function(_0x10cd0f){if(!_0x47e6e0[_0xea49('0x63')][_0xea49('0x42')])return _0x10cd0f;return db[_0xea49('0x45')][_0xea49('0x22')](_0x47e6e0[_0xea49('0x63')]['Imap'],{'where':{'MailAccountId':_0x10cd0f['id']}})[_0xea49('0x10')](function(){return _0x10cd0f;});})[_0xea49('0x10')](function(_0x5dfe76){if(!_0x47e6e0['body'][_0xea49('0x43')])return _0x5dfe76;return db['MailServerOut']['update'](_0x47e6e0[_0xea49('0x63')][_0xea49('0x43')],{'where':{'MailAccountId':_0x5dfe76['id']}})[_0xea49('0x10')](function(){return _0x5dfe76;});})[_0xea49('0x10')](respondWithResult(_0x336ce6,null))[_0xea49('0x1a')](handleError(_0x336ce6,null));};exports[_0xea49('0x66')]=function(_0x5f175d,_0x351c6a){return db['MailAccount'][_0xea49('0x66')]()['then'](respondWithResult(_0x351c6a,null))[_0xea49('0x1a')](handleError(_0x351c6a,null));};exports['addDisposition']=function(_0x4c800d,_0x33329d){if(_0x4c800d['body']['id']){delete _0x4c800d[_0xea49('0x63')]['id'];}return db['MailAccount']['find']({'where':{'id':_0x4c800d[_0xea49('0x60')]['id']}})['then'](handleEntityNotFound(_0x33329d,null))[_0xea49('0x10')](function(_0x55ef50){if(_0x55ef50){_0x4c800d[_0xea49('0x63')]['MailAccountId']=_0x55ef50['id'];return db[_0xea49('0x67')][_0xea49('0x68')](_0x4c800d[_0xea49('0x63')]);}})['then'](respondWithResult(_0x33329d,null))[_0xea49('0x1a')](handleError(_0x33329d,null));};exports[_0xea49('0x69')]=function(_0x338d2c,_0x4d7560){var _0x68abd4={'raw':![],'where':{}};var _0x3c948d={};var _0x17e6c1={'count':0x0,'rows':[]};return db['MailAccount'][_0xea49('0x6a')]({'where':{'id':_0x338d2c[_0xea49('0x60')]['id']}})[_0xea49('0x10')](handleEntityNotFound(_0x4d7560,null))[_0xea49('0x10')](function(_0x101830){if(_0x101830){_0x3c948d[_0xea49('0x48')]=_['keys'](db[_0xea49('0x67')]['rawAttributes']);_0x3c948d[_0xea49('0x4a')]=_[_0xea49('0x4b')](_0x338d2c['query']);_0x3c948d[_0xea49('0x4c')]=_['intersection'](_0x3c948d[_0xea49('0x48')],_0x3c948d[_0xea49('0x4a')]);_0x68abd4[_0xea49('0x4f')]=_[_0xea49('0x4d')](_0x3c948d[_0xea49('0x48')],qs[_0xea49('0x4e')](_0x338d2c[_0xea49('0x4a')][_0xea49('0x4e')]));_0x68abd4[_0xea49('0x4f')]=_0x68abd4[_0xea49('0x4f')][_0xea49('0x50')]?_0x68abd4[_0xea49('0x4f')]:_0x3c948d[_0xea49('0x48')];if(!_0x338d2c[_0xea49('0x4a')]['hasOwnProperty']('nolimit')){_0x68abd4[_0xea49('0x1f')]=qs[_0xea49('0x1f')](_0x338d2c[_0xea49('0x4a')][_0xea49('0x1f')]);_0x68abd4[_0xea49('0x1d')]=qs[_0xea49('0x1d')](_0x338d2c[_0xea49('0x4a')][_0xea49('0x1d')]);}_0x68abd4['order']=qs['sort'](_0x338d2c[_0xea49('0x4a')][_0xea49('0x53')]);_0x68abd4['where']=qs[_0xea49('0x4c')](_[_0xea49('0x6b')](_0x338d2c[_0xea49('0x4a')],_0x3c948d[_0xea49('0x4c')]));_0x68abd4[_0xea49('0x54')]['MailAccountId']=_0x101830['id'];if(_0x338d2c['query'][_0xea49('0x55')]){_0x68abd4[_0xea49('0x54')]=_[_0xea49('0x6c')](_0x68abd4[_0xea49('0x54')],{'$or':_[_0xea49('0x56')](_0x68abd4['attributes'],function(_0x34e0fa){var _0xa2586f={};_0xa2586f[_0x34e0fa]={'$like':'%'+_0x338d2c[_0xea49('0x4a')][_0xea49('0x55')]+'%'};return _0xa2586f;})});}_0x68abd4=_[_0xea49('0x6c')]({},_0x68abd4,_0x338d2c[_0xea49('0x59')]);return db[_0xea49('0x67')][_0xea49('0x20')]({'where':_0x68abd4[_0xea49('0x54')]})['then'](function(_0x3a4634){_0x17e6c1[_0xea49('0x20')]=_0x3a4634;if(_0x338d2c['query'][_0xea49('0x5b')]){_0x68abd4['include']=[{'all':!![]}];}return db[_0xea49('0x67')][_0xea49('0x5d')](_0x68abd4);})[_0xea49('0x10')](function(_0x5c9967){_0x17e6c1['rows']=_0x5c9967;return _0x17e6c1;});}})[_0xea49('0x10')](respondWithFilteredResult(_0x4d7560,_0x68abd4))[_0xea49('0x1a')](handleError(_0x4d7560,null));};exports[_0xea49('0x6d')]=function(_0x543634,_0x2ad948){return db[_0xea49('0x5a')][_0xea49('0x62')]({'where':{'id':_0x543634['params']['id']}})[_0xea49('0x10')](handleEntityNotFound(_0x2ad948,null))[_0xea49('0x10')](function(_0x41c0f3){if(_0x41c0f3){return _0x41c0f3[_0xea49('0x6d')](_0x543634['query']['ids']);}})[_0xea49('0x10')](respondWithStatusCode(_0x2ad948,null))[_0xea49('0x1a')](handleError(_0x2ad948,null));};exports[_0xea49('0x6e')]=function(_0x36e9be,_0x2dcb96){if(_0x36e9be[_0xea49('0x63')]['id']){delete _0x36e9be[_0xea49('0x63')]['id'];}return db['MailAccount'][_0xea49('0x62')]({'where':{'id':_0x36e9be[_0xea49('0x60')]['id']}})[_0xea49('0x10')](handleEntityNotFound(_0x2dcb96,null))[_0xea49('0x10')](function(_0x17b4b4){if(_0x17b4b4){_0x36e9be[_0xea49('0x63')][_0xea49('0x6f')]=_0x17b4b4['id'];return db[_0xea49('0x70')][_0xea49('0x68')](_0x36e9be[_0xea49('0x63')]);}})[_0xea49('0x10')](respondWithResult(_0x2dcb96,null))[_0xea49('0x1a')](handleError(_0x2dcb96,null));};exports[_0xea49('0x71')]=function(_0x456355,_0x255f96){var _0x2824bb={'raw':![],'where':{}};var _0x44bc41={};var _0x520587={'count':0x0,'rows':[]};return db[_0xea49('0x5a')][_0xea49('0x6a')]({'where':{'id':_0x456355[_0xea49('0x60')]['id']}})['then'](handleEntityNotFound(_0x255f96,null))[_0xea49('0x10')](function(_0x1509d5){if(_0x1509d5){_0x44bc41[_0xea49('0x48')]=_[_0xea49('0x4b')](db[_0xea49('0x70')][_0xea49('0x72')]);_0x44bc41[_0xea49('0x4a')]=_['keys'](_0x456355['query']);_0x44bc41[_0xea49('0x4c')]=_[_0xea49('0x4d')](_0x44bc41[_0xea49('0x48')],_0x44bc41[_0xea49('0x4a')]);_0x2824bb[_0xea49('0x4f')]=_[_0xea49('0x4d')](_0x44bc41[_0xea49('0x48')],qs[_0xea49('0x4e')](_0x456355[_0xea49('0x4a')][_0xea49('0x4e')]));_0x2824bb[_0xea49('0x4f')]=_0x2824bb[_0xea49('0x4f')][_0xea49('0x50')]?_0x2824bb['attributes']:_0x44bc41['model'];if(!_0x456355[_0xea49('0x4a')][_0xea49('0x51')]('nolimit')){_0x2824bb[_0xea49('0x1f')]=qs[_0xea49('0x1f')](_0x456355[_0xea49('0x4a')][_0xea49('0x1f')]);_0x2824bb[_0xea49('0x1d')]=qs[_0xea49('0x1d')](_0x456355[_0xea49('0x4a')][_0xea49('0x1d')]);}_0x2824bb['order']=qs[_0xea49('0x53')](_0x456355[_0xea49('0x4a')][_0xea49('0x53')]);_0x2824bb[_0xea49('0x54')]=qs[_0xea49('0x4c')](_['pick'](_0x456355['query'],_0x44bc41[_0xea49('0x4c')]));_0x2824bb['where'][_0xea49('0x6f')]=_0x1509d5['id'];if(_0x456355['query'][_0xea49('0x55')]){_0x2824bb[_0xea49('0x54')]=_[_0xea49('0x6c')](_0x2824bb[_0xea49('0x54')],{'$or':_[_0xea49('0x56')](_0x2824bb[_0xea49('0x4f')],function(_0x3f9079){var _0x22efd0={};_0x22efd0[_0x3f9079]={'$like':'%'+_0x456355[_0xea49('0x4a')][_0xea49('0x55')]+'%'};return _0x22efd0;})});}_0x2824bb=_[_0xea49('0x6c')]({},_0x2824bb,_0x456355[_0xea49('0x59')]);return db[_0xea49('0x70')][_0xea49('0x20')]({'where':_0x2824bb[_0xea49('0x54')]})[_0xea49('0x10')](function(_0x5bd5a3){_0x520587[_0xea49('0x20')]=_0x5bd5a3;if(_0x456355[_0xea49('0x4a')][_0xea49('0x5b')]){_0x2824bb[_0xea49('0x5c')]=[{'all':!![]}];}return db[_0xea49('0x70')][_0xea49('0x5d')](_0x2824bb);})[_0xea49('0x10')](function(_0x4e1d73){_0x520587[_0xea49('0x5e')]=_0x4e1d73;return _0x520587;});}})['then'](respondWithFilteredResult(_0x255f96,_0x2824bb))[_0xea49('0x1a')](handleError(_0x255f96,null));};exports['removeAnswers']=function(_0x36ca11,_0x43e518){return db[_0xea49('0x5a')][_0xea49('0x62')]({'where':{'id':_0x36ca11['params']['id']}})[_0xea49('0x10')](handleEntityNotFound(_0x43e518,null))['then'](function(_0x4ee6b9){if(_0x4ee6b9){return _0x4ee6b9[_0xea49('0x73')](_0x36ca11[_0xea49('0x4a')][_0xea49('0x74')]);}})[_0xea49('0x10')](respondWithStatusCode(_0x43e518,null))[_0xea49('0x1a')](handleError(_0x43e518,null));};exports[_0xea49('0x68')]=function(_0x34df03,_0x10de49){var _0x6c87ea={'name':_0x34df03[_0xea49('0x63')][_0xea49('0x49')],'key':_0x34df03['body'][_0xea49('0x75')],'provider':_0x34df03['body']['provider']===_0xea49('0x64')?null:_0x34df03[_0xea49('0x63')][_0xea49('0x76')],'email':_0x34df03[_0xea49('0x63')][_0xea49('0x77')],'ListId':_0x34df03[_0xea49('0x63')][_0xea49('0x78')],'active':!_['isNil'](_0x34df03[_0xea49('0x63')]['active'])?_0x34df03[_0xea49('0x63')][_0xea49('0x79')]:!![],'description':_0x34df03[_0xea49('0x63')][_0xea49('0x7a')]||null};var _0x154d50=getAuthenticationOptions(_0x6c87ea[_0xea49('0x76')],_0x34df03[_0xea49('0x63')]);_0x6c87ea[_0xea49('0x42')]=_0x154d50[_0xea49('0x42')];_0x6c87ea['Smtp']=_0x154d50['Smtp'];return db[_0xea49('0x5a')][_0xea49('0x68')](_0x6c87ea,{'include':[{'model':db[_0xea49('0x46')],'as':_0xea49('0x43')},{'model':db[_0xea49('0x45')],'as':'Imap'}]})['then'](function(_0x17436c){var _0x25cd90=_0x34df03[_0xea49('0x37')][_0xea49('0x23')]({'plain':!![]});if(!_0x25cd90)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x25cd90[_0xea49('0x7b')]==='user'){var _0x46e8be=_0x17436c[_0xea49('0x23')]({'plain':!![]});return db[_0xea49('0x7c')][_0xea49('0x62')]({'where':{'name':_0xea49('0x24'),'userProfileId':_0x25cd90['userProfileId']},'raw':!![]})[_0xea49('0x10')](function(_0x2e06c5){if(_0x2e06c5&&_0x2e06c5[_0xea49('0x7d')]===0x0){return db['UserProfileResource'][_0xea49('0x68')]({'name':_0x46e8be[_0xea49('0x49')],'resourceId':_0x46e8be['id'],'type':_0x2e06c5[_0xea49('0x49')],'sectionId':_0x2e06c5['id']},{})[_0xea49('0x10')](function(){return _0x17436c;});}else{return _0x17436c;}})['catch'](function(_0x18eeb7){logger['error'](_0xea49('0x7e'),_0x18eeb7);throw _0x18eeb7;});}return _0x17436c;})[_0xea49('0x10')](respondWithResult(_0x10de49,0xc9))[_0xea49('0x1a')](handleError(_0x10de49,null));};exports['getImap']=function(_0x3acadd,_0x228aa4){return db['MailAccount'][_0xea49('0x6a')]({'where':{'id':_0x3acadd[_0xea49('0x60')]['id']}})[_0xea49('0x10')](handleEntityNotFound(_0x228aa4,null))['then'](function(_0x2f7531){if(_0x2f7531){return _0x2f7531[_0xea49('0x7f')]();}return null;})[_0xea49('0x10')](respondWithResult(_0x228aa4,null))[_0xea49('0x1a')](handleError(_0x228aa4,null));};exports[_0xea49('0x80')]=function(_0x1bf5d1,_0xa380e5){if(_0x1bf5d1[_0xea49('0x63')]['id']){delete _0x1bf5d1['body']['id'];}return db[_0xea49('0x5a')][_0xea49('0x62')]({'where':{'id':_0x1bf5d1[_0xea49('0x60')]['id']}})[_0xea49('0x10')](handleEntityNotFound(_0xa380e5,null))[_0xea49('0x10')](function(_0x5e1eaf){if(_0x5e1eaf){_0x1bf5d1[_0xea49('0x63')][_0xea49('0x6f')]=_0x5e1eaf['id'];return db[_0xea49('0x45')][_0xea49('0x68')](_0x1bf5d1[_0xea49('0x63')]);}})[_0xea49('0x10')](respondWithResult(_0xa380e5,null))[_0xea49('0x1a')](handleError(_0xa380e5,null));};exports[_0xea49('0x81')]=function(_0x5ba3ce,_0x5c1882){return db[_0xea49('0x5a')][_0xea49('0x6a')]({'where':{'id':_0x5ba3ce[_0xea49('0x60')]['id']}})[_0xea49('0x10')](handleEntityNotFound(_0x5c1882,null))[_0xea49('0x10')](function(_0x40320d){if(_0x40320d){return _0x40320d[_0xea49('0x82')](null);}return null;})[_0xea49('0x10')](respondWithStatusCode(_0x5c1882,null))[_0xea49('0x1a')](handleError(_0x5c1882,null));};exports[_0xea49('0x83')]=function(_0x51486c,_0x4a0b6a){return db[_0xea49('0x5a')][_0xea49('0x6a')]({'where':{'id':_0x51486c['params']['id']}})[_0xea49('0x10')](handleEntityNotFound(_0x4a0b6a,null))[_0xea49('0x10')](function(_0x436133){if(_0x436133){return _0x436133['getSmtp']();}return null;})[_0xea49('0x10')](respondWithResult(_0x4a0b6a,null))[_0xea49('0x1a')](handleError(_0x4a0b6a,null));};exports[_0xea49('0x84')]=function(_0x542b92,_0x1fb060){if(_0x542b92[_0xea49('0x63')]['id']){delete _0x542b92[_0xea49('0x63')]['id'];}return db['MailAccount'][_0xea49('0x62')]({'where':{'id':_0x542b92[_0xea49('0x60')]['id']}})['then'](handleEntityNotFound(_0x1fb060,null))[_0xea49('0x10')](function(_0x4da620){if(_0x4da620){_0x542b92[_0xea49('0x63')][_0xea49('0x6f')]=_0x4da620['id'];return db[_0xea49('0x46')][_0xea49('0x68')](_0x542b92['body']);}})[_0xea49('0x10')](respondWithResult(_0x1fb060,null))[_0xea49('0x1a')](handleError(_0x1fb060,null));};exports[_0xea49('0x85')]=function(_0x1f4ceb,_0x26dbb2){return db['MailAccount'][_0xea49('0x6a')]({'where':{'id':_0x1f4ceb['params']['id']}})[_0xea49('0x10')](handleEntityNotFound(_0x26dbb2,null))[_0xea49('0x10')](function(_0x9bf41){if(_0x9bf41){return _0x9bf41['setSmtp'](null);}return null;})[_0xea49('0x10')](respondWithStatusCode(_0x26dbb2,null))[_0xea49('0x1a')](handleError(_0x26dbb2,null));};exports[_0xea49('0x86')]=function(_0x4e76e6,_0x399cbd){return db[_0xea49('0x87')][_0xea49('0x62')]({'where':{'id':_0x4e76e6['params']['id']}})[_0xea49('0x10')](handleEntityNotFound(_0x399cbd,null))[_0xea49('0x10')](function(_0x17a34e){if(_0x17a34e){return _0x17a34e[_0xea49('0x86')](_0x4e76e6[_0xea49('0x63')]['ids'],_[_0xea49('0x88')](_0x4e76e6[_0xea49('0x63')],[_0xea49('0x74'),'id'])||{});}})[_0xea49('0x10')](respondWithResult(_0x399cbd,null))['catch'](handleError(_0x399cbd,null));};exports[_0xea49('0x89')]=function(_0x2eec5a,_0x240361){var _0x1eaa09={'raw':![],'where':{}};var _0x2102de={};var _0x4c7dbe={'count':0x0,'rows':[]};return db[_0xea49('0x5a')][_0xea49('0x6a')]({'where':{'id':_0x2eec5a[_0xea49('0x60')]['id']}})[_0xea49('0x10')](handleEntityNotFound(_0x240361,null))[_0xea49('0x10')](function(_0x588924){if(_0x588924){_0x2102de[_0xea49('0x48')]=_[_0xea49('0x4b')](db[_0xea49('0x87')]['rawAttributes']);_0x2102de[_0xea49('0x4a')]=_[_0xea49('0x4b')](_0x2eec5a[_0xea49('0x4a')]);_0x2102de[_0xea49('0x4c')]=_['intersection'](_0x2102de[_0xea49('0x48')],_0x2102de[_0xea49('0x4a')]);_0x1eaa09['attributes']=_[_0xea49('0x4d')](_0x2102de[_0xea49('0x48')],qs[_0xea49('0x4e')](_0x2eec5a[_0xea49('0x4a')][_0xea49('0x4e')]));_0x1eaa09[_0xea49('0x4f')]=_0x1eaa09[_0xea49('0x4f')][_0xea49('0x50')]?_0x1eaa09[_0xea49('0x4f')]:_0x2102de[_0xea49('0x48')];if(!_0x2eec5a['query']['hasOwnProperty'](_0xea49('0x52'))){_0x1eaa09[_0xea49('0x1f')]=qs[_0xea49('0x1f')](_0x2eec5a[_0xea49('0x4a')][_0xea49('0x1f')]);_0x1eaa09[_0xea49('0x1d')]=qs['offset'](_0x2eec5a['query'][_0xea49('0x1d')]);}_0x1eaa09[_0xea49('0x8a')]=qs[_0xea49('0x53')](_0x2eec5a[_0xea49('0x4a')][_0xea49('0x53')]);_0x1eaa09[_0xea49('0x54')]=qs[_0xea49('0x4c')](_[_0xea49('0x6b')](_0x2eec5a[_0xea49('0x4a')],_0x2102de[_0xea49('0x4c')]));_0x1eaa09[_0xea49('0x54')]['MailAccountId']=_0x588924['id'];if(_0x2eec5a[_0xea49('0x4a')][_0xea49('0x55')]){_0x1eaa09[_0xea49('0x54')]=_['merge'](_0x1eaa09[_0xea49('0x54')],{'$or':_[_0xea49('0x56')](_0x1eaa09[_0xea49('0x4f')],function(_0x5d443b){var _0xbd85b3={};_0xbd85b3[_0x5d443b]={'$like':'%'+_0x2eec5a[_0xea49('0x4a')][_0xea49('0x55')]+'%'};return _0xbd85b3;})});}_0x1eaa09=_['merge']({},_0x1eaa09,_0x2eec5a[_0xea49('0x59')]);return db[_0xea49('0x87')]['count']({'where':_0x1eaa09[_0xea49('0x54')]})['then'](function(_0x545527){_0x4c7dbe['count']=_0x545527;if(_0x2eec5a[_0xea49('0x4a')][_0xea49('0x5b')]){_0x1eaa09[_0xea49('0x5c')]=[{'model':db[_0xea49('0x8b')],'as':_0xea49('0x8c'),'required':![]},{'model':db[_0xea49('0x8d')],'as':'Owner','attributes':[_0xea49('0x49'),'fullname','internal'],'required':![]},{'model':db[_0xea49('0x8e')],'as':_0xea49('0x8f'),'attributes':['id','name',_0xea49('0x90')],'where':_0x2eec5a[_0xea49('0x4a')]['tag']?{'id':_0x2eec5a[_0xea49('0x4a')][_0xea49('0x91')]}:undefined,'required':_0x2eec5a['query'][_0xea49('0x91')]?!![]:![]}];}return db[_0xea49('0x87')][_0xea49('0x5d')](_0x1eaa09);})[_0xea49('0x10')](function(_0x4a404b){_0x4c7dbe[_0xea49('0x5e')]=_0x4a404b;return _0x4c7dbe;});}})[_0xea49('0x10')](respondWithFilteredResult(_0x240361,_0x1eaa09))[_0xea49('0x1a')](handleError(_0x240361,null));};exports[_0xea49('0x92')]=function addApplications(_0x299f7c,_0x2941c7){var _0x18ec08=_0x299f7c[_0xea49('0x60')]['id'];var _0x234050=_0x299f7c[_0xea49('0x63')];var _0x470d34=0xc8;var _0x41701a=null;return db[_0xea49('0x93')]['transaction']({'isolationLevel':db['sequelize'][_0xea49('0x94')][_0xea49('0x95')][_0xea49('0x96')]},function(_0x555ba9){return db[_0xea49('0x5a')][_0xea49('0x6a')]({'where':{'id':_0x18ec08},'transaction':_0x555ba9})[_0xea49('0x10')](function(_0x1d88a0){if(_0x1d88a0){return db['MailApplication']['destroy']({'where':{'MailAccountId':_0x18ec08},'transaction':_0x555ba9})['then'](function(){var _0x8ddacd=_[_0xea49('0x56')](_0x234050,function(_0x113bb1){_0x113bb1[_0xea49('0x6f')]=_0x18ec08;return _0x113bb1;});return db[_0xea49('0x97')]['bulkCreate'](_0x8ddacd,{'transaction':_0x555ba9});});}else{_0x470d34=0x194;_0x41701a=[];}});})[_0xea49('0x10')](function(){if(_0x470d34!==0x194){return db[_0xea49('0x97')][_0xea49('0x98')]({'where':{'MailAccountId':_0x18ec08},'order':'priority'})[_0xea49('0x10')](function(_0x37023e){_0x41701a=_0x37023e;});}})['catch'](function(_0x24ef3a){_0x470d34=0x1f4;logger[_0xea49('0x15')](_0x24ef3a['stack']);if(_0x24ef3a[_0xea49('0x49')]){delete _0x24ef3a[_0xea49('0x49')];}_0x41701a=_0x24ef3a;})[_0xea49('0x99')](function(){if(_0x41701a===null){_0x2941c7[_0xea49('0x9a')](_0x470d34);}else{if(_0x470d34===0x1f4){_0x2941c7[_0xea49('0x1b')](_0x470d34)[_0xea49('0x29')](_0x41701a);}else{_0x2941c7[_0xea49('0x1b')](_0x470d34)['json'](_0x41701a);}}});};exports['getApplications']=function(_0x3a8100,_0x4c62d1){var _0x27bea3={};var _0x113904={};var _0x52a9ad;var _0x6983d2;return db[_0xea49('0x5a')][_0xea49('0x6a')]({'where':{'id':_0x3a8100[_0xea49('0x60')]['id']}})[_0xea49('0x10')](handleEntityNotFound(_0x4c62d1,null))[_0xea49('0x10')](function(_0x1dbf71){if(_0x1dbf71){_0x52a9ad=_0x1dbf71;_0x113904[_0xea49('0x48')]=_['keys'](db['MailApplication'][_0xea49('0x72')]);_0x113904[_0xea49('0x4a')]=_['keys'](_0x3a8100[_0xea49('0x4a')]);_0x113904[_0xea49('0x4c')]=_[_0xea49('0x4d')](_0x113904['model'],_0x113904[_0xea49('0x4a')]);_0x27bea3[_0xea49('0x4f')]=_[_0xea49('0x4d')](_0x113904[_0xea49('0x48')],qs[_0xea49('0x4e')](_0x3a8100[_0xea49('0x4a')][_0xea49('0x4e')]));_0x27bea3['attributes']=_0x27bea3[_0xea49('0x4f')][_0xea49('0x50')]?_0x27bea3[_0xea49('0x4f')]:_0x113904[_0xea49('0x48')];_0x27bea3['order']=qs['sort'](_0x3a8100[_0xea49('0x4a')][_0xea49('0x53')]);_0x27bea3['where']=qs[_0xea49('0x4c')](_[_0xea49('0x6b')](_0x3a8100['query'],_0x113904['filters']));if(_0x3a8100[_0xea49('0x4a')][_0xea49('0x55')]){_0x27bea3['where']=_[_0xea49('0x6c')](_0x27bea3['where'],{'$or':_['map'](_0x27bea3[_0xea49('0x4f')],function(_0x634dd5){var _0x24d1a1={};_0x24d1a1[_0x634dd5]={'$like':'%'+_0x3a8100[_0xea49('0x4a')]['filter']+'%'};return _0x24d1a1;})});}_0x27bea3=_[_0xea49('0x6c')]({},_0x27bea3,_0x3a8100[_0xea49('0x59')]);return _0x52a9ad[_0xea49('0x9b')](_0x27bea3);}})[_0xea49('0x10')](function(_0x10a864){if(_0x10a864){_0x6983d2=_0x10a864[_0xea49('0x50')];if(!_0x3a8100['query'][_0xea49('0x51')](_0xea49('0x52'))){_0x27bea3[_0xea49('0x1f')]=qs['limit'](_0x3a8100[_0xea49('0x4a')][_0xea49('0x1f')]);_0x27bea3[_0xea49('0x1d')]=qs['offset'](_0x3a8100['query'][_0xea49('0x1d')]);}return _0x52a9ad[_0xea49('0x9b')](_0x27bea3);}})[_0xea49('0x10')](function(_0x37937e){if(_0x37937e){return _0x37937e?{'count':_0x6983d2,'rows':_0x37937e}:null;}})['then'](respondWithResult(_0x4c62d1,null))['catch'](handleError(_0x4c62d1,null));};exports['getMessages']=function(_0x5c2c52,_0x193423){var _0x1208d1={'raw':!![],'where':{}};var _0x1bb83b={};var _0x1f5fc9={'count':0x0,'rows':[]};return db[_0xea49('0x5a')][_0xea49('0x6a')]({'where':{'id':_0x5c2c52['params']['id']}})[_0xea49('0x10')](handleEntityNotFound(_0x193423,null))[_0xea49('0x10')](function(_0x21551d){if(_0x21551d){_0x1bb83b[_0xea49('0x48')]=_[_0xea49('0x4b')](db[_0xea49('0x9c')][_0xea49('0x72')]);_0x1bb83b['query']=_[_0xea49('0x4b')](_0x5c2c52['query']);_0x1bb83b['filters']=_[_0xea49('0x4d')](_0x1bb83b[_0xea49('0x48')],_0x1bb83b['query']);_0x1208d1[_0xea49('0x4f')]=_[_0xea49('0x4d')](_0x1bb83b[_0xea49('0x48')],qs['fields'](_0x5c2c52[_0xea49('0x4a')][_0xea49('0x4e')]));_0x1208d1[_0xea49('0x4f')]=_0x1208d1[_0xea49('0x4f')]['length']?_0x1208d1['attributes']:_0x1bb83b[_0xea49('0x48')];if(!_0x5c2c52[_0xea49('0x4a')][_0xea49('0x51')](_0xea49('0x52'))){_0x1208d1['limit']=qs[_0xea49('0x1f')](_0x5c2c52[_0xea49('0x4a')][_0xea49('0x1f')]);_0x1208d1['offset']=qs['offset'](_0x5c2c52[_0xea49('0x4a')]['offset']);}_0x1208d1[_0xea49('0x8a')]=qs['sort'](_0x5c2c52[_0xea49('0x4a')][_0xea49('0x53')]);_0x1208d1[_0xea49('0x54')]=qs[_0xea49('0x4c')](_[_0xea49('0x6b')](_0x5c2c52[_0xea49('0x4a')],_0x1bb83b[_0xea49('0x4c')]));_0x1208d1[_0xea49('0x54')]['MailAccountId']=_0x21551d['id'];if(_0x5c2c52['query'][_0xea49('0x55')]){_0x1208d1[_0xea49('0x54')]=_[_0xea49('0x6c')](_0x1208d1[_0xea49('0x54')],{'$or':_['map'](_0x1208d1[_0xea49('0x4f')],function(_0x7c41f9){var _0x2bba8b={};_0x2bba8b[_0x7c41f9]={'$like':'%'+_0x5c2c52[_0xea49('0x4a')][_0xea49('0x55')]+'%'};return _0x2bba8b;})});}if(_0x5c2c52[_0xea49('0x4a')][_0xea49('0x9d')]){var _0x5965d2=_0x5c2c52[_0xea49('0x4a')][_0xea49('0x9d')][_0xea49('0x9e')](',');var _0x5242a1={};_0x5242a1[_0x5965d2[0x0]]={'$gte':moment(_0x5965d2[0x1])['format'](_0xea49('0x9f'))};_0x1208d1['where']=_[_0xea49('0x6c')](_0x1208d1[_0xea49('0x54')],_0x5242a1);}_0x1208d1=_['merge']({},_0x1208d1,_0x5c2c52['options']);return db[_0xea49('0x9c')][_0xea49('0x20')]({'where':_0x1208d1[_0xea49('0x54')]})[_0xea49('0x10')](function(_0x3951a1){_0x1f5fc9[_0xea49('0x20')]=_0x3951a1;if(_0x5c2c52[_0xea49('0x4a')][_0xea49('0x5b')]){_0x1208d1[_0xea49('0x5c')]=[{'all':!![]}];}return db['MailMessage'][_0xea49('0x5d')](_0x1208d1);})['then'](function(_0x4e215d){if(_0x5c2c52[_0xea49('0x4a')][_0xea49('0xa0')]==='true'){for(var _0x268158=0x0;_0x268158<_0x4e215d[_0xea49('0x50')];_0x268158++){_0x4e215d[_0x268158][_0xea49('0x63')]=juice(_0x4e215d[_0x268158][_0xea49('0x63')]);}}_0x1f5fc9[_0xea49('0x5e')]=_0x4e215d;return _0x1f5fc9;});}})[_0xea49('0x10')](respondWithFilteredResult(_0x193423,_0x1208d1))['catch'](handleError(_0x193423,null));};exports[_0xea49('0x29')]=function(_0x526eef,_0x4745bb){var _0x5b92c8,_0x37d9f1={},_0x3a198f;if(_0x526eef[_0xea49('0x63')]['to']){_0x3a198f=_0x526eef['body']['to']['split'](',')[0x0];}return db[_0xea49('0x5a')][_0xea49('0x62')]({'where':{'id':_0x526eef['params']['id']},'include':[{'model':db['CmList'],'as':_0xea49('0xa1'),'include':[{'model':db[_0xea49('0x8b')],'as':_0xea49('0xa2'),'where':{'email':_0x3a198f},'limit':0x1,'order':[[_0xea49('0xa3'),'DESC']]}]},{'model':db[_0xea49('0x46')],'as':_0xea49('0x43'),'raw':!![],'include':[{'model':db[_0xea49('0xa4')],'as':_0xea49('0xa4'),'raw':!![]}]}]})[_0xea49('0x10')](handleEntityNotFound(_0x4745bb,null))[_0xea49('0x10')](function(_0x334ed2){if(!_0x334ed2)return;_0x5b92c8=_0x334ed2;if(!_0x334ed2[_0xea49('0x43')])throw new Error('Smtp\x20configuration\x20not\x20found');if(_['isNil'](_0x526eef[_0xea49('0x63')][_0xea49('0xa5')])){_0x526eef[_0xea49('0x63')][_0xea49('0xa5')]=util[_0xea49('0xa6')]('%s\x20<%s>',_0x334ed2[_0xea49('0x49')],_0x334ed2[_0xea49('0x77')]||_0x334ed2[_0xea49('0x43')]['user']);}if(_0x526eef[_0xea49('0x63')][_0xea49('0xa7')]&&_0x526eef[_0xea49('0x63')][_0xea49('0xa7')][_0xea49('0x50')]){for(var _0x12777a=0x0;_0x12777a<_0x526eef[_0xea49('0x63')][_0xea49('0xa7')][_0xea49('0x50')];_0x12777a+=0x1){_0x526eef[_0xea49('0x63')][_0xea49('0xa7')][_0x12777a]={'filename':_0x526eef['body'][_0xea49('0xa7')][_0x12777a]['name'],'path':path['join'](config['root'],'server/files/attachments',_0x526eef[_0xea49('0x63')]['attachments'][_0x12777a][_0xea49('0xa8')])};}}var _0x53da12=_0x334ed2[_0xea49('0xa9')]();return respondWithRpcPromise(_0xea49('0xaa'),_0xea49('0xab'),{'account':_0x53da12,'message':_0x526eef[_0xea49('0x63')]});})['then'](function(_0x2cdee1){if(!_0x2cdee1)return;_0x37d9f1=_0x2cdee1;if(!_0x5b92c8[_0xea49('0xa1')])throw new Error(_0xea49('0xac'));if(_0x5b92c8[_0xea49('0xa1')][_0xea49('0xa2')][_0xea49('0x50')])return _0x5b92c8['List'][_0xea49('0xa2')][0x0];return db[_0xea49('0x8b')][_0xea49('0x68')](_[_0xea49('0x7')](_0x526eef['body'],{'firstName':_0x526eef[_0xea49('0x63')]['to'],'email':_0x526eef['body']['to'],'phone':_0x526eef[_0xea49('0x63')]['to'],'ListId':_0x5b92c8['ListId']}));})[_0xea49('0x10')](function(_0x32ecef){if(!_0x32ecef)return;var _0x423876={'UserId':_0x526eef[_0xea49('0x37')]['id'],'ContactId':_0x32ecef['id'],'MailAccountId':_0x5b92c8['id'],'inReplyTo':_0x37d9f1[_0xea49('0xad')],'to':_0x526eef['body'][_0xea49('0xa5')],'cc':_0x526eef['body']['cc'],'subject':_0x526eef[_0xea49('0x63')][_0xea49('0xae')],'attach':_0x526eef[_0xea49('0x63')][_0xea49('0xaf')],'firstMsgDirection':'out','lastMsgAt':moment()['format'](_0xea49('0x9f')),'lastMsgDirection':'out','Messages':[_['merge'](_0x526eef['body'],{'messageId':_0x37d9f1[_0xea49('0xad')],'sentAt':moment()[_0xea49('0xa6')](_0xea49('0x9f')),'read':!![],'MailAccountId':_0x5b92c8['id'],'UserId':_0x526eef[_0xea49('0x37')]['id'],'ContactId':_0x32ecef['id']})]};if(_0x526eef[_0xea49('0x63')][_0xea49('0xb0')]){_0x423876=_[_0xea49('0x6c')](_0x423876,_0x526eef[_0xea49('0x63')][_0xea49('0xb0')]);}return db['MailInteraction']['create'](_0x423876,{'include':[{'model':db['MailMessage'],'as':_0xea49('0xb1')}]});})[_0xea49('0x10')](respondWithResult(_0x4745bb,null))[_0xea49('0x1a')](handleError(_0x4745bb,null));};exports[_0xea49('0xb2')]=function(_0x56faaf,_0x1d642d){return db[_0xea49('0x5a')]['find']({'where':{'id':_0x56faaf[_0xea49('0x60')]['id']},'include':[{'model':db[_0xea49('0x46')],'as':_0xea49('0x43'),'raw':!![],'include':[{'model':db[_0xea49('0xa4')],'as':'CloudProvider','raw':!![]}]}]})[_0xea49('0x10')](handleEntityNotFound(_0x1d642d,null))[_0xea49('0x10')](function(_0x5070a4){if(!_0x5070a4[_0xea49('0x43')])return;var _0x14d40c=_0x5070a4[_0xea49('0xa9')]();return respondWithRpcPromise(_0xea49('0xb3'),_0xea49('0xb2'),{'account':_0x14d40c});})['then'](respondWithResult(_0x1d642d,null))[_0xea49('0x1a')](handleError(_0x1d642d,null));};exports[_0xea49('0x26')]=function(_0x5b3437,_0x48d7a8){return db[_0xea49('0x5a')][_0xea49('0x62')]({'where':{'id':_0x5b3437[_0xea49('0x60')]['id']}})['then'](handleEntityNotFound(_0x48d7a8,null))[_0xea49('0x10')](function(_0x3e2535){if(_0x3e2535&&_0x3e2535['service']){throw new db['Sequelize'][(_0xea49('0xb4'))]('You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account');}return _0x3e2535;})[_0xea49('0x10')](removeEntity(_0x48d7a8,null))[_0xea49('0x1a')](handleError(_0x48d7a8,null));};exports[_0xea49('0xb5')]=function(_0x693b9c,_0x361fb5){return db[_0xea49('0x5a')][_0xea49('0x62')]({'where':{'id':_0x693b9c[_0xea49('0x60')]['id']}})[_0xea49('0x10')](handleEntityNotFound(_0x361fb5,null))[_0xea49('0x10')](function(_0x532c2c){if(_0x532c2c){return _0x532c2c[_0xea49('0xb5')](_0x693b9c[_0xea49('0x63')][_0xea49('0x74')],_[_0xea49('0x88')](_0x693b9c[_0xea49('0x63')],[_0xea49('0x74'),'id'])||{})[_0xea49('0xb6')](function(_0xbce319){for(var _0x101e7f=0x0;_0x101e7f<_0x693b9c[_0xea49('0x63')]['ids'][_0xea49('0x50')];_0x101e7f+=0x1){socket['emit']('userMailAccount:save',{'UserId':Number(_0x693b9c[_0xea49('0x63')][_0xea49('0x74')][_0x101e7f]),'MailAccountId':Number(_0x693b9c['params']['id'])});}return _0xbce319;});}})[_0xea49('0x10')](respondWithResult(_0x361fb5,null))[_0xea49('0x1a')](handleError(_0x361fb5,null));};exports['removeAgents']=function(_0x42da55,_0x3ca2a1){return db[_0xea49('0x5a')]['find']({'where':{'id':_0x42da55[_0xea49('0x60')]['id']}})[_0xea49('0x10')](handleEntityNotFound(_0x3ca2a1,null))[_0xea49('0x10')](function(_0x44f242){if(_0x44f242){return _0x44f242['removeAgents'](_0x42da55['query']['ids'])['then'](function(){if(_[_0xea49('0xb7')](_0x42da55[_0xea49('0x4a')][_0xea49('0x74')])){for(var _0x2b333=0x0;_0x2b333<_0x42da55[_0xea49('0x4a')][_0xea49('0x74')][_0xea49('0x50')];_0x2b333+=0x1){socket[_0xea49('0xb8')](_0xea49('0xb9'),{'UserId':Number(_0x42da55[_0xea49('0x4a')]['ids'][_0x2b333]),'MailAccountId':Number(_0x42da55[_0xea49('0x60')]['id'])});}}else{socket[_0xea49('0xb8')](_0xea49('0xb9'),{'UserId':Number(_0x42da55[_0xea49('0x4a')][_0xea49('0x74')]),'MailAccountId':Number(_0x42da55[_0xea49('0x60')]['id'])});}});}})[_0xea49('0x10')](respondWithStatusCode(_0x3ca2a1,null))['catch'](handleError(_0x3ca2a1,null));};exports[_0xea49('0xba')]=function(_0x5f137b,_0x17fcc2){var _0x2a9e9e={};var _0x4eb167={};var _0x32177c;var _0x1f088e;return db['MailAccount'][_0xea49('0x6a')]({'where':{'id':_0x5f137b[_0xea49('0x60')]['id']}})[_0xea49('0x10')](handleEntityNotFound(_0x17fcc2,null))['then'](function(_0x4a2499){if(_0x4a2499){_0x32177c=_0x4a2499;_0x4eb167[_0xea49('0x48')]=_[_0xea49('0x4b')](db['User'][_0xea49('0x72')]);_0x4eb167[_0xea49('0x4a')]=_[_0xea49('0x4b')](_0x5f137b[_0xea49('0x4a')]);_0x4eb167['filters']=_['intersection'](_0x4eb167[_0xea49('0x48')],_0x4eb167[_0xea49('0x4a')]);_0x2a9e9e[_0xea49('0x4f')]=_[_0xea49('0x4d')](_0x4eb167[_0xea49('0x48')],qs['fields'](_0x5f137b['query']['fields']));_0x2a9e9e[_0xea49('0x4f')]=_0x2a9e9e[_0xea49('0x4f')][_0xea49('0x50')]?_0x2a9e9e['attributes']:_0x4eb167[_0xea49('0x48')];_0x2a9e9e[_0xea49('0x8a')]=qs[_0xea49('0x53')](_0x5f137b[_0xea49('0x4a')][_0xea49('0x53')]);_0x2a9e9e[_0xea49('0x54')]=qs[_0xea49('0x4c')](_[_0xea49('0x6b')](_0x5f137b[_0xea49('0x4a')],_0x4eb167['filters']));if(_0x5f137b[_0xea49('0x4a')][_0xea49('0x55')]){_0x2a9e9e[_0xea49('0x54')]=_[_0xea49('0x6c')](_0x2a9e9e[_0xea49('0x54')],{'$or':_[_0xea49('0x56')](_0x2a9e9e[_0xea49('0x4f')],function(_0xbf6313){var _0x373073={};_0x373073[_0xbf6313]={'$like':'%'+_0x5f137b['query'][_0xea49('0x55')]+'%'};return _0x373073;})});}_0x2a9e9e=_['merge']({},_0x2a9e9e,_0x5f137b[_0xea49('0x59')]);return _0x32177c[_0xea49('0xba')](_0x2a9e9e);}})[_0xea49('0x10')](function(_0xabe352){if(_0xabe352){_0x1f088e=_0xabe352['length'];if(!_0x5f137b['query'][_0xea49('0x51')](_0xea49('0x52'))){_0x2a9e9e[_0xea49('0x1f')]=qs[_0xea49('0x1f')](_0x5f137b[_0xea49('0x4a')][_0xea49('0x1f')]);_0x2a9e9e[_0xea49('0x1d')]=qs[_0xea49('0x1d')](_0x5f137b['query']['offset']);}return _0x32177c['getAgents'](_0x2a9e9e);}})[_0xea49('0x10')](function(_0x2d3194){if(_0x2d3194){return _0x2d3194?{'count':_0x1f088e,'rows':_0x2d3194}:null;}})[_0xea49('0x10')](respondWithResult(_0x17fcc2,null))[_0xea49('0x1a')](handleError(_0x17fcc2,null));};
\ No newline at end of file
+var _0x6e02=['provider','params','Mail\x20Account\x20not\x20found','MailServerOut','describe','addDisposition','MailAccountId','getDispositions','findOne','Disposition','length','pick','findAll','rows','removeDispositions','ids','addAnswer','CannedAnswer','create','getAnswers','removeAnswers','email','ListId','isNil','active','description','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','MailAccounts','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getImap','addImap','removeImap','addSmtp','removeSmtp','MailInteraction','addInteraction','omit','getInteractions','CmContact','Contact','User','Owner','internal','Tags','color','tag','addApplications','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','MailApplication','bulkCreate','findAndCountAll','priority','stack','finally','send','getApplications','getMessages','$gte','split','YYYY-MM-DD\x20HH:mm:ss','MailMessage','inlineCss','true','CmList','List','Contacts','updatedAt','DESC','CloudProvider','Smtp\x20configuration\x20not\x20found','from','format','attachments','root','server/files/attachments','basename','getSmtpOptions','List\x20not\x20found','defaults','subject','attach','out','messageId','Interaction','Messages','verifySmtp','Sequelize','ValidationError','addAgents','spread','emit','userMailAccount:save','removeAgents','userMailAccount:remove','getAgents','moment','bluebird','util','lodash','../../components/parsers/qs','../../config/environment','../../mysqldb','redis','localhost','socket.io-emitter','./mailAccount.socket','register','http','request','then','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','status','end','offset','limit','undefined','count','Content-Range','json','update','get','UserProfileResource','destroy','name','gmail','imap.gmail.com','yahoo','imap.mail.yahoo.com','hotmail','imap-mail.outlook.com','outlook.office365.com','Unknown\x20email\x20service\x20provider','smtp-mail.outlook.com','user','username','password','modernAuthentication','CloudProviderId','pass','port','host','secure','service','authentication','Imap','Smtp','index','MailServerIn','Pause','mandatoryDispositionPause','map','MailAccount','rawAttributes','fieldName','key','model','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','type','VIRTUAL','options','includeAll','include','show','find','body'];(function(_0x24d2ef,_0x1640c7){var _0x199df3=function(_0x5e27cf){while(--_0x5e27cf){_0x24d2ef['push'](_0x24d2ef['shift']());}};_0x199df3(++_0x1640c7);}(_0x6e02,0x66));var _0x26e0=function(_0x595769,_0x1b27b5){_0x595769=_0x595769-0x0;var _0x1bfdb1=_0x6e02[_0x595769];return _0x1bfdb1;};'use strict';var moment=require(_0x26e0('0x0'));var BPromise=require(_0x26e0('0x1'));var util=require(_0x26e0('0x2'));var path=require('path');var _=require(_0x26e0('0x3'));var juice=require('juice');var Redis=require('ioredis');var qs=require(_0x26e0('0x4'));var logger=require('../../config/logger')('api');var config=require(_0x26e0('0x5'));var db=require(_0x26e0('0x6'))['db'];config[_0x26e0('0x7')]=_['defaults'](config['redis'],{'host':_0x26e0('0x8'),'port':0x18eb});var socket=require(_0x26e0('0x9'))(new Redis(config['redis']));require(_0x26e0('0xa'))[_0x26e0('0xb')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x26e0('0xc')]({'port':0x232b});function respondWithRpcPromise(_0x5c5d07,_0x26d9c4,_0x2d5bd7,_0x5372a1){return new BPromise(function(_0x2f668d,_0x3b5ec8){var _0x43c70e=_0x5372a1||client;return _0x43c70e[_0x26e0('0xd')](_0x5c5d07,_0x2d5bd7)[_0x26e0('0xe')](function(_0xbcce77){logger['info'](_0x26e0('0xf'),_0x26d9c4,_0x26e0('0x10'));logger[_0x26e0('0x11')](_0x26e0('0x12'),_0x26d9c4,_0x26e0('0x10'),JSON[_0x26e0('0x13')](_0xbcce77));if(_0xbcce77['error']){if(_0xbcce77[_0x26e0('0x14')][_0x26e0('0x15')]===0x1f4){logger['error'](_0x26e0('0xf'),_0x26d9c4,_0xbcce77[_0x26e0('0x14')][_0x26e0('0x16')]);return _0x3b5ec8(_0xbcce77[_0x26e0('0x14')][_0x26e0('0x16')]);}logger[_0x26e0('0x14')](_0x26e0('0xf'),_0x26d9c4,_0xbcce77[_0x26e0('0x14')]['message']);return _0x2f668d(_0xbcce77['error'][_0x26e0('0x16')]);}else{logger[_0x26e0('0x17')](_0x26e0('0xf'),_0x26d9c4,_0x26e0('0x10'));_0x2f668d(_0xbcce77[_0x26e0('0x18')][_0x26e0('0x16')]);}})[_0x26e0('0x19')](function(_0x6d5e0e){logger[_0x26e0('0x14')](_0x26e0('0xf'),_0x26d9c4,_0x6d5e0e);_0x3b5ec8(_0x6d5e0e);});});}function respondWithStatusCode(_0x1fc0b6,_0x42c038){_0x42c038=_0x42c038||0xcc;return function(_0x5a3a6a){if(_0x5a3a6a){return _0x1fc0b6[_0x26e0('0x1a')](_0x42c038);}return _0x1fc0b6[_0x26e0('0x1b')](_0x42c038)[_0x26e0('0x1c')]();};}function respondWithResult(_0x55d125,_0x591d8d){_0x591d8d=_0x591d8d||0xc8;return function(_0x16fa40){if(_0x16fa40){return _0x55d125[_0x26e0('0x1b')](_0x591d8d)['json'](_0x16fa40);}};}function respondWithFilteredResult(_0x26c5b2,_0x467ba0){return function(_0x321db4){if(_0x321db4){var _0x493c87=typeof _0x467ba0[_0x26e0('0x1d')]==='undefined'&&typeof _0x467ba0[_0x26e0('0x1e')]===_0x26e0('0x1f');var _0x1c2e02=_0x321db4[_0x26e0('0x20')];var _0x4e4783=_0x493c87?0x0:_0x467ba0['offset'];var _0x2512e4=_0x493c87?_0x321db4['count']:_0x467ba0[_0x26e0('0x1d')]+_0x467ba0[_0x26e0('0x1e')];var _0x55808d;if(_0x2512e4>=_0x1c2e02){_0x2512e4=_0x1c2e02;_0x55808d=0xc8;}else{_0x55808d=0xce;}_0x26c5b2[_0x26e0('0x1b')](_0x55808d);return _0x26c5b2['set'](_0x26e0('0x21'),_0x4e4783+'-'+_0x2512e4+'/'+_0x1c2e02)[_0x26e0('0x22')](_0x321db4);}return null;};}function saveUpdates(_0x7e4759){return function(_0x267d67){if(_0x267d67){return _0x267d67[_0x26e0('0x23')](_0x7e4759)[_0x26e0('0xe')](function(_0x47077c){return _0x47077c;});}return null;};}function removeEntity(_0x1fc41e){return function(_0x24080f){if(_0x24080f){return _0x24080f['destroy']()['then'](function(){var _0x5bbc9c=_0x24080f[_0x26e0('0x24')]({'plain':!![]});var _0xa640d7='MailAccounts';return db[_0x26e0('0x25')][_0x26e0('0x26')]({'where':{'type':_0xa640d7,'resourceId':_0x5bbc9c['id']}})[_0x26e0('0xe')](function(){return _0x24080f;});})[_0x26e0('0xe')](function(){_0x1fc41e[_0x26e0('0x1b')](0xcc)[_0x26e0('0x1c')]();});}};}function handleEntityNotFound(_0x718872){return function(_0x49faab){if(!_0x49faab){_0x718872['sendStatus'](0x194);}return _0x49faab;};}function handleError(_0x9dccf5,_0x4a9a39){_0x4a9a39=_0x4a9a39||0x1f4;return function(_0x279754){logger[_0x26e0('0x14')](_0x279754['stack']);if(_0x279754[_0x26e0('0x27')]){delete _0x279754[_0x26e0('0x27')];}_0x9dccf5['status'](_0x4a9a39)['send'](_0x279754);};}function getImapHost(_0x3f6228){switch(_0x3f6228){case _0x26e0('0x28'):return _0x26e0('0x29');case _0x26e0('0x2a'):return _0x26e0('0x2b');case _0x26e0('0x2c'):return _0x26e0('0x2d');case'outlook365':return _0x26e0('0x2e');}throw new Error(_0x26e0('0x2f'),_0x3f6228);}function getSmtpHost(_0x5f48f4){switch(_0x5f48f4){case'gmail':return'smtp.gmail.com';case'yahoo':return'smtp.mail.yahoo.com';case'hotmail':return _0x26e0('0x30');case'outlook365':return'smtp.office365.com';}throw new Error('Unknown\x20email\x20service\x20provider',_0x5f48f4);}function getAuthenticationOptions(_0x4a79b7,_0x97e262){var _0x2c7a0b={};var _0x54c45f={};if(_0x4a79b7){_0x2c7a0b[_0x26e0('0x31')]=_0x54c45f['user']=_0x97e262[_0x26e0('0x32')];_0x2c7a0b[_0x26e0('0x33')]=_0x54c45f['pass']=_0x97e262[_0x26e0('0x33')];if(_0x97e262[_0x26e0('0x34')]){_0x2c7a0b[_0x26e0('0x34')]=_0x54c45f[_0x26e0('0x34')]=!![];_0x2c7a0b[_0x26e0('0x35')]=_0x54c45f[_0x26e0('0x35')]=_0x97e262[_0x26e0('0x35')];_0x2c7a0b['password']=_0x54c45f[_0x26e0('0x36')]=null;}else{_0x2c7a0b[_0x26e0('0x35')]=_0x54c45f['CloudProviderId']=null;}_0x2c7a0b['host']=getImapHost(_0x4a79b7);_0x2c7a0b[_0x26e0('0x37')]=0x3e1;_0x54c45f[_0x26e0('0x38')]=getSmtpHost(_0x4a79b7);_0x54c45f['port']=0x24b;_0x54c45f[_0x26e0('0x39')]=![];_0x2c7a0b[_0x26e0('0x3a')]=_0x54c45f['service']=null;}else{if(_0x97e262[_0x26e0('0x3b')]){_0x2c7a0b[_0x26e0('0x31')]=_0x54c45f[_0x26e0('0x31')]=_0x97e262[_0x26e0('0x32')];_0x2c7a0b[_0x26e0('0x33')]=_0x54c45f['pass']=_0x97e262[_0x26e0('0x33')];}else{_0x2c7a0b[_0x26e0('0x3b')]=_0x54c45f['authentication']=![];_0x2c7a0b[_0x26e0('0x31')]=_0x54c45f[_0x26e0('0x31')]=null;_0x2c7a0b[_0x26e0('0x33')]=_0x54c45f[_0x26e0('0x36')]=null;}_0x2c7a0b[_0x26e0('0x38')]=_0x97e262[_0x26e0('0x3c')][_0x26e0('0x38')];_0x2c7a0b[_0x26e0('0x37')]=_0x97e262['Imap'][_0x26e0('0x37')];_0x54c45f['host']=_0x97e262['Smtp'][_0x26e0('0x38')];_0x54c45f[_0x26e0('0x37')]=_0x97e262[_0x26e0('0x3d')][_0x26e0('0x37')];}return{'Imap':_0x2c7a0b,'Smtp':_0x54c45f};}exports[_0x26e0('0x3e')]=function(_0x4a40d2,_0xbec61a){var _0x39a674={'include':[{'model':db[_0x26e0('0x3f')],'as':_0x26e0('0x3c')},{'model':db['MailServerOut'],'as':_0x26e0('0x3d')},{'model':db[_0x26e0('0x40')],'as':_0x26e0('0x41')}]},_0xb43339={},_0x4b048b={'count':0x0,'rows':[]};var _0x38d9c5=_[_0x26e0('0x42')](db[_0x26e0('0x43')][_0x26e0('0x44')],function(_0xf40fc7){return{'name':_0xf40fc7[_0x26e0('0x45')],'type':_0xf40fc7['type'][_0x26e0('0x46')]};});_0xb43339[_0x26e0('0x47')]=_[_0x26e0('0x42')](_0x38d9c5,'name');_0xb43339['query']=_[_0x26e0('0x48')](_0x4a40d2[_0x26e0('0x49')]);_0xb43339['filters']=_[_0x26e0('0x4a')](_0xb43339[_0x26e0('0x47')],_0xb43339[_0x26e0('0x49')]);_0x39a674[_0x26e0('0x4b')]=_[_0x26e0('0x4a')](_0xb43339['model'],qs['fields'](_0x4a40d2[_0x26e0('0x49')][_0x26e0('0x4c')]));_0x39a674['attributes']=_0x39a674[_0x26e0('0x4b')]['length']?_0x39a674[_0x26e0('0x4b')]:_0xb43339[_0x26e0('0x47')];if(!_0x4a40d2['query'][_0x26e0('0x4d')](_0x26e0('0x4e'))){_0x39a674[_0x26e0('0x1e')]=qs[_0x26e0('0x1e')](_0x4a40d2[_0x26e0('0x49')]['limit']);_0x39a674[_0x26e0('0x1d')]=qs[_0x26e0('0x1d')](_0x4a40d2[_0x26e0('0x49')]['offset']);}_0x39a674[_0x26e0('0x4f')]=qs[_0x26e0('0x50')](_0x4a40d2[_0x26e0('0x49')][_0x26e0('0x50')]);_0x39a674[_0x26e0('0x51')]=qs[_0x26e0('0x52')](_['pick'](_0x4a40d2[_0x26e0('0x49')],_0xb43339[_0x26e0('0x52')]),_0x38d9c5);if(_0x4a40d2[_0x26e0('0x49')][_0x26e0('0x53')]){_0x39a674[_0x26e0('0x51')]=_[_0x26e0('0x54')](_0x39a674[_0x26e0('0x51')],{'$or':_['map'](_0x38d9c5,function(_0x26a919){if(_0x26a919[_0x26e0('0x55')]!==_0x26e0('0x56')){var _0x58f481={};_0x58f481[_0x26a919['name']]={'$like':'%'+_0x4a40d2[_0x26e0('0x49')][_0x26e0('0x53')]+'%'};return _0x58f481;}})});}_0x39a674=_['merge']({},_0x39a674,_0x4a40d2[_0x26e0('0x57')]);var _0x170ec2={'where':_0x39a674['where']};return db['MailAccount'][_0x26e0('0x20')](_0x170ec2)['then'](function(_0x2af5e2){_0x4b048b[_0x26e0('0x20')]=_0x2af5e2;if(_0x4a40d2[_0x26e0('0x49')][_0x26e0('0x58')]){_0x39a674[_0x26e0('0x59')]=[{'all':!![]}];}return db[_0x26e0('0x43')]['findAll'](_0x39a674);})[_0x26e0('0xe')](function(_0x2878a1){_0x4b048b['rows']=_0x2878a1;return _0x4b048b;})[_0x26e0('0xe')](respondWithFilteredResult(_0xbec61a,_0x39a674))[_0x26e0('0x19')](handleError(_0xbec61a,null));};exports[_0x26e0('0x5a')]=function(_0x1fd0ec,_0x100820){var _0x1cc7bb={'raw':![],'where':{'id':_0x1fd0ec['params']['id']},'include':[{'model':db[_0x26e0('0x3f')],'as':_0x26e0('0x3c')},{'model':db['MailServerOut'],'as':_0x26e0('0x3d')},{'model':db[_0x26e0('0x40')],'as':_0x26e0('0x41')}]},_0x56b701={};_0x56b701[_0x26e0('0x47')]=_[_0x26e0('0x48')](db[_0x26e0('0x43')][_0x26e0('0x44')]);_0x56b701['query']=_['keys'](_0x1fd0ec[_0x26e0('0x49')]);_0x56b701[_0x26e0('0x52')]=_[_0x26e0('0x4a')](_0x56b701[_0x26e0('0x47')],_0x56b701[_0x26e0('0x49')]);_0x1cc7bb[_0x26e0('0x4b')]=_[_0x26e0('0x4a')](_0x56b701[_0x26e0('0x47')],qs[_0x26e0('0x4c')](_0x1fd0ec[_0x26e0('0x49')]['fields']));_0x1cc7bb[_0x26e0('0x4b')]=_0x1cc7bb[_0x26e0('0x4b')]['length']?_0x1cc7bb['attributes']:_0x56b701[_0x26e0('0x47')];if(_0x1fd0ec[_0x26e0('0x49')][_0x26e0('0x58')]){_0x1cc7bb['include']=[{'all':!![]}];}_0x1cc7bb=_[_0x26e0('0x54')]({},_0x1cc7bb,_0x1fd0ec['options']);return db['MailAccount'][_0x26e0('0x5b')](_0x1cc7bb)[_0x26e0('0xe')](handleEntityNotFound(_0x100820,null))[_0x26e0('0xe')](respondWithResult(_0x100820,null))['catch'](handleError(_0x100820,null));};exports['update']=function(_0x50c226,_0x5017f5){if(_0x50c226['body']['id']){delete _0x50c226[_0x26e0('0x5c')]['id'];}var _0x4e2b52=_0x50c226[_0x26e0('0x5c')]['provider']==='custom'?null:_0x50c226[_0x26e0('0x5c')][_0x26e0('0x5d')];var _0x63213=_0x50c226[_0x26e0('0x5c')][_0x26e0('0x3c')]||{};var _0x50363f=_0x50c226[_0x26e0('0x5c')][_0x26e0('0x3d')]||{};if(_0x4e2b52){_0x63213[_0x26e0('0x38')]=getImapHost(_0x4e2b52);_0x63213[_0x26e0('0x37')]=0x3e1;_0x50363f[_0x26e0('0x38')]=getSmtpHost(_0x4e2b52);_0x50363f['port']=0x24b;_0x50363f[_0x26e0('0x39')]=![];}if(_0x50363f[_0x26e0('0x34')]){_0x50363f[_0x26e0('0x39')]=![];}else{_0x50363f[_0x26e0('0x35')]=null;}if(!_0x63213[_0x26e0('0x34')])_0x63213['CloudProviderId']=null;_0x50c226['body'][_0x26e0('0x3c')]=_0x63213;_0x50c226[_0x26e0('0x5c')][_0x26e0('0x3d')]=_0x50363f;return db[_0x26e0('0x43')]['find']({'where':{'id':_0x50c226[_0x26e0('0x5e')]['id']},'include':[{'model':db[_0x26e0('0x3f')],'as':'Imap'},{'model':db['MailServerOut'],'as':_0x26e0('0x3d')},{'model':db['Pause'],'as':'mandatoryDispositionPause'}]})[_0x26e0('0xe')](handleEntityNotFound(_0x5017f5,null))[_0x26e0('0xe')](function(_0x4a3e31){if(!_0x4a3e31)throw new Error(_0x26e0('0x5f'));if(_0x4a3e31[_0x26e0('0x3a')])delete _0x50c226[_0x26e0('0x5c')]['Imap'];return _0x4a3e31;})[_0x26e0('0xe')](saveUpdates(_0x50c226[_0x26e0('0x5c')],null))[_0x26e0('0xe')](function(_0x2769ea){if(!_0x50c226[_0x26e0('0x5c')][_0x26e0('0x3c')])return _0x2769ea;return db['MailServerIn'][_0x26e0('0x23')](_0x50c226[_0x26e0('0x5c')][_0x26e0('0x3c')],{'where':{'MailAccountId':_0x2769ea['id']}})[_0x26e0('0xe')](function(){return _0x2769ea;});})[_0x26e0('0xe')](function(_0x4ee483){if(!_0x50c226[_0x26e0('0x5c')][_0x26e0('0x3d')])return _0x4ee483;return db[_0x26e0('0x60')]['update'](_0x50c226[_0x26e0('0x5c')][_0x26e0('0x3d')],{'where':{'MailAccountId':_0x4ee483['id']}})['then'](function(){return _0x4ee483;});})[_0x26e0('0xe')](respondWithResult(_0x5017f5,null))[_0x26e0('0x19')](handleError(_0x5017f5,null));};exports[_0x26e0('0x61')]=function(_0x3ffc01,_0x44cd96){return db[_0x26e0('0x43')][_0x26e0('0x61')]()['then'](respondWithResult(_0x44cd96,null))[_0x26e0('0x19')](handleError(_0x44cd96,null));};exports[_0x26e0('0x62')]=function(_0x2c5ebb,_0x14f1a0){if(_0x2c5ebb[_0x26e0('0x5c')]['id']){delete _0x2c5ebb[_0x26e0('0x5c')]['id'];}return db[_0x26e0('0x43')]['find']({'where':{'id':_0x2c5ebb[_0x26e0('0x5e')]['id']}})[_0x26e0('0xe')](handleEntityNotFound(_0x14f1a0,null))['then'](function(_0x19f0c5){if(_0x19f0c5){_0x2c5ebb[_0x26e0('0x5c')][_0x26e0('0x63')]=_0x19f0c5['id'];return db['Disposition']['create'](_0x2c5ebb[_0x26e0('0x5c')]);}})['then'](respondWithResult(_0x14f1a0,null))[_0x26e0('0x19')](handleError(_0x14f1a0,null));};exports[_0x26e0('0x64')]=function(_0x14da10,_0x2ce910){var _0xfe7ad={'raw':![],'where':{}};var _0x12172c={};var _0xa2703c={'count':0x0,'rows':[]};return db['MailAccount'][_0x26e0('0x65')]({'where':{'id':_0x14da10[_0x26e0('0x5e')]['id']}})[_0x26e0('0xe')](handleEntityNotFound(_0x2ce910,null))['then'](function(_0x4505dd){if(_0x4505dd){_0x12172c[_0x26e0('0x47')]=_['keys'](db[_0x26e0('0x66')][_0x26e0('0x44')]);_0x12172c[_0x26e0('0x49')]=_[_0x26e0('0x48')](_0x14da10[_0x26e0('0x49')]);_0x12172c['filters']=_[_0x26e0('0x4a')](_0x12172c[_0x26e0('0x47')],_0x12172c[_0x26e0('0x49')]);_0xfe7ad[_0x26e0('0x4b')]=_[_0x26e0('0x4a')](_0x12172c[_0x26e0('0x47')],qs['fields'](_0x14da10['query'][_0x26e0('0x4c')]));_0xfe7ad[_0x26e0('0x4b')]=_0xfe7ad[_0x26e0('0x4b')][_0x26e0('0x67')]?_0xfe7ad[_0x26e0('0x4b')]:_0x12172c[_0x26e0('0x47')];if(!_0x14da10[_0x26e0('0x49')][_0x26e0('0x4d')](_0x26e0('0x4e'))){_0xfe7ad[_0x26e0('0x1e')]=qs['limit'](_0x14da10[_0x26e0('0x49')]['limit']);_0xfe7ad[_0x26e0('0x1d')]=qs[_0x26e0('0x1d')](_0x14da10[_0x26e0('0x49')][_0x26e0('0x1d')]);}_0xfe7ad[_0x26e0('0x4f')]=qs[_0x26e0('0x50')](_0x14da10['query'][_0x26e0('0x50')]);_0xfe7ad[_0x26e0('0x51')]=qs['filters'](_[_0x26e0('0x68')](_0x14da10[_0x26e0('0x49')],_0x12172c['filters']));_0xfe7ad[_0x26e0('0x51')][_0x26e0('0x63')]=_0x4505dd['id'];if(_0x14da10[_0x26e0('0x49')][_0x26e0('0x53')]){_0xfe7ad[_0x26e0('0x51')]=_[_0x26e0('0x54')](_0xfe7ad[_0x26e0('0x51')],{'$or':_[_0x26e0('0x42')](_0xfe7ad[_0x26e0('0x4b')],function(_0x10de47){var _0x2cd066={};_0x2cd066[_0x10de47]={'$like':'%'+_0x14da10['query'][_0x26e0('0x53')]+'%'};return _0x2cd066;})});}_0xfe7ad=_['merge']({},_0xfe7ad,_0x14da10[_0x26e0('0x57')]);return db[_0x26e0('0x66')]['count']({'where':_0xfe7ad[_0x26e0('0x51')]})['then'](function(_0x39913a){_0xa2703c[_0x26e0('0x20')]=_0x39913a;if(_0x14da10[_0x26e0('0x49')][_0x26e0('0x58')]){_0xfe7ad[_0x26e0('0x59')]=[{'all':!![]}];}return db[_0x26e0('0x66')][_0x26e0('0x69')](_0xfe7ad);})[_0x26e0('0xe')](function(_0x575b17){_0xa2703c[_0x26e0('0x6a')]=_0x575b17;return _0xa2703c;});}})[_0x26e0('0xe')](respondWithFilteredResult(_0x2ce910,_0xfe7ad))[_0x26e0('0x19')](handleError(_0x2ce910,null));};exports[_0x26e0('0x6b')]=function(_0x42bc24,_0x53d2f8){return db[_0x26e0('0x43')][_0x26e0('0x5b')]({'where':{'id':_0x42bc24[_0x26e0('0x5e')]['id']}})[_0x26e0('0xe')](handleEntityNotFound(_0x53d2f8,null))[_0x26e0('0xe')](function(_0x50f617){if(_0x50f617){return _0x50f617['removeDispositions'](_0x42bc24[_0x26e0('0x49')][_0x26e0('0x6c')]);}})[_0x26e0('0xe')](respondWithStatusCode(_0x53d2f8,null))[_0x26e0('0x19')](handleError(_0x53d2f8,null));};exports[_0x26e0('0x6d')]=function(_0x3bf1de,_0x576c8a){if(_0x3bf1de[_0x26e0('0x5c')]['id']){delete _0x3bf1de[_0x26e0('0x5c')]['id'];}return db[_0x26e0('0x43')]['find']({'where':{'id':_0x3bf1de[_0x26e0('0x5e')]['id']}})[_0x26e0('0xe')](handleEntityNotFound(_0x576c8a,null))[_0x26e0('0xe')](function(_0x2a8f32){if(_0x2a8f32){_0x3bf1de[_0x26e0('0x5c')]['MailAccountId']=_0x2a8f32['id'];return db[_0x26e0('0x6e')][_0x26e0('0x6f')](_0x3bf1de[_0x26e0('0x5c')]);}})['then'](respondWithResult(_0x576c8a,null))['catch'](handleError(_0x576c8a,null));};exports[_0x26e0('0x70')]=function(_0x586500,_0x262fc9){var _0x567468={'raw':![],'where':{}};var _0x6699f4={};var _0xfcde8e={'count':0x0,'rows':[]};return db[_0x26e0('0x43')][_0x26e0('0x65')]({'where':{'id':_0x586500[_0x26e0('0x5e')]['id']}})[_0x26e0('0xe')](handleEntityNotFound(_0x262fc9,null))[_0x26e0('0xe')](function(_0x98dad6){if(_0x98dad6){_0x6699f4[_0x26e0('0x47')]=_['keys'](db['CannedAnswer'][_0x26e0('0x44')]);_0x6699f4[_0x26e0('0x49')]=_[_0x26e0('0x48')](_0x586500[_0x26e0('0x49')]);_0x6699f4['filters']=_[_0x26e0('0x4a')](_0x6699f4[_0x26e0('0x47')],_0x6699f4['query']);_0x567468['attributes']=_['intersection'](_0x6699f4['model'],qs[_0x26e0('0x4c')](_0x586500[_0x26e0('0x49')]['fields']));_0x567468[_0x26e0('0x4b')]=_0x567468['attributes'][_0x26e0('0x67')]?_0x567468['attributes']:_0x6699f4[_0x26e0('0x47')];if(!_0x586500[_0x26e0('0x49')][_0x26e0('0x4d')](_0x26e0('0x4e'))){_0x567468['limit']=qs[_0x26e0('0x1e')](_0x586500['query'][_0x26e0('0x1e')]);_0x567468['offset']=qs[_0x26e0('0x1d')](_0x586500[_0x26e0('0x49')][_0x26e0('0x1d')]);}_0x567468[_0x26e0('0x4f')]=qs[_0x26e0('0x50')](_0x586500[_0x26e0('0x49')][_0x26e0('0x50')]);_0x567468[_0x26e0('0x51')]=qs['filters'](_[_0x26e0('0x68')](_0x586500[_0x26e0('0x49')],_0x6699f4[_0x26e0('0x52')]));_0x567468[_0x26e0('0x51')]['MailAccountId']=_0x98dad6['id'];if(_0x586500['query']['filter']){_0x567468['where']=_['merge'](_0x567468[_0x26e0('0x51')],{'$or':_[_0x26e0('0x42')](_0x567468[_0x26e0('0x4b')],function(_0x511f04){var _0x5d43ad={};_0x5d43ad[_0x511f04]={'$like':'%'+_0x586500[_0x26e0('0x49')][_0x26e0('0x53')]+'%'};return _0x5d43ad;})});}_0x567468=_['merge']({},_0x567468,_0x586500[_0x26e0('0x57')]);return db[_0x26e0('0x6e')][_0x26e0('0x20')]({'where':_0x567468[_0x26e0('0x51')]})[_0x26e0('0xe')](function(_0x388d0e){_0xfcde8e[_0x26e0('0x20')]=_0x388d0e;if(_0x586500[_0x26e0('0x49')][_0x26e0('0x58')]){_0x567468[_0x26e0('0x59')]=[{'all':!![]}];}return db[_0x26e0('0x6e')][_0x26e0('0x69')](_0x567468);})[_0x26e0('0xe')](function(_0x5d6b76){_0xfcde8e[_0x26e0('0x6a')]=_0x5d6b76;return _0xfcde8e;});}})[_0x26e0('0xe')](respondWithFilteredResult(_0x262fc9,_0x567468))[_0x26e0('0x19')](handleError(_0x262fc9,null));};exports[_0x26e0('0x71')]=function(_0x4763c8,_0x6ade24){return db[_0x26e0('0x43')][_0x26e0('0x5b')]({'where':{'id':_0x4763c8['params']['id']}})[_0x26e0('0xe')](handleEntityNotFound(_0x6ade24,null))[_0x26e0('0xe')](function(_0x3a1569){if(_0x3a1569){return _0x3a1569[_0x26e0('0x71')](_0x4763c8[_0x26e0('0x49')]['ids']);}})[_0x26e0('0xe')](respondWithStatusCode(_0x6ade24,null))[_0x26e0('0x19')](handleError(_0x6ade24,null));};exports[_0x26e0('0x6f')]=function(_0x1394fe,_0x3ef1c3){var _0x16f110={'name':_0x1394fe[_0x26e0('0x5c')][_0x26e0('0x27')],'key':_0x1394fe['body'][_0x26e0('0x46')],'provider':_0x1394fe['body']['provider']==='custom'?null:_0x1394fe[_0x26e0('0x5c')][_0x26e0('0x5d')],'email':_0x1394fe[_0x26e0('0x5c')][_0x26e0('0x72')],'ListId':_0x1394fe[_0x26e0('0x5c')][_0x26e0('0x73')],'active':!_[_0x26e0('0x74')](_0x1394fe[_0x26e0('0x5c')][_0x26e0('0x75')])?_0x1394fe[_0x26e0('0x5c')]['active']:!![],'description':_0x1394fe[_0x26e0('0x5c')][_0x26e0('0x76')]||null};var _0x252296=getAuthenticationOptions(_0x16f110[_0x26e0('0x5d')],_0x1394fe['body']);_0x16f110[_0x26e0('0x3c')]=_0x252296[_0x26e0('0x3c')];_0x16f110[_0x26e0('0x3d')]=_0x252296['Smtp'];return db[_0x26e0('0x43')]['create'](_0x16f110,{'include':[{'model':db[_0x26e0('0x60')],'as':_0x26e0('0x3d')},{'model':db[_0x26e0('0x3f')],'as':_0x26e0('0x3c')}]})[_0x26e0('0xe')](function(_0x334a90){var _0x2958d3=_0x1394fe[_0x26e0('0x31')][_0x26e0('0x24')]({'plain':!![]});if(!_0x2958d3)throw new Error(_0x26e0('0x77'));if(_0x2958d3[_0x26e0('0x78')]===_0x26e0('0x31')){var _0x367070=_0x334a90[_0x26e0('0x24')]({'plain':!![]});return db[_0x26e0('0x79')][_0x26e0('0x5b')]({'where':{'name':_0x26e0('0x7a'),'userProfileId':_0x2958d3[_0x26e0('0x7b')]},'raw':!![]})['then'](function(_0x12f8a2){if(_0x12f8a2&&_0x12f8a2[_0x26e0('0x7c')]===0x0){return db[_0x26e0('0x25')][_0x26e0('0x6f')]({'name':_0x367070[_0x26e0('0x27')],'resourceId':_0x367070['id'],'type':_0x12f8a2['name'],'sectionId':_0x12f8a2['id']},{})[_0x26e0('0xe')](function(){return _0x334a90;});}else{return _0x334a90;}})[_0x26e0('0x19')](function(_0x277a55){logger[_0x26e0('0x14')](_0x26e0('0x7d'),_0x277a55);throw _0x277a55;});}return _0x334a90;})[_0x26e0('0xe')](respondWithResult(_0x3ef1c3,0xc9))[_0x26e0('0x19')](handleError(_0x3ef1c3,null));};exports[_0x26e0('0x7e')]=function(_0x4441d4,_0x5736b2){return db[_0x26e0('0x43')][_0x26e0('0x65')]({'where':{'id':_0x4441d4['params']['id']}})[_0x26e0('0xe')](handleEntityNotFound(_0x5736b2,null))['then'](function(_0x3daae0){if(_0x3daae0){return _0x3daae0[_0x26e0('0x7e')]();}return null;})[_0x26e0('0xe')](respondWithResult(_0x5736b2,null))['catch'](handleError(_0x5736b2,null));};exports[_0x26e0('0x7f')]=function(_0x53d0c7,_0x42647a){if(_0x53d0c7[_0x26e0('0x5c')]['id']){delete _0x53d0c7['body']['id'];}return db[_0x26e0('0x43')][_0x26e0('0x5b')]({'where':{'id':_0x53d0c7['params']['id']}})['then'](handleEntityNotFound(_0x42647a,null))[_0x26e0('0xe')](function(_0x45eb81){if(_0x45eb81){_0x53d0c7['body']['MailAccountId']=_0x45eb81['id'];return db[_0x26e0('0x3f')][_0x26e0('0x6f')](_0x53d0c7[_0x26e0('0x5c')]);}})['then'](respondWithResult(_0x42647a,null))[_0x26e0('0x19')](handleError(_0x42647a,null));};exports[_0x26e0('0x80')]=function(_0x8328fe,_0x111dc7){return db[_0x26e0('0x43')]['findOne']({'where':{'id':_0x8328fe[_0x26e0('0x5e')]['id']}})[_0x26e0('0xe')](handleEntityNotFound(_0x111dc7,null))['then'](function(_0x222c33){if(_0x222c33){return _0x222c33['setImap'](null);}return null;})[_0x26e0('0xe')](respondWithStatusCode(_0x111dc7,null))['catch'](handleError(_0x111dc7,null));};exports['getSmtp']=function(_0x17ad36,_0x1ce26f){return db['MailAccount'][_0x26e0('0x65')]({'where':{'id':_0x17ad36[_0x26e0('0x5e')]['id']}})[_0x26e0('0xe')](handleEntityNotFound(_0x1ce26f,null))[_0x26e0('0xe')](function(_0x35083e){if(_0x35083e){return _0x35083e['getSmtp']();}return null;})[_0x26e0('0xe')](respondWithResult(_0x1ce26f,null))[_0x26e0('0x19')](handleError(_0x1ce26f,null));};exports[_0x26e0('0x81')]=function(_0x28d555,_0x3e6352){if(_0x28d555['body']['id']){delete _0x28d555[_0x26e0('0x5c')]['id'];}return db[_0x26e0('0x43')]['find']({'where':{'id':_0x28d555['params']['id']}})[_0x26e0('0xe')](handleEntityNotFound(_0x3e6352,null))[_0x26e0('0xe')](function(_0x4aa4f8){if(_0x4aa4f8){_0x28d555[_0x26e0('0x5c')][_0x26e0('0x63')]=_0x4aa4f8['id'];return db['MailServerOut']['create'](_0x28d555[_0x26e0('0x5c')]);}})['then'](respondWithResult(_0x3e6352,null))[_0x26e0('0x19')](handleError(_0x3e6352,null));};exports[_0x26e0('0x82')]=function(_0x4e1134,_0x4e925f){return db[_0x26e0('0x43')][_0x26e0('0x65')]({'where':{'id':_0x4e1134[_0x26e0('0x5e')]['id']}})[_0x26e0('0xe')](handleEntityNotFound(_0x4e925f,null))[_0x26e0('0xe')](function(_0x1e5881){if(_0x1e5881){return _0x1e5881['setSmtp'](null);}return null;})[_0x26e0('0xe')](respondWithStatusCode(_0x4e925f,null))[_0x26e0('0x19')](handleError(_0x4e925f,null));};exports['addInteraction']=function(_0x587d1a,_0x668cbd){return db[_0x26e0('0x83')][_0x26e0('0x5b')]({'where':{'id':_0x587d1a['params']['id']}})[_0x26e0('0xe')](handleEntityNotFound(_0x668cbd,null))[_0x26e0('0xe')](function(_0x3a4304){if(_0x3a4304){return _0x3a4304[_0x26e0('0x84')](_0x587d1a[_0x26e0('0x5c')][_0x26e0('0x6c')],_[_0x26e0('0x85')](_0x587d1a[_0x26e0('0x5c')],[_0x26e0('0x6c'),'id'])||{});}})['then'](respondWithResult(_0x668cbd,null))[_0x26e0('0x19')](handleError(_0x668cbd,null));};exports[_0x26e0('0x86')]=function(_0x13d3e5,_0x20bd1e){var _0x4ceda5={'raw':![],'where':{}};var _0x73e12a={};var _0x3804f1={'count':0x0,'rows':[]};return db[_0x26e0('0x43')][_0x26e0('0x65')]({'where':{'id':_0x13d3e5['params']['id']}})[_0x26e0('0xe')](handleEntityNotFound(_0x20bd1e,null))['then'](function(_0x5d4c51){if(_0x5d4c51){_0x73e12a['model']=_['keys'](db[_0x26e0('0x83')][_0x26e0('0x44')]);_0x73e12a[_0x26e0('0x49')]=_[_0x26e0('0x48')](_0x13d3e5[_0x26e0('0x49')]);_0x73e12a[_0x26e0('0x52')]=_[_0x26e0('0x4a')](_0x73e12a[_0x26e0('0x47')],_0x73e12a[_0x26e0('0x49')]);_0x4ceda5[_0x26e0('0x4b')]=_[_0x26e0('0x4a')](_0x73e12a['model'],qs[_0x26e0('0x4c')](_0x13d3e5[_0x26e0('0x49')]['fields']));_0x4ceda5[_0x26e0('0x4b')]=_0x4ceda5[_0x26e0('0x4b')]['length']?_0x4ceda5[_0x26e0('0x4b')]:_0x73e12a['model'];if(!_0x13d3e5[_0x26e0('0x49')][_0x26e0('0x4d')](_0x26e0('0x4e'))){_0x4ceda5['limit']=qs['limit'](_0x13d3e5[_0x26e0('0x49')][_0x26e0('0x1e')]);_0x4ceda5[_0x26e0('0x1d')]=qs[_0x26e0('0x1d')](_0x13d3e5[_0x26e0('0x49')][_0x26e0('0x1d')]);}_0x4ceda5[_0x26e0('0x4f')]=qs[_0x26e0('0x50')](_0x13d3e5[_0x26e0('0x49')]['sort']);_0x4ceda5['where']=qs[_0x26e0('0x52')](_[_0x26e0('0x68')](_0x13d3e5[_0x26e0('0x49')],_0x73e12a[_0x26e0('0x52')]));_0x4ceda5[_0x26e0('0x51')][_0x26e0('0x63')]=_0x5d4c51['id'];if(_0x13d3e5[_0x26e0('0x49')][_0x26e0('0x53')]){_0x4ceda5[_0x26e0('0x51')]=_[_0x26e0('0x54')](_0x4ceda5[_0x26e0('0x51')],{'$or':_[_0x26e0('0x42')](_0x4ceda5['attributes'],function(_0x4c3417){var _0x28d710={};_0x28d710[_0x4c3417]={'$like':'%'+_0x13d3e5[_0x26e0('0x49')][_0x26e0('0x53')]+'%'};return _0x28d710;})});}_0x4ceda5=_[_0x26e0('0x54')]({},_0x4ceda5,_0x13d3e5[_0x26e0('0x57')]);return db[_0x26e0('0x83')]['count']({'where':_0x4ceda5[_0x26e0('0x51')]})[_0x26e0('0xe')](function(_0x1b22ca){_0x3804f1[_0x26e0('0x20')]=_0x1b22ca;if(_0x13d3e5[_0x26e0('0x49')][_0x26e0('0x58')]){_0x4ceda5[_0x26e0('0x59')]=[{'model':db[_0x26e0('0x87')],'as':_0x26e0('0x88'),'required':![]},{'model':db[_0x26e0('0x89')],'as':_0x26e0('0x8a'),'attributes':['name','fullname',_0x26e0('0x8b')],'required':![]},{'model':db['Tag'],'as':_0x26e0('0x8c'),'attributes':['id',_0x26e0('0x27'),_0x26e0('0x8d')],'where':_0x13d3e5[_0x26e0('0x49')][_0x26e0('0x8e')]?{'id':_0x13d3e5[_0x26e0('0x49')][_0x26e0('0x8e')]}:undefined,'required':_0x13d3e5[_0x26e0('0x49')][_0x26e0('0x8e')]?!![]:![]}];}return db[_0x26e0('0x83')][_0x26e0('0x69')](_0x4ceda5);})[_0x26e0('0xe')](function(_0x1f0235){_0x3804f1[_0x26e0('0x6a')]=_0x1f0235;return _0x3804f1;});}})[_0x26e0('0xe')](respondWithFilteredResult(_0x20bd1e,_0x4ceda5))[_0x26e0('0x19')](handleError(_0x20bd1e,null));};exports[_0x26e0('0x8f')]=function addApplications(_0x7347e9,_0xef42d2){var _0x457c48=_0x7347e9[_0x26e0('0x5e')]['id'];var _0xbe3bc7=_0x7347e9[_0x26e0('0x5c')];var _0xd33c6b=0xc8;var _0xfb1a3d=null;return db[_0x26e0('0x90')][_0x26e0('0x91')]({'isolationLevel':db[_0x26e0('0x90')]['Transaction'][_0x26e0('0x92')][_0x26e0('0x93')]},function(_0x388a95){return db[_0x26e0('0x43')]['findOne']({'where':{'id':_0x457c48},'transaction':_0x388a95})[_0x26e0('0xe')](function(_0x44b00b){if(_0x44b00b){return db[_0x26e0('0x94')][_0x26e0('0x26')]({'where':{'MailAccountId':_0x457c48},'transaction':_0x388a95})[_0x26e0('0xe')](function(){var _0x2bcd4d=_[_0x26e0('0x42')](_0xbe3bc7,function(_0x2e6282){_0x2e6282[_0x26e0('0x63')]=_0x457c48;return _0x2e6282;});return db[_0x26e0('0x94')][_0x26e0('0x95')](_0x2bcd4d,{'transaction':_0x388a95});});}else{_0xd33c6b=0x194;_0xfb1a3d=[];}});})['then'](function(){if(_0xd33c6b!==0x194){return db[_0x26e0('0x94')][_0x26e0('0x96')]({'where':{'MailAccountId':_0x457c48},'order':_0x26e0('0x97')})[_0x26e0('0xe')](function(_0x448fb6){_0xfb1a3d=_0x448fb6;});}})['catch'](function(_0x1f2f7e){_0xd33c6b=0x1f4;logger[_0x26e0('0x14')](_0x1f2f7e[_0x26e0('0x98')]);if(_0x1f2f7e[_0x26e0('0x27')]){delete _0x1f2f7e['name'];}_0xfb1a3d=_0x1f2f7e;})[_0x26e0('0x99')](function(){if(_0xfb1a3d===null){_0xef42d2[_0x26e0('0x1a')](_0xd33c6b);}else{if(_0xd33c6b===0x1f4){_0xef42d2[_0x26e0('0x1b')](_0xd33c6b)[_0x26e0('0x9a')](_0xfb1a3d);}else{_0xef42d2[_0x26e0('0x1b')](_0xd33c6b)[_0x26e0('0x22')](_0xfb1a3d);}}});};exports['getApplications']=function(_0x1db67a,_0x405003){var _0x168742={};var _0x55ee48={};var _0x1c9bb8;var _0x3cd214;return db[_0x26e0('0x43')][_0x26e0('0x65')]({'where':{'id':_0x1db67a[_0x26e0('0x5e')]['id']}})['then'](handleEntityNotFound(_0x405003,null))[_0x26e0('0xe')](function(_0x42e640){if(_0x42e640){_0x1c9bb8=_0x42e640;_0x55ee48['model']=_[_0x26e0('0x48')](db[_0x26e0('0x94')][_0x26e0('0x44')]);_0x55ee48[_0x26e0('0x49')]=_['keys'](_0x1db67a[_0x26e0('0x49')]);_0x55ee48[_0x26e0('0x52')]=_[_0x26e0('0x4a')](_0x55ee48[_0x26e0('0x47')],_0x55ee48[_0x26e0('0x49')]);_0x168742[_0x26e0('0x4b')]=_[_0x26e0('0x4a')](_0x55ee48[_0x26e0('0x47')],qs[_0x26e0('0x4c')](_0x1db67a[_0x26e0('0x49')][_0x26e0('0x4c')]));_0x168742[_0x26e0('0x4b')]=_0x168742['attributes']['length']?_0x168742['attributes']:_0x55ee48[_0x26e0('0x47')];_0x168742['order']=qs[_0x26e0('0x50')](_0x1db67a[_0x26e0('0x49')][_0x26e0('0x50')]);_0x168742[_0x26e0('0x51')]=qs[_0x26e0('0x52')](_['pick'](_0x1db67a[_0x26e0('0x49')],_0x55ee48[_0x26e0('0x52')]));if(_0x1db67a[_0x26e0('0x49')][_0x26e0('0x53')]){_0x168742[_0x26e0('0x51')]=_[_0x26e0('0x54')](_0x168742[_0x26e0('0x51')],{'$or':_[_0x26e0('0x42')](_0x168742[_0x26e0('0x4b')],function(_0x143631){var _0x1e8622={};_0x1e8622[_0x143631]={'$like':'%'+_0x1db67a['query']['filter']+'%'};return _0x1e8622;})});}_0x168742=_['merge']({},_0x168742,_0x1db67a[_0x26e0('0x57')]);return _0x1c9bb8[_0x26e0('0x9b')](_0x168742);}})[_0x26e0('0xe')](function(_0x4be040){if(_0x4be040){_0x3cd214=_0x4be040[_0x26e0('0x67')];if(!_0x1db67a[_0x26e0('0x49')][_0x26e0('0x4d')](_0x26e0('0x4e'))){_0x168742['limit']=qs[_0x26e0('0x1e')](_0x1db67a['query'][_0x26e0('0x1e')]);_0x168742[_0x26e0('0x1d')]=qs['offset'](_0x1db67a[_0x26e0('0x49')][_0x26e0('0x1d')]);}return _0x1c9bb8['getApplications'](_0x168742);}})[_0x26e0('0xe')](function(_0x26744a){if(_0x26744a){return _0x26744a?{'count':_0x3cd214,'rows':_0x26744a}:null;}})[_0x26e0('0xe')](respondWithResult(_0x405003,null))[_0x26e0('0x19')](handleError(_0x405003,null));};exports[_0x26e0('0x9c')]=function(_0x31fec4,_0x5df403){var _0x42a983={'raw':!![],'where':{}};var _0x1b3821={};var _0x4da2e3={'count':0x0,'rows':[]};return db[_0x26e0('0x43')][_0x26e0('0x65')]({'where':{'id':_0x31fec4[_0x26e0('0x5e')]['id']}})['then'](handleEntityNotFound(_0x5df403,null))[_0x26e0('0xe')](function(_0x30a141){if(_0x30a141){_0x1b3821[_0x26e0('0x47')]=_['keys'](db['MailMessage'][_0x26e0('0x44')]);_0x1b3821[_0x26e0('0x49')]=_[_0x26e0('0x48')](_0x31fec4[_0x26e0('0x49')]);_0x1b3821[_0x26e0('0x52')]=_[_0x26e0('0x4a')](_0x1b3821[_0x26e0('0x47')],_0x1b3821[_0x26e0('0x49')]);_0x42a983[_0x26e0('0x4b')]=_[_0x26e0('0x4a')](_0x1b3821['model'],qs[_0x26e0('0x4c')](_0x31fec4['query'][_0x26e0('0x4c')]));_0x42a983[_0x26e0('0x4b')]=_0x42a983[_0x26e0('0x4b')][_0x26e0('0x67')]?_0x42a983[_0x26e0('0x4b')]:_0x1b3821[_0x26e0('0x47')];if(!_0x31fec4[_0x26e0('0x49')][_0x26e0('0x4d')](_0x26e0('0x4e'))){_0x42a983[_0x26e0('0x1e')]=qs['limit'](_0x31fec4[_0x26e0('0x49')][_0x26e0('0x1e')]);_0x42a983[_0x26e0('0x1d')]=qs['offset'](_0x31fec4[_0x26e0('0x49')][_0x26e0('0x1d')]);}_0x42a983['order']=qs['sort'](_0x31fec4['query'][_0x26e0('0x50')]);_0x42a983[_0x26e0('0x51')]=qs[_0x26e0('0x52')](_[_0x26e0('0x68')](_0x31fec4['query'],_0x1b3821[_0x26e0('0x52')]));_0x42a983['where']['MailAccountId']=_0x30a141['id'];if(_0x31fec4[_0x26e0('0x49')][_0x26e0('0x53')]){_0x42a983[_0x26e0('0x51')]=_[_0x26e0('0x54')](_0x42a983[_0x26e0('0x51')],{'$or':_[_0x26e0('0x42')](_0x42a983[_0x26e0('0x4b')],function(_0x2bc127){var _0x17d4b6={};_0x17d4b6[_0x2bc127]={'$like':'%'+_0x31fec4[_0x26e0('0x49')][_0x26e0('0x53')]+'%'};return _0x17d4b6;})});}if(_0x31fec4[_0x26e0('0x49')][_0x26e0('0x9d')]){var _0xd19a0f=_0x31fec4[_0x26e0('0x49')][_0x26e0('0x9d')][_0x26e0('0x9e')](',');var _0x18647d={};_0x18647d[_0xd19a0f[0x0]]={'$gte':moment(_0xd19a0f[0x1])['format'](_0x26e0('0x9f'))};_0x42a983[_0x26e0('0x51')]=_[_0x26e0('0x54')](_0x42a983[_0x26e0('0x51')],_0x18647d);}_0x42a983=_[_0x26e0('0x54')]({},_0x42a983,_0x31fec4['options']);return db[_0x26e0('0xa0')][_0x26e0('0x20')]({'where':_0x42a983[_0x26e0('0x51')]})[_0x26e0('0xe')](function(_0x325cec){_0x4da2e3[_0x26e0('0x20')]=_0x325cec;if(_0x31fec4[_0x26e0('0x49')]['includeAll']){_0x42a983[_0x26e0('0x59')]=[{'all':!![]}];}return db['MailMessage']['findAll'](_0x42a983);})[_0x26e0('0xe')](function(_0xb1f341){if(_0x31fec4['query'][_0x26e0('0xa1')]===_0x26e0('0xa2')){for(var _0x3bf1b1=0x0;_0x3bf1b1<_0xb1f341[_0x26e0('0x67')];_0x3bf1b1++){_0xb1f341[_0x3bf1b1][_0x26e0('0x5c')]=juice(_0xb1f341[_0x3bf1b1][_0x26e0('0x5c')]);}}_0x4da2e3[_0x26e0('0x6a')]=_0xb1f341;return _0x4da2e3;});}})[_0x26e0('0xe')](respondWithFilteredResult(_0x5df403,_0x42a983))[_0x26e0('0x19')](handleError(_0x5df403,null));};exports[_0x26e0('0x9a')]=function(_0x14c27d,_0x54f685){var _0x5d770f,_0x8d4ab6={},_0x1c000a;if(_0x14c27d[_0x26e0('0x5c')]['to']){_0x1c000a=_0x14c27d[_0x26e0('0x5c')]['to'][_0x26e0('0x9e')](',')[0x0];}return db[_0x26e0('0x43')][_0x26e0('0x5b')]({'where':{'id':_0x14c27d[_0x26e0('0x5e')]['id']},'include':[{'model':db[_0x26e0('0xa3')],'as':_0x26e0('0xa4'),'include':[{'model':db[_0x26e0('0x87')],'as':_0x26e0('0xa5'),'where':{'email':_0x1c000a},'limit':0x1,'order':[[_0x26e0('0xa6'),_0x26e0('0xa7')]]}]},{'model':db[_0x26e0('0x60')],'as':_0x26e0('0x3d'),'raw':!![],'include':[{'model':db[_0x26e0('0xa8')],'as':_0x26e0('0xa8'),'raw':!![]}]}]})[_0x26e0('0xe')](handleEntityNotFound(_0x54f685,null))[_0x26e0('0xe')](function(_0x15a863){if(!_0x15a863)return;_0x5d770f=_0x15a863;if(!_0x15a863[_0x26e0('0x3d')])throw new Error(_0x26e0('0xa9'));if(_['isNil'](_0x14c27d[_0x26e0('0x5c')]['from'])){_0x14c27d['body'][_0x26e0('0xaa')]=util[_0x26e0('0xab')]('%s\x20<%s>',_0x15a863['name'],_0x15a863[_0x26e0('0x72')]||_0x15a863[_0x26e0('0x3d')][_0x26e0('0x31')]);}if(_0x14c27d['body'][_0x26e0('0xac')]&&_0x14c27d[_0x26e0('0x5c')]['attachments'][_0x26e0('0x67')]){for(var _0x7ede97=0x0;_0x7ede97<_0x14c27d[_0x26e0('0x5c')][_0x26e0('0xac')]['length'];_0x7ede97+=0x1){_0x14c27d[_0x26e0('0x5c')][_0x26e0('0xac')][_0x7ede97]={'filename':_0x14c27d[_0x26e0('0x5c')][_0x26e0('0xac')][_0x7ede97]['name'],'path':path['join'](config[_0x26e0('0xad')],_0x26e0('0xae'),_0x14c27d[_0x26e0('0x5c')][_0x26e0('0xac')][_0x7ede97][_0x26e0('0xaf')])};}}var _0x2066be=_0x15a863[_0x26e0('0xb0')]();return respondWithRpcPromise('SendMail','sendMail',{'account':_0x2066be,'message':_0x14c27d[_0x26e0('0x5c')]});})[_0x26e0('0xe')](function(_0x4b1c01){if(!_0x4b1c01)return;_0x8d4ab6=_0x4b1c01;if(!_0x5d770f[_0x26e0('0xa4')])throw new Error(_0x26e0('0xb1'));if(_0x5d770f[_0x26e0('0xa4')][_0x26e0('0xa5')][_0x26e0('0x67')])return _0x5d770f['List'][_0x26e0('0xa5')][0x0];return db[_0x26e0('0x87')][_0x26e0('0x6f')](_[_0x26e0('0xb2')](_0x14c27d['body'],{'firstName':_0x14c27d['body']['to'],'email':_0x14c27d[_0x26e0('0x5c')]['to'],'phone':_0x14c27d[_0x26e0('0x5c')]['to'],'ListId':_0x5d770f['ListId']}));})['then'](function(_0x2d1e9c){if(!_0x2d1e9c)return;var _0x1caadf={'UserId':_0x14c27d[_0x26e0('0x31')]['id'],'ContactId':_0x2d1e9c['id'],'MailAccountId':_0x5d770f['id'],'inReplyTo':_0x8d4ab6['messageId'],'to':_0x14c27d[_0x26e0('0x5c')][_0x26e0('0xaa')],'cc':_0x14c27d[_0x26e0('0x5c')]['cc'],'subject':_0x14c27d[_0x26e0('0x5c')][_0x26e0('0xb3')],'attach':_0x14c27d[_0x26e0('0x5c')][_0x26e0('0xb4')],'firstMsgDirection':_0x26e0('0xb5'),'lastMsgAt':moment()[_0x26e0('0xab')](_0x26e0('0x9f')),'lastMsgDirection':_0x26e0('0xb5'),'Messages':[_[_0x26e0('0x54')](_0x14c27d['body'],{'messageId':_0x8d4ab6[_0x26e0('0xb6')],'sentAt':moment()['format'](_0x26e0('0x9f')),'read':!![],'MailAccountId':_0x5d770f['id'],'UserId':_0x14c27d[_0x26e0('0x31')]['id'],'ContactId':_0x2d1e9c['id']})]};if(_0x14c27d['body']['Interaction']){_0x1caadf=_['merge'](_0x1caadf,_0x14c27d[_0x26e0('0x5c')][_0x26e0('0xb7')]);}return db[_0x26e0('0x83')]['create'](_0x1caadf,{'include':[{'model':db[_0x26e0('0xa0')],'as':_0x26e0('0xb8')}]});})['then'](respondWithResult(_0x54f685,null))[_0x26e0('0x19')](handleError(_0x54f685,null));};exports[_0x26e0('0xb9')]=function(_0xba4cf5,_0x3167ba){return db[_0x26e0('0x43')][_0x26e0('0x5b')]({'where':{'id':_0xba4cf5[_0x26e0('0x5e')]['id']},'include':[{'model':db[_0x26e0('0x60')],'as':_0x26e0('0x3d'),'raw':!![],'include':[{'model':db[_0x26e0('0xa8')],'as':_0x26e0('0xa8'),'raw':!![]}]}]})['then'](handleEntityNotFound(_0x3167ba,null))[_0x26e0('0xe')](function(_0x5d4cb9){if(!_0x5d4cb9[_0x26e0('0x3d')])return;var _0x30c8b7=_0x5d4cb9[_0x26e0('0xb0')]();return respondWithRpcPromise('VerifySmtp',_0x26e0('0xb9'),{'account':_0x30c8b7});})[_0x26e0('0xe')](respondWithResult(_0x3167ba,null))[_0x26e0('0x19')](handleError(_0x3167ba,null));};exports['destroy']=function(_0x26887d,_0xde9615){return db[_0x26e0('0x43')][_0x26e0('0x5b')]({'where':{'id':_0x26887d[_0x26e0('0x5e')]['id']}})[_0x26e0('0xe')](handleEntityNotFound(_0xde9615,null))[_0x26e0('0xe')](function(_0x20fed7){if(_0x20fed7&&_0x20fed7['service']){throw new db[(_0x26e0('0xba'))][(_0x26e0('0xbb'))]('You\x20can\x27t\x20remove\x20the\x20mail\x20service\x20account');}return _0x20fed7;})[_0x26e0('0xe')](removeEntity(_0xde9615,null))[_0x26e0('0x19')](handleError(_0xde9615,null));};exports[_0x26e0('0xbc')]=function(_0x4902f8,_0x5d2794){return db[_0x26e0('0x43')][_0x26e0('0x5b')]({'where':{'id':_0x4902f8['params']['id']}})[_0x26e0('0xe')](handleEntityNotFound(_0x5d2794,null))[_0x26e0('0xe')](function(_0x4229de){if(_0x4229de){return _0x4229de[_0x26e0('0xbc')](_0x4902f8[_0x26e0('0x5c')][_0x26e0('0x6c')],_[_0x26e0('0x85')](_0x4902f8[_0x26e0('0x5c')],[_0x26e0('0x6c'),'id'])||{})[_0x26e0('0xbd')](function(_0x26c0da){for(var _0x23c40d=0x0;_0x23c40d<_0x4902f8[_0x26e0('0x5c')][_0x26e0('0x6c')][_0x26e0('0x67')];_0x23c40d+=0x1){socket[_0x26e0('0xbe')](_0x26e0('0xbf'),{'UserId':Number(_0x4902f8[_0x26e0('0x5c')][_0x26e0('0x6c')][_0x23c40d]),'MailAccountId':Number(_0x4902f8[_0x26e0('0x5e')]['id'])});}return _0x26c0da;});}})['then'](respondWithResult(_0x5d2794,null))[_0x26e0('0x19')](handleError(_0x5d2794,null));};exports[_0x26e0('0xc0')]=function(_0x68d4fe,_0x106ef5){return db[_0x26e0('0x43')]['find']({'where':{'id':_0x68d4fe['params']['id']}})['then'](handleEntityNotFound(_0x106ef5,null))[_0x26e0('0xe')](function(_0x1f72ba){if(_0x1f72ba){return _0x1f72ba[_0x26e0('0xc0')](_0x68d4fe[_0x26e0('0x49')][_0x26e0('0x6c')])[_0x26e0('0xe')](function(){if(_['isArray'](_0x68d4fe[_0x26e0('0x49')]['ids'])){for(var _0x4a3a8a=0x0;_0x4a3a8a<_0x68d4fe[_0x26e0('0x49')]['ids']['length'];_0x4a3a8a+=0x1){socket[_0x26e0('0xbe')](_0x26e0('0xc1'),{'UserId':Number(_0x68d4fe[_0x26e0('0x49')]['ids'][_0x4a3a8a]),'MailAccountId':Number(_0x68d4fe['params']['id'])});}}else{socket['emit'](_0x26e0('0xc1'),{'UserId':Number(_0x68d4fe['query'][_0x26e0('0x6c')]),'MailAccountId':Number(_0x68d4fe[_0x26e0('0x5e')]['id'])});}});}})[_0x26e0('0xe')](respondWithStatusCode(_0x106ef5,null))[_0x26e0('0x19')](handleError(_0x106ef5,null));};exports[_0x26e0('0xc2')]=function(_0x53013d,_0x5f2e58){var _0x1b33c9={};var _0x7a64c5={};var _0x31f416;var _0x4e79ad;return db['MailAccount'][_0x26e0('0x65')]({'where':{'id':_0x53013d[_0x26e0('0x5e')]['id']}})[_0x26e0('0xe')](handleEntityNotFound(_0x5f2e58,null))[_0x26e0('0xe')](function(_0x59f8f8){if(_0x59f8f8){_0x31f416=_0x59f8f8;_0x7a64c5[_0x26e0('0x47')]=_[_0x26e0('0x48')](db['User'][_0x26e0('0x44')]);_0x7a64c5['query']=_['keys'](_0x53013d[_0x26e0('0x49')]);_0x7a64c5['filters']=_[_0x26e0('0x4a')](_0x7a64c5[_0x26e0('0x47')],_0x7a64c5[_0x26e0('0x49')]);_0x1b33c9[_0x26e0('0x4b')]=_['intersection'](_0x7a64c5[_0x26e0('0x47')],qs[_0x26e0('0x4c')](_0x53013d[_0x26e0('0x49')][_0x26e0('0x4c')]));_0x1b33c9[_0x26e0('0x4b')]=_0x1b33c9[_0x26e0('0x4b')]['length']?_0x1b33c9['attributes']:_0x7a64c5[_0x26e0('0x47')];_0x1b33c9[_0x26e0('0x4f')]=qs[_0x26e0('0x50')](_0x53013d[_0x26e0('0x49')][_0x26e0('0x50')]);_0x1b33c9[_0x26e0('0x51')]=qs[_0x26e0('0x52')](_[_0x26e0('0x68')](_0x53013d[_0x26e0('0x49')],_0x7a64c5[_0x26e0('0x52')]));if(_0x53013d['query'][_0x26e0('0x53')]){_0x1b33c9[_0x26e0('0x51')]=_[_0x26e0('0x54')](_0x1b33c9[_0x26e0('0x51')],{'$or':_[_0x26e0('0x42')](_0x1b33c9[_0x26e0('0x4b')],function(_0x43fe00){var _0x2d9cc8={};_0x2d9cc8[_0x43fe00]={'$like':'%'+_0x53013d[_0x26e0('0x49')][_0x26e0('0x53')]+'%'};return _0x2d9cc8;})});}_0x1b33c9=_[_0x26e0('0x54')]({},_0x1b33c9,_0x53013d[_0x26e0('0x57')]);return _0x31f416[_0x26e0('0xc2')](_0x1b33c9);}})[_0x26e0('0xe')](function(_0x4c7711){if(_0x4c7711){_0x4e79ad=_0x4c7711['length'];if(!_0x53013d[_0x26e0('0x49')]['hasOwnProperty'](_0x26e0('0x4e'))){_0x1b33c9[_0x26e0('0x1e')]=qs['limit'](_0x53013d[_0x26e0('0x49')][_0x26e0('0x1e')]);_0x1b33c9['offset']=qs[_0x26e0('0x1d')](_0x53013d[_0x26e0('0x49')][_0x26e0('0x1d')]);}return _0x31f416[_0x26e0('0xc2')](_0x1b33c9);}})[_0x26e0('0xe')](function(_0x1d2e18){if(_0x1d2e18){return _0x1d2e18?{'count':_0x4e79ad,'rows':_0x1d2e18}:null;}})['then'](respondWithResult(_0x5f2e58,null))['catch'](handleError(_0x5f2e58,null));};
\ No newline at end of file
index 5160f68..09991a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b38=['events','MailAccount','save','update','emit','hasOwnProperty','exports'];(function(_0x88fab1,_0x1accff){var _0x20c571=function(_0x12de1c){while(--_0x12de1c){_0x88fab1['push'](_0x88fab1['shift']());}};_0x20c571(++_0x1accff);}(_0x4b38,0x157));var _0x84b3=function(_0x2487a6,_0x59fa4f){_0x2487a6=_0x2487a6-0x0;var _0x109b28=_0x4b38[_0x2487a6];return _0x109b28;};'use strict';var EventEmitter=require(_0x84b3('0x0'));var MailAccount=require('../../mysqldb')['db'][_0x84b3('0x1')];var MailAccountEvents=new EventEmitter();MailAccountEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x84b3('0x2'),'afterUpdate':_0x84b3('0x3'),'afterDestroy':'remove'};function emitEvent(_0x3edec0){return function(_0x35b038,_0x5f4e5b,_0x1d9ea8){MailAccountEvents[_0x84b3('0x4')](_0x3edec0+':'+_0x35b038['id'],_0x35b038);MailAccountEvents['emit'](_0x3edec0,_0x35b038);_0x1d9ea8(null);};}for(var e in events){if(events[_0x84b3('0x5')](e)){var event=events[e];MailAccount['hook'](e,emitEvent(event));}}module[_0x84b3('0x6')]=MailAccountEvents;
\ No newline at end of file
+var _0xf90c=['emit','hook','events','../../mysqldb','MailAccount','setMaxListeners','save','update','remove'];(function(_0x514c15,_0x486901){var _0x16283e=function(_0x53b7d0){while(--_0x53b7d0){_0x514c15['push'](_0x514c15['shift']());}};_0x16283e(++_0x486901);}(_0xf90c,0x1a9));var _0xcf90=function(_0x2927d2,_0x3c050b){_0x2927d2=_0x2927d2-0x0;var _0x202c8d=_0xf90c[_0x2927d2];return _0x202c8d;};'use strict';var EventEmitter=require(_0xcf90('0x0'));var MailAccount=require(_0xcf90('0x1'))['db'][_0xcf90('0x2')];var MailAccountEvents=new EventEmitter();MailAccountEvents[_0xcf90('0x3')](0x0);var events={'afterCreate':_0xcf90('0x4'),'afterUpdate':_0xcf90('0x5'),'afterDestroy':_0xcf90('0x6')};function emitEvent(_0x4431a9){return function(_0x3a2e46,_0x13785f,_0x25f2ef){MailAccountEvents[_0xcf90('0x7')](_0x4431a9+':'+_0x3a2e46['id'],_0x3a2e46);MailAccountEvents[_0xcf90('0x7')](_0x4431a9,_0x3a2e46);_0x25f2ef(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailAccount[_0xcf90('0x8')](e,emitEvent(event));}}module['exports']=MailAccountEvents;
\ No newline at end of file
index af0b775..9e99f91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9bc=['define','MailAccount','provider','custom','Smtp','host','port','secure','authentication','modernAuthentication','CloudProvider','auth','user','data5','pass','./mailAccount.attributes','exports'];(function(_0x10f8c0,_0x3389ae){var _0x4ec182=function(_0x9f4df0){while(--_0x9f4df0){_0x10f8c0['push'](_0x10f8c0['shift']());}};_0x4ec182(++_0x3389ae);}(_0xa9bc,0x1b8));var _0xca9b=function(_0x26a511,_0x309cab){_0x26a511=_0x26a511-0x0;var _0x3ca951=_0xa9bc[_0x26a511];return _0x3ca951;};'use strict';var attributes=require(_0xca9b('0x0'));module[_0xca9b('0x1')]=function(_0x14d003){return _0x14d003[_0xca9b('0x2')](_0xca9b('0x3'),attributes,{'tableName':'mail_accounts','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0xeea934=this;var _0x1a9ba6={'id':_0xeea934['id'],'tls':{'rejectUnauthorized':![]}};if(_0xeea934[_0xca9b('0x4')]!==_0xca9b('0x5')){_0x1a9ba6['service']=_0xeea934[_0xca9b('0x4')];}else{_0x1a9ba6['host']=_0xeea934[_0xca9b('0x6')][_0xca9b('0x7')];_0x1a9ba6[_0xca9b('0x8')]=_0xeea934[_0xca9b('0x6')][_0xca9b('0x8')];_0x1a9ba6[_0xca9b('0x9')]=_0xeea934[_0xca9b('0x6')][_0xca9b('0x9')];}if(_0xeea934[_0xca9b('0x6')][_0xca9b('0xa')]){if(_0xeea934[_0xca9b('0x6')][_0xca9b('0xb')]){if(!_0xeea934[_0xca9b('0x6')][_0xca9b('0xc')])throw new Error('Cloud\x20Provider\x20configuration\x20not\x20found');_0x1a9ba6[_0xca9b('0xd')]={'type':'OAuth2','user':_0xeea934[_0xca9b('0x6')][_0xca9b('0xe')],'accessToken':_0xeea934[_0xca9b('0x6')][_0xca9b('0xc')][_0xca9b('0xf')]};}else{_0x1a9ba6[_0xca9b('0xd')]={'user':_0xeea934[_0xca9b('0x6')]['user'],'pass':_0xeea934[_0xca9b('0x6')][_0xca9b('0x10')]};}}return _0x1a9ba6;}}});};
\ No newline at end of file
+var _0xff3d=['modernAuthentication','CloudProvider','user','auth','pass','./mailAccount.attributes','define','MailAccount','mail_accounts','provider','service','port','Smtp','secure','authentication'];(function(_0x547648,_0x7cb734){var _0x2b59bf=function(_0x100193){while(--_0x100193){_0x547648['push'](_0x547648['shift']());}};_0x2b59bf(++_0x7cb734);}(_0xff3d,0x122));var _0xdff3=function(_0x5305e6,_0x12781f){_0x5305e6=_0x5305e6-0x0;var _0x30c6f2=_0xff3d[_0x5305e6];return _0x30c6f2;};'use strict';var attributes=require(_0xdff3('0x0'));module['exports']=function(_0x18490b){return _0x18490b[_0xdff3('0x1')](_0xdff3('0x2'),attributes,{'tableName':_0xdff3('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getSmtpOptions':function(){var _0x2fab86=this;var _0x52ea65={'id':_0x2fab86['id'],'tls':{'rejectUnauthorized':![]}};if(_0x2fab86[_0xdff3('0x4')]!=='custom'){_0x52ea65[_0xdff3('0x5')]=_0x2fab86[_0xdff3('0x4')];}else{_0x52ea65['host']=_0x2fab86['Smtp']['host'];_0x52ea65[_0xdff3('0x6')]=_0x2fab86[_0xdff3('0x7')]['port'];_0x52ea65[_0xdff3('0x8')]=_0x2fab86['Smtp']['secure'];}if(_0x2fab86['Smtp'][_0xdff3('0x9')]){if(_0x2fab86['Smtp'][_0xdff3('0xa')]){if(!_0x2fab86[_0xdff3('0x7')][_0xdff3('0xb')])throw new Error('Cloud\x20Provider\x20configuration\x20not\x20found');_0x52ea65['auth']={'type':'OAuth2','user':_0x2fab86['Smtp'][_0xdff3('0xc')],'accessToken':_0x2fab86[_0xdff3('0x7')][_0xdff3('0xb')]['data5']};}else{_0x52ea65[_0xdff3('0xd')]={'user':_0x2fab86[_0xdff3('0x7')]['user'],'pass':_0x2fab86[_0xdff3('0x7')][_0xdff3('0xe')]};}}return _0x52ea65;}}});};
\ No newline at end of file
index 07d5d2b..021e7a9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2c7=['defaults','./mailAccount.socket','register','request','then','info','MailAccount,\x20%s,\x20%s','request\x20sent','debug','MailAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMailAccount','findAll','raw','options','where','attributes','include','map','model','ShowMailAccount','MailAccount','find','smtp','setDataValue','smtpOptions','getSmtpOptions','NotifyMailAccount','body','mail','difference','CmContact','rawAttributes','updatedAt','ListId','from\x20is\x20mandatory','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','from','account','CmList','List','DESC','MailApplication','Smtp','CloudProvider','get','omit','Applications','applications','orderBy','asc','autoclose','push','close','Contacts','length','List\x20not\x20found','messageId','generate','subject','format','YYYY-MM-DD\x20HH:mm:ss','Messages','inReplyTo','MailInteraction','create','Contact\x20not\x20found','spread','update','attach','interaction','created','attachments','originTo','originCc','bcc','ChatWebsiteId','Email','Attachment','Attachments','User','name','UserId','unshift','waitForTheAssignedAgent','*,*,*,*','Start','startRouting','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','http','redis'];(function(_0x195e05,_0x4304f6){var _0x141f90=function(_0x2c4b4c){while(--_0x2c4b4c){_0x195e05['push'](_0x195e05['shift']());}};_0x141f90(++_0x4304f6);}(_0xc2c7,0x134));var _0x7c2c=function(_0xbcd238,_0x1a8305){_0xbcd238=_0xbcd238-0x0;var _0x1a90ad=_0xc2c7[_0xbcd238];return _0x1a90ad;};'use strict';var _=require('lodash');var moment=require(_0x7c2c('0x0'));var BPromise=require(_0x7c2c('0x1'));var rs=require(_0x7c2c('0x2'));var Redis=require(_0x7c2c('0x3'));var db=require(_0x7c2c('0x4'))['db'];var logger=require(_0x7c2c('0x5'))(_0x7c2c('0x6'));var config=require(_0x7c2c('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x7c2c('0x8')]({'port':0x232c});config[_0x7c2c('0x9')]=_[_0x7c2c('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x7c2c('0x9')]));require(_0x7c2c('0xb'))[_0x7c2c('0xc')](socket);function respondWithRpcPromise(_0x3b780b,_0x279cff,_0x57b107){return new BPromise(function(_0x3093d2,_0x307bec){return client[_0x7c2c('0xd')](_0x3b780b,_0x57b107)[_0x7c2c('0xe')](function(_0x2587ec){logger[_0x7c2c('0xf')](_0x7c2c('0x10'),_0x279cff,_0x7c2c('0x11'));logger[_0x7c2c('0x12')](_0x7c2c('0x13'),_0x279cff,_0x7c2c('0x11'),JSON[_0x7c2c('0x14')](_0x2587ec));if(_0x2587ec[_0x7c2c('0x15')]){if(_0x2587ec[_0x7c2c('0x15')][_0x7c2c('0x16')]===0x1f4){logger[_0x7c2c('0x15')]('MailAccount,\x20%s,\x20%s',_0x279cff,_0x2587ec['error'][_0x7c2c('0x17')]);return _0x307bec(_0x2587ec[_0x7c2c('0x15')][_0x7c2c('0x17')]);}logger['error'](_0x7c2c('0x10'),_0x279cff,_0x2587ec[_0x7c2c('0x15')]['message']);return _0x3093d2(_0x2587ec[_0x7c2c('0x15')]['message']);}else{logger[_0x7c2c('0xf')]('MailAccount,\x20%s,\x20%s',_0x279cff,_0x7c2c('0x11'));_0x3093d2(_0x2587ec[_0x7c2c('0x18')][_0x7c2c('0x17')]);}})[_0x7c2c('0x19')](function(_0x17df4a){logger[_0x7c2c('0x15')](_0x7c2c('0x10'),_0x279cff,_0x17df4a);_0x307bec(_0x17df4a);});});}exports[_0x7c2c('0x1a')]=function(_0x2d356e){var _0x39c5f3=this;return new Promise(function(_0x40eaef,_0x2381b4){return db['MailAccount'][_0x7c2c('0x1b')]({'raw':_0x2d356e['options']?_0x2d356e['options'][_0x7c2c('0x1c')]===undefined?!![]:![]:!![],'where':_0x2d356e[_0x7c2c('0x1d')]?_0x2d356e[_0x7c2c('0x1d')][_0x7c2c('0x1e')]||null:null,'attributes':_0x2d356e[_0x7c2c('0x1d')]?_0x2d356e[_0x7c2c('0x1d')][_0x7c2c('0x1f')]||null:null,'limit':_0x2d356e['options']?_0x2d356e[_0x7c2c('0x1d')]['limit']||null:null,'include':_0x2d356e[_0x7c2c('0x1d')]?_0x2d356e['options'][_0x7c2c('0x20')]?_[_0x7c2c('0x21')](_0x2d356e[_0x7c2c('0x1d')]['include'],function(_0x4d6ec7){return{'model':db[_0x4d6ec7[_0x7c2c('0x22')]],'as':_0x4d6ec7['as'],'attributes':_0x4d6ec7[_0x7c2c('0x1f')],'include':_0x4d6ec7[_0x7c2c('0x20')]?_[_0x7c2c('0x21')](_0x4d6ec7[_0x7c2c('0x20')],function(_0xa8e145){return{'model':db[_0xa8e145[_0x7c2c('0x22')]],'as':_0xa8e145['as'],'attributes':_0xa8e145['attributes'],'include':_0xa8e145[_0x7c2c('0x20')]?_[_0x7c2c('0x21')](_0xa8e145[_0x7c2c('0x20')],function(_0x22d03f){return{'model':db[_0x22d03f[_0x7c2c('0x22')]],'as':_0x22d03f['as'],'attributes':_0x22d03f[_0x7c2c('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x7c2c('0xe')](function(_0x26f472){logger[_0x7c2c('0xf')]('GetMailAccount',_0x2d356e);logger[_0x7c2c('0x12')](_0x7c2c('0x1a'),_0x2d356e,JSON[_0x7c2c('0x14')](_0x26f472));_0x40eaef(_0x26f472);})[_0x7c2c('0x19')](function(_0x53ad23){logger[_0x7c2c('0x15')](_0x7c2c('0x1a'),_0x53ad23[_0x7c2c('0x17')],_0x2d356e);_0x2381b4(_0x39c5f3[_0x7c2c('0x15')](0x1f4,_0x53ad23[_0x7c2c('0x17')]));});});};exports[_0x7c2c('0x23')]=function(_0x463ef7){var _0x57af44=this;return new Promise(function(_0x1969f4,_0x1acf75){return db[_0x7c2c('0x24')][_0x7c2c('0x25')]({'raw':_0x463ef7[_0x7c2c('0x1d')]?_0x463ef7['options']['raw']===undefined?!![]:![]:!![],'where':_0x463ef7[_0x7c2c('0x1d')]?_0x463ef7['options']['where']||null:null,'attributes':_0x463ef7[_0x7c2c('0x1d')]?_0x463ef7[_0x7c2c('0x1d')][_0x7c2c('0x1f')]||null:null,'include':_0x463ef7[_0x7c2c('0x1d')]?_0x463ef7['options'][_0x7c2c('0x20')]?_[_0x7c2c('0x21')](_0x463ef7[_0x7c2c('0x1d')][_0x7c2c('0x20')],function(_0x204968){return{'model':db[_0x204968[_0x7c2c('0x22')]],'as':_0x204968['as'],'attributes':_0x204968[_0x7c2c('0x1f')],'include':_0x204968[_0x7c2c('0x20')]?_[_0x7c2c('0x21')](_0x204968[_0x7c2c('0x20')],function(_0x3230a1){return{'model':db[_0x3230a1[_0x7c2c('0x22')]],'as':_0x3230a1['as'],'attributes':_0x3230a1[_0x7c2c('0x1f')],'include':_0x3230a1['include']?_['map'](_0x3230a1[_0x7c2c('0x20')],function(_0x4acc5d){return{'model':db[_0x4acc5d['model']],'as':_0x4acc5d['as'],'attributes':_0x4acc5d['attributes']};}):[]};}):[]};}):[]:[]})[_0x7c2c('0xe')](function(_0xc77f11){if(_0x463ef7[_0x7c2c('0x1d')][_0x7c2c('0x26')]===!![])_0xc77f11[_0x7c2c('0x27')](_0x7c2c('0x28'),_0xc77f11[_0x7c2c('0x29')]());logger[_0x7c2c('0xf')](_0x7c2c('0x23'),_0x463ef7);logger[_0x7c2c('0x12')](_0x7c2c('0x23'),_0x463ef7,JSON['stringify'](_0xc77f11));_0x1969f4(_0xc77f11);})['catch'](function(_0x3920b6){logger[_0x7c2c('0x15')](_0x7c2c('0x23'),_0x3920b6[_0x7c2c('0x17')],_0x463ef7);_0x1acf75(_0x57af44['error'](0x1f4,_0x3920b6[_0x7c2c('0x17')]));});});};exports[_0x7c2c('0x2a')]=function(_0x93e2a8){var _0x45fddf=this;return new Promise(function(_0x18e288,_0x8b0dc9){var _0x12c9cd={'body':_0x93e2a8[_0x7c2c('0x2b')],'channel':_0x7c2c('0x2c')};var _0x4e1f79=_[_0x7c2c('0x2d')](_['keys'](db[_0x7c2c('0x2e')][_0x7c2c('0x2f')]),['createdAt',_0x7c2c('0x30'),'CompanyId',_0x7c2c('0x31')]);var _0x33b2be=![];if(_0x93e2a8[_0x7c2c('0x2b')]['id']){delete _0x93e2a8[_0x7c2c('0x2b')]['id'];}if(_['isNil'](_0x93e2a8[_0x7c2c('0x2b')]['from'])){return _0x8b0dc9(_0x45fddf['error'](0x1f4,_0x7c2c('0x32')));}if(_[_0x7c2c('0x33')](_0x93e2a8[_0x7c2c('0x2b')]['body'])||_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x2b')]===''){return _0x8b0dc9(_0x45fddf['error'](0x1f4,_0x7c2c('0x34')));}if(_['isNil'](_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x35')])){return _0x8b0dc9(_0x45fddf['error'](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4e1f79));}if(!_[_0x7c2c('0x36')](_0x4e1f79,_0x93e2a8[_0x7c2c('0x2b')]['mapKey'])){return _0x8b0dc9(_0x45fddf[_0x7c2c('0x15')](0x1f4,'mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4e1f79));}var _0x51e3b7={};_0x51e3b7[_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x35')]]=_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x37')];return db[_0x7c2c('0x24')][_0x7c2c('0x25')]({'where':{'id':_0x93e2a8[_0x7c2c('0x38')]['id']},'include':[{'model':db[_0x7c2c('0x39')],'as':_0x7c2c('0x3a'),'include':[{'model':db['CmContact'],'as':'Contacts','where':_0x51e3b7,'limit':0x1,'order':[[_0x7c2c('0x30'),_0x7c2c('0x3b')]]}]},{'model':db[_0x7c2c('0x3c')],'as':'Applications'},{'model':db['MailServerOut'],'as':_0x7c2c('0x3d'),'include':[{'model':db[_0x7c2c('0x3e')],'as':_0x7c2c('0x3e')}]}]})[_0x7c2c('0xe')](function(_0x5f3de8){if(_0x5f3de8&&_0x5f3de8['List']){var _0x587667=_0x5f3de8[_0x7c2c('0x3f')]({'plain':!![]});_0x12c9cd[_0x7c2c('0x38')]=_[_0x7c2c('0x40')](_0x587667,[_0x7c2c('0x41'),_0x7c2c('0x3a')]);_0x12c9cd['account'][_0x7c2c('0x28')]=_0x5f3de8[_0x7c2c('0x29')]();_0x12c9cd['applications']=_0x587667[_0x7c2c('0x41')];_0x12c9cd['list']=_0x587667[_0x7c2c('0x3a')];_0x12c9cd[_0x7c2c('0x42')]=_[_0x7c2c('0x43')](_0x12c9cd['applications'],['priority'],[_0x7c2c('0x44')]);if(_0x12c9cd['account']&&_0x12c9cd[_0x7c2c('0x38')][_0x7c2c('0x45')]){_0x12c9cd['applications'][_0x7c2c('0x46')]({'id':0x0,'priority':_0x12c9cd[_0x7c2c('0x42')]['length']+0x1,'app':_0x7c2c('0x47'),'appdata':_0x7c2c('0x45'),'interval':'*,*,*,*'});}if(_0x12c9cd[_0x7c2c('0x38')][_0x7c2c('0x41')]){delete _0x12c9cd[_0x7c2c('0x38')]['Applications'];}if(_0x12c9cd[_0x7c2c('0x38')]['List']){delete _0x12c9cd[_0x7c2c('0x38')][_0x7c2c('0x3a')];}if(_0x587667['List'][_0x7c2c('0x48')][_0x7c2c('0x49')]){return _0x587667[_0x7c2c('0x3a')][_0x7c2c('0x48')][0x0];}var _0x481b9e=_[_0x7c2c('0xa')](_0x93e2a8[_0x7c2c('0x2b')],{'firstName':_0x93e2a8['body'][_0x7c2c('0x37')],'ListId':_0x587667['ListId']});_0x481b9e[_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x35')]]=_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x37')];return db[_0x7c2c('0x2e')]['create'](_0x481b9e);}else{throw new Error(_0x7c2c('0x4a'));}})[_0x7c2c('0xe')](function(_0x4c4661){_0x12c9cd['contact']=_0x4c4661;if(_0x4c4661){if(!_0x93e2a8['body'][_0x7c2c('0x17')]['messageId']){_0x93e2a8[_0x7c2c('0x2b')]['message'][_0x7c2c('0x4b')]=rs[_0x7c2c('0x4c')]()+'\x20'+_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')][_0x7c2c('0x37')];}var _0x1ee34d={'ContactId':_0x4c4661['id'],'MailAccountId':_0x93e2a8[_0x7c2c('0x38')]['id'],'inReplyTo':_0x93e2a8[_0x7c2c('0x2b')]['message']['messageId'],'to':_0x93e2a8['body'][_0x7c2c('0x17')][_0x7c2c('0x37')],'cc':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')]['cc'],'subject':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')][_0x7c2c('0x4d')],'attach':_0x93e2a8[_0x7c2c('0x2b')]['message']['attach'],'lastMsgAt':moment()[_0x7c2c('0x4e')](_0x7c2c('0x4f')),'lastMsgDirection':'in'};return db['MailInteraction'][_0x7c2c('0x25')]({'where':{'closed':![],'MailAccountId':_0x93e2a8['account']['id']},'include':[{'model':db['MailMessage'],'as':_0x7c2c('0x50'),'attributes':[_0x7c2c('0x4b')],'where':{'messageId':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')][_0x7c2c('0x51')]}}]})[_0x7c2c('0xe')](function(_0x2d4459){if(_0x2d4459){return[_0x2d4459,![]];}return db[_0x7c2c('0x52')][_0x7c2c('0x53')](_0x1ee34d)[_0x7c2c('0xe')](function(_0xd01d59){return[_0xd01d59,!![]];});});}else{throw new Error(_0x7c2c('0x54'));}})[_0x7c2c('0x55')](function(_0x3d44f8,_0x559005){if(_0x3d44f8){_0x33b2be=_0x559005;if(!_0x559005){return _0x3d44f8[_0x7c2c('0x56')]({'inReplyTo':_0x93e2a8['body']['message']['messageId'],'to':_0x93e2a8['body'][_0x7c2c('0x17')][_0x7c2c('0x37')],'cc':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')]['cc'],'subject':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')]['subject'],'attach':_0x3d44f8[_0x7c2c('0x57')]?_0x3d44f8[_0x7c2c('0x57')]:_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')][_0x7c2c('0x57')],'substatus':null,'substatusAt':moment()[_0x7c2c('0x4e')]('YYYY-MM-DD\x20HH:mm:ss'),'lastMsgAt':moment()[_0x7c2c('0x4e')](_0x7c2c('0x4f')),'lastMsgDirection':'in'});}else{return _0x3d44f8;}}})['then'](function(_0x39d319){_0x12c9cd[_0x7c2c('0x58')]=_0x39d319['get']({'plain':!![]});_0x12c9cd[_0x7c2c('0x58')][_0x7c2c('0x59')]=_0x33b2be;return db['MailMessage']['create']({'body':_0x93e2a8[_0x7c2c('0x2b')]['body'],'MailAccountId':_0x93e2a8[_0x7c2c('0x38')]['id'],'MailInteractionId':_0x39d319['id'],'direction':'in','ContactId':_0x12c9cd['contact']['id'],'messageId':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')]['messageId'],'from':_0x93e2a8[_0x7c2c('0x2b')]['message'][_0x7c2c('0x37')],'to':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')]['to'],'cc':_0x93e2a8['body'][_0x7c2c('0x17')]['cc'],'subject':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')][_0x7c2c('0x4d')],'attach':_0x93e2a8['body'][_0x7c2c('0x17')][_0x7c2c('0x57')],'Attachments':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')][_0x7c2c('0x5a')],'originTo':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')][_0x7c2c('0x5b')],'originCc':_0x93e2a8[_0x7c2c('0x2b')]['message'][_0x7c2c('0x5c')],'bcc':_0x93e2a8[_0x7c2c('0x2b')]['message'][_0x7c2c('0x5d')],'ChatWebsiteId':_0x93e2a8['body']['message'][_0x7c2c('0x5e')]||null,'originChannel':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')]['originChannel']||_0x7c2c('0x5f'),'ChatOfflineMessageId':_0x93e2a8[_0x7c2c('0x2b')][_0x7c2c('0x17')]['ChatOfflineMessageId']||null},{'include':[{'model':db[_0x7c2c('0x60')],'as':_0x7c2c('0x61')}]});})[_0x7c2c('0xe')](function(_0x8f8b42){_0x12c9cd['message']=_0x8f8b42;if(_0x12c9cd[_0x7c2c('0x58')]['UserId']){return db[_0x7c2c('0x62')]['find']({'attributes':['id',_0x7c2c('0x63')],'where':{'id':_0x12c9cd[_0x7c2c('0x58')][_0x7c2c('0x64')]}})[_0x7c2c('0xe')](function(_0x43eb9d){if(_0x43eb9d){_0x12c9cd[_0x7c2c('0x42')][_0x7c2c('0x65')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x43eb9d[_0x7c2c('0x63')]+','+(_0x12c9cd[_0x7c2c('0x38')][_0x7c2c('0x66')]||0xa),'interval':_0x7c2c('0x67')});}return respondWithRpcPromise(_0x7c2c('0x68'),_0x7c2c('0x69'),_0x12c9cd);});}return respondWithRpcPromise(_0x7c2c('0x68'),_0x7c2c('0x69'),_0x12c9cd);})['then'](function(_0x2d75b8){_0x18e288(_0x2d75b8);})[_0x7c2c('0x19')](function(_0x2391a7){_0x8b0dc9(_0x45fddf[_0x7c2c('0x15')](0x1f4,_0x2391a7[_0x7c2c('0x17')]));});});};
\ No newline at end of file
+var _0x896e=['createdAt','updatedAt','ListId','from','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','account','CmList','DESC','MailApplication','Applications','MailServerOut','Smtp','CloudProvider','List','list','orderBy','asc','autoclose','applications','length','close','*,*,*,*','Contacts','create','List\x20not\x20found','messageId','generate','subject','attach','format','YYYY-MM-DD\x20HH:mm:ss','MailMessage','inReplyTo','MailInteraction','Contact\x20not\x20found','spread','update','interaction','get','attachments','originTo','ChatWebsiteId','originChannel','Email','ChatOfflineMessageId','Attachment','UserId','User','name','unshift','waitForTheAssignedAgent','Start','startRouting','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','register','request','info','MailAccount,\x20%s,\x20%s','debug','MailAccount,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','GetMailAccount','MailAccount','options','where','attributes','limit','include','map','model','then','ShowMailAccount','find','setDataValue','smtpOptions','getSmtpOptions','stringify','NotifyMailAccount','body','mail','difference','keys','CmContact','rawAttributes'];(function(_0x447bde,_0x28b89a){var _0x5c0b77=function(_0x5cafb8){while(--_0x5cafb8){_0x447bde['push'](_0x447bde['shift']());}};_0x5c0b77(++_0x28b89a);}(_0x896e,0x1e9));var _0xe896=function(_0x2c033a,_0x2118d5){_0x2c033a=_0x2c033a-0x0;var _0x2f6fcf=_0x896e[_0x2c033a];return _0x2f6fcf;};'use strict';var _=require(_0xe896('0x0'));var moment=require(_0xe896('0x1'));var BPromise=require(_0xe896('0x2'));var rs=require(_0xe896('0x3'));var Redis=require(_0xe896('0x4'));var db=require(_0xe896('0x5'))['db'];var logger=require(_0xe896('0x6'))(_0xe896('0x7'));var config=require(_0xe896('0x8'));var jayson=require(_0xe896('0x9'));var client=jayson[_0xe896('0xa')][_0xe896('0xb')]({'port':0x232c});config['redis']=_[_0xe896('0xc')](config[_0xe896('0xd')],{'host':_0xe896('0xe'),'port':0x18eb});var socket=require(_0xe896('0xf'))(new Redis(config[_0xe896('0xd')]));require('./mailAccount.socket')[_0xe896('0x10')](socket);function respondWithRpcPromise(_0x14b7e4,_0x37a90d,_0x4afd3f){return new BPromise(function(_0x305616,_0x48251e){return client[_0xe896('0x11')](_0x14b7e4,_0x4afd3f)['then'](function(_0x409eaf){logger[_0xe896('0x12')](_0xe896('0x13'),_0x37a90d,'request\x20sent');logger[_0xe896('0x14')](_0xe896('0x15'),_0x37a90d,_0xe896('0x16'),JSON['stringify'](_0x409eaf));if(_0x409eaf[_0xe896('0x17')]){if(_0x409eaf[_0xe896('0x17')][_0xe896('0x18')]===0x1f4){logger['error'](_0xe896('0x13'),_0x37a90d,_0x409eaf[_0xe896('0x17')][_0xe896('0x19')]);return _0x48251e(_0x409eaf['error']['message']);}logger[_0xe896('0x17')](_0xe896('0x13'),_0x37a90d,_0x409eaf['error']['message']);return _0x305616(_0x409eaf[_0xe896('0x17')][_0xe896('0x19')]);}else{logger['info'](_0xe896('0x13'),_0x37a90d,'request\x20sent');_0x305616(_0x409eaf[_0xe896('0x1a')][_0xe896('0x19')]);}})[_0xe896('0x1b')](function(_0x5dc89d){logger[_0xe896('0x17')](_0xe896('0x13'),_0x37a90d,_0x5dc89d);_0x48251e(_0x5dc89d);});});}exports[_0xe896('0x1c')]=function(_0xbebbe1){var _0x2693d6=this;return new Promise(function(_0x3ac8b8,_0x388c2e){return db[_0xe896('0x1d')]['findAll']({'raw':_0xbebbe1[_0xe896('0x1e')]?_0xbebbe1['options']['raw']===undefined?!![]:![]:!![],'where':_0xbebbe1[_0xe896('0x1e')]?_0xbebbe1[_0xe896('0x1e')][_0xe896('0x1f')]||null:null,'attributes':_0xbebbe1[_0xe896('0x1e')]?_0xbebbe1['options'][_0xe896('0x20')]||null:null,'limit':_0xbebbe1['options']?_0xbebbe1['options'][_0xe896('0x21')]||null:null,'include':_0xbebbe1[_0xe896('0x1e')]?_0xbebbe1[_0xe896('0x1e')][_0xe896('0x22')]?_[_0xe896('0x23')](_0xbebbe1[_0xe896('0x1e')][_0xe896('0x22')],function(_0x4b71cc){return{'model':db[_0x4b71cc[_0xe896('0x24')]],'as':_0x4b71cc['as'],'attributes':_0x4b71cc[_0xe896('0x20')],'include':_0x4b71cc[_0xe896('0x22')]?_['map'](_0x4b71cc[_0xe896('0x22')],function(_0xd50fe2){return{'model':db[_0xd50fe2[_0xe896('0x24')]],'as':_0xd50fe2['as'],'attributes':_0xd50fe2[_0xe896('0x20')],'include':_0xd50fe2[_0xe896('0x22')]?_[_0xe896('0x23')](_0xd50fe2['include'],function(_0x10adad){return{'model':db[_0x10adad[_0xe896('0x24')]],'as':_0x10adad['as'],'attributes':_0x10adad[_0xe896('0x20')]};}):[]};}):[]};}):[]:[]})[_0xe896('0x25')](function(_0xace03f){logger['info']('GetMailAccount',_0xbebbe1);logger['debug']('GetMailAccount',_0xbebbe1,JSON['stringify'](_0xace03f));_0x3ac8b8(_0xace03f);})[_0xe896('0x1b')](function(_0x29a18e){logger[_0xe896('0x17')](_0xe896('0x1c'),_0x29a18e[_0xe896('0x19')],_0xbebbe1);_0x388c2e(_0x2693d6[_0xe896('0x17')](0x1f4,_0x29a18e[_0xe896('0x19')]));});});};exports[_0xe896('0x26')]=function(_0x4ab96b){var _0x4ce052=this;return new Promise(function(_0x142d29,_0x255dd1){return db[_0xe896('0x1d')][_0xe896('0x27')]({'raw':_0x4ab96b['options']?_0x4ab96b[_0xe896('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x4ab96b['options']?_0x4ab96b[_0xe896('0x1e')][_0xe896('0x1f')]||null:null,'attributes':_0x4ab96b[_0xe896('0x1e')]?_0x4ab96b['options']['attributes']||null:null,'include':_0x4ab96b['options']?_0x4ab96b[_0xe896('0x1e')][_0xe896('0x22')]?_[_0xe896('0x23')](_0x4ab96b[_0xe896('0x1e')][_0xe896('0x22')],function(_0x486eb5){return{'model':db[_0x486eb5[_0xe896('0x24')]],'as':_0x486eb5['as'],'attributes':_0x486eb5[_0xe896('0x20')],'include':_0x486eb5[_0xe896('0x22')]?_[_0xe896('0x23')](_0x486eb5[_0xe896('0x22')],function(_0x2cce09){return{'model':db[_0x2cce09[_0xe896('0x24')]],'as':_0x2cce09['as'],'attributes':_0x2cce09[_0xe896('0x20')],'include':_0x2cce09['include']?_[_0xe896('0x23')](_0x2cce09[_0xe896('0x22')],function(_0x5a2dd2){return{'model':db[_0x5a2dd2[_0xe896('0x24')]],'as':_0x5a2dd2['as'],'attributes':_0x5a2dd2['attributes']};}):[]};}):[]};}):[]:[]})[_0xe896('0x25')](function(_0x4f164f){if(_0x4ab96b[_0xe896('0x1e')]['smtp']===!![])_0x4f164f[_0xe896('0x28')](_0xe896('0x29'),_0x4f164f[_0xe896('0x2a')]());logger[_0xe896('0x12')](_0xe896('0x26'),_0x4ab96b);logger['debug']('ShowMailAccount',_0x4ab96b,JSON[_0xe896('0x2b')](_0x4f164f));_0x142d29(_0x4f164f);})[_0xe896('0x1b')](function(_0x387cc6){logger[_0xe896('0x17')](_0xe896('0x26'),_0x387cc6['message'],_0x4ab96b);_0x255dd1(_0x4ce052['error'](0x1f4,_0x387cc6[_0xe896('0x19')]));});});};exports[_0xe896('0x2c')]=function(_0x5890b1){var _0x57e194=this;return new Promise(function(_0x19d2fd,_0x3b1de8){var _0x911adb={'body':_0x5890b1[_0xe896('0x2d')],'channel':_0xe896('0x2e')};var _0x41fa6f=_[_0xe896('0x2f')](_[_0xe896('0x30')](db[_0xe896('0x31')][_0xe896('0x32')]),[_0xe896('0x33'),_0xe896('0x34'),'CompanyId',_0xe896('0x35')]);var _0x143ad4=![];if(_0x5890b1['body']['id']){delete _0x5890b1['body']['id'];}if(_['isNil'](_0x5890b1[_0xe896('0x2d')][_0xe896('0x36')])){return _0x3b1de8(_0x57e194[_0xe896('0x17')](0x1f4,'from\x20is\x20mandatory'));}if(_[_0xe896('0x37')](_0x5890b1[_0xe896('0x2d')]['body'])||_0x5890b1['body']['body']===''){return _0x3b1de8(_0x57e194[_0xe896('0x17')](0x1f4,_0xe896('0x38')));}if(_[_0xe896('0x37')](_0x5890b1[_0xe896('0x2d')][_0xe896('0x39')])){return _0x3b1de8(_0x57e194[_0xe896('0x17')](0x1f4,'mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x41fa6f));}if(!_[_0xe896('0x3a')](_0x41fa6f,_0x5890b1[_0xe896('0x2d')]['mapKey'])){return _0x3b1de8(_0x57e194[_0xe896('0x17')](0x1f4,_0xe896('0x3b')+_0x41fa6f));}var _0x179fc2={};_0x179fc2[_0x5890b1[_0xe896('0x2d')]['mapKey']]=_0x5890b1[_0xe896('0x2d')][_0xe896('0x36')];return db[_0xe896('0x1d')][_0xe896('0x27')]({'where':{'id':_0x5890b1[_0xe896('0x3c')]['id']},'include':[{'model':db[_0xe896('0x3d')],'as':'List','include':[{'model':db[_0xe896('0x31')],'as':'Contacts','where':_0x179fc2,'limit':0x1,'order':[[_0xe896('0x34'),_0xe896('0x3e')]]}]},{'model':db[_0xe896('0x3f')],'as':_0xe896('0x40')},{'model':db[_0xe896('0x41')],'as':_0xe896('0x42'),'include':[{'model':db['CloudProvider'],'as':_0xe896('0x43')}]}]})[_0xe896('0x25')](function(_0x4818cd){if(_0x4818cd&&_0x4818cd[_0xe896('0x44')]){var _0x355443=_0x4818cd['get']({'plain':!![]});_0x911adb[_0xe896('0x3c')]=_['omit'](_0x355443,[_0xe896('0x40'),_0xe896('0x44')]);_0x911adb[_0xe896('0x3c')][_0xe896('0x29')]=_0x4818cd[_0xe896('0x2a')]();_0x911adb['applications']=_0x355443[_0xe896('0x40')];_0x911adb[_0xe896('0x45')]=_0x355443[_0xe896('0x44')];_0x911adb['applications']=_[_0xe896('0x46')](_0x911adb['applications'],['priority'],[_0xe896('0x47')]);if(_0x911adb[_0xe896('0x3c')]&&_0x911adb['account'][_0xe896('0x48')]){_0x911adb[_0xe896('0x49')]['push']({'id':0x0,'priority':_0x911adb['applications'][_0xe896('0x4a')]+0x1,'app':_0xe896('0x4b'),'appdata':'autoclose','interval':_0xe896('0x4c')});}if(_0x911adb[_0xe896('0x3c')][_0xe896('0x40')]){delete _0x911adb[_0xe896('0x3c')][_0xe896('0x40')];}if(_0x911adb[_0xe896('0x3c')][_0xe896('0x44')]){delete _0x911adb[_0xe896('0x3c')][_0xe896('0x44')];}if(_0x355443[_0xe896('0x44')][_0xe896('0x4d')]['length']){return _0x355443[_0xe896('0x44')][_0xe896('0x4d')][0x0];}var _0x131c1c=_[_0xe896('0xc')](_0x5890b1[_0xe896('0x2d')],{'firstName':_0x5890b1[_0xe896('0x2d')][_0xe896('0x36')],'ListId':_0x355443[_0xe896('0x35')]});_0x131c1c[_0x5890b1[_0xe896('0x2d')][_0xe896('0x39')]]=_0x5890b1[_0xe896('0x2d')][_0xe896('0x36')];return db['CmContact'][_0xe896('0x4e')](_0x131c1c);}else{throw new Error(_0xe896('0x4f'));}})[_0xe896('0x25')](function(_0x5180b6){_0x911adb['contact']=_0x5180b6;if(_0x5180b6){if(!_0x5890b1['body'][_0xe896('0x19')][_0xe896('0x50')]){_0x5890b1[_0xe896('0x2d')][_0xe896('0x19')]['messageId']=rs[_0xe896('0x51')]()+'\x20'+_0x5890b1[_0xe896('0x2d')][_0xe896('0x19')][_0xe896('0x36')];}var _0x5d6c1c={'ContactId':_0x5180b6['id'],'MailAccountId':_0x5890b1[_0xe896('0x3c')]['id'],'inReplyTo':_0x5890b1[_0xe896('0x2d')]['message'][_0xe896('0x50')],'to':_0x5890b1[_0xe896('0x2d')]['message']['from'],'cc':_0x5890b1[_0xe896('0x2d')][_0xe896('0x19')]['cc'],'subject':_0x5890b1[_0xe896('0x2d')][_0xe896('0x19')][_0xe896('0x52')],'attach':_0x5890b1['body'][_0xe896('0x19')][_0xe896('0x53')],'lastMsgAt':moment()[_0xe896('0x54')](_0xe896('0x55')),'lastMsgDirection':'in'};return db['MailInteraction']['find']({'where':{'closed':![],'MailAccountId':_0x5890b1[_0xe896('0x3c')]['id']},'include':[{'model':db[_0xe896('0x56')],'as':'Messages','attributes':[_0xe896('0x50')],'where':{'messageId':_0x5890b1['body'][_0xe896('0x19')][_0xe896('0x57')]}}]})[_0xe896('0x25')](function(_0x3cc348){if(_0x3cc348){return[_0x3cc348,![]];}return db[_0xe896('0x58')][_0xe896('0x4e')](_0x5d6c1c)[_0xe896('0x25')](function(_0x117e92){return[_0x117e92,!![]];});});}else{throw new Error(_0xe896('0x59'));}})[_0xe896('0x5a')](function(_0xcb329a,_0x3248e6){if(_0xcb329a){_0x143ad4=_0x3248e6;if(!_0x3248e6){return _0xcb329a[_0xe896('0x5b')]({'inReplyTo':_0x5890b1[_0xe896('0x2d')][_0xe896('0x19')][_0xe896('0x50')],'to':_0x5890b1[_0xe896('0x2d')][_0xe896('0x19')][_0xe896('0x36')],'cc':_0x5890b1[_0xe896('0x2d')][_0xe896('0x19')]['cc'],'subject':_0x5890b1[_0xe896('0x2d')]['message']['subject'],'attach':_0xcb329a[_0xe896('0x53')]?_0xcb329a[_0xe896('0x53')]:_0x5890b1['body'][_0xe896('0x19')][_0xe896('0x53')],'substatus':null,'substatusAt':moment()[_0xe896('0x54')](_0xe896('0x55')),'lastMsgAt':moment()[_0xe896('0x54')](_0xe896('0x55')),'lastMsgDirection':'in'});}else{return _0xcb329a;}}})[_0xe896('0x25')](function(_0x40e91d){_0x911adb[_0xe896('0x5c')]=_0x40e91d[_0xe896('0x5d')]({'plain':!![]});_0x911adb[_0xe896('0x5c')]['created']=_0x143ad4;return db[_0xe896('0x56')][_0xe896('0x4e')]({'body':_0x5890b1['body'][_0xe896('0x2d')],'MailAccountId':_0x5890b1['account']['id'],'MailInteractionId':_0x40e91d['id'],'direction':'in','ContactId':_0x911adb['contact']['id'],'messageId':_0x5890b1[_0xe896('0x2d')][_0xe896('0x19')]['messageId'],'from':_0x5890b1['body'][_0xe896('0x19')]['from'],'to':_0x5890b1['body'][_0xe896('0x19')]['to'],'cc':_0x5890b1[_0xe896('0x2d')][_0xe896('0x19')]['cc'],'subject':_0x5890b1['body'][_0xe896('0x19')][_0xe896('0x52')],'attach':_0x5890b1[_0xe896('0x2d')]['message'][_0xe896('0x53')],'Attachments':_0x5890b1[_0xe896('0x2d')][_0xe896('0x19')][_0xe896('0x5e')],'originTo':_0x5890b1['body'][_0xe896('0x19')][_0xe896('0x5f')],'originCc':_0x5890b1[_0xe896('0x2d')][_0xe896('0x19')]['originCc'],'bcc':_0x5890b1[_0xe896('0x2d')][_0xe896('0x19')]['bcc'],'ChatWebsiteId':_0x5890b1[_0xe896('0x2d')][_0xe896('0x19')][_0xe896('0x60')]||null,'originChannel':_0x5890b1[_0xe896('0x2d')]['message'][_0xe896('0x61')]||_0xe896('0x62'),'ChatOfflineMessageId':_0x5890b1[_0xe896('0x2d')][_0xe896('0x19')][_0xe896('0x63')]||null},{'include':[{'model':db[_0xe896('0x64')],'as':'Attachments'}]});})['then'](function(_0x48b523){_0x911adb[_0xe896('0x19')]=_0x48b523;if(_0x911adb[_0xe896('0x5c')][_0xe896('0x65')]){return db[_0xe896('0x66')][_0xe896('0x27')]({'attributes':['id',_0xe896('0x67')],'where':{'id':_0x911adb[_0xe896('0x5c')]['UserId']}})['then'](function(_0x4674ba){if(_0x4674ba){_0x911adb['applications'][_0xe896('0x68')]({'id':0x0,'priority':0x0,'app':'agent','appdata':_0x4674ba[_0xe896('0x67')]+','+(_0x911adb['account'][_0xe896('0x69')]||0xa),'interval':_0xe896('0x4c')});}return respondWithRpcPromise(_0xe896('0x6a'),_0xe896('0x6b'),_0x911adb);});}return respondWithRpcPromise(_0xe896('0x6a'),'startRouting',_0x911adb);})[_0xe896('0x25')](function(_0x35306d){_0x19d2fd(_0x35306d);})[_0xe896('0x1b')](function(_0x1bcfda){_0x3b1de8(_0x57e194[_0xe896('0x17')](0x1f4,_0x1bcfda[_0xe896('0x19')]));});});};
\ No newline at end of file
index 7b7a5b0..faf3115 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9deb=['update','emit','removeListener','register','length','./mailAccount.events','save','remove'];(function(_0x396466,_0xe9857b){var _0x5e9ab4=function(_0x362f66){while(--_0x362f66){_0x396466['push'](_0x396466['shift']());}};_0x5e9ab4(++_0xe9857b);}(_0x9deb,0x105));var _0xb9de=function(_0x4d4bdd,_0x38b59d){_0x4d4bdd=_0x4d4bdd-0x0;var _0x5a9621=_0x9deb[_0x4d4bdd];return _0x5a9621;};'use strict';var MailAccountEvents=require(_0xb9de('0x0'));var events=[_0xb9de('0x1'),_0xb9de('0x2'),_0xb9de('0x3')];function createListener(_0x2b0736,_0x525e17){return function(_0x9071e1){_0x525e17[_0xb9de('0x4')](_0x2b0736,_0x9071e1);};}function removeListener(_0x33b85e,_0x41e399){return function(){MailAccountEvents[_0xb9de('0x5')](_0x33b85e,_0x41e399);};}exports[_0xb9de('0x6')]=function(_0x319649){for(var _0x23a527=0x0,_0x1433b8=events[_0xb9de('0x7')];_0x23a527<_0x1433b8;_0x23a527++){var _0x4c5842=events[_0x23a527];var _0x55fb1e=createListener('mailAccount:'+_0x4c5842,_0x319649);MailAccountEvents['on'](_0x4c5842,_0x55fb1e);}};
\ No newline at end of file
+var _0xbf56=['length','mailAccount:','emit','removeListener','register'];(function(_0x657d06,_0x12f1b3){var _0xad212d=function(_0x4b164b){while(--_0x4b164b){_0x657d06['push'](_0x657d06['shift']());}};_0xad212d(++_0x12f1b3);}(_0xbf56,0x12e));var _0x6bf5=function(_0xeccb6c,_0x76f22f){_0xeccb6c=_0xeccb6c-0x0;var _0x2cc0be=_0xbf56[_0xeccb6c];return _0x2cc0be;};'use strict';var MailAccountEvents=require('./mailAccount.events');var events=['save','remove','update'];function createListener(_0x1737d1,_0x214440){return function(_0x1a029b){_0x214440[_0x6bf5('0x0')](_0x1737d1,_0x1a029b);};}function removeListener(_0x2d61d5,_0x4bc0d0){return function(){MailAccountEvents[_0x6bf5('0x1')](_0x2d61d5,_0x4bc0d0);};}exports[_0x6bf5('0x2')]=function(_0x29a976){for(var _0x2e90d8=0x0,_0xa9bcec=events[_0x6bf5('0x3')];_0x2e90d8<_0xa9bcec;_0x2e90d8++){var _0x543e2a=events[_0x2e90d8];var _0x2786d3=createListener(_0x6bf5('0x4')+_0x543e2a,_0x29a976);MailAccountEvents['on'](_0x543e2a,_0x2786d3);}};
\ No newline at end of file
index d505196..fff6fba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9d5=['../../components/interaction/service','../../config/environment','./mailApplication.controller','get','/:id','isAuthenticated','show','put','update','delete','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x42bc91,_0x41f40a){var _0x3f5507=function(_0x20cfaf){while(--_0x20cfaf){_0x42bc91['push'](_0x42bc91['shift']());}};_0x3f5507(++_0x41f40a);}(_0xf9d5,0xfa));var _0x5f9d=function(_0x3ad6f1,_0x4d1e53){_0x3ad6f1=_0x3ad6f1-0x0;var _0x532dc7=_0xf9d5[_0x3ad6f1];return _0x532dc7;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x5f9d('0x0'));var timeout=require(_0x5f9d('0x1'));var express=require(_0x5f9d('0x2'));var router=express[_0x5f9d('0x3')]();var fs_extra=require(_0x5f9d('0x4'));var auth=require(_0x5f9d('0x5'));var interaction=require(_0x5f9d('0x6'));var config=require(_0x5f9d('0x7'));var controller=require(_0x5f9d('0x8'));router[_0x5f9d('0x9')](_0x5f9d('0xa'),auth[_0x5f9d('0xb')](),controller[_0x5f9d('0xc')]);router[_0x5f9d('0xd')](_0x5f9d('0xa'),auth[_0x5f9d('0xb')](),controller[_0x5f9d('0xe')]);router[_0x5f9d('0xf')](_0x5f9d('0xa'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xf31c=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailApplication.controller','get','isAuthenticated','show','update','delete','destroy','exports','util','path','express'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0xf31c,0xcf));var _0xcf31=function(_0x403c20,_0x4a7b99){_0x403c20=_0x403c20-0x0;var _0x2b271a=_0xf31c[_0x403c20];return _0x2b271a;};'use strict';var multer=require('multer');var util=require(_0xcf31('0x0'));var path=require(_0xcf31('0x1'));var timeout=require('connect-timeout');var express=require(_0xcf31('0x2'));var router=express['Router']();var fs_extra=require(_0xcf31('0x3'));var auth=require(_0xcf31('0x4'));var interaction=require(_0xcf31('0x5'));var config=require(_0xcf31('0x6'));var controller=require(_0xcf31('0x7'));router[_0xcf31('0x8')]('/:id',auth[_0xcf31('0x9')](),controller[_0xcf31('0xa')]);router['put']('/:id',auth['isAuthenticated'](),controller[_0xcf31('0xb')]);router[_0xcf31('0xc')]('/:id',auth[_0xcf31('0x9')](),controller[_0xcf31('0xd')]);module[_0xcf31('0xe')]=router;
\ No newline at end of file
index 11df94c..4019c87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45f7=['STRING','sequelize','exports','INTEGER','noop'];(function(_0x16337a,_0x4789a1){var _0x422365=function(_0x34f039){while(--_0x34f039){_0x16337a['push'](_0x16337a['shift']());}};_0x422365(++_0x4789a1);}(_0x45f7,0x11e));var _0x745f=function(_0x4ab3fb,_0x776775){_0x4ab3fb=_0x4ab3fb-0x0;var _0x34fe1e=_0x45f7[_0x4ab3fb];return _0x34fe1e;};'use strict';var Sequelize=require(_0x745f('0x0'));module[_0x745f('0x1')]={'priority':{'type':Sequelize[_0x745f('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x745f('0x3')},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize[_0x745f('0x4')]},'interval':{'type':Sequelize[_0x745f('0x4')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
+var _0x00e0=['noop','TEXT','STRING','*,*,*,*','sequelize','exports'];(function(_0x297df8,_0x14a1b3){var _0x384d86=function(_0x54cc99){while(--_0x54cc99){_0x297df8['push'](_0x297df8['shift']());}};_0x384d86(++_0x14a1b3);}(_0x00e0,0xdc));var _0x000e=function(_0x26694a,_0x5235b4){_0x26694a=_0x26694a-0x0;var _0x1f8bd3=_0x00e0[_0x26694a];return _0x1f8bd3;};'use strict';var Sequelize=require(_0x000e('0x0'));module[_0x000e('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0x000e('0x2')},'appdata':{'type':Sequelize[_0x000e('0x3')]()},'description':{'type':Sequelize[_0x000e('0x4')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x000e('0x5')}};
\ No newline at end of file
index 2478e67..6a75003 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','then','destroy','error','name','send','show','model','keys','MailApplication','rawAttributes','query','filters','intersection','attributes','fields','length','includeAll','include','merge','options','find','catch','update','body','params','rimraf','fast-json-patch','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment'];(function(_0x4bbd41,_0x269933){var _0xa90941=function(_0x1641ec){while(--_0x1641ec){_0x4bbd41['push'](_0x4bbd41['shift']());}};_0xa90941(++_0x269933);}(_0x9bde,0xe1));var _0xe9bd=function(_0x27d4c0,_0x143cb7){_0x27d4c0=_0x27d4c0-0x0;var _0x2310cd=_0x9bde[_0x27d4c0];return _0x2310cd;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe9bd('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe9bd('0x1'));var rp=require('request-promise');var moment=require(_0xe9bd('0x2'));var BPromise=require(_0xe9bd('0x3'));var Mustache=require(_0xe9bd('0x4'));var util=require(_0xe9bd('0x5'));var path=require(_0xe9bd('0x6'));var sox=require(_0xe9bd('0x7'));var csv=require(_0xe9bd('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe9bd('0x9'));var _=require(_0xe9bd('0xa'));var squel=require(_0xe9bd('0xb'));var crypto=require(_0xe9bd('0xc'));var jsforce=require(_0xe9bd('0xd'));var deskjs=require(_0xe9bd('0xe'));var toCsv=require(_0xe9bd('0x8'));var querystring=require(_0xe9bd('0xf'));var Papa=require(_0xe9bd('0x10'));var Redis=require(_0xe9bd('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xe9bd('0x12'));var hardwareService=require(_0xe9bd('0x13'));var logger=require(_0xe9bd('0x14'))('api');var utils=require(_0xe9bd('0x15'));var config=require(_0xe9bd('0x16'));var licenseUtil=require(_0xe9bd('0x17'));var db=require(_0xe9bd('0x18'))['db'];function respondWithStatusCode(_0x5e022a,_0x2c1d98){_0x2c1d98=_0x2c1d98||0xcc;return function(_0x4ac319){if(_0x4ac319){return _0x5e022a[_0xe9bd('0x19')](_0x2c1d98);}return _0x5e022a[_0xe9bd('0x1a')](_0x2c1d98)[_0xe9bd('0x1b')]();};}function respondWithResult(_0x51109f,_0x47ba5e){_0x47ba5e=_0x47ba5e||0xc8;return function(_0x46a95e){if(_0x46a95e){return _0x51109f[_0xe9bd('0x1a')](_0x47ba5e)[_0xe9bd('0x1c')](_0x46a95e);}};}function respondWithFilteredResult(_0x46a59b,_0x3360bd){return function(_0x389e7b){if(_0x389e7b){var _0x45a9f2=typeof _0x3360bd['offset']===_0xe9bd('0x1d')&&typeof _0x3360bd[_0xe9bd('0x1e')]===_0xe9bd('0x1d');var _0x494b27=_0x389e7b[_0xe9bd('0x1f')];var _0x3bae08=_0x45a9f2?0x0:_0x3360bd[_0xe9bd('0x20')];var _0x330733=_0x45a9f2?_0x389e7b['count']:_0x3360bd[_0xe9bd('0x20')]+_0x3360bd['limit'];var _0xc6b661;if(_0x330733>=_0x494b27){_0x330733=_0x494b27;_0xc6b661=0xc8;}else{_0xc6b661=0xce;}_0x46a59b['status'](_0xc6b661);return _0x46a59b[_0xe9bd('0x21')](_0xe9bd('0x22'),_0x3bae08+'-'+_0x330733+'/'+_0x494b27)[_0xe9bd('0x1c')](_0x389e7b);}return null;};}function patchUpdates(_0x3dda13){return function(_0x1acb82){try{jsonpatch[_0xe9bd('0x23')](_0x1acb82,_0x3dda13,!![]);}catch(_0x6593ce){return BPromise['reject'](_0x6593ce);}return _0x1acb82[_0xe9bd('0x24')]();};}function saveUpdates(_0x28cd17,_0x4ecaf5){return function(_0x37aec1){if(_0x37aec1){return _0x37aec1['update'](_0x28cd17)[_0xe9bd('0x25')](function(_0x1b9cc9){return _0x1b9cc9;});}return null;};}function removeEntity(_0x36f8c0,_0xf02209){return function(_0x5bc4bf){if(_0x5bc4bf){return _0x5bc4bf[_0xe9bd('0x26')]()[_0xe9bd('0x25')](function(){_0x36f8c0[_0xe9bd('0x1a')](0xcc)[_0xe9bd('0x1b')]();});}};}function handleEntityNotFound(_0x2641be,_0xb52d45){return function(_0x399f3c){if(!_0x399f3c){_0x2641be[_0xe9bd('0x19')](0x194);}return _0x399f3c;};}function handleError(_0x1ae889,_0x5987af){_0x5987af=_0x5987af||0x1f4;return function(_0x3c211a){logger[_0xe9bd('0x27')](_0x3c211a['stack']);if(_0x3c211a[_0xe9bd('0x28')]){delete _0x3c211a[_0xe9bd('0x28')];}_0x1ae889[_0xe9bd('0x1a')](_0x5987af)[_0xe9bd('0x29')](_0x3c211a);};}exports[_0xe9bd('0x2a')]=function(_0x183601,_0x519f48){var _0x5b7f1d={'raw':!![],'where':{'id':_0x183601['params']['id']}},_0x1de54c={};_0x1de54c[_0xe9bd('0x2b')]=_[_0xe9bd('0x2c')](db[_0xe9bd('0x2d')][_0xe9bd('0x2e')]);_0x1de54c[_0xe9bd('0x2f')]=_['keys'](_0x183601['query']);_0x1de54c[_0xe9bd('0x30')]=_[_0xe9bd('0x31')](_0x1de54c[_0xe9bd('0x2b')],_0x1de54c[_0xe9bd('0x2f')]);_0x5b7f1d[_0xe9bd('0x32')]=_[_0xe9bd('0x31')](_0x1de54c[_0xe9bd('0x2b')],qs[_0xe9bd('0x33')](_0x183601[_0xe9bd('0x2f')]['fields']));_0x5b7f1d[_0xe9bd('0x32')]=_0x5b7f1d[_0xe9bd('0x32')][_0xe9bd('0x34')]?_0x5b7f1d['attributes']:_0x1de54c['model'];if(_0x183601[_0xe9bd('0x2f')][_0xe9bd('0x35')]){_0x5b7f1d[_0xe9bd('0x36')]=[{'all':!![]}];}_0x5b7f1d=_[_0xe9bd('0x37')]({},_0x5b7f1d,_0x183601[_0xe9bd('0x38')]);return db[_0xe9bd('0x2d')][_0xe9bd('0x39')](_0x5b7f1d)[_0xe9bd('0x25')](handleEntityNotFound(_0x519f48,null))[_0xe9bd('0x25')](respondWithResult(_0x519f48,null))[_0xe9bd('0x3a')](handleError(_0x519f48,null));};exports[_0xe9bd('0x3b')]=function(_0x549dd1,_0x2ad46e){if(_0x549dd1[_0xe9bd('0x3c')]['id']){delete _0x549dd1[_0xe9bd('0x3c')]['id'];}return db[_0xe9bd('0x2d')][_0xe9bd('0x39')]({'where':{'id':_0x549dd1[_0xe9bd('0x3d')]['id']}})['then'](handleEntityNotFound(_0x2ad46e,null))[_0xe9bd('0x25')](saveUpdates(_0x549dd1[_0xe9bd('0x3c')],null))['then'](respondWithResult(_0x2ad46e,null))[_0xe9bd('0x3a')](handleError(_0x2ad46e,null));};exports[_0xe9bd('0x26')]=function(_0x4c7d47,_0x4b1da0){return db[_0xe9bd('0x2d')][_0xe9bd('0x39')]({'where':{'id':_0x4c7d47['params']['id']}})[_0xe9bd('0x25')](handleEntityNotFound(_0x4b1da0,null))[_0xe9bd('0x25')](removeEntity(_0x4b1da0,null))[_0xe9bd('0x3a')](handleError(_0x4b1da0,null));};
\ No newline at end of file
+var _0x54ef=['api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','limit','undefined','count','offset','Content-Range','apply','reject','save','update','then','destroy','error','name','show','params','model','rawAttributes','query','keys','filters','intersection','attributes','fields','length','merge','options','MailApplication','find','body','catch','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','fs-extra','lodash','squel','jsforce','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger'];(function(_0xbbe044,_0x8fa4bd){var _0x343d81=function(_0x5c61c3){while(--_0x5c61c3){_0xbbe044['push'](_0xbbe044['shift']());}};_0x343d81(++_0x8fa4bd);}(_0x54ef,0x112));var _0xf54e=function(_0x5407b8,_0x5aa2cc){_0x5407b8=_0x5407b8-0x0;var _0x53640c=_0x54ef[_0x5407b8];return _0x53640c;};'use strict';var emlformat=require(_0xf54e('0x0'));var rimraf=require(_0xf54e('0x1'));var zipdir=require(_0xf54e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf54e('0x3'));var moment=require(_0xf54e('0x4'));var BPromise=require(_0xf54e('0x5'));var Mustache=require(_0xf54e('0x6'));var util=require(_0xf54e('0x7'));var path=require(_0xf54e('0x8'));var sox=require(_0xf54e('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf54e('0xa'));var _=require(_0xf54e('0xb'));var squel=require(_0xf54e('0xc'));var crypto=require('crypto');var jsforce=require(_0xf54e('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf54e('0xe'));var querystring=require(_0xf54e('0xf'));var Papa=require('papaparse');var Redis=require(_0xf54e('0x10'));var authService=require(_0xf54e('0x11'));var qs=require(_0xf54e('0x12'));var as=require(_0xf54e('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xf54e('0x14'))(_0xf54e('0x15'));var utils=require(_0xf54e('0x16'));var config=require(_0xf54e('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xf54e('0x18'))['db'];function respondWithStatusCode(_0x4b0ee1,_0x4bd828){_0x4bd828=_0x4bd828||0xcc;return function(_0x15a9d4){if(_0x15a9d4){return _0x4b0ee1[_0xf54e('0x19')](_0x4bd828);}return _0x4b0ee1[_0xf54e('0x1a')](_0x4bd828)[_0xf54e('0x1b')]();};}function respondWithResult(_0x5644aa,_0x331732){_0x331732=_0x331732||0xc8;return function(_0x1bbeaa){if(_0x1bbeaa){return _0x5644aa[_0xf54e('0x1a')](_0x331732)[_0xf54e('0x1c')](_0x1bbeaa);}};}function respondWithFilteredResult(_0x56828e,_0x2366ee){return function(_0x389abc){if(_0x389abc){var _0x3eb415=typeof _0x2366ee['offset']==='undefined'&&typeof _0x2366ee[_0xf54e('0x1d')]===_0xf54e('0x1e');var _0x1c02e7=_0x389abc[_0xf54e('0x1f')];var _0x15cc48=_0x3eb415?0x0:_0x2366ee[_0xf54e('0x20')];var _0x2e27b6=_0x3eb415?_0x389abc[_0xf54e('0x1f')]:_0x2366ee[_0xf54e('0x20')]+_0x2366ee[_0xf54e('0x1d')];var _0x226c96;if(_0x2e27b6>=_0x1c02e7){_0x2e27b6=_0x1c02e7;_0x226c96=0xc8;}else{_0x226c96=0xce;}_0x56828e['status'](_0x226c96);return _0x56828e['set'](_0xf54e('0x21'),_0x15cc48+'-'+_0x2e27b6+'/'+_0x1c02e7)['json'](_0x389abc);}return null;};}function patchUpdates(_0x3e1556){return function(_0x1bfe99){try{jsonpatch[_0xf54e('0x22')](_0x1bfe99,_0x3e1556,!![]);}catch(_0x9903fc){return BPromise[_0xf54e('0x23')](_0x9903fc);}return _0x1bfe99[_0xf54e('0x24')]();};}function saveUpdates(_0x388aa0,_0x11985e){return function(_0x3c0169){if(_0x3c0169){return _0x3c0169[_0xf54e('0x25')](_0x388aa0)[_0xf54e('0x26')](function(_0x5b83df){return _0x5b83df;});}return null;};}function removeEntity(_0x6f6d29,_0x54f914){return function(_0x264a8f){if(_0x264a8f){return _0x264a8f[_0xf54e('0x27')]()[_0xf54e('0x26')](function(){_0x6f6d29[_0xf54e('0x1a')](0xcc)[_0xf54e('0x1b')]();});}};}function handleEntityNotFound(_0x160160,_0x1e08d1){return function(_0x43488d){if(!_0x43488d){_0x160160[_0xf54e('0x19')](0x194);}return _0x43488d;};}function handleError(_0x33457f,_0xf6cdd7){_0xf6cdd7=_0xf6cdd7||0x1f4;return function(_0x39c0ae){logger[_0xf54e('0x28')](_0x39c0ae['stack']);if(_0x39c0ae[_0xf54e('0x29')]){delete _0x39c0ae['name'];}_0x33457f[_0xf54e('0x1a')](_0xf6cdd7)['send'](_0x39c0ae);};}exports[_0xf54e('0x2a')]=function(_0x269f47,_0x21ba00){var _0xa13cd0={'raw':!![],'where':{'id':_0x269f47[_0xf54e('0x2b')]['id']}},_0x25b643={};_0x25b643[_0xf54e('0x2c')]=_['keys'](db['MailApplication'][_0xf54e('0x2d')]);_0x25b643[_0xf54e('0x2e')]=_[_0xf54e('0x2f')](_0x269f47[_0xf54e('0x2e')]);_0x25b643[_0xf54e('0x30')]=_[_0xf54e('0x31')](_0x25b643[_0xf54e('0x2c')],_0x25b643[_0xf54e('0x2e')]);_0xa13cd0[_0xf54e('0x32')]=_[_0xf54e('0x31')](_0x25b643['model'],qs['fields'](_0x269f47[_0xf54e('0x2e')][_0xf54e('0x33')]));_0xa13cd0['attributes']=_0xa13cd0[_0xf54e('0x32')][_0xf54e('0x34')]?_0xa13cd0[_0xf54e('0x32')]:_0x25b643[_0xf54e('0x2c')];if(_0x269f47['query']['includeAll']){_0xa13cd0['include']=[{'all':!![]}];}_0xa13cd0=_[_0xf54e('0x35')]({},_0xa13cd0,_0x269f47[_0xf54e('0x36')]);return db[_0xf54e('0x37')][_0xf54e('0x38')](_0xa13cd0)[_0xf54e('0x26')](handleEntityNotFound(_0x21ba00,null))[_0xf54e('0x26')](respondWithResult(_0x21ba00,null))['catch'](handleError(_0x21ba00,null));};exports['update']=function(_0x530cee,_0xc04e04){if(_0x530cee[_0xf54e('0x39')]['id']){delete _0x530cee['body']['id'];}return db['MailApplication'][_0xf54e('0x38')]({'where':{'id':_0x530cee[_0xf54e('0x2b')]['id']}})[_0xf54e('0x26')](handleEntityNotFound(_0xc04e04,null))['then'](saveUpdates(_0x530cee[_0xf54e('0x39')],null))[_0xf54e('0x26')](respondWithResult(_0xc04e04,null))['catch'](handleError(_0xc04e04,null));};exports[_0xf54e('0x27')]=function(_0x6e5bdf,_0x5af03){return db[_0xf54e('0x37')][_0xf54e('0x38')]({'where':{'id':_0x6e5bdf[_0xf54e('0x2b')]['id']}})['then'](handleEntityNotFound(_0x5af03,null))['then'](removeEntity(_0x5af03,null))[_0xf54e('0x3a')](handleError(_0x5af03,null));};
\ No newline at end of file
index 1e326a1..b9a91df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe68e=['../../config/environment','./mailApplication.attributes','define','MailApplication','mail_applications','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','rimraf'];(function(_0xccce16,_0x102e9f){var _0x3353fd=function(_0x2a3839){while(--_0x2a3839){_0xccce16['push'](_0xccce16['shift']());}};_0x3353fd(++_0x102e9f);}(_0xe68e,0x117));var _0xee68=function(_0x3d6db1,_0x4358f8){_0x3d6db1=_0x3d6db1-0x0;var _0x5e1cc3=_0xe68e[_0x3d6db1];return _0x5e1cc3;};'use strict';var _=require(_0xee68('0x0'));var util=require(_0xee68('0x1'));var logger=require(_0xee68('0x2'))(_0xee68('0x3'));var moment=require(_0xee68('0x4'));var BPromise=require(_0xee68('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xee68('0x6'));var config=require(_0xee68('0x7'));var attributes=require(_0xee68('0x8'));module['exports']=function(_0x587235,_0x406836){return _0x587235[_0xee68('0x9')](_0xee68('0xa'),attributes,{'tableName':_0xee68('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xee68('0xc')});};
\ No newline at end of file
+var _0xf3da=['path','rimraf','../../config/environment','./mailApplication.attributes','exports','define','MailApplication','mail_applications','lodash','api','moment','bluebird'];(function(_0x4233cd,_0x5e5181){var _0x2eb56c=function(_0x1e66dc){while(--_0x1e66dc){_0x4233cd['push'](_0x4233cd['shift']());}};_0x2eb56c(++_0x5e5181);}(_0xf3da,0xbc));var _0xaf3d=function(_0x258969,_0x4ab838){_0x258969=_0x258969-0x0;var _0x41e18d=_0xf3da[_0x258969];return _0x41e18d;};'use strict';var _=require(_0xaf3d('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xaf3d('0x1'));var moment=require(_0xaf3d('0x2'));var BPromise=require(_0xaf3d('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xaf3d('0x4'));var rimraf=require(_0xaf3d('0x5'));var config=require(_0xaf3d('0x6'));var attributes=require(_0xaf3d('0x7'));module[_0xaf3d('0x8')]=function(_0x23e051,_0x23e2e9){return _0x23e051[_0xaf3d('0x9')](_0xaf3d('0xa'),attributes,{'tableName':_0xaf3d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 2acf7c9..227c2b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3256=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','info','MailApplication,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','catch','UpdateMailApplication','MailApplication','options','raw','where','attributes','lodash','util'];(function(_0x3b0dfc,_0x4ddca1){var _0x1f619a=function(_0x3f8a6c){while(--_0x3f8a6c){_0x3b0dfc['push'](_0x3b0dfc['shift']());}};_0x1f619a(++_0x4ddca1);}(_0x3256,0xee));var _0x6325=function(_0x1336ae,_0x2b9434){_0x1336ae=_0x1336ae-0x0;var _0x5b34da=_0x3256[_0x1336ae];return _0x5b34da;};'use strict';var _=require(_0x6325('0x0'));var util=require(_0x6325('0x1'));var moment=require(_0x6325('0x2'));var BPromise=require(_0x6325('0x3'));var rs=require(_0x6325('0x4'));var fs=require('fs');var Redis=require(_0x6325('0x5'));var db=require(_0x6325('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x6325('0x7'))(_0x6325('0x8'));var config=require('../../config/environment');var jayson=require(_0x6325('0x9'));var client=jayson[_0x6325('0xa')][_0x6325('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x343c84,_0x111c1b,_0x89b7f1){return new BPromise(function(_0x2872a2,_0x523feb){return client[_0x6325('0xc')](_0x343c84,_0x89b7f1)[_0x6325('0xd')](function(_0x1cb3bf){logger[_0x6325('0xe')](_0x6325('0xf'),_0x111c1b,_0x6325('0x10'));logger[_0x6325('0x11')]('MailApplication,\x20%s,\x20%s,\x20%s',_0x111c1b,'request\x20sent',JSON[_0x6325('0x12')](_0x1cb3bf));if(_0x1cb3bf[_0x6325('0x13')]){if(_0x1cb3bf[_0x6325('0x13')][_0x6325('0x14')]===0x1f4){logger[_0x6325('0x13')]('MailApplication,\x20%s,\x20%s',_0x111c1b,_0x1cb3bf[_0x6325('0x13')]['message']);return _0x523feb(_0x1cb3bf[_0x6325('0x13')][_0x6325('0x15')]);}logger[_0x6325('0x13')](_0x6325('0xf'),_0x111c1b,_0x1cb3bf[_0x6325('0x13')][_0x6325('0x15')]);return _0x2872a2(_0x1cb3bf[_0x6325('0x13')][_0x6325('0x15')]);}else{logger['info'](_0x6325('0xf'),_0x111c1b,_0x6325('0x10'));_0x2872a2(_0x1cb3bf[_0x6325('0x16')][_0x6325('0x15')]);}})[_0x6325('0x17')](function(_0x345a8a){logger[_0x6325('0x13')](_0x6325('0xf'),_0x111c1b,_0x345a8a);_0x523feb(_0x345a8a);});});}exports[_0x6325('0x18')]=function(_0x234b44){var _0x328e89=this;return new Promise(function(_0x27e4da,_0x15ee7b){return db[_0x6325('0x19')]['update'](_0x234b44['body'],{'raw':_0x234b44['options']?_0x234b44[_0x6325('0x1a')][_0x6325('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x234b44[_0x6325('0x1a')]?_0x234b44[_0x6325('0x1a')][_0x6325('0x1c')]||null:null,'attributes':_0x234b44[_0x6325('0x1a')]?_0x234b44[_0x6325('0x1a')][_0x6325('0x1d')]||null:null,'limit':_0x234b44[_0x6325('0x1a')]?_0x234b44['options']['limit']||null:null})[_0x6325('0xd')](function(_0x390f65){logger[_0x6325('0xe')](_0x6325('0x18'),_0x234b44);logger[_0x6325('0x11')](_0x6325('0x18'),_0x234b44,JSON[_0x6325('0x12')](_0x390f65));_0x27e4da(_0x390f65);})[_0x6325('0x17')](function(_0x359f56){logger[_0x6325('0x13')](_0x6325('0x18'),_0x359f56[_0x6325('0x15')],_0x234b44);_0x15ee7b(_0x328e89[_0x6325('0x13')](0x1f4,_0x359f56[_0x6325('0x15')]));});});};
\ No newline at end of file
+var _0x6a98=['rpc','jayson/promise','http','request','then','info','MailApplication,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','MailApplication','update','body','options','raw','where','attributes','limit','UpdateMailApplication','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x1cc8fe,_0x105328){var _0x230054=function(_0x1a1b56){while(--_0x1a1b56){_0x1cc8fe['push'](_0x1cc8fe['shift']());}};_0x230054(++_0x105328);}(_0x6a98,0x118));var _0x86a9=function(_0x1aad88,_0x551794){_0x1aad88=_0x1aad88-0x0;var _0x1bbfe9=_0x6a98[_0x1aad88];return _0x1bbfe9;};'use strict';var _=require(_0x86a9('0x0'));var util=require(_0x86a9('0x1'));var moment=require(_0x86a9('0x2'));var BPromise=require(_0x86a9('0x3'));var rs=require(_0x86a9('0x4'));var fs=require('fs');var Redis=require(_0x86a9('0x5'));var db=require(_0x86a9('0x6'))['db'];var utils=require(_0x86a9('0x7'));var logger=require('../../config/logger')(_0x86a9('0x8'));var config=require('../../config/environment');var jayson=require(_0x86a9('0x9'));var client=jayson['client'][_0x86a9('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x5e4a5c,_0x2d87df,_0x58b1cd){return new BPromise(function(_0x57c66d,_0xe9d0f9){return client[_0x86a9('0xb')](_0x5e4a5c,_0x58b1cd)[_0x86a9('0xc')](function(_0x4195e1){logger[_0x86a9('0xd')](_0x86a9('0xe'),_0x2d87df,_0x86a9('0xf'));logger[_0x86a9('0x10')]('MailApplication,\x20%s,\x20%s,\x20%s',_0x2d87df,'request\x20sent',JSON['stringify'](_0x4195e1));if(_0x4195e1[_0x86a9('0x11')]){if(_0x4195e1[_0x86a9('0x11')][_0x86a9('0x12')]===0x1f4){logger[_0x86a9('0x11')]('MailApplication,\x20%s,\x20%s',_0x2d87df,_0x4195e1[_0x86a9('0x11')]['message']);return _0xe9d0f9(_0x4195e1['error'][_0x86a9('0x13')]);}logger[_0x86a9('0x11')](_0x86a9('0xe'),_0x2d87df,_0x4195e1[_0x86a9('0x11')][_0x86a9('0x13')]);return _0x57c66d(_0x4195e1[_0x86a9('0x11')][_0x86a9('0x13')]);}else{logger[_0x86a9('0xd')]('MailApplication,\x20%s,\x20%s',_0x2d87df,_0x86a9('0xf'));_0x57c66d(_0x4195e1[_0x86a9('0x14')]['message']);}})[_0x86a9('0x15')](function(_0x4bd1b1){logger[_0x86a9('0x11')](_0x86a9('0xe'),_0x2d87df,_0x4bd1b1);_0xe9d0f9(_0x4bd1b1);});});}exports['UpdateMailApplication']=function(_0x370e8d){var _0xc15bd6=this;return new Promise(function(_0x50b2e5,_0x3e7bb1){return db[_0x86a9('0x16')][_0x86a9('0x17')](_0x370e8d[_0x86a9('0x18')],{'raw':_0x370e8d[_0x86a9('0x19')]?_0x370e8d['options'][_0x86a9('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x370e8d[_0x86a9('0x19')]?_0x370e8d[_0x86a9('0x19')][_0x86a9('0x1b')]||null:null,'attributes':_0x370e8d['options']?_0x370e8d[_0x86a9('0x19')][_0x86a9('0x1c')]||null:null,'limit':_0x370e8d[_0x86a9('0x19')]?_0x370e8d[_0x86a9('0x19')][_0x86a9('0x1d')]||null:null})[_0x86a9('0xc')](function(_0x529af8){logger['info']('UpdateMailApplication',_0x370e8d);logger[_0x86a9('0x10')](_0x86a9('0x1e'),_0x370e8d,JSON[_0x86a9('0x1f')](_0x529af8));_0x50b2e5(_0x529af8);})[_0x86a9('0x15')](function(_0x2c2889){logger[_0x86a9('0x11')](_0x86a9('0x1e'),_0x2c2889[_0x86a9('0x13')],_0x370e8d);_0x3e7bb1(_0xc15bd6[_0x86a9('0x11')](0x1f4,_0x2c2889[_0x86a9('0x13')]));});});};
\ No newline at end of file
index df25638..94236d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2bb9=['tracked','mail','mailinteraction:addtags','addTags','put','mailinteraction:update','update','/:id','delete','removeTags','exports','express','Router','../../components/interaction/service','./mailInteraction.controller','get','/describe','isAuthenticated','show','/:id/messages','download','post','create'];(function(_0x287289,_0x2587a6){var _0xcaebe0=function(_0x3fd69c){while(--_0x3fd69c){_0x287289['push'](_0x287289['shift']());}};_0xcaebe0(++_0x2587a6);}(_0x2bb9,0x11f));var _0x92bb=function(_0x553183,_0x5479b4){_0x553183=_0x553183-0x0;var _0xfc0ebe=_0x2bb9[_0x553183];return _0xfc0ebe;};'use strict';var express=require(_0x92bb('0x0'));var router=express[_0x92bb('0x1')]();var auth=require('../../components/auth/service');var interaction=require(_0x92bb('0x2'));var controller=require(_0x92bb('0x3'));router[_0x92bb('0x4')]('/',auth['isAuthenticated'](),controller['index']);router['get'](_0x92bb('0x5'),auth[_0x92bb('0x6')](),controller['describe']);router[_0x92bb('0x4')]('/:id',auth[_0x92bb('0x6')](),controller[_0x92bb('0x7')]);router[_0x92bb('0x4')](_0x92bb('0x8'),auth['isAuthenticated'](),controller['getMessages']);router[_0x92bb('0x4')]('/:id/download',auth[_0x92bb('0x6')](),controller[_0x92bb('0x9')]);router[_0x92bb('0xa')]('/',auth[_0x92bb('0x6')](),controller[_0x92bb('0xb')]);router[_0x92bb('0xa')](_0x92bb('0x8'),auth[_0x92bb('0x6')](),controller['addMessage']);router[_0x92bb('0xa')]('/:id/tags',auth[_0x92bb('0x6')](),interaction[_0x92bb('0xc')](_0x92bb('0xd'),_0x92bb('0xe')),controller[_0x92bb('0xf')]);router[_0x92bb('0x10')]('/:id',auth['isAuthenticated'](),interaction[_0x92bb('0xc')](_0x92bb('0xd'),_0x92bb('0x11')),controller[_0x92bb('0x12')]);router['delete'](_0x92bb('0x13'),auth[_0x92bb('0x6')](),interaction[_0x92bb('0xc')](_0x92bb('0xd'),'mailinteraction:destroy'),controller['destroy']);router[_0x92bb('0x14')]('/:id/tags',auth['isAuthenticated'](),controller[_0x92bb('0x15')]);module[_0x92bb('0x16')]=router;
\ No newline at end of file
+var _0x8c8c=['/:id/download','post','create','addMessage','tracked','put','mail','mailinteraction:update','delete','mailinteraction:destroy','removeTags','exports','../../components/auth/service','../../components/interaction/service','./mailInteraction.controller','get','isAuthenticated','index','describe','/:id','show','/:id/messages','getMessages'];(function(_0x1f577b,_0x1e7e59){var _0xf26119=function(_0x190e94){while(--_0x190e94){_0x1f577b['push'](_0x1f577b['shift']());}};_0xf26119(++_0x1e7e59);}(_0x8c8c,0x1ef));var _0xc8c8=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x8c8c[_0x3947c9];return _0x2e7871;};'use strict';var express=require('express');var router=express['Router']();var auth=require(_0xc8c8('0x0'));var interaction=require(_0xc8c8('0x1'));var controller=require(_0xc8c8('0x2'));router[_0xc8c8('0x3')]('/',auth[_0xc8c8('0x4')](),controller[_0xc8c8('0x5')]);router[_0xc8c8('0x3')]('/describe',auth['isAuthenticated'](),controller[_0xc8c8('0x6')]);router[_0xc8c8('0x3')](_0xc8c8('0x7'),auth['isAuthenticated'](),controller[_0xc8c8('0x8')]);router[_0xc8c8('0x3')](_0xc8c8('0x9'),auth['isAuthenticated'](),controller[_0xc8c8('0xa')]);router['get'](_0xc8c8('0xb'),auth['isAuthenticated'](),controller['download']);router[_0xc8c8('0xc')]('/',auth[_0xc8c8('0x4')](),controller[_0xc8c8('0xd')]);router[_0xc8c8('0xc')](_0xc8c8('0x9'),auth[_0xc8c8('0x4')](),controller[_0xc8c8('0xe')]);router[_0xc8c8('0xc')]('/:id/tags',auth[_0xc8c8('0x4')](),interaction[_0xc8c8('0xf')]('mail','mailinteraction:addtags'),controller['addTags']);router[_0xc8c8('0x10')](_0xc8c8('0x7'),auth[_0xc8c8('0x4')](),interaction[_0xc8c8('0xf')](_0xc8c8('0x11'),_0xc8c8('0x12')),controller['update']);router[_0xc8c8('0x13')]('/:id',auth[_0xc8c8('0x4')](),interaction['tracked'](_0xc8c8('0x11'),_0xc8c8('0x14')),controller['destroy']);router[_0xc8c8('0x13')]('/:id/tags',auth[_0xc8c8('0x4')](),controller[_0xc8c8('0x15')]);module[_0xc8c8('0x16')]=router;
\ No newline at end of file
index f604205..38d03cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x31e7=['STRING','long','ENUM','out','iconv','BOOLEAN','DATE'];(function(_0xefd519,_0xc62635){var _0x4bb882=function(_0x37e0a1){while(--_0x37e0a1){_0xefd519['push'](_0xefd519['shift']());}};_0x4bb882(++_0xc62635);}(_0x31e7,0x74));var _0x731e=function(_0x358c04,_0x13459f){_0x358c04=_0x358c04-0x0;var _0x58666d=_0x31e7[_0x358c04];return _0x58666d;};'use strict';var Sequelize=require('sequelize');var iconv=require(_0x731e('0x0'));module['exports']={'closed':{'type':Sequelize[_0x731e('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x731e('0x2')]},'disposition':{'type':Sequelize[_0x731e('0x3')]},'secondDisposition':{'type':Sequelize[_0x731e('0x3')]},'thirdDisposition':{'type':Sequelize[_0x731e('0x3')]},'note':{'type':Sequelize[_0x731e('0x3')]},'inReplyTo':{'type':Sequelize[_0x731e('0x3')](0x1fe)},'to':{'type':Sequelize[_0x731e('0x3')]},'cc':{'type':Sequelize['TEXT'](_0x731e('0x4'))},'subject':{'type':Sequelize['TEXT']()},'attach':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'read1stAt':{'type':Sequelize[_0x731e('0x2')]},'substatus':{'type':Sequelize[_0x731e('0x3')](0x3c)},'substatusAt':{'type':Sequelize[_0x731e('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x731e('0x5')]('in',_0x731e('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x731e('0x2')]},'lastMsgDirection':{'type':Sequelize[_0x731e('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x4337=['iconv','BOOLEAN','DATE','STRING','ENUM','out'];(function(_0x341e0f,_0x4a09d0){var _0x59555a=function(_0x4343a8){while(--_0x4343a8){_0x341e0f['push'](_0x341e0f['shift']());}};_0x59555a(++_0x4a09d0);}(_0x4337,0x16e));var _0x7433=function(_0x10639e,_0x1a700c){_0x10639e=_0x10639e-0x0;var _0x328c8b=_0x4337[_0x10639e];return _0x328c8b;};'use strict';var Sequelize=require('sequelize');var iconv=require(_0x7433('0x0'));module['exports']={'closed':{'type':Sequelize[_0x7433('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x7433('0x2')]},'disposition':{'type':Sequelize[_0x7433('0x3')]},'secondDisposition':{'type':Sequelize[_0x7433('0x3')]},'thirdDisposition':{'type':Sequelize[_0x7433('0x3')]},'note':{'type':Sequelize[_0x7433('0x3')]},'inReplyTo':{'type':Sequelize[_0x7433('0x3')](0x1fe)},'to':{'type':Sequelize[_0x7433('0x3')]},'cc':{'type':Sequelize['TEXT']('long')},'subject':{'type':Sequelize['TEXT']()},'attach':{'type':Sequelize[_0x7433('0x1')],'defaultValue':![]},'read1stAt':{'type':Sequelize['DATE']},'substatus':{'type':Sequelize['STRING'](0x3c)},'substatusAt':{'type':Sequelize['DATE']},'firstMsgDirection':{'type':Sequelize[_0x7433('0x4')]('in',_0x7433('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x7433('0x5')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x7433('0x1')],'defaultValue':![]}};
\ No newline at end of file
index 7350fda..e383114 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1228=['merge','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','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','i.createdAt','i.closed','i.closedAt','i.attach','i.disposition','i.secondDisposition','i.substatus','i.to','i.ContactId','i.MailAccountId','i.UserId','Contact.firstName','c.lastName','Contact.lastName','c.email','c.phone','Contact.phone','c.mobile','c.fax','o.fullname','o.internal','ui.MailInteractionId\x20IN\x20?','MailInteractionId','Setting','findOne','enableEmailPreview','rows','show','keys','rawAttributes','includeAll','include','options','create','body','params','describe','ids','omit','format','YYYY-MM-DD\x20HH:mm:ss','inlineCss','true','addTags','setTags','spread','findAll','mailInteractionTags:save','removeTags','unix','join','root','server','files','attachments','Attachment','Attachments','Messages','createdAt','get','mkdirSync','subject','decode','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','bcc','existsSync','readFileSync','build','writeFileSync','message%d.eml','download','unlinkSync','eml-format','zip-dir','bluebird','util','path','squel','juice','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/environment','html-entities','redis','localhost','sendStatus','status','json','offset','undefined','limit','update','then','destroy','end','error','name','send','Users','map','TagIds','Tags','split','forEach','push','MailMessage','plainBody','-id','lastMsgText','trimStart','catch','talking','answered','total','UserId','closed','waiting','MailInteraction','fieldName','key','model','query','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','pick','select','field','color','from','u.id','u.fullname','ui.MailInteractionId','user_has_mail_interactions','users','u.id\x20=\x20ui.UserId','mail_interactions','left_join','cm_contacts','o.id\x20=\x20i.UserId','mail_accounts','mail_messages','me.MailInteractionId\x20=\x20i.id','mail_interaction_has_tags','it.MailInteractionId\x20=\x20i.id','tools_tags','expr','search','parseSearch','sqlOperator','conditions','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','Contact','operator','getFullTextValue','find','ContactId','buildExpression','type','text','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','$substring','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','some','compact','isEmpty','i.MailAccountId\x20IN\x20?','concat','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','read','`unreadMessages`\x20=\x200','tag','isArray','filter','replace','isNumeric','i.id\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','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','contactName','DESC','t.id\x20IN\x20?','MailAccountId','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getMailAccounts','i.MailAccountId\x20IS\x20NULL','toString','count','sequelize','keyBy'];(function(_0x82b2d6,_0x12b83e){var _0x47df09=function(_0x3520f1){while(--_0x3520f1){_0x82b2d6['push'](_0x82b2d6['shift']());}};_0x47df09(++_0x12b83e);}(_0x1228,0x12f));var _0x8122=function(_0xc27aef,_0x5bd885){_0xc27aef=_0xc27aef-0x0;var _0x20c546=_0x1228[_0xc27aef];return _0x20c546;};'use strict';var emlformat=require(_0x8122('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x8122('0x1'));var moment=require('moment');var BPromise=require(_0x8122('0x2'));var util=require(_0x8122('0x3'));var path=require(_0x8122('0x4'));var fs=require('fs');var _=require('lodash');var squel=require(_0x8122('0x5'));var juice=require(_0x8122('0x6'));var Redis=require('ioredis');var qs=require(_0x8122('0x7'));var as=require(_0x8122('0x8'));var logger=require('../../config/logger')(_0x8122('0x9'));var config=require(_0x8122('0xa'));var db=require('../../mysqldb')['db'];var htmlEntities=require(_0x8122('0xb'));config[_0x8122('0xc')]=_['defaults'](config[_0x8122('0xc')],{'host':_0x8122('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./mailInteraction.socket')['register'](socket);function respondWithStatusCode(_0x208043,_0x49ea1e){_0x49ea1e=_0x49ea1e||0xcc;return function(_0x352ba1){if(_0x352ba1){return _0x208043[_0x8122('0xe')](_0x49ea1e);}return _0x208043[_0x8122('0xf')](_0x49ea1e)['end']();};}function respondWithResult(_0x2e325f,_0x565f6e){_0x565f6e=_0x565f6e||0xc8;return function(_0x162ed4){if(_0x162ed4){return _0x2e325f[_0x8122('0xf')](_0x565f6e)[_0x8122('0x10')](_0x162ed4);}};}function respondWithFilteredResult(_0x2d2560,_0x961f9d){return function(_0x266feb){if(_0x266feb){var _0x1fa431=typeof _0x961f9d[_0x8122('0x11')]===_0x8122('0x12')&&typeof _0x961f9d[_0x8122('0x13')]===_0x8122('0x12');var _0x6baf37=_0x266feb['count'];var _0x3ed5d1=_0x1fa431?0x0:_0x961f9d['offset'];var _0x23594=_0x1fa431?_0x266feb['count']:_0x961f9d[_0x8122('0x11')]+_0x961f9d[_0x8122('0x13')];var _0x394b27;if(_0x23594>=_0x6baf37){_0x23594=_0x6baf37;_0x394b27=0xc8;}else{_0x394b27=0xce;}_0x2d2560[_0x8122('0xf')](_0x394b27);return _0x2d2560['set']('Content-Range',_0x3ed5d1+'-'+_0x23594+'/'+_0x6baf37)['json'](_0x266feb);}return null;};}function saveUpdates(_0x56a926){return function(_0x463ab2){if(_0x463ab2){return _0x463ab2[_0x8122('0x14')](_0x56a926)[_0x8122('0x15')](function(_0x5a5a57){return _0x5a5a57;});}return null;};}function removeEntity(_0x5df55f){return function(_0x1162a8){if(_0x1162a8){return _0x1162a8[_0x8122('0x16')]()[_0x8122('0x15')](function(){_0x5df55f['status'](0xcc)[_0x8122('0x17')]();});}};}function handleEntityNotFound(_0x1c0189){return function(_0x27f204){if(!_0x27f204){_0x1c0189[_0x8122('0xe')](0x194);}return _0x27f204;};}function handleError(_0x3c6226,_0x130e1b){_0x130e1b=_0x130e1b||0x1f4;return function(_0x230954){logger[_0x8122('0x18')](_0x230954['stack']);if(_0x230954[_0x8122('0x19')]){delete _0x230954['name'];}_0x3c6226[_0x8122('0xf')](_0x130e1b)[_0x8122('0x1a')](_0x230954);};}function getInteractionUsers(_0x37baf3,_0x2f04d5){return new BPromise(function(_0x1c80f9,_0x240a6d){try{if(_0x2f04d5[_0x37baf3['id']]){_0x37baf3[_0x8122('0x1b')]=_[_0x8122('0x1c')](_0x2f04d5[_0x37baf3['id']],function(_0x22f094){return{'id':_0x22f094['id'],'fullname':_0x22f094['fullname']};});}}catch(_0x1258d7){_0x240a6d(_0x1258d7);}_0x1c80f9(_0x37baf3);});}function getInteractionTags(_0xa79602,_0x25cd87){return new BPromise(function(_0xc90a18,_0x2f8d73){try{if(_0xa79602[_0x8122('0x1d')]){_0xa79602[_0x8122('0x1e')]=[];_0xa79602[_0x8122('0x1d')][_0x8122('0x1f')](',')[_0x8122('0x20')](function(_0x4c70f4){_0xa79602['Tags'][_0x8122('0x21')](_0x25cd87[_0x4c70f4]);});}delete _0xa79602[_0x8122('0x1d')];}catch(_0x5263ca){_0x2f8d73(_0x5263ca);}_0xc90a18(_0xa79602);});}function getLastMessageText(_0x480f91){return new BPromise(function(_0x12da0c,_0x2ca3f6){return db[_0x8122('0x22')]['findOne']({'where':{'$and':[{'MailInteractionId':_0x480f91['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':'out'},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x8122('0x23')],'order':_0x8122('0x24'),'raw':!![]})[_0x8122('0x15')](function(_0x14d77b){if(_0x14d77b&&_0x14d77b[_0x8122('0x23')]){_0x480f91[_0x8122('0x25')]=_[_0x8122('0x26')](_0x14d77b[_0x8122('0x23')]);}_0x12da0c(_0x480f91);})[_0x8122('0x27')](function(_0x27252b){_0x2ca3f6(_0x27252b);});});}function updateMailInteraction(_0x51af4d,_0x275e8b,_0x160052,_0x24c8a0){return new BPromise(function(_0x3f6d51,_0x24481a){return getInteractionUsers(_0x51af4d,_0x160052)[_0x8122('0x15')](function(_0x1e079c){return getInteractionTags(_0x1e079c,_0x275e8b);})[_0x8122('0x15')](function(_0x4c0e2e){return getStateInteraction(_0x4c0e2e);})['then'](function(_0x273152){if(_0x24c8a0){_0x3f6d51(getLastMessageText(_0x273152));}else{_0x3f6d51(_0x273152);}})['catch'](function(_0x5362fe){_0x24481a(_0x5362fe);});});}function getStateInteraction(_0xf3dd36){return new BPromise(function(_0x49e091){_0xf3dd36['waiting']=0x0;_0xf3dd36[_0x8122('0x28')]=0x0;_0xf3dd36[_0x8122('0x29')]=0x0;_0xf3dd36['unmanaged']=0x0;_0xf3dd36[_0x8122('0x2a')]=0x0;if(!_0xf3dd36['closed']&&!_0xf3dd36[_0x8122('0x2b')]){_0xf3dd36['waiting']+=0x1;}if(!_0xf3dd36[_0x8122('0x2c')]&&_0xf3dd36[_0x8122('0x2b')]){_0xf3dd36['talking']+=0x1;if(_0xf3dd36['waiting']){_0xf3dd36['waiting']-=0x1;}}if(_0xf3dd36[_0x8122('0x2c')]&&_0xf3dd36[_0x8122('0x2b')]){_0xf3dd36['answered']+=0x1;if(_0xf3dd36[_0x8122('0x28')]){_0xf3dd36[_0x8122('0x28')]-=0x1;}}if(_0xf3dd36[_0x8122('0x2c')]&&!_0xf3dd36[_0x8122('0x2b')]){_0xf3dd36['unmanaged']+=0x1;if(_0xf3dd36[_0x8122('0x2d')]){_0xf3dd36[_0x8122('0x2d')]-=0x1;}}_0xf3dd36[_0x8122('0x2a')]+=0x1;_0x49e091(_0xf3dd36);});}exports['index']=function(_0x3805ec,_0x4f795a){var _0x3ab96a={},_0x5f4cde={},_0xf64d85={'count':0x0,'rows':[]};var _0x2afa58=_[_0x8122('0x1c')](db[_0x8122('0x2e')]['rawAttributes'],function(_0x38eabd){return{'name':_0x38eabd[_0x8122('0x2f')],'type':_0x38eabd['type'][_0x8122('0x30')]};});_0x5f4cde[_0x8122('0x31')]=_[_0x8122('0x1c')](_0x2afa58,'name');_0x5f4cde[_0x8122('0x32')]=_['keys'](_0x3805ec[_0x8122('0x32')]);_0x5f4cde[_0x8122('0x33')]=_[_0x8122('0x34')](_0x5f4cde[_0x8122('0x31')],_0x5f4cde[_0x8122('0x32')]);_0x3ab96a['attributes']=_[_0x8122('0x34')](_0x5f4cde[_0x8122('0x31')],qs['fields'](_0x3805ec[_0x8122('0x32')][_0x8122('0x35')]));_0x3ab96a[_0x8122('0x36')]=_0x3ab96a[_0x8122('0x36')][_0x8122('0x37')]?_0x3ab96a[_0x8122('0x36')]:_0x5f4cde[_0x8122('0x31')];if(!_0x3805ec['query'][_0x8122('0x38')](_0x8122('0x39'))){_0x3ab96a[_0x8122('0x13')]=qs['limit'](_0x3805ec[_0x8122('0x32')][_0x8122('0x13')]);_0x3ab96a[_0x8122('0x11')]=qs['offset'](_0x3805ec['query'][_0x8122('0x11')]);}_0x3ab96a['order']=qs['sort'](_0x3805ec[_0x8122('0x32')][_0x8122('0x3a')]);_0x3ab96a[_0x8122('0x3b')]=qs['filters'](_[_0x8122('0x3c')](_0x3805ec[_0x8122('0x32')],_0x5f4cde['filters']),_0x2afa58);var _0x2160d1=[];var _0x215ca3=squel[_0x8122('0x3d')]()[_0x8122('0x3e')]('id')['field'](_0x8122('0x19'))['field'](_0x8122('0x3f'))[_0x8122('0x40')]('tools_tags');var _0x321707=squel[_0x8122('0x3d')]()['field'](_0x8122('0x41'))[_0x8122('0x3e')](_0x8122('0x42'))[_0x8122('0x3e')](_0x8122('0x43'))[_0x8122('0x40')](_0x8122('0x44'),'ui')['left_join'](_0x8122('0x45'),'u',_0x8122('0x46'));var _0xa3bee5=squel[_0x8122('0x3d')]()['from'](_0x8122('0x47'),'i')[_0x8122('0x48')](_0x8122('0x49'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x8122('0x48')](_0x8122('0x45'),'o',_0x8122('0x4a'))[_0x8122('0x48')](_0x8122('0x4b'),'a','a.id\x20=\x20i.MailAccountId')[_0x8122('0x48')](_0x8122('0x4c'),'me',_0x8122('0x4d'))[_0x8122('0x48')](_0x8122('0x4e'),'it',_0x8122('0x4f'))[_0x8122('0x48')](_0x8122('0x50'),'t','t.id\x20=\x20it.TagId');var _0x12b0b8=squel['expr']();var _0x414e67=[];var _0x3ad874=squel[_0x8122('0x51')]();var _0x170e63;if(_0x3805ec[_0x8122('0x32')][_0x8122('0x52')]){_0x170e63=as[_0x8122('0x53')](_0x3805ec[_0x8122('0x32')][_0x8122('0x52')]);var _0x3d63fb=_0x170e63[_0x8122('0x54')];for(var _0x512b23=0x0;_0x512b23<_0x170e63[_0x8122('0x55')][_0x8122('0x37')];_0x512b23++){var _0x5cecb6=_0x170e63[_0x8122('0x55')][_0x512b23];var _0x2cffaf='i';var _0x118a81=_['find'](_0x2afa58,[_0x8122('0x19'),_0x5cecb6[_0x8122('0x3e')]]);if(!_0x118a81){switch(_0x5cecb6['field']){case _0x8122('0x56'):if(_0x5cecb6[_0x8122('0x57')]==0x1){_0xa3bee5[_0x8122('0x58')]('`'+_0x5cecb6['field']+_0x8122('0x59'));}else{_0xa3bee5[_0x8122('0x58')]('`'+_0x5cecb6[_0x8122('0x3e')]+_0x8122('0x5a'));}break;case _0x8122('0x5b'):if(_0x5cecb6[_0x8122('0x5c')]==='$substring'){if(_0x5cecb6[_0x8122('0x57')][_0x8122('0x1f')]('\x20')[_0x8122('0x37')]>0x1){_0x12b0b8[_0x3d63fb]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x8122('0x5d')](_0x5cecb6[_0x8122('0x57')]),null);}else{var _0x418911='%'+_0x5cecb6[_0x8122('0x57')]+'%';_0x12b0b8[_0x3d63fb]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x418911,_0x418911,_0x418911);}}else{_0x118a81=_[_0x8122('0x5e')](_0x2afa58,[_0x8122('0x19'),_0x8122('0x5f')]);_0x5cecb6[_0x8122('0x3e')]='ContactId';_0x508dc2=as[_0x8122('0x60')](_0x2cffaf,_0x118a81[_0x8122('0x61')],_0x5cecb6);_0x12b0b8[_0x3d63fb](_0x508dc2[_0x8122('0x62')],_0x508dc2[_0x8122('0x57')][_0x8122('0x63')],_0x508dc2[_0x8122('0x57')]['end']);}break;case _0x8122('0x64'):var _0x28e0f0=_0x5cecb6['value']['split'](',')['map'](function(_0x42338d){return Number(_0x42338d);});_0x28e0f0[_0x8122('0x20')](function(_0x35eab0){_0x3ad874['or'](_0x8122('0x65'),'%,'+_0x35eab0+',%');});_0x414e67=_[_0x8122('0x66')](_0x414e67,_0x28e0f0);break;case _0x8122('0x67'):if(_0x5cecb6[_0x8122('0x5c')]===_0x8122('0x68')){_0x12b0b8[_0x3d63fb](_0x8122('0x69'),'%'+_0x5cecb6['value']+'%',null);}else{_0x118a81=_[_0x8122('0x5e')](_0x2afa58,[_0x8122('0x19'),_0x8122('0x2b')]);_0x5cecb6[_0x8122('0x3e')]=_0x8122('0x2b');_0x508dc2=as[_0x8122('0x60')](_0x2cffaf,_0x118a81['type'],_0x5cecb6);_0x12b0b8[_0x3d63fb](_0x508dc2[_0x8122('0x62')],_0x508dc2[_0x8122('0x57')][_0x8122('0x63')],_0x508dc2['value'][_0x8122('0x17')]);}break;case _0x8122('0x23'):_0x508dc2=as[_0x8122('0x60')]('me',null,_0x5cecb6);_0x12b0b8[_0x3d63fb](_0x508dc2[_0x8122('0x62')],_0x508dc2['value'][_0x8122('0x63')],_0x508dc2[_0x8122('0x57')]['end']);break;}}else{var _0x508dc2=as[_0x8122('0x60')](_0x2cffaf,_0x118a81[_0x8122('0x61')],_0x5cecb6);_0x12b0b8[_0x3d63fb](_0x508dc2['text'],_0x508dc2[_0x8122('0x57')][_0x8122('0x63')],_0x508dc2[_0x8122('0x57')][_0x8122('0x17')]);}}}else{var _0x5541d7=_(_0x3805ec[_0x8122('0x32')])['keys']()['map'](function(_0x54a229){return _[_0x8122('0x6a')](_0x2afa58,[_0x8122('0x19'),_0x54a229])?_0x54a229:undefined;})[_0x8122('0x6b')]()['value']();if(!_[_0x8122('0x6c')](_0x5541d7)){_0x5541d7[_0x8122('0x20')](function(_0x276875){if(_0x276875==='MailAccountId'){_0xa3bee5['where'](_0x8122('0x6d'),[][_0x8122('0x6e')](_0x3805ec['query'][_0x276875]));}else if(_0x276875==='createdAt'){var _0x17bf1b=JSON[_0x8122('0x6f')](_0x3805ec['query'][_0x276875])[_0x8122('0x70')];var _0x5d803b=JSON[_0x8122('0x6f')](_0x3805ec[_0x8122('0x32')][_0x276875])['$lte'];_0xa3bee5[_0x8122('0x3b')](_0x8122('0x71'),_0x17bf1b,_0x5d803b);}else{if(_0x3805ec[_0x8122('0x32')][_0x276875]===_0x8122('0x72')){_0xa3bee5[_0x8122('0x3b')]('i.'+_0x276875+_0x8122('0x73'));}else{_0xa3bee5['where']('i.'+_0x276875+'\x20=\x20?',_0x3805ec[_0x8122('0x32')][_0x276875]);}}});}if(_0x3805ec['query'][_0x8122('0x74')]){if(_0x3805ec[_0x8122('0x32')]['read']==0x1){_0xa3bee5[_0x8122('0x58')](_0x8122('0x75'));}else{_0xa3bee5['having']('`unreadMessages`\x20>\x200');}}if(_0x3805ec[_0x8122('0x32')][_0x8122('0x76')]){_0x414e67=_[_0x8122('0x77')](_0x3805ec[_0x8122('0x32')]['tag'])?_0x3805ec[_0x8122('0x32')][_0x8122('0x76')]:new Array(_0x3805ec[_0x8122('0x32')][_0x8122('0x76')]);_0x414e67[_0x8122('0x20')](function(_0x1a7260){_0x3ad874['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x1a7260+',%');});}if(_0x3805ec[_0x8122('0x32')][_0x8122('0x78')]){var _0xd3d712=_0x3805ec[_0x8122('0x32')][_0x8122('0x78')][_0x8122('0x79')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x8122('0x7a')](_0xd3d712)){_0x12b0b8['or'](_0x8122('0x7b'),_0xd3d712+'%');}else if(qs['isEmail'](_0xd3d712)){_0x12b0b8['or']('c.email\x20LIKE\x20?',_0xd3d712+'%');}else{_0x12b0b8['or'](_0x8122('0x7c'),qs[_0x8122('0x5d')](_0xd3d712))['or'](_0x8122('0x7d'),qs[_0x8122('0x5d')](_0xd3d712));}}}_0xa3bee5['where'](_0x12b0b8);_0xa3bee5[_0x8122('0x7e')](_0x8122('0x7f'));var _0x50b43b={'type':db[_0x8122('0x80')][_0x8122('0x81')]['SELECT'],'raw':!![]};var _0x20116e=_0xa3bee5[_0x8122('0x82')]();_0x20116e['field'](_0x8122('0x7f'));_0x20116e[_0x8122('0x3e')](_0x8122('0x83'),'unreadMessages');if(_0x3ab96a[_0x8122('0x84')]){_0x3ab96a[_0x8122('0x84')][_0x8122('0x20')](function(_0x5191e1){var _0x4ae28e=_0x5191e1[0x0]===_0x8122('0x85')?_0x5191e1[0x0]:'i.'+_0x5191e1[0x0];_0xa3bee5['order'](_0x4ae28e,_0x5191e1[0x1]===_0x8122('0x86')?![]:!![]);});}if(!_[_0x8122('0x6c')](_0x414e67)){_0xa3bee5['having'](_0x3ad874);_0x20116e[_0x8122('0x3b')](_0x8122('0x87'),_0x414e67);}BPromise['resolve']()[_0x8122('0x15')](function(){if(!_0x170e63){if(_0x3805ec[_0x8122('0x32')][_0x8122('0x88')])return;_0x20116e[_0x8122('0x3b')](_0x8122('0x89'));_0xa3bee5[_0x8122('0x3b')]('i.MailAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x3805ec[_0x8122('0x8a')][_0x8122('0x8b')]!==_0x8122('0x8c'))return;return _0x3805ec[_0x8122('0x8a')][_0x8122('0x8d')]({'attributes':['id'],'raw':!![]})[_0x8122('0x15')](function(_0x231d1b){if(_[_0x8122('0x6c')](_0x231d1b)){_0x20116e[_0x8122('0x3b')]('i.MailAccountId\x20IS\x20NULL');_0xa3bee5[_0x8122('0x3b')](_0x8122('0x8e'));}else{_0x20116e[_0x8122('0x3b')]('i.MailAccountId\x20IN\x20?',_['map'](_0x231d1b,'id'));_0xa3bee5[_0x8122('0x3b')](_0x8122('0x6d'),_[_0x8122('0x1c')](_0x231d1b,'id'));}});})['then'](function(){if(_0x3805ec[_0x8122('0x8a')][_0x8122('0x8b')]==='agent'&&!_0x170e63&&!_0x3805ec[_0x8122('0x32')][_0x8122('0x88')])return[];return db['sequelize'][_0x8122('0x32')](_0x20116e[_0x8122('0x8f')](),_0x50b43b);})['then'](function(_0x5617cd){_0xf64d85[_0x8122('0x90')]=_0x5617cd[_0x8122('0x37')];if(_0xf64d85[_0x8122('0x90')]===0x0)return[];return db[_0x8122('0x91')][_0x8122('0x32')](_0x215ca3['toString'](),_0x50b43b)['then'](function(_0x2ba19e){_0x2160d1=_[_0x8122('0x92')](_0x2ba19e,'id');_0x50b43b=_[_0x8122('0x93')](_0x50b43b,{'model':db[_0x8122('0x2e')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x3805ec['query']['fields']){_0x3ab96a[_0x8122('0x36')][_0x8122('0x20')](function(_0x20f910){_0xa3bee5[_0x8122('0x3e')]('i.'+_0x20f910);});}else{_0xa3bee5[_0x8122('0x3e')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');_0xa3bee5[_0x8122('0x3e')]('a.key',_0x8122('0x94'));_0xa3bee5[_0x8122('0x3e')](_0x8122('0x95'),_0x8122('0x96'));_0xa3bee5[_0x8122('0x3e')](_0x8122('0x97'),'contactName');_0xa3bee5[_0x8122('0x3e')]('i.id');_0xa3bee5[_0x8122('0x3e')](_0x8122('0x98'));_0xa3bee5[_0x8122('0x3e')]('i.updatedAt');_0xa3bee5[_0x8122('0x3e')](_0x8122('0x99'));_0xa3bee5[_0x8122('0x3e')](_0x8122('0x9a'));_0xa3bee5[_0x8122('0x3e')](_0x8122('0x9b'));_0xa3bee5['field']('i.lastMsgAt');_0xa3bee5['field']('i.lastMsgDirection');_0xa3bee5[_0x8122('0x3e')]('i.subject');_0xa3bee5[_0x8122('0x3e')](_0x8122('0x9c'));_0xa3bee5[_0x8122('0x3e')](_0x8122('0x9d'));_0xa3bee5[_0x8122('0x3e')]('i.thirdDisposition');_0xa3bee5['field'](_0x8122('0x9e'));_0xa3bee5[_0x8122('0x3e')](_0x8122('0x9f'));_0xa3bee5['field'](_0x8122('0xa0'));_0xa3bee5[_0x8122('0x3e')](_0x8122('0xa1'));_0xa3bee5[_0x8122('0x3e')](_0x8122('0xa2'));_0xa3bee5[_0x8122('0x3e')]('c.firstName',_0x8122('0xa3'));_0xa3bee5[_0x8122('0x3e')](_0x8122('0xa4'),_0x8122('0xa5'));_0xa3bee5[_0x8122('0x3e')](_0x8122('0xa6'),'Contact.email');_0xa3bee5[_0x8122('0x3e')](_0x8122('0xa7'),_0x8122('0xa8'));_0xa3bee5['field'](_0x8122('0xa9'),'Contact.mobile');_0xa3bee5[_0x8122('0x3e')](_0x8122('0xaa'),'Contact.fax');_0xa3bee5[_0x8122('0x3e')](_0x8122('0xab'),'Owner.fullname');_0xa3bee5['field'](_0x8122('0xac'),'Owner.internal');_0xa3bee5[_0x8122('0x3e')]('GROUP_CONCAT(DISTINCT\x20t.id)',_0x8122('0x1d'));}if(_0x3ab96a['limit'])_0xa3bee5[_0x8122('0x13')](_0x3ab96a['limit']);if(_0x3ab96a['offset'])_0xa3bee5['offset'](_0x3ab96a['offset']);return db[_0x8122('0x91')][_0x8122('0x32')](_0xa3bee5['toString'](),_0x50b43b);})[_0x8122('0x15')](function(_0x13a953){if(_0x13a953[_0x8122('0x37')]>0x0)_0x321707[_0x8122('0x3b')](_0x8122('0xad'),_[_0x8122('0x1c')](_0x13a953,'id'));return db[_0x8122('0x91')][_0x8122('0x32')](_0x321707[_0x8122('0x8f')](),_0x50b43b)[_0x8122('0x15')](function(_0x377ed2){var _0xd6c031=_['groupBy'](_0x377ed2,_0x8122('0xae'));var _0x5084c6=[];return db[_0x8122('0xaf')][_0x8122('0xb0')]({'attributes':[_0x8122('0xb1')],'raw':!![]})[_0x8122('0x15')](function(_0x5e2cc7){var _0x4df6ab=_0x5e2cc7['enableEmailPreview'];_0x13a953[_0x8122('0x20')](function(_0x25a8f7){_0x5084c6[_0x8122('0x21')](updateMailInteraction(_0x25a8f7,_0x2160d1,_0xd6c031,_0x4df6ab));});return BPromise['all'](_0x5084c6);});});});})[_0x8122('0x15')](function(_0x465832){_0xf64d85[_0x8122('0xb2')]=_0x465832;return _0xf64d85;})[_0x8122('0x15')](respondWithFilteredResult(_0x4f795a,_0x3ab96a))[_0x8122('0x27')](handleError(_0x4f795a,null));};exports[_0x8122('0xb3')]=function(_0x492421,_0x25379c){var _0x58181f={'raw':![],'where':{'id':_0x492421['params']['id']}},_0x5c64bb={};_0x5c64bb['model']=_[_0x8122('0xb4')](db['MailInteraction'][_0x8122('0xb5')]);_0x5c64bb['query']=_[_0x8122('0xb4')](_0x492421[_0x8122('0x32')]);_0x5c64bb['filters']=_['intersection'](_0x5c64bb[_0x8122('0x31')],_0x5c64bb[_0x8122('0x32')]);_0x58181f[_0x8122('0x36')]=_[_0x8122('0x34')](_0x5c64bb[_0x8122('0x31')],qs[_0x8122('0x35')](_0x492421[_0x8122('0x32')][_0x8122('0x35')]));_0x58181f[_0x8122('0x36')]=_0x58181f[_0x8122('0x36')][_0x8122('0x37')]?_0x58181f['attributes']:_0x5c64bb[_0x8122('0x31')];if(_0x492421[_0x8122('0x32')][_0x8122('0xb6')]){_0x58181f[_0x8122('0xb7')]=[{'all':!![]}];}_0x58181f=_[_0x8122('0x93')]({},_0x58181f,_0x492421[_0x8122('0xb8')]);return db[_0x8122('0x2e')][_0x8122('0x5e')](_0x58181f)[_0x8122('0x15')](handleEntityNotFound(_0x25379c,null))[_0x8122('0x15')](respondWithResult(_0x25379c,null))[_0x8122('0x27')](handleError(_0x25379c,null));};exports[_0x8122('0xb9')]=function(_0x3dea52,_0x25da55){return db[_0x8122('0x2e')]['create'](_0x3dea52[_0x8122('0xba')],{})[_0x8122('0x15')](respondWithResult(_0x25da55,0xc9))[_0x8122('0x27')](handleError(_0x25da55,null));};exports['update']=function(_0x4f200b,_0x1be974){if(_0x4f200b[_0x8122('0xba')]['id']){delete _0x4f200b[_0x8122('0xba')]['id'];}return db[_0x8122('0x2e')]['find']({'where':{'id':_0x4f200b['params']['id']}})[_0x8122('0x15')](handleEntityNotFound(_0x1be974,null))[_0x8122('0x15')](saveUpdates(_0x4f200b['body'],null))[_0x8122('0x15')](respondWithResult(_0x1be974,null))[_0x8122('0x27')](handleError(_0x1be974,null));};exports['destroy']=function(_0x332c1e,_0x1e38cb){return db[_0x8122('0x2e')][_0x8122('0x5e')]({'where':{'id':_0x332c1e[_0x8122('0xbb')]['id']}})['then'](handleEntityNotFound(_0x1e38cb,null))[_0x8122('0x15')](removeEntity(_0x1e38cb,null))[_0x8122('0x27')](handleError(_0x1e38cb,null));};exports['describe']=function(_0x55e141,_0x562689){return db[_0x8122('0x2e')][_0x8122('0xbc')]()['then'](respondWithResult(_0x562689,null))[_0x8122('0x27')](handleError(_0x562689,null));};exports['addMessage']=function(_0x1efa99,_0x5a1f42){return db[_0x8122('0x22')]['find']({'where':{'id':_0x1efa99[_0x8122('0xbb')]['id']}})[_0x8122('0x15')](handleEntityNotFound(_0x5a1f42,null))[_0x8122('0x15')](function(_0x129857){if(_0x129857){return _0x129857['addMessage'](_0x1efa99[_0x8122('0xba')][_0x8122('0xbd')],_[_0x8122('0xbe')](_0x1efa99[_0x8122('0xba')],[_0x8122('0xbd'),'id'])||{});}})[_0x8122('0x15')](respondWithResult(_0x5a1f42,null))['catch'](handleError(_0x5a1f42,null));};exports['getMessages']=function(_0xd5bfcb,_0x4538d9){var _0x5b7a02={'raw':![],'where':{}};var _0x331af0={};var _0x55d2de={'count':0x0,'rows':[]};return db[_0x8122('0x2e')][_0x8122('0xb0')]({'where':{'id':_0xd5bfcb[_0x8122('0xbb')]['id']}})[_0x8122('0x15')](handleEntityNotFound(_0x4538d9,null))[_0x8122('0x15')](function(_0x4631c4){if(_0x4631c4){_0x331af0[_0x8122('0x31')]=_['keys'](db[_0x8122('0x22')][_0x8122('0xb5')]);_0x331af0[_0x8122('0x32')]=_['keys'](_0xd5bfcb[_0x8122('0x32')]);_0x331af0['filters']=_[_0x8122('0x34')](_0x331af0['model'],_0x331af0['query']);_0x5b7a02[_0x8122('0x36')]=_[_0x8122('0x34')](_0x331af0[_0x8122('0x31')],qs[_0x8122('0x35')](_0xd5bfcb['query'][_0x8122('0x35')]));_0x5b7a02[_0x8122('0x36')]=_0x5b7a02[_0x8122('0x36')][_0x8122('0x37')]?_0x5b7a02[_0x8122('0x36')]:_0x331af0[_0x8122('0x31')];if(!_0xd5bfcb['query'][_0x8122('0x38')](_0x8122('0x39'))){_0x5b7a02[_0x8122('0x13')]=qs['limit'](_0xd5bfcb['query'][_0x8122('0x13')]);_0x5b7a02[_0x8122('0x11')]=qs[_0x8122('0x11')](_0xd5bfcb[_0x8122('0x32')][_0x8122('0x11')]);}_0x5b7a02[_0x8122('0x84')]=qs['sort'](_0xd5bfcb[_0x8122('0x32')]['sort']);_0x5b7a02['where']=qs['filters'](_[_0x8122('0x3c')](_0xd5bfcb[_0x8122('0x32')],_0x331af0[_0x8122('0x33')]));_0x5b7a02[_0x8122('0x3b')]['MailInteractionId']=_0x4631c4['id'];if(_0xd5bfcb['query'][_0x8122('0x78')]){_0x5b7a02[_0x8122('0x3b')]=_[_0x8122('0x93')](_0x5b7a02[_0x8122('0x3b')],{'$or':_['map'](_0x5b7a02['attributes'],function(_0x5ec13f){var _0x6f5072={};_0x6f5072[_0x5ec13f]={'$like':'%'+_0xd5bfcb[_0x8122('0x32')][_0x8122('0x78')]+'%'};return _0x6f5072;})});}if(_0xd5bfcb[_0x8122('0x32')][_0x8122('0x70')]){var _0x1cf56b=_0xd5bfcb[_0x8122('0x32')][_0x8122('0x70')]['split'](',');var _0x342be7={};_0x342be7[_0x1cf56b[0x0]]={'$gte':moment(_0x1cf56b[0x1])[_0x8122('0xbf')](_0x8122('0xc0'))};_0x5b7a02[_0x8122('0x3b')]=_['merge'](_0x5b7a02[_0x8122('0x3b')],_0x342be7);}_0x5b7a02=_[_0x8122('0x93')]({},_0x5b7a02,_0xd5bfcb[_0x8122('0xb8')]);return db[_0x8122('0x22')][_0x8122('0x90')]({'where':_0x5b7a02[_0x8122('0x3b')]})[_0x8122('0x15')](function(_0x526bc0){_0x55d2de[_0x8122('0x90')]=_0x526bc0;if(_0xd5bfcb[_0x8122('0x32')][_0x8122('0xb6')]){_0x5b7a02['include']=[{'all':!![]}];}return db[_0x8122('0x22')]['findAll'](_0x5b7a02);})[_0x8122('0x15')](function(_0x2ca894){if(_0xd5bfcb[_0x8122('0x32')][_0x8122('0xc1')]===_0x8122('0xc2')){for(var _0x2fc6c0=0x0;_0x2fc6c0<_0x2ca894['length'];_0x2fc6c0++){_0x2ca894[_0x2fc6c0]['body']=juice(_0x2ca894[_0x2fc6c0][_0x8122('0xba')]);}}_0x55d2de[_0x8122('0xb2')]=_0x2ca894;return _0x55d2de;});}})[_0x8122('0x15')](respondWithFilteredResult(_0x4538d9,_0x5b7a02))[_0x8122('0x27')](handleError(_0x4538d9,null));};exports[_0x8122('0xc3')]=function(_0x360559,_0x1764e1){return db[_0x8122('0x2e')][_0x8122('0x5e')]({'where':{'id':_0x360559[_0x8122('0xbb')]['id']}})['then'](handleEntityNotFound(_0x1764e1,null))['then'](function(_0x40c8eb){if(_0x40c8eb){return _0x40c8eb[_0x8122('0xc4')](_0x360559['body'][_0x8122('0xbd')],_[_0x8122('0xbe')](_0x360559[_0x8122('0xba')],[_0x8122('0xbd'),'id'])||{})[_0x8122('0xc5')](function(){return db[_0x8122('0x64')][_0x8122('0xc6')]({'attributes':['id',_0x8122('0x19'),_0x8122('0x3f')],'where':{'id':_0x360559[_0x8122('0xba')][_0x8122('0xbd')]}});})[_0x8122('0x15')](function(_0x26ca76){socket['emit'](_0x8122('0xc7'),{'id':Number(_0x360559[_0x8122('0xbb')]['id']),'tags':_0x26ca76||[]});return{'id':Number(_0x360559[_0x8122('0xbb')]['id']),'tags':_0x26ca76||[]};});}})['then'](respondWithResult(_0x1764e1,null))[_0x8122('0x27')](handleError(_0x1764e1,null));};exports['removeTags']=function(_0x4547d4,_0x5e2d3c){return db[_0x8122('0x2e')][_0x8122('0x5e')]({'where':{'id':_0x4547d4['params']['id']}})[_0x8122('0x15')](handleEntityNotFound(_0x5e2d3c,null))[_0x8122('0x15')](function(_0xafc636){if(_0xafc636){return _0xafc636[_0x8122('0xc8')](_0x4547d4['query'][_0x8122('0xbd')]);}})['then'](respondWithStatusCode(_0x5e2d3c,null))[_0x8122('0x27')](handleError(_0x5e2d3c,null));};exports['download']=function(_0x50892c,_0x2ee5bf){var _0x313d25=moment()[_0x8122('0xc9')]()[_0x8122('0x8f')]();var _0xc32470=path[_0x8122('0xca')](config[_0x8122('0xcb')],_0x8122('0xcc'),_0x8122('0xcd'),'tmp');var _0x30ccd7=path[_0x8122('0xca')](config['root'],_0x8122('0xcc'),'files',_0x8122('0xce'));var _0x64a3b4=path[_0x8122('0xca')](_0xc32470,_0x313d25);var _0x1abb2a=util[_0x8122('0xbf')]('transcript-%d-%s.zip',_0x50892c[_0x8122('0xbb')]['id'],_0x313d25);var _0x79cc2e=path[_0x8122('0xca')](_0xc32470,_0x1abb2a);var _0x528610=[];if(_0x50892c[_0x8122('0x32')][_0x8122('0xce')]){_0x528610[_0x8122('0x21')]({'model':db[_0x8122('0xcf')],'as':_0x8122('0xd0'),'raw':!![]});}var _0x90d7b5=[{'model':db[_0x8122('0x22')],'as':_0x8122('0xd1'),'attributes':['id','body',_0x8122('0x40'),'to','cc','bcc','subject',_0x8122('0xd2')],'where':{'secret':![]},'order':qs[_0x8122('0x3a')]('id'),'include':_0x528610}];return db['MailInteraction'][_0x8122('0x5e')]({'where':{'id':_0x50892c[_0x8122('0xbb')]['id']},'include':_0x90d7b5})[_0x8122('0x15')](handleEntityNotFound(_0x2ee5bf,null))[_0x8122('0x15')](function(_0x301209){if(_0x301209&&_0x301209[_0x8122('0xd1')]){var _0xd1b4f9=_0x301209[_0x8122('0xd3')]({'plain':!![]});fs[_0x8122('0xd4')](_0x64a3b4);return BPromise['each'](_0xd1b4f9[_0x8122('0xd1')],function(_0x3e7ce3,_0x14d8cd){var _0x26f625={'from':_0x3e7ce3[_0x8122('0x40')],'to':_0x3e7ce3['to'],'subject':_0x3e7ce3[_0x8122('0xd5')],'html':htmlEntities[_0x8122('0xd6')](_0x3e7ce3[_0x8122('0xba')]),'headers':{'Date':moment(_0x3e7ce3['createdAt'])[_0x8122('0xbf')](_0x8122('0xd7'))},'attachments':[]};if(_0x3e7ce3['cc']){_0x26f625[_0x8122('0xd8')]['Cc']=_0x3e7ce3['cc'];}if(_0x3e7ce3[_0x8122('0xd9')]){_0x26f625['headers']['Bcc']=_0x3e7ce3[_0x8122('0xd9')];}return new BPromise(function(_0x3baf18,_0x44d72a){if(_0x3e7ce3[_0x8122('0xd0')]){for(var _0x4f5584=0x0;_0x4f5584<_0x3e7ce3[_0x8122('0xd0')][_0x8122('0x37')];_0x4f5584++){var _0x5f0de9=_0x3e7ce3[_0x8122('0xd0')][_0x4f5584];var _0x3ba61c=path['join'](_0x30ccd7,_0x5f0de9['basename']);if(fs[_0x8122('0xda')](_0x3ba61c)){_0x26f625[_0x8122('0xce')][_0x8122('0x21')]({'name':_0x5f0de9[_0x8122('0x19')],'contentType':_0x5f0de9['type'],'data':fs[_0x8122('0xdb')](_0x3ba61c)});}}}emlformat[_0x8122('0xdc')](_0x26f625,function(_0x16d68c,_0x1a4bc6){if(_0x16d68c)return _0x44d72a(_0x16d68c);fs[_0x8122('0xdd')](path[_0x8122('0xca')](_0x64a3b4,util['format'](_0x8122('0xde'),_0x14d8cd)),_0x1a4bc6);return _0x3baf18(_0x1a4bc6);});});})['then'](function(){return new BPromise(function(_0x7c9a6d,_0x5ccfa3){zipdir(_0x64a3b4,{'saveTo':_0x79cc2e},function(_0x420f00,_0x4fb49a){if(_0x420f00)return _0x5ccfa3(_0x420f00);return _0x7c9a6d(_0x4fb49a);});})[_0x8122('0x15')](function(){return new BPromise(function(_0x971670,_0x2af0d5){rimraf(_0x64a3b4,function(_0xacf972){if(_0xacf972)_0x2af0d5(_0xacf972);return _0x971670();});});})[_0x8122('0x15')](function(){return _0x2ee5bf[_0x8122('0xdf')](_0x79cc2e,_0x1abb2a,function(_0xa70565){if(!_0xa70565)fs[_0x8122('0xe0')](_0x79cc2e);});});});}else{return _0x2ee5bf['sendStatus'](0xc8);}})[_0x8122('0x27')](handleError(_0x2ee5bf,null));};
\ No newline at end of file
+var _0xeae8=['SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','t.id\x20IN\x20?','resolve','i.MailAccountId\x20IS\x20NOT\x20NULL','user','role','agent','i.MailAccountId\x20IS\x20NULL','sequelize','toString','keyBy','merge','MailInteraction','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','contactName','i.createdAt','i.closed','i.closedAt','i.attach','i.lastMsgDirection','i.subject','i.disposition','i.secondDisposition','i.thirdDisposition','i.to','i.ContactId','i.MailAccountId','i.UserId','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','Contact.phone','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.MailInteractionId\x20IN\x20?','groupBy','MailInteractionId','Setting','enableEmailPreview','all','params','includeAll','include','create','body','destroy','describe','addMessage','ids','omit','getMessages','sort','YYYY-MM-DD\x20HH:mm:ss','options','inlineCss','rows','addTags','setTags','spread','Tag','findAll','emit','mailInteractionTags:save','removeTags','unix','root','server','files','tmp','join','format','transcript-%d-%s.zip','attachments','Attachment','Attachments','bcc','subject','Messages','get','mkdirSync','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','basename','readFileSync','build','writeFileSync','message%d.eml','download','eml-format','rimraf','zip-dir','bluebird','path','squel','juice','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../mysqldb','html-entities','redis','localhost','socket.io-emitter','./mailInteraction.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','update','then','end','stack','name','send','Users','map','fullname','TagIds','forEach','Tags','push','MailMessage','findOne','plainBody','-id','lastMsgText','trimStart','catch','waiting','talking','answered','unmanaged','closed','UserId','index','rawAttributes','fieldName','key','model','query','keys','intersection','attributes','fields','hasOwnProperty','order','where','filters','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.MailInteractionId','user_has_mail_interactions','users','u.id\x20=\x20ui.UserId','mail_interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','mail_accounts','a.id\x20=\x20i.MailAccountId','mail_messages','me.MailInteractionId\x20=\x20i.id','it.MailInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','parseSearch','length','conditions','find','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?','ContactId','type','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','text','buildExpression','start','some','compact','isEmpty','MailAccountId','i.MailAccountId\x20IN\x20?','concat','createdAt','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','tag','filter','replace','isNumeric','MATCH\x20(i.to,\x20i.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','MATCH\x20(me.plainBody,\x20me.subject)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.id','QueryTypes'];(function(_0x4a0472,_0x88fbcf){var _0x2a8efa=function(_0x50ff14){while(--_0x50ff14){_0x4a0472['push'](_0x4a0472['shift']());}};_0x2a8efa(++_0x88fbcf);}(_0xeae8,0x66));var _0x8eae=function(_0x398a34,_0x10a9e2){_0x398a34=_0x398a34-0x0;var _0x316bc2=_0xeae8[_0x398a34];return _0x316bc2;};'use strict';var emlformat=require(_0x8eae('0x0'));var rimraf=require(_0x8eae('0x1'));var zipdir=require(_0x8eae('0x2'));var moment=require('moment');var BPromise=require(_0x8eae('0x3'));var util=require('util');var path=require(_0x8eae('0x4'));var fs=require('fs');var _=require('lodash');var squel=require(_0x8eae('0x5'));var juice=require(_0x8eae('0x6'));var Redis=require(_0x8eae('0x7'));var qs=require(_0x8eae('0x8'));var as=require(_0x8eae('0x9'));var logger=require(_0x8eae('0xa'))(_0x8eae('0xb'));var config=require(_0x8eae('0xc'));var db=require(_0x8eae('0xd'))['db'];var htmlEntities=require(_0x8eae('0xe'));config[_0x8eae('0xf')]=_['defaults'](config['redis'],{'host':_0x8eae('0x10'),'port':0x18eb});var socket=require(_0x8eae('0x11'))(new Redis(config[_0x8eae('0xf')]));require(_0x8eae('0x12'))[_0x8eae('0x13')](socket);function respondWithStatusCode(_0x4aba96,_0x4d3f22){_0x4d3f22=_0x4d3f22||0xcc;return function(_0x4cf0c3){if(_0x4cf0c3){return _0x4aba96[_0x8eae('0x14')](_0x4d3f22);}return _0x4aba96[_0x8eae('0x15')](_0x4d3f22)['end']();};}function respondWithResult(_0x406afc,_0x50e569){_0x50e569=_0x50e569||0xc8;return function(_0xa29afd){if(_0xa29afd){return _0x406afc[_0x8eae('0x15')](_0x50e569)[_0x8eae('0x16')](_0xa29afd);}};}function respondWithFilteredResult(_0x10f61e,_0x14172c){return function(_0x549d19){if(_0x549d19){var _0x16f24a=typeof _0x14172c[_0x8eae('0x17')]===_0x8eae('0x18')&&typeof _0x14172c[_0x8eae('0x19')]===_0x8eae('0x18');var _0x1cec9f=_0x549d19[_0x8eae('0x1a')];var _0x367dfe=_0x16f24a?0x0:_0x14172c[_0x8eae('0x17')];var _0x5324e3=_0x16f24a?_0x549d19['count']:_0x14172c['offset']+_0x14172c[_0x8eae('0x19')];var _0x47c1db;if(_0x5324e3>=_0x1cec9f){_0x5324e3=_0x1cec9f;_0x47c1db=0xc8;}else{_0x47c1db=0xce;}_0x10f61e[_0x8eae('0x15')](_0x47c1db);return _0x10f61e[_0x8eae('0x1b')](_0x8eae('0x1c'),_0x367dfe+'-'+_0x5324e3+'/'+_0x1cec9f)[_0x8eae('0x16')](_0x549d19);}return null;};}function saveUpdates(_0x20213d){return function(_0x173672){if(_0x173672){return _0x173672[_0x8eae('0x1d')](_0x20213d)[_0x8eae('0x1e')](function(_0xfbb712){return _0xfbb712;});}return null;};}function removeEntity(_0xf5df63){return function(_0x4cb7e0){if(_0x4cb7e0){return _0x4cb7e0['destroy']()[_0x8eae('0x1e')](function(){_0xf5df63[_0x8eae('0x15')](0xcc)[_0x8eae('0x1f')]();});}};}function handleEntityNotFound(_0x4d4d8f){return function(_0x1ee7fb){if(!_0x1ee7fb){_0x4d4d8f[_0x8eae('0x14')](0x194);}return _0x1ee7fb;};}function handleError(_0x51fa34,_0x1dc612){_0x1dc612=_0x1dc612||0x1f4;return function(_0x3326b3){logger['error'](_0x3326b3[_0x8eae('0x20')]);if(_0x3326b3[_0x8eae('0x21')]){delete _0x3326b3[_0x8eae('0x21')];}_0x51fa34[_0x8eae('0x15')](_0x1dc612)[_0x8eae('0x22')](_0x3326b3);};}function getInteractionUsers(_0x2bda3a,_0x3761a6){return new BPromise(function(_0x3efe66,_0x14c0c5){try{if(_0x3761a6[_0x2bda3a['id']]){_0x2bda3a[_0x8eae('0x23')]=_[_0x8eae('0x24')](_0x3761a6[_0x2bda3a['id']],function(_0x53733c){return{'id':_0x53733c['id'],'fullname':_0x53733c[_0x8eae('0x25')]};});}}catch(_0xe9a3c5){_0x14c0c5(_0xe9a3c5);}_0x3efe66(_0x2bda3a);});}function getInteractionTags(_0x141940,_0x34dff7){return new BPromise(function(_0x149b83,_0x13a80a){try{if(_0x141940[_0x8eae('0x26')]){_0x141940['Tags']=[];_0x141940[_0x8eae('0x26')]['split'](',')[_0x8eae('0x27')](function(_0xf4f03c){_0x141940[_0x8eae('0x28')][_0x8eae('0x29')](_0x34dff7[_0xf4f03c]);});}delete _0x141940[_0x8eae('0x26')];}catch(_0x541448){_0x13a80a(_0x541448);}_0x149b83(_0x141940);});}function getLastMessageText(_0x52a030){return new BPromise(function(_0x2d50e1,_0x28431c){return db[_0x8eae('0x2a')][_0x8eae('0x2b')]({'where':{'$and':[{'MailInteractionId':_0x52a030['id']},{'$or':[{'direction':'in'},{'$and':[{'direction':'out'},{'secret':![]},{'UserId':{'$ne':null}}]}]}]},'attributes':[_0x8eae('0x2c')],'order':_0x8eae('0x2d'),'raw':!![]})[_0x8eae('0x1e')](function(_0x3273c0){if(_0x3273c0&&_0x3273c0[_0x8eae('0x2c')]){_0x52a030[_0x8eae('0x2e')]=_[_0x8eae('0x2f')](_0x3273c0[_0x8eae('0x2c')]);}_0x2d50e1(_0x52a030);})[_0x8eae('0x30')](function(_0x1bcd2d){_0x28431c(_0x1bcd2d);});});}function updateMailInteraction(_0x3403a2,_0x3c4219,_0x2d6109,_0x2a0b6a){return new BPromise(function(_0x1f247e,_0x3d19f7){return getInteractionUsers(_0x3403a2,_0x2d6109)[_0x8eae('0x1e')](function(_0x6952f3){return getInteractionTags(_0x6952f3,_0x3c4219);})[_0x8eae('0x1e')](function(_0x2fc72a){return getStateInteraction(_0x2fc72a);})[_0x8eae('0x1e')](function(_0x54b216){if(_0x2a0b6a){_0x1f247e(getLastMessageText(_0x54b216));}else{_0x1f247e(_0x54b216);}})[_0x8eae('0x30')](function(_0x36819a){_0x3d19f7(_0x36819a);});});}function getStateInteraction(_0x1c0cce){return new BPromise(function(_0x4bf905){_0x1c0cce[_0x8eae('0x31')]=0x0;_0x1c0cce[_0x8eae('0x32')]=0x0;_0x1c0cce[_0x8eae('0x33')]=0x0;_0x1c0cce[_0x8eae('0x34')]=0x0;_0x1c0cce['total']=0x0;if(!_0x1c0cce[_0x8eae('0x35')]&&!_0x1c0cce['UserId']){_0x1c0cce['waiting']+=0x1;}if(!_0x1c0cce[_0x8eae('0x35')]&&_0x1c0cce[_0x8eae('0x36')]){_0x1c0cce[_0x8eae('0x32')]+=0x1;if(_0x1c0cce[_0x8eae('0x31')]){_0x1c0cce[_0x8eae('0x31')]-=0x1;}}if(_0x1c0cce[_0x8eae('0x35')]&&_0x1c0cce[_0x8eae('0x36')]){_0x1c0cce['answered']+=0x1;if(_0x1c0cce[_0x8eae('0x32')]){_0x1c0cce[_0x8eae('0x32')]-=0x1;}}if(_0x1c0cce['closed']&&!_0x1c0cce['UserId']){_0x1c0cce['unmanaged']+=0x1;if(_0x1c0cce[_0x8eae('0x31')]){_0x1c0cce[_0x8eae('0x31')]-=0x1;}}_0x1c0cce['total']+=0x1;_0x4bf905(_0x1c0cce);});}exports[_0x8eae('0x37')]=function(_0x1a7539,_0x576c00){var _0xe4417d={},_0x2ee9c2={},_0x17305e={'count':0x0,'rows':[]};var _0x11c626=_[_0x8eae('0x24')](db['MailInteraction'][_0x8eae('0x38')],function(_0x13e5b8){return{'name':_0x13e5b8[_0x8eae('0x39')],'type':_0x13e5b8['type'][_0x8eae('0x3a')]};});_0x2ee9c2[_0x8eae('0x3b')]=_['map'](_0x11c626,_0x8eae('0x21'));_0x2ee9c2[_0x8eae('0x3c')]=_[_0x8eae('0x3d')](_0x1a7539[_0x8eae('0x3c')]);_0x2ee9c2['filters']=_[_0x8eae('0x3e')](_0x2ee9c2[_0x8eae('0x3b')],_0x2ee9c2[_0x8eae('0x3c')]);_0xe4417d[_0x8eae('0x3f')]=_['intersection'](_0x2ee9c2[_0x8eae('0x3b')],qs[_0x8eae('0x40')](_0x1a7539[_0x8eae('0x3c')][_0x8eae('0x40')]));_0xe4417d['attributes']=_0xe4417d[_0x8eae('0x3f')]['length']?_0xe4417d[_0x8eae('0x3f')]:_0x2ee9c2['model'];if(!_0x1a7539[_0x8eae('0x3c')][_0x8eae('0x41')]('nolimit')){_0xe4417d[_0x8eae('0x19')]=qs[_0x8eae('0x19')](_0x1a7539[_0x8eae('0x3c')][_0x8eae('0x19')]);_0xe4417d[_0x8eae('0x17')]=qs[_0x8eae('0x17')](_0x1a7539[_0x8eae('0x3c')][_0x8eae('0x17')]);}_0xe4417d[_0x8eae('0x42')]=qs['sort'](_0x1a7539[_0x8eae('0x3c')]['sort']);_0xe4417d[_0x8eae('0x43')]=qs[_0x8eae('0x44')](_[_0x8eae('0x45')](_0x1a7539[_0x8eae('0x3c')],_0x2ee9c2['filters']),_0x11c626);var _0x2a4bc9=[];var _0x32fec2=squel[_0x8eae('0x46')]()[_0x8eae('0x47')]('id')[_0x8eae('0x47')](_0x8eae('0x21'))[_0x8eae('0x47')](_0x8eae('0x48'))[_0x8eae('0x49')](_0x8eae('0x4a'));var _0x319a94=squel['select']()[_0x8eae('0x47')](_0x8eae('0x4b'))['field'](_0x8eae('0x4c'))['field'](_0x8eae('0x4d'))['from'](_0x8eae('0x4e'),'ui')['left_join'](_0x8eae('0x4f'),'u',_0x8eae('0x50'));var _0x470f54=squel[_0x8eae('0x46')]()[_0x8eae('0x49')](_0x8eae('0x51'),'i')[_0x8eae('0x52')](_0x8eae('0x53'),'c',_0x8eae('0x54'))[_0x8eae('0x52')](_0x8eae('0x4f'),'o','o.id\x20=\x20i.UserId')['left_join'](_0x8eae('0x55'),'a',_0x8eae('0x56'))[_0x8eae('0x52')](_0x8eae('0x57'),'me',_0x8eae('0x58'))[_0x8eae('0x52')]('mail_interaction_has_tags','it',_0x8eae('0x59'))[_0x8eae('0x52')](_0x8eae('0x4a'),'t',_0x8eae('0x5a'));var _0x3db9d0=squel[_0x8eae('0x5b')]();var _0x581947=[];var _0x14ec02=squel[_0x8eae('0x5b')]();var _0x4f0e8e;if(_0x1a7539[_0x8eae('0x3c')][_0x8eae('0x5c')]){_0x4f0e8e=as[_0x8eae('0x5d')](_0x1a7539[_0x8eae('0x3c')][_0x8eae('0x5c')]);var _0x1e66f1=_0x4f0e8e['sqlOperator'];for(var _0x3a581a=0x0;_0x3a581a<_0x4f0e8e['conditions'][_0x8eae('0x5e')];_0x3a581a++){var _0x22159e=_0x4f0e8e[_0x8eae('0x5f')][_0x3a581a];var _0x537e25='i';var _0x33a210=_[_0x8eae('0x60')](_0x11c626,[_0x8eae('0x21'),_0x22159e[_0x8eae('0x47')]]);if(!_0x33a210){switch(_0x22159e[_0x8eae('0x47')]){case _0x8eae('0x61'):if(_0x22159e[_0x8eae('0x62')]==0x1){_0x470f54[_0x8eae('0x63')]('`'+_0x22159e[_0x8eae('0x47')]+_0x8eae('0x64'));}else{_0x470f54[_0x8eae('0x63')]('`'+_0x22159e['field']+_0x8eae('0x65'));}break;case _0x8eae('0x66'):if(_0x22159e[_0x8eae('0x67')]===_0x8eae('0x68')){if(_0x22159e[_0x8eae('0x62')][_0x8eae('0x69')]('\x20')[_0x8eae('0x5e')]>0x1){_0x3db9d0[_0x1e66f1](_0x8eae('0x6a'),qs[_0x8eae('0x6b')](_0x22159e[_0x8eae('0x62')]),null);}else{var _0xc17cf2='%'+_0x22159e['value']+'%';_0x3db9d0[_0x1e66f1](_0x8eae('0x6c'),_0xc17cf2,_0xc17cf2,_0xc17cf2);}}else{_0x33a210=_[_0x8eae('0x60')](_0x11c626,[_0x8eae('0x21'),_0x8eae('0x6d')]);_0x22159e[_0x8eae('0x47')]=_0x8eae('0x6d');_0x33cbf8=as['buildExpression'](_0x537e25,_0x33a210[_0x8eae('0x6e')],_0x22159e);_0x3db9d0[_0x1e66f1](_0x33cbf8['text'],_0x33cbf8[_0x8eae('0x62')]['start'],_0x33cbf8[_0x8eae('0x62')][_0x8eae('0x1f')]);}break;case'Tag':var _0x20a577=_0x22159e['value']['split'](',')[_0x8eae('0x24')](function(_0x518a51){return Number(_0x518a51);});_0x20a577[_0x8eae('0x27')](function(_0x4da988){_0x14ec02['or'](_0x8eae('0x6f'),'%,'+_0x4da988+',%');});_0x581947=_['union'](_0x581947,_0x20a577);break;case _0x8eae('0x70'):if(_0x22159e['operator']==='$substring'){_0x3db9d0[_0x1e66f1]('CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','%'+_0x22159e[_0x8eae('0x62')]+'%',null);}else{_0x33a210=_[_0x8eae('0x60')](_0x11c626,['name',_0x8eae('0x36')]);_0x22159e[_0x8eae('0x47')]=_0x8eae('0x36');_0x33cbf8=as['buildExpression'](_0x537e25,_0x33a210[_0x8eae('0x6e')],_0x22159e);_0x3db9d0[_0x1e66f1](_0x33cbf8['text'],_0x33cbf8[_0x8eae('0x62')]['start'],_0x33cbf8['value'][_0x8eae('0x1f')]);}break;case _0x8eae('0x2c'):_0x33cbf8=as['buildExpression']('me',null,_0x22159e);_0x3db9d0[_0x1e66f1](_0x33cbf8[_0x8eae('0x71')],_0x33cbf8[_0x8eae('0x62')]['start'],_0x33cbf8[_0x8eae('0x62')][_0x8eae('0x1f')]);break;}}else{var _0x33cbf8=as[_0x8eae('0x72')](_0x537e25,_0x33a210[_0x8eae('0x6e')],_0x22159e);_0x3db9d0[_0x1e66f1](_0x33cbf8['text'],_0x33cbf8[_0x8eae('0x62')][_0x8eae('0x73')],_0x33cbf8['value'][_0x8eae('0x1f')]);}}}else{var _0x109896=_(_0x1a7539[_0x8eae('0x3c')])[_0x8eae('0x3d')]()['map'](function(_0x2100c7){return _[_0x8eae('0x74')](_0x11c626,[_0x8eae('0x21'),_0x2100c7])?_0x2100c7:undefined;})[_0x8eae('0x75')]()[_0x8eae('0x62')]();if(!_[_0x8eae('0x76')](_0x109896)){_0x109896[_0x8eae('0x27')](function(_0x324f85){if(_0x324f85===_0x8eae('0x77')){_0x470f54[_0x8eae('0x43')](_0x8eae('0x78'),[][_0x8eae('0x79')](_0x1a7539['query'][_0x324f85]));}else if(_0x324f85===_0x8eae('0x7a')){var _0x11cd28=JSON[_0x8eae('0x7b')](_0x1a7539[_0x8eae('0x3c')][_0x324f85])[_0x8eae('0x7c')];var _0x4e4111=JSON[_0x8eae('0x7b')](_0x1a7539['query'][_0x324f85])['$lte'];_0x470f54[_0x8eae('0x43')](_0x8eae('0x7d'),_0x11cd28,_0x4e4111);}else{if(_0x1a7539[_0x8eae('0x3c')][_0x324f85]===_0x8eae('0x7e')){_0x470f54[_0x8eae('0x43')]('i.'+_0x324f85+_0x8eae('0x7f'));}else{_0x470f54[_0x8eae('0x43')]('i.'+_0x324f85+_0x8eae('0x80'),_0x1a7539[_0x8eae('0x3c')][_0x324f85]);}}});}if(_0x1a7539[_0x8eae('0x3c')][_0x8eae('0x81')]){if(_0x1a7539[_0x8eae('0x3c')]['read']==0x1){_0x470f54[_0x8eae('0x63')]('`unreadMessages`\x20=\x200');}else{_0x470f54['having']('`unreadMessages`\x20>\x200');}}if(_0x1a7539[_0x8eae('0x3c')][_0x8eae('0x82')]){_0x581947=_['isArray'](_0x1a7539[_0x8eae('0x3c')]['tag'])?_0x1a7539['query'][_0x8eae('0x82')]:new Array(_0x1a7539[_0x8eae('0x3c')][_0x8eae('0x82')]);_0x581947[_0x8eae('0x27')](function(_0x36cc6e){_0x14ec02['or'](_0x8eae('0x6f'),'%,'+_0x36cc6e+',%');});}if(_0x1a7539[_0x8eae('0x3c')][_0x8eae('0x83')]){var _0x5135cc=_0x1a7539['query'][_0x8eae('0x83')][_0x8eae('0x84')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x8eae('0x85')](_0x5135cc)){_0x3db9d0['or']('i.id\x20LIKE\x20?',_0x5135cc+'%');}else if(qs['isEmail'](_0x5135cc)){_0x3db9d0['or']('c.email\x20LIKE\x20?',_0x5135cc+'%');}else{_0x3db9d0['or'](_0x8eae('0x86'),qs[_0x8eae('0x6b')](_0x5135cc))['or'](_0x8eae('0x87'),qs[_0x8eae('0x6b')](_0x5135cc));}}}_0x470f54[_0x8eae('0x43')](_0x3db9d0);_0x470f54['group'](_0x8eae('0x88'));var _0x5092fe={'type':db['Sequelize'][_0x8eae('0x89')][_0x8eae('0x8a')],'raw':!![]};var _0x37704b=_0x470f54[_0x8eae('0x8b')]();_0x37704b[_0x8eae('0x47')]('i.id');_0x37704b[_0x8eae('0x47')](_0x8eae('0x8c'),_0x8eae('0x61'));if(_0xe4417d[_0x8eae('0x42')]){_0xe4417d[_0x8eae('0x42')][_0x8eae('0x27')](function(_0x53f549){var _0x10601e=_0x53f549[0x0]==='contactName'?_0x53f549[0x0]:'i.'+_0x53f549[0x0];_0x470f54[_0x8eae('0x42')](_0x10601e,_0x53f549[0x1]===_0x8eae('0x8d')?![]:!![]);});}if(!_[_0x8eae('0x76')](_0x581947)){_0x470f54['having'](_0x14ec02);_0x37704b[_0x8eae('0x43')](_0x8eae('0x8e'),_0x581947);}BPromise[_0x8eae('0x8f')]()['then'](function(){if(!_0x4f0e8e){if(_0x1a7539[_0x8eae('0x3c')][_0x8eae('0x77')])return;_0x37704b['where'](_0x8eae('0x90'));_0x470f54[_0x8eae('0x43')](_0x8eae('0x90'));return;}if(_0x1a7539[_0x8eae('0x91')][_0x8eae('0x92')]!==_0x8eae('0x93'))return;return _0x1a7539['user']['getMailAccounts']({'attributes':['id'],'raw':!![]})[_0x8eae('0x1e')](function(_0x13330e){if(_[_0x8eae('0x76')](_0x13330e)){_0x37704b[_0x8eae('0x43')](_0x8eae('0x94'));_0x470f54[_0x8eae('0x43')](_0x8eae('0x94'));}else{_0x37704b[_0x8eae('0x43')](_0x8eae('0x78'),_[_0x8eae('0x24')](_0x13330e,'id'));_0x470f54['where'](_0x8eae('0x78'),_[_0x8eae('0x24')](_0x13330e,'id'));}});})['then'](function(){if(_0x1a7539['user'][_0x8eae('0x92')]===_0x8eae('0x93')&&!_0x4f0e8e&&!_0x1a7539[_0x8eae('0x3c')]['MailAccountId'])return[];return db[_0x8eae('0x95')][_0x8eae('0x3c')](_0x37704b[_0x8eae('0x96')](),_0x5092fe);})['then'](function(_0x62fe9b){_0x17305e[_0x8eae('0x1a')]=_0x62fe9b[_0x8eae('0x5e')];if(_0x17305e['count']===0x0)return[];return db['sequelize'][_0x8eae('0x3c')](_0x32fec2[_0x8eae('0x96')](),_0x5092fe)[_0x8eae('0x1e')](function(_0x274c91){_0x2a4bc9=_[_0x8eae('0x97')](_0x274c91,'id');_0x5092fe=_[_0x8eae('0x98')](_0x5092fe,{'model':db[_0x8eae('0x99')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x1a7539[_0x8eae('0x3c')]['fields']){_0xe4417d[_0x8eae('0x3f')]['forEach'](function(_0x3644d9){_0x470f54[_0x8eae('0x47')]('i.'+_0x3644d9);});}else{_0x470f54['field'](_0x8eae('0x8c'),_0x8eae('0x61'));_0x470f54[_0x8eae('0x47')](_0x8eae('0x9a'),_0x8eae('0x9b'));_0x470f54['field'](_0x8eae('0x9c'),_0x8eae('0x9d'));_0x470f54[_0x8eae('0x47')]('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',_0x8eae('0x9e'));_0x470f54[_0x8eae('0x47')]('i.id');_0x470f54[_0x8eae('0x47')](_0x8eae('0x9f'));_0x470f54[_0x8eae('0x47')]('i.updatedAt');_0x470f54[_0x8eae('0x47')](_0x8eae('0xa0'));_0x470f54[_0x8eae('0x47')](_0x8eae('0xa1'));_0x470f54[_0x8eae('0x47')](_0x8eae('0xa2'));_0x470f54['field']('i.lastMsgAt');_0x470f54[_0x8eae('0x47')](_0x8eae('0xa3'));_0x470f54[_0x8eae('0x47')](_0x8eae('0xa4'));_0x470f54[_0x8eae('0x47')](_0x8eae('0xa5'));_0x470f54['field'](_0x8eae('0xa6'));_0x470f54[_0x8eae('0x47')](_0x8eae('0xa7'));_0x470f54[_0x8eae('0x47')]('i.substatus');_0x470f54[_0x8eae('0x47')](_0x8eae('0xa8'));_0x470f54[_0x8eae('0x47')](_0x8eae('0xa9'));_0x470f54[_0x8eae('0x47')](_0x8eae('0xaa'));_0x470f54[_0x8eae('0x47')](_0x8eae('0xab'));_0x470f54[_0x8eae('0x47')](_0x8eae('0xac'),_0x8eae('0xad'));_0x470f54[_0x8eae('0x47')](_0x8eae('0xae'),_0x8eae('0xaf'));_0x470f54[_0x8eae('0x47')](_0x8eae('0xb0'),_0x8eae('0xb1'));_0x470f54[_0x8eae('0x47')](_0x8eae('0xb2'),_0x8eae('0xb3'));_0x470f54[_0x8eae('0x47')]('c.mobile',_0x8eae('0xb4'));_0x470f54[_0x8eae('0x47')](_0x8eae('0xb5'),_0x8eae('0xb6'));_0x470f54['field'](_0x8eae('0xb7'),'Owner.fullname');_0x470f54[_0x8eae('0x47')](_0x8eae('0xb8'),'Owner.internal');_0x470f54[_0x8eae('0x47')](_0x8eae('0xb9'),_0x8eae('0x26'));}if(_0xe4417d[_0x8eae('0x19')])_0x470f54['limit'](_0xe4417d[_0x8eae('0x19')]);if(_0xe4417d[_0x8eae('0x17')])_0x470f54[_0x8eae('0x17')](_0xe4417d[_0x8eae('0x17')]);return db[_0x8eae('0x95')][_0x8eae('0x3c')](_0x470f54[_0x8eae('0x96')](),_0x5092fe);})['then'](function(_0x542bda){if(_0x542bda[_0x8eae('0x5e')]>0x0)_0x319a94['where'](_0x8eae('0xba'),_['map'](_0x542bda,'id'));return db[_0x8eae('0x95')][_0x8eae('0x3c')](_0x319a94[_0x8eae('0x96')](),_0x5092fe)[_0x8eae('0x1e')](function(_0x27612b){var _0x41a889=_[_0x8eae('0xbb')](_0x27612b,_0x8eae('0xbc'));var _0x3c3379=[];return db[_0x8eae('0xbd')][_0x8eae('0x2b')]({'attributes':[_0x8eae('0xbe')],'raw':!![]})['then'](function(_0x2ac47b){var _0x593d52=_0x2ac47b[_0x8eae('0xbe')];_0x542bda[_0x8eae('0x27')](function(_0x2397a7){_0x3c3379[_0x8eae('0x29')](updateMailInteraction(_0x2397a7,_0x2a4bc9,_0x41a889,_0x593d52));});return BPromise[_0x8eae('0xbf')](_0x3c3379);});});});})[_0x8eae('0x1e')](function(_0x3b36f4){_0x17305e['rows']=_0x3b36f4;return _0x17305e;})[_0x8eae('0x1e')](respondWithFilteredResult(_0x576c00,_0xe4417d))[_0x8eae('0x30')](handleError(_0x576c00,null));};exports['show']=function(_0x2c0e5f,_0x3850c5){var _0x4d5bec={'raw':![],'where':{'id':_0x2c0e5f[_0x8eae('0xc0')]['id']}},_0x580095={};_0x580095['model']=_[_0x8eae('0x3d')](db[_0x8eae('0x99')][_0x8eae('0x38')]);_0x580095[_0x8eae('0x3c')]=_[_0x8eae('0x3d')](_0x2c0e5f['query']);_0x580095[_0x8eae('0x44')]=_[_0x8eae('0x3e')](_0x580095['model'],_0x580095['query']);_0x4d5bec[_0x8eae('0x3f')]=_['intersection'](_0x580095[_0x8eae('0x3b')],qs[_0x8eae('0x40')](_0x2c0e5f[_0x8eae('0x3c')][_0x8eae('0x40')]));_0x4d5bec[_0x8eae('0x3f')]=_0x4d5bec[_0x8eae('0x3f')][_0x8eae('0x5e')]?_0x4d5bec[_0x8eae('0x3f')]:_0x580095[_0x8eae('0x3b')];if(_0x2c0e5f[_0x8eae('0x3c')][_0x8eae('0xc1')]){_0x4d5bec[_0x8eae('0xc2')]=[{'all':!![]}];}_0x4d5bec=_[_0x8eae('0x98')]({},_0x4d5bec,_0x2c0e5f['options']);return db[_0x8eae('0x99')][_0x8eae('0x60')](_0x4d5bec)[_0x8eae('0x1e')](handleEntityNotFound(_0x3850c5,null))[_0x8eae('0x1e')](respondWithResult(_0x3850c5,null))['catch'](handleError(_0x3850c5,null));};exports[_0x8eae('0xc3')]=function(_0x1f6ab6,_0x531cbb){return db[_0x8eae('0x99')][_0x8eae('0xc3')](_0x1f6ab6[_0x8eae('0xc4')],{})['then'](respondWithResult(_0x531cbb,0xc9))[_0x8eae('0x30')](handleError(_0x531cbb,null));};exports['update']=function(_0x10154c,_0x24ae5e){if(_0x10154c[_0x8eae('0xc4')]['id']){delete _0x10154c[_0x8eae('0xc4')]['id'];}return db[_0x8eae('0x99')]['find']({'where':{'id':_0x10154c[_0x8eae('0xc0')]['id']}})['then'](handleEntityNotFound(_0x24ae5e,null))[_0x8eae('0x1e')](saveUpdates(_0x10154c[_0x8eae('0xc4')],null))[_0x8eae('0x1e')](respondWithResult(_0x24ae5e,null))[_0x8eae('0x30')](handleError(_0x24ae5e,null));};exports[_0x8eae('0xc5')]=function(_0x3136d2,_0x34a42f){return db[_0x8eae('0x99')][_0x8eae('0x60')]({'where':{'id':_0x3136d2[_0x8eae('0xc0')]['id']}})[_0x8eae('0x1e')](handleEntityNotFound(_0x34a42f,null))[_0x8eae('0x1e')](removeEntity(_0x34a42f,null))[_0x8eae('0x30')](handleError(_0x34a42f,null));};exports['describe']=function(_0x1208c2,_0x2dfc06){return db[_0x8eae('0x99')][_0x8eae('0xc6')]()[_0x8eae('0x1e')](respondWithResult(_0x2dfc06,null))[_0x8eae('0x30')](handleError(_0x2dfc06,null));};exports[_0x8eae('0xc7')]=function(_0x18a73d,_0x26e03c){return db[_0x8eae('0x2a')][_0x8eae('0x60')]({'where':{'id':_0x18a73d['params']['id']}})['then'](handleEntityNotFound(_0x26e03c,null))[_0x8eae('0x1e')](function(_0x234e3a){if(_0x234e3a){return _0x234e3a[_0x8eae('0xc7')](_0x18a73d[_0x8eae('0xc4')][_0x8eae('0xc8')],_[_0x8eae('0xc9')](_0x18a73d[_0x8eae('0xc4')],[_0x8eae('0xc8'),'id'])||{});}})['then'](respondWithResult(_0x26e03c,null))['catch'](handleError(_0x26e03c,null));};exports[_0x8eae('0xca')]=function(_0x4e0502,_0x591e58){var _0x5cb329={'raw':![],'where':{}};var _0x330573={};var _0x4a3807={'count':0x0,'rows':[]};return db[_0x8eae('0x99')][_0x8eae('0x2b')]({'where':{'id':_0x4e0502['params']['id']}})[_0x8eae('0x1e')](handleEntityNotFound(_0x591e58,null))['then'](function(_0x3865cf){if(_0x3865cf){_0x330573['model']=_[_0x8eae('0x3d')](db[_0x8eae('0x2a')][_0x8eae('0x38')]);_0x330573[_0x8eae('0x3c')]=_['keys'](_0x4e0502[_0x8eae('0x3c')]);_0x330573[_0x8eae('0x44')]=_['intersection'](_0x330573[_0x8eae('0x3b')],_0x330573['query']);_0x5cb329[_0x8eae('0x3f')]=_['intersection'](_0x330573['model'],qs[_0x8eae('0x40')](_0x4e0502[_0x8eae('0x3c')]['fields']));_0x5cb329[_0x8eae('0x3f')]=_0x5cb329[_0x8eae('0x3f')]['length']?_0x5cb329['attributes']:_0x330573[_0x8eae('0x3b')];if(!_0x4e0502[_0x8eae('0x3c')][_0x8eae('0x41')]('nolimit')){_0x5cb329[_0x8eae('0x19')]=qs[_0x8eae('0x19')](_0x4e0502[_0x8eae('0x3c')][_0x8eae('0x19')]);_0x5cb329['offset']=qs[_0x8eae('0x17')](_0x4e0502[_0x8eae('0x3c')][_0x8eae('0x17')]);}_0x5cb329[_0x8eae('0x42')]=qs[_0x8eae('0xcb')](_0x4e0502[_0x8eae('0x3c')]['sort']);_0x5cb329['where']=qs[_0x8eae('0x44')](_[_0x8eae('0x45')](_0x4e0502[_0x8eae('0x3c')],_0x330573['filters']));_0x5cb329[_0x8eae('0x43')][_0x8eae('0xbc')]=_0x3865cf['id'];if(_0x4e0502[_0x8eae('0x3c')][_0x8eae('0x83')]){_0x5cb329[_0x8eae('0x43')]=_[_0x8eae('0x98')](_0x5cb329['where'],{'$or':_[_0x8eae('0x24')](_0x5cb329[_0x8eae('0x3f')],function(_0x5081ea){var _0x397a2d={};_0x397a2d[_0x5081ea]={'$like':'%'+_0x4e0502['query'][_0x8eae('0x83')]+'%'};return _0x397a2d;})});}if(_0x4e0502['query'][_0x8eae('0x7c')]){var _0x41a431=_0x4e0502[_0x8eae('0x3c')][_0x8eae('0x7c')]['split'](',');var _0xbe6dfc={};_0xbe6dfc[_0x41a431[0x0]]={'$gte':moment(_0x41a431[0x1])['format'](_0x8eae('0xcc'))};_0x5cb329['where']=_[_0x8eae('0x98')](_0x5cb329[_0x8eae('0x43')],_0xbe6dfc);}_0x5cb329=_[_0x8eae('0x98')]({},_0x5cb329,_0x4e0502[_0x8eae('0xcd')]);return db[_0x8eae('0x2a')][_0x8eae('0x1a')]({'where':_0x5cb329[_0x8eae('0x43')]})[_0x8eae('0x1e')](function(_0x1757f8){_0x4a3807['count']=_0x1757f8;if(_0x4e0502[_0x8eae('0x3c')][_0x8eae('0xc1')]){_0x5cb329[_0x8eae('0xc2')]=[{'all':!![]}];}return db[_0x8eae('0x2a')]['findAll'](_0x5cb329);})[_0x8eae('0x1e')](function(_0x21a1d9){if(_0x4e0502[_0x8eae('0x3c')][_0x8eae('0xce')]==='true'){for(var _0x2bc8fb=0x0;_0x2bc8fb<_0x21a1d9[_0x8eae('0x5e')];_0x2bc8fb++){_0x21a1d9[_0x2bc8fb][_0x8eae('0xc4')]=juice(_0x21a1d9[_0x2bc8fb][_0x8eae('0xc4')]);}}_0x4a3807[_0x8eae('0xcf')]=_0x21a1d9;return _0x4a3807;});}})[_0x8eae('0x1e')](respondWithFilteredResult(_0x591e58,_0x5cb329))['catch'](handleError(_0x591e58,null));};exports[_0x8eae('0xd0')]=function(_0x3f1cd5,_0x4bc059){return db[_0x8eae('0x99')][_0x8eae('0x60')]({'where':{'id':_0x3f1cd5[_0x8eae('0xc0')]['id']}})[_0x8eae('0x1e')](handleEntityNotFound(_0x4bc059,null))['then'](function(_0x2198cb){if(_0x2198cb){return _0x2198cb[_0x8eae('0xd1')](_0x3f1cd5[_0x8eae('0xc4')][_0x8eae('0xc8')],_['omit'](_0x3f1cd5[_0x8eae('0xc4')],[_0x8eae('0xc8'),'id'])||{})[_0x8eae('0xd2')](function(){return db[_0x8eae('0xd3')][_0x8eae('0xd4')]({'attributes':['id','name','color'],'where':{'id':_0x3f1cd5[_0x8eae('0xc4')][_0x8eae('0xc8')]}});})[_0x8eae('0x1e')](function(_0x191cfd){socket[_0x8eae('0xd5')](_0x8eae('0xd6'),{'id':Number(_0x3f1cd5[_0x8eae('0xc0')]['id']),'tags':_0x191cfd||[]});return{'id':Number(_0x3f1cd5[_0x8eae('0xc0')]['id']),'tags':_0x191cfd||[]};});}})['then'](respondWithResult(_0x4bc059,null))[_0x8eae('0x30')](handleError(_0x4bc059,null));};exports[_0x8eae('0xd7')]=function(_0x4fcd1b,_0x4370ad){return db[_0x8eae('0x99')]['find']({'where':{'id':_0x4fcd1b[_0x8eae('0xc0')]['id']}})[_0x8eae('0x1e')](handleEntityNotFound(_0x4370ad,null))[_0x8eae('0x1e')](function(_0x3d7e52){if(_0x3d7e52){return _0x3d7e52[_0x8eae('0xd7')](_0x4fcd1b[_0x8eae('0x3c')][_0x8eae('0xc8')]);}})['then'](respondWithStatusCode(_0x4370ad,null))['catch'](handleError(_0x4370ad,null));};exports['download']=function(_0x22f0a1,_0x36e128){var _0x2442ae=moment()[_0x8eae('0xd8')]()[_0x8eae('0x96')]();var _0xd0e216=path['join'](config[_0x8eae('0xd9')],_0x8eae('0xda'),_0x8eae('0xdb'),_0x8eae('0xdc'));var _0x543375=path[_0x8eae('0xdd')](config[_0x8eae('0xd9')],'server',_0x8eae('0xdb'),'attachments');var _0x24d3cc=path[_0x8eae('0xdd')](_0xd0e216,_0x2442ae);var _0x3b1374=util[_0x8eae('0xde')](_0x8eae('0xdf'),_0x22f0a1[_0x8eae('0xc0')]['id'],_0x2442ae);var _0x30577e=path['join'](_0xd0e216,_0x3b1374);var _0x3f0f5a=[];if(_0x22f0a1[_0x8eae('0x3c')][_0x8eae('0xe0')]){_0x3f0f5a['push']({'model':db[_0x8eae('0xe1')],'as':_0x8eae('0xe2'),'raw':!![]});}var _0x32b45a=[{'model':db[_0x8eae('0x2a')],'as':'Messages','attributes':['id',_0x8eae('0xc4'),_0x8eae('0x49'),'to','cc',_0x8eae('0xe3'),_0x8eae('0xe4'),_0x8eae('0x7a')],'where':{'secret':![]},'order':qs[_0x8eae('0xcb')]('id'),'include':_0x3f0f5a}];return db[_0x8eae('0x99')]['find']({'where':{'id':_0x22f0a1[_0x8eae('0xc0')]['id']},'include':_0x32b45a})['then'](handleEntityNotFound(_0x36e128,null))[_0x8eae('0x1e')](function(_0xb8de65){if(_0xb8de65&&_0xb8de65[_0x8eae('0xe5')]){var _0x278be2=_0xb8de65[_0x8eae('0xe6')]({'plain':!![]});fs[_0x8eae('0xe7')](_0x24d3cc);return BPromise['each'](_0x278be2[_0x8eae('0xe5')],function(_0x152ceb,_0x4c103c){var _0x535e07={'from':_0x152ceb['from'],'to':_0x152ceb['to'],'subject':_0x152ceb[_0x8eae('0xe4')],'html':htmlEntities['decode'](_0x152ceb[_0x8eae('0xc4')]),'headers':{'Date':moment(_0x152ceb['createdAt'])[_0x8eae('0xde')](_0x8eae('0xe8'))},'attachments':[]};if(_0x152ceb['cc']){_0x535e07[_0x8eae('0xe9')]['Cc']=_0x152ceb['cc'];}if(_0x152ceb[_0x8eae('0xe3')]){_0x535e07[_0x8eae('0xe9')]['Bcc']=_0x152ceb[_0x8eae('0xe3')];}return new BPromise(function(_0xad6a93,_0x46fae5){if(_0x152ceb[_0x8eae('0xe2')]){for(var _0x1c7465=0x0;_0x1c7465<_0x152ceb[_0x8eae('0xe2')]['length'];_0x1c7465++){var _0x3a8c56=_0x152ceb['Attachments'][_0x1c7465];var _0x3d200a=path[_0x8eae('0xdd')](_0x543375,_0x3a8c56[_0x8eae('0xea')]);if(fs['existsSync'](_0x3d200a)){_0x535e07['attachments'][_0x8eae('0x29')]({'name':_0x3a8c56[_0x8eae('0x21')],'contentType':_0x3a8c56[_0x8eae('0x6e')],'data':fs[_0x8eae('0xeb')](_0x3d200a)});}}}emlformat[_0x8eae('0xec')](_0x535e07,function(_0x252959,_0x40cef3){if(_0x252959)return _0x46fae5(_0x252959);fs[_0x8eae('0xed')](path[_0x8eae('0xdd')](_0x24d3cc,util['format'](_0x8eae('0xee'),_0x4c103c)),_0x40cef3);return _0xad6a93(_0x40cef3);});});})[_0x8eae('0x1e')](function(){return new BPromise(function(_0x1d4886,_0x2d8ab7){zipdir(_0x24d3cc,{'saveTo':_0x30577e},function(_0x27e438,_0x190308){if(_0x27e438)return _0x2d8ab7(_0x27e438);return _0x1d4886(_0x190308);});})[_0x8eae('0x1e')](function(){return new BPromise(function(_0x317d47,_0x483fa0){rimraf(_0x24d3cc,function(_0xfb1c09){if(_0xfb1c09)_0x483fa0(_0xfb1c09);return _0x317d47();});});})[_0x8eae('0x1e')](function(){return _0x36e128[_0x8eae('0xef')](_0x30577e,_0x3b1374,function(_0x5df20c){if(!_0x5df20c)fs['unlinkSync'](_0x30577e);});});});}else{return _0x36e128['sendStatus'](0xc8);}})[_0x8eae('0x30')](handleError(_0x36e128,null));};
\ No newline at end of file
index 1228dbf..0d17e01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x334f=['length','emit','hook','exports','../../mysqldb','MailInteraction','MailMessage','save','remove','getUsers','setDataValue','Users','map','findAll','then'];(function(_0x277b55,_0x8ba28){var _0xff0d15=function(_0x1beefc){while(--_0x1beefc){_0x277b55['push'](_0x277b55['shift']());}};_0xff0d15(++_0x8ba28);}(_0x334f,0x18a));var _0xf334=function(_0x241204,_0x28b505){_0x241204=_0x241204-0x0;var _0x30475b=_0x334f[_0x241204];return _0x30475b;};'use strict';var EventEmitter=require('events');var MailInteraction=require(_0xf334('0x0'))['db'][_0xf334('0x1')];var MailMessage=require(_0xf334('0x0'))['db'][_0xf334('0x2')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf334('0x3'),'afterUpdate':'update','afterDestroy':_0xf334('0x4')};function emitEvent(_0x5b0a15){return function(_0x103dd2,_0x381a92,_0x505680){_0x103dd2[_0xf334('0x5')]({'attributes':['id'],'raw':!![]})['then'](function(_0x2e3cf5){_0x103dd2[_0xf334('0x6')](_0xf334('0x7'),_0x2e3cf5[_0xf334('0x8')](function(_0x57b6d2){return{'id':_0x57b6d2['id']};}));return MailMessage[_0xf334('0x9')]({'where':{'MailInteractionId':_0x103dd2['id'],'direction':'in','read':![]},'raw':!![]});})[_0xf334('0xa')](function(_0x44e065){_0x103dd2[_0xf334('0x6')]('unreadMessages',_0x44e065[_0xf334('0xb')]);MailInteractionEvents[_0xf334('0xc')](_0x5b0a15+':'+_0x103dd2['id'],_0x103dd2);MailInteractionEvents[_0xf334('0xc')](_0x5b0a15,_0x103dd2);_0x505680(null);})['catch'](_0x505680(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailInteraction[_0xf334('0xd')](e,emitEvent(event));}}module[_0xf334('0xe')]=MailInteractionEvents;
\ No newline at end of file
+var _0xc091=['save','update','remove','getUsers','then','setDataValue','Users','map','findAll','unreadMessages','length','emit','catch','hook','exports','events','../../mysqldb','MailInteraction','MailMessage','setMaxListeners'];(function(_0x5987e5,_0x5ebbc5){var _0x5c99fe=function(_0x320b33){while(--_0x320b33){_0x5987e5['push'](_0x5987e5['shift']());}};_0x5c99fe(++_0x5ebbc5);}(_0xc091,0x1b3));var _0x1c09=function(_0x31ad68,_0x20968a){_0x31ad68=_0x31ad68-0x0;var _0x5270c5=_0xc091[_0x31ad68];return _0x5270c5;};'use strict';var EventEmitter=require(_0x1c09('0x0'));var MailInteraction=require(_0x1c09('0x1'))['db'][_0x1c09('0x2')];var MailMessage=require(_0x1c09('0x1'))['db'][_0x1c09('0x3')];var MailInteractionEvents=new EventEmitter();MailInteractionEvents[_0x1c09('0x4')](0x0);var events={'afterCreate':_0x1c09('0x5'),'afterUpdate':_0x1c09('0x6'),'afterDestroy':_0x1c09('0x7')};function emitEvent(_0xb13de3){return function(_0x420047,_0xb79c75,_0x23669e){_0x420047[_0x1c09('0x8')]({'attributes':['id'],'raw':!![]})[_0x1c09('0x9')](function(_0x21aa9e){_0x420047[_0x1c09('0xa')](_0x1c09('0xb'),_0x21aa9e[_0x1c09('0xc')](function(_0x2e47bb){return{'id':_0x2e47bb['id']};}));return MailMessage[_0x1c09('0xd')]({'where':{'MailInteractionId':_0x420047['id'],'direction':'in','read':![]},'raw':!![]});})[_0x1c09('0x9')](function(_0x1d55c6){_0x420047[_0x1c09('0xa')](_0x1c09('0xe'),_0x1d55c6[_0x1c09('0xf')]);MailInteractionEvents[_0x1c09('0x10')](_0xb13de3+':'+_0x420047['id'],_0x420047);MailInteractionEvents[_0x1c09('0x10')](_0xb13de3,_0x420047);_0x23669e(null);})[_0x1c09('0x11')](_0x23669e(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailInteraction[_0x1c09('0x12')](e,emitEvent(event));}}module[_0x1c09('0x13')]=MailInteractionEvents;
\ No newline at end of file
index 1217252..501af44 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7968=['path','rimraf','../../config/environment','./mailInteraction.attributes','exports','define','mail_interactions','fti_mail_interactions','FULLTEXT','substatus','substatusAt','format','closed','closedAt','YYYY-MM-DD\x20HH:mm:ss','changed','models','get','MailMessage','catch','utf8mb4','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x82233,_0x4eb6c6){var _0x542a10=function(_0x3ff495){while(--_0x3ff495){_0x82233['push'](_0x82233['shift']());}};_0x542a10(++_0x4eb6c6);}(_0x7968,0x18f));var _0x8796=function(_0x2d2392,_0x214426){_0x2d2392=_0x2d2392-0x0;var _0x1cefdc=_0x7968[_0x2d2392];return _0x1cefdc;};'use strict';var _=require(_0x8796('0x0'));var util=require(_0x8796('0x1'));var logger=require(_0x8796('0x2'))(_0x8796('0x3'));var moment=require(_0x8796('0x4'));var BPromise=require('bluebird');var rp=require(_0x8796('0x5'));var fs=require('fs');var path=require(_0x8796('0x6'));var rimraf=require(_0x8796('0x7'));var config=require(_0x8796('0x8'));var attributes=require(_0x8796('0x9'));module[_0x8796('0xa')]=function(_0x2238f3,_0x47306f){return _0x2238f3[_0x8796('0xb')]('MailInteraction',attributes,{'tableName':_0x8796('0xc'),'paranoid':![],'indexes':[{'name':_0x8796('0xd'),'fields':['subject','to'],'type':_0x8796('0xe')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x288d1a,_0x24eda4,_0x22bb3f){if(_0x288d1a[_0x8796('0xf')]){_0x288d1a[_0x8796('0x10')]=moment()[_0x8796('0x11')]('YYYY-MM-DD\x20HH:mm:ss');}if(_0x288d1a[_0x8796('0x12')]){_0x288d1a[_0x8796('0x13')]=moment()['format'](_0x8796('0x14'));}_0x22bb3f(null,_0x24eda4);},'beforeUpdate':function(_0x590500,_0x51a04f,_0x533f21){if(_0x590500[_0x8796('0x15')](_0x8796('0xf'))){_0x590500[_0x8796('0x10')]=_0x590500[_0x8796('0xf')]?moment()[_0x8796('0x11')](_0x8796('0x14')):null;}if(_0x590500[_0x8796('0x15')](_0x8796('0x12'))){_0x590500['closedAt']=moment()[_0x8796('0x11')](_0x8796('0x14'));_0x590500[_0x8796('0xf')]=null;_0x590500[_0x8796('0x10')]=null;}_0x533f21(null,_0x590500);},'afterUpdate':function(_0x564a9a,_0x309868,_0x2a4e1b){var _0x433192=_0x2238f3[_0x8796('0x16')];var _0x25b69d=_0x564a9a[_0x8796('0x17')]({'plain':!![]});if(_0x25b69d[_0x8796('0x12')]){return _0x433192[_0x8796('0x18')]['update']({'read':!![]},{'where':{'MailInteractionId':_0x25b69d['id']}})['then'](function(){_0x2a4e1b();})[_0x8796('0x19')](function(_0x19ac18){_0x2a4e1b(_0x19ac18);});}else{_0x2a4e1b();}}},'charset':_0x8796('0x1a'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0xfaf2=['format','changed','MailMessage','update','then','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','path','rimraf','./mailInteraction.attributes','exports','MailInteraction','subject','FULLTEXT','substatus','substatusAt','YYYY-MM-DD\x20HH:mm:ss','closed','closedAt'];(function(_0x1344d6,_0x2181e6){var _0xf45b24=function(_0x2d90c1){while(--_0x2d90c1){_0x1344d6['push'](_0x1344d6['shift']());}};_0xf45b24(++_0x2181e6);}(_0xfaf2,0x79));var _0x2faf=function(_0x13f1e9,_0xc0056d){_0x13f1e9=_0x13f1e9-0x0;var _0x10ca15=_0xfaf2[_0x13f1e9];return _0x10ca15;};'use strict';var _=require(_0x2faf('0x0'));var util=require(_0x2faf('0x1'));var logger=require(_0x2faf('0x2'))('api');var moment=require(_0x2faf('0x3'));var BPromise=require(_0x2faf('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2faf('0x5'));var rimraf=require(_0x2faf('0x6'));var config=require('../../config/environment');var attributes=require(_0x2faf('0x7'));module[_0x2faf('0x8')]=function(_0x115837,_0x1d9a17){return _0x115837['define'](_0x2faf('0x9'),attributes,{'tableName':'mail_interactions','paranoid':![],'indexes':[{'name':'fti_mail_interactions','fields':[_0x2faf('0xa'),'to'],'type':_0x2faf('0xb')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0xdf6789,_0x37db70,_0x5aa98a){if(_0xdf6789[_0x2faf('0xc')]){_0xdf6789[_0x2faf('0xd')]=moment()['format'](_0x2faf('0xe'));}if(_0xdf6789[_0x2faf('0xf')]){_0xdf6789[_0x2faf('0x10')]=moment()[_0x2faf('0x11')](_0x2faf('0xe'));}_0x5aa98a(null,_0x37db70);},'beforeUpdate':function(_0x988ff2,_0x5f3a81,_0x47edf5){if(_0x988ff2[_0x2faf('0x12')]('substatus')){_0x988ff2[_0x2faf('0xd')]=_0x988ff2[_0x2faf('0xc')]?moment()['format'](_0x2faf('0xe')):null;}if(_0x988ff2[_0x2faf('0x12')](_0x2faf('0xf'))){_0x988ff2['closedAt']=moment()[_0x2faf('0x11')](_0x2faf('0xe'));_0x988ff2['substatus']=null;_0x988ff2[_0x2faf('0xd')]=null;}_0x47edf5(null,_0x988ff2);},'afterUpdate':function(_0x10a048,_0x6cf7c5,_0x2322f6){var _0x1172e9=_0x115837['models'];var _0x4f9adc=_0x10a048['get']({'plain':!![]});if(_0x4f9adc['closed']){return _0x1172e9[_0x2faf('0x13')][_0x2faf('0x14')]({'read':!![]},{'where':{'MailInteractionId':_0x4f9adc['id']}})[_0x2faf('0x15')](function(){_0x2322f6();})['catch'](function(_0x1c7fd6){_0x2322f6(_0x1c7fd6);});}else{_0x2322f6();}}},'charset':'utf8mb4','collate':_0x2faf('0x16')});};
\ No newline at end of file
index 3595985..8281916 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x873e=['client','http','defaults','redis','localhost','./mailInteraction.socket','register','request','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','MailInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','UpdateMailInteraction','MailInteraction','update','body','options','raw','where','attributes','limit','find','ids','omit','spread','AddTags','lodash','util','moment','bluebird','randomstring','rpc','../../config/environment'];(function(_0x34e250,_0x58573a){var _0x20d6f9=function(_0x3714bb){while(--_0x3714bb){_0x34e250['push'](_0x34e250['shift']());}};_0x20d6f9(++_0x58573a);}(_0x873e,0x141));var _0xe873=function(_0x54e85e,_0x4c457d){_0x54e85e=_0x54e85e-0x0;var _0x5d3c5b=_0x873e[_0x54e85e];return _0x5d3c5b;};'use strict';var _=require(_0xe873('0x0'));var util=require(_0xe873('0x1'));var moment=require(_0xe873('0x2'));var BPromise=require(_0xe873('0x3'));var rs=require(_0xe873('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xe873('0x5'));var config=require(_0xe873('0x6'));var jayson=require('jayson/promise');var client=jayson[_0xe873('0x7')][_0xe873('0x8')]({'port':0x232a});config['redis']=_[_0xe873('0x9')](config[_0xe873('0xa')],{'host':_0xe873('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe873('0xa')]));require(_0xe873('0xc'))[_0xe873('0xd')](socket);function respondWithRpcPromise(_0x5793f5,_0x2fe9b7,_0x285afb){return new BPromise(function(_0x222e3b,_0x39d31c){return client[_0xe873('0xe')](_0x5793f5,_0x285afb)[_0xe873('0xf')](function(_0x21ee80){logger[_0xe873('0x10')](_0xe873('0x11'),_0x2fe9b7,_0xe873('0x12'));logger[_0xe873('0x13')](_0xe873('0x14'),_0x2fe9b7,_0xe873('0x12'),JSON[_0xe873('0x15')](_0x21ee80));if(_0x21ee80['error']){if(_0x21ee80[_0xe873('0x16')][_0xe873('0x17')]===0x1f4){logger[_0xe873('0x16')](_0xe873('0x11'),_0x2fe9b7,_0x21ee80[_0xe873('0x16')][_0xe873('0x18')]);return _0x39d31c(_0x21ee80['error'][_0xe873('0x18')]);}logger[_0xe873('0x16')](_0xe873('0x11'),_0x2fe9b7,_0x21ee80[_0xe873('0x16')][_0xe873('0x18')]);return _0x222e3b(_0x21ee80[_0xe873('0x16')][_0xe873('0x18')]);}else{logger['info'](_0xe873('0x11'),_0x2fe9b7,_0xe873('0x12'));_0x222e3b(_0x21ee80[_0xe873('0x19')][_0xe873('0x18')]);}})[_0xe873('0x1a')](function(_0x1af55a){logger[_0xe873('0x16')](_0xe873('0x11'),_0x2fe9b7,_0x1af55a);_0x39d31c(_0x1af55a);});});}exports[_0xe873('0x1b')]=function(_0x4e62f6){var _0x593c77=this;return new Promise(function(_0x2a7c4d,_0x165710){return db[_0xe873('0x1c')][_0xe873('0x1d')](_0x4e62f6[_0xe873('0x1e')],{'raw':_0x4e62f6[_0xe873('0x1f')]?_0x4e62f6[_0xe873('0x1f')][_0xe873('0x20')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4e62f6[_0xe873('0x1f')]?_0x4e62f6[_0xe873('0x1f')][_0xe873('0x21')]||null:null,'attributes':_0x4e62f6[_0xe873('0x1f')]?_0x4e62f6[_0xe873('0x1f')][_0xe873('0x22')]||null:null,'limit':_0x4e62f6[_0xe873('0x1f')]?_0x4e62f6[_0xe873('0x1f')][_0xe873('0x23')]||null:null})['then'](function(_0x1124c6){logger['info'](_0xe873('0x1b'),_0x4e62f6);logger[_0xe873('0x13')]('UpdateMailInteraction',_0x4e62f6,JSON[_0xe873('0x15')](_0x1124c6));_0x2a7c4d(_0x1124c6);})['catch'](function(_0x29415a){logger[_0xe873('0x16')](_0xe873('0x1b'),_0x29415a[_0xe873('0x18')],_0x4e62f6);_0x165710(_0x593c77[_0xe873('0x16')](0x1f4,_0x29415a[_0xe873('0x18')]));});});};exports['AddTagsToMailInteraction']=function(_0x4476a7){return new Promise(function(_0x374b30,_0x53593c){return db[_0xe873('0x1c')][_0xe873('0x24')]({'where':_0x4476a7[_0xe873('0x1f')]?_0x4476a7[_0xe873('0x1f')][_0xe873('0x21')]||null:null})['then'](function(_0x3dc533){if(_0x3dc533){return _0x3dc533['addTags'](_0x4476a7['body'][_0xe873('0x25')],_[_0xe873('0x26')](_0x4476a7[_0xe873('0x1e')],[_0xe873('0x25'),'id'])||{});}})[_0xe873('0x27')](function(_0xadaac7){logger['info']('AddTags',_0x4476a7);logger[_0xe873('0x13')](_0xe873('0x28'),_0x4476a7,JSON[_0xe873('0x15')](_0xadaac7));_0x374b30(_0xadaac7);})['catch'](function(_0x4617d8){logger[_0xe873('0x16')](_0xe873('0x28'),_0x4617d8[_0xe873('0x18')],_0x4476a7);_0x53593c(_this[_0xe873('0x16')](0x1f4,_0x4617d8[_0xe873('0x18')]));});});};
\ No newline at end of file
+var _0xfd1e=['ids','omit','spread','AddTags','lodash','util','moment','randomstring','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./mailInteraction.socket','register','then','info','MailInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','UpdateMailInteraction','MailInteraction','update','body','options','raw','where','attributes','limit','AddTagsToMailInteraction','find','addTags'];(function(_0xd09668,_0x1435b2){var _0x68726=function(_0x54a030){while(--_0x54a030){_0xd09668['push'](_0xd09668['shift']());}};_0x68726(++_0x1435b2);}(_0xfd1e,0x154));var _0xefd1=function(_0x257fce,_0x49373d){_0x257fce=_0x257fce-0x0;var _0x450f7d=_0xfd1e[_0x257fce];return _0x450f7d;};'use strict';var _=require(_0xefd1('0x0'));var util=require(_0xefd1('0x1'));var moment=require(_0xefd1('0x2'));var BPromise=require('bluebird');var rs=require(_0xefd1('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0xefd1('0x4'));var logger=require(_0xefd1('0x5'))(_0xefd1('0x6'));var config=require(_0xefd1('0x7'));var jayson=require(_0xefd1('0x8'));var client=jayson[_0xefd1('0x9')][_0xefd1('0xa')]({'port':0x232a});config[_0xefd1('0xb')]=_[_0xefd1('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xefd1('0xd'))(new Redis(config[_0xefd1('0xb')]));require(_0xefd1('0xe'))[_0xefd1('0xf')](socket);function respondWithRpcPromise(_0x3376d0,_0x9f7eef,_0xb86deb){return new BPromise(function(_0x2fa36e,_0x13062c){return client['request'](_0x3376d0,_0xb86deb)[_0xefd1('0x10')](function(_0x27dee0){logger[_0xefd1('0x11')](_0xefd1('0x12'),_0x9f7eef,_0xefd1('0x13'));logger[_0xefd1('0x14')]('MailInteraction,\x20%s,\x20%s,\x20%s',_0x9f7eef,_0xefd1('0x13'),JSON[_0xefd1('0x15')](_0x27dee0));if(_0x27dee0['error']){if(_0x27dee0[_0xefd1('0x16')]['code']===0x1f4){logger[_0xefd1('0x16')](_0xefd1('0x12'),_0x9f7eef,_0x27dee0[_0xefd1('0x16')][_0xefd1('0x17')]);return _0x13062c(_0x27dee0[_0xefd1('0x16')][_0xefd1('0x17')]);}logger['error'](_0xefd1('0x12'),_0x9f7eef,_0x27dee0[_0xefd1('0x16')][_0xefd1('0x17')]);return _0x2fa36e(_0x27dee0[_0xefd1('0x16')][_0xefd1('0x17')]);}else{logger[_0xefd1('0x11')](_0xefd1('0x12'),_0x9f7eef,'request\x20sent');_0x2fa36e(_0x27dee0[_0xefd1('0x18')][_0xefd1('0x17')]);}})[_0xefd1('0x19')](function(_0x3cb00d){logger['error']('MailInteraction,\x20%s,\x20%s',_0x9f7eef,_0x3cb00d);_0x13062c(_0x3cb00d);});});}exports[_0xefd1('0x1a')]=function(_0x5c1185){var _0x4ce794=this;return new Promise(function(_0x26e2fe,_0x581aaa){return db[_0xefd1('0x1b')][_0xefd1('0x1c')](_0x5c1185[_0xefd1('0x1d')],{'raw':_0x5c1185['options']?_0x5c1185[_0xefd1('0x1e')][_0xefd1('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5c1185[_0xefd1('0x1e')]?_0x5c1185[_0xefd1('0x1e')][_0xefd1('0x20')]||null:null,'attributes':_0x5c1185[_0xefd1('0x1e')]?_0x5c1185[_0xefd1('0x1e')][_0xefd1('0x21')]||null:null,'limit':_0x5c1185[_0xefd1('0x1e')]?_0x5c1185[_0xefd1('0x1e')][_0xefd1('0x22')]||null:null})[_0xefd1('0x10')](function(_0x555bdd){logger['info']('UpdateMailInteraction',_0x5c1185);logger['debug'](_0xefd1('0x1a'),_0x5c1185,JSON[_0xefd1('0x15')](_0x555bdd));_0x26e2fe(_0x555bdd);})['catch'](function(_0x19f29d){logger[_0xefd1('0x16')](_0xefd1('0x1a'),_0x19f29d[_0xefd1('0x17')],_0x5c1185);_0x581aaa(_0x4ce794['error'](0x1f4,_0x19f29d[_0xefd1('0x17')]));});});};exports[_0xefd1('0x23')]=function(_0x2ec56d){return new Promise(function(_0xed77cd,_0xeedbfe){return db[_0xefd1('0x1b')][_0xefd1('0x24')]({'where':_0x2ec56d[_0xefd1('0x1e')]?_0x2ec56d['options'][_0xefd1('0x20')]||null:null})[_0xefd1('0x10')](function(_0x50d7ba){if(_0x50d7ba){return _0x50d7ba[_0xefd1('0x25')](_0x2ec56d[_0xefd1('0x1d')][_0xefd1('0x26')],_[_0xefd1('0x27')](_0x2ec56d[_0xefd1('0x1d')],[_0xefd1('0x26'),'id'])||{});}})[_0xefd1('0x28')](function(_0x297350){logger[_0xefd1('0x11')](_0xefd1('0x29'),_0x2ec56d);logger[_0xefd1('0x14')](_0xefd1('0x29'),_0x2ec56d,JSON[_0xefd1('0x15')](_0x297350));_0xed77cd(_0x297350);})[_0xefd1('0x19')](function(_0xf74b0){logger[_0xefd1('0x16')](_0xefd1('0x29'),_0xf74b0[_0xefd1('0x17')],_0x2ec56d);_0xeedbfe(_this[_0xefd1('0x16')](0x1f4,_0xf74b0[_0xefd1('0x17')]));});});};
\ No newline at end of file
index f0e3645..ccf702f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4222=['removeListener','register','length','./mailInteraction.events','remove','update','emit'];(function(_0x5d35e5,_0x4d1f9c){var _0x48dd78=function(_0x588743){while(--_0x588743){_0x5d35e5['push'](_0x5d35e5['shift']());}};_0x48dd78(++_0x4d1f9c);}(_0x4222,0x7a));var _0x2422=function(_0x465a0c,_0x19d4d5){_0x465a0c=_0x465a0c-0x0;var _0x1e202e=_0x4222[_0x465a0c];return _0x1e202e;};'use strict';var MailInteractionEvents=require(_0x2422('0x0'));var events=['save',_0x2422('0x1'),_0x2422('0x2')];function createListener(_0x33cdf8,_0x8dfe81){return function(_0x4091df){_0x8dfe81[_0x2422('0x3')](_0x33cdf8,_0x4091df);};}function removeListener(_0x556273,_0x2fb1de){return function(){MailInteractionEvents[_0x2422('0x4')](_0x556273,_0x2fb1de);};}exports[_0x2422('0x5')]=function(_0x4df744){for(var _0x27ca88=0x0,_0x1b1458=events[_0x2422('0x6')];_0x27ca88<_0x1b1458;_0x27ca88++){var _0x18eab3=events[_0x27ca88];var _0x10ad37=createListener('mailInteraction:'+_0x18eab3,_0x4df744);MailInteractionEvents['on'](_0x18eab3,_0x10ad37);}};
\ No newline at end of file
+var _0xf181=['update','emit','removeListener','register','mailInteraction:','./mailInteraction.events','save','remove'];(function(_0x2ec461,_0x5f588a){var _0x28603d=function(_0x21114b){while(--_0x21114b){_0x2ec461['push'](_0x2ec461['shift']());}};_0x28603d(++_0x5f588a);}(_0xf181,0x16d));var _0x1f18=function(_0x7a112,_0x2eb4a0){_0x7a112=_0x7a112-0x0;var _0x136dc5=_0xf181[_0x7a112];return _0x136dc5;};'use strict';var MailInteractionEvents=require(_0x1f18('0x0'));var events=[_0x1f18('0x1'),_0x1f18('0x2'),_0x1f18('0x3')];function createListener(_0x24c98e,_0x1a37d4){return function(_0x31d4db){_0x1a37d4[_0x1f18('0x4')](_0x24c98e,_0x31d4db);};}function removeListener(_0x249e15,_0x4ab162){return function(){MailInteractionEvents[_0x1f18('0x5')](_0x249e15,_0x4ab162);};}exports[_0x1f18('0x6')]=function(_0x55f88c){for(var _0x138430=0x0,_0x100f34=events['length'];_0x138430<_0x100f34;_0x138430++){var _0x7acda1=events[_0x138430];var _0x534bfe=createListener(_0x1f18('0x7')+_0x7acda1,_0x55f88c);MailInteractionEvents['on'](_0x7acda1,_0x534bfe);}};
\ No newline at end of file
index 0f67f03..4f4d211 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xde5d=['/describe','describe','/:id','download','post','tracked','mail','mailmessage:create','create','update','put','accept','reject','delete','destroy','multer','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','./mailMessage.controller','get','isAuthenticated','index'];(function(_0x62199f,_0x1b8ce5){var _0x853db1=function(_0x5db525){while(--_0x5db525){_0x62199f['push'](_0x62199f['shift']());}};_0x853db1(++_0x1b8ce5);}(_0xde5d,0xd7));var _0xdde5=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0xde5d[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0xdde5('0x0'));var util=require('util');var path=require(_0xdde5('0x1'));var timeout=require(_0xdde5('0x2'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xdde5('0x3'));var auth=require(_0xdde5('0x4'));var interaction=require(_0xdde5('0x5'));var config=require('../../config/environment');var controller=require(_0xdde5('0x6'));router[_0xdde5('0x7')]('/',auth[_0xdde5('0x8')](),controller[_0xdde5('0x9')]);router['get'](_0xdde5('0xa'),auth['isAuthenticated'](),controller[_0xdde5('0xb')]);router['get'](_0xdde5('0xc'),auth[_0xdde5('0x8')](),controller['show']);router[_0xdde5('0x7')]('/:id/download',auth[_0xdde5('0x8')](),controller[_0xdde5('0xd')]);router[_0xdde5('0xe')]('/',auth['isAuthenticated'](),interaction[_0xdde5('0xf')](_0xdde5('0x10'),_0xdde5('0x11')),controller[_0xdde5('0x12')]);router['put']('/:id',auth[_0xdde5('0x8')](),controller[_0xdde5('0x13')]);router[_0xdde5('0x14')]('/:id/accept',auth['isAuthenticated'](),controller[_0xdde5('0x15')]);router[_0xdde5('0x14')]('/:id/reject',auth['isAuthenticated'](),controller[_0xdde5('0x16')]);router[_0xdde5('0x17')](_0xdde5('0xc'),auth['isAuthenticated'](),controller[_0xdde5('0x18')]);module['exports']=router;
\ No newline at end of file
+var _0x7c80=['fs-extra','../../components/interaction/service','../../config/environment','./mailMessage.controller','isAuthenticated','/describe','describe','get','/:id','download','mailmessage:create','create','put','update','/:id/accept','/:id/reject','reject','delete','destroy','exports','multer','util','express','Router'];(function(_0x2c0080,_0x46b56e){var _0x3ad4a9=function(_0x30f256){while(--_0x30f256){_0x2c0080['push'](_0x2c0080['shift']());}};_0x3ad4a9(++_0x46b56e);}(_0x7c80,0xa4));var _0x07c8=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7c80[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x07c8('0x0'));var util=require(_0x07c8('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x07c8('0x2'));var router=express[_0x07c8('0x3')]();var fs_extra=require(_0x07c8('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x07c8('0x5'));var config=require(_0x07c8('0x6'));var controller=require(_0x07c8('0x7'));router['get']('/',auth[_0x07c8('0x8')](),controller['index']);router['get'](_0x07c8('0x9'),auth[_0x07c8('0x8')](),controller[_0x07c8('0xa')]);router[_0x07c8('0xb')](_0x07c8('0xc'),auth[_0x07c8('0x8')](),controller['show']);router[_0x07c8('0xb')]('/:id/download',auth['isAuthenticated'](),controller[_0x07c8('0xd')]);router['post']('/',auth[_0x07c8('0x8')](),interaction['tracked']('mail',_0x07c8('0xe')),controller[_0x07c8('0xf')]);router[_0x07c8('0x10')](_0x07c8('0xc'),auth['isAuthenticated'](),controller[_0x07c8('0x11')]);router[_0x07c8('0x10')](_0x07c8('0x12'),auth[_0x07c8('0x8')](),controller['accept']);router['put'](_0x07c8('0x13'),auth['isAuthenticated'](),controller[_0x07c8('0x14')]);router[_0x07c8('0x15')](_0x07c8('0xc'),auth[_0x07c8('0x8')](),controller[_0x07c8('0x16')]);module[_0x07c8('0x17')]=router;
\ No newline at end of file
index 8c274a0..0158dd6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d9d=['STRING','DATE','INTEGER','Email','sequelize','lodash','exports','long','TEXT','medium','BOOLEAN','ENUM'];(function(_0x5ce3c8,_0x2503bd){var _0xa76867=function(_0x52815e){while(--_0x52815e){_0x5ce3c8['push'](_0x5ce3c8['shift']());}};_0xa76867(++_0x2503bd);}(_0x7d9d,0xc4));var _0xd7d9=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7d9d[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xd7d9('0x0'));var _=require(_0xd7d9('0x1'));module[_0xd7d9('0x2')]={'body':{'type':Sequelize['TEXT'](_0xd7d9('0x3')),'allowNull':![]},'plainBody':{'type':Sequelize[_0xd7d9('0x4')](_0xd7d9('0x5'))},'read':{'type':Sequelize[_0xd7d9('0x6')],'defaultValue':![]},'direction':{'type':Sequelize[_0xd7d9('0x7')]('in','out'),'defaultValue':'out','allowNull':![]},'messageId':{'type':Sequelize[_0xd7d9('0x8')](0x1fe)},'from':{'type':Sequelize[_0xd7d9('0x8')]},'to':{'type':Sequelize['TEXT'](_0xd7d9('0x3'))},'cc':{'type':Sequelize['TEXT'](_0xd7d9('0x3'))},'bcc':{'type':Sequelize[_0xd7d9('0x4')](_0xd7d9('0x3'))},'subject':{'type':Sequelize['TEXT']},'sentAt':{'type':Sequelize[_0xd7d9('0x9')]},'attach':{'type':Sequelize[_0xd7d9('0xa')],'defaultValue':0x0},'secret':{'type':Sequelize[_0xd7d9('0x6')],'defaultValue':![]},'readAt':{'type':Sequelize[_0xd7d9('0x9')]},'originTo':{'type':Sequelize[_0xd7d9('0x4')](_0xd7d9('0x3'))},'originCc':{'type':Sequelize[_0xd7d9('0x4')]('long')},'originChannel':{'type':Sequelize['ENUM'](_0xd7d9('0xb'),'Chat'),'defaultValue':'Email','allowNull':![]}};
\ No newline at end of file
+var _0xdab6=['Chat','sequelize','lodash','exports','TEXT','long','medium','ENUM','out','STRING','DATE','INTEGER','BOOLEAN'];(function(_0x33f22e,_0x155b6b){var _0x4ee2c9=function(_0x78cc73){while(--_0x78cc73){_0x33f22e['push'](_0x33f22e['shift']());}};_0x4ee2c9(++_0x155b6b);}(_0xdab6,0x153));var _0x6dab=function(_0x29d1dc,_0x34ffed){_0x29d1dc=_0x29d1dc-0x0;var _0x15196a=_0xdab6[_0x29d1dc];return _0x15196a;};'use strict';var Sequelize=require(_0x6dab('0x0'));var _=require(_0x6dab('0x1'));module[_0x6dab('0x2')]={'body':{'type':Sequelize[_0x6dab('0x3')](_0x6dab('0x4')),'allowNull':![]},'plainBody':{'type':Sequelize[_0x6dab('0x3')](_0x6dab('0x5'))},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'direction':{'type':Sequelize[_0x6dab('0x6')]('in',_0x6dab('0x7')),'defaultValue':_0x6dab('0x7'),'allowNull':![]},'messageId':{'type':Sequelize[_0x6dab('0x8')](0x1fe)},'from':{'type':Sequelize[_0x6dab('0x8')]},'to':{'type':Sequelize[_0x6dab('0x3')](_0x6dab('0x4'))},'cc':{'type':Sequelize['TEXT'](_0x6dab('0x4'))},'bcc':{'type':Sequelize[_0x6dab('0x3')](_0x6dab('0x4'))},'subject':{'type':Sequelize[_0x6dab('0x3')]},'sentAt':{'type':Sequelize[_0x6dab('0x9')]},'attach':{'type':Sequelize[_0x6dab('0xa')],'defaultValue':0x0},'secret':{'type':Sequelize[_0x6dab('0xb')],'defaultValue':![]},'readAt':{'type':Sequelize[_0x6dab('0x9')]},'originTo':{'type':Sequelize[_0x6dab('0x3')](_0x6dab('0x4'))},'originCc':{'type':Sequelize[_0x6dab('0x3')](_0x6dab('0x4'))},'originChannel':{'type':Sequelize[_0x6dab('0x6')]('Email',_0x6dab('0xc')),'defaultValue':'Email','allowNull':![]}};
\ No newline at end of file
index 03ad34c..72f36ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x812a=['redis','localhost','socket.io-emitter','./mailMessage.socket','register','jayson/promise','client','http','request','then','info','MailMessage,\x20%s,\x20%s','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','json','offset','undefined','limit','count','set','Content-Range','update','destroy','end','sendStatus','stack','name','send','index','map','MailMessage','rawAttributes','fieldName','key','keys','query','model','attributes','fields','length','hasOwnProperty','sort','filters','pick','where','merge','options','includeAll','include','findAll','rows','show','params','intersection','find','body','describe','create','split','MailAccount','findOne','CmList','List','CmContact','Contacts','updatedAt','DESC','MailServerOut','Smtp','attachments','root','server/files/attachments','basename','ListId','List\x20not\x20found','SendMail','messageId','accept','mail','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','MailInteraction','isNil','read1stAt','interaction','user','role','null','acceptMessage','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','SIP/%s','channel','motionChannel','event','fromString','EventManager','acceptmessage','reject','RejectMessage','rejectMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','interface','rejectmessage','download','unix','toString','join','server','files','tmp','message-%s.eml','bcc','subject','from','createdAt','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','headers','Bcc','Attachments','existsSync','type','readFileSync','writeFileSync','unlinkSync','eml-format','moment','util','path','lodash','ioredis','html-to-text','../../components/parsers/qs','../../config/logger','mail-interactions','../../config/environment','../../mysqldb','defaults'];(function(_0x6bca48,_0x454186){var _0x5dd29d=function(_0x39642f){while(--_0x39642f){_0x6bca48['push'](_0x6bca48['shift']());}};_0x5dd29d(++_0x454186);}(_0x812a,0x1d0));var _0xa812=function(_0x194d60,_0x1c4efa){_0x194d60=_0x194d60-0x0;var _0x2cec22=_0x812a[_0x194d60];return _0x2cec22;};'use strict';var emlformat=require(_0xa812('0x0'));var moment=require(_0xa812('0x1'));var BPromise=require('bluebird');var util=require(_0xa812('0x2'));var path=require(_0xa812('0x3'));var fs=require('fs');var _=require(_0xa812('0x4'));var Redis=require(_0xa812('0x5'));var htmlToText=require(_0xa812('0x6'));var qs=require(_0xa812('0x7'));var logger=require(_0xa812('0x8'))('api');var interaction_log=require(_0xa812('0x8'))(_0xa812('0x9'));var config=require(_0xa812('0xa'));var db=require(_0xa812('0xb'))['db'];config['redis']=_[_0xa812('0xc')](config[_0xa812('0xd')],{'host':_0xa812('0xe'),'port':0x18eb});var socket=require(_0xa812('0xf'))(new Redis(config[_0xa812('0xd')]));var htmlEntities=require('html-entities');require(_0xa812('0x10'))[_0xa812('0x11')](socket);var jayson=require(_0xa812('0x12'));var client=jayson[_0xa812('0x13')][_0xa812('0x14')]({'port':0x232c});var client9003=jayson[_0xa812('0x13')][_0xa812('0x14')]({'port':0x232b});var client9002=jayson[_0xa812('0x13')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1fae25,_0x5d0091,_0x91adab,_0x126d72){return new BPromise(function(_0x4f5b47,_0x49b8b5){var _0xc8f123=_0x126d72||client;return _0xc8f123[_0xa812('0x15')](_0x1fae25,_0x91adab)[_0xa812('0x16')](function(_0x15f8d2){logger[_0xa812('0x17')](_0xa812('0x18'),_0x5d0091,_0xa812('0x19'));logger[_0xa812('0x1a')](_0xa812('0x1b'),_0x5d0091,_0xa812('0x19'),JSON[_0xa812('0x1c')](_0x15f8d2));if(_0x15f8d2[_0xa812('0x1d')]){if(_0x15f8d2[_0xa812('0x1d')][_0xa812('0x1e')]===0x1f4){logger['error']('MailMessage,\x20%s,\x20%s',_0x5d0091,_0x15f8d2['error'][_0xa812('0x1f')]);return _0x49b8b5(_0x15f8d2['error'][_0xa812('0x1f')]);}logger['error'](_0xa812('0x18'),_0x5d0091,_0x15f8d2[_0xa812('0x1d')][_0xa812('0x1f')]);return _0x4f5b47(_0x15f8d2[_0xa812('0x1d')][_0xa812('0x1f')]);}else{logger['info'](_0xa812('0x18'),_0x5d0091,'request\x20sent');_0x4f5b47(_0x15f8d2[_0xa812('0x20')][_0xa812('0x1f')]);}})[_0xa812('0x21')](function(_0xccddd7){logger[_0xa812('0x1d')](_0xa812('0x18'),_0x5d0091,_0xccddd7);_0x49b8b5(_0xccddd7);});});}function respondWithResult(_0x24787a,_0x23d7e3){_0x23d7e3=_0x23d7e3||0xc8;return function(_0x1fd355){if(_0x1fd355){return _0x24787a[_0xa812('0x22')](_0x23d7e3)[_0xa812('0x23')](_0x1fd355);}};}function respondWithFilteredResult(_0x1f9178,_0x1a3e47){return function(_0x37eb1c){if(_0x37eb1c){var _0x1bce84=typeof _0x1a3e47[_0xa812('0x24')]===_0xa812('0x25')&&typeof _0x1a3e47[_0xa812('0x26')]===_0xa812('0x25');var _0x409420=_0x37eb1c['count'];var _0x3eeaa8=_0x1bce84?0x0:_0x1a3e47[_0xa812('0x24')];var _0x3797de=_0x1bce84?_0x37eb1c[_0xa812('0x27')]:_0x1a3e47[_0xa812('0x24')]+_0x1a3e47[_0xa812('0x26')];var _0x2e8e0f;if(_0x3797de>=_0x409420){_0x3797de=_0x409420;_0x2e8e0f=0xc8;}else{_0x2e8e0f=0xce;}_0x1f9178[_0xa812('0x22')](_0x2e8e0f);return _0x1f9178[_0xa812('0x28')](_0xa812('0x29'),_0x3eeaa8+'-'+_0x3797de+'/'+_0x409420)[_0xa812('0x23')](_0x37eb1c);}return null;};}function saveUpdates(_0x53af89){return function(_0xa1803d){if(_0xa1803d){return _0xa1803d[_0xa812('0x2a')](_0x53af89)[_0xa812('0x16')](function(_0x10212e){return _0x10212e;});}return null;};}function removeEntity(_0x390dff){return function(_0x534080){if(_0x534080){return _0x534080[_0xa812('0x2b')]()[_0xa812('0x16')](function(){_0x390dff['status'](0xcc)[_0xa812('0x2c')]();});}};}function handleEntityNotFound(_0x1ce64b){return function(_0x41d144){if(!_0x41d144){_0x1ce64b[_0xa812('0x2d')](0x194);}return _0x41d144;};}function handleError(_0x573d65,_0x5a7ae3){_0x5a7ae3=_0x5a7ae3||0x1f4;return function(_0x40338c){logger['error'](_0x40338c[_0xa812('0x2e')]);if(_0x40338c['name']){delete _0x40338c[_0xa812('0x2f')];}_0x573d65['status'](_0x5a7ae3)[_0xa812('0x30')](_0x40338c);};}exports[_0xa812('0x31')]=function(_0x2c0197,_0x1166bc){var _0x553f5f={},_0x559d32={},_0x519682={'count':0x0,'rows':[]};var _0x2b1a76=_[_0xa812('0x32')](db[_0xa812('0x33')][_0xa812('0x34')],function(_0x3d6167){return{'name':_0x3d6167[_0xa812('0x35')],'type':_0x3d6167['type'][_0xa812('0x36')]};});_0x559d32['model']=_[_0xa812('0x32')](_0x2b1a76,_0xa812('0x2f'));_0x559d32['query']=_[_0xa812('0x37')](_0x2c0197[_0xa812('0x38')]);_0x559d32['filters']=_['intersection'](_0x559d32[_0xa812('0x39')],_0x559d32['query']);_0x553f5f[_0xa812('0x3a')]=_['intersection'](_0x559d32['model'],qs[_0xa812('0x3b')](_0x2c0197[_0xa812('0x38')][_0xa812('0x3b')]));_0x553f5f[_0xa812('0x3a')]=_0x553f5f[_0xa812('0x3a')][_0xa812('0x3c')]?_0x553f5f[_0xa812('0x3a')]:_0x559d32[_0xa812('0x39')];if(!_0x2c0197[_0xa812('0x38')][_0xa812('0x3d')]('nolimit')){_0x553f5f[_0xa812('0x26')]=qs[_0xa812('0x26')](_0x2c0197[_0xa812('0x38')][_0xa812('0x26')]);_0x553f5f[_0xa812('0x24')]=qs[_0xa812('0x24')](_0x2c0197[_0xa812('0x38')][_0xa812('0x24')]);}_0x553f5f['order']=qs[_0xa812('0x3e')](_0x2c0197[_0xa812('0x38')]['sort']);_0x553f5f['where']=qs[_0xa812('0x3f')](_[_0xa812('0x40')](_0x2c0197[_0xa812('0x38')],_0x559d32[_0xa812('0x3f')]),_0x2b1a76);if(_0x2c0197[_0xa812('0x38')]['filter']){_0x553f5f[_0xa812('0x41')]=_[_0xa812('0x42')](_0x553f5f['where'],{'$or':_[_0xa812('0x32')](_0x2b1a76,function(_0x49d8b5){if(_0x49d8b5['type']!=='VIRTUAL'){var _0x3d81f1={};_0x3d81f1[_0x49d8b5['name']]={'$like':'%'+_0x2c0197['query']['filter']+'%'};return _0x3d81f1;}})});}_0x553f5f=_[_0xa812('0x42')]({},_0x553f5f,_0x2c0197[_0xa812('0x43')]);var _0x4723f0={'where':_0x553f5f[_0xa812('0x41')]};return db['MailMessage'][_0xa812('0x27')](_0x4723f0)[_0xa812('0x16')](function(_0x4f6aa4){_0x519682['count']=_0x4f6aa4;if(_0x2c0197[_0xa812('0x38')][_0xa812('0x44')]){_0x553f5f[_0xa812('0x45')]=[{'all':!![]}];}return db[_0xa812('0x33')][_0xa812('0x46')](_0x553f5f);})['then'](function(_0x3cd9a5){_0x519682[_0xa812('0x47')]=_0x3cd9a5;return _0x519682;})['then'](respondWithFilteredResult(_0x1166bc,_0x553f5f))[_0xa812('0x21')](handleError(_0x1166bc,null));};exports[_0xa812('0x48')]=function(_0x142169,_0x59fa18){var _0x43dc3c={'raw':!![],'where':{'id':_0x142169[_0xa812('0x49')]['id']}},_0x2cc8db={};_0x2cc8db['model']=_[_0xa812('0x37')](db[_0xa812('0x33')][_0xa812('0x34')]);_0x2cc8db[_0xa812('0x38')]=_[_0xa812('0x37')](_0x142169[_0xa812('0x38')]);_0x2cc8db[_0xa812('0x3f')]=_[_0xa812('0x4a')](_0x2cc8db[_0xa812('0x39')],_0x2cc8db[_0xa812('0x38')]);_0x43dc3c[_0xa812('0x3a')]=_[_0xa812('0x4a')](_0x2cc8db[_0xa812('0x39')],qs[_0xa812('0x3b')](_0x142169['query']['fields']));_0x43dc3c[_0xa812('0x3a')]=_0x43dc3c[_0xa812('0x3a')][_0xa812('0x3c')]?_0x43dc3c[_0xa812('0x3a')]:_0x2cc8db[_0xa812('0x39')];if(_0x142169['query'][_0xa812('0x44')]){_0x43dc3c['include']=[{'all':!![]}];}_0x43dc3c=_[_0xa812('0x42')]({},_0x43dc3c,_0x142169[_0xa812('0x43')]);return db[_0xa812('0x33')][_0xa812('0x4b')](_0x43dc3c)[_0xa812('0x16')](handleEntityNotFound(_0x59fa18,null))[_0xa812('0x16')](respondWithResult(_0x59fa18,null))['catch'](handleError(_0x59fa18,null));};exports[_0xa812('0x2a')]=function(_0x265fc2,_0x3e7829){if(_0x265fc2[_0xa812('0x4c')]['id']){delete _0x265fc2[_0xa812('0x4c')]['id'];}return db[_0xa812('0x33')][_0xa812('0x4b')]({'where':{'id':_0x265fc2[_0xa812('0x49')]['id']}})['then'](handleEntityNotFound(_0x3e7829,null))[_0xa812('0x16')](saveUpdates(_0x265fc2[_0xa812('0x4c')],null))['then'](respondWithResult(_0x3e7829,null))[_0xa812('0x21')](handleError(_0x3e7829,null));};exports['destroy']=function(_0x4756af,_0x3b283d){return db['MailMessage'][_0xa812('0x4b')]({'where':{'id':_0x4756af[_0xa812('0x49')]['id']}})[_0xa812('0x16')](handleEntityNotFound(_0x3b283d,null))[_0xa812('0x16')](removeEntity(_0x3b283d,null))[_0xa812('0x21')](handleError(_0x3b283d,null));};exports[_0xa812('0x4d')]=function(_0x394cb1,_0x1bcf2a){return db['MailMessage'][_0xa812('0x4d')]()[_0xa812('0x16')](respondWithResult(_0x1bcf2a,null))[_0xa812('0x21')](handleError(_0x1bcf2a,null));};exports[_0xa812('0x4e')]=function(_0x57be46,_0x40fb11){return db[_0xa812('0x33')]['create'](_0x57be46[_0xa812('0x4c')])[_0xa812('0x16')](function(_0x4e6e59){if(_0x4e6e59){if(_0x4e6e59['direction']==='out'&&!_0x4e6e59['secret']){var _0x44b7f1,_0x2a31fe,_0x21ff55;if(_0x57be46[_0xa812('0x4c')]['to']){_0x2a31fe=_0x57be46[_0xa812('0x4c')]['to'][_0xa812('0x4f')](',')[0x0];}return db[_0xa812('0x50')][_0xa812('0x51')]({'where':{'id':_0x4e6e59['MailAccountId']},'include':[{'model':db[_0xa812('0x52')],'as':_0xa812('0x53'),'include':[{'model':db[_0xa812('0x54')],'as':_0xa812('0x55'),'where':{'email':_0x2a31fe},'limit':0x1,'order':[[_0xa812('0x56'),_0xa812('0x57')]]}]},{'model':db[_0xa812('0x58')],'as':_0xa812('0x59'),'raw':!![],'include':[{'model':db['CloudProvider'],'as':'CloudProvider','raw':!![]}]}]})['then'](function(_0x1ccb35){_0x44b7f1=_0x1ccb35;if(!_0x44b7f1||!_0x44b7f1[_0xa812('0x59')])return;var _0x11118c=_0x44b7f1['getSmtpOptions']();if(_0x57be46[_0xa812('0x4c')]['attachments']&&_0x57be46[_0xa812('0x4c')]['attachments'][_0xa812('0x3c')]){for(var _0x3641cd=0x0;_0x3641cd<_0x57be46[_0xa812('0x4c')][_0xa812('0x5a')][_0xa812('0x3c')];_0x3641cd+=0x1){_0x57be46[_0xa812('0x4c')][_0xa812('0x5a')][_0x3641cd]={'filename':_0x57be46['body']['attachments'][_0x3641cd]['name'],'path':path['join'](config[_0xa812('0x5b')],_0xa812('0x5c'),_0x57be46[_0xa812('0x4c')][_0xa812('0x5a')][_0x3641cd][_0xa812('0x5d')])};}}_0x21ff55={'account':_0x11118c,'message':_0x57be46[_0xa812('0x4c')]};return;})[_0xa812('0x16')](function(){if(_0x44b7f1[_0xa812('0x53')]){if(_0x44b7f1['List'][_0xa812('0x55')]['length']){return _0x44b7f1['List']['Contacts'][0x0];}else{return db[_0xa812('0x54')][_0xa812('0x4e')](_[_0xa812('0xc')](_0x57be46[_0xa812('0x4c')],{'firstName':_0x57be46[_0xa812('0x4c')]['to'],'email':_0x57be46[_0xa812('0x4c')]['to'],'phone':_0x57be46[_0xa812('0x4c')]['to'],'ListId':_0x44b7f1[_0xa812('0x5e')]}));}}else{throw new Error(_0xa812('0x5f'));}})['then'](function(){if(_0x21ff55){return respondWithRpcPromise(_0xa812('0x60'),'sendMail',_0x21ff55,client9003)[_0xa812('0x16')](function(_0x1329f1){return _0x4e6e59[_0xa812('0x2a')]({'read':!![],'messageId':_0x1329f1[_0xa812('0x61')],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss')});})[_0xa812('0x21')](function(_0x6d7e9d){logger['error']('%s',JSON[_0xa812('0x1c')](_0x6d7e9d));return _0x4e6e59;});}return _0x4e6e59;});}return _0x4e6e59;}})[_0xa812('0x16')](respondWithResult(_0x40fb11,0xc9))[_0xa812('0x21')](handleError(_0x40fb11,null));};exports[_0xa812('0x62')]=function(_0x24cf06,_0x3aa936){var _0xdc7a3={'agent':{},'channel':_0xa812('0x63')};if(_0x24cf06[_0xa812('0x4c')]['id']){delete _0x24cf06[_0xa812('0x4c')]['id'];}_0x24cf06['body'][_0xa812('0x64')]=!![];_0x24cf06[_0xa812('0x4c')][_0xa812('0x65')]=moment()[_0xa812('0x66')](_0xa812('0x67'));_0x24cf06[_0xa812('0x4c')][_0xa812('0x68')]=_0x24cf06['body'][_0xa812('0x68')]||_0x24cf06['user']['id'];_0xdc7a3[_0xa812('0x69')]['id']=_0x24cf06['body'][_0xa812('0x68')];return db[_0xa812('0x33')][_0xa812('0x4b')]({'where':{'id':_0x24cf06['params']['id'],'UserId':null}})[_0xa812('0x16')](handleEntityNotFound(_0x3aa936,null))['then'](saveUpdates(_0x24cf06[_0xa812('0x4c')],null))[_0xa812('0x16')](function(_0x3bb143){if(_0x3bb143){_0xdc7a3[_0xa812('0x1f')]=_0x3bb143[_0xa812('0x6a')]({'plain':!![]});return db[_0xa812('0x6b')][_0xa812('0x4b')]({'where':{'id':_0x3bb143['MailInteractionId']}});}return null;})[_0xa812('0x16')](handleEntityNotFound(_0x3aa936,null))[_0xa812('0x16')](function(_0x2645fa){if(_0x2645fa){return _0x2645fa[_0xa812('0x2a')]({'UserId':_0x24cf06[_0xa812('0x4c')][_0xa812('0x68')],'read1stAt':_[_0xa812('0x6c')](_0x2645fa[_0xa812('0x6d')])?moment()[_0xa812('0x66')](_0xa812('0x67')):undefined});}return null;})[_0xa812('0x16')](function(_0x55f019){if(_0x55f019){_0xdc7a3[_0xa812('0x6e')]=_0x55f019[_0xa812('0x6a')]({'plain':!![]});interaction_log['info']('[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x24cf06[_0xa812('0x6f')]['id'],_0x24cf06[_0xa812('0x6f')][_0xa812('0x2f')],_0x24cf06[_0xa812('0x6f')][_0xa812('0x70')],_0xdc7a3[_0xa812('0x6e')]['id'],_0x24cf06['body']?JSON[_0xa812('0x1c')](_0x24cf06[_0xa812('0x4c')]):_0xa812('0x71'));return respondWithRpcPromise('AcceptMessage',_0xa812('0x72'),_0xdc7a3);}return null;})[_0xa812('0x16')](function(_0x332b4f){var _0x43c3cb='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x332b4f['message']['ContactId'];return db['sequelize'][_0xa812('0x38')](_0x43c3cb,{'type':db[_0xa812('0x73')][_0xa812('0x74')][_0xa812('0x75')],'raw':!![]})['then'](function(_0x36a220){return _0x36a220;});})[_0xa812('0x16')](function(_0x49c0e8){if(_0x49c0e8){_0xdc7a3[_0xa812('0x1f')][_0xa812('0x76')]=_0x49c0e8[0x0];if(!_0x24cf06[_0xa812('0x4c')]['UserId'])return;return db[_0xa812('0x77')][_0xa812('0x4b')]({'where':{'id':_0x24cf06[_0xa812('0x4c')][_0xa812('0x68')],'role':_0xa812('0x69')},'attributes':['id',_0xa812('0x2f'),_0xa812('0x78'),_0xa812('0x79'),_0xa812('0x7a')],'raw':!![]});}return null;})[_0xa812('0x16')](function(_0x32c7e5){if(!_0x32c7e5)return null;_0xdc7a3['message'][_0xa812('0x69')]=_0x32c7e5;return _0xdc7a3;})[_0xa812('0x16')](function(_0x5b6520){if(_0x5b6520){if(_0x24cf06[_0xa812('0x4c')][_0xa812('0x7b')]){_0xdc7a3[_0xa812('0x1f')]['interface']=util['format'](_0xa812('0x7c'),_0x24cf06[_0xa812('0x6f')][_0xa812('0x2f')]);_0xdc7a3[_0xa812('0x1f')][_0xa812('0x7d')]=_0xdc7a3['channel'];_0xdc7a3[_0xa812('0x1f')][_0xa812('0x7e')]=_0xdc7a3[_0xa812('0x7d')];_0xdc7a3[_0xa812('0x1f')][_0xa812('0x7f')]=_0xa812('0x62');_0xdc7a3[_0xa812('0x1f')][_0xa812('0x4c')]=htmlToText[_0xa812('0x80')](_0xdc7a3[_0xa812('0x1f')][_0xa812('0x4c')]);return respondWithRpcPromise(_0xa812('0x81'),_0xa812('0x81'),{'event':_0xa812('0x82'),'message':_0xdc7a3[_0xa812('0x1f')]},client9002)[_0xa812('0x16')](function(){return _0xdc7a3;});}return _0xdc7a3;}return null;})[_0xa812('0x16')](respondWithResult(_0x3aa936,null))[_0xa812('0x21')](handleError(_0x3aa936,null));};exports[_0xa812('0x83')]=function(_0x2fe4a1,_0x47f3fe){var _0x5808ea={'agent':{},'channel':_0xa812('0x63')};if(_0x2fe4a1[_0xa812('0x4c')]['id']){delete _0x2fe4a1[_0xa812('0x4c')]['id'];}_0x2fe4a1[_0xa812('0x4c')][_0xa812('0x68')]=_0x2fe4a1[_0xa812('0x4c')][_0xa812('0x68')]||_0x2fe4a1['user']['id'];_0x5808ea[_0xa812('0x69')]['id']=_0x2fe4a1[_0xa812('0x4c')][_0xa812('0x68')];return db[_0xa812('0x33')]['find']({'where':{'id':_0x2fe4a1['params']['id'],'UserId':null}})[_0xa812('0x16')](handleEntityNotFound(_0x47f3fe,null))[_0xa812('0x16')](function(_0x37f7d8){if(_0x37f7d8){_0x5808ea[_0xa812('0x1f')]=_0x37f7d8['get']({'plain':!![]});return db[_0xa812('0x6b')][_0xa812('0x4b')]({'where':{'id':_0x37f7d8['MailInteractionId']}});}return null;})[_0xa812('0x16')](handleEntityNotFound(_0x47f3fe,null))[_0xa812('0x16')](function(_0x47e93d){if(_0x47e93d){_0x5808ea['interaction']=_0x47e93d['get']({'plain':!![]});interaction_log[_0xa812('0x17')]('[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x2fe4a1[_0xa812('0x6f')]['id'],_0x2fe4a1[_0xa812('0x6f')]['name'],_0x2fe4a1[_0xa812('0x6f')][_0xa812('0x70')],_0x5808ea[_0xa812('0x6e')]['id'],_0x2fe4a1[_0xa812('0x4c')]?JSON[_0xa812('0x1c')](_0x2fe4a1[_0xa812('0x4c')]):'null');return respondWithRpcPromise(_0xa812('0x84'),_0xa812('0x85'),_0x5808ea);}return null;})[_0xa812('0x16')](function(_0x4c0f9b){var _0x3b6d15=_0xa812('0x86')+_0x4c0f9b[_0xa812('0x1f')]['ContactId'];return db[_0xa812('0x87')]['query'](_0x3b6d15,{'type':db[_0xa812('0x73')]['QueryTypes'][_0xa812('0x75')],'raw':!![]})[_0xa812('0x16')](function(_0x26a107){return _0x26a107;});})[_0xa812('0x16')](function(_0x2c199b){if(_0x2c199b){_0x5808ea['message'][_0xa812('0x76')]=_0x2c199b[0x0];if(!_0x2fe4a1[_0xa812('0x4c')][_0xa812('0x68')])return;return db[_0xa812('0x77')]['find']({'where':{'id':_0x2fe4a1[_0xa812('0x4c')][_0xa812('0x68')],'role':_0xa812('0x69')},'attributes':['id',_0xa812('0x2f'),'fullname','email',_0xa812('0x7a')],'raw':!![]});}return null;})['then'](function(_0x12af5a){if(!_0x12af5a)return null;_0x5808ea[_0xa812('0x1f')][_0xa812('0x69')]=_0x12af5a;return _0x5808ea;})['then'](function(_0x28b87c){if(_0x28b87c){_0x28b87c['message'][_0xa812('0x88')]=util[_0xa812('0x66')](_0xa812('0x7c'),_0x2fe4a1[_0xa812('0x6f')]['name']);_0x28b87c[_0xa812('0x1f')][_0xa812('0x7d')]=_0x5808ea[_0xa812('0x7d')];_0x28b87c[_0xa812('0x1f')]['motionChannel']=_0x5808ea[_0xa812('0x7d')];_0x28b87c[_0xa812('0x1f')][_0xa812('0x7f')]=_0xa812('0x83');_0x28b87c[_0xa812('0x1f')][_0xa812('0x4c')]=htmlToText['fromString'](_0x5808ea[_0xa812('0x1f')][_0xa812('0x4c')]);respondWithRpcPromise('EventManager',_0xa812('0x81'),{'event':_0xa812('0x89'),'message':_0x28b87c[_0xa812('0x1f')]},client9002);return _0x5808ea;}return null;})[_0xa812('0x16')](respondWithResult(_0x47f3fe,null))['catch'](handleError(_0x47f3fe,null));};exports[_0xa812('0x8a')]=function(_0x25b09c,_0x4f9702){var _0x467946=moment()[_0xa812('0x8b')]()[_0xa812('0x8c')]();var _0x1a31a3=path[_0xa812('0x8d')](config[_0xa812('0x5b')],_0xa812('0x8e'),_0xa812('0x8f'),_0xa812('0x90'));var _0x5d3f6a=path[_0xa812('0x8d')](config['root'],'server',_0xa812('0x8f'),_0xa812('0x5a'));var _0x511151=util[_0xa812('0x66')](_0xa812('0x91'),_0x467946);return db['MailMessage'][_0xa812('0x4b')]({'where':{'id':_0x25b09c[_0xa812('0x49')]['id']},'attributes':['id',_0xa812('0x4c'),'from','to','cc',_0xa812('0x92'),_0xa812('0x93'),'createdAt'],'include':_0x25b09c[_0xa812('0x38')][_0xa812('0x5a')]?[{'model':db['Attachment'],'as':'Attachments'}]:undefined})[_0xa812('0x16')](handleEntityNotFound(_0x4f9702,null))[_0xa812('0x16')](function(_0x4a375d){if(_0x4a375d){var _0x58d35d=_0x4a375d;var _0x4c4732={'from':_0x58d35d[_0xa812('0x94')],'to':_0x58d35d['to'],'subject':_0x58d35d['subject'],'html':htmlEntities['decode'](_0x58d35d[_0xa812('0x4c')]),'headers':{'Date':moment(_0x58d35d[_0xa812('0x95')])[_0xa812('0x66')](_0xa812('0x96'))},'attachments':[]};if(_0x4a375d['cc']){_0x4c4732['headers']['Cc']=_0x4a375d['cc'];}if(_0x4a375d['bcc']){_0x4c4732[_0xa812('0x97')][_0xa812('0x98')]=_0x4a375d[_0xa812('0x92')];}return new BPromise(function(_0x49a61d,_0x543129){if(_0x4a375d[_0xa812('0x99')]){for(var _0x4dd5b9=0x0;_0x4dd5b9<_0x4a375d['Attachments'][_0xa812('0x3c')];_0x4dd5b9++){var _0x51b54d=_0x4a375d[_0xa812('0x99')][_0x4dd5b9];var _0x4ca3d9=path['join'](_0x5d3f6a,_0x51b54d[_0xa812('0x5d')]);if(fs[_0xa812('0x9a')](_0x4ca3d9)){_0x4c4732[_0xa812('0x5a')]['push']({'name':_0x51b54d[_0xa812('0x2f')],'contentType':_0x51b54d[_0xa812('0x9b')],'data':fs[_0xa812('0x9c')](_0x4ca3d9)});}}}emlformat['build'](_0x4c4732,function(_0x2e476c,_0x1ea914){if(_0x2e476c)return _0x543129(_0x2e476c);fs[_0xa812('0x9d')](path[_0xa812('0x8d')](_0x1a31a3,_0x511151),_0x1ea914);return _0x49a61d(_0x1ea914);});});}})[_0xa812('0x16')](function(_0x5756b6){if(_0x5756b6){return _0x4f9702['download'](path['join'](_0x1a31a3,_0x511151),_0x511151,function(_0x23971a){if(!_0x23971a)fs[_0xa812('0x9e')](path[_0xa812('0x8d')](_0x1a31a3,_0x511151));});}})[_0xa812('0x21')](handleError(_0x4f9702,null));};
\ No newline at end of file
+var _0xd85e=['fromString','EventManager','reject','[MAILMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','fullname','interface','rejectmessage','download','unix','toString','join','server','files','from','subject','Attachment','createdAt','ddd,\x20DD\x20MMM\x20YYYY\x20HH:mm:ss\x20ZZ','bcc','Bcc','Attachments','existsSync','push','readFileSync','build','writeFileSync','unlinkSync','eml-format','moment','util','path','lodash','ioredis','html-to-text','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./mailMessage.socket','register','client','http','then','MailMessage,\x20%s,\x20%s','MailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','status','json','offset','undefined','count','limit','set','Content-Range','update','destroy','end','sendStatus','name','index','MailMessage','rawAttributes','fieldName','type','key','model','map','query','filters','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','show','keys','body','find','params','describe','create','direction','out','secret','MailAccount','findOne','MailAccountId','CmList','List','CmContact','Contacts','updatedAt','DESC','MailServerOut','Smtp','CloudProvider','attachments','root','server/files/attachments','basename','SendMail','messageId','format','mail','read','readAt','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','MailInteraction','MailInteractionId','read1stAt','interaction','null','AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','Sequelize','SELECT','contact','User','email','internal','SIP/%s','channel','motionChannel','event','accept'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xd85e,0xb4));var _0xed85=function(_0x5338bb,_0x3231ae){_0x5338bb=_0x5338bb-0x0;var _0x548661=_0xd85e[_0x5338bb];return _0x548661;};'use strict';var emlformat=require(_0xed85('0x0'));var moment=require(_0xed85('0x1'));var BPromise=require('bluebird');var util=require(_0xed85('0x2'));var path=require(_0xed85('0x3'));var fs=require('fs');var _=require(_0xed85('0x4'));var Redis=require(_0xed85('0x5'));var htmlToText=require(_0xed85('0x6'));var qs=require('../../components/parsers/qs');var logger=require(_0xed85('0x7'))(_0xed85('0x8'));var interaction_log=require(_0xed85('0x7'))('mail-interactions');var config=require(_0xed85('0x9'));var db=require(_0xed85('0xa'))['db'];config[_0xed85('0xb')]=_[_0xed85('0xc')](config[_0xed85('0xb')],{'host':_0xed85('0xd'),'port':0x18eb});var socket=require(_0xed85('0xe'))(new Redis(config['redis']));var htmlEntities=require('html-entities');require(_0xed85('0xf'))[_0xed85('0x10')](socket);var jayson=require('jayson/promise');var client=jayson[_0xed85('0x11')][_0xed85('0x12')]({'port':0x232c});var client9003=jayson['client'][_0xed85('0x12')]({'port':0x232b});var client9002=jayson[_0xed85('0x11')][_0xed85('0x12')]({'port':0x232a});function respondWithRpcPromise(_0xa926cc,_0x4b624c,_0x2a22fd,_0x4d41e2){return new BPromise(function(_0x7b7d70,_0x5364dd){var _0x5b903e=_0x4d41e2||client;return _0x5b903e['request'](_0xa926cc,_0x2a22fd)[_0xed85('0x13')](function(_0x47f359){logger['info'](_0xed85('0x14'),_0x4b624c,'request\x20sent');logger['debug'](_0xed85('0x15'),_0x4b624c,_0xed85('0x16'),JSON[_0xed85('0x17')](_0x47f359));if(_0x47f359[_0xed85('0x18')]){if(_0x47f359[_0xed85('0x18')]['code']===0x1f4){logger['error']('MailMessage,\x20%s,\x20%s',_0x4b624c,_0x47f359[_0xed85('0x18')][_0xed85('0x19')]);return _0x5364dd(_0x47f359[_0xed85('0x18')][_0xed85('0x19')]);}logger[_0xed85('0x18')](_0xed85('0x14'),_0x4b624c,_0x47f359[_0xed85('0x18')][_0xed85('0x19')]);return _0x7b7d70(_0x47f359['error'][_0xed85('0x19')]);}else{logger['info']('MailMessage,\x20%s,\x20%s',_0x4b624c,_0xed85('0x16'));_0x7b7d70(_0x47f359[_0xed85('0x1a')][_0xed85('0x19')]);}})[_0xed85('0x1b')](function(_0x875110){logger[_0xed85('0x18')](_0xed85('0x14'),_0x4b624c,_0x875110);_0x5364dd(_0x875110);});});}function respondWithResult(_0x234de5,_0x434864){_0x434864=_0x434864||0xc8;return function(_0x6b5f84){if(_0x6b5f84){return _0x234de5[_0xed85('0x1c')](_0x434864)[_0xed85('0x1d')](_0x6b5f84);}};}function respondWithFilteredResult(_0x59eab3,_0x281139){return function(_0x2f7924){if(_0x2f7924){var _0x134696=typeof _0x281139[_0xed85('0x1e')]===_0xed85('0x1f')&&typeof _0x281139['limit']===_0xed85('0x1f');var _0x3c00e8=_0x2f7924[_0xed85('0x20')];var _0x3efcfc=_0x134696?0x0:_0x281139[_0xed85('0x1e')];var _0x5a4e1b=_0x134696?_0x2f7924[_0xed85('0x20')]:_0x281139['offset']+_0x281139[_0xed85('0x21')];var _0x2596be;if(_0x5a4e1b>=_0x3c00e8){_0x5a4e1b=_0x3c00e8;_0x2596be=0xc8;}else{_0x2596be=0xce;}_0x59eab3[_0xed85('0x1c')](_0x2596be);return _0x59eab3[_0xed85('0x22')](_0xed85('0x23'),_0x3efcfc+'-'+_0x5a4e1b+'/'+_0x3c00e8)['json'](_0x2f7924);}return null;};}function saveUpdates(_0x60b64){return function(_0x448f72){if(_0x448f72){return _0x448f72[_0xed85('0x24')](_0x60b64)[_0xed85('0x13')](function(_0xeebc1d){return _0xeebc1d;});}return null;};}function removeEntity(_0x32b1e7){return function(_0x373031){if(_0x373031){return _0x373031[_0xed85('0x25')]()[_0xed85('0x13')](function(){_0x32b1e7[_0xed85('0x1c')](0xcc)[_0xed85('0x26')]();});}};}function handleEntityNotFound(_0x119f0f){return function(_0x3f7f24){if(!_0x3f7f24){_0x119f0f[_0xed85('0x27')](0x194);}return _0x3f7f24;};}function handleError(_0x17fc36,_0x278b53){_0x278b53=_0x278b53||0x1f4;return function(_0x123852){logger['error'](_0x123852['stack']);if(_0x123852[_0xed85('0x28')]){delete _0x123852[_0xed85('0x28')];}_0x17fc36[_0xed85('0x1c')](_0x278b53)['send'](_0x123852);};}exports[_0xed85('0x29')]=function(_0x18a2bc,_0x2db95b){var _0x1ba9e4={},_0x4c4e6e={},_0x10ac19={'count':0x0,'rows':[]};var _0x12e12f=_['map'](db[_0xed85('0x2a')][_0xed85('0x2b')],function(_0x437715){return{'name':_0x437715[_0xed85('0x2c')],'type':_0x437715[_0xed85('0x2d')][_0xed85('0x2e')]};});_0x4c4e6e[_0xed85('0x2f')]=_[_0xed85('0x30')](_0x12e12f,'name');_0x4c4e6e[_0xed85('0x31')]=_['keys'](_0x18a2bc[_0xed85('0x31')]);_0x4c4e6e[_0xed85('0x32')]=_[_0xed85('0x33')](_0x4c4e6e[_0xed85('0x2f')],_0x4c4e6e[_0xed85('0x31')]);_0x1ba9e4['attributes']=_[_0xed85('0x33')](_0x4c4e6e[_0xed85('0x2f')],qs[_0xed85('0x34')](_0x18a2bc[_0xed85('0x31')][_0xed85('0x34')]));_0x1ba9e4['attributes']=_0x1ba9e4[_0xed85('0x35')][_0xed85('0x36')]?_0x1ba9e4[_0xed85('0x35')]:_0x4c4e6e[_0xed85('0x2f')];if(!_0x18a2bc['query'][_0xed85('0x37')]('nolimit')){_0x1ba9e4[_0xed85('0x21')]=qs[_0xed85('0x21')](_0x18a2bc[_0xed85('0x31')][_0xed85('0x21')]);_0x1ba9e4[_0xed85('0x1e')]=qs[_0xed85('0x1e')](_0x18a2bc[_0xed85('0x31')][_0xed85('0x1e')]);}_0x1ba9e4[_0xed85('0x38')]=qs[_0xed85('0x39')](_0x18a2bc[_0xed85('0x31')][_0xed85('0x39')]);_0x1ba9e4[_0xed85('0x3a')]=qs[_0xed85('0x32')](_[_0xed85('0x3b')](_0x18a2bc[_0xed85('0x31')],_0x4c4e6e[_0xed85('0x32')]),_0x12e12f);if(_0x18a2bc[_0xed85('0x31')]['filter']){_0x1ba9e4[_0xed85('0x3a')]=_[_0xed85('0x3c')](_0x1ba9e4['where'],{'$or':_[_0xed85('0x30')](_0x12e12f,function(_0x51897e){if(_0x51897e[_0xed85('0x2d')]!==_0xed85('0x3d')){var _0x57d8e6={};_0x57d8e6[_0x51897e['name']]={'$like':'%'+_0x18a2bc['query']['filter']+'%'};return _0x57d8e6;}})});}_0x1ba9e4=_[_0xed85('0x3c')]({},_0x1ba9e4,_0x18a2bc[_0xed85('0x3e')]);var _0x10cf7b={'where':_0x1ba9e4[_0xed85('0x3a')]};return db[_0xed85('0x2a')][_0xed85('0x20')](_0x10cf7b)[_0xed85('0x13')](function(_0x1dcc38){_0x10ac19[_0xed85('0x20')]=_0x1dcc38;if(_0x18a2bc[_0xed85('0x31')][_0xed85('0x3f')]){_0x1ba9e4[_0xed85('0x40')]=[{'all':!![]}];}return db[_0xed85('0x2a')]['findAll'](_0x1ba9e4);})[_0xed85('0x13')](function(_0x19aa4a){_0x10ac19['rows']=_0x19aa4a;return _0x10ac19;})['then'](respondWithFilteredResult(_0x2db95b,_0x1ba9e4))[_0xed85('0x1b')](handleError(_0x2db95b,null));};exports[_0xed85('0x41')]=function(_0x34103d,_0x4c725d){var _0x5341f8={'raw':!![],'where':{'id':_0x34103d['params']['id']}},_0x437eea={};_0x437eea[_0xed85('0x2f')]=_[_0xed85('0x42')](db[_0xed85('0x2a')][_0xed85('0x2b')]);_0x437eea[_0xed85('0x31')]=_['keys'](_0x34103d[_0xed85('0x31')]);_0x437eea[_0xed85('0x32')]=_[_0xed85('0x33')](_0x437eea[_0xed85('0x2f')],_0x437eea[_0xed85('0x31')]);_0x5341f8[_0xed85('0x35')]=_['intersection'](_0x437eea[_0xed85('0x2f')],qs[_0xed85('0x34')](_0x34103d[_0xed85('0x31')][_0xed85('0x34')]));_0x5341f8[_0xed85('0x35')]=_0x5341f8[_0xed85('0x35')][_0xed85('0x36')]?_0x5341f8[_0xed85('0x35')]:_0x437eea[_0xed85('0x2f')];if(_0x34103d['query']['includeAll']){_0x5341f8['include']=[{'all':!![]}];}_0x5341f8=_[_0xed85('0x3c')]({},_0x5341f8,_0x34103d[_0xed85('0x3e')]);return db['MailMessage']['find'](_0x5341f8)[_0xed85('0x13')](handleEntityNotFound(_0x4c725d,null))[_0xed85('0x13')](respondWithResult(_0x4c725d,null))['catch'](handleError(_0x4c725d,null));};exports[_0xed85('0x24')]=function(_0x405058,_0x39b0d3){if(_0x405058[_0xed85('0x43')]['id']){delete _0x405058['body']['id'];}return db[_0xed85('0x2a')][_0xed85('0x44')]({'where':{'id':_0x405058[_0xed85('0x45')]['id']}})[_0xed85('0x13')](handleEntityNotFound(_0x39b0d3,null))[_0xed85('0x13')](saveUpdates(_0x405058[_0xed85('0x43')],null))[_0xed85('0x13')](respondWithResult(_0x39b0d3,null))['catch'](handleError(_0x39b0d3,null));};exports[_0xed85('0x25')]=function(_0x513a18,_0x3ec00f){return db[_0xed85('0x2a')][_0xed85('0x44')]({'where':{'id':_0x513a18['params']['id']}})[_0xed85('0x13')](handleEntityNotFound(_0x3ec00f,null))['then'](removeEntity(_0x3ec00f,null))[_0xed85('0x1b')](handleError(_0x3ec00f,null));};exports[_0xed85('0x46')]=function(_0xfb47de,_0x13c61c){return db['MailMessage'][_0xed85('0x46')]()[_0xed85('0x13')](respondWithResult(_0x13c61c,null))[_0xed85('0x1b')](handleError(_0x13c61c,null));};exports[_0xed85('0x47')]=function(_0x21c919,_0x2c2c13){return db['MailMessage'][_0xed85('0x47')](_0x21c919[_0xed85('0x43')])['then'](function(_0x4eca26){if(_0x4eca26){if(_0x4eca26[_0xed85('0x48')]===_0xed85('0x49')&&!_0x4eca26[_0xed85('0x4a')]){var _0x2fff10,_0x16f1c3,_0x42c5b0;if(_0x21c919[_0xed85('0x43')]['to']){_0x16f1c3=_0x21c919['body']['to']['split'](',')[0x0];}return db[_0xed85('0x4b')][_0xed85('0x4c')]({'where':{'id':_0x4eca26[_0xed85('0x4d')]},'include':[{'model':db[_0xed85('0x4e')],'as':_0xed85('0x4f'),'include':[{'model':db[_0xed85('0x50')],'as':_0xed85('0x51'),'where':{'email':_0x16f1c3},'limit':0x1,'order':[[_0xed85('0x52'),_0xed85('0x53')]]}]},{'model':db[_0xed85('0x54')],'as':_0xed85('0x55'),'raw':!![],'include':[{'model':db[_0xed85('0x56')],'as':_0xed85('0x56'),'raw':!![]}]}]})[_0xed85('0x13')](function(_0x29a407){_0x2fff10=_0x29a407;if(!_0x2fff10||!_0x2fff10[_0xed85('0x55')])return;var _0x13b973=_0x2fff10['getSmtpOptions']();if(_0x21c919['body'][_0xed85('0x57')]&&_0x21c919[_0xed85('0x43')][_0xed85('0x57')]['length']){for(var _0x21c0a7=0x0;_0x21c0a7<_0x21c919['body'][_0xed85('0x57')]['length'];_0x21c0a7+=0x1){_0x21c919[_0xed85('0x43')][_0xed85('0x57')][_0x21c0a7]={'filename':_0x21c919[_0xed85('0x43')][_0xed85('0x57')][_0x21c0a7][_0xed85('0x28')],'path':path['join'](config[_0xed85('0x58')],_0xed85('0x59'),_0x21c919[_0xed85('0x43')][_0xed85('0x57')][_0x21c0a7][_0xed85('0x5a')])};}}_0x42c5b0={'account':_0x13b973,'message':_0x21c919[_0xed85('0x43')]};return;})['then'](function(){if(_0x2fff10[_0xed85('0x4f')]){if(_0x2fff10[_0xed85('0x4f')][_0xed85('0x51')][_0xed85('0x36')]){return _0x2fff10['List']['Contacts'][0x0];}else{return db[_0xed85('0x50')][_0xed85('0x47')](_['defaults'](_0x21c919[_0xed85('0x43')],{'firstName':_0x21c919[_0xed85('0x43')]['to'],'email':_0x21c919[_0xed85('0x43')]['to'],'phone':_0x21c919[_0xed85('0x43')]['to'],'ListId':_0x2fff10['ListId']}));}}else{throw new Error('List\x20not\x20found');}})[_0xed85('0x13')](function(){if(_0x42c5b0){return respondWithRpcPromise(_0xed85('0x5b'),'sendMail',_0x42c5b0,client9003)[_0xed85('0x13')](function(_0x44531e){return _0x4eca26[_0xed85('0x24')]({'read':!![],'messageId':_0x44531e[_0xed85('0x5c')],'sentAt':moment()[_0xed85('0x5d')]('YYYY-MM-DD\x20HH:mm:ss')});})['catch'](function(_0x5d8554){logger[_0xed85('0x18')]('%s',JSON['stringify'](_0x5d8554));return _0x4eca26;});}return _0x4eca26;});}return _0x4eca26;}})[_0xed85('0x13')](respondWithResult(_0x2c2c13,0xc9))[_0xed85('0x1b')](handleError(_0x2c2c13,null));};exports['accept']=function(_0x20f3b3,_0x32510e){var _0x29f812={'agent':{},'channel':_0xed85('0x5e')};if(_0x20f3b3[_0xed85('0x43')]['id']){delete _0x20f3b3[_0xed85('0x43')]['id'];}_0x20f3b3['body'][_0xed85('0x5f')]=!![];_0x20f3b3['body'][_0xed85('0x60')]=moment()[_0xed85('0x5d')](_0xed85('0x61'));_0x20f3b3[_0xed85('0x43')][_0xed85('0x62')]=_0x20f3b3[_0xed85('0x43')][_0xed85('0x62')]||_0x20f3b3[_0xed85('0x63')]['id'];_0x29f812[_0xed85('0x64')]['id']=_0x20f3b3[_0xed85('0x43')][_0xed85('0x62')];return db[_0xed85('0x2a')][_0xed85('0x44')]({'where':{'id':_0x20f3b3[_0xed85('0x45')]['id'],'UserId':null}})[_0xed85('0x13')](handleEntityNotFound(_0x32510e,null))[_0xed85('0x13')](saveUpdates(_0x20f3b3[_0xed85('0x43')],null))[_0xed85('0x13')](function(_0xb65f74){if(_0xb65f74){_0x29f812[_0xed85('0x19')]=_0xb65f74[_0xed85('0x65')]({'plain':!![]});return db[_0xed85('0x66')][_0xed85('0x44')]({'where':{'id':_0xb65f74[_0xed85('0x67')]}});}return null;})[_0xed85('0x13')](handleEntityNotFound(_0x32510e,null))['then'](function(_0x444706){if(_0x444706){return _0x444706[_0xed85('0x24')]({'UserId':_0x20f3b3[_0xed85('0x43')][_0xed85('0x62')],'read1stAt':_['isNil'](_0x444706[_0xed85('0x68')])?moment()[_0xed85('0x5d')]('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0xed85('0x13')](function(_0xcadb15){if(_0xcadb15){_0x29f812[_0xed85('0x69')]=_0xcadb15[_0xed85('0x65')]({'plain':!![]});interaction_log['info']('[MAILMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s',_0x20f3b3[_0xed85('0x63')]['id'],_0x20f3b3[_0xed85('0x63')][_0xed85('0x28')],_0x20f3b3['user']['role'],_0x29f812[_0xed85('0x69')]['id'],_0x20f3b3[_0xed85('0x43')]?JSON[_0xed85('0x17')](_0x20f3b3[_0xed85('0x43')]):_0xed85('0x6a'));return respondWithRpcPromise(_0xed85('0x6b'),'acceptMessage',_0x29f812);}return null;})[_0xed85('0x13')](function(_0xc2056a){var _0xbe88b5=_0xed85('0x6c')+_0xc2056a[_0xed85('0x19')][_0xed85('0x6d')];return db[_0xed85('0x6e')][_0xed85('0x31')](_0xbe88b5,{'type':db[_0xed85('0x6f')]['QueryTypes'][_0xed85('0x70')],'raw':!![]})[_0xed85('0x13')](function(_0xd8bd00){return _0xd8bd00;});})[_0xed85('0x13')](function(_0x1bd3b8){if(_0x1bd3b8){_0x29f812[_0xed85('0x19')][_0xed85('0x71')]=_0x1bd3b8[0x0];if(!_0x20f3b3[_0xed85('0x43')][_0xed85('0x62')])return;return db[_0xed85('0x72')][_0xed85('0x44')]({'where':{'id':_0x20f3b3[_0xed85('0x43')]['UserId'],'role':_0xed85('0x64')},'attributes':['id',_0xed85('0x28'),'fullname',_0xed85('0x73'),_0xed85('0x74')],'raw':!![]});}return null;})[_0xed85('0x13')](function(_0x40e75d){if(!_0x40e75d)return null;_0x29f812['message'][_0xed85('0x64')]=_0x40e75d;return _0x29f812;})[_0xed85('0x13')](function(_0x3b3e74){if(_0x3b3e74){if(_0x20f3b3['body']['manual']){_0x29f812['message']['interface']=util[_0xed85('0x5d')](_0xed85('0x75'),_0x20f3b3[_0xed85('0x63')][_0xed85('0x28')]);_0x29f812[_0xed85('0x19')][_0xed85('0x76')]=_0x29f812[_0xed85('0x76')];_0x29f812[_0xed85('0x19')][_0xed85('0x77')]=_0x29f812[_0xed85('0x76')];_0x29f812[_0xed85('0x19')][_0xed85('0x78')]=_0xed85('0x79');_0x29f812[_0xed85('0x19')][_0xed85('0x43')]=htmlToText[_0xed85('0x7a')](_0x29f812[_0xed85('0x19')][_0xed85('0x43')]);return respondWithRpcPromise(_0xed85('0x7b'),_0xed85('0x7b'),{'event':'acceptmessage','message':_0x29f812[_0xed85('0x19')]},client9002)[_0xed85('0x13')](function(){return _0x29f812;});}return _0x29f812;}return null;})['then'](respondWithResult(_0x32510e,null))[_0xed85('0x1b')](handleError(_0x32510e,null));};exports[_0xed85('0x7c')]=function(_0x27e3e5,_0x1d0eb9){var _0x541858={'agent':{},'channel':_0xed85('0x5e')};if(_0x27e3e5[_0xed85('0x43')]['id']){delete _0x27e3e5[_0xed85('0x43')]['id'];}_0x27e3e5['body'][_0xed85('0x62')]=_0x27e3e5[_0xed85('0x43')][_0xed85('0x62')]||_0x27e3e5[_0xed85('0x63')]['id'];_0x541858[_0xed85('0x64')]['id']=_0x27e3e5['body'][_0xed85('0x62')];return db['MailMessage'][_0xed85('0x44')]({'where':{'id':_0x27e3e5['params']['id'],'UserId':null}})['then'](handleEntityNotFound(_0x1d0eb9,null))['then'](function(_0x2e39ae){if(_0x2e39ae){_0x541858['message']=_0x2e39ae[_0xed85('0x65')]({'plain':!![]});return db[_0xed85('0x66')][_0xed85('0x44')]({'where':{'id':_0x2e39ae['MailInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x1d0eb9,null))[_0xed85('0x13')](function(_0x27fc1f){if(_0x27fc1f){_0x541858[_0xed85('0x69')]=_0x27fc1f[_0xed85('0x65')]({'plain':!![]});interaction_log['info'](_0xed85('0x7d'),_0x27e3e5[_0xed85('0x63')]['id'],_0x27e3e5[_0xed85('0x63')][_0xed85('0x28')],_0x27e3e5[_0xed85('0x63')]['role'],_0x541858[_0xed85('0x69')]['id'],_0x27e3e5[_0xed85('0x43')]?JSON[_0xed85('0x17')](_0x27e3e5['body']):'null');return respondWithRpcPromise(_0xed85('0x7e'),_0xed85('0x7f'),_0x541858);}return null;})['then'](function(_0xef9341){var _0x333763=_0xed85('0x6c')+_0xef9341[_0xed85('0x19')]['ContactId'];return db[_0xed85('0x6e')][_0xed85('0x31')](_0x333763,{'type':db['Sequelize']['QueryTypes'][_0xed85('0x70')],'raw':!![]})[_0xed85('0x13')](function(_0xf99058){return _0xf99058;});})[_0xed85('0x13')](function(_0x14737f){if(_0x14737f){_0x541858[_0xed85('0x19')][_0xed85('0x71')]=_0x14737f[0x0];if(!_0x27e3e5['body']['UserId'])return;return db[_0xed85('0x72')]['find']({'where':{'id':_0x27e3e5[_0xed85('0x43')][_0xed85('0x62')],'role':_0xed85('0x64')},'attributes':['id','name',_0xed85('0x80'),_0xed85('0x73'),_0xed85('0x74')],'raw':!![]});}return null;})[_0xed85('0x13')](function(_0x1be5ef){if(!_0x1be5ef)return null;_0x541858[_0xed85('0x19')][_0xed85('0x64')]=_0x1be5ef;return _0x541858;})[_0xed85('0x13')](function(_0x4caa56){if(_0x4caa56){_0x4caa56[_0xed85('0x19')][_0xed85('0x81')]=util[_0xed85('0x5d')](_0xed85('0x75'),_0x27e3e5[_0xed85('0x63')][_0xed85('0x28')]);_0x4caa56[_0xed85('0x19')][_0xed85('0x76')]=_0x541858[_0xed85('0x76')];_0x4caa56[_0xed85('0x19')][_0xed85('0x77')]=_0x541858[_0xed85('0x76')];_0x4caa56[_0xed85('0x19')][_0xed85('0x78')]=_0xed85('0x7c');_0x4caa56[_0xed85('0x19')][_0xed85('0x43')]=htmlToText[_0xed85('0x7a')](_0x541858[_0xed85('0x19')][_0xed85('0x43')]);respondWithRpcPromise(_0xed85('0x7b'),_0xed85('0x7b'),{'event':_0xed85('0x82'),'message':_0x4caa56[_0xed85('0x19')]},client9002);return _0x541858;}return null;})[_0xed85('0x13')](respondWithResult(_0x1d0eb9,null))['catch'](handleError(_0x1d0eb9,null));};exports[_0xed85('0x83')]=function(_0x3880f7,_0x877bb6){var _0x80274c=moment()[_0xed85('0x84')]()[_0xed85('0x85')]();var _0x161e37=path[_0xed85('0x86')](config[_0xed85('0x58')],_0xed85('0x87'),_0xed85('0x88'),'tmp');var _0x3f2ed1=path[_0xed85('0x86')](config[_0xed85('0x58')],_0xed85('0x87'),_0xed85('0x88'),_0xed85('0x57'));var _0x246c64=util[_0xed85('0x5d')]('message-%s.eml',_0x80274c);return db[_0xed85('0x2a')]['find']({'where':{'id':_0x3880f7[_0xed85('0x45')]['id']},'attributes':['id','body',_0xed85('0x89'),'to','cc','bcc',_0xed85('0x8a'),'createdAt'],'include':_0x3880f7[_0xed85('0x31')][_0xed85('0x57')]?[{'model':db[_0xed85('0x8b')],'as':'Attachments'}]:undefined})['then'](handleEntityNotFound(_0x877bb6,null))[_0xed85('0x13')](function(_0x35230c){if(_0x35230c){var _0x32dc5c=_0x35230c;var _0x20d31f={'from':_0x32dc5c[_0xed85('0x89')],'to':_0x32dc5c['to'],'subject':_0x32dc5c['subject'],'html':htmlEntities['decode'](_0x32dc5c['body']),'headers':{'Date':moment(_0x32dc5c[_0xed85('0x8c')])[_0xed85('0x5d')](_0xed85('0x8d'))},'attachments':[]};if(_0x35230c['cc']){_0x20d31f['headers']['Cc']=_0x35230c['cc'];}if(_0x35230c[_0xed85('0x8e')]){_0x20d31f['headers'][_0xed85('0x8f')]=_0x35230c[_0xed85('0x8e')];}return new BPromise(function(_0x23900d,_0x5ee571){if(_0x35230c[_0xed85('0x90')]){for(var _0x342f9a=0x0;_0x342f9a<_0x35230c['Attachments'][_0xed85('0x36')];_0x342f9a++){var _0x15d9f7=_0x35230c[_0xed85('0x90')][_0x342f9a];var _0x5c9dab=path[_0xed85('0x86')](_0x3f2ed1,_0x15d9f7[_0xed85('0x5a')]);if(fs[_0xed85('0x91')](_0x5c9dab)){_0x20d31f[_0xed85('0x57')][_0xed85('0x92')]({'name':_0x15d9f7['name'],'contentType':_0x15d9f7[_0xed85('0x2d')],'data':fs[_0xed85('0x93')](_0x5c9dab)});}}}emlformat[_0xed85('0x94')](_0x20d31f,function(_0x5bb9f6,_0x655e24){if(_0x5bb9f6)return _0x5ee571(_0x5bb9f6);fs[_0xed85('0x95')](path[_0xed85('0x86')](_0x161e37,_0x246c64),_0x655e24);return _0x23900d(_0x655e24);});});}})[_0xed85('0x13')](function(_0x490b9c){if(_0x490b9c){return _0x877bb6[_0xed85('0x83')](path[_0xed85('0x86')](_0x161e37,_0x246c64),_0x246c64,function(_0x39ea6e){if(!_0x39ea6e)fs[_0xed85('0x96')](path[_0xed85('0x86')](_0x161e37,_0x246c64));});}})[_0xed85('0x1b')](handleError(_0x877bb6,null));};
\ No newline at end of file
index 04a32aa..2db63b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6b2=['update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','setMaxListeners','save'];(function(_0x4e8ec2,_0x1af954){var _0x1d815b=function(_0x13b5c3){while(--_0x13b5c3){_0x4e8ec2['push'](_0x4e8ec2['shift']());}};_0x1d815b(++_0x1af954);}(_0xc6b2,0x126));var _0x2c6b=function(_0x5407e4,_0x1a698c){_0x5407e4=_0x5407e4-0x0;var _0x100eda=_0xc6b2[_0x5407e4];return _0x100eda;};'use strict';var EventEmitter=require('events');var MailMessage=require(_0x2c6b('0x0'))['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x2c6b('0x1')](0x0);var events={'afterCreate':_0x2c6b('0x2'),'afterUpdate':_0x2c6b('0x3'),'afterDestroy':_0x2c6b('0x4')};function emitEvent(_0x3fe725){return function(_0x37e8e9,_0x447bef,_0x818838){MailMessageEvents['emit'](_0x3fe725+':'+_0x37e8e9['id'],_0x37e8e9);MailMessageEvents[_0x2c6b('0x5')](_0x3fe725,_0x37e8e9);_0x818838(null);};}for(var e in events){if(events[_0x2c6b('0x6')](e)){var event=events[e];MailMessage[_0x2c6b('0x7')](e,emitEvent(event));}}module[_0x2c6b('0x8')]=MailMessageEvents;
\ No newline at end of file
+var _0x7883=['save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners'];(function(_0x1e85e7,_0x18f79e){var _0x466664=function(_0xcf9c02){while(--_0xcf9c02){_0x1e85e7['push'](_0x1e85e7['shift']());}};_0x466664(++_0x18f79e);}(_0x7883,0x10b));var _0x3788=function(_0x43feed,_0x4f870d){_0x43feed=_0x43feed-0x0;var _0x35e4f0=_0x7883[_0x43feed];return _0x35e4f0;};'use strict';var EventEmitter=require(_0x3788('0x0'));var MailMessage=require(_0x3788('0x1'))['db']['MailMessage'];var MailMessageEvents=new EventEmitter();MailMessageEvents[_0x3788('0x2')](0x0);var events={'afterCreate':_0x3788('0x3'),'afterUpdate':_0x3788('0x4'),'afterDestroy':_0x3788('0x5')};function emitEvent(_0x28ea24){return function(_0x5fe9a4,_0x38839c,_0x233c2c){MailMessageEvents[_0x3788('0x6')](_0x28ea24+':'+_0x5fe9a4['id'],_0x5fe9a4);MailMessageEvents[_0x3788('0x6')](_0x28ea24,_0x5fe9a4);_0x233c2c(null);};}for(var e in events){if(events[_0x3788('0x7')](e)){var event=events[e];MailMessage[_0x3788('0x8')](e,emitEvent(event));}}module[_0x3788('0x9')]=MailMessageEvents;
\ No newline at end of file
index a991738..6963eeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e99=['direction','toLowerCase','out','isNil','UserId','MailInteraction','findOne','MailInteractionId','then','update','createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','html-to-text','path','rimraf','../../config/environment','exports','define','MailMessage','mail_messages','messageId','fti_mail_messages','subject','FULLTEXT','body','get'];(function(_0x33e79c,_0x25648d){var _0x5e00c6=function(_0x3443d5){while(--_0x3443d5){_0x33e79c['push'](_0x33e79c['shift']());}};_0x5e00c6(++_0x25648d);}(_0x3e99,0x78));var _0x93e9=function(_0x499992,_0x45b862){_0x499992=_0x499992-0x0;var _0x2130cd=_0x3e99[_0x499992];return _0x2130cd;};'use strict';var _=require(_0x93e9('0x0'));var util=require(_0x93e9('0x1'));var logger=require(_0x93e9('0x2'))(_0x93e9('0x3'));var moment=require('moment');var BPromise=require(_0x93e9('0x4'));var rp=require(_0x93e9('0x5'));var htmlToText=require(_0x93e9('0x6'));var fs=require('fs');var path=require(_0x93e9('0x7'));var rimraf=require(_0x93e9('0x8'));var config=require(_0x93e9('0x9'));var attributes=require('./mailMessage.attributes');module[_0x93e9('0xa')]=function(_0x27a634,_0xa14aa5){return _0x27a634[_0x93e9('0xb')](_0x93e9('0xc'),attributes,{'tableName':_0x93e9('0xd'),'paranoid':![],'indexes':[{'name':_0x93e9('0xe'),'fields':[_0x93e9('0xe')]},{'name':_0x93e9('0xf'),'fields':['plainBody',_0x93e9('0x10')],'type':_0x93e9('0x11')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x238554,_0x1e4a3b,_0x42adc1){if(_0x238554['body']){_0x238554['plainBody']=htmlToText['fromString'](_0x238554[_0x93e9('0x12')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x42adc1(null,_0x1e4a3b);},'afterCreate':function(_0x53b419,_0x408d2f,_0x5efacc){var _0x2c527f=_0x27a634['models'];var _0x3f903f=_0x53b419[_0x93e9('0x13')]({'plain':!![]});if(_0x3f903f[_0x93e9('0x14')]['toLowerCase']()==='in'||_0x3f903f[_0x93e9('0x14')][_0x93e9('0x15')]()===_0x93e9('0x16')&&!_0x3f903f['secret']&&!_[_0x93e9('0x17')](_0x3f903f[_0x93e9('0x18')])){_0x2c527f[_0x93e9('0x19')][_0x93e9('0x1a')]({'where':{'id':_0x3f903f[_0x93e9('0x1b')]}})[_0x93e9('0x1c')](function(_0x5bf69b){if(_0x5bf69b){_0x5bf69b[_0x93e9('0x1d')]({'lastMsgAt':_0x3f903f[_0x93e9('0x1e')],'lastMsgDirection':_0x3f903f[_0x93e9('0x14')][_0x93e9('0x15')]()});}})[_0x93e9('0x1f')](function(_0x190230){console[_0x93e9('0x20')](_0x190230);});}_0x5efacc();}},'charset':_0x93e9('0x21'),'collate':_0x93e9('0x22')});};
\ No newline at end of file
+var _0x63e6=['createdAt','catch','error','utf8mb4','utf8mb4_unicode_ci','lodash','../../config/logger','moment','bluebird','request-promise','html-to-text','path','rimraf','../../config/environment','define','messageId','plainBody','subject','FULLTEXT','body','models','get','toLowerCase','direction','out','secret','UserId','MailInteraction','then','update'];(function(_0x4ae829,_0x2c842c){var _0x256b31=function(_0x34f104){while(--_0x34f104){_0x4ae829['push'](_0x4ae829['shift']());}};_0x256b31(++_0x2c842c);}(_0x63e6,0x1e5));var _0x663e=function(_0x2a6d6d,_0x472bd8){_0x2a6d6d=_0x2a6d6d-0x0;var _0x3213bb=_0x63e6[_0x2a6d6d];return _0x3213bb;};'use strict';var _=require(_0x663e('0x0'));var util=require('util');var logger=require(_0x663e('0x1'))('api');var moment=require(_0x663e('0x2'));var BPromise=require(_0x663e('0x3'));var rp=require(_0x663e('0x4'));var htmlToText=require(_0x663e('0x5'));var fs=require('fs');var path=require(_0x663e('0x6'));var rimraf=require(_0x663e('0x7'));var config=require(_0x663e('0x8'));var attributes=require('./mailMessage.attributes');module['exports']=function(_0x5ca062,_0x503283){return _0x5ca062[_0x663e('0x9')]('MailMessage',attributes,{'tableName':'mail_messages','paranoid':![],'indexes':[{'name':_0x663e('0xa'),'fields':[_0x663e('0xa')]},{'name':'fti_mail_messages','fields':[_0x663e('0xb'),_0x663e('0xc')],'type':_0x663e('0xd')}],'timestamps':!![],'hooks':{'beforeCreate':function(_0x3c411e,_0x269f4d,_0x1ba5e7){if(_0x3c411e['body']){_0x3c411e[_0x663e('0xb')]=htmlToText['fromString'](_0x3c411e[_0x663e('0xe')],{'preserveNewlines':!![],'singleNewLineParagraphs':!![],'uppercaseHeadings':![],'noLinkBrackets':!![],'ignoreImage':!![]});}_0x1ba5e7(null,_0x269f4d);},'afterCreate':function(_0xecec9f,_0x200996,_0x261668){var _0x175c0f=_0x5ca062[_0x663e('0xf')];var _0x39d582=_0xecec9f[_0x663e('0x10')]({'plain':!![]});if(_0x39d582['direction'][_0x663e('0x11')]()==='in'||_0x39d582[_0x663e('0x12')]['toLowerCase']()===_0x663e('0x13')&&!_0x39d582[_0x663e('0x14')]&&!_['isNil'](_0x39d582[_0x663e('0x15')])){_0x175c0f[_0x663e('0x16')]['findOne']({'where':{'id':_0x39d582['MailInteractionId']}})[_0x663e('0x17')](function(_0x5954b6){if(_0x5954b6){_0x5954b6[_0x663e('0x18')]({'lastMsgAt':_0x39d582[_0x663e('0x19')],'lastMsgDirection':_0x39d582[_0x663e('0x12')][_0x663e('0x11')]()});}})[_0x663e('0x1a')](function(_0x33ef53){console[_0x663e('0x1b')](_0x33ef53);});}_0x261668();}},'charset':_0x663e('0x1c'),'collate':_0x663e('0x1d')});};
\ No newline at end of file
index 370eb69..f05585b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb62e=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','request','then','info','MailMessage,\x20%s,\x20%s','debug','MailMessage,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateMailMessage','MailMessage','options','raw','lodash','util'];(function(_0x28f98b,_0x24374c){var _0x32312e=function(_0x58f3fc){while(--_0x58f3fc){_0x28f98b['push'](_0x28f98b['shift']());}};_0x32312e(++_0x24374c);}(_0xb62e,0x1de));var _0xeb62=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0xb62e[_0x2d7f0e];return _0x110b07;};'use strict';var _=require(_0xeb62('0x0'));var util=require(_0xeb62('0x1'));var moment=require(_0xeb62('0x2'));var BPromise=require(_0xeb62('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xeb62('0x4'));var db=require(_0xeb62('0x5'))['db'];var utils=require(_0xeb62('0x6'));var logger=require(_0xeb62('0x7'))(_0xeb62('0x8'));var config=require(_0xeb62('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xeb62('0xa')][_0xeb62('0xb')]({'port':0x232a});config[_0xeb62('0xc')]=_['defaults'](config[_0xeb62('0xc')],{'host':_0xeb62('0xd'),'port':0x18eb});var socket=require(_0xeb62('0xe'))(new Redis(config[_0xeb62('0xc')]));require('./mailMessage.socket')['register'](socket);function respondWithRpcPromise(_0x4693c9,_0x40584b,_0x6d5e94){return new BPromise(function(_0xf93c21,_0x2fe923){return client[_0xeb62('0xf')](_0x4693c9,_0x6d5e94)[_0xeb62('0x10')](function(_0x3a826a){logger[_0xeb62('0x11')](_0xeb62('0x12'),_0x40584b,'request\x20sent');logger[_0xeb62('0x13')](_0xeb62('0x14'),_0x40584b,_0xeb62('0x15'),JSON[_0xeb62('0x16')](_0x3a826a));if(_0x3a826a['error']){if(_0x3a826a[_0xeb62('0x17')][_0xeb62('0x18')]===0x1f4){logger[_0xeb62('0x17')]('MailMessage,\x20%s,\x20%s',_0x40584b,_0x3a826a[_0xeb62('0x17')][_0xeb62('0x19')]);return _0x2fe923(_0x3a826a[_0xeb62('0x17')]['message']);}logger[_0xeb62('0x17')](_0xeb62('0x12'),_0x40584b,_0x3a826a[_0xeb62('0x17')][_0xeb62('0x19')]);return _0xf93c21(_0x3a826a[_0xeb62('0x17')][_0xeb62('0x19')]);}else{logger[_0xeb62('0x11')](_0xeb62('0x12'),_0x40584b,_0xeb62('0x15'));_0xf93c21(_0x3a826a[_0xeb62('0x1a')][_0xeb62('0x19')]);}})[_0xeb62('0x1b')](function(_0x3cdf76){logger['error'](_0xeb62('0x12'),_0x40584b,_0x3cdf76);_0x2fe923(_0x3cdf76);});});}exports[_0xeb62('0x1c')]=function(_0x332396){var _0xb44905=this;return new Promise(function(_0x425817,_0x24cbf3){return db[_0xeb62('0x1d')]['create'](_0x332396['body'],{'raw':_0x332396[_0xeb62('0x1e')]?_0x332396[_0xeb62('0x1e')][_0xeb62('0x1f')]===undefined?!![]:![]:!![]})[_0xeb62('0x10')](function(_0x122b15){logger['info']('CreateMailMessage',_0x332396);logger[_0xeb62('0x13')](_0xeb62('0x1c'),_0x332396,JSON[_0xeb62('0x16')](_0x122b15));_0x425817(_0x122b15);})[_0xeb62('0x1b')](function(_0x55a169){logger['error'](_0xeb62('0x1c'),_0x55a169['message'],_0x332396);_0x24cbf3(_0xb44905[_0xeb62('0x17')](0x1f4,_0x55a169['message']));});});};
\ No newline at end of file
+var _0x8f59=['redis','localhost','socket.io-emitter','register','info','request\x20sent','debug','MailMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','MailMessage,\x20%s,\x20%s','result','catch','create','body','options','raw','then','CreateMailMessage','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http'];(function(_0x12a26a,_0x418bdd){var _0x263348=function(_0x4f7553){while(--_0x4f7553){_0x12a26a['push'](_0x12a26a['shift']());}};_0x263348(++_0x418bdd);}(_0x8f59,0x11d));var _0x98f5=function(_0x5c7e5e,_0x5e59f8){_0x5c7e5e=_0x5c7e5e-0x0;var _0x2d40cf=_0x8f59[_0x5c7e5e];return _0x2d40cf;};'use strict';var _=require(_0x98f5('0x0'));var util=require(_0x98f5('0x1'));var moment=require(_0x98f5('0x2'));var BPromise=require(_0x98f5('0x3'));var rs=require(_0x98f5('0x4'));var fs=require('fs');var Redis=require(_0x98f5('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x98f5('0x6'));var logger=require(_0x98f5('0x7'))(_0x98f5('0x8'));var config=require(_0x98f5('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x98f5('0xa')][_0x98f5('0xb')]({'port':0x232a});config[_0x98f5('0xc')]=_['defaults'](config['redis'],{'host':_0x98f5('0xd'),'port':0x18eb});var socket=require(_0x98f5('0xe'))(new Redis(config[_0x98f5('0xc')]));require('./mailMessage.socket')[_0x98f5('0xf')](socket);function respondWithRpcPromise(_0x31b669,_0x227cf3,_0x39e85d){return new BPromise(function(_0x4c4abc,_0x26a0fc){return client['request'](_0x31b669,_0x39e85d)['then'](function(_0x3cf4b2){logger[_0x98f5('0x10')]('MailMessage,\x20%s,\x20%s',_0x227cf3,_0x98f5('0x11'));logger[_0x98f5('0x12')](_0x98f5('0x13'),_0x227cf3,_0x98f5('0x11'),JSON[_0x98f5('0x14')](_0x3cf4b2));if(_0x3cf4b2[_0x98f5('0x15')]){if(_0x3cf4b2['error'][_0x98f5('0x16')]===0x1f4){logger[_0x98f5('0x15')]('MailMessage,\x20%s,\x20%s',_0x227cf3,_0x3cf4b2[_0x98f5('0x15')][_0x98f5('0x17')]);return _0x26a0fc(_0x3cf4b2[_0x98f5('0x15')]['message']);}logger[_0x98f5('0x15')](_0x98f5('0x18'),_0x227cf3,_0x3cf4b2[_0x98f5('0x15')]['message']);return _0x4c4abc(_0x3cf4b2[_0x98f5('0x15')][_0x98f5('0x17')]);}else{logger['info'](_0x98f5('0x18'),_0x227cf3,'request\x20sent');_0x4c4abc(_0x3cf4b2[_0x98f5('0x19')][_0x98f5('0x17')]);}})[_0x98f5('0x1a')](function(_0x11b6d4){logger[_0x98f5('0x15')](_0x98f5('0x18'),_0x227cf3,_0x11b6d4);_0x26a0fc(_0x11b6d4);});});}exports['CreateMailMessage']=function(_0xf88f34){var _0x5500a2=this;return new Promise(function(_0xd1209d,_0x191f23){return db['MailMessage'][_0x98f5('0x1b')](_0xf88f34[_0x98f5('0x1c')],{'raw':_0xf88f34[_0x98f5('0x1d')]?_0xf88f34[_0x98f5('0x1d')][_0x98f5('0x1e')]===undefined?!![]:![]:!![]})[_0x98f5('0x1f')](function(_0x38b46d){logger['info'](_0x98f5('0x20'),_0xf88f34);logger['debug'](_0x98f5('0x20'),_0xf88f34,JSON['stringify'](_0x38b46d));_0xd1209d(_0x38b46d);})[_0x98f5('0x1a')](function(_0x40c69b){logger[_0x98f5('0x15')](_0x98f5('0x20'),_0x40c69b[_0x98f5('0x17')],_0xf88f34);_0x191f23(_0x5500a2[_0x98f5('0x15')](0x1f4,_0x40c69b[_0x98f5('0x17')]));});});};
\ No newline at end of file
index 9247345..f596727 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7800=['save','remove','length','mailMessage:','./mailMessage.events'];(function(_0x1fb1c1,_0x4ebe69){var _0x1622df=function(_0x52b793){while(--_0x52b793){_0x1fb1c1['push'](_0x1fb1c1['shift']());}};_0x1622df(++_0x4ebe69);}(_0x7800,0x1ee));var _0x0780=function(_0x50f3d,_0x4759db){_0x50f3d=_0x50f3d-0x0;var _0xc7b972=_0x7800[_0x50f3d];return _0xc7b972;};'use strict';var MailMessageEvents=require(_0x0780('0x0'));var events=[_0x0780('0x1'),_0x0780('0x2'),'update'];function createListener(_0x5ab29c,_0x5b733e){return function(_0x12326d){_0x5b733e['emit'](_0x5ab29c,_0x12326d);};}function removeListener(_0x3ae8bc,_0x32915d){return function(){MailMessageEvents['removeListener'](_0x3ae8bc,_0x32915d);};}exports['register']=function(_0x4eecb3){for(var _0x1c0432=0x0,_0x4064c1=events[_0x0780('0x3')];_0x1c0432<_0x4064c1;_0x1c0432++){var _0x520aab=events[_0x1c0432];var _0x57459a=createListener(_0x0780('0x4')+_0x520aab,_0x4eecb3);MailMessageEvents['on'](_0x520aab,_0x57459a);}};
\ No newline at end of file
+var _0x7dfc=['update','emit','removeListener','length','mailMessage:','./mailMessage.events','save'];(function(_0x1b828b,_0x344400){var _0x98da1a=function(_0x1a0f5b){while(--_0x1a0f5b){_0x1b828b['push'](_0x1b828b['shift']());}};_0x98da1a(++_0x344400);}(_0x7dfc,0x19b));var _0xc7df=function(_0x1fc92c,_0x41a9ef){_0x1fc92c=_0x1fc92c-0x0;var _0x4ccab4=_0x7dfc[_0x1fc92c];return _0x4ccab4;};'use strict';var MailMessageEvents=require(_0xc7df('0x0'));var events=[_0xc7df('0x1'),'remove',_0xc7df('0x2')];function createListener(_0x431fb9,_0xefdddd){return function(_0x153122){_0xefdddd[_0xc7df('0x3')](_0x431fb9,_0x153122);};}function removeListener(_0x1855c8,_0x17e6bc){return function(){MailMessageEvents[_0xc7df('0x4')](_0x1855c8,_0x17e6bc);};}exports['register']=function(_0x3ba6d3){for(var _0x343fb0=0x0,_0x288e4e=events[_0xc7df('0x5')];_0x343fb0<_0x288e4e;_0x343fb0++){var _0x2fbf63=events[_0x343fb0];var _0x491233=createListener(_0xc7df('0x6')+_0x2fbf63,_0x3ba6d3);MailMessageEvents['on'](_0x2fbf63,_0x491233);}};
\ No newline at end of file
index 1f8bb24..57ccf90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x141f=['post','create','addTeams','addAgents','put','/:id','delete','destroy','removeAgents','exports','multer','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailQueue.controller','get','isAuthenticated','index','/describe','describe','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users'];(function(_0x39072d,_0x50c4af){var _0x1e3ab=function(_0x2cb820){while(--_0x2cb820){_0x39072d['push'](_0x39072d['shift']());}};_0x1e3ab(++_0x50c4af);}(_0x141f,0x190));var _0xf141=function(_0x477fdb,_0x462b55){_0x477fdb=_0x477fdb-0x0;var _0x32beaf=_0x141f[_0x477fdb];return _0x32beaf;};'use strict';var multer=require(_0xf141('0x0'));var util=require(_0xf141('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xf141('0x2'));var router=express[_0xf141('0x3')]();var fs_extra=require(_0xf141('0x4'));var auth=require(_0xf141('0x5'));var interaction=require(_0xf141('0x6'));var config=require(_0xf141('0x7'));var controller=require(_0xf141('0x8'));router[_0xf141('0x9')]('/',auth[_0xf141('0xa')](),controller[_0xf141('0xb')]);router['get'](_0xf141('0xc'),auth[_0xf141('0xa')](),controller[_0xf141('0xd')]);router[_0xf141('0x9')]('/:id',auth['isAuthenticated'](),controller[_0xf141('0xe')]);router[_0xf141('0x9')](_0xf141('0xf'),auth['isAuthenticated'](),controller[_0xf141('0x10')]);router[_0xf141('0x9')](_0xf141('0x11'),auth['isAuthenticated'](),controller[_0xf141('0x12')]);router['get'](_0xf141('0x13'),auth[_0xf141('0xa')](),controller['getAgents']);router[_0xf141('0x14')]('/',auth[_0xf141('0xa')](),controller[_0xf141('0x15')]);router[_0xf141('0x14')]('/:id/teams',auth['isAuthenticated'](),controller[_0xf141('0x16')]);router['post'](_0xf141('0x13'),auth[_0xf141('0xa')](),controller[_0xf141('0x17')]);router[_0xf141('0x18')](_0xf141('0x19'),auth[_0xf141('0xa')](),controller['update']);router[_0xf141('0x1a')](_0xf141('0x19'),auth[_0xf141('0xa')](),controller[_0xf141('0x1b')]);router[_0xf141('0x1a')]('/:id/teams',auth[_0xf141('0xa')](),controller['removeTeams']);router[_0xf141('0x1a')](_0xf141('0x13'),auth[_0xf141('0xa')](),controller[_0xf141('0x1c')]);module[_0xf141('0x1d')]=router;
\ No newline at end of file
+var _0xbc50=['/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','addTeams','put','update','delete','removeTeams','removeAgents','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','index','/describe','isAuthenticated','describe'];(function(_0x12d87a,_0x4d1d65){var _0x28eb24=function(_0x3840e4){while(--_0x3840e4){_0x12d87a['push'](_0x12d87a['shift']());}};_0x28eb24(++_0x4d1d65);}(_0xbc50,0x16b));var _0x0bc5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbc50[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0x0bc5('0x0'));var util=require(_0x0bc5('0x1'));var path=require(_0x0bc5('0x2'));var timeout=require(_0x0bc5('0x3'));var express=require(_0x0bc5('0x4'));var router=express[_0x0bc5('0x5')]();var fs_extra=require(_0x0bc5('0x6'));var auth=require(_0x0bc5('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0x0bc5('0x8'));var controller=require('./mailQueue.controller');router[_0x0bc5('0x9')]('/',auth['isAuthenticated'](),controller[_0x0bc5('0xa')]);router[_0x0bc5('0x9')](_0x0bc5('0xb'),auth[_0x0bc5('0xc')](),controller[_0x0bc5('0xd')]);router[_0x0bc5('0x9')](_0x0bc5('0xe'),auth['isAuthenticated'](),controller[_0x0bc5('0xf')]);router[_0x0bc5('0x9')](_0x0bc5('0x10'),auth['isAuthenticated'](),controller[_0x0bc5('0x11')]);router[_0x0bc5('0x9')](_0x0bc5('0x12'),auth[_0x0bc5('0xc')](),controller[_0x0bc5('0x13')]);router[_0x0bc5('0x9')](_0x0bc5('0x14'),auth[_0x0bc5('0xc')](),controller[_0x0bc5('0x15')]);router[_0x0bc5('0x16')]('/',auth[_0x0bc5('0xc')](),controller['create']);router['post'](_0x0bc5('0x12'),auth[_0x0bc5('0xc')](),controller[_0x0bc5('0x17')]);router['post'](_0x0bc5('0x14'),auth['isAuthenticated'](),controller['addAgents']);router[_0x0bc5('0x18')](_0x0bc5('0xe'),auth[_0x0bc5('0xc')](),controller[_0x0bc5('0x19')]);router[_0x0bc5('0x1a')](_0x0bc5('0xe'),auth['isAuthenticated'](),controller['destroy']);router[_0x0bc5('0x1a')](_0x0bc5('0x12'),auth[_0x0bc5('0xc')](),controller[_0x0bc5('0x1b')]);router[_0x0bc5('0x1a')](_0x0bc5('0x14'),auth[_0x0bc5('0xc')](),controller[_0x0bc5('0x1c')]);module['exports']=router;
\ No newline at end of file
index 567cae6..df88e74 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7024=['beepall','roundrobin','exports','STRING','name','INTEGER','ENUM','rrmemory'];(function(_0x253d2b,_0x49a0fb){var _0x3ce8bd=function(_0x3fcafe){while(--_0x3fcafe){_0x253d2b['push'](_0x253d2b['shift']());}};_0x3ce8bd(++_0x49a0fb);}(_0x7024,0x1ea));var _0x4702=function(_0x64cd2d,_0x1c4736){_0x64cd2d=_0x64cd2d-0x0;var _0x151841=_0x7024[_0x64cd2d];return _0x151841;};'use strict';var Sequelize=require('sequelize');module[_0x4702('0x0')]={'name':{'type':Sequelize[_0x4702('0x1')],'unique':_0x4702('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0x4702('0x1')]},'timeout':{'type':Sequelize[_0x4702('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x4702('0x4')](_0x4702('0x5'),_0x4702('0x6'),_0x4702('0x7'))}};
\ No newline at end of file
+var _0x642b=['beepall','roundrobin','sequelize','exports','name','STRING','ENUM','rrmemory'];(function(_0x51fe5f,_0x1d8632){var _0x4abce9=function(_0x34afb7){while(--_0x34afb7){_0x51fe5f['push'](_0x51fe5f['shift']());}};_0x4abce9(++_0x1d8632);}(_0x642b,0xd2));var _0xb642=function(_0x68c979,_0x431cff){_0x68c979=_0x68c979-0x0;var _0x4f0001=_0x642b[_0x68c979];return _0x4f0001;};'use strict';var Sequelize=require(_0xb642('0x0'));module[_0xb642('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xb642('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xb642('0x3')]},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xb642('0x4')](_0xb642('0x5'),_0xb642('0x6'),_0xb642('0x7'))}};
\ No newline at end of file
index 5314b68..ccc3744 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff33=['status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','MailQueues','destroy','error','stack','name','send','index','MailQueue','rawAttributes','fieldName','type','model','map','keys','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','filters','pick','merge','where','VIRTUAL','filter','options','includeAll','include','findAll','catch','params','find','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','body','describe','findOne','UserMailQueue','sort','MailQueueId','User','UserId','agent','mailPause','createdAt','rows','%s/%s','updatedAt','Team','getTeams','addTeams','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','forEach','userMailQueue:save','removeTeams','select','field','tq.TeamId','from','team_has_mail_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','SELECT','every','includes','all','union','compact','value','isEmpty','emit','addAgents','omit','spread','ids','removeAgents','isArray','userMailQueue:remove','getAgents','rimraf','fast-json-patch','request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','register','sendStatus'];(function(_0x1e26c9,_0x590fd0){var _0x4e1935=function(_0x1b810f){while(--_0x1b810f){_0x1e26c9['push'](_0x1e26c9['shift']());}};_0x4e1935(++_0x590fd0);}(_0xff33,0x70));var _0x3ff3=function(_0x389832,_0x10a4a9){_0x389832=_0x389832-0x0;var _0x59429e=_0xff33[_0x389832];return _0x59429e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3ff3('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x3ff3('0x1'));var rp=require(_0x3ff3('0x2'));var moment=require(_0x3ff3('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x3ff3('0x4'));var util=require(_0x3ff3('0x5'));var path=require('path');var sox=require(_0x3ff3('0x6'));var csv=require(_0x3ff3('0x7'));var ejs=require(_0x3ff3('0x8'));var fs=require('fs');var fs_extra=require(_0x3ff3('0x9'));var _=require('lodash');var squel=require(_0x3ff3('0xa'));var crypto=require(_0x3ff3('0xb'));var jsforce=require(_0x3ff3('0xc'));var deskjs=require(_0x3ff3('0xd'));var toCsv=require(_0x3ff3('0x7'));var querystring=require(_0x3ff3('0xe'));var Papa=require(_0x3ff3('0xf'));var Redis=require(_0x3ff3('0x10'));var authService=require(_0x3ff3('0x11'));var qs=require(_0x3ff3('0x12'));var as=require(_0x3ff3('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x3ff3('0x14'));var utils=require(_0x3ff3('0x15'));var config=require(_0x3ff3('0x16'));var licenseUtil=require(_0x3ff3('0x17'));var db=require(_0x3ff3('0x18'))['db'];config[_0x3ff3('0x19')]=_[_0x3ff3('0x1a')](config[_0x3ff3('0x19')],{'host':_0x3ff3('0x1b'),'port':0x18eb});var socket=require(_0x3ff3('0x1c'))(new Redis(config[_0x3ff3('0x19')]));require('./mailQueue.socket')[_0x3ff3('0x1d')](socket);function respondWithStatusCode(_0x23dc2e,_0x1a7419){_0x1a7419=_0x1a7419||0xcc;return function(_0x2853d3){if(_0x2853d3){return _0x23dc2e[_0x3ff3('0x1e')](_0x1a7419);}return _0x23dc2e[_0x3ff3('0x1f')](_0x1a7419)[_0x3ff3('0x20')]();};}function respondWithResult(_0x3b2864,_0x40438a){_0x40438a=_0x40438a||0xc8;return function(_0x41935f){if(_0x41935f){return _0x3b2864[_0x3ff3('0x1f')](_0x40438a)[_0x3ff3('0x21')](_0x41935f);}};}function respondWithFilteredResult(_0x220126,_0xc93cf1){return function(_0x56eb56){if(_0x56eb56){var _0x4b9347=typeof _0xc93cf1['offset']===_0x3ff3('0x22')&&typeof _0xc93cf1[_0x3ff3('0x23')]===_0x3ff3('0x22');var _0x174301=_0x56eb56[_0x3ff3('0x24')];var _0x1c6363=_0x4b9347?0x0:_0xc93cf1[_0x3ff3('0x25')];var _0x2448d1=_0x4b9347?_0x56eb56[_0x3ff3('0x24')]:_0xc93cf1['offset']+_0xc93cf1[_0x3ff3('0x23')];var _0xcca0e8;if(_0x2448d1>=_0x174301){_0x2448d1=_0x174301;_0xcca0e8=0xc8;}else{_0xcca0e8=0xce;}_0x220126[_0x3ff3('0x1f')](_0xcca0e8);return _0x220126[_0x3ff3('0x26')](_0x3ff3('0x27'),_0x1c6363+'-'+_0x2448d1+'/'+_0x174301)[_0x3ff3('0x21')](_0x56eb56);}return null;};}function patchUpdates(_0x576a89){return function(_0x4ef321){try{jsonpatch[_0x3ff3('0x28')](_0x4ef321,_0x576a89,!![]);}catch(_0x206783){return BPromise[_0x3ff3('0x29')](_0x206783);}return _0x4ef321[_0x3ff3('0x2a')]();};}function saveUpdates(_0x565797,_0x175343){return function(_0x3bca8c){if(_0x3bca8c){return _0x3bca8c[_0x3ff3('0x2b')](_0x565797)[_0x3ff3('0x2c')](function(_0x3ee869){return _0x3ee869;});}return null;};}function removeEntity(_0x616957,_0x4686ff){return function(_0x3a226b){if(_0x3a226b){return _0x3a226b['destroy']()[_0x3ff3('0x2c')](function(){var _0x30f73b=_0x3a226b['get']({'plain':!![]});var _0x1d8a3c=_0x3ff3('0x2d');return db['UserProfileResource'][_0x3ff3('0x2e')]({'where':{'type':_0x1d8a3c,'resourceId':_0x30f73b['id']}})['then'](function(){return _0x3a226b;});})[_0x3ff3('0x2c')](function(){_0x616957[_0x3ff3('0x1f')](0xcc)[_0x3ff3('0x20')]();});}};}function handleEntityNotFound(_0x4312bc,_0x277024){return function(_0x1d9fe0){if(!_0x1d9fe0){_0x4312bc[_0x3ff3('0x1e')](0x194);}return _0x1d9fe0;};}function handleError(_0x210909,_0xb428d6){_0xb428d6=_0xb428d6||0x1f4;return function(_0x1f6c5e){logger[_0x3ff3('0x2f')](_0x1f6c5e[_0x3ff3('0x30')]);if(_0x1f6c5e['name']){delete _0x1f6c5e[_0x3ff3('0x31')];}_0x210909[_0x3ff3('0x1f')](_0xb428d6)[_0x3ff3('0x32')](_0x1f6c5e);};}exports[_0x3ff3('0x33')]=function(_0x1f433a,_0x294671){var _0x2cff32={},_0x39b79e={},_0x1668b7={'count':0x0,'rows':[]};var _0x12d4c6=_['map'](db[_0x3ff3('0x34')][_0x3ff3('0x35')],function(_0xeb0ce4){return{'name':_0xeb0ce4[_0x3ff3('0x36')],'type':_0xeb0ce4[_0x3ff3('0x37')]['key']};});_0x39b79e[_0x3ff3('0x38')]=_[_0x3ff3('0x39')](_0x12d4c6,_0x3ff3('0x31'));_0x39b79e['query']=_[_0x3ff3('0x3a')](_0x1f433a['query']);_0x39b79e['filters']=_[_0x3ff3('0x3b')](_0x39b79e['model'],_0x39b79e[_0x3ff3('0x3c')]);_0x2cff32[_0x3ff3('0x3d')]=_[_0x3ff3('0x3b')](_0x39b79e['model'],qs[_0x3ff3('0x3e')](_0x1f433a['query'][_0x3ff3('0x3e')]));_0x2cff32[_0x3ff3('0x3d')]=_0x2cff32[_0x3ff3('0x3d')][_0x3ff3('0x3f')]?_0x2cff32[_0x3ff3('0x3d')]:_0x39b79e[_0x3ff3('0x38')];if(!_0x1f433a[_0x3ff3('0x3c')][_0x3ff3('0x40')](_0x3ff3('0x41'))){_0x2cff32[_0x3ff3('0x23')]=qs[_0x3ff3('0x23')](_0x1f433a[_0x3ff3('0x3c')][_0x3ff3('0x23')]);_0x2cff32[_0x3ff3('0x25')]=qs['offset'](_0x1f433a[_0x3ff3('0x3c')][_0x3ff3('0x25')]);}_0x2cff32[_0x3ff3('0x42')]=qs['sort'](_0x1f433a[_0x3ff3('0x3c')]['sort']);_0x2cff32['where']=qs[_0x3ff3('0x43')](_[_0x3ff3('0x44')](_0x1f433a[_0x3ff3('0x3c')],_0x39b79e['filters']),_0x12d4c6);if(_0x1f433a['query']['filter']){_0x2cff32['where']=_[_0x3ff3('0x45')](_0x2cff32[_0x3ff3('0x46')],{'$or':_['map'](_0x12d4c6,function(_0x55bdb2){if(_0x55bdb2[_0x3ff3('0x37')]!==_0x3ff3('0x47')){var _0x33ad57={};_0x33ad57[_0x55bdb2['name']]={'$like':'%'+_0x1f433a[_0x3ff3('0x3c')][_0x3ff3('0x48')]+'%'};return _0x33ad57;}})});}_0x2cff32=_[_0x3ff3('0x45')]({},_0x2cff32,_0x1f433a[_0x3ff3('0x49')]);var _0x568592={'where':_0x2cff32[_0x3ff3('0x46')]};return db[_0x3ff3('0x34')][_0x3ff3('0x24')](_0x568592)[_0x3ff3('0x2c')](function(_0x53612b){_0x1668b7['count']=_0x53612b;if(_0x1f433a[_0x3ff3('0x3c')][_0x3ff3('0x4a')]){_0x2cff32[_0x3ff3('0x4b')]=[{'all':!![]}];}return db[_0x3ff3('0x34')][_0x3ff3('0x4c')](_0x2cff32);})[_0x3ff3('0x2c')](function(_0x5f247c){_0x1668b7['rows']=_0x5f247c;return _0x1668b7;})[_0x3ff3('0x2c')](respondWithFilteredResult(_0x294671,_0x2cff32))[_0x3ff3('0x4d')](handleError(_0x294671,null));};exports['show']=function(_0xc18b00,_0x479563){var _0x50508a={'raw':!![],'where':{'id':_0xc18b00[_0x3ff3('0x4e')]['id']}},_0x290cb5={};_0x290cb5[_0x3ff3('0x38')]=_[_0x3ff3('0x3a')](db[_0x3ff3('0x34')][_0x3ff3('0x35')]);_0x290cb5[_0x3ff3('0x3c')]=_['keys'](_0xc18b00['query']);_0x290cb5[_0x3ff3('0x43')]=_[_0x3ff3('0x3b')](_0x290cb5[_0x3ff3('0x38')],_0x290cb5[_0x3ff3('0x3c')]);_0x50508a[_0x3ff3('0x3d')]=_[_0x3ff3('0x3b')](_0x290cb5[_0x3ff3('0x38')],qs[_0x3ff3('0x3e')](_0xc18b00['query'][_0x3ff3('0x3e')]));_0x50508a[_0x3ff3('0x3d')]=_0x50508a[_0x3ff3('0x3d')]['length']?_0x50508a[_0x3ff3('0x3d')]:_0x290cb5['model'];if(_0xc18b00['query'][_0x3ff3('0x4a')]){_0x50508a[_0x3ff3('0x4b')]=[{'all':!![]}];}_0x50508a=_[_0x3ff3('0x45')]({},_0x50508a,_0xc18b00[_0x3ff3('0x49')]);return db[_0x3ff3('0x34')][_0x3ff3('0x4f')](_0x50508a)['then'](handleEntityNotFound(_0x479563,null))['then'](respondWithResult(_0x479563,null))[_0x3ff3('0x4d')](handleError(_0x479563,null));};exports['create']=function(_0x2bb079,_0x12d2f8){return db[_0x3ff3('0x34')][_0x3ff3('0x50')](_0x2bb079['body'],{})[_0x3ff3('0x2c')](function(_0x4abb05){var _0x2e8867=_0x2bb079[_0x3ff3('0x51')][_0x3ff3('0x52')]({'plain':!![]});if(!_0x2e8867)throw new Error(_0x3ff3('0x53'));if(_0x2e8867[_0x3ff3('0x54')]===_0x3ff3('0x51')){var _0x4d4de2=_0x4abb05[_0x3ff3('0x52')]({'plain':!![]});var _0x14904d='MailQueues';return db[_0x3ff3('0x55')][_0x3ff3('0x4f')]({'where':{'name':_0x14904d,'userProfileId':_0x2e8867[_0x3ff3('0x56')]},'raw':!![]})[_0x3ff3('0x2c')](function(_0x58c96f){if(_0x58c96f&&_0x58c96f[_0x3ff3('0x57')]===0x0){return db['UserProfileResource'][_0x3ff3('0x50')]({'name':_0x4d4de2[_0x3ff3('0x31')],'resourceId':_0x4d4de2['id'],'type':_0x58c96f['name'],'sectionId':_0x58c96f['id']},{})[_0x3ff3('0x2c')](function(){return _0x4abb05;});}else{return _0x4abb05;}})['catch'](function(_0x332df9){logger[_0x3ff3('0x2f')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x332df9);throw _0x332df9;});}return _0x4abb05;})[_0x3ff3('0x2c')](respondWithResult(_0x12d2f8,0xc9))[_0x3ff3('0x4d')](handleError(_0x12d2f8,null));};exports[_0x3ff3('0x2b')]=function(_0x37028e,_0x2d7ca5){if(_0x37028e[_0x3ff3('0x58')]['id']){delete _0x37028e['body']['id'];}return db['MailQueue'][_0x3ff3('0x4f')]({'where':{'id':_0x37028e['params']['id']}})['then'](handleEntityNotFound(_0x2d7ca5,null))[_0x3ff3('0x2c')](saveUpdates(_0x37028e[_0x3ff3('0x58')],null))[_0x3ff3('0x2c')](respondWithResult(_0x2d7ca5,null))['catch'](handleError(_0x2d7ca5,null));};exports[_0x3ff3('0x2e')]=function(_0x1d4a2d,_0x6d934f){return db[_0x3ff3('0x34')][_0x3ff3('0x4f')]({'where':{'id':_0x1d4a2d[_0x3ff3('0x4e')]['id']}})['then'](handleEntityNotFound(_0x6d934f,null))[_0x3ff3('0x2c')](removeEntity(_0x6d934f,null))[_0x3ff3('0x4d')](handleError(_0x6d934f,null));};exports[_0x3ff3('0x59')]=function(_0x1c0584,_0x4a3c7a){return db[_0x3ff3('0x34')][_0x3ff3('0x59')]()[_0x3ff3('0x2c')](respondWithResult(_0x4a3c7a,null))[_0x3ff3('0x4d')](handleError(_0x4a3c7a,null));};exports['getMembers']=function(_0x1e3719,_0xef0511,_0x23e860){var _0x2a6c1b={'raw':!![],'where':{}},_0x15a4e2={},_0x1dd1aa;return db[_0x3ff3('0x34')][_0x3ff3('0x5a')]({'where':{'id':_0x1e3719[_0x3ff3('0x4e')]['id']}})[_0x3ff3('0x2c')](handleEntityNotFound(_0xef0511,null))[_0x3ff3('0x2c')](function(_0x435f31){if(_0x435f31){_0x1dd1aa=_0x435f31['get']({'plain':!![]});_0x15a4e2[_0x3ff3('0x38')]=_[_0x3ff3('0x3a')](db[_0x3ff3('0x5b')]['rawAttributes']);_0x15a4e2[_0x3ff3('0x3c')]=_[_0x3ff3('0x3a')](_0x1e3719[_0x3ff3('0x3c')]);_0x15a4e2[_0x3ff3('0x43')]=_[_0x3ff3('0x3b')](_0x15a4e2[_0x3ff3('0x38')],_0x15a4e2[_0x3ff3('0x3c')]);_0x2a6c1b[_0x3ff3('0x3d')]=_[_0x3ff3('0x3b')](_0x15a4e2[_0x3ff3('0x38')],qs[_0x3ff3('0x3e')](_0x1e3719[_0x3ff3('0x3c')]['fields']));_0x2a6c1b[_0x3ff3('0x3d')]=_0x2a6c1b[_0x3ff3('0x3d')]['length']?_0x2a6c1b[_0x3ff3('0x3d')]:_0x15a4e2[_0x3ff3('0x38')];if(!_0x1e3719[_0x3ff3('0x3c')][_0x3ff3('0x40')](_0x3ff3('0x41'))){_0x2a6c1b[_0x3ff3('0x23')]=qs[_0x3ff3('0x23')](_0x1e3719[_0x3ff3('0x3c')]['limit']);_0x2a6c1b[_0x3ff3('0x25')]=qs[_0x3ff3('0x25')](_0x1e3719[_0x3ff3('0x3c')][_0x3ff3('0x25')]);}_0x2a6c1b[_0x3ff3('0x42')]=qs[_0x3ff3('0x5c')](_0x1e3719[_0x3ff3('0x3c')][_0x3ff3('0x5c')]);_0x2a6c1b['where']=qs['filters'](_[_0x3ff3('0x44')](_0x1e3719['query'],_0x15a4e2[_0x3ff3('0x43')]));_0x2a6c1b[_0x3ff3('0x46')][_0x3ff3('0x5d')]=_0x435f31['id'];if(_0x1e3719[_0x3ff3('0x3c')][_0x3ff3('0x48')]){_0x2a6c1b[_0x3ff3('0x46')]=_['merge'](_0x2a6c1b[_0x3ff3('0x46')],{'$or':_[_0x3ff3('0x39')](_0x2a6c1b['attributes'],function(_0x508da8){var _0xa34881={};_0xa34881[_0x508da8]={'$like':'%'+_0x1e3719[_0x3ff3('0x3c')][_0x3ff3('0x48')]+'%'};return _0xa34881;})});}_0x2a6c1b=_[_0x3ff3('0x45')]({},_0x2a6c1b,_0x1e3719[_0x3ff3('0x49')]);return db[_0x3ff3('0x5b')]['findAll'](_0x2a6c1b);}})[_0x3ff3('0x2c')](function(_0x347b40){if(_0x347b40){return db[_0x3ff3('0x5e')]['findAndCountAll']({'where':{'id':_['map'](_0x347b40,_0x3ff3('0x5f')),'role':_0x3ff3('0x60')},'attributes':['id',_0x3ff3('0x31'),_0x3ff3('0x61'),'updatedAt',_0x3ff3('0x62')]});}})['then'](function(_0x3374a4){if(_0x3374a4){return{'count':_0x3374a4[_0x3ff3('0x24')],'rows':_[_0x3ff3('0x39')](_0x3374a4[_0x3ff3('0x63')],function(_0x4c6c54){return{'membername':_0x4c6c54[_0x3ff3('0x31')],'UserId':_0x4c6c54['id'],'queue_name':_0x1dd1aa[_0x3ff3('0x31')],'MailQueueId':_0x1dd1aa['id'],'interface':util['format'](_0x3ff3('0x64'),'SIP',_0x4c6c54[_0x3ff3('0x31')]),'penalty':0x0,'paused':_0x4c6c54[_0x3ff3('0x61')],'createdAt':_0x4c6c54[_0x3ff3('0x62')],'updatedAt':_0x4c6c54[_0x3ff3('0x65')]};})};}else{return{'count':0x0,'rows':[]};}})[_0x3ff3('0x2c')](respondWithFilteredResult(_0xef0511,_0x2a6c1b))[_0x3ff3('0x4d')](handleError(_0xef0511,null));};exports['getTeams']=function(_0x5e237d,_0x5be1e2,_0x29d69){var _0x49a6b3={};var _0x5f806d={};var _0x47705c;var _0x174d50;return db[_0x3ff3('0x34')]['findOne']({'where':{'id':_0x5e237d[_0x3ff3('0x4e')]['id']}})[_0x3ff3('0x2c')](handleEntityNotFound(_0x5be1e2,null))[_0x3ff3('0x2c')](function(_0x309e6f){if(_0x309e6f){_0x47705c=_0x309e6f;_0x5f806d[_0x3ff3('0x38')]=_[_0x3ff3('0x3a')](db[_0x3ff3('0x66')]['rawAttributes']);_0x5f806d[_0x3ff3('0x3c')]=_[_0x3ff3('0x3a')](_0x5e237d[_0x3ff3('0x3c')]);_0x5f806d[_0x3ff3('0x43')]=_[_0x3ff3('0x3b')](_0x5f806d[_0x3ff3('0x38')],_0x5f806d[_0x3ff3('0x3c')]);_0x49a6b3[_0x3ff3('0x3d')]=_[_0x3ff3('0x3b')](_0x5f806d[_0x3ff3('0x38')],qs[_0x3ff3('0x3e')](_0x5e237d[_0x3ff3('0x3c')][_0x3ff3('0x3e')]));_0x49a6b3['attributes']=_0x49a6b3[_0x3ff3('0x3d')]['length']?_0x49a6b3[_0x3ff3('0x3d')]:_0x5f806d['model'];_0x49a6b3[_0x3ff3('0x42')]=qs['sort'](_0x5e237d['query'][_0x3ff3('0x5c')]);_0x49a6b3[_0x3ff3('0x46')]=qs[_0x3ff3('0x43')](_[_0x3ff3('0x44')](_0x5e237d['query'],_0x5f806d[_0x3ff3('0x43')]));if(_0x5e237d['query'][_0x3ff3('0x48')]){_0x49a6b3['where']=_[_0x3ff3('0x45')](_0x49a6b3[_0x3ff3('0x46')],{'$or':_[_0x3ff3('0x39')](_0x49a6b3[_0x3ff3('0x3d')],function(_0x427317){var _0x2ab979={};_0x2ab979[_0x427317]={'$like':'%'+_0x5e237d[_0x3ff3('0x3c')][_0x3ff3('0x48')]+'%'};return _0x2ab979;})});}_0x49a6b3=_[_0x3ff3('0x45')]({},_0x49a6b3,_0x5e237d[_0x3ff3('0x49')]);return _0x47705c[_0x3ff3('0x67')](_0x49a6b3);}})[_0x3ff3('0x2c')](function(_0x4d632c){if(_0x4d632c){_0x174d50=_0x4d632c[_0x3ff3('0x3f')];if(!_0x5e237d[_0x3ff3('0x3c')][_0x3ff3('0x40')](_0x3ff3('0x41'))){_0x49a6b3['limit']=qs[_0x3ff3('0x23')](_0x5e237d['query'][_0x3ff3('0x23')]);_0x49a6b3[_0x3ff3('0x25')]=qs[_0x3ff3('0x25')](_0x5e237d[_0x3ff3('0x3c')]['offset']);}return _0x47705c['getTeams'](_0x49a6b3);}})['then'](function(_0x44332b){if(_0x44332b){return _0x44332b?{'count':_0x174d50,'rows':_0x44332b}:null;}})[_0x3ff3('0x2c')](respondWithResult(_0x5be1e2,null))[_0x3ff3('0x4d')](handleError(_0x5be1e2,null));};exports[_0x3ff3('0x68')]=function(_0x5a06f7,_0x46e5dc,_0x2e5b8f){var _0x499b9a=_0x5a06f7[_0x3ff3('0x58')]['ids'];return db[_0x3ff3('0x66')][_0x3ff3('0x4c')]({'where':{'id':_0x499b9a},'attributes':['id'],'include':[{'model':db[_0x3ff3('0x5e')],'as':_0x3ff3('0x69'),'attributes':['id',_0x3ff3('0x31'),_0x3ff3('0x6a'),_0x3ff3('0x6b'),_0x3ff3('0x6c')],'raw':!![]}]})[_0x3ff3('0x2c')](function(_0x1c4257){if(_0x1c4257){var _0x9efc3=_[_0x3ff3('0x6d')](_0x1c4257,function(_0xc3debd){var _0x499ff0=_0xc3debd['get']({'plain':!![]});return _0x499ff0[_0x3ff3('0x69')];});return db[_0x3ff3('0x34')][_0x3ff3('0x4f')]({'where':{'id':_0x5a06f7['params']['id']}})['then'](function(_0x29aeb8){return db[_0x3ff3('0x6e')][_0x3ff3('0x6f')](function(_0x810328){return _0x29aeb8[_0x3ff3('0x68')](_0x499b9a,{'transaction':_0x810328})['then'](function(){return BPromise[_0x3ff3('0x70')](_0x9efc3,function(_0x1725b5){return db[_0x3ff3('0x5b')][_0x3ff3('0x71')]({'where':{'UserId':_0x1725b5['id'],'MailQueueId':_0x5a06f7[_0x3ff3('0x4e')]['id']},'transaction':_0x810328});});})['then'](function(){_0x9efc3[_0x3ff3('0x72')](function(_0x1ff5f7){socket['emit'](_0x3ff3('0x73'),{'UserId':_0x1ff5f7['id'],'MailQueueId':_0x29aeb8['id']});});});});});}})['then'](respondWithStatusCode(_0x46e5dc,null))[_0x3ff3('0x4d')](handleError(_0x46e5dc,null));};exports[_0x3ff3('0x74')]=function(_0x4807d6,_0x59acda,_0xe75d31){return db[_0x3ff3('0x66')][_0x3ff3('0x4c')]({'where':{'id':_0x4807d6[_0x3ff3('0x3c')]['ids']},'attributes':['id'],'include':[{'model':db['User'],'as':_0x3ff3('0x69'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x59acda,null))[_0x3ff3('0x2c')](function(_0x5b2dbe){var _0x216cfa=_[_0x3ff3('0x39')](_0x5b2dbe,'id');var _0x58bea7=[];var _0x1e9c90=[];var _0x2c048f=squel[_0x3ff3('0x75')]();_0x2c048f[_0x3ff3('0x76')](_0x3ff3('0x77'))[_0x3ff3('0x78')](_0x3ff3('0x79'),'tq')[_0x3ff3('0x7a')](_0x3ff3('0x7b'),'ut',_0x3ff3('0x7c'))[_0x3ff3('0x46')]('MailQueueId\x20=\x20?',_0x4807d6[_0x3ff3('0x4e')]['id']);for(var _0x34281e=0x0;_0x34281e<_0x5b2dbe[_0x3ff3('0x3f')];_0x34281e+=0x1){let _0x411f16=_0x5b2dbe[_0x34281e];for(var _0x522f73=0x0;_0x522f73<_0x411f16[_0x3ff3('0x69')]['length'];_0x522f73+=0x1){let _0x4e2363=_0x411f16['Agents'][_0x522f73];var _0x58d949=_0x2c048f['clone']();_0x58d949[_0x3ff3('0x46')](_0x3ff3('0x7d'),_0x4e2363['id']);_0x1e9c90['push'](db[_0x3ff3('0x6e')][_0x3ff3('0x3c')](_0x58d949['toString'](),{'type':db[_0x3ff3('0x6e')]['QueryTypes'][_0x3ff3('0x7e')]})[_0x3ff3('0x2c')](function(_0x4cbbaf){if(_0x4cbbaf[_0x3ff3('0x3f')]===0x1){return _0x4e2363['id'];}else{var _0x4a1047=_[_0x3ff3('0x7f')](_['map'](_0x4cbbaf,'TeamId'),function(_0x262821){return _[_0x3ff3('0x80')](_0x216cfa,_0x262821);});if(_0x4a1047){return _0x4e2363['id'];}}}));}}return BPromise[_0x3ff3('0x81')](_0x1e9c90)['then'](function(_0x3c1d5f){_0x58bea7=_(_0x58bea7)[_0x3ff3('0x82')](_0x3c1d5f)[_0x3ff3('0x83')]()[_0x3ff3('0x84')]();return db[_0x3ff3('0x34')][_0x3ff3('0x4f')]({'where':{'id':_0x4807d6[_0x3ff3('0x4e')]['id']}})[_0x3ff3('0x2c')](function(_0x6fa340){return db[_0x3ff3('0x6e')][_0x3ff3('0x6f')](function(_0x4f39d1){return _0x6fa340['removeTeams'](_0x4807d6[_0x3ff3('0x3c')]['ids'],{'transaction':_0x4f39d1})['then'](function(){if(!_[_0x3ff3('0x85')](_0x58bea7)){return _0x6fa340['removeAgents'](_0x58bea7,{'transaction':_0x4f39d1});}})[_0x3ff3('0x2c')](function(){_0x58bea7[_0x3ff3('0x72')](function(_0x7b9d62){socket[_0x3ff3('0x86')]('userMailQueue:remove',{'UserId':_0x7b9d62,'MailQueueId':_0x6fa340['id']});});});});});});})[_0x3ff3('0x2c')](respondWithStatusCode(_0x59acda,null))['catch'](handleError(_0x59acda,null));};exports[_0x3ff3('0x87')]=function(_0x15e816,_0x35d4a4,_0x4c0155){return db[_0x3ff3('0x34')][_0x3ff3('0x4f')]({'where':{'id':_0x15e816[_0x3ff3('0x4e')]['id']}})[_0x3ff3('0x2c')](handleEntityNotFound(_0x35d4a4,null))[_0x3ff3('0x2c')](function(_0xee7688){if(_0xee7688){return _0xee7688[_0x3ff3('0x87')](_0x15e816[_0x3ff3('0x58')]['ids'],_[_0x3ff3('0x88')](_0x15e816[_0x3ff3('0x58')],['ids','id'])||{})[_0x3ff3('0x89')](function(_0x230b1e){for(var _0x28a977=0x0;_0x28a977<_0x15e816[_0x3ff3('0x58')][_0x3ff3('0x8a')][_0x3ff3('0x3f')];_0x28a977+=0x1){socket['emit'](_0x3ff3('0x73'),{'UserId':Number(_0x15e816[_0x3ff3('0x58')][_0x3ff3('0x8a')][_0x28a977]),'MailQueueId':Number(_0x15e816[_0x3ff3('0x4e')]['id'])});}return _0x230b1e;});}})[_0x3ff3('0x2c')](respondWithResult(_0x35d4a4,null))[_0x3ff3('0x4d')](handleError(_0x35d4a4,null));};exports[_0x3ff3('0x8b')]=function(_0xc5e02a,_0x57d8ee,_0x5cbb13){return db['MailQueue']['find']({'where':{'id':_0xc5e02a[_0x3ff3('0x4e')]['id']}})['then'](handleEntityNotFound(_0x57d8ee,null))[_0x3ff3('0x2c')](function(_0x3b20d7){if(_0x3b20d7){return _0x3b20d7[_0x3ff3('0x8b')](_0xc5e02a[_0x3ff3('0x3c')]['ids'])[_0x3ff3('0x2c')](function(){if(_[_0x3ff3('0x8c')](_0xc5e02a['query'][_0x3ff3('0x8a')])){for(var _0x2817ae=0x0;_0x2817ae<_0xc5e02a[_0x3ff3('0x3c')][_0x3ff3('0x8a')][_0x3ff3('0x3f')];_0x2817ae+=0x1){socket['emit'](_0x3ff3('0x8d'),{'UserId':Number(_0xc5e02a['query'][_0x3ff3('0x8a')][_0x2817ae]),'MailQueueId':Number(_0xc5e02a[_0x3ff3('0x4e')]['id'])});}}else{socket[_0x3ff3('0x86')](_0x3ff3('0x8d'),{'UserId':Number(_0xc5e02a[_0x3ff3('0x3c')][_0x3ff3('0x8a')]),'MailQueueId':Number(_0xc5e02a[_0x3ff3('0x4e')]['id'])});}});}})[_0x3ff3('0x2c')](respondWithStatusCode(_0x57d8ee,null))[_0x3ff3('0x4d')](handleError(_0x57d8ee,null));};exports[_0x3ff3('0x8e')]=function(_0x557217,_0x1f8cf0,_0x151c4a){var _0xaa4d84={};var _0x514b98={};var _0x3c868b;var _0x5da765;return db['MailQueue'][_0x3ff3('0x5a')]({'where':{'id':_0x557217[_0x3ff3('0x4e')]['id']}})[_0x3ff3('0x2c')](handleEntityNotFound(_0x1f8cf0,null))[_0x3ff3('0x2c')](function(_0x29fac7){if(_0x29fac7){_0x3c868b=_0x29fac7;_0x514b98[_0x3ff3('0x38')]=_[_0x3ff3('0x3a')](db['User'][_0x3ff3('0x35')]);_0x514b98[_0x3ff3('0x3c')]=_['keys'](_0x557217[_0x3ff3('0x3c')]);_0x514b98['filters']=_[_0x3ff3('0x3b')](_0x514b98['model'],_0x514b98[_0x3ff3('0x3c')]);_0xaa4d84[_0x3ff3('0x3d')]=_[_0x3ff3('0x3b')](_0x514b98['model'],qs['fields'](_0x557217[_0x3ff3('0x3c')][_0x3ff3('0x3e')]));_0xaa4d84[_0x3ff3('0x3d')]=_0xaa4d84[_0x3ff3('0x3d')][_0x3ff3('0x3f')]?_0xaa4d84['attributes']:_0x514b98['model'];_0xaa4d84[_0x3ff3('0x42')]=qs[_0x3ff3('0x5c')](_0x557217[_0x3ff3('0x3c')][_0x3ff3('0x5c')]);_0xaa4d84[_0x3ff3('0x46')]=qs[_0x3ff3('0x43')](_['pick'](_0x557217[_0x3ff3('0x3c')],_0x514b98[_0x3ff3('0x43')]));if(_0x557217[_0x3ff3('0x3c')][_0x3ff3('0x48')]){_0xaa4d84[_0x3ff3('0x46')]=_['merge'](_0xaa4d84[_0x3ff3('0x46')],{'$or':_[_0x3ff3('0x39')](_0xaa4d84['attributes'],function(_0x15dbaa){var _0x50c035={};_0x50c035[_0x15dbaa]={'$like':'%'+_0x557217[_0x3ff3('0x3c')]['filter']+'%'};return _0x50c035;})});}_0xaa4d84=_[_0x3ff3('0x45')]({},_0xaa4d84,_0x557217['options']);return _0x3c868b['getAgents'](_0xaa4d84);}})[_0x3ff3('0x2c')](function(_0x4eba53){if(_0x4eba53){_0x5da765=_0x4eba53[_0x3ff3('0x3f')];if(!_0x557217[_0x3ff3('0x3c')][_0x3ff3('0x40')]('nolimit')){_0xaa4d84[_0x3ff3('0x23')]=qs['limit'](_0x557217[_0x3ff3('0x3c')][_0x3ff3('0x23')]);_0xaa4d84[_0x3ff3('0x25')]=qs[_0x3ff3('0x25')](_0x557217[_0x3ff3('0x3c')]['offset']);}return _0x3c868b[_0x3ff3('0x8e')](_0xaa4d84);}})[_0x3ff3('0x2c')](function(_0x48fde1){if(_0x48fde1){return _0x48fde1?{'count':_0x5da765,'rows':_0x48fde1}:null;}})[_0x3ff3('0x2c')](respondWithResult(_0x1f8cf0,null))['catch'](handleError(_0x1f8cf0,null));};
\ No newline at end of file
+var _0xd023=['MailQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','sequelize','SELECT','every','TeamId','includes','all','union','compact','value','removeAgents','userMailQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','request-promise','mustache','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','socket.io-emitter','./mailQueue.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','apply','save','then','destroy','MailQueues','end','error','name','send','index','map','MailQueue','rawAttributes','type','key','model','query','keys','attributes','intersection','fields','nolimit','sort','where','filters','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','show','params','create','body','user','get','role','UserProfileSection','autoAssociation','UserProfileResource','catch','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','find','describe','getMembers','findOne','UserMailQueue','length','hasOwnProperty','order','MailQueueId','User','UserId','agent','mailPause','updatedAt','createdAt','format','%s/%s','SIP','getTeams','Team','addTeams','ids','Agents','online','flatMap','transaction','findOrCreate','forEach','emit','userMailQueue:save','removeTeams','select','field','tq.TeamId','join','user_has_teams'];(function(_0x11005e,_0x20c3d2){var _0x29338f=function(_0x3384e9){while(--_0x3384e9){_0x11005e['push'](_0x11005e['shift']());}};_0x29338f(++_0x20c3d2);}(_0xd023,0x1b1));var _0x3d02=function(_0x2f1f08,_0x158f35){_0x2f1f08=_0x2f1f08-0x0;var _0x32f365=_0xd023[_0x2f1f08];return _0x32f365;};'use strict';var emlformat=require(_0x3d02('0x0'));var rimraf=require(_0x3d02('0x1'));var zipdir=require(_0x3d02('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3d02('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x3d02('0x4'));var util=require('util');var path=require(_0x3d02('0x5'));var sox=require('sox');var csv=require(_0x3d02('0x6'));var ejs=require(_0x3d02('0x7'));var fs=require('fs');var fs_extra=require(_0x3d02('0x8'));var _=require(_0x3d02('0x9'));var squel=require(_0x3d02('0xa'));var crypto=require('crypto');var jsforce=require(_0x3d02('0xb'));var deskjs=require(_0x3d02('0xc'));var toCsv=require('to-csv');var querystring=require(_0x3d02('0xd'));var Papa=require(_0x3d02('0xe'));var Redis=require(_0x3d02('0xf'));var authService=require(_0x3d02('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x3d02('0x11'));var hardwareService=require(_0x3d02('0x12'));var logger=require(_0x3d02('0x13'))('api');var utils=require(_0x3d02('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x3d02('0x15'));var db=require(_0x3d02('0x16'))['db'];config[_0x3d02('0x17')]=_[_0x3d02('0x18')](config[_0x3d02('0x17')],{'host':'localhost','port':0x18eb});var socket=require(_0x3d02('0x19'))(new Redis(config[_0x3d02('0x17')]));require(_0x3d02('0x1a'))[_0x3d02('0x1b')](socket);function respondWithStatusCode(_0x271302,_0x201b41){_0x201b41=_0x201b41||0xcc;return function(_0x48d6ab){if(_0x48d6ab){return _0x271302[_0x3d02('0x1c')](_0x201b41);}return _0x271302[_0x3d02('0x1d')](_0x201b41)['end']();};}function respondWithResult(_0x4c503f,_0x336e72){_0x336e72=_0x336e72||0xc8;return function(_0x430d96){if(_0x430d96){return _0x4c503f['status'](_0x336e72)[_0x3d02('0x1e')](_0x430d96);}};}function respondWithFilteredResult(_0x5cfb5a,_0x4ec82a){return function(_0x4162b8){if(_0x4162b8){var _0x5523e0=typeof _0x4ec82a[_0x3d02('0x1f')]===_0x3d02('0x20')&&typeof _0x4ec82a[_0x3d02('0x21')]===_0x3d02('0x20');var _0x3835a2=_0x4162b8[_0x3d02('0x22')];var _0x17ec9d=_0x5523e0?0x0:_0x4ec82a[_0x3d02('0x1f')];var _0x3b2af0=_0x5523e0?_0x4162b8[_0x3d02('0x22')]:_0x4ec82a[_0x3d02('0x1f')]+_0x4ec82a['limit'];var _0x4032c5;if(_0x3b2af0>=_0x3835a2){_0x3b2af0=_0x3835a2;_0x4032c5=0xc8;}else{_0x4032c5=0xce;}_0x5cfb5a[_0x3d02('0x1d')](_0x4032c5);return _0x5cfb5a[_0x3d02('0x23')]('Content-Range',_0x17ec9d+'-'+_0x3b2af0+'/'+_0x3835a2)[_0x3d02('0x1e')](_0x4162b8);}return null;};}function patchUpdates(_0x2aaac3){return function(_0x37f99c){try{jsonpatch[_0x3d02('0x24')](_0x37f99c,_0x2aaac3,!![]);}catch(_0x4084ee){return BPromise['reject'](_0x4084ee);}return _0x37f99c[_0x3d02('0x25')]();};}function saveUpdates(_0x13c9cd,_0x55b9b3){return function(_0x590c17){if(_0x590c17){return _0x590c17['update'](_0x13c9cd)[_0x3d02('0x26')](function(_0x16c2f7){return _0x16c2f7;});}return null;};}function removeEntity(_0x2bd11e,_0x3c531){return function(_0x27cee7){if(_0x27cee7){return _0x27cee7[_0x3d02('0x27')]()[_0x3d02('0x26')](function(){var _0x2944a9=_0x27cee7['get']({'plain':!![]});var _0x1396bf=_0x3d02('0x28');return db['UserProfileResource'][_0x3d02('0x27')]({'where':{'type':_0x1396bf,'resourceId':_0x2944a9['id']}})[_0x3d02('0x26')](function(){return _0x27cee7;});})['then'](function(){_0x2bd11e[_0x3d02('0x1d')](0xcc)[_0x3d02('0x29')]();});}};}function handleEntityNotFound(_0x57208b,_0x1fb31c){return function(_0x1701e5){if(!_0x1701e5){_0x57208b[_0x3d02('0x1c')](0x194);}return _0x1701e5;};}function handleError(_0x7440c,_0x28a479){_0x28a479=_0x28a479||0x1f4;return function(_0x492fc1){logger[_0x3d02('0x2a')](_0x492fc1['stack']);if(_0x492fc1[_0x3d02('0x2b')]){delete _0x492fc1['name'];}_0x7440c[_0x3d02('0x1d')](_0x28a479)[_0x3d02('0x2c')](_0x492fc1);};}exports[_0x3d02('0x2d')]=function(_0x7626dc,_0x44e01a){var _0x1dbcb8={},_0x7c1129={},_0x4cdf9f={'count':0x0,'rows':[]};var _0x3b7091=_[_0x3d02('0x2e')](db[_0x3d02('0x2f')][_0x3d02('0x30')],function(_0x20fbd9){return{'name':_0x20fbd9['fieldName'],'type':_0x20fbd9[_0x3d02('0x31')][_0x3d02('0x32')]};});_0x7c1129[_0x3d02('0x33')]=_['map'](_0x3b7091,'name');_0x7c1129[_0x3d02('0x34')]=_[_0x3d02('0x35')](_0x7626dc[_0x3d02('0x34')]);_0x7c1129['filters']=_['intersection'](_0x7c1129['model'],_0x7c1129[_0x3d02('0x34')]);_0x1dbcb8[_0x3d02('0x36')]=_[_0x3d02('0x37')](_0x7c1129[_0x3d02('0x33')],qs['fields'](_0x7626dc[_0x3d02('0x34')][_0x3d02('0x38')]));_0x1dbcb8[_0x3d02('0x36')]=_0x1dbcb8[_0x3d02('0x36')]['length']?_0x1dbcb8[_0x3d02('0x36')]:_0x7c1129['model'];if(!_0x7626dc['query']['hasOwnProperty'](_0x3d02('0x39'))){_0x1dbcb8['limit']=qs[_0x3d02('0x21')](_0x7626dc['query'][_0x3d02('0x21')]);_0x1dbcb8[_0x3d02('0x1f')]=qs[_0x3d02('0x1f')](_0x7626dc[_0x3d02('0x34')][_0x3d02('0x1f')]);}_0x1dbcb8['order']=qs[_0x3d02('0x3a')](_0x7626dc[_0x3d02('0x34')]['sort']);_0x1dbcb8[_0x3d02('0x3b')]=qs[_0x3d02('0x3c')](_[_0x3d02('0x3d')](_0x7626dc['query'],_0x7c1129[_0x3d02('0x3c')]),_0x3b7091);if(_0x7626dc['query'][_0x3d02('0x3e')]){_0x1dbcb8[_0x3d02('0x3b')]=_['merge'](_0x1dbcb8[_0x3d02('0x3b')],{'$or':_[_0x3d02('0x2e')](_0x3b7091,function(_0x15ce29){if(_0x15ce29['type']!==_0x3d02('0x3f')){var _0x29fc08={};_0x29fc08[_0x15ce29['name']]={'$like':'%'+_0x7626dc[_0x3d02('0x34')][_0x3d02('0x3e')]+'%'};return _0x29fc08;}})});}_0x1dbcb8=_[_0x3d02('0x40')]({},_0x1dbcb8,_0x7626dc[_0x3d02('0x41')]);var _0x40263d={'where':_0x1dbcb8[_0x3d02('0x3b')]};return db[_0x3d02('0x2f')][_0x3d02('0x22')](_0x40263d)[_0x3d02('0x26')](function(_0x2af5d8){_0x4cdf9f['count']=_0x2af5d8;if(_0x7626dc[_0x3d02('0x34')][_0x3d02('0x42')]){_0x1dbcb8[_0x3d02('0x43')]=[{'all':!![]}];}return db[_0x3d02('0x2f')][_0x3d02('0x44')](_0x1dbcb8);})[_0x3d02('0x26')](function(_0xeffafe){_0x4cdf9f[_0x3d02('0x45')]=_0xeffafe;return _0x4cdf9f;})[_0x3d02('0x26')](respondWithFilteredResult(_0x44e01a,_0x1dbcb8))['catch'](handleError(_0x44e01a,null));};exports[_0x3d02('0x46')]=function(_0x659c60,_0x22c878){var _0x224936={'raw':!![],'where':{'id':_0x659c60[_0x3d02('0x47')]['id']}},_0x518b2d={};_0x518b2d[_0x3d02('0x33')]=_[_0x3d02('0x35')](db['MailQueue'][_0x3d02('0x30')]);_0x518b2d[_0x3d02('0x34')]=_[_0x3d02('0x35')](_0x659c60[_0x3d02('0x34')]);_0x518b2d[_0x3d02('0x3c')]=_[_0x3d02('0x37')](_0x518b2d[_0x3d02('0x33')],_0x518b2d[_0x3d02('0x34')]);_0x224936[_0x3d02('0x36')]=_[_0x3d02('0x37')](_0x518b2d[_0x3d02('0x33')],qs['fields'](_0x659c60[_0x3d02('0x34')][_0x3d02('0x38')]));_0x224936[_0x3d02('0x36')]=_0x224936['attributes']['length']?_0x224936[_0x3d02('0x36')]:_0x518b2d[_0x3d02('0x33')];if(_0x659c60['query'][_0x3d02('0x42')]){_0x224936['include']=[{'all':!![]}];}_0x224936=_['merge']({},_0x224936,_0x659c60[_0x3d02('0x41')]);return db[_0x3d02('0x2f')]['find'](_0x224936)[_0x3d02('0x26')](handleEntityNotFound(_0x22c878,null))[_0x3d02('0x26')](respondWithResult(_0x22c878,null))['catch'](handleError(_0x22c878,null));};exports[_0x3d02('0x48')]=function(_0x50305a,_0x1e94c8){return db[_0x3d02('0x2f')][_0x3d02('0x48')](_0x50305a[_0x3d02('0x49')],{})['then'](function(_0x319794){var _0x412f72=_0x50305a[_0x3d02('0x4a')][_0x3d02('0x4b')]({'plain':!![]});if(!_0x412f72)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x412f72[_0x3d02('0x4c')]===_0x3d02('0x4a')){var _0x51f08c=_0x319794['get']({'plain':!![]});var _0x26f217='MailQueues';return db[_0x3d02('0x4d')]['find']({'where':{'name':_0x26f217,'userProfileId':_0x412f72['userProfileId']},'raw':!![]})[_0x3d02('0x26')](function(_0x3e4344){if(_0x3e4344&&_0x3e4344[_0x3d02('0x4e')]===0x0){return db[_0x3d02('0x4f')][_0x3d02('0x48')]({'name':_0x51f08c[_0x3d02('0x2b')],'resourceId':_0x51f08c['id'],'type':_0x3e4344[_0x3d02('0x2b')],'sectionId':_0x3e4344['id']},{})[_0x3d02('0x26')](function(){return _0x319794;});}else{return _0x319794;}})[_0x3d02('0x50')](function(_0x34300b){logger[_0x3d02('0x2a')](_0x3d02('0x51'),_0x34300b);throw _0x34300b;});}return _0x319794;})[_0x3d02('0x26')](respondWithResult(_0x1e94c8,0xc9))[_0x3d02('0x50')](handleError(_0x1e94c8,null));};exports[_0x3d02('0x52')]=function(_0x539d97,_0x3b20f0){if(_0x539d97[_0x3d02('0x49')]['id']){delete _0x539d97[_0x3d02('0x49')]['id'];}return db['MailQueue']['find']({'where':{'id':_0x539d97['params']['id']}})['then'](handleEntityNotFound(_0x3b20f0,null))[_0x3d02('0x26')](saveUpdates(_0x539d97['body'],null))[_0x3d02('0x26')](respondWithResult(_0x3b20f0,null))[_0x3d02('0x50')](handleError(_0x3b20f0,null));};exports[_0x3d02('0x27')]=function(_0x5f4225,_0x5d2992){return db[_0x3d02('0x2f')][_0x3d02('0x53')]({'where':{'id':_0x5f4225[_0x3d02('0x47')]['id']}})[_0x3d02('0x26')](handleEntityNotFound(_0x5d2992,null))[_0x3d02('0x26')](removeEntity(_0x5d2992,null))['catch'](handleError(_0x5d2992,null));};exports[_0x3d02('0x54')]=function(_0x1b1ac2,_0xf10c21){return db['MailQueue'][_0x3d02('0x54')]()[_0x3d02('0x26')](respondWithResult(_0xf10c21,null))[_0x3d02('0x50')](handleError(_0xf10c21,null));};exports[_0x3d02('0x55')]=function(_0x2e934a,_0x1c969e,_0x12b887){var _0x419b5f={'raw':!![],'where':{}},_0x4c6873={},_0x3c8f5d;return db[_0x3d02('0x2f')][_0x3d02('0x56')]({'where':{'id':_0x2e934a[_0x3d02('0x47')]['id']}})[_0x3d02('0x26')](handleEntityNotFound(_0x1c969e,null))['then'](function(_0x3033ef){if(_0x3033ef){_0x3c8f5d=_0x3033ef[_0x3d02('0x4b')]({'plain':!![]});_0x4c6873[_0x3d02('0x33')]=_[_0x3d02('0x35')](db[_0x3d02('0x57')]['rawAttributes']);_0x4c6873[_0x3d02('0x34')]=_[_0x3d02('0x35')](_0x2e934a['query']);_0x4c6873[_0x3d02('0x3c')]=_['intersection'](_0x4c6873[_0x3d02('0x33')],_0x4c6873[_0x3d02('0x34')]);_0x419b5f[_0x3d02('0x36')]=_[_0x3d02('0x37')](_0x4c6873[_0x3d02('0x33')],qs['fields'](_0x2e934a['query'][_0x3d02('0x38')]));_0x419b5f[_0x3d02('0x36')]=_0x419b5f[_0x3d02('0x36')][_0x3d02('0x58')]?_0x419b5f[_0x3d02('0x36')]:_0x4c6873[_0x3d02('0x33')];if(!_0x2e934a[_0x3d02('0x34')][_0x3d02('0x59')]('nolimit')){_0x419b5f[_0x3d02('0x21')]=qs[_0x3d02('0x21')](_0x2e934a[_0x3d02('0x34')][_0x3d02('0x21')]);_0x419b5f[_0x3d02('0x1f')]=qs[_0x3d02('0x1f')](_0x2e934a[_0x3d02('0x34')][_0x3d02('0x1f')]);}_0x419b5f[_0x3d02('0x5a')]=qs[_0x3d02('0x3a')](_0x2e934a[_0x3d02('0x34')][_0x3d02('0x3a')]);_0x419b5f[_0x3d02('0x3b')]=qs[_0x3d02('0x3c')](_[_0x3d02('0x3d')](_0x2e934a['query'],_0x4c6873[_0x3d02('0x3c')]));_0x419b5f[_0x3d02('0x3b')][_0x3d02('0x5b')]=_0x3033ef['id'];if(_0x2e934a['query'][_0x3d02('0x3e')]){_0x419b5f[_0x3d02('0x3b')]=_[_0x3d02('0x40')](_0x419b5f['where'],{'$or':_[_0x3d02('0x2e')](_0x419b5f['attributes'],function(_0x5076ff){var _0x522037={};_0x522037[_0x5076ff]={'$like':'%'+_0x2e934a[_0x3d02('0x34')][_0x3d02('0x3e')]+'%'};return _0x522037;})});}_0x419b5f=_[_0x3d02('0x40')]({},_0x419b5f,_0x2e934a[_0x3d02('0x41')]);return db[_0x3d02('0x57')]['findAll'](_0x419b5f);}})[_0x3d02('0x26')](function(_0x22db93){if(_0x22db93){return db[_0x3d02('0x5c')]['findAndCountAll']({'where':{'id':_[_0x3d02('0x2e')](_0x22db93,_0x3d02('0x5d')),'role':_0x3d02('0x5e')},'attributes':['id',_0x3d02('0x2b'),_0x3d02('0x5f'),_0x3d02('0x60'),_0x3d02('0x61')]});}})[_0x3d02('0x26')](function(_0x31e7f7){if(_0x31e7f7){return{'count':_0x31e7f7[_0x3d02('0x22')],'rows':_[_0x3d02('0x2e')](_0x31e7f7['rows'],function(_0x7b442a){return{'membername':_0x7b442a['name'],'UserId':_0x7b442a['id'],'queue_name':_0x3c8f5d[_0x3d02('0x2b')],'MailQueueId':_0x3c8f5d['id'],'interface':util[_0x3d02('0x62')](_0x3d02('0x63'),_0x3d02('0x64'),_0x7b442a['name']),'penalty':0x0,'paused':_0x7b442a[_0x3d02('0x5f')],'createdAt':_0x7b442a[_0x3d02('0x61')],'updatedAt':_0x7b442a['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x3d02('0x26')](respondWithFilteredResult(_0x1c969e,_0x419b5f))[_0x3d02('0x50')](handleError(_0x1c969e,null));};exports[_0x3d02('0x65')]=function(_0x5917a3,_0x46164c,_0x2dedec){var _0x2bbe97={};var _0x2f3365={};var _0x58f468;var _0xace6cc;return db[_0x3d02('0x2f')][_0x3d02('0x56')]({'where':{'id':_0x5917a3[_0x3d02('0x47')]['id']}})[_0x3d02('0x26')](handleEntityNotFound(_0x46164c,null))['then'](function(_0x1a6f85){if(_0x1a6f85){_0x58f468=_0x1a6f85;_0x2f3365['model']=_[_0x3d02('0x35')](db[_0x3d02('0x66')]['rawAttributes']);_0x2f3365['query']=_['keys'](_0x5917a3[_0x3d02('0x34')]);_0x2f3365[_0x3d02('0x3c')]=_[_0x3d02('0x37')](_0x2f3365[_0x3d02('0x33')],_0x2f3365[_0x3d02('0x34')]);_0x2bbe97['attributes']=_[_0x3d02('0x37')](_0x2f3365[_0x3d02('0x33')],qs[_0x3d02('0x38')](_0x5917a3['query'][_0x3d02('0x38')]));_0x2bbe97[_0x3d02('0x36')]=_0x2bbe97[_0x3d02('0x36')]['length']?_0x2bbe97[_0x3d02('0x36')]:_0x2f3365[_0x3d02('0x33')];_0x2bbe97[_0x3d02('0x5a')]=qs[_0x3d02('0x3a')](_0x5917a3[_0x3d02('0x34')][_0x3d02('0x3a')]);_0x2bbe97[_0x3d02('0x3b')]=qs['filters'](_[_0x3d02('0x3d')](_0x5917a3['query'],_0x2f3365['filters']));if(_0x5917a3[_0x3d02('0x34')]['filter']){_0x2bbe97['where']=_['merge'](_0x2bbe97[_0x3d02('0x3b')],{'$or':_['map'](_0x2bbe97['attributes'],function(_0x5d5e66){var _0x1ff816={};_0x1ff816[_0x5d5e66]={'$like':'%'+_0x5917a3['query']['filter']+'%'};return _0x1ff816;})});}_0x2bbe97=_[_0x3d02('0x40')]({},_0x2bbe97,_0x5917a3[_0x3d02('0x41')]);return _0x58f468[_0x3d02('0x65')](_0x2bbe97);}})[_0x3d02('0x26')](function(_0x42e7fa){if(_0x42e7fa){_0xace6cc=_0x42e7fa[_0x3d02('0x58')];if(!_0x5917a3[_0x3d02('0x34')][_0x3d02('0x59')](_0x3d02('0x39'))){_0x2bbe97['limit']=qs[_0x3d02('0x21')](_0x5917a3[_0x3d02('0x34')][_0x3d02('0x21')]);_0x2bbe97[_0x3d02('0x1f')]=qs[_0x3d02('0x1f')](_0x5917a3['query'][_0x3d02('0x1f')]);}return _0x58f468[_0x3d02('0x65')](_0x2bbe97);}})['then'](function(_0x2d95dc){if(_0x2d95dc){return _0x2d95dc?{'count':_0xace6cc,'rows':_0x2d95dc}:null;}})[_0x3d02('0x26')](respondWithResult(_0x46164c,null))[_0x3d02('0x50')](handleError(_0x46164c,null));};exports[_0x3d02('0x67')]=function(_0x226d72,_0x4e4160,_0x3b00ad){var _0x5a4a15=_0x226d72[_0x3d02('0x49')][_0x3d02('0x68')];return db[_0x3d02('0x66')][_0x3d02('0x44')]({'where':{'id':_0x5a4a15},'attributes':['id'],'include':[{'model':db[_0x3d02('0x5c')],'as':_0x3d02('0x69'),'attributes':['id',_0x3d02('0x2b'),_0x3d02('0x6a'),'voicePause','interface'],'raw':!![]}]})['then'](function(_0x51a378){if(_0x51a378){var _0x15e182=_[_0x3d02('0x6b')](_0x51a378,function(_0x3c643e){var _0x5fc3c7=_0x3c643e[_0x3d02('0x4b')]({'plain':!![]});return _0x5fc3c7[_0x3d02('0x69')];});return db['MailQueue']['find']({'where':{'id':_0x226d72[_0x3d02('0x47')]['id']}})[_0x3d02('0x26')](function(_0x4018cd){return db['sequelize'][_0x3d02('0x6c')](function(_0x4bacf5){return _0x4018cd[_0x3d02('0x67')](_0x5a4a15,{'transaction':_0x4bacf5})[_0x3d02('0x26')](function(){return BPromise['each'](_0x15e182,function(_0x58f4ea){return db[_0x3d02('0x57')][_0x3d02('0x6d')]({'where':{'UserId':_0x58f4ea['id'],'MailQueueId':_0x226d72[_0x3d02('0x47')]['id']},'transaction':_0x4bacf5});});})[_0x3d02('0x26')](function(){_0x15e182[_0x3d02('0x6e')](function(_0x1873cb){socket[_0x3d02('0x6f')](_0x3d02('0x70'),{'UserId':_0x1873cb['id'],'MailQueueId':_0x4018cd['id']});});});});});}})['then'](respondWithStatusCode(_0x4e4160,null))[_0x3d02('0x50')](handleError(_0x4e4160,null));};exports[_0x3d02('0x71')]=function(_0x282734,_0x2885b1,_0x56a7ad){return db[_0x3d02('0x66')][_0x3d02('0x44')]({'where':{'id':_0x282734[_0x3d02('0x34')][_0x3d02('0x68')]},'attributes':['id'],'include':[{'model':db[_0x3d02('0x5c')],'as':_0x3d02('0x69'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x2885b1,null))['then'](function(_0x1b3936){var _0x1b9fbf=_[_0x3d02('0x2e')](_0x1b3936,'id');var _0x2fb2cf=[];var _0x2cd73d=[];var _0x3badb0=squel[_0x3d02('0x72')]();_0x3badb0[_0x3d02('0x73')](_0x3d02('0x74'))['from']('team_has_mail_queues','tq')[_0x3d02('0x75')](_0x3d02('0x76'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0x3d02('0x3b')](_0x3d02('0x77'),_0x282734[_0x3d02('0x47')]['id']);for(var _0x23194b=0x0;_0x23194b<_0x1b3936[_0x3d02('0x58')];_0x23194b+=0x1){let _0x37edd9=_0x1b3936[_0x23194b];for(var _0x56ee18=0x0;_0x56ee18<_0x37edd9[_0x3d02('0x69')][_0x3d02('0x58')];_0x56ee18+=0x1){let _0x58712b=_0x37edd9[_0x3d02('0x69')][_0x56ee18];var _0x2be60c=_0x3badb0['clone']();_0x2be60c['where'](_0x3d02('0x78'),_0x58712b['id']);_0x2cd73d[_0x3d02('0x79')](db[_0x3d02('0x7a')][_0x3d02('0x34')](_0x2be60c['toString'](),{'type':db['sequelize']['QueryTypes'][_0x3d02('0x7b')]})[_0x3d02('0x26')](function(_0x1cf88f){if(_0x1cf88f['length']===0x1){return _0x58712b['id'];}else{var _0x660c88=_[_0x3d02('0x7c')](_[_0x3d02('0x2e')](_0x1cf88f,_0x3d02('0x7d')),function(_0xb0760b){return _[_0x3d02('0x7e')](_0x1b9fbf,_0xb0760b);});if(_0x660c88){return _0x58712b['id'];}}}));}}return BPromise[_0x3d02('0x7f')](_0x2cd73d)[_0x3d02('0x26')](function(_0x4aed39){_0x2fb2cf=_(_0x2fb2cf)[_0x3d02('0x80')](_0x4aed39)[_0x3d02('0x81')]()[_0x3d02('0x82')]();return db[_0x3d02('0x2f')][_0x3d02('0x53')]({'where':{'id':_0x282734[_0x3d02('0x47')]['id']}})[_0x3d02('0x26')](function(_0x1d0657){return db[_0x3d02('0x7a')][_0x3d02('0x6c')](function(_0x2efe1a){return _0x1d0657[_0x3d02('0x71')](_0x282734[_0x3d02('0x34')][_0x3d02('0x68')],{'transaction':_0x2efe1a})[_0x3d02('0x26')](function(){if(!_['isEmpty'](_0x2fb2cf)){return _0x1d0657[_0x3d02('0x83')](_0x2fb2cf,{'transaction':_0x2efe1a});}})['then'](function(){_0x2fb2cf[_0x3d02('0x6e')](function(_0x52bd77){socket[_0x3d02('0x6f')](_0x3d02('0x84'),{'UserId':_0x52bd77,'MailQueueId':_0x1d0657['id']});});});});});});})[_0x3d02('0x26')](respondWithStatusCode(_0x2885b1,null))[_0x3d02('0x50')](handleError(_0x2885b1,null));};exports[_0x3d02('0x85')]=function(_0xbc1376,_0x1ca947,_0x52ae57){return db[_0x3d02('0x2f')][_0x3d02('0x53')]({'where':{'id':_0xbc1376['params']['id']}})[_0x3d02('0x26')](handleEntityNotFound(_0x1ca947,null))[_0x3d02('0x26')](function(_0x1cec5f){if(_0x1cec5f){return _0x1cec5f[_0x3d02('0x85')](_0xbc1376['body']['ids'],_[_0x3d02('0x86')](_0xbc1376[_0x3d02('0x49')],[_0x3d02('0x68'),'id'])||{})[_0x3d02('0x87')](function(_0x1e45dd){for(var _0x4cc099=0x0;_0x4cc099<_0xbc1376[_0x3d02('0x49')][_0x3d02('0x68')]['length'];_0x4cc099+=0x1){socket[_0x3d02('0x6f')](_0x3d02('0x70'),{'UserId':Number(_0xbc1376[_0x3d02('0x49')][_0x3d02('0x68')][_0x4cc099]),'MailQueueId':Number(_0xbc1376[_0x3d02('0x47')]['id'])});}return _0x1e45dd;});}})[_0x3d02('0x26')](respondWithResult(_0x1ca947,null))['catch'](handleError(_0x1ca947,null));};exports[_0x3d02('0x83')]=function(_0x41452c,_0x19b899,_0x220075){return db['MailQueue'][_0x3d02('0x53')]({'where':{'id':_0x41452c[_0x3d02('0x47')]['id']}})[_0x3d02('0x26')](handleEntityNotFound(_0x19b899,null))[_0x3d02('0x26')](function(_0x4de7d7){if(_0x4de7d7){return _0x4de7d7[_0x3d02('0x83')](_0x41452c['query'][_0x3d02('0x68')])[_0x3d02('0x26')](function(){if(_[_0x3d02('0x88')](_0x41452c[_0x3d02('0x34')]['ids'])){for(var _0x48c3dc=0x0;_0x48c3dc<_0x41452c[_0x3d02('0x34')][_0x3d02('0x68')][_0x3d02('0x58')];_0x48c3dc+=0x1){socket[_0x3d02('0x6f')](_0x3d02('0x84'),{'UserId':Number(_0x41452c['query'][_0x3d02('0x68')][_0x48c3dc]),'MailQueueId':Number(_0x41452c[_0x3d02('0x47')]['id'])});}}else{socket[_0x3d02('0x6f')](_0x3d02('0x84'),{'UserId':Number(_0x41452c[_0x3d02('0x34')]['ids']),'MailQueueId':Number(_0x41452c[_0x3d02('0x47')]['id'])});}});}})[_0x3d02('0x26')](respondWithStatusCode(_0x19b899,null))['catch'](handleError(_0x19b899,null));};exports[_0x3d02('0x89')]=function(_0x5b168b,_0x22601a,_0x255f50){var _0x15eb21={};var _0xc5c10b={};var _0x1499b3;var _0x1ec195;return db[_0x3d02('0x2f')][_0x3d02('0x56')]({'where':{'id':_0x5b168b['params']['id']}})[_0x3d02('0x26')](handleEntityNotFound(_0x22601a,null))['then'](function(_0x17bb25){if(_0x17bb25){_0x1499b3=_0x17bb25;_0xc5c10b[_0x3d02('0x33')]=_[_0x3d02('0x35')](db[_0x3d02('0x5c')][_0x3d02('0x30')]);_0xc5c10b['query']=_['keys'](_0x5b168b[_0x3d02('0x34')]);_0xc5c10b['filters']=_[_0x3d02('0x37')](_0xc5c10b[_0x3d02('0x33')],_0xc5c10b[_0x3d02('0x34')]);_0x15eb21[_0x3d02('0x36')]=_[_0x3d02('0x37')](_0xc5c10b[_0x3d02('0x33')],qs['fields'](_0x5b168b['query'][_0x3d02('0x38')]));_0x15eb21[_0x3d02('0x36')]=_0x15eb21[_0x3d02('0x36')][_0x3d02('0x58')]?_0x15eb21[_0x3d02('0x36')]:_0xc5c10b[_0x3d02('0x33')];_0x15eb21[_0x3d02('0x5a')]=qs[_0x3d02('0x3a')](_0x5b168b[_0x3d02('0x34')][_0x3d02('0x3a')]);_0x15eb21[_0x3d02('0x3b')]=qs[_0x3d02('0x3c')](_[_0x3d02('0x3d')](_0x5b168b[_0x3d02('0x34')],_0xc5c10b[_0x3d02('0x3c')]));if(_0x5b168b[_0x3d02('0x34')][_0x3d02('0x3e')]){_0x15eb21[_0x3d02('0x3b')]=_[_0x3d02('0x40')](_0x15eb21[_0x3d02('0x3b')],{'$or':_[_0x3d02('0x2e')](_0x15eb21[_0x3d02('0x36')],function(_0x205d03){var _0x1daf26={};_0x1daf26[_0x205d03]={'$like':'%'+_0x5b168b[_0x3d02('0x34')][_0x3d02('0x3e')]+'%'};return _0x1daf26;})});}_0x15eb21=_['merge']({},_0x15eb21,_0x5b168b[_0x3d02('0x41')]);return _0x1499b3[_0x3d02('0x89')](_0x15eb21);}})[_0x3d02('0x26')](function(_0x1918f5){if(_0x1918f5){_0x1ec195=_0x1918f5[_0x3d02('0x58')];if(!_0x5b168b[_0x3d02('0x34')][_0x3d02('0x59')](_0x3d02('0x39'))){_0x15eb21[_0x3d02('0x21')]=qs[_0x3d02('0x21')](_0x5b168b[_0x3d02('0x34')][_0x3d02('0x21')]);_0x15eb21[_0x3d02('0x1f')]=qs['offset'](_0x5b168b[_0x3d02('0x34')][_0x3d02('0x1f')]);}return _0x1499b3[_0x3d02('0x89')](_0x15eb21);}})['then'](function(_0xd25b3d){if(_0xd25b3d){return _0xd25b3d?{'count':_0x1ec195,'rows':_0xd25b3d}:null;}})['then'](respondWithResult(_0x22601a,null))[_0x3d02('0x50')](handleError(_0x22601a,null));};
\ No newline at end of file
index e5eeaf0..0f860bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x111b=['save','update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x111b,0x73));var _0xb111=function(_0x3ab287,_0x5103b8){_0x3ab287=_0x3ab287-0x0;var _0x38a448=_0x111b[_0x3ab287];return _0x38a448;};'use strict';var EventEmitter=require(_0xb111('0x0'));var MailQueue=require(_0xb111('0x1'))['db']['MailQueue'];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb111('0x2'),'afterUpdate':_0xb111('0x3'),'afterDestroy':_0xb111('0x4')};function emitEvent(_0x29870f){return function(_0x3ba0cb,_0x599f43,_0x2fdb28){MailQueueEvents[_0xb111('0x5')](_0x29870f+':'+_0x3ba0cb['id'],_0x3ba0cb);MailQueueEvents[_0xb111('0x5')](_0x29870f,_0x3ba0cb);_0x2fdb28(null);};}for(var e in events){if(events[_0xb111('0x6')](e)){var event=events[e];MailQueue[_0xb111('0x7')](e,emitEvent(event));}}module[_0xb111('0x8')]=MailQueueEvents;
\ No newline at end of file
+var _0x3b85=['hook','exports','../../mysqldb','MailQueue','save','update','remove','emit','hasOwnProperty'];(function(_0x42b2ee,_0x4082b7){var _0x212a37=function(_0x3db9e4){while(--_0x3db9e4){_0x42b2ee['push'](_0x42b2ee['shift']());}};_0x212a37(++_0x4082b7);}(_0x3b85,0x14f));var _0x53b8=function(_0x7af123,_0x30373e){_0x7af123=_0x7af123-0x0;var _0x109935=_0x3b85[_0x7af123];return _0x109935;};'use strict';var EventEmitter=require('events');var MailQueue=require(_0x53b8('0x0'))['db'][_0x53b8('0x1')];var MailQueueEvents=new EventEmitter();MailQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x53b8('0x2'),'afterUpdate':_0x53b8('0x3'),'afterDestroy':_0x53b8('0x4')};function emitEvent(_0x5da99f){return function(_0x5c3f2e,_0x434e00,_0x2aee51){MailQueueEvents[_0x53b8('0x5')](_0x5da99f+':'+_0x5c3f2e['id'],_0x5c3f2e);MailQueueEvents[_0x53b8('0x5')](_0x5da99f,_0x5c3f2e);_0x2aee51(null);};}for(var e in events){if(events[_0x53b8('0x6')](e)){var event=events[e];MailQueue[_0x53b8('0x7')](e,emitEvent(event));}}module[_0x53b8('0x8')]=MailQueueEvents;
\ No newline at end of file
index 948f312..0bd36d8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb969=['../../config/logger','request-promise','rimraf','./mailQueue.attributes','exports','define','mail_queues'];(function(_0x422da9,_0x5ae0d3){var _0x9b2166=function(_0x352e8c){while(--_0x352e8c){_0x422da9['push'](_0x422da9['shift']());}};_0x9b2166(++_0x5ae0d3);}(_0xb969,0x1dc));var _0x9b96=function(_0x1cee9a,_0x22feda){_0x1cee9a=_0x1cee9a-0x0;var _0x53afaa=_0xb969[_0x1cee9a];return _0x53afaa;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x9b96('0x0'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x9b96('0x1'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9b96('0x2'));var config=require('../../config/environment');var attributes=require(_0x9b96('0x3'));module[_0x9b96('0x4')]=function(_0x4af010,_0x3c8368){return _0x4af010[_0x9b96('0x5')]('MailQueue',attributes,{'tableName':_0x9b96('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x06d5=['exports','define','mail_queues','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x23c36d,_0x2cbd4a){var _0x414776=function(_0x2ffe2f){while(--_0x2ffe2f){_0x23c36d['push'](_0x23c36d['shift']());}};_0x414776(++_0x2cbd4a);}(_0x06d5,0x147));var _0x506d=function(_0x4a9fb1,_0x273043){_0x4a9fb1=_0x4a9fb1-0x0;var _0x348672=_0x06d5[_0x4a9fb1];return _0x348672;};'use strict';var _=require(_0x506d('0x0'));var util=require(_0x506d('0x1'));var logger=require(_0x506d('0x2'))('api');var moment=require(_0x506d('0x3'));var BPromise=require(_0x506d('0x4'));var rp=require(_0x506d('0x5'));var fs=require('fs');var path=require(_0x506d('0x6'));var rimraf=require(_0x506d('0x7'));var config=require(_0x506d('0x8'));var attributes=require('./mailQueue.attributes');module[_0x506d('0x9')]=function(_0x461dfd,_0x122553){return _0x461dfd[_0x506d('0xa')]('MailQueue',attributes,{'tableName':_0x506d('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ba98fe6..454d740 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./mailQueue.socket','register','request','info','MailQueue,\x20%s,\x20%s','request\x20sent','debug','MailQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','GetMailQueue','MailQueue','findAll','options','raw','attributes','include','map','model','then','catch','ShowMailQueue','find','where','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xe706,0xa3));var _0x6e70=function(_0x148879,_0x5b4c11){_0x148879=_0x148879-0x0;var _0x4f7027=_0xe706[_0x148879];return _0x4f7027;};'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});config[_0x6e70('0xd')]=_[_0x6e70('0xe')](config[_0x6e70('0xd')],{'host':_0x6e70('0xf'),'port':0x18eb});var socket=require(_0x6e70('0x10'))(new Redis(config[_0x6e70('0xd')]));require(_0x6e70('0x11'))[_0x6e70('0x12')](socket);function respondWithRpcPromise(_0x100eb7,_0x463853,_0x743eb5){return new BPromise(function(_0x3f474a,_0x37b3e0){return client[_0x6e70('0x13')](_0x100eb7,_0x743eb5)['then'](function(_0x47f6b2){logger[_0x6e70('0x14')](_0x6e70('0x15'),_0x463853,_0x6e70('0x16'));logger[_0x6e70('0x17')](_0x6e70('0x18'),_0x463853,_0x6e70('0x16'),JSON[_0x6e70('0x19')](_0x47f6b2));if(_0x47f6b2[_0x6e70('0x1a')]){if(_0x47f6b2['error']['code']===0x1f4){logger['error'](_0x6e70('0x15'),_0x463853,_0x47f6b2['error']['message']);return _0x37b3e0(_0x47f6b2[_0x6e70('0x1a')][_0x6e70('0x1b')]);}logger['error'](_0x6e70('0x15'),_0x463853,_0x47f6b2['error'][_0x6e70('0x1b')]);return _0x3f474a(_0x47f6b2[_0x6e70('0x1a')]['message']);}else{logger['info'](_0x6e70('0x15'),_0x463853,'request\x20sent');_0x3f474a(_0x47f6b2[_0x6e70('0x1c')][_0x6e70('0x1b')]);}})['catch'](function(_0x497d61){logger[_0x6e70('0x1a')](_0x6e70('0x15'),_0x463853,_0x497d61);_0x37b3e0(_0x497d61);});});}exports[_0x6e70('0x1d')]=function(_0x3a9978){var _0x3af484=this;return new Promise(function(_0xcdf9f2,_0x1b2453){return db[_0x6e70('0x1e')][_0x6e70('0x1f')]({'raw':_0x3a9978[_0x6e70('0x20')]?_0x3a9978['options'][_0x6e70('0x21')]===undefined?!![]:![]:!![],'where':_0x3a9978[_0x6e70('0x20')]?_0x3a9978[_0x6e70('0x20')]['where']||null:null,'attributes':_0x3a9978[_0x6e70('0x20')]?_0x3a9978[_0x6e70('0x20')][_0x6e70('0x22')]||null:null,'limit':_0x3a9978['options']?_0x3a9978[_0x6e70('0x20')]['limit']||null:null,'include':_0x3a9978['options']?_0x3a9978['options'][_0x6e70('0x23')]?_[_0x6e70('0x24')](_0x3a9978['options'][_0x6e70('0x23')],function(_0x1196ed){return{'model':db[_0x1196ed['model']],'as':_0x1196ed['as'],'attributes':_0x1196ed[_0x6e70('0x22')],'include':_0x1196ed[_0x6e70('0x23')]?_[_0x6e70('0x24')](_0x1196ed['include'],function(_0x54a5fe){return{'model':db[_0x54a5fe[_0x6e70('0x25')]],'as':_0x54a5fe['as'],'attributes':_0x54a5fe[_0x6e70('0x22')],'include':_0x54a5fe[_0x6e70('0x23')]?_[_0x6e70('0x24')](_0x54a5fe[_0x6e70('0x23')],function(_0x5d772a){return{'model':db[_0x5d772a[_0x6e70('0x25')]],'as':_0x5d772a['as'],'attributes':_0x5d772a[_0x6e70('0x22')]};}):[]};}):[]};}):[]:[]})[_0x6e70('0x26')](function(_0x2864a0){logger[_0x6e70('0x14')](_0x6e70('0x1d'),_0x3a9978);logger[_0x6e70('0x17')](_0x6e70('0x1d'),_0x3a9978,JSON[_0x6e70('0x19')](_0x2864a0));_0xcdf9f2(_0x2864a0);})[_0x6e70('0x27')](function(_0x4b1229){logger[_0x6e70('0x1a')]('GetMailQueue',_0x4b1229[_0x6e70('0x1b')],_0x3a9978);_0x1b2453(_0x3af484['error'](0x1f4,_0x4b1229[_0x6e70('0x1b')]));});});};exports[_0x6e70('0x28')]=function(_0x30fa0b){var _0x56f6f7=this;return new Promise(function(_0x38c40d,_0x42b094){return db['MailQueue'][_0x6e70('0x29')]({'raw':_0x30fa0b[_0x6e70('0x20')]?_0x30fa0b['options'][_0x6e70('0x21')]===undefined?!![]:![]:!![],'where':_0x30fa0b[_0x6e70('0x20')]?_0x30fa0b[_0x6e70('0x20')][_0x6e70('0x2a')]||null:null,'attributes':_0x30fa0b[_0x6e70('0x20')]?_0x30fa0b[_0x6e70('0x20')][_0x6e70('0x22')]||null:null,'include':_0x30fa0b[_0x6e70('0x20')]?_0x30fa0b[_0x6e70('0x20')][_0x6e70('0x23')]?_['map'](_0x30fa0b[_0x6e70('0x20')]['include'],function(_0x23cd1a){return{'model':db[_0x23cd1a[_0x6e70('0x25')]],'as':_0x23cd1a['as'],'attributes':_0x23cd1a[_0x6e70('0x22')],'include':_0x23cd1a[_0x6e70('0x23')]?_[_0x6e70('0x24')](_0x23cd1a[_0x6e70('0x23')],function(_0x2440be){return{'model':db[_0x2440be[_0x6e70('0x25')]],'as':_0x2440be['as'],'attributes':_0x2440be[_0x6e70('0x22')],'include':_0x2440be[_0x6e70('0x23')]?_[_0x6e70('0x24')](_0x2440be[_0x6e70('0x23')],function(_0x5594d3){return{'model':db[_0x5594d3['model']],'as':_0x5594d3['as'],'attributes':_0x5594d3['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x155a46){logger[_0x6e70('0x14')](_0x6e70('0x28'),_0x30fa0b);logger[_0x6e70('0x17')](_0x6e70('0x28'),_0x30fa0b,JSON[_0x6e70('0x19')](_0x155a46));_0x38c40d(_0x155a46);})['catch'](function(_0x3b508c){logger[_0x6e70('0x1a')](_0x6e70('0x28'),_0x3b508c[_0x6e70('0x1b')],_0x30fa0b);_0x42b094(_0x56f6f7[_0x6e70('0x1a')](0x1f4,_0x3b508c[_0x6e70('0x1b')]));});});};
\ No newline at end of file
+var _0x9a0b=['catch','GetMailQueue','MailQueue','findAll','options','where','attributes','include','map','model','debug','ShowMailQueue','raw','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','socket.io-emitter','./mailQueue.socket','request','then','MailQueue,\x20%s,\x20%s','request\x20sent','stringify','error','message','info','result'];(function(_0x263a2f,_0x1e81e3){var _0x8020e8=function(_0x39f91a){while(--_0x39f91a){_0x263a2f['push'](_0x263a2f['shift']());}};_0x8020e8(++_0x1e81e3);}(_0x9a0b,0x7c));var _0xb9a0=function(_0x1d80c0,_0x4c7cae){_0x1d80c0=_0x1d80c0-0x0;var _0xa0435c=_0x9a0b[_0x1d80c0];return _0xa0435c;};'use strict';var _=require('lodash');var util=require(_0xb9a0('0x0'));var moment=require(_0xb9a0('0x1'));var BPromise=require(_0xb9a0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xb9a0('0x3'));var db=require(_0xb9a0('0x4'))['db'];var utils=require(_0xb9a0('0x5'));var logger=require(_0xb9a0('0x6'))(_0xb9a0('0x7'));var config=require(_0xb9a0('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xb9a0('0x9')][_0xb9a0('0xa')]({'port':0x232a});config['redis']=_['defaults'](config[_0xb9a0('0xb')],{'host':_0xb9a0('0xc'),'port':0x18eb});var socket=require(_0xb9a0('0xd'))(new Redis(config[_0xb9a0('0xb')]));require(_0xb9a0('0xe'))['register'](socket);function respondWithRpcPromise(_0x16afab,_0xa45676,_0x5dd83e){return new BPromise(function(_0x47f88d,_0xa08e57){return client[_0xb9a0('0xf')](_0x16afab,_0x5dd83e)[_0xb9a0('0x10')](function(_0x192b62){logger['info'](_0xb9a0('0x11'),_0xa45676,_0xb9a0('0x12'));logger['debug']('MailQueue,\x20%s,\x20%s,\x20%s',_0xa45676,_0xb9a0('0x12'),JSON[_0xb9a0('0x13')](_0x192b62));if(_0x192b62['error']){if(_0x192b62[_0xb9a0('0x14')]['code']===0x1f4){logger[_0xb9a0('0x14')](_0xb9a0('0x11'),_0xa45676,_0x192b62[_0xb9a0('0x14')][_0xb9a0('0x15')]);return _0xa08e57(_0x192b62[_0xb9a0('0x14')][_0xb9a0('0x15')]);}logger['error'](_0xb9a0('0x11'),_0xa45676,_0x192b62[_0xb9a0('0x14')]['message']);return _0x47f88d(_0x192b62[_0xb9a0('0x14')][_0xb9a0('0x15')]);}else{logger[_0xb9a0('0x16')](_0xb9a0('0x11'),_0xa45676,'request\x20sent');_0x47f88d(_0x192b62[_0xb9a0('0x17')]['message']);}})[_0xb9a0('0x18')](function(_0x1ded6a){logger['error']('MailQueue,\x20%s,\x20%s',_0xa45676,_0x1ded6a);_0xa08e57(_0x1ded6a);});});}exports[_0xb9a0('0x19')]=function(_0x1aba22){var _0x5e2e7a=this;return new Promise(function(_0x51c41f,_0x2c052b){return db[_0xb9a0('0x1a')][_0xb9a0('0x1b')]({'raw':_0x1aba22['options']?_0x1aba22[_0xb9a0('0x1c')]['raw']===undefined?!![]:![]:!![],'where':_0x1aba22[_0xb9a0('0x1c')]?_0x1aba22[_0xb9a0('0x1c')][_0xb9a0('0x1d')]||null:null,'attributes':_0x1aba22[_0xb9a0('0x1c')]?_0x1aba22['options'][_0xb9a0('0x1e')]||null:null,'limit':_0x1aba22[_0xb9a0('0x1c')]?_0x1aba22['options']['limit']||null:null,'include':_0x1aba22[_0xb9a0('0x1c')]?_0x1aba22[_0xb9a0('0x1c')][_0xb9a0('0x1f')]?_[_0xb9a0('0x20')](_0x1aba22['options'][_0xb9a0('0x1f')],function(_0x12c8d1){return{'model':db[_0x12c8d1['model']],'as':_0x12c8d1['as'],'attributes':_0x12c8d1[_0xb9a0('0x1e')],'include':_0x12c8d1[_0xb9a0('0x1f')]?_[_0xb9a0('0x20')](_0x12c8d1['include'],function(_0x5dc0c6){return{'model':db[_0x5dc0c6[_0xb9a0('0x21')]],'as':_0x5dc0c6['as'],'attributes':_0x5dc0c6[_0xb9a0('0x1e')],'include':_0x5dc0c6[_0xb9a0('0x1f')]?_[_0xb9a0('0x20')](_0x5dc0c6['include'],function(_0x2f98d1){return{'model':db[_0x2f98d1['model']],'as':_0x2f98d1['as'],'attributes':_0x2f98d1['attributes']};}):[]};}):[]};}):[]:[]})[_0xb9a0('0x10')](function(_0x54caea){logger[_0xb9a0('0x16')](_0xb9a0('0x19'),_0x1aba22);logger[_0xb9a0('0x22')](_0xb9a0('0x19'),_0x1aba22,JSON['stringify'](_0x54caea));_0x51c41f(_0x54caea);})['catch'](function(_0x53248e){logger[_0xb9a0('0x14')]('GetMailQueue',_0x53248e['message'],_0x1aba22);_0x2c052b(_0x5e2e7a[_0xb9a0('0x14')](0x1f4,_0x53248e['message']));});});};exports[_0xb9a0('0x23')]=function(_0x53c2ac){var _0xba7bf0=this;return new Promise(function(_0x52ef47,_0x5ab99f){return db[_0xb9a0('0x1a')]['find']({'raw':_0x53c2ac[_0xb9a0('0x1c')]?_0x53c2ac[_0xb9a0('0x1c')][_0xb9a0('0x24')]===undefined?!![]:![]:!![],'where':_0x53c2ac['options']?_0x53c2ac[_0xb9a0('0x1c')][_0xb9a0('0x1d')]||null:null,'attributes':_0x53c2ac['options']?_0x53c2ac[_0xb9a0('0x1c')][_0xb9a0('0x1e')]||null:null,'include':_0x53c2ac[_0xb9a0('0x1c')]?_0x53c2ac[_0xb9a0('0x1c')][_0xb9a0('0x1f')]?_[_0xb9a0('0x20')](_0x53c2ac['options']['include'],function(_0xfee164){return{'model':db[_0xfee164[_0xb9a0('0x21')]],'as':_0xfee164['as'],'attributes':_0xfee164[_0xb9a0('0x1e')],'include':_0xfee164[_0xb9a0('0x1f')]?_[_0xb9a0('0x20')](_0xfee164[_0xb9a0('0x1f')],function(_0x204121){return{'model':db[_0x204121[_0xb9a0('0x21')]],'as':_0x204121['as'],'attributes':_0x204121[_0xb9a0('0x1e')],'include':_0x204121[_0xb9a0('0x1f')]?_[_0xb9a0('0x20')](_0x204121[_0xb9a0('0x1f')],function(_0x484568){return{'model':db[_0x484568[_0xb9a0('0x21')]],'as':_0x484568['as'],'attributes':_0x484568[_0xb9a0('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xb9a0('0x10')](function(_0x5a51b2){logger[_0xb9a0('0x16')](_0xb9a0('0x23'),_0x53c2ac);logger['debug'](_0xb9a0('0x23'),_0x53c2ac,JSON[_0xb9a0('0x13')](_0x5a51b2));_0x52ef47(_0x5a51b2);})[_0xb9a0('0x18')](function(_0x6f18c3){logger[_0xb9a0('0x14')](_0xb9a0('0x23'),_0x6f18c3[_0xb9a0('0x15')],_0x53c2ac);_0x5ab99f(_0xba7bf0['error'](0x1f4,_0x6f18c3[_0xb9a0('0x15')]));});});};
\ No newline at end of file
index 9a2d684..3d4780d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xffda=['emit','register','length','./mailQueue.events','save','remove','update'];(function(_0x1d9daf,_0x2650b0){var _0x3660b2=function(_0x50b3d0){while(--_0x50b3d0){_0x1d9daf['push'](_0x1d9daf['shift']());}};_0x3660b2(++_0x2650b0);}(_0xffda,0x73));var _0xaffd=function(_0x5b844b,_0x3f4134){_0x5b844b=_0x5b844b-0x0;var _0x543cad=_0xffda[_0x5b844b];return _0x543cad;};'use strict';var MailQueueEvents=require(_0xaffd('0x0'));var events=[_0xaffd('0x1'),_0xaffd('0x2'),_0xaffd('0x3')];function createListener(_0x594ab8,_0x18e6bf){return function(_0x197651){_0x18e6bf[_0xaffd('0x4')](_0x594ab8,_0x197651);};}function removeListener(_0x4b6295,_0x242061){return function(){MailQueueEvents['removeListener'](_0x4b6295,_0x242061);};}exports[_0xaffd('0x5')]=function(_0x400bb8){for(var _0x5747e0=0x0,_0x4ca99e=events[_0xaffd('0x6')];_0x5747e0<_0x4ca99e;_0x5747e0++){var _0x12865c=events[_0x5747e0];var _0x3647e1=createListener('mailQueue:'+_0x12865c,_0x400bb8);MailQueueEvents['on'](_0x12865c,_0x3647e1);}};
\ No newline at end of file
+var _0x54b5=['remove','emit','removeListener','register','length','./mailQueue.events','save'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x54b5,0xad));var _0x554b=function(_0x17c666,_0x3a4e4e){_0x17c666=_0x17c666-0x0;var _0x45e7a2=_0x54b5[_0x17c666];return _0x45e7a2;};'use strict';var MailQueueEvents=require(_0x554b('0x0'));var events=[_0x554b('0x1'),_0x554b('0x2'),'update'];function createListener(_0x2a1156,_0x51b10f){return function(_0x4c20d0){_0x51b10f[_0x554b('0x3')](_0x2a1156,_0x4c20d0);};}function removeListener(_0x360b8b,_0x21983b){return function(){MailQueueEvents[_0x554b('0x4')](_0x360b8b,_0x21983b);};}exports[_0x554b('0x5')]=function(_0x435ebb){for(var _0x298d6f=0x0,_0x1c4d03=events[_0x554b('0x6')];_0x298d6f<_0x1c4d03;_0x298d6f++){var _0x5a06a6=events[_0x298d6f];var _0x5d6dd7=createListener('mailQueue:'+_0x5a06a6,_0x435ebb);MailQueueEvents['on'](_0x5a06a6,_0x5d6dd7);}};
\ No newline at end of file
index 4e6ef65..84ba3c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e16=['express','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','post','put','delete','destroy','exports','multer','path','connect-timeout'];(function(_0x571b13,_0x1c429e){var _0x797319=function(_0x3ac38c){while(--_0x3ac38c){_0x571b13['push'](_0x571b13['shift']());}};_0x797319(++_0x1c429e);}(_0x9e16,0x96));var _0x69e1=function(_0x22f276,_0x1f8b77){_0x22f276=_0x22f276-0x0;var _0x2dd66c=_0x9e16[_0x22f276];return _0x2dd66c;};'use strict';var multer=require(_0x69e1('0x0'));var util=require('util');var path=require(_0x69e1('0x1'));var timeout=require(_0x69e1('0x2'));var express=require(_0x69e1('0x3'));var router=express['Router']();var fs_extra=require(_0x69e1('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x69e1('0x5'));var config=require('../../config/environment');var controller=require('./mailQueueReport.controller');router[_0x69e1('0x6')]('/',auth[_0x69e1('0x7')](),controller[_0x69e1('0x8')]);router['get'](_0x69e1('0x9'),auth[_0x69e1('0x7')](),controller[_0x69e1('0xa')]);router[_0x69e1('0x6')](_0x69e1('0xb'),auth[_0x69e1('0x7')](),controller['show']);router[_0x69e1('0xc')]('/',auth[_0x69e1('0x7')](),controller['create']);router[_0x69e1('0xd')](_0x69e1('0xb'),auth[_0x69e1('0x7')](),controller['update']);router[_0x69e1('0xe')](_0x69e1('0xb'),auth[_0x69e1('0x7')](),controller[_0x69e1('0xf')]);module[_0x69e1('0x10')]=router;
\ No newline at end of file
+var _0x9958=['exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','isAuthenticated','index','get','/describe','describe','/:id','create','put','update','delete','destroy'];(function(_0x278e3c,_0x1c9cfd){var _0x3e2d9b=function(_0x34d928){while(--_0x34d928){_0x278e3c['push'](_0x278e3c['shift']());}};_0x3e2d9b(++_0x1c9cfd);}(_0x9958,0x1b6));var _0x8995=function(_0x2387d6,_0x34d49c){_0x2387d6=_0x2387d6-0x0;var _0x4e1834=_0x9958[_0x2387d6];return _0x4e1834;};'use strict';var multer=require(_0x8995('0x0'));var util=require('util');var path=require(_0x8995('0x1'));var timeout=require(_0x8995('0x2'));var express=require(_0x8995('0x3'));var router=express[_0x8995('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x8995('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x8995('0x6'));var controller=require('./mailQueueReport.controller');router['get']('/',auth[_0x8995('0x7')](),controller[_0x8995('0x8')]);router[_0x8995('0x9')](_0x8995('0xa'),auth[_0x8995('0x7')](),controller[_0x8995('0xb')]);router[_0x8995('0x9')](_0x8995('0xc'),auth[_0x8995('0x7')](),controller['show']);router['post']('/',auth[_0x8995('0x7')](),controller[_0x8995('0xd')]);router[_0x8995('0xe')](_0x8995('0xc'),auth[_0x8995('0x7')](),controller[_0x8995('0xf')]);router[_0x8995('0x10')](_0x8995('0xc'),auth[_0x8995('0x7')](),controller[_0x8995('0x11')]);module[_0x8995('0x12')]=router;
\ No newline at end of file
index 0a2e9c8..9ae44bb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b99=['moment','sequelize','exports','STRING','DATE'];(function(_0x1b76e6,_0x598520){var _0x333b53=function(_0x106e6a){while(--_0x106e6a){_0x1b76e6['push'](_0x1b76e6['shift']());}};_0x333b53(++_0x598520);}(_0x1b99,0x17c));var _0x91b9=function(_0x50007c,_0x1cbf11){_0x50007c=_0x50007c-0x0;var _0x5c1ec7=_0x1b99[_0x50007c];return _0x5c1ec7;};'use strict';var moment=require(_0x91b9('0x0'));var Sequelize=require(_0x91b9('0x1'));module[_0x91b9('0x2')]={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'from':{'type':Sequelize[_0x91b9('0x3')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x91b9('0x4')]},'exitAt':{'type':Sequelize[_0x91b9('0x4')]},'reason':{'type':Sequelize[_0x91b9('0x3')]}};
\ No newline at end of file
+var _0xac4a=['DATE','moment','STRING'];(function(_0x4e2fc1,_0x1bcff0){var _0x30acb2=function(_0x2e0901){while(--_0x2e0901){_0x4e2fc1['push'](_0x4e2fc1['shift']());}};_0x30acb2(++_0x1bcff0);}(_0xac4a,0xa0));var _0xaac4=function(_0x58c21a,_0x3c3665){_0x58c21a=_0x58c21a-0x0;var _0x802db6=_0xac4a[_0x58c21a];return _0x802db6;};'use strict';var moment=require(_0xaac4('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xaac4('0x1')],'allowNull':![]},'from':{'type':Sequelize[_0xaac4('0x1')]},'joinAt':{'type':Sequelize[_0xaac4('0x2')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0xaac4('0x2')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0xaac4('0x1')]}};
\ No newline at end of file
index 0cb0003..54afbb3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xba34=['../../config/utils','../../config/license/util','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','update','then','destroy','error','stack','name','send','map','MailQueueReport','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','find','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','util','path','sox','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','api'];(function(_0x4cce65,_0x40021e){var _0x4d1b45=function(_0x54d290){while(--_0x54d290){_0x4cce65['push'](_0x4cce65['shift']());}};_0x4d1b45(++_0x40021e);}(_0xba34,0x119));var _0x4ba3=function(_0x17a511,_0x4d0da5){_0x17a511=_0x17a511-0x0;var _0x75bdff=_0xba34[_0x17a511];return _0x75bdff;};'use strict';var emlformat=require(_0x4ba3('0x0'));var rimraf=require(_0x4ba3('0x1'));var zipdir=require(_0x4ba3('0x2'));var jsonpatch=require(_0x4ba3('0x3'));var rp=require(_0x4ba3('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x4ba3('0x5'));var path=require(_0x4ba3('0x6'));var sox=require(_0x4ba3('0x7'));var csv=require(_0x4ba3('0x8'));var ejs=require(_0x4ba3('0x9'));var fs=require('fs');var fs_extra=require(_0x4ba3('0xa'));var _=require(_0x4ba3('0xb'));var squel=require('squel');var crypto=require(_0x4ba3('0xc'));var jsforce=require(_0x4ba3('0xd'));var deskjs=require(_0x4ba3('0xe'));var toCsv=require(_0x4ba3('0x8'));var querystring=require(_0x4ba3('0xf'));var Papa=require(_0x4ba3('0x10'));var Redis=require(_0x4ba3('0x11'));var authService=require(_0x4ba3('0x12'));var qs=require(_0x4ba3('0x13'));var as=require(_0x4ba3('0x14'));var hardwareService=require(_0x4ba3('0x15'));var logger=require('../../config/logger')(_0x4ba3('0x16'));var utils=require(_0x4ba3('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x4ba3('0x18'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1073d4,_0x52f55c){_0x52f55c=_0x52f55c||0xcc;return function(_0x256f02){if(_0x256f02){return _0x1073d4[_0x4ba3('0x19')](_0x52f55c);}return _0x1073d4[_0x4ba3('0x1a')](_0x52f55c)[_0x4ba3('0x1b')]();};}function respondWithResult(_0x2bc796,_0x3d2ace){_0x3d2ace=_0x3d2ace||0xc8;return function(_0x3a74f7){if(_0x3a74f7){return _0x2bc796[_0x4ba3('0x1a')](_0x3d2ace)[_0x4ba3('0x1c')](_0x3a74f7);}};}function respondWithFilteredResult(_0x401366,_0x36638b){return function(_0x301359){if(_0x301359){var _0x29a9d1=typeof _0x36638b[_0x4ba3('0x1d')]===_0x4ba3('0x1e')&&typeof _0x36638b[_0x4ba3('0x1f')]==='undefined';var _0x382fd0=_0x301359[_0x4ba3('0x20')];var _0x5ff7ce=_0x29a9d1?0x0:_0x36638b[_0x4ba3('0x1d')];var _0x556290=_0x29a9d1?_0x301359[_0x4ba3('0x20')]:_0x36638b[_0x4ba3('0x1d')]+_0x36638b[_0x4ba3('0x1f')];var _0x1e2ce5;if(_0x556290>=_0x382fd0){_0x556290=_0x382fd0;_0x1e2ce5=0xc8;}else{_0x1e2ce5=0xce;}_0x401366[_0x4ba3('0x1a')](_0x1e2ce5);return _0x401366[_0x4ba3('0x21')]('Content-Range',_0x5ff7ce+'-'+_0x556290+'/'+_0x382fd0)['json'](_0x301359);}return null;};}function patchUpdates(_0x2278b0){return function(_0x579d9f){try{jsonpatch[_0x4ba3('0x22')](_0x579d9f,_0x2278b0,!![]);}catch(_0x163967){return BPromise[_0x4ba3('0x23')](_0x163967);}return _0x579d9f[_0x4ba3('0x24')]();};}function saveUpdates(_0x46f1f5,_0x278a23){return function(_0x4a0823){if(_0x4a0823){return _0x4a0823[_0x4ba3('0x25')](_0x46f1f5)[_0x4ba3('0x26')](function(_0x5c28f9){return _0x5c28f9;});}return null;};}function removeEntity(_0x28bb3d,_0x4ffe39){return function(_0x1ae4de){if(_0x1ae4de){return _0x1ae4de[_0x4ba3('0x27')]()[_0x4ba3('0x26')](function(){_0x28bb3d[_0x4ba3('0x1a')](0xcc)[_0x4ba3('0x1b')]();});}};}function handleEntityNotFound(_0xe29a49,_0x159596){return function(_0xe1f7d2){if(!_0xe1f7d2){_0xe29a49[_0x4ba3('0x19')](0x194);}return _0xe1f7d2;};}function handleError(_0x2e67a0,_0x50c729){_0x50c729=_0x50c729||0x1f4;return function(_0x252f37){logger[_0x4ba3('0x28')](_0x252f37[_0x4ba3('0x29')]);if(_0x252f37['name']){delete _0x252f37[_0x4ba3('0x2a')];}_0x2e67a0[_0x4ba3('0x1a')](_0x50c729)[_0x4ba3('0x2b')](_0x252f37);};}exports['index']=function(_0x10cae6,_0x843276){var _0x34ecb4={},_0x22394d={},_0x4a339e={'count':0x0,'rows':[]};var _0x590108=_[_0x4ba3('0x2c')](db[_0x4ba3('0x2d')][_0x4ba3('0x2e')],function(_0x19f039){return{'name':_0x19f039[_0x4ba3('0x2f')],'type':_0x19f039[_0x4ba3('0x30')]['key']};});_0x22394d[_0x4ba3('0x31')]=_[_0x4ba3('0x2c')](_0x590108,_0x4ba3('0x2a'));_0x22394d[_0x4ba3('0x32')]=_[_0x4ba3('0x33')](_0x10cae6[_0x4ba3('0x32')]);_0x22394d[_0x4ba3('0x34')]=_[_0x4ba3('0x35')](_0x22394d[_0x4ba3('0x31')],_0x22394d[_0x4ba3('0x32')]);_0x34ecb4['attributes']=_['intersection'](_0x22394d['model'],qs[_0x4ba3('0x36')](_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x36')]));_0x34ecb4[_0x4ba3('0x37')]=_0x34ecb4[_0x4ba3('0x37')][_0x4ba3('0x38')]?_0x34ecb4[_0x4ba3('0x37')]:_0x22394d[_0x4ba3('0x31')];if(!_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x39')](_0x4ba3('0x3a'))){_0x34ecb4[_0x4ba3('0x1f')]=qs['limit'](_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x1f')]);_0x34ecb4[_0x4ba3('0x1d')]=qs['offset'](_0x10cae6[_0x4ba3('0x32')]['offset']);}_0x34ecb4[_0x4ba3('0x3b')]=qs[_0x4ba3('0x3c')](_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x3c')]);_0x34ecb4[_0x4ba3('0x3d')]=qs[_0x4ba3('0x34')](_['pick'](_0x10cae6[_0x4ba3('0x32')],_0x22394d[_0x4ba3('0x34')]),_0x590108);if(_0x10cae6[_0x4ba3('0x32')]['filter']){_0x34ecb4[_0x4ba3('0x3d')]=_[_0x4ba3('0x3e')](_0x34ecb4['where'],{'$or':_[_0x4ba3('0x2c')](_0x590108,function(_0x503777){if(_0x503777['type']!==_0x4ba3('0x3f')){var _0x1acc74={};_0x1acc74[_0x503777[_0x4ba3('0x2a')]]={'$like':'%'+_0x10cae6[_0x4ba3('0x32')][_0x4ba3('0x40')]+'%'};return _0x1acc74;}})});}_0x34ecb4=_['merge']({},_0x34ecb4,_0x10cae6[_0x4ba3('0x41')]);var _0x10e4b5={'where':_0x34ecb4[_0x4ba3('0x3d')]};return db[_0x4ba3('0x2d')][_0x4ba3('0x20')](_0x10e4b5)[_0x4ba3('0x26')](function(_0x349af4){_0x4a339e[_0x4ba3('0x20')]=_0x349af4;if(_0x10cae6['query'][_0x4ba3('0x42')]){_0x34ecb4[_0x4ba3('0x43')]=[{'all':!![]}];}return db[_0x4ba3('0x2d')][_0x4ba3('0x44')](_0x34ecb4);})[_0x4ba3('0x26')](function(_0x25b2c9){_0x4a339e[_0x4ba3('0x45')]=_0x25b2c9;return _0x4a339e;})[_0x4ba3('0x26')](respondWithFilteredResult(_0x843276,_0x34ecb4))[_0x4ba3('0x46')](handleError(_0x843276,null));};exports[_0x4ba3('0x47')]=function(_0x3b9a0a,_0x1c58d2){var _0x1d031b={'raw':!![],'where':{'id':_0x3b9a0a['params']['id']}},_0x28b649={};_0x28b649['model']=_['keys'](db['MailQueueReport']['rawAttributes']);_0x28b649[_0x4ba3('0x32')]=_['keys'](_0x3b9a0a[_0x4ba3('0x32')]);_0x28b649['filters']=_[_0x4ba3('0x35')](_0x28b649[_0x4ba3('0x31')],_0x28b649[_0x4ba3('0x32')]);_0x1d031b[_0x4ba3('0x37')]=_[_0x4ba3('0x35')](_0x28b649['model'],qs[_0x4ba3('0x36')](_0x3b9a0a['query'][_0x4ba3('0x36')]));_0x1d031b['attributes']=_0x1d031b[_0x4ba3('0x37')][_0x4ba3('0x38')]?_0x1d031b[_0x4ba3('0x37')]:_0x28b649[_0x4ba3('0x31')];if(_0x3b9a0a[_0x4ba3('0x32')][_0x4ba3('0x42')]){_0x1d031b[_0x4ba3('0x43')]=[{'all':!![]}];}_0x1d031b=_['merge']({},_0x1d031b,_0x3b9a0a[_0x4ba3('0x41')]);return db[_0x4ba3('0x2d')][_0x4ba3('0x48')](_0x1d031b)[_0x4ba3('0x26')](handleEntityNotFound(_0x1c58d2,null))[_0x4ba3('0x26')](respondWithResult(_0x1c58d2,null))['catch'](handleError(_0x1c58d2,null));};exports['create']=function(_0xa4bbb2,_0x1fe115){return db[_0x4ba3('0x2d')]['create'](_0xa4bbb2[_0x4ba3('0x49')],{})[_0x4ba3('0x26')](respondWithResult(_0x1fe115,0xc9))[_0x4ba3('0x46')](handleError(_0x1fe115,null));};exports['update']=function(_0x47f588,_0x34dc04){if(_0x47f588['body']['id']){delete _0x47f588[_0x4ba3('0x49')]['id'];}return db[_0x4ba3('0x2d')][_0x4ba3('0x48')]({'where':{'id':_0x47f588[_0x4ba3('0x4a')]['id']}})[_0x4ba3('0x26')](handleEntityNotFound(_0x34dc04,null))[_0x4ba3('0x26')](saveUpdates(_0x47f588['body'],null))[_0x4ba3('0x26')](respondWithResult(_0x34dc04,null))[_0x4ba3('0x46')](handleError(_0x34dc04,null));};exports['destroy']=function(_0x325475,_0x12ae6f){return db[_0x4ba3('0x2d')][_0x4ba3('0x48')]({'where':{'id':_0x325475[_0x4ba3('0x4a')]['id']}})['then'](handleEntityNotFound(_0x12ae6f,null))[_0x4ba3('0x26')](removeEntity(_0x12ae6f,null))[_0x4ba3('0x46')](handleError(_0x12ae6f,null));};exports['describe']=function(_0x43f820,_0x19d70f){return db[_0x4ba3('0x2d')][_0x4ba3('0x4b')]()[_0x4ba3('0x26')](respondWithResult(_0x19d70f,null))[_0x4ba3('0x46')](handleError(_0x19d70f,null));};
\ No newline at end of file
+var _0xd824=['../../config/environment','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','then','destroy','error','stack','name','send','index','MailQueueReport','rawAttributes','type','key','query','keys','intersection','attributes','fields','length','model','hasOwnProperty','order','sort','where','pick','filters','filter','options','includeAll','include','findAll','rows','catch','show','params','merge','find','create','body','describe','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','ejs','squel','crypto','jsforce','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/utils'];(function(_0x2dbce7,_0x57cb8d){var _0x3a3ed0=function(_0x28c8c6){while(--_0x28c8c6){_0x2dbce7['push'](_0x2dbce7['shift']());}};_0x3a3ed0(++_0x57cb8d);}(_0xd824,0xc2));var _0x4d82=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0xd824[_0x57b54c];return _0x59cc19;};'use strict';var emlformat=require(_0x4d82('0x0'));var rimraf=require(_0x4d82('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4d82('0x2'));var moment=require(_0x4d82('0x3'));var BPromise=require(_0x4d82('0x4'));var Mustache=require(_0x4d82('0x5'));var util=require(_0x4d82('0x6'));var path=require(_0x4d82('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x4d82('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x4d82('0x9'));var crypto=require(_0x4d82('0xa'));var jsforce=require(_0x4d82('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x4d82('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4d82('0xd'));var authService=require(_0x4d82('0xe'));var qs=require(_0x4d82('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4d82('0x10'));var logger=require('../../config/logger')(_0x4d82('0x11'));var utils=require(_0x4d82('0x12'));var config=require(_0x4d82('0x13'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x346394,_0x248eed){_0x248eed=_0x248eed||0xcc;return function(_0x319ba8){if(_0x319ba8){return _0x346394[_0x4d82('0x14')](_0x248eed);}return _0x346394['status'](_0x248eed)[_0x4d82('0x15')]();};}function respondWithResult(_0x2094bc,_0x41f5b2){_0x41f5b2=_0x41f5b2||0xc8;return function(_0x486152){if(_0x486152){return _0x2094bc[_0x4d82('0x16')](_0x41f5b2)['json'](_0x486152);}};}function respondWithFilteredResult(_0x3382c4,_0x5012db){return function(_0x469e09){if(_0x469e09){var _0x496f3b=typeof _0x5012db[_0x4d82('0x17')]===_0x4d82('0x18')&&typeof _0x5012db[_0x4d82('0x19')]===_0x4d82('0x18');var _0x2648a8=_0x469e09[_0x4d82('0x1a')];var _0x258c59=_0x496f3b?0x0:_0x5012db[_0x4d82('0x17')];var _0x2f2127=_0x496f3b?_0x469e09['count']:_0x5012db[_0x4d82('0x17')]+_0x5012db[_0x4d82('0x19')];var _0x1b1e39;if(_0x2f2127>=_0x2648a8){_0x2f2127=_0x2648a8;_0x1b1e39=0xc8;}else{_0x1b1e39=0xce;}_0x3382c4[_0x4d82('0x16')](_0x1b1e39);return _0x3382c4[_0x4d82('0x1b')](_0x4d82('0x1c'),_0x258c59+'-'+_0x2f2127+'/'+_0x2648a8)[_0x4d82('0x1d')](_0x469e09);}return null;};}function patchUpdates(_0x64669c){return function(_0x19832f){try{jsonpatch[_0x4d82('0x1e')](_0x19832f,_0x64669c,!![]);}catch(_0xf2f5a5){return BPromise['reject'](_0xf2f5a5);}return _0x19832f[_0x4d82('0x1f')]();};}function saveUpdates(_0x748ee7,_0x5e5bdf){return function(_0x1a419f){if(_0x1a419f){return _0x1a419f[_0x4d82('0x20')](_0x748ee7)[_0x4d82('0x21')](function(_0x14a2d4){return _0x14a2d4;});}return null;};}function removeEntity(_0xe17d70,_0x15f5d1){return function(_0x11c043){if(_0x11c043){return _0x11c043[_0x4d82('0x22')]()[_0x4d82('0x21')](function(){_0xe17d70[_0x4d82('0x16')](0xcc)[_0x4d82('0x15')]();});}};}function handleEntityNotFound(_0x395efc,_0x7404ba){return function(_0x284c66){if(!_0x284c66){_0x395efc[_0x4d82('0x14')](0x194);}return _0x284c66;};}function handleError(_0x4af6da,_0x5e0b03){_0x5e0b03=_0x5e0b03||0x1f4;return function(_0x3dcb0f){logger[_0x4d82('0x23')](_0x3dcb0f[_0x4d82('0x24')]);if(_0x3dcb0f[_0x4d82('0x25')]){delete _0x3dcb0f['name'];}_0x4af6da[_0x4d82('0x16')](_0x5e0b03)[_0x4d82('0x26')](_0x3dcb0f);};}exports[_0x4d82('0x27')]=function(_0x11d022,_0x5ce98b){var _0x4081f6={},_0x4a7444={},_0x4d9ac4={'count':0x0,'rows':[]};var _0x487581=_['map'](db[_0x4d82('0x28')][_0x4d82('0x29')],function(_0x88318c){return{'name':_0x88318c['fieldName'],'type':_0x88318c[_0x4d82('0x2a')][_0x4d82('0x2b')]};});_0x4a7444['model']=_['map'](_0x487581,_0x4d82('0x25'));_0x4a7444[_0x4d82('0x2c')]=_[_0x4d82('0x2d')](_0x11d022[_0x4d82('0x2c')]);_0x4a7444['filters']=_[_0x4d82('0x2e')](_0x4a7444['model'],_0x4a7444[_0x4d82('0x2c')]);_0x4081f6[_0x4d82('0x2f')]=_['intersection'](_0x4a7444['model'],qs[_0x4d82('0x30')](_0x11d022[_0x4d82('0x2c')][_0x4d82('0x30')]));_0x4081f6[_0x4d82('0x2f')]=_0x4081f6[_0x4d82('0x2f')][_0x4d82('0x31')]?_0x4081f6[_0x4d82('0x2f')]:_0x4a7444[_0x4d82('0x32')];if(!_0x11d022[_0x4d82('0x2c')][_0x4d82('0x33')]('nolimit')){_0x4081f6[_0x4d82('0x19')]=qs[_0x4d82('0x19')](_0x11d022[_0x4d82('0x2c')]['limit']);_0x4081f6[_0x4d82('0x17')]=qs[_0x4d82('0x17')](_0x11d022['query'][_0x4d82('0x17')]);}_0x4081f6[_0x4d82('0x34')]=qs[_0x4d82('0x35')](_0x11d022['query'][_0x4d82('0x35')]);_0x4081f6[_0x4d82('0x36')]=qs['filters'](_[_0x4d82('0x37')](_0x11d022['query'],_0x4a7444[_0x4d82('0x38')]),_0x487581);if(_0x11d022[_0x4d82('0x2c')]['filter']){_0x4081f6[_0x4d82('0x36')]=_['merge'](_0x4081f6[_0x4d82('0x36')],{'$or':_['map'](_0x487581,function(_0x51c705){if(_0x51c705[_0x4d82('0x2a')]!=='VIRTUAL'){var _0x2528d7={};_0x2528d7[_0x51c705['name']]={'$like':'%'+_0x11d022[_0x4d82('0x2c')][_0x4d82('0x39')]+'%'};return _0x2528d7;}})});}_0x4081f6=_['merge']({},_0x4081f6,_0x11d022[_0x4d82('0x3a')]);var _0x5d9444={'where':_0x4081f6[_0x4d82('0x36')]};return db[_0x4d82('0x28')]['count'](_0x5d9444)[_0x4d82('0x21')](function(_0x5521f1){_0x4d9ac4[_0x4d82('0x1a')]=_0x5521f1;if(_0x11d022[_0x4d82('0x2c')][_0x4d82('0x3b')]){_0x4081f6[_0x4d82('0x3c')]=[{'all':!![]}];}return db[_0x4d82('0x28')][_0x4d82('0x3d')](_0x4081f6);})['then'](function(_0x222b35){_0x4d9ac4[_0x4d82('0x3e')]=_0x222b35;return _0x4d9ac4;})[_0x4d82('0x21')](respondWithFilteredResult(_0x5ce98b,_0x4081f6))[_0x4d82('0x3f')](handleError(_0x5ce98b,null));};exports[_0x4d82('0x40')]=function(_0x363158,_0x37498b){var _0x4c474b={'raw':!![],'where':{'id':_0x363158[_0x4d82('0x41')]['id']}},_0x3c80d6={};_0x3c80d6[_0x4d82('0x32')]=_[_0x4d82('0x2d')](db[_0x4d82('0x28')]['rawAttributes']);_0x3c80d6[_0x4d82('0x2c')]=_[_0x4d82('0x2d')](_0x363158[_0x4d82('0x2c')]);_0x3c80d6[_0x4d82('0x38')]=_[_0x4d82('0x2e')](_0x3c80d6[_0x4d82('0x32')],_0x3c80d6[_0x4d82('0x2c')]);_0x4c474b['attributes']=_[_0x4d82('0x2e')](_0x3c80d6[_0x4d82('0x32')],qs['fields'](_0x363158[_0x4d82('0x2c')]['fields']));_0x4c474b[_0x4d82('0x2f')]=_0x4c474b[_0x4d82('0x2f')]['length']?_0x4c474b[_0x4d82('0x2f')]:_0x3c80d6[_0x4d82('0x32')];if(_0x363158['query'][_0x4d82('0x3b')]){_0x4c474b[_0x4d82('0x3c')]=[{'all':!![]}];}_0x4c474b=_[_0x4d82('0x42')]({},_0x4c474b,_0x363158['options']);return db[_0x4d82('0x28')][_0x4d82('0x43')](_0x4c474b)['then'](handleEntityNotFound(_0x37498b,null))['then'](respondWithResult(_0x37498b,null))[_0x4d82('0x3f')](handleError(_0x37498b,null));};exports[_0x4d82('0x44')]=function(_0x40c5ed,_0xb9d3bd){return db[_0x4d82('0x28')][_0x4d82('0x44')](_0x40c5ed[_0x4d82('0x45')],{})['then'](respondWithResult(_0xb9d3bd,0xc9))[_0x4d82('0x3f')](handleError(_0xb9d3bd,null));};exports[_0x4d82('0x20')]=function(_0x2e4083,_0x234ce3){if(_0x2e4083['body']['id']){delete _0x2e4083['body']['id'];}return db['MailQueueReport'][_0x4d82('0x43')]({'where':{'id':_0x2e4083[_0x4d82('0x41')]['id']}})[_0x4d82('0x21')](handleEntityNotFound(_0x234ce3,null))[_0x4d82('0x21')](saveUpdates(_0x2e4083[_0x4d82('0x45')],null))[_0x4d82('0x21')](respondWithResult(_0x234ce3,null))['catch'](handleError(_0x234ce3,null));};exports[_0x4d82('0x22')]=function(_0x1c022d,_0x3c0ffc){return db[_0x4d82('0x28')][_0x4d82('0x43')]({'where':{'id':_0x1c022d[_0x4d82('0x41')]['id']}})[_0x4d82('0x21')](handleEntityNotFound(_0x3c0ffc,null))[_0x4d82('0x21')](removeEntity(_0x3c0ffc,null))[_0x4d82('0x3f')](handleError(_0x3c0ffc,null));};exports['describe']=function(_0x418e6c,_0x25a4de){return db[_0x4d82('0x28')][_0x4d82('0x46')]()[_0x4d82('0x21')](respondWithResult(_0x25a4de,null))[_0x4d82('0x3f')](handleError(_0x25a4de,null));};
\ No newline at end of file
index 1b920d7..457a1f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a8d=['../../config/environment','./mailQueueReport.attributes','exports','define','MailQueueReport','report_mail_queue','uniqueid','util','../../config/logger','api','bluebird','request-promise','rimraf'];(function(_0x552252,_0xdb0d75){var _0x16ae8d=function(_0x1cebe2){while(--_0x1cebe2){_0x552252['push'](_0x552252['shift']());}};_0x16ae8d(++_0xdb0d75);}(_0x1a8d,0x89));var _0xd1a8=function(_0x4381ca,_0x57672e){_0x4381ca=_0x4381ca-0x0;var _0x40c459=_0x1a8d[_0x4381ca];return _0x40c459;};'use strict';var _=require('lodash');var util=require(_0xd1a8('0x0'));var logger=require(_0xd1a8('0x1'))(_0xd1a8('0x2'));var moment=require('moment');var BPromise=require(_0xd1a8('0x3'));var rp=require(_0xd1a8('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xd1a8('0x5'));var config=require(_0xd1a8('0x6'));var attributes=require(_0xd1a8('0x7'));module[_0xd1a8('0x8')]=function(_0x1944c5,_0x4ac337){return _0x1944c5[_0xd1a8('0x9')](_0xd1a8('0xa'),attributes,{'tableName':_0xd1a8('0xb'),'paranoid':![],'indexes':[{'name':_0xd1a8('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xb3a4=['api','bluebird','request-promise','path','rimraf','./mailQueueReport.attributes','define','report_mail_queue','uniqueid','../../config/logger'];(function(_0x45ba4c,_0x13851c){var _0x3efc61=function(_0x26be69){while(--_0x26be69){_0x45ba4c['push'](_0x45ba4c['shift']());}};_0x3efc61(++_0x13851c);}(_0xb3a4,0x77));var _0x4b3a=function(_0x2b5ee8,_0x14bed7){_0x2b5ee8=_0x2b5ee8-0x0;var _0x584a59=_0xb3a4[_0x2b5ee8];return _0x584a59;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4b3a('0x0'))(_0x4b3a('0x1'));var moment=require('moment');var BPromise=require(_0x4b3a('0x2'));var rp=require(_0x4b3a('0x3'));var fs=require('fs');var path=require(_0x4b3a('0x4'));var rimraf=require(_0x4b3a('0x5'));var config=require('../../config/environment');var attributes=require(_0x4b3a('0x6'));module['exports']=function(_0x87f380,_0x30a804){return _0x87f380[_0x4b3a('0x7')]('MailQueueReport',attributes,{'tableName':_0x4b3a('0x8'),'paranoid':![],'indexes':[{'name':_0x4b3a('0x9'),'fields':[_0x4b3a('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
index 66f59f9..34de6c8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x326f=['error','code','message','result','catch','CreateMailQueueReport','MailQueueReport','options','raw','stringify','UpdateMailQueueReport','body','attributes','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','info','MailQueueReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x491587,_0x37bf42){var _0x2c5a72=function(_0x21085e){while(--_0x21085e){_0x491587['push'](_0x491587['shift']());}};_0x2c5a72(++_0x37bf42);}(_0x326f,0xd1));var _0xf326=function(_0x52fc98,_0x234046){_0x52fc98=_0x52fc98-0x0;var _0x5ef66b=_0x326f[_0x52fc98];return _0x5ef66b;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xf326('0x1'));var rs=require(_0xf326('0x2'));var fs=require('fs');var Redis=require(_0xf326('0x3'));var db=require(_0xf326('0x4'))['db'];var utils=require(_0xf326('0x5'));var logger=require(_0xf326('0x6'))(_0xf326('0x7'));var config=require(_0xf326('0x8'));var jayson=require(_0xf326('0x9'));var client=jayson[_0xf326('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3c254d,_0x3851eb,_0x165f95){return new BPromise(function(_0x1e7b8a,_0x515bfa){return client['request'](_0x3c254d,_0x165f95)['then'](function(_0x3bacf2){logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));logger[_0xf326('0xe')]('MailQueueReport,\x20%s,\x20%s,\x20%s',_0x3851eb,_0xf326('0xd'),JSON['stringify'](_0x3bacf2));if(_0x3bacf2[_0xf326('0xf')]){if(_0x3bacf2['error'][_0xf326('0x10')]===0x1f4){logger['error'](_0xf326('0xc'),_0x3851eb,_0x3bacf2[_0xf326('0xf')]['message']);return _0x515bfa(_0x3bacf2[_0xf326('0xf')][_0xf326('0x11')]);}logger[_0xf326('0xf')](_0xf326('0xc'),_0x3851eb,_0x3bacf2['error'][_0xf326('0x11')]);return _0x1e7b8a(_0x3bacf2['error']['message']);}else{logger[_0xf326('0xb')](_0xf326('0xc'),_0x3851eb,_0xf326('0xd'));_0x1e7b8a(_0x3bacf2[_0xf326('0x12')][_0xf326('0x11')]);}})[_0xf326('0x13')](function(_0x34128e){logger[_0xf326('0xf')]('MailQueueReport,\x20%s,\x20%s',_0x3851eb,_0x34128e);_0x515bfa(_0x34128e);});});}exports[_0xf326('0x14')]=function(_0x453100){var _0x18bee3=this;return new Promise(function(_0x31ffb9,_0xcef2b5){return db[_0xf326('0x15')]['create'](_0x453100['body'],{'raw':_0x453100['options']?_0x453100[_0xf326('0x16')][_0xf326('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x4cabce){logger[_0xf326('0xb')]('CreateMailQueueReport',_0x453100);logger['debug'](_0xf326('0x14'),_0x453100,JSON[_0xf326('0x18')](_0x4cabce));_0x31ffb9(_0x4cabce);})['catch'](function(_0x5aa184){logger[_0xf326('0xf')](_0xf326('0x14'),_0x5aa184['message'],_0x453100);_0xcef2b5(_0x18bee3[_0xf326('0xf')](0x1f4,_0x5aa184[_0xf326('0x11')]));});});};exports[_0xf326('0x19')]=function(_0x295752){var _0x17c157=this;return new Promise(function(_0x2049ec,_0x5ce532){return db['MailQueueReport']['update'](_0x295752[_0xf326('0x1a')],{'raw':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')][_0xf326('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')]['where']||null:null,'attributes':_0x295752[_0xf326('0x16')]?_0x295752[_0xf326('0x16')][_0xf326('0x1b')]||null:null,'limit':_0x295752['options']?_0x295752[_0xf326('0x16')]['limit']||null:null})['then'](function(_0x6a8e89){logger[_0xf326('0xb')](_0xf326('0x19'),_0x295752);logger['debug'](_0xf326('0x19'),_0x295752,JSON[_0xf326('0x18')](_0x6a8e89));_0x2049ec(_0x6a8e89);})['catch'](function(_0x225776){logger[_0xf326('0xf')](_0xf326('0x19'),_0x225776[_0xf326('0x11')],_0x295752);_0x5ce532(_0x17c157[_0xf326('0xf')](0x1f4,_0x225776[_0xf326('0x11')]));});});};
\ No newline at end of file
+var _0xadb5=['MailQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateMailQueueReport','create','options','raw','debug','MailQueueReport','body','attributes','limit','UpdateMailQueueReport','util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info'];(function(_0x17912c,_0x21a437){var _0x69cb07=function(_0x49b769){while(--_0x49b769){_0x17912c['push'](_0x17912c['shift']());}};_0x69cb07(++_0x21a437);}(_0xadb5,0xad));var _0x5adb=function(_0x41024d,_0x3853ee){_0x41024d=_0x41024d-0x0;var _0x2f3b35=_0xadb5[_0x41024d];return _0x2f3b35;};'use strict';var _=require('lodash');var util=require(_0x5adb('0x0'));var moment=require('moment');var BPromise=require(_0x5adb('0x1'));var rs=require(_0x5adb('0x2'));var fs=require('fs');var Redis=require(_0x5adb('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x5adb('0x4'));var logger=require(_0x5adb('0x5'))(_0x5adb('0x6'));var config=require('../../config/environment');var jayson=require(_0x5adb('0x7'));var client=jayson[_0x5adb('0x8')][_0x5adb('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3213e8,_0xdf3776,_0x353885){return new BPromise(function(_0x47228a,_0x6d1b45){return client[_0x5adb('0xa')](_0x3213e8,_0x353885)[_0x5adb('0xb')](function(_0x34f59d){logger[_0x5adb('0xc')](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));logger['debug']('MailQueueReport,\x20%s,\x20%s,\x20%s',_0xdf3776,_0x5adb('0xe'),JSON[_0x5adb('0xf')](_0x34f59d));if(_0x34f59d[_0x5adb('0x10')]){if(_0x34f59d['error'][_0x5adb('0x11')]===0x1f4){logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d['error'][_0x5adb('0x12')]);return _0x6d1b45(_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);}logger['error'](_0x5adb('0xd'),_0xdf3776,_0x34f59d[_0x5adb('0x10')][_0x5adb('0x12')]);return _0x47228a(_0x34f59d['error'][_0x5adb('0x12')]);}else{logger['info'](_0x5adb('0xd'),_0xdf3776,_0x5adb('0xe'));_0x47228a(_0x34f59d[_0x5adb('0x13')][_0x5adb('0x12')]);}})[_0x5adb('0x14')](function(_0x39d24d){logger[_0x5adb('0x10')](_0x5adb('0xd'),_0xdf3776,_0x39d24d);_0x6d1b45(_0x39d24d);});});}exports[_0x5adb('0x15')]=function(_0x529b65){var _0x3fff62=this;return new Promise(function(_0x5de028,_0x1d9e86){return db['MailQueueReport'][_0x5adb('0x16')](_0x529b65['body'],{'raw':_0x529b65['options']?_0x529b65[_0x5adb('0x17')][_0x5adb('0x18')]===undefined?!![]:![]:!![]})[_0x5adb('0xb')](function(_0x1fd4a7){logger[_0x5adb('0xc')]('CreateMailQueueReport',_0x529b65);logger[_0x5adb('0x19')]('CreateMailQueueReport',_0x529b65,JSON['stringify'](_0x1fd4a7));_0x5de028(_0x1fd4a7);})[_0x5adb('0x14')](function(_0x379b33){logger[_0x5adb('0x10')](_0x5adb('0x15'),_0x379b33[_0x5adb('0x12')],_0x529b65);_0x1d9e86(_0x3fff62[_0x5adb('0x10')](0x1f4,_0x379b33[_0x5adb('0x12')]));});});};exports['UpdateMailQueueReport']=function(_0x4b1957){var _0x373cc3=this;return new Promise(function(_0x3220cd,_0x3839fb){return db[_0x5adb('0x1a')]['update'](_0x4b1957[_0x5adb('0x1b')],{'raw':_0x4b1957[_0x5adb('0x17')]?_0x4b1957['options'][_0x5adb('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')]['where']||null:null,'attributes':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1c')]||null:null,'limit':_0x4b1957[_0x5adb('0x17')]?_0x4b1957[_0x5adb('0x17')][_0x5adb('0x1d')]||null:null})['then'](function(_0x49992e){logger['info'](_0x5adb('0x1e'),_0x4b1957);logger[_0x5adb('0x19')](_0x5adb('0x1e'),_0x4b1957,JSON[_0x5adb('0xf')](_0x49992e));_0x3220cd(_0x49992e);})[_0x5adb('0x14')](function(_0x4de310){logger[_0x5adb('0x10')](_0x5adb('0x1e'),_0x4de310[_0x5adb('0x12')],_0x4b1957);_0x3839fb(_0x373cc3[_0x5adb('0x10')](0x1f4,_0x4de310[_0x5adb('0x12')]));});});};
\ No newline at end of file
index 58de079..14daaf3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x52652e,_0x40fada){var _0x346dcd=function(_0x17aec1){while(--_0x17aec1){_0x52652e['push'](_0x52652e['shift']());}};_0x346dcd(++_0x40fada);}(_0x70e0,0x17b));var _0x070e=function(_0x4055d7,_0x5c93df){_0x4055d7=_0x4055d7-0x0;var _0xb043be=_0x70e0[_0x4055d7];return _0xb043be;};'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
+var _0xe706=['../../components/interaction/service','../../config/environment','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service'];(function(_0x132aba,_0x544428){var _0x1ca0c3=function(_0x287629){while(--_0x287629){_0x132aba['push'](_0x132aba['shift']());}};_0x1ca0c3(++_0x544428);}(_0xe706,0xa3));var _0x6e70=function(_0x3a4b2a,_0x1d17d2){_0x3a4b2a=_0x3a4b2a-0x0;var _0xe2640e=_0xe706[_0x3a4b2a];return _0xe2640e;};'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 1c96760..2453d4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d19=['sequelize','STRING','INTEGER','BOOLEAN'];(function(_0x5c4ad2,_0x35cebd){var _0x44756f=function(_0x59f9a5){while(--_0x59f9a5){_0x5c4ad2['push'](_0x5c4ad2['shift']());}};_0x44756f(++_0x35cebd);}(_0x9d19,0xd0));var _0x99d1=function(_0x5b561d,_0x422b7c){_0x5b561d=_0x5b561d-0x0;var _0x431060=_0x9d19[_0x5b561d];return _0x431060;};'use strict';var Sequelize=require(_0x99d1('0x0'));module['exports']={'description':{'type':Sequelize[_0x99d1('0x1')]},'host':{'type':Sequelize[_0x99d1('0x1')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize[_0x99d1('0x1')]},'password':{'type':Sequelize[_0x99d1('0x1')]},'port':{'type':Sequelize[_0x99d1('0x2')]},'tls':{'type':Sequelize[_0x99d1('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize[_0x99d1('0x1')],'defaultValue':'INBOX'},'connTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize[_0x99d1('0x1')]},'modernAuthentication':{'type':Sequelize[_0x99d1('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x30a1=['sequelize','STRING','INTEGER','BOOLEAN','INBOX'];(function(_0x1bb815,_0x37d424){var _0x36172f=function(_0x4f017d){while(--_0x4f017d){_0x1bb815['push'](_0x1bb815['shift']());}};_0x36172f(++_0x37d424);}(_0x30a1,0x1ea));var _0x130a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x30a1[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x130a('0x0'));module['exports']={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0x130a('0x1')]},'authentication':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'user':{'type':Sequelize[_0x130a('0x1')]},'password':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0x130a('0x2')]},'tls':{'type':Sequelize[_0x130a('0x3')],'defaultValue':!![]},'mailbox':{'type':Sequelize['STRING'],'defaultValue':_0x130a('0x4')},'connTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0xa},'authTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'service':{'type':Sequelize['STRING']},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 8ad7110..356750e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x905d=['path','rimraf','../../config/environment','./mailServerIn.attributes','define','MailServerIn','mail_servers_in','lodash','util','../../config/logger','api','request-promise'];(function(_0x1ccdf7,_0x215d5a){var _0x52a0ae=function(_0x40324a){while(--_0x40324a){_0x1ccdf7['push'](_0x1ccdf7['shift']());}};_0x52a0ae(++_0x215d5a);}(_0x905d,0x1e7));var _0xd905=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x905d[_0x2dafbe];return _0x58a45a;};'use strict';var _=require(_0xd905('0x0'));var util=require(_0xd905('0x1'));var logger=require(_0xd905('0x2'))(_0xd905('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xd905('0x4'));var fs=require('fs');var path=require(_0xd905('0x5'));var rimraf=require(_0xd905('0x6'));var config=require(_0xd905('0x7'));var attributes=require(_0xd905('0x8'));module['exports']=function(_0x15bc35,_0x26da89){return _0x15bc35[_0xd905('0x9')](_0xd905('0xa'),attributes,{'tableName':_0xd905('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xba4a=['mail_servers_in','lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./mailServerIn.attributes','exports','define','MailServerIn'];(function(_0x2c208b,_0x5e2b9a){var _0x24f9eb=function(_0x190ced){while(--_0x190ced){_0x2c208b['push'](_0x2c208b['shift']());}};_0x24f9eb(++_0x5e2b9a);}(_0xba4a,0x11f));var _0xaba4=function(_0x2c16b7,_0x468230){_0x2c16b7=_0x2c16b7-0x0;var _0x19f9a1=_0xba4a[_0x2c16b7];return _0x19f9a1;};'use strict';var _=require(_0xaba4('0x0'));var util=require('util');var logger=require(_0xaba4('0x1'))('api');var moment=require(_0xaba4('0x2'));var BPromise=require(_0xaba4('0x3'));var rp=require(_0xaba4('0x4'));var fs=require('fs');var path=require(_0xaba4('0x5'));var rimraf=require(_0xaba4('0x6'));var config=require(_0xaba4('0x7'));var attributes=require(_0xaba4('0x8'));module[_0xaba4('0x9')]=function(_0x28a061,_0xbd25bc){return _0x28a061[_0xaba4('0xa')](_0xaba4('0xb'),attributes,{'tableName':_0xaba4('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a6e5c98..db3f5a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d50=['request\x20sent','MailServerIn,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetMailServerIn','MailServerIn','options','raw','where','include','map','model','attributes','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','MailServerIn,\x20%s,\x20%s'];(function(_0x144bcb,_0x15b87b){var _0x5f2ee5=function(_0x1e50b7){while(--_0x1e50b7){_0x144bcb['push'](_0x144bcb['shift']());}};_0x5f2ee5(++_0x15b87b);}(_0x3d50,0xf1));var _0x03d5=function(_0x450457,_0x28b360){_0x450457=_0x450457-0x0;var _0x3ca327=_0x3d50[_0x450457];return _0x3ca327;};'use strict';var _=require(_0x03d5('0x0'));var util=require('util');var moment=require(_0x03d5('0x1'));var BPromise=require(_0x03d5('0x2'));var rs=require(_0x03d5('0x3'));var fs=require('fs');var Redis=require(_0x03d5('0x4'));var db=require(_0x03d5('0x5'))['db'];var utils=require(_0x03d5('0x6'));var logger=require('../../config/logger')(_0x03d5('0x7'));var config=require(_0x03d5('0x8'));var jayson=require(_0x03d5('0x9'));var client=jayson[_0x03d5('0xa')][_0x03d5('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x19dbae,_0x44274b,_0x54702c){return new BPromise(function(_0x525966,_0x26bb31){return client[_0x03d5('0xc')](_0x19dbae,_0x54702c)['then'](function(_0x561afb){logger[_0x03d5('0xd')](_0x03d5('0xe'),_0x44274b,_0x03d5('0xf'));logger['debug'](_0x03d5('0x10'),_0x44274b,_0x03d5('0xf'),JSON[_0x03d5('0x11')](_0x561afb));if(_0x561afb[_0x03d5('0x12')]){if(_0x561afb[_0x03d5('0x12')][_0x03d5('0x13')]===0x1f4){logger[_0x03d5('0x12')](_0x03d5('0xe'),_0x44274b,_0x561afb[_0x03d5('0x12')][_0x03d5('0x14')]);return _0x26bb31(_0x561afb[_0x03d5('0x12')][_0x03d5('0x14')]);}logger[_0x03d5('0x12')](_0x03d5('0xe'),_0x44274b,_0x561afb[_0x03d5('0x12')][_0x03d5('0x14')]);return _0x525966(_0x561afb['error'][_0x03d5('0x14')]);}else{logger[_0x03d5('0xd')](_0x03d5('0xe'),_0x44274b,'request\x20sent');_0x525966(_0x561afb[_0x03d5('0x15')][_0x03d5('0x14')]);}})[_0x03d5('0x16')](function(_0x5be953){logger[_0x03d5('0x12')](_0x03d5('0xe'),_0x44274b,_0x5be953);_0x26bb31(_0x5be953);});});}exports[_0x03d5('0x17')]=function(_0x3948a0){var _0xc2484b=this;return new Promise(function(_0x3922e4,_0x245102){return db[_0x03d5('0x18')]['findAll']({'raw':_0x3948a0[_0x03d5('0x19')]?_0x3948a0[_0x03d5('0x19')][_0x03d5('0x1a')]===undefined?!![]:![]:!![],'where':_0x3948a0['options']?_0x3948a0[_0x03d5('0x19')][_0x03d5('0x1b')]||null:null,'attributes':_0x3948a0[_0x03d5('0x19')]?_0x3948a0[_0x03d5('0x19')]['attributes']||null:null,'limit':_0x3948a0[_0x03d5('0x19')]?_0x3948a0[_0x03d5('0x19')]['limit']||null:null,'include':_0x3948a0[_0x03d5('0x19')]?_0x3948a0[_0x03d5('0x19')][_0x03d5('0x1c')]?_[_0x03d5('0x1d')](_0x3948a0[_0x03d5('0x19')][_0x03d5('0x1c')],function(_0x575a0c){return{'model':db[_0x575a0c[_0x03d5('0x1e')]],'as':_0x575a0c['as'],'attributes':_0x575a0c[_0x03d5('0x1f')],'include':_0x575a0c[_0x03d5('0x1c')]?_[_0x03d5('0x1d')](_0x575a0c[_0x03d5('0x1c')],function(_0xbf1423){return{'model':db[_0xbf1423['model']],'as':_0xbf1423['as'],'attributes':_0xbf1423[_0x03d5('0x1f')],'include':_0xbf1423[_0x03d5('0x1c')]?_[_0x03d5('0x1d')](_0xbf1423[_0x03d5('0x1c')],function(_0x248c6b){return{'model':db[_0x248c6b['model']],'as':_0x248c6b['as'],'attributes':_0x248c6b[_0x03d5('0x1f')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x54dc49){logger[_0x03d5('0xd')]('GetMailServerIn',_0x3948a0);logger['debug']('GetMailServerIn',_0x3948a0,JSON[_0x03d5('0x11')](_0x54dc49));_0x3922e4(_0x54dc49);})['catch'](function(_0x5d2bf2){logger[_0x03d5('0x12')](_0x03d5('0x17'),_0x5d2bf2[_0x03d5('0x14')],_0x3948a0);_0x245102(_0xc2484b[_0x03d5('0x12')](0x1f4,_0x5d2bf2[_0x03d5('0x14')]));});});};
\ No newline at end of file
+var _0x0430=['message','info','result','catch','GetMailServerIn','MailServerIn','options','raw','limit','include','model','attributes','map','debug','lodash','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','MailServerIn,\x20%s,\x20%s','request\x20sent','MailServerIn,\x20%s,\x20%s,\x20%s','error','code'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0430,0x1d0));var _0x0043=function(_0x293215,_0x4079b4){_0x293215=_0x293215-0x0;var _0x1100be=_0x0430[_0x293215];return _0x1100be;};'use strict';var _=require(_0x0043('0x0'));var util=require('util');var moment=require(_0x0043('0x1'));var BPromise=require('bluebird');var rs=require(_0x0043('0x2'));var fs=require('fs');var Redis=require(_0x0043('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x0043('0x4'));var logger=require(_0x0043('0x5'))(_0x0043('0x6'));var config=require(_0x0043('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x0043('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x5ada5d,_0x2fe1fb,_0x4ca6a8){return new BPromise(function(_0x48496a,_0x3c6255){return client[_0x0043('0x9')](_0x5ada5d,_0x4ca6a8)[_0x0043('0xa')](function(_0x19bca8){logger['info'](_0x0043('0xb'),_0x2fe1fb,_0x0043('0xc'));logger['debug'](_0x0043('0xd'),_0x2fe1fb,_0x0043('0xc'),JSON['stringify'](_0x19bca8));if(_0x19bca8[_0x0043('0xe')]){if(_0x19bca8[_0x0043('0xe')][_0x0043('0xf')]===0x1f4){logger[_0x0043('0xe')](_0x0043('0xb'),_0x2fe1fb,_0x19bca8['error'][_0x0043('0x10')]);return _0x3c6255(_0x19bca8[_0x0043('0xe')][_0x0043('0x10')]);}logger['error']('MailServerIn,\x20%s,\x20%s',_0x2fe1fb,_0x19bca8[_0x0043('0xe')][_0x0043('0x10')]);return _0x48496a(_0x19bca8[_0x0043('0xe')][_0x0043('0x10')]);}else{logger[_0x0043('0x11')](_0x0043('0xb'),_0x2fe1fb,'request\x20sent');_0x48496a(_0x19bca8[_0x0043('0x12')]['message']);}})[_0x0043('0x13')](function(_0x4a3709){logger['error'](_0x0043('0xb'),_0x2fe1fb,_0x4a3709);_0x3c6255(_0x4a3709);});});}exports[_0x0043('0x14')]=function(_0x2f6355){var _0x397a64=this;return new Promise(function(_0xdcf588,_0x3abf76){return db[_0x0043('0x15')]['findAll']({'raw':_0x2f6355[_0x0043('0x16')]?_0x2f6355[_0x0043('0x16')][_0x0043('0x17')]===undefined?!![]:![]:!![],'where':_0x2f6355[_0x0043('0x16')]?_0x2f6355[_0x0043('0x16')]['where']||null:null,'attributes':_0x2f6355[_0x0043('0x16')]?_0x2f6355[_0x0043('0x16')]['attributes']||null:null,'limit':_0x2f6355[_0x0043('0x16')]?_0x2f6355[_0x0043('0x16')][_0x0043('0x18')]||null:null,'include':_0x2f6355[_0x0043('0x16')]?_0x2f6355[_0x0043('0x16')][_0x0043('0x19')]?_['map'](_0x2f6355['options'][_0x0043('0x19')],function(_0x444044){return{'model':db[_0x444044[_0x0043('0x1a')]],'as':_0x444044['as'],'attributes':_0x444044[_0x0043('0x1b')],'include':_0x444044['include']?_[_0x0043('0x1c')](_0x444044[_0x0043('0x19')],function(_0x2b50ad){return{'model':db[_0x2b50ad['model']],'as':_0x2b50ad['as'],'attributes':_0x2b50ad[_0x0043('0x1b')],'include':_0x2b50ad[_0x0043('0x19')]?_['map'](_0x2b50ad[_0x0043('0x19')],function(_0x5bcd71){return{'model':db[_0x5bcd71['model']],'as':_0x5bcd71['as'],'attributes':_0x5bcd71['attributes']};}):[]};}):[]};}):[]:[]})[_0x0043('0xa')](function(_0x16ae31){logger[_0x0043('0x11')]('GetMailServerIn',_0x2f6355);logger[_0x0043('0x1d')](_0x0043('0x14'),_0x2f6355,JSON['stringify'](_0x16ae31));_0xdcf588(_0x16ae31);})[_0x0043('0x13')](function(_0xe9caef){logger[_0x0043('0xe')](_0x0043('0x14'),_0xe9caef['message'],_0x2f6355);_0x3abf76(_0x397a64[_0x0043('0xe')](0x1f4,_0xe9caef[_0x0043('0x10')]));});});};
\ No newline at end of file
index 67c0e94..67dc02b 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(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x7a54,0x106));var _0x47a5=function(_0x37f81f,_0x1aeea4){_0x37f81f=_0x37f81f-0x0;var _0x50c623=_0x7a54[_0x37f81f];return _0x50c623;};'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(_0x484e36,_0x4482d8){var _0xafc85d=function(_0xaba9c8){while(--_0xaba9c8){_0x484e36['push'](_0x484e36['shift']());}};_0xafc85d(++_0x4482d8);}(_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('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 3c819c7..1833c80 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e6c=['exports','STRING','BOOLEAN','sequelize'];(function(_0x522d59,_0x1ede83){var _0xf9c942=function(_0x345ef8){while(--_0x345ef8){_0x522d59['push'](_0x522d59['shift']());}};_0xf9c942(++_0x1ede83);}(_0x6e6c,0xc3));var _0xc6e6=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x6e6c[_0x501510];return _0x1e6ee5;};'use strict';var Sequelize=require(_0xc6e6('0x0'));module[_0xc6e6('0x1')]={'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xc6e6('0x2')]},'user':{'type':Sequelize[_0xc6e6('0x2')]},'pass':{'type':Sequelize['STRING']},'port':{'type':Sequelize['INTEGER']},'secure':{'type':Sequelize[_0xc6e6('0x3')],'defaultValue':![]},'service':{'type':Sequelize['STRING']},'authentication':{'type':Sequelize[_0xc6e6('0x3')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
+var _0x80ed=['sequelize','STRING','INTEGER','BOOLEAN'];(function(_0x46fdbb,_0x217295){var _0x219d7e=function(_0x1350b8){while(--_0x1350b8){_0x46fdbb['push'](_0x46fdbb['shift']());}};_0x219d7e(++_0x217295);}(_0x80ed,0x11c));var _0xd80e=function(_0x35984c,_0x6b4d00){_0x35984c=_0x35984c-0x0;var _0x573801=_0x80ed[_0x35984c];return _0x573801;};'use strict';var Sequelize=require(_0xd80e('0x0'));module['exports']={'description':{'type':Sequelize[_0xd80e('0x1')]},'host':{'type':Sequelize[_0xd80e('0x1')]},'user':{'type':Sequelize[_0xd80e('0x1')]},'pass':{'type':Sequelize['STRING']},'port':{'type':Sequelize[_0xd80e('0x2')]},'secure':{'type':Sequelize[_0xd80e('0x3')],'defaultValue':![]},'service':{'type':Sequelize[_0xd80e('0x1')]},'authentication':{'type':Sequelize[_0xd80e('0x3')],'defaultValue':!![]},'modernAuthentication':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 20fe97c..c590f81 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3a0=['end','json','undefined','limit','count','offset','set','apply','save','destroy','then','error','stack','name','index','map','MailServerOut','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','where','pick','merge','filter','options','include','findAll','rows','catch','show','includeAll','find','create','body','update','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','to-csv','ejs','fs-extra','lodash','squel','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x56482c,_0x16118d){var _0x5aae7a=function(_0x52512f){while(--_0x52512f){_0x56482c['push'](_0x56482c['shift']());}};_0x5aae7a(++_0x16118d);}(_0xc3a0,0x10a));var _0x0c3a=function(_0xac151d,_0x4ea1d2){_0xac151d=_0xac151d-0x0;var _0x111dba=_0xc3a0[_0xac151d];return _0x111dba;};'use strict';var emlformat=require(_0x0c3a('0x0'));var rimraf=require(_0x0c3a('0x1'));var zipdir=require(_0x0c3a('0x2'));var jsonpatch=require(_0x0c3a('0x3'));var rp=require(_0x0c3a('0x4'));var moment=require(_0x0c3a('0x5'));var BPromise=require(_0x0c3a('0x6'));var Mustache=require('mustache');var util=require(_0x0c3a('0x7'));var path=require('path');var sox=require('sox');var csv=require(_0x0c3a('0x8'));var ejs=require(_0x0c3a('0x9'));var fs=require('fs');var fs_extra=require(_0x0c3a('0xa'));var _=require(_0x0c3a('0xb'));var squel=require(_0x0c3a('0xc'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x0c3a('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0c3a('0xe'));var Redis=require(_0x0c3a('0xf'));var authService=require(_0x0c3a('0x10'));var qs=require(_0x0c3a('0x11'));var as=require(_0x0c3a('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0c3a('0x13'))(_0x0c3a('0x14'));var utils=require(_0x0c3a('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x0c3a('0x16'));var db=require(_0x0c3a('0x17'))['db'];function respondWithStatusCode(_0x364ec3,_0x16c3bd){_0x16c3bd=_0x16c3bd||0xcc;return function(_0x480428){if(_0x480428){return _0x364ec3[_0x0c3a('0x18')](_0x16c3bd);}return _0x364ec3[_0x0c3a('0x19')](_0x16c3bd)[_0x0c3a('0x1a')]();};}function respondWithResult(_0x34e2ec,_0x4b869a){_0x4b869a=_0x4b869a||0xc8;return function(_0x55ba50){if(_0x55ba50){return _0x34e2ec[_0x0c3a('0x19')](_0x4b869a)[_0x0c3a('0x1b')](_0x55ba50);}};}function respondWithFilteredResult(_0x203d29,_0x3fea97){return function(_0x150bbb){if(_0x150bbb){var _0x4fa644=typeof _0x3fea97['offset']===_0x0c3a('0x1c')&&typeof _0x3fea97[_0x0c3a('0x1d')]===_0x0c3a('0x1c');var _0x32e4f5=_0x150bbb[_0x0c3a('0x1e')];var _0x469b04=_0x4fa644?0x0:_0x3fea97[_0x0c3a('0x1f')];var _0x114ab5=_0x4fa644?_0x150bbb[_0x0c3a('0x1e')]:_0x3fea97[_0x0c3a('0x1f')]+_0x3fea97[_0x0c3a('0x1d')];var _0x2e39aa;if(_0x114ab5>=_0x32e4f5){_0x114ab5=_0x32e4f5;_0x2e39aa=0xc8;}else{_0x2e39aa=0xce;}_0x203d29['status'](_0x2e39aa);return _0x203d29[_0x0c3a('0x20')]('Content-Range',_0x469b04+'-'+_0x114ab5+'/'+_0x32e4f5)[_0x0c3a('0x1b')](_0x150bbb);}return null;};}function patchUpdates(_0x585f24){return function(_0x59ac0c){try{jsonpatch[_0x0c3a('0x21')](_0x59ac0c,_0x585f24,!![]);}catch(_0x5c3df1){return BPromise['reject'](_0x5c3df1);}return _0x59ac0c[_0x0c3a('0x22')]();};}function saveUpdates(_0x2b4c06,_0x524b15){return function(_0x16c638){if(_0x16c638){return _0x16c638['update'](_0x2b4c06)['then'](function(_0x23d0e3){return _0x23d0e3;});}return null;};}function removeEntity(_0x127075,_0x164f15){return function(_0xe6ff67){if(_0xe6ff67){return _0xe6ff67[_0x0c3a('0x23')]()[_0x0c3a('0x24')](function(){_0x127075['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x377dee,_0x5804ae){return function(_0x3271e2){if(!_0x3271e2){_0x377dee[_0x0c3a('0x18')](0x194);}return _0x3271e2;};}function handleError(_0x24a8ed,_0x1fc26f){_0x1fc26f=_0x1fc26f||0x1f4;return function(_0x1ed1dd){logger[_0x0c3a('0x25')](_0x1ed1dd[_0x0c3a('0x26')]);if(_0x1ed1dd[_0x0c3a('0x27')]){delete _0x1ed1dd['name'];}_0x24a8ed['status'](_0x1fc26f)['send'](_0x1ed1dd);};}exports[_0x0c3a('0x28')]=function(_0x2dfa39,_0x51ec5e){var _0x3d96a7={},_0x4b9af1={},_0x408aa2={'count':0x0,'rows':[]};var _0x122e37=_[_0x0c3a('0x29')](db[_0x0c3a('0x2a')][_0x0c3a('0x2b')],function(_0x185102){return{'name':_0x185102[_0x0c3a('0x2c')],'type':_0x185102[_0x0c3a('0x2d')][_0x0c3a('0x2e')]};});_0x4b9af1[_0x0c3a('0x2f')]=_[_0x0c3a('0x29')](_0x122e37,_0x0c3a('0x27'));_0x4b9af1[_0x0c3a('0x30')]=_[_0x0c3a('0x31')](_0x2dfa39['query']);_0x4b9af1[_0x0c3a('0x32')]=_[_0x0c3a('0x33')](_0x4b9af1[_0x0c3a('0x2f')],_0x4b9af1['query']);_0x3d96a7[_0x0c3a('0x34')]=_[_0x0c3a('0x33')](_0x4b9af1['model'],qs[_0x0c3a('0x35')](_0x2dfa39['query'][_0x0c3a('0x35')]));_0x3d96a7['attributes']=_0x3d96a7['attributes'][_0x0c3a('0x36')]?_0x3d96a7[_0x0c3a('0x34')]:_0x4b9af1['model'];if(!_0x2dfa39[_0x0c3a('0x30')][_0x0c3a('0x37')](_0x0c3a('0x38'))){_0x3d96a7[_0x0c3a('0x1d')]=qs[_0x0c3a('0x1d')](_0x2dfa39['query'][_0x0c3a('0x1d')]);_0x3d96a7['offset']=qs[_0x0c3a('0x1f')](_0x2dfa39[_0x0c3a('0x30')][_0x0c3a('0x1f')]);}_0x3d96a7['order']=qs['sort'](_0x2dfa39['query']['sort']);_0x3d96a7[_0x0c3a('0x39')]=qs[_0x0c3a('0x32')](_[_0x0c3a('0x3a')](_0x2dfa39[_0x0c3a('0x30')],_0x4b9af1[_0x0c3a('0x32')]),_0x122e37);if(_0x2dfa39['query']['filter']){_0x3d96a7['where']=_[_0x0c3a('0x3b')](_0x3d96a7[_0x0c3a('0x39')],{'$or':_[_0x0c3a('0x29')](_0x122e37,function(_0x46c41a){if(_0x46c41a['type']!=='VIRTUAL'){var _0x230932={};_0x230932[_0x46c41a[_0x0c3a('0x27')]]={'$like':'%'+_0x2dfa39[_0x0c3a('0x30')][_0x0c3a('0x3c')]+'%'};return _0x230932;}})});}_0x3d96a7=_[_0x0c3a('0x3b')]({},_0x3d96a7,_0x2dfa39[_0x0c3a('0x3d')]);var _0xe957d6={'where':_0x3d96a7[_0x0c3a('0x39')]};return db[_0x0c3a('0x2a')][_0x0c3a('0x1e')](_0xe957d6)[_0x0c3a('0x24')](function(_0x2e579c){_0x408aa2[_0x0c3a('0x1e')]=_0x2e579c;if(_0x2dfa39[_0x0c3a('0x30')]['includeAll']){_0x3d96a7[_0x0c3a('0x3e')]=[{'all':!![]}];}return db[_0x0c3a('0x2a')][_0x0c3a('0x3f')](_0x3d96a7);})[_0x0c3a('0x24')](function(_0x5457ad){_0x408aa2[_0x0c3a('0x40')]=_0x5457ad;return _0x408aa2;})['then'](respondWithFilteredResult(_0x51ec5e,_0x3d96a7))[_0x0c3a('0x41')](handleError(_0x51ec5e,null));};exports[_0x0c3a('0x42')]=function(_0x50f744,_0x50278d){var _0x3774e0={'raw':!![],'where':{'id':_0x50f744['params']['id']}},_0x2cb485={};_0x2cb485[_0x0c3a('0x2f')]=_['keys'](db[_0x0c3a('0x2a')][_0x0c3a('0x2b')]);_0x2cb485[_0x0c3a('0x30')]=_[_0x0c3a('0x31')](_0x50f744[_0x0c3a('0x30')]);_0x2cb485[_0x0c3a('0x32')]=_[_0x0c3a('0x33')](_0x2cb485[_0x0c3a('0x2f')],_0x2cb485[_0x0c3a('0x30')]);_0x3774e0[_0x0c3a('0x34')]=_[_0x0c3a('0x33')](_0x2cb485[_0x0c3a('0x2f')],qs['fields'](_0x50f744['query']['fields']));_0x3774e0[_0x0c3a('0x34')]=_0x3774e0[_0x0c3a('0x34')][_0x0c3a('0x36')]?_0x3774e0[_0x0c3a('0x34')]:_0x2cb485[_0x0c3a('0x2f')];if(_0x50f744[_0x0c3a('0x30')][_0x0c3a('0x43')]){_0x3774e0[_0x0c3a('0x3e')]=[{'all':!![]}];}_0x3774e0=_['merge']({},_0x3774e0,_0x50f744[_0x0c3a('0x3d')]);return db[_0x0c3a('0x2a')][_0x0c3a('0x44')](_0x3774e0)['then'](handleEntityNotFound(_0x50278d,null))['then'](respondWithResult(_0x50278d,null))[_0x0c3a('0x41')](handleError(_0x50278d,null));};exports[_0x0c3a('0x45')]=function(_0x2cd50f,_0x396055){return db['MailServerOut'][_0x0c3a('0x45')](_0x2cd50f[_0x0c3a('0x46')],{})[_0x0c3a('0x24')](respondWithResult(_0x396055,0xc9))[_0x0c3a('0x41')](handleError(_0x396055,null));};exports[_0x0c3a('0x47')]=function(_0x370410,_0x32830e){if(_0x370410[_0x0c3a('0x46')]['id']){delete _0x370410['body']['id'];}return db[_0x0c3a('0x2a')][_0x0c3a('0x44')]({'where':{'id':_0x370410['params']['id']}})[_0x0c3a('0x24')](handleEntityNotFound(_0x32830e,null))[_0x0c3a('0x24')](saveUpdates(_0x370410[_0x0c3a('0x46')],null))['then'](respondWithResult(_0x32830e,null))[_0x0c3a('0x41')](handleError(_0x32830e,null));};exports[_0x0c3a('0x23')]=function(_0x3bfb8e,_0x53589d){return db[_0x0c3a('0x2a')][_0x0c3a('0x44')]({'where':{'id':_0x3bfb8e[_0x0c3a('0x48')]['id']}})[_0x0c3a('0x24')](handleEntityNotFound(_0x53589d,null))[_0x0c3a('0x24')](removeEntity(_0x53589d,null))[_0x0c3a('0x41')](handleError(_0x53589d,null));};
\ No newline at end of file
+var _0x9a29=['merge','type','filter','includeAll','include','findAll','rows','show','params','keys','intersection','options','find','catch','create','body','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','json','undefined','count','offset','limit','set','Content-Range','reject','save','update','then','error','name','MailServerOut','rawAttributes','model','map','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where'];(function(_0x639086,_0x6556a2){var _0x49aabc=function(_0x4829ab){while(--_0x4829ab){_0x639086['push'](_0x639086['shift']());}};_0x49aabc(++_0x6556a2);}(_0x9a29,0x1ba));var _0x99a2=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x9a29[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x99a2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x99a2('0x1'));var jsonpatch=require(_0x99a2('0x2'));var rp=require(_0x99a2('0x3'));var moment=require(_0x99a2('0x4'));var BPromise=require(_0x99a2('0x5'));var Mustache=require(_0x99a2('0x6'));var util=require(_0x99a2('0x7'));var path=require(_0x99a2('0x8'));var sox=require(_0x99a2('0x9'));var csv=require('to-csv');var ejs=require(_0x99a2('0xa'));var fs=require('fs');var fs_extra=require(_0x99a2('0xb'));var _=require(_0x99a2('0xc'));var squel=require(_0x99a2('0xd'));var crypto=require(_0x99a2('0xe'));var jsforce=require(_0x99a2('0xf'));var deskjs=require(_0x99a2('0x10'));var toCsv=require(_0x99a2('0x11'));var querystring=require('querystring');var Papa=require(_0x99a2('0x12'));var Redis=require(_0x99a2('0x13'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x99a2('0x14'));var hardwareService=require(_0x99a2('0x15'));var logger=require('../../config/logger')(_0x99a2('0x16'));var utils=require(_0x99a2('0x17'));var config=require(_0x99a2('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x99a2('0x19'))['db'];function respondWithStatusCode(_0x46e1a7,_0x48c5b7){_0x48c5b7=_0x48c5b7||0xcc;return function(_0x2dbf41){if(_0x2dbf41){return _0x46e1a7[_0x99a2('0x1a')](_0x48c5b7);}return _0x46e1a7[_0x99a2('0x1b')](_0x48c5b7)['end']();};}function respondWithResult(_0x26a162,_0x243d96){_0x243d96=_0x243d96||0xc8;return function(_0x74c532){if(_0x74c532){return _0x26a162[_0x99a2('0x1b')](_0x243d96)[_0x99a2('0x1c')](_0x74c532);}};}function respondWithFilteredResult(_0x5a26ca,_0x5b79d2){return function(_0x13c5cb){if(_0x13c5cb){var _0xe23742=typeof _0x5b79d2['offset']===_0x99a2('0x1d')&&typeof _0x5b79d2['limit']===_0x99a2('0x1d');var _0x18d391=_0x13c5cb['count'];var _0x57b65d=_0xe23742?0x0:_0x5b79d2['offset'];var _0x1b540a=_0xe23742?_0x13c5cb[_0x99a2('0x1e')]:_0x5b79d2[_0x99a2('0x1f')]+_0x5b79d2[_0x99a2('0x20')];var _0x439e12;if(_0x1b540a>=_0x18d391){_0x1b540a=_0x18d391;_0x439e12=0xc8;}else{_0x439e12=0xce;}_0x5a26ca[_0x99a2('0x1b')](_0x439e12);return _0x5a26ca[_0x99a2('0x21')](_0x99a2('0x22'),_0x57b65d+'-'+_0x1b540a+'/'+_0x18d391)[_0x99a2('0x1c')](_0x13c5cb);}return null;};}function patchUpdates(_0xf23988){return function(_0x576e92){try{jsonpatch['apply'](_0x576e92,_0xf23988,!![]);}catch(_0x28e58d){return BPromise[_0x99a2('0x23')](_0x28e58d);}return _0x576e92[_0x99a2('0x24')]();};}function saveUpdates(_0x1238fd,_0x5e1724){return function(_0x117a66){if(_0x117a66){return _0x117a66[_0x99a2('0x25')](_0x1238fd)['then'](function(_0x52a86e){return _0x52a86e;});}return null;};}function removeEntity(_0x1bdc19,_0xcfb433){return function(_0x123703){if(_0x123703){return _0x123703['destroy']()[_0x99a2('0x26')](function(){_0x1bdc19[_0x99a2('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5f9b49,_0x2f1699){return function(_0x2721c9){if(!_0x2721c9){_0x5f9b49['sendStatus'](0x194);}return _0x2721c9;};}function handleError(_0x5c1848,_0xda5793){_0xda5793=_0xda5793||0x1f4;return function(_0x51473d){logger[_0x99a2('0x27')](_0x51473d['stack']);if(_0x51473d[_0x99a2('0x28')]){delete _0x51473d[_0x99a2('0x28')];}_0x5c1848[_0x99a2('0x1b')](_0xda5793)['send'](_0x51473d);};}exports['index']=function(_0x5f0b84,_0x3f4b62){var _0x1bdff6={},_0x35cb62={},_0x692fc9={'count':0x0,'rows':[]};var _0x1a4e24=_['map'](db[_0x99a2('0x29')][_0x99a2('0x2a')],function(_0xe9497b){return{'name':_0xe9497b['fieldName'],'type':_0xe9497b['type']['key']};});_0x35cb62[_0x99a2('0x2b')]=_[_0x99a2('0x2c')](_0x1a4e24,'name');_0x35cb62[_0x99a2('0x2d')]=_['keys'](_0x5f0b84[_0x99a2('0x2d')]);_0x35cb62[_0x99a2('0x2e')]=_['intersection'](_0x35cb62[_0x99a2('0x2b')],_0x35cb62[_0x99a2('0x2d')]);_0x1bdff6[_0x99a2('0x2f')]=_['intersection'](_0x35cb62[_0x99a2('0x2b')],qs[_0x99a2('0x30')](_0x5f0b84['query']['fields']));_0x1bdff6[_0x99a2('0x2f')]=_0x1bdff6[_0x99a2('0x2f')][_0x99a2('0x31')]?_0x1bdff6[_0x99a2('0x2f')]:_0x35cb62['model'];if(!_0x5f0b84[_0x99a2('0x2d')][_0x99a2('0x32')](_0x99a2('0x33'))){_0x1bdff6[_0x99a2('0x20')]=qs[_0x99a2('0x20')](_0x5f0b84[_0x99a2('0x2d')]['limit']);_0x1bdff6['offset']=qs[_0x99a2('0x1f')](_0x5f0b84[_0x99a2('0x2d')][_0x99a2('0x1f')]);}_0x1bdff6[_0x99a2('0x34')]=qs[_0x99a2('0x35')](_0x5f0b84[_0x99a2('0x2d')][_0x99a2('0x35')]);_0x1bdff6[_0x99a2('0x36')]=qs['filters'](_['pick'](_0x5f0b84['query'],_0x35cb62[_0x99a2('0x2e')]),_0x1a4e24);if(_0x5f0b84['query']['filter']){_0x1bdff6[_0x99a2('0x36')]=_[_0x99a2('0x37')](_0x1bdff6[_0x99a2('0x36')],{'$or':_[_0x99a2('0x2c')](_0x1a4e24,function(_0x5c0a40){if(_0x5c0a40[_0x99a2('0x38')]!=='VIRTUAL'){var _0x1905de={};_0x1905de[_0x5c0a40[_0x99a2('0x28')]]={'$like':'%'+_0x5f0b84['query'][_0x99a2('0x39')]+'%'};return _0x1905de;}})});}_0x1bdff6=_[_0x99a2('0x37')]({},_0x1bdff6,_0x5f0b84['options']);var _0x4ee6fc={'where':_0x1bdff6[_0x99a2('0x36')]};return db[_0x99a2('0x29')][_0x99a2('0x1e')](_0x4ee6fc)[_0x99a2('0x26')](function(_0x2781b5){_0x692fc9[_0x99a2('0x1e')]=_0x2781b5;if(_0x5f0b84[_0x99a2('0x2d')][_0x99a2('0x3a')]){_0x1bdff6[_0x99a2('0x3b')]=[{'all':!![]}];}return db['MailServerOut'][_0x99a2('0x3c')](_0x1bdff6);})['then'](function(_0x1113c4){_0x692fc9[_0x99a2('0x3d')]=_0x1113c4;return _0x692fc9;})[_0x99a2('0x26')](respondWithFilteredResult(_0x3f4b62,_0x1bdff6))['catch'](handleError(_0x3f4b62,null));};exports[_0x99a2('0x3e')]=function(_0x58512a,_0x90d6de){var _0x505bd9={'raw':!![],'where':{'id':_0x58512a[_0x99a2('0x3f')]['id']}},_0x396a5f={};_0x396a5f[_0x99a2('0x2b')]=_[_0x99a2('0x40')](db['MailServerOut']['rawAttributes']);_0x396a5f[_0x99a2('0x2d')]=_[_0x99a2('0x40')](_0x58512a[_0x99a2('0x2d')]);_0x396a5f[_0x99a2('0x2e')]=_['intersection'](_0x396a5f[_0x99a2('0x2b')],_0x396a5f[_0x99a2('0x2d')]);_0x505bd9[_0x99a2('0x2f')]=_[_0x99a2('0x41')](_0x396a5f[_0x99a2('0x2b')],qs[_0x99a2('0x30')](_0x58512a[_0x99a2('0x2d')][_0x99a2('0x30')]));_0x505bd9[_0x99a2('0x2f')]=_0x505bd9[_0x99a2('0x2f')][_0x99a2('0x31')]?_0x505bd9[_0x99a2('0x2f')]:_0x396a5f[_0x99a2('0x2b')];if(_0x58512a[_0x99a2('0x2d')]['includeAll']){_0x505bd9[_0x99a2('0x3b')]=[{'all':!![]}];}_0x505bd9=_[_0x99a2('0x37')]({},_0x505bd9,_0x58512a[_0x99a2('0x42')]);return db[_0x99a2('0x29')][_0x99a2('0x43')](_0x505bd9)['then'](handleEntityNotFound(_0x90d6de,null))[_0x99a2('0x26')](respondWithResult(_0x90d6de,null))[_0x99a2('0x44')](handleError(_0x90d6de,null));};exports[_0x99a2('0x45')]=function(_0x1a975b,_0x220b2f){return db[_0x99a2('0x29')][_0x99a2('0x45')](_0x1a975b[_0x99a2('0x46')],{})[_0x99a2('0x26')](respondWithResult(_0x220b2f,0xc9))['catch'](handleError(_0x220b2f,null));};exports['update']=function(_0x157590,_0x37849b){if(_0x157590[_0x99a2('0x46')]['id']){delete _0x157590[_0x99a2('0x46')]['id'];}return db[_0x99a2('0x29')][_0x99a2('0x43')]({'where':{'id':_0x157590['params']['id']}})[_0x99a2('0x26')](handleEntityNotFound(_0x37849b,null))[_0x99a2('0x26')](saveUpdates(_0x157590['body'],null))[_0x99a2('0x26')](respondWithResult(_0x37849b,null))[_0x99a2('0x44')](handleError(_0x37849b,null));};exports['destroy']=function(_0x12854,_0x3faeac){return db['MailServerOut'][_0x99a2('0x43')]({'where':{'id':_0x12854[_0x99a2('0x3f')]['id']}})['then'](handleEntityNotFound(_0x3faeac,null))[_0x99a2('0x26')](removeEntity(_0x3faeac,null))[_0x99a2('0x44')](handleError(_0x3faeac,null));};
\ No newline at end of file
index 18dee48..05aca18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34dc=['request-promise','path','rimraf','../../config/environment','./mailServerOut.attributes','exports','define','MailServerOut','mail_servers_out','lodash','util','../../config/logger','moment','bluebird'];(function(_0xadbaeb,_0x13c8c9){var _0x3bb7f2=function(_0x4b4eb8){while(--_0x4b4eb8){_0xadbaeb['push'](_0xadbaeb['shift']());}};_0x3bb7f2(++_0x13c8c9);}(_0x34dc,0x159));var _0xc34d=function(_0x5dae57,_0x37d1dc){_0x5dae57=_0x5dae57-0x0;var _0x497ad0=_0x34dc[_0x5dae57];return _0x497ad0;};'use strict';var _=require(_0xc34d('0x0'));var util=require(_0xc34d('0x1'));var logger=require(_0xc34d('0x2'))('api');var moment=require(_0xc34d('0x3'));var BPromise=require(_0xc34d('0x4'));var rp=require(_0xc34d('0x5'));var fs=require('fs');var path=require(_0xc34d('0x6'));var rimraf=require(_0xc34d('0x7'));var config=require(_0xc34d('0x8'));var attributes=require(_0xc34d('0x9'));module[_0xc34d('0xa')]=function(_0x314acf,_0x3ab8b8){return _0x314acf[_0xc34d('0xb')](_0xc34d('0xc'),attributes,{'tableName':_0xc34d('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1eb4=['define','MailServerOut','mail_servers_out','lodash','api','moment','bluebird','path','rimraf','../../config/environment','./mailServerOut.attributes'];(function(_0x255627,_0x57d800){var _0xca6378=function(_0x832860){while(--_0x832860){_0x255627['push'](_0x255627['shift']());}};_0xca6378(++_0x57d800);}(_0x1eb4,0xf5));var _0x41eb=function(_0x1a9701,_0x4a942b){_0x1a9701=_0x1a9701-0x0;var _0x3c60e5=_0x1eb4[_0x1a9701];return _0x3c60e5;};'use strict';var _=require(_0x41eb('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x41eb('0x1'));var moment=require(_0x41eb('0x2'));var BPromise=require(_0x41eb('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x41eb('0x4'));var rimraf=require(_0x41eb('0x5'));var config=require(_0x41eb('0x6'));var attributes=require(_0x41eb('0x7'));module['exports']=function(_0x496291,_0x3af4c2){return _0x496291[_0x41eb('0x8')](_0x41eb('0x9'),attributes,{'tableName':_0x41eb('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d457e86..5fb10e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x1fdfac,_0x4866f7){var _0xd17445=function(_0x529410){while(--_0x529410){_0x1fdfac['push'](_0x1fdfac['shift']());}};_0xd17445(++_0x4866f7);}(_0xdb28,0x106));var _0x8db2=function(_0x3fedbb,_0x5a4e5f){_0x3fedbb=_0x3fedbb-0x0;var _0x171baf=_0xdb28[_0x3fedbb];return _0x171baf;};'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
+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(_0x12d560,_0x11f8ea){var _0x14984f=function(_0x1577d2){while(--_0x1577d2){_0x12d560['push'](_0x12d560['shift']());}};_0x14984f(++_0x11f8ea);}(_0x5f66,0x1a0));var _0x65f6=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x5f66[_0x432682];return _0x463d05;};'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
index 0d40497..2b4b3ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a1c=['post','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./mailSubstatus.controller','get','isAuthenticated','/describe','describe','/:id','show'];(function(_0x343e44,_0x519af9){var _0xa5130e=function(_0xae1fa0){while(--_0xae1fa0){_0x343e44['push'](_0x343e44['shift']());}};_0xa5130e(++_0x519af9);}(_0x7a1c,0x193));var _0xc7a1=function(_0x4fafe2,_0x41997c){_0x4fafe2=_0x4fafe2-0x0;var _0x3051dc=_0x7a1c[_0x4fafe2];return _0x3051dc;};'use strict';var multer=require(_0xc7a1('0x0'));var util=require('util');var path=require(_0xc7a1('0x1'));var timeout=require(_0xc7a1('0x2'));var express=require(_0xc7a1('0x3'));var router=express[_0xc7a1('0x4')]();var fs_extra=require(_0xc7a1('0x5'));var auth=require(_0xc7a1('0x6'));var interaction=require(_0xc7a1('0x7'));var config=require('../../config/environment');var controller=require(_0xc7a1('0x8'));router[_0xc7a1('0x9')]('/',auth[_0xc7a1('0xa')](),controller['index']);router[_0xc7a1('0x9')](_0xc7a1('0xb'),auth[_0xc7a1('0xa')](),controller[_0xc7a1('0xc')]);router['get'](_0xc7a1('0xd'),auth[_0xc7a1('0xa')](),controller[_0xc7a1('0xe')]);router[_0xc7a1('0xf')]('/',auth[_0xc7a1('0xa')](),controller[_0xc7a1('0x10')]);router[_0xc7a1('0x11')]('/:id',auth[_0xc7a1('0xa')](),controller[_0xc7a1('0x12')]);router[_0xc7a1('0x13')](_0xc7a1('0xd'),auth[_0xc7a1('0xa')](),controller[_0xc7a1('0x14')]);module[_0xc7a1('0x15')]=router;
\ No newline at end of file
+var _0x7e68=['post','create','put','update','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./mailSubstatus.controller','get','index','/describe','isAuthenticated','describe','/:id','show'];(function(_0x333456,_0x510c63){var _0x32f090=function(_0x5dd93a){while(--_0x5dd93a){_0x333456['push'](_0x333456['shift']());}};_0x32f090(++_0x510c63);}(_0x7e68,0x8a));var _0x87e6=function(_0x3b3d3d,_0x39d35f){_0x3b3d3d=_0x3b3d3d-0x0;var _0x31e1fa=_0x7e68[_0x3b3d3d];return _0x31e1fa;};'use strict';var multer=require(_0x87e6('0x0'));var util=require(_0x87e6('0x1'));var path=require(_0x87e6('0x2'));var timeout=require('connect-timeout');var express=require(_0x87e6('0x3'));var router=express[_0x87e6('0x4')]();var fs_extra=require(_0x87e6('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x87e6('0x6'));var config=require(_0x87e6('0x7'));var controller=require(_0x87e6('0x8'));router[_0x87e6('0x9')]('/',auth['isAuthenticated'](),controller[_0x87e6('0xa')]);router[_0x87e6('0x9')](_0x87e6('0xb'),auth[_0x87e6('0xc')](),controller[_0x87e6('0xd')]);router[_0x87e6('0x9')](_0x87e6('0xe'),auth['isAuthenticated'](),controller[_0x87e6('0xf')]);router[_0x87e6('0x10')]('/',auth[_0x87e6('0xc')](),controller[_0x87e6('0x11')]);router[_0x87e6('0x12')](_0x87e6('0xe'),auth[_0x87e6('0xc')](),controller[_0x87e6('0x13')]);router['delete'](_0x87e6('0xe'),auth[_0x87e6('0xc')](),controller[_0x87e6('0x14')]);module[_0x87e6('0x15')]=router;
\ No newline at end of file
index ce15e4f..f83731e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc359=['name','STRING','exports'];(function(_0x517e05,_0x322ae3){var _0x1e37a7=function(_0x25cd2c){while(--_0x25cd2c){_0x517e05['push'](_0x517e05['shift']());}};_0x1e37a7(++_0x322ae3);}(_0xc359,0x1d9));var _0x9c35=function(_0x687ddc,_0x2092fa){_0x687ddc=_0x687ddc-0x0;var _0x441991=_0xc359[_0x687ddc];return _0x441991;};'use strict';var Sequelize=require('sequelize');module[_0x9c35('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x9c35('0x1'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x9c35('0x2')]}};
\ No newline at end of file
+var _0x3f8a=['name','sequelize','exports','STRING'];(function(_0x38c160,_0x1318fa){var _0x780b56=function(_0x51c44e){while(--_0x51c44e){_0x38c160['push'](_0x38c160['shift']());}};_0x780b56(++_0x1318fa);}(_0x3f8a,0x1d5));var _0xa3f8=function(_0x3b6f7e,_0x2c6e88){_0x3b6f7e=_0x3b6f7e-0x0;var _0xa6608=_0x3f8a[_0x3b6f7e];return _0xa6608;};'use strict';var Sequelize=require(_0xa3f8('0x0'));module[_0xa3f8('0x1')]={'name':{'type':Sequelize[_0xa3f8('0x2')],'unique':_0xa3f8('0x3'),'allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 060f603..abfe9b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d1f=['util','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','../../config/logger','../../config/utils','../../config/license/util','sendStatus','end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','error','stack','name','send','map','MailSubstatus','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','findAll','rows','then','catch','params','includeAll','include','create','body','update','find','eml-format','rimraf','request-promise','moment','bluebird','mustache'];(function(_0x501f75,_0x50eaae){var _0x441ff8=function(_0x457440){while(--_0x457440){_0x501f75['push'](_0x501f75['shift']());}};_0x441ff8(++_0x50eaae);}(_0x3d1f,0xd5));var _0xf3d1=function(_0x50a6d5,_0x1659f7){_0x50a6d5=_0x50a6d5-0x0;var _0x1e33bb=_0x3d1f[_0x50a6d5];return _0x1e33bb;};'use strict';var emlformat=require(_0xf3d1('0x0'));var rimraf=require(_0xf3d1('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xf3d1('0x2'));var moment=require(_0xf3d1('0x3'));var BPromise=require(_0xf3d1('0x4'));var Mustache=require(_0xf3d1('0x5'));var util=require(_0xf3d1('0x6'));var path=require('path');var sox=require(_0xf3d1('0x7'));var csv=require(_0xf3d1('0x8'));var ejs=require(_0xf3d1('0x9'));var fs=require('fs');var fs_extra=require(_0xf3d1('0xa'));var _=require(_0xf3d1('0xb'));var squel=require(_0xf3d1('0xc'));var crypto=require(_0xf3d1('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xf3d1('0xe'));var toCsv=require(_0xf3d1('0x8'));var querystring=require(_0xf3d1('0xf'));var Papa=require(_0xf3d1('0x10'));var Redis=require('ioredis');var authService=require(_0xf3d1('0x11'));var qs=require(_0xf3d1('0x12'));var as=require(_0xf3d1('0x13'));var hardwareService=require(_0xf3d1('0x14'));var logger=require(_0xf3d1('0x15'))('api');var utils=require(_0xf3d1('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xf3d1('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3f709b,_0x3f6456){_0x3f6456=_0x3f6456||0xcc;return function(_0x5f0603){if(_0x5f0603){return _0x3f709b[_0xf3d1('0x18')](_0x3f6456);}return _0x3f709b['status'](_0x3f6456)[_0xf3d1('0x19')]();};}function respondWithResult(_0x1edd27,_0x4bdb96){_0x4bdb96=_0x4bdb96||0xc8;return function(_0x4e0d46){if(_0x4e0d46){return _0x1edd27[_0xf3d1('0x1a')](_0x4bdb96)[_0xf3d1('0x1b')](_0x4e0d46);}};}function respondWithFilteredResult(_0x5b1c08,_0x1d7953){return function(_0x1d916e){if(_0x1d916e){var _0x76ca58=typeof _0x1d7953['offset']===_0xf3d1('0x1c')&&typeof _0x1d7953[_0xf3d1('0x1d')]===_0xf3d1('0x1c');var _0x1dd5bd=_0x1d916e[_0xf3d1('0x1e')];var _0x56e1bb=_0x76ca58?0x0:_0x1d7953[_0xf3d1('0x1f')];var _0x55d46d=_0x76ca58?_0x1d916e[_0xf3d1('0x1e')]:_0x1d7953[_0xf3d1('0x1f')]+_0x1d7953[_0xf3d1('0x1d')];var _0x422c01;if(_0x55d46d>=_0x1dd5bd){_0x55d46d=_0x1dd5bd;_0x422c01=0xc8;}else{_0x422c01=0xce;}_0x5b1c08[_0xf3d1('0x1a')](_0x422c01);return _0x5b1c08[_0xf3d1('0x20')](_0xf3d1('0x21'),_0x56e1bb+'-'+_0x55d46d+'/'+_0x1dd5bd)['json'](_0x1d916e);}return null;};}function patchUpdates(_0x4ee6c4){return function(_0x88e1c7){try{jsonpatch[_0xf3d1('0x22')](_0x88e1c7,_0x4ee6c4,!![]);}catch(_0x34fbc7){return BPromise[_0xf3d1('0x23')](_0x34fbc7);}return _0x88e1c7['save']();};}function saveUpdates(_0x49e3cc,_0x1bc850){return function(_0x209c31){if(_0x209c31){return _0x209c31['update'](_0x49e3cc)['then'](function(_0x41cc8b){return _0x41cc8b;});}return null;};}function removeEntity(_0x3ba031,_0x1193fb){return function(_0x2ff98d){if(_0x2ff98d){return _0x2ff98d['destroy']()['then'](function(){_0x3ba031[_0xf3d1('0x1a')](0xcc)[_0xf3d1('0x19')]();});}};}function handleEntityNotFound(_0x34e088,_0x201218){return function(_0x5b1762){if(!_0x5b1762){_0x34e088[_0xf3d1('0x18')](0x194);}return _0x5b1762;};}function handleError(_0x120d9b,_0x5cf939){_0x5cf939=_0x5cf939||0x1f4;return function(_0x305088){logger[_0xf3d1('0x24')](_0x305088[_0xf3d1('0x25')]);if(_0x305088[_0xf3d1('0x26')]){delete _0x305088['name'];}_0x120d9b[_0xf3d1('0x1a')](_0x5cf939)[_0xf3d1('0x27')](_0x305088);};}exports['index']=function(_0x3669a0,_0xefc117){var _0x4d15d4={},_0x3b4198={},_0x4adbf7={'count':0x0,'rows':[]};var _0xd9850e=_[_0xf3d1('0x28')](db[_0xf3d1('0x29')]['rawAttributes'],function(_0x51300c){return{'name':_0x51300c['fieldName'],'type':_0x51300c[_0xf3d1('0x2a')][_0xf3d1('0x2b')]};});_0x3b4198[_0xf3d1('0x2c')]=_[_0xf3d1('0x28')](_0xd9850e,_0xf3d1('0x26'));_0x3b4198[_0xf3d1('0x2d')]=_[_0xf3d1('0x2e')](_0x3669a0[_0xf3d1('0x2d')]);_0x3b4198[_0xf3d1('0x2f')]=_[_0xf3d1('0x30')](_0x3b4198[_0xf3d1('0x2c')],_0x3b4198[_0xf3d1('0x2d')]);_0x4d15d4[_0xf3d1('0x31')]=_[_0xf3d1('0x30')](_0x3b4198['model'],qs['fields'](_0x3669a0[_0xf3d1('0x2d')][_0xf3d1('0x32')]));_0x4d15d4['attributes']=_0x4d15d4['attributes'][_0xf3d1('0x33')]?_0x4d15d4[_0xf3d1('0x31')]:_0x3b4198[_0xf3d1('0x2c')];if(!_0x3669a0[_0xf3d1('0x2d')][_0xf3d1('0x34')](_0xf3d1('0x35'))){_0x4d15d4[_0xf3d1('0x1d')]=qs['limit'](_0x3669a0[_0xf3d1('0x2d')][_0xf3d1('0x1d')]);_0x4d15d4[_0xf3d1('0x1f')]=qs['offset'](_0x3669a0[_0xf3d1('0x2d')][_0xf3d1('0x1f')]);}_0x4d15d4[_0xf3d1('0x36')]=qs[_0xf3d1('0x37')](_0x3669a0[_0xf3d1('0x2d')][_0xf3d1('0x37')]);_0x4d15d4[_0xf3d1('0x38')]=qs[_0xf3d1('0x2f')](_[_0xf3d1('0x39')](_0x3669a0[_0xf3d1('0x2d')],_0x3b4198[_0xf3d1('0x2f')]),_0xd9850e);if(_0x3669a0[_0xf3d1('0x2d')][_0xf3d1('0x3a')]){_0x4d15d4[_0xf3d1('0x38')]=_['merge'](_0x4d15d4[_0xf3d1('0x38')],{'$or':_[_0xf3d1('0x28')](_0xd9850e,function(_0x839253){if(_0x839253[_0xf3d1('0x2a')]!==_0xf3d1('0x3b')){var _0x59366d={};_0x59366d[_0x839253[_0xf3d1('0x26')]]={'$like':'%'+_0x3669a0[_0xf3d1('0x2d')][_0xf3d1('0x3a')]+'%'};return _0x59366d;}})});}_0x4d15d4=_[_0xf3d1('0x3c')]({},_0x4d15d4,_0x3669a0[_0xf3d1('0x3d')]);var _0xe55dfb={'where':_0x4d15d4[_0xf3d1('0x38')]};return db[_0xf3d1('0x29')][_0xf3d1('0x1e')](_0xe55dfb)['then'](function(_0x5b2965){_0x4adbf7['count']=_0x5b2965;if(_0x3669a0[_0xf3d1('0x2d')]['includeAll']){_0x4d15d4['include']=[{'all':!![]}];}return db['MailSubstatus'][_0xf3d1('0x3e')](_0x4d15d4);})['then'](function(_0x19c70f){_0x4adbf7[_0xf3d1('0x3f')]=_0x19c70f;return _0x4adbf7;})[_0xf3d1('0x40')](respondWithFilteredResult(_0xefc117,_0x4d15d4))[_0xf3d1('0x41')](handleError(_0xefc117,null));};exports['show']=function(_0x4aa962,_0x1f15dc){var _0x1bf0df={'raw':!![],'where':{'id':_0x4aa962[_0xf3d1('0x42')]['id']}},_0x5020ee={};_0x5020ee['model']=_[_0xf3d1('0x2e')](db[_0xf3d1('0x29')]['rawAttributes']);_0x5020ee[_0xf3d1('0x2d')]=_[_0xf3d1('0x2e')](_0x4aa962[_0xf3d1('0x2d')]);_0x5020ee[_0xf3d1('0x2f')]=_['intersection'](_0x5020ee[_0xf3d1('0x2c')],_0x5020ee['query']);_0x1bf0df[_0xf3d1('0x31')]=_[_0xf3d1('0x30')](_0x5020ee[_0xf3d1('0x2c')],qs[_0xf3d1('0x32')](_0x4aa962[_0xf3d1('0x2d')]['fields']));_0x1bf0df['attributes']=_0x1bf0df[_0xf3d1('0x31')]['length']?_0x1bf0df[_0xf3d1('0x31')]:_0x5020ee[_0xf3d1('0x2c')];if(_0x4aa962['query'][_0xf3d1('0x43')]){_0x1bf0df[_0xf3d1('0x44')]=[{'all':!![]}];}_0x1bf0df=_[_0xf3d1('0x3c')]({},_0x1bf0df,_0x4aa962[_0xf3d1('0x3d')]);return db[_0xf3d1('0x29')]['find'](_0x1bf0df)[_0xf3d1('0x40')](handleEntityNotFound(_0x1f15dc,null))[_0xf3d1('0x40')](respondWithResult(_0x1f15dc,null))[_0xf3d1('0x41')](handleError(_0x1f15dc,null));};exports[_0xf3d1('0x45')]=function(_0x13e915,_0x1abd6c){return db[_0xf3d1('0x29')][_0xf3d1('0x45')](_0x13e915[_0xf3d1('0x46')],{})[_0xf3d1('0x40')](respondWithResult(_0x1abd6c,0xc9))[_0xf3d1('0x41')](handleError(_0x1abd6c,null));};exports[_0xf3d1('0x47')]=function(_0xf88af2,_0x18c6c7){if(_0xf88af2['body']['id']){delete _0xf88af2['body']['id'];}return db[_0xf3d1('0x29')]['find']({'where':{'id':_0xf88af2[_0xf3d1('0x42')]['id']}})[_0xf3d1('0x40')](handleEntityNotFound(_0x18c6c7,null))[_0xf3d1('0x40')](saveUpdates(_0xf88af2['body'],null))[_0xf3d1('0x40')](respondWithResult(_0x18c6c7,null))[_0xf3d1('0x41')](handleError(_0x18c6c7,null));};exports['destroy']=function(_0xac09ab,_0x440924){return db[_0xf3d1('0x29')][_0xf3d1('0x48')]({'where':{'id':_0xac09ab[_0xf3d1('0x42')]['id']}})[_0xf3d1('0x40')](handleEntityNotFound(_0x440924,null))[_0xf3d1('0x40')](removeEntity(_0x440924,null))[_0xf3d1('0x41')](handleError(_0x440924,null));};exports['describe']=function(_0x46104c,_0x4976d8){return db['MailSubstatus']['describe']()[_0xf3d1('0x40')](respondWithResult(_0x4976d8,null))[_0xf3d1('0x41')](handleError(_0x4976d8,null));};
\ No newline at end of file
+var _0x6f7f=['findAll','rows','catch','params','keys','includeAll','find','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','offset','limit','undefined','count','set','Content-Range','json','apply','reject','update','then','destroy','end','error','stack','name','send','index','map','rawAttributes','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','MailSubstatus','include'];(function(_0x8f4554,_0x97e1f8){var _0x2b7465=function(_0x5d8390){while(--_0x5d8390){_0x8f4554['push'](_0x8f4554['shift']());}};_0x2b7465(++_0x97e1f8);}(_0x6f7f,0x177));var _0xf6f7=function(_0x957513,_0x3c3451){_0x957513=_0x957513-0x0;var _0x49b71f=_0x6f7f[_0x957513];return _0x49b71f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf6f7('0x0'));var zipdir=require(_0xf6f7('0x1'));var jsonpatch=require(_0xf6f7('0x2'));var rp=require(_0xf6f7('0x3'));var moment=require(_0xf6f7('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xf6f7('0x5'));var util=require('util');var path=require(_0xf6f7('0x6'));var sox=require(_0xf6f7('0x7'));var csv=require(_0xf6f7('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xf6f7('0x9'));var _=require('lodash');var squel=require(_0xf6f7('0xa'));var crypto=require(_0xf6f7('0xb'));var jsforce=require(_0xf6f7('0xc'));var deskjs=require(_0xf6f7('0xd'));var toCsv=require(_0xf6f7('0x8'));var querystring=require(_0xf6f7('0xe'));var Papa=require('papaparse');var Redis=require(_0xf6f7('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf6f7('0x10'));var logger=require(_0xf6f7('0x11'))(_0xf6f7('0x12'));var utils=require(_0xf6f7('0x13'));var config=require(_0xf6f7('0x14'));var licenseUtil=require(_0xf6f7('0x15'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x47c447,_0x2493ec){_0x2493ec=_0x2493ec||0xcc;return function(_0x37f2ce){if(_0x37f2ce){return _0x47c447[_0xf6f7('0x16')](_0x2493ec);}return _0x47c447[_0xf6f7('0x17')](_0x2493ec)['end']();};}function respondWithResult(_0x568242,_0xc4fe52){_0xc4fe52=_0xc4fe52||0xc8;return function(_0x4f8d9b){if(_0x4f8d9b){return _0x568242[_0xf6f7('0x17')](_0xc4fe52)['json'](_0x4f8d9b);}};}function respondWithFilteredResult(_0x3f9293,_0x2ca201){return function(_0x35958e){if(_0x35958e){var _0x2758c0=typeof _0x2ca201[_0xf6f7('0x18')]==='undefined'&&typeof _0x2ca201[_0xf6f7('0x19')]===_0xf6f7('0x1a');var _0x566589=_0x35958e[_0xf6f7('0x1b')];var _0x438e3d=_0x2758c0?0x0:_0x2ca201[_0xf6f7('0x18')];var _0x5cc7a1=_0x2758c0?_0x35958e['count']:_0x2ca201[_0xf6f7('0x18')]+_0x2ca201[_0xf6f7('0x19')];var _0x512b07;if(_0x5cc7a1>=_0x566589){_0x5cc7a1=_0x566589;_0x512b07=0xc8;}else{_0x512b07=0xce;}_0x3f9293[_0xf6f7('0x17')](_0x512b07);return _0x3f9293[_0xf6f7('0x1c')](_0xf6f7('0x1d'),_0x438e3d+'-'+_0x5cc7a1+'/'+_0x566589)[_0xf6f7('0x1e')](_0x35958e);}return null;};}function patchUpdates(_0x3143d1){return function(_0x93bbfc){try{jsonpatch[_0xf6f7('0x1f')](_0x93bbfc,_0x3143d1,!![]);}catch(_0x564e5f){return BPromise[_0xf6f7('0x20')](_0x564e5f);}return _0x93bbfc['save']();};}function saveUpdates(_0x58ca0f,_0x66e5e4){return function(_0x532ee4){if(_0x532ee4){return _0x532ee4[_0xf6f7('0x21')](_0x58ca0f)[_0xf6f7('0x22')](function(_0x50b550){return _0x50b550;});}return null;};}function removeEntity(_0x3ce38d,_0x5ec44f){return function(_0x4c349d){if(_0x4c349d){return _0x4c349d[_0xf6f7('0x23')]()[_0xf6f7('0x22')](function(){_0x3ce38d[_0xf6f7('0x17')](0xcc)[_0xf6f7('0x24')]();});}};}function handleEntityNotFound(_0xa903ff,_0x5d3370){return function(_0x4c1ecd){if(!_0x4c1ecd){_0xa903ff[_0xf6f7('0x16')](0x194);}return _0x4c1ecd;};}function handleError(_0x2620a4,_0x277023){_0x277023=_0x277023||0x1f4;return function(_0x1de269){logger[_0xf6f7('0x25')](_0x1de269[_0xf6f7('0x26')]);if(_0x1de269['name']){delete _0x1de269[_0xf6f7('0x27')];}_0x2620a4[_0xf6f7('0x17')](_0x277023)[_0xf6f7('0x28')](_0x1de269);};}exports[_0xf6f7('0x29')]=function(_0x35a384,_0x3556e5){var _0x3be42f={},_0x4b3100={},_0x47f9ef={'count':0x0,'rows':[]};var _0x4bd86c=_[_0xf6f7('0x2a')](db['MailSubstatus'][_0xf6f7('0x2b')],function(_0x35b586){return{'name':_0x35b586['fieldName'],'type':_0x35b586['type'][_0xf6f7('0x2c')]};});_0x4b3100[_0xf6f7('0x2d')]=_[_0xf6f7('0x2a')](_0x4bd86c,'name');_0x4b3100[_0xf6f7('0x2e')]=_['keys'](_0x35a384[_0xf6f7('0x2e')]);_0x4b3100[_0xf6f7('0x2f')]=_[_0xf6f7('0x30')](_0x4b3100[_0xf6f7('0x2d')],_0x4b3100[_0xf6f7('0x2e')]);_0x3be42f[_0xf6f7('0x31')]=_[_0xf6f7('0x30')](_0x4b3100[_0xf6f7('0x2d')],qs[_0xf6f7('0x32')](_0x35a384[_0xf6f7('0x2e')][_0xf6f7('0x32')]));_0x3be42f[_0xf6f7('0x31')]=_0x3be42f['attributes'][_0xf6f7('0x33')]?_0x3be42f['attributes']:_0x4b3100[_0xf6f7('0x2d')];if(!_0x35a384[_0xf6f7('0x2e')][_0xf6f7('0x34')](_0xf6f7('0x35'))){_0x3be42f[_0xf6f7('0x19')]=qs[_0xf6f7('0x19')](_0x35a384[_0xf6f7('0x2e')][_0xf6f7('0x19')]);_0x3be42f[_0xf6f7('0x18')]=qs['offset'](_0x35a384['query'][_0xf6f7('0x18')]);}_0x3be42f[_0xf6f7('0x36')]=qs[_0xf6f7('0x37')](_0x35a384[_0xf6f7('0x2e')][_0xf6f7('0x37')]);_0x3be42f[_0xf6f7('0x38')]=qs[_0xf6f7('0x2f')](_[_0xf6f7('0x39')](_0x35a384[_0xf6f7('0x2e')],_0x4b3100[_0xf6f7('0x2f')]),_0x4bd86c);if(_0x35a384[_0xf6f7('0x2e')][_0xf6f7('0x3a')]){_0x3be42f[_0xf6f7('0x38')]=_[_0xf6f7('0x3b')](_0x3be42f[_0xf6f7('0x38')],{'$or':_[_0xf6f7('0x2a')](_0x4bd86c,function(_0x4cd474){if(_0x4cd474['type']!==_0xf6f7('0x3c')){var _0x1de44f={};_0x1de44f[_0x4cd474[_0xf6f7('0x27')]]={'$like':'%'+_0x35a384[_0xf6f7('0x2e')][_0xf6f7('0x3a')]+'%'};return _0x1de44f;}})});}_0x3be42f=_[_0xf6f7('0x3b')]({},_0x3be42f,_0x35a384['options']);var _0x309002={'where':_0x3be42f[_0xf6f7('0x38')]};return db[_0xf6f7('0x3d')][_0xf6f7('0x1b')](_0x309002)['then'](function(_0x489c39){_0x47f9ef[_0xf6f7('0x1b')]=_0x489c39;if(_0x35a384['query']['includeAll']){_0x3be42f[_0xf6f7('0x3e')]=[{'all':!![]}];}return db[_0xf6f7('0x3d')][_0xf6f7('0x3f')](_0x3be42f);})['then'](function(_0x1ecb03){_0x47f9ef[_0xf6f7('0x40')]=_0x1ecb03;return _0x47f9ef;})[_0xf6f7('0x22')](respondWithFilteredResult(_0x3556e5,_0x3be42f))[_0xf6f7('0x41')](handleError(_0x3556e5,null));};exports['show']=function(_0x50738f,_0x44c326){var _0x49bfca={'raw':!![],'where':{'id':_0x50738f[_0xf6f7('0x42')]['id']}},_0x4788f0={};_0x4788f0['model']=_[_0xf6f7('0x43')](db['MailSubstatus']['rawAttributes']);_0x4788f0['query']=_[_0xf6f7('0x43')](_0x50738f[_0xf6f7('0x2e')]);_0x4788f0[_0xf6f7('0x2f')]=_[_0xf6f7('0x30')](_0x4788f0['model'],_0x4788f0[_0xf6f7('0x2e')]);_0x49bfca['attributes']=_[_0xf6f7('0x30')](_0x4788f0['model'],qs['fields'](_0x50738f[_0xf6f7('0x2e')][_0xf6f7('0x32')]));_0x49bfca[_0xf6f7('0x31')]=_0x49bfca['attributes'][_0xf6f7('0x33')]?_0x49bfca[_0xf6f7('0x31')]:_0x4788f0['model'];if(_0x50738f['query'][_0xf6f7('0x44')]){_0x49bfca['include']=[{'all':!![]}];}_0x49bfca=_[_0xf6f7('0x3b')]({},_0x49bfca,_0x50738f['options']);return db['MailSubstatus'][_0xf6f7('0x45')](_0x49bfca)['then'](handleEntityNotFound(_0x44c326,null))[_0xf6f7('0x22')](respondWithResult(_0x44c326,null))['catch'](handleError(_0x44c326,null));};exports[_0xf6f7('0x46')]=function(_0x4b55d2,_0x4afd83){return db[_0xf6f7('0x3d')][_0xf6f7('0x46')](_0x4b55d2[_0xf6f7('0x47')],{})[_0xf6f7('0x22')](respondWithResult(_0x4afd83,0xc9))[_0xf6f7('0x41')](handleError(_0x4afd83,null));};exports[_0xf6f7('0x21')]=function(_0x1d944a,_0xa5a85){if(_0x1d944a[_0xf6f7('0x47')]['id']){delete _0x1d944a[_0xf6f7('0x47')]['id'];}return db[_0xf6f7('0x3d')][_0xf6f7('0x45')]({'where':{'id':_0x1d944a['params']['id']}})[_0xf6f7('0x22')](handleEntityNotFound(_0xa5a85,null))['then'](saveUpdates(_0x1d944a[_0xf6f7('0x47')],null))[_0xf6f7('0x22')](respondWithResult(_0xa5a85,null))[_0xf6f7('0x41')](handleError(_0xa5a85,null));};exports['destroy']=function(_0x142cb4,_0x1cc654){return db[_0xf6f7('0x3d')][_0xf6f7('0x45')]({'where':{'id':_0x142cb4[_0xf6f7('0x42')]['id']}})['then'](handleEntityNotFound(_0x1cc654,null))[_0xf6f7('0x22')](removeEntity(_0x1cc654,null))['catch'](handleError(_0x1cc654,null));};exports[_0xf6f7('0x48')]=function(_0x1bfc9a,_0x39df53){return db['MailSubstatus']['describe']()[_0xf6f7('0x22')](respondWithResult(_0x39df53,null))[_0xf6f7('0x41')](handleError(_0x39df53,null));};
\ No newline at end of file
index f946059..6f335dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ac7=['exports','../../mysqldb','MailSubstatus','setMaxListeners','emit','hook'];(function(_0x19a49f,_0x444d74){var _0x5351ae=function(_0x58b1ed){while(--_0x58b1ed){_0x19a49f['push'](_0x19a49f['shift']());}};_0x5351ae(++_0x444d74);}(_0x7ac7,0x115));var _0x77ac=function(_0x3d7cbf,_0x42f54d){_0x3d7cbf=_0x3d7cbf-0x0;var _0x5e8091=_0x7ac7[_0x3d7cbf];return _0x5e8091;};'use strict';var EventEmitter=require('events');var MailSubstatus=require(_0x77ac('0x0'))['db'][_0x77ac('0x1')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents[_0x77ac('0x2')](0x0);var events={'afterUpdate':'update'};function emitEvent(_0x1d460a){return function(_0x322e70,_0x1a7e5b,_0x3cf3b1){MailSubstatusEvents[_0x77ac('0x3')](_0x1d460a+':'+_0x322e70['id'],_0x322e70);MailSubstatusEvents['emit'](_0x1d460a,_0x322e70);_0x3cf3b1(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];MailSubstatus[_0x77ac('0x4')](e,emitEvent(event));}}module[_0x77ac('0x5')]=MailSubstatusEvents;
\ No newline at end of file
+var _0x7c63=['../../mysqldb','MailSubstatus','update','emit','hasOwnProperty','events'];(function(_0x166d93,_0x301f09){var _0xba708=function(_0x349bf7){while(--_0x349bf7){_0x166d93['push'](_0x166d93['shift']());}};_0xba708(++_0x301f09);}(_0x7c63,0x7d));var _0x37c6=function(_0xd72b87,_0x1361e8){_0xd72b87=_0xd72b87-0x0;var _0x416e4a=_0x7c63[_0xd72b87];return _0x416e4a;};'use strict';var EventEmitter=require(_0x37c6('0x0'));var MailSubstatus=require(_0x37c6('0x1'))['db'][_0x37c6('0x2')];var MailSubstatusEvents=new EventEmitter();MailSubstatusEvents['setMaxListeners'](0x0);var events={'afterUpdate':_0x37c6('0x3')};function emitEvent(_0x46622c){return function(_0x2b232a,_0x91d74c,_0x15a929){MailSubstatusEvents[_0x37c6('0x4')](_0x46622c+':'+_0x2b232a['id'],_0x2b232a);MailSubstatusEvents[_0x37c6('0x4')](_0x46622c,_0x2b232a);_0x15a929(null);};}for(var e in events){if(events[_0x37c6('0x5')](e)){var event=events[e];MailSubstatus['hook'](e,emitEvent(event));}}module['exports']=MailSubstatusEvents;
\ No newline at end of file
index 55dbd1f..6aa5550 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7e6=['Condition','update','name','mailSubstatus','_previousDataValues','then','./mailSubstatus.attributes','exports','models','define','MailSubstatus','mail_substatuses'];(function(_0x47cf13,_0x55aca4){var _0x44ade5=function(_0x16b317){while(--_0x16b317){_0x47cf13['push'](_0x47cf13['shift']());}};_0x44ade5(++_0x55aca4);}(_0xf7e6,0xae));var _0x6f7e=function(_0x2cf3f4,_0x424028){_0x2cf3f4=_0x2cf3f4-0x0;var _0x334d29=_0xf7e6[_0x2cf3f4];return _0x334d29;};'use strict';var attributes=require(_0x6f7e('0x0'));module[_0x6f7e('0x1')]=function(_0x2b9796){var _0x34cf2a=_0x2b9796[_0x6f7e('0x2')];return _0x2b9796[_0x6f7e('0x3')](_0x6f7e('0x4'),attributes,{'tableName':_0x6f7e('0x5'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x244ae0,_0x4b80d8,_0x2f5bd9){return _0x34cf2a[_0x6f7e('0x6')][_0x6f7e('0x7')]({'value':_0x244ae0[_0x6f7e('0x8')]},{'where':{'field':_0x6f7e('0x9'),'value':_0x244ae0[_0x6f7e('0xa')][_0x6f7e('0x8')]}})[_0x6f7e('0xb')](function(){_0x2f5bd9();})['catch'](function(_0x19cee1){_0x2f5bd9(_0x19cee1);});}}});};
\ No newline at end of file
+var _0x3325=['Condition','update','name','_previousDataValues','catch','models','define','MailSubstatus'];(function(_0x5a0ad9,_0x46fd7d){var _0x5af929=function(_0x11b5ec){while(--_0x11b5ec){_0x5a0ad9['push'](_0x5a0ad9['shift']());}};_0x5af929(++_0x46fd7d);}(_0x3325,0x155));var _0x5332=function(_0x4a7529,_0xba0830){_0x4a7529=_0x4a7529-0x0;var _0x254252=_0x3325[_0x4a7529];return _0x254252;};'use strict';var attributes=require('./mailSubstatus.attributes');module['exports']=function(_0xd02b3c){var _0x12ef65=_0xd02b3c[_0x5332('0x0')];return _0xd02b3c[_0x5332('0x1')](_0x5332('0x2'),attributes,{'tableName':'mail_substatuses','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterUpdate':function(_0x480c27,_0x4ba8b2,_0x40b456){return _0x12ef65[_0x5332('0x3')][_0x5332('0x4')]({'value':_0x480c27[_0x5332('0x5')]},{'where':{'field':'mailSubstatus','value':_0x480c27[_0x5332('0x6')][_0x5332('0x5')]}})['then'](function(){_0x40b456();})[_0x5332('0x7')](function(_0x540377){_0x40b456(_0x540377);});}}});};
\ No newline at end of file
index cc0f905..018873b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4725=['../../config/environment','jayson/promise','client','info','MailSubstatus,\x20%s,\x20%s','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc'];(function(_0xf8ed5d,_0x1bf15d){var _0x995a47=function(_0x25f60f){while(--_0x25f60f){_0xf8ed5d['push'](_0xf8ed5d['shift']());}};_0x995a47(++_0x1bf15d);}(_0x4725,0xdc));var _0x5472=function(_0x1c184c,_0x4a271f){_0x1c184c=_0x1c184c-0x0;var _0x21f5cd=_0x4725[_0x1c184c];return _0x21f5cd;};'use strict';var _=require(_0x5472('0x0'));var util=require(_0x5472('0x1'));var moment=require(_0x5472('0x2'));var BPromise=require(_0x5472('0x3'));var rs=require(_0x5472('0x4'));var fs=require('fs');var Redis=require(_0x5472('0x5'));var db=require(_0x5472('0x6'))['db'];var utils=require(_0x5472('0x7'));var logger=require(_0x5472('0x8'))(_0x5472('0x9'));var config=require(_0x5472('0xa'));var jayson=require(_0x5472('0xb'));var client=jayson[_0x5472('0xc')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2e820a,_0x46ba95,_0x4cc8f5){return new BPromise(function(_0x4be3aa,_0x581f25){return client['request'](_0x2e820a,_0x4cc8f5)['then'](function(_0x1ddac0){logger[_0x5472('0xd')](_0x5472('0xe'),_0x46ba95,'request\x20sent');logger[_0x5472('0xf')](_0x5472('0x10'),_0x46ba95,'request\x20sent',JSON[_0x5472('0x11')](_0x1ddac0));if(_0x1ddac0[_0x5472('0x12')]){if(_0x1ddac0[_0x5472('0x12')]['code']===0x1f4){logger[_0x5472('0x12')](_0x5472('0xe'),_0x46ba95,_0x1ddac0[_0x5472('0x12')][_0x5472('0x13')]);return _0x581f25(_0x1ddac0[_0x5472('0x12')][_0x5472('0x13')]);}logger['error'](_0x5472('0xe'),_0x46ba95,_0x1ddac0[_0x5472('0x12')]['message']);return _0x4be3aa(_0x1ddac0[_0x5472('0x12')]['message']);}else{logger[_0x5472('0xd')]('MailSubstatus,\x20%s,\x20%s',_0x46ba95,_0x5472('0x14'));_0x4be3aa(_0x1ddac0[_0x5472('0x15')][_0x5472('0x13')]);}})[_0x5472('0x16')](function(_0x27680b){logger['error']('MailSubstatus,\x20%s,\x20%s',_0x46ba95,_0x27680b);_0x581f25(_0x27680b);});});}
\ No newline at end of file
+var _0xff4f=['client','http','info','request\x20sent','debug','MailSubstatus,\x20%s,\x20%s,\x20%s','stringify','error','MailSubstatus,\x20%s,\x20%s','message','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x58bfd4,_0x2b9431){var _0x3268d3=function(_0x1afb14){while(--_0x1afb14){_0x58bfd4['push'](_0x58bfd4['shift']());}};_0x3268d3(++_0x2b9431);}(_0xff4f,0x182));var _0xfff4=function(_0xd008d3,_0x46c427){_0xd008d3=_0xd008d3-0x0;var _0xa5f9ba=_0xff4f[_0xd008d3];return _0xa5f9ba;};'use strict';var _=require('lodash');var util=require(_0xfff4('0x0'));var moment=require(_0xfff4('0x1'));var BPromise=require(_0xfff4('0x2'));var rs=require(_0xfff4('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfff4('0x4'))['db'];var utils=require(_0xfff4('0x5'));var logger=require(_0xfff4('0x6'))(_0xfff4('0x7'));var config=require(_0xfff4('0x8'));var jayson=require(_0xfff4('0x9'));var client=jayson[_0xfff4('0xa')][_0xfff4('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1cfa2a,_0x21f76c,_0x206c46){return new BPromise(function(_0x3c27ed,_0x25b8f7){return client['request'](_0x1cfa2a,_0x206c46)['then'](function(_0x132d05){logger[_0xfff4('0xc')]('MailSubstatus,\x20%s,\x20%s',_0x21f76c,_0xfff4('0xd'));logger[_0xfff4('0xe')](_0xfff4('0xf'),_0x21f76c,_0xfff4('0xd'),JSON[_0xfff4('0x10')](_0x132d05));if(_0x132d05['error']){if(_0x132d05['error']['code']===0x1f4){logger[_0xfff4('0x11')](_0xfff4('0x12'),_0x21f76c,_0x132d05[_0xfff4('0x11')][_0xfff4('0x13')]);return _0x25b8f7(_0x132d05[_0xfff4('0x11')][_0xfff4('0x13')]);}logger[_0xfff4('0x11')]('MailSubstatus,\x20%s,\x20%s',_0x21f76c,_0x132d05[_0xfff4('0x11')]['message']);return _0x3c27ed(_0x132d05[_0xfff4('0x11')]['message']);}else{logger[_0xfff4('0xc')](_0xfff4('0x12'),_0x21f76c,_0xfff4('0xd'));_0x3c27ed(_0x132d05[_0xfff4('0x14')][_0xfff4('0x13')]);}})[_0xfff4('0x15')](function(_0xdc665c){logger[_0xfff4('0x11')]('MailSubstatus,\x20%s,\x20%s',_0x21f76c,_0xdc665c);_0x25b8f7(_0xdc665c);});});}
\ No newline at end of file
index 20afdea..62f1c21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfe63=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./mailTransferReport.controller','isAuthenticated','get','describe','/:id','show','post','create','put','update','delete','destroy','path','connect-timeout'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xfe63,0x83));var _0x3fe6=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xfe63[_0x20a584];return _0x4b41a8;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x3fe6('0x0'));var timeout=require(_0x3fe6('0x1'));var express=require(_0x3fe6('0x2'));var router=express['Router']();var fs_extra=require(_0x3fe6('0x3'));var auth=require(_0x3fe6('0x4'));var interaction=require(_0x3fe6('0x5'));var config=require(_0x3fe6('0x6'));var controller=require(_0x3fe6('0x7'));router['get']('/',auth[_0x3fe6('0x8')](),controller['index']);router[_0x3fe6('0x9')]('/describe',auth[_0x3fe6('0x8')](),controller[_0x3fe6('0xa')]);router[_0x3fe6('0x9')](_0x3fe6('0xb'),auth[_0x3fe6('0x8')](),controller[_0x3fe6('0xc')]);router[_0x3fe6('0xd')]('/',auth[_0x3fe6('0x8')](),controller[_0x3fe6('0xe')]);router[_0x3fe6('0xf')](_0x3fe6('0xb'),auth[_0x3fe6('0x8')](),controller[_0x3fe6('0x10')]);router[_0x3fe6('0x11')](_0x3fe6('0xb'),auth[_0x3fe6('0x8')](),controller[_0x3fe6('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xe011=['post','create','put','update','delete','destroy','multer','util','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated','index','/describe','describe','/:id'];(function(_0x12dc31,_0x337050){var _0x15f0a2=function(_0xba0b9c){while(--_0xba0b9c){_0x12dc31['push'](_0x12dc31['shift']());}};_0x15f0a2(++_0x337050);}(_0xe011,0x1bb));var _0x1e01=function(_0x4cce65,_0x40021e){_0x4cce65=_0x4cce65-0x0;var _0x4d1b45=_0xe011[_0x4cce65];return _0x4d1b45;};'use strict';var multer=require(_0x1e01('0x0'));var util=require(_0x1e01('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x1e01('0x2'));var router=express[_0x1e01('0x3')]();var fs_extra=require(_0x1e01('0x4'));var auth=require(_0x1e01('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x1e01('0x6'));var controller=require('./mailTransferReport.controller');router[_0x1e01('0x7')]('/',auth[_0x1e01('0x8')](),controller[_0x1e01('0x9')]);router[_0x1e01('0x7')](_0x1e01('0xa'),auth[_0x1e01('0x8')](),controller[_0x1e01('0xb')]);router[_0x1e01('0x7')](_0x1e01('0xc'),auth['isAuthenticated'](),controller['show']);router[_0x1e01('0xd')]('/',auth['isAuthenticated'](),controller[_0x1e01('0xe')]);router[_0x1e01('0xf')]('/:id',auth['isAuthenticated'](),controller[_0x1e01('0x10')]);router[_0x1e01('0x11')]('/:id',auth['isAuthenticated'](),controller[_0x1e01('0x12')]);module['exports']=router;
\ No newline at end of file
index 82dadf1..52b4693 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['ENUM','account','agent','queue','NOW','exports','STRING'];(function(_0x8385f3,_0x53f26b){var _0x50c271=function(_0x51cb4f){while(--_0x51cb4f){_0x8385f3['push'](_0x8385f3['shift']());}};_0x50c271(++_0x53f26b);}(_0x9c44,0x178));var _0x49c4=function(_0x1caf6a,_0x26a5bf){_0x1caf6a=_0x1caf6a-0x0;var _0x1bf493=_0x9c44[_0x1caf6a];return _0x1bf493;};'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 _0x008c=['ENUM','agent','queue','DATE','NOW','moment','sequelize','exports','STRING'];(function(_0x16e7e6,_0x41e0f7){var _0x4506e8=function(_0x5ccc59){while(--_0x5ccc59){_0x16e7e6['push'](_0x16e7e6['shift']());}};_0x4506e8(++_0x41e0f7);}(_0x008c,0x188));var _0xc008=function(_0x5a6ef9,_0x1c56d3){_0x5a6ef9=_0x5a6ef9-0x0;var _0x133ba2=_0x008c[_0x5a6ef9];return _0x133ba2;};'use strict';var moment=require(_0xc008('0x0'));var Sequelize=require(_0xc008('0x1'));module[_0xc008('0x2')]={'uniqueid':{'type':Sequelize[_0xc008('0x3')],'allowNull':![]},'type':{'type':Sequelize[_0xc008('0x4')]('account',_0xc008('0x5'),_0xc008('0x6')),'allowNull':![],'defaultValue':_0xc008('0x6')},'transferredAt':{'type':Sequelize[_0xc008('0x7')],'allowNull':![],'defaultValue':Sequelize[_0xc008('0x8')]}};
\ No newline at end of file
index 0354014..f7fa249 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe73b=['zip-dir','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','count','limit','Content-Range','reject','save','update','then','destroy','stack','name','send','index','map','rawAttributes','type','key','model','keys','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','filter','merge','where','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','MailTransferReport','find','create','body','describe','rimraf'];(function(_0x258ecf,_0x3777b2){var _0x5b2966=function(_0x5f5340){while(--_0x5f5340){_0x258ecf['push'](_0x258ecf['shift']());}};_0x5b2966(++_0x3777b2);}(_0xe73b,0x162));var _0xbe73=function(_0x1b5d5f,_0x5ed766){_0x1b5d5f=_0x1b5d5f-0x0;var _0x3c9347=_0xe73b[_0x1b5d5f];return _0x3c9347;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xbe73('0x0'));var zipdir=require(_0xbe73('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xbe73('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xbe73('0x3'));var path=require(_0xbe73('0x4'));var sox=require(_0xbe73('0x5'));var csv=require(_0xbe73('0x6'));var ejs=require(_0xbe73('0x7'));var fs=require('fs');var fs_extra=require(_0xbe73('0x8'));var _=require(_0xbe73('0x9'));var squel=require(_0xbe73('0xa'));var crypto=require('crypto');var jsforce=require(_0xbe73('0xb'));var deskjs=require('desk.js');var toCsv=require(_0xbe73('0x6'));var querystring=require(_0xbe73('0xc'));var Papa=require(_0xbe73('0xd'));var Redis=require('ioredis');var authService=require(_0xbe73('0xe'));var qs=require(_0xbe73('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbe73('0x10'));var logger=require(_0xbe73('0x11'))(_0xbe73('0x12'));var utils=require('../../config/utils');var config=require(_0xbe73('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0xbe73('0x14'))['db'];function respondWithStatusCode(_0x7b3b00,_0x4d8866){_0x4d8866=_0x4d8866||0xcc;return function(_0x171168){if(_0x171168){return _0x7b3b00[_0xbe73('0x15')](_0x4d8866);}return _0x7b3b00[_0xbe73('0x16')](_0x4d8866)['end']();};}function respondWithResult(_0x4af1ca,_0x1b9fcc){_0x1b9fcc=_0x1b9fcc||0xc8;return function(_0x56e7c8){if(_0x56e7c8){return _0x4af1ca[_0xbe73('0x16')](_0x1b9fcc)[_0xbe73('0x17')](_0x56e7c8);}};}function respondWithFilteredResult(_0x35e95c,_0x5c9bfc){return function(_0x426351){if(_0x426351){var _0x34ca28=typeof _0x5c9bfc[_0xbe73('0x18')]===_0xbe73('0x19')&&typeof _0x5c9bfc['limit']==='undefined';var _0x2b040e=_0x426351[_0xbe73('0x1a')];var _0x5d8b77=_0x34ca28?0x0:_0x5c9bfc[_0xbe73('0x18')];var _0x117046=_0x34ca28?_0x426351['count']:_0x5c9bfc[_0xbe73('0x18')]+_0x5c9bfc[_0xbe73('0x1b')];var _0x2c918c;if(_0x117046>=_0x2b040e){_0x117046=_0x2b040e;_0x2c918c=0xc8;}else{_0x2c918c=0xce;}_0x35e95c[_0xbe73('0x16')](_0x2c918c);return _0x35e95c['set'](_0xbe73('0x1c'),_0x5d8b77+'-'+_0x117046+'/'+_0x2b040e)[_0xbe73('0x17')](_0x426351);}return null;};}function patchUpdates(_0x5ba248){return function(_0x18ec4c){try{jsonpatch['apply'](_0x18ec4c,_0x5ba248,!![]);}catch(_0x128f36){return BPromise[_0xbe73('0x1d')](_0x128f36);}return _0x18ec4c[_0xbe73('0x1e')]();};}function saveUpdates(_0x4076ef,_0x3ea357){return function(_0x3586b2){if(_0x3586b2){return _0x3586b2[_0xbe73('0x1f')](_0x4076ef)[_0xbe73('0x20')](function(_0x584964){return _0x584964;});}return null;};}function removeEntity(_0x2af505,_0x261d00){return function(_0x2f283f){if(_0x2f283f){return _0x2f283f[_0xbe73('0x21')]()[_0xbe73('0x20')](function(){_0x2af505['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x40c07d,_0x39df45){return function(_0x4651ae){if(!_0x4651ae){_0x40c07d[_0xbe73('0x15')](0x194);}return _0x4651ae;};}function handleError(_0x57ed08,_0x304334){_0x304334=_0x304334||0x1f4;return function(_0xdb03f4){logger['error'](_0xdb03f4[_0xbe73('0x22')]);if(_0xdb03f4['name']){delete _0xdb03f4[_0xbe73('0x23')];}_0x57ed08[_0xbe73('0x16')](_0x304334)[_0xbe73('0x24')](_0xdb03f4);};}exports[_0xbe73('0x25')]=function(_0x38d721,_0x369569){var _0x8c8c82={},_0x3c01f5={},_0x3be1ec={'count':0x0,'rows':[]};var _0x5198a4=_[_0xbe73('0x26')](db['MailTransferReport'][_0xbe73('0x27')],function(_0x1dab74){return{'name':_0x1dab74['fieldName'],'type':_0x1dab74[_0xbe73('0x28')][_0xbe73('0x29')]};});_0x3c01f5[_0xbe73('0x2a')]=_[_0xbe73('0x26')](_0x5198a4,'name');_0x3c01f5['query']=_[_0xbe73('0x2b')](_0x38d721['query']);_0x3c01f5[_0xbe73('0x2c')]=_[_0xbe73('0x2d')](_0x3c01f5['model'],_0x3c01f5[_0xbe73('0x2e')]);_0x8c8c82[_0xbe73('0x2f')]=_[_0xbe73('0x2d')](_0x3c01f5[_0xbe73('0x2a')],qs[_0xbe73('0x30')](_0x38d721[_0xbe73('0x2e')][_0xbe73('0x30')]));_0x8c8c82['attributes']=_0x8c8c82[_0xbe73('0x2f')][_0xbe73('0x31')]?_0x8c8c82[_0xbe73('0x2f')]:_0x3c01f5['model'];if(!_0x38d721[_0xbe73('0x2e')][_0xbe73('0x32')](_0xbe73('0x33'))){_0x8c8c82[_0xbe73('0x1b')]=qs[_0xbe73('0x1b')](_0x38d721[_0xbe73('0x2e')][_0xbe73('0x1b')]);_0x8c8c82[_0xbe73('0x18')]=qs[_0xbe73('0x18')](_0x38d721[_0xbe73('0x2e')][_0xbe73('0x18')]);}_0x8c8c82[_0xbe73('0x34')]=qs[_0xbe73('0x35')](_0x38d721['query'][_0xbe73('0x35')]);_0x8c8c82['where']=qs[_0xbe73('0x2c')](_['pick'](_0x38d721[_0xbe73('0x2e')],_0x3c01f5['filters']),_0x5198a4);if(_0x38d721[_0xbe73('0x2e')][_0xbe73('0x36')]){_0x8c8c82['where']=_[_0xbe73('0x37')](_0x8c8c82[_0xbe73('0x38')],{'$or':_[_0xbe73('0x26')](_0x5198a4,function(_0x56e984){if(_0x56e984[_0xbe73('0x28')]!==_0xbe73('0x39')){var _0x53cba7={};_0x53cba7[_0x56e984['name']]={'$like':'%'+_0x38d721['query'][_0xbe73('0x36')]+'%'};return _0x53cba7;}})});}_0x8c8c82=_[_0xbe73('0x37')]({},_0x8c8c82,_0x38d721[_0xbe73('0x3a')]);var _0x2f0bec={'where':_0x8c8c82['where']};return db['MailTransferReport'][_0xbe73('0x1a')](_0x2f0bec)[_0xbe73('0x20')](function(_0x489b0f){_0x3be1ec[_0xbe73('0x1a')]=_0x489b0f;if(_0x38d721[_0xbe73('0x2e')][_0xbe73('0x3b')]){_0x8c8c82[_0xbe73('0x3c')]=[{'all':!![]}];}return db['MailTransferReport'][_0xbe73('0x3d')](_0x8c8c82);})[_0xbe73('0x20')](function(_0x40ed1e){_0x3be1ec[_0xbe73('0x3e')]=_0x40ed1e;return _0x3be1ec;})['then'](respondWithFilteredResult(_0x369569,_0x8c8c82))[_0xbe73('0x3f')](handleError(_0x369569,null));};exports[_0xbe73('0x40')]=function(_0x234bc3,_0x28ba5c){var _0xea733c={'raw':!![],'where':{'id':_0x234bc3[_0xbe73('0x41')]['id']}},_0xc60948={};_0xc60948[_0xbe73('0x2a')]=_[_0xbe73('0x2b')](db[_0xbe73('0x42')][_0xbe73('0x27')]);_0xc60948['query']=_[_0xbe73('0x2b')](_0x234bc3[_0xbe73('0x2e')]);_0xc60948[_0xbe73('0x2c')]=_[_0xbe73('0x2d')](_0xc60948[_0xbe73('0x2a')],_0xc60948[_0xbe73('0x2e')]);_0xea733c[_0xbe73('0x2f')]=_['intersection'](_0xc60948[_0xbe73('0x2a')],qs['fields'](_0x234bc3[_0xbe73('0x2e')]['fields']));_0xea733c['attributes']=_0xea733c['attributes'][_0xbe73('0x31')]?_0xea733c[_0xbe73('0x2f')]:_0xc60948[_0xbe73('0x2a')];if(_0x234bc3['query'][_0xbe73('0x3b')]){_0xea733c['include']=[{'all':!![]}];}_0xea733c=_[_0xbe73('0x37')]({},_0xea733c,_0x234bc3[_0xbe73('0x3a')]);return db[_0xbe73('0x42')][_0xbe73('0x43')](_0xea733c)['then'](handleEntityNotFound(_0x28ba5c,null))['then'](respondWithResult(_0x28ba5c,null))[_0xbe73('0x3f')](handleError(_0x28ba5c,null));};exports[_0xbe73('0x44')]=function(_0x1f9af9,_0x442d6e){return db[_0xbe73('0x42')][_0xbe73('0x44')](_0x1f9af9[_0xbe73('0x45')],{})[_0xbe73('0x20')](respondWithResult(_0x442d6e,0xc9))[_0xbe73('0x3f')](handleError(_0x442d6e,null));};exports[_0xbe73('0x1f')]=function(_0x2845ec,_0x2f9664){if(_0x2845ec['body']['id']){delete _0x2845ec[_0xbe73('0x45')]['id'];}return db[_0xbe73('0x42')][_0xbe73('0x43')]({'where':{'id':_0x2845ec['params']['id']}})['then'](handleEntityNotFound(_0x2f9664,null))[_0xbe73('0x20')](saveUpdates(_0x2845ec['body'],null))[_0xbe73('0x20')](respondWithResult(_0x2f9664,null))[_0xbe73('0x3f')](handleError(_0x2f9664,null));};exports[_0xbe73('0x21')]=function(_0x95a4e1,_0x605770){return db[_0xbe73('0x42')][_0xbe73('0x43')]({'where':{'id':_0x95a4e1[_0xbe73('0x41')]['id']}})[_0xbe73('0x20')](handleEntityNotFound(_0x605770,null))[_0xbe73('0x20')](removeEntity(_0x605770,null))['catch'](handleError(_0x605770,null));};exports[_0xbe73('0x46')]=function(_0x3565a7,_0x5a3306){return db[_0xbe73('0x42')][_0xbe73('0x46')]()['then'](respondWithResult(_0x5a3306,null))[_0xbe73('0x3f')](handleError(_0x5a3306,null));};
\ No newline at end of file
+var _0xb580=['util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','reject','save','update','destroy','then','sendStatus','error','stack','name','send','index','map','MailTransferReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','show','params','find','catch','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache'];(function(_0x572473,_0x37571e){var _0x312195=function(_0x934daa){while(--_0x934daa){_0x572473['push'](_0x572473['shift']());}};_0x312195(++_0x37571e);}(_0xb580,0x184));var _0x0b58=function(_0xee3e0f,_0x5da219){_0xee3e0f=_0xee3e0f-0x0;var _0x2069dd=_0xb580[_0xee3e0f];return _0x2069dd;};'use strict';var emlformat=require(_0x0b58('0x0'));var rimraf=require(_0x0b58('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x0b58('0x2'));var rp=require(_0x0b58('0x3'));var moment=require(_0x0b58('0x4'));var BPromise=require(_0x0b58('0x5'));var Mustache=require(_0x0b58('0x6'));var util=require(_0x0b58('0x7'));var path=require(_0x0b58('0x8'));var sox=require(_0x0b58('0x9'));var csv=require(_0x0b58('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0b58('0xb'));var _=require(_0x0b58('0xc'));var squel=require(_0x0b58('0xd'));var crypto=require(_0x0b58('0xe'));var jsforce=require(_0x0b58('0xf'));var deskjs=require(_0x0b58('0x10'));var toCsv=require(_0x0b58('0xa'));var querystring=require('querystring');var Papa=require(_0x0b58('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x0b58('0x12'));var as=require(_0x0b58('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x0b58('0x14'));var utils=require(_0x0b58('0x15'));var config=require(_0x0b58('0x16'));var licenseUtil=require(_0x0b58('0x17'));var db=require(_0x0b58('0x18'))['db'];function respondWithStatusCode(_0x35d05d,_0x29b8ea){_0x29b8ea=_0x29b8ea||0xcc;return function(_0xa14f4c){if(_0xa14f4c){return _0x35d05d['sendStatus'](_0x29b8ea);}return _0x35d05d['status'](_0x29b8ea)[_0x0b58('0x19')]();};}function respondWithResult(_0x47ebd7,_0x3a3c95){_0x3a3c95=_0x3a3c95||0xc8;return function(_0x3a208c){if(_0x3a208c){return _0x47ebd7[_0x0b58('0x1a')](_0x3a3c95)[_0x0b58('0x1b')](_0x3a208c);}};}function respondWithFilteredResult(_0x3076f7,_0x1756aa){return function(_0x59fff4){if(_0x59fff4){var _0x50f23a=typeof _0x1756aa[_0x0b58('0x1c')]===_0x0b58('0x1d')&&typeof _0x1756aa['limit']===_0x0b58('0x1d');var _0x4fac15=_0x59fff4[_0x0b58('0x1e')];var _0x4642e9=_0x50f23a?0x0:_0x1756aa['offset'];var _0x3cfcc6=_0x50f23a?_0x59fff4[_0x0b58('0x1e')]:_0x1756aa[_0x0b58('0x1c')]+_0x1756aa[_0x0b58('0x1f')];var _0x5170b2;if(_0x3cfcc6>=_0x4fac15){_0x3cfcc6=_0x4fac15;_0x5170b2=0xc8;}else{_0x5170b2=0xce;}_0x3076f7[_0x0b58('0x1a')](_0x5170b2);return _0x3076f7[_0x0b58('0x20')](_0x0b58('0x21'),_0x4642e9+'-'+_0x3cfcc6+'/'+_0x4fac15)[_0x0b58('0x1b')](_0x59fff4);}return null;};}function patchUpdates(_0x1d5c9a){return function(_0x342ec5){try{jsonpatch[_0x0b58('0x22')](_0x342ec5,_0x1d5c9a,!![]);}catch(_0x476d66){return BPromise[_0x0b58('0x23')](_0x476d66);}return _0x342ec5[_0x0b58('0x24')]();};}function saveUpdates(_0x943e68,_0x1566d2){return function(_0x4ac180){if(_0x4ac180){return _0x4ac180[_0x0b58('0x25')](_0x943e68)['then'](function(_0x30a488){return _0x30a488;});}return null;};}function removeEntity(_0x2c82c3,_0x1439d6){return function(_0x584260){if(_0x584260){return _0x584260[_0x0b58('0x26')]()[_0x0b58('0x27')](function(){_0x2c82c3[_0x0b58('0x1a')](0xcc)[_0x0b58('0x19')]();});}};}function handleEntityNotFound(_0x5e85ff,_0x5e8a8b){return function(_0x1c09f0){if(!_0x1c09f0){_0x5e85ff[_0x0b58('0x28')](0x194);}return _0x1c09f0;};}function handleError(_0x1eb772,_0x44a013){_0x44a013=_0x44a013||0x1f4;return function(_0x4e91c0){logger[_0x0b58('0x29')](_0x4e91c0[_0x0b58('0x2a')]);if(_0x4e91c0[_0x0b58('0x2b')]){delete _0x4e91c0[_0x0b58('0x2b')];}_0x1eb772[_0x0b58('0x1a')](_0x44a013)[_0x0b58('0x2c')](_0x4e91c0);};}exports[_0x0b58('0x2d')]=function(_0x476d4a,_0x5a0927){var _0x55f581={},_0x52e85c={},_0x561483={'count':0x0,'rows':[]};var _0x488fc8=_[_0x0b58('0x2e')](db[_0x0b58('0x2f')][_0x0b58('0x30')],function(_0x524b53){return{'name':_0x524b53[_0x0b58('0x31')],'type':_0x524b53[_0x0b58('0x32')][_0x0b58('0x33')]};});_0x52e85c['model']=_[_0x0b58('0x2e')](_0x488fc8,_0x0b58('0x2b'));_0x52e85c[_0x0b58('0x34')]=_[_0x0b58('0x35')](_0x476d4a[_0x0b58('0x34')]);_0x52e85c[_0x0b58('0x36')]=_[_0x0b58('0x37')](_0x52e85c['model'],_0x52e85c[_0x0b58('0x34')]);_0x55f581[_0x0b58('0x38')]=_[_0x0b58('0x37')](_0x52e85c[_0x0b58('0x39')],qs[_0x0b58('0x3a')](_0x476d4a[_0x0b58('0x34')][_0x0b58('0x3a')]));_0x55f581[_0x0b58('0x38')]=_0x55f581[_0x0b58('0x38')]['length']?_0x55f581[_0x0b58('0x38')]:_0x52e85c[_0x0b58('0x39')];if(!_0x476d4a[_0x0b58('0x34')][_0x0b58('0x3b')](_0x0b58('0x3c'))){_0x55f581[_0x0b58('0x1f')]=qs[_0x0b58('0x1f')](_0x476d4a[_0x0b58('0x34')][_0x0b58('0x1f')]);_0x55f581[_0x0b58('0x1c')]=qs[_0x0b58('0x1c')](_0x476d4a[_0x0b58('0x34')][_0x0b58('0x1c')]);}_0x55f581[_0x0b58('0x3d')]=qs[_0x0b58('0x3e')](_0x476d4a[_0x0b58('0x34')][_0x0b58('0x3e')]);_0x55f581[_0x0b58('0x3f')]=qs[_0x0b58('0x36')](_['pick'](_0x476d4a['query'],_0x52e85c[_0x0b58('0x36')]),_0x488fc8);if(_0x476d4a[_0x0b58('0x34')][_0x0b58('0x40')]){_0x55f581[_0x0b58('0x3f')]=_[_0x0b58('0x41')](_0x55f581['where'],{'$or':_[_0x0b58('0x2e')](_0x488fc8,function(_0xcf33bb){if(_0xcf33bb[_0x0b58('0x32')]!==_0x0b58('0x42')){var _0x1b9319={};_0x1b9319[_0xcf33bb[_0x0b58('0x2b')]]={'$like':'%'+_0x476d4a[_0x0b58('0x34')][_0x0b58('0x40')]+'%'};return _0x1b9319;}})});}_0x55f581=_[_0x0b58('0x41')]({},_0x55f581,_0x476d4a[_0x0b58('0x43')]);var _0x367eb7={'where':_0x55f581[_0x0b58('0x3f')]};return db[_0x0b58('0x2f')][_0x0b58('0x1e')](_0x367eb7)['then'](function(_0x2779ce){_0x561483[_0x0b58('0x1e')]=_0x2779ce;if(_0x476d4a['query'][_0x0b58('0x44')]){_0x55f581[_0x0b58('0x45')]=[{'all':!![]}];}return db[_0x0b58('0x2f')][_0x0b58('0x46')](_0x55f581);})[_0x0b58('0x27')](function(_0x339d10){_0x561483[_0x0b58('0x47')]=_0x339d10;return _0x561483;})[_0x0b58('0x27')](respondWithFilteredResult(_0x5a0927,_0x55f581))['catch'](handleError(_0x5a0927,null));};exports[_0x0b58('0x48')]=function(_0x4fe591,_0x5411c0){var _0x3b470a={'raw':!![],'where':{'id':_0x4fe591[_0x0b58('0x49')]['id']}},_0x1a9742={};_0x1a9742[_0x0b58('0x39')]=_[_0x0b58('0x35')](db['MailTransferReport'][_0x0b58('0x30')]);_0x1a9742[_0x0b58('0x34')]=_[_0x0b58('0x35')](_0x4fe591[_0x0b58('0x34')]);_0x1a9742[_0x0b58('0x36')]=_[_0x0b58('0x37')](_0x1a9742[_0x0b58('0x39')],_0x1a9742[_0x0b58('0x34')]);_0x3b470a[_0x0b58('0x38')]=_[_0x0b58('0x37')](_0x1a9742['model'],qs[_0x0b58('0x3a')](_0x4fe591[_0x0b58('0x34')]['fields']));_0x3b470a[_0x0b58('0x38')]=_0x3b470a[_0x0b58('0x38')]['length']?_0x3b470a[_0x0b58('0x38')]:_0x1a9742[_0x0b58('0x39')];if(_0x4fe591[_0x0b58('0x34')][_0x0b58('0x44')]){_0x3b470a[_0x0b58('0x45')]=[{'all':!![]}];}_0x3b470a=_['merge']({},_0x3b470a,_0x4fe591[_0x0b58('0x43')]);return db[_0x0b58('0x2f')][_0x0b58('0x4a')](_0x3b470a)[_0x0b58('0x27')](handleEntityNotFound(_0x5411c0,null))[_0x0b58('0x27')](respondWithResult(_0x5411c0,null))[_0x0b58('0x4b')](handleError(_0x5411c0,null));};exports[_0x0b58('0x4c')]=function(_0x21c4d4,_0x4b2c70){return db['MailTransferReport'][_0x0b58('0x4c')](_0x21c4d4['body'],{})[_0x0b58('0x27')](respondWithResult(_0x4b2c70,0xc9))['catch'](handleError(_0x4b2c70,null));};exports['update']=function(_0x3aae62,_0x40e4b6){if(_0x3aae62[_0x0b58('0x4d')]['id']){delete _0x3aae62['body']['id'];}return db[_0x0b58('0x2f')][_0x0b58('0x4a')]({'where':{'id':_0x3aae62['params']['id']}})[_0x0b58('0x27')](handleEntityNotFound(_0x40e4b6,null))[_0x0b58('0x27')](saveUpdates(_0x3aae62['body'],null))[_0x0b58('0x27')](respondWithResult(_0x40e4b6,null))[_0x0b58('0x4b')](handleError(_0x40e4b6,null));};exports[_0x0b58('0x26')]=function(_0x377b8e,_0x52f1d4){return db['MailTransferReport'][_0x0b58('0x4a')]({'where':{'id':_0x377b8e[_0x0b58('0x49')]['id']}})['then'](handleEntityNotFound(_0x52f1d4,null))['then'](removeEntity(_0x52f1d4,null))[_0x0b58('0x4b')](handleError(_0x52f1d4,null));};exports[_0x0b58('0x4e')]=function(_0x46b8b6,_0x3111cd){return db[_0x0b58('0x2f')][_0x0b58('0x4e')]()[_0x0b58('0x27')](respondWithResult(_0x3111cd,null))[_0x0b58('0x4b')](handleError(_0x3111cd,null));};
\ No newline at end of file
index 007ea7c..41719c2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc34=['../../config/environment','./mailTransferReport.attributes','exports','MailTransferReport','report_mail_transfer','uniqueid','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x456fb1,_0x859a1d){var _0x4083d6=function(_0xe1d0f2){while(--_0xe1d0f2){_0x456fb1['push'](_0x456fb1['shift']());}};_0x4083d6(++_0x859a1d);}(_0xcc34,0x7e));var _0x4cc3=function(_0x142a9e,_0x5c9ecb){_0x142a9e=_0x142a9e-0x0;var _0x267133=_0xcc34[_0x142a9e];return _0x267133;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4cc3('0x0'))('api');var moment=require(_0x4cc3('0x1'));var BPromise=require(_0x4cc3('0x2'));var rp=require(_0x4cc3('0x3'));var fs=require('fs');var path=require(_0x4cc3('0x4'));var rimraf=require(_0x4cc3('0x5'));var config=require(_0x4cc3('0x6'));var attributes=require(_0x4cc3('0x7'));module[_0x4cc3('0x8')]=function(_0x24946c,_0x3c045b){return _0x24946c['define'](_0x4cc3('0x9'),attributes,{'tableName':_0x4cc3('0xa'),'paranoid':![],'indexes':[{'name':_0x4cc3('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x6fad=['lodash','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment','./mailTransferReport.attributes','define','MailTransferReport','uniqueid'];(function(_0x2c69a1,_0x201903){var _0x24bb91=function(_0x3131ac){while(--_0x3131ac){_0x2c69a1['push'](_0x2c69a1['shift']());}};_0x24bb91(++_0x201903);}(_0x6fad,0x174));var _0xd6fa=function(_0x15f724,_0x2794ef){_0x15f724=_0x15f724-0x0;var _0x49b152=_0x6fad[_0x15f724];return _0x49b152;};'use strict';var _=require(_0xd6fa('0x0'));var util=require(_0xd6fa('0x1'));var logger=require(_0xd6fa('0x2'))(_0xd6fa('0x3'));var moment=require('moment');var BPromise=require(_0xd6fa('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xd6fa('0x5'));var rimraf=require(_0xd6fa('0x6'));var config=require(_0xd6fa('0x7'));var attributes=require(_0xd6fa('0x8'));module['exports']=function(_0x45dad4,_0x329390){return _0x45dad4[_0xd6fa('0x9')](_0xd6fa('0xa'),attributes,{'tableName':'report_mail_transfer','paranoid':![],'indexes':[{'name':_0xd6fa('0xb'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index dd06307..8203116 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb926=['info','result','catch','lodash','util','moment','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','MailTransferReport,\x20%s,\x20%s','request\x20sent','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0xd09668,_0x1435b2){var _0x68726=function(_0x54a030){while(--_0x54a030){_0xd09668['push'](_0xd09668['shift']());}};_0x68726(++_0x1435b2);}(_0xb926,0x1a7));var _0x6b92=function(_0xc800f,_0xc14721){_0xc800f=_0xc800f-0x0;var _0xc686dc=_0xb926[_0xc800f];return _0xc686dc;};'use strict';var _=require(_0x6b92('0x0'));var util=require(_0x6b92('0x1'));var moment=require(_0x6b92('0x2'));var BPromise=require('bluebird');var rs=require(_0x6b92('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6b92('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6b92('0x5'))(_0x6b92('0x6'));var config=require(_0x6b92('0x7'));var jayson=require(_0x6b92('0x8'));var client=jayson['client'][_0x6b92('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4b7882,_0x4fa5cb,_0x1845ce){return new BPromise(function(_0x40702a,_0x3596bd){return client[_0x6b92('0xa')](_0x4b7882,_0x1845ce)['then'](function(_0xb26625){logger['info'](_0x6b92('0xb'),_0x4fa5cb,_0x6b92('0xc'));logger['debug'](_0x6b92('0xd'),_0x4fa5cb,'request\x20sent',JSON[_0x6b92('0xe')](_0xb26625));if(_0xb26625[_0x6b92('0xf')]){if(_0xb26625['error']['code']===0x1f4){logger[_0x6b92('0xf')]('MailTransferReport,\x20%s,\x20%s',_0x4fa5cb,_0xb26625[_0x6b92('0xf')][_0x6b92('0x10')]);return _0x3596bd(_0xb26625[_0x6b92('0xf')][_0x6b92('0x10')]);}logger[_0x6b92('0xf')](_0x6b92('0xb'),_0x4fa5cb,_0xb26625[_0x6b92('0xf')][_0x6b92('0x10')]);return _0x40702a(_0xb26625[_0x6b92('0xf')][_0x6b92('0x10')]);}else{logger[_0x6b92('0x11')](_0x6b92('0xb'),_0x4fa5cb,_0x6b92('0xc'));_0x40702a(_0xb26625[_0x6b92('0x12')][_0x6b92('0x10')]);}})[_0x6b92('0x13')](function(_0x709a07){logger[_0x6b92('0xf')](_0x6b92('0xb'),_0x4fa5cb,_0x709a07);_0x3596bd(_0x709a07);});});}
\ No newline at end of file
+var _0xd599=['message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request','then','info','MailTransferReport,\x20%s,\x20%s','request\x20sent','MailTransferReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xd599,0xea));var _0x9d59=function(_0x243601,_0x37b484){_0x243601=_0x243601-0x0;var _0x8913f8=_0xd599[_0x243601];return _0x8913f8;};'use strict';var _=require('lodash');var util=require(_0x9d59('0x0'));var moment=require(_0x9d59('0x1'));var BPromise=require(_0x9d59('0x2'));var rs=require(_0x9d59('0x3'));var fs=require('fs');var Redis=require(_0x9d59('0x4'));var db=require(_0x9d59('0x5'))['db'];var utils=require(_0x9d59('0x6'));var logger=require(_0x9d59('0x7'))('rpc');var config=require(_0x9d59('0x8'));var jayson=require(_0x9d59('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x2be904,_0x32131e,_0x52885d){return new BPromise(function(_0x482e57,_0x51a190){return client[_0x9d59('0xa')](_0x2be904,_0x52885d)[_0x9d59('0xb')](function(_0xc6b1f4){logger[_0x9d59('0xc')](_0x9d59('0xd'),_0x32131e,_0x9d59('0xe'));logger['debug'](_0x9d59('0xf'),_0x32131e,'request\x20sent',JSON[_0x9d59('0x10')](_0xc6b1f4));if(_0xc6b1f4[_0x9d59('0x11')]){if(_0xc6b1f4['error']['code']===0x1f4){logger[_0x9d59('0x11')](_0x9d59('0xd'),_0x32131e,_0xc6b1f4[_0x9d59('0x11')][_0x9d59('0x12')]);return _0x51a190(_0xc6b1f4['error'][_0x9d59('0x12')]);}logger[_0x9d59('0x11')](_0x9d59('0xd'),_0x32131e,_0xc6b1f4[_0x9d59('0x11')][_0x9d59('0x12')]);return _0x482e57(_0xc6b1f4[_0x9d59('0x11')][_0x9d59('0x12')]);}else{logger[_0x9d59('0xc')](_0x9d59('0xd'),_0x32131e,_0x9d59('0xe'));_0x482e57(_0xc6b1f4[_0x9d59('0x13')]['message']);}})[_0x9d59('0x14')](function(_0x24fdc1){logger[_0x9d59('0x11')](_0x9d59('0xd'),_0x32131e,_0x24fdc1);_0x51a190(_0x24fdc1);});});}
\ No newline at end of file
index fe7dae0..29babb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfed=['exports','util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get','index','isAuthenticated','describe','/:id','show','post','create','put','update','delete','destroy'];(function(_0x5a711c,_0x427ea5){var _0x612578=function(_0x19af5d){while(--_0x19af5d){_0x5a711c['push'](_0x5a711c['shift']());}};_0x612578(++_0x427ea5);}(_0xbfed,0x190));var _0xdbfe=function(_0x48051b,_0x368d0b){_0x48051b=_0x48051b-0x0;var _0x5669e1=_0xbfed[_0x48051b];return _0x5669e1;};'use strict';var multer=require('multer');var util=require(_0xdbfe('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xdbfe('0x1'));var router=express[_0xdbfe('0x2')]();var fs_extra=require(_0xdbfe('0x3'));var auth=require(_0xdbfe('0x4'));var interaction=require(_0xdbfe('0x5'));var config=require(_0xdbfe('0x6'));var controller=require(_0xdbfe('0x7'));router[_0xdbfe('0x8')]('/',auth['isAuthenticated'](),controller[_0xdbfe('0x9')]);router['get']('/describe',auth[_0xdbfe('0xa')](),controller[_0xdbfe('0xb')]);router[_0xdbfe('0x8')](_0xdbfe('0xc'),auth[_0xdbfe('0xa')](),controller[_0xdbfe('0xd')]);router[_0xdbfe('0xe')]('/',auth[_0xdbfe('0xa')](),controller[_0xdbfe('0xf')]);router[_0xdbfe('0x10')]('/:id',auth[_0xdbfe('0xa')](),controller[_0xdbfe('0x11')]);router[_0xdbfe('0x12')](_0xdbfe('0xc'),auth[_0xdbfe('0xa')](),controller[_0xdbfe('0x13')]);module[_0xdbfe('0x14')]=router;
\ No newline at end of file
+var _0x56be=['destroy','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./memberReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','delete'];(function(_0x1fc4e2,_0x493c3b){var _0x2ba184=function(_0x58e64f){while(--_0x58e64f){_0x1fc4e2['push'](_0x1fc4e2['shift']());}};_0x2ba184(++_0x493c3b);}(_0x56be,0xd1));var _0xe56b=function(_0x50ca80,_0x11b0ea){_0x50ca80=_0x50ca80-0x0;var _0x666b69=_0x56be[_0x50ca80];return _0x666b69;};'use strict';var multer=require('multer');var util=require(_0xe56b('0x0'));var path=require(_0xe56b('0x1'));var timeout=require(_0xe56b('0x2'));var express=require(_0xe56b('0x3'));var router=express[_0xe56b('0x4')]();var fs_extra=require(_0xe56b('0x5'));var auth=require(_0xe56b('0x6'));var interaction=require(_0xe56b('0x7'));var config=require(_0xe56b('0x8'));var controller=require(_0xe56b('0x9'));router[_0xe56b('0xa')]('/',auth[_0xe56b('0xb')](),controller[_0xe56b('0xc')]);router[_0xe56b('0xa')](_0xe56b('0xd'),auth[_0xe56b('0xb')](),controller[_0xe56b('0xe')]);router[_0xe56b('0xa')](_0xe56b('0xf'),auth['isAuthenticated'](),controller[_0xe56b('0x10')]);router[_0xe56b('0x11')]('/',auth[_0xe56b('0xb')](),controller[_0xe56b('0x12')]);router[_0xe56b('0x13')](_0xe56b('0xf'),auth['isAuthenticated'](),controller['update']);router[_0xe56b('0x14')](_0xe56b('0xf'),auth[_0xe56b('0xb')](),controller[_0xe56b('0x15')]);module[_0xe56b('0x16')]=router;
\ No newline at end of file
index 9e4a592..7a95167 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x094f=['diff','seconds','setDataValue','exitAt','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[queue]','INTEGER','moment','exports','STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','DATE','getDataValue'];(function(_0x5e8616,_0x4c6c3d){var _0x100122=function(_0x37f60c){while(--_0x37f60c){_0x5e8616['push'](_0x5e8616['shift']());}};_0x100122(++_0x4c6c3d);}(_0x094f,0x71));var _0xf094=function(_0x2adbeb,_0x5581be){_0x2adbeb=_0x2adbeb-0x0;var _0x5e18a6=_0x094f[_0x2adbeb];return _0x5e18a6;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xf094('0x0'));module[_0xf094('0x1')]={'channel':{'type':Sequelize[_0xf094('0x2')]},'membername':{'type':Sequelize[_0xf094('0x2')]},'interface':{'type':Sequelize[_0xf094('0x2')]},'type':{'type':Sequelize[_0xf094('0x2')],'defaultValue':_0xf094('0x3'),'comment':_0xf094('0x4')},'duration':{'type':Sequelize['INTEGER']},'enterAt':{'type':Sequelize[_0xf094('0x5')]},'exitAt':{'type':Sequelize[_0xf094('0x5')],'set':function(_0x519a4f){var _0x109ded=moment(_0x519a4f);var _0x20d2d7=moment(this[_0xf094('0x6')]('enterAt'));var _0x1bcce4=_0x109ded[_0xf094('0x7')](_0x20d2d7,_0xf094('0x8'));this[_0xf094('0x9')](_0xf094('0xa'),_0x519a4f);this[_0xf094('0x9')](_0xf094('0xb'),_0x1bcce4>=0x0?_0x1bcce4:null);}},'data1':{'type':Sequelize[_0xf094('0x2')],'comment':_0xf094('0xc')},'data2':{'type':Sequelize[_0xf094('0x2')],'comment':'talk:[start]'},'data3':{'type':Sequelize[_0xf094('0x2')],'comment':'talk:[destination]'},'data4':{'type':Sequelize[_0xf094('0x2')],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize[_0xf094('0x2')],'comment':_0xf094('0xd')},'role':{'type':Sequelize[_0xf094('0x2')]},'internal':{'type':Sequelize[_0xf094('0xe')]},'uniqueid':{'type':Sequelize[_0xf094('0x2')]}};
\ No newline at end of file
+var _0x91bc=['STRING','DEFAULT\x20PAUSE','LOGIN,\x20PAUSE,\x20TALKING','INTEGER','DATE','seconds','setDataValue','duration','talk:[inbound,\x20outbound],\x20pause:[reason]','talk:[start]','talk:[destination]','moment','exports'];(function(_0x2515a3,_0x356de5){var _0xe8bbb=function(_0x18876b){while(--_0x18876b){_0x2515a3['push'](_0x2515a3['shift']());}};_0xe8bbb(++_0x356de5);}(_0x91bc,0x1d2));var _0xc91b=function(_0x26acc5,_0x42e1e0){_0x26acc5=_0x26acc5-0x0;var _0x4267f7=_0x91bc[_0x26acc5];return _0x4267f7;};'use strict';var Sequelize=require('sequelize');var moment=require(_0xc91b('0x0'));module[_0xc91b('0x1')]={'channel':{'type':Sequelize[_0xc91b('0x2')]},'membername':{'type':Sequelize[_0xc91b('0x2')]},'interface':{'type':Sequelize[_0xc91b('0x2')]},'type':{'type':Sequelize[_0xc91b('0x2')],'defaultValue':_0xc91b('0x3'),'comment':_0xc91b('0x4')},'duration':{'type':Sequelize[_0xc91b('0x5')]},'enterAt':{'type':Sequelize[_0xc91b('0x6')]},'exitAt':{'type':Sequelize[_0xc91b('0x6')],'set':function(_0x2ab13a){var _0x2a0e67=moment(_0x2ab13a);var _0xe3e76=moment(this['getDataValue']('enterAt'));var _0x42ce9a=_0x2a0e67['diff'](_0xe3e76,_0xc91b('0x7'));this[_0xc91b('0x8')]('exitAt',_0x2ab13a);this[_0xc91b('0x8')](_0xc91b('0x9'),_0x42ce9a>=0x0?_0x42ce9a:null);}},'data1':{'type':Sequelize['STRING'],'comment':_0xc91b('0xa')},'data2':{'type':Sequelize[_0xc91b('0x2')],'comment':_0xc91b('0xb')},'data3':{'type':Sequelize[_0xc91b('0x2')],'comment':_0xc91b('0xc')},'data4':{'type':Sequelize[_0xc91b('0x2')],'comment':'talk:[dial\x20string]'},'data5':{'type':Sequelize['STRING'],'comment':'talk:[queue]'},'role':{'type':Sequelize[_0xc91b('0x2')]},'internal':{'type':Sequelize[_0xc91b('0x5')]},'uniqueid':{'type':Sequelize[_0xc91b('0x2')]}};
\ No newline at end of file
index 92b48b5..981821e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x4bfac3,_0x58324d){var _0x15f0f2=function(_0xf0c511){while(--_0xf0c511){_0x4bfac3['push'](_0x4bfac3['shift']());}};_0x15f0f2(++_0x58324d);}(_0x34e8,0x12c));var _0x834e=function(_0x542dc7,_0x1b40ea){_0x542dc7=_0x542dc7-0x0;var _0x11742e=_0x34e8[_0x542dc7];return _0x11742e;};'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
+var _0x9c44=['catch','params','find','create','body','describe','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','sendStatus','stack','name','send','index','map','MemberReport','rawAttributes','fieldName','type','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','then','includeAll','include','findAll','rows'];(function(_0x3f7009,_0x477c31){var _0x56ae4e=function(_0x56f053){while(--_0x56f053){_0x3f7009['push'](_0x3f7009['shift']());}};_0x56ae4e(++_0x477c31);}(_0x9c44,0x178));var _0x49c4=function(_0x2b7764,_0x2606f1){_0x2b7764=_0x2b7764-0x0;var _0x848dcb=_0x9c44[_0x2b7764];return _0x848dcb;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x49c4('0x0'));var jsonpatch=require(_0x49c4('0x1'));var rp=require(_0x49c4('0x2'));var moment=require(_0x49c4('0x3'));var BPromise=require(_0x49c4('0x4'));var Mustache=require(_0x49c4('0x5'));var util=require('util');var path=require('path');var sox=require(_0x49c4('0x6'));var csv=require('to-csv');var ejs=require(_0x49c4('0x7'));var fs=require('fs');var fs_extra=require(_0x49c4('0x8'));var _=require(_0x49c4('0x9'));var squel=require(_0x49c4('0xa'));var crypto=require(_0x49c4('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x49c4('0xc'));var toCsv=require(_0x49c4('0xd'));var querystring=require(_0x49c4('0xe'));var Papa=require(_0x49c4('0xf'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x49c4('0x10'));var as=require(_0x49c4('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x49c4('0x12'))(_0x49c4('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x49c4('0x14'));var db=require(_0x49c4('0x15'))['db'];function respondWithStatusCode(_0x5487cd,_0x7df3a9){_0x7df3a9=_0x7df3a9||0xcc;return function(_0x403bfb){if(_0x403bfb){return _0x5487cd['sendStatus'](_0x7df3a9);}return _0x5487cd[_0x49c4('0x16')](_0x7df3a9)[_0x49c4('0x17')]();};}function respondWithResult(_0x21f15a,_0x2decee){_0x2decee=_0x2decee||0xc8;return function(_0x12777c){if(_0x12777c){return _0x21f15a[_0x49c4('0x16')](_0x2decee)[_0x49c4('0x18')](_0x12777c);}};}function respondWithFilteredResult(_0x3de397,_0x58d177){return function(_0x3acd06){if(_0x3acd06){var _0x141003=typeof _0x58d177[_0x49c4('0x19')]===_0x49c4('0x1a')&&typeof _0x58d177[_0x49c4('0x1b')]==='undefined';var _0x44e607=_0x3acd06[_0x49c4('0x1c')];var _0x4c3253=_0x141003?0x0:_0x58d177['offset'];var _0x3c782d=_0x141003?_0x3acd06[_0x49c4('0x1c')]:_0x58d177[_0x49c4('0x19')]+_0x58d177['limit'];var _0x24856d;if(_0x3c782d>=_0x44e607){_0x3c782d=_0x44e607;_0x24856d=0xc8;}else{_0x24856d=0xce;}_0x3de397['status'](_0x24856d);return _0x3de397[_0x49c4('0x1d')](_0x49c4('0x1e'),_0x4c3253+'-'+_0x3c782d+'/'+_0x44e607)[_0x49c4('0x18')](_0x3acd06);}return null;};}function patchUpdates(_0x291526){return function(_0x382040){try{jsonpatch[_0x49c4('0x1f')](_0x382040,_0x291526,!![]);}catch(_0x280893){return BPromise[_0x49c4('0x20')](_0x280893);}return _0x382040[_0x49c4('0x21')]();};}function saveUpdates(_0x578447,_0x527126){return function(_0x57f502){if(_0x57f502){return _0x57f502[_0x49c4('0x22')](_0x578447)['then'](function(_0x592bb8){return _0x592bb8;});}return null;};}function removeEntity(_0x2263ae,_0x15581b){return function(_0x26c640){if(_0x26c640){return _0x26c640[_0x49c4('0x23')]()['then'](function(){_0x2263ae['status'](0xcc)[_0x49c4('0x17')]();});}};}function handleEntityNotFound(_0x9cb797,_0x565423){return function(_0x207358){if(!_0x207358){_0x9cb797[_0x49c4('0x24')](0x194);}return _0x207358;};}function handleError(_0x210159,_0xa7a826){_0xa7a826=_0xa7a826||0x1f4;return function(_0x531d92){logger['error'](_0x531d92[_0x49c4('0x25')]);if(_0x531d92['name']){delete _0x531d92[_0x49c4('0x26')];}_0x210159[_0x49c4('0x16')](_0xa7a826)[_0x49c4('0x27')](_0x531d92);};}exports[_0x49c4('0x28')]=function(_0x5987ae,_0x889909){var _0x2b2793={},_0x46e04d={},_0x4f28a2={'count':0x0,'rows':[]};var _0x6329b3=_[_0x49c4('0x29')](db[_0x49c4('0x2a')][_0x49c4('0x2b')],function(_0x17b50f){return{'name':_0x17b50f[_0x49c4('0x2c')],'type':_0x17b50f[_0x49c4('0x2d')]['key']};});_0x46e04d['model']=_['map'](_0x6329b3,_0x49c4('0x26'));_0x46e04d[_0x49c4('0x2e')]=_[_0x49c4('0x2f')](_0x5987ae[_0x49c4('0x2e')]);_0x46e04d[_0x49c4('0x30')]=_['intersection'](_0x46e04d[_0x49c4('0x31')],_0x46e04d[_0x49c4('0x2e')]);_0x2b2793[_0x49c4('0x32')]=_[_0x49c4('0x33')](_0x46e04d['model'],qs['fields'](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x34')]));_0x2b2793[_0x49c4('0x32')]=_0x2b2793[_0x49c4('0x32')][_0x49c4('0x35')]?_0x2b2793['attributes']:_0x46e04d[_0x49c4('0x31')];if(!_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x36')]('nolimit')){_0x2b2793['limit']=qs[_0x49c4('0x1b')](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x1b')]);_0x2b2793[_0x49c4('0x19')]=qs[_0x49c4('0x19')](_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x19')]);}_0x2b2793[_0x49c4('0x37')]=qs[_0x49c4('0x38')](_0x5987ae['query'][_0x49c4('0x38')]);_0x2b2793['where']=qs[_0x49c4('0x30')](_[_0x49c4('0x39')](_0x5987ae[_0x49c4('0x2e')],_0x46e04d[_0x49c4('0x30')]),_0x6329b3);if(_0x5987ae['query'][_0x49c4('0x3a')]){_0x2b2793[_0x49c4('0x3b')]=_[_0x49c4('0x3c')](_0x2b2793['where'],{'$or':_[_0x49c4('0x29')](_0x6329b3,function(_0x21d8c7){if(_0x21d8c7[_0x49c4('0x2d')]!==_0x49c4('0x3d')){var _0x1ba7a0={};_0x1ba7a0[_0x21d8c7[_0x49c4('0x26')]]={'$like':'%'+_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x3a')]+'%'};return _0x1ba7a0;}})});}_0x2b2793=_[_0x49c4('0x3c')]({},_0x2b2793,_0x5987ae[_0x49c4('0x3e')]);var _0x1e506a={'where':_0x2b2793['where']};return db[_0x49c4('0x2a')][_0x49c4('0x1c')](_0x1e506a)[_0x49c4('0x3f')](function(_0x23aa32){_0x4f28a2[_0x49c4('0x1c')]=_0x23aa32;if(_0x5987ae[_0x49c4('0x2e')][_0x49c4('0x40')]){_0x2b2793[_0x49c4('0x41')]=[{'all':!![]}];}return db[_0x49c4('0x2a')][_0x49c4('0x42')](_0x2b2793);})[_0x49c4('0x3f')](function(_0xa3d59e){_0x4f28a2[_0x49c4('0x43')]=_0xa3d59e;return _0x4f28a2;})['then'](respondWithFilteredResult(_0x889909,_0x2b2793))[_0x49c4('0x44')](handleError(_0x889909,null));};exports['show']=function(_0x104efb,_0x4915bc){var _0x28d4fb={'raw':!![],'where':{'id':_0x104efb[_0x49c4('0x45')]['id']}},_0x1480da={};_0x1480da[_0x49c4('0x31')]=_['keys'](db['MemberReport'][_0x49c4('0x2b')]);_0x1480da[_0x49c4('0x2e')]=_[_0x49c4('0x2f')](_0x104efb[_0x49c4('0x2e')]);_0x1480da['filters']=_[_0x49c4('0x33')](_0x1480da[_0x49c4('0x31')],_0x1480da[_0x49c4('0x2e')]);_0x28d4fb[_0x49c4('0x32')]=_[_0x49c4('0x33')](_0x1480da[_0x49c4('0x31')],qs[_0x49c4('0x34')](_0x104efb[_0x49c4('0x2e')][_0x49c4('0x34')]));_0x28d4fb['attributes']=_0x28d4fb[_0x49c4('0x32')]['length']?_0x28d4fb[_0x49c4('0x32')]:_0x1480da[_0x49c4('0x31')];if(_0x104efb[_0x49c4('0x2e')][_0x49c4('0x40')]){_0x28d4fb[_0x49c4('0x41')]=[{'all':!![]}];}_0x28d4fb=_['merge']({},_0x28d4fb,_0x104efb[_0x49c4('0x3e')]);return db[_0x49c4('0x2a')][_0x49c4('0x46')](_0x28d4fb)[_0x49c4('0x3f')](handleEntityNotFound(_0x4915bc,null))[_0x49c4('0x3f')](respondWithResult(_0x4915bc,null))[_0x49c4('0x44')](handleError(_0x4915bc,null));};exports[_0x49c4('0x47')]=function(_0x4d89e0,_0x3bac1b){return db['MemberReport'][_0x49c4('0x47')](_0x4d89e0[_0x49c4('0x48')],{})[_0x49c4('0x3f')](respondWithResult(_0x3bac1b,0xc9))[_0x49c4('0x44')](handleError(_0x3bac1b,null));};exports[_0x49c4('0x22')]=function(_0x30bea5,_0x2c6be1){if(_0x30bea5['body']['id']){delete _0x30bea5[_0x49c4('0x48')]['id'];}return db[_0x49c4('0x2a')]['find']({'where':{'id':_0x30bea5[_0x49c4('0x45')]['id']}})[_0x49c4('0x3f')](handleEntityNotFound(_0x2c6be1,null))[_0x49c4('0x3f')](saveUpdates(_0x30bea5[_0x49c4('0x48')],null))['then'](respondWithResult(_0x2c6be1,null))['catch'](handleError(_0x2c6be1,null));};exports[_0x49c4('0x23')]=function(_0x4e8221,_0x4597c3){return db[_0x49c4('0x2a')][_0x49c4('0x46')]({'where':{'id':_0x4e8221[_0x49c4('0x45')]['id']}})[_0x49c4('0x3f')](handleEntityNotFound(_0x4597c3,null))[_0x49c4('0x3f')](removeEntity(_0x4597c3,null))[_0x49c4('0x44')](handleError(_0x4597c3,null));};exports['describe']=function(_0x1f26c2,_0x1550ce){return db[_0x49c4('0x2a')][_0x49c4('0x49')]()[_0x49c4('0x3f')](respondWithResult(_0x1550ce,null))[_0x49c4('0x44')](handleError(_0x1550ce,null));};
\ No newline at end of file
index 7b989da..b72d4e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3a5a=['./memberReport.attributes','exports','define','MemberReport','report_member','membername','interface','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment'];(function(_0x1a2e14,_0x5ed2ab){var _0x7b8c94=function(_0x16c66a){while(--_0x16c66a){_0x1a2e14['push'](_0x1a2e14['shift']());}};_0x7b8c94(++_0x5ed2ab);}(_0x3a5a,0x167));var _0xa3a5=function(_0x1003eb,_0xc3c682){_0x1003eb=_0x1003eb-0x0;var _0x3e9558=_0x3a5a[_0x1003eb];return _0x3e9558;};'use strict';var _=require(_0xa3a5('0x0'));var util=require(_0xa3a5('0x1'));var logger=require(_0xa3a5('0x2'))(_0xa3a5('0x3'));var moment=require(_0xa3a5('0x4'));var BPromise=require(_0xa3a5('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xa3a5('0x6'));var rimraf=require(_0xa3a5('0x7'));var config=require(_0xa3a5('0x8'));var attributes=require(_0xa3a5('0x9'));module[_0xa3a5('0xa')]=function(_0x577b82,_0x3374fb){return _0x577b82[_0xa3a5('0xb')](_0xa3a5('0xc'),attributes,{'tableName':_0xa3a5('0xd'),'paranoid':![],'indexes':[{'name':'membername_interface','fields':[_0xa3a5('0xe'),_0xa3a5('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x8994=['MemberReport','report_member','membername_interface','membername','interface','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','../../config/environment','./memberReport.attributes','define'];(function(_0x2d7f0e,_0x3e6fbd){var _0x110b07=function(_0x557b00){while(--_0x557b00){_0x2d7f0e['push'](_0x2d7f0e['shift']());}};_0x110b07(++_0x3e6fbd);}(_0x8994,0xe6));var _0x4899=function(_0x279d37,_0x14de3f){_0x279d37=_0x279d37-0x0;var _0x530173=_0x8994[_0x279d37];return _0x530173;};'use strict';var _=require(_0x4899('0x0'));var util=require('util');var logger=require(_0x4899('0x1'))(_0x4899('0x2'));var moment=require(_0x4899('0x3'));var BPromise=require(_0x4899('0x4'));var rp=require(_0x4899('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x4899('0x6'));var config=require(_0x4899('0x7'));var attributes=require(_0x4899('0x8'));module['exports']=function(_0x164385,_0x44dadd){return _0x164385[_0x4899('0x9')](_0x4899('0xa'),attributes,{'tableName':_0x4899('0xb'),'paranoid':![],'indexes':[{'name':_0x4899('0xc'),'fields':[_0x4899('0xd'),_0x4899('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 7904317..7a22995 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a9a=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','then','info','request\x20sent','debug','stringify','error','MemberReport,\x20%s,\x20%s','message','catch','GetMemberReport','findAll','options','raw','where','attributes','limit','include','map','model','CreateMemberReport','MemberReport','update','UpdateMemberReport','lodash','moment'];(function(_0x1ffa70,_0x18482e){var _0x325798=function(_0x127b67){while(--_0x127b67){_0x1ffa70['push'](_0x1ffa70['shift']());}};_0x325798(++_0x18482e);}(_0x2a9a,0x64));var _0xa2a9=function(_0x3d6cd9,_0x41ae20){_0x3d6cd9=_0x3d6cd9-0x0;var _0x3376e0=_0x2a9a[_0x3d6cd9];return _0x3376e0;};'use strict';var _=require(_0xa2a9('0x0'));var util=require('util');var moment=require(_0xa2a9('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa2a9('0x2'));var db=require(_0xa2a9('0x3'))['db'];var utils=require(_0xa2a9('0x4'));var logger=require(_0xa2a9('0x5'))(_0xa2a9('0x6'));var config=require('../../config/environment');var jayson=require(_0xa2a9('0x7'));var client=jayson[_0xa2a9('0x8')][_0xa2a9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2bd1f3,_0x5c1fb2,_0x5d933f){return new BPromise(function(_0x540979,_0x523164){return client[_0xa2a9('0xa')](_0x2bd1f3,_0x5d933f)[_0xa2a9('0xb')](function(_0x3eaaa6){logger[_0xa2a9('0xc')]('MemberReport,\x20%s,\x20%s',_0x5c1fb2,_0xa2a9('0xd'));logger[_0xa2a9('0xe')]('MemberReport,\x20%s,\x20%s,\x20%s',_0x5c1fb2,_0xa2a9('0xd'),JSON[_0xa2a9('0xf')](_0x3eaaa6));if(_0x3eaaa6[_0xa2a9('0x10')]){if(_0x3eaaa6[_0xa2a9('0x10')]['code']===0x1f4){logger[_0xa2a9('0x10')](_0xa2a9('0x11'),_0x5c1fb2,_0x3eaaa6[_0xa2a9('0x10')][_0xa2a9('0x12')]);return _0x523164(_0x3eaaa6[_0xa2a9('0x10')][_0xa2a9('0x12')]);}logger['error'](_0xa2a9('0x11'),_0x5c1fb2,_0x3eaaa6[_0xa2a9('0x10')]['message']);return _0x540979(_0x3eaaa6['error']['message']);}else{logger[_0xa2a9('0xc')]('MemberReport,\x20%s,\x20%s',_0x5c1fb2,_0xa2a9('0xd'));_0x540979(_0x3eaaa6['result'][_0xa2a9('0x12')]);}})[_0xa2a9('0x13')](function(_0x657934){logger[_0xa2a9('0x10')]('MemberReport,\x20%s,\x20%s',_0x5c1fb2,_0x657934);_0x523164(_0x657934);});});}exports[_0xa2a9('0x14')]=function(_0x574964){var _0x2d9864=this;return new Promise(function(_0x49ae63,_0x398419){return db['MemberReport'][_0xa2a9('0x15')]({'raw':_0x574964[_0xa2a9('0x16')]?_0x574964[_0xa2a9('0x16')][_0xa2a9('0x17')]===undefined?!![]:![]:!![],'where':_0x574964[_0xa2a9('0x16')]?_0x574964[_0xa2a9('0x16')][_0xa2a9('0x18')]||null:null,'attributes':_0x574964[_0xa2a9('0x16')]?_0x574964[_0xa2a9('0x16')][_0xa2a9('0x19')]||null:null,'limit':_0x574964['options']?_0x574964[_0xa2a9('0x16')][_0xa2a9('0x1a')]||null:null,'include':_0x574964[_0xa2a9('0x16')]?_0x574964[_0xa2a9('0x16')][_0xa2a9('0x1b')]?_[_0xa2a9('0x1c')](_0x574964['options'][_0xa2a9('0x1b')],function(_0x565c8c){return{'model':db[_0x565c8c['model']],'as':_0x565c8c['as'],'attributes':_0x565c8c['attributes'],'include':_0x565c8c[_0xa2a9('0x1b')]?_[_0xa2a9('0x1c')](_0x565c8c['include'],function(_0xc4cc3d){return{'model':db[_0xc4cc3d[_0xa2a9('0x1d')]],'as':_0xc4cc3d['as'],'attributes':_0xc4cc3d[_0xa2a9('0x19')],'include':_0xc4cc3d[_0xa2a9('0x1b')]?_['map'](_0xc4cc3d[_0xa2a9('0x1b')],function(_0x44e435){return{'model':db[_0x44e435[_0xa2a9('0x1d')]],'as':_0x44e435['as'],'attributes':_0x44e435['attributes']};}):[]};}):[]};}):[]:[]})[_0xa2a9('0xb')](function(_0x1089ca){logger[_0xa2a9('0xc')]('GetMemberReport',_0x574964);logger['debug']('GetMemberReport',_0x574964,JSON[_0xa2a9('0xf')](_0x1089ca));_0x49ae63(_0x1089ca);})[_0xa2a9('0x13')](function(_0x40ff63){logger[_0xa2a9('0x10')](_0xa2a9('0x14'),_0x40ff63['message'],_0x574964);_0x398419(_0x2d9864[_0xa2a9('0x10')](0x1f4,_0x40ff63[_0xa2a9('0x12')]));});});};exports[_0xa2a9('0x1e')]=function(_0x28cce6){var _0x3e7339=this;return new Promise(function(_0x5ecfe0,_0x4bfa9b){return db[_0xa2a9('0x1f')]['create'](_0x28cce6['body'],{'raw':_0x28cce6[_0xa2a9('0x16')]?_0x28cce6[_0xa2a9('0x16')][_0xa2a9('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x29e8c9){logger[_0xa2a9('0xc')](_0xa2a9('0x1e'),_0x28cce6);logger[_0xa2a9('0xe')]('CreateMemberReport',_0x28cce6,JSON[_0xa2a9('0xf')](_0x29e8c9));_0x5ecfe0(_0x29e8c9);})[_0xa2a9('0x13')](function(_0x8671db){logger[_0xa2a9('0x10')]('CreateMemberReport',_0x8671db[_0xa2a9('0x12')],_0x28cce6);_0x4bfa9b(_0x3e7339['error'](0x1f4,_0x8671db[_0xa2a9('0x12')]));});});};exports['UpdateMemberReport']=function(_0x4451b3){var _0x204451=this;return new Promise(function(_0x1cb305,_0x48a8e8){return db['MemberReport'][_0xa2a9('0x20')](_0x4451b3['body'],{'raw':_0x4451b3[_0xa2a9('0x16')]?_0x4451b3['options'][_0xa2a9('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4451b3['options']?_0x4451b3[_0xa2a9('0x16')]['where']||null:null,'attributes':_0x4451b3['options']?_0x4451b3['options']['attributes']||null:null,'limit':_0x4451b3[_0xa2a9('0x16')]?_0x4451b3[_0xa2a9('0x16')][_0xa2a9('0x1a')]||null:null})['then'](function(_0xa88c9e){logger[_0xa2a9('0xc')]('UpdateMemberReport',_0x4451b3);logger['debug'](_0xa2a9('0x21'),_0x4451b3,JSON[_0xa2a9('0xf')](_0xa88c9e));_0x1cb305(_0xa88c9e);})['catch'](function(_0x2f27cf){logger[_0xa2a9('0x10')]('UpdateMemberReport',_0x2f27cf[_0xa2a9('0x12')],_0x4451b3);_0x48a8e8(_0x204451[_0xa2a9('0x10')](0x1f4,_0x2f27cf[_0xa2a9('0x12')]));});});};
\ No newline at end of file
+var _0x4d87=['info','result','catch','GetMemberReport','MemberReport','findAll','options','raw','where','attributes','limit','include','map','model','CreateMemberReport','body','UpdateMemberReport','update','util','moment','bluebird','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','request','then','MemberReport,\x20%s,\x20%s','request\x20sent','debug','MemberReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0x4d87,0xf0));var _0x74d8=function(_0x2e2207,_0x13c86b){_0x2e2207=_0x2e2207-0x0;var _0x47ec64=_0x4d87[_0x2e2207];return _0x47ec64;};'use strict';var _=require('lodash');var util=require(_0x74d8('0x0'));var moment=require(_0x74d8('0x1'));var BPromise=require(_0x74d8('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x74d8('0x3'));var db=require(_0x74d8('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x74d8('0x5'));var config=require(_0x74d8('0x6'));var jayson=require(_0x74d8('0x7'));var client=jayson[_0x74d8('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x50965b,_0x54c5f6,_0x4149ee){return new BPromise(function(_0x3a3b78,_0x3e6af4){return client[_0x74d8('0x9')](_0x50965b,_0x4149ee)[_0x74d8('0xa')](function(_0x2e7799){logger['info'](_0x74d8('0xb'),_0x54c5f6,_0x74d8('0xc'));logger[_0x74d8('0xd')](_0x74d8('0xe'),_0x54c5f6,_0x74d8('0xc'),JSON[_0x74d8('0xf')](_0x2e7799));if(_0x2e7799[_0x74d8('0x10')]){if(_0x2e7799[_0x74d8('0x10')][_0x74d8('0x11')]===0x1f4){logger['error'](_0x74d8('0xb'),_0x54c5f6,_0x2e7799[_0x74d8('0x10')]['message']);return _0x3e6af4(_0x2e7799[_0x74d8('0x10')][_0x74d8('0x12')]);}logger[_0x74d8('0x10')](_0x74d8('0xb'),_0x54c5f6,_0x2e7799[_0x74d8('0x10')]['message']);return _0x3a3b78(_0x2e7799['error']['message']);}else{logger[_0x74d8('0x13')](_0x74d8('0xb'),_0x54c5f6,_0x74d8('0xc'));_0x3a3b78(_0x2e7799[_0x74d8('0x14')][_0x74d8('0x12')]);}})[_0x74d8('0x15')](function(_0x539c0c){logger[_0x74d8('0x10')]('MemberReport,\x20%s,\x20%s',_0x54c5f6,_0x539c0c);_0x3e6af4(_0x539c0c);});});}exports[_0x74d8('0x16')]=function(_0x221da2){var _0x3ff6d1=this;return new Promise(function(_0x3f6a7b,_0x32fdb0){return db[_0x74d8('0x17')][_0x74d8('0x18')]({'raw':_0x221da2['options']?_0x221da2[_0x74d8('0x19')][_0x74d8('0x1a')]===undefined?!![]:![]:!![],'where':_0x221da2['options']?_0x221da2[_0x74d8('0x19')][_0x74d8('0x1b')]||null:null,'attributes':_0x221da2[_0x74d8('0x19')]?_0x221da2[_0x74d8('0x19')][_0x74d8('0x1c')]||null:null,'limit':_0x221da2[_0x74d8('0x19')]?_0x221da2[_0x74d8('0x19')][_0x74d8('0x1d')]||null:null,'include':_0x221da2[_0x74d8('0x19')]?_0x221da2[_0x74d8('0x19')][_0x74d8('0x1e')]?_[_0x74d8('0x1f')](_0x221da2[_0x74d8('0x19')][_0x74d8('0x1e')],function(_0x3d9d55){return{'model':db[_0x3d9d55[_0x74d8('0x20')]],'as':_0x3d9d55['as'],'attributes':_0x3d9d55[_0x74d8('0x1c')],'include':_0x3d9d55[_0x74d8('0x1e')]?_[_0x74d8('0x1f')](_0x3d9d55['include'],function(_0x44ce3c){return{'model':db[_0x44ce3c[_0x74d8('0x20')]],'as':_0x44ce3c['as'],'attributes':_0x44ce3c[_0x74d8('0x1c')],'include':_0x44ce3c[_0x74d8('0x1e')]?_[_0x74d8('0x1f')](_0x44ce3c[_0x74d8('0x1e')],function(_0x43eefe){return{'model':db[_0x43eefe[_0x74d8('0x20')]],'as':_0x43eefe['as'],'attributes':_0x43eefe[_0x74d8('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x74d8('0xa')](function(_0x3ba8e7){logger['info'](_0x74d8('0x16'),_0x221da2);logger[_0x74d8('0xd')]('GetMemberReport',_0x221da2,JSON[_0x74d8('0xf')](_0x3ba8e7));_0x3f6a7b(_0x3ba8e7);})[_0x74d8('0x15')](function(_0x721948){logger[_0x74d8('0x10')]('GetMemberReport',_0x721948[_0x74d8('0x12')],_0x221da2);_0x32fdb0(_0x3ff6d1[_0x74d8('0x10')](0x1f4,_0x721948[_0x74d8('0x12')]));});});};exports[_0x74d8('0x21')]=function(_0x4c3121){var _0x2b6f84=this;return new Promise(function(_0x3b0164,_0x6bdf1d){return db[_0x74d8('0x17')]['create'](_0x4c3121[_0x74d8('0x22')],{'raw':_0x4c3121[_0x74d8('0x19')]?_0x4c3121[_0x74d8('0x19')]['raw']===undefined?!![]:![]:!![]})[_0x74d8('0xa')](function(_0x4e2f05){logger[_0x74d8('0x13')](_0x74d8('0x21'),_0x4c3121);logger[_0x74d8('0xd')](_0x74d8('0x21'),_0x4c3121,JSON[_0x74d8('0xf')](_0x4e2f05));_0x3b0164(_0x4e2f05);})[_0x74d8('0x15')](function(_0x45388a){logger[_0x74d8('0x10')](_0x74d8('0x21'),_0x45388a[_0x74d8('0x12')],_0x4c3121);_0x6bdf1d(_0x2b6f84[_0x74d8('0x10')](0x1f4,_0x45388a['message']));});});};exports[_0x74d8('0x23')]=function(_0xeb0dce){var _0x592952=this;return new Promise(function(_0x3f47a1,_0x164264){return db[_0x74d8('0x17')][_0x74d8('0x24')](_0xeb0dce[_0x74d8('0x22')],{'raw':_0xeb0dce[_0x74d8('0x19')]?_0xeb0dce[_0x74d8('0x19')][_0x74d8('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xeb0dce['options']?_0xeb0dce[_0x74d8('0x19')][_0x74d8('0x1b')]||null:null,'attributes':_0xeb0dce[_0x74d8('0x19')]?_0xeb0dce[_0x74d8('0x19')][_0x74d8('0x1c')]||null:null,'limit':_0xeb0dce[_0x74d8('0x19')]?_0xeb0dce[_0x74d8('0x19')][_0x74d8('0x1d')]||null:null})[_0x74d8('0xa')](function(_0x3bbfa6){logger['info'](_0x74d8('0x23'),_0xeb0dce);logger[_0x74d8('0xd')](_0x74d8('0x23'),_0xeb0dce,JSON[_0x74d8('0xf')](_0x3bbfa6));_0x3f47a1(_0x3bbfa6);})[_0x74d8('0x15')](function(_0x1d06cb){logger[_0x74d8('0x10')](_0x74d8('0x23'),_0x1d06cb[_0x74d8('0x12')],_0xeb0dce);_0x164264(_0x592952[_0x74d8('0x10')](0x1f4,_0x1d06cb[_0x74d8('0x12')]));});});};
\ No newline at end of file
index f947ccf..9eb6e8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdae4=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','exports','multer','util','path','connect-timeout'];(function(_0x271487,_0x5d2c72){var _0x5862b0=function(_0x378d04){while(--_0x378d04){_0x271487['push'](_0x271487['shift']());}};_0x5862b0(++_0x5d2c72);}(_0xdae4,0x71));var _0x4dae=function(_0x241b4b,_0x206d5a){_0x241b4b=_0x241b4b-0x0;var _0x2220d0=_0xdae4[_0x241b4b];return _0x2220d0;};'use strict';var multer=require(_0x4dae('0x0'));var util=require(_0x4dae('0x1'));var path=require(_0x4dae('0x2'));var timeout=require(_0x4dae('0x3'));var express=require(_0x4dae('0x4'));var router=express[_0x4dae('0x5')]();var fs_extra=require(_0x4dae('0x6'));var auth=require(_0x4dae('0x7'));var interaction=require(_0x4dae('0x8'));var config=require(_0x4dae('0x9'));var controller=require('./migration.controller');router[_0x4dae('0xa')]('/',controller[_0x4dae('0xb')]);module[_0x4dae('0xc')]=router;
\ No newline at end of file
+var _0xd1f9=['../../config/environment','./migration.controller','index','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x228266,_0x2882ce){var _0x48a998=function(_0x14f517){while(--_0x14f517){_0x228266['push'](_0x228266['shift']());}};_0x48a998(++_0x2882ce);}(_0xd1f9,0x88));var _0x9d1f=function(_0x5ce268,_0x1835b6){_0x5ce268=_0x5ce268-0x0;var _0x28c96a=_0xd1f9[_0x5ce268];return _0x28c96a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x9d1f('0x0'));var timeout=require(_0x9d1f('0x1'));var express=require(_0x9d1f('0x2'));var router=express[_0x9d1f('0x3')]();var fs_extra=require(_0x9d1f('0x4'));var auth=require(_0x9d1f('0x5'));var interaction=require(_0x9d1f('0x6'));var config=require(_0x9d1f('0x7'));var controller=require(_0x9d1f('0x8'));router['get']('/',controller[_0x9d1f('0x9')]);module[_0x9d1f('0xa')]=router;
\ No newline at end of file
index 310fb89..8f10d65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf460=['exports','STRING','version'];(function(_0x36d4f3,_0x2b8f5f){var _0x2bf8c8=function(_0x4eb7ec){while(--_0x4eb7ec){_0x36d4f3['push'](_0x36d4f3['shift']());}};_0x2bf8c8(++_0x2b8f5f);}(_0xf460,0x1e3));var _0x0f46=function(_0xe723aa,_0x3764f4){_0xe723aa=_0xe723aa-0x0;var _0x233566=_0xf460[_0xe723aa];return _0x233566;};'use strict';var Sequelize=require('sequelize');module[_0x0f46('0x0')]={'version':{'type':Sequelize[_0x0f46('0x1')],'unique':_0x0f46('0x2')}};
\ No newline at end of file
+var _0x58fc=['exports','sequelize'];(function(_0x302f54,_0x40b81c){var _0x696641=function(_0x1b2215){while(--_0x1b2215){_0x302f54['push'](_0x302f54['shift']());}};_0x696641(++_0x40b81c);}(_0x58fc,0x1d9));var _0xc58f=function(_0x409698,_0x188402){_0x409698=_0x409698-0x0;var _0x2ca552=_0x58fc[_0x409698];return _0x2ca552;};'use strict';var Sequelize=require(_0xc58f('0x0'));module[_0xc58f('0x1')]={'version':{'type':Sequelize['STRING'],'unique':'version'}};
\ No newline at end of file
index 742a27f..19eac4e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5443=['include','findAll','rows','catch','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path','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/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','then','error','stack','name','send','index','map','rawAttributes','query','keys','filters','intersection','attributes','model','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','type','VIRTUAL','options','Migration'];(function(_0x51204a,_0x59d14f){var _0x2fdd05=function(_0x3339b4){while(--_0x3339b4){_0x51204a['push'](_0x51204a['shift']());}};_0x2fdd05(++_0x59d14f);}(_0x5443,0x120));var _0x3544=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x5443[_0x19950b];return _0x3c6b41;};'use strict';var emlformat=require(_0x3544('0x0'));var rimraf=require(_0x3544('0x1'));var zipdir=require(_0x3544('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3544('0x3'));var moment=require(_0x3544('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x3544('0x5'));var util=require(_0x3544('0x6'));var path=require(_0x3544('0x7'));var sox=require('sox');var csv=require(_0x3544('0x8'));var ejs=require(_0x3544('0x9'));var fs=require('fs');var fs_extra=require(_0x3544('0xa'));var _=require(_0x3544('0xb'));var squel=require(_0x3544('0xc'));var crypto=require('crypto');var jsforce=require(_0x3544('0xd'));var deskjs=require(_0x3544('0xe'));var toCsv=require(_0x3544('0x8'));var querystring=require(_0x3544('0xf'));var Papa=require(_0x3544('0x10'));var Redis=require(_0x3544('0x11'));var authService=require(_0x3544('0x12'));var qs=require(_0x3544('0x13'));var as=require(_0x3544('0x14'));var hardwareService=require(_0x3544('0x15'));var logger=require(_0x3544('0x16'))(_0x3544('0x17'));var utils=require(_0x3544('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0x3544('0x19'));var db=require(_0x3544('0x1a'))['db'];function respondWithStatusCode(_0x1119a6,_0x164b2a){_0x164b2a=_0x164b2a||0xcc;return function(_0x1ddc4c){if(_0x1ddc4c){return _0x1119a6[_0x3544('0x1b')](_0x164b2a);}return _0x1119a6[_0x3544('0x1c')](_0x164b2a)['end']();};}function respondWithResult(_0x30c2c3,_0x448a63){_0x448a63=_0x448a63||0xc8;return function(_0x1873f3){if(_0x1873f3){return _0x30c2c3[_0x3544('0x1c')](_0x448a63)['json'](_0x1873f3);}};}function respondWithFilteredResult(_0x8b8c5c,_0x1b3f56){return function(_0x44ecf7){if(_0x44ecf7){var _0x24803a=typeof _0x1b3f56[_0x3544('0x1d')]===_0x3544('0x1e')&&typeof _0x1b3f56[_0x3544('0x1f')]==='undefined';var _0x5830b4=_0x44ecf7[_0x3544('0x20')];var _0x376579=_0x24803a?0x0:_0x1b3f56['offset'];var _0x199721=_0x24803a?_0x44ecf7['count']:_0x1b3f56[_0x3544('0x1d')]+_0x1b3f56['limit'];var _0x5f5921;if(_0x199721>=_0x5830b4){_0x199721=_0x5830b4;_0x5f5921=0xc8;}else{_0x5f5921=0xce;}_0x8b8c5c['status'](_0x5f5921);return _0x8b8c5c[_0x3544('0x21')](_0x3544('0x22'),_0x376579+'-'+_0x199721+'/'+_0x5830b4)[_0x3544('0x23')](_0x44ecf7);}return null;};}function patchUpdates(_0x56b1b7){return function(_0x1781ab){try{jsonpatch[_0x3544('0x24')](_0x1781ab,_0x56b1b7,!![]);}catch(_0x5e7b68){return BPromise[_0x3544('0x25')](_0x5e7b68);}return _0x1781ab[_0x3544('0x26')]();};}function saveUpdates(_0x5a582b,_0x1511e3){return function(_0x22d282){if(_0x22d282){return _0x22d282[_0x3544('0x27')](_0x5a582b)['then'](function(_0x4bbd03){return _0x4bbd03;});}return null;};}function removeEntity(_0x589b7c,_0x2cc75d){return function(_0x2eefaf){if(_0x2eefaf){return _0x2eefaf[_0x3544('0x28')]()[_0x3544('0x29')](function(){_0x589b7c[_0x3544('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x344f00,_0x3c087f){return function(_0x5a6a1a){if(!_0x5a6a1a){_0x344f00[_0x3544('0x1b')](0x194);}return _0x5a6a1a;};}function handleError(_0x463c3a,_0x961f3c){_0x961f3c=_0x961f3c||0x1f4;return function(_0x145b6d){logger[_0x3544('0x2a')](_0x145b6d[_0x3544('0x2b')]);if(_0x145b6d[_0x3544('0x2c')]){delete _0x145b6d[_0x3544('0x2c')];}_0x463c3a[_0x3544('0x1c')](_0x961f3c)[_0x3544('0x2d')](_0x145b6d);};}exports[_0x3544('0x2e')]=function(_0x8f709c,_0x3655e0){var _0x954676={},_0x2d23e1={},_0xa02a0e={'count':0x0,'rows':[]};var _0x2babac=_[_0x3544('0x2f')](db['Migration'][_0x3544('0x30')],function(_0x5d563d){return{'name':_0x5d563d['fieldName'],'type':_0x5d563d['type']['key']};});_0x2d23e1['model']=_['map'](_0x2babac,'name');_0x2d23e1[_0x3544('0x31')]=_[_0x3544('0x32')](_0x8f709c[_0x3544('0x31')]);_0x2d23e1[_0x3544('0x33')]=_[_0x3544('0x34')](_0x2d23e1['model'],_0x2d23e1[_0x3544('0x31')]);_0x954676[_0x3544('0x35')]=_[_0x3544('0x34')](_0x2d23e1[_0x3544('0x36')],qs[_0x3544('0x37')](_0x8f709c['query'][_0x3544('0x37')]));_0x954676[_0x3544('0x35')]=_0x954676['attributes']['length']?_0x954676[_0x3544('0x35')]:_0x2d23e1[_0x3544('0x36')];if(!_0x8f709c['query'][_0x3544('0x38')](_0x3544('0x39'))){_0x954676[_0x3544('0x1f')]=qs['limit'](_0x8f709c[_0x3544('0x31')]['limit']);_0x954676[_0x3544('0x1d')]=qs[_0x3544('0x1d')](_0x8f709c[_0x3544('0x31')][_0x3544('0x1d')]);}_0x954676[_0x3544('0x3a')]=qs[_0x3544('0x3b')](_0x8f709c[_0x3544('0x31')][_0x3544('0x3b')]);_0x954676['where']=qs[_0x3544('0x33')](_[_0x3544('0x3c')](_0x8f709c[_0x3544('0x31')],_0x2d23e1[_0x3544('0x33')]),_0x2babac);if(_0x8f709c[_0x3544('0x31')][_0x3544('0x3d')]){_0x954676[_0x3544('0x3e')]=_['merge'](_0x954676[_0x3544('0x3e')],{'$or':_[_0x3544('0x2f')](_0x2babac,function(_0xb9c90){if(_0xb9c90[_0x3544('0x3f')]!==_0x3544('0x40')){var _0x3bee14={};_0x3bee14[_0xb9c90[_0x3544('0x2c')]]={'$like':'%'+_0x8f709c[_0x3544('0x31')][_0x3544('0x3d')]+'%'};return _0x3bee14;}})});}_0x954676=_['merge']({},_0x954676,_0x8f709c[_0x3544('0x41')]);var _0x4f6bd2={'where':_0x954676[_0x3544('0x3e')]};return db[_0x3544('0x42')]['count'](_0x4f6bd2)[_0x3544('0x29')](function(_0x6745b0){_0xa02a0e[_0x3544('0x20')]=_0x6745b0;if(_0x8f709c[_0x3544('0x31')]['includeAll']){_0x954676[_0x3544('0x43')]=[{'all':!![]}];}return db[_0x3544('0x42')][_0x3544('0x44')](_0x954676);})[_0x3544('0x29')](function(_0x24a391){_0xa02a0e[_0x3544('0x45')]=_0x24a391;return _0xa02a0e;})['then'](respondWithFilteredResult(_0x3655e0,_0x954676))[_0x3544('0x46')](handleError(_0x3655e0,null));};
\ No newline at end of file
+var _0x273c=['request-promise','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','apply','save','update','then','destroy','error','stack','name','index','map','Migration','rawAttributes','fieldName','type','key','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','filter','VIRTUAL','merge','options','include','findAll','catch','rimraf','zip-dir','fast-json-patch'];(function(_0x258919,_0x1754e6){var _0xfbd68b=function(_0x3bc3e9){while(--_0x3bc3e9){_0x258919['push'](_0x258919['shift']());}};_0xfbd68b(++_0x1754e6);}(_0x273c,0x89));var _0xc273=function(_0x500c0,_0xdb6a03){_0x500c0=_0x500c0-0x0;var _0xdd146f=_0x273c[_0x500c0];return _0xdd146f;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc273('0x0'));var zipdir=require(_0xc273('0x1'));var jsonpatch=require(_0xc273('0x2'));var rp=require(_0xc273('0x3'));var moment=require('moment');var BPromise=require(_0xc273('0x4'));var Mustache=require('mustache');var util=require(_0xc273('0x5'));var path=require(_0xc273('0x6'));var sox=require(_0xc273('0x7'));var csv=require(_0xc273('0x8'));var ejs=require(_0xc273('0x9'));var fs=require('fs');var fs_extra=require(_0xc273('0xa'));var _=require('lodash');var squel=require(_0xc273('0xb'));var crypto=require(_0xc273('0xc'));var jsforce=require(_0xc273('0xd'));var deskjs=require(_0xc273('0xe'));var toCsv=require(_0xc273('0x8'));var querystring=require(_0xc273('0xf'));var Papa=require(_0xc273('0x10'));var Redis=require(_0xc273('0x11'));var authService=require(_0xc273('0x12'));var qs=require(_0xc273('0x13'));var as=require(_0xc273('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xc273('0x15'));var utils=require(_0xc273('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xc273('0x17'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1861e8,_0x5a7795){_0x5a7795=_0x5a7795||0xcc;return function(_0x4219b7){if(_0x4219b7){return _0x1861e8[_0xc273('0x18')](_0x5a7795);}return _0x1861e8['status'](_0x5a7795)[_0xc273('0x19')]();};}function respondWithResult(_0x21f8a8,_0x516983){_0x516983=_0x516983||0xc8;return function(_0x160088){if(_0x160088){return _0x21f8a8[_0xc273('0x1a')](_0x516983)[_0xc273('0x1b')](_0x160088);}};}function respondWithFilteredResult(_0x3d9ed1,_0x10fcbb){return function(_0x3a882e){if(_0x3a882e){var _0x334e2e=typeof _0x10fcbb[_0xc273('0x1c')]===_0xc273('0x1d')&&typeof _0x10fcbb['limit']==='undefined';var _0xaea6e6=_0x3a882e[_0xc273('0x1e')];var _0x40c23b=_0x334e2e?0x0:_0x10fcbb['offset'];var _0x44bf09=_0x334e2e?_0x3a882e[_0xc273('0x1e')]:_0x10fcbb[_0xc273('0x1c')]+_0x10fcbb[_0xc273('0x1f')];var _0x54566e;if(_0x44bf09>=_0xaea6e6){_0x44bf09=_0xaea6e6;_0x54566e=0xc8;}else{_0x54566e=0xce;}_0x3d9ed1[_0xc273('0x1a')](_0x54566e);return _0x3d9ed1[_0xc273('0x20')](_0xc273('0x21'),_0x40c23b+'-'+_0x44bf09+'/'+_0xaea6e6)[_0xc273('0x1b')](_0x3a882e);}return null;};}function patchUpdates(_0x21bd96){return function(_0x1b6d74){try{jsonpatch[_0xc273('0x22')](_0x1b6d74,_0x21bd96,!![]);}catch(_0x114bdb){return BPromise['reject'](_0x114bdb);}return _0x1b6d74[_0xc273('0x23')]();};}function saveUpdates(_0x1d402f,_0x270794){return function(_0x52d980){if(_0x52d980){return _0x52d980[_0xc273('0x24')](_0x1d402f)[_0xc273('0x25')](function(_0x1147f2){return _0x1147f2;});}return null;};}function removeEntity(_0x4712ec,_0x4dabe3){return function(_0x2ff23c){if(_0x2ff23c){return _0x2ff23c[_0xc273('0x26')]()[_0xc273('0x25')](function(){_0x4712ec[_0xc273('0x1a')](0xcc)[_0xc273('0x19')]();});}};}function handleEntityNotFound(_0x4d8607,_0x1a87e4){return function(_0x5dbfb8){if(!_0x5dbfb8){_0x4d8607['sendStatus'](0x194);}return _0x5dbfb8;};}function handleError(_0x1a31af,_0x2ede29){_0x2ede29=_0x2ede29||0x1f4;return function(_0x3833eb){logger[_0xc273('0x27')](_0x3833eb[_0xc273('0x28')]);if(_0x3833eb[_0xc273('0x29')]){delete _0x3833eb[_0xc273('0x29')];}_0x1a31af[_0xc273('0x1a')](_0x2ede29)['send'](_0x3833eb);};}exports[_0xc273('0x2a')]=function(_0x452e00,_0x337348){var _0x12be15={},_0x4921e0={},_0x24e7ce={'count':0x0,'rows':[]};var _0x5948e4=_[_0xc273('0x2b')](db[_0xc273('0x2c')][_0xc273('0x2d')],function(_0x1a3416){return{'name':_0x1a3416[_0xc273('0x2e')],'type':_0x1a3416[_0xc273('0x2f')][_0xc273('0x30')]};});_0x4921e0['model']=_[_0xc273('0x2b')](_0x5948e4,_0xc273('0x29'));_0x4921e0[_0xc273('0x31')]=_[_0xc273('0x32')](_0x452e00['query']);_0x4921e0['filters']=_[_0xc273('0x33')](_0x4921e0[_0xc273('0x34')],_0x4921e0[_0xc273('0x31')]);_0x12be15['attributes']=_['intersection'](_0x4921e0[_0xc273('0x34')],qs[_0xc273('0x35')](_0x452e00[_0xc273('0x31')][_0xc273('0x35')]));_0x12be15['attributes']=_0x12be15[_0xc273('0x36')][_0xc273('0x37')]?_0x12be15[_0xc273('0x36')]:_0x4921e0['model'];if(!_0x452e00['query'][_0xc273('0x38')](_0xc273('0x39'))){_0x12be15[_0xc273('0x1f')]=qs['limit'](_0x452e00[_0xc273('0x31')][_0xc273('0x1f')]);_0x12be15['offset']=qs[_0xc273('0x1c')](_0x452e00['query'][_0xc273('0x1c')]);}_0x12be15[_0xc273('0x3a')]=qs[_0xc273('0x3b')](_0x452e00[_0xc273('0x31')][_0xc273('0x3b')]);_0x12be15[_0xc273('0x3c')]=qs[_0xc273('0x3d')](_[_0xc273('0x3e')](_0x452e00['query'],_0x4921e0[_0xc273('0x3d')]),_0x5948e4);if(_0x452e00[_0xc273('0x31')][_0xc273('0x3f')]){_0x12be15['where']=_['merge'](_0x12be15[_0xc273('0x3c')],{'$or':_[_0xc273('0x2b')](_0x5948e4,function(_0x180ee7){if(_0x180ee7['type']!==_0xc273('0x40')){var _0x2fab90={};_0x2fab90[_0x180ee7[_0xc273('0x29')]]={'$like':'%'+_0x452e00['query'][_0xc273('0x3f')]+'%'};return _0x2fab90;}})});}_0x12be15=_[_0xc273('0x41')]({},_0x12be15,_0x452e00[_0xc273('0x42')]);var _0x1bd4fb={'where':_0x12be15['where']};return db[_0xc273('0x2c')][_0xc273('0x1e')](_0x1bd4fb)[_0xc273('0x25')](function(_0x3cc255){_0x24e7ce[_0xc273('0x1e')]=_0x3cc255;if(_0x452e00[_0xc273('0x31')]['includeAll']){_0x12be15[_0xc273('0x43')]=[{'all':!![]}];}return db['Migration'][_0xc273('0x44')](_0x12be15);})[_0xc273('0x25')](function(_0x1281bb){_0x24e7ce['rows']=_0x1281bb;return _0x24e7ce;})[_0xc273('0x25')](respondWithFilteredResult(_0x337348,_0x12be15))[_0xc273('0x45')](handleError(_0x337348,null));};
\ No newline at end of file
index 7b4a85d..19a3ebc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x577e=['request-promise','path','../../config/environment','./migration.attributes','exports','define','Migration','migrations','util','../../config/logger','api','bluebird'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x577e,0xec));var _0xe577=function(_0x4429e0,_0xee6f1f){_0x4429e0=_0x4429e0-0x0;var _0x51a5b3=_0x577e[_0x4429e0];return _0x51a5b3;};'use strict';var _=require('lodash');var util=require(_0xe577('0x0'));var logger=require(_0xe577('0x1'))(_0xe577('0x2'));var moment=require('moment');var BPromise=require(_0xe577('0x3'));var rp=require(_0xe577('0x4'));var fs=require('fs');var path=require(_0xe577('0x5'));var rimraf=require('rimraf');var config=require(_0xe577('0x6'));var attributes=require(_0xe577('0x7'));module[_0xe577('0x8')]=function(_0x1fb612,_0x4b33fb){return _0x1fb612[_0xe577('0x9')](_0xe577('0xa'),attributes,{'tableName':_0xe577('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3a91=['./migration.attributes','Migration','lodash','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x3a91,0xc8));var _0x13a9=function(_0x6e6098,_0x5fa384){_0x6e6098=_0x6e6098-0x0;var _0xcf2c19=_0x3a91[_0x6e6098];return _0xcf2c19;};'use strict';var _=require(_0x13a9('0x0'));var util=require('util');var logger=require(_0x13a9('0x1'))(_0x13a9('0x2'));var moment=require(_0x13a9('0x3'));var BPromise=require(_0x13a9('0x4'));var rp=require(_0x13a9('0x5'));var fs=require('fs');var path=require(_0x13a9('0x6'));var rimraf=require(_0x13a9('0x7'));var config=require(_0x13a9('0x8'));var attributes=require(_0x13a9('0x9'));module['exports']=function(_0x35d54d,_0x35111a){return _0x35d54d['define'](_0x13a9('0xa'),attributes,{'tableName':'migrations','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8665f64..f4f508e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0439=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','client','then','Migration,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','info','result'];(function(_0x359fbd,_0x1c1f0b){var _0x9dbc5f=function(_0x3f9efd){while(--_0x3f9efd){_0x359fbd['push'](_0x359fbd['shift']());}};_0x9dbc5f(++_0x1c1f0b);}(_0x0439,0xdd));var _0x9043=function(_0x4bafac,_0x4ab088){_0x4bafac=_0x4bafac-0x0;var _0x2f706b=_0x0439[_0x4bafac];return _0x2f706b;};'use strict';var _=require(_0x9043('0x0'));var util=require(_0x9043('0x1'));var moment=require(_0x9043('0x2'));var BPromise=require(_0x9043('0x3'));var rs=require(_0x9043('0x4'));var fs=require('fs');var Redis=require(_0x9043('0x5'));var db=require(_0x9043('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x9043('0x7'))(_0x9043('0x8'));var config=require(_0x9043('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x9043('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4f79c2,_0x2fe4da,_0x19bf02){return new BPromise(function(_0x5bea98,_0x135a40){return client['request'](_0x4f79c2,_0x19bf02)[_0x9043('0xb')](function(_0x36a5cb){logger['info'](_0x9043('0xc'),_0x2fe4da,_0x9043('0xd'));logger[_0x9043('0xe')]('Migration,\x20%s,\x20%s,\x20%s',_0x2fe4da,'request\x20sent',JSON[_0x9043('0xf')](_0x36a5cb));if(_0x36a5cb[_0x9043('0x10')]){if(_0x36a5cb['error'][_0x9043('0x11')]===0x1f4){logger[_0x9043('0x10')](_0x9043('0xc'),_0x2fe4da,_0x36a5cb[_0x9043('0x10')][_0x9043('0x12')]);return _0x135a40(_0x36a5cb[_0x9043('0x10')]['message']);}logger[_0x9043('0x10')](_0x9043('0xc'),_0x2fe4da,_0x36a5cb['error'][_0x9043('0x12')]);return _0x5bea98(_0x36a5cb[_0x9043('0x10')]['message']);}else{logger[_0x9043('0x13')](_0x9043('0xc'),_0x2fe4da,_0x9043('0xd'));_0x5bea98(_0x36a5cb[_0x9043('0x14')][_0x9043('0x12')]);}})[_0x9043('0x15')](function(_0x13b613){logger[_0x9043('0x10')](_0x9043('0xc'),_0x2fe4da,_0x13b613);_0x135a40(_0x13b613);});});}
\ No newline at end of file
+var _0xd816=['error','message','result','catch','lodash','util','bluebird','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','request\x20sent','Migration,\x20%s,\x20%s,\x20%s','stringify','Migration,\x20%s,\x20%s'];(function(_0x55ba09,_0x23ff18){var _0x152e9a=function(_0x306868){while(--_0x306868){_0x55ba09['push'](_0x55ba09['shift']());}};_0x152e9a(++_0x23ff18);}(_0xd816,0xd5));var _0x6d81=function(_0x1c177b,_0x1df2da){_0x1c177b=_0x1c177b-0x0;var _0x40dc4a=_0xd816[_0x1c177b];return _0x40dc4a;};'use strict';var _=require(_0x6d81('0x0'));var util=require(_0x6d81('0x1'));var moment=require('moment');var BPromise=require(_0x6d81('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x6d81('0x3'));var logger=require(_0x6d81('0x4'))(_0x6d81('0x5'));var config=require(_0x6d81('0x6'));var jayson=require('jayson/promise');var client=jayson[_0x6d81('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x10f1a7,_0x522603,_0x96d1ac){return new BPromise(function(_0x15d634,_0x4e77e8){return client[_0x6d81('0x8')](_0x10f1a7,_0x96d1ac)[_0x6d81('0x9')](function(_0x8612be){logger[_0x6d81('0xa')]('Migration,\x20%s,\x20%s',_0x522603,_0x6d81('0xb'));logger['debug'](_0x6d81('0xc'),_0x522603,_0x6d81('0xb'),JSON[_0x6d81('0xd')](_0x8612be));if(_0x8612be['error']){if(_0x8612be['error']['code']===0x1f4){logger['error'](_0x6d81('0xe'),_0x522603,_0x8612be[_0x6d81('0xf')][_0x6d81('0x10')]);return _0x4e77e8(_0x8612be[_0x6d81('0xf')]['message']);}logger[_0x6d81('0xf')](_0x6d81('0xe'),_0x522603,_0x8612be[_0x6d81('0xf')][_0x6d81('0x10')]);return _0x15d634(_0x8612be['error'][_0x6d81('0x10')]);}else{logger['info']('Migration,\x20%s,\x20%s',_0x522603,_0x6d81('0xb'));_0x15d634(_0x8612be[_0x6d81('0x11')][_0x6d81('0x10')]);}})[_0x6d81('0x12')](function(_0x219f73){logger[_0x6d81('0xf')](_0x6d81('0xe'),_0x522603,_0x219f73);_0x4e77e8(_0x219f73);});});}
\ No newline at end of file
index 8eddec8..527d856 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x02fe=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./network.controller','get','isAuthenticated','index','/:id','post','create','put','delete','destroy','exports'];(function(_0x10f174,_0x88f055){var _0x13b094=function(_0x299081){while(--_0x299081){_0x10f174['push'](_0x10f174['shift']());}};_0x13b094(++_0x88f055);}(_0x02fe,0x1b8));var _0xe02f=function(_0x5ab6c2,_0x59523c){_0x5ab6c2=_0x5ab6c2-0x0;var _0x4c0a44=_0x02fe[_0x5ab6c2];return _0x4c0a44;};'use strict';var multer=require('multer');var util=require(_0xe02f('0x0'));var path=require(_0xe02f('0x1'));var timeout=require(_0xe02f('0x2'));var express=require(_0xe02f('0x3'));var router=express[_0xe02f('0x4')]();var fs_extra=require(_0xe02f('0x5'));var auth=require(_0xe02f('0x6'));var interaction=require(_0xe02f('0x7'));var config=require(_0xe02f('0x8'));var controller=require(_0xe02f('0x9'));router[_0xe02f('0xa')]('/',auth[_0xe02f('0xb')](),controller[_0xe02f('0xc')]);router[_0xe02f('0xa')](_0xe02f('0xd'),auth[_0xe02f('0xb')](),controller['show']);router[_0xe02f('0xe')]('/',auth['isAuthenticated'](),controller[_0xe02f('0xf')]);router[_0xe02f('0x10')](_0xe02f('0xd'),auth[_0xe02f('0xb')](),controller['update']);router[_0xe02f('0x11')](_0xe02f('0xd'),auth[_0xe02f('0xb')](),controller[_0xe02f('0x12')]);module[_0xe02f('0x13')]=router;
\ No newline at end of file
+var _0x1a37=['multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','put','update','delete','destroy'];(function(_0x2e7087,_0x112eec){var _0xb5b3a6=function(_0x296310){while(--_0x296310){_0x2e7087['push'](_0x2e7087['shift']());}};_0xb5b3a6(++_0x112eec);}(_0x1a37,0xb4));var _0x71a3=function(_0x18ab2a,_0x4debcd){_0x18ab2a=_0x18ab2a-0x0;var _0x16dcee=_0x1a37[_0x18ab2a];return _0x16dcee;};'use strict';var multer=require(_0x71a3('0x0'));var util=require(_0x71a3('0x1'));var path=require(_0x71a3('0x2'));var timeout=require(_0x71a3('0x3'));var express=require(_0x71a3('0x4'));var router=express[_0x71a3('0x5')]();var fs_extra=require(_0x71a3('0x6'));var auth=require(_0x71a3('0x7'));var interaction=require(_0x71a3('0x8'));var config=require(_0x71a3('0x9'));var controller=require('./network.controller');router[_0x71a3('0xa')]('/',auth['isAuthenticated'](),controller[_0x71a3('0xb')]);router[_0x71a3('0xa')](_0x71a3('0xc'),auth[_0x71a3('0xd')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x71a3('0xe')](_0x71a3('0xc'),auth[_0x71a3('0xd')](),controller[_0x71a3('0xf')]);router[_0x71a3('0x10')](_0x71a3('0xc'),auth[_0x71a3('0xd')](),controller[_0x71a3('0x11')]);module['exports']=router;
\ No newline at end of file
index 5bbefcd..28a2038 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6838=['externip','stun','turn','STRING','sequelize','exports','ENUM'];(function(_0x584c5b,_0x5bb06e){var _0x516695=function(_0x1936e2){while(--_0x1936e2){_0x584c5b['push'](_0x584c5b['shift']());}};_0x516695(++_0x5bb06e);}(_0x6838,0xe4));var _0x8683=function(_0x1e1c1e,_0x63d716){_0x1e1c1e=_0x1e1c1e-0x0;var _0x3e0911=_0x6838[_0x1e1c1e];return _0x3e0911;};'use strict';var Sequelize=require(_0x8683('0x0'));module[_0x8683('0x1')]={'type':{'type':Sequelize[_0x8683('0x2')]('localnet',_0x8683('0x3'),_0x8683('0x4'),_0x8683('0x5'))},'value':{'type':Sequelize[_0x8683('0x6')]},'username':{'type':Sequelize[_0x8683('0x6')]},'password':{'type':Sequelize[_0x8683('0x6')]}};
\ No newline at end of file
+var _0x1ba1=['stun','STRING','sequelize','exports','localnet','externip'];(function(_0x3b73b3,_0x257016){var _0x1440c8=function(_0x49c3a2){while(--_0x49c3a2){_0x3b73b3['push'](_0x3b73b3['shift']());}};_0x1440c8(++_0x257016);}(_0x1ba1,0x1e8));var _0x11ba=function(_0x52c1f6,_0x4eda0b){_0x52c1f6=_0x52c1f6-0x0;var _0x4df981=_0x1ba1[_0x52c1f6];return _0x4df981;};'use strict';var Sequelize=require(_0x11ba('0x0'));module[_0x11ba('0x1')]={'type':{'type':Sequelize['ENUM'](_0x11ba('0x2'),_0x11ba('0x3'),_0x11ba('0x4'),'turn')},'value':{'type':Sequelize[_0x11ba('0x5')]},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 531e906..fa8ebe4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x625b=['papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','client','http','request','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','error','message','result','sendStatus','status','json','undefined','limit','count','offset','Content-Range','save','update','then','destroy','stack','name','index','map','Network','rawAttributes','fieldName','type','key','query','keys','model','attributes','fields','sort','where','filters','pick','filter','options','includeAll','findAll','rows','params','intersection','length','include','merge','find','catch','sequelize','transaction','body','toUpperCase','STUN','readFileSync','join','root','server/files/templates/stun_multiple.ejs','/etc/asterisk/stun_xcally.conf','res_stun_monitor.so','TURN','render','Reload','create','server/files/templates/network.ejs','format','/etc/asterisk/sip_xcally_%s.conf','toLowerCase','chan_sip.so','utf8','writeFileSync','server/files/templates/turn_multiple.ejs','/etc/asterisk/turn_xcally.conf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','querystring'];(function(_0x5c3751,_0x1741ac){var _0xa3c2f=function(_0x14a810){while(--_0x14a810){_0x5c3751['push'](_0x5c3751['shift']());}};_0xa3c2f(++_0x1741ac);}(_0x625b,0x121));var _0xb625=function(_0x1fe288,_0xc1734){_0x1fe288=_0x1fe288-0x0;var _0x2d35e8=_0x625b[_0x1fe288];return _0x2d35e8;};'use strict';var emlformat=require(_0xb625('0x0'));var rimraf=require(_0xb625('0x1'));var zipdir=require(_0xb625('0x2'));var jsonpatch=require(_0xb625('0x3'));var rp=require(_0xb625('0x4'));var moment=require(_0xb625('0x5'));var BPromise=require(_0xb625('0x6'));var Mustache=require(_0xb625('0x7'));var util=require(_0xb625('0x8'));var path=require(_0xb625('0x9'));var sox=require(_0xb625('0xa'));var csv=require(_0xb625('0xb'));var ejs=require(_0xb625('0xc'));var fs=require('fs');var fs_extra=require(_0xb625('0xd'));var _=require(_0xb625('0xe'));var squel=require(_0xb625('0xf'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require(_0xb625('0xb'));var querystring=require(_0xb625('0x10'));var Papa=require(_0xb625('0x11'));var Redis=require(_0xb625('0x12'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xb625('0x13'));var hardwareService=require(_0xb625('0x14'));var logger=require(_0xb625('0x15'))(_0xb625('0x16'));var utils=require(_0xb625('0x17'));var config=require(_0xb625('0x18'));var licenseUtil=require(_0xb625('0x19'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0xb625('0x1a')][_0xb625('0x1b')]({'port':0x232a});function respondWithRpcPromise(_0x206847,_0x1e167c,_0x47f45b,_0x5c8b7f){return new BPromise(function(_0x38d369,_0xce6caf){var _0x534711=_0x5c8b7f||client;return _0x534711[_0xb625('0x1c')](_0x206847,_0x47f45b)['then'](function(_0x57a610){logger['info'](_0xb625('0x1d'),_0x1e167c,_0xb625('0x1e'));logger[_0xb625('0x1f')](_0xb625('0x20'),_0x1e167c,_0xb625('0x1e'),JSON['stringify'](_0x57a610));if(_0x57a610[_0xb625('0x21')]){if(_0x57a610['error']['code']===0x1f4){logger[_0xb625('0x21')]('Network,\x20%s,\x20%s',_0x1e167c,_0x57a610['error'][_0xb625('0x22')]);return _0xce6caf(_0x57a610[_0xb625('0x21')][_0xb625('0x22')]);}logger[_0xb625('0x21')](_0xb625('0x1d'),_0x1e167c,_0x57a610[_0xb625('0x21')][_0xb625('0x22')]);return _0x38d369(_0x57a610[_0xb625('0x21')][_0xb625('0x22')]);}else{logger['info'](_0xb625('0x1d'),_0x1e167c,_0xb625('0x1e'));_0x38d369(_0x57a610[_0xb625('0x23')][_0xb625('0x22')]);}})['catch'](function(_0x158a7f){logger[_0xb625('0x21')](_0xb625('0x1d'),_0x1e167c,_0x158a7f);_0xce6caf(_0x158a7f);});});}function respondWithStatusCode(_0x11cb40,_0x2a9d94){_0x2a9d94=_0x2a9d94||0xcc;return function(_0x4bb46d){if(_0x4bb46d){return _0x11cb40[_0xb625('0x24')](_0x2a9d94);}return _0x11cb40[_0xb625('0x25')](_0x2a9d94)['end']();};}function respondWithResult(_0x36b812,_0x15146b){_0x15146b=_0x15146b||0xc8;return function(_0x5de765){if(_0x5de765){return _0x36b812[_0xb625('0x25')](_0x15146b)[_0xb625('0x26')](_0x5de765);}};}function respondWithFilteredResult(_0x428c11,_0x1a04ab){return function(_0x473125){if(_0x473125){var _0x3fa90=typeof _0x1a04ab['offset']===_0xb625('0x27')&&typeof _0x1a04ab[_0xb625('0x28')]===_0xb625('0x27');var _0x290057=_0x473125[_0xb625('0x29')];var _0x18d8d8=_0x3fa90?0x0:_0x1a04ab[_0xb625('0x2a')];var _0x1f9516=_0x3fa90?_0x473125[_0xb625('0x29')]:_0x1a04ab['offset']+_0x1a04ab[_0xb625('0x28')];var _0x53d15f;if(_0x1f9516>=_0x290057){_0x1f9516=_0x290057;_0x53d15f=0xc8;}else{_0x53d15f=0xce;}_0x428c11[_0xb625('0x25')](_0x53d15f);return _0x428c11['set'](_0xb625('0x2b'),_0x18d8d8+'-'+_0x1f9516+'/'+_0x290057)[_0xb625('0x26')](_0x473125);}return null;};}function patchUpdates(_0x12015f){return function(_0x582e3d){try{jsonpatch['apply'](_0x582e3d,_0x12015f,!![]);}catch(_0x224b26){return BPromise['reject'](_0x224b26);}return _0x582e3d[_0xb625('0x2c')]();};}function saveUpdates(_0xe7a6e8,_0x270b82){return function(_0x1cfabf){if(_0x1cfabf){return _0x1cfabf[_0xb625('0x2d')](_0xe7a6e8)[_0xb625('0x2e')](function(_0x625c84){return _0x625c84;});}return null;};}function removeEntity(_0x38e812,_0x1d3c11){return function(_0xf9be7f){if(_0xf9be7f){return _0xf9be7f[_0xb625('0x2f')]()[_0xb625('0x2e')](function(){_0x38e812[_0xb625('0x25')](0xcc)['end']();});}};}function handleEntityNotFound(_0xefa1de,_0x1449f1){return function(_0x13e464){if(!_0x13e464){_0xefa1de[_0xb625('0x24')](0x194);}return _0x13e464;};}function handleError(_0x26ba34,_0x122ae7){_0x122ae7=_0x122ae7||0x1f4;return function(_0x3473de){logger[_0xb625('0x21')](_0x3473de[_0xb625('0x30')]);if(_0x3473de[_0xb625('0x31')]){delete _0x3473de[_0xb625('0x31')];}_0x26ba34[_0xb625('0x25')](_0x122ae7)['send'](_0x3473de);};}exports[_0xb625('0x32')]=function(_0x4ad0de,_0x5cb914){var _0x4f0538={},_0x50e8bf={},_0x17efc8={'count':0x0,'rows':[]};var _0x52a131=_[_0xb625('0x33')](db[_0xb625('0x34')][_0xb625('0x35')],function(_0x133e14){return{'name':_0x133e14[_0xb625('0x36')],'type':_0x133e14[_0xb625('0x37')][_0xb625('0x38')]};});_0x50e8bf['model']=_['map'](_0x52a131,_0xb625('0x31'));_0x50e8bf[_0xb625('0x39')]=_[_0xb625('0x3a')](_0x4ad0de[_0xb625('0x39')]);_0x50e8bf['filters']=_['intersection'](_0x50e8bf[_0xb625('0x3b')],_0x50e8bf['query']);_0x4f0538[_0xb625('0x3c')]=_['intersection'](_0x50e8bf[_0xb625('0x3b')],qs[_0xb625('0x3d')](_0x4ad0de['query'][_0xb625('0x3d')]));_0x4f0538[_0xb625('0x3c')]=_0x4f0538[_0xb625('0x3c')]['length']?_0x4f0538[_0xb625('0x3c')]:_0x50e8bf['model'];if(!_0x4ad0de[_0xb625('0x39')]['hasOwnProperty']('nolimit')){_0x4f0538[_0xb625('0x28')]=qs[_0xb625('0x28')](_0x4ad0de[_0xb625('0x39')]['limit']);_0x4f0538['offset']=qs['offset'](_0x4ad0de['query'][_0xb625('0x2a')]);}_0x4f0538['order']=qs[_0xb625('0x3e')](_0x4ad0de[_0xb625('0x39')][_0xb625('0x3e')]);_0x4f0538[_0xb625('0x3f')]=qs[_0xb625('0x40')](_[_0xb625('0x41')](_0x4ad0de[_0xb625('0x39')],_0x50e8bf[_0xb625('0x40')]),_0x52a131);if(_0x4ad0de[_0xb625('0x39')][_0xb625('0x42')]){_0x4f0538[_0xb625('0x3f')]=_['merge'](_0x4f0538[_0xb625('0x3f')],{'$or':_[_0xb625('0x33')](_0x52a131,function(_0x5154dc){if(_0x5154dc[_0xb625('0x37')]!=='VIRTUAL'){var _0x136ec9={};_0x136ec9[_0x5154dc[_0xb625('0x31')]]={'$like':'%'+_0x4ad0de['query'][_0xb625('0x42')]+'%'};return _0x136ec9;}})});}_0x4f0538=_['merge']({},_0x4f0538,_0x4ad0de[_0xb625('0x43')]);var _0x2d19ad={'where':_0x4f0538[_0xb625('0x3f')]};return db[_0xb625('0x34')][_0xb625('0x29')](_0x2d19ad)[_0xb625('0x2e')](function(_0xc1be34){_0x17efc8[_0xb625('0x29')]=_0xc1be34;if(_0x4ad0de[_0xb625('0x39')][_0xb625('0x44')]){_0x4f0538['include']=[{'all':!![]}];}return db['Network'][_0xb625('0x45')](_0x4f0538);})[_0xb625('0x2e')](function(_0x50f39a){_0x17efc8[_0xb625('0x46')]=_0x50f39a;return _0x17efc8;})['then'](respondWithFilteredResult(_0x5cb914,_0x4f0538))['catch'](handleError(_0x5cb914,null));};exports['show']=function(_0xa5a4cc,_0x20c4c6){var _0x5e8f3e={'raw':!![],'where':{'id':_0xa5a4cc[_0xb625('0x47')]['id']}},_0x22a00a={};_0x22a00a[_0xb625('0x3b')]=_[_0xb625('0x3a')](db['Network']['rawAttributes']);_0x22a00a['query']=_['keys'](_0xa5a4cc[_0xb625('0x39')]);_0x22a00a[_0xb625('0x40')]=_['intersection'](_0x22a00a[_0xb625('0x3b')],_0x22a00a[_0xb625('0x39')]);_0x5e8f3e[_0xb625('0x3c')]=_[_0xb625('0x48')](_0x22a00a[_0xb625('0x3b')],qs[_0xb625('0x3d')](_0xa5a4cc[_0xb625('0x39')]['fields']));_0x5e8f3e[_0xb625('0x3c')]=_0x5e8f3e[_0xb625('0x3c')][_0xb625('0x49')]?_0x5e8f3e['attributes']:_0x22a00a['model'];if(_0xa5a4cc[_0xb625('0x39')][_0xb625('0x44')]){_0x5e8f3e[_0xb625('0x4a')]=[{'all':!![]}];}_0x5e8f3e=_[_0xb625('0x4b')]({},_0x5e8f3e,_0xa5a4cc[_0xb625('0x43')]);return db['Network'][_0xb625('0x4c')](_0x5e8f3e)[_0xb625('0x2e')](handleEntityNotFound(_0x20c4c6,null))['then'](respondWithResult(_0x20c4c6,null))[_0xb625('0x4d')](handleError(_0x20c4c6,null));};exports['create']=function(_0x297c05,_0x3089fb,_0x283679){var _0x3b57ff;return db[_0xb625('0x4e')][_0xb625('0x4f')](function(_0x2f7821){return db[_0xb625('0x34')]['create'](_0x297c05[_0xb625('0x50')],{'raw':!![]})[_0xb625('0x2e')](function(_0x497266){_0x3b57ff=_0x497266;return db[_0xb625('0x34')]['findAll']({'where':{'type':_0x297c05[_0xb625('0x50')][_0xb625('0x37')]},'raw':!![]});})[_0xb625('0x2e')](function(_0x475fa8){if(_0x3b57ff['type'][_0xb625('0x51')]()==_0xb625('0x52')){var _0x139d7c=fs[_0xb625('0x53')](path[_0xb625('0x54')](config[_0xb625('0x55')],_0xb625('0x56')),'utf8');var _0x2334aa=ejs['render'](_0x139d7c,{'networks':_0x475fa8||[]});fs['writeFileSync'](_0xb625('0x57'),_0x2334aa);return respondWithRpcPromise('Reload','create',{'module':_0xb625('0x58')});}else if(_0x3b57ff['type'][_0xb625('0x51')]()==_0xb625('0x59')){var _0x556248=fs['readFileSync'](path[_0xb625('0x54')](config['root'],'server/files/templates/turn_multiple.ejs'),'utf8');var _0x508307=ejs[_0xb625('0x5a')](_0x556248,{'networks':_0x475fa8||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x508307);return respondWithRpcPromise(_0xb625('0x5b'),_0xb625('0x5c'),{'module':_0xb625('0x58')});}else{var _0xb6b115=fs[_0xb625('0x53')](path['join'](config[_0xb625('0x55')],_0xb625('0x5d')),'utf8');var _0x416e9c=ejs[_0xb625('0x5a')](_0xb6b115,{'networks':_0x475fa8||[]});fs['writeFileSync'](util[_0xb625('0x5e')](_0xb625('0x5f'),_0x297c05['body'][_0xb625('0x37')][_0xb625('0x60')]()),_0x416e9c);return respondWithRpcPromise('Reload','create',{'module':_0xb625('0x61')});}return null;})[_0xb625('0x2e')](function(){return _0x3b57ff;});})[_0xb625('0x2e')](respondWithResult(_0x3089fb,0xc9))[_0xb625('0x4d')](handleError(_0x3089fb,null));};exports['update']=function(_0xc03539,_0x36ab19,_0x3f283e){var _0x3cc1d6;return db['sequelize']['transaction'](function(_0x434eed){return db[_0xb625('0x34')][_0xb625('0x4c')]({'where':{'id':_0xc03539[_0xb625('0x47')]['id']}})[_0xb625('0x2e')](handleEntityNotFound(_0x36ab19,null))['then'](saveUpdates(_0xc03539[_0xb625('0x50')],null))[_0xb625('0x2e')](function(_0x8e0643){if(_0x8e0643){_0x3cc1d6=_0x8e0643;return db['Network'][_0xb625('0x45')]({'where':{'type':_0x3cc1d6['type']},'raw':!![]});}return null;})[_0xb625('0x2e')](function(_0xe330fc){if(_0x3cc1d6[_0xb625('0x37')][_0xb625('0x51')]()==_0xb625('0x52')){var _0x1074cd=fs[_0xb625('0x53')](path['join'](config[_0xb625('0x55')],_0xb625('0x56')),_0xb625('0x62'));var _0xb97317=ejs[_0xb625('0x5a')](_0x1074cd,{'networks':_0xe330fc||[]});fs[_0xb625('0x63')]('/etc/asterisk/stun_xcally.conf',_0xb97317);return respondWithRpcPromise('Reload',_0xb625('0x2d'),{'module':'res_stun_monitor.so'});}else if(_0x3cc1d6[_0xb625('0x37')][_0xb625('0x51')]()==_0xb625('0x59')){var _0x52cd2c=fs[_0xb625('0x53')](path['join'](config[_0xb625('0x55')],_0xb625('0x64')),_0xb625('0x62'));var _0x58cdcb=ejs[_0xb625('0x5a')](_0x52cd2c,{'networks':_0xe330fc||[]});fs['writeFileSync'](_0xb625('0x65'),_0x58cdcb);return respondWithRpcPromise(_0xb625('0x5b'),_0xb625('0x2d'),{'module':_0xb625('0x58')});}else{var _0x213f03=fs[_0xb625('0x53')](path[_0xb625('0x54')](config[_0xb625('0x55')],'server/files/templates/network.ejs'),_0xb625('0x62'));var _0x5aa176=ejs[_0xb625('0x5a')](_0x213f03,{'networks':_0xe330fc||[]});fs[_0xb625('0x63')](util['format'](_0xb625('0x5f'),_0xc03539[_0xb625('0x50')][_0xb625('0x37')][_0xb625('0x60')]()),_0x5aa176);return respondWithRpcPromise('Reload','update',{'module':_0xb625('0x61')});}return null;})[_0xb625('0x2e')](function(_0x5ec731){if(_0x5ec731){return _0x3cc1d6;}return null;});})['then'](respondWithResult(_0x36ab19,null))[_0xb625('0x4d')](handleError(_0x36ab19,null));};exports[_0xb625('0x2f')]=function(_0x337336,_0x2e361e,_0x3a9b36){var _0x5df2c1;return db[_0xb625('0x34')]['find']({'where':{'id':_0x337336[_0xb625('0x47')]['id']}})[_0xb625('0x2e')](function(_0x3f9841){_0x5df2c1=_0x3f9841;return _0x3f9841;})[_0xb625('0x2e')](handleEntityNotFound(_0x2e361e,null))['then'](removeEntity(_0x2e361e,null))['then'](function(){if(_0x5df2c1){return db['Network']['findAll']({'where':{'type':_0x5df2c1[_0xb625('0x37')]},'raw':!![]});}})[_0xb625('0x2e')](function(_0x506b34){if(_0x5df2c1[_0xb625('0x37')][_0xb625('0x51')]()==_0xb625('0x52')){var _0x21f248=fs[_0xb625('0x53')](path[_0xb625('0x54')](config[_0xb625('0x55')],_0xb625('0x56')),_0xb625('0x62'));var _0x36c1e1=ejs[_0xb625('0x5a')](_0x21f248,{'networks':_0x506b34||[]});fs[_0xb625('0x63')](_0xb625('0x57'),_0x36c1e1);return respondWithRpcPromise('Reload',_0xb625('0x2f'),{'module':_0xb625('0x58')});}else if(_0x5df2c1[_0xb625('0x37')][_0xb625('0x51')]()=='TURN'){var _0x4f33e3=fs[_0xb625('0x53')](path[_0xb625('0x54')](config[_0xb625('0x55')],_0xb625('0x64')),_0xb625('0x62'));var _0x304dd4=ejs[_0xb625('0x5a')](_0x4f33e3,{'networks':_0x506b34||[]});fs[_0xb625('0x63')](_0xb625('0x65'),_0x304dd4);return respondWithRpcPromise(_0xb625('0x5b'),'destroy',{'module':_0xb625('0x58')});}else{var _0x32e7b7=fs['readFileSync'](path[_0xb625('0x54')](config[_0xb625('0x55')],_0xb625('0x5d')),_0xb625('0x62'));var _0x26de0e=ejs[_0xb625('0x5a')](_0x32e7b7,{'networks':_0x506b34||[]});fs[_0xb625('0x63')](util['format']('/etc/asterisk/sip_xcally_%s.conf',_0x337336[_0xb625('0x50')]['type']['toLowerCase']()),_0x26de0e);return respondWithRpcPromise(_0xb625('0x5b'),_0xb625('0x2f'),{'module':_0xb625('0x61')});}return null;})[_0xb625('0x4d')](handleError(_0x2e361e,null));};
\ No newline at end of file
+var _0x9978=['name','options','includeAll','findAll','rows','show','params','include','find','create','body','type','toUpperCase','readFileSync','join','root','server/files/templates/stun_multiple.ejs','utf8','render','writeFileSync','/etc/asterisk/stun_xcally.conf','Reload','server/files/templates/turn_multiple.ejs','res_stun_monitor.so','server/files/templates/network.ejs','/etc/asterisk/sip_xcally_%s.conf','chan_sip.so','STUN','TURN','format','toLowerCase','path','lodash','../../components/parsers/qs','../../config/logger','api','../../mysqldb','jayson/promise','request','info','Network,\x20%s,\x20%s','request\x20sent','debug','Network,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','status','offset','undefined','limit','count','set','Content-Range','update','destroy','then','end','sendStatus','stack','index','Network','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL'];(function(_0x533be6,_0x1fbcbd){var _0x4fd700=function(_0x31c6b2){while(--_0x31c6b2){_0x533be6['push'](_0x533be6['shift']());}};_0x4fd700(++_0x1fbcbd);}(_0x9978,0x11b));var _0x8997=function(_0x1e3c02,_0x5c07a2){_0x1e3c02=_0x1e3c02-0x0;var _0x4d26d7=_0x9978[_0x1e3c02];return _0x4d26d7;};'use strict';var util=require('util');var path=require(_0x8997('0x0'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x8997('0x1'));var qs=require(_0x8997('0x2'));var logger=require(_0x8997('0x3'))(_0x8997('0x4'));var config=require('../../config/environment');var db=require(_0x8997('0x5'))['db'];var jayson=require(_0x8997('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x421a65,_0x4c4222,_0xdb9df4,_0xff47fe){return new Promise(function(_0x3653a0,_0x52ab3e){var _0x5d2dc8=_0xff47fe||client;return _0x5d2dc8[_0x8997('0x7')](_0x421a65,_0xdb9df4)['then'](function(_0x4254e7){logger[_0x8997('0x8')](_0x8997('0x9'),_0x4c4222,_0x8997('0xa'));logger[_0x8997('0xb')](_0x8997('0xc'),_0x4c4222,_0x8997('0xa'),JSON[_0x8997('0xd')](_0x4254e7));if(_0x4254e7[_0x8997('0xe')]){if(_0x4254e7[_0x8997('0xe')][_0x8997('0xf')]===0x1f4){logger[_0x8997('0xe')]('Network,\x20%s,\x20%s',_0x4c4222,_0x4254e7[_0x8997('0xe')]['message']);return _0x52ab3e(_0x4254e7[_0x8997('0xe')][_0x8997('0x10')]);}logger[_0x8997('0xe')](_0x8997('0x9'),_0x4c4222,_0x4254e7['error'][_0x8997('0x10')]);return _0x3653a0(_0x4254e7['error']['message']);}else{logger['info'](_0x8997('0x9'),_0x4c4222,_0x8997('0xa'));_0x3653a0(_0x4254e7[_0x8997('0x11')][_0x8997('0x10')]);}})[_0x8997('0x12')](function(_0x3b2774){logger[_0x8997('0xe')](_0x8997('0x9'),_0x4c4222,_0x3b2774);_0x52ab3e(_0x3b2774);});});}function respondWithResult(_0x34867d,_0x4a2b75){_0x4a2b75=_0x4a2b75||0xc8;return function(_0x4ed91c){if(_0x4ed91c){return _0x34867d[_0x8997('0x13')](_0x4a2b75)['json'](_0x4ed91c);}};}function respondWithFilteredResult(_0x48a761,_0x414502){return function(_0xb7072){if(_0xb7072){var _0x1758a0=typeof _0x414502[_0x8997('0x14')]===_0x8997('0x15')&&typeof _0x414502[_0x8997('0x16')]===_0x8997('0x15');var _0x38692d=_0xb7072[_0x8997('0x17')];var _0x333759=_0x1758a0?0x0:_0x414502[_0x8997('0x14')];var _0xf4939e=_0x1758a0?_0xb7072['count']:_0x414502['offset']+_0x414502['limit'];var _0x348753;if(_0xf4939e>=_0x38692d){_0xf4939e=_0x38692d;_0x348753=0xc8;}else{_0x348753=0xce;}_0x48a761[_0x8997('0x13')](_0x348753);return _0x48a761[_0x8997('0x18')](_0x8997('0x19'),_0x333759+'-'+_0xf4939e+'/'+_0x38692d)['json'](_0xb7072);}return null;};}function saveUpdates(_0x5417de){return function(_0x5cd6fb){if(_0x5cd6fb){return _0x5cd6fb[_0x8997('0x1a')](_0x5417de)['then'](function(_0x8929e1){return _0x8929e1;});}return null;};}function removeEntity(_0x66e568){return function(_0x8ea38b){if(_0x8ea38b){return _0x8ea38b[_0x8997('0x1b')]()[_0x8997('0x1c')](function(){_0x66e568['status'](0xcc)[_0x8997('0x1d')]();});}};}function handleEntityNotFound(_0x3ec0f4){return function(_0x55fc76){if(!_0x55fc76){_0x3ec0f4[_0x8997('0x1e')](0x194);}return _0x55fc76;};}function handleError(_0x4212e8,_0x5eceb0){_0x5eceb0=_0x5eceb0||0x1f4;return function(_0x51cbaa){logger['error'](_0x51cbaa[_0x8997('0x1f')]);if(_0x51cbaa['name']){delete _0x51cbaa['name'];}_0x4212e8[_0x8997('0x13')](_0x5eceb0)['send'](_0x51cbaa);};}exports[_0x8997('0x20')]=function(_0x220676,_0x36b7f4){var _0x39f58d={},_0x234327={},_0x267b54={'count':0x0,'rows':[]};var _0x17b53d=_['map'](db[_0x8997('0x21')][_0x8997('0x22')],function(_0x19740a){return{'name':_0x19740a[_0x8997('0x23')],'type':_0x19740a['type'][_0x8997('0x24')]};});_0x234327[_0x8997('0x25')]=_[_0x8997('0x26')](_0x17b53d,'name');_0x234327[_0x8997('0x27')]=_[_0x8997('0x28')](_0x220676['query']);_0x234327[_0x8997('0x29')]=_[_0x8997('0x2a')](_0x234327['model'],_0x234327[_0x8997('0x27')]);_0x39f58d[_0x8997('0x2b')]=_[_0x8997('0x2a')](_0x234327[_0x8997('0x25')],qs[_0x8997('0x2c')](_0x220676[_0x8997('0x27')][_0x8997('0x2c')]));_0x39f58d[_0x8997('0x2b')]=_0x39f58d['attributes'][_0x8997('0x2d')]?_0x39f58d[_0x8997('0x2b')]:_0x234327[_0x8997('0x25')];if(!_0x220676['query']['hasOwnProperty'](_0x8997('0x2e'))){_0x39f58d[_0x8997('0x16')]=qs[_0x8997('0x16')](_0x220676[_0x8997('0x27')][_0x8997('0x16')]);_0x39f58d[_0x8997('0x14')]=qs[_0x8997('0x14')](_0x220676[_0x8997('0x27')][_0x8997('0x14')]);}_0x39f58d[_0x8997('0x2f')]=qs[_0x8997('0x30')](_0x220676[_0x8997('0x27')][_0x8997('0x30')]);_0x39f58d[_0x8997('0x31')]=qs['filters'](_['pick'](_0x220676['query'],_0x234327[_0x8997('0x29')]),_0x17b53d);if(_0x220676['query'][_0x8997('0x32')]){_0x39f58d['where']=_[_0x8997('0x33')](_0x39f58d[_0x8997('0x31')],{'$or':_[_0x8997('0x26')](_0x17b53d,function(_0x2dbad0){if(_0x2dbad0['type']!==_0x8997('0x34')){var _0x58da46={};_0x58da46[_0x2dbad0[_0x8997('0x35')]]={'$like':'%'+_0x220676[_0x8997('0x27')][_0x8997('0x32')]+'%'};return _0x58da46;}})});}_0x39f58d=_['merge']({},_0x39f58d,_0x220676[_0x8997('0x36')]);var _0xdd75eb={'where':_0x39f58d['where']};return db['Network'][_0x8997('0x17')](_0xdd75eb)[_0x8997('0x1c')](function(_0x112ff5){_0x267b54[_0x8997('0x17')]=_0x112ff5;if(_0x220676[_0x8997('0x27')][_0x8997('0x37')]){_0x39f58d['include']=[{'all':!![]}];}return db[_0x8997('0x21')][_0x8997('0x38')](_0x39f58d);})[_0x8997('0x1c')](function(_0x12f16d){_0x267b54[_0x8997('0x39')]=_0x12f16d;return _0x267b54;})[_0x8997('0x1c')](respondWithFilteredResult(_0x36b7f4,_0x39f58d))[_0x8997('0x12')](handleError(_0x36b7f4,null));};exports[_0x8997('0x3a')]=function(_0x25f194,_0x2a817f){var _0x4d8542={'raw':!![],'where':{'id':_0x25f194[_0x8997('0x3b')]['id']}},_0x569ed5={};_0x569ed5['model']=_[_0x8997('0x28')](db['Network'][_0x8997('0x22')]);_0x569ed5['query']=_[_0x8997('0x28')](_0x25f194[_0x8997('0x27')]);_0x569ed5[_0x8997('0x29')]=_['intersection'](_0x569ed5[_0x8997('0x25')],_0x569ed5['query']);_0x4d8542[_0x8997('0x2b')]=_[_0x8997('0x2a')](_0x569ed5[_0x8997('0x25')],qs[_0x8997('0x2c')](_0x25f194[_0x8997('0x27')][_0x8997('0x2c')]));_0x4d8542[_0x8997('0x2b')]=_0x4d8542[_0x8997('0x2b')][_0x8997('0x2d')]?_0x4d8542[_0x8997('0x2b')]:_0x569ed5['model'];if(_0x25f194[_0x8997('0x27')][_0x8997('0x37')]){_0x4d8542[_0x8997('0x3c')]=[{'all':!![]}];}_0x4d8542=_[_0x8997('0x33')]({},_0x4d8542,_0x25f194[_0x8997('0x36')]);return db[_0x8997('0x21')][_0x8997('0x3d')](_0x4d8542)[_0x8997('0x1c')](handleEntityNotFound(_0x2a817f,null))[_0x8997('0x1c')](respondWithResult(_0x2a817f,null))['catch'](handleError(_0x2a817f,null));};exports[_0x8997('0x3e')]=function(_0xf376c0,_0x4ecfbd){var _0x2edb76;return db[_0x8997('0x21')]['create'](_0xf376c0[_0x8997('0x3f')],{'raw':!![]})[_0x8997('0x1c')](function(_0x3e385f){_0x2edb76=_0x3e385f;return db[_0x8997('0x21')][_0x8997('0x38')]({'where':{'type':_0xf376c0[_0x8997('0x3f')][_0x8997('0x40')]},'raw':!![]});})[_0x8997('0x1c')](function(_0x4e8f20){if(_0x2edb76[_0x8997('0x40')][_0x8997('0x41')]()=='STUN'){var _0x1642d4=fs[_0x8997('0x42')](path[_0x8997('0x43')](config[_0x8997('0x44')],_0x8997('0x45')),_0x8997('0x46'));var _0x5a1b67=ejs[_0x8997('0x47')](_0x1642d4,{'networks':_0x4e8f20||[]});fs[_0x8997('0x48')](_0x8997('0x49'),_0x5a1b67);return respondWithRpcPromise(_0x8997('0x4a'),'create',{'module':'res_stun_monitor.so'});}else if(_0x2edb76[_0x8997('0x40')][_0x8997('0x41')]()=='TURN'){var _0x5040c1=fs[_0x8997('0x42')](path[_0x8997('0x43')](config[_0x8997('0x44')],_0x8997('0x4b')),_0x8997('0x46'));var _0x50426f=ejs[_0x8997('0x47')](_0x5040c1,{'networks':_0x4e8f20||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x50426f);return respondWithRpcPromise(_0x8997('0x4a'),_0x8997('0x3e'),{'module':_0x8997('0x4c')});}else{var _0x43dbf6=fs['readFileSync'](path[_0x8997('0x43')](config[_0x8997('0x44')],_0x8997('0x4d')),_0x8997('0x46'));var _0xe17b48=ejs[_0x8997('0x47')](_0x43dbf6,{'networks':_0x4e8f20||[]});fs[_0x8997('0x48')](util['format'](_0x8997('0x4e'),_0xf376c0['body'][_0x8997('0x40')]['toLowerCase']()),_0xe17b48);return respondWithRpcPromise(_0x8997('0x4a'),_0x8997('0x3e'),{'module':_0x8997('0x4f')});}})[_0x8997('0x1c')](function(){return _0x2edb76;})[_0x8997('0x1c')](respondWithResult(_0x4ecfbd,0xc9))[_0x8997('0x12')](handleError(_0x4ecfbd,null));};exports[_0x8997('0x1a')]=function(_0x40f1d1,_0x4e58a5){var _0x1a2846;return db[_0x8997('0x21')]['find']({'where':{'id':_0x40f1d1[_0x8997('0x3b')]['id']}})[_0x8997('0x1c')](handleEntityNotFound(_0x4e58a5,null))[_0x8997('0x1c')](saveUpdates(_0x40f1d1[_0x8997('0x3f')],null))[_0x8997('0x1c')](function(_0x563c98){if(_0x563c98){_0x1a2846=_0x563c98;return db['Network'][_0x8997('0x38')]({'where':{'type':_0x1a2846[_0x8997('0x40')]},'raw':!![]});}return null;})[_0x8997('0x1c')](function(_0x35de4e){if(_0x1a2846[_0x8997('0x40')]['toUpperCase']()==_0x8997('0x50')){var _0x30a835=fs[_0x8997('0x42')](path[_0x8997('0x43')](config['root'],_0x8997('0x45')),_0x8997('0x46'));var _0x529328=ejs[_0x8997('0x47')](_0x30a835,{'networks':_0x35de4e||[]});fs['writeFileSync'](_0x8997('0x49'),_0x529328);return respondWithRpcPromise(_0x8997('0x4a'),_0x8997('0x1a'),{'module':_0x8997('0x4c')});}else if(_0x1a2846[_0x8997('0x40')][_0x8997('0x41')]()==_0x8997('0x51')){var _0xa4fd54=fs[_0x8997('0x42')](path['join'](config[_0x8997('0x44')],_0x8997('0x4b')),'utf8');var _0x3ce32e=ejs[_0x8997('0x47')](_0xa4fd54,{'networks':_0x35de4e||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x3ce32e);return respondWithRpcPromise(_0x8997('0x4a'),_0x8997('0x1a'),{'module':_0x8997('0x4c')});}else{var _0x10bf66=fs[_0x8997('0x42')](path[_0x8997('0x43')](config['root'],'server/files/templates/network.ejs'),_0x8997('0x46'));var _0x1afb25=ejs[_0x8997('0x47')](_0x10bf66,{'networks':_0x35de4e||[]});fs[_0x8997('0x48')](util[_0x8997('0x52')](_0x8997('0x4e'),_0x40f1d1['body'][_0x8997('0x40')]['toLowerCase']()),_0x1afb25);return respondWithRpcPromise(_0x8997('0x4a'),'update',{'module':_0x8997('0x4f')});}})[_0x8997('0x1c')](function(_0xde3ab7){if(_0xde3ab7){return _0x1a2846;}return null;})[_0x8997('0x1c')](respondWithResult(_0x4e58a5,null))['catch'](handleError(_0x4e58a5,null));};exports[_0x8997('0x1b')]=function(_0x44291f,_0x1b19fd){var _0x1187c0;return db[_0x8997('0x21')][_0x8997('0x3d')]({'where':{'id':_0x44291f[_0x8997('0x3b')]['id']}})[_0x8997('0x1c')](function(_0x1a19d5){_0x1187c0=_0x1a19d5;return _0x1a19d5;})['then'](handleEntityNotFound(_0x1b19fd,null))[_0x8997('0x1c')](removeEntity(_0x1b19fd,null))['then'](function(){if(_0x1187c0){return db[_0x8997('0x21')][_0x8997('0x38')]({'where':{'type':_0x1187c0['type']},'raw':!![]});}})[_0x8997('0x1c')](function(_0x5af3ab){if(_0x1187c0[_0x8997('0x40')]['toUpperCase']()==_0x8997('0x50')){var _0x1ca34f=fs[_0x8997('0x42')](path['join'](config[_0x8997('0x44')],_0x8997('0x45')),_0x8997('0x46'));var _0x4fc23f=ejs[_0x8997('0x47')](_0x1ca34f,{'networks':_0x5af3ab||[]});fs['writeFileSync'](_0x8997('0x49'),_0x4fc23f);return respondWithRpcPromise(_0x8997('0x4a'),_0x8997('0x1b'),{'module':_0x8997('0x4c')});}else if(_0x1187c0[_0x8997('0x40')]['toUpperCase']()=='TURN'){var _0x43a04f=fs[_0x8997('0x42')](path[_0x8997('0x43')](config[_0x8997('0x44')],_0x8997('0x4b')),'utf8');var _0x1195a1=ejs[_0x8997('0x47')](_0x43a04f,{'networks':_0x5af3ab||[]});fs['writeFileSync']('/etc/asterisk/turn_xcally.conf',_0x1195a1);return respondWithRpcPromise(_0x8997('0x4a'),_0x8997('0x1b'),{'module':'res_stun_monitor.so'});}else{var _0xb88474=fs[_0x8997('0x42')](path[_0x8997('0x43')](config[_0x8997('0x44')],_0x8997('0x4d')),_0x8997('0x46'));var _0x325fc2=ejs[_0x8997('0x47')](_0xb88474,{'networks':_0x5af3ab||[]});fs['writeFileSync'](util[_0x8997('0x52')](_0x8997('0x4e'),_0x1187c0[_0x8997('0x40')][_0x8997('0x53')]()),_0x325fc2);return respondWithRpcPromise('Reload','destroy',{'module':_0x8997('0x4f')});}})['catch'](handleError(_0x1b19fd,null));};
\ No newline at end of file
index 50ab3e5..dac1392 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb43b=['rimraf','../../config/environment','./network.attributes','Network','network','lodash','util','api','moment','bluebird','path'];(function(_0x1e5fc6,_0x54948e){var _0x1f99d6=function(_0x3e0a14){while(--_0x3e0a14){_0x1e5fc6['push'](_0x1e5fc6['shift']());}};_0x1f99d6(++_0x54948e);}(_0xb43b,0x1b2));var _0xbb43=function(_0x25d027,_0x1532e8){_0x25d027=_0x25d027-0x0;var _0x164fa6=_0xb43b[_0x25d027];return _0x164fa6;};'use strict';var _=require(_0xbb43('0x0'));var util=require(_0xbb43('0x1'));var logger=require('../../config/logger')(_0xbb43('0x2'));var moment=require(_0xbb43('0x3'));var BPromise=require(_0xbb43('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbb43('0x5'));var rimraf=require(_0xbb43('0x6'));var config=require(_0xbb43('0x7'));var attributes=require(_0xbb43('0x8'));module['exports']=function(_0x491fb9,_0x378df5){return _0x491fb9['define'](_0xbb43('0x9'),attributes,{'tableName':_0xbb43('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x80df=['../../config/environment','./network.attributes','exports','define','network','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0x80df,0x17e));var _0xf80d=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x80df[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0xf80d('0x0'));var util=require(_0xf80d('0x1'));var logger=require(_0xf80d('0x2'))(_0xf80d('0x3'));var moment=require('moment');var BPromise=require(_0xf80d('0x4'));var rp=require(_0xf80d('0x5'));var fs=require('fs');var path=require(_0xf80d('0x6'));var rimraf=require(_0xf80d('0x7'));var config=require(_0xf80d('0x8'));var attributes=require(_0xf80d('0x9'));module[_0xf80d('0xa')]=function(_0xeffeb7,_0x1c9b19){return _0xeffeb7[_0xf80d('0xb')]('Network',attributes,{'tableName':_0xf80d('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2bf99af..ff50478 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0x7a54,0x106));var _0x47a5=function(_0x17fcc7,_0x117dc1){_0x17fcc7=_0x17fcc7-0x0;var _0x35dccb=_0x7a54[_0x17fcc7];return _0x35dccb;};'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
+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(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x7a54,0x106));var _0x47a5=function(_0x220e75,_0x22bff0){_0x220e75=_0x220e75-0x0;var _0x4293fa=_0x7a54[_0x220e75];return _0x4293fa;};'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 eeb9e64..43d804e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbd7=['getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','post','create','addDisposition','addAnswer','notify','addApplications','/:id/users','addAgents','/:id/send','send','put','update','delete','destroy','removeDispositions','/:id/canned_answers','removeAnswers','removeAgents','exports','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','/:id/dispositions'];(function(_0x4b2956,_0x2ba348){var _0x8dae16=function(_0x4e9771){while(--_0x4e9771){_0x4b2956['push'](_0x4b2956['shift']());}};_0x8dae16(++_0x2ba348);}(_0xdbd7,0xe0));var _0x7dbd=function(_0x414a02,_0x6a80bc){_0x414a02=_0x414a02-0x0;var _0x4f1f41=_0xdbd7[_0x414a02];return _0x4f1f41;};'use strict';var multer=require('multer');var util=require(_0x7dbd('0x0'));var path=require(_0x7dbd('0x1'));var timeout=require(_0x7dbd('0x2'));var express=require('express');var router=express[_0x7dbd('0x3')]();var fs_extra=require(_0x7dbd('0x4'));var auth=require(_0x7dbd('0x5'));var interaction=require(_0x7dbd('0x6'));var config=require(_0x7dbd('0x7'));var controller=require(_0x7dbd('0x8'));router[_0x7dbd('0x9')]('/',auth[_0x7dbd('0xa')](),controller[_0x7dbd('0xb')]);router['get'](_0x7dbd('0xc'),auth['isAuthenticated'](),controller[_0x7dbd('0xd')]);router[_0x7dbd('0x9')](_0x7dbd('0xe'),auth[_0x7dbd('0xa')](),controller['show']);router[_0x7dbd('0x9')](_0x7dbd('0xf'),auth[_0x7dbd('0xa')](),controller['getDispositions']);router[_0x7dbd('0x9')]('/:id/canned_answers',auth[_0x7dbd('0xa')](),controller[_0x7dbd('0x10')]);router['get'](_0x7dbd('0x11'),auth[_0x7dbd('0xa')](),controller[_0x7dbd('0x12')]);router[_0x7dbd('0x9')](_0x7dbd('0x13'),auth[_0x7dbd('0xa')](),controller[_0x7dbd('0x14')]);router['get']('/:id/users',auth[_0x7dbd('0xa')](),controller['getAgents']);router[_0x7dbd('0x15')]('/',auth[_0x7dbd('0xa')](),controller[_0x7dbd('0x16')]);router[_0x7dbd('0x15')](_0x7dbd('0xf'),auth['isAuthenticated'](),controller[_0x7dbd('0x17')]);router[_0x7dbd('0x15')]('/:id/canned_answers',auth[_0x7dbd('0xa')](),controller[_0x7dbd('0x18')]);router[_0x7dbd('0x15')]('/:id/notify',controller[_0x7dbd('0x19')]);router[_0x7dbd('0x15')]('/:id/applications',auth[_0x7dbd('0xa')](),controller[_0x7dbd('0x1a')]);router['post'](_0x7dbd('0x1b'),auth['isAuthenticated'](),controller[_0x7dbd('0x1c')]);router['post'](_0x7dbd('0x1d'),auth[_0x7dbd('0xa')](),controller[_0x7dbd('0x1e')]);router[_0x7dbd('0x1f')]('/:id',auth[_0x7dbd('0xa')](),controller[_0x7dbd('0x20')]);router[_0x7dbd('0x21')](_0x7dbd('0xe'),auth[_0x7dbd('0xa')](),controller[_0x7dbd('0x22')]);router[_0x7dbd('0x21')](_0x7dbd('0xf'),auth[_0x7dbd('0xa')](),controller[_0x7dbd('0x23')]);router[_0x7dbd('0x21')](_0x7dbd('0x24'),auth[_0x7dbd('0xa')](),controller[_0x7dbd('0x25')]);router[_0x7dbd('0x21')](_0x7dbd('0x1b'),auth[_0x7dbd('0xa')](),controller[_0x7dbd('0x26')]);module[_0x7dbd('0x27')]=router;
\ No newline at end of file
+var _0xa186=['update','delete','removeDispositions','removeAgents','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelAccount.controller','index','/describe','isAuthenticated','describe','get','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/applications','getApplications','/:id/interactions','getInteractions','getAgents','post','create','addAnswer','/:id/notify','notify','addApplications','/:id/users','addAgents','/:id/send','put'];(function(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa186,0x19f));var _0x6a18=function(_0x1eb496,_0x50b08d){_0x1eb496=_0x1eb496-0x0;var _0x566e75=_0xa186[_0x1eb496];return _0x566e75;};'use strict';var multer=require(_0x6a18('0x0'));var util=require(_0x6a18('0x1'));var path=require(_0x6a18('0x2'));var timeout=require(_0x6a18('0x3'));var express=require(_0x6a18('0x4'));var router=express[_0x6a18('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x6a18('0x6'));var interaction=require(_0x6a18('0x7'));var config=require(_0x6a18('0x8'));var controller=require(_0x6a18('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0x6a18('0xa')]);router['get'](_0x6a18('0xb'),auth[_0x6a18('0xc')](),controller[_0x6a18('0xd')]);router[_0x6a18('0xe')](_0x6a18('0xf'),auth[_0x6a18('0xc')](),controller[_0x6a18('0x10')]);router[_0x6a18('0xe')](_0x6a18('0x11'),auth[_0x6a18('0xc')](),controller[_0x6a18('0x12')]);router['get'](_0x6a18('0x13'),auth[_0x6a18('0xc')](),controller[_0x6a18('0x14')]);router['get'](_0x6a18('0x15'),auth['isAuthenticated'](),controller[_0x6a18('0x16')]);router[_0x6a18('0xe')](_0x6a18('0x17'),auth[_0x6a18('0xc')](),controller[_0x6a18('0x18')]);router[_0x6a18('0xe')]('/:id/users',auth['isAuthenticated'](),controller[_0x6a18('0x19')]);router[_0x6a18('0x1a')]('/',auth[_0x6a18('0xc')](),controller[_0x6a18('0x1b')]);router[_0x6a18('0x1a')](_0x6a18('0x11'),auth[_0x6a18('0xc')](),controller['addDisposition']);router[_0x6a18('0x1a')](_0x6a18('0x13'),auth[_0x6a18('0xc')](),controller[_0x6a18('0x1c')]);router['post'](_0x6a18('0x1d'),controller[_0x6a18('0x1e')]);router[_0x6a18('0x1a')]('/:id/applications',auth[_0x6a18('0xc')](),controller[_0x6a18('0x1f')]);router[_0x6a18('0x1a')](_0x6a18('0x20'),auth[_0x6a18('0xc')](),controller[_0x6a18('0x21')]);router[_0x6a18('0x1a')](_0x6a18('0x22'),auth[_0x6a18('0xc')](),controller['send']);router[_0x6a18('0x23')]('/:id',auth[_0x6a18('0xc')](),controller[_0x6a18('0x24')]);router[_0x6a18('0x25')]('/:id',auth[_0x6a18('0xc')](),controller['destroy']);router[_0x6a18('0x25')]('/:id/dispositions',auth[_0x6a18('0xc')](),controller[_0x6a18('0x26')]);router[_0x6a18('0x25')](_0x6a18('0x13'),auth[_0x6a18('0xc')](),controller['removeAnswers']);router[_0x6a18('0x25')](_0x6a18('0x20'),auth[_0x6a18('0xc')](),controller[_0x6a18('0x27')]);module[_0x6a18('0x28')]=router;
\ No newline at end of file
index e3f0cf9..542cd4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x495b=['sequelize','randomstring','exports','STRING','generate','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'];(function(_0x4dd8a9,_0x52c737){var _0x9cd86a=function(_0x5b624a){while(--_0x5b624a){_0x4dd8a9['push'](_0x4dd8a9['shift']());}};_0x9cd86a(++_0x52c737);}(_0x495b,0x114));var _0xb495=function(_0x1cf064,_0x184933){_0x1cf064=_0x1cf064-0x0;var _0x104364=_0x495b[_0x1cf064];return _0x104364;};'use strict';var Sequelize=require(_0xb495('0x0'));var rs=require(_0xb495('0x1'));module[_0xb495('0x2')]={'name':{'type':Sequelize[_0xb495('0x3')],'unique':'name','allowNull':![]},'description':{'type':Sequelize[_0xb495('0x3')]},'token':{'type':Sequelize[_0xb495('0x3')],'defaultValue':function(){return rs[_0xb495('0x4')]();}},'replyUri':{'type':Sequelize['STRING'],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xb495('0x3')],'allowNull':![]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return _0xb495('0x5');}},'notificationSound':{'type':Sequelize[_0xb495('0x6')],'defaultValue':!![]},'notificationShake':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xb495('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize[_0xb495('0x3')]},'queueTransfer':{'type':Sequelize[_0xb495('0x6')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xb495('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xb495('0x6')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xb495('0x7')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'defaultValue':null,'comment':_0xb495('0x8')},'mandatoryDisposition':{'type':Sequelize[_0xb495('0x6')],'defaultValue':![],'comment':_0xb495('0x9'),'set':function(_0x52214d){if(!_0x52214d)this[_0xb495('0xa')]('mandatoryDispositionPauseId',null);this[_0xb495('0xa')](_0xb495('0xb'),_0x52214d);}}};
\ No newline at end of file
+var _0x43cc=['mandatoryDispositionPauseId','mandatoryDisposition','exports','STRING','name','generate','TEXT','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue'];(function(_0x18afca,_0x4219d9){var _0x11603f=function(_0x21d5d1){while(--_0x21d5d1){_0x18afca['push'](_0x18afca['shift']());}};_0x11603f(++_0x4219d9);}(_0x43cc,0x15e));var _0xc43c=function(_0x5aef17,_0x592cd4){_0x5aef17=_0x5aef17-0x0;var _0x43f9d0=_0x43cc[_0x5aef17];return _0x43f9d0;};'use strict';var Sequelize=require('sequelize');var rs=require('randomstring');module[_0xc43c('0x0')]={'name':{'type':Sequelize[_0xc43c('0x1')],'unique':_0xc43c('0x2'),'allowNull':![]},'description':{'type':Sequelize['STRING']},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs[_0xc43c('0x3')]();}},'replyUri':{'type':Sequelize[_0xc43c('0x1')],'validate':{'isUrl':!![]}},'key':{'type':Sequelize[_0xc43c('0x1')],'allowNull':![]},'notificationTemplate':{'type':Sequelize[_0xc43c('0x4')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xc43c('0x5')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'mapKey':{'type':Sequelize['STRING']},'queueTransfer':{'type':Sequelize[_0xc43c('0x5')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xc43c('0x6')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xc43c('0x5')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xc43c('0x6')],'allowNull':!![],'defaultValue':null,'comment':_0xc43c('0x7')},'mandatoryDisposition':{'type':Sequelize[_0xc43c('0x5')],'defaultValue':![],'comment':_0xc43c('0x8'),'set':function(_0x16f321){if(!_0x16f321)this[_0xc43c('0x9')](_0xc43c('0xa'),null);this[_0xc43c('0x9')](_0xc43c('0xb'),_0x16f321);}}};
\ No newline at end of file
index b15980d..9ea8843 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x51f4=['getAgents','body\x20is\x20mandatory\x20and\x20not\x20empty','out','OpenchannelMessage','Messages','dataValues','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','client','http','request','then','info','OpenchannelAccount,\x20%s,\x20%s','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','end','status','json','offset','limit','count','set','Content-Range','apply','reject','save','update','get','OpenchannelAccounts','UserProfileResource','destroy','sendStatus','stack','name','send','index','Pause','mandatoryDispositionPause','OpenchannelAccount','rawAttributes','fieldName','type','map','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','describe','addDisposition','OpenchannelAccountId','getDispositions','hasOwnProperty','Disposition','removeDispositions','ids','addAnswer','CannedAnswer','findOne','notify','CmContact','Sequelize','ValidationError','no\x20available\x20attributes','difference','updatedAt','CompanyId','isNil','from\x20is\x20mandatory','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','from','CmList','List','Applications','applications','list','orderBy','priority','asc','account','Contacts','ListId','contact','firstName','lastName','OpenchannelInteraction','threadId','externalUrl','ContactId','spread','messageId','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','AttachmentId','UserId','User','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','READ_COMMITTED','OpenchannelApplication','findAndCountAll','finally','getApplications','getInteractions','Contact','Owner','fullname','internal','Tag','Tags','color','tag','addAgents','omit','emit'];(function(_0xb03a44,_0x4a835b){var _0x2ebf41=function(_0x3bf587){while(--_0x3bf587){_0xb03a44['push'](_0xb03a44['shift']());}};_0x2ebf41(++_0x4a835b);}(_0x51f4,0x18c));var _0x451f=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x51f4[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x451f('0x0'));var rimraf=require(_0x451f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x451f('0x2'));var rp=require(_0x451f('0x3'));var moment=require(_0x451f('0x4'));var BPromise=require(_0x451f('0x5'));var Mustache=require('mustache');var util=require(_0x451f('0x6'));var path=require(_0x451f('0x7'));var sox=require('sox');var csv=require(_0x451f('0x8'));var ejs=require(_0x451f('0x9'));var fs=require('fs');var fs_extra=require(_0x451f('0xa'));var _=require(_0x451f('0xb'));var squel=require(_0x451f('0xc'));var crypto=require('crypto');var jsforce=require(_0x451f('0xd'));var deskjs=require(_0x451f('0xe'));var toCsv=require('to-csv');var querystring=require(_0x451f('0xf'));var Papa=require(_0x451f('0x10'));var Redis=require('ioredis');var authService=require(_0x451f('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x451f('0x12'));var hardwareService=require(_0x451f('0x13'));var logger=require(_0x451f('0x14'))(_0x451f('0x15'));var utils=require(_0x451f('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0x451f('0x17'));var db=require(_0x451f('0x18'))['db'];config[_0x451f('0x19')]=_[_0x451f('0x1a')](config[_0x451f('0x19')],{'host':_0x451f('0x1b'),'port':0x18eb});var socket=require(_0x451f('0x1c'))(new Redis(config[_0x451f('0x19')]));require(_0x451f('0x1d'))[_0x451f('0x1e')](socket);var jayson=require('jayson/promise');var client=jayson[_0x451f('0x1f')][_0x451f('0x20')]({'port':0x232c});var client9002=jayson[_0x451f('0x1f')][_0x451f('0x20')]({'port':0x232a});function respondWithRpcPromise(_0xbb5d02,_0x4eeecc,_0xe7a416,_0x1aa6a7){return new BPromise(function(_0x10da1d,_0x45ecb3){var _0x48494f=_0x1aa6a7||client;return _0x48494f[_0x451f('0x21')](_0xbb5d02,_0xe7a416)[_0x451f('0x22')](function(_0x2e7549){logger[_0x451f('0x23')](_0x451f('0x24'),_0x4eeecc,'request\x20sent');logger[_0x451f('0x25')](_0x451f('0x26'),_0x4eeecc,_0x451f('0x27'),JSON[_0x451f('0x28')](_0x2e7549));if(_0x2e7549['error']){if(_0x2e7549[_0x451f('0x29')][_0x451f('0x2a')]===0x1f4){logger[_0x451f('0x29')](_0x451f('0x24'),_0x4eeecc,_0x2e7549[_0x451f('0x29')][_0x451f('0x2b')]);return _0x45ecb3(_0x2e7549[_0x451f('0x29')][_0x451f('0x2b')]);}logger[_0x451f('0x29')](_0x451f('0x24'),_0x4eeecc,_0x2e7549['error'][_0x451f('0x2b')]);return _0x10da1d(_0x2e7549[_0x451f('0x29')][_0x451f('0x2b')]);}else{logger['info'](_0x451f('0x24'),_0x4eeecc,_0x451f('0x27'));_0x10da1d(_0x2e7549[_0x451f('0x2c')]['message']);}})['catch'](function(_0x1f1381){logger[_0x451f('0x29')](_0x451f('0x24'),_0x4eeecc,_0x1f1381);_0x45ecb3(_0x1f1381);});});}function respondWithStatusCode(_0xef0bf4,_0xc839b){_0xc839b=_0xc839b||0xcc;return function(_0x16c355){if(_0x16c355){return _0xef0bf4['sendStatus'](_0xc839b);}return _0xef0bf4['status'](_0xc839b)[_0x451f('0x2d')]();};}function respondWithResult(_0x35f5fc,_0x3a81ab){_0x3a81ab=_0x3a81ab||0xc8;return function(_0x458206){if(_0x458206){return _0x35f5fc[_0x451f('0x2e')](_0x3a81ab)[_0x451f('0x2f')](_0x458206);}};}function respondWithFilteredResult(_0x302d98,_0x2d11b1){return function(_0x271049){if(_0x271049){var _0x1c6f91=typeof _0x2d11b1[_0x451f('0x30')]==='undefined'&&typeof _0x2d11b1[_0x451f('0x31')]==='undefined';var _0x236a70=_0x271049[_0x451f('0x32')];var _0x53d15c=_0x1c6f91?0x0:_0x2d11b1[_0x451f('0x30')];var _0x4238b0=_0x1c6f91?_0x271049[_0x451f('0x32')]:_0x2d11b1[_0x451f('0x30')]+_0x2d11b1[_0x451f('0x31')];var _0x3c24b3;if(_0x4238b0>=_0x236a70){_0x4238b0=_0x236a70;_0x3c24b3=0xc8;}else{_0x3c24b3=0xce;}_0x302d98[_0x451f('0x2e')](_0x3c24b3);return _0x302d98[_0x451f('0x33')](_0x451f('0x34'),_0x53d15c+'-'+_0x4238b0+'/'+_0x236a70)[_0x451f('0x2f')](_0x271049);}return null;};}function patchUpdates(_0xc7384d){return function(_0x994b1){try{jsonpatch[_0x451f('0x35')](_0x994b1,_0xc7384d,!![]);}catch(_0x4f0d5a){return BPromise[_0x451f('0x36')](_0x4f0d5a);}return _0x994b1[_0x451f('0x37')]();};}function saveUpdates(_0x4d8cf8,_0x399fa3){return function(_0x4e2164){if(_0x4e2164){return _0x4e2164[_0x451f('0x38')](_0x4d8cf8)[_0x451f('0x22')](function(_0x2cb6c3){return _0x2cb6c3;});}return null;};}function removeEntity(_0x28733c,_0x3de04d){return function(_0x540441){if(_0x540441){return _0x540441['destroy']()[_0x451f('0x22')](function(){var _0x44d3e7=_0x540441[_0x451f('0x39')]({'plain':!![]});var _0x23346c=_0x451f('0x3a');return db[_0x451f('0x3b')][_0x451f('0x3c')]({'where':{'type':_0x23346c,'resourceId':_0x44d3e7['id']}})[_0x451f('0x22')](function(){return _0x540441;});})['then'](function(){_0x28733c[_0x451f('0x2e')](0xcc)[_0x451f('0x2d')]();});}};}function handleEntityNotFound(_0x3e8298,_0x51b7fb){return function(_0x48ad0f){if(!_0x48ad0f){_0x3e8298[_0x451f('0x3d')](0x194);}return _0x48ad0f;};}function handleError(_0x309c72,_0x2351fa){_0x2351fa=_0x2351fa||0x1f4;return function(_0x4d0dfe){logger['error'](_0x4d0dfe[_0x451f('0x3e')]);if(_0x4d0dfe[_0x451f('0x3f')]){delete _0x4d0dfe[_0x451f('0x3f')];}_0x309c72[_0x451f('0x2e')](_0x2351fa)[_0x451f('0x40')](_0x4d0dfe);};}exports[_0x451f('0x41')]=function(_0x5a77fd,_0x429a27){var _0x46e0e9={'include':[{'model':db[_0x451f('0x42')],'as':_0x451f('0x43')}]},_0x1038fd={},_0x4045bc={'count':0x0,'rows':[]};var _0x2ae4f6=_['map'](db[_0x451f('0x44')][_0x451f('0x45')],function(_0x2a3f49){return{'name':_0x2a3f49[_0x451f('0x46')],'type':_0x2a3f49[_0x451f('0x47')]['key']};});_0x1038fd['model']=_[_0x451f('0x48')](_0x2ae4f6,_0x451f('0x3f'));_0x1038fd[_0x451f('0x49')]=_[_0x451f('0x4a')](_0x5a77fd[_0x451f('0x49')]);_0x1038fd[_0x451f('0x4b')]=_[_0x451f('0x4c')](_0x1038fd[_0x451f('0x4d')],_0x1038fd[_0x451f('0x49')]);_0x46e0e9[_0x451f('0x4e')]=_[_0x451f('0x4c')](_0x1038fd[_0x451f('0x4d')],qs[_0x451f('0x4f')](_0x5a77fd[_0x451f('0x49')][_0x451f('0x4f')]));_0x46e0e9[_0x451f('0x4e')]=_0x46e0e9[_0x451f('0x4e')][_0x451f('0x50')]?_0x46e0e9[_0x451f('0x4e')]:_0x1038fd[_0x451f('0x4d')];if(!_0x5a77fd[_0x451f('0x49')]['hasOwnProperty'](_0x451f('0x51'))){_0x46e0e9['limit']=qs['limit'](_0x5a77fd[_0x451f('0x49')][_0x451f('0x31')]);_0x46e0e9[_0x451f('0x30')]=qs['offset'](_0x5a77fd[_0x451f('0x49')][_0x451f('0x30')]);}_0x46e0e9[_0x451f('0x52')]=qs[_0x451f('0x53')](_0x5a77fd['query'][_0x451f('0x53')]);_0x46e0e9[_0x451f('0x54')]=qs['filters'](_[_0x451f('0x55')](_0x5a77fd['query'],_0x1038fd['filters']),_0x2ae4f6);if(_0x5a77fd[_0x451f('0x49')][_0x451f('0x56')]){_0x46e0e9['where']=_[_0x451f('0x57')](_0x46e0e9['where'],{'$or':_[_0x451f('0x48')](_0x2ae4f6,function(_0x57ad00){if(_0x57ad00['type']!==_0x451f('0x58')){var _0xf1d45={};_0xf1d45[_0x57ad00[_0x451f('0x3f')]]={'$like':'%'+_0x5a77fd[_0x451f('0x49')][_0x451f('0x56')]+'%'};return _0xf1d45;}})});}_0x46e0e9=_['merge']({},_0x46e0e9,_0x5a77fd['options']);var _0x565ef9={'where':_0x46e0e9['where']};return db[_0x451f('0x44')][_0x451f('0x32')](_0x565ef9)[_0x451f('0x22')](function(_0x3a2ec6){_0x4045bc['count']=_0x3a2ec6;if(_0x5a77fd[_0x451f('0x49')][_0x451f('0x59')]){_0x46e0e9[_0x451f('0x5a')]=[{'all':!![]}];}return db[_0x451f('0x44')][_0x451f('0x5b')](_0x46e0e9);})[_0x451f('0x22')](function(_0x32750b){_0x4045bc[_0x451f('0x5c')]=_0x32750b;return _0x4045bc;})['then'](respondWithFilteredResult(_0x429a27,_0x46e0e9))[_0x451f('0x5d')](handleError(_0x429a27,null));};exports['show']=function(_0x427bdf,_0x17f7e1){var _0x2e9dd8={'raw':![],'where':{'id':_0x427bdf['params']['id']},'include':[{'model':db[_0x451f('0x42')],'as':_0x451f('0x43')}]},_0x50b42c={};_0x50b42c[_0x451f('0x4d')]=_[_0x451f('0x4a')](db[_0x451f('0x44')][_0x451f('0x45')]);_0x50b42c[_0x451f('0x49')]=_[_0x451f('0x4a')](_0x427bdf[_0x451f('0x49')]);_0x50b42c['filters']=_[_0x451f('0x4c')](_0x50b42c[_0x451f('0x4d')],_0x50b42c['query']);_0x2e9dd8['attributes']=_['intersection'](_0x50b42c[_0x451f('0x4d')],qs[_0x451f('0x4f')](_0x427bdf[_0x451f('0x49')][_0x451f('0x4f')]));_0x2e9dd8[_0x451f('0x4e')]=_0x2e9dd8[_0x451f('0x4e')][_0x451f('0x50')]?_0x2e9dd8['attributes']:_0x50b42c[_0x451f('0x4d')];if(_0x427bdf[_0x451f('0x49')]['includeAll']){_0x2e9dd8[_0x451f('0x5a')]=[{'all':!![]}];}_0x2e9dd8=_['merge']({},_0x2e9dd8,_0x427bdf[_0x451f('0x5e')]);return db[_0x451f('0x44')][_0x451f('0x5f')](_0x2e9dd8)[_0x451f('0x22')](handleEntityNotFound(_0x17f7e1,null))[_0x451f('0x22')](respondWithResult(_0x17f7e1,null))[_0x451f('0x5d')](handleError(_0x17f7e1,null));};exports[_0x451f('0x60')]=function(_0x463e77,_0x3a5488){return db['OpenchannelAccount'][_0x451f('0x60')](_0x463e77[_0x451f('0x61')],{})['then'](function(_0x3662b6){var _0x4018b6=_0x463e77[_0x451f('0x62')][_0x451f('0x39')]({'plain':!![]});if(!_0x4018b6)throw new Error(_0x451f('0x63'));if(_0x4018b6[_0x451f('0x64')]===_0x451f('0x62')){var _0x4a4640=_0x3662b6[_0x451f('0x39')]({'plain':!![]});var _0x19e7c8=_0x451f('0x3a');return db[_0x451f('0x65')]['find']({'where':{'name':_0x19e7c8,'userProfileId':_0x4018b6[_0x451f('0x66')]},'raw':!![]})[_0x451f('0x22')](function(_0x4aee5b){if(_0x4aee5b&&_0x4aee5b[_0x451f('0x67')]===0x0){return db[_0x451f('0x3b')][_0x451f('0x60')]({'name':_0x4a4640[_0x451f('0x3f')],'resourceId':_0x4a4640['id'],'type':_0x4aee5b[_0x451f('0x3f')],'sectionId':_0x4aee5b['id']},{})[_0x451f('0x22')](function(){return _0x3662b6;});}else{return _0x3662b6;}})[_0x451f('0x5d')](function(_0x295c60){logger['error'](_0x451f('0x68'),_0x295c60);throw _0x295c60;});}return _0x3662b6;})[_0x451f('0x22')](respondWithResult(_0x3a5488,0xc9))[_0x451f('0x5d')](handleError(_0x3a5488,null));};exports[_0x451f('0x38')]=function(_0x3c243f,_0xab6aef){if(_0x3c243f['body']['id']){delete _0x3c243f[_0x451f('0x61')]['id'];}return db['OpenchannelAccount'][_0x451f('0x5f')]({'where':{'id':_0x3c243f[_0x451f('0x69')]['id']},'include':[{'model':db['Pause'],'as':_0x451f('0x43')}]})[_0x451f('0x22')](handleEntityNotFound(_0xab6aef,null))[_0x451f('0x22')](saveUpdates(_0x3c243f[_0x451f('0x61')],null))[_0x451f('0x22')](respondWithResult(_0xab6aef,null))[_0x451f('0x5d')](handleError(_0xab6aef,null));};exports[_0x451f('0x3c')]=function(_0x26c46b,_0x14c61c){return db[_0x451f('0x44')][_0x451f('0x5f')]({'where':{'id':_0x26c46b[_0x451f('0x69')]['id']}})[_0x451f('0x22')](handleEntityNotFound(_0x14c61c,null))[_0x451f('0x22')](removeEntity(_0x14c61c,null))[_0x451f('0x5d')](handleError(_0x14c61c,null));};exports[_0x451f('0x6a')]=function(_0x18ef4,_0x124a4a){return db[_0x451f('0x44')][_0x451f('0x6a')]()[_0x451f('0x22')](respondWithResult(_0x124a4a,null))['catch'](handleError(_0x124a4a,null));};exports[_0x451f('0x6b')]=function(_0x4d5fe9,_0x3a1473,_0x4aeb94){if(_0x4d5fe9['body']['id']){delete _0x4d5fe9['body']['id'];}return db[_0x451f('0x44')][_0x451f('0x5f')]({'where':{'id':_0x4d5fe9[_0x451f('0x69')]['id']}})[_0x451f('0x22')](handleEntityNotFound(_0x3a1473,null))[_0x451f('0x22')](function(_0x373fea){if(_0x373fea){_0x4d5fe9[_0x451f('0x61')][_0x451f('0x6c')]=_0x373fea['id'];return db['Disposition'][_0x451f('0x60')](_0x4d5fe9[_0x451f('0x61')]);}})[_0x451f('0x22')](respondWithResult(_0x3a1473,null))[_0x451f('0x5d')](handleError(_0x3a1473,null));};exports[_0x451f('0x6d')]=function(_0x501b5e,_0xe23e34,_0xda18e8){var _0x5752e8={'raw':![],'where':{}};var _0x1a6bce={};var _0x26bcc3={'count':0x0,'rows':[]};return db['OpenchannelAccount']['findOne']({'where':{'id':_0x501b5e[_0x451f('0x69')]['id']}})[_0x451f('0x22')](handleEntityNotFound(_0xe23e34,null))[_0x451f('0x22')](function(_0x2b432e){if(_0x2b432e){_0x1a6bce[_0x451f('0x4d')]=_['keys'](db['Disposition'][_0x451f('0x45')]);_0x1a6bce['query']=_[_0x451f('0x4a')](_0x501b5e['query']);_0x1a6bce['filters']=_[_0x451f('0x4c')](_0x1a6bce['model'],_0x1a6bce[_0x451f('0x49')]);_0x5752e8[_0x451f('0x4e')]=_['intersection'](_0x1a6bce[_0x451f('0x4d')],qs['fields'](_0x501b5e[_0x451f('0x49')][_0x451f('0x4f')]));_0x5752e8[_0x451f('0x4e')]=_0x5752e8[_0x451f('0x4e')]['length']?_0x5752e8[_0x451f('0x4e')]:_0x1a6bce['model'];if(!_0x501b5e[_0x451f('0x49')][_0x451f('0x6e')](_0x451f('0x51'))){_0x5752e8['limit']=qs['limit'](_0x501b5e['query'][_0x451f('0x31')]);_0x5752e8[_0x451f('0x30')]=qs['offset'](_0x501b5e[_0x451f('0x49')][_0x451f('0x30')]);}_0x5752e8[_0x451f('0x52')]=qs[_0x451f('0x53')](_0x501b5e[_0x451f('0x49')][_0x451f('0x53')]);_0x5752e8['where']=qs[_0x451f('0x4b')](_['pick'](_0x501b5e[_0x451f('0x49')],_0x1a6bce[_0x451f('0x4b')]));_0x5752e8[_0x451f('0x54')][_0x451f('0x6c')]=_0x2b432e['id'];if(_0x501b5e[_0x451f('0x49')][_0x451f('0x56')]){_0x5752e8[_0x451f('0x54')]=_[_0x451f('0x57')](_0x5752e8[_0x451f('0x54')],{'$or':_[_0x451f('0x48')](_0x5752e8[_0x451f('0x4e')],function(_0x2ba32b){var _0x255bf0={};_0x255bf0[_0x2ba32b]={'$like':'%'+_0x501b5e[_0x451f('0x49')]['filter']+'%'};return _0x255bf0;})});}_0x5752e8=_[_0x451f('0x57')]({},_0x5752e8,_0x501b5e[_0x451f('0x5e')]);return db[_0x451f('0x6f')][_0x451f('0x32')]({'where':_0x5752e8['where']})[_0x451f('0x22')](function(_0x3473d4){_0x26bcc3[_0x451f('0x32')]=_0x3473d4;if(_0x501b5e[_0x451f('0x49')][_0x451f('0x59')]){_0x5752e8[_0x451f('0x5a')]=[{'all':!![]}];}return db[_0x451f('0x6f')]['findAll'](_0x5752e8);})[_0x451f('0x22')](function(_0x2b04a7){_0x26bcc3[_0x451f('0x5c')]=_0x2b04a7;return _0x26bcc3;});}})[_0x451f('0x22')](respondWithFilteredResult(_0xe23e34,_0x5752e8))[_0x451f('0x5d')](handleError(_0xe23e34,null));};exports[_0x451f('0x70')]=function(_0xbf965d,_0x16085b,_0x1549d0){return db[_0x451f('0x44')][_0x451f('0x5f')]({'where':{'id':_0xbf965d[_0x451f('0x69')]['id']}})[_0x451f('0x22')](handleEntityNotFound(_0x16085b,null))[_0x451f('0x22')](function(_0x240c6d){if(_0x240c6d){return _0x240c6d[_0x451f('0x70')](_0xbf965d[_0x451f('0x49')][_0x451f('0x71')]);}})['then'](respondWithStatusCode(_0x16085b,null))[_0x451f('0x5d')](handleError(_0x16085b,null));};exports[_0x451f('0x72')]=function(_0x537436,_0x3fabb5,_0x48f8bb){if(_0x537436['body']['id']){delete _0x537436['body']['id'];}return db[_0x451f('0x44')]['find']({'where':{'id':_0x537436['params']['id']}})[_0x451f('0x22')](handleEntityNotFound(_0x3fabb5,null))[_0x451f('0x22')](function(_0x8f39ea){if(_0x8f39ea){_0x537436['body'][_0x451f('0x6c')]=_0x8f39ea['id'];return db[_0x451f('0x73')][_0x451f('0x60')](_0x537436[_0x451f('0x61')]);}})[_0x451f('0x22')](respondWithResult(_0x3fabb5,null))['catch'](handleError(_0x3fabb5,null));};exports['getAnswers']=function(_0x2b916b,_0x327b13,_0x459da6){var _0x5cec83={'raw':![],'where':{}};var _0x3bcc5a={};var _0x116be4={'count':0x0,'rows':[]};return db[_0x451f('0x44')][_0x451f('0x74')]({'where':{'id':_0x2b916b[_0x451f('0x69')]['id']}})['then'](handleEntityNotFound(_0x327b13,null))[_0x451f('0x22')](function(_0x54008d){if(_0x54008d){_0x3bcc5a[_0x451f('0x4d')]=_[_0x451f('0x4a')](db['CannedAnswer']['rawAttributes']);_0x3bcc5a[_0x451f('0x49')]=_['keys'](_0x2b916b[_0x451f('0x49')]);_0x3bcc5a[_0x451f('0x4b')]=_['intersection'](_0x3bcc5a[_0x451f('0x4d')],_0x3bcc5a[_0x451f('0x49')]);_0x5cec83[_0x451f('0x4e')]=_[_0x451f('0x4c')](_0x3bcc5a[_0x451f('0x4d')],qs[_0x451f('0x4f')](_0x2b916b['query'][_0x451f('0x4f')]));_0x5cec83[_0x451f('0x4e')]=_0x5cec83['attributes'][_0x451f('0x50')]?_0x5cec83['attributes']:_0x3bcc5a['model'];if(!_0x2b916b[_0x451f('0x49')][_0x451f('0x6e')]('nolimit')){_0x5cec83[_0x451f('0x31')]=qs[_0x451f('0x31')](_0x2b916b[_0x451f('0x49')][_0x451f('0x31')]);_0x5cec83[_0x451f('0x30')]=qs[_0x451f('0x30')](_0x2b916b[_0x451f('0x49')][_0x451f('0x30')]);}_0x5cec83[_0x451f('0x52')]=qs[_0x451f('0x53')](_0x2b916b[_0x451f('0x49')][_0x451f('0x53')]);_0x5cec83['where']=qs[_0x451f('0x4b')](_[_0x451f('0x55')](_0x2b916b[_0x451f('0x49')],_0x3bcc5a[_0x451f('0x4b')]));_0x5cec83['where'][_0x451f('0x6c')]=_0x54008d['id'];if(_0x2b916b[_0x451f('0x49')][_0x451f('0x56')]){_0x5cec83[_0x451f('0x54')]=_[_0x451f('0x57')](_0x5cec83[_0x451f('0x54')],{'$or':_[_0x451f('0x48')](_0x5cec83[_0x451f('0x4e')],function(_0x2d88a2){var _0x59bcdd={};_0x59bcdd[_0x2d88a2]={'$like':'%'+_0x2b916b[_0x451f('0x49')][_0x451f('0x56')]+'%'};return _0x59bcdd;})});}_0x5cec83=_[_0x451f('0x57')]({},_0x5cec83,_0x2b916b[_0x451f('0x5e')]);return db[_0x451f('0x73')][_0x451f('0x32')]({'where':_0x5cec83[_0x451f('0x54')]})[_0x451f('0x22')](function(_0x2ecb77){_0x116be4['count']=_0x2ecb77;if(_0x2b916b[_0x451f('0x49')]['includeAll']){_0x5cec83['include']=[{'all':!![]}];}return db[_0x451f('0x73')]['findAll'](_0x5cec83);})['then'](function(_0x3be339){_0x116be4[_0x451f('0x5c')]=_0x3be339;return _0x116be4;});}})[_0x451f('0x22')](respondWithFilteredResult(_0x327b13,_0x5cec83))[_0x451f('0x5d')](handleError(_0x327b13,null));};exports['removeAnswers']=function(_0x39d831,_0x5590eb,_0x3a4080){return db['OpenchannelAccount'][_0x451f('0x5f')]({'where':{'id':_0x39d831['params']['id']}})[_0x451f('0x22')](handleEntityNotFound(_0x5590eb,null))[_0x451f('0x22')](function(_0x7e9b4c){if(_0x7e9b4c){return _0x7e9b4c['removeAnswers'](_0x39d831[_0x451f('0x49')][_0x451f('0x71')]);}})['then'](respondWithStatusCode(_0x5590eb,null))[_0x451f('0x5d')](handleError(_0x5590eb,null));};exports[_0x451f('0x75')]=function(_0x521b1b,_0x16c990,_0x454d3e){var _0x18da54={'body':_0x521b1b['body'],'channel':'openchannel'};var _0x4facae=[];var _0x4a269c=[];var _0x1131c5={};var _0x245543=![];return db[_0x451f('0x76')][_0x451f('0x6a')]()[_0x451f('0x22')](function(_0x488f98){if(!_0x488f98){throw new db[(_0x451f('0x77'))][(_0x451f('0x78'))](_0x451f('0x79'));}_0x4facae=_[_0x451f('0x7a')](_['keys'](_0x488f98),['createdAt',_0x451f('0x7b')]);_0x4a269c=_[_0x451f('0x7a')](_[_0x451f('0x4a')](_0x488f98),['createdAt','updatedAt',_0x451f('0x7c'),'ListId']);if(_0x521b1b[_0x451f('0x61')]['id']){delete _0x521b1b[_0x451f('0x61')]['id'];}if(_[_0x451f('0x7d')](_0x521b1b[_0x451f('0x61')]['from'])){throw new db[(_0x451f('0x77'))][(_0x451f('0x78'))](_0x451f('0x7e'));}if(_[_0x451f('0x7d')](_0x521b1b['body']['body'])||_0x521b1b[_0x451f('0x61')][_0x451f('0x61')]===''){throw new db[(_0x451f('0x77'))][(_0x451f('0x78'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x451f('0x7d')](_0x521b1b[_0x451f('0x61')]['mapKey'])){throw new db[(_0x451f('0x77'))][(_0x451f('0x78'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x4a269c);}if(!_['includes'](_0x4a269c,_0x521b1b[_0x451f('0x61')][_0x451f('0x7f')])){throw new db['Sequelize'][(_0x451f('0x78'))](_0x451f('0x80')+_0x4a269c);}_0x1131c5[_0x521b1b[_0x451f('0x61')][_0x451f('0x7f')]]=_0x521b1b['body'][_0x451f('0x81')];})[_0x451f('0x22')](function(){return db[_0x451f('0x44')][_0x451f('0x5f')]({'where':{'id':_0x521b1b['params']['id']},'include':[{'model':db[_0x451f('0x82')],'as':_0x451f('0x83'),'include':[{'model':db[_0x451f('0x76')],'as':'Contacts','where':_0x1131c5,'limit':0x1,'order':[[_0x451f('0x7b'),'DESC']]}]},{'model':db['OpenchannelApplication'],'as':_0x451f('0x84')}]});})[_0x451f('0x22')](handleEntityNotFound(_0x16c990,null))[_0x451f('0x22')](function(_0x4b9bc4){if(_0x4b9bc4&&_0x4b9bc4['List']){_0x18da54['account']=_0x4b9bc4;_0x18da54[_0x451f('0x85')]=_0x4b9bc4['Applications'];_0x18da54[_0x451f('0x86')]=_0x4b9bc4[_0x451f('0x83')];_0x18da54[_0x451f('0x85')]=_[_0x451f('0x87')](_0x18da54[_0x451f('0x85')],[_0x451f('0x88')],[_0x451f('0x89')]);if(_0x18da54[_0x451f('0x8a')][_0x451f('0x84')]){delete _0x18da54['account']['Applications'];}if(_0x18da54['account'][_0x451f('0x83')]&&_0x18da54[_0x451f('0x8a')][_0x451f('0x83')][_0x451f('0x8b')][_0x451f('0x50')]){return _0x18da54['account']['List'][_0x451f('0x8b')][0x0];}var _0x15481d=_[_0x451f('0x1a')](_0x521b1b[_0x451f('0x61')],{'firstName':_0x521b1b['body'][_0x451f('0x81')],'ListId':_0x4b9bc4[_0x451f('0x8c')]});_0x15481d[_0x521b1b[_0x451f('0x61')][_0x451f('0x7f')]]=_0x521b1b[_0x451f('0x61')]['from'];return db[_0x451f('0x76')]['create'](_0x15481d,{'fields':_0x4facae,'raw':!![]});}})[_0x451f('0x22')](handleEntityNotFound(_0x16c990,null))[_0x451f('0x22')](function(_0x2b1a9e){_0x18da54[_0x451f('0x8d')]=_0x2b1a9e;if(_0x2b1a9e){var _0x3c4187={'ContactId':_0x2b1a9e['id'],'OpenchannelAccountId':_0x521b1b[_0x451f('0x69')]['id'],'from':(_0x2b1a9e[_0x451f('0x8e')]||'')+'\x20'+(_0x2b1a9e[_0x451f('0x8f')]||'')};var _0x530151={'OpenchannelAccountId':_0x521b1b[_0x451f('0x69')]['id'],'closed':![]};if(_0x521b1b[_0x451f('0x61')]['threadId']){_0x530151['threadId']=_0x521b1b[_0x451f('0x61')]['threadId'];return db[_0x451f('0x90')]['find']({'where':_0x530151})[_0x451f('0x22')](function(_0x310e5c){if(_0x310e5c){return[_0x310e5c,![]];}_0x3c4187[_0x451f('0x91')]=_0x521b1b[_0x451f('0x61')]['threadId'];_0x3c4187[_0x451f('0x92')]=_0x521b1b['body'][_0x451f('0x92')];return db[_0x451f('0x90')]['create'](_0x3c4187)[_0x451f('0x22')](function(_0x50f489){return[_0x50f489,!![]];});});}else{_0x530151[_0x451f('0x91')]=null;}_0x530151[_0x451f('0x93')]=_0x2b1a9e['id'];return db[_0x451f('0x90')]['find']({'where':_0x530151})[_0x451f('0x22')](function(_0x139637){if(_0x139637){return[_0x139637,![]];}return db[_0x451f('0x90')]['create'](_0x3c4187)[_0x451f('0x22')](function(_0x51ec21){return[_0x51ec21,!![]];});});}})[_0x451f('0x94')](function(_0xe6aceb,_0x1303f7){if(_0xe6aceb){_0x245543=_0x1303f7;if(!_0x1303f7){var _0x522032={'from':(_0x18da54['contact'][_0x451f('0x8e')]||'')+'\x20'+(_0x18da54[_0x451f('0x8d')][_0x451f('0x8f')]||'')};if(_0x521b1b[_0x451f('0x61')][_0x451f('0x91')]&&_0x521b1b[_0x451f('0x61')][_0x451f('0x95')]&&_0x521b1b[_0x451f('0x61')]['threadId']!=_0x521b1b[_0x451f('0x61')][_0x451f('0x95')]){_0x522032[_0x451f('0x91')]=_0x521b1b[_0x451f('0x61')]['messageId'];}return _0xe6aceb['update'](_0x522032);}else{return _0xe6aceb;}}})[_0x451f('0x22')](function(_0x1bf365){_0x18da54['interaction']=_0x1bf365[_0x451f('0x39')]({'plain':!![]});_0x18da54[_0x451f('0x96')][_0x451f('0x97')]=_0x245543;if(_0x18da54[_0x451f('0x96')][_0x451f('0x97')]){if(_0x18da54[_0x451f('0x8a')][_0x451f('0x98')]){_0x18da54[_0x451f('0x85')][_0x451f('0x99')]({'id':0x0,'priority':_0x18da54['applications'][_0x451f('0x50')]+0x1,'app':_0x451f('0x9a'),'appdata':_0x451f('0x9b'),'interval':_0x451f('0x9c')});}}return db['OpenchannelMessage'][_0x451f('0x60')]({'body':_0x521b1b[_0x451f('0x61')][_0x451f('0x61')],'OpenchannelAccountId':_0x521b1b[_0x451f('0x69')]['id'],'OpenchannelInteractionId':_0x1bf365['id'],'direction':'in','ContactId':_0x18da54[_0x451f('0x8d')]['id'],'AttachmentId':_0x521b1b['body'][_0x451f('0x9d')]});})[_0x451f('0x22')](function(_0x83f7e2){_0x18da54['message']=_0x83f7e2;if(_0x18da54['interaction'][_0x451f('0x9e')]){return db[_0x451f('0x9f')][_0x451f('0x5f')]({'attributes':['id','name'],'where':{'id':_0x18da54['interaction'][_0x451f('0x9e')]}})['then'](function(_0x3a0e57){if(_0x3a0e57){_0x18da54[_0x451f('0x85')][_0x451f('0xa0')]({'id':0x0,'priority':0x0,'app':_0x451f('0xa1'),'appdata':_0x3a0e57[_0x451f('0x3f')]+','+(_0x18da54[_0x451f('0x8a')][_0x451f('0xa2')]||0xa),'interval':_0x451f('0x9c')});_0x18da54[_0x451f('0xa3')]=![];}return respondWithRpcPromise(_0x451f('0xa4'),_0x451f('0xa5'),_0x18da54);});}return respondWithRpcPromise('Start','startRouting',_0x18da54);})[_0x451f('0x22')](function(_0x412dca){respondWithRpcPromise(_0x451f('0xa6'),'EventManager',{'event':_0x451f('0x75'),'message':_0x412dca},client9002);return _0x412dca;})[_0x451f('0x22')](respondWithResult(_0x16c990,null))[_0x451f('0x5d')](handleError(_0x16c990,null));};exports[_0x451f('0xa7')]=function(_0x51a36c,_0x5a7fda){var _0x107d9b=_0x51a36c[_0x451f('0x69')]['id'];var _0x5e0962=_0x51a36c[_0x451f('0x61')];var _0x54fc22=0xc8;var _0x4e9750=null;return db['sequelize'][_0x451f('0xa8')]({'isolationLevel':db[_0x451f('0xa9')][_0x451f('0xaa')][_0x451f('0xab')][_0x451f('0xac')]},function(_0x481f50){return db[_0x451f('0x44')]['findOne']({'where':{'id':_0x107d9b},'transaction':_0x481f50})[_0x451f('0x22')](function(_0xa0d6b5){if(_0xa0d6b5){return db['OpenchannelApplication']['destroy']({'where':{'OpenchannelAccountId':_0x107d9b},'transaction':_0x481f50})['then'](function(){var _0x2a5ca3=_[_0x451f('0x48')](_0x5e0962,function(_0x5748f8){_0x5748f8[_0x451f('0x6c')]=_0x107d9b;return _0x5748f8;});return db[_0x451f('0xad')]['bulkCreate'](_0x2a5ca3,{'transaction':_0x481f50});});}else{_0x54fc22=0x194;_0x4e9750=[];}});})[_0x451f('0x22')](function(){if(_0x54fc22!==0x194){return db[_0x451f('0xad')][_0x451f('0xae')]({'where':{'OpenchannelAccountId':_0x107d9b},'order':'priority'})[_0x451f('0x22')](function(_0x4301c4){_0x4e9750=_0x4301c4;});}})[_0x451f('0x5d')](function(_0x36049b){_0x54fc22=0x1f4;logger['error'](_0x36049b[_0x451f('0x3e')]);if(_0x36049b[_0x451f('0x3f')]){delete _0x36049b[_0x451f('0x3f')];}_0x4e9750=_0x36049b;})[_0x451f('0xaf')](function(){if(_0x4e9750===null){_0x5a7fda['sendStatus'](_0x54fc22);}else{if(_0x54fc22===0x1f4){_0x5a7fda[_0x451f('0x2e')](_0x54fc22)['send'](_0x4e9750);}else{_0x5a7fda[_0x451f('0x2e')](_0x54fc22)[_0x451f('0x2f')](_0x4e9750);}}});};exports[_0x451f('0xb0')]=function(_0xa79db9,_0x52364d,_0x427712){var _0x4267e4={};var _0x59b9ce={};var _0x43e036;var _0x10ab1a;return db[_0x451f('0x44')][_0x451f('0x74')]({'where':{'id':_0xa79db9[_0x451f('0x69')]['id']}})[_0x451f('0x22')](handleEntityNotFound(_0x52364d,null))[_0x451f('0x22')](function(_0x3b0e35){if(_0x3b0e35){_0x43e036=_0x3b0e35;_0x59b9ce['model']=_[_0x451f('0x4a')](db[_0x451f('0xad')]['rawAttributes']);_0x59b9ce[_0x451f('0x49')]=_[_0x451f('0x4a')](_0xa79db9[_0x451f('0x49')]);_0x59b9ce[_0x451f('0x4b')]=_[_0x451f('0x4c')](_0x59b9ce['model'],_0x59b9ce[_0x451f('0x49')]);_0x4267e4[_0x451f('0x4e')]=_[_0x451f('0x4c')](_0x59b9ce[_0x451f('0x4d')],qs[_0x451f('0x4f')](_0xa79db9['query']['fields']));_0x4267e4[_0x451f('0x4e')]=_0x4267e4[_0x451f('0x4e')][_0x451f('0x50')]?_0x4267e4[_0x451f('0x4e')]:_0x59b9ce[_0x451f('0x4d')];_0x4267e4[_0x451f('0x52')]=qs['sort'](_0xa79db9[_0x451f('0x49')][_0x451f('0x53')]);_0x4267e4[_0x451f('0x54')]=qs[_0x451f('0x4b')](_[_0x451f('0x55')](_0xa79db9[_0x451f('0x49')],_0x59b9ce[_0x451f('0x4b')]));if(_0xa79db9[_0x451f('0x49')]['filter']){_0x4267e4[_0x451f('0x54')]=_[_0x451f('0x57')](_0x4267e4[_0x451f('0x54')],{'$or':_[_0x451f('0x48')](_0x4267e4['attributes'],function(_0x4fb4db){var _0x2ea1d0={};_0x2ea1d0[_0x4fb4db]={'$like':'%'+_0xa79db9[_0x451f('0x49')][_0x451f('0x56')]+'%'};return _0x2ea1d0;})});}_0x4267e4=_[_0x451f('0x57')]({},_0x4267e4,_0xa79db9[_0x451f('0x5e')]);return _0x43e036['getApplications'](_0x4267e4);}})[_0x451f('0x22')](function(_0x1a2569){if(_0x1a2569){_0x10ab1a=_0x1a2569[_0x451f('0x50')];if(!_0xa79db9['query'][_0x451f('0x6e')](_0x451f('0x51'))){_0x4267e4['limit']=qs['limit'](_0xa79db9[_0x451f('0x49')][_0x451f('0x31')]);_0x4267e4[_0x451f('0x30')]=qs['offset'](_0xa79db9[_0x451f('0x49')][_0x451f('0x30')]);}return _0x43e036[_0x451f('0xb0')](_0x4267e4);}})[_0x451f('0x22')](function(_0x3ab6d9){if(_0x3ab6d9){return _0x3ab6d9?{'count':_0x10ab1a,'rows':_0x3ab6d9}:null;}})[_0x451f('0x22')](respondWithResult(_0x52364d,null))[_0x451f('0x5d')](handleError(_0x52364d,null));};exports[_0x451f('0xb1')]=function(_0xfc4656,_0x5d6465,_0x5a18bc){var _0x4a9f2d={'raw':![],'where':{}};var _0x3e1a07={};var _0x1f7a39={'count':0x0,'rows':[]};return db[_0x451f('0x44')]['findOne']({'where':{'id':_0xfc4656[_0x451f('0x69')]['id']}})[_0x451f('0x22')](handleEntityNotFound(_0x5d6465,null))[_0x451f('0x22')](function(_0x1ad5a7){if(_0x1ad5a7){_0x3e1a07['model']=_[_0x451f('0x4a')](db[_0x451f('0x90')][_0x451f('0x45')]);_0x3e1a07[_0x451f('0x49')]=_[_0x451f('0x4a')](_0xfc4656['query']);_0x3e1a07['filters']=_[_0x451f('0x4c')](_0x3e1a07[_0x451f('0x4d')],_0x3e1a07[_0x451f('0x49')]);_0x4a9f2d['attributes']=_['intersection'](_0x3e1a07[_0x451f('0x4d')],qs[_0x451f('0x4f')](_0xfc4656[_0x451f('0x49')]['fields']));_0x4a9f2d[_0x451f('0x4e')]=_0x4a9f2d[_0x451f('0x4e')][_0x451f('0x50')]?_0x4a9f2d[_0x451f('0x4e')]:_0x3e1a07[_0x451f('0x4d')];if(!_0xfc4656[_0x451f('0x49')][_0x451f('0x6e')]('nolimit')){_0x4a9f2d[_0x451f('0x31')]=qs[_0x451f('0x31')](_0xfc4656[_0x451f('0x49')][_0x451f('0x31')]);_0x4a9f2d['offset']=qs[_0x451f('0x30')](_0xfc4656[_0x451f('0x49')]['offset']);}_0x4a9f2d[_0x451f('0x52')]=qs[_0x451f('0x53')](_0xfc4656[_0x451f('0x49')][_0x451f('0x53')]);_0x4a9f2d[_0x451f('0x54')]=qs[_0x451f('0x4b')](_['pick'](_0xfc4656[_0x451f('0x49')],_0x3e1a07[_0x451f('0x4b')]));_0x4a9f2d[_0x451f('0x54')][_0x451f('0x6c')]=_0x1ad5a7['id'];if(_0xfc4656[_0x451f('0x49')][_0x451f('0x56')]){_0x4a9f2d[_0x451f('0x54')]=_[_0x451f('0x57')](_0x4a9f2d['where'],{'$or':_['map'](_0x4a9f2d['attributes'],function(_0x4412f0){var _0x455d58={};_0x455d58[_0x4412f0]={'$like':'%'+_0xfc4656['query']['filter']+'%'};return _0x455d58;})});}_0x4a9f2d=_[_0x451f('0x57')]({},_0x4a9f2d,_0xfc4656['options']);return db[_0x451f('0x90')][_0x451f('0x32')]({'where':_0x4a9f2d[_0x451f('0x54')]})['then'](function(_0x2a2a7a){_0x1f7a39['count']=_0x2a2a7a;if(_0xfc4656[_0x451f('0x49')]['includeAll']){_0x4a9f2d[_0x451f('0x5a')]=[{'model':db['CmContact'],'as':_0x451f('0xb2'),'required':![]},{'model':db['User'],'as':_0x451f('0xb3'),'attributes':[_0x451f('0x3f'),_0x451f('0xb4'),_0x451f('0xb5')],'required':![]},{'model':db[_0x451f('0xb6')],'as':_0x451f('0xb7'),'attributes':['id','name',_0x451f('0xb8')],'where':_0xfc4656[_0x451f('0x49')][_0x451f('0xb9')]?{'id':_0xfc4656[_0x451f('0x49')][_0x451f('0xb9')]}:undefined,'required':_0xfc4656[_0x451f('0x49')][_0x451f('0xb9')]?!![]:![]}];}return db[_0x451f('0x90')][_0x451f('0x5b')](_0x4a9f2d);})[_0x451f('0x22')](function(_0x28aa45){_0x1f7a39[_0x451f('0x5c')]=_0x28aa45;return _0x1f7a39;});}})['then'](respondWithFilteredResult(_0x5d6465,_0x4a9f2d))[_0x451f('0x5d')](handleError(_0x5d6465,null));};exports[_0x451f('0xba')]=function(_0x284143,_0x5a3c2c,_0x3de319){return db['OpenchannelAccount'][_0x451f('0x5f')]({'where':{'id':_0x284143[_0x451f('0x69')]['id']}})[_0x451f('0x22')](handleEntityNotFound(_0x5a3c2c,null))[_0x451f('0x22')](function(_0x53fbb1){if(_0x53fbb1){return _0x53fbb1[_0x451f('0xba')](_0x284143[_0x451f('0x61')][_0x451f('0x71')],_[_0x451f('0xbb')](_0x284143['body'],[_0x451f('0x71'),'id'])||{})[_0x451f('0x94')](function(_0x5eb88b){for(var _0x40d049=0x0;_0x40d049<_0x284143[_0x451f('0x61')]['ids'][_0x451f('0x50')];_0x40d049+=0x1){socket[_0x451f('0xbc')]('userOpenchannelAccount:save',{'UserId':Number(_0x284143[_0x451f('0x61')][_0x451f('0x71')][_0x40d049]),'OpenchannelAccountId':Number(_0x284143[_0x451f('0x69')]['id'])});}return _0x5eb88b;});}})[_0x451f('0x22')](respondWithResult(_0x5a3c2c,null))[_0x451f('0x5d')](handleError(_0x5a3c2c,null));};exports['removeAgents']=function(_0x28ebd4,_0x5bfe21,_0x1de8b8){return db['OpenchannelAccount'][_0x451f('0x5f')]({'where':{'id':_0x28ebd4['params']['id']}})[_0x451f('0x22')](handleEntityNotFound(_0x5bfe21,null))[_0x451f('0x22')](function(_0x509007){if(_0x509007){return _0x509007['removeAgents'](_0x28ebd4[_0x451f('0x49')][_0x451f('0x71')])[_0x451f('0x22')](function(){if(_['isArray'](_0x28ebd4[_0x451f('0x49')][_0x451f('0x71')])){for(var _0x56d39b=0x0;_0x56d39b<_0x28ebd4[_0x451f('0x49')]['ids']['length'];_0x56d39b+=0x1){socket['emit']('userOpenchannelAccount:remove',{'UserId':Number(_0x28ebd4[_0x451f('0x49')]['ids'][_0x56d39b]),'OpenchannelAccountId':Number(_0x28ebd4[_0x451f('0x69')]['id'])});}}else{socket[_0x451f('0xbc')]('userOpenchannelAccount:remove',{'UserId':Number(_0x28ebd4[_0x451f('0x49')][_0x451f('0x71')]),'OpenchannelAccountId':Number(_0x28ebd4[_0x451f('0x69')]['id'])});}});}})[_0x451f('0x22')](respondWithStatusCode(_0x5bfe21,null))[_0x451f('0x5d')](handleError(_0x5bfe21,null));};exports['getAgents']=function(_0x3b57fc,_0x514ce8,_0x4830ad){var _0x13d23c={};var _0x2ed796={};var _0x38e15f;var _0x5be2ba;return db[_0x451f('0x44')][_0x451f('0x74')]({'where':{'id':_0x3b57fc[_0x451f('0x69')]['id']}})[_0x451f('0x22')](handleEntityNotFound(_0x514ce8,null))['then'](function(_0x9ea51c){if(_0x9ea51c){_0x38e15f=_0x9ea51c;_0x2ed796[_0x451f('0x4d')]=_[_0x451f('0x4a')](db[_0x451f('0x9f')][_0x451f('0x45')]);_0x2ed796[_0x451f('0x49')]=_[_0x451f('0x4a')](_0x3b57fc['query']);_0x2ed796[_0x451f('0x4b')]=_[_0x451f('0x4c')](_0x2ed796['model'],_0x2ed796['query']);_0x13d23c['attributes']=_[_0x451f('0x4c')](_0x2ed796[_0x451f('0x4d')],qs['fields'](_0x3b57fc['query']['fields']));_0x13d23c[_0x451f('0x4e')]=_0x13d23c[_0x451f('0x4e')]['length']?_0x13d23c[_0x451f('0x4e')]:_0x2ed796[_0x451f('0x4d')];_0x13d23c[_0x451f('0x52')]=qs[_0x451f('0x53')](_0x3b57fc[_0x451f('0x49')]['sort']);_0x13d23c['where']=qs[_0x451f('0x4b')](_[_0x451f('0x55')](_0x3b57fc[_0x451f('0x49')],_0x2ed796[_0x451f('0x4b')]));if(_0x3b57fc[_0x451f('0x49')][_0x451f('0x56')]){_0x13d23c['where']=_['merge'](_0x13d23c[_0x451f('0x54')],{'$or':_[_0x451f('0x48')](_0x13d23c[_0x451f('0x4e')],function(_0x1052c9){var _0x358b9f={};_0x358b9f[_0x1052c9]={'$like':'%'+_0x3b57fc[_0x451f('0x49')][_0x451f('0x56')]+'%'};return _0x358b9f;})});}_0x13d23c=_[_0x451f('0x57')]({},_0x13d23c,_0x3b57fc[_0x451f('0x5e')]);return _0x38e15f[_0x451f('0xbd')](_0x13d23c);}})['then'](function(_0x39879f){if(_0x39879f){_0x5be2ba=_0x39879f[_0x451f('0x50')];if(!_0x3b57fc[_0x451f('0x49')][_0x451f('0x6e')](_0x451f('0x51'))){_0x13d23c['limit']=qs[_0x451f('0x31')](_0x3b57fc['query'][_0x451f('0x31')]);_0x13d23c['offset']=qs['offset'](_0x3b57fc[_0x451f('0x49')]['offset']);}return _0x38e15f['getAgents'](_0x13d23c);}})[_0x451f('0x22')](function(_0x2ee3c2){if(_0x2ee3c2){return _0x2ee3c2?{'count':_0x5be2ba,'rows':_0x2ee3c2}:null;}})[_0x451f('0x22')](respondWithResult(_0x514ce8,null))[_0x451f('0x5d')](handleError(_0x514ce8,null));};exports[_0x451f('0x40')]=function(_0xa5d76e,_0x59cfd7,_0x2464c0){var _0x3abe61,_0x5705b7,_0x1cca8b;if(_[_0x451f('0x7d')](_0xa5d76e[_0x451f('0x61')][_0x451f('0x61')])||_0xa5d76e[_0x451f('0x61')][_0x451f('0x61')]===''){throw new db[(_0x451f('0x77'))][(_0x451f('0x78'))](_0x451f('0xbe'));}if(_[_0x451f('0x7d')](_0xa5d76e[_0x451f('0x61')]['to'])){}_0x3abe61=_0xa5d76e[_0x451f('0x61')]['to'];return db[_0x451f('0x44')][_0x451f('0x74')]({'where':{'id':_0xa5d76e[_0x451f('0x69')]['id']}})['then'](handleEntityNotFound(_0x59cfd7,null))[_0x451f('0x22')](function(_0x38e215){if(_0x38e215){return db[_0x451f('0x44')][_0x451f('0x5f')]({'where':{'id':_0x38e215['id']},'include':[{'model':db[_0x451f('0x82')],'as':_0x451f('0x83'),'include':[{'model':db['CmContact'],'as':_0x451f('0x8b'),'where':{[_0x38e215[_0x451f('0x7f')]]:_0x3abe61},'limit':0x1,'order':[[_0x451f('0x7b'),'DESC']]}]}]})[_0x451f('0x22')](handleEntityNotFound(_0x59cfd7,null))[_0x451f('0x22')](function(_0x6bc420){if(_0x6bc420&&_0x6bc420[_0x451f('0x83')]){_0x5705b7=_0x6bc420[_0x451f('0x39')]({'plain':!![]});if(_0x5705b7[_0x451f('0x83')]&&_0x5705b7[_0x451f('0x83')][_0x451f('0x8b')][_0x451f('0x50')]){return _0x5705b7['List'][_0x451f('0x8b')][0x0];}return db[_0x451f('0x76')]['create'](_[_0x451f('0x1a')](_0xa5d76e[_0x451f('0x61')],{'firstName':_0x3abe61,[_0x6bc420[_0x451f('0x7f')]]:_0x3abe61,'phone':_0x3abe61,'ListId':_0x5705b7[_0x451f('0x8c')]}));}})['then'](handleEntityNotFound(_0x59cfd7,null))[_0x451f('0x22')](function(_0x328b11){if(_0x328b11){_0x1cca8b=_0x328b11;return db[_0x451f('0x90')]['find']({'where':{'ContactId':_0x1cca8b['id'],'closed':![],'OpenchannelAccountId':_0x5705b7['id']}})['then'](function(_0x15fb1c){if(_0x15fb1c){return[_0x15fb1c,![]];}return db[_0x451f('0x90')][_0x451f('0x60')]({'UserId':_0xa5d76e[_0x451f('0x62')]['id'],'ContactId':_0x1cca8b['id'],'OpenchannelAccountId':_0x5705b7['id'],'lastMsgDirection':_0x451f('0xbf'),'Messages':[_[_0x451f('0x57')](_0xa5d76e[_0x451f('0x61')],{'read':![],'body':_0xa5d76e[_0x451f('0x61')][_0x451f('0x61')],'OpenchannelAccountId':_0x5705b7['id'],'UserId':_0xa5d76e[_0x451f('0x62')]['id'],'ContactId':_0x1cca8b['id']})]},{'include':[{'model':db[_0x451f('0xc0')],'as':_0x451f('0xc1')}]})[_0x451f('0x22')](function(_0x30b0fa){return[_0x30b0fa,!![]];});});}})[_0x451f('0x94')](function(_0x78fc8a,_0x1cb2d4){if(_0x1cb2d4){return _0x78fc8a;}return db[_0x451f('0xc0')][_0x451f('0x60')](_[_0x451f('0x57')](_0xa5d76e[_0x451f('0x61')],{'read':![],'body':_0xa5d76e[_0x451f('0x61')][_0x451f('0x61')],'OpenchannelAccountId':_0x5705b7['id'],'OpenchannelInteractionId':_0x78fc8a['id'],'UserId':_0xa5d76e[_0x451f('0x62')]['id'],'ContactId':_0x1cca8b['id']}))[_0x451f('0x22')](function(_0x371aa5){_0x78fc8a[_0x451f('0xc2')][_0x451f('0xc1')]=[];_0x78fc8a['dataValues'][_0x451f('0xc1')][_0x451f('0x99')](_0x371aa5[_0x451f('0xc2')]);return _0x78fc8a;});});}})[_0x451f('0x22')](respondWithResult(_0x59cfd7,null))[_0x451f('0x5d')](handleError(_0x59cfd7,null));};
\ No newline at end of file
+var _0x0588=['bulkCreate','stack','finally','getApplications','getInteractions','Contact','Owner','internal','Tags','tag','addAgents','omit','emit','userOpenchannelAccount:save','removeAgents','isArray','userOpenchannelAccount:remove','getAgents','out','Messages','dataValues','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelAccount.socket','register','http','client','request','then','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','destroy','OpenchannelAccounts','UserProfileResource','name','send','index','Pause','mandatoryDispositionPause','OpenchannelAccount','rawAttributes','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','sort','where','filters','pick','filter','VIRTUAL','merge','options','findAll','rows','show','params','includeAll','include','find','create','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','OpenchannelAccountId','getDispositions','findOne','nolimit','order','Disposition','removeDispositions','addAnswer','getAnswers','CannedAnswer','map','removeAnswers','ids','notify','Sequelize','difference','createdAt','updatedAt','CompanyId','ListId','isNil','ValidationError','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','CmList','List','Contacts','DESC','OpenchannelApplication','Applications','account','applications','priority','asc','CmContact','contact','firstName','threadId','OpenchannelInteraction','externalUrl','spread','messageId','interaction','created','autoclose','push','close','unmanaged','*,*,*,*','OpenchannelMessage','AttachmentId','User','UserId','unshift','agent','waitForTheAssignedAgent','forcedOwnership','Start','startRouting','EventManager','addApplications','sequelize','transaction','Transaction','READ_COMMITTED'];(function(_0x173441,_0x26b0d9){var _0x2423a8=function(_0x4d96c2){while(--_0x4d96c2){_0x173441['push'](_0x173441['shift']());}};_0x2423a8(++_0x26b0d9);}(_0x0588,0xd8));var _0x8058=function(_0x18ec2a,_0x3b39b2){_0x18ec2a=_0x18ec2a-0x0;var _0x26c833=_0x0588[_0x18ec2a];return _0x26c833;};'use strict';var emlformat=require(_0x8058('0x0'));var rimraf=require(_0x8058('0x1'));var zipdir=require(_0x8058('0x2'));var jsonpatch=require(_0x8058('0x3'));var rp=require(_0x8058('0x4'));var moment=require(_0x8058('0x5'));var BPromise=require(_0x8058('0x6'));var Mustache=require(_0x8058('0x7'));var util=require('util');var path=require('path');var sox=require(_0x8058('0x8'));var csv=require(_0x8058('0x9'));var ejs=require(_0x8058('0xa'));var fs=require('fs');var fs_extra=require(_0x8058('0xb'));var _=require(_0x8058('0xc'));var squel=require('squel');var crypto=require(_0x8058('0xd'));var jsforce=require(_0x8058('0xe'));var deskjs=require(_0x8058('0xf'));var toCsv=require(_0x8058('0x9'));var querystring=require('querystring');var Papa=require(_0x8058('0x10'));var Redis=require(_0x8058('0x11'));var authService=require(_0x8058('0x12'));var qs=require(_0x8058('0x13'));var as=require(_0x8058('0x14'));var hardwareService=require(_0x8058('0x15'));var logger=require('../../config/logger')(_0x8058('0x16'));var utils=require('../../config/utils');var config=require(_0x8058('0x17'));var licenseUtil=require(_0x8058('0x18'));var db=require(_0x8058('0x19'))['db'];config[_0x8058('0x1a')]=_[_0x8058('0x1b')](config[_0x8058('0x1a')],{'host':_0x8058('0x1c'),'port':0x18eb});var socket=require(_0x8058('0x1d'))(new Redis(config['redis']));require(_0x8058('0x1e'))[_0x8058('0x1f')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x8058('0x20')]({'port':0x232c});var client9002=jayson[_0x8058('0x21')][_0x8058('0x20')]({'port':0x232a});function respondWithRpcPromise(_0x2b092a,_0xbe17fc,_0x406290,_0x14b804){return new BPromise(function(_0x31e66f,_0x2a8a36){var _0x2020aa=_0x14b804||client;return _0x2020aa[_0x8058('0x22')](_0x2b092a,_0x406290)[_0x8058('0x23')](function(_0x318ae2){logger['info'](_0x8058('0x24'),_0xbe17fc,_0x8058('0x25'));logger['debug'](_0x8058('0x26'),_0xbe17fc,_0x8058('0x25'),JSON[_0x8058('0x27')](_0x318ae2));if(_0x318ae2[_0x8058('0x28')]){if(_0x318ae2[_0x8058('0x28')][_0x8058('0x29')]===0x1f4){logger['error'](_0x8058('0x24'),_0xbe17fc,_0x318ae2['error'][_0x8058('0x2a')]);return _0x2a8a36(_0x318ae2[_0x8058('0x28')][_0x8058('0x2a')]);}logger[_0x8058('0x28')](_0x8058('0x24'),_0xbe17fc,_0x318ae2['error']['message']);return _0x31e66f(_0x318ae2['error'][_0x8058('0x2a')]);}else{logger[_0x8058('0x2b')](_0x8058('0x24'),_0xbe17fc,_0x8058('0x25'));_0x31e66f(_0x318ae2[_0x8058('0x2c')][_0x8058('0x2a')]);}})[_0x8058('0x2d')](function(_0x26e5ea){logger[_0x8058('0x28')](_0x8058('0x24'),_0xbe17fc,_0x26e5ea);_0x2a8a36(_0x26e5ea);});});}function respondWithStatusCode(_0x37894f,_0x23e869){_0x23e869=_0x23e869||0xcc;return function(_0x2b9c5e){if(_0x2b9c5e){return _0x37894f[_0x8058('0x2e')](_0x23e869);}return _0x37894f[_0x8058('0x2f')](_0x23e869)[_0x8058('0x30')]();};}function respondWithResult(_0x426328,_0x289a86){_0x289a86=_0x289a86||0xc8;return function(_0x1f363a){if(_0x1f363a){return _0x426328[_0x8058('0x2f')](_0x289a86)[_0x8058('0x31')](_0x1f363a);}};}function respondWithFilteredResult(_0x2498df,_0x2d166b){return function(_0x148706){if(_0x148706){var _0x11b20c=typeof _0x2d166b[_0x8058('0x32')]===_0x8058('0x33')&&typeof _0x2d166b[_0x8058('0x34')]===_0x8058('0x33');var _0x1067d7=_0x148706[_0x8058('0x35')];var _0x2a1c58=_0x11b20c?0x0:_0x2d166b[_0x8058('0x32')];var _0x13b4b1=_0x11b20c?_0x148706[_0x8058('0x35')]:_0x2d166b[_0x8058('0x32')]+_0x2d166b['limit'];var _0x1f746b;if(_0x13b4b1>=_0x1067d7){_0x13b4b1=_0x1067d7;_0x1f746b=0xc8;}else{_0x1f746b=0xce;}_0x2498df['status'](_0x1f746b);return _0x2498df['set'](_0x8058('0x36'),_0x2a1c58+'-'+_0x13b4b1+'/'+_0x1067d7)[_0x8058('0x31')](_0x148706);}return null;};}function patchUpdates(_0x30be68){return function(_0x5af2e5){try{jsonpatch['apply'](_0x5af2e5,_0x30be68,!![]);}catch(_0x486abc){return BPromise[_0x8058('0x37')](_0x486abc);}return _0x5af2e5[_0x8058('0x38')]();};}function saveUpdates(_0x1c1e29,_0x3567ac){return function(_0x13fa6d){if(_0x13fa6d){return _0x13fa6d[_0x8058('0x39')](_0x1c1e29)[_0x8058('0x23')](function(_0x5d645b){return _0x5d645b;});}return null;};}function removeEntity(_0x319543,_0x45d82b){return function(_0x4247bd){if(_0x4247bd){return _0x4247bd[_0x8058('0x3a')]()['then'](function(){var _0x353e18=_0x4247bd['get']({'plain':!![]});var _0x3e8fb6=_0x8058('0x3b');return db[_0x8058('0x3c')][_0x8058('0x3a')]({'where':{'type':_0x3e8fb6,'resourceId':_0x353e18['id']}})[_0x8058('0x23')](function(){return _0x4247bd;});})[_0x8058('0x23')](function(){_0x319543[_0x8058('0x2f')](0xcc)[_0x8058('0x30')]();});}};}function handleEntityNotFound(_0x28b35f,_0x44187c){return function(_0x3744d4){if(!_0x3744d4){_0x28b35f['sendStatus'](0x194);}return _0x3744d4;};}function handleError(_0x4accd0,_0x185bfd){_0x185bfd=_0x185bfd||0x1f4;return function(_0x5ca5dd){logger['error'](_0x5ca5dd['stack']);if(_0x5ca5dd[_0x8058('0x3d')]){delete _0x5ca5dd[_0x8058('0x3d')];}_0x4accd0[_0x8058('0x2f')](_0x185bfd)[_0x8058('0x3e')](_0x5ca5dd);};}exports[_0x8058('0x3f')]=function(_0x4e8ead,_0x40df8e){var _0x3d140d={'include':[{'model':db[_0x8058('0x40')],'as':_0x8058('0x41')}]},_0x2a65b0={},_0x5a38eb={'count':0x0,'rows':[]};var _0x4f79dc=_['map'](db[_0x8058('0x42')][_0x8058('0x43')],function(_0x176ae1){return{'name':_0x176ae1[_0x8058('0x44')],'type':_0x176ae1[_0x8058('0x45')][_0x8058('0x46')]};});_0x2a65b0[_0x8058('0x47')]=_['map'](_0x4f79dc,_0x8058('0x3d'));_0x2a65b0[_0x8058('0x48')]=_[_0x8058('0x49')](_0x4e8ead[_0x8058('0x48')]);_0x2a65b0['filters']=_[_0x8058('0x4a')](_0x2a65b0[_0x8058('0x47')],_0x2a65b0[_0x8058('0x48')]);_0x3d140d[_0x8058('0x4b')]=_[_0x8058('0x4a')](_0x2a65b0[_0x8058('0x47')],qs[_0x8058('0x4c')](_0x4e8ead[_0x8058('0x48')][_0x8058('0x4c')]));_0x3d140d['attributes']=_0x3d140d[_0x8058('0x4b')][_0x8058('0x4d')]?_0x3d140d[_0x8058('0x4b')]:_0x2a65b0[_0x8058('0x47')];if(!_0x4e8ead[_0x8058('0x48')][_0x8058('0x4e')]('nolimit')){_0x3d140d[_0x8058('0x34')]=qs[_0x8058('0x34')](_0x4e8ead[_0x8058('0x48')][_0x8058('0x34')]);_0x3d140d[_0x8058('0x32')]=qs[_0x8058('0x32')](_0x4e8ead[_0x8058('0x48')][_0x8058('0x32')]);}_0x3d140d['order']=qs['sort'](_0x4e8ead[_0x8058('0x48')][_0x8058('0x4f')]);_0x3d140d[_0x8058('0x50')]=qs[_0x8058('0x51')](_[_0x8058('0x52')](_0x4e8ead[_0x8058('0x48')],_0x2a65b0[_0x8058('0x51')]),_0x4f79dc);if(_0x4e8ead['query'][_0x8058('0x53')]){_0x3d140d[_0x8058('0x50')]=_['merge'](_0x3d140d[_0x8058('0x50')],{'$or':_['map'](_0x4f79dc,function(_0x1c0692){if(_0x1c0692['type']!==_0x8058('0x54')){var _0x55b62c={};_0x55b62c[_0x1c0692[_0x8058('0x3d')]]={'$like':'%'+_0x4e8ead['query'][_0x8058('0x53')]+'%'};return _0x55b62c;}})});}_0x3d140d=_[_0x8058('0x55')]({},_0x3d140d,_0x4e8ead[_0x8058('0x56')]);var _0x5b34fe={'where':_0x3d140d[_0x8058('0x50')]};return db[_0x8058('0x42')][_0x8058('0x35')](_0x5b34fe)['then'](function(_0x3a05be){_0x5a38eb[_0x8058('0x35')]=_0x3a05be;if(_0x4e8ead[_0x8058('0x48')]['includeAll']){_0x3d140d['include']=[{'all':!![]}];}return db['OpenchannelAccount'][_0x8058('0x57')](_0x3d140d);})[_0x8058('0x23')](function(_0x222e2e){_0x5a38eb[_0x8058('0x58')]=_0x222e2e;return _0x5a38eb;})[_0x8058('0x23')](respondWithFilteredResult(_0x40df8e,_0x3d140d))[_0x8058('0x2d')](handleError(_0x40df8e,null));};exports[_0x8058('0x59')]=function(_0x12260b,_0x35a8a3){var _0x5ee768={'raw':![],'where':{'id':_0x12260b[_0x8058('0x5a')]['id']},'include':[{'model':db[_0x8058('0x40')],'as':_0x8058('0x41')}]},_0x3dc57d={};_0x3dc57d[_0x8058('0x47')]=_['keys'](db[_0x8058('0x42')][_0x8058('0x43')]);_0x3dc57d[_0x8058('0x48')]=_[_0x8058('0x49')](_0x12260b[_0x8058('0x48')]);_0x3dc57d['filters']=_['intersection'](_0x3dc57d[_0x8058('0x47')],_0x3dc57d['query']);_0x5ee768[_0x8058('0x4b')]=_[_0x8058('0x4a')](_0x3dc57d['model'],qs['fields'](_0x12260b[_0x8058('0x48')]['fields']));_0x5ee768[_0x8058('0x4b')]=_0x5ee768[_0x8058('0x4b')][_0x8058('0x4d')]?_0x5ee768[_0x8058('0x4b')]:_0x3dc57d[_0x8058('0x47')];if(_0x12260b[_0x8058('0x48')][_0x8058('0x5b')]){_0x5ee768[_0x8058('0x5c')]=[{'all':!![]}];}_0x5ee768=_['merge']({},_0x5ee768,_0x12260b[_0x8058('0x56')]);return db[_0x8058('0x42')][_0x8058('0x5d')](_0x5ee768)[_0x8058('0x23')](handleEntityNotFound(_0x35a8a3,null))[_0x8058('0x23')](respondWithResult(_0x35a8a3,null))[_0x8058('0x2d')](handleError(_0x35a8a3,null));};exports[_0x8058('0x5e')]=function(_0x4640f5,_0x4ef68c){return db[_0x8058('0x42')][_0x8058('0x5e')](_0x4640f5['body'],{})['then'](function(_0x3e6244){var _0x52dd84=_0x4640f5['user'][_0x8058('0x5f')]({'plain':!![]});if(!_0x52dd84)throw new Error(_0x8058('0x60'));if(_0x52dd84['role']===_0x8058('0x61')){var _0x36f7f3=_0x3e6244[_0x8058('0x5f')]({'plain':!![]});var _0x1b7740=_0x8058('0x3b');return db[_0x8058('0x62')]['find']({'where':{'name':_0x1b7740,'userProfileId':_0x52dd84[_0x8058('0x63')]},'raw':!![]})[_0x8058('0x23')](function(_0x54f5ed){if(_0x54f5ed&&_0x54f5ed[_0x8058('0x64')]===0x0){return db[_0x8058('0x3c')][_0x8058('0x5e')]({'name':_0x36f7f3[_0x8058('0x3d')],'resourceId':_0x36f7f3['id'],'type':_0x54f5ed[_0x8058('0x3d')],'sectionId':_0x54f5ed['id']},{})[_0x8058('0x23')](function(){return _0x3e6244;});}else{return _0x3e6244;}})['catch'](function(_0x32a365){logger[_0x8058('0x28')](_0x8058('0x65'),_0x32a365);throw _0x32a365;});}return _0x3e6244;})[_0x8058('0x23')](respondWithResult(_0x4ef68c,0xc9))[_0x8058('0x2d')](handleError(_0x4ef68c,null));};exports[_0x8058('0x39')]=function(_0x15cd46,_0x4713ce){if(_0x15cd46[_0x8058('0x66')]['id']){delete _0x15cd46[_0x8058('0x66')]['id'];}return db['OpenchannelAccount'][_0x8058('0x5d')]({'where':{'id':_0x15cd46[_0x8058('0x5a')]['id']},'include':[{'model':db[_0x8058('0x40')],'as':'mandatoryDispositionPause'}]})[_0x8058('0x23')](handleEntityNotFound(_0x4713ce,null))['then'](saveUpdates(_0x15cd46[_0x8058('0x66')],null))[_0x8058('0x23')](respondWithResult(_0x4713ce,null))[_0x8058('0x2d')](handleError(_0x4713ce,null));};exports[_0x8058('0x3a')]=function(_0x183501,_0x3518cb){return db[_0x8058('0x42')][_0x8058('0x5d')]({'where':{'id':_0x183501['params']['id']}})[_0x8058('0x23')](handleEntityNotFound(_0x3518cb,null))[_0x8058('0x23')](removeEntity(_0x3518cb,null))[_0x8058('0x2d')](handleError(_0x3518cb,null));};exports[_0x8058('0x67')]=function(_0x2391c1,_0x187d76){return db['OpenchannelAccount']['describe']()['then'](respondWithResult(_0x187d76,null))[_0x8058('0x2d')](handleError(_0x187d76,null));};exports[_0x8058('0x68')]=function(_0x55e7b7,_0xd7f04f,_0x2381dc){if(_0x55e7b7[_0x8058('0x66')]['id']){delete _0x55e7b7['body']['id'];}return db[_0x8058('0x42')][_0x8058('0x5d')]({'where':{'id':_0x55e7b7[_0x8058('0x5a')]['id']}})[_0x8058('0x23')](handleEntityNotFound(_0xd7f04f,null))[_0x8058('0x23')](function(_0x4fb663){if(_0x4fb663){_0x55e7b7[_0x8058('0x66')][_0x8058('0x69')]=_0x4fb663['id'];return db['Disposition']['create'](_0x55e7b7[_0x8058('0x66')]);}})[_0x8058('0x23')](respondWithResult(_0xd7f04f,null))['catch'](handleError(_0xd7f04f,null));};exports[_0x8058('0x6a')]=function(_0x3607a2,_0x407aaa,_0x2b801c){var _0x25f5bb={'raw':![],'where':{}};var _0x344283={};var _0x593f07={'count':0x0,'rows':[]};return db[_0x8058('0x42')][_0x8058('0x6b')]({'where':{'id':_0x3607a2['params']['id']}})[_0x8058('0x23')](handleEntityNotFound(_0x407aaa,null))[_0x8058('0x23')](function(_0x272987){if(_0x272987){_0x344283[_0x8058('0x47')]=_['keys'](db['Disposition'][_0x8058('0x43')]);_0x344283[_0x8058('0x48')]=_[_0x8058('0x49')](_0x3607a2[_0x8058('0x48')]);_0x344283[_0x8058('0x51')]=_[_0x8058('0x4a')](_0x344283[_0x8058('0x47')],_0x344283[_0x8058('0x48')]);_0x25f5bb['attributes']=_['intersection'](_0x344283[_0x8058('0x47')],qs[_0x8058('0x4c')](_0x3607a2[_0x8058('0x48')]['fields']));_0x25f5bb[_0x8058('0x4b')]=_0x25f5bb[_0x8058('0x4b')][_0x8058('0x4d')]?_0x25f5bb[_0x8058('0x4b')]:_0x344283[_0x8058('0x47')];if(!_0x3607a2[_0x8058('0x48')][_0x8058('0x4e')](_0x8058('0x6c'))){_0x25f5bb[_0x8058('0x34')]=qs[_0x8058('0x34')](_0x3607a2[_0x8058('0x48')][_0x8058('0x34')]);_0x25f5bb[_0x8058('0x32')]=qs[_0x8058('0x32')](_0x3607a2[_0x8058('0x48')][_0x8058('0x32')]);}_0x25f5bb[_0x8058('0x6d')]=qs['sort'](_0x3607a2[_0x8058('0x48')]['sort']);_0x25f5bb[_0x8058('0x50')]=qs[_0x8058('0x51')](_['pick'](_0x3607a2[_0x8058('0x48')],_0x344283[_0x8058('0x51')]));_0x25f5bb[_0x8058('0x50')][_0x8058('0x69')]=_0x272987['id'];if(_0x3607a2[_0x8058('0x48')][_0x8058('0x53')]){_0x25f5bb[_0x8058('0x50')]=_[_0x8058('0x55')](_0x25f5bb[_0x8058('0x50')],{'$or':_['map'](_0x25f5bb[_0x8058('0x4b')],function(_0x833a0d){var _0x1010dc={};_0x1010dc[_0x833a0d]={'$like':'%'+_0x3607a2[_0x8058('0x48')]['filter']+'%'};return _0x1010dc;})});}_0x25f5bb=_[_0x8058('0x55')]({},_0x25f5bb,_0x3607a2[_0x8058('0x56')]);return db[_0x8058('0x6e')][_0x8058('0x35')]({'where':_0x25f5bb['where']})[_0x8058('0x23')](function(_0x514aaf){_0x593f07[_0x8058('0x35')]=_0x514aaf;if(_0x3607a2['query']['includeAll']){_0x25f5bb[_0x8058('0x5c')]=[{'all':!![]}];}return db[_0x8058('0x6e')][_0x8058('0x57')](_0x25f5bb);})[_0x8058('0x23')](function(_0x59cbe6){_0x593f07[_0x8058('0x58')]=_0x59cbe6;return _0x593f07;});}})['then'](respondWithFilteredResult(_0x407aaa,_0x25f5bb))['catch'](handleError(_0x407aaa,null));};exports[_0x8058('0x6f')]=function(_0x2b8e9f,_0x1cb650,_0x9d07c9){return db['OpenchannelAccount'][_0x8058('0x5d')]({'where':{'id':_0x2b8e9f['params']['id']}})[_0x8058('0x23')](handleEntityNotFound(_0x1cb650,null))[_0x8058('0x23')](function(_0x374dc4){if(_0x374dc4){return _0x374dc4['removeDispositions'](_0x2b8e9f['query']['ids']);}})[_0x8058('0x23')](respondWithStatusCode(_0x1cb650,null))['catch'](handleError(_0x1cb650,null));};exports[_0x8058('0x70')]=function(_0xa7e83e,_0x781a9,_0x20e23d){if(_0xa7e83e[_0x8058('0x66')]['id']){delete _0xa7e83e[_0x8058('0x66')]['id'];}return db[_0x8058('0x42')][_0x8058('0x5d')]({'where':{'id':_0xa7e83e['params']['id']}})[_0x8058('0x23')](handleEntityNotFound(_0x781a9,null))[_0x8058('0x23')](function(_0x5c090d){if(_0x5c090d){_0xa7e83e[_0x8058('0x66')][_0x8058('0x69')]=_0x5c090d['id'];return db['CannedAnswer'][_0x8058('0x5e')](_0xa7e83e[_0x8058('0x66')]);}})[_0x8058('0x23')](respondWithResult(_0x781a9,null))[_0x8058('0x2d')](handleError(_0x781a9,null));};exports[_0x8058('0x71')]=function(_0x40c589,_0xfba82b,_0x20a4cc){var _0x5339ed={'raw':![],'where':{}};var _0x186486={};var _0x161791={'count':0x0,'rows':[]};return db['OpenchannelAccount'][_0x8058('0x6b')]({'where':{'id':_0x40c589[_0x8058('0x5a')]['id']}})[_0x8058('0x23')](handleEntityNotFound(_0xfba82b,null))[_0x8058('0x23')](function(_0x373968){if(_0x373968){_0x186486[_0x8058('0x47')]=_[_0x8058('0x49')](db[_0x8058('0x72')][_0x8058('0x43')]);_0x186486['query']=_['keys'](_0x40c589[_0x8058('0x48')]);_0x186486['filters']=_[_0x8058('0x4a')](_0x186486[_0x8058('0x47')],_0x186486['query']);_0x5339ed['attributes']=_[_0x8058('0x4a')](_0x186486[_0x8058('0x47')],qs[_0x8058('0x4c')](_0x40c589[_0x8058('0x48')]['fields']));_0x5339ed[_0x8058('0x4b')]=_0x5339ed[_0x8058('0x4b')][_0x8058('0x4d')]?_0x5339ed[_0x8058('0x4b')]:_0x186486[_0x8058('0x47')];if(!_0x40c589[_0x8058('0x48')][_0x8058('0x4e')](_0x8058('0x6c'))){_0x5339ed[_0x8058('0x34')]=qs[_0x8058('0x34')](_0x40c589[_0x8058('0x48')][_0x8058('0x34')]);_0x5339ed[_0x8058('0x32')]=qs[_0x8058('0x32')](_0x40c589[_0x8058('0x48')][_0x8058('0x32')]);}_0x5339ed[_0x8058('0x6d')]=qs['sort'](_0x40c589[_0x8058('0x48')][_0x8058('0x4f')]);_0x5339ed['where']=qs[_0x8058('0x51')](_[_0x8058('0x52')](_0x40c589[_0x8058('0x48')],_0x186486[_0x8058('0x51')]));_0x5339ed['where']['OpenchannelAccountId']=_0x373968['id'];if(_0x40c589[_0x8058('0x48')][_0x8058('0x53')]){_0x5339ed[_0x8058('0x50')]=_['merge'](_0x5339ed[_0x8058('0x50')],{'$or':_[_0x8058('0x73')](_0x5339ed[_0x8058('0x4b')],function(_0x1a3c12){var _0x154e57={};_0x154e57[_0x1a3c12]={'$like':'%'+_0x40c589['query'][_0x8058('0x53')]+'%'};return _0x154e57;})});}_0x5339ed=_[_0x8058('0x55')]({},_0x5339ed,_0x40c589[_0x8058('0x56')]);return db[_0x8058('0x72')][_0x8058('0x35')]({'where':_0x5339ed['where']})[_0x8058('0x23')](function(_0x4ccf45){_0x161791['count']=_0x4ccf45;if(_0x40c589[_0x8058('0x48')]['includeAll']){_0x5339ed[_0x8058('0x5c')]=[{'all':!![]}];}return db[_0x8058('0x72')][_0x8058('0x57')](_0x5339ed);})[_0x8058('0x23')](function(_0x1d237f){_0x161791['rows']=_0x1d237f;return _0x161791;});}})['then'](respondWithFilteredResult(_0xfba82b,_0x5339ed))[_0x8058('0x2d')](handleError(_0xfba82b,null));};exports[_0x8058('0x74')]=function(_0x4385c1,_0x13941c,_0xd193a3){return db[_0x8058('0x42')]['find']({'where':{'id':_0x4385c1[_0x8058('0x5a')]['id']}})[_0x8058('0x23')](handleEntityNotFound(_0x13941c,null))['then'](function(_0x23bbdf){if(_0x23bbdf){return _0x23bbdf[_0x8058('0x74')](_0x4385c1[_0x8058('0x48')][_0x8058('0x75')]);}})[_0x8058('0x23')](respondWithStatusCode(_0x13941c,null))['catch'](handleError(_0x13941c,null));};exports[_0x8058('0x76')]=function(_0x32a1a2,_0x19b244,_0x17321b){var _0x39f36f={'body':_0x32a1a2['body'],'channel':'openchannel'};var _0x4bf318=[];var _0x577c32=[];var _0x5c8e97={};var _0x33d68c=![];return db['CmContact'][_0x8058('0x67')]()[_0x8058('0x23')](function(_0x8064af){if(!_0x8064af){throw new db[(_0x8058('0x77'))]['ValidationError']('no\x20available\x20attributes');}_0x4bf318=_[_0x8058('0x78')](_['keys'](_0x8064af),[_0x8058('0x79'),_0x8058('0x7a')]);_0x577c32=_[_0x8058('0x78')](_[_0x8058('0x49')](_0x8064af),['createdAt',_0x8058('0x7a'),_0x8058('0x7b'),_0x8058('0x7c')]);if(_0x32a1a2[_0x8058('0x66')]['id']){delete _0x32a1a2['body']['id'];}if(_[_0x8058('0x7d')](_0x32a1a2[_0x8058('0x66')]['from'])){throw new db[(_0x8058('0x77'))][(_0x8058('0x7e'))](_0x8058('0x7f'));}if(_[_0x8058('0x7d')](_0x32a1a2['body']['body'])||_0x32a1a2[_0x8058('0x66')][_0x8058('0x66')]===''){throw new db['Sequelize'][(_0x8058('0x7e'))](_0x8058('0x80'));}if(_['isNil'](_0x32a1a2['body'][_0x8058('0x81')])){throw new db['Sequelize'][(_0x8058('0x7e'))](_0x8058('0x82')+_0x577c32);}if(!_['includes'](_0x577c32,_0x32a1a2[_0x8058('0x66')][_0x8058('0x81')])){throw new db['Sequelize'][(_0x8058('0x7e'))](_0x8058('0x83')+_0x577c32);}_0x5c8e97[_0x32a1a2[_0x8058('0x66')][_0x8058('0x81')]]=_0x32a1a2[_0x8058('0x66')][_0x8058('0x84')];})[_0x8058('0x23')](function(){return db[_0x8058('0x42')][_0x8058('0x5d')]({'where':{'id':_0x32a1a2[_0x8058('0x5a')]['id']},'include':[{'model':db[_0x8058('0x85')],'as':_0x8058('0x86'),'include':[{'model':db['CmContact'],'as':_0x8058('0x87'),'where':_0x5c8e97,'limit':0x1,'order':[[_0x8058('0x7a'),_0x8058('0x88')]]}]},{'model':db[_0x8058('0x89')],'as':_0x8058('0x8a')}]});})[_0x8058('0x23')](handleEntityNotFound(_0x19b244,null))[_0x8058('0x23')](function(_0x183005){if(_0x183005&&_0x183005['List']){_0x39f36f[_0x8058('0x8b')]=_0x183005;_0x39f36f[_0x8058('0x8c')]=_0x183005[_0x8058('0x8a')];_0x39f36f['list']=_0x183005['List'];_0x39f36f[_0x8058('0x8c')]=_['orderBy'](_0x39f36f[_0x8058('0x8c')],[_0x8058('0x8d')],[_0x8058('0x8e')]);if(_0x39f36f['account'][_0x8058('0x8a')]){delete _0x39f36f['account'][_0x8058('0x8a')];}if(_0x39f36f['account'][_0x8058('0x86')]&&_0x39f36f[_0x8058('0x8b')][_0x8058('0x86')][_0x8058('0x87')][_0x8058('0x4d')]){return _0x39f36f[_0x8058('0x8b')][_0x8058('0x86')][_0x8058('0x87')][0x0];}var _0x33afa0=_['defaults'](_0x32a1a2[_0x8058('0x66')],{'firstName':_0x32a1a2[_0x8058('0x66')]['from'],'ListId':_0x183005[_0x8058('0x7c')]});_0x33afa0[_0x32a1a2[_0x8058('0x66')]['mapKey']]=_0x32a1a2[_0x8058('0x66')]['from'];return db[_0x8058('0x8f')][_0x8058('0x5e')](_0x33afa0,{'fields':_0x4bf318,'raw':!![]});}})[_0x8058('0x23')](handleEntityNotFound(_0x19b244,null))[_0x8058('0x23')](function(_0x284d49){_0x39f36f[_0x8058('0x90')]=_0x284d49;if(_0x284d49){var _0x49d63f={'ContactId':_0x284d49['id'],'OpenchannelAccountId':_0x32a1a2['params']['id'],'from':(_0x284d49[_0x8058('0x91')]||'')+'\x20'+(_0x284d49['lastName']||'')};var _0x4b8745={'OpenchannelAccountId':_0x32a1a2[_0x8058('0x5a')]['id'],'closed':![]};if(_0x32a1a2[_0x8058('0x66')][_0x8058('0x92')]){_0x4b8745[_0x8058('0x92')]=_0x32a1a2['body'][_0x8058('0x92')];return db[_0x8058('0x93')][_0x8058('0x5d')]({'where':_0x4b8745})['then'](function(_0x315ddb){if(_0x315ddb){return[_0x315ddb,![]];}_0x49d63f['threadId']=_0x32a1a2['body']['threadId'];_0x49d63f['externalUrl']=_0x32a1a2[_0x8058('0x66')][_0x8058('0x94')];return db['OpenchannelInteraction'][_0x8058('0x5e')](_0x49d63f)[_0x8058('0x23')](function(_0x177489){return[_0x177489,!![]];});});}else{_0x4b8745[_0x8058('0x92')]=null;}_0x4b8745['ContactId']=_0x284d49['id'];return db['OpenchannelInteraction']['find']({'where':_0x4b8745})[_0x8058('0x23')](function(_0x5d6e14){if(_0x5d6e14){return[_0x5d6e14,![]];}return db['OpenchannelInteraction']['create'](_0x49d63f)['then'](function(_0x582162){return[_0x582162,!![]];});});}})[_0x8058('0x95')](function(_0x2da1b6,_0x4b0d27){if(_0x2da1b6){_0x33d68c=_0x4b0d27;if(!_0x4b0d27){var _0x40fd91={'from':(_0x39f36f['contact']['firstName']||'')+'\x20'+(_0x39f36f[_0x8058('0x90')]['lastName']||'')};if(_0x32a1a2[_0x8058('0x66')]['threadId']&&_0x32a1a2[_0x8058('0x66')][_0x8058('0x96')]&&_0x32a1a2[_0x8058('0x66')]['threadId']!=_0x32a1a2[_0x8058('0x66')][_0x8058('0x96')]){_0x40fd91[_0x8058('0x92')]=_0x32a1a2[_0x8058('0x66')][_0x8058('0x96')];}return _0x2da1b6[_0x8058('0x39')](_0x40fd91);}else{return _0x2da1b6;}}})[_0x8058('0x23')](function(_0x5e24ed){_0x39f36f[_0x8058('0x97')]=_0x5e24ed[_0x8058('0x5f')]({'plain':!![]});_0x39f36f[_0x8058('0x97')][_0x8058('0x98')]=_0x33d68c;if(_0x39f36f[_0x8058('0x97')][_0x8058('0x98')]){if(_0x39f36f[_0x8058('0x8b')][_0x8058('0x99')]){_0x39f36f[_0x8058('0x8c')][_0x8058('0x9a')]({'id':0x0,'priority':_0x39f36f[_0x8058('0x8c')][_0x8058('0x4d')]+0x1,'app':_0x8058('0x9b'),'appdata':_0x8058('0x9c'),'interval':_0x8058('0x9d')});}}return db[_0x8058('0x9e')][_0x8058('0x5e')]({'body':_0x32a1a2[_0x8058('0x66')][_0x8058('0x66')],'OpenchannelAccountId':_0x32a1a2[_0x8058('0x5a')]['id'],'OpenchannelInteractionId':_0x5e24ed['id'],'direction':'in','ContactId':_0x39f36f[_0x8058('0x90')]['id'],'AttachmentId':_0x32a1a2[_0x8058('0x66')][_0x8058('0x9f')]});})[_0x8058('0x23')](function(_0x2720e0){_0x39f36f[_0x8058('0x2a')]=_0x2720e0;if(_0x39f36f[_0x8058('0x97')]['UserId']){return db[_0x8058('0xa0')][_0x8058('0x5d')]({'attributes':['id',_0x8058('0x3d')],'where':{'id':_0x39f36f[_0x8058('0x97')][_0x8058('0xa1')]}})['then'](function(_0x12cc96){if(_0x12cc96){_0x39f36f['applications'][_0x8058('0xa2')]({'id':0x0,'priority':0x0,'app':_0x8058('0xa3'),'appdata':_0x12cc96[_0x8058('0x3d')]+','+(_0x39f36f[_0x8058('0x8b')][_0x8058('0xa4')]||0xa),'interval':_0x8058('0x9d')});_0x39f36f[_0x8058('0xa5')]=![];}return respondWithRpcPromise(_0x8058('0xa6'),_0x8058('0xa7'),_0x39f36f);});}return respondWithRpcPromise(_0x8058('0xa6'),_0x8058('0xa7'),_0x39f36f);})[_0x8058('0x23')](function(_0x508c03){respondWithRpcPromise(_0x8058('0xa8'),_0x8058('0xa8'),{'event':_0x8058('0x76'),'message':_0x508c03},client9002);return _0x508c03;})[_0x8058('0x23')](respondWithResult(_0x19b244,null))[_0x8058('0x2d')](handleError(_0x19b244,null));};exports[_0x8058('0xa9')]=function(_0x15958d,_0x253a6a){var _0x456b50=_0x15958d['params']['id'];var _0x329ac8=_0x15958d[_0x8058('0x66')];var _0x42c3fa=0xc8;var _0xb7b257=null;return db[_0x8058('0xaa')][_0x8058('0xab')]({'isolationLevel':db[_0x8058('0xaa')][_0x8058('0xac')]['ISOLATION_LEVELS'][_0x8058('0xad')]},function(_0x5bd8ed){return db['OpenchannelAccount'][_0x8058('0x6b')]({'where':{'id':_0x456b50},'transaction':_0x5bd8ed})[_0x8058('0x23')](function(_0x55ba54){if(_0x55ba54){return db[_0x8058('0x89')][_0x8058('0x3a')]({'where':{'OpenchannelAccountId':_0x456b50},'transaction':_0x5bd8ed})[_0x8058('0x23')](function(){var _0x233fdc=_['map'](_0x329ac8,function(_0x47b8e4){_0x47b8e4[_0x8058('0x69')]=_0x456b50;return _0x47b8e4;});return db[_0x8058('0x89')][_0x8058('0xae')](_0x233fdc,{'transaction':_0x5bd8ed});});}else{_0x42c3fa=0x194;_0xb7b257=[];}});})['then'](function(){if(_0x42c3fa!==0x194){return db[_0x8058('0x89')]['findAndCountAll']({'where':{'OpenchannelAccountId':_0x456b50},'order':'priority'})['then'](function(_0x1777b9){_0xb7b257=_0x1777b9;});}})[_0x8058('0x2d')](function(_0x54b5e0){_0x42c3fa=0x1f4;logger[_0x8058('0x28')](_0x54b5e0[_0x8058('0xaf')]);if(_0x54b5e0[_0x8058('0x3d')]){delete _0x54b5e0[_0x8058('0x3d')];}_0xb7b257=_0x54b5e0;})[_0x8058('0xb0')](function(){if(_0xb7b257===null){_0x253a6a['sendStatus'](_0x42c3fa);}else{if(_0x42c3fa===0x1f4){_0x253a6a[_0x8058('0x2f')](_0x42c3fa)[_0x8058('0x3e')](_0xb7b257);}else{_0x253a6a[_0x8058('0x2f')](_0x42c3fa)[_0x8058('0x31')](_0xb7b257);}}});};exports[_0x8058('0xb1')]=function(_0x11d40b,_0x5507cf,_0x112982){var _0x3b0da4={};var _0x270064={};var _0x25ff8c;var _0x5b066f;return db['OpenchannelAccount']['findOne']({'where':{'id':_0x11d40b[_0x8058('0x5a')]['id']}})['then'](handleEntityNotFound(_0x5507cf,null))['then'](function(_0x146bcd){if(_0x146bcd){_0x25ff8c=_0x146bcd;_0x270064[_0x8058('0x47')]=_[_0x8058('0x49')](db[_0x8058('0x89')][_0x8058('0x43')]);_0x270064['query']=_[_0x8058('0x49')](_0x11d40b[_0x8058('0x48')]);_0x270064['filters']=_[_0x8058('0x4a')](_0x270064[_0x8058('0x47')],_0x270064[_0x8058('0x48')]);_0x3b0da4[_0x8058('0x4b')]=_[_0x8058('0x4a')](_0x270064[_0x8058('0x47')],qs['fields'](_0x11d40b['query']['fields']));_0x3b0da4[_0x8058('0x4b')]=_0x3b0da4['attributes']['length']?_0x3b0da4[_0x8058('0x4b')]:_0x270064[_0x8058('0x47')];_0x3b0da4[_0x8058('0x6d')]=qs[_0x8058('0x4f')](_0x11d40b[_0x8058('0x48')][_0x8058('0x4f')]);_0x3b0da4[_0x8058('0x50')]=qs[_0x8058('0x51')](_[_0x8058('0x52')](_0x11d40b[_0x8058('0x48')],_0x270064[_0x8058('0x51')]));if(_0x11d40b[_0x8058('0x48')]['filter']){_0x3b0da4[_0x8058('0x50')]=_[_0x8058('0x55')](_0x3b0da4[_0x8058('0x50')],{'$or':_[_0x8058('0x73')](_0x3b0da4[_0x8058('0x4b')],function(_0x478d36){var _0x5a3943={};_0x5a3943[_0x478d36]={'$like':'%'+_0x11d40b[_0x8058('0x48')][_0x8058('0x53')]+'%'};return _0x5a3943;})});}_0x3b0da4=_[_0x8058('0x55')]({},_0x3b0da4,_0x11d40b['options']);return _0x25ff8c[_0x8058('0xb1')](_0x3b0da4);}})[_0x8058('0x23')](function(_0x47fe09){if(_0x47fe09){_0x5b066f=_0x47fe09[_0x8058('0x4d')];if(!_0x11d40b[_0x8058('0x48')]['hasOwnProperty'](_0x8058('0x6c'))){_0x3b0da4[_0x8058('0x34')]=qs['limit'](_0x11d40b['query'][_0x8058('0x34')]);_0x3b0da4[_0x8058('0x32')]=qs[_0x8058('0x32')](_0x11d40b['query'][_0x8058('0x32')]);}return _0x25ff8c[_0x8058('0xb1')](_0x3b0da4);}})['then'](function(_0x5f174e){if(_0x5f174e){return _0x5f174e?{'count':_0x5b066f,'rows':_0x5f174e}:null;}})[_0x8058('0x23')](respondWithResult(_0x5507cf,null))[_0x8058('0x2d')](handleError(_0x5507cf,null));};exports[_0x8058('0xb2')]=function(_0x1eb97d,_0x36b3be,_0x4925c8){var _0x5ce169={'raw':![],'where':{}};var _0x37b28b={};var _0x555e01={'count':0x0,'rows':[]};return db[_0x8058('0x42')][_0x8058('0x6b')]({'where':{'id':_0x1eb97d[_0x8058('0x5a')]['id']}})[_0x8058('0x23')](handleEntityNotFound(_0x36b3be,null))['then'](function(_0x2a93bc){if(_0x2a93bc){_0x37b28b[_0x8058('0x47')]=_[_0x8058('0x49')](db[_0x8058('0x93')][_0x8058('0x43')]);_0x37b28b[_0x8058('0x48')]=_[_0x8058('0x49')](_0x1eb97d[_0x8058('0x48')]);_0x37b28b[_0x8058('0x51')]=_[_0x8058('0x4a')](_0x37b28b['model'],_0x37b28b[_0x8058('0x48')]);_0x5ce169[_0x8058('0x4b')]=_[_0x8058('0x4a')](_0x37b28b['model'],qs[_0x8058('0x4c')](_0x1eb97d[_0x8058('0x48')][_0x8058('0x4c')]));_0x5ce169[_0x8058('0x4b')]=_0x5ce169[_0x8058('0x4b')][_0x8058('0x4d')]?_0x5ce169[_0x8058('0x4b')]:_0x37b28b['model'];if(!_0x1eb97d[_0x8058('0x48')]['hasOwnProperty'](_0x8058('0x6c'))){_0x5ce169[_0x8058('0x34')]=qs[_0x8058('0x34')](_0x1eb97d[_0x8058('0x48')][_0x8058('0x34')]);_0x5ce169['offset']=qs['offset'](_0x1eb97d[_0x8058('0x48')][_0x8058('0x32')]);}_0x5ce169[_0x8058('0x6d')]=qs[_0x8058('0x4f')](_0x1eb97d[_0x8058('0x48')]['sort']);_0x5ce169['where']=qs[_0x8058('0x51')](_[_0x8058('0x52')](_0x1eb97d[_0x8058('0x48')],_0x37b28b[_0x8058('0x51')]));_0x5ce169[_0x8058('0x50')][_0x8058('0x69')]=_0x2a93bc['id'];if(_0x1eb97d['query'][_0x8058('0x53')]){_0x5ce169[_0x8058('0x50')]=_[_0x8058('0x55')](_0x5ce169['where'],{'$or':_['map'](_0x5ce169[_0x8058('0x4b')],function(_0x4c2bfa){var _0x41f33d={};_0x41f33d[_0x4c2bfa]={'$like':'%'+_0x1eb97d[_0x8058('0x48')][_0x8058('0x53')]+'%'};return _0x41f33d;})});}_0x5ce169=_[_0x8058('0x55')]({},_0x5ce169,_0x1eb97d[_0x8058('0x56')]);return db['OpenchannelInteraction'][_0x8058('0x35')]({'where':_0x5ce169['where']})[_0x8058('0x23')](function(_0x52e8bb){_0x555e01[_0x8058('0x35')]=_0x52e8bb;if(_0x1eb97d[_0x8058('0x48')][_0x8058('0x5b')]){_0x5ce169[_0x8058('0x5c')]=[{'model':db[_0x8058('0x8f')],'as':_0x8058('0xb3'),'required':![]},{'model':db[_0x8058('0xa0')],'as':_0x8058('0xb4'),'attributes':[_0x8058('0x3d'),'fullname',_0x8058('0xb5')],'required':![]},{'model':db['Tag'],'as':_0x8058('0xb6'),'attributes':['id',_0x8058('0x3d'),'color'],'where':_0x1eb97d[_0x8058('0x48')][_0x8058('0xb7')]?{'id':_0x1eb97d['query'][_0x8058('0xb7')]}:undefined,'required':_0x1eb97d['query'][_0x8058('0xb7')]?!![]:![]}];}return db[_0x8058('0x93')][_0x8058('0x57')](_0x5ce169);})[_0x8058('0x23')](function(_0x4c28ca){_0x555e01[_0x8058('0x58')]=_0x4c28ca;return _0x555e01;});}})[_0x8058('0x23')](respondWithFilteredResult(_0x36b3be,_0x5ce169))['catch'](handleError(_0x36b3be,null));};exports[_0x8058('0xb8')]=function(_0x3060f3,_0x151609,_0x185142){return db[_0x8058('0x42')][_0x8058('0x5d')]({'where':{'id':_0x3060f3[_0x8058('0x5a')]['id']}})['then'](handleEntityNotFound(_0x151609,null))[_0x8058('0x23')](function(_0x296035){if(_0x296035){return _0x296035[_0x8058('0xb8')](_0x3060f3[_0x8058('0x66')]['ids'],_[_0x8058('0xb9')](_0x3060f3[_0x8058('0x66')],['ids','id'])||{})[_0x8058('0x95')](function(_0x22598a){for(var _0x1bb390=0x0;_0x1bb390<_0x3060f3[_0x8058('0x66')][_0x8058('0x75')]['length'];_0x1bb390+=0x1){socket[_0x8058('0xba')](_0x8058('0xbb'),{'UserId':Number(_0x3060f3[_0x8058('0x66')]['ids'][_0x1bb390]),'OpenchannelAccountId':Number(_0x3060f3['params']['id'])});}return _0x22598a;});}})['then'](respondWithResult(_0x151609,null))[_0x8058('0x2d')](handleError(_0x151609,null));};exports[_0x8058('0xbc')]=function(_0x12f279,_0x32512a,_0x2135dd){return db[_0x8058('0x42')][_0x8058('0x5d')]({'where':{'id':_0x12f279[_0x8058('0x5a')]['id']}})[_0x8058('0x23')](handleEntityNotFound(_0x32512a,null))[_0x8058('0x23')](function(_0x511a82){if(_0x511a82){return _0x511a82['removeAgents'](_0x12f279['query'][_0x8058('0x75')])[_0x8058('0x23')](function(){if(_[_0x8058('0xbd')](_0x12f279[_0x8058('0x48')]['ids'])){for(var _0x426e9a=0x0;_0x426e9a<_0x12f279[_0x8058('0x48')][_0x8058('0x75')]['length'];_0x426e9a+=0x1){socket[_0x8058('0xba')](_0x8058('0xbe'),{'UserId':Number(_0x12f279[_0x8058('0x48')][_0x8058('0x75')][_0x426e9a]),'OpenchannelAccountId':Number(_0x12f279[_0x8058('0x5a')]['id'])});}}else{socket[_0x8058('0xba')](_0x8058('0xbe'),{'UserId':Number(_0x12f279[_0x8058('0x48')][_0x8058('0x75')]),'OpenchannelAccountId':Number(_0x12f279[_0x8058('0x5a')]['id'])});}});}})['then'](respondWithStatusCode(_0x32512a,null))[_0x8058('0x2d')](handleError(_0x32512a,null));};exports[_0x8058('0xbf')]=function(_0x3ff9cd,_0x2d222f,_0x430381){var _0x5c40a0={};var _0x2e8dfa={};var _0x443c5c;var _0x832d59;return db[_0x8058('0x42')][_0x8058('0x6b')]({'where':{'id':_0x3ff9cd[_0x8058('0x5a')]['id']}})[_0x8058('0x23')](handleEntityNotFound(_0x2d222f,null))[_0x8058('0x23')](function(_0x883f8f){if(_0x883f8f){_0x443c5c=_0x883f8f;_0x2e8dfa[_0x8058('0x47')]=_[_0x8058('0x49')](db[_0x8058('0xa0')]['rawAttributes']);_0x2e8dfa[_0x8058('0x48')]=_['keys'](_0x3ff9cd[_0x8058('0x48')]);_0x2e8dfa[_0x8058('0x51')]=_['intersection'](_0x2e8dfa[_0x8058('0x47')],_0x2e8dfa[_0x8058('0x48')]);_0x5c40a0['attributes']=_[_0x8058('0x4a')](_0x2e8dfa[_0x8058('0x47')],qs[_0x8058('0x4c')](_0x3ff9cd[_0x8058('0x48')][_0x8058('0x4c')]));_0x5c40a0[_0x8058('0x4b')]=_0x5c40a0[_0x8058('0x4b')]['length']?_0x5c40a0[_0x8058('0x4b')]:_0x2e8dfa[_0x8058('0x47')];_0x5c40a0[_0x8058('0x6d')]=qs['sort'](_0x3ff9cd[_0x8058('0x48')][_0x8058('0x4f')]);_0x5c40a0[_0x8058('0x50')]=qs[_0x8058('0x51')](_[_0x8058('0x52')](_0x3ff9cd[_0x8058('0x48')],_0x2e8dfa['filters']));if(_0x3ff9cd[_0x8058('0x48')]['filter']){_0x5c40a0['where']=_[_0x8058('0x55')](_0x5c40a0[_0x8058('0x50')],{'$or':_[_0x8058('0x73')](_0x5c40a0['attributes'],function(_0x50925a){var _0x407846={};_0x407846[_0x50925a]={'$like':'%'+_0x3ff9cd[_0x8058('0x48')]['filter']+'%'};return _0x407846;})});}_0x5c40a0=_[_0x8058('0x55')]({},_0x5c40a0,_0x3ff9cd[_0x8058('0x56')]);return _0x443c5c[_0x8058('0xbf')](_0x5c40a0);}})[_0x8058('0x23')](function(_0x5992b6){if(_0x5992b6){_0x832d59=_0x5992b6[_0x8058('0x4d')];if(!_0x3ff9cd['query']['hasOwnProperty'](_0x8058('0x6c'))){_0x5c40a0['limit']=qs['limit'](_0x3ff9cd[_0x8058('0x48')]['limit']);_0x5c40a0[_0x8058('0x32')]=qs[_0x8058('0x32')](_0x3ff9cd['query']['offset']);}return _0x443c5c[_0x8058('0xbf')](_0x5c40a0);}})[_0x8058('0x23')](function(_0x5538d9){if(_0x5538d9){return _0x5538d9?{'count':_0x832d59,'rows':_0x5538d9}:null;}})['then'](respondWithResult(_0x2d222f,null))[_0x8058('0x2d')](handleError(_0x2d222f,null));};exports[_0x8058('0x3e')]=function(_0x4d29b2,_0x506666,_0x1c76ed){var _0x15f326,_0x566386,_0x140165;if(_[_0x8058('0x7d')](_0x4d29b2[_0x8058('0x66')][_0x8058('0x66')])||_0x4d29b2[_0x8058('0x66')]['body']===''){throw new db[(_0x8058('0x77'))][(_0x8058('0x7e'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x8058('0x7d')](_0x4d29b2[_0x8058('0x66')]['to'])){}_0x15f326=_0x4d29b2[_0x8058('0x66')]['to'];return db[_0x8058('0x42')]['findOne']({'where':{'id':_0x4d29b2['params']['id']}})['then'](handleEntityNotFound(_0x506666,null))[_0x8058('0x23')](function(_0x59a24b){if(_0x59a24b){return db[_0x8058('0x42')][_0x8058('0x5d')]({'where':{'id':_0x59a24b['id']},'include':[{'model':db['CmList'],'as':_0x8058('0x86'),'include':[{'model':db['CmContact'],'as':_0x8058('0x87'),'where':{[_0x59a24b[_0x8058('0x81')]]:_0x15f326},'limit':0x1,'order':[[_0x8058('0x7a'),'DESC']]}]}]})['then'](handleEntityNotFound(_0x506666,null))[_0x8058('0x23')](function(_0x634715){if(_0x634715&&_0x634715['List']){_0x566386=_0x634715[_0x8058('0x5f')]({'plain':!![]});if(_0x566386[_0x8058('0x86')]&&_0x566386[_0x8058('0x86')]['Contacts'][_0x8058('0x4d')]){return _0x566386[_0x8058('0x86')][_0x8058('0x87')][0x0];}return db['CmContact'][_0x8058('0x5e')](_[_0x8058('0x1b')](_0x4d29b2[_0x8058('0x66')],{'firstName':_0x15f326,[_0x634715[_0x8058('0x81')]]:_0x15f326,'phone':_0x15f326,'ListId':_0x566386[_0x8058('0x7c')]}));}})['then'](handleEntityNotFound(_0x506666,null))['then'](function(_0x555415){if(_0x555415){_0x140165=_0x555415;return db[_0x8058('0x93')][_0x8058('0x5d')]({'where':{'ContactId':_0x140165['id'],'closed':![],'OpenchannelAccountId':_0x566386['id']}})[_0x8058('0x23')](function(_0x2b676e){if(_0x2b676e){return[_0x2b676e,![]];}return db['OpenchannelInteraction']['create']({'UserId':_0x4d29b2['user']['id'],'ContactId':_0x140165['id'],'OpenchannelAccountId':_0x566386['id'],'lastMsgDirection':_0x8058('0xc0'),'firstMsgDirection':'out','Messages':[_['merge'](_0x4d29b2[_0x8058('0x66')],{'read':![],'body':_0x4d29b2['body']['body'],'OpenchannelAccountId':_0x566386['id'],'UserId':_0x4d29b2[_0x8058('0x61')]['id'],'ContactId':_0x140165['id']})]},{'include':[{'model':db[_0x8058('0x9e')],'as':'Messages'}]})[_0x8058('0x23')](function(_0x48ebe4){return[_0x48ebe4,!![]];});});}})[_0x8058('0x95')](function(_0x83988,_0x1794ec){if(_0x1794ec){return _0x83988;}return db[_0x8058('0x9e')][_0x8058('0x5e')](_[_0x8058('0x55')](_0x4d29b2[_0x8058('0x66')],{'read':![],'body':_0x4d29b2[_0x8058('0x66')][_0x8058('0x66')],'OpenchannelAccountId':_0x566386['id'],'OpenchannelInteractionId':_0x83988['id'],'UserId':_0x4d29b2['user']['id'],'ContactId':_0x140165['id']}))[_0x8058('0x23')](function(_0x1bcd78){_0x83988['dataValues'][_0x8058('0xc1')]=[];_0x83988[_0x8058('0xc2')][_0x8058('0xc1')][_0x8058('0x9a')](_0x1bcd78[_0x8058('0xc2')]);return _0x83988;});});}})[_0x8058('0x23')](respondWithResult(_0x506666,null))[_0x8058('0x2d')](handleError(_0x506666,null));};
\ No newline at end of file
index 116261c..41b0ae3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c81=['hook','exports','events','../../mysqldb','setMaxListeners','save','emit','hasOwnProperty'];(function(_0x4a09a8,_0x4ed12d){var _0x7d30a9=function(_0x459184){while(--_0x459184){_0x4a09a8['push'](_0x4a09a8['shift']());}};_0x7d30a9(++_0x4ed12d);}(_0x3c81,0x102));var _0x13c8=function(_0x299209,_0x250461){_0x299209=_0x299209-0x0;var _0x4590f8=_0x3c81[_0x299209];return _0x4590f8;};'use strict';var EventEmitter=require(_0x13c8('0x0'));var OpenchannelAccount=require(_0x13c8('0x1'))['db']['OpenchannelAccount'];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x13c8('0x2')](0x0);var events={'afterCreate':_0x13c8('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x5c3ba4){return function(_0x548599,_0x101d4f,_0x3ec886){OpenchannelAccountEvents[_0x13c8('0x4')](_0x5c3ba4+':'+_0x548599['id'],_0x548599);OpenchannelAccountEvents[_0x13c8('0x4')](_0x5c3ba4,_0x548599);_0x3ec886(null);};}for(var e in events){if(events[_0x13c8('0x5')](e)){var event=events[e];OpenchannelAccount[_0x13c8('0x6')](e,emitEvent(event));}}module[_0x13c8('0x7')]=OpenchannelAccountEvents;
\ No newline at end of file
+var _0xbdb7=['save','update','remove','hasOwnProperty','hook','events','../../mysqldb','OpenchannelAccount','setMaxListeners'];(function(_0x1bea44,_0x11b581){var _0x109664=function(_0x200ce1){while(--_0x200ce1){_0x1bea44['push'](_0x1bea44['shift']());}};_0x109664(++_0x11b581);}(_0xbdb7,0x12e));var _0x7bdb=function(_0x17c283,_0x587fcc){_0x17c283=_0x17c283-0x0;var _0x4e0800=_0xbdb7[_0x17c283];return _0x4e0800;};'use strict';var EventEmitter=require(_0x7bdb('0x0'));var OpenchannelAccount=require(_0x7bdb('0x1'))['db'][_0x7bdb('0x2')];var OpenchannelAccountEvents=new EventEmitter();OpenchannelAccountEvents[_0x7bdb('0x3')](0x0);var events={'afterCreate':_0x7bdb('0x4'),'afterUpdate':_0x7bdb('0x5'),'afterDestroy':_0x7bdb('0x6')};function emitEvent(_0x2c7e07){return function(_0x46c068,_0x47aec5,_0x28542c){OpenchannelAccountEvents['emit'](_0x2c7e07+':'+_0x46c068['id'],_0x46c068);OpenchannelAccountEvents['emit'](_0x2c7e07,_0x46c068);_0x28542c(null);};}for(var e in events){if(events[_0x7bdb('0x7')](e)){var event=events[e];OpenchannelAccount[_0x7bdb('0x8')](e,emitEvent(event));}}module['exports']=OpenchannelAccountEvents;
\ No newline at end of file
index c5a212b..f4e6462 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(_0x179e61,_0x155249){var _0x154e03=function(_0x29fd45){while(--_0x29fd45){_0x179e61['push'](_0x179e61['shift']());}};_0x154e03(++_0x155249);}(_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 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(_0x353c39,_0x484034){var _0x22e254=function(_0x4dc551){while(--_0x4dc551){_0x353c39['push'](_0x353c39['shift']());}};_0x22e254(++_0x484034);}(_0xa9e0,0x123));var _0x0a9e=function(_0x9aada2,_0xd2d349){_0x9aada2=_0x9aada2-0x0;var _0x196dff=_0xa9e0[_0x9aada2];return _0x196dff;};'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 d9a457a..0549aa8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x049e=['localhost','./openchannelAccount.socket','register','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','debug','OpenchannelAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults'];(function(_0x5b281f,_0x1e41d1){var _0x37fa66=function(_0x5620ee){while(--_0x5620ee){_0x5b281f['push'](_0x5b281f['shift']());}};_0x37fa66(++_0x1e41d1);}(_0x049e,0x16a));var _0xe049=function(_0x954b3a,_0x10a7c1){_0x954b3a=_0x954b3a-0x0;var _0x3a313e=_0x049e[_0x954b3a];return _0x3a313e;};'use strict';var _=require(_0xe049('0x0'));var util=require(_0xe049('0x1'));var moment=require('moment');var BPromise=require(_0xe049('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xe049('0x3'));var db=require(_0xe049('0x4'))['db'];var utils=require(_0xe049('0x5'));var logger=require(_0xe049('0x6'))(_0xe049('0x7'));var config=require('../../config/environment');var jayson=require(_0xe049('0x8'));var client=jayson[_0xe049('0x9')][_0xe049('0xa')]({'port':0x232a});config[_0xe049('0xb')]=_[_0xe049('0xc')](config[_0xe049('0xb')],{'host':_0xe049('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xe049('0xb')]));require(_0xe049('0xe'))[_0xe049('0xf')](socket);function respondWithRpcPromise(_0x492115,_0x5cd404,_0x45a5fa){return new BPromise(function(_0x2ac671,_0x32a065){return client['request'](_0x492115,_0x45a5fa)['then'](function(_0x574549){logger[_0xe049('0x10')](_0xe049('0x11'),_0x5cd404,_0xe049('0x12'));logger[_0xe049('0x13')](_0xe049('0x14'),_0x5cd404,_0xe049('0x12'),JSON[_0xe049('0x15')](_0x574549));if(_0x574549[_0xe049('0x16')]){if(_0x574549['error'][_0xe049('0x17')]===0x1f4){logger[_0xe049('0x16')](_0xe049('0x11'),_0x5cd404,_0x574549[_0xe049('0x16')]['message']);return _0x32a065(_0x574549[_0xe049('0x16')][_0xe049('0x18')]);}logger['error'](_0xe049('0x11'),_0x5cd404,_0x574549[_0xe049('0x16')]['message']);return _0x2ac671(_0x574549[_0xe049('0x16')][_0xe049('0x18')]);}else{logger['info'](_0xe049('0x11'),_0x5cd404,'request\x20sent');_0x2ac671(_0x574549['result'][_0xe049('0x18')]);}})['catch'](function(_0x55da56){logger[_0xe049('0x16')](_0xe049('0x11'),_0x5cd404,_0x55da56);_0x32a065(_0x55da56);});});}
\ No newline at end of file
+var _0xa478=['moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','socket.io-emitter','./openchannelAccount.socket','register','request','info','OpenchannelAccount,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','lodash','util'];(function(_0x410b81,_0x871c4b){var _0x17e81e=function(_0x1106ac){while(--_0x1106ac){_0x410b81['push'](_0x410b81['shift']());}};_0x17e81e(++_0x871c4b);}(_0xa478,0x136));var _0x8a47=function(_0x333714,_0x3370ac){_0x333714=_0x333714-0x0;var _0x4c211e=_0xa478[_0x333714];return _0x4c211e;};'use strict';var _=require(_0x8a47('0x0'));var util=require(_0x8a47('0x1'));var moment=require(_0x8a47('0x2'));var BPromise=require(_0x8a47('0x3'));var rs=require(_0x8a47('0x4'));var fs=require('fs');var Redis=require(_0x8a47('0x5'));var db=require(_0x8a47('0x6'))['db'];var utils=require(_0x8a47('0x7'));var logger=require(_0x8a47('0x8'))(_0x8a47('0x9'));var config=require(_0x8a47('0xa'));var jayson=require(_0x8a47('0xb'));var client=jayson['client'][_0x8a47('0xc')]({'port':0x232a});config[_0x8a47('0xd')]=_[_0x8a47('0xe')](config[_0x8a47('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x8a47('0xf'))(new Redis(config['redis']));require(_0x8a47('0x10'))[_0x8a47('0x11')](socket);function respondWithRpcPromise(_0x3a6cc4,_0x574c96,_0xe65646){return new BPromise(function(_0x230a11,_0x493d7b){return client[_0x8a47('0x12')](_0x3a6cc4,_0xe65646)['then'](function(_0x39da50){logger[_0x8a47('0x13')](_0x8a47('0x14'),_0x574c96,'request\x20sent');logger['debug']('OpenchannelAccount,\x20%s,\x20%s,\x20%s',_0x574c96,_0x8a47('0x15'),JSON[_0x8a47('0x16')](_0x39da50));if(_0x39da50['error']){if(_0x39da50[_0x8a47('0x17')][_0x8a47('0x18')]===0x1f4){logger[_0x8a47('0x17')](_0x8a47('0x14'),_0x574c96,_0x39da50[_0x8a47('0x17')][_0x8a47('0x19')]);return _0x493d7b(_0x39da50[_0x8a47('0x17')][_0x8a47('0x19')]);}logger[_0x8a47('0x17')](_0x8a47('0x14'),_0x574c96,_0x39da50[_0x8a47('0x17')][_0x8a47('0x19')]);return _0x230a11(_0x39da50[_0x8a47('0x17')]['message']);}else{logger[_0x8a47('0x13')](_0x8a47('0x14'),_0x574c96,_0x8a47('0x15'));_0x230a11(_0x39da50['result'][_0x8a47('0x19')]);}})['catch'](function(_0x538ed2){logger[_0x8a47('0x17')](_0x8a47('0x14'),_0x574c96,_0x538ed2);_0x493d7b(_0x538ed2);});});}
\ No newline at end of file
index 84ded03..c5fd101 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf82=['remove','removeListener','register','openchannelAccount:','./openchannelAccount.events'];(function(_0x38841c,_0x1af0bf){var _0x500610=function(_0x225955){while(--_0x225955){_0x38841c['push'](_0x38841c['shift']());}};_0x500610(++_0x1af0bf);}(_0xbf82,0x1cb));var _0x2bf8=function(_0x261cd1,_0x390dac){_0x261cd1=_0x261cd1-0x0;var _0x3ef8d8=_0xbf82[_0x261cd1];return _0x3ef8d8;};'use strict';var OpenchannelAccountEvents=require(_0x2bf8('0x0'));var events=['save',_0x2bf8('0x1'),'update'];function createListener(_0x3d3645,_0x4289fc){return function(_0x436197){_0x4289fc['emit'](_0x3d3645,_0x436197);};}function removeListener(_0x5e2adc,_0x3e581e){return function(){OpenchannelAccountEvents[_0x2bf8('0x2')](_0x5e2adc,_0x3e581e);};}exports[_0x2bf8('0x3')]=function(_0x20dc19){for(var _0x19d402=0x0,_0x5a3818=events['length'];_0x19d402<_0x5a3818;_0x19d402++){var _0x1c57e9=events[_0x19d402];var _0x5c1944=createListener(_0x2bf8('0x4')+_0x1c57e9,_0x20dc19);OpenchannelAccountEvents['on'](_0x1c57e9,_0x5c1944);}};
\ No newline at end of file
+var _0xe87e=['register','length','openchannelAccount:','./openchannelAccount.events','save','remove','update','emit','removeListener'];(function(_0x522c6d,_0x4d250d){var _0x26300d=function(_0x3ab228){while(--_0x3ab228){_0x522c6d['push'](_0x522c6d['shift']());}};_0x26300d(++_0x4d250d);}(_0xe87e,0x17d));var _0xee87=function(_0x1a72f3,_0x217011){_0x1a72f3=_0x1a72f3-0x0;var _0x57ef47=_0xe87e[_0x1a72f3];return _0x57ef47;};'use strict';var OpenchannelAccountEvents=require(_0xee87('0x0'));var events=[_0xee87('0x1'),_0xee87('0x2'),_0xee87('0x3')];function createListener(_0x1224f4,_0x572349){return function(_0x5a1394){_0x572349[_0xee87('0x4')](_0x1224f4,_0x5a1394);};}function removeListener(_0x14b7a8,_0x41d461){return function(){OpenchannelAccountEvents[_0xee87('0x5')](_0x14b7a8,_0x41d461);};}exports[_0xee87('0x6')]=function(_0x46446e){for(var _0x5be499=0x0,_0x589c36=events[_0xee87('0x7')];_0x5be499<_0x589c36;_0x5be499++){var _0x2ee165=events[_0x5be499];var _0x2fda67=createListener(_0xee87('0x8')+_0x2ee165,_0x46446e);OpenchannelAccountEvents['on'](_0x2ee165,_0x2fda67);}};
\ No newline at end of file
index 983a6a4..385375f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5565=['create','put','update','delete','exports','multer','util','connect-timeout','express','Router','../../components/interaction/service','../../config/environment','./openchannelApplication.controller','get','isAuthenticated','/:id','show','post'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x5565,0x71));var _0x5556=function(_0x5420d7,_0x3bc4e1){_0x5420d7=_0x5420d7-0x0;var _0x886b3b=_0x5565[_0x5420d7];return _0x886b3b;};'use strict';var multer=require(_0x5556('0x0'));var util=require(_0x5556('0x1'));var path=require('path');var timeout=require(_0x5556('0x2'));var express=require(_0x5556('0x3'));var router=express[_0x5556('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x5556('0x5'));var config=require(_0x5556('0x6'));var controller=require(_0x5556('0x7'));router[_0x5556('0x8')]('/',auth[_0x5556('0x9')](),controller['index']);router['get'](_0x5556('0xa'),auth[_0x5556('0x9')](),controller[_0x5556('0xb')]);router[_0x5556('0xc')]('/',auth[_0x5556('0x9')](),controller[_0x5556('0xd')]);router[_0x5556('0xe')](_0x5556('0xa'),auth['isAuthenticated'](),controller[_0x5556('0xf')]);router[_0x5556('0x10')](_0x5556('0xa'),auth['isAuthenticated'](),controller['destroy']);module[_0x5556('0x11')]=router;
\ No newline at end of file
+var _0x8cf1=['/:id','show','create','put','update','delete','isAuthenticated','destroy','exports','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../config/environment','./openchannelApplication.controller','index'];(function(_0x2070da,_0x45e586){var _0x4f9fe1=function(_0x5b6f2a){while(--_0x5b6f2a){_0x2070da['push'](_0x2070da['shift']());}};_0x4f9fe1(++_0x45e586);}(_0x8cf1,0x183));var _0x18cf=function(_0x28b378,_0x1bfd5d){_0x28b378=_0x28b378-0x0;var _0x237981=_0x8cf1[_0x28b378];return _0x237981;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x18cf('0x0'));var timeout=require(_0x18cf('0x1'));var express=require(_0x18cf('0x2'));var router=express[_0x18cf('0x3')]();var fs_extra=require(_0x18cf('0x4'));var auth=require(_0x18cf('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x18cf('0x6'));var controller=require(_0x18cf('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x18cf('0x8')]);router['get'](_0x18cf('0x9'),auth['isAuthenticated'](),controller[_0x18cf('0xa')]);router['post']('/',auth['isAuthenticated'](),controller[_0x18cf('0xb')]);router[_0x18cf('0xc')](_0x18cf('0x9'),auth['isAuthenticated'](),controller[_0x18cf('0xd')]);router[_0x18cf('0xe')](_0x18cf('0x9'),auth[_0x18cf('0xf')](),controller[_0x18cf('0x10')]);module[_0x18cf('0x11')]=router;
\ No newline at end of file
index 0d159e0..9361168 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8fe=['sequelize','STRING','noop','TEXT','*,*,*,*'];(function(_0x25d2fa,_0x1d35c6){var _0x42d4aa=function(_0x590383){while(--_0x590383){_0x25d2fa['push'](_0x25d2fa['shift']());}};_0x42d4aa(++_0x1d35c6);}(_0xd8fe,0xfa));var _0xed8f=function(_0x1a8f86,_0x5ed9c4){_0x1a8f86=_0x1a8f86-0x0;var _0x20d876=_0xd8fe[_0x1a8f86];return _0x20d876;};'use strict';var Sequelize=require(_0xed8f('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0xed8f('0x1')],'allowNull':![],'defaultValue':_0xed8f('0x2')},'appdata':{'type':Sequelize[_0xed8f('0x3')]()},'description':{'type':Sequelize[_0xed8f('0x1')]},'interval':{'type':Sequelize[_0xed8f('0x1')],'defaultValue':_0xed8f('0x4')}};
\ No newline at end of file
+var _0x050e=['*,*,*,*','sequelize','exports','INTEGER','STRING','TEXT'];(function(_0x55bc5b,_0x190a73){var _0x24229a=function(_0x1b18c2){while(--_0x1b18c2){_0x55bc5b['push'](_0x55bc5b['shift']());}};_0x24229a(++_0x190a73);}(_0x050e,0x7f));var _0xe050=function(_0x431d4e,_0x5d7741){_0x431d4e=_0x431d4e-0x0;var _0xdd4d08=_0x050e[_0x431d4e];return _0xdd4d08;};'use strict';var Sequelize=require(_0xe050('0x0'));module[_0xe050('0x1')]={'priority':{'type':Sequelize[_0xe050('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0xe050('0x3')],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize[_0xe050('0x4')]()},'description':{'type':Sequelize[_0xe050('0x3')]},'interval':{'type':Sequelize[_0xe050('0x3')],'defaultValue':_0xe050('0x5')}};
\ No newline at end of file
index 9f4e372..3122acb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0792=['rows','catch','show','includeAll','body','find','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/auth/service','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','OpenchannelApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','where','pick','merge','VIRTUAL','filter','options','include'];(function(_0x124cfd,_0x410452){var _0x612418=function(_0x450385){while(--_0x450385){_0x124cfd['push'](_0x124cfd['shift']());}};_0x612418(++_0x410452);}(_0x0792,0x99));var _0x2079=function(_0x2abffd,_0x760487){_0x2abffd=_0x2abffd-0x0;var _0xe147d4=_0x0792[_0x2abffd];return _0xe147d4;};'use strict';var emlformat=require(_0x2079('0x0'));var rimraf=require(_0x2079('0x1'));var zipdir=require(_0x2079('0x2'));var jsonpatch=require(_0x2079('0x3'));var rp=require(_0x2079('0x4'));var moment=require(_0x2079('0x5'));var BPromise=require(_0x2079('0x6'));var Mustache=require('mustache');var util=require(_0x2079('0x7'));var path=require(_0x2079('0x8'));var sox=require(_0x2079('0x9'));var csv=require('to-csv');var ejs=require(_0x2079('0xa'));var fs=require('fs');var fs_extra=require(_0x2079('0xb'));var _=require(_0x2079('0xc'));var squel=require(_0x2079('0xd'));var crypto=require(_0x2079('0xe'));var jsforce=require(_0x2079('0xf'));var deskjs=require('desk.js');var toCsv=require(_0x2079('0x10'));var querystring=require(_0x2079('0x11'));var Papa=require(_0x2079('0x12'));var Redis=require(_0x2079('0x13'));var authService=require(_0x2079('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x2079('0x15'));var utils=require(_0x2079('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x2079('0x17'))['db'];function respondWithStatusCode(_0x548f63,_0x3a22f3){_0x3a22f3=_0x3a22f3||0xcc;return function(_0x3e29da){if(_0x3e29da){return _0x548f63[_0x2079('0x18')](_0x3a22f3);}return _0x548f63[_0x2079('0x19')](_0x3a22f3)[_0x2079('0x1a')]();};}function respondWithResult(_0x18af79,_0x5c1b71){_0x5c1b71=_0x5c1b71||0xc8;return function(_0x445d01){if(_0x445d01){return _0x18af79[_0x2079('0x19')](_0x5c1b71)[_0x2079('0x1b')](_0x445d01);}};}function respondWithFilteredResult(_0x4f5a8f,_0x38f8b4){return function(_0x365ec1){if(_0x365ec1){var _0x17c6d4=typeof _0x38f8b4[_0x2079('0x1c')]==='undefined'&&typeof _0x38f8b4[_0x2079('0x1d')]==='undefined';var _0x4ffc91=_0x365ec1[_0x2079('0x1e')];var _0x580e58=_0x17c6d4?0x0:_0x38f8b4['offset'];var _0x2b6b05=_0x17c6d4?_0x365ec1['count']:_0x38f8b4['offset']+_0x38f8b4['limit'];var _0x5c688d;if(_0x2b6b05>=_0x4ffc91){_0x2b6b05=_0x4ffc91;_0x5c688d=0xc8;}else{_0x5c688d=0xce;}_0x4f5a8f['status'](_0x5c688d);return _0x4f5a8f[_0x2079('0x1f')](_0x2079('0x20'),_0x580e58+'-'+_0x2b6b05+'/'+_0x4ffc91)[_0x2079('0x1b')](_0x365ec1);}return null;};}function patchUpdates(_0x19d036){return function(_0x4b1dda){try{jsonpatch[_0x2079('0x21')](_0x4b1dda,_0x19d036,!![]);}catch(_0x24b626){return BPromise[_0x2079('0x22')](_0x24b626);}return _0x4b1dda[_0x2079('0x23')]();};}function saveUpdates(_0x412076,_0xd39a2f){return function(_0x4d6b32){if(_0x4d6b32){return _0x4d6b32[_0x2079('0x24')](_0x412076)[_0x2079('0x25')](function(_0x57ea5c){return _0x57ea5c;});}return null;};}function removeEntity(_0x22ec8e,_0x34b8fb){return function(_0x1cefb4){if(_0x1cefb4){return _0x1cefb4[_0x2079('0x26')]()['then'](function(){_0x22ec8e['status'](0xcc)[_0x2079('0x1a')]();});}};}function handleEntityNotFound(_0x1392ff,_0x5d7ca8){return function(_0xcdbb2b){if(!_0xcdbb2b){_0x1392ff[_0x2079('0x18')](0x194);}return _0xcdbb2b;};}function handleError(_0x53c7ca,_0x4ba999){_0x4ba999=_0x4ba999||0x1f4;return function(_0x206324){logger[_0x2079('0x27')](_0x206324[_0x2079('0x28')]);if(_0x206324[_0x2079('0x29')]){delete _0x206324['name'];}_0x53c7ca['status'](_0x4ba999)[_0x2079('0x2a')](_0x206324);};}exports['index']=function(_0xd348f7,_0x5394a2){var _0x5a1dbc={},_0x59603f={},_0x51fad8={'count':0x0,'rows':[]};var _0x12aa61=_[_0x2079('0x2b')](db[_0x2079('0x2c')][_0x2079('0x2d')],function(_0x55e341){return{'name':_0x55e341[_0x2079('0x2e')],'type':_0x55e341[_0x2079('0x2f')][_0x2079('0x30')]};});_0x59603f[_0x2079('0x31')]=_[_0x2079('0x2b')](_0x12aa61,'name');_0x59603f[_0x2079('0x32')]=_[_0x2079('0x33')](_0xd348f7[_0x2079('0x32')]);_0x59603f[_0x2079('0x34')]=_[_0x2079('0x35')](_0x59603f[_0x2079('0x31')],_0x59603f['query']);_0x5a1dbc[_0x2079('0x36')]=_[_0x2079('0x35')](_0x59603f[_0x2079('0x31')],qs[_0x2079('0x37')](_0xd348f7[_0x2079('0x32')][_0x2079('0x37')]));_0x5a1dbc[_0x2079('0x36')]=_0x5a1dbc[_0x2079('0x36')][_0x2079('0x38')]?_0x5a1dbc[_0x2079('0x36')]:_0x59603f[_0x2079('0x31')];if(!_0xd348f7[_0x2079('0x32')][_0x2079('0x39')](_0x2079('0x3a'))){_0x5a1dbc[_0x2079('0x1d')]=qs[_0x2079('0x1d')](_0xd348f7[_0x2079('0x32')][_0x2079('0x1d')]);_0x5a1dbc['offset']=qs[_0x2079('0x1c')](_0xd348f7[_0x2079('0x32')][_0x2079('0x1c')]);}_0x5a1dbc['order']=qs['sort'](_0xd348f7[_0x2079('0x32')]['sort']);_0x5a1dbc[_0x2079('0x3b')]=qs[_0x2079('0x34')](_[_0x2079('0x3c')](_0xd348f7['query'],_0x59603f[_0x2079('0x34')]),_0x12aa61);if(_0xd348f7[_0x2079('0x32')]['filter']){_0x5a1dbc[_0x2079('0x3b')]=_[_0x2079('0x3d')](_0x5a1dbc['where'],{'$or':_[_0x2079('0x2b')](_0x12aa61,function(_0x1e8182){if(_0x1e8182[_0x2079('0x2f')]!==_0x2079('0x3e')){var _0x226060={};_0x226060[_0x1e8182[_0x2079('0x29')]]={'$like':'%'+_0xd348f7[_0x2079('0x32')][_0x2079('0x3f')]+'%'};return _0x226060;}})});}_0x5a1dbc=_[_0x2079('0x3d')]({},_0x5a1dbc,_0xd348f7[_0x2079('0x40')]);var _0x5a1a8c={'where':_0x5a1dbc[_0x2079('0x3b')]};return db[_0x2079('0x2c')][_0x2079('0x1e')](_0x5a1a8c)[_0x2079('0x25')](function(_0x1ddab6){_0x51fad8[_0x2079('0x1e')]=_0x1ddab6;if(_0xd348f7[_0x2079('0x32')]['includeAll']){_0x5a1dbc[_0x2079('0x41')]=[{'all':!![]}];}return db[_0x2079('0x2c')]['findAll'](_0x5a1dbc);})[_0x2079('0x25')](function(_0x435a16){_0x51fad8[_0x2079('0x42')]=_0x435a16;return _0x51fad8;})['then'](respondWithFilteredResult(_0x5394a2,_0x5a1dbc))[_0x2079('0x43')](handleError(_0x5394a2,null));};exports[_0x2079('0x44')]=function(_0x3bbf22,_0x2c5c1c){var _0x45db46={'raw':!![],'where':{'id':_0x3bbf22['params']['id']}},_0x37ca86={};_0x37ca86[_0x2079('0x31')]=_[_0x2079('0x33')](db[_0x2079('0x2c')][_0x2079('0x2d')]);_0x37ca86[_0x2079('0x32')]=_['keys'](_0x3bbf22[_0x2079('0x32')]);_0x37ca86[_0x2079('0x34')]=_['intersection'](_0x37ca86[_0x2079('0x31')],_0x37ca86[_0x2079('0x32')]);_0x45db46[_0x2079('0x36')]=_['intersection'](_0x37ca86[_0x2079('0x31')],qs[_0x2079('0x37')](_0x3bbf22[_0x2079('0x32')]['fields']));_0x45db46[_0x2079('0x36')]=_0x45db46[_0x2079('0x36')]['length']?_0x45db46[_0x2079('0x36')]:_0x37ca86[_0x2079('0x31')];if(_0x3bbf22[_0x2079('0x32')][_0x2079('0x45')]){_0x45db46['include']=[{'all':!![]}];}_0x45db46=_[_0x2079('0x3d')]({},_0x45db46,_0x3bbf22[_0x2079('0x40')]);return db[_0x2079('0x2c')]['find'](_0x45db46)['then'](handleEntityNotFound(_0x2c5c1c,null))[_0x2079('0x25')](respondWithResult(_0x2c5c1c,null))[_0x2079('0x43')](handleError(_0x2c5c1c,null));};exports['create']=function(_0x24423d,_0xf0e9b4){return db['OpenchannelApplication']['create'](_0x24423d[_0x2079('0x46')],{})[_0x2079('0x25')](respondWithResult(_0xf0e9b4,0xc9))[_0x2079('0x43')](handleError(_0xf0e9b4,null));};exports[_0x2079('0x24')]=function(_0x4735d6,_0x2452ee){if(_0x4735d6[_0x2079('0x46')]['id']){delete _0x4735d6[_0x2079('0x46')]['id'];}return db[_0x2079('0x2c')][_0x2079('0x47')]({'where':{'id':_0x4735d6[_0x2079('0x48')]['id']}})[_0x2079('0x25')](handleEntityNotFound(_0x2452ee,null))[_0x2079('0x25')](saveUpdates(_0x4735d6[_0x2079('0x46')],null))['then'](respondWithResult(_0x2452ee,null))[_0x2079('0x43')](handleError(_0x2452ee,null));};exports['destroy']=function(_0x1c65d4,_0x4b820){return db[_0x2079('0x2c')][_0x2079('0x47')]({'where':{'id':_0x1c65d4[_0x2079('0x48')]['id']}})[_0x2079('0x25')](handleEntityNotFound(_0x4b820,null))[_0x2079('0x25')](removeEntity(_0x4b820,null))['catch'](handleError(_0x4b820,null));};
\ No newline at end of file
+var _0x9571=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','apply','reject','save','then','error','stack','send','map','OpenchannelApplication','rawAttributes','fieldName','model','name','query','filters','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','VIRTUAL','filter','options','include','findAll','rows','catch','show','params','keys','intersection','includeAll','merge','create','body','update','find','destroy','eml-format','zip-dir','fast-json-patch','moment','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'];(function(_0x30c419,_0x2d8afc){var _0xffcc81=function(_0x58f913){while(--_0x58f913){_0x30c419['push'](_0x30c419['shift']());}};_0xffcc81(++_0x2d8afc);}(_0x9571,0x167));var _0x1957=function(_0x26797a,_0x104240){_0x26797a=_0x26797a-0x0;var _0xeb5295=_0x9571[_0x26797a];return _0xeb5295;};'use strict';var emlformat=require(_0x1957('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x1957('0x1'));var jsonpatch=require(_0x1957('0x2'));var rp=require('request-promise');var moment=require(_0x1957('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x1957('0x4'));var util=require(_0x1957('0x5'));var path=require(_0x1957('0x6'));var sox=require(_0x1957('0x7'));var csv=require(_0x1957('0x8'));var ejs=require(_0x1957('0x9'));var fs=require('fs');var fs_extra=require(_0x1957('0xa'));var _=require(_0x1957('0xb'));var squel=require(_0x1957('0xc'));var crypto=require(_0x1957('0xd'));var jsforce=require(_0x1957('0xe'));var deskjs=require(_0x1957('0xf'));var toCsv=require(_0x1957('0x8'));var querystring=require('querystring');var Papa=require(_0x1957('0x10'));var Redis=require(_0x1957('0x11'));var authService=require(_0x1957('0x12'));var qs=require(_0x1957('0x13'));var as=require(_0x1957('0x14'));var hardwareService=require(_0x1957('0x15'));var logger=require(_0x1957('0x16'))(_0x1957('0x17'));var utils=require(_0x1957('0x18'));var config=require(_0x1957('0x19'));var licenseUtil=require('../../config/license/util');var db=require(_0x1957('0x1a'))['db'];function respondWithStatusCode(_0x278afd,_0xd8935){_0xd8935=_0xd8935||0xcc;return function(_0x209272){if(_0x209272){return _0x278afd[_0x1957('0x1b')](_0xd8935);}return _0x278afd[_0x1957('0x1c')](_0xd8935)[_0x1957('0x1d')]();};}function respondWithResult(_0x350fee,_0x18b2e0){_0x18b2e0=_0x18b2e0||0xc8;return function(_0x480b51){if(_0x480b51){return _0x350fee[_0x1957('0x1c')](_0x18b2e0)[_0x1957('0x1e')](_0x480b51);}};}function respondWithFilteredResult(_0x493146,_0x10c7a7){return function(_0x40ed32){if(_0x40ed32){var _0x47abe9=typeof _0x10c7a7[_0x1957('0x1f')]===_0x1957('0x20')&&typeof _0x10c7a7[_0x1957('0x21')]===_0x1957('0x20');var _0x302fe8=_0x40ed32[_0x1957('0x22')];var _0x178caa=_0x47abe9?0x0:_0x10c7a7[_0x1957('0x1f')];var _0x547c6e=_0x47abe9?_0x40ed32[_0x1957('0x22')]:_0x10c7a7[_0x1957('0x1f')]+_0x10c7a7[_0x1957('0x21')];var _0x58f5ef;if(_0x547c6e>=_0x302fe8){_0x547c6e=_0x302fe8;_0x58f5ef=0xc8;}else{_0x58f5ef=0xce;}_0x493146[_0x1957('0x1c')](_0x58f5ef);return _0x493146['set']('Content-Range',_0x178caa+'-'+_0x547c6e+'/'+_0x302fe8)[_0x1957('0x1e')](_0x40ed32);}return null;};}function patchUpdates(_0x1415ae){return function(_0x3fb957){try{jsonpatch[_0x1957('0x23')](_0x3fb957,_0x1415ae,!![]);}catch(_0x37f281){return BPromise[_0x1957('0x24')](_0x37f281);}return _0x3fb957[_0x1957('0x25')]();};}function saveUpdates(_0x16c87f,_0x4c55b2){return function(_0x2903e4){if(_0x2903e4){return _0x2903e4['update'](_0x16c87f)[_0x1957('0x26')](function(_0x4e8aa6){return _0x4e8aa6;});}return null;};}function removeEntity(_0x469525,_0x4518f8){return function(_0x5b229d){if(_0x5b229d){return _0x5b229d['destroy']()[_0x1957('0x26')](function(){_0x469525[_0x1957('0x1c')](0xcc)[_0x1957('0x1d')]();});}};}function handleEntityNotFound(_0x30c2af,_0x24967e){return function(_0x3d30f2){if(!_0x3d30f2){_0x30c2af['sendStatus'](0x194);}return _0x3d30f2;};}function handleError(_0x45d3b7,_0x3ba5ed){_0x3ba5ed=_0x3ba5ed||0x1f4;return function(_0x3b8b7b){logger[_0x1957('0x27')](_0x3b8b7b[_0x1957('0x28')]);if(_0x3b8b7b['name']){delete _0x3b8b7b['name'];}_0x45d3b7['status'](_0x3ba5ed)[_0x1957('0x29')](_0x3b8b7b);};}exports['index']=function(_0x1f4d98,_0x26645e){var _0x40de58={},_0xf38986={},_0x334f56={'count':0x0,'rows':[]};var _0x20bec0=_[_0x1957('0x2a')](db[_0x1957('0x2b')][_0x1957('0x2c')],function(_0x58750f){return{'name':_0x58750f[_0x1957('0x2d')],'type':_0x58750f['type']['key']};});_0xf38986[_0x1957('0x2e')]=_[_0x1957('0x2a')](_0x20bec0,_0x1957('0x2f'));_0xf38986[_0x1957('0x30')]=_['keys'](_0x1f4d98['query']);_0xf38986[_0x1957('0x31')]=_['intersection'](_0xf38986[_0x1957('0x2e')],_0xf38986[_0x1957('0x30')]);_0x40de58[_0x1957('0x32')]=_['intersection'](_0xf38986[_0x1957('0x2e')],qs[_0x1957('0x33')](_0x1f4d98[_0x1957('0x30')][_0x1957('0x33')]));_0x40de58[_0x1957('0x32')]=_0x40de58[_0x1957('0x32')][_0x1957('0x34')]?_0x40de58[_0x1957('0x32')]:_0xf38986['model'];if(!_0x1f4d98['query'][_0x1957('0x35')](_0x1957('0x36'))){_0x40de58[_0x1957('0x21')]=qs[_0x1957('0x21')](_0x1f4d98[_0x1957('0x30')][_0x1957('0x21')]);_0x40de58['offset']=qs[_0x1957('0x1f')](_0x1f4d98[_0x1957('0x30')][_0x1957('0x1f')]);}_0x40de58['order']=qs['sort'](_0x1f4d98['query'][_0x1957('0x37')]);_0x40de58[_0x1957('0x38')]=qs[_0x1957('0x31')](_[_0x1957('0x39')](_0x1f4d98[_0x1957('0x30')],_0xf38986[_0x1957('0x31')]),_0x20bec0);if(_0x1f4d98[_0x1957('0x30')]['filter']){_0x40de58['where']=_['merge'](_0x40de58[_0x1957('0x38')],{'$or':_[_0x1957('0x2a')](_0x20bec0,function(_0x4def76){if(_0x4def76['type']!==_0x1957('0x3a')){var _0x4d22a2={};_0x4d22a2[_0x4def76[_0x1957('0x2f')]]={'$like':'%'+_0x1f4d98[_0x1957('0x30')][_0x1957('0x3b')]+'%'};return _0x4d22a2;}})});}_0x40de58=_['merge']({},_0x40de58,_0x1f4d98[_0x1957('0x3c')]);var _0x5d027c={'where':_0x40de58['where']};return db[_0x1957('0x2b')][_0x1957('0x22')](_0x5d027c)[_0x1957('0x26')](function(_0x4e1b1b){_0x334f56['count']=_0x4e1b1b;if(_0x1f4d98[_0x1957('0x30')]['includeAll']){_0x40de58[_0x1957('0x3d')]=[{'all':!![]}];}return db[_0x1957('0x2b')][_0x1957('0x3e')](_0x40de58);})[_0x1957('0x26')](function(_0x42dfed){_0x334f56[_0x1957('0x3f')]=_0x42dfed;return _0x334f56;})[_0x1957('0x26')](respondWithFilteredResult(_0x26645e,_0x40de58))[_0x1957('0x40')](handleError(_0x26645e,null));};exports[_0x1957('0x41')]=function(_0x9da3c8,_0x243deb){var _0x3b3f62={'raw':!![],'where':{'id':_0x9da3c8[_0x1957('0x42')]['id']}},_0x32795b={};_0x32795b[_0x1957('0x2e')]=_[_0x1957('0x43')](db[_0x1957('0x2b')][_0x1957('0x2c')]);_0x32795b[_0x1957('0x30')]=_[_0x1957('0x43')](_0x9da3c8[_0x1957('0x30')]);_0x32795b['filters']=_[_0x1957('0x44')](_0x32795b[_0x1957('0x2e')],_0x32795b[_0x1957('0x30')]);_0x3b3f62[_0x1957('0x32')]=_[_0x1957('0x44')](_0x32795b[_0x1957('0x2e')],qs[_0x1957('0x33')](_0x9da3c8['query']['fields']));_0x3b3f62[_0x1957('0x32')]=_0x3b3f62['attributes'][_0x1957('0x34')]?_0x3b3f62[_0x1957('0x32')]:_0x32795b[_0x1957('0x2e')];if(_0x9da3c8['query'][_0x1957('0x45')]){_0x3b3f62['include']=[{'all':!![]}];}_0x3b3f62=_[_0x1957('0x46')]({},_0x3b3f62,_0x9da3c8['options']);return db[_0x1957('0x2b')]['find'](_0x3b3f62)['then'](handleEntityNotFound(_0x243deb,null))['then'](respondWithResult(_0x243deb,null))[_0x1957('0x40')](handleError(_0x243deb,null));};exports[_0x1957('0x47')]=function(_0x4cd4d3,_0x4a22b6){return db['OpenchannelApplication']['create'](_0x4cd4d3[_0x1957('0x48')],{})['then'](respondWithResult(_0x4a22b6,0xc9))[_0x1957('0x40')](handleError(_0x4a22b6,null));};exports[_0x1957('0x49')]=function(_0x25e56b,_0x583699){if(_0x25e56b[_0x1957('0x48')]['id']){delete _0x25e56b[_0x1957('0x48')]['id'];}return db[_0x1957('0x2b')][_0x1957('0x4a')]({'where':{'id':_0x25e56b['params']['id']}})[_0x1957('0x26')](handleEntityNotFound(_0x583699,null))[_0x1957('0x26')](saveUpdates(_0x25e56b[_0x1957('0x48')],null))[_0x1957('0x26')](respondWithResult(_0x583699,null))[_0x1957('0x40')](handleError(_0x583699,null));};exports[_0x1957('0x4b')]=function(_0x4e7d48,_0x480414){return db[_0x1957('0x2b')][_0x1957('0x4a')]({'where':{'id':_0x4e7d48[_0x1957('0x42')]['id']}})[_0x1957('0x26')](handleEntityNotFound(_0x480414,null))['then'](removeEntity(_0x480414,null))['catch'](handleError(_0x480414,null));};
\ No newline at end of file
index 9c1de0e..7c567d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x581e=['openchannel_applications','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./openchannelApplication.attributes','exports','define','OpenchannelApplication'];(function(_0x1c54cc,_0x14cc8b){var _0xa72ac1=function(_0x5348c8){while(--_0x5348c8){_0x1c54cc['push'](_0x1c54cc['shift']());}};_0xa72ac1(++_0x14cc8b);}(_0x581e,0x12e));var _0xe581=function(_0x13869a,_0x2f0db2){_0x13869a=_0x13869a-0x0;var _0x5ceb05=_0x581e[_0x13869a];return _0x5ceb05;};'use strict';var _=require(_0xe581('0x0'));var util=require(_0xe581('0x1'));var logger=require(_0xe581('0x2'))(_0xe581('0x3'));var moment=require(_0xe581('0x4'));var BPromise=require(_0xe581('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xe581('0x6'));var rimraf=require(_0xe581('0x7'));var config=require(_0xe581('0x8'));var attributes=require(_0xe581('0x9'));module[_0xe581('0xa')]=function(_0x3ec7cf,_0x2a82e9){return _0x3ec7cf[_0xe581('0xb')](_0xe581('0xc'),attributes,{'tableName':_0xe581('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xe581('0xe')});};
\ No newline at end of file
+var _0x3c34=['utf8mb4_unicode_ci','util','../../config/logger','api','moment','request-promise','path','./openchannelApplication.attributes','define','openchannel_applications','utf8mb4'];(function(_0x439d59,_0x11ccdf){var _0x3670c7=function(_0x11cfcb){while(--_0x11cfcb){_0x439d59['push'](_0x439d59['shift']());}};_0x3670c7(++_0x11ccdf);}(_0x3c34,0xe8));var _0x43c3=function(_0x31cb5f,_0x2df766){_0x31cb5f=_0x31cb5f-0x0;var _0x586042=_0x3c34[_0x31cb5f];return _0x586042;};'use strict';var _=require('lodash');var util=require(_0x43c3('0x0'));var logger=require(_0x43c3('0x1'))(_0x43c3('0x2'));var moment=require(_0x43c3('0x3'));var BPromise=require('bluebird');var rp=require(_0x43c3('0x4'));var fs=require('fs');var path=require(_0x43c3('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x43c3('0x6'));module['exports']=function(_0x4b812f,_0x185b9a){return _0x4b812f[_0x43c3('0x7')]('OpenchannelApplication',attributes,{'tableName':_0x43c3('0x8'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x43c3('0x9'),'collate':_0x43c3('0xa')});};
\ No newline at end of file
index 10b1f40..966c1f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa6b7=['OpenchannelApplication,\x20%s,\x20%s,\x20%s','error','code','message','result','OpenchannelApplication','update','body','options','where','limit','UpdateOpenchannelApplication','debug','stringify','catch','lodash','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent'];(function(_0x2e4a84,_0x3de6e1){var _0x16ffe8=function(_0x43382f){while(--_0x43382f){_0x2e4a84['push'](_0x2e4a84['shift']());}};_0x16ffe8(++_0x3de6e1);}(_0xa6b7,0xa0));var _0x7a6b=function(_0x585d81,_0xf6d74f){_0x585d81=_0x585d81-0x0;var _0x1aca0d=_0xa6b7[_0x585d81];return _0x1aca0d;};'use strict';var _=require(_0x7a6b('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x7a6b('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7a6b('0x2'));var db=require(_0x7a6b('0x3'))['db'];var utils=require(_0x7a6b('0x4'));var logger=require(_0x7a6b('0x5'))(_0x7a6b('0x6'));var config=require(_0x7a6b('0x7'));var jayson=require(_0x7a6b('0x8'));var client=jayson[_0x7a6b('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x1c7451,_0x9ae1c,_0x52d8b0){return new BPromise(function(_0x1e2bd2,_0x500828){return client[_0x7a6b('0xa')](_0x1c7451,_0x52d8b0)['then'](function(_0xb4531){logger[_0x7a6b('0xb')](_0x7a6b('0xc'),_0x9ae1c,_0x7a6b('0xd'));logger['debug'](_0x7a6b('0xe'),_0x9ae1c,_0x7a6b('0xd'),JSON['stringify'](_0xb4531));if(_0xb4531['error']){if(_0xb4531[_0x7a6b('0xf')][_0x7a6b('0x10')]===0x1f4){logger[_0x7a6b('0xf')](_0x7a6b('0xc'),_0x9ae1c,_0xb4531[_0x7a6b('0xf')][_0x7a6b('0x11')]);return _0x500828(_0xb4531[_0x7a6b('0xf')][_0x7a6b('0x11')]);}logger['error'](_0x7a6b('0xc'),_0x9ae1c,_0xb4531['error'][_0x7a6b('0x11')]);return _0x1e2bd2(_0xb4531[_0x7a6b('0xf')][_0x7a6b('0x11')]);}else{logger[_0x7a6b('0xb')]('OpenchannelApplication,\x20%s,\x20%s',_0x9ae1c,_0x7a6b('0xd'));_0x1e2bd2(_0xb4531[_0x7a6b('0x12')][_0x7a6b('0x11')]);}})['catch'](function(_0x5a6960){logger[_0x7a6b('0xf')](_0x7a6b('0xc'),_0x9ae1c,_0x5a6960);_0x500828(_0x5a6960);});});}exports['UpdateOpenchannelApplication']=function(_0x5e3a4c){var _0x3bcd62=this;return new Promise(function(_0x17a9f3,_0x34a7a7){return db[_0x7a6b('0x13')][_0x7a6b('0x14')](_0x5e3a4c[_0x7a6b('0x15')],{'raw':_0x5e3a4c[_0x7a6b('0x16')]?_0x5e3a4c[_0x7a6b('0x16')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5e3a4c[_0x7a6b('0x16')]?_0x5e3a4c[_0x7a6b('0x16')][_0x7a6b('0x17')]||null:null,'attributes':_0x5e3a4c[_0x7a6b('0x16')]?_0x5e3a4c['options']['attributes']||null:null,'limit':_0x5e3a4c[_0x7a6b('0x16')]?_0x5e3a4c['options'][_0x7a6b('0x18')]||null:null})['then'](function(_0x5b7cd0){logger[_0x7a6b('0xb')](_0x7a6b('0x19'),_0x5e3a4c);logger[_0x7a6b('0x1a')]('UpdateOpenchannelApplication',_0x5e3a4c,JSON[_0x7a6b('0x1b')](_0x5b7cd0));_0x17a9f3(_0x5b7cd0);})[_0x7a6b('0x1c')](function(_0x41a35b){logger[_0x7a6b('0xf')]('UpdateOpenchannelApplication',_0x41a35b[_0x7a6b('0x11')],_0x5e3a4c);_0x34a7a7(_0x3bcd62['error'](0x1f4,_0x41a35b['message']));});});};
\ No newline at end of file
+var _0x35bf=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','OpenchannelApplication,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','UpdateOpenchannelApplication','OpenchannelApplication','update','body','options','raw','where','attributes','catch','lodash','util','moment','bluebird','randomstring'];(function(_0x470693,_0x55357e){var _0x2d43bc=function(_0x2ba2f8){while(--_0x2ba2f8){_0x470693['push'](_0x470693['shift']());}};_0x2d43bc(++_0x55357e);}(_0x35bf,0x1c9));var _0xf35b=function(_0x178f7d,_0xc5f6b9){_0x178f7d=_0x178f7d-0x0;var _0x515db5=_0x35bf[_0x178f7d];return _0x515db5;};'use strict';var _=require(_0xf35b('0x0'));var util=require(_0xf35b('0x1'));var moment=require(_0xf35b('0x2'));var BPromise=require(_0xf35b('0x3'));var rs=require(_0xf35b('0x4'));var fs=require('fs');var Redis=require(_0xf35b('0x5'));var db=require(_0xf35b('0x6'))['db'];var utils=require(_0xf35b('0x7'));var logger=require(_0xf35b('0x8'))(_0xf35b('0x9'));var config=require(_0xf35b('0xa'));var jayson=require(_0xf35b('0xb'));var client=jayson[_0xf35b('0xc')][_0xf35b('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x14462f,_0x2ed33b,_0x3033bc){return new BPromise(function(_0x4afc4a,_0x20568c){return client[_0xf35b('0xe')](_0x14462f,_0x3033bc)['then'](function(_0x1a8d9d){logger[_0xf35b('0xf')](_0xf35b('0x10'),_0x2ed33b,_0xf35b('0x11'));logger[_0xf35b('0x12')]('OpenchannelApplication,\x20%s,\x20%s,\x20%s',_0x2ed33b,'request\x20sent',JSON[_0xf35b('0x13')](_0x1a8d9d));if(_0x1a8d9d[_0xf35b('0x14')]){if(_0x1a8d9d[_0xf35b('0x14')][_0xf35b('0x15')]===0x1f4){logger[_0xf35b('0x14')](_0xf35b('0x10'),_0x2ed33b,_0x1a8d9d[_0xf35b('0x14')]['message']);return _0x20568c(_0x1a8d9d[_0xf35b('0x14')][_0xf35b('0x16')]);}logger[_0xf35b('0x14')]('OpenchannelApplication,\x20%s,\x20%s',_0x2ed33b,_0x1a8d9d['error']['message']);return _0x4afc4a(_0x1a8d9d[_0xf35b('0x14')]['message']);}else{logger[_0xf35b('0xf')](_0xf35b('0x10'),_0x2ed33b,_0xf35b('0x11'));_0x4afc4a(_0x1a8d9d[_0xf35b('0x17')]['message']);}})['catch'](function(_0x40a037){logger[_0xf35b('0x14')](_0xf35b('0x10'),_0x2ed33b,_0x40a037);_0x20568c(_0x40a037);});});}exports[_0xf35b('0x18')]=function(_0x34178b){var _0x50c0ff=this;return new Promise(function(_0x550f99,_0x127efb){return db[_0xf35b('0x19')][_0xf35b('0x1a')](_0x34178b[_0xf35b('0x1b')],{'raw':_0x34178b[_0xf35b('0x1c')]?_0x34178b[_0xf35b('0x1c')][_0xf35b('0x1d')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x34178b['options']?_0x34178b[_0xf35b('0x1c')][_0xf35b('0x1e')]||null:null,'attributes':_0x34178b['options']?_0x34178b[_0xf35b('0x1c')][_0xf35b('0x1f')]||null:null,'limit':_0x34178b['options']?_0x34178b[_0xf35b('0x1c')]['limit']||null:null})['then'](function(_0x57c0d5){logger[_0xf35b('0xf')](_0xf35b('0x18'),_0x34178b);logger[_0xf35b('0x12')](_0xf35b('0x18'),_0x34178b,JSON[_0xf35b('0x13')](_0x57c0d5));_0x550f99(_0x57c0d5);})[_0xf35b('0x20')](function(_0x3d5609){logger[_0xf35b('0x14')](_0xf35b('0x18'),_0x3d5609[_0xf35b('0x16')],_0x34178b);_0x127efb(_0x50c0ff[_0xf35b('0x14')](0x1f4,_0x3d5609[_0xf35b('0x16')]));});});};
\ No newline at end of file
index 03f26b6..ef56830 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcbad=['removeTags','exports','multer','util','path','connect-timeout','Router','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/messages','getMessages','/:id/download','download','post','addMessage','tracked','openchannel','addTags','put','update','delete','openchannelinteraction:destroy'];(function(_0x3d361e,_0x23c2c3){var _0x31a7f4=function(_0x39291b){while(--_0x39291b){_0x3d361e['push'](_0x3d361e['shift']());}};_0x31a7f4(++_0x23c2c3);}(_0xcbad,0x188));var _0xdcba=function(_0x1a83fa,_0x554b93){_0x1a83fa=_0x1a83fa-0x0;var _0x32ee30=_0xcbad[_0x1a83fa];return _0x32ee30;};'use strict';var multer=require(_0xdcba('0x0'));var util=require(_0xdcba('0x1'));var path=require(_0xdcba('0x2'));var timeout=require(_0xdcba('0x3'));var express=require('express');var router=express[_0xdcba('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0xdcba('0x5'));var config=require(_0xdcba('0x6'));var controller=require(_0xdcba('0x7'));router[_0xdcba('0x8')]('/',auth[_0xdcba('0x9')](),controller[_0xdcba('0xa')]);router[_0xdcba('0x8')](_0xdcba('0xb'),auth[_0xdcba('0x9')](),controller[_0xdcba('0xc')]);router['get'](_0xdcba('0xd'),auth[_0xdcba('0x9')](),controller[_0xdcba('0xe')]);router[_0xdcba('0x8')](_0xdcba('0xf'),auth[_0xdcba('0x9')](),controller[_0xdcba('0x10')]);router['get'](_0xdcba('0x11'),auth['isAuthenticated'](),controller[_0xdcba('0x12')]);router[_0xdcba('0x13')]('/',auth[_0xdcba('0x9')](),controller['create']);router[_0xdcba('0x13')](_0xdcba('0xf'),auth[_0xdcba('0x9')](),controller[_0xdcba('0x14')]);router['post']('/:id/tags',auth[_0xdcba('0x9')](),interaction[_0xdcba('0x15')](_0xdcba('0x16'),'openchannelinteraction:addtags'),controller[_0xdcba('0x17')]);router[_0xdcba('0x18')](_0xdcba('0xd'),auth[_0xdcba('0x9')](),interaction[_0xdcba('0x15')](_0xdcba('0x16'),'openchannelinteraction:update'),controller[_0xdcba('0x19')]);router[_0xdcba('0x1a')]('/:id',auth['isAuthenticated'](),interaction['tracked'](_0xdcba('0x16'),_0xdcba('0x1b')),controller['destroy']);router[_0xdcba('0x1a')]('/:id/tags',auth['isAuthenticated'](),controller[_0xdcba('0x1c')]);module[_0xdcba('0x1d')]=router;
\ No newline at end of file
+var _0xb6e9=['openchannel','openchannelinteraction:addtags','addTags','delete','/:id','destroy','removeTags','exports','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./openchannelInteraction.controller','get','isAuthenticated','index','/describe','/:id/messages','/:id/download','download','post','create','addMessage','/:id/tags','tracked'];(function(_0x491a7f,_0x28bb80){var _0x3d8f44=function(_0xdaa716){while(--_0xdaa716){_0x491a7f['push'](_0x491a7f['shift']());}};_0x3d8f44(++_0x28bb80);}(_0xb6e9,0x174));var _0x9b6e=function(_0x116f4a,_0x1881ce){_0x116f4a=_0x116f4a-0x0;var _0x763af8=_0xb6e9[_0x116f4a];return _0x763af8;};'use strict';var multer=require('multer');var util=require(_0x9b6e('0x0'));var path=require('path');var timeout=require(_0x9b6e('0x1'));var express=require(_0x9b6e('0x2'));var router=express[_0x9b6e('0x3')]();var fs_extra=require(_0x9b6e('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x9b6e('0x5'));var config=require(_0x9b6e('0x6'));var controller=require(_0x9b6e('0x7'));router[_0x9b6e('0x8')]('/',auth[_0x9b6e('0x9')](),controller[_0x9b6e('0xa')]);router['get'](_0x9b6e('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0x9b6e('0x8')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x9b6e('0x8')](_0x9b6e('0xc'),auth[_0x9b6e('0x9')](),controller['getMessages']);router[_0x9b6e('0x8')](_0x9b6e('0xd'),auth[_0x9b6e('0x9')](),controller[_0x9b6e('0xe')]);router[_0x9b6e('0xf')]('/',auth['isAuthenticated'](),controller[_0x9b6e('0x10')]);router['post'](_0x9b6e('0xc'),auth[_0x9b6e('0x9')](),controller[_0x9b6e('0x11')]);router['post'](_0x9b6e('0x12'),auth[_0x9b6e('0x9')](),interaction[_0x9b6e('0x13')](_0x9b6e('0x14'),_0x9b6e('0x15')),controller[_0x9b6e('0x16')]);router['put']('/:id',auth[_0x9b6e('0x9')](),interaction['tracked'](_0x9b6e('0x14'),'openchannelinteraction:update'),controller['update']);router[_0x9b6e('0x17')](_0x9b6e('0x18'),auth[_0x9b6e('0x9')](),interaction[_0x9b6e('0x13')]('openchannel','openchannelinteraction:destroy'),controller[_0x9b6e('0x19')]);router[_0x9b6e('0x17')](_0x9b6e('0x12'),auth[_0x9b6e('0x9')](),controller[_0x9b6e('0x1a')]);module[_0x9b6e('0x1b')]=router;
\ No newline at end of file
index 5de5657..8e2ac27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2058=['out','sequelize','BOOLEAN','DATE','STRING','ENUM'];(function(_0x59f4d5,_0x21ace6){var _0x3bd900=function(_0x5b9afa){while(--_0x5b9afa){_0x59f4d5['push'](_0x59f4d5['shift']());}};_0x3bd900(++_0x21ace6);}(_0x2058,0xf7));var _0x8205=function(_0x128a73,_0x26c676){_0x128a73=_0x128a73-0x0;var _0x210caa=_0x2058[_0x128a73];return _0x210caa;};'use strict';var Sequelize=require(_0x8205('0x0'));module['exports']={'closed':{'type':Sequelize[_0x8205('0x1')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x8205('0x2')]},'disposition':{'type':Sequelize[_0x8205('0x3')]},'secondDisposition':{'type':Sequelize[_0x8205('0x3')]},'thirdDisposition':{'type':Sequelize[_0x8205('0x3')]},'note':{'type':Sequelize[_0x8205('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize['STRING']},'externalUrl':{'type':Sequelize[_0x8205('0x3')]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x8205('0x4')]('in',_0x8205('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x8205('0x3')]},'autoreplyExecuted':{'type':Sequelize[_0x8205('0x1')],'defaultValue':![]}};
\ No newline at end of file
+var _0x5089=['exports','DATE','STRING','ENUM','out','sequelize'];(function(_0x1529a3,_0x529f63){var _0x1a0d4b=function(_0x6f1058){while(--_0x6f1058){_0x1529a3['push'](_0x1529a3['shift']());}};_0x1a0d4b(++_0x529f63);}(_0x5089,0x1bb));var _0x9508=function(_0x48ac40,_0x1e3beb){_0x48ac40=_0x48ac40-0x0;var _0x55df02=_0x5089[_0x48ac40];return _0x55df02;};'use strict';var Sequelize=require(_0x9508('0x0'));module[_0x9508('0x1')]={'closed':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x9508('0x2')]},'disposition':{'type':Sequelize[_0x9508('0x3')]},'secondDisposition':{'type':Sequelize[_0x9508('0x3')]},'thirdDisposition':{'type':Sequelize[_0x9508('0x3')]},'note':{'type':Sequelize[_0x9508('0x3')]},'read1stAt':{'type':Sequelize['DATE']},'threadId':{'type':Sequelize[_0x9508('0x3')]},'externalUrl':{'type':Sequelize['STRING']},'lastMsgAt':{'type':Sequelize[_0x9508('0x2')]},'firstMsgDirection':{'type':Sequelize[_0x9508('0x4')]('in',_0x9508('0x5')),'defaultValue':'in','allowNull':![]},'lastMsgDirection':{'type':Sequelize['ENUM']('in',_0x9508('0x5')),'defaultValue':'in','allowNull':![]},'from':{'type':Sequelize[_0x9508('0x3')]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index bb4164e..1cfe4a0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x28fa=['i.OpenchannelAccountId\x20IS\x20NULL','agent','toString','sequelize','keyBy','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','a.key','Account.mandatoryDisposition','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','i.*','c.firstName','c.lastName','Contact.lastName','c.email','c.phone','Contact.phone','Contact.mobile','Contact.fax','o.fullname','Owner.fullname','o.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','OpenchannelInteractionId','all','rows','show','params','includeAll','create','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','findOne','rawAttributes','format','YYYY-MM-DD\x20HH:mm:ss','options','include','findAll','addTags','setTags','spread','emit','removeTags','download','unix','root','server','files','tmp','join','attachments','CmContact','firstName','lastName','Messages','direction','secret','OpenchannelAccount','Account','Owner','get','Openchannel','N.A.','closedAt','disposition','threadId','Private','basename','existsSync','createWriteStream','Attachment','System','Contact','downloadInteraction.ejs','.pdf','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','redis','defaults','./openchannelInteraction.socket','register','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','name','send','Users','fullname','TagIds','Tags','split','push','catch','waiting','talking','answered','unmanaged','UserId','closed','OpenchannelInteraction','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','select','field','color','tools_tags','u.id','u.fullname','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','me.OpenchannelInteractionId\x20=\x20i.id','openchannel_interaction_has_tags','it.OpenchannelInteractionId\x20=\x20i.id','expr','search','sqlOperator','conditions','length','find','unreadMessages','value','having','`\x20=\x200','`\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','buildExpression','text','Tag','forEach','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','start','body','some','isEmpty','where','i.OpenchannelAccountId\x20IN\x20?','createdAt','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','tag','isArray','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','i.from\x20LIKE\x20?','CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?','group','i.id','Sequelize','QueryTypes','SELECT','clone','contactName','DESC','resolve','OpenchannelAccountId','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','getOpenchannelAccounts'];(function(_0x346426,_0x2b24d6){var _0x5e89d3=function(_0x5dcefc){while(--_0x5dcefc){_0x346426['push'](_0x346426['shift']());}};_0x5e89d3(++_0x2b24d6);}(_0x28fa,0x14b));var _0xa28f=function(_0x1bcf0e,_0x4b3201){_0x1bcf0e=_0x1bcf0e-0x0;var _0x1612bd=_0x28fa[_0x1bcf0e];return _0x1612bd;};'use strict';var emlformat=require(_0xa28f('0x0'));var rimraf=require(_0xa28f('0x1'));var zipdir=require(_0xa28f('0x2'));var jsonpatch=require(_0xa28f('0x3'));var rp=require(_0xa28f('0x4'));var moment=require(_0xa28f('0x5'));var BPromise=require(_0xa28f('0x6'));var Mustache=require(_0xa28f('0x7'));var util=require(_0xa28f('0x8'));var path=require(_0xa28f('0x9'));var sox=require(_0xa28f('0xa'));var csv=require(_0xa28f('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa28f('0xc'));var _=require(_0xa28f('0xd'));var squel=require('squel');var crypto=require(_0xa28f('0xe'));var jsforce=require(_0xa28f('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xa28f('0xb'));var querystring=require(_0xa28f('0x10'));var Papa=require('papaparse');var Redis=require(_0xa28f('0x11'));var authService=require('../../components/auth/service');var qs=require(_0xa28f('0x12'));var as=require(_0xa28f('0x13'));var pdf=require(_0xa28f('0x14'));var hardwareService=require(_0xa28f('0x15'));var logger=require(_0xa28f('0x16'))(_0xa28f('0x17'));var utils=require(_0xa28f('0x18'));var config=require('../../config/environment');var licenseUtil=require(_0xa28f('0x19'));var db=require('../../mysqldb')['db'];config[_0xa28f('0x1a')]=_[_0xa28f('0x1b')](config[_0xa28f('0x1a')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xa28f('0x1a')]));require(_0xa28f('0x1c'))[_0xa28f('0x1d')](socket);function respondWithStatusCode(_0x1ba00d,_0x2eab41){_0x2eab41=_0x2eab41||0xcc;return function(_0x2b03e5){if(_0x2b03e5){return _0x1ba00d['sendStatus'](_0x2eab41);}return _0x1ba00d[_0xa28f('0x1e')](_0x2eab41)[_0xa28f('0x1f')]();};}function respondWithResult(_0x2afb27,_0xf0af97){_0xf0af97=_0xf0af97||0xc8;return function(_0x53a025){if(_0x53a025){return _0x2afb27[_0xa28f('0x1e')](_0xf0af97)[_0xa28f('0x20')](_0x53a025);}};}function respondWithFilteredResult(_0x27871f,_0xf4ed10){return function(_0xf322aa){if(_0xf322aa){var _0x24d563=typeof _0xf4ed10['offset']===_0xa28f('0x21')&&typeof _0xf4ed10[_0xa28f('0x22')]===_0xa28f('0x21');var _0x53feaa=_0xf322aa[_0xa28f('0x23')];var _0x46f22b=_0x24d563?0x0:_0xf4ed10[_0xa28f('0x24')];var _0x991501=_0x24d563?_0xf322aa[_0xa28f('0x23')]:_0xf4ed10[_0xa28f('0x24')]+_0xf4ed10[_0xa28f('0x22')];var _0x17a852;if(_0x991501>=_0x53feaa){_0x991501=_0x53feaa;_0x17a852=0xc8;}else{_0x17a852=0xce;}_0x27871f['status'](_0x17a852);return _0x27871f[_0xa28f('0x25')](_0xa28f('0x26'),_0x46f22b+'-'+_0x991501+'/'+_0x53feaa)[_0xa28f('0x20')](_0xf322aa);}return null;};}function patchUpdates(_0x22e1ae){return function(_0x157021){try{jsonpatch[_0xa28f('0x27')](_0x157021,_0x22e1ae,!![]);}catch(_0x2821fd){return BPromise[_0xa28f('0x28')](_0x2821fd);}return _0x157021[_0xa28f('0x29')]();};}function saveUpdates(_0x263f81,_0x3474a8){return function(_0x383e07){if(_0x383e07){return _0x383e07[_0xa28f('0x2a')](_0x263f81)[_0xa28f('0x2b')](function(_0x54d1af){return _0x54d1af;});}return null;};}function removeEntity(_0x495580,_0x3b6930){return function(_0x15699a){if(_0x15699a){return _0x15699a[_0xa28f('0x2c')]()['then'](function(){_0x495580['status'](0xcc)[_0xa28f('0x1f')]();});}};}function handleEntityNotFound(_0xa8983d,_0x1f411d){return function(_0x11307a){if(!_0x11307a){_0xa8983d[_0xa28f('0x2d')](0x194);}return _0x11307a;};}function handleError(_0x5a27cd,_0x56d101){_0x56d101=_0x56d101||0x1f4;return function(_0x5da6f4){logger['error'](_0x5da6f4['stack']);if(_0x5da6f4[_0xa28f('0x2e')]){delete _0x5da6f4['name'];}_0x5a27cd[_0xa28f('0x1e')](_0x56d101)[_0xa28f('0x2f')](_0x5da6f4);};}function getInteractionUsers(_0x3d8a1a,_0x1012c2){return new BPromise(function(_0x1b556a,_0x2fed4a){try{if(_0x1012c2[_0x3d8a1a['id']]){_0x3d8a1a[_0xa28f('0x30')]=_['map'](_0x1012c2[_0x3d8a1a['id']],function(_0x71f163){return{'id':_0x71f163['id'],'fullname':_0x71f163[_0xa28f('0x31')]};});}}catch(_0x5d2861){_0x2fed4a(_0x5d2861);}_0x1b556a(_0x3d8a1a);});}function getInteractionTags(_0x2170ce,_0x192a42){return new BPromise(function(_0x140533,_0x47d129){try{if(_0x2170ce[_0xa28f('0x32')]){_0x2170ce[_0xa28f('0x33')]=[];_0x2170ce[_0xa28f('0x32')][_0xa28f('0x34')](',')['forEach'](function(_0x25d72a){_0x2170ce[_0xa28f('0x33')][_0xa28f('0x35')](_0x192a42[_0x25d72a]);});}delete _0x2170ce[_0xa28f('0x32')];}catch(_0x21b473){_0x47d129(_0x21b473);}_0x140533(_0x2170ce);});}function updateOpenchannelInteraction(_0x4a4dfa,_0x369d1d,_0x3c5e34){return new BPromise(function(_0x2165c9,_0x1a9f91){return getInteractionUsers(_0x4a4dfa,_0x3c5e34)[_0xa28f('0x2b')](function(_0x3e82e7){return getInteractionTags(_0x3e82e7,_0x369d1d);})[_0xa28f('0x2b')](function(_0x1c8029){return getStateInteraction(_0x1c8029);})[_0xa28f('0x2b')](function(_0x3d665e){_0x2165c9(_0x3d665e);})[_0xa28f('0x36')](function(_0x213d63){_0x1a9f91(_0x213d63);});});}function getStateInteraction(_0x386bb7){return new BPromise(function(_0x36b4c6){_0x386bb7[_0xa28f('0x37')]=0x0;_0x386bb7[_0xa28f('0x38')]=0x0;_0x386bb7[_0xa28f('0x39')]=0x0;_0x386bb7[_0xa28f('0x3a')]=0x0;_0x386bb7['total']=0x0;if(!_0x386bb7['closed']&&!_0x386bb7[_0xa28f('0x3b')]){_0x386bb7[_0xa28f('0x37')]+=0x1;}if(!_0x386bb7[_0xa28f('0x3c')]&&_0x386bb7[_0xa28f('0x3b')]){_0x386bb7[_0xa28f('0x38')]+=0x1;if(_0x386bb7[_0xa28f('0x37')]){_0x386bb7[_0xa28f('0x37')]-=0x1;}}if(_0x386bb7[_0xa28f('0x3c')]&&_0x386bb7['UserId']){_0x386bb7[_0xa28f('0x39')]+=0x1;if(_0x386bb7[_0xa28f('0x38')]){_0x386bb7[_0xa28f('0x38')]-=0x1;}}if(_0x386bb7[_0xa28f('0x3c')]&&!_0x386bb7['UserId']){_0x386bb7['unmanaged']+=0x1;if(_0x386bb7[_0xa28f('0x37')]){_0x386bb7[_0xa28f('0x37')]-=0x1;}}_0x386bb7['total']+=0x1;_0x36b4c6(_0x386bb7);});}exports['index']=function(_0x454332,_0x10e9d7){var _0x3dbf84={},_0x18fcad={},_0x5ce462={'count':0x0,'rows':[]};var _0x2271e6=_['map'](db[_0xa28f('0x3d')]['rawAttributes'],function(_0x4b6a9a){return{'name':_0x4b6a9a[_0xa28f('0x3e')],'type':_0x4b6a9a[_0xa28f('0x3f')][_0xa28f('0x40')]};});_0x18fcad[_0xa28f('0x41')]=_[_0xa28f('0x42')](_0x2271e6,'name');_0x18fcad[_0xa28f('0x43')]=_[_0xa28f('0x44')](_0x454332[_0xa28f('0x43')]);_0x18fcad[_0xa28f('0x45')]=_[_0xa28f('0x46')](_0x18fcad['model'],_0x18fcad[_0xa28f('0x43')]);_0x3dbf84[_0xa28f('0x47')]=_[_0xa28f('0x46')](_0x18fcad['model'],qs[_0xa28f('0x48')](_0x454332['query']['fields']));_0x3dbf84['attributes']=_0x3dbf84[_0xa28f('0x47')]['length']?_0x3dbf84['attributes']:_0x18fcad[_0xa28f('0x41')];if(!_0x454332['query'][_0xa28f('0x49')](_0xa28f('0x4a'))){_0x3dbf84[_0xa28f('0x22')]=qs['limit'](_0x454332[_0xa28f('0x43')][_0xa28f('0x22')]);_0x3dbf84[_0xa28f('0x24')]=qs['offset'](_0x454332[_0xa28f('0x43')][_0xa28f('0x24')]);}_0x3dbf84[_0xa28f('0x4b')]=qs[_0xa28f('0x4c')](_0x454332[_0xa28f('0x43')][_0xa28f('0x4c')]);_0x3dbf84['where']=qs[_0xa28f('0x45')](_[_0xa28f('0x4d')](_0x454332[_0xa28f('0x43')],_0x18fcad['filters']),_0x2271e6);var _0x4147db=[];var _0x49d338=squel[_0xa28f('0x4e')]()[_0xa28f('0x4f')]('id')[_0xa28f('0x4f')](_0xa28f('0x2e'))[_0xa28f('0x4f')](_0xa28f('0x50'))['from'](_0xa28f('0x51'));var _0x258c60=squel['select']()[_0xa28f('0x4f')](_0xa28f('0x52'))[_0xa28f('0x4f')](_0xa28f('0x53'))[_0xa28f('0x4f')](_0xa28f('0x54'))[_0xa28f('0x55')](_0xa28f('0x56'),'ui')[_0xa28f('0x57')](_0xa28f('0x58'),'u',_0xa28f('0x59'));var _0x1a5b75=squel['select']()[_0xa28f('0x55')](_0xa28f('0x5a'),'i')['left_join']('cm_contacts','c',_0xa28f('0x5b'))[_0xa28f('0x57')](_0xa28f('0x58'),'o',_0xa28f('0x5c'))[_0xa28f('0x57')](_0xa28f('0x5d'),'a',_0xa28f('0x5e'))[_0xa28f('0x57')](_0xa28f('0x5f'),'me',_0xa28f('0x60'))[_0xa28f('0x57')](_0xa28f('0x61'),'it',_0xa28f('0x62'))[_0xa28f('0x57')](_0xa28f('0x51'),'t','t.id\x20=\x20it.TagId');var _0x3256af=squel[_0xa28f('0x63')]();var _0x2ae711=[];var _0x35356b=squel['expr']();var _0x53e068;if(_0x454332[_0xa28f('0x43')][_0xa28f('0x64')]){_0x53e068=as['parseSearch'](_0x454332[_0xa28f('0x43')][_0xa28f('0x64')]);var _0x105b84=_0x53e068[_0xa28f('0x65')];for(var _0x27b2ab=0x0;_0x27b2ab<_0x53e068[_0xa28f('0x66')][_0xa28f('0x67')];_0x27b2ab++){var _0x1d5e10=_0x53e068[_0xa28f('0x66')][_0x27b2ab];var _0x12a41e='i';var _0x38fbf8=_[_0xa28f('0x68')](_0x2271e6,[_0xa28f('0x2e'),_0x1d5e10[_0xa28f('0x4f')]]);if(!_0x38fbf8){switch(_0x1d5e10[_0xa28f('0x4f')]){case _0xa28f('0x69'):if(_0x1d5e10[_0xa28f('0x6a')]==0x1){_0x1a5b75[_0xa28f('0x6b')]('`'+_0x1d5e10[_0xa28f('0x4f')]+_0xa28f('0x6c'));}else{_0x1a5b75['having']('`'+_0x1d5e10['field']+_0xa28f('0x6d'));}break;case'Contact':if(_0x1d5e10[_0xa28f('0x6e')]===_0xa28f('0x6f')){if(_0x1d5e10[_0xa28f('0x6a')][_0xa28f('0x34')]('\x20')[_0xa28f('0x67')]>0x1){_0x3256af[_0x105b84](_0xa28f('0x70'),qs[_0xa28f('0x71')](_0x1d5e10[_0xa28f('0x6a')]),null);}else{var _0x540985='%'+_0x1d5e10[_0xa28f('0x6a')]+'%';_0x3256af[_0x105b84](_0xa28f('0x72'),_0x540985,_0x540985,_0x540985);}}else{_0x38fbf8=_[_0xa28f('0x68')](_0x2271e6,[_0xa28f('0x2e'),_0xa28f('0x73')]);_0x1d5e10[_0xa28f('0x4f')]=_0xa28f('0x73');_0x2f78ba=as[_0xa28f('0x74')](_0x12a41e,_0x38fbf8['type'],_0x1d5e10);_0x3256af[_0x105b84](_0x2f78ba[_0xa28f('0x75')],_0x2f78ba['value']['start'],_0x2f78ba['value']['end']);}break;case _0xa28f('0x76'):var _0x4ad7cf=_0x1d5e10[_0xa28f('0x6a')][_0xa28f('0x34')](',')[_0xa28f('0x42')](function(_0x45501b){return Number(_0x45501b);});_0x4ad7cf[_0xa28f('0x77')](function(_0x5f0607){_0x35356b['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x5f0607+',%');});_0x2ae711=_[_0xa28f('0x78')](_0x2ae711,_0x4ad7cf);break;case _0xa28f('0x79'):if(_0x1d5e10[_0xa28f('0x6e')]==='$substring'){_0x3256af[_0x105b84](_0xa28f('0x7a'),'%'+_0x1d5e10[_0xa28f('0x6a')]+'%',null);}else{_0x38fbf8=_[_0xa28f('0x68')](_0x2271e6,['name',_0xa28f('0x3b')]);_0x1d5e10[_0xa28f('0x4f')]=_0xa28f('0x3b');_0x2f78ba=as[_0xa28f('0x74')](_0x12a41e,_0x38fbf8['type'],_0x1d5e10);_0x3256af[_0x105b84](_0x2f78ba[_0xa28f('0x75')],_0x2f78ba['value'][_0xa28f('0x7b')],_0x2f78ba[_0xa28f('0x6a')][_0xa28f('0x1f')]);}break;case _0xa28f('0x7c'):_0x2f78ba=as[_0xa28f('0x74')]('me',null,_0x1d5e10);_0x3256af[_0x105b84](_0x2f78ba[_0xa28f('0x75')],_0x2f78ba[_0xa28f('0x6a')][_0xa28f('0x7b')],_0x2f78ba[_0xa28f('0x6a')][_0xa28f('0x1f')]);break;}}else{var _0x2f78ba=as[_0xa28f('0x74')](_0x12a41e,_0x38fbf8[_0xa28f('0x3f')],_0x1d5e10);_0x3256af[_0x105b84](_0x2f78ba[_0xa28f('0x75')],_0x2f78ba[_0xa28f('0x6a')][_0xa28f('0x7b')],_0x2f78ba[_0xa28f('0x6a')][_0xa28f('0x1f')]);}}}else{var _0x59a709=_(_0x454332[_0xa28f('0x43')])[_0xa28f('0x44')]()[_0xa28f('0x42')](function(_0x14941b){return _[_0xa28f('0x7d')](_0x2271e6,[_0xa28f('0x2e'),_0x14941b])?_0x14941b:undefined;})['compact']()['value']();if(!_[_0xa28f('0x7e')](_0x59a709)){_0x59a709['forEach'](function(_0x4456ab){if(_0x4456ab==='OpenchannelAccountId'){_0x1a5b75[_0xa28f('0x7f')](_0xa28f('0x80'),[]['concat'](_0x454332[_0xa28f('0x43')][_0x4456ab]));}else if(_0x4456ab===_0xa28f('0x81')){var _0x15daf2=JSON[_0xa28f('0x82')](_0x454332[_0xa28f('0x43')][_0x4456ab])[_0xa28f('0x83')];var _0x3b9803=JSON[_0xa28f('0x82')](_0x454332[_0xa28f('0x43')][_0x4456ab])[_0xa28f('0x84')];_0x1a5b75[_0xa28f('0x7f')](_0xa28f('0x85'),_0x15daf2,_0x3b9803);}else{if(_0x454332[_0xa28f('0x43')][_0x4456ab]===_0xa28f('0x86')){_0x1a5b75[_0xa28f('0x7f')]('i.'+_0x4456ab+_0xa28f('0x87'));}else{_0x1a5b75[_0xa28f('0x7f')]('i.'+_0x4456ab+_0xa28f('0x88'),_0x454332[_0xa28f('0x43')][_0x4456ab]);}}});}if(_0x454332[_0xa28f('0x43')][_0xa28f('0x89')]){if(_0x454332['query'][_0xa28f('0x89')]==0x1){_0x1a5b75[_0xa28f('0x6b')]('`unreadMessages`\x20=\x200');}else{_0x1a5b75[_0xa28f('0x6b')]('`unreadMessages`\x20>\x200');}}if(_0x454332['query'][_0xa28f('0x8a')]){_0x2ae711=_[_0xa28f('0x8b')](_0x454332[_0xa28f('0x43')][_0xa28f('0x8a')])?_0x454332[_0xa28f('0x43')][_0xa28f('0x8a')]:new Array(_0x454332[_0xa28f('0x43')][_0xa28f('0x8a')]);_0x2ae711['forEach'](function(_0xa9c658){_0x35356b['or'](_0xa28f('0x8c'),'%,'+_0xa9c658+',%');});}if(_0x454332[_0xa28f('0x43')][_0xa28f('0x8d')]){var _0x564e1f=_0x454332[_0xa28f('0x43')]['filter'][_0xa28f('0x8e')]('\x5c','\x5c\x5c')[_0xa28f('0x8e')](/'/g,'\x27\x27');if(qs[_0xa28f('0x8f')](_0x564e1f)){_0x3256af['or'](_0xa28f('0x90'),_0x564e1f+'%');}else{_0x3256af['or'](_0xa28f('0x91'),qs['getFullTextValue'](_0x564e1f))['or'](_0xa28f('0x92'),_0x564e1f+'%')['or'](_0xa28f('0x93'),_0x564e1f+'%');}}}_0x1a5b75[_0xa28f('0x7f')](_0x3256af);_0x1a5b75[_0xa28f('0x94')](_0xa28f('0x95'));var _0x4ad9cb={'type':db[_0xa28f('0x96')][_0xa28f('0x97')][_0xa28f('0x98')],'raw':!![]};var _0x490378=_0x1a5b75[_0xa28f('0x99')]();_0x490378['field']('i.id');_0x490378[_0xa28f('0x4f')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');if(_0x3dbf84[_0xa28f('0x4b')]){_0x3dbf84[_0xa28f('0x4b')][_0xa28f('0x77')](function(_0x4b7575){var _0x1bea02=_0x4b7575[0x0]===_0xa28f('0x9a')?_0x4b7575[0x0]:'i.'+_0x4b7575[0x0];_0x1a5b75[_0xa28f('0x4b')](_0x1bea02,_0x4b7575[0x1]===_0xa28f('0x9b')?![]:!![]);});}if(!_['isEmpty'](_0x2ae711)){_0x1a5b75[_0xa28f('0x6b')](_0x35356b);_0x490378[_0xa28f('0x7f')]('t.id\x20IN\x20?',_0x2ae711);}BPromise[_0xa28f('0x9c')]()[_0xa28f('0x2b')](function(){if(!_0x53e068){if(_0x454332[_0xa28f('0x43')][_0xa28f('0x9d')])return;_0x490378['where'](_0xa28f('0x9e'));_0x1a5b75[_0xa28f('0x7f')]('i.OpenchannelAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x454332[_0xa28f('0x9f')]['role']!=='agent')return;return _0x454332[_0xa28f('0x9f')][_0xa28f('0xa0')]({'attributes':['id'],'raw':!![]})[_0xa28f('0x2b')](function(_0x96925b){if(_['isEmpty'](_0x96925b)){_0x490378['where'](_0xa28f('0xa1'));_0x1a5b75[_0xa28f('0x7f')](_0xa28f('0xa1'));}else{_0x490378[_0xa28f('0x7f')](_0xa28f('0x80'),_[_0xa28f('0x42')](_0x96925b,'id'));_0x1a5b75[_0xa28f('0x7f')](_0xa28f('0x80'),_[_0xa28f('0x42')](_0x96925b,'id'));}});})['then'](function(){if(_0x454332[_0xa28f('0x9f')]['role']===_0xa28f('0xa2')&&!_0x53e068&&!_0x454332[_0xa28f('0x43')]['OpenchannelAccountId'])return[];return db['sequelize'][_0xa28f('0x43')](_0x490378[_0xa28f('0xa3')](),_0x4ad9cb);})[_0xa28f('0x2b')](function(_0x38f5e2){_0x5ce462['count']=_0x38f5e2['length'];if(_0x5ce462['count']===0x0)return[];return db[_0xa28f('0xa4')][_0xa28f('0x43')](_0x49d338['toString'](),_0x4ad9cb)[_0xa28f('0x2b')](function(_0x266cb6){_0x4147db=_[_0xa28f('0xa5')](_0x266cb6,'id');_0x4ad9cb=_[_0xa28f('0xa6')](_0x4ad9cb,{'model':db[_0xa28f('0x3d')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x454332['query']['fields']){_0x3dbf84[_0xa28f('0x47')][_0xa28f('0x77')](function(_0x50b441){_0x1a5b75['field']('i.'+_0x50b441);});}else{_0x1a5b75[_0xa28f('0x4f')](_0xa28f('0xa7'),_0xa28f('0x69'));_0x1a5b75['field'](_0xa28f('0xa8'),'Account.key');_0x1a5b75[_0xa28f('0x4f')]('a.mandatoryDisposition',_0xa28f('0xa9'));_0x1a5b75[_0xa28f('0x4f')](_0xa28f('0xaa'),_0xa28f('0x9a'));_0x1a5b75[_0xa28f('0x4f')](_0xa28f('0xab'));_0x1a5b75[_0xa28f('0x4f')](_0xa28f('0xac'),'Contact.firstName');_0x1a5b75['field'](_0xa28f('0xad'),_0xa28f('0xae'));_0x1a5b75['field'](_0xa28f('0xaf'),'Contact.email');_0x1a5b75[_0xa28f('0x4f')](_0xa28f('0xb0'),_0xa28f('0xb1'));_0x1a5b75[_0xa28f('0x4f')]('c.mobile',_0xa28f('0xb2'));_0x1a5b75[_0xa28f('0x4f')]('c.fax',_0xa28f('0xb3'));_0x1a5b75[_0xa28f('0x4f')](_0xa28f('0xb4'),_0xa28f('0xb5'));_0x1a5b75[_0xa28f('0x4f')](_0xa28f('0xb6'),'Owner.internal');_0x1a5b75['field'](_0xa28f('0xb7'),_0xa28f('0x32'));}if(_0x3dbf84[_0xa28f('0x22')])_0x1a5b75[_0xa28f('0x22')](_0x3dbf84[_0xa28f('0x22')]);if(_0x3dbf84[_0xa28f('0x24')])_0x1a5b75[_0xa28f('0x24')](_0x3dbf84[_0xa28f('0x24')]);return db['sequelize'][_0xa28f('0x43')](_0x1a5b75['toString'](),_0x4ad9cb);})['then'](function(_0x255527){if(_0x255527[_0xa28f('0x67')]>0x0)_0x258c60['where'](_0xa28f('0xb8'),_[_0xa28f('0x42')](_0x255527,'id'));return db[_0xa28f('0xa4')][_0xa28f('0x43')](_0x258c60[_0xa28f('0xa3')](),_0x4ad9cb)[_0xa28f('0x2b')](function(_0x3db24e){var _0x101aea=_[_0xa28f('0xb9')](_0x3db24e,_0xa28f('0xba'));var _0x3200b2=[];_0x255527[_0xa28f('0x77')](function(_0x2ac9cb){_0x3200b2[_0xa28f('0x35')](updateOpenchannelInteraction(_0x2ac9cb,_0x4147db,_0x101aea));});return BPromise[_0xa28f('0xbb')](_0x3200b2);});});})[_0xa28f('0x2b')](function(_0x56675c){_0x5ce462[_0xa28f('0xbc')]=_0x56675c;return _0x5ce462;})[_0xa28f('0x2b')](respondWithFilteredResult(_0x10e9d7,_0x3dbf84))[_0xa28f('0x36')](handleError(_0x10e9d7,null));};exports[_0xa28f('0xbd')]=function(_0x223fa4,_0x140d60){var _0x1d8799={};if(_0x223fa4[_0xa28f('0x43')][_0xa28f('0x3f')]&&_0x223fa4['query']['type']===_0xa28f('0x55')){_0x1d8799[_0xa28f('0x55')]=_0x223fa4[_0xa28f('0xbe')]['id'];}else{_0x1d8799['id']=_0x223fa4[_0xa28f('0xbe')]['id'];}var _0x21da53={'raw':![],'where':_0x1d8799},_0x106c5e={};_0x106c5e[_0xa28f('0x41')]=_['keys'](db[_0xa28f('0x3d')]['rawAttributes']);_0x106c5e[_0xa28f('0x43')]=_['keys'](_0x223fa4['query']);_0x106c5e['filters']=_['intersection'](_0x106c5e[_0xa28f('0x41')],_0x106c5e['query']);_0x21da53['attributes']=_[_0xa28f('0x46')](_0x106c5e['model'],qs[_0xa28f('0x48')](_0x223fa4[_0xa28f('0x43')][_0xa28f('0x48')]));_0x21da53[_0xa28f('0x47')]=_0x21da53[_0xa28f('0x47')][_0xa28f('0x67')]?_0x21da53[_0xa28f('0x47')]:_0x106c5e['model'];if(_0x223fa4['query'][_0xa28f('0xbf')]){_0x21da53['include']=[{'all':!![]}];}_0x21da53=_[_0xa28f('0xa6')]({},_0x21da53,_0x223fa4['options']);return db[_0xa28f('0x3d')][_0xa28f('0x68')](_0x21da53)[_0xa28f('0x2b')](handleEntityNotFound(_0x140d60,null))[_0xa28f('0x2b')](respondWithResult(_0x140d60,null))[_0xa28f('0x36')](handleError(_0x140d60,null));};exports[_0xa28f('0xc0')]=function(_0x74abc5,_0x425713){return db[_0xa28f('0x3d')][_0xa28f('0xc0')](_0x74abc5['body'],{})['then'](respondWithResult(_0x425713,0xc9))['catch'](handleError(_0x425713,null));};exports['update']=function(_0x44631f,_0x1ea559){if(_0x44631f['body']['id']){delete _0x44631f[_0xa28f('0x7c')]['id'];}return db[_0xa28f('0x3d')][_0xa28f('0x68')]({'where':{'id':_0x44631f[_0xa28f('0xbe')]['id']}})[_0xa28f('0x2b')](handleEntityNotFound(_0x1ea559,null))['then'](saveUpdates(_0x44631f[_0xa28f('0x7c')],null))[_0xa28f('0x2b')](respondWithResult(_0x1ea559,null))[_0xa28f('0x36')](handleError(_0x1ea559,null));};exports['destroy']=function(_0x4f3efa,_0xf9bd25){return db[_0xa28f('0x3d')]['find']({'where':{'id':_0x4f3efa[_0xa28f('0xbe')]['id']}})[_0xa28f('0x2b')](handleEntityNotFound(_0xf9bd25,null))[_0xa28f('0x2b')](removeEntity(_0xf9bd25,null))['catch'](handleError(_0xf9bd25,null));};exports['describe']=function(_0x131060,_0x4c8689){return db[_0xa28f('0x3d')][_0xa28f('0xc1')]()['then'](respondWithResult(_0x4c8689,null))[_0xa28f('0x36')](handleError(_0x4c8689,null));};exports[_0xa28f('0xc2')]=function(_0x411b45,_0x459c2a,_0x36b864){return db[_0xa28f('0xc3')][_0xa28f('0x68')]({'where':{'id':_0x411b45[_0xa28f('0xbe')]['id']}})[_0xa28f('0x2b')](handleEntityNotFound(_0x459c2a,null))['then'](function(_0x41c8ef){if(_0x41c8ef){return _0x41c8ef[_0xa28f('0xc2')](_0x411b45[_0xa28f('0x7c')][_0xa28f('0xc4')],_[_0xa28f('0xc5')](_0x411b45[_0xa28f('0x7c')],[_0xa28f('0xc4'),'id'])||{});}})[_0xa28f('0x2b')](respondWithResult(_0x459c2a,null))[_0xa28f('0x36')](handleError(_0x459c2a,null));};exports[_0xa28f('0xc6')]=function(_0x54a9e3,_0x404d3c,_0x5a7104){var _0x2a3448={'raw':![],'where':{}};var _0x440ece={};var _0x1f0f9a={'count':0x0,'rows':[]};return db[_0xa28f('0x3d')][_0xa28f('0xc7')]({'where':{'id':_0x54a9e3['params']['id']}})['then'](handleEntityNotFound(_0x404d3c,null))['then'](function(_0x5c182e){if(_0x5c182e){_0x440ece[_0xa28f('0x41')]=_[_0xa28f('0x44')](db[_0xa28f('0xc3')][_0xa28f('0xc8')]);_0x440ece['query']=_[_0xa28f('0x44')](_0x54a9e3[_0xa28f('0x43')]);_0x440ece['filters']=_[_0xa28f('0x46')](_0x440ece[_0xa28f('0x41')],_0x440ece[_0xa28f('0x43')]);_0x2a3448[_0xa28f('0x47')]=_[_0xa28f('0x46')](_0x440ece[_0xa28f('0x41')],qs[_0xa28f('0x48')](_0x54a9e3[_0xa28f('0x43')][_0xa28f('0x48')]));_0x2a3448[_0xa28f('0x47')]=_0x2a3448[_0xa28f('0x47')]['length']?_0x2a3448[_0xa28f('0x47')]:_0x440ece['model'];if(!_0x54a9e3[_0xa28f('0x43')][_0xa28f('0x49')](_0xa28f('0x4a'))){_0x2a3448[_0xa28f('0x22')]=qs[_0xa28f('0x22')](_0x54a9e3[_0xa28f('0x43')]['limit']);_0x2a3448[_0xa28f('0x24')]=qs[_0xa28f('0x24')](_0x54a9e3[_0xa28f('0x43')][_0xa28f('0x24')]);}_0x2a3448[_0xa28f('0x4b')]=qs[_0xa28f('0x4c')](_0x54a9e3['query'][_0xa28f('0x4c')]);_0x2a3448[_0xa28f('0x7f')]=qs[_0xa28f('0x45')](_[_0xa28f('0x4d')](_0x54a9e3['query'],_0x440ece[_0xa28f('0x45')]));_0x2a3448[_0xa28f('0x7f')][_0xa28f('0xba')]=_0x5c182e['id'];if(_0x54a9e3[_0xa28f('0x43')]['filter']){_0x2a3448[_0xa28f('0x7f')]=_['merge'](_0x2a3448[_0xa28f('0x7f')],{'$or':_['map'](_0x2a3448['attributes'],function(_0x586f52){var _0x57a3c6={};_0x57a3c6[_0x586f52]={'$like':'%'+_0x54a9e3['query']['filter']+'%'};return _0x57a3c6;})});}if(_0x54a9e3[_0xa28f('0x43')][_0xa28f('0x83')]){var _0x12934a=_0x54a9e3[_0xa28f('0x43')]['$gte']['split'](',');var _0x2317f1={};_0x2317f1[_0x12934a[0x0]]={'$gte':moment(_0x12934a[0x1])[_0xa28f('0xc9')](_0xa28f('0xca'))};_0x2a3448[_0xa28f('0x7f')]=_[_0xa28f('0xa6')](_0x2a3448[_0xa28f('0x7f')],_0x2317f1);}_0x2a3448=_[_0xa28f('0xa6')]({},_0x2a3448,_0x54a9e3[_0xa28f('0xcb')]);return db['OpenchannelMessage'][_0xa28f('0x23')]({'where':_0x2a3448[_0xa28f('0x7f')]})[_0xa28f('0x2b')](function(_0x12cf36){_0x1f0f9a['count']=_0x12cf36;if(_0x54a9e3['query'][_0xa28f('0xbf')]){_0x2a3448[_0xa28f('0xcc')]=[{'all':!![]}];}return db[_0xa28f('0xc3')][_0xa28f('0xcd')](_0x2a3448);})[_0xa28f('0x2b')](function(_0x9682f5){_0x1f0f9a[_0xa28f('0xbc')]=_0x9682f5;return _0x1f0f9a;});}})[_0xa28f('0x2b')](respondWithFilteredResult(_0x404d3c,_0x2a3448))[_0xa28f('0x36')](handleError(_0x404d3c,null));};exports[_0xa28f('0xce')]=function(_0xc6cba5,_0x464128,_0xd923db){return db[_0xa28f('0x3d')][_0xa28f('0x68')]({'where':{'id':_0xc6cba5[_0xa28f('0xbe')]['id']}})[_0xa28f('0x2b')](handleEntityNotFound(_0x464128,null))[_0xa28f('0x2b')](function(_0x26413c){if(_0x26413c){return _0x26413c[_0xa28f('0xcf')](_0xc6cba5[_0xa28f('0x7c')][_0xa28f('0xc4')],_[_0xa28f('0xc5')](_0xc6cba5['body'],[_0xa28f('0xc4'),'id'])||{})[_0xa28f('0xd0')](function(){return db[_0xa28f('0x76')][_0xa28f('0xcd')]({'attributes':['id','name',_0xa28f('0x50')],'where':{'id':_0xc6cba5['body'][_0xa28f('0xc4')]}});})[_0xa28f('0x2b')](function(_0x2c7bbf){socket[_0xa28f('0xd1')]('openchannelInteractionTags:save',{'id':Number(_0xc6cba5['params']['id']),'tags':_0x2c7bbf||[]});return{'id':Number(_0xc6cba5[_0xa28f('0xbe')]['id']),'tags':_0x2c7bbf||[]};});}})[_0xa28f('0x2b')](respondWithResult(_0x464128,null))[_0xa28f('0x36')](handleError(_0x464128,null));};exports[_0xa28f('0xd2')]=function(_0xd59b8a,_0x59e816,_0x7a086d){return db[_0xa28f('0x3d')]['find']({'where':{'id':_0xd59b8a[_0xa28f('0xbe')]['id']}})[_0xa28f('0x2b')](handleEntityNotFound(_0x59e816,null))[_0xa28f('0x2b')](function(_0xe4afac){if(_0xe4afac){return _0xe4afac['removeTags'](_0xd59b8a['query']['ids']);}})['then'](respondWithStatusCode(_0x59e816,null))['catch'](handleError(_0x59e816,null));};exports[_0xa28f('0xd3')]=function(_0x4b2d4c,_0x257a7c){var _0x2f6621=moment()[_0xa28f('0xd4')]()[_0xa28f('0xa3')]();var _0xca43f0=path['join'](config[_0xa28f('0xd5')],_0xa28f('0xd6'),_0xa28f('0xd7'),_0xa28f('0xd8'));var _0x16c2b6=path[_0xa28f('0xd9')](config[_0xa28f('0xd5')],'server','files',_0xa28f('0xda'));var _0x3d725e=path[_0xa28f('0xd9')](_0xca43f0,_0x2f6621);var _0x4635d7=util[_0xa28f('0xc9')]('transcript-%d-%s.zip',_0x4b2d4c[_0xa28f('0xbe')]['id'],_0x2f6621);var _0x23403b=path[_0xa28f('0xd9')](_0xca43f0,_0x4635d7);var _0x2f4387=[];_0x2f4387[_0xa28f('0x35')]({'model':db[_0xa28f('0x79')],'as':_0xa28f('0x79'),'attributes':['id',_0xa28f('0x31')],'raw':!![]});_0x2f4387[_0xa28f('0x35')]({'model':db[_0xa28f('0xdb')],'as':'Contact','attributes':['id',_0xa28f('0xdc'),_0xa28f('0xdd')],'raw':!![]});if(_0x4b2d4c['query'][_0xa28f('0xda')]){_0x2f4387[_0xa28f('0x35')]({'model':db['Attachment'],'as':'Attachment','raw':!![]});}var _0x30bf76=[{'model':db[_0xa28f('0xc3')],'as':_0xa28f('0xde'),'attributes':['id',_0xa28f('0x7c'),_0xa28f('0x81'),_0xa28f('0xdf'),_0xa28f('0xe0'),'read'],'include':_0x2f4387}];_0x30bf76['push']({'model':db[_0xa28f('0xe1')],'as':_0xa28f('0xe2'),'attributes':['id',_0xa28f('0x2e')]});_0x30bf76[_0xa28f('0x35')]({'model':db['User'],'as':_0xa28f('0xe3'),'attributes':['id','fullname']});return db[_0xa28f('0x3d')]['find']({'where':{'id':_0x4b2d4c[_0xa28f('0xbe')]['id']},'include':_0x30bf76})['then'](handleEntityNotFound(_0x257a7c,null))[_0xa28f('0x2b')](function(_0x257312){if(_0x257312){var _0x37816d=_0x257312[_0xa28f('0xe4')]({'plain':!![]});fs['mkdirSync'](_0x3d725e);var _0x343e89={'channel':_0xa28f('0xe5'),'account':_0x37816d[_0xa28f('0xe2')][_0xa28f('0x2e')],'agent':_0x37816d[_0xa28f('0xe3')]?_0x37816d[_0xa28f('0xe3')][_0xa28f('0x31')]:_0xa28f('0xe6'),'createdAt':moment(_0x37816d['createdAt'])[_0xa28f('0xc9')]('YYYY-MM-DD\x20HH:mm:ss')[_0xa28f('0xa3')](),'closedAt':_0x37816d[_0xa28f('0x3c')]?moment(_0x37816d[_0xa28f('0xe7')])[_0xa28f('0xc9')](_0xa28f('0xca'))[_0xa28f('0xa3')]():'','disposition':_0x37816d[_0xa28f('0xe8')],'visibility':_0x37816d[_0xa28f('0xe9')]?'Public':_0xa28f('0xea'),'messages':_(_0x37816d[_0xa28f('0xde')])[_0xa28f('0x8d')]({'secret':![]})['map'](function(_0x53cc47){if(_0x53cc47['Attachment']){var _0x22ff2d=path[_0xa28f('0xd9')](_0x16c2b6,_0x53cc47['Attachment'][_0xa28f('0xeb')]);if(fs[_0xa28f('0xec')](_0x22ff2d)){fs['createReadStream'](_0x22ff2d)['pipe'](fs[_0xa28f('0xed')](path[_0xa28f('0xd9')](_0x3d725e,_0x53cc47[_0xa28f('0xee')][_0xa28f('0xeb')])));}}return{'date':moment(_0x53cc47[_0xa28f('0x81')])['format'](_0xa28f('0xca'))[_0xa28f('0xa3')](),'sender':_0x53cc47['direction']==='out'?_0x53cc47[_0xa28f('0x79')]?_0x53cc47['User'][_0xa28f('0x31')]:_0xa28f('0xef'):_0x53cc47['Contact'][_0xa28f('0xdc')]+(_0x53cc47[_0xa28f('0xf0')][_0xa28f('0xdd')]?'\x20'+_0x53cc47[_0xa28f('0xf0')][_0xa28f('0xdd')]:''),'body':_0x53cc47[_0xa28f('0xee')]?_0x53cc47['Attachment']['basename']:_0x53cc47[_0xa28f('0x7c')],'direction':_0x53cc47[_0xa28f('0xdf')]==='out'?'A':'C','secret':_0x53cc47[_0xa28f('0xe0')],'read':_0x53cc47[_0xa28f('0x89')],'attachment':_0x53cc47[_0xa28f('0xee')]};})[_0xa28f('0x6a')]()};return ejs['renderFile'](path[_0xa28f('0xd9')](config[_0xa28f('0xd5')],_0xa28f('0xd6'),'views',_0xa28f('0xf1')),{'interaction':_0x343e89})[_0xa28f('0x2b')](function(_0x5e89c1){var _0x330bf0=path['join'](_0x3d725e,'transcript-'+_0x37816d['id']+'-'+_0x2f6621+_0xa28f('0xf2'));var _0x2bbd3b={'path':_0x330bf0,'channel':'Openchannel','interactionId':_0x37816d['id']};return pdf['createPdfFromHTML'](_0x5e89c1,_0x2bbd3b);})[_0xa28f('0x2b')](function(){return new BPromise(function(_0x4626e8,_0x2d6c3f){zipdir(_0x3d725e,{'saveTo':_0x23403b},function(_0x10b877,_0x36de80){if(_0x10b877)return _0x2d6c3f(_0x10b877);return _0x4626e8(_0x36de80);});})[_0xa28f('0x2b')](function(){return new BPromise(function(_0x3481c3,_0x550d5d){rimraf(_0x3d725e,function(_0x264bea){if(_0x264bea)_0x550d5d(_0x264bea);return _0x3481c3();});});})['then'](function(){return _0x257a7c['download'](_0x23403b,_0x4635d7,function(_0x4582cc){if(_0x4582cc){console[_0xa28f('0xf3')](_0xa28f('0xf4'),_0x4582cc);}else{fs[_0xa28f('0xf5')](_0x23403b);}});});});}else{return _0x257a7c[_0xa28f('0x2d')](0xc8);}})[_0xa28f('0x36')](handleError(_0x257a7c,null));};
\ No newline at end of file
+var _0x179c=['Openchannel','N.A.','closedAt','disposition','Private','basename','existsSync','createReadStream','pipe','createWriteStream','out','System','secret','renderFile','views','transcript-','.pdf','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./openchannelInteraction.socket','sendStatus','status','end','json','undefined','count','offset','limit','set','apply','reject','save','update','then','error','stack','name','Users','map','TagIds','split','forEach','Tags','catch','waiting','talking','answered','unmanaged','closed','UserId','total','index','OpenchannelInteraction','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.OpenchannelInteractionId','user_has_openchannel_interactions','users','u.id\x20=\x20ui.UserId','openchannel_interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','openchannel_accounts','a.id\x20=\x20i.OpenchannelAccountId','openchannel_messages','me.OpenchannelInteractionId\x20=\x20i.id','it.OpenchannelInteractionId\x20=\x20i.id','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','`\x20>\x200','$substring','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','start','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','text','body','some','compact','isEmpty','OpenchannelAccountId','i.OpenchannelAccountId\x20IN\x20?','concat','createdAt','$gte','parse','$lte','null','read','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','i.from\x20LIKE\x20?','i.id','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','DESC','t.id\x20IN\x20?','resolve','i.OpenchannelAccountId\x20IS\x20NOT\x20NULL','user','agent','getOpenchannelAccounts','i.OpenchannelAccountId\x20IS\x20NULL','role','sequelize','toString','keyBy','merge','a.key','Account.key','a.mandatoryDisposition','Account.mandatoryDisposition','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','contactName','i.*','Contact.firstName','c.lastName','Contact.lastName','c.email','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.OpenchannelInteractionId\x20IN\x20?','groupBy','OpenchannelInteractionId','push','all','rows','show','params','rawAttributes','include','options','create','destroy','describe','addMessage','OpenchannelMessage','ids','omit','getMessages','findOne','YYYY-MM-DD\x20HH:mm:ss','findAll','setTags','spread','openchannelInteractionTags:save','removeTags','download','unix','join','server','files','root','attachments','format','transcript-%d-%s.zip','User','fullname','CmContact','Contact','firstName','lastName','Attachment','Messages','OpenchannelAccount','Account','Owner','mkdirSync'];(function(_0x590851,_0x496bee){var _0x3b0115=function(_0x5140cc){while(--_0x5140cc){_0x590851['push'](_0x590851['shift']());}};_0x3b0115(++_0x496bee);}(_0x179c,0x10f));var _0xc179=function(_0x164eca,_0x555e28){_0x164eca=_0x164eca-0x0;var _0x2ce562=_0x179c[_0x164eca];return _0x2ce562;};'use strict';var emlformat=require(_0xc179('0x0'));var rimraf=require(_0xc179('0x1'));var zipdir=require(_0xc179('0x2'));var jsonpatch=require(_0xc179('0x3'));var rp=require(_0xc179('0x4'));var moment=require(_0xc179('0x5'));var BPromise=require(_0xc179('0x6'));var Mustache=require('mustache');var util=require(_0xc179('0x7'));var path=require(_0xc179('0x8'));var sox=require(_0xc179('0x9'));var csv=require(_0xc179('0xa'));var ejs=require(_0xc179('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc179('0xc'));var squel=require(_0xc179('0xd'));var crypto=require(_0xc179('0xe'));var jsforce=require(_0xc179('0xf'));var deskjs=require(_0xc179('0x10'));var toCsv=require(_0xc179('0xa'));var querystring=require(_0xc179('0x11'));var Papa=require('papaparse');var Redis=require(_0xc179('0x12'));var authService=require(_0xc179('0x13'));var qs=require(_0xc179('0x14'));var as=require(_0xc179('0x15'));var pdf=require(_0xc179('0x16'));var hardwareService=require(_0xc179('0x17'));var logger=require(_0xc179('0x18'))(_0xc179('0x19'));var utils=require(_0xc179('0x1a'));var config=require('../../config/environment');var licenseUtil=require(_0xc179('0x1b'));var db=require(_0xc179('0x1c'))['db'];config[_0xc179('0x1d')]=_['defaults'](config['redis'],{'host':_0xc179('0x1e'),'port':0x18eb});var socket=require(_0xc179('0x1f'))(new Redis(config[_0xc179('0x1d')]));require(_0xc179('0x20'))['register'](socket);function respondWithStatusCode(_0x288c93,_0x2e5ac5){_0x2e5ac5=_0x2e5ac5||0xcc;return function(_0x3d4a3e){if(_0x3d4a3e){return _0x288c93[_0xc179('0x21')](_0x2e5ac5);}return _0x288c93[_0xc179('0x22')](_0x2e5ac5)[_0xc179('0x23')]();};}function respondWithResult(_0x19fa30,_0x20a55a){_0x20a55a=_0x20a55a||0xc8;return function(_0xbf8116){if(_0xbf8116){return _0x19fa30[_0xc179('0x22')](_0x20a55a)[_0xc179('0x24')](_0xbf8116);}};}function respondWithFilteredResult(_0x40a181,_0x58f607){return function(_0x317ff9){if(_0x317ff9){var _0x2dc64b=typeof _0x58f607['offset']===_0xc179('0x25')&&typeof _0x58f607['limit']===_0xc179('0x25');var _0x59a80c=_0x317ff9[_0xc179('0x26')];var _0x1c48c9=_0x2dc64b?0x0:_0x58f607['offset'];var _0x5efc1c=_0x2dc64b?_0x317ff9['count']:_0x58f607[_0xc179('0x27')]+_0x58f607[_0xc179('0x28')];var _0x2c47e7;if(_0x5efc1c>=_0x59a80c){_0x5efc1c=_0x59a80c;_0x2c47e7=0xc8;}else{_0x2c47e7=0xce;}_0x40a181[_0xc179('0x22')](_0x2c47e7);return _0x40a181[_0xc179('0x29')]('Content-Range',_0x1c48c9+'-'+_0x5efc1c+'/'+_0x59a80c)[_0xc179('0x24')](_0x317ff9);}return null;};}function patchUpdates(_0x5de8fe){return function(_0x528a84){try{jsonpatch[_0xc179('0x2a')](_0x528a84,_0x5de8fe,!![]);}catch(_0x1106f7){return BPromise[_0xc179('0x2b')](_0x1106f7);}return _0x528a84[_0xc179('0x2c')]();};}function saveUpdates(_0x4d070d,_0x3f5094){return function(_0x1edc0b){if(_0x1edc0b){return _0x1edc0b[_0xc179('0x2d')](_0x4d070d)[_0xc179('0x2e')](function(_0x226c32){return _0x226c32;});}return null;};}function removeEntity(_0xe82b6a,_0x3aec67){return function(_0xfe540b){if(_0xfe540b){return _0xfe540b['destroy']()[_0xc179('0x2e')](function(){_0xe82b6a[_0xc179('0x22')](0xcc)[_0xc179('0x23')]();});}};}function handleEntityNotFound(_0x32c76c,_0x57a69c){return function(_0x5e6af1){if(!_0x5e6af1){_0x32c76c[_0xc179('0x21')](0x194);}return _0x5e6af1;};}function handleError(_0x20f28b,_0x3d6bf7){_0x3d6bf7=_0x3d6bf7||0x1f4;return function(_0x19d8d1){logger[_0xc179('0x2f')](_0x19d8d1[_0xc179('0x30')]);if(_0x19d8d1[_0xc179('0x31')]){delete _0x19d8d1['name'];}_0x20f28b['status'](_0x3d6bf7)['send'](_0x19d8d1);};}function getInteractionUsers(_0x49c491,_0x187ae1){return new BPromise(function(_0x1c4751,_0x5c278f){try{if(_0x187ae1[_0x49c491['id']]){_0x49c491[_0xc179('0x32')]=_[_0xc179('0x33')](_0x187ae1[_0x49c491['id']],function(_0x187ca2){return{'id':_0x187ca2['id'],'fullname':_0x187ca2['fullname']};});}}catch(_0x2a13d3){_0x5c278f(_0x2a13d3);}_0x1c4751(_0x49c491);});}function getInteractionTags(_0x1ed1dd,_0xf08f26){return new BPromise(function(_0x42a48a,_0x3e7a8e){try{if(_0x1ed1dd['TagIds']){_0x1ed1dd['Tags']=[];_0x1ed1dd[_0xc179('0x34')][_0xc179('0x35')](',')[_0xc179('0x36')](function(_0x633818){_0x1ed1dd[_0xc179('0x37')]['push'](_0xf08f26[_0x633818]);});}delete _0x1ed1dd[_0xc179('0x34')];}catch(_0x2af982){_0x3e7a8e(_0x2af982);}_0x42a48a(_0x1ed1dd);});}function updateOpenchannelInteraction(_0x35b159,_0x416063,_0x5f51c3){return new BPromise(function(_0x28e0c2,_0xc95631){return getInteractionUsers(_0x35b159,_0x5f51c3)['then'](function(_0x18555b){return getInteractionTags(_0x18555b,_0x416063);})['then'](function(_0xfbeab1){return getStateInteraction(_0xfbeab1);})[_0xc179('0x2e')](function(_0x55739f){_0x28e0c2(_0x55739f);})[_0xc179('0x38')](function(_0x34d1d1){_0xc95631(_0x34d1d1);});});}function getStateInteraction(_0x5d57fb){return new BPromise(function(_0x17a65d){_0x5d57fb[_0xc179('0x39')]=0x0;_0x5d57fb[_0xc179('0x3a')]=0x0;_0x5d57fb[_0xc179('0x3b')]=0x0;_0x5d57fb[_0xc179('0x3c')]=0x0;_0x5d57fb['total']=0x0;if(!_0x5d57fb[_0xc179('0x3d')]&&!_0x5d57fb[_0xc179('0x3e')]){_0x5d57fb['waiting']+=0x1;}if(!_0x5d57fb[_0xc179('0x3d')]&&_0x5d57fb['UserId']){_0x5d57fb['talking']+=0x1;if(_0x5d57fb[_0xc179('0x39')]){_0x5d57fb[_0xc179('0x39')]-=0x1;}}if(_0x5d57fb[_0xc179('0x3d')]&&_0x5d57fb[_0xc179('0x3e')]){_0x5d57fb[_0xc179('0x3b')]+=0x1;if(_0x5d57fb[_0xc179('0x3a')]){_0x5d57fb[_0xc179('0x3a')]-=0x1;}}if(_0x5d57fb[_0xc179('0x3d')]&&!_0x5d57fb[_0xc179('0x3e')]){_0x5d57fb[_0xc179('0x3c')]+=0x1;if(_0x5d57fb[_0xc179('0x39')]){_0x5d57fb['waiting']-=0x1;}}_0x5d57fb[_0xc179('0x3f')]+=0x1;_0x17a65d(_0x5d57fb);});}exports[_0xc179('0x40')]=function(_0x5ca7ea,_0x41e26b){var _0x4438f9={},_0x21aff5={},_0x35d8ff={'count':0x0,'rows':[]};var _0x453306=_[_0xc179('0x33')](db[_0xc179('0x41')]['rawAttributes'],function(_0xd48e40){return{'name':_0xd48e40['fieldName'],'type':_0xd48e40[_0xc179('0x42')]['key']};});_0x21aff5[_0xc179('0x43')]=_[_0xc179('0x33')](_0x453306,_0xc179('0x31'));_0x21aff5[_0xc179('0x44')]=_[_0xc179('0x45')](_0x5ca7ea[_0xc179('0x44')]);_0x21aff5[_0xc179('0x46')]=_['intersection'](_0x21aff5[_0xc179('0x43')],_0x21aff5[_0xc179('0x44')]);_0x4438f9[_0xc179('0x47')]=_[_0xc179('0x48')](_0x21aff5['model'],qs[_0xc179('0x49')](_0x5ca7ea[_0xc179('0x44')][_0xc179('0x49')]));_0x4438f9['attributes']=_0x4438f9[_0xc179('0x47')][_0xc179('0x4a')]?_0x4438f9['attributes']:_0x21aff5['model'];if(!_0x5ca7ea[_0xc179('0x44')][_0xc179('0x4b')](_0xc179('0x4c'))){_0x4438f9[_0xc179('0x28')]=qs['limit'](_0x5ca7ea[_0xc179('0x44')][_0xc179('0x28')]);_0x4438f9['offset']=qs['offset'](_0x5ca7ea['query'][_0xc179('0x27')]);}_0x4438f9[_0xc179('0x4d')]=qs['sort'](_0x5ca7ea[_0xc179('0x44')][_0xc179('0x4e')]);_0x4438f9[_0xc179('0x4f')]=qs[_0xc179('0x46')](_[_0xc179('0x50')](_0x5ca7ea[_0xc179('0x44')],_0x21aff5[_0xc179('0x46')]),_0x453306);var _0x4940ec=[];var _0xe7de54=squel[_0xc179('0x51')]()[_0xc179('0x52')]('id')[_0xc179('0x52')]('name')['field'](_0xc179('0x53'))[_0xc179('0x54')](_0xc179('0x55'));var _0x547533=squel[_0xc179('0x51')]()[_0xc179('0x52')](_0xc179('0x56'))[_0xc179('0x52')](_0xc179('0x57'))['field'](_0xc179('0x58'))[_0xc179('0x54')](_0xc179('0x59'),'ui')['left_join'](_0xc179('0x5a'),'u',_0xc179('0x5b'));var _0x38fe00=squel['select']()[_0xc179('0x54')](_0xc179('0x5c'),'i')[_0xc179('0x5d')](_0xc179('0x5e'),'c',_0xc179('0x5f'))['left_join'](_0xc179('0x5a'),'o','o.id\x20=\x20i.UserId')[_0xc179('0x5d')](_0xc179('0x60'),'a',_0xc179('0x61'))[_0xc179('0x5d')](_0xc179('0x62'),'me',_0xc179('0x63'))[_0xc179('0x5d')]('openchannel_interaction_has_tags','it',_0xc179('0x64'))[_0xc179('0x5d')](_0xc179('0x55'),'t','t.id\x20=\x20it.TagId');var _0x1bb24e=squel[_0xc179('0x65')]();var _0x202b82=[];var _0x31b9d5=squel['expr']();var _0x3fdd8d;if(_0x5ca7ea[_0xc179('0x44')][_0xc179('0x66')]){_0x3fdd8d=as[_0xc179('0x67')](_0x5ca7ea[_0xc179('0x44')][_0xc179('0x66')]);var _0x239813=_0x3fdd8d[_0xc179('0x68')];for(var _0x4c74c9=0x0;_0x4c74c9<_0x3fdd8d[_0xc179('0x69')][_0xc179('0x4a')];_0x4c74c9++){var _0x534459=_0x3fdd8d[_0xc179('0x69')][_0x4c74c9];var _0x392b20='i';var _0x4efdbb=_[_0xc179('0x6a')](_0x453306,[_0xc179('0x31'),_0x534459[_0xc179('0x52')]]);if(!_0x4efdbb){switch(_0x534459[_0xc179('0x52')]){case _0xc179('0x6b'):if(_0x534459[_0xc179('0x6c')]==0x1){_0x38fe00[_0xc179('0x6d')]('`'+_0x534459['field']+_0xc179('0x6e'));}else{_0x38fe00[_0xc179('0x6d')]('`'+_0x534459[_0xc179('0x52')]+_0xc179('0x6f'));}break;case'Contact':if(_0x534459['operator']===_0xc179('0x70')){if(_0x534459['value']['split']('\x20')[_0xc179('0x4a')]>0x1){_0x1bb24e[_0x239813](_0xc179('0x71'),qs['getFullTextValue'](_0x534459[_0xc179('0x6c')]),null);}else{var _0x4891b8='%'+_0x534459[_0xc179('0x6c')]+'%';_0x1bb24e[_0x239813](_0xc179('0x72'),_0x4891b8,_0x4891b8,_0x4891b8);}}else{_0x4efdbb=_[_0xc179('0x6a')](_0x453306,[_0xc179('0x31'),_0xc179('0x73')]);_0x534459['field']=_0xc179('0x73');_0x591aea=as[_0xc179('0x74')](_0x392b20,_0x4efdbb[_0xc179('0x42')],_0x534459);_0x1bb24e[_0x239813](_0x591aea['text'],_0x591aea[_0xc179('0x6c')][_0xc179('0x75')],_0x591aea['value'][_0xc179('0x23')]);}break;case _0xc179('0x76'):var _0x405809=_0x534459[_0xc179('0x6c')][_0xc179('0x35')](',')[_0xc179('0x33')](function(_0x3ffbd9){return Number(_0x3ffbd9);});_0x405809[_0xc179('0x36')](function(_0x9cbe0c){_0x31b9d5['or'](_0xc179('0x77'),'%,'+_0x9cbe0c+',%');});_0x202b82=_[_0xc179('0x78')](_0x202b82,_0x405809);break;case'User':if(_0x534459[_0xc179('0x79')]===_0xc179('0x70')){_0x1bb24e[_0x239813](_0xc179('0x7a'),'%'+_0x534459['value']+'%',null);}else{_0x4efdbb=_[_0xc179('0x6a')](_0x453306,['name',_0xc179('0x3e')]);_0x534459['field']=_0xc179('0x3e');_0x591aea=as['buildExpression'](_0x392b20,_0x4efdbb[_0xc179('0x42')],_0x534459);_0x1bb24e[_0x239813](_0x591aea[_0xc179('0x7b')],_0x591aea['value'][_0xc179('0x75')],_0x591aea[_0xc179('0x6c')]['end']);}break;case _0xc179('0x7c'):_0x591aea=as[_0xc179('0x74')]('me',null,_0x534459);_0x1bb24e[_0x239813](_0x591aea['text'],_0x591aea['value'][_0xc179('0x75')],_0x591aea[_0xc179('0x6c')]['end']);break;}}else{var _0x591aea=as[_0xc179('0x74')](_0x392b20,_0x4efdbb[_0xc179('0x42')],_0x534459);_0x1bb24e[_0x239813](_0x591aea['text'],_0x591aea[_0xc179('0x6c')][_0xc179('0x75')],_0x591aea[_0xc179('0x6c')][_0xc179('0x23')]);}}}else{var _0x4918a0=_(_0x5ca7ea[_0xc179('0x44')])['keys']()[_0xc179('0x33')](function(_0x26ed4b){return _[_0xc179('0x7d')](_0x453306,[_0xc179('0x31'),_0x26ed4b])?_0x26ed4b:undefined;})[_0xc179('0x7e')]()[_0xc179('0x6c')]();if(!_[_0xc179('0x7f')](_0x4918a0)){_0x4918a0[_0xc179('0x36')](function(_0xea86a2){if(_0xea86a2===_0xc179('0x80')){_0x38fe00[_0xc179('0x4f')](_0xc179('0x81'),[][_0xc179('0x82')](_0x5ca7ea[_0xc179('0x44')][_0xea86a2]));}else if(_0xea86a2===_0xc179('0x83')){var _0x4c51b1=JSON['parse'](_0x5ca7ea[_0xc179('0x44')][_0xea86a2])[_0xc179('0x84')];var _0x497e3f=JSON[_0xc179('0x85')](_0x5ca7ea[_0xc179('0x44')][_0xea86a2])[_0xc179('0x86')];_0x38fe00['where']('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x4c51b1,_0x497e3f);}else{if(_0x5ca7ea[_0xc179('0x44')][_0xea86a2]===_0xc179('0x87')){_0x38fe00['where']('i.'+_0xea86a2+'\x20IS\x20NULL');}else{_0x38fe00['where']('i.'+_0xea86a2+'\x20=\x20?',_0x5ca7ea[_0xc179('0x44')][_0xea86a2]);}}});}if(_0x5ca7ea[_0xc179('0x44')][_0xc179('0x88')]){if(_0x5ca7ea[_0xc179('0x44')][_0xc179('0x88')]==0x1){_0x38fe00['having']('`unreadMessages`\x20=\x200');}else{_0x38fe00['having'](_0xc179('0x89'));}}if(_0x5ca7ea[_0xc179('0x44')][_0xc179('0x8a')]){_0x202b82=_['isArray'](_0x5ca7ea[_0xc179('0x44')][_0xc179('0x8a')])?_0x5ca7ea['query'][_0xc179('0x8a')]:new Array(_0x5ca7ea['query'][_0xc179('0x8a')]);_0x202b82[_0xc179('0x36')](function(_0xf273a7){_0x31b9d5['or'](_0xc179('0x77'),'%,'+_0xf273a7+',%');});}if(_0x5ca7ea[_0xc179('0x44')][_0xc179('0x8b')]){var _0x44f585=_0x5ca7ea[_0xc179('0x44')]['filter'][_0xc179('0x8c')]('\x5c','\x5c\x5c')[_0xc179('0x8c')](/'/g,'\x27\x27');if(qs[_0xc179('0x8d')](_0x44f585)){_0x1bb24e['or'](_0xc179('0x8e'),_0x44f585+'%');}else{_0x1bb24e['or'](_0xc179('0x8f'),qs[_0xc179('0x90')](_0x44f585))['or'](_0xc179('0x91'),_0x44f585+'%')['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x44f585+'%');}}}_0x38fe00[_0xc179('0x4f')](_0x1bb24e);_0x38fe00['group'](_0xc179('0x92'));var _0x15de87={'type':db['Sequelize'][_0xc179('0x93')][_0xc179('0x94')],'raw':!![]};var _0x738ab5=_0x38fe00[_0xc179('0x95')]();_0x738ab5[_0xc179('0x52')]('i.id');_0x738ab5[_0xc179('0x52')](_0xc179('0x96'),'unreadMessages');if(_0x4438f9[_0xc179('0x4d')]){_0x4438f9[_0xc179('0x4d')][_0xc179('0x36')](function(_0x1e1759){var _0x424c69=_0x1e1759[0x0]==='contactName'?_0x1e1759[0x0]:'i.'+_0x1e1759[0x0];_0x38fe00[_0xc179('0x4d')](_0x424c69,_0x1e1759[0x1]===_0xc179('0x97')?![]:!![]);});}if(!_[_0xc179('0x7f')](_0x202b82)){_0x38fe00[_0xc179('0x6d')](_0x31b9d5);_0x738ab5['where'](_0xc179('0x98'),_0x202b82);}BPromise[_0xc179('0x99')]()[_0xc179('0x2e')](function(){if(!_0x3fdd8d){if(_0x5ca7ea[_0xc179('0x44')][_0xc179('0x80')])return;_0x738ab5[_0xc179('0x4f')](_0xc179('0x9a'));_0x38fe00[_0xc179('0x4f')]('i.OpenchannelAccountId\x20IS\x20NOT\x20NULL');return;}if(_0x5ca7ea[_0xc179('0x9b')]['role']!==_0xc179('0x9c'))return;return _0x5ca7ea[_0xc179('0x9b')][_0xc179('0x9d')]({'attributes':['id'],'raw':!![]})['then'](function(_0x423383){if(_[_0xc179('0x7f')](_0x423383)){_0x738ab5[_0xc179('0x4f')]('i.OpenchannelAccountId\x20IS\x20NULL');_0x38fe00[_0xc179('0x4f')](_0xc179('0x9e'));}else{_0x738ab5[_0xc179('0x4f')](_0xc179('0x81'),_[_0xc179('0x33')](_0x423383,'id'));_0x38fe00[_0xc179('0x4f')]('i.OpenchannelAccountId\x20IN\x20?',_[_0xc179('0x33')](_0x423383,'id'));}});})[_0xc179('0x2e')](function(){if(_0x5ca7ea[_0xc179('0x9b')][_0xc179('0x9f')]===_0xc179('0x9c')&&!_0x3fdd8d&&!_0x5ca7ea[_0xc179('0x44')][_0xc179('0x80')])return[];return db[_0xc179('0xa0')]['query'](_0x738ab5[_0xc179('0xa1')](),_0x15de87);})[_0xc179('0x2e')](function(_0x5e339b){_0x35d8ff[_0xc179('0x26')]=_0x5e339b[_0xc179('0x4a')];if(_0x35d8ff[_0xc179('0x26')]===0x0)return[];return db['sequelize']['query'](_0xe7de54[_0xc179('0xa1')](),_0x15de87)[_0xc179('0x2e')](function(_0x1f213a){_0x4940ec=_[_0xc179('0xa2')](_0x1f213a,'id');_0x15de87=_[_0xc179('0xa3')](_0x15de87,{'model':db[_0xc179('0x41')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5ca7ea['query'][_0xc179('0x49')]){_0x4438f9[_0xc179('0x47')][_0xc179('0x36')](function(_0x1e8555){_0x38fe00[_0xc179('0x52')]('i.'+_0x1e8555);});}else{_0x38fe00[_0xc179('0x52')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages');_0x38fe00[_0xc179('0x52')](_0xc179('0xa4'),_0xc179('0xa5'));_0x38fe00[_0xc179('0x52')](_0xc179('0xa6'),_0xc179('0xa7'));_0x38fe00[_0xc179('0x52')](_0xc179('0xa8'),_0xc179('0xa9'));_0x38fe00[_0xc179('0x52')](_0xc179('0xaa'));_0x38fe00[_0xc179('0x52')]('c.firstName',_0xc179('0xab'));_0x38fe00[_0xc179('0x52')](_0xc179('0xac'),_0xc179('0xad'));_0x38fe00['field'](_0xc179('0xae'),'Contact.email');_0x38fe00[_0xc179('0x52')]('c.phone','Contact.phone');_0x38fe00['field'](_0xc179('0xaf'),_0xc179('0xb0'));_0x38fe00[_0xc179('0x52')](_0xc179('0xb1'),_0xc179('0xb2'));_0x38fe00[_0xc179('0x52')](_0xc179('0xb3'),_0xc179('0xb4'));_0x38fe00[_0xc179('0x52')](_0xc179('0xb5'),_0xc179('0xb6'));_0x38fe00['field'](_0xc179('0xb7'),_0xc179('0x34'));}if(_0x4438f9[_0xc179('0x28')])_0x38fe00[_0xc179('0x28')](_0x4438f9['limit']);if(_0x4438f9[_0xc179('0x27')])_0x38fe00[_0xc179('0x27')](_0x4438f9[_0xc179('0x27')]);return db[_0xc179('0xa0')][_0xc179('0x44')](_0x38fe00[_0xc179('0xa1')](),_0x15de87);})[_0xc179('0x2e')](function(_0x481f80){if(_0x481f80[_0xc179('0x4a')]>0x0)_0x547533[_0xc179('0x4f')](_0xc179('0xb8'),_['map'](_0x481f80,'id'));return db[_0xc179('0xa0')][_0xc179('0x44')](_0x547533['toString'](),_0x15de87)['then'](function(_0xeab28b){var _0x184f68=_[_0xc179('0xb9')](_0xeab28b,_0xc179('0xba'));var _0x51b2ef=[];_0x481f80[_0xc179('0x36')](function(_0x419061){_0x51b2ef[_0xc179('0xbb')](updateOpenchannelInteraction(_0x419061,_0x4940ec,_0x184f68));});return BPromise[_0xc179('0xbc')](_0x51b2ef);});});})['then'](function(_0x4d37d5){_0x35d8ff[_0xc179('0xbd')]=_0x4d37d5;return _0x35d8ff;})[_0xc179('0x2e')](respondWithFilteredResult(_0x41e26b,_0x4438f9))[_0xc179('0x38')](handleError(_0x41e26b,null));};exports[_0xc179('0xbe')]=function(_0x585234,_0x5dbdd4){var _0x5463e9={};if(_0x585234[_0xc179('0x44')][_0xc179('0x42')]&&_0x585234['query'][_0xc179('0x42')]===_0xc179('0x54')){_0x5463e9['from']=_0x585234[_0xc179('0xbf')]['id'];}else{_0x5463e9['id']=_0x585234['params']['id'];}var _0x2eee09={'raw':![],'where':_0x5463e9},_0x3ddd41={};_0x3ddd41['model']=_[_0xc179('0x45')](db[_0xc179('0x41')][_0xc179('0xc0')]);_0x3ddd41[_0xc179('0x44')]=_['keys'](_0x585234['query']);_0x3ddd41[_0xc179('0x46')]=_[_0xc179('0x48')](_0x3ddd41[_0xc179('0x43')],_0x3ddd41[_0xc179('0x44')]);_0x2eee09[_0xc179('0x47')]=_[_0xc179('0x48')](_0x3ddd41['model'],qs[_0xc179('0x49')](_0x585234[_0xc179('0x44')][_0xc179('0x49')]));_0x2eee09[_0xc179('0x47')]=_0x2eee09['attributes'][_0xc179('0x4a')]?_0x2eee09[_0xc179('0x47')]:_0x3ddd41[_0xc179('0x43')];if(_0x585234[_0xc179('0x44')]['includeAll']){_0x2eee09[_0xc179('0xc1')]=[{'all':!![]}];}_0x2eee09=_['merge']({},_0x2eee09,_0x585234[_0xc179('0xc2')]);return db['OpenchannelInteraction']['find'](_0x2eee09)['then'](handleEntityNotFound(_0x5dbdd4,null))['then'](respondWithResult(_0x5dbdd4,null))[_0xc179('0x38')](handleError(_0x5dbdd4,null));};exports[_0xc179('0xc3')]=function(_0x44e96c,_0x1bbfc5){return db[_0xc179('0x41')][_0xc179('0xc3')](_0x44e96c['body'],{})['then'](respondWithResult(_0x1bbfc5,0xc9))[_0xc179('0x38')](handleError(_0x1bbfc5,null));};exports[_0xc179('0x2d')]=function(_0x1f12e2,_0x4138e8){if(_0x1f12e2['body']['id']){delete _0x1f12e2[_0xc179('0x7c')]['id'];}return db['OpenchannelInteraction'][_0xc179('0x6a')]({'where':{'id':_0x1f12e2[_0xc179('0xbf')]['id']}})[_0xc179('0x2e')](handleEntityNotFound(_0x4138e8,null))[_0xc179('0x2e')](saveUpdates(_0x1f12e2[_0xc179('0x7c')],null))[_0xc179('0x2e')](respondWithResult(_0x4138e8,null))[_0xc179('0x38')](handleError(_0x4138e8,null));};exports[_0xc179('0xc4')]=function(_0x582632,_0x3ea27){return db['OpenchannelInteraction']['find']({'where':{'id':_0x582632[_0xc179('0xbf')]['id']}})[_0xc179('0x2e')](handleEntityNotFound(_0x3ea27,null))[_0xc179('0x2e')](removeEntity(_0x3ea27,null))[_0xc179('0x38')](handleError(_0x3ea27,null));};exports[_0xc179('0xc5')]=function(_0x2aec15,_0x1a4542){return db['OpenchannelInteraction'][_0xc179('0xc5')]()[_0xc179('0x2e')](respondWithResult(_0x1a4542,null))[_0xc179('0x38')](handleError(_0x1a4542,null));};exports[_0xc179('0xc6')]=function(_0x192ff8,_0x3ac612,_0x3b1a94){return db[_0xc179('0xc7')][_0xc179('0x6a')]({'where':{'id':_0x192ff8[_0xc179('0xbf')]['id']}})[_0xc179('0x2e')](handleEntityNotFound(_0x3ac612,null))[_0xc179('0x2e')](function(_0x528727){if(_0x528727){return _0x528727[_0xc179('0xc6')](_0x192ff8[_0xc179('0x7c')][_0xc179('0xc8')],_[_0xc179('0xc9')](_0x192ff8[_0xc179('0x7c')],[_0xc179('0xc8'),'id'])||{});}})[_0xc179('0x2e')](respondWithResult(_0x3ac612,null))[_0xc179('0x38')](handleError(_0x3ac612,null));};exports[_0xc179('0xca')]=function(_0x32a754,_0x2087a0,_0x397a06){var _0x111581={'raw':![],'where':{}};var _0x4d713f={};var _0x2fcf54={'count':0x0,'rows':[]};return db[_0xc179('0x41')][_0xc179('0xcb')]({'where':{'id':_0x32a754['params']['id']}})[_0xc179('0x2e')](handleEntityNotFound(_0x2087a0,null))['then'](function(_0x4ec112){if(_0x4ec112){_0x4d713f['model']=_[_0xc179('0x45')](db[_0xc179('0xc7')]['rawAttributes']);_0x4d713f['query']=_[_0xc179('0x45')](_0x32a754[_0xc179('0x44')]);_0x4d713f[_0xc179('0x46')]=_[_0xc179('0x48')](_0x4d713f[_0xc179('0x43')],_0x4d713f[_0xc179('0x44')]);_0x111581[_0xc179('0x47')]=_[_0xc179('0x48')](_0x4d713f[_0xc179('0x43')],qs[_0xc179('0x49')](_0x32a754['query']['fields']));_0x111581['attributes']=_0x111581[_0xc179('0x47')][_0xc179('0x4a')]?_0x111581[_0xc179('0x47')]:_0x4d713f['model'];if(!_0x32a754[_0xc179('0x44')][_0xc179('0x4b')](_0xc179('0x4c'))){_0x111581['limit']=qs['limit'](_0x32a754[_0xc179('0x44')]['limit']);_0x111581[_0xc179('0x27')]=qs[_0xc179('0x27')](_0x32a754[_0xc179('0x44')]['offset']);}_0x111581[_0xc179('0x4d')]=qs[_0xc179('0x4e')](_0x32a754[_0xc179('0x44')][_0xc179('0x4e')]);_0x111581['where']=qs['filters'](_[_0xc179('0x50')](_0x32a754['query'],_0x4d713f[_0xc179('0x46')]));_0x111581['where']['OpenchannelInteractionId']=_0x4ec112['id'];if(_0x32a754['query'][_0xc179('0x8b')]){_0x111581[_0xc179('0x4f')]=_[_0xc179('0xa3')](_0x111581[_0xc179('0x4f')],{'$or':_[_0xc179('0x33')](_0x111581['attributes'],function(_0xa25f35){var _0x4571e2={};_0x4571e2[_0xa25f35]={'$like':'%'+_0x32a754[_0xc179('0x44')]['filter']+'%'};return _0x4571e2;})});}if(_0x32a754[_0xc179('0x44')][_0xc179('0x84')]){var _0x2de323=_0x32a754['query'][_0xc179('0x84')][_0xc179('0x35')](',');var _0x8ce0dc={};_0x8ce0dc[_0x2de323[0x0]]={'$gte':moment(_0x2de323[0x1])['format'](_0xc179('0xcc'))};_0x111581[_0xc179('0x4f')]=_[_0xc179('0xa3')](_0x111581['where'],_0x8ce0dc);}_0x111581=_['merge']({},_0x111581,_0x32a754[_0xc179('0xc2')]);return db[_0xc179('0xc7')][_0xc179('0x26')]({'where':_0x111581[_0xc179('0x4f')]})['then'](function(_0x3bdbc7){_0x2fcf54[_0xc179('0x26')]=_0x3bdbc7;if(_0x32a754['query']['includeAll']){_0x111581['include']=[{'all':!![]}];}return db['OpenchannelMessage'][_0xc179('0xcd')](_0x111581);})[_0xc179('0x2e')](function(_0x2fedac){_0x2fcf54[_0xc179('0xbd')]=_0x2fedac;return _0x2fcf54;});}})[_0xc179('0x2e')](respondWithFilteredResult(_0x2087a0,_0x111581))[_0xc179('0x38')](handleError(_0x2087a0,null));};exports['addTags']=function(_0x8e1a4a,_0x3cdd0a,_0x550aea){return db[_0xc179('0x41')][_0xc179('0x6a')]({'where':{'id':_0x8e1a4a[_0xc179('0xbf')]['id']}})[_0xc179('0x2e')](handleEntityNotFound(_0x3cdd0a,null))[_0xc179('0x2e')](function(_0xbe7175){if(_0xbe7175){return _0xbe7175[_0xc179('0xce')](_0x8e1a4a[_0xc179('0x7c')]['ids'],_['omit'](_0x8e1a4a[_0xc179('0x7c')],[_0xc179('0xc8'),'id'])||{})[_0xc179('0xcf')](function(){return db['Tag'][_0xc179('0xcd')]({'attributes':['id',_0xc179('0x31'),_0xc179('0x53')],'where':{'id':_0x8e1a4a[_0xc179('0x7c')][_0xc179('0xc8')]}});})[_0xc179('0x2e')](function(_0x464130){socket['emit'](_0xc179('0xd0'),{'id':Number(_0x8e1a4a[_0xc179('0xbf')]['id']),'tags':_0x464130||[]});return{'id':Number(_0x8e1a4a[_0xc179('0xbf')]['id']),'tags':_0x464130||[]};});}})[_0xc179('0x2e')](respondWithResult(_0x3cdd0a,null))[_0xc179('0x38')](handleError(_0x3cdd0a,null));};exports[_0xc179('0xd1')]=function(_0x80fb,_0x515d00,_0x4a1b3d){return db[_0xc179('0x41')][_0xc179('0x6a')]({'where':{'id':_0x80fb[_0xc179('0xbf')]['id']}})[_0xc179('0x2e')](handleEntityNotFound(_0x515d00,null))[_0xc179('0x2e')](function(_0x47c943){if(_0x47c943){return _0x47c943[_0xc179('0xd1')](_0x80fb['query'][_0xc179('0xc8')]);}})[_0xc179('0x2e')](respondWithStatusCode(_0x515d00,null))[_0xc179('0x38')](handleError(_0x515d00,null));};exports[_0xc179('0xd2')]=function(_0x430784,_0x162829){var _0x52f0e8=moment()[_0xc179('0xd3')]()[_0xc179('0xa1')]();var _0x502751=path[_0xc179('0xd4')](config['root'],_0xc179('0xd5'),_0xc179('0xd6'),'tmp');var _0x5c0fea=path[_0xc179('0xd4')](config[_0xc179('0xd7')],'server',_0xc179('0xd6'),_0xc179('0xd8'));var _0x12f0d3=path['join'](_0x502751,_0x52f0e8);var _0x3dc929=util[_0xc179('0xd9')](_0xc179('0xda'),_0x430784[_0xc179('0xbf')]['id'],_0x52f0e8);var _0x2fe824=path['join'](_0x502751,_0x3dc929);var _0x23e395=[];_0x23e395[_0xc179('0xbb')]({'model':db[_0xc179('0xdb')],'as':'User','attributes':['id',_0xc179('0xdc')],'raw':!![]});_0x23e395[_0xc179('0xbb')]({'model':db[_0xc179('0xdd')],'as':_0xc179('0xde'),'attributes':['id',_0xc179('0xdf'),_0xc179('0xe0')],'raw':!![]});if(_0x430784[_0xc179('0x44')]['attachments']){_0x23e395['push']({'model':db[_0xc179('0xe1')],'as':_0xc179('0xe1'),'raw':!![]});}var _0x34ebb2=[{'model':db[_0xc179('0xc7')],'as':_0xc179('0xe2'),'attributes':['id',_0xc179('0x7c'),'createdAt','direction','secret',_0xc179('0x88')],'include':_0x23e395}];_0x34ebb2[_0xc179('0xbb')]({'model':db[_0xc179('0xe3')],'as':_0xc179('0xe4'),'attributes':['id',_0xc179('0x31')]});_0x34ebb2[_0xc179('0xbb')]({'model':db[_0xc179('0xdb')],'as':_0xc179('0xe5'),'attributes':['id',_0xc179('0xdc')]});return db['OpenchannelInteraction'][_0xc179('0x6a')]({'where':{'id':_0x430784[_0xc179('0xbf')]['id']},'include':_0x34ebb2})['then'](handleEntityNotFound(_0x162829,null))['then'](function(_0x26dbf6){if(_0x26dbf6){var _0x229ffb=_0x26dbf6['get']({'plain':!![]});fs[_0xc179('0xe6')](_0x12f0d3);var _0x3abbd0={'channel':_0xc179('0xe7'),'account':_0x229ffb['Account'][_0xc179('0x31')],'agent':_0x229ffb['Owner']?_0x229ffb['Owner'][_0xc179('0xdc')]:_0xc179('0xe8'),'createdAt':moment(_0x229ffb[_0xc179('0x83')])[_0xc179('0xd9')](_0xc179('0xcc'))[_0xc179('0xa1')](),'closedAt':_0x229ffb[_0xc179('0x3d')]?moment(_0x229ffb[_0xc179('0xe9')])[_0xc179('0xd9')](_0xc179('0xcc'))[_0xc179('0xa1')]():'','disposition':_0x229ffb[_0xc179('0xea')],'visibility':_0x229ffb['threadId']?'Public':_0xc179('0xeb'),'messages':_(_0x229ffb[_0xc179('0xe2')])[_0xc179('0x8b')]({'secret':![]})[_0xc179('0x33')](function(_0x2073a5){if(_0x2073a5[_0xc179('0xe1')]){var _0x3af76f=path[_0xc179('0xd4')](_0x5c0fea,_0x2073a5[_0xc179('0xe1')][_0xc179('0xec')]);if(fs[_0xc179('0xed')](_0x3af76f)){fs[_0xc179('0xee')](_0x3af76f)[_0xc179('0xef')](fs[_0xc179('0xf0')](path[_0xc179('0xd4')](_0x12f0d3,_0x2073a5[_0xc179('0xe1')][_0xc179('0xec')])));}}return{'date':moment(_0x2073a5['createdAt'])[_0xc179('0xd9')](_0xc179('0xcc'))[_0xc179('0xa1')](),'sender':_0x2073a5['direction']===_0xc179('0xf1')?_0x2073a5[_0xc179('0xdb')]?_0x2073a5[_0xc179('0xdb')][_0xc179('0xdc')]:_0xc179('0xf2'):_0x2073a5['Contact'][_0xc179('0xdf')]+(_0x2073a5['Contact'][_0xc179('0xe0')]?'\x20'+_0x2073a5['Contact'][_0xc179('0xe0')]:''),'body':_0x2073a5[_0xc179('0xe1')]?_0x2073a5[_0xc179('0xe1')][_0xc179('0xec')]:_0x2073a5[_0xc179('0x7c')],'direction':_0x2073a5['direction']==='out'?'A':'C','secret':_0x2073a5[_0xc179('0xf3')],'read':_0x2073a5[_0xc179('0x88')],'attachment':_0x2073a5['Attachment']};})[_0xc179('0x6c')]()};return ejs[_0xc179('0xf4')](path['join'](config[_0xc179('0xd7')],_0xc179('0xd5'),_0xc179('0xf5'),'downloadInteraction.ejs'),{'interaction':_0x3abbd0})['then'](function(_0x26bc12){var _0x4062ea=path[_0xc179('0xd4')](_0x12f0d3,_0xc179('0xf6')+_0x229ffb['id']+'-'+_0x52f0e8+_0xc179('0xf7'));var _0x4a1742={'path':_0x4062ea,'channel':'Openchannel','interactionId':_0x229ffb['id']};return pdf['createPdfFromHTML'](_0x26bc12,_0x4a1742);})[_0xc179('0x2e')](function(){return new BPromise(function(_0x28bb30,_0x214f33){zipdir(_0x12f0d3,{'saveTo':_0x2fe824},function(_0x55f265,_0x42d373){if(_0x55f265)return _0x214f33(_0x55f265);return _0x28bb30(_0x42d373);});})[_0xc179('0x2e')](function(){return new BPromise(function(_0x2e7d4a,_0x507e9e){rimraf(_0x12f0d3,function(_0x4b1384){if(_0x4b1384)_0x507e9e(_0x4b1384);return _0x2e7d4a();});});})[_0xc179('0x2e')](function(){return _0x162829['download'](_0x2fe824,_0x3dc929,function(_0x1e38fc){if(_0x1e38fc){console[_0xc179('0xf8')](_0xc179('0xf9'),_0x1e38fc);}else{fs[_0xc179('0xfa')](_0x2fe824);}});});});}else{return _0x162829[_0xc179('0x21')](0xc8);}})[_0xc179('0x38')](handleError(_0x162829,null));};
\ No newline at end of file
index 57e90d7..6972f85 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbcfe=['unreadMessages','length','emit','catch','hook','../../mysqldb','OpenchannelMessage','setMaxListeners','save','update','remove','then','setDataValue','Users','findAll'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0xbcfe,0xc8));var _0xebcf=function(_0x1ed822,_0x5f1620){_0x1ed822=_0x1ed822-0x0;var _0x1b21c8=_0xbcfe[_0x1ed822];return _0x1b21c8;};'use strict';var EventEmitter=require('events');var OpenchannelInteraction=require(_0xebcf('0x0'))['db']['OpenchannelInteraction'];var OpenchannelMessage=require(_0xebcf('0x0'))['db'][_0xebcf('0x1')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0xebcf('0x2')](0x0);var events={'afterCreate':_0xebcf('0x3'),'afterUpdate':_0xebcf('0x4'),'afterDestroy':_0xebcf('0x5')};function emitEvent(_0x1b8485){return function(_0x2635d1,_0x339d29,_0x47b6f2){_0x2635d1['getUsers']({'attributes':['id'],'raw':!![]})[_0xebcf('0x6')](function(_0x404df8){_0x2635d1[_0xebcf('0x7')](_0xebcf('0x8'),_0x404df8['map'](function(_0x55c0f2){return{'id':_0x55c0f2['id']};}));return OpenchannelMessage[_0xebcf('0x9')]({'where':{'OpenchannelInteractionId':_0x2635d1['id'],'direction':'in','read':![]},'raw':!![]});})[_0xebcf('0x6')](function(_0x5b52b0){_0x2635d1['setDataValue'](_0xebcf('0xa'),_0x5b52b0[_0xebcf('0xb')]);OpenchannelInteractionEvents[_0xebcf('0xc')](_0x1b8485+':'+_0x2635d1['id'],_0x2635d1);OpenchannelInteractionEvents[_0xebcf('0xc')](_0x1b8485,_0x2635d1);_0x47b6f2(null);})[_0xebcf('0xd')](_0x47b6f2(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelInteraction[_0xebcf('0xe')](e,emitEvent(event));}}module['exports']=OpenchannelInteractionEvents;
\ No newline at end of file
+var _0x827e=['length','emit','hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelInteraction','OpenchannelMessage','setMaxListeners','save','remove','setDataValue','Users','map','findAll','then','unreadMessages'];(function(_0x12a951,_0x3739e7){var _0x4472cb=function(_0x326058){while(--_0x326058){_0x12a951['push'](_0x12a951['shift']());}};_0x4472cb(++_0x3739e7);}(_0x827e,0x1eb));var _0xe827=function(_0x4d8ea0,_0x3ad597){_0x4d8ea0=_0x4d8ea0-0x0;var _0x3279b1=_0x827e[_0x4d8ea0];return _0x3279b1;};'use strict';var EventEmitter=require(_0xe827('0x0'));var OpenchannelInteraction=require(_0xe827('0x1'))['db'][_0xe827('0x2')];var OpenchannelMessage=require(_0xe827('0x1'))['db'][_0xe827('0x3')];var OpenchannelInteractionEvents=new EventEmitter();OpenchannelInteractionEvents[_0xe827('0x4')](0x0);var events={'afterCreate':_0xe827('0x5'),'afterUpdate':'update','afterDestroy':_0xe827('0x6')};function emitEvent(_0x4ef7d4){return function(_0x4f0619,_0x482ac9,_0xfc3d85){_0x4f0619['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x5cbda9){_0x4f0619[_0xe827('0x7')](_0xe827('0x8'),_0x5cbda9[_0xe827('0x9')](function(_0xf5fa17){return{'id':_0xf5fa17['id']};}));return OpenchannelMessage[_0xe827('0xa')]({'where':{'OpenchannelInteractionId':_0x4f0619['id'],'direction':'in','read':![]},'raw':!![]});})[_0xe827('0xb')](function(_0x2a82b0){_0x4f0619[_0xe827('0x7')](_0xe827('0xc'),_0x2a82b0[_0xe827('0xd')]);OpenchannelInteractionEvents[_0xe827('0xe')](_0x4ef7d4+':'+_0x4f0619['id'],_0x4f0619);OpenchannelInteractionEvents[_0xe827('0xe')](_0x4ef7d4,_0x4f0619);_0xfc3d85(null);})['catch'](_0xfc3d85(null));};}for(var e in events){if(events[_0xe827('0xf')](e)){var event=events[e];OpenchannelInteraction[_0xe827('0x10')](e,emitEvent(event));}}module[_0xe827('0x11')]=OpenchannelInteractionEvents;
\ No newline at end of file
index 43b7ce9..c5c1ce9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x376e=['moment','request-promise','path','../../config/environment','./openchannelInteraction.attributes','OpenchannelInteraction','utf8mb4','changed','closedAt','format','YYYY-MM-DD\x20HH:mm:ss','lodash','../../config/logger','api'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x376e,0x123));var _0xe376=function(_0x1a72f3,_0x217011){_0x1a72f3=_0x1a72f3-0x0;var _0x57ef47=_0x376e[_0x1a72f3];return _0x57ef47;};'use strict';var _=require(_0xe376('0x0'));var util=require('util');var logger=require(_0xe376('0x1'))(_0xe376('0x2'));var moment=require(_0xe376('0x3'));var BPromise=require('bluebird');var rp=require(_0xe376('0x4'));var fs=require('fs');var path=require(_0xe376('0x5'));var rimraf=require('rimraf');var config=require(_0xe376('0x6'));var attributes=require(_0xe376('0x7'));module['exports']=function(_0x22d155,_0x3b60e8){return _0x22d155['define'](_0xe376('0x8'),attributes,{'tableName':'openchannel_interactions','paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xe376('0x9'),'collate':'utf8mb4_unicode_ci','hooks':{'beforeUpdate':function(_0x3faee3,_0x4eb012,_0x178219){if(_0x3faee3[_0xe376('0xa')]('closed')){_0x3faee3[_0xe376('0xb')]=moment()[_0xe376('0xc')](_0xe376('0xd'));}_0x178219(null,_0x3faee3);}}});};
\ No newline at end of file
+var _0x644f=['format','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','define','openchannel_interactions','utf8mb4','utf8mb4_unicode_ci','changed','closed','closedAt'];(function(_0x241bf5,_0x49332c){var _0x38ea27=function(_0x5b03ff){while(--_0x5b03ff){_0x241bf5['push'](_0x241bf5['shift']());}};_0x38ea27(++_0x49332c);}(_0x644f,0x177));var _0xf644=function(_0x1f7413,_0x3388c3){_0x1f7413=_0x1f7413-0x0;var _0x2d2775=_0x644f[_0x1f7413];return _0x2d2775;};'use strict';var _=require('lodash');var util=require(_0xf644('0x0'));var logger=require(_0xf644('0x1'))(_0xf644('0x2'));var moment=require(_0xf644('0x3'));var BPromise=require(_0xf644('0x4'));var rp=require(_0xf644('0x5'));var fs=require('fs');var path=require(_0xf644('0x6'));var rimraf=require(_0xf644('0x7'));var config=require(_0xf644('0x8'));var attributes=require('./openchannelInteraction.attributes');module['exports']=function(_0x23cd49,_0x16e2f2){return _0x23cd49[_0xf644('0x9')]('OpenchannelInteraction',attributes,{'tableName':_0xf644('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xf644('0xb'),'collate':_0xf644('0xc'),'hooks':{'beforeUpdate':function(_0x2c1d90,_0x129a88,_0x594858){if(_0x2c1d90[_0xf644('0xd')](_0xf644('0xe'))){_0x2c1d90[_0xf644('0xf')]=moment()[_0xf644('0x10')]('YYYY-MM-DD\x20HH:mm:ss');}_0x594858(null,_0x2c1d90);}}});};
\ No newline at end of file
index b296cd2..a1f9d2c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b5a=['redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','register','request','info','OpenchannelInteraction,\x20%s,\x20%s','request\x20sent','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','UpdateOpenchannelInteraction','update','options','where','attributes','limit','AddTagsToOpenchannelInteraction','OpenchannelInteraction','find','addTags','body','omit','ids','spread','AddTags','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x17196a,_0x574d81){var _0xc2b086=function(_0x393e56){while(--_0x393e56){_0x17196a['push'](_0x17196a['shift']());}};_0xc2b086(++_0x574d81);}(_0x5b5a,0x140));var _0xa5b5=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0x5b5a[_0x36c5b0];return _0xf19333;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xa5b5('0x0'));var rs=require(_0xa5b5('0x1'));var fs=require('fs');var Redis=require(_0xa5b5('0x2'));var db=require(_0xa5b5('0x3'))['db'];var utils=require(_0xa5b5('0x4'));var logger=require('../../config/logger')(_0xa5b5('0x5'));var config=require(_0xa5b5('0x6'));var jayson=require(_0xa5b5('0x7'));var client=jayson['client']['http']({'port':0x232a});config[_0xa5b5('0x8')]=_[_0xa5b5('0x9')](config[_0xa5b5('0x8')],{'host':_0xa5b5('0xa'),'port':0x18eb});var socket=require(_0xa5b5('0xb'))(new Redis(config[_0xa5b5('0x8')]));require(_0xa5b5('0xc'))[_0xa5b5('0xd')](socket);function respondWithRpcPromise(_0x473ad2,_0x5a46d7,_0x1fdfe6){return new BPromise(function(_0x4aca11,_0xd983cd){return client[_0xa5b5('0xe')](_0x473ad2,_0x1fdfe6)['then'](function(_0x3310bf){logger[_0xa5b5('0xf')](_0xa5b5('0x10'),_0x5a46d7,_0xa5b5('0x11'));logger[_0xa5b5('0x12')](_0xa5b5('0x13'),_0x5a46d7,'request\x20sent',JSON[_0xa5b5('0x14')](_0x3310bf));if(_0x3310bf['error']){if(_0x3310bf['error'][_0xa5b5('0x15')]===0x1f4){logger[_0xa5b5('0x16')]('OpenchannelInteraction,\x20%s,\x20%s',_0x5a46d7,_0x3310bf[_0xa5b5('0x16')][_0xa5b5('0x17')]);return _0xd983cd(_0x3310bf[_0xa5b5('0x16')][_0xa5b5('0x17')]);}logger['error']('OpenchannelInteraction,\x20%s,\x20%s',_0x5a46d7,_0x3310bf['error'][_0xa5b5('0x17')]);return _0x4aca11(_0x3310bf[_0xa5b5('0x16')][_0xa5b5('0x17')]);}else{logger['info'](_0xa5b5('0x10'),_0x5a46d7,_0xa5b5('0x11'));_0x4aca11(_0x3310bf[_0xa5b5('0x18')][_0xa5b5('0x17')]);}})[_0xa5b5('0x19')](function(_0x208b27){logger[_0xa5b5('0x16')](_0xa5b5('0x10'),_0x5a46d7,_0x208b27);_0xd983cd(_0x208b27);});});}exports[_0xa5b5('0x1a')]=function(_0x1c3106){var _0x2a16ce=this;return new Promise(function(_0xf87109,_0x224ef5){return db['OpenchannelInteraction'][_0xa5b5('0x1b')](_0x1c3106['body'],{'raw':_0x1c3106['options']?_0x1c3106[_0xa5b5('0x1c')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1c3106[_0xa5b5('0x1c')]?_0x1c3106[_0xa5b5('0x1c')][_0xa5b5('0x1d')]||null:null,'attributes':_0x1c3106[_0xa5b5('0x1c')]?_0x1c3106[_0xa5b5('0x1c')][_0xa5b5('0x1e')]||null:null,'limit':_0x1c3106[_0xa5b5('0x1c')]?_0x1c3106[_0xa5b5('0x1c')][_0xa5b5('0x1f')]||null:null})['then'](function(_0x20d24d){logger[_0xa5b5('0xf')](_0xa5b5('0x1a'),_0x1c3106);logger[_0xa5b5('0x12')](_0xa5b5('0x1a'),_0x1c3106,JSON[_0xa5b5('0x14')](_0x20d24d));_0xf87109(_0x20d24d);})[_0xa5b5('0x19')](function(_0x4b49f0){logger[_0xa5b5('0x16')](_0xa5b5('0x1a'),_0x4b49f0[_0xa5b5('0x17')],_0x1c3106);_0x224ef5(_0x2a16ce['error'](0x1f4,_0x4b49f0[_0xa5b5('0x17')]));});});};exports[_0xa5b5('0x20')]=function(_0x17cf79){return new Promise(function(_0x590236,_0x2d2f6d){return db[_0xa5b5('0x21')][_0xa5b5('0x22')]({'where':_0x17cf79['options']?_0x17cf79['options'][_0xa5b5('0x1d')]||null:null})['then'](function(_0x5b0375){if(_0x5b0375){return _0x5b0375[_0xa5b5('0x23')](_0x17cf79[_0xa5b5('0x24')]['ids'],_[_0xa5b5('0x25')](_0x17cf79['body'],[_0xa5b5('0x26'),'id'])||{});}})[_0xa5b5('0x27')](function(_0x1449e8){logger[_0xa5b5('0xf')](_0xa5b5('0x28'),_0x17cf79);logger[_0xa5b5('0x12')]('AddTags',_0x17cf79,JSON['stringify'](_0x1449e8));_0x590236(_0x1449e8);})[_0xa5b5('0x19')](function(_0x868050){logger[_0xa5b5('0x16')](_0xa5b5('0x28'),_0x868050[_0xa5b5('0x17')],_0x17cf79);_0x2d2f6d(_this[_0xa5b5('0x16')](0x1f4,_0x868050[_0xa5b5('0x17')]));});});};
\ No newline at end of file
+var _0x4915=['AddTags','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./openchannelInteraction.socket','info','debug','OpenchannelInteraction,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','OpenchannelInteraction,\x20%s,\x20%s','message','result','catch','OpenchannelInteraction','options','raw','where','attributes','limit','then','UpdateOpenchannelInteraction','stringify','AddTagsToOpenchannelInteraction','body','ids','omit'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x4915,0xa9));var _0x5491=function(_0x3d2761,_0x2696bf){_0x3d2761=_0x3d2761-0x0;var _0x531ae9=_0x4915[_0x3d2761];return _0x531ae9;};'use strict';var _=require(_0x5491('0x0'));var util=require(_0x5491('0x1'));var moment=require(_0x5491('0x2'));var BPromise=require(_0x5491('0x3'));var rs=require(_0x5491('0x4'));var fs=require('fs');var Redis=require(_0x5491('0x5'));var db=require(_0x5491('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x5491('0x7'))(_0x5491('0x8'));var config=require(_0x5491('0x9'));var jayson=require(_0x5491('0xa'));var client=jayson[_0x5491('0xb')][_0x5491('0xc')]({'port':0x232a});config[_0x5491('0xd')]=_[_0x5491('0xe')](config['redis'],{'host':_0x5491('0xf'),'port':0x18eb});var socket=require(_0x5491('0x10'))(new Redis(config[_0x5491('0xd')]));require(_0x5491('0x11'))['register'](socket);function respondWithRpcPromise(_0x57724d,_0x7b513a,_0xb714f8){return new BPromise(function(_0x1e81a2,_0x5e1a89){return client['request'](_0x57724d,_0xb714f8)['then'](function(_0x3d2ed7){logger[_0x5491('0x12')]('OpenchannelInteraction,\x20%s,\x20%s',_0x7b513a,'request\x20sent');logger[_0x5491('0x13')](_0x5491('0x14'),_0x7b513a,_0x5491('0x15'),JSON['stringify'](_0x3d2ed7));if(_0x3d2ed7[_0x5491('0x16')]){if(_0x3d2ed7[_0x5491('0x16')][_0x5491('0x17')]===0x1f4){logger[_0x5491('0x16')](_0x5491('0x18'),_0x7b513a,_0x3d2ed7['error'][_0x5491('0x19')]);return _0x5e1a89(_0x3d2ed7[_0x5491('0x16')][_0x5491('0x19')]);}logger[_0x5491('0x16')]('OpenchannelInteraction,\x20%s,\x20%s',_0x7b513a,_0x3d2ed7['error'][_0x5491('0x19')]);return _0x1e81a2(_0x3d2ed7[_0x5491('0x16')]['message']);}else{logger[_0x5491('0x12')](_0x5491('0x18'),_0x7b513a,'request\x20sent');_0x1e81a2(_0x3d2ed7[_0x5491('0x1a')][_0x5491('0x19')]);}})[_0x5491('0x1b')](function(_0x21a0ba){logger['error'](_0x5491('0x18'),_0x7b513a,_0x21a0ba);_0x5e1a89(_0x21a0ba);});});}exports['UpdateOpenchannelInteraction']=function(_0x5a65ae){var _0x31eb88=this;return new Promise(function(_0x4764b1,_0x457867){return db[_0x5491('0x1c')]['update'](_0x5a65ae['body'],{'raw':_0x5a65ae[_0x5491('0x1d')]?_0x5a65ae['options'][_0x5491('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5a65ae[_0x5491('0x1d')]?_0x5a65ae[_0x5491('0x1d')][_0x5491('0x1f')]||null:null,'attributes':_0x5a65ae['options']?_0x5a65ae['options'][_0x5491('0x20')]||null:null,'limit':_0x5a65ae[_0x5491('0x1d')]?_0x5a65ae['options'][_0x5491('0x21')]||null:null})[_0x5491('0x22')](function(_0x318411){logger[_0x5491('0x12')]('UpdateOpenchannelInteraction',_0x5a65ae);logger[_0x5491('0x13')](_0x5491('0x23'),_0x5a65ae,JSON[_0x5491('0x24')](_0x318411));_0x4764b1(_0x318411);})['catch'](function(_0xe7b8){logger[_0x5491('0x16')]('UpdateOpenchannelInteraction',_0xe7b8[_0x5491('0x19')],_0x5a65ae);_0x457867(_0x31eb88['error'](0x1f4,_0xe7b8['message']));});});};exports[_0x5491('0x25')]=function(_0x517c2b){return new Promise(function(_0x1a1f33,_0xeae341){return db['OpenchannelInteraction']['find']({'where':_0x517c2b['options']?_0x517c2b[_0x5491('0x1d')][_0x5491('0x1f')]||null:null})['then'](function(_0x3623b6){if(_0x3623b6){return _0x3623b6['addTags'](_0x517c2b[_0x5491('0x26')][_0x5491('0x27')],_[_0x5491('0x28')](_0x517c2b[_0x5491('0x26')],[_0x5491('0x27'),'id'])||{});}})['spread'](function(_0x2badd8){logger[_0x5491('0x12')](_0x5491('0x29'),_0x517c2b);logger[_0x5491('0x13')]('AddTags',_0x517c2b,JSON[_0x5491('0x24')](_0x2badd8));_0x1a1f33(_0x2badd8);})[_0x5491('0x1b')](function(_0x1d1601){logger[_0x5491('0x16')](_0x5491('0x29'),_0x1d1601['message'],_0x517c2b);_0xeae341(_this[_0x5491('0x16')](0x1f4,_0x1d1601[_0x5491('0x19')]));});});};
\ No newline at end of file
index d42f7e7..b8ef50f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb3c9=['remove','update','removeListener','register','./openchannelInteraction.events','save'];(function(_0x2dad1c,_0x8eb2e7){var _0x5a283d=function(_0x535f46){while(--_0x535f46){_0x2dad1c['push'](_0x2dad1c['shift']());}};_0x5a283d(++_0x8eb2e7);}(_0xb3c9,0xee));var _0x9b3c=function(_0x2d7a2f,_0x119417){_0x2d7a2f=_0x2d7a2f-0x0;var _0x1f0717=_0xb3c9[_0x2d7a2f];return _0x1f0717;};'use strict';var OpenchannelInteractionEvents=require(_0x9b3c('0x0'));var events=[_0x9b3c('0x1'),_0x9b3c('0x2'),_0x9b3c('0x3')];function createListener(_0x587293,_0x273071){return function(_0x33e898){_0x273071['emit'](_0x587293,_0x33e898);};}function removeListener(_0x14e24d,_0x50168f){return function(){OpenchannelInteractionEvents[_0x9b3c('0x4')](_0x14e24d,_0x50168f);};}exports[_0x9b3c('0x5')]=function(_0x1eaa56){for(var _0x479052=0x0,_0x2fbf15=events['length'];_0x479052<_0x2fbf15;_0x479052++){var _0x3b6c6f=events[_0x479052];var _0x459411=createListener('openchannelInteraction:'+_0x3b6c6f,_0x1eaa56);OpenchannelInteractionEvents['on'](_0x3b6c6f,_0x459411);}};
\ No newline at end of file
+var _0x00d1=['length','save','remove','emit','register'];(function(_0x2d2c16,_0x4e88b6){var _0x53f2fb=function(_0x6b6dac){while(--_0x6b6dac){_0x2d2c16['push'](_0x2d2c16['shift']());}};_0x53f2fb(++_0x4e88b6);}(_0x00d1,0x178));var _0x100d=function(_0x57b4ff,_0x3f3be0){_0x57b4ff=_0x57b4ff-0x0;var _0x28642e=_0x00d1[_0x57b4ff];return _0x28642e;};'use strict';var OpenchannelInteractionEvents=require('./openchannelInteraction.events');var events=[_0x100d('0x0'),_0x100d('0x1'),'update'];function createListener(_0x87a4d1,_0x53a479){return function(_0x1a581d){_0x53a479[_0x100d('0x2')](_0x87a4d1,_0x1a581d);};}function removeListener(_0x3bdec9,_0x1e3cda){return function(){OpenchannelInteractionEvents['removeListener'](_0x3bdec9,_0x1e3cda);};}exports[_0x100d('0x3')]=function(_0x1e946c){for(var _0x45444b=0x0,_0x362233=events[_0x100d('0x4')];_0x45444b<_0x362233;_0x45444b++){var _0x53ad04=events[_0x45444b];var _0xa50846=createListener('openchannelInteraction:'+_0x53ad04,_0x1e946c);OpenchannelInteractionEvents['on'](_0x53ad04,_0xa50846);}};
\ No newline at end of file
index 49fcf24..3e3fb10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelMessage.controller','get','isAuthenticated','index','/describe','describe','/:id','post','tracked','openchannel','create','put','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports'];(function(_0x19a5ca,_0x500b42){var _0x352122=function(_0x118b2b){while(--_0x118b2b){_0x19a5ca['push'](_0x19a5ca['shift']());}};_0x352122(++_0x500b42);}(_0xedd9,0xfc));var _0x9edd=function(_0x483497,_0x33125d){_0x483497=_0x483497-0x0;var _0x18a4db=_0xedd9[_0x483497];return _0x18a4db;};'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');var controller=require(_0x9edd('0x8'));router[_0x9edd('0x9')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xb')]);router['get'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0xd')]);router[_0x9edd('0x9')](_0x9edd('0xe'),auth[_0x9edd('0xa')](),controller['show']);router[_0x9edd('0xf')]('/',auth['isAuthenticated'](),interaction[_0x9edd('0x10')](_0x9edd('0x11'),'openchannelmessage:create'),controller[_0x9edd('0x12')]);router[_0x9edd('0x13')]('/:id',auth[_0x9edd('0xa')](),controller[_0x9edd('0x14')]);router[_0x9edd('0x13')](_0x9edd('0x15'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x16')]);router[_0x9edd('0x13')](_0x9edd('0x17'),auth['isAuthenticated'](),controller[_0x9edd('0x18')]);router[_0x9edd('0x19')](_0x9edd('0xe'),auth[_0x9edd('0xa')](),controller[_0x9edd('0x1a')]);module[_0x9edd('0x1b')]=router;
\ No newline at end of file
+var _0x70e0=['put','update','/:id/accept','accept','destroy','multer','util','path','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./openchannelMessage.controller','isAuthenticated','describe','get','/:id','show','post','openchannel','openchannelmessage:create','create'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x70e0,0x17b));var _0x070e=function(_0x5c3710,_0x36f45d){_0x5c3710=_0x5c3710-0x0;var _0x139f49=_0x70e0[_0x5c3710];return _0x139f49;};'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');var controller=require(_0x070e('0x7'));router['get']('/',auth[_0x070e('0x8')](),controller['index']);router['get']('/describe',auth[_0x070e('0x8')](),controller[_0x070e('0x9')]);router[_0x070e('0xa')](_0x070e('0xb'),auth[_0x070e('0x8')](),controller[_0x070e('0xc')]);router[_0x070e('0xd')]('/',auth['isAuthenticated'](),interaction['tracked'](_0x070e('0xe'),_0x070e('0xf')),controller[_0x070e('0x10')]);router[_0x070e('0x11')](_0x070e('0xb'),auth[_0x070e('0x8')](),controller[_0x070e('0x12')]);router[_0x070e('0x11')](_0x070e('0x13'),auth[_0x070e('0x8')](),controller[_0x070e('0x14')]);router['put']('/:id/reject',auth[_0x070e('0x8')](),controller['reject']);router['delete']('/:id',auth[_0x070e('0x8')](),controller[_0x070e('0x15')]);module['exports']=router;
\ No newline at end of file
index e783427..e089792 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x61d0=['STRING','sequelize','TEXT','medium','BOOLEAN','out'];(function(_0x6292e2,_0x3cbc77){var _0x557e85=function(_0x19586d){while(--_0x19586d){_0x6292e2['push'](_0x6292e2['shift']());}};_0x557e85(++_0x3cbc77);}(_0x61d0,0x187));var _0x061d=function(_0x37e845,_0x219f9f){_0x37e845=_0x37e845-0x0;var _0x59e55b=_0x61d0[_0x37e845];return _0x59e55b;};'use strict';var Sequelize=require(_0x061d('0x0'));module['exports']={'body':{'type':Sequelize[_0x061d('0x1')](_0x061d('0x2')),'allowNull':![]},'read':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'secret':{'type':Sequelize[_0x061d('0x3')],'defaultValue':![]},'direction':{'type':Sequelize['ENUM']('in',_0x061d('0x4')),'defaultValue':_0x061d('0x4'),'allowNull':![]},'readAt':{'type':Sequelize['DATE']},'providerName':{'type':Sequelize[_0x061d('0x5')]},'providerResponse':{'type':Sequelize[_0x061d('0x1')]}};
\ No newline at end of file
+var _0x5eb1=['ENUM','out','DATE','STRING','exports','TEXT','medium','BOOLEAN'];(function(_0x52f1e6,_0xf70489){var _0x21f104=function(_0xb89f9e){while(--_0xb89f9e){_0x52f1e6['push'](_0x52f1e6['shift']());}};_0x21f104(++_0xf70489);}(_0x5eb1,0x7c));var _0x15eb=function(_0xc2c353,_0x41a5a3){_0xc2c353=_0xc2c353-0x0;var _0x806605=_0x5eb1[_0xc2c353];return _0x806605;};'use strict';var Sequelize=require('sequelize');module[_0x15eb('0x0')]={'body':{'type':Sequelize[_0x15eb('0x1')](_0x15eb('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x15eb('0x3')],'defaultValue':![]},'secret':{'type':Sequelize[_0x15eb('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x15eb('0x4')]('in','out'),'defaultValue':_0x15eb('0x5'),'allowNull':![]},'readAt':{'type':Sequelize[_0x15eb('0x6')]},'providerName':{'type':Sequelize[_0x15eb('0x7')]},'providerResponse':{'type':Sequelize[_0x15eb('0x1')]}};
\ No newline at end of file
index a9da64e..5b57b69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x88d5=['fs-extra','lodash','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','jayson/promise','client','http','then','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','status','end','json','undefined','limit','count','offset','apply','save','update','stack','name','send','index','map','OpenchannelMessage','fieldName','key','model','query','filters','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','type','VIRTUAL','options','includeAll','findAll','rows','show','keys','rawAttributes','attributes','include','merge','find','create','body','destroy','params','describe','openchannel-interactions','accept','read','readAt','format','UserId','user','agent','get','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','interface','SIP/%s','channel','motionChannel','EventManager','acceptmessage','reject','OpenchannelInteraction','OpenchannelInteractionId','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','Sequelize','event','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','sox','to-csv','ejs'];(function(_0x1bd79c,_0x8530e9){var _0x2017c2=function(_0xf23916){while(--_0xf23916){_0x1bd79c['push'](_0x1bd79c['shift']());}};_0x2017c2(++_0x8530e9);}(_0x88d5,0x76));var _0x588d=function(_0x3f096b,_0x1a864f){_0x3f096b=_0x3f096b-0x0;var _0x204ba4=_0x88d5[_0x3f096b];return _0x204ba4;};'use strict';var emlformat=require(_0x588d('0x0'));var rimraf=require(_0x588d('0x1'));var zipdir=require(_0x588d('0x2'));var jsonpatch=require(_0x588d('0x3'));var rp=require(_0x588d('0x4'));var moment=require('moment');var BPromise=require(_0x588d('0x5'));var Mustache=require(_0x588d('0x6'));var util=require('util');var path=require(_0x588d('0x7'));var sox=require(_0x588d('0x8'));var csv=require(_0x588d('0x9'));var ejs=require(_0x588d('0xa'));var fs=require('fs');var fs_extra=require(_0x588d('0xb'));var _=require(_0x588d('0xc'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x588d('0xd'));var deskjs=require(_0x588d('0xe'));var toCsv=require(_0x588d('0x9'));var querystring=require(_0x588d('0xf'));var Papa=require('papaparse');var Redis=require(_0x588d('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x588d('0x11'));var as=require(_0x588d('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x588d('0x13'))(_0x588d('0x14'));var utils=require(_0x588d('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0x588d('0x16'));var db=require(_0x588d('0x17'))['db'];config['redis']=_[_0x588d('0x18')](config[_0x588d('0x19')],{'host':_0x588d('0x1a'),'port':0x18eb});var socket=require(_0x588d('0x1b'))(new Redis(config[_0x588d('0x19')]));require('./openchannelMessage.socket')['register'](socket);var jayson=require(_0x588d('0x1c'));var client=jayson[_0x588d('0x1d')][_0x588d('0x1e')]({'port':0x232c});var client9002=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x27b5a4,_0x11c022,_0x4a6557,_0x139f75){return new BPromise(function(_0x73302d,_0x19df79){var _0x2d64b1=_0x139f75||client;return _0x2d64b1['request'](_0x27b5a4,_0x4a6557)[_0x588d('0x1f')](function(_0x432da4){logger['info'](_0x588d('0x20'),_0x11c022,_0x588d('0x21'));logger['debug']('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x11c022,_0x588d('0x21'),JSON[_0x588d('0x22')](_0x432da4));if(_0x432da4['error']){if(_0x432da4[_0x588d('0x23')][_0x588d('0x24')]===0x1f4){logger[_0x588d('0x23')]('OpenchannelMessage,\x20%s,\x20%s',_0x11c022,_0x432da4[_0x588d('0x23')]['message']);return _0x19df79(_0x432da4['error']['message']);}logger['error'](_0x588d('0x20'),_0x11c022,_0x432da4[_0x588d('0x23')][_0x588d('0x25')]);return _0x73302d(_0x432da4['error'][_0x588d('0x25')]);}else{logger[_0x588d('0x26')](_0x588d('0x20'),_0x11c022,_0x588d('0x21'));_0x73302d(_0x432da4[_0x588d('0x27')][_0x588d('0x25')]);}})[_0x588d('0x28')](function(_0x1d53f3){logger['error'](_0x588d('0x20'),_0x11c022,_0x1d53f3);_0x19df79(_0x1d53f3);});});}function respondWithStatusCode(_0xb5e483,_0x50b365){_0x50b365=_0x50b365||0xcc;return function(_0x7cb1e1){if(_0x7cb1e1){return _0xb5e483['sendStatus'](_0x50b365);}return _0xb5e483[_0x588d('0x29')](_0x50b365)[_0x588d('0x2a')]();};}function respondWithResult(_0x27c6c0,_0x18d4bc){_0x18d4bc=_0x18d4bc||0xc8;return function(_0x576598){if(_0x576598){return _0x27c6c0[_0x588d('0x29')](_0x18d4bc)[_0x588d('0x2b')](_0x576598);}};}function respondWithFilteredResult(_0x56e764,_0x2a0a31){return function(_0x59f25f){if(_0x59f25f){var _0x1b3033=typeof _0x2a0a31['offset']===_0x588d('0x2c')&&typeof _0x2a0a31[_0x588d('0x2d')]==='undefined';var _0x365217=_0x59f25f[_0x588d('0x2e')];var _0x15669a=_0x1b3033?0x0:_0x2a0a31[_0x588d('0x2f')];var _0x19e72e=_0x1b3033?_0x59f25f[_0x588d('0x2e')]:_0x2a0a31[_0x588d('0x2f')]+_0x2a0a31[_0x588d('0x2d')];var _0xd67306;if(_0x19e72e>=_0x365217){_0x19e72e=_0x365217;_0xd67306=0xc8;}else{_0xd67306=0xce;}_0x56e764[_0x588d('0x29')](_0xd67306);return _0x56e764['set']('Content-Range',_0x15669a+'-'+_0x19e72e+'/'+_0x365217)[_0x588d('0x2b')](_0x59f25f);}return null;};}function patchUpdates(_0x37b86f){return function(_0x2c2ea3){try{jsonpatch[_0x588d('0x30')](_0x2c2ea3,_0x37b86f,!![]);}catch(_0x186d37){return BPromise['reject'](_0x186d37);}return _0x2c2ea3[_0x588d('0x31')]();};}function saveUpdates(_0x4d43aa,_0x372003){return function(_0x1c56ea){if(_0x1c56ea){return _0x1c56ea[_0x588d('0x32')](_0x4d43aa)[_0x588d('0x1f')](function(_0x28e7ac){return _0x28e7ac;});}return null;};}function removeEntity(_0x1ef5f0,_0x57f171){return function(_0x18269a){if(_0x18269a){return _0x18269a['destroy']()[_0x588d('0x1f')](function(){_0x1ef5f0[_0x588d('0x29')](0xcc)[_0x588d('0x2a')]();});}};}function handleEntityNotFound(_0x56b1a5,_0x1369d8){return function(_0x47b3e5){if(!_0x47b3e5){_0x56b1a5['sendStatus'](0x194);}return _0x47b3e5;};}function handleError(_0x592a19,_0x2983a){_0x2983a=_0x2983a||0x1f4;return function(_0x58122a){logger[_0x588d('0x23')](_0x58122a[_0x588d('0x33')]);if(_0x58122a['name']){delete _0x58122a[_0x588d('0x34')];}_0x592a19[_0x588d('0x29')](_0x2983a)[_0x588d('0x35')](_0x58122a);};}exports[_0x588d('0x36')]=function(_0x174dfc,_0x1c7762){var _0x5a55b4={},_0x262b4e={},_0x232310={'count':0x0,'rows':[]};var _0x5cb680=_[_0x588d('0x37')](db[_0x588d('0x38')]['rawAttributes'],function(_0x162ee7){return{'name':_0x162ee7[_0x588d('0x39')],'type':_0x162ee7['type'][_0x588d('0x3a')]};});_0x262b4e[_0x588d('0x3b')]=_[_0x588d('0x37')](_0x5cb680,'name');_0x262b4e[_0x588d('0x3c')]=_['keys'](_0x174dfc[_0x588d('0x3c')]);_0x262b4e[_0x588d('0x3d')]=_[_0x588d('0x3e')](_0x262b4e[_0x588d('0x3b')],_0x262b4e[_0x588d('0x3c')]);_0x5a55b4['attributes']=_['intersection'](_0x262b4e[_0x588d('0x3b')],qs[_0x588d('0x3f')](_0x174dfc[_0x588d('0x3c')][_0x588d('0x3f')]));_0x5a55b4['attributes']=_0x5a55b4['attributes'][_0x588d('0x40')]?_0x5a55b4['attributes']:_0x262b4e[_0x588d('0x3b')];if(!_0x174dfc['query'][_0x588d('0x41')](_0x588d('0x42'))){_0x5a55b4['limit']=qs[_0x588d('0x2d')](_0x174dfc[_0x588d('0x3c')][_0x588d('0x2d')]);_0x5a55b4[_0x588d('0x2f')]=qs[_0x588d('0x2f')](_0x174dfc['query'][_0x588d('0x2f')]);}_0x5a55b4[_0x588d('0x43')]=qs[_0x588d('0x44')](_0x174dfc[_0x588d('0x3c')][_0x588d('0x44')]);_0x5a55b4[_0x588d('0x45')]=qs[_0x588d('0x3d')](_[_0x588d('0x46')](_0x174dfc[_0x588d('0x3c')],_0x262b4e[_0x588d('0x3d')]),_0x5cb680);if(_0x174dfc[_0x588d('0x3c')][_0x588d('0x47')]){_0x5a55b4['where']=_['merge'](_0x5a55b4[_0x588d('0x45')],{'$or':_[_0x588d('0x37')](_0x5cb680,function(_0x8c3864){if(_0x8c3864[_0x588d('0x48')]!==_0x588d('0x49')){var _0x55c311={};_0x55c311[_0x8c3864[_0x588d('0x34')]]={'$like':'%'+_0x174dfc[_0x588d('0x3c')]['filter']+'%'};return _0x55c311;}})});}_0x5a55b4=_['merge']({},_0x5a55b4,_0x174dfc[_0x588d('0x4a')]);var _0x5b33a3={'where':_0x5a55b4[_0x588d('0x45')]};return db['OpenchannelMessage'][_0x588d('0x2e')](_0x5b33a3)[_0x588d('0x1f')](function(_0x4edc17){_0x232310[_0x588d('0x2e')]=_0x4edc17;if(_0x174dfc['query'][_0x588d('0x4b')]){_0x5a55b4['include']=[{'all':!![]}];}return db[_0x588d('0x38')][_0x588d('0x4c')](_0x5a55b4);})[_0x588d('0x1f')](function(_0x5a0131){_0x232310[_0x588d('0x4d')]=_0x5a0131;return _0x232310;})[_0x588d('0x1f')](respondWithFilteredResult(_0x1c7762,_0x5a55b4))[_0x588d('0x28')](handleError(_0x1c7762,null));};exports[_0x588d('0x4e')]=function(_0x5ead05,_0x546384){var _0x40ca4f={'raw':!![],'where':{'id':_0x5ead05['params']['id']}},_0xf0d0c3={};_0xf0d0c3['model']=_[_0x588d('0x4f')](db[_0x588d('0x38')][_0x588d('0x50')]);_0xf0d0c3[_0x588d('0x3c')]=_[_0x588d('0x4f')](_0x5ead05[_0x588d('0x3c')]);_0xf0d0c3[_0x588d('0x3d')]=_[_0x588d('0x3e')](_0xf0d0c3[_0x588d('0x3b')],_0xf0d0c3[_0x588d('0x3c')]);_0x40ca4f['attributes']=_['intersection'](_0xf0d0c3[_0x588d('0x3b')],qs['fields'](_0x5ead05[_0x588d('0x3c')][_0x588d('0x3f')]));_0x40ca4f['attributes']=_0x40ca4f[_0x588d('0x51')]['length']?_0x40ca4f['attributes']:_0xf0d0c3['model'];if(_0x5ead05[_0x588d('0x3c')][_0x588d('0x4b')]){_0x40ca4f[_0x588d('0x52')]=[{'all':!![]}];}_0x40ca4f=_[_0x588d('0x53')]({},_0x40ca4f,_0x5ead05[_0x588d('0x4a')]);return db['OpenchannelMessage'][_0x588d('0x54')](_0x40ca4f)[_0x588d('0x1f')](handleEntityNotFound(_0x546384,null))[_0x588d('0x1f')](respondWithResult(_0x546384,null))[_0x588d('0x28')](handleError(_0x546384,null));};exports[_0x588d('0x55')]=function(_0x1891b0,_0x488c41){return db[_0x588d('0x38')][_0x588d('0x55')](_0x1891b0[_0x588d('0x56')],{})[_0x588d('0x1f')](respondWithResult(_0x488c41,0xc9))['catch'](handleError(_0x488c41,null));};exports[_0x588d('0x32')]=function(_0x4594f8,_0x2dbefe){if(_0x4594f8[_0x588d('0x56')]['id']){delete _0x4594f8[_0x588d('0x56')]['id'];}return db[_0x588d('0x38')][_0x588d('0x54')]({'where':{'id':_0x4594f8['params']['id']}})[_0x588d('0x1f')](handleEntityNotFound(_0x2dbefe,null))[_0x588d('0x1f')](saveUpdates(_0x4594f8[_0x588d('0x56')],null))[_0x588d('0x1f')](respondWithResult(_0x2dbefe,null))[_0x588d('0x28')](handleError(_0x2dbefe,null));};exports[_0x588d('0x57')]=function(_0x2e476f,_0x22edd0){return db[_0x588d('0x38')]['find']({'where':{'id':_0x2e476f[_0x588d('0x58')]['id']}})[_0x588d('0x1f')](handleEntityNotFound(_0x22edd0,null))[_0x588d('0x1f')](removeEntity(_0x22edd0,null))['catch'](handleError(_0x22edd0,null));};exports['describe']=function(_0x5a011f,_0x199d61){return db[_0x588d('0x38')][_0x588d('0x59')]()['then'](respondWithResult(_0x199d61,null))[_0x588d('0x28')](handleError(_0x199d61,null));};var interaction_log=require(_0x588d('0x13'))(_0x588d('0x5a'));exports[_0x588d('0x5b')]=function(_0x28b103,_0x5adfca,_0x21a363){var _0x525d11={'agent':{},'channel':'openchannel'};if(_0x28b103[_0x588d('0x56')]['id']){delete _0x28b103['body']['id'];}_0x28b103['body'][_0x588d('0x5c')]=!![];_0x28b103[_0x588d('0x56')][_0x588d('0x5d')]=moment()[_0x588d('0x5e')]('YYYY-MM-DD\x20HH:mm:ss');_0x28b103[_0x588d('0x56')]['UserId']=_0x28b103[_0x588d('0x56')][_0x588d('0x5f')]||_0x28b103[_0x588d('0x60')]['id'];_0x525d11[_0x588d('0x61')]['id']=_0x28b103['body']['UserId'];return db[_0x588d('0x38')][_0x588d('0x54')]({'where':{'id':_0x28b103[_0x588d('0x58')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x5adfca,null))[_0x588d('0x1f')](saveUpdates(_0x28b103[_0x588d('0x56')],null))['then'](function(_0x562b1c){if(_0x562b1c){_0x525d11[_0x588d('0x25')]=_0x562b1c[_0x588d('0x62')]({'plain':!![]});return db['OpenchannelInteraction'][_0x588d('0x54')]({'where':{'id':_0x562b1c['OpenchannelInteractionId']}});}return null;})[_0x588d('0x1f')](handleEntityNotFound(_0x5adfca,null))['then'](function(_0x49d2fd){if(_0x49d2fd){return _0x49d2fd[_0x588d('0x32')]({'UserId':_0x28b103[_0x588d('0x56')][_0x588d('0x5f')],'read1stAt':_['isNil'](_0x49d2fd[_0x588d('0x63')])?moment()['format'](_0x588d('0x64')):undefined});}return null;})['then'](function(_0x7c5bb7){if(_0x7c5bb7){_0x525d11[_0x588d('0x65')]=_0x7c5bb7[_0x588d('0x62')]({'plain':!![]});interaction_log[_0x588d('0x26')](_0x588d('0x66'),_0x28b103[_0x588d('0x60')]['id'],_0x28b103['user'][_0x588d('0x34')],_0x28b103['user'][_0x588d('0x67')],_0x525d11['interaction']['id'],_0x28b103[_0x588d('0x56')]?JSON['stringify'](_0x28b103['body']):_0x588d('0x68'));return respondWithRpcPromise('AcceptMessage','acceptMessage',_0x525d11);}return null;})['then'](function(_0x476415){var _0xf5d30c=_0x588d('0x69')+_0x476415[_0x588d('0x25')][_0x588d('0x6a')];return db[_0x588d('0x6b')][_0x588d('0x3c')](_0xf5d30c,{'type':db['Sequelize'][_0x588d('0x6c')][_0x588d('0x6d')],'raw':!![]})[_0x588d('0x1f')](function(_0x15af7d){return _0x15af7d;});})['then'](function(_0x58c17c){if(_0x58c17c){_0x525d11[_0x588d('0x25')][_0x588d('0x6e')]=_0x58c17c[0x0];if(!_0x28b103['body'][_0x588d('0x5f')])return;return db[_0x588d('0x6f')]['find']({'where':{'id':_0x28b103[_0x588d('0x56')][_0x588d('0x5f')],'role':'agent'},'attributes':['id',_0x588d('0x34'),_0x588d('0x70'),_0x588d('0x71'),_0x588d('0x72')],'raw':!![]});}return null;})[_0x588d('0x1f')](function(_0x330744){if(!_0x330744)return null;_0x525d11[_0x588d('0x25')][_0x588d('0x61')]=_0x330744;return _0x525d11;})[_0x588d('0x1f')](function(_0x4f318d){if(_0x4f318d){if(_0x28b103['body']['manual']){_0x525d11[_0x588d('0x25')][_0x588d('0x73')]=util[_0x588d('0x5e')](_0x588d('0x74'),_0x28b103[_0x588d('0x60')][_0x588d('0x34')]);_0x525d11[_0x588d('0x25')]['channel']=_0x525d11[_0x588d('0x75')];_0x525d11[_0x588d('0x25')][_0x588d('0x76')]=_0x525d11[_0x588d('0x75')];_0x525d11[_0x588d('0x25')]['event']='accept';return respondWithRpcPromise('EventManager',_0x588d('0x77'),{'event':_0x588d('0x78'),'message':_0x525d11[_0x588d('0x25')]},client9002)['then'](function(){return _0x525d11;});}return _0x525d11;}return null;})[_0x588d('0x1f')](respondWithResult(_0x5adfca,null))[_0x588d('0x28')](handleError(_0x5adfca,null));};var interaction_log=require(_0x588d('0x13'))(_0x588d('0x5a'));exports[_0x588d('0x79')]=function(_0x2c0c08,_0x792b24,_0x2a522e){var _0x519be6={'agent':{},'channel':'openchannel'};if(_0x2c0c08[_0x588d('0x56')]['id']){delete _0x2c0c08[_0x588d('0x56')]['id'];}_0x2c0c08[_0x588d('0x56')][_0x588d('0x5f')]=_0x2c0c08[_0x588d('0x56')]['UserId']||_0x2c0c08[_0x588d('0x60')]['id'];_0x519be6[_0x588d('0x61')]['id']=_0x2c0c08['body'][_0x588d('0x5f')];return db['OpenchannelMessage'][_0x588d('0x54')]({'where':{'id':_0x2c0c08[_0x588d('0x58')]['id'],'UserId':null}})[_0x588d('0x1f')](handleEntityNotFound(_0x792b24,null))[_0x588d('0x1f')](function(_0x5205d7){if(_0x5205d7){_0x519be6['message']=_0x5205d7[_0x588d('0x62')]({'plain':!![]});return db[_0x588d('0x7a')][_0x588d('0x54')]({'where':{'id':_0x5205d7[_0x588d('0x7b')]}});}return null;})[_0x588d('0x1f')](handleEntityNotFound(_0x792b24,null))[_0x588d('0x1f')](function(_0x46bc9b){if(_0x46bc9b){_0x519be6['interaction']=_0x46bc9b[_0x588d('0x62')]({'plain':!![]});interaction_log[_0x588d('0x26')](_0x588d('0x7c'),_0x2c0c08[_0x588d('0x60')]['id'],_0x2c0c08[_0x588d('0x60')][_0x588d('0x34')],_0x2c0c08[_0x588d('0x60')][_0x588d('0x67')],_0x519be6['interaction']['id'],_0x2c0c08['body']?JSON[_0x588d('0x22')](_0x2c0c08[_0x588d('0x56')]):'null');return respondWithRpcPromise(_0x588d('0x7d'),_0x588d('0x7e'),_0x519be6);}return null;})[_0x588d('0x1f')](function(_0x3f7f63){var _0x10bdbc=_0x588d('0x69')+_0x3f7f63[_0x588d('0x25')][_0x588d('0x6a')];return db[_0x588d('0x6b')]['query'](_0x10bdbc,{'type':db[_0x588d('0x7f')]['QueryTypes'][_0x588d('0x6d')],'raw':!![]})[_0x588d('0x1f')](function(_0x33f160){return _0x33f160;});})[_0x588d('0x1f')](function(_0x4f8d31){if(_0x4f8d31){_0x519be6['message']['contact']=_0x4f8d31[0x0];if(!_0x2c0c08[_0x588d('0x56')][_0x588d('0x5f')])return;return db[_0x588d('0x6f')][_0x588d('0x54')]({'where':{'id':_0x2c0c08[_0x588d('0x56')]['UserId'],'role':_0x588d('0x61')},'attributes':['id',_0x588d('0x34'),_0x588d('0x70'),_0x588d('0x71'),'internal'],'raw':!![]});}return null;})[_0x588d('0x1f')](function(_0x89eeaf){if(!_0x89eeaf)return null;_0x519be6[_0x588d('0x25')][_0x588d('0x61')]=_0x89eeaf;return _0x519be6;})[_0x588d('0x1f')](function(_0x528b4a){if(_0x528b4a){_0x528b4a[_0x588d('0x25')][_0x588d('0x73')]=util[_0x588d('0x5e')](_0x588d('0x74'),_0x2c0c08[_0x588d('0x60')][_0x588d('0x34')]);_0x528b4a[_0x588d('0x25')][_0x588d('0x75')]=_0x519be6[_0x588d('0x75')];_0x528b4a[_0x588d('0x25')][_0x588d('0x76')]=_0x519be6[_0x588d('0x75')];_0x528b4a['message'][_0x588d('0x80')]=_0x588d('0x79');respondWithRpcPromise(_0x588d('0x77'),_0x588d('0x77'),{'event':'rejectmessage','message':_0x528b4a[_0x588d('0x25')]},client9002);return _0x519be6;}return null;})[_0x588d('0x1f')](respondWithResult(_0x792b24,null))[_0x588d('0x28')](handleError(_0x792b24,null));};
\ No newline at end of file
+var _0x40e0=['../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','jayson/promise','client','http','then','info','OpenchannelMessage,\x20%s,\x20%s','request\x20sent','debug','OpenchannelMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','json','undefined','limit','count','offset','Content-Range','apply','reject','save','destroy','stack','name','index','map','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','VIRTUAL','merge','options','includeAll','include','OpenchannelMessage','findAll','rows','catch','params','rawAttributes','find','create','body','update','describe','openchannel-interactions','accept','openchannel','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','agent','get','OpenchannelInteractionId','isNil','read1stAt','[OPENCHANNELMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','user','role','null','AcceptMessage','acceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','sequelize','Sequelize','QueryTypes','fullname','internal','manual','interface','channel','motionChannel','event','EventManager','acceptmessage','[OPENCHANNELMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','interaction','RejectMessage','rejectMessage','ContactId','contact','SIP/%s','rejectmessage','rimraf','request-promise','moment','bluebird','mustache','util','path','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util'];(function(_0x3823fb,_0x2d1a63){var _0x136f09=function(_0x56271f){while(--_0x56271f){_0x3823fb['push'](_0x3823fb['shift']());}};_0x136f09(++_0x2d1a63);}(_0x40e0,0x1f0));var _0x040e=function(_0x24d0d9,_0x4add38){_0x24d0d9=_0x24d0d9-0x0;var _0x582258=_0x40e0[_0x24d0d9];return _0x582258;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x040e('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x040e('0x1'));var moment=require(_0x040e('0x2'));var BPromise=require(_0x040e('0x3'));var Mustache=require(_0x040e('0x4'));var util=require(_0x040e('0x5'));var path=require(_0x040e('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require('squel');var crypto=require(_0x040e('0x7'));var jsforce=require(_0x040e('0x8'));var deskjs=require(_0x040e('0x9'));var toCsv=require('to-csv');var querystring=require(_0x040e('0xa'));var Papa=require('papaparse');var Redis=require(_0x040e('0xb'));var authService=require('../../components/auth/service');var qs=require(_0x040e('0xc'));var as=require(_0x040e('0xd'));var hardwareService=require(_0x040e('0xe'));var logger=require(_0x040e('0xf'))(_0x040e('0x10'));var utils=require(_0x040e('0x11'));var config=require(_0x040e('0x12'));var licenseUtil=require(_0x040e('0x13'));var db=require(_0x040e('0x14'))['db'];config[_0x040e('0x15')]=_[_0x040e('0x16')](config[_0x040e('0x15')],{'host':_0x040e('0x17'),'port':0x18eb});var socket=require(_0x040e('0x18'))(new Redis(config[_0x040e('0x15')]));require(_0x040e('0x19'))['register'](socket);var jayson=require(_0x040e('0x1a'));var client=jayson[_0x040e('0x1b')][_0x040e('0x1c')]({'port':0x232c});var client9002=jayson[_0x040e('0x1b')][_0x040e('0x1c')]({'port':0x232a});function respondWithRpcPromise(_0xe8b648,_0x15e49b,_0x447c2c,_0xd6a714){return new BPromise(function(_0x23c291,_0x4bde1b){var _0x2b441d=_0xd6a714||client;return _0x2b441d['request'](_0xe8b648,_0x447c2c)[_0x040e('0x1d')](function(_0x25e34f){logger[_0x040e('0x1e')](_0x040e('0x1f'),_0x15e49b,_0x040e('0x20'));logger[_0x040e('0x21')](_0x040e('0x22'),_0x15e49b,_0x040e('0x20'),JSON[_0x040e('0x23')](_0x25e34f));if(_0x25e34f[_0x040e('0x24')]){if(_0x25e34f[_0x040e('0x24')][_0x040e('0x25')]===0x1f4){logger['error'](_0x040e('0x1f'),_0x15e49b,_0x25e34f['error']['message']);return _0x4bde1b(_0x25e34f[_0x040e('0x24')][_0x040e('0x26')]);}logger[_0x040e('0x24')]('OpenchannelMessage,\x20%s,\x20%s',_0x15e49b,_0x25e34f['error'][_0x040e('0x26')]);return _0x23c291(_0x25e34f[_0x040e('0x24')][_0x040e('0x26')]);}else{logger[_0x040e('0x1e')]('OpenchannelMessage,\x20%s,\x20%s',_0x15e49b,_0x040e('0x20'));_0x23c291(_0x25e34f[_0x040e('0x27')][_0x040e('0x26')]);}})['catch'](function(_0x1dc423){logger[_0x040e('0x24')](_0x040e('0x1f'),_0x15e49b,_0x1dc423);_0x4bde1b(_0x1dc423);});});}function respondWithStatusCode(_0x1769fe,_0x1aee2b){_0x1aee2b=_0x1aee2b||0xcc;return function(_0x4d4ed1){if(_0x4d4ed1){return _0x1769fe[_0x040e('0x28')](_0x1aee2b);}return _0x1769fe[_0x040e('0x29')](_0x1aee2b)[_0x040e('0x2a')]();};}function respondWithResult(_0x5a9696,_0x56c9a0){_0x56c9a0=_0x56c9a0||0xc8;return function(_0x31830d){if(_0x31830d){return _0x5a9696[_0x040e('0x29')](_0x56c9a0)[_0x040e('0x2b')](_0x31830d);}};}function respondWithFilteredResult(_0x345931,_0x38d0dc){return function(_0x394df1){if(_0x394df1){var _0x14e756=typeof _0x38d0dc['offset']===_0x040e('0x2c')&&typeof _0x38d0dc[_0x040e('0x2d')]==='undefined';var _0xfa8081=_0x394df1[_0x040e('0x2e')];var _0x5d5cca=_0x14e756?0x0:_0x38d0dc[_0x040e('0x2f')];var _0x5afdea=_0x14e756?_0x394df1['count']:_0x38d0dc[_0x040e('0x2f')]+_0x38d0dc[_0x040e('0x2d')];var _0x55f6fe;if(_0x5afdea>=_0xfa8081){_0x5afdea=_0xfa8081;_0x55f6fe=0xc8;}else{_0x55f6fe=0xce;}_0x345931[_0x040e('0x29')](_0x55f6fe);return _0x345931['set'](_0x040e('0x30'),_0x5d5cca+'-'+_0x5afdea+'/'+_0xfa8081)['json'](_0x394df1);}return null;};}function patchUpdates(_0xadcd1a){return function(_0x3de255){try{jsonpatch[_0x040e('0x31')](_0x3de255,_0xadcd1a,!![]);}catch(_0x5c8d40){return BPromise[_0x040e('0x32')](_0x5c8d40);}return _0x3de255[_0x040e('0x33')]();};}function saveUpdates(_0x1c0fe3,_0x5413d8){return function(_0x37694c){if(_0x37694c){return _0x37694c['update'](_0x1c0fe3)['then'](function(_0x5b1178){return _0x5b1178;});}return null;};}function removeEntity(_0x4249ea,_0x16a66f){return function(_0x17ad5a){if(_0x17ad5a){return _0x17ad5a[_0x040e('0x34')]()[_0x040e('0x1d')](function(){_0x4249ea[_0x040e('0x29')](0xcc)[_0x040e('0x2a')]();});}};}function handleEntityNotFound(_0x4cc0e7,_0x2fc564){return function(_0xa15376){if(!_0xa15376){_0x4cc0e7[_0x040e('0x28')](0x194);}return _0xa15376;};}function handleError(_0x1f2ada,_0x36207b){_0x36207b=_0x36207b||0x1f4;return function(_0x31953){logger[_0x040e('0x24')](_0x31953[_0x040e('0x35')]);if(_0x31953[_0x040e('0x36')]){delete _0x31953['name'];}_0x1f2ada[_0x040e('0x29')](_0x36207b)['send'](_0x31953);};}exports[_0x040e('0x37')]=function(_0x27892e,_0x3470ec){var _0x12038c={},_0x311578={},_0xf39329={'count':0x0,'rows':[]};var _0x12ad6c=_[_0x040e('0x38')](db['OpenchannelMessage']['rawAttributes'],function(_0x5701d0){return{'name':_0x5701d0['fieldName'],'type':_0x5701d0[_0x040e('0x39')][_0x040e('0x3a')]};});_0x311578[_0x040e('0x3b')]=_['map'](_0x12ad6c,_0x040e('0x36'));_0x311578[_0x040e('0x3c')]=_[_0x040e('0x3d')](_0x27892e['query']);_0x311578[_0x040e('0x3e')]=_[_0x040e('0x3f')](_0x311578[_0x040e('0x3b')],_0x311578['query']);_0x12038c[_0x040e('0x40')]=_['intersection'](_0x311578[_0x040e('0x3b')],qs[_0x040e('0x41')](_0x27892e[_0x040e('0x3c')][_0x040e('0x41')]));_0x12038c['attributes']=_0x12038c[_0x040e('0x40')][_0x040e('0x42')]?_0x12038c[_0x040e('0x40')]:_0x311578['model'];if(!_0x27892e['query'][_0x040e('0x43')](_0x040e('0x44'))){_0x12038c[_0x040e('0x2d')]=qs[_0x040e('0x2d')](_0x27892e[_0x040e('0x3c')][_0x040e('0x2d')]);_0x12038c[_0x040e('0x2f')]=qs[_0x040e('0x2f')](_0x27892e[_0x040e('0x3c')][_0x040e('0x2f')]);}_0x12038c['order']=qs[_0x040e('0x45')](_0x27892e[_0x040e('0x3c')]['sort']);_0x12038c[_0x040e('0x46')]=qs[_0x040e('0x3e')](_[_0x040e('0x47')](_0x27892e[_0x040e('0x3c')],_0x311578[_0x040e('0x3e')]),_0x12ad6c);if(_0x27892e[_0x040e('0x3c')][_0x040e('0x48')]){_0x12038c['where']=_['merge'](_0x12038c[_0x040e('0x46')],{'$or':_[_0x040e('0x38')](_0x12ad6c,function(_0x139ea0){if(_0x139ea0[_0x040e('0x39')]!==_0x040e('0x49')){var _0xf3dd61={};_0xf3dd61[_0x139ea0[_0x040e('0x36')]]={'$like':'%'+_0x27892e[_0x040e('0x3c')]['filter']+'%'};return _0xf3dd61;}})});}_0x12038c=_[_0x040e('0x4a')]({},_0x12038c,_0x27892e[_0x040e('0x4b')]);var _0x491d86={'where':_0x12038c['where']};return db['OpenchannelMessage']['count'](_0x491d86)[_0x040e('0x1d')](function(_0x333169){_0xf39329[_0x040e('0x2e')]=_0x333169;if(_0x27892e['query'][_0x040e('0x4c')]){_0x12038c[_0x040e('0x4d')]=[{'all':!![]}];}return db[_0x040e('0x4e')][_0x040e('0x4f')](_0x12038c);})[_0x040e('0x1d')](function(_0x5934dd){_0xf39329[_0x040e('0x50')]=_0x5934dd;return _0xf39329;})[_0x040e('0x1d')](respondWithFilteredResult(_0x3470ec,_0x12038c))[_0x040e('0x51')](handleError(_0x3470ec,null));};exports['show']=function(_0x599918,_0x192df6){var _0x1c46c6={'raw':!![],'where':{'id':_0x599918[_0x040e('0x52')]['id']}},_0x181c85={};_0x181c85['model']=_[_0x040e('0x3d')](db[_0x040e('0x4e')][_0x040e('0x53')]);_0x181c85[_0x040e('0x3c')]=_[_0x040e('0x3d')](_0x599918[_0x040e('0x3c')]);_0x181c85[_0x040e('0x3e')]=_[_0x040e('0x3f')](_0x181c85[_0x040e('0x3b')],_0x181c85[_0x040e('0x3c')]);_0x1c46c6[_0x040e('0x40')]=_[_0x040e('0x3f')](_0x181c85[_0x040e('0x3b')],qs[_0x040e('0x41')](_0x599918[_0x040e('0x3c')][_0x040e('0x41')]));_0x1c46c6[_0x040e('0x40')]=_0x1c46c6[_0x040e('0x40')][_0x040e('0x42')]?_0x1c46c6['attributes']:_0x181c85['model'];if(_0x599918['query'][_0x040e('0x4c')]){_0x1c46c6[_0x040e('0x4d')]=[{'all':!![]}];}_0x1c46c6=_[_0x040e('0x4a')]({},_0x1c46c6,_0x599918['options']);return db['OpenchannelMessage'][_0x040e('0x54')](_0x1c46c6)[_0x040e('0x1d')](handleEntityNotFound(_0x192df6,null))[_0x040e('0x1d')](respondWithResult(_0x192df6,null))[_0x040e('0x51')](handleError(_0x192df6,null));};exports[_0x040e('0x55')]=function(_0x26f775,_0x20a19a){return db[_0x040e('0x4e')]['create'](_0x26f775[_0x040e('0x56')],{})['then'](respondWithResult(_0x20a19a,0xc9))[_0x040e('0x51')](handleError(_0x20a19a,null));};exports[_0x040e('0x57')]=function(_0x1c3f76,_0x564fab){if(_0x1c3f76[_0x040e('0x56')]['id']){delete _0x1c3f76[_0x040e('0x56')]['id'];}return db['OpenchannelMessage']['find']({'where':{'id':_0x1c3f76[_0x040e('0x52')]['id']}})[_0x040e('0x1d')](handleEntityNotFound(_0x564fab,null))[_0x040e('0x1d')](saveUpdates(_0x1c3f76[_0x040e('0x56')],null))[_0x040e('0x1d')](respondWithResult(_0x564fab,null))['catch'](handleError(_0x564fab,null));};exports['destroy']=function(_0x174742,_0x1f8315){return db[_0x040e('0x4e')]['find']({'where':{'id':_0x174742[_0x040e('0x52')]['id']}})[_0x040e('0x1d')](handleEntityNotFound(_0x1f8315,null))[_0x040e('0x1d')](removeEntity(_0x1f8315,null))[_0x040e('0x51')](handleError(_0x1f8315,null));};exports[_0x040e('0x58')]=function(_0x23d767,_0x21234b){return db['OpenchannelMessage'][_0x040e('0x58')]()[_0x040e('0x1d')](respondWithResult(_0x21234b,null))[_0x040e('0x51')](handleError(_0x21234b,null));};var interaction_log=require(_0x040e('0xf'))(_0x040e('0x59'));exports[_0x040e('0x5a')]=function(_0x35b7c7,_0x56fe17,_0x16f8e0){var _0x3f6b7e={'agent':{},'channel':_0x040e('0x5b')};if(_0x35b7c7[_0x040e('0x56')]['id']){delete _0x35b7c7['body']['id'];}_0x35b7c7[_0x040e('0x56')][_0x040e('0x5c')]=!![];_0x35b7c7['body'][_0x040e('0x5d')]=moment()[_0x040e('0x5e')](_0x040e('0x5f'));_0x35b7c7[_0x040e('0x56')][_0x040e('0x60')]=_0x35b7c7['body'][_0x040e('0x60')]||_0x35b7c7['user']['id'];_0x3f6b7e[_0x040e('0x61')]['id']=_0x35b7c7['body'][_0x040e('0x60')];return db[_0x040e('0x4e')]['find']({'where':{'id':_0x35b7c7[_0x040e('0x52')]['id'],'UserId':null}})[_0x040e('0x1d')](handleEntityNotFound(_0x56fe17,null))[_0x040e('0x1d')](saveUpdates(_0x35b7c7[_0x040e('0x56')],null))['then'](function(_0x4b75ee){if(_0x4b75ee){_0x3f6b7e[_0x040e('0x26')]=_0x4b75ee[_0x040e('0x62')]({'plain':!![]});return db['OpenchannelInteraction']['find']({'where':{'id':_0x4b75ee[_0x040e('0x63')]}});}return null;})['then'](handleEntityNotFound(_0x56fe17,null))[_0x040e('0x1d')](function(_0x45b723){if(_0x45b723){return _0x45b723['update']({'UserId':_0x35b7c7['body'][_0x040e('0x60')],'read1stAt':_[_0x040e('0x64')](_0x45b723[_0x040e('0x65')])?moment()[_0x040e('0x5e')](_0x040e('0x5f')):undefined});}return null;})[_0x040e('0x1d')](function(_0xca9b5d){if(_0xca9b5d){_0x3f6b7e['interaction']=_0xca9b5d[_0x040e('0x62')]({'plain':!![]});interaction_log[_0x040e('0x1e')](_0x040e('0x66'),_0x35b7c7[_0x040e('0x67')]['id'],_0x35b7c7[_0x040e('0x67')][_0x040e('0x36')],_0x35b7c7['user'][_0x040e('0x68')],_0x3f6b7e['interaction']['id'],_0x35b7c7[_0x040e('0x56')]?JSON[_0x040e('0x23')](_0x35b7c7['body']):_0x040e('0x69'));return respondWithRpcPromise(_0x040e('0x6a'),_0x040e('0x6b'),_0x3f6b7e);}return null;})[_0x040e('0x1d')](function(_0x2c9fdd){var _0x3d7f27=_0x040e('0x6c')+_0x2c9fdd[_0x040e('0x26')]['ContactId'];return db[_0x040e('0x6d')][_0x040e('0x3c')](_0x3d7f27,{'type':db[_0x040e('0x6e')][_0x040e('0x6f')]['SELECT'],'raw':!![]})['then'](function(_0x204c25){return _0x204c25;});})['then'](function(_0x115285){if(_0x115285){_0x3f6b7e['message']['contact']=_0x115285[0x0];if(!_0x35b7c7[_0x040e('0x56')][_0x040e('0x60')])return;return db['User'][_0x040e('0x54')]({'where':{'id':_0x35b7c7[_0x040e('0x56')][_0x040e('0x60')],'role':_0x040e('0x61')},'attributes':['id',_0x040e('0x36'),_0x040e('0x70'),'email',_0x040e('0x71')],'raw':!![]});}return null;})[_0x040e('0x1d')](function(_0x8bca9b){if(!_0x8bca9b)return null;_0x3f6b7e['message'][_0x040e('0x61')]=_0x8bca9b;return _0x3f6b7e;})['then'](function(_0x2ea84f){if(_0x2ea84f){if(_0x35b7c7[_0x040e('0x56')][_0x040e('0x72')]){_0x3f6b7e[_0x040e('0x26')][_0x040e('0x73')]=util[_0x040e('0x5e')]('SIP/%s',_0x35b7c7[_0x040e('0x67')][_0x040e('0x36')]);_0x3f6b7e[_0x040e('0x26')][_0x040e('0x74')]=_0x3f6b7e[_0x040e('0x74')];_0x3f6b7e[_0x040e('0x26')][_0x040e('0x75')]=_0x3f6b7e[_0x040e('0x74')];_0x3f6b7e['message'][_0x040e('0x76')]='accept';return respondWithRpcPromise('EventManager',_0x040e('0x77'),{'event':_0x040e('0x78'),'message':_0x3f6b7e[_0x040e('0x26')]},client9002)[_0x040e('0x1d')](function(){return _0x3f6b7e;});}return _0x3f6b7e;}return null;})['then'](respondWithResult(_0x56fe17,null))['catch'](handleError(_0x56fe17,null));};var interaction_log=require(_0x040e('0xf'))(_0x040e('0x59'));exports[_0x040e('0x32')]=function(_0x129126,_0x582fe3,_0x3ecee4){var _0xd5229a={'agent':{},'channel':_0x040e('0x5b')};if(_0x129126[_0x040e('0x56')]['id']){delete _0x129126[_0x040e('0x56')]['id'];}_0x129126[_0x040e('0x56')][_0x040e('0x60')]=_0x129126['body']['UserId']||_0x129126['user']['id'];_0xd5229a[_0x040e('0x61')]['id']=_0x129126['body'][_0x040e('0x60')];return db[_0x040e('0x4e')][_0x040e('0x54')]({'where':{'id':_0x129126[_0x040e('0x52')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x582fe3,null))[_0x040e('0x1d')](function(_0x279506){if(_0x279506){_0xd5229a['message']=_0x279506[_0x040e('0x62')]({'plain':!![]});return db['OpenchannelInteraction'][_0x040e('0x54')]({'where':{'id':_0x279506['OpenchannelInteractionId']}});}return null;})[_0x040e('0x1d')](handleEntityNotFound(_0x582fe3,null))['then'](function(_0x10d975){if(_0x10d975){_0xd5229a['interaction']=_0x10d975[_0x040e('0x62')]({'plain':!![]});interaction_log['info'](_0x040e('0x79'),_0x129126[_0x040e('0x67')]['id'],_0x129126[_0x040e('0x67')]['name'],_0x129126[_0x040e('0x67')]['role'],_0xd5229a[_0x040e('0x7a')]['id'],_0x129126['body']?JSON['stringify'](_0x129126[_0x040e('0x56')]):_0x040e('0x69'));return respondWithRpcPromise(_0x040e('0x7b'),_0x040e('0x7c'),_0xd5229a);}return null;})[_0x040e('0x1d')](function(_0x4bda4c){var _0x9a9f32=_0x040e('0x6c')+_0x4bda4c['message'][_0x040e('0x7d')];return db[_0x040e('0x6d')][_0x040e('0x3c')](_0x9a9f32,{'type':db['Sequelize'][_0x040e('0x6f')]['SELECT'],'raw':!![]})[_0x040e('0x1d')](function(_0x18af3c){return _0x18af3c;});})[_0x040e('0x1d')](function(_0x30a8b6){if(_0x30a8b6){_0xd5229a[_0x040e('0x26')][_0x040e('0x7e')]=_0x30a8b6[0x0];if(!_0x129126[_0x040e('0x56')]['UserId'])return;return db['User'][_0x040e('0x54')]({'where':{'id':_0x129126['body'][_0x040e('0x60')],'role':_0x040e('0x61')},'attributes':['id',_0x040e('0x36'),_0x040e('0x70'),'email',_0x040e('0x71')],'raw':!![]});}return null;})['then'](function(_0x2df3f0){if(!_0x2df3f0)return null;_0xd5229a[_0x040e('0x26')][_0x040e('0x61')]=_0x2df3f0;return _0xd5229a;})[_0x040e('0x1d')](function(_0x1a1d52){if(_0x1a1d52){_0x1a1d52[_0x040e('0x26')][_0x040e('0x73')]=util['format'](_0x040e('0x7f'),_0x129126[_0x040e('0x67')]['name']);_0x1a1d52['message'][_0x040e('0x74')]=_0xd5229a[_0x040e('0x74')];_0x1a1d52[_0x040e('0x26')][_0x040e('0x75')]=_0xd5229a[_0x040e('0x74')];_0x1a1d52[_0x040e('0x26')][_0x040e('0x76')]=_0x040e('0x32');respondWithRpcPromise(_0x040e('0x77'),'EventManager',{'event':_0x040e('0x80'),'message':_0x1a1d52[_0x040e('0x26')]},client9002);return _0xd5229a;}return null;})[_0x040e('0x1d')](respondWithResult(_0x582fe3,null))[_0x040e('0x51')](handleError(_0x582fe3,null));};
\ No newline at end of file
index 14864a9..fcb4383 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb920=['exports','events','OpenchannelMessage','save','remove'];(function(_0x4f3deb,_0x275a81){var _0x2670b0=function(_0x2edf71){while(--_0x2edf71){_0x4f3deb['push'](_0x4f3deb['shift']());}};_0x2670b0(++_0x275a81);}(_0xb920,0x1e6));var _0x0b92=function(_0xabca41,_0xbfdf4a){_0xabca41=_0xabca41-0x0;var _0x404ccb=_0xb920[_0xabca41];return _0x404ccb;};'use strict';var EventEmitter=require(_0x0b92('0x0'));var OpenchannelMessage=require('../../mysqldb')['db'][_0x0b92('0x1')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x0b92('0x2'),'afterUpdate':'update','afterDestroy':_0x0b92('0x3')};function emitEvent(_0x1b5cc8){return function(_0x6a173e,_0x5c5dc3,_0x307236){OpenchannelMessageEvents['emit'](_0x1b5cc8+':'+_0x6a173e['id'],_0x6a173e);OpenchannelMessageEvents['emit'](_0x1b5cc8,_0x6a173e);_0x307236(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module[_0x0b92('0x4')]=OpenchannelMessageEvents;
\ No newline at end of file
+var _0x97fd=['OpenchannelMessage','setMaxListeners','save','update','remove','emit','hasOwnProperty','exports'];(function(_0x48851a,_0x1318ea){var _0x1c2167=function(_0x264974){while(--_0x264974){_0x48851a['push'](_0x48851a['shift']());}};_0x1c2167(++_0x1318ea);}(_0x97fd,0x88));var _0xd97f=function(_0x14d603,_0x133283){_0x14d603=_0x14d603-0x0;var _0x5d5f92=_0x97fd[_0x14d603];return _0x5d5f92;};'use strict';var EventEmitter=require('events');var OpenchannelMessage=require('../../mysqldb')['db'][_0xd97f('0x0')];var OpenchannelMessageEvents=new EventEmitter();OpenchannelMessageEvents[_0xd97f('0x1')](0x0);var events={'afterCreate':_0xd97f('0x2'),'afterUpdate':_0xd97f('0x3'),'afterDestroy':_0xd97f('0x4')};function emitEvent(_0x18e59f){return function(_0x4fbe1f,_0x5d6152,_0x1339bc){OpenchannelMessageEvents[_0xd97f('0x5')](_0x18e59f+':'+_0x4fbe1f['id'],_0x4fbe1f);OpenchannelMessageEvents[_0xd97f('0x5')](_0x18e59f,_0x4fbe1f);_0x1339bc(null);};}for(var e in events){if(events[_0xd97f('0x6')](e)){var event=events[e];OpenchannelMessage['hook'](e,emitEvent(event));}}module[_0xd97f('0x7')]=OpenchannelMessageEvents;
\ No newline at end of file
index 15d537b..39d652c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4f4=['Interactions','Contact','keys','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s','omit','POST','method','Message\x20%d\x20forwarded\x20to\x20%s','Interaction','threadId','error','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','body','models','get','direction','toLowerCase','out','secret','isNil','UserId','OpenchannelInteraction','OpenchannelInteractionId','update','createdAt','catch','CmContact','describe','then','OpenchannelAccount','find','OpenchannelAccountId'];(function(_0x37422e,_0x40b94d){var _0x3e9df9=function(_0xfab3ce){while(--_0xfab3ce){_0x37422e['push'](_0x37422e['shift']());}};_0x3e9df9(++_0x40b94d);}(_0xf4f4,0xe3));var _0x4f4f=function(_0x2b9e76,_0x467e25){_0x2b9e76=_0x2b9e76-0x0;var _0x4c014e=_0xf4f4[_0x2b9e76];return _0x4c014e;};'use strict';var _=require(_0x4f4f('0x0'));var util=require(_0x4f4f('0x1'));var logger=require('../../config/logger')(_0x4f4f('0x2'));var moment=require(_0x4f4f('0x3'));var BPromise=require(_0x4f4f('0x4'));var rp=require(_0x4f4f('0x5'));var fs=require('fs');var path=require(_0x4f4f('0x6'));var rimraf=require('rimraf');var config=require(_0x4f4f('0x7'));var attributes=require('./openchannelMessage.attributes');module[_0x4f4f('0x8')]=function(_0x132d5c,_0x20ee6e){return _0x132d5c[_0x4f4f('0x9')](_0x4f4f('0xa'),attributes,{'tableName':_0x4f4f('0xb'),'paranoid':![],'indexes':[{'name':_0x4f4f('0xc'),'fields':[_0x4f4f('0xd')],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0xc066a4,_0x38d110,_0x39e36b){var _0x2d86d1=_0x132d5c[_0x4f4f('0xe')];var _0x11940f=_0xc066a4[_0x4f4f('0xf')]({'plain':!![]});if(_0x11940f[_0x4f4f('0x10')]['toLowerCase']()==='in'||_0x11940f['direction'][_0x4f4f('0x11')]()===_0x4f4f('0x12')&&!_0x11940f[_0x4f4f('0x13')]&&!_[_0x4f4f('0x14')](_0x11940f[_0x4f4f('0x15')])){_0x2d86d1[_0x4f4f('0x16')]['findOne']({'where':{'id':_0x11940f[_0x4f4f('0x17')]}})['then'](function(_0x216ba8){if(_0x216ba8){_0x216ba8[_0x4f4f('0x18')]({'lastMsgAt':_0x11940f[_0x4f4f('0x19')],'lastMsgDirection':_0x11940f[_0x4f4f('0x10')]['toLowerCase']()});}})[_0x4f4f('0x1a')](function(_0x4c68f4){console['error'](_0x4c68f4);});}if(_0x11940f['direction']===_0x4f4f('0x12')&&!_0x11940f[_0x4f4f('0x13')]){var _0x2d21ed;_0x2d86d1[_0x4f4f('0x1b')][_0x4f4f('0x1c')]()[_0x4f4f('0x1d')](function(_0x1245c4){return _0x2d86d1[_0x4f4f('0x1e')][_0x4f4f('0x1f')]({'where':{'id':_0x11940f[_0x4f4f('0x20')]},'include':[{'model':_0x2d86d1[_0x4f4f('0x16')],'as':_0x4f4f('0x21'),'where':{'id':_0x11940f['OpenchannelInteractionId']},'limit':0x1,'include':[{'model':_0x2d86d1[_0x4f4f('0x1b')],'as':_0x4f4f('0x22'),'attributes':_[_0x4f4f('0x23')](_0x1245c4)}]}]});})[_0x4f4f('0x1d')](function(_0x302a79){_0x2d21ed=_0x302a79[_0x4f4f('0xf')]({'plain':!![]});if(_0x2d21ed&&_0x2d21ed[_0x4f4f('0x24')]){logger[_0x4f4f('0x25')](_0x4f4f('0x26'),_0x4f4f('0x27'),util[_0x4f4f('0x28')](_0x4f4f('0x29'),_0x11940f['id'],_0x2d21ed[_0x4f4f('0x24')]));if(_0x2d21ed[_0x4f4f('0x21')]&&_0x2d21ed['Interactions']['length']){_0x11940f['Interaction']=_[_0x4f4f('0x2a')](_0x2d21ed[_0x4f4f('0x21')][0x0],'Contact');_0x11940f[_0x4f4f('0x22')]=_0x2d21ed[_0x4f4f('0x21')][0x0][_0x4f4f('0x22')];}var _0x38d110={'method':_0x4f4f('0x2b'),'uri':encodeURI(_0x2d21ed[_0x4f4f('0x24')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x38d110[_0x4f4f('0x2c')]){case'GET':_0x38d110['qs']=_0x11940f;break;case _0x4f4f('0x2b'):_0x38d110[_0x4f4f('0xd')]=_0x11940f;break;}return rp(_0x38d110)[_0x4f4f('0x1d')](function(_0x15c79c){logger[_0x4f4f('0x25')]('OpenchannelMessage,\x20%s,\x20%s',_0x4f4f('0x27'),util[_0x4f4f('0x28')](_0x4f4f('0x2d'),_0x11940f['id'],_0x2d21ed['replyUri']));if(_0x15c79c['body']['threadId']&&_0x15c79c[_0x4f4f('0xd')]['threadId']!=_0x11940f[_0x4f4f('0x2e')][_0x4f4f('0x2f')]){return _0x2d86d1[_0x4f4f('0x16')]['update']({'threadId':_0x15c79c[_0x4f4f('0xd')][_0x4f4f('0x2f')]},{'logging':!![],'where':{'id':_0x11940f['Interaction']['id']}});}else{return;}})[_0x4f4f('0x1d')](function(){return _0xc066a4[_0x4f4f('0x18')]({'read':!![]});})[_0x4f4f('0x1a')](function(_0x5b937e){logger[_0x4f4f('0x30')](_0x4f4f('0x26'),'afterCreate',util['inspect'](_0x5b937e,{'showHidden':![],'depth':null}));_0x39e36b();});}else{_0x39e36b();}})[_0x4f4f('0x31')](function(){_0x39e36b();});}else{_0x39e36b();}}},'charset':_0x4f4f('0x32'),'collate':_0x4f4f('0x33')});};
\ No newline at end of file
+var _0x9c34=['length','omit','POST','method','GET','Message\x20%d\x20forwarded\x20to\x20%s','body','Interaction','threadId','inspect','finally','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','rimraf','./openchannelMessage.attributes','exports','define','OpenchannelMessage','openchannel_messages','fti_openchannel_messages','FULLTEXT','direction','toLowerCase','out','isNil','UserId','OpenchannelInteraction','findOne','OpenchannelInteractionId','update','createdAt','catch','error','CmContact','describe','then','OpenchannelAccount','find','OpenchannelAccountId','Interactions','Contact','keys','get','replyUri','info','OpenchannelMessage,\x20%s,\x20%s','afterCreate','format','Forwarding\x20message\x20%d\x20to\x20%s'];(function(_0x2f1cdf,_0x1f422e){var _0x476c6e=function(_0x30375a){while(--_0x30375a){_0x2f1cdf['push'](_0x2f1cdf['shift']());}};_0x476c6e(++_0x1f422e);}(_0x9c34,0xb2));var _0x49c3=function(_0x5d810b,_0x5d07fd){_0x5d810b=_0x5d810b-0x0;var _0x53b0ed=_0x9c34[_0x5d810b];return _0x53b0ed;};'use strict';var _=require(_0x49c3('0x0'));var util=require(_0x49c3('0x1'));var logger=require(_0x49c3('0x2'))(_0x49c3('0x3'));var moment=require('moment');var BPromise=require(_0x49c3('0x4'));var rp=require(_0x49c3('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x49c3('0x6'));var config=require('../../config/environment');var attributes=require(_0x49c3('0x7'));module[_0x49c3('0x8')]=function(_0x307e87,_0x596c98){return _0x307e87[_0x49c3('0x9')](_0x49c3('0xa'),attributes,{'tableName':_0x49c3('0xb'),'paranoid':![],'indexes':[{'name':_0x49c3('0xc'),'fields':['body'],'type':_0x49c3('0xd')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x560b82,_0x5b490e,_0x2bd3c1){var _0x43760e=_0x307e87['models'];var _0x1a75ef=_0x560b82['get']({'plain':!![]});if(_0x1a75ef[_0x49c3('0xe')][_0x49c3('0xf')]()==='in'||_0x1a75ef[_0x49c3('0xe')][_0x49c3('0xf')]()===_0x49c3('0x10')&&!_0x1a75ef['secret']&&!_[_0x49c3('0x11')](_0x1a75ef[_0x49c3('0x12')])){_0x43760e[_0x49c3('0x13')][_0x49c3('0x14')]({'where':{'id':_0x1a75ef[_0x49c3('0x15')]}})['then'](function(_0x15fb01){if(_0x15fb01){_0x15fb01[_0x49c3('0x16')]({'lastMsgAt':_0x1a75ef[_0x49c3('0x17')],'lastMsgDirection':_0x1a75ef[_0x49c3('0xe')][_0x49c3('0xf')]()});}})[_0x49c3('0x18')](function(_0xb57de4){console[_0x49c3('0x19')](_0xb57de4);});}if(_0x1a75ef[_0x49c3('0xe')]==='out'&&!_0x1a75ef['secret']){var _0x34a696;_0x43760e[_0x49c3('0x1a')][_0x49c3('0x1b')]()[_0x49c3('0x1c')](function(_0x3058a7){return _0x43760e[_0x49c3('0x1d')][_0x49c3('0x1e')]({'where':{'id':_0x1a75ef[_0x49c3('0x1f')]},'include':[{'model':_0x43760e[_0x49c3('0x13')],'as':_0x49c3('0x20'),'where':{'id':_0x1a75ef['OpenchannelInteractionId']},'limit':0x1,'include':[{'model':_0x43760e[_0x49c3('0x1a')],'as':_0x49c3('0x21'),'attributes':_[_0x49c3('0x22')](_0x3058a7)}]}]});})[_0x49c3('0x1c')](function(_0x49a529){_0x34a696=_0x49a529[_0x49c3('0x23')]({'plain':!![]});if(_0x34a696&&_0x34a696[_0x49c3('0x24')]){logger[_0x49c3('0x25')](_0x49c3('0x26'),_0x49c3('0x27'),util[_0x49c3('0x28')](_0x49c3('0x29'),_0x1a75ef['id'],_0x34a696['replyUri']));if(_0x34a696['Interactions']&&_0x34a696[_0x49c3('0x20')][_0x49c3('0x2a')]){_0x1a75ef['Interaction']=_[_0x49c3('0x2b')](_0x34a696['Interactions'][0x0],'Contact');_0x1a75ef['Contact']=_0x34a696[_0x49c3('0x20')][0x0][_0x49c3('0x21')];}var _0x5b490e={'method':_0x49c3('0x2c'),'uri':encodeURI(_0x34a696[_0x49c3('0x24')]),'json':!![],'resolveWithFullResponse':!![]};switch(_0x5b490e[_0x49c3('0x2d')]){case _0x49c3('0x2e'):_0x5b490e['qs']=_0x1a75ef;break;case'POST':_0x5b490e['body']=_0x1a75ef;break;}return rp(_0x5b490e)[_0x49c3('0x1c')](function(_0x43380f){logger[_0x49c3('0x25')]('OpenchannelMessage,\x20%s,\x20%s','afterCreate',util[_0x49c3('0x28')](_0x49c3('0x2f'),_0x1a75ef['id'],_0x34a696['replyUri']));if(_0x43380f['body']['threadId']&&_0x43380f[_0x49c3('0x30')]['threadId']!=_0x1a75ef[_0x49c3('0x31')]['threadId']){return _0x43760e[_0x49c3('0x13')]['update']({'threadId':_0x43380f[_0x49c3('0x30')][_0x49c3('0x32')]},{'where':{'id':_0x1a75ef[_0x49c3('0x31')]['id']}});}else{return;}})[_0x49c3('0x1c')](function(){return _0x560b82[_0x49c3('0x16')]({'read':!![]});})[_0x49c3('0x18')](function(_0xebcb20){logger[_0x49c3('0x19')](_0x49c3('0x26'),'afterCreate',util[_0x49c3('0x33')](_0xebcb20,{'showHidden':![],'depth':null}));_0x2bd3c1();});}else{_0x2bd3c1();}})[_0x49c3('0x34')](function(){_0x2bd3c1();});}else{_0x2bd3c1();}}},'charset':_0x49c3('0x35'),'collate':_0x49c3('0x36')});};
\ No newline at end of file
index a04267d..58bbc52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ef3=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','defaults','localhost','socket.io-emitter','./openchannelMessage.socket','register','request','then','OpenchannelMessage,\x20%s,\x20%s','debug','request\x20sent','stringify','code','error','message','result','catch','CreateOpenchannelMessage','create','options','info'];(function(_0x1a2ac5,_0x431ac7){var _0x2cedd0=function(_0x169aac){while(--_0x169aac){_0x1a2ac5['push'](_0x1a2ac5['shift']());}};_0x2cedd0(++_0x431ac7);}(_0x2ef3,0xba));var _0x32ef=function(_0x53fddb,_0x4614d8){_0x53fddb=_0x53fddb-0x0;var _0x10d7da=_0x2ef3[_0x53fddb];return _0x10d7da;};'use strict';var _=require(_0x32ef('0x0'));var util=require(_0x32ef('0x1'));var moment=require(_0x32ef('0x2'));var BPromise=require(_0x32ef('0x3'));var rs=require(_0x32ef('0x4'));var fs=require('fs');var Redis=require(_0x32ef('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x32ef('0x6'));var logger=require(_0x32ef('0x7'))('rpc');var config=require(_0x32ef('0x8'));var jayson=require(_0x32ef('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0x32ef('0xa')]=_[_0x32ef('0xb')](config[_0x32ef('0xa')],{'host':_0x32ef('0xc'),'port':0x18eb});var socket=require(_0x32ef('0xd'))(new Redis(config[_0x32ef('0xa')]));require(_0x32ef('0xe'))[_0x32ef('0xf')](socket);function respondWithRpcPromise(_0x28275c,_0x77df79,_0x56eb42){return new BPromise(function(_0x5780e9,_0x401d0b){return client[_0x32ef('0x10')](_0x28275c,_0x56eb42)[_0x32ef('0x11')](function(_0x1499c2){logger['info'](_0x32ef('0x12'),_0x77df79,'request\x20sent');logger[_0x32ef('0x13')]('OpenchannelMessage,\x20%s,\x20%s,\x20%s',_0x77df79,_0x32ef('0x14'),JSON[_0x32ef('0x15')](_0x1499c2));if(_0x1499c2['error']){if(_0x1499c2['error'][_0x32ef('0x16')]===0x1f4){logger['error'](_0x32ef('0x12'),_0x77df79,_0x1499c2[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x401d0b(_0x1499c2[_0x32ef('0x17')]['message']);}logger['error']('OpenchannelMessage,\x20%s,\x20%s',_0x77df79,_0x1499c2[_0x32ef('0x17')][_0x32ef('0x18')]);return _0x5780e9(_0x1499c2[_0x32ef('0x17')]['message']);}else{logger['info'](_0x32ef('0x12'),_0x77df79,_0x32ef('0x14'));_0x5780e9(_0x1499c2[_0x32ef('0x19')]['message']);}})[_0x32ef('0x1a')](function(_0x33e230){logger['error'](_0x32ef('0x12'),_0x77df79,_0x33e230);_0x401d0b(_0x33e230);});});}exports[_0x32ef('0x1b')]=function(_0x26aff3){var _0x251084=this;return new Promise(function(_0x445cda,_0x3aec05){return db['OpenchannelMessage'][_0x32ef('0x1c')](_0x26aff3['body'],{'raw':_0x26aff3[_0x32ef('0x1d')]?_0x26aff3[_0x32ef('0x1d')]['raw']===undefined?!![]:![]:!![]})[_0x32ef('0x11')](function(_0x97780){logger[_0x32ef('0x1e')]('CreateOpenchannelMessage',_0x26aff3);logger['debug'](_0x32ef('0x1b'),_0x26aff3,JSON[_0x32ef('0x15')](_0x97780));_0x445cda(_0x97780);})[_0x32ef('0x1a')](function(_0x478bef){logger['error'](_0x32ef('0x1b'),_0x478bef['message'],_0x26aff3);_0x3aec05(_0x251084['error'](0x1f4,_0x478bef[_0x32ef('0x18')]));});});};
\ 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(_0x597c4b,_0xad9658){var _0x4c913b=function(_0x39cd13){while(--_0x39cd13){_0x597c4b['push'](_0x597c4b['shift']());}};_0x4c913b(++_0xad9658);}(_0x5f2f,0x73));var _0xf5f2=function(_0x41779e,_0x52f603){_0x41779e=_0x41779e-0x0;var _0x10be61=_0x5f2f[_0x41779e];return _0x10be61;};'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 02f8b8f..68e8f67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa971=['./openchannelMessage.events','save','update','emit','removeListener','length','openchannelMessage:'];(function(_0x2ad921,_0x10e68e){var _0x53d793=function(_0xd0a412){while(--_0xd0a412){_0x2ad921['push'](_0x2ad921['shift']());}};_0x53d793(++_0x10e68e);}(_0xa971,0x9a));var _0x1a97=function(_0x191138,_0x3823b2){_0x191138=_0x191138-0x0;var _0x334aea=_0xa971[_0x191138];return _0x334aea;};'use strict';var OpenchannelMessageEvents=require(_0x1a97('0x0'));var events=[_0x1a97('0x1'),'remove',_0x1a97('0x2')];function createListener(_0x50290d,_0x598059){return function(_0x56e577){_0x598059[_0x1a97('0x3')](_0x50290d,_0x56e577);};}function removeListener(_0x6352bc,_0x52f885){return function(){OpenchannelMessageEvents[_0x1a97('0x4')](_0x6352bc,_0x52f885);};}exports['register']=function(_0x175287){for(var _0x2c275d=0x0,_0x2d4359=events[_0x1a97('0x5')];_0x2c275d<_0x2d4359;_0x2c275d++){var _0x1b1bb2=events[_0x2c275d];var _0x1be5af=createListener(_0x1a97('0x6')+_0x1b1bb2,_0x175287);OpenchannelMessageEvents['on'](_0x1b1bb2,_0x1be5af);}};
\ No newline at end of file
+var _0xe6af=['update','register','length','openchannelMessage:','save','remove'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0xe6af,0x106));var _0xfe6a=function(_0x20dfd9,_0x1edbdc){_0x20dfd9=_0x20dfd9-0x0;var _0x1e6f4b=_0xe6af[_0x20dfd9];return _0x1e6f4b;};'use strict';var OpenchannelMessageEvents=require('./openchannelMessage.events');var events=[_0xfe6a('0x0'),_0xfe6a('0x1'),_0xfe6a('0x2')];function createListener(_0x5fd6ac,_0x568606){return function(_0x5f15e3){_0x568606['emit'](_0x5fd6ac,_0x5f15e3);};}function removeListener(_0x349dc9,_0x4e2099){return function(){OpenchannelMessageEvents['removeListener'](_0x349dc9,_0x4e2099);};}exports[_0xfe6a('0x3')]=function(_0x40e305){for(var _0xe1034c=0x0,_0x229419=events[_0xfe6a('0x4')];_0xe1034c<_0x229419;_0xe1034c++){var _0x34e3cd=events[_0xe1034c];var _0x266a59=createListener(_0xfe6a('0x5')+_0x34e3cd,_0x40e305);OpenchannelMessageEvents['on'](_0x34e3cd,_0x266a59);}};
\ No newline at end of file
index 15c7eb9..ebb379f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc69e=['put','update','delete','destroy','removeAgents','exports','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getTeams','/:id/users','getAgents','post','create','addTeams','addAgents'];(function(_0x53963f,_0x3c4906){var _0x4638af=function(_0x311abc){while(--_0x311abc){_0x53963f['push'](_0x53963f['shift']());}};_0x4638af(++_0x3c4906);}(_0xc69e,0x1b8));var _0xec69=function(_0x178e48,_0x3c9509){_0x178e48=_0x178e48-0x0;var _0x440d7e=_0xc69e[_0x178e48];return _0x440d7e;};'use strict';var multer=require('multer');var util=require(_0xec69('0x0'));var path=require(_0xec69('0x1'));var timeout=require('connect-timeout');var express=require(_0xec69('0x2'));var router=express[_0xec69('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xec69('0x4'));var interaction=require(_0xec69('0x5'));var config=require(_0xec69('0x6'));var controller=require(_0xec69('0x7'));router[_0xec69('0x8')]('/',auth[_0xec69('0x9')](),controller[_0xec69('0xa')]);router['get'](_0xec69('0xb'),auth[_0xec69('0x9')](),controller[_0xec69('0xc')]);router[_0xec69('0x8')](_0xec69('0xd'),auth[_0xec69('0x9')](),controller[_0xec69('0xe')]);router[_0xec69('0x8')](_0xec69('0xf'),auth['isAuthenticated'](),controller[_0xec69('0x10')]);router[_0xec69('0x8')](_0xec69('0x11'),auth[_0xec69('0x9')](),controller[_0xec69('0x12')]);router[_0xec69('0x8')](_0xec69('0x13'),auth[_0xec69('0x9')](),controller[_0xec69('0x14')]);router[_0xec69('0x15')]('/',auth[_0xec69('0x9')](),controller[_0xec69('0x16')]);router[_0xec69('0x15')](_0xec69('0x11'),auth[_0xec69('0x9')](),controller[_0xec69('0x17')]);router[_0xec69('0x15')](_0xec69('0x13'),auth[_0xec69('0x9')](),controller[_0xec69('0x18')]);router[_0xec69('0x19')](_0xec69('0xd'),auth[_0xec69('0x9')](),controller[_0xec69('0x1a')]);router[_0xec69('0x1b')](_0xec69('0xd'),auth['isAuthenticated'](),controller[_0xec69('0x1c')]);router[_0xec69('0x1b')](_0xec69('0x11'),auth[_0xec69('0x9')](),controller['removeTeams']);router[_0xec69('0x1b')](_0xec69('0x13'),auth[_0xec69('0x9')](),controller[_0xec69('0x1d')]);module[_0xec69('0x1e')]=router;
\ No newline at end of file
+var _0x1173=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/members','getMembers','/:id/teams','getAgents','post','create','addTeams','addAgents','put','delete','destroy','exports','multer','util','path','connect-timeout'];(function(_0x5c40c2,_0x26ca3e){var _0x24e05f=function(_0x48e5fa){while(--_0x48e5fa){_0x5c40c2['push'](_0x5c40c2['shift']());}};_0x24e05f(++_0x26ca3e);}(_0x1173,0x158));var _0x3117=function(_0x46b290,_0x253f21){_0x46b290=_0x46b290-0x0;var _0x12bc05=_0x1173[_0x46b290];return _0x12bc05;};'use strict';var multer=require(_0x3117('0x0'));var util=require(_0x3117('0x1'));var path=require(_0x3117('0x2'));var timeout=require(_0x3117('0x3'));var express=require(_0x3117('0x4'));var router=express['Router']();var fs_extra=require(_0x3117('0x5'));var auth=require(_0x3117('0x6'));var interaction=require(_0x3117('0x7'));var config=require(_0x3117('0x8'));var controller=require(_0x3117('0x9'));router[_0x3117('0xa')]('/',auth[_0x3117('0xb')](),controller[_0x3117('0xc')]);router['get'](_0x3117('0xd'),auth[_0x3117('0xb')](),controller[_0x3117('0xe')]);router['get'](_0x3117('0xf'),auth[_0x3117('0xb')](),controller[_0x3117('0x10')]);router[_0x3117('0xa')](_0x3117('0x11'),auth[_0x3117('0xb')](),controller[_0x3117('0x12')]);router[_0x3117('0xa')](_0x3117('0x13'),auth[_0x3117('0xb')](),controller['getTeams']);router[_0x3117('0xa')]('/:id/users',auth[_0x3117('0xb')](),controller[_0x3117('0x14')]);router[_0x3117('0x15')]('/',auth['isAuthenticated'](),controller[_0x3117('0x16')]);router[_0x3117('0x15')]('/:id/teams',auth['isAuthenticated'](),controller[_0x3117('0x17')]);router[_0x3117('0x15')]('/:id/users',auth[_0x3117('0xb')](),controller[_0x3117('0x18')]);router[_0x3117('0x19')](_0x3117('0xf'),auth[_0x3117('0xb')](),controller['update']);router[_0x3117('0x1a')](_0x3117('0xf'),auth[_0x3117('0xb')](),controller[_0x3117('0x1b')]);router[_0x3117('0x1a')](_0x3117('0x13'),auth[_0x3117('0xb')](),controller['removeTeams']);router['delete']('/:id/users',auth[_0x3117('0xb')](),controller['removeAgents']);module[_0x3117('0x1c')]=router;
\ No newline at end of file
index ef8511f..b0d9877 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa02d=['STRING','name','INTEGER','ENUM','rrmemory','roundrobin','sequelize','exports'];(function(_0x318918,_0x5062ce){var _0x33eae5=function(_0x54164c){while(--_0x54164c){_0x318918['push'](_0x318918['shift']());}};_0x33eae5(++_0x5062ce);}(_0xa02d,0x136));var _0xda02=function(_0x1ae5ab,_0xc5d441){_0x1ae5ab=_0x1ae5ab-0x0;var _0x1ce001=_0xa02d[_0x1ae5ab];return _0x1ce001;};'use strict';var Sequelize=require(_0xda02('0x0'));module[_0xda02('0x1')]={'name':{'type':Sequelize[_0xda02('0x2')],'unique':_0xda02('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize[_0xda02('0x2')]},'timeout':{'type':Sequelize[_0xda02('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xda02('0x5')](_0xda02('0x6'),'beepall',_0xda02('0x7'))}};
\ No newline at end of file
+var _0x320c=['rrmemory','roundrobin','sequelize','exports','STRING','INTEGER','ENUM'];(function(_0x166cf4,_0x5cae61){var _0x10d034=function(_0x399617){while(--_0x399617){_0x166cf4['push'](_0x166cf4['shift']());}};_0x10d034(++_0x5cae61);}(_0x320c,0x16e));var _0xc320=function(_0x21e9e0,_0x2997f6){_0x21e9e0=_0x21e9e0-0x0;var _0x408a74=_0x320c[_0x21e9e0];return _0x408a74;};'use strict';var Sequelize=require(_0xc320('0x0'));module[_0xc320('0x1')]={'name':{'type':Sequelize[_0xc320('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xc320('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xc320('0x4')](_0xc320('0x5'),'beepall',_0xc320('0x6'))}};
\ No newline at end of file
index 453d478..1c18e31 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1b31=['apply','reject','save','update','then','destroy','get','OpenchannelQueues','error','stack','name','index','map','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options','OpenchannelQueue','includeAll','include','findAll','rows','show','params','keys','rawAttributes','find','catch','create','role','user','UserProfileSection','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','getMembers','findOne','UserOpenchannelQueue','OpenchannelQueueId','User','findAndCountAll','agent','openchannelPause','updatedAt','format','createdAt','getTeams','Team','addTeams','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','removeTeams','ids','tq.TeamId','from','team_has_openchannel_queues','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','push','toString','QueryTypes','SELECT','every','TeamId','includes','all','compact','value','isEmpty','removeAgents','forEach','emit','userOpenchannelQueue:remove','addAgents','spread','userOpenchannelQueue:save','isArray','getAgents','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','sendStatus','status','end','offset','undefined','count','set','Content-Range','json'];(function(_0x226e41,_0x5141a3){var _0xf1e61d=function(_0x4fff6d){while(--_0x4fff6d){_0x226e41['push'](_0x226e41['shift']());}};_0xf1e61d(++_0x5141a3);}(_0x1b31,0x18a));var _0x11b3=function(_0x2d4cbb,_0x3949b2){_0x2d4cbb=_0x2d4cbb-0x0;var _0x1adf77=_0x1b31[_0x2d4cbb];return _0x1adf77;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x11b3('0x0'));var zipdir=require(_0x11b3('0x1'));var jsonpatch=require(_0x11b3('0x2'));var rp=require(_0x11b3('0x3'));var moment=require('moment');var BPromise=require(_0x11b3('0x4'));var Mustache=require(_0x11b3('0x5'));var util=require(_0x11b3('0x6'));var path=require(_0x11b3('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x11b3('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x11b3('0x9'));var squel=require(_0x11b3('0xa'));var crypto=require(_0x11b3('0xb'));var jsforce=require('jsforce');var deskjs=require(_0x11b3('0xc'));var toCsv=require(_0x11b3('0xd'));var querystring=require(_0x11b3('0xe'));var Papa=require('papaparse');var Redis=require(_0x11b3('0xf'));var authService=require(_0x11b3('0x10'));var qs=require(_0x11b3('0x11'));var as=require(_0x11b3('0x12'));var hardwareService=require(_0x11b3('0x13'));var logger=require(_0x11b3('0x14'))(_0x11b3('0x15'));var utils=require(_0x11b3('0x16'));var config=require(_0x11b3('0x17'));var licenseUtil=require(_0x11b3('0x18'));var db=require(_0x11b3('0x19'))['db'];config[_0x11b3('0x1a')]=_[_0x11b3('0x1b')](config[_0x11b3('0x1a')],{'host':_0x11b3('0x1c'),'port':0x18eb});var socket=require(_0x11b3('0x1d'))(new Redis(config[_0x11b3('0x1a')]));require(_0x11b3('0x1e'))[_0x11b3('0x1f')](socket);function respondWithStatusCode(_0x1d9a31,_0x1bec30){_0x1bec30=_0x1bec30||0xcc;return function(_0x1f280c){if(_0x1f280c){return _0x1d9a31[_0x11b3('0x20')](_0x1bec30);}return _0x1d9a31[_0x11b3('0x21')](_0x1bec30)[_0x11b3('0x22')]();};}function respondWithResult(_0x28f225,_0x48a1a8){_0x48a1a8=_0x48a1a8||0xc8;return function(_0x5c297c){if(_0x5c297c){return _0x28f225[_0x11b3('0x21')](_0x48a1a8)['json'](_0x5c297c);}};}function respondWithFilteredResult(_0x21bf5d,_0x5e90d0){return function(_0x4e42ee){if(_0x4e42ee){var _0x89a540=typeof _0x5e90d0[_0x11b3('0x23')]===_0x11b3('0x24')&&typeof _0x5e90d0['limit']===_0x11b3('0x24');var _0x5b3106=_0x4e42ee[_0x11b3('0x25')];var _0x1dcb7f=_0x89a540?0x0:_0x5e90d0['offset'];var _0x367045=_0x89a540?_0x4e42ee['count']:_0x5e90d0['offset']+_0x5e90d0['limit'];var _0x28ea2e;if(_0x367045>=_0x5b3106){_0x367045=_0x5b3106;_0x28ea2e=0xc8;}else{_0x28ea2e=0xce;}_0x21bf5d[_0x11b3('0x21')](_0x28ea2e);return _0x21bf5d[_0x11b3('0x26')](_0x11b3('0x27'),_0x1dcb7f+'-'+_0x367045+'/'+_0x5b3106)[_0x11b3('0x28')](_0x4e42ee);}return null;};}function patchUpdates(_0x26d7da){return function(_0x279095){try{jsonpatch[_0x11b3('0x29')](_0x279095,_0x26d7da,!![]);}catch(_0x288ca7){return BPromise[_0x11b3('0x2a')](_0x288ca7);}return _0x279095[_0x11b3('0x2b')]();};}function saveUpdates(_0x2cb7bf,_0x3993c5){return function(_0x27fe90){if(_0x27fe90){return _0x27fe90[_0x11b3('0x2c')](_0x2cb7bf)[_0x11b3('0x2d')](function(_0x47d315){return _0x47d315;});}return null;};}function removeEntity(_0x532175,_0x291ff1){return function(_0x4d34a6){if(_0x4d34a6){return _0x4d34a6[_0x11b3('0x2e')]()['then'](function(){var _0x3cb088=_0x4d34a6[_0x11b3('0x2f')]({'plain':!![]});var _0x7a318e=_0x11b3('0x30');return db['UserProfileResource'][_0x11b3('0x2e')]({'where':{'type':_0x7a318e,'resourceId':_0x3cb088['id']}})[_0x11b3('0x2d')](function(){return _0x4d34a6;});})['then'](function(){_0x532175[_0x11b3('0x21')](0xcc)[_0x11b3('0x22')]();});}};}function handleEntityNotFound(_0x2f7940,_0x7c72c0){return function(_0x4c6d5e){if(!_0x4c6d5e){_0x2f7940[_0x11b3('0x20')](0x194);}return _0x4c6d5e;};}function handleError(_0x2cb2ba,_0xa271dd){_0xa271dd=_0xa271dd||0x1f4;return function(_0x386806){logger[_0x11b3('0x31')](_0x386806[_0x11b3('0x32')]);if(_0x386806['name']){delete _0x386806[_0x11b3('0x33')];}_0x2cb2ba[_0x11b3('0x21')](_0xa271dd)['send'](_0x386806);};}exports[_0x11b3('0x34')]=function(_0x4e179c,_0x112176){var _0x4fb7dd={},_0x5da1be={},_0xe016fb={'count':0x0,'rows':[]};var _0x3790da=_[_0x11b3('0x35')](db['OpenchannelQueue']['rawAttributes'],function(_0x78ef5b){return{'name':_0x78ef5b[_0x11b3('0x36')],'type':_0x78ef5b[_0x11b3('0x37')][_0x11b3('0x38')]};});_0x5da1be[_0x11b3('0x39')]=_['map'](_0x3790da,'name');_0x5da1be[_0x11b3('0x3a')]=_['keys'](_0x4e179c[_0x11b3('0x3a')]);_0x5da1be[_0x11b3('0x3b')]=_[_0x11b3('0x3c')](_0x5da1be[_0x11b3('0x39')],_0x5da1be['query']);_0x4fb7dd[_0x11b3('0x3d')]=_[_0x11b3('0x3c')](_0x5da1be['model'],qs[_0x11b3('0x3e')](_0x4e179c[_0x11b3('0x3a')][_0x11b3('0x3e')]));_0x4fb7dd[_0x11b3('0x3d')]=_0x4fb7dd['attributes'][_0x11b3('0x3f')]?_0x4fb7dd[_0x11b3('0x3d')]:_0x5da1be[_0x11b3('0x39')];if(!_0x4e179c[_0x11b3('0x3a')]['hasOwnProperty'](_0x11b3('0x40'))){_0x4fb7dd['limit']=qs[_0x11b3('0x41')](_0x4e179c[_0x11b3('0x3a')][_0x11b3('0x41')]);_0x4fb7dd[_0x11b3('0x23')]=qs[_0x11b3('0x23')](_0x4e179c[_0x11b3('0x3a')][_0x11b3('0x23')]);}_0x4fb7dd[_0x11b3('0x42')]=qs['sort'](_0x4e179c[_0x11b3('0x3a')][_0x11b3('0x43')]);_0x4fb7dd[_0x11b3('0x44')]=qs[_0x11b3('0x3b')](_[_0x11b3('0x45')](_0x4e179c['query'],_0x5da1be['filters']),_0x3790da);if(_0x4e179c['query'][_0x11b3('0x46')]){_0x4fb7dd[_0x11b3('0x44')]=_[_0x11b3('0x47')](_0x4fb7dd[_0x11b3('0x44')],{'$or':_[_0x11b3('0x35')](_0x3790da,function(_0x27b704){if(_0x27b704[_0x11b3('0x37')]!==_0x11b3('0x48')){var _0x5b08c7={};_0x5b08c7[_0x27b704[_0x11b3('0x33')]]={'$like':'%'+_0x4e179c['query'][_0x11b3('0x46')]+'%'};return _0x5b08c7;}})});}_0x4fb7dd=_[_0x11b3('0x47')]({},_0x4fb7dd,_0x4e179c[_0x11b3('0x49')]);var _0xbb4938={'where':_0x4fb7dd[_0x11b3('0x44')]};return db[_0x11b3('0x4a')][_0x11b3('0x25')](_0xbb4938)[_0x11b3('0x2d')](function(_0x50e82f){_0xe016fb['count']=_0x50e82f;if(_0x4e179c[_0x11b3('0x3a')][_0x11b3('0x4b')]){_0x4fb7dd[_0x11b3('0x4c')]=[{'all':!![]}];}return db['OpenchannelQueue'][_0x11b3('0x4d')](_0x4fb7dd);})[_0x11b3('0x2d')](function(_0xc6e9be){_0xe016fb[_0x11b3('0x4e')]=_0xc6e9be;return _0xe016fb;})['then'](respondWithFilteredResult(_0x112176,_0x4fb7dd))['catch'](handleError(_0x112176,null));};exports[_0x11b3('0x4f')]=function(_0x127a57,_0x1de06d){var _0x51e657={'raw':!![],'where':{'id':_0x127a57[_0x11b3('0x50')]['id']}},_0x59442c={};_0x59442c[_0x11b3('0x39')]=_[_0x11b3('0x51')](db[_0x11b3('0x4a')][_0x11b3('0x52')]);_0x59442c['query']=_[_0x11b3('0x51')](_0x127a57[_0x11b3('0x3a')]);_0x59442c[_0x11b3('0x3b')]=_[_0x11b3('0x3c')](_0x59442c['model'],_0x59442c['query']);_0x51e657[_0x11b3('0x3d')]=_['intersection'](_0x59442c[_0x11b3('0x39')],qs[_0x11b3('0x3e')](_0x127a57[_0x11b3('0x3a')][_0x11b3('0x3e')]));_0x51e657[_0x11b3('0x3d')]=_0x51e657[_0x11b3('0x3d')][_0x11b3('0x3f')]?_0x51e657['attributes']:_0x59442c[_0x11b3('0x39')];if(_0x127a57['query'][_0x11b3('0x4b')]){_0x51e657[_0x11b3('0x4c')]=[{'all':!![]}];}_0x51e657=_[_0x11b3('0x47')]({},_0x51e657,_0x127a57[_0x11b3('0x49')]);return db['OpenchannelQueue'][_0x11b3('0x53')](_0x51e657)['then'](handleEntityNotFound(_0x1de06d,null))['then'](respondWithResult(_0x1de06d,null))[_0x11b3('0x54')](handleError(_0x1de06d,null));};exports[_0x11b3('0x55')]=function(_0x345634,_0x130e44){return db[_0x11b3('0x4a')][_0x11b3('0x55')](_0x345634['body'],{})[_0x11b3('0x2d')](function(_0x397d33){var _0x4b2b60=_0x345634['user'][_0x11b3('0x2f')]({'plain':!![]});if(!_0x4b2b60)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4b2b60[_0x11b3('0x56')]===_0x11b3('0x57')){var _0x2beef5=_0x397d33[_0x11b3('0x2f')]({'plain':!![]});var _0x791ace=_0x11b3('0x30');return db[_0x11b3('0x58')][_0x11b3('0x53')]({'where':{'name':_0x791ace,'userProfileId':_0x4b2b60['userProfileId']},'raw':!![]})[_0x11b3('0x2d')](function(_0xfbb975){if(_0xfbb975&&_0xfbb975[_0x11b3('0x59')]===0x0){return db[_0x11b3('0x5a')][_0x11b3('0x55')]({'name':_0x2beef5[_0x11b3('0x33')],'resourceId':_0x2beef5['id'],'type':_0xfbb975['name'],'sectionId':_0xfbb975['id']},{})[_0x11b3('0x2d')](function(){return _0x397d33;});}else{return _0x397d33;}})[_0x11b3('0x54')](function(_0x2ecbe9){logger['error'](_0x11b3('0x5b'),_0x2ecbe9);throw _0x2ecbe9;});}return _0x397d33;})['then'](respondWithResult(_0x130e44,0xc9))[_0x11b3('0x54')](handleError(_0x130e44,null));};exports['update']=function(_0x1982b0,_0x336090){if(_0x1982b0[_0x11b3('0x5c')]['id']){delete _0x1982b0[_0x11b3('0x5c')]['id'];}return db['OpenchannelQueue']['find']({'where':{'id':_0x1982b0['params']['id']}})['then'](handleEntityNotFound(_0x336090,null))['then'](saveUpdates(_0x1982b0[_0x11b3('0x5c')],null))[_0x11b3('0x2d')](respondWithResult(_0x336090,null))[_0x11b3('0x54')](handleError(_0x336090,null));};exports['destroy']=function(_0x187655,_0x101892){return db[_0x11b3('0x4a')]['find']({'where':{'id':_0x187655[_0x11b3('0x50')]['id']}})[_0x11b3('0x2d')](handleEntityNotFound(_0x101892,null))[_0x11b3('0x2d')](removeEntity(_0x101892,null))[_0x11b3('0x54')](handleError(_0x101892,null));};exports[_0x11b3('0x5d')]=function(_0x54e7c9,_0x3a4122){return db[_0x11b3('0x4a')]['describe']()[_0x11b3('0x2d')](respondWithResult(_0x3a4122,null))[_0x11b3('0x54')](handleError(_0x3a4122,null));};exports[_0x11b3('0x5e')]=function(_0x375fab,_0x331203,_0x131f57){var _0x3fde98={'raw':!![],'where':{}},_0x43d15b={},_0x216614;return db['OpenchannelQueue'][_0x11b3('0x5f')]({'where':{'id':_0x375fab[_0x11b3('0x50')]['id']}})[_0x11b3('0x2d')](handleEntityNotFound(_0x331203,null))[_0x11b3('0x2d')](function(_0x4e1af6){if(_0x4e1af6){_0x216614=_0x4e1af6[_0x11b3('0x2f')]({'plain':!![]});_0x43d15b['model']=_[_0x11b3('0x51')](db[_0x11b3('0x60')][_0x11b3('0x52')]);_0x43d15b[_0x11b3('0x3a')]=_[_0x11b3('0x51')](_0x375fab['query']);_0x43d15b[_0x11b3('0x3b')]=_['intersection'](_0x43d15b[_0x11b3('0x39')],_0x43d15b[_0x11b3('0x3a')]);_0x3fde98[_0x11b3('0x3d')]=_[_0x11b3('0x3c')](_0x43d15b[_0x11b3('0x39')],qs[_0x11b3('0x3e')](_0x375fab[_0x11b3('0x3a')][_0x11b3('0x3e')]));_0x3fde98[_0x11b3('0x3d')]=_0x3fde98[_0x11b3('0x3d')][_0x11b3('0x3f')]?_0x3fde98[_0x11b3('0x3d')]:_0x43d15b[_0x11b3('0x39')];if(!_0x375fab[_0x11b3('0x3a')]['hasOwnProperty'](_0x11b3('0x40'))){_0x3fde98[_0x11b3('0x41')]=qs[_0x11b3('0x41')](_0x375fab['query'][_0x11b3('0x41')]);_0x3fde98[_0x11b3('0x23')]=qs[_0x11b3('0x23')](_0x375fab[_0x11b3('0x3a')]['offset']);}_0x3fde98[_0x11b3('0x42')]=qs[_0x11b3('0x43')](_0x375fab['query'][_0x11b3('0x43')]);_0x3fde98[_0x11b3('0x44')]=qs[_0x11b3('0x3b')](_[_0x11b3('0x45')](_0x375fab['query'],_0x43d15b[_0x11b3('0x3b')]));_0x3fde98[_0x11b3('0x44')][_0x11b3('0x61')]=_0x4e1af6['id'];if(_0x375fab[_0x11b3('0x3a')][_0x11b3('0x46')]){_0x3fde98[_0x11b3('0x44')]=_[_0x11b3('0x47')](_0x3fde98[_0x11b3('0x44')],{'$or':_[_0x11b3('0x35')](_0x3fde98[_0x11b3('0x3d')],function(_0x55feb7){var _0x1948d3={};_0x1948d3[_0x55feb7]={'$like':'%'+_0x375fab['query']['filter']+'%'};return _0x1948d3;})});}_0x3fde98=_[_0x11b3('0x47')]({},_0x3fde98,_0x375fab[_0x11b3('0x49')]);return db[_0x11b3('0x60')][_0x11b3('0x4d')](_0x3fde98);}})['then'](function(_0xe7b0e0){if(_0xe7b0e0){return db[_0x11b3('0x62')][_0x11b3('0x63')]({'where':{'id':_[_0x11b3('0x35')](_0xe7b0e0,'UserId'),'role':_0x11b3('0x64')},'attributes':['id','name',_0x11b3('0x65'),_0x11b3('0x66'),'createdAt']});}})[_0x11b3('0x2d')](function(_0x503b13){if(_0x503b13){return{'count':_0x503b13[_0x11b3('0x25')],'rows':_['map'](_0x503b13[_0x11b3('0x4e')],function(_0x1825d5){return{'membername':_0x1825d5[_0x11b3('0x33')],'UserId':_0x1825d5['id'],'queue_name':_0x216614[_0x11b3('0x33')],'OpenchannelQueueId':_0x216614['id'],'interface':util[_0x11b3('0x67')]('%s/%s','SIP',_0x1825d5[_0x11b3('0x33')]),'penalty':0x0,'paused':_0x1825d5['openchannelPause'],'createdAt':_0x1825d5[_0x11b3('0x68')],'updatedAt':_0x1825d5['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x11b3('0x2d')](respondWithFilteredResult(_0x331203,_0x3fde98))[_0x11b3('0x54')](handleError(_0x331203,null));};exports[_0x11b3('0x69')]=function(_0x2e6d60,_0x2119f0,_0x1c4fdb){var _0x3114a9={};var _0x276dba={};var _0x4fc541;var _0x30b72f;return db[_0x11b3('0x4a')][_0x11b3('0x5f')]({'where':{'id':_0x2e6d60[_0x11b3('0x50')]['id']}})[_0x11b3('0x2d')](handleEntityNotFound(_0x2119f0,null))[_0x11b3('0x2d')](function(_0x3516d5){if(_0x3516d5){_0x4fc541=_0x3516d5;_0x276dba[_0x11b3('0x39')]=_[_0x11b3('0x51')](db[_0x11b3('0x6a')][_0x11b3('0x52')]);_0x276dba[_0x11b3('0x3a')]=_[_0x11b3('0x51')](_0x2e6d60[_0x11b3('0x3a')]);_0x276dba[_0x11b3('0x3b')]=_[_0x11b3('0x3c')](_0x276dba[_0x11b3('0x39')],_0x276dba[_0x11b3('0x3a')]);_0x3114a9[_0x11b3('0x3d')]=_[_0x11b3('0x3c')](_0x276dba[_0x11b3('0x39')],qs['fields'](_0x2e6d60[_0x11b3('0x3a')][_0x11b3('0x3e')]));_0x3114a9[_0x11b3('0x3d')]=_0x3114a9[_0x11b3('0x3d')]['length']?_0x3114a9[_0x11b3('0x3d')]:_0x276dba['model'];_0x3114a9[_0x11b3('0x42')]=qs[_0x11b3('0x43')](_0x2e6d60[_0x11b3('0x3a')][_0x11b3('0x43')]);_0x3114a9[_0x11b3('0x44')]=qs[_0x11b3('0x3b')](_['pick'](_0x2e6d60[_0x11b3('0x3a')],_0x276dba[_0x11b3('0x3b')]));if(_0x2e6d60[_0x11b3('0x3a')][_0x11b3('0x46')]){_0x3114a9[_0x11b3('0x44')]=_['merge'](_0x3114a9['where'],{'$or':_[_0x11b3('0x35')](_0x3114a9[_0x11b3('0x3d')],function(_0x951a45){var _0x2bf09b={};_0x2bf09b[_0x951a45]={'$like':'%'+_0x2e6d60['query'][_0x11b3('0x46')]+'%'};return _0x2bf09b;})});}_0x3114a9=_[_0x11b3('0x47')]({},_0x3114a9,_0x2e6d60['options']);return _0x4fc541[_0x11b3('0x69')](_0x3114a9);}})[_0x11b3('0x2d')](function(_0x4399c9){if(_0x4399c9){_0x30b72f=_0x4399c9[_0x11b3('0x3f')];if(!_0x2e6d60[_0x11b3('0x3a')]['hasOwnProperty']('nolimit')){_0x3114a9['limit']=qs[_0x11b3('0x41')](_0x2e6d60['query'][_0x11b3('0x41')]);_0x3114a9[_0x11b3('0x23')]=qs[_0x11b3('0x23')](_0x2e6d60['query'][_0x11b3('0x23')]);}return _0x4fc541['getTeams'](_0x3114a9);}})[_0x11b3('0x2d')](function(_0x4db884){if(_0x4db884){return _0x4db884?{'count':_0x30b72f,'rows':_0x4db884}:null;}})['then'](respondWithResult(_0x2119f0,null))[_0x11b3('0x54')](handleError(_0x2119f0,null));};exports[_0x11b3('0x6b')]=function(_0x42f1e2,_0x20da0a,_0x313a91){var _0x397fe1=_0x42f1e2[_0x11b3('0x5c')]['ids'];return db[_0x11b3('0x6a')][_0x11b3('0x4d')]({'where':{'id':_0x397fe1},'attributes':['id'],'include':[{'model':db['User'],'as':_0x11b3('0x6c'),'attributes':['id',_0x11b3('0x33'),_0x11b3('0x6d'),_0x11b3('0x6e'),_0x11b3('0x6f')],'raw':!![]}]})[_0x11b3('0x2d')](function(_0x2da57d){if(_0x2da57d){var _0x446bc4=_[_0x11b3('0x70')](_0x2da57d,function(_0x53428e){var _0x2ce33f=_0x53428e[_0x11b3('0x2f')]({'plain':!![]});return _0x2ce33f[_0x11b3('0x6c')];});return db[_0x11b3('0x4a')][_0x11b3('0x53')]({'where':{'id':_0x42f1e2['params']['id']}})[_0x11b3('0x2d')](function(_0x487050){return db[_0x11b3('0x71')][_0x11b3('0x72')](function(_0x49e19f){return _0x487050['addTeams'](_0x397fe1,{'transaction':_0x49e19f})[_0x11b3('0x2d')](function(){return BPromise[_0x11b3('0x73')](_0x446bc4,function(_0x5c7275){return db['UserOpenchannelQueue'][_0x11b3('0x74')]({'where':{'UserId':_0x5c7275['id'],'OpenchannelQueueId':_0x42f1e2[_0x11b3('0x50')]['id']},'transaction':_0x49e19f});});})[_0x11b3('0x2d')](function(){_0x446bc4['forEach'](function(_0x53198c){socket['emit']('userOpenchannelQueue:save',{'UserId':_0x53198c['id'],'OpenchannelQueueId':_0x487050['id']});});});});});}})['then'](respondWithStatusCode(_0x20da0a,null))[_0x11b3('0x54')](handleError(_0x20da0a,null));};exports[_0x11b3('0x75')]=function(_0x499275,_0xa4f5c2,_0x2555da){return db[_0x11b3('0x6a')][_0x11b3('0x4d')]({'where':{'id':_0x499275[_0x11b3('0x3a')][_0x11b3('0x76')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0x11b3('0x2d')](handleEntityNotFound(_0xa4f5c2,null))[_0x11b3('0x2d')](function(_0x8fbe70){var _0x460896=_[_0x11b3('0x35')](_0x8fbe70,'id');var _0x3705e0=[];var _0x1602c1=[];var _0x166948=squel['select']();_0x166948['field'](_0x11b3('0x77'))[_0x11b3('0x78')](_0x11b3('0x79'),'tq')['join']('user_has_teams','ut',_0x11b3('0x7a'))[_0x11b3('0x44')]('OpenchannelQueueId\x20=\x20?',_0x499275[_0x11b3('0x50')]['id']);for(var _0x4a4f68=0x0;_0x4a4f68<_0x8fbe70['length'];_0x4a4f68+=0x1){let _0x222a2d=_0x8fbe70[_0x4a4f68];for(var _0x4fcb68=0x0;_0x4fcb68<_0x222a2d[_0x11b3('0x6c')][_0x11b3('0x3f')];_0x4fcb68+=0x1){let _0x2ef4f8=_0x222a2d[_0x11b3('0x6c')][_0x4fcb68];var _0x3dfdcb=_0x166948[_0x11b3('0x7b')]();_0x3dfdcb['where'](_0x11b3('0x7c'),_0x2ef4f8['id']);_0x1602c1[_0x11b3('0x7d')](db[_0x11b3('0x71')][_0x11b3('0x3a')](_0x3dfdcb[_0x11b3('0x7e')](),{'type':db[_0x11b3('0x71')][_0x11b3('0x7f')][_0x11b3('0x80')]})['then'](function(_0x20be5a){if(_0x20be5a['length']===0x1){return _0x2ef4f8['id'];}else{var _0x53b684=_[_0x11b3('0x81')](_[_0x11b3('0x35')](_0x20be5a,_0x11b3('0x82')),function(_0x15fd40){return _[_0x11b3('0x83')](_0x460896,_0x15fd40);});if(_0x53b684){return _0x2ef4f8['id'];}}}));}}return BPromise[_0x11b3('0x84')](_0x1602c1)[_0x11b3('0x2d')](function(_0x54f1e7){_0x3705e0=_(_0x3705e0)['union'](_0x54f1e7)[_0x11b3('0x85')]()[_0x11b3('0x86')]();return db[_0x11b3('0x4a')]['find']({'where':{'id':_0x499275[_0x11b3('0x50')]['id']}})[_0x11b3('0x2d')](function(_0x3823b8){return db[_0x11b3('0x71')][_0x11b3('0x72')](function(_0x38451b){return _0x3823b8[_0x11b3('0x75')](_0x499275[_0x11b3('0x3a')][_0x11b3('0x76')],{'transaction':_0x38451b})[_0x11b3('0x2d')](function(){if(!_[_0x11b3('0x87')](_0x3705e0)){return _0x3823b8[_0x11b3('0x88')](_0x3705e0,{'transaction':_0x38451b});}})['then'](function(){_0x3705e0[_0x11b3('0x89')](function(_0x56e0ff){socket[_0x11b3('0x8a')](_0x11b3('0x8b'),{'UserId':_0x56e0ff,'OpenchannelQueueId':_0x3823b8['id']});});});});});});})['then'](respondWithStatusCode(_0xa4f5c2,null))[_0x11b3('0x54')](handleError(_0xa4f5c2,null));};exports[_0x11b3('0x8c')]=function(_0x5c3d40,_0x469521,_0x18d532){return db[_0x11b3('0x4a')][_0x11b3('0x53')]({'where':{'id':_0x5c3d40[_0x11b3('0x50')]['id']}})[_0x11b3('0x2d')](handleEntityNotFound(_0x469521,null))[_0x11b3('0x2d')](function(_0xc7024){if(_0xc7024){return _0xc7024[_0x11b3('0x8c')](_0x5c3d40['body']['ids'],_['omit'](_0x5c3d40[_0x11b3('0x5c')],['ids','id'])||{})[_0x11b3('0x8d')](function(_0x377211){for(var _0x36aa53=0x0;_0x36aa53<_0x5c3d40[_0x11b3('0x5c')][_0x11b3('0x76')][_0x11b3('0x3f')];_0x36aa53+=0x1){socket[_0x11b3('0x8a')](_0x11b3('0x8e'),{'UserId':Number(_0x5c3d40['body']['ids'][_0x36aa53]),'OpenchannelQueueId':Number(_0x5c3d40[_0x11b3('0x50')]['id'])});}return _0x377211;});}})[_0x11b3('0x2d')](respondWithResult(_0x469521,null))[_0x11b3('0x54')](handleError(_0x469521,null));};exports[_0x11b3('0x88')]=function(_0x25c202,_0x210f28,_0x262743){return db[_0x11b3('0x4a')][_0x11b3('0x53')]({'where':{'id':_0x25c202[_0x11b3('0x50')]['id']}})[_0x11b3('0x2d')](handleEntityNotFound(_0x210f28,null))[_0x11b3('0x2d')](function(_0x3a916f){if(_0x3a916f){return _0x3a916f['removeAgents'](_0x25c202[_0x11b3('0x3a')][_0x11b3('0x76')])[_0x11b3('0x2d')](function(){if(_[_0x11b3('0x8f')](_0x25c202[_0x11b3('0x3a')][_0x11b3('0x76')])){for(var _0x2eea21=0x0;_0x2eea21<_0x25c202[_0x11b3('0x3a')][_0x11b3('0x76')][_0x11b3('0x3f')];_0x2eea21+=0x1){socket['emit'](_0x11b3('0x8b'),{'UserId':Number(_0x25c202[_0x11b3('0x3a')][_0x11b3('0x76')][_0x2eea21]),'OpenchannelQueueId':Number(_0x25c202['params']['id'])});}}else{socket[_0x11b3('0x8a')](_0x11b3('0x8b'),{'UserId':Number(_0x25c202['query']['ids']),'OpenchannelQueueId':Number(_0x25c202[_0x11b3('0x50')]['id'])});}});}})['then'](respondWithStatusCode(_0x210f28,null))[_0x11b3('0x54')](handleError(_0x210f28,null));};exports[_0x11b3('0x90')]=function(_0x3985be,_0x2e4c72,_0x46007b){var _0x989d10={};var _0x26affa={};var _0x15367b;var _0x27241d;return db[_0x11b3('0x4a')][_0x11b3('0x5f')]({'where':{'id':_0x3985be[_0x11b3('0x50')]['id']}})['then'](handleEntityNotFound(_0x2e4c72,null))['then'](function(_0x353afc){if(_0x353afc){_0x15367b=_0x353afc;_0x26affa['model']=_['keys'](db[_0x11b3('0x62')][_0x11b3('0x52')]);_0x26affa[_0x11b3('0x3a')]=_[_0x11b3('0x51')](_0x3985be['query']);_0x26affa[_0x11b3('0x3b')]=_[_0x11b3('0x3c')](_0x26affa['model'],_0x26affa[_0x11b3('0x3a')]);_0x989d10[_0x11b3('0x3d')]=_[_0x11b3('0x3c')](_0x26affa[_0x11b3('0x39')],qs[_0x11b3('0x3e')](_0x3985be[_0x11b3('0x3a')][_0x11b3('0x3e')]));_0x989d10['attributes']=_0x989d10[_0x11b3('0x3d')][_0x11b3('0x3f')]?_0x989d10[_0x11b3('0x3d')]:_0x26affa[_0x11b3('0x39')];_0x989d10[_0x11b3('0x42')]=qs['sort'](_0x3985be[_0x11b3('0x3a')][_0x11b3('0x43')]);_0x989d10['where']=qs[_0x11b3('0x3b')](_[_0x11b3('0x45')](_0x3985be[_0x11b3('0x3a')],_0x26affa[_0x11b3('0x3b')]));if(_0x3985be[_0x11b3('0x3a')]['filter']){_0x989d10['where']=_[_0x11b3('0x47')](_0x989d10[_0x11b3('0x44')],{'$or':_['map'](_0x989d10[_0x11b3('0x3d')],function(_0x3e7057){var _0x351e19={};_0x351e19[_0x3e7057]={'$like':'%'+_0x3985be[_0x11b3('0x3a')][_0x11b3('0x46')]+'%'};return _0x351e19;})});}_0x989d10=_[_0x11b3('0x47')]({},_0x989d10,_0x3985be[_0x11b3('0x49')]);return _0x15367b[_0x11b3('0x90')](_0x989d10);}})[_0x11b3('0x2d')](function(_0x1b6563){if(_0x1b6563){_0x27241d=_0x1b6563[_0x11b3('0x3f')];if(!_0x3985be['query']['hasOwnProperty'](_0x11b3('0x40'))){_0x989d10[_0x11b3('0x41')]=qs['limit'](_0x3985be[_0x11b3('0x3a')]['limit']);_0x989d10['offset']=qs[_0x11b3('0x23')](_0x3985be[_0x11b3('0x3a')][_0x11b3('0x23')]);}return _0x15367b[_0x11b3('0x90')](_0x989d10);}})[_0x11b3('0x2d')](function(_0x3ad514){if(_0x3ad514){return _0x3ad514?{'count':_0x27241d,'rows':_0x3ad514}:null;}})[_0x11b3('0x2d')](respondWithResult(_0x2e4c72,null))[_0x11b3('0x54')](handleError(_0x2e4c72,null));};
\ No newline at end of file
+var _0x8f2b=['includeAll','include','findAll','rows','show','options','find','catch','create','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','describe','getMembers','findOne','UserOpenchannelQueue','OpenchannelQueueId','User','findAndCountAll','UserId','updatedAt','format','%s/%s','openchannelPause','createdAt','getTeams','Team','addTeams','ids','voicePause','interface','flatMap','Agents','each','forEach','userOpenchannelQueue:save','select','field','tq.TeamId','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','ut.UserId\x20=\x20?','push','sequelize','toString','SELECT','every','TeamId','includes','all','value','transaction','removeTeams','isEmpty','removeAgents','emit','addAgents','omit','spread','isArray','userOpenchannelQueue:remove','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','fs-extra','lodash','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./openchannelQueue.socket','register','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','reject','save','update','then','destroy','get','OpenchannelQueues','end','stack','name','send','index','map','OpenchannelQueue','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','filters','pick','filter','merge','where','VIRTUAL'];(function(_0x522c2e,_0x3cea60){var _0x269e79=function(_0x265346){while(--_0x265346){_0x522c2e['push'](_0x522c2e['shift']());}};_0x269e79(++_0x3cea60);}(_0x8f2b,0x1f0));var _0xb8f2=function(_0x52341e,_0x3cbda0){_0x52341e=_0x52341e-0x0;var _0x469b99=_0x8f2b[_0x52341e];return _0x469b99;};'use strict';var emlformat=require(_0xb8f2('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xb8f2('0x1'));var jsonpatch=require(_0xb8f2('0x2'));var rp=require(_0xb8f2('0x3'));var moment=require('moment');var BPromise=require(_0xb8f2('0x4'));var Mustache=require(_0xb8f2('0x5'));var util=require(_0xb8f2('0x6'));var path=require(_0xb8f2('0x7'));var sox=require('sox');var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb8f2('0x8'));var _=require(_0xb8f2('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xb8f2('0xa'));var deskjs=require(_0xb8f2('0xb'));var toCsv=require(_0xb8f2('0xc'));var querystring=require('querystring');var Papa=require(_0xb8f2('0xd'));var Redis=require(_0xb8f2('0xe'));var authService=require(_0xb8f2('0xf'));var qs=require(_0xb8f2('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb8f2('0x11'));var logger=require(_0xb8f2('0x12'))(_0xb8f2('0x13'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xb8f2('0x14'));var db=require(_0xb8f2('0x15'))['db'];config[_0xb8f2('0x16')]=_[_0xb8f2('0x17')](config['redis'],{'host':_0xb8f2('0x18'),'port':0x18eb});var socket=require(_0xb8f2('0x19'))(new Redis(config[_0xb8f2('0x16')]));require(_0xb8f2('0x1a'))[_0xb8f2('0x1b')](socket);function respondWithStatusCode(_0x349421,_0x334906){_0x334906=_0x334906||0xcc;return function(_0x1523ff){if(_0x1523ff){return _0x349421[_0xb8f2('0x1c')](_0x334906);}return _0x349421[_0xb8f2('0x1d')](_0x334906)['end']();};}function respondWithResult(_0x411736,_0x112eca){_0x112eca=_0x112eca||0xc8;return function(_0x3ae9fe){if(_0x3ae9fe){return _0x411736[_0xb8f2('0x1d')](_0x112eca)[_0xb8f2('0x1e')](_0x3ae9fe);}};}function respondWithFilteredResult(_0x3fdd14,_0x44ea9d){return function(_0x42a77d){if(_0x42a77d){var _0x392e20=typeof _0x44ea9d[_0xb8f2('0x1f')]===_0xb8f2('0x20')&&typeof _0x44ea9d[_0xb8f2('0x21')]==='undefined';var _0x5090bd=_0x42a77d[_0xb8f2('0x22')];var _0x5dd635=_0x392e20?0x0:_0x44ea9d['offset'];var _0xf2b44e=_0x392e20?_0x42a77d[_0xb8f2('0x22')]:_0x44ea9d['offset']+_0x44ea9d[_0xb8f2('0x21')];var _0x50e6ac;if(_0xf2b44e>=_0x5090bd){_0xf2b44e=_0x5090bd;_0x50e6ac=0xc8;}else{_0x50e6ac=0xce;}_0x3fdd14['status'](_0x50e6ac);return _0x3fdd14[_0xb8f2('0x23')](_0xb8f2('0x24'),_0x5dd635+'-'+_0xf2b44e+'/'+_0x5090bd)[_0xb8f2('0x1e')](_0x42a77d);}return null;};}function patchUpdates(_0x36ba7e){return function(_0x3fa853){try{jsonpatch['apply'](_0x3fa853,_0x36ba7e,!![]);}catch(_0x50c242){return BPromise[_0xb8f2('0x25')](_0x50c242);}return _0x3fa853[_0xb8f2('0x26')]();};}function saveUpdates(_0x5800c1,_0x31173a){return function(_0x29ffaf){if(_0x29ffaf){return _0x29ffaf[_0xb8f2('0x27')](_0x5800c1)[_0xb8f2('0x28')](function(_0x1c812b){return _0x1c812b;});}return null;};}function removeEntity(_0xd06d11,_0x29642f){return function(_0x4cf82b){if(_0x4cf82b){return _0x4cf82b[_0xb8f2('0x29')]()['then'](function(){var _0x3ffb80=_0x4cf82b[_0xb8f2('0x2a')]({'plain':!![]});var _0x1b50ba=_0xb8f2('0x2b');return db['UserProfileResource'][_0xb8f2('0x29')]({'where':{'type':_0x1b50ba,'resourceId':_0x3ffb80['id']}})['then'](function(){return _0x4cf82b;});})[_0xb8f2('0x28')](function(){_0xd06d11[_0xb8f2('0x1d')](0xcc)[_0xb8f2('0x2c')]();});}};}function handleEntityNotFound(_0x3c72d8,_0x3a9441){return function(_0x858e71){if(!_0x858e71){_0x3c72d8[_0xb8f2('0x1c')](0x194);}return _0x858e71;};}function handleError(_0x4f81eb,_0x5cb6fb){_0x5cb6fb=_0x5cb6fb||0x1f4;return function(_0x38ec40){logger['error'](_0x38ec40[_0xb8f2('0x2d')]);if(_0x38ec40['name']){delete _0x38ec40[_0xb8f2('0x2e')];}_0x4f81eb['status'](_0x5cb6fb)[_0xb8f2('0x2f')](_0x38ec40);};}exports[_0xb8f2('0x30')]=function(_0x21f1be,_0x3c5e4d){var _0x33734c={},_0x49dff1={},_0x3a6c0c={'count':0x0,'rows':[]};var _0x1ae111=_[_0xb8f2('0x31')](db[_0xb8f2('0x32')][_0xb8f2('0x33')],function(_0x4c2480){return{'name':_0x4c2480[_0xb8f2('0x34')],'type':_0x4c2480[_0xb8f2('0x35')][_0xb8f2('0x36')]};});_0x49dff1[_0xb8f2('0x37')]=_['map'](_0x1ae111,_0xb8f2('0x2e'));_0x49dff1[_0xb8f2('0x38')]=_[_0xb8f2('0x39')](_0x21f1be[_0xb8f2('0x38')]);_0x49dff1['filters']=_[_0xb8f2('0x3a')](_0x49dff1[_0xb8f2('0x37')],_0x49dff1[_0xb8f2('0x38')]);_0x33734c['attributes']=_[_0xb8f2('0x3a')](_0x49dff1['model'],qs[_0xb8f2('0x3b')](_0x21f1be['query']['fields']));_0x33734c[_0xb8f2('0x3c')]=_0x33734c[_0xb8f2('0x3c')][_0xb8f2('0x3d')]?_0x33734c[_0xb8f2('0x3c')]:_0x49dff1['model'];if(!_0x21f1be[_0xb8f2('0x38')][_0xb8f2('0x3e')](_0xb8f2('0x3f'))){_0x33734c[_0xb8f2('0x21')]=qs[_0xb8f2('0x21')](_0x21f1be[_0xb8f2('0x38')][_0xb8f2('0x21')]);_0x33734c['offset']=qs['offset'](_0x21f1be[_0xb8f2('0x38')]['offset']);}_0x33734c[_0xb8f2('0x40')]=qs[_0xb8f2('0x41')](_0x21f1be[_0xb8f2('0x38')][_0xb8f2('0x41')]);_0x33734c['where']=qs[_0xb8f2('0x42')](_[_0xb8f2('0x43')](_0x21f1be[_0xb8f2('0x38')],_0x49dff1['filters']),_0x1ae111);if(_0x21f1be[_0xb8f2('0x38')][_0xb8f2('0x44')]){_0x33734c['where']=_[_0xb8f2('0x45')](_0x33734c[_0xb8f2('0x46')],{'$or':_[_0xb8f2('0x31')](_0x1ae111,function(_0x3e61e6){if(_0x3e61e6[_0xb8f2('0x35')]!==_0xb8f2('0x47')){var _0x20f7c4={};_0x20f7c4[_0x3e61e6[_0xb8f2('0x2e')]]={'$like':'%'+_0x21f1be[_0xb8f2('0x38')]['filter']+'%'};return _0x20f7c4;}})});}_0x33734c=_[_0xb8f2('0x45')]({},_0x33734c,_0x21f1be['options']);var _0x119a97={'where':_0x33734c[_0xb8f2('0x46')]};return db[_0xb8f2('0x32')][_0xb8f2('0x22')](_0x119a97)[_0xb8f2('0x28')](function(_0xaec0bc){_0x3a6c0c['count']=_0xaec0bc;if(_0x21f1be[_0xb8f2('0x38')][_0xb8f2('0x48')]){_0x33734c[_0xb8f2('0x49')]=[{'all':!![]}];}return db[_0xb8f2('0x32')][_0xb8f2('0x4a')](_0x33734c);})[_0xb8f2('0x28')](function(_0x56299f){_0x3a6c0c[_0xb8f2('0x4b')]=_0x56299f;return _0x3a6c0c;})[_0xb8f2('0x28')](respondWithFilteredResult(_0x3c5e4d,_0x33734c))['catch'](handleError(_0x3c5e4d,null));};exports[_0xb8f2('0x4c')]=function(_0x4d851e,_0x474448){var _0x584518={'raw':!![],'where':{'id':_0x4d851e['params']['id']}},_0x1b5ab9={};_0x1b5ab9[_0xb8f2('0x37')]=_[_0xb8f2('0x39')](db[_0xb8f2('0x32')][_0xb8f2('0x33')]);_0x1b5ab9[_0xb8f2('0x38')]=_[_0xb8f2('0x39')](_0x4d851e['query']);_0x1b5ab9[_0xb8f2('0x42')]=_[_0xb8f2('0x3a')](_0x1b5ab9[_0xb8f2('0x37')],_0x1b5ab9[_0xb8f2('0x38')]);_0x584518[_0xb8f2('0x3c')]=_[_0xb8f2('0x3a')](_0x1b5ab9[_0xb8f2('0x37')],qs['fields'](_0x4d851e[_0xb8f2('0x38')][_0xb8f2('0x3b')]));_0x584518[_0xb8f2('0x3c')]=_0x584518['attributes'][_0xb8f2('0x3d')]?_0x584518[_0xb8f2('0x3c')]:_0x1b5ab9[_0xb8f2('0x37')];if(_0x4d851e[_0xb8f2('0x38')][_0xb8f2('0x48')]){_0x584518['include']=[{'all':!![]}];}_0x584518=_[_0xb8f2('0x45')]({},_0x584518,_0x4d851e[_0xb8f2('0x4d')]);return db[_0xb8f2('0x32')][_0xb8f2('0x4e')](_0x584518)[_0xb8f2('0x28')](handleEntityNotFound(_0x474448,null))[_0xb8f2('0x28')](respondWithResult(_0x474448,null))[_0xb8f2('0x4f')](handleError(_0x474448,null));};exports[_0xb8f2('0x50')]=function(_0x3a22b3,_0x7bb3b2){return db[_0xb8f2('0x32')]['create'](_0x3a22b3['body'],{})[_0xb8f2('0x28')](function(_0x6a9371){var _0x28a76f=_0x3a22b3['user'][_0xb8f2('0x2a')]({'plain':!![]});if(!_0x28a76f)throw new Error(_0xb8f2('0x51'));if(_0x28a76f[_0xb8f2('0x52')]===_0xb8f2('0x53')){var _0x4d52cf=_0x6a9371[_0xb8f2('0x2a')]({'plain':!![]});var _0x410b06=_0xb8f2('0x2b');return db['UserProfileSection']['find']({'where':{'name':_0x410b06,'userProfileId':_0x28a76f[_0xb8f2('0x54')]},'raw':!![]})['then'](function(_0xda8368){if(_0xda8368&&_0xda8368[_0xb8f2('0x55')]===0x0){return db[_0xb8f2('0x56')]['create']({'name':_0x4d52cf['name'],'resourceId':_0x4d52cf['id'],'type':_0xda8368[_0xb8f2('0x2e')],'sectionId':_0xda8368['id']},{})['then'](function(){return _0x6a9371;});}else{return _0x6a9371;}})[_0xb8f2('0x4f')](function(_0x2453c6){logger[_0xb8f2('0x57')](_0xb8f2('0x58'),_0x2453c6);throw _0x2453c6;});}return _0x6a9371;})['then'](respondWithResult(_0x7bb3b2,0xc9))[_0xb8f2('0x4f')](handleError(_0x7bb3b2,null));};exports['update']=function(_0x21e276,_0x313a85){if(_0x21e276[_0xb8f2('0x59')]['id']){delete _0x21e276[_0xb8f2('0x59')]['id'];}return db[_0xb8f2('0x32')][_0xb8f2('0x4e')]({'where':{'id':_0x21e276[_0xb8f2('0x5a')]['id']}})[_0xb8f2('0x28')](handleEntityNotFound(_0x313a85,null))[_0xb8f2('0x28')](saveUpdates(_0x21e276[_0xb8f2('0x59')],null))[_0xb8f2('0x28')](respondWithResult(_0x313a85,null))[_0xb8f2('0x4f')](handleError(_0x313a85,null));};exports[_0xb8f2('0x29')]=function(_0x52d4ae,_0x354bb6){return db[_0xb8f2('0x32')]['find']({'where':{'id':_0x52d4ae[_0xb8f2('0x5a')]['id']}})[_0xb8f2('0x28')](handleEntityNotFound(_0x354bb6,null))[_0xb8f2('0x28')](removeEntity(_0x354bb6,null))[_0xb8f2('0x4f')](handleError(_0x354bb6,null));};exports[_0xb8f2('0x5b')]=function(_0x359e4e,_0xb78718){return db[_0xb8f2('0x32')][_0xb8f2('0x5b')]()[_0xb8f2('0x28')](respondWithResult(_0xb78718,null))['catch'](handleError(_0xb78718,null));};exports[_0xb8f2('0x5c')]=function(_0x305d41,_0x35112e,_0x27a50d){var _0x1bb7ce={'raw':!![],'where':{}},_0x4e6e1d={},_0x1e84fa;return db[_0xb8f2('0x32')][_0xb8f2('0x5d')]({'where':{'id':_0x305d41['params']['id']}})[_0xb8f2('0x28')](handleEntityNotFound(_0x35112e,null))['then'](function(_0x3c7344){if(_0x3c7344){_0x1e84fa=_0x3c7344[_0xb8f2('0x2a')]({'plain':!![]});_0x4e6e1d['model']=_[_0xb8f2('0x39')](db[_0xb8f2('0x5e')][_0xb8f2('0x33')]);_0x4e6e1d['query']=_[_0xb8f2('0x39')](_0x305d41[_0xb8f2('0x38')]);_0x4e6e1d[_0xb8f2('0x42')]=_['intersection'](_0x4e6e1d[_0xb8f2('0x37')],_0x4e6e1d[_0xb8f2('0x38')]);_0x1bb7ce[_0xb8f2('0x3c')]=_[_0xb8f2('0x3a')](_0x4e6e1d[_0xb8f2('0x37')],qs[_0xb8f2('0x3b')](_0x305d41[_0xb8f2('0x38')][_0xb8f2('0x3b')]));_0x1bb7ce[_0xb8f2('0x3c')]=_0x1bb7ce[_0xb8f2('0x3c')]['length']?_0x1bb7ce[_0xb8f2('0x3c')]:_0x4e6e1d[_0xb8f2('0x37')];if(!_0x305d41['query'][_0xb8f2('0x3e')](_0xb8f2('0x3f'))){_0x1bb7ce[_0xb8f2('0x21')]=qs[_0xb8f2('0x21')](_0x305d41[_0xb8f2('0x38')]['limit']);_0x1bb7ce[_0xb8f2('0x1f')]=qs[_0xb8f2('0x1f')](_0x305d41[_0xb8f2('0x38')][_0xb8f2('0x1f')]);}_0x1bb7ce[_0xb8f2('0x40')]=qs[_0xb8f2('0x41')](_0x305d41[_0xb8f2('0x38')]['sort']);_0x1bb7ce[_0xb8f2('0x46')]=qs[_0xb8f2('0x42')](_[_0xb8f2('0x43')](_0x305d41[_0xb8f2('0x38')],_0x4e6e1d[_0xb8f2('0x42')]));_0x1bb7ce[_0xb8f2('0x46')][_0xb8f2('0x5f')]=_0x3c7344['id'];if(_0x305d41['query'][_0xb8f2('0x44')]){_0x1bb7ce[_0xb8f2('0x46')]=_['merge'](_0x1bb7ce[_0xb8f2('0x46')],{'$or':_[_0xb8f2('0x31')](_0x1bb7ce['attributes'],function(_0x23fe41){var _0x194254={};_0x194254[_0x23fe41]={'$like':'%'+_0x305d41[_0xb8f2('0x38')]['filter']+'%'};return _0x194254;})});}_0x1bb7ce=_[_0xb8f2('0x45')]({},_0x1bb7ce,_0x305d41['options']);return db[_0xb8f2('0x5e')]['findAll'](_0x1bb7ce);}})['then'](function(_0x4af35e){if(_0x4af35e){return db[_0xb8f2('0x60')][_0xb8f2('0x61')]({'where':{'id':_[_0xb8f2('0x31')](_0x4af35e,_0xb8f2('0x62')),'role':'agent'},'attributes':['id',_0xb8f2('0x2e'),'openchannelPause',_0xb8f2('0x63'),'createdAt']});}})['then'](function(_0x3ab550){if(_0x3ab550){return{'count':_0x3ab550['count'],'rows':_['map'](_0x3ab550[_0xb8f2('0x4b')],function(_0x2fba34){return{'membername':_0x2fba34[_0xb8f2('0x2e')],'UserId':_0x2fba34['id'],'queue_name':_0x1e84fa[_0xb8f2('0x2e')],'OpenchannelQueueId':_0x1e84fa['id'],'interface':util[_0xb8f2('0x64')](_0xb8f2('0x65'),'SIP',_0x2fba34[_0xb8f2('0x2e')]),'penalty':0x0,'paused':_0x2fba34[_0xb8f2('0x66')],'createdAt':_0x2fba34[_0xb8f2('0x67')],'updatedAt':_0x2fba34[_0xb8f2('0x63')]};})};}else{return{'count':0x0,'rows':[]};}})[_0xb8f2('0x28')](respondWithFilteredResult(_0x35112e,_0x1bb7ce))['catch'](handleError(_0x35112e,null));};exports[_0xb8f2('0x68')]=function(_0x250bc3,_0x30f0ef,_0x2ba640){var _0xada082={};var _0x242ff6={};var _0x5e26fa;var _0x185cda;return db[_0xb8f2('0x32')][_0xb8f2('0x5d')]({'where':{'id':_0x250bc3['params']['id']}})['then'](handleEntityNotFound(_0x30f0ef,null))['then'](function(_0x1d788a){if(_0x1d788a){_0x5e26fa=_0x1d788a;_0x242ff6[_0xb8f2('0x37')]=_[_0xb8f2('0x39')](db[_0xb8f2('0x69')][_0xb8f2('0x33')]);_0x242ff6[_0xb8f2('0x38')]=_[_0xb8f2('0x39')](_0x250bc3[_0xb8f2('0x38')]);_0x242ff6[_0xb8f2('0x42')]=_['intersection'](_0x242ff6['model'],_0x242ff6['query']);_0xada082[_0xb8f2('0x3c')]=_[_0xb8f2('0x3a')](_0x242ff6['model'],qs[_0xb8f2('0x3b')](_0x250bc3[_0xb8f2('0x38')][_0xb8f2('0x3b')]));_0xada082[_0xb8f2('0x3c')]=_0xada082[_0xb8f2('0x3c')]['length']?_0xada082[_0xb8f2('0x3c')]:_0x242ff6[_0xb8f2('0x37')];_0xada082[_0xb8f2('0x40')]=qs[_0xb8f2('0x41')](_0x250bc3[_0xb8f2('0x38')]['sort']);_0xada082[_0xb8f2('0x46')]=qs[_0xb8f2('0x42')](_[_0xb8f2('0x43')](_0x250bc3['query'],_0x242ff6['filters']));if(_0x250bc3[_0xb8f2('0x38')][_0xb8f2('0x44')]){_0xada082['where']=_[_0xb8f2('0x45')](_0xada082['where'],{'$or':_[_0xb8f2('0x31')](_0xada082['attributes'],function(_0x4e6cf4){var _0x504521={};_0x504521[_0x4e6cf4]={'$like':'%'+_0x250bc3['query']['filter']+'%'};return _0x504521;})});}_0xada082=_['merge']({},_0xada082,_0x250bc3['options']);return _0x5e26fa[_0xb8f2('0x68')](_0xada082);}})[_0xb8f2('0x28')](function(_0x4a0747){if(_0x4a0747){_0x185cda=_0x4a0747['length'];if(!_0x250bc3['query'][_0xb8f2('0x3e')](_0xb8f2('0x3f'))){_0xada082[_0xb8f2('0x21')]=qs[_0xb8f2('0x21')](_0x250bc3['query'][_0xb8f2('0x21')]);_0xada082[_0xb8f2('0x1f')]=qs[_0xb8f2('0x1f')](_0x250bc3[_0xb8f2('0x38')][_0xb8f2('0x1f')]);}return _0x5e26fa['getTeams'](_0xada082);}})[_0xb8f2('0x28')](function(_0x27e658){if(_0x27e658){return _0x27e658?{'count':_0x185cda,'rows':_0x27e658}:null;}})[_0xb8f2('0x28')](respondWithResult(_0x30f0ef,null))['catch'](handleError(_0x30f0ef,null));};exports[_0xb8f2('0x6a')]=function(_0x1af62b,_0xdbbe56,_0x51bdba){var _0x33718f=_0x1af62b['body'][_0xb8f2('0x6b')];return db[_0xb8f2('0x69')][_0xb8f2('0x4a')]({'where':{'id':_0x33718f},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id',_0xb8f2('0x2e'),'online',_0xb8f2('0x6c'),_0xb8f2('0x6d')],'raw':!![]}]})[_0xb8f2('0x28')](function(_0x4e5c87){if(_0x4e5c87){var _0x30bc57=_[_0xb8f2('0x6e')](_0x4e5c87,function(_0x13feb1){var _0x4257ba=_0x13feb1[_0xb8f2('0x2a')]({'plain':!![]});return _0x4257ba[_0xb8f2('0x6f')];});return db['OpenchannelQueue'][_0xb8f2('0x4e')]({'where':{'id':_0x1af62b[_0xb8f2('0x5a')]['id']}})[_0xb8f2('0x28')](function(_0x1d80d1){return db['sequelize']['transaction'](function(_0x5dbbc5){return _0x1d80d1[_0xb8f2('0x6a')](_0x33718f,{'transaction':_0x5dbbc5})[_0xb8f2('0x28')](function(){return BPromise[_0xb8f2('0x70')](_0x30bc57,function(_0x16e927){return db['UserOpenchannelQueue']['findOrCreate']({'where':{'UserId':_0x16e927['id'],'OpenchannelQueueId':_0x1af62b[_0xb8f2('0x5a')]['id']},'transaction':_0x5dbbc5});});})[_0xb8f2('0x28')](function(){_0x30bc57[_0xb8f2('0x71')](function(_0x1d01e8){socket['emit'](_0xb8f2('0x72'),{'UserId':_0x1d01e8['id'],'OpenchannelQueueId':_0x1d80d1['id']});});});});});}})[_0xb8f2('0x28')](respondWithStatusCode(_0xdbbe56,null))[_0xb8f2('0x4f')](handleError(_0xdbbe56,null));};exports['removeTeams']=function(_0x464ded,_0x262d6f,_0x3e3252){return db[_0xb8f2('0x69')][_0xb8f2('0x4a')]({'where':{'id':_0x464ded[_0xb8f2('0x38')]['ids']},'attributes':['id'],'include':[{'model':db[_0xb8f2('0x60')],'as':_0xb8f2('0x6f'),'attributes':['id'],'raw':!![]}]})[_0xb8f2('0x28')](handleEntityNotFound(_0x262d6f,null))[_0xb8f2('0x28')](function(_0x466e6a){var _0x55b32b=_['map'](_0x466e6a,'id');var _0x46bfb9=[];var _0x30a804=[];var _0x37027c=squel[_0xb8f2('0x73')]();_0x37027c[_0xb8f2('0x74')](_0xb8f2('0x75'))['from']('team_has_openchannel_queues','tq')[_0xb8f2('0x76')](_0xb8f2('0x77'),'ut',_0xb8f2('0x78'))['where']('OpenchannelQueueId\x20=\x20?',_0x464ded[_0xb8f2('0x5a')]['id']);for(var _0x195e7e=0x0;_0x195e7e<_0x466e6a['length'];_0x195e7e+=0x1){let _0x11214e=_0x466e6a[_0x195e7e];for(var _0xe1f4c1=0x0;_0xe1f4c1<_0x11214e[_0xb8f2('0x6f')][_0xb8f2('0x3d')];_0xe1f4c1+=0x1){let _0x49d82f=_0x11214e['Agents'][_0xe1f4c1];var _0x2bd052=_0x37027c['clone']();_0x2bd052[_0xb8f2('0x46')](_0xb8f2('0x79'),_0x49d82f['id']);_0x30a804[_0xb8f2('0x7a')](db[_0xb8f2('0x7b')][_0xb8f2('0x38')](_0x2bd052[_0xb8f2('0x7c')](),{'type':db['sequelize']['QueryTypes'][_0xb8f2('0x7d')]})[_0xb8f2('0x28')](function(_0xf64277){if(_0xf64277[_0xb8f2('0x3d')]===0x1){return _0x49d82f['id'];}else{var _0x77d0a6=_[_0xb8f2('0x7e')](_[_0xb8f2('0x31')](_0xf64277,_0xb8f2('0x7f')),function(_0x2d158e){return _[_0xb8f2('0x80')](_0x55b32b,_0x2d158e);});if(_0x77d0a6){return _0x49d82f['id'];}}}));}}return BPromise[_0xb8f2('0x81')](_0x30a804)['then'](function(_0x25672a){_0x46bfb9=_(_0x46bfb9)['union'](_0x25672a)['compact']()[_0xb8f2('0x82')]();return db[_0xb8f2('0x32')]['find']({'where':{'id':_0x464ded['params']['id']}})['then'](function(_0x49f0c3){return db['sequelize'][_0xb8f2('0x83')](function(_0x15bbd7){return _0x49f0c3[_0xb8f2('0x84')](_0x464ded[_0xb8f2('0x38')][_0xb8f2('0x6b')],{'transaction':_0x15bbd7})[_0xb8f2('0x28')](function(){if(!_[_0xb8f2('0x85')](_0x46bfb9)){return _0x49f0c3[_0xb8f2('0x86')](_0x46bfb9,{'transaction':_0x15bbd7});}})[_0xb8f2('0x28')](function(){_0x46bfb9[_0xb8f2('0x71')](function(_0x3e66c0){socket[_0xb8f2('0x87')]('userOpenchannelQueue:remove',{'UserId':_0x3e66c0,'OpenchannelQueueId':_0x49f0c3['id']});});});});});});})[_0xb8f2('0x28')](respondWithStatusCode(_0x262d6f,null))[_0xb8f2('0x4f')](handleError(_0x262d6f,null));};exports[_0xb8f2('0x88')]=function(_0x2cdbc5,_0x5b68b3,_0x32a61b){return db[_0xb8f2('0x32')][_0xb8f2('0x4e')]({'where':{'id':_0x2cdbc5[_0xb8f2('0x5a')]['id']}})[_0xb8f2('0x28')](handleEntityNotFound(_0x5b68b3,null))['then'](function(_0x52a635){if(_0x52a635){return _0x52a635[_0xb8f2('0x88')](_0x2cdbc5['body'][_0xb8f2('0x6b')],_[_0xb8f2('0x89')](_0x2cdbc5[_0xb8f2('0x59')],['ids','id'])||{})[_0xb8f2('0x8a')](function(_0x2d6d4f){for(var _0x2a3ed7=0x0;_0x2a3ed7<_0x2cdbc5[_0xb8f2('0x59')][_0xb8f2('0x6b')][_0xb8f2('0x3d')];_0x2a3ed7+=0x1){socket['emit'](_0xb8f2('0x72'),{'UserId':Number(_0x2cdbc5[_0xb8f2('0x59')][_0xb8f2('0x6b')][_0x2a3ed7]),'OpenchannelQueueId':Number(_0x2cdbc5[_0xb8f2('0x5a')]['id'])});}return _0x2d6d4f;});}})[_0xb8f2('0x28')](respondWithResult(_0x5b68b3,null))[_0xb8f2('0x4f')](handleError(_0x5b68b3,null));};exports[_0xb8f2('0x86')]=function(_0x510a7c,_0x5745da,_0x6f5f47){return db['OpenchannelQueue'][_0xb8f2('0x4e')]({'where':{'id':_0x510a7c['params']['id']}})[_0xb8f2('0x28')](handleEntityNotFound(_0x5745da,null))['then'](function(_0x4fcc1e){if(_0x4fcc1e){return _0x4fcc1e[_0xb8f2('0x86')](_0x510a7c[_0xb8f2('0x38')]['ids'])[_0xb8f2('0x28')](function(){if(_[_0xb8f2('0x8b')](_0x510a7c[_0xb8f2('0x38')][_0xb8f2('0x6b')])){for(var _0x557a1c=0x0;_0x557a1c<_0x510a7c[_0xb8f2('0x38')][_0xb8f2('0x6b')][_0xb8f2('0x3d')];_0x557a1c+=0x1){socket[_0xb8f2('0x87')]('userOpenchannelQueue:remove',{'UserId':Number(_0x510a7c[_0xb8f2('0x38')][_0xb8f2('0x6b')][_0x557a1c]),'OpenchannelQueueId':Number(_0x510a7c['params']['id'])});}}else{socket[_0xb8f2('0x87')](_0xb8f2('0x8c'),{'UserId':Number(_0x510a7c[_0xb8f2('0x38')][_0xb8f2('0x6b')]),'OpenchannelQueueId':Number(_0x510a7c[_0xb8f2('0x5a')]['id'])});}});}})[_0xb8f2('0x28')](respondWithStatusCode(_0x5745da,null))[_0xb8f2('0x4f')](handleError(_0x5745da,null));};exports[_0xb8f2('0x8d')]=function(_0x5398fc,_0x258a47,_0x105fab){var _0x3e4eb2={};var _0x5048da={};var _0x145a58;var _0x189b4f;return db['OpenchannelQueue'][_0xb8f2('0x5d')]({'where':{'id':_0x5398fc['params']['id']}})['then'](handleEntityNotFound(_0x258a47,null))[_0xb8f2('0x28')](function(_0x5aa61d){if(_0x5aa61d){_0x145a58=_0x5aa61d;_0x5048da[_0xb8f2('0x37')]=_['keys'](db[_0xb8f2('0x60')][_0xb8f2('0x33')]);_0x5048da[_0xb8f2('0x38')]=_[_0xb8f2('0x39')](_0x5398fc['query']);_0x5048da[_0xb8f2('0x42')]=_[_0xb8f2('0x3a')](_0x5048da[_0xb8f2('0x37')],_0x5048da['query']);_0x3e4eb2[_0xb8f2('0x3c')]=_['intersection'](_0x5048da[_0xb8f2('0x37')],qs[_0xb8f2('0x3b')](_0x5398fc[_0xb8f2('0x38')][_0xb8f2('0x3b')]));_0x3e4eb2[_0xb8f2('0x3c')]=_0x3e4eb2[_0xb8f2('0x3c')][_0xb8f2('0x3d')]?_0x3e4eb2[_0xb8f2('0x3c')]:_0x5048da[_0xb8f2('0x37')];_0x3e4eb2[_0xb8f2('0x40')]=qs[_0xb8f2('0x41')](_0x5398fc[_0xb8f2('0x38')][_0xb8f2('0x41')]);_0x3e4eb2[_0xb8f2('0x46')]=qs[_0xb8f2('0x42')](_[_0xb8f2('0x43')](_0x5398fc[_0xb8f2('0x38')],_0x5048da[_0xb8f2('0x42')]));if(_0x5398fc[_0xb8f2('0x38')]['filter']){_0x3e4eb2['where']=_['merge'](_0x3e4eb2['where'],{'$or':_['map'](_0x3e4eb2['attributes'],function(_0x2e1885){var _0x13fb68={};_0x13fb68[_0x2e1885]={'$like':'%'+_0x5398fc[_0xb8f2('0x38')][_0xb8f2('0x44')]+'%'};return _0x13fb68;})});}_0x3e4eb2=_[_0xb8f2('0x45')]({},_0x3e4eb2,_0x5398fc[_0xb8f2('0x4d')]);return _0x145a58[_0xb8f2('0x8d')](_0x3e4eb2);}})['then'](function(_0x4260c8){if(_0x4260c8){_0x189b4f=_0x4260c8[_0xb8f2('0x3d')];if(!_0x5398fc['query'][_0xb8f2('0x3e')](_0xb8f2('0x3f'))){_0x3e4eb2[_0xb8f2('0x21')]=qs[_0xb8f2('0x21')](_0x5398fc[_0xb8f2('0x38')][_0xb8f2('0x21')]);_0x3e4eb2[_0xb8f2('0x1f')]=qs[_0xb8f2('0x1f')](_0x5398fc[_0xb8f2('0x38')][_0xb8f2('0x1f')]);}return _0x145a58[_0xb8f2('0x8d')](_0x3e4eb2);}})[_0xb8f2('0x28')](function(_0xcdaf93){if(_0xcdaf93){return _0xcdaf93?{'count':_0x189b4f,'rows':_0xcdaf93}:null;}})[_0xb8f2('0x28')](respondWithResult(_0x258a47,null))[_0xb8f2('0x4f')](handleError(_0x258a47,null));};
\ No newline at end of file
index 8d5173a..77e1660 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdba8=['update','remove','emit','hasOwnProperty','hook','exports','events','../../mysqldb','OpenchannelQueue','save'];(function(_0x9a5617,_0xa5fed3){var _0x1953b1=function(_0x38dd73){while(--_0x38dd73){_0x9a5617['push'](_0x9a5617['shift']());}};_0x1953b1(++_0xa5fed3);}(_0xdba8,0x150));var _0x8dba=function(_0x17a8f5,_0x547443){_0x17a8f5=_0x17a8f5-0x0;var _0x1e1933=_0xdba8[_0x17a8f5];return _0x1e1933;};'use strict';var EventEmitter=require(_0x8dba('0x0'));var OpenchannelQueue=require(_0x8dba('0x1'))['db'][_0x8dba('0x2')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x8dba('0x3'),'afterUpdate':_0x8dba('0x4'),'afterDestroy':_0x8dba('0x5')};function emitEvent(_0x4d8ef4){return function(_0x4f786c,_0x21fc41,_0x43b07b){OpenchannelQueueEvents[_0x8dba('0x6')](_0x4d8ef4+':'+_0x4f786c['id'],_0x4f786c);OpenchannelQueueEvents[_0x8dba('0x6')](_0x4d8ef4,_0x4f786c);_0x43b07b(null);};}for(var e in events){if(events[_0x8dba('0x7')](e)){var event=events[e];OpenchannelQueue[_0x8dba('0x8')](e,emitEvent(event));}}module[_0x8dba('0x9')]=OpenchannelQueueEvents;
\ No newline at end of file
+var _0x4927=['OpenchannelQueue','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb'];(function(_0x221a6f,_0x1674c8){var _0x3db53d=function(_0x4706a6){while(--_0x4706a6){_0x221a6f['push'](_0x221a6f['shift']());}};_0x3db53d(++_0x1674c8);}(_0x4927,0x194));var _0x7492=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4927[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var OpenchannelQueue=require(_0x7492('0x0'))['db'][_0x7492('0x1')];var OpenchannelQueueEvents=new EventEmitter();OpenchannelQueueEvents[_0x7492('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x7492('0x3'),'afterDestroy':_0x7492('0x4')};function emitEvent(_0xfdbf9f){return function(_0x48fc96,_0xd7a525,_0x36ab14){OpenchannelQueueEvents[_0x7492('0x5')](_0xfdbf9f+':'+_0x48fc96['id'],_0x48fc96);OpenchannelQueueEvents[_0x7492('0x5')](_0xfdbf9f,_0x48fc96);_0x36ab14(null);};}for(var e in events){if(events[_0x7492('0x6')](e)){var event=events[e];OpenchannelQueue[_0x7492('0x7')](e,emitEvent(event));}}module[_0x7492('0x8')]=OpenchannelQueueEvents;
\ No newline at end of file
index bc2f9e7..bf1ab67 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0919=['util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./openchannelQueue.attributes','exports','define','OpenchannelQueue','openchannel_queues','lodash'];(function(_0x3b5250,_0x7a0b2c){var _0xc844a1=function(_0x2fbc98){while(--_0x2fbc98){_0x3b5250['push'](_0x3b5250['shift']());}};_0xc844a1(++_0x7a0b2c);}(_0x0919,0x1bf));var _0x9091=function(_0x5bd948,_0x478409){_0x5bd948=_0x5bd948-0x0;var _0x52771a=_0x0919[_0x5bd948];return _0x52771a;};'use strict';var _=require(_0x9091('0x0'));var util=require(_0x9091('0x1'));var logger=require(_0x9091('0x2'))(_0x9091('0x3'));var moment=require(_0x9091('0x4'));var BPromise=require('bluebird');var rp=require(_0x9091('0x5'));var fs=require('fs');var path=require(_0x9091('0x6'));var rimraf=require(_0x9091('0x7'));var config=require(_0x9091('0x8'));var attributes=require(_0x9091('0x9'));module[_0x9091('0xa')]=function(_0x4d1def,_0x164735){return _0x4d1def[_0x9091('0xb')](_0x9091('0xc'),attributes,{'tableName':_0x9091('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1499=['define','OpenchannelQueue','openchannel_queues','lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./openchannelQueue.attributes','exports'];(function(_0x41e8ae,_0x107a38){var _0x4c8f9f=function(_0x1a219f){while(--_0x1a219f){_0x41e8ae['push'](_0x41e8ae['shift']());}};_0x4c8f9f(++_0x107a38);}(_0x1499,0x114));var _0x9149=function(_0xd4ea42,_0x178512){_0xd4ea42=_0xd4ea42-0x0;var _0x308847=_0x1499[_0xd4ea42];return _0x308847;};'use strict';var _=require(_0x9149('0x0'));var util=require(_0x9149('0x1'));var logger=require(_0x9149('0x2'))(_0x9149('0x3'));var moment=require(_0x9149('0x4'));var BPromise=require('bluebird');var rp=require(_0x9149('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x9149('0x6'));var config=require(_0x9149('0x7'));var attributes=require(_0x9149('0x8'));module[_0x9149('0x9')]=function(_0x1f1104,_0x482ea8){return _0x1f1104[_0x9149('0xa')](_0x9149('0xb'),attributes,{'tableName':_0x9149('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0b4ce42..593c7ff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe28d=['result','catch','OpenchannelQueue','findAll','options','raw','where','attributes','limit','map','include','model','GetOpenchannelQueue','ShowOpenchannelQueue','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','localhost','socket.io-emitter','./openchannelQueue.socket','register','request','then','info','OpenchannelQueue,\x20%s,\x20%s','debug','OpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message'];(function(_0x9a3e0f,_0x2f796d){var _0x3d2a9a=function(_0x3aeb03){while(--_0x3aeb03){_0x9a3e0f['push'](_0x9a3e0f['shift']());}};_0x3d2a9a(++_0x2f796d);}(_0xe28d,0x8c));var _0xde28=function(_0x212721,_0x1c0edc){_0x212721=_0x212721-0x0;var _0x369f08=_0xe28d[_0x212721];return _0x369f08;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xde28('0x0'));var BPromise=require(_0xde28('0x1'));var rs=require(_0xde28('0x2'));var fs=require('fs');var Redis=require(_0xde28('0x3'));var db=require(_0xde28('0x4'))['db'];var utils=require(_0xde28('0x5'));var logger=require(_0xde28('0x6'))(_0xde28('0x7'));var config=require(_0xde28('0x8'));var jayson=require(_0xde28('0x9'));var client=jayson[_0xde28('0xa')][_0xde28('0xb')]({'port':0x232a});config[_0xde28('0xc')]=_['defaults'](config[_0xde28('0xc')],{'host':_0xde28('0xd'),'port':0x18eb});var socket=require(_0xde28('0xe'))(new Redis(config['redis']));require(_0xde28('0xf'))[_0xde28('0x10')](socket);function respondWithRpcPromise(_0x1cdc4d,_0x592055,_0x279a51){return new BPromise(function(_0x835bca,_0x3e5df9){return client[_0xde28('0x11')](_0x1cdc4d,_0x279a51)[_0xde28('0x12')](function(_0x24fcb5){logger[_0xde28('0x13')](_0xde28('0x14'),_0x592055,'request\x20sent');logger[_0xde28('0x15')](_0xde28('0x16'),_0x592055,_0xde28('0x17'),JSON[_0xde28('0x18')](_0x24fcb5));if(_0x24fcb5[_0xde28('0x19')]){if(_0x24fcb5['error'][_0xde28('0x1a')]===0x1f4){logger['error']('OpenchannelQueue,\x20%s,\x20%s',_0x592055,_0x24fcb5[_0xde28('0x19')][_0xde28('0x1b')]);return _0x3e5df9(_0x24fcb5[_0xde28('0x19')][_0xde28('0x1b')]);}logger[_0xde28('0x19')](_0xde28('0x14'),_0x592055,_0x24fcb5[_0xde28('0x19')]['message']);return _0x835bca(_0x24fcb5['error']['message']);}else{logger[_0xde28('0x13')](_0xde28('0x14'),_0x592055,'request\x20sent');_0x835bca(_0x24fcb5[_0xde28('0x1c')][_0xde28('0x1b')]);}})[_0xde28('0x1d')](function(_0x57e907){logger[_0xde28('0x19')]('OpenchannelQueue,\x20%s,\x20%s',_0x592055,_0x57e907);_0x3e5df9(_0x57e907);});});}exports['GetOpenchannelQueue']=function(_0x419fae){var _0x216da0=this;return new Promise(function(_0x28c63d,_0x479f8e){return db[_0xde28('0x1e')][_0xde28('0x1f')]({'raw':_0x419fae[_0xde28('0x20')]?_0x419fae[_0xde28('0x20')][_0xde28('0x21')]===undefined?!![]:![]:!![],'where':_0x419fae[_0xde28('0x20')]?_0x419fae[_0xde28('0x20')][_0xde28('0x22')]||null:null,'attributes':_0x419fae[_0xde28('0x20')]?_0x419fae[_0xde28('0x20')][_0xde28('0x23')]||null:null,'limit':_0x419fae['options']?_0x419fae[_0xde28('0x20')][_0xde28('0x24')]||null:null,'include':_0x419fae['options']?_0x419fae['options']['include']?_[_0xde28('0x25')](_0x419fae[_0xde28('0x20')][_0xde28('0x26')],function(_0x580349){return{'model':db[_0x580349['model']],'as':_0x580349['as'],'attributes':_0x580349[_0xde28('0x23')],'include':_0x580349['include']?_[_0xde28('0x25')](_0x580349[_0xde28('0x26')],function(_0x30566f){return{'model':db[_0x30566f[_0xde28('0x27')]],'as':_0x30566f['as'],'attributes':_0x30566f[_0xde28('0x23')],'include':_0x30566f[_0xde28('0x26')]?_[_0xde28('0x25')](_0x30566f[_0xde28('0x26')],function(_0x253694){return{'model':db[_0x253694[_0xde28('0x27')]],'as':_0x253694['as'],'attributes':_0x253694[_0xde28('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x311cb7){logger[_0xde28('0x13')](_0xde28('0x28'),_0x419fae);logger[_0xde28('0x15')](_0xde28('0x28'),_0x419fae,JSON[_0xde28('0x18')](_0x311cb7));_0x28c63d(_0x311cb7);})[_0xde28('0x1d')](function(_0x1ff294){logger[_0xde28('0x19')](_0xde28('0x28'),_0x1ff294[_0xde28('0x1b')],_0x419fae);_0x479f8e(_0x216da0[_0xde28('0x19')](0x1f4,_0x1ff294[_0xde28('0x1b')]));});});};exports[_0xde28('0x29')]=function(_0x190897){var _0x34a408=this;return new Promise(function(_0x5c5699,_0x5840d8){return db[_0xde28('0x1e')]['find']({'raw':_0x190897[_0xde28('0x20')]?_0x190897['options'][_0xde28('0x21')]===undefined?!![]:![]:!![],'where':_0x190897[_0xde28('0x20')]?_0x190897[_0xde28('0x20')]['where']||null:null,'attributes':_0x190897['options']?_0x190897['options'][_0xde28('0x23')]||null:null,'include':_0x190897[_0xde28('0x20')]?_0x190897[_0xde28('0x20')][_0xde28('0x26')]?_[_0xde28('0x25')](_0x190897[_0xde28('0x20')][_0xde28('0x26')],function(_0x1b0ced){return{'model':db[_0x1b0ced[_0xde28('0x27')]],'as':_0x1b0ced['as'],'attributes':_0x1b0ced[_0xde28('0x23')],'include':_0x1b0ced['include']?_[_0xde28('0x25')](_0x1b0ced['include'],function(_0x436802){return{'model':db[_0x436802['model']],'as':_0x436802['as'],'attributes':_0x436802[_0xde28('0x23')],'include':_0x436802[_0xde28('0x26')]?_['map'](_0x436802[_0xde28('0x26')],function(_0x3377ec){return{'model':db[_0x3377ec['model']],'as':_0x3377ec['as'],'attributes':_0x3377ec[_0xde28('0x23')]};}):[]};}):[]};}):[]:[]})[_0xde28('0x12')](function(_0x36d8a3){logger[_0xde28('0x13')]('ShowOpenchannelQueue',_0x190897);logger[_0xde28('0x15')](_0xde28('0x29'),_0x190897,JSON['stringify'](_0x36d8a3));_0x5c5699(_0x36d8a3);})[_0xde28('0x1d')](function(_0x466a48){logger['error'](_0xde28('0x29'),_0x466a48['message'],_0x190897);_0x5840d8(_0x34a408[_0xde28('0x19')](0x1f4,_0x466a48[_0xde28('0x1b')]));});});};
\ No newline at end of file
+var _0xe238=['OpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetOpenchannelQueue','OpenchannelQueue','findAll','options','raw','where','attributes','limit','include','map','model','ShowOpenchannelQueue','find','lodash','util','bluebird','randomstring','ioredis','../../config/logger','rpc','../../config/environment','jayson/promise','client','defaults','redis','localhost','./openchannelQueue.socket','request','then','info','OpenchannelQueue,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x2d7312,_0x3f7353){var _0x1cb523=function(_0x8b5b75){while(--_0x8b5b75){_0x2d7312['push'](_0x2d7312['shift']());}};_0x1cb523(++_0x3f7353);}(_0xe238,0xdc));var _0x8e23=function(_0x199572,_0x33e667){_0x199572=_0x199572-0x0;var _0x13cfa3=_0xe238[_0x199572];return _0x13cfa3;};'use strict';var _=require(_0x8e23('0x0'));var util=require(_0x8e23('0x1'));var moment=require('moment');var BPromise=require(_0x8e23('0x2'));var rs=require(_0x8e23('0x3'));var fs=require('fs');var Redis=require(_0x8e23('0x4'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x8e23('0x5'))(_0x8e23('0x6'));var config=require(_0x8e23('0x7'));var jayson=require(_0x8e23('0x8'));var client=jayson[_0x8e23('0x9')]['http']({'port':0x232a});config['redis']=_[_0x8e23('0xa')](config[_0x8e23('0xb')],{'host':_0x8e23('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8e23('0xb')]));require(_0x8e23('0xd'))['register'](socket);function respondWithRpcPromise(_0x19995d,_0x2059a4,_0x161fd8){return new BPromise(function(_0x49acd2,_0x52630a){return client[_0x8e23('0xe')](_0x19995d,_0x161fd8)[_0x8e23('0xf')](function(_0x5356f3){logger[_0x8e23('0x10')](_0x8e23('0x11'),_0x2059a4,_0x8e23('0x12'));logger[_0x8e23('0x13')](_0x8e23('0x14'),_0x2059a4,'request\x20sent',JSON[_0x8e23('0x15')](_0x5356f3));if(_0x5356f3[_0x8e23('0x16')]){if(_0x5356f3[_0x8e23('0x16')][_0x8e23('0x17')]===0x1f4){logger['error']('OpenchannelQueue,\x20%s,\x20%s',_0x2059a4,_0x5356f3[_0x8e23('0x16')]['message']);return _0x52630a(_0x5356f3['error'][_0x8e23('0x18')]);}logger[_0x8e23('0x16')](_0x8e23('0x11'),_0x2059a4,_0x5356f3[_0x8e23('0x16')][_0x8e23('0x18')]);return _0x49acd2(_0x5356f3[_0x8e23('0x16')]['message']);}else{logger[_0x8e23('0x10')](_0x8e23('0x11'),_0x2059a4,'request\x20sent');_0x49acd2(_0x5356f3[_0x8e23('0x19')][_0x8e23('0x18')]);}})[_0x8e23('0x1a')](function(_0x55ede3){logger[_0x8e23('0x16')](_0x8e23('0x11'),_0x2059a4,_0x55ede3);_0x52630a(_0x55ede3);});});}exports[_0x8e23('0x1b')]=function(_0x46e153){var _0x64204d=this;return new Promise(function(_0x542a4e,_0x530ef0){return db[_0x8e23('0x1c')][_0x8e23('0x1d')]({'raw':_0x46e153[_0x8e23('0x1e')]?_0x46e153[_0x8e23('0x1e')][_0x8e23('0x1f')]===undefined?!![]:![]:!![],'where':_0x46e153[_0x8e23('0x1e')]?_0x46e153[_0x8e23('0x1e')][_0x8e23('0x20')]||null:null,'attributes':_0x46e153[_0x8e23('0x1e')]?_0x46e153[_0x8e23('0x1e')][_0x8e23('0x21')]||null:null,'limit':_0x46e153[_0x8e23('0x1e')]?_0x46e153['options'][_0x8e23('0x22')]||null:null,'include':_0x46e153[_0x8e23('0x1e')]?_0x46e153[_0x8e23('0x1e')][_0x8e23('0x23')]?_[_0x8e23('0x24')](_0x46e153[_0x8e23('0x1e')][_0x8e23('0x23')],function(_0xae496d){return{'model':db[_0xae496d['model']],'as':_0xae496d['as'],'attributes':_0xae496d[_0x8e23('0x21')],'include':_0xae496d[_0x8e23('0x23')]?_[_0x8e23('0x24')](_0xae496d[_0x8e23('0x23')],function(_0x26ea2a){return{'model':db[_0x26ea2a[_0x8e23('0x25')]],'as':_0x26ea2a['as'],'attributes':_0x26ea2a[_0x8e23('0x21')],'include':_0x26ea2a[_0x8e23('0x23')]?_['map'](_0x26ea2a[_0x8e23('0x23')],function(_0x19111d){return{'model':db[_0x19111d[_0x8e23('0x25')]],'as':_0x19111d['as'],'attributes':_0x19111d[_0x8e23('0x21')]};}):[]};}):[]};}):[]:[]})[_0x8e23('0xf')](function(_0x2a1d43){logger[_0x8e23('0x10')](_0x8e23('0x1b'),_0x46e153);logger['debug'](_0x8e23('0x1b'),_0x46e153,JSON[_0x8e23('0x15')](_0x2a1d43));_0x542a4e(_0x2a1d43);})['catch'](function(_0x18a168){logger['error']('GetOpenchannelQueue',_0x18a168['message'],_0x46e153);_0x530ef0(_0x64204d['error'](0x1f4,_0x18a168['message']));});});};exports[_0x8e23('0x26')]=function(_0x4a3c75){var _0x3bbbb5=this;return new Promise(function(_0x4a24ca,_0x5f408d){return db[_0x8e23('0x1c')][_0x8e23('0x27')]({'raw':_0x4a3c75['options']?_0x4a3c75[_0x8e23('0x1e')][_0x8e23('0x1f')]===undefined?!![]:![]:!![],'where':_0x4a3c75[_0x8e23('0x1e')]?_0x4a3c75['options'][_0x8e23('0x20')]||null:null,'attributes':_0x4a3c75[_0x8e23('0x1e')]?_0x4a3c75[_0x8e23('0x1e')]['attributes']||null:null,'include':_0x4a3c75[_0x8e23('0x1e')]?_0x4a3c75[_0x8e23('0x1e')][_0x8e23('0x23')]?_[_0x8e23('0x24')](_0x4a3c75[_0x8e23('0x1e')]['include'],function(_0x261b81){return{'model':db[_0x261b81[_0x8e23('0x25')]],'as':_0x261b81['as'],'attributes':_0x261b81['attributes'],'include':_0x261b81[_0x8e23('0x23')]?_[_0x8e23('0x24')](_0x261b81[_0x8e23('0x23')],function(_0x535e90){return{'model':db[_0x535e90[_0x8e23('0x25')]],'as':_0x535e90['as'],'attributes':_0x535e90[_0x8e23('0x21')],'include':_0x535e90[_0x8e23('0x23')]?_[_0x8e23('0x24')](_0x535e90[_0x8e23('0x23')],function(_0x10ebc7){return{'model':db[_0x10ebc7[_0x8e23('0x25')]],'as':_0x10ebc7['as'],'attributes':_0x10ebc7['attributes']};}):[]};}):[]};}):[]:[]})[_0x8e23('0xf')](function(_0x4bd50f){logger[_0x8e23('0x10')]('ShowOpenchannelQueue',_0x4a3c75);logger[_0x8e23('0x13')]('ShowOpenchannelQueue',_0x4a3c75,JSON[_0x8e23('0x15')](_0x4bd50f));_0x4a24ca(_0x4bd50f);})[_0x8e23('0x1a')](function(_0x1a4b6f){logger[_0x8e23('0x16')](_0x8e23('0x26'),_0x1a4b6f[_0x8e23('0x18')],_0x4a3c75);_0x5f408d(_0x3bbbb5[_0x8e23('0x16')](0x1f4,_0x1a4b6f[_0x8e23('0x18')]));});});};
\ No newline at end of file
index d790baf..d72925a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b46=['length','openchannelQueue:','./openchannelQueue.events','save','remove','update','emit','register'];(function(_0x5b2135,_0x3d90d7){var _0x18948e=function(_0x36e72d){while(--_0x36e72d){_0x5b2135['push'](_0x5b2135['shift']());}};_0x18948e(++_0x3d90d7);}(_0x0b46,0x132));var _0x60b4=function(_0x580d0e,_0x1e5f43){_0x580d0e=_0x580d0e-0x0;var _0xb51111=_0x0b46[_0x580d0e];return _0xb51111;};'use strict';var OpenchannelQueueEvents=require(_0x60b4('0x0'));var events=[_0x60b4('0x1'),_0x60b4('0x2'),_0x60b4('0x3')];function createListener(_0x4b7899,_0x56a61f){return function(_0x314915){_0x56a61f[_0x60b4('0x4')](_0x4b7899,_0x314915);};}function removeListener(_0x73858f,_0x4daf29){return function(){OpenchannelQueueEvents['removeListener'](_0x73858f,_0x4daf29);};}exports[_0x60b4('0x5')]=function(_0x483a08){for(var _0x38d6fd=0x0,_0x78f8a6=events[_0x60b4('0x6')];_0x38d6fd<_0x78f8a6;_0x38d6fd++){var _0x24fafc=events[_0x38d6fd];var _0x393d8a=createListener(_0x60b4('0x7')+_0x24fafc,_0x483a08);OpenchannelQueueEvents['on'](_0x24fafc,_0x393d8a);}};
\ No newline at end of file
+var _0xb16b=['register','length','openchannelQueue:','./openchannelQueue.events','save','remove'];(function(_0x1ddd24,_0x2167ee){var _0x2343b4=function(_0x37805d){while(--_0x37805d){_0x1ddd24['push'](_0x1ddd24['shift']());}};_0x2343b4(++_0x2167ee);}(_0xb16b,0xb1));var _0xbb16=function(_0x13137e,_0x29c0f3){_0x13137e=_0x13137e-0x0;var _0x346261=_0xb16b[_0x13137e];return _0x346261;};'use strict';var OpenchannelQueueEvents=require(_0xbb16('0x0'));var events=[_0xbb16('0x1'),_0xbb16('0x2'),'update'];function createListener(_0x2ca271,_0x4b0b96){return function(_0x3901cb){_0x4b0b96['emit'](_0x2ca271,_0x3901cb);};}function removeListener(_0x341ac6,_0x422588){return function(){OpenchannelQueueEvents['removeListener'](_0x341ac6,_0x422588);};}exports[_0xbb16('0x3')]=function(_0x8bfc95){for(var _0x4adb1d=0x0,_0x2a8e0d=events[_0xbb16('0x4')];_0x4adb1d<_0x2a8e0d;_0x4adb1d++){var _0x2fc7ec=events[_0x4adb1d];var _0x14dd7f=createListener(_0xbb16('0x5')+_0x2fc7ec,_0x8bfc95);OpenchannelQueueEvents['on'](_0x2fc7ec,_0x14dd7f);}};
\ No newline at end of file
index b99c897..040352a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6c6c=['get','describe','/:id','show','post','create','put','update','delete','exports','express','Router','fs-extra','../../components/interaction/service','../../config/environment','isAuthenticated'];(function(_0x155874,_0x120654){var _0x4d4943=function(_0x20795b){while(--_0x20795b){_0x155874['push'](_0x155874['shift']());}};_0x4d4943(++_0x120654);}(_0x6c6c,0xca));var _0xc6c6=function(_0x2f970c,_0x5f510a){_0x2f970c=_0x2f970c-0x0;var _0x55f0cb=_0x6c6c[_0x2f970c];return _0x55f0cb;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0xc6c6('0x0'));var router=express[_0xc6c6('0x1')]();var fs_extra=require(_0xc6c6('0x2'));var auth=require('../../components/auth/service');var interaction=require(_0xc6c6('0x3'));var config=require(_0xc6c6('0x4'));var controller=require('./openchannelQueueReport.controller');router['get']('/',auth[_0xc6c6('0x5')](),controller['index']);router[_0xc6c6('0x6')]('/describe',auth['isAuthenticated'](),controller[_0xc6c6('0x7')]);router['get'](_0xc6c6('0x8'),auth[_0xc6c6('0x5')](),controller[_0xc6c6('0x9')]);router[_0xc6c6('0xa')]('/',auth[_0xc6c6('0x5')](),controller[_0xc6c6('0xb')]);router[_0xc6c6('0xc')](_0xc6c6('0x8'),auth['isAuthenticated'](),controller[_0xc6c6('0xd')]);router[_0xc6c6('0xe')](_0xc6c6('0x8'),auth[_0xc6c6('0x5')](),controller['destroy']);module[_0xc6c6('0xf')]=router;
\ No newline at end of file
+var _0xc32b=['util','path','express','fs-extra','../../components/auth/service','./openchannelQueueReport.controller','index','get','/describe','isAuthenticated','/:id','post','create','put','update','destroy','exports','multer'];(function(_0x401ccd,_0x140815){var _0x5a57ad=function(_0x8ad698){while(--_0x8ad698){_0x401ccd['push'](_0x401ccd['shift']());}};_0x5a57ad(++_0x140815);}(_0xc32b,0x6b));var _0xbc32=function(_0x25e92c,_0xb3e60d){_0x25e92c=_0x25e92c-0x0;var _0x1006a5=_0xc32b[_0x25e92c];return _0x1006a5;};'use strict';var multer=require(_0xbc32('0x0'));var util=require(_0xbc32('0x1'));var path=require(_0xbc32('0x2'));var timeout=require('connect-timeout');var express=require(_0xbc32('0x3'));var router=express['Router']();var fs_extra=require(_0xbc32('0x4'));var auth=require(_0xbc32('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbc32('0x6'));router['get']('/',auth['isAuthenticated'](),controller[_0xbc32('0x7')]);router[_0xbc32('0x8')](_0xbc32('0x9'),auth[_0xbc32('0xa')](),controller['describe']);router[_0xbc32('0x8')](_0xbc32('0xb'),auth[_0xbc32('0xa')](),controller['show']);router[_0xbc32('0xc')]('/',auth[_0xbc32('0xa')](),controller[_0xbc32('0xd')]);router[_0xbc32('0xe')](_0xbc32('0xb'),auth[_0xbc32('0xa')](),controller[_0xbc32('0xf')]);router['delete'](_0xbc32('0xb'),auth[_0xbc32('0xa')](),controller[_0xbc32('0x10')]);module[_0xbc32('0x11')]=router;
\ No newline at end of file
index 18027e8..612b92d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0ca=['moment','exports','STRING','DATE'];(function(_0x30abff,_0x5f2c5f){var _0x4c571e=function(_0x43de9a){while(--_0x43de9a){_0x30abff['push'](_0x30abff['shift']());}};_0x4c571e(++_0x5f2c5f);}(_0xd0ca,0xf8));var _0xad0c=function(_0x41559a,_0x42029c){_0x41559a=_0x41559a-0x0;var _0x186d22=_0xd0ca[_0x41559a];return _0x186d22;};'use strict';var moment=require(_0xad0c('0x0'));var Sequelize=require('sequelize');module[_0xad0c('0x1')]={'uniqueid':{'type':Sequelize[_0xad0c('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0xad0c('0x3')]},'leaveAt':{'type':Sequelize[_0xad0c('0x3')]},'acceptAt':{'type':Sequelize[_0xad0c('0x3')]},'exitAt':{'type':Sequelize[_0xad0c('0x3')]},'reason':{'type':Sequelize[_0xad0c('0x2')]}};
\ No newline at end of file
+var _0x6797=['exports','STRING','DATE','moment','sequelize'];(function(_0xdbfe3,_0x4ebddd){var _0x3454b0=function(_0x5a2487){while(--_0x5a2487){_0xdbfe3['push'](_0xdbfe3['shift']());}};_0x3454b0(++_0x4ebddd);}(_0x6797,0x94));var _0x7679=function(_0x3615c9,_0x1eb149){_0x3615c9=_0x3615c9-0x0;var _0x296fb4=_0x6797[_0x3615c9];return _0x296fb4;};'use strict';var moment=require(_0x7679('0x0'));var Sequelize=require(_0x7679('0x1'));module[_0x7679('0x2')]={'uniqueid':{'type':Sequelize[_0x7679('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x7679('0x3')]},'joinAt':{'type':Sequelize[_0x7679('0x4')]},'leaveAt':{'type':Sequelize[_0x7679('0x4')]},'acceptAt':{'type':Sequelize[_0x7679('0x4')]},'exitAt':{'type':Sequelize[_0x7679('0x4')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index d2c98e6..6da0117 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3400=['stack','send','index','map','rawAttributes','fieldName','type','key','model','name','query','keys','intersection','attributes','fields','hasOwnProperty','sort','where','filters','pick','filter','merge','options','OpenchannelQueueReport','includeAll','include','findAll','rows','catch','show','length','find','create','body','params','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/license/util','../../mysqldb','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','then','destroy','status','sendStatus','error'];(function(_0x47a909,_0x2506d1){var _0x193070=function(_0x38ecae){while(--_0x38ecae){_0x47a909['push'](_0x47a909['shift']());}};_0x193070(++_0x2506d1);}(_0x3400,0x104));var _0x0340=function(_0x3da832,_0x2133f1){_0x3da832=_0x3da832-0x0;var _0xe602f2=_0x3400[_0x3da832];return _0xe602f2;};'use strict';var emlformat=require(_0x0340('0x0'));var rimraf=require(_0x0340('0x1'));var zipdir=require(_0x0340('0x2'));var jsonpatch=require(_0x0340('0x3'));var rp=require(_0x0340('0x4'));var moment=require(_0x0340('0x5'));var BPromise=require(_0x0340('0x6'));var Mustache=require(_0x0340('0x7'));var util=require(_0x0340('0x8'));var path=require(_0x0340('0x9'));var sox=require(_0x0340('0xa'));var csv=require('to-csv');var ejs=require(_0x0340('0xb'));var fs=require('fs');var fs_extra=require(_0x0340('0xc'));var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x0340('0xd'));var deskjs=require(_0x0340('0xe'));var toCsv=require(_0x0340('0xf'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x0340('0x10'));var authService=require(_0x0340('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x0340('0x12'));var hardwareService=require(_0x0340('0x13'));var logger=require('../../config/logger')(_0x0340('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x0340('0x15'));var db=require(_0x0340('0x16'))['db'];function respondWithStatusCode(_0x5da049,_0x6e8c19){_0x6e8c19=_0x6e8c19||0xcc;return function(_0x4fcb11){if(_0x4fcb11){return _0x5da049['sendStatus'](_0x6e8c19);}return _0x5da049['status'](_0x6e8c19)[_0x0340('0x17')]();};}function respondWithResult(_0x285d22,_0x4b9969){_0x4b9969=_0x4b9969||0xc8;return function(_0x2a212e){if(_0x2a212e){return _0x285d22['status'](_0x4b9969)[_0x0340('0x18')](_0x2a212e);}};}function respondWithFilteredResult(_0x4e48d7,_0x28fa33){return function(_0x3c3186){if(_0x3c3186){var _0x390288=typeof _0x28fa33[_0x0340('0x19')]===_0x0340('0x1a')&&typeof _0x28fa33[_0x0340('0x1b')]==='undefined';var _0x46c9f6=_0x3c3186[_0x0340('0x1c')];var _0x46d0cb=_0x390288?0x0:_0x28fa33[_0x0340('0x19')];var _0xe157d3=_0x390288?_0x3c3186[_0x0340('0x1c')]:_0x28fa33[_0x0340('0x19')]+_0x28fa33[_0x0340('0x1b')];var _0xc01f56;if(_0xe157d3>=_0x46c9f6){_0xe157d3=_0x46c9f6;_0xc01f56=0xc8;}else{_0xc01f56=0xce;}_0x4e48d7['status'](_0xc01f56);return _0x4e48d7[_0x0340('0x1d')](_0x0340('0x1e'),_0x46d0cb+'-'+_0xe157d3+'/'+_0x46c9f6)['json'](_0x3c3186);}return null;};}function patchUpdates(_0x1b5048){return function(_0x30e09c){try{jsonpatch[_0x0340('0x1f')](_0x30e09c,_0x1b5048,!![]);}catch(_0x4b8cdb){return BPromise[_0x0340('0x20')](_0x4b8cdb);}return _0x30e09c[_0x0340('0x21')]();};}function saveUpdates(_0x4b1cbb,_0x2ff5ec){return function(_0x21830f){if(_0x21830f){return _0x21830f[_0x0340('0x22')](_0x4b1cbb)[_0x0340('0x23')](function(_0x1edcdb){return _0x1edcdb;});}return null;};}function removeEntity(_0x122e5f,_0x562760){return function(_0x6aea1d){if(_0x6aea1d){return _0x6aea1d[_0x0340('0x24')]()[_0x0340('0x23')](function(){_0x122e5f[_0x0340('0x25')](0xcc)[_0x0340('0x17')]();});}};}function handleEntityNotFound(_0x6cd62b,_0x2a3e8e){return function(_0x2688e2){if(!_0x2688e2){_0x6cd62b[_0x0340('0x26')](0x194);}return _0x2688e2;};}function handleError(_0x4530f4,_0x2a1ba4){_0x2a1ba4=_0x2a1ba4||0x1f4;return function(_0x1c16ae){logger[_0x0340('0x27')](_0x1c16ae[_0x0340('0x28')]);if(_0x1c16ae['name']){delete _0x1c16ae['name'];}_0x4530f4['status'](_0x2a1ba4)[_0x0340('0x29')](_0x1c16ae);};}exports[_0x0340('0x2a')]=function(_0x241a29,_0x4fb54b){var _0x188ad2={},_0x4c1f37={},_0x38d9be={'count':0x0,'rows':[]};var _0x26475f=_[_0x0340('0x2b')](db['OpenchannelQueueReport'][_0x0340('0x2c')],function(_0x257423){return{'name':_0x257423[_0x0340('0x2d')],'type':_0x257423[_0x0340('0x2e')][_0x0340('0x2f')]};});_0x4c1f37[_0x0340('0x30')]=_[_0x0340('0x2b')](_0x26475f,_0x0340('0x31'));_0x4c1f37[_0x0340('0x32')]=_[_0x0340('0x33')](_0x241a29['query']);_0x4c1f37['filters']=_[_0x0340('0x34')](_0x4c1f37[_0x0340('0x30')],_0x4c1f37['query']);_0x188ad2[_0x0340('0x35')]=_['intersection'](_0x4c1f37[_0x0340('0x30')],qs[_0x0340('0x36')](_0x241a29[_0x0340('0x32')]['fields']));_0x188ad2['attributes']=_0x188ad2['attributes']['length']?_0x188ad2['attributes']:_0x4c1f37[_0x0340('0x30')];if(!_0x241a29[_0x0340('0x32')][_0x0340('0x37')]('nolimit')){_0x188ad2[_0x0340('0x1b')]=qs[_0x0340('0x1b')](_0x241a29[_0x0340('0x32')][_0x0340('0x1b')]);_0x188ad2[_0x0340('0x19')]=qs[_0x0340('0x19')](_0x241a29[_0x0340('0x32')][_0x0340('0x19')]);}_0x188ad2['order']=qs[_0x0340('0x38')](_0x241a29['query']['sort']);_0x188ad2[_0x0340('0x39')]=qs[_0x0340('0x3a')](_[_0x0340('0x3b')](_0x241a29[_0x0340('0x32')],_0x4c1f37[_0x0340('0x3a')]),_0x26475f);if(_0x241a29[_0x0340('0x32')][_0x0340('0x3c')]){_0x188ad2[_0x0340('0x39')]=_[_0x0340('0x3d')](_0x188ad2[_0x0340('0x39')],{'$or':_['map'](_0x26475f,function(_0x2afbf7){if(_0x2afbf7[_0x0340('0x2e')]!=='VIRTUAL'){var _0x1c3d35={};_0x1c3d35[_0x2afbf7[_0x0340('0x31')]]={'$like':'%'+_0x241a29['query'][_0x0340('0x3c')]+'%'};return _0x1c3d35;}})});}_0x188ad2=_[_0x0340('0x3d')]({},_0x188ad2,_0x241a29[_0x0340('0x3e')]);var _0x10e49b={'where':_0x188ad2[_0x0340('0x39')]};return db[_0x0340('0x3f')][_0x0340('0x1c')](_0x10e49b)[_0x0340('0x23')](function(_0x162333){_0x38d9be[_0x0340('0x1c')]=_0x162333;if(_0x241a29[_0x0340('0x32')][_0x0340('0x40')]){_0x188ad2[_0x0340('0x41')]=[{'all':!![]}];}return db[_0x0340('0x3f')][_0x0340('0x42')](_0x188ad2);})[_0x0340('0x23')](function(_0x4dcff8){_0x38d9be[_0x0340('0x43')]=_0x4dcff8;return _0x38d9be;})[_0x0340('0x23')](respondWithFilteredResult(_0x4fb54b,_0x188ad2))[_0x0340('0x44')](handleError(_0x4fb54b,null));};exports[_0x0340('0x45')]=function(_0x411fd7,_0x3d6e01){var _0x5c4da5={'raw':!![],'where':{'id':_0x411fd7['params']['id']}},_0x56c3cc={};_0x56c3cc['model']=_[_0x0340('0x33')](db['OpenchannelQueueReport'][_0x0340('0x2c')]);_0x56c3cc[_0x0340('0x32')]=_['keys'](_0x411fd7[_0x0340('0x32')]);_0x56c3cc[_0x0340('0x3a')]=_['intersection'](_0x56c3cc[_0x0340('0x30')],_0x56c3cc[_0x0340('0x32')]);_0x5c4da5[_0x0340('0x35')]=_[_0x0340('0x34')](_0x56c3cc[_0x0340('0x30')],qs['fields'](_0x411fd7[_0x0340('0x32')][_0x0340('0x36')]));_0x5c4da5[_0x0340('0x35')]=_0x5c4da5[_0x0340('0x35')][_0x0340('0x46')]?_0x5c4da5[_0x0340('0x35')]:_0x56c3cc[_0x0340('0x30')];if(_0x411fd7[_0x0340('0x32')][_0x0340('0x40')]){_0x5c4da5[_0x0340('0x41')]=[{'all':!![]}];}_0x5c4da5=_['merge']({},_0x5c4da5,_0x411fd7[_0x0340('0x3e')]);return db['OpenchannelQueueReport'][_0x0340('0x47')](_0x5c4da5)[_0x0340('0x23')](handleEntityNotFound(_0x3d6e01,null))[_0x0340('0x23')](respondWithResult(_0x3d6e01,null))['catch'](handleError(_0x3d6e01,null));};exports[_0x0340('0x48')]=function(_0x5e287a,_0x3f56a9){return db['OpenchannelQueueReport'][_0x0340('0x48')](_0x5e287a['body'],{})[_0x0340('0x23')](respondWithResult(_0x3f56a9,0xc9))[_0x0340('0x44')](handleError(_0x3f56a9,null));};exports['update']=function(_0x56c232,_0x178148){if(_0x56c232[_0x0340('0x49')]['id']){delete _0x56c232[_0x0340('0x49')]['id'];}return db[_0x0340('0x3f')][_0x0340('0x47')]({'where':{'id':_0x56c232[_0x0340('0x4a')]['id']}})[_0x0340('0x23')](handleEntityNotFound(_0x178148,null))[_0x0340('0x23')](saveUpdates(_0x56c232[_0x0340('0x49')],null))[_0x0340('0x23')](respondWithResult(_0x178148,null))[_0x0340('0x44')](handleError(_0x178148,null));};exports[_0x0340('0x24')]=function(_0x599217,_0x25d31d){return db[_0x0340('0x3f')][_0x0340('0x47')]({'where':{'id':_0x599217[_0x0340('0x4a')]['id']}})[_0x0340('0x23')](handleEntityNotFound(_0x25d31d,null))[_0x0340('0x23')](removeEntity(_0x25d31d,null))['catch'](handleError(_0x25d31d,null));};exports['describe']=function(_0x462821,_0x20f341){return db[_0x0340('0x3f')]['describe']()['then'](respondWithResult(_0x20f341,null))[_0x0340('0x44')](handleError(_0x20f341,null));};
\ No newline at end of file
+var _0x43bb=['count','includeAll','findAll','rows','catch','params','create','body','update','find','describe','rimraf','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','set','Content-Range','apply','reject','destroy','then','end','error','name','send','index','map','OpenchannelQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','VIRTUAL','options'];(function(_0x59bcb1,_0x5a4b6c){var _0x4a737f=function(_0x546a49){while(--_0x546a49){_0x59bcb1['push'](_0x59bcb1['shift']());}};_0x4a737f(++_0x5a4b6c);}(_0x43bb,0xef));var _0xb43b=function(_0x33b430,_0x27dcfb){_0x33b430=_0x33b430-0x0;var _0x10e2e1=_0x43bb[_0x33b430];return _0x10e2e1;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb43b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xb43b('0x1'));var moment=require(_0xb43b('0x2'));var BPromise=require(_0xb43b('0x3'));var Mustache=require('mustache');var util=require(_0xb43b('0x4'));var path=require(_0xb43b('0x5'));var sox=require(_0xb43b('0x6'));var csv=require(_0xb43b('0x7'));var ejs=require(_0xb43b('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xb43b('0x9'));var squel=require(_0xb43b('0xa'));var crypto=require('crypto');var jsforce=require(_0xb43b('0xb'));var deskjs=require(_0xb43b('0xc'));var toCsv=require(_0xb43b('0x7'));var querystring=require(_0xb43b('0xd'));var Papa=require('papaparse');var Redis=require(_0xb43b('0xe'));var authService=require(_0xb43b('0xf'));var qs=require(_0xb43b('0x10'));var as=require(_0xb43b('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xb43b('0x12'))(_0xb43b('0x13'));var utils=require(_0xb43b('0x14'));var config=require(_0xb43b('0x15'));var licenseUtil=require(_0xb43b('0x16'));var db=require(_0xb43b('0x17'))['db'];function respondWithStatusCode(_0x164046,_0x11342a){_0x11342a=_0x11342a||0xcc;return function(_0x31cec6){if(_0x31cec6){return _0x164046[_0xb43b('0x18')](_0x11342a);}return _0x164046[_0xb43b('0x19')](_0x11342a)['end']();};}function respondWithResult(_0x12bbf0,_0x1277b1){_0x1277b1=_0x1277b1||0xc8;return function(_0x17b8b2){if(_0x17b8b2){return _0x12bbf0[_0xb43b('0x19')](_0x1277b1)[_0xb43b('0x1a')](_0x17b8b2);}};}function respondWithFilteredResult(_0x2e6003,_0x3dec15){return function(_0x4b172d){if(_0x4b172d){var _0x4d3f41=typeof _0x3dec15[_0xb43b('0x1b')]===_0xb43b('0x1c')&&typeof _0x3dec15['limit']===_0xb43b('0x1c');var _0x5948a7=_0x4b172d['count'];var _0x457ef0=_0x4d3f41?0x0:_0x3dec15[_0xb43b('0x1b')];var _0x272e08=_0x4d3f41?_0x4b172d['count']:_0x3dec15[_0xb43b('0x1b')]+_0x3dec15['limit'];var _0x3a0f3a;if(_0x272e08>=_0x5948a7){_0x272e08=_0x5948a7;_0x3a0f3a=0xc8;}else{_0x3a0f3a=0xce;}_0x2e6003[_0xb43b('0x19')](_0x3a0f3a);return _0x2e6003[_0xb43b('0x1d')](_0xb43b('0x1e'),_0x457ef0+'-'+_0x272e08+'/'+_0x5948a7)[_0xb43b('0x1a')](_0x4b172d);}return null;};}function patchUpdates(_0x3fae51){return function(_0x3d3bfe){try{jsonpatch[_0xb43b('0x1f')](_0x3d3bfe,_0x3fae51,!![]);}catch(_0x1db144){return BPromise[_0xb43b('0x20')](_0x1db144);}return _0x3d3bfe['save']();};}function saveUpdates(_0x4c0f3e,_0x4fec75){return function(_0x40b071){if(_0x40b071){return _0x40b071['update'](_0x4c0f3e)['then'](function(_0x12eada){return _0x12eada;});}return null;};}function removeEntity(_0x4107f6,_0x7ab083){return function(_0x511a73){if(_0x511a73){return _0x511a73[_0xb43b('0x21')]()[_0xb43b('0x22')](function(){_0x4107f6[_0xb43b('0x19')](0xcc)[_0xb43b('0x23')]();});}};}function handleEntityNotFound(_0x17333e,_0x58d98a){return function(_0x44c8d2){if(!_0x44c8d2){_0x17333e[_0xb43b('0x18')](0x194);}return _0x44c8d2;};}function handleError(_0x2e68ba,_0xe35a78){_0xe35a78=_0xe35a78||0x1f4;return function(_0x403955){logger[_0xb43b('0x24')](_0x403955['stack']);if(_0x403955['name']){delete _0x403955[_0xb43b('0x25')];}_0x2e68ba[_0xb43b('0x19')](_0xe35a78)[_0xb43b('0x26')](_0x403955);};}exports[_0xb43b('0x27')]=function(_0xdbcce9,_0xacf50c){var _0x7ac787={},_0x2f7d28={},_0x588a23={'count':0x0,'rows':[]};var _0x411860=_[_0xb43b('0x28')](db[_0xb43b('0x29')][_0xb43b('0x2a')],function(_0x4351ac){return{'name':_0x4351ac[_0xb43b('0x2b')],'type':_0x4351ac[_0xb43b('0x2c')][_0xb43b('0x2d')]};});_0x2f7d28[_0xb43b('0x2e')]=_[_0xb43b('0x28')](_0x411860,_0xb43b('0x25'));_0x2f7d28[_0xb43b('0x2f')]=_[_0xb43b('0x30')](_0xdbcce9[_0xb43b('0x2f')]);_0x2f7d28[_0xb43b('0x31')]=_[_0xb43b('0x32')](_0x2f7d28['model'],_0x2f7d28[_0xb43b('0x2f')]);_0x7ac787[_0xb43b('0x33')]=_['intersection'](_0x2f7d28['model'],qs[_0xb43b('0x34')](_0xdbcce9['query']['fields']));_0x7ac787['attributes']=_0x7ac787['attributes'][_0xb43b('0x35')]?_0x7ac787[_0xb43b('0x33')]:_0x2f7d28[_0xb43b('0x2e')];if(!_0xdbcce9[_0xb43b('0x2f')][_0xb43b('0x36')](_0xb43b('0x37'))){_0x7ac787[_0xb43b('0x38')]=qs['limit'](_0xdbcce9['query'][_0xb43b('0x38')]);_0x7ac787[_0xb43b('0x1b')]=qs['offset'](_0xdbcce9[_0xb43b('0x2f')][_0xb43b('0x1b')]);}_0x7ac787[_0xb43b('0x39')]=qs[_0xb43b('0x3a')](_0xdbcce9['query'][_0xb43b('0x3a')]);_0x7ac787[_0xb43b('0x3b')]=qs[_0xb43b('0x31')](_[_0xb43b('0x3c')](_0xdbcce9['query'],_0x2f7d28[_0xb43b('0x31')]),_0x411860);if(_0xdbcce9[_0xb43b('0x2f')][_0xb43b('0x3d')]){_0x7ac787[_0xb43b('0x3b')]=_[_0xb43b('0x3e')](_0x7ac787[_0xb43b('0x3b')],{'$or':_[_0xb43b('0x28')](_0x411860,function(_0x1399af){if(_0x1399af[_0xb43b('0x2c')]!==_0xb43b('0x3f')){var _0x1fc938={};_0x1fc938[_0x1399af[_0xb43b('0x25')]]={'$like':'%'+_0xdbcce9['query']['filter']+'%'};return _0x1fc938;}})});}_0x7ac787=_[_0xb43b('0x3e')]({},_0x7ac787,_0xdbcce9[_0xb43b('0x40')]);var _0x4d7357={'where':_0x7ac787['where']};return db[_0xb43b('0x29')][_0xb43b('0x41')](_0x4d7357)[_0xb43b('0x22')](function(_0x250f1c){_0x588a23[_0xb43b('0x41')]=_0x250f1c;if(_0xdbcce9[_0xb43b('0x2f')][_0xb43b('0x42')]){_0x7ac787['include']=[{'all':!![]}];}return db[_0xb43b('0x29')][_0xb43b('0x43')](_0x7ac787);})[_0xb43b('0x22')](function(_0x5c8b4f){_0x588a23[_0xb43b('0x44')]=_0x5c8b4f;return _0x588a23;})['then'](respondWithFilteredResult(_0xacf50c,_0x7ac787))[_0xb43b('0x45')](handleError(_0xacf50c,null));};exports['show']=function(_0x5deed4,_0x56e4d4){var _0x228931={'raw':!![],'where':{'id':_0x5deed4[_0xb43b('0x46')]['id']}},_0x596f14={};_0x596f14[_0xb43b('0x2e')]=_[_0xb43b('0x30')](db['OpenchannelQueueReport'][_0xb43b('0x2a')]);_0x596f14[_0xb43b('0x2f')]=_['keys'](_0x5deed4[_0xb43b('0x2f')]);_0x596f14[_0xb43b('0x31')]=_['intersection'](_0x596f14[_0xb43b('0x2e')],_0x596f14['query']);_0x228931[_0xb43b('0x33')]=_['intersection'](_0x596f14[_0xb43b('0x2e')],qs[_0xb43b('0x34')](_0x5deed4[_0xb43b('0x2f')][_0xb43b('0x34')]));_0x228931[_0xb43b('0x33')]=_0x228931[_0xb43b('0x33')]['length']?_0x228931[_0xb43b('0x33')]:_0x596f14[_0xb43b('0x2e')];if(_0x5deed4[_0xb43b('0x2f')]['includeAll']){_0x228931['include']=[{'all':!![]}];}_0x228931=_[_0xb43b('0x3e')]({},_0x228931,_0x5deed4['options']);return db[_0xb43b('0x29')]['find'](_0x228931)[_0xb43b('0x22')](handleEntityNotFound(_0x56e4d4,null))[_0xb43b('0x22')](respondWithResult(_0x56e4d4,null))['catch'](handleError(_0x56e4d4,null));};exports[_0xb43b('0x47')]=function(_0x2b1c0d,_0x5b7c7f){return db[_0xb43b('0x29')]['create'](_0x2b1c0d[_0xb43b('0x48')],{})[_0xb43b('0x22')](respondWithResult(_0x5b7c7f,0xc9))[_0xb43b('0x45')](handleError(_0x5b7c7f,null));};exports[_0xb43b('0x49')]=function(_0x4e5c76,_0x20eb47){if(_0x4e5c76[_0xb43b('0x48')]['id']){delete _0x4e5c76[_0xb43b('0x48')]['id'];}return db['OpenchannelQueueReport'][_0xb43b('0x4a')]({'where':{'id':_0x4e5c76[_0xb43b('0x46')]['id']}})['then'](handleEntityNotFound(_0x20eb47,null))[_0xb43b('0x22')](saveUpdates(_0x4e5c76[_0xb43b('0x48')],null))[_0xb43b('0x22')](respondWithResult(_0x20eb47,null))[_0xb43b('0x45')](handleError(_0x20eb47,null));};exports[_0xb43b('0x21')]=function(_0x163a7e,_0x116b23){return db[_0xb43b('0x29')][_0xb43b('0x4a')]({'where':{'id':_0x163a7e[_0xb43b('0x46')]['id']}})['then'](handleEntityNotFound(_0x116b23,null))[_0xb43b('0x22')](removeEntity(_0x116b23,null))[_0xb43b('0x45')](handleError(_0x116b23,null));};exports[_0xb43b('0x4b')]=function(_0x193d3c,_0x3b5d45){return db[_0xb43b('0x29')][_0xb43b('0x4b')]()['then'](respondWithResult(_0x3b5d45,null))[_0xb43b('0x45')](handleError(_0x3b5d45,null));};
\ No newline at end of file
index d438c6d..74da0dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe14b=['bluebird','path','./openchannelQueueReport.attributes','exports','define','OpenchannelQueueReport','report_openchannel_queue','lodash','util','moment'];(function(_0x2801e0,_0x4556cb){var _0x3cd783=function(_0x27045d){while(--_0x27045d){_0x2801e0['push'](_0x2801e0['shift']());}};_0x3cd783(++_0x4556cb);}(_0xe14b,0x93));var _0xbe14=function(_0x31b10c,_0x21d9aa){_0x31b10c=_0x31b10c-0x0;var _0x38e0f8=_0xe14b[_0x31b10c];return _0x38e0f8;};'use strict';var _=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xbe14('0x2'));var BPromise=require(_0xbe14('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xbe14('0x4'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xbe14('0x5'));module[_0xbe14('0x6')]=function(_0x1fe204,_0x1ff100){return _0x1fe204[_0xbe14('0x7')](_0xbe14('0x8'),attributes,{'tableName':_0xbe14('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x7a54=['report_openchannel_queue','uniqueid','lodash','util','../../config/logger','moment','bluebird','path','rimraf','../../config/environment','./openchannelQueueReport.attributes','exports','OpenchannelQueueReport'];(function(_0x3ca526,_0x2b88b5){var _0x5a9859=function(_0x209757){while(--_0x209757){_0x3ca526['push'](_0x3ca526['shift']());}};_0x5a9859(++_0x2b88b5);}(_0x7a54,0x106));var _0x47a5=function(_0x311c93,_0x289525){_0x311c93=_0x311c93-0x0;var _0x14707a=_0x7a54[_0x311c93];return _0x14707a;};'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':'uniqueid','fields':[_0x47a5('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index aeb56c8..69e397d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cb4=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','info','request\x20sent','debug','stringify','error','OpenchannelQueueReport,\x20%s,\x20%s','message','result','catch','OpenchannelQueueReport','create','body','options','raw','then','CreateOpenchannelQueueReport','UpdateOpenchannelQueueReport','update','attributes','limit','lodash'];(function(_0x3b444a,_0x13dcb5){var _0x2d4fbf=function(_0x607f58){while(--_0x607f58){_0x3b444a['push'](_0x3b444a['shift']());}};_0x2d4fbf(++_0x13dcb5);}(_0x6cb4,0xff));var _0x46cb=function(_0x3240ff,_0x4a76b5){_0x3240ff=_0x3240ff-0x0;var _0x399a57=_0x6cb4[_0x3240ff];return _0x399a57;};'use strict';var _=require(_0x46cb('0x0'));var util=require(_0x46cb('0x1'));var moment=require(_0x46cb('0x2'));var BPromise=require(_0x46cb('0x3'));var rs=require(_0x46cb('0x4'));var fs=require('fs');var Redis=require(_0x46cb('0x5'));var db=require(_0x46cb('0x6'))['db'];var utils=require(_0x46cb('0x7'));var logger=require(_0x46cb('0x8'))('rpc');var config=require(_0x46cb('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x46cb('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x11262d,_0x148d0f,_0x31b35b){return new BPromise(function(_0x2d6c29,_0x24b4f5){return client[_0x46cb('0xb')](_0x11262d,_0x31b35b)['then'](function(_0x3d7663){logger[_0x46cb('0xc')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x148d0f,_0x46cb('0xd'));logger[_0x46cb('0xe')]('OpenchannelQueueReport,\x20%s,\x20%s,\x20%s',_0x148d0f,_0x46cb('0xd'),JSON[_0x46cb('0xf')](_0x3d7663));if(_0x3d7663['error']){if(_0x3d7663['error']['code']===0x1f4){logger[_0x46cb('0x10')](_0x46cb('0x11'),_0x148d0f,_0x3d7663[_0x46cb('0x10')][_0x46cb('0x12')]);return _0x24b4f5(_0x3d7663['error'][_0x46cb('0x12')]);}logger[_0x46cb('0x10')](_0x46cb('0x11'),_0x148d0f,_0x3d7663[_0x46cb('0x10')][_0x46cb('0x12')]);return _0x2d6c29(_0x3d7663[_0x46cb('0x10')][_0x46cb('0x12')]);}else{logger[_0x46cb('0xc')](_0x46cb('0x11'),_0x148d0f,_0x46cb('0xd'));_0x2d6c29(_0x3d7663[_0x46cb('0x13')]['message']);}})[_0x46cb('0x14')](function(_0x5796d2){logger[_0x46cb('0x10')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x148d0f,_0x5796d2);_0x24b4f5(_0x5796d2);});});}exports['CreateOpenchannelQueueReport']=function(_0x4e3454){var _0x1b6646=this;return new Promise(function(_0x1f2891,_0x4df1f0){return db[_0x46cb('0x15')][_0x46cb('0x16')](_0x4e3454[_0x46cb('0x17')],{'raw':_0x4e3454[_0x46cb('0x18')]?_0x4e3454[_0x46cb('0x18')][_0x46cb('0x19')]===undefined?!![]:![]:!![]})[_0x46cb('0x1a')](function(_0x149483){logger[_0x46cb('0xc')](_0x46cb('0x1b'),_0x4e3454);logger[_0x46cb('0xe')](_0x46cb('0x1b'),_0x4e3454,JSON[_0x46cb('0xf')](_0x149483));_0x1f2891(_0x149483);})[_0x46cb('0x14')](function(_0x1fb467){logger[_0x46cb('0x10')](_0x46cb('0x1b'),_0x1fb467[_0x46cb('0x12')],_0x4e3454);_0x4df1f0(_0x1b6646[_0x46cb('0x10')](0x1f4,_0x1fb467[_0x46cb('0x12')]));});});};exports[_0x46cb('0x1c')]=function(_0x40e0e5){var _0x5a1338=this;return new Promise(function(_0x4d663e,_0x6588f3){return db[_0x46cb('0x15')][_0x46cb('0x1d')](_0x40e0e5[_0x46cb('0x17')],{'raw':_0x40e0e5[_0x46cb('0x18')]?_0x40e0e5['options'][_0x46cb('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x40e0e5['options']?_0x40e0e5['options']['where']||null:null,'attributes':_0x40e0e5[_0x46cb('0x18')]?_0x40e0e5[_0x46cb('0x18')][_0x46cb('0x1e')]||null:null,'limit':_0x40e0e5[_0x46cb('0x18')]?_0x40e0e5[_0x46cb('0x18')][_0x46cb('0x1f')]||null:null})[_0x46cb('0x1a')](function(_0x8c65b2){logger[_0x46cb('0xc')](_0x46cb('0x1c'),_0x40e0e5);logger[_0x46cb('0xe')]('UpdateOpenchannelQueueReport',_0x40e0e5,JSON[_0x46cb('0xf')](_0x8c65b2));_0x4d663e(_0x8c65b2);})[_0x46cb('0x14')](function(_0x4c73bd){logger['error'](_0x46cb('0x1c'),_0x4c73bd['message'],_0x40e0e5);_0x6588f3(_0x5a1338[_0x46cb('0x10')](0x1f4,_0x4c73bd[_0x46cb('0x12')]));});});};
\ No newline at end of file
+var _0x5423=['request','info','request\x20sent','debug','stringify','error','code','OpenchannelQueueReport,\x20%s,\x20%s','message','result','catch','CreateOpenchannelQueueReport','OpenchannelQueueReport','create','options','raw','then','update','body','where','attributes','limit','UpdateOpenchannelQueueReport','lodash','util','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http'];(function(_0x1d9e40,_0x1c44db){var _0x2ee94f=function(_0x37a330){while(--_0x37a330){_0x1d9e40['push'](_0x1d9e40['shift']());}};_0x2ee94f(++_0x1c44db);}(_0x5423,0xe3));var _0x3542=function(_0x578007,_0x2541aa){_0x578007=_0x578007-0x0;var _0x107f05=_0x5423[_0x578007];return _0x107f05;};'use strict';var _=require(_0x3542('0x0'));var util=require(_0x3542('0x1'));var moment=require('moment');var BPromise=require(_0x3542('0x2'));var rs=require(_0x3542('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3542('0x4'))['db'];var utils=require(_0x3542('0x5'));var logger=require(_0x3542('0x6'))(_0x3542('0x7'));var config=require('../../config/environment');var jayson=require(_0x3542('0x8'));var client=jayson[_0x3542('0x9')][_0x3542('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x29c3fa,_0x2e1a62,_0x55413c){return new BPromise(function(_0x4cdc86,_0xbc51ab){return client[_0x3542('0xb')](_0x29c3fa,_0x55413c)['then'](function(_0x681195){logger[_0x3542('0xc')]('OpenchannelQueueReport,\x20%s,\x20%s',_0x2e1a62,_0x3542('0xd'));logger[_0x3542('0xe')]('OpenchannelQueueReport,\x20%s,\x20%s,\x20%s',_0x2e1a62,_0x3542('0xd'),JSON[_0x3542('0xf')](_0x681195));if(_0x681195[_0x3542('0x10')]){if(_0x681195[_0x3542('0x10')][_0x3542('0x11')]===0x1f4){logger[_0x3542('0x10')](_0x3542('0x12'),_0x2e1a62,_0x681195[_0x3542('0x10')][_0x3542('0x13')]);return _0xbc51ab(_0x681195[_0x3542('0x10')][_0x3542('0x13')]);}logger[_0x3542('0x10')](_0x3542('0x12'),_0x2e1a62,_0x681195['error'][_0x3542('0x13')]);return _0x4cdc86(_0x681195['error'][_0x3542('0x13')]);}else{logger[_0x3542('0xc')](_0x3542('0x12'),_0x2e1a62,'request\x20sent');_0x4cdc86(_0x681195[_0x3542('0x14')][_0x3542('0x13')]);}})[_0x3542('0x15')](function(_0x5726af){logger[_0x3542('0x10')](_0x3542('0x12'),_0x2e1a62,_0x5726af);_0xbc51ab(_0x5726af);});});}exports[_0x3542('0x16')]=function(_0x3d5199){var _0x493d95=this;return new Promise(function(_0x32df3f,_0x53d4aa){return db[_0x3542('0x17')][_0x3542('0x18')](_0x3d5199['body'],{'raw':_0x3d5199[_0x3542('0x19')]?_0x3d5199[_0x3542('0x19')][_0x3542('0x1a')]===undefined?!![]:![]:!![]})[_0x3542('0x1b')](function(_0x212950){logger['info']('CreateOpenchannelQueueReport',_0x3d5199);logger['debug'](_0x3542('0x16'),_0x3d5199,JSON['stringify'](_0x212950));_0x32df3f(_0x212950);})[_0x3542('0x15')](function(_0x551645){logger[_0x3542('0x10')]('CreateOpenchannelQueueReport',_0x551645['message'],_0x3d5199);_0x53d4aa(_0x493d95[_0x3542('0x10')](0x1f4,_0x551645[_0x3542('0x13')]));});});};exports['UpdateOpenchannelQueueReport']=function(_0x5d05b2){var _0x3fc964=this;return new Promise(function(_0x5123f0,_0x160caa){return db[_0x3542('0x17')][_0x3542('0x1c')](_0x5d05b2[_0x3542('0x1d')],{'raw':_0x5d05b2[_0x3542('0x19')]?_0x5d05b2[_0x3542('0x19')][_0x3542('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5d05b2[_0x3542('0x19')]?_0x5d05b2[_0x3542('0x19')][_0x3542('0x1e')]||null:null,'attributes':_0x5d05b2[_0x3542('0x19')]?_0x5d05b2[_0x3542('0x19')][_0x3542('0x1f')]||null:null,'limit':_0x5d05b2[_0x3542('0x19')]?_0x5d05b2[_0x3542('0x19')][_0x3542('0x20')]||null:null})[_0x3542('0x1b')](function(_0x20eda1){logger[_0x3542('0xc')]('UpdateOpenchannelQueueReport',_0x5d05b2);logger[_0x3542('0xe')](_0x3542('0x21'),_0x5d05b2,JSON[_0x3542('0xf')](_0x20eda1));_0x5123f0(_0x20eda1);})['catch'](function(_0x402c97){logger[_0x3542('0x10')](_0x3542('0x21'),_0x402c97[_0x3542('0x13')],_0x5d05b2);_0x160caa(_0x3fc964['error'](0x1f4,_0x402c97['message']));});});};
\ No newline at end of file
index 8183261..c284d60 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf24f=['create','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./openchannelTransferReport.controller','index','get','/describe','isAuthenticated','describe','/:id','show','post'];(function(_0x3bc6c0,_0x1b4024){var _0x5fdb28=function(_0x5219e6){while(--_0x5219e6){_0x3bc6c0['push'](_0x3bc6c0['shift']());}};_0x5fdb28(++_0x1b4024);}(_0xf24f,0x122));var _0xff24=function(_0x37a9d7,_0x2b6fde){_0x37a9d7=_0x37a9d7-0x0;var _0x1343d3=_0xf24f[_0x37a9d7];return _0x1343d3;};'use strict';var multer=require(_0xff24('0x0'));var util=require(_0xff24('0x1'));var path=require(_0xff24('0x2'));var timeout=require(_0xff24('0x3'));var express=require('express');var router=express[_0xff24('0x4')]();var fs_extra=require(_0xff24('0x5'));var auth=require(_0xff24('0x6'));var interaction=require(_0xff24('0x7'));var config=require(_0xff24('0x8'));var controller=require(_0xff24('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xff24('0xa')]);router[_0xff24('0xb')](_0xff24('0xc'),auth[_0xff24('0xd')](),controller[_0xff24('0xe')]);router['get'](_0xff24('0xf'),auth['isAuthenticated'](),controller[_0xff24('0x10')]);router[_0xff24('0x11')]('/',auth[_0xff24('0xd')](),controller[_0xff24('0x12')]);router['put'](_0xff24('0xf'),auth[_0xff24('0xd')](),controller[_0xff24('0x13')]);router[_0xff24('0x14')](_0xff24('0xf'),auth['isAuthenticated'](),controller['destroy']);module[_0xff24('0x15')]=router;
\ No newline at end of file
+var _0x7439=['Router','fs-extra','../../components/auth/service','../../config/environment','./openchannelTransferReport.controller','isAuthenticated','index','get','/describe','describe','/:id','post','put','update','destroy','exports','multer','util','express'];(function(_0x5959c9,_0x2ed153){var _0x4ffcbc=function(_0x459b7a){while(--_0x459b7a){_0x5959c9['push'](_0x5959c9['shift']());}};_0x4ffcbc(++_0x2ed153);}(_0x7439,0x166));var _0x9743=function(_0x4dc8b9,_0x16548d){_0x4dc8b9=_0x4dc8b9-0x0;var _0x1912ed=_0x7439[_0x4dc8b9];return _0x1912ed;};'use strict';var multer=require(_0x9743('0x0'));var util=require(_0x9743('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x9743('0x2'));var router=express[_0x9743('0x3')]();var fs_extra=require(_0x9743('0x4'));var auth=require(_0x9743('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x9743('0x6'));var controller=require(_0x9743('0x7'));router['get']('/',auth[_0x9743('0x8')](),controller[_0x9743('0x9')]);router[_0x9743('0xa')](_0x9743('0xb'),auth[_0x9743('0x8')](),controller[_0x9743('0xc')]);router[_0x9743('0xa')](_0x9743('0xd'),auth[_0x9743('0x8')](),controller['show']);router[_0x9743('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x9743('0xf')](_0x9743('0xd'),auth[_0x9743('0x8')](),controller[_0x9743('0x10')]);router['delete'](_0x9743('0xd'),auth[_0x9743('0x8')](),controller[_0x9743('0x11')]);module[_0x9743('0x12')]=router;
\ No newline at end of file
index ed20452..6057da3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x3ed054,_0x4d4f16){var _0x16dd95=function(_0xc0c19c){while(--_0xc0c19c){_0x3ed054['push'](_0x3ed054['shift']());}};_0x16dd95(++_0x4d4f16);}(_0x9bde,0xe1));var _0xe9bd=function(_0x1031e0,_0x22eb4d){_0x1031e0=_0x1031e0-0x0;var _0x32b16e=_0x9bde[_0x1031e0];return _0x32b16e;};'use strict';var moment=require('moment');var Sequelize=require(_0xe9bd('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xe9bd('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe9bd('0x2'),_0xe9bd('0x3'),_0xe9bd('0x4')),'allowNull':![],'defaultValue':_0xe9bd('0x4')},'transferredAt':{'type':Sequelize[_0xe9bd('0x5')],'allowNull':![],'defaultValue':Sequelize[_0xe9bd('0x6')]}};
\ No newline at end of file
+var _0xf4eb=['NOW','moment','account','queue','DATE'];(function(_0x2a0d7b,_0x58be6d){var _0x31bfb1=function(_0x4efc46){while(--_0x4efc46){_0x2a0d7b['push'](_0x2a0d7b['shift']());}};_0x31bfb1(++_0x58be6d);}(_0xf4eb,0xec));var _0xbf4e=function(_0x57de8a,_0x1db723){_0x57de8a=_0x57de8a-0x0;var _0x273811=_0xf4eb[_0x57de8a];return _0x273811;};'use strict';var moment=require(_0xbf4e('0x0'));var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xbf4e('0x1'),'agent','queue'),'allowNull':![],'defaultValue':_0xbf4e('0x2')},'transferredAt':{'type':Sequelize[_0xbf4e('0x3')],'allowNull':![],'defaultValue':Sequelize[_0xbf4e('0x4')]}};
\ No newline at end of file
index 2164906..e807362 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9850=['pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','catch','rawAttributes','options','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','fs-extra','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','reject','save','update','then','error','stack','name','send','index','map','OpenchannelTransferReport','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where'];(function(_0x4339b8,_0x4db8f8){var _0x572b3e=function(_0x443063){while(--_0x443063){_0x4339b8['push'](_0x4339b8['shift']());}};_0x572b3e(++_0x4db8f8);}(_0x9850,0x188));var _0x0985=function(_0x17a384,_0x42125b){_0x17a384=_0x17a384-0x0;var _0x933be3=_0x9850[_0x17a384];return _0x933be3;};'use strict';var emlformat=require(_0x0985('0x0'));var rimraf=require(_0x0985('0x1'));var zipdir=require(_0x0985('0x2'));var jsonpatch=require(_0x0985('0x3'));var rp=require(_0x0985('0x4'));var moment=require('moment');var BPromise=require(_0x0985('0x5'));var Mustache=require(_0x0985('0x6'));var util=require('util');var path=require(_0x0985('0x7'));var sox=require('sox');var csv=require(_0x0985('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x0985('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x0985('0xa'));var jsforce=require(_0x0985('0xb'));var deskjs=require(_0x0985('0xc'));var toCsv=require(_0x0985('0x8'));var querystring=require(_0x0985('0xd'));var Papa=require(_0x0985('0xe'));var Redis=require(_0x0985('0xf'));var authService=require(_0x0985('0x10'));var qs=require(_0x0985('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x0985('0x12'));var logger=require(_0x0985('0x13'))(_0x0985('0x14'));var utils=require(_0x0985('0x15'));var config=require(_0x0985('0x16'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x53fbd1,_0x128422){_0x128422=_0x128422||0xcc;return function(_0x468498){if(_0x468498){return _0x53fbd1[_0x0985('0x17')](_0x128422);}return _0x53fbd1[_0x0985('0x18')](_0x128422)[_0x0985('0x19')]();};}function respondWithResult(_0x5603e7,_0x1fc1f5){_0x1fc1f5=_0x1fc1f5||0xc8;return function(_0x31b339){if(_0x31b339){return _0x5603e7[_0x0985('0x18')](_0x1fc1f5)['json'](_0x31b339);}};}function respondWithFilteredResult(_0x40934b,_0x492c54){return function(_0x49a099){if(_0x49a099){var _0x3d2534=typeof _0x492c54['offset']===_0x0985('0x1a')&&typeof _0x492c54[_0x0985('0x1b')]===_0x0985('0x1a');var _0x54f495=_0x49a099[_0x0985('0x1c')];var _0x397d2f=_0x3d2534?0x0:_0x492c54[_0x0985('0x1d')];var _0x390469=_0x3d2534?_0x49a099[_0x0985('0x1c')]:_0x492c54[_0x0985('0x1d')]+_0x492c54[_0x0985('0x1b')];var _0x55710a;if(_0x390469>=_0x54f495){_0x390469=_0x54f495;_0x55710a=0xc8;}else{_0x55710a=0xce;}_0x40934b['status'](_0x55710a);return _0x40934b[_0x0985('0x1e')](_0x0985('0x1f'),_0x397d2f+'-'+_0x390469+'/'+_0x54f495)[_0x0985('0x20')](_0x49a099);}return null;};}function patchUpdates(_0x3bed2e){return function(_0x45cf29){try{jsonpatch['apply'](_0x45cf29,_0x3bed2e,!![]);}catch(_0x4f3ed5){return BPromise[_0x0985('0x21')](_0x4f3ed5);}return _0x45cf29[_0x0985('0x22')]();};}function saveUpdates(_0x280bf5,_0x1c3e88){return function(_0x2fbcd2){if(_0x2fbcd2){return _0x2fbcd2[_0x0985('0x23')](_0x280bf5)[_0x0985('0x24')](function(_0x4580e6){return _0x4580e6;});}return null;};}function removeEntity(_0xdc3ac,_0x5d3e5d){return function(_0x36e55e){if(_0x36e55e){return _0x36e55e['destroy']()[_0x0985('0x24')](function(){_0xdc3ac[_0x0985('0x18')](0xcc)[_0x0985('0x19')]();});}};}function handleEntityNotFound(_0x54a444,_0x5fba53){return function(_0x49fffb){if(!_0x49fffb){_0x54a444[_0x0985('0x17')](0x194);}return _0x49fffb;};}function handleError(_0x53c824,_0xf100bf){_0xf100bf=_0xf100bf||0x1f4;return function(_0x2dac92){logger[_0x0985('0x25')](_0x2dac92[_0x0985('0x26')]);if(_0x2dac92[_0x0985('0x27')]){delete _0x2dac92[_0x0985('0x27')];}_0x53c824['status'](_0xf100bf)[_0x0985('0x28')](_0x2dac92);};}exports[_0x0985('0x29')]=function(_0x4438d8,_0xa99a87){var _0x496136={},_0x10c632={},_0x595bf7={'count':0x0,'rows':[]};var _0x2cf607=_[_0x0985('0x2a')](db[_0x0985('0x2b')]['rawAttributes'],function(_0x5d5387){return{'name':_0x5d5387[_0x0985('0x2c')],'type':_0x5d5387['type'][_0x0985('0x2d')]};});_0x10c632[_0x0985('0x2e')]=_[_0x0985('0x2a')](_0x2cf607,_0x0985('0x27'));_0x10c632[_0x0985('0x2f')]=_[_0x0985('0x30')](_0x4438d8[_0x0985('0x2f')]);_0x10c632[_0x0985('0x31')]=_[_0x0985('0x32')](_0x10c632[_0x0985('0x2e')],_0x10c632[_0x0985('0x2f')]);_0x496136[_0x0985('0x33')]=_[_0x0985('0x32')](_0x10c632[_0x0985('0x2e')],qs[_0x0985('0x34')](_0x4438d8[_0x0985('0x2f')]['fields']));_0x496136[_0x0985('0x33')]=_0x496136['attributes'][_0x0985('0x35')]?_0x496136['attributes']:_0x10c632[_0x0985('0x2e')];if(!_0x4438d8[_0x0985('0x2f')]['hasOwnProperty'](_0x0985('0x36'))){_0x496136['limit']=qs['limit'](_0x4438d8[_0x0985('0x2f')][_0x0985('0x1b')]);_0x496136[_0x0985('0x1d')]=qs[_0x0985('0x1d')](_0x4438d8['query'][_0x0985('0x1d')]);}_0x496136[_0x0985('0x37')]=qs['sort'](_0x4438d8['query'][_0x0985('0x38')]);_0x496136[_0x0985('0x39')]=qs[_0x0985('0x31')](_[_0x0985('0x3a')](_0x4438d8[_0x0985('0x2f')],_0x10c632['filters']),_0x2cf607);if(_0x4438d8[_0x0985('0x2f')][_0x0985('0x3b')]){_0x496136['where']=_[_0x0985('0x3c')](_0x496136[_0x0985('0x39')],{'$or':_[_0x0985('0x2a')](_0x2cf607,function(_0x3fae66){if(_0x3fae66[_0x0985('0x3d')]!==_0x0985('0x3e')){var _0x2fa914={};_0x2fa914[_0x3fae66[_0x0985('0x27')]]={'$like':'%'+_0x4438d8['query'][_0x0985('0x3b')]+'%'};return _0x2fa914;}})});}_0x496136=_[_0x0985('0x3c')]({},_0x496136,_0x4438d8['options']);var _0x1fa685={'where':_0x496136[_0x0985('0x39')]};return db[_0x0985('0x2b')][_0x0985('0x1c')](_0x1fa685)[_0x0985('0x24')](function(_0xc8d5){_0x595bf7['count']=_0xc8d5;if(_0x4438d8[_0x0985('0x2f')][_0x0985('0x3f')]){_0x496136[_0x0985('0x40')]=[{'all':!![]}];}return db[_0x0985('0x2b')][_0x0985('0x41')](_0x496136);})[_0x0985('0x24')](function(_0x31e3c8){_0x595bf7[_0x0985('0x42')]=_0x31e3c8;return _0x595bf7;})[_0x0985('0x24')](respondWithFilteredResult(_0xa99a87,_0x496136))[_0x0985('0x43')](handleError(_0xa99a87,null));};exports['show']=function(_0x1d9e78,_0x354d5d){var _0x2f6b99={'raw':!![],'where':{'id':_0x1d9e78['params']['id']}},_0x532a6b={};_0x532a6b[_0x0985('0x2e')]=_[_0x0985('0x30')](db[_0x0985('0x2b')][_0x0985('0x44')]);_0x532a6b[_0x0985('0x2f')]=_[_0x0985('0x30')](_0x1d9e78[_0x0985('0x2f')]);_0x532a6b[_0x0985('0x31')]=_[_0x0985('0x32')](_0x532a6b[_0x0985('0x2e')],_0x532a6b[_0x0985('0x2f')]);_0x2f6b99['attributes']=_['intersection'](_0x532a6b[_0x0985('0x2e')],qs['fields'](_0x1d9e78['query'][_0x0985('0x34')]));_0x2f6b99[_0x0985('0x33')]=_0x2f6b99[_0x0985('0x33')]['length']?_0x2f6b99[_0x0985('0x33')]:_0x532a6b[_0x0985('0x2e')];if(_0x1d9e78[_0x0985('0x2f')][_0x0985('0x3f')]){_0x2f6b99[_0x0985('0x40')]=[{'all':!![]}];}_0x2f6b99=_[_0x0985('0x3c')]({},_0x2f6b99,_0x1d9e78[_0x0985('0x45')]);return db[_0x0985('0x2b')][_0x0985('0x46')](_0x2f6b99)[_0x0985('0x24')](handleEntityNotFound(_0x354d5d,null))['then'](respondWithResult(_0x354d5d,null))['catch'](handleError(_0x354d5d,null));};exports[_0x0985('0x47')]=function(_0x1a8d52,_0x308a66){return db[_0x0985('0x2b')][_0x0985('0x47')](_0x1a8d52[_0x0985('0x48')],{})[_0x0985('0x24')](respondWithResult(_0x308a66,0xc9))[_0x0985('0x43')](handleError(_0x308a66,null));};exports[_0x0985('0x23')]=function(_0x408d7a,_0x478fa5){if(_0x408d7a[_0x0985('0x48')]['id']){delete _0x408d7a[_0x0985('0x48')]['id'];}return db[_0x0985('0x2b')][_0x0985('0x46')]({'where':{'id':_0x408d7a[_0x0985('0x49')]['id']}})[_0x0985('0x24')](handleEntityNotFound(_0x478fa5,null))[_0x0985('0x24')](saveUpdates(_0x408d7a[_0x0985('0x48')],null))['then'](respondWithResult(_0x478fa5,null))[_0x0985('0x43')](handleError(_0x478fa5,null));};exports['destroy']=function(_0x433e94,_0x516837){return db[_0x0985('0x2b')]['find']({'where':{'id':_0x433e94[_0x0985('0x49')]['id']}})[_0x0985('0x24')](handleEntityNotFound(_0x516837,null))[_0x0985('0x24')](removeEntity(_0x516837,null))[_0x0985('0x43')](handleError(_0x516837,null));};exports[_0x0985('0x4a')]=function(_0x56e700,_0x39090e){return db[_0x0985('0x2b')]['describe']()[_0x0985('0x24')](respondWithResult(_0x39090e,null))[_0x0985('0x43')](handleError(_0x39090e,null));};
\ No newline at end of file
+var _0x91ec=['filters','intersection','model','attributes','fields','order','sort','where','pick','filter','merge','includeAll','rows','catch','show','params','OpenchannelTransferReport','length','include','options','find','create','body','describe','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','../../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','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','index','rawAttributes','fieldName','type','key','map','query','keys'];(function(_0x2b9e80,_0x11efb0){var _0x1a1b78=function(_0x4798e4){while(--_0x4798e4){_0x2b9e80['push'](_0x2b9e80['shift']());}};_0x1a1b78(++_0x11efb0);}(_0x91ec,0xff));var _0xc91e=function(_0x4279f3,_0x1ce321){_0x4279f3=_0x4279f3-0x0;var _0x189609=_0x91ec[_0x4279f3];return _0x189609;};'use strict';var emlformat=require(_0xc91e('0x0'));var rimraf=require(_0xc91e('0x1'));var zipdir=require(_0xc91e('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc91e('0x3'));var BPromise=require(_0xc91e('0x4'));var Mustache=require(_0xc91e('0x5'));var util=require(_0xc91e('0x6'));var path=require(_0xc91e('0x7'));var sox=require(_0xc91e('0x8'));var csv=require(_0xc91e('0x9'));var ejs=require(_0xc91e('0xa'));var fs=require('fs');var fs_extra=require(_0xc91e('0xb'));var _=require('lodash');var squel=require(_0xc91e('0xc'));var crypto=require(_0xc91e('0xd'));var jsforce=require(_0xc91e('0xe'));var deskjs=require(_0xc91e('0xf'));var toCsv=require(_0xc91e('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0xc91e('0x10'));var qs=require(_0xc91e('0x11'));var as=require(_0xc91e('0x12'));var hardwareService=require(_0xc91e('0x13'));var logger=require(_0xc91e('0x14'))(_0xc91e('0x15'));var utils=require(_0xc91e('0x16'));var config=require(_0xc91e('0x17'));var licenseUtil=require(_0xc91e('0x18'));var db=require(_0xc91e('0x19'))['db'];function respondWithStatusCode(_0x52dd62,_0x352087){_0x352087=_0x352087||0xcc;return function(_0x6a3d2e){if(_0x6a3d2e){return _0x52dd62[_0xc91e('0x1a')](_0x352087);}return _0x52dd62[_0xc91e('0x1b')](_0x352087)[_0xc91e('0x1c')]();};}function respondWithResult(_0x5ba079,_0x482da9){_0x482da9=_0x482da9||0xc8;return function(_0x11a05b){if(_0x11a05b){return _0x5ba079[_0xc91e('0x1b')](_0x482da9)[_0xc91e('0x1d')](_0x11a05b);}};}function respondWithFilteredResult(_0x541731,_0x205963){return function(_0xf1af77){if(_0xf1af77){var _0x539b9f=typeof _0x205963[_0xc91e('0x1e')]==='undefined'&&typeof _0x205963[_0xc91e('0x1f')]===_0xc91e('0x20');var _0x1ea9b2=_0xf1af77[_0xc91e('0x21')];var _0x1dd789=_0x539b9f?0x0:_0x205963[_0xc91e('0x1e')];var _0x38e264=_0x539b9f?_0xf1af77[_0xc91e('0x21')]:_0x205963[_0xc91e('0x1e')]+_0x205963[_0xc91e('0x1f')];var _0x4a6749;if(_0x38e264>=_0x1ea9b2){_0x38e264=_0x1ea9b2;_0x4a6749=0xc8;}else{_0x4a6749=0xce;}_0x541731[_0xc91e('0x1b')](_0x4a6749);return _0x541731['set'](_0xc91e('0x22'),_0x1dd789+'-'+_0x38e264+'/'+_0x1ea9b2)[_0xc91e('0x1d')](_0xf1af77);}return null;};}function patchUpdates(_0x1a8273){return function(_0x1a2a9e){try{jsonpatch[_0xc91e('0x23')](_0x1a2a9e,_0x1a8273,!![]);}catch(_0x3e3b47){return BPromise[_0xc91e('0x24')](_0x3e3b47);}return _0x1a2a9e[_0xc91e('0x25')]();};}function saveUpdates(_0x429372,_0x3df2c3){return function(_0x2845fb){if(_0x2845fb){return _0x2845fb[_0xc91e('0x26')](_0x429372)[_0xc91e('0x27')](function(_0x5d2b41){return _0x5d2b41;});}return null;};}function removeEntity(_0x196377,_0x238180){return function(_0x2a89ee){if(_0x2a89ee){return _0x2a89ee[_0xc91e('0x28')]()[_0xc91e('0x27')](function(){_0x196377[_0xc91e('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x42ede4,_0x43e46e){return function(_0x32a97c){if(!_0x32a97c){_0x42ede4[_0xc91e('0x1a')](0x194);}return _0x32a97c;};}function handleError(_0x45f967,_0x2fc422){_0x2fc422=_0x2fc422||0x1f4;return function(_0x325669){logger[_0xc91e('0x29')](_0x325669[_0xc91e('0x2a')]);if(_0x325669[_0xc91e('0x2b')]){delete _0x325669[_0xc91e('0x2b')];}_0x45f967[_0xc91e('0x1b')](_0x2fc422)[_0xc91e('0x2c')](_0x325669);};}exports[_0xc91e('0x2d')]=function(_0x393f8a,_0x513661){var _0x4b55b6={},_0x225a96={},_0x19ad5c={'count':0x0,'rows':[]};var _0x3369ad=_['map'](db['OpenchannelTransferReport'][_0xc91e('0x2e')],function(_0xf2db7c){return{'name':_0xf2db7c[_0xc91e('0x2f')],'type':_0xf2db7c[_0xc91e('0x30')][_0xc91e('0x31')]};});_0x225a96['model']=_[_0xc91e('0x32')](_0x3369ad,'name');_0x225a96[_0xc91e('0x33')]=_[_0xc91e('0x34')](_0x393f8a[_0xc91e('0x33')]);_0x225a96[_0xc91e('0x35')]=_[_0xc91e('0x36')](_0x225a96[_0xc91e('0x37')],_0x225a96['query']);_0x4b55b6[_0xc91e('0x38')]=_[_0xc91e('0x36')](_0x225a96[_0xc91e('0x37')],qs[_0xc91e('0x39')](_0x393f8a[_0xc91e('0x33')][_0xc91e('0x39')]));_0x4b55b6['attributes']=_0x4b55b6[_0xc91e('0x38')]['length']?_0x4b55b6['attributes']:_0x225a96[_0xc91e('0x37')];if(!_0x393f8a['query']['hasOwnProperty']('nolimit')){_0x4b55b6[_0xc91e('0x1f')]=qs[_0xc91e('0x1f')](_0x393f8a[_0xc91e('0x33')]['limit']);_0x4b55b6[_0xc91e('0x1e')]=qs[_0xc91e('0x1e')](_0x393f8a[_0xc91e('0x33')]['offset']);}_0x4b55b6[_0xc91e('0x3a')]=qs[_0xc91e('0x3b')](_0x393f8a['query'][_0xc91e('0x3b')]);_0x4b55b6[_0xc91e('0x3c')]=qs['filters'](_[_0xc91e('0x3d')](_0x393f8a[_0xc91e('0x33')],_0x225a96[_0xc91e('0x35')]),_0x3369ad);if(_0x393f8a[_0xc91e('0x33')][_0xc91e('0x3e')]){_0x4b55b6[_0xc91e('0x3c')]=_[_0xc91e('0x3f')](_0x4b55b6['where'],{'$or':_[_0xc91e('0x32')](_0x3369ad,function(_0x3fe16f){if(_0x3fe16f['type']!=='VIRTUAL'){var _0x4c3b35={};_0x4c3b35[_0x3fe16f['name']]={'$like':'%'+_0x393f8a['query'][_0xc91e('0x3e')]+'%'};return _0x4c3b35;}})});}_0x4b55b6=_[_0xc91e('0x3f')]({},_0x4b55b6,_0x393f8a['options']);var _0x27db22={'where':_0x4b55b6[_0xc91e('0x3c')]};return db['OpenchannelTransferReport'][_0xc91e('0x21')](_0x27db22)[_0xc91e('0x27')](function(_0x15bbdd){_0x19ad5c[_0xc91e('0x21')]=_0x15bbdd;if(_0x393f8a[_0xc91e('0x33')][_0xc91e('0x40')]){_0x4b55b6['include']=[{'all':!![]}];}return db['OpenchannelTransferReport']['findAll'](_0x4b55b6);})[_0xc91e('0x27')](function(_0x21eb5d){_0x19ad5c[_0xc91e('0x41')]=_0x21eb5d;return _0x19ad5c;})[_0xc91e('0x27')](respondWithFilteredResult(_0x513661,_0x4b55b6))[_0xc91e('0x42')](handleError(_0x513661,null));};exports[_0xc91e('0x43')]=function(_0x17d520,_0x314e1d){var _0x31339c={'raw':!![],'where':{'id':_0x17d520[_0xc91e('0x44')]['id']}},_0x10812e={};_0x10812e[_0xc91e('0x37')]=_[_0xc91e('0x34')](db[_0xc91e('0x45')]['rawAttributes']);_0x10812e[_0xc91e('0x33')]=_[_0xc91e('0x34')](_0x17d520[_0xc91e('0x33')]);_0x10812e[_0xc91e('0x35')]=_[_0xc91e('0x36')](_0x10812e[_0xc91e('0x37')],_0x10812e[_0xc91e('0x33')]);_0x31339c['attributes']=_['intersection'](_0x10812e[_0xc91e('0x37')],qs[_0xc91e('0x39')](_0x17d520[_0xc91e('0x33')][_0xc91e('0x39')]));_0x31339c[_0xc91e('0x38')]=_0x31339c[_0xc91e('0x38')][_0xc91e('0x46')]?_0x31339c[_0xc91e('0x38')]:_0x10812e[_0xc91e('0x37')];if(_0x17d520[_0xc91e('0x33')]['includeAll']){_0x31339c[_0xc91e('0x47')]=[{'all':!![]}];}_0x31339c=_[_0xc91e('0x3f')]({},_0x31339c,_0x17d520[_0xc91e('0x48')]);return db[_0xc91e('0x45')][_0xc91e('0x49')](_0x31339c)['then'](handleEntityNotFound(_0x314e1d,null))[_0xc91e('0x27')](respondWithResult(_0x314e1d,null))[_0xc91e('0x42')](handleError(_0x314e1d,null));};exports[_0xc91e('0x4a')]=function(_0x209d74,_0xc54dd8){return db['OpenchannelTransferReport'][_0xc91e('0x4a')](_0x209d74[_0xc91e('0x4b')],{})[_0xc91e('0x27')](respondWithResult(_0xc54dd8,0xc9))[_0xc91e('0x42')](handleError(_0xc54dd8,null));};exports['update']=function(_0x114941,_0x61f87b){if(_0x114941[_0xc91e('0x4b')]['id']){delete _0x114941['body']['id'];}return db['OpenchannelTransferReport']['find']({'where':{'id':_0x114941['params']['id']}})['then'](handleEntityNotFound(_0x61f87b,null))[_0xc91e('0x27')](saveUpdates(_0x114941['body'],null))[_0xc91e('0x27')](respondWithResult(_0x61f87b,null))[_0xc91e('0x42')](handleError(_0x61f87b,null));};exports[_0xc91e('0x28')]=function(_0x9b0a24,_0x2260fe){return db[_0xc91e('0x45')]['find']({'where':{'id':_0x9b0a24[_0xc91e('0x44')]['id']}})[_0xc91e('0x27')](handleEntityNotFound(_0x2260fe,null))['then'](removeEntity(_0x2260fe,null))[_0xc91e('0x42')](handleError(_0x2260fe,null));};exports['describe']=function(_0x313299,_0x221f72){return db['OpenchannelTransferReport'][_0xc91e('0x4c')]()[_0xc91e('0x27')](respondWithResult(_0x221f72,null))[_0xc91e('0x42')](handleError(_0x221f72,null));};
\ No newline at end of file
index 968923f..a7bd4ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1888=['../../config/logger','api','moment','path','rimraf','../../config/environment','./openchannelTransferReport.attributes','exports','OpenchannelTransferReport','report_openchannel_transfer','uniqueid','util'];(function(_0x43c74a,_0x134fad){var _0xbdf740=function(_0x52fcfc){while(--_0x52fcfc){_0x43c74a['push'](_0x43c74a['shift']());}};_0xbdf740(++_0x134fad);}(_0x1888,0x15b));var _0x8188=function(_0x193927,_0x545c88){_0x193927=_0x193927-0x0;var _0x1d21b1=_0x1888[_0x193927];return _0x1d21b1;};'use strict';var _=require('lodash');var util=require(_0x8188('0x0'));var logger=require(_0x8188('0x1'))(_0x8188('0x2'));var moment=require(_0x8188('0x3'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8188('0x4'));var rimraf=require(_0x8188('0x5'));var config=require(_0x8188('0x6'));var attributes=require(_0x8188('0x7'));module[_0x8188('0x8')]=function(_0x175ae9,_0x28f6dc){return _0x175ae9['define'](_0x8188('0x9'),attributes,{'tableName':_0x8188('0xa'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x8188('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x0540=['../../config/logger','api','moment','path','rimraf','../../config/environment','./openchannelTransferReport.attributes','exports','OpenchannelTransferReport','report_openchannel_transfer','uniqueid'];(function(_0x1b7368,_0x3286ed){var _0x25d54c=function(_0x2366da){while(--_0x2366da){_0x1b7368['push'](_0x1b7368['shift']());}};_0x25d54c(++_0x3286ed);}(_0x0540,0x14a));var _0x0054=function(_0x169d71,_0x41a7d7){_0x169d71=_0x169d71-0x0;var _0x55a48e=_0x0540[_0x169d71];return _0x55a48e;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x0054('0x0'))(_0x0054('0x1'));var moment=require(_0x0054('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x0054('0x3'));var rimraf=require(_0x0054('0x4'));var config=require(_0x0054('0x5'));var attributes=require(_0x0054('0x6'));module[_0x0054('0x7')]=function(_0x4d87e3,_0x139339){return _0x4d87e3['define'](_0x0054('0x8'),attributes,{'tableName':_0x0054('0x9'),'paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0x0054('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 2494909..f3d71a0 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','OpenchannelTransferReport,\x20%s,\x20%s','request\x20sent','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x470c72,_0x67f8ac){var _0x46e6c7=function(_0x2b8038){while(--_0x2b8038){_0x470c72['push'](_0x470c72['shift']());}};_0x46e6c7(++_0x67f8ac);}(_0x9957,0x93));var _0x7995=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x9957[_0x4cf98e];return _0x1623ac;};'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']('OpenchannelTransferReport,\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 _0x02a7=['../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','debug','OpenchannelTransferReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','OpenchannelTransferReport,\x20%s,\x20%s','message','result','util','randomstring','ioredis','../../mysqldb'];(function(_0x1fefb4,_0x2ebf60){var _0x19656a=function(_0x4e49f8){while(--_0x4e49f8){_0x1fefb4['push'](_0x1fefb4['shift']());}};_0x19656a(++_0x2ebf60);}(_0x02a7,0x7a));var _0x702a=function(_0x128249,_0x43119d){_0x128249=_0x128249-0x0;var _0x17f37f=_0x02a7[_0x128249];return _0x17f37f;};'use strict';var _=require('lodash');var util=require(_0x702a('0x0'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x702a('0x1'));var fs=require('fs');var Redis=require(_0x702a('0x2'));var db=require(_0x702a('0x3'))['db'];var utils=require(_0x702a('0x4'));var logger=require(_0x702a('0x5'))(_0x702a('0x6'));var config=require(_0x702a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x702a('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x26b25e,_0x1aa2c2,_0x3f2954){return new BPromise(function(_0x161dee,_0x430cf3){return client[_0x702a('0x9')](_0x26b25e,_0x3f2954)[_0x702a('0xa')](function(_0x48469e){logger[_0x702a('0xb')]('OpenchannelTransferReport,\x20%s,\x20%s',_0x1aa2c2,'request\x20sent');logger[_0x702a('0xc')](_0x702a('0xd'),_0x1aa2c2,_0x702a('0xe'),JSON[_0x702a('0xf')](_0x48469e));if(_0x48469e['error']){if(_0x48469e[_0x702a('0x10')][_0x702a('0x11')]===0x1f4){logger[_0x702a('0x10')](_0x702a('0x12'),_0x1aa2c2,_0x48469e[_0x702a('0x10')][_0x702a('0x13')]);return _0x430cf3(_0x48469e[_0x702a('0x10')]['message']);}logger['error'](_0x702a('0x12'),_0x1aa2c2,_0x48469e['error']['message']);return _0x161dee(_0x48469e['error']['message']);}else{logger['info'](_0x702a('0x12'),_0x1aa2c2,_0x702a('0xe'));_0x161dee(_0x48469e[_0x702a('0x14')]['message']);}})['catch'](function(_0x506772){logger[_0x702a('0x10')](_0x702a('0x12'),_0x1aa2c2,_0x506772);_0x430cf3(_0x506772);});});}
\ No newline at end of file
index b3f9cb4..e8d342a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc81=['get','isAuthenticated','index','/:id','show','post','create','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./pause.controller'];(function(_0x4c8e1d,_0x543ff0){var _0x59cffe=function(_0x5c6791){while(--_0x5c6791){_0x4c8e1d['push'](_0x4c8e1d['shift']());}};_0x59cffe(++_0x543ff0);}(_0xfc81,0x88));var _0x1fc8=function(_0x52e68e,_0x309912){_0x52e68e=_0x52e68e-0x0;var _0x3211a4=_0xfc81[_0x52e68e];return _0x3211a4;};'use strict';var multer=require('multer');var util=require(_0x1fc8('0x0'));var path=require(_0x1fc8('0x1'));var timeout=require(_0x1fc8('0x2'));var express=require(_0x1fc8('0x3'));var router=express[_0x1fc8('0x4')]();var fs_extra=require(_0x1fc8('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x1fc8('0x6'));var config=require('../../config/environment');var controller=require(_0x1fc8('0x7'));router[_0x1fc8('0x8')]('/',auth[_0x1fc8('0x9')](),controller[_0x1fc8('0xa')]);router[_0x1fc8('0x8')](_0x1fc8('0xb'),auth[_0x1fc8('0x9')](),controller[_0x1fc8('0xc')]);router[_0x1fc8('0xd')]('/',auth[_0x1fc8('0x9')](),controller[_0x1fc8('0xe')]);router['put']('/:id',auth[_0x1fc8('0x9')](),controller[_0x1fc8('0xf')]);router[_0x1fc8('0x10')](_0x1fc8('0xb'),auth[_0x1fc8('0x9')](),controller['destroy']);module[_0x1fc8('0x11')]=router;
\ No newline at end of file
+var _0xab5e=['../../config/environment','./pause.controller','isAuthenticated','index','get','/:id','show','post','create','put','update','destroy','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x470c4e,_0x44857b){var _0x8d815b=function(_0x407f42){while(--_0x407f42){_0x470c4e['push'](_0x470c4e['shift']());}};_0x8d815b(++_0x44857b);}(_0xab5e,0x110));var _0xeab5=function(_0x42f38b,_0x324b9f){_0x42f38b=_0x42f38b-0x0;var _0xbbac6a=_0xab5e[_0x42f38b];return _0xbbac6a;};'use strict';var multer=require(_0xeab5('0x0'));var util=require(_0xeab5('0x1'));var path=require(_0xeab5('0x2'));var timeout=require(_0xeab5('0x3'));var express=require(_0xeab5('0x4'));var router=express['Router']();var fs_extra=require(_0xeab5('0x5'));var auth=require(_0xeab5('0x6'));var interaction=require(_0xeab5('0x7'));var config=require(_0xeab5('0x8'));var controller=require(_0xeab5('0x9'));router['get']('/',auth[_0xeab5('0xa')](),controller[_0xeab5('0xb')]);router[_0xeab5('0xc')](_0xeab5('0xd'),auth[_0xeab5('0xa')](),controller[_0xeab5('0xe')]);router[_0xeab5('0xf')]('/',auth[_0xeab5('0xa')](),controller[_0xeab5('0x10')]);router[_0xeab5('0x11')](_0xeab5('0xd'),auth['isAuthenticated'](),controller[_0xeab5('0x12')]);router['delete']('/:id',auth[_0xeab5('0xa')](),controller[_0xeab5('0x13')]);module['exports']=router;
\ No newline at end of file
index d99257c..f556012 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6d44=['STRING','name','exports'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x6d44,0x125));var _0x46d4=function(_0x1a6e19,_0x3d67f0){_0x1a6e19=_0x1a6e19-0x0;var _0x122bc2=_0x6d44[_0x1a6e19];return _0x122bc2;};'use strict';var Sequelize=require('sequelize');module[_0x46d4('0x0')]={'name':{'type':Sequelize[_0x46d4('0x1')],'unique':_0x46d4('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0x46d4('0x1')]}};
\ No newline at end of file
+var _0xc4be=['STRING','name','sequelize','exports'];(function(_0x2dc57c,_0x3609d9){var _0x449208=function(_0x1a3371){while(--_0x1a3371){_0x2dc57c['push'](_0x2dc57c['shift']());}};_0x449208(++_0x3609d9);}(_0xc4be,0xbe));var _0xec4b=function(_0xd546e5,_0x134f06){_0xd546e5=_0xd546e5-0x0;var _0xdc99e7=_0xc4be[_0xd546e5];return _0xdc99e7;};'use strict';var Sequelize=require(_0xec4b('0x0'));module[_0xec4b('0x1')]={'name':{'type':Sequelize[_0xec4b('0x2')],'unique':_0xec4b('0x3'),'allowNull':![]},'description':{'type':Sequelize[_0xec4b('0x2')]}};
\ No newline at end of file
index b80d275..3ceabbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8dd6=['desk.js','to-csv','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','limit','set','Content-Range','reject','save','update','destroy','get','then','error','name','index','map','Pause','rawAttributes','fieldName','type','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','find','catch','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','Pauses','userProfileId','autoAssociation','params','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','sox','ejs','fs-extra','lodash','squel','crypto'];(function(_0x5d4607,_0x6b5e7b){var _0x5e4a86=function(_0x46891a){while(--_0x46891a){_0x5d4607['push'](_0x5d4607['shift']());}};_0x5e4a86(++_0x6b5e7b);}(_0x8dd6,0x91));var _0x68dd=function(_0x2db99f,_0x46e272){_0x2db99f=_0x2db99f-0x0;var _0x5acd2e=_0x8dd6[_0x2db99f];return _0x5acd2e;};'use strict';var emlformat=require(_0x68dd('0x0'));var rimraf=require(_0x68dd('0x1'));var zipdir=require(_0x68dd('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x68dd('0x3'));var moment=require(_0x68dd('0x4'));var BPromise=require(_0x68dd('0x5'));var Mustache=require('mustache');var util=require(_0x68dd('0x6'));var path=require('path');var sox=require(_0x68dd('0x7'));var csv=require('to-csv');var ejs=require(_0x68dd('0x8'));var fs=require('fs');var fs_extra=require(_0x68dd('0x9'));var _=require(_0x68dd('0xa'));var squel=require(_0x68dd('0xb'));var crypto=require(_0x68dd('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x68dd('0xd'));var toCsv=require(_0x68dd('0xe'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x68dd('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x68dd('0x10'));var hardwareService=require(_0x68dd('0x11'));var logger=require(_0x68dd('0x12'))(_0x68dd('0x13'));var utils=require(_0x68dd('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x68dd('0x15'));var db=require(_0x68dd('0x16'))['db'];function respondWithStatusCode(_0x3f2f61,_0x40bcf8){_0x40bcf8=_0x40bcf8||0xcc;return function(_0x1f4eb5){if(_0x1f4eb5){return _0x3f2f61[_0x68dd('0x17')](_0x40bcf8);}return _0x3f2f61['status'](_0x40bcf8)[_0x68dd('0x18')]();};}function respondWithResult(_0x2ef11f,_0x52cfc0){_0x52cfc0=_0x52cfc0||0xc8;return function(_0x595469){if(_0x595469){return _0x2ef11f[_0x68dd('0x19')](_0x52cfc0)[_0x68dd('0x1a')](_0x595469);}};}function respondWithFilteredResult(_0x3fa02c,_0x1f8b88){return function(_0x5bb11e){if(_0x5bb11e){var _0x576b94=typeof _0x1f8b88[_0x68dd('0x1b')]===_0x68dd('0x1c')&&typeof _0x1f8b88['limit']===_0x68dd('0x1c');var _0x2ac744=_0x5bb11e[_0x68dd('0x1d')];var _0x3a057c=_0x576b94?0x0:_0x1f8b88[_0x68dd('0x1b')];var _0x40cc6a=_0x576b94?_0x5bb11e[_0x68dd('0x1d')]:_0x1f8b88['offset']+_0x1f8b88[_0x68dd('0x1e')];var _0x50e137;if(_0x40cc6a>=_0x2ac744){_0x40cc6a=_0x2ac744;_0x50e137=0xc8;}else{_0x50e137=0xce;}_0x3fa02c[_0x68dd('0x19')](_0x50e137);return _0x3fa02c[_0x68dd('0x1f')](_0x68dd('0x20'),_0x3a057c+'-'+_0x40cc6a+'/'+_0x2ac744)[_0x68dd('0x1a')](_0x5bb11e);}return null;};}function patchUpdates(_0x362674){return function(_0x12462f){try{jsonpatch['apply'](_0x12462f,_0x362674,!![]);}catch(_0x46dacd){return BPromise[_0x68dd('0x21')](_0x46dacd);}return _0x12462f[_0x68dd('0x22')]();};}function saveUpdates(_0x158643,_0x1f9af1){return function(_0x3129a4){if(_0x3129a4){return _0x3129a4[_0x68dd('0x23')](_0x158643)['then'](function(_0x54d89b){return _0x54d89b;});}return null;};}function removeEntity(_0x12586a,_0x341fa5){return function(_0x2868bd){if(_0x2868bd){return _0x2868bd[_0x68dd('0x24')]()['then'](function(){var _0x35fb54=_0x2868bd[_0x68dd('0x25')]({'plain':!![]});var _0x50bea3='Pauses';return db['UserProfileResource'][_0x68dd('0x24')]({'where':{'type':_0x50bea3,'resourceId':_0x35fb54['id']}})[_0x68dd('0x26')](function(){return _0x2868bd;});})[_0x68dd('0x26')](function(){_0x12586a[_0x68dd('0x19')](0xcc)[_0x68dd('0x18')]();});}};}function handleEntityNotFound(_0xbebb,_0x3a47bf){return function(_0x508728){if(!_0x508728){_0xbebb[_0x68dd('0x17')](0x194);}return _0x508728;};}function handleError(_0x4778b0,_0x1e4258){_0x1e4258=_0x1e4258||0x1f4;return function(_0x53e7b4){logger[_0x68dd('0x27')](_0x53e7b4['stack']);if(_0x53e7b4['name']){delete _0x53e7b4[_0x68dd('0x28')];}_0x4778b0[_0x68dd('0x19')](_0x1e4258)['send'](_0x53e7b4);};}exports[_0x68dd('0x29')]=function(_0x3c2cfa,_0x50af22){var _0x590c6a={},_0x4c0364={},_0x1d962a={'count':0x0,'rows':[]};var _0x4dce48=_[_0x68dd('0x2a')](db[_0x68dd('0x2b')][_0x68dd('0x2c')],function(_0x3379f1){return{'name':_0x3379f1[_0x68dd('0x2d')],'type':_0x3379f1[_0x68dd('0x2e')][_0x68dd('0x2f')]};});_0x4c0364[_0x68dd('0x30')]=_[_0x68dd('0x2a')](_0x4dce48,_0x68dd('0x28'));_0x4c0364['query']=_[_0x68dd('0x31')](_0x3c2cfa[_0x68dd('0x32')]);_0x4c0364[_0x68dd('0x33')]=_[_0x68dd('0x34')](_0x4c0364[_0x68dd('0x30')],_0x4c0364['query']);_0x590c6a[_0x68dd('0x35')]=_[_0x68dd('0x34')](_0x4c0364[_0x68dd('0x30')],qs[_0x68dd('0x36')](_0x3c2cfa[_0x68dd('0x32')][_0x68dd('0x36')]));_0x590c6a[_0x68dd('0x35')]=_0x590c6a[_0x68dd('0x35')][_0x68dd('0x37')]?_0x590c6a[_0x68dd('0x35')]:_0x4c0364['model'];if(!_0x3c2cfa[_0x68dd('0x32')][_0x68dd('0x38')](_0x68dd('0x39'))){_0x590c6a[_0x68dd('0x1e')]=qs[_0x68dd('0x1e')](_0x3c2cfa['query']['limit']);_0x590c6a[_0x68dd('0x1b')]=qs[_0x68dd('0x1b')](_0x3c2cfa[_0x68dd('0x32')]['offset']);}_0x590c6a[_0x68dd('0x3a')]=qs['sort'](_0x3c2cfa[_0x68dd('0x32')][_0x68dd('0x3b')]);_0x590c6a[_0x68dd('0x3c')]=qs[_0x68dd('0x33')](_['pick'](_0x3c2cfa[_0x68dd('0x32')],_0x4c0364[_0x68dd('0x33')]),_0x4dce48);if(_0x3c2cfa['query'][_0x68dd('0x3d')]){_0x590c6a['where']=_[_0x68dd('0x3e')](_0x590c6a[_0x68dd('0x3c')],{'$or':_[_0x68dd('0x2a')](_0x4dce48,function(_0x4c3e63){if(_0x4c3e63['type']!==_0x68dd('0x3f')){var _0x2d6332={};_0x2d6332[_0x4c3e63[_0x68dd('0x28')]]={'$like':'%'+_0x3c2cfa[_0x68dd('0x32')][_0x68dd('0x3d')]+'%'};return _0x2d6332;}})});}_0x590c6a=_['merge']({},_0x590c6a,_0x3c2cfa[_0x68dd('0x40')]);var _0x3a0e99={'where':_0x590c6a['where']};return db[_0x68dd('0x2b')][_0x68dd('0x1d')](_0x3a0e99)[_0x68dd('0x26')](function(_0x411eed){_0x1d962a['count']=_0x411eed;if(_0x3c2cfa[_0x68dd('0x32')][_0x68dd('0x41')]){_0x590c6a[_0x68dd('0x42')]=[{'all':!![]}];}return db['Pause'][_0x68dd('0x43')](_0x590c6a);})[_0x68dd('0x26')](function(_0x468245){_0x1d962a[_0x68dd('0x44')]=_0x468245;return _0x1d962a;})['then'](respondWithFilteredResult(_0x50af22,_0x590c6a))['catch'](handleError(_0x50af22,null));};exports['show']=function(_0x2ca447,_0x3683b6){var _0x375fbe={'raw':!![],'where':{'id':_0x2ca447['params']['id']}},_0x12131c={};_0x12131c[_0x68dd('0x30')]=_['keys'](db['Pause'][_0x68dd('0x2c')]);_0x12131c[_0x68dd('0x32')]=_['keys'](_0x2ca447[_0x68dd('0x32')]);_0x12131c['filters']=_['intersection'](_0x12131c[_0x68dd('0x30')],_0x12131c[_0x68dd('0x32')]);_0x375fbe[_0x68dd('0x35')]=_[_0x68dd('0x34')](_0x12131c['model'],qs[_0x68dd('0x36')](_0x2ca447[_0x68dd('0x32')]['fields']));_0x375fbe[_0x68dd('0x35')]=_0x375fbe[_0x68dd('0x35')][_0x68dd('0x37')]?_0x375fbe[_0x68dd('0x35')]:_0x12131c['model'];if(_0x2ca447[_0x68dd('0x32')][_0x68dd('0x41')]){_0x375fbe['include']=[{'all':!![]}];}_0x375fbe=_[_0x68dd('0x3e')]({},_0x375fbe,_0x2ca447[_0x68dd('0x40')]);return db[_0x68dd('0x2b')][_0x68dd('0x45')](_0x375fbe)[_0x68dd('0x26')](handleEntityNotFound(_0x3683b6,null))[_0x68dd('0x26')](respondWithResult(_0x3683b6,null))[_0x68dd('0x46')](handleError(_0x3683b6,null));};exports[_0x68dd('0x47')]=function(_0x33df2f,_0x2eaaa9){return db['Pause'][_0x68dd('0x47')](_0x33df2f[_0x68dd('0x48')],{})[_0x68dd('0x26')](function(_0x32c8b5){var _0x972e54=_0x33df2f[_0x68dd('0x49')][_0x68dd('0x25')]({'plain':!![]});if(!_0x972e54)throw new Error(_0x68dd('0x4a'));if(_0x972e54['role']===_0x68dd('0x49')){var _0x3382de=_0x32c8b5[_0x68dd('0x25')]({'plain':!![]});var _0xcc5f16=_0x68dd('0x4b');return db['UserProfileSection'][_0x68dd('0x45')]({'where':{'name':_0xcc5f16,'userProfileId':_0x972e54[_0x68dd('0x4c')]},'raw':!![]})['then'](function(_0x5ce28b){if(_0x5ce28b&&_0x5ce28b[_0x68dd('0x4d')]===0x0){return db['UserProfileResource'][_0x68dd('0x47')]({'name':_0x3382de[_0x68dd('0x28')],'resourceId':_0x3382de['id'],'type':_0x5ce28b[_0x68dd('0x28')],'sectionId':_0x5ce28b['id']},{})[_0x68dd('0x26')](function(){return _0x32c8b5;});}else{return _0x32c8b5;}})[_0x68dd('0x46')](function(_0x46143c){logger[_0x68dd('0x27')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x46143c);throw _0x46143c;});}return _0x32c8b5;})['then'](respondWithResult(_0x2eaaa9,0xc9))[_0x68dd('0x46')](handleError(_0x2eaaa9,null));};exports['update']=function(_0x4dd629,_0x1564cd){if(_0x4dd629['body']['id']){delete _0x4dd629[_0x68dd('0x48')]['id'];}return db['Pause']['find']({'where':{'id':_0x4dd629[_0x68dd('0x4e')]['id']}})[_0x68dd('0x26')](handleEntityNotFound(_0x1564cd,null))[_0x68dd('0x26')](saveUpdates(_0x4dd629[_0x68dd('0x48')],null))[_0x68dd('0x26')](respondWithResult(_0x1564cd,null))[_0x68dd('0x46')](handleError(_0x1564cd,null));};exports[_0x68dd('0x24')]=function(_0x1ef2e4,_0x3a9b84){return db[_0x68dd('0x2b')][_0x68dd('0x45')]({'where':{'id':_0x1ef2e4['params']['id']}})[_0x68dd('0x26')](handleEntityNotFound(_0x3a9b84,null))[_0x68dd('0x26')](removeEntity(_0x3a9b84,null))[_0x68dd('0x46')](handleError(_0x3a9b84,null));};
\ No newline at end of file
+var _0xd4af=['index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','hasOwnProperty','order','sort','where','filter','merge','count','includeAll','include','Pause','findAll','rows','catch','show','params','keys','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','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/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','undefined','limit','offset','status','set','Content-Range','apply','reject','save','update','destroy','then','get','Pauses','UserProfileResource','stack','name','send'];(function(_0x55e08b,_0x421620){var _0xd1a7ff=function(_0x58c7ff){while(--_0x58c7ff){_0x55e08b['push'](_0x55e08b['shift']());}};_0xd1a7ff(++_0x421620);}(_0xd4af,0x1ea));var _0xfd4a=function(_0x382e54,_0x112ece){_0x382e54=_0x382e54-0x0;var _0x529ddf=_0xd4af[_0x382e54];return _0x529ddf;};'use strict';var emlformat=require(_0xfd4a('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xfd4a('0x1'));var jsonpatch=require(_0xfd4a('0x2'));var rp=require(_0xfd4a('0x3'));var moment=require(_0xfd4a('0x4'));var BPromise=require(_0xfd4a('0x5'));var Mustache=require(_0xfd4a('0x6'));var util=require('util');var path=require(_0xfd4a('0x7'));var sox=require(_0xfd4a('0x8'));var csv=require(_0xfd4a('0x9'));var ejs=require(_0xfd4a('0xa'));var fs=require('fs');var fs_extra=require(_0xfd4a('0xb'));var _=require(_0xfd4a('0xc'));var squel=require(_0xfd4a('0xd'));var crypto=require(_0xfd4a('0xe'));var jsforce=require(_0xfd4a('0xf'));var deskjs=require(_0xfd4a('0x10'));var toCsv=require(_0xfd4a('0x9'));var querystring=require(_0xfd4a('0x11'));var Papa=require(_0xfd4a('0x12'));var Redis=require(_0xfd4a('0x13'));var authService=require(_0xfd4a('0x14'));var qs=require(_0xfd4a('0x15'));var as=require(_0xfd4a('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xfd4a('0x17'))(_0xfd4a('0x18'));var utils=require(_0xfd4a('0x19'));var config=require(_0xfd4a('0x1a'));var licenseUtil=require(_0xfd4a('0x1b'));var db=require(_0xfd4a('0x1c'))['db'];function respondWithStatusCode(_0x4ea5f6,_0x508c4f){_0x508c4f=_0x508c4f||0xcc;return function(_0x2f05aa){if(_0x2f05aa){return _0x4ea5f6[_0xfd4a('0x1d')](_0x508c4f);}return _0x4ea5f6['status'](_0x508c4f)[_0xfd4a('0x1e')]();};}function respondWithResult(_0x5d193f,_0x4b97d2){_0x4b97d2=_0x4b97d2||0xc8;return function(_0x157677){if(_0x157677){return _0x5d193f['status'](_0x4b97d2)[_0xfd4a('0x1f')](_0x157677);}};}function respondWithFilteredResult(_0x2b1632,_0x4ffafe){return function(_0x2ec668){if(_0x2ec668){var _0x56b2ad=typeof _0x4ffafe['offset']===_0xfd4a('0x20')&&typeof _0x4ffafe[_0xfd4a('0x21')]===_0xfd4a('0x20');var _0x35f400=_0x2ec668['count'];var _0x2b99a6=_0x56b2ad?0x0:_0x4ffafe[_0xfd4a('0x22')];var _0xd7920=_0x56b2ad?_0x2ec668['count']:_0x4ffafe[_0xfd4a('0x22')]+_0x4ffafe[_0xfd4a('0x21')];var _0x4b5780;if(_0xd7920>=_0x35f400){_0xd7920=_0x35f400;_0x4b5780=0xc8;}else{_0x4b5780=0xce;}_0x2b1632[_0xfd4a('0x23')](_0x4b5780);return _0x2b1632[_0xfd4a('0x24')](_0xfd4a('0x25'),_0x2b99a6+'-'+_0xd7920+'/'+_0x35f400)[_0xfd4a('0x1f')](_0x2ec668);}return null;};}function patchUpdates(_0x4b285f){return function(_0x20d9d0){try{jsonpatch[_0xfd4a('0x26')](_0x20d9d0,_0x4b285f,!![]);}catch(_0x376388){return BPromise[_0xfd4a('0x27')](_0x376388);}return _0x20d9d0[_0xfd4a('0x28')]();};}function saveUpdates(_0x22d6c7,_0x10b553){return function(_0x378434){if(_0x378434){return _0x378434[_0xfd4a('0x29')](_0x22d6c7)['then'](function(_0x1446c6){return _0x1446c6;});}return null;};}function removeEntity(_0x84f828,_0x1fba33){return function(_0x218213){if(_0x218213){return _0x218213[_0xfd4a('0x2a')]()[_0xfd4a('0x2b')](function(){var _0x4b9f40=_0x218213[_0xfd4a('0x2c')]({'plain':!![]});var _0x403cef=_0xfd4a('0x2d');return db[_0xfd4a('0x2e')][_0xfd4a('0x2a')]({'where':{'type':_0x403cef,'resourceId':_0x4b9f40['id']}})[_0xfd4a('0x2b')](function(){return _0x218213;});})['then'](function(){_0x84f828[_0xfd4a('0x23')](0xcc)[_0xfd4a('0x1e')]();});}};}function handleEntityNotFound(_0x18683b,_0x4c4592){return function(_0x154c41){if(!_0x154c41){_0x18683b[_0xfd4a('0x1d')](0x194);}return _0x154c41;};}function handleError(_0xa3398e,_0x10712c){_0x10712c=_0x10712c||0x1f4;return function(_0x5ea6bb){logger['error'](_0x5ea6bb[_0xfd4a('0x2f')]);if(_0x5ea6bb[_0xfd4a('0x30')]){delete _0x5ea6bb[_0xfd4a('0x30')];}_0xa3398e['status'](_0x10712c)[_0xfd4a('0x31')](_0x5ea6bb);};}exports[_0xfd4a('0x32')]=function(_0x4392c1,_0x45faa1){var _0x502eae={},_0x2866a8={},_0x12aa46={'count':0x0,'rows':[]};var _0x29a8be=_[_0xfd4a('0x33')](db['Pause'][_0xfd4a('0x34')],function(_0x229ce0){return{'name':_0x229ce0[_0xfd4a('0x35')],'type':_0x229ce0[_0xfd4a('0x36')][_0xfd4a('0x37')]};});_0x2866a8[_0xfd4a('0x38')]=_[_0xfd4a('0x33')](_0x29a8be,_0xfd4a('0x30'));_0x2866a8[_0xfd4a('0x39')]=_['keys'](_0x4392c1[_0xfd4a('0x39')]);_0x2866a8[_0xfd4a('0x3a')]=_[_0xfd4a('0x3b')](_0x2866a8[_0xfd4a('0x38')],_0x2866a8[_0xfd4a('0x39')]);_0x502eae[_0xfd4a('0x3c')]=_[_0xfd4a('0x3b')](_0x2866a8[_0xfd4a('0x38')],qs[_0xfd4a('0x3d')](_0x4392c1[_0xfd4a('0x39')][_0xfd4a('0x3d')]));_0x502eae[_0xfd4a('0x3c')]=_0x502eae[_0xfd4a('0x3c')]['length']?_0x502eae[_0xfd4a('0x3c')]:_0x2866a8[_0xfd4a('0x38')];if(!_0x4392c1['query'][_0xfd4a('0x3e')]('nolimit')){_0x502eae[_0xfd4a('0x21')]=qs[_0xfd4a('0x21')](_0x4392c1[_0xfd4a('0x39')][_0xfd4a('0x21')]);_0x502eae[_0xfd4a('0x22')]=qs['offset'](_0x4392c1[_0xfd4a('0x39')][_0xfd4a('0x22')]);}_0x502eae[_0xfd4a('0x3f')]=qs[_0xfd4a('0x40')](_0x4392c1[_0xfd4a('0x39')][_0xfd4a('0x40')]);_0x502eae[_0xfd4a('0x41')]=qs['filters'](_['pick'](_0x4392c1[_0xfd4a('0x39')],_0x2866a8['filters']),_0x29a8be);if(_0x4392c1[_0xfd4a('0x39')][_0xfd4a('0x42')]){_0x502eae[_0xfd4a('0x41')]=_[_0xfd4a('0x43')](_0x502eae[_0xfd4a('0x41')],{'$or':_['map'](_0x29a8be,function(_0x3d2d9c){if(_0x3d2d9c[_0xfd4a('0x36')]!=='VIRTUAL'){var _0x1e7c56={};_0x1e7c56[_0x3d2d9c[_0xfd4a('0x30')]]={'$like':'%'+_0x4392c1[_0xfd4a('0x39')][_0xfd4a('0x42')]+'%'};return _0x1e7c56;}})});}_0x502eae=_[_0xfd4a('0x43')]({},_0x502eae,_0x4392c1['options']);var _0x43b0b0={'where':_0x502eae[_0xfd4a('0x41')]};return db['Pause'][_0xfd4a('0x44')](_0x43b0b0)[_0xfd4a('0x2b')](function(_0x1e87f1){_0x12aa46[_0xfd4a('0x44')]=_0x1e87f1;if(_0x4392c1['query'][_0xfd4a('0x45')]){_0x502eae[_0xfd4a('0x46')]=[{'all':!![]}];}return db[_0xfd4a('0x47')][_0xfd4a('0x48')](_0x502eae);})[_0xfd4a('0x2b')](function(_0x438f09){_0x12aa46[_0xfd4a('0x49')]=_0x438f09;return _0x12aa46;})[_0xfd4a('0x2b')](respondWithFilteredResult(_0x45faa1,_0x502eae))[_0xfd4a('0x4a')](handleError(_0x45faa1,null));};exports[_0xfd4a('0x4b')]=function(_0x2a18a3,_0x32cbe3){var _0x250e4b={'raw':!![],'where':{'id':_0x2a18a3[_0xfd4a('0x4c')]['id']}},_0x50d4b8={};_0x50d4b8[_0xfd4a('0x38')]=_['keys'](db['Pause'][_0xfd4a('0x34')]);_0x50d4b8[_0xfd4a('0x39')]=_[_0xfd4a('0x4d')](_0x2a18a3[_0xfd4a('0x39')]);_0x50d4b8['filters']=_[_0xfd4a('0x3b')](_0x50d4b8[_0xfd4a('0x38')],_0x50d4b8['query']);_0x250e4b[_0xfd4a('0x3c')]=_[_0xfd4a('0x3b')](_0x50d4b8[_0xfd4a('0x38')],qs['fields'](_0x2a18a3[_0xfd4a('0x39')]['fields']));_0x250e4b[_0xfd4a('0x3c')]=_0x250e4b['attributes'][_0xfd4a('0x4e')]?_0x250e4b[_0xfd4a('0x3c')]:_0x50d4b8['model'];if(_0x2a18a3[_0xfd4a('0x39')][_0xfd4a('0x45')]){_0x250e4b[_0xfd4a('0x46')]=[{'all':!![]}];}_0x250e4b=_[_0xfd4a('0x43')]({},_0x250e4b,_0x2a18a3['options']);return db[_0xfd4a('0x47')][_0xfd4a('0x4f')](_0x250e4b)[_0xfd4a('0x2b')](handleEntityNotFound(_0x32cbe3,null))[_0xfd4a('0x2b')](respondWithResult(_0x32cbe3,null))[_0xfd4a('0x4a')](handleError(_0x32cbe3,null));};exports[_0xfd4a('0x50')]=function(_0x1e0df3,_0x1a7760){return db[_0xfd4a('0x47')]['create'](_0x1e0df3[_0xfd4a('0x51')],{})[_0xfd4a('0x2b')](function(_0x3f335e){var _0xb63078=_0x1e0df3[_0xfd4a('0x52')]['get']({'plain':!![]});if(!_0xb63078)throw new Error(_0xfd4a('0x53'));if(_0xb63078[_0xfd4a('0x54')]===_0xfd4a('0x52')){var _0xa0e7d4=_0x3f335e['get']({'plain':!![]});var _0x484d3='Pauses';return db[_0xfd4a('0x55')][_0xfd4a('0x4f')]({'where':{'name':_0x484d3,'userProfileId':_0xb63078[_0xfd4a('0x56')]},'raw':!![]})[_0xfd4a('0x2b')](function(_0xfdfc59){if(_0xfdfc59&&_0xfdfc59[_0xfd4a('0x57')]===0x0){return db[_0xfd4a('0x2e')][_0xfd4a('0x50')]({'name':_0xa0e7d4[_0xfd4a('0x30')],'resourceId':_0xa0e7d4['id'],'type':_0xfdfc59[_0xfd4a('0x30')],'sectionId':_0xfdfc59['id']},{})[_0xfd4a('0x2b')](function(){return _0x3f335e;});}else{return _0x3f335e;}})[_0xfd4a('0x4a')](function(_0x5d41ed){logger[_0xfd4a('0x58')](_0xfd4a('0x59'),_0x5d41ed);throw _0x5d41ed;});}return _0x3f335e;})[_0xfd4a('0x2b')](respondWithResult(_0x1a7760,0xc9))[_0xfd4a('0x4a')](handleError(_0x1a7760,null));};exports[_0xfd4a('0x29')]=function(_0x4940fe,_0x3b3ba6){if(_0x4940fe[_0xfd4a('0x51')]['id']){delete _0x4940fe['body']['id'];}return db[_0xfd4a('0x47')][_0xfd4a('0x4f')]({'where':{'id':_0x4940fe['params']['id']}})['then'](handleEntityNotFound(_0x3b3ba6,null))['then'](saveUpdates(_0x4940fe[_0xfd4a('0x51')],null))[_0xfd4a('0x2b')](respondWithResult(_0x3b3ba6,null))[_0xfd4a('0x4a')](handleError(_0x3b3ba6,null));};exports['destroy']=function(_0x12e735,_0x5574cb){return db['Pause'][_0xfd4a('0x4f')]({'where':{'id':_0x12e735[_0xfd4a('0x4c')]['id']}})[_0xfd4a('0x2b')](handleEntityNotFound(_0x5574cb,null))['then'](removeEntity(_0x5574cb,null))[_0xfd4a('0x4a')](handleError(_0x5574cb,null));};
\ No newline at end of file
index d13c8eb..31e8482 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf494=['../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./pause.attributes','exports','define','lodash','util'];(function(_0x3d43ce,_0xe21b5b){var _0x1d80bc=function(_0x3816a1){while(--_0x3816a1){_0x3d43ce['push'](_0x3d43ce['shift']());}};_0x1d80bc(++_0xe21b5b);}(_0xf494,0x1c6));var _0x4f49=function(_0x2d0c8c,_0x3ee713){_0x2d0c8c=_0x2d0c8c-0x0;var _0x57f43e=_0xf494[_0x2d0c8c];return _0x57f43e;};'use strict';var _=require(_0x4f49('0x0'));var util=require(_0x4f49('0x1'));var logger=require(_0x4f49('0x2'))('api');var moment=require(_0x4f49('0x3'));var BPromise=require(_0x4f49('0x4'));var rp=require(_0x4f49('0x5'));var fs=require('fs');var path=require(_0x4f49('0x6'));var rimraf=require(_0x4f49('0x7'));var config=require(_0x4f49('0x8'));var attributes=require(_0x4f49('0x9'));module[_0x4f49('0xa')]=function(_0xc5e778,_0x413530){return _0xc5e778[_0x4f49('0xb')]('Pause',attributes,{'tableName':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x814b=['define','Pause','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./pause.attributes','exports'];(function(_0x59a46f,_0x583302){var _0x16cb3d=function(_0x28d82d){while(--_0x28d82d){_0x59a46f['push'](_0x59a46f['shift']());}};_0x16cb3d(++_0x583302);}(_0x814b,0x1a2));var _0xb814=function(_0x197065,_0x2e79d0){_0x197065=_0x197065-0x0;var _0x3d9404=_0x814b[_0x197065];return _0x3d9404;};'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':'tools_pauses','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 7cb41d8..93e2776 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(_0x3402fd,_0x3ffc12){var _0xbd35fd=function(_0x24640a){while(--_0x24640a){_0x3402fd['push'](_0x3402fd['shift']());}};_0xbd35fd(++_0x3ffc12);}(_0x7a54,0x106));var _0x47a5=function(_0x302779,_0x131252){_0x302779=_0x302779-0x0;var _0x1a5c5a=_0x7a54[_0x302779];return _0x1a5c5a;};'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 _0xb10b=['catch','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Pause,\x20%s,\x20%s','Pause,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','ShowPause','Pause','find','options','raw','where','attributes','map','include','model','debug'];(function(_0x20dda9,_0x41c54e){var _0x5c858e=function(_0x119570){while(--_0x119570){_0x20dda9['push'](_0x20dda9['shift']());}};_0x5c858e(++_0x41c54e);}(_0xb10b,0x12a));var _0xbb10=function(_0x496b11,_0x576cb0){_0x496b11=_0x496b11-0x0;var _0x3030ac=_0xb10b[_0x496b11];return _0x3030ac;};'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')]({'raw':_0x378da8['options']?_0x378da8[_0xbb10('0x18')][_0xbb10('0x19')]===undefined?!![]:![]:!![],'where':_0x378da8[_0xbb10('0x18')]?_0x378da8[_0xbb10('0x18')][_0xbb10('0x1a')]||null:null,'attributes':_0x378da8[_0xbb10('0x18')]?_0x378da8['options'][_0xbb10('0x1b')]||null:null,'include':_0x378da8[_0xbb10('0x18')]?_0x378da8['options']['include']?_[_0xbb10('0x1c')](_0x378da8[_0xbb10('0x18')][_0xbb10('0x1d')],function(_0x317da4){return{'model':db[_0x317da4[_0xbb10('0x1e')]],'as':_0x317da4['as'],'attributes':_0x317da4[_0xbb10('0x1b')],'include':_0x317da4[_0xbb10('0x1d')]?_[_0xbb10('0x1c')](_0x317da4[_0xbb10('0x1d')],function(_0x395404){return{'model':db[_0x395404[_0xbb10('0x1e')]],'as':_0x395404['as'],'attributes':_0x395404[_0xbb10('0x1b')],'include':_0x395404['include']?_['map'](_0x395404['include'],function(_0xc93a04){return{'model':db[_0xc93a04[_0xbb10('0x1e')]],'as':_0xc93a04['as'],'attributes':_0xc93a04[_0xbb10('0x1b')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2fdde9){logger[_0xbb10('0xd')](_0xbb10('0x15'),_0x378da8);logger[_0xbb10('0x1f')](_0xbb10('0x15'),_0x378da8,JSON[_0xbb10('0x11')](_0x2fdde9));_0x575cca(_0x2fdde9);})[_0xbb10('0x20')](function(_0x4aabb9){logger[_0xbb10('0x12')](_0xbb10('0x15'),_0x4aabb9[_0xbb10('0x13')],_0x378da8);_0x30efc6(_0x1682a4[_0xbb10('0x12')](0x1f4,_0x4aabb9[_0xbb10('0x13')]));});});};
\ No newline at end of file
index 5f226b7..ffe2e6e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524a=['show','/:id/download','diskStorage','join','root','server/files/plugins','originalname','format','basename','now','extname','post','single','file','/webhook','webhookPost','put','/:id','update','delete','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','./plugin.controller','get','isAuthenticated','webhookGet'];(function(_0x53d7be,_0x33973d){var _0x376785=function(_0x246f93){while(--_0x246f93){_0x53d7be['push'](_0x53d7be['shift']());}};_0x376785(++_0x33973d);}(_0x524a,0xf5));var _0xa524=function(_0x28474e,_0x54a259){_0x28474e=_0x28474e-0x0;var _0x3adc6e=_0x524a[_0x28474e];return _0x3adc6e;};'use strict';var multer=require(_0xa524('0x0'));var util=require(_0xa524('0x1'));var path=require(_0xa524('0x2'));var timeout=require(_0xa524('0x3'));var express=require('express');var router=express[_0xa524('0x4')]();var fs_extra=require(_0xa524('0x5'));var auth=require(_0xa524('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xa524('0x7'));router[_0xa524('0x8')]('/',auth[_0xa524('0x9')](),controller['index']);router[_0xa524('0x8')]('/webhook',controller[_0xa524('0xa')]);router[_0xa524('0x8')]('/:id',auth[_0xa524('0x9')](),controller[_0xa524('0xb')]);router[_0xa524('0x8')](_0xa524('0xc'),auth[_0xa524('0x9')](),controller['download']);var upload=multer({'storage':multer[_0xa524('0xd')]({'destination':function(_0x2ebea2,_0x59660a,_0x565fab){_0x565fab(null,path[_0xa524('0xe')](config[_0xa524('0xf')],_0xa524('0x10')));},'filename':function(_0x4936fa,_0x55117f,_0x14a0d6){_0x55117f['originalname']=_0x55117f[_0xa524('0x11')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x14a0d6(null,util[_0xa524('0x12')]('%s-%s%s',path[_0xa524('0x13')](_0x55117f[_0xa524('0x11')],path['extname'](_0x55117f[_0xa524('0x11')])),Date[_0xa524('0x14')](),path[_0xa524('0x15')](_0x55117f[_0xa524('0x11')])));}})});router[_0xa524('0x16')]('/',upload[_0xa524('0x17')](_0xa524('0x18')),controller['upload']);router[_0xa524('0x16')](_0xa524('0x19'),controller[_0xa524('0x1a')]);router[_0xa524('0x1b')](_0xa524('0x1c'),auth[_0xa524('0x9')](),controller[_0xa524('0x1d')]);router[_0xa524('0x1e')]('/:id',auth[_0xa524('0x9')](),controller[_0xa524('0x1e')]);module[_0xa524('0x1f')]=router;
\ No newline at end of file
+var _0xaba6=['get','webhookGet','isAuthenticated','show','/:id/download','download','diskStorage','root','server/files/plugins','originalname','format','%s-%s%s','basename','extname','now','post','single','file','upload','/webhook','put','/:id','delete','multer','util','fs-extra','../../components/auth/service','../../config/environment','./plugin.controller'];(function(_0x169b41,_0x571bc1){var _0x51e5f0=function(_0x47ddb8){while(--_0x47ddb8){_0x169b41['push'](_0x169b41['shift']());}};_0x51e5f0(++_0x571bc1);}(_0xaba6,0xe2));var _0x6aba=function(_0x34d52b,_0x410457){_0x34d52b=_0x34d52b-0x0;var _0x380c14=_0xaba6[_0x34d52b];return _0x380c14;};'use strict';var multer=require(_0x6aba('0x0'));var util=require(_0x6aba('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0x6aba('0x2'));var auth=require(_0x6aba('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x6aba('0x4'));var controller=require(_0x6aba('0x5'));router['get']('/',auth['isAuthenticated'](),controller['index']);router[_0x6aba('0x6')]('/webhook',controller[_0x6aba('0x7')]);router[_0x6aba('0x6')]('/:id',auth[_0x6aba('0x8')](),controller[_0x6aba('0x9')]);router['get'](_0x6aba('0xa'),auth[_0x6aba('0x8')](),controller[_0x6aba('0xb')]);var upload=multer({'storage':multer[_0x6aba('0xc')]({'destination':function(_0xdbc119,_0x4089c6,_0x181426){_0x181426(null,path['join'](config[_0x6aba('0xd')],_0x6aba('0xe')));},'filename':function(_0x43867b,_0x254007,_0x53e604){_0x254007[_0x6aba('0xf')]=_0x254007[_0x6aba('0xf')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x53e604(null,util[_0x6aba('0x10')](_0x6aba('0x11'),path[_0x6aba('0x12')](_0x254007['originalname'],path[_0x6aba('0x13')](_0x254007[_0x6aba('0xf')])),Date[_0x6aba('0x14')](),path['extname'](_0x254007[_0x6aba('0xf')])));}})});router[_0x6aba('0x15')]('/',upload[_0x6aba('0x16')](_0x6aba('0x17')),controller[_0x6aba('0x18')]);router[_0x6aba('0x15')](_0x6aba('0x19'),controller['webhookPost']);router[_0x6aba('0x1a')](_0x6aba('0x1b'),auth[_0x6aba('0x8')](),controller['update']);router[_0x6aba('0x1c')]('/:id',auth['isAuthenticated'](),controller[_0x6aba('0x1c')]);module['exports']=router;
\ No newline at end of file
index 569a2e4..0202b05 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xec02=['BOOLEAN','Indicates\x20whether\x20the\x20plugin\x20is\x20installed.\x20Updated\x20when\x20the\x20plugin\x20is\x20installed/uninstalled.','adminOnly','agentOnly','always','never','Indicates\x20whether\x20to\x20display\x20the\x20plugin\x20in\x20the\x20sidebar.','sequelize','STRING','ENUM','html','script','TEXT'];(function(_0x499c55,_0x5ed601){var _0x1019cc=function(_0x2b3daf){while(--_0x2b3daf){_0x499c55['push'](_0x499c55['shift']());}};_0x1019cc(++_0x5ed601);}(_0xec02,0xb0));var _0x2ec0=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xec02[_0x167cc1];return _0x10bc4b;};'use strict';var Sequelize=require(_0x2ec0('0x0'));module['exports']={'name':{'type':Sequelize[_0x2ec0('0x1')]},'type':{'type':Sequelize[_0x2ec0('0x2')](_0x2ec0('0x3'),_0x2ec0('0x4'))},'description':{'type':Sequelize[_0x2ec0('0x5')]},'version':{'type':Sequelize[_0x2ec0('0x5')]},'path':{'type':Sequelize[_0x2ec0('0x1')],'comment':'The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.'},'active':{'type':Sequelize[_0x2ec0('0x6')],'defaultValue':0x0,'comment':_0x2ec0('0x7')},'sidebar':{'type':Sequelize[_0x2ec0('0x2')](_0x2ec0('0x8'),_0x2ec0('0x9'),_0x2ec0('0xa'),_0x2ec0('0xb')),'defaultValue':_0x2ec0('0xa'),'comment':_0x2ec0('0xc')},'icon':{'type':Sequelize[_0x2ec0('0x1')]},'adminUrl':{'type':Sequelize[_0x2ec0('0x1')]},'agentUrl':{'type':Sequelize[_0x2ec0('0x1')]},'scriptName':{'type':Sequelize[_0x2ec0('0x1')]},'scriptPath':{'type':Sequelize[_0x2ec0('0x1')]}};
\ No newline at end of file
+var _0xd80d=['sequelize','exports','ENUM','html','script','TEXT','The\x20physical\x20path\x20where\x20the\x20plugin\x20is\x20stored.','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.','STRING'];(function(_0x4e1d03,_0x786f3a){var _0x362d4b=function(_0x1924d2){while(--_0x1924d2){_0x4e1d03['push'](_0x4e1d03['shift']());}};_0x362d4b(++_0x786f3a);}(_0xd80d,0x1ad));var _0xdd80=function(_0x353ead,_0x3bc995){_0x353ead=_0x353ead-0x0;var _0x6b0569=_0xd80d[_0x353ead];return _0x6b0569;};'use strict';var Sequelize=require(_0xdd80('0x0'));module[_0xdd80('0x1')]={'name':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0xdd80('0x2')](_0xdd80('0x3'),_0xdd80('0x4'))},'description':{'type':Sequelize[_0xdd80('0x5')]},'version':{'type':Sequelize[_0xdd80('0x5')]},'path':{'type':Sequelize['STRING'],'comment':_0xdd80('0x6')},'active':{'type':Sequelize[_0xdd80('0x7')],'defaultValue':0x0,'comment':_0xdd80('0x8')},'sidebar':{'type':Sequelize[_0xdd80('0x2')]('adminOnly','agentOnly',_0xdd80('0x9'),_0xdd80('0xa')),'defaultValue':'always','comment':_0xdd80('0xb')},'icon':{'type':Sequelize[_0xdd80('0xc')]},'adminUrl':{'type':Sequelize[_0xdd80('0xc')]},'agentUrl':{'type':Sequelize[_0xdd80('0xc')]},'scriptName':{'type':Sequelize[_0xdd80('0xc')]},'scriptPath':{'type':Sequelize[_0xdd80('0xc')]}};
\ No newline at end of file
index 2612608..c894d73 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3370=['../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./plugin.socket','register','sendStatus','status','limit','offset','count','set','reject','update','then','destroy','Plugins','UserProfileResource','error','stack','name','index','map','Plugin','rawAttributes','key','model','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','sort','where','filter','merge','options','includeAll','include','findAll','show','find','catch','join','root','server/files/plugins','format','basename','createWriteStream','zip','warning','code','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','pipe','dirname','node_modules/**/*','finalize','close','Plugin\x20not\x20found','download','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Temporary\x20file\x20removed','upload','extname','file','filename','Plugin\x20upload\x20filepath:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','lstatSync','isFile','isDirectory','some','manifest.json','Plugin\x20manifest\x20missing','readFileSync','undefined','Invalid\x20manifest:\x20name\x20missing','type','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20version\x20not\x20specified','parameters','Invalid\x20manifest:\x20parameters\x20missing','html','views','admin','agent','Invalid\x20manifest:\x20no\x20view\x20specified','script','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','sidebar','always','icon','plugins','test','Warning:\x20agent\x20view\x20not\x20specified','scriptPath','role','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','get','UserProfileSection','autoAssociation','create','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','send','Zip\x20archive\x20removed','Extracted\x20folder\x20removed','params','body','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','port','http://localhost:','json','encoding','method','headers','content-length','statusCode','%s%s','content-type','eml-format','rimraf','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','extract-zip','archiver'];(function(_0x2aba17,_0x128a30){var _0x5a9599=function(_0x1bc43c){while(--_0x1bc43c){_0x2aba17['push'](_0x2aba17['shift']());}};_0x5a9599(++_0x128a30);}(_0x3370,0x139));var _0x0337=function(_0x157f8c,_0x1e0b9f){_0x157f8c=_0x157f8c-0x0;var _0x4f424e=_0x3370[_0x157f8c];return _0x4f424e;};'use strict';var emlformat=require(_0x0337('0x0'));var rimraf=require(_0x0337('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x0337('0x2'));var Mustache=require(_0x0337('0x3'));var util=require(_0x0337('0x4'));var path=require(_0x0337('0x5'));var sox=require(_0x0337('0x6'));var csv=require(_0x0337('0x7'));var ejs=require(_0x0337('0x8'));var fs=require('fs');var fs_extra=require(_0x0337('0x9'));var _=require(_0x0337('0xa'));var squel=require(_0x0337('0xb'));var crypto=require(_0x0337('0xc'));var jsforce=require(_0x0337('0xd'));var deskjs=require(_0x0337('0xe'));var toCsv=require('to-csv');var querystring=require(_0x0337('0xf'));var Papa=require(_0x0337('0x10'));var extract=require(_0x0337('0x11'));var rimraf=require(_0x0337('0x1'));var archiver=require(_0x0337('0x12'));var Redis=require('ioredis');var authService=require(_0x0337('0x13'));var qs=require(_0x0337('0x14'));var as=require(_0x0337('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x0337('0x16'))('api');var utils=require(_0x0337('0x17'));var config=require(_0x0337('0x18'));var licenseUtil=require(_0x0337('0x19'));var db=require(_0x0337('0x1a'))['db'];config[_0x0337('0x1b')]=_[_0x0337('0x1c')](config[_0x0337('0x1b')],{'host':_0x0337('0x1d'),'port':0x18eb});var socket=require(_0x0337('0x1e'))(new Redis(config[_0x0337('0x1b')]));require(_0x0337('0x1f'))[_0x0337('0x20')](socket);function respondWithStatusCode(_0x3e5aa1,_0x7c3cf0){_0x7c3cf0=_0x7c3cf0||0xcc;return function(_0x189477){if(_0x189477){return _0x3e5aa1[_0x0337('0x21')](_0x7c3cf0);}return _0x3e5aa1[_0x0337('0x22')](_0x7c3cf0)['end']();};}function respondWithResult(_0x22b43f,_0x319553){_0x319553=_0x319553||0xc8;return function(_0xd68471){if(_0xd68471){return _0x22b43f[_0x0337('0x22')](_0x319553)['json'](_0xd68471);}};}function respondWithFilteredResult(_0x16d697,_0x53f4f4){return function(_0x29e8dc){if(_0x29e8dc){var _0x1c3fb4=typeof _0x53f4f4['offset']==='undefined'&&typeof _0x53f4f4[_0x0337('0x23')]==='undefined';var _0x25e752=_0x29e8dc['count'];var _0x126d2a=_0x1c3fb4?0x0:_0x53f4f4[_0x0337('0x24')];var _0x2c6dea=_0x1c3fb4?_0x29e8dc[_0x0337('0x25')]:_0x53f4f4[_0x0337('0x24')]+_0x53f4f4[_0x0337('0x23')];var _0x8123e5;if(_0x2c6dea>=_0x25e752){_0x2c6dea=_0x25e752;_0x8123e5=0xc8;}else{_0x8123e5=0xce;}_0x16d697[_0x0337('0x22')](_0x8123e5);return _0x16d697[_0x0337('0x26')]('Content-Range',_0x126d2a+'-'+_0x2c6dea+'/'+_0x25e752)['json'](_0x29e8dc);}return null;};}function patchUpdates(_0x578f6f){return function(_0x4886c3){try{jsonpatch['apply'](_0x4886c3,_0x578f6f,!![]);}catch(_0x2bd82c){return BPromise[_0x0337('0x27')](_0x2bd82c);}return _0x4886c3['save']();};}function saveUpdates(_0x17c37d,_0x377573){return function(_0x351d7c){if(_0x351d7c){return _0x351d7c[_0x0337('0x28')](_0x17c37d)[_0x0337('0x29')](function(_0x45e86b){return _0x45e86b;});}return null;};}function removeEntity(_0x48406f,_0x319afe){return function(_0x2073d9){if(_0x2073d9){return _0x2073d9[_0x0337('0x2a')]()[_0x0337('0x29')](function(){var _0x2ac68c=_0x2073d9['get']({'plain':!![]});var _0x979a59=_0x0337('0x2b');return db[_0x0337('0x2c')][_0x0337('0x2a')]({'where':{'type':_0x979a59,'resourceId':_0x2ac68c['id']}})[_0x0337('0x29')](function(){return _0x2073d9;});})[_0x0337('0x29')](function(){_0x48406f[_0x0337('0x22')](0xcc)['end']();});}};}function handleEntityNotFound(_0x7e273f,_0x1fcc70){return function(_0x10506f){if(!_0x10506f){_0x7e273f['sendStatus'](0x194);}return _0x10506f;};}function handleError(_0x5b5698,_0x5ae668){_0x5ae668=_0x5ae668||0x1f4;return function(_0x3d2b5f){logger[_0x0337('0x2d')](_0x3d2b5f[_0x0337('0x2e')]);if(_0x3d2b5f['name']){delete _0x3d2b5f[_0x0337('0x2f')];}_0x5b5698['status'](_0x5ae668)['send'](_0x3d2b5f);};}exports[_0x0337('0x30')]=function(_0x509759,_0x48bb6c){var _0x5271d6={},_0x4f297c={},_0x4df8d9={'count':0x0,'rows':[]};var _0x3d7120=_[_0x0337('0x31')](db[_0x0337('0x32')][_0x0337('0x33')],function(_0x535042){return{'name':_0x535042['fieldName'],'type':_0x535042['type'][_0x0337('0x34')]};});_0x4f297c[_0x0337('0x35')]=_[_0x0337('0x31')](_0x3d7120,'name');_0x4f297c['query']=_[_0x0337('0x36')](_0x509759[_0x0337('0x37')]);_0x4f297c[_0x0337('0x38')]=_[_0x0337('0x39')](_0x4f297c[_0x0337('0x35')],_0x4f297c[_0x0337('0x37')]);_0x5271d6[_0x0337('0x3a')]=_['intersection'](_0x4f297c[_0x0337('0x35')],qs[_0x0337('0x3b')](_0x509759[_0x0337('0x37')]['fields']));_0x5271d6[_0x0337('0x3a')]=_0x5271d6[_0x0337('0x3a')][_0x0337('0x3c')]?_0x5271d6[_0x0337('0x3a')]:_0x4f297c[_0x0337('0x35')];if(!_0x509759[_0x0337('0x37')][_0x0337('0x3d')]('nolimit')){_0x5271d6[_0x0337('0x23')]=qs['limit'](_0x509759[_0x0337('0x37')][_0x0337('0x23')]);_0x5271d6[_0x0337('0x24')]=qs[_0x0337('0x24')](_0x509759[_0x0337('0x37')][_0x0337('0x24')]);}_0x5271d6['order']=qs[_0x0337('0x3e')](_0x509759[_0x0337('0x37')][_0x0337('0x3e')]);_0x5271d6[_0x0337('0x3f')]=qs['filters'](_['pick'](_0x509759['query'],_0x4f297c['filters']),_0x3d7120);if(_0x509759['query'][_0x0337('0x40')]){_0x5271d6[_0x0337('0x3f')]=_[_0x0337('0x41')](_0x5271d6[_0x0337('0x3f')],{'$or':_[_0x0337('0x31')](_0x3d7120,function(_0x1338ab){if(_0x1338ab['type']!=='VIRTUAL'){var _0x16f03a={};_0x16f03a[_0x1338ab[_0x0337('0x2f')]]={'$like':'%'+_0x509759['query']['filter']+'%'};return _0x16f03a;}})});}_0x5271d6=_[_0x0337('0x41')]({},_0x5271d6,_0x509759[_0x0337('0x42')]);var _0x2bb9ae={'where':_0x5271d6[_0x0337('0x3f')]};return db[_0x0337('0x32')][_0x0337('0x25')](_0x2bb9ae)['then'](function(_0x11e31c){_0x4df8d9['count']=_0x11e31c;if(_0x509759['query'][_0x0337('0x43')]){_0x5271d6[_0x0337('0x44')]=[{'all':!![]}];}return db[_0x0337('0x32')][_0x0337('0x45')](_0x5271d6);})[_0x0337('0x29')](function(_0x521424){_0x4df8d9['rows']=_0x521424;return _0x4df8d9;})[_0x0337('0x29')](respondWithFilteredResult(_0x48bb6c,_0x5271d6))['catch'](handleError(_0x48bb6c,null));};exports[_0x0337('0x46')]=function(_0x1c20fb,_0x301269){var _0x1044af={'raw':!![],'where':{'id':_0x1c20fb['params']['id']}},_0x42b8ec={};_0x42b8ec[_0x0337('0x35')]=_[_0x0337('0x36')](db['Plugin'][_0x0337('0x33')]);_0x42b8ec[_0x0337('0x37')]=_[_0x0337('0x36')](_0x1c20fb[_0x0337('0x37')]);_0x42b8ec[_0x0337('0x38')]=_[_0x0337('0x39')](_0x42b8ec[_0x0337('0x35')],_0x42b8ec['query']);_0x1044af[_0x0337('0x3a')]=_[_0x0337('0x39')](_0x42b8ec[_0x0337('0x35')],qs['fields'](_0x1c20fb[_0x0337('0x37')][_0x0337('0x3b')]));_0x1044af[_0x0337('0x3a')]=_0x1044af[_0x0337('0x3a')][_0x0337('0x3c')]?_0x1044af[_0x0337('0x3a')]:_0x42b8ec['model'];if(_0x1c20fb[_0x0337('0x37')][_0x0337('0x43')]){_0x1044af[_0x0337('0x44')]=[{'all':!![]}];}_0x1044af=_[_0x0337('0x41')]({},_0x1044af,_0x1c20fb['options']);return db[_0x0337('0x32')][_0x0337('0x47')](_0x1044af)[_0x0337('0x29')](handleEntityNotFound(_0x301269,null))[_0x0337('0x29')](respondWithResult(_0x301269,null))[_0x0337('0x48')](handleError(_0x301269,null));};exports['download']=function(_0x4fa048,_0x4a3bca,_0x453b06){return db[_0x0337('0x32')]['find']({'where':{'id':_0x4fa048['params']['id']},'attributes':['name',_0x0337('0x5')],'raw':!![]})[_0x0337('0x29')](handleEntityNotFound(_0x4a3bca,null))[_0x0337('0x29')](function(_0x23a18a){if(_0x23a18a){var _0x250ced=path[_0x0337('0x49')](config[_0x0337('0x4a')],_0x0337('0x4b'),util[_0x0337('0x4c')]('%s.zip',path[_0x0337('0x4d')](_0x23a18a[_0x0337('0x5')])));var _0x3bc40e=fs[_0x0337('0x4e')](_0x250ced);var _0x395139=archiver(_0x0337('0x4f'),{'zlib':{'level':0x9}});_0x395139['on'](_0x0337('0x50'),function(_0x5df2f9){if(_0x5df2f9[_0x0337('0x51')]==='ENOENT'){logger[_0x0337('0x2d')](_0x5df2f9);}else{throw new db[(_0x0337('0x52'))][(_0x0337('0x53'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');}});_0x395139['on'](_0x0337('0x2d'),function(_0x2e5922){throw new db[(_0x0337('0x52'))][(_0x0337('0x53'))](_0x0337('0x54'));});_0x395139[_0x0337('0x55')](_0x3bc40e);_0x395139['glob']('**/*',{'cwd':path['join'](config[_0x0337('0x4a')],'server/files/plugins',path[_0x0337('0x56')](_0x23a18a['path'])),'ignore':[path[_0x0337('0x49')](path['basename'](_0x23a18a['path']),_0x0337('0x57')),path[_0x0337('0x49')](path[_0x0337('0x4d')](_0x23a18a[_0x0337('0x5')]),'attachments/**/*')],'nodir':!![]})[_0x0337('0x58')]();_0x3bc40e['on'](_0x0337('0x59'),function(){if(!fs['existsSync'](_0x250ced)){throw new db[(_0x0337('0x52'))][(_0x0337('0x53'))](_0x0337('0x5a'));}return _0x4a3bca[_0x0337('0x5b')](_0x250ced,util[_0x0337('0x4c')]('%s.zip',path['basename'](_0x23a18a[_0x0337('0x5')])),function(_0x16a42c){if(_0x16a42c){throw new db['Sequelize']['Error'](_0x0337('0x5c'));}fs[_0x0337('0x5d')](_0x250ced);logger[_0x0337('0x5e')]('Download\x20completed');logger[_0x0337('0x5e')](_0x0337('0x5f'));});});}return null;})['catch'](handleError(_0x4a3bca,null));};exports[_0x0337('0x60')]=function(_0x92569f,_0xfe8e3b,_0x5eef40){var _0x2b642c=path[_0x0337('0x4d')](_0x92569f['file']['filename'],path[_0x0337('0x61')](_0x92569f[_0x0337('0x62')][_0x0337('0x63')]));var _0x3ea757=path['join'](config['root'],_0x0337('0x4b'),_0x92569f['file'][_0x0337('0x63')]);var _0x50e070=path[_0x0337('0x49')](config['root'],_0x0337('0x4b'),_0x2b642c);logger['info'](_0x0337('0x64'),_0x3ea757);logger[_0x0337('0x5e')]('Plugin\x20upload\x20destination:\x20%s',_0x50e070);try{fs[_0x0337('0x65')](_0x3ea757,parseInt(_0x0337('0x66'),0x8));extract(_0x3ea757,{'dir':_0x50e070},function(_0x8aa19e){if(_0x8aa19e){logger[_0x0337('0x2d')](_0x8aa19e);handleError(_0x8aa19e,!![]);};var _0x57ddc0=fs[_0x0337('0x67')](_0x50e070);if(_0x57ddc0[_0x0337('0x3c')]>0x1){removeReferences(_0x3ea757,_0x50e070);logger[_0x0337('0x2d')](_0x0337('0x68'));return _0x5eef40(new Error('Invalid\x20plugin\x20structure'));}var _0x162834=fs[_0x0337('0x69')](path[_0x0337('0x49')](_0x50e070,_0x57ddc0[0x0]));if(_0x162834[_0x0337('0x6a')]()){removeReferences(_0x3ea757,_0x50e070);logger[_0x0337('0x2d')]('Invalid\x20plugin\x20structure');return _0x5eef40(new Error(_0x0337('0x68')));}if(_0x162834[_0x0337('0x6b')]()){var _0x471a8e=fs[_0x0337('0x67')](path[_0x0337('0x49')](_0x50e070,_0x57ddc0[0x0]));if(_0x471a8e[_0x0337('0x3c')]===0x0){removeReferences(_0x3ea757,_0x50e070);logger[_0x0337('0x2d')](_0x0337('0x68'));return _0x5eef40(new Error(_0x0337('0x68')));}var _0x17371e=_0x471a8e[_0x0337('0x6c')](function(_0x585947){return _0x585947===_0x0337('0x6d');});if(!_0x17371e){return _0x5eef40(new Error(_0x0337('0x6e')));}var _0xc7cd70=fs[_0x0337('0x6f')](path['join'](_0x50e070,_0x57ddc0[0x0],'manifest.json'));var _0x2f2d75=JSON['parse'](_0xc7cd70);if(_0x0337('0x70')==typeof _0x2f2d75[_0x0337('0x2f')]){return _0x5eef40(new Error(_0x0337('0x71')));}if(_0x0337('0x70')==typeof _0x2f2d75[_0x0337('0x72')]){return _0x5eef40(new Error(_0x0337('0x73')));}if(_0x0337('0x70')==typeof _0x2f2d75[_0x0337('0x74')]){return _0x5eef40(new Error(_0x0337('0x75')));}if(_0x0337('0x70')==typeof _0x2f2d75[_0x0337('0x76')]){return _0x5eef40(new Error(_0x0337('0x77')));}if(_0x2f2d75['type']===_0x0337('0x78')){if(_0x0337('0x70')==typeof _0x2f2d75[_0x0337('0x76')][_0x0337('0x79')]){return _0x5eef40(new Error('Invalid\x20manifest:\x20views\x20missing'));}if(_0x0337('0x70')==typeof _0x2f2d75['parameters']['views'][_0x0337('0x7a')]&&_0x0337('0x70')==typeof _0x2f2d75['parameters'][_0x0337('0x79')][_0x0337('0x7b')]){return _0x5eef40(new Error(_0x0337('0x7c')));}}else if(_0x2f2d75[_0x0337('0x72')]===_0x0337('0x7d')){if(_0x0337('0x70')==typeof _0x2f2d75[_0x0337('0x76')][_0x0337('0x7e')]){return _0x5eef40(new Error(_0x0337('0x7f')));}if(_0x0337('0x70')==typeof _0x2f2d75['parameters']['scriptPath']){return _0x5eef40(new Error(_0x0337('0x80')));}}else{return _0x5eef40(new Error(_0x0337('0x81')));}var _0x4f60b9=_0x2f2d75['name'];var _0x455a41=_0x2f2d75['description'];var _0x3ea38b=_0x2f2d75[_0x0337('0x72')];var _0x4836fe=_0x2f2d75[_0x0337('0x82')]?_0x2f2d75['sidebar']:_0x0337('0x83');var _0x315c1f=_0x2f2d75[_0x0337('0x84')]?_0x2f2d75[_0x0337('0x84')]:'icon-apps';var _0x5301c8='';var _0x55cc6c='';var _0x435126='';var _0x26a9e8='';var _0x35d341=_0x2f2d75['version'];if(_0x3ea38b==='html'){if(_0x0337('0x70')!=typeof _0x2f2d75[_0x0337('0x76')][_0x0337('0x79')][_0x0337('0x7a')]){var _0x3612a1=_0x2f2d75[_0x0337('0x76')][_0x0337('0x79')][_0x0337('0x7a')];if(!/^(f|ht)tps?:\/\//i['test'](_0x3612a1)){_0x5301c8=path[_0x0337('0x49')](_0x0337('0x85'),_0x2b642c,_0x57ddc0[0x0],_0x3612a1);}else{_0x5301c8=_0x3612a1;}}else{logger[_0x0337('0x5e')]('Warning:\x20admin\x20view\x20not\x20specified');}if(_0x0337('0x70')!=typeof _0x2f2d75['parameters'][_0x0337('0x79')][_0x0337('0x7b')]){var _0x5b9620=_0x2f2d75[_0x0337('0x76')][_0x0337('0x79')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0x0337('0x86')](_0x5b9620)){_0x55cc6c=path['join']('plugins',_0x2b642c,_0x57ddc0[0x0],_0x5b9620);}else{_0x55cc6c=_0x5b9620;}}else{logger['info'](_0x0337('0x87'));}}else if(_0x3ea38b==='script'){_0x435126=_0x2f2d75[_0x0337('0x76')]['scriptName'];_0x26a9e8=_0x2f2d75[_0x0337('0x76')][_0x0337('0x88')];if(_0x0337('0x70')!=typeof _0x2f2d75[_0x0337('0x76')]['views']){if(_0x0337('0x70')!=typeof _0x2f2d75[_0x0337('0x76')][_0x0337('0x79')][_0x0337('0x7a')]){var _0x3612a1=_0x2f2d75[_0x0337('0x76')][_0x0337('0x79')][_0x0337('0x7a')];if(!/^(f|ht)tps?:\/\//i[_0x0337('0x86')](_0x3612a1)){_0x5301c8=path[_0x0337('0x49')](_0x0337('0x85'),_0x2b642c,_0x57ddc0[0x0],_0x3612a1);}else{_0x5301c8=_0x3612a1;}}if(_0x0337('0x70')!=typeof _0x2f2d75['parameters'][_0x0337('0x79')][_0x0337('0x7b')]){var _0x5b9620=_0x2f2d75[_0x0337('0x76')]['views'][_0x0337('0x7b')];if(!/^(f|ht)tps?:\/\//i[_0x0337('0x86')](_0x5b9620)){_0x55cc6c=path[_0x0337('0x49')](_0x0337('0x85'),_0x2b642c,_0x57ddc0[0x0],_0x5b9620);}else{_0x55cc6c=_0x5b9620;}}}}var _0x1e4a4e={'name':_0x4f60b9,'description':_0x455a41,'path':path['join'](_0x2b642c,_0x57ddc0[0x0]),'type':_0x3ea38b,'sidebar':_0x4836fe,'icon':_0x315c1f,'adminUrl':_0x5301c8,'agentUrl':_0x55cc6c,'scriptName':_0x435126,'scriptPath':_0x26a9e8,'version':_0x35d341};removeReferences(_0x3ea757,null);return db[_0x0337('0x32')]['create'](_0x1e4a4e)['then'](function(_0x3b7609){var _0x3891cf={'role':_0x92569f['body'][_0x0337('0x89')],'userProfileId':_0x92569f['body'][_0x0337('0x8a')]};if(!_0x3891cf)throw new Error(_0x0337('0x8b'));if(_0x3891cf[_0x0337('0x89')]===_0x0337('0x8c')){var _0x246a9f=_0x3b7609[_0x0337('0x8d')]({'plain':!![]});return db[_0x0337('0x8e')][_0x0337('0x47')]({'where':{'name':_0x0337('0x2b'),'userProfileId':_0x3891cf[_0x0337('0x8a')]},'raw':!![]})[_0x0337('0x29')](function(_0x899154){if(_0x899154&&_0x899154[_0x0337('0x8f')]===0x0){return db[_0x0337('0x2c')][_0x0337('0x90')]({'name':_0x246a9f['name'],'resourceId':_0x246a9f['id'],'type':_0x899154['name'],'sectionId':_0x899154['id']},{})['then'](function(){return _0x3b7609;});}else{return _0x3b7609;}})[_0x0337('0x48')](function(_0x393d28){logger[_0x0337('0x2d')](_0x0337('0x91'),_0x393d28);throw _0x393d28;});}return _0x3b7609;})[_0x0337('0x29')](respondWithResult(_0xfe8e3b,null))['catch'](handleError(_0xfe8e3b,null));}});}catch(_0x32b16a){_0xfe8e3b[_0x0337('0x22')](0x1f4)[_0x0337('0x92')](_0x32b16a);}};function removeReferences(_0x3d027a,_0xe60298){try{if(_0x3d027a){fs['unlinkSync'](_0x3d027a);logger[_0x0337('0x5e')](_0x0337('0x93'));}if(_0xe60298){rimraf(_0xe60298,function(){});logger[_0x0337('0x5e')](_0x0337('0x94'));}}catch(_0xfb7259){logger['error'](_0xfb7259);}}exports[_0x0337('0x28')]=function(_0x1d6b82,_0xf6dd9c,_0x47fd48){return db['Plugin']['find']({'where':{'id':_0x1d6b82[_0x0337('0x95')]['id']}})[_0x0337('0x29')](handleEntityNotFound(_0xf6dd9c,null))[_0x0337('0x29')](saveUpdates(_0x1d6b82[_0x0337('0x96')],null))[_0x0337('0x29')](respondWithResult(_0xf6dd9c,null))['catch'](handleError(_0xf6dd9c,null));};exports['delete']=function(_0x17c447,_0x50d018,_0x91256){return db[_0x0337('0x32')][_0x0337('0x47')]({'where':{'id':_0x17c447[_0x0337('0x95')]['id']}})[_0x0337('0x29')](function(_0x461ff2){if(_0x461ff2){return _0x461ff2[_0x0337('0x2a')]();}})['then'](function(_0x1e7c78){rimraf(path['join'](config[_0x0337('0x4a')],_0x0337('0x4b'),path[_0x0337('0x56')](_0x1e7c78[_0x0337('0x5')])),function(){});return _0x1e7c78;})[_0x0337('0x29')](handleEntityNotFound(_0x50d018,null))['then'](respondWithStatusCode(_0x50d018,null))['catch'](handleError(_0x50d018,null));};exports[_0x0337('0x97')]=function(_0x227717,_0x1c5afe,_0x2ddfc6){return BPromise[_0x0337('0x98')]()[_0x0337('0x29')](function(){if(!_0x227717[_0x0337('0x37')][_0x0337('0x5')]){throw new Error(_0x0337('0x99'));}if(!_0x227717[_0x0337('0x37')]['port']){throw new Error(_0x0337('0x9a'));}var _0x342505=_0x227717[_0x0337('0x37')][_0x0337('0x9b')]?_0x227717['query'][_0x0337('0x9b')]+':'+_0x227717[_0x0337('0x37')][_0x0337('0x9c')]:_0x0337('0x9d')+_0x227717['query'][_0x0337('0x9c')];var _0x2dbc1a=_0x227717[_0x0337('0x37')][_0x0337('0x9e')]?_0x227717[_0x0337('0x37')]['json']:!![];var _0x293cb2=_0x227717['query'][_0x0337('0x9f')]?_0x227717[_0x0337('0x37')][_0x0337('0x9f')]:null;var _0x1c8353={'method':_0x227717[_0x0337('0xa0')],'uri':util[_0x0337('0x4c')]('%s%s',_0x342505,_0x227717['query'][_0x0337('0x5')]),'json':_0x2dbc1a,'resolveWithFullResponse':!![],'encoding':_0x293cb2,'qs':_0x227717[_0x0337('0x37')]};if(_0x227717[_0x0337('0xa1')]){_0x1c8353[_0x0337('0xa1')]=_0x227717[_0x0337('0xa1')];if(_0x1c8353[_0x0337('0xa1')]['content-length']){delete _0x1c8353[_0x0337('0xa1')][_0x0337('0xa2')];}}if(_0x1c8353['headers']['content-type']){delete _0x1c8353[_0x0337('0xa1')]['content-type'];}return rp(_0x1c8353);})['then'](function(_0x62974a){if(_0x62974a){_0x1c5afe[_0x0337('0x26')](_0x62974a[_0x0337('0xa1')]);logger['info'](_0x62974a['body']);if(_['endsWith'](_0x227717[_0x0337('0x37')]['path'],_0x0337('0x5b'))&&_0x62974a[_0x0337('0xa3')]==0x1f4){return _0x1c5afe[_0x0337('0x21')](_0x62974a[_0x0337('0xa3')]);}else{return _0x1c5afe[_0x0337('0x22')](_0x62974a[_0x0337('0xa3')])[_0x0337('0x92')](_0x62974a[_0x0337('0x96')]);}}else{return _0x1c5afe['sendStatus'](0xc8);}})['catch'](handleError(_0x1c5afe,null));};exports['webhookPost']=function(_0x505455,_0x3e3dc5,_0x817638){return BPromise[_0x0337('0x98')]()['then'](function(){if(!_0x505455[_0x0337('0x37')][_0x0337('0x5')]){throw new Error(_0x0337('0x99'));}if(!_0x505455[_0x0337('0x37')][_0x0337('0x9c')]){throw new Error('\x27PORT\x27\x20parameter\x20not\x20specified');}var _0x1a48e7=_0x505455['query'][_0x0337('0x9b')]?_0x505455[_0x0337('0x37')][_0x0337('0x9b')]+':'+_0x505455[_0x0337('0x37')][_0x0337('0x9c')]:_0x0337('0x9d')+_0x505455[_0x0337('0x37')][_0x0337('0x9c')];var _0x444c47=_0x505455['query'][_0x0337('0x9e')]?_0x505455['query'][_0x0337('0x9e')]:!![];var _0x530af1=_0x505455[_0x0337('0x37')][_0x0337('0x9f')]?_0x505455[_0x0337('0x37')][_0x0337('0x9f')]:null;var _0x4236e9={'method':_0x505455['method'],'uri':util['format'](_0x0337('0xa4'),_0x1a48e7,_0x505455[_0x0337('0x37')][_0x0337('0x5')]),'json':_0x444c47,'resolveWithFullResponse':!![],'encoding':_0x530af1,'body':_0x505455[_0x0337('0x96')]};if(_0x505455['headers']){_0x4236e9['headers']=_0x505455[_0x0337('0xa1')];if(_0x4236e9[_0x0337('0xa1')][_0x0337('0xa2')]){delete _0x4236e9[_0x0337('0xa1')][_0x0337('0xa2')];}}if(_0x4236e9[_0x0337('0xa1')][_0x0337('0xa5')]){delete _0x4236e9['headers'][_0x0337('0xa5')];}return rp(_0x4236e9);})[_0x0337('0x29')](function(_0x44def6){if(_0x44def6){_0x3e3dc5['set'](_0x44def6[_0x0337('0xa1')]);logger[_0x0337('0x5e')](_0x44def6[_0x0337('0x96')]);return _0x3e3dc5[_0x0337('0x22')](_0x44def6['statusCode'])[_0x0337('0x92')](_0x44def6[_0x0337('0x96')]);}else{return _0x3e3dc5[_0x0337('0x21')](0xc8);}})[_0x0337('0x48')](handleError(_0x3e3dc5,null));};
\ No newline at end of file
+var _0xca22=['extract-zip','rimraf','archiver','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','redis','localhost','socket.io-emitter','./plugin.socket','register','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','then','destroy','Plugins','sendStatus','error','name','map','Plugin','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','rows','catch','show','params','keys','find','download','join','root','format','%s.zip','basename','createWriteStream','zip','warning','code','ENOENT','Sequelize','Error','Error\x20while\x20generating\x20the\x20zip\x20archive','glob','**/*','server/files/plugins','node_modules/**/*','finalize','close','existsSync','Plugin\x20not\x20found','Error\x20while\x20downloading\x20the\x20plugin','unlinkSync','info','Temporary\x20file\x20removed','upload','file','extname','filename','Plugin\x20upload\x20filepath:\x20%s','Plugin\x20upload\x20destination:\x20%s','chmodSync','0777','readdirSync','Invalid\x20plugin\x20structure','isFile','some','Plugin\x20manifest\x20missing','manifest.json','parse','Invalid\x20manifest:\x20name\x20missing','Invalid\x20manifest:\x20type\x20missing','version','Invalid\x20manifest:\x20parameters\x20missing','html','parameters','views','Invalid\x20manifest:\x20views\x20missing','admin','Invalid\x20manifest:\x20no\x20view\x20specified','scriptName','Invalid\x20manifest:\x20script\x20name\x20missing','scriptPath','Invalid\x20manifest:\x20script\x20path\x20missing','Invalid\x20manifest:\x20invalid\x20type','description','sidebar','icon','test','plugins','Warning:\x20admin\x20view\x20not\x20specified','agent','Warning:\x20agent\x20view\x20not\x20specified','create','body','role','Unable\x20to\x20retrieve\x20the\x20current\x20user','get','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','send','Extracted\x20folder\x20removed','update','delete','webhookGet','resolve','\x27PATH\x27\x20parameter\x20not\x20specified','\x27PORT\x27\x20parameter\x20not\x20specified','hostname','port','http://localhost:','encoding','method','%s%s','headers','content-length','content-type','set','endsWith','statusCode','webhookPost','eml-format','fast-json-patch','moment','mustache','util','path','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv'];(function(_0x8e8004,_0x2a4678){var _0xd4bf31=function(_0x39d468){while(--_0x39d468){_0x8e8004['push'](_0x8e8004['shift']());}};_0xd4bf31(++_0x2a4678);}(_0xca22,0x147));var _0x2ca2=function(_0x539029,_0x85fd4d){_0x539029=_0x539029-0x0;var _0x4c798d=_0xca22[_0x539029];return _0x4c798d;};'use strict';var emlformat=require(_0x2ca2('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x2ca2('0x1'));var rp=require('request-promise');var moment=require(_0x2ca2('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x2ca2('0x3'));var util=require(_0x2ca2('0x4'));var path=require(_0x2ca2('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x2ca2('0x6'));var fs=require('fs');var fs_extra=require(_0x2ca2('0x7'));var _=require(_0x2ca2('0x8'));var squel=require(_0x2ca2('0x9'));var crypto=require('crypto');var jsforce=require(_0x2ca2('0xa'));var deskjs=require(_0x2ca2('0xb'));var toCsv=require(_0x2ca2('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var extract=require(_0x2ca2('0xd'));var rimraf=require(_0x2ca2('0xe'));var archiver=require(_0x2ca2('0xf'));var Redis=require('ioredis');var authService=require(_0x2ca2('0x10'));var qs=require(_0x2ca2('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x2ca2('0x12'));var logger=require(_0x2ca2('0x13'))(_0x2ca2('0x14'));var utils=require('../../config/utils');var config=require(_0x2ca2('0x15'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config[_0x2ca2('0x16')]=_['defaults'](config[_0x2ca2('0x16')],{'host':_0x2ca2('0x17'),'port':0x18eb});var socket=require(_0x2ca2('0x18'))(new Redis(config[_0x2ca2('0x16')]));require(_0x2ca2('0x19'))[_0x2ca2('0x1a')](socket);function respondWithStatusCode(_0x413b14,_0x143444){_0x143444=_0x143444||0xcc;return function(_0x5e80f1){if(_0x5e80f1){return _0x413b14['sendStatus'](_0x143444);}return _0x413b14[_0x2ca2('0x1b')](_0x143444)[_0x2ca2('0x1c')]();};}function respondWithResult(_0x480c80,_0x9b9b02){_0x9b9b02=_0x9b9b02||0xc8;return function(_0x4020cd){if(_0x4020cd){return _0x480c80[_0x2ca2('0x1b')](_0x9b9b02)[_0x2ca2('0x1d')](_0x4020cd);}};}function respondWithFilteredResult(_0x5acc9d,_0x30ed9f){return function(_0x1c772d){if(_0x1c772d){var _0x4a6e2e=typeof _0x30ed9f[_0x2ca2('0x1e')]===_0x2ca2('0x1f')&&typeof _0x30ed9f[_0x2ca2('0x20')]===_0x2ca2('0x1f');var _0x59ab3c=_0x1c772d[_0x2ca2('0x21')];var _0x10634a=_0x4a6e2e?0x0:_0x30ed9f[_0x2ca2('0x1e')];var _0x34a4e1=_0x4a6e2e?_0x1c772d[_0x2ca2('0x21')]:_0x30ed9f[_0x2ca2('0x1e')]+_0x30ed9f[_0x2ca2('0x20')];var _0x141e57;if(_0x34a4e1>=_0x59ab3c){_0x34a4e1=_0x59ab3c;_0x141e57=0xc8;}else{_0x141e57=0xce;}_0x5acc9d[_0x2ca2('0x1b')](_0x141e57);return _0x5acc9d['set'](_0x2ca2('0x22'),_0x10634a+'-'+_0x34a4e1+'/'+_0x59ab3c)['json'](_0x1c772d);}return null;};}function patchUpdates(_0x570ccd){return function(_0x353962){try{jsonpatch[_0x2ca2('0x23')](_0x353962,_0x570ccd,!![]);}catch(_0x140c29){return BPromise[_0x2ca2('0x24')](_0x140c29);}return _0x353962[_0x2ca2('0x25')]();};}function saveUpdates(_0x5be6a9,_0x5c5afa){return function(_0x1d9910){if(_0x1d9910){return _0x1d9910['update'](_0x5be6a9)[_0x2ca2('0x26')](function(_0x2d744b){return _0x2d744b;});}return null;};}function removeEntity(_0x1bc82a,_0x23a806){return function(_0x2993ae){if(_0x2993ae){return _0x2993ae[_0x2ca2('0x27')]()[_0x2ca2('0x26')](function(){var _0x21d42d=_0x2993ae['get']({'plain':!![]});var _0x4900eb=_0x2ca2('0x28');return db['UserProfileResource'][_0x2ca2('0x27')]({'where':{'type':_0x4900eb,'resourceId':_0x21d42d['id']}})[_0x2ca2('0x26')](function(){return _0x2993ae;});})[_0x2ca2('0x26')](function(){_0x1bc82a[_0x2ca2('0x1b')](0xcc)[_0x2ca2('0x1c')]();});}};}function handleEntityNotFound(_0x12756b,_0x58596b){return function(_0x4f1044){if(!_0x4f1044){_0x12756b[_0x2ca2('0x29')](0x194);}return _0x4f1044;};}function handleError(_0x207afa,_0x80326d){_0x80326d=_0x80326d||0x1f4;return function(_0x4dc29a){logger[_0x2ca2('0x2a')](_0x4dc29a['stack']);if(_0x4dc29a[_0x2ca2('0x2b')]){delete _0x4dc29a[_0x2ca2('0x2b')];}_0x207afa[_0x2ca2('0x1b')](_0x80326d)['send'](_0x4dc29a);};}exports['index']=function(_0xfa484c,_0x40d056){var _0x3dc8e4={},_0x15718f={},_0x572ab9={'count':0x0,'rows':[]};var _0x215f9b=_[_0x2ca2('0x2c')](db[_0x2ca2('0x2d')][_0x2ca2('0x2e')],function(_0x13a1b5){return{'name':_0x13a1b5[_0x2ca2('0x2f')],'type':_0x13a1b5[_0x2ca2('0x30')][_0x2ca2('0x31')]};});_0x15718f[_0x2ca2('0x32')]=_[_0x2ca2('0x2c')](_0x215f9b,_0x2ca2('0x2b'));_0x15718f['query']=_['keys'](_0xfa484c[_0x2ca2('0x33')]);_0x15718f[_0x2ca2('0x34')]=_[_0x2ca2('0x35')](_0x15718f[_0x2ca2('0x32')],_0x15718f['query']);_0x3dc8e4[_0x2ca2('0x36')]=_[_0x2ca2('0x35')](_0x15718f[_0x2ca2('0x32')],qs[_0x2ca2('0x37')](_0xfa484c[_0x2ca2('0x33')][_0x2ca2('0x37')]));_0x3dc8e4[_0x2ca2('0x36')]=_0x3dc8e4['attributes'][_0x2ca2('0x38')]?_0x3dc8e4[_0x2ca2('0x36')]:_0x15718f[_0x2ca2('0x32')];if(!_0xfa484c[_0x2ca2('0x33')][_0x2ca2('0x39')](_0x2ca2('0x3a'))){_0x3dc8e4[_0x2ca2('0x20')]=qs[_0x2ca2('0x20')](_0xfa484c['query']['limit']);_0x3dc8e4[_0x2ca2('0x1e')]=qs[_0x2ca2('0x1e')](_0xfa484c[_0x2ca2('0x33')][_0x2ca2('0x1e')]);}_0x3dc8e4[_0x2ca2('0x3b')]=qs[_0x2ca2('0x3c')](_0xfa484c[_0x2ca2('0x33')][_0x2ca2('0x3c')]);_0x3dc8e4[_0x2ca2('0x3d')]=qs[_0x2ca2('0x34')](_[_0x2ca2('0x3e')](_0xfa484c['query'],_0x15718f[_0x2ca2('0x34')]),_0x215f9b);if(_0xfa484c[_0x2ca2('0x33')]['filter']){_0x3dc8e4[_0x2ca2('0x3d')]=_[_0x2ca2('0x3f')](_0x3dc8e4['where'],{'$or':_[_0x2ca2('0x2c')](_0x215f9b,function(_0x49c515){if(_0x49c515[_0x2ca2('0x30')]!==_0x2ca2('0x40')){var _0x538ee6={};_0x538ee6[_0x49c515['name']]={'$like':'%'+_0xfa484c[_0x2ca2('0x33')][_0x2ca2('0x41')]+'%'};return _0x538ee6;}})});}_0x3dc8e4=_['merge']({},_0x3dc8e4,_0xfa484c[_0x2ca2('0x42')]);var _0x58aa44={'where':_0x3dc8e4[_0x2ca2('0x3d')]};return db[_0x2ca2('0x2d')][_0x2ca2('0x21')](_0x58aa44)[_0x2ca2('0x26')](function(_0x340284){_0x572ab9[_0x2ca2('0x21')]=_0x340284;if(_0xfa484c['query'][_0x2ca2('0x43')]){_0x3dc8e4[_0x2ca2('0x44')]=[{'all':!![]}];}return db[_0x2ca2('0x2d')]['findAll'](_0x3dc8e4);})[_0x2ca2('0x26')](function(_0x48ea18){_0x572ab9[_0x2ca2('0x45')]=_0x48ea18;return _0x572ab9;})['then'](respondWithFilteredResult(_0x40d056,_0x3dc8e4))[_0x2ca2('0x46')](handleError(_0x40d056,null));};exports[_0x2ca2('0x47')]=function(_0x1ce176,_0x173486){var _0x49827e={'raw':!![],'where':{'id':_0x1ce176[_0x2ca2('0x48')]['id']}},_0x2c0a2b={};_0x2c0a2b[_0x2ca2('0x32')]=_[_0x2ca2('0x49')](db['Plugin'][_0x2ca2('0x2e')]);_0x2c0a2b['query']=_['keys'](_0x1ce176[_0x2ca2('0x33')]);_0x2c0a2b['filters']=_[_0x2ca2('0x35')](_0x2c0a2b[_0x2ca2('0x32')],_0x2c0a2b[_0x2ca2('0x33')]);_0x49827e['attributes']=_[_0x2ca2('0x35')](_0x2c0a2b[_0x2ca2('0x32')],qs[_0x2ca2('0x37')](_0x1ce176['query'][_0x2ca2('0x37')]));_0x49827e['attributes']=_0x49827e['attributes']['length']?_0x49827e[_0x2ca2('0x36')]:_0x2c0a2b[_0x2ca2('0x32')];if(_0x1ce176[_0x2ca2('0x33')]['includeAll']){_0x49827e[_0x2ca2('0x44')]=[{'all':!![]}];}_0x49827e=_['merge']({},_0x49827e,_0x1ce176[_0x2ca2('0x42')]);return db[_0x2ca2('0x2d')][_0x2ca2('0x4a')](_0x49827e)[_0x2ca2('0x26')](handleEntityNotFound(_0x173486,null))[_0x2ca2('0x26')](respondWithResult(_0x173486,null))[_0x2ca2('0x46')](handleError(_0x173486,null));};exports[_0x2ca2('0x4b')]=function(_0x3f11ad,_0x3d0935,_0x244749){return db[_0x2ca2('0x2d')][_0x2ca2('0x4a')]({'where':{'id':_0x3f11ad['params']['id']},'attributes':[_0x2ca2('0x2b'),_0x2ca2('0x5')],'raw':!![]})[_0x2ca2('0x26')](handleEntityNotFound(_0x3d0935,null))['then'](function(_0x4d1b29){if(_0x4d1b29){var _0x27fe74=path[_0x2ca2('0x4c')](config[_0x2ca2('0x4d')],'server/files/plugins',util[_0x2ca2('0x4e')](_0x2ca2('0x4f'),path[_0x2ca2('0x50')](_0x4d1b29[_0x2ca2('0x5')])));var _0x2f6e2e=fs[_0x2ca2('0x51')](_0x27fe74);var _0x5eab7d=archiver(_0x2ca2('0x52'),{'zlib':{'level':0x9}});_0x5eab7d['on'](_0x2ca2('0x53'),function(_0x5436a9){if(_0x5436a9[_0x2ca2('0x54')]===_0x2ca2('0x55')){logger[_0x2ca2('0x2a')](_0x5436a9);}else{throw new db[(_0x2ca2('0x56'))][(_0x2ca2('0x57'))]('Error\x20while\x20generating\x20the\x20zip\x20archive');}});_0x5eab7d['on'](_0x2ca2('0x2a'),function(_0x1559ff){throw new db[(_0x2ca2('0x56'))][(_0x2ca2('0x57'))](_0x2ca2('0x58'));});_0x5eab7d['pipe'](_0x2f6e2e);_0x5eab7d[_0x2ca2('0x59')](_0x2ca2('0x5a'),{'cwd':path[_0x2ca2('0x4c')](config[_0x2ca2('0x4d')],_0x2ca2('0x5b'),path['dirname'](_0x4d1b29[_0x2ca2('0x5')])),'ignore':[path[_0x2ca2('0x4c')](path[_0x2ca2('0x50')](_0x4d1b29['path']),_0x2ca2('0x5c')),path[_0x2ca2('0x4c')](path[_0x2ca2('0x50')](_0x4d1b29[_0x2ca2('0x5')]),'attachments/**/*')],'nodir':!![]})[_0x2ca2('0x5d')]();_0x2f6e2e['on'](_0x2ca2('0x5e'),function(){if(!fs[_0x2ca2('0x5f')](_0x27fe74)){throw new db[(_0x2ca2('0x56'))]['Error'](_0x2ca2('0x60'));}return _0x3d0935[_0x2ca2('0x4b')](_0x27fe74,util[_0x2ca2('0x4e')](_0x2ca2('0x4f'),path['basename'](_0x4d1b29['path'])),function(_0x1bf023){if(_0x1bf023){throw new db[(_0x2ca2('0x56'))][(_0x2ca2('0x57'))](_0x2ca2('0x61'));}fs[_0x2ca2('0x62')](_0x27fe74);logger[_0x2ca2('0x63')]('Download\x20completed');logger[_0x2ca2('0x63')](_0x2ca2('0x64'));});});}return null;})[_0x2ca2('0x46')](handleError(_0x3d0935,null));};exports[_0x2ca2('0x65')]=function(_0x4bf603,_0x29292a,_0x2b03c3){var _0x21ac2c=path[_0x2ca2('0x50')](_0x4bf603[_0x2ca2('0x66')]['filename'],path[_0x2ca2('0x67')](_0x4bf603['file'][_0x2ca2('0x68')]));var _0x2f8c48=path[_0x2ca2('0x4c')](config[_0x2ca2('0x4d')],_0x2ca2('0x5b'),_0x4bf603[_0x2ca2('0x66')][_0x2ca2('0x68')]);var _0x36fe2=path[_0x2ca2('0x4c')](config['root'],_0x2ca2('0x5b'),_0x21ac2c);logger[_0x2ca2('0x63')](_0x2ca2('0x69'),_0x2f8c48);logger[_0x2ca2('0x63')](_0x2ca2('0x6a'),_0x36fe2);try{fs[_0x2ca2('0x6b')](_0x2f8c48,parseInt(_0x2ca2('0x6c'),0x8));extract(_0x2f8c48,{'dir':_0x36fe2},function(_0x209899){if(_0x209899){logger[_0x2ca2('0x2a')](_0x209899);handleError(_0x209899,!![]);};var _0x773469=fs[_0x2ca2('0x6d')](_0x36fe2);if(_0x773469[_0x2ca2('0x38')]>0x1){removeReferences(_0x2f8c48,_0x36fe2);logger[_0x2ca2('0x2a')](_0x2ca2('0x6e'));return _0x2b03c3(new Error(_0x2ca2('0x6e')));}var _0x200799=fs['lstatSync'](path[_0x2ca2('0x4c')](_0x36fe2,_0x773469[0x0]));if(_0x200799[_0x2ca2('0x6f')]()){removeReferences(_0x2f8c48,_0x36fe2);logger[_0x2ca2('0x2a')](_0x2ca2('0x6e'));return _0x2b03c3(new Error(_0x2ca2('0x6e')));}if(_0x200799['isDirectory']()){var _0x19c6be=fs[_0x2ca2('0x6d')](path[_0x2ca2('0x4c')](_0x36fe2,_0x773469[0x0]));if(_0x19c6be['length']===0x0){removeReferences(_0x2f8c48,_0x36fe2);logger[_0x2ca2('0x2a')](_0x2ca2('0x6e'));return _0x2b03c3(new Error(_0x2ca2('0x6e')));}var _0x38ad83=_0x19c6be[_0x2ca2('0x70')](function(_0x107b0f){return _0x107b0f==='manifest.json';});if(!_0x38ad83){return _0x2b03c3(new Error(_0x2ca2('0x71')));}var _0x49d118=fs['readFileSync'](path[_0x2ca2('0x4c')](_0x36fe2,_0x773469[0x0],_0x2ca2('0x72')));var _0x515a24=JSON[_0x2ca2('0x73')](_0x49d118);if('undefined'==typeof _0x515a24[_0x2ca2('0x2b')]){return _0x2b03c3(new Error(_0x2ca2('0x74')));}if(_0x2ca2('0x1f')==typeof _0x515a24['type']){return _0x2b03c3(new Error(_0x2ca2('0x75')));}if(_0x2ca2('0x1f')==typeof _0x515a24[_0x2ca2('0x76')]){return _0x2b03c3(new Error('Invalid\x20manifest:\x20version\x20not\x20specified'));}if(_0x2ca2('0x1f')==typeof _0x515a24['parameters']){return _0x2b03c3(new Error(_0x2ca2('0x77')));}if(_0x515a24[_0x2ca2('0x30')]===_0x2ca2('0x78')){if(_0x2ca2('0x1f')==typeof _0x515a24[_0x2ca2('0x79')][_0x2ca2('0x7a')]){return _0x2b03c3(new Error(_0x2ca2('0x7b')));}if(_0x2ca2('0x1f')==typeof _0x515a24[_0x2ca2('0x79')][_0x2ca2('0x7a')][_0x2ca2('0x7c')]&&_0x2ca2('0x1f')==typeof _0x515a24['parameters']['views']['agent']){return _0x2b03c3(new Error(_0x2ca2('0x7d')));}}else if(_0x515a24['type']==='script'){if(_0x2ca2('0x1f')==typeof _0x515a24['parameters'][_0x2ca2('0x7e')]){return _0x2b03c3(new Error(_0x2ca2('0x7f')));}if(_0x2ca2('0x1f')==typeof _0x515a24[_0x2ca2('0x79')][_0x2ca2('0x80')]){return _0x2b03c3(new Error(_0x2ca2('0x81')));}}else{return _0x2b03c3(new Error(_0x2ca2('0x82')));}var _0x23b596=_0x515a24[_0x2ca2('0x2b')];var _0x49934d=_0x515a24[_0x2ca2('0x83')];var _0x4ccdf7=_0x515a24[_0x2ca2('0x30')];var _0x149984=_0x515a24[_0x2ca2('0x84')]?_0x515a24['sidebar']:'always';var _0x157617=_0x515a24[_0x2ca2('0x85')]?_0x515a24[_0x2ca2('0x85')]:'icon-apps';var _0x43a28d='';var _0x5652a5='';var _0x18537e='';var _0x4be838='';var _0x1f3786=_0x515a24[_0x2ca2('0x76')];if(_0x4ccdf7==='html'){if('undefined'!=typeof _0x515a24['parameters']['views']['admin']){var _0x4ec2ac=_0x515a24[_0x2ca2('0x79')][_0x2ca2('0x7a')][_0x2ca2('0x7c')];if(!/^(f|ht)tps?:\/\//i[_0x2ca2('0x86')](_0x4ec2ac)){_0x43a28d=path['join'](_0x2ca2('0x87'),_0x21ac2c,_0x773469[0x0],_0x4ec2ac);}else{_0x43a28d=_0x4ec2ac;}}else{logger['info'](_0x2ca2('0x88'));}if('undefined'!=typeof _0x515a24[_0x2ca2('0x79')]['views'][_0x2ca2('0x89')]){var _0x23880a=_0x515a24[_0x2ca2('0x79')][_0x2ca2('0x7a')]['agent'];if(!/^(f|ht)tps?:\/\//i[_0x2ca2('0x86')](_0x23880a)){_0x5652a5=path[_0x2ca2('0x4c')](_0x2ca2('0x87'),_0x21ac2c,_0x773469[0x0],_0x23880a);}else{_0x5652a5=_0x23880a;}}else{logger['info'](_0x2ca2('0x8a'));}}else if(_0x4ccdf7==='script'){_0x18537e=_0x515a24[_0x2ca2('0x79')]['scriptName'];_0x4be838=_0x515a24[_0x2ca2('0x79')][_0x2ca2('0x80')];if(_0x2ca2('0x1f')!=typeof _0x515a24[_0x2ca2('0x79')][_0x2ca2('0x7a')]){if('undefined'!=typeof _0x515a24[_0x2ca2('0x79')][_0x2ca2('0x7a')][_0x2ca2('0x7c')]){var _0x4ec2ac=_0x515a24['parameters']['views'][_0x2ca2('0x7c')];if(!/^(f|ht)tps?:\/\//i[_0x2ca2('0x86')](_0x4ec2ac)){_0x43a28d=path[_0x2ca2('0x4c')](_0x2ca2('0x87'),_0x21ac2c,_0x773469[0x0],_0x4ec2ac);}else{_0x43a28d=_0x4ec2ac;}}if(_0x2ca2('0x1f')!=typeof _0x515a24['parameters']['views'][_0x2ca2('0x89')]){var _0x23880a=_0x515a24[_0x2ca2('0x79')]['views']['agent'];if(!/^(f|ht)tps?:\/\//i[_0x2ca2('0x86')](_0x23880a)){_0x5652a5=path[_0x2ca2('0x4c')](_0x2ca2('0x87'),_0x21ac2c,_0x773469[0x0],_0x23880a);}else{_0x5652a5=_0x23880a;}}}}var _0x2497f5={'name':_0x23b596,'description':_0x49934d,'path':path[_0x2ca2('0x4c')](_0x21ac2c,_0x773469[0x0]),'type':_0x4ccdf7,'sidebar':_0x149984,'icon':_0x157617,'adminUrl':_0x43a28d,'agentUrl':_0x5652a5,'scriptName':_0x18537e,'scriptPath':_0x4be838,'version':_0x1f3786};removeReferences(_0x2f8c48,null);return db[_0x2ca2('0x2d')][_0x2ca2('0x8b')](_0x2497f5)[_0x2ca2('0x26')](function(_0x410716){var _0x2a69db={'role':_0x4bf603[_0x2ca2('0x8c')][_0x2ca2('0x8d')],'userProfileId':_0x4bf603[_0x2ca2('0x8c')]['userProfileId']};if(!_0x2a69db)throw new Error(_0x2ca2('0x8e'));if(_0x2a69db[_0x2ca2('0x8d')]==='user'){var _0x524e02=_0x410716[_0x2ca2('0x8f')]({'plain':!![]});return db[_0x2ca2('0x90')][_0x2ca2('0x4a')]({'where':{'name':_0x2ca2('0x28'),'userProfileId':_0x2a69db[_0x2ca2('0x91')]},'raw':!![]})['then'](function(_0x2652a2){if(_0x2652a2&&_0x2652a2[_0x2ca2('0x92')]===0x0){return db[_0x2ca2('0x93')][_0x2ca2('0x8b')]({'name':_0x524e02[_0x2ca2('0x2b')],'resourceId':_0x524e02['id'],'type':_0x2652a2['name'],'sectionId':_0x2652a2['id']},{})[_0x2ca2('0x26')](function(){return _0x410716;});}else{return _0x410716;}})[_0x2ca2('0x46')](function(_0x7cf5d6){logger[_0x2ca2('0x2a')](_0x2ca2('0x94'),_0x7cf5d6);throw _0x7cf5d6;});}return _0x410716;})[_0x2ca2('0x26')](respondWithResult(_0x29292a,null))[_0x2ca2('0x46')](handleError(_0x29292a,null));}});}catch(_0x2b02c3){_0x29292a[_0x2ca2('0x1b')](0x1f4)[_0x2ca2('0x95')](_0x2b02c3);}};function removeReferences(_0x95370e,_0x495555){try{if(_0x95370e){fs[_0x2ca2('0x62')](_0x95370e);logger[_0x2ca2('0x63')]('Zip\x20archive\x20removed');}if(_0x495555){rimraf(_0x495555,function(){});logger[_0x2ca2('0x63')](_0x2ca2('0x96'));}}catch(_0x4857d4){logger[_0x2ca2('0x2a')](_0x4857d4);}}exports[_0x2ca2('0x97')]=function(_0x40fb73,_0x146cb0,_0x4a5a18){return db['Plugin']['find']({'where':{'id':_0x40fb73['params']['id']}})[_0x2ca2('0x26')](handleEntityNotFound(_0x146cb0,null))[_0x2ca2('0x26')](saveUpdates(_0x40fb73[_0x2ca2('0x8c')],null))['then'](respondWithResult(_0x146cb0,null))['catch'](handleError(_0x146cb0,null));};exports[_0x2ca2('0x98')]=function(_0x206f35,_0x93338b,_0x5a4f57){return db[_0x2ca2('0x2d')]['find']({'where':{'id':_0x206f35[_0x2ca2('0x48')]['id']}})['then'](function(_0xdb0b80){if(_0xdb0b80){return _0xdb0b80['destroy']();}})[_0x2ca2('0x26')](function(_0x2c7d0f){rimraf(path[_0x2ca2('0x4c')](config['root'],'server/files/plugins',path['dirname'](_0x2c7d0f[_0x2ca2('0x5')])),function(){});return _0x2c7d0f;})['then'](handleEntityNotFound(_0x93338b,null))['then'](respondWithStatusCode(_0x93338b,null))[_0x2ca2('0x46')](handleError(_0x93338b,null));};exports[_0x2ca2('0x99')]=function(_0x2da129,_0x506bcb,_0x3036d1){return BPromise[_0x2ca2('0x9a')]()[_0x2ca2('0x26')](function(){if(!_0x2da129[_0x2ca2('0x33')]['path']){throw new Error(_0x2ca2('0x9b'));}if(!_0x2da129[_0x2ca2('0x33')]['port']){throw new Error(_0x2ca2('0x9c'));}var _0x1acdfe=_0x2da129[_0x2ca2('0x33')]['hostname']?_0x2da129[_0x2ca2('0x33')][_0x2ca2('0x9d')]+':'+_0x2da129[_0x2ca2('0x33')][_0x2ca2('0x9e')]:_0x2ca2('0x9f')+_0x2da129['query'][_0x2ca2('0x9e')];var _0x231614=_0x2da129[_0x2ca2('0x33')][_0x2ca2('0x1d')]?_0x2da129[_0x2ca2('0x33')][_0x2ca2('0x1d')]:!![];var _0x58c424=_0x2da129[_0x2ca2('0x33')][_0x2ca2('0xa0')]?_0x2da129[_0x2ca2('0x33')][_0x2ca2('0xa0')]:null;var _0x32b9f1={'method':_0x2da129[_0x2ca2('0xa1')],'uri':util['format'](_0x2ca2('0xa2'),_0x1acdfe,_0x2da129[_0x2ca2('0x33')][_0x2ca2('0x5')]),'json':_0x231614,'resolveWithFullResponse':!![],'encoding':_0x58c424,'qs':_0x2da129[_0x2ca2('0x33')]};if(_0x2da129[_0x2ca2('0xa3')]){_0x32b9f1['headers']=_0x2da129['headers'];if(_0x32b9f1[_0x2ca2('0xa3')][_0x2ca2('0xa4')]){delete _0x32b9f1[_0x2ca2('0xa3')][_0x2ca2('0xa4')];}}if(_0x32b9f1[_0x2ca2('0xa3')][_0x2ca2('0xa5')]){delete _0x32b9f1['headers']['content-type'];}return rp(_0x32b9f1);})[_0x2ca2('0x26')](function(_0x34b429){if(_0x34b429){_0x506bcb[_0x2ca2('0xa6')](_0x34b429[_0x2ca2('0xa3')]);logger[_0x2ca2('0x63')](_0x34b429['body']);if(_[_0x2ca2('0xa7')](_0x2da129['query'][_0x2ca2('0x5')],'download')&&_0x34b429[_0x2ca2('0xa8')]==0x1f4){return _0x506bcb[_0x2ca2('0x29')](_0x34b429[_0x2ca2('0xa8')]);}else{return _0x506bcb[_0x2ca2('0x1b')](_0x34b429['statusCode'])[_0x2ca2('0x95')](_0x34b429[_0x2ca2('0x8c')]);}}else{return _0x506bcb[_0x2ca2('0x29')](0xc8);}})[_0x2ca2('0x46')](handleError(_0x506bcb,null));};exports[_0x2ca2('0xa9')]=function(_0x861a98,_0x496fd7,_0x5d9c8d){return BPromise[_0x2ca2('0x9a')]()[_0x2ca2('0x26')](function(){if(!_0x861a98[_0x2ca2('0x33')][_0x2ca2('0x5')]){throw new Error(_0x2ca2('0x9b'));}if(!_0x861a98[_0x2ca2('0x33')][_0x2ca2('0x9e')]){throw new Error(_0x2ca2('0x9c'));}var _0x4944df=_0x861a98[_0x2ca2('0x33')][_0x2ca2('0x9d')]?_0x861a98[_0x2ca2('0x33')][_0x2ca2('0x9d')]+':'+_0x861a98[_0x2ca2('0x33')][_0x2ca2('0x9e')]:'http://localhost:'+_0x861a98['query'][_0x2ca2('0x9e')];var _0x14f8ec=_0x861a98['query'][_0x2ca2('0x1d')]?_0x861a98[_0x2ca2('0x33')][_0x2ca2('0x1d')]:!![];var _0x5c5e69=_0x861a98[_0x2ca2('0x33')][_0x2ca2('0xa0')]?_0x861a98[_0x2ca2('0x33')][_0x2ca2('0xa0')]:null;var _0x5368aa={'method':_0x861a98[_0x2ca2('0xa1')],'uri':util[_0x2ca2('0x4e')](_0x2ca2('0xa2'),_0x4944df,_0x861a98[_0x2ca2('0x33')]['path']),'json':_0x14f8ec,'resolveWithFullResponse':!![],'encoding':_0x5c5e69,'body':_0x861a98['body']};if(_0x861a98[_0x2ca2('0xa3')]){_0x5368aa[_0x2ca2('0xa3')]=_0x861a98['headers'];if(_0x5368aa[_0x2ca2('0xa3')][_0x2ca2('0xa4')]){delete _0x5368aa[_0x2ca2('0xa3')][_0x2ca2('0xa4')];}}if(_0x5368aa[_0x2ca2('0xa3')][_0x2ca2('0xa5')]){delete _0x5368aa[_0x2ca2('0xa3')][_0x2ca2('0xa5')];}return rp(_0x5368aa);})[_0x2ca2('0x26')](function(_0x18f09c){if(_0x18f09c){_0x496fd7[_0x2ca2('0xa6')](_0x18f09c['headers']);logger[_0x2ca2('0x63')](_0x18f09c[_0x2ca2('0x8c')]);return _0x496fd7[_0x2ca2('0x1b')](_0x18f09c[_0x2ca2('0xa8')])[_0x2ca2('0x95')](_0x18f09c[_0x2ca2('0x8c')]);}else{return _0x496fd7[_0x2ca2('0x29')](0xc8);}})['catch'](handleError(_0x496fd7,null));};
\ No newline at end of file
index 7c4a20d..1bae564 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x36bb=['events','../../mysqldb','Plugin','save','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x390856,_0x37b469){var _0x52a4e5=function(_0x66c693){while(--_0x66c693){_0x390856['push'](_0x390856['shift']());}};_0x52a4e5(++_0x37b469);}(_0x36bb,0xe6));var _0xb36b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x36bb[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0xb36b('0x0'));var Plugin=require(_0xb36b('0x1'))['db'][_0xb36b('0x2')];var PluginEvents=new EventEmitter();PluginEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xb36b('0x3'),'afterUpdate':_0xb36b('0x4'),'afterDestroy':_0xb36b('0x5')};function emitEvent(_0x4003b8){return function(_0x311671,_0x3d57d7,_0x2bcc68){PluginEvents[_0xb36b('0x6')](_0x4003b8+':'+_0x311671['id'],_0x311671);PluginEvents[_0xb36b('0x6')](_0x4003b8,_0x311671);_0x2bcc68(null);};}for(var e in events){if(events[_0xb36b('0x7')](e)){var event=events[e];Plugin[_0xb36b('0x8')](e,emitEvent(event));}}module[_0xb36b('0x9')]=PluginEvents;
\ No newline at end of file
+var _0xe08b=['events','Plugin','setMaxListeners','update','remove','emit','hasOwnProperty','hook','exports'];(function(_0x3ab9ee,_0x4a74b8){var _0x82ee88=function(_0x6ccc7e){while(--_0x6ccc7e){_0x3ab9ee['push'](_0x3ab9ee['shift']());}};_0x82ee88(++_0x4a74b8);}(_0xe08b,0x10e));var _0xbe08=function(_0x1e3c16,_0x372caa){_0x1e3c16=_0x1e3c16-0x0;var _0x47a0c9=_0xe08b[_0x1e3c16];return _0x47a0c9;};'use strict';var EventEmitter=require(_0xbe08('0x0'));var Plugin=require('../../mysqldb')['db'][_0xbe08('0x1')];var PluginEvents=new EventEmitter();PluginEvents[_0xbe08('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xbe08('0x3'),'afterDestroy':_0xbe08('0x4')};function emitEvent(_0x27b8f8){return function(_0x469522,_0x41edfb,_0x1ba7e6){PluginEvents[_0xbe08('0x5')](_0x27b8f8+':'+_0x469522['id'],_0x469522);PluginEvents[_0xbe08('0x5')](_0x27b8f8,_0x469522);_0x1ba7e6(null);};}for(var e in events){if(events[_0xbe08('0x6')](e)){var event=events[e];Plugin[_0xbe08('0x7')](e,emitEvent(event));}}module[_0xbe08('0x8')]=PluginEvents;
\ No newline at end of file
index 18bcf19..1eb28c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd845=['Plugin','lodash','util','../../config/logger','moment','bluebird','request-promise','path','../../config/environment','./plugin.attributes','exports','define'];(function(_0xd35da7,_0x4f5c5b){var _0x4d3548=function(_0x102670){while(--_0x102670){_0xd35da7['push'](_0xd35da7['shift']());}};_0x4d3548(++_0x4f5c5b);}(_0xd845,0x1e1));var _0x5d84=function(_0x174ef5,_0x256e8e){_0x174ef5=_0x174ef5-0x0;var _0x1cc379=_0xd845[_0x174ef5];return _0x1cc379;};'use strict';var _=require(_0x5d84('0x0'));var util=require(_0x5d84('0x1'));var logger=require(_0x5d84('0x2'))('api');var moment=require(_0x5d84('0x3'));var BPromise=require(_0x5d84('0x4'));var rp=require(_0x5d84('0x5'));var fs=require('fs');var path=require(_0x5d84('0x6'));var rimraf=require('rimraf');var config=require(_0x5d84('0x7'));var attributes=require(_0x5d84('0x8'));module[_0x5d84('0x9')]=function(_0x24eeb0,_0x2dd060){return _0x24eeb0[_0x5d84('0xa')](_0x5d84('0xb'),attributes,{'tableName':'plugins','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x02f4=['bluebird','request-promise','path','rimraf','../../config/environment','./plugin.attributes','exports','define','Plugin','plugins','lodash','util','api','moment'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x02f4,0xdc));var _0x402f=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x02f4[_0xfae23b];return _0x200640;};'use strict';var _=require(_0x402f('0x0'));var util=require(_0x402f('0x1'));var logger=require('../../config/logger')(_0x402f('0x2'));var moment=require(_0x402f('0x3'));var BPromise=require(_0x402f('0x4'));var rp=require(_0x402f('0x5'));var fs=require('fs');var path=require(_0x402f('0x6'));var rimraf=require(_0x402f('0x7'));var config=require(_0x402f('0x8'));var attributes=require(_0x402f('0x9'));module[_0x402f('0xa')]=function(_0x56d84f,_0x3257b6){return _0x56d84f[_0x402f('0xb')](_0x402f('0xc'),attributes,{'tableName':_0x402f('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4ac86c4..2ca2516 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x342e=['debug','Plugin,\x20%s,\x20%s,\x20%s','stringify','error','code','Plugin,\x20%s,\x20%s','message','result','catch','Plugin','create','body','options','raw','then','CreatePlugin','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','defaults','redis','localhost','socket.io-emitter','./plugin.socket','register','request','info','request\x20sent'];(function(_0x45bf9f,_0x399917){var _0x3e5d1e=function(_0x35f36a){while(--_0x35f36a){_0x45bf9f['push'](_0x45bf9f['shift']());}};_0x3e5d1e(++_0x399917);}(_0x342e,0xa8));var _0xe342=function(_0x1406ae,_0x292395){_0x1406ae=_0x1406ae-0x0;var _0x23a076=_0x342e[_0x1406ae];return _0x23a076;};'use strict';var _=require(_0xe342('0x0'));var util=require(_0xe342('0x1'));var moment=require(_0xe342('0x2'));var BPromise=require(_0xe342('0x3'));var rs=require(_0xe342('0x4'));var fs=require('fs');var Redis=require(_0xe342('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xe342('0x6'));var logger=require(_0xe342('0x7'))(_0xe342('0x8'));var config=require(_0xe342('0x9'));var jayson=require(_0xe342('0xa'));var client=jayson[_0xe342('0xb')][_0xe342('0xc')]({'port':0x232a});config['redis']=_[_0xe342('0xd')](config[_0xe342('0xe')],{'host':_0xe342('0xf'),'port':0x18eb});var socket=require(_0xe342('0x10'))(new Redis(config[_0xe342('0xe')]));require(_0xe342('0x11'))[_0xe342('0x12')](socket);function respondWithRpcPromise(_0x339f32,_0x5d5280,_0x32f7b0){return new BPromise(function(_0x10a325,_0x34dab6){return client[_0xe342('0x13')](_0x339f32,_0x32f7b0)['then'](function(_0x3831cf){logger[_0xe342('0x14')]('Plugin,\x20%s,\x20%s',_0x5d5280,_0xe342('0x15'));logger[_0xe342('0x16')](_0xe342('0x17'),_0x5d5280,_0xe342('0x15'),JSON[_0xe342('0x18')](_0x3831cf));if(_0x3831cf[_0xe342('0x19')]){if(_0x3831cf[_0xe342('0x19')][_0xe342('0x1a')]===0x1f4){logger[_0xe342('0x19')](_0xe342('0x1b'),_0x5d5280,_0x3831cf[_0xe342('0x19')][_0xe342('0x1c')]);return _0x34dab6(_0x3831cf[_0xe342('0x19')]['message']);}logger[_0xe342('0x19')](_0xe342('0x1b'),_0x5d5280,_0x3831cf[_0xe342('0x19')][_0xe342('0x1c')]);return _0x10a325(_0x3831cf[_0xe342('0x19')][_0xe342('0x1c')]);}else{logger[_0xe342('0x14')](_0xe342('0x1b'),_0x5d5280,'request\x20sent');_0x10a325(_0x3831cf[_0xe342('0x1d')][_0xe342('0x1c')]);}})[_0xe342('0x1e')](function(_0x598bf6){logger['error']('Plugin,\x20%s,\x20%s',_0x5d5280,_0x598bf6);_0x34dab6(_0x598bf6);});});}exports['CreatePlugin']=function(_0x230d0f){var _0x5ef6c9=this;return new Promise(function(_0x3df867,_0x2c9cda){return db[_0xe342('0x1f')][_0xe342('0x20')](_0x230d0f[_0xe342('0x21')],{'raw':_0x230d0f[_0xe342('0x22')]?_0x230d0f[_0xe342('0x22')][_0xe342('0x23')]===undefined?!![]:![]:!![]})[_0xe342('0x24')](function(_0x3d4625){logger['info'](_0xe342('0x25'),_0x230d0f);logger[_0xe342('0x16')](_0xe342('0x25'),_0x230d0f,JSON[_0xe342('0x18')](_0x3d4625));_0x3df867(_0x3d4625);})[_0xe342('0x1e')](function(_0x34a7a5){logger[_0xe342('0x19')](_0xe342('0x25'),_0x34a7a5['message'],_0x230d0f);_0x2c9cda(_0x5ef6c9['error'](0x1f4,_0x34a7a5[_0xe342('0x1c')]));});});};
\ No newline at end of file
+var _0x78ad=['Plugin','create','body','options','raw','CreatePlugin','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','register','request','info','Plugin,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result'];(function(_0x17b2d8,_0x4e9d71){var _0x2ff1cd=function(_0x129236){while(--_0x129236){_0x17b2d8['push'](_0x17b2d8['shift']());}};_0x2ff1cd(++_0x4e9d71);}(_0x78ad,0x64));var _0xd78a=function(_0x2a13cc,_0x2db2ff){_0x2a13cc=_0x2a13cc-0x0;var _0x5cd3f2=_0x78ad[_0x2a13cc];return _0x5cd3f2;};'use strict';var _=require('lodash');var util=require(_0xd78a('0x0'));var moment=require(_0xd78a('0x1'));var BPromise=require(_0xd78a('0x2'));var rs=require(_0xd78a('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd78a('0x4'))['db'];var utils=require(_0xd78a('0x5'));var logger=require(_0xd78a('0x6'))(_0xd78a('0x7'));var config=require(_0xd78a('0x8'));var jayson=require(_0xd78a('0x9'));var client=jayson[_0xd78a('0xa')][_0xd78a('0xb')]({'port':0x232a});config[_0xd78a('0xc')]=_['defaults'](config[_0xd78a('0xc')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd78a('0xc')]));require('./plugin.socket')[_0xd78a('0xd')](socket);function respondWithRpcPromise(_0xa40784,_0x30f03c,_0x41e7ee){return new BPromise(function(_0x5af81d,_0x5719c2){return client[_0xd78a('0xe')](_0xa40784,_0x41e7ee)['then'](function(_0x24cf16){logger[_0xd78a('0xf')](_0xd78a('0x10'),_0x30f03c,_0xd78a('0x11'));logger[_0xd78a('0x12')]('Plugin,\x20%s,\x20%s,\x20%s',_0x30f03c,_0xd78a('0x11'),JSON[_0xd78a('0x13')](_0x24cf16));if(_0x24cf16[_0xd78a('0x14')]){if(_0x24cf16[_0xd78a('0x14')][_0xd78a('0x15')]===0x1f4){logger['error'](_0xd78a('0x10'),_0x30f03c,_0x24cf16[_0xd78a('0x14')][_0xd78a('0x16')]);return _0x5719c2(_0x24cf16[_0xd78a('0x14')][_0xd78a('0x16')]);}logger['error'](_0xd78a('0x10'),_0x30f03c,_0x24cf16[_0xd78a('0x14')][_0xd78a('0x16')]);return _0x5af81d(_0x24cf16[_0xd78a('0x14')][_0xd78a('0x16')]);}else{logger[_0xd78a('0xf')](_0xd78a('0x10'),_0x30f03c,_0xd78a('0x11'));_0x5af81d(_0x24cf16[_0xd78a('0x17')]['message']);}})['catch'](function(_0x59b96c){logger[_0xd78a('0x14')](_0xd78a('0x10'),_0x30f03c,_0x59b96c);_0x5719c2(_0x59b96c);});});}exports['CreatePlugin']=function(_0x1100d4){var _0x444331=this;return new Promise(function(_0x5581f6,_0xba54e2){return db[_0xd78a('0x18')][_0xd78a('0x19')](_0x1100d4[_0xd78a('0x1a')],{'raw':_0x1100d4[_0xd78a('0x1b')]?_0x1100d4[_0xd78a('0x1b')][_0xd78a('0x1c')]===undefined?!![]:![]:!![]})['then'](function(_0x3fa80c){logger[_0xd78a('0xf')](_0xd78a('0x1d'),_0x1100d4);logger[_0xd78a('0x12')](_0xd78a('0x1d'),_0x1100d4,JSON['stringify'](_0x3fa80c));_0x5581f6(_0x3fa80c);})[_0xd78a('0x1e')](function(_0x59d800){logger[_0xd78a('0x14')](_0xd78a('0x1d'),_0x59d800[_0xd78a('0x16')],_0x1100d4);_0xba54e2(_0x444331[_0xd78a('0x14')](0x1f4,_0x59d800[_0xd78a('0x16')]));});});};
\ No newline at end of file
index 8b3183c..f5bfda9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd145=['remove','update','emit','removeListener','length','./plugin.events','save'];(function(_0x36127e,_0x1977c1){var _0x44c2e5=function(_0x271269){while(--_0x271269){_0x36127e['push'](_0x36127e['shift']());}};_0x44c2e5(++_0x1977c1);}(_0xd145,0x140));var _0x5d14=function(_0x137f9,_0x6cb698){_0x137f9=_0x137f9-0x0;var _0x27f894=_0xd145[_0x137f9];return _0x27f894;};'use strict';var PluginEvents=require(_0x5d14('0x0'));var events=[_0x5d14('0x1'),_0x5d14('0x2'),_0x5d14('0x3')];function createListener(_0x5057fe,_0x59c78d){return function(_0x42bcbb){_0x59c78d[_0x5d14('0x4')](_0x5057fe,_0x42bcbb);};}function removeListener(_0x3d3af3,_0x4eff9a){return function(){PluginEvents[_0x5d14('0x5')](_0x3d3af3,_0x4eff9a);};}exports['register']=function(_0x50e5a8){for(var _0x59b5f3=0x0,_0x52bf21=events[_0x5d14('0x6')];_0x59b5f3<_0x52bf21;_0x59b5f3++){var _0x27f37b=events[_0x59b5f3];var _0x401529=createListener('plugin:'+_0x27f37b,_0x50e5a8);PluginEvents['on'](_0x27f37b,_0x401529);}};
\ No newline at end of file
+var _0x252a=['update','emit','removeListener','./plugin.events'];(function(_0x3a441b,_0x288e89){var _0x2f16a4=function(_0x4e6b27){while(--_0x4e6b27){_0x3a441b['push'](_0x3a441b['shift']());}};_0x2f16a4(++_0x288e89);}(_0x252a,0xbb));var _0xa252=function(_0x89c32e,_0x253099){_0x89c32e=_0x89c32e-0x0;var _0x28760a=_0x252a[_0x89c32e];return _0x28760a;};'use strict';var PluginEvents=require(_0xa252('0x0'));var events=['save','remove',_0xa252('0x1')];function createListener(_0x662fab,_0x4ef567){return function(_0x234a4d){_0x4ef567[_0xa252('0x2')](_0x662fab,_0x234a4d);};}function removeListener(_0x18c4f5,_0x58a665){return function(){PluginEvents[_0xa252('0x3')](_0x18c4f5,_0x58a665);};}exports['register']=function(_0x33ac05){for(var _0x4c3456=0x0,_0x518d1e=events['length'];_0x4c3456<_0x518d1e;_0x4c3456++){var _0x21f89a=events[_0x4c3456];var _0x5118ed=createListener('plugin:'+_0x21f89a,_0x33ac05);PluginEvents['on'](_0x21f89a,_0x5118ed);}};
\ No newline at end of file
index 8b82b94..1d1e710 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(_0x435f80,_0x38acb1){var _0x114f41=function(_0x39bfca){while(--_0x39bfca){_0x435f80['push'](_0x435f80['shift']());}};_0x114f41(++_0x38acb1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x32d457,_0x1a39c9){_0x32d457=_0x32d457-0x0;var _0x338386=_0xa9e0[_0x32d457];return _0x338386;};'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(_0x14d7a7,_0x1eb3c2){var _0x45b7ae=function(_0x30f723){while(--_0x30f723){_0x14d7a7['push'](_0x14d7a7['shift']());}};_0x45b7ae(++_0x1eb3c2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0xa9e0[_0x19e35c];return _0x3e1fe8;};'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 1fd473e..23f13b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e54=['exec','bluebird','sendStatus','status','error','stack','name','send','info','index','list','then','express','motion2','length','catch','show','describe','params','body','script','join','../../files/plugins','chdir','start','dump','Missing\x20name\x20and/or\x20path','restart','stop','hasOwnProperty','Unknown\x20status','destroy','delete','lodash','api','path','child_process'];(function(_0x5a1b7b,_0x5685c0){var _0x520e4c=function(_0x55154b){while(--_0x55154b){_0x5a1b7b['push'](_0x5a1b7b['shift']());}};_0x520e4c(++_0x5685c0);}(_0x2e54,0x1dd));var _0x42e5=function(_0xa963c4,_0x204c8c){_0xa963c4=_0xa963c4-0x0;var _0xe19f5c=_0x2e54[_0xa963c4];return _0xe19f5c;};'use strict';var _=require(_0x42e5('0x0'));var pm2=require('../../config/pm2');var logger=require('../../config/logger')(_0x42e5('0x1'));var path=require(_0x42e5('0x2'));var exec=require(_0x42e5('0x3'))[_0x42e5('0x4')];var BPromise=require(_0x42e5('0x5'));function handleEntityNotFound(_0x153440,_0x42736b){return function(_0x528772){if(!_0x528772){_0x153440[_0x42e5('0x6')](0x194);;}return _0x528772;};}function respondWithResult(_0x455f48,_0x38cb1b){_0x38cb1b=_0x38cb1b||0xc8;return function(_0x4bed10){if(_0x4bed10){return _0x455f48[_0x42e5('0x7')](_0x38cb1b)['json'](_0x4bed10);}return null;};}function handleError(_0x335b92,_0x490b99){_0x490b99=_0x490b99||0x1f4;return function(_0x3a8494){logger[_0x42e5('0x8')](_0x3a8494[_0x42e5('0x9')]);if(_0x3a8494[_0x42e5('0xa')]){delete _0x3a8494[_0x42e5('0xa')];}_0x335b92[_0x42e5('0x7')](_0x490b99)[_0x42e5('0xb')](_0x3a8494);};}function execChildProcess(){return new BPromise(function(_0x2fa2f0,_0x197752){exec('npm\x20install',function(_0x456298,_0x28b3b3,_0x5d57f4){logger[_0x42e5('0xc')](_0x28b3b3);logger[_0x42e5('0xc')](_0x5d57f4);if(_0x456298){logger[_0x42e5('0x8')](_0x456298);return _0x197752(_0x456298);}return _0x2fa2f0(_0x28b3b3);});});}exports[_0x42e5('0xd')]=function(_0x144fb4,_0x1faafc){return pm2[_0x42e5('0xe')]()[_0x42e5('0xf')](function(_0x447648){if(_0x447648){var _0x23957f=_['reject'](_0x447648,function(_0x3b3dd9){return _0x3b3dd9[_0x42e5('0xa')]===_0x42e5('0x10')||_0x3b3dd9[_0x42e5('0xa')]===_0x42e5('0x11');});return{'rows':_0x23957f,'count':_0x23957f[_0x42e5('0x12')]};}return null;})[_0x42e5('0xf')](respondWithResult(_0x1faafc,null))[_0x42e5('0x13')](handleError(_0x1faafc,null));};exports[_0x42e5('0x14')]=function(_0x3c7b79,_0x22655f){return pm2[_0x42e5('0x15')](_0x3c7b79[_0x42e5('0x16')]['id'])[_0x42e5('0xf')](respondWithResult(_0x22655f,null))['then'](handleEntityNotFound(_0x22655f,null))[_0x42e5('0x13')](handleError(_0x22655f,null));};exports['create']=function(_0x5f4428,_0x14d16d){if(_0x5f4428[_0x42e5('0x17')]['name']&&_0x5f4428[_0x42e5('0x17')][_0x42e5('0x18')]){var _0x1c2169=path[_0x42e5('0x19')](__dirname,_0x42e5('0x1a'),_0x5f4428[_0x42e5('0x17')][_0x42e5('0x18')]);var _0x58eee5=process['cwd']();process[_0x42e5('0x1b')](path['dirname'](_0x1c2169));return execChildProcess()[_0x42e5('0xf')](function(_0x2e9574){process[_0x42e5('0x1b')](_0x58eee5);return pm2[_0x42e5('0x1c')]({'name':_0x5f4428[_0x42e5('0x17')]['name'],'script':_0x1c2169});})[_0x42e5('0xf')](function(_0xf29221){pm2[_0x42e5('0x1d')]();return _0xf29221[0x0];})[_0x42e5('0xf')](respondWithResult(_0x14d16d,0xc9))[_0x42e5('0x13')](handleError(_0x14d16d,null));}else{return _0x14d16d['status'](0x1f4)['send']({'message':_0x42e5('0x1e')});}};exports['update']=function(_0x56f812,_0x1b60be){if(_0x56f812['body']['id']){delete _0x56f812[_0x42e5('0x17')]['id'];}var _0x2d9e65={'online':_0x42e5('0x1f'),'stopped':_0x42e5('0x20')};if(_0x2d9e65[_0x42e5('0x21')](_0x56f812[_0x42e5('0x17')]['status'])){return pm2[_0x2d9e65[_0x56f812[_0x42e5('0x17')][_0x42e5('0x7')]]](_0x56f812[_0x42e5('0x16')]['id'])[_0x42e5('0xf')](respondWithResult(_0x1b60be,0xc8))[_0x42e5('0x13')](handleError(_0x1b60be,null));}else{return _0x1b60be[_0x42e5('0x7')](0x1f4)[_0x42e5('0xb')]({'message':_0x42e5('0x22')});}};exports[_0x42e5('0x23')]=function(_0x2ba9ef,_0x2c7542){if(_0x2ba9ef[_0x42e5('0x17')]['id']){delete _0x2ba9ef[_0x42e5('0x17')]['id'];}if(_0x2ba9ef['params']['id']){return pm2[_0x42e5('0x24')](_0x2ba9ef[_0x42e5('0x16')]['id'])[_0x42e5('0xf')](function(_0x156e73){pm2['dump']();return _0x156e73[0x0];})['then'](respondWithResult(_0x2c7542,null))[_0x42e5('0x13')](handleError(_0x2c7542,null));}else{return _0x2c7542['status'](0x1f4)[_0x42e5('0xb')]({'message':'Unknown\x20id'});}};
\ No newline at end of file
+var _0x3667=['lodash','../../config/pm2','../../config/logger','api','path','exec','bluebird','sendStatus','status','json','error','stack','name','send','npm\x20install','info','index','list','then','reject','express','motion2','length','catch','show','describe','create','body','join','script','cwd','chdir','dirname','start','dump','Missing\x20name\x20and/or\x20path','restart','hasOwnProperty','params','destroy','delete'];(function(_0x3cf8bb,_0x29e863){var _0x367eb5=function(_0x14cc2f){while(--_0x14cc2f){_0x3cf8bb['push'](_0x3cf8bb['shift']());}};_0x367eb5(++_0x29e863);}(_0x3667,0xcd));var _0x7366=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3667[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x7366('0x0'));var pm2=require(_0x7366('0x1'));var logger=require(_0x7366('0x2'))(_0x7366('0x3'));var path=require(_0x7366('0x4'));var exec=require('child_process')[_0x7366('0x5')];var BPromise=require(_0x7366('0x6'));function handleEntityNotFound(_0x4b32a7,_0x27726b){return function(_0x22bfc0){if(!_0x22bfc0){_0x4b32a7[_0x7366('0x7')](0x194);;}return _0x22bfc0;};}function respondWithResult(_0x1c0cf4,_0x101e3d){_0x101e3d=_0x101e3d||0xc8;return function(_0x589397){if(_0x589397){return _0x1c0cf4[_0x7366('0x8')](_0x101e3d)[_0x7366('0x9')](_0x589397);}return null;};}function handleError(_0x2dd32b,_0x26e9a9){_0x26e9a9=_0x26e9a9||0x1f4;return function(_0x171fe2){logger[_0x7366('0xa')](_0x171fe2[_0x7366('0xb')]);if(_0x171fe2[_0x7366('0xc')]){delete _0x171fe2[_0x7366('0xc')];}_0x2dd32b[_0x7366('0x8')](_0x26e9a9)[_0x7366('0xd')](_0x171fe2);};}function execChildProcess(){return new BPromise(function(_0x2d7e38,_0x57ea7f){exec(_0x7366('0xe'),function(_0x2694fc,_0xbcd488,_0x4718db){logger[_0x7366('0xf')](_0xbcd488);logger[_0x7366('0xf')](_0x4718db);if(_0x2694fc){logger[_0x7366('0xa')](_0x2694fc);return _0x57ea7f(_0x2694fc);}return _0x2d7e38(_0xbcd488);});});}exports[_0x7366('0x10')]=function(_0x37e47e,_0x1813b7){return pm2[_0x7366('0x11')]()[_0x7366('0x12')](function(_0x27500c){if(_0x27500c){var _0x22562f=_[_0x7366('0x13')](_0x27500c,function(_0x4dd111){return _0x4dd111[_0x7366('0xc')]===_0x7366('0x14')||_0x4dd111[_0x7366('0xc')]===_0x7366('0x15');});return{'rows':_0x22562f,'count':_0x22562f[_0x7366('0x16')]};}return null;})[_0x7366('0x12')](respondWithResult(_0x1813b7,null))[_0x7366('0x17')](handleError(_0x1813b7,null));};exports[_0x7366('0x18')]=function(_0x83e5d5,_0x41113f){return pm2[_0x7366('0x19')](_0x83e5d5['params']['id'])[_0x7366('0x12')](respondWithResult(_0x41113f,null))['then'](handleEntityNotFound(_0x41113f,null))[_0x7366('0x17')](handleError(_0x41113f,null));};exports[_0x7366('0x1a')]=function(_0x3f23cd,_0x52b43e){if(_0x3f23cd[_0x7366('0x1b')][_0x7366('0xc')]&&_0x3f23cd[_0x7366('0x1b')]['script']){var _0x16e038=path[_0x7366('0x1c')](__dirname,'../../files/plugins',_0x3f23cd[_0x7366('0x1b')][_0x7366('0x1d')]);var _0xaab659=process[_0x7366('0x1e')]();process[_0x7366('0x1f')](path[_0x7366('0x20')](_0x16e038));return execChildProcess()[_0x7366('0x12')](function(_0x22ed7e){process[_0x7366('0x1f')](_0xaab659);return pm2[_0x7366('0x21')]({'name':_0x3f23cd[_0x7366('0x1b')][_0x7366('0xc')],'script':_0x16e038});})[_0x7366('0x12')](function(_0x563b22){pm2[_0x7366('0x22')]();return _0x563b22[0x0];})['then'](respondWithResult(_0x52b43e,0xc9))[_0x7366('0x17')](handleError(_0x52b43e,null));}else{return _0x52b43e['status'](0x1f4)['send']({'message':_0x7366('0x23')});}};exports['update']=function(_0x254374,_0x4ac138){if(_0x254374[_0x7366('0x1b')]['id']){delete _0x254374[_0x7366('0x1b')]['id'];}var _0x5c37e2={'online':_0x7366('0x24'),'stopped':'stop'};if(_0x5c37e2[_0x7366('0x25')](_0x254374[_0x7366('0x1b')]['status'])){return pm2[_0x5c37e2[_0x254374[_0x7366('0x1b')]['status']]](_0x254374[_0x7366('0x26')]['id'])[_0x7366('0x12')](respondWithResult(_0x4ac138,0xc8))[_0x7366('0x17')](handleError(_0x4ac138,null));}else{return _0x4ac138[_0x7366('0x8')](0x1f4)[_0x7366('0xd')]({'message':'Unknown\x20status'});}};exports[_0x7366('0x27')]=function(_0x447807,_0x538d42){if(_0x447807['body']['id']){delete _0x447807['body']['id'];}if(_0x447807['params']['id']){return pm2[_0x7366('0x28')](_0x447807[_0x7366('0x26')]['id'])[_0x7366('0x12')](function(_0x15286a){pm2['dump']();return _0x15286a[0x0];})[_0x7366('0x12')](respondWithResult(_0x538d42,null))[_0x7366('0x17')](handleError(_0x538d42,null));}else{return _0x538d42[_0x7366('0x8')](0x1f4)[_0x7366('0xd')]({'message':'Unknown\x20id'});}};
\ No newline at end of file
index c601015..39e1dbf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x928b=['/agents','isAuthenticated','getAgents','/queues','express','Router','../../components/auth/service','get'];(function(_0x11bb15,_0x5aa1ed){var _0x2e5592=function(_0x266966){while(--_0x266966){_0x11bb15['push'](_0x11bb15['shift']());}};_0x2e5592(++_0x5aa1ed);}(_0x928b,0xe4));var _0xb928=function(_0x3a110e,_0x55df8f){_0x3a110e=_0x3a110e-0x0;var _0x6b863e=_0x928b[_0x3a110e];return _0x6b863e;};'use strict';var express=require(_0xb928('0x0'));var router=express[_0xb928('0x1')]();var auth=require(_0xb928('0x2'));var controller=require('./realtime.controller');router[_0xb928('0x3')](_0xb928('0x4'),auth[_0xb928('0x5')](),controller[_0xb928('0x6')]);router[_0xb928('0x3')](_0xb928('0x7'),auth[_0xb928('0x5')](),controller['getQueues']);module['exports']=router;
\ No newline at end of file
+var _0x74a5=['/agents','isAuthenticated','getAgents','/queues','express','get'];(function(_0x1908b0,_0x36298e){var _0x1fa869=function(_0x6c71fc){while(--_0x6c71fc){_0x1908b0['push'](_0x1908b0['shift']());}};_0x1fa869(++_0x36298e);}(_0x74a5,0x19c));var _0x574a=function(_0x3ad2ec,_0x3fbab6){_0x3ad2ec=_0x3ad2ec-0x0;var _0x25181b=_0x74a5[_0x3ad2ec];return _0x25181b;};'use strict';var express=require(_0x574a('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require('./realtime.controller');router[_0x574a('0x1')](_0x574a('0x2'),auth[_0x574a('0x3')](),controller[_0x574a('0x4')]);router[_0x574a('0x1')](_0x574a('0x5'),auth[_0x574a('0x3')](),controller['getQueues']);module['exports']=router;
\ No newline at end of file
index 5fb9a98..851e1f5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5aa=['Agents','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','result','catch','startCase','Queues','Unable\x20to\x20retrieve\x20voice\x20queues\x20channels','available','waiting','paused','voice','outbound','push','pTalking','originated','message','dialActive','Trunk','startProgressive','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','map','get','loggedInDb','talking','busy','merge','pick','filter','length','some','connectedlinenum','internal','find','getMembers','UserId','voiceStatus','agents','Queue','findAll','QueueId','online','idle','unknown','unavailable','ringing','faxPause','mailPause','openchannelPause','smsPause','voicePause','whatsappPause','every','pause','chatStatus','faxStatus','mailStatus','smsStatus','whatsappStatus','*pause','mail','chat','sms','openchannel','fax','whatsapp','toLowerCase','Invalid\x20channel','isArray','findOne','all','flatten','uniq','value','split','fields','includes','globalStatus','order','DESC','sort','pauseType','getAgents','lastLoginAt','lastPauseAt','address','chatPause','chatCapacity','openchannelCapacity','mailCapacity','smsCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','openchannelCurrentCapacity','mailCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','chatStatusTime','openchannelStatusTime','mailStatusTime','smsStatusTime','whatsappStatusTime','voiceStatusTime','queue','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording','routealias','resolve','query','channel','globalQueueFilter','User','rawAttributes','fieldName','type','key','role','agent','getOptions','raw','where','user','userProfileId','nolimit','UserProfile','getResources','findAndCountAll','rows','omit','globalStatusFilter','pauseTypeFilter','getQueues','QueueCampaigns','util','lodash','jayson/promise','../../components/parsers/qs','../../config/logger','api','client','http','offset','undefined','limit','count','status','set','Content-Range','json','error','stack','name','request','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)'];(function(_0x561098,_0xdd1933){var _0x42701a=function(_0x2ab50f){while(--_0x2ab50f){_0x561098['push'](_0x561098['shift']());}};_0x42701a(++_0xdd1933);}(_0xc5aa,0x1e6));var _0xac5a=function(_0x414851,_0x1c0559){_0x414851=_0x414851-0x0;var _0x511816=_0xc5aa[_0x414851];return _0x511816;};'use strict';var util=require(_0xac5a('0x0'));var _=require(_0xac5a('0x1'));var jayson=require(_0xac5a('0x2'));var qs=require(_0xac5a('0x3'));var logger=require(_0xac5a('0x4'))(_0xac5a('0x5'));var db=require('../../mysqldb')['db'];var amiClient=jayson[_0xac5a('0x6')][_0xac5a('0x7')]({'port':0x232a});var routingClient=jayson[_0xac5a('0x6')]['http']({'port':0x232c});function respondWithFilteredResult(_0x14b09c,_0x278b11){return function(_0x45e6d1){if(_0x45e6d1){var _0x1d9f71=typeof _0x278b11[_0xac5a('0x8')]===_0xac5a('0x9')&&typeof _0x278b11[_0xac5a('0xa')]===_0xac5a('0x9');var _0x6a4907=_0x45e6d1[_0xac5a('0xb')];var _0x165fc3=_0x1d9f71?0x0:_0x278b11['offset'];var _0x36bf20=_0x1d9f71?_0x45e6d1[_0xac5a('0xb')]:_0x278b11[_0xac5a('0x8')]+_0x278b11['limit'];var _0x119d0c;if(_0x36bf20>=_0x6a4907){_0x36bf20=_0x6a4907;_0x119d0c=0xc8;}else{_0x119d0c=0xce;}_0x14b09c[_0xac5a('0xc')](_0x119d0c);return _0x14b09c[_0xac5a('0xd')](_0xac5a('0xe'),_0x165fc3+'-'+_0x36bf20+'/'+_0x6a4907)[_0xac5a('0xf')](_0x45e6d1);}return null;};}function handleError(_0x26a421,_0x4fa6cf){_0x4fa6cf=_0x4fa6cf||0x1f4;return function(_0x4e5027){logger[_0xac5a('0x10')](_0x4e5027[_0xac5a('0x11')]);if(_0x4e5027[_0xac5a('0x12')]){delete _0x4e5027[_0xac5a('0x12')];}_0x26a421['status'](_0x4fa6cf)['send'](_0x4e5027);};}function getRealtimeAgents(){return new Promise(function(_0x387474,_0x310c30){return amiClient[_0xac5a('0x13')]('Agents',{})['then'](function(_0x583b8a){if(_0x583b8a[_0xac5a('0x10')])throw new Error(_0xac5a('0x14'));var _0x5bfb98=_0x583b8a['result'];return routingClient[_0xac5a('0x13')](_0xac5a('0x15'),{})[_0xac5a('0x16')](function(_0x1c81dd){if(_0x1c81dd[_0xac5a('0x10')])throw new Error(_0xac5a('0x17'));var _0x115ef3=_0x1c81dd[_0xac5a('0x18')];return _0x387474(_['merge']({},_0x5bfb98,_0x115ef3));});})[_0xac5a('0x19')](function(_0x566501){_0x310c30(_0x566501);});});}function getRealtimeQueues(_0x49bc45,_0x309a46){return new Promise(function(_0x5f40a3,_0x46a11c){var _0x222fd0=_0x309a46==='voice'?amiClient:routingClient;return _0x222fd0['request'](_[_0xac5a('0x1a')](_0x309a46)+_0xac5a('0x1b'),_0x49bc45)[_0xac5a('0x16')](function(_0x4f9548){if(_0x4f9548[_0xac5a('0x10')])throw new Error(util['format']('Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues',_0x309a46));return _0x5f40a3(_0x4f9548[_0xac5a('0x18')]);})[_0xac5a('0x19')](function(_0x21b074){_0x46a11c(_0x21b074);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x537c95,_0x33dfc1){return amiClient[_0xac5a('0x13')]('VoiceQueuesChannels',{})[_0xac5a('0x16')](function(_0x2d0e17){if(_0x2d0e17['error'])throw new Error(_0xac5a('0x1c'));return _0x537c95(_0x2d0e17[_0xac5a('0x18')]);})[_0xac5a('0x19')](function(_0x358a3a){_0x33dfc1(_0x358a3a);});});}function initializeQueues(_0x2f1100,_0x1533fa,_0x9de8ee,_0x2853ed){var _0x219a1a=['loggedIn',_0xac5a('0x1d'),_0xac5a('0x1e'),'talking',_0xac5a('0x1f')];if(_0x9de8ee===_0xac5a('0x20')&&_0x2853ed===_0xac5a('0x21')){_0x219a1a[_0xac5a('0x22')](_0xac5a('0x23'),_0xac5a('0x24'),_0xac5a('0x25'),_0xac5a('0x26'),'dialMethod',_0xac5a('0x27'),'startPredictive',_0xac5a('0x28'),_0xac5a('0x29'),_0xac5a('0x2a'),_0xac5a('0x2b'),_0xac5a('0x2c'),_0xac5a('0x2d'),_0xac5a('0x2e'),_0xac5a('0x2f'),_0xac5a('0x30'),_0xac5a('0x31'),_0xac5a('0x32'),_0xac5a('0x33'),_0xac5a('0x34'),_0xac5a('0x35'),_0xac5a('0x36'));}return _0x2f1100[_0xac5a('0x37')](function(_0x1077cf){var _0x16a433=_0x1077cf[_0xac5a('0x38')]({'plain':!![]});_0x16a433['agents']=[];_0x16a433[_0xac5a('0x1f')]=0x0;_0x16a433[_0xac5a('0x39')]=0x0;_0x16a433['loggedIn']=0x0;_0x16a433[_0xac5a('0x1d')]=0x0;_0x16a433[_0xac5a('0x1e')]=0x0;if(_0x9de8ee===_0xac5a('0x20')){_0x16a433[_0xac5a('0x3a')]=0x0;_0x16a433[_0xac5a('0x3b')]=0x0;if(_0x2853ed===_0xac5a('0x21')){_0x16a433[_0xac5a('0x23')]=0x0;_0x16a433['originated']=0x0;}}var _0x4cd2ce=_['find'](_0x1533fa,['id',_0x16a433['id']]);if(_0x4cd2ce)_[_0xac5a('0x3c')](_0x16a433,_[_0xac5a('0x3d')](_0x4cd2ce,_0x219a1a));return _0x16a433;});}function updateAgentVoiceStatus(_0x40f25e,_0x361618,_0x267904){var _0x221091=_[_0xac5a('0x3e')](_0x267904,['queue',_0x361618['name']]);if(_0x221091[_0xac5a('0x3f')]===0x0)return _0x40f25e[_0xac5a('0x3b')]=!![];if(_[_0xac5a('0x40')](_0x221091,[_0xac5a('0x41'),_0x40f25e[_0xac5a('0x42')]['toString']()]))return _0x40f25e[_0xac5a('0x3a')]=!![];if(!_0x40f25e[_0xac5a('0x3a')])return _0x40f25e[_0xac5a('0x3b')]=!![];}function getVoiceQueueAgents(_0x1818e7,_0x48531f,_0x59c31d,_0x5a434c){var _0x17fd5f=_[_0xac5a('0x43')](_0x48531f,['id',_0x1818e7['id']]);if(!_0x17fd5f)return _0x1818e7;return _0x17fd5f[_0xac5a('0x44')]({'raw':!![]})[_0xac5a('0x16')](function(_0x19bda5){for(var _0x3b8e19=0x0;_0x3b8e19<_0x19bda5[_0xac5a('0x3f')];_0x3b8e19++){var _0x32a63d=_[_0xac5a('0x43')](_0x59c31d,['id',_0x19bda5[_0x3b8e19]['UserId']]);if(!_0x32a63d){_0x32a63d={'id':_0x19bda5[_0x3b8e19][_0xac5a('0x45')],'name':_0x19bda5[_0x3b8e19]['UserId'],'accountcode':'','online':![]};}var _0x401e91={'id':_0x32a63d['id'],'name':_0x32a63d[_0xac5a('0x12')],'internal':_0x32a63d['accountcode'],'online':Boolean(_0x32a63d['online']),'paused':Boolean(_0x19bda5[_0x3b8e19]['paused'])};if(_0x32a63d[_0xac5a('0x46')]===_0xac5a('0x3a'))updateAgentVoiceStatus(_0x401e91,_0x1818e7,_0x5a434c);if(_0x401e91['online'])_0x1818e7[_0xac5a('0x39')]++;if(_0x401e91[_0xac5a('0x3b')])_0x1818e7['busy']++;if(_0x401e91[_0xac5a('0x1f')]&&!_0x401e91['busy']&&!_0x401e91[_0xac5a('0x3a')])_0x1818e7[_0xac5a('0x1f')]++;_0x1818e7[_0xac5a('0x47')][_0xac5a('0x22')](_0x401e91);}return _0x1818e7;});}function getQueueAgents(_0x27e597,_0x38f930,_0x3712de){var _0x47dd4f='User'+_[_0xac5a('0x1a')](_0x3712de)+_0xac5a('0x48');var _0x46039f=_0x3712de+'Pause';return db[_0x47dd4f][_0xac5a('0x49')]({'where':{[_[_0xac5a('0x1a')](_0x3712de)+_0xac5a('0x4a')]:_0x27e597['id']},'raw':!![]})[_0xac5a('0x16')](function(_0x5cf061){for(var _0x2a7bf3=0x0;_0x2a7bf3<_0x5cf061['length'];_0x2a7bf3++){var _0x49e387=_[_0xac5a('0x43')](_0x38f930,['id',_0x5cf061[_0x2a7bf3][_0xac5a('0x45')]]);if(!_0x49e387){_0x49e387={'id':_0x5cf061[_0x2a7bf3]['UserId'],'name':_0x5cf061[_0x2a7bf3][_0xac5a('0x45')],'online':![],['pauseField']:![]};}var _0x22090f={'id':_0x49e387['id'],'name':_0x49e387[_0xac5a('0x12')],'online':Boolean(_0x49e387[_0xac5a('0x4b')]),'paused':Boolean(_0x49e387[_0x46039f])};if(_0x22090f['online'])_0x27e597[_0xac5a('0x39')]++;_0x27e597[_0xac5a('0x47')][_0xac5a('0x22')](_0x22090f);}return _0x27e597;});}function isIdle(_0x3541b2){return _0x3541b2===_0xac5a('0x4c')||_0x3541b2===_0xac5a('0x4d')||_0x3541b2===_0xac5a('0x4e')||_0x3541b2===_0xac5a('0x4f')||_['isNil'](_0x3541b2);}function isAgentPaused(_0x132dd1,_0x3f277d){var _0x39cb8f=[_0x132dd1['chatPause'],_0x132dd1[_0xac5a('0x50')],_0x132dd1[_0xac5a('0x51')],_0x132dd1[_0xac5a('0x52')],_0x132dd1[_0xac5a('0x53')],_0x132dd1[_0xac5a('0x54')],_0x132dd1[_0xac5a('0x55')]];if(!_0x3f277d)return _[_0xac5a('0x56')](_0x39cb8f);var _0x147204=_[_0xac5a('0x3e')](_0x39cb8f);return _0x147204['length']>0x0&&_0x147204[_0xac5a('0x3f')]<_0x39cb8f[_0xac5a('0x3f')]?!![]:![];}function isAgentIdle(_0x1e2683){if(_0x1e2683[_0xac5a('0x46')]!=='idle'&&_0x1e2683[_0xac5a('0x54')]){_0x1e2683[_0xac5a('0x46')]=_0xac5a('0x57');return![];}return _[_0xac5a('0x56')]([_0x1e2683[_0xac5a('0x58')],_0x1e2683[_0xac5a('0x59')],_0x1e2683[_0xac5a('0x5a')],_0x1e2683['openchannelStatus'],_0x1e2683[_0xac5a('0x5b')],_0x1e2683[_0xac5a('0x46')],_0x1e2683[_0xac5a('0x5c')]],isIdle);}function getAgentStatus(_0x3316ff){var _0x1cfcea=_0xac5a('0x4d');if(isAgentPaused(_0x3316ff))_0x1cfcea=_0xac5a('0x57');else if(isAgentPaused(_0x3316ff,!![]))_0x1cfcea=_0xac5a('0x5d');else if(isAgentIdle(_0x3316ff))_0x1cfcea='idle';else _0x1cfcea=_0xac5a('0x3b');return _0x1cfcea;}function validateChannel(_0x1a79ef){var _0x2a04f5=[_0xac5a('0x5e'),_0xac5a('0x5f'),_0xac5a('0x60'),_0xac5a('0x61'),_0xac5a('0x62'),_0xac5a('0x63'),_0xac5a('0x20')];if(!_['includes'](_0x2a04f5,_0x1a79ef[_0xac5a('0x64')]()))throw new Error(_0xac5a('0x65'));return _0x1a79ef[_0xac5a('0x64')]();}function getFilteredAgentIds(_0x842d4a,_0x4cdbcb){var _0x368efd=_[_0xac5a('0x66')](_0x842d4a)?_0x842d4a:[_0x842d4a];var _0x267116=_[_0xac5a('0x37')](_0x368efd,function(_0x2c9cd8){return db[_0x4cdbcb][_0xac5a('0x67')]({'where':{'name':_0x2c9cd8}})[_0xac5a('0x16')](function(_0x25267c){if(!_0x25267c)return[];return _0x25267c['getAgents']({'attributes':['id'],'raw':!![]});});});return Promise[_0xac5a('0x68')](_0x267116)[_0xac5a('0x16')](function(_0x14e9d6){var _0x5b0693=_(_0x14e9d6)[_0xac5a('0x69')]()[_0xac5a('0x37')]('id')[_0xac5a('0x6a')]()[_0xac5a('0x6b')]();return _0x5b0693;});}function getUpdatedSortOptions(_0x414649){var _0x25d760={'fields':[],'order':null};var _0x499d7b=_0x414649[_0xac5a('0x6c')](',');_0x25d760[_0xac5a('0x6d')]=_[_0xac5a('0x3e')](_0x499d7b,function(_0xaeb3f1){if(!_0xaeb3f1[_0xac5a('0x6e')](_0xac5a('0x6f')))return!![];_0x25d760[_0xac5a('0x70')]=_['startsWith'](_0xaeb3f1,'-')?_0xac5a('0x71'):'ASC';return![];});return _0x25d760;}function orderAgentsByStatus(_0x1408fa,_0x2b4058){return _0x1408fa[_0xac5a('0x72')](function(_0xcfe028,_0x2d005e){if(_0xcfe028[_0xac5a('0x6f')]===_0x2d005e[_0xac5a('0x6f')]&&_0xcfe028['globalStatus']===_0xac5a('0x57')){if(_0x2b4058===_0xac5a('0x71'))return(_0xcfe028[_0xac5a('0x73')]||'')<(_0x2d005e[_0xac5a('0x73')]||'')?0x1:-0x1;return _0xcfe028[_0xac5a('0x73')]<_0x2d005e[_0xac5a('0x73')]?-0x1:0x1;}else{if(_0x2b4058==='DESC')return _0xcfe028[_0xac5a('0x6f')]<_0x2d005e[_0xac5a('0x6f')]?0x1:-0x1;return _0xcfe028[_0xac5a('0x6f')]<_0x2d005e[_0xac5a('0x6f')]?-0x1:0x1;}});}exports[_0xac5a('0x74')]=function(_0x39bff1,_0xa9ca0e){var _0x3f0602={'count':0x0,'rows':[]},_0x4f3429={},_0x203356,_0x3297df,_0x17df81,_0x13bc19,_0x888828=['userpic',_0xac5a('0x4b'),_0xac5a('0x75'),_0xac5a('0x76'),'pauseType',_0xac5a('0x76'),_0xac5a('0x42'),_0xac5a('0x77'),_0xac5a('0x78'),_0xac5a('0x52'),_0xac5a('0x51'),'smsPause',_0xac5a('0x55'),_0xac5a('0x50'),'voicePause',_0xac5a('0x79'),_0xac5a('0x7a'),_0xac5a('0x7b'),_0xac5a('0x7c'),_0xac5a('0x7d'),_0xac5a('0x7e'),_0xac5a('0x7f'),_0xac5a('0x80'),_0xac5a('0x81'),_0xac5a('0x82'),_0xac5a('0x83'),_0xac5a('0x84'),'chatStatus','openchannelStatus','mailStatus',_0xac5a('0x5b'),_0xac5a('0x5c'),_0xac5a('0x59'),_0xac5a('0x46'),_0xac5a('0x85'),_0xac5a('0x86'),_0xac5a('0x87'),_0xac5a('0x88'),_0xac5a('0x89'),'faxStatusTime',_0xac5a('0x8a'),_0xac5a('0x8b'),'destconnectedlinenum','screenrecording',_0xac5a('0x8c'),_0xac5a('0x8d'),_0xac5a('0x8e')],_0x4d44af=[_0xac5a('0x78'),_0xac5a('0x52'),_0xac5a('0x51'),_0xac5a('0x53'),_0xac5a('0x55'),_0xac5a('0x50'),'voicePause',_0xac5a('0x4b')];Promise[_0xac5a('0x8f')]()[_0xac5a('0x16')](function(){if(_0x39bff1[_0xac5a('0x90')][_0xac5a('0x91')])_0x203356=validateChannel(_0x39bff1[_0xac5a('0x90')]['channel']);if(!_0x39bff1[_0xac5a('0x90')]['sort']||!_0x39bff1['query'][_0xac5a('0x72')]['includes'](_0xac5a('0x6f')))return;var _0x31c89a=getUpdatedSortOptions(_0x39bff1[_0xac5a('0x90')]['sort']);_0x39bff1[_0xac5a('0x90')]['sort']=_0x31c89a[_0xac5a('0x6d')]['join'](',');_0x3297df=_0x31c89a[_0xac5a('0x70')];})[_0xac5a('0x16')](function(){if(!_0x39bff1[_0xac5a('0x90')][_0xac5a('0x92')])return[];var _0x1c215b=_[_0xac5a('0x1a')](_0x203356)+'Queue';return getFilteredAgentIds(_0x39bff1['query'][_0xac5a('0x92')],_0x1c215b);})[_0xac5a('0x16')](function(_0x98e27b){var _0x324a02=_[_0xac5a('0x37')](db[_0xac5a('0x93')][_0xac5a('0x94')],function(_0x183582){return{'name':_0x183582[_0xac5a('0x95')],'type':_0x183582[_0xac5a('0x96')][_0xac5a('0x97')]};});_0x39bff1[_0xac5a('0x90')][_0xac5a('0x98')]=_0xac5a('0x99');_0x39bff1[_0xac5a('0x90')][_0xac5a('0x4b')]=!![];_0x4f3429=qs[_0xac5a('0x9a')](_0x324a02,_0x39bff1);_0x4f3429[_0xac5a('0x9b')]=!![];if(!_['isEmpty'](_0x98e27b)){_0x4f3429[_0xac5a('0x9c')]=_['merge'](_0x4f3429[_0xac5a('0x9c')],{'$and':[{'id':{'$in':_0x98e27b}}]});}else if(!_['isEmpty'](_0x39bff1[_0xac5a('0x90')][_0xac5a('0x92')])){return _0x3f0602;}if(_0x39bff1['user'][_0xac5a('0x98')]===_0xac5a('0x9d')){var _0x5cad2d={'params':{'id':_0x39bff1[_0xac5a('0x9d')][_0xac5a('0x9e')]},'query':{'section':'Agents','role':_0xac5a('0x99'),'online':!![],'nolimit':_0x39bff1[_0xac5a('0x90')][_0xac5a('0x9f')],'sort':_0x39bff1['query'][_0xac5a('0x72')],'filter':_0x39bff1[_0xac5a('0x90')][_0xac5a('0x3e')],'raw':!![],'ids':_0x98e27b}};return db[_0xac5a('0xa0')][_0xac5a('0xa1')](_0x5cad2d);}return db[_0xac5a('0x93')][_0xac5a('0xa2')](_0x4f3429);})[_0xac5a('0x16')](function(_0x22e10c){_0x3f0602['count']=_0x22e10c[_0xac5a('0xb')];_0x17df81=_0x22e10c[_0xac5a('0xa3')];return getRealtimeAgents();})[_0xac5a('0x16')](function(_0x5cc640){_0x13bc19=_0x5cc640[_0xac5a('0xa3')];return _0x17df81[_0xac5a('0x37')](function(_0x5830f3){var _0x1a4714=_['find'](_0x13bc19,['id',_0x5830f3['id']]);if(_0x1a4714)_['merge'](_0x5830f3,_[_0xac5a('0x3d')](_[_0xac5a('0xa4')](_0x1a4714,_0x4d44af),_0x888828));_0x5830f3['globalStatus']=getAgentStatus(_0x5830f3);return _0x5830f3;});})['then'](function(_0x1805c2){var _0x1bfe4a;if(_0x39bff1[_0xac5a('0x90')][_0xac5a('0xa5')]){_0x1bfe4a=_[_0xac5a('0x3e')](_0x1805c2,[_0xac5a('0x6f'),_0x39bff1[_0xac5a('0x90')][_0xac5a('0xa5')]]);if(_0x39bff1[_0xac5a('0x90')][_0xac5a('0xa6')]){_0x1bfe4a=_[_0xac5a('0x3e')](_0x1bfe4a,[_0xac5a('0x73'),_0x39bff1[_0xac5a('0x90')][_0xac5a('0xa6')]]);}}if(_0x1bfe4a)_0x1805c2=_0x1bfe4a;if(!_0x3297df)return _0x1805c2;return orderAgentsByStatus(_0x1805c2,_0x3297df);})[_0xac5a('0x16')](function(_0x13583f){_0x3f0602[_0xac5a('0xa3')]=_0x13583f;return _0x3f0602;})[_0xac5a('0x16')](respondWithFilteredResult(_0xa9ca0e,_0x4f3429))[_0xac5a('0x19')](handleError(_0xa9ca0e,null));};exports[_0xac5a('0xa7')]=function(_0x555a9a,_0x3efb21){var _0x2c1b34={'count':0x0,'rows':[]},_0x944659={},_0x29db9c,_0x11031f,_0x8f6297,_0x59b4fa,_0x5716ef;Promise[_0xac5a('0x8f')]()[_0xac5a('0x16')](function(){if(_0x555a9a[_0xac5a('0x90')][_0xac5a('0x91')])_0x29db9c=validateChannel(_0x555a9a['query'][_0xac5a('0x91')]);var _0x237e30=_[_0xac5a('0x1a')](_0x29db9c)+_0xac5a('0x48');var _0x552856=_['map'](db[_0x237e30][_0xac5a('0x94')],function(_0x44d4dc){return{'name':_0x44d4dc[_0xac5a('0x95')],'type':_0x44d4dc[_0xac5a('0x96')][_0xac5a('0x97')]};});_0x944659=qs['getOptions'](_0x552856,_0x555a9a);if(_0x555a9a[_0xac5a('0x9d')][_0xac5a('0x98')]==='user'){var _0x488dc9={'params':{'id':_0x555a9a['user'][_0xac5a('0x9e')]},'query':{'section':_0x29db9c===_0xac5a('0x20')&&_0x555a9a['query'][_0xac5a('0x96')]===_0xac5a('0x21')?_0xac5a('0xa8'):_[_0xac5a('0x1a')](_0x29db9c)+_0xac5a('0x1b'),'type':_0x555a9a['query'][_0xac5a('0x96')],'nolimit':!![],'sort':'name','filter':_0x555a9a[_0xac5a('0x90')]['filter']}};return db[_0xac5a('0xa0')][_0xac5a('0xa1')](_0x488dc9);}return db[_0x237e30][_0xac5a('0xa2')](_0x944659);})[_0xac5a('0x16')](function(_0x1bfecf){_0x2c1b34['count']=_0x1bfecf[_0xac5a('0xb')];_0x11031f=_0x1bfecf[_0xac5a('0xa3')];return getRealtimeQueues(_0x555a9a,_0x29db9c);})[_0xac5a('0x16')](function(_0x11d681){_0x59b4fa=_0x11d681[_0xac5a('0xa3')];return getRealtimeAgents();})[_0xac5a('0x16')](function(_0x31d924){_0x8f6297=_0x31d924[_0xac5a('0xa3')];if(_0x29db9c!=_0xac5a('0x20'))return;return getRealtimeVoiceQueueChannels();})[_0xac5a('0x16')](function(_0x2104b0){_0x5716ef=_0x2104b0?_0x2104b0['rows']:[];return initializeQueues(_0x11031f,_0x59b4fa,_0x29db9c,_0x555a9a[_0xac5a('0x90')][_0xac5a('0x96')]);})[_0xac5a('0x16')](function(_0x551cdf){var _0x478bfe=_0x551cdf[_0xac5a('0x37')](function(_0x366dfc){if(_0x29db9c===_0xac5a('0x20'))return getVoiceQueueAgents(_0x366dfc,_0x11031f,_0x8f6297,_0x5716ef);else return getQueueAgents(_0x366dfc,_0x8f6297,_0x29db9c);});return Promise[_0xac5a('0x68')](_0x478bfe);})[_0xac5a('0x16')](function(_0xea383a){_0x2c1b34[_0xac5a('0xa3')]=_0xea383a;return _0x2c1b34;})[_0xac5a('0x16')](respondWithFilteredResult(_0x3efb21,_0x944659))[_0xac5a('0x19')](handleError(_0x3efb21,null));};
\ No newline at end of file
+var _0xa0bd=['routealias','chatPause','resolve','query','channel','join','globalQueueFilter','Queue','rawAttributes','type','role','agent','getOptions','isEmpty','where','user','nolimit','UserProfile','findAndCountAll','rows','omit','globalStatusFilter','pauseTypeFilter','getQueues','fieldName','key','userProfileId','outbound','QueueCampaigns','getResources','../../components/parsers/qs','../../config/logger','api','http','client','offset','undefined','limit','count','status','set','Content-Range','json','error','stack','name','request','Agents','then','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','result','merge','voice','startCase','Queues','Unable\x20to\x20retrieve\x20RPC\x20%s\x20queues','catch','VoiceQueuesChannels','waiting','talking','paused','push','pTalking','originated','message','dialActive','dialMethod','Trunk','startPredictive','startProgressive','erlangCallToSecond','erlangAbandonmentRate','dialPredictiveInterval','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','predictiveIntervalAvailable','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','map','get','agents','loggedInDb','loggedIn','available','busy','find','pick','queue','length','some','internal','getMembers','UserId','accountcode','online','User','findAll','QueueId','idle','unknown','unavailable','ringing','mailPause','whatsappPause','voiceStatus','voicePause','*pause','mail','chat','sms','openchannel','whatsapp','includes','toLowerCase','Invalid\x20channel','findOne','all','flatten','uniq','fields','filter','globalStatus','order','DESC','ASC','sort','pause','pauseType','getAgents','userpic','lastLoginAt','lastPauseAt','address','smsPause','faxPause','chatCapacity','openchannelCapacity','smsCapacity','whatsappCapacity','faxCapacity','chatCurrentCapacity','smsCurrentCapacity','whatsappCurrentCapacity','faxCurrentCapacity','chatStatus','openchannelStatus','mailStatus','smsStatus','whatsappStatus','chatStatusTime','openchannelStatusTime','whatsappStatusTime','faxStatusTime','destconnectedlinenum'];(function(_0x597e78,_0x4e3e49){var _0x26531=function(_0x3449d9){while(--_0x3449d9){_0x597e78['push'](_0x597e78['shift']());}};_0x26531(++_0x4e3e49);}(_0xa0bd,0xba));var _0xda0b=function(_0x162373,_0x2509f8){_0x162373=_0x162373-0x0;var _0xfee39f=_0xa0bd[_0x162373];return _0xfee39f;};'use strict';var util=require('util');var _=require('lodash');var jayson=require('jayson/promise');var qs=require(_0xda0b('0x0'));var logger=require(_0xda0b('0x1'))(_0xda0b('0x2'));var db=require('../../mysqldb')['db'];var amiClient=jayson['client'][_0xda0b('0x3')]({'port':0x232a});var routingClient=jayson[_0xda0b('0x4')][_0xda0b('0x3')]({'port':0x232c});function respondWithFilteredResult(_0x14f6f6,_0x4651fc){return function(_0x1c03de){if(_0x1c03de){var _0x4eb049=typeof _0x4651fc[_0xda0b('0x5')]===_0xda0b('0x6')&&typeof _0x4651fc[_0xda0b('0x7')]===_0xda0b('0x6');var _0x69d75d=_0x1c03de[_0xda0b('0x8')];var _0x46b483=_0x4eb049?0x0:_0x4651fc['offset'];var _0x316a0e=_0x4eb049?_0x1c03de[_0xda0b('0x8')]:_0x4651fc[_0xda0b('0x5')]+_0x4651fc[_0xda0b('0x7')];var _0x1a15f4;if(_0x316a0e>=_0x69d75d){_0x316a0e=_0x69d75d;_0x1a15f4=0xc8;}else{_0x1a15f4=0xce;}_0x14f6f6[_0xda0b('0x9')](_0x1a15f4);return _0x14f6f6[_0xda0b('0xa')](_0xda0b('0xb'),_0x46b483+'-'+_0x316a0e+'/'+_0x69d75d)[_0xda0b('0xc')](_0x1c03de);}return null;};}function handleError(_0xbf56ab,_0xaf2036){_0xaf2036=_0xaf2036||0x1f4;return function(_0x32e563){logger[_0xda0b('0xd')](_0x32e563[_0xda0b('0xe')]);if(_0x32e563['name']){delete _0x32e563[_0xda0b('0xf')];}_0xbf56ab['status'](_0xaf2036)['send'](_0x32e563);};}function getRealtimeAgents(){return new Promise(function(_0x3cf818,_0x3e1e44){return amiClient[_0xda0b('0x10')](_0xda0b('0x11'),{})[_0xda0b('0x12')](function(_0x188b42){if(_0x188b42[_0xda0b('0xd')])throw new Error(_0xda0b('0x13'));var _0x21201b=_0x188b42['result'];return routingClient[_0xda0b('0x10')](_0xda0b('0x11'),{})[_0xda0b('0x12')](function(_0x15e44c){if(_0x15e44c[_0xda0b('0xd')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0x1272b0=_0x15e44c[_0xda0b('0x14')];return _0x3cf818(_[_0xda0b('0x15')]({},_0x21201b,_0x1272b0));});})['catch'](function(_0x349689){_0x3e1e44(_0x349689);});});}function getRealtimeQueues(_0x58d643,_0x69a73d){return new Promise(function(_0xe9cf8d,_0x1bdb44){var _0x5b6c7f=_0x69a73d===_0xda0b('0x16')?amiClient:routingClient;return _0x5b6c7f[_0xda0b('0x10')](_[_0xda0b('0x17')](_0x69a73d)+_0xda0b('0x18'),_0x58d643)['then'](function(_0x5c3362){if(_0x5c3362['error'])throw new Error(util['format'](_0xda0b('0x19'),_0x69a73d));return _0xe9cf8d(_0x5c3362['result']);})[_0xda0b('0x1a')](function(_0x97379){_0x1bdb44(_0x97379);});});}function getRealtimeVoiceQueueChannels(){return new Promise(function(_0x1e6871,_0x3b1c95){return amiClient[_0xda0b('0x10')](_0xda0b('0x1b'),{})[_0xda0b('0x12')](function(_0x593807){if(_0x593807[_0xda0b('0xd')])throw new Error('Unable\x20to\x20retrieve\x20voice\x20queues\x20channels');return _0x1e6871(_0x593807['result']);})[_0xda0b('0x1a')](function(_0x4a4306){_0x3b1c95(_0x4a4306);});});}function initializeQueues(_0x331585,_0x2b75f7,_0x57244c,_0x2b1e4d){var _0x51c54c=['loggedIn','available',_0xda0b('0x1c'),_0xda0b('0x1d'),_0xda0b('0x1e')];if(_0x57244c===_0xda0b('0x16')&&_0x2b1e4d==='outbound'){_0x51c54c[_0xda0b('0x1f')](_0xda0b('0x20'),_0xda0b('0x21'),_0xda0b('0x22'),_0xda0b('0x23'),_0xda0b('0x24'),_0xda0b('0x25'),_0xda0b('0x26'),_0xda0b('0x27'),'erlangCalls',_0xda0b('0x28'),_0xda0b('0x29'),'erlangBusyFactor',_0xda0b('0x2a'),_0xda0b('0x2b'),_0xda0b('0x2c'),_0xda0b('0x2d'),'predictiveIntervalTotalCalls',_0xda0b('0x2e'),_0xda0b('0x2f'),'predictiveIntervalDroppedCallsCallersExit',_0xda0b('0x30'),_0xda0b('0x31'));}return _0x331585[_0xda0b('0x32')](function(_0x3099df){var _0x3c8aa1=_0x3099df[_0xda0b('0x33')]({'plain':!![]});_0x3c8aa1[_0xda0b('0x34')]=[];_0x3c8aa1['paused']=0x0;_0x3c8aa1[_0xda0b('0x35')]=0x0;_0x3c8aa1[_0xda0b('0x36')]=0x0;_0x3c8aa1[_0xda0b('0x37')]=0x0;_0x3c8aa1[_0xda0b('0x1c')]=0x0;if(_0x57244c===_0xda0b('0x16')){_0x3c8aa1[_0xda0b('0x1d')]=0x0;_0x3c8aa1[_0xda0b('0x38')]=0x0;if(_0x2b1e4d==='outbound'){_0x3c8aa1[_0xda0b('0x20')]=0x0;_0x3c8aa1['originated']=0x0;}}var _0x5574ff=_[_0xda0b('0x39')](_0x2b75f7,['id',_0x3c8aa1['id']]);if(_0x5574ff)_[_0xda0b('0x15')](_0x3c8aa1,_[_0xda0b('0x3a')](_0x5574ff,_0x51c54c));return _0x3c8aa1;});}function updateAgentVoiceStatus(_0x6b1f67,_0x43c64c,_0x2b67c2){var _0x3e972d=_['filter'](_0x2b67c2,[_0xda0b('0x3b'),_0x43c64c[_0xda0b('0xf')]]);if(_0x3e972d[_0xda0b('0x3c')]===0x0)return _0x6b1f67[_0xda0b('0x38')]=!![];if(_[_0xda0b('0x3d')](_0x3e972d,['connectedlinenum',_0x6b1f67[_0xda0b('0x3e')]['toString']()]))return _0x6b1f67[_0xda0b('0x1d')]=!![];if(!_0x6b1f67['talking'])return _0x6b1f67['busy']=!![];}function getVoiceQueueAgents(_0xa8019,_0xf298ff,_0x470da2,_0x5d1ff6){var _0x123122=_[_0xda0b('0x39')](_0xf298ff,['id',_0xa8019['id']]);if(!_0x123122)return _0xa8019;return _0x123122[_0xda0b('0x3f')]({'raw':!![]})['then'](function(_0x4c7a6d){for(var _0x35fc50=0x0;_0x35fc50<_0x4c7a6d['length'];_0x35fc50++){var _0x4107d7=_[_0xda0b('0x39')](_0x470da2,['id',_0x4c7a6d[_0x35fc50]['UserId']]);if(!_0x4107d7){_0x4107d7={'id':_0x4c7a6d[_0x35fc50]['UserId'],'name':_0x4c7a6d[_0x35fc50][_0xda0b('0x40')],'accountcode':'','online':![]};}var _0xa31e68={'id':_0x4107d7['id'],'name':_0x4107d7['name'],'internal':_0x4107d7[_0xda0b('0x41')],'online':Boolean(_0x4107d7['online']),'paused':Boolean(_0x4c7a6d[_0x35fc50][_0xda0b('0x1e')])};if(_0x4107d7['voiceStatus']===_0xda0b('0x1d'))updateAgentVoiceStatus(_0xa31e68,_0xa8019,_0x5d1ff6);if(_0xa31e68[_0xda0b('0x42')])_0xa8019[_0xda0b('0x35')]++;if(_0xa31e68[_0xda0b('0x38')])_0xa8019[_0xda0b('0x38')]++;if(_0xa31e68[_0xda0b('0x1e')]&&!_0xa31e68[_0xda0b('0x38')]&&!_0xa31e68[_0xda0b('0x1d')])_0xa8019[_0xda0b('0x1e')]++;_0xa8019['agents'][_0xda0b('0x1f')](_0xa31e68);}return _0xa8019;});}function getQueueAgents(_0x5b5d1a,_0x70ee18,_0x4e2d01){var _0x4b2a95=_0xda0b('0x43')+_['startCase'](_0x4e2d01)+'Queue';var _0x2e7a45=_0x4e2d01+'Pause';return db[_0x4b2a95][_0xda0b('0x44')]({'where':{[_[_0xda0b('0x17')](_0x4e2d01)+_0xda0b('0x45')]:_0x5b5d1a['id']},'raw':!![]})[_0xda0b('0x12')](function(_0xd6d691){for(var _0x955409=0x0;_0x955409<_0xd6d691['length'];_0x955409++){var _0x1c9e48=_['find'](_0x70ee18,['id',_0xd6d691[_0x955409][_0xda0b('0x40')]]);if(!_0x1c9e48){_0x1c9e48={'id':_0xd6d691[_0x955409][_0xda0b('0x40')],'name':_0xd6d691[_0x955409]['UserId'],'online':![],['pauseField']:![]};}var _0x376d41={'id':_0x1c9e48['id'],'name':_0x1c9e48[_0xda0b('0xf')],'online':Boolean(_0x1c9e48[_0xda0b('0x42')]),'paused':Boolean(_0x1c9e48[_0x2e7a45])};if(_0x376d41[_0xda0b('0x42')])_0x5b5d1a[_0xda0b('0x35')]++;_0x5b5d1a[_0xda0b('0x34')][_0xda0b('0x1f')](_0x376d41);}return _0x5b5d1a;});}function isIdle(_0x1e3f17){return _0x1e3f17===_0xda0b('0x46')||_0x1e3f17===_0xda0b('0x47')||_0x1e3f17===_0xda0b('0x48')||_0x1e3f17===_0xda0b('0x49')||_['isNil'](_0x1e3f17);}function isAgentPaused(_0x1fef66,_0x9a14f7){var _0x601b73=[_0x1fef66['chatPause'],_0x1fef66['faxPause'],_0x1fef66[_0xda0b('0x4a')],_0x1fef66['openchannelPause'],_0x1fef66['smsPause'],_0x1fef66['voicePause'],_0x1fef66[_0xda0b('0x4b')]];if(!_0x9a14f7)return _['every'](_0x601b73);var _0x53291a=_['filter'](_0x601b73);return _0x53291a['length']>0x0&&_0x53291a[_0xda0b('0x3c')]<_0x601b73[_0xda0b('0x3c')]?!![]:![];}function isAgentIdle(_0x28976a){if(_0x28976a[_0xda0b('0x4c')]!==_0xda0b('0x46')&&_0x28976a[_0xda0b('0x4d')]){_0x28976a[_0xda0b('0x4c')]='pause';return![];}return _['every']([_0x28976a['chatStatus'],_0x28976a['faxStatus'],_0x28976a['mailStatus'],_0x28976a['openchannelStatus'],_0x28976a['smsStatus'],_0x28976a[_0xda0b('0x4c')],_0x28976a['whatsappStatus']],isIdle);}function getAgentStatus(_0x3cc1d2){var _0x4edb97=_0xda0b('0x47');if(isAgentPaused(_0x3cc1d2))_0x4edb97='pause';else if(isAgentPaused(_0x3cc1d2,!![]))_0x4edb97=_0xda0b('0x4e');else if(isAgentIdle(_0x3cc1d2))_0x4edb97='idle';else _0x4edb97=_0xda0b('0x38');return _0x4edb97;}function validateChannel(_0x566533){var _0x466aaa=[_0xda0b('0x4f'),_0xda0b('0x50'),_0xda0b('0x51'),_0xda0b('0x52'),'fax',_0xda0b('0x53'),_0xda0b('0x16')];if(!_[_0xda0b('0x54')](_0x466aaa,_0x566533[_0xda0b('0x55')]()))throw new Error(_0xda0b('0x56'));return _0x566533[_0xda0b('0x55')]();}function getFilteredAgentIds(_0x1c6d31,_0x34f5fa){var _0x5c7bf9=_['isArray'](_0x1c6d31)?_0x1c6d31:[_0x1c6d31];var _0x41e84f=_[_0xda0b('0x32')](_0x5c7bf9,function(_0x342cd8){return db[_0x34f5fa][_0xda0b('0x57')]({'where':{'name':_0x342cd8}})[_0xda0b('0x12')](function(_0xe278ba){if(!_0xe278ba)return[];return _0xe278ba['getAgents']({'attributes':['id'],'raw':!![]});});});return Promise[_0xda0b('0x58')](_0x41e84f)[_0xda0b('0x12')](function(_0x26a3f4){var _0x298016=_(_0x26a3f4)[_0xda0b('0x59')]()[_0xda0b('0x32')]('id')[_0xda0b('0x5a')]()['value']();return _0x298016;});}function getUpdatedSortOptions(_0x19f101){var _0x18123a={'fields':[],'order':null};var _0x3bd625=_0x19f101['split'](',');_0x18123a[_0xda0b('0x5b')]=_[_0xda0b('0x5c')](_0x3bd625,function(_0x2710e0){if(!_0x2710e0[_0xda0b('0x54')](_0xda0b('0x5d')))return!![];_0x18123a[_0xda0b('0x5e')]=_['startsWith'](_0x2710e0,'-')?_0xda0b('0x5f'):_0xda0b('0x60');return![];});return _0x18123a;}function orderAgentsByStatus(_0x4a536f,_0x1260de){return _0x4a536f[_0xda0b('0x61')](function(_0x530d1b,_0x319bc6){if(_0x530d1b[_0xda0b('0x5d')]===_0x319bc6[_0xda0b('0x5d')]&&_0x530d1b['globalStatus']===_0xda0b('0x62')){if(_0x1260de===_0xda0b('0x5f'))return(_0x530d1b[_0xda0b('0x63')]||'')<(_0x319bc6[_0xda0b('0x63')]||'')?0x1:-0x1;return _0x530d1b[_0xda0b('0x63')]<_0x319bc6[_0xda0b('0x63')]?-0x1:0x1;}else{if(_0x1260de===_0xda0b('0x5f'))return _0x530d1b[_0xda0b('0x5d')]<_0x319bc6[_0xda0b('0x5d')]?0x1:-0x1;return _0x530d1b[_0xda0b('0x5d')]<_0x319bc6[_0xda0b('0x5d')]?-0x1:0x1;}});}exports[_0xda0b('0x64')]=function(_0x33344e,_0x159d2c){var _0x8dbf2e={'count':0x0,'rows':[]},_0x1655dd={},_0x389bb4,_0x2f7aae,_0x3623f3,_0x411681,_0x1c2e36=[_0xda0b('0x65'),'online',_0xda0b('0x66'),_0xda0b('0x67'),'pauseType','lastPauseAt',_0xda0b('0x3e'),_0xda0b('0x68'),'chatPause','openchannelPause',_0xda0b('0x4a'),_0xda0b('0x69'),'whatsappPause',_0xda0b('0x6a'),_0xda0b('0x4d'),_0xda0b('0x6b'),_0xda0b('0x6c'),'mailCapacity',_0xda0b('0x6d'),_0xda0b('0x6e'),_0xda0b('0x6f'),_0xda0b('0x70'),'openchannelCurrentCapacity','mailCurrentCapacity',_0xda0b('0x71'),_0xda0b('0x72'),_0xda0b('0x73'),_0xda0b('0x74'),_0xda0b('0x75'),_0xda0b('0x76'),_0xda0b('0x77'),_0xda0b('0x78'),'faxStatus',_0xda0b('0x4c'),_0xda0b('0x79'),_0xda0b('0x7a'),'mailStatusTime','smsStatusTime',_0xda0b('0x7b'),_0xda0b('0x7c'),'voiceStatusTime','queue',_0xda0b('0x7d'),'screenrecording','phoneBarEnableScreenRecordingByAgent','phoneBarEnableAutomaticScreenRecording',_0xda0b('0x7e')],_0x2c95e9=[_0xda0b('0x7f'),'openchannelPause',_0xda0b('0x4a'),_0xda0b('0x69'),'whatsappPause',_0xda0b('0x6a'),_0xda0b('0x4d'),_0xda0b('0x42')];Promise[_0xda0b('0x80')]()[_0xda0b('0x12')](function(){if(_0x33344e[_0xda0b('0x81')]['channel'])_0x389bb4=validateChannel(_0x33344e['query'][_0xda0b('0x82')]);if(!_0x33344e[_0xda0b('0x81')]['sort']||!_0x33344e[_0xda0b('0x81')][_0xda0b('0x61')][_0xda0b('0x54')](_0xda0b('0x5d')))return;var _0x2db654=getUpdatedSortOptions(_0x33344e['query'][_0xda0b('0x61')]);_0x33344e['query']['sort']=_0x2db654[_0xda0b('0x5b')][_0xda0b('0x83')](',');_0x2f7aae=_0x2db654[_0xda0b('0x5e')];})['then'](function(){if(!_0x33344e['query'][_0xda0b('0x84')])return[];var _0x54bad8=_[_0xda0b('0x17')](_0x389bb4)+_0xda0b('0x85');return getFilteredAgentIds(_0x33344e[_0xda0b('0x81')][_0xda0b('0x84')],_0x54bad8);})['then'](function(_0x26702e){var _0x3807b9=_['map'](db[_0xda0b('0x43')][_0xda0b('0x86')],function(_0x404cdb){return{'name':_0x404cdb['fieldName'],'type':_0x404cdb[_0xda0b('0x87')]['key']};});_0x33344e[_0xda0b('0x81')][_0xda0b('0x88')]=_0xda0b('0x89');_0x33344e[_0xda0b('0x81')]['online']=!![];_0x1655dd=qs[_0xda0b('0x8a')](_0x3807b9,_0x33344e);_0x1655dd['raw']=!![];if(!_[_0xda0b('0x8b')](_0x26702e)){_0x1655dd[_0xda0b('0x8c')]=_[_0xda0b('0x15')](_0x1655dd[_0xda0b('0x8c')],{'$and':[{'id':{'$in':_0x26702e}}]});}else if(!_[_0xda0b('0x8b')](_0x33344e[_0xda0b('0x81')][_0xda0b('0x84')])){return _0x8dbf2e;}if(_0x33344e['user']['role']===_0xda0b('0x8d')){var _0x2e811b={'params':{'id':_0x33344e[_0xda0b('0x8d')]['userProfileId']},'query':{'section':_0xda0b('0x11'),'role':'agent','online':!![],'nolimit':_0x33344e[_0xda0b('0x81')][_0xda0b('0x8e')],'sort':_0x33344e[_0xda0b('0x81')]['sort'],'filter':_0x33344e[_0xda0b('0x81')][_0xda0b('0x5c')],'raw':!![],'ids':_0x26702e}};return db[_0xda0b('0x8f')]['getResources'](_0x2e811b);}return db['User'][_0xda0b('0x90')](_0x1655dd);})[_0xda0b('0x12')](function(_0x38778d){_0x8dbf2e['count']=_0x38778d[_0xda0b('0x8')];_0x3623f3=_0x38778d[_0xda0b('0x91')];return getRealtimeAgents();})[_0xda0b('0x12')](function(_0x5e0f43){_0x411681=_0x5e0f43['rows'];return _0x3623f3[_0xda0b('0x32')](function(_0x117843){var _0x7b7f47=_[_0xda0b('0x39')](_0x411681,['id',_0x117843['id']]);if(_0x7b7f47)_[_0xda0b('0x15')](_0x117843,_['pick'](_[_0xda0b('0x92')](_0x7b7f47,_0x2c95e9),_0x1c2e36));_0x117843[_0xda0b('0x5d')]=getAgentStatus(_0x117843);return _0x117843;});})['then'](function(_0x4ab22a){var _0x5dbe06;if(_0x33344e[_0xda0b('0x81')][_0xda0b('0x93')]){_0x5dbe06=_[_0xda0b('0x5c')](_0x4ab22a,[_0xda0b('0x5d'),_0x33344e[_0xda0b('0x81')][_0xda0b('0x93')]]);if(_0x33344e[_0xda0b('0x81')][_0xda0b('0x94')]){_0x5dbe06=_[_0xda0b('0x5c')](_0x5dbe06,[_0xda0b('0x63'),_0x33344e[_0xda0b('0x81')][_0xda0b('0x94')]]);}}if(_0x5dbe06)_0x4ab22a=_0x5dbe06;if(!_0x2f7aae)return _0x4ab22a;return orderAgentsByStatus(_0x4ab22a,_0x2f7aae);})['then'](function(_0x536315){_0x8dbf2e[_0xda0b('0x91')]=_0x536315;return _0x8dbf2e;})[_0xda0b('0x12')](respondWithFilteredResult(_0x159d2c,_0x1655dd))[_0xda0b('0x1a')](handleError(_0x159d2c,null));};exports[_0xda0b('0x95')]=function(_0x55a283,_0x401398){var _0x59b8b3={'count':0x0,'rows':[]},_0x113894={},_0x28d3b8,_0x324bac,_0x19dbaf,_0x277e0f,_0x31518d;Promise[_0xda0b('0x80')]()['then'](function(){if(_0x55a283['query']['channel'])_0x28d3b8=validateChannel(_0x55a283[_0xda0b('0x81')][_0xda0b('0x82')]);var _0x545aaa=_[_0xda0b('0x17')](_0x28d3b8)+_0xda0b('0x85');var _0xeea1f=_[_0xda0b('0x32')](db[_0x545aaa][_0xda0b('0x86')],function(_0x4ffc32){return{'name':_0x4ffc32[_0xda0b('0x96')],'type':_0x4ffc32['type'][_0xda0b('0x97')]};});_0x113894=qs[_0xda0b('0x8a')](_0xeea1f,_0x55a283);if(_0x55a283[_0xda0b('0x8d')][_0xda0b('0x88')]==='user'){var _0x4a34ac={'params':{'id':_0x55a283['user'][_0xda0b('0x98')]},'query':{'section':_0x28d3b8==='voice'&&_0x55a283[_0xda0b('0x81')]['type']===_0xda0b('0x99')?_0xda0b('0x9a'):_[_0xda0b('0x17')](_0x28d3b8)+_0xda0b('0x18'),'type':_0x55a283[_0xda0b('0x81')][_0xda0b('0x87')],'nolimit':!![],'sort':'name','filter':_0x55a283[_0xda0b('0x81')]['filter']}};return db[_0xda0b('0x8f')][_0xda0b('0x9b')](_0x4a34ac);}return db[_0x545aaa][_0xda0b('0x90')](_0x113894);})['then'](function(_0x2027aa){_0x59b8b3[_0xda0b('0x8')]=_0x2027aa[_0xda0b('0x8')];_0x324bac=_0x2027aa['rows'];return getRealtimeQueues(_0x55a283,_0x28d3b8);})[_0xda0b('0x12')](function(_0x981e76){_0x277e0f=_0x981e76['rows'];return getRealtimeAgents();})[_0xda0b('0x12')](function(_0x185f0d){_0x19dbaf=_0x185f0d[_0xda0b('0x91')];if(_0x28d3b8!='voice')return;return getRealtimeVoiceQueueChannels();})[_0xda0b('0x12')](function(_0x5ce3c9){_0x31518d=_0x5ce3c9?_0x5ce3c9[_0xda0b('0x91')]:[];return initializeQueues(_0x324bac,_0x277e0f,_0x28d3b8,_0x55a283['query'][_0xda0b('0x87')]);})[_0xda0b('0x12')](function(_0x2c937c){var _0x332e06=_0x2c937c[_0xda0b('0x32')](function(_0x3ffda5){if(_0x28d3b8===_0xda0b('0x16'))return getVoiceQueueAgents(_0x3ffda5,_0x324bac,_0x19dbaf,_0x31518d);else return getQueueAgents(_0x3ffda5,_0x19dbaf,_0x28d3b8);});return Promise['all'](_0x332e06);})[_0xda0b('0x12')](function(_0x4c33bf){_0x59b8b3[_0xda0b('0x91')]=_0x4c33bf;return _0x59b8b3;})[_0xda0b('0x12')](respondWithFilteredResult(_0x401398,_0x113894))['catch'](handleError(_0x401398,null));};
\ No newline at end of file
index 160f61f..3946606 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x4f13c7,_0x346361){var _0x31128c=function(_0xd4aec7){while(--_0xd4aec7){_0x4f13c7['push'](_0x4f13c7['shift']());}};_0x31128c(++_0x346361);}(_0xedd9,0xfc));var _0x9edd=function(_0x1dfc28,_0x46fa1c){_0x1dfc28=_0x1dfc28-0x0;var _0x57a91f=_0xedd9[_0x1dfc28];return _0x57a91f;};'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
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0x2fbf05,_0x2b3d3d){var _0xd1d62f=function(_0x32b13d){while(--_0x32b13d){_0x2fbf05['push'](_0x2fbf05['shift']());}};_0xd1d62f(++_0x2b3d3d);}(_0x9c44,0x178));var _0x49c4=function(_0x15bc81,_0x4d4f77){_0x15bc81=_0x15bc81-0x0;var _0x59440e=_0x9c44[_0x15bc81];return _0x59440e;};'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 1d8243b..9b3ff28 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ab=['exports','STRING','DATE','INTEGER'];(function(_0x5ca23c,_0x3dd97){var _0x11e6fc=function(_0x50ffcb){while(--_0x50ffcb){_0x5ca23c['push'](_0x5ca23c['shift']());}};_0x11e6fc(++_0x3dd97);}(_0x71ab,0x64));var _0xb71a=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x71ab[_0x21a9d9];return _0x46adce;};'use strict';var Sequelize=require('sequelize');module[_0xb71a('0x0')]={'state':{'type':Sequelize['INTEGER'](0x2)},'statedesc':{'type':Sequelize[_0xb71a('0x1')]},'scheduledat':{'type':Sequelize['DATE']},'uniqueid':{'type':Sequelize[_0xb71a('0x1')]},'starttime':{'type':Sequelize[_0xb71a('0x2')]},'responsetime':{'type':Sequelize[_0xb71a('0x2')]},'ringtime':{'type':Sequelize[_0xb71a('0x3')],'defaultValue':0x0},'campaign':{'type':Sequelize[_0xb71a('0x1')]},'campaigntype':{'type':Sequelize[_0xb71a('0x1')]},'membername':{'type':Sequelize[_0xb71a('0x1')]}};
\ No newline at end of file
+var _0xc949=['DATE','sequelize','INTEGER','STRING'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xc949,0x181));var _0x9c94=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xc949[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require(_0x9c94('0x0'));module['exports']={'state':{'type':Sequelize[_0x9c94('0x1')](0x2)},'statedesc':{'type':Sequelize[_0x9c94('0x2')]},'scheduledat':{'type':Sequelize[_0x9c94('0x3')]},'uniqueid':{'type':Sequelize[_0x9c94('0x2')]},'starttime':{'type':Sequelize['DATE']},'responsetime':{'type':Sequelize[_0x9c94('0x3')]},'ringtime':{'type':Sequelize[_0x9c94('0x1')],'defaultValue':0x0},'campaign':{'type':Sequelize['STRING']},'campaigntype':{'type':Sequelize[_0x9c94('0x2')]},'membername':{'type':Sequelize[_0x9c94('0x2')]}};
\ No newline at end of file
index 653a6c8..d439ad0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2122=['exports','define','ReportAgentPreview','report_agent_preview','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./reportAgentPreview.attributes'];(function(_0x4c500a,_0x95c313){var _0x129e7b=function(_0x10e25b){while(--_0x10e25b){_0x4c500a['push'](_0x4c500a['shift']());}};_0x129e7b(++_0x95c313);}(_0x2122,0x197));var _0x2212=function(_0x8531f8,_0xe334b3){_0x8531f8=_0x8531f8-0x0;var _0x1ffe1b=_0x2122[_0x8531f8];return _0x1ffe1b;};'use strict';var _=require('lodash');var util=require(_0x2212('0x0'));var logger=require(_0x2212('0x1'))(_0x2212('0x2'));var moment=require(_0x2212('0x3'));var BPromise=require(_0x2212('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x2212('0x5'));var rimraf=require(_0x2212('0x6'));var config=require(_0x2212('0x7'));var attributes=require(_0x2212('0x8'));module[_0x2212('0x9')]=function(_0x50a985,_0x30dd5a){return _0x50a985[_0x2212('0xa')](_0x2212('0xb'),attributes,{'tableName':_0x2212('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7159=['path','rimraf','./reportAgentPreview.attributes','define','lodash','util','../../config/logger','api','bluebird','request-promise'];(function(_0x416797,_0x28e817){var _0x5309c6=function(_0x818f3f){while(--_0x818f3f){_0x416797['push'](_0x416797['shift']());}};_0x5309c6(++_0x28e817);}(_0x7159,0x158));var _0x9715=function(_0x1fb0c1,_0x1d52e0){_0x1fb0c1=_0x1fb0c1-0x0;var _0xd4b95a=_0x7159[_0x1fb0c1];return _0xd4b95a;};'use strict';var _=require(_0x9715('0x0'));var util=require(_0x9715('0x1'));var logger=require(_0x9715('0x2'))(_0x9715('0x3'));var moment=require('moment');var BPromise=require(_0x9715('0x4'));var rp=require(_0x9715('0x5'));var fs=require('fs');var path=require(_0x9715('0x6'));var rimraf=require(_0x9715('0x7'));var config=require('../../config/environment');var attributes=require(_0x9715('0x8'));module['exports']=function(_0x4b7711,_0x36572e){return _0x4b7711[_0x9715('0x9')]('ReportAgentPreview',attributes,{'tableName':'report_agent_preview','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0c95cfb..c25bd59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x783f=['request','then','info','debug','code','ReportAgentPreview,\x20%s,\x20%s','error','message','result','catch','CreateReportAgentPreview','body','options','raw','stringify','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http'];(function(_0x3b3167,_0x1eb7b9){var _0x4c176c=function(_0x40a784){while(--_0x40a784){_0x3b3167['push'](_0x3b3167['shift']());}};_0x4c176c(++_0x1eb7b9);}(_0x783f,0x16e));var _0xf783=function(_0x566da6,_0x543076){_0x566da6=_0x566da6-0x0;var _0x1a4e62=_0x783f[_0x566da6];return _0x1a4e62;};'use strict';var _=require('lodash');var util=require(_0xf783('0x0'));var moment=require(_0xf783('0x1'));var BPromise=require(_0xf783('0x2'));var rs=require(_0xf783('0x3'));var fs=require('fs');var Redis=require(_0xf783('0x4'));var db=require(_0xf783('0x5'))['db'];var utils=require(_0xf783('0x6'));var logger=require('../../config/logger')(_0xf783('0x7'));var config=require(_0xf783('0x8'));var jayson=require(_0xf783('0x9'));var client=jayson[_0xf783('0xa')][_0xf783('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5271ae,_0xf0ce57,_0x5e0720){return new BPromise(function(_0x37e51a,_0x5068b8){return client[_0xf783('0xc')](_0x5271ae,_0x5e0720)[_0xf783('0xd')](function(_0x22479b){logger[_0xf783('0xe')]('ReportAgentPreview,\x20%s,\x20%s',_0xf0ce57,'request\x20sent');logger[_0xf783('0xf')]('ReportAgentPreview,\x20%s,\x20%s,\x20%s',_0xf0ce57,'request\x20sent',JSON['stringify'](_0x22479b));if(_0x22479b['error']){if(_0x22479b['error'][_0xf783('0x10')]===0x1f4){logger['error'](_0xf783('0x11'),_0xf0ce57,_0x22479b[_0xf783('0x12')][_0xf783('0x13')]);return _0x5068b8(_0x22479b[_0xf783('0x12')][_0xf783('0x13')]);}logger[_0xf783('0x12')](_0xf783('0x11'),_0xf0ce57,_0x22479b[_0xf783('0x12')][_0xf783('0x13')]);return _0x37e51a(_0x22479b[_0xf783('0x12')]['message']);}else{logger['info'](_0xf783('0x11'),_0xf0ce57,'request\x20sent');_0x37e51a(_0x22479b[_0xf783('0x14')][_0xf783('0x13')]);}})[_0xf783('0x15')](function(_0x2a4e82){logger[_0xf783('0x12')]('ReportAgentPreview,\x20%s,\x20%s',_0xf0ce57,_0x2a4e82);_0x5068b8(_0x2a4e82);});});}exports[_0xf783('0x16')]=function(_0x496c49){var _0x3c70ce=this;return new Promise(function(_0x1a1b83,_0x453ac8){return db['ReportAgentPreview']['create'](_0x496c49[_0xf783('0x17')],{'raw':_0x496c49[_0xf783('0x18')]?_0x496c49[_0xf783('0x18')][_0xf783('0x19')]===undefined?!![]:![]:!![]})['then'](function(_0x19c62c){logger[_0xf783('0xe')](_0xf783('0x16'),_0x496c49);logger[_0xf783('0xf')](_0xf783('0x16'),_0x496c49,JSON[_0xf783('0x1a')](_0x19c62c));_0x1a1b83(_0x19c62c);})['catch'](function(_0x23c971){logger[_0xf783('0x12')](_0xf783('0x16'),_0x23c971['message'],_0x496c49);_0x453ac8(_0x3c70ce[_0xf783('0x12')](0x1f4,_0x23c971[_0xf783('0x13')]));});});};
\ No newline at end of file
+var _0x47ca=['util','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','ReportAgentPreview,\x20%s,\x20%s','request\x20sent','debug','ReportAgentPreview,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','CreateReportAgentPreview','ReportAgentPreview','body','options','raw','then','lodash'];(function(_0x2a21d3,_0x365702){var _0x27cd62=function(_0x41cdef){while(--_0x41cdef){_0x2a21d3['push'](_0x2a21d3['shift']());}};_0x27cd62(++_0x365702);}(_0x47ca,0x15b));var _0xa47c=function(_0x16bfc4,_0x4a10c1){_0x16bfc4=_0x16bfc4-0x0;var _0x1d0a74=_0x47ca[_0x16bfc4];return _0x1d0a74;};'use strict';var _=require(_0xa47c('0x0'));var util=require(_0xa47c('0x1'));var moment=require('moment');var BPromise=require(_0xa47c('0x2'));var rs=require(_0xa47c('0x3'));var fs=require('fs');var Redis=require(_0xa47c('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa47c('0x5'));var logger=require(_0xa47c('0x6'))(_0xa47c('0x7'));var config=require(_0xa47c('0x8'));var jayson=require(_0xa47c('0x9'));var client=jayson[_0xa47c('0xa')][_0xa47c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5a9582,_0x5c3a27,_0x123e65){return new BPromise(function(_0x32d31d,_0xe599b4){return client[_0xa47c('0xc')](_0x5a9582,_0x123e65)['then'](function(_0x31fc73){logger[_0xa47c('0xd')](_0xa47c('0xe'),_0x5c3a27,_0xa47c('0xf'));logger[_0xa47c('0x10')](_0xa47c('0x11'),_0x5c3a27,'request\x20sent',JSON[_0xa47c('0x12')](_0x31fc73));if(_0x31fc73[_0xa47c('0x13')]){if(_0x31fc73[_0xa47c('0x13')][_0xa47c('0x14')]===0x1f4){logger['error'](_0xa47c('0xe'),_0x5c3a27,_0x31fc73[_0xa47c('0x13')][_0xa47c('0x15')]);return _0xe599b4(_0x31fc73[_0xa47c('0x13')]['message']);}logger['error'](_0xa47c('0xe'),_0x5c3a27,_0x31fc73[_0xa47c('0x13')]['message']);return _0x32d31d(_0x31fc73[_0xa47c('0x13')][_0xa47c('0x15')]);}else{logger['info']('ReportAgentPreview,\x20%s,\x20%s',_0x5c3a27,'request\x20sent');_0x32d31d(_0x31fc73['result']['message']);}})[_0xa47c('0x16')](function(_0x5f2878){logger[_0xa47c('0x13')](_0xa47c('0xe'),_0x5c3a27,_0x5f2878);_0xe599b4(_0x5f2878);});});}exports[_0xa47c('0x17')]=function(_0x69f12d){var _0x178466=this;return new Promise(function(_0x456304,_0x1bdd9b){return db[_0xa47c('0x18')]['create'](_0x69f12d[_0xa47c('0x19')],{'raw':_0x69f12d[_0xa47c('0x1a')]?_0x69f12d[_0xa47c('0x1a')][_0xa47c('0x1b')]===undefined?!![]:![]:!![]})[_0xa47c('0x1c')](function(_0x38a9e4){logger[_0xa47c('0xd')]('CreateReportAgentPreview',_0x69f12d);logger[_0xa47c('0x10')](_0xa47c('0x17'),_0x69f12d,JSON[_0xa47c('0x12')](_0x38a9e4));_0x456304(_0x38a9e4);})[_0xa47c('0x16')](function(_0x539cbc){logger[_0xa47c('0x13')]('CreateReportAgentPreview',_0x539cbc[_0xa47c('0x15')],_0x69f12d);_0x1bdd9b(_0x178466[_0xa47c('0x13')](0x1f4,_0x539cbc['message']));});});};
\ No newline at end of file
index 677b886..f121fa5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd699=['whatsapp','/sms/queues/:id','showSmsQueues','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','util','path','Router','./rpc.controller','/voice/channels','isAuthenticated','voiceChannels','get','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','/voice/channels/:uniqueid/stopmixmonitor','/voice/queues','/chat/queues','/mail/queues','/mail/accounts','mailAccounts','openchannelQueues','/sms/queues','/whatsapp/queues','faxQueues','/voice/queues/preview/:id','voiceQueuesPreview','/voice/queues/channels','/voice/queues/channels/:uniqueid/hangup','/voice/queues/channels/:uniqueid/redirect/:exten','voiceQueuesChannelRedirect','/voice/queues/:id','showVoiceQueues','put','/outbound','outbound','/outbound/channels','outboundChannels','agents','/agents/:id/capacity','agentCapacity','/telephones','telephones','trunks','/campaigns','campaigns','/fax/accounts','chatQueuesWaitingInteractions','/mail/queues/waitinginteractions','mailQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions','/sms/queues/waitinginteractions','smsQueuesWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','faxQueuesWaitingInteractions','post','/mail/queues/:id/notify','queueNotify','mail','showMailQueues','/chat/queues/:id/notify','/chat/queues/:id','showChatQueues','/fax/queues/:id/notify','fax','/fax/queues/:id','showFaxQueues','/openchannel/queues/:id/notify','openchannel','showOpenchannelQueues','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd699,0x18d));var _0x9d69=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0xd699[_0x5d6456];return _0x4d66c1;};'use strict';var multer=require('multer');var util=require(_0x9d69('0x0'));var path=require(_0x9d69('0x1'));var express=require('express');var router=express[_0x9d69('0x2')]();var auth=require('../../components/auth/service');var controller=require(_0x9d69('0x3'));router['get'](_0x9d69('0x4'),auth[_0x9d69('0x5')](),controller[_0x9d69('0x6')]);router[_0x9d69('0x7')](_0x9d69('0x8'),auth[_0x9d69('0x5')](),controller[_0x9d69('0x9')]);router[_0x9d69('0x7')](_0x9d69('0xa'),auth[_0x9d69('0x5')](),controller['voiceChannelStopMixMonitor']);router['get'](_0x9d69('0xb'),auth['isAuthenticated'](),controller['voiceQueues']);router['get'](_0x9d69('0xc'),auth[_0x9d69('0x5')](),controller['chatQueues']);router[_0x9d69('0x7')](_0x9d69('0xd'),auth[_0x9d69('0x5')](),controller['mailQueues']);router[_0x9d69('0x7')](_0x9d69('0xe'),auth[_0x9d69('0x5')](),controller[_0x9d69('0xf')]);router['get']('/openchannel/queues',auth['isAuthenticated'](),controller[_0x9d69('0x10')]);router['get'](_0x9d69('0x11'),auth[_0x9d69('0x5')](),controller['smsQueues']);router[_0x9d69('0x7')](_0x9d69('0x12'),auth[_0x9d69('0x5')](),controller['whatsappQueues']);router[_0x9d69('0x7')]('/fax/queues',auth['isAuthenticated'](),controller[_0x9d69('0x13')]);router[_0x9d69('0x7')](_0x9d69('0x14'),auth[_0x9d69('0x5')](),controller[_0x9d69('0x15')]);router[_0x9d69('0x7')](_0x9d69('0x16'),auth[_0x9d69('0x5')](),controller['voiceQueuesChannels']);router[_0x9d69('0x7')]('/voice/queues/channels/:uniqueid',auth[_0x9d69('0x5')](),controller['voiceQueuesChannel']);router[_0x9d69('0x7')](_0x9d69('0x17'),auth[_0x9d69('0x5')](),controller['voiceQueuesChannelHangup']);router[_0x9d69('0x7')](_0x9d69('0x18'),auth['isAuthenticated'](),controller[_0x9d69('0x19')]);router[_0x9d69('0x7')](_0x9d69('0x1a'),auth[_0x9d69('0x5')](),controller[_0x9d69('0x1b')]);router[_0x9d69('0x1c')](_0x9d69('0x1a'),auth[_0x9d69('0x5')](),controller['updateVoiceQueue']);router['get'](_0x9d69('0x1d'),auth[_0x9d69('0x5')](),controller[_0x9d69('0x1e')]);router['get'](_0x9d69('0x1f'),auth[_0x9d69('0x5')](),controller[_0x9d69('0x20')]);router[_0x9d69('0x7')]('/agents',auth[_0x9d69('0x5')](),controller[_0x9d69('0x21')]);router['put'](_0x9d69('0x22'),auth[_0x9d69('0x5')](),controller[_0x9d69('0x23')]);router[_0x9d69('0x7')](_0x9d69('0x24'),auth[_0x9d69('0x5')](),controller[_0x9d69('0x25')]);router['get']('/trunks',auth[_0x9d69('0x5')](),controller[_0x9d69('0x26')]);router[_0x9d69('0x7')](_0x9d69('0x27'),auth[_0x9d69('0x5')](),controller[_0x9d69('0x28')]);router[_0x9d69('0x7')](_0x9d69('0x29'),auth[_0x9d69('0x5')](),controller['faxAccounts']);router[_0x9d69('0x7')]('/chat/queues/waitinginteractions',auth['isAuthenticated'](),controller[_0x9d69('0x2a')]);router[_0x9d69('0x7')](_0x9d69('0x2b'),auth['isAuthenticated'](),controller[_0x9d69('0x2c')]);router['get']('/openchannel/queues/waitinginteractions',auth[_0x9d69('0x5')](),controller[_0x9d69('0x2d')]);router[_0x9d69('0x7')](_0x9d69('0x2e'),auth['isAuthenticated'](),controller['openchannelQueuesIdWaitingInteractions']);router['get'](_0x9d69('0x2f'),auth[_0x9d69('0x5')](),controller[_0x9d69('0x30')]);router['get'](_0x9d69('0x31'),auth[_0x9d69('0x5')](),controller[_0x9d69('0x32')]);router['get'](_0x9d69('0x33'),auth[_0x9d69('0x5')](),controller[_0x9d69('0x34')]);router[_0x9d69('0x35')](_0x9d69('0x36'),auth['isAuthenticated'](),controller[_0x9d69('0x37')](_0x9d69('0x38')));router[_0x9d69('0x7')]('/mail/queues/:id',auth[_0x9d69('0x5')](),controller[_0x9d69('0x39')]);router[_0x9d69('0x35')](_0x9d69('0x3a'),auth[_0x9d69('0x5')](),controller[_0x9d69('0x37')]('chat'));router[_0x9d69('0x7')](_0x9d69('0x3b'),auth[_0x9d69('0x5')](),controller[_0x9d69('0x3c')]);router[_0x9d69('0x35')](_0x9d69('0x3d'),auth[_0x9d69('0x5')](),controller[_0x9d69('0x37')](_0x9d69('0x3e')));router[_0x9d69('0x7')](_0x9d69('0x3f'),auth[_0x9d69('0x5')](),controller[_0x9d69('0x40')]);router[_0x9d69('0x35')](_0x9d69('0x41'),auth[_0x9d69('0x5')](),controller[_0x9d69('0x37')](_0x9d69('0x42')));router[_0x9d69('0x7')]('/openchannel/queues/:id',auth['isAuthenticated'](),controller[_0x9d69('0x43')]);router[_0x9d69('0x35')](_0x9d69('0x44'),auth[_0x9d69('0x5')](),controller['queueNotify'](_0x9d69('0x45')));router[_0x9d69('0x35')](_0x9d69('0x46'),auth[_0x9d69('0x5')](),controller['queueNotify'](_0x9d69('0x47')));router[_0x9d69('0x7')](_0x9d69('0x48'),auth[_0x9d69('0x5')](),controller[_0x9d69('0x49')]);router[_0x9d69('0x7')](_0x9d69('0x4a'),auth[_0x9d69('0x5')](),controller[_0x9d69('0x4b')]);router['post'](_0x9d69('0x4c'),auth[_0x9d69('0x5')](),controller[_0x9d69('0x4d')]);module['exports']=router;
\ No newline at end of file
+var _0x865c=['openchannelQueuesIdWaitingInteractions','/whatsapp/queues/waitinginteractions','whatsappQueuesWaitingInteractions','/fax/queues/waitinginteractions','post','/mail/queues/:id/notify','queueNotify','mail','/mail/queues/:id','showMailQueues','/chat/queues/:id/notify','chat','showChatQueues','/fax/queues/:id/notify','fax','/fax/queues/:id','/openchannel/queues/:id/notify','openchannel','/openchannel/queues/:id','/sms/queues/:id/notify','sms','/whatsapp/queues/:id/notify','whatsapp','/sms/queues/:id','/whatsapp/queues/:id','showWhatsappQueues','/agents/:id/notify','agentNotify','multer','util','path','express','../../components/auth/service','./rpc.controller','get','/voice/channels','isAuthenticated','voiceChannels','/voice/channels/:uniqueid/mixmonitor','voiceChannelMixMonitor','voiceChannelStopMixMonitor','/chat/queues','chatQueues','mailQueues','/mail/accounts','mailAccounts','/openchannel/queues','openchannelQueues','smsQueues','/whatsapp/queues','whatsappQueues','faxQueues','voiceQueuesPreview','voiceQueuesChannels','/voice/queues/channels/:uniqueid/hangup','/voice/queues/channels/:uniqueid/redirect/:exten','/voice/queues/:id','showVoiceQueues','put','updateVoiceQueue','/outbound','outbound','/outbound/channels','outboundChannels','/agents','agents','/agents/:id/capacity','agentCapacity','/telephones','telephones','/trunks','trunks','/fax/accounts','faxAccounts','/chat/queues/waitinginteractions','mailQueuesWaitingInteractions','/openchannel/queues/waitinginteractions','openchannelQueuesWaitingInteractions','/openchannel/queues/:id/waitinginteractions'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x865c,0x158));var _0xc865=function(_0x5ca435,_0x4f4940){_0x5ca435=_0x5ca435-0x0;var _0x32a3a1=_0x865c[_0x5ca435];return _0x32a3a1;};'use strict';var multer=require(_0xc865('0x0'));var util=require(_0xc865('0x1'));var path=require(_0xc865('0x2'));var express=require(_0xc865('0x3'));var router=express['Router']();var auth=require(_0xc865('0x4'));var controller=require(_0xc865('0x5'));router[_0xc865('0x6')](_0xc865('0x7'),auth[_0xc865('0x8')](),controller[_0xc865('0x9')]);router[_0xc865('0x6')](_0xc865('0xa'),auth[_0xc865('0x8')](),controller[_0xc865('0xb')]);router[_0xc865('0x6')]('/voice/channels/:uniqueid/stopmixmonitor',auth[_0xc865('0x8')](),controller[_0xc865('0xc')]);router[_0xc865('0x6')]('/voice/queues',auth[_0xc865('0x8')](),controller['voiceQueues']);router[_0xc865('0x6')](_0xc865('0xd'),auth[_0xc865('0x8')](),controller[_0xc865('0xe')]);router[_0xc865('0x6')]('/mail/queues',auth[_0xc865('0x8')](),controller[_0xc865('0xf')]);router['get'](_0xc865('0x10'),auth[_0xc865('0x8')](),controller[_0xc865('0x11')]);router[_0xc865('0x6')](_0xc865('0x12'),auth[_0xc865('0x8')](),controller[_0xc865('0x13')]);router[_0xc865('0x6')]('/sms/queues',auth[_0xc865('0x8')](),controller[_0xc865('0x14')]);router[_0xc865('0x6')](_0xc865('0x15'),auth['isAuthenticated'](),controller[_0xc865('0x16')]);router[_0xc865('0x6')]('/fax/queues',auth[_0xc865('0x8')](),controller[_0xc865('0x17')]);router['get']('/voice/queues/preview/:id',auth[_0xc865('0x8')](),controller[_0xc865('0x18')]);router[_0xc865('0x6')]('/voice/queues/channels',auth[_0xc865('0x8')](),controller[_0xc865('0x19')]);router['get']('/voice/queues/channels/:uniqueid',auth[_0xc865('0x8')](),controller['voiceQueuesChannel']);router['get'](_0xc865('0x1a'),auth[_0xc865('0x8')](),controller['voiceQueuesChannelHangup']);router[_0xc865('0x6')](_0xc865('0x1b'),auth[_0xc865('0x8')](),controller['voiceQueuesChannelRedirect']);router[_0xc865('0x6')](_0xc865('0x1c'),auth[_0xc865('0x8')](),controller[_0xc865('0x1d')]);router[_0xc865('0x1e')]('/voice/queues/:id',auth['isAuthenticated'](),controller[_0xc865('0x1f')]);router[_0xc865('0x6')](_0xc865('0x20'),auth[_0xc865('0x8')](),controller[_0xc865('0x21')]);router[_0xc865('0x6')](_0xc865('0x22'),auth['isAuthenticated'](),controller[_0xc865('0x23')]);router['get'](_0xc865('0x24'),auth[_0xc865('0x8')](),controller[_0xc865('0x25')]);router[_0xc865('0x1e')](_0xc865('0x26'),auth['isAuthenticated'](),controller[_0xc865('0x27')]);router[_0xc865('0x6')](_0xc865('0x28'),auth[_0xc865('0x8')](),controller[_0xc865('0x29')]);router[_0xc865('0x6')](_0xc865('0x2a'),auth[_0xc865('0x8')](),controller[_0xc865('0x2b')]);router['get']('/campaigns',auth['isAuthenticated'](),controller['campaigns']);router[_0xc865('0x6')](_0xc865('0x2c'),auth[_0xc865('0x8')](),controller[_0xc865('0x2d')]);router[_0xc865('0x6')](_0xc865('0x2e'),auth[_0xc865('0x8')](),controller['chatQueuesWaitingInteractions']);router['get']('/mail/queues/waitinginteractions',auth[_0xc865('0x8')](),controller[_0xc865('0x2f')]);router['get'](_0xc865('0x30'),auth[_0xc865('0x8')](),controller[_0xc865('0x31')]);router[_0xc865('0x6')](_0xc865('0x32'),auth[_0xc865('0x8')](),controller[_0xc865('0x33')]);router[_0xc865('0x6')]('/sms/queues/waitinginteractions',auth[_0xc865('0x8')](),controller['smsQueuesWaitingInteractions']);router['get'](_0xc865('0x34'),auth['isAuthenticated'](),controller[_0xc865('0x35')]);router[_0xc865('0x6')](_0xc865('0x36'),auth[_0xc865('0x8')](),controller['faxQueuesWaitingInteractions']);router[_0xc865('0x37')](_0xc865('0x38'),auth[_0xc865('0x8')](),controller[_0xc865('0x39')](_0xc865('0x3a')));router[_0xc865('0x6')](_0xc865('0x3b'),auth['isAuthenticated'](),controller[_0xc865('0x3c')]);router[_0xc865('0x37')](_0xc865('0x3d'),auth[_0xc865('0x8')](),controller['queueNotify'](_0xc865('0x3e')));router[_0xc865('0x6')]('/chat/queues/:id',auth['isAuthenticated'](),controller[_0xc865('0x3f')]);router[_0xc865('0x37')](_0xc865('0x40'),auth[_0xc865('0x8')](),controller['queueNotify'](_0xc865('0x41')));router[_0xc865('0x6')](_0xc865('0x42'),auth[_0xc865('0x8')](),controller['showFaxQueues']);router[_0xc865('0x37')](_0xc865('0x43'),auth[_0xc865('0x8')](),controller[_0xc865('0x39')](_0xc865('0x44')));router[_0xc865('0x6')](_0xc865('0x45'),auth[_0xc865('0x8')](),controller['showOpenchannelQueues']);router[_0xc865('0x37')](_0xc865('0x46'),auth[_0xc865('0x8')](),controller[_0xc865('0x39')](_0xc865('0x47')));router[_0xc865('0x37')](_0xc865('0x48'),auth['isAuthenticated'](),controller[_0xc865('0x39')](_0xc865('0x49')));router[_0xc865('0x6')](_0xc865('0x4a'),auth[_0xc865('0x8')](),controller['showSmsQueues']);router[_0xc865('0x6')](_0xc865('0x4b'),auth[_0xc865('0x8')](),controller[_0xc865('0x4c')]);router[_0xc865('0x37')](_0xc865('0x4d'),auth[_0xc865('0x8')](),controller[_0xc865('0x4e')]);module['exports']=router;
\ No newline at end of file
index 24d5d4e..8dbc8a5 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(_0x27856d,_0x13b764){var _0x3a80b8=function(_0xe84430){while(--_0xe84430){_0x27856d['push'](_0x27856d['shift']());}};_0x3a80b8(++_0x13b764);}(_0xa630,0xbe));var _0x0a63=function(_0x4c3d7a,_0x19a724){_0x4c3d7a=_0x4c3d7a-0x0;var _0x2c2395=_0xa630[_0x4c3d7a];return _0x2c2395;};'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 _0x5075=['api','client','http','then','error','message','result','status','json','name','send','isNil','rows','find','VoiceChannels','query','catch','voiceChannelMixMonitor','VoiceChannelMixMonitor','merge','params','voiceChannelStopMixMonitor','VoiceChannelStopMixMonitor','voiceQueues','updateVoiceQueue','UpdateVoiceQueue','voiceQueuesPreview','voiceQueuesChannels','VoiceQueuesChannels','voiceQueuesChannel','VoiceQueuesChannel','voiceQueuesChannelHangup','outbound','Outbound','OutboundChannels','agents','Agents','agentCapacity','body','interaction','user','hasOwnProperty','MemberReport','length','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','findOrCreate','INTERACTION','SIP/%s','interface','agent','internal','capacity','telephones','Telephones','trunks','campaigns','Campaigns','chatQueues','ChatQueues','mailQueues','MailQueues','showMailQueues','MailAccounts','openchannelQueues','OpenchannelQueues','showOpenchannelQueues','smsQueues','SmsQueues','showSmsQueues','whatsappQueues','showWhatsappQueues','WhatsappQueues','FaxQueues','FaxAccounts','chatQueuesWaitingInteractions','ChatQueuesWaitingInteractions','MailQueuesWaitingInteractions','openchannelQueuesIdWaitingInteractions','OpenchannelQueuesWaitingInteractions','type','filter','map','queue_id','uniq','indexOf','smsQueuesWaitingInteractions','SmsQueuesWaitingInteractions','WhatsappQueuesWaitingInteractions','faxQueuesWaitingInteractions','queueNotify','capitalize','Website','Account','Queue','findOne','\x20Queue\x20not\x20found','Message','Interaction','\x20Message\x20not\x20found','queue','InteractionId','From','QueueId','TransferReport','create','Start','agentNotify','Channel\x20field\x20is\x20mandatory','channel','chat','Agent\x20not\x20found','MessageId','agentTransferTimeout','*,*,*,*','bluebird','moment','lodash','util','../../mysqldb','../../config/logger'];(function(_0x4d7a70,_0x2d3bfa){var _0x3aafbb=function(_0x43fbf2){while(--_0x43fbf2){_0x4d7a70['push'](_0x4d7a70['shift']());}};_0x3aafbb(++_0x2d3bfa);}(_0x5075,0x73));var _0x5507=function(_0x112a3e,_0x23f15c){_0x112a3e=_0x112a3e-0x0;var _0x577bfc=_0x5075[_0x112a3e];return _0x577bfc;};'use strict';var BPromise=require(_0x5507('0x0'));var moment=require(_0x5507('0x1'));var _=require(_0x5507('0x2'));var util=require(_0x5507('0x3'));var db=require(_0x5507('0x4'))['db'];var logger=require(_0x5507('0x5'))(_0x5507('0x6'));var jayson=require('jayson/promise');var amiClient=jayson[_0x5507('0x7')][_0x5507('0x8')]({'port':0x232a});var mailClient=jayson[_0x5507('0x7')]['http']({'port':0x232b});var routingClient=jayson['client'][_0x5507('0x8')]({'port':0x232c});function respondWithRpcPromise(_0x773559,_0x4c2d6d,_0x42c232){return new BPromise(function(_0x7cc84c,_0xbf4b50){var _0x504e05=_0x42c232?_0x42c232:amiClient;return _0x504e05['request'](_0x773559,_0x4c2d6d)[_0x5507('0x9')](function(_0x441bdc){if(_0x441bdc[_0x5507('0xa')]){if(_0x441bdc[_0x5507('0xa')]['code']===0x1f4){return _0xbf4b50(_0x441bdc[_0x5507('0xa')][_0x5507('0xb')]);}return _0x7cc84c(_0x441bdc['error'][_0x5507('0xb')]);}else{_0x7cc84c(_0x441bdc[_0x5507('0xc')]);}})['catch'](function(_0x37a1de){_0xbf4b50(_0x37a1de);});});}function respondWithResult(_0x2a2ea0,_0x32c872){_0x32c872=_0x32c872||0xc8;return function(_0x267f27){if(_0x267f27){return _0x2a2ea0[_0x5507('0xd')](_0x32c872)[_0x5507('0xe')](_0x267f27);}return _0x2a2ea0['sendStatus'](0x194);};}function handleError(_0x9cc3f9,_0x2b7c43){_0x2b7c43=_0x2b7c43||0x1f4;return function(_0xc828e5){logger[_0x5507('0xa')](_0xc828e5['stack']);if(_0xc828e5[_0x5507('0xf')]){delete _0xc828e5[_0x5507('0xf')];}_0x9cc3f9[_0x5507('0xd')](_0x2b7c43)[_0x5507('0x10')](_0xc828e5);};}function findById(_0xa6e4b3){return function(_0x2ede34){if(!_[_0x5507('0x11')](_0xa6e4b3)&&!_[_0x5507('0x11')](_0x2ede34)&&!_[_0x5507('0x11')](_0x2ede34[_0x5507('0x12')])){return _[_0x5507('0x13')](_0x2ede34[_0x5507('0x12')],function(_0x3822dd){return _0x3822dd['id']==_0xa6e4b3;});}return null;};}exports['voiceChannels']=function(_0x14dab0,_0x276a81){return respondWithRpcPromise(_0x5507('0x14'),_0x14dab0[_0x5507('0x15')])['then'](respondWithResult(_0x276a81,null))[_0x5507('0x16')](handleError(_0x276a81,null));};exports[_0x5507('0x17')]=function(_0x1a54b0,_0x3ca1f7){return respondWithRpcPromise(_0x5507('0x18'),_[_0x5507('0x19')](_0x1a54b0['query'],_0x1a54b0[_0x5507('0x1a')]))[_0x5507('0x9')](respondWithResult(_0x3ca1f7,null))[_0x5507('0x16')](handleError(_0x3ca1f7,null));};exports[_0x5507('0x1b')]=function(_0x141d22,_0x2de482){return respondWithRpcPromise(_0x5507('0x1c'),_[_0x5507('0x19')](_0x141d22[_0x5507('0x15')],_0x141d22[_0x5507('0x1a')]))[_0x5507('0x9')](respondWithResult(_0x2de482,null))[_0x5507('0x16')](handleError(_0x2de482,null));};exports[_0x5507('0x1d')]=function(_0x2ee6ed,_0x1a2203){return respondWithRpcPromise('VoiceQueues',_0x2ee6ed[_0x5507('0x15')])['then'](respondWithResult(_0x1a2203,null))[_0x5507('0x16')](handleError(_0x1a2203,null));};exports['showVoiceQueues']=function(_0xa66a01,_0x24668b){return respondWithRpcPromise('VoiceQueues',_0xa66a01['query'])[_0x5507('0x9')](findById(_0xa66a01[_0x5507('0x1a')]['id']))['then'](respondWithResult(_0x24668b,null))[_0x5507('0x16')](handleError(_0x24668b,null));};exports[_0x5507('0x1e')]=function(_0x85d383,_0x38f4d9){return respondWithRpcPromise(_0x5507('0x1f'),_[_0x5507('0x19')](_0x85d383['body'],_0x85d383[_0x5507('0x1a')]))[_0x5507('0x9')](respondWithResult(_0x38f4d9,null))[_0x5507('0x16')](handleError(_0x38f4d9,null));};exports[_0x5507('0x20')]=function(_0x29dd58,_0x495bbe){return respondWithRpcPromise('VoiceQueuesPreview',_[_0x5507('0x19')](_0x29dd58[_0x5507('0x15')],_0x29dd58[_0x5507('0x1a')]))[_0x5507('0x9')](respondWithResult(_0x495bbe,null))['catch'](handleError(_0x495bbe,null));};exports[_0x5507('0x21')]=function(_0x13b6e5,_0xab91bc){return respondWithRpcPromise(_0x5507('0x22'),_0x13b6e5[_0x5507('0x15')])[_0x5507('0x9')](respondWithResult(_0xab91bc,null))[_0x5507('0x16')](handleError(_0xab91bc,null));};exports[_0x5507('0x23')]=function(_0x5ede36,_0xf61ba7){return respondWithRpcPromise(_0x5507('0x24'),_[_0x5507('0x19')](_0x5ede36['query'],_0x5ede36['params']))[_0x5507('0x9')](respondWithResult(_0xf61ba7,null))[_0x5507('0x16')](handleError(_0xf61ba7,null));};exports[_0x5507('0x25')]=function(_0x17d01c,_0x143d97){return respondWithRpcPromise('VoiceQueuesChannelHangup',_['merge'](_0x17d01c[_0x5507('0x15')],_0x17d01c[_0x5507('0x1a')]))[_0x5507('0x9')](respondWithResult(_0x143d97,null))[_0x5507('0x16')](handleError(_0x143d97,null));};exports['voiceQueuesChannelRedirect']=function(_0x54e4bd,_0x23ea7c){return respondWithRpcPromise('VoiceQueuesChannelRedirect',_[_0x5507('0x19')](_0x54e4bd[_0x5507('0x15')],_0x54e4bd[_0x5507('0x1a')]))[_0x5507('0x9')](respondWithResult(_0x23ea7c,null))[_0x5507('0x16')](handleError(_0x23ea7c,null));};exports[_0x5507('0x26')]=function(_0x1c8506,_0x2b962d){return respondWithRpcPromise(_0x5507('0x27'),_0x1c8506[_0x5507('0x15')])['then'](respondWithResult(_0x2b962d,null))['catch'](handleError(_0x2b962d,null));};exports['outboundChannels']=function(_0x570eee,_0x526022){return respondWithRpcPromise(_0x5507('0x28'),_0x570eee[_0x5507('0x15')])[_0x5507('0x9')](respondWithResult(_0x526022,null))[_0x5507('0x16')](handleError(_0x526022,null));};exports[_0x5507('0x29')]=function(_0xbef058,_0x101de3){var _0xbc9f93;return respondWithRpcPromise(_0x5507('0x2a'),_0xbef058[_0x5507('0x15')])[_0x5507('0x9')](function(_0x2db0b2){_0xbc9f93=_0x2db0b2;return respondWithRpcPromise(_0x5507('0x2a'),_0xbef058['query'],routingClient);})['then'](function(_0x50eb32){return _[_0x5507('0x19')]({},_0x50eb32,_0xbc9f93);})[_0x5507('0x9')](respondWithResult(_0x101de3,null))[_0x5507('0x16')](handleError(_0x101de3,null));};exports[_0x5507('0x2b')]=function(_0xcd4df5,_0x17d7db){if(_0xcd4df5[_0x5507('0x2c')]&&_0xcd4df5[_0x5507('0x2c')][_0x5507('0x2d')]&&_0xcd4df5[_0x5507('0x2e')]&&_0xcd4df5[_0x5507('0x2e')][_0x5507('0xf')]){for(var _0x24d7b5 in _0xcd4df5[_0x5507('0x2c')][_0x5507('0x2d')]){if(_0xcd4df5[_0x5507('0x2c')][_0x5507('0x2d')][_0x5507('0x2f')](_0x24d7b5)){db[_0x5507('0x30')]['findAll']({'where':{'channel':_0x24d7b5,'membername':_0xcd4df5[_0x5507('0x2e')][_0x5507('0xf')],'type':'INTERACTION','exitAt':null,'uniqueid':_0xcd4df5['body'][_0x5507('0x2d')][_0x24d7b5]&&_0xcd4df5[_0x5507('0x2c')][_0x5507('0x2d')][_0x24d7b5][_0x5507('0x31')]?{'$notIn':_0xcd4df5[_0x5507('0x2c')]['interaction'][_0x24d7b5]}:{'$ne':null}}})[_0x5507('0x9')](function(_0x39ac17){var _0x1dfc9c=moment()['format'](_0x5507('0x32'));for(var _0x33022e=0x0,_0xadea4c=_0x39ac17[_0x5507('0x31')];_0x33022e<_0xadea4c;_0x33022e+=0x1){_0x39ac17[_0x33022e][_0x5507('0x33')]({'exitAt':_0x1dfc9c});}});for(var _0x48d72b=0x0;_0x48d72b<_0xcd4df5[_0x5507('0x2c')]['interaction'][_0x24d7b5][_0x5507('0x31')];_0x48d72b+=0x1){db[_0x5507('0x30')][_0x5507('0x34')]({'where':{'channel':_0x24d7b5,'membername':_0xcd4df5[_0x5507('0x2e')][_0x5507('0xf')],'type':_0x5507('0x35'),'uniqueid':_0xcd4df5[_0x5507('0x2c')][_0x5507('0x2d')][_0x24d7b5][_0x48d72b],'exitAt':null},'defaults':{'channel':_0x24d7b5,'membername':_0xcd4df5['user'][_0x5507('0xf')],'interface':_[_0x5507('0x11')](_0xcd4df5['user']['interface'])?util['format'](_0x5507('0x36'),_0xcd4df5['user'][_0x5507('0xf')]):_0xcd4df5['user'][_0x5507('0x37')],'type':'INTERACTION','enterAt':moment()['format'](_0x5507('0x32')),'role':_0x5507('0x38'),'internal':_0xcd4df5[_0x5507('0x2e')][_0x5507('0x39')],'uniqueid':_0xcd4df5[_0x5507('0x2c')][_0x5507('0x2d')][_0x24d7b5][_0x48d72b]}});}}}}return respondWithRpcPromise('AgentCapacity',{'id':_0xcd4df5[_0x5507('0x1a')]['id'],'capacity':_0xcd4df5[_0x5507('0x2c')][_0x5507('0x3a')]},routingClient)['then'](respondWithResult(_0x17d7db,null))[_0x5507('0x16')](handleError(_0x17d7db,null));};exports[_0x5507('0x3b')]=function(_0x505e71,_0x2e0cfc){return respondWithRpcPromise(_0x5507('0x3c'),_0x505e71[_0x5507('0x15')])[_0x5507('0x9')](respondWithResult(_0x2e0cfc,null))[_0x5507('0x16')](handleError(_0x2e0cfc,null));};exports[_0x5507('0x3d')]=function(_0x245456,_0x1bb575){return respondWithRpcPromise('Trunks',_0x245456['query'])[_0x5507('0x9')](respondWithResult(_0x1bb575,null))[_0x5507('0x16')](handleError(_0x1bb575,null));};exports[_0x5507('0x3e')]=function(_0x1b34c8,_0xce851d){return respondWithRpcPromise(_0x5507('0x3f'),_0x1b34c8[_0x5507('0x15')])[_0x5507('0x9')](respondWithResult(_0xce851d,null))[_0x5507('0x16')](handleError(_0xce851d,null));};exports[_0x5507('0x40')]=function(_0x40cda2,_0x13dc8b){return respondWithRpcPromise(_0x5507('0x41'),_0x40cda2[_0x5507('0x15')],routingClient)[_0x5507('0x9')](respondWithResult(_0x13dc8b,null))[_0x5507('0x16')](handleError(_0x13dc8b,null));};exports['showChatQueues']=function(_0x3f47af,_0x56e0cd){return respondWithRpcPromise('ChatQueues',_0x3f47af[_0x5507('0x15')],routingClient)[_0x5507('0x9')](findById(_0x3f47af[_0x5507('0x1a')]['id']))[_0x5507('0x9')](respondWithResult(_0x56e0cd,null))['catch'](handleError(_0x56e0cd,null));};exports[_0x5507('0x42')]=function(_0x2f41a9,_0x314d4e){return respondWithRpcPromise(_0x5507('0x43'),_0x2f41a9[_0x5507('0x15')],routingClient)[_0x5507('0x9')](respondWithResult(_0x314d4e,null))['catch'](handleError(_0x314d4e,null));};exports[_0x5507('0x44')]=function(_0x46e589,_0x3a2f9f){return respondWithRpcPromise('MailQueues',_0x46e589['query'],routingClient)[_0x5507('0x9')](findById(_0x46e589['params']['id']))[_0x5507('0x9')](respondWithResult(_0x3a2f9f,null))[_0x5507('0x16')](handleError(_0x3a2f9f,null));};exports['mailAccounts']=function(_0x3e796d,_0x1b622f){return respondWithRpcPromise(_0x5507('0x45'),_0x3e796d[_0x5507('0x15')],mailClient)[_0x5507('0x9')](respondWithResult(_0x1b622f,null))[_0x5507('0x16')](handleError(_0x1b622f,null));};exports[_0x5507('0x46')]=function(_0x2928f2,_0x737d39){return respondWithRpcPromise(_0x5507('0x47'),_0x2928f2[_0x5507('0x15')],routingClient)[_0x5507('0x9')](respondWithResult(_0x737d39,null))['catch'](handleError(_0x737d39,null));};exports[_0x5507('0x48')]=function(_0x2e904b,_0x219e34){return respondWithRpcPromise(_0x5507('0x47'),_0x2e904b[_0x5507('0x15')],routingClient)['then'](findById(_0x2e904b[_0x5507('0x1a')]['id']))['then'](respondWithResult(_0x219e34,null))[_0x5507('0x16')](handleError(_0x219e34,null));};exports[_0x5507('0x49')]=function(_0x241733,_0x54c009){return respondWithRpcPromise(_0x5507('0x4a'),_0x241733[_0x5507('0x15')],routingClient)[_0x5507('0x9')](respondWithResult(_0x54c009,null))['catch'](handleError(_0x54c009,null));};exports[_0x5507('0x4b')]=function(_0x5cfdb0,_0x3dca7d){return respondWithRpcPromise('SmsQueues',_0x5cfdb0['query'],routingClient)[_0x5507('0x9')](findById(_0x5cfdb0[_0x5507('0x1a')]['id']))[_0x5507('0x9')](respondWithResult(_0x3dca7d,null))[_0x5507('0x16')](handleError(_0x3dca7d,null));};exports[_0x5507('0x4c')]=function(_0x31cc0d,_0x4bf567){return respondWithRpcPromise('WhatsappQueues',_0x31cc0d[_0x5507('0x15')],routingClient)[_0x5507('0x9')](respondWithResult(_0x4bf567,null))[_0x5507('0x16')](handleError(_0x4bf567,null));};exports[_0x5507('0x4d')]=function(_0x5e3e73,_0x388faa){return respondWithRpcPromise(_0x5507('0x4e'),_0x5e3e73[_0x5507('0x15')],routingClient)[_0x5507('0x9')](findById(_0x5e3e73[_0x5507('0x1a')]['id']))[_0x5507('0x9')](respondWithResult(_0x388faa,null))[_0x5507('0x16')](handleError(_0x388faa,null));};exports['faxQueues']=function(_0x3802dd,_0xfdbbe5){return respondWithRpcPromise(_0x5507('0x4f'),_0x3802dd['query'],routingClient)[_0x5507('0x9')](respondWithResult(_0xfdbbe5,null))['catch'](handleError(_0xfdbbe5,null));};exports['showFaxQueues']=function(_0x55c257,_0x1fef49){return respondWithRpcPromise(_0x5507('0x4f'),_0x55c257[_0x5507('0x15')],routingClient)[_0x5507('0x9')](findById(_0x55c257[_0x5507('0x1a')]['id']))[_0x5507('0x9')](respondWithResult(_0x1fef49,null))[_0x5507('0x16')](handleError(_0x1fef49,null));};exports['faxAccounts']=function(_0x1812d7,_0x48ed80){return respondWithRpcPromise(_0x5507('0x50'),_0x1812d7[_0x5507('0x15')])[_0x5507('0x9')](respondWithResult(_0x48ed80,null))[_0x5507('0x16')](handleError(_0x48ed80,null));};exports[_0x5507('0x51')]=function(_0x120108,_0x4423a8){return respondWithRpcPromise(_0x5507('0x52'),_0x120108[_0x5507('0x15')],routingClient)[_0x5507('0x9')](respondWithResult(_0x4423a8,null))[_0x5507('0x16')](handleError(_0x4423a8,null));};exports['mailQueuesWaitingInteractions']=function(_0x94b11c,_0xbb0a62){return respondWithRpcPromise(_0x5507('0x53'),_0x94b11c['query'],routingClient)[_0x5507('0x9')](respondWithResult(_0xbb0a62,null))[_0x5507('0x16')](handleError(_0xbb0a62,null));};exports['openchannelQueuesWaitingInteractions']=function(_0x26e777,_0x5815fb){return respondWithRpcPromise('OpenchannelQueuesWaitingInteractions',_0x26e777[_0x5507('0x15')],routingClient)['then'](respondWithResult(_0x5815fb,null))[_0x5507('0x16')](handleError(_0x5815fb,null));};exports[_0x5507('0x54')]=function(_0xfb59be,_0xda51d5){return respondWithRpcPromise(_0x5507('0x55'),_0xfb59be[_0x5507('0x15')],routingClient)['then'](function(_0x43fccf){if(_0xfb59be[_0x5507('0x15')][_0x5507('0x56')]!==undefined){var _0x75aa3c=_(_0x43fccf[_0x5507('0x12')])[_0x5507('0x57')]([_0xfb59be[_0x5507('0x15')][_0x5507('0x56')],_0xfb59be[_0x5507('0x1a')]['id']])[_0x5507('0x58')](_0x5507('0x59'))[_0x5507('0x5a')]()['value']();return _0x43fccf[_0x5507('0x12')][_0x5507('0x57')](function(_0x10f066){return _0x75aa3c[_0x5507('0x5b')](_0x10f066[_0x5507('0x59')])>-0x1;});}else{return _0x43fccf[_0x5507('0x12')]['filter'](function(_0x1dad83){return _0x1dad83['queue_id']===parseInt(_0xfb59be[_0x5507('0x1a')]['id']);});}})['then'](respondWithResult(_0xda51d5,null))['catch'](handleError(_0xda51d5,null));};exports[_0x5507('0x5c')]=function(_0x20274e,_0x2979b1){return respondWithRpcPromise(_0x5507('0x5d'),_0x20274e[_0x5507('0x15')],routingClient)['then'](respondWithResult(_0x2979b1,null))[_0x5507('0x16')](handleError(_0x2979b1,null));};exports['whatsappQueuesWaitingInteractions']=function(_0x410c16,_0x471142){return respondWithRpcPromise(_0x5507('0x5e'),_0x410c16[_0x5507('0x15')],routingClient)['then'](respondWithResult(_0x471142,null))[_0x5507('0x16')](handleError(_0x471142,null));};exports[_0x5507('0x5f')]=function(_0x42bef4,_0x5a8a1b){return respondWithRpcPromise('FaxQueuesWaitingInteractions',_0x42bef4[_0x5507('0x15')],routingClient)[_0x5507('0x9')](respondWithResult(_0x5a8a1b,null))[_0x5507('0x16')](handleError(_0x5a8a1b,null));};exports[_0x5507('0x60')]=function(_0x77a772){return function(_0x26f796,_0x3d7e21){var _0x10b62e,_0x18bed6;var _0x27265e=_[_0x5507('0x61')](_0x77a772);var _0x160e54=_0x77a772==='chat'?_0x5507('0x62'):_0x5507('0x63');return db[_0x27265e+_0x5507('0x64')][_0x5507('0x65')]({'raw':!![],'where':{'id':_0x26f796[_0x5507('0x1a')]['id']}})[_0x5507('0x9')](function(_0x33717e){if(_['isNil'](_0x33717e)){throw new Error(_0x27265e+_0x5507('0x66'));}_0x10b62e=_0x33717e;return db[_0x27265e+_0x5507('0x67')][_0x5507('0x65')]({'where':{'id':_0x26f796[_0x5507('0x2c')]['messageId']},'include':[{'model':db[_0x27265e+_0x5507('0x68')],'as':_0x5507('0x68')},{'model':db[_0x27265e+_0x160e54],'as':_0x5507('0x63')}]});})[_0x5507('0x9')](function(_0x1a5d2e){if(_[_0x5507('0x11')](_0x1a5d2e)){throw new Error(_0x27265e+_0x5507('0x69'));}_0x18bed6=_0x1a5d2e;return _0x1a5d2e['update']({'read':0x0,'readAt':null,'UserId':null});})[_0x5507('0x9')](function(){var _0x38144b={'uniqueid':_0x77a772+'.'+_0x18bed6['id']+'.'+_0x18bed6[_0x5507('0x68')]['id'],'FromUserId':_0x26f796[_0x5507('0x2e')]['id'],'type':_0x5507('0x6a')};_0x38144b[_0x27265e+'MessageId']=_0x18bed6['id'];_0x38144b[_0x27265e+_0x5507('0x6b')]=_0x18bed6[_0x5507('0x68')]['id'];_0x38144b[_0x5507('0x6c')+_0x27265e+_0x160e54+'Id']=_0x18bed6[_0x5507('0x63')]['id'];_0x38144b['To'+_0x27265e+_0x5507('0x6d')]=_0x10b62e['id'];return db[_0x27265e+_0x5507('0x6e')][_0x5507('0x6f')](_0x38144b);})[_0x5507('0x9')](function(){return respondWithRpcPromise(_0x5507('0x70'),{'channel':_0x77a772,'interaction':_0x18bed6[_0x5507('0x68')],'message':_0x18bed6,'account':_0x18bed6[_0x5507('0x63')],'applications':[{'id':0x0,'priority':0x1,'app':_0x5507('0x6a'),'appdata':_0x10b62e[_0x5507('0xf')]+','+(_0x18bed6['Account']['queueTransferTimeout']||0x12c),'interval':'*,*,*,*'}]},routingClient);})[_0x5507('0x9')](respondWithResult(_0x3d7e21,null))[_0x5507('0x16')](handleError(_0x3d7e21,null));};};exports[_0x5507('0x71')]=function(_0x3b04a7,_0x1e913a){var _0x4e1578,_0x2339c7;if(_[_0x5507('0x11')](_0x3b04a7[_0x5507('0x2c')]['channel'])){throw new Error(_0x5507('0x72'));}var _0x5808d9=_0x3b04a7['body'][_0x5507('0x73')];var _0x58b56c=_[_0x5507('0x61')](_0x5808d9);var _0x5c6043=_0x5808d9===_0x5507('0x74')?_0x5507('0x62'):_0x5507('0x63');return db['User']['findOne']({'raw':!![],'where':{'id':_0x3b04a7[_0x5507('0x1a')]['id'],'role':_0x5507('0x38')}})[_0x5507('0x9')](function(_0x51bec0){if(_[_0x5507('0x11')](_0x51bec0)){throw new Error(_0x5507('0x75'));}_0x4e1578=_0x51bec0;return db[_0x58b56c+_0x5507('0x67')][_0x5507('0x65')]({'where':{'id':_0x3b04a7['body']['messageId']},'include':[{'model':db[_0x58b56c+_0x5507('0x68')],'as':_0x5507('0x68')},{'model':db[_0x58b56c+_0x5c6043],'as':'Account'}]});})[_0x5507('0x9')](function(_0x13c0f5){if(_[_0x5507('0x11')](_0x13c0f5)){throw new Error(_0x58b56c+_0x5507('0x69'));}_0x2339c7=_0x13c0f5;return _0x13c0f5['update']({'read':0x0,'readAt':null,'UserId':null});})[_0x5507('0x9')](function(){var _0x3a2b0f={'uniqueid':_0x5808d9+'.'+_0x2339c7['id']+'.'+_0x2339c7['Interaction']['id'],'FromUserId':_0x3b04a7[_0x5507('0x2e')]['id'],'type':_0x5507('0x6a'),'ToUserId':_0x4e1578['id']};_0x3a2b0f[_0x58b56c+_0x5507('0x76')]=_0x2339c7['id'];_0x3a2b0f[_0x58b56c+'InteractionId']=_0x2339c7[_0x5507('0x68')]['id'];_0x3a2b0f[_0x5507('0x6c')+_0x58b56c+_0x5c6043+'Id']=_0x2339c7['Account']['id'];return db[_0x58b56c+_0x5507('0x6e')][_0x5507('0x6f')](_0x3a2b0f);})['then'](function(){return respondWithRpcPromise(_0x5507('0x70'),{'channel':_0x5808d9,'interaction':_0x2339c7[_0x5507('0x68')],'message':_0x2339c7,'account':_0x2339c7[_0x5507('0x63')],'applications':[{'id':0x0,'priority':0x1,'app':'agent','appdata':_0x4e1578[_0x5507('0xf')]+','+(_0x2339c7[_0x5507('0x63')][_0x5507('0x77')]||0x12c),'interval':_0x5507('0x78')}]},routingClient);})[_0x5507('0x9')](respondWithResult(_0x1e913a,null))[_0x5507('0x16')](handleError(_0x1e913a,null));};
\ No newline at end of file
index 0846a91..836039e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacdb=['update','destroy','exports','multer','path','express','../../components/auth/service','../../components/interaction/service','../../config/environment','./schedule.controller','get','index','/:id','isAuthenticated','/:id/run','run','post','put'];(function(_0x12f028,_0x43d023){var _0x278cc3=function(_0x159156){while(--_0x159156){_0x12f028['push'](_0x12f028['shift']());}};_0x278cc3(++_0x43d023);}(_0xacdb,0x147));var _0xbacd=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xacdb[_0x3dd15e];return _0x231fd0;};'use strict';var multer=require(_0xbacd('0x0'));var util=require('util');var path=require(_0xbacd('0x1'));var timeout=require('connect-timeout');var express=require(_0xbacd('0x2'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xbacd('0x3'));var interaction=require(_0xbacd('0x4'));var config=require(_0xbacd('0x5'));var controller=require(_0xbacd('0x6'));router[_0xbacd('0x7')]('/',auth['isAuthenticated'](),controller[_0xbacd('0x8')]);router['get'](_0xbacd('0x9'),auth[_0xbacd('0xa')](),controller['show']);router['get'](_0xbacd('0xb'),auth[_0xbacd('0xa')](),controller[_0xbacd('0xc')]);router[_0xbacd('0xd')]('/',auth[_0xbacd('0xa')](),controller['create']);router[_0xbacd('0xe')](_0xbacd('0x9'),auth[_0xbacd('0xa')](),controller[_0xbacd('0xf')]);router['delete'](_0xbacd('0x9'),auth[_0xbacd('0xa')](),controller[_0xbacd('0x10')]);module[_0xbacd('0x11')]=router;
\ No newline at end of file
+var _0xbc4b=['put','update','delete','exports','multer','util','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/run','post','create'];(function(_0x1054f4,_0x23592f){var _0x329d9b=function(_0x29d8c5){while(--_0x29d8c5){_0x1054f4['push'](_0x1054f4['shift']());}};_0x329d9b(++_0x23592f);}(_0xbc4b,0xf4));var _0xbbc4=function(_0x290665,_0x1fbc17){_0x290665=_0x290665-0x0;var _0x2e2322=_0xbc4b[_0x290665];return _0x2e2322;};'use strict';var multer=require(_0xbbc4('0x0'));var util=require(_0xbbc4('0x1'));var path=require(_0xbbc4('0x2'));var timeout=require('connect-timeout');var express=require(_0xbbc4('0x3'));var router=express['Router']();var fs_extra=require(_0xbbc4('0x4'));var auth=require(_0xbbc4('0x5'));var interaction=require(_0xbbc4('0x6'));var config=require(_0xbbc4('0x7'));var controller=require('./schedule.controller');router[_0xbbc4('0x8')]('/',auth[_0xbbc4('0x9')](),controller[_0xbbc4('0xa')]);router[_0xbbc4('0x8')](_0xbbc4('0xb'),auth[_0xbbc4('0x9')](),controller[_0xbbc4('0xc')]);router['get'](_0xbbc4('0xd'),auth[_0xbbc4('0x9')](),controller['run']);router[_0xbbc4('0xe')]('/',auth[_0xbbc4('0x9')](),controller[_0xbbc4('0xf')]);router[_0xbbc4('0x10')](_0xbbc4('0xb'),auth[_0xbbc4('0x9')](),controller[_0xbbc4('0x11')]);router[_0xbbc4('0x12')](_0xbbc4('0xb'),auth[_0xbbc4('0x9')](),controller['destroy']);module[_0xbbc4('0x13')]=router;
\ No newline at end of file
index 67d01a3..42f35cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa26c=['sequelize','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','years','quarters','weeks','days','hours','csv','pdf','ENUM','custom','default','TEXT'];(function(_0x3935d5,_0x5c7b4c){var _0x4944fc=function(_0x11e23b){while(--_0x11e23b){_0x3935d5['push'](_0x3935d5['shift']());}};_0x4944fc(++_0x5c7b4c);}(_0xa26c,0x17a));var _0xca26=function(_0x126b55,_0x248105){_0x126b55=_0x126b55-0x0;var _0x2b940e=_0xa26c[_0x126b55];return _0x2b940e;};'use strict';var Sequelize=require(_0xca26('0x0'));module[_0xca26('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'description':{'type':Sequelize[_0xca26('0x2')]},'active':{'type':Sequelize[_0xca26('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0xca26('0x2')],'allowNull':![],'defaultValue':_0xca26('0x4')},'startAt':{'type':Sequelize[_0xca26('0x5')],'allowNull':![]},'endAt':{'type':Sequelize[_0xca26('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0xca26('0x6')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize['ENUM'](_0xca26('0x7'),_0xca26('0x8'),'months',_0xca26('0x9'),_0xca26('0xa'),_0xca26('0xb'),'minutes'),'allowNull':![],'defaultValue':_0xca26('0xa')},'output':{'type':Sequelize['ENUM'](_0xca26('0xc'),_0xca26('0xd'),'xlsx'),'allowNull':![],'defaultValue':_0xca26('0xc')},'type':{'type':Sequelize[_0xca26('0xe')](_0xca26('0xf'),_0xca26('0x10')),'allowNull':![],'defaultValue':_0xca26('0xf')},'sendMail':{'type':Sequelize[_0xca26('0x3')],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize[_0xca26('0x11')]},'bcc':{'type':Sequelize['TEXT']},'sendIfEmpty':{'type':Sequelize[_0xca26('0x3')],'defaultValue':!![]}};
\ No newline at end of file
+var _0xadc9=['TEXT','sequelize','exports','STRING','BOOLEAN','0\x200\x20*\x20*\x20*','DATE','INTEGER','ENUM','years','quarters','months','weeks','hours','csv','xlsx','custom','default'];(function(_0x145cd8,_0x1698d9){var _0x572554=function(_0x37d496){while(--_0x37d496){_0x145cd8['push'](_0x145cd8['shift']());}};_0x572554(++_0x1698d9);}(_0xadc9,0x169));var _0x9adc=function(_0xc812a0,_0x37a9d3){_0xc812a0=_0xc812a0-0x0;var _0x14f339=_0xadc9[_0xc812a0];return _0x14f339;};'use strict';var Sequelize=require(_0x9adc('0x0'));module[_0x9adc('0x1')]={'name':{'type':Sequelize[_0x9adc('0x2')],'allowNull':![]},'description':{'type':Sequelize[_0x9adc('0x2')]},'active':{'type':Sequelize[_0x9adc('0x3')],'allowNull':![],'defaultValue':![]},'cron':{'type':Sequelize[_0x9adc('0x2')],'allowNull':![],'defaultValue':_0x9adc('0x4')},'startAt':{'type':Sequelize[_0x9adc('0x5')],'allowNull':![]},'endAt':{'type':Sequelize[_0x9adc('0x5')],'allowNull':![]},'subtractNumber':{'type':Sequelize[_0x9adc('0x6')],'allowNull':![],'defaultValue':0x1,'validate':{'min':0x1}},'subtractUnit':{'type':Sequelize[_0x9adc('0x7')](_0x9adc('0x8'),_0x9adc('0x9'),_0x9adc('0xa'),_0x9adc('0xb'),'days',_0x9adc('0xc'),'minutes'),'allowNull':![],'defaultValue':'days'},'output':{'type':Sequelize[_0x9adc('0x7')](_0x9adc('0xd'),'pdf',_0x9adc('0xe')),'allowNull':![],'defaultValue':'csv'},'type':{'type':Sequelize[_0x9adc('0x7')](_0x9adc('0xf'),_0x9adc('0x10')),'allowNull':![],'defaultValue':_0x9adc('0xf')},'sendMail':{'type':Sequelize[_0x9adc('0x3')],'defaultValue':![]},'email':{'type':Sequelize['STRING']},'cc':{'type':Sequelize['TEXT']},'bcc':{'type':Sequelize[_0x9adc('0x11')]},'sendIfEmpty':{'type':Sequelize[_0x9adc('0x3')],'defaultValue':!![]}};
\ No newline at end of file
index 489781e..0bb8303 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5aa8=['../../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','set','Content-Range','apply','reject','save','update','then','get','UserProfileResource','error','stack','name','send','Schedule','rawAttributes','fieldName','key','query','keys','filters','model','attributes','intersection','fields','length','nolimit','limit','sort','pick','filter','where','merge','map','type','VIRTUAL','include','findAll','rows','catch','includeAll','options','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Scheduler','UserProfileSection','find','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','params','destroy','run','../../config/schedule','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service'];(function(_0x1a34c6,_0x2ac559){var _0x2b6574=function(_0x21eda4){while(--_0x21eda4){_0x1a34c6['push'](_0x1a34c6['shift']());}};_0x2b6574(++_0x2ac559);}(_0x5aa8,0x1b3));var _0x85aa=function(_0x331580,_0x269301){_0x331580=_0x331580-0x0;var _0x201b6a=_0x5aa8[_0x331580];return _0x201b6a;};'use strict';var emlformat=require(_0x85aa('0x0'));var rimraf=require(_0x85aa('0x1'));var zipdir=require(_0x85aa('0x2'));var jsonpatch=require(_0x85aa('0x3'));var rp=require(_0x85aa('0x4'));var moment=require(_0x85aa('0x5'));var BPromise=require(_0x85aa('0x6'));var Mustache=require('mustache');var util=require(_0x85aa('0x7'));var path=require(_0x85aa('0x8'));var sox=require(_0x85aa('0x9'));var csv=require(_0x85aa('0xa'));var ejs=require(_0x85aa('0xb'));var fs=require('fs');var fs_extra=require(_0x85aa('0xc'));var _=require('lodash');var squel=require(_0x85aa('0xd'));var crypto=require(_0x85aa('0xe'));var jsforce=require(_0x85aa('0xf'));var deskjs=require(_0x85aa('0x10'));var toCsv=require(_0x85aa('0xa'));var querystring=require(_0x85aa('0x11'));var Papa=require(_0x85aa('0x12'));var Redis=require('ioredis');var authService=require(_0x85aa('0x13'));var qs=require(_0x85aa('0x14'));var as=require(_0x85aa('0x15'));var hardwareService=require(_0x85aa('0x16'));var logger=require(_0x85aa('0x17'))(_0x85aa('0x18'));var utils=require(_0x85aa('0x19'));var config=require(_0x85aa('0x1a'));var licenseUtil=require(_0x85aa('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5ce3cf,_0x947ad5){_0x947ad5=_0x947ad5||0xcc;return function(_0x5e062a){if(_0x5e062a){return _0x5ce3cf[_0x85aa('0x1c')](_0x947ad5);}return _0x5ce3cf[_0x85aa('0x1d')](_0x947ad5)[_0x85aa('0x1e')]();};}function respondWithResult(_0x4c4b7e,_0x136b30){_0x136b30=_0x136b30||0xc8;return function(_0x49c1ef){if(_0x49c1ef){return _0x4c4b7e[_0x85aa('0x1d')](_0x136b30)[_0x85aa('0x1f')](_0x49c1ef);}};}function respondWithFilteredResult(_0x1e092e,_0x4a3c0e){return function(_0x3bd75d){if(_0x3bd75d){var _0x16c973=typeof _0x4a3c0e[_0x85aa('0x20')]===_0x85aa('0x21')&&typeof _0x4a3c0e['limit']==='undefined';var _0x27aa2d=_0x3bd75d[_0x85aa('0x22')];var _0x3269be=_0x16c973?0x0:_0x4a3c0e['offset'];var _0x36ec18=_0x16c973?_0x3bd75d[_0x85aa('0x22')]:_0x4a3c0e[_0x85aa('0x20')]+_0x4a3c0e['limit'];var _0x5f84ca;if(_0x36ec18>=_0x27aa2d){_0x36ec18=_0x27aa2d;_0x5f84ca=0xc8;}else{_0x5f84ca=0xce;}_0x1e092e[_0x85aa('0x1d')](_0x5f84ca);return _0x1e092e[_0x85aa('0x23')](_0x85aa('0x24'),_0x3269be+'-'+_0x36ec18+'/'+_0x27aa2d)[_0x85aa('0x1f')](_0x3bd75d);}return null;};}function patchUpdates(_0x533b0f){return function(_0x4b23f6){try{jsonpatch[_0x85aa('0x25')](_0x4b23f6,_0x533b0f,!![]);}catch(_0x16604a){return BPromise[_0x85aa('0x26')](_0x16604a);}return _0x4b23f6[_0x85aa('0x27')]();};}function saveUpdates(_0x2601b5,_0x2eb08b){return function(_0x5b32ac){if(_0x5b32ac){return _0x5b32ac[_0x85aa('0x28')](_0x2601b5)[_0x85aa('0x29')](function(_0x2fe49f){return _0x2fe49f;});}return null;};}function removeEntity(_0x5cafc0,_0xd5824){return function(_0x24f5d2){if(_0x24f5d2){return _0x24f5d2['destroy']()[_0x85aa('0x29')](function(){var _0x3eaeb=_0x24f5d2[_0x85aa('0x2a')]({'plain':!![]});var _0x4ce539='Scheduler';return db[_0x85aa('0x2b')]['destroy']({'where':{'type':_0x4ce539,'resourceId':_0x3eaeb['id']}})['then'](function(){return _0x24f5d2;});})[_0x85aa('0x29')](function(){_0x5cafc0['status'](0xcc)[_0x85aa('0x1e')]();});}};}function handleEntityNotFound(_0xf08624,_0x4e4ece){return function(_0xc98d0){if(!_0xc98d0){_0xf08624['sendStatus'](0x194);}return _0xc98d0;};}function handleError(_0x32dbe0,_0x21e95b){_0x21e95b=_0x21e95b||0x1f4;return function(_0x5ceaf0){logger[_0x85aa('0x2c')](_0x5ceaf0[_0x85aa('0x2d')]);if(_0x5ceaf0[_0x85aa('0x2e')]){delete _0x5ceaf0[_0x85aa('0x2e')];}_0x32dbe0[_0x85aa('0x1d')](_0x21e95b)[_0x85aa('0x2f')](_0x5ceaf0);};}exports['index']=function(_0x44bb9a,_0x5f13f0){var _0x32a413={},_0x2a3963={},_0x1412f3={'count':0x0,'rows':[]};var _0xf60b62=_['map'](db[_0x85aa('0x30')][_0x85aa('0x31')],function(_0x45d586){return{'name':_0x45d586[_0x85aa('0x32')],'type':_0x45d586['type'][_0x85aa('0x33')]};});_0x2a3963['model']=_['map'](_0xf60b62,'name');_0x2a3963[_0x85aa('0x34')]=_[_0x85aa('0x35')](_0x44bb9a[_0x85aa('0x34')]);_0x2a3963[_0x85aa('0x36')]=_['intersection'](_0x2a3963[_0x85aa('0x37')],_0x2a3963[_0x85aa('0x34')]);_0x32a413[_0x85aa('0x38')]=_[_0x85aa('0x39')](_0x2a3963['model'],qs[_0x85aa('0x3a')](_0x44bb9a[_0x85aa('0x34')][_0x85aa('0x3a')]));_0x32a413[_0x85aa('0x38')]=_0x32a413[_0x85aa('0x38')][_0x85aa('0x3b')]?_0x32a413['attributes']:_0x2a3963[_0x85aa('0x37')];if(!_0x44bb9a[_0x85aa('0x34')]['hasOwnProperty'](_0x85aa('0x3c'))){_0x32a413[_0x85aa('0x3d')]=qs[_0x85aa('0x3d')](_0x44bb9a['query'][_0x85aa('0x3d')]);_0x32a413[_0x85aa('0x20')]=qs[_0x85aa('0x20')](_0x44bb9a[_0x85aa('0x34')][_0x85aa('0x20')]);}_0x32a413['order']=qs[_0x85aa('0x3e')](_0x44bb9a[_0x85aa('0x34')][_0x85aa('0x3e')]);_0x32a413['where']=qs['filters'](_[_0x85aa('0x3f')](_0x44bb9a['query'],_0x2a3963[_0x85aa('0x36')]),_0xf60b62);if(_0x44bb9a['query'][_0x85aa('0x40')]){_0x32a413[_0x85aa('0x41')]=_[_0x85aa('0x42')](_0x32a413[_0x85aa('0x41')],{'$or':_[_0x85aa('0x43')](_0xf60b62,function(_0x4596ea){if(_0x4596ea[_0x85aa('0x44')]!==_0x85aa('0x45')){var _0x3f582e={};_0x3f582e[_0x4596ea[_0x85aa('0x2e')]]={'$like':'%'+_0x44bb9a[_0x85aa('0x34')][_0x85aa('0x40')]+'%'};return _0x3f582e;}})});}_0x32a413=_[_0x85aa('0x42')]({},_0x32a413,_0x44bb9a['options']);var _0x2ff5a1={'where':_0x32a413[_0x85aa('0x41')]};return db['Schedule'][_0x85aa('0x22')](_0x2ff5a1)[_0x85aa('0x29')](function(_0x59fdd4){_0x1412f3[_0x85aa('0x22')]=_0x59fdd4;if(_0x44bb9a['query']['includeAll']){_0x32a413[_0x85aa('0x46')]=[{'all':!![]}];}return db[_0x85aa('0x30')][_0x85aa('0x47')](_0x32a413);})[_0x85aa('0x29')](function(_0x2ed274){_0x1412f3[_0x85aa('0x48')]=_0x2ed274;return _0x1412f3;})[_0x85aa('0x29')](respondWithFilteredResult(_0x5f13f0,_0x32a413))[_0x85aa('0x49')](handleError(_0x5f13f0,null));};exports['show']=function(_0x16e1ce,_0x1e68b9){var _0x5775d8={'raw':![],'where':{'id':_0x16e1ce['params']['id']}},_0x203cde={};_0x203cde[_0x85aa('0x37')]=_[_0x85aa('0x35')](db[_0x85aa('0x30')][_0x85aa('0x31')]);_0x203cde[_0x85aa('0x34')]=_[_0x85aa('0x35')](_0x16e1ce[_0x85aa('0x34')]);_0x203cde[_0x85aa('0x36')]=_['intersection'](_0x203cde['model'],_0x203cde['query']);_0x5775d8[_0x85aa('0x38')]=_['intersection'](_0x203cde['model'],qs[_0x85aa('0x3a')](_0x16e1ce[_0x85aa('0x34')][_0x85aa('0x3a')]));_0x5775d8[_0x85aa('0x38')]=_0x5775d8[_0x85aa('0x38')]['length']?_0x5775d8[_0x85aa('0x38')]:_0x203cde[_0x85aa('0x37')];if(_0x16e1ce[_0x85aa('0x34')][_0x85aa('0x4a')]){_0x5775d8[_0x85aa('0x46')]=[{'all':!![]}];}_0x5775d8=_['merge']({},_0x5775d8,_0x16e1ce[_0x85aa('0x4b')]);return db[_0x85aa('0x30')]['find'](_0x5775d8)['then'](handleEntityNotFound(_0x1e68b9,null))['then'](respondWithResult(_0x1e68b9,null))['catch'](handleError(_0x1e68b9,null));};exports['create']=function(_0xeaa9f8,_0x4870cf){return db[_0x85aa('0x30')][_0x85aa('0x4c')](_0xeaa9f8['body'],{})[_0x85aa('0x29')](function(_0x9f5f3e){var _0x443464=_0xeaa9f8[_0x85aa('0x4d')][_0x85aa('0x2a')]({'plain':!![]});if(!_0x443464)throw new Error(_0x85aa('0x4e'));if(_0x443464[_0x85aa('0x4f')]===_0x85aa('0x4d')){var _0x271ab0=_0x9f5f3e[_0x85aa('0x2a')]({'plain':!![]});var _0x2c9836=_0x85aa('0x50');return db[_0x85aa('0x51')][_0x85aa('0x52')]({'where':{'name':_0x2c9836,'userProfileId':_0x443464[_0x85aa('0x53')]},'raw':!![]})[_0x85aa('0x29')](function(_0xf2f7fe){if(_0xf2f7fe&&_0xf2f7fe[_0x85aa('0x54')]===0x0){return db[_0x85aa('0x2b')]['create']({'name':_0x271ab0[_0x85aa('0x2e')],'resourceId':_0x271ab0['id'],'type':_0xf2f7fe[_0x85aa('0x2e')],'sectionId':_0xf2f7fe['id']},{})[_0x85aa('0x29')](function(){return _0x9f5f3e;});}else{return _0x9f5f3e;}})[_0x85aa('0x49')](function(_0x603ffa){logger[_0x85aa('0x2c')](_0x85aa('0x55'),_0x603ffa);throw _0x603ffa;});}return _0x9f5f3e;})[_0x85aa('0x29')](respondWithResult(_0x4870cf,0xc9))[_0x85aa('0x49')](handleError(_0x4870cf,null));};exports['update']=function(_0x2aafa6,_0x545875){if(_0x2aafa6[_0x85aa('0x56')]['id']){delete _0x2aafa6['body']['id'];}return db[_0x85aa('0x30')][_0x85aa('0x52')]({'where':{'id':_0x2aafa6[_0x85aa('0x57')]['id']}})[_0x85aa('0x29')](handleEntityNotFound(_0x545875,null))[_0x85aa('0x29')](saveUpdates(_0x2aafa6[_0x85aa('0x56')],null))[_0x85aa('0x29')](respondWithResult(_0x545875,null))['catch'](handleError(_0x545875,null));};exports[_0x85aa('0x58')]=function(_0x4b0e4b,_0x471311){return db['Schedule']['find']({'where':{'id':_0x4b0e4b[_0x85aa('0x57')]['id']}})[_0x85aa('0x29')](handleEntityNotFound(_0x471311,null))['then'](removeEntity(_0x471311,null))['catch'](handleError(_0x471311,null));};exports[_0x85aa('0x59')]=function(_0x1dee3c,_0x458d10,_0x2f9ca0){var _0x1115fa=require(_0x85aa('0x5a'));return db['Schedule'][_0x85aa('0x52')]({'where':{'id':_0x1dee3c[_0x85aa('0x57')]['id']},'raw':!![]})[_0x85aa('0x29')](handleEntityNotFound(_0x458d10,null))[_0x85aa('0x29')](function(){_0x1115fa['run'](_0x1dee3c[_0x85aa('0x57')]['id']);})[_0x85aa('0x29')](respondWithStatusCode(_0x458d10,null))['catch'](handleError(_0x458d10,null));};
\ No newline at end of file
+var _0xf2ca=['send','index','map','Schedule','rawAttributes','fieldName','key','query','keys','filters','intersection','model','fields','attributes','length','hasOwnProperty','nolimit','limit','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','run','../../config/schedule','eml-format','rimraf','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','../../config/license/hardware','../../config/logger','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','json','offset','undefined','count','set','apply','update','then','destroy','get','Scheduler','UserProfileResource','end','error','name'];(function(_0x3ce7dc,_0x6e2f81){var _0x1d8cee=function(_0xc1a7ad){while(--_0xc1a7ad){_0x3ce7dc['push'](_0x3ce7dc['shift']());}};_0x1d8cee(++_0x6e2f81);}(_0xf2ca,0xd7));var _0xaf2c=function(_0x3425f9,_0x2358ca){_0x3425f9=_0x3425f9-0x0;var _0x814f39=_0xf2ca[_0x3425f9];return _0x814f39;};'use strict';var emlformat=require(_0xaf2c('0x0'));var rimraf=require(_0xaf2c('0x1'));var zipdir=require(_0xaf2c('0x2'));var jsonpatch=require(_0xaf2c('0x3'));var rp=require(_0xaf2c('0x4'));var moment=require(_0xaf2c('0x5'));var BPromise=require(_0xaf2c('0x6'));var Mustache=require('mustache');var util=require(_0xaf2c('0x7'));var path=require(_0xaf2c('0x8'));var sox=require('sox');var csv=require(_0xaf2c('0x9'));var ejs=require(_0xaf2c('0xa'));var fs=require('fs');var fs_extra=require(_0xaf2c('0xb'));var _=require(_0xaf2c('0xc'));var squel=require(_0xaf2c('0xd'));var crypto=require(_0xaf2c('0xe'));var jsforce=require(_0xaf2c('0xf'));var deskjs=require(_0xaf2c('0x10'));var toCsv=require(_0xaf2c('0x9'));var querystring=require(_0xaf2c('0x11'));var Papa=require(_0xaf2c('0x12'));var Redis=require(_0xaf2c('0x13'));var authService=require(_0xaf2c('0x14'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xaf2c('0x15'));var logger=require(_0xaf2c('0x16'))('api');var utils=require('../../config/utils');var config=require(_0xaf2c('0x17'));var licenseUtil=require(_0xaf2c('0x18'));var db=require(_0xaf2c('0x19'))['db'];function respondWithStatusCode(_0x22bb0d,_0x396496){_0x396496=_0x396496||0xcc;return function(_0x44ffac){if(_0x44ffac){return _0x22bb0d[_0xaf2c('0x1a')](_0x396496);}return _0x22bb0d[_0xaf2c('0x1b')](_0x396496)['end']();};}function respondWithResult(_0x5a95dd,_0x4016c5){_0x4016c5=_0x4016c5||0xc8;return function(_0x2618f1){if(_0x2618f1){return _0x5a95dd[_0xaf2c('0x1b')](_0x4016c5)[_0xaf2c('0x1c')](_0x2618f1);}};}function respondWithFilteredResult(_0x22c8b7,_0x31f3ed){return function(_0x5cc37a){if(_0x5cc37a){var _0x3691e3=typeof _0x31f3ed[_0xaf2c('0x1d')]===_0xaf2c('0x1e')&&typeof _0x31f3ed['limit']===_0xaf2c('0x1e');var _0x38426f=_0x5cc37a[_0xaf2c('0x1f')];var _0x43d794=_0x3691e3?0x0:_0x31f3ed[_0xaf2c('0x1d')];var _0x510e21=_0x3691e3?_0x5cc37a[_0xaf2c('0x1f')]:_0x31f3ed[_0xaf2c('0x1d')]+_0x31f3ed['limit'];var _0xcc1a0a;if(_0x510e21>=_0x38426f){_0x510e21=_0x38426f;_0xcc1a0a=0xc8;}else{_0xcc1a0a=0xce;}_0x22c8b7[_0xaf2c('0x1b')](_0xcc1a0a);return _0x22c8b7[_0xaf2c('0x20')]('Content-Range',_0x43d794+'-'+_0x510e21+'/'+_0x38426f)[_0xaf2c('0x1c')](_0x5cc37a);}return null;};}function patchUpdates(_0x2d6509){return function(_0xa74d34){try{jsonpatch[_0xaf2c('0x21')](_0xa74d34,_0x2d6509,!![]);}catch(_0x1f5b83){return BPromise['reject'](_0x1f5b83);}return _0xa74d34['save']();};}function saveUpdates(_0x317947,_0x12ea29){return function(_0x43d459){if(_0x43d459){return _0x43d459[_0xaf2c('0x22')](_0x317947)[_0xaf2c('0x23')](function(_0x1c6e8f){return _0x1c6e8f;});}return null;};}function removeEntity(_0x2678ed,_0x1c6cb2){return function(_0x54cbc6){if(_0x54cbc6){return _0x54cbc6[_0xaf2c('0x24')]()[_0xaf2c('0x23')](function(){var _0x39dfd4=_0x54cbc6[_0xaf2c('0x25')]({'plain':!![]});var _0x329e0a=_0xaf2c('0x26');return db[_0xaf2c('0x27')][_0xaf2c('0x24')]({'where':{'type':_0x329e0a,'resourceId':_0x39dfd4['id']}})[_0xaf2c('0x23')](function(){return _0x54cbc6;});})[_0xaf2c('0x23')](function(){_0x2678ed[_0xaf2c('0x1b')](0xcc)[_0xaf2c('0x28')]();});}};}function handleEntityNotFound(_0x5464cb,_0x463922){return function(_0x2f8bcb){if(!_0x2f8bcb){_0x5464cb['sendStatus'](0x194);}return _0x2f8bcb;};}function handleError(_0x36414b,_0x543ced){_0x543ced=_0x543ced||0x1f4;return function(_0xa7bb16){logger[_0xaf2c('0x29')](_0xa7bb16['stack']);if(_0xa7bb16['name']){delete _0xa7bb16[_0xaf2c('0x2a')];}_0x36414b[_0xaf2c('0x1b')](_0x543ced)[_0xaf2c('0x2b')](_0xa7bb16);};}exports[_0xaf2c('0x2c')]=function(_0x49baea,_0x15ab11){var _0x259fad={},_0x4c40a3={},_0x19ac43={'count':0x0,'rows':[]};var _0x3d4d6b=_[_0xaf2c('0x2d')](db[_0xaf2c('0x2e')][_0xaf2c('0x2f')],function(_0x583288){return{'name':_0x583288[_0xaf2c('0x30')],'type':_0x583288['type'][_0xaf2c('0x31')]};});_0x4c40a3['model']=_[_0xaf2c('0x2d')](_0x3d4d6b,_0xaf2c('0x2a'));_0x4c40a3[_0xaf2c('0x32')]=_[_0xaf2c('0x33')](_0x49baea[_0xaf2c('0x32')]);_0x4c40a3[_0xaf2c('0x34')]=_[_0xaf2c('0x35')](_0x4c40a3[_0xaf2c('0x36')],_0x4c40a3[_0xaf2c('0x32')]);_0x259fad['attributes']=_[_0xaf2c('0x35')](_0x4c40a3[_0xaf2c('0x36')],qs[_0xaf2c('0x37')](_0x49baea['query'][_0xaf2c('0x37')]));_0x259fad['attributes']=_0x259fad[_0xaf2c('0x38')][_0xaf2c('0x39')]?_0x259fad[_0xaf2c('0x38')]:_0x4c40a3['model'];if(!_0x49baea[_0xaf2c('0x32')][_0xaf2c('0x3a')](_0xaf2c('0x3b'))){_0x259fad['limit']=qs[_0xaf2c('0x3c')](_0x49baea[_0xaf2c('0x32')][_0xaf2c('0x3c')]);_0x259fad[_0xaf2c('0x1d')]=qs['offset'](_0x49baea[_0xaf2c('0x32')][_0xaf2c('0x1d')]);}_0x259fad['order']=qs[_0xaf2c('0x3d')](_0x49baea[_0xaf2c('0x32')][_0xaf2c('0x3d')]);_0x259fad[_0xaf2c('0x3e')]=qs[_0xaf2c('0x34')](_[_0xaf2c('0x3f')](_0x49baea[_0xaf2c('0x32')],_0x4c40a3[_0xaf2c('0x34')]),_0x3d4d6b);if(_0x49baea[_0xaf2c('0x32')][_0xaf2c('0x40')]){_0x259fad[_0xaf2c('0x3e')]=_[_0xaf2c('0x41')](_0x259fad['where'],{'$or':_['map'](_0x3d4d6b,function(_0x9579e1){if(_0x9579e1[_0xaf2c('0x42')]!==_0xaf2c('0x43')){var _0x223b2b={};_0x223b2b[_0x9579e1[_0xaf2c('0x2a')]]={'$like':'%'+_0x49baea[_0xaf2c('0x32')][_0xaf2c('0x40')]+'%'};return _0x223b2b;}})});}_0x259fad=_[_0xaf2c('0x41')]({},_0x259fad,_0x49baea[_0xaf2c('0x44')]);var _0x442a88={'where':_0x259fad[_0xaf2c('0x3e')]};return db[_0xaf2c('0x2e')][_0xaf2c('0x1f')](_0x442a88)['then'](function(_0x3c3462){_0x19ac43[_0xaf2c('0x1f')]=_0x3c3462;if(_0x49baea[_0xaf2c('0x32')][_0xaf2c('0x45')]){_0x259fad[_0xaf2c('0x46')]=[{'all':!![]}];}return db[_0xaf2c('0x2e')][_0xaf2c('0x47')](_0x259fad);})[_0xaf2c('0x23')](function(_0x57931c){_0x19ac43[_0xaf2c('0x48')]=_0x57931c;return _0x19ac43;})[_0xaf2c('0x23')](respondWithFilteredResult(_0x15ab11,_0x259fad))[_0xaf2c('0x49')](handleError(_0x15ab11,null));};exports[_0xaf2c('0x4a')]=function(_0x142844,_0xbdf756){var _0x3e06d5={'raw':![],'where':{'id':_0x142844[_0xaf2c('0x4b')]['id']}},_0x34b670={};_0x34b670[_0xaf2c('0x36')]=_[_0xaf2c('0x33')](db[_0xaf2c('0x2e')][_0xaf2c('0x2f')]);_0x34b670[_0xaf2c('0x32')]=_[_0xaf2c('0x33')](_0x142844['query']);_0x34b670[_0xaf2c('0x34')]=_[_0xaf2c('0x35')](_0x34b670['model'],_0x34b670['query']);_0x3e06d5[_0xaf2c('0x38')]=_[_0xaf2c('0x35')](_0x34b670[_0xaf2c('0x36')],qs[_0xaf2c('0x37')](_0x142844['query']['fields']));_0x3e06d5['attributes']=_0x3e06d5[_0xaf2c('0x38')][_0xaf2c('0x39')]?_0x3e06d5[_0xaf2c('0x38')]:_0x34b670[_0xaf2c('0x36')];if(_0x142844[_0xaf2c('0x32')][_0xaf2c('0x45')]){_0x3e06d5[_0xaf2c('0x46')]=[{'all':!![]}];}_0x3e06d5=_['merge']({},_0x3e06d5,_0x142844[_0xaf2c('0x44')]);return db[_0xaf2c('0x2e')][_0xaf2c('0x4c')](_0x3e06d5)[_0xaf2c('0x23')](handleEntityNotFound(_0xbdf756,null))[_0xaf2c('0x23')](respondWithResult(_0xbdf756,null))[_0xaf2c('0x49')](handleError(_0xbdf756,null));};exports[_0xaf2c('0x4d')]=function(_0x183190,_0x280c31){return db[_0xaf2c('0x2e')][_0xaf2c('0x4d')](_0x183190[_0xaf2c('0x4e')],{})[_0xaf2c('0x23')](function(_0x261689){var _0x245858=_0x183190[_0xaf2c('0x4f')][_0xaf2c('0x25')]({'plain':!![]});if(!_0x245858)throw new Error(_0xaf2c('0x50'));if(_0x245858['role']===_0xaf2c('0x4f')){var _0x38dee3=_0x261689['get']({'plain':!![]});var _0x45fb82='Scheduler';return db[_0xaf2c('0x51')][_0xaf2c('0x4c')]({'where':{'name':_0x45fb82,'userProfileId':_0x245858[_0xaf2c('0x52')]},'raw':!![]})[_0xaf2c('0x23')](function(_0x50e61c){if(_0x50e61c&&_0x50e61c['autoAssociation']===0x0){return db['UserProfileResource'][_0xaf2c('0x4d')]({'name':_0x38dee3['name'],'resourceId':_0x38dee3['id'],'type':_0x50e61c[_0xaf2c('0x2a')],'sectionId':_0x50e61c['id']},{})[_0xaf2c('0x23')](function(){return _0x261689;});}else{return _0x261689;}})['catch'](function(_0x43fce8){logger[_0xaf2c('0x29')](_0xaf2c('0x53'),_0x43fce8);throw _0x43fce8;});}return _0x261689;})['then'](respondWithResult(_0x280c31,0xc9))[_0xaf2c('0x49')](handleError(_0x280c31,null));};exports['update']=function(_0x420081,_0x300d3f){if(_0x420081['body']['id']){delete _0x420081[_0xaf2c('0x4e')]['id'];}return db[_0xaf2c('0x2e')][_0xaf2c('0x4c')]({'where':{'id':_0x420081[_0xaf2c('0x4b')]['id']}})[_0xaf2c('0x23')](handleEntityNotFound(_0x300d3f,null))[_0xaf2c('0x23')](saveUpdates(_0x420081['body'],null))[_0xaf2c('0x23')](respondWithResult(_0x300d3f,null))[_0xaf2c('0x49')](handleError(_0x300d3f,null));};exports[_0xaf2c('0x24')]=function(_0x5201e2,_0x12afb9){return db[_0xaf2c('0x2e')][_0xaf2c('0x4c')]({'where':{'id':_0x5201e2[_0xaf2c('0x4b')]['id']}})[_0xaf2c('0x23')](handleEntityNotFound(_0x12afb9,null))['then'](removeEntity(_0x12afb9,null))[_0xaf2c('0x49')](handleError(_0x12afb9,null));};exports[_0xaf2c('0x54')]=function(_0x2c12bb,_0x4b74e3,_0x13e198){var _0x22202a=require(_0xaf2c('0x55'));return db['Schedule']['find']({'where':{'id':_0x2c12bb[_0xaf2c('0x4b')]['id']},'raw':!![]})['then'](handleEntityNotFound(_0x4b74e3,null))['then'](function(){_0x22202a[_0xaf2c('0x54')](_0x2c12bb[_0xaf2c('0x4b')]['id']);})[_0xaf2c('0x23')](respondWithStatusCode(_0x4b74e3,null))[_0xaf2c('0x49')](handleError(_0x4b74e3,null));};
\ No newline at end of file
index 2950c67..007ba82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbacb=['exports','define','Schedule','tools_schedules','lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment'];(function(_0x14843c,_0x44c29a){var _0x30c66a=function(_0x2ca506){while(--_0x2ca506){_0x14843c['push'](_0x14843c['shift']());}};_0x30c66a(++_0x44c29a);}(_0xbacb,0x184));var _0xbbac=function(_0x57d2c7,_0x5de40f){_0x57d2c7=_0x57d2c7-0x0;var _0x21dc54=_0xbacb[_0x57d2c7];return _0x21dc54;};'use strict';var _=require(_0xbbac('0x0'));var util=require(_0xbbac('0x1'));var logger=require(_0xbbac('0x2'))(_0xbbac('0x3'));var moment=require(_0xbbac('0x4'));var BPromise=require('bluebird');var rp=require(_0xbbac('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xbbac('0x6'));var config=require(_0xbbac('0x7'));var attributes=require('./schedule.attributes');module[_0xbbac('0x8')]=function(_0x4fd6cb,_0x40d6ce){return _0x4fd6cb[_0xbbac('0x9')](_0xbbac('0xa'),attributes,{'tableName':_0xbbac('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xbe64=['Schedule','lodash','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./schedule.attributes','define'];(function(_0x2c4aef,_0x116fe2){var _0x3deaed=function(_0x131052){while(--_0x131052){_0x2c4aef['push'](_0x2c4aef['shift']());}};_0x3deaed(++_0x116fe2);}(_0xbe64,0x1da));var _0x4be6=function(_0x43a5c7,_0x2286bf){_0x43a5c7=_0x43a5c7-0x0;var _0x3b12a2=_0xbe64[_0x43a5c7];return _0x3b12a2;};'use strict';var _=require(_0x4be6('0x0'));var util=require('util');var logger=require(_0x4be6('0x1'))(_0x4be6('0x2'));var moment=require('moment');var BPromise=require(_0x4be6('0x3'));var rp=require(_0x4be6('0x4'));var fs=require('fs');var path=require(_0x4be6('0x5'));var rimraf=require(_0x4be6('0x6'));var config=require(_0x4be6('0x7'));var attributes=require(_0x4be6('0x8'));module['exports']=function(_0xd2a1b9,_0x5a261b){return _0xd2a1b9[_0x4be6('0x9')](_0x4be6('0xa'),attributes,{'tableName':'tools_schedules','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 350867e..8c4e369 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8a7=['request\x20sent','stringify','error','code','message','result','catch','lodash','util','bluebird','../../mysqldb','../../config/utils','../../config/logger','request','then','info','Schedule,\x20%s,\x20%s'];(function(_0x1477ef,_0x54a5d6){var _0x164acd=function(_0x139149){while(--_0x139149){_0x1477ef['push'](_0x1477ef['shift']());}};_0x164acd(++_0x54a5d6);}(_0xd8a7,0x1c1));var _0x7d8a=function(_0x2af655,_0xb3d66){_0x2af655=_0x2af655-0x0;var _0x5b27c2=_0xd8a7[_0x2af655];return _0x5b27c2;};'use strict';var _=require(_0x7d8a('0x0'));var util=require(_0x7d8a('0x1'));var moment=require('moment');var BPromise=require(_0x7d8a('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7d8a('0x3'))['db'];var utils=require(_0x7d8a('0x4'));var logger=require(_0x7d8a('0x5'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3eae05,_0x5bd241,_0x2d090a){return new BPromise(function(_0x2a099f,_0x5e4759){return client[_0x7d8a('0x6')](_0x3eae05,_0x2d090a)[_0x7d8a('0x7')](function(_0x946693){logger[_0x7d8a('0x8')](_0x7d8a('0x9'),_0x5bd241,_0x7d8a('0xa'));logger['debug']('Schedule,\x20%s,\x20%s,\x20%s',_0x5bd241,_0x7d8a('0xa'),JSON[_0x7d8a('0xb')](_0x946693));if(_0x946693[_0x7d8a('0xc')]){if(_0x946693[_0x7d8a('0xc')][_0x7d8a('0xd')]===0x1f4){logger[_0x7d8a('0xc')](_0x7d8a('0x9'),_0x5bd241,_0x946693[_0x7d8a('0xc')][_0x7d8a('0xe')]);return _0x5e4759(_0x946693[_0x7d8a('0xc')][_0x7d8a('0xe')]);}logger[_0x7d8a('0xc')](_0x7d8a('0x9'),_0x5bd241,_0x946693['error'][_0x7d8a('0xe')]);return _0x2a099f(_0x946693[_0x7d8a('0xc')][_0x7d8a('0xe')]);}else{logger[_0x7d8a('0x8')](_0x7d8a('0x9'),_0x5bd241,_0x7d8a('0xa'));_0x2a099f(_0x946693[_0x7d8a('0xf')][_0x7d8a('0xe')]);}})[_0x7d8a('0x10')](function(_0x1c85f3){logger[_0x7d8a('0xc')]('Schedule,\x20%s,\x20%s',_0x5bd241,_0x1c85f3);_0x5e4759(_0x1c85f3);});});}
\ No newline at end of file
+var _0xef05=['Schedule,\x20%s,\x20%s','request\x20sent','debug','Schedule,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info'];(function(_0x48f3a8,_0x51e8f0){var _0x2802ee=function(_0x3e9f51){while(--_0x3e9f51){_0x48f3a8['push'](_0x48f3a8['shift']());}};_0x2802ee(++_0x51e8f0);}(_0xef05,0x1bf));var _0x5ef0=function(_0x4917de,_0x40e217){_0x4917de=_0x4917de-0x0;var _0x3107cf=_0xef05[_0x4917de];return _0x3107cf;};'use strict';var _=require(_0x5ef0('0x0'));var util=require(_0x5ef0('0x1'));var moment=require('moment');var BPromise=require(_0x5ef0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5ef0('0x3'));var db=require(_0x5ef0('0x4'))['db'];var utils=require(_0x5ef0('0x5'));var logger=require(_0x5ef0('0x6'))(_0x5ef0('0x7'));var config=require(_0x5ef0('0x8'));var jayson=require(_0x5ef0('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0xc9097a,_0x20557f,_0x21aa68){return new BPromise(function(_0x33f410,_0x12d16a){return client[_0x5ef0('0xa')](_0xc9097a,_0x21aa68)[_0x5ef0('0xb')](function(_0x2f60bf){logger[_0x5ef0('0xc')](_0x5ef0('0xd'),_0x20557f,_0x5ef0('0xe'));logger[_0x5ef0('0xf')](_0x5ef0('0x10'),_0x20557f,'request\x20sent',JSON[_0x5ef0('0x11')](_0x2f60bf));if(_0x2f60bf[_0x5ef0('0x12')]){if(_0x2f60bf['error'][_0x5ef0('0x13')]===0x1f4){logger['error'](_0x5ef0('0xd'),_0x20557f,_0x2f60bf[_0x5ef0('0x12')][_0x5ef0('0x14')]);return _0x12d16a(_0x2f60bf[_0x5ef0('0x12')]['message']);}logger['error'](_0x5ef0('0xd'),_0x20557f,_0x2f60bf['error'][_0x5ef0('0x14')]);return _0x33f410(_0x2f60bf[_0x5ef0('0x12')][_0x5ef0('0x14')]);}else{logger[_0x5ef0('0xc')](_0x5ef0('0xd'),_0x20557f,_0x5ef0('0xe'));_0x33f410(_0x2f60bf[_0x5ef0('0x15')]['message']);}})[_0x5ef0('0x16')](function(_0x4ccb54){logger[_0x5ef0('0x12')](_0x5ef0('0xd'),_0x20557f,_0x4ccb54);_0x12d16a(_0x4ccb54);});});}
\ No newline at end of file
index cdca2fb..dc06964 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe8f0=['download','post','put','update','delete','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./screenRecording.controller','isAuthenticated','get','/describe','describe','/:id','show'];(function(_0x483eab,_0xe5157d){var _0x1aa0cb=function(_0x2af9e2){while(--_0x2af9e2){_0x483eab['push'](_0x483eab['shift']());}};_0x1aa0cb(++_0xe5157d);}(_0xe8f0,0x1e9));var _0x0e8f=function(_0x1435b2,_0xa894da){_0x1435b2=_0x1435b2-0x0;var _0x2b8ff9=_0xe8f0[_0x1435b2];return _0x2b8ff9;};'use strict';var multer=require(_0x0e8f('0x0'));var util=require(_0x0e8f('0x1'));var path=require(_0x0e8f('0x2'));var timeout=require('connect-timeout');var express=require(_0x0e8f('0x3'));var router=express[_0x0e8f('0x4')]();var fs_extra=require(_0x0e8f('0x5'));var auth=require(_0x0e8f('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x0e8f('0x7'));var controller=require(_0x0e8f('0x8'));router['get']('/',auth[_0x0e8f('0x9')](),controller['index']);router[_0x0e8f('0xa')](_0x0e8f('0xb'),auth['isAuthenticated'](),controller[_0x0e8f('0xc')]);router['get'](_0x0e8f('0xd'),auth[_0x0e8f('0x9')](),controller[_0x0e8f('0xe')]);router[_0x0e8f('0xa')]('/:id/download',auth['isAuthenticated'](),controller[_0x0e8f('0xf')]);router[_0x0e8f('0x10')]('/',auth[_0x0e8f('0x9')](),controller['create']);router[_0x0e8f('0x11')](_0x0e8f('0xd'),auth[_0x0e8f('0x9')](),controller[_0x0e8f('0x12')]);router[_0x0e8f('0x13')](_0x0e8f('0xd'),auth[_0x0e8f('0x9')](),controller['destroy']);module[_0x0e8f('0x14')]=router;
\ No newline at end of file
+var _0x5e7d=['path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','get','index','/describe','isAuthenticated','describe','show','/:id/download','download','post','create','put','delete','/:id','multer','util'];(function(_0x2af782,_0x42e59e){var _0x256270=function(_0x5568de){while(--_0x5568de){_0x2af782['push'](_0x2af782['shift']());}};_0x256270(++_0x42e59e);}(_0x5e7d,0x82));var _0xd5e7=function(_0x1232e7,_0x3808cd){_0x1232e7=_0x1232e7-0x0;var _0x29a410=_0x5e7d[_0x1232e7];return _0x29a410;};'use strict';var multer=require(_0xd5e7('0x0'));var util=require(_0xd5e7('0x1'));var path=require(_0xd5e7('0x2'));var timeout=require(_0xd5e7('0x3'));var express=require(_0xd5e7('0x4'));var router=express[_0xd5e7('0x5')]();var fs_extra=require(_0xd5e7('0x6'));var auth=require(_0xd5e7('0x7'));var interaction=require(_0xd5e7('0x8'));var config=require('../../config/environment');var controller=require('./screenRecording.controller');router[_0xd5e7('0x9')]('/',auth['isAuthenticated'](),controller[_0xd5e7('0xa')]);router[_0xd5e7('0x9')](_0xd5e7('0xb'),auth[_0xd5e7('0xc')](),controller[_0xd5e7('0xd')]);router[_0xd5e7('0x9')]('/:id',auth[_0xd5e7('0xc')](),controller[_0xd5e7('0xe')]);router['get'](_0xd5e7('0xf'),auth[_0xd5e7('0xc')](),controller[_0xd5e7('0x10')]);router[_0xd5e7('0x11')]('/',auth[_0xd5e7('0xc')](),controller[_0xd5e7('0x12')]);router[_0xd5e7('0x13')]('/:id',auth[_0xd5e7('0xc')](),controller['update']);router[_0xd5e7('0x14')](_0xd5e7('0x15'),auth[_0xd5e7('0xc')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 71042af..6f22cbc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb114=['path','../../config/environment','VIRTUAL','getDataValue','value','extname','STRING','replace','setDataValue','INTEGER','startedAt','subtract','closedAt','DATE','format','MM-DD-YYYY\x20HH:mm','toString','sequelize'];(function(_0x1183ab,_0x1f9404){var _0x27142c=function(_0x233be3){while(--_0x233be3){_0x1183ab['push'](_0x1183ab['shift']());}};_0x27142c(++_0x1f9404);}(_0xb114,0x11f));var _0x4b11=function(_0x5a79e2,_0x319b1a){_0x5a79e2=_0x5a79e2-0x0;var _0x266c45=_0xb114[_0x5a79e2];return _0x266c45;};'use strict';var Sequelize=require(_0x4b11('0x0'));var moment=require('moment');var path=require(_0x4b11('0x1'));var config=require(_0x4b11('0x2'));module['exports']={'format':{'type':Sequelize[_0x4b11('0x3')],'get':function(){return this[_0x4b11('0x4')](_0x4b11('0x5'))?path[_0x4b11('0x6')](this[_0x4b11('0x4')](_0x4b11('0x5'))):undefined;}},'interactionid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x4b11('0x7')]},'value':{'type':Sequelize[_0x4b11('0x7')],'set':function(_0x41fac6){var _0x91f371=_0x41fac6[_0x4b11('0x8')](/\\/g,'/');this[_0x4b11('0x9')](_0x4b11('0x5'),_0x91f371);}},'rating':{'type':Sequelize['INTEGER'],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0x4b11('0xa')],'set':function(_0x4cde8d){this[_0x4b11('0x9')](_0x4b11('0xb'),moment()[_0x4b11('0xc')](_0x4cde8d,'ms'));this[_0x4b11('0x9')](_0x4b11('0xd'),moment());this[_0x4b11('0x9')]('duration',_0x4cde8d);}},'startedAt':{'type':Sequelize[_0x4b11('0xe')],'get':function(){return moment(this[_0x4b11('0x4')](_0x4b11('0xb')))[_0x4b11('0xf')]('MM-DD-YYYY\x20HH:mm')['toString']();}},'closedAt':{'type':Sequelize[_0x4b11('0xe')],'get':function(){return moment(this[_0x4b11('0x4')](_0x4b11('0xd')))[_0x4b11('0xf')](_0x4b11('0x10'))[_0x4b11('0x11')]();}},'createdAt':{'type':Sequelize[_0x4b11('0xe')],'get':function(){return moment(this[_0x4b11('0x4')]('createdAt'))['format'](_0x4b11('0x10'))[_0x4b11('0x11')]();}},'updatedAt':{'type':Sequelize[_0x4b11('0xe')],'get':function(){return moment(this['getDataValue']('updatedAt'))['format'](_0x4b11('0x10'))[_0x4b11('0x11')]();}}};
\ No newline at end of file
+var _0x419f=['sequelize','moment','path','../../config/environment','exports','VIRTUAL','value','getDataValue','STRING','replace','setDataValue','INTEGER','startedAt','subtract','closedAt','duration','DATE','MM-DD-YYYY\x20HH:mm','toString','createdAt','format','updatedAt'];(function(_0x2389b4,_0x32f831){var _0x2b627b=function(_0x55c9a6){while(--_0x55c9a6){_0x2389b4['push'](_0x2389b4['shift']());}};_0x2b627b(++_0x32f831);}(_0x419f,0x176));var _0xf419=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x419f[_0x2641f9];return _0x585741;};'use strict';var Sequelize=require(_0xf419('0x0'));var moment=require(_0xf419('0x1'));var path=require(_0xf419('0x2'));var config=require(_0xf419('0x3'));module[_0xf419('0x4')]={'format':{'type':Sequelize[_0xf419('0x5')],'get':function(){return this['getDataValue'](_0xf419('0x6'))?path['extname'](this[_0xf419('0x7')](_0xf419('0x6'))):undefined;}},'interactionid':{'type':Sequelize[_0xf419('0x8')]},'channel':{'type':Sequelize[_0xf419('0x8')]},'value':{'type':Sequelize[_0xf419('0x8')],'set':function(_0x2b5526){var _0x4082de=_0x2b5526[_0xf419('0x9')](/\\/g,'/');this[_0xf419('0xa')]('value',_0x4082de);}},'rating':{'type':Sequelize[_0xf419('0xb')],'validate':{'max':0x5,'min':0x0}},'duration':{'type':Sequelize[_0xf419('0xb')],'set':function(_0x5ab7d3){this[_0xf419('0xa')](_0xf419('0xc'),moment()[_0xf419('0xd')](_0x5ab7d3,'ms'));this['setDataValue'](_0xf419('0xe'),moment());this[_0xf419('0xa')](_0xf419('0xf'),_0x5ab7d3);}},'startedAt':{'type':Sequelize[_0xf419('0x10')],'get':function(){return moment(this[_0xf419('0x7')]('startedAt'))['format'](_0xf419('0x11'))[_0xf419('0x12')]();}},'closedAt':{'type':Sequelize[_0xf419('0x10')],'get':function(){return moment(this[_0xf419('0x7')](_0xf419('0xe')))['format'](_0xf419('0x11'))[_0xf419('0x12')]();}},'createdAt':{'type':Sequelize[_0xf419('0x10')],'get':function(){return moment(this[_0xf419('0x7')](_0xf419('0x13')))[_0xf419('0x14')]('MM-DD-YYYY\x20HH:mm')[_0xf419('0x12')]();}},'updatedAt':{'type':Sequelize[_0xf419('0x10')],'get':function(){return moment(this['getDataValue'](_0xf419('0x15')))[_0xf419('0x14')](_0xf419('0x11'))['toString']();}}};
\ No newline at end of file
index cf9c7f7..7a218ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa630=['squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','json','offset','limit','undefined','count','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','ScreenRecording','type','key','model','differenceBy','format','query','keys','intersection','fields','attributes','length','order','filters','pick','filter','where','merge','VIRTUAL','include','findAll','rows','catch','show','params','rawAttributes','includeAll','options','find','create','body','createdAt','value','describe','../../components/encryptor','root','server/files/screen_recordings','%s.cypher','existsSync','decryptFile','secrets','recording','join','ScreenRecording\x20not\x20found','filename','extname','download','message','Not\x20found','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','eml-format','rimraf','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash'];(function(_0x16b9ed,_0x56517a){var _0x66b1f8=function(_0x1c883){while(--_0x1c883){_0x16b9ed['push'](_0x16b9ed['shift']());}};_0x66b1f8(++_0x56517a);}(_0xa630,0xbe));var _0x0a63=function(_0x49aee6,_0x3ff3c6){_0x49aee6=_0x49aee6-0x0;var _0x193cb8=_0xa630[_0x49aee6];return _0x193cb8;};'use strict';var emlformat=require(_0x0a63('0x0'));var rimraf=require(_0x0a63('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x0a63('0x2'));var moment=require('moment');var BPromise=require(_0x0a63('0x3'));var Mustache=require('mustache');var util=require(_0x0a63('0x4'));var path=require(_0x0a63('0x5'));var sox=require(_0x0a63('0x6'));var csv=require(_0x0a63('0x7'));var ejs=require(_0x0a63('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0a63('0x9'));var squel=require(_0x0a63('0xa'));var crypto=require(_0x0a63('0xb'));var jsforce=require(_0x0a63('0xc'));var deskjs=require(_0x0a63('0xd'));var toCsv=require(_0x0a63('0x7'));var querystring=require('querystring');var Papa=require(_0x0a63('0xe'));var Redis=require(_0x0a63('0xf'));var authService=require(_0x0a63('0x10'));var qs=require(_0x0a63('0x11'));var as=require(_0x0a63('0x12'));var hardwareService=require(_0x0a63('0x13'));var logger=require(_0x0a63('0x14'))(_0x0a63('0x15'));var utils=require(_0x0a63('0x16'));var config=require(_0x0a63('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x0a63('0x18'))['db'];function respondWithStatusCode(_0x420043,_0x2fce86){_0x2fce86=_0x2fce86||0xcc;return function(_0x3d6323){if(_0x3d6323){return _0x420043['sendStatus'](_0x2fce86);}return _0x420043[_0x0a63('0x19')](_0x2fce86)['end']();};}function respondWithResult(_0x331e99,_0x19e922){_0x19e922=_0x19e922||0xc8;return function(_0x26b2bc){if(_0x26b2bc){return _0x331e99[_0x0a63('0x19')](_0x19e922)[_0x0a63('0x1a')](_0x26b2bc);}};}function respondWithFilteredResult(_0x23b49d,_0x552b1f){return function(_0x1e3251){if(_0x1e3251){var _0x524a98=typeof _0x552b1f[_0x0a63('0x1b')]==='undefined'&&typeof _0x552b1f[_0x0a63('0x1c')]===_0x0a63('0x1d');var _0x36a9e8=_0x1e3251[_0x0a63('0x1e')];var _0x1f7481=_0x524a98?0x0:_0x552b1f[_0x0a63('0x1b')];var _0x30f292=_0x524a98?_0x1e3251[_0x0a63('0x1e')]:_0x552b1f[_0x0a63('0x1b')]+_0x552b1f[_0x0a63('0x1c')];var _0x2ad167;if(_0x30f292>=_0x36a9e8){_0x30f292=_0x36a9e8;_0x2ad167=0xc8;}else{_0x2ad167=0xce;}_0x23b49d['status'](_0x2ad167);return _0x23b49d['set'](_0x0a63('0x1f'),_0x1f7481+'-'+_0x30f292+'/'+_0x36a9e8)['json'](_0x1e3251);}return null;};}function patchUpdates(_0x2fc87c){return function(_0x5937df){try{jsonpatch[_0x0a63('0x20')](_0x5937df,_0x2fc87c,!![]);}catch(_0x41d6b8){return BPromise[_0x0a63('0x21')](_0x41d6b8);}return _0x5937df[_0x0a63('0x22')]();};}function saveUpdates(_0x5da46b,_0x398a16){return function(_0x4c225a){if(_0x4c225a){return _0x4c225a[_0x0a63('0x23')](_0x5da46b)[_0x0a63('0x24')](function(_0x1bf64a){return _0x1bf64a;});}return null;};}function removeEntity(_0x20c114,_0x343273){return function(_0x1f929f){if(_0x1f929f){return _0x1f929f[_0x0a63('0x25')]()[_0x0a63('0x24')](function(){_0x20c114['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x55fb70,_0x4c8637){return function(_0xeacfc9){if(!_0xeacfc9){_0x55fb70['sendStatus'](0x194);}return _0xeacfc9;};}function handleError(_0x496c93,_0x2133cf){_0x2133cf=_0x2133cf||0x1f4;return function(_0x1d5448){logger[_0x0a63('0x26')](_0x1d5448[_0x0a63('0x27')]);if(_0x1d5448['name']){delete _0x1d5448[_0x0a63('0x28')];}_0x496c93[_0x0a63('0x19')](_0x2133cf)[_0x0a63('0x29')](_0x1d5448);};}exports['index']=function(_0x34239b,_0xcf409){var _0x1b7bdb={},_0x145090={},_0x32a52b={'count':0x0,'rows':[]};var _0x4577b6=_[_0x0a63('0x2a')](db[_0x0a63('0x2b')]['rawAttributes'],function(_0x58cc71){return{'name':_0x58cc71['fieldName'],'type':_0x58cc71[_0x0a63('0x2c')][_0x0a63('0x2d')]};});_0x145090[_0x0a63('0x2e')]=_[_0x0a63('0x2f')](_[_0x0a63('0x2a')](_0x4577b6,'name'),[_0x0a63('0x30')]);_0x145090[_0x0a63('0x31')]=_[_0x0a63('0x32')](_0x34239b[_0x0a63('0x31')]);_0x145090['filters']=_[_0x0a63('0x33')](_0x145090[_0x0a63('0x2e')],_0x145090['query']);_0x1b7bdb['attributes']=_[_0x0a63('0x33')](_0x145090['model'],qs['fields'](_0x34239b[_0x0a63('0x31')][_0x0a63('0x34')]));_0x1b7bdb['attributes']=_0x1b7bdb[_0x0a63('0x35')][_0x0a63('0x36')]?_0x1b7bdb[_0x0a63('0x35')]:_0x145090[_0x0a63('0x2e')];if(!_0x34239b[_0x0a63('0x31')]['hasOwnProperty']('nolimit')){_0x1b7bdb[_0x0a63('0x1c')]=qs[_0x0a63('0x1c')](_0x34239b[_0x0a63('0x31')][_0x0a63('0x1c')]);_0x1b7bdb[_0x0a63('0x1b')]=qs[_0x0a63('0x1b')](_0x34239b['query'][_0x0a63('0x1b')]);}_0x1b7bdb[_0x0a63('0x37')]=qs['sort'](_0x34239b[_0x0a63('0x31')]['sort']);_0x1b7bdb['where']=qs[_0x0a63('0x38')](_[_0x0a63('0x39')](_0x34239b[_0x0a63('0x31')],_0x145090['filters']),_0x4577b6);if(_0x34239b[_0x0a63('0x31')][_0x0a63('0x3a')]){_0x1b7bdb[_0x0a63('0x3b')]=_[_0x0a63('0x3c')](_0x1b7bdb[_0x0a63('0x3b')],{'$or':_[_0x0a63('0x2a')](_0x4577b6,function(_0x604a45){if(_0x604a45['type']!==_0x0a63('0x3d')){var _0x1c7e67={};_0x1c7e67[_0x604a45[_0x0a63('0x28')]]={'$like':'%'+_0x34239b['query']['filter']+'%'};return _0x1c7e67;}})});}_0x1b7bdb=_[_0x0a63('0x3c')]({},_0x1b7bdb,_0x34239b['options']);var _0x1a01f4={'where':_0x1b7bdb[_0x0a63('0x3b')]};return db[_0x0a63('0x2b')]['count'](_0x1a01f4)[_0x0a63('0x24')](function(_0x14c737){_0x32a52b[_0x0a63('0x1e')]=_0x14c737;if(_0x34239b[_0x0a63('0x31')]['includeAll']){_0x1b7bdb[_0x0a63('0x3e')]=[{'all':!![]}];}return db[_0x0a63('0x2b')][_0x0a63('0x3f')](_0x1b7bdb);})[_0x0a63('0x24')](function(_0xf18ace){_0x32a52b[_0x0a63('0x40')]=_0xf18ace;return _0x32a52b;})['then'](respondWithFilteredResult(_0xcf409,_0x1b7bdb))[_0x0a63('0x41')](handleError(_0xcf409,null));};exports[_0x0a63('0x42')]=function(_0x347a0b,_0x793502){var _0x20fa0d={'raw':![],'where':{'id':_0x347a0b[_0x0a63('0x43')]['id']}},_0x2482ca={};_0x2482ca[_0x0a63('0x2e')]=_[_0x0a63('0x32')](db[_0x0a63('0x2b')][_0x0a63('0x44')]);_0x2482ca[_0x0a63('0x31')]=_[_0x0a63('0x32')](_0x347a0b[_0x0a63('0x31')]);_0x2482ca[_0x0a63('0x38')]=_[_0x0a63('0x33')](_0x2482ca[_0x0a63('0x2e')],_0x2482ca[_0x0a63('0x31')]);_0x20fa0d['attributes']=_[_0x0a63('0x33')](_0x2482ca['model'],qs['fields'](_0x347a0b[_0x0a63('0x31')][_0x0a63('0x34')]));_0x20fa0d[_0x0a63('0x35')]=_0x20fa0d[_0x0a63('0x35')][_0x0a63('0x36')]?_0x20fa0d[_0x0a63('0x35')]:_0x2482ca[_0x0a63('0x2e')];if(_0x347a0b[_0x0a63('0x31')][_0x0a63('0x45')]){_0x20fa0d[_0x0a63('0x3e')]=[{'all':!![]}];}_0x20fa0d=_[_0x0a63('0x3c')]({},_0x20fa0d,_0x347a0b[_0x0a63('0x46')]);return db[_0x0a63('0x2b')][_0x0a63('0x47')](_0x20fa0d)[_0x0a63('0x24')](handleEntityNotFound(_0x793502,null))[_0x0a63('0x24')](respondWithResult(_0x793502,null))[_0x0a63('0x41')](handleError(_0x793502,null));};exports[_0x0a63('0x48')]=function(_0x366887,_0x148e0a){return db['ScreenRecording'][_0x0a63('0x48')](_0x366887[_0x0a63('0x49')],{})['then'](respondWithResult(_0x148e0a,0xc9))['catch'](handleError(_0x148e0a,null));};exports['update']=function(_0x485f20,_0x36d066){if(_0x485f20[_0x0a63('0x49')]['id']){delete _0x485f20['body']['id'];}delete _0x485f20[_0x0a63('0x49')]['duration'];delete _0x485f20[_0x0a63('0x49')][_0x0a63('0x4a')];delete _0x485f20['body']['closedAt'];delete _0x485f20['body'][_0x0a63('0x4b')];return db[_0x0a63('0x2b')][_0x0a63('0x47')]({'where':{'id':_0x485f20[_0x0a63('0x43')]['id']}})[_0x0a63('0x24')](handleEntityNotFound(_0x36d066,null))['then'](saveUpdates(_0x485f20[_0x0a63('0x49')],null))[_0x0a63('0x24')](respondWithResult(_0x36d066,null))[_0x0a63('0x41')](handleError(_0x36d066,null));};exports[_0x0a63('0x4c')]=function(_0x3575ae,_0x4a5b6e){return db[_0x0a63('0x2b')][_0x0a63('0x4c')]()[_0x0a63('0x24')](respondWithResult(_0x4a5b6e,null))[_0x0a63('0x41')](handleError(_0x4a5b6e,null));};exports['download']=function(_0x35b688,_0x3bd10c,_0x337bef){var _0x330550=require(_0x0a63('0x4d'));var _0x258ed3=![];var _0x4d4e20={};if(_0x35b688[_0x0a63('0x31')][_0x0a63('0x2c')]&&_0x35b688[_0x0a63('0x31')][_0x0a63('0x2c')]==='uniqueid'){_0x4d4e20['uniqueid']=_0x35b688[_0x0a63('0x43')]['id'];}else{_0x4d4e20['id']=_0x35b688[_0x0a63('0x43')]['id'];}return db[_0x0a63('0x2b')][_0x0a63('0x47')]({'where':_0x4d4e20,'attributes':['id',_0x0a63('0x4b')],'raw':!![]})['then'](handleEntityNotFound(_0x3bd10c,null))['then'](function(_0x58b3a8){if(_0x58b3a8){var _0x42c1bb=path['join'](config[_0x0a63('0x4e')],_0x0a63('0x4f'),_0x58b3a8[_0x0a63('0x4b')]);var _0x5d77e3=util['format'](_0x0a63('0x50'),_0x42c1bb);if(fs[_0x0a63('0x51')](_0x5d77e3)){_0x258ed3=!![];return _0x330550[_0x0a63('0x52')](_0x5d77e3,_0x42c1bb,config[_0x0a63('0x53')][_0x0a63('0x54')])[_0x0a63('0x24')](function(){return _0x58b3a8;});}return _0x58b3a8;}})[_0x0a63('0x24')](function(_0xc3415c){if(_0xc3415c){var _0xe454ef=path[_0x0a63('0x55')](config[_0x0a63('0x4e')],_0x0a63('0x4f'),_0xc3415c[_0x0a63('0x4b')]);if(!fs[_0x0a63('0x51')](_0xe454ef)){throw new db['Sequelize']['ValidationError'](_0x0a63('0x56'));}if(_0xc3415c[_0x0a63('0x57')]){return _0x3bd10c['download'](_0xe454ef,_0xc3415c[_0x0a63('0x57')]+path[_0x0a63('0x58')](_0xe454ef),function(){if(_0x258ed3){fs['unlink'](_0xe454ef);}});}else{return _0x3bd10c[_0x0a63('0x59')](_0xe454ef,function(_0x3053e4){if(_0x258ed3){fs['unlink'](_0xe454ef);}});}}})['catch'](function(_0x3b395a){if(_0x3b395a[_0x0a63('0x5a')]===_0x0a63('0x56')){_0x3bd10c['status'](0x194)[_0x0a63('0x29')](_0x0a63('0x5b'));}else{return handleError(_0x3bd10c,null);}});};exports[_0x0a63('0x25')]=function(_0x284dca,_0x15fc2e){return db['ScreenRecording'][_0x0a63('0x47')]({'where':{'id':_0x284dca[_0x0a63('0x43')]['id']}})[_0x0a63('0x24')](function(_0x1fa9cd){if(_[_0x0a63('0x5c')](_0x1fa9cd)){throw new ReferenceError(_0x0a63('0x5d'));}return _0x1fa9cd;})[_0x0a63('0x24')](function(_0x57313b){var _0x4571e7=path[_0x0a63('0x55')](config[_0x0a63('0x4e')],_0x0a63('0x4f'),_0x57313b[_0x0a63('0x4b')]);logger[_0x0a63('0x5e')](_0x0a63('0x5f'),_0x4571e7);if(!_[_0x0a63('0x5c')](_0x57313b['value'])&&fs['existsSync'](_0x4571e7)){logger[_0x0a63('0x5e')](_0x0a63('0x60')+_0x4571e7+_0x0a63('0x61'));fs[_0x0a63('0x62')](_0x4571e7);}_0x4571e7=_0x4571e7+_0x0a63('0x63');if(!_['isNil'](_0x57313b[_0x0a63('0x4b')])&&fs[_0x0a63('0x51')](_0x4571e7)){logger[_0x0a63('0x5e')](_0x0a63('0x60')+_0x4571e7+_0x0a63('0x61'));fs[_0x0a63('0x62')](_0x4571e7);}return _0x57313b;})[_0x0a63('0x24')](function(_0xe52dfd){if(!_0xe52dfd)throw new InternalError();return _0xe52dfd[_0x0a63('0x25')]();})[_0x0a63('0x24')](function(){_0x15fc2e[_0x0a63('0x19')](0xcc)['end']();})[_0x0a63('0x41')](handleError(_0x15fc2e,null));};
\ No newline at end of file
+var _0x8d0e=['name','send','map','fieldName','type','key','format','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','rows','catch','show','includeAll','include','ScreenRecording','find','create','body','duration','value','params','download','../../components/encryptor','uniqueid','join','root','server/files/screen_recordings','%s.cypher','existsSync','secrets','recording','Sequelize','filename','unlink','ScreenRecording\x20not\x20found','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','File:\x20\x22','unlinkSync','.cypher','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','status','json','undefined','limit','offset','count','set','apply','reject','save','update','destroy','then','end','sendStatus','error','stack'];(function(_0xfcada1,_0x18e124){var _0x48f4c0=function(_0x152d09){while(--_0x152d09){_0xfcada1['push'](_0xfcada1['shift']());}};_0x48f4c0(++_0x18e124);}(_0x8d0e,0x1d7));var _0xe8d0=function(_0x41e575,_0xf0ea0){_0x41e575=_0x41e575-0x0;var _0x56d54d=_0x8d0e[_0x41e575];return _0x56d54d;};'use strict';var emlformat=require(_0xe8d0('0x0'));var rimraf=require(_0xe8d0('0x1'));var zipdir=require(_0xe8d0('0x2'));var jsonpatch=require(_0xe8d0('0x3'));var rp=require(_0xe8d0('0x4'));var moment=require(_0xe8d0('0x5'));var BPromise=require(_0xe8d0('0x6'));var Mustache=require(_0xe8d0('0x7'));var util=require(_0xe8d0('0x8'));var path=require('path');var sox=require(_0xe8d0('0x9'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe8d0('0xa'));var _=require(_0xe8d0('0xb'));var squel=require(_0xe8d0('0xc'));var crypto=require(_0xe8d0('0xd'));var jsforce=require(_0xe8d0('0xe'));var deskjs=require(_0xe8d0('0xf'));var toCsv=require(_0xe8d0('0x10'));var querystring=require(_0xe8d0('0x11'));var Papa=require('papaparse');var Redis=require(_0xe8d0('0x12'));var authService=require(_0xe8d0('0x13'));var qs=require(_0xe8d0('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xe8d0('0x15'))(_0xe8d0('0x16'));var utils=require(_0xe8d0('0x17'));var config=require(_0xe8d0('0x18'));var licenseUtil=require(_0xe8d0('0x19'));var db=require(_0xe8d0('0x1a'))['db'];function respondWithStatusCode(_0x5934b2,_0x38fac0){_0x38fac0=_0x38fac0||0xcc;return function(_0x15b9e5){if(_0x15b9e5){return _0x5934b2['sendStatus'](_0x38fac0);}return _0x5934b2[_0xe8d0('0x1b')](_0x38fac0)['end']();};}function respondWithResult(_0x59b4b7,_0x90a1ea){_0x90a1ea=_0x90a1ea||0xc8;return function(_0x2aa906){if(_0x2aa906){return _0x59b4b7[_0xe8d0('0x1b')](_0x90a1ea)[_0xe8d0('0x1c')](_0x2aa906);}};}function respondWithFilteredResult(_0x15d3a1,_0x7151c6){return function(_0x52818a){if(_0x52818a){var _0x6ccffa=typeof _0x7151c6['offset']===_0xe8d0('0x1d')&&typeof _0x7151c6[_0xe8d0('0x1e')]===_0xe8d0('0x1d');var _0x4d1db4=_0x52818a['count'];var _0x47c67a=_0x6ccffa?0x0:_0x7151c6[_0xe8d0('0x1f')];var _0x384854=_0x6ccffa?_0x52818a[_0xe8d0('0x20')]:_0x7151c6[_0xe8d0('0x1f')]+_0x7151c6[_0xe8d0('0x1e')];var _0x588133;if(_0x384854>=_0x4d1db4){_0x384854=_0x4d1db4;_0x588133=0xc8;}else{_0x588133=0xce;}_0x15d3a1[_0xe8d0('0x1b')](_0x588133);return _0x15d3a1[_0xe8d0('0x21')]('Content-Range',_0x47c67a+'-'+_0x384854+'/'+_0x4d1db4)['json'](_0x52818a);}return null;};}function patchUpdates(_0x554402){return function(_0x384a60){try{jsonpatch[_0xe8d0('0x22')](_0x384a60,_0x554402,!![]);}catch(_0x25363b){return BPromise[_0xe8d0('0x23')](_0x25363b);}return _0x384a60[_0xe8d0('0x24')]();};}function saveUpdates(_0x23a945,_0x1bd25c){return function(_0x28a6b5){if(_0x28a6b5){return _0x28a6b5[_0xe8d0('0x25')](_0x23a945)['then'](function(_0xed8f2e){return _0xed8f2e;});}return null;};}function removeEntity(_0x9f747,_0x572c25){return function(_0x106614){if(_0x106614){return _0x106614[_0xe8d0('0x26')]()[_0xe8d0('0x27')](function(){_0x9f747[_0xe8d0('0x1b')](0xcc)[_0xe8d0('0x28')]();});}};}function handleEntityNotFound(_0x149dfd,_0x31519b){return function(_0x32f0c1){if(!_0x32f0c1){_0x149dfd[_0xe8d0('0x29')](0x194);}return _0x32f0c1;};}function handleError(_0x2dee67,_0x264de4){_0x264de4=_0x264de4||0x1f4;return function(_0x539548){logger[_0xe8d0('0x2a')](_0x539548[_0xe8d0('0x2b')]);if(_0x539548[_0xe8d0('0x2c')]){delete _0x539548['name'];}_0x2dee67[_0xe8d0('0x1b')](_0x264de4)[_0xe8d0('0x2d')](_0x539548);};}exports['index']=function(_0x1519e2,_0x3ffcb7){var _0x11fcf2={},_0x9eec0e={},_0x3cf3d6={'count':0x0,'rows':[]};var _0x495064=_[_0xe8d0('0x2e')](db['ScreenRecording']['rawAttributes'],function(_0x50ad3c){return{'name':_0x50ad3c[_0xe8d0('0x2f')],'type':_0x50ad3c[_0xe8d0('0x30')][_0xe8d0('0x31')]};});_0x9eec0e['model']=_['differenceBy'](_[_0xe8d0('0x2e')](_0x495064,'name'),[_0xe8d0('0x32')]);_0x9eec0e[_0xe8d0('0x33')]=_[_0xe8d0('0x34')](_0x1519e2[_0xe8d0('0x33')]);_0x9eec0e[_0xe8d0('0x35')]=_['intersection'](_0x9eec0e[_0xe8d0('0x36')],_0x9eec0e[_0xe8d0('0x33')]);_0x11fcf2[_0xe8d0('0x37')]=_[_0xe8d0('0x38')](_0x9eec0e['model'],qs[_0xe8d0('0x39')](_0x1519e2[_0xe8d0('0x33')]['fields']));_0x11fcf2[_0xe8d0('0x37')]=_0x11fcf2['attributes'][_0xe8d0('0x3a')]?_0x11fcf2['attributes']:_0x9eec0e[_0xe8d0('0x36')];if(!_0x1519e2['query'][_0xe8d0('0x3b')](_0xe8d0('0x3c'))){_0x11fcf2[_0xe8d0('0x1e')]=qs[_0xe8d0('0x1e')](_0x1519e2['query'][_0xe8d0('0x1e')]);_0x11fcf2[_0xe8d0('0x1f')]=qs[_0xe8d0('0x1f')](_0x1519e2['query'][_0xe8d0('0x1f')]);}_0x11fcf2[_0xe8d0('0x3d')]=qs[_0xe8d0('0x3e')](_0x1519e2[_0xe8d0('0x33')][_0xe8d0('0x3e')]);_0x11fcf2['where']=qs[_0xe8d0('0x35')](_[_0xe8d0('0x3f')](_0x1519e2[_0xe8d0('0x33')],_0x9eec0e[_0xe8d0('0x35')]),_0x495064);if(_0x1519e2[_0xe8d0('0x33')][_0xe8d0('0x40')]){_0x11fcf2[_0xe8d0('0x41')]=_[_0xe8d0('0x42')](_0x11fcf2['where'],{'$or':_['map'](_0x495064,function(_0xdca203){if(_0xdca203[_0xe8d0('0x30')]!==_0xe8d0('0x43')){var _0x377dc1={};_0x377dc1[_0xdca203[_0xe8d0('0x2c')]]={'$like':'%'+_0x1519e2['query'][_0xe8d0('0x40')]+'%'};return _0x377dc1;}})});}_0x11fcf2=_['merge']({},_0x11fcf2,_0x1519e2[_0xe8d0('0x44')]);var _0x458294={'where':_0x11fcf2[_0xe8d0('0x41')]};return db['ScreenRecording'][_0xe8d0('0x20')](_0x458294)[_0xe8d0('0x27')](function(_0x731382){_0x3cf3d6[_0xe8d0('0x20')]=_0x731382;if(_0x1519e2[_0xe8d0('0x33')]['includeAll']){_0x11fcf2['include']=[{'all':!![]}];}return db['ScreenRecording']['findAll'](_0x11fcf2);})[_0xe8d0('0x27')](function(_0x52f288){_0x3cf3d6[_0xe8d0('0x45')]=_0x52f288;return _0x3cf3d6;})[_0xe8d0('0x27')](respondWithFilteredResult(_0x3ffcb7,_0x11fcf2))[_0xe8d0('0x46')](handleError(_0x3ffcb7,null));};exports[_0xe8d0('0x47')]=function(_0x2fd21e,_0x1156da){var _0x1b41c7={'raw':![],'where':{'id':_0x2fd21e['params']['id']}},_0x3cbca5={};_0x3cbca5[_0xe8d0('0x36')]=_[_0xe8d0('0x34')](db['ScreenRecording']['rawAttributes']);_0x3cbca5[_0xe8d0('0x33')]=_[_0xe8d0('0x34')](_0x2fd21e[_0xe8d0('0x33')]);_0x3cbca5['filters']=_[_0xe8d0('0x38')](_0x3cbca5[_0xe8d0('0x36')],_0x3cbca5['query']);_0x1b41c7[_0xe8d0('0x37')]=_[_0xe8d0('0x38')](_0x3cbca5['model'],qs[_0xe8d0('0x39')](_0x2fd21e[_0xe8d0('0x33')][_0xe8d0('0x39')]));_0x1b41c7[_0xe8d0('0x37')]=_0x1b41c7[_0xe8d0('0x37')][_0xe8d0('0x3a')]?_0x1b41c7[_0xe8d0('0x37')]:_0x3cbca5[_0xe8d0('0x36')];if(_0x2fd21e['query'][_0xe8d0('0x48')]){_0x1b41c7[_0xe8d0('0x49')]=[{'all':!![]}];}_0x1b41c7=_[_0xe8d0('0x42')]({},_0x1b41c7,_0x2fd21e[_0xe8d0('0x44')]);return db[_0xe8d0('0x4a')][_0xe8d0('0x4b')](_0x1b41c7)[_0xe8d0('0x27')](handleEntityNotFound(_0x1156da,null))[_0xe8d0('0x27')](respondWithResult(_0x1156da,null))[_0xe8d0('0x46')](handleError(_0x1156da,null));};exports[_0xe8d0('0x4c')]=function(_0x361e3d,_0x3a5987){return db['ScreenRecording'][_0xe8d0('0x4c')](_0x361e3d[_0xe8d0('0x4d')],{})[_0xe8d0('0x27')](respondWithResult(_0x3a5987,0xc9))[_0xe8d0('0x46')](handleError(_0x3a5987,null));};exports[_0xe8d0('0x25')]=function(_0x2e4caf,_0x5a0c7e){if(_0x2e4caf['body']['id']){delete _0x2e4caf[_0xe8d0('0x4d')]['id'];}delete _0x2e4caf[_0xe8d0('0x4d')][_0xe8d0('0x4e')];delete _0x2e4caf[_0xe8d0('0x4d')]['createdAt'];delete _0x2e4caf[_0xe8d0('0x4d')]['closedAt'];delete _0x2e4caf[_0xe8d0('0x4d')][_0xe8d0('0x4f')];return db[_0xe8d0('0x4a')][_0xe8d0('0x4b')]({'where':{'id':_0x2e4caf[_0xe8d0('0x50')]['id']}})[_0xe8d0('0x27')](handleEntityNotFound(_0x5a0c7e,null))[_0xe8d0('0x27')](saveUpdates(_0x2e4caf['body'],null))[_0xe8d0('0x27')](respondWithResult(_0x5a0c7e,null))['catch'](handleError(_0x5a0c7e,null));};exports['describe']=function(_0x35138a,_0x5516ad){return db[_0xe8d0('0x4a')]['describe']()[_0xe8d0('0x27')](respondWithResult(_0x5516ad,null))[_0xe8d0('0x46')](handleError(_0x5516ad,null));};exports[_0xe8d0('0x51')]=function(_0xcf4642,_0x555a56,_0x3088b1){var _0xbd55db=require(_0xe8d0('0x52'));var _0x2e3f1d=![];var _0x18cc14={};if(_0xcf4642['query'][_0xe8d0('0x30')]&&_0xcf4642[_0xe8d0('0x33')][_0xe8d0('0x30')]==='uniqueid'){_0x18cc14[_0xe8d0('0x53')]=_0xcf4642['params']['id'];}else{_0x18cc14['id']=_0xcf4642['params']['id'];}return db[_0xe8d0('0x4a')][_0xe8d0('0x4b')]({'where':_0x18cc14,'attributes':['id','value'],'raw':!![]})[_0xe8d0('0x27')](handleEntityNotFound(_0x555a56,null))[_0xe8d0('0x27')](function(_0x47893d){if(_0x47893d){var _0x2a54c1=path[_0xe8d0('0x54')](config[_0xe8d0('0x55')],_0xe8d0('0x56'),_0x47893d['value']);var _0x20f6c2=util[_0xe8d0('0x32')](_0xe8d0('0x57'),_0x2a54c1);if(fs[_0xe8d0('0x58')](_0x20f6c2)){_0x2e3f1d=!![];return _0xbd55db['decryptFile'](_0x20f6c2,_0x2a54c1,config[_0xe8d0('0x59')][_0xe8d0('0x5a')])[_0xe8d0('0x27')](function(){return _0x47893d;});}return _0x47893d;}})[_0xe8d0('0x27')](function(_0x1a74d0){if(_0x1a74d0){var _0x29667c=path['join'](config['root'],_0xe8d0('0x56'),_0x1a74d0['value']);if(!fs[_0xe8d0('0x58')](_0x29667c)){throw new db[(_0xe8d0('0x5b'))]['ValidationError']('ScreenRecording\x20not\x20found');}if(_0x1a74d0[_0xe8d0('0x5c')]){return _0x555a56['download'](_0x29667c,_0x1a74d0[_0xe8d0('0x5c')]+path['extname'](_0x29667c),function(){if(_0x2e3f1d){fs[_0xe8d0('0x5d')](_0x29667c);}});}else{return _0x555a56[_0xe8d0('0x51')](_0x29667c,function(_0x13b9f0){if(_0x2e3f1d){fs['unlink'](_0x29667c);}});}}})[_0xe8d0('0x46')](function(_0x3cbc9f){if(_0x3cbc9f['message']===_0xe8d0('0x5e')){_0x555a56['status'](0x194)[_0xe8d0('0x2d')]('Not\x20found');}else{return handleError(_0x555a56,null);}});};exports[_0xe8d0('0x26')]=function(_0x17afc2,_0x29467d){return db[_0xe8d0('0x4a')][_0xe8d0('0x4b')]({'where':{'id':_0x17afc2['params']['id']}})['then'](function(_0xd7d433){if(_['isNil'](_0xd7d433)){throw new ReferenceError(_0xe8d0('0x5f'));}return _0xd7d433;})[_0xe8d0('0x27')](function(_0xbbe457){var _0x95565d=path[_0xe8d0('0x54')](config[_0xe8d0('0x55')],_0xe8d0('0x56'),_0xbbe457[_0xe8d0('0x4f')]);logger[_0xe8d0('0x60')](_0xe8d0('0x61'),_0x95565d);if(!_[_0xe8d0('0x62')](_0xbbe457[_0xe8d0('0x4f')])&&fs[_0xe8d0('0x58')](_0x95565d)){logger[_0xe8d0('0x60')](_0xe8d0('0x63')+_0x95565d+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs[_0xe8d0('0x64')](_0x95565d);}_0x95565d=_0x95565d+_0xe8d0('0x65');if(!_[_0xe8d0('0x62')](_0xbbe457[_0xe8d0('0x4f')])&&fs[_0xe8d0('0x58')](_0x95565d)){logger['info'](_0xe8d0('0x63')+_0x95565d+_0xe8d0('0x66'));fs[_0xe8d0('0x64')](_0x95565d);}return _0xbbe457;})[_0xe8d0('0x27')](function(_0x360633){if(!_0x360633)throw new InternalError();return _0x360633[_0xe8d0('0x26')]();})[_0xe8d0('0x27')](function(){_0x29467d[_0xe8d0('0x1b')](0xcc)[_0xe8d0('0x28')]();})[_0xe8d0('0x46')](handleError(_0x29467d,null));};
\ No newline at end of file
index 55c7cfa..b66e156 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf9bc=['./screenRecording.attributes','exports','define','ScreenRecording','screen_recordings','lodash','util','../../config/logger','api','moment','bluebird','request-promise','../../config/environment'];(function(_0x17823f,_0xffd807){var _0x51fc21=function(_0x5e4921){while(--_0x5e4921){_0x17823f['push'](_0x17823f['shift']());}};_0x51fc21(++_0xffd807);}(_0xf9bc,0x157));var _0xcf9b=function(_0x3fdc1c,_0x37a475){_0x3fdc1c=_0x3fdc1c-0x0;var _0x495e29=_0xf9bc[_0x3fdc1c];return _0x495e29;};'use strict';var _=require(_0xcf9b('0x0'));var util=require(_0xcf9b('0x1'));var logger=require(_0xcf9b('0x2'))(_0xcf9b('0x3'));var moment=require(_0xcf9b('0x4'));var BPromise=require(_0xcf9b('0x5'));var rp=require(_0xcf9b('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0xcf9b('0x7'));var attributes=require(_0xcf9b('0x8'));module[_0xcf9b('0x9')]=function(_0x2334b0,_0x12c881){return _0x2334b0[_0xcf9b('0xa')](_0xcf9b('0xb'),attributes,{'tableName':_0xcf9b('0xc'),'paranoid':![],'indexes':[{'name':'interactionid','fields':['interactionid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfa95=['./screenRecording.attributes','ScreenRecording','screen_recordings','interactionid','util','api','moment','request-promise','path','../../config/environment'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0xfa95,0x11c));var _0x5fa9=function(_0xabbd2f,_0x44d05a){_0xabbd2f=_0xabbd2f-0x0;var _0x34a040=_0xfa95[_0xabbd2f];return _0x34a040;};'use strict';var _=require('lodash');var util=require(_0x5fa9('0x0'));var logger=require('../../config/logger')(_0x5fa9('0x1'));var moment=require(_0x5fa9('0x2'));var BPromise=require('bluebird');var rp=require(_0x5fa9('0x3'));var fs=require('fs');var path=require(_0x5fa9('0x4'));var rimraf=require('rimraf');var config=require(_0x5fa9('0x5'));var attributes=require(_0x5fa9('0x6'));module['exports']=function(_0x48b192,_0x52e69d){return _0x48b192['define'](_0x5fa9('0x7'),attributes,{'tableName':_0x5fa9('0x8'),'paranoid':![],'indexes':[{'name':_0x5fa9('0x9'),'fields':['interactionid']}],'timestamps':!![]});};
\ No newline at end of file
index ef832c6..b74e43a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d0c=['http','request','then','info','ScreenRecording,\x20%s,\x20%s','request\x20sent','debug','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x17d9e3,_0x1f969c){var _0x14192d=function(_0x159745){while(--_0x159745){_0x17d9e3['push'](_0x17d9e3['shift']());}};_0x14192d(++_0x1f969c);}(_0x5d0c,0xf8));var _0xc5d0=function(_0x3673a9,_0xbd430){_0x3673a9=_0x3673a9-0x0;var _0x243008=_0x5d0c[_0x3673a9];return _0x243008;};'use strict';var _=require(_0xc5d0('0x0'));var util=require(_0xc5d0('0x1'));var moment=require(_0xc5d0('0x2'));var BPromise=require(_0xc5d0('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xc5d0('0x4'));var db=require(_0xc5d0('0x5'))['db'];var utils=require(_0xc5d0('0x6'));var logger=require(_0xc5d0('0x7'))(_0xc5d0('0x8'));var config=require(_0xc5d0('0x9'));var jayson=require(_0xc5d0('0xa'));var client=jayson[_0xc5d0('0xb')][_0xc5d0('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x2a44ae,_0x3c90f9,_0xd3efc0){return new BPromise(function(_0x1dea6c,_0x4d0f1b){return client[_0xc5d0('0xd')](_0x2a44ae,_0xd3efc0)[_0xc5d0('0xe')](function(_0x1a7a7a){logger[_0xc5d0('0xf')](_0xc5d0('0x10'),_0x3c90f9,_0xc5d0('0x11'));logger[_0xc5d0('0x12')](_0xc5d0('0x13'),_0x3c90f9,'request\x20sent',JSON[_0xc5d0('0x14')](_0x1a7a7a));if(_0x1a7a7a['error']){if(_0x1a7a7a[_0xc5d0('0x15')][_0xc5d0('0x16')]===0x1f4){logger[_0xc5d0('0x15')](_0xc5d0('0x10'),_0x3c90f9,_0x1a7a7a['error'][_0xc5d0('0x17')]);return _0x4d0f1b(_0x1a7a7a[_0xc5d0('0x15')][_0xc5d0('0x17')]);}logger[_0xc5d0('0x15')](_0xc5d0('0x10'),_0x3c90f9,_0x1a7a7a[_0xc5d0('0x15')]['message']);return _0x1dea6c(_0x1a7a7a[_0xc5d0('0x15')][_0xc5d0('0x17')]);}else{logger[_0xc5d0('0xf')]('ScreenRecording,\x20%s,\x20%s',_0x3c90f9,_0xc5d0('0x11'));_0x1dea6c(_0x1a7a7a[_0xc5d0('0x18')][_0xc5d0('0x17')]);}})[_0xc5d0('0x19')](function(_0xf7c207){logger['error'](_0xc5d0('0x10'),_0x3c90f9,_0xf7c207);_0x4d0f1b(_0xf7c207);});});}
\ No newline at end of file
+var _0x98e1=['client','http','request','then','ScreenRecording,\x20%s,\x20%s','request\x20sent','ScreenRecording,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x98e1,0x1bd));var _0x198e=function(_0x1c3cea,_0x57b8ca){_0x1c3cea=_0x1c3cea-0x0;var _0x2fa7be=_0x98e1[_0x1c3cea];return _0x2fa7be;};'use strict';var _=require(_0x198e('0x0'));var util=require('util');var moment=require(_0x198e('0x1'));var BPromise=require(_0x198e('0x2'));var rs=require(_0x198e('0x3'));var fs=require('fs');var Redis=require(_0x198e('0x4'));var db=require(_0x198e('0x5'))['db'];var utils=require(_0x198e('0x6'));var logger=require(_0x198e('0x7'))(_0x198e('0x8'));var config=require(_0x198e('0x9'));var jayson=require(_0x198e('0xa'));var client=jayson[_0x198e('0xb')][_0x198e('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4f16e3,_0x1de072,_0x1c8ab3){return new BPromise(function(_0x15d517,_0x4158ee){return client[_0x198e('0xd')](_0x4f16e3,_0x1c8ab3)[_0x198e('0xe')](function(_0x176a62){logger['info'](_0x198e('0xf'),_0x1de072,_0x198e('0x10'));logger['debug'](_0x198e('0x11'),_0x1de072,_0x198e('0x10'),JSON[_0x198e('0x12')](_0x176a62));if(_0x176a62['error']){if(_0x176a62['error'][_0x198e('0x13')]===0x1f4){logger['error'](_0x198e('0xf'),_0x1de072,_0x176a62[_0x198e('0x14')][_0x198e('0x15')]);return _0x4158ee(_0x176a62[_0x198e('0x14')][_0x198e('0x15')]);}logger[_0x198e('0x14')](_0x198e('0xf'),_0x1de072,_0x176a62[_0x198e('0x14')][_0x198e('0x15')]);return _0x15d517(_0x176a62[_0x198e('0x14')]['message']);}else{logger[_0x198e('0x16')](_0x198e('0xf'),_0x1de072,_0x198e('0x10'));_0x15d517(_0x176a62['result'][_0x198e('0x15')]);}})[_0x198e('0x17')](function(_0x1674cd){logger[_0x198e('0x14')](_0x198e('0xf'),_0x1de072,_0x1674cd);_0x4158ee(_0x1674cd);});});}
\ No newline at end of file
index 52ad28c..1d67fe2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8601=['addPreferred','favicon','addFavicon','put','isAuthenticated','update','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','get','/now','getDate','/:id','show','/:id/logo','getLogo','/:id/logo_login','getLogoLogin','/:id/gdpr','getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','server/files/images/logos/','logo','post','single','file','addLogo','format','originalname','%s%s','preferred','extname','/:id/preferred'];(function(_0x54cc74,_0x11c04e){var _0x4e6f56=function(_0x325ac0){while(--_0x325ac0){_0x54cc74['push'](_0x54cc74['shift']());}};_0x4e6f56(++_0x11c04e);}(_0x8601,0x15f));var _0x1860=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x8601[_0x19e35c];return _0x3e1fe8;};'use strict';var multer=require(_0x1860('0x0'));var util=require(_0x1860('0x1'));var path=require(_0x1860('0x2'));var timeout=require(_0x1860('0x3'));var express=require('express');var router=express[_0x1860('0x4')]();var fs_extra=require(_0x1860('0x5'));var auth=require(_0x1860('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x1860('0x7'));var controller=require('./setting.controller');router[_0x1860('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x1860('0x8')](_0x1860('0x9'),controller[_0x1860('0xa')]);router[_0x1860('0x8')](_0x1860('0xb'),controller[_0x1860('0xc')]);router[_0x1860('0x8')](_0x1860('0xd'),controller[_0x1860('0xe')]);router[_0x1860('0x8')](_0x1860('0xf'),controller[_0x1860('0x10')]);router[_0x1860('0x8')](_0x1860('0x11'),controller['gdpr']);router[_0x1860('0x8')]('/:id/preferred',controller[_0x1860('0x12')]);router[_0x1860('0x8')](_0x1860('0x13'),controller[_0x1860('0x14')]);var upload=multer({'storage':multer[_0x1860('0x15')]({'destination':function(_0x9da3ca,_0x2dd5f4,_0x589315){_0x589315(null,path[_0x1860('0x16')](config[_0x1860('0x17')],_0x1860('0x18')));},'filename':function(_0x41920b,_0xd3c97d,_0x2fb245){_0x2fb245(null,util['format']('%s%s',_0x1860('0x19'),path['extname'](_0xd3c97d['originalname'])));}})});router[_0x1860('0x1a')](_0x1860('0xd'),upload[_0x1860('0x1b')](_0x1860('0x1c')),controller[_0x1860('0x1d')]);var upload=multer({'storage':multer[_0x1860('0x15')]({'destination':function(_0x34f730,_0x21bdf3,_0x3fee18){_0x3fee18(null,path[_0x1860('0x16')](config[_0x1860('0x17')],'server/files/images/logos/'));},'filename':function(_0x39217a,_0x1a6246,_0x1b4740){_0x1b4740(null,util[_0x1860('0x1e')]('%s%s','logologin',path['extname'](_0x1a6246[_0x1860('0x1f')])));}})});router['post'](_0x1860('0xf'),upload[_0x1860('0x1b')]('file'),controller['addLogoLogin']);var upload=multer({'storage':multer[_0x1860('0x15')]({'destination':function(_0x341967,_0x30d2d3,_0x3b5a7f){_0x3b5a7f(null,path[_0x1860('0x16')](config['root'],_0x1860('0x18')));},'filename':function(_0x4670ea,_0x4b0cb2,_0xd67ab5){_0xd67ab5(null,util[_0x1860('0x1e')](_0x1860('0x20'),_0x1860('0x21'),path[_0x1860('0x22')](_0x4b0cb2[_0x1860('0x1f')])));}})});router[_0x1860('0x1a')](_0x1860('0x23'),upload['single'](_0x1860('0x1c')),controller[_0x1860('0x24')]);var upload=multer({'storage':multer[_0x1860('0x15')]({'destination':function(_0x1cc420,_0x4e2ead,_0x3591e0){_0x3591e0(null,path[_0x1860('0x16')](config[_0x1860('0x17')],_0x1860('0x18')));},'filename':function(_0x5a7418,_0x23b281,_0x3cd9f2){_0x3cd9f2(null,util[_0x1860('0x1e')](_0x1860('0x20'),_0x1860('0x25'),path['extname'](_0x23b281[_0x1860('0x1f')])));}})});router['post'](_0x1860('0x13'),upload[_0x1860('0x1b')](_0x1860('0x1c')),controller[_0x1860('0x26')]);router[_0x1860('0x27')](_0x1860('0xb'),auth[_0x1860('0x28')](),controller[_0x1860('0x29')]);module[_0x1860('0x2a')]=router;
\ No newline at end of file
+var _0xf33b=['getLogoLogin','/:id/gdpr','gdpr','/:id/preferred','getPreferred','/:id/favicon','getFavicon','diskStorage','join','root','server/files/images/logos/','%s%s','extname','originalname','post','single','file','addLogo','format','logologin','addLogoLogin','preferred','addPreferred','addFavicon','put','update','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./setting.controller','get','isAuthenticated','/now','/:id','show','/:id/logo','getLogo','/:id/logo_login'];(function(_0x5b8b97,_0x6b4dfa){var _0x1fdf84=function(_0x2ced4c){while(--_0x2ced4c){_0x5b8b97['push'](_0x5b8b97['shift']());}};_0x1fdf84(++_0x6b4dfa);}(_0xf33b,0x1a6));var _0xbf33=function(_0x30cd7e,_0x4db10a){_0x30cd7e=_0x30cd7e-0x0;var _0x462a02=_0xf33b[_0x30cd7e];return _0x462a02;};'use strict';var multer=require(_0xbf33('0x0'));var util=require(_0xbf33('0x1'));var path=require(_0xbf33('0x2'));var timeout=require(_0xbf33('0x3'));var express=require(_0xbf33('0x4'));var router=express['Router']();var fs_extra=require(_0xbf33('0x5'));var auth=require(_0xbf33('0x6'));var interaction=require(_0xbf33('0x7'));var config=require(_0xbf33('0x8'));var controller=require(_0xbf33('0x9'));router[_0xbf33('0xa')]('/',auth[_0xbf33('0xb')](),controller['index']);router[_0xbf33('0xa')](_0xbf33('0xc'),controller['getDate']);router[_0xbf33('0xa')](_0xbf33('0xd'),controller[_0xbf33('0xe')]);router[_0xbf33('0xa')](_0xbf33('0xf'),controller[_0xbf33('0x10')]);router[_0xbf33('0xa')](_0xbf33('0x11'),controller[_0xbf33('0x12')]);router[_0xbf33('0xa')](_0xbf33('0x13'),controller[_0xbf33('0x14')]);router[_0xbf33('0xa')](_0xbf33('0x15'),controller[_0xbf33('0x16')]);router['get'](_0xbf33('0x17'),controller[_0xbf33('0x18')]);var upload=multer({'storage':multer[_0xbf33('0x19')]({'destination':function(_0x2d8f50,_0x2365c7,_0x502f49){_0x502f49(null,path[_0xbf33('0x1a')](config[_0xbf33('0x1b')],_0xbf33('0x1c')));},'filename':function(_0x4ba179,_0x5aa2e1,_0x51e82b){_0x51e82b(null,util['format'](_0xbf33('0x1d'),'logo',path[_0xbf33('0x1e')](_0x5aa2e1[_0xbf33('0x1f')])));}})});router[_0xbf33('0x20')]('/:id/logo',upload[_0xbf33('0x21')](_0xbf33('0x22')),controller[_0xbf33('0x23')]);var upload=multer({'storage':multer[_0xbf33('0x19')]({'destination':function(_0x4e1c14,_0x374640,_0x2d34e1){_0x2d34e1(null,path[_0xbf33('0x1a')](config[_0xbf33('0x1b')],_0xbf33('0x1c')));},'filename':function(_0x1f707d,_0x25d8bb,_0x3dadbe){_0x3dadbe(null,util[_0xbf33('0x24')]('%s%s',_0xbf33('0x25'),path[_0xbf33('0x1e')](_0x25d8bb['originalname'])));}})});router[_0xbf33('0x20')](_0xbf33('0x11'),upload['single'](_0xbf33('0x22')),controller[_0xbf33('0x26')]);var upload=multer({'storage':multer[_0xbf33('0x19')]({'destination':function(_0x1249d5,_0x4cca73,_0x202119){_0x202119(null,path[_0xbf33('0x1a')](config['root'],_0xbf33('0x1c')));},'filename':function(_0x4e1759,_0x3f4296,_0x26cdeb){_0x26cdeb(null,util[_0xbf33('0x24')]('%s%s',_0xbf33('0x27'),path[_0xbf33('0x1e')](_0x3f4296[_0xbf33('0x1f')])));}})});router[_0xbf33('0x20')](_0xbf33('0x15'),upload[_0xbf33('0x21')](_0xbf33('0x22')),controller[_0xbf33('0x28')]);var upload=multer({'storage':multer[_0xbf33('0x19')]({'destination':function(_0x2990a3,_0x4c8cf1,_0x1bd117){_0x1bd117(null,path[_0xbf33('0x1a')](config[_0xbf33('0x1b')],_0xbf33('0x1c')));},'filename':function(_0x1236c4,_0xf1de98,_0x1d5e70){_0x1d5e70(null,util[_0xbf33('0x24')](_0xbf33('0x1d'),'favicon',path[_0xbf33('0x1e')](_0xf1de98[_0xbf33('0x1f')])));}})});router[_0xbf33('0x20')](_0xbf33('0x17'),upload[_0xbf33('0x21')]('file'),controller[_0xbf33('0x29')]);router[_0xbf33('0x2a')]('/:id',auth[_0xbf33('0xb')](),controller[_0xbf33('0x2b')]);module['exports']=router;
\ No newline at end of file
index ba54ce7..9d3ec9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c38=['exports','min_internal','INTEGER','STRING','/var/opt/motion2/server/files/sounds/converted','BOOLEAN','alternate','UNSIGNED'];(function(_0x256497,_0x4a76fe){var _0x15dedd=function(_0x40196f){while(--_0x40196f){_0x256497['push'](_0x256497['shift']());}};_0x15dedd(++_0x4a76fe);}(_0x5c38,0xe0));var _0x85c3=function(_0x44c6c7,_0x4e01b8){_0x44c6c7=_0x44c6c7-0x0;var _0x576a63=_0x5c38[_0x44c6c7];return _0x576a63;};'use strict';var Sequelize=require('sequelize');module[_0x85c3('0x0')]={'min_internal':{'type':Sequelize['INTEGER'](0xb),'unique':_0x85c3('0x1'),'defaultValue':0x3e8},'min_mailbox':{'type':Sequelize[_0x85c3('0x2')](0xb),'unique':'min_mailbox','defaultValue':0x3e8},'agi_port':{'type':Sequelize[_0x85c3('0x2')](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x85c3('0x3')],'defaultValue':_0x85c3('0x4')},'logo':{'type':Sequelize[_0x85c3('0x3')]},'defaultLogo':{'type':Sequelize[_0x85c3('0x5')],'defaultValue':!![]},'loginLogo':{'type':Sequelize['STRING']},'defaultLoginLogo':{'type':Sequelize[_0x85c3('0x5')],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x85c3('0x3')]},'defaultHeaderWhiteLabel':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x85c3('0x5')],'defaultValue':!![]},'firstSetup':{'type':Sequelize[_0x85c3('0x5')],'defaultValue':!![]},'stunaddr':{'type':Sequelize[_0x85c3('0x3')]},'turnaddr':{'type':Sequelize[_0x85c3('0x3')]},'turnusername':{'type':Sequelize['STRING']},'turnpassword':{'type':Sequelize[_0x85c3('0x3')]},'pageTitle':{'type':Sequelize['STRING']},'defaultPageTitle':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x85c3('0x5')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x85c3('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x85c3('0x5')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x85c3('0x3')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize[_0x85c3('0x5')],'defaultValue':![]},'split':{'type':Sequelize[_0x85c3('0x5')],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize[_0x85c3('0x2')],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x85c3('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x85c3('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x85c3('0x3')],'defaultValue':_0x85c3('0x6')},'chatTimeout':{'type':Sequelize[_0x85c3('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x85c3('0x5')],'defaultValue':!![]},'preferred':{'type':Sequelize[_0x85c3('0x3')]},'defaultPreferred':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x85c3('0x5')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x85c3('0x3')]},'allowedLoginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x85c3('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x85c3('0x3')]},'defaultFavicon':{'type':Sequelize[_0x85c3('0x5')],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x85c3('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x85c3('0x5')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize[_0x85c3('0x2')]},'transcribeRegion':{'type':Sequelize[_0x85c3('0x3')]},'sentiment':{'type':Sequelize[_0x85c3('0x5')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize[_0x85c3('0x5')],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize['INTEGER']},'sentimentRegion':{'type':Sequelize[_0x85c3('0x3')]},'language':{'type':Sequelize[_0x85c3('0x3')]},'bucket':{'type':Sequelize[_0x85c3('0x3')]},'googleSsoEnabled':{'type':Sequelize[_0x85c3('0x5')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x85c3('0x5')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x85c3('0x2')](0x2)[_0x85c3('0x7')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x85c3('0x2')](0x2)[_0x85c3('0x7')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize['INTEGER'](0x2)[_0x85c3('0x7')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x85c3('0x2')](0x2)[_0x85c3('0x7')],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x85c3('0x5')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x85c3('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize[_0x85c3('0x2')],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x85c3('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize[_0x85c3('0x2')],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x85c3('0x5')],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize[_0x85c3('0x5')],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize[_0x85c3('0x5')],'defaultValue':!![]},'previewRecallmeReminderInterval':{'type':Sequelize['INTEGER'],'defaultValue':0x5},'disabledCookie':{'type':Sequelize[_0x85c3('0x5')],'defaultValue':![]},'limitTabs':{'type':Sequelize['INTEGER'],'defaultValue':0x14}};
\ No newline at end of file
+var _0xa9e0=['BOOLEAN','alternate','UNSIGNED','sequelize','exports','INTEGER','min_mailbox','STRING','/var/opt/motion2/server/files/sounds/converted'];(function(_0x20e374,_0x3e48d2){var _0x317cfb=function(_0x28dc46){while(--_0x28dc46){_0x20e374['push'](_0x20e374['shift']());}};_0x317cfb(++_0x3e48d2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xa9e0[_0x2f5ac5];return _0x37c9a8;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'min_internal':{'type':Sequelize[_0x0a9e('0x2')](0xb),'unique':'min_internal','defaultValue':0x3e8},'min_mailbox':{'type':Sequelize['INTEGER'](0xb),'unique':_0x0a9e('0x3'),'defaultValue':0x3e8},'agi_port':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x11dd},'soundPath':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x5')},'logo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLogo':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'loginLogo':{'type':Sequelize[_0x0a9e('0x4')]},'defaultLoginLogo':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'headerWhiteLabel':{'type':Sequelize[_0x0a9e('0x4')]},'defaultHeaderWhiteLabel':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'securePassword':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'firstSetup':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'stunaddr':{'type':Sequelize['STRING']},'turnaddr':{'type':Sequelize[_0x0a9e('0x4')]},'turnusername':{'type':Sequelize['STRING']},'turnpassword':{'type':Sequelize['STRING']},'pageTitle':{'type':Sequelize[_0x0a9e('0x4')]},'defaultPageTitle':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'callRecordingEncryption':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'passwordExpiresDays':{'type':Sequelize[_0x0a9e('0x2')](0xb),'defaultValue':0x5a},'phoneBarAutoUpdater':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'phoneBarAutoUpdaterUrl':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':'https://www.xcally.com/bar/phonebar/autoupdater.xml'},'enableEmailPreview':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'split':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'splitSizeCsv':{'type':Sequelize['INTEGER'],'defaultValue':0x1388},'splitSizePdf':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'splitSizeXlsx':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1388},'messagesAlignment':{'type':Sequelize[_0x0a9e('0x4')],'defaultValue':_0x0a9e('0x7')},'chatTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x1e},'phoneBarRememberMeEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'preferred':{'type':Sequelize['STRING']},'defaultPreferred':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'rtlSupport':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'defaultScreenRecordingPath':{'type':Sequelize[_0x0a9e('0x4')]},'allowedLoginAttempts':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5},'blockDuration':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa},'favicon':{'type':Sequelize[_0x0a9e('0x4')]},'defaultFavicon':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'loginMailFrequency':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0xa,'validate':{'min':0xa}},'transcribe':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'automaticTranscribe':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'transcribeAccountId':{'type':Sequelize['INTEGER']},'transcribeRegion':{'type':Sequelize[_0x0a9e('0x4')]},'sentiment':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'automaticSentiment':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'sentimentAccountId':{'type':Sequelize[_0x0a9e('0x2')]},'sentimentRegion':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x0a9e('0x4')]},'bucket':{'type':Sequelize[_0x0a9e('0x4')]},'googleSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'enforcePasswordHistory':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'passwordHistoryLimit':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5}},'privacyPolicyEmail':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyName':{'type':Sequelize[_0x0a9e('0x2')](0x2)[_0x0a9e('0x8')],'defaultValue':0x0},'privacyPolicyNumber':{'type':Sequelize[_0x0a9e('0x2')](0x2)['UNSIGNED'],'defaultValue':0x0},'searchOnEnterKey':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'chatInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'mailInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelInteractionsReloadTimeout':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0},'smsInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'whatsappInteractionsReloadTimeout':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'stopRecordingOnTransfer':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':![]},'secureCookieEnabled':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'viewHelpSection':{'type':Sequelize[_0x0a9e('0x6')],'defaultValue':!![]},'previewRecallmeReminderInterval':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x5,'validate':{'min':0x1}},'disabledCookie':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'limitTabs':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x14}};
\ No newline at end of file
index 376e8ea..ce3cce6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4ce6=['getDate','utcOffset','now','YYYY-MM-DD\x20HH:mm:ss:SSS','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','ejs','lodash','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','jayson/promise','request','Setting,\x20%s,\x20%s','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','then','name','send','map','Setting','rawAttributes','fieldName','type','key','keys','query','filters','intersection','attributes','fields','length','model','sort','pick','filter','where','merge','options','includeAll','include','findAll','rows','show','find','update','body','addLogo','file','filename','logo','params','addLogoLogin','server/files/images/logos','preferred','favicon','defaultLogo','defaultPreferred','defaultFavicon','existsSync','root','toLower','join','default','custom','Sequelize','ValidationError','getLogoLogin','getLicense','loginLogo','defaultLoginLogo','upperFirst','default_loginLogo.svg','\x20not\x20found','gdpr','default_preferred.png','download','addFavicon','getFavicon'];(function(_0x4eff6e,_0x3b212e){var _0x27cee7=function(_0x3d8a04){while(--_0x3d8a04){_0x4eff6e['push'](_0x4eff6e['shift']());}};_0x27cee7(++_0x3b212e);}(_0x4ce6,0x15a));var _0x64ce=function(_0x308213,_0x224541){_0x308213=_0x308213-0x0;var _0x2e1619=_0x4ce6[_0x308213];return _0x2e1619;};'use strict';var emlformat=require(_0x64ce('0x0'));var rimraf=require(_0x64ce('0x1'));var zipdir=require(_0x64ce('0x2'));var jsonpatch=require(_0x64ce('0x3'));var rp=require(_0x64ce('0x4'));var moment=require('moment');var BPromise=require(_0x64ce('0x5'));var Mustache=require('mustache');var util=require(_0x64ce('0x6'));var path=require(_0x64ce('0x7'));var sox=require(_0x64ce('0x8'));var csv=require(_0x64ce('0x9'));var ejs=require(_0x64ce('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x64ce('0xb'));var squel=require('squel');var crypto=require(_0x64ce('0xc'));var jsforce=require(_0x64ce('0xd'));var deskjs=require(_0x64ce('0xe'));var toCsv=require(_0x64ce('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x64ce('0xf'));var authService=require(_0x64ce('0x10'));var qs=require('../../components/parsers/qs');var as=require(_0x64ce('0x11'));var hardwareService=require(_0x64ce('0x12'));var logger=require('../../config/logger')(_0x64ce('0x13'));var utils=require(_0x64ce('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0x64ce('0x15'));var db=require(_0x64ce('0x16'))['db'];var jayson=require(_0x64ce('0x17'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x1c4176,_0x14046,_0x3b7a2e,_0x46baf6){return new BPromise(function(_0x1be0f3,_0x3d692b){var _0x490cc3=_0x46baf6||client;return _0x490cc3[_0x64ce('0x18')](_0x1c4176,_0x3b7a2e)['then'](function(_0x3f7aa7){logger['info'](_0x64ce('0x19'),_0x14046,_0x64ce('0x1a'));logger[_0x64ce('0x1b')](_0x64ce('0x1c'),_0x14046,_0x64ce('0x1a'),JSON[_0x64ce('0x1d')](_0x3f7aa7));if(_0x3f7aa7['error']){if(_0x3f7aa7[_0x64ce('0x1e')][_0x64ce('0x1f')]===0x1f4){logger[_0x64ce('0x1e')](_0x64ce('0x19'),_0x14046,_0x3f7aa7[_0x64ce('0x1e')][_0x64ce('0x20')]);return _0x3d692b(_0x3f7aa7[_0x64ce('0x1e')][_0x64ce('0x20')]);}logger[_0x64ce('0x1e')](_0x64ce('0x19'),_0x14046,_0x3f7aa7[_0x64ce('0x1e')]['message']);return _0x1be0f3(_0x3f7aa7['error'][_0x64ce('0x20')]);}else{logger[_0x64ce('0x21')]('Setting,\x20%s,\x20%s',_0x14046,'request\x20sent');_0x1be0f3(_0x3f7aa7[_0x64ce('0x22')]['message']);}})[_0x64ce('0x23')](function(_0x3d801a){logger[_0x64ce('0x1e')](_0x64ce('0x19'),_0x14046,_0x3d801a);_0x3d692b(_0x3d801a);});});}function respondWithStatusCode(_0xf13f0a,_0x1db89f){_0x1db89f=_0x1db89f||0xcc;return function(_0x23e591){if(_0x23e591){return _0xf13f0a[_0x64ce('0x24')](_0x1db89f);}return _0xf13f0a[_0x64ce('0x25')](_0x1db89f)[_0x64ce('0x26')]();};}function respondWithResult(_0x54968a,_0x37e610){_0x37e610=_0x37e610||0xc8;return function(_0x4d626a){if(_0x4d626a){return _0x54968a[_0x64ce('0x25')](_0x37e610)[_0x64ce('0x27')](_0x4d626a);}};}function respondWithFilteredResult(_0x223081,_0x3728a3){return function(_0x51cecb){if(_0x51cecb){var _0x39c6c9=typeof _0x3728a3['offset']===_0x64ce('0x28')&&typeof _0x3728a3[_0x64ce('0x29')]===_0x64ce('0x28');var _0x485a48=_0x51cecb[_0x64ce('0x2a')];var _0x7d3376=_0x39c6c9?0x0:_0x3728a3[_0x64ce('0x2b')];var _0x36d2db=_0x39c6c9?_0x51cecb[_0x64ce('0x2a')]:_0x3728a3[_0x64ce('0x2b')]+_0x3728a3[_0x64ce('0x29')];var _0x1ffbf6;if(_0x36d2db>=_0x485a48){_0x36d2db=_0x485a48;_0x1ffbf6=0xc8;}else{_0x1ffbf6=0xce;}_0x223081[_0x64ce('0x25')](_0x1ffbf6);return _0x223081[_0x64ce('0x2c')](_0x64ce('0x2d'),_0x7d3376+'-'+_0x36d2db+'/'+_0x485a48)[_0x64ce('0x27')](_0x51cecb);}return null;};}function patchUpdates(_0x433897){return function(_0x2a7945){try{jsonpatch[_0x64ce('0x2e')](_0x2a7945,_0x433897,!![]);}catch(_0x427464){return BPromise['reject'](_0x427464);}return _0x2a7945['save']();};}function saveUpdates(_0x2fc362,_0x40f532){return function(_0x429e5c){if(_0x429e5c){return _0x429e5c['update'](_0x2fc362)[_0x64ce('0x2f')](function(_0x2783b2){return _0x2783b2;});}return null;};}function removeEntity(_0x1c1b06,_0x599232){return function(_0x36cd0b){if(_0x36cd0b){return _0x36cd0b['destroy']()[_0x64ce('0x2f')](function(){_0x1c1b06['status'](0xcc)[_0x64ce('0x26')]();});}};}function handleEntityNotFound(_0x3c6ec4,_0x1d3a73){return function(_0x483e82){if(!_0x483e82){_0x3c6ec4[_0x64ce('0x24')](0x194);}return _0x483e82;};}function handleError(_0x16eb18,_0xc54635){_0xc54635=_0xc54635||0x1f4;return function(_0x5bca7f){logger['error'](_0x5bca7f['stack']);if(_0x5bca7f[_0x64ce('0x30')]){delete _0x5bca7f[_0x64ce('0x30')];}_0x16eb18['status'](_0xc54635)[_0x64ce('0x31')](_0x5bca7f);};}exports['index']=function(_0x26e721,_0x468afb){var _0x51b6c3={},_0x376672={},_0x317b54={'count':0x0,'rows':[]};var _0x472767=_[_0x64ce('0x32')](db[_0x64ce('0x33')][_0x64ce('0x34')],function(_0x349a61){return{'name':_0x349a61[_0x64ce('0x35')],'type':_0x349a61[_0x64ce('0x36')][_0x64ce('0x37')]};});_0x376672['model']=_[_0x64ce('0x32')](_0x472767,_0x64ce('0x30'));_0x376672['query']=_[_0x64ce('0x38')](_0x26e721[_0x64ce('0x39')]);_0x376672[_0x64ce('0x3a')]=_[_0x64ce('0x3b')](_0x376672['model'],_0x376672[_0x64ce('0x39')]);_0x51b6c3[_0x64ce('0x3c')]=_[_0x64ce('0x3b')](_0x376672['model'],qs[_0x64ce('0x3d')](_0x26e721[_0x64ce('0x39')][_0x64ce('0x3d')]));_0x51b6c3[_0x64ce('0x3c')]=_0x51b6c3[_0x64ce('0x3c')][_0x64ce('0x3e')]?_0x51b6c3[_0x64ce('0x3c')]:_0x376672[_0x64ce('0x3f')];if(!_0x26e721[_0x64ce('0x39')]['hasOwnProperty']('nolimit')){_0x51b6c3[_0x64ce('0x29')]=qs[_0x64ce('0x29')](_0x26e721['query'][_0x64ce('0x29')]);_0x51b6c3[_0x64ce('0x2b')]=qs[_0x64ce('0x2b')](_0x26e721[_0x64ce('0x39')][_0x64ce('0x2b')]);}_0x51b6c3['order']=qs[_0x64ce('0x40')](_0x26e721['query'][_0x64ce('0x40')]);_0x51b6c3['where']=qs['filters'](_[_0x64ce('0x41')](_0x26e721['query'],_0x376672[_0x64ce('0x3a')]),_0x472767);if(_0x26e721[_0x64ce('0x39')][_0x64ce('0x42')]){_0x51b6c3['where']=_['merge'](_0x51b6c3[_0x64ce('0x43')],{'$or':_[_0x64ce('0x32')](_0x472767,function(_0xbdaf8e){if(_0xbdaf8e[_0x64ce('0x36')]!=='VIRTUAL'){var _0x3a4af8={};_0x3a4af8[_0xbdaf8e[_0x64ce('0x30')]]={'$like':'%'+_0x26e721['query']['filter']+'%'};return _0x3a4af8;}})});}_0x51b6c3=_[_0x64ce('0x44')]({},_0x51b6c3,_0x26e721[_0x64ce('0x45')]);var _0x5ac0cf={'where':_0x51b6c3['where']};return db[_0x64ce('0x33')]['count'](_0x5ac0cf)['then'](function(_0x343e76){_0x317b54['count']=_0x343e76;if(_0x26e721[_0x64ce('0x39')][_0x64ce('0x46')]){_0x51b6c3[_0x64ce('0x47')]=[{'all':!![]}];}return db[_0x64ce('0x33')][_0x64ce('0x48')](_0x51b6c3);})[_0x64ce('0x2f')](function(_0x1af512){_0x317b54[_0x64ce('0x49')]=_0x1af512;return _0x317b54;})['then'](respondWithFilteredResult(_0x468afb,_0x51b6c3))[_0x64ce('0x23')](handleError(_0x468afb,null));};exports[_0x64ce('0x4a')]=function(_0xf5ad6e,_0x28533a){var _0x269baf={'raw':![],'where':{'id':_0xf5ad6e['params']['id']}},_0x3f94e0={};_0x3f94e0[_0x64ce('0x3f')]=_[_0x64ce('0x38')](db[_0x64ce('0x33')][_0x64ce('0x34')]);_0x3f94e0[_0x64ce('0x39')]=_['keys'](_0xf5ad6e[_0x64ce('0x39')]);_0x3f94e0[_0x64ce('0x3a')]=_[_0x64ce('0x3b')](_0x3f94e0['model'],_0x3f94e0['query']);_0x269baf[_0x64ce('0x3c')]=_['intersection'](_0x3f94e0[_0x64ce('0x3f')],qs[_0x64ce('0x3d')](_0xf5ad6e[_0x64ce('0x39')][_0x64ce('0x3d')]));_0x269baf[_0x64ce('0x3c')]=_0x269baf['attributes']['length']?_0x269baf[_0x64ce('0x3c')]:_0x3f94e0[_0x64ce('0x3f')];if(_0xf5ad6e[_0x64ce('0x39')][_0x64ce('0x46')]){_0x269baf[_0x64ce('0x47')]=[{'all':!![]}];}_0x269baf=_[_0x64ce('0x44')]({},_0x269baf,_0xf5ad6e[_0x64ce('0x45')]);return db[_0x64ce('0x33')][_0x64ce('0x4b')](_0x269baf)[_0x64ce('0x2f')](handleEntityNotFound(_0x28533a,null))['then'](respondWithResult(_0x28533a,null))['catch'](handleError(_0x28533a,null));};exports[_0x64ce('0x4c')]=function(_0x2163fa,_0x4a5cc5){if(_0x2163fa['body']['id']){delete _0x2163fa[_0x64ce('0x4d')]['id'];}return db[_0x64ce('0x33')][_0x64ce('0x4b')]({'where':{'id':_0x2163fa['params']['id']}})[_0x64ce('0x2f')](handleEntityNotFound(_0x4a5cc5,null))[_0x64ce('0x2f')](saveUpdates(_0x2163fa[_0x64ce('0x4d')],null))[_0x64ce('0x2f')](respondWithResult(_0x4a5cc5,null))[_0x64ce('0x23')](handleError(_0x4a5cc5,null));};exports[_0x64ce('0x4e')]=function(_0x427e7d,_0x5e9e71,_0x23327e){if(_0x427e7d[_0x64ce('0x4f')]&&_0x427e7d[_0x64ce('0x4f')][_0x64ce('0x50')]){_0x427e7d[_0x64ce('0x4d')][_0x64ce('0x51')]=_0x427e7d[_0x64ce('0x4f')]['filename'];}return db[_0x64ce('0x33')][_0x64ce('0x4b')]({'where':{'id':_0x427e7d[_0x64ce('0x52')]['id']}})['then'](handleEntityNotFound(_0x5e9e71,null))[_0x64ce('0x2f')](saveUpdates(_0x427e7d[_0x64ce('0x4d')],null))[_0x64ce('0x2f')](respondWithResult(_0x5e9e71,null))[_0x64ce('0x23')](handleError(_0x5e9e71,null));};exports[_0x64ce('0x53')]=function(_0x4e8ee3,_0x24574d,_0x80ab89){if(_0x4e8ee3[_0x64ce('0x4f')]&&_0x4e8ee3[_0x64ce('0x4f')]['filename']){_0x4e8ee3[_0x64ce('0x4d')]['loginLogo']=_0x4e8ee3[_0x64ce('0x4f')][_0x64ce('0x50')];}return db['Setting'][_0x64ce('0x4b')]({'where':{'id':_0x4e8ee3[_0x64ce('0x52')]['id']}})[_0x64ce('0x2f')](handleEntityNotFound(_0x24574d,null))[_0x64ce('0x2f')](saveUpdates(_0x4e8ee3[_0x64ce('0x4d')],null))['then'](respondWithResult(_0x24574d,null))[_0x64ce('0x23')](handleError(_0x24574d,null));};var utilLicense=require(_0x64ce('0x15'));exports['getLogo']=function(_0x5a7d58,_0x521d3f,_0x8a268){var _0x351929=_0x64ce('0x54');var _0x55752a={'custom':![]};return utilLicense['getLicense']()['then'](function(_0x21b58f){if(_0x21b58f){_0x55752a=_0x21b58f;}return db[_0x64ce('0x33')][_0x64ce('0x4b')]({'where':{'id':_0x5a7d58[_0x64ce('0x52')]['id']},'attributes':[_0x64ce('0x51'),'loginLogo',_0x64ce('0x55'),_0x64ce('0x56'),_0x64ce('0x57'),'defaultLoginLogo',_0x64ce('0x58'),_0x64ce('0x59')],'raw':!![]});})[_0x64ce('0x2f')](handleEntityNotFound(_0x521d3f,null))['then'](function(_0x380039){if(_0x380039){var _0x4b71b3=_0x380039[_0x64ce('0x51')]&&fs[_0x64ce('0x5a')](path['join'](config[_0x64ce('0x5b')],_0x351929,_[_0x64ce('0x5c')](_0x380039[_0x64ce('0x51')])))?path[_0x64ce('0x5d')](config[_0x64ce('0x5b')],_0x351929,_[_0x64ce('0x5c')](_0x380039[_0x64ce('0x51')])):path[_0x64ce('0x5d')](config[_0x64ce('0x5b')],_0x351929,_[_0x64ce('0x5c')]('default_logo.svg'));var _0x4fd321=_0x64ce('0x5e')+_['upperFirst'](_0x64ce('0x51'));if(_0x380039[_0x4fd321]||!_0x55752a[_0x64ce('0x5f')]){_0x4b71b3=path[_0x64ce('0x5d')](config[_0x64ce('0x5b')],_0x351929,_['toLower']('default_logo.svg'));}if(!fs[_0x64ce('0x5a')](_0x4b71b3)){throw new db[(_0x64ce('0x60'))][(_0x64ce('0x61'))](_['upperFirst'](_0x64ce('0x51'))+'\x20not\x20found');}return _0x521d3f['download'](_0x4b71b3);}})[_0x64ce('0x23')](handleError(_0x521d3f,null));};var utilLicense=require(_0x64ce('0x15'));exports[_0x64ce('0x62')]=function(_0x85b077,_0x19bc77,_0x1b7f3f){var _0x976973=_0x64ce('0x54');var _0x2b70a8={'custom':![]};return utilLicense[_0x64ce('0x63')]()[_0x64ce('0x2f')](function(_0x84ad8b){if(_0x84ad8b){_0x2b70a8=_0x84ad8b;}return db['Setting']['find']({'where':{'id':_0x85b077[_0x64ce('0x52')]['id']},'attributes':[_0x64ce('0x51'),_0x64ce('0x64'),_0x64ce('0x55'),_0x64ce('0x56'),'defaultLogo',_0x64ce('0x65'),_0x64ce('0x58'),'defaultFavicon'],'raw':!![]});})['then'](handleEntityNotFound(_0x19bc77,null))[_0x64ce('0x2f')](function(_0x340fce){if(_0x340fce){var _0x4e40db=_0x340fce[_0x64ce('0x64')]&&fs['existsSync'](path['join'](config['root'],_0x976973,_[_0x64ce('0x5c')](_0x340fce['loginLogo'])))?path[_0x64ce('0x5d')](config['root'],_0x976973,_[_0x64ce('0x5c')](_0x340fce[_0x64ce('0x64')])):path['join'](config['root'],_0x976973,_[_0x64ce('0x5c')]('default_loginLogo.svg'));var _0x24cf9c=_0x64ce('0x5e')+_[_0x64ce('0x66')]('loginLogo');if(_0x340fce[_0x24cf9c]||!_0x2b70a8[_0x64ce('0x5f')]){_0x4e40db=path[_0x64ce('0x5d')](config[_0x64ce('0x5b')],_0x976973,_[_0x64ce('0x5c')](_0x64ce('0x67')));}if(!fs['existsSync'](_0x4e40db)){throw new db[(_0x64ce('0x60'))][(_0x64ce('0x61'))](_['upperFirst'](_0x64ce('0x64'))+_0x64ce('0x68'));}return _0x19bc77['download'](_0x4e40db);}})['catch'](handleError(_0x19bc77,null));};exports[_0x64ce('0x69')]=function(_0xbc3165,_0x131ff6){return db[_0x64ce('0x33')][_0x64ce('0x4b')]({'where':{'id':_0xbc3165['params']['id']},'attributes':['securePassword']})['then'](respondWithResult(_0x131ff6,null))[_0x64ce('0x23')](handleError(_0x131ff6,null));};exports['addPreferred']=function(_0x5a56fc,_0x2f7ccf,_0x9bdc19){if(_0x5a56fc[_0x64ce('0x4f')]&&_0x5a56fc[_0x64ce('0x4f')]['filename']){_0x5a56fc['body']['preferred']=_0x5a56fc[_0x64ce('0x4f')][_0x64ce('0x50')];}return db[_0x64ce('0x33')][_0x64ce('0x4b')]({'where':{'id':_0x5a56fc[_0x64ce('0x52')]['id']}})['then'](handleEntityNotFound(_0x2f7ccf,null))[_0x64ce('0x2f')](saveUpdates(_0x5a56fc[_0x64ce('0x4d')],null))['then'](respondWithResult(_0x2f7ccf,null))[_0x64ce('0x23')](handleError(_0x2f7ccf,null));};var utilLicense=require(_0x64ce('0x15'));exports['getPreferred']=function(_0x1a84ea,_0xda092,_0x51afc4){var _0x1bac87=_0x64ce('0x54');var _0x4da863={'custom':![]};return utilLicense[_0x64ce('0x63')]()['then'](function(_0x13279a){if(_0x13279a){_0x4da863=_0x13279a;}return db[_0x64ce('0x33')][_0x64ce('0x4b')]({'where':{'id':_0x1a84ea['params']['id']},'attributes':[_0x64ce('0x51'),_0x64ce('0x64'),_0x64ce('0x55'),_0x64ce('0x56'),'defaultLogo',_0x64ce('0x65'),_0x64ce('0x58'),_0x64ce('0x59')],'raw':!![]});})['then'](handleEntityNotFound(_0xda092,null))[_0x64ce('0x2f')](function(_0x188bfe){if(_0x188bfe){var _0x4bdc92=_0x188bfe[_0x64ce('0x55')]&&fs['existsSync'](path['join'](config['root'],_0x1bac87,_[_0x64ce('0x5c')](_0x188bfe[_0x64ce('0x55')])))?path[_0x64ce('0x5d')](config[_0x64ce('0x5b')],_0x1bac87,_[_0x64ce('0x5c')](_0x188bfe[_0x64ce('0x55')])):path[_0x64ce('0x5d')](config['root'],_0x1bac87,_[_0x64ce('0x5c')](_0x64ce('0x6a')));var _0x233080='default'+_[_0x64ce('0x66')](_0x64ce('0x55'));if(_0x188bfe[_0x233080]||!_0x4da863[_0x64ce('0x5f')]||!_0x4da863[_0x64ce('0x55')]){_0x4bdc92=path[_0x64ce('0x5d')](config[_0x64ce('0x5b')],_0x1bac87,_[_0x64ce('0x5c')](_0x64ce('0x6a')));}if(!fs[_0x64ce('0x5a')](_0x4bdc92)){throw new db[(_0x64ce('0x60'))][(_0x64ce('0x61'))](_[_0x64ce('0x66')]('preferred')+_0x64ce('0x68'));}return _0xda092[_0x64ce('0x6b')](_0x4bdc92);}})[_0x64ce('0x23')](handleError(_0xda092,null));};exports[_0x64ce('0x6c')]=function(_0x4c31b5,_0x228984,_0x39b5bd){if(_0x4c31b5[_0x64ce('0x4f')]&&_0x4c31b5[_0x64ce('0x4f')][_0x64ce('0x50')]){_0x4c31b5[_0x64ce('0x4d')][_0x64ce('0x56')]=_0x4c31b5['file'][_0x64ce('0x50')];}return db[_0x64ce('0x33')][_0x64ce('0x4b')]({'where':{'id':_0x4c31b5['params']['id']}})[_0x64ce('0x2f')](handleEntityNotFound(_0x228984,null))[_0x64ce('0x2f')](saveUpdates(_0x4c31b5[_0x64ce('0x4d')],null))[_0x64ce('0x2f')](respondWithResult(_0x228984,null))[_0x64ce('0x23')](handleError(_0x228984,null));};var utilLicense=require(_0x64ce('0x15'));exports[_0x64ce('0x6d')]=function(_0x55d8cb,_0x5959f8,_0x35f144){var _0x28039d=_0x64ce('0x54');var _0x1a2823={'custom':![]};return utilLicense[_0x64ce('0x63')]()['then'](function(_0x3c1740){if(_0x3c1740){_0x1a2823=_0x3c1740;}return db['Setting'][_0x64ce('0x4b')]({'where':{'id':_0x55d8cb[_0x64ce('0x52')]['id']},'attributes':[_0x64ce('0x51'),'loginLogo',_0x64ce('0x55'),_0x64ce('0x56'),_0x64ce('0x57'),'defaultLoginLogo',_0x64ce('0x58'),_0x64ce('0x59')],'raw':!![]});})[_0x64ce('0x2f')](handleEntityNotFound(_0x5959f8,null))[_0x64ce('0x2f')](function(_0x2b655f){if(_0x2b655f){var _0x25edce=_0x2b655f['favicon']&&fs['existsSync'](path['join'](config[_0x64ce('0x5b')],_0x28039d,_['toLower'](_0x2b655f[_0x64ce('0x56')])))?path['join'](config[_0x64ce('0x5b')],_0x28039d,_['toLower'](_0x2b655f[_0x64ce('0x56')])):path[_0x64ce('0x5d')](config['root'],_0x28039d,_[_0x64ce('0x5c')]('default_favicon.ico'));var _0x106e3=_0x64ce('0x5e')+_['upperFirst'](_0x64ce('0x56'));if(_0x2b655f[_0x106e3]||!_0x1a2823[_0x64ce('0x5f')]){_0x25edce=path[_0x64ce('0x5d')](config['root'],_0x28039d,_[_0x64ce('0x5c')]('default_favicon.ico'));}if(!fs['existsSync'](_0x25edce)){throw new db[(_0x64ce('0x60'))]['ValidationError'](_['upperFirst'](_0x64ce('0x56'))+_0x64ce('0x68'));}return _0x5959f8[_0x64ce('0x6b')](_0x25edce);}})['catch'](handleError(_0x5959f8,null));};exports[_0x64ce('0x6e')]=function(_0x13e18b,_0x3b01fa){var _0x2c2f79={'offset':moment()[_0x64ce('0x6f')]()};_0x2c2f79[_0x64ce('0x70')]=moment()[_0x64ce('0x6f')](_0x2c2f79[_0x64ce('0x2b')])['format'](_0x64ce('0x71'));return _0x3b01fa[_0x64ce('0x25')](0xc8)[_0x64ce('0x31')](_0x2c2f79);};
\ No newline at end of file
+var _0x5704=['jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','jayson/promise','client','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','Content-Range','apply','reject','update','destroy','name','send','index','map','Setting','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','rows','show','params','rawAttributes','length','find','body','addLogo','file','logo','filename','addLogoLogin','loginLogo','getLogo','server/files/images/logos','getLicense','preferred','favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon','join','toLower','root','default_logo.svg','default','custom','Sequelize','ValidationError','upperFirst','\x20not\x20found','../../config/license/util','getLogoLogin','existsSync','default_loginLogo.svg','gdpr','securePassword','addPreferred','default_preferred.png','addFavicon','default_favicon.ico','download','getDate','utcOffset','now','format','YYYY-MM-DD\x20HH:mm:ss:SSS','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto'];(function(_0x38e5a9,_0x1c7287){var _0x1edac3=function(_0x33dcd6){while(--_0x33dcd6){_0x38e5a9['push'](_0x38e5a9['shift']());}};_0x1edac3(++_0x1c7287);}(_0x5704,0x1e3));var _0x4570=function(_0x40bf1b,_0x1a5cb2){_0x40bf1b=_0x40bf1b-0x0;var _0x29cc2e=_0x5704[_0x40bf1b];return _0x29cc2e;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x4570('0x0'));var jsonpatch=require(_0x4570('0x1'));var rp=require(_0x4570('0x2'));var moment=require(_0x4570('0x3'));var BPromise=require(_0x4570('0x4'));var Mustache=require(_0x4570('0x5'));var util=require(_0x4570('0x6'));var path=require(_0x4570('0x7'));var sox=require(_0x4570('0x8'));var csv=require(_0x4570('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x4570('0xa'));var squel=require(_0x4570('0xb'));var crypto=require(_0x4570('0xc'));var jsforce=require(_0x4570('0xd'));var deskjs=require(_0x4570('0xe'));var toCsv=require(_0x4570('0x9'));var querystring=require(_0x4570('0xf'));var Papa=require(_0x4570('0x10'));var Redis=require(_0x4570('0x11'));var authService=require(_0x4570('0x12'));var qs=require(_0x4570('0x13'));var as=require(_0x4570('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x4570('0x15'))(_0x4570('0x16'));var utils=require('../../config/utils');var config=require(_0x4570('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var jayson=require(_0x4570('0x18'));var client=jayson[_0x4570('0x19')][_0x4570('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x555339,_0xaa31d1,_0x30a11b,_0x256e23){return new BPromise(function(_0x2e2d43,_0x37fafe){var _0x5c54c3=_0x256e23||client;return _0x5c54c3[_0x4570('0x1b')](_0x555339,_0x30a11b)[_0x4570('0x1c')](function(_0x64457c){logger[_0x4570('0x1d')](_0x4570('0x1e'),_0xaa31d1,_0x4570('0x1f'));logger['debug'](_0x4570('0x20'),_0xaa31d1,_0x4570('0x1f'),JSON[_0x4570('0x21')](_0x64457c));if(_0x64457c['error']){if(_0x64457c[_0x4570('0x22')][_0x4570('0x23')]===0x1f4){logger[_0x4570('0x22')](_0x4570('0x1e'),_0xaa31d1,_0x64457c[_0x4570('0x22')][_0x4570('0x24')]);return _0x37fafe(_0x64457c['error'][_0x4570('0x24')]);}logger[_0x4570('0x22')]('Setting,\x20%s,\x20%s',_0xaa31d1,_0x64457c[_0x4570('0x22')]['message']);return _0x2e2d43(_0x64457c[_0x4570('0x22')][_0x4570('0x24')]);}else{logger[_0x4570('0x1d')](_0x4570('0x1e'),_0xaa31d1,_0x4570('0x1f'));_0x2e2d43(_0x64457c[_0x4570('0x25')][_0x4570('0x24')]);}})[_0x4570('0x26')](function(_0x17cfd4){logger['error'](_0x4570('0x1e'),_0xaa31d1,_0x17cfd4);_0x37fafe(_0x17cfd4);});});}function respondWithStatusCode(_0x8406e5,_0x22cb8b){_0x22cb8b=_0x22cb8b||0xcc;return function(_0x11a1b3){if(_0x11a1b3){return _0x8406e5[_0x4570('0x27')](_0x22cb8b);}return _0x8406e5[_0x4570('0x28')](_0x22cb8b)['end']();};}function respondWithResult(_0x4d6ae7,_0x45ad8e){_0x45ad8e=_0x45ad8e||0xc8;return function(_0x5471b6){if(_0x5471b6){return _0x4d6ae7[_0x4570('0x28')](_0x45ad8e)[_0x4570('0x29')](_0x5471b6);}};}function respondWithFilteredResult(_0x2f3f88,_0x3f9dfd){return function(_0x5ca4a1){if(_0x5ca4a1){var _0x13fffd=typeof _0x3f9dfd[_0x4570('0x2a')]===_0x4570('0x2b')&&typeof _0x3f9dfd[_0x4570('0x2c')]===_0x4570('0x2b');var _0x314eb4=_0x5ca4a1['count'];var _0x110763=_0x13fffd?0x0:_0x3f9dfd[_0x4570('0x2a')];var _0x146237=_0x13fffd?_0x5ca4a1[_0x4570('0x2d')]:_0x3f9dfd[_0x4570('0x2a')]+_0x3f9dfd[_0x4570('0x2c')];var _0x1dd54d;if(_0x146237>=_0x314eb4){_0x146237=_0x314eb4;_0x1dd54d=0xc8;}else{_0x1dd54d=0xce;}_0x2f3f88[_0x4570('0x28')](_0x1dd54d);return _0x2f3f88['set'](_0x4570('0x2e'),_0x110763+'-'+_0x146237+'/'+_0x314eb4)[_0x4570('0x29')](_0x5ca4a1);}return null;};}function patchUpdates(_0xc15df5){return function(_0x8369d){try{jsonpatch[_0x4570('0x2f')](_0x8369d,_0xc15df5,!![]);}catch(_0x52efd9){return BPromise[_0x4570('0x30')](_0x52efd9);}return _0x8369d['save']();};}function saveUpdates(_0x199acd,_0x235b06){return function(_0x42c9fe){if(_0x42c9fe){return _0x42c9fe[_0x4570('0x31')](_0x199acd)[_0x4570('0x1c')](function(_0x484738){return _0x484738;});}return null;};}function removeEntity(_0x57f4bb,_0x4acf06){return function(_0x53a2bd){if(_0x53a2bd){return _0x53a2bd[_0x4570('0x32')]()[_0x4570('0x1c')](function(){_0x57f4bb[_0x4570('0x28')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4689c2,_0x39781a){return function(_0x18d027){if(!_0x18d027){_0x4689c2[_0x4570('0x27')](0x194);}return _0x18d027;};}function handleError(_0x4ac9c4,_0x2704ea){_0x2704ea=_0x2704ea||0x1f4;return function(_0x2b64c8){logger['error'](_0x2b64c8['stack']);if(_0x2b64c8[_0x4570('0x33')]){delete _0x2b64c8[_0x4570('0x33')];}_0x4ac9c4[_0x4570('0x28')](_0x2704ea)[_0x4570('0x34')](_0x2b64c8);};}exports[_0x4570('0x35')]=function(_0xe8459d,_0x2c754c){var _0xc1870f={},_0x570ff4={},_0x5e1bee={'count':0x0,'rows':[]};var _0x438f0f=_[_0x4570('0x36')](db[_0x4570('0x37')]['rawAttributes'],function(_0x32f2dc){return{'name':_0x32f2dc['fieldName'],'type':_0x32f2dc[_0x4570('0x38')][_0x4570('0x39')]};});_0x570ff4[_0x4570('0x3a')]=_[_0x4570('0x36')](_0x438f0f,_0x4570('0x33'));_0x570ff4[_0x4570('0x3b')]=_[_0x4570('0x3c')](_0xe8459d[_0x4570('0x3b')]);_0x570ff4[_0x4570('0x3d')]=_[_0x4570('0x3e')](_0x570ff4[_0x4570('0x3a')],_0x570ff4[_0x4570('0x3b')]);_0xc1870f[_0x4570('0x3f')]=_[_0x4570('0x3e')](_0x570ff4[_0x4570('0x3a')],qs[_0x4570('0x40')](_0xe8459d[_0x4570('0x3b')]['fields']));_0xc1870f[_0x4570('0x3f')]=_0xc1870f[_0x4570('0x3f')]['length']?_0xc1870f[_0x4570('0x3f')]:_0x570ff4[_0x4570('0x3a')];if(!_0xe8459d[_0x4570('0x3b')][_0x4570('0x41')](_0x4570('0x42'))){_0xc1870f['limit']=qs[_0x4570('0x2c')](_0xe8459d['query'][_0x4570('0x2c')]);_0xc1870f['offset']=qs[_0x4570('0x2a')](_0xe8459d[_0x4570('0x3b')][_0x4570('0x2a')]);}_0xc1870f[_0x4570('0x43')]=qs[_0x4570('0x44')](_0xe8459d[_0x4570('0x3b')]['sort']);_0xc1870f['where']=qs[_0x4570('0x3d')](_[_0x4570('0x45')](_0xe8459d[_0x4570('0x3b')],_0x570ff4[_0x4570('0x3d')]),_0x438f0f);if(_0xe8459d[_0x4570('0x3b')][_0x4570('0x46')]){_0xc1870f[_0x4570('0x47')]=_[_0x4570('0x48')](_0xc1870f[_0x4570('0x47')],{'$or':_['map'](_0x438f0f,function(_0x363223){if(_0x363223[_0x4570('0x38')]!==_0x4570('0x49')){var _0x2821df={};_0x2821df[_0x363223[_0x4570('0x33')]]={'$like':'%'+_0xe8459d['query']['filter']+'%'};return _0x2821df;}})});}_0xc1870f=_['merge']({},_0xc1870f,_0xe8459d[_0x4570('0x4a')]);var _0x985f40={'where':_0xc1870f[_0x4570('0x47')]};return db[_0x4570('0x37')][_0x4570('0x2d')](_0x985f40)['then'](function(_0xd5304f){_0x5e1bee['count']=_0xd5304f;if(_0xe8459d['query'][_0x4570('0x4b')]){_0xc1870f['include']=[{'all':!![]}];}return db['Setting']['findAll'](_0xc1870f);})['then'](function(_0x22d294){_0x5e1bee[_0x4570('0x4c')]=_0x22d294;return _0x5e1bee;})[_0x4570('0x1c')](respondWithFilteredResult(_0x2c754c,_0xc1870f))[_0x4570('0x26')](handleError(_0x2c754c,null));};exports[_0x4570('0x4d')]=function(_0x13c015,_0x55d2ce){var _0x5823e2={'raw':![],'where':{'id':_0x13c015[_0x4570('0x4e')]['id']}},_0x314ead={};_0x314ead['model']=_[_0x4570('0x3c')](db['Setting'][_0x4570('0x4f')]);_0x314ead['query']=_[_0x4570('0x3c')](_0x13c015['query']);_0x314ead[_0x4570('0x3d')]=_[_0x4570('0x3e')](_0x314ead[_0x4570('0x3a')],_0x314ead[_0x4570('0x3b')]);_0x5823e2[_0x4570('0x3f')]=_[_0x4570('0x3e')](_0x314ead[_0x4570('0x3a')],qs[_0x4570('0x40')](_0x13c015[_0x4570('0x3b')][_0x4570('0x40')]));_0x5823e2[_0x4570('0x3f')]=_0x5823e2[_0x4570('0x3f')][_0x4570('0x50')]?_0x5823e2[_0x4570('0x3f')]:_0x314ead[_0x4570('0x3a')];if(_0x13c015[_0x4570('0x3b')]['includeAll']){_0x5823e2['include']=[{'all':!![]}];}_0x5823e2=_[_0x4570('0x48')]({},_0x5823e2,_0x13c015[_0x4570('0x4a')]);return db[_0x4570('0x37')][_0x4570('0x51')](_0x5823e2)[_0x4570('0x1c')](handleEntityNotFound(_0x55d2ce,null))[_0x4570('0x1c')](respondWithResult(_0x55d2ce,null))[_0x4570('0x26')](handleError(_0x55d2ce,null));};exports[_0x4570('0x31')]=function(_0x336007,_0x15606b){if(_0x336007[_0x4570('0x52')]['id']){delete _0x336007['body']['id'];}return db[_0x4570('0x37')][_0x4570('0x51')]({'where':{'id':_0x336007[_0x4570('0x4e')]['id']}})[_0x4570('0x1c')](handleEntityNotFound(_0x15606b,null))[_0x4570('0x1c')](saveUpdates(_0x336007[_0x4570('0x52')],null))[_0x4570('0x1c')](respondWithResult(_0x15606b,null))[_0x4570('0x26')](handleError(_0x15606b,null));};exports[_0x4570('0x53')]=function(_0x413cd6,_0x2970d0,_0xc178a4){if(_0x413cd6[_0x4570('0x54')]&&_0x413cd6[_0x4570('0x54')]['filename']){_0x413cd6[_0x4570('0x52')][_0x4570('0x55')]=_0x413cd6[_0x4570('0x54')][_0x4570('0x56')];}return db[_0x4570('0x37')][_0x4570('0x51')]({'where':{'id':_0x413cd6[_0x4570('0x4e')]['id']}})[_0x4570('0x1c')](handleEntityNotFound(_0x2970d0,null))[_0x4570('0x1c')](saveUpdates(_0x413cd6['body'],null))[_0x4570('0x1c')](respondWithResult(_0x2970d0,null))['catch'](handleError(_0x2970d0,null));};exports[_0x4570('0x57')]=function(_0x1fe702,_0x22ec0a,_0x151923){if(_0x1fe702[_0x4570('0x54')]&&_0x1fe702[_0x4570('0x54')][_0x4570('0x56')]){_0x1fe702[_0x4570('0x52')][_0x4570('0x58')]=_0x1fe702[_0x4570('0x54')]['filename'];}return db[_0x4570('0x37')][_0x4570('0x51')]({'where':{'id':_0x1fe702[_0x4570('0x4e')]['id']}})[_0x4570('0x1c')](handleEntityNotFound(_0x22ec0a,null))['then'](saveUpdates(_0x1fe702['body'],null))[_0x4570('0x1c')](respondWithResult(_0x22ec0a,null))[_0x4570('0x26')](handleError(_0x22ec0a,null));};var utilLicense=require('../../config/license/util');exports[_0x4570('0x59')]=function(_0x16372a,_0x34ece0,_0x22c6bd){var _0x3e5ec4=_0x4570('0x5a');var _0x1bcb42={'custom':![]};return utilLicense[_0x4570('0x5b')]()[_0x4570('0x1c')](function(_0x1debf2){if(_0x1debf2){_0x1bcb42=_0x1debf2;}return db[_0x4570('0x37')]['find']({'where':{'id':_0x16372a[_0x4570('0x4e')]['id']},'attributes':[_0x4570('0x55'),_0x4570('0x58'),_0x4570('0x5c'),_0x4570('0x5d'),_0x4570('0x5e'),_0x4570('0x5f'),_0x4570('0x60'),_0x4570('0x61')],'raw':!![]});})['then'](handleEntityNotFound(_0x34ece0,null))['then'](function(_0x194b9a){if(_0x194b9a){var _0x2bcdce=_0x194b9a[_0x4570('0x55')]&&fs['existsSync'](path[_0x4570('0x62')](config['root'],_0x3e5ec4,_[_0x4570('0x63')](_0x194b9a[_0x4570('0x55')])))?path[_0x4570('0x62')](config['root'],_0x3e5ec4,_[_0x4570('0x63')](_0x194b9a[_0x4570('0x55')])):path[_0x4570('0x62')](config[_0x4570('0x64')],_0x3e5ec4,_[_0x4570('0x63')](_0x4570('0x65')));var _0x16f80e=_0x4570('0x66')+_['upperFirst'](_0x4570('0x55'));if(_0x194b9a[_0x16f80e]||!_0x1bcb42[_0x4570('0x67')]){_0x2bcdce=path['join'](config['root'],_0x3e5ec4,_[_0x4570('0x63')](_0x4570('0x65')));}if(!fs['existsSync'](_0x2bcdce)){throw new db[(_0x4570('0x68'))][(_0x4570('0x69'))](_[_0x4570('0x6a')](_0x4570('0x55'))+_0x4570('0x6b'));}return _0x34ece0['download'](_0x2bcdce);}})['catch'](handleError(_0x34ece0,null));};var utilLicense=require(_0x4570('0x6c'));exports[_0x4570('0x6d')]=function(_0x2d39e0,_0x174679,_0x305e87){var _0x4445ec=_0x4570('0x5a');var _0x2eda64={'custom':![]};return utilLicense[_0x4570('0x5b')]()[_0x4570('0x1c')](function(_0x40a8f5){if(_0x40a8f5){_0x2eda64=_0x40a8f5;}return db[_0x4570('0x37')]['find']({'where':{'id':_0x2d39e0['params']['id']},'attributes':[_0x4570('0x55'),'loginLogo',_0x4570('0x5c'),'favicon','defaultLogo','defaultLoginLogo',_0x4570('0x60'),'defaultFavicon'],'raw':!![]});})[_0x4570('0x1c')](handleEntityNotFound(_0x174679,null))[_0x4570('0x1c')](function(_0x2ec261){if(_0x2ec261){var _0x2785c7=_0x2ec261[_0x4570('0x58')]&&fs[_0x4570('0x6e')](path[_0x4570('0x62')](config[_0x4570('0x64')],_0x4445ec,_[_0x4570('0x63')](_0x2ec261[_0x4570('0x58')])))?path[_0x4570('0x62')](config[_0x4570('0x64')],_0x4445ec,_[_0x4570('0x63')](_0x2ec261['loginLogo'])):path[_0x4570('0x62')](config['root'],_0x4445ec,_['toLower'](_0x4570('0x6f')));var _0x396bd6='default'+_[_0x4570('0x6a')](_0x4570('0x58'));if(_0x2ec261[_0x396bd6]||!_0x2eda64[_0x4570('0x67')]){_0x2785c7=path['join'](config[_0x4570('0x64')],_0x4445ec,_[_0x4570('0x63')](_0x4570('0x6f')));}if(!fs[_0x4570('0x6e')](_0x2785c7)){throw new db[(_0x4570('0x68'))]['ValidationError'](_[_0x4570('0x6a')](_0x4570('0x58'))+_0x4570('0x6b'));}return _0x174679['download'](_0x2785c7);}})[_0x4570('0x26')](handleError(_0x174679,null));};exports[_0x4570('0x70')]=function(_0x204542,_0x401867){return db[_0x4570('0x37')][_0x4570('0x51')]({'where':{'id':_0x204542[_0x4570('0x4e')]['id']},'attributes':[_0x4570('0x71')]})['then'](respondWithResult(_0x401867,null))[_0x4570('0x26')](handleError(_0x401867,null));};exports[_0x4570('0x72')]=function(_0x1df28b,_0x2a7310,_0x5e0d22){if(_0x1df28b['file']&&_0x1df28b[_0x4570('0x54')]['filename']){_0x1df28b[_0x4570('0x52')][_0x4570('0x5c')]=_0x1df28b['file'][_0x4570('0x56')];}return db[_0x4570('0x37')]['find']({'where':{'id':_0x1df28b[_0x4570('0x4e')]['id']}})['then'](handleEntityNotFound(_0x2a7310,null))[_0x4570('0x1c')](saveUpdates(_0x1df28b[_0x4570('0x52')],null))[_0x4570('0x1c')](respondWithResult(_0x2a7310,null))['catch'](handleError(_0x2a7310,null));};var utilLicense=require(_0x4570('0x6c'));exports['getPreferred']=function(_0x5504af,_0x53e66a,_0x153fa4){var _0x1c492c=_0x4570('0x5a');var _0xae4b13={'custom':![]};return utilLicense[_0x4570('0x5b')]()[_0x4570('0x1c')](function(_0x514765){if(_0x514765){_0xae4b13=_0x514765;}return db[_0x4570('0x37')][_0x4570('0x51')]({'where':{'id':_0x5504af[_0x4570('0x4e')]['id']},'attributes':['logo',_0x4570('0x58'),_0x4570('0x5c'),'favicon','defaultLogo','defaultLoginLogo','defaultPreferred','defaultFavicon'],'raw':!![]});})[_0x4570('0x1c')](handleEntityNotFound(_0x53e66a,null))['then'](function(_0x47967b){if(_0x47967b){var _0x3f0787=_0x47967b[_0x4570('0x5c')]&&fs[_0x4570('0x6e')](path[_0x4570('0x62')](config[_0x4570('0x64')],_0x1c492c,_['toLower'](_0x47967b['preferred'])))?path['join'](config[_0x4570('0x64')],_0x1c492c,_[_0x4570('0x63')](_0x47967b['preferred'])):path[_0x4570('0x62')](config['root'],_0x1c492c,_[_0x4570('0x63')](_0x4570('0x73')));var _0x204909='default'+_['upperFirst'](_0x4570('0x5c'));if(_0x47967b[_0x204909]||!_0xae4b13['custom']||!_0xae4b13['preferred']){_0x3f0787=path['join'](config[_0x4570('0x64')],_0x1c492c,_[_0x4570('0x63')](_0x4570('0x73')));}if(!fs[_0x4570('0x6e')](_0x3f0787)){throw new db['Sequelize'][(_0x4570('0x69'))](_[_0x4570('0x6a')]('preferred')+_0x4570('0x6b'));}return _0x53e66a['download'](_0x3f0787);}})[_0x4570('0x26')](handleError(_0x53e66a,null));};exports[_0x4570('0x74')]=function(_0x301dd1,_0x59e94a,_0x5ebdfc){if(_0x301dd1[_0x4570('0x54')]&&_0x301dd1[_0x4570('0x54')][_0x4570('0x56')]){_0x301dd1[_0x4570('0x52')][_0x4570('0x5d')]=_0x301dd1[_0x4570('0x54')][_0x4570('0x56')];}return db[_0x4570('0x37')][_0x4570('0x51')]({'where':{'id':_0x301dd1[_0x4570('0x4e')]['id']}})[_0x4570('0x1c')](handleEntityNotFound(_0x59e94a,null))['then'](saveUpdates(_0x301dd1['body'],null))['then'](respondWithResult(_0x59e94a,null))['catch'](handleError(_0x59e94a,null));};var utilLicense=require('../../config/license/util');exports['getFavicon']=function(_0x10dc62,_0x5b7f47,_0x348297){var _0x5ebf4d=_0x4570('0x5a');var _0x433059={'custom':![]};return utilLicense[_0x4570('0x5b')]()[_0x4570('0x1c')](function(_0x1abda9){if(_0x1abda9){_0x433059=_0x1abda9;}return db[_0x4570('0x37')][_0x4570('0x51')]({'where':{'id':_0x10dc62[_0x4570('0x4e')]['id']},'attributes':['logo',_0x4570('0x58'),_0x4570('0x5c'),_0x4570('0x5d'),_0x4570('0x5e'),_0x4570('0x5f'),'defaultPreferred',_0x4570('0x61')],'raw':!![]});})[_0x4570('0x1c')](handleEntityNotFound(_0x5b7f47,null))['then'](function(_0x56140d){if(_0x56140d){var _0x380132=_0x56140d['favicon']&&fs['existsSync'](path[_0x4570('0x62')](config[_0x4570('0x64')],_0x5ebf4d,_[_0x4570('0x63')](_0x56140d[_0x4570('0x5d')])))?path['join'](config[_0x4570('0x64')],_0x5ebf4d,_[_0x4570('0x63')](_0x56140d[_0x4570('0x5d')])):path[_0x4570('0x62')](config[_0x4570('0x64')],_0x5ebf4d,_[_0x4570('0x63')](_0x4570('0x75')));var _0x507d0f=_0x4570('0x66')+_[_0x4570('0x6a')]('favicon');if(_0x56140d[_0x507d0f]||!_0x433059[_0x4570('0x67')]){_0x380132=path[_0x4570('0x62')](config[_0x4570('0x64')],_0x5ebf4d,_[_0x4570('0x63')](_0x4570('0x75')));}if(!fs['existsSync'](_0x380132)){throw new db[(_0x4570('0x68'))][(_0x4570('0x69'))](_['upperFirst']('favicon')+_0x4570('0x6b'));}return _0x5b7f47[_0x4570('0x76')](_0x380132);}})[_0x4570('0x26')](handleError(_0x5b7f47,null));};exports[_0x4570('0x77')]=function(_0x40de87,_0x11d931){var _0x241371={'offset':moment()[_0x4570('0x78')]()};_0x241371[_0x4570('0x79')]=moment()[_0x4570('0x78')](_0x241371['offset'])[_0x4570('0x7a')](_0x4570('0x7b'));return _0x11d931['status'](0xc8)[_0x4570('0x34')](_0x241371);};
\ No newline at end of file
index c321a45..35dd2d8 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(_0x484ad6,_0x4efaee){var _0x4950d0=function(_0x11afec){while(--_0x11afec){_0x484ad6['push'](_0x484ad6['shift']());}};_0x4950d0(++_0x4efaee);}(_0x3e74,0x175));var _0x43e7=function(_0xf02ef5,_0x359009){_0xf02ef5=_0xf02ef5-0x0;var _0x40a0e7=_0x3e74[_0xf02ef5];return _0x40a0e7;};'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 _0x008c=['define','settings','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./setting.attributes','exports'];(function(_0x2e2910,_0x3b06e0){var _0x22e05c=function(_0x2a0e31){while(--_0x2a0e31){_0x2e2910['push'](_0x2e2910['shift']());}};_0x22e05c(++_0x3b06e0);}(_0x008c,0x188));var _0xc008=function(_0xb4bed2,_0x1ba3db){_0xb4bed2=_0xb4bed2-0x0;var _0x17a2a5=_0x008c[_0xb4bed2];return _0x17a2a5;};'use strict';var _=require(_0xc008('0x0'));var util=require(_0xc008('0x1'));var logger=require(_0xc008('0x2'))(_0xc008('0x3'));var moment=require(_0xc008('0x4'));var BPromise=require('bluebird');var rp=require(_0xc008('0x5'));var fs=require('fs');var path=require(_0xc008('0x6'));var rimraf=require(_0xc008('0x7'));var config=require(_0xc008('0x8'));var attributes=require(_0xc008('0x9'));module[_0xc008('0xa')]=function(_0x13aa7,_0x39bb5e){return _0x13aa7[_0xc008('0xb')]('Setting',attributes,{'tableName':_0xc008('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 37d849a..e38c895 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeff7=['find','options','raw','where','include','map','model','attributes','lodash','util','moment','bluebird','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','request\x20sent','debug','Setting,\x20%s,\x20%s,\x20%s','stringify','error','code','message','Setting,\x20%s,\x20%s','result','catch','ShowSetting','Setting'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xeff7,0x1cf));var _0x7eff=function(_0x5e0bd1,_0x4398b4){_0x5e0bd1=_0x5e0bd1-0x0;var _0x2de03c=_0xeff7[_0x5e0bd1];return _0x2de03c;};'use strict';var _=require(_0x7eff('0x0'));var util=require(_0x7eff('0x1'));var moment=require(_0x7eff('0x2'));var BPromise=require(_0x7eff('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x7eff('0x4'))['db'];var utils=require(_0x7eff('0x5'));var logger=require(_0x7eff('0x6'))(_0x7eff('0x7'));var config=require(_0x7eff('0x8'));var jayson=require(_0x7eff('0x9'));var client=jayson[_0x7eff('0xa')][_0x7eff('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x3fb6ea,_0x46ad38,_0xabd6af){return new BPromise(function(_0x5ad731,_0x2d1961){return client[_0x7eff('0xc')](_0x3fb6ea,_0xabd6af)[_0x7eff('0xd')](function(_0x53d9bd){logger[_0x7eff('0xe')]('Setting,\x20%s,\x20%s',_0x46ad38,_0x7eff('0xf'));logger[_0x7eff('0x10')](_0x7eff('0x11'),_0x46ad38,'request\x20sent',JSON[_0x7eff('0x12')](_0x53d9bd));if(_0x53d9bd[_0x7eff('0x13')]){if(_0x53d9bd['error'][_0x7eff('0x14')]===0x1f4){logger['error']('Setting,\x20%s,\x20%s',_0x46ad38,_0x53d9bd[_0x7eff('0x13')][_0x7eff('0x15')]);return _0x2d1961(_0x53d9bd[_0x7eff('0x13')][_0x7eff('0x15')]);}logger[_0x7eff('0x13')](_0x7eff('0x16'),_0x46ad38,_0x53d9bd[_0x7eff('0x13')][_0x7eff('0x15')]);return _0x5ad731(_0x53d9bd[_0x7eff('0x13')][_0x7eff('0x15')]);}else{logger[_0x7eff('0xe')](_0x7eff('0x16'),_0x46ad38,_0x7eff('0xf'));_0x5ad731(_0x53d9bd[_0x7eff('0x17')][_0x7eff('0x15')]);}})[_0x7eff('0x18')](function(_0x2a2087){logger[_0x7eff('0x13')](_0x7eff('0x16'),_0x46ad38,_0x2a2087);_0x2d1961(_0x2a2087);});});}exports[_0x7eff('0x19')]=function(_0x5764cd){var _0x1abf12=this;return new Promise(function(_0x2f0f70,_0xa85e9f){return db[_0x7eff('0x1a')][_0x7eff('0x1b')]({'raw':_0x5764cd[_0x7eff('0x1c')]?_0x5764cd[_0x7eff('0x1c')][_0x7eff('0x1d')]===undefined?!![]:![]:!![],'where':_0x5764cd['options']?_0x5764cd[_0x7eff('0x1c')][_0x7eff('0x1e')]||null:null,'attributes':_0x5764cd[_0x7eff('0x1c')]?_0x5764cd[_0x7eff('0x1c')]['attributes']||null:null,'include':_0x5764cd[_0x7eff('0x1c')]?_0x5764cd[_0x7eff('0x1c')][_0x7eff('0x1f')]?_[_0x7eff('0x20')](_0x5764cd['options'][_0x7eff('0x1f')],function(_0x5e5fd6){return{'model':db[_0x5e5fd6[_0x7eff('0x21')]],'as':_0x5e5fd6['as'],'attributes':_0x5e5fd6['attributes'],'include':_0x5e5fd6['include']?_[_0x7eff('0x20')](_0x5e5fd6[_0x7eff('0x1f')],function(_0x23d0ad){return{'model':db[_0x23d0ad[_0x7eff('0x21')]],'as':_0x23d0ad['as'],'attributes':_0x23d0ad[_0x7eff('0x22')],'include':_0x23d0ad[_0x7eff('0x1f')]?_[_0x7eff('0x20')](_0x23d0ad[_0x7eff('0x1f')],function(_0x4aa2d9){return{'model':db[_0x4aa2d9[_0x7eff('0x21')]],'as':_0x4aa2d9['as'],'attributes':_0x4aa2d9[_0x7eff('0x22')]};}):[]};}):[]};}):[]:[]})[_0x7eff('0xd')](function(_0x2ff71a){logger[_0x7eff('0xe')]('ShowSetting',_0x5764cd);logger[_0x7eff('0x10')](_0x7eff('0x19'),_0x5764cd,JSON[_0x7eff('0x12')](_0x2ff71a));_0x2f0f70(_0x2ff71a);})['catch'](function(_0xde96e6){logger['error']('ShowSetting',_0xde96e6[_0x7eff('0x15')],_0x5764cd);_0xa85e9f(_0x1abf12[_0x7eff('0x13')](0x1f4,_0xde96e6[_0x7eff('0x15')]));});});};
\ No newline at end of file
+var _0x607f=['code','message','Setting','options','raw','where','include','map','model','attributes','ShowSetting','debug','stringify','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','Setting,\x20%s,\x20%s','request\x20sent','error'];(function(_0x7ba534,_0x53faf5){var _0x166ef1=function(_0x3aa12c){while(--_0x3aa12c){_0x7ba534['push'](_0x7ba534['shift']());}};_0x166ef1(++_0x53faf5);}(_0x607f,0x125));var _0xf607=function(_0x49fc4c,_0x4f5ce7){_0x49fc4c=_0x49fc4c-0x0;var _0x1c3880=_0x607f[_0x49fc4c];return _0x1c3880;};'use strict';var _=require(_0xf607('0x0'));var util=require('util');var moment=require(_0xf607('0x1'));var BPromise=require(_0xf607('0x2'));var rs=require(_0xf607('0x3'));var fs=require('fs');var Redis=require(_0xf607('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xf607('0x5'));var logger=require(_0xf607('0x6'))(_0xf607('0x7'));var config=require(_0xf607('0x8'));var jayson=require(_0xf607('0x9'));var client=jayson['client'][_0xf607('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2c4562,_0x481a93,_0x5aa49d){return new BPromise(function(_0x134a06,_0x1badaf){return client[_0xf607('0xb')](_0x2c4562,_0x5aa49d)[_0xf607('0xc')](function(_0x30d181){logger[_0xf607('0xd')](_0xf607('0xe'),_0x481a93,_0xf607('0xf'));logger['debug']('Setting,\x20%s,\x20%s,\x20%s',_0x481a93,_0xf607('0xf'),JSON['stringify'](_0x30d181));if(_0x30d181[_0xf607('0x10')]){if(_0x30d181[_0xf607('0x10')][_0xf607('0x11')]===0x1f4){logger[_0xf607('0x10')](_0xf607('0xe'),_0x481a93,_0x30d181[_0xf607('0x10')][_0xf607('0x12')]);return _0x1badaf(_0x30d181[_0xf607('0x10')][_0xf607('0x12')]);}logger[_0xf607('0x10')](_0xf607('0xe'),_0x481a93,_0x30d181[_0xf607('0x10')][_0xf607('0x12')]);return _0x134a06(_0x30d181[_0xf607('0x10')][_0xf607('0x12')]);}else{logger[_0xf607('0xd')](_0xf607('0xe'),_0x481a93,_0xf607('0xf'));_0x134a06(_0x30d181['result'][_0xf607('0x12')]);}})['catch'](function(_0x578d2a){logger[_0xf607('0x10')](_0xf607('0xe'),_0x481a93,_0x578d2a);_0x1badaf(_0x578d2a);});});}exports['ShowSetting']=function(_0x1a2fd2){var _0x1c6745=this;return new Promise(function(_0x5b859b,_0x4542f6){return db[_0xf607('0x13')]['find']({'raw':_0x1a2fd2['options']?_0x1a2fd2[_0xf607('0x14')][_0xf607('0x15')]===undefined?!![]:![]:!![],'where':_0x1a2fd2[_0xf607('0x14')]?_0x1a2fd2[_0xf607('0x14')][_0xf607('0x16')]||null:null,'attributes':_0x1a2fd2[_0xf607('0x14')]?_0x1a2fd2[_0xf607('0x14')]['attributes']||null:null,'include':_0x1a2fd2[_0xf607('0x14')]?_0x1a2fd2[_0xf607('0x14')][_0xf607('0x17')]?_[_0xf607('0x18')](_0x1a2fd2[_0xf607('0x14')][_0xf607('0x17')],function(_0x1bae93){return{'model':db[_0x1bae93[_0xf607('0x19')]],'as':_0x1bae93['as'],'attributes':_0x1bae93[_0xf607('0x1a')],'include':_0x1bae93[_0xf607('0x17')]?_[_0xf607('0x18')](_0x1bae93[_0xf607('0x17')],function(_0x5a9ecb){return{'model':db[_0x5a9ecb[_0xf607('0x19')]],'as':_0x5a9ecb['as'],'attributes':_0x5a9ecb[_0xf607('0x1a')],'include':_0x5a9ecb[_0xf607('0x17')]?_['map'](_0x5a9ecb['include'],function(_0x166c9b){return{'model':db[_0x166c9b[_0xf607('0x19')]],'as':_0x166c9b['as'],'attributes':_0x166c9b[_0xf607('0x1a')]};}):[]};}):[]};}):[]:[]})[_0xf607('0xc')](function(_0x9b6d8c){logger[_0xf607('0xd')](_0xf607('0x1b'),_0x1a2fd2);logger[_0xf607('0x1c')](_0xf607('0x1b'),_0x1a2fd2,JSON[_0xf607('0x1d')](_0x9b6d8c));_0x5b859b(_0x9b6d8c);})[_0xf607('0x1e')](function(_0x1e4776){logger[_0xf607('0x10')](_0xf607('0x1b'),_0x1e4776[_0xf607('0x12')],_0x1a2fd2);_0x4542f6(_0x1c6745[_0xf607('0x10')](0x1f4,_0x1e4776[_0xf607('0x12')]));});});};
\ No newline at end of file
index 1c0a011..7f1026c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['getInteractions','statusGet','/:id/users','getAgents','post','create','addDisposition','/:id/canned_answers','addAnswer','addApplications','/:id/status','status','addAgents','/:id','update','delete','destroy','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsAccount.controller','get','isAuthenticated','index','/describe','describe','show','/:id/dispositions','getDispositions','getAnswers','/:id/applications','getApplications','/:id/interactions'];(function(_0xc1ede1,_0x27c567){var _0x36f293=function(_0x1fe28c){while(--_0x1fe28c){_0xc1ede1['push'](_0xc1ede1['shift']());}};_0x36f293(++_0x27c567);}(_0x9957,0x93));var _0x7995=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x9957[_0x5b644e];return _0x49c6bf;};'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',auth[_0x7995('0xa')](),controller[_0x7995('0xe')]);router[_0x7995('0x9')](_0x7995('0xf'),auth[_0x7995('0xa')](),controller[_0x7995('0x10')]);router[_0x7995('0x9')]('/:id/canned_answers',auth[_0x7995('0xa')](),controller[_0x7995('0x11')]);router['get'](_0x7995('0x12'),auth[_0x7995('0xa')](),controller[_0x7995('0x13')]);router[_0x7995('0x9')](_0x7995('0x14'),auth[_0x7995('0xa')](),controller[_0x7995('0x15')]);router['get']('/:id/status',controller[_0x7995('0x16')]);router[_0x7995('0x9')](_0x7995('0x17'),auth[_0x7995('0xa')](),controller[_0x7995('0x18')]);router[_0x7995('0x19')]('/',auth[_0x7995('0xa')](),controller[_0x7995('0x1a')]);router['post'](_0x7995('0xf'),auth['isAuthenticated'](),controller[_0x7995('0x1b')]);router[_0x7995('0x19')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x1d')]);router[_0x7995('0x19')]('/:id/notify',controller['notify']);router[_0x7995('0x19')]('/:id/applications',auth['isAuthenticated'](),controller[_0x7995('0x1e')]);router[_0x7995('0x19')]('/:id/send',auth[_0x7995('0xa')](),controller['send']);router['post'](_0x7995('0x1f'),controller[_0x7995('0x20')]);router[_0x7995('0x19')](_0x7995('0x17'),auth[_0x7995('0xa')](),controller[_0x7995('0x21')]);router['put'](_0x7995('0x22'),auth[_0x7995('0xa')](),controller[_0x7995('0x23')]);router[_0x7995('0x24')](_0x7995('0x22'),auth[_0x7995('0xa')](),controller[_0x7995('0x25')]);router[_0x7995('0x24')]('/:id/dispositions',auth[_0x7995('0xa')](),controller[_0x7995('0x26')]);router[_0x7995('0x24')](_0x7995('0x1c'),auth[_0x7995('0xa')](),controller[_0x7995('0x27')]);router['delete'](_0x7995('0x17'),auth['isAuthenticated'](),controller[_0x7995('0x28')]);module[_0x7995('0x29')]=router;
\ No newline at end of file
+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(_0x1ac9d7,_0x52f098){var _0x5f4231=function(_0x1b93b9){while(--_0x1b93b9){_0x1ac9d7['push'](_0x1ac9d7['shift']());}};_0x5f4231(++_0x52f098);}(_0x53ec,0x192));var _0xc53e=function(_0x3bab09,_0x217c29){_0x3bab09=_0x3bab09-0x0;var _0x164376=_0x53ec[_0x3bab09];return _0x164376;};'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
index 3366b5e..e32598e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x791a=['sequelize','randomstring','exports','STRING','twilio','skebby','clicksend','bandwidth','csc','infobip','ENUM','BOOLEAN','TEXT','Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition'];(function(_0xa37892,_0x40cf01){var _0x45e007=function(_0x486db0){while(--_0x486db0){_0xa37892['push'](_0xa37892['shift']());}};_0x45e007(++_0x40cf01);}(_0x791a,0x140));var _0xa791=function(_0x10265d,_0x3c6284){_0x10265d=_0x10265d-0x0;var _0x5a7a9c=_0x791a[_0x10265d];return _0x5a7a9c;};'use strict';var Sequelize=require(_0xa791('0x0'));var rs=require(_0xa791('0x1'));module[_0xa791('0x2')]={'name':{'type':Sequelize[_0xa791('0x3')],'unique':'name','allowNull':![]},'key':{'type':Sequelize[_0xa791('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0xa791('0x3')],'allowNull':![]},'token':{'type':Sequelize['STRING'],'defaultValue':function(){return rs['generate']();}},'phone':{'type':Sequelize[_0xa791('0x3')]},'type':{'type':Sequelize['ENUM'](_0xa791('0x4'),_0xa791('0x5'),'connectel',_0xa791('0x6'),'plivo','clickatell',_0xa791('0x7'),_0xa791('0x8'),_0xa791('0x9'),'intelepeer')},'accountSid':{'type':Sequelize['STRING']},'authId':{'type':Sequelize[_0xa791('0x3')]},'authToken':{'type':Sequelize[_0xa791('0x3')]},'smsMethod':{'type':Sequelize[_0xa791('0xa')]('SI','TI','GP')},'username':{'type':Sequelize[_0xa791('0x3')]},'password':{'type':Sequelize['STRING']},'apiKey':{'type':Sequelize[_0xa791('0x3')]},'applicationId':{'type':Sequelize['STRING']},'accountId':{'type':Sequelize[_0xa791('0x3')]},'senderString':{'type':Sequelize[_0xa791('0x3')]},'deliveryReport':{'type':Sequelize[_0xa791('0xb')],'defaultValue':![]},'description':{'type':Sequelize[_0xa791('0x3')]},'notificationTemplate':{'type':Sequelize[_0xa791('0xc')],'defaultValue':function(){return _0xa791('0xd');}},'notificationSound':{'type':Sequelize[_0xa791('0xb')],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0xa791('0xb')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0xa791('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xa791('0xb')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0xa791('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xa791('0xb')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xa791('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize[_0xa791('0x3')]},'mandatoryDispositionPauseId':{'type':Sequelize[_0xa791('0xe')],'comment':_0xa791('0xf')},'mandatoryDisposition':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'comment':_0xa791('0x10'),'set':function(_0xb5b7bd){if(!_0xb5b7bd)this[_0xa791('0x11')](_0xa791('0x12'),null);this[_0xa791('0x11')](_0xa791('0x13'),_0xb5b7bd);}}};
\ No newline at end of file
+var _0xfb01=['intelepeer','BOOLEAN','INTEGER','Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','setDataValue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','generate','twilio','skebby','clicksend','plivo','clickatell','bandwidth','csc','infobip'];(function(_0x22a05e,_0x425b37){var _0x22b96b=function(_0x45d25f){while(--_0x45d25f){_0x22a05e['push'](_0x22a05e['shift']());}};_0x22b96b(++_0x425b37);}(_0xfb01,0xe4));var _0x1fb0=function(_0x382a62,_0x1baa5e){_0x382a62=_0x382a62-0x0;var _0x490a25=_0xfb01[_0x382a62];return _0x490a25;};'use strict';var Sequelize=require(_0x1fb0('0x0'));var rs=require('randomstring');module[_0x1fb0('0x1')]={'name':{'type':Sequelize[_0x1fb0('0x2')],'unique':'name','allowNull':![]},'key':{'type':Sequelize[_0x1fb0('0x2')],'allowNull':![]},'remote':{'type':Sequelize['STRING'],'allowNull':![]},'token':{'type':Sequelize[_0x1fb0('0x2')],'defaultValue':function(){return rs[_0x1fb0('0x3')]();}},'phone':{'type':Sequelize[_0x1fb0('0x2')]},'type':{'type':Sequelize['ENUM'](_0x1fb0('0x4'),_0x1fb0('0x5'),'connectel',_0x1fb0('0x6'),_0x1fb0('0x7'),_0x1fb0('0x8'),_0x1fb0('0x9'),_0x1fb0('0xa'),_0x1fb0('0xb'),_0x1fb0('0xc'))},'accountSid':{'type':Sequelize[_0x1fb0('0x2')]},'authId':{'type':Sequelize[_0x1fb0('0x2')]},'authToken':{'type':Sequelize[_0x1fb0('0x2')]},'smsMethod':{'type':Sequelize['ENUM']('SI','TI','GP')},'username':{'type':Sequelize['STRING']},'password':{'type':Sequelize['STRING']},'apiKey':{'type':Sequelize[_0x1fb0('0x2')]},'applicationId':{'type':Sequelize[_0x1fb0('0x2')]},'accountId':{'type':Sequelize[_0x1fb0('0x2')]},'senderString':{'type':Sequelize[_0x1fb0('0x2')]},'deliveryReport':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x1fb0('0x2')]},'notificationTemplate':{'type':Sequelize['TEXT'],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'notificationShake':{'type':Sequelize[_0x1fb0('0xd')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x1fb0('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x1fb0('0xd')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize[_0x1fb0('0xe')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'baseUrl':{'type':Sequelize['STRING']},'mandatoryDispositionPauseId':{'type':Sequelize[_0x1fb0('0xe')],'comment':_0x1fb0('0xf')},'mandatoryDisposition':{'type':Sequelize[_0x1fb0('0xd')],'defaultValue':![],'comment':_0x1fb0('0x10'),'set':function(_0x7ef9cf){if(!_0x7ef9cf)this[_0x1fb0('0x11')](_0x1fb0('0x12'),null);this[_0x1fb0('0x11')](_0x1fb0('0x13'),_0x7ef9cf);}}};
\ No newline at end of file
index eaa94d3..e31623e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe67e=['rows','params','Pause','length','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','SmsAccounts','describe','addDisposition','Disposition','findOne','removeDispositions','addAnswer','SmsAccountId','CannedAnswer','removeAnswers','ids','notify','SmsApplication','Applications','account','applications','orderBy','priority','asc','ValidationError','no\x20available\x20attributes','difference','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','Body','messageId','MessageSid','skebby','from','sender','text','connectel','clicksend','message_id','plivo','From','Text','results','csc','originatingAddress','segmentedMessage','clickatell','fromNumber','replyMessageId','intelepeer','isNil','Sequelize','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','CmContact','DESC','list','omit','Contacts','defaults','SmsInteraction','spread','interaction','created','push','close','unmanaged','*,*,*,*','SmsMessage','ContactId','AttachmentId','User','UserId','agent','waitForTheAssignedAgent','startRouting','Start','receiveMessage','entity\x20found','stringify','Content-Type','text/xml','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','addApplications','sequelize','transaction','Transaction','ISOLATION_LEVELS','READ_COMMITTED','findAndCountAll','finally','getApplications','getInteractions','Contact','internal','Tags','color','tag','CmList','List','out','Messages','dataValues','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','requestid','statusInt','status_code','infobip','groupName','DELIVERED','bandwidth','redif','error_code','DELIVERED_TO_GATEWAY','RECEIVED_BY_RECIPIENT','message-delivered','statusGet','debug','message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','path','sox','to-csv','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','redis','localhost','client','request','then','request\x20sent','SmsAccount,\x20%s,\x20%s,\x20%s','code','error','SmsAccount,\x20%s,\x20%s','message','info','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','destroy','get','UserProfileResource','stack','name','send','mandatoryDispositionPause','map','SmsAccount','rawAttributes','fieldName','type','key','model','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','query','order','sort','pick','filter','merge','where','VIRTUAL','options','includeAll','include','findAll'];(function(_0x20c183,_0x36d97e){var _0xbaa50c=function(_0xc8cc5e){while(--_0xc8cc5e){_0x20c183['push'](_0x20c183['shift']());}};_0xbaa50c(++_0x36d97e);}(_0xe67e,0x8c));var _0xee67=function(_0x280a59,_0x34aa96){_0x280a59=_0x280a59-0x0;var _0x4830d1=_0xe67e[_0x280a59];return _0x4830d1;};'use strict';var emlformat=require(_0xee67('0x0'));var rimraf=require(_0xee67('0x1'));var zipdir=require(_0xee67('0x2'));var jsonpatch=require(_0xee67('0x3'));var rp=require(_0xee67('0x4'));var moment=require(_0xee67('0x5'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xee67('0x6'));var path=require(_0xee67('0x7'));var sox=require(_0xee67('0x8'));var csv=require(_0xee67('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xee67('0xa'));var _=require('lodash');var squel=require(_0xee67('0xb'));var crypto=require(_0xee67('0xc'));var jsforce=require(_0xee67('0xd'));var deskjs=require(_0xee67('0xe'));var toCsv=require(_0xee67('0x9'));var querystring=require(_0xee67('0xf'));var Papa=require(_0xee67('0x10'));var Redis=require(_0xee67('0x11'));var authService=require(_0xee67('0x12'));var qs=require(_0xee67('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xee67('0x14'))(_0xee67('0x15'));var utils=require('../../config/utils');var config=require(_0xee67('0x16'));var licenseUtil=require(_0xee67('0x17'));var db=require('../../mysqldb')['db'];config['redis']=_['defaults'](config[_0xee67('0x18')],{'host':_0xee67('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require('./smsAccount.socket')['register'](socket);var jayson=require('jayson/promise');var client=jayson[_0xee67('0x1a')]['http']({'port':0x232c});function respondWithRpcPromise(_0x2dae97,_0x207820,_0x452b73,_0x12d91e){return new BPromise(function(_0x4257a8,_0x2f7d63){var _0x2a1378=_0x12d91e||client;return _0x2a1378[_0xee67('0x1b')](_0x2dae97,_0x452b73)[_0xee67('0x1c')](function(_0x2cd6fc){logger['info']('SmsAccount,\x20%s,\x20%s',_0x207820,_0xee67('0x1d'));logger['debug'](_0xee67('0x1e'),_0x207820,_0xee67('0x1d'),JSON['stringify'](_0x2cd6fc));if(_0x2cd6fc['error']){if(_0x2cd6fc['error'][_0xee67('0x1f')]===0x1f4){logger[_0xee67('0x20')](_0xee67('0x21'),_0x207820,_0x2cd6fc[_0xee67('0x20')][_0xee67('0x22')]);return _0x2f7d63(_0x2cd6fc[_0xee67('0x20')][_0xee67('0x22')]);}logger[_0xee67('0x20')](_0xee67('0x21'),_0x207820,_0x2cd6fc['error'][_0xee67('0x22')]);return _0x4257a8(_0x2cd6fc['error'][_0xee67('0x22')]);}else{logger[_0xee67('0x23')](_0xee67('0x21'),_0x207820,'request\x20sent');_0x4257a8(_0x2cd6fc[_0xee67('0x24')][_0xee67('0x22')]);}})[_0xee67('0x25')](function(_0x1a3157){logger['error']('SmsAccount,\x20%s,\x20%s',_0x207820,_0x1a3157);_0x2f7d63(_0x1a3157);});});}function respondWithStatusCode(_0x478901,_0x1ab362){_0x1ab362=_0x1ab362||0xcc;return function(_0x2d6730){if(_0x2d6730){return _0x478901[_0xee67('0x26')](_0x1ab362);}return _0x478901[_0xee67('0x27')](_0x1ab362)['end']();};}function respondWithResult(_0x54f1a5,_0xe3f1f0){_0xe3f1f0=_0xe3f1f0||0xc8;return function(_0x3f4d4e){if(_0x3f4d4e){return _0x54f1a5[_0xee67('0x27')](_0xe3f1f0)[_0xee67('0x28')](_0x3f4d4e);}};}function respondWithFilteredResult(_0x2e786c,_0x482755){return function(_0x36c7b9){if(_0x36c7b9){var _0x32f4d8=typeof _0x482755[_0xee67('0x29')]===_0xee67('0x2a')&&typeof _0x482755[_0xee67('0x2b')]===_0xee67('0x2a');var _0x3c9343=_0x36c7b9[_0xee67('0x2c')];var _0x3c4701=_0x32f4d8?0x0:_0x482755['offset'];var _0x1239e0=_0x32f4d8?_0x36c7b9[_0xee67('0x2c')]:_0x482755[_0xee67('0x29')]+_0x482755[_0xee67('0x2b')];var _0x282ce6;if(_0x1239e0>=_0x3c9343){_0x1239e0=_0x3c9343;_0x282ce6=0xc8;}else{_0x282ce6=0xce;}_0x2e786c[_0xee67('0x27')](_0x282ce6);return _0x2e786c[_0xee67('0x2d')](_0xee67('0x2e'),_0x3c4701+'-'+_0x1239e0+'/'+_0x3c9343)[_0xee67('0x28')](_0x36c7b9);}return null;};}function patchUpdates(_0x124c2e){return function(_0x110dbc){try{jsonpatch[_0xee67('0x2f')](_0x110dbc,_0x124c2e,!![]);}catch(_0x18c8a3){return BPromise[_0xee67('0x30')](_0x18c8a3);}return _0x110dbc[_0xee67('0x31')]();};}function saveUpdates(_0x5da8f8,_0x5679e6){return function(_0x312c9e){if(_0x312c9e){return _0x312c9e[_0xee67('0x32')](_0x5da8f8)[_0xee67('0x1c')](function(_0x1f36a1){return _0x1f36a1;});}return null;};}function removeEntity(_0x2adaaa,_0x463a93){return function(_0x1fc20a){if(_0x1fc20a){return _0x1fc20a[_0xee67('0x33')]()[_0xee67('0x1c')](function(){var _0x3af39e=_0x1fc20a[_0xee67('0x34')]({'plain':!![]});var _0xd58df1='SmsAccounts';return db[_0xee67('0x35')]['destroy']({'where':{'type':_0xd58df1,'resourceId':_0x3af39e['id']}})[_0xee67('0x1c')](function(){return _0x1fc20a;});})[_0xee67('0x1c')](function(){_0x2adaaa[_0xee67('0x27')](0xcc)['end']();});}};}function handleEntityNotFound(_0x45e89f,_0x3d36a1){return function(_0x4bbc25){if(!_0x4bbc25){_0x45e89f[_0xee67('0x26')](0x194);}return _0x4bbc25;};}function handleError(_0x14d61f,_0x43341e){_0x43341e=_0x43341e||0x1f4;return function(_0x1496db){logger[_0xee67('0x20')](_0x1496db[_0xee67('0x36')]);if(_0x1496db[_0xee67('0x37')]){delete _0x1496db[_0xee67('0x37')];}_0x14d61f['status'](_0x43341e)[_0xee67('0x38')](_0x1496db);};}exports['index']=function(_0xe151b3,_0x29e58f){var _0x478622={'include':[{'model':db['Pause'],'as':_0xee67('0x39')}]},_0x391ab2={},_0x16b2ad={'count':0x0,'rows':[]};var _0x5af61f=_[_0xee67('0x3a')](db[_0xee67('0x3b')][_0xee67('0x3c')],function(_0x3e1e23){return{'name':_0x3e1e23[_0xee67('0x3d')],'type':_0x3e1e23[_0xee67('0x3e')][_0xee67('0x3f')]};});_0x391ab2[_0xee67('0x40')]=_[_0xee67('0x3a')](_0x5af61f,_0xee67('0x37'));_0x391ab2['query']=_[_0xee67('0x41')](_0xe151b3['query']);_0x391ab2[_0xee67('0x42')]=_[_0xee67('0x43')](_0x391ab2[_0xee67('0x40')],_0x391ab2['query']);_0x478622[_0xee67('0x44')]=_[_0xee67('0x43')](_0x391ab2[_0xee67('0x40')],qs[_0xee67('0x45')](_0xe151b3['query']['fields']));_0x478622[_0xee67('0x44')]=_0x478622[_0xee67('0x44')]['length']?_0x478622[_0xee67('0x44')]:_0x391ab2[_0xee67('0x40')];if(!_0xe151b3['query'][_0xee67('0x46')](_0xee67('0x47'))){_0x478622[_0xee67('0x2b')]=qs[_0xee67('0x2b')](_0xe151b3[_0xee67('0x48')]['limit']);_0x478622[_0xee67('0x29')]=qs[_0xee67('0x29')](_0xe151b3[_0xee67('0x48')][_0xee67('0x29')]);}_0x478622[_0xee67('0x49')]=qs['sort'](_0xe151b3['query'][_0xee67('0x4a')]);_0x478622['where']=qs['filters'](_[_0xee67('0x4b')](_0xe151b3[_0xee67('0x48')],_0x391ab2[_0xee67('0x42')]),_0x5af61f);if(_0xe151b3[_0xee67('0x48')][_0xee67('0x4c')]){_0x478622['where']=_[_0xee67('0x4d')](_0x478622[_0xee67('0x4e')],{'$or':_[_0xee67('0x3a')](_0x5af61f,function(_0x3d0979){if(_0x3d0979[_0xee67('0x3e')]!==_0xee67('0x4f')){var _0x303c21={};_0x303c21[_0x3d0979['name']]={'$like':'%'+_0xe151b3[_0xee67('0x48')]['filter']+'%'};return _0x303c21;}})});}_0x478622=_[_0xee67('0x4d')]({},_0x478622,_0xe151b3[_0xee67('0x50')]);var _0x587f24={'where':_0x478622[_0xee67('0x4e')]};return db[_0xee67('0x3b')][_0xee67('0x2c')](_0x587f24)[_0xee67('0x1c')](function(_0x5e629e){_0x16b2ad[_0xee67('0x2c')]=_0x5e629e;if(_0xe151b3[_0xee67('0x48')][_0xee67('0x51')]){_0x478622[_0xee67('0x52')]=[{'all':!![]}];}return db['SmsAccount'][_0xee67('0x53')](_0x478622);})[_0xee67('0x1c')](function(_0x1eb5d1){_0x16b2ad[_0xee67('0x54')]=_0x1eb5d1;return _0x16b2ad;})[_0xee67('0x1c')](respondWithFilteredResult(_0x29e58f,_0x478622))['catch'](handleError(_0x29e58f,null));};exports['show']=function(_0x1fc948,_0x5d64c1){var _0x5e787e={'raw':![],'where':{'id':_0x1fc948[_0xee67('0x55')]['id']},'include':[{'model':db[_0xee67('0x56')],'as':_0xee67('0x39')}]},_0x4937c3={};_0x4937c3['model']=_['keys'](db[_0xee67('0x3b')][_0xee67('0x3c')]);_0x4937c3[_0xee67('0x48')]=_['keys'](_0x1fc948['query']);_0x4937c3[_0xee67('0x42')]=_[_0xee67('0x43')](_0x4937c3[_0xee67('0x40')],_0x4937c3['query']);_0x5e787e[_0xee67('0x44')]=_['intersection'](_0x4937c3['model'],qs[_0xee67('0x45')](_0x1fc948[_0xee67('0x48')][_0xee67('0x45')]));_0x5e787e[_0xee67('0x44')]=_0x5e787e[_0xee67('0x44')][_0xee67('0x57')]?_0x5e787e[_0xee67('0x44')]:_0x4937c3[_0xee67('0x40')];if(_0x1fc948[_0xee67('0x48')]['includeAll']){_0x5e787e[_0xee67('0x52')]=[{'all':!![]}];}_0x5e787e=_[_0xee67('0x4d')]({},_0x5e787e,_0x1fc948[_0xee67('0x50')]);return db[_0xee67('0x3b')][_0xee67('0x58')](_0x5e787e)[_0xee67('0x1c')](handleEntityNotFound(_0x5d64c1,null))[_0xee67('0x1c')](respondWithResult(_0x5d64c1,null))['catch'](handleError(_0x5d64c1,null));};exports['create']=function(_0x18269a,_0x37dc8b){return db[_0xee67('0x3b')][_0xee67('0x59')](_0x18269a[_0xee67('0x5a')],{})[_0xee67('0x1c')](function(_0x20c183){var _0x339d16=_0x18269a[_0xee67('0x5b')]['get']({'plain':!![]});if(!_0x339d16)throw new Error(_0xee67('0x5c'));if(_0x339d16['role']===_0xee67('0x5b')){var _0x341ed8=_0x20c183['get']({'plain':!![]});var _0x152d88=_0xee67('0x5d');return db['UserProfileSection'][_0xee67('0x58')]({'where':{'name':_0x152d88,'userProfileId':_0x339d16['userProfileId']},'raw':!![]})[_0xee67('0x1c')](function(_0x2b3f28){if(_0x2b3f28&&_0x2b3f28['autoAssociation']===0x0){return db['UserProfileResource']['create']({'name':_0x341ed8[_0xee67('0x37')],'resourceId':_0x341ed8['id'],'type':_0x2b3f28['name'],'sectionId':_0x2b3f28['id']},{})[_0xee67('0x1c')](function(){return _0x20c183;});}else{return _0x20c183;}})['catch'](function(_0x5731b1){logger[_0xee67('0x20')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5731b1);throw _0x5731b1;});}return _0x20c183;})[_0xee67('0x1c')](respondWithResult(_0x37dc8b,0xc9))[_0xee67('0x25')](handleError(_0x37dc8b,null));};exports['update']=function(_0x24c6ca,_0x5ccc53){if(_0x24c6ca['body']['id']){delete _0x24c6ca[_0xee67('0x5a')]['id'];}return db[_0xee67('0x3b')][_0xee67('0x58')]({'where':{'id':_0x24c6ca[_0xee67('0x55')]['id']},'include':[{'model':db[_0xee67('0x56')],'as':_0xee67('0x39')}]})[_0xee67('0x1c')](handleEntityNotFound(_0x5ccc53,null))['then'](saveUpdates(_0x24c6ca['body'],null))['then'](respondWithResult(_0x5ccc53,null))['catch'](handleError(_0x5ccc53,null));};exports[_0xee67('0x33')]=function(_0x126f34,_0x132057){return db[_0xee67('0x3b')][_0xee67('0x58')]({'where':{'id':_0x126f34['params']['id']}})[_0xee67('0x1c')](handleEntityNotFound(_0x132057,null))['then'](removeEntity(_0x132057,null))[_0xee67('0x25')](handleError(_0x132057,null));};exports[_0xee67('0x5e')]=function(_0x9417cd,_0x1455e9){return db[_0xee67('0x3b')][_0xee67('0x5e')]()[_0xee67('0x1c')](respondWithResult(_0x1455e9,null))[_0xee67('0x25')](handleError(_0x1455e9,null));};exports[_0xee67('0x5f')]=function(_0x4aee43,_0x1aea04,_0x555a43){if(_0x4aee43['body']['id']){delete _0x4aee43[_0xee67('0x5a')]['id'];}return db['SmsAccount']['find']({'where':{'id':_0x4aee43[_0xee67('0x55')]['id']}})['then'](handleEntityNotFound(_0x1aea04,null))[_0xee67('0x1c')](function(_0x1a0ca3){if(_0x1a0ca3){_0x4aee43[_0xee67('0x5a')]['SmsAccountId']=_0x1a0ca3['id'];return db[_0xee67('0x60')][_0xee67('0x59')](_0x4aee43['body']);}})[_0xee67('0x1c')](respondWithResult(_0x1aea04,null))[_0xee67('0x25')](handleError(_0x1aea04,null));};exports['getDispositions']=function(_0x20fc78,_0x59d5e9,_0xfe8e9a){var _0x3f6aaa={'raw':![],'where':{}};var _0x345173={};var _0x48e23f={'count':0x0,'rows':[]};return db['SmsAccount'][_0xee67('0x61')]({'where':{'id':_0x20fc78['params']['id']}})['then'](handleEntityNotFound(_0x59d5e9,null))['then'](function(_0x38f889){if(_0x38f889){_0x345173['model']=_['keys'](db[_0xee67('0x60')]['rawAttributes']);_0x345173[_0xee67('0x48')]=_[_0xee67('0x41')](_0x20fc78[_0xee67('0x48')]);_0x345173['filters']=_[_0xee67('0x43')](_0x345173[_0xee67('0x40')],_0x345173['query']);_0x3f6aaa[_0xee67('0x44')]=_['intersection'](_0x345173[_0xee67('0x40')],qs[_0xee67('0x45')](_0x20fc78[_0xee67('0x48')][_0xee67('0x45')]));_0x3f6aaa[_0xee67('0x44')]=_0x3f6aaa[_0xee67('0x44')][_0xee67('0x57')]?_0x3f6aaa[_0xee67('0x44')]:_0x345173[_0xee67('0x40')];if(!_0x20fc78['query'][_0xee67('0x46')]('nolimit')){_0x3f6aaa[_0xee67('0x2b')]=qs['limit'](_0x20fc78[_0xee67('0x48')][_0xee67('0x2b')]);_0x3f6aaa[_0xee67('0x29')]=qs[_0xee67('0x29')](_0x20fc78[_0xee67('0x48')][_0xee67('0x29')]);}_0x3f6aaa[_0xee67('0x49')]=qs['sort'](_0x20fc78[_0xee67('0x48')][_0xee67('0x4a')]);_0x3f6aaa[_0xee67('0x4e')]=qs[_0xee67('0x42')](_[_0xee67('0x4b')](_0x20fc78['query'],_0x345173[_0xee67('0x42')]));_0x3f6aaa[_0xee67('0x4e')]['SmsAccountId']=_0x38f889['id'];if(_0x20fc78['query']['filter']){_0x3f6aaa['where']=_[_0xee67('0x4d')](_0x3f6aaa['where'],{'$or':_[_0xee67('0x3a')](_0x3f6aaa['attributes'],function(_0x578a56){var _0x34450e={};_0x34450e[_0x578a56]={'$like':'%'+_0x20fc78['query'][_0xee67('0x4c')]+'%'};return _0x34450e;})});}_0x3f6aaa=_[_0xee67('0x4d')]({},_0x3f6aaa,_0x20fc78[_0xee67('0x50')]);return db[_0xee67('0x60')][_0xee67('0x2c')]({'where':_0x3f6aaa[_0xee67('0x4e')]})['then'](function(_0x5d08e4){_0x48e23f['count']=_0x5d08e4;if(_0x20fc78[_0xee67('0x48')][_0xee67('0x51')]){_0x3f6aaa[_0xee67('0x52')]=[{'all':!![]}];}return db['Disposition'][_0xee67('0x53')](_0x3f6aaa);})[_0xee67('0x1c')](function(_0x3a1bc0){_0x48e23f[_0xee67('0x54')]=_0x3a1bc0;return _0x48e23f;});}})[_0xee67('0x1c')](respondWithFilteredResult(_0x59d5e9,_0x3f6aaa))[_0xee67('0x25')](handleError(_0x59d5e9,null));};exports[_0xee67('0x62')]=function(_0x553bb2,_0x230963,_0x5bf3be){return db[_0xee67('0x3b')][_0xee67('0x58')]({'where':{'id':_0x553bb2[_0xee67('0x55')]['id']}})[_0xee67('0x1c')](handleEntityNotFound(_0x230963,null))[_0xee67('0x1c')](function(_0x489798){if(_0x489798){return _0x489798[_0xee67('0x62')](_0x553bb2[_0xee67('0x48')]['ids']);}})[_0xee67('0x1c')](respondWithStatusCode(_0x230963,null))[_0xee67('0x25')](handleError(_0x230963,null));};exports[_0xee67('0x63')]=function(_0x3c50b9,_0x4141f3,_0x152918){if(_0x3c50b9['body']['id']){delete _0x3c50b9['body']['id'];}return db[_0xee67('0x3b')][_0xee67('0x58')]({'where':{'id':_0x3c50b9[_0xee67('0x55')]['id']}})[_0xee67('0x1c')](handleEntityNotFound(_0x4141f3,null))[_0xee67('0x1c')](function(_0x59b019){if(_0x59b019){_0x3c50b9[_0xee67('0x5a')][_0xee67('0x64')]=_0x59b019['id'];return db[_0xee67('0x65')]['create'](_0x3c50b9['body']);}})[_0xee67('0x1c')](respondWithResult(_0x4141f3,null))['catch'](handleError(_0x4141f3,null));};exports['getAnswers']=function(_0x198d85,_0x3ec224,_0x4125c8){var _0x5bd37f={'raw':![],'where':{}};var _0x19df98={};var _0x551a2f={'count':0x0,'rows':[]};return db[_0xee67('0x3b')][_0xee67('0x61')]({'where':{'id':_0x198d85[_0xee67('0x55')]['id']}})[_0xee67('0x1c')](handleEntityNotFound(_0x3ec224,null))[_0xee67('0x1c')](function(_0x25c36f){if(_0x25c36f){_0x19df98[_0xee67('0x40')]=_[_0xee67('0x41')](db['CannedAnswer'][_0xee67('0x3c')]);_0x19df98[_0xee67('0x48')]=_[_0xee67('0x41')](_0x198d85[_0xee67('0x48')]);_0x19df98[_0xee67('0x42')]=_[_0xee67('0x43')](_0x19df98[_0xee67('0x40')],_0x19df98[_0xee67('0x48')]);_0x5bd37f[_0xee67('0x44')]=_[_0xee67('0x43')](_0x19df98[_0xee67('0x40')],qs[_0xee67('0x45')](_0x198d85[_0xee67('0x48')][_0xee67('0x45')]));_0x5bd37f[_0xee67('0x44')]=_0x5bd37f['attributes'][_0xee67('0x57')]?_0x5bd37f[_0xee67('0x44')]:_0x19df98['model'];if(!_0x198d85['query'][_0xee67('0x46')]('nolimit')){_0x5bd37f['limit']=qs[_0xee67('0x2b')](_0x198d85[_0xee67('0x48')][_0xee67('0x2b')]);_0x5bd37f['offset']=qs[_0xee67('0x29')](_0x198d85['query'][_0xee67('0x29')]);}_0x5bd37f['order']=qs[_0xee67('0x4a')](_0x198d85[_0xee67('0x48')]['sort']);_0x5bd37f[_0xee67('0x4e')]=qs[_0xee67('0x42')](_[_0xee67('0x4b')](_0x198d85[_0xee67('0x48')],_0x19df98['filters']));_0x5bd37f['where'][_0xee67('0x64')]=_0x25c36f['id'];if(_0x198d85[_0xee67('0x48')][_0xee67('0x4c')]){_0x5bd37f[_0xee67('0x4e')]=_[_0xee67('0x4d')](_0x5bd37f['where'],{'$or':_[_0xee67('0x3a')](_0x5bd37f[_0xee67('0x44')],function(_0x2f5bc2){var _0x1e30d5={};_0x1e30d5[_0x2f5bc2]={'$like':'%'+_0x198d85[_0xee67('0x48')]['filter']+'%'};return _0x1e30d5;})});}_0x5bd37f=_[_0xee67('0x4d')]({},_0x5bd37f,_0x198d85['options']);return db[_0xee67('0x65')][_0xee67('0x2c')]({'where':_0x5bd37f[_0xee67('0x4e')]})[_0xee67('0x1c')](function(_0x2203a2){_0x551a2f['count']=_0x2203a2;if(_0x198d85['query']['includeAll']){_0x5bd37f[_0xee67('0x52')]=[{'all':!![]}];}return db['CannedAnswer']['findAll'](_0x5bd37f);})[_0xee67('0x1c')](function(_0x351678){_0x551a2f[_0xee67('0x54')]=_0x351678;return _0x551a2f;});}})[_0xee67('0x1c')](respondWithFilteredResult(_0x3ec224,_0x5bd37f))[_0xee67('0x25')](handleError(_0x3ec224,null));};exports[_0xee67('0x66')]=function(_0x36ca25,_0x4a1a33,_0x1ec88d){return db[_0xee67('0x3b')]['find']({'where':{'id':_0x36ca25[_0xee67('0x55')]['id']}})['then'](handleEntityNotFound(_0x4a1a33,null))[_0xee67('0x1c')](function(_0x4ca7f2){if(_0x4ca7f2){return _0x4ca7f2[_0xee67('0x66')](_0x36ca25[_0xee67('0x48')][_0xee67('0x67')]);}})[_0xee67('0x1c')](respondWithStatusCode(_0x4a1a33,null))[_0xee67('0x25')](handleError(_0x4a1a33,null));};exports[_0xee67('0x68')]=function(_0x4c9eac,_0x76b9d8,_0x179af7){var _0x53e6bd={'channel':'sms'};var _0x25bcc6=[];var _0x1d38e3=[];var _0x2812ee={};return db['SmsAccount'][_0xee67('0x58')]({'where':{'id':_0x4c9eac[_0xee67('0x55')]['id']},'include':[{'model':db[_0xee67('0x69')],'as':_0xee67('0x6a')}]})[_0xee67('0x1c')](handleEntityNotFound(_0x76b9d8,null))[_0xee67('0x1c')](function(_0x35b015){_0x53e6bd[_0xee67('0x6b')]=_0x35b015;_0x53e6bd[_0xee67('0x6c')]=_[_0xee67('0x6d')](_0x35b015['Applications'],[_0xee67('0x6e')],[_0xee67('0x6f')]);if(_0x53e6bd[_0xee67('0x6b')][_0xee67('0x6a')]){delete _0x53e6bd[_0xee67('0x6b')][_0xee67('0x6a')];}return db['CmContact'][_0xee67('0x5e')]();})[_0xee67('0x1c')](function(_0x38aab0){if(!_0x38aab0){throw new db['Sequelize'][(_0xee67('0x70'))](_0xee67('0x71'));}_0x25bcc6=_[_0xee67('0x72')](_[_0xee67('0x41')](_0x38aab0),[_0xee67('0x73'),_0xee67('0x74')]);_0x1d38e3=_[_0xee67('0x72')](_['keys'](_0x38aab0),[_0xee67('0x73'),_0xee67('0x74'),_0xee67('0x75'),_0xee67('0x76')]);_0x53e6bd['body']={'mapKey':_0xee67('0x77')};if(_0x53e6bd[_0xee67('0x6b')][_0xee67('0x3e')]){switch(_0x53e6bd[_0xee67('0x6b')][_0xee67('0x3e')]){case _0xee67('0x78'):_0x53e6bd[_0xee67('0x5a')]['from']=_0x4c9eac['body']['From'];_0x53e6bd[_0xee67('0x5a')]['body']=_0x4c9eac[_0xee67('0x5a')][_0xee67('0x79')];_0x53e6bd['body'][_0xee67('0x7a')]=_0x4c9eac[_0xee67('0x5a')][_0xee67('0x7b')];break;case _0xee67('0x7c'):_0x53e6bd[_0xee67('0x5a')][_0xee67('0x7d')]='+'+_0x4c9eac[_0xee67('0x5a')][_0xee67('0x7e')];_0x53e6bd['body'][_0xee67('0x5a')]=_0x4c9eac[_0xee67('0x5a')][_0xee67('0x7f')];break;case _0xee67('0x80'):_0x53e6bd[_0xee67('0x5a')]['from']=_0x4c9eac[_0xee67('0x5a')][_0xee67('0x7d')];_0x53e6bd[_0xee67('0x5a')][_0xee67('0x5a')]=_0x4c9eac[_0xee67('0x5a')][_0xee67('0x22')];break;case _0xee67('0x81'):_0x53e6bd[_0xee67('0x5a')][_0xee67('0x7d')]=_0x4c9eac[_0xee67('0x5a')][_0xee67('0x7d')];_0x53e6bd[_0xee67('0x5a')][_0xee67('0x5a')]=_0x4c9eac[_0xee67('0x5a')][_0xee67('0x5a')];_0x53e6bd[_0xee67('0x5a')]['messageId']=_0x4c9eac['body'][_0xee67('0x82')];break;case _0xee67('0x83'):_0x53e6bd['body'][_0xee67('0x7d')]=_0x4c9eac[_0xee67('0x5a')][_0xee67('0x84')];_0x53e6bd[_0xee67('0x5a')][_0xee67('0x5a')]=_0x4c9eac[_0xee67('0x5a')][_0xee67('0x85')];_0x53e6bd[_0xee67('0x5a')]['messageId']=_0x4c9eac['body']['MessageUUID'];break;case'infobip':_0x53e6bd[_0xee67('0x5a')][_0xee67('0x7d')]='+'+_0x4c9eac[_0xee67('0x5a')]['results'][0x0][_0xee67('0x7d')];_0x53e6bd[_0xee67('0x5a')][_0xee67('0x5a')]=_0x4c9eac[_0xee67('0x5a')]['results'][0x0][_0xee67('0x7f')];_0x53e6bd[_0xee67('0x5a')][_0xee67('0x7a')]=_0x4c9eac['body'][_0xee67('0x86')][0x0]['messageId'];break;case _0xee67('0x87'):_0x53e6bd['body'][_0xee67('0x7d')]=_0x4c9eac[_0xee67('0x5a')][_0xee67('0x88')];_0x53e6bd['body'][_0xee67('0x5a')]=_0x4c9eac['body'][_0xee67('0x89')][_0xee67('0x22')];break;case _0xee67('0x8a'):_0x53e6bd[_0xee67('0x5a')][_0xee67('0x7d')]=_0x4c9eac[_0xee67('0x5a')][_0xee67('0x8b')];_0x53e6bd[_0xee67('0x5a')][_0xee67('0x5a')]=_0x4c9eac['body'][_0xee67('0x7f')];_0x53e6bd[_0xee67('0x5a')][_0xee67('0x7a')]=_0x4c9eac['body'][_0xee67('0x8c')];break;case'bandwidth':_0x53e6bd[_0xee67('0x5a')][_0xee67('0x7a')]=_0x4c9eac[_0xee67('0x5a')][0x0][_0xee67('0x22')]['id'];_0x53e6bd[_0xee67('0x5a')]['from']=_0x4c9eac['body'][0x0][_0xee67('0x22')][_0xee67('0x7d')];_0x53e6bd[_0xee67('0x5a')][_0xee67('0x5a')]=_0x4c9eac[_0xee67('0x5a')][0x0][_0xee67('0x22')][_0xee67('0x7f')];break;case _0xee67('0x8d'):_0x53e6bd[_0xee67('0x5a')]['from']=_0x4c9eac['body'][_0xee67('0x7d')];_0x53e6bd[_0xee67('0x5a')][_0xee67('0x5a')]=_0x4c9eac[_0xee67('0x5a')][_0xee67('0x22')];_0x53e6bd[_0xee67('0x5a')]['messageId']=_0x4c9eac['body']['refid'];break;}}if(_0x53e6bd[_0xee67('0x5a')]['id']){delete _0x53e6bd[_0xee67('0x5a')]['id'];}if(_[_0xee67('0x8e')](_0x53e6bd['body'][_0xee67('0x7d')])){throw new db[(_0xee67('0x8f'))][(_0xee67('0x70'))](_0xee67('0x90'));}if(_[_0xee67('0x8e')](_0x53e6bd[_0xee67('0x5a')][_0xee67('0x5a')])||_0x53e6bd[_0xee67('0x5a')][_0xee67('0x5a')]===''){throw new db[(_0xee67('0x8f'))][(_0xee67('0x70'))](_0xee67('0x91'));}if(_[_0xee67('0x8e')](_0x53e6bd['body'][_0xee67('0x92')])){throw new db[(_0xee67('0x8f'))][(_0xee67('0x70'))](_0xee67('0x93')+_0x1d38e3);}if(!_['includes'](_0x1d38e3,_0x53e6bd[_0xee67('0x5a')][_0xee67('0x92')])){throw new db[(_0xee67('0x8f'))]['ValidationError'](_0xee67('0x94')+_0x1d38e3);}_0x2812ee[_0x53e6bd[_0xee67('0x5a')]['mapKey']]=_0x53e6bd[_0xee67('0x5a')][_0xee67('0x7d')];return db['CmList'][_0xee67('0x58')]({'where':{'id':_0x53e6bd[_0xee67('0x6b')]['ListId']},'include':[{'model':db[_0xee67('0x95')],'as':'Contacts','where':_0x2812ee,'limit':0x1,'order':[[_0xee67('0x74'),_0xee67('0x96')]]}]});})[_0xee67('0x1c')](handleEntityNotFound(_0x76b9d8,null))['then'](function(_0x4564d0){if(_0x4564d0){_0x53e6bd[_0xee67('0x97')]=_[_0xee67('0x98')](_0x4564d0,[_0xee67('0x99')]);if(_0x4564d0[_0xee67('0x99')][_0xee67('0x57')]){return _0x4564d0[_0xee67('0x99')][0x0];}var _0x359784=_[_0xee67('0x9a')](_0x53e6bd[_0xee67('0x5a')],{'firstName':_0x53e6bd[_0xee67('0x5a')]['from'],'ListId':_0x4564d0['id']});_0x359784[_0x53e6bd[_0xee67('0x5a')][_0xee67('0x92')]]=_0x53e6bd[_0xee67('0x5a')][_0xee67('0x7d')];return db['CmContact'][_0xee67('0x59')](_0x359784,{'fields':_0x25bcc6,'raw':!![]});}})[_0xee67('0x1c')](handleEntityNotFound(_0x76b9d8,null))[_0xee67('0x1c')](function(_0x4a4070){if(_0x4a4070){_0x53e6bd['contact']=_0x4a4070;var _0x30dac2={'ContactId':_0x4a4070['id'],'phone':_0x53e6bd[_0xee67('0x5a')]['from'],'SmsAccountId':_0x4c9eac[_0xee67('0x55')]['id']};var _0x7ea798={'ContactId':_0x4a4070['id'],'SmsAccountId':_0x4c9eac['params']['id'],'closed':![]};return db[_0xee67('0x9b')][_0xee67('0x58')]({'where':_0x7ea798})[_0xee67('0x1c')](function(_0x2504c5){if(_0x2504c5){return[_0x2504c5,![]];}return db['SmsInteraction']['create'](_0x30dac2)[_0xee67('0x1c')](function(_0x1960b1){return[_0x1960b1,!![]];});});}})[_0xee67('0x9c')](function(_0x1f5284,_0x2fe3ba){_0x53e6bd[_0xee67('0x9d')]=_0x1f5284['get']({'plain':!![]});_0x53e6bd[_0xee67('0x9d')][_0xee67('0x9e')]=![];if(_0x2fe3ba){if(_0x53e6bd[_0xee67('0x6b')]['autoclose']){_0x53e6bd[_0xee67('0x6c')][_0xee67('0x9f')]({'id':0x0,'priority':_0x53e6bd['applications']['length']+0x1,'app':_0xee67('0xa0'),'appdata':_0xee67('0xa1'),'interval':_0xee67('0xa2')});}_0x53e6bd[_0xee67('0x9d')][_0xee67('0x9e')]=!![];}return db[_0xee67('0xa3')][_0xee67('0x59')]({'phone':_0x53e6bd[_0xee67('0x5a')]['from'],'messageId':_0x53e6bd[_0xee67('0x5a')][_0xee67('0x7a')],'body':_0x53e6bd[_0xee67('0x5a')][_0xee67('0x5a')],'SmsAccountId':_0x4c9eac['params']['id'],'SmsInteractionId':_0x1f5284['id'],'direction':'in','ContactId':_0x1f5284[_0xee67('0xa4')],'AttachmentId':_0x53e6bd['body'][_0xee67('0xa5')]});})[_0xee67('0x1c')](function(_0x87a424){_0x53e6bd[_0xee67('0x22')]=_0x87a424;if(_0x53e6bd[_0xee67('0x9d')]['UserId']){return db[_0xee67('0xa6')][_0xee67('0x58')]({'attributes':['id',_0xee67('0x37')],'where':{'id':_0x53e6bd[_0xee67('0x9d')][_0xee67('0xa7')]}})['then'](function(_0x2700e7){if(_0x2700e7){_0x53e6bd[_0xee67('0x6c')]['unshift']({'id':0x0,'priority':0x0,'app':_0xee67('0xa8'),'appdata':_0x2700e7[_0xee67('0x37')]+','+(_0x53e6bd[_0xee67('0x6b')][_0xee67('0xa9')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise('Start',_0xee67('0xaa'),_0x53e6bd);});}return respondWithRpcPromise(_0xee67('0xab'),'startRouting',_0x53e6bd);})[_0xee67('0x1c')](function(_0x20769a){if(_0x20769a){var _0x16f292=0xc8;var _0x29aa07=_0xee67('0xac');logger['info'](_0xee67('0x1e'),_0x29aa07,_0x16f292,_0xee67('0xad'));logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x29aa07,_0x16f292,_0xee67('0xad'),JSON[_0xee67('0xae')](_0x20769a));if(_0x53e6bd[_0xee67('0x6b')]['type']===_0xee67('0x78')){return _0x76b9d8[_0xee67('0x27')](_0x16f292)[_0xee67('0x2d')](_0xee67('0xaf'),_0xee67('0xb0'))[_0xee67('0x38')](_0xee67('0xb1'));}else{return _0x76b9d8[_0xee67('0x27')](_0x16f292)['json'](_0x20769a);}}})[_0xee67('0x25')](handleError(_0x76b9d8,null));};exports[_0xee67('0xb2')]=function(_0x5048c0,_0x10325e){var _0x305ad2=_0x5048c0[_0xee67('0x55')]['id'];var _0x3630ba=_0x5048c0['body'];var _0x117ceb=0xc8;var _0x531999=null;return db[_0xee67('0xb3')][_0xee67('0xb4')]({'isolationLevel':db[_0xee67('0xb3')][_0xee67('0xb5')][_0xee67('0xb6')][_0xee67('0xb7')]},function(_0x4c0cda){return db[_0xee67('0x3b')][_0xee67('0x61')]({'where':{'id':_0x305ad2},'transaction':_0x4c0cda})[_0xee67('0x1c')](function(_0x4b6506){if(_0x4b6506){return db[_0xee67('0x69')][_0xee67('0x33')]({'where':{'SmsAccountId':_0x305ad2},'transaction':_0x4c0cda})[_0xee67('0x1c')](function(){var _0x3d552f=_[_0xee67('0x3a')](_0x3630ba,function(_0x2fce37){_0x2fce37['SmsAccountId']=_0x305ad2;return _0x2fce37;});return db['SmsApplication']['bulkCreate'](_0x3d552f,{'transaction':_0x4c0cda});});}else{_0x117ceb=0x194;_0x531999=[];}});})['then'](function(){if(_0x117ceb!==0x194){return db[_0xee67('0x69')][_0xee67('0xb8')]({'where':{'SmsAccountId':_0x305ad2},'order':_0xee67('0x6e')})[_0xee67('0x1c')](function(_0xddcc88){_0x531999=_0xddcc88;});}})['catch'](function(_0x31ca0a){_0x117ceb=0x1f4;logger['error'](_0x31ca0a[_0xee67('0x36')]);if(_0x31ca0a['name']){delete _0x31ca0a[_0xee67('0x37')];}_0x531999=_0x31ca0a;})[_0xee67('0xb9')](function(){if(_0x531999===null){_0x10325e[_0xee67('0x26')](_0x117ceb);}else{if(_0x117ceb===0x1f4){_0x10325e[_0xee67('0x27')](_0x117ceb)[_0xee67('0x38')](_0x531999);}else{_0x10325e[_0xee67('0x27')](_0x117ceb)[_0xee67('0x28')](_0x531999);}}});};exports[_0xee67('0xba')]=function(_0x169012,_0x5a8927,_0x3b692e){var _0x160ce7={};var _0x278889={};var _0x323590;var _0x4ed01c;return db[_0xee67('0x3b')]['findOne']({'where':{'id':_0x169012['params']['id']}})['then'](handleEntityNotFound(_0x5a8927,null))['then'](function(_0x1eb55a){if(_0x1eb55a){_0x323590=_0x1eb55a;_0x278889['model']=_[_0xee67('0x41')](db[_0xee67('0x69')][_0xee67('0x3c')]);_0x278889[_0xee67('0x48')]=_[_0xee67('0x41')](_0x169012[_0xee67('0x48')]);_0x278889[_0xee67('0x42')]=_[_0xee67('0x43')](_0x278889['model'],_0x278889[_0xee67('0x48')]);_0x160ce7['attributes']=_[_0xee67('0x43')](_0x278889[_0xee67('0x40')],qs['fields'](_0x169012[_0xee67('0x48')][_0xee67('0x45')]));_0x160ce7[_0xee67('0x44')]=_0x160ce7['attributes']['length']?_0x160ce7[_0xee67('0x44')]:_0x278889[_0xee67('0x40')];_0x160ce7[_0xee67('0x49')]=qs[_0xee67('0x4a')](_0x169012[_0xee67('0x48')]['sort']);_0x160ce7[_0xee67('0x4e')]=qs[_0xee67('0x42')](_[_0xee67('0x4b')](_0x169012[_0xee67('0x48')],_0x278889[_0xee67('0x42')]));if(_0x169012['query']['filter']){_0x160ce7[_0xee67('0x4e')]=_[_0xee67('0x4d')](_0x160ce7['where'],{'$or':_[_0xee67('0x3a')](_0x160ce7['attributes'],function(_0x52412f){var _0x157f11={};_0x157f11[_0x52412f]={'$like':'%'+_0x169012[_0xee67('0x48')]['filter']+'%'};return _0x157f11;})});}_0x160ce7=_[_0xee67('0x4d')]({},_0x160ce7,_0x169012[_0xee67('0x50')]);return _0x323590[_0xee67('0xba')](_0x160ce7);}})[_0xee67('0x1c')](function(_0x376b60){if(_0x376b60){_0x4ed01c=_0x376b60[_0xee67('0x57')];if(!_0x169012[_0xee67('0x48')][_0xee67('0x46')]('nolimit')){_0x160ce7[_0xee67('0x2b')]=qs[_0xee67('0x2b')](_0x169012[_0xee67('0x48')]['limit']);_0x160ce7[_0xee67('0x29')]=qs[_0xee67('0x29')](_0x169012['query'][_0xee67('0x29')]);}return _0x323590[_0xee67('0xba')](_0x160ce7);}})[_0xee67('0x1c')](function(_0xc4f389){if(_0xc4f389){return _0xc4f389?{'count':_0x4ed01c,'rows':_0xc4f389}:null;}})[_0xee67('0x1c')](respondWithResult(_0x5a8927,null))[_0xee67('0x25')](handleError(_0x5a8927,null));};exports[_0xee67('0xbb')]=function(_0x28110e,_0x1ccc5d,_0x502d45){var _0x37122c={'raw':![],'where':{}};var _0x398bf9={};var _0x1fc3fb={'count':0x0,'rows':[]};return db['SmsAccount'][_0xee67('0x61')]({'where':{'id':_0x28110e[_0xee67('0x55')]['id']}})[_0xee67('0x1c')](handleEntityNotFound(_0x1ccc5d,null))[_0xee67('0x1c')](function(_0x2e67d2){if(_0x2e67d2){_0x398bf9[_0xee67('0x40')]=_['keys'](db[_0xee67('0x9b')]['rawAttributes']);_0x398bf9['query']=_['keys'](_0x28110e[_0xee67('0x48')]);_0x398bf9['filters']=_[_0xee67('0x43')](_0x398bf9[_0xee67('0x40')],_0x398bf9[_0xee67('0x48')]);_0x37122c[_0xee67('0x44')]=_[_0xee67('0x43')](_0x398bf9[_0xee67('0x40')],qs[_0xee67('0x45')](_0x28110e[_0xee67('0x48')]['fields']));_0x37122c['attributes']=_0x37122c['attributes'][_0xee67('0x57')]?_0x37122c[_0xee67('0x44')]:_0x398bf9[_0xee67('0x40')];if(!_0x28110e[_0xee67('0x48')][_0xee67('0x46')](_0xee67('0x47'))){_0x37122c[_0xee67('0x2b')]=qs[_0xee67('0x2b')](_0x28110e[_0xee67('0x48')][_0xee67('0x2b')]);_0x37122c['offset']=qs[_0xee67('0x29')](_0x28110e[_0xee67('0x48')][_0xee67('0x29')]);}_0x37122c[_0xee67('0x49')]=qs[_0xee67('0x4a')](_0x28110e[_0xee67('0x48')]['sort']);_0x37122c[_0xee67('0x4e')]=qs[_0xee67('0x42')](_[_0xee67('0x4b')](_0x28110e[_0xee67('0x48')],_0x398bf9[_0xee67('0x42')]));_0x37122c[_0xee67('0x4e')]['SmsAccountId']=_0x2e67d2['id'];if(_0x28110e[_0xee67('0x48')][_0xee67('0x4c')]){_0x37122c[_0xee67('0x4e')]=_['merge'](_0x37122c[_0xee67('0x4e')],{'$or':_[_0xee67('0x3a')](_0x37122c[_0xee67('0x44')],function(_0x4bb559){var _0x5e9008={};_0x5e9008[_0x4bb559]={'$like':'%'+_0x28110e['query']['filter']+'%'};return _0x5e9008;})});}_0x37122c=_['merge']({},_0x37122c,_0x28110e[_0xee67('0x50')]);return db['SmsInteraction'][_0xee67('0x2c')]({'where':_0x37122c[_0xee67('0x4e')]})[_0xee67('0x1c')](function(_0x2f7699){_0x1fc3fb['count']=_0x2f7699;if(_0x28110e[_0xee67('0x48')][_0xee67('0x51')]){_0x37122c[_0xee67('0x52')]=[{'model':db[_0xee67('0x95')],'as':_0xee67('0xbc'),'required':![]},{'model':db[_0xee67('0xa6')],'as':'Owner','attributes':[_0xee67('0x37'),'fullname',_0xee67('0xbd')],'required':![]},{'model':db['Tag'],'as':_0xee67('0xbe'),'attributes':['id',_0xee67('0x37'),_0xee67('0xbf')],'where':_0x28110e[_0xee67('0x48')][_0xee67('0xc0')]?{'id':_0x28110e[_0xee67('0x48')][_0xee67('0xc0')]}:undefined,'required':_0x28110e[_0xee67('0x48')][_0xee67('0xc0')]?!![]:![]}];}return db[_0xee67('0x9b')][_0xee67('0x53')](_0x37122c);})[_0xee67('0x1c')](function(_0x4d6c74){_0x1fc3fb[_0xee67('0x54')]=_0x4d6c74;return _0x1fc3fb;});}})[_0xee67('0x1c')](respondWithFilteredResult(_0x1ccc5d,_0x37122c))[_0xee67('0x25')](handleError(_0x1ccc5d,null));};exports[_0xee67('0x38')]=function(_0x58bab7,_0x5571a7,_0x5b742a){var _0x35fc0c,_0x2a3d81,_0x4d0560;if(_['isNil'](_0x58bab7[_0xee67('0x5a')][_0xee67('0x5a')])||_0x58bab7[_0xee67('0x5a')][_0xee67('0x5a')]===''){throw new db[(_0xee67('0x8f'))]['ValidationError'](_0xee67('0x91'));}if(_[_0xee67('0x8e')](_0x58bab7[_0xee67('0x5a')]['to'])){throw new db['Sequelize']['ValidationError']('to\x20is\x20mandatory');}_0x35fc0c=_0x58bab7[_0xee67('0x5a')]['to'];return db['SmsAccount'][_0xee67('0x58')]({'where':{'id':_0x58bab7[_0xee67('0x55')]['id']},'include':[{'model':db[_0xee67('0xc1')],'as':'List','include':[{'model':db[_0xee67('0x95')],'as':_0xee67('0x99'),'where':{'mobile':_0x35fc0c},'limit':0x1,'order':[[_0xee67('0x74'),_0xee67('0x96')]]}]}]})[_0xee67('0x1c')](handleEntityNotFound(_0x5571a7,null))['then'](function(_0x29ac71){if(_0x29ac71&&_0x29ac71[_0xee67('0xc2')]){_0x2a3d81=_0x29ac71[_0xee67('0x34')]({'plain':!![]});if(_0x2a3d81[_0xee67('0xc2')]&&_0x2a3d81[_0xee67('0xc2')][_0xee67('0x99')][_0xee67('0x57')]){return _0x2a3d81[_0xee67('0xc2')][_0xee67('0x99')][0x0];}return db['CmContact'][_0xee67('0x59')](_['defaults'](_0x58bab7[_0xee67('0x5a')],{'firstName':_0x35fc0c,'mobile':_0x35fc0c,'phone':_0x35fc0c,'ListId':_0x2a3d81[_0xee67('0x76')]}));}})[_0xee67('0x1c')](handleEntityNotFound(_0x5571a7,null))[_0xee67('0x1c')](function(_0x10fa27){if(_0x10fa27){_0x4d0560=_0x10fa27;return db[_0xee67('0x9b')][_0xee67('0x58')]({'where':{'ContactId':_0x4d0560['id'],'closed':![],'SmsAccountId':_0x2a3d81['id']}})[_0xee67('0x1c')](function(_0x2def12){if(_0x2def12){return[_0x2def12,![]];}return db[_0xee67('0x9b')][_0xee67('0x59')]({'UserId':_0x58bab7['user']['id'],'ContactId':_0x4d0560['id'],'SmsAccountId':_0x2a3d81['id'],'phone':_0x35fc0c,'firstMsgDirection':_0xee67('0xc3'),'Messages':[_[_0xee67('0x4d')](_0x58bab7[_0xee67('0x5a')],{'read':![],'body':_0x58bab7['body'][_0xee67('0x5a')],'phone':_0x35fc0c,'SmsAccountId':_0x2a3d81['id'],'UserId':_0x58bab7[_0xee67('0x5b')]['id'],'ContactId':_0x4d0560['id']})]},{'include':[{'model':db[_0xee67('0xa3')],'as':_0xee67('0xc4')}]})[_0xee67('0x1c')](function(_0x3a049a){return[_0x3a049a,!![]];});});}})[_0xee67('0x9c')](function(_0x384093,_0x267271){if(_0x267271){return _0x384093;}return db[_0xee67('0xa3')]['create'](_[_0xee67('0x4d')](_0x58bab7[_0xee67('0x5a')],{'read':![],'body':_0x58bab7['body']['body'],'phone':_0x35fc0c,'SmsAccountId':_0x2a3d81['id'],'SmsInteractionId':_0x384093['id'],'UserId':_0x58bab7[_0xee67('0x5b')]['id'],'ContactId':_0x4d0560['id']}))[_0xee67('0x1c')](function(_0x4a0200){_0x384093[_0xee67('0xc5')][_0xee67('0xc4')]=[];_0x384093[_0xee67('0xc5')][_0xee67('0xc4')][_0xee67('0x9f')](_0x4a0200[_0xee67('0xc5')]);return _0x384093;});})[_0xee67('0x1c')](respondWithResult(_0x5571a7,null))[_0xee67('0x25')](handleError(_0x5571a7,null));};exports[_0xee67('0x27')]=function(_0x20a828,_0x4db71a,_0x27f4d9){if(_0x20a828[_0xee67('0x5a')]['id']){delete _0x20a828[_0xee67('0x5a')]['id'];}var _0x1a7232,_0x138b86,_0x15ecec;return db[_0xee67('0x3b')][_0xee67('0x58')]({'where':{'id':_0x20a828[_0xee67('0x55')]['id']}})['then'](handleEntityNotFound(_0x4db71a,null))[_0xee67('0x1c')](function(_0x154800){if(_0x154800){_0x15ecec=_0x154800;logger['debug'](_0xee67('0x1e'),_0xee67('0x27'),_0xee67('0xc6'),_0x154800[_0xee67('0x3e')],util[_0xee67('0xc7')](_0x20a828['body'],{'showHidden':![],'depth':null}));switch(_0x154800[_0xee67('0x3e')]){case _0xee67('0x7c'):if(_0x20a828[_0xee67('0x5a')][_0xee67('0xc8')]&&_0x20a828[_0xee67('0x5a')][_0xee67('0x27')]){_0x138b86=_0x20a828[_0xee67('0x5a')][_0xee67('0x27')];return db[_0xee67('0xa3')][_0xee67('0x58')]({'where':{'messageId':_0x20a828[_0xee67('0x5a')][_0xee67('0xc8')]}});}break;case'connectel':if(_0x20a828[_0xee67('0x5a')][_0xee67('0xc9')]&&_0x20a828['body'][_0xee67('0xca')]){_0x138b86=_0x20a828[_0xee67('0x5a')][_0xee67('0xca')];return db['SmsMessage'][_0xee67('0x58')]({'where':{'messageId':_0x20a828[_0xee67('0x5a')][_0xee67('0xc9')]}});}break;case _0xee67('0x81'):if(_0x20a828[_0xee67('0x5a')][_0xee67('0x82')]&&_0x20a828['body'][_0xee67('0xcb')]){_0x138b86=_0x20a828['body'][_0xee67('0xcb')];return db[_0xee67('0xa3')][_0xee67('0x58')]({'where':{'messageId':_0x20a828['body'][_0xee67('0x82')]}});}break;case _0xee67('0xcc'):var _0x36b0ec=_0x20a828['body'][_0xee67('0x86')][0x0];if(_0x36b0ec['messageId']&&_0x36b0ec[_0xee67('0x27')][_0xee67('0xcd')]===_0xee67('0xce')){_0x138b86=_0x36b0ec[_0xee67('0x27')][_0xee67('0xcd')];return db[_0xee67('0xa3')][_0xee67('0x58')]({'where':{'messageId':_0x36b0ec[_0xee67('0x7a')]}});}break;case _0xee67('0x8a'):if(_0x20a828['body'][_0xee67('0x7a')]&&_0x20a828[_0xee67('0x5a')][_0xee67('0x27')]){_0x138b86=_0x20a828['body'][_0xee67('0x27')];return db['SmsMessage'][_0xee67('0x58')]({'where':{'messageId':_0x20a828[_0xee67('0x5a')][_0xee67('0x7a')]}});}break;case _0xee67('0xcf'):if(_0x20a828['body'][0x0][_0xee67('0x22')]['id']){_0x138b86=_0x20a828[_0xee67('0x5a')][0x0][_0xee67('0x3e')];return db['SmsMessage']['find']({'where':{'messageId':_0x20a828['body'][0x0]['message']['id']}});}break;case'intelepeer':if(_0x20a828[_0xee67('0x5a')]['redif']&&_0x20a828['body'][_0xee67('0x27')]){_0x138b86=_0x20a828[_0xee67('0x5a')][_0xee67('0x27')];return db[_0xee67('0xa3')][_0xee67('0x58')]({'where':{'messageId':_0x20a828[_0xee67('0x5a')][_0xee67('0xd0')]}});}break;}}})[_0xee67('0x1c')](handleEntityNotFound(_0x4db71a,null))[_0xee67('0x1c')](function(_0x25000c){if(_0x25000c){_0x1a7232=_0x25000c;switch(_0x15ecec['type']){case _0xee67('0x7c'):if(_0x138b86===_0xee67('0xce')){return _0x1a7232[_0xee67('0x32')]({'read':!![]});}else{logger[_0xee67('0x20')](_0xee67('0x1e'),_0xee67('0x27'),_0xee67('0x7c'),util['inspect'](_0x20a828[_0xee67('0x5a')],{'showHidden':![],'depth':null}));}break;case _0xee67('0x80'):if(_0x138b86==='1'){return _0x1a7232[_0xee67('0x32')]({'read':!![]});}else{logger[_0xee67('0x20')](_0xee67('0x1e'),_0xee67('0x27'),'skebby',util[_0xee67('0xc7')](_0x20a828['body'],{'showHidden':![],'depth':null}));}break;case _0xee67('0x81'):if(!_0x20a828['body'][_0xee67('0xd1')]&&_0x138b86>=0xc8&&_0x138b86<=0xce){return _0x1a7232[_0xee67('0x32')]({'read':!![]});}else{logger[_0xee67('0x20')](_0xee67('0x1e'),_0xee67('0x27'),_0xee67('0x81'),util[_0xee67('0xc7')](_0x20a828[_0xee67('0x5a')],{'showHidden':![],'depth':null}));}break;case _0xee67('0xcc'):var _0x12776f=_0x20a828[_0xee67('0x5a')][_0xee67('0x86')][0x0];if(_0x12776f[_0xee67('0x27')][_0xee67('0xcd')]==='DELIVERED'){return _0x1a7232[_0xee67('0x32')]({'read':!![]});}else{logger[_0xee67('0x20')](_0xee67('0x1e'),_0xee67('0x27'),'infobip',util[_0xee67('0xc7')](_0x20a828[_0xee67('0x5a')],{'showHidden':![],'depth':null}));}break;case'clickatell':if(_0x138b86==_0xee67('0xd2')||_0x138b86==_0xee67('0xd3')){return _0x1a7232[_0xee67('0x32')]({'read':!![]});}else{logger[_0xee67('0x20')](_0xee67('0x1e'),_0xee67('0x27'),'clickatell',util[_0xee67('0xc7')](_0x20a828['body'],{'showHidden':![],'depth':null}));}break;case'bandwidth':if(_0x138b86==_0xee67('0xd4')){return _0x1a7232[_0xee67('0x32')]({'read':!![]});}else{logger[_0xee67('0x20')](_0xee67('0x1e'),_0xee67('0x27'),'bandwidth',util[_0xee67('0xc7')](_0x20a828[_0xee67('0x5a')],{'showHidden':![],'depth':null}));}break;case _0xee67('0x8d'):if(_0x138b86==='DELIVRD'||_0x138b86==='ACCEPTD'){return _0x1a7232['update']({'read':!![]});}else{logger[_0xee67('0x20')](_0xee67('0x1e'),'status',_0xee67('0x8d'),util[_0xee67('0xc7')](_0x20a828['body'],{'showHidden':![],'depth':null}));}break;}return _0x1a7232;}})[_0xee67('0x1c')](respondWithResult(_0x4db71a,null))[_0xee67('0x25')](handleError(_0x4db71a,null));};exports[_0xee67('0xd5')]=function(_0x37251c,_0x132d9c,_0x4b87a3){var _0x2cca0a,_0x24152f,_0x1958eb;return db['SmsAccount'][_0xee67('0x58')]({'where':{'id':_0x37251c[_0xee67('0x55')]['id']}})[_0xee67('0x1c')](handleEntityNotFound(_0x132d9c,null))[_0xee67('0x1c')](function(_0x258b45){if(_0x258b45){_0x1958eb=_0x258b45;logger[_0xee67('0xd6')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0xee67('0x27'),_0xee67('0xc6'),_0x258b45['type'],util['inspect'](_0x37251c[_0xee67('0x48')],{'showHidden':![],'depth':null}));switch(_0x258b45['type']){case _0xee67('0x87'):if(_0x37251c[_0xee67('0x48')][_0xee67('0xd7')]&&_0x37251c[_0xee67('0x48')][_0xee67('0xd8')]){_0x24152f=_0x37251c[_0xee67('0x48')][_0xee67('0xd8')];return db[_0xee67('0xa3')][_0xee67('0x58')]({'where':{'messageId':_0x37251c['query'][_0xee67('0xd7')]}});}break;}}})[_0xee67('0x1c')](handleEntityNotFound(_0x132d9c,null))[_0xee67('0x1c')](function(_0x9538fa){if(_0x9538fa){_0x2cca0a=_0x9538fa;switch(_0x1958eb['type']){case _0xee67('0x87'):if(_0x24152f==='2'||_0x24152f==='6'){return _0x2cca0a[_0xee67('0x32')]({'read':!![]});}else{logger[_0xee67('0x20')](_0xee67('0x1e'),_0xee67('0x27'),_0xee67('0x87'),util[_0xee67('0xc7')](_0x37251c['query'],{'showHidden':![],'depth':null}));};break;}return _0x2cca0a;}})['then'](respondWithResult(_0x132d9c,null))[_0xee67('0x25')](handleError(_0x132d9c,null));};exports['addAgents']=function(_0x2fb5aa,_0x59c848,_0x248e06){return db[_0xee67('0x3b')][_0xee67('0x58')]({'where':{'id':_0x2fb5aa['params']['id']}})['then'](handleEntityNotFound(_0x59c848,null))[_0xee67('0x1c')](function(_0xe704e1){if(_0xe704e1){return _0xe704e1[_0xee67('0xd9')](_0x2fb5aa[_0xee67('0x5a')][_0xee67('0x67')],_[_0xee67('0x98')](_0x2fb5aa[_0xee67('0x5a')],[_0xee67('0x67'),'id'])||{})['spread'](function(_0x16f551){for(var _0xcc9002=0x0;_0xcc9002<_0x2fb5aa[_0xee67('0x5a')][_0xee67('0x67')]['length'];_0xcc9002+=0x1){socket[_0xee67('0xda')](_0xee67('0xdb'),{'UserId':Number(_0x2fb5aa[_0xee67('0x5a')]['ids'][_0xcc9002]),'SmsAccountId':Number(_0x2fb5aa[_0xee67('0x55')]['id'])});}return _0x16f551;});}})[_0xee67('0x1c')](respondWithResult(_0x59c848,null))[_0xee67('0x25')](handleError(_0x59c848,null));};exports[_0xee67('0xdc')]=function(_0x162e7a,_0x39063d,_0x2a75ba){return db[_0xee67('0x3b')]['find']({'where':{'id':_0x162e7a[_0xee67('0x55')]['id']}})[_0xee67('0x1c')](handleEntityNotFound(_0x39063d,null))[_0xee67('0x1c')](function(_0xaec21d){if(_0xaec21d){return _0xaec21d[_0xee67('0xdc')](_0x162e7a[_0xee67('0x48')][_0xee67('0x67')])[_0xee67('0x1c')](function(){if(_[_0xee67('0xdd')](_0x162e7a['query'][_0xee67('0x67')])){for(var _0x45345b=0x0;_0x45345b<_0x162e7a['query']['ids'][_0xee67('0x57')];_0x45345b+=0x1){socket['emit'](_0xee67('0xde'),{'UserId':Number(_0x162e7a[_0xee67('0x48')][_0xee67('0x67')][_0x45345b]),'SmsAccountId':Number(_0x162e7a[_0xee67('0x55')]['id'])});}}else{socket[_0xee67('0xda')]('userSmsAccount:remove',{'UserId':Number(_0x162e7a[_0xee67('0x48')]['ids']),'SmsAccountId':Number(_0x162e7a[_0xee67('0x55')]['id'])});}});}})[_0xee67('0x1c')](respondWithStatusCode(_0x39063d,null))['catch'](handleError(_0x39063d,null));};exports['getAgents']=function(_0xf6e764,_0x103876,_0x17f0a2){var _0x526d62={};var _0x893775={};var _0x3d1b04;var _0x299d2a;return db[_0xee67('0x3b')][_0xee67('0x61')]({'where':{'id':_0xf6e764[_0xee67('0x55')]['id']}})[_0xee67('0x1c')](handleEntityNotFound(_0x103876,null))[_0xee67('0x1c')](function(_0x40b38d){if(_0x40b38d){_0x3d1b04=_0x40b38d;_0x893775[_0xee67('0x40')]=_[_0xee67('0x41')](db[_0xee67('0xa6')][_0xee67('0x3c')]);_0x893775[_0xee67('0x48')]=_[_0xee67('0x41')](_0xf6e764['query']);_0x893775[_0xee67('0x42')]=_[_0xee67('0x43')](_0x893775[_0xee67('0x40')],_0x893775['query']);_0x526d62[_0xee67('0x44')]=_[_0xee67('0x43')](_0x893775[_0xee67('0x40')],qs[_0xee67('0x45')](_0xf6e764[_0xee67('0x48')]['fields']));_0x526d62['attributes']=_0x526d62['attributes']['length']?_0x526d62['attributes']:_0x893775[_0xee67('0x40')];_0x526d62[_0xee67('0x49')]=qs[_0xee67('0x4a')](_0xf6e764[_0xee67('0x48')][_0xee67('0x4a')]);_0x526d62[_0xee67('0x4e')]=qs[_0xee67('0x42')](_[_0xee67('0x4b')](_0xf6e764[_0xee67('0x48')],_0x893775[_0xee67('0x42')]));if(_0xf6e764[_0xee67('0x48')]['filter']){_0x526d62[_0xee67('0x4e')]=_['merge'](_0x526d62[_0xee67('0x4e')],{'$or':_[_0xee67('0x3a')](_0x526d62['attributes'],function(_0x93e48a){var _0x3d845a={};_0x3d845a[_0x93e48a]={'$like':'%'+_0xf6e764[_0xee67('0x48')][_0xee67('0x4c')]+'%'};return _0x3d845a;})});}_0x526d62=_['merge']({},_0x526d62,_0xf6e764[_0xee67('0x50')]);return _0x3d1b04[_0xee67('0xdf')](_0x526d62);}})[_0xee67('0x1c')](function(_0x20b2ef){if(_0x20b2ef){_0x299d2a=_0x20b2ef[_0xee67('0x57')];if(!_0xf6e764[_0xee67('0x48')]['hasOwnProperty']('nolimit')){_0x526d62[_0xee67('0x2b')]=qs[_0xee67('0x2b')](_0xf6e764[_0xee67('0x48')]['limit']);_0x526d62[_0xee67('0x29')]=qs[_0xee67('0x29')](_0xf6e764[_0xee67('0x48')][_0xee67('0x29')]);}return _0x3d1b04[_0xee67('0xdf')](_0x526d62);}})[_0xee67('0x1c')](function(_0x54cf70){if(_0x54cf70){return _0x54cf70?{'count':_0x299d2a,'rows':_0x54cf70}:null;}})[_0xee67('0x1c')](respondWithResult(_0x103876,null))['catch'](handleError(_0x103876,null));};
\ No newline at end of file
+var _0x07a6=['request-promise','moment','mustache','util','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/environment','../../config/license/util','redis','defaults','localhost','socket.io-emitter','register','jayson/promise','client','http','request','then','info','SmsAccount,\x20%s,\x20%s','request\x20sent','error','message','result','status','end','json','offset','limit','undefined','count','Content-Range','apply','save','update','destroy','UserProfileResource','sendStatus','stack','name','index','Pause','mandatoryDispositionPause','map','SmsAccount','fieldName','type','key','model','query','keys','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','merge','VIRTUAL','options','include','findAll','rows','catch','params','includeAll','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','addDisposition','SmsAccountId','getDispositions','findOne','Disposition','rawAttributes','removeDispositions','ids','addAnswer','CannedAnswer','getAnswers','removeAnswers','notify','SmsApplication','Applications','orderBy','priority','asc','account','difference','createdAt','updatedAt','CompanyId','ListId','twilio','messageId','MessageSid','skebby','sender','text','from','clicksend','message_id','plivo','From','Text','MessageUUID','results','csc','originatingAddress','segmentedMessage','fromNumber','replyMessageId','bandwidth','intelepeer','refid','isNil','Sequelize','ValidationError','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','includes','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','Contacts','DESC','list','omit','CmContact','contact','SmsInteraction','spread','interaction','created','autoclose','applications','push','close','unmanaged','*,*,*,*','SmsMessage','UserId','User','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','SmsAccount,\x20%s,\x20%s,\x20%s','entity\x20found','debug','stringify','set','Content-Type','text/xml','send','addApplications','sequelize','Transaction','bulkCreate','finally','getApplications','getInteractions','fullname','internal','color','tag','to\x20is\x20mandatory','List','out','Messages','dataValues','received\x20delivery\x20report\x20from','inspect','skebby_dispatch_id','requestid','statusInt','status_code','groupName','DELIVERED','clickatell','redif','error_code','infobip','DELIVERED_TO_GATEWAY','message-delivered','DELIVRD','statusGet','message-id','state','addAgents','emit','userSmsAccount:save','removeAgents','isArray','userSmsAccount:remove','getAgents','rimraf','zip-dir','fast-json-patch'];(function(_0x55015a,_0x4bda6f){var _0x1082c2=function(_0x2f622e){while(--_0x2f622e){_0x55015a['push'](_0x55015a['shift']());}};_0x1082c2(++_0x4bda6f);}(_0x07a6,0xde));var _0x607a=function(_0x5d9db,_0x3a929f){_0x5d9db=_0x5d9db-0x0;var _0x396aea=_0x07a6[_0x5d9db];return _0x396aea;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x607a('0x0'));var zipdir=require(_0x607a('0x1'));var jsonpatch=require(_0x607a('0x2'));var rp=require(_0x607a('0x3'));var moment=require(_0x607a('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x607a('0x5'));var util=require(_0x607a('0x6'));var path=require('path');var sox=require(_0x607a('0x7'));var csv=require(_0x607a('0x8'));var ejs=require(_0x607a('0x9'));var fs=require('fs');var fs_extra=require(_0x607a('0xa'));var _=require(_0x607a('0xb'));var squel=require(_0x607a('0xc'));var crypto=require(_0x607a('0xd'));var jsforce=require(_0x607a('0xe'));var deskjs=require(_0x607a('0xf'));var toCsv=require(_0x607a('0x8'));var querystring=require(_0x607a('0x10'));var Papa=require('papaparse');var Redis=require(_0x607a('0x11'));var authService=require(_0x607a('0x12'));var qs=require(_0x607a('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x607a('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x607a('0x15'));var licenseUtil=require(_0x607a('0x16'));var db=require('../../mysqldb')['db'];config[_0x607a('0x17')]=_[_0x607a('0x18')](config['redis'],{'host':_0x607a('0x19'),'port':0x18eb});var socket=require(_0x607a('0x1a'))(new Redis(config[_0x607a('0x17')]));require('./smsAccount.socket')[_0x607a('0x1b')](socket);var jayson=require(_0x607a('0x1c'));var client=jayson[_0x607a('0x1d')][_0x607a('0x1e')]({'port':0x232c});function respondWithRpcPromise(_0xd13e32,_0xd130b,_0x14df92,_0x4ae404){return new BPromise(function(_0xcf1e49,_0x25afb6){var _0x46f755=_0x4ae404||client;return _0x46f755[_0x607a('0x1f')](_0xd13e32,_0x14df92)[_0x607a('0x20')](function(_0x406aa5){logger[_0x607a('0x21')](_0x607a('0x22'),_0xd130b,_0x607a('0x23'));logger['debug']('SmsAccount,\x20%s,\x20%s,\x20%s',_0xd130b,'request\x20sent',JSON['stringify'](_0x406aa5));if(_0x406aa5[_0x607a('0x24')]){if(_0x406aa5['error']['code']===0x1f4){logger['error'](_0x607a('0x22'),_0xd130b,_0x406aa5[_0x607a('0x24')][_0x607a('0x25')]);return _0x25afb6(_0x406aa5[_0x607a('0x24')][_0x607a('0x25')]);}logger[_0x607a('0x24')](_0x607a('0x22'),_0xd130b,_0x406aa5[_0x607a('0x24')][_0x607a('0x25')]);return _0xcf1e49(_0x406aa5['error']['message']);}else{logger[_0x607a('0x21')](_0x607a('0x22'),_0xd130b,_0x607a('0x23'));_0xcf1e49(_0x406aa5[_0x607a('0x26')][_0x607a('0x25')]);}})['catch'](function(_0x53497a){logger[_0x607a('0x24')](_0x607a('0x22'),_0xd130b,_0x53497a);_0x25afb6(_0x53497a);});});}function respondWithStatusCode(_0x40332f,_0x31bf9f){_0x31bf9f=_0x31bf9f||0xcc;return function(_0x9ce831){if(_0x9ce831){return _0x40332f['sendStatus'](_0x31bf9f);}return _0x40332f[_0x607a('0x27')](_0x31bf9f)[_0x607a('0x28')]();};}function respondWithResult(_0x18b655,_0x32991e){_0x32991e=_0x32991e||0xc8;return function(_0x577eaf){if(_0x577eaf){return _0x18b655[_0x607a('0x27')](_0x32991e)[_0x607a('0x29')](_0x577eaf);}};}function respondWithFilteredResult(_0x478509,_0xab703e){return function(_0x101876){if(_0x101876){var _0x4c24b8=typeof _0xab703e[_0x607a('0x2a')]==='undefined'&&typeof _0xab703e[_0x607a('0x2b')]===_0x607a('0x2c');var _0x18dfa1=_0x101876[_0x607a('0x2d')];var _0x52dba7=_0x4c24b8?0x0:_0xab703e[_0x607a('0x2a')];var _0xbbece8=_0x4c24b8?_0x101876[_0x607a('0x2d')]:_0xab703e['offset']+_0xab703e[_0x607a('0x2b')];var _0x3df38f;if(_0xbbece8>=_0x18dfa1){_0xbbece8=_0x18dfa1;_0x3df38f=0xc8;}else{_0x3df38f=0xce;}_0x478509[_0x607a('0x27')](_0x3df38f);return _0x478509['set'](_0x607a('0x2e'),_0x52dba7+'-'+_0xbbece8+'/'+_0x18dfa1)['json'](_0x101876);}return null;};}function patchUpdates(_0x185ad0){return function(_0x5f4734){try{jsonpatch[_0x607a('0x2f')](_0x5f4734,_0x185ad0,!![]);}catch(_0x207a6a){return BPromise['reject'](_0x207a6a);}return _0x5f4734[_0x607a('0x30')]();};}function saveUpdates(_0x4f7bdd,_0x5cf265){return function(_0x2110f7){if(_0x2110f7){return _0x2110f7[_0x607a('0x31')](_0x4f7bdd)[_0x607a('0x20')](function(_0x3e1e43){return _0x3e1e43;});}return null;};}function removeEntity(_0x563206,_0x18c684){return function(_0x15e787){if(_0x15e787){return _0x15e787[_0x607a('0x32')]()[_0x607a('0x20')](function(){var _0x14af5c=_0x15e787['get']({'plain':!![]});var _0x3624dd='SmsAccounts';return db[_0x607a('0x33')][_0x607a('0x32')]({'where':{'type':_0x3624dd,'resourceId':_0x14af5c['id']}})[_0x607a('0x20')](function(){return _0x15e787;});})[_0x607a('0x20')](function(){_0x563206[_0x607a('0x27')](0xcc)[_0x607a('0x28')]();});}};}function handleEntityNotFound(_0x2e647f,_0x5b2f90){return function(_0x46d543){if(!_0x46d543){_0x2e647f[_0x607a('0x34')](0x194);}return _0x46d543;};}function handleError(_0x33e9be,_0x30d72b){_0x30d72b=_0x30d72b||0x1f4;return function(_0x5e3564){logger[_0x607a('0x24')](_0x5e3564[_0x607a('0x35')]);if(_0x5e3564['name']){delete _0x5e3564[_0x607a('0x36')];}_0x33e9be['status'](_0x30d72b)['send'](_0x5e3564);};}exports[_0x607a('0x37')]=function(_0x4453bf,_0xd2c98c){var _0x51a7a8={'include':[{'model':db[_0x607a('0x38')],'as':_0x607a('0x39')}]},_0xa0435b={},_0x299fd8={'count':0x0,'rows':[]};var _0x38a380=_[_0x607a('0x3a')](db[_0x607a('0x3b')]['rawAttributes'],function(_0x4221df){return{'name':_0x4221df[_0x607a('0x3c')],'type':_0x4221df[_0x607a('0x3d')][_0x607a('0x3e')]};});_0xa0435b[_0x607a('0x3f')]=_[_0x607a('0x3a')](_0x38a380,_0x607a('0x36'));_0xa0435b[_0x607a('0x40')]=_[_0x607a('0x41')](_0x4453bf['query']);_0xa0435b['filters']=_[_0x607a('0x42')](_0xa0435b[_0x607a('0x3f')],_0xa0435b[_0x607a('0x40')]);_0x51a7a8[_0x607a('0x43')]=_['intersection'](_0xa0435b[_0x607a('0x3f')],qs[_0x607a('0x44')](_0x4453bf[_0x607a('0x40')][_0x607a('0x44')]));_0x51a7a8[_0x607a('0x43')]=_0x51a7a8[_0x607a('0x43')][_0x607a('0x45')]?_0x51a7a8[_0x607a('0x43')]:_0xa0435b[_0x607a('0x3f')];if(!_0x4453bf[_0x607a('0x40')][_0x607a('0x46')](_0x607a('0x47'))){_0x51a7a8[_0x607a('0x2b')]=qs[_0x607a('0x2b')](_0x4453bf[_0x607a('0x40')]['limit']);_0x51a7a8['offset']=qs[_0x607a('0x2a')](_0x4453bf['query'][_0x607a('0x2a')]);}_0x51a7a8[_0x607a('0x48')]=qs[_0x607a('0x49')](_0x4453bf[_0x607a('0x40')][_0x607a('0x49')]);_0x51a7a8[_0x607a('0x4a')]=qs['filters'](_[_0x607a('0x4b')](_0x4453bf['query'],_0xa0435b[_0x607a('0x4c')]),_0x38a380);if(_0x4453bf['query'][_0x607a('0x4d')]){_0x51a7a8[_0x607a('0x4a')]=_[_0x607a('0x4e')](_0x51a7a8[_0x607a('0x4a')],{'$or':_[_0x607a('0x3a')](_0x38a380,function(_0x503d41){if(_0x503d41[_0x607a('0x3d')]!==_0x607a('0x4f')){var _0x167888={};_0x167888[_0x503d41[_0x607a('0x36')]]={'$like':'%'+_0x4453bf[_0x607a('0x40')][_0x607a('0x4d')]+'%'};return _0x167888;}})});}_0x51a7a8=_[_0x607a('0x4e')]({},_0x51a7a8,_0x4453bf[_0x607a('0x50')]);var _0x4c7063={'where':_0x51a7a8['where']};return db[_0x607a('0x3b')][_0x607a('0x2d')](_0x4c7063)['then'](function(_0x3801e2){_0x299fd8[_0x607a('0x2d')]=_0x3801e2;if(_0x4453bf['query']['includeAll']){_0x51a7a8[_0x607a('0x51')]=[{'all':!![]}];}return db[_0x607a('0x3b')][_0x607a('0x52')](_0x51a7a8);})[_0x607a('0x20')](function(_0x3d3c5a){_0x299fd8[_0x607a('0x53')]=_0x3d3c5a;return _0x299fd8;})[_0x607a('0x20')](respondWithFilteredResult(_0xd2c98c,_0x51a7a8))[_0x607a('0x54')](handleError(_0xd2c98c,null));};exports['show']=function(_0x11ef8b,_0x2f2fe1){var _0x1236d2={'raw':![],'where':{'id':_0x11ef8b[_0x607a('0x55')]['id']},'include':[{'model':db['Pause'],'as':_0x607a('0x39')}]},_0x46b25b={};_0x46b25b[_0x607a('0x3f')]=_[_0x607a('0x41')](db[_0x607a('0x3b')]['rawAttributes']);_0x46b25b[_0x607a('0x40')]=_['keys'](_0x11ef8b['query']);_0x46b25b[_0x607a('0x4c')]=_[_0x607a('0x42')](_0x46b25b[_0x607a('0x3f')],_0x46b25b[_0x607a('0x40')]);_0x1236d2[_0x607a('0x43')]=_[_0x607a('0x42')](_0x46b25b[_0x607a('0x3f')],qs[_0x607a('0x44')](_0x11ef8b[_0x607a('0x40')]['fields']));_0x1236d2[_0x607a('0x43')]=_0x1236d2['attributes']['length']?_0x1236d2[_0x607a('0x43')]:_0x46b25b['model'];if(_0x11ef8b['query'][_0x607a('0x56')]){_0x1236d2[_0x607a('0x51')]=[{'all':!![]}];}_0x1236d2=_[_0x607a('0x4e')]({},_0x1236d2,_0x11ef8b[_0x607a('0x50')]);return db[_0x607a('0x3b')][_0x607a('0x57')](_0x1236d2)[_0x607a('0x20')](handleEntityNotFound(_0x2f2fe1,null))[_0x607a('0x20')](respondWithResult(_0x2f2fe1,null))[_0x607a('0x54')](handleError(_0x2f2fe1,null));};exports[_0x607a('0x58')]=function(_0x5b5556,_0x3298d2){return db[_0x607a('0x3b')][_0x607a('0x58')](_0x5b5556[_0x607a('0x59')],{})[_0x607a('0x20')](function(_0x1e04fe){var _0x18a323=_0x5b5556[_0x607a('0x5a')][_0x607a('0x5b')]({'plain':!![]});if(!_0x18a323)throw new Error(_0x607a('0x5c'));if(_0x18a323[_0x607a('0x5d')]===_0x607a('0x5a')){var _0x5c12d5=_0x1e04fe[_0x607a('0x5b')]({'plain':!![]});var _0x410b4b='SmsAccounts';return db['UserProfileSection'][_0x607a('0x57')]({'where':{'name':_0x410b4b,'userProfileId':_0x18a323['userProfileId']},'raw':!![]})[_0x607a('0x20')](function(_0x337ad8){if(_0x337ad8&&_0x337ad8[_0x607a('0x5e')]===0x0){return db['UserProfileResource'][_0x607a('0x58')]({'name':_0x5c12d5['name'],'resourceId':_0x5c12d5['id'],'type':_0x337ad8[_0x607a('0x36')],'sectionId':_0x337ad8['id']},{})[_0x607a('0x20')](function(){return _0x1e04fe;});}else{return _0x1e04fe;}})[_0x607a('0x54')](function(_0x381323){logger['error'](_0x607a('0x5f'),_0x381323);throw _0x381323;});}return _0x1e04fe;})[_0x607a('0x20')](respondWithResult(_0x3298d2,0xc9))['catch'](handleError(_0x3298d2,null));};exports[_0x607a('0x31')]=function(_0x3ed92c,_0x270d69){if(_0x3ed92c[_0x607a('0x59')]['id']){delete _0x3ed92c[_0x607a('0x59')]['id'];}return db[_0x607a('0x3b')]['find']({'where':{'id':_0x3ed92c[_0x607a('0x55')]['id']},'include':[{'model':db[_0x607a('0x38')],'as':_0x607a('0x39')}]})[_0x607a('0x20')](handleEntityNotFound(_0x270d69,null))['then'](saveUpdates(_0x3ed92c[_0x607a('0x59')],null))[_0x607a('0x20')](respondWithResult(_0x270d69,null))['catch'](handleError(_0x270d69,null));};exports['destroy']=function(_0x2c10b6,_0x105e26){return db[_0x607a('0x3b')][_0x607a('0x57')]({'where':{'id':_0x2c10b6[_0x607a('0x55')]['id']}})[_0x607a('0x20')](handleEntityNotFound(_0x105e26,null))['then'](removeEntity(_0x105e26,null))[_0x607a('0x54')](handleError(_0x105e26,null));};exports['describe']=function(_0x558b62,_0x2eb6fd){return db['SmsAccount'][_0x607a('0x60')]()[_0x607a('0x20')](respondWithResult(_0x2eb6fd,null))['catch'](handleError(_0x2eb6fd,null));};exports[_0x607a('0x61')]=function(_0x45c00b,_0x2c9d23,_0x937185){if(_0x45c00b[_0x607a('0x59')]['id']){delete _0x45c00b['body']['id'];}return db['SmsAccount']['find']({'where':{'id':_0x45c00b[_0x607a('0x55')]['id']}})['then'](handleEntityNotFound(_0x2c9d23,null))[_0x607a('0x20')](function(_0xda1586){if(_0xda1586){_0x45c00b[_0x607a('0x59')][_0x607a('0x62')]=_0xda1586['id'];return db['Disposition'][_0x607a('0x58')](_0x45c00b[_0x607a('0x59')]);}})['then'](respondWithResult(_0x2c9d23,null))[_0x607a('0x54')](handleError(_0x2c9d23,null));};exports[_0x607a('0x63')]=function(_0x311655,_0xcf6d87,_0x2e084b){var _0xb5a0b5={'raw':![],'where':{}};var _0x23256f={};var _0x3a14c0={'count':0x0,'rows':[]};return db['SmsAccount'][_0x607a('0x64')]({'where':{'id':_0x311655[_0x607a('0x55')]['id']}})[_0x607a('0x20')](handleEntityNotFound(_0xcf6d87,null))[_0x607a('0x20')](function(_0x5c6589){if(_0x5c6589){_0x23256f[_0x607a('0x3f')]=_[_0x607a('0x41')](db[_0x607a('0x65')][_0x607a('0x66')]);_0x23256f[_0x607a('0x40')]=_[_0x607a('0x41')](_0x311655['query']);_0x23256f[_0x607a('0x4c')]=_[_0x607a('0x42')](_0x23256f[_0x607a('0x3f')],_0x23256f[_0x607a('0x40')]);_0xb5a0b5[_0x607a('0x43')]=_['intersection'](_0x23256f[_0x607a('0x3f')],qs[_0x607a('0x44')](_0x311655[_0x607a('0x40')][_0x607a('0x44')]));_0xb5a0b5[_0x607a('0x43')]=_0xb5a0b5['attributes']['length']?_0xb5a0b5['attributes']:_0x23256f[_0x607a('0x3f')];if(!_0x311655[_0x607a('0x40')][_0x607a('0x46')](_0x607a('0x47'))){_0xb5a0b5[_0x607a('0x2b')]=qs[_0x607a('0x2b')](_0x311655[_0x607a('0x40')]['limit']);_0xb5a0b5['offset']=qs[_0x607a('0x2a')](_0x311655['query'][_0x607a('0x2a')]);}_0xb5a0b5[_0x607a('0x48')]=qs['sort'](_0x311655[_0x607a('0x40')][_0x607a('0x49')]);_0xb5a0b5[_0x607a('0x4a')]=qs['filters'](_[_0x607a('0x4b')](_0x311655['query'],_0x23256f[_0x607a('0x4c')]));_0xb5a0b5[_0x607a('0x4a')]['SmsAccountId']=_0x5c6589['id'];if(_0x311655[_0x607a('0x40')][_0x607a('0x4d')]){_0xb5a0b5['where']=_[_0x607a('0x4e')](_0xb5a0b5['where'],{'$or':_[_0x607a('0x3a')](_0xb5a0b5[_0x607a('0x43')],function(_0x359b0a){var _0x5efe9d={};_0x5efe9d[_0x359b0a]={'$like':'%'+_0x311655[_0x607a('0x40')][_0x607a('0x4d')]+'%'};return _0x5efe9d;})});}_0xb5a0b5=_['merge']({},_0xb5a0b5,_0x311655[_0x607a('0x50')]);return db[_0x607a('0x65')]['count']({'where':_0xb5a0b5[_0x607a('0x4a')]})[_0x607a('0x20')](function(_0x576929){_0x3a14c0[_0x607a('0x2d')]=_0x576929;if(_0x311655['query'][_0x607a('0x56')]){_0xb5a0b5[_0x607a('0x51')]=[{'all':!![]}];}return db[_0x607a('0x65')][_0x607a('0x52')](_0xb5a0b5);})['then'](function(_0x3fbe2c){_0x3a14c0[_0x607a('0x53')]=_0x3fbe2c;return _0x3a14c0;});}})[_0x607a('0x20')](respondWithFilteredResult(_0xcf6d87,_0xb5a0b5))[_0x607a('0x54')](handleError(_0xcf6d87,null));};exports[_0x607a('0x67')]=function(_0x27b69e,_0x63d396,_0x34207c){return db[_0x607a('0x3b')][_0x607a('0x57')]({'where':{'id':_0x27b69e[_0x607a('0x55')]['id']}})['then'](handleEntityNotFound(_0x63d396,null))[_0x607a('0x20')](function(_0x21071b){if(_0x21071b){return _0x21071b[_0x607a('0x67')](_0x27b69e[_0x607a('0x40')][_0x607a('0x68')]);}})[_0x607a('0x20')](respondWithStatusCode(_0x63d396,null))['catch'](handleError(_0x63d396,null));};exports[_0x607a('0x69')]=function(_0x53d4e1,_0x4e94e2,_0x36624b){if(_0x53d4e1['body']['id']){delete _0x53d4e1['body']['id'];}return db[_0x607a('0x3b')]['find']({'where':{'id':_0x53d4e1[_0x607a('0x55')]['id']}})['then'](handleEntityNotFound(_0x4e94e2,null))[_0x607a('0x20')](function(_0x4ceb7d){if(_0x4ceb7d){_0x53d4e1[_0x607a('0x59')][_0x607a('0x62')]=_0x4ceb7d['id'];return db[_0x607a('0x6a')]['create'](_0x53d4e1['body']);}})[_0x607a('0x20')](respondWithResult(_0x4e94e2,null))['catch'](handleError(_0x4e94e2,null));};exports[_0x607a('0x6b')]=function(_0x417d4e,_0x56aba1,_0x9faa8){var _0x383316={'raw':![],'where':{}};var _0x3eab3b={};var _0x41ea63={'count':0x0,'rows':[]};return db[_0x607a('0x3b')][_0x607a('0x64')]({'where':{'id':_0x417d4e[_0x607a('0x55')]['id']}})['then'](handleEntityNotFound(_0x56aba1,null))['then'](function(_0x52fd98){if(_0x52fd98){_0x3eab3b['model']=_['keys'](db[_0x607a('0x6a')]['rawAttributes']);_0x3eab3b[_0x607a('0x40')]=_[_0x607a('0x41')](_0x417d4e[_0x607a('0x40')]);_0x3eab3b[_0x607a('0x4c')]=_[_0x607a('0x42')](_0x3eab3b[_0x607a('0x3f')],_0x3eab3b[_0x607a('0x40')]);_0x383316[_0x607a('0x43')]=_[_0x607a('0x42')](_0x3eab3b[_0x607a('0x3f')],qs[_0x607a('0x44')](_0x417d4e[_0x607a('0x40')][_0x607a('0x44')]));_0x383316[_0x607a('0x43')]=_0x383316[_0x607a('0x43')]['length']?_0x383316[_0x607a('0x43')]:_0x3eab3b[_0x607a('0x3f')];if(!_0x417d4e['query'][_0x607a('0x46')](_0x607a('0x47'))){_0x383316[_0x607a('0x2b')]=qs[_0x607a('0x2b')](_0x417d4e[_0x607a('0x40')]['limit']);_0x383316['offset']=qs[_0x607a('0x2a')](_0x417d4e[_0x607a('0x40')]['offset']);}_0x383316[_0x607a('0x48')]=qs[_0x607a('0x49')](_0x417d4e[_0x607a('0x40')][_0x607a('0x49')]);_0x383316[_0x607a('0x4a')]=qs['filters'](_[_0x607a('0x4b')](_0x417d4e['query'],_0x3eab3b[_0x607a('0x4c')]));_0x383316['where'][_0x607a('0x62')]=_0x52fd98['id'];if(_0x417d4e[_0x607a('0x40')][_0x607a('0x4d')]){_0x383316[_0x607a('0x4a')]=_['merge'](_0x383316['where'],{'$or':_[_0x607a('0x3a')](_0x383316[_0x607a('0x43')],function(_0x2f14bc){var _0xf75acf={};_0xf75acf[_0x2f14bc]={'$like':'%'+_0x417d4e[_0x607a('0x40')]['filter']+'%'};return _0xf75acf;})});}_0x383316=_['merge']({},_0x383316,_0x417d4e[_0x607a('0x50')]);return db[_0x607a('0x6a')][_0x607a('0x2d')]({'where':_0x383316['where']})[_0x607a('0x20')](function(_0x59e3cc){_0x41ea63[_0x607a('0x2d')]=_0x59e3cc;if(_0x417d4e[_0x607a('0x40')][_0x607a('0x56')]){_0x383316['include']=[{'all':!![]}];}return db[_0x607a('0x6a')][_0x607a('0x52')](_0x383316);})['then'](function(_0x394e55){_0x41ea63[_0x607a('0x53')]=_0x394e55;return _0x41ea63;});}})[_0x607a('0x20')](respondWithFilteredResult(_0x56aba1,_0x383316))[_0x607a('0x54')](handleError(_0x56aba1,null));};exports['removeAnswers']=function(_0xd5f984,_0x4cfc9f,_0x210c8f){return db['SmsAccount'][_0x607a('0x57')]({'where':{'id':_0xd5f984[_0x607a('0x55')]['id']}})[_0x607a('0x20')](handleEntityNotFound(_0x4cfc9f,null))[_0x607a('0x20')](function(_0x11b55a){if(_0x11b55a){return _0x11b55a[_0x607a('0x6c')](_0xd5f984[_0x607a('0x40')][_0x607a('0x68')]);}})[_0x607a('0x20')](respondWithStatusCode(_0x4cfc9f,null))[_0x607a('0x54')](handleError(_0x4cfc9f,null));};exports[_0x607a('0x6d')]=function(_0x12d31f,_0x71df54,_0x5db4f4){var _0x5eb53d={'channel':'sms'};var _0x367731=[];var _0x2b25c7=[];var _0x5162b8={};return db['SmsAccount'][_0x607a('0x57')]({'where':{'id':_0x12d31f['params']['id']},'include':[{'model':db[_0x607a('0x6e')],'as':_0x607a('0x6f')}]})[_0x607a('0x20')](handleEntityNotFound(_0x71df54,null))[_0x607a('0x20')](function(_0xa49a60){_0x5eb53d['account']=_0xa49a60;_0x5eb53d['applications']=_[_0x607a('0x70')](_0xa49a60[_0x607a('0x6f')],[_0x607a('0x71')],[_0x607a('0x72')]);if(_0x5eb53d[_0x607a('0x73')][_0x607a('0x6f')]){delete _0x5eb53d[_0x607a('0x73')][_0x607a('0x6f')];}return db['CmContact'][_0x607a('0x60')]();})[_0x607a('0x20')](function(_0x3ed7ce){if(!_0x3ed7ce){throw new db['Sequelize']['ValidationError']('no\x20available\x20attributes');}_0x367731=_[_0x607a('0x74')](_[_0x607a('0x41')](_0x3ed7ce),[_0x607a('0x75'),_0x607a('0x76')]);_0x2b25c7=_['difference'](_[_0x607a('0x41')](_0x3ed7ce),['createdAt',_0x607a('0x76'),_0x607a('0x77'),_0x607a('0x78')]);_0x5eb53d[_0x607a('0x59')]={'mapKey':'mobile'};if(_0x5eb53d[_0x607a('0x73')][_0x607a('0x3d')]){switch(_0x5eb53d[_0x607a('0x73')][_0x607a('0x3d')]){case _0x607a('0x79'):_0x5eb53d[_0x607a('0x59')]['from']=_0x12d31f[_0x607a('0x59')]['From'];_0x5eb53d['body'][_0x607a('0x59')]=_0x12d31f[_0x607a('0x59')]['Body'];_0x5eb53d[_0x607a('0x59')][_0x607a('0x7a')]=_0x12d31f[_0x607a('0x59')][_0x607a('0x7b')];break;case _0x607a('0x7c'):_0x5eb53d['body']['from']='+'+_0x12d31f[_0x607a('0x59')][_0x607a('0x7d')];_0x5eb53d[_0x607a('0x59')][_0x607a('0x59')]=_0x12d31f[_0x607a('0x59')][_0x607a('0x7e')];break;case'connectel':_0x5eb53d[_0x607a('0x59')][_0x607a('0x7f')]=_0x12d31f[_0x607a('0x59')][_0x607a('0x7f')];_0x5eb53d['body'][_0x607a('0x59')]=_0x12d31f[_0x607a('0x59')][_0x607a('0x25')];break;case _0x607a('0x80'):_0x5eb53d['body'][_0x607a('0x7f')]=_0x12d31f[_0x607a('0x59')]['from'];_0x5eb53d['body'][_0x607a('0x59')]=_0x12d31f[_0x607a('0x59')][_0x607a('0x59')];_0x5eb53d['body'][_0x607a('0x7a')]=_0x12d31f[_0x607a('0x59')][_0x607a('0x81')];break;case _0x607a('0x82'):_0x5eb53d[_0x607a('0x59')][_0x607a('0x7f')]=_0x12d31f['body'][_0x607a('0x83')];_0x5eb53d[_0x607a('0x59')]['body']=_0x12d31f[_0x607a('0x59')][_0x607a('0x84')];_0x5eb53d['body'][_0x607a('0x7a')]=_0x12d31f[_0x607a('0x59')][_0x607a('0x85')];break;case'infobip':_0x5eb53d[_0x607a('0x59')][_0x607a('0x7f')]='+'+_0x12d31f['body'][_0x607a('0x86')][0x0][_0x607a('0x7f')];_0x5eb53d[_0x607a('0x59')][_0x607a('0x59')]=_0x12d31f['body'][_0x607a('0x86')][0x0]['text'];_0x5eb53d[_0x607a('0x59')]['messageId']=_0x12d31f[_0x607a('0x59')][_0x607a('0x86')][0x0][_0x607a('0x7a')];break;case _0x607a('0x87'):_0x5eb53d['body']['from']=_0x12d31f[_0x607a('0x59')][_0x607a('0x88')];_0x5eb53d[_0x607a('0x59')][_0x607a('0x59')]=_0x12d31f['body'][_0x607a('0x89')]['message'];break;case'clickatell':_0x5eb53d[_0x607a('0x59')][_0x607a('0x7f')]=_0x12d31f['body'][_0x607a('0x8a')];_0x5eb53d['body']['body']=_0x12d31f[_0x607a('0x59')][_0x607a('0x7e')];_0x5eb53d[_0x607a('0x59')][_0x607a('0x7a')]=_0x12d31f[_0x607a('0x59')][_0x607a('0x8b')];break;case _0x607a('0x8c'):_0x5eb53d[_0x607a('0x59')][_0x607a('0x7a')]=_0x12d31f[_0x607a('0x59')][0x0][_0x607a('0x25')]['id'];_0x5eb53d[_0x607a('0x59')][_0x607a('0x7f')]=_0x12d31f[_0x607a('0x59')][0x0]['message']['from'];_0x5eb53d[_0x607a('0x59')][_0x607a('0x59')]=_0x12d31f[_0x607a('0x59')][0x0][_0x607a('0x25')][_0x607a('0x7e')];break;case _0x607a('0x8d'):_0x5eb53d['body'][_0x607a('0x7f')]=_0x12d31f[_0x607a('0x59')][_0x607a('0x7f')];_0x5eb53d['body']['body']=_0x12d31f[_0x607a('0x59')][_0x607a('0x25')];_0x5eb53d[_0x607a('0x59')][_0x607a('0x7a')]=_0x12d31f[_0x607a('0x59')][_0x607a('0x8e')];break;}}if(_0x5eb53d['body']['id']){delete _0x5eb53d[_0x607a('0x59')]['id'];}if(_[_0x607a('0x8f')](_0x5eb53d[_0x607a('0x59')][_0x607a('0x7f')])){throw new db[(_0x607a('0x90'))][(_0x607a('0x91'))](_0x607a('0x92'));}if(_['isNil'](_0x5eb53d[_0x607a('0x59')][_0x607a('0x59')])||_0x5eb53d[_0x607a('0x59')]['body']===''){throw new db['Sequelize']['ValidationError'](_0x607a('0x93'));}if(_[_0x607a('0x8f')](_0x5eb53d['body'][_0x607a('0x94')])){throw new db[(_0x607a('0x90'))][(_0x607a('0x91'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x2b25c7);}if(!_[_0x607a('0x95')](_0x2b25c7,_0x5eb53d[_0x607a('0x59')]['mapKey'])){throw new db[(_0x607a('0x90'))][(_0x607a('0x91'))](_0x607a('0x96')+_0x2b25c7);}_0x5162b8[_0x5eb53d[_0x607a('0x59')][_0x607a('0x94')]]=_0x5eb53d[_0x607a('0x59')][_0x607a('0x7f')];return db[_0x607a('0x97')][_0x607a('0x57')]({'where':{'id':_0x5eb53d[_0x607a('0x73')][_0x607a('0x78')]},'include':[{'model':db['CmContact'],'as':_0x607a('0x98'),'where':_0x5162b8,'limit':0x1,'order':[['updatedAt',_0x607a('0x99')]]}]});})[_0x607a('0x20')](handleEntityNotFound(_0x71df54,null))[_0x607a('0x20')](function(_0x3b4f59){if(_0x3b4f59){_0x5eb53d[_0x607a('0x9a')]=_[_0x607a('0x9b')](_0x3b4f59,[_0x607a('0x98')]);if(_0x3b4f59[_0x607a('0x98')][_0x607a('0x45')]){return _0x3b4f59[_0x607a('0x98')][0x0];}var _0x284dea=_['defaults'](_0x5eb53d['body'],{'firstName':_0x5eb53d[_0x607a('0x59')][_0x607a('0x7f')],'ListId':_0x3b4f59['id']});_0x284dea[_0x5eb53d[_0x607a('0x59')]['mapKey']]=_0x5eb53d['body'][_0x607a('0x7f')];return db[_0x607a('0x9c')]['create'](_0x284dea,{'fields':_0x367731,'raw':!![]});}})[_0x607a('0x20')](handleEntityNotFound(_0x71df54,null))[_0x607a('0x20')](function(_0x17b794){if(_0x17b794){_0x5eb53d[_0x607a('0x9d')]=_0x17b794;var _0x2ee1cb={'ContactId':_0x17b794['id'],'phone':_0x5eb53d['body'][_0x607a('0x7f')],'SmsAccountId':_0x12d31f[_0x607a('0x55')]['id']};var _0x10f6b1={'ContactId':_0x17b794['id'],'SmsAccountId':_0x12d31f['params']['id'],'closed':![]};return db[_0x607a('0x9e')][_0x607a('0x57')]({'where':_0x10f6b1})[_0x607a('0x20')](function(_0x10c6d2){if(_0x10c6d2){return[_0x10c6d2,![]];}return db['SmsInteraction'][_0x607a('0x58')](_0x2ee1cb)[_0x607a('0x20')](function(_0x53cbac){return[_0x53cbac,!![]];});});}})[_0x607a('0x9f')](function(_0x90681a,_0x29320a){_0x5eb53d['interaction']=_0x90681a[_0x607a('0x5b')]({'plain':!![]});_0x5eb53d[_0x607a('0xa0')][_0x607a('0xa1')]=![];if(_0x29320a){if(_0x5eb53d[_0x607a('0x73')][_0x607a('0xa2')]){_0x5eb53d[_0x607a('0xa3')][_0x607a('0xa4')]({'id':0x0,'priority':_0x5eb53d[_0x607a('0xa3')]['length']+0x1,'app':_0x607a('0xa5'),'appdata':_0x607a('0xa6'),'interval':_0x607a('0xa7')});}_0x5eb53d[_0x607a('0xa0')][_0x607a('0xa1')]=!![];}return db[_0x607a('0xa8')]['create']({'phone':_0x5eb53d[_0x607a('0x59')][_0x607a('0x7f')],'messageId':_0x5eb53d[_0x607a('0x59')][_0x607a('0x7a')],'body':_0x5eb53d[_0x607a('0x59')][_0x607a('0x59')],'SmsAccountId':_0x12d31f[_0x607a('0x55')]['id'],'SmsInteractionId':_0x90681a['id'],'direction':'in','ContactId':_0x90681a['ContactId'],'AttachmentId':_0x5eb53d[_0x607a('0x59')]['AttachmentId']});})[_0x607a('0x20')](function(_0x514ada){_0x5eb53d[_0x607a('0x25')]=_0x514ada;if(_0x5eb53d['interaction'][_0x607a('0xa9')]){return db[_0x607a('0xaa')][_0x607a('0x57')]({'attributes':['id',_0x607a('0x36')],'where':{'id':_0x5eb53d[_0x607a('0xa0')]['UserId']}})[_0x607a('0x20')](function(_0x1750fc){if(_0x1750fc){_0x5eb53d['applications']['unshift']({'id':0x0,'priority':0x0,'app':_0x607a('0xab'),'appdata':_0x1750fc[_0x607a('0x36')]+','+(_0x5eb53d[_0x607a('0x73')][_0x607a('0xac')]||0xa),'interval':_0x607a('0xa7')});}return respondWithRpcPromise(_0x607a('0xad'),'startRouting',_0x5eb53d);});}return respondWithRpcPromise(_0x607a('0xad'),_0x607a('0xae'),_0x5eb53d);})[_0x607a('0x20')](function(_0x56338d){if(_0x56338d){var _0x1f9d65=0xc8;var _0x4d74f8=_0x607a('0xaf');logger[_0x607a('0x21')](_0x607a('0xb0'),_0x4d74f8,_0x1f9d65,_0x607a('0xb1'));logger[_0x607a('0xb2')]('SmsAccount,\x20%s,\x20%s,\x20%s,\x20%s',_0x4d74f8,_0x1f9d65,'entity\x20found',JSON[_0x607a('0xb3')](_0x56338d));if(_0x5eb53d[_0x607a('0x73')][_0x607a('0x3d')]===_0x607a('0x79')){return _0x71df54['status'](_0x1f9d65)[_0x607a('0xb4')](_0x607a('0xb5'),_0x607a('0xb6'))[_0x607a('0xb7')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x71df54[_0x607a('0x27')](_0x1f9d65)[_0x607a('0x29')](_0x56338d);}}})[_0x607a('0x54')](handleError(_0x71df54,null));};exports[_0x607a('0xb8')]=function(_0x280bb0,_0x4f2d0d){var _0xba02fa=_0x280bb0['params']['id'];var _0x3926a2=_0x280bb0['body'];var _0x98c601=0xc8;var _0x47e935=null;return db[_0x607a('0xb9')]['transaction']({'isolationLevel':db[_0x607a('0xb9')][_0x607a('0xba')]['ISOLATION_LEVELS']['READ_COMMITTED']},function(_0x23105c){return db['SmsAccount'][_0x607a('0x64')]({'where':{'id':_0xba02fa},'transaction':_0x23105c})[_0x607a('0x20')](function(_0x4ffb69){if(_0x4ffb69){return db[_0x607a('0x6e')][_0x607a('0x32')]({'where':{'SmsAccountId':_0xba02fa},'transaction':_0x23105c})[_0x607a('0x20')](function(){var _0x4f9400=_[_0x607a('0x3a')](_0x3926a2,function(_0x15bedc){_0x15bedc[_0x607a('0x62')]=_0xba02fa;return _0x15bedc;});return db[_0x607a('0x6e')][_0x607a('0xbb')](_0x4f9400,{'transaction':_0x23105c});});}else{_0x98c601=0x194;_0x47e935=[];}});})['then'](function(){if(_0x98c601!==0x194){return db[_0x607a('0x6e')]['findAndCountAll']({'where':{'SmsAccountId':_0xba02fa},'order':_0x607a('0x71')})[_0x607a('0x20')](function(_0x341249){_0x47e935=_0x341249;});}})[_0x607a('0x54')](function(_0x4f6548){_0x98c601=0x1f4;logger[_0x607a('0x24')](_0x4f6548[_0x607a('0x35')]);if(_0x4f6548[_0x607a('0x36')]){delete _0x4f6548[_0x607a('0x36')];}_0x47e935=_0x4f6548;})[_0x607a('0xbc')](function(){if(_0x47e935===null){_0x4f2d0d[_0x607a('0x34')](_0x98c601);}else{if(_0x98c601===0x1f4){_0x4f2d0d['status'](_0x98c601)[_0x607a('0xb7')](_0x47e935);}else{_0x4f2d0d[_0x607a('0x27')](_0x98c601)[_0x607a('0x29')](_0x47e935);}}});};exports[_0x607a('0xbd')]=function(_0x34d1e4,_0x2de04d,_0x5b8317){var _0x47a72b={};var _0x3bb630={};var _0x27789a;var _0x377f97;return db[_0x607a('0x3b')]['findOne']({'where':{'id':_0x34d1e4['params']['id']}})[_0x607a('0x20')](handleEntityNotFound(_0x2de04d,null))['then'](function(_0x440f6b){if(_0x440f6b){_0x27789a=_0x440f6b;_0x3bb630[_0x607a('0x3f')]=_[_0x607a('0x41')](db[_0x607a('0x6e')][_0x607a('0x66')]);_0x3bb630[_0x607a('0x40')]=_['keys'](_0x34d1e4[_0x607a('0x40')]);_0x3bb630[_0x607a('0x4c')]=_['intersection'](_0x3bb630[_0x607a('0x3f')],_0x3bb630[_0x607a('0x40')]);_0x47a72b['attributes']=_['intersection'](_0x3bb630['model'],qs[_0x607a('0x44')](_0x34d1e4[_0x607a('0x40')][_0x607a('0x44')]));_0x47a72b[_0x607a('0x43')]=_0x47a72b[_0x607a('0x43')]['length']?_0x47a72b[_0x607a('0x43')]:_0x3bb630['model'];_0x47a72b[_0x607a('0x48')]=qs[_0x607a('0x49')](_0x34d1e4[_0x607a('0x40')]['sort']);_0x47a72b[_0x607a('0x4a')]=qs[_0x607a('0x4c')](_[_0x607a('0x4b')](_0x34d1e4[_0x607a('0x40')],_0x3bb630[_0x607a('0x4c')]));if(_0x34d1e4['query']['filter']){_0x47a72b['where']=_['merge'](_0x47a72b['where'],{'$or':_[_0x607a('0x3a')](_0x47a72b[_0x607a('0x43')],function(_0x10f758){var _0x385a25={};_0x385a25[_0x10f758]={'$like':'%'+_0x34d1e4['query'][_0x607a('0x4d')]+'%'};return _0x385a25;})});}_0x47a72b=_[_0x607a('0x4e')]({},_0x47a72b,_0x34d1e4['options']);return _0x27789a[_0x607a('0xbd')](_0x47a72b);}})['then'](function(_0x12d3a8){if(_0x12d3a8){_0x377f97=_0x12d3a8[_0x607a('0x45')];if(!_0x34d1e4['query'][_0x607a('0x46')](_0x607a('0x47'))){_0x47a72b['limit']=qs['limit'](_0x34d1e4[_0x607a('0x40')][_0x607a('0x2b')]);_0x47a72b[_0x607a('0x2a')]=qs[_0x607a('0x2a')](_0x34d1e4[_0x607a('0x40')][_0x607a('0x2a')]);}return _0x27789a[_0x607a('0xbd')](_0x47a72b);}})[_0x607a('0x20')](function(_0x441a41){if(_0x441a41){return _0x441a41?{'count':_0x377f97,'rows':_0x441a41}:null;}})[_0x607a('0x20')](respondWithResult(_0x2de04d,null))[_0x607a('0x54')](handleError(_0x2de04d,null));};exports[_0x607a('0xbe')]=function(_0x2872fc,_0xf4be0,_0x1668bc){var _0x5d06d0={'raw':![],'where':{}};var _0x6d37e={};var _0x2a39af={'count':0x0,'rows':[]};return db[_0x607a('0x3b')]['findOne']({'where':{'id':_0x2872fc[_0x607a('0x55')]['id']}})[_0x607a('0x20')](handleEntityNotFound(_0xf4be0,null))['then'](function(_0x455887){if(_0x455887){_0x6d37e[_0x607a('0x3f')]=_[_0x607a('0x41')](db['SmsInteraction'][_0x607a('0x66')]);_0x6d37e[_0x607a('0x40')]=_[_0x607a('0x41')](_0x2872fc[_0x607a('0x40')]);_0x6d37e[_0x607a('0x4c')]=_[_0x607a('0x42')](_0x6d37e[_0x607a('0x3f')],_0x6d37e[_0x607a('0x40')]);_0x5d06d0[_0x607a('0x43')]=_['intersection'](_0x6d37e[_0x607a('0x3f')],qs[_0x607a('0x44')](_0x2872fc[_0x607a('0x40')][_0x607a('0x44')]));_0x5d06d0['attributes']=_0x5d06d0[_0x607a('0x43')][_0x607a('0x45')]?_0x5d06d0[_0x607a('0x43')]:_0x6d37e[_0x607a('0x3f')];if(!_0x2872fc[_0x607a('0x40')][_0x607a('0x46')]('nolimit')){_0x5d06d0[_0x607a('0x2b')]=qs['limit'](_0x2872fc[_0x607a('0x40')]['limit']);_0x5d06d0['offset']=qs['offset'](_0x2872fc[_0x607a('0x40')][_0x607a('0x2a')]);}_0x5d06d0['order']=qs[_0x607a('0x49')](_0x2872fc['query'][_0x607a('0x49')]);_0x5d06d0['where']=qs['filters'](_[_0x607a('0x4b')](_0x2872fc[_0x607a('0x40')],_0x6d37e[_0x607a('0x4c')]));_0x5d06d0[_0x607a('0x4a')][_0x607a('0x62')]=_0x455887['id'];if(_0x2872fc[_0x607a('0x40')][_0x607a('0x4d')]){_0x5d06d0['where']=_[_0x607a('0x4e')](_0x5d06d0[_0x607a('0x4a')],{'$or':_[_0x607a('0x3a')](_0x5d06d0[_0x607a('0x43')],function(_0x506f0a){var _0x37d1ea={};_0x37d1ea[_0x506f0a]={'$like':'%'+_0x2872fc[_0x607a('0x40')][_0x607a('0x4d')]+'%'};return _0x37d1ea;})});}_0x5d06d0=_[_0x607a('0x4e')]({},_0x5d06d0,_0x2872fc[_0x607a('0x50')]);return db['SmsInteraction'][_0x607a('0x2d')]({'where':_0x5d06d0[_0x607a('0x4a')]})[_0x607a('0x20')](function(_0x11195a){_0x2a39af[_0x607a('0x2d')]=_0x11195a;if(_0x2872fc[_0x607a('0x40')][_0x607a('0x56')]){_0x5d06d0['include']=[{'model':db['CmContact'],'as':'Contact','required':![]},{'model':db['User'],'as':'Owner','attributes':['name',_0x607a('0xbf'),_0x607a('0xc0')],'required':![]},{'model':db['Tag'],'as':'Tags','attributes':['id',_0x607a('0x36'),_0x607a('0xc1')],'where':_0x2872fc[_0x607a('0x40')][_0x607a('0xc2')]?{'id':_0x2872fc['query']['tag']}:undefined,'required':_0x2872fc['query'][_0x607a('0xc2')]?!![]:![]}];}return db[_0x607a('0x9e')]['findAll'](_0x5d06d0);})[_0x607a('0x20')](function(_0x499894){_0x2a39af['rows']=_0x499894;return _0x2a39af;});}})[_0x607a('0x20')](respondWithFilteredResult(_0xf4be0,_0x5d06d0))[_0x607a('0x54')](handleError(_0xf4be0,null));};exports[_0x607a('0xb7')]=function(_0x1cf870,_0x31f988,_0x218581){var _0x1c6fc4,_0x50a560,_0x53ef11;if(_[_0x607a('0x8f')](_0x1cf870[_0x607a('0x59')]['body'])||_0x1cf870[_0x607a('0x59')][_0x607a('0x59')]===''){throw new db[(_0x607a('0x90'))][(_0x607a('0x91'))]('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0x607a('0x8f')](_0x1cf870[_0x607a('0x59')]['to'])){throw new db['Sequelize'][(_0x607a('0x91'))](_0x607a('0xc3'));}_0x1c6fc4=_0x1cf870['body']['to'];return db['SmsAccount'][_0x607a('0x57')]({'where':{'id':_0x1cf870[_0x607a('0x55')]['id']},'include':[{'model':db['CmList'],'as':_0x607a('0xc4'),'include':[{'model':db[_0x607a('0x9c')],'as':_0x607a('0x98'),'where':{'mobile':_0x1c6fc4},'limit':0x1,'order':[[_0x607a('0x76'),_0x607a('0x99')]]}]}]})['then'](handleEntityNotFound(_0x31f988,null))[_0x607a('0x20')](function(_0x59be5b){if(_0x59be5b&&_0x59be5b[_0x607a('0xc4')]){_0x50a560=_0x59be5b['get']({'plain':!![]});if(_0x50a560[_0x607a('0xc4')]&&_0x50a560[_0x607a('0xc4')][_0x607a('0x98')][_0x607a('0x45')]){return _0x50a560[_0x607a('0xc4')][_0x607a('0x98')][0x0];}return db['CmContact'][_0x607a('0x58')](_[_0x607a('0x18')](_0x1cf870[_0x607a('0x59')],{'firstName':_0x1c6fc4,'mobile':_0x1c6fc4,'phone':_0x1c6fc4,'ListId':_0x50a560[_0x607a('0x78')]}));}})[_0x607a('0x20')](handleEntityNotFound(_0x31f988,null))[_0x607a('0x20')](function(_0x4c79e1){if(_0x4c79e1){_0x53ef11=_0x4c79e1;return db['SmsInteraction'][_0x607a('0x57')]({'where':{'ContactId':_0x53ef11['id'],'closed':![],'SmsAccountId':_0x50a560['id']}})['then'](function(_0x430334){if(_0x430334){return[_0x430334,![]];}return db[_0x607a('0x9e')][_0x607a('0x58')]({'UserId':_0x1cf870[_0x607a('0x5a')]['id'],'ContactId':_0x53ef11['id'],'SmsAccountId':_0x50a560['id'],'phone':_0x1c6fc4,'firstMsgDirection':_0x607a('0xc5'),'Messages':[_[_0x607a('0x4e')](_0x1cf870['body'],{'read':![],'body':_0x1cf870['body']['body'],'phone':_0x1c6fc4,'SmsAccountId':_0x50a560['id'],'UserId':_0x1cf870[_0x607a('0x5a')]['id'],'ContactId':_0x53ef11['id']})]},{'include':[{'model':db[_0x607a('0xa8')],'as':_0x607a('0xc6')}]})[_0x607a('0x20')](function(_0x22c811){return[_0x22c811,!![]];});});}})[_0x607a('0x9f')](function(_0x36641c,_0x3719d9){if(_0x3719d9){return _0x36641c;}return db[_0x607a('0xa8')][_0x607a('0x58')](_[_0x607a('0x4e')](_0x1cf870[_0x607a('0x59')],{'read':![],'body':_0x1cf870['body']['body'],'phone':_0x1c6fc4,'SmsAccountId':_0x50a560['id'],'SmsInteractionId':_0x36641c['id'],'UserId':_0x1cf870['user']['id'],'ContactId':_0x53ef11['id']}))[_0x607a('0x20')](function(_0x2af4d3){_0x36641c[_0x607a('0xc7')]['Messages']=[];_0x36641c['dataValues'][_0x607a('0xc6')][_0x607a('0xa4')](_0x2af4d3[_0x607a('0xc7')]);return _0x36641c;});})['then'](respondWithResult(_0x31f988,null))[_0x607a('0x54')](handleError(_0x31f988,null));};exports[_0x607a('0x27')]=function(_0x41ccab,_0xa45f5e,_0x5551e5){if(_0x41ccab['body']['id']){delete _0x41ccab[_0x607a('0x59')]['id'];}var _0x1b7f40,_0x442c80,_0x51f0b5;return db[_0x607a('0x3b')][_0x607a('0x57')]({'where':{'id':_0x41ccab[_0x607a('0x55')]['id']}})[_0x607a('0x20')](handleEntityNotFound(_0xa45f5e,null))[_0x607a('0x20')](function(_0x1b4748){if(_0x1b4748){_0x51f0b5=_0x1b4748;logger[_0x607a('0xb2')](_0x607a('0xb0'),_0x607a('0x27'),_0x607a('0xc8'),_0x1b4748[_0x607a('0x3d')],util[_0x607a('0xc9')](_0x41ccab[_0x607a('0x59')],{'showHidden':![],'depth':null}));switch(_0x1b4748[_0x607a('0x3d')]){case'skebby':if(_0x41ccab[_0x607a('0x59')][_0x607a('0xca')]&&_0x41ccab[_0x607a('0x59')][_0x607a('0x27')]){_0x442c80=_0x41ccab[_0x607a('0x59')]['status'];return db[_0x607a('0xa8')]['find']({'where':{'messageId':_0x41ccab['body']['skebby_dispatch_id']}});}break;case'connectel':if(_0x41ccab[_0x607a('0x59')][_0x607a('0xcb')]&&_0x41ccab[_0x607a('0x59')][_0x607a('0xcc')]){_0x442c80=_0x41ccab['body'][_0x607a('0xcc')];return db[_0x607a('0xa8')]['find']({'where':{'messageId':_0x41ccab[_0x607a('0x59')][_0x607a('0xcb')]}});}break;case _0x607a('0x80'):if(_0x41ccab[_0x607a('0x59')]['message_id']&&_0x41ccab['body'][_0x607a('0xcd')]){_0x442c80=_0x41ccab[_0x607a('0x59')][_0x607a('0xcd')];return db[_0x607a('0xa8')][_0x607a('0x57')]({'where':{'messageId':_0x41ccab[_0x607a('0x59')][_0x607a('0x81')]}});}break;case'infobip':var _0x4b47a8=_0x41ccab['body'][_0x607a('0x86')][0x0];if(_0x4b47a8['messageId']&&_0x4b47a8['status'][_0x607a('0xce')]===_0x607a('0xcf')){_0x442c80=_0x4b47a8[_0x607a('0x27')]['groupName'];return db[_0x607a('0xa8')][_0x607a('0x57')]({'where':{'messageId':_0x4b47a8[_0x607a('0x7a')]}});}break;case _0x607a('0xd0'):if(_0x41ccab['body'][_0x607a('0x7a')]&&_0x41ccab[_0x607a('0x59')]['status']){_0x442c80=_0x41ccab[_0x607a('0x59')]['status'];return db[_0x607a('0xa8')][_0x607a('0x57')]({'where':{'messageId':_0x41ccab['body'][_0x607a('0x7a')]}});}break;case _0x607a('0x8c'):if(_0x41ccab[_0x607a('0x59')][0x0]['message']['id']){_0x442c80=_0x41ccab[_0x607a('0x59')][0x0][_0x607a('0x3d')];return db[_0x607a('0xa8')][_0x607a('0x57')]({'where':{'messageId':_0x41ccab[_0x607a('0x59')][0x0][_0x607a('0x25')]['id']}});}break;case'intelepeer':if(_0x41ccab['body'][_0x607a('0xd1')]&&_0x41ccab[_0x607a('0x59')][_0x607a('0x27')]){_0x442c80=_0x41ccab[_0x607a('0x59')]['status'];return db[_0x607a('0xa8')][_0x607a('0x57')]({'where':{'messageId':_0x41ccab[_0x607a('0x59')][_0x607a('0xd1')]}});}break;}}})[_0x607a('0x20')](handleEntityNotFound(_0xa45f5e,null))['then'](function(_0x349872){if(_0x349872){_0x1b7f40=_0x349872;switch(_0x51f0b5[_0x607a('0x3d')]){case _0x607a('0x7c'):if(_0x442c80===_0x607a('0xcf')){return _0x1b7f40['update']({'read':!![]});}else{logger[_0x607a('0x24')](_0x607a('0xb0'),'status',_0x607a('0x7c'),util[_0x607a('0xc9')](_0x41ccab[_0x607a('0x59')],{'showHidden':![],'depth':null}));}break;case'connectel':if(_0x442c80==='1'){return _0x1b7f40['update']({'read':!![]});}else{logger[_0x607a('0x24')](_0x607a('0xb0'),_0x607a('0x27'),_0x607a('0x7c'),util[_0x607a('0xc9')](_0x41ccab[_0x607a('0x59')],{'showHidden':![],'depth':null}));}break;case'clicksend':if(!_0x41ccab[_0x607a('0x59')][_0x607a('0xd2')]&&_0x442c80>=0xc8&&_0x442c80<=0xce){return _0x1b7f40[_0x607a('0x31')]({'read':!![]});}else{logger[_0x607a('0x24')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x607a('0x27'),'clicksend',util[_0x607a('0xc9')](_0x41ccab['body'],{'showHidden':![],'depth':null}));}break;case _0x607a('0xd3'):var _0x14ca86=_0x41ccab[_0x607a('0x59')][_0x607a('0x86')][0x0];if(_0x14ca86[_0x607a('0x27')]['groupName']==='DELIVERED'){return _0x1b7f40['update']({'read':!![]});}else{logger['error'](_0x607a('0xb0'),'status',_0x607a('0xd3'),util[_0x607a('0xc9')](_0x41ccab[_0x607a('0x59')],{'showHidden':![],'depth':null}));}break;case _0x607a('0xd0'):if(_0x442c80==_0x607a('0xd4')||_0x442c80=='RECEIVED_BY_RECIPIENT'){return _0x1b7f40[_0x607a('0x31')]({'read':!![]});}else{logger[_0x607a('0x24')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x607a('0x27'),_0x607a('0xd0'),util[_0x607a('0xc9')](_0x41ccab[_0x607a('0x59')],{'showHidden':![],'depth':null}));}break;case _0x607a('0x8c'):if(_0x442c80==_0x607a('0xd5')){return _0x1b7f40['update']({'read':!![]});}else{logger[_0x607a('0x24')]('SmsAccount,\x20%s,\x20%s,\x20%s','status','bandwidth',util[_0x607a('0xc9')](_0x41ccab[_0x607a('0x59')],{'showHidden':![],'depth':null}));}break;case _0x607a('0x8d'):if(_0x442c80===_0x607a('0xd6')||_0x442c80==='ACCEPTD'){return _0x1b7f40[_0x607a('0x31')]({'read':!![]});}else{logger[_0x607a('0x24')](_0x607a('0xb0'),_0x607a('0x27'),_0x607a('0x8d'),util[_0x607a('0xc9')](_0x41ccab['body'],{'showHidden':![],'depth':null}));}break;}return _0x1b7f40;}})[_0x607a('0x20')](respondWithResult(_0xa45f5e,null))[_0x607a('0x54')](handleError(_0xa45f5e,null));};exports[_0x607a('0xd7')]=function(_0x25ca0e,_0x35464d,_0x21570d){var _0x50f6ff,_0x4f5419,_0x4a70f6;return db['SmsAccount']['find']({'where':{'id':_0x25ca0e['params']['id']}})['then'](handleEntityNotFound(_0x35464d,null))['then'](function(_0x444398){if(_0x444398){_0x4a70f6=_0x444398;logger[_0x607a('0xb2')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x607a('0x27'),'received\x20delivery\x20report\x20from',_0x444398[_0x607a('0x3d')],util[_0x607a('0xc9')](_0x25ca0e[_0x607a('0x40')],{'showHidden':![],'depth':null}));switch(_0x444398[_0x607a('0x3d')]){case _0x607a('0x87'):if(_0x25ca0e[_0x607a('0x40')][_0x607a('0xd8')]&&_0x25ca0e['query']['state']){_0x4f5419=_0x25ca0e[_0x607a('0x40')][_0x607a('0xd9')];return db[_0x607a('0xa8')][_0x607a('0x57')]({'where':{'messageId':_0x25ca0e[_0x607a('0x40')][_0x607a('0xd8')]}});}break;}}})[_0x607a('0x20')](handleEntityNotFound(_0x35464d,null))['then'](function(_0x42a831){if(_0x42a831){_0x50f6ff=_0x42a831;switch(_0x4a70f6[_0x607a('0x3d')]){case _0x607a('0x87'):if(_0x4f5419==='2'||_0x4f5419==='6'){return _0x50f6ff[_0x607a('0x31')]({'read':!![]});}else{logger[_0x607a('0x24')](_0x607a('0xb0'),_0x607a('0x27'),_0x607a('0x87'),util[_0x607a('0xc9')](_0x25ca0e['query'],{'showHidden':![],'depth':null}));};break;}return _0x50f6ff;}})['then'](respondWithResult(_0x35464d,null))['catch'](handleError(_0x35464d,null));};exports['addAgents']=function(_0xdf2f76,_0x1c5668,_0x32f01a){return db[_0x607a('0x3b')][_0x607a('0x57')]({'where':{'id':_0xdf2f76[_0x607a('0x55')]['id']}})[_0x607a('0x20')](handleEntityNotFound(_0x1c5668,null))['then'](function(_0x4ae42f){if(_0x4ae42f){return _0x4ae42f[_0x607a('0xda')](_0xdf2f76['body']['ids'],_[_0x607a('0x9b')](_0xdf2f76[_0x607a('0x59')],[_0x607a('0x68'),'id'])||{})['spread'](function(_0x13556f){for(var _0xd048cc=0x0;_0xd048cc<_0xdf2f76['body']['ids']['length'];_0xd048cc+=0x1){socket[_0x607a('0xdb')](_0x607a('0xdc'),{'UserId':Number(_0xdf2f76[_0x607a('0x59')][_0x607a('0x68')][_0xd048cc]),'SmsAccountId':Number(_0xdf2f76[_0x607a('0x55')]['id'])});}return _0x13556f;});}})['then'](respondWithResult(_0x1c5668,null))[_0x607a('0x54')](handleError(_0x1c5668,null));};exports[_0x607a('0xdd')]=function(_0x2bc5dc,_0x1481ae,_0x306c9a){return db['SmsAccount']['find']({'where':{'id':_0x2bc5dc[_0x607a('0x55')]['id']}})[_0x607a('0x20')](handleEntityNotFound(_0x1481ae,null))[_0x607a('0x20')](function(_0x413cf5){if(_0x413cf5){return _0x413cf5[_0x607a('0xdd')](_0x2bc5dc[_0x607a('0x40')][_0x607a('0x68')])[_0x607a('0x20')](function(){if(_[_0x607a('0xde')](_0x2bc5dc[_0x607a('0x40')][_0x607a('0x68')])){for(var _0x4114c9=0x0;_0x4114c9<_0x2bc5dc['query'][_0x607a('0x68')][_0x607a('0x45')];_0x4114c9+=0x1){socket[_0x607a('0xdb')](_0x607a('0xdf'),{'UserId':Number(_0x2bc5dc['query'][_0x607a('0x68')][_0x4114c9]),'SmsAccountId':Number(_0x2bc5dc[_0x607a('0x55')]['id'])});}}else{socket[_0x607a('0xdb')](_0x607a('0xdf'),{'UserId':Number(_0x2bc5dc['query'][_0x607a('0x68')]),'SmsAccountId':Number(_0x2bc5dc[_0x607a('0x55')]['id'])});}});}})[_0x607a('0x20')](respondWithStatusCode(_0x1481ae,null))[_0x607a('0x54')](handleError(_0x1481ae,null));};exports['getAgents']=function(_0x5d6d58,_0x204233,_0x196def){var _0xb3120c={};var _0xe31e8a={};var _0x137b10;var _0x17d6be;return db[_0x607a('0x3b')][_0x607a('0x64')]({'where':{'id':_0x5d6d58['params']['id']}})[_0x607a('0x20')](handleEntityNotFound(_0x204233,null))[_0x607a('0x20')](function(_0x1a94ad){if(_0x1a94ad){_0x137b10=_0x1a94ad;_0xe31e8a[_0x607a('0x3f')]=_['keys'](db[_0x607a('0xaa')][_0x607a('0x66')]);_0xe31e8a[_0x607a('0x40')]=_[_0x607a('0x41')](_0x5d6d58[_0x607a('0x40')]);_0xe31e8a['filters']=_[_0x607a('0x42')](_0xe31e8a['model'],_0xe31e8a[_0x607a('0x40')]);_0xb3120c[_0x607a('0x43')]=_[_0x607a('0x42')](_0xe31e8a[_0x607a('0x3f')],qs[_0x607a('0x44')](_0x5d6d58[_0x607a('0x40')][_0x607a('0x44')]));_0xb3120c[_0x607a('0x43')]=_0xb3120c[_0x607a('0x43')][_0x607a('0x45')]?_0xb3120c['attributes']:_0xe31e8a['model'];_0xb3120c[_0x607a('0x48')]=qs[_0x607a('0x49')](_0x5d6d58[_0x607a('0x40')]['sort']);_0xb3120c['where']=qs[_0x607a('0x4c')](_[_0x607a('0x4b')](_0x5d6d58['query'],_0xe31e8a[_0x607a('0x4c')]));if(_0x5d6d58[_0x607a('0x40')][_0x607a('0x4d')]){_0xb3120c['where']=_[_0x607a('0x4e')](_0xb3120c[_0x607a('0x4a')],{'$or':_['map'](_0xb3120c[_0x607a('0x43')],function(_0x389ab1){var _0x313f1e={};_0x313f1e[_0x389ab1]={'$like':'%'+_0x5d6d58[_0x607a('0x40')][_0x607a('0x4d')]+'%'};return _0x313f1e;})});}_0xb3120c=_[_0x607a('0x4e')]({},_0xb3120c,_0x5d6d58[_0x607a('0x50')]);return _0x137b10[_0x607a('0xe0')](_0xb3120c);}})[_0x607a('0x20')](function(_0x4746ae){if(_0x4746ae){_0x17d6be=_0x4746ae[_0x607a('0x45')];if(!_0x5d6d58[_0x607a('0x40')][_0x607a('0x46')]('nolimit')){_0xb3120c[_0x607a('0x2b')]=qs[_0x607a('0x2b')](_0x5d6d58['query'][_0x607a('0x2b')]);_0xb3120c[_0x607a('0x2a')]=qs[_0x607a('0x2a')](_0x5d6d58[_0x607a('0x40')]['offset']);}return _0x137b10['getAgents'](_0xb3120c);}})[_0x607a('0x20')](function(_0x3814f7){if(_0x3814f7){return _0x3814f7?{'count':_0x17d6be,'rows':_0x3814f7}:null;}})['then'](respondWithResult(_0x204233,null))[_0x607a('0x54')](handleError(_0x204233,null));};
\ No newline at end of file
index 0f46cee..4c9ca0f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe500=['events','../../mysqldb','SmsAccount','setMaxListeners','save','update','remove','emit','hook'];(function(_0x52bbd9,_0x4ef709){var _0x4c42bd=function(_0x199da0){while(--_0x199da0){_0x52bbd9['push'](_0x52bbd9['shift']());}};_0x4c42bd(++_0x4ef709);}(_0xe500,0xcf));var _0x0e50=function(_0x3a93b7,_0x658183){_0x3a93b7=_0x3a93b7-0x0;var _0x2ed891=_0xe500[_0x3a93b7];return _0x2ed891;};'use strict';var EventEmitter=require(_0x0e50('0x0'));var SmsAccount=require(_0x0e50('0x1'))['db'][_0x0e50('0x2')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0x0e50('0x3')](0x0);var events={'afterCreate':_0x0e50('0x4'),'afterUpdate':_0x0e50('0x5'),'afterDestroy':_0x0e50('0x6')};function emitEvent(_0x3a3642){return function(_0x122276,_0x30c996,_0x57d112){SmsAccountEvents[_0x0e50('0x7')](_0x3a3642+':'+_0x122276['id'],_0x122276);SmsAccountEvents['emit'](_0x3a3642,_0x122276);_0x57d112(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsAccount[_0x0e50('0x8')](e,emitEvent(event));}}module['exports']=SmsAccountEvents;
\ No newline at end of file
+var _0xb6ff=['hook','exports','events','SmsAccount','setMaxListeners','save'];(function(_0x565ed7,_0x398228){var _0x183ad7=function(_0x5a43d7){while(--_0x5a43d7){_0x565ed7['push'](_0x565ed7['shift']());}};_0x183ad7(++_0x398228);}(_0xb6ff,0x116));var _0xfb6f=function(_0x4a599b,_0x1d2125){_0x4a599b=_0x4a599b-0x0;var _0x2d53d3=_0xb6ff[_0x4a599b];return _0x2d53d3;};'use strict';var EventEmitter=require(_0xfb6f('0x0'));var SmsAccount=require('../../mysqldb')['db'][_0xfb6f('0x1')];var SmsAccountEvents=new EventEmitter();SmsAccountEvents[_0xfb6f('0x2')](0x0);var events={'afterCreate':_0xfb6f('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x1c7cf0){return function(_0x19c1af,_0x1524b2,_0x5778a8){SmsAccountEvents['emit'](_0x1c7cf0+':'+_0x19c1af['id'],_0x19c1af);SmsAccountEvents['emit'](_0x1c7cf0,_0x19c1af);_0x5778a8(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsAccount[_0xfb6f('0x4')](e,emitEvent(event));}}module[_0xfb6f('0x5')]=SmsAccountEvents;
\ No newline at end of file
index 6a47427..b39d523 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd84e=['moment','request-promise','path','rimraf','../../config/environment','exports','util','../../config/logger','api'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xd84e,0x177));var _0xed84=function(_0x5f0220,_0x42ffb9){_0x5f0220=_0x5f0220-0x0;var _0x197438=_0xd84e[_0x5f0220];return _0x197438;};'use strict';var _=require('lodash');var util=require(_0xed84('0x0'));var logger=require(_0xed84('0x1'))(_0xed84('0x2'));var moment=require(_0xed84('0x3'));var BPromise=require('bluebird');var rp=require(_0xed84('0x4'));var fs=require('fs');var path=require(_0xed84('0x5'));var rimraf=require(_0xed84('0x6'));var config=require(_0xed84('0x7'));var attributes=require('./smsAccount.attributes');module[_0xed84('0x8')]=function(_0x2796c1,_0x25e64b){return _0x2796c1['define']('SmsAccount',attributes,{'tableName':'sms_accounts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x672f=['sms_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','SmsAccount'];(function(_0x420700,_0x322c33){var _0x2e31c6=function(_0x26cbc5){while(--_0x26cbc5){_0x420700['push'](_0x420700['shift']());}};_0x2e31c6(++_0x322c33);}(_0x672f,0x160));var _0xf672=function(_0x2c0a00,_0x3548e4){_0x2c0a00=_0x2c0a00-0x0;var _0x119901=_0x672f[_0x2c0a00];return _0x119901;};'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(_0xf672('0x5'));var rp=require(_0xf672('0x6'));var fs=require('fs');var path=require(_0xf672('0x7'));var rimraf=require(_0xf672('0x8'));var config=require(_0xf672('0x9'));var attributes=require('./smsAccount.attributes');module[_0xf672('0xa')]=function(_0x4f6e42,_0x1dd5ac){return _0x4f6e42['define'](_0xf672('0xb'),attributes,{'tableName':_0xf672('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4f2ee04..2f4dee8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3cc=['error','code','message','info','result','catch','ShowSmsAccount','SmsAccount','find','options','raw','where','attributes','include','map','model','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','jayson/promise','client','http','defaults','redis','./smsAccount.socket','request','then','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x4c5ffd,_0x5c077f){var _0x5fe9d6=function(_0x1ba741){while(--_0x1ba741){_0x4c5ffd['push'](_0x4c5ffd['shift']());}};_0x5fe9d6(++_0x5c077f);}(_0xc3cc,0xe8));var _0xcc3c=function(_0x435150,_0x591cd9){_0x435150=_0x435150-0x0;var _0x13b3a4=_0xc3cc[_0x435150];return _0x13b3a4;};'use strict';var _=require(_0xcc3c('0x0'));var util=require(_0xcc3c('0x1'));var moment=require(_0xcc3c('0x2'));var BPromise=require(_0xcc3c('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xcc3c('0x4'));var db=require(_0xcc3c('0x5'))['db'];var utils=require(_0xcc3c('0x6'));var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0xcc3c('0x7'));var client=jayson[_0xcc3c('0x8')][_0xcc3c('0x9')]({'port':0x232a});config['redis']=_[_0xcc3c('0xa')](config[_0xcc3c('0xb')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xcc3c('0xb')]));require(_0xcc3c('0xc'))['register'](socket);function respondWithRpcPromise(_0x3c806f,_0x9dd067,_0x50bcc3){return new BPromise(function(_0x420ff3,_0x426167){return client[_0xcc3c('0xd')](_0x3c806f,_0x50bcc3)[_0xcc3c('0xe')](function(_0x1777c2){logger['info'](_0xcc3c('0xf'),_0x9dd067,_0xcc3c('0x10'));logger[_0xcc3c('0x11')](_0xcc3c('0x12'),_0x9dd067,'request\x20sent',JSON[_0xcc3c('0x13')](_0x1777c2));if(_0x1777c2[_0xcc3c('0x14')]){if(_0x1777c2[_0xcc3c('0x14')][_0xcc3c('0x15')]===0x1f4){logger['error'](_0xcc3c('0xf'),_0x9dd067,_0x1777c2['error']['message']);return _0x426167(_0x1777c2[_0xcc3c('0x14')]['message']);}logger['error'](_0xcc3c('0xf'),_0x9dd067,_0x1777c2['error'][_0xcc3c('0x16')]);return _0x420ff3(_0x1777c2[_0xcc3c('0x14')][_0xcc3c('0x16')]);}else{logger[_0xcc3c('0x17')](_0xcc3c('0xf'),_0x9dd067,'request\x20sent');_0x420ff3(_0x1777c2[_0xcc3c('0x18')][_0xcc3c('0x16')]);}})[_0xcc3c('0x19')](function(_0x4ddb6c){logger['error']('SmsAccount,\x20%s,\x20%s',_0x9dd067,_0x4ddb6c);_0x426167(_0x4ddb6c);});});}exports[_0xcc3c('0x1a')]=function(_0x2b97ba){var _0x383318=this;return new Promise(function(_0x532603,_0x1eca54){return db[_0xcc3c('0x1b')][_0xcc3c('0x1c')]({'raw':_0x2b97ba[_0xcc3c('0x1d')]?_0x2b97ba['options'][_0xcc3c('0x1e')]===undefined?!![]:![]:!![],'where':_0x2b97ba[_0xcc3c('0x1d')]?_0x2b97ba[_0xcc3c('0x1d')][_0xcc3c('0x1f')]||null:null,'attributes':_0x2b97ba['options']?_0x2b97ba[_0xcc3c('0x1d')][_0xcc3c('0x20')]||null:null,'include':_0x2b97ba['options']?_0x2b97ba[_0xcc3c('0x1d')][_0xcc3c('0x21')]?_[_0xcc3c('0x22')](_0x2b97ba['options'][_0xcc3c('0x21')],function(_0x37696d){return{'model':db[_0x37696d[_0xcc3c('0x23')]],'as':_0x37696d['as'],'attributes':_0x37696d[_0xcc3c('0x20')],'include':_0x37696d['include']?_['map'](_0x37696d[_0xcc3c('0x21')],function(_0x582c61){return{'model':db[_0x582c61[_0xcc3c('0x23')]],'as':_0x582c61['as'],'attributes':_0x582c61['attributes'],'include':_0x582c61[_0xcc3c('0x21')]?_['map'](_0x582c61[_0xcc3c('0x21')],function(_0x533ba6){return{'model':db[_0x533ba6[_0xcc3c('0x23')]],'as':_0x533ba6['as'],'attributes':_0x533ba6[_0xcc3c('0x20')]};}):[]};}):[]};}):[]:[]})[_0xcc3c('0xe')](function(_0x4446f0){logger[_0xcc3c('0x17')](_0xcc3c('0x1a'),_0x2b97ba);logger[_0xcc3c('0x11')](_0xcc3c('0x1a'),_0x2b97ba,JSON[_0xcc3c('0x13')](_0x4446f0));_0x532603(_0x4446f0);})[_0xcc3c('0x19')](function(_0x27e436){logger[_0xcc3c('0x14')](_0xcc3c('0x1a'),_0x27e436[_0xcc3c('0x16')],_0x2b97ba);_0x1eca54(_0x383318['error'](0x1f4,_0x27e436[_0xcc3c('0x16')]));});});};
\ No newline at end of file
+var _0xc595=['options','raw','where','attributes','include','map','model','catch','lodash','util','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','socket.io-emitter','redis','register','request','then','SmsAccount,\x20%s,\x20%s','request\x20sent','debug','SmsAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','ShowSmsAccount','SmsAccount','find'];(function(_0x28d848,_0x4d4787){var _0x2f8800=function(_0x23cae4){while(--_0x23cae4){_0x28d848['push'](_0x28d848['shift']());}};_0x2f8800(++_0x4d4787);}(_0xc595,0x9c));var _0x5c59=function(_0x24365f,_0x577d85){_0x24365f=_0x24365f-0x0;var _0x3c6196=_0xc595[_0x24365f];return _0x3c6196;};'use strict';var _=require(_0x5c59('0x0'));var util=require(_0x5c59('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x5c59('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x5c59('0x3'))['db'];var utils=require(_0x5c59('0x4'));var logger=require(_0x5c59('0x5'))(_0x5c59('0x6'));var config=require(_0x5c59('0x7'));var jayson=require(_0x5c59('0x8'));var client=jayson[_0x5c59('0x9')][_0x5c59('0xa')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x5c59('0xb'))(new Redis(config[_0x5c59('0xc')]));require('./smsAccount.socket')[_0x5c59('0xd')](socket);function respondWithRpcPromise(_0x497d62,_0x25da1d,_0x33b0eb){return new BPromise(function(_0x59312f,_0x293895){return client[_0x5c59('0xe')](_0x497d62,_0x33b0eb)[_0x5c59('0xf')](function(_0xb26d49){logger['info'](_0x5c59('0x10'),_0x25da1d,_0x5c59('0x11'));logger[_0x5c59('0x12')](_0x5c59('0x13'),_0x25da1d,'request\x20sent',JSON[_0x5c59('0x14')](_0xb26d49));if(_0xb26d49[_0x5c59('0x15')]){if(_0xb26d49[_0x5c59('0x15')][_0x5c59('0x16')]===0x1f4){logger[_0x5c59('0x15')](_0x5c59('0x10'),_0x25da1d,_0xb26d49['error']['message']);return _0x293895(_0xb26d49[_0x5c59('0x15')]['message']);}logger[_0x5c59('0x15')](_0x5c59('0x10'),_0x25da1d,_0xb26d49['error'][_0x5c59('0x17')]);return _0x59312f(_0xb26d49[_0x5c59('0x15')][_0x5c59('0x17')]);}else{logger[_0x5c59('0x18')](_0x5c59('0x10'),_0x25da1d,_0x5c59('0x11'));_0x59312f(_0xb26d49[_0x5c59('0x19')][_0x5c59('0x17')]);}})['catch'](function(_0x5ea4cc){logger[_0x5c59('0x15')](_0x5c59('0x10'),_0x25da1d,_0x5ea4cc);_0x293895(_0x5ea4cc);});});}exports[_0x5c59('0x1a')]=function(_0x50c3c1){var _0xe413d2=this;return new Promise(function(_0x40155e,_0x5d8938){return db[_0x5c59('0x1b')][_0x5c59('0x1c')]({'raw':_0x50c3c1[_0x5c59('0x1d')]?_0x50c3c1[_0x5c59('0x1d')][_0x5c59('0x1e')]===undefined?!![]:![]:!![],'where':_0x50c3c1[_0x5c59('0x1d')]?_0x50c3c1[_0x5c59('0x1d')][_0x5c59('0x1f')]||null:null,'attributes':_0x50c3c1[_0x5c59('0x1d')]?_0x50c3c1[_0x5c59('0x1d')][_0x5c59('0x20')]||null:null,'include':_0x50c3c1[_0x5c59('0x1d')]?_0x50c3c1[_0x5c59('0x1d')][_0x5c59('0x21')]?_[_0x5c59('0x22')](_0x50c3c1[_0x5c59('0x1d')]['include'],function(_0x2d533a){return{'model':db[_0x2d533a['model']],'as':_0x2d533a['as'],'attributes':_0x2d533a[_0x5c59('0x20')],'include':_0x2d533a[_0x5c59('0x21')]?_[_0x5c59('0x22')](_0x2d533a[_0x5c59('0x21')],function(_0x55180d){return{'model':db[_0x55180d[_0x5c59('0x23')]],'as':_0x55180d['as'],'attributes':_0x55180d[_0x5c59('0x20')],'include':_0x55180d[_0x5c59('0x21')]?_[_0x5c59('0x22')](_0x55180d[_0x5c59('0x21')],function(_0x2619e2){return{'model':db[_0x2619e2['model']],'as':_0x2619e2['as'],'attributes':_0x2619e2[_0x5c59('0x20')]};}):[]};}):[]};}):[]:[]})[_0x5c59('0xf')](function(_0x3116c9){logger['info'](_0x5c59('0x1a'),_0x50c3c1);logger[_0x5c59('0x12')]('ShowSmsAccount',_0x50c3c1,JSON[_0x5c59('0x14')](_0x3116c9));_0x40155e(_0x3116c9);})[_0x5c59('0x24')](function(_0x3bc501){logger[_0x5c59('0x15')](_0x5c59('0x1a'),_0x3bc501[_0x5c59('0x17')],_0x50c3c1);_0x5d8938(_0xe413d2['error'](0x1f4,_0x3bc501['message']));});});};
\ No newline at end of file
index bbcd405..8d4c5f4 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(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3b5250,_0x7a0b2c){_0x3b5250=_0x3b5250-0x0;var _0xc844a1=_0xa9e0[_0x3b5250];return _0xc844a1;};'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(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2f3848,_0x48564d){_0x2f3848=_0x2f3848-0x0;var _0x102668=_0xa9e0[_0x2f3848];return _0x102668;};'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 9838a32..c02f9e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['post','create','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsApplication.controller','get','isAuthenticated','index','/:id','show'];(function(_0x393e23,_0x56bc13){var _0x43079d=function(_0x1791eb){while(--_0x1791eb){_0x393e23['push'](_0x393e23['shift']());}};_0x43079d(++_0x56bc13);}(_0xedd9,0xfc));var _0x9edd=function(_0x44ddd4,_0x49f6d4){_0x44ddd4=_0x44ddd4-0x0;var _0x258882=_0xedd9[_0x44ddd4];return _0x258882;};'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');var controller=require(_0x9edd('0x8'));router[_0x9edd('0x9')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xb')]);router['get'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0xd')]);router[_0x9edd('0xe')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xf')]);router['put'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0x10')]);router[_0x9edd('0x11')]('/:id',auth[_0x9edd('0xa')](),controller[_0x9edd('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0xedd9=['post','create','update','delete','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./smsApplication.controller','get','isAuthenticated','index','/:id','show'];(function(_0x399277,_0x566d69){var _0x260358=function(_0x41e398){while(--_0x41e398){_0x399277['push'](_0x399277['shift']());}};_0x260358(++_0x566d69);}(_0xedd9,0xfc));var _0x9edd=function(_0x5e4759,_0x1f8793){_0x5e4759=_0x5e4759-0x0;var _0x1aefe3=_0xedd9[_0x5e4759];return _0x1aefe3;};'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');var controller=require(_0x9edd('0x8'));router[_0x9edd('0x9')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xb')]);router['get'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0xd')]);router[_0x9edd('0xe')]('/',auth[_0x9edd('0xa')](),controller[_0x9edd('0xf')]);router['put'](_0x9edd('0xc'),auth['isAuthenticated'](),controller[_0x9edd('0x10')]);router[_0x9edd('0x11')]('/:id',auth[_0x9edd('0xa')](),controller[_0x9edd('0x12')]);module['exports']=router;
\ No newline at end of file
index 51fbafb..c2c83bf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd09=['*,*,*,*','sequelize','exports','INTEGER','STRING'];(function(_0x4fbe76,_0x1b7645){var _0x72a29b=function(_0x293702){while(--_0x293702){_0x4fbe76['push'](_0x4fbe76['shift']());}};_0x72a29b(++_0x1b7645);}(_0xbd09,0x1b9));var _0x9bd0=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0xbd09[_0x501510];return _0x1e6ee5;};'use strict';var Sequelize=require(_0x9bd0('0x0'));module[_0x9bd0('0x1')]={'priority':{'type':Sequelize[_0x9bd0('0x2')],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'noop'},'appdata':{'type':Sequelize['TEXT']()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x9bd0('0x3')],'defaultValue':_0x9bd0('0x4')}};
\ No newline at end of file
+var _0x1427=['sequelize','exports','INTEGER','STRING','noop','TEXT','*,*,*,*'];(function(_0x55a902,_0x4743bc){var _0x310b0e=function(_0x49f161){while(--_0x49f161){_0x55a902['push'](_0x55a902['shift']());}};_0x310b0e(++_0x4743bc);}(_0x1427,0x1d5));var _0x7142=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x1427[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x7142('0x0'));module[_0x7142('0x1')]={'priority':{'type':Sequelize[_0x7142('0x2')],'allowNull':![]},'app':{'type':Sequelize[_0x7142('0x3')],'allowNull':![],'defaultValue':_0x7142('0x4')},'appdata':{'type':Sequelize[_0x7142('0x5')]()},'description':{'type':Sequelize[_0x7142('0x3')]},'interval':{'type':Sequelize['STRING'],'defaultValue':_0x7142('0x6')}};
\ No newline at end of file
index 20aef23..8cedf77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc71f=['desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','reject','save','update','then','stack','name','send','index','SmsApplication','fieldName','key','model','map','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','type','VIRTUAL','merge','options','includeAll','include','rows','catch','show','create','find','params','destroy','eml-format','rimraf','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','jsforce'];(function(_0x2d036d,_0x52448a){var _0x553f9e=function(_0x2b40d4){while(--_0x2b40d4){_0x2d036d['push'](_0x2d036d['shift']());}};_0x553f9e(++_0x52448a);}(_0xc71f,0x156));var _0xfc71=function(_0x52ddc8,_0xada5d6){_0x52ddc8=_0x52ddc8-0x0;var _0x41e9c3=_0xc71f[_0x52ddc8];return _0x41e9c3;};'use strict';var emlformat=require(_0xfc71('0x0'));var rimraf=require(_0xfc71('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xfc71('0x2'));var moment=require(_0xfc71('0x3'));var BPromise=require(_0xfc71('0x4'));var Mustache=require(_0xfc71('0x5'));var util=require(_0xfc71('0x6'));var path=require(_0xfc71('0x7'));var sox=require('sox');var csv=require(_0xfc71('0x8'));var ejs=require(_0xfc71('0x9'));var fs=require('fs');var fs_extra=require(_0xfc71('0xa'));var _=require(_0xfc71('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xfc71('0xc'));var deskjs=require(_0xfc71('0xd'));var toCsv=require(_0xfc71('0x8'));var querystring=require(_0xfc71('0xe'));var Papa=require(_0xfc71('0xf'));var Redis=require(_0xfc71('0x10'));var authService=require(_0xfc71('0x11'));var qs=require(_0xfc71('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfc71('0x13'));var logger=require(_0xfc71('0x14'))(_0xfc71('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0xfc71('0x16'))['db'];function respondWithStatusCode(_0x4ee295,_0x368cbe){_0x368cbe=_0x368cbe||0xcc;return function(_0xcc074d){if(_0xcc074d){return _0x4ee295[_0xfc71('0x17')](_0x368cbe);}return _0x4ee295[_0xfc71('0x18')](_0x368cbe)[_0xfc71('0x19')]();};}function respondWithResult(_0x32787a,_0x344c9b){_0x344c9b=_0x344c9b||0xc8;return function(_0x4049f5){if(_0x4049f5){return _0x32787a[_0xfc71('0x18')](_0x344c9b)[_0xfc71('0x1a')](_0x4049f5);}};}function respondWithFilteredResult(_0x13b879,_0x561e66){return function(_0x130d7a){if(_0x130d7a){var _0xfaaeb3=typeof _0x561e66[_0xfc71('0x1b')]===_0xfc71('0x1c')&&typeof _0x561e66[_0xfc71('0x1d')]===_0xfc71('0x1c');var _0x79a36=_0x130d7a[_0xfc71('0x1e')];var _0xa8beb4=_0xfaaeb3?0x0:_0x561e66['offset'];var _0x5b5e4a=_0xfaaeb3?_0x130d7a['count']:_0x561e66[_0xfc71('0x1b')]+_0x561e66[_0xfc71('0x1d')];var _0x1774bd;if(_0x5b5e4a>=_0x79a36){_0x5b5e4a=_0x79a36;_0x1774bd=0xc8;}else{_0x1774bd=0xce;}_0x13b879[_0xfc71('0x18')](_0x1774bd);return _0x13b879['set'](_0xfc71('0x1f'),_0xa8beb4+'-'+_0x5b5e4a+'/'+_0x79a36)[_0xfc71('0x1a')](_0x130d7a);}return null;};}function patchUpdates(_0x44508e){return function(_0x1557a2){try{jsonpatch['apply'](_0x1557a2,_0x44508e,!![]);}catch(_0x1fa023){return BPromise[_0xfc71('0x20')](_0x1fa023);}return _0x1557a2[_0xfc71('0x21')]();};}function saveUpdates(_0x36f0ec,_0x476fd9){return function(_0x3a9bb3){if(_0x3a9bb3){return _0x3a9bb3[_0xfc71('0x22')](_0x36f0ec)[_0xfc71('0x23')](function(_0x238031){return _0x238031;});}return null;};}function removeEntity(_0x52126b,_0x38f665){return function(_0x1b888e){if(_0x1b888e){return _0x1b888e['destroy']()['then'](function(){_0x52126b[_0xfc71('0x18')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1d3dae,_0x2e9de6){return function(_0x207fac){if(!_0x207fac){_0x1d3dae[_0xfc71('0x17')](0x194);}return _0x207fac;};}function handleError(_0x2d9fc2,_0x2c153c){_0x2c153c=_0x2c153c||0x1f4;return function(_0x380aa3){logger['error'](_0x380aa3[_0xfc71('0x24')]);if(_0x380aa3['name']){delete _0x380aa3[_0xfc71('0x25')];}_0x2d9fc2[_0xfc71('0x18')](_0x2c153c)[_0xfc71('0x26')](_0x380aa3);};}exports[_0xfc71('0x27')]=function(_0x59e2e9,_0x3f4a5b){var _0x14c011={},_0x1730d6={},_0x4cf926={'count':0x0,'rows':[]};var _0x41bf4d=_['map'](db[_0xfc71('0x28')]['rawAttributes'],function(_0xc1241d){return{'name':_0xc1241d[_0xfc71('0x29')],'type':_0xc1241d['type'][_0xfc71('0x2a')]};});_0x1730d6[_0xfc71('0x2b')]=_[_0xfc71('0x2c')](_0x41bf4d,_0xfc71('0x25'));_0x1730d6[_0xfc71('0x2d')]=_[_0xfc71('0x2e')](_0x59e2e9[_0xfc71('0x2d')]);_0x1730d6[_0xfc71('0x2f')]=_[_0xfc71('0x30')](_0x1730d6[_0xfc71('0x2b')],_0x1730d6[_0xfc71('0x2d')]);_0x14c011[_0xfc71('0x31')]=_[_0xfc71('0x30')](_0x1730d6['model'],qs[_0xfc71('0x32')](_0x59e2e9['query'][_0xfc71('0x32')]));_0x14c011['attributes']=_0x14c011[_0xfc71('0x31')][_0xfc71('0x33')]?_0x14c011[_0xfc71('0x31')]:_0x1730d6['model'];if(!_0x59e2e9['query']['hasOwnProperty'](_0xfc71('0x34'))){_0x14c011[_0xfc71('0x1d')]=qs['limit'](_0x59e2e9[_0xfc71('0x2d')]['limit']);_0x14c011['offset']=qs[_0xfc71('0x1b')](_0x59e2e9[_0xfc71('0x2d')][_0xfc71('0x1b')]);}_0x14c011[_0xfc71('0x35')]=qs[_0xfc71('0x36')](_0x59e2e9['query'][_0xfc71('0x36')]);_0x14c011[_0xfc71('0x37')]=qs[_0xfc71('0x2f')](_[_0xfc71('0x38')](_0x59e2e9['query'],_0x1730d6[_0xfc71('0x2f')]),_0x41bf4d);if(_0x59e2e9[_0xfc71('0x2d')][_0xfc71('0x39')]){_0x14c011[_0xfc71('0x37')]=_['merge'](_0x14c011[_0xfc71('0x37')],{'$or':_[_0xfc71('0x2c')](_0x41bf4d,function(_0x31e8d1){if(_0x31e8d1[_0xfc71('0x3a')]!==_0xfc71('0x3b')){var _0x50ba53={};_0x50ba53[_0x31e8d1[_0xfc71('0x25')]]={'$like':'%'+_0x59e2e9[_0xfc71('0x2d')][_0xfc71('0x39')]+'%'};return _0x50ba53;}})});}_0x14c011=_[_0xfc71('0x3c')]({},_0x14c011,_0x59e2e9[_0xfc71('0x3d')]);var _0x4dcff9={'where':_0x14c011[_0xfc71('0x37')]};return db[_0xfc71('0x28')]['count'](_0x4dcff9)[_0xfc71('0x23')](function(_0x48a351){_0x4cf926[_0xfc71('0x1e')]=_0x48a351;if(_0x59e2e9[_0xfc71('0x2d')][_0xfc71('0x3e')]){_0x14c011[_0xfc71('0x3f')]=[{'all':!![]}];}return db['SmsApplication']['findAll'](_0x14c011);})[_0xfc71('0x23')](function(_0x32af80){_0x4cf926[_0xfc71('0x40')]=_0x32af80;return _0x4cf926;})[_0xfc71('0x23')](respondWithFilteredResult(_0x3f4a5b,_0x14c011))[_0xfc71('0x41')](handleError(_0x3f4a5b,null));};exports[_0xfc71('0x42')]=function(_0x4b14a6,_0x5154ba){var _0xae2e43={'raw':!![],'where':{'id':_0x4b14a6['params']['id']}},_0x540040={};_0x540040[_0xfc71('0x2b')]=_[_0xfc71('0x2e')](db['SmsApplication']['rawAttributes']);_0x540040['query']=_[_0xfc71('0x2e')](_0x4b14a6[_0xfc71('0x2d')]);_0x540040['filters']=_[_0xfc71('0x30')](_0x540040[_0xfc71('0x2b')],_0x540040[_0xfc71('0x2d')]);_0xae2e43[_0xfc71('0x31')]=_[_0xfc71('0x30')](_0x540040['model'],qs[_0xfc71('0x32')](_0x4b14a6[_0xfc71('0x2d')][_0xfc71('0x32')]));_0xae2e43[_0xfc71('0x31')]=_0xae2e43['attributes'][_0xfc71('0x33')]?_0xae2e43['attributes']:_0x540040[_0xfc71('0x2b')];if(_0x4b14a6[_0xfc71('0x2d')][_0xfc71('0x3e')]){_0xae2e43[_0xfc71('0x3f')]=[{'all':!![]}];}_0xae2e43=_[_0xfc71('0x3c')]({},_0xae2e43,_0x4b14a6[_0xfc71('0x3d')]);return db[_0xfc71('0x28')]['find'](_0xae2e43)[_0xfc71('0x23')](handleEntityNotFound(_0x5154ba,null))[_0xfc71('0x23')](respondWithResult(_0x5154ba,null))[_0xfc71('0x41')](handleError(_0x5154ba,null));};exports[_0xfc71('0x43')]=function(_0x273895,_0x5c93b0){return db[_0xfc71('0x28')][_0xfc71('0x43')](_0x273895['body'],{})[_0xfc71('0x23')](respondWithResult(_0x5c93b0,0xc9))[_0xfc71('0x41')](handleError(_0x5c93b0,null));};exports[_0xfc71('0x22')]=function(_0x55bc68,_0x3e5c13){if(_0x55bc68['body']['id']){delete _0x55bc68['body']['id'];}return db[_0xfc71('0x28')][_0xfc71('0x44')]({'where':{'id':_0x55bc68[_0xfc71('0x45')]['id']}})[_0xfc71('0x23')](handleEntityNotFound(_0x3e5c13,null))[_0xfc71('0x23')](saveUpdates(_0x55bc68['body'],null))['then'](respondWithResult(_0x3e5c13,null))['catch'](handleError(_0x3e5c13,null));};exports[_0xfc71('0x46')]=function(_0x24cd19,_0x2a3921){return db[_0xfc71('0x28')][_0xfc71('0x44')]({'where':{'id':_0x24cd19['params']['id']}})['then'](handleEntityNotFound(_0x2a3921,null))[_0xfc71('0x23')](removeEntity(_0x2a3921,null))[_0xfc71('0x41')](handleError(_0x2a3921,null));};
\ No newline at end of file
+var _0x6fe0=['count','set','Content-Range','destroy','then','stack','name','send','index','map','SmsApplication','rawAttributes','key','keys','query','filters','model','attributes','intersection','fields','length','nolimit','sort','where','pick','filter','merge','type','options','includeAll','include','findAll','catch','params','find','create','update','body','eml-format','fast-json-patch','moment','mustache','util','to-csv','lodash','squel','crypto','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit'];(function(_0x3718b7,_0x2da677){var _0xf8c91e=function(_0x2519b4){while(--_0x2519b4){_0x3718b7['push'](_0x3718b7['shift']());}};_0xf8c91e(++_0x2da677);}(_0x6fe0,0x1a0));var _0x06fe=function(_0x31b5a5,_0x44376a){_0x31b5a5=_0x31b5a5-0x0;var _0x364cc9=_0x6fe0[_0x31b5a5];return _0x364cc9;};'use strict';var emlformat=require(_0x06fe('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x06fe('0x1'));var rp=require('request-promise');var moment=require(_0x06fe('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x06fe('0x3'));var util=require(_0x06fe('0x4'));var path=require('path');var sox=require('sox');var csv=require(_0x06fe('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x06fe('0x6'));var squel=require(_0x06fe('0x7'));var crypto=require(_0x06fe('0x8'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x06fe('0x9'));var Papa=require('papaparse');var Redis=require(_0x06fe('0xa'));var authService=require(_0x06fe('0xb'));var qs=require('../../components/parsers/qs');var as=require(_0x06fe('0xc'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x06fe('0xd'))(_0x06fe('0xe'));var utils=require(_0x06fe('0xf'));var config=require(_0x06fe('0x10'));var licenseUtil=require(_0x06fe('0x11'));var db=require(_0x06fe('0x12'))['db'];function respondWithStatusCode(_0x46977f,_0x1afd30){_0x1afd30=_0x1afd30||0xcc;return function(_0x3a270f){if(_0x3a270f){return _0x46977f[_0x06fe('0x13')](_0x1afd30);}return _0x46977f[_0x06fe('0x14')](_0x1afd30)[_0x06fe('0x15')]();};}function respondWithResult(_0x3186a9,_0x4c55d){_0x4c55d=_0x4c55d||0xc8;return function(_0x6b5e9e){if(_0x6b5e9e){return _0x3186a9['status'](_0x4c55d)['json'](_0x6b5e9e);}};}function respondWithFilteredResult(_0xceea09,_0x5365ae){return function(_0x5a5b1b){if(_0x5a5b1b){var _0xc4e474=typeof _0x5365ae[_0x06fe('0x16')]===_0x06fe('0x17')&&typeof _0x5365ae[_0x06fe('0x18')]==='undefined';var _0x3a255a=_0x5a5b1b[_0x06fe('0x19')];var _0x5dacfe=_0xc4e474?0x0:_0x5365ae[_0x06fe('0x16')];var _0x350f9b=_0xc4e474?_0x5a5b1b[_0x06fe('0x19')]:_0x5365ae['offset']+_0x5365ae[_0x06fe('0x18')];var _0x317ccb;if(_0x350f9b>=_0x3a255a){_0x350f9b=_0x3a255a;_0x317ccb=0xc8;}else{_0x317ccb=0xce;}_0xceea09[_0x06fe('0x14')](_0x317ccb);return _0xceea09[_0x06fe('0x1a')](_0x06fe('0x1b'),_0x5dacfe+'-'+_0x350f9b+'/'+_0x3a255a)['json'](_0x5a5b1b);}return null;};}function patchUpdates(_0x25a434){return function(_0x356f6c){try{jsonpatch['apply'](_0x356f6c,_0x25a434,!![]);}catch(_0x3f5b31){return BPromise['reject'](_0x3f5b31);}return _0x356f6c['save']();};}function saveUpdates(_0x42a395,_0x4d19f6){return function(_0xe61f8e){if(_0xe61f8e){return _0xe61f8e['update'](_0x42a395)['then'](function(_0x195b28){return _0x195b28;});}return null;};}function removeEntity(_0x2a9943,_0x5cd7b0){return function(_0x42f906){if(_0x42f906){return _0x42f906[_0x06fe('0x1c')]()[_0x06fe('0x1d')](function(){_0x2a9943[_0x06fe('0x14')](0xcc)[_0x06fe('0x15')]();});}};}function handleEntityNotFound(_0x25ca2d,_0x3ba8f8){return function(_0x15a696){if(!_0x15a696){_0x25ca2d[_0x06fe('0x13')](0x194);}return _0x15a696;};}function handleError(_0x145949,_0xe0035a){_0xe0035a=_0xe0035a||0x1f4;return function(_0xb6d688){logger['error'](_0xb6d688[_0x06fe('0x1e')]);if(_0xb6d688[_0x06fe('0x1f')]){delete _0xb6d688[_0x06fe('0x1f')];}_0x145949[_0x06fe('0x14')](_0xe0035a)[_0x06fe('0x20')](_0xb6d688);};}exports[_0x06fe('0x21')]=function(_0x52ce91,_0x2c0912){var _0x15f5c9={},_0x20aba2={},_0x3c3d46={'count':0x0,'rows':[]};var _0x347517=_[_0x06fe('0x22')](db[_0x06fe('0x23')][_0x06fe('0x24')],function(_0x3de439){return{'name':_0x3de439['fieldName'],'type':_0x3de439['type'][_0x06fe('0x25')]};});_0x20aba2['model']=_[_0x06fe('0x22')](_0x347517,_0x06fe('0x1f'));_0x20aba2['query']=_[_0x06fe('0x26')](_0x52ce91[_0x06fe('0x27')]);_0x20aba2[_0x06fe('0x28')]=_['intersection'](_0x20aba2[_0x06fe('0x29')],_0x20aba2['query']);_0x15f5c9[_0x06fe('0x2a')]=_[_0x06fe('0x2b')](_0x20aba2[_0x06fe('0x29')],qs[_0x06fe('0x2c')](_0x52ce91[_0x06fe('0x27')][_0x06fe('0x2c')]));_0x15f5c9[_0x06fe('0x2a')]=_0x15f5c9['attributes'][_0x06fe('0x2d')]?_0x15f5c9[_0x06fe('0x2a')]:_0x20aba2[_0x06fe('0x29')];if(!_0x52ce91[_0x06fe('0x27')]['hasOwnProperty'](_0x06fe('0x2e'))){_0x15f5c9[_0x06fe('0x18')]=qs[_0x06fe('0x18')](_0x52ce91[_0x06fe('0x27')][_0x06fe('0x18')]);_0x15f5c9[_0x06fe('0x16')]=qs[_0x06fe('0x16')](_0x52ce91['query']['offset']);}_0x15f5c9['order']=qs[_0x06fe('0x2f')](_0x52ce91['query'][_0x06fe('0x2f')]);_0x15f5c9[_0x06fe('0x30')]=qs[_0x06fe('0x28')](_[_0x06fe('0x31')](_0x52ce91[_0x06fe('0x27')],_0x20aba2[_0x06fe('0x28')]),_0x347517);if(_0x52ce91[_0x06fe('0x27')][_0x06fe('0x32')]){_0x15f5c9[_0x06fe('0x30')]=_[_0x06fe('0x33')](_0x15f5c9['where'],{'$or':_[_0x06fe('0x22')](_0x347517,function(_0x1d5fa1){if(_0x1d5fa1[_0x06fe('0x34')]!=='VIRTUAL'){var _0xfe6a7f={};_0xfe6a7f[_0x1d5fa1[_0x06fe('0x1f')]]={'$like':'%'+_0x52ce91[_0x06fe('0x27')][_0x06fe('0x32')]+'%'};return _0xfe6a7f;}})});}_0x15f5c9=_[_0x06fe('0x33')]({},_0x15f5c9,_0x52ce91[_0x06fe('0x35')]);var _0x11dfb1={'where':_0x15f5c9['where']};return db[_0x06fe('0x23')][_0x06fe('0x19')](_0x11dfb1)['then'](function(_0x3d296a){_0x3c3d46[_0x06fe('0x19')]=_0x3d296a;if(_0x52ce91[_0x06fe('0x27')][_0x06fe('0x36')]){_0x15f5c9[_0x06fe('0x37')]=[{'all':!![]}];}return db['SmsApplication'][_0x06fe('0x38')](_0x15f5c9);})[_0x06fe('0x1d')](function(_0x485eee){_0x3c3d46['rows']=_0x485eee;return _0x3c3d46;})['then'](respondWithFilteredResult(_0x2c0912,_0x15f5c9))[_0x06fe('0x39')](handleError(_0x2c0912,null));};exports['show']=function(_0x4adc30,_0x57c91e){var _0x302217={'raw':!![],'where':{'id':_0x4adc30[_0x06fe('0x3a')]['id']}},_0x3b4908={};_0x3b4908[_0x06fe('0x29')]=_[_0x06fe('0x26')](db['SmsApplication'][_0x06fe('0x24')]);_0x3b4908[_0x06fe('0x27')]=_[_0x06fe('0x26')](_0x4adc30[_0x06fe('0x27')]);_0x3b4908['filters']=_['intersection'](_0x3b4908[_0x06fe('0x29')],_0x3b4908[_0x06fe('0x27')]);_0x302217['attributes']=_[_0x06fe('0x2b')](_0x3b4908[_0x06fe('0x29')],qs[_0x06fe('0x2c')](_0x4adc30['query'][_0x06fe('0x2c')]));_0x302217['attributes']=_0x302217[_0x06fe('0x2a')]['length']?_0x302217[_0x06fe('0x2a')]:_0x3b4908[_0x06fe('0x29')];if(_0x4adc30[_0x06fe('0x27')]['includeAll']){_0x302217[_0x06fe('0x37')]=[{'all':!![]}];}_0x302217=_[_0x06fe('0x33')]({},_0x302217,_0x4adc30['options']);return db[_0x06fe('0x23')][_0x06fe('0x3b')](_0x302217)['then'](handleEntityNotFound(_0x57c91e,null))[_0x06fe('0x1d')](respondWithResult(_0x57c91e,null))[_0x06fe('0x39')](handleError(_0x57c91e,null));};exports[_0x06fe('0x3c')]=function(_0x18d41a,_0x3a4474){return db[_0x06fe('0x23')][_0x06fe('0x3c')](_0x18d41a['body'],{})[_0x06fe('0x1d')](respondWithResult(_0x3a4474,0xc9))[_0x06fe('0x39')](handleError(_0x3a4474,null));};exports[_0x06fe('0x3d')]=function(_0x50c87a,_0x1742a7){if(_0x50c87a[_0x06fe('0x3e')]['id']){delete _0x50c87a[_0x06fe('0x3e')]['id'];}return db[_0x06fe('0x23')][_0x06fe('0x3b')]({'where':{'id':_0x50c87a['params']['id']}})[_0x06fe('0x1d')](handleEntityNotFound(_0x1742a7,null))[_0x06fe('0x1d')](saveUpdates(_0x50c87a[_0x06fe('0x3e')],null))[_0x06fe('0x1d')](respondWithResult(_0x1742a7,null))[_0x06fe('0x39')](handleError(_0x1742a7,null));};exports['destroy']=function(_0x27fe6b,_0x26be52){return db[_0x06fe('0x23')][_0x06fe('0x3b')]({'where':{'id':_0x27fe6b[_0x06fe('0x3a')]['id']}})[_0x06fe('0x1d')](handleEntityNotFound(_0x26be52,null))[_0x06fe('0x1d')](removeEntity(_0x26be52,null))['catch'](handleError(_0x26be52,null));};
\ No newline at end of file
index fc58894..6b626f0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x714b=['path','./smsApplication.attributes','define','SmsApplication','sms_applications','utf8mb4_unicode_ci','util','../../config/logger','api','moment','bluebird'];(function(_0x1e3c16,_0x372caa){var _0x47a0c9=function(_0x47f81d){while(--_0x47f81d){_0x1e3c16['push'](_0x1e3c16['shift']());}};_0x47a0c9(++_0x372caa);}(_0x714b,0xed));var _0xb714=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x714b[_0x397e5f];return _0x5302b8;};'use strict';var _=require('lodash');var util=require(_0xb714('0x0'));var logger=require(_0xb714('0x1'))(_0xb714('0x2'));var moment=require(_0xb714('0x3'));var BPromise=require(_0xb714('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xb714('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xb714('0x6'));module['exports']=function(_0x2d157e,_0x5c6968){return _0x2d157e[_0xb714('0x7')](_0xb714('0x8'),attributes,{'tableName':_0xb714('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':'utf8mb4','collate':_0xb714('0xa')});};
\ No newline at end of file
+var _0x20c0=['moment','bluebird','request-promise','../../config/environment','./smsApplication.attributes','exports','SmsApplication','sms_applications','utf8mb4','util','../../config/logger'];(function(_0x4f800c,_0x2a0201){var _0x5dae90=function(_0x40b815){while(--_0x40b815){_0x4f800c['push'](_0x4f800c['shift']());}};_0x5dae90(++_0x2a0201);}(_0x20c0,0x13d));var _0x020c=function(_0x56685c,_0x1016e6){_0x56685c=_0x56685c-0x0;var _0x24835a=_0x20c0[_0x56685c];return _0x24835a;};'use strict';var _=require('lodash');var util=require(_0x020c('0x0'));var logger=require(_0x020c('0x1'))('api');var moment=require(_0x020c('0x2'));var BPromise=require(_0x020c('0x3'));var rp=require(_0x020c('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x020c('0x5'));var attributes=require(_0x020c('0x6'));module[_0x020c('0x7')]=function(_0x4769f7,_0x4798d4){return _0x4769f7['define'](_0x020c('0x8'),attributes,{'tableName':_0x020c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x020c('0xa'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
index 15fed20..f92df43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6888=['../../config/utils','../../config/environment','jayson/promise','client','http','request','then','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','SmsApplication,\x20%s,\x20%s','info','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x247fab,_0x6d661){var _0x538c4d=function(_0x3efe0b){while(--_0x3efe0b){_0x247fab['push'](_0x247fab['shift']());}};_0x538c4d(++_0x6d661);}(_0x6888,0xd2));var _0x8688=function(_0xdea41a,_0x552987){_0xdea41a=_0xdea41a-0x0;var _0x15d0d8=_0x6888[_0xdea41a];return _0x15d0d8;};'use strict';var _=require(_0x8688('0x0'));var util=require('util');var moment=require(_0x8688('0x1'));var BPromise=require(_0x8688('0x2'));var rs=require(_0x8688('0x3'));var fs=require('fs');var Redis=require(_0x8688('0x4'));var db=require(_0x8688('0x5'))['db'];var utils=require(_0x8688('0x6'));var logger=require('../../config/logger')('rpc');var config=require(_0x8688('0x7'));var jayson=require(_0x8688('0x8'));var client=jayson[_0x8688('0x9')][_0x8688('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xfa1a28,_0xcc92be,_0x5860a8){return new BPromise(function(_0x457991,_0x15f2b9){return client[_0x8688('0xb')](_0xfa1a28,_0x5860a8)[_0x8688('0xc')](function(_0x18723c){logger['info']('SmsApplication,\x20%s,\x20%s',_0xcc92be,_0x8688('0xd'));logger[_0x8688('0xe')](_0x8688('0xf'),_0xcc92be,_0x8688('0xd'),JSON[_0x8688('0x10')](_0x18723c));if(_0x18723c[_0x8688('0x11')]){if(_0x18723c[_0x8688('0x11')][_0x8688('0x12')]===0x1f4){logger[_0x8688('0x11')]('SmsApplication,\x20%s,\x20%s',_0xcc92be,_0x18723c[_0x8688('0x11')][_0x8688('0x13')]);return _0x15f2b9(_0x18723c[_0x8688('0x11')][_0x8688('0x13')]);}logger[_0x8688('0x11')](_0x8688('0x14'),_0xcc92be,_0x18723c[_0x8688('0x11')][_0x8688('0x13')]);return _0x457991(_0x18723c[_0x8688('0x11')][_0x8688('0x13')]);}else{logger[_0x8688('0x15')](_0x8688('0x14'),_0xcc92be,'request\x20sent');_0x457991(_0x18723c[_0x8688('0x16')][_0x8688('0x13')]);}})[_0x8688('0x17')](function(_0x5ef2e6){logger[_0x8688('0x11')](_0x8688('0x14'),_0xcc92be,_0x5ef2e6);_0x15f2b9(_0x5ef2e6);});});}
\ No newline at end of file
+var _0x1c9a=['http','request','then','info','request\x20sent','debug','SmsApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','SmsApplication,\x20%s,\x20%s','message','result','catch','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x1c9a,0x98));var _0xa1c9=function(_0x39d0e3,_0x511081){_0x39d0e3=_0x39d0e3-0x0;var _0x5f4133=_0x1c9a[_0x39d0e3];return _0x5f4133;};'use strict';var _=require(_0xa1c9('0x0'));var util=require('util');var moment=require(_0xa1c9('0x1'));var BPromise=require('bluebird');var rs=require(_0xa1c9('0x2'));var fs=require('fs');var Redis=require(_0xa1c9('0x3'));var db=require(_0xa1c9('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xa1c9('0x5'))(_0xa1c9('0x6'));var config=require(_0xa1c9('0x7'));var jayson=require(_0xa1c9('0x8'));var client=jayson['client'][_0xa1c9('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x5448f2,_0x222624,_0x463c9c){return new BPromise(function(_0x3f07c2,_0x5059df){return client[_0xa1c9('0xa')](_0x5448f2,_0x463c9c)[_0xa1c9('0xb')](function(_0x24136d){logger[_0xa1c9('0xc')]('SmsApplication,\x20%s,\x20%s',_0x222624,_0xa1c9('0xd'));logger[_0xa1c9('0xe')](_0xa1c9('0xf'),_0x222624,_0xa1c9('0xd'),JSON[_0xa1c9('0x10')](_0x24136d));if(_0x24136d[_0xa1c9('0x11')]){if(_0x24136d[_0xa1c9('0x11')][_0xa1c9('0x12')]===0x1f4){logger[_0xa1c9('0x11')](_0xa1c9('0x13'),_0x222624,_0x24136d['error'][_0xa1c9('0x14')]);return _0x5059df(_0x24136d[_0xa1c9('0x11')][_0xa1c9('0x14')]);}logger[_0xa1c9('0x11')](_0xa1c9('0x13'),_0x222624,_0x24136d['error'][_0xa1c9('0x14')]);return _0x3f07c2(_0x24136d[_0xa1c9('0x11')][_0xa1c9('0x14')]);}else{logger[_0xa1c9('0xc')](_0xa1c9('0x13'),_0x222624,_0xa1c9('0xd'));_0x3f07c2(_0x24136d[_0xa1c9('0x15')][_0xa1c9('0x14')]);}})[_0xa1c9('0x16')](function(_0x373f5d){logger['error'](_0xa1c9('0x13'),_0x222624,_0x373f5d);_0x5059df(_0x373f5d);});});}
\ No newline at end of file
index 2626c76..53cbe78 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe511=['addTags','put','update','smsinteraction:destroy','destroy','delete','exports','multer','util','connect-timeout','Router','fs-extra','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','index','describe','show','/:id/messages','isAuthenticated','getMessages','download','post','create','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags'];(function(_0x368fb9,_0x1a9895){var _0x4892fb=function(_0x28d735){while(--_0x28d735){_0x368fb9['push'](_0x368fb9['shift']());}};_0x4892fb(++_0x1a9895);}(_0xe511,0x16f));var _0x1e51=function(_0x2a55f8,_0x540ac4){_0x2a55f8=_0x2a55f8-0x0;var _0x245efd=_0xe511[_0x2a55f8];return _0x245efd;};'use strict';var multer=require(_0x1e51('0x0'));var util=require(_0x1e51('0x1'));var path=require('path');var timeout=require(_0x1e51('0x2'));var express=require('express');var router=express[_0x1e51('0x3')]();var fs_extra=require(_0x1e51('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x1e51('0x5'));var config=require(_0x1e51('0x6'));var controller=require(_0x1e51('0x7'));router[_0x1e51('0x8')]('/',auth['isAuthenticated'](),controller[_0x1e51('0x9')]);router[_0x1e51('0x8')]('/describe',auth['isAuthenticated'](),controller[_0x1e51('0xa')]);router[_0x1e51('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x1e51('0xb')]);router[_0x1e51('0x8')](_0x1e51('0xc'),auth[_0x1e51('0xd')](),controller[_0x1e51('0xe')]);router[_0x1e51('0x8')]('/:id/download',auth[_0x1e51('0xd')](),controller[_0x1e51('0xf')]);router[_0x1e51('0x10')]('/',auth[_0x1e51('0xd')](),controller[_0x1e51('0x11')]);router[_0x1e51('0x10')]('/:id/messages',auth[_0x1e51('0xd')](),controller[_0x1e51('0x12')]);router[_0x1e51('0x10')](_0x1e51('0x13'),auth[_0x1e51('0xd')](),interaction[_0x1e51('0x14')](_0x1e51('0x15'),_0x1e51('0x16')),controller[_0x1e51('0x17')]);router[_0x1e51('0x18')]('/:id',auth[_0x1e51('0xd')](),interaction[_0x1e51('0x14')](_0x1e51('0x15'),'smsinteraction:update'),controller[_0x1e51('0x19')]);router['delete']('/:id',auth[_0x1e51('0xd')](),interaction[_0x1e51('0x14')](_0x1e51('0x15'),_0x1e51('0x1a')),controller[_0x1e51('0x1b')]);router[_0x1e51('0x1c')]('/:id/tags',auth[_0x1e51('0xd')](),controller['removeTags']);module[_0x1e51('0x1d')]=router;
\ No newline at end of file
+var _0x9c00=['multer','util','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsInteraction.controller','get','/describe','isAuthenticated','describe','show','/:id/messages','getMessages','/:id/download','download','post','create','addMessage','/:id/tags','tracked','sms','smsinteraction:addtags','addTags','put','/:id','smsinteraction:update','update','delete','destroy','removeTags'];(function(_0x226155,_0x11670e){var _0x3056c8=function(_0x58224e){while(--_0x58224e){_0x226155['push'](_0x226155['shift']());}};_0x3056c8(++_0x11670e);}(_0x9c00,0x1a0));var _0x09c0=function(_0x3cc4c8,_0x114636){_0x3cc4c8=_0x3cc4c8-0x0;var _0xdc0123=_0x9c00[_0x3cc4c8];return _0xdc0123;};'use strict';var multer=require(_0x09c0('0x0'));var util=require(_0x09c0('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x09c0('0x2'));var router=express[_0x09c0('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x09c0('0x4'));var interaction=require(_0x09c0('0x5'));var config=require(_0x09c0('0x6'));var controller=require(_0x09c0('0x7'));router[_0x09c0('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x09c0('0x8')](_0x09c0('0x9'),auth[_0x09c0('0xa')](),controller[_0x09c0('0xb')]);router[_0x09c0('0x8')]('/:id',auth[_0x09c0('0xa')](),controller[_0x09c0('0xc')]);router[_0x09c0('0x8')](_0x09c0('0xd'),auth[_0x09c0('0xa')](),controller[_0x09c0('0xe')]);router[_0x09c0('0x8')](_0x09c0('0xf'),auth[_0x09c0('0xa')](),controller[_0x09c0('0x10')]);router[_0x09c0('0x11')]('/',auth[_0x09c0('0xa')](),controller[_0x09c0('0x12')]);router[_0x09c0('0x11')](_0x09c0('0xd'),auth[_0x09c0('0xa')](),controller[_0x09c0('0x13')]);router[_0x09c0('0x11')](_0x09c0('0x14'),auth[_0x09c0('0xa')](),interaction[_0x09c0('0x15')](_0x09c0('0x16'),_0x09c0('0x17')),controller[_0x09c0('0x18')]);router[_0x09c0('0x19')](_0x09c0('0x1a'),auth['isAuthenticated'](),interaction['tracked']('sms',_0x09c0('0x1b')),controller[_0x09c0('0x1c')]);router[_0x09c0('0x1d')](_0x09c0('0x1a'),auth['isAuthenticated'](),interaction[_0x09c0('0x15')]('sms','smsinteraction:destroy'),controller[_0x09c0('0x1e')]);router['delete'](_0x09c0('0x14'),auth[_0x09c0('0xa')](),controller[_0x09c0('0x1f')]);module['exports']=router;
\ No newline at end of file
index 3f05832..619075d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xaf79=['DATE','STRING','ENUM','out','moment','exports','BOOLEAN'];(function(_0x16735b,_0x57308d){var _0x3ecdd2=function(_0x226a7d){while(--_0x226a7d){_0x16735b['push'](_0x16735b['shift']());}};_0x3ecdd2(++_0x57308d);}(_0xaf79,0x82));var _0x9af7=function(_0x2c1752,_0x2bd1b6){_0x2c1752=_0x2c1752-0x0;var _0x2188cb=_0xaf79[_0x2c1752];return _0x2188cb;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x9af7('0x0'));module[_0x9af7('0x1')]={'closed':{'type':Sequelize[_0x9af7('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x9af7('0x3')]},'disposition':{'type':Sequelize[_0x9af7('0x4')]},'secondDisposition':{'type':Sequelize[_0x9af7('0x4')]},'thirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x9af7('0x4')]},'phone':{'type':Sequelize[_0x9af7('0x4')]},'read1stAt':{'type':Sequelize[_0x9af7('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x9af7('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize['DATE']},'lastMsgDirection':{'type':Sequelize[_0x9af7('0x5')]('in',_0x9af7('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x9af7('0x2')],'defaultValue':![]}};
\ No newline at end of file
+var _0x0618=['moment','BOOLEAN','DATE','STRING','ENUM','out','sequelize'];(function(_0x4d07cc,_0x587613){var _0x42de3b=function(_0x201f78){while(--_0x201f78){_0x4d07cc['push'](_0x4d07cc['shift']());}};_0x42de3b(++_0x587613);}(_0x0618,0x1c6));var _0x8061=function(_0xd44849,_0x5bb61e){_0xd44849=_0xd44849-0x0;var _0xa2d4b4=_0x0618[_0xd44849];return _0xa2d4b4;};'use strict';var Sequelize=require(_0x8061('0x0'));var moment=require(_0x8061('0x1'));module['exports']={'closed':{'type':Sequelize[_0x8061('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x8061('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize['STRING']},'thirdDisposition':{'type':Sequelize[_0x8061('0x4')]},'note':{'type':Sequelize[_0x8061('0x4')]},'phone':{'type':Sequelize[_0x8061('0x4')]},'read1stAt':{'type':Sequelize[_0x8061('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x8061('0x5')]('in',_0x8061('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x8061('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x8061('0x5')]('in',_0x8061('0x6')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x8061('0x2')],'defaultValue':![]}};
\ No newline at end of file
index 599d985..27255de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8107=['$substring','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','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','body','some','compact','isEmpty','SmsAccountId','where','i.SmsAccountId\x20IN\x20?','concat','parse','$gte','$lte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20=\x20?','read','`unreadMessages`\x20>\x200','tag','isArray','filter','replace','isNumeric','i.phone\x20LIKE\x20?','getFullTextValue','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','t.id\x20IN\x20?','resolve','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','toString','sequelize','merge','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','c.firstName','Contact.firstName','c.lastName','Contact.lastName','c.email','Contact.email','c.phone','c.mobile','Contact.mobile','c.fax','Contact.fax','o.fullname','Owner.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','TagIds','ui.SmsInteractionId\x20IN\x20?','groupBy','SmsInteractionId','all','rows','show','SmsInteraction','include','options','create','params','describe','addMessage','SmsMessage','ids','findOne','nolimit','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','addTags','setTags','omit','spread','Tag','findAll','emit','smsInteractionTags:save','removeTags','join','root','server','tmp','attachments','transcript-%d-%s.zip','CmContact','firstName','lastName','Messages','createdAt','direction','secret','SmsAccount','Account','Owner','get','mkdirSync','N.A.','disposition','out','System','views','transcript-','Sms','createPdfFromHTML','download','log','err','unlinkSync','eml-format','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','querystring','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','register','sendStatus','end','status','json','offset','undefined','limit','count','apply','reject','save','update','destroy','then','error','stack','name','send','Users','map','fullname','Tags','split','forEach','push','catch','waiting','talking','answered','total','closed','UserId','index','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','pick','select','field','color','from','tools_tags','u.fullname','user_has_sms_interactions','left_join','users','sms_interactions','cm_contacts','o.id\x20=\x20i.UserId','sms_accounts','me.SmsInteractionId\x20=\x20i.id','it.SmsInteractionId\x20=\x20i.id','expr','search','sqlOperator','conditions','find','unreadMessages','value','having','`\x20=\x200','Contact','operator'];(function(_0x82da60,_0x11773d){var _0xa6d962=function(_0x2d1d4a){while(--_0x2d1d4a){_0x82da60['push'](_0x82da60['shift']());}};_0xa6d962(++_0x11773d);}(_0x8107,0x171));var _0x7810=function(_0x47a41f,_0x48d92b){_0x47a41f=_0x47a41f-0x0;var _0x2411f5=_0x8107[_0x47a41f];return _0x2411f5;};'use strict';var emlformat=require(_0x7810('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x7810('0x1'));var jsonpatch=require(_0x7810('0x2'));var rp=require(_0x7810('0x3'));var moment=require(_0x7810('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x7810('0x5'));var util=require(_0x7810('0x6'));var path=require(_0x7810('0x7'));var sox=require(_0x7810('0x8'));var csv=require(_0x7810('0x9'));var ejs=require(_0x7810('0xa'));var fs=require('fs');var fs_extra=require(_0x7810('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x7810('0xc'));var jsforce=require(_0x7810('0xd'));var deskjs=require(_0x7810('0xe'));var toCsv=require(_0x7810('0x9'));var querystring=require(_0x7810('0xf'));var Papa=require('papaparse');var Redis=require(_0x7810('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x7810('0x11'));var as=require('../../components/parsers/advancedSearch');var pdf=require('../../components/export/pdf');var hardwareService=require(_0x7810('0x12'));var logger=require(_0x7810('0x13'))(_0x7810('0x14'));var utils=require(_0x7810('0x15'));var config=require(_0x7810('0x16'));var licenseUtil=require(_0x7810('0x17'));var db=require(_0x7810('0x18'))['db'];config[_0x7810('0x19')]=_['defaults'](config[_0x7810('0x19')],{'host':_0x7810('0x1a'),'port':0x18eb});var socket=require(_0x7810('0x1b'))(new Redis(config[_0x7810('0x19')]));require('./smsInteraction.socket')[_0x7810('0x1c')](socket);function respondWithStatusCode(_0x49a559,_0x305d19){_0x305d19=_0x305d19||0xcc;return function(_0x1d65a7){if(_0x1d65a7){return _0x49a559[_0x7810('0x1d')](_0x305d19);}return _0x49a559['status'](_0x305d19)[_0x7810('0x1e')]();};}function respondWithResult(_0x1fd050,_0x18b239){_0x18b239=_0x18b239||0xc8;return function(_0x4bc3cf){if(_0x4bc3cf){return _0x1fd050[_0x7810('0x1f')](_0x18b239)[_0x7810('0x20')](_0x4bc3cf);}};}function respondWithFilteredResult(_0x3cef89,_0x19e39f){return function(_0x32c7f5){if(_0x32c7f5){var _0x2f23f9=typeof _0x19e39f[_0x7810('0x21')]===_0x7810('0x22')&&typeof _0x19e39f[_0x7810('0x23')]===_0x7810('0x22');var _0x571d1e=_0x32c7f5[_0x7810('0x24')];var _0x26fbd4=_0x2f23f9?0x0:_0x19e39f[_0x7810('0x21')];var _0xff7b38=_0x2f23f9?_0x32c7f5['count']:_0x19e39f[_0x7810('0x21')]+_0x19e39f[_0x7810('0x23')];var _0x36542f;if(_0xff7b38>=_0x571d1e){_0xff7b38=_0x571d1e;_0x36542f=0xc8;}else{_0x36542f=0xce;}_0x3cef89[_0x7810('0x1f')](_0x36542f);return _0x3cef89['set']('Content-Range',_0x26fbd4+'-'+_0xff7b38+'/'+_0x571d1e)[_0x7810('0x20')](_0x32c7f5);}return null;};}function patchUpdates(_0x29ee78){return function(_0x49f218){try{jsonpatch[_0x7810('0x25')](_0x49f218,_0x29ee78,!![]);}catch(_0x5f0bd7){return BPromise[_0x7810('0x26')](_0x5f0bd7);}return _0x49f218[_0x7810('0x27')]();};}function saveUpdates(_0x4b87b8,_0x2f9320){return function(_0x59e9e6){if(_0x59e9e6){return _0x59e9e6[_0x7810('0x28')](_0x4b87b8)['then'](function(_0x172f4d){return _0x172f4d;});}return null;};}function removeEntity(_0x672ac3,_0x57239b){return function(_0xfebea0){if(_0xfebea0){return _0xfebea0[_0x7810('0x29')]()[_0x7810('0x2a')](function(){_0x672ac3[_0x7810('0x1f')](0xcc)[_0x7810('0x1e')]();});}};}function handleEntityNotFound(_0x5db3fb,_0x3fec95){return function(_0x7db04d){if(!_0x7db04d){_0x5db3fb[_0x7810('0x1d')](0x194);}return _0x7db04d;};}function handleError(_0x3c7dca,_0x160ac3){_0x160ac3=_0x160ac3||0x1f4;return function(_0x171a22){logger[_0x7810('0x2b')](_0x171a22[_0x7810('0x2c')]);if(_0x171a22[_0x7810('0x2d')]){delete _0x171a22[_0x7810('0x2d')];}_0x3c7dca[_0x7810('0x1f')](_0x160ac3)[_0x7810('0x2e')](_0x171a22);};}function getInteractionUsers(_0x4ccce3,_0x47d6bf){return new BPromise(function(_0x30afcb,_0x4118e1){try{if(_0x47d6bf[_0x4ccce3['id']]){_0x4ccce3[_0x7810('0x2f')]=_[_0x7810('0x30')](_0x47d6bf[_0x4ccce3['id']],function(_0x415394){return{'id':_0x415394['id'],'fullname':_0x415394[_0x7810('0x31')]};});}}catch(_0x1f4845){_0x4118e1(_0x1f4845);}_0x30afcb(_0x4ccce3);});}function getInteractionTags(_0x513ae8,_0x41a2fa){return new BPromise(function(_0x13330a,_0x23ea03){try{if(_0x513ae8['TagIds']){_0x513ae8[_0x7810('0x32')]=[];_0x513ae8['TagIds'][_0x7810('0x33')](',')[_0x7810('0x34')](function(_0x325c33){_0x513ae8[_0x7810('0x32')][_0x7810('0x35')](_0x41a2fa[_0x325c33]);});}delete _0x513ae8['TagIds'];}catch(_0x1fda7b){_0x23ea03(_0x1fda7b);}_0x13330a(_0x513ae8);});}function updateSmsInteraction(_0xe10bb7,_0x2b79ea,_0x32f779){return new BPromise(function(_0x277d5d,_0x570eef){return getInteractionUsers(_0xe10bb7,_0x32f779)['then'](function(_0x380562){return getInteractionTags(_0x380562,_0x2b79ea);})[_0x7810('0x2a')](function(_0x22c755){return getStateInteraction(_0x22c755);})[_0x7810('0x2a')](function(_0x2ad848){_0x277d5d(_0x2ad848);})[_0x7810('0x36')](function(_0x5942ad){_0x570eef(_0x5942ad);});});}function getStateInteraction(_0x531ce0){return new BPromise(function(_0x5bd2b4){_0x531ce0[_0x7810('0x37')]=0x0;_0x531ce0[_0x7810('0x38')]=0x0;_0x531ce0[_0x7810('0x39')]=0x0;_0x531ce0['unmanaged']=0x0;_0x531ce0[_0x7810('0x3a')]=0x0;if(!_0x531ce0[_0x7810('0x3b')]&&!_0x531ce0['UserId']){_0x531ce0[_0x7810('0x37')]+=0x1;}if(!_0x531ce0[_0x7810('0x3b')]&&_0x531ce0[_0x7810('0x3c')]){_0x531ce0[_0x7810('0x38')]+=0x1;if(_0x531ce0[_0x7810('0x37')]){_0x531ce0[_0x7810('0x37')]-=0x1;}}if(_0x531ce0[_0x7810('0x3b')]&&_0x531ce0['UserId']){_0x531ce0[_0x7810('0x39')]+=0x1;if(_0x531ce0['talking']){_0x531ce0[_0x7810('0x38')]-=0x1;}}if(_0x531ce0[_0x7810('0x3b')]&&!_0x531ce0[_0x7810('0x3c')]){_0x531ce0['unmanaged']+=0x1;if(_0x531ce0[_0x7810('0x37')]){_0x531ce0[_0x7810('0x37')]-=0x1;}}_0x531ce0['total']+=0x1;_0x5bd2b4(_0x531ce0);});}exports[_0x7810('0x3d')]=function(_0x323d80,_0x556007){var _0x1a218f={},_0x4fe8f5={},_0x1850d6={'count':0x0,'rows':[]};var _0x5eed5e=_['map'](db['SmsInteraction'][_0x7810('0x3e')],function(_0x2b5fdf){return{'name':_0x2b5fdf[_0x7810('0x3f')],'type':_0x2b5fdf[_0x7810('0x40')]['key']};});_0x4fe8f5[_0x7810('0x41')]=_[_0x7810('0x30')](_0x5eed5e,'name');_0x4fe8f5[_0x7810('0x42')]=_[_0x7810('0x43')](_0x323d80['query']);_0x4fe8f5[_0x7810('0x44')]=_['intersection'](_0x4fe8f5[_0x7810('0x41')],_0x4fe8f5[_0x7810('0x42')]);_0x1a218f[_0x7810('0x45')]=_[_0x7810('0x46')](_0x4fe8f5['model'],qs[_0x7810('0x47')](_0x323d80[_0x7810('0x42')]['fields']));_0x1a218f[_0x7810('0x45')]=_0x1a218f['attributes'][_0x7810('0x48')]?_0x1a218f['attributes']:_0x4fe8f5[_0x7810('0x41')];if(!_0x323d80[_0x7810('0x42')][_0x7810('0x49')]('nolimit')){_0x1a218f[_0x7810('0x23')]=qs[_0x7810('0x23')](_0x323d80[_0x7810('0x42')]['limit']);_0x1a218f[_0x7810('0x21')]=qs[_0x7810('0x21')](_0x323d80['query'][_0x7810('0x21')]);}_0x1a218f[_0x7810('0x4a')]=qs[_0x7810('0x4b')](_0x323d80['query'][_0x7810('0x4b')]);_0x1a218f['where']=qs[_0x7810('0x44')](_[_0x7810('0x4c')](_0x323d80[_0x7810('0x42')],_0x4fe8f5[_0x7810('0x44')]),_0x5eed5e);var _0x3348bc=[];var _0x2d6217=squel[_0x7810('0x4d')]()[_0x7810('0x4e')]('id')[_0x7810('0x4e')]('name')[_0x7810('0x4e')](_0x7810('0x4f'))[_0x7810('0x50')](_0x7810('0x51'));var _0x17f085=squel[_0x7810('0x4d')]()[_0x7810('0x4e')]('u.id')[_0x7810('0x4e')](_0x7810('0x52'))[_0x7810('0x4e')]('ui.SmsInteractionId')[_0x7810('0x50')](_0x7810('0x53'),'ui')[_0x7810('0x54')](_0x7810('0x55'),'u','u.id\x20=\x20ui.UserId');var _0x2d31b0=squel['select']()[_0x7810('0x50')](_0x7810('0x56'),'i')[_0x7810('0x54')](_0x7810('0x57'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x7810('0x54')](_0x7810('0x55'),'o',_0x7810('0x58'))[_0x7810('0x54')](_0x7810('0x59'),'a','a.id\x20=\x20i.SmsAccountId')[_0x7810('0x54')]('sms_messages','me',_0x7810('0x5a'))['left_join']('sms_interaction_has_tags','it',_0x7810('0x5b'))[_0x7810('0x54')](_0x7810('0x51'),'t','t.id\x20=\x20it.TagId');var _0x1d9800=squel[_0x7810('0x5c')]();var _0x19452c=[];var _0x52580a=squel['expr']();var _0xe9b073;if(_0x323d80[_0x7810('0x42')][_0x7810('0x5d')]){_0xe9b073=as['parseSearch'](_0x323d80[_0x7810('0x42')][_0x7810('0x5d')]);var _0x803ef5=_0xe9b073[_0x7810('0x5e')];for(var _0x3488e9=0x0;_0x3488e9<_0xe9b073['conditions'][_0x7810('0x48')];_0x3488e9++){var _0x4fbeba=_0xe9b073[_0x7810('0x5f')][_0x3488e9];var _0x570e4e='i';var _0x30bd2e=_[_0x7810('0x60')](_0x5eed5e,[_0x7810('0x2d'),_0x4fbeba['field']]);if(!_0x30bd2e){switch(_0x4fbeba['field']){case _0x7810('0x61'):if(_0x4fbeba[_0x7810('0x62')]==0x1){_0x2d31b0[_0x7810('0x63')]('`'+_0x4fbeba[_0x7810('0x4e')]+_0x7810('0x64'));}else{_0x2d31b0[_0x7810('0x63')]('`'+_0x4fbeba['field']+'`\x20>\x200');}break;case _0x7810('0x65'):if(_0x4fbeba[_0x7810('0x66')]===_0x7810('0x67')){if(_0x4fbeba[_0x7810('0x62')][_0x7810('0x33')]('\x20')['length']>0x1){_0x1d9800[_0x803ef5]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs['getFullTextValue'](_0x4fbeba[_0x7810('0x62')]),null);}else{var _0x49e142='%'+_0x4fbeba[_0x7810('0x62')]+'%';_0x1d9800[_0x803ef5](_0x7810('0x68'),_0x49e142,_0x49e142,_0x49e142);}}else{_0x30bd2e=_['find'](_0x5eed5e,['name',_0x7810('0x69')]);_0x4fbeba[_0x7810('0x4e')]=_0x7810('0x69');_0x2bdd1b=as[_0x7810('0x6a')](_0x570e4e,_0x30bd2e[_0x7810('0x40')],_0x4fbeba);_0x1d9800[_0x803ef5](_0x2bdd1b[_0x7810('0x6b')],_0x2bdd1b[_0x7810('0x62')][_0x7810('0x6c')],_0x2bdd1b[_0x7810('0x62')][_0x7810('0x1e')]);}break;case'Tag':var _0x40f5bd=_0x4fbeba[_0x7810('0x62')][_0x7810('0x33')](',')[_0x7810('0x30')](function(_0x5ac860){return Number(_0x5ac860);});_0x40f5bd[_0x7810('0x34')](function(_0x356e39){_0x52580a['or'](_0x7810('0x6d'),'%,'+_0x356e39+',%');});_0x19452c=_[_0x7810('0x6e')](_0x19452c,_0x40f5bd);break;case _0x7810('0x6f'):if(_0x4fbeba[_0x7810('0x66')]===_0x7810('0x67')){_0x1d9800[_0x803ef5](_0x7810('0x70'),'%'+_0x4fbeba['value']+'%',null);}else{_0x30bd2e=_[_0x7810('0x60')](_0x5eed5e,[_0x7810('0x2d'),'UserId']);_0x4fbeba['field']=_0x7810('0x3c');_0x2bdd1b=as['buildExpression'](_0x570e4e,_0x30bd2e[_0x7810('0x40')],_0x4fbeba);_0x1d9800[_0x803ef5](_0x2bdd1b[_0x7810('0x6b')],_0x2bdd1b[_0x7810('0x62')][_0x7810('0x6c')],_0x2bdd1b[_0x7810('0x62')][_0x7810('0x1e')]);}break;case _0x7810('0x71'):_0x2bdd1b=as[_0x7810('0x6a')]('me',null,_0x4fbeba);_0x1d9800[_0x803ef5](_0x2bdd1b[_0x7810('0x6b')],_0x2bdd1b[_0x7810('0x62')]['start'],_0x2bdd1b['value'][_0x7810('0x1e')]);break;}}else{var _0x2bdd1b=as['buildExpression'](_0x570e4e,_0x30bd2e[_0x7810('0x40')],_0x4fbeba);_0x1d9800[_0x803ef5](_0x2bdd1b['text'],_0x2bdd1b[_0x7810('0x62')][_0x7810('0x6c')],_0x2bdd1b[_0x7810('0x62')]['end']);}}}else{var _0x2f92c2=_(_0x323d80[_0x7810('0x42')])[_0x7810('0x43')]()[_0x7810('0x30')](function(_0x7a4fa9){return _[_0x7810('0x72')](_0x5eed5e,[_0x7810('0x2d'),_0x7a4fa9])?_0x7a4fa9:undefined;})[_0x7810('0x73')]()[_0x7810('0x62')]();if(!_[_0x7810('0x74')](_0x2f92c2)){_0x2f92c2['forEach'](function(_0x1a8318){if(_0x1a8318===_0x7810('0x75')){_0x2d31b0[_0x7810('0x76')](_0x7810('0x77'),[][_0x7810('0x78')](_0x323d80['query'][_0x1a8318]));}else if(_0x1a8318==='createdAt'){var _0xda7e8c=JSON[_0x7810('0x79')](_0x323d80[_0x7810('0x42')][_0x1a8318])[_0x7810('0x7a')];var _0x59629a=JSON[_0x7810('0x79')](_0x323d80[_0x7810('0x42')][_0x1a8318])[_0x7810('0x7b')];_0x2d31b0['where'](_0x7810('0x7c'),_0xda7e8c,_0x59629a);}else{if(_0x323d80[_0x7810('0x42')][_0x1a8318]===_0x7810('0x7d')){_0x2d31b0['where']('i.'+_0x1a8318+'\x20IS\x20NULL');}else{_0x2d31b0['where']('i.'+_0x1a8318+_0x7810('0x7e'),_0x323d80[_0x7810('0x42')][_0x1a8318]);}}});}if(_0x323d80[_0x7810('0x42')][_0x7810('0x7f')]){if(_0x323d80[_0x7810('0x42')][_0x7810('0x7f')]==0x1){_0x2d31b0[_0x7810('0x63')]('`unreadMessages`\x20=\x200');}else{_0x2d31b0['having'](_0x7810('0x80'));}}if(_0x323d80[_0x7810('0x42')][_0x7810('0x81')]){_0x19452c=_[_0x7810('0x82')](_0x323d80[_0x7810('0x42')]['tag'])?_0x323d80['query']['tag']:new Array(_0x323d80[_0x7810('0x42')][_0x7810('0x81')]);_0x19452c[_0x7810('0x34')](function(_0x79769e){_0x52580a['or']('CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','%,'+_0x79769e+',%');});}if(_0x323d80['query']['filter']){var _0x419af3=_0x323d80[_0x7810('0x42')][_0x7810('0x83')][_0x7810('0x84')]('\x5c','\x5c\x5c')['replace'](/'/g,'\x27\x27');if(qs[_0x7810('0x85')](_0x419af3)){_0x1d9800['or']('i.id\x20LIKE\x20?',_0x419af3+'%')['or'](_0x7810('0x86'),_0x419af3+'%');}else{_0x1d9800['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x7810('0x87')](_0x419af3))['or'](_0x7810('0x88'),_0x419af3+'%');}}}_0x2d31b0['where'](_0x1d9800);_0x2d31b0[_0x7810('0x89')](_0x7810('0x8a'));var _0x255b5d={'type':db[_0x7810('0x8b')][_0x7810('0x8c')][_0x7810('0x8d')],'raw':!![]};var _0x57285b=_0x2d31b0[_0x7810('0x8e')]();_0x57285b['field']('i.id');_0x57285b['field'](_0x7810('0x8f'),_0x7810('0x61'));if(_0x1a218f['order']){_0x1a218f[_0x7810('0x4a')][_0x7810('0x34')](function(_0x36fb69){var _0x576da3=_0x36fb69[0x0]===_0x7810('0x90')?_0x36fb69[0x0]:'i.'+_0x36fb69[0x0];_0x2d31b0[_0x7810('0x4a')](_0x576da3,_0x36fb69[0x1]===_0x7810('0x91')?![]:!![]);});}if(!_[_0x7810('0x74')](_0x19452c)){_0x2d31b0[_0x7810('0x63')](_0x52580a);_0x57285b[_0x7810('0x76')](_0x7810('0x92'),_0x19452c);}BPromise[_0x7810('0x93')]()[_0x7810('0x2a')](function(){if(!_0xe9b073){if(_0x323d80[_0x7810('0x42')][_0x7810('0x75')])return;_0x57285b['where'](_0x7810('0x94'));_0x2d31b0['where'](_0x7810('0x94'));return;}if(_0x323d80[_0x7810('0x95')][_0x7810('0x96')]!==_0x7810('0x97'))return;return _0x323d80[_0x7810('0x95')][_0x7810('0x98')]({'attributes':['id'],'raw':!![]})[_0x7810('0x2a')](function(_0x95c8b3){if(_[_0x7810('0x74')](_0x95c8b3)){_0x57285b[_0x7810('0x76')](_0x7810('0x99'));_0x2d31b0[_0x7810('0x76')](_0x7810('0x99'));}else{_0x57285b[_0x7810('0x76')](_0x7810('0x77'),_['map'](_0x95c8b3,'id'));_0x2d31b0[_0x7810('0x76')](_0x7810('0x77'),_[_0x7810('0x30')](_0x95c8b3,'id'));}});})[_0x7810('0x2a')](function(){if(_0x323d80[_0x7810('0x95')][_0x7810('0x96')]==='agent'&&!_0xe9b073&&!_0x323d80[_0x7810('0x42')]['SmsAccountId'])return[];return db['sequelize'][_0x7810('0x42')](_0x57285b[_0x7810('0x9a')](),_0x255b5d);})[_0x7810('0x2a')](function(_0x89a92e){_0x1850d6['count']=_0x89a92e[_0x7810('0x48')];if(_0x1850d6[_0x7810('0x24')]===0x0)return[];return db[_0x7810('0x9b')]['query'](_0x2d6217['toString'](),_0x255b5d)[_0x7810('0x2a')](function(_0xeb740f){_0x3348bc=_['keyBy'](_0xeb740f,'id');_0x255b5d=_[_0x7810('0x9c')](_0x255b5d,{'model':db['SmsInteraction'],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x323d80[_0x7810('0x42')][_0x7810('0x47')]){_0x1a218f[_0x7810('0x45')]['forEach'](function(_0x1919ad){_0x2d31b0['field']('i.'+_0x1919ad);});}else{_0x2d31b0[_0x7810('0x4e')](_0x7810('0x8f'),'unreadMessages');_0x2d31b0[_0x7810('0x4e')]('a.key',_0x7810('0x9d'));_0x2d31b0['field'](_0x7810('0x9e'),'Account.mandatoryDisposition');_0x2d31b0[_0x7810('0x4e')](_0x7810('0x9f'),_0x7810('0x90'));_0x2d31b0[_0x7810('0x4e')]('i.*');_0x2d31b0['field'](_0x7810('0xa0'),_0x7810('0xa1'));_0x2d31b0[_0x7810('0x4e')](_0x7810('0xa2'),_0x7810('0xa3'));_0x2d31b0['field'](_0x7810('0xa4'),_0x7810('0xa5'));_0x2d31b0['field'](_0x7810('0xa6'),'Contact.phone');_0x2d31b0['field'](_0x7810('0xa7'),_0x7810('0xa8'));_0x2d31b0[_0x7810('0x4e')](_0x7810('0xa9'),_0x7810('0xaa'));_0x2d31b0['field'](_0x7810('0xab'),_0x7810('0xac'));_0x2d31b0[_0x7810('0x4e')](_0x7810('0xad'),_0x7810('0xae'));_0x2d31b0[_0x7810('0x4e')](_0x7810('0xaf'),_0x7810('0xb0'));}if(_0x1a218f[_0x7810('0x23')])_0x2d31b0[_0x7810('0x23')](_0x1a218f[_0x7810('0x23')]);if(_0x1a218f[_0x7810('0x21')])_0x2d31b0[_0x7810('0x21')](_0x1a218f[_0x7810('0x21')]);return db[_0x7810('0x9b')][_0x7810('0x42')](_0x2d31b0[_0x7810('0x9a')](),_0x255b5d);})[_0x7810('0x2a')](function(_0x1c62a6){if(_0x1c62a6[_0x7810('0x48')]>0x0)_0x17f085[_0x7810('0x76')](_0x7810('0xb1'),_['map'](_0x1c62a6,'id'));return db['sequelize'][_0x7810('0x42')](_0x17f085[_0x7810('0x9a')](),_0x255b5d)[_0x7810('0x2a')](function(_0x175933){var _0x2f37e3=_[_0x7810('0xb2')](_0x175933,_0x7810('0xb3'));var _0x501378=[];_0x1c62a6['forEach'](function(_0x11d42c){_0x501378[_0x7810('0x35')](updateSmsInteraction(_0x11d42c,_0x3348bc,_0x2f37e3));});return BPromise[_0x7810('0xb4')](_0x501378);});});})[_0x7810('0x2a')](function(_0x4e1750){_0x1850d6[_0x7810('0xb5')]=_0x4e1750;return _0x1850d6;})['then'](respondWithFilteredResult(_0x556007,_0x1a218f))[_0x7810('0x36')](handleError(_0x556007,null));};exports[_0x7810('0xb6')]=function(_0x372ee2,_0x18ae2f){var _0x22e2ad={'raw':![],'where':{'id':_0x372ee2['params']['id']}},_0x3d4bc0={};_0x3d4bc0[_0x7810('0x41')]=_[_0x7810('0x43')](db[_0x7810('0xb7')]['rawAttributes']);_0x3d4bc0[_0x7810('0x42')]=_[_0x7810('0x43')](_0x372ee2['query']);_0x3d4bc0[_0x7810('0x44')]=_['intersection'](_0x3d4bc0[_0x7810('0x41')],_0x3d4bc0[_0x7810('0x42')]);_0x22e2ad[_0x7810('0x45')]=_[_0x7810('0x46')](_0x3d4bc0[_0x7810('0x41')],qs[_0x7810('0x47')](_0x372ee2[_0x7810('0x42')]['fields']));_0x22e2ad[_0x7810('0x45')]=_0x22e2ad['attributes'][_0x7810('0x48')]?_0x22e2ad[_0x7810('0x45')]:_0x3d4bc0[_0x7810('0x41')];if(_0x372ee2[_0x7810('0x42')]['includeAll']){_0x22e2ad[_0x7810('0xb8')]=[{'all':!![]}];}_0x22e2ad=_['merge']({},_0x22e2ad,_0x372ee2[_0x7810('0xb9')]);return db[_0x7810('0xb7')][_0x7810('0x60')](_0x22e2ad)[_0x7810('0x2a')](handleEntityNotFound(_0x18ae2f,null))['then'](respondWithResult(_0x18ae2f,null))['catch'](handleError(_0x18ae2f,null));};exports[_0x7810('0xba')]=function(_0x5496e9,_0x43345a){return db[_0x7810('0xb7')][_0x7810('0xba')](_0x5496e9[_0x7810('0x71')],{})[_0x7810('0x2a')](respondWithResult(_0x43345a,0xc9))[_0x7810('0x36')](handleError(_0x43345a,null));};exports[_0x7810('0x28')]=function(_0x5c6867,_0x4e5fbb){if(_0x5c6867[_0x7810('0x71')]['id']){delete _0x5c6867[_0x7810('0x71')]['id'];}return db[_0x7810('0xb7')]['find']({'where':{'id':_0x5c6867['params']['id']}})['then'](handleEntityNotFound(_0x4e5fbb,null))[_0x7810('0x2a')](saveUpdates(_0x5c6867[_0x7810('0x71')],null))[_0x7810('0x2a')](respondWithResult(_0x4e5fbb,null))[_0x7810('0x36')](handleError(_0x4e5fbb,null));};exports[_0x7810('0x29')]=function(_0x39db3d,_0x573eca){return db[_0x7810('0xb7')][_0x7810('0x60')]({'where':{'id':_0x39db3d[_0x7810('0xbb')]['id']}})[_0x7810('0x2a')](handleEntityNotFound(_0x573eca,null))[_0x7810('0x2a')](removeEntity(_0x573eca,null))[_0x7810('0x36')](handleError(_0x573eca,null));};exports[_0x7810('0xbc')]=function(_0x11d3fe,_0x54287f){return db[_0x7810('0xb7')]['describe']()[_0x7810('0x2a')](respondWithResult(_0x54287f,null))['catch'](handleError(_0x54287f,null));};exports[_0x7810('0xbd')]=function(_0x36e3f0,_0x20f4c8,_0x55eafe){return db[_0x7810('0xbe')]['find']({'where':{'id':_0x36e3f0['params']['id']}})[_0x7810('0x2a')](handleEntityNotFound(_0x20f4c8,null))[_0x7810('0x2a')](function(_0x2abfb6){if(_0x2abfb6){return _0x2abfb6[_0x7810('0xbd')](_0x36e3f0[_0x7810('0x71')]['ids'],_['omit'](_0x36e3f0[_0x7810('0x71')],[_0x7810('0xbf'),'id'])||{});}})[_0x7810('0x2a')](respondWithResult(_0x20f4c8,null))[_0x7810('0x36')](handleError(_0x20f4c8,null));};exports['getMessages']=function(_0x386dc1,_0x331daf,_0xce4626){var _0x17c453={'raw':![],'where':{}};var _0x41f68a={};var _0x52f8cc={'count':0x0,'rows':[]};return db[_0x7810('0xb7')][_0x7810('0xc0')]({'where':{'id':_0x386dc1[_0x7810('0xbb')]['id']}})['then'](handleEntityNotFound(_0x331daf,null))[_0x7810('0x2a')](function(_0x5862aa){if(_0x5862aa){_0x41f68a[_0x7810('0x41')]=_[_0x7810('0x43')](db[_0x7810('0xbe')]['rawAttributes']);_0x41f68a['query']=_[_0x7810('0x43')](_0x386dc1[_0x7810('0x42')]);_0x41f68a[_0x7810('0x44')]=_['intersection'](_0x41f68a[_0x7810('0x41')],_0x41f68a[_0x7810('0x42')]);_0x17c453[_0x7810('0x45')]=_['intersection'](_0x41f68a[_0x7810('0x41')],qs[_0x7810('0x47')](_0x386dc1[_0x7810('0x42')][_0x7810('0x47')]));_0x17c453['attributes']=_0x17c453[_0x7810('0x45')][_0x7810('0x48')]?_0x17c453[_0x7810('0x45')]:_0x41f68a[_0x7810('0x41')];if(!_0x386dc1['query'][_0x7810('0x49')](_0x7810('0xc1'))){_0x17c453[_0x7810('0x23')]=qs[_0x7810('0x23')](_0x386dc1['query']['limit']);_0x17c453[_0x7810('0x21')]=qs[_0x7810('0x21')](_0x386dc1['query']['offset']);}_0x17c453[_0x7810('0x4a')]=qs[_0x7810('0x4b')](_0x386dc1[_0x7810('0x42')][_0x7810('0x4b')]);_0x17c453['where']=qs['filters'](_[_0x7810('0x4c')](_0x386dc1[_0x7810('0x42')],_0x41f68a['filters']));_0x17c453[_0x7810('0x76')]['SmsInteractionId']=_0x5862aa['id'];if(_0x386dc1[_0x7810('0x42')][_0x7810('0x83')]){_0x17c453[_0x7810('0x76')]=_[_0x7810('0x9c')](_0x17c453[_0x7810('0x76')],{'$or':_[_0x7810('0x30')](_0x17c453[_0x7810('0x45')],function(_0x5746e8){var _0x236a2c={};_0x236a2c[_0x5746e8]={'$like':'%'+_0x386dc1[_0x7810('0x42')][_0x7810('0x83')]+'%'};return _0x236a2c;})});}if(_0x386dc1[_0x7810('0x42')][_0x7810('0x7a')]){var _0xe5cd4f=_0x386dc1[_0x7810('0x42')]['$gte'][_0x7810('0x33')](',');var _0x2a030c={};_0x2a030c[_0xe5cd4f[0x0]]={'$gte':moment(_0xe5cd4f[0x1])[_0x7810('0xc2')](_0x7810('0xc3'))};_0x17c453[_0x7810('0x76')]=_['merge'](_0x17c453[_0x7810('0x76')],_0x2a030c);}_0x17c453=_[_0x7810('0x9c')]({},_0x17c453,_0x386dc1[_0x7810('0xb9')]);return db[_0x7810('0xbe')][_0x7810('0x24')]({'where':_0x17c453[_0x7810('0x76')]})[_0x7810('0x2a')](function(_0x4ba553){_0x52f8cc['count']=_0x4ba553;if(_0x386dc1['query'][_0x7810('0xc4')]){_0x17c453['include']=[{'all':!![]}];}return db[_0x7810('0xbe')]['findAll'](_0x17c453);})['then'](function(_0x4a3395){_0x52f8cc['rows']=_0x4a3395;return _0x52f8cc;});}})['then'](respondWithFilteredResult(_0x331daf,_0x17c453))[_0x7810('0x36')](handleError(_0x331daf,null));};exports[_0x7810('0xc5')]=function(_0x3477cc,_0x350914,_0x32dcf6){return db[_0x7810('0xb7')][_0x7810('0x60')]({'where':{'id':_0x3477cc[_0x7810('0xbb')]['id']}})[_0x7810('0x2a')](handleEntityNotFound(_0x350914,null))[_0x7810('0x2a')](function(_0x380361){if(_0x380361){return _0x380361[_0x7810('0xc6')](_0x3477cc[_0x7810('0x71')][_0x7810('0xbf')],_[_0x7810('0xc7')](_0x3477cc[_0x7810('0x71')],[_0x7810('0xbf'),'id'])||{})[_0x7810('0xc8')](function(){return db[_0x7810('0xc9')][_0x7810('0xca')]({'attributes':['id',_0x7810('0x2d'),_0x7810('0x4f')],'where':{'id':_0x3477cc[_0x7810('0x71')][_0x7810('0xbf')]}});})[_0x7810('0x2a')](function(_0x4dac65){socket[_0x7810('0xcb')](_0x7810('0xcc'),{'id':Number(_0x3477cc['params']['id']),'tags':_0x4dac65||[]});return{'id':Number(_0x3477cc[_0x7810('0xbb')]['id']),'tags':_0x4dac65||[]};});}})['then'](respondWithResult(_0x350914,null))['catch'](handleError(_0x350914,null));};exports[_0x7810('0xcd')]=function(_0x59a854,_0x21c0f7,_0x397238){return db[_0x7810('0xb7')][_0x7810('0x60')]({'where':{'id':_0x59a854[_0x7810('0xbb')]['id']}})[_0x7810('0x2a')](handleEntityNotFound(_0x21c0f7,null))[_0x7810('0x2a')](function(_0x4cfa8c){if(_0x4cfa8c){return _0x4cfa8c['removeTags'](_0x59a854[_0x7810('0x42')][_0x7810('0xbf')]);}})[_0x7810('0x2a')](respondWithStatusCode(_0x21c0f7,null))['catch'](handleError(_0x21c0f7,null));};exports['download']=function(_0x41e698,_0x750f5b){var _0x3e153b=moment()['unix']()[_0x7810('0x9a')]();var _0x101131=path[_0x7810('0xce')](config[_0x7810('0xcf')],_0x7810('0xd0'),'files',_0x7810('0xd1'));var _0x320c4d=path[_0x7810('0xce')](config[_0x7810('0xcf')],_0x7810('0xd0'),'files',_0x7810('0xd2'));var _0x20bd59=path[_0x7810('0xce')](_0x101131,_0x3e153b);var _0x73f74a=util[_0x7810('0xc2')](_0x7810('0xd3'),_0x41e698[_0x7810('0xbb')]['id'],_0x3e153b);var _0x1eb163=path[_0x7810('0xce')](_0x101131,_0x73f74a);var _0x37f79e=[];_0x37f79e[_0x7810('0x35')]({'model':db[_0x7810('0x6f')],'as':'User','attributes':['id',_0x7810('0x31')],'raw':!![]});_0x37f79e[_0x7810('0x35')]({'model':db[_0x7810('0xd4')],'as':'Contact','attributes':['id',_0x7810('0xd5'),_0x7810('0xd6')],'raw':!![]});var _0x3bae8c=[{'model':db[_0x7810('0xbe')],'as':_0x7810('0xd7'),'attributes':['id',_0x7810('0x71'),_0x7810('0xd8'),_0x7810('0xd9'),_0x7810('0xda'),_0x7810('0x7f')],'include':_0x37f79e}];_0x3bae8c[_0x7810('0x35')]({'model':db[_0x7810('0xdb')],'as':_0x7810('0xdc'),'attributes':['id',_0x7810('0x2d')]});_0x3bae8c[_0x7810('0x35')]({'model':db[_0x7810('0x6f')],'as':_0x7810('0xdd'),'attributes':['id',_0x7810('0x31')]});return db['SmsInteraction'][_0x7810('0x60')]({'where':{'id':_0x41e698[_0x7810('0xbb')]['id']},'include':_0x3bae8c})['then'](handleEntityNotFound(_0x750f5b,null))[_0x7810('0x2a')](function(_0x3cbfce){if(_0x3cbfce){var _0x10bc1c=_0x3cbfce[_0x7810('0xde')]({'plain':!![]});fs[_0x7810('0xdf')](_0x20bd59);var _0x1cdd77={'channel':'Sms','account':_0x10bc1c[_0x7810('0xdc')]['name'],'agent':_0x10bc1c['Owner']?_0x10bc1c[_0x7810('0xdd')][_0x7810('0x31')]:_0x7810('0xe0'),'createdAt':moment(_0x10bc1c[_0x7810('0xd8')])[_0x7810('0xc2')](_0x7810('0xc3'))[_0x7810('0x9a')](),'closedAt':_0x10bc1c[_0x7810('0x3b')]?moment(_0x10bc1c['closedAt'])[_0x7810('0xc2')](_0x7810('0xc3'))[_0x7810('0x9a')]():'','disposition':_0x10bc1c[_0x7810('0xe1')],'messages':_(_0x10bc1c[_0x7810('0xd7')])[_0x7810('0x83')]({'secret':![]})['map'](function(_0x133439){return{'date':moment(_0x133439['createdAt'])[_0x7810('0xc2')]('YYYY-MM-DD\x20HH:mm:ss')['toString'](),'sender':_0x133439[_0x7810('0xd9')]===_0x7810('0xe2')?_0x133439[_0x7810('0x6f')]?_0x133439[_0x7810('0x6f')][_0x7810('0x31')]:_0x7810('0xe3'):_0x133439[_0x7810('0x65')][_0x7810('0xd5')]+(_0x133439[_0x7810('0x65')][_0x7810('0xd6')]?'\x20'+_0x133439['Contact'][_0x7810('0xd6')]:''),'body':_0x133439['body'],'direction':_0x133439['direction']==='out'?'A':'C','secret':_0x133439['secret'],'read':_0x133439[_0x7810('0x7f')]};})['value']()};return ejs['renderFile'](path[_0x7810('0xce')](config[_0x7810('0xcf')],_0x7810('0xd0'),_0x7810('0xe4'),'downloadInteraction.ejs'),{'interaction':_0x1cdd77})[_0x7810('0x2a')](function(_0x5c1c5c){var _0x123666=path['join'](_0x20bd59,_0x7810('0xe5')+_0x10bc1c['id']+'-'+_0x3e153b+'.pdf');var _0x242067={'path':_0x123666,'channel':_0x7810('0xe6'),'interactionId':_0x10bc1c['id']};return pdf[_0x7810('0xe7')](_0x5c1c5c,_0x242067);})['then'](function(){return new BPromise(function(_0x1b050f,_0x54cb5e){zipdir(_0x20bd59,{'saveTo':_0x1eb163},function(_0x2a11c3,_0x4561a7){if(_0x2a11c3)return _0x54cb5e(_0x2a11c3);return _0x1b050f(_0x4561a7);});})[_0x7810('0x2a')](function(){return new BPromise(function(_0x5b9ef9,_0x1a93be){rimraf(_0x20bd59,function(_0x440264){if(_0x440264)_0x1a93be(_0x440264);return _0x5b9ef9();});});})[_0x7810('0x2a')](function(){return _0x750f5b[_0x7810('0xe8')](_0x1eb163,_0x73f74a,function(_0x2de132){if(_0x2de132){console[_0x7810('0xe9')](_0x7810('0xea'),_0x2de132);}else{fs[_0x7810('0xeb')](_0x1eb163);}});});});}else{return _0x750f5b[_0x7810('0x1d')](0xc8);}})['catch'](handleError(_0x750f5b,null));};
\ No newline at end of file
+var _0xc556=['tmp','attachments','transcript-%d-%s.zip','CmContact','Contact','lastName','Messages','createdAt','direction','secret','SmsAccount','Owner','Account','N.A.','closedAt','YYYY-MM-DD\x20HH:mm:ss','out','System','renderFile','views','transcript-','.pdf','Sms','createPdfFromHTML','log','err','unlinkSync','eml-format','request-promise','moment','mustache','util','sox','to-csv','lodash','crypto','jsforce','desk.js','querystring','../../components/auth/service','../../components/export/pdf','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./smsInteraction.socket','sendStatus','status','json','offset','undefined','limit','count','apply','reject','save','update','destroy','then','end','error','stack','name','send','Users','fullname','TagIds','Tags','split','push','catch','waiting','answered','unmanaged','total','closed','UserId','talking','map','SmsInteraction','rawAttributes','fieldName','key','model','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','select','field','color','u.id','u.fullname','from','users','u.id\x20=\x20ui.UserId','sms_interactions','left_join','o.id\x20=\x20i.UserId','sms_accounts','a.id\x20=\x20i.SmsAccountId','sms_messages','me.SmsInteractionId\x20=\x20i.id','sms_interaction_has_tags','tools_tags','t.id\x20=\x20it.TagId','expr','search','parseSearch','sqlOperator','conditions','find','unreadMessages','having','`\x20>\x200','operator','$substring','value','getFullTextValue','c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?','ContactId','buildExpression','type','text','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','start','body','keys','compact','isEmpty','i.SmsAccountId\x20IN\x20?','parse','$gte','i.createdAt\x20BETWEEN\x20?\x20AND\x20?','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','isArray','tag','forEach','filter','replace','i.id\x20LIKE\x20?','i.phone\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','Sequelize','QueryTypes','SELECT','clone','contactName','t.id\x20IN\x20?','resolve','SmsAccountId','i.SmsAccountId\x20IS\x20NOT\x20NULL','user','getSmsAccounts','i.SmsAccountId\x20IS\x20NULL','role','agent','sequelize','toString','keyBy','merge','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','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','Contact.firstName','Contact.lastName','c.email','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.SmsInteractionId\x20IN\x20?','groupBy','SmsInteractionId','all','rows','show','params','includeAll','include','options','create','describe','addMessage','SmsMessage','ids','getMessages','findOne','format','findAll','addTags','setTags','spread','emit','smsInteractionTags:save','download','unix','join','root','server','files'];(function(_0x2f8bc6,_0x4dc869){var _0x2d008a=function(_0x276072){while(--_0x276072){_0x2f8bc6['push'](_0x2f8bc6['shift']());}};_0x2d008a(++_0x4dc869);}(_0xc556,0x1eb));var _0x6c55=function(_0x1968b1,_0x58467d){_0x1968b1=_0x1968b1-0x0;var _0x447458=_0xc556[_0x1968b1];return _0x447458;};'use strict';var emlformat=require(_0x6c55('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x6c55('0x1'));var moment=require(_0x6c55('0x2'));var BPromise=require('bluebird');var Mustache=require(_0x6c55('0x3'));var util=require(_0x6c55('0x4'));var path=require('path');var sox=require(_0x6c55('0x5'));var csv=require(_0x6c55('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x6c55('0x7'));var squel=require('squel');var crypto=require(_0x6c55('0x8'));var jsforce=require(_0x6c55('0x9'));var deskjs=require(_0x6c55('0xa'));var toCsv=require(_0x6c55('0x6'));var querystring=require(_0x6c55('0xb'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require(_0x6c55('0xc'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var pdf=require(_0x6c55('0xd'));var hardwareService=require(_0x6c55('0xe'));var logger=require('../../config/logger')(_0x6c55('0xf'));var utils=require(_0x6c55('0x10'));var config=require(_0x6c55('0x11'));var licenseUtil=require(_0x6c55('0x12'));var db=require(_0x6c55('0x13'))['db'];config['redis']=_['defaults'](config[_0x6c55('0x14')],{'host':_0x6c55('0x15'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6c55('0x14')]));require(_0x6c55('0x16'))['register'](socket);function respondWithStatusCode(_0x2d1fe2,_0xde1a81){_0xde1a81=_0xde1a81||0xcc;return function(_0x146c42){if(_0x146c42){return _0x2d1fe2[_0x6c55('0x17')](_0xde1a81);}return _0x2d1fe2[_0x6c55('0x18')](_0xde1a81)['end']();};}function respondWithResult(_0x243d13,_0x3cd0f4){_0x3cd0f4=_0x3cd0f4||0xc8;return function(_0x1183c0){if(_0x1183c0){return _0x243d13[_0x6c55('0x18')](_0x3cd0f4)[_0x6c55('0x19')](_0x1183c0);}};}function respondWithFilteredResult(_0x1128ff,_0x1f1204){return function(_0xb6d6e){if(_0xb6d6e){var _0x116fed=typeof _0x1f1204[_0x6c55('0x1a')]===_0x6c55('0x1b')&&typeof _0x1f1204[_0x6c55('0x1c')]===_0x6c55('0x1b');var _0x228ef4=_0xb6d6e['count'];var _0x5e15bb=_0x116fed?0x0:_0x1f1204[_0x6c55('0x1a')];var _0x223fba=_0x116fed?_0xb6d6e[_0x6c55('0x1d')]:_0x1f1204[_0x6c55('0x1a')]+_0x1f1204[_0x6c55('0x1c')];var _0x28cdd6;if(_0x223fba>=_0x228ef4){_0x223fba=_0x228ef4;_0x28cdd6=0xc8;}else{_0x28cdd6=0xce;}_0x1128ff[_0x6c55('0x18')](_0x28cdd6);return _0x1128ff['set']('Content-Range',_0x5e15bb+'-'+_0x223fba+'/'+_0x228ef4)[_0x6c55('0x19')](_0xb6d6e);}return null;};}function patchUpdates(_0x225ead){return function(_0x4d4a91){try{jsonpatch[_0x6c55('0x1e')](_0x4d4a91,_0x225ead,!![]);}catch(_0x5ea7db){return BPromise[_0x6c55('0x1f')](_0x5ea7db);}return _0x4d4a91[_0x6c55('0x20')]();};}function saveUpdates(_0x5930f9,_0x4c7bca){return function(_0x24a3e2){if(_0x24a3e2){return _0x24a3e2[_0x6c55('0x21')](_0x5930f9)['then'](function(_0x33421e){return _0x33421e;});}return null;};}function removeEntity(_0x1a6268,_0x417d25){return function(_0x597e42){if(_0x597e42){return _0x597e42[_0x6c55('0x22')]()[_0x6c55('0x23')](function(){_0x1a6268[_0x6c55('0x18')](0xcc)[_0x6c55('0x24')]();});}};}function handleEntityNotFound(_0x22f99c,_0x452eb6){return function(_0x363264){if(!_0x363264){_0x22f99c[_0x6c55('0x17')](0x194);}return _0x363264;};}function handleError(_0x1931ed,_0x9b768e){_0x9b768e=_0x9b768e||0x1f4;return function(_0x1681cc){logger[_0x6c55('0x25')](_0x1681cc[_0x6c55('0x26')]);if(_0x1681cc[_0x6c55('0x27')]){delete _0x1681cc['name'];}_0x1931ed['status'](_0x9b768e)[_0x6c55('0x28')](_0x1681cc);};}function getInteractionUsers(_0x2c171b,_0xbe228b){return new BPromise(function(_0x1d8a96,_0x447172){try{if(_0xbe228b[_0x2c171b['id']]){_0x2c171b[_0x6c55('0x29')]=_['map'](_0xbe228b[_0x2c171b['id']],function(_0x55402e){return{'id':_0x55402e['id'],'fullname':_0x55402e[_0x6c55('0x2a')]};});}}catch(_0x148081){_0x447172(_0x148081);}_0x1d8a96(_0x2c171b);});}function getInteractionTags(_0x3794ac,_0x7cf95b){return new BPromise(function(_0x27d75d,_0x46a459){try{if(_0x3794ac[_0x6c55('0x2b')]){_0x3794ac[_0x6c55('0x2c')]=[];_0x3794ac[_0x6c55('0x2b')][_0x6c55('0x2d')](',')['forEach'](function(_0x55c0c4){_0x3794ac[_0x6c55('0x2c')][_0x6c55('0x2e')](_0x7cf95b[_0x55c0c4]);});}delete _0x3794ac['TagIds'];}catch(_0x158e0a){_0x46a459(_0x158e0a);}_0x27d75d(_0x3794ac);});}function updateSmsInteraction(_0x4205eb,_0xc4ece1,_0x277b1f){return new BPromise(function(_0x47f3dc,_0x26d883){return getInteractionUsers(_0x4205eb,_0x277b1f)[_0x6c55('0x23')](function(_0x70fc07){return getInteractionTags(_0x70fc07,_0xc4ece1);})[_0x6c55('0x23')](function(_0x122661){return getStateInteraction(_0x122661);})['then'](function(_0x4d0e83){_0x47f3dc(_0x4d0e83);})[_0x6c55('0x2f')](function(_0x560b17){_0x26d883(_0x560b17);});});}function getStateInteraction(_0x58a867){return new BPromise(function(_0x41be3b){_0x58a867[_0x6c55('0x30')]=0x0;_0x58a867['talking']=0x0;_0x58a867[_0x6c55('0x31')]=0x0;_0x58a867[_0x6c55('0x32')]=0x0;_0x58a867[_0x6c55('0x33')]=0x0;if(!_0x58a867[_0x6c55('0x34')]&&!_0x58a867['UserId']){_0x58a867[_0x6c55('0x30')]+=0x1;}if(!_0x58a867[_0x6c55('0x34')]&&_0x58a867[_0x6c55('0x35')]){_0x58a867[_0x6c55('0x36')]+=0x1;if(_0x58a867[_0x6c55('0x30')]){_0x58a867[_0x6c55('0x30')]-=0x1;}}if(_0x58a867[_0x6c55('0x34')]&&_0x58a867['UserId']){_0x58a867[_0x6c55('0x31')]+=0x1;if(_0x58a867[_0x6c55('0x36')]){_0x58a867[_0x6c55('0x36')]-=0x1;}}if(_0x58a867['closed']&&!_0x58a867[_0x6c55('0x35')]){_0x58a867[_0x6c55('0x32')]+=0x1;if(_0x58a867[_0x6c55('0x30')]){_0x58a867[_0x6c55('0x30')]-=0x1;}}_0x58a867[_0x6c55('0x33')]+=0x1;_0x41be3b(_0x58a867);});}exports['index']=function(_0x15a910,_0x130283){var _0xc16b64={},_0x272c3a={},_0x10b39e={'count':0x0,'rows':[]};var _0x3286f9=_[_0x6c55('0x37')](db[_0x6c55('0x38')][_0x6c55('0x39')],function(_0x18a170){return{'name':_0x18a170[_0x6c55('0x3a')],'type':_0x18a170['type'][_0x6c55('0x3b')]};});_0x272c3a[_0x6c55('0x3c')]=_[_0x6c55('0x37')](_0x3286f9,_0x6c55('0x27'));_0x272c3a['query']=_['keys'](_0x15a910['query']);_0x272c3a[_0x6c55('0x3d')]=_[_0x6c55('0x3e')](_0x272c3a[_0x6c55('0x3c')],_0x272c3a[_0x6c55('0x3f')]);_0xc16b64[_0x6c55('0x40')]=_[_0x6c55('0x3e')](_0x272c3a[_0x6c55('0x3c')],qs[_0x6c55('0x41')](_0x15a910['query'][_0x6c55('0x41')]));_0xc16b64[_0x6c55('0x40')]=_0xc16b64[_0x6c55('0x40')][_0x6c55('0x42')]?_0xc16b64[_0x6c55('0x40')]:_0x272c3a[_0x6c55('0x3c')];if(!_0x15a910[_0x6c55('0x3f')][_0x6c55('0x43')](_0x6c55('0x44'))){_0xc16b64[_0x6c55('0x1c')]=qs[_0x6c55('0x1c')](_0x15a910[_0x6c55('0x3f')][_0x6c55('0x1c')]);_0xc16b64['offset']=qs[_0x6c55('0x1a')](_0x15a910[_0x6c55('0x3f')]['offset']);}_0xc16b64[_0x6c55('0x45')]=qs[_0x6c55('0x46')](_0x15a910[_0x6c55('0x3f')][_0x6c55('0x46')]);_0xc16b64[_0x6c55('0x47')]=qs[_0x6c55('0x3d')](_[_0x6c55('0x48')](_0x15a910[_0x6c55('0x3f')],_0x272c3a[_0x6c55('0x3d')]),_0x3286f9);var _0x1600f1=[];var _0xedad0e=squel[_0x6c55('0x49')]()[_0x6c55('0x4a')]('id')[_0x6c55('0x4a')](_0x6c55('0x27'))[_0x6c55('0x4a')](_0x6c55('0x4b'))['from']('tools_tags');var _0x2d64ee=squel[_0x6c55('0x49')]()['field'](_0x6c55('0x4c'))[_0x6c55('0x4a')](_0x6c55('0x4d'))['field']('ui.SmsInteractionId')[_0x6c55('0x4e')]('user_has_sms_interactions','ui')['left_join'](_0x6c55('0x4f'),'u',_0x6c55('0x50'));var _0xff81dc=squel[_0x6c55('0x49')]()[_0x6c55('0x4e')](_0x6c55('0x51'),'i')[_0x6c55('0x52')]('cm_contacts','c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x6c55('0x52')](_0x6c55('0x4f'),'o',_0x6c55('0x53'))[_0x6c55('0x52')](_0x6c55('0x54'),'a',_0x6c55('0x55'))[_0x6c55('0x52')](_0x6c55('0x56'),'me',_0x6c55('0x57'))[_0x6c55('0x52')](_0x6c55('0x58'),'it','it.SmsInteractionId\x20=\x20i.id')[_0x6c55('0x52')](_0x6c55('0x59'),'t',_0x6c55('0x5a'));var _0x3cd98d=squel[_0x6c55('0x5b')]();var _0x33d119=[];var _0x36bbd1=squel[_0x6c55('0x5b')]();var _0x45b234;if(_0x15a910['query'][_0x6c55('0x5c')]){_0x45b234=as[_0x6c55('0x5d')](_0x15a910[_0x6c55('0x3f')]['search']);var _0x4d230c=_0x45b234[_0x6c55('0x5e')];for(var _0x591b5a=0x0;_0x591b5a<_0x45b234[_0x6c55('0x5f')][_0x6c55('0x42')];_0x591b5a++){var _0x5b331b=_0x45b234[_0x6c55('0x5f')][_0x591b5a];var _0x3cbbe2='i';var _0x148c93=_[_0x6c55('0x60')](_0x3286f9,[_0x6c55('0x27'),_0x5b331b[_0x6c55('0x4a')]]);if(!_0x148c93){switch(_0x5b331b[_0x6c55('0x4a')]){case _0x6c55('0x61'):if(_0x5b331b['value']==0x1){_0xff81dc[_0x6c55('0x62')]('`'+_0x5b331b['field']+'`\x20=\x200');}else{_0xff81dc['having']('`'+_0x5b331b[_0x6c55('0x4a')]+_0x6c55('0x63'));}break;case'Contact':if(_0x5b331b[_0x6c55('0x64')]===_0x6c55('0x65')){if(_0x5b331b[_0x6c55('0x66')][_0x6c55('0x2d')]('\x20')['length']>0x1){_0x3cd98d[_0x4d230c]('MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0x6c55('0x67')](_0x5b331b[_0x6c55('0x66')]),null);}else{var _0x1106e3='%'+_0x5b331b[_0x6c55('0x66')]+'%';_0x3cd98d[_0x4d230c](_0x6c55('0x68'),_0x1106e3,_0x1106e3,_0x1106e3);}}else{_0x148c93=_['find'](_0x3286f9,[_0x6c55('0x27'),_0x6c55('0x69')]);_0x5b331b['field']=_0x6c55('0x69');_0x350cc2=as[_0x6c55('0x6a')](_0x3cbbe2,_0x148c93[_0x6c55('0x6b')],_0x5b331b);_0x3cd98d[_0x4d230c](_0x350cc2[_0x6c55('0x6c')],_0x350cc2[_0x6c55('0x66')]['start'],_0x350cc2[_0x6c55('0x66')][_0x6c55('0x24')]);}break;case _0x6c55('0x6d'):var _0x4d333a=_0x5b331b[_0x6c55('0x66')][_0x6c55('0x2d')](',')[_0x6c55('0x37')](function(_0x31e0bf){return Number(_0x31e0bf);});_0x4d333a['forEach'](function(_0xa38e83){_0x36bbd1['or'](_0x6c55('0x6e'),'%,'+_0xa38e83+',%');});_0x33d119=_[_0x6c55('0x6f')](_0x33d119,_0x4d333a);break;case _0x6c55('0x70'):if(_0x5b331b[_0x6c55('0x64')]===_0x6c55('0x65')){_0x3cd98d[_0x4d230c](_0x6c55('0x71'),'%'+_0x5b331b[_0x6c55('0x66')]+'%',null);}else{_0x148c93=_[_0x6c55('0x60')](_0x3286f9,[_0x6c55('0x27'),_0x6c55('0x35')]);_0x5b331b['field']=_0x6c55('0x35');_0x350cc2=as['buildExpression'](_0x3cbbe2,_0x148c93[_0x6c55('0x6b')],_0x5b331b);_0x3cd98d[_0x4d230c](_0x350cc2['text'],_0x350cc2[_0x6c55('0x66')][_0x6c55('0x72')],_0x350cc2[_0x6c55('0x66')]['end']);}break;case _0x6c55('0x73'):_0x350cc2=as[_0x6c55('0x6a')]('me',null,_0x5b331b);_0x3cd98d[_0x4d230c](_0x350cc2['text'],_0x350cc2[_0x6c55('0x66')][_0x6c55('0x72')],_0x350cc2[_0x6c55('0x66')]['end']);break;}}else{var _0x350cc2=as[_0x6c55('0x6a')](_0x3cbbe2,_0x148c93[_0x6c55('0x6b')],_0x5b331b);_0x3cd98d[_0x4d230c](_0x350cc2[_0x6c55('0x6c')],_0x350cc2['value']['start'],_0x350cc2[_0x6c55('0x66')]['end']);}}}else{var _0x533422=_(_0x15a910['query'])[_0x6c55('0x74')]()[_0x6c55('0x37')](function(_0x14931b){return _['some'](_0x3286f9,[_0x6c55('0x27'),_0x14931b])?_0x14931b:undefined;})[_0x6c55('0x75')]()[_0x6c55('0x66')]();if(!_[_0x6c55('0x76')](_0x533422)){_0x533422['forEach'](function(_0x29236b){if(_0x29236b==='SmsAccountId'){_0xff81dc[_0x6c55('0x47')](_0x6c55('0x77'),[]['concat'](_0x15a910[_0x6c55('0x3f')][_0x29236b]));}else if(_0x29236b==='createdAt'){var _0x2fae9b=JSON[_0x6c55('0x78')](_0x15a910['query'][_0x29236b])[_0x6c55('0x79')];var _0x28d9a4=JSON['parse'](_0x15a910[_0x6c55('0x3f')][_0x29236b])['$lte'];_0xff81dc[_0x6c55('0x47')](_0x6c55('0x7a'),_0x2fae9b,_0x28d9a4);}else{if(_0x15a910[_0x6c55('0x3f')][_0x29236b]===_0x6c55('0x7b')){_0xff81dc[_0x6c55('0x47')]('i.'+_0x29236b+_0x6c55('0x7c'));}else{_0xff81dc[_0x6c55('0x47')]('i.'+_0x29236b+_0x6c55('0x7d'),_0x15a910[_0x6c55('0x3f')][_0x29236b]);}}});}if(_0x15a910[_0x6c55('0x3f')]['read']){if(_0x15a910[_0x6c55('0x3f')][_0x6c55('0x7e')]==0x1){_0xff81dc[_0x6c55('0x62')](_0x6c55('0x7f'));}else{_0xff81dc[_0x6c55('0x62')](_0x6c55('0x80'));}}if(_0x15a910[_0x6c55('0x3f')]['tag']){_0x33d119=_[_0x6c55('0x81')](_0x15a910[_0x6c55('0x3f')][_0x6c55('0x82')])?_0x15a910[_0x6c55('0x3f')][_0x6c55('0x82')]:new Array(_0x15a910[_0x6c55('0x3f')][_0x6c55('0x82')]);_0x33d119[_0x6c55('0x83')](function(_0x2c5704){_0x36bbd1['or'](_0x6c55('0x6e'),'%,'+_0x2c5704+',%');});}if(_0x15a910[_0x6c55('0x3f')][_0x6c55('0x84')]){var _0x427f7c=_0x15a910[_0x6c55('0x3f')][_0x6c55('0x84')][_0x6c55('0x85')]('\x5c','\x5c\x5c')[_0x6c55('0x85')](/'/g,'\x27\x27');if(qs['isNumeric'](_0x427f7c)){_0x3cd98d['or'](_0x6c55('0x86'),_0x427f7c+'%')['or'](_0x6c55('0x87'),_0x427f7c+'%');}else{_0x3cd98d['or'](_0x6c55('0x88'),qs[_0x6c55('0x67')](_0x427f7c))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x427f7c+'%');}}}_0xff81dc[_0x6c55('0x47')](_0x3cd98d);_0xff81dc['group']('i.id');var _0x495747={'type':db[_0x6c55('0x89')][_0x6c55('0x8a')][_0x6c55('0x8b')],'raw':!![]};var _0x5e13f4=_0xff81dc[_0x6c55('0x8c')]();_0x5e13f4[_0x6c55('0x4a')]('i.id');_0x5e13f4[_0x6c55('0x4a')]('SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)',_0x6c55('0x61'));if(_0xc16b64[_0x6c55('0x45')]){_0xc16b64[_0x6c55('0x45')]['forEach'](function(_0x4d9090){var _0x5d53a6=_0x4d9090[0x0]===_0x6c55('0x8d')?_0x4d9090[0x0]:'i.'+_0x4d9090[0x0];_0xff81dc['order'](_0x5d53a6,_0x4d9090[0x1]==='DESC'?![]:!![]);});}if(!_['isEmpty'](_0x33d119)){_0xff81dc['having'](_0x36bbd1);_0x5e13f4['where'](_0x6c55('0x8e'),_0x33d119);}BPromise[_0x6c55('0x8f')]()[_0x6c55('0x23')](function(){if(!_0x45b234){if(_0x15a910[_0x6c55('0x3f')][_0x6c55('0x90')])return;_0x5e13f4[_0x6c55('0x47')]('i.SmsAccountId\x20IS\x20NOT\x20NULL');_0xff81dc[_0x6c55('0x47')](_0x6c55('0x91'));return;}if(_0x15a910[_0x6c55('0x92')]['role']!=='agent')return;return _0x15a910[_0x6c55('0x92')][_0x6c55('0x93')]({'attributes':['id'],'raw':!![]})[_0x6c55('0x23')](function(_0x2aa1a0){if(_[_0x6c55('0x76')](_0x2aa1a0)){_0x5e13f4[_0x6c55('0x47')](_0x6c55('0x94'));_0xff81dc['where'](_0x6c55('0x94'));}else{_0x5e13f4[_0x6c55('0x47')](_0x6c55('0x77'),_['map'](_0x2aa1a0,'id'));_0xff81dc[_0x6c55('0x47')]('i.SmsAccountId\x20IN\x20?',_[_0x6c55('0x37')](_0x2aa1a0,'id'));}});})[_0x6c55('0x23')](function(){if(_0x15a910['user'][_0x6c55('0x95')]===_0x6c55('0x96')&&!_0x45b234&&!_0x15a910['query']['SmsAccountId'])return[];return db[_0x6c55('0x97')][_0x6c55('0x3f')](_0x5e13f4[_0x6c55('0x98')](),_0x495747);})[_0x6c55('0x23')](function(_0xb35e8a){_0x10b39e[_0x6c55('0x1d')]=_0xb35e8a[_0x6c55('0x42')];if(_0x10b39e[_0x6c55('0x1d')]===0x0)return[];return db[_0x6c55('0x97')]['query'](_0xedad0e[_0x6c55('0x98')](),_0x495747)[_0x6c55('0x23')](function(_0x51c86e){_0x1600f1=_[_0x6c55('0x99')](_0x51c86e,'id');_0x495747=_[_0x6c55('0x9a')](_0x495747,{'model':db[_0x6c55('0x38')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x15a910['query'][_0x6c55('0x41')]){_0xc16b64[_0x6c55('0x40')][_0x6c55('0x83')](function(_0x471fea){_0xff81dc[_0x6c55('0x4a')]('i.'+_0x471fea);});}else{_0xff81dc[_0x6c55('0x4a')](_0x6c55('0x9b'),_0x6c55('0x61'));_0xff81dc[_0x6c55('0x4a')]('a.key','Account.key');_0xff81dc[_0x6c55('0x4a')](_0x6c55('0x9c'),'Account.mandatoryDisposition');_0xff81dc[_0x6c55('0x4a')](_0x6c55('0x9d'),_0x6c55('0x8d'));_0xff81dc[_0x6c55('0x4a')](_0x6c55('0x9e'));_0xff81dc[_0x6c55('0x4a')](_0x6c55('0x9f'),_0x6c55('0xa0'));_0xff81dc[_0x6c55('0x4a')]('c.lastName',_0x6c55('0xa1'));_0xff81dc[_0x6c55('0x4a')](_0x6c55('0xa2'),_0x6c55('0xa3'));_0xff81dc['field'](_0x6c55('0xa4'),_0x6c55('0xa5'));_0xff81dc[_0x6c55('0x4a')](_0x6c55('0xa6'),_0x6c55('0xa7'));_0xff81dc['field'](_0x6c55('0xa8'),_0x6c55('0xa9'));_0xff81dc['field'](_0x6c55('0xaa'),_0x6c55('0xab'));_0xff81dc['field'](_0x6c55('0xac'),_0x6c55('0xad'));_0xff81dc['field'](_0x6c55('0xae'),_0x6c55('0x2b'));}if(_0xc16b64[_0x6c55('0x1c')])_0xff81dc[_0x6c55('0x1c')](_0xc16b64[_0x6c55('0x1c')]);if(_0xc16b64['offset'])_0xff81dc[_0x6c55('0x1a')](_0xc16b64[_0x6c55('0x1a')]);return db[_0x6c55('0x97')][_0x6c55('0x3f')](_0xff81dc[_0x6c55('0x98')](),_0x495747);})[_0x6c55('0x23')](function(_0x11ad95){if(_0x11ad95[_0x6c55('0x42')]>0x0)_0x2d64ee['where'](_0x6c55('0xaf'),_['map'](_0x11ad95,'id'));return db[_0x6c55('0x97')][_0x6c55('0x3f')](_0x2d64ee['toString'](),_0x495747)[_0x6c55('0x23')](function(_0x15080a){var _0x2ed8ae=_[_0x6c55('0xb0')](_0x15080a,_0x6c55('0xb1'));var _0x163e96=[];_0x11ad95[_0x6c55('0x83')](function(_0x29acf5){_0x163e96[_0x6c55('0x2e')](updateSmsInteraction(_0x29acf5,_0x1600f1,_0x2ed8ae));});return BPromise[_0x6c55('0xb2')](_0x163e96);});});})[_0x6c55('0x23')](function(_0x4119b7){_0x10b39e[_0x6c55('0xb3')]=_0x4119b7;return _0x10b39e;})[_0x6c55('0x23')](respondWithFilteredResult(_0x130283,_0xc16b64))[_0x6c55('0x2f')](handleError(_0x130283,null));};exports[_0x6c55('0xb4')]=function(_0x266c90,_0x4ac154){var _0x5469df={'raw':![],'where':{'id':_0x266c90[_0x6c55('0xb5')]['id']}},_0x5a3c={};_0x5a3c[_0x6c55('0x3c')]=_[_0x6c55('0x74')](db['SmsInteraction'][_0x6c55('0x39')]);_0x5a3c[_0x6c55('0x3f')]=_[_0x6c55('0x74')](_0x266c90[_0x6c55('0x3f')]);_0x5a3c['filters']=_[_0x6c55('0x3e')](_0x5a3c[_0x6c55('0x3c')],_0x5a3c[_0x6c55('0x3f')]);_0x5469df[_0x6c55('0x40')]=_[_0x6c55('0x3e')](_0x5a3c[_0x6c55('0x3c')],qs['fields'](_0x266c90[_0x6c55('0x3f')][_0x6c55('0x41')]));_0x5469df[_0x6c55('0x40')]=_0x5469df[_0x6c55('0x40')][_0x6c55('0x42')]?_0x5469df[_0x6c55('0x40')]:_0x5a3c['model'];if(_0x266c90['query'][_0x6c55('0xb6')]){_0x5469df[_0x6c55('0xb7')]=[{'all':!![]}];}_0x5469df=_[_0x6c55('0x9a')]({},_0x5469df,_0x266c90[_0x6c55('0xb8')]);return db[_0x6c55('0x38')][_0x6c55('0x60')](_0x5469df)[_0x6c55('0x23')](handleEntityNotFound(_0x4ac154,null))[_0x6c55('0x23')](respondWithResult(_0x4ac154,null))['catch'](handleError(_0x4ac154,null));};exports[_0x6c55('0xb9')]=function(_0x35d21f,_0x5815ff){return db[_0x6c55('0x38')]['create'](_0x35d21f[_0x6c55('0x73')],{})[_0x6c55('0x23')](respondWithResult(_0x5815ff,0xc9))[_0x6c55('0x2f')](handleError(_0x5815ff,null));};exports[_0x6c55('0x21')]=function(_0x50995f,_0x2318f7){if(_0x50995f[_0x6c55('0x73')]['id']){delete _0x50995f[_0x6c55('0x73')]['id'];}return db[_0x6c55('0x38')][_0x6c55('0x60')]({'where':{'id':_0x50995f[_0x6c55('0xb5')]['id']}})['then'](handleEntityNotFound(_0x2318f7,null))[_0x6c55('0x23')](saveUpdates(_0x50995f[_0x6c55('0x73')],null))[_0x6c55('0x23')](respondWithResult(_0x2318f7,null))[_0x6c55('0x2f')](handleError(_0x2318f7,null));};exports[_0x6c55('0x22')]=function(_0x351cd0,_0x4eb709){return db[_0x6c55('0x38')]['find']({'where':{'id':_0x351cd0['params']['id']}})['then'](handleEntityNotFound(_0x4eb709,null))['then'](removeEntity(_0x4eb709,null))[_0x6c55('0x2f')](handleError(_0x4eb709,null));};exports['describe']=function(_0x593cbc,_0x270218){return db[_0x6c55('0x38')][_0x6c55('0xba')]()[_0x6c55('0x23')](respondWithResult(_0x270218,null))[_0x6c55('0x2f')](handleError(_0x270218,null));};exports[_0x6c55('0xbb')]=function(_0x39ec88,_0x49498b,_0xc4aed5){return db[_0x6c55('0xbc')][_0x6c55('0x60')]({'where':{'id':_0x39ec88[_0x6c55('0xb5')]['id']}})[_0x6c55('0x23')](handleEntityNotFound(_0x49498b,null))[_0x6c55('0x23')](function(_0x1fc55b){if(_0x1fc55b){return _0x1fc55b[_0x6c55('0xbb')](_0x39ec88[_0x6c55('0x73')][_0x6c55('0xbd')],_['omit'](_0x39ec88[_0x6c55('0x73')],[_0x6c55('0xbd'),'id'])||{});}})[_0x6c55('0x23')](respondWithResult(_0x49498b,null))[_0x6c55('0x2f')](handleError(_0x49498b,null));};exports[_0x6c55('0xbe')]=function(_0x53d86e,_0x2656d6,_0x2201de){var _0xb4c80f={'raw':![],'where':{}};var _0xf244c8={};var _0x231c0e={'count':0x0,'rows':[]};return db[_0x6c55('0x38')][_0x6c55('0xbf')]({'where':{'id':_0x53d86e['params']['id']}})[_0x6c55('0x23')](handleEntityNotFound(_0x2656d6,null))['then'](function(_0x2f8ddb){if(_0x2f8ddb){_0xf244c8[_0x6c55('0x3c')]=_[_0x6c55('0x74')](db[_0x6c55('0xbc')]['rawAttributes']);_0xf244c8['query']=_[_0x6c55('0x74')](_0x53d86e['query']);_0xf244c8[_0x6c55('0x3d')]=_[_0x6c55('0x3e')](_0xf244c8[_0x6c55('0x3c')],_0xf244c8['query']);_0xb4c80f[_0x6c55('0x40')]=_[_0x6c55('0x3e')](_0xf244c8[_0x6c55('0x3c')],qs[_0x6c55('0x41')](_0x53d86e[_0x6c55('0x3f')][_0x6c55('0x41')]));_0xb4c80f[_0x6c55('0x40')]=_0xb4c80f[_0x6c55('0x40')][_0x6c55('0x42')]?_0xb4c80f[_0x6c55('0x40')]:_0xf244c8[_0x6c55('0x3c')];if(!_0x53d86e[_0x6c55('0x3f')][_0x6c55('0x43')](_0x6c55('0x44'))){_0xb4c80f[_0x6c55('0x1c')]=qs[_0x6c55('0x1c')](_0x53d86e[_0x6c55('0x3f')][_0x6c55('0x1c')]);_0xb4c80f['offset']=qs['offset'](_0x53d86e['query']['offset']);}_0xb4c80f['order']=qs['sort'](_0x53d86e[_0x6c55('0x3f')][_0x6c55('0x46')]);_0xb4c80f['where']=qs['filters'](_['pick'](_0x53d86e['query'],_0xf244c8[_0x6c55('0x3d')]));_0xb4c80f['where'][_0x6c55('0xb1')]=_0x2f8ddb['id'];if(_0x53d86e[_0x6c55('0x3f')][_0x6c55('0x84')]){_0xb4c80f['where']=_['merge'](_0xb4c80f[_0x6c55('0x47')],{'$or':_['map'](_0xb4c80f[_0x6c55('0x40')],function(_0x2ec2de){var _0x1fa5a3={};_0x1fa5a3[_0x2ec2de]={'$like':'%'+_0x53d86e[_0x6c55('0x3f')][_0x6c55('0x84')]+'%'};return _0x1fa5a3;})});}if(_0x53d86e['query'][_0x6c55('0x79')]){var _0x22585e=_0x53d86e[_0x6c55('0x3f')][_0x6c55('0x79')]['split'](',');var _0x4f1fe3={};_0x4f1fe3[_0x22585e[0x0]]={'$gte':moment(_0x22585e[0x1])[_0x6c55('0xc0')]('YYYY-MM-DD\x20HH:mm:ss')};_0xb4c80f[_0x6c55('0x47')]=_['merge'](_0xb4c80f['where'],_0x4f1fe3);}_0xb4c80f=_[_0x6c55('0x9a')]({},_0xb4c80f,_0x53d86e[_0x6c55('0xb8')]);return db[_0x6c55('0xbc')][_0x6c55('0x1d')]({'where':_0xb4c80f['where']})[_0x6c55('0x23')](function(_0x885fd9){_0x231c0e[_0x6c55('0x1d')]=_0x885fd9;if(_0x53d86e[_0x6c55('0x3f')]['includeAll']){_0xb4c80f[_0x6c55('0xb7')]=[{'all':!![]}];}return db[_0x6c55('0xbc')][_0x6c55('0xc1')](_0xb4c80f);})[_0x6c55('0x23')](function(_0x380485){_0x231c0e[_0x6c55('0xb3')]=_0x380485;return _0x231c0e;});}})['then'](respondWithFilteredResult(_0x2656d6,_0xb4c80f))[_0x6c55('0x2f')](handleError(_0x2656d6,null));};exports[_0x6c55('0xc2')]=function(_0x201960,_0x3ad1b3,_0x248177){return db[_0x6c55('0x38')][_0x6c55('0x60')]({'where':{'id':_0x201960[_0x6c55('0xb5')]['id']}})[_0x6c55('0x23')](handleEntityNotFound(_0x3ad1b3,null))[_0x6c55('0x23')](function(_0x236254){if(_0x236254){return _0x236254[_0x6c55('0xc3')](_0x201960[_0x6c55('0x73')]['ids'],_['omit'](_0x201960[_0x6c55('0x73')],[_0x6c55('0xbd'),'id'])||{})[_0x6c55('0xc4')](function(){return db[_0x6c55('0x6d')][_0x6c55('0xc1')]({'attributes':['id',_0x6c55('0x27'),'color'],'where':{'id':_0x201960[_0x6c55('0x73')][_0x6c55('0xbd')]}});})[_0x6c55('0x23')](function(_0x1777af){socket[_0x6c55('0xc5')](_0x6c55('0xc6'),{'id':Number(_0x201960[_0x6c55('0xb5')]['id']),'tags':_0x1777af||[]});return{'id':Number(_0x201960[_0x6c55('0xb5')]['id']),'tags':_0x1777af||[]};});}})[_0x6c55('0x23')](respondWithResult(_0x3ad1b3,null))[_0x6c55('0x2f')](handleError(_0x3ad1b3,null));};exports['removeTags']=function(_0x4977e8,_0xb57e7,_0x668c42){return db['SmsInteraction'][_0x6c55('0x60')]({'where':{'id':_0x4977e8[_0x6c55('0xb5')]['id']}})[_0x6c55('0x23')](handleEntityNotFound(_0xb57e7,null))[_0x6c55('0x23')](function(_0x2bfc98){if(_0x2bfc98){return _0x2bfc98['removeTags'](_0x4977e8[_0x6c55('0x3f')][_0x6c55('0xbd')]);}})[_0x6c55('0x23')](respondWithStatusCode(_0xb57e7,null))[_0x6c55('0x2f')](handleError(_0xb57e7,null));};exports[_0x6c55('0xc7')]=function(_0x44a979,_0x4dd153){var _0x476a27=moment()[_0x6c55('0xc8')]()[_0x6c55('0x98')]();var _0x1024a3=path[_0x6c55('0xc9')](config[_0x6c55('0xca')],_0x6c55('0xcb'),_0x6c55('0xcc'),_0x6c55('0xcd'));var _0x10f132=path[_0x6c55('0xc9')](config[_0x6c55('0xca')],_0x6c55('0xcb'),_0x6c55('0xcc'),_0x6c55('0xce'));var _0x298aa9=path[_0x6c55('0xc9')](_0x1024a3,_0x476a27);var _0x3796f3=util[_0x6c55('0xc0')](_0x6c55('0xcf'),_0x44a979[_0x6c55('0xb5')]['id'],_0x476a27);var _0x370540=path[_0x6c55('0xc9')](_0x1024a3,_0x3796f3);var _0x21a47b=[];_0x21a47b[_0x6c55('0x2e')]({'model':db[_0x6c55('0x70')],'as':_0x6c55('0x70'),'attributes':['id',_0x6c55('0x2a')],'raw':!![]});_0x21a47b[_0x6c55('0x2e')]({'model':db[_0x6c55('0xd0')],'as':_0x6c55('0xd1'),'attributes':['id','firstName',_0x6c55('0xd2')],'raw':!![]});var _0x38e8e3=[{'model':db[_0x6c55('0xbc')],'as':_0x6c55('0xd3'),'attributes':['id',_0x6c55('0x73'),_0x6c55('0xd4'),_0x6c55('0xd5'),_0x6c55('0xd6'),_0x6c55('0x7e')],'include':_0x21a47b}];_0x38e8e3[_0x6c55('0x2e')]({'model':db[_0x6c55('0xd7')],'as':'Account','attributes':['id','name']});_0x38e8e3[_0x6c55('0x2e')]({'model':db[_0x6c55('0x70')],'as':_0x6c55('0xd8'),'attributes':['id',_0x6c55('0x2a')]});return db[_0x6c55('0x38')][_0x6c55('0x60')]({'where':{'id':_0x44a979[_0x6c55('0xb5')]['id']},'include':_0x38e8e3})[_0x6c55('0x23')](handleEntityNotFound(_0x4dd153,null))[_0x6c55('0x23')](function(_0x4dd188){if(_0x4dd188){var _0x15f846=_0x4dd188['get']({'plain':!![]});fs['mkdirSync'](_0x298aa9);var _0xdc7fee={'channel':'Sms','account':_0x15f846[_0x6c55('0xd9')]['name'],'agent':_0x15f846[_0x6c55('0xd8')]?_0x15f846[_0x6c55('0xd8')][_0x6c55('0x2a')]:_0x6c55('0xda'),'createdAt':moment(_0x15f846[_0x6c55('0xd4')])[_0x6c55('0xc0')]('YYYY-MM-DD\x20HH:mm:ss')[_0x6c55('0x98')](),'closedAt':_0x15f846[_0x6c55('0x34')]?moment(_0x15f846[_0x6c55('0xdb')])[_0x6c55('0xc0')](_0x6c55('0xdc'))['toString']():'','disposition':_0x15f846['disposition'],'messages':_(_0x15f846[_0x6c55('0xd3')])[_0x6c55('0x84')]({'secret':![]})[_0x6c55('0x37')](function(_0x3abb38){return{'date':moment(_0x3abb38[_0x6c55('0xd4')])[_0x6c55('0xc0')](_0x6c55('0xdc'))['toString'](),'sender':_0x3abb38[_0x6c55('0xd5')]===_0x6c55('0xdd')?_0x3abb38[_0x6c55('0x70')]?_0x3abb38['User'][_0x6c55('0x2a')]:_0x6c55('0xde'):_0x3abb38['Contact']['firstName']+(_0x3abb38[_0x6c55('0xd1')]['lastName']?'\x20'+_0x3abb38[_0x6c55('0xd1')][_0x6c55('0xd2')]:''),'body':_0x3abb38[_0x6c55('0x73')],'direction':_0x3abb38['direction']===_0x6c55('0xdd')?'A':'C','secret':_0x3abb38['secret'],'read':_0x3abb38[_0x6c55('0x7e')]};})[_0x6c55('0x66')]()};return ejs[_0x6c55('0xdf')](path['join'](config['root'],_0x6c55('0xcb'),_0x6c55('0xe0'),'downloadInteraction.ejs'),{'interaction':_0xdc7fee})['then'](function(_0x391eb8){var _0x4162e0=path[_0x6c55('0xc9')](_0x298aa9,_0x6c55('0xe1')+_0x15f846['id']+'-'+_0x476a27+_0x6c55('0xe2'));var _0x2582d9={'path':_0x4162e0,'channel':_0x6c55('0xe3'),'interactionId':_0x15f846['id']};return pdf[_0x6c55('0xe4')](_0x391eb8,_0x2582d9);})[_0x6c55('0x23')](function(){return new BPromise(function(_0x5db3b2,_0x21e401){zipdir(_0x298aa9,{'saveTo':_0x370540},function(_0x4c2f41,_0x322530){if(_0x4c2f41)return _0x21e401(_0x4c2f41);return _0x5db3b2(_0x322530);});})[_0x6c55('0x23')](function(){return new BPromise(function(_0xb912bb,_0x3610f3){rimraf(_0x298aa9,function(_0x5dd9e5){if(_0x5dd9e5)_0x3610f3(_0x5dd9e5);return _0xb912bb();});});})[_0x6c55('0x23')](function(){return _0x4dd153[_0x6c55('0xc7')](_0x370540,_0x3796f3,function(_0x505dbb){if(_0x505dbb){console[_0x6c55('0xe5')](_0x6c55('0xe6'),_0x505dbb);}else{fs[_0x6c55('0xe7')](_0x370540);}});});});}else{return _0x4dd153[_0x6c55('0x17')](0xc8);}})[_0x6c55('0x2f')](handleError(_0x4dd153,null));};
\ No newline at end of file
index e8962ef..a1125ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['Users','map','findAll','then','unreadMessages','length','emit','catch','hook','exports','events','../../mysqldb','SmsInteraction','setMaxListeners','save','update','remove','setDataValue'];(function(_0x1b45a1,_0x9dbb01){var _0x5e9b25=function(_0x15975e){while(--_0x15975e){_0x1b45a1['push'](_0x1b45a1['shift']());}};_0x5e9b25(++_0x9dbb01);}(_0xdb28,0x106));var _0x8db2=function(_0x46c7bc,_0x34d7d9){_0x46c7bc=_0x46c7bc-0x0;var _0x5affcd=_0xdb28[_0x46c7bc];return _0x5affcd;};'use strict';var EventEmitter=require(_0x8db2('0x0'));var SmsInteraction=require(_0x8db2('0x1'))['db'][_0x8db2('0x2')];var SmsMessage=require(_0x8db2('0x1'))['db']['SmsMessage'];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents[_0x8db2('0x3')](0x0);var events={'afterCreate':_0x8db2('0x4'),'afterUpdate':_0x8db2('0x5'),'afterDestroy':_0x8db2('0x6')};function emitEvent(_0x11109e){return function(_0x52bf99,_0x21a03e,_0x1d2dd3){_0x52bf99['getUsers']({'attributes':['id'],'raw':!![]})['then'](function(_0x477f50){_0x52bf99[_0x8db2('0x7')](_0x8db2('0x8'),_0x477f50[_0x8db2('0x9')](function(_0x2f3f2f){return{'id':_0x2f3f2f['id']};}));return SmsMessage[_0x8db2('0xa')]({'where':{'SmsInteractionId':_0x52bf99['id'],'direction':'in','read':![]},'raw':!![]});})[_0x8db2('0xb')](function(_0x4ba340){_0x52bf99[_0x8db2('0x7')](_0x8db2('0xc'),_0x4ba340[_0x8db2('0xd')]);SmsInteractionEvents['emit'](_0x11109e+':'+_0x52bf99['id'],_0x52bf99);SmsInteractionEvents[_0x8db2('0xe')](_0x11109e,_0x52bf99);_0x1d2dd3(null);})[_0x8db2('0xf')](_0x1d2dd3(null));};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];SmsInteraction[_0x8db2('0x10')](e,emitEvent(event));}}module[_0x8db2('0x11')]=SmsInteractionEvents;
\ No newline at end of file
+var _0xcf2f=['setDataValue','Users','map','unreadMessages','emit','catch','hasOwnProperty','events','../../mysqldb','SmsInteraction','SmsMessage','save','update','remove','getUsers','then'];(function(_0x3ae2b2,_0x2d936f){var _0x1dbf00=function(_0x4072e9){while(--_0x4072e9){_0x3ae2b2['push'](_0x3ae2b2['shift']());}};_0x1dbf00(++_0x2d936f);}(_0xcf2f,0xa7));var _0xfcf2=function(_0x2f5695,_0x22a054){_0x2f5695=_0x2f5695-0x0;var _0x2cacb6=_0xcf2f[_0x2f5695];return _0x2cacb6;};'use strict';var EventEmitter=require(_0xfcf2('0x0'));var SmsInteraction=require(_0xfcf2('0x1'))['db'][_0xfcf2('0x2')];var SmsMessage=require(_0xfcf2('0x1'))['db'][_0xfcf2('0x3')];var SmsInteractionEvents=new EventEmitter();SmsInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xfcf2('0x4'),'afterUpdate':_0xfcf2('0x5'),'afterDestroy':_0xfcf2('0x6')};function emitEvent(_0x34bcaf){return function(_0x179e60,_0x167a77,_0x1e6d99){_0x179e60[_0xfcf2('0x7')]({'attributes':['id'],'raw':!![]})[_0xfcf2('0x8')](function(_0x157f48){_0x179e60[_0xfcf2('0x9')](_0xfcf2('0xa'),_0x157f48[_0xfcf2('0xb')](function(_0x13ce18){return{'id':_0x13ce18['id']};}));return SmsMessage['findAll']({'where':{'SmsInteractionId':_0x179e60['id'],'direction':'in','read':![]},'raw':!![]});})['then'](function(_0x4d6fc9){_0x179e60[_0xfcf2('0x9')](_0xfcf2('0xc'),_0x4d6fc9['length']);SmsInteractionEvents[_0xfcf2('0xd')](_0x34bcaf+':'+_0x179e60['id'],_0x179e60);SmsInteractionEvents[_0xfcf2('0xd')](_0x34bcaf,_0x179e60);_0x1e6d99(null);})[_0xfcf2('0xe')](_0x1e6d99(null));};}for(var e in events){if(events[_0xfcf2('0xf')](e)){var event=events[e];SmsInteraction['hook'](e,emitEvent(event));}}module['exports']=SmsInteractionEvents;
\ No newline at end of file
index 6fe778a..80e815a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e3c=['request-promise','path','rimraf','../../config/environment','exports','define','SmsInteraction','sms_interactions','YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api'];(function(_0x2d10bb,_0xc62143){var _0x1279dd=function(_0x4543c7){while(--_0x4543c7){_0x2d10bb['push'](_0x2d10bb['shift']());}};_0x1279dd(++_0xc62143);}(_0x8e3c,0x1b6));var _0xc8e3=function(_0x1b5b1f,_0x4506dc){_0x1b5b1f=_0x1b5b1f-0x0;var _0x1f8a3f=_0x8e3c[_0x1b5b1f];return _0x1f8a3f;};'use strict';var _=require(_0xc8e3('0x0'));var util=require(_0xc8e3('0x1'));var logger=require(_0xc8e3('0x2'))(_0xc8e3('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0xc8e3('0x4'));var fs=require('fs');var path=require(_0xc8e3('0x5'));var rimraf=require(_0xc8e3('0x6'));var config=require(_0xc8e3('0x7'));var attributes=require('./smsInteraction.attributes');module[_0xc8e3('0x8')]=function(_0x1b373a,_0x152d75){return _0x1b373a[_0xc8e3('0x9')](_0xc8e3('0xa'),attributes,{'tableName':_0xc8e3('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x11f296,_0x18bf19,_0x2edd98){if(_0x11f296['changed']('closed')){_0x11f296['closedAt']=moment()['format'](_0xc8e3('0xc'));}_0x2edd98(null,_0x11f296);}}});};
\ No newline at end of file
+var _0x9d29=['YYYY-MM-DD\x20HH:mm:ss','lodash','util','../../config/logger','api','bluebird','path','../../config/environment','./smsInteraction.attributes','exports','define','sms_interactions','closed','closedAt','format'];(function(_0x1d7e6b,_0x562b6f){var _0x5119ab=function(_0x21513d){while(--_0x21513d){_0x1d7e6b['push'](_0x1d7e6b['shift']());}};_0x5119ab(++_0x562b6f);}(_0x9d29,0x1d2));var _0x99d2=function(_0xf8886b,_0x504891){_0xf8886b=_0xf8886b-0x0;var _0x321bd5=_0x9d29[_0xf8886b];return _0x321bd5;};'use strict';var _=require(_0x99d2('0x0'));var util=require(_0x99d2('0x1'));var logger=require(_0x99d2('0x2'))(_0x99d2('0x3'));var moment=require('moment');var BPromise=require(_0x99d2('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x99d2('0x5'));var rimraf=require('rimraf');var config=require(_0x99d2('0x6'));var attributes=require(_0x99d2('0x7'));module[_0x99d2('0x8')]=function(_0x3d5413,_0x500200){return _0x3d5413[_0x99d2('0x9')]('SmsInteraction',attributes,{'tableName':_0x99d2('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x4cb127,_0x149916,_0x14228f){if(_0x4cb127['changed'](_0x99d2('0xb'))){_0x4cb127[_0x99d2('0xc')]=moment()[_0x99d2('0xd')](_0x99d2('0xe'));}_0x14228f(null,_0x4cb127);}}});};
\ No newline at end of file
index 71bbe59..c383782 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x29f3=['code','message','info','result','UpdateSmsInteraction','SmsInteraction','update','options','where','attributes','limit','debug','catch','AddTagsToSmsInteraction','find','addTags','body','ids','omit','spread','AddTags','moment','bluebird','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','redis','socket.io-emitter','./smsInteraction.socket','register','then','SmsInteraction,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x4c3ffe,_0x457374){var _0x28d3eb=function(_0x3ae2a3){while(--_0x3ae2a3){_0x4c3ffe['push'](_0x4c3ffe['shift']());}};_0x28d3eb(++_0x457374);}(_0x29f3,0x16b));var _0x329f=function(_0x20add8,_0x23bf2e){_0x20add8=_0x20add8-0x0;var _0x895e0a=_0x29f3[_0x20add8];return _0x895e0a;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x329f('0x0'));var BPromise=require(_0x329f('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x329f('0x2'));var db=require(_0x329f('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x329f('0x4'))('rpc');var config=require(_0x329f('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x329f('0x6')][_0x329f('0x7')]({'port':0x232a});config[_0x329f('0x8')]=_['defaults'](config[_0x329f('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x329f('0x9'))(new Redis(config[_0x329f('0x8')]));require(_0x329f('0xa'))[_0x329f('0xb')](socket);function respondWithRpcPromise(_0x51129c,_0x3e375b,_0x27cf43){return new BPromise(function(_0x1667d1,_0x267c42){return client['request'](_0x51129c,_0x27cf43)[_0x329f('0xc')](function(_0x491d63){logger['info'](_0x329f('0xd'),_0x3e375b,_0x329f('0xe'));logger['debug']('SmsInteraction,\x20%s,\x20%s,\x20%s',_0x3e375b,_0x329f('0xe'),JSON[_0x329f('0xf')](_0x491d63));if(_0x491d63[_0x329f('0x10')]){if(_0x491d63['error'][_0x329f('0x11')]===0x1f4){logger['error'](_0x329f('0xd'),_0x3e375b,_0x491d63['error'][_0x329f('0x12')]);return _0x267c42(_0x491d63['error'][_0x329f('0x12')]);}logger[_0x329f('0x10')](_0x329f('0xd'),_0x3e375b,_0x491d63[_0x329f('0x10')][_0x329f('0x12')]);return _0x1667d1(_0x491d63[_0x329f('0x10')]['message']);}else{logger[_0x329f('0x13')](_0x329f('0xd'),_0x3e375b,'request\x20sent');_0x1667d1(_0x491d63[_0x329f('0x14')][_0x329f('0x12')]);}})['catch'](function(_0xc97bb1){logger[_0x329f('0x10')](_0x329f('0xd'),_0x3e375b,_0xc97bb1);_0x267c42(_0xc97bb1);});});}exports[_0x329f('0x15')]=function(_0x23c845){var _0x1b0342=this;return new Promise(function(_0xec82d1,_0x26bcfc){return db[_0x329f('0x16')][_0x329f('0x17')](_0x23c845['body'],{'raw':_0x23c845[_0x329f('0x18')]?_0x23c845[_0x329f('0x18')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x23c845['options']?_0x23c845['options'][_0x329f('0x19')]||null:null,'attributes':_0x23c845[_0x329f('0x18')]?_0x23c845[_0x329f('0x18')][_0x329f('0x1a')]||null:null,'limit':_0x23c845[_0x329f('0x18')]?_0x23c845[_0x329f('0x18')][_0x329f('0x1b')]||null:null})[_0x329f('0xc')](function(_0x5e6cd2){logger[_0x329f('0x13')]('UpdateSmsInteraction',_0x23c845);logger[_0x329f('0x1c')](_0x329f('0x15'),_0x23c845,JSON['stringify'](_0x5e6cd2));_0xec82d1(_0x5e6cd2);})[_0x329f('0x1d')](function(_0x9fa3e1){logger[_0x329f('0x10')](_0x329f('0x15'),_0x9fa3e1[_0x329f('0x12')],_0x23c845);_0x26bcfc(_0x1b0342['error'](0x1f4,_0x9fa3e1[_0x329f('0x12')]));});});};exports[_0x329f('0x1e')]=function(_0x55916a){return new Promise(function(_0x201a40,_0x1f6fcb){return db['SmsInteraction'][_0x329f('0x1f')]({'where':_0x55916a['options']?_0x55916a[_0x329f('0x18')][_0x329f('0x19')]||null:null})[_0x329f('0xc')](function(_0x2905e2){if(_0x2905e2){return _0x2905e2[_0x329f('0x20')](_0x55916a[_0x329f('0x21')][_0x329f('0x22')],_[_0x329f('0x23')](_0x55916a[_0x329f('0x21')],[_0x329f('0x22'),'id'])||{});}})[_0x329f('0x24')](function(_0x3feb33){logger[_0x329f('0x13')](_0x329f('0x25'),_0x55916a);logger[_0x329f('0x1c')](_0x329f('0x25'),_0x55916a,JSON[_0x329f('0xf')](_0x3feb33));_0x201a40(_0x3feb33);})[_0x329f('0x1d')](function(_0x2730bf){logger[_0x329f('0x10')](_0x329f('0x25'),_0x2730bf[_0x329f('0x12')],_0x55916a);_0x1f6fcb(_this['error'](0x1f4,_0x2730bf[_0x329f('0x12')]));});});};
\ No newline at end of file
+var _0xfdad=['ids','omit','spread','AddTags','catch','util','moment','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./smsInteraction.socket','register','request','then','info','SmsInteraction,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','result','UpdateSmsInteraction','SmsInteraction','update','body','options','attributes','AddTagsToSmsInteraction','addTags'];(function(_0x209941,_0x5c9988){var _0x1e8729=function(_0x51a9b8){while(--_0x51a9b8){_0x209941['push'](_0x209941['shift']());}};_0x1e8729(++_0x5c9988);}(_0xfdad,0x13d));var _0xdfda=function(_0x2b25b4,_0x233179){_0x2b25b4=_0x2b25b4-0x0;var _0x30404d=_0xfdad[_0x2b25b4];return _0x30404d;};'use strict';var _=require('lodash');var util=require(_0xdfda('0x0'));var moment=require(_0xdfda('0x1'));var BPromise=require('bluebird');var rs=require(_0xdfda('0x2'));var fs=require('fs');var Redis=require(_0xdfda('0x3'));var db=require(_0xdfda('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xdfda('0x5'));var config=require(_0xdfda('0x6'));var jayson=require(_0xdfda('0x7'));var client=jayson[_0xdfda('0x8')][_0xdfda('0x9')]({'port':0x232a});config[_0xdfda('0xa')]=_[_0xdfda('0xb')](config[_0xdfda('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0xdfda('0xc'))(new Redis(config[_0xdfda('0xa')]));require(_0xdfda('0xd'))[_0xdfda('0xe')](socket);function respondWithRpcPromise(_0x4002c5,_0x23c22b,_0x4fc481){return new BPromise(function(_0x47817d,_0x1159cc){return client[_0xdfda('0xf')](_0x4002c5,_0x4fc481)[_0xdfda('0x10')](function(_0x478709){logger[_0xdfda('0x11')](_0xdfda('0x12'),_0x23c22b,_0xdfda('0x13'));logger[_0xdfda('0x14')]('SmsInteraction,\x20%s,\x20%s,\x20%s',_0x23c22b,_0xdfda('0x13'),JSON[_0xdfda('0x15')](_0x478709));if(_0x478709['error']){if(_0x478709[_0xdfda('0x16')][_0xdfda('0x17')]===0x1f4){logger[_0xdfda('0x16')](_0xdfda('0x12'),_0x23c22b,_0x478709[_0xdfda('0x16')][_0xdfda('0x18')]);return _0x1159cc(_0x478709['error']['message']);}logger['error'](_0xdfda('0x12'),_0x23c22b,_0x478709[_0xdfda('0x16')]['message']);return _0x47817d(_0x478709[_0xdfda('0x16')][_0xdfda('0x18')]);}else{logger[_0xdfda('0x11')](_0xdfda('0x12'),_0x23c22b,_0xdfda('0x13'));_0x47817d(_0x478709[_0xdfda('0x19')]['message']);}})['catch'](function(_0x413dba){logger[_0xdfda('0x16')](_0xdfda('0x12'),_0x23c22b,_0x413dba);_0x1159cc(_0x413dba);});});}exports[_0xdfda('0x1a')]=function(_0x1eaa29){var _0x4e9c4b=this;return new Promise(function(_0x4dcfa0,_0x328f94){return db[_0xdfda('0x1b')][_0xdfda('0x1c')](_0x1eaa29[_0xdfda('0x1d')],{'raw':_0x1eaa29[_0xdfda('0x1e')]?_0x1eaa29[_0xdfda('0x1e')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1eaa29[_0xdfda('0x1e')]?_0x1eaa29[_0xdfda('0x1e')]['where']||null:null,'attributes':_0x1eaa29[_0xdfda('0x1e')]?_0x1eaa29[_0xdfda('0x1e')][_0xdfda('0x1f')]||null:null,'limit':_0x1eaa29[_0xdfda('0x1e')]?_0x1eaa29[_0xdfda('0x1e')]['limit']||null:null})[_0xdfda('0x10')](function(_0x55c55d){logger[_0xdfda('0x11')](_0xdfda('0x1a'),_0x1eaa29);logger[_0xdfda('0x14')](_0xdfda('0x1a'),_0x1eaa29,JSON[_0xdfda('0x15')](_0x55c55d));_0x4dcfa0(_0x55c55d);})['catch'](function(_0x362d88){logger[_0xdfda('0x16')]('UpdateSmsInteraction',_0x362d88[_0xdfda('0x18')],_0x1eaa29);_0x328f94(_0x4e9c4b[_0xdfda('0x16')](0x1f4,_0x362d88[_0xdfda('0x18')]));});});};exports[_0xdfda('0x20')]=function(_0x92cdc5){return new Promise(function(_0x31b5c2,_0x14b2f9){return db[_0xdfda('0x1b')]['find']({'where':_0x92cdc5[_0xdfda('0x1e')]?_0x92cdc5[_0xdfda('0x1e')]['where']||null:null})[_0xdfda('0x10')](function(_0x59a328){if(_0x59a328){return _0x59a328[_0xdfda('0x21')](_0x92cdc5[_0xdfda('0x1d')][_0xdfda('0x22')],_[_0xdfda('0x23')](_0x92cdc5[_0xdfda('0x1d')],[_0xdfda('0x22'),'id'])||{});}})[_0xdfda('0x24')](function(_0x53cbe4){logger[_0xdfda('0x11')](_0xdfda('0x25'),_0x92cdc5);logger[_0xdfda('0x14')](_0xdfda('0x25'),_0x92cdc5,JSON[_0xdfda('0x15')](_0x53cbe4));_0x31b5c2(_0x53cbe4);})[_0xdfda('0x26')](function(_0x251fcf){logger[_0xdfda('0x16')](_0xdfda('0x25'),_0x251fcf[_0xdfda('0x18')],_0x92cdc5);_0x14b2f9(_this['error'](0x1f4,_0x251fcf[_0xdfda('0x18')]));});});};
\ No newline at end of file
index 1cfd321..3606a0b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8e39=['removeListener','register','length','smsInteraction:','./smsInteraction.events','save','remove','update'];(function(_0x1c2e5a,_0x5d53c6){var _0x5177f5=function(_0x2eae4b){while(--_0x2eae4b){_0x1c2e5a['push'](_0x1c2e5a['shift']());}};_0x5177f5(++_0x5d53c6);}(_0x8e39,0x9c));var _0x98e3=function(_0x195a12,_0x558d3c){_0x195a12=_0x195a12-0x0;var _0x5aaf55=_0x8e39[_0x195a12];return _0x5aaf55;};'use strict';var SmsInteractionEvents=require(_0x98e3('0x0'));var events=[_0x98e3('0x1'),_0x98e3('0x2'),_0x98e3('0x3')];function createListener(_0x5d5bfc,_0x1f5215){return function(_0x25920d){_0x1f5215['emit'](_0x5d5bfc,_0x25920d);};}function removeListener(_0x810667,_0xe1fe8){return function(){SmsInteractionEvents[_0x98e3('0x4')](_0x810667,_0xe1fe8);};}exports[_0x98e3('0x5')]=function(_0xe591a8){for(var _0x480d2a=0x0,_0x50544e=events[_0x98e3('0x6')];_0x480d2a<_0x50544e;_0x480d2a++){var _0x47ff17=events[_0x480d2a];var _0x182a75=createListener(_0x98e3('0x7')+_0x47ff17,_0xe591a8);SmsInteractionEvents['on'](_0x47ff17,_0x182a75);}};
\ No newline at end of file
+var _0x8d69=['./smsInteraction.events','save','remove','emit','removeListener','register','length'];(function(_0x304ce0,_0x455f3b){var _0x3dce89=function(_0xc2b967){while(--_0xc2b967){_0x304ce0['push'](_0x304ce0['shift']());}};_0x3dce89(++_0x455f3b);}(_0x8d69,0x1f1));var _0x98d6=function(_0x120e93,_0x291ed0){_0x120e93=_0x120e93-0x0;var _0x56d1a0=_0x8d69[_0x120e93];return _0x56d1a0;};'use strict';var SmsInteractionEvents=require(_0x98d6('0x0'));var events=[_0x98d6('0x1'),_0x98d6('0x2'),'update'];function createListener(_0x25e85e,_0x5ab1f4){return function(_0x653c6){_0x5ab1f4[_0x98d6('0x3')](_0x25e85e,_0x653c6);};}function removeListener(_0x153146,_0x1fea53){return function(){SmsInteractionEvents[_0x98d6('0x4')](_0x153146,_0x1fea53);};}exports[_0x98d6('0x5')]=function(_0x1612c6){for(var _0x51414f=0x0,_0x66669f=events[_0x98d6('0x6')];_0x51414f<_0x66669f;_0x51414f++){var _0x44ab33=events[_0x51414f];var _0x21708c=createListener('smsInteraction:'+_0x44ab33,_0x1612c6);SmsInteractionEvents['on'](_0x44ab33,_0x21708c);}};
\ No newline at end of file
index 78d4ca0..2a10c3c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdde3=['create','/:id/status','status','put','/:id','update','/:id/accept','accept','/:id/reject','reject','delete','destroy','exports','multer','util','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsMessage.controller','get','isAuthenticated','index','/describe','describe','show','post','tracked','sms'];(function(_0x3e315f,_0x2bfe27){var _0x162076=function(_0x37da7e){while(--_0x37da7e){_0x3e315f['push'](_0x3e315f['shift']());}};_0x162076(++_0x2bfe27);}(_0xdde3,0xf5));var _0x3dde=function(_0x2fbad5,_0x364c86){_0x2fbad5=_0x2fbad5-0x0;var _0x1bb9fe=_0xdde3[_0x2fbad5];return _0x1bb9fe;};'use strict';var multer=require(_0x3dde('0x0'));var util=require(_0x3dde('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x3dde('0x2')]();var fs_extra=require('fs-extra');var auth=require(_0x3dde('0x3'));var interaction=require(_0x3dde('0x4'));var config=require(_0x3dde('0x5'));var controller=require(_0x3dde('0x6'));router[_0x3dde('0x7')]('/',auth[_0x3dde('0x8')](),controller[_0x3dde('0x9')]);router[_0x3dde('0x7')](_0x3dde('0xa'),auth[_0x3dde('0x8')](),controller[_0x3dde('0xb')]);router[_0x3dde('0x7')]('/:id',auth[_0x3dde('0x8')](),controller[_0x3dde('0xc')]);router[_0x3dde('0xd')]('/',auth[_0x3dde('0x8')](),interaction[_0x3dde('0xe')](_0x3dde('0xf'),'smsmessage:create'),controller[_0x3dde('0x10')]);router[_0x3dde('0xd')](_0x3dde('0x11'),controller[_0x3dde('0x12')]);router[_0x3dde('0x13')](_0x3dde('0x14'),auth[_0x3dde('0x8')](),controller[_0x3dde('0x15')]);router[_0x3dde('0x13')](_0x3dde('0x16'),auth[_0x3dde('0x8')](),controller[_0x3dde('0x17')]);router[_0x3dde('0x13')](_0x3dde('0x18'),auth[_0x3dde('0x8')](),controller[_0x3dde('0x19')]);router[_0x3dde('0x1a')](_0x3dde('0x14'),auth[_0x3dde('0x8')](),controller[_0x3dde('0x1b')]);module[_0x3dde('0x1c')]=router;
\ No newline at end of file
+var _0x616a=['tracked','sms','smsmessage:create','status','update','/:id/accept','put','reject','delete','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','./smsMessage.controller','isAuthenticated','index','get','describe','/:id','post'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x616a,0x11d));var _0xa616=function(_0x2720ea,_0x35de36){_0x2720ea=_0x2720ea-0x0;var _0x57b1a7=_0x616a[_0x2720ea];return _0x57b1a7;};'use strict';var multer=require(_0xa616('0x0'));var util=require(_0xa616('0x1'));var path=require(_0xa616('0x2'));var timeout=require(_0xa616('0x3'));var express=require(_0xa616('0x4'));var router=express['Router']();var fs_extra=require(_0xa616('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xa616('0x6'));var config=require(_0xa616('0x7'));var controller=require(_0xa616('0x8'));router['get']('/',auth[_0xa616('0x9')](),controller[_0xa616('0xa')]);router[_0xa616('0xb')]('/describe',auth[_0xa616('0x9')](),controller[_0xa616('0xc')]);router[_0xa616('0xb')](_0xa616('0xd'),auth[_0xa616('0x9')](),controller['show']);router[_0xa616('0xe')]('/',auth['isAuthenticated'](),interaction[_0xa616('0xf')](_0xa616('0x10'),_0xa616('0x11')),controller['create']);router['post']('/:id/status',controller[_0xa616('0x12')]);router['put'](_0xa616('0xd'),auth['isAuthenticated'](),controller[_0xa616('0x13')]);router['put'](_0xa616('0x14'),auth[_0xa616('0x9')](),controller['accept']);router[_0xa616('0x15')]('/:id/reject',auth[_0xa616('0x9')](),controller[_0xa616('0x16')]);router[_0xa616('0x17')](_0xa616('0xd'),auth['isAuthenticated'](),controller['destroy']);module[_0xa616('0x18')]=router;
\ No newline at end of file
index 55a1942..a2d494d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04de=['STRING','DATE','sequelize','exports','TEXT','medium','BOOLEAN','ENUM','out'];(function(_0x46f3f8,_0x12c74b){var _0xbc57cd=function(_0x34df37){while(--_0x34df37){_0x46f3f8['push'](_0x46f3f8['shift']());}};_0xbc57cd(++_0x12c74b);}(_0x04de,0x107));var _0xe04d=function(_0x3e2312,_0x2b5a2d){_0x3e2312=_0x3e2312-0x0;var _0x4c5cf8=_0x04de[_0x3e2312];return _0x4c5cf8;};'use strict';var Sequelize=require(_0xe04d('0x0'));module[_0xe04d('0x1')]={'body':{'type':Sequelize[_0xe04d('0x2')](_0xe04d('0x3')),'allowNull':![]},'read':{'type':Sequelize[_0xe04d('0x4')],'defaultValue':![]},'direction':{'type':Sequelize[_0xe04d('0x5')]('in',_0xe04d('0x6')),'defaultValue':_0xe04d('0x6'),'allowNull':![]},'messageId':{'type':Sequelize[_0xe04d('0x7')](0xbe)},'phone':{'type':Sequelize[_0xe04d('0x7')]},'readAt':{'type':Sequelize[_0xe04d('0x8')]},'secret':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize['TEXT']}};
\ No newline at end of file
+var _0x1016=['ENUM','out','STRING','DATE','sequelize','exports','TEXT','BOOLEAN'];(function(_0x37c47d,_0x25caa6){var _0x480371=function(_0x33a729){while(--_0x33a729){_0x37c47d['push'](_0x37c47d['shift']());}};_0x480371(++_0x25caa6);}(_0x1016,0x124));var _0x6101=function(_0x5df384,_0x1ecd63){_0x5df384=_0x5df384-0x0;var _0x214b08=_0x1016[_0x5df384];return _0x214b08;};'use strict';var Sequelize=require(_0x6101('0x0'));module[_0x6101('0x1')]={'body':{'type':Sequelize[_0x6101('0x2')]('medium'),'allowNull':![]},'read':{'type':Sequelize[_0x6101('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x6101('0x4')]('in',_0x6101('0x5')),'defaultValue':_0x6101('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0x6101('0x6')](0xbe)},'phone':{'type':Sequelize[_0x6101('0x6')]},'readAt':{'type':Sequelize[_0x6101('0x7')]},'secret':{'type':Sequelize[_0x6101('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0x6101('0x2')]}};
\ No newline at end of file
index 801ce55..ddeff16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x229c=['params','find','create','body','describe','sms-interactions','accept','read','readAt','format','UserId','user','agent','get','SmsInteraction','SmsInteractionId','isNil','read1stAt','YYYY-MM-DD\x20HH:mm:ss','interaction','[SMSMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','ContactId','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','manual','interface','SIP/%s','channel','event','EventManager','acceptmessage','reject','sms','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','stringify','null','rejectMessage','sequelize','internal','motionChannel','rejectmessage','SmsAccount','SmsAccountId','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','plivo','MessageUUID','delivered','plivio','infobip','results','DELIVERED','rimraf','request-promise','mustache','path','sox','to-csv','fs-extra','squel','crypto','desk.js','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsMessage.socket','jayson/promise','client','http','request','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','error','message','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','name','index','map','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','options','SmsMessage','includeAll','include','findAll','rows','show'];(function(_0x3573d7,_0x52a2bb){var _0x2a7c9f=function(_0x14b6a6){while(--_0x14b6a6){_0x3573d7['push'](_0x3573d7['shift']());}};_0x2a7c9f(++_0x52a2bb);}(_0x229c,0xcf));var _0xc229=function(_0xb69fe6,_0x1ab0f7){_0xb69fe6=_0xb69fe6-0x0;var _0x27ca5d=_0x229c[_0xb69fe6];return _0x27ca5d;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc229('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0xc229('0x1'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xc229('0x2'));var util=require('util');var path=require(_0xc229('0x3'));var sox=require(_0xc229('0x4'));var csv=require(_0xc229('0x5'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc229('0x6'));var _=require('lodash');var squel=require(_0xc229('0x7'));var crypto=require(_0xc229('0x8'));var jsforce=require('jsforce');var deskjs=require(_0xc229('0x9'));var toCsv=require(_0xc229('0x5'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xc229('0xa'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xc229('0xb'));var hardwareService=require(_0xc229('0xc'));var logger=require(_0xc229('0xd'))(_0xc229('0xe'));var utils=require(_0xc229('0xf'));var config=require(_0xc229('0x10'));var licenseUtil=require(_0xc229('0x11'));var db=require(_0xc229('0x12'))['db'];config[_0xc229('0x13')]=_[_0xc229('0x14')](config[_0xc229('0x13')],{'host':_0xc229('0x15'),'port':0x18eb});var socket=require(_0xc229('0x16'))(new Redis(config['redis']));require(_0xc229('0x17'))['register'](socket);var jayson=require(_0xc229('0x18'));var client=jayson[_0xc229('0x19')][_0xc229('0x1a')]({'port':0x232c});var client9002=jayson[_0xc229('0x19')][_0xc229('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x7b71c3,_0x292f30,_0x2bc9ea,_0x569bdd){return new BPromise(function(_0x3c3b1c,_0x2c5f92){var _0x11771e=_0x569bdd||client;return _0x11771e[_0xc229('0x1b')](_0x7b71c3,_0x2bc9ea)['then'](function(_0x379e41){logger[_0xc229('0x1c')](_0xc229('0x1d'),_0x292f30,_0xc229('0x1e'));logger[_0xc229('0x1f')](_0xc229('0x20'),_0x292f30,_0xc229('0x1e'),JSON['stringify'](_0x379e41));if(_0x379e41['error']){if(_0x379e41[_0xc229('0x21')]['code']===0x1f4){logger[_0xc229('0x21')](_0xc229('0x1d'),_0x292f30,_0x379e41['error']['message']);return _0x2c5f92(_0x379e41[_0xc229('0x21')][_0xc229('0x22')]);}logger[_0xc229('0x21')](_0xc229('0x1d'),_0x292f30,_0x379e41[_0xc229('0x21')][_0xc229('0x22')]);return _0x3c3b1c(_0x379e41[_0xc229('0x21')]['message']);}else{logger['info'](_0xc229('0x1d'),_0x292f30,_0xc229('0x1e'));_0x3c3b1c(_0x379e41['result']['message']);}})[_0xc229('0x23')](function(_0x30c711){logger[_0xc229('0x21')](_0xc229('0x1d'),_0x292f30,_0x30c711);_0x2c5f92(_0x30c711);});});}function respondWithStatusCode(_0xb05c4c,_0x268546){_0x268546=_0x268546||0xcc;return function(_0x5a05b3){if(_0x5a05b3){return _0xb05c4c[_0xc229('0x24')](_0x268546);}return _0xb05c4c[_0xc229('0x25')](_0x268546)[_0xc229('0x26')]();};}function respondWithResult(_0x537033,_0x524908){_0x524908=_0x524908||0xc8;return function(_0x155a51){if(_0x155a51){return _0x537033['status'](_0x524908)[_0xc229('0x27')](_0x155a51);}};}function respondWithFilteredResult(_0x2a6e38,_0x2c5fbf){return function(_0x1a94ac){if(_0x1a94ac){var _0xfa1ba2=typeof _0x2c5fbf[_0xc229('0x28')]===_0xc229('0x29')&&typeof _0x2c5fbf[_0xc229('0x2a')]===_0xc229('0x29');var _0x20a9c5=_0x1a94ac[_0xc229('0x2b')];var _0x3aef16=_0xfa1ba2?0x0:_0x2c5fbf[_0xc229('0x28')];var _0x25cd16=_0xfa1ba2?_0x1a94ac[_0xc229('0x2b')]:_0x2c5fbf[_0xc229('0x28')]+_0x2c5fbf[_0xc229('0x2a')];var _0x313660;if(_0x25cd16>=_0x20a9c5){_0x25cd16=_0x20a9c5;_0x313660=0xc8;}else{_0x313660=0xce;}_0x2a6e38[_0xc229('0x25')](_0x313660);return _0x2a6e38[_0xc229('0x2c')](_0xc229('0x2d'),_0x3aef16+'-'+_0x25cd16+'/'+_0x20a9c5)['json'](_0x1a94ac);}return null;};}function patchUpdates(_0x294709){return function(_0x5d0af2){try{jsonpatch[_0xc229('0x2e')](_0x5d0af2,_0x294709,!![]);}catch(_0x7a4900){return BPromise['reject'](_0x7a4900);}return _0x5d0af2[_0xc229('0x2f')]();};}function saveUpdates(_0x46d475,_0x1ab3c7){return function(_0x1e3e6e){if(_0x1e3e6e){return _0x1e3e6e[_0xc229('0x30')](_0x46d475)[_0xc229('0x31')](function(_0x4aabf5){return _0x4aabf5;});}return null;};}function removeEntity(_0x471def,_0x16cf1f){return function(_0x10dfc0){if(_0x10dfc0){return _0x10dfc0[_0xc229('0x32')]()[_0xc229('0x31')](function(){_0x471def[_0xc229('0x25')](0xcc)[_0xc229('0x26')]();});}};}function handleEntityNotFound(_0x8280ca,_0x2b6383){return function(_0xb79c9a){if(!_0xb79c9a){_0x8280ca[_0xc229('0x24')](0x194);}return _0xb79c9a;};}function handleError(_0x4cb0f8,_0x424ca3){_0x424ca3=_0x424ca3||0x1f4;return function(_0x15a6de){logger[_0xc229('0x21')](_0x15a6de['stack']);if(_0x15a6de[_0xc229('0x33')]){delete _0x15a6de[_0xc229('0x33')];}_0x4cb0f8['status'](_0x424ca3)['send'](_0x15a6de);};}exports[_0xc229('0x34')]=function(_0x4eafbd,_0x5ebc2b){var _0x4f84a5={},_0x290c25={},_0x5a656d={'count':0x0,'rows':[]};var _0x54ab02=_[_0xc229('0x35')](db['SmsMessage'][_0xc229('0x36')],function(_0x3f0008){return{'name':_0x3f0008[_0xc229('0x37')],'type':_0x3f0008[_0xc229('0x38')][_0xc229('0x39')]};});_0x290c25['model']=_[_0xc229('0x35')](_0x54ab02,'name');_0x290c25[_0xc229('0x3a')]=_[_0xc229('0x3b')](_0x4eafbd[_0xc229('0x3a')]);_0x290c25[_0xc229('0x3c')]=_[_0xc229('0x3d')](_0x290c25[_0xc229('0x3e')],_0x290c25['query']);_0x4f84a5[_0xc229('0x3f')]=_[_0xc229('0x3d')](_0x290c25[_0xc229('0x3e')],qs[_0xc229('0x40')](_0x4eafbd[_0xc229('0x3a')]['fields']));_0x4f84a5['attributes']=_0x4f84a5[_0xc229('0x3f')][_0xc229('0x41')]?_0x4f84a5[_0xc229('0x3f')]:_0x290c25[_0xc229('0x3e')];if(!_0x4eafbd['query'][_0xc229('0x42')](_0xc229('0x43'))){_0x4f84a5[_0xc229('0x2a')]=qs[_0xc229('0x2a')](_0x4eafbd[_0xc229('0x3a')][_0xc229('0x2a')]);_0x4f84a5[_0xc229('0x28')]=qs['offset'](_0x4eafbd['query'][_0xc229('0x28')]);}_0x4f84a5[_0xc229('0x44')]=qs[_0xc229('0x45')](_0x4eafbd[_0xc229('0x3a')][_0xc229('0x45')]);_0x4f84a5[_0xc229('0x46')]=qs[_0xc229('0x3c')](_[_0xc229('0x47')](_0x4eafbd[_0xc229('0x3a')],_0x290c25[_0xc229('0x3c')]),_0x54ab02);if(_0x4eafbd['query'][_0xc229('0x48')]){_0x4f84a5['where']=_[_0xc229('0x49')](_0x4f84a5[_0xc229('0x46')],{'$or':_[_0xc229('0x35')](_0x54ab02,function(_0x512f88){if(_0x512f88[_0xc229('0x38')]!=='VIRTUAL'){var _0x2b5b08={};_0x2b5b08[_0x512f88[_0xc229('0x33')]]={'$like':'%'+_0x4eafbd[_0xc229('0x3a')]['filter']+'%'};return _0x2b5b08;}})});}_0x4f84a5=_[_0xc229('0x49')]({},_0x4f84a5,_0x4eafbd[_0xc229('0x4a')]);var _0x329c4f={'where':_0x4f84a5[_0xc229('0x46')]};return db[_0xc229('0x4b')][_0xc229('0x2b')](_0x329c4f)[_0xc229('0x31')](function(_0x3b57a1){_0x5a656d[_0xc229('0x2b')]=_0x3b57a1;if(_0x4eafbd[_0xc229('0x3a')][_0xc229('0x4c')]){_0x4f84a5[_0xc229('0x4d')]=[{'all':!![]}];}return db[_0xc229('0x4b')][_0xc229('0x4e')](_0x4f84a5);})[_0xc229('0x31')](function(_0x1c6527){_0x5a656d[_0xc229('0x4f')]=_0x1c6527;return _0x5a656d;})[_0xc229('0x31')](respondWithFilteredResult(_0x5ebc2b,_0x4f84a5))[_0xc229('0x23')](handleError(_0x5ebc2b,null));};exports[_0xc229('0x50')]=function(_0x49aeba,_0x5a8dcc){var _0x444d36={'raw':!![],'where':{'id':_0x49aeba[_0xc229('0x51')]['id']}},_0x343b02={};_0x343b02[_0xc229('0x3e')]=_['keys'](db['SmsMessage'][_0xc229('0x36')]);_0x343b02['query']=_[_0xc229('0x3b')](_0x49aeba['query']);_0x343b02[_0xc229('0x3c')]=_[_0xc229('0x3d')](_0x343b02['model'],_0x343b02[_0xc229('0x3a')]);_0x444d36[_0xc229('0x3f')]=_[_0xc229('0x3d')](_0x343b02['model'],qs[_0xc229('0x40')](_0x49aeba[_0xc229('0x3a')][_0xc229('0x40')]));_0x444d36[_0xc229('0x3f')]=_0x444d36[_0xc229('0x3f')][_0xc229('0x41')]?_0x444d36[_0xc229('0x3f')]:_0x343b02[_0xc229('0x3e')];if(_0x49aeba[_0xc229('0x3a')]['includeAll']){_0x444d36[_0xc229('0x4d')]=[{'all':!![]}];}_0x444d36=_[_0xc229('0x49')]({},_0x444d36,_0x49aeba[_0xc229('0x4a')]);return db[_0xc229('0x4b')][_0xc229('0x52')](_0x444d36)[_0xc229('0x31')](handleEntityNotFound(_0x5a8dcc,null))[_0xc229('0x31')](respondWithResult(_0x5a8dcc,null))[_0xc229('0x23')](handleError(_0x5a8dcc,null));};exports[_0xc229('0x53')]=function(_0x3b98a0,_0x492cad){return db[_0xc229('0x4b')][_0xc229('0x53')](_0x3b98a0[_0xc229('0x54')],{})['then'](respondWithResult(_0x492cad,0xc9))[_0xc229('0x23')](handleError(_0x492cad,null));};exports[_0xc229('0x30')]=function(_0x1cec79,_0x45fff0){if(_0x1cec79['body']['id']){delete _0x1cec79[_0xc229('0x54')]['id'];}return db[_0xc229('0x4b')][_0xc229('0x52')]({'where':{'id':_0x1cec79['params']['id']}})['then'](handleEntityNotFound(_0x45fff0,null))[_0xc229('0x31')](saveUpdates(_0x1cec79[_0xc229('0x54')],null))[_0xc229('0x31')](respondWithResult(_0x45fff0,null))['catch'](handleError(_0x45fff0,null));};exports[_0xc229('0x32')]=function(_0x163cde,_0xbed147){return db['SmsMessage'][_0xc229('0x52')]({'where':{'id':_0x163cde['params']['id']}})[_0xc229('0x31')](handleEntityNotFound(_0xbed147,null))[_0xc229('0x31')](removeEntity(_0xbed147,null))['catch'](handleError(_0xbed147,null));};exports[_0xc229('0x55')]=function(_0x2b9b8c,_0x5d668f){return db[_0xc229('0x4b')][_0xc229('0x55')]()[_0xc229('0x31')](respondWithResult(_0x5d668f,null))[_0xc229('0x23')](handleError(_0x5d668f,null));};var interaction_log=require(_0xc229('0xd'))(_0xc229('0x56'));exports[_0xc229('0x57')]=function(_0x3555c8,_0x32f4fc,_0x349e90){var _0x4906ae={'agent':{},'channel':'sms'};if(_0x3555c8['body']['id']){delete _0x3555c8['body']['id'];}_0x3555c8[_0xc229('0x54')][_0xc229('0x58')]=!![];_0x3555c8[_0xc229('0x54')][_0xc229('0x59')]=moment()[_0xc229('0x5a')]('YYYY-MM-DD\x20HH:mm:ss');_0x3555c8[_0xc229('0x54')][_0xc229('0x5b')]=_0x3555c8[_0xc229('0x54')][_0xc229('0x5b')]||_0x3555c8[_0xc229('0x5c')]['id'];_0x4906ae[_0xc229('0x5d')]['id']=_0x3555c8[_0xc229('0x54')][_0xc229('0x5b')];return db[_0xc229('0x4b')][_0xc229('0x52')]({'where':{'id':_0x3555c8[_0xc229('0x51')]['id'],'UserId':null}})[_0xc229('0x31')](handleEntityNotFound(_0x32f4fc,null))[_0xc229('0x31')](saveUpdates(_0x3555c8[_0xc229('0x54')],null))['then'](function(_0x5913a4){if(_0x5913a4){_0x4906ae[_0xc229('0x22')]=_0x5913a4[_0xc229('0x5e')]({'plain':!![]});return db[_0xc229('0x5f')][_0xc229('0x52')]({'where':{'id':_0x5913a4[_0xc229('0x60')]}});}return null;})[_0xc229('0x31')](handleEntityNotFound(_0x32f4fc,null))[_0xc229('0x31')](function(_0x1fecf2){if(_0x1fecf2){return _0x1fecf2[_0xc229('0x30')]({'UserId':_0x3555c8[_0xc229('0x54')][_0xc229('0x5b')],'read1stAt':_[_0xc229('0x61')](_0x1fecf2[_0xc229('0x62')])?moment()[_0xc229('0x5a')](_0xc229('0x63')):undefined});}return null;})[_0xc229('0x31')](function(_0xcc9238){if(_0xcc9238){_0x4906ae[_0xc229('0x64')]=_0xcc9238['get']({'plain':!![]});interaction_log[_0xc229('0x1c')](_0xc229('0x65'),_0x3555c8['user']['id'],_0x3555c8[_0xc229('0x5c')][_0xc229('0x33')],_0x3555c8[_0xc229('0x5c')][_0xc229('0x66')],_0x4906ae[_0xc229('0x64')]['id'],_0x3555c8[_0xc229('0x54')]?JSON['stringify'](_0x3555c8[_0xc229('0x54')]):'null');return respondWithRpcPromise('AcceptMessage','acceptMessage',_0x4906ae);}return null;})['then'](function(_0xea5313){var _0x4a6dc8=_0xc229('0x67')+_0xea5313[_0xc229('0x22')][_0xc229('0x68')];return db['sequelize'][_0xc229('0x3a')](_0x4a6dc8,{'type':db[_0xc229('0x69')][_0xc229('0x6a')][_0xc229('0x6b')],'raw':!![]})[_0xc229('0x31')](function(_0x3ef924){return _0x3ef924;});})[_0xc229('0x31')](function(_0x3a39eb){if(_0x3a39eb){_0x4906ae[_0xc229('0x22')][_0xc229('0x6c')]=_0x3a39eb[0x0];if(!_0x3555c8['body'][_0xc229('0x5b')])return;return db[_0xc229('0x6d')][_0xc229('0x52')]({'where':{'id':_0x3555c8[_0xc229('0x54')]['UserId'],'role':'agent'},'attributes':['id',_0xc229('0x33'),_0xc229('0x6e'),_0xc229('0x6f'),'internal'],'raw':!![]});}return null;})[_0xc229('0x31')](function(_0x2868e3){if(!_0x2868e3)return null;_0x4906ae[_0xc229('0x22')][_0xc229('0x5d')]=_0x2868e3;return _0x4906ae;})[_0xc229('0x31')](function(_0x37b662){if(_0x37b662){if(_0x3555c8[_0xc229('0x54')][_0xc229('0x70')]){_0x4906ae[_0xc229('0x22')][_0xc229('0x71')]=util[_0xc229('0x5a')](_0xc229('0x72'),_0x3555c8['user'][_0xc229('0x33')]);_0x4906ae[_0xc229('0x22')][_0xc229('0x73')]=_0x4906ae[_0xc229('0x73')];_0x4906ae['message']['motionChannel']=_0x4906ae[_0xc229('0x73')];_0x4906ae[_0xc229('0x22')][_0xc229('0x74')]=_0xc229('0x57');return respondWithRpcPromise('EventManager',_0xc229('0x75'),{'event':_0xc229('0x76'),'message':_0x4906ae[_0xc229('0x22')]},client9002)['then'](function(){return _0x4906ae;});}return _0x4906ae;}return null;})[_0xc229('0x31')](respondWithResult(_0x32f4fc,null))[_0xc229('0x23')](handleError(_0x32f4fc,null));};var interaction_log=require('../../config/logger')('sms-interactions');exports[_0xc229('0x77')]=function(_0xf68024,_0x120aaf,_0x5d9395){var _0x5c16cb={'agent':{},'channel':_0xc229('0x78')};if(_0xf68024['body']['id']){delete _0xf68024[_0xc229('0x54')]['id'];}_0xf68024[_0xc229('0x54')]['UserId']=_0xf68024[_0xc229('0x54')][_0xc229('0x5b')]||_0xf68024[_0xc229('0x5c')]['id'];_0x5c16cb[_0xc229('0x5d')]['id']=_0xf68024[_0xc229('0x54')][_0xc229('0x5b')];return db[_0xc229('0x4b')][_0xc229('0x52')]({'where':{'id':_0xf68024[_0xc229('0x51')]['id'],'UserId':null}})[_0xc229('0x31')](handleEntityNotFound(_0x120aaf,null))[_0xc229('0x31')](function(_0x511ae5){if(_0x511ae5){_0x5c16cb['message']=_0x511ae5[_0xc229('0x5e')]({'plain':!![]});return db[_0xc229('0x5f')]['find']({'where':{'id':_0x511ae5['SmsInteractionId']}});}return null;})[_0xc229('0x31')](handleEntityNotFound(_0x120aaf,null))[_0xc229('0x31')](function(_0x2d9f6c){if(_0x2d9f6c){_0x5c16cb[_0xc229('0x64')]=_0x2d9f6c['get']({'plain':!![]});interaction_log[_0xc229('0x1c')](_0xc229('0x79'),_0xf68024['user']['id'],_0xf68024['user'][_0xc229('0x33')],_0xf68024['user'][_0xc229('0x66')],_0x5c16cb[_0xc229('0x64')]['id'],_0xf68024['body']?JSON[_0xc229('0x7a')](_0xf68024[_0xc229('0x54')]):_0xc229('0x7b'));return respondWithRpcPromise('RejectMessage',_0xc229('0x7c'),_0x5c16cb);}return null;})[_0xc229('0x31')](function(_0x111b09){var _0x154f81=_0xc229('0x67')+_0x111b09[_0xc229('0x22')][_0xc229('0x68')];return db[_0xc229('0x7d')]['query'](_0x154f81,{'type':db[_0xc229('0x69')][_0xc229('0x6a')][_0xc229('0x6b')],'raw':!![]})[_0xc229('0x31')](function(_0x16226a){return _0x16226a;});})[_0xc229('0x31')](function(_0x1bb27f){if(_0x1bb27f){_0x5c16cb['message'][_0xc229('0x6c')]=_0x1bb27f[0x0];if(!_0xf68024[_0xc229('0x54')]['UserId'])return;return db['User'][_0xc229('0x52')]({'where':{'id':_0xf68024['body'][_0xc229('0x5b')],'role':'agent'},'attributes':['id',_0xc229('0x33'),_0xc229('0x6e'),'email',_0xc229('0x7e')],'raw':!![]});}return null;})[_0xc229('0x31')](function(_0xdad4e2){if(!_0xdad4e2)return null;_0x5c16cb[_0xc229('0x22')][_0xc229('0x5d')]=_0xdad4e2;return _0x5c16cb;})[_0xc229('0x31')](function(_0x572f2f){if(_0x572f2f){_0x572f2f[_0xc229('0x22')][_0xc229('0x71')]=util['format'](_0xc229('0x72'),_0xf68024[_0xc229('0x5c')][_0xc229('0x33')]);_0x572f2f[_0xc229('0x22')][_0xc229('0x73')]=_0x5c16cb[_0xc229('0x73')];_0x572f2f[_0xc229('0x22')][_0xc229('0x7f')]=_0x5c16cb[_0xc229('0x73')];_0x572f2f[_0xc229('0x22')][_0xc229('0x74')]=_0xc229('0x77');respondWithRpcPromise('EventManager','EventManager',{'event':_0xc229('0x80'),'message':_0x572f2f[_0xc229('0x22')]},client9002);return _0x5c16cb;}return null;})['then'](respondWithResult(_0x120aaf,null))[_0xc229('0x23')](handleError(_0x120aaf,null));};exports[_0xc229('0x25')]=function(_0x40cff2,_0x3c1290,_0x2313b8){if(_0x40cff2[_0xc229('0x54')]['id']){delete _0x40cff2[_0xc229('0x54')]['id'];}var _0x22f8ee;return db['SmsMessage'][_0xc229('0x52')]({'where':{'id':_0x40cff2[_0xc229('0x51')]['id']}})[_0xc229('0x31')](handleEntityNotFound(_0x3c1290,null))[_0xc229('0x31')](function(_0x7ecb1b){if(_0x7ecb1b){_0x22f8ee=_0x7ecb1b;return db[_0xc229('0x81')][_0xc229('0x52')]({'where':{'id':_0x7ecb1b[_0xc229('0x82')]}});}})[_0xc229('0x31')](handleEntityNotFound(_0x3c1290,null))['then'](function(_0xd33373){if(_0xd33373){logger[_0xc229('0x1f')](_0xc229('0x20'),_0xc229('0x25'),_0xc229('0x83'),_0xd33373[_0xc229('0x38')],util[_0xc229('0x84')](_0x40cff2['body'],{'showHidden':![],'depth':null}));switch(_0xd33373[_0xc229('0x38')]){case _0xc229('0x85'):if(_0x40cff2[_0xc229('0x54')][_0xc229('0x86')]&&_0x40cff2[_0xc229('0x54')][_0xc229('0x86')]===_0x22f8ee[_0xc229('0x87')]){return _0x22f8ee[_0xc229('0x30')]({'read':!![]});}else{logger[_0xc229('0x21')](_0xc229('0x88'),_0xc229('0x25'),_0xc229('0x85'),util[_0xc229('0x84')](_0x40cff2[_0xc229('0x54')],{'showHidden':![],'depth':null}));}break;case _0xc229('0x89'):if(_0x40cff2[_0xc229('0x54')][_0xc229('0x8a')]&&_0x40cff2['body'][_0xc229('0x8a')]===_0x22f8ee[_0xc229('0x87')]&&_['indexOf'](['sent',_0xc229('0x8b')],_0x40cff2[_0xc229('0x54')]['Status'])>=0x0){return _0x22f8ee[_0xc229('0x30')]({'read':!![]});}else{logger[_0xc229('0x21')](_0xc229('0x88'),_0xc229('0x25'),_0xc229('0x8c'),util[_0xc229('0x84')](_0x40cff2[_0xc229('0x54')],{'showHidden':![],'depth':null}));}break;case _0xc229('0x8d'):var _0x2b32c2=_0x40cff2[_0xc229('0x54')][_0xc229('0x8e')][0x0];if(_0x2b32c2[_0xc229('0x25')]['groupName']===_0xc229('0x8f')){return _0x22f8ee[_0xc229('0x30')]({'read':!![]});}else{logger['error'](_0xc229('0x88'),_0xc229('0x25'),_0xc229('0x8d'),util[_0xc229('0x84')](_0x40cff2[_0xc229('0x54')],{'showHidden':![],'depth':null}));}break;}return _0x22f8ee;}})[_0xc229('0x31')](respondWithResult(_0x3c1290,null))['catch'](handleError(_0x3c1290,null));};
\ No newline at end of file
+var _0x18d4=['request','then','info','SmsMessage,\x20%s,\x20%s','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','save','stack','name','send','SmsMessage','fieldName','type','key','model','map','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','rawAttributes','find','create','body','update','destroy','describe','sms-interactions','accept','sms','read','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','SmsInteraction','SmsInteractionId','isNil','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','fullname','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','reject','get','[SMSMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','email','SmsAccount','received\x20delivery\x20report\x20from','messageId','SmsAccount,\x20%s,\x20%s,\x20%s','twilio','inspect','plivo','MessageUUID','indexOf','delivered','Status','infobip','groupName','eml-format','rimraf','zip-dir','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/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./smsMessage.socket','jayson/promise','http','client'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x18d4,0x19e));var _0x418d=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x18d4[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0x418d('0x0'));var rimraf=require(_0x418d('0x1'));var zipdir=require(_0x418d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x418d('0x3'));var BPromise=require(_0x418d('0x4'));var Mustache=require(_0x418d('0x5'));var util=require(_0x418d('0x6'));var path=require(_0x418d('0x7'));var sox=require(_0x418d('0x8'));var csv=require(_0x418d('0x9'));var ejs=require(_0x418d('0xa'));var fs=require('fs');var fs_extra=require(_0x418d('0xb'));var _=require(_0x418d('0xc'));var squel=require(_0x418d('0xd'));var crypto=require(_0x418d('0xe'));var jsforce=require(_0x418d('0xf'));var deskjs=require(_0x418d('0x10'));var toCsv=require(_0x418d('0x9'));var querystring=require(_0x418d('0x11'));var Papa=require(_0x418d('0x12'));var Redis=require(_0x418d('0x13'));var authService=require(_0x418d('0x14'));var qs=require(_0x418d('0x15'));var as=require(_0x418d('0x16'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x418d('0x17'))(_0x418d('0x18'));var utils=require(_0x418d('0x19'));var config=require(_0x418d('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x418d('0x1b'))['db'];config['redis']=_[_0x418d('0x1c')](config[_0x418d('0x1d')],{'host':_0x418d('0x1e'),'port':0x18eb});var socket=require(_0x418d('0x1f'))(new Redis(config[_0x418d('0x1d')]));require(_0x418d('0x20'))['register'](socket);var jayson=require(_0x418d('0x21'));var client=jayson['client'][_0x418d('0x22')]({'port':0x232c});var client9002=jayson[_0x418d('0x23')][_0x418d('0x22')]({'port':0x232a});function respondWithRpcPromise(_0x23281c,_0x223a2e,_0x89f330,_0x53b36f){return new BPromise(function(_0xa13f6,_0xb4de){var _0x401973=_0x53b36f||client;return _0x401973[_0x418d('0x24')](_0x23281c,_0x89f330)[_0x418d('0x25')](function(_0x2a2db7){logger[_0x418d('0x26')](_0x418d('0x27'),_0x223a2e,_0x418d('0x28'));logger[_0x418d('0x29')](_0x418d('0x2a'),_0x223a2e,'request\x20sent',JSON[_0x418d('0x2b')](_0x2a2db7));if(_0x2a2db7[_0x418d('0x2c')]){if(_0x2a2db7[_0x418d('0x2c')][_0x418d('0x2d')]===0x1f4){logger[_0x418d('0x2c')]('SmsMessage,\x20%s,\x20%s',_0x223a2e,_0x2a2db7['error'][_0x418d('0x2e')]);return _0xb4de(_0x2a2db7['error'][_0x418d('0x2e')]);}logger[_0x418d('0x2c')](_0x418d('0x27'),_0x223a2e,_0x2a2db7[_0x418d('0x2c')]['message']);return _0xa13f6(_0x2a2db7['error']['message']);}else{logger['info'](_0x418d('0x27'),_0x223a2e,_0x418d('0x28'));_0xa13f6(_0x2a2db7['result'][_0x418d('0x2e')]);}})[_0x418d('0x2f')](function(_0x7c4638){logger['error'](_0x418d('0x27'),_0x223a2e,_0x7c4638);_0xb4de(_0x7c4638);});});}function respondWithStatusCode(_0x4b1cba,_0x8b0ebd){_0x8b0ebd=_0x8b0ebd||0xcc;return function(_0x29ee0f){if(_0x29ee0f){return _0x4b1cba[_0x418d('0x30')](_0x8b0ebd);}return _0x4b1cba[_0x418d('0x31')](_0x8b0ebd)[_0x418d('0x32')]();};}function respondWithResult(_0x39021a,_0x4059a8){_0x4059a8=_0x4059a8||0xc8;return function(_0x18d7cf){if(_0x18d7cf){return _0x39021a[_0x418d('0x31')](_0x4059a8)[_0x418d('0x33')](_0x18d7cf);}};}function respondWithFilteredResult(_0x178852,_0x1b2c6c){return function(_0x3dedfd){if(_0x3dedfd){var _0x4b7c0f=typeof _0x1b2c6c['offset']===_0x418d('0x34')&&typeof _0x1b2c6c[_0x418d('0x35')]==='undefined';var _0x40254f=_0x3dedfd[_0x418d('0x36')];var _0x4dd679=_0x4b7c0f?0x0:_0x1b2c6c[_0x418d('0x37')];var _0x502ae5=_0x4b7c0f?_0x3dedfd[_0x418d('0x36')]:_0x1b2c6c['offset']+_0x1b2c6c[_0x418d('0x35')];var _0x1becd4;if(_0x502ae5>=_0x40254f){_0x502ae5=_0x40254f;_0x1becd4=0xc8;}else{_0x1becd4=0xce;}_0x178852[_0x418d('0x31')](_0x1becd4);return _0x178852[_0x418d('0x38')](_0x418d('0x39'),_0x4dd679+'-'+_0x502ae5+'/'+_0x40254f)[_0x418d('0x33')](_0x3dedfd);}return null;};}function patchUpdates(_0x2c4048){return function(_0x36b5c1){try{jsonpatch[_0x418d('0x3a')](_0x36b5c1,_0x2c4048,!![]);}catch(_0x42dc2d){return BPromise['reject'](_0x42dc2d);}return _0x36b5c1[_0x418d('0x3b')]();};}function saveUpdates(_0x8e8dba,_0x754272){return function(_0x55f880){if(_0x55f880){return _0x55f880['update'](_0x8e8dba)[_0x418d('0x25')](function(_0x5d397c){return _0x5d397c;});}return null;};}function removeEntity(_0x4a2c8b,_0xba41fd){return function(_0x3675c8){if(_0x3675c8){return _0x3675c8['destroy']()['then'](function(){_0x4a2c8b[_0x418d('0x31')](0xcc)[_0x418d('0x32')]();});}};}function handleEntityNotFound(_0x5b386a,_0x243a03){return function(_0x3bc513){if(!_0x3bc513){_0x5b386a[_0x418d('0x30')](0x194);}return _0x3bc513;};}function handleError(_0x3fd4f6,_0xdf32f6){_0xdf32f6=_0xdf32f6||0x1f4;return function(_0x56b531){logger['error'](_0x56b531[_0x418d('0x3c')]);if(_0x56b531[_0x418d('0x3d')]){delete _0x56b531[_0x418d('0x3d')];}_0x3fd4f6['status'](_0xdf32f6)[_0x418d('0x3e')](_0x56b531);};}exports['index']=function(_0x586c52,_0x30b804){var _0x219fa8={},_0x5e4849={},_0x5c9b1c={'count':0x0,'rows':[]};var _0x1276ab=_['map'](db[_0x418d('0x3f')]['rawAttributes'],function(_0x4ee506){return{'name':_0x4ee506[_0x418d('0x40')],'type':_0x4ee506[_0x418d('0x41')][_0x418d('0x42')]};});_0x5e4849[_0x418d('0x43')]=_[_0x418d('0x44')](_0x1276ab,'name');_0x5e4849[_0x418d('0x45')]=_[_0x418d('0x46')](_0x586c52['query']);_0x5e4849[_0x418d('0x47')]=_[_0x418d('0x48')](_0x5e4849['model'],_0x5e4849[_0x418d('0x45')]);_0x219fa8[_0x418d('0x49')]=_[_0x418d('0x48')](_0x5e4849[_0x418d('0x43')],qs[_0x418d('0x4a')](_0x586c52[_0x418d('0x45')][_0x418d('0x4a')]));_0x219fa8[_0x418d('0x49')]=_0x219fa8[_0x418d('0x49')][_0x418d('0x4b')]?_0x219fa8['attributes']:_0x5e4849[_0x418d('0x43')];if(!_0x586c52[_0x418d('0x45')][_0x418d('0x4c')]('nolimit')){_0x219fa8[_0x418d('0x35')]=qs[_0x418d('0x35')](_0x586c52[_0x418d('0x45')][_0x418d('0x35')]);_0x219fa8[_0x418d('0x37')]=qs[_0x418d('0x37')](_0x586c52[_0x418d('0x45')][_0x418d('0x37')]);}_0x219fa8[_0x418d('0x4d')]=qs[_0x418d('0x4e')](_0x586c52[_0x418d('0x45')][_0x418d('0x4e')]);_0x219fa8['where']=qs[_0x418d('0x47')](_[_0x418d('0x4f')](_0x586c52['query'],_0x5e4849[_0x418d('0x47')]),_0x1276ab);if(_0x586c52[_0x418d('0x45')][_0x418d('0x50')]){_0x219fa8[_0x418d('0x51')]=_[_0x418d('0x52')](_0x219fa8[_0x418d('0x51')],{'$or':_[_0x418d('0x44')](_0x1276ab,function(_0x22a7a7){if(_0x22a7a7[_0x418d('0x41')]!==_0x418d('0x53')){var _0xe7ad69={};_0xe7ad69[_0x22a7a7[_0x418d('0x3d')]]={'$like':'%'+_0x586c52['query']['filter']+'%'};return _0xe7ad69;}})});}_0x219fa8=_[_0x418d('0x52')]({},_0x219fa8,_0x586c52[_0x418d('0x54')]);var _0x309b26={'where':_0x219fa8[_0x418d('0x51')]};return db[_0x418d('0x3f')][_0x418d('0x36')](_0x309b26)[_0x418d('0x25')](function(_0x5d494d){_0x5c9b1c[_0x418d('0x36')]=_0x5d494d;if(_0x586c52['query'][_0x418d('0x55')]){_0x219fa8[_0x418d('0x56')]=[{'all':!![]}];}return db['SmsMessage'][_0x418d('0x57')](_0x219fa8);})[_0x418d('0x25')](function(_0x37b610){_0x5c9b1c[_0x418d('0x58')]=_0x37b610;return _0x5c9b1c;})['then'](respondWithFilteredResult(_0x30b804,_0x219fa8))['catch'](handleError(_0x30b804,null));};exports['show']=function(_0x44cde8,_0x79e8c){var _0x15cc92={'raw':!![],'where':{'id':_0x44cde8[_0x418d('0x59')]['id']}},_0x54ae9a={};_0x54ae9a['model']=_[_0x418d('0x46')](db['SmsMessage'][_0x418d('0x5a')]);_0x54ae9a[_0x418d('0x45')]=_[_0x418d('0x46')](_0x44cde8[_0x418d('0x45')]);_0x54ae9a['filters']=_[_0x418d('0x48')](_0x54ae9a[_0x418d('0x43')],_0x54ae9a[_0x418d('0x45')]);_0x15cc92['attributes']=_[_0x418d('0x48')](_0x54ae9a[_0x418d('0x43')],qs[_0x418d('0x4a')](_0x44cde8[_0x418d('0x45')][_0x418d('0x4a')]));_0x15cc92[_0x418d('0x49')]=_0x15cc92['attributes']['length']?_0x15cc92[_0x418d('0x49')]:_0x54ae9a['model'];if(_0x44cde8['query'][_0x418d('0x55')]){_0x15cc92[_0x418d('0x56')]=[{'all':!![]}];}_0x15cc92=_[_0x418d('0x52')]({},_0x15cc92,_0x44cde8[_0x418d('0x54')]);return db['SmsMessage'][_0x418d('0x5b')](_0x15cc92)['then'](handleEntityNotFound(_0x79e8c,null))[_0x418d('0x25')](respondWithResult(_0x79e8c,null))[_0x418d('0x2f')](handleError(_0x79e8c,null));};exports[_0x418d('0x5c')]=function(_0x3ce0da,_0x4babb3){return db[_0x418d('0x3f')][_0x418d('0x5c')](_0x3ce0da[_0x418d('0x5d')],{})[_0x418d('0x25')](respondWithResult(_0x4babb3,0xc9))[_0x418d('0x2f')](handleError(_0x4babb3,null));};exports[_0x418d('0x5e')]=function(_0xa17c9a,_0x37cd05){if(_0xa17c9a[_0x418d('0x5d')]['id']){delete _0xa17c9a[_0x418d('0x5d')]['id'];}return db['SmsMessage'][_0x418d('0x5b')]({'where':{'id':_0xa17c9a[_0x418d('0x59')]['id']}})[_0x418d('0x25')](handleEntityNotFound(_0x37cd05,null))[_0x418d('0x25')](saveUpdates(_0xa17c9a[_0x418d('0x5d')],null))[_0x418d('0x25')](respondWithResult(_0x37cd05,null))[_0x418d('0x2f')](handleError(_0x37cd05,null));};exports[_0x418d('0x5f')]=function(_0x17ac17,_0x157053){return db[_0x418d('0x3f')][_0x418d('0x5b')]({'where':{'id':_0x17ac17[_0x418d('0x59')]['id']}})['then'](handleEntityNotFound(_0x157053,null))[_0x418d('0x25')](removeEntity(_0x157053,null))[_0x418d('0x2f')](handleError(_0x157053,null));};exports['describe']=function(_0x458724,_0x4baca3){return db[_0x418d('0x3f')][_0x418d('0x60')]()[_0x418d('0x25')](respondWithResult(_0x4baca3,null))[_0x418d('0x2f')](handleError(_0x4baca3,null));};var interaction_log=require(_0x418d('0x17'))(_0x418d('0x61'));exports[_0x418d('0x62')]=function(_0x591d1f,_0x22833e,_0x18c8e5){var _0x3c0c10={'agent':{},'channel':_0x418d('0x63')};if(_0x591d1f[_0x418d('0x5d')]['id']){delete _0x591d1f['body']['id'];}_0x591d1f[_0x418d('0x5d')][_0x418d('0x64')]=!![];_0x591d1f['body']['readAt']=moment()[_0x418d('0x65')](_0x418d('0x66'));_0x591d1f[_0x418d('0x5d')][_0x418d('0x67')]=_0x591d1f[_0x418d('0x5d')][_0x418d('0x67')]||_0x591d1f[_0x418d('0x68')]['id'];_0x3c0c10[_0x418d('0x69')]['id']=_0x591d1f['body'][_0x418d('0x67')];return db[_0x418d('0x3f')][_0x418d('0x5b')]({'where':{'id':_0x591d1f[_0x418d('0x59')]['id'],'UserId':null}})[_0x418d('0x25')](handleEntityNotFound(_0x22833e,null))[_0x418d('0x25')](saveUpdates(_0x591d1f[_0x418d('0x5d')],null))[_0x418d('0x25')](function(_0x3c55e4){if(_0x3c55e4){_0x3c0c10[_0x418d('0x2e')]=_0x3c55e4['get']({'plain':!![]});return db[_0x418d('0x6a')][_0x418d('0x5b')]({'where':{'id':_0x3c55e4[_0x418d('0x6b')]}});}return null;})[_0x418d('0x25')](handleEntityNotFound(_0x22833e,null))['then'](function(_0x3ce079){if(_0x3ce079){return _0x3ce079[_0x418d('0x5e')]({'UserId':_0x591d1f[_0x418d('0x5d')]['UserId'],'read1stAt':_[_0x418d('0x6c')](_0x3ce079['read1stAt'])?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined});}return null;})[_0x418d('0x25')](function(_0x1e8e85){if(_0x1e8e85){_0x3c0c10[_0x418d('0x6d')]=_0x1e8e85['get']({'plain':!![]});interaction_log[_0x418d('0x26')](_0x418d('0x6e'),_0x591d1f[_0x418d('0x68')]['id'],_0x591d1f[_0x418d('0x68')][_0x418d('0x3d')],_0x591d1f[_0x418d('0x68')][_0x418d('0x6f')],_0x3c0c10[_0x418d('0x6d')]['id'],_0x591d1f[_0x418d('0x5d')]?JSON[_0x418d('0x2b')](_0x591d1f[_0x418d('0x5d')]):_0x418d('0x70'));return respondWithRpcPromise(_0x418d('0x71'),_0x418d('0x72'),_0x3c0c10);}return null;})[_0x418d('0x25')](function(_0x25ad70){var _0x4a22ca=_0x418d('0x73')+_0x25ad70['message'][_0x418d('0x74')];return db[_0x418d('0x75')][_0x418d('0x45')](_0x4a22ca,{'type':db[_0x418d('0x76')][_0x418d('0x77')][_0x418d('0x78')],'raw':!![]})[_0x418d('0x25')](function(_0x25bf53){return _0x25bf53;});})[_0x418d('0x25')](function(_0x9109c4){if(_0x9109c4){_0x3c0c10[_0x418d('0x2e')][_0x418d('0x79')]=_0x9109c4[0x0];if(!_0x591d1f[_0x418d('0x5d')][_0x418d('0x67')])return;return db['User'][_0x418d('0x5b')]({'where':{'id':_0x591d1f[_0x418d('0x5d')]['UserId'],'role':_0x418d('0x69')},'attributes':['id',_0x418d('0x3d'),_0x418d('0x7a'),'email',_0x418d('0x7b')],'raw':!![]});}return null;})[_0x418d('0x25')](function(_0x373a9b){if(!_0x373a9b)return null;_0x3c0c10[_0x418d('0x2e')][_0x418d('0x69')]=_0x373a9b;return _0x3c0c10;})['then'](function(_0x5aee71){if(_0x5aee71){if(_0x591d1f[_0x418d('0x5d')][_0x418d('0x7c')]){_0x3c0c10[_0x418d('0x2e')][_0x418d('0x7d')]=util[_0x418d('0x65')](_0x418d('0x7e'),_0x591d1f[_0x418d('0x68')][_0x418d('0x3d')]);_0x3c0c10['message'][_0x418d('0x7f')]=_0x3c0c10[_0x418d('0x7f')];_0x3c0c10[_0x418d('0x2e')][_0x418d('0x80')]=_0x3c0c10[_0x418d('0x7f')];_0x3c0c10[_0x418d('0x2e')][_0x418d('0x81')]='accept';return respondWithRpcPromise(_0x418d('0x82'),'EventManager',{'event':'acceptmessage','message':_0x3c0c10[_0x418d('0x2e')]},client9002)['then'](function(){return _0x3c0c10;});}return _0x3c0c10;}return null;})[_0x418d('0x25')](respondWithResult(_0x22833e,null))[_0x418d('0x2f')](handleError(_0x22833e,null));};var interaction_log=require(_0x418d('0x17'))(_0x418d('0x61'));exports[_0x418d('0x83')]=function(_0x3a7ffe,_0x5463e5,_0x37eb83){var _0x5e348f={'agent':{},'channel':_0x418d('0x63')};if(_0x3a7ffe[_0x418d('0x5d')]['id']){delete _0x3a7ffe[_0x418d('0x5d')]['id'];}_0x3a7ffe[_0x418d('0x5d')][_0x418d('0x67')]=_0x3a7ffe['body'][_0x418d('0x67')]||_0x3a7ffe[_0x418d('0x68')]['id'];_0x5e348f[_0x418d('0x69')]['id']=_0x3a7ffe[_0x418d('0x5d')][_0x418d('0x67')];return db[_0x418d('0x3f')]['find']({'where':{'id':_0x3a7ffe['params']['id'],'UserId':null}})[_0x418d('0x25')](handleEntityNotFound(_0x5463e5,null))[_0x418d('0x25')](function(_0x2f66e5){if(_0x2f66e5){_0x5e348f[_0x418d('0x2e')]=_0x2f66e5[_0x418d('0x84')]({'plain':!![]});return db[_0x418d('0x6a')][_0x418d('0x5b')]({'where':{'id':_0x2f66e5[_0x418d('0x6b')]}});}return null;})[_0x418d('0x25')](handleEntityNotFound(_0x5463e5,null))[_0x418d('0x25')](function(_0x20ae9d){if(_0x20ae9d){_0x5e348f[_0x418d('0x6d')]=_0x20ae9d[_0x418d('0x84')]({'plain':!![]});interaction_log[_0x418d('0x26')](_0x418d('0x85'),_0x3a7ffe[_0x418d('0x68')]['id'],_0x3a7ffe[_0x418d('0x68')][_0x418d('0x3d')],_0x3a7ffe[_0x418d('0x68')][_0x418d('0x6f')],_0x5e348f['interaction']['id'],_0x3a7ffe[_0x418d('0x5d')]?JSON[_0x418d('0x2b')](_0x3a7ffe['body']):_0x418d('0x70'));return respondWithRpcPromise(_0x418d('0x86'),_0x418d('0x87'),_0x5e348f);}return null;})[_0x418d('0x25')](function(_0x248592){var _0x551b1b='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x248592[_0x418d('0x2e')][_0x418d('0x74')];return db[_0x418d('0x75')][_0x418d('0x45')](_0x551b1b,{'type':db[_0x418d('0x76')]['QueryTypes'][_0x418d('0x78')],'raw':!![]})['then'](function(_0x298b54){return _0x298b54;});})[_0x418d('0x25')](function(_0x402c63){if(_0x402c63){_0x5e348f[_0x418d('0x2e')][_0x418d('0x79')]=_0x402c63[0x0];if(!_0x3a7ffe[_0x418d('0x5d')][_0x418d('0x67')])return;return db['User']['find']({'where':{'id':_0x3a7ffe['body'][_0x418d('0x67')],'role':'agent'},'attributes':['id',_0x418d('0x3d'),_0x418d('0x7a'),_0x418d('0x88'),_0x418d('0x7b')],'raw':!![]});}return null;})[_0x418d('0x25')](function(_0xca9d7e){if(!_0xca9d7e)return null;_0x5e348f[_0x418d('0x2e')]['agent']=_0xca9d7e;return _0x5e348f;})[_0x418d('0x25')](function(_0x232c7c){if(_0x232c7c){_0x232c7c[_0x418d('0x2e')][_0x418d('0x7d')]=util['format'](_0x418d('0x7e'),_0x3a7ffe[_0x418d('0x68')][_0x418d('0x3d')]);_0x232c7c[_0x418d('0x2e')][_0x418d('0x7f')]=_0x5e348f[_0x418d('0x7f')];_0x232c7c[_0x418d('0x2e')][_0x418d('0x80')]=_0x5e348f[_0x418d('0x7f')];_0x232c7c['message']['event']=_0x418d('0x83');respondWithRpcPromise('EventManager',_0x418d('0x82'),{'event':'rejectmessage','message':_0x232c7c[_0x418d('0x2e')]},client9002);return _0x5e348f;}return null;})[_0x418d('0x25')](respondWithResult(_0x5463e5,null))[_0x418d('0x2f')](handleError(_0x5463e5,null));};exports[_0x418d('0x31')]=function(_0x485510,_0x38a4b1,_0xf76454){if(_0x485510[_0x418d('0x5d')]['id']){delete _0x485510[_0x418d('0x5d')]['id'];}var _0x208fc0;return db[_0x418d('0x3f')]['find']({'where':{'id':_0x485510[_0x418d('0x59')]['id']}})[_0x418d('0x25')](handleEntityNotFound(_0x38a4b1,null))[_0x418d('0x25')](function(_0x4cd6cf){if(_0x4cd6cf){_0x208fc0=_0x4cd6cf;return db[_0x418d('0x89')][_0x418d('0x5b')]({'where':{'id':_0x4cd6cf['SmsAccountId']}});}})[_0x418d('0x25')](handleEntityNotFound(_0x38a4b1,null))['then'](function(_0x445763){if(_0x445763){logger[_0x418d('0x29')](_0x418d('0x2a'),_0x418d('0x31'),_0x418d('0x8a'),_0x445763[_0x418d('0x41')],util['inspect'](_0x485510[_0x418d('0x5d')],{'showHidden':![],'depth':null}));switch(_0x445763[_0x418d('0x41')]){case'twilio':if(_0x485510[_0x418d('0x5d')]['MessageSid']&&_0x485510[_0x418d('0x5d')]['MessageSid']===_0x208fc0[_0x418d('0x8b')]){return _0x208fc0['update']({'read':!![]});}else{logger[_0x418d('0x2c')](_0x418d('0x8c'),'status',_0x418d('0x8d'),util[_0x418d('0x8e')](_0x485510[_0x418d('0x5d')],{'showHidden':![],'depth':null}));}break;case _0x418d('0x8f'):if(_0x485510[_0x418d('0x5d')]['MessageUUID']&&_0x485510[_0x418d('0x5d')][_0x418d('0x90')]===_0x208fc0[_0x418d('0x8b')]&&_[_0x418d('0x91')](['sent',_0x418d('0x92')],_0x485510[_0x418d('0x5d')][_0x418d('0x93')])>=0x0){return _0x208fc0[_0x418d('0x5e')]({'read':!![]});}else{logger['error']('SmsAccount,\x20%s,\x20%s,\x20%s',_0x418d('0x31'),'plivio',util[_0x418d('0x8e')](_0x485510[_0x418d('0x5d')],{'showHidden':![],'depth':null}));}break;case _0x418d('0x94'):var _0x4f6c52=_0x485510[_0x418d('0x5d')]['results'][0x0];if(_0x4f6c52['status'][_0x418d('0x95')]==='DELIVERED'){return _0x208fc0[_0x418d('0x5e')]({'read':!![]});}else{logger[_0x418d('0x2c')]('SmsAccount,\x20%s,\x20%s,\x20%s',_0x418d('0x31'),_0x418d('0x94'),util[_0x418d('0x8e')](_0x485510[_0x418d('0x5d')],{'showHidden':![],'depth':null}));}break;}return _0x208fc0;}})[_0x418d('0x25')](respondWithResult(_0x38a4b1,null))[_0x418d('0x2f')](handleError(_0x38a4b1,null));};
\ No newline at end of file
index 52898b7..6d69436 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x69da=['events','../../mysqldb','setMaxListeners','remove','emit','hasOwnProperty','hook'];(function(_0x5debd6,_0x554e98){var _0x458cb2=function(_0x2f64ee){while(--_0x2f64ee){_0x5debd6['push'](_0x5debd6['shift']());}};_0x458cb2(++_0x554e98);}(_0x69da,0x1ce));var _0xa69d=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x69da[_0xa464c9];return _0x3d73c4;};'use strict';var EventEmitter=require(_0xa69d('0x0'));var SmsMessage=require(_0xa69d('0x1'))['db']['SmsMessage'];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xa69d('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xa69d('0x3')};function emitEvent(_0x5267ad){return function(_0x25620e,_0x5033c3,_0x4d88a2){SmsMessageEvents[_0xa69d('0x4')](_0x5267ad+':'+_0x25620e['id'],_0x25620e);SmsMessageEvents[_0xa69d('0x4')](_0x5267ad,_0x25620e);_0x4d88a2(null);};}for(var e in events){if(events[_0xa69d('0x5')](e)){var event=events[e];SmsMessage[_0xa69d('0x6')](e,emitEvent(event));}}module['exports']=SmsMessageEvents;
\ No newline at end of file
+var _0x3dab=['SmsMessage','setMaxListeners','remove','emit','hasOwnProperty','hook'];(function(_0x2effe9,_0x489165){var _0x550fcc=function(_0x3b22f1){while(--_0x3b22f1){_0x2effe9['push'](_0x2effe9['shift']());}};_0x550fcc(++_0x489165);}(_0x3dab,0x198));var _0xb3da=function(_0x494b65,_0x9e3d6d){_0x494b65=_0x494b65-0x0;var _0x93c9d8=_0x3dab[_0x494b65];return _0x93c9d8;};'use strict';var EventEmitter=require('events');var SmsMessage=require('../../mysqldb')['db'][_0xb3da('0x0')];var SmsMessageEvents=new EventEmitter();SmsMessageEvents[_0xb3da('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0xb3da('0x2')};function emitEvent(_0x2da595){return function(_0x5cecc3,_0x4b6582,_0x813f9c){SmsMessageEvents[_0xb3da('0x3')](_0x2da595+':'+_0x5cecc3['id'],_0x5cecc3);SmsMessageEvents[_0xb3da('0x3')](_0x2da595,_0x5cecc3);_0x813f9c(null);};}for(var e in events){if(events[_0xb3da('0x4')](e)){var event=events[e];SmsMessage[_0xb3da('0x5')](e,emitEvent(event));}}module['exports']=SmsMessageEvents;
\ No newline at end of file
index a38aa9a..99eabe3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4532=['fti_sms_messages','models','get','toLowerCase','out','secret','isNil','SmsInteractionId','SmsInteraction','findOne','then','createdAt','catch','SmsAccount','find','SmsAccountId','type','twilio','authToken','phone','accountSid','create','body','remote','/api/sms/messages/','/status?token=','token','sid','error','afterCreate','SmsMessage,\x20%s,\x20%s,\x20%s','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','skebby','https://api.skebby.it/API/v1.0/REST/','username','password','smsMethod','sender','login?username=','&password=','GET','split','sms','POST','session_key','total_sent','internal_order_id','deliveryReport','read','update','inspect','Missing\x20parameters:\x20username,\x20password','connectel','requestid','Missing\x20parameters:\x20authToken','clicksend','xCALLY\x20Motion','%s:%s','https://rest.clicksend.com/v3/sms/send','format','Basic\x20%s','toString','base64','http_code','data','queued_count','head','messages','message_id','clickSend','plivo','authId','infobip','baseUrl','/auth/1/session','/sms/2/text/advanced','application/json','Missing\x20parameters:\x20base_url','crypto','apiKey','text','timestamp','keys','sort','length','digest','hex','/external/get/send.php?','csc','Missing\x20parameters:\x20apiKey','clickatell','https://platform.clickatell.com/messages','uuid','UTF-8','bandwidth','https://messaging.bandwidth.com/api/v2/users/','accountId','intelepeer','https://api.intelepeer.com/_rest/v4/app/sms/send','Bearer\x20','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','status','message','Token\x20not\x20received','finally','utf8mb4','utf8mb4_unicode_ci','../../config/logger','api','bluebird','request-promise','path','rimraf','../../config/environment','./smsMessage.attributes','SmsMessage','sms_messages','messageId'];(function(_0xbb3e7f,_0x4513e0){var _0x19106d=function(_0x16ccd3){while(--_0x16ccd3){_0xbb3e7f['push'](_0xbb3e7f['shift']());}};_0x19106d(++_0x4513e0);}(_0x4532,0xe3));var _0x2453=function(_0x37bc2c,_0x28daff){_0x37bc2c=_0x37bc2c-0x0;var _0x141430=_0x4532[_0x37bc2c];return _0x141430;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x2453('0x0'))(_0x2453('0x1'));var moment=require('moment');var BPromise=require(_0x2453('0x2'));var rp=require(_0x2453('0x3'));var fs=require('fs');var path=require(_0x2453('0x4'));var rimraf=require(_0x2453('0x5'));var config=require(_0x2453('0x6'));var attributes=require(_0x2453('0x7'));module['exports']=function(_0x5ddd4a,_0x1f0983){return _0x5ddd4a['define'](_0x2453('0x8'),attributes,{'tableName':_0x2453('0x9'),'paranoid':![],'indexes':[{'name':_0x2453('0xa'),'fields':[_0x2453('0xa')]},{'name':_0x2453('0xb'),'fields':['body'],'type':'FULLTEXT'}],'timestamps':!![],'hooks':{'afterCreate':function(_0x514c65,_0x21eb3e,_0x44a676){var _0x177a73=_0x5ddd4a[_0x2453('0xc')];var _0x13fd04=_0x514c65[_0x2453('0xd')]({'plain':!![]});if(_0x13fd04['direction'][_0x2453('0xe')]()==='in'||_0x13fd04['direction'][_0x2453('0xe')]()===_0x2453('0xf')&&!_0x13fd04[_0x2453('0x10')]&&!_['isNil'](_0x13fd04['UserId'])&&!_[_0x2453('0x11')](_0x13fd04[_0x2453('0x12')])){_0x177a73[_0x2453('0x13')][_0x2453('0x14')]({'where':{'id':_0x13fd04[_0x2453('0x12')]}})[_0x2453('0x15')](function(_0x442e00){if(_0x442e00){_0x442e00['update']({'lastMsgAt':_0x13fd04[_0x2453('0x16')],'lastMsgDirection':_0x13fd04['direction'][_0x2453('0xe')]()});}})[_0x2453('0x17')](function(_0x412b08){console['error'](_0x412b08);});}if(_0x13fd04['direction']===_0x2453('0xf')&&!_0x13fd04[_0x2453('0x10')]){var _0x565f42;_0x177a73[_0x2453('0x18')][_0x2453('0x19')]({'where':{'id':_0x13fd04[_0x2453('0x1a')]},'raw':!![]})['then'](function(_0x1d5911){_0x565f42=_0x1d5911;if(_0x565f42&&_0x565f42[_0x2453('0x1b')]){switch(_0x565f42[_0x2453('0x1b')]){case _0x2453('0x1c'):var _0x3377bf=require(_0x2453('0x1c'));if(_0x565f42['accountSid']&&_0x565f42[_0x2453('0x1d')]&&_0x565f42[_0x2453('0x1e')]){var _0x6c5d43=new _0x3377bf(_0x565f42[_0x2453('0x1f')],_0x565f42['authToken']);_0x6c5d43['messages'][_0x2453('0x20')]({'body':_0x13fd04[_0x2453('0x21')],'to':_0x13fd04[_0x2453('0x1e')],'from':_0x565f42['phone'],'statusCallback':_0x565f42[_0x2453('0x22')]+_0x2453('0x23')+_0x13fd04['id']+_0x2453('0x24')+_0x565f42[_0x2453('0x25')]})[_0x2453('0x15')](function(_0x3afd49){if(_0x3afd49[_0x2453('0x26')]){return _0x514c65['update']({'messageId':_0x3afd49[_0x2453('0x26')]});}})[_0x2453('0x17')](function(_0xd8e567){logger[_0x2453('0x27')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2453('0x28'),_0x2453('0x1c'),util['inspect'](_0xd8e567,{'showHidden':![],'depth':null}));});}else{logger[_0x2453('0x27')](_0x2453('0x29'),_0x2453('0x28'),'twilio',_0x2453('0x2a'));}break;case _0x2453('0x2b'):var _0x28580a=_0x2453('0x2c');if(_0x565f42[_0x2453('0x2d')]&&_0x565f42[_0x2453('0x2e')]){var _0x381b04={'recipient':[_0x13fd04['phone']],'message':_0x13fd04[_0x2453('0x21')],'message_type':_0x565f42[_0x2453('0x2f')]};if(_0x565f42['smsMethod']&&_0x565f42[_0x2453('0x2f')]!=='SI'){_0x381b04[_0x2453('0x30')]=_0x565f42[_0x2453('0x1e')];}var _0x2e1957={'url':_0x28580a+_0x2453('0x31')+_0x565f42['username']+_0x2453('0x32')+_0x565f42[_0x2453('0x2e')],'method':_0x2453('0x33')};rp(_0x2e1957)[_0x2453('0x15')](function(_0xfb6aeb){var _0xb22a19=_0xfb6aeb[_0x2453('0x34')](';');var _0x50f424={'user_key':_0xb22a19[0x0],'session_key':_0xb22a19[0x1]};_0x2e1957={'url':_0x28580a+_0x2453('0x35'),'method':_0x2453('0x36'),'headers':{'user_key':_0x50f424['user_key'],'Session_key':_0x50f424[_0x2453('0x37')]},'json':!![],'body':_0x381b04};return rp(_0x2e1957);})[_0x2453('0x15')](function(_0x5cedbc){if(_0x5cedbc[_0x2453('0x38')]>=0x1){var _0x1d02ac={'messageId':_0x5cedbc[_0x2453('0x39')]};if(_0x565f42['smsMethod']!=='GP'||!_0x565f42[_0x2453('0x3a')]){_0x1d02ac[_0x2453('0x3b')]=!![];}return _0x514c65[_0x2453('0x3c')](_0x1d02ac);}else{return logger[_0x2453('0x27')](_0x2453('0x29'),'afterCreate','skebby',util[_0x2453('0x3d')](_0x5cedbc,{'showHidden':![],'depth':null}));}})['catch'](function(_0x37e84f){return logger[_0x2453('0x27')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2453('0x28'),_0x2453('0x2b'),util[_0x2453('0x3d')](_0x37e84f,{'showHidden':![],'depth':null}));});}else{logger[_0x2453('0x27')](_0x2453('0x29'),_0x2453('0x28'),_0x2453('0x2b'),_0x2453('0x3e'));}break;case _0x2453('0x3f'):if(_0x565f42[_0x2453('0x1d')]){var _0x5e4a44={'recipient':_0x13fd04[_0x2453('0x1e')],'message':_0x13fd04[_0x2453('0x21')],'sender':_0x565f42['senderString']||_0x565f42['phone'],'authorization':_0x565f42[_0x2453('0x1d')]};var _0x21eb3e={'method':_0x2453('0x36'),'uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x5e4a44,'json':!![]};rp(_0x21eb3e)[_0x2453('0x15')](function(_0x1629fb){var _0x2b1376={'messageId':_0x1629fb[_0x2453('0x40')]};if(!_0x565f42['deliveryReport']){_0x2b1376['read']=!![];}return _0x514c65[_0x2453('0x3c')](_0x2b1376);})[_0x2453('0x17')](function(_0x4a69c6){logger[_0x2453('0x27')](_0x2453('0x29'),'afterCreate',_0x2453('0x3f'),util['inspect'](_0x4a69c6,{'showHidden':![],'depth':null}));});}else{logger[_0x2453('0x27')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2453('0x28'),'connectel',_0x2453('0x41'));}break;case _0x2453('0x42'):if(_0x565f42[_0x2453('0x2d')]&&_0x565f42['password']){var _0x5e4a44={'messages':[{'source':_0x2453('0x43'),'to':_0x13fd04[_0x2453('0x1e')],'body':_0x13fd04[_0x2453('0x21')],'from':_0x565f42['senderString']||_0x565f42[_0x2453('0x1e')]}]};var _0x2189ee=util['format'](_0x2453('0x44'),_0x565f42[_0x2453('0x2d')],_0x565f42[_0x2453('0x2e')]);var _0x21eb3e={'method':_0x2453('0x36'),'uri':_0x2453('0x45'),'body':_0x5e4a44,'headers':{'Authorization':util[_0x2453('0x46')](_0x2453('0x47'),new Buffer(_0x2189ee)[_0x2453('0x48')](_0x2453('0x49')))},'json':!![]};rp(_0x21eb3e)['then'](function(_0x1beef4){if(_0x1beef4[_0x2453('0x4a')]>=0xc8&&_0x1beef4[_0x2453('0x4a')]<=0xce){if(_0x1beef4[_0x2453('0x4b')]&&_0x1beef4['data'][_0x2453('0x4c')]>0x0){var _0x43d695=_[_0x2453('0x4d')](_0x1beef4['data'][_0x2453('0x4e')]);var _0x5c6c09={'messageId':_0x43d695[_0x2453('0x4f')]};if(!_0x565f42[_0x2453('0x3a')]){_0x5c6c09['read']=!![];}return _0x514c65[_0x2453('0x3c')](_0x5c6c09);}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2453('0x28'),_0x2453('0x50'),util[_0x2453('0x3d')](_0x1beef4,{'showHidden':![],'depth':null}));}}else{logger[_0x2453('0x27')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2453('0x28'),_0x2453('0x50'),util[_0x2453('0x3d')](_0x1beef4,{'showHidden':![],'depth':null}));}})[_0x2453('0x17')](function(_0x214569){logger[_0x2453('0x27')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2453('0x28'),_0x2453('0x50'),util['inspect'](_0x214569,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x2453('0x29'),_0x2453('0x28'),_0x2453('0x50'),_0x2453('0x3e'));}break;case _0x2453('0x51'):if(_0x565f42[_0x2453('0x52')]&&_0x565f42[_0x2453('0x1d')]){var _0x5e4a44={'dst':_0x13fd04[_0x2453('0x1e')],'text':_0x13fd04[_0x2453('0x21')],'src':_0x565f42['senderString']||_0x565f42['phone'],'url':_0x565f42[_0x2453('0x22')]+_0x2453('0x23')+_0x13fd04['id']+_0x2453('0x24')+_0x565f42['token']};var _0x2189ee=util['format']('%s:%s',_0x565f42[_0x2453('0x52')],_0x565f42[_0x2453('0x1d')]);var _0x21eb3e={'method':_0x2453('0x36'),'uri':util['format']('https://api.plivo.com/v1/Account/%s/Message/',_0x565f42[_0x2453('0x52')]),'body':_0x5e4a44,'headers':{'Authorization':util[_0x2453('0x46')]('Basic\x20%s',new Buffer(_0x2189ee)['toString']('base64'))},'json':!![]};rp(_0x21eb3e)[_0x2453('0x15')](function(_0x43e0be){var _0x10db86={'messageId':_0x43e0be['message_uuid'][0x0]};return _0x514c65[_0x2453('0x3c')](_0x10db86);})['catch'](function(_0x2aa571){logger[_0x2453('0x27')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2453('0x28'),_0x2453('0x51'),util[_0x2453('0x3d')](_0x2aa571,{'showHidden':![],'depth':null}));});}else{logger[_0x2453('0x27')](_0x2453('0x29'),_0x2453('0x28'),'plivo','Missing\x20parameters:\x20authId,\x20authToken');}break;case _0x2453('0x53'):if(_0x565f42[_0x2453('0x2d')]&&_0x565f42['password']){if(_0x565f42['baseUrl']){var _0x3e1d4c={'method':_0x2453('0x36'),'uri':_0x565f42[_0x2453('0x54')]+_0x2453('0x55'),'body':{'username':_0x565f42[_0x2453('0x2d')],'password':_0x565f42['password']},'json':!![]};return rp(_0x3e1d4c)[_0x2453('0x15')](function(_0x55f75e){var _0x42b273={'method':_0x2453('0x36'),'uri':_0x565f42[_0x2453('0x54')]+_0x2453('0x56'),'body':{'messages':[{'from':_0x565f42[_0x2453('0x1e')],'destinations':[{'to':_0x13fd04[_0x2453('0x1e')]}],'text':_0x13fd04['body'],'notifyUrl':_0x565f42['remote']+_0x2453('0x23')+_0x13fd04['id']+_0x2453('0x24')+_0x565f42[_0x2453('0x25')],'notifyContentType':_0x2453('0x57'),'callbackData':_0x565f42[_0x2453('0x1e')]+';'+_0x13fd04[_0x2453('0x21')]}]},'headers':{'Authorization':'IBSSO\x20'+_0x55f75e[_0x2453('0x25')]},'json':!![]};return rp(_0x42b273)[_0x2453('0x15')](function(_0x3fa138){if(_0x3fa138[_0x2453('0x4e')]){var _0x3f9c23={'messageId':_0x3fa138['messages'][0x0][_0x2453('0xa')]};if(!_0x565f42['deliveryReport']){_0x3f9c23[_0x2453('0x3b')]=!![];}return _0x514c65[_0x2453('0x3c')](_0x3f9c23);}else{return logger[_0x2453('0x27')](_0x2453('0x29'),'afterCreate',_0x2453('0x53'),util[_0x2453('0x3d')](_0x3fa138,{'showHidden':![],'depth':null}));}});})[_0x2453('0x17')](function(_0x226eb2){return logger[_0x2453('0x27')](_0x2453('0x29'),_0x2453('0x28'),'infobip',util['inspect'](_0x226eb2,{'showHidden':![],'depth':null}));});}else{logger[_0x2453('0x27')](_0x2453('0x29'),_0x2453('0x28'),_0x2453('0x53'),_0x2453('0x58'));}}else{logger['error'](_0x2453('0x29'),_0x2453('0x28'),_0x2453('0x53'),_0x2453('0x3e'));}break;case'csc':var _0x495e60=require(_0x2453('0x59'));if(_0x565f42[_0x2453('0x5a')]){var _0x2f447b={};_0x2f447b['login']=_0x565f42['username'];_0x2f447b['phone']=_0x13fd04[_0x2453('0x1e')];_0x2f447b[_0x2453('0x30')]=_0x565f42[_0x2453('0x1e')];_0x2f447b[_0x2453('0x5b')]=_0x13fd04['body'];_0x2f447b[_0x2453('0x5c')]=+new Date();var _0x3b58d9='';var _0x37dad3='';var _0x22e7bd=Object[_0x2453('0x5d')](_0x2f447b);_0x22e7bd[_0x2453('0x5e')]();for(var _0x22dfee=0x0;_0x22dfee<_0x22e7bd[_0x2453('0x5f')];_0x22dfee++){if(_0x3b58d9!=''){_0x3b58d9+='&';}_0x3b58d9+=_0x22e7bd[_0x22dfee]+'='+encodeURIComponent(_0x2f447b[_0x22e7bd[_0x22dfee]]);_0x37dad3+=_0x2f447b[_0x22e7bd[_0x22dfee]];}_0x37dad3+=_0x565f42[_0x2453('0x5a')];_0x37dad3=_0x495e60['createHash']('md5')[_0x2453('0x3c')](_0x37dad3)[_0x2453('0x60')](_0x2453('0x61'));if(_0x3b58d9!==''){_0x3b58d9+='&';}_0x3b58d9+='signature='+_0x37dad3;var _0x2e1957={'method':'GET','uri':_0x565f42['baseUrl']+_0x2453('0x62')+_0x3b58d9,'json':!![]};return rp(_0x2e1957)[_0x2453('0x15')](function(_0x55c97f){var _0xc35022=Object[_0x2453('0x5d')](_0x55c97f);if(_0x55c97f[_0xc35022[0x0]]['error']&&parseInt(_0x55c97f[_0xc35022[0x0]][_0x2453('0x27')])===0x0){var _0x4dab23={'messageId':_0x55c97f[_0xc35022[0x0]]['id_sms']};if(!_0x565f42[_0x2453('0x3a')]){_0x4dab23[_0x2453('0x3b')]=!![];}return _0x514c65['update'](_0x4dab23);}else{return logger[_0x2453('0x27')](_0x2453('0x29'),_0x2453('0x28'),'csc',util[_0x2453('0x3d')](_0x55c97f[_0x2453('0x27')],{'showHidden':![],'depth':null}));}})[_0x2453('0x17')](function(_0x29dbac){return logger[_0x2453('0x27')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2453('0x28'),_0x2453('0x63'),util['inspect'](_0x29dbac,{'showHidden':![],'depth':null}));});}else{logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s',_0x2453('0x28'),'csc',_0x2453('0x64'));}break;case _0x2453('0x65'):if(_0x565f42[_0x2453('0x5a')]){var _0x54bc81={'method':_0x2453('0x36'),'uri':_0x2453('0x66'),'headers':{'Authorization':_0x565f42['apiKey']},'body':{'content':_0x13fd04['body'],'to':[_0x13fd04['phone']],'from':_0x565f42[_0x2453('0x1e')],'binary':![],'clientMessageId':_0x2453('0x67'),'charset':_0x2453('0x68')},'json':!![]};rp(_0x54bc81)['then'](function(_0x11226e){if(!_0x11226e[_0x2453('0x27')]){var _0x558c43={'messageId':_0x11226e['messages'][0x0]['apiMessageId']};if(!_0x565f42[_0x2453('0x3a')]){_0x558c43[_0x2453('0x3b')]=!![];}return _0x514c65[_0x2453('0x3c')](_0x558c43);}else{return logger[_0x2453('0x27')](_0x2453('0x29'),_0x2453('0x28'),'clickatell',util[_0x2453('0x3d')](_0x11226e[_0x2453('0x27')],{'showHidden':![],'depth':null}));}})['catch'](function(_0x1b82b8){return logger[_0x2453('0x27')](_0x2453('0x29'),'afterCreate',_0x2453('0x65'),util[_0x2453('0x3d')](_0x1b82b8,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x2453('0x29'),'afterCreate','clickatell',_0x2453('0x64'));}break;case _0x2453('0x69'):if(_0x565f42['username']&&_0x565f42[_0x2453('0x2e')]){var _0x2189ee=util[_0x2453('0x46')](_0x2453('0x44'),_0x565f42[_0x2453('0x2d')],_0x565f42[_0x2453('0x2e')]);var _0x21eb3e={'method':_0x2453('0x36'),'uri':_0x2453('0x6a')+_0x565f42[_0x2453('0x6b')]+'/messages','body':{'to':[_0x13fd04[_0x2453('0x1e')]],'text':_0x13fd04[_0x2453('0x21')],'from':_0x565f42[_0x2453('0x1e')],'applicationId':_0x565f42['applicationId']},'headers':{'Authorization':util[_0x2453('0x46')](_0x2453('0x47'),new Buffer(_0x2189ee)['toString'](_0x2453('0x49')))},'json':!![]};rp(_0x21eb3e)['then'](function(_0x41dcea){if(_0x41dcea['id']){var _0x113176={'messageId':_0x41dcea['id']};return _0x514c65['update'](_0x113176);}else{logger[_0x2453('0x27')](_0x2453('0x29'),_0x2453('0x28'),_0x2453('0x69'),util['inspect'](_0x41dcea,{'showHidden':![],'depth':null}));}})['catch'](function(_0xb2694c){logger[_0x2453('0x27')](_0x2453('0x29'),_0x2453('0x28'),'bandwidth',util[_0x2453('0x3d')](_0xb2694c,{'showHidden':![],'depth':null}));});}else{logger[_0x2453('0x27')](_0x2453('0x29'),'afterCreate',_0x2453('0x69'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x2453('0x6c'):if(_0x565f42[_0x2453('0x5a')]){var _0x1cb873={};var _0x2e1957={'method':_0x2453('0x36'),'uri':_0x2453('0x6d'),'headers':{'Authorization':_0x2453('0x6e')+_0x565f42[_0x2453('0x5a')],'Content-Type':_0x2453('0x57')},'body':{'from':_0x565f42[_0x2453('0x1e')],'to':_0x13fd04[_0x2453('0x1e')],'text':_0x13fd04[_0x2453('0x21')]},'json':!![]};return rp(_0x2e1957)['then'](function(_0x123a49){if(_0x123a49['code']==0xca){_0x1cb873['message']=_0x123a49;var _0x274518={'method':_0x2453('0x36'),'uri':_0x2453('0x6f'),'headers':{'Authorization':_0x2453('0x6e')+_0x565f42[_0x2453('0x5a')],'Content-Type':_0x2453('0x57')},'body':{'refid':_0x1cb873['message'][_0x2453('0x70')]},'json':!![]};return rp(_0x274518)[_0x2453('0x15')](function(_0x2e32c4){_0x1cb873[_0x2453('0x71')]=_0x2e32c4;var _0x246031={'messageId':_0x1cb873[_0x2453('0x72')][_0x2453('0x70')],'read':!![]};return _0x514c65['update'](_0x246031);});}else{return logger['error'](_0x2453('0x29'),'afterCreate',_0x2453('0x6c'),util[_0x2453('0x3d')](_0x123a49,{'showHidden':![],'depth':null}));}})[_0x2453('0x17')](function(_0x1879d0){return logger[_0x2453('0x27')](_0x2453('0x29'),_0x2453('0x28'),_0x2453('0x6c'),util[_0x2453('0x3d')](_0x1879d0,{'showHidden':![],'depth':null}));});}else{return logger[_0x2453('0x27')](_0x2453('0x29'),_0x2453('0x28'),'intelepeer',_0x2453('0x73'));}break;}}})[_0x2453('0x74')](function(){_0x44a676();});}else{_0x44a676();}}},'charset':_0x2453('0x75'),'collate':_0x2453('0x76')});};
\ No newline at end of file
+var _0x2c81=['head','message_id','clickSend','authId','/api/sms/messages/','https://api.plivo.com/v1/Account/%s/Message/','plivo','baseUrl','application/json','read','infobip','Missing\x20parameters:\x20base_url','crypto','login','text','timestamp','keys','sort','length','apiKey','createHash','md5','digest','hex','/external/get/send.php?','csc','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','message','https://api.intelepeer.com/_rest/v4/app/sms/mdr','refid','Token\x20not\x20received','utf8mb4_unicode_ci','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./smsMessage.attributes','define','SmsMessage','sms_messages','messageId','fti_sms_messages','body','FULLTEXT','models','direction','toLowerCase','out','secret','isNil','UserId','SmsInteractionId','then','createdAt','catch','error','SmsAccount','find','SmsAccountId','type','twilio','accountSid','phone','messages','remote','/status?token=','token','sid','SmsMessage,\x20%s,\x20%s,\x20%s','inspect','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','username','password','smsMethod','sender','&password=','GET','split','sms','POST','user_key','session_key','total_sent','internal_order_id','update','skebby','afterCreate','Missing\x20parameters:\x20username,\x20password','connectel','authToken','senderString','requestid','deliveryReport','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'];(function(_0x2e0443,_0x7e5974){var _0x52d450=function(_0x3a9985){while(--_0x3a9985){_0x2e0443['push'](_0x2e0443['shift']());}};_0x52d450(++_0x7e5974);}(_0x2c81,0x190));var _0x12c8=function(_0x99dc88,_0x47037a){_0x99dc88=_0x99dc88-0x0;var _0x3b4878=_0x2c81[_0x99dc88];return _0x3b4878;};'use strict';var _=require(_0x12c8('0x0'));var util=require(_0x12c8('0x1'));var logger=require(_0x12c8('0x2'))('api');var moment=require(_0x12c8('0x3'));var BPromise=require(_0x12c8('0x4'));var rp=require(_0x12c8('0x5'));var fs=require('fs');var path=require(_0x12c8('0x6'));var rimraf=require(_0x12c8('0x7'));var config=require('../../config/environment');var attributes=require(_0x12c8('0x8'));module['exports']=function(_0x72c113,_0x250b30){return _0x72c113[_0x12c8('0x9')](_0x12c8('0xa'),attributes,{'tableName':_0x12c8('0xb'),'paranoid':![],'indexes':[{'name':'messageId','fields':[_0x12c8('0xc')]},{'name':_0x12c8('0xd'),'fields':[_0x12c8('0xe')],'type':_0x12c8('0xf')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x2022a9,_0x414221,_0x504cd5){var _0xfbb4f=_0x72c113[_0x12c8('0x10')];var _0x25ae2a=_0x2022a9['get']({'plain':!![]});if(_0x25ae2a[_0x12c8('0x11')][_0x12c8('0x12')]()==='in'||_0x25ae2a[_0x12c8('0x11')][_0x12c8('0x12')]()===_0x12c8('0x13')&&!_0x25ae2a[_0x12c8('0x14')]&&!_[_0x12c8('0x15')](_0x25ae2a[_0x12c8('0x16')])&&!_['isNil'](_0x25ae2a[_0x12c8('0x17')])){_0xfbb4f['SmsInteraction']['findOne']({'where':{'id':_0x25ae2a[_0x12c8('0x17')]}})[_0x12c8('0x18')](function(_0x23ecc3){if(_0x23ecc3){_0x23ecc3['update']({'lastMsgAt':_0x25ae2a[_0x12c8('0x19')],'lastMsgDirection':_0x25ae2a[_0x12c8('0x11')][_0x12c8('0x12')]()});}})[_0x12c8('0x1a')](function(_0x174dea){console[_0x12c8('0x1b')](_0x174dea);});}if(_0x25ae2a[_0x12c8('0x11')]===_0x12c8('0x13')&&!_0x25ae2a[_0x12c8('0x14')]){var _0x4c1cb9;_0xfbb4f[_0x12c8('0x1c')][_0x12c8('0x1d')]({'where':{'id':_0x25ae2a[_0x12c8('0x1e')]},'raw':!![]})[_0x12c8('0x18')](function(_0x81e70e){_0x4c1cb9=_0x81e70e;if(_0x4c1cb9&&_0x4c1cb9[_0x12c8('0x1f')]){switch(_0x4c1cb9['type']){case _0x12c8('0x20'):var _0x2e9cf7=require(_0x12c8('0x20'));if(_0x4c1cb9[_0x12c8('0x21')]&&_0x4c1cb9['authToken']&&_0x4c1cb9[_0x12c8('0x22')]){var _0x109d8c=new _0x2e9cf7(_0x4c1cb9[_0x12c8('0x21')],_0x4c1cb9['authToken']);_0x109d8c[_0x12c8('0x23')]['create']({'body':_0x25ae2a[_0x12c8('0xe')],'to':_0x25ae2a[_0x12c8('0x22')],'from':_0x4c1cb9[_0x12c8('0x22')],'statusCallback':_0x4c1cb9[_0x12c8('0x24')]+'/api/sms/messages/'+_0x25ae2a['id']+_0x12c8('0x25')+_0x4c1cb9[_0x12c8('0x26')]})['then'](function(_0x14801a){if(_0x14801a[_0x12c8('0x27')]){return _0x2022a9['update']({'messageId':_0x14801a[_0x12c8('0x27')]});}})['catch'](function(_0x3cc381){logger['error'](_0x12c8('0x28'),'afterCreate',_0x12c8('0x20'),util[_0x12c8('0x29')](_0x3cc381,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x12c8('0x28'),'afterCreate','twilio',_0x12c8('0x2a'));}break;case'skebby':var _0x326751='https://api.skebby.it/API/v1.0/REST/';if(_0x4c1cb9[_0x12c8('0x2b')]&&_0x4c1cb9[_0x12c8('0x2c')]){var _0x286a62={'recipient':[_0x25ae2a[_0x12c8('0x22')]],'message':_0x25ae2a['body'],'message_type':_0x4c1cb9[_0x12c8('0x2d')]};if(_0x4c1cb9[_0x12c8('0x2d')]&&_0x4c1cb9[_0x12c8('0x2d')]!=='SI'){_0x286a62[_0x12c8('0x2e')]=_0x4c1cb9[_0x12c8('0x22')];}var _0x20885c={'url':_0x326751+'login?username='+_0x4c1cb9[_0x12c8('0x2b')]+_0x12c8('0x2f')+_0x4c1cb9['password'],'method':_0x12c8('0x30')};rp(_0x20885c)['then'](function(_0x3e0bd6){var _0x25fc9d=_0x3e0bd6[_0x12c8('0x31')](';');var _0x38ac41={'user_key':_0x25fc9d[0x0],'session_key':_0x25fc9d[0x1]};_0x20885c={'url':_0x326751+_0x12c8('0x32'),'method':_0x12c8('0x33'),'headers':{'user_key':_0x38ac41[_0x12c8('0x34')],'Session_key':_0x38ac41[_0x12c8('0x35')]},'json':!![],'body':_0x286a62};return rp(_0x20885c);})['then'](function(_0x523e07){if(_0x523e07[_0x12c8('0x36')]>=0x1){var _0xcc13e={'messageId':_0x523e07[_0x12c8('0x37')]};if(_0x4c1cb9[_0x12c8('0x2d')]!=='GP'||!_0x4c1cb9['deliveryReport']){_0xcc13e['read']=!![];}return _0x2022a9[_0x12c8('0x38')](_0xcc13e);}else{return logger[_0x12c8('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x12c8('0x39'),util['inspect'](_0x523e07,{'showHidden':![],'depth':null}));}})[_0x12c8('0x1a')](function(_0x32fdfc){return logger[_0x12c8('0x1b')](_0x12c8('0x28'),'afterCreate','skebby',util['inspect'](_0x32fdfc,{'showHidden':![],'depth':null}));});}else{logger[_0x12c8('0x1b')](_0x12c8('0x28'),_0x12c8('0x3a'),_0x12c8('0x39'),_0x12c8('0x3b'));}break;case _0x12c8('0x3c'):if(_0x4c1cb9[_0x12c8('0x3d')]){var _0x18ddde={'recipient':_0x25ae2a[_0x12c8('0x22')],'message':_0x25ae2a['body'],'sender':_0x4c1cb9[_0x12c8('0x3e')]||_0x4c1cb9[_0x12c8('0x22')],'authorization':_0x4c1cb9[_0x12c8('0x3d')]};var _0x414221={'method':_0x12c8('0x33'),'uri':'https://smsapi.connectel.se/api/v2/send/','body':_0x18ddde,'json':!![]};rp(_0x414221)['then'](function(_0x5e831c){var _0x41536f={'messageId':_0x5e831c[_0x12c8('0x3f')]};if(!_0x4c1cb9[_0x12c8('0x40')]){_0x41536f['read']=!![];}return _0x2022a9['update'](_0x41536f);})[_0x12c8('0x1a')](function(_0x4e0ac4){logger[_0x12c8('0x1b')](_0x12c8('0x28'),'afterCreate',_0x12c8('0x3c'),util[_0x12c8('0x29')](_0x4e0ac4,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x12c8('0x28'),'afterCreate',_0x12c8('0x3c'),_0x12c8('0x41'));}break;case'clicksend':if(_0x4c1cb9[_0x12c8('0x2b')]&&_0x4c1cb9[_0x12c8('0x2c')]){var _0x18ddde={'messages':[{'source':_0x12c8('0x42'),'to':_0x25ae2a['phone'],'body':_0x25ae2a[_0x12c8('0xe')],'from':_0x4c1cb9[_0x12c8('0x3e')]||_0x4c1cb9['phone']}]};var _0x35ae90=util[_0x12c8('0x43')](_0x12c8('0x44'),_0x4c1cb9[_0x12c8('0x2b')],_0x4c1cb9[_0x12c8('0x2c')]);var _0x414221={'method':_0x12c8('0x33'),'uri':_0x12c8('0x45'),'body':_0x18ddde,'headers':{'Authorization':util[_0x12c8('0x43')](_0x12c8('0x46'),new Buffer(_0x35ae90)[_0x12c8('0x47')](_0x12c8('0x48')))},'json':!![]};rp(_0x414221)[_0x12c8('0x18')](function(_0x271a29){if(_0x271a29[_0x12c8('0x49')]>=0xc8&&_0x271a29['http_code']<=0xce){if(_0x271a29['data']&&_0x271a29[_0x12c8('0x4a')][_0x12c8('0x4b')]>0x0){var _0x202917=_[_0x12c8('0x4c')](_0x271a29[_0x12c8('0x4a')][_0x12c8('0x23')]);var _0x5dd6be={'messageId':_0x202917[_0x12c8('0x4d')]};if(!_0x4c1cb9[_0x12c8('0x40')]){_0x5dd6be['read']=!![];}return _0x2022a9[_0x12c8('0x38')](_0x5dd6be);}else{logger[_0x12c8('0x1b')](_0x12c8('0x28'),_0x12c8('0x3a'),'clickSend',util[_0x12c8('0x29')](_0x271a29,{'showHidden':![],'depth':null}));}}else{logger[_0x12c8('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x12c8('0x3a'),_0x12c8('0x4e'),util[_0x12c8('0x29')](_0x271a29,{'showHidden':![],'depth':null}));}})['catch'](function(_0x51b0cb){logger[_0x12c8('0x1b')](_0x12c8('0x28'),'afterCreate',_0x12c8('0x4e'),util[_0x12c8('0x29')](_0x51b0cb,{'showHidden':![],'depth':null}));});}else{logger[_0x12c8('0x1b')](_0x12c8('0x28'),_0x12c8('0x3a'),'clickSend',_0x12c8('0x3b'));}break;case'plivo':if(_0x4c1cb9[_0x12c8('0x4f')]&&_0x4c1cb9[_0x12c8('0x3d')]){var _0x18ddde={'dst':_0x25ae2a[_0x12c8('0x22')],'text':_0x25ae2a[_0x12c8('0xe')],'src':_0x4c1cb9[_0x12c8('0x3e')]||_0x4c1cb9[_0x12c8('0x22')],'url':_0x4c1cb9[_0x12c8('0x24')]+_0x12c8('0x50')+_0x25ae2a['id']+_0x12c8('0x25')+_0x4c1cb9[_0x12c8('0x26')]};var _0x35ae90=util[_0x12c8('0x43')](_0x12c8('0x44'),_0x4c1cb9[_0x12c8('0x4f')],_0x4c1cb9[_0x12c8('0x3d')]);var _0x414221={'method':_0x12c8('0x33'),'uri':util[_0x12c8('0x43')](_0x12c8('0x51'),_0x4c1cb9[_0x12c8('0x4f')]),'body':_0x18ddde,'headers':{'Authorization':util['format'](_0x12c8('0x46'),new Buffer(_0x35ae90)[_0x12c8('0x47')](_0x12c8('0x48')))},'json':!![]};rp(_0x414221)[_0x12c8('0x18')](function(_0x311307){var _0x4c0c8a={'messageId':_0x311307['message_uuid'][0x0]};return _0x2022a9[_0x12c8('0x38')](_0x4c0c8a);})[_0x12c8('0x1a')](function(_0x56ccef){logger[_0x12c8('0x1b')](_0x12c8('0x28'),_0x12c8('0x3a'),'plivo',util['inspect'](_0x56ccef,{'showHidden':![],'depth':null}));});}else{logger[_0x12c8('0x1b')](_0x12c8('0x28'),_0x12c8('0x3a'),_0x12c8('0x52'),'Missing\x20parameters:\x20authId,\x20authToken');}break;case'infobip':if(_0x4c1cb9[_0x12c8('0x2b')]&&_0x4c1cb9[_0x12c8('0x2c')]){if(_0x4c1cb9['baseUrl']){var _0x5b07c0={'method':'POST','uri':_0x4c1cb9[_0x12c8('0x53')]+'/auth/1/session','body':{'username':_0x4c1cb9[_0x12c8('0x2b')],'password':_0x4c1cb9[_0x12c8('0x2c')]},'json':!![]};return rp(_0x5b07c0)[_0x12c8('0x18')](function(_0x6d07b2){var _0x25a5a5={'method':_0x12c8('0x33'),'uri':_0x4c1cb9[_0x12c8('0x53')]+'/sms/2/text/advanced','body':{'messages':[{'from':_0x4c1cb9['phone'],'destinations':[{'to':_0x25ae2a['phone']}],'text':_0x25ae2a[_0x12c8('0xe')],'notifyUrl':_0x4c1cb9[_0x12c8('0x24')]+_0x12c8('0x50')+_0x25ae2a['id']+_0x12c8('0x25')+_0x4c1cb9[_0x12c8('0x26')],'notifyContentType':_0x12c8('0x54'),'callbackData':_0x4c1cb9[_0x12c8('0x22')]+';'+_0x25ae2a['body']}]},'headers':{'Authorization':'IBSSO\x20'+_0x6d07b2[_0x12c8('0x26')]},'json':!![]};return rp(_0x25a5a5)[_0x12c8('0x18')](function(_0x5e384b){if(_0x5e384b[_0x12c8('0x23')]){var _0x2f63f5={'messageId':_0x5e384b[_0x12c8('0x23')][0x0]['messageId']};if(!_0x4c1cb9[_0x12c8('0x40')]){_0x2f63f5[_0x12c8('0x55')]=!![];}return _0x2022a9[_0x12c8('0x38')](_0x2f63f5);}else{return logger[_0x12c8('0x1b')](_0x12c8('0x28'),_0x12c8('0x3a'),_0x12c8('0x56'),util['inspect'](_0x5e384b,{'showHidden':![],'depth':null}));}});})['catch'](function(_0x3fadf0){return logger[_0x12c8('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x12c8('0x56'),util['inspect'](_0x3fadf0,{'showHidden':![],'depth':null}));});}else{logger[_0x12c8('0x1b')](_0x12c8('0x28'),_0x12c8('0x3a'),_0x12c8('0x56'),_0x12c8('0x57'));}}else{logger[_0x12c8('0x1b')](_0x12c8('0x28'),_0x12c8('0x3a'),_0x12c8('0x56'),_0x12c8('0x3b'));}break;case'csc':var _0x2fa58e=require(_0x12c8('0x58'));if(_0x4c1cb9['apiKey']){var _0x57309f={};_0x57309f[_0x12c8('0x59')]=_0x4c1cb9[_0x12c8('0x2b')];_0x57309f[_0x12c8('0x22')]=_0x25ae2a['phone'];_0x57309f[_0x12c8('0x2e')]=_0x4c1cb9[_0x12c8('0x22')];_0x57309f[_0x12c8('0x5a')]=_0x25ae2a[_0x12c8('0xe')];_0x57309f[_0x12c8('0x5b')]=+new Date();var _0x19edd6='';var _0x365360='';var _0xf94432=Object[_0x12c8('0x5c')](_0x57309f);_0xf94432[_0x12c8('0x5d')]();for(var _0x1672b3=0x0;_0x1672b3<_0xf94432[_0x12c8('0x5e')];_0x1672b3++){if(_0x19edd6!=''){_0x19edd6+='&';}_0x19edd6+=_0xf94432[_0x1672b3]+'='+encodeURIComponent(_0x57309f[_0xf94432[_0x1672b3]]);_0x365360+=_0x57309f[_0xf94432[_0x1672b3]];}_0x365360+=_0x4c1cb9[_0x12c8('0x5f')];_0x365360=_0x2fa58e[_0x12c8('0x60')](_0x12c8('0x61'))['update'](_0x365360)[_0x12c8('0x62')](_0x12c8('0x63'));if(_0x19edd6!==''){_0x19edd6+='&';}_0x19edd6+='signature='+_0x365360;var _0x20885c={'method':_0x12c8('0x30'),'uri':_0x4c1cb9['baseUrl']+_0x12c8('0x64')+_0x19edd6,'json':!![]};return rp(_0x20885c)[_0x12c8('0x18')](function(_0xd9a86c){var _0x1a72da=Object['keys'](_0xd9a86c);if(_0xd9a86c[_0x1a72da[0x0]][_0x12c8('0x1b')]&&parseInt(_0xd9a86c[_0x1a72da[0x0]][_0x12c8('0x1b')])===0x0){var _0x1ea5c0={'messageId':_0xd9a86c[_0x1a72da[0x0]]['id_sms']};if(!_0x4c1cb9[_0x12c8('0x40')]){_0x1ea5c0[_0x12c8('0x55')]=!![];}return _0x2022a9['update'](_0x1ea5c0);}else{return logger[_0x12c8('0x1b')](_0x12c8('0x28'),_0x12c8('0x3a'),'csc',util[_0x12c8('0x29')](_0xd9a86c['error'],{'showHidden':![],'depth':null}));}})['catch'](function(_0x5b340e){return logger['error'](_0x12c8('0x28'),_0x12c8('0x3a'),_0x12c8('0x65'),util['inspect'](_0x5b340e,{'showHidden':![],'depth':null}));});}else{logger[_0x12c8('0x1b')](_0x12c8('0x28'),'afterCreate',_0x12c8('0x65'),_0x12c8('0x66'));}break;case _0x12c8('0x67'):if(_0x4c1cb9[_0x12c8('0x5f')]){var _0x3be4d8={'method':_0x12c8('0x33'),'uri':_0x12c8('0x68'),'headers':{'Authorization':_0x4c1cb9[_0x12c8('0x5f')]},'body':{'content':_0x25ae2a[_0x12c8('0xe')],'to':[_0x25ae2a[_0x12c8('0x22')]],'from':_0x4c1cb9[_0x12c8('0x22')],'binary':![],'clientMessageId':_0x12c8('0x69'),'charset':_0x12c8('0x6a')},'json':!![]};rp(_0x3be4d8)[_0x12c8('0x18')](function(_0x5d6868){if(!_0x5d6868[_0x12c8('0x1b')]){var _0x431eef={'messageId':_0x5d6868[_0x12c8('0x23')][0x0][_0x12c8('0x6b')]};if(!_0x4c1cb9[_0x12c8('0x40')]){_0x431eef[_0x12c8('0x55')]=!![];}return _0x2022a9[_0x12c8('0x38')](_0x431eef);}else{return logger[_0x12c8('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x12c8('0x3a'),'clickatell',util['inspect'](_0x5d6868[_0x12c8('0x1b')],{'showHidden':![],'depth':null}));}})[_0x12c8('0x1a')](function(_0x1d58e1){return logger['error']('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x12c8('0x67'),util[_0x12c8('0x29')](_0x1d58e1,{'showHidden':![],'depth':null}));});}else{logger[_0x12c8('0x1b')](_0x12c8('0x28'),'afterCreate','clickatell','Missing\x20parameters:\x20apiKey');}break;case _0x12c8('0x6c'):if(_0x4c1cb9[_0x12c8('0x2b')]&&_0x4c1cb9['password']){var _0x35ae90=util[_0x12c8('0x43')](_0x12c8('0x44'),_0x4c1cb9[_0x12c8('0x2b')],_0x4c1cb9[_0x12c8('0x2c')]);var _0x414221={'method':'POST','uri':_0x12c8('0x6d')+_0x4c1cb9[_0x12c8('0x6e')]+_0x12c8('0x6f'),'body':{'to':[_0x25ae2a['phone']],'text':_0x25ae2a[_0x12c8('0xe')],'from':_0x4c1cb9['phone'],'applicationId':_0x4c1cb9[_0x12c8('0x70')]},'headers':{'Authorization':util['format'](_0x12c8('0x46'),new Buffer(_0x35ae90)[_0x12c8('0x47')](_0x12c8('0x48')))},'json':!![]};rp(_0x414221)['then'](function(_0x25f7d1){if(_0x25f7d1['id']){var _0x50e6f4={'messageId':_0x25f7d1['id']};return _0x2022a9['update'](_0x50e6f4);}else{logger[_0x12c8('0x1b')](_0x12c8('0x28'),_0x12c8('0x3a'),_0x12c8('0x6c'),util[_0x12c8('0x29')](_0x25f7d1,{'showHidden':![],'depth':null}));}})['catch'](function(_0x26cb65){logger[_0x12c8('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate','bandwidth',util[_0x12c8('0x29')](_0x26cb65,{'showHidden':![],'depth':null}));});}else{logger[_0x12c8('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x12c8('0x3a'),_0x12c8('0x6c'),'Missing\x20parameters:\x20username,\x20password');}break;case _0x12c8('0x71'):if(_0x4c1cb9['apiKey']){var _0x254d5d={};var _0x20885c={'method':_0x12c8('0x33'),'uri':'https://api.intelepeer.com/_rest/v4/app/sms/send','headers':{'Authorization':'Bearer\x20'+_0x4c1cb9[_0x12c8('0x5f')],'Content-Type':_0x12c8('0x54')},'body':{'from':_0x4c1cb9[_0x12c8('0x22')],'to':_0x25ae2a[_0x12c8('0x22')],'text':_0x25ae2a['body']},'json':!![]};return rp(_0x20885c)[_0x12c8('0x18')](function(_0x2c85d7){if(_0x2c85d7['code']==0xca){_0x254d5d[_0x12c8('0x72')]=_0x2c85d7;var _0x166e18={'method':_0x12c8('0x33'),'uri':_0x12c8('0x73'),'headers':{'Authorization':'Bearer\x20'+_0x4c1cb9[_0x12c8('0x5f')],'Content-Type':_0x12c8('0x54')},'body':{'refid':_0x254d5d[_0x12c8('0x72')]['refid']},'json':!![]};return rp(_0x166e18)[_0x12c8('0x18')](function(_0x34b36a){_0x254d5d['status']=_0x34b36a;var _0x1256c2={'messageId':_0x254d5d[_0x12c8('0x72')][_0x12c8('0x74')],'read':!![]};return _0x2022a9[_0x12c8('0x38')](_0x1256c2);});}else{return logger[_0x12c8('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x12c8('0x3a'),_0x12c8('0x71'),util[_0x12c8('0x29')](_0x2c85d7,{'showHidden':![],'depth':null}));}})[_0x12c8('0x1a')](function(_0x473b1f){return logger[_0x12c8('0x1b')](_0x12c8('0x28'),_0x12c8('0x3a'),_0x12c8('0x71'),util['inspect'](_0x473b1f,{'showHidden':![],'depth':null}));});}else{return logger[_0x12c8('0x1b')]('SmsMessage,\x20%s,\x20%s,\x20%s','afterCreate',_0x12c8('0x71'),_0x12c8('0x75'));}break;}}})['finally'](function(){_0x504cd5();});}else{_0x504cd5();}}},'charset':'utf8mb4','collate':_0x12c8('0x76')});};
\ No newline at end of file
index cc242f0..3f526db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe403=['info','request\x20sent','debug','error','SmsMessage,\x20%s,\x20%s','message','result','catch','CreateSmsMessage','SmsMessage','create','options','raw','lodash','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./smsMessage.socket','register','request','then'];(function(_0x46c78a,_0x18ef48){var _0x2a3bd0=function(_0x23ebf2){while(--_0x23ebf2){_0x46c78a['push'](_0x46c78a['shift']());}};_0x2a3bd0(++_0x18ef48);}(_0xe403,0x169));var _0x3e40=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xe403[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3e40('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x3e40('0x1'));var rs=require(_0x3e40('0x2'));var fs=require('fs');var Redis=require(_0x3e40('0x3'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x3e40('0x4'))('rpc');var config=require(_0x3e40('0x5'));var jayson=require(_0x3e40('0x6'));var client=jayson[_0x3e40('0x7')][_0x3e40('0x8')]({'port':0x232a});config[_0x3e40('0x9')]=_[_0x3e40('0xa')](config[_0x3e40('0x9')],{'host':_0x3e40('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x3e40('0xc'))[_0x3e40('0xd')](socket);function respondWithRpcPromise(_0x5168bc,_0x4643cc,_0x33a981){return new BPromise(function(_0x4e897f,_0x63493e){return client[_0x3e40('0xe')](_0x5168bc,_0x33a981)[_0x3e40('0xf')](function(_0x1bbafb){logger[_0x3e40('0x10')]('SmsMessage,\x20%s,\x20%s',_0x4643cc,_0x3e40('0x11'));logger[_0x3e40('0x12')]('SmsMessage,\x20%s,\x20%s,\x20%s',_0x4643cc,_0x3e40('0x11'),JSON['stringify'](_0x1bbafb));if(_0x1bbafb[_0x3e40('0x13')]){if(_0x1bbafb['error']['code']===0x1f4){logger[_0x3e40('0x13')](_0x3e40('0x14'),_0x4643cc,_0x1bbafb[_0x3e40('0x13')][_0x3e40('0x15')]);return _0x63493e(_0x1bbafb[_0x3e40('0x13')]['message']);}logger['error']('SmsMessage,\x20%s,\x20%s',_0x4643cc,_0x1bbafb[_0x3e40('0x13')]['message']);return _0x4e897f(_0x1bbafb[_0x3e40('0x13')][_0x3e40('0x15')]);}else{logger[_0x3e40('0x10')](_0x3e40('0x14'),_0x4643cc,_0x3e40('0x11'));_0x4e897f(_0x1bbafb[_0x3e40('0x16')][_0x3e40('0x15')]);}})[_0x3e40('0x17')](function(_0x5b4a67){logger[_0x3e40('0x13')](_0x3e40('0x14'),_0x4643cc,_0x5b4a67);_0x63493e(_0x5b4a67);});});}exports[_0x3e40('0x18')]=function(_0x1bcc73){var _0x1adf7c=this;return new Promise(function(_0x46aa33,_0x1e387c){return db[_0x3e40('0x19')][_0x3e40('0x1a')](_0x1bcc73['body'],{'raw':_0x1bcc73[_0x3e40('0x1b')]?_0x1bcc73[_0x3e40('0x1b')][_0x3e40('0x1c')]===undefined?!![]:![]:!![]})[_0x3e40('0xf')](function(_0x3c3ecf){logger[_0x3e40('0x10')](_0x3e40('0x18'),_0x1bcc73);logger[_0x3e40('0x12')]('CreateSmsMessage',_0x1bcc73,JSON['stringify'](_0x3c3ecf));_0x46aa33(_0x3c3ecf);})[_0x3e40('0x17')](function(_0x4ae4e5){logger[_0x3e40('0x13')]('CreateSmsMessage',_0x4ae4e5[_0x3e40('0x15')],_0x1bcc73);_0x1e387c(_0x1adf7c[_0x3e40('0x13')](0x1f4,_0x4ae4e5[_0x3e40('0x15')]));});});};
\ No newline at end of file
+var _0xcbc7=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','localhost','socket.io-emitter','./smsMessage.socket','register','then','request\x20sent','debug','SmsMessage,\x20%s,\x20%s,\x20%s','stringify','error','SmsMessage,\x20%s,\x20%s','message','info','catch','CreateSmsMessage','SmsMessage','create','body','options','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x29817c,_0x52b72b){var _0x13ea16=function(_0x209aca){while(--_0x209aca){_0x29817c['push'](_0x29817c['shift']());}};_0x13ea16(++_0x52b72b);}(_0xcbc7,0x12b));var _0x7cbc=function(_0x4f9b3a,_0x4b31a2){_0x4f9b3a=_0x4f9b3a-0x0;var _0x10cb16=_0xcbc7[_0x4f9b3a];return _0x10cb16;};'use strict';var _=require(_0x7cbc('0x0'));var util=require(_0x7cbc('0x1'));var moment=require(_0x7cbc('0x2'));var BPromise=require(_0x7cbc('0x3'));var rs=require(_0x7cbc('0x4'));var fs=require('fs');var Redis=require(_0x7cbc('0x5'));var db=require(_0x7cbc('0x6'))['db'];var utils=require(_0x7cbc('0x7'));var logger=require(_0x7cbc('0x8'))(_0x7cbc('0x9'));var config=require(_0x7cbc('0xa'));var jayson=require(_0x7cbc('0xb'));var client=jayson['client'][_0x7cbc('0xc')]({'port':0x232a});config[_0x7cbc('0xd')]=_['defaults'](config[_0x7cbc('0xd')],{'host':_0x7cbc('0xe'),'port':0x18eb});var socket=require(_0x7cbc('0xf'))(new Redis(config[_0x7cbc('0xd')]));require(_0x7cbc('0x10'))[_0x7cbc('0x11')](socket);function respondWithRpcPromise(_0x34dfc2,_0x4b6456,_0x392b20){return new BPromise(function(_0x35b666,_0x27c454){return client['request'](_0x34dfc2,_0x392b20)[_0x7cbc('0x12')](function(_0x5e25eb){logger['info']('SmsMessage,\x20%s,\x20%s',_0x4b6456,_0x7cbc('0x13'));logger[_0x7cbc('0x14')](_0x7cbc('0x15'),_0x4b6456,_0x7cbc('0x13'),JSON[_0x7cbc('0x16')](_0x5e25eb));if(_0x5e25eb[_0x7cbc('0x17')]){if(_0x5e25eb[_0x7cbc('0x17')]['code']===0x1f4){logger[_0x7cbc('0x17')](_0x7cbc('0x18'),_0x4b6456,_0x5e25eb['error'][_0x7cbc('0x19')]);return _0x27c454(_0x5e25eb[_0x7cbc('0x17')][_0x7cbc('0x19')]);}logger[_0x7cbc('0x17')](_0x7cbc('0x18'),_0x4b6456,_0x5e25eb[_0x7cbc('0x17')][_0x7cbc('0x19')]);return _0x35b666(_0x5e25eb[_0x7cbc('0x17')][_0x7cbc('0x19')]);}else{logger[_0x7cbc('0x1a')](_0x7cbc('0x18'),_0x4b6456,_0x7cbc('0x13'));_0x35b666(_0x5e25eb['result'][_0x7cbc('0x19')]);}})[_0x7cbc('0x1b')](function(_0x5756ba){logger[_0x7cbc('0x17')](_0x7cbc('0x18'),_0x4b6456,_0x5756ba);_0x27c454(_0x5756ba);});});}exports[_0x7cbc('0x1c')]=function(_0x4caa02){var _0x1b61a3=this;return new Promise(function(_0x324f83,_0x447ca1){return db[_0x7cbc('0x1d')][_0x7cbc('0x1e')](_0x4caa02[_0x7cbc('0x1f')],{'raw':_0x4caa02[_0x7cbc('0x20')]?_0x4caa02[_0x7cbc('0x20')][_0x7cbc('0x21')]===undefined?!![]:![]:!![]})[_0x7cbc('0x12')](function(_0x54dd95){logger[_0x7cbc('0x1a')](_0x7cbc('0x1c'),_0x4caa02);logger[_0x7cbc('0x14')](_0x7cbc('0x1c'),_0x4caa02,JSON[_0x7cbc('0x16')](_0x54dd95));_0x324f83(_0x54dd95);})[_0x7cbc('0x1b')](function(_0x5363a4){logger['error'](_0x7cbc('0x1c'),_0x5363a4[_0x7cbc('0x19')],_0x4caa02);_0x447ca1(_0x1b61a3[_0x7cbc('0x17')](0x1f4,_0x5363a4[_0x7cbc('0x19')]));});});};
\ No newline at end of file
index 844a2a3..9c319f1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x834b=['smsMessage:','./smsMessage.events','save','remove','update','removeListener','register','length'];(function(_0x382381,_0x3a9b79){var _0x23b45f=function(_0x4f15a0){while(--_0x4f15a0){_0x382381['push'](_0x382381['shift']());}};_0x23b45f(++_0x3a9b79);}(_0x834b,0x1b9));var _0xb834=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x834b[_0x397e5f];return _0x5302b8;};'use strict';var SmsMessageEvents=require(_0xb834('0x0'));var events=[_0xb834('0x1'),_0xb834('0x2'),_0xb834('0x3')];function createListener(_0x5c62b7,_0x32f0c6){return function(_0x584ae8){_0x32f0c6['emit'](_0x5c62b7,_0x584ae8);};}function removeListener(_0x4c03d8,_0x455a5c){return function(){SmsMessageEvents[_0xb834('0x4')](_0x4c03d8,_0x455a5c);};}exports[_0xb834('0x5')]=function(_0x2e8cdd){for(var _0x342d03=0x0,_0x597fe8=events[_0xb834('0x6')];_0x342d03<_0x597fe8;_0x342d03++){var _0x4d219f=events[_0x342d03];var _0x1fea84=createListener(_0xb834('0x7')+_0x4d219f,_0x2e8cdd);SmsMessageEvents['on'](_0x4d219f,_0x1fea84);}};
\ No newline at end of file
+var _0x8040=['remove','removeListener','register','length','smsMessage:','./smsMessage.events','save'];(function(_0x45783c,_0x49c56d){var _0x1161da=function(_0x3c5d41){while(--_0x3c5d41){_0x45783c['push'](_0x45783c['shift']());}};_0x1161da(++_0x49c56d);}(_0x8040,0x91));var _0x0804=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0x8040[_0x49ca18];return _0x145d54;};'use strict';var SmsMessageEvents=require(_0x0804('0x0'));var events=[_0x0804('0x1'),_0x0804('0x2'),'update'];function createListener(_0x52d753,_0x7bda49){return function(_0x46680f){_0x7bda49['emit'](_0x52d753,_0x46680f);};}function removeListener(_0x4d6784,_0xf3f2ba){return function(){SmsMessageEvents[_0x0804('0x3')](_0x4d6784,_0xf3f2ba);};}exports[_0x0804('0x4')]=function(_0x47ac6b){for(var _0x59b5d8=0x0,_0x308086=events[_0x0804('0x5')];_0x59b5d8<_0x308086;_0x59b5d8++){var _0x2ab16f=events[_0x59b5d8];var _0x48a806=createListener(_0x0804('0x6')+_0x2ab16f,_0x47ac6b);SmsMessageEvents['on'](_0x2ab16f,_0x48a806);}};
\ No newline at end of file
index 83211ba..c35fd2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x35b9=['create','addTeams','post','addAgents','put','delete','destroy','removeTeams','removeAgents','exports','multer','path','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueue.controller','get','index','/describe','isAuthenticated','describe','/:id','show','/:id/members','/:id/teams','getTeams','/:id/users','getAgents'];(function(_0x1b0307,_0x4336b1){var _0x5c8d34=function(_0x5b1b61){while(--_0x5b1b61){_0x1b0307['push'](_0x1b0307['shift']());}};_0x5c8d34(++_0x4336b1);}(_0x35b9,0x172));var _0x935b=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0x35b9[_0x2dafbe];return _0x58a45a;};'use strict';var multer=require(_0x935b('0x0'));var util=require('util');var path=require(_0x935b('0x1'));var timeout=require('connect-timeout');var express=require(_0x935b('0x2'));var router=express['Router']();var fs_extra=require(_0x935b('0x3'));var auth=require(_0x935b('0x4'));var interaction=require(_0x935b('0x5'));var config=require(_0x935b('0x6'));var controller=require(_0x935b('0x7'));router[_0x935b('0x8')]('/',auth['isAuthenticated'](),controller[_0x935b('0x9')]);router['get'](_0x935b('0xa'),auth[_0x935b('0xb')](),controller[_0x935b('0xc')]);router[_0x935b('0x8')](_0x935b('0xd'),auth[_0x935b('0xb')](),controller[_0x935b('0xe')]);router[_0x935b('0x8')](_0x935b('0xf'),auth[_0x935b('0xb')](),controller['getMembers']);router[_0x935b('0x8')](_0x935b('0x10'),auth[_0x935b('0xb')](),controller[_0x935b('0x11')]);router[_0x935b('0x8')](_0x935b('0x12'),auth[_0x935b('0xb')](),controller[_0x935b('0x13')]);router['post']('/',auth['isAuthenticated'](),controller[_0x935b('0x14')]);router['post'](_0x935b('0x10'),auth[_0x935b('0xb')](),controller[_0x935b('0x15')]);router[_0x935b('0x16')](_0x935b('0x12'),auth[_0x935b('0xb')](),controller[_0x935b('0x17')]);router[_0x935b('0x18')](_0x935b('0xd'),auth[_0x935b('0xb')](),controller['update']);router[_0x935b('0x19')]('/:id',auth[_0x935b('0xb')](),controller[_0x935b('0x1a')]);router[_0x935b('0x19')](_0x935b('0x10'),auth['isAuthenticated'](),controller[_0x935b('0x1b')]);router[_0x935b('0x19')](_0x935b('0x12'),auth['isAuthenticated'](),controller[_0x935b('0x1c')]);module[_0x935b('0x1d')]=router;
\ No newline at end of file
+var _0xf386=['../../components/auth/service','../../config/environment','get','isAuthenticated','index','/:id','show','/:id/members','getTeams','/:id/users','getAgents','post','create','addTeams','update','delete','/:id/teams','removeTeams','removeAgents','exports','path','Router','fs-extra'];(function(_0x53ea2d,_0x521b53){var _0x5dfb4a=function(_0x59082c){while(--_0x59082c){_0x53ea2d['push'](_0x53ea2d['shift']());}};_0x5dfb4a(++_0x521b53);}(_0xf386,0x184));var _0x6f38=function(_0x313eca,_0x3b3f33){_0x313eca=_0x313eca-0x0;var _0x19775a=_0xf386[_0x313eca];return _0x19775a;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0x6f38('0x0'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0x6f38('0x1')]();var fs_extra=require(_0x6f38('0x2'));var auth=require(_0x6f38('0x3'));var interaction=require('../../components/interaction/service');var config=require(_0x6f38('0x4'));var controller=require('./smsQueue.controller');router[_0x6f38('0x5')]('/',auth[_0x6f38('0x6')](),controller[_0x6f38('0x7')]);router['get']('/describe',auth[_0x6f38('0x6')](),controller['describe']);router[_0x6f38('0x5')](_0x6f38('0x8'),auth[_0x6f38('0x6')](),controller[_0x6f38('0x9')]);router[_0x6f38('0x5')](_0x6f38('0xa'),auth[_0x6f38('0x6')](),controller['getMembers']);router[_0x6f38('0x5')]('/:id/teams',auth[_0x6f38('0x6')](),controller[_0x6f38('0xb')]);router[_0x6f38('0x5')](_0x6f38('0xc'),auth[_0x6f38('0x6')](),controller[_0x6f38('0xd')]);router[_0x6f38('0xe')]('/',auth[_0x6f38('0x6')](),controller[_0x6f38('0xf')]);router[_0x6f38('0xe')]('/:id/teams',auth['isAuthenticated'](),controller[_0x6f38('0x10')]);router[_0x6f38('0xe')](_0x6f38('0xc'),auth[_0x6f38('0x6')](),controller['addAgents']);router['put'](_0x6f38('0x8'),auth['isAuthenticated'](),controller[_0x6f38('0x11')]);router[_0x6f38('0x12')]('/:id',auth[_0x6f38('0x6')](),controller['destroy']);router[_0x6f38('0x12')](_0x6f38('0x13'),auth['isAuthenticated'](),controller[_0x6f38('0x14')]);router[_0x6f38('0x12')](_0x6f38('0xc'),auth[_0x6f38('0x6')](),controller[_0x6f38('0x15')]);module[_0x6f38('0x16')]=router;
\ No newline at end of file
index 76be4cc..a0a4f8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6fd6=['sequelize','STRING','name','INTEGER','rrmemory','beepall','roundrobin'];(function(_0x4e8190,_0x1e485f){var _0x11b432=function(_0x370746){while(--_0x370746){_0x4e8190['push'](_0x4e8190['shift']());}};_0x11b432(++_0x1e485f);}(_0x6fd6,0xa8));var _0x66fd=function(_0x9f75d8,_0x278995){_0x9f75d8=_0x9f75d8-0x0;var _0x344c77=_0x6fd6[_0x9f75d8];return _0x344c77;};'use strict';var Sequelize=require(_0x66fd('0x0'));module['exports']={'name':{'type':Sequelize[_0x66fd('0x1')],'unique':_0x66fd('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0x66fd('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM'](_0x66fd('0x4'),_0x66fd('0x5'),_0x66fd('0x6'))}};
\ No newline at end of file
+var _0x8cbe=['INTEGER','beepall','sequelize','STRING','name'];(function(_0xeb035f,_0x4b96bb){var _0x5e5f4c=function(_0x830e8){while(--_0x830e8){_0xeb035f['push'](_0xeb035f['shift']());}};_0x5e5f4c(++_0x4b96bb);}(_0x8cbe,0x124));var _0xe8cb=function(_0x12172f,_0x20b1f8){_0x12172f=_0x12172f-0x0;var _0x5d146e=_0x8cbe[_0x12172f];return _0x5d146e;};'use strict';var Sequelize=require(_0xe8cb('0x0'));module['exports']={'name':{'type':Sequelize[_0xe8cb('0x1')],'unique':_0xe8cb('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'description':{'type':Sequelize['STRING']},'timeout':{'type':Sequelize[_0xe8cb('0x3')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize['ENUM']('rrmemory',_0xe8cb('0x4'),'roundrobin')}};
\ No newline at end of file
index 25a62d3..b3c3316 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90ad=['../../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','count','offset','limit','Content-Range','reject','update','then','destroy','get','SmsQueues','UserProfileResource','error','stack','name','send','index','map','SmsQueue','rawAttributes','fieldName','type','model','query','keys','filters','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filter','VIRTUAL','options','include','findAll','show','params','includeAll','merge','find','catch','create','body','user','role','UserProfileSection','userProfileId','describe','getMembers','findOne','intersection','order','pick','SmsQueueId','UserId','agent','updatedAt','createdAt','rows','format','%s/%s','smsPause','getTeams','Team','addTeams','ids','Agents','online','voicePause','interface','UserSmsQueue','findOrCreate','forEach','emit','removeTeams','select','field','tq.TeamId','from','team_has_sms_queues','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','toString','SELECT','every','includes','all','union','value','sequelize','transaction','isEmpty','userSmsQueue:remove','addAgents','omit','userSmsQueue:save','removeAgents','isArray','User','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','ejs','fs-extra','squel','crypto','jsforce','querystring'];(function(_0x3cec97,_0x55dc7b){var _0x467602=function(_0x2bbbbe){while(--_0x2bbbbe){_0x3cec97['push'](_0x3cec97['shift']());}};_0x467602(++_0x55dc7b);}(_0x90ad,0x195));var _0xd90a=function(_0x56fe98,_0x43dc16){_0x56fe98=_0x56fe98-0x0;var _0x212f4f=_0x90ad[_0x56fe98];return _0x212f4f;};'use strict';var emlformat=require(_0xd90a('0x0'));var rimraf=require(_0xd90a('0x1'));var zipdir=require(_0xd90a('0x2'));var jsonpatch=require(_0xd90a('0x3'));var rp=require(_0xd90a('0x4'));var moment=require('moment');var BPromise=require(_0xd90a('0x5'));var Mustache=require(_0xd90a('0x6'));var util=require(_0xd90a('0x7'));var path=require('path');var sox=require(_0xd90a('0x8'));var csv=require('to-csv');var ejs=require(_0xd90a('0x9'));var fs=require('fs');var fs_extra=require(_0xd90a('0xa'));var _=require('lodash');var squel=require(_0xd90a('0xb'));var crypto=require(_0xd90a('0xc'));var jsforce=require(_0xd90a('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0xd90a('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xd90a('0xf'));var as=require(_0xd90a('0x10'));var hardwareService=require(_0xd90a('0x11'));var logger=require(_0xd90a('0x12'))('api');var utils=require(_0xd90a('0x13'));var config=require(_0xd90a('0x14'));var licenseUtil=require(_0xd90a('0x15'));var db=require(_0xd90a('0x16'))['db'];config[_0xd90a('0x17')]=_[_0xd90a('0x18')](config[_0xd90a('0x17')],{'host':_0xd90a('0x19'),'port':0x18eb});var socket=require(_0xd90a('0x1a'))(new Redis(config[_0xd90a('0x17')]));require('./smsQueue.socket')[_0xd90a('0x1b')](socket);function respondWithStatusCode(_0x2e6bc3,_0x7c9d03){_0x7c9d03=_0x7c9d03||0xcc;return function(_0xc90405){if(_0xc90405){return _0x2e6bc3[_0xd90a('0x1c')](_0x7c9d03);}return _0x2e6bc3[_0xd90a('0x1d')](_0x7c9d03)[_0xd90a('0x1e')]();};}function respondWithResult(_0x41fc02,_0x36e45c){_0x36e45c=_0x36e45c||0xc8;return function(_0x1d42ac){if(_0x1d42ac){return _0x41fc02['status'](_0x36e45c)[_0xd90a('0x1f')](_0x1d42ac);}};}function respondWithFilteredResult(_0x28b133,_0x17a1a2){return function(_0x5d4836){if(_0x5d4836){var _0x189898=typeof _0x17a1a2['offset']===_0xd90a('0x20')&&typeof _0x17a1a2['limit']===_0xd90a('0x20');var _0x334f54=_0x5d4836[_0xd90a('0x21')];var _0x598a65=_0x189898?0x0:_0x17a1a2[_0xd90a('0x22')];var _0x81e68e=_0x189898?_0x5d4836[_0xd90a('0x21')]:_0x17a1a2[_0xd90a('0x22')]+_0x17a1a2[_0xd90a('0x23')];var _0x49d774;if(_0x81e68e>=_0x334f54){_0x81e68e=_0x334f54;_0x49d774=0xc8;}else{_0x49d774=0xce;}_0x28b133[_0xd90a('0x1d')](_0x49d774);return _0x28b133['set'](_0xd90a('0x24'),_0x598a65+'-'+_0x81e68e+'/'+_0x334f54)[_0xd90a('0x1f')](_0x5d4836);}return null;};}function patchUpdates(_0x2e074){return function(_0x343d79){try{jsonpatch['apply'](_0x343d79,_0x2e074,!![]);}catch(_0x3f0b0e){return BPromise[_0xd90a('0x25')](_0x3f0b0e);}return _0x343d79['save']();};}function saveUpdates(_0xcba57e,_0x2dff4c){return function(_0x439727){if(_0x439727){return _0x439727[_0xd90a('0x26')](_0xcba57e)[_0xd90a('0x27')](function(_0x1cccab){return _0x1cccab;});}return null;};}function removeEntity(_0x265465,_0x147b6b){return function(_0x80e654){if(_0x80e654){return _0x80e654[_0xd90a('0x28')]()['then'](function(){var _0x35a3e9=_0x80e654[_0xd90a('0x29')]({'plain':!![]});var _0x265368=_0xd90a('0x2a');return db[_0xd90a('0x2b')][_0xd90a('0x28')]({'where':{'type':_0x265368,'resourceId':_0x35a3e9['id']}})[_0xd90a('0x27')](function(){return _0x80e654;});})[_0xd90a('0x27')](function(){_0x265465[_0xd90a('0x1d')](0xcc)[_0xd90a('0x1e')]();});}};}function handleEntityNotFound(_0x124600,_0x2349fb){return function(_0x121700){if(!_0x121700){_0x124600['sendStatus'](0x194);}return _0x121700;};}function handleError(_0x17d014,_0xbb0d0){_0xbb0d0=_0xbb0d0||0x1f4;return function(_0x248330){logger[_0xd90a('0x2c')](_0x248330[_0xd90a('0x2d')]);if(_0x248330['name']){delete _0x248330[_0xd90a('0x2e')];}_0x17d014[_0xd90a('0x1d')](_0xbb0d0)[_0xd90a('0x2f')](_0x248330);};}exports[_0xd90a('0x30')]=function(_0x204b2f,_0x4ead91){var _0x4b10e9={},_0x2500aa={},_0x2a663c={'count':0x0,'rows':[]};var _0x2092b6=_[_0xd90a('0x31')](db[_0xd90a('0x32')][_0xd90a('0x33')],function(_0x46482c){return{'name':_0x46482c[_0xd90a('0x34')],'type':_0x46482c[_0xd90a('0x35')]['key']};});_0x2500aa[_0xd90a('0x36')]=_[_0xd90a('0x31')](_0x2092b6,_0xd90a('0x2e'));_0x2500aa[_0xd90a('0x37')]=_[_0xd90a('0x38')](_0x204b2f['query']);_0x2500aa[_0xd90a('0x39')]=_['intersection'](_0x2500aa['model'],_0x2500aa[_0xd90a('0x37')]);_0x4b10e9['attributes']=_['intersection'](_0x2500aa[_0xd90a('0x36')],qs[_0xd90a('0x3a')](_0x204b2f[_0xd90a('0x37')][_0xd90a('0x3a')]));_0x4b10e9[_0xd90a('0x3b')]=_0x4b10e9[_0xd90a('0x3b')][_0xd90a('0x3c')]?_0x4b10e9[_0xd90a('0x3b')]:_0x2500aa[_0xd90a('0x36')];if(!_0x204b2f[_0xd90a('0x37')][_0xd90a('0x3d')](_0xd90a('0x3e'))){_0x4b10e9['limit']=qs[_0xd90a('0x23')](_0x204b2f['query'][_0xd90a('0x23')]);_0x4b10e9['offset']=qs[_0xd90a('0x22')](_0x204b2f[_0xd90a('0x37')][_0xd90a('0x22')]);}_0x4b10e9['order']=qs[_0xd90a('0x3f')](_0x204b2f['query'][_0xd90a('0x3f')]);_0x4b10e9[_0xd90a('0x40')]=qs[_0xd90a('0x39')](_['pick'](_0x204b2f[_0xd90a('0x37')],_0x2500aa[_0xd90a('0x39')]),_0x2092b6);if(_0x204b2f[_0xd90a('0x37')][_0xd90a('0x41')]){_0x4b10e9[_0xd90a('0x40')]=_['merge'](_0x4b10e9[_0xd90a('0x40')],{'$or':_[_0xd90a('0x31')](_0x2092b6,function(_0x398fa7){if(_0x398fa7[_0xd90a('0x35')]!==_0xd90a('0x42')){var _0xed0aa3={};_0xed0aa3[_0x398fa7['name']]={'$like':'%'+_0x204b2f[_0xd90a('0x37')][_0xd90a('0x41')]+'%'};return _0xed0aa3;}})});}_0x4b10e9=_['merge']({},_0x4b10e9,_0x204b2f[_0xd90a('0x43')]);var _0x4e9555={'where':_0x4b10e9[_0xd90a('0x40')]};return db['SmsQueue']['count'](_0x4e9555)['then'](function(_0x470a8e){_0x2a663c[_0xd90a('0x21')]=_0x470a8e;if(_0x204b2f[_0xd90a('0x37')]['includeAll']){_0x4b10e9[_0xd90a('0x44')]=[{'all':!![]}];}return db[_0xd90a('0x32')][_0xd90a('0x45')](_0x4b10e9);})['then'](function(_0x371228){_0x2a663c['rows']=_0x371228;return _0x2a663c;})['then'](respondWithFilteredResult(_0x4ead91,_0x4b10e9))['catch'](handleError(_0x4ead91,null));};exports[_0xd90a('0x46')]=function(_0x5109f5,_0x33e023){var _0x5ea8f2={'raw':!![],'where':{'id':_0x5109f5[_0xd90a('0x47')]['id']}},_0x3158b4={};_0x3158b4[_0xd90a('0x36')]=_[_0xd90a('0x38')](db[_0xd90a('0x32')]['rawAttributes']);_0x3158b4[_0xd90a('0x37')]=_[_0xd90a('0x38')](_0x5109f5['query']);_0x3158b4['filters']=_['intersection'](_0x3158b4[_0xd90a('0x36')],_0x3158b4[_0xd90a('0x37')]);_0x5ea8f2['attributes']=_['intersection'](_0x3158b4[_0xd90a('0x36')],qs['fields'](_0x5109f5[_0xd90a('0x37')][_0xd90a('0x3a')]));_0x5ea8f2[_0xd90a('0x3b')]=_0x5ea8f2[_0xd90a('0x3b')][_0xd90a('0x3c')]?_0x5ea8f2[_0xd90a('0x3b')]:_0x3158b4[_0xd90a('0x36')];if(_0x5109f5[_0xd90a('0x37')][_0xd90a('0x48')]){_0x5ea8f2[_0xd90a('0x44')]=[{'all':!![]}];}_0x5ea8f2=_[_0xd90a('0x49')]({},_0x5ea8f2,_0x5109f5[_0xd90a('0x43')]);return db[_0xd90a('0x32')][_0xd90a('0x4a')](_0x5ea8f2)[_0xd90a('0x27')](handleEntityNotFound(_0x33e023,null))[_0xd90a('0x27')](respondWithResult(_0x33e023,null))[_0xd90a('0x4b')](handleError(_0x33e023,null));};exports[_0xd90a('0x4c')]=function(_0xe2840f,_0x4646e4){return db[_0xd90a('0x32')][_0xd90a('0x4c')](_0xe2840f[_0xd90a('0x4d')],{})['then'](function(_0x255d31){var _0x180e71=_0xe2840f[_0xd90a('0x4e')][_0xd90a('0x29')]({'plain':!![]});if(!_0x180e71)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x180e71[_0xd90a('0x4f')]===_0xd90a('0x4e')){var _0xf9b25b=_0x255d31[_0xd90a('0x29')]({'plain':!![]});var _0x2e010c='SmsQueues';return db[_0xd90a('0x50')]['find']({'where':{'name':_0x2e010c,'userProfileId':_0x180e71[_0xd90a('0x51')]},'raw':!![]})[_0xd90a('0x27')](function(_0x433e17){if(_0x433e17&&_0x433e17['autoAssociation']===0x0){return db['UserProfileResource'][_0xd90a('0x4c')]({'name':_0xf9b25b[_0xd90a('0x2e')],'resourceId':_0xf9b25b['id'],'type':_0x433e17[_0xd90a('0x2e')],'sectionId':_0x433e17['id']},{})[_0xd90a('0x27')](function(){return _0x255d31;});}else{return _0x255d31;}})['catch'](function(_0x51e866){logger[_0xd90a('0x2c')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x51e866);throw _0x51e866;});}return _0x255d31;})[_0xd90a('0x27')](respondWithResult(_0x4646e4,0xc9))[_0xd90a('0x4b')](handleError(_0x4646e4,null));};exports[_0xd90a('0x26')]=function(_0x32c9eb,_0x589a9f){if(_0x32c9eb[_0xd90a('0x4d')]['id']){delete _0x32c9eb[_0xd90a('0x4d')]['id'];}return db[_0xd90a('0x32')][_0xd90a('0x4a')]({'where':{'id':_0x32c9eb[_0xd90a('0x47')]['id']}})[_0xd90a('0x27')](handleEntityNotFound(_0x589a9f,null))['then'](saveUpdates(_0x32c9eb['body'],null))[_0xd90a('0x27')](respondWithResult(_0x589a9f,null))[_0xd90a('0x4b')](handleError(_0x589a9f,null));};exports[_0xd90a('0x28')]=function(_0x343666,_0x175793){return db['SmsQueue'][_0xd90a('0x4a')]({'where':{'id':_0x343666[_0xd90a('0x47')]['id']}})[_0xd90a('0x27')](handleEntityNotFound(_0x175793,null))[_0xd90a('0x27')](removeEntity(_0x175793,null))['catch'](handleError(_0x175793,null));};exports[_0xd90a('0x52')]=function(_0x1eff3c,_0x3da1a6){return db[_0xd90a('0x32')][_0xd90a('0x52')]()['then'](respondWithResult(_0x3da1a6,null))[_0xd90a('0x4b')](handleError(_0x3da1a6,null));};exports[_0xd90a('0x53')]=function(_0x4637a8,_0x2df9f9,_0x342613){var _0x388dea={'raw':!![],'where':{}},_0x4b6ff3={},_0x143f22;return db[_0xd90a('0x32')][_0xd90a('0x54')]({'where':{'id':_0x4637a8[_0xd90a('0x47')]['id']}})[_0xd90a('0x27')](handleEntityNotFound(_0x2df9f9,null))[_0xd90a('0x27')](function(_0x3037f9){if(_0x3037f9){_0x143f22=_0x3037f9[_0xd90a('0x29')]({'plain':!![]});_0x4b6ff3[_0xd90a('0x36')]=_[_0xd90a('0x38')](db['UserSmsQueue'][_0xd90a('0x33')]);_0x4b6ff3[_0xd90a('0x37')]=_[_0xd90a('0x38')](_0x4637a8[_0xd90a('0x37')]);_0x4b6ff3[_0xd90a('0x39')]=_[_0xd90a('0x55')](_0x4b6ff3[_0xd90a('0x36')],_0x4b6ff3[_0xd90a('0x37')]);_0x388dea[_0xd90a('0x3b')]=_[_0xd90a('0x55')](_0x4b6ff3[_0xd90a('0x36')],qs[_0xd90a('0x3a')](_0x4637a8[_0xd90a('0x37')]['fields']));_0x388dea['attributes']=_0x388dea[_0xd90a('0x3b')][_0xd90a('0x3c')]?_0x388dea[_0xd90a('0x3b')]:_0x4b6ff3[_0xd90a('0x36')];if(!_0x4637a8[_0xd90a('0x37')][_0xd90a('0x3d')](_0xd90a('0x3e'))){_0x388dea[_0xd90a('0x23')]=qs[_0xd90a('0x23')](_0x4637a8[_0xd90a('0x37')][_0xd90a('0x23')]);_0x388dea[_0xd90a('0x22')]=qs['offset'](_0x4637a8[_0xd90a('0x37')][_0xd90a('0x22')]);}_0x388dea[_0xd90a('0x56')]=qs[_0xd90a('0x3f')](_0x4637a8[_0xd90a('0x37')][_0xd90a('0x3f')]);_0x388dea[_0xd90a('0x40')]=qs['filters'](_[_0xd90a('0x57')](_0x4637a8[_0xd90a('0x37')],_0x4b6ff3['filters']));_0x388dea[_0xd90a('0x40')][_0xd90a('0x58')]=_0x3037f9['id'];if(_0x4637a8[_0xd90a('0x37')][_0xd90a('0x41')]){_0x388dea[_0xd90a('0x40')]=_[_0xd90a('0x49')](_0x388dea[_0xd90a('0x40')],{'$or':_['map'](_0x388dea[_0xd90a('0x3b')],function(_0x53f7e3){var _0x2af2bb={};_0x2af2bb[_0x53f7e3]={'$like':'%'+_0x4637a8['query'][_0xd90a('0x41')]+'%'};return _0x2af2bb;})});}_0x388dea=_[_0xd90a('0x49')]({},_0x388dea,_0x4637a8['options']);return db['UserSmsQueue']['findAll'](_0x388dea);}})[_0xd90a('0x27')](function(_0x5080a3){if(_0x5080a3){return db['User']['findAndCountAll']({'where':{'id':_[_0xd90a('0x31')](_0x5080a3,_0xd90a('0x59')),'role':_0xd90a('0x5a')},'attributes':['id',_0xd90a('0x2e'),'smsPause',_0xd90a('0x5b'),_0xd90a('0x5c')]});}})[_0xd90a('0x27')](function(_0x15d524){if(_0x15d524){return{'count':_0x15d524[_0xd90a('0x21')],'rows':_[_0xd90a('0x31')](_0x15d524[_0xd90a('0x5d')],function(_0x36357e){return{'membername':_0x36357e['name'],'UserId':_0x36357e['id'],'queue_name':_0x143f22[_0xd90a('0x2e')],'SmsQueueId':_0x143f22['id'],'interface':util[_0xd90a('0x5e')](_0xd90a('0x5f'),'SIP',_0x36357e[_0xd90a('0x2e')]),'penalty':0x0,'paused':_0x36357e[_0xd90a('0x60')],'createdAt':_0x36357e['createdAt'],'updatedAt':_0x36357e['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0xd90a('0x27')](respondWithFilteredResult(_0x2df9f9,_0x388dea))['catch'](handleError(_0x2df9f9,null));};exports[_0xd90a('0x61')]=function(_0x1301b9,_0x2a2b1c,_0x89328c){var _0x5a59d2={};var _0x314721={};var _0x445f82;var _0x3e6ae2;return db[_0xd90a('0x32')]['findOne']({'where':{'id':_0x1301b9['params']['id']}})[_0xd90a('0x27')](handleEntityNotFound(_0x2a2b1c,null))[_0xd90a('0x27')](function(_0x581be8){if(_0x581be8){_0x445f82=_0x581be8;_0x314721[_0xd90a('0x36')]=_['keys'](db[_0xd90a('0x62')][_0xd90a('0x33')]);_0x314721[_0xd90a('0x37')]=_[_0xd90a('0x38')](_0x1301b9['query']);_0x314721[_0xd90a('0x39')]=_['intersection'](_0x314721['model'],_0x314721[_0xd90a('0x37')]);_0x5a59d2['attributes']=_['intersection'](_0x314721['model'],qs[_0xd90a('0x3a')](_0x1301b9[_0xd90a('0x37')][_0xd90a('0x3a')]));_0x5a59d2[_0xd90a('0x3b')]=_0x5a59d2['attributes'][_0xd90a('0x3c')]?_0x5a59d2[_0xd90a('0x3b')]:_0x314721[_0xd90a('0x36')];_0x5a59d2[_0xd90a('0x56')]=qs[_0xd90a('0x3f')](_0x1301b9[_0xd90a('0x37')][_0xd90a('0x3f')]);_0x5a59d2[_0xd90a('0x40')]=qs[_0xd90a('0x39')](_[_0xd90a('0x57')](_0x1301b9[_0xd90a('0x37')],_0x314721['filters']));if(_0x1301b9['query'][_0xd90a('0x41')]){_0x5a59d2[_0xd90a('0x40')]=_[_0xd90a('0x49')](_0x5a59d2['where'],{'$or':_['map'](_0x5a59d2[_0xd90a('0x3b')],function(_0x407989){var _0x332a05={};_0x332a05[_0x407989]={'$like':'%'+_0x1301b9[_0xd90a('0x37')][_0xd90a('0x41')]+'%'};return _0x332a05;})});}_0x5a59d2=_[_0xd90a('0x49')]({},_0x5a59d2,_0x1301b9[_0xd90a('0x43')]);return _0x445f82['getTeams'](_0x5a59d2);}})[_0xd90a('0x27')](function(_0x5d42d1){if(_0x5d42d1){_0x3e6ae2=_0x5d42d1[_0xd90a('0x3c')];if(!_0x1301b9['query'][_0xd90a('0x3d')]('nolimit')){_0x5a59d2['limit']=qs[_0xd90a('0x23')](_0x1301b9[_0xd90a('0x37')][_0xd90a('0x23')]);_0x5a59d2[_0xd90a('0x22')]=qs[_0xd90a('0x22')](_0x1301b9['query'][_0xd90a('0x22')]);}return _0x445f82[_0xd90a('0x61')](_0x5a59d2);}})[_0xd90a('0x27')](function(_0x45922f){if(_0x45922f){return _0x45922f?{'count':_0x3e6ae2,'rows':_0x45922f}:null;}})[_0xd90a('0x27')](respondWithResult(_0x2a2b1c,null))['catch'](handleError(_0x2a2b1c,null));};exports[_0xd90a('0x63')]=function(_0x45a909,_0x2e5061,_0x3f0479){var _0xf4314c=_0x45a909['body'][_0xd90a('0x64')];return db[_0xd90a('0x62')][_0xd90a('0x45')]({'where':{'id':_0xf4314c},'attributes':['id'],'include':[{'model':db['User'],'as':_0xd90a('0x65'),'attributes':['id',_0xd90a('0x2e'),_0xd90a('0x66'),_0xd90a('0x67'),_0xd90a('0x68')],'raw':!![]}]})['then'](function(_0x46d88a){if(_0x46d88a){var _0x4235fa=_['flatMap'](_0x46d88a,function(_0x4c4624){var _0x28b19d=_0x4c4624[_0xd90a('0x29')]({'plain':!![]});return _0x28b19d['Agents'];});return db[_0xd90a('0x32')]['find']({'where':{'id':_0x45a909[_0xd90a('0x47')]['id']}})[_0xd90a('0x27')](function(_0x5331c0){return db['sequelize']['transaction'](function(_0xf153fb){return _0x5331c0['addTeams'](_0xf4314c,{'transaction':_0xf153fb})[_0xd90a('0x27')](function(){return BPromise['each'](_0x4235fa,function(_0x1760db){return db[_0xd90a('0x69')][_0xd90a('0x6a')]({'where':{'UserId':_0x1760db['id'],'SmsQueueId':_0x45a909[_0xd90a('0x47')]['id']},'transaction':_0xf153fb});});})[_0xd90a('0x27')](function(){_0x4235fa[_0xd90a('0x6b')](function(_0x16a770){socket[_0xd90a('0x6c')]('userSmsQueue:save',{'UserId':_0x16a770['id'],'SmsQueueId':_0x5331c0['id']});});});});});}})['then'](respondWithStatusCode(_0x2e5061,null))['catch'](handleError(_0x2e5061,null));};exports[_0xd90a('0x6d')]=function(_0x5274c2,_0x3468a0,_0x21fcc4){return db['Team'][_0xd90a('0x45')]({'where':{'id':_0x5274c2[_0xd90a('0x37')][_0xd90a('0x64')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0xd90a('0x65'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x3468a0,null))[_0xd90a('0x27')](function(_0x2bb975){var _0x1e2ebb=_[_0xd90a('0x31')](_0x2bb975,'id');var _0x27dcb7=[];var _0x4e34a3=[];var _0xb131be=squel[_0xd90a('0x6e')]();_0xb131be[_0xd90a('0x6f')](_0xd90a('0x70'))[_0xd90a('0x71')](_0xd90a('0x72'),'tq')[_0xd90a('0x73')](_0xd90a('0x74'),'ut',_0xd90a('0x75'))[_0xd90a('0x40')](_0xd90a('0x76'),_0x5274c2[_0xd90a('0x47')]['id']);for(var _0x34452a=0x0;_0x34452a<_0x2bb975[_0xd90a('0x3c')];_0x34452a+=0x1){let _0x31c65e=_0x2bb975[_0x34452a];for(var _0x2bb48c=0x0;_0x2bb48c<_0x31c65e['Agents']['length'];_0x2bb48c+=0x1){let _0x4aff44=_0x31c65e[_0xd90a('0x65')][_0x2bb48c];var _0x260fe3=_0xb131be[_0xd90a('0x77')]();_0x260fe3[_0xd90a('0x40')](_0xd90a('0x78'),_0x4aff44['id']);_0x4e34a3[_0xd90a('0x79')](db['sequelize'][_0xd90a('0x37')](_0x260fe3[_0xd90a('0x7a')](),{'type':db['sequelize']['QueryTypes'][_0xd90a('0x7b')]})[_0xd90a('0x27')](function(_0x559c08){if(_0x559c08[_0xd90a('0x3c')]===0x1){return _0x4aff44['id'];}else{var _0x399164=_[_0xd90a('0x7c')](_[_0xd90a('0x31')](_0x559c08,'TeamId'),function(_0x4a615c){return _[_0xd90a('0x7d')](_0x1e2ebb,_0x4a615c);});if(_0x399164){return _0x4aff44['id'];}}}));}}return BPromise[_0xd90a('0x7e')](_0x4e34a3)['then'](function(_0x1306c3){_0x27dcb7=_(_0x27dcb7)[_0xd90a('0x7f')](_0x1306c3)['compact']()[_0xd90a('0x80')]();return db['SmsQueue']['find']({'where':{'id':_0x5274c2[_0xd90a('0x47')]['id']}})[_0xd90a('0x27')](function(_0x410302){return db[_0xd90a('0x81')][_0xd90a('0x82')](function(_0x5ecce7){return _0x410302[_0xd90a('0x6d')](_0x5274c2[_0xd90a('0x37')][_0xd90a('0x64')],{'transaction':_0x5ecce7})['then'](function(){if(!_[_0xd90a('0x83')](_0x27dcb7)){return _0x410302['removeAgents'](_0x27dcb7,{'transaction':_0x5ecce7});}})[_0xd90a('0x27')](function(){_0x27dcb7['forEach'](function(_0xe9e2c6){socket[_0xd90a('0x6c')](_0xd90a('0x84'),{'UserId':_0xe9e2c6,'SmsQueueId':_0x410302['id']});});});});});});})['then'](respondWithStatusCode(_0x3468a0,null))[_0xd90a('0x4b')](handleError(_0x3468a0,null));};exports[_0xd90a('0x85')]=function(_0x3abc6e,_0x9d709d,_0x38d678){return db[_0xd90a('0x32')][_0xd90a('0x4a')]({'where':{'id':_0x3abc6e['params']['id']}})['then'](handleEntityNotFound(_0x9d709d,null))[_0xd90a('0x27')](function(_0x463ad4){if(_0x463ad4){return _0x463ad4['addAgents'](_0x3abc6e[_0xd90a('0x4d')][_0xd90a('0x64')],_[_0xd90a('0x86')](_0x3abc6e[_0xd90a('0x4d')],[_0xd90a('0x64'),'id'])||{})['spread'](function(_0x479928){for(var _0x2408fb=0x0;_0x2408fb<_0x3abc6e[_0xd90a('0x4d')][_0xd90a('0x64')]['length'];_0x2408fb+=0x1){socket['emit'](_0xd90a('0x87'),{'UserId':Number(_0x3abc6e['body'][_0xd90a('0x64')][_0x2408fb]),'SmsQueueId':Number(_0x3abc6e['params']['id'])});}return _0x479928;});}})[_0xd90a('0x27')](respondWithResult(_0x9d709d,null))[_0xd90a('0x4b')](handleError(_0x9d709d,null));};exports[_0xd90a('0x88')]=function(_0x323acb,_0x5dae73,_0x5e8c0d){return db[_0xd90a('0x32')]['find']({'where':{'id':_0x323acb['params']['id']}})[_0xd90a('0x27')](handleEntityNotFound(_0x5dae73,null))[_0xd90a('0x27')](function(_0x38269b){if(_0x38269b){return _0x38269b[_0xd90a('0x88')](_0x323acb['query'][_0xd90a('0x64')])[_0xd90a('0x27')](function(){if(_[_0xd90a('0x89')](_0x323acb['query'][_0xd90a('0x64')])){for(var _0x179c18=0x0;_0x179c18<_0x323acb[_0xd90a('0x37')][_0xd90a('0x64')]['length'];_0x179c18+=0x1){socket[_0xd90a('0x6c')](_0xd90a('0x84'),{'UserId':Number(_0x323acb[_0xd90a('0x37')]['ids'][_0x179c18]),'SmsQueueId':Number(_0x323acb[_0xd90a('0x47')]['id'])});}}else{socket[_0xd90a('0x6c')](_0xd90a('0x84'),{'UserId':Number(_0x323acb[_0xd90a('0x37')][_0xd90a('0x64')]),'SmsQueueId':Number(_0x323acb[_0xd90a('0x47')]['id'])});}});}})[_0xd90a('0x27')](respondWithStatusCode(_0x5dae73,null))[_0xd90a('0x4b')](handleError(_0x5dae73,null));};exports['getAgents']=function(_0x13873c,_0x1fbbc3,_0x47f265){var _0x492619={};var _0x18ff6c={};var _0x548307;var _0x1a4f24;return db[_0xd90a('0x32')][_0xd90a('0x54')]({'where':{'id':_0x13873c[_0xd90a('0x47')]['id']}})[_0xd90a('0x27')](handleEntityNotFound(_0x1fbbc3,null))['then'](function(_0x45abe1){if(_0x45abe1){_0x548307=_0x45abe1;_0x18ff6c[_0xd90a('0x36')]=_[_0xd90a('0x38')](db[_0xd90a('0x8a')][_0xd90a('0x33')]);_0x18ff6c[_0xd90a('0x37')]=_[_0xd90a('0x38')](_0x13873c[_0xd90a('0x37')]);_0x18ff6c[_0xd90a('0x39')]=_['intersection'](_0x18ff6c[_0xd90a('0x36')],_0x18ff6c[_0xd90a('0x37')]);_0x492619['attributes']=_[_0xd90a('0x55')](_0x18ff6c['model'],qs[_0xd90a('0x3a')](_0x13873c[_0xd90a('0x37')][_0xd90a('0x3a')]));_0x492619[_0xd90a('0x3b')]=_0x492619['attributes'][_0xd90a('0x3c')]?_0x492619[_0xd90a('0x3b')]:_0x18ff6c[_0xd90a('0x36')];_0x492619[_0xd90a('0x56')]=qs[_0xd90a('0x3f')](_0x13873c[_0xd90a('0x37')][_0xd90a('0x3f')]);_0x492619[_0xd90a('0x40')]=qs['filters'](_['pick'](_0x13873c[_0xd90a('0x37')],_0x18ff6c['filters']));if(_0x13873c[_0xd90a('0x37')][_0xd90a('0x41')]){_0x492619[_0xd90a('0x40')]=_[_0xd90a('0x49')](_0x492619[_0xd90a('0x40')],{'$or':_[_0xd90a('0x31')](_0x492619['attributes'],function(_0x4bbff9){var _0x4b3532={};_0x4b3532[_0x4bbff9]={'$like':'%'+_0x13873c[_0xd90a('0x37')][_0xd90a('0x41')]+'%'};return _0x4b3532;})});}_0x492619=_[_0xd90a('0x49')]({},_0x492619,_0x13873c[_0xd90a('0x43')]);return _0x548307[_0xd90a('0x8b')](_0x492619);}})[_0xd90a('0x27')](function(_0x3df395){if(_0x3df395){_0x1a4f24=_0x3df395[_0xd90a('0x3c')];if(!_0x13873c[_0xd90a('0x37')][_0xd90a('0x3d')](_0xd90a('0x3e'))){_0x492619['limit']=qs['limit'](_0x13873c[_0xd90a('0x37')][_0xd90a('0x23')]);_0x492619[_0xd90a('0x22')]=qs[_0xd90a('0x22')](_0x13873c[_0xd90a('0x37')][_0xd90a('0x22')]);}return _0x548307[_0xd90a('0x8b')](_0x492619);}})[_0xd90a('0x27')](function(_0xe19f24){if(_0xe19f24){return _0xe19f24?{'count':_0x1a4f24,'rows':_0xe19f24}:null;}})['then'](respondWithResult(_0x1fbbc3,null))[_0xd90a('0x4b')](handleError(_0x1fbbc3,null));};
\ No newline at end of file
+var _0x6209=['create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','findOne','nolimit','SmsQueueId','options','UserSmsQueue','findAndCountAll','UserId','agent','smsPause','updatedAt','createdAt','rows','SIP','getTeams','Team','pick','addTeams','ids','User','Agents','online','voicePause','interface','sequelize','transaction','each','findOrCreate','forEach','emit','userSmsQueue:save','select','field','tq.TeamId','from','join','ut.TeamId\x20=\x20tq.TeamId','SmsQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','QueryTypes','SELECT','every','TeamId','all','union','value','removeTeams','isEmpty','removeAgents','userSmsQueue:remove','addAgents','omit','spread','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./smsQueue.socket','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','then','destroy','get','SmsQueues','UserProfileResource','stack','name','send','map','type','key','keys','query','intersection','model','attributes','fields','length','hasOwnProperty','order','sort','filters','where','merge','filter','SmsQueue','includeAll','include','findAll','catch','show','rawAttributes','find'];(function(_0x4a1def,_0x20467d){var _0x45754c=function(_0xb2476f){while(--_0xb2476f){_0x4a1def['push'](_0x4a1def['shift']());}};_0x45754c(++_0x20467d);}(_0x6209,0x1e8));var _0x9620=function(_0x6131cd,_0x4c26a1){_0x6131cd=_0x6131cd-0x0;var _0x47e916=_0x6209[_0x6131cd];return _0x47e916;};'use strict';var emlformat=require(_0x9620('0x0'));var rimraf=require(_0x9620('0x1'));var zipdir=require(_0x9620('0x2'));var jsonpatch=require(_0x9620('0x3'));var rp=require(_0x9620('0x4'));var moment=require(_0x9620('0x5'));var BPromise=require(_0x9620('0x6'));var Mustache=require('mustache');var util=require(_0x9620('0x7'));var path=require(_0x9620('0x8'));var sox=require(_0x9620('0x9'));var csv=require('to-csv');var ejs=require(_0x9620('0xa'));var fs=require('fs');var fs_extra=require(_0x9620('0xb'));var _=require(_0x9620('0xc'));var squel=require(_0x9620('0xd'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x9620('0xe'));var toCsv=require('to-csv');var querystring=require(_0x9620('0xf'));var Papa=require(_0x9620('0x10'));var Redis=require(_0x9620('0x11'));var authService=require(_0x9620('0x12'));var qs=require(_0x9620('0x13'));var as=require(_0x9620('0x14'));var hardwareService=require(_0x9620('0x15'));var logger=require('../../config/logger')(_0x9620('0x16'));var utils=require('../../config/utils');var config=require(_0x9620('0x17'));var licenseUtil=require(_0x9620('0x18'));var db=require(_0x9620('0x19'))['db'];config[_0x9620('0x1a')]=_[_0x9620('0x1b')](config[_0x9620('0x1a')],{'host':_0x9620('0x1c'),'port':0x18eb});var socket=require(_0x9620('0x1d'))(new Redis(config[_0x9620('0x1a')]));require(_0x9620('0x1e'))['register'](socket);function respondWithStatusCode(_0x5aba4e,_0x2b144b){_0x2b144b=_0x2b144b||0xcc;return function(_0x301805){if(_0x301805){return _0x5aba4e['sendStatus'](_0x2b144b);}return _0x5aba4e[_0x9620('0x1f')](_0x2b144b)[_0x9620('0x20')]();};}function respondWithResult(_0x34168b,_0x1a75d8){_0x1a75d8=_0x1a75d8||0xc8;return function(_0x4f399c){if(_0x4f399c){return _0x34168b[_0x9620('0x1f')](_0x1a75d8)[_0x9620('0x21')](_0x4f399c);}};}function respondWithFilteredResult(_0x5a9b98,_0x35a181){return function(_0x4b81ea){if(_0x4b81ea){var _0x10a166=typeof _0x35a181[_0x9620('0x22')]===_0x9620('0x23')&&typeof _0x35a181[_0x9620('0x24')]===_0x9620('0x23');var _0x4ab9c2=_0x4b81ea[_0x9620('0x25')];var _0x5738a2=_0x10a166?0x0:_0x35a181['offset'];var _0x4eeba5=_0x10a166?_0x4b81ea['count']:_0x35a181['offset']+_0x35a181[_0x9620('0x24')];var _0x5b62f5;if(_0x4eeba5>=_0x4ab9c2){_0x4eeba5=_0x4ab9c2;_0x5b62f5=0xc8;}else{_0x5b62f5=0xce;}_0x5a9b98[_0x9620('0x1f')](_0x5b62f5);return _0x5a9b98[_0x9620('0x26')](_0x9620('0x27'),_0x5738a2+'-'+_0x4eeba5+'/'+_0x4ab9c2)[_0x9620('0x21')](_0x4b81ea);}return null;};}function patchUpdates(_0x23f937){return function(_0x2d5ff1){try{jsonpatch[_0x9620('0x28')](_0x2d5ff1,_0x23f937,!![]);}catch(_0x4b1957){return BPromise['reject'](_0x4b1957);}return _0x2d5ff1[_0x9620('0x29')]();};}function saveUpdates(_0x2bd6af,_0x50386a){return function(_0xdd3fcb){if(_0xdd3fcb){return _0xdd3fcb[_0x9620('0x2a')](_0x2bd6af)[_0x9620('0x2b')](function(_0x156298){return _0x156298;});}return null;};}function removeEntity(_0x38a6c3,_0x42520d){return function(_0x2edc88){if(_0x2edc88){return _0x2edc88[_0x9620('0x2c')]()[_0x9620('0x2b')](function(){var _0x30c0cf=_0x2edc88[_0x9620('0x2d')]({'plain':!![]});var _0x4907ea=_0x9620('0x2e');return db[_0x9620('0x2f')][_0x9620('0x2c')]({'where':{'type':_0x4907ea,'resourceId':_0x30c0cf['id']}})[_0x9620('0x2b')](function(){return _0x2edc88;});})['then'](function(){_0x38a6c3['status'](0xcc)[_0x9620('0x20')]();});}};}function handleEntityNotFound(_0x581fc3,_0xf2cb11){return function(_0x527d48){if(!_0x527d48){_0x581fc3['sendStatus'](0x194);}return _0x527d48;};}function handleError(_0x2a359f,_0x144319){_0x144319=_0x144319||0x1f4;return function(_0x182417){logger['error'](_0x182417[_0x9620('0x30')]);if(_0x182417[_0x9620('0x31')]){delete _0x182417[_0x9620('0x31')];}_0x2a359f['status'](_0x144319)[_0x9620('0x32')](_0x182417);};}exports['index']=function(_0xb601c5,_0x16c176){var _0x4e5878={},_0x24f072={},_0x448a53={'count':0x0,'rows':[]};var _0x3ad50e=_[_0x9620('0x33')](db['SmsQueue']['rawAttributes'],function(_0x547823){return{'name':_0x547823['fieldName'],'type':_0x547823[_0x9620('0x34')][_0x9620('0x35')]};});_0x24f072['model']=_[_0x9620('0x33')](_0x3ad50e,_0x9620('0x31'));_0x24f072['query']=_[_0x9620('0x36')](_0xb601c5[_0x9620('0x37')]);_0x24f072['filters']=_[_0x9620('0x38')](_0x24f072[_0x9620('0x39')],_0x24f072[_0x9620('0x37')]);_0x4e5878[_0x9620('0x3a')]=_['intersection'](_0x24f072[_0x9620('0x39')],qs['fields'](_0xb601c5[_0x9620('0x37')][_0x9620('0x3b')]));_0x4e5878['attributes']=_0x4e5878['attributes'][_0x9620('0x3c')]?_0x4e5878[_0x9620('0x3a')]:_0x24f072[_0x9620('0x39')];if(!_0xb601c5[_0x9620('0x37')][_0x9620('0x3d')]('nolimit')){_0x4e5878[_0x9620('0x24')]=qs[_0x9620('0x24')](_0xb601c5[_0x9620('0x37')][_0x9620('0x24')]);_0x4e5878[_0x9620('0x22')]=qs['offset'](_0xb601c5[_0x9620('0x37')][_0x9620('0x22')]);}_0x4e5878[_0x9620('0x3e')]=qs['sort'](_0xb601c5[_0x9620('0x37')][_0x9620('0x3f')]);_0x4e5878['where']=qs[_0x9620('0x40')](_['pick'](_0xb601c5[_0x9620('0x37')],_0x24f072[_0x9620('0x40')]),_0x3ad50e);if(_0xb601c5[_0x9620('0x37')]['filter']){_0x4e5878[_0x9620('0x41')]=_[_0x9620('0x42')](_0x4e5878[_0x9620('0x41')],{'$or':_['map'](_0x3ad50e,function(_0x20b422){if(_0x20b422['type']!=='VIRTUAL'){var _0x59c801={};_0x59c801[_0x20b422[_0x9620('0x31')]]={'$like':'%'+_0xb601c5['query'][_0x9620('0x43')]+'%'};return _0x59c801;}})});}_0x4e5878=_['merge']({},_0x4e5878,_0xb601c5['options']);var _0x3a22d7={'where':_0x4e5878[_0x9620('0x41')]};return db[_0x9620('0x44')]['count'](_0x3a22d7)[_0x9620('0x2b')](function(_0x1b2ab0){_0x448a53[_0x9620('0x25')]=_0x1b2ab0;if(_0xb601c5[_0x9620('0x37')][_0x9620('0x45')]){_0x4e5878[_0x9620('0x46')]=[{'all':!![]}];}return db[_0x9620('0x44')][_0x9620('0x47')](_0x4e5878);})[_0x9620('0x2b')](function(_0x137248){_0x448a53['rows']=_0x137248;return _0x448a53;})[_0x9620('0x2b')](respondWithFilteredResult(_0x16c176,_0x4e5878))[_0x9620('0x48')](handleError(_0x16c176,null));};exports[_0x9620('0x49')]=function(_0xe5f762,_0x37604f){var _0x187d67={'raw':!![],'where':{'id':_0xe5f762['params']['id']}},_0x1fca6c={};_0x1fca6c[_0x9620('0x39')]=_['keys'](db[_0x9620('0x44')][_0x9620('0x4a')]);_0x1fca6c[_0x9620('0x37')]=_[_0x9620('0x36')](_0xe5f762['query']);_0x1fca6c['filters']=_['intersection'](_0x1fca6c[_0x9620('0x39')],_0x1fca6c[_0x9620('0x37')]);_0x187d67['attributes']=_[_0x9620('0x38')](_0x1fca6c[_0x9620('0x39')],qs['fields'](_0xe5f762[_0x9620('0x37')][_0x9620('0x3b')]));_0x187d67['attributes']=_0x187d67[_0x9620('0x3a')][_0x9620('0x3c')]?_0x187d67['attributes']:_0x1fca6c[_0x9620('0x39')];if(_0xe5f762['query'][_0x9620('0x45')]){_0x187d67['include']=[{'all':!![]}];}_0x187d67=_[_0x9620('0x42')]({},_0x187d67,_0xe5f762['options']);return db[_0x9620('0x44')][_0x9620('0x4b')](_0x187d67)[_0x9620('0x2b')](handleEntityNotFound(_0x37604f,null))['then'](respondWithResult(_0x37604f,null))[_0x9620('0x48')](handleError(_0x37604f,null));};exports[_0x9620('0x4c')]=function(_0x3086c4,_0x19afd6){return db[_0x9620('0x44')][_0x9620('0x4c')](_0x3086c4[_0x9620('0x4d')],{})[_0x9620('0x2b')](function(_0x46c5aa){var _0x468659=_0x3086c4[_0x9620('0x4e')][_0x9620('0x2d')]({'plain':!![]});if(!_0x468659)throw new Error(_0x9620('0x4f'));if(_0x468659['role']===_0x9620('0x4e')){var _0x4335cd=_0x46c5aa['get']({'plain':!![]});var _0x1cbbd3=_0x9620('0x2e');return db[_0x9620('0x50')][_0x9620('0x4b')]({'where':{'name':_0x1cbbd3,'userProfileId':_0x468659[_0x9620('0x51')]},'raw':!![]})['then'](function(_0x1ee4c1){if(_0x1ee4c1&&_0x1ee4c1[_0x9620('0x52')]===0x0){return db['UserProfileResource'][_0x9620('0x4c')]({'name':_0x4335cd[_0x9620('0x31')],'resourceId':_0x4335cd['id'],'type':_0x1ee4c1[_0x9620('0x31')],'sectionId':_0x1ee4c1['id']},{})[_0x9620('0x2b')](function(){return _0x46c5aa;});}else{return _0x46c5aa;}})[_0x9620('0x48')](function(_0xa51d5a){logger[_0x9620('0x53')](_0x9620('0x54'),_0xa51d5a);throw _0xa51d5a;});}return _0x46c5aa;})['then'](respondWithResult(_0x19afd6,0xc9))[_0x9620('0x48')](handleError(_0x19afd6,null));};exports[_0x9620('0x2a')]=function(_0x564ed2,_0x304c2f){if(_0x564ed2[_0x9620('0x4d')]['id']){delete _0x564ed2[_0x9620('0x4d')]['id'];}return db['SmsQueue'][_0x9620('0x4b')]({'where':{'id':_0x564ed2[_0x9620('0x55')]['id']}})[_0x9620('0x2b')](handleEntityNotFound(_0x304c2f,null))[_0x9620('0x2b')](saveUpdates(_0x564ed2['body'],null))[_0x9620('0x2b')](respondWithResult(_0x304c2f,null))['catch'](handleError(_0x304c2f,null));};exports[_0x9620('0x2c')]=function(_0x273617,_0x5698a6){return db[_0x9620('0x44')]['find']({'where':{'id':_0x273617[_0x9620('0x55')]['id']}})[_0x9620('0x2b')](handleEntityNotFound(_0x5698a6,null))[_0x9620('0x2b')](removeEntity(_0x5698a6,null))[_0x9620('0x48')](handleError(_0x5698a6,null));};exports['describe']=function(_0x280a8b,_0xfa1d79){return db[_0x9620('0x44')]['describe']()[_0x9620('0x2b')](respondWithResult(_0xfa1d79,null))[_0x9620('0x48')](handleError(_0xfa1d79,null));};exports['getMembers']=function(_0xd3907f,_0x4995cb,_0x4af74a){var _0x37dd23={'raw':!![],'where':{}},_0x549966={},_0x4f0715;return db[_0x9620('0x44')][_0x9620('0x56')]({'where':{'id':_0xd3907f[_0x9620('0x55')]['id']}})[_0x9620('0x2b')](handleEntityNotFound(_0x4995cb,null))[_0x9620('0x2b')](function(_0x34082c){if(_0x34082c){_0x4f0715=_0x34082c[_0x9620('0x2d')]({'plain':!![]});_0x549966[_0x9620('0x39')]=_[_0x9620('0x36')](db['UserSmsQueue']['rawAttributes']);_0x549966[_0x9620('0x37')]=_[_0x9620('0x36')](_0xd3907f[_0x9620('0x37')]);_0x549966[_0x9620('0x40')]=_[_0x9620('0x38')](_0x549966[_0x9620('0x39')],_0x549966[_0x9620('0x37')]);_0x37dd23[_0x9620('0x3a')]=_['intersection'](_0x549966['model'],qs[_0x9620('0x3b')](_0xd3907f[_0x9620('0x37')]['fields']));_0x37dd23[_0x9620('0x3a')]=_0x37dd23['attributes']['length']?_0x37dd23['attributes']:_0x549966['model'];if(!_0xd3907f[_0x9620('0x37')][_0x9620('0x3d')](_0x9620('0x57'))){_0x37dd23['limit']=qs['limit'](_0xd3907f[_0x9620('0x37')][_0x9620('0x24')]);_0x37dd23[_0x9620('0x22')]=qs[_0x9620('0x22')](_0xd3907f['query'][_0x9620('0x22')]);}_0x37dd23[_0x9620('0x3e')]=qs[_0x9620('0x3f')](_0xd3907f['query'][_0x9620('0x3f')]);_0x37dd23[_0x9620('0x41')]=qs[_0x9620('0x40')](_['pick'](_0xd3907f[_0x9620('0x37')],_0x549966[_0x9620('0x40')]));_0x37dd23[_0x9620('0x41')][_0x9620('0x58')]=_0x34082c['id'];if(_0xd3907f['query'][_0x9620('0x43')]){_0x37dd23[_0x9620('0x41')]=_['merge'](_0x37dd23['where'],{'$or':_['map'](_0x37dd23[_0x9620('0x3a')],function(_0x41d2f7){var _0x4395ee={};_0x4395ee[_0x41d2f7]={'$like':'%'+_0xd3907f[_0x9620('0x37')][_0x9620('0x43')]+'%'};return _0x4395ee;})});}_0x37dd23=_[_0x9620('0x42')]({},_0x37dd23,_0xd3907f[_0x9620('0x59')]);return db[_0x9620('0x5a')]['findAll'](_0x37dd23);}})[_0x9620('0x2b')](function(_0x40658d){if(_0x40658d){return db['User'][_0x9620('0x5b')]({'where':{'id':_[_0x9620('0x33')](_0x40658d,_0x9620('0x5c')),'role':_0x9620('0x5d')},'attributes':['id',_0x9620('0x31'),_0x9620('0x5e'),_0x9620('0x5f'),_0x9620('0x60')]});}})[_0x9620('0x2b')](function(_0x1d30a3){if(_0x1d30a3){return{'count':_0x1d30a3[_0x9620('0x25')],'rows':_['map'](_0x1d30a3[_0x9620('0x61')],function(_0x2b039f){return{'membername':_0x2b039f[_0x9620('0x31')],'UserId':_0x2b039f['id'],'queue_name':_0x4f0715['name'],'SmsQueueId':_0x4f0715['id'],'interface':util['format']('%s/%s',_0x9620('0x62'),_0x2b039f['name']),'penalty':0x0,'paused':_0x2b039f[_0x9620('0x5e')],'createdAt':_0x2b039f[_0x9620('0x60')],'updatedAt':_0x2b039f['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x9620('0x2b')](respondWithFilteredResult(_0x4995cb,_0x37dd23))[_0x9620('0x48')](handleError(_0x4995cb,null));};exports[_0x9620('0x63')]=function(_0x1ebbf6,_0x3666a5,_0x50fbe0){var _0x3c0b3e={};var _0x389b8e={};var _0x14f46a;var _0x339d19;return db[_0x9620('0x44')][_0x9620('0x56')]({'where':{'id':_0x1ebbf6[_0x9620('0x55')]['id']}})['then'](handleEntityNotFound(_0x3666a5,null))[_0x9620('0x2b')](function(_0x5977c0){if(_0x5977c0){_0x14f46a=_0x5977c0;_0x389b8e['model']=_[_0x9620('0x36')](db[_0x9620('0x64')][_0x9620('0x4a')]);_0x389b8e[_0x9620('0x37')]=_[_0x9620('0x36')](_0x1ebbf6[_0x9620('0x37')]);_0x389b8e['filters']=_[_0x9620('0x38')](_0x389b8e[_0x9620('0x39')],_0x389b8e[_0x9620('0x37')]);_0x3c0b3e['attributes']=_[_0x9620('0x38')](_0x389b8e[_0x9620('0x39')],qs[_0x9620('0x3b')](_0x1ebbf6[_0x9620('0x37')][_0x9620('0x3b')]));_0x3c0b3e[_0x9620('0x3a')]=_0x3c0b3e[_0x9620('0x3a')][_0x9620('0x3c')]?_0x3c0b3e[_0x9620('0x3a')]:_0x389b8e[_0x9620('0x39')];_0x3c0b3e[_0x9620('0x3e')]=qs[_0x9620('0x3f')](_0x1ebbf6['query'][_0x9620('0x3f')]);_0x3c0b3e[_0x9620('0x41')]=qs[_0x9620('0x40')](_[_0x9620('0x65')](_0x1ebbf6['query'],_0x389b8e[_0x9620('0x40')]));if(_0x1ebbf6[_0x9620('0x37')][_0x9620('0x43')]){_0x3c0b3e[_0x9620('0x41')]=_[_0x9620('0x42')](_0x3c0b3e['where'],{'$or':_[_0x9620('0x33')](_0x3c0b3e['attributes'],function(_0x57f6d4){var _0xd90bfa={};_0xd90bfa[_0x57f6d4]={'$like':'%'+_0x1ebbf6['query'][_0x9620('0x43')]+'%'};return _0xd90bfa;})});}_0x3c0b3e=_[_0x9620('0x42')]({},_0x3c0b3e,_0x1ebbf6[_0x9620('0x59')]);return _0x14f46a[_0x9620('0x63')](_0x3c0b3e);}})['then'](function(_0x3ae6e8){if(_0x3ae6e8){_0x339d19=_0x3ae6e8[_0x9620('0x3c')];if(!_0x1ebbf6[_0x9620('0x37')]['hasOwnProperty']('nolimit')){_0x3c0b3e[_0x9620('0x24')]=qs[_0x9620('0x24')](_0x1ebbf6['query'][_0x9620('0x24')]);_0x3c0b3e[_0x9620('0x22')]=qs[_0x9620('0x22')](_0x1ebbf6['query'][_0x9620('0x22')]);}return _0x14f46a[_0x9620('0x63')](_0x3c0b3e);}})[_0x9620('0x2b')](function(_0x555efc){if(_0x555efc){return _0x555efc?{'count':_0x339d19,'rows':_0x555efc}:null;}})['then'](respondWithResult(_0x3666a5,null))[_0x9620('0x48')](handleError(_0x3666a5,null));};exports[_0x9620('0x66')]=function(_0x1fd4d8,_0xe56e89,_0x1d598a){var _0x490705=_0x1fd4d8[_0x9620('0x4d')][_0x9620('0x67')];return db[_0x9620('0x64')]['findAll']({'where':{'id':_0x490705},'attributes':['id'],'include':[{'model':db[_0x9620('0x68')],'as':_0x9620('0x69'),'attributes':['id',_0x9620('0x31'),_0x9620('0x6a'),_0x9620('0x6b'),_0x9620('0x6c')],'raw':!![]}]})[_0x9620('0x2b')](function(_0x3f6c13){if(_0x3f6c13){var _0x56c8ee=_['flatMap'](_0x3f6c13,function(_0x546932){var _0x41ee10=_0x546932[_0x9620('0x2d')]({'plain':!![]});return _0x41ee10[_0x9620('0x69')];});return db['SmsQueue'][_0x9620('0x4b')]({'where':{'id':_0x1fd4d8[_0x9620('0x55')]['id']}})['then'](function(_0x1c0f2f){return db[_0x9620('0x6d')][_0x9620('0x6e')](function(_0x119a95){return _0x1c0f2f[_0x9620('0x66')](_0x490705,{'transaction':_0x119a95})[_0x9620('0x2b')](function(){return BPromise[_0x9620('0x6f')](_0x56c8ee,function(_0x489a1c){return db[_0x9620('0x5a')][_0x9620('0x70')]({'where':{'UserId':_0x489a1c['id'],'SmsQueueId':_0x1fd4d8['params']['id']},'transaction':_0x119a95});});})[_0x9620('0x2b')](function(){_0x56c8ee[_0x9620('0x71')](function(_0x21b7da){socket[_0x9620('0x72')](_0x9620('0x73'),{'UserId':_0x21b7da['id'],'SmsQueueId':_0x1c0f2f['id']});});});});});}})[_0x9620('0x2b')](respondWithStatusCode(_0xe56e89,null))[_0x9620('0x48')](handleError(_0xe56e89,null));};exports['removeTeams']=function(_0x3ec100,_0xc05aea,_0x111c9f){return db[_0x9620('0x64')][_0x9620('0x47')]({'where':{'id':_0x3ec100[_0x9620('0x37')][_0x9620('0x67')]},'attributes':['id'],'include':[{'model':db[_0x9620('0x68')],'as':_0x9620('0x69'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0xc05aea,null))['then'](function(_0x4f198b){var _0x466ae5=_[_0x9620('0x33')](_0x4f198b,'id');var _0x5ac865=[];var _0x4b3549=[];var _0xb0f64=squel[_0x9620('0x74')]();_0xb0f64[_0x9620('0x75')](_0x9620('0x76'))[_0x9620('0x77')]('team_has_sms_queues','tq')[_0x9620('0x78')]('user_has_teams','ut',_0x9620('0x79'))['where'](_0x9620('0x7a'),_0x3ec100[_0x9620('0x55')]['id']);for(var _0x3199d4=0x0;_0x3199d4<_0x4f198b['length'];_0x3199d4+=0x1){let _0x43d8e9=_0x4f198b[_0x3199d4];for(var _0xa661ee=0x0;_0xa661ee<_0x43d8e9[_0x9620('0x69')][_0x9620('0x3c')];_0xa661ee+=0x1){let _0x5199ee=_0x43d8e9[_0x9620('0x69')][_0xa661ee];var _0xf29de6=_0xb0f64['clone']();_0xf29de6['where'](_0x9620('0x7b'),_0x5199ee['id']);_0x4b3549[_0x9620('0x7c')](db[_0x9620('0x6d')][_0x9620('0x37')](_0xf29de6['toString'](),{'type':db[_0x9620('0x6d')][_0x9620('0x7d')][_0x9620('0x7e')]})[_0x9620('0x2b')](function(_0x24bd2a){if(_0x24bd2a[_0x9620('0x3c')]===0x1){return _0x5199ee['id'];}else{var _0x575a5e=_[_0x9620('0x7f')](_[_0x9620('0x33')](_0x24bd2a,_0x9620('0x80')),function(_0xf42113){return _['includes'](_0x466ae5,_0xf42113);});if(_0x575a5e){return _0x5199ee['id'];}}}));}}return BPromise[_0x9620('0x81')](_0x4b3549)[_0x9620('0x2b')](function(_0x40219f){_0x5ac865=_(_0x5ac865)[_0x9620('0x82')](_0x40219f)['compact']()[_0x9620('0x83')]();return db[_0x9620('0x44')][_0x9620('0x4b')]({'where':{'id':_0x3ec100[_0x9620('0x55')]['id']}})['then'](function(_0x71a2c9){return db['sequelize'][_0x9620('0x6e')](function(_0x264414){return _0x71a2c9[_0x9620('0x84')](_0x3ec100[_0x9620('0x37')][_0x9620('0x67')],{'transaction':_0x264414})[_0x9620('0x2b')](function(){if(!_[_0x9620('0x85')](_0x5ac865)){return _0x71a2c9[_0x9620('0x86')](_0x5ac865,{'transaction':_0x264414});}})['then'](function(){_0x5ac865[_0x9620('0x71')](function(_0x1c1fa2){socket['emit'](_0x9620('0x87'),{'UserId':_0x1c1fa2,'SmsQueueId':_0x71a2c9['id']});});});});});});})[_0x9620('0x2b')](respondWithStatusCode(_0xc05aea,null))['catch'](handleError(_0xc05aea,null));};exports[_0x9620('0x88')]=function(_0x37e349,_0x1219c3,_0x2bc2fc){return db[_0x9620('0x44')][_0x9620('0x4b')]({'where':{'id':_0x37e349[_0x9620('0x55')]['id']}})[_0x9620('0x2b')](handleEntityNotFound(_0x1219c3,null))[_0x9620('0x2b')](function(_0x1e98cc){if(_0x1e98cc){return _0x1e98cc[_0x9620('0x88')](_0x37e349[_0x9620('0x4d')][_0x9620('0x67')],_[_0x9620('0x89')](_0x37e349[_0x9620('0x4d')],[_0x9620('0x67'),'id'])||{})[_0x9620('0x8a')](function(_0x2e55db){for(var _0x5b8323=0x0;_0x5b8323<_0x37e349['body'][_0x9620('0x67')]['length'];_0x5b8323+=0x1){socket['emit'](_0x9620('0x73'),{'UserId':Number(_0x37e349[_0x9620('0x4d')][_0x9620('0x67')][_0x5b8323]),'SmsQueueId':Number(_0x37e349[_0x9620('0x55')]['id'])});}return _0x2e55db;});}})[_0x9620('0x2b')](respondWithResult(_0x1219c3,null))[_0x9620('0x48')](handleError(_0x1219c3,null));};exports[_0x9620('0x86')]=function(_0x4e3e24,_0x59eef2,_0x1c09cb){return db[_0x9620('0x44')][_0x9620('0x4b')]({'where':{'id':_0x4e3e24[_0x9620('0x55')]['id']}})[_0x9620('0x2b')](handleEntityNotFound(_0x59eef2,null))[_0x9620('0x2b')](function(_0x47b402){if(_0x47b402){return _0x47b402['removeAgents'](_0x4e3e24[_0x9620('0x37')][_0x9620('0x67')])[_0x9620('0x2b')](function(){if(_[_0x9620('0x8b')](_0x4e3e24[_0x9620('0x37')][_0x9620('0x67')])){for(var _0x3af3c4=0x0;_0x3af3c4<_0x4e3e24['query'][_0x9620('0x67')][_0x9620('0x3c')];_0x3af3c4+=0x1){socket['emit'](_0x9620('0x87'),{'UserId':Number(_0x4e3e24[_0x9620('0x37')][_0x9620('0x67')][_0x3af3c4]),'SmsQueueId':Number(_0x4e3e24[_0x9620('0x55')]['id'])});}}else{socket['emit'](_0x9620('0x87'),{'UserId':Number(_0x4e3e24[_0x9620('0x37')][_0x9620('0x67')]),'SmsQueueId':Number(_0x4e3e24[_0x9620('0x55')]['id'])});}});}})[_0x9620('0x2b')](respondWithStatusCode(_0x59eef2,null))[_0x9620('0x48')](handleError(_0x59eef2,null));};exports['getAgents']=function(_0x3d3921,_0x35d209,_0x3d8828){var _0x56d864={};var _0x105c27={};var _0x42485a;var _0x53b6be;return db[_0x9620('0x44')][_0x9620('0x56')]({'where':{'id':_0x3d3921[_0x9620('0x55')]['id']}})[_0x9620('0x2b')](handleEntityNotFound(_0x35d209,null))[_0x9620('0x2b')](function(_0x15192c){if(_0x15192c){_0x42485a=_0x15192c;_0x105c27[_0x9620('0x39')]=_[_0x9620('0x36')](db[_0x9620('0x68')][_0x9620('0x4a')]);_0x105c27[_0x9620('0x37')]=_['keys'](_0x3d3921[_0x9620('0x37')]);_0x105c27[_0x9620('0x40')]=_[_0x9620('0x38')](_0x105c27[_0x9620('0x39')],_0x105c27[_0x9620('0x37')]);_0x56d864['attributes']=_[_0x9620('0x38')](_0x105c27[_0x9620('0x39')],qs[_0x9620('0x3b')](_0x3d3921[_0x9620('0x37')][_0x9620('0x3b')]));_0x56d864[_0x9620('0x3a')]=_0x56d864['attributes'][_0x9620('0x3c')]?_0x56d864['attributes']:_0x105c27[_0x9620('0x39')];_0x56d864[_0x9620('0x3e')]=qs[_0x9620('0x3f')](_0x3d3921['query']['sort']);_0x56d864[_0x9620('0x41')]=qs[_0x9620('0x40')](_['pick'](_0x3d3921[_0x9620('0x37')],_0x105c27[_0x9620('0x40')]));if(_0x3d3921[_0x9620('0x37')][_0x9620('0x43')]){_0x56d864[_0x9620('0x41')]=_[_0x9620('0x42')](_0x56d864[_0x9620('0x41')],{'$or':_[_0x9620('0x33')](_0x56d864[_0x9620('0x3a')],function(_0x13dea7){var _0x1aed3d={};_0x1aed3d[_0x13dea7]={'$like':'%'+_0x3d3921['query'][_0x9620('0x43')]+'%'};return _0x1aed3d;})});}_0x56d864=_[_0x9620('0x42')]({},_0x56d864,_0x3d3921['options']);return _0x42485a[_0x9620('0x8c')](_0x56d864);}})[_0x9620('0x2b')](function(_0x576d65){if(_0x576d65){_0x53b6be=_0x576d65['length'];if(!_0x3d3921['query'][_0x9620('0x3d')](_0x9620('0x57'))){_0x56d864[_0x9620('0x24')]=qs['limit'](_0x3d3921[_0x9620('0x37')][_0x9620('0x24')]);_0x56d864[_0x9620('0x22')]=qs['offset'](_0x3d3921[_0x9620('0x37')][_0x9620('0x22')]);}return _0x42485a[_0x9620('0x8c')](_0x56d864);}})[_0x9620('0x2b')](function(_0x4057b1){if(_0x4057b1){return _0x4057b1?{'count':_0x53b6be,'rows':_0x4057b1}:null;}})[_0x9620('0x2b')](respondWithResult(_0x35d209,null))['catch'](handleError(_0x35d209,null));};
\ No newline at end of file
index 478e443..9d4cf76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f0a=['hasOwnProperty','hook','events','SmsQueue','setMaxListeners','save','update','remove','emit'];(function(_0x2a5b3b,_0x4ebe31){var _0xae665a=function(_0x59e86a){while(--_0x59e86a){_0x2a5b3b['push'](_0x2a5b3b['shift']());}};_0xae665a(++_0x4ebe31);}(_0x9f0a,0x1e8));var _0xa9f0=function(_0x34fef5,_0x4a3249){_0x34fef5=_0x34fef5-0x0;var _0x1a40eb=_0x9f0a[_0x34fef5];return _0x1a40eb;};'use strict';var EventEmitter=require(_0xa9f0('0x0'));var SmsQueue=require('../../mysqldb')['db'][_0xa9f0('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents[_0xa9f0('0x2')](0x0);var events={'afterCreate':_0xa9f0('0x3'),'afterUpdate':_0xa9f0('0x4'),'afterDestroy':_0xa9f0('0x5')};function emitEvent(_0x88ad43){return function(_0x273eb0,_0x4d53e5,_0x1b0fc2){SmsQueueEvents[_0xa9f0('0x6')](_0x88ad43+':'+_0x273eb0['id'],_0x273eb0);SmsQueueEvents[_0xa9f0('0x6')](_0x88ad43,_0x273eb0);_0x1b0fc2(null);};}for(var e in events){if(events[_0xa9f0('0x7')](e)){var event=events[e];SmsQueue[_0xa9f0('0x8')](e,emitEvent(event));}}module['exports']=SmsQueueEvents;
\ No newline at end of file
+var _0xa6a7=['emit','hasOwnProperty','exports','../../mysqldb','SmsQueue','save','remove'];(function(_0x114aff,_0x7f60da){var _0x5ade5e=function(_0x103487){while(--_0x103487){_0x114aff['push'](_0x114aff['shift']());}};_0x5ade5e(++_0x7f60da);}(_0xa6a7,0x8f));var _0x7a6a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xa6a7[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require('events');var SmsQueue=require(_0x7a6a('0x0'))['db'][_0x7a6a('0x1')];var SmsQueueEvents=new EventEmitter();SmsQueueEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x7a6a('0x2'),'afterUpdate':'update','afterDestroy':_0x7a6a('0x3')};function emitEvent(_0x6ea6e6){return function(_0x4631d7,_0x18fb16,_0x3af41a){SmsQueueEvents[_0x7a6a('0x4')](_0x6ea6e6+':'+_0x4631d7['id'],_0x4631d7);SmsQueueEvents['emit'](_0x6ea6e6,_0x4631d7);_0x3af41a(null);};}for(var e in events){if(events[_0x7a6a('0x5')](e)){var event=events[e];SmsQueue['hook'](e,emitEvent(event));}}module[_0x7a6a('0x6')]=SmsQueueEvents;
\ No newline at end of file
index f811428..02ba4b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4614=['path','rimraf','./smsQueue.attributes','define','sms_queues','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x31c15,_0x404b23){var _0x49cd40=function(_0xaaa93c){while(--_0xaaa93c){_0x31c15['push'](_0x31c15['shift']());}};_0x49cd40(++_0x404b23);}(_0x4614,0x1b2));var _0x4461=function(_0x1cf111,_0x964e0a){_0x1cf111=_0x1cf111-0x0;var _0x5b27ae=_0x4614[_0x1cf111];return _0x5b27ae;};'use strict';var _=require(_0x4461('0x0'));var util=require(_0x4461('0x1'));var logger=require(_0x4461('0x2'))(_0x4461('0x3'));var moment=require(_0x4461('0x4'));var BPromise=require('bluebird');var rp=require(_0x4461('0x5'));var fs=require('fs');var path=require(_0x4461('0x6'));var rimraf=require(_0x4461('0x7'));var config=require('../../config/environment');var attributes=require(_0x4461('0x8'));module['exports']=function(_0x1604e9,_0x310f0e){return _0x1604e9[_0x4461('0x9')]('SmsQueue',attributes,{'tableName':_0x4461('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6cf5=['SmsQueue','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./smsQueue.attributes','define'];(function(_0x2bdd74,_0x399043){var _0x5ce961=function(_0x4a8ba7){while(--_0x4a8ba7){_0x2bdd74['push'](_0x2bdd74['shift']());}};_0x5ce961(++_0x399043);}(_0x6cf5,0x1cf));var _0x56cf=function(_0x3b541f,_0x3e17ad){_0x3b541f=_0x3b541f-0x0;var _0x508723=_0x6cf5[_0x3b541f];return _0x508723;};'use strict';var _=require(_0x56cf('0x0'));var util=require(_0x56cf('0x1'));var logger=require(_0x56cf('0x2'))(_0x56cf('0x3'));var moment=require('moment');var BPromise=require(_0x56cf('0x4'));var rp=require(_0x56cf('0x5'));var fs=require('fs');var path=require(_0x56cf('0x6'));var rimraf=require(_0x56cf('0x7'));var config=require('../../config/environment');var attributes=require(_0x56cf('0x8'));module['exports']=function(_0x39a43b,_0x595f77){return _0x39a43b[_0x56cf('0x9')](_0x56cf('0xa'),attributes,{'tableName':'sms_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index a0ed762..db88674 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3076=['find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','info','SmsQueue,\x20%s,\x20%s','request\x20sent','debug','SmsQueue,\x20%s,\x20%s,\x20%s','error','code','message','result','GetSmsQueue','SmsQueue','findAll','options','raw','where','limit','include','map','attributes','model','then','stringify','catch','ShowSmsQueue'];(function(_0x588791,_0x35a42e){var _0x28937a=function(_0x8ca701){while(--_0x8ca701){_0x588791['push'](_0x588791['shift']());}};_0x28937a(++_0x35a42e);}(_0x3076,0x7c));var _0x6307=function(_0x1f3856,_0x3fd43c){_0x1f3856=_0x1f3856-0x0;var _0x47f964=_0x3076[_0x1f3856];return _0x47f964;};'use strict';var _=require(_0x6307('0x0'));var util=require(_0x6307('0x1'));var moment=require(_0x6307('0x2'));var BPromise=require(_0x6307('0x3'));var rs=require(_0x6307('0x4'));var fs=require('fs');var Redis=require(_0x6307('0x5'));var db=require(_0x6307('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x6307('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6307('0x8'));var client=jayson[_0x6307('0x9')][_0x6307('0xa')]({'port':0x232a});config[_0x6307('0xb')]=_[_0x6307('0xc')](config[_0x6307('0xb')],{'host':_0x6307('0xd'),'port':0x18eb});var socket=require(_0x6307('0xe'))(new Redis(config['redis']));require('./smsQueue.socket')[_0x6307('0xf')](socket);function respondWithRpcPromise(_0x4b40b5,_0x2a2107,_0x405ca6){return new BPromise(function(_0x11acf1,_0x9e2949){return client['request'](_0x4b40b5,_0x405ca6)['then'](function(_0x4cd58e){logger[_0x6307('0x10')](_0x6307('0x11'),_0x2a2107,_0x6307('0x12'));logger[_0x6307('0x13')](_0x6307('0x14'),_0x2a2107,'request\x20sent',JSON['stringify'](_0x4cd58e));if(_0x4cd58e[_0x6307('0x15')]){if(_0x4cd58e['error'][_0x6307('0x16')]===0x1f4){logger[_0x6307('0x15')](_0x6307('0x11'),_0x2a2107,_0x4cd58e[_0x6307('0x15')][_0x6307('0x17')]);return _0x9e2949(_0x4cd58e['error'][_0x6307('0x17')]);}logger['error'](_0x6307('0x11'),_0x2a2107,_0x4cd58e[_0x6307('0x15')][_0x6307('0x17')]);return _0x11acf1(_0x4cd58e[_0x6307('0x15')][_0x6307('0x17')]);}else{logger[_0x6307('0x10')](_0x6307('0x11'),_0x2a2107,_0x6307('0x12'));_0x11acf1(_0x4cd58e[_0x6307('0x18')][_0x6307('0x17')]);}})['catch'](function(_0x106207){logger[_0x6307('0x15')]('SmsQueue,\x20%s,\x20%s',_0x2a2107,_0x106207);_0x9e2949(_0x106207);});});}exports[_0x6307('0x19')]=function(_0x1424a9){var _0x5d7734=this;return new Promise(function(_0x1a82b1,_0x4cb9ff){return db[_0x6307('0x1a')][_0x6307('0x1b')]({'raw':_0x1424a9['options']?_0x1424a9[_0x6307('0x1c')][_0x6307('0x1d')]===undefined?!![]:![]:!![],'where':_0x1424a9['options']?_0x1424a9[_0x6307('0x1c')][_0x6307('0x1e')]||null:null,'attributes':_0x1424a9[_0x6307('0x1c')]?_0x1424a9['options']['attributes']||null:null,'limit':_0x1424a9[_0x6307('0x1c')]?_0x1424a9[_0x6307('0x1c')][_0x6307('0x1f')]||null:null,'include':_0x1424a9[_0x6307('0x1c')]?_0x1424a9[_0x6307('0x1c')][_0x6307('0x20')]?_[_0x6307('0x21')](_0x1424a9[_0x6307('0x1c')]['include'],function(_0x3957d9){return{'model':db[_0x3957d9['model']],'as':_0x3957d9['as'],'attributes':_0x3957d9[_0x6307('0x22')],'include':_0x3957d9['include']?_[_0x6307('0x21')](_0x3957d9['include'],function(_0x36e1ef){return{'model':db[_0x36e1ef[_0x6307('0x23')]],'as':_0x36e1ef['as'],'attributes':_0x36e1ef[_0x6307('0x22')],'include':_0x36e1ef['include']?_[_0x6307('0x21')](_0x36e1ef[_0x6307('0x20')],function(_0x333bd4){return{'model':db[_0x333bd4[_0x6307('0x23')]],'as':_0x333bd4['as'],'attributes':_0x333bd4[_0x6307('0x22')]};}):[]};}):[]};}):[]:[]})[_0x6307('0x24')](function(_0x439f13){logger['info'](_0x6307('0x19'),_0x1424a9);logger['debug'](_0x6307('0x19'),_0x1424a9,JSON[_0x6307('0x25')](_0x439f13));_0x1a82b1(_0x439f13);})[_0x6307('0x26')](function(_0x463fb8){logger[_0x6307('0x15')](_0x6307('0x19'),_0x463fb8['message'],_0x1424a9);_0x4cb9ff(_0x5d7734[_0x6307('0x15')](0x1f4,_0x463fb8[_0x6307('0x17')]));});});};exports[_0x6307('0x27')]=function(_0x57ddf5){var _0x5546d7=this;return new Promise(function(_0x4dff56,_0x17866f){return db[_0x6307('0x1a')][_0x6307('0x28')]({'raw':_0x57ddf5[_0x6307('0x1c')]?_0x57ddf5[_0x6307('0x1c')][_0x6307('0x1d')]===undefined?!![]:![]:!![],'where':_0x57ddf5[_0x6307('0x1c')]?_0x57ddf5[_0x6307('0x1c')][_0x6307('0x1e')]||null:null,'attributes':_0x57ddf5[_0x6307('0x1c')]?_0x57ddf5['options']['attributes']||null:null,'include':_0x57ddf5[_0x6307('0x1c')]?_0x57ddf5[_0x6307('0x1c')][_0x6307('0x20')]?_[_0x6307('0x21')](_0x57ddf5[_0x6307('0x1c')]['include'],function(_0x308da7){return{'model':db[_0x308da7['model']],'as':_0x308da7['as'],'attributes':_0x308da7[_0x6307('0x22')],'include':_0x308da7[_0x6307('0x20')]?_['map'](_0x308da7[_0x6307('0x20')],function(_0x225a49){return{'model':db[_0x225a49['model']],'as':_0x225a49['as'],'attributes':_0x225a49[_0x6307('0x22')],'include':_0x225a49[_0x6307('0x20')]?_['map'](_0x225a49['include'],function(_0xbf054d){return{'model':db[_0xbf054d[_0x6307('0x23')]],'as':_0xbf054d['as'],'attributes':_0xbf054d['attributes']};}):[]};}):[]};}):[]:[]})[_0x6307('0x24')](function(_0x478365){logger[_0x6307('0x10')]('ShowSmsQueue',_0x57ddf5);logger[_0x6307('0x13')](_0x6307('0x27'),_0x57ddf5,JSON['stringify'](_0x478365));_0x4dff56(_0x478365);})[_0x6307('0x26')](function(_0x2295cf){logger['error'](_0x6307('0x27'),_0x2295cf[_0x6307('0x17')],_0x57ddf5);_0x17866f(_0x5546d7[_0x6307('0x15')](0x1f4,_0x2295cf[_0x6307('0x17')]));});});};
\ No newline at end of file
+var _0x7653=['bluebird','randomstring','../../config/utils','../../config/logger','jayson/promise','client','http','redis','defaults','localhost','./smsQueue.socket','then','info','SmsQueue,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','SmsQueue','options','raw','limit','include','map','attributes','model','GetSmsQueue','debug','ShowSmsQueue','where','lodash','moment'];(function(_0x33929f,_0x139567){var _0x299f88=function(_0x10ca1a){while(--_0x10ca1a){_0x33929f['push'](_0x33929f['shift']());}};_0x299f88(++_0x139567);}(_0x7653,0x64));var _0x3765=function(_0x3355,_0x9b2e0f){_0x3355=_0x3355-0x0;var _0x3fcab2=_0x7653[_0x3355];return _0x3fcab2;};'use strict';var _=require(_0x3765('0x0'));var util=require('util');var moment=require(_0x3765('0x1'));var BPromise=require(_0x3765('0x2'));var rs=require(_0x3765('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x3765('0x4'));var logger=require(_0x3765('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0x3765('0x6'));var client=jayson[_0x3765('0x7')][_0x3765('0x8')]({'port':0x232a});config[_0x3765('0x9')]=_[_0x3765('0xa')](config[_0x3765('0x9')],{'host':_0x3765('0xb'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x3765('0x9')]));require(_0x3765('0xc'))['register'](socket);function respondWithRpcPromise(_0x543048,_0xa71f78,_0x411648){return new BPromise(function(_0x1383d7,_0x31e915){return client['request'](_0x543048,_0x411648)[_0x3765('0xd')](function(_0x1486d1){logger[_0x3765('0xe')](_0x3765('0xf'),_0xa71f78,_0x3765('0x10'));logger['debug']('SmsQueue,\x20%s,\x20%s,\x20%s',_0xa71f78,_0x3765('0x10'),JSON[_0x3765('0x11')](_0x1486d1));if(_0x1486d1[_0x3765('0x12')]){if(_0x1486d1['error'][_0x3765('0x13')]===0x1f4){logger[_0x3765('0x12')]('SmsQueue,\x20%s,\x20%s',_0xa71f78,_0x1486d1[_0x3765('0x12')][_0x3765('0x14')]);return _0x31e915(_0x1486d1[_0x3765('0x12')][_0x3765('0x14')]);}logger[_0x3765('0x12')](_0x3765('0xf'),_0xa71f78,_0x1486d1[_0x3765('0x12')][_0x3765('0x14')]);return _0x1383d7(_0x1486d1[_0x3765('0x12')]['message']);}else{logger[_0x3765('0xe')]('SmsQueue,\x20%s,\x20%s',_0xa71f78,_0x3765('0x10'));_0x1383d7(_0x1486d1['result'][_0x3765('0x14')]);}})[_0x3765('0x15')](function(_0x2552cf){logger[_0x3765('0x12')](_0x3765('0xf'),_0xa71f78,_0x2552cf);_0x31e915(_0x2552cf);});});}exports['GetSmsQueue']=function(_0x350e9f){var _0xd1cca9=this;return new Promise(function(_0x2e9e1c,_0x23c67b){return db[_0x3765('0x16')]['findAll']({'raw':_0x350e9f[_0x3765('0x17')]?_0x350e9f[_0x3765('0x17')][_0x3765('0x18')]===undefined?!![]:![]:!![],'where':_0x350e9f[_0x3765('0x17')]?_0x350e9f[_0x3765('0x17')]['where']||null:null,'attributes':_0x350e9f[_0x3765('0x17')]?_0x350e9f[_0x3765('0x17')]['attributes']||null:null,'limit':_0x350e9f['options']?_0x350e9f['options'][_0x3765('0x19')]||null:null,'include':_0x350e9f['options']?_0x350e9f[_0x3765('0x17')][_0x3765('0x1a')]?_[_0x3765('0x1b')](_0x350e9f[_0x3765('0x17')][_0x3765('0x1a')],function(_0x35c401){return{'model':db[_0x35c401['model']],'as':_0x35c401['as'],'attributes':_0x35c401[_0x3765('0x1c')],'include':_0x35c401[_0x3765('0x1a')]?_['map'](_0x35c401[_0x3765('0x1a')],function(_0xcc3375){return{'model':db[_0xcc3375[_0x3765('0x1d')]],'as':_0xcc3375['as'],'attributes':_0xcc3375['attributes'],'include':_0xcc3375[_0x3765('0x1a')]?_[_0x3765('0x1b')](_0xcc3375[_0x3765('0x1a')],function(_0x21b378){return{'model':db[_0x21b378['model']],'as':_0x21b378['as'],'attributes':_0x21b378[_0x3765('0x1c')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x2e08fc){logger[_0x3765('0xe')](_0x3765('0x1e'),_0x350e9f);logger[_0x3765('0x1f')](_0x3765('0x1e'),_0x350e9f,JSON[_0x3765('0x11')](_0x2e08fc));_0x2e9e1c(_0x2e08fc);})[_0x3765('0x15')](function(_0x52b222){logger[_0x3765('0x12')](_0x3765('0x1e'),_0x52b222[_0x3765('0x14')],_0x350e9f);_0x23c67b(_0xd1cca9['error'](0x1f4,_0x52b222[_0x3765('0x14')]));});});};exports[_0x3765('0x20')]=function(_0x7f40e4){var _0x43f79f=this;return new Promise(function(_0x102a94,_0x1db412){return db[_0x3765('0x16')]['find']({'raw':_0x7f40e4[_0x3765('0x17')]?_0x7f40e4[_0x3765('0x17')][_0x3765('0x18')]===undefined?!![]:![]:!![],'where':_0x7f40e4[_0x3765('0x17')]?_0x7f40e4[_0x3765('0x17')][_0x3765('0x21')]||null:null,'attributes':_0x7f40e4[_0x3765('0x17')]?_0x7f40e4[_0x3765('0x17')][_0x3765('0x1c')]||null:null,'include':_0x7f40e4[_0x3765('0x17')]?_0x7f40e4[_0x3765('0x17')]['include']?_[_0x3765('0x1b')](_0x7f40e4['options']['include'],function(_0xd69f07){return{'model':db[_0xd69f07['model']],'as':_0xd69f07['as'],'attributes':_0xd69f07[_0x3765('0x1c')],'include':_0xd69f07[_0x3765('0x1a')]?_[_0x3765('0x1b')](_0xd69f07['include'],function(_0x289805){return{'model':db[_0x289805[_0x3765('0x1d')]],'as':_0x289805['as'],'attributes':_0x289805[_0x3765('0x1c')],'include':_0x289805[_0x3765('0x1a')]?_[_0x3765('0x1b')](_0x289805[_0x3765('0x1a')],function(_0xbaaaee){return{'model':db[_0xbaaaee[_0x3765('0x1d')]],'as':_0xbaaaee['as'],'attributes':_0xbaaaee[_0x3765('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x3765('0xd')](function(_0x516458){logger[_0x3765('0xe')]('ShowSmsQueue',_0x7f40e4);logger[_0x3765('0x1f')]('ShowSmsQueue',_0x7f40e4,JSON[_0x3765('0x11')](_0x516458));_0x102a94(_0x516458);})[_0x3765('0x15')](function(_0x37dea0){logger[_0x3765('0x12')](_0x3765('0x20'),_0x37dea0[_0x3765('0x14')],_0x7f40e4);_0x1db412(_0x43f79f['error'](0x1f4,_0x37dea0[_0x3765('0x14')]));});});};
\ No newline at end of file
index 52e5509..530c2ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3ba=['removeListener'];(function(_0x36ac5a,_0xfd829b){var _0x445540=function(_0x3a61a9){while(--_0x3a61a9){_0x36ac5a['push'](_0x36ac5a['shift']());}};_0x445540(++_0xfd829b);}(_0xf3ba,0x10b));var _0xaf3b=function(_0x10df18,_0x13338c){_0x10df18=_0x10df18-0x0;var _0x1f9a1d=_0xf3ba[_0x10df18];return _0x1f9a1d;};'use strict';var SmsQueueEvents=require('./smsQueue.events');var events=['save','remove','update'];function createListener(_0x4bc7b7,_0x56c025){return function(_0x21f633){_0x56c025['emit'](_0x4bc7b7,_0x21f633);};}function removeListener(_0x350032,_0x3aa40f){return function(){SmsQueueEvents[_0xaf3b('0x0')](_0x350032,_0x3aa40f);};}exports['register']=function(_0x210175){for(var _0x386df2=0x0,_0x434527=events['length'];_0x386df2<_0x434527;_0x386df2++){var _0x2575ce=events[_0x386df2];var _0x40534d=createListener('smsQueue:'+_0x2575ce,_0x210175);SmsQueueEvents['on'](_0x2575ce,_0x40534d);}};
\ No newline at end of file
+var _0xa3f5=['./smsQueue.events','save','remove','update','emit','register','length'];(function(_0x25efc8,_0x3443e0){var _0x52e34d=function(_0xd5679b){while(--_0xd5679b){_0x25efc8['push'](_0x25efc8['shift']());}};_0x52e34d(++_0x3443e0);}(_0xa3f5,0xbd));var _0x5a3f=function(_0x596d89,_0x3f9156){_0x596d89=_0x596d89-0x0;var _0x571fd5=_0xa3f5[_0x596d89];return _0x571fd5;};'use strict';var SmsQueueEvents=require(_0x5a3f('0x0'));var events=[_0x5a3f('0x1'),_0x5a3f('0x2'),_0x5a3f('0x3')];function createListener(_0x162be2,_0x4d2562){return function(_0x536e0e){_0x4d2562[_0x5a3f('0x4')](_0x162be2,_0x536e0e);};}function removeListener(_0x1de987,_0x1cc145){return function(){SmsQueueEvents['removeListener'](_0x1de987,_0x1cc145);};}exports[_0x5a3f('0x5')]=function(_0x3e2866){for(var _0x1376f5=0x0,_0x275d93=events[_0x5a3f('0x6')];_0x1376f5<_0x275d93;_0x1376f5++){var _0x1b7a79=events[_0x1376f5];var _0xbd2057=createListener('smsQueue:'+_0x1b7a79,_0x3e2866);SmsQueueEvents['on'](_0x1b7a79,_0xbd2057);}};
\ No newline at end of file
index 66f7892..6017518 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd9f4=['../../config/environment','./smsQueueReport.controller','get','index','isAuthenticated','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service'];(function(_0x12713c,_0xf9ec2){var _0x9d314e=function(_0x1bde41){while(--_0x1bde41){_0x12713c['push'](_0x12713c['shift']());}};_0x9d314e(++_0xf9ec2);}(_0xd9f4,0x172));var _0x4d9f=function(_0x725a4c,_0x102507){_0x725a4c=_0x725a4c-0x0;var _0x37b2cc=_0xd9f4[_0x725a4c];return _0x37b2cc;};'use strict';var multer=require(_0x4d9f('0x0'));var util=require(_0x4d9f('0x1'));var path=require(_0x4d9f('0x2'));var timeout=require(_0x4d9f('0x3'));var express=require(_0x4d9f('0x4'));var router=express['Router']();var fs_extra=require(_0x4d9f('0x5'));var auth=require(_0x4d9f('0x6'));var interaction=require(_0x4d9f('0x7'));var config=require(_0x4d9f('0x8'));var controller=require(_0x4d9f('0x9'));router[_0x4d9f('0xa')]('/',auth['isAuthenticated'](),controller[_0x4d9f('0xb')]);router[_0x4d9f('0xa')]('/describe',auth[_0x4d9f('0xc')](),controller['describe']);router[_0x4d9f('0xa')]('/:id',auth[_0x4d9f('0xc')](),controller[_0x4d9f('0xd')]);router[_0x4d9f('0xe')]('/',auth[_0x4d9f('0xc')](),controller[_0x4d9f('0xf')]);router[_0x4d9f('0x10')]('/:id',auth[_0x4d9f('0xc')](),controller[_0x4d9f('0x11')]);router[_0x4d9f('0x12')]('/:id',auth['isAuthenticated'](),controller[_0x4d9f('0x13')]);module[_0x4d9f('0x14')]=router;
\ No newline at end of file
+var _0xdc3c=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsQueueReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','put','update','delete','destroy','exports','multer','connect-timeout','express'];(function(_0x1e20c9,_0x5a2ebf){var _0x4dc403=function(_0x1f4ce9){while(--_0x1f4ce9){_0x1e20c9['push'](_0x1e20c9['shift']());}};_0x4dc403(++_0x5a2ebf);}(_0xdc3c,0x147));var _0xcdc3=function(_0x647697,_0x19c2fa){_0x647697=_0x647697-0x0;var _0x38521f=_0xdc3c[_0x647697];return _0x38521f;};'use strict';var multer=require(_0xcdc3('0x0'));var util=require('util');var path=require('path');var timeout=require(_0xcdc3('0x1'));var express=require(_0xcdc3('0x2'));var router=express[_0xcdc3('0x3')]();var fs_extra=require(_0xcdc3('0x4'));var auth=require(_0xcdc3('0x5'));var interaction=require(_0xcdc3('0x6'));var config=require(_0xcdc3('0x7'));var controller=require(_0xcdc3('0x8'));router[_0xcdc3('0x9')]('/',auth[_0xcdc3('0xa')](),controller[_0xcdc3('0xb')]);router['get'](_0xcdc3('0xc'),auth[_0xcdc3('0xa')](),controller[_0xcdc3('0xd')]);router[_0xcdc3('0x9')](_0xcdc3('0xe'),auth[_0xcdc3('0xa')](),controller[_0xcdc3('0xf')]);router[_0xcdc3('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0xcdc3('0x11')](_0xcdc3('0xe'),auth[_0xcdc3('0xa')](),controller[_0xcdc3('0x12')]);router[_0xcdc3('0x13')]('/:id',auth['isAuthenticated'](),controller[_0xcdc3('0x14')]);module[_0xcdc3('0x15')]=router;
\ No newline at end of file
index 1c0bc71..41bec21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2433=['sequelize','exports','STRING','DATE','moment'];(function(_0x5d40e0,_0x748782){var _0x296613=function(_0x3aa4df){while(--_0x3aa4df){_0x5d40e0['push'](_0x5d40e0['shift']());}};_0x296613(++_0x748782);}(_0x2433,0xe5));var _0x3243=function(_0x48f9fb,_0x23326a){_0x48f9fb=_0x48f9fb-0x0;var _0x1a96be=_0x2433[_0x48f9fb];return _0x1a96be;};'use strict';var moment=require(_0x3243('0x0'));var Sequelize=require(_0x3243('0x1'));module[_0x3243('0x2')]={'uniqueid':{'type':Sequelize[_0x3243('0x3')],'allowNull':![]},'from':{'type':Sequelize[_0x3243('0x3')]},'joinAt':{'type':Sequelize[_0x3243('0x4')]},'leaveAt':{'type':Sequelize['DATE']},'acceptAt':{'type':Sequelize[_0x3243('0x4')]},'exitAt':{'type':Sequelize['DATE']},'reason':{'type':Sequelize[_0x3243('0x3')]}};
\ No newline at end of file
+var _0xbd0c=['STRING','DATE'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xbd0c,0xd0));var _0xcbd0=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0xbd0c[_0x5ddb1c];return _0x354adc;};'use strict';var moment=require('moment');var Sequelize=require('sequelize');module['exports']={'uniqueid':{'type':Sequelize[_0xcbd0('0x0')],'allowNull':![]},'from':{'type':Sequelize[_0xcbd0('0x0')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0xcbd0('0x1')]},'acceptAt':{'type':Sequelize[_0xcbd0('0x1')]},'exitAt':{'type':Sequelize[_0xcbd0('0x1')]},'reason':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 77c8006..9654da2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa55c=['order','sort','where','filter','VIRTUAL','options','SmsQueueReport','includeAll','include','rows','show','params','find','catch','create','update','body','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','offset','limit','undefined','count','set','Content-Range','json','then','destroy','end','sendStatus','error','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','fields','attributes','length','nolimit'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa55c,0xa7));var _0xca55=function(_0x4177a4,_0x4aefc5){_0x4177a4=_0x4177a4-0x0;var _0x324487=_0xa55c[_0x4177a4];return _0x324487;};'use strict';var emlformat=require(_0xca55('0x0'));var rimraf=require(_0xca55('0x1'));var zipdir=require(_0xca55('0x2'));var jsonpatch=require(_0xca55('0x3'));var rp=require(_0xca55('0x4'));var moment=require(_0xca55('0x5'));var BPromise=require(_0xca55('0x6'));var Mustache=require('mustache');var util=require(_0xca55('0x7'));var path=require(_0xca55('0x8'));var sox=require('sox');var csv=require(_0xca55('0x9'));var ejs=require(_0xca55('0xa'));var fs=require('fs');var fs_extra=require(_0xca55('0xb'));var _=require(_0xca55('0xc'));var squel=require(_0xca55('0xd'));var crypto=require(_0xca55('0xe'));var jsforce=require(_0xca55('0xf'));var deskjs=require(_0xca55('0x10'));var toCsv=require(_0xca55('0x9'));var querystring=require('querystring');var Papa=require(_0xca55('0x11'));var Redis=require(_0xca55('0x12'));var authService=require(_0xca55('0x13'));var qs=require(_0xca55('0x14'));var as=require(_0xca55('0x15'));var hardwareService=require(_0xca55('0x16'));var logger=require(_0xca55('0x17'))(_0xca55('0x18'));var utils=require(_0xca55('0x19'));var config=require(_0xca55('0x1a'));var licenseUtil=require(_0xca55('0x1b'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1e4c45,_0x5e6c50){_0x5e6c50=_0x5e6c50||0xcc;return function(_0x2ca2b1){if(_0x2ca2b1){return _0x1e4c45['sendStatus'](_0x5e6c50);}return _0x1e4c45[_0xca55('0x1c')](_0x5e6c50)['end']();};}function respondWithResult(_0x5276b1,_0x47a90a){_0x47a90a=_0x47a90a||0xc8;return function(_0x4289be){if(_0x4289be){return _0x5276b1[_0xca55('0x1c')](_0x47a90a)['json'](_0x4289be);}};}function respondWithFilteredResult(_0x170569,_0x57f51e){return function(_0x10fdda){if(_0x10fdda){var _0x1ce142=typeof _0x57f51e[_0xca55('0x1d')]==='undefined'&&typeof _0x57f51e[_0xca55('0x1e')]===_0xca55('0x1f');var _0x33425b=_0x10fdda['count'];var _0x303bac=_0x1ce142?0x0:_0x57f51e['offset'];var _0x2908a0=_0x1ce142?_0x10fdda[_0xca55('0x20')]:_0x57f51e[_0xca55('0x1d')]+_0x57f51e[_0xca55('0x1e')];var _0x351758;if(_0x2908a0>=_0x33425b){_0x2908a0=_0x33425b;_0x351758=0xc8;}else{_0x351758=0xce;}_0x170569['status'](_0x351758);return _0x170569[_0xca55('0x21')](_0xca55('0x22'),_0x303bac+'-'+_0x2908a0+'/'+_0x33425b)[_0xca55('0x23')](_0x10fdda);}return null;};}function patchUpdates(_0x33dbd2){return function(_0x13c628){try{jsonpatch['apply'](_0x13c628,_0x33dbd2,!![]);}catch(_0x4ca939){return BPromise['reject'](_0x4ca939);}return _0x13c628['save']();};}function saveUpdates(_0x256d43,_0x5157d2){return function(_0xac4155){if(_0xac4155){return _0xac4155['update'](_0x256d43)[_0xca55('0x24')](function(_0x157a33){return _0x157a33;});}return null;};}function removeEntity(_0x26ad4d,_0x25570a){return function(_0x161f0d){if(_0x161f0d){return _0x161f0d[_0xca55('0x25')]()['then'](function(){_0x26ad4d[_0xca55('0x1c')](0xcc)[_0xca55('0x26')]();});}};}function handleEntityNotFound(_0x14643d,_0x52f819){return function(_0x420db1){if(!_0x420db1){_0x14643d[_0xca55('0x27')](0x194);}return _0x420db1;};}function handleError(_0x36901c,_0x41f92d){_0x41f92d=_0x41f92d||0x1f4;return function(_0x28036c){logger[_0xca55('0x28')](_0x28036c[_0xca55('0x29')]);if(_0x28036c[_0xca55('0x2a')]){delete _0x28036c[_0xca55('0x2a')];}_0x36901c[_0xca55('0x1c')](_0x41f92d)[_0xca55('0x2b')](_0x28036c);};}exports[_0xca55('0x2c')]=function(_0x4ad163,_0x432830){var _0x179f8f={},_0x5b7e3e={},_0x2f2134={'count':0x0,'rows':[]};var _0x3bf0f8=_[_0xca55('0x2d')](db['SmsQueueReport'][_0xca55('0x2e')],function(_0x2ab25f){return{'name':_0x2ab25f[_0xca55('0x2f')],'type':_0x2ab25f[_0xca55('0x30')]['key']};});_0x5b7e3e[_0xca55('0x31')]=_[_0xca55('0x2d')](_0x3bf0f8,_0xca55('0x2a'));_0x5b7e3e[_0xca55('0x32')]=_[_0xca55('0x33')](_0x4ad163['query']);_0x5b7e3e[_0xca55('0x34')]=_[_0xca55('0x35')](_0x5b7e3e[_0xca55('0x31')],_0x5b7e3e[_0xca55('0x32')]);_0x179f8f['attributes']=_['intersection'](_0x5b7e3e[_0xca55('0x31')],qs[_0xca55('0x36')](_0x4ad163[_0xca55('0x32')]['fields']));_0x179f8f[_0xca55('0x37')]=_0x179f8f[_0xca55('0x37')][_0xca55('0x38')]?_0x179f8f[_0xca55('0x37')]:_0x5b7e3e['model'];if(!_0x4ad163[_0xca55('0x32')]['hasOwnProperty'](_0xca55('0x39'))){_0x179f8f[_0xca55('0x1e')]=qs['limit'](_0x4ad163['query'][_0xca55('0x1e')]);_0x179f8f[_0xca55('0x1d')]=qs[_0xca55('0x1d')](_0x4ad163[_0xca55('0x32')][_0xca55('0x1d')]);}_0x179f8f[_0xca55('0x3a')]=qs[_0xca55('0x3b')](_0x4ad163[_0xca55('0x32')]['sort']);_0x179f8f[_0xca55('0x3c')]=qs[_0xca55('0x34')](_['pick'](_0x4ad163[_0xca55('0x32')],_0x5b7e3e[_0xca55('0x34')]),_0x3bf0f8);if(_0x4ad163[_0xca55('0x32')][_0xca55('0x3d')]){_0x179f8f[_0xca55('0x3c')]=_['merge'](_0x179f8f[_0xca55('0x3c')],{'$or':_[_0xca55('0x2d')](_0x3bf0f8,function(_0x34dc9c){if(_0x34dc9c[_0xca55('0x30')]!==_0xca55('0x3e')){var _0x3b55c4={};_0x3b55c4[_0x34dc9c[_0xca55('0x2a')]]={'$like':'%'+_0x4ad163['query']['filter']+'%'};return _0x3b55c4;}})});}_0x179f8f=_['merge']({},_0x179f8f,_0x4ad163[_0xca55('0x3f')]);var _0x5dc767={'where':_0x179f8f[_0xca55('0x3c')]};return db[_0xca55('0x40')][_0xca55('0x20')](_0x5dc767)['then'](function(_0x4d9bc5){_0x2f2134[_0xca55('0x20')]=_0x4d9bc5;if(_0x4ad163['query'][_0xca55('0x41')]){_0x179f8f[_0xca55('0x42')]=[{'all':!![]}];}return db['SmsQueueReport']['findAll'](_0x179f8f);})[_0xca55('0x24')](function(_0x4c5008){_0x2f2134[_0xca55('0x43')]=_0x4c5008;return _0x2f2134;})['then'](respondWithFilteredResult(_0x432830,_0x179f8f))['catch'](handleError(_0x432830,null));};exports[_0xca55('0x44')]=function(_0x444b9d,_0x115ec2){var _0x326996={'raw':!![],'where':{'id':_0x444b9d[_0xca55('0x45')]['id']}},_0x4afa96={};_0x4afa96[_0xca55('0x31')]=_['keys'](db[_0xca55('0x40')][_0xca55('0x2e')]);_0x4afa96[_0xca55('0x32')]=_['keys'](_0x444b9d[_0xca55('0x32')]);_0x4afa96[_0xca55('0x34')]=_['intersection'](_0x4afa96['model'],_0x4afa96[_0xca55('0x32')]);_0x326996[_0xca55('0x37')]=_['intersection'](_0x4afa96['model'],qs[_0xca55('0x36')](_0x444b9d['query'][_0xca55('0x36')]));_0x326996[_0xca55('0x37')]=_0x326996[_0xca55('0x37')][_0xca55('0x38')]?_0x326996[_0xca55('0x37')]:_0x4afa96[_0xca55('0x31')];if(_0x444b9d[_0xca55('0x32')][_0xca55('0x41')]){_0x326996[_0xca55('0x42')]=[{'all':!![]}];}_0x326996=_['merge']({},_0x326996,_0x444b9d[_0xca55('0x3f')]);return db[_0xca55('0x40')][_0xca55('0x46')](_0x326996)[_0xca55('0x24')](handleEntityNotFound(_0x115ec2,null))[_0xca55('0x24')](respondWithResult(_0x115ec2,null))[_0xca55('0x47')](handleError(_0x115ec2,null));};exports[_0xca55('0x48')]=function(_0x3a4236,_0xe327a6){return db[_0xca55('0x40')][_0xca55('0x48')](_0x3a4236['body'],{})['then'](respondWithResult(_0xe327a6,0xc9))[_0xca55('0x47')](handleError(_0xe327a6,null));};exports[_0xca55('0x49')]=function(_0x3ff87e,_0x44d79d){if(_0x3ff87e['body']['id']){delete _0x3ff87e[_0xca55('0x4a')]['id'];}return db[_0xca55('0x40')][_0xca55('0x46')]({'where':{'id':_0x3ff87e[_0xca55('0x45')]['id']}})[_0xca55('0x24')](handleEntityNotFound(_0x44d79d,null))[_0xca55('0x24')](saveUpdates(_0x3ff87e[_0xca55('0x4a')],null))['then'](respondWithResult(_0x44d79d,null))[_0xca55('0x47')](handleError(_0x44d79d,null));};exports[_0xca55('0x25')]=function(_0x2af045,_0x31550d){return db[_0xca55('0x40')]['find']({'where':{'id':_0x2af045[_0xca55('0x45')]['id']}})[_0xca55('0x24')](handleEntityNotFound(_0x31550d,null))[_0xca55('0x24')](removeEntity(_0x31550d,null))[_0xca55('0x47')](handleError(_0x31550d,null));};exports['describe']=function(_0x1e409f,_0x5a06fb){return db[_0xca55('0x40')]['describe']()[_0xca55('0x24')](respondWithResult(_0x5a06fb,null))[_0xca55('0x47')](handleError(_0x5a06fb,null));};
\ No newline at end of file
+var _0xf0ee=['order','sort','where','pick','merge','includeAll','include','findAll','rows','catch','keys','length','find','create','body','params','describe','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','sendStatus','status','end','offset','count','limit','set','json','apply','save','update','destroy','then','stack','name','index','map','SmsQueueReport','rawAttributes','fieldName','type','key','model','query','filters','intersection','fields','attributes','nolimit'];(function(_0x2cbf04,_0x4b8a6d){var _0xef8e42=function(_0xd9147c){while(--_0xd9147c){_0x2cbf04['push'](_0x2cbf04['shift']());}};_0xef8e42(++_0x4b8a6d);}(_0xf0ee,0x129));var _0xef0e=function(_0x227249,_0x7c8363){_0x227249=_0x227249-0x0;var _0x50337d=_0xf0ee[_0x227249];return _0x50337d;};'use strict';var emlformat=require(_0xef0e('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xef0e('0x1'));var jsonpatch=require(_0xef0e('0x2'));var rp=require(_0xef0e('0x3'));var moment=require(_0xef0e('0x4'));var BPromise=require(_0xef0e('0x5'));var Mustache=require('mustache');var util=require(_0xef0e('0x6'));var path=require(_0xef0e('0x7'));var sox=require(_0xef0e('0x8'));var csv=require(_0xef0e('0x9'));var ejs=require(_0xef0e('0xa'));var fs=require('fs');var fs_extra=require(_0xef0e('0xb'));var _=require(_0xef0e('0xc'));var squel=require(_0xef0e('0xd'));var crypto=require(_0xef0e('0xe'));var jsforce=require(_0xef0e('0xf'));var deskjs=require(_0xef0e('0x10'));var toCsv=require(_0xef0e('0x9'));var querystring=require(_0xef0e('0x11'));var Papa=require('papaparse');var Redis=require(_0xef0e('0x12'));var authService=require(_0xef0e('0x13'));var qs=require('../../components/parsers/qs');var as=require(_0xef0e('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xef0e('0x15'));var utils=require(_0xef0e('0x16'));var config=require(_0xef0e('0x17'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x5ef098,_0x13db48){_0x13db48=_0x13db48||0xcc;return function(_0x145cb4){if(_0x145cb4){return _0x5ef098[_0xef0e('0x18')](_0x13db48);}return _0x5ef098[_0xef0e('0x19')](_0x13db48)[_0xef0e('0x1a')]();};}function respondWithResult(_0x2d56d7,_0x1cc270){_0x1cc270=_0x1cc270||0xc8;return function(_0x46c2f5){if(_0x46c2f5){return _0x2d56d7[_0xef0e('0x19')](_0x1cc270)['json'](_0x46c2f5);}};}function respondWithFilteredResult(_0x498f34,_0x35ddab){return function(_0xc90845){if(_0xc90845){var _0x103da4=typeof _0x35ddab[_0xef0e('0x1b')]==='undefined'&&typeof _0x35ddab['limit']==='undefined';var _0x45da6c=_0xc90845['count'];var _0x44fc26=_0x103da4?0x0:_0x35ddab[_0xef0e('0x1b')];var _0x2c8f1f=_0x103da4?_0xc90845[_0xef0e('0x1c')]:_0x35ddab['offset']+_0x35ddab[_0xef0e('0x1d')];var _0x2afe3d;if(_0x2c8f1f>=_0x45da6c){_0x2c8f1f=_0x45da6c;_0x2afe3d=0xc8;}else{_0x2afe3d=0xce;}_0x498f34[_0xef0e('0x19')](_0x2afe3d);return _0x498f34[_0xef0e('0x1e')]('Content-Range',_0x44fc26+'-'+_0x2c8f1f+'/'+_0x45da6c)[_0xef0e('0x1f')](_0xc90845);}return null;};}function patchUpdates(_0x37a671){return function(_0x24b8c4){try{jsonpatch[_0xef0e('0x20')](_0x24b8c4,_0x37a671,!![]);}catch(_0x433a0d){return BPromise['reject'](_0x433a0d);}return _0x24b8c4[_0xef0e('0x21')]();};}function saveUpdates(_0x287d4d,_0x116bbe){return function(_0x13da2c){if(_0x13da2c){return _0x13da2c[_0xef0e('0x22')](_0x287d4d)['then'](function(_0x48ee90){return _0x48ee90;});}return null;};}function removeEntity(_0x654d14,_0x4fdc18){return function(_0x5bc8f2){if(_0x5bc8f2){return _0x5bc8f2[_0xef0e('0x23')]()[_0xef0e('0x24')](function(){_0x654d14['status'](0xcc)[_0xef0e('0x1a')]();});}};}function handleEntityNotFound(_0x444fdb,_0x55f38e){return function(_0x230e78){if(!_0x230e78){_0x444fdb[_0xef0e('0x18')](0x194);}return _0x230e78;};}function handleError(_0x1cff80,_0x28eaee){_0x28eaee=_0x28eaee||0x1f4;return function(_0x399d56){logger['error'](_0x399d56[_0xef0e('0x25')]);if(_0x399d56[_0xef0e('0x26')]){delete _0x399d56[_0xef0e('0x26')];}_0x1cff80[_0xef0e('0x19')](_0x28eaee)['send'](_0x399d56);};}exports[_0xef0e('0x27')]=function(_0x270ba1,_0x338087){var _0x111353={},_0x3298dd={},_0x4d11e0={'count':0x0,'rows':[]};var _0x4d4c89=_[_0xef0e('0x28')](db[_0xef0e('0x29')][_0xef0e('0x2a')],function(_0x5045dc){return{'name':_0x5045dc[_0xef0e('0x2b')],'type':_0x5045dc[_0xef0e('0x2c')][_0xef0e('0x2d')]};});_0x3298dd[_0xef0e('0x2e')]=_[_0xef0e('0x28')](_0x4d4c89,_0xef0e('0x26'));_0x3298dd[_0xef0e('0x2f')]=_['keys'](_0x270ba1[_0xef0e('0x2f')]);_0x3298dd[_0xef0e('0x30')]=_[_0xef0e('0x31')](_0x3298dd[_0xef0e('0x2e')],_0x3298dd[_0xef0e('0x2f')]);_0x111353['attributes']=_[_0xef0e('0x31')](_0x3298dd[_0xef0e('0x2e')],qs[_0xef0e('0x32')](_0x270ba1[_0xef0e('0x2f')][_0xef0e('0x32')]));_0x111353[_0xef0e('0x33')]=_0x111353[_0xef0e('0x33')]['length']?_0x111353[_0xef0e('0x33')]:_0x3298dd[_0xef0e('0x2e')];if(!_0x270ba1[_0xef0e('0x2f')]['hasOwnProperty'](_0xef0e('0x34'))){_0x111353[_0xef0e('0x1d')]=qs['limit'](_0x270ba1[_0xef0e('0x2f')]['limit']);_0x111353['offset']=qs[_0xef0e('0x1b')](_0x270ba1[_0xef0e('0x2f')][_0xef0e('0x1b')]);}_0x111353[_0xef0e('0x35')]=qs[_0xef0e('0x36')](_0x270ba1[_0xef0e('0x2f')]['sort']);_0x111353[_0xef0e('0x37')]=qs[_0xef0e('0x30')](_[_0xef0e('0x38')](_0x270ba1[_0xef0e('0x2f')],_0x3298dd['filters']),_0x4d4c89);if(_0x270ba1['query']['filter']){_0x111353[_0xef0e('0x37')]=_['merge'](_0x111353[_0xef0e('0x37')],{'$or':_[_0xef0e('0x28')](_0x4d4c89,function(_0x4bc9d5){if(_0x4bc9d5[_0xef0e('0x2c')]!=='VIRTUAL'){var _0x33f5c8={};_0x33f5c8[_0x4bc9d5['name']]={'$like':'%'+_0x270ba1['query']['filter']+'%'};return _0x33f5c8;}})});}_0x111353=_[_0xef0e('0x39')]({},_0x111353,_0x270ba1['options']);var _0x59f329={'where':_0x111353[_0xef0e('0x37')]};return db[_0xef0e('0x29')][_0xef0e('0x1c')](_0x59f329)[_0xef0e('0x24')](function(_0x16dcf6){_0x4d11e0[_0xef0e('0x1c')]=_0x16dcf6;if(_0x270ba1[_0xef0e('0x2f')][_0xef0e('0x3a')]){_0x111353[_0xef0e('0x3b')]=[{'all':!![]}];}return db['SmsQueueReport'][_0xef0e('0x3c')](_0x111353);})[_0xef0e('0x24')](function(_0xe69dae){_0x4d11e0[_0xef0e('0x3d')]=_0xe69dae;return _0x4d11e0;})[_0xef0e('0x24')](respondWithFilteredResult(_0x338087,_0x111353))[_0xef0e('0x3e')](handleError(_0x338087,null));};exports['show']=function(_0x427b9b,_0x288ebb){var _0x3cf6b8={'raw':!![],'where':{'id':_0x427b9b['params']['id']}},_0x323730={};_0x323730['model']=_[_0xef0e('0x3f')](db[_0xef0e('0x29')][_0xef0e('0x2a')]);_0x323730[_0xef0e('0x2f')]=_['keys'](_0x427b9b['query']);_0x323730['filters']=_['intersection'](_0x323730['model'],_0x323730[_0xef0e('0x2f')]);_0x3cf6b8[_0xef0e('0x33')]=_[_0xef0e('0x31')](_0x323730[_0xef0e('0x2e')],qs['fields'](_0x427b9b[_0xef0e('0x2f')]['fields']));_0x3cf6b8['attributes']=_0x3cf6b8['attributes'][_0xef0e('0x40')]?_0x3cf6b8[_0xef0e('0x33')]:_0x323730[_0xef0e('0x2e')];if(_0x427b9b[_0xef0e('0x2f')][_0xef0e('0x3a')]){_0x3cf6b8[_0xef0e('0x3b')]=[{'all':!![]}];}_0x3cf6b8=_[_0xef0e('0x39')]({},_0x3cf6b8,_0x427b9b['options']);return db['SmsQueueReport'][_0xef0e('0x41')](_0x3cf6b8)[_0xef0e('0x24')](handleEntityNotFound(_0x288ebb,null))[_0xef0e('0x24')](respondWithResult(_0x288ebb,null))[_0xef0e('0x3e')](handleError(_0x288ebb,null));};exports[_0xef0e('0x42')]=function(_0x3f6af7,_0x4b57f7){return db['SmsQueueReport'][_0xef0e('0x42')](_0x3f6af7['body'],{})[_0xef0e('0x24')](respondWithResult(_0x4b57f7,0xc9))[_0xef0e('0x3e')](handleError(_0x4b57f7,null));};exports[_0xef0e('0x22')]=function(_0x3aebb5,_0x13f69e){if(_0x3aebb5[_0xef0e('0x43')]['id']){delete _0x3aebb5[_0xef0e('0x43')]['id'];}return db[_0xef0e('0x29')]['find']({'where':{'id':_0x3aebb5['params']['id']}})[_0xef0e('0x24')](handleEntityNotFound(_0x13f69e,null))['then'](saveUpdates(_0x3aebb5[_0xef0e('0x43')],null))['then'](respondWithResult(_0x13f69e,null))['catch'](handleError(_0x13f69e,null));};exports['destroy']=function(_0x37b209,_0x26587d){return db[_0xef0e('0x29')][_0xef0e('0x41')]({'where':{'id':_0x37b209[_0xef0e('0x44')]['id']}})[_0xef0e('0x24')](handleEntityNotFound(_0x26587d,null))['then'](removeEntity(_0x26587d,null))[_0xef0e('0x3e')](handleError(_0x26587d,null));};exports[_0xef0e('0x45')]=function(_0x173fcb,_0x781257){return db[_0xef0e('0x29')][_0xef0e('0x45')]()[_0xef0e('0x24')](respondWithResult(_0x781257,null))[_0xef0e('0x3e')](handleError(_0x781257,null));};
\ No newline at end of file
index 4821f03..ca119a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','define','SmsQueueReport','uniqueid','lodash'];(function(_0x2ffef9,_0x1dfb4a){var _0x427391=function(_0x26f27f){while(--_0x26f27f){_0x2ffef9['push'](_0x2ffef9['shift']());}};_0x427391(++_0x1dfb4a);}(_0xb7e7,0x121));var _0x7b7e=function(_0x9fd887,_0x47f76c){_0x9fd887=_0x9fd887-0x0;var _0x1a54ab=_0xb7e7[_0x9fd887];return _0x1a54ab;};'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
+var _0xb7e7=['../../config/logger','moment','request-promise','rimraf','../../config/environment','./smsQueueReport.attributes','define','SmsQueueReport','uniqueid','lodash'];(function(_0x3ee234,_0xb78d69){var _0x530fd2=function(_0x19c391){while(--_0x19c391){_0x3ee234['push'](_0x3ee234['shift']());}};_0x530fd2(++_0xb78d69);}(_0xb7e7,0x121));var _0x7b7e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xb7e7[_0x49ca18];return _0x145d54;};'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 ae67808..f58b6c5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7adb=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','then','info','SmsQueueReport,\x20%s,\x20%s','request\x20sent','debug','SmsQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateSmsQueueReport','SmsQueueReport','body','options','raw','catch','UpdateSmsQueueReport','update','attributes','limit','lodash','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x16ae7f,_0x51df03){var _0x24a380=function(_0x49283b){while(--_0x49283b){_0x16ae7f['push'](_0x16ae7f['shift']());}};_0x24a380(++_0x51df03);}(_0x7adb,0x19b));var _0xb7ad=function(_0x2a5b46,_0x59f46f){_0x2a5b46=_0x2a5b46-0x0;var _0x4a4bcb=_0x7adb[_0x2a5b46];return _0x4a4bcb;};'use strict';var _=require(_0xb7ad('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xb7ad('0x1'));var fs=require('fs');var Redis=require(_0xb7ad('0x2'));var db=require(_0xb7ad('0x3'))['db'];var utils=require(_0xb7ad('0x4'));var logger=require(_0xb7ad('0x5'))(_0xb7ad('0x6'));var config=require(_0xb7ad('0x7'));var jayson=require(_0xb7ad('0x8'));var client=jayson[_0xb7ad('0x9')][_0xb7ad('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4e564f,_0x3af123,_0x1c6054){return new BPromise(function(_0x50b879,_0x229140){return client['request'](_0x4e564f,_0x1c6054)[_0xb7ad('0xb')](function(_0x519ef3){logger[_0xb7ad('0xc')](_0xb7ad('0xd'),_0x3af123,_0xb7ad('0xe'));logger[_0xb7ad('0xf')](_0xb7ad('0x10'),_0x3af123,_0xb7ad('0xe'),JSON[_0xb7ad('0x11')](_0x519ef3));if(_0x519ef3[_0xb7ad('0x12')]){if(_0x519ef3[_0xb7ad('0x12')][_0xb7ad('0x13')]===0x1f4){logger[_0xb7ad('0x12')](_0xb7ad('0xd'),_0x3af123,_0x519ef3['error'][_0xb7ad('0x14')]);return _0x229140(_0x519ef3[_0xb7ad('0x12')]['message']);}logger[_0xb7ad('0x12')](_0xb7ad('0xd'),_0x3af123,_0x519ef3['error']['message']);return _0x50b879(_0x519ef3[_0xb7ad('0x12')][_0xb7ad('0x14')]);}else{logger[_0xb7ad('0xc')](_0xb7ad('0xd'),_0x3af123,_0xb7ad('0xe'));_0x50b879(_0x519ef3[_0xb7ad('0x15')][_0xb7ad('0x14')]);}})['catch'](function(_0x24b712){logger['error']('SmsQueueReport,\x20%s,\x20%s',_0x3af123,_0x24b712);_0x229140(_0x24b712);});});}exports[_0xb7ad('0x16')]=function(_0x2a1536){var _0x154210=this;return new Promise(function(_0x133f3c,_0x556d59){return db[_0xb7ad('0x17')]['create'](_0x2a1536[_0xb7ad('0x18')],{'raw':_0x2a1536[_0xb7ad('0x19')]?_0x2a1536['options'][_0xb7ad('0x1a')]===undefined?!![]:![]:!![]})[_0xb7ad('0xb')](function(_0x58baa8){logger[_0xb7ad('0xc')](_0xb7ad('0x16'),_0x2a1536);logger[_0xb7ad('0xf')](_0xb7ad('0x16'),_0x2a1536,JSON[_0xb7ad('0x11')](_0x58baa8));_0x133f3c(_0x58baa8);})[_0xb7ad('0x1b')](function(_0x346317){logger[_0xb7ad('0x12')](_0xb7ad('0x16'),_0x346317[_0xb7ad('0x14')],_0x2a1536);_0x556d59(_0x154210[_0xb7ad('0x12')](0x1f4,_0x346317['message']));});});};exports[_0xb7ad('0x1c')]=function(_0x4da326){var _0x2a2060=this;return new Promise(function(_0x2b99c3,_0x407893){return db[_0xb7ad('0x17')][_0xb7ad('0x1d')](_0x4da326[_0xb7ad('0x18')],{'raw':_0x4da326[_0xb7ad('0x19')]?_0x4da326[_0xb7ad('0x19')][_0xb7ad('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4da326['options']?_0x4da326[_0xb7ad('0x19')]['where']||null:null,'attributes':_0x4da326[_0xb7ad('0x19')]?_0x4da326[_0xb7ad('0x19')][_0xb7ad('0x1e')]||null:null,'limit':_0x4da326[_0xb7ad('0x19')]?_0x4da326[_0xb7ad('0x19')][_0xb7ad('0x1f')]||null:null})[_0xb7ad('0xb')](function(_0x2f9bcb){logger[_0xb7ad('0xc')](_0xb7ad('0x1c'),_0x4da326);logger['debug'](_0xb7ad('0x1c'),_0x4da326,JSON[_0xb7ad('0x11')](_0x2f9bcb));_0x2b99c3(_0x2f9bcb);})[_0xb7ad('0x1b')](function(_0x362396){logger[_0xb7ad('0x12')](_0xb7ad('0x1c'),_0x362396[_0xb7ad('0x14')],_0x4da326);_0x407893(_0x2a2060['error'](0x1f4,_0x362396[_0xb7ad('0x14')]));});});};
\ No newline at end of file
+var _0xd4d6=['UpdateSmsQueueReport','update','raw','where','attributes','limit','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','SmsQueueReport,\x20%s,\x20%s','request\x20sent','SmsQueueReport,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','CreateSmsQueueReport','SmsQueueReport','body','options','info','debug','stringify'];(function(_0x3d7811,_0x59daeb){var _0x927cfa=function(_0x5ce736){while(--_0x5ce736){_0x3d7811['push'](_0x3d7811['shift']());}};_0x927cfa(++_0x59daeb);}(_0xd4d6,0x11e));var _0x6d4d=function(_0x3abb68,_0x2c547d){_0x3abb68=_0x3abb68-0x0;var _0x117061=_0xd4d6[_0x3abb68];return _0x117061;};'use strict';var _=require(_0x6d4d('0x0'));var util=require(_0x6d4d('0x1'));var moment=require(_0x6d4d('0x2'));var BPromise=require(_0x6d4d('0x3'));var rs=require(_0x6d4d('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6d4d('0x5'))['db'];var utils=require(_0x6d4d('0x6'));var logger=require(_0x6d4d('0x7'))(_0x6d4d('0x8'));var config=require(_0x6d4d('0x9'));var jayson=require(_0x6d4d('0xa'));var client=jayson['client'][_0x6d4d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5bca71,_0xc686e,_0x370956){return new BPromise(function(_0x440e90,_0x59ac60){return client[_0x6d4d('0xc')](_0x5bca71,_0x370956)[_0x6d4d('0xd')](function(_0x10bca2){logger['info'](_0x6d4d('0xe'),_0xc686e,_0x6d4d('0xf'));logger['debug'](_0x6d4d('0x10'),_0xc686e,_0x6d4d('0xf'),JSON['stringify'](_0x10bca2));if(_0x10bca2[_0x6d4d('0x11')]){if(_0x10bca2[_0x6d4d('0x11')][_0x6d4d('0x12')]===0x1f4){logger[_0x6d4d('0x11')]('SmsQueueReport,\x20%s,\x20%s',_0xc686e,_0x10bca2[_0x6d4d('0x11')][_0x6d4d('0x13')]);return _0x59ac60(_0x10bca2[_0x6d4d('0x11')][_0x6d4d('0x13')]);}logger[_0x6d4d('0x11')](_0x6d4d('0xe'),_0xc686e,_0x10bca2[_0x6d4d('0x11')][_0x6d4d('0x13')]);return _0x440e90(_0x10bca2[_0x6d4d('0x11')][_0x6d4d('0x13')]);}else{logger['info'](_0x6d4d('0xe'),_0xc686e,'request\x20sent');_0x440e90(_0x10bca2[_0x6d4d('0x14')][_0x6d4d('0x13')]);}})[_0x6d4d('0x15')](function(_0x384ad8){logger[_0x6d4d('0x11')]('SmsQueueReport,\x20%s,\x20%s',_0xc686e,_0x384ad8);_0x59ac60(_0x384ad8);});});}exports[_0x6d4d('0x16')]=function(_0x28a26f){var _0x129b8a=this;return new Promise(function(_0x273cb5,_0x575ccb){return db[_0x6d4d('0x17')]['create'](_0x28a26f[_0x6d4d('0x18')],{'raw':_0x28a26f[_0x6d4d('0x19')]?_0x28a26f[_0x6d4d('0x19')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x1edcac){logger[_0x6d4d('0x1a')]('CreateSmsQueueReport',_0x28a26f);logger[_0x6d4d('0x1b')](_0x6d4d('0x16'),_0x28a26f,JSON[_0x6d4d('0x1c')](_0x1edcac));_0x273cb5(_0x1edcac);})[_0x6d4d('0x15')](function(_0x4d436d){logger[_0x6d4d('0x11')](_0x6d4d('0x16'),_0x4d436d[_0x6d4d('0x13')],_0x28a26f);_0x575ccb(_0x129b8a[_0x6d4d('0x11')](0x1f4,_0x4d436d[_0x6d4d('0x13')]));});});};exports[_0x6d4d('0x1d')]=function(_0x4357c9){var _0x5a62d9=this;return new Promise(function(_0x52e573,_0x5dfe9c){return db[_0x6d4d('0x17')][_0x6d4d('0x1e')](_0x4357c9[_0x6d4d('0x18')],{'raw':_0x4357c9['options']?_0x4357c9[_0x6d4d('0x19')][_0x6d4d('0x1f')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x4357c9[_0x6d4d('0x19')]?_0x4357c9['options'][_0x6d4d('0x20')]||null:null,'attributes':_0x4357c9['options']?_0x4357c9[_0x6d4d('0x19')][_0x6d4d('0x21')]||null:null,'limit':_0x4357c9[_0x6d4d('0x19')]?_0x4357c9['options'][_0x6d4d('0x22')]||null:null})['then'](function(_0x151c05){logger[_0x6d4d('0x1a')](_0x6d4d('0x1d'),_0x4357c9);logger['debug'](_0x6d4d('0x1d'),_0x4357c9,JSON[_0x6d4d('0x1c')](_0x151c05));_0x52e573(_0x151c05);})['catch'](function(_0x1f7a61){logger[_0x6d4d('0x11')](_0x6d4d('0x1d'),_0x1f7a61[_0x6d4d('0x13')],_0x4357c9);_0x5dfe9c(_0x5a62d9[_0x6d4d('0x11')](0x1f4,_0x1f7a61[_0x6d4d('0x13')]));});});};
\ No newline at end of file
index 4f89f06..d4f9171 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7d9f=['isAuthenticated','describe','/:id','show','post','put','destroy','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','index','get'];(function(_0x1ac595,_0x5d2081){var _0x455fff=function(_0x3043ee){while(--_0x3043ee){_0x1ac595['push'](_0x1ac595['shift']());}};_0x455fff(++_0x5d2081);}(_0x7d9f,0x15c));var _0xf7d9=function(_0x59cda9,_0x47d4c4){_0x59cda9=_0x59cda9-0x0;var _0x26c18f=_0x7d9f[_0x59cda9];return _0x26c18f;};'use strict';var multer=require(_0xf7d9('0x0'));var util=require(_0xf7d9('0x1'));var path=require(_0xf7d9('0x2'));var timeout=require(_0xf7d9('0x3'));var express=require(_0xf7d9('0x4'));var router=express['Router']();var fs_extra=require(_0xf7d9('0x5'));var auth=require(_0xf7d9('0x6'));var interaction=require(_0xf7d9('0x7'));var config=require(_0xf7d9('0x8'));var controller=require(_0xf7d9('0x9'));router['get']('/',auth['isAuthenticated'](),controller[_0xf7d9('0xa')]);router[_0xf7d9('0xb')]('/describe',auth[_0xf7d9('0xc')](),controller[_0xf7d9('0xd')]);router['get'](_0xf7d9('0xe'),auth['isAuthenticated'](),controller[_0xf7d9('0xf')]);router[_0xf7d9('0x10')]('/',auth['isAuthenticated'](),controller['create']);router[_0xf7d9('0x11')](_0xf7d9('0xe'),auth[_0xf7d9('0xc')](),controller['update']);router['delete'](_0xf7d9('0xe'),auth[_0xf7d9('0xc')](),controller[_0xf7d9('0x12')]);module[_0xf7d9('0x13')]=router;
\ No newline at end of file
+var _0x3eea=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./smsTransferReport.controller','get','isAuthenticated','/describe','describe','/:id','show','create','put','update','destroy','exports','multer','path','connect-timeout','express'];(function(_0x437a4a,_0x19e4f3){var _0x5a2e34=function(_0x9175f5){while(--_0x9175f5){_0x437a4a['push'](_0x437a4a['shift']());}};_0x5a2e34(++_0x19e4f3);}(_0x3eea,0x1ca));var _0xa3ee=function(_0x5bc29c,_0x143bc2){_0x5bc29c=_0x5bc29c-0x0;var _0x3fa2c1=_0x3eea[_0x5bc29c];return _0x3fa2c1;};'use strict';var multer=require(_0xa3ee('0x0'));var util=require('util');var path=require(_0xa3ee('0x1'));var timeout=require(_0xa3ee('0x2'));var express=require(_0xa3ee('0x3'));var router=express[_0xa3ee('0x4')]();var fs_extra=require(_0xa3ee('0x5'));var auth=require(_0xa3ee('0x6'));var interaction=require(_0xa3ee('0x7'));var config=require(_0xa3ee('0x8'));var controller=require(_0xa3ee('0x9'));router[_0xa3ee('0xa')]('/',auth[_0xa3ee('0xb')](),controller['index']);router['get'](_0xa3ee('0xc'),auth['isAuthenticated'](),controller[_0xa3ee('0xd')]);router['get'](_0xa3ee('0xe'),auth['isAuthenticated'](),controller[_0xa3ee('0xf')]);router['post']('/',auth[_0xa3ee('0xb')](),controller[_0xa3ee('0x10')]);router[_0xa3ee('0x11')]('/:id',auth[_0xa3ee('0xb')](),controller[_0xa3ee('0x12')]);router['delete']('/:id',auth[_0xa3ee('0xb')](),controller[_0xa3ee('0x13')]);module[_0xa3ee('0x14')]=router;
\ No newline at end of file
index bd5ee3d..a5da6fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['account','agent','queue','NOW','sequelize','exports','STRING','ENUM'];(function(_0x583ad2,_0x112859){var _0xd1b0c4=function(_0x36e04e){while(--_0x36e04e){_0x583ad2['push'](_0x583ad2['shift']());}};_0xd1b0c4(++_0x112859);}(_0xedd9,0xfc));var _0x9edd=function(_0x292037,_0x3fbd07){_0x292037=_0x292037-0x0;var _0x4e3bff=_0xedd9[_0x292037];return _0x4e3bff;};'use strict';var moment=require('moment');var Sequelize=require(_0x9edd('0x0'));module[_0x9edd('0x1')]={'uniqueid':{'type':Sequelize[_0x9edd('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x9edd('0x3')](_0x9edd('0x4'),_0x9edd('0x5'),_0x9edd('0x6')),'allowNull':![],'defaultValue':_0x9edd('0x6')},'transferredAt':{'type':Sequelize['DATE'],'allowNull':![],'defaultValue':Sequelize[_0x9edd('0x7')]}};
\ No newline at end of file
+var _0x9bde=['NOW','sequelize','STRING','account','agent','queue','DATE'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0x9bde,0xe1));var _0xe9bd=function(_0x49b93b,_0x17f83c){_0x49b93b=_0x49b93b-0x0;var _0x56da97=_0x9bde[_0x49b93b];return _0x56da97;};'use strict';var moment=require('moment');var Sequelize=require(_0xe9bd('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0xe9bd('0x1')],'allowNull':![]},'type':{'type':Sequelize['ENUM'](_0xe9bd('0x2'),_0xe9bd('0x3'),_0xe9bd('0x4')),'allowNull':![],'defaultValue':_0xe9bd('0x4')},'transferredAt':{'type':Sequelize[_0xe9bd('0x5')],'allowNull':![],'defaultValue':Sequelize[_0xe9bd('0x6')]}};
\ No newline at end of file
index 67f3751..e2b9876 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x962c=['type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','VIRTUAL','count','includeAll','rows','catch','show','params','rawAttributes','include','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','status','end','json','offset','undefined','Content-Range','apply','reject','update','then','destroy','error','stack','name','send','map','SmsTransferReport','fieldName'];(function(_0x256fca,_0x1e7e86){var _0x9048d=function(_0x355955){while(--_0x355955){_0x256fca['push'](_0x256fca['shift']());}};_0x9048d(++_0x1e7e86);}(_0x962c,0x1e2));var _0xc962=function(_0x4c7c05,_0x245e56){_0x4c7c05=_0x4c7c05-0x0;var _0x55bb76=_0x962c[_0x4c7c05];return _0x55bb76;};'use strict';var emlformat=require(_0xc962('0x0'));var rimraf=require(_0xc962('0x1'));var zipdir=require(_0xc962('0x2'));var jsonpatch=require(_0xc962('0x3'));var rp=require(_0xc962('0x4'));var moment=require('moment');var BPromise=require(_0xc962('0x5'));var Mustache=require(_0xc962('0x6'));var util=require(_0xc962('0x7'));var path=require('path');var sox=require(_0xc962('0x8'));var csv=require(_0xc962('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc962('0xa'));var squel=require(_0xc962('0xb'));var crypto=require('crypto');var jsforce=require(_0xc962('0xc'));var deskjs=require(_0xc962('0xd'));var toCsv=require('to-csv');var querystring=require(_0xc962('0xe'));var Papa=require(_0xc962('0xf'));var Redis=require(_0xc962('0x10'));var authService=require(_0xc962('0x11'));var qs=require(_0xc962('0x12'));var as=require(_0xc962('0x13'));var hardwareService=require(_0xc962('0x14'));var logger=require(_0xc962('0x15'))('api');var utils=require(_0xc962('0x16'));var config=require(_0xc962('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xc962('0x18'))['db'];function respondWithStatusCode(_0x1bae87,_0x94c51e){_0x94c51e=_0x94c51e||0xcc;return function(_0x14b318){if(_0x14b318){return _0x1bae87['sendStatus'](_0x94c51e);}return _0x1bae87[_0xc962('0x19')](_0x94c51e)[_0xc962('0x1a')]();};}function respondWithResult(_0x576ba5,_0x4dedaf){_0x4dedaf=_0x4dedaf||0xc8;return function(_0x534088){if(_0x534088){return _0x576ba5[_0xc962('0x19')](_0x4dedaf)[_0xc962('0x1b')](_0x534088);}};}function respondWithFilteredResult(_0x5e6a2c,_0x3b82b6){return function(_0x3b7003){if(_0x3b7003){var _0x392df3=typeof _0x3b82b6[_0xc962('0x1c')]===_0xc962('0x1d')&&typeof _0x3b82b6['limit']===_0xc962('0x1d');var _0x2e404f=_0x3b7003['count'];var _0x1acf35=_0x392df3?0x0:_0x3b82b6[_0xc962('0x1c')];var _0x248876=_0x392df3?_0x3b7003['count']:_0x3b82b6[_0xc962('0x1c')]+_0x3b82b6['limit'];var _0x1ffe9a;if(_0x248876>=_0x2e404f){_0x248876=_0x2e404f;_0x1ffe9a=0xc8;}else{_0x1ffe9a=0xce;}_0x5e6a2c[_0xc962('0x19')](_0x1ffe9a);return _0x5e6a2c['set'](_0xc962('0x1e'),_0x1acf35+'-'+_0x248876+'/'+_0x2e404f)['json'](_0x3b7003);}return null;};}function patchUpdates(_0x7ad060){return function(_0x982932){try{jsonpatch[_0xc962('0x1f')](_0x982932,_0x7ad060,!![]);}catch(_0x22bb47){return BPromise[_0xc962('0x20')](_0x22bb47);}return _0x982932['save']();};}function saveUpdates(_0x29b07e,_0x203cd5){return function(_0x4fc136){if(_0x4fc136){return _0x4fc136[_0xc962('0x21')](_0x29b07e)[_0xc962('0x22')](function(_0x35d01d){return _0x35d01d;});}return null;};}function removeEntity(_0x385936,_0x93146){return function(_0x1a4df4){if(_0x1a4df4){return _0x1a4df4[_0xc962('0x23')]()[_0xc962('0x22')](function(){_0x385936[_0xc962('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x257152,_0x554e05){return function(_0x4f572b){if(!_0x4f572b){_0x257152['sendStatus'](0x194);}return _0x4f572b;};}function handleError(_0x3b550d,_0x2136bc){_0x2136bc=_0x2136bc||0x1f4;return function(_0x4ad555){logger[_0xc962('0x24')](_0x4ad555[_0xc962('0x25')]);if(_0x4ad555[_0xc962('0x26')]){delete _0x4ad555[_0xc962('0x26')];}_0x3b550d['status'](_0x2136bc)[_0xc962('0x27')](_0x4ad555);};}exports['index']=function(_0x1e9178,_0x3a80df){var _0xa0a6ef={},_0x4d275f={},_0x4cbedb={'count':0x0,'rows':[]};var _0x5636c0=_[_0xc962('0x28')](db[_0xc962('0x29')]['rawAttributes'],function(_0x1b332e){return{'name':_0x1b332e[_0xc962('0x2a')],'type':_0x1b332e[_0xc962('0x2b')][_0xc962('0x2c')]};});_0x4d275f[_0xc962('0x2d')]=_[_0xc962('0x28')](_0x5636c0,_0xc962('0x26'));_0x4d275f[_0xc962('0x2e')]=_[_0xc962('0x2f')](_0x1e9178[_0xc962('0x2e')]);_0x4d275f[_0xc962('0x30')]=_[_0xc962('0x31')](_0x4d275f[_0xc962('0x2d')],_0x4d275f[_0xc962('0x2e')]);_0xa0a6ef[_0xc962('0x32')]=_['intersection'](_0x4d275f[_0xc962('0x2d')],qs[_0xc962('0x33')](_0x1e9178[_0xc962('0x2e')][_0xc962('0x33')]));_0xa0a6ef[_0xc962('0x32')]=_0xa0a6ef['attributes'][_0xc962('0x34')]?_0xa0a6ef[_0xc962('0x32')]:_0x4d275f[_0xc962('0x2d')];if(!_0x1e9178[_0xc962('0x2e')][_0xc962('0x35')](_0xc962('0x36'))){_0xa0a6ef[_0xc962('0x37')]=qs[_0xc962('0x37')](_0x1e9178[_0xc962('0x2e')][_0xc962('0x37')]);_0xa0a6ef[_0xc962('0x1c')]=qs[_0xc962('0x1c')](_0x1e9178[_0xc962('0x2e')][_0xc962('0x1c')]);}_0xa0a6ef[_0xc962('0x38')]=qs[_0xc962('0x39')](_0x1e9178[_0xc962('0x2e')][_0xc962('0x39')]);_0xa0a6ef[_0xc962('0x3a')]=qs[_0xc962('0x30')](_[_0xc962('0x3b')](_0x1e9178['query'],_0x4d275f[_0xc962('0x30')]),_0x5636c0);if(_0x1e9178[_0xc962('0x2e')][_0xc962('0x3c')]){_0xa0a6ef[_0xc962('0x3a')]=_['merge'](_0xa0a6ef[_0xc962('0x3a')],{'$or':_[_0xc962('0x28')](_0x5636c0,function(_0x656190){if(_0x656190[_0xc962('0x2b')]!==_0xc962('0x3d')){var _0x2fa887={};_0x2fa887[_0x656190[_0xc962('0x26')]]={'$like':'%'+_0x1e9178['query'][_0xc962('0x3c')]+'%'};return _0x2fa887;}})});}_0xa0a6ef=_['merge']({},_0xa0a6ef,_0x1e9178['options']);var _0x17eb73={'where':_0xa0a6ef[_0xc962('0x3a')]};return db[_0xc962('0x29')][_0xc962('0x3e')](_0x17eb73)[_0xc962('0x22')](function(_0x598616){_0x4cbedb[_0xc962('0x3e')]=_0x598616;if(_0x1e9178[_0xc962('0x2e')][_0xc962('0x3f')]){_0xa0a6ef['include']=[{'all':!![]}];}return db[_0xc962('0x29')]['findAll'](_0xa0a6ef);})[_0xc962('0x22')](function(_0x170442){_0x4cbedb[_0xc962('0x40')]=_0x170442;return _0x4cbedb;})['then'](respondWithFilteredResult(_0x3a80df,_0xa0a6ef))[_0xc962('0x41')](handleError(_0x3a80df,null));};exports[_0xc962('0x42')]=function(_0x4d0fce,_0x5c5b6c){var _0xbe5e21={'raw':!![],'where':{'id':_0x4d0fce[_0xc962('0x43')]['id']}},_0x21cbc3={};_0x21cbc3[_0xc962('0x2d')]=_[_0xc962('0x2f')](db[_0xc962('0x29')][_0xc962('0x44')]);_0x21cbc3[_0xc962('0x2e')]=_['keys'](_0x4d0fce[_0xc962('0x2e')]);_0x21cbc3[_0xc962('0x30')]=_[_0xc962('0x31')](_0x21cbc3[_0xc962('0x2d')],_0x21cbc3['query']);_0xbe5e21[_0xc962('0x32')]=_[_0xc962('0x31')](_0x21cbc3[_0xc962('0x2d')],qs[_0xc962('0x33')](_0x4d0fce[_0xc962('0x2e')][_0xc962('0x33')]));_0xbe5e21['attributes']=_0xbe5e21[_0xc962('0x32')][_0xc962('0x34')]?_0xbe5e21['attributes']:_0x21cbc3[_0xc962('0x2d')];if(_0x4d0fce[_0xc962('0x2e')]['includeAll']){_0xbe5e21[_0xc962('0x45')]=[{'all':!![]}];}_0xbe5e21=_['merge']({},_0xbe5e21,_0x4d0fce[_0xc962('0x46')]);return db['SmsTransferReport'][_0xc962('0x47')](_0xbe5e21)[_0xc962('0x22')](handleEntityNotFound(_0x5c5b6c,null))[_0xc962('0x22')](respondWithResult(_0x5c5b6c,null))[_0xc962('0x41')](handleError(_0x5c5b6c,null));};exports[_0xc962('0x48')]=function(_0x415b71,_0x27e41a){return db[_0xc962('0x29')][_0xc962('0x48')](_0x415b71['body'],{})[_0xc962('0x22')](respondWithResult(_0x27e41a,0xc9))[_0xc962('0x41')](handleError(_0x27e41a,null));};exports[_0xc962('0x21')]=function(_0x25a603,_0x3c1b65){if(_0x25a603[_0xc962('0x49')]['id']){delete _0x25a603[_0xc962('0x49')]['id'];}return db[_0xc962('0x29')][_0xc962('0x47')]({'where':{'id':_0x25a603[_0xc962('0x43')]['id']}})[_0xc962('0x22')](handleEntityNotFound(_0x3c1b65,null))[_0xc962('0x22')](saveUpdates(_0x25a603[_0xc962('0x49')],null))[_0xc962('0x22')](respondWithResult(_0x3c1b65,null))[_0xc962('0x41')](handleError(_0x3c1b65,null));};exports[_0xc962('0x23')]=function(_0x1c02fa,_0x3fcf34){return db[_0xc962('0x29')][_0xc962('0x47')]({'where':{'id':_0x1c02fa[_0xc962('0x43')]['id']}})[_0xc962('0x22')](handleEntityNotFound(_0x3fcf34,null))[_0xc962('0x22')](removeEntity(_0x3fcf34,null))[_0xc962('0x41')](handleError(_0x3fcf34,null));};exports[_0xc962('0x4a')]=function(_0x518ee0,_0x5e0cc0){return db[_0xc962('0x29')][_0xc962('0x4a')]()[_0xc962('0x22')](respondWithResult(_0x5e0cc0,null))[_0xc962('0x41')](handleError(_0x5e0cc0,null));};
\ No newline at end of file
+var _0x5dce=['nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','include','findAll','rows','show','params','includeAll','find','create','body','catch','describe','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','json','undefined','limit','count','offset','status','set','update','destroy','then','error','stack','name','send','index','map','SmsTransferReport','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length'];(function(_0x7d1bbc,_0x1fa5a4){var _0x405402=function(_0xdc4c6f){while(--_0xdc4c6f){_0x7d1bbc['push'](_0x7d1bbc['shift']());}};_0x405402(++_0x1fa5a4);}(_0x5dce,0xfb));var _0xe5dc=function(_0x2cf822,_0x25876e){_0x2cf822=_0x2cf822-0x0;var _0x50c674=_0x5dce[_0x2cf822];return _0x50c674;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xe5dc('0x0'));var zipdir=require(_0xe5dc('0x1'));var jsonpatch=require(_0xe5dc('0x2'));var rp=require(_0xe5dc('0x3'));var moment=require('moment');var BPromise=require(_0xe5dc('0x4'));var Mustache=require(_0xe5dc('0x5'));var util=require(_0xe5dc('0x6'));var path=require(_0xe5dc('0x7'));var sox=require(_0xe5dc('0x8'));var csv=require(_0xe5dc('0x9'));var ejs=require(_0xe5dc('0xa'));var fs=require('fs');var fs_extra=require(_0xe5dc('0xb'));var _=require(_0xe5dc('0xc'));var squel=require(_0xe5dc('0xd'));var crypto=require(_0xe5dc('0xe'));var jsforce=require(_0xe5dc('0xf'));var deskjs=require('desk.js');var toCsv=require(_0xe5dc('0x9'));var querystring=require(_0xe5dc('0x10'));var Papa=require('papaparse');var Redis=require(_0xe5dc('0x11'));var authService=require(_0xe5dc('0x12'));var qs=require(_0xe5dc('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xe5dc('0x14'));var logger=require(_0xe5dc('0x15'))(_0xe5dc('0x16'));var utils=require(_0xe5dc('0x17'));var config=require(_0xe5dc('0x18'));var licenseUtil=require(_0xe5dc('0x19'));var db=require(_0xe5dc('0x1a'))['db'];function respondWithStatusCode(_0x1b8699,_0x4f2ec2){_0x4f2ec2=_0x4f2ec2||0xcc;return function(_0x1000b5){if(_0x1000b5){return _0x1b8699[_0xe5dc('0x1b')](_0x4f2ec2);}return _0x1b8699['status'](_0x4f2ec2)[_0xe5dc('0x1c')]();};}function respondWithResult(_0x47c37c,_0x447ff9){_0x447ff9=_0x447ff9||0xc8;return function(_0x2157fd){if(_0x2157fd){return _0x47c37c['status'](_0x447ff9)[_0xe5dc('0x1d')](_0x2157fd);}};}function respondWithFilteredResult(_0x30a309,_0x3f90b0){return function(_0x324eeb){if(_0x324eeb){var _0x149b2a=typeof _0x3f90b0['offset']===_0xe5dc('0x1e')&&typeof _0x3f90b0[_0xe5dc('0x1f')]==='undefined';var _0x50dd68=_0x324eeb[_0xe5dc('0x20')];var _0x186234=_0x149b2a?0x0:_0x3f90b0[_0xe5dc('0x21')];var _0x507733=_0x149b2a?_0x324eeb[_0xe5dc('0x20')]:_0x3f90b0[_0xe5dc('0x21')]+_0x3f90b0[_0xe5dc('0x1f')];var _0x5625c7;if(_0x507733>=_0x50dd68){_0x507733=_0x50dd68;_0x5625c7=0xc8;}else{_0x5625c7=0xce;}_0x30a309[_0xe5dc('0x22')](_0x5625c7);return _0x30a309[_0xe5dc('0x23')]('Content-Range',_0x186234+'-'+_0x507733+'/'+_0x50dd68)[_0xe5dc('0x1d')](_0x324eeb);}return null;};}function patchUpdates(_0x2aa14d){return function(_0x2e9c3f){try{jsonpatch['apply'](_0x2e9c3f,_0x2aa14d,!![]);}catch(_0x2f70a5){return BPromise['reject'](_0x2f70a5);}return _0x2e9c3f['save']();};}function saveUpdates(_0x4b1e06,_0x122a53){return function(_0x199e86){if(_0x199e86){return _0x199e86[_0xe5dc('0x24')](_0x4b1e06)['then'](function(_0xeeb2fc){return _0xeeb2fc;});}return null;};}function removeEntity(_0xf637d5,_0x4f8842){return function(_0x5e5ca4){if(_0x5e5ca4){return _0x5e5ca4[_0xe5dc('0x25')]()[_0xe5dc('0x26')](function(){_0xf637d5['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x540db1,_0x4d3a52){return function(_0x54354e){if(!_0x54354e){_0x540db1[_0xe5dc('0x1b')](0x194);}return _0x54354e;};}function handleError(_0x3c1b59,_0x419651){_0x419651=_0x419651||0x1f4;return function(_0xa89807){logger[_0xe5dc('0x27')](_0xa89807[_0xe5dc('0x28')]);if(_0xa89807['name']){delete _0xa89807[_0xe5dc('0x29')];}_0x3c1b59[_0xe5dc('0x22')](_0x419651)[_0xe5dc('0x2a')](_0xa89807);};}exports[_0xe5dc('0x2b')]=function(_0x49c5fd,_0x23c981){var _0xb8995e={},_0x983b08={},_0x44a14d={'count':0x0,'rows':[]};var _0x28f359=_[_0xe5dc('0x2c')](db[_0xe5dc('0x2d')]['rawAttributes'],function(_0x47216e){return{'name':_0x47216e[_0xe5dc('0x2e')],'type':_0x47216e[_0xe5dc('0x2f')][_0xe5dc('0x30')]};});_0x983b08[_0xe5dc('0x31')]=_[_0xe5dc('0x2c')](_0x28f359,_0xe5dc('0x29'));_0x983b08[_0xe5dc('0x32')]=_[_0xe5dc('0x33')](_0x49c5fd[_0xe5dc('0x32')]);_0x983b08[_0xe5dc('0x34')]=_[_0xe5dc('0x35')](_0x983b08[_0xe5dc('0x31')],_0x983b08[_0xe5dc('0x32')]);_0xb8995e[_0xe5dc('0x36')]=_[_0xe5dc('0x35')](_0x983b08['model'],qs[_0xe5dc('0x37')](_0x49c5fd[_0xe5dc('0x32')][_0xe5dc('0x37')]));_0xb8995e[_0xe5dc('0x36')]=_0xb8995e[_0xe5dc('0x36')][_0xe5dc('0x38')]?_0xb8995e['attributes']:_0x983b08[_0xe5dc('0x31')];if(!_0x49c5fd[_0xe5dc('0x32')]['hasOwnProperty'](_0xe5dc('0x39'))){_0xb8995e['limit']=qs[_0xe5dc('0x1f')](_0x49c5fd['query'][_0xe5dc('0x1f')]);_0xb8995e[_0xe5dc('0x21')]=qs['offset'](_0x49c5fd[_0xe5dc('0x32')][_0xe5dc('0x21')]);}_0xb8995e[_0xe5dc('0x3a')]=qs[_0xe5dc('0x3b')](_0x49c5fd[_0xe5dc('0x32')]['sort']);_0xb8995e[_0xe5dc('0x3c')]=qs[_0xe5dc('0x34')](_[_0xe5dc('0x3d')](_0x49c5fd[_0xe5dc('0x32')],_0x983b08[_0xe5dc('0x34')]),_0x28f359);if(_0x49c5fd['query']['filter']){_0xb8995e[_0xe5dc('0x3c')]=_[_0xe5dc('0x3e')](_0xb8995e[_0xe5dc('0x3c')],{'$or':_[_0xe5dc('0x2c')](_0x28f359,function(_0x12fd3e){if(_0x12fd3e[_0xe5dc('0x2f')]!==_0xe5dc('0x3f')){var _0x326a42={};_0x326a42[_0x12fd3e[_0xe5dc('0x29')]]={'$like':'%'+_0x49c5fd[_0xe5dc('0x32')][_0xe5dc('0x40')]+'%'};return _0x326a42;}})});}_0xb8995e=_[_0xe5dc('0x3e')]({},_0xb8995e,_0x49c5fd[_0xe5dc('0x41')]);var _0x5f2c05={'where':_0xb8995e['where']};return db['SmsTransferReport'][_0xe5dc('0x20')](_0x5f2c05)['then'](function(_0x1e8660){_0x44a14d['count']=_0x1e8660;if(_0x49c5fd['query']['includeAll']){_0xb8995e[_0xe5dc('0x42')]=[{'all':!![]}];}return db[_0xe5dc('0x2d')][_0xe5dc('0x43')](_0xb8995e);})[_0xe5dc('0x26')](function(_0x4eae83){_0x44a14d[_0xe5dc('0x44')]=_0x4eae83;return _0x44a14d;})[_0xe5dc('0x26')](respondWithFilteredResult(_0x23c981,_0xb8995e))['catch'](handleError(_0x23c981,null));};exports[_0xe5dc('0x45')]=function(_0x2779ee,_0x3ae3ba){var _0x53847e={'raw':!![],'where':{'id':_0x2779ee[_0xe5dc('0x46')]['id']}},_0x590110={};_0x590110[_0xe5dc('0x31')]=_[_0xe5dc('0x33')](db[_0xe5dc('0x2d')]['rawAttributes']);_0x590110[_0xe5dc('0x32')]=_[_0xe5dc('0x33')](_0x2779ee[_0xe5dc('0x32')]);_0x590110[_0xe5dc('0x34')]=_['intersection'](_0x590110[_0xe5dc('0x31')],_0x590110[_0xe5dc('0x32')]);_0x53847e[_0xe5dc('0x36')]=_[_0xe5dc('0x35')](_0x590110[_0xe5dc('0x31')],qs[_0xe5dc('0x37')](_0x2779ee[_0xe5dc('0x32')][_0xe5dc('0x37')]));_0x53847e['attributes']=_0x53847e[_0xe5dc('0x36')][_0xe5dc('0x38')]?_0x53847e[_0xe5dc('0x36')]:_0x590110[_0xe5dc('0x31')];if(_0x2779ee[_0xe5dc('0x32')][_0xe5dc('0x47')]){_0x53847e[_0xe5dc('0x42')]=[{'all':!![]}];}_0x53847e=_['merge']({},_0x53847e,_0x2779ee[_0xe5dc('0x41')]);return db['SmsTransferReport'][_0xe5dc('0x48')](_0x53847e)[_0xe5dc('0x26')](handleEntityNotFound(_0x3ae3ba,null))[_0xe5dc('0x26')](respondWithResult(_0x3ae3ba,null))['catch'](handleError(_0x3ae3ba,null));};exports[_0xe5dc('0x49')]=function(_0x2b3159,_0x163de5){return db['SmsTransferReport'][_0xe5dc('0x49')](_0x2b3159[_0xe5dc('0x4a')],{})['then'](respondWithResult(_0x163de5,0xc9))['catch'](handleError(_0x163de5,null));};exports[_0xe5dc('0x24')]=function(_0x30041c,_0x42b711){if(_0x30041c[_0xe5dc('0x4a')]['id']){delete _0x30041c['body']['id'];}return db[_0xe5dc('0x2d')][_0xe5dc('0x48')]({'where':{'id':_0x30041c[_0xe5dc('0x46')]['id']}})['then'](handleEntityNotFound(_0x42b711,null))[_0xe5dc('0x26')](saveUpdates(_0x30041c[_0xe5dc('0x4a')],null))[_0xe5dc('0x26')](respondWithResult(_0x42b711,null))['catch'](handleError(_0x42b711,null));};exports[_0xe5dc('0x25')]=function(_0x1645b3,_0x51437e){return db[_0xe5dc('0x2d')][_0xe5dc('0x48')]({'where':{'id':_0x1645b3[_0xe5dc('0x46')]['id']}})['then'](handleEntityNotFound(_0x51437e,null))['then'](removeEntity(_0x51437e,null))[_0xe5dc('0x4b')](handleError(_0x51437e,null));};exports[_0xe5dc('0x4c')]=function(_0x10afee,_0x1f8697){return db['SmsTransferReport']['describe']()[_0xe5dc('0x26')](respondWithResult(_0x1f8697,null))[_0xe5dc('0x4b')](handleError(_0x1f8697,null));};
\ No newline at end of file
index 416e9c8..ed98795 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f30=['report_sms_transfer','uniqueid','lodash','api','request-promise','path','rimraf','./smsTransferReport.attributes','exports','define','SmsTransferReport'];(function(_0x1ea551,_0x47616c){var _0x53112a=function(_0x40fc1c){while(--_0x40fc1c){_0x1ea551['push'](_0x1ea551['shift']());}};_0x53112a(++_0x47616c);}(_0x5f30,0xe9));var _0x05f3=function(_0x1f0f06,_0x1178d3){_0x1f0f06=_0x1f0f06-0x0;var _0x6cd478=_0x5f30[_0x1f0f06];return _0x6cd478;};'use strict';var _=require(_0x05f3('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x05f3('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x05f3('0x2'));var fs=require('fs');var path=require(_0x05f3('0x3'));var rimraf=require(_0x05f3('0x4'));var config=require('../../config/environment');var attributes=require(_0x05f3('0x5'));module[_0x05f3('0x6')]=function(_0x3e01d9,_0x1dc586){return _0x3e01d9[_0x05f3('0x7')](_0x05f3('0x8'),attributes,{'tableName':_0x05f3('0x9'),'paranoid':![],'indexes':[{'name':_0x05f3('0xa'),'fields':[_0x05f3('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x58ef=['rimraf','../../config/environment','./smsTransferReport.attributes','exports','define','SmsTransferReport','uniqueid','lodash','../../config/logger','api','moment','bluebird','path'];(function(_0x6aab7e,_0x3110aa){var _0x4d9c94=function(_0x3a5b6e){while(--_0x3a5b6e){_0x6aab7e['push'](_0x6aab7e['shift']());}};_0x4d9c94(++_0x3110aa);}(_0x58ef,0x1ce));var _0xf58e=function(_0x4410c8,_0x2be449){_0x4410c8=_0x4410c8-0x0;var _0x1a1602=_0x58ef[_0x4410c8];return _0x1a1602;};'use strict';var _=require(_0xf58e('0x0'));var util=require('util');var logger=require(_0xf58e('0x1'))(_0xf58e('0x2'));var moment=require(_0xf58e('0x3'));var BPromise=require(_0xf58e('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xf58e('0x5'));var rimraf=require(_0xf58e('0x6'));var config=require(_0xf58e('0x7'));var attributes=require(_0xf58e('0x8'));module[_0xf58e('0x9')]=function(_0x1ede65,_0x42c3ee){return _0x1ede65[_0xf58e('0xa')](_0xf58e('0xb'),attributes,{'tableName':'report_sms_transfer','paranoid':![],'indexes':[{'name':_0xf58e('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
index e991bef..822c33c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdb9=['request','then','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','jayson/promise','http'];(function(_0x3b16c8,_0x1d220d){var _0x196389=function(_0xb9a8f6){while(--_0xb9a8f6){_0x3b16c8['push'](_0x3b16c8['shift']());}};_0x196389(++_0x1d220d);}(_0xbdb9,0xac));var _0x9bdb=function(_0x5eda93,_0xd4b963){_0x5eda93=_0x5eda93-0x0;var _0x4e87ac=_0xbdb9[_0x5eda93];return _0x4e87ac;};'use strict';var _=require(_0x9bdb('0x0'));var util=require(_0x9bdb('0x1'));var moment=require(_0x9bdb('0x2'));var BPromise=require(_0x9bdb('0x3'));var rs=require(_0x9bdb('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9bdb('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require('../../config/environment');var jayson=require(_0x9bdb('0x6'));var client=jayson['client'][_0x9bdb('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4e9c54,_0x369e4a,_0x27cdd8){return new BPromise(function(_0x27c6b8,_0x4bbae9){return client[_0x9bdb('0x8')](_0x4e9c54,_0x27cdd8)[_0x9bdb('0x9')](function(_0x152c08){logger['info'](_0x9bdb('0xa'),_0x369e4a,_0x9bdb('0xb'));logger[_0x9bdb('0xc')](_0x9bdb('0xd'),_0x369e4a,_0x9bdb('0xb'),JSON['stringify'](_0x152c08));if(_0x152c08['error']){if(_0x152c08[_0x9bdb('0xe')][_0x9bdb('0xf')]===0x1f4){logger[_0x9bdb('0xe')](_0x9bdb('0xa'),_0x369e4a,_0x152c08[_0x9bdb('0xe')][_0x9bdb('0x10')]);return _0x4bbae9(_0x152c08['error'][_0x9bdb('0x10')]);}logger[_0x9bdb('0xe')](_0x9bdb('0xa'),_0x369e4a,_0x152c08[_0x9bdb('0xe')][_0x9bdb('0x10')]);return _0x27c6b8(_0x152c08['error'][_0x9bdb('0x10')]);}else{logger[_0x9bdb('0x11')](_0x9bdb('0xa'),_0x369e4a,'request\x20sent');_0x27c6b8(_0x152c08[_0x9bdb('0x12')][_0x9bdb('0x10')]);}})[_0x9bdb('0x13')](function(_0x1f575e){logger[_0x9bdb('0xe')](_0x9bdb('0xa'),_0x369e4a,_0x1f575e);_0x4bbae9(_0x1f575e);});});}
\ No newline at end of file
+var _0xe9e8=['code','message','result','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','request','then','SmsTransferReport,\x20%s,\x20%s','request\x20sent','debug','SmsTransferReport,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x4536d7,_0x2c14bd){var _0x268280=function(_0x36b137){while(--_0x36b137){_0x4536d7['push'](_0x4536d7['shift']());}};_0x268280(++_0x2c14bd);}(_0xe9e8,0x179));var _0x8e9e=function(_0x35ed79,_0x39f1e3){_0x35ed79=_0x35ed79-0x0;var _0x477527=_0xe9e8[_0x35ed79];return _0x477527;};'use strict';var _=require(_0x8e9e('0x0'));var util=require(_0x8e9e('0x1'));var moment=require(_0x8e9e('0x2'));var BPromise=require(_0x8e9e('0x3'));var rs=require(_0x8e9e('0x4'));var fs=require('fs');var Redis=require(_0x8e9e('0x5'));var db=require(_0x8e9e('0x6'))['db'];var utils=require('../../config/utils');var logger=require(_0x8e9e('0x7'))('rpc');var config=require(_0x8e9e('0x8'));var jayson=require(_0x8e9e('0x9'));var client=jayson[_0x8e9e('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x4dae01,_0x1613ff,_0x2e00d9){return new BPromise(function(_0x3afd97,_0x2745ef){return client[_0x8e9e('0xb')](_0x4dae01,_0x2e00d9)[_0x8e9e('0xc')](function(_0x50d9a1){logger['info'](_0x8e9e('0xd'),_0x1613ff,_0x8e9e('0xe'));logger[_0x8e9e('0xf')](_0x8e9e('0x10'),_0x1613ff,_0x8e9e('0xe'),JSON[_0x8e9e('0x11')](_0x50d9a1));if(_0x50d9a1[_0x8e9e('0x12')]){if(_0x50d9a1[_0x8e9e('0x12')][_0x8e9e('0x13')]===0x1f4){logger[_0x8e9e('0x12')](_0x8e9e('0xd'),_0x1613ff,_0x50d9a1[_0x8e9e('0x12')][_0x8e9e('0x14')]);return _0x2745ef(_0x50d9a1[_0x8e9e('0x12')]['message']);}logger[_0x8e9e('0x12')](_0x8e9e('0xd'),_0x1613ff,_0x50d9a1[_0x8e9e('0x12')][_0x8e9e('0x14')]);return _0x3afd97(_0x50d9a1['error'][_0x8e9e('0x14')]);}else{logger['info'](_0x8e9e('0xd'),_0x1613ff,_0x8e9e('0xe'));_0x3afd97(_0x50d9a1[_0x8e9e('0x15')]['message']);}})['catch'](function(_0x20220a){logger[_0x8e9e('0x12')]('SmsTransferReport,\x20%s,\x20%s',_0x1613ff,_0x20220a);_0x2745ef(_0x20220a);});});}
\ No newline at end of file
index 465796b..335d39e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d9d=['get','index','isAuthenticated','show','/:id/download','download','diskStorage','join','server/files/sounds/original/','originalname','%s-%s%s','now','extname','post','single','file','create','put','/:id','update','delete','exports','multer','util','connect-timeout','express','../../components/auth/service','../../config/environment','./sound.controller'];(function(_0x432682,_0x253044){var _0x463d05=function(_0xa73403){while(--_0xa73403){_0x432682['push'](_0x432682['shift']());}};_0x463d05(++_0x253044);}(_0x4d9d,0x155));var _0xd4d9=function(_0x4d23dc,_0x30def6){_0x4d23dc=_0x4d23dc-0x0;var _0x1ffc30=_0x4d9d[_0x4d23dc];return _0x1ffc30;};'use strict';var multer=require(_0xd4d9('0x0'));var util=require(_0xd4d9('0x1'));var path=require('path');var timeout=require(_0xd4d9('0x2'));var express=require(_0xd4d9('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xd4d9('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xd4d9('0x5'));var controller=require(_0xd4d9('0x6'));router[_0xd4d9('0x7')]('/',auth['isAuthenticated'](),controller[_0xd4d9('0x8')]);router[_0xd4d9('0x7')]('/:id',auth[_0xd4d9('0x9')](),controller[_0xd4d9('0xa')]);router[_0xd4d9('0x7')](_0xd4d9('0xb'),auth['isAuthenticated'](),controller[_0xd4d9('0xc')]);var upload=multer({'storage':multer[_0xd4d9('0xd')]({'destination':function(_0x123e25,_0x1fef21,_0x2298b5){_0x2298b5(null,path[_0xd4d9('0xe')](config['root'],_0xd4d9('0xf')));},'filename':function(_0x54c2de,_0x4b6d85,_0x27141d){_0x4b6d85['originalname']=_0x4b6d85[_0xd4d9('0x10')]['replace'](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x27141d(null,util['format'](_0xd4d9('0x11'),path['basename'](_0x4b6d85[_0xd4d9('0x10')],path['extname'](_0x4b6d85[_0xd4d9('0x10')])),Date[_0xd4d9('0x12')](),path[_0xd4d9('0x13')](_0x4b6d85['originalname'])));}})});router[_0xd4d9('0x14')]('/',upload[_0xd4d9('0x15')](_0xd4d9('0x16')),controller[_0xd4d9('0x17')]);router[_0xd4d9('0x18')](_0xd4d9('0x19'),auth[_0xd4d9('0x9')](),controller[_0xd4d9('0x1a')]);router[_0xd4d9('0x1b')](_0xd4d9('0x19'),auth[_0xd4d9('0x9')](),controller[_0xd4d9('0x1b')]);module[_0xd4d9('0x1c')]=router;
\ No newline at end of file
+var _0x3af1=['basename','extname','now','file','create','put','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','./sound.controller','get','index','/:id','isAuthenticated','show','/:id/download','download','diskStorage','join','root','server/files/sounds/original/','originalname','replace','format','%s-%s%s'];(function(_0x2cb82c,_0x2e6e7a){var _0x183a4e=function(_0x3e58eb){while(--_0x3e58eb){_0x2cb82c['push'](_0x2cb82c['shift']());}};_0x183a4e(++_0x2e6e7a);}(_0x3af1,0x69));var _0x13af=function(_0x41a40c,_0x37c8b1){_0x41a40c=_0x41a40c-0x0;var _0x87b056=_0x3af1[_0x41a40c];return _0x87b056;};'use strict';var multer=require('multer');var util=require(_0x13af('0x0'));var path=require(_0x13af('0x1'));var timeout=require(_0x13af('0x2'));var express=require(_0x13af('0x3'));var router=express[_0x13af('0x4')]();var fs_extra=require(_0x13af('0x5'));var auth=require(_0x13af('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0x13af('0x7'));router[_0x13af('0x8')]('/',auth['isAuthenticated'](),controller[_0x13af('0x9')]);router['get'](_0x13af('0xa'),auth[_0x13af('0xb')](),controller[_0x13af('0xc')]);router['get'](_0x13af('0xd'),auth[_0x13af('0xb')](),controller[_0x13af('0xe')]);var upload=multer({'storage':multer[_0x13af('0xf')]({'destination':function(_0x454d1c,_0x490548,_0x858976){_0x858976(null,path[_0x13af('0x10')](config[_0x13af('0x11')],_0x13af('0x12')));},'filename':function(_0x546ee7,_0x3d511e,_0x15d503){_0x3d511e[_0x13af('0x13')]=_0x3d511e[_0x13af('0x13')][_0x13af('0x14')](/[+@&\/\\#,+()$~%'":*?<>{}\s\\|]/g,'-');_0x15d503(null,util[_0x13af('0x15')](_0x13af('0x16'),path[_0x13af('0x17')](_0x3d511e[_0x13af('0x13')],path[_0x13af('0x18')](_0x3d511e[_0x13af('0x13')])),Date[_0x13af('0x19')](),path[_0x13af('0x18')](_0x3d511e[_0x13af('0x13')])));}})});router['post']('/',upload['single'](_0x13af('0x1a')),controller[_0x13af('0x1b')]);router[_0x13af('0x1c')](_0x13af('0xa'),auth[_0x13af('0xb')](),controller[_0x13af('0x1d')]);router[_0x13af('0x1e')](_0x13af('0xa'),auth[_0x13af('0xb')](),controller['delete']);module[_0x13af('0x1f')]=router;
\ No newline at end of file
index 3e8adb5..fb5ffb7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x108c=['name','FLOAT','INTEGER','BIGINT','sequelize','exports','STRING'];(function(_0x39cd39,_0x251493){var _0x500f99=function(_0x3b29bc){while(--_0x3b29bc){_0x39cd39['push'](_0x39cd39['shift']());}};_0x500f99(++_0x251493);}(_0x108c,0xc8));var _0xc108=function(_0x122ef9,_0x451d2a){_0x122ef9=_0x122ef9-0x0;var _0x42fba0=_0x108c[_0x122ef9];return _0x42fba0;};'use strict';var Sequelize=require(_0xc108('0x0'));module[_0xc108('0x1')]={'name':{'type':Sequelize[_0xc108('0x2')],'unique':_0xc108('0x3'),'allowNull':![]},'save_name':{'type':Sequelize[_0xc108('0x2')]},'display_name':{'type':Sequelize['STRING'],'defaultValue':''},'description':{'type':Sequelize[_0xc108('0x2')]},'original_format':{'type':Sequelize['STRING']},'original_duration':{'type':Sequelize[_0xc108('0x4')]},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize[_0xc108('0x5')]},'original_bitRate':{'type':Sequelize[_0xc108('0x6')]},'original_sampleRate':{'type':Sequelize[_0xc108('0x5')]},'converted_format':{'type':Sequelize[_0xc108('0x2')]},'converted_duration':{'type':Sequelize[_0xc108('0x4')]},'converted_sampleCount':{'type':Sequelize[_0xc108('0x6')]},'converted_channelCount':{'type':Sequelize[_0xc108('0x5')]},'converted_bitRate':{'type':Sequelize[_0xc108('0x6')]},'converted_sampleRate':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0x45a3=['exports','name','STRING','FLOAT','INTEGER','BIGINT','sequelize'];(function(_0x28a5ad,_0x520afa){var _0x176b8a=function(_0x3d71b){while(--_0x3d71b){_0x28a5ad['push'](_0x28a5ad['shift']());}};_0x176b8a(++_0x520afa);}(_0x45a3,0x13a));var _0x345a=function(_0x15834d,_0x1feb94){_0x15834d=_0x15834d-0x0;var _0xfe2fa9=_0x45a3[_0x15834d];return _0xfe2fa9;};'use strict';var Sequelize=require(_0x345a('0x0'));module[_0x345a('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x345a('0x2'),'allowNull':![]},'save_name':{'type':Sequelize['STRING']},'display_name':{'type':Sequelize[_0x345a('0x3')],'defaultValue':''},'description':{'type':Sequelize[_0x345a('0x3')]},'original_format':{'type':Sequelize[_0x345a('0x3')]},'original_duration':{'type':Sequelize[_0x345a('0x4')]},'original_sampleCount':{'type':Sequelize['BIGINT']},'original_channelCount':{'type':Sequelize[_0x345a('0x5')]},'original_bitRate':{'type':Sequelize[_0x345a('0x6')]},'original_sampleRate':{'type':Sequelize[_0x345a('0x5')]},'converted_format':{'type':Sequelize['STRING']},'converted_duration':{'type':Sequelize[_0x345a('0x4')]},'converted_sampleCount':{'type':Sequelize['BIGINT']},'converted_channelCount':{'type':Sequelize[_0x345a('0x5')]},'converted_bitRate':{'type':Sequelize[_0x345a('0x6')]},'converted_sampleRate':{'type':Sequelize[_0x345a('0x5')]}};
\ No newline at end of file
index 23fd625..260c67f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf81=['limit','count','offset','Content-Range','apply','save','then','destroy','get','Sounds','UserProfileResource','end','error','stack','name','index','map','Sound','fieldName','type','key','model','keys','filters','intersection','attributes','query','fields','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','rawAttributes','find','download','converted_format','join','server/files/sounds/converted','save_name','ValidationError','Sound\x20not\x20found','root','format','%s.%s','create','file','originalname','basename','filename','extname','substring','wav','server/files/sounds/original','Sound\x20upload\x20filepath:\x20%s','info','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','unlinkSync','send','original_duration','duration','original_sampleCount','sampleCount','original_channelCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_channelCount','converted_bitRate','converted_sampleRate','body','userProfileId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','description','delete','original_format','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/environment','../../config/license/util','sendStatus','status','json','undefined'];(function(_0x467622,_0x4ad91){var _0x35ca1a=function(_0x1cdb34){while(--_0x1cdb34){_0x467622['push'](_0x467622['shift']());}};_0x35ca1a(++_0x4ad91);}(_0xbf81,0xe9));var _0x1bf8=function(_0x598ec6,_0x17113e){_0x598ec6=_0x598ec6-0x0;var _0x54de2d=_0xbf81[_0x598ec6];return _0x54de2d;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0x1bf8('0x0'));var jsonpatch=require(_0x1bf8('0x1'));var rp=require(_0x1bf8('0x2'));var moment=require(_0x1bf8('0x3'));var BPromise=require(_0x1bf8('0x4'));var Mustache=require(_0x1bf8('0x5'));var util=require(_0x1bf8('0x6'));var path=require(_0x1bf8('0x7'));var sox=require(_0x1bf8('0x8'));var csv=require(_0x1bf8('0x9'));var ejs=require(_0x1bf8('0xa'));var fs=require('fs');var fs_extra=require(_0x1bf8('0xb'));var _=require(_0x1bf8('0xc'));var squel=require(_0x1bf8('0xd'));var crypto=require(_0x1bf8('0xe'));var jsforce=require(_0x1bf8('0xf'));var deskjs=require(_0x1bf8('0x10'));var toCsv=require(_0x1bf8('0x9'));var querystring=require(_0x1bf8('0x11'));var Papa=require(_0x1bf8('0x12'));var Redis=require(_0x1bf8('0x13'));var authService=require(_0x1bf8('0x14'));var qs=require(_0x1bf8('0x15'));var as=require(_0x1bf8('0x16'));var hardwareService=require(_0x1bf8('0x17'));var logger=require(_0x1bf8('0x18'))(_0x1bf8('0x19'));var utils=require(_0x1bf8('0x1a'));var config=require(_0x1bf8('0x1b'));var licenseUtil=require(_0x1bf8('0x1c'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x383e26,_0x350c6a){_0x350c6a=_0x350c6a||0xcc;return function(_0x2dd9b7){if(_0x2dd9b7){return _0x383e26[_0x1bf8('0x1d')](_0x350c6a);}return _0x383e26[_0x1bf8('0x1e')](_0x350c6a)['end']();};}function respondWithResult(_0x5a52c6,_0x1eba24){_0x1eba24=_0x1eba24||0xc8;return function(_0x5f324f){if(_0x5f324f){return _0x5a52c6[_0x1bf8('0x1e')](_0x1eba24)[_0x1bf8('0x1f')](_0x5f324f);}};}function respondWithFilteredResult(_0x217ff5,_0x3ab3e8){return function(_0x208a66){if(_0x208a66){var _0x208fd5=typeof _0x3ab3e8['offset']===_0x1bf8('0x20')&&typeof _0x3ab3e8[_0x1bf8('0x21')]===_0x1bf8('0x20');var _0x5505bb=_0x208a66['count'];var _0x554355=_0x208fd5?0x0:_0x3ab3e8['offset'];var _0x46d294=_0x208fd5?_0x208a66[_0x1bf8('0x22')]:_0x3ab3e8[_0x1bf8('0x23')]+_0x3ab3e8[_0x1bf8('0x21')];var _0x2b3069;if(_0x46d294>=_0x5505bb){_0x46d294=_0x5505bb;_0x2b3069=0xc8;}else{_0x2b3069=0xce;}_0x217ff5['status'](_0x2b3069);return _0x217ff5['set'](_0x1bf8('0x24'),_0x554355+'-'+_0x46d294+'/'+_0x5505bb)[_0x1bf8('0x1f')](_0x208a66);}return null;};}function patchUpdates(_0x277c9a){return function(_0x1c9087){try{jsonpatch[_0x1bf8('0x25')](_0x1c9087,_0x277c9a,!![]);}catch(_0x917354){return BPromise['reject'](_0x917354);}return _0x1c9087[_0x1bf8('0x26')]();};}function saveUpdates(_0x18a3f9,_0x1322ae){return function(_0x10de24){if(_0x10de24){return _0x10de24['update'](_0x18a3f9)[_0x1bf8('0x27')](function(_0x5465de){return _0x5465de;});}return null;};}function removeEntity(_0x2febd4,_0x188073){return function(_0xd64e93){if(_0xd64e93){return _0xd64e93[_0x1bf8('0x28')]()['then'](function(){var _0x454559=_0xd64e93[_0x1bf8('0x29')]({'plain':!![]});var _0x3b30cd=_0x1bf8('0x2a');return db[_0x1bf8('0x2b')][_0x1bf8('0x28')]({'where':{'type':_0x3b30cd,'resourceId':_0x454559['id']}})[_0x1bf8('0x27')](function(){return _0xd64e93;});})[_0x1bf8('0x27')](function(){_0x2febd4[_0x1bf8('0x1e')](0xcc)[_0x1bf8('0x2c')]();});}};}function handleEntityNotFound(_0x33d3b8,_0x3db9ef){return function(_0x8a1b4e){if(!_0x8a1b4e){_0x33d3b8['sendStatus'](0x194);}return _0x8a1b4e;};}function handleError(_0x3adbb3,_0x2fd1da){_0x2fd1da=_0x2fd1da||0x1f4;return function(_0x32746a){logger[_0x1bf8('0x2d')](_0x32746a[_0x1bf8('0x2e')]);if(_0x32746a[_0x1bf8('0x2f')]){delete _0x32746a[_0x1bf8('0x2f')];}_0x3adbb3['status'](_0x2fd1da)['send'](_0x32746a);};}exports[_0x1bf8('0x30')]=function(_0x52150c,_0x3117b8){var _0x282f66={},_0x927a88={},_0x21a8eb={'count':0x0,'rows':[]};var _0x510240=_[_0x1bf8('0x31')](db[_0x1bf8('0x32')]['rawAttributes'],function(_0x4c77be){return{'name':_0x4c77be[_0x1bf8('0x33')],'type':_0x4c77be[_0x1bf8('0x34')][_0x1bf8('0x35')]};});_0x927a88[_0x1bf8('0x36')]=_['map'](_0x510240,'name');_0x927a88['query']=_[_0x1bf8('0x37')](_0x52150c['query']);_0x927a88[_0x1bf8('0x38')]=_[_0x1bf8('0x39')](_0x927a88[_0x1bf8('0x36')],_0x927a88['query']);_0x282f66[_0x1bf8('0x3a')]=_[_0x1bf8('0x39')](_0x927a88[_0x1bf8('0x36')],qs['fields'](_0x52150c[_0x1bf8('0x3b')][_0x1bf8('0x3c')]));_0x282f66[_0x1bf8('0x3a')]=_0x282f66[_0x1bf8('0x3a')]['length']?_0x282f66['attributes']:_0x927a88[_0x1bf8('0x36')];if(!_0x52150c['query'][_0x1bf8('0x3d')](_0x1bf8('0x3e'))){_0x282f66['limit']=qs[_0x1bf8('0x21')](_0x52150c[_0x1bf8('0x3b')][_0x1bf8('0x21')]);_0x282f66[_0x1bf8('0x23')]=qs[_0x1bf8('0x23')](_0x52150c[_0x1bf8('0x3b')][_0x1bf8('0x23')]);}_0x282f66[_0x1bf8('0x3f')]=qs[_0x1bf8('0x40')](_0x52150c['query']['sort']);_0x282f66[_0x1bf8('0x41')]=qs['filters'](_[_0x1bf8('0x42')](_0x52150c[_0x1bf8('0x3b')],_0x927a88[_0x1bf8('0x38')]),_0x510240);if(_0x52150c['query']['filter']){_0x282f66[_0x1bf8('0x41')]=_[_0x1bf8('0x43')](_0x282f66['where'],{'$or':_[_0x1bf8('0x31')](_0x510240,function(_0x117b75){if(_0x117b75[_0x1bf8('0x34')]!==_0x1bf8('0x44')){var _0x33a1fc={};_0x33a1fc[_0x117b75['name']]={'$like':'%'+_0x52150c['query']['filter']+'%'};return _0x33a1fc;}})});}_0x282f66=_[_0x1bf8('0x43')]({},_0x282f66,_0x52150c[_0x1bf8('0x45')]);var _0x1bcb5d={'where':_0x282f66[_0x1bf8('0x41')]};return db['Sound'][_0x1bf8('0x22')](_0x1bcb5d)[_0x1bf8('0x27')](function(_0x5c2494){_0x21a8eb[_0x1bf8('0x22')]=_0x5c2494;if(_0x52150c[_0x1bf8('0x3b')][_0x1bf8('0x46')]){_0x282f66[_0x1bf8('0x47')]=[{'all':!![]}];}return db[_0x1bf8('0x32')][_0x1bf8('0x48')](_0x282f66);})[_0x1bf8('0x27')](function(_0xa37ef){_0x21a8eb[_0x1bf8('0x49')]=_0xa37ef;return _0x21a8eb;})[_0x1bf8('0x27')](respondWithFilteredResult(_0x3117b8,_0x282f66))[_0x1bf8('0x4a')](handleError(_0x3117b8,null));};exports[_0x1bf8('0x4b')]=function(_0x5e744e,_0x505250){var _0x19bdaf={'raw':!![],'where':{'id':_0x5e744e[_0x1bf8('0x4c')]['id']}},_0x475018={};_0x475018[_0x1bf8('0x36')]=_['keys'](db['Sound'][_0x1bf8('0x4d')]);_0x475018[_0x1bf8('0x3b')]=_[_0x1bf8('0x37')](_0x5e744e[_0x1bf8('0x3b')]);_0x475018[_0x1bf8('0x38')]=_[_0x1bf8('0x39')](_0x475018['model'],_0x475018[_0x1bf8('0x3b')]);_0x19bdaf[_0x1bf8('0x3a')]=_[_0x1bf8('0x39')](_0x475018[_0x1bf8('0x36')],qs[_0x1bf8('0x3c')](_0x5e744e[_0x1bf8('0x3b')][_0x1bf8('0x3c')]));_0x19bdaf[_0x1bf8('0x3a')]=_0x19bdaf[_0x1bf8('0x3a')]['length']?_0x19bdaf[_0x1bf8('0x3a')]:_0x475018[_0x1bf8('0x36')];if(_0x5e744e['query'][_0x1bf8('0x46')]){_0x19bdaf[_0x1bf8('0x47')]=[{'all':!![]}];}_0x19bdaf=_['merge']({},_0x19bdaf,_0x5e744e[_0x1bf8('0x45')]);return db[_0x1bf8('0x32')][_0x1bf8('0x4e')](_0x19bdaf)[_0x1bf8('0x27')](handleEntityNotFound(_0x505250,null))[_0x1bf8('0x27')](respondWithResult(_0x505250,null))[_0x1bf8('0x4a')](handleError(_0x505250,null));};exports[_0x1bf8('0x4f')]=function(_0x1146e1,_0x1c1e49,_0x47bfa4){return db[_0x1bf8('0x32')][_0x1bf8('0x4e')]({'where':{'id':_0x1146e1[_0x1bf8('0x4c')]['id']},'attributes':[_0x1bf8('0x2f'),'save_name',_0x1bf8('0x50')],'raw':!![]})[_0x1bf8('0x27')](handleEntityNotFound(_0x1c1e49,null))['then'](function(_0x262c11){if(_0x262c11){if(!fs['existsSync'](path[_0x1bf8('0x51')](config['root'],_0x1bf8('0x52'),_0x262c11[_0x1bf8('0x53')]+'.'+_0x262c11[_0x1bf8('0x50')]))){throw new db['Sequelize'][(_0x1bf8('0x54'))](_0x1bf8('0x55'));}return _0x1c1e49[_0x1bf8('0x4f')](path['join'](config[_0x1bf8('0x56')],'server/files/sounds/converted',util[_0x1bf8('0x57')](_0x1bf8('0x58'),_0x262c11[_0x1bf8('0x53')],_0x262c11[_0x1bf8('0x50')])),util[_0x1bf8('0x57')](_0x1bf8('0x58'),_0x262c11[_0x1bf8('0x2f')],_0x262c11[_0x1bf8('0x50')]));}return null;})['catch'](handleError(_0x1c1e49,null));};exports[_0x1bf8('0x59')]=function(_0xaea036,_0xbdac8b,_0x58164d){var _0x9f393={'name':path['basename'](_0xaea036[_0x1bf8('0x5a')][_0x1bf8('0x5b')],path['extname'](_0xaea036[_0x1bf8('0x5a')][_0x1bf8('0x5b')])),'save_name':path[_0x1bf8('0x5c')](_0xaea036[_0x1bf8('0x5a')][_0x1bf8('0x5d')],path[_0x1bf8('0x5e')](_0xaea036[_0x1bf8('0x5a')]['filename'])),'original_format':path[_0x1bf8('0x5e')](_0xaea036['file'][_0x1bf8('0x5b')])[_0x1bf8('0x5f')](0x1),'converted_format':_0x1bf8('0x60')};var _0x1f41f5=path[_0x1bf8('0x51')](config[_0x1bf8('0x56')],_0x1bf8('0x61'),_0xaea036[_0x1bf8('0x5a')][_0x1bf8('0x5d')]);var _0x9eaa3f=path[_0x1bf8('0x51')](config[_0x1bf8('0x56')],_0x1bf8('0x52'),util[_0x1bf8('0x57')](_0x1bf8('0x58'),path[_0x1bf8('0x5c')](_0xaea036[_0x1bf8('0x5a')]['filename'],path[_0x1bf8('0x5e')](_0xaea036['file']['filename'])),_0x9f393['converted_format']));logger['info'](_0x1bf8('0x62'),_0x1f41f5);logger[_0x1bf8('0x63')](_0x1bf8('0x64'),_0x9eaa3f);try{fs[_0x1bf8('0x65')](_0x1f41f5,parseInt(_0x1bf8('0x66'),0x8));var _0x228264=sox['transcode'](_0x1f41f5,_0x9eaa3f,{'sampleRate':0x1f40,'format':_0x1bf8('0x60'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x228264['on'](_0x1bf8('0x2d'),function(_0x52457f){fs[_0x1bf8('0x67')](_0x1f41f5);_0xbdac8b[_0x1bf8('0x1e')](0x1f4)[_0x1bf8('0x68')](_0x52457f);});_0x228264['on']('src',function(_0x20ef46){_0x9f393[_0x1bf8('0x69')]=isNaN(_0x20ef46['duration'])?null:_0x20ef46[_0x1bf8('0x6a')]*0x3e8;_0x9f393[_0x1bf8('0x6b')]=isNaN(_0x20ef46[_0x1bf8('0x6c')])?null:_0x20ef46[_0x1bf8('0x6c')];_0x9f393[_0x1bf8('0x6d')]=isNaN(_0x20ef46['channelCount'])?null:_0x20ef46[_0x1bf8('0x6e')];_0x9f393[_0x1bf8('0x6f')]=isNaN(_0x20ef46['bitRate'])?null:_0x20ef46[_0x1bf8('0x70')];_0x9f393[_0x1bf8('0x71')]=isNaN(_0x20ef46[_0x1bf8('0x72')])?null:_0x20ef46['sampleRate'];});_0x228264['on'](_0x1bf8('0x73'),function(_0x14efef){_0x9f393[_0x1bf8('0x74')]=isNaN(_0x14efef[_0x1bf8('0x6a')])?null:_0x14efef[_0x1bf8('0x6a')]*0x3e8;_0x9f393[_0x1bf8('0x75')]=isNaN(_0x14efef[_0x1bf8('0x6c')])?null:_0x14efef['sampleCount'];_0x9f393[_0x1bf8('0x76')]=isNaN(_0x14efef[_0x1bf8('0x6e')])?null:_0x14efef[_0x1bf8('0x6e')];_0x9f393[_0x1bf8('0x77')]=isNaN(_0x14efef[_0x1bf8('0x70')])?null:_0x14efef['bitRate'];_0x9f393[_0x1bf8('0x78')]=isNaN(_0x14efef['sampleRate'])?null:_0x14efef[_0x1bf8('0x72')];});_0x228264['on'](_0x1bf8('0x2c'),function(){fs[_0x1bf8('0x65')](_0x9eaa3f,parseInt(_0x1bf8('0x66'),0x8));return db[_0x1bf8('0x32')][_0x1bf8('0x59')](_0x9f393)[_0x1bf8('0x27')](function(_0x2dde95){var _0x34a3ea={'role':_0xaea036[_0x1bf8('0x79')]['role'],'userProfileId':_0xaea036[_0x1bf8('0x79')][_0x1bf8('0x7a')]};if(!_0x34a3ea)throw new Error(_0x1bf8('0x7b'));if(_0x34a3ea[_0x1bf8('0x7c')]===_0x1bf8('0x7d')){var _0x4311c6=_0x2dde95['get']({'plain':!![]});return db[_0x1bf8('0x7e')]['find']({'where':{'name':'Sounds','userProfileId':_0x34a3ea[_0x1bf8('0x7a')]},'raw':!![]})['then'](function(_0x1fb62e){if(_0x1fb62e&&_0x1fb62e[_0x1bf8('0x7f')]===0x0){return db[_0x1bf8('0x2b')]['create']({'name':_0x4311c6[_0x1bf8('0x2f')],'resourceId':_0x4311c6['id'],'type':_0x1fb62e[_0x1bf8('0x2f')],'sectionId':_0x1fb62e['id']},{})[_0x1bf8('0x27')](function(){return _0x2dde95;});}else{return _0x2dde95;}})[_0x1bf8('0x4a')](function(_0x246e15){logger[_0x1bf8('0x2d')](_0x1bf8('0x80'),_0x246e15);throw _0x246e15;});}return _0x2dde95;})[_0x1bf8('0x27')](respondWithResult(_0xbdac8b,null))[_0x1bf8('0x4a')](handleError(_0xbdac8b,null));});_0x228264[_0x1bf8('0x81')]();}catch(_0x149ed5){_0xbdac8b[_0x1bf8('0x1e')](0x1f4)[_0x1bf8('0x68')](_0x149ed5);}};exports['update']=function(_0x5742e,_0x5e379e,_0x2a4237){return db['Sound']['find']({'where':{'id':_0x5742e[_0x1bf8('0x4c')]['id']}})['then'](handleEntityNotFound(_0x5e379e,null))[_0x1bf8('0x27')](saveUpdates(_[_0x1bf8('0x42')](_0x5742e[_0x1bf8('0x79')],[_0x1bf8('0x2f'),_0x1bf8('0x82')]),null))['then'](respondWithResult(_0x5e379e,null))[_0x1bf8('0x4a')](handleError(_0x5e379e,null));};exports[_0x1bf8('0x83')]=function(_0x55e17a,_0x32e87a,_0x1a68b2){return db[_0x1bf8('0x32')][_0x1bf8('0x4e')]({'where':{'id':_0x55e17a[_0x1bf8('0x4c')]['id']}})[_0x1bf8('0x27')](function(_0x5e78fb){if(_0x5e78fb){return _0x5e78fb['destroy']();}})[_0x1bf8('0x27')](function(_0x3b562a){var _0x49a052=path[_0x1bf8('0x51')](config[_0x1bf8('0x56')],_0x1bf8('0x61'),util[_0x1bf8('0x57')]('%s.%s',_0x3b562a[_0x1bf8('0x53')],_0x3b562a[_0x1bf8('0x84')]));var _0x421a47=path[_0x1bf8('0x51')](config['root'],'server/files/sounds/converted',util[_0x1bf8('0x57')]('%s.%s',_0x3b562a[_0x1bf8('0x53')],_0x3b562a[_0x1bf8('0x50')]));fs[_0x1bf8('0x67')](_0x49a052);fs[_0x1bf8('0x67')](_0x421a47);return _0x3b562a;})[_0x1bf8('0x27')](function(_0x51a5c1){if(_0x51a5c1){return _0x32e87a[_0x1bf8('0x1e')](0xcc)['end']();}})[_0x1bf8('0x27')](handleEntityNotFound(_0x32e87a,null))[_0x1bf8('0x4a')](handleError(_0x32e87a,null));};
\ No newline at end of file
+var _0xf429=['../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','get','Sounds','UserProfileResource','error','stack','name','index','map','rawAttributes','fieldName','type','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','sort','where','pick','filter','options','Sound','includeAll','include','findAll','rows','show','params','keys','merge','find','download','save_name','converted_format','join','root','server/files/sounds/converted','ValidationError','Sound\x20not\x20found','format','%s.%s','catch','create','basename','originalname','file','filename','extname','substring','server/files/sounds/original','info','Sound\x20upload\x20destination:\x20%s','chmodSync','0777','transcode','send','duration','sampleCount','channelCount','original_bitRate','bitRate','original_sampleRate','sampleRate','dest','converted_duration','converted_sampleCount','converted_channelCount','converted_bitRate','body','userProfileId','user','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','start','description','delete','original_format','unlinkSync','eml-format','rimraf','zip-dir','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis'];(function(_0x2cc1ae,_0x2cb960){var _0x48df7d=function(_0x1fab1e){while(--_0x1fab1e){_0x2cc1ae['push'](_0x2cc1ae['shift']());}};_0x48df7d(++_0x2cb960);}(_0xf429,0xe7));var _0x9f42=function(_0x328ac9,_0x2f7225){_0x328ac9=_0x328ac9-0x0;var _0x2b3a0a=_0xf429[_0x328ac9];return _0x2b3a0a;};'use strict';var emlformat=require(_0x9f42('0x0'));var rimraf=require(_0x9f42('0x1'));var zipdir=require(_0x9f42('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x9f42('0x3'));var moment=require(_0x9f42('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x9f42('0x5'));var path=require(_0x9f42('0x6'));var sox=require(_0x9f42('0x7'));var csv=require(_0x9f42('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x9f42('0x9'));var _=require(_0x9f42('0xa'));var squel=require(_0x9f42('0xb'));var crypto=require(_0x9f42('0xc'));var jsforce=require(_0x9f42('0xd'));var deskjs=require(_0x9f42('0xe'));var toCsv=require(_0x9f42('0x8'));var querystring=require('querystring');var Papa=require(_0x9f42('0xf'));var Redis=require(_0x9f42('0x10'));var authService=require(_0x9f42('0x11'));var qs=require('../../components/parsers/qs');var as=require(_0x9f42('0x12'));var hardwareService=require(_0x9f42('0x13'));var logger=require(_0x9f42('0x14'))(_0x9f42('0x15'));var utils=require(_0x9f42('0x16'));var config=require(_0x9f42('0x17'));var licenseUtil=require(_0x9f42('0x18'));var db=require(_0x9f42('0x19'))['db'];function respondWithStatusCode(_0x12bd4f,_0x1bb4f8){_0x1bb4f8=_0x1bb4f8||0xcc;return function(_0x16ee39){if(_0x16ee39){return _0x12bd4f[_0x9f42('0x1a')](_0x1bb4f8);}return _0x12bd4f['status'](_0x1bb4f8)[_0x9f42('0x1b')]();};}function respondWithResult(_0x17ccc8,_0x405000){_0x405000=_0x405000||0xc8;return function(_0x457b3d){if(_0x457b3d){return _0x17ccc8[_0x9f42('0x1c')](_0x405000)[_0x9f42('0x1d')](_0x457b3d);}};}function respondWithFilteredResult(_0x23eb22,_0x2d9ab2){return function(_0x359128){if(_0x359128){var _0x969bb8=typeof _0x2d9ab2[_0x9f42('0x1e')]===_0x9f42('0x1f')&&typeof _0x2d9ab2[_0x9f42('0x20')]===_0x9f42('0x1f');var _0x1728e6=_0x359128[_0x9f42('0x21')];var _0x12156f=_0x969bb8?0x0:_0x2d9ab2[_0x9f42('0x1e')];var _0x5bae78=_0x969bb8?_0x359128[_0x9f42('0x21')]:_0x2d9ab2[_0x9f42('0x1e')]+_0x2d9ab2[_0x9f42('0x20')];var _0x266827;if(_0x5bae78>=_0x1728e6){_0x5bae78=_0x1728e6;_0x266827=0xc8;}else{_0x266827=0xce;}_0x23eb22[_0x9f42('0x1c')](_0x266827);return _0x23eb22['set'](_0x9f42('0x22'),_0x12156f+'-'+_0x5bae78+'/'+_0x1728e6)['json'](_0x359128);}return null;};}function patchUpdates(_0x18274e){return function(_0x20357a){try{jsonpatch[_0x9f42('0x23')](_0x20357a,_0x18274e,!![]);}catch(_0x250f63){return BPromise[_0x9f42('0x24')](_0x250f63);}return _0x20357a[_0x9f42('0x25')]();};}function saveUpdates(_0x2394e1,_0x272762){return function(_0x489280){if(_0x489280){return _0x489280[_0x9f42('0x26')](_0x2394e1)['then'](function(_0x535b5a){return _0x535b5a;});}return null;};}function removeEntity(_0x1ecadb,_0x45c9cd){return function(_0x87886f){if(_0x87886f){return _0x87886f[_0x9f42('0x27')]()[_0x9f42('0x28')](function(){var _0x544c85=_0x87886f[_0x9f42('0x29')]({'plain':!![]});var _0x896beb=_0x9f42('0x2a');return db[_0x9f42('0x2b')][_0x9f42('0x27')]({'where':{'type':_0x896beb,'resourceId':_0x544c85['id']}})[_0x9f42('0x28')](function(){return _0x87886f;});})['then'](function(){_0x1ecadb['status'](0xcc)[_0x9f42('0x1b')]();});}};}function handleEntityNotFound(_0x596db8,_0x271911){return function(_0x532c52){if(!_0x532c52){_0x596db8[_0x9f42('0x1a')](0x194);}return _0x532c52;};}function handleError(_0x1f045d,_0x2626ed){_0x2626ed=_0x2626ed||0x1f4;return function(_0x104637){logger[_0x9f42('0x2c')](_0x104637[_0x9f42('0x2d')]);if(_0x104637[_0x9f42('0x2e')]){delete _0x104637['name'];}_0x1f045d[_0x9f42('0x1c')](_0x2626ed)['send'](_0x104637);};}exports[_0x9f42('0x2f')]=function(_0x458604,_0x4ae18d){var _0x9948ef={},_0x157050={},_0x118ff6={'count':0x0,'rows':[]};var _0x9eb334=_[_0x9f42('0x30')](db['Sound'][_0x9f42('0x31')],function(_0x31aa88){return{'name':_0x31aa88[_0x9f42('0x32')],'type':_0x31aa88[_0x9f42('0x33')]['key']};});_0x157050[_0x9f42('0x34')]=_[_0x9f42('0x30')](_0x9eb334,'name');_0x157050[_0x9f42('0x35')]=_['keys'](_0x458604[_0x9f42('0x35')]);_0x157050[_0x9f42('0x36')]=_['intersection'](_0x157050[_0x9f42('0x34')],_0x157050[_0x9f42('0x35')]);_0x9948ef[_0x9f42('0x37')]=_[_0x9f42('0x38')](_0x157050[_0x9f42('0x34')],qs[_0x9f42('0x39')](_0x458604[_0x9f42('0x35')][_0x9f42('0x39')]));_0x9948ef[_0x9f42('0x37')]=_0x9948ef[_0x9f42('0x37')][_0x9f42('0x3a')]?_0x9948ef[_0x9f42('0x37')]:_0x157050['model'];if(!_0x458604[_0x9f42('0x35')][_0x9f42('0x3b')]('nolimit')){_0x9948ef[_0x9f42('0x20')]=qs[_0x9f42('0x20')](_0x458604[_0x9f42('0x35')][_0x9f42('0x20')]);_0x9948ef['offset']=qs['offset'](_0x458604[_0x9f42('0x35')]['offset']);}_0x9948ef[_0x9f42('0x3c')]=qs['sort'](_0x458604[_0x9f42('0x35')][_0x9f42('0x3d')]);_0x9948ef[_0x9f42('0x3e')]=qs[_0x9f42('0x36')](_[_0x9f42('0x3f')](_0x458604[_0x9f42('0x35')],_0x157050['filters']),_0x9eb334);if(_0x458604[_0x9f42('0x35')][_0x9f42('0x40')]){_0x9948ef[_0x9f42('0x3e')]=_['merge'](_0x9948ef['where'],{'$or':_[_0x9f42('0x30')](_0x9eb334,function(_0xd9a6f6){if(_0xd9a6f6['type']!=='VIRTUAL'){var _0xccae41={};_0xccae41[_0xd9a6f6[_0x9f42('0x2e')]]={'$like':'%'+_0x458604[_0x9f42('0x35')]['filter']+'%'};return _0xccae41;}})});}_0x9948ef=_['merge']({},_0x9948ef,_0x458604[_0x9f42('0x41')]);var _0xdd79c4={'where':_0x9948ef[_0x9f42('0x3e')]};return db[_0x9f42('0x42')][_0x9f42('0x21')](_0xdd79c4)[_0x9f42('0x28')](function(_0x79ff9){_0x118ff6['count']=_0x79ff9;if(_0x458604[_0x9f42('0x35')][_0x9f42('0x43')]){_0x9948ef[_0x9f42('0x44')]=[{'all':!![]}];}return db[_0x9f42('0x42')][_0x9f42('0x45')](_0x9948ef);})[_0x9f42('0x28')](function(_0x23285d){_0x118ff6[_0x9f42('0x46')]=_0x23285d;return _0x118ff6;})[_0x9f42('0x28')](respondWithFilteredResult(_0x4ae18d,_0x9948ef))['catch'](handleError(_0x4ae18d,null));};exports[_0x9f42('0x47')]=function(_0x5793df,_0x5735b4){var _0x4efa12={'raw':!![],'where':{'id':_0x5793df[_0x9f42('0x48')]['id']}},_0x5d660f={};_0x5d660f['model']=_[_0x9f42('0x49')](db[_0x9f42('0x42')][_0x9f42('0x31')]);_0x5d660f[_0x9f42('0x35')]=_['keys'](_0x5793df[_0x9f42('0x35')]);_0x5d660f[_0x9f42('0x36')]=_[_0x9f42('0x38')](_0x5d660f[_0x9f42('0x34')],_0x5d660f[_0x9f42('0x35')]);_0x4efa12[_0x9f42('0x37')]=_[_0x9f42('0x38')](_0x5d660f['model'],qs[_0x9f42('0x39')](_0x5793df[_0x9f42('0x35')][_0x9f42('0x39')]));_0x4efa12[_0x9f42('0x37')]=_0x4efa12[_0x9f42('0x37')][_0x9f42('0x3a')]?_0x4efa12[_0x9f42('0x37')]:_0x5d660f['model'];if(_0x5793df[_0x9f42('0x35')][_0x9f42('0x43')]){_0x4efa12['include']=[{'all':!![]}];}_0x4efa12=_[_0x9f42('0x4a')]({},_0x4efa12,_0x5793df['options']);return db[_0x9f42('0x42')][_0x9f42('0x4b')](_0x4efa12)['then'](handleEntityNotFound(_0x5735b4,null))[_0x9f42('0x28')](respondWithResult(_0x5735b4,null))['catch'](handleError(_0x5735b4,null));};exports[_0x9f42('0x4c')]=function(_0x22d0f8,_0x2f6605,_0x3f0a30){return db[_0x9f42('0x42')][_0x9f42('0x4b')]({'where':{'id':_0x22d0f8[_0x9f42('0x48')]['id']},'attributes':[_0x9f42('0x2e'),_0x9f42('0x4d'),_0x9f42('0x4e')],'raw':!![]})[_0x9f42('0x28')](handleEntityNotFound(_0x2f6605,null))['then'](function(_0xbe611){if(_0xbe611){if(!fs['existsSync'](path[_0x9f42('0x4f')](config[_0x9f42('0x50')],_0x9f42('0x51'),_0xbe611[_0x9f42('0x4d')]+'.'+_0xbe611[_0x9f42('0x4e')]))){throw new db['Sequelize'][(_0x9f42('0x52'))](_0x9f42('0x53'));}return _0x2f6605[_0x9f42('0x4c')](path[_0x9f42('0x4f')](config['root'],_0x9f42('0x51'),util[_0x9f42('0x54')]('%s.%s',_0xbe611['save_name'],_0xbe611[_0x9f42('0x4e')])),util[_0x9f42('0x54')](_0x9f42('0x55'),_0xbe611['name'],_0xbe611['converted_format']));}return null;})[_0x9f42('0x56')](handleError(_0x2f6605,null));};exports[_0x9f42('0x57')]=function(_0x222df0,_0x5ddfa3,_0x444aed){var _0x3da3c1={'name':path[_0x9f42('0x58')](_0x222df0['file'][_0x9f42('0x59')],path['extname'](_0x222df0[_0x9f42('0x5a')][_0x9f42('0x59')])),'save_name':path['basename'](_0x222df0[_0x9f42('0x5a')][_0x9f42('0x5b')],path['extname'](_0x222df0['file'][_0x9f42('0x5b')])),'original_format':path[_0x9f42('0x5c')](_0x222df0[_0x9f42('0x5a')][_0x9f42('0x59')])[_0x9f42('0x5d')](0x1),'converted_format':'wav'};var _0x3aab49=path[_0x9f42('0x4f')](config['root'],_0x9f42('0x5e'),_0x222df0['file'][_0x9f42('0x5b')]);var _0x17f133=path[_0x9f42('0x4f')](config[_0x9f42('0x50')],'server/files/sounds/converted',util[_0x9f42('0x54')]('%s.%s',path[_0x9f42('0x58')](_0x222df0[_0x9f42('0x5a')][_0x9f42('0x5b')],path['extname'](_0x222df0[_0x9f42('0x5a')][_0x9f42('0x5b')])),_0x3da3c1[_0x9f42('0x4e')]));logger[_0x9f42('0x5f')]('Sound\x20upload\x20filepath:\x20%s',_0x3aab49);logger[_0x9f42('0x5f')](_0x9f42('0x60'),_0x17f133);try{fs[_0x9f42('0x61')](_0x3aab49,parseInt(_0x9f42('0x62'),0x8));var _0x3b4015=sox[_0x9f42('0x63')](_0x3aab49,_0x17f133,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3b4015['on'](_0x9f42('0x2c'),function(_0x1102a4){fs['unlinkSync'](_0x3aab49);_0x5ddfa3[_0x9f42('0x1c')](0x1f4)[_0x9f42('0x64')](_0x1102a4);});_0x3b4015['on']('src',function(_0x5188a1){_0x3da3c1['original_duration']=isNaN(_0x5188a1['duration'])?null:_0x5188a1[_0x9f42('0x65')]*0x3e8;_0x3da3c1['original_sampleCount']=isNaN(_0x5188a1[_0x9f42('0x66')])?null:_0x5188a1[_0x9f42('0x66')];_0x3da3c1['original_channelCount']=isNaN(_0x5188a1[_0x9f42('0x67')])?null:_0x5188a1['channelCount'];_0x3da3c1[_0x9f42('0x68')]=isNaN(_0x5188a1[_0x9f42('0x69')])?null:_0x5188a1[_0x9f42('0x69')];_0x3da3c1[_0x9f42('0x6a')]=isNaN(_0x5188a1[_0x9f42('0x6b')])?null:_0x5188a1['sampleRate'];});_0x3b4015['on'](_0x9f42('0x6c'),function(_0x524ea8){_0x3da3c1[_0x9f42('0x6d')]=isNaN(_0x524ea8[_0x9f42('0x65')])?null:_0x524ea8['duration']*0x3e8;_0x3da3c1[_0x9f42('0x6e')]=isNaN(_0x524ea8[_0x9f42('0x66')])?null:_0x524ea8[_0x9f42('0x66')];_0x3da3c1[_0x9f42('0x6f')]=isNaN(_0x524ea8[_0x9f42('0x67')])?null:_0x524ea8[_0x9f42('0x67')];_0x3da3c1[_0x9f42('0x70')]=isNaN(_0x524ea8[_0x9f42('0x69')])?null:_0x524ea8[_0x9f42('0x69')];_0x3da3c1['converted_sampleRate']=isNaN(_0x524ea8[_0x9f42('0x6b')])?null:_0x524ea8[_0x9f42('0x6b')];});_0x3b4015['on']('end',function(){fs[_0x9f42('0x61')](_0x17f133,parseInt(_0x9f42('0x62'),0x8));return db[_0x9f42('0x42')][_0x9f42('0x57')](_0x3da3c1)['then'](function(_0x240108){var _0x1d3a97={'role':_0x222df0['body']['role'],'userProfileId':_0x222df0[_0x9f42('0x71')][_0x9f42('0x72')]};if(!_0x1d3a97)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1d3a97['role']===_0x9f42('0x73')){var _0x2455eb=_0x240108[_0x9f42('0x29')]({'plain':!![]});return db[_0x9f42('0x74')]['find']({'where':{'name':_0x9f42('0x2a'),'userProfileId':_0x1d3a97[_0x9f42('0x72')]},'raw':!![]})[_0x9f42('0x28')](function(_0x38ff4d){if(_0x38ff4d&&_0x38ff4d[_0x9f42('0x75')]===0x0){return db['UserProfileResource'][_0x9f42('0x57')]({'name':_0x2455eb['name'],'resourceId':_0x2455eb['id'],'type':_0x38ff4d['name'],'sectionId':_0x38ff4d['id']},{})[_0x9f42('0x28')](function(){return _0x240108;});}else{return _0x240108;}})['catch'](function(_0x3fee19){logger[_0x9f42('0x2c')](_0x9f42('0x76'),_0x3fee19);throw _0x3fee19;});}return _0x240108;})[_0x9f42('0x28')](respondWithResult(_0x5ddfa3,null))[_0x9f42('0x56')](handleError(_0x5ddfa3,null));});_0x3b4015[_0x9f42('0x77')]();}catch(_0x295186){_0x5ddfa3[_0x9f42('0x1c')](0x1f4)[_0x9f42('0x64')](_0x295186);}};exports[_0x9f42('0x26')]=function(_0xa7f12f,_0x303265,_0x52c9ee){return db[_0x9f42('0x42')][_0x9f42('0x4b')]({'where':{'id':_0xa7f12f['params']['id']}})[_0x9f42('0x28')](handleEntityNotFound(_0x303265,null))[_0x9f42('0x28')](saveUpdates(_[_0x9f42('0x3f')](_0xa7f12f[_0x9f42('0x71')],['name',_0x9f42('0x78')]),null))[_0x9f42('0x28')](respondWithResult(_0x303265,null))['catch'](handleError(_0x303265,null));};exports[_0x9f42('0x79')]=function(_0xf85f5,_0x5bb0f,_0x31afb4){return db[_0x9f42('0x42')]['find']({'where':{'id':_0xf85f5[_0x9f42('0x48')]['id']}})[_0x9f42('0x28')](function(_0x1043d3){if(_0x1043d3){return _0x1043d3[_0x9f42('0x27')]();}})[_0x9f42('0x28')](function(_0x485ceb){var _0x3347e1=path['join'](config[_0x9f42('0x50')],_0x9f42('0x5e'),util[_0x9f42('0x54')](_0x9f42('0x55'),_0x485ceb[_0x9f42('0x4d')],_0x485ceb[_0x9f42('0x7a')]));var _0x43618e=path[_0x9f42('0x4f')](config['root'],_0x9f42('0x51'),util[_0x9f42('0x54')](_0x9f42('0x55'),_0x485ceb[_0x9f42('0x4d')],_0x485ceb[_0x9f42('0x4e')]));fs['unlinkSync'](_0x3347e1);fs[_0x9f42('0x7b')](_0x43618e);return _0x485ceb;})[_0x9f42('0x28')](function(_0x2bb35a){if(_0x2bb35a){return _0x5bb0f[_0x9f42('0x1c')](0xcc)[_0x9f42('0x1b')]();}})['then'](handleEntityNotFound(_0x5bb0f,null))[_0x9f42('0x56')](handleError(_0x5bb0f,null));};
\ No newline at end of file
index f4ed1d3..685d153 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4a3=['lodash','util','../../config/logger','moment','request-promise','path','rimraf','../../config/environment','./sound.attributes','define','Sound','tools_sounds'];(function(_0x4ec13d,_0x358a8f){var _0x3c3fa7=function(_0x2615f6){while(--_0x2615f6){_0x4ec13d['push'](_0x4ec13d['shift']());}};_0x3c3fa7(++_0x358a8f);}(_0xe4a3,0x150));var _0x3e4a=function(_0x5a8981,_0x12fe84){_0x5a8981=_0x5a8981-0x0;var _0x4a3592=_0xe4a3[_0x5a8981];return _0x4a3592;};'use strict';var _=require(_0x3e4a('0x0'));var util=require(_0x3e4a('0x1'));var logger=require(_0x3e4a('0x2'))('api');var moment=require(_0x3e4a('0x3'));var BPromise=require('bluebird');var rp=require(_0x3e4a('0x4'));var fs=require('fs');var path=require(_0x3e4a('0x5'));var rimraf=require(_0x3e4a('0x6'));var config=require(_0x3e4a('0x7'));var attributes=require(_0x3e4a('0x8'));module['exports']=function(_0x5b03d6,_0x727e5d){return _0x5b03d6[_0x3e4a('0x9')](_0x3e4a('0xa'),attributes,{'tableName':_0x3e4a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0269=['request-promise','path','../../config/environment','./sound.attributes','exports','Sound','tools_sounds','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x37c051,_0x248f5c){var _0x237220=function(_0x29d629){while(--_0x29d629){_0x37c051['push'](_0x37c051['shift']());}};_0x237220(++_0x248f5c);}(_0x0269,0xd7));var _0x9026=function(_0x5a0045,_0x319482){_0x5a0045=_0x5a0045-0x0;var _0x1a558b=_0x0269[_0x5a0045];return _0x1a558b;};'use strict';var _=require(_0x9026('0x0'));var util=require(_0x9026('0x1'));var logger=require(_0x9026('0x2'))(_0x9026('0x3'));var moment=require(_0x9026('0x4'));var BPromise=require(_0x9026('0x5'));var rp=require(_0x9026('0x6'));var fs=require('fs');var path=require(_0x9026('0x7'));var rimraf=require('rimraf');var config=require(_0x9026('0x8'));var attributes=require(_0x9026('0x9'));module[_0x9026('0xa')]=function(_0x3312a9,_0x3f769c){return _0x3312a9['define'](_0x9026('0xb'),attributes,{'tableName':_0x9026('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 71a16cf..37c6bc6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf367=['options','raw','where','include','map','model','attributes','debug','util','moment','bluebird','ioredis','../../config/utils','../../config/environment','client','then','info','Sound,\x20%s,\x20%s','request\x20sent','Sound,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','ShowSound','Sound','find'];(function(_0x37d2c6,_0x5d68e3){var _0xa2cc99=function(_0x417c54){while(--_0x417c54){_0x37d2c6['push'](_0x37d2c6['shift']());}};_0xa2cc99(++_0x5d68e3);}(_0xf367,0x120));var _0x7f36=function(_0x522d0e,_0x1be748){_0x522d0e=_0x522d0e-0x0;var _0x5c0e1e=_0xf367[_0x522d0e];return _0x5c0e1e;};'use strict';var _=require('lodash');var util=require(_0x7f36('0x0'));var moment=require(_0x7f36('0x1'));var BPromise=require(_0x7f36('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7f36('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x7f36('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x7f36('0x5'));var jayson=require('jayson/promise');var client=jayson[_0x7f36('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0xe337a9,_0x517fe4,_0x10a879){return new BPromise(function(_0x38ee33,_0x38c6e0){return client['request'](_0xe337a9,_0x10a879)[_0x7f36('0x7')](function(_0x4fa84b){logger[_0x7f36('0x8')](_0x7f36('0x9'),_0x517fe4,_0x7f36('0xa'));logger['debug'](_0x7f36('0xb'),_0x517fe4,_0x7f36('0xa'),JSON[_0x7f36('0xc')](_0x4fa84b));if(_0x4fa84b['error']){if(_0x4fa84b[_0x7f36('0xd')][_0x7f36('0xe')]===0x1f4){logger[_0x7f36('0xd')](_0x7f36('0x9'),_0x517fe4,_0x4fa84b['error']['message']);return _0x38c6e0(_0x4fa84b['error']['message']);}logger[_0x7f36('0xd')]('Sound,\x20%s,\x20%s',_0x517fe4,_0x4fa84b[_0x7f36('0xd')][_0x7f36('0xf')]);return _0x38ee33(_0x4fa84b[_0x7f36('0xd')][_0x7f36('0xf')]);}else{logger['info'](_0x7f36('0x9'),_0x517fe4,_0x7f36('0xa'));_0x38ee33(_0x4fa84b['result'][_0x7f36('0xf')]);}})[_0x7f36('0x10')](function(_0x38a6ce){logger[_0x7f36('0xd')](_0x7f36('0x9'),_0x517fe4,_0x38a6ce);_0x38c6e0(_0x38a6ce);});});}exports[_0x7f36('0x11')]=function(_0x1e6371){var _0x2a48a8=this;return new Promise(function(_0x5aca2a,_0x1100fb){return db[_0x7f36('0x12')][_0x7f36('0x13')]({'raw':_0x1e6371[_0x7f36('0x14')]?_0x1e6371[_0x7f36('0x14')][_0x7f36('0x15')]===undefined?!![]:![]:!![],'where':_0x1e6371[_0x7f36('0x14')]?_0x1e6371[_0x7f36('0x14')][_0x7f36('0x16')]||null:null,'attributes':_0x1e6371[_0x7f36('0x14')]?_0x1e6371[_0x7f36('0x14')]['attributes']||null:null,'include':_0x1e6371['options']?_0x1e6371['options'][_0x7f36('0x17')]?_[_0x7f36('0x18')](_0x1e6371[_0x7f36('0x14')][_0x7f36('0x17')],function(_0x3cde7f){return{'model':db[_0x3cde7f[_0x7f36('0x19')]],'as':_0x3cde7f['as'],'attributes':_0x3cde7f[_0x7f36('0x1a')],'include':_0x3cde7f[_0x7f36('0x17')]?_[_0x7f36('0x18')](_0x3cde7f[_0x7f36('0x17')],function(_0x3d2414){return{'model':db[_0x3d2414[_0x7f36('0x19')]],'as':_0x3d2414['as'],'attributes':_0x3d2414[_0x7f36('0x1a')],'include':_0x3d2414[_0x7f36('0x17')]?_[_0x7f36('0x18')](_0x3d2414[_0x7f36('0x17')],function(_0x3f4570){return{'model':db[_0x3f4570[_0x7f36('0x19')]],'as':_0x3f4570['as'],'attributes':_0x3f4570['attributes']};}):[]};}):[]};}):[]:[]})[_0x7f36('0x7')](function(_0x47d7fe){logger['info']('ShowSound',_0x1e6371);logger[_0x7f36('0x1b')](_0x7f36('0x11'),_0x1e6371,JSON['stringify'](_0x47d7fe));_0x5aca2a(_0x47d7fe);})[_0x7f36('0x10')](function(_0x2a13d0){logger[_0x7f36('0xd')](_0x7f36('0x11'),_0x2a13d0['message'],_0x1e6371);_0x1100fb(_0x2a48a8[_0x7f36('0xd')](0x1f4,_0x2a13d0[_0x7f36('0xf')]));});});};
\ No newline at end of file
+var _0xefe2=['http','request','then','info','Sound,\x20%s,\x20%s','request\x20sent','debug','Sound,\x20%s,\x20%s,\x20%s','error','message','catch','ShowSound','Sound','find','options','raw','where','include','model','attributes','map','stringify','lodash','util','moment','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client'];(function(_0x55afe3,_0x3d6547){var _0x133495=function(_0x2a7ec3){while(--_0x2a7ec3){_0x55afe3['push'](_0x55afe3['shift']());}};_0x133495(++_0x3d6547);}(_0xefe2,0x13f));var _0x2efe=function(_0x5036ca,_0x45b577){_0x5036ca=_0x5036ca-0x0;var _0x37c7c2=_0xefe2[_0x5036ca];return _0x37c7c2;};'use strict';var _=require(_0x2efe('0x0'));var util=require(_0x2efe('0x1'));var moment=require(_0x2efe('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2efe('0x3'));var db=require(_0x2efe('0x4'))['db'];var utils=require(_0x2efe('0x5'));var logger=require(_0x2efe('0x6'))(_0x2efe('0x7'));var config=require(_0x2efe('0x8'));var jayson=require(_0x2efe('0x9'));var client=jayson[_0x2efe('0xa')][_0x2efe('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x43d039,_0x1f21ef,_0xe5848b){return new BPromise(function(_0x29c177,_0x134257){return client[_0x2efe('0xc')](_0x43d039,_0xe5848b)[_0x2efe('0xd')](function(_0x4f4848){logger[_0x2efe('0xe')](_0x2efe('0xf'),_0x1f21ef,_0x2efe('0x10'));logger[_0x2efe('0x11')](_0x2efe('0x12'),_0x1f21ef,_0x2efe('0x10'),JSON['stringify'](_0x4f4848));if(_0x4f4848[_0x2efe('0x13')]){if(_0x4f4848[_0x2efe('0x13')]['code']===0x1f4){logger[_0x2efe('0x13')](_0x2efe('0xf'),_0x1f21ef,_0x4f4848[_0x2efe('0x13')][_0x2efe('0x14')]);return _0x134257(_0x4f4848[_0x2efe('0x13')]['message']);}logger[_0x2efe('0x13')]('Sound,\x20%s,\x20%s',_0x1f21ef,_0x4f4848['error'][_0x2efe('0x14')]);return _0x29c177(_0x4f4848[_0x2efe('0x13')]['message']);}else{logger['info'](_0x2efe('0xf'),_0x1f21ef,_0x2efe('0x10'));_0x29c177(_0x4f4848['result'][_0x2efe('0x14')]);}})[_0x2efe('0x15')](function(_0x444aa5){logger[_0x2efe('0x13')](_0x2efe('0xf'),_0x1f21ef,_0x444aa5);_0x134257(_0x444aa5);});});}exports[_0x2efe('0x16')]=function(_0x1cd73f){var _0x342d1a=this;return new Promise(function(_0x435995,_0x4f4b26){return db[_0x2efe('0x17')][_0x2efe('0x18')]({'raw':_0x1cd73f[_0x2efe('0x19')]?_0x1cd73f[_0x2efe('0x19')][_0x2efe('0x1a')]===undefined?!![]:![]:!![],'where':_0x1cd73f['options']?_0x1cd73f[_0x2efe('0x19')][_0x2efe('0x1b')]||null:null,'attributes':_0x1cd73f['options']?_0x1cd73f[_0x2efe('0x19')]['attributes']||null:null,'include':_0x1cd73f[_0x2efe('0x19')]?_0x1cd73f[_0x2efe('0x19')]['include']?_['map'](_0x1cd73f[_0x2efe('0x19')][_0x2efe('0x1c')],function(_0x1eda82){return{'model':db[_0x1eda82[_0x2efe('0x1d')]],'as':_0x1eda82['as'],'attributes':_0x1eda82[_0x2efe('0x1e')],'include':_0x1eda82[_0x2efe('0x1c')]?_[_0x2efe('0x1f')](_0x1eda82[_0x2efe('0x1c')],function(_0xa85bec){return{'model':db[_0xa85bec['model']],'as':_0xa85bec['as'],'attributes':_0xa85bec[_0x2efe('0x1e')],'include':_0xa85bec['include']?_['map'](_0xa85bec['include'],function(_0x1c2f89){return{'model':db[_0x1c2f89[_0x2efe('0x1d')]],'as':_0x1c2f89['as'],'attributes':_0x1c2f89['attributes']};}):[]};}):[]};}):[]:[]})[_0x2efe('0xd')](function(_0x3639fc){logger[_0x2efe('0xe')](_0x2efe('0x16'),_0x1cd73f);logger['debug'](_0x2efe('0x16'),_0x1cd73f,JSON[_0x2efe('0x20')](_0x3639fc));_0x435995(_0x3639fc);})[_0x2efe('0x15')](function(_0x2ca7c0){logger[_0x2efe('0x13')](_0x2efe('0x16'),_0x2ca7c0[_0x2efe('0x14')],_0x1cd73f);_0x4f4b26(_0x342d1a[_0x2efe('0x13')](0x1f4,_0x2ca7c0['message']));});});};
\ No newline at end of file
index cebc40f..4af0109 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['update','delete','destroy','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','isAuthenticated','index','get','show','create','put','/:id'];(function(_0x1cc876,_0x5417dd){var _0xa77dc0=function(_0x115444){while(--_0x115444){_0x1cc876['push'](_0x1cc876['shift']());}};_0xa77dc0(++_0x5417dd);}(_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'));var controller=require('./squareMessage.controller');router['get']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0x8')]);router[_0x0d8b('0x9')]('/:id',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xa')]);router['post']('/',auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xb')]);router[_0x0d8b('0xc')](_0x0d8b('0xd'),auth[_0x0d8b('0x7')](),controller[_0x0d8b('0xe')]);router[_0x0d8b('0xf')](_0x0d8b('0xd'),auth['isAuthenticated'](),controller[_0x0d8b('0x10')]);module['exports']=router;
\ No newline at end of file
+var _0x9ffd=['util','path','express','Router','fs-extra','../../components/auth/service','../../config/environment','./squareMessage.controller','isAuthenticated','index','get','/:id','show','post','create','delete','destroy','exports','multer'];(function(_0x2d344f,_0x25fa84){var _0x2e796b=function(_0x10466a){while(--_0x10466a){_0x2d344f['push'](_0x2d344f['shift']());}};_0x2e796b(++_0x25fa84);}(_0x9ffd,0xaa));var _0xd9ff=function(_0x2697e1,_0x367119){_0x2697e1=_0x2697e1-0x0;var _0x3e4e66=_0x9ffd[_0x2697e1];return _0x3e4e66;};'use strict';var multer=require(_0xd9ff('0x0'));var util=require(_0xd9ff('0x1'));var path=require(_0xd9ff('0x2'));var timeout=require('connect-timeout');var express=require(_0xd9ff('0x3'));var router=express[_0xd9ff('0x4')]();var fs_extra=require(_0xd9ff('0x5'));var auth=require(_0xd9ff('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0xd9ff('0x7'));var controller=require(_0xd9ff('0x8'));router['get']('/',auth[_0xd9ff('0x9')](),controller[_0xd9ff('0xa')]);router[_0xd9ff('0xb')](_0xd9ff('0xc'),auth[_0xd9ff('0x9')](),controller[_0xd9ff('0xd')]);router[_0xd9ff('0xe')]('/',auth[_0xd9ff('0x9')](),controller[_0xd9ff('0xf')]);router['put']('/:id',auth['isAuthenticated'](),controller['update']);router[_0xd9ff('0x10')](_0xd9ff('0xc'),auth[_0xd9ff('0x9')](),controller[_0xd9ff('0x11')]);module[_0xd9ff('0x12')]=router;
\ No newline at end of file
index 852d656..01c729e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x973c=['sequelize','TEXT','medium','out'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x973c,0x198));var _0xc973=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x973c[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xc973('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize[_0xc973('0x1')](_0xc973('0x2')),'allowNull':![]},'direction':{'type':Sequelize['ENUM']('in',_0xc973('0x3')),'defaultValue':_0xc973('0x3'),'allowNull':![]},'providerName':{'type':Sequelize['STRING']},'providerResponse':{'type':Sequelize[_0xc973('0x1')]}};
\ No newline at end of file
+var _0x9b7d=['exports','TEXT','medium','ENUM','out','STRING','sequelize'];(function(_0x4f5b10,_0x416197){var _0x4a4f64=function(_0xdc6860){while(--_0xdc6860){_0x4f5b10['push'](_0x4f5b10['shift']());}};_0x4a4f64(++_0x416197);}(_0x9b7d,0x179));var _0xd9b7=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x9b7d[_0x19e35c];return _0x3e1fe8;};'use strict';var Sequelize=require(_0xd9b7('0x0'));module[_0xd9b7('0x1')]={'uniqueid':{'type':Sequelize['STRING']},'body':{'type':Sequelize[_0xd9b7('0x2')](_0xd9b7('0x3')),'allowNull':![]},'direction':{'type':Sequelize[_0xd9b7('0x4')]('in',_0xd9b7('0x5')),'defaultValue':_0xd9b7('0x5'),'allowNull':![]},'providerName':{'type':Sequelize[_0xd9b7('0x6')]},'providerResponse':{'type':Sequelize[_0xd9b7('0x2')]}};
\ No newline at end of file
index 8270ed2..11de50c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa486=['ejs','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/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','save','error','stack','name','send','index','map','SquareMessage','rawAttributes','fieldName','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','includeAll','include','findAll','rows','then','show','params','find','catch','create','body','update','destroy','eml-format','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv'];(function(_0x55821d,_0x27a22e){var _0x58ea8a=function(_0x5bdd3d){while(--_0x5bdd3d){_0x55821d['push'](_0x55821d['shift']());}};_0x58ea8a(++_0x27a22e);}(_0xa486,0x17d));var _0x6a48=function(_0x5bb5f4,_0x5e9659){_0x5bb5f4=_0x5bb5f4-0x0;var _0x152c50=_0xa486[_0x5bb5f4];return _0x152c50;};'use strict';var emlformat=require(_0x6a48('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x6a48('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6a48('0x2'));var moment=require('moment');var BPromise=require(_0x6a48('0x3'));var Mustache=require(_0x6a48('0x4'));var util=require(_0x6a48('0x5'));var path=require(_0x6a48('0x6'));var sox=require(_0x6a48('0x7'));var csv=require(_0x6a48('0x8'));var ejs=require(_0x6a48('0x9'));var fs=require('fs');var fs_extra=require(_0x6a48('0xa'));var _=require(_0x6a48('0xb'));var squel=require(_0x6a48('0xc'));var crypto=require(_0x6a48('0xd'));var jsforce=require(_0x6a48('0xe'));var deskjs=require(_0x6a48('0xf'));var toCsv=require(_0x6a48('0x8'));var querystring=require(_0x6a48('0x10'));var Papa=require(_0x6a48('0x11'));var Redis=require('ioredis');var authService=require(_0x6a48('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x6a48('0x13'));var hardwareService=require(_0x6a48('0x14'));var logger=require(_0x6a48('0x15'))(_0x6a48('0x16'));var utils=require(_0x6a48('0x17'));var config=require(_0x6a48('0x18'));var licenseUtil=require(_0x6a48('0x19'));var db=require(_0x6a48('0x1a'))['db'];function respondWithStatusCode(_0x3f099a,_0x3c5ef9){_0x3c5ef9=_0x3c5ef9||0xcc;return function(_0x1ef5c7){if(_0x1ef5c7){return _0x3f099a[_0x6a48('0x1b')](_0x3c5ef9);}return _0x3f099a[_0x6a48('0x1c')](_0x3c5ef9)[_0x6a48('0x1d')]();};}function respondWithResult(_0x4636e5,_0x9909af){_0x9909af=_0x9909af||0xc8;return function(_0xcbcb4b){if(_0xcbcb4b){return _0x4636e5[_0x6a48('0x1c')](_0x9909af)[_0x6a48('0x1e')](_0xcbcb4b);}};}function respondWithFilteredResult(_0x43f5fa,_0x3315c1){return function(_0x10867e){if(_0x10867e){var _0x231930=typeof _0x3315c1[_0x6a48('0x1f')]===_0x6a48('0x20')&&typeof _0x3315c1[_0x6a48('0x21')]===_0x6a48('0x20');var _0x20cab5=_0x10867e['count'];var _0xab0913=_0x231930?0x0:_0x3315c1[_0x6a48('0x1f')];var _0x152280=_0x231930?_0x10867e[_0x6a48('0x22')]:_0x3315c1['offset']+_0x3315c1[_0x6a48('0x21')];var _0x43a80d;if(_0x152280>=_0x20cab5){_0x152280=_0x20cab5;_0x43a80d=0xc8;}else{_0x43a80d=0xce;}_0x43f5fa[_0x6a48('0x1c')](_0x43a80d);return _0x43f5fa['set'](_0x6a48('0x23'),_0xab0913+'-'+_0x152280+'/'+_0x20cab5)[_0x6a48('0x1e')](_0x10867e);}return null;};}function patchUpdates(_0x426272){return function(_0x56fc96){try{jsonpatch[_0x6a48('0x24')](_0x56fc96,_0x426272,!![]);}catch(_0x24c549){return BPromise[_0x6a48('0x25')](_0x24c549);}return _0x56fc96[_0x6a48('0x26')]();};}function saveUpdates(_0x4ee111,_0x1afaf3){return function(_0x230220){if(_0x230220){return _0x230220['update'](_0x4ee111)['then'](function(_0x11b488){return _0x11b488;});}return null;};}function removeEntity(_0x31ed88,_0x4cb5d0){return function(_0x2eae9f){if(_0x2eae9f){return _0x2eae9f['destroy']()['then'](function(){_0x31ed88['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x2a14d5,_0x5eeef8){return function(_0x19594c){if(!_0x19594c){_0x2a14d5['sendStatus'](0x194);}return _0x19594c;};}function handleError(_0x5b1331,_0x483278){_0x483278=_0x483278||0x1f4;return function(_0x5d62a6){logger[_0x6a48('0x27')](_0x5d62a6[_0x6a48('0x28')]);if(_0x5d62a6[_0x6a48('0x29')]){delete _0x5d62a6[_0x6a48('0x29')];}_0x5b1331['status'](_0x483278)[_0x6a48('0x2a')](_0x5d62a6);};}exports[_0x6a48('0x2b')]=function(_0xf450b,_0x13fe57){var _0x5188e8={},_0x57522a={},_0x39f2ee={'count':0x0,'rows':[]};var _0xa75f3d=_[_0x6a48('0x2c')](db[_0x6a48('0x2d')][_0x6a48('0x2e')],function(_0x5b01a4){return{'name':_0x5b01a4[_0x6a48('0x2f')],'type':_0x5b01a4['type']['key']};});_0x57522a[_0x6a48('0x30')]=_[_0x6a48('0x2c')](_0xa75f3d,_0x6a48('0x29'));_0x57522a[_0x6a48('0x31')]=_[_0x6a48('0x32')](_0xf450b[_0x6a48('0x31')]);_0x57522a[_0x6a48('0x33')]=_[_0x6a48('0x34')](_0x57522a[_0x6a48('0x30')],_0x57522a[_0x6a48('0x31')]);_0x5188e8[_0x6a48('0x35')]=_[_0x6a48('0x34')](_0x57522a['model'],qs[_0x6a48('0x36')](_0xf450b[_0x6a48('0x31')][_0x6a48('0x36')]));_0x5188e8['attributes']=_0x5188e8[_0x6a48('0x35')]['length']?_0x5188e8[_0x6a48('0x35')]:_0x57522a['model'];if(!_0xf450b[_0x6a48('0x31')][_0x6a48('0x37')](_0x6a48('0x38'))){_0x5188e8['limit']=qs[_0x6a48('0x21')](_0xf450b[_0x6a48('0x31')]['limit']);_0x5188e8['offset']=qs[_0x6a48('0x1f')](_0xf450b[_0x6a48('0x31')][_0x6a48('0x1f')]);}_0x5188e8[_0x6a48('0x39')]=qs[_0x6a48('0x3a')](_0xf450b[_0x6a48('0x31')][_0x6a48('0x3a')]);_0x5188e8[_0x6a48('0x3b')]=qs['filters'](_[_0x6a48('0x3c')](_0xf450b[_0x6a48('0x31')],_0x57522a[_0x6a48('0x33')]),_0xa75f3d);if(_0xf450b[_0x6a48('0x31')][_0x6a48('0x3d')]){_0x5188e8[_0x6a48('0x3b')]=_[_0x6a48('0x3e')](_0x5188e8[_0x6a48('0x3b')],{'$or':_[_0x6a48('0x2c')](_0xa75f3d,function(_0x424a5b){if(_0x424a5b[_0x6a48('0x3f')]!==_0x6a48('0x40')){var _0x19244f={};_0x19244f[_0x424a5b[_0x6a48('0x29')]]={'$like':'%'+_0xf450b['query'][_0x6a48('0x3d')]+'%'};return _0x19244f;}})});}_0x5188e8=_[_0x6a48('0x3e')]({},_0x5188e8,_0xf450b['options']);var _0x3ac1d7={'where':_0x5188e8[_0x6a48('0x3b')]};return db[_0x6a48('0x2d')][_0x6a48('0x22')](_0x3ac1d7)['then'](function(_0x2ab146){_0x39f2ee[_0x6a48('0x22')]=_0x2ab146;if(_0xf450b[_0x6a48('0x31')][_0x6a48('0x41')]){_0x5188e8[_0x6a48('0x42')]=[{'all':!![]}];}return db[_0x6a48('0x2d')][_0x6a48('0x43')](_0x5188e8);})['then'](function(_0x5cbb47){_0x39f2ee[_0x6a48('0x44')]=_0x5cbb47;return _0x39f2ee;})[_0x6a48('0x45')](respondWithFilteredResult(_0x13fe57,_0x5188e8))['catch'](handleError(_0x13fe57,null));};exports[_0x6a48('0x46')]=function(_0x4399c0,_0x48d8ee){var _0x305878={'raw':!![],'where':{'id':_0x4399c0[_0x6a48('0x47')]['id']}},_0x2abea4={};_0x2abea4[_0x6a48('0x30')]=_[_0x6a48('0x32')](db['SquareMessage'][_0x6a48('0x2e')]);_0x2abea4['query']=_['keys'](_0x4399c0[_0x6a48('0x31')]);_0x2abea4['filters']=_[_0x6a48('0x34')](_0x2abea4['model'],_0x2abea4[_0x6a48('0x31')]);_0x305878[_0x6a48('0x35')]=_[_0x6a48('0x34')](_0x2abea4['model'],qs[_0x6a48('0x36')](_0x4399c0['query']['fields']));_0x305878['attributes']=_0x305878[_0x6a48('0x35')]['length']?_0x305878[_0x6a48('0x35')]:_0x2abea4[_0x6a48('0x30')];if(_0x4399c0[_0x6a48('0x31')][_0x6a48('0x41')]){_0x305878['include']=[{'all':!![]}];}_0x305878=_[_0x6a48('0x3e')]({},_0x305878,_0x4399c0['options']);return db[_0x6a48('0x2d')][_0x6a48('0x48')](_0x305878)['then'](handleEntityNotFound(_0x48d8ee,null))['then'](respondWithResult(_0x48d8ee,null))[_0x6a48('0x49')](handleError(_0x48d8ee,null));};exports[_0x6a48('0x4a')]=function(_0x5c91cf,_0x130ca0){return db[_0x6a48('0x2d')][_0x6a48('0x4a')](_0x5c91cf[_0x6a48('0x4b')],{})[_0x6a48('0x45')](respondWithResult(_0x130ca0,0xc9))[_0x6a48('0x49')](handleError(_0x130ca0,null));};exports[_0x6a48('0x4c')]=function(_0x4b3cc1,_0x3227db){if(_0x4b3cc1[_0x6a48('0x4b')]['id']){delete _0x4b3cc1['body']['id'];}return db[_0x6a48('0x2d')][_0x6a48('0x48')]({'where':{'id':_0x4b3cc1[_0x6a48('0x47')]['id']}})[_0x6a48('0x45')](handleEntityNotFound(_0x3227db,null))[_0x6a48('0x45')](saveUpdates(_0x4b3cc1['body'],null))[_0x6a48('0x45')](respondWithResult(_0x3227db,null))[_0x6a48('0x49')](handleError(_0x3227db,null));};exports[_0x6a48('0x4d')]=function(_0xc66694,_0x1243bc){return db['SquareMessage']['find']({'where':{'id':_0xc66694[_0x6a48('0x47')]['id']}})[_0x6a48('0x45')](handleEntityNotFound(_0x1243bc,null))[_0x6a48('0x45')](removeEntity(_0x1243bc,null))['catch'](handleError(_0x1243bc,null));};
\ No newline at end of file
+var _0x1baf=['count','set','Content-Range','reject','save','update','then','destroy','stack','name','send','index','map','fieldName','key','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','order','sort','where','pick','merge','type','filter','options','SquareMessage','include','show','params','keys','rawAttributes','includeAll','create','body','find','catch','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined'];(function(_0x47b0d9,_0x41b561){var _0x599df3=function(_0x4c0c30){while(--_0x4c0c30){_0x47b0d9['push'](_0x47b0d9['shift']());}};_0x599df3(++_0x41b561);}(_0x1baf,0x14e));var _0xf1ba=function(_0x1b1c5b,_0x117446){_0x1b1c5b=_0x1b1c5b-0x0;var _0x210a21=_0x1baf[_0x1b1c5b];return _0x210a21;};'use strict';var emlformat=require(_0xf1ba('0x0'));var rimraf=require(_0xf1ba('0x1'));var zipdir=require(_0xf1ba('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xf1ba('0x3'));var moment=require(_0xf1ba('0x4'));var BPromise=require(_0xf1ba('0x5'));var Mustache=require(_0xf1ba('0x6'));var util=require(_0xf1ba('0x7'));var path=require(_0xf1ba('0x8'));var sox=require('sox');var csv=require(_0xf1ba('0x9'));var ejs=require(_0xf1ba('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xf1ba('0xb'));var crypto=require(_0xf1ba('0xc'));var jsforce=require(_0xf1ba('0xd'));var deskjs=require(_0xf1ba('0xe'));var toCsv=require(_0xf1ba('0x9'));var querystring=require(_0xf1ba('0xf'));var Papa=require(_0xf1ba('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0xf1ba('0x11'));var hardwareService=require(_0xf1ba('0x12'));var logger=require('../../config/logger')(_0xf1ba('0x13'));var utils=require(_0xf1ba('0x14'));var config=require(_0xf1ba('0x15'));var licenseUtil=require(_0xf1ba('0x16'));var db=require(_0xf1ba('0x17'))['db'];function respondWithStatusCode(_0x298137,_0x4ce634){_0x4ce634=_0x4ce634||0xcc;return function(_0x4db67f){if(_0x4db67f){return _0x298137[_0xf1ba('0x18')](_0x4ce634);}return _0x298137[_0xf1ba('0x19')](_0x4ce634)[_0xf1ba('0x1a')]();};}function respondWithResult(_0x573144,_0x194347){_0x194347=_0x194347||0xc8;return function(_0x1c2616){if(_0x1c2616){return _0x573144[_0xf1ba('0x19')](_0x194347)[_0xf1ba('0x1b')](_0x1c2616);}};}function respondWithFilteredResult(_0x482a6e,_0x313f1b){return function(_0x4fbaf6){if(_0x4fbaf6){var _0x624a9c=typeof _0x313f1b[_0xf1ba('0x1c')]==='undefined'&&typeof _0x313f1b[_0xf1ba('0x1d')]===_0xf1ba('0x1e');var _0xf2847d=_0x4fbaf6['count'];var _0x2ce38c=_0x624a9c?0x0:_0x313f1b[_0xf1ba('0x1c')];var _0x3219df=_0x624a9c?_0x4fbaf6[_0xf1ba('0x1f')]:_0x313f1b[_0xf1ba('0x1c')]+_0x313f1b[_0xf1ba('0x1d')];var _0x13d1d3;if(_0x3219df>=_0xf2847d){_0x3219df=_0xf2847d;_0x13d1d3=0xc8;}else{_0x13d1d3=0xce;}_0x482a6e[_0xf1ba('0x19')](_0x13d1d3);return _0x482a6e[_0xf1ba('0x20')](_0xf1ba('0x21'),_0x2ce38c+'-'+_0x3219df+'/'+_0xf2847d)['json'](_0x4fbaf6);}return null;};}function patchUpdates(_0x11a5c3){return function(_0x3d6f6e){try{jsonpatch['apply'](_0x3d6f6e,_0x11a5c3,!![]);}catch(_0x2f3a44){return BPromise[_0xf1ba('0x22')](_0x2f3a44);}return _0x3d6f6e[_0xf1ba('0x23')]();};}function saveUpdates(_0x48e067,_0x2e9f1f){return function(_0x1e5e7f){if(_0x1e5e7f){return _0x1e5e7f[_0xf1ba('0x24')](_0x48e067)[_0xf1ba('0x25')](function(_0x309c66){return _0x309c66;});}return null;};}function removeEntity(_0x3b5fdd,_0xb94f5){return function(_0x3a2ff6){if(_0x3a2ff6){return _0x3a2ff6[_0xf1ba('0x26')]()[_0xf1ba('0x25')](function(){_0x3b5fdd[_0xf1ba('0x19')](0xcc)[_0xf1ba('0x1a')]();});}};}function handleEntityNotFound(_0x2493f8,_0x429096){return function(_0x5b0881){if(!_0x5b0881){_0x2493f8[_0xf1ba('0x18')](0x194);}return _0x5b0881;};}function handleError(_0x3106f9,_0x9f03ce){_0x9f03ce=_0x9f03ce||0x1f4;return function(_0x3f6c11){logger['error'](_0x3f6c11[_0xf1ba('0x27')]);if(_0x3f6c11[_0xf1ba('0x28')]){delete _0x3f6c11[_0xf1ba('0x28')];}_0x3106f9[_0xf1ba('0x19')](_0x9f03ce)[_0xf1ba('0x29')](_0x3f6c11);};}exports[_0xf1ba('0x2a')]=function(_0xc86008,_0xc755bd){var _0x2988cf={},_0x8971ef={},_0x1dbf7d={'count':0x0,'rows':[]};var _0x34823c=_[_0xf1ba('0x2b')](db['SquareMessage']['rawAttributes'],function(_0x1d8071){return{'name':_0x1d8071[_0xf1ba('0x2c')],'type':_0x1d8071['type'][_0xf1ba('0x2d')]};});_0x8971ef['model']=_['map'](_0x34823c,'name');_0x8971ef[_0xf1ba('0x2e')]=_['keys'](_0xc86008[_0xf1ba('0x2e')]);_0x8971ef[_0xf1ba('0x2f')]=_[_0xf1ba('0x30')](_0x8971ef['model'],_0x8971ef[_0xf1ba('0x2e')]);_0x2988cf[_0xf1ba('0x31')]=_[_0xf1ba('0x30')](_0x8971ef[_0xf1ba('0x32')],qs[_0xf1ba('0x33')](_0xc86008[_0xf1ba('0x2e')][_0xf1ba('0x33')]));_0x2988cf[_0xf1ba('0x31')]=_0x2988cf[_0xf1ba('0x31')][_0xf1ba('0x34')]?_0x2988cf['attributes']:_0x8971ef[_0xf1ba('0x32')];if(!_0xc86008[_0xf1ba('0x2e')][_0xf1ba('0x35')]('nolimit')){_0x2988cf['limit']=qs[_0xf1ba('0x1d')](_0xc86008['query'][_0xf1ba('0x1d')]);_0x2988cf['offset']=qs['offset'](_0xc86008['query']['offset']);}_0x2988cf[_0xf1ba('0x36')]=qs[_0xf1ba('0x37')](_0xc86008['query']['sort']);_0x2988cf[_0xf1ba('0x38')]=qs['filters'](_[_0xf1ba('0x39')](_0xc86008[_0xf1ba('0x2e')],_0x8971ef['filters']),_0x34823c);if(_0xc86008[_0xf1ba('0x2e')]['filter']){_0x2988cf[_0xf1ba('0x38')]=_[_0xf1ba('0x3a')](_0x2988cf[_0xf1ba('0x38')],{'$or':_[_0xf1ba('0x2b')](_0x34823c,function(_0x1b9cd4){if(_0x1b9cd4[_0xf1ba('0x3b')]!=='VIRTUAL'){var _0x750f68={};_0x750f68[_0x1b9cd4[_0xf1ba('0x28')]]={'$like':'%'+_0xc86008[_0xf1ba('0x2e')][_0xf1ba('0x3c')]+'%'};return _0x750f68;}})});}_0x2988cf=_[_0xf1ba('0x3a')]({},_0x2988cf,_0xc86008[_0xf1ba('0x3d')]);var _0x50fb10={'where':_0x2988cf[_0xf1ba('0x38')]};return db[_0xf1ba('0x3e')][_0xf1ba('0x1f')](_0x50fb10)['then'](function(_0x5745bc){_0x1dbf7d[_0xf1ba('0x1f')]=_0x5745bc;if(_0xc86008[_0xf1ba('0x2e')]['includeAll']){_0x2988cf[_0xf1ba('0x3f')]=[{'all':!![]}];}return db[_0xf1ba('0x3e')]['findAll'](_0x2988cf);})['then'](function(_0x16f87f){_0x1dbf7d['rows']=_0x16f87f;return _0x1dbf7d;})[_0xf1ba('0x25')](respondWithFilteredResult(_0xc755bd,_0x2988cf))['catch'](handleError(_0xc755bd,null));};exports[_0xf1ba('0x40')]=function(_0x4a365a,_0x3060c7){var _0x2d75d9={'raw':!![],'where':{'id':_0x4a365a[_0xf1ba('0x41')]['id']}},_0x2afbf4={};_0x2afbf4[_0xf1ba('0x32')]=_[_0xf1ba('0x42')](db[_0xf1ba('0x3e')][_0xf1ba('0x43')]);_0x2afbf4['query']=_['keys'](_0x4a365a[_0xf1ba('0x2e')]);_0x2afbf4['filters']=_['intersection'](_0x2afbf4[_0xf1ba('0x32')],_0x2afbf4[_0xf1ba('0x2e')]);_0x2d75d9[_0xf1ba('0x31')]=_[_0xf1ba('0x30')](_0x2afbf4[_0xf1ba('0x32')],qs[_0xf1ba('0x33')](_0x4a365a[_0xf1ba('0x2e')][_0xf1ba('0x33')]));_0x2d75d9[_0xf1ba('0x31')]=_0x2d75d9[_0xf1ba('0x31')]['length']?_0x2d75d9[_0xf1ba('0x31')]:_0x2afbf4['model'];if(_0x4a365a['query'][_0xf1ba('0x44')]){_0x2d75d9[_0xf1ba('0x3f')]=[{'all':!![]}];}_0x2d75d9=_[_0xf1ba('0x3a')]({},_0x2d75d9,_0x4a365a[_0xf1ba('0x3d')]);return db[_0xf1ba('0x3e')]['find'](_0x2d75d9)[_0xf1ba('0x25')](handleEntityNotFound(_0x3060c7,null))[_0xf1ba('0x25')](respondWithResult(_0x3060c7,null))['catch'](handleError(_0x3060c7,null));};exports[_0xf1ba('0x45')]=function(_0x30a01a,_0x4ca6de){return db[_0xf1ba('0x3e')][_0xf1ba('0x45')](_0x30a01a[_0xf1ba('0x46')],{})[_0xf1ba('0x25')](respondWithResult(_0x4ca6de,0xc9))['catch'](handleError(_0x4ca6de,null));};exports[_0xf1ba('0x24')]=function(_0x3bb1ea,_0xfc74bf){if(_0x3bb1ea[_0xf1ba('0x46')]['id']){delete _0x3bb1ea[_0xf1ba('0x46')]['id'];}return db['SquareMessage'][_0xf1ba('0x47')]({'where':{'id':_0x3bb1ea[_0xf1ba('0x41')]['id']}})[_0xf1ba('0x25')](handleEntityNotFound(_0xfc74bf,null))['then'](saveUpdates(_0x3bb1ea['body'],null))[_0xf1ba('0x25')](respondWithResult(_0xfc74bf,null))['catch'](handleError(_0xfc74bf,null));};exports['destroy']=function(_0x59f764,_0x195570){return db[_0xf1ba('0x3e')]['find']({'where':{'id':_0x59f764['params']['id']}})[_0xf1ba('0x25')](handleEntityNotFound(_0x195570,null))[_0xf1ba('0x25')](removeEntity(_0x195570,null))[_0xf1ba('0x48')](handleError(_0x195570,null));};
\ No newline at end of file
index c763d06..84705ee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1dfa=['request-promise','path','rimraf','../../config/environment','./squareMessage.attributes','SquareMessage','square_messages','lodash','util','../../config/logger','api','moment','bluebird'];(function(_0x51fed0,_0x487bbb){var _0x228317=function(_0x5f1095){while(--_0x5f1095){_0x51fed0['push'](_0x51fed0['shift']());}};_0x228317(++_0x487bbb);}(_0x1dfa,0xca));var _0xa1df=function(_0x1abb09,_0x18ee91){_0x1abb09=_0x1abb09-0x0;var _0xea1c07=_0x1dfa[_0x1abb09];return _0xea1c07;};'use strict';var _=require(_0xa1df('0x0'));var util=require(_0xa1df('0x1'));var logger=require(_0xa1df('0x2'))(_0xa1df('0x3'));var moment=require(_0xa1df('0x4'));var BPromise=require(_0xa1df('0x5'));var rp=require(_0xa1df('0x6'));var fs=require('fs');var path=require(_0xa1df('0x7'));var rimraf=require(_0xa1df('0x8'));var config=require(_0xa1df('0x9'));var attributes=require(_0xa1df('0xa'));module['exports']=function(_0x7f78ee,_0x2fd11e){return _0x7f78ee['define'](_0xa1df('0xb'),attributes,{'tableName':_0xa1df('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x98e4=['rimraf','define','SquareMessage','square_messages','util','request-promise','path'];(function(_0x374ccf,_0xa945c4){var _0x443cde=function(_0x27ff10){while(--_0x27ff10){_0x374ccf['push'](_0x374ccf['shift']());}};_0x443cde(++_0xa945c4);}(_0x98e4,0x1e7));var _0x498e=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x98e4[_0x3947c9];return _0x2e7871;};'use strict';var _=require('lodash');var util=require(_0x498e('0x0'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x498e('0x1'));var fs=require('fs');var path=require(_0x498e('0x2'));var rimraf=require(_0x498e('0x3'));var config=require('../../config/environment');var attributes=require('./squareMessage.attributes');module['exports']=function(_0x13f265,_0x341f56){return _0x13f265[_0x498e('0x4')](_0x498e('0x5'),attributes,{'tableName':_0x498e('0x6'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index f47d1a8..8a50e15 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xccc9=['SquareMessage','create','body','options','raw','CreateSquareMessage','lodash','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','client','request','then','info','request\x20sent','debug','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','SquareMessage,\x20%s,\x20%s','message','result','catch'];(function(_0x442d6b,_0x3c30ee){var _0x48053e=function(_0x40d974){while(--_0x40d974){_0x442d6b['push'](_0x442d6b['shift']());}};_0x48053e(++_0x3c30ee);}(_0xccc9,0x7a));var _0x9ccc=function(_0x1b5c5c,_0x1935ef){_0x1b5c5c=_0x1b5c5c-0x0;var _0x43f472=_0xccc9[_0x1b5c5c];return _0x43f472;};'use strict';var _=require(_0x9ccc('0x0'));var util=require('util');var moment=require(_0x9ccc('0x1'));var BPromise=require(_0x9ccc('0x2'));var rs=require(_0x9ccc('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x9ccc('0x4'))['db'];var utils=require(_0x9ccc('0x5'));var logger=require(_0x9ccc('0x6'))(_0x9ccc('0x7'));var config=require(_0x9ccc('0x8'));var jayson=require('jayson/promise');var client=jayson[_0x9ccc('0x9')]['http']({'port':0x232a});function respondWithRpcPromise(_0x498dca,_0x3819ac,_0x2d56c2){return new BPromise(function(_0x3ef95e,_0x158b53){return client[_0x9ccc('0xa')](_0x498dca,_0x2d56c2)[_0x9ccc('0xb')](function(_0x16373c){logger[_0x9ccc('0xc')]('SquareMessage,\x20%s,\x20%s',_0x3819ac,_0x9ccc('0xd'));logger[_0x9ccc('0xe')](_0x9ccc('0xf'),_0x3819ac,_0x9ccc('0xd'),JSON[_0x9ccc('0x10')](_0x16373c));if(_0x16373c['error']){if(_0x16373c['error'][_0x9ccc('0x11')]===0x1f4){logger[_0x9ccc('0x12')](_0x9ccc('0x13'),_0x3819ac,_0x16373c[_0x9ccc('0x12')][_0x9ccc('0x14')]);return _0x158b53(_0x16373c[_0x9ccc('0x12')][_0x9ccc('0x14')]);}logger[_0x9ccc('0x12')](_0x9ccc('0x13'),_0x3819ac,_0x16373c[_0x9ccc('0x12')]['message']);return _0x3ef95e(_0x16373c['error']['message']);}else{logger[_0x9ccc('0xc')](_0x9ccc('0x13'),_0x3819ac,'request\x20sent');_0x3ef95e(_0x16373c[_0x9ccc('0x15')]['message']);}})[_0x9ccc('0x16')](function(_0x19cf89){logger[_0x9ccc('0x12')]('SquareMessage,\x20%s,\x20%s',_0x3819ac,_0x19cf89);_0x158b53(_0x19cf89);});});}exports['CreateSquareMessage']=function(_0x3d3b2c){var _0x3cda25=this;return new Promise(function(_0x343cb6,_0x4d6d59){return db[_0x9ccc('0x17')][_0x9ccc('0x18')](_0x3d3b2c[_0x9ccc('0x19')],{'raw':_0x3d3b2c[_0x9ccc('0x1a')]?_0x3d3b2c[_0x9ccc('0x1a')][_0x9ccc('0x1b')]===undefined?!![]:![]:!![]})[_0x9ccc('0xb')](function(_0xc2d614){logger[_0x9ccc('0xc')](_0x9ccc('0x1c'),_0x3d3b2c);logger[_0x9ccc('0xe')](_0x9ccc('0x1c'),_0x3d3b2c,JSON[_0x9ccc('0x10')](_0xc2d614));_0x343cb6(_0xc2d614);})[_0x9ccc('0x16')](function(_0x5b7e2c){logger[_0x9ccc('0x12')]('CreateSquareMessage',_0x5b7e2c['message'],_0x3d3b2c);_0x4d6d59(_0x3cda25[_0x9ccc('0x12')](0x1f4,_0x5b7e2c[_0x9ccc('0x14')]));});});};
\ No newline at end of file
+var _0xd1b3=['../../config/logger','../../config/environment','jayson/promise','http','request','then','SquareMessage,\x20%s,\x20%s','request\x20sent','SquareMessage,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','CreateSquareMessage','body','options','raw','debug','lodash','util','../../mysqldb','../../config/utils'];(function(_0x58dc25,_0x49b9d5){var _0x21b0a7=function(_0x38a186){while(--_0x38a186){_0x58dc25['push'](_0x58dc25['shift']());}};_0x21b0a7(++_0x49b9d5);}(_0xd1b3,0xdd));var _0x3d1b=function(_0x31ae68,_0x2a0f26){_0x31ae68=_0x31ae68-0x0;var _0x6a8201=_0xd1b3[_0x31ae68];return _0x6a8201;};'use strict';var _=require(_0x3d1b('0x0'));var util=require(_0x3d1b('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require(_0x3d1b('0x2'))['db'];var utils=require(_0x3d1b('0x3'));var logger=require(_0x3d1b('0x4'))('rpc');var config=require(_0x3d1b('0x5'));var jayson=require(_0x3d1b('0x6'));var client=jayson['client'][_0x3d1b('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x1a8fda,_0x4e969d,_0x4cb6f5){return new BPromise(function(_0x268708,_0x2232db){return client[_0x3d1b('0x8')](_0x1a8fda,_0x4cb6f5)[_0x3d1b('0x9')](function(_0xfbf092){logger['info'](_0x3d1b('0xa'),_0x4e969d,_0x3d1b('0xb'));logger['debug'](_0x3d1b('0xc'),_0x4e969d,_0x3d1b('0xb'),JSON[_0x3d1b('0xd')](_0xfbf092));if(_0xfbf092['error']){if(_0xfbf092['error'][_0x3d1b('0xe')]===0x1f4){logger[_0x3d1b('0xf')](_0x3d1b('0xa'),_0x4e969d,_0xfbf092[_0x3d1b('0xf')][_0x3d1b('0x10')]);return _0x2232db(_0xfbf092[_0x3d1b('0xf')][_0x3d1b('0x10')]);}logger[_0x3d1b('0xf')]('SquareMessage,\x20%s,\x20%s',_0x4e969d,_0xfbf092[_0x3d1b('0xf')][_0x3d1b('0x10')]);return _0x268708(_0xfbf092[_0x3d1b('0xf')][_0x3d1b('0x10')]);}else{logger[_0x3d1b('0x11')]('SquareMessage,\x20%s,\x20%s',_0x4e969d,_0x3d1b('0xb'));_0x268708(_0xfbf092[_0x3d1b('0x12')][_0x3d1b('0x10')]);}})[_0x3d1b('0x13')](function(_0xd37d51){logger[_0x3d1b('0xf')](_0x3d1b('0xa'),_0x4e969d,_0xd37d51);_0x2232db(_0xd37d51);});});}exports[_0x3d1b('0x14')]=function(_0x3b5b14){var _0x5bfcbc=this;return new Promise(function(_0x33d7e9,_0x3f187e){return db['SquareMessage']['create'](_0x3b5b14[_0x3d1b('0x15')],{'raw':_0x3b5b14[_0x3d1b('0x16')]?_0x3b5b14[_0x3d1b('0x16')][_0x3d1b('0x17')]===undefined?!![]:![]:!![]})['then'](function(_0x46bced){logger[_0x3d1b('0x11')](_0x3d1b('0x14'),_0x3b5b14);logger[_0x3d1b('0x18')]('CreateSquareMessage',_0x3b5b14,JSON[_0x3d1b('0xd')](_0x46bced));_0x33d7e9(_0x46bced);})[_0x3d1b('0x13')](function(_0x2337cf){logger[_0x3d1b('0xf')](_0x3d1b('0x14'),_0x2337cf[_0x3d1b('0x10')],_0x3b5b14);_0x3f187e(_0x5bfcbc[_0x3d1b('0xf')](0x1f4,_0x2337cf[_0x3d1b('0x10')]));});});};
\ No newline at end of file
index 0416f00..5679e88 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc179=['multer','util','path','connect-timeout','../../components/auth/service','../../components/interaction/service','./squareOdbc.controller','isAuthenticated','index','/:id','show','get','/:id/test','test','post','create','update','delete','exports'];(function(_0x170435,_0x2ce0c8){var _0x54687d=function(_0x5f0e2a){while(--_0x5f0e2a){_0x170435['push'](_0x170435['shift']());}};_0x54687d(++_0x2ce0c8);}(_0xc179,0x11d));var _0x9c17=function(_0x27d8bc,_0x19e010){_0x27d8bc=_0x27d8bc-0x0;var _0x4b04cb=_0xc179[_0x27d8bc];return _0x4b04cb;};'use strict';var multer=require(_0x9c17('0x0'));var util=require(_0x9c17('0x1'));var path=require(_0x9c17('0x2'));var timeout=require(_0x9c17('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x9c17('0x4'));var interaction=require(_0x9c17('0x5'));var config=require('../../config/environment');var controller=require(_0x9c17('0x6'));router['get']('/',auth[_0x9c17('0x7')](),controller[_0x9c17('0x8')]);router['get'](_0x9c17('0x9'),auth['isAuthenticated'](),controller[_0x9c17('0xa')]);router[_0x9c17('0xb')](_0x9c17('0xc'),auth['isAuthenticated'](),timeout('15s'),controller[_0x9c17('0xd')]);router[_0x9c17('0xe')]('/',auth[_0x9c17('0x7')](),controller[_0x9c17('0xf')]);router['put'](_0x9c17('0x9'),auth[_0x9c17('0x7')](),controller[_0x9c17('0x10')]);router[_0x9c17('0x11')](_0x9c17('0x9'),auth[_0x9c17('0x7')](),controller['destroy']);module[_0x9c17('0x12')]=router;
\ No newline at end of file
+var _0xc2b8=['15s','test','post','create','update','multer','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareOdbc.controller','get','isAuthenticated','index','/:id','/:id/test'];(function(_0x15d18f,_0x126b0e){var _0xd12bf7=function(_0x19e661){while(--_0x19e661){_0x15d18f['push'](_0x15d18f['shift']());}};_0xd12bf7(++_0x126b0e);}(_0xc2b8,0x16d));var _0x8c2b=function(_0x18eeaa,_0x4380b6){_0x18eeaa=_0x18eeaa-0x0;var _0x23d240=_0xc2b8[_0x18eeaa];return _0x23d240;};'use strict';var multer=require(_0x8c2b('0x0'));var util=require(_0x8c2b('0x1'));var path=require(_0x8c2b('0x2'));var timeout=require(_0x8c2b('0x3'));var express=require(_0x8c2b('0x4'));var router=express[_0x8c2b('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x8c2b('0x6'));var interaction=require(_0x8c2b('0x7'));var config=require(_0x8c2b('0x8'));var controller=require(_0x8c2b('0x9'));router[_0x8c2b('0xa')]('/',auth[_0x8c2b('0xb')](),controller[_0x8c2b('0xc')]);router[_0x8c2b('0xa')](_0x8c2b('0xd'),auth[_0x8c2b('0xb')](),controller['show']);router[_0x8c2b('0xa')](_0x8c2b('0xe'),auth[_0x8c2b('0xb')](),timeout(_0x8c2b('0xf')),controller[_0x8c2b('0x10')]);router[_0x8c2b('0x11')]('/',auth[_0x8c2b('0xb')](),controller[_0x8c2b('0x12')]);router['put'](_0x8c2b('0xd'),auth['isAuthenticated'](),controller[_0x8c2b('0x13')]);router['delete'](_0x8c2b('0xd'),auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index bd20463..11a7710 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x087a=['name','sequelize','exports','STRING'];(function(_0x5aa80a,_0x533a83){var _0x587dc5=function(_0x42eb31){while(--_0x42eb31){_0x5aa80a['push'](_0x5aa80a['shift']());}};_0x587dc5(++_0x533a83);}(_0x087a,0x81));var _0xa087=function(_0x2ce808,_0x4bd5ba){_0x2ce808=_0x2ce808-0x0;var _0x1b74e2=_0x087a[_0x2ce808];return _0x1b74e2;};'use strict';var Sequelize=require(_0xa087('0x0'));module[_0xa087('0x1')]={'name':{'type':Sequelize[_0xa087('0x2')],'unique':_0xa087('0x3'),'allowNull':![]},'dsn':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xa087('0x2')]}};
\ No newline at end of file
+var _0xafbb=['STRING'];(function(_0x28615b,_0x1ea951){var _0xb4eb91=function(_0x496f82){while(--_0x496f82){_0x28615b['push'](_0x28615b['shift']());}};_0xb4eb91(++_0x1ea951);}(_0xafbb,0x73));var _0xbafb=function(_0x45b01d,_0x2eb976){_0x45b01d=_0x45b01d-0x0;var _0x39745a=_0xafbb[_0x45b01d];return _0x39745a;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0xbafb('0x0')],'unique':'name','allowNull':![]},'dsn':{'type':Sequelize[_0xbafb('0x0')]},'description':{'type':Sequelize[_0xbafb('0x0')]}};
\ No newline at end of file
index 9373afc..5c455f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6a95=['../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','offset','undefined','limit','count','status','Content-Range','json','reject','save','update','then','destroy','get','ODBC','UserProfileResource','error','name','send','index','map','SquareOdbc','rawAttributes','fieldName','type','model','query','keys','filters','attributes','intersection','fields','length','nolimit','sort','pick','filter','where','VIRTUAL','merge','options','findAll','rows','catch','show','params','include','find','create','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','test','odbc','openSync','dsn','closeSync','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware'];(function(_0x13617a,_0x1de3e3){var _0x506c6b=function(_0x2e479f){while(--_0x2e479f){_0x13617a['push'](_0x13617a['shift']());}};_0x506c6b(++_0x1de3e3);}(_0x6a95,0x146));var _0x56a9=function(_0x18a79d,_0x57bd2c){_0x18a79d=_0x18a79d-0x0;var _0x4f8848=_0x6a95[_0x18a79d];return _0x4f8848;};'use strict';var emlformat=require(_0x56a9('0x0'));var rimraf=require(_0x56a9('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x56a9('0x2'));var rp=require(_0x56a9('0x3'));var moment=require(_0x56a9('0x4'));var BPromise=require(_0x56a9('0x5'));var Mustache=require('mustache');var util=require(_0x56a9('0x6'));var path=require(_0x56a9('0x7'));var sox=require(_0x56a9('0x8'));var csv=require(_0x56a9('0x9'));var ejs=require(_0x56a9('0xa'));var fs=require('fs');var fs_extra=require(_0x56a9('0xb'));var _=require('lodash');var squel=require(_0x56a9('0xc'));var crypto=require(_0x56a9('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x56a9('0xe'));var toCsv=require(_0x56a9('0x9'));var querystring=require(_0x56a9('0xf'));var Papa=require(_0x56a9('0x10'));var Redis=require(_0x56a9('0x11'));var authService=require(_0x56a9('0x12'));var qs=require(_0x56a9('0x13'));var as=require(_0x56a9('0x14'));var hardwareService=require(_0x56a9('0x15'));var logger=require(_0x56a9('0x16'))('api');var utils=require(_0x56a9('0x17'));var config=require(_0x56a9('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0x56a9('0x19'))['db'];function respondWithStatusCode(_0x57dd7c,_0x1e7f1e){_0x1e7f1e=_0x1e7f1e||0xcc;return function(_0x314c2e){if(_0x314c2e){return _0x57dd7c[_0x56a9('0x1a')](_0x1e7f1e);}return _0x57dd7c['status'](_0x1e7f1e)['end']();};}function respondWithResult(_0x7fe343,_0x3751a6){_0x3751a6=_0x3751a6||0xc8;return function(_0x304559){if(_0x304559){return _0x7fe343['status'](_0x3751a6)['json'](_0x304559);}};}function respondWithFilteredResult(_0x581760,_0x1ea26a){return function(_0x1fadf0){if(_0x1fadf0){var _0x3bb99c=typeof _0x1ea26a[_0x56a9('0x1b')]===_0x56a9('0x1c')&&typeof _0x1ea26a[_0x56a9('0x1d')]===_0x56a9('0x1c');var _0x2e2cd0=_0x1fadf0[_0x56a9('0x1e')];var _0x580673=_0x3bb99c?0x0:_0x1ea26a[_0x56a9('0x1b')];var _0x1fe8d6=_0x3bb99c?_0x1fadf0[_0x56a9('0x1e')]:_0x1ea26a[_0x56a9('0x1b')]+_0x1ea26a['limit'];var _0x5ee38f;if(_0x1fe8d6>=_0x2e2cd0){_0x1fe8d6=_0x2e2cd0;_0x5ee38f=0xc8;}else{_0x5ee38f=0xce;}_0x581760[_0x56a9('0x1f')](_0x5ee38f);return _0x581760['set'](_0x56a9('0x20'),_0x580673+'-'+_0x1fe8d6+'/'+_0x2e2cd0)[_0x56a9('0x21')](_0x1fadf0);}return null;};}function patchUpdates(_0x3955b7){return function(_0x437eca){try{jsonpatch['apply'](_0x437eca,_0x3955b7,!![]);}catch(_0x40b133){return BPromise[_0x56a9('0x22')](_0x40b133);}return _0x437eca[_0x56a9('0x23')]();};}function saveUpdates(_0x4e3304,_0x4ee482){return function(_0x55f3bf){if(_0x55f3bf){return _0x55f3bf[_0x56a9('0x24')](_0x4e3304)[_0x56a9('0x25')](function(_0x2cebb5){return _0x2cebb5;});}return null;};}function removeEntity(_0x21533b,_0x157300){return function(_0x24ffda){if(_0x24ffda){return _0x24ffda[_0x56a9('0x26')]()['then'](function(){var _0x2a0ce2=_0x24ffda[_0x56a9('0x27')]({'plain':!![]});var _0x43f526=_0x56a9('0x28');return db[_0x56a9('0x29')][_0x56a9('0x26')]({'where':{'type':_0x43f526,'resourceId':_0x2a0ce2['id']}})[_0x56a9('0x25')](function(){return _0x24ffda;});})['then'](function(){_0x21533b[_0x56a9('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2237c3,_0x17c33b){return function(_0x9565a1){if(!_0x9565a1){_0x2237c3[_0x56a9('0x1a')](0x194);}return _0x9565a1;};}function handleError(_0x1a861c,_0x118092){_0x118092=_0x118092||0x1f4;return function(_0x5b950b){logger[_0x56a9('0x2a')](_0x5b950b['stack']);if(_0x5b950b[_0x56a9('0x2b')]){delete _0x5b950b[_0x56a9('0x2b')];}_0x1a861c['status'](_0x118092)[_0x56a9('0x2c')](_0x5b950b);};}exports[_0x56a9('0x2d')]=function(_0x2e5fcf,_0x1764bb){var _0x4665ad={},_0x263f6f={},_0x47d6a1={'count':0x0,'rows':[]};var _0x20e3fa=_[_0x56a9('0x2e')](db[_0x56a9('0x2f')][_0x56a9('0x30')],function(_0x57c6ea){return{'name':_0x57c6ea[_0x56a9('0x31')],'type':_0x57c6ea[_0x56a9('0x32')]['key']};});_0x263f6f[_0x56a9('0x33')]=_['map'](_0x20e3fa,_0x56a9('0x2b'));_0x263f6f[_0x56a9('0x34')]=_[_0x56a9('0x35')](_0x2e5fcf['query']);_0x263f6f[_0x56a9('0x36')]=_['intersection'](_0x263f6f['model'],_0x263f6f['query']);_0x4665ad[_0x56a9('0x37')]=_[_0x56a9('0x38')](_0x263f6f[_0x56a9('0x33')],qs[_0x56a9('0x39')](_0x2e5fcf[_0x56a9('0x34')][_0x56a9('0x39')]));_0x4665ad[_0x56a9('0x37')]=_0x4665ad[_0x56a9('0x37')][_0x56a9('0x3a')]?_0x4665ad[_0x56a9('0x37')]:_0x263f6f[_0x56a9('0x33')];if(!_0x2e5fcf[_0x56a9('0x34')]['hasOwnProperty'](_0x56a9('0x3b'))){_0x4665ad[_0x56a9('0x1d')]=qs[_0x56a9('0x1d')](_0x2e5fcf[_0x56a9('0x34')][_0x56a9('0x1d')]);_0x4665ad[_0x56a9('0x1b')]=qs[_0x56a9('0x1b')](_0x2e5fcf['query']['offset']);}_0x4665ad['order']=qs[_0x56a9('0x3c')](_0x2e5fcf[_0x56a9('0x34')][_0x56a9('0x3c')]);_0x4665ad['where']=qs['filters'](_[_0x56a9('0x3d')](_0x2e5fcf[_0x56a9('0x34')],_0x263f6f[_0x56a9('0x36')]),_0x20e3fa);if(_0x2e5fcf[_0x56a9('0x34')][_0x56a9('0x3e')]){_0x4665ad[_0x56a9('0x3f')]=_['merge'](_0x4665ad[_0x56a9('0x3f')],{'$or':_[_0x56a9('0x2e')](_0x20e3fa,function(_0x2e3273){if(_0x2e3273[_0x56a9('0x32')]!==_0x56a9('0x40')){var _0x2265a5={};_0x2265a5[_0x2e3273[_0x56a9('0x2b')]]={'$like':'%'+_0x2e5fcf['query'][_0x56a9('0x3e')]+'%'};return _0x2265a5;}})});}_0x4665ad=_[_0x56a9('0x41')]({},_0x4665ad,_0x2e5fcf[_0x56a9('0x42')]);var _0x2806ba={'where':_0x4665ad[_0x56a9('0x3f')]};return db['SquareOdbc'][_0x56a9('0x1e')](_0x2806ba)[_0x56a9('0x25')](function(_0x46de91){_0x47d6a1[_0x56a9('0x1e')]=_0x46de91;if(_0x2e5fcf[_0x56a9('0x34')]['includeAll']){_0x4665ad['include']=[{'all':!![]}];}return db[_0x56a9('0x2f')][_0x56a9('0x43')](_0x4665ad);})[_0x56a9('0x25')](function(_0x1dfb00){_0x47d6a1[_0x56a9('0x44')]=_0x1dfb00;return _0x47d6a1;})[_0x56a9('0x25')](respondWithFilteredResult(_0x1764bb,_0x4665ad))[_0x56a9('0x45')](handleError(_0x1764bb,null));};exports[_0x56a9('0x46')]=function(_0x4ef23a,_0x4f2a13){var _0x580d07={'raw':!![],'where':{'id':_0x4ef23a[_0x56a9('0x47')]['id']}},_0x18d4a3={};_0x18d4a3['model']=_[_0x56a9('0x35')](db[_0x56a9('0x2f')][_0x56a9('0x30')]);_0x18d4a3[_0x56a9('0x34')]=_[_0x56a9('0x35')](_0x4ef23a[_0x56a9('0x34')]);_0x18d4a3[_0x56a9('0x36')]=_[_0x56a9('0x38')](_0x18d4a3[_0x56a9('0x33')],_0x18d4a3['query']);_0x580d07['attributes']=_['intersection'](_0x18d4a3[_0x56a9('0x33')],qs[_0x56a9('0x39')](_0x4ef23a[_0x56a9('0x34')]['fields']));_0x580d07[_0x56a9('0x37')]=_0x580d07[_0x56a9('0x37')]['length']?_0x580d07['attributes']:_0x18d4a3[_0x56a9('0x33')];if(_0x4ef23a[_0x56a9('0x34')]['includeAll']){_0x580d07[_0x56a9('0x48')]=[{'all':!![]}];}_0x580d07=_[_0x56a9('0x41')]({},_0x580d07,_0x4ef23a[_0x56a9('0x42')]);return db[_0x56a9('0x2f')][_0x56a9('0x49')](_0x580d07)[_0x56a9('0x25')](handleEntityNotFound(_0x4f2a13,null))[_0x56a9('0x25')](respondWithResult(_0x4f2a13,null))[_0x56a9('0x45')](handleError(_0x4f2a13,null));};exports[_0x56a9('0x4a')]=function(_0x54295c,_0x3eb5f9){return db[_0x56a9('0x2f')]['create'](_0x54295c['body'],{})[_0x56a9('0x25')](function(_0x19d56d){var _0x375782=_0x54295c[_0x56a9('0x4b')][_0x56a9('0x27')]({'plain':!![]});if(!_0x375782)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x375782[_0x56a9('0x4c')]===_0x56a9('0x4b')){var _0x537e3f=_0x19d56d['get']({'plain':!![]});var _0x2f8008=_0x56a9('0x28');return db[_0x56a9('0x4d')]['find']({'where':{'name':_0x2f8008,'userProfileId':_0x375782[_0x56a9('0x4e')]},'raw':!![]})[_0x56a9('0x25')](function(_0xdae0d3){if(_0xdae0d3&&_0xdae0d3[_0x56a9('0x4f')]===0x0){return db['UserProfileResource'][_0x56a9('0x4a')]({'name':_0x537e3f['name'],'resourceId':_0x537e3f['id'],'type':_0xdae0d3[_0x56a9('0x2b')],'sectionId':_0xdae0d3['id']},{})[_0x56a9('0x25')](function(){return _0x19d56d;});}else{return _0x19d56d;}})[_0x56a9('0x45')](function(_0x2409eb){logger['error'](_0x56a9('0x50'),_0x2409eb);throw _0x2409eb;});}return _0x19d56d;})['then'](respondWithResult(_0x3eb5f9,0xc9))['catch'](handleError(_0x3eb5f9,null));};exports[_0x56a9('0x24')]=function(_0x313dd0,_0x38e790){if(_0x313dd0[_0x56a9('0x51')]['id']){delete _0x313dd0[_0x56a9('0x51')]['id'];}return db['SquareOdbc'][_0x56a9('0x49')]({'where':{'id':_0x313dd0[_0x56a9('0x47')]['id']}})[_0x56a9('0x25')](handleEntityNotFound(_0x38e790,null))[_0x56a9('0x25')](saveUpdates(_0x313dd0[_0x56a9('0x51')],null))[_0x56a9('0x25')](respondWithResult(_0x38e790,null))[_0x56a9('0x45')](handleError(_0x38e790,null));};exports[_0x56a9('0x26')]=function(_0x7e80d2,_0x53ba2a){return db['SquareOdbc'][_0x56a9('0x49')]({'where':{'id':_0x7e80d2[_0x56a9('0x47')]['id']}})[_0x56a9('0x25')](handleEntityNotFound(_0x53ba2a,null))[_0x56a9('0x25')](removeEntity(_0x53ba2a,null))['catch'](handleError(_0x53ba2a,null));};exports[_0x56a9('0x52')]=function(_0x4558a0,_0x40910d,_0x57a5d1){var _0x2c06a6;return db[_0x56a9('0x2f')][_0x56a9('0x49')]({'where':{'id':_0x4558a0[_0x56a9('0x47')]['id']},'attributes':['id','dsn']})['then'](handleEntityNotFound(_0x40910d,null))[_0x56a9('0x25')](function(_0x4302a8){if(_0x4302a8){var _0x24fb70=require(_0x56a9('0x53'))();_0x24fb70[_0x56a9('0x54')](_0x4302a8[_0x56a9('0x55')]);_0x24fb70[_0x56a9('0x56')]();return _0x4302a8;}})[_0x56a9('0x25')](respondWithResult(_0x40910d,null))['catch'](handleError(_0x40910d,null));};
\ No newline at end of file
+var _0xc202=['order','sort','where','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','params','options','find','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','test','odbc','openSync','dsn','closeSync','rimraf','zip-dir','fast-json-patch','request-promise','moment','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','get','ODBC','UserProfileResource','name','send','index','SquareOdbc','rawAttributes','fieldName','key','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit'];(function(_0x2064e5,_0x4f6fa2){var _0x21a233=function(_0x1b2491){while(--_0x1b2491){_0x2064e5['push'](_0x2064e5['shift']());}};_0x21a233(++_0x4f6fa2);}(_0xc202,0x126));var _0x2c20=function(_0x2dd16b,_0x2afbbf){_0x2dd16b=_0x2dd16b-0x0;var _0x456d44=_0xc202[_0x2dd16b];return _0x456d44;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x2c20('0x0'));var zipdir=require(_0x2c20('0x1'));var jsonpatch=require(_0x2c20('0x2'));var rp=require(_0x2c20('0x3'));var moment=require(_0x2c20('0x4'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x2c20('0x5'));var path=require('path');var sox=require(_0x2c20('0x6'));var csv=require(_0x2c20('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x2c20('0x8'));var _=require(_0x2c20('0x9'));var squel=require(_0x2c20('0xa'));var crypto=require(_0x2c20('0xb'));var jsforce=require(_0x2c20('0xc'));var deskjs=require(_0x2c20('0xd'));var toCsv=require(_0x2c20('0x7'));var querystring=require(_0x2c20('0xe'));var Papa=require(_0x2c20('0xf'));var Redis=require(_0x2c20('0x10'));var authService=require(_0x2c20('0x11'));var qs=require(_0x2c20('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x2c20('0x13'))('api');var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x2c20('0x14'));var db=require(_0x2c20('0x15'))['db'];function respondWithStatusCode(_0x1bfbaa,_0x4dc561){_0x4dc561=_0x4dc561||0xcc;return function(_0x1f4007){if(_0x1f4007){return _0x1bfbaa[_0x2c20('0x16')](_0x4dc561);}return _0x1bfbaa[_0x2c20('0x17')](_0x4dc561)[_0x2c20('0x18')]();};}function respondWithResult(_0x5bed76,_0x565fbe){_0x565fbe=_0x565fbe||0xc8;return function(_0x4adb14){if(_0x4adb14){return _0x5bed76['status'](_0x565fbe)[_0x2c20('0x19')](_0x4adb14);}};}function respondWithFilteredResult(_0x178154,_0x29d09e){return function(_0xef11f0){if(_0xef11f0){var _0x1149f3=typeof _0x29d09e[_0x2c20('0x1a')]==='undefined'&&typeof _0x29d09e[_0x2c20('0x1b')]===_0x2c20('0x1c');var _0x2977bc=_0xef11f0[_0x2c20('0x1d')];var _0x15cf3e=_0x1149f3?0x0:_0x29d09e[_0x2c20('0x1a')];var _0x18f2bf=_0x1149f3?_0xef11f0[_0x2c20('0x1d')]:_0x29d09e['offset']+_0x29d09e['limit'];var _0x1e67de;if(_0x18f2bf>=_0x2977bc){_0x18f2bf=_0x2977bc;_0x1e67de=0xc8;}else{_0x1e67de=0xce;}_0x178154['status'](_0x1e67de);return _0x178154[_0x2c20('0x1e')](_0x2c20('0x1f'),_0x15cf3e+'-'+_0x18f2bf+'/'+_0x2977bc)[_0x2c20('0x19')](_0xef11f0);}return null;};}function patchUpdates(_0x258f23){return function(_0x7edd7){try{jsonpatch[_0x2c20('0x20')](_0x7edd7,_0x258f23,!![]);}catch(_0x2ea6aa){return BPromise[_0x2c20('0x21')](_0x2ea6aa);}return _0x7edd7[_0x2c20('0x22')]();};}function saveUpdates(_0x53e58e,_0x483ab6){return function(_0x511959){if(_0x511959){return _0x511959[_0x2c20('0x23')](_0x53e58e)[_0x2c20('0x24')](function(_0x434425){return _0x434425;});}return null;};}function removeEntity(_0x3639ed,_0x5e68d){return function(_0x464dc9){if(_0x464dc9){return _0x464dc9[_0x2c20('0x25')]()[_0x2c20('0x24')](function(){var _0x32177c=_0x464dc9[_0x2c20('0x26')]({'plain':!![]});var _0x3e7453=_0x2c20('0x27');return db[_0x2c20('0x28')][_0x2c20('0x25')]({'where':{'type':_0x3e7453,'resourceId':_0x32177c['id']}})['then'](function(){return _0x464dc9;});})[_0x2c20('0x24')](function(){_0x3639ed[_0x2c20('0x17')](0xcc)[_0x2c20('0x18')]();});}};}function handleEntityNotFound(_0xa51e24,_0x3cf044){return function(_0x2318b8){if(!_0x2318b8){_0xa51e24['sendStatus'](0x194);}return _0x2318b8;};}function handleError(_0x7074ac,_0x533c6f){_0x533c6f=_0x533c6f||0x1f4;return function(_0x295d74){logger['error'](_0x295d74['stack']);if(_0x295d74['name']){delete _0x295d74[_0x2c20('0x29')];}_0x7074ac[_0x2c20('0x17')](_0x533c6f)[_0x2c20('0x2a')](_0x295d74);};}exports[_0x2c20('0x2b')]=function(_0x44b49c,_0x736050){var _0x3b42fe={},_0x33cf23={},_0x1bc52c={'count':0x0,'rows':[]};var _0x2212d6=_['map'](db[_0x2c20('0x2c')][_0x2c20('0x2d')],function(_0x21c2e0){return{'name':_0x21c2e0[_0x2c20('0x2e')],'type':_0x21c2e0['type'][_0x2c20('0x2f')]};});_0x33cf23[_0x2c20('0x30')]=_['map'](_0x2212d6,_0x2c20('0x29'));_0x33cf23[_0x2c20('0x31')]=_[_0x2c20('0x32')](_0x44b49c[_0x2c20('0x31')]);_0x33cf23[_0x2c20('0x33')]=_['intersection'](_0x33cf23[_0x2c20('0x30')],_0x33cf23[_0x2c20('0x31')]);_0x3b42fe[_0x2c20('0x34')]=_[_0x2c20('0x35')](_0x33cf23[_0x2c20('0x30')],qs[_0x2c20('0x36')](_0x44b49c['query'][_0x2c20('0x36')]));_0x3b42fe[_0x2c20('0x34')]=_0x3b42fe['attributes'][_0x2c20('0x37')]?_0x3b42fe['attributes']:_0x33cf23['model'];if(!_0x44b49c['query'][_0x2c20('0x38')](_0x2c20('0x39'))){_0x3b42fe[_0x2c20('0x1b')]=qs['limit'](_0x44b49c[_0x2c20('0x31')][_0x2c20('0x1b')]);_0x3b42fe[_0x2c20('0x1a')]=qs[_0x2c20('0x1a')](_0x44b49c[_0x2c20('0x31')][_0x2c20('0x1a')]);}_0x3b42fe[_0x2c20('0x3a')]=qs[_0x2c20('0x3b')](_0x44b49c[_0x2c20('0x31')][_0x2c20('0x3b')]);_0x3b42fe[_0x2c20('0x3c')]=qs[_0x2c20('0x33')](_['pick'](_0x44b49c[_0x2c20('0x31')],_0x33cf23['filters']),_0x2212d6);if(_0x44b49c[_0x2c20('0x31')][_0x2c20('0x3d')]){_0x3b42fe[_0x2c20('0x3c')]=_[_0x2c20('0x3e')](_0x3b42fe['where'],{'$or':_['map'](_0x2212d6,function(_0x5b8d32){if(_0x5b8d32['type']!==_0x2c20('0x3f')){var _0x47abf4={};_0x47abf4[_0x5b8d32[_0x2c20('0x29')]]={'$like':'%'+_0x44b49c['query'][_0x2c20('0x3d')]+'%'};return _0x47abf4;}})});}_0x3b42fe=_[_0x2c20('0x3e')]({},_0x3b42fe,_0x44b49c['options']);var _0x5eff67={'where':_0x3b42fe[_0x2c20('0x3c')]};return db[_0x2c20('0x2c')][_0x2c20('0x1d')](_0x5eff67)['then'](function(_0x51345c){_0x1bc52c[_0x2c20('0x1d')]=_0x51345c;if(_0x44b49c[_0x2c20('0x31')][_0x2c20('0x40')]){_0x3b42fe[_0x2c20('0x41')]=[{'all':!![]}];}return db['SquareOdbc'][_0x2c20('0x42')](_0x3b42fe);})[_0x2c20('0x24')](function(_0x2ba6d4){_0x1bc52c[_0x2c20('0x43')]=_0x2ba6d4;return _0x1bc52c;})[_0x2c20('0x24')](respondWithFilteredResult(_0x736050,_0x3b42fe))[_0x2c20('0x44')](handleError(_0x736050,null));};exports[_0x2c20('0x45')]=function(_0x13012b,_0x3af5c5){var _0x243eaf={'raw':!![],'where':{'id':_0x13012b[_0x2c20('0x46')]['id']}},_0x1019aa={};_0x1019aa[_0x2c20('0x30')]=_[_0x2c20('0x32')](db[_0x2c20('0x2c')][_0x2c20('0x2d')]);_0x1019aa[_0x2c20('0x31')]=_[_0x2c20('0x32')](_0x13012b[_0x2c20('0x31')]);_0x1019aa[_0x2c20('0x33')]=_[_0x2c20('0x35')](_0x1019aa[_0x2c20('0x30')],_0x1019aa['query']);_0x243eaf[_0x2c20('0x34')]=_['intersection'](_0x1019aa[_0x2c20('0x30')],qs[_0x2c20('0x36')](_0x13012b[_0x2c20('0x31')][_0x2c20('0x36')]));_0x243eaf['attributes']=_0x243eaf[_0x2c20('0x34')][_0x2c20('0x37')]?_0x243eaf[_0x2c20('0x34')]:_0x1019aa[_0x2c20('0x30')];if(_0x13012b['query'][_0x2c20('0x40')]){_0x243eaf[_0x2c20('0x41')]=[{'all':!![]}];}_0x243eaf=_[_0x2c20('0x3e')]({},_0x243eaf,_0x13012b[_0x2c20('0x47')]);return db[_0x2c20('0x2c')][_0x2c20('0x48')](_0x243eaf)[_0x2c20('0x24')](handleEntityNotFound(_0x3af5c5,null))[_0x2c20('0x24')](respondWithResult(_0x3af5c5,null))[_0x2c20('0x44')](handleError(_0x3af5c5,null));};exports[_0x2c20('0x49')]=function(_0x1f8706,_0x1f0373){return db[_0x2c20('0x2c')][_0x2c20('0x49')](_0x1f8706['body'],{})[_0x2c20('0x24')](function(_0x354e84){var _0x48d02c=_0x1f8706[_0x2c20('0x4a')][_0x2c20('0x26')]({'plain':!![]});if(!_0x48d02c)throw new Error(_0x2c20('0x4b'));if(_0x48d02c[_0x2c20('0x4c')]===_0x2c20('0x4a')){var _0x2478ff=_0x354e84[_0x2c20('0x26')]({'plain':!![]});var _0xa20931=_0x2c20('0x27');return db[_0x2c20('0x4d')]['find']({'where':{'name':_0xa20931,'userProfileId':_0x48d02c[_0x2c20('0x4e')]},'raw':!![]})[_0x2c20('0x24')](function(_0x5768cd){if(_0x5768cd&&_0x5768cd[_0x2c20('0x4f')]===0x0){return db['UserProfileResource'][_0x2c20('0x49')]({'name':_0x2478ff[_0x2c20('0x29')],'resourceId':_0x2478ff['id'],'type':_0x5768cd[_0x2c20('0x29')],'sectionId':_0x5768cd['id']},{})[_0x2c20('0x24')](function(){return _0x354e84;});}else{return _0x354e84;}})[_0x2c20('0x44')](function(_0x788832){logger[_0x2c20('0x50')](_0x2c20('0x51'),_0x788832);throw _0x788832;});}return _0x354e84;})[_0x2c20('0x24')](respondWithResult(_0x1f0373,0xc9))[_0x2c20('0x44')](handleError(_0x1f0373,null));};exports['update']=function(_0x4f34d7,_0x54be70){if(_0x4f34d7['body']['id']){delete _0x4f34d7['body']['id'];}return db[_0x2c20('0x2c')][_0x2c20('0x48')]({'where':{'id':_0x4f34d7['params']['id']}})['then'](handleEntityNotFound(_0x54be70,null))[_0x2c20('0x24')](saveUpdates(_0x4f34d7[_0x2c20('0x52')],null))[_0x2c20('0x24')](respondWithResult(_0x54be70,null))[_0x2c20('0x44')](handleError(_0x54be70,null));};exports[_0x2c20('0x25')]=function(_0x28d439,_0x8934ba){return db[_0x2c20('0x2c')][_0x2c20('0x48')]({'where':{'id':_0x28d439[_0x2c20('0x46')]['id']}})[_0x2c20('0x24')](handleEntityNotFound(_0x8934ba,null))['then'](removeEntity(_0x8934ba,null))['catch'](handleError(_0x8934ba,null));};exports[_0x2c20('0x53')]=function(_0x4f67e6,_0xc5bb8,_0x413976){var _0x4479e2;return db[_0x2c20('0x2c')][_0x2c20('0x48')]({'where':{'id':_0x4f67e6[_0x2c20('0x46')]['id']},'attributes':['id','dsn']})[_0x2c20('0x24')](handleEntityNotFound(_0xc5bb8,null))[_0x2c20('0x24')](function(_0x3cce93){if(_0x3cce93){var _0x5347f2=require(_0x2c20('0x54'))();_0x5347f2[_0x2c20('0x55')](_0x3cce93[_0x2c20('0x56')]);_0x5347f2[_0x2c20('0x57')]();return _0x3cce93;}})[_0x2c20('0x24')](respondWithResult(_0xc5bb8,null))['catch'](handleError(_0xc5bb8,null));};
\ No newline at end of file
index 1549e23..456bab2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe5bd=['request-promise','path','../../config/environment','exports','define','square_odbc','../../config/logger','moment','bluebird'];(function(_0x1d4aa8,_0x177c03){var _0x1d9b0f=function(_0x373326){while(--_0x373326){_0x1d4aa8['push'](_0x1d4aa8['shift']());}};_0x1d9b0f(++_0x177c03);}(_0xe5bd,0x1ad));var _0xde5b=function(_0x19d805,_0x4a867d){_0x19d805=_0x19d805-0x0;var _0x1e5188=_0xe5bd[_0x19d805];return _0x1e5188;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xde5b('0x0'))('api');var moment=require(_0xde5b('0x1'));var BPromise=require(_0xde5b('0x2'));var rp=require(_0xde5b('0x3'));var fs=require('fs');var path=require(_0xde5b('0x4'));var rimraf=require('rimraf');var config=require(_0xde5b('0x5'));var attributes=require('./squareOdbc.attributes');module[_0xde5b('0x6')]=function(_0x5dace7,_0x4ef781){return _0x5dace7[_0xde5b('0x7')]('SquareOdbc',attributes,{'tableName':_0xde5b('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xdf73=['path','rimraf','./squareOdbc.attributes','define','square_odbc','lodash','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x4d3835,_0x4f5f50){var _0x823439=function(_0x25a5c6){while(--_0x25a5c6){_0x4d3835['push'](_0x4d3835['shift']());}};_0x823439(++_0x4f5f50);}(_0xdf73,0x9f));var _0x3df7=function(_0x571ae8,_0x13ed2d){_0x571ae8=_0x571ae8-0x0;var _0x5e8250=_0xdf73[_0x571ae8];return _0x5e8250;};'use strict';var _=require(_0x3df7('0x0'));var util=require('util');var logger=require(_0x3df7('0x1'))(_0x3df7('0x2'));var moment=require(_0x3df7('0x3'));var BPromise=require(_0x3df7('0x4'));var rp=require(_0x3df7('0x5'));var fs=require('fs');var path=require(_0x3df7('0x6'));var rimraf=require(_0x3df7('0x7'));var config=require('../../config/environment');var attributes=require(_0x3df7('0x8'));module['exports']=function(_0x1366ff,_0x3e9ef7){return _0x1366ff[_0x3df7('0x9')]('SquareOdbc',attributes,{'tableName':_0x3df7('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ed5f6a2..b4ec3a3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xce1b=['ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','then','SquareOdbc,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','info','result','catch','ShowSquareOdbc','options','raw','where','attributes','include','map','model','lodash','util','bluebird'];(function(_0x1d24eb,_0x12295b){var _0x1dc576=function(_0x4d5770){while(--_0x4d5770){_0x1d24eb['push'](_0x1d24eb['shift']());}};_0x1dc576(++_0x12295b);}(_0xce1b,0x176));var _0xbce1=function(_0x1cbdc9,_0x42e476){_0x1cbdc9=_0x1cbdc9-0x0;var _0x2c2f74=_0xce1b[_0x1cbdc9];return _0x2c2f74;};'use strict';var _=require(_0xbce1('0x0'));var util=require(_0xbce1('0x1'));var moment=require('moment');var BPromise=require(_0xbce1('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbce1('0x3'));var db=require(_0xbce1('0x4'))['db'];var utils=require(_0xbce1('0x5'));var logger=require(_0xbce1('0x6'))('rpc');var config=require(_0xbce1('0x7'));var jayson=require('jayson/promise');var client=jayson[_0xbce1('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3b56ba,_0x4c78f3,_0x5bf201){return new BPromise(function(_0x59ef88,_0x1fda72){return client[_0xbce1('0x9')](_0x3b56ba,_0x5bf201)[_0xbce1('0xa')](function(_0x1f9e9f){logger['info'](_0xbce1('0xb'),_0x4c78f3,'request\x20sent');logger[_0xbce1('0xc')]('SquareOdbc,\x20%s,\x20%s,\x20%s',_0x4c78f3,_0xbce1('0xd'),JSON[_0xbce1('0xe')](_0x1f9e9f));if(_0x1f9e9f[_0xbce1('0xf')]){if(_0x1f9e9f['error'][_0xbce1('0x10')]===0x1f4){logger[_0xbce1('0xf')](_0xbce1('0xb'),_0x4c78f3,_0x1f9e9f[_0xbce1('0xf')][_0xbce1('0x11')]);return _0x1fda72(_0x1f9e9f['error'][_0xbce1('0x11')]);}logger[_0xbce1('0xf')](_0xbce1('0xb'),_0x4c78f3,_0x1f9e9f[_0xbce1('0xf')]['message']);return _0x59ef88(_0x1f9e9f[_0xbce1('0xf')]['message']);}else{logger[_0xbce1('0x12')]('SquareOdbc,\x20%s,\x20%s',_0x4c78f3,_0xbce1('0xd'));_0x59ef88(_0x1f9e9f[_0xbce1('0x13')]['message']);}})[_0xbce1('0x14')](function(_0x43a659){logger['error'](_0xbce1('0xb'),_0x4c78f3,_0x43a659);_0x1fda72(_0x43a659);});});}exports[_0xbce1('0x15')]=function(_0x496b39){var _0x406b96=this;return new Promise(function(_0x2fece0,_0x3f3843){return db['SquareOdbc']['find']({'raw':_0x496b39[_0xbce1('0x16')]?_0x496b39[_0xbce1('0x16')][_0xbce1('0x17')]===undefined?!![]:![]:!![],'where':_0x496b39[_0xbce1('0x16')]?_0x496b39['options'][_0xbce1('0x18')]||null:null,'attributes':_0x496b39['options']?_0x496b39[_0xbce1('0x16')][_0xbce1('0x19')]||null:null,'include':_0x496b39['options']?_0x496b39['options']['include']?_['map'](_0x496b39[_0xbce1('0x16')][_0xbce1('0x1a')],function(_0x519f49){return{'model':db[_0x519f49['model']],'as':_0x519f49['as'],'attributes':_0x519f49[_0xbce1('0x19')],'include':_0x519f49[_0xbce1('0x1a')]?_[_0xbce1('0x1b')](_0x519f49['include'],function(_0x4c19e3){return{'model':db[_0x4c19e3[_0xbce1('0x1c')]],'as':_0x4c19e3['as'],'attributes':_0x4c19e3[_0xbce1('0x19')],'include':_0x4c19e3['include']?_['map'](_0x4c19e3[_0xbce1('0x1a')],function(_0x176964){return{'model':db[_0x176964['model']],'as':_0x176964['as'],'attributes':_0x176964['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x34ae53){logger[_0xbce1('0x12')](_0xbce1('0x15'),_0x496b39);logger['debug'](_0xbce1('0x15'),_0x496b39,JSON[_0xbce1('0xe')](_0x34ae53));_0x2fece0(_0x34ae53);})[_0xbce1('0x14')](function(_0x2f1333){logger[_0xbce1('0xf')]('ShowSquareOdbc',_0x2f1333[_0xbce1('0x11')],_0x496b39);_0x3f3843(_0x406b96['error'](0x1f4,_0x2f1333[_0xbce1('0x11')]));});});};
\ No newline at end of file
+var _0xcc97=['ShowSquareOdbc','SquareOdbc','find','options','raw','where','attributes','include','map','model','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','http','request','then','SquareOdbc,\x20%s,\x20%s','request\x20sent','debug','SquareOdbc,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch'];(function(_0x297269,_0x3e4349){var _0x1f3d2b=function(_0x12df13){while(--_0x12df13){_0x297269['push'](_0x297269['shift']());}};_0x1f3d2b(++_0x3e4349);}(_0xcc97,0x1aa));var _0x7cc9=function(_0x158cf9,_0x558785){_0x158cf9=_0x158cf9-0x0;var _0x51d830=_0xcc97[_0x158cf9];return _0x51d830;};'use strict';var _=require('lodash');var util=require(_0x7cc9('0x0'));var moment=require(_0x7cc9('0x1'));var BPromise=require('bluebird');var rs=require(_0x7cc9('0x2'));var fs=require('fs');var Redis=require(_0x7cc9('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0x7cc9('0x4'));var logger=require(_0x7cc9('0x5'))(_0x7cc9('0x6'));var config=require('../../config/environment');var jayson=require(_0x7cc9('0x7'));var client=jayson['client'][_0x7cc9('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x224872,_0x2d3a82,_0x43e8fa){return new BPromise(function(_0xe253b0,_0x54f0f3){return client[_0x7cc9('0x9')](_0x224872,_0x43e8fa)[_0x7cc9('0xa')](function(_0x4a5668){logger['info'](_0x7cc9('0xb'),_0x2d3a82,_0x7cc9('0xc'));logger[_0x7cc9('0xd')](_0x7cc9('0xe'),_0x2d3a82,'request\x20sent',JSON[_0x7cc9('0xf')](_0x4a5668));if(_0x4a5668['error']){if(_0x4a5668['error'][_0x7cc9('0x10')]===0x1f4){logger[_0x7cc9('0x11')](_0x7cc9('0xb'),_0x2d3a82,_0x4a5668['error'][_0x7cc9('0x12')]);return _0x54f0f3(_0x4a5668[_0x7cc9('0x11')]['message']);}logger['error'](_0x7cc9('0xb'),_0x2d3a82,_0x4a5668['error'][_0x7cc9('0x12')]);return _0xe253b0(_0x4a5668[_0x7cc9('0x11')][_0x7cc9('0x12')]);}else{logger[_0x7cc9('0x13')](_0x7cc9('0xb'),_0x2d3a82,_0x7cc9('0xc'));_0xe253b0(_0x4a5668[_0x7cc9('0x14')][_0x7cc9('0x12')]);}})[_0x7cc9('0x15')](function(_0x2d085e){logger[_0x7cc9('0x11')](_0x7cc9('0xb'),_0x2d3a82,_0x2d085e);_0x54f0f3(_0x2d085e);});});}exports[_0x7cc9('0x16')]=function(_0x334d68){var _0x5141ac=this;return new Promise(function(_0x2bf5c6,_0x2c07bf){return db[_0x7cc9('0x17')][_0x7cc9('0x18')]({'raw':_0x334d68[_0x7cc9('0x19')]?_0x334d68[_0x7cc9('0x19')][_0x7cc9('0x1a')]===undefined?!![]:![]:!![],'where':_0x334d68[_0x7cc9('0x19')]?_0x334d68[_0x7cc9('0x19')][_0x7cc9('0x1b')]||null:null,'attributes':_0x334d68[_0x7cc9('0x19')]?_0x334d68[_0x7cc9('0x19')][_0x7cc9('0x1c')]||null:null,'include':_0x334d68[_0x7cc9('0x19')]?_0x334d68[_0x7cc9('0x19')][_0x7cc9('0x1d')]?_[_0x7cc9('0x1e')](_0x334d68[_0x7cc9('0x19')][_0x7cc9('0x1d')],function(_0x556fd5){return{'model':db[_0x556fd5[_0x7cc9('0x1f')]],'as':_0x556fd5['as'],'attributes':_0x556fd5['attributes'],'include':_0x556fd5['include']?_['map'](_0x556fd5['include'],function(_0x1e9d43){return{'model':db[_0x1e9d43['model']],'as':_0x1e9d43['as'],'attributes':_0x1e9d43[_0x7cc9('0x1c')],'include':_0x1e9d43[_0x7cc9('0x1d')]?_['map'](_0x1e9d43[_0x7cc9('0x1d')],function(_0x5c152a){return{'model':db[_0x5c152a[_0x7cc9('0x1f')]],'as':_0x5c152a['as'],'attributes':_0x5c152a['attributes']};}):[]};}):[]};}):[]:[]})[_0x7cc9('0xa')](function(_0x5b2844){logger['info'](_0x7cc9('0x16'),_0x334d68);logger['debug'](_0x7cc9('0x16'),_0x334d68,JSON['stringify'](_0x5b2844));_0x2bf5c6(_0x5b2844);})[_0x7cc9('0x15')](function(_0x27bef9){logger[_0x7cc9('0x11')](_0x7cc9('0x16'),_0x27bef9[_0x7cc9('0x12')],_0x334d68);_0x2c07bf(_0x5141ac[_0x7cc9('0x11')](0x1f4,_0x27bef9[_0x7cc9('0x12')]));});});};
\ No newline at end of file
index 9b71a8e..34eeb5c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeec6=['post','destroy','delete','removeUsers','exports','multer','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','/:id','show','/:id/users','getUsers'];(function(_0x16e534,_0x122388){var _0x38928c=function(_0x26cc81){while(--_0x26cc81){_0x16e534['push'](_0x16e534['shift']());}};_0x38928c(++_0x122388);}(_0xeec6,0x125));var _0x6eec=function(_0x4c8a8f,_0x997ef){_0x4c8a8f=_0x4c8a8f-0x0;var _0x404500=_0xeec6[_0x4c8a8f];return _0x404500;};'use strict';var multer=require(_0x6eec('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x6eec('0x1'));var express=require(_0x6eec('0x2'));var router=express[_0x6eec('0x3')]();var fs_extra=require(_0x6eec('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x6eec('0x5'));var config=require(_0x6eec('0x6'));var controller=require('./squareProject.controller');router[_0x6eec('0x7')]('/',auth[_0x6eec('0x8')](),controller['index']);router[_0x6eec('0x7')](_0x6eec('0x9'),auth[_0x6eec('0x8')](),controller[_0x6eec('0xa')]);router['get'](_0x6eec('0xb'),auth[_0x6eec('0x8')](),controller[_0x6eec('0xc')]);router['post']('/',auth[_0x6eec('0x8')](),controller['create']);router[_0x6eec('0xd')](_0x6eec('0xb'),auth[_0x6eec('0x8')](),controller['addUsers']);router['put']('/:id',auth[_0x6eec('0x8')](),controller['update']);router['delete']('/:id',auth[_0x6eec('0x8')](),controller[_0x6eec('0xe')]);router[_0x6eec('0xf')]('/:id/users',auth[_0x6eec('0x8')](),controller[_0x6eec('0x10')]);module[_0x6eec('0x11')]=router;
\ No newline at end of file
+var _0xc5df=['delete','exports','path','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareProject.controller','isAuthenticated','index','get','/:id','show','/:id/users','post','addUsers','update'];(function(_0x524ce0,_0x3670b2){var _0x38299f=function(_0x513ef4){while(--_0x513ef4){_0x524ce0['push'](_0x524ce0['shift']());}};_0x38299f(++_0x3670b2);}(_0xc5df,0x80));var _0xfc5d=function(_0x2118a5,_0x113f1e){_0x2118a5=_0x2118a5-0x0;var _0x466c9d=_0xc5df[_0x2118a5];return _0x466c9d;};'use strict';var multer=require('multer');var util=require('util');var path=require(_0xfc5d('0x0'));var timeout=require(_0xfc5d('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xfc5d('0x2'));var auth=require(_0xfc5d('0x3'));var interaction=require(_0xfc5d('0x4'));var config=require(_0xfc5d('0x5'));var controller=require(_0xfc5d('0x6'));router['get']('/',auth[_0xfc5d('0x7')](),controller[_0xfc5d('0x8')]);router[_0xfc5d('0x9')](_0xfc5d('0xa'),auth[_0xfc5d('0x7')](),controller[_0xfc5d('0xb')]);router['get'](_0xfc5d('0xc'),auth[_0xfc5d('0x7')](),controller['getUsers']);router[_0xfc5d('0xd')]('/',auth[_0xfc5d('0x7')](),controller['create']);router[_0xfc5d('0xd')](_0xfc5d('0xc'),auth[_0xfc5d('0x7')](),controller[_0xfc5d('0xe')]);router['put'](_0xfc5d('0xa'),auth[_0xfc5d('0x7')](),controller[_0xfc5d('0xf')]);router['delete'](_0xfc5d('0xa'),auth[_0xfc5d('0x7')](),controller['destroy']);router[_0xfc5d('0x10')]('/:id/users',auth[_0xfc5d('0x7')](),controller['removeUsers']);module[_0xfc5d('0x11')]=router;
\ No newline at end of file
index ecedc64..7f26b7e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x533b=['STRING','name','TEXT','long','getDataValue','preproduction','toString','utf8','production','DATE','exports'];(function(_0x50b10b,_0x1bc771){var _0x4f2c51=function(_0x23fcbe){while(--_0x23fcbe){_0x50b10b['push'](_0x50b10b['shift']());}};_0x4f2c51(++_0x1bc771);}(_0x533b,0x18b));var _0xb533=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x533b[_0x14add3];return _0x4a174f;};'use strict';var Sequelize=require('sequelize');module[_0xb533('0x0')]={'name':{'type':Sequelize[_0xb533('0x1')],'unique':_0xb533('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0xb533('0x1')]},'notes':{'type':Sequelize[_0xb533('0x3')]},'preproduction':{'type':Sequelize['BLOB'](_0xb533('0x4')),'get':function(){if(this[_0xb533('0x5')](_0xb533('0x6'))){return this[_0xb533('0x5')](_0xb533('0x6'))[_0xb533('0x7')](_0xb533('0x8'));}}},'production':{'type':Sequelize['BLOB']('long'),'get':function(){if(this[_0xb533('0x5')](_0xb533('0x9'))){return this[_0xb533('0x5')]('production')['toString']('utf8');}}},'savedAt':{'type':Sequelize[_0xb533('0xa')]},'publishedAt':{'type':Sequelize[_0xb533('0xa')]}};
\ No newline at end of file
+var _0x17bb=['TEXT','BLOB','preproduction','getDataValue','toString','utf8','long','DATE','sequelize','exports','name','STRING'];(function(_0x260b48,_0x117977){var _0x3f730b=function(_0x7a1e53){while(--_0x7a1e53){_0x260b48['push'](_0x260b48['shift']());}};_0x3f730b(++_0x117977);}(_0x17bb,0x80));var _0xb17b=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x17bb[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0xb17b('0x0'));module[_0xb17b('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xb17b('0x2'),'allowNull':![]},'description':{'type':Sequelize[_0xb17b('0x3')]},'notes':{'type':Sequelize[_0xb17b('0x4')]},'preproduction':{'type':Sequelize[_0xb17b('0x5')]('long'),'get':function(){if(this['getDataValue'](_0xb17b('0x6'))){return this[_0xb17b('0x7')](_0xb17b('0x6'))[_0xb17b('0x8')](_0xb17b('0x9'));}}},'production':{'type':Sequelize[_0xb17b('0x5')](_0xb17b('0xa')),'get':function(){if(this['getDataValue']('production')){return this[_0xb17b('0x7')]('production')[_0xb17b('0x8')](_0xb17b('0x9'));}}},'savedAt':{'type':Sequelize[_0xb17b('0xb')]},'publishedAt':{'type':Sequelize[_0xb17b('0xb')]}};
\ No newline at end of file
index 855272d..b6edd9d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x126f=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','localhost','socket.io-emitter','./squareProject.socket','register','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','get','SquareProjects','UserProfileResource','error','stack','name','send','index','map','SquareProject','rawAttributes','fieldName','key','model','filters','intersection','query','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','options','includeAll','findAll','rows','catch','show','keys','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','params','addUsers','omit','ids','removeUsers','isArray','userSquareProject:remove','findOne','User','getUsers','eml-format','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','squel','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs'];(function(_0x2a60a6,_0x3968ff){var _0x574216=function(_0x39eddd){while(--_0x39eddd){_0x2a60a6['push'](_0x2a60a6['shift']());}};_0x574216(++_0x3968ff);}(_0x126f,0x1d8));var _0xf126=function(_0x35dfe6,_0x4244fa){_0x35dfe6=_0x35dfe6-0x0;var _0x59651c=_0x126f[_0x35dfe6];return _0x59651c;};'use strict';var emlformat=require(_0xf126('0x0'));var rimraf=require(_0xf126('0x1'));var zipdir=require(_0xf126('0x2'));var jsonpatch=require(_0xf126('0x3'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xf126('0x4'));var Mustache=require(_0xf126('0x5'));var util=require(_0xf126('0x6'));var path=require(_0xf126('0x7'));var sox=require('sox');var csv=require(_0xf126('0x8'));var ejs=require(_0xf126('0x9'));var fs=require('fs');var fs_extra=require(_0xf126('0xa'));var _=require(_0xf126('0xb'));var squel=require(_0xf126('0xc'));var crypto=require('crypto');var jsforce=require(_0xf126('0xd'));var deskjs=require('desk.js');var toCsv=require(_0xf126('0x8'));var querystring=require(_0xf126('0xe'));var Papa=require('papaparse');var Redis=require(_0xf126('0xf'));var authService=require(_0xf126('0x10'));var qs=require(_0xf126('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xf126('0x12'));var logger=require(_0xf126('0x13'))(_0xf126('0x14'));var utils=require(_0xf126('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf126('0x16'));var db=require(_0xf126('0x17'))['db'];config[_0xf126('0x18')]=_['defaults'](config['redis'],{'host':_0xf126('0x19'),'port':0x18eb});var socket=require(_0xf126('0x1a'))(new Redis(config['redis']));require(_0xf126('0x1b'))[_0xf126('0x1c')](socket);function respondWithStatusCode(_0x54ae44,_0x5c4210){_0x5c4210=_0x5c4210||0xcc;return function(_0x110c64){if(_0x110c64){return _0x54ae44[_0xf126('0x1d')](_0x5c4210);}return _0x54ae44[_0xf126('0x1e')](_0x5c4210)[_0xf126('0x1f')]();};}function respondWithResult(_0x51fc45,_0x3428cf){_0x3428cf=_0x3428cf||0xc8;return function(_0x309c69){if(_0x309c69){return _0x51fc45[_0xf126('0x1e')](_0x3428cf)[_0xf126('0x20')](_0x309c69);}};}function respondWithFilteredResult(_0x1d9e25,_0xb3c56e){return function(_0xc1f9ec){if(_0xc1f9ec){var _0x3c8b83=typeof _0xb3c56e[_0xf126('0x21')]===_0xf126('0x22')&&typeof _0xb3c56e[_0xf126('0x23')]===_0xf126('0x22');var _0x2fa7e6=_0xc1f9ec[_0xf126('0x24')];var _0x32c6b9=_0x3c8b83?0x0:_0xb3c56e[_0xf126('0x21')];var _0x451211=_0x3c8b83?_0xc1f9ec[_0xf126('0x24')]:_0xb3c56e[_0xf126('0x21')]+_0xb3c56e[_0xf126('0x23')];var _0xe82625;if(_0x451211>=_0x2fa7e6){_0x451211=_0x2fa7e6;_0xe82625=0xc8;}else{_0xe82625=0xce;}_0x1d9e25[_0xf126('0x1e')](_0xe82625);return _0x1d9e25[_0xf126('0x25')](_0xf126('0x26'),_0x32c6b9+'-'+_0x451211+'/'+_0x2fa7e6)['json'](_0xc1f9ec);}return null;};}function patchUpdates(_0x39bbed){return function(_0x569fa9){try{jsonpatch[_0xf126('0x27')](_0x569fa9,_0x39bbed,!![]);}catch(_0x26eb26){return BPromise[_0xf126('0x28')](_0x26eb26);}return _0x569fa9['save']();};}function saveUpdates(_0x29d018,_0x726083){return function(_0x5044b4){if(_0x5044b4){return _0x5044b4[_0xf126('0x29')](_0x29d018)[_0xf126('0x2a')](function(_0x17b12a){return _0x17b12a;});}return null;};}function removeEntity(_0xc76220,_0x42d1b9){return function(_0xf4d040){if(_0xf4d040){return _0xf4d040[_0xf126('0x2b')]()[_0xf126('0x2a')](function(){var _0x1f0fb3=_0xf4d040[_0xf126('0x2c')]({'plain':!![]});var _0x3eef2c=_0xf126('0x2d');return db[_0xf126('0x2e')]['destroy']({'where':{'type':_0x3eef2c,'resourceId':_0x1f0fb3['id']}})[_0xf126('0x2a')](function(){return _0xf4d040;});})[_0xf126('0x2a')](function(){_0xc76220['status'](0xcc)[_0xf126('0x1f')]();});}};}function handleEntityNotFound(_0x1e38ca,_0xfea39d){return function(_0x4af0e8){if(!_0x4af0e8){_0x1e38ca['sendStatus'](0x194);}return _0x4af0e8;};}function handleError(_0x20719a,_0x2db676){_0x2db676=_0x2db676||0x1f4;return function(_0x16cf4e){logger[_0xf126('0x2f')](_0x16cf4e[_0xf126('0x30')]);if(_0x16cf4e[_0xf126('0x31')]){delete _0x16cf4e['name'];}_0x20719a['status'](_0x2db676)[_0xf126('0x32')](_0x16cf4e);};}exports[_0xf126('0x33')]=function(_0x520dd6,_0x2f2e3b){var _0x18b756={},_0x3da34b={},_0x7a7d20={'count':0x0,'rows':[]};var _0x4e0a43=_[_0xf126('0x34')](db[_0xf126('0x35')][_0xf126('0x36')],function(_0x8712f3){return{'name':_0x8712f3[_0xf126('0x37')],'type':_0x8712f3['type'][_0xf126('0x38')]};});_0x3da34b[_0xf126('0x39')]=_[_0xf126('0x34')](_0x4e0a43,_0xf126('0x31'));_0x3da34b['query']=_['keys'](_0x520dd6['query']);_0x3da34b[_0xf126('0x3a')]=_[_0xf126('0x3b')](_0x3da34b[_0xf126('0x39')],_0x3da34b[_0xf126('0x3c')]);_0x18b756[_0xf126('0x3d')]=_[_0xf126('0x3b')](_0x3da34b[_0xf126('0x39')],qs[_0xf126('0x3e')](_0x520dd6[_0xf126('0x3c')][_0xf126('0x3e')]));_0x18b756['attributes']=_0x18b756['attributes'][_0xf126('0x3f')]?_0x18b756['attributes']:_0x3da34b[_0xf126('0x39')];if(!_0x520dd6['query'][_0xf126('0x40')](_0xf126('0x41'))){_0x18b756['limit']=qs['limit'](_0x520dd6[_0xf126('0x3c')][_0xf126('0x23')]);_0x18b756[_0xf126('0x21')]=qs[_0xf126('0x21')](_0x520dd6[_0xf126('0x3c')]['offset']);}_0x18b756['order']=qs[_0xf126('0x42')](_0x520dd6[_0xf126('0x3c')]['sort']);_0x18b756[_0xf126('0x43')]=qs[_0xf126('0x3a')](_[_0xf126('0x44')](_0x520dd6[_0xf126('0x3c')],_0x3da34b['filters']),_0x4e0a43);if(_0x520dd6[_0xf126('0x3c')][_0xf126('0x45')]){_0x18b756[_0xf126('0x43')]=_[_0xf126('0x46')](_0x18b756['where'],{'$or':_[_0xf126('0x34')](_0x4e0a43,function(_0x589b77){if(_0x589b77[_0xf126('0x47')]!=='VIRTUAL'){var _0x330cbe={};_0x330cbe[_0x589b77[_0xf126('0x31')]]={'$like':'%'+_0x520dd6['query'][_0xf126('0x45')]+'%'};return _0x330cbe;}})});}_0x18b756=_[_0xf126('0x46')]({},_0x18b756,_0x520dd6[_0xf126('0x48')]);var _0x49471d={'where':_0x18b756[_0xf126('0x43')]};return db[_0xf126('0x35')][_0xf126('0x24')](_0x49471d)['then'](function(_0x1bbbf1){_0x7a7d20[_0xf126('0x24')]=_0x1bbbf1;if(_0x520dd6['query'][_0xf126('0x49')]){_0x18b756['include']=[{'all':!![]}];}return db[_0xf126('0x35')][_0xf126('0x4a')](_0x18b756);})[_0xf126('0x2a')](function(_0x58d137){_0x7a7d20[_0xf126('0x4b')]=_0x58d137;return _0x7a7d20;})[_0xf126('0x2a')](respondWithFilteredResult(_0x2f2e3b,_0x18b756))[_0xf126('0x4c')](handleError(_0x2f2e3b,null));};exports[_0xf126('0x4d')]=function(_0xa56354,_0x5b6cb3){var _0x57820c={'raw':![],'where':{'id':_0xa56354['params']['id']}},_0x43b876={};_0x43b876[_0xf126('0x39')]=_['keys'](db[_0xf126('0x35')][_0xf126('0x36')]);_0x43b876[_0xf126('0x3c')]=_[_0xf126('0x4e')](_0xa56354['query']);_0x43b876[_0xf126('0x3a')]=_[_0xf126('0x3b')](_0x43b876[_0xf126('0x39')],_0x43b876[_0xf126('0x3c')]);_0x57820c[_0xf126('0x3d')]=_[_0xf126('0x3b')](_0x43b876[_0xf126('0x39')],qs[_0xf126('0x3e')](_0xa56354[_0xf126('0x3c')][_0xf126('0x3e')]));_0x57820c['attributes']=_0x57820c['attributes'][_0xf126('0x3f')]?_0x57820c[_0xf126('0x3d')]:_0x43b876[_0xf126('0x39')];if(_0xa56354['query'][_0xf126('0x49')]){_0x57820c['include']=[{'all':!![]}];}_0x57820c=_['merge']({},_0x57820c,_0xa56354['options']);return db[_0xf126('0x35')][_0xf126('0x4f')](_0x57820c)[_0xf126('0x2a')](handleEntityNotFound(_0x5b6cb3,null))['then'](respondWithResult(_0x5b6cb3,null))['catch'](handleError(_0x5b6cb3,null));};exports[_0xf126('0x50')]=function(_0x4c1b8b,_0x2a9b3b){return db['SquareProject'][_0xf126('0x50')](_0x4c1b8b[_0xf126('0x51')],{})['then'](function(_0x2b0db8){var _0x89bef=_0x4c1b8b[_0xf126('0x52')][_0xf126('0x2c')]({'plain':!![]});if(!_0x89bef)throw new Error(_0xf126('0x53'));if(_0x89bef[_0xf126('0x54')]==='user'){var _0x4b9c7d=_0x2b0db8['get']({'plain':!![]});var _0x41b18e='SquareProjects';return db['UserProfileSection'][_0xf126('0x4f')]({'where':{'name':_0x41b18e,'userProfileId':_0x89bef[_0xf126('0x55')]},'raw':!![]})[_0xf126('0x2a')](function(_0x319cb0){if(_0x319cb0&&_0x319cb0[_0xf126('0x56')]===0x0){return db[_0xf126('0x2e')][_0xf126('0x50')]({'name':_0x4b9c7d['name'],'resourceId':_0x4b9c7d['id'],'type':_0x319cb0[_0xf126('0x31')],'sectionId':_0x319cb0['id']},{})['then'](function(){return _0x2b0db8;});}else{return _0x2b0db8;}})[_0xf126('0x4c')](function(_0x3f8b05){logger['error'](_0xf126('0x57'),_0x3f8b05);throw _0x3f8b05;});}return _0x2b0db8;})[_0xf126('0x2a')](respondWithResult(_0x2a9b3b,0xc9))[_0xf126('0x4c')](handleError(_0x2a9b3b,null));};exports[_0xf126('0x29')]=function(_0x2819f5,_0x545628){if(_0x2819f5[_0xf126('0x51')]['id']){delete _0x2819f5[_0xf126('0x51')]['id'];}return db[_0xf126('0x35')]['find']({'where':{'id':_0x2819f5['params']['id']}})['then'](handleEntityNotFound(_0x545628,null))[_0xf126('0x2a')](saveUpdates(_0x2819f5[_0xf126('0x51')],null))['then'](respondWithResult(_0x545628,null))[_0xf126('0x4c')](handleError(_0x545628,null));};exports[_0xf126('0x2b')]=function(_0x469b65,_0xf7a6cc){return db['SquareProject'][_0xf126('0x4f')]({'where':{'id':_0x469b65['params']['id']}})[_0xf126('0x2a')](handleEntityNotFound(_0xf7a6cc,null))[_0xf126('0x2a')](removeEntity(_0xf7a6cc,null))[_0xf126('0x4c')](handleError(_0xf7a6cc,null));};exports['addUsers']=function(_0x46ff26,_0x1077c7,_0x40c1f6){return db[_0xf126('0x35')]['find']({'where':{'id':_0x46ff26[_0xf126('0x58')]['id']}})[_0xf126('0x2a')](handleEntityNotFound(_0x1077c7,null))[_0xf126('0x2a')](function(_0x3780e0){if(_0x3780e0){return _0x3780e0[_0xf126('0x59')](_0x46ff26[_0xf126('0x51')]['ids'],_[_0xf126('0x5a')](_0x46ff26[_0xf126('0x51')],[_0xf126('0x5b'),'id'])||{});}})[_0xf126('0x2a')](respondWithResult(_0x1077c7,null))['catch'](handleError(_0x1077c7,null));};exports[_0xf126('0x5c')]=function(_0xcf00b,_0x4831fd,_0x5d988d){return db[_0xf126('0x35')]['find']({'where':{'id':_0xcf00b[_0xf126('0x58')]['id']}})[_0xf126('0x2a')](handleEntityNotFound(_0x4831fd,null))[_0xf126('0x2a')](function(_0x18090f){if(_0x18090f){return _0x18090f['removeUsers'](_0xcf00b['query'][_0xf126('0x5b')])['then'](function(){if(_[_0xf126('0x5d')](_0xcf00b[_0xf126('0x3c')][_0xf126('0x5b')])){for(var _0x5484e9=0x0;_0x5484e9<_0xcf00b[_0xf126('0x3c')][_0xf126('0x5b')][_0xf126('0x3f')];_0x5484e9+=0x1){socket['emit']('userSquareProject:remove',{'UserId':Number(_0xcf00b[_0xf126('0x3c')][_0xf126('0x5b')][_0x5484e9]),'SquareProjectId':Number(_0xcf00b[_0xf126('0x58')]['id'])});}}else{socket['emit'](_0xf126('0x5e'),{'UserId':Number(_0xcf00b[_0xf126('0x3c')][_0xf126('0x5b')]),'SquareProjectId':Number(_0xcf00b[_0xf126('0x58')]['id'])});}});}})[_0xf126('0x2a')](respondWithStatusCode(_0x4831fd,null))[_0xf126('0x4c')](handleError(_0x4831fd,null));};exports['getUsers']=function(_0x3df4fe,_0x73c4cc,_0x392c1c){var _0x5fcf95={};var _0x2fc398={};var _0x127f2b;var _0x2ef15a;return db[_0xf126('0x35')][_0xf126('0x5f')]({'where':{'id':_0x3df4fe[_0xf126('0x58')]['id']}})[_0xf126('0x2a')](handleEntityNotFound(_0x73c4cc,null))['then'](function(_0x661280){if(_0x661280){_0x127f2b=_0x661280;_0x2fc398[_0xf126('0x39')]=_['keys'](db[_0xf126('0x60')][_0xf126('0x36')]);_0x2fc398['query']=_[_0xf126('0x4e')](_0x3df4fe[_0xf126('0x3c')]);_0x2fc398[_0xf126('0x3a')]=_[_0xf126('0x3b')](_0x2fc398[_0xf126('0x39')],_0x2fc398[_0xf126('0x3c')]);_0x5fcf95[_0xf126('0x3d')]=_[_0xf126('0x3b')](_0x2fc398[_0xf126('0x39')],qs[_0xf126('0x3e')](_0x3df4fe[_0xf126('0x3c')][_0xf126('0x3e')]));_0x5fcf95[_0xf126('0x3d')]=_0x5fcf95[_0xf126('0x3d')][_0xf126('0x3f')]?_0x5fcf95[_0xf126('0x3d')]:_0x2fc398['model'];_0x5fcf95['order']=qs['sort'](_0x3df4fe['query'][_0xf126('0x42')]);_0x5fcf95[_0xf126('0x43')]=qs['filters'](_[_0xf126('0x44')](_0x3df4fe[_0xf126('0x3c')],_0x2fc398[_0xf126('0x3a')]));if(_0x3df4fe[_0xf126('0x3c')][_0xf126('0x45')]){_0x5fcf95[_0xf126('0x43')]=_[_0xf126('0x46')](_0x5fcf95[_0xf126('0x43')],{'$or':_[_0xf126('0x34')](_0x5fcf95[_0xf126('0x3d')],function(_0x3e3af2){var _0x371ca8={};_0x371ca8[_0x3e3af2]={'$like':'%'+_0x3df4fe[_0xf126('0x3c')][_0xf126('0x45')]+'%'};return _0x371ca8;})});}_0x5fcf95=_['merge']({},_0x5fcf95,_0x3df4fe['options']);return _0x127f2b[_0xf126('0x61')](_0x5fcf95);}})[_0xf126('0x2a')](function(_0x1ec082){if(_0x1ec082){_0x2ef15a=_0x1ec082[_0xf126('0x3f')];if(!_0x3df4fe[_0xf126('0x3c')]['hasOwnProperty'](_0xf126('0x41'))){_0x5fcf95[_0xf126('0x23')]=qs[_0xf126('0x23')](_0x3df4fe['query']['limit']);_0x5fcf95[_0xf126('0x21')]=qs[_0xf126('0x21')](_0x3df4fe[_0xf126('0x3c')][_0xf126('0x21')]);}return _0x127f2b[_0xf126('0x61')](_0x5fcf95);}})['then'](function(_0x27a73f){if(_0x27a73f){return _0x27a73f?{'count':_0x2ef15a,'rows':_0x27a73f}:null;}})[_0xf126('0x2a')](respondWithResult(_0x73c4cc,null))[_0xf126('0x4c')](handleError(_0x73c4cc,null));};
\ No newline at end of file
+var _0x752b=['User','order','lodash','ioredis','../../config/logger','../../config/environment','redis','defaults','localhost','./squareProject.socket','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','destroy','then','SquareProjects','UserProfileResource','stringify','error','stack','name','send','connect','agi','port','127.0.0.1','index','map','SquareProject','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','sort','where','pick','merge','type','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','find','create','body','user','role','get','UserProfileSection','autoAssociation','update','params','production','addUsers','ids','omit','isArray','emit','userSquareProject:remove','getUsers','findOne'];(function(_0xa464c9,_0x7c86d8){var _0x3d73c4=function(_0x5c2056){while(--_0x5c2056){_0xa464c9['push'](_0xa464c9['shift']());}};_0x3d73c4(++_0x7c86d8);}(_0x752b,0xf2));var _0xb752=function(_0x4fdc36,_0x1246f2){_0x4fdc36=_0x4fdc36-0x0;var _0x287f61=_0x752b[_0x4fdc36];return _0x287f61;};'use strict';var _=require(_0xb752('0x0'));var Redis=require(_0xb752('0x1'));var qs=require('../../components/parsers/qs');var logger=require(_0xb752('0x2'))('api');var config=require(_0xb752('0x3'));var db=require('../../mysqldb')['db'];config[_0xb752('0x4')]=_[_0xb752('0x5')](config[_0xb752('0x4')],{'host':_0xb752('0x6'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb752('0x4')]));require(_0xb752('0x7'))['register'](socket);function respondWithStatusCode(_0x4b3168,_0x4c87f){_0x4c87f=_0x4c87f||0xcc;return function(_0x3d50c0){if(_0x3d50c0){return _0x4b3168[_0xb752('0x8')](_0x4c87f);}return _0x4b3168[_0xb752('0x9')](_0x4c87f)[_0xb752('0xa')]();};}function respondWithResult(_0x115395,_0x130914){_0x130914=_0x130914||0xc8;return function(_0x5ed86e){if(_0x5ed86e){return _0x115395[_0xb752('0x9')](_0x130914)[_0xb752('0xb')](_0x5ed86e);}};}function respondWithFilteredResult(_0x353572,_0x170287){return function(_0x39909e){if(_0x39909e){var _0xf045f4=typeof _0x170287[_0xb752('0xc')]===_0xb752('0xd')&&typeof _0x170287[_0xb752('0xe')]==='undefined';var _0x46891c=_0x39909e[_0xb752('0xf')];var _0x56f187=_0xf045f4?0x0:_0x170287[_0xb752('0xc')];var _0x2bcac2=_0xf045f4?_0x39909e[_0xb752('0xf')]:_0x170287['offset']+_0x170287[_0xb752('0xe')];var _0x4d811d;if(_0x2bcac2>=_0x46891c){_0x2bcac2=_0x46891c;_0x4d811d=0xc8;}else{_0x4d811d=0xce;}_0x353572[_0xb752('0x9')](_0x4d811d);return _0x353572['set'](_0xb752('0x10'),_0x56f187+'-'+_0x2bcac2+'/'+_0x46891c)[_0xb752('0xb')](_0x39909e);}return null;};}function saveUpdates(_0x256385){return function(_0x4f7aa2){if(_0x4f7aa2){return _0x4f7aa2['update'](_0x256385)['then'](function(_0x3d4622){return _0x3d4622;});}return null;};}function removeEntity(_0x54f60a){return function(_0x200420){if(_0x200420){return _0x200420[_0xb752('0x11')]()[_0xb752('0x12')](function(){var _0x12b7ec=_0x200420['get']({'plain':!![]});var _0x2613c9=_0xb752('0x13');return db[_0xb752('0x14')]['destroy']({'where':{'type':_0x2613c9,'resourceId':_0x12b7ec['id']}})[_0xb752('0x12')](function(){return _0x200420;});})[_0xb752('0x12')](function(){return createAgiSocket();})[_0xb752('0x12')](function(_0x29f029){_0x29f029['end'](JSON[_0xb752('0x15')]({'id':_0x200420['id'],'deleted':!![]}));})[_0xb752('0x12')](function(){_0x54f60a[_0xb752('0x9')](0xcc)[_0xb752('0xa')]();});}};}function handleEntityNotFound(_0x55623b){return function(_0x12d03f){if(!_0x12d03f){_0x55623b['sendStatus'](0x194);}return _0x12d03f;};}function handleError(_0x1439d0,_0x27417a){_0x27417a=_0x27417a||0x1f4;return function(_0x103ed7){logger[_0xb752('0x16')](_0x103ed7[_0xb752('0x17')]);if(_0x103ed7['name']){delete _0x103ed7[_0xb752('0x18')];}_0x1439d0[_0xb752('0x9')](_0x27417a)[_0xb752('0x19')](_0x103ed7);};}function createAgiSocket(){try{var _0x3e46c2=require('net');var _0x2e0153=new _0x3e46c2['Socket']();return _0x2e0153[_0xb752('0x1a')](config[_0xb752('0x1b')][_0xb752('0x1c')]||0x11dd,_0xb752('0x1d'));}catch(_0x5d21b2){throw _0x5d21b2;}}exports[_0xb752('0x1e')]=function(_0x31d147,_0x40aad2){var _0x3c40c0={},_0x43e8f1={},_0x2cba9b={'count':0x0,'rows':[]};var _0x4bf7c7=_[_0xb752('0x1f')](db[_0xb752('0x20')][_0xb752('0x21')],function(_0x5f4041){return{'name':_0x5f4041[_0xb752('0x22')],'type':_0x5f4041['type'][_0xb752('0x23')]};});_0x43e8f1['model']=_[_0xb752('0x1f')](_0x4bf7c7,_0xb752('0x18'));_0x43e8f1[_0xb752('0x24')]=_[_0xb752('0x25')](_0x31d147[_0xb752('0x24')]);_0x43e8f1[_0xb752('0x26')]=_[_0xb752('0x27')](_0x43e8f1[_0xb752('0x28')],_0x43e8f1['query']);_0x3c40c0[_0xb752('0x29')]=_[_0xb752('0x27')](_0x43e8f1[_0xb752('0x28')],qs[_0xb752('0x2a')](_0x31d147[_0xb752('0x24')]['fields']));_0x3c40c0[_0xb752('0x29')]=_0x3c40c0['attributes'][_0xb752('0x2b')]?_0x3c40c0[_0xb752('0x29')]:_0x43e8f1[_0xb752('0x28')];if(!_0x31d147['query']['hasOwnProperty'](_0xb752('0x2c'))){_0x3c40c0[_0xb752('0xe')]=qs[_0xb752('0xe')](_0x31d147[_0xb752('0x24')][_0xb752('0xe')]);_0x3c40c0[_0xb752('0xc')]=qs['offset'](_0x31d147['query']['offset']);}_0x3c40c0['order']=qs[_0xb752('0x2d')](_0x31d147['query'][_0xb752('0x2d')]);_0x3c40c0[_0xb752('0x2e')]=qs[_0xb752('0x26')](_[_0xb752('0x2f')](_0x31d147['query'],_0x43e8f1['filters']),_0x4bf7c7);if(_0x31d147[_0xb752('0x24')]['filter']){_0x3c40c0[_0xb752('0x2e')]=_[_0xb752('0x30')](_0x3c40c0[_0xb752('0x2e')],{'$or':_[_0xb752('0x1f')](_0x4bf7c7,function(_0x18351e){if(_0x18351e[_0xb752('0x31')]!==_0xb752('0x32')){var _0x458063={};_0x458063[_0x18351e[_0xb752('0x18')]]={'$like':'%'+_0x31d147[_0xb752('0x24')][_0xb752('0x33')]+'%'};return _0x458063;}})});}_0x3c40c0=_[_0xb752('0x30')]({},_0x3c40c0,_0x31d147[_0xb752('0x34')]);var _0x1f2a2c={'where':_0x3c40c0[_0xb752('0x2e')]};return db['SquareProject']['count'](_0x1f2a2c)[_0xb752('0x12')](function(_0x2852cf){_0x2cba9b[_0xb752('0xf')]=_0x2852cf;if(_0x31d147['query'][_0xb752('0x35')]){_0x3c40c0[_0xb752('0x36')]=[{'all':!![]}];}return db[_0xb752('0x20')][_0xb752('0x37')](_0x3c40c0);})[_0xb752('0x12')](function(_0x31ff29){_0x2cba9b[_0xb752('0x38')]=_0x31ff29;return _0x2cba9b;})['then'](respondWithFilteredResult(_0x40aad2,_0x3c40c0))[_0xb752('0x39')](handleError(_0x40aad2,null));};exports[_0xb752('0x3a')]=function(_0x4f56c1,_0x30e86e){var _0x574a26={'raw':![],'where':{'id':_0x4f56c1['params']['id']}},_0x1191d6={};_0x1191d6[_0xb752('0x28')]=_[_0xb752('0x25')](db['SquareProject'][_0xb752('0x21')]);_0x1191d6[_0xb752('0x24')]=_[_0xb752('0x25')](_0x4f56c1['query']);_0x1191d6[_0xb752('0x26')]=_[_0xb752('0x27')](_0x1191d6[_0xb752('0x28')],_0x1191d6[_0xb752('0x24')]);_0x574a26[_0xb752('0x29')]=_[_0xb752('0x27')](_0x1191d6['model'],qs[_0xb752('0x2a')](_0x4f56c1['query']['fields']));_0x574a26[_0xb752('0x29')]=_0x574a26[_0xb752('0x29')][_0xb752('0x2b')]?_0x574a26[_0xb752('0x29')]:_0x1191d6[_0xb752('0x28')];if(_0x4f56c1['query'][_0xb752('0x35')]){_0x574a26[_0xb752('0x36')]=[{'all':!![]}];}_0x574a26=_[_0xb752('0x30')]({},_0x574a26,_0x4f56c1['options']);return db[_0xb752('0x20')][_0xb752('0x3b')](_0x574a26)['then'](handleEntityNotFound(_0x30e86e,null))[_0xb752('0x12')](respondWithResult(_0x30e86e,null))['catch'](handleError(_0x30e86e,null));};exports['create']=function(_0x338c67,_0x477db4){return db[_0xb752('0x20')][_0xb752('0x3c')](_0x338c67[_0xb752('0x3d')],{})[_0xb752('0x12')](function(_0x292ff4){var _0x340c32=_0x338c67[_0xb752('0x3e')]['get']({'plain':!![]});if(!_0x340c32)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x340c32[_0xb752('0x3f')]===_0xb752('0x3e')){var _0x5a5e52=_0x292ff4[_0xb752('0x40')]({'plain':!![]});var _0x1cbec7=_0xb752('0x13');return db[_0xb752('0x41')]['find']({'where':{'name':_0x1cbec7,'userProfileId':_0x340c32['userProfileId']},'raw':!![]})['then'](function(_0x34df8c){if(_0x34df8c&&_0x34df8c[_0xb752('0x42')]===0x0){return db['UserProfileResource']['create']({'name':_0x5a5e52[_0xb752('0x18')],'resourceId':_0x5a5e52['id'],'type':_0x34df8c[_0xb752('0x18')],'sectionId':_0x34df8c['id']},{})['then'](function(){return _0x292ff4;});}else{return _0x292ff4;}})[_0xb752('0x39')](function(_0x5b93e3){logger[_0xb752('0x16')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5b93e3);throw _0x5b93e3;});}return _0x292ff4;})[_0xb752('0x12')](respondWithResult(_0x477db4,0xc9))['catch'](handleError(_0x477db4,null));};exports[_0xb752('0x43')]=function(_0x57b60c,_0x840b90){if(_0x57b60c[_0xb752('0x3d')]['id']){delete _0x57b60c['body']['id'];}return db[_0xb752('0x20')][_0xb752('0x3b')]({'where':{'id':_0x57b60c[_0xb752('0x44')]['id']}})['then'](handleEntityNotFound(_0x840b90,null))[_0xb752('0x12')](saveUpdates(_0x57b60c[_0xb752('0x3d')],null))[_0xb752('0x12')](function(_0x3da7a7){if(!_0x3da7a7)return;var _0x5532cc=_0x3da7a7[_0xb752('0x40')]({'plain':!![]});return _0x5532cc;})[_0xb752('0x12')](function(_0x3b45c2){var _0x253b7a=new Redis(config['redis']);_0x253b7a['publish'](_0xb752('0x1b'),JSON[_0xb752('0x15')](_[_0xb752('0x2f')](_0x3b45c2,['id',_0xb752('0x18'),_0xb752('0x45')])));return _0x3b45c2;})[_0xb752('0x12')](respondWithResult(_0x840b90,null))[_0xb752('0x39')](handleError(_0x840b90,null));};exports[_0xb752('0x11')]=function(_0x5c1bf6,_0x8b14d1){return db[_0xb752('0x20')][_0xb752('0x3b')]({'where':{'id':_0x5c1bf6['params']['id']}})[_0xb752('0x12')](handleEntityNotFound(_0x8b14d1,null))['then'](removeEntity(_0x8b14d1,null))[_0xb752('0x39')](handleError(_0x8b14d1,null));};exports[_0xb752('0x46')]=function(_0x28c88e,_0x37f817){return db['SquareProject'][_0xb752('0x3b')]({'where':{'id':_0x28c88e[_0xb752('0x44')]['id']}})[_0xb752('0x12')](handleEntityNotFound(_0x37f817,null))['then'](function(_0x41dd91){if(_0x41dd91){return _0x41dd91[_0xb752('0x46')](_0x28c88e['body'][_0xb752('0x47')],_[_0xb752('0x48')](_0x28c88e[_0xb752('0x3d')],[_0xb752('0x47'),'id'])||{});}})[_0xb752('0x12')](respondWithResult(_0x37f817,null))[_0xb752('0x39')](handleError(_0x37f817,null));};exports['removeUsers']=function(_0x2521e2,_0x48bc4f){return db[_0xb752('0x20')][_0xb752('0x3b')]({'where':{'id':_0x2521e2[_0xb752('0x44')]['id']}})['then'](handleEntityNotFound(_0x48bc4f,null))[_0xb752('0x12')](function(_0x2d066b){if(_0x2d066b){return _0x2d066b['removeUsers'](_0x2521e2[_0xb752('0x24')][_0xb752('0x47')])[_0xb752('0x12')](function(){if(_[_0xb752('0x49')](_0x2521e2[_0xb752('0x24')][_0xb752('0x47')])){for(var _0x5da9df=0x0;_0x5da9df<_0x2521e2[_0xb752('0x24')]['ids']['length'];_0x5da9df+=0x1){socket[_0xb752('0x4a')]('userSquareProject:remove',{'UserId':Number(_0x2521e2[_0xb752('0x24')]['ids'][_0x5da9df]),'SquareProjectId':Number(_0x2521e2[_0xb752('0x44')]['id'])});}}else{socket[_0xb752('0x4a')](_0xb752('0x4b'),{'UserId':Number(_0x2521e2[_0xb752('0x24')][_0xb752('0x47')]),'SquareProjectId':Number(_0x2521e2[_0xb752('0x44')]['id'])});}});}})[_0xb752('0x12')](respondWithStatusCode(_0x48bc4f,null))[_0xb752('0x39')](handleError(_0x48bc4f,null));};exports[_0xb752('0x4c')]=function(_0x5c3bbc,_0x208141){var _0x5edf84={};var _0x59c977={};var _0x1fa3b0;var _0x53c348;return db[_0xb752('0x20')][_0xb752('0x4d')]({'where':{'id':_0x5c3bbc[_0xb752('0x44')]['id']}})[_0xb752('0x12')](handleEntityNotFound(_0x208141,null))[_0xb752('0x12')](function(_0x2b0da8){if(_0x2b0da8){_0x1fa3b0=_0x2b0da8;_0x59c977['model']=_[_0xb752('0x25')](db[_0xb752('0x4e')][_0xb752('0x21')]);_0x59c977[_0xb752('0x24')]=_['keys'](_0x5c3bbc[_0xb752('0x24')]);_0x59c977[_0xb752('0x26')]=_[_0xb752('0x27')](_0x59c977[_0xb752('0x28')],_0x59c977[_0xb752('0x24')]);_0x5edf84[_0xb752('0x29')]=_[_0xb752('0x27')](_0x59c977[_0xb752('0x28')],qs[_0xb752('0x2a')](_0x5c3bbc[_0xb752('0x24')][_0xb752('0x2a')]));_0x5edf84[_0xb752('0x29')]=_0x5edf84[_0xb752('0x29')][_0xb752('0x2b')]?_0x5edf84[_0xb752('0x29')]:_0x59c977[_0xb752('0x28')];_0x5edf84[_0xb752('0x4f')]=qs[_0xb752('0x2d')](_0x5c3bbc[_0xb752('0x24')]['sort']);_0x5edf84[_0xb752('0x2e')]=qs[_0xb752('0x26')](_[_0xb752('0x2f')](_0x5c3bbc[_0xb752('0x24')],_0x59c977[_0xb752('0x26')]));if(_0x5c3bbc[_0xb752('0x24')][_0xb752('0x33')]){_0x5edf84[_0xb752('0x2e')]=_[_0xb752('0x30')](_0x5edf84[_0xb752('0x2e')],{'$or':_[_0xb752('0x1f')](_0x5edf84[_0xb752('0x29')],function(_0x1a76af){var _0x418bbc={};_0x418bbc[_0x1a76af]={'$like':'%'+_0x5c3bbc['query'][_0xb752('0x33')]+'%'};return _0x418bbc;})});}_0x5edf84=_[_0xb752('0x30')]({},_0x5edf84,_0x5c3bbc[_0xb752('0x34')]);return _0x1fa3b0[_0xb752('0x4c')](_0x5edf84);}})[_0xb752('0x12')](function(_0x58a823){if(_0x58a823){_0x53c348=_0x58a823[_0xb752('0x2b')];if(!_0x5c3bbc[_0xb752('0x24')]['hasOwnProperty'](_0xb752('0x2c'))){_0x5edf84[_0xb752('0xe')]=qs[_0xb752('0xe')](_0x5c3bbc[_0xb752('0x24')][_0xb752('0xe')]);_0x5edf84['offset']=qs[_0xb752('0xc')](_0x5c3bbc[_0xb752('0x24')][_0xb752('0xc')]);}return _0x1fa3b0[_0xb752('0x4c')](_0x5edf84);}})[_0xb752('0x12')](function(_0x2bdfa2){if(_0x2bdfa2){return _0x2bdfa2?{'count':_0x53c348,'rows':_0x2bdfa2}:null;}})[_0xb752('0x12')](respondWithResult(_0x208141,null))[_0xb752('0x39')](handleError(_0x208141,null));};
\ No newline at end of file
index 5568d88..ceaaa89 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0690=['SquareProject','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook','exports','events'];(function(_0x5253aa,_0x3d6557){var _0x42b6bd=function(_0x12558a){while(--_0x12558a){_0x5253aa['push'](_0x5253aa['shift']());}};_0x42b6bd(++_0x3d6557);}(_0x0690,0x1a3));var _0x0069=function(_0xf319ab,_0x2de501){_0xf319ab=_0xf319ab-0x0;var _0x1abfe8=_0x0690[_0xf319ab];return _0x1abfe8;};'use strict';var EventEmitter=require(_0x0069('0x0'));var SquareProject=require('../../mysqldb')['db'][_0x0069('0x1')];var SquareProjectEvents=new EventEmitter();SquareProjectEvents[_0x0069('0x2')](0x0);var events={'afterCreate':_0x0069('0x3'),'afterUpdate':_0x0069('0x4'),'afterDestroy':_0x0069('0x5')};function emitEvent(_0x5dd6ee){return function(_0x327e74,_0x73d58e,_0x39c023){SquareProjectEvents[_0x0069('0x6')](_0x5dd6ee+':'+_0x327e74['id'],_0x327e74);SquareProjectEvents[_0x0069('0x6')](_0x5dd6ee,_0x327e74);_0x39c023(null);};}for(var e in events){if(events[_0x0069('0x7')](e)){var event=events[e];SquareProject[_0x0069('0x8')](e,emitEvent(event));}}module[_0x0069('0x9')]=SquareProjectEvents;
\ No newline at end of file
+var _0xf3a7=['hook','exports','events','../../mysqldb','update','emit','hasOwnProperty'];(function(_0x4c706c,_0x57ebb7){var _0x1d8dc7=function(_0x50a0f3){while(--_0x50a0f3){_0x4c706c['push'](_0x4c706c['shift']());}};_0x1d8dc7(++_0x57ebb7);}(_0xf3a7,0xcd));var _0x7f3a=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xf3a7[_0x3dd15e];return _0x231fd0;};'use strict';var EventEmitter=require(_0x7f3a('0x0'));var SquareProject=require(_0x7f3a('0x1'))['db']['SquareProject'];var SquareProjectEvents=new EventEmitter();SquareProjectEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0x7f3a('0x2'),'afterDestroy':'remove'};function emitEvent(_0x231e3d){return function(_0x280c67,_0x4e6fe1,_0x168a1e){SquareProjectEvents[_0x7f3a('0x3')](_0x231e3d+':'+_0x280c67['id'],_0x280c67);SquareProjectEvents[_0x7f3a('0x3')](_0x231e3d,_0x280c67);_0x168a1e(null);};}for(var e in events){if(events[_0x7f3a('0x4')](e)){var event=events[e];SquareProject[_0x7f3a('0x5')](e,emitEvent(event));}}module[_0x7f3a('0x6')]=SquareProjectEvents;
\ No newline at end of file
index 7406d51..6434323 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x38f6=['rimraf','../../config/environment','./squareProject.attributes','exports','define','SquareProject','square_projects','changed','preproduction','savedAt','YYYY-MM-DD\x20HH:mm:ss','production','publishedAt','../../config/logger','moment','bluebird','request-promise'];(function(_0x31fa17,_0x4e9825){var _0x9d8c5e=function(_0x1de9a7){while(--_0x1de9a7){_0x31fa17['push'](_0x31fa17['shift']());}};_0x9d8c5e(++_0x4e9825);}(_0x38f6,0x1b6));var _0x638f=function(_0x4e9043,_0x11fb9e){_0x4e9043=_0x4e9043-0x0;var _0x3af9e8=_0x38f6[_0x4e9043];return _0x3af9e8;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x638f('0x0'))('api');var moment=require(_0x638f('0x1'));var BPromise=require(_0x638f('0x2'));var rp=require(_0x638f('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x638f('0x4'));var config=require(_0x638f('0x5'));var attributes=require(_0x638f('0x6'));module[_0x638f('0x7')]=function(_0x1d89e5,_0xb1c5f){return _0x1d89e5[_0x638f('0x8')](_0x638f('0x9'),attributes,{'tableName':_0x638f('0xa'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x2fb349,_0x42408a,_0x5dd74a){if(_0x2fb349[_0x638f('0xb')](_0x638f('0xc'))){_0x2fb349[_0x638f('0xd')]=moment()['format'](_0x638f('0xe'));}if(_0x2fb349['changed'](_0x638f('0xf'))){_0x2fb349[_0x638f('0x10')]=moment()['format'](_0x638f('0xe'));}_0x5dd74a(null,_0x2fb349);}}});};
\ No newline at end of file
+var _0x19ef=['path','rimraf','../../config/environment','./squareProject.attributes','exports','SquareProject','preproduction','savedAt','format','YYYY-MM-DD\x20HH:mm:ss','changed','production','publishedAt','lodash','../../config/logger','moment','bluebird','request-promise'];(function(_0x2b3c82,_0x127b8a){var _0x99a562=function(_0x2b9a3b){while(--_0x2b9a3b){_0x2b3c82['push'](_0x2b3c82['shift']());}};_0x99a562(++_0x127b8a);}(_0x19ef,0x12d));var _0xf19e=function(_0x15bff9,_0x2e49aa){_0x15bff9=_0x15bff9-0x0;var _0x15ddee=_0x19ef[_0x15bff9];return _0x15ddee;};'use strict';var _=require(_0xf19e('0x0'));var util=require('util');var logger=require(_0xf19e('0x1'))('api');var moment=require(_0xf19e('0x2'));var BPromise=require(_0xf19e('0x3'));var rp=require(_0xf19e('0x4'));var fs=require('fs');var path=require(_0xf19e('0x5'));var rimraf=require(_0xf19e('0x6'));var config=require(_0xf19e('0x7'));var attributes=require(_0xf19e('0x8'));module[_0xf19e('0x9')]=function(_0x2e5f48,_0x1a4fc9){return _0x2e5f48['define'](_0xf19e('0xa'),attributes,{'tableName':'square_projects','paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3bdd96,_0x1550f6,_0x537703){if(_0x3bdd96['changed'](_0xf19e('0xb'))){_0x3bdd96[_0xf19e('0xc')]=moment()[_0xf19e('0xd')](_0xf19e('0xe'));}if(_0x3bdd96[_0xf19e('0xf')](_0xf19e('0x10'))){_0x3bdd96[_0xf19e('0x11')]=moment()[_0xf19e('0xd')](_0xf19e('0xe'));}_0x537703(null,_0x3bdd96);}}});};
\ No newline at end of file
index 4da291f..61dcec6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8df4=['ShowSquareProject','SquareProject','options','raw','attributes','include','map','model','then','stringify','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','localhost','socket.io-emitter','./squareProject.socket','register','request','info','SquareProject,\x20%s,\x20%s','request\x20sent','debug','SquareProject,\x20%s,\x20%s,\x20%s','error','code','message','result','catch'];(function(_0x1aee0f,_0x3e0878){var _0x44e7ac=function(_0x4a7b82){while(--_0x4a7b82){_0x1aee0f['push'](_0x1aee0f['shift']());}};_0x44e7ac(++_0x3e0878);}(_0x8df4,0x1ae));var _0x48df=function(_0x359bbe,_0x5b7fcc){_0x359bbe=_0x359bbe-0x0;var _0x1b3353=_0x8df4[_0x359bbe];return _0x1b3353;};'use strict';var _=require(_0x48df('0x0'));var util=require(_0x48df('0x1'));var moment=require(_0x48df('0x2'));var BPromise=require('bluebird');var rs=require(_0x48df('0x3'));var fs=require('fs');var Redis=require(_0x48df('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x48df('0x5'));var logger=require(_0x48df('0x6'))('rpc');var config=require(_0x48df('0x7'));var jayson=require(_0x48df('0x8'));var client=jayson['client']['http']({'port':0x232a});config['redis']=_['defaults'](config[_0x48df('0x9')],{'host':_0x48df('0xa'),'port':0x18eb});var socket=require(_0x48df('0xb'))(new Redis(config[_0x48df('0x9')]));require(_0x48df('0xc'))[_0x48df('0xd')](socket);function respondWithRpcPromise(_0x502867,_0x386fec,_0x594180){return new BPromise(function(_0x2c2933,_0x22edf4){return client[_0x48df('0xe')](_0x502867,_0x594180)['then'](function(_0x3ae557){logger[_0x48df('0xf')](_0x48df('0x10'),_0x386fec,_0x48df('0x11'));logger[_0x48df('0x12')](_0x48df('0x13'),_0x386fec,_0x48df('0x11'),JSON['stringify'](_0x3ae557));if(_0x3ae557[_0x48df('0x14')]){if(_0x3ae557[_0x48df('0x14')][_0x48df('0x15')]===0x1f4){logger[_0x48df('0x14')]('SquareProject,\x20%s,\x20%s',_0x386fec,_0x3ae557[_0x48df('0x14')][_0x48df('0x16')]);return _0x22edf4(_0x3ae557[_0x48df('0x14')][_0x48df('0x16')]);}logger[_0x48df('0x14')](_0x48df('0x10'),_0x386fec,_0x3ae557['error'][_0x48df('0x16')]);return _0x2c2933(_0x3ae557['error'][_0x48df('0x16')]);}else{logger[_0x48df('0xf')]('SquareProject,\x20%s,\x20%s',_0x386fec,_0x48df('0x11'));_0x2c2933(_0x3ae557[_0x48df('0x17')][_0x48df('0x16')]);}})[_0x48df('0x18')](function(_0xdaa3d8){logger[_0x48df('0x14')](_0x48df('0x10'),_0x386fec,_0xdaa3d8);_0x22edf4(_0xdaa3d8);});});}exports[_0x48df('0x19')]=function(_0x5e8527){var _0x5c2993=this;return new Promise(function(_0x580d50,_0x1d5439){return db[_0x48df('0x1a')]['find']({'raw':_0x5e8527[_0x48df('0x1b')]?_0x5e8527[_0x48df('0x1b')][_0x48df('0x1c')]===undefined?!![]:![]:!![],'where':_0x5e8527[_0x48df('0x1b')]?_0x5e8527[_0x48df('0x1b')]['where']||null:null,'attributes':_0x5e8527[_0x48df('0x1b')]?_0x5e8527[_0x48df('0x1b')][_0x48df('0x1d')]||null:null,'include':_0x5e8527[_0x48df('0x1b')]?_0x5e8527[_0x48df('0x1b')][_0x48df('0x1e')]?_[_0x48df('0x1f')](_0x5e8527['options']['include'],function(_0x2a14e3){return{'model':db[_0x2a14e3['model']],'as':_0x2a14e3['as'],'attributes':_0x2a14e3[_0x48df('0x1d')],'include':_0x2a14e3['include']?_[_0x48df('0x1f')](_0x2a14e3[_0x48df('0x1e')],function(_0x1e0a29){return{'model':db[_0x1e0a29['model']],'as':_0x1e0a29['as'],'attributes':_0x1e0a29[_0x48df('0x1d')],'include':_0x1e0a29[_0x48df('0x1e')]?_[_0x48df('0x1f')](_0x1e0a29[_0x48df('0x1e')],function(_0x25a141){return{'model':db[_0x25a141[_0x48df('0x20')]],'as':_0x25a141['as'],'attributes':_0x25a141[_0x48df('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x48df('0x21')](function(_0x4e6aa4){logger[_0x48df('0xf')](_0x48df('0x19'),_0x5e8527);logger[_0x48df('0x12')](_0x48df('0x19'),_0x5e8527,JSON[_0x48df('0x22')](_0x4e6aa4));_0x580d50(_0x4e6aa4);})[_0x48df('0x18')](function(_0x43c6f2){logger[_0x48df('0x14')](_0x48df('0x19'),_0x43c6f2[_0x48df('0x16')],_0x5e8527);_0x1d5439(_0x5c2993[_0x48df('0x14')](0x1f4,_0x43c6f2[_0x48df('0x16')]));});});};
\ No newline at end of file
+var _0x21ca=['raw','lodash','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','redis','defaults','localhost','./squareProject.socket','GetSquareProjects','findAll','options','where','attributes','limit','include','map','model','then','info','debug','stringify','catch','error','message','ShowSquareProject','find'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0x21ca,0x1ee));var _0xa21c=function(_0x20acba,_0x16ae7a){_0x20acba=_0x20acba-0x0;var _0x1f4ffa=_0x21ca[_0x20acba];return _0x1f4ffa;};'use strict';var _=require(_0xa21c('0x0'));var Redis=require(_0xa21c('0x1'));var db=require(_0xa21c('0x2'))['db'];var logger=require(_0xa21c('0x3'))(_0xa21c('0x4'));var config=require(_0xa21c('0x5'));config[_0xa21c('0x6')]=_[_0xa21c('0x7')](config[_0xa21c('0x6')],{'host':_0xa21c('0x8'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0xa21c('0x9'))['register'](socket);exports[_0xa21c('0xa')]=function(_0x28d1a1){var _0x4f9bcb=this;return new Promise(function(_0x32a256,_0x3f420f){return db['SquareProject'][_0xa21c('0xb')]({'raw':_0x28d1a1['options']?_0x28d1a1[_0xa21c('0xc')]['raw']===undefined?!![]:![]:!![],'where':_0x28d1a1['options']?_0x28d1a1[_0xa21c('0xc')][_0xa21c('0xd')]||null:null,'attributes':_0x28d1a1[_0xa21c('0xc')]?_0x28d1a1[_0xa21c('0xc')][_0xa21c('0xe')]||null:null,'limit':_0x28d1a1[_0xa21c('0xc')]?_0x28d1a1[_0xa21c('0xc')][_0xa21c('0xf')]||null:null,'include':_0x28d1a1[_0xa21c('0xc')]?_0x28d1a1[_0xa21c('0xc')][_0xa21c('0x10')]?_['map'](_0x28d1a1[_0xa21c('0xc')][_0xa21c('0x10')],function(_0x183202){return{'model':db[_0x183202['model']],'as':_0x183202['as'],'attributes':_0x183202['attributes'],'include':_0x183202['include']?_[_0xa21c('0x11')](_0x183202['include'],function(_0x979eeb){return{'model':db[_0x979eeb[_0xa21c('0x12')]],'as':_0x979eeb['as'],'attributes':_0x979eeb[_0xa21c('0xe')],'include':_0x979eeb['include']?_['map'](_0x979eeb['include'],function(_0x29eb49){return{'model':db[_0x29eb49[_0xa21c('0x12')]],'as':_0x29eb49['as'],'attributes':_0x29eb49['attributes']};}):[]};}):[]};}):[]:[]})[_0xa21c('0x13')](function(_0x438e3a){logger[_0xa21c('0x14')]('GetSquareProjects',_0x28d1a1);logger[_0xa21c('0x15')]('GetSquareProjects',_0x28d1a1,JSON[_0xa21c('0x16')](_0x438e3a));_0x32a256(_0x438e3a);})[_0xa21c('0x17')](function(_0x594e23){logger[_0xa21c('0x18')](_0xa21c('0xa'),_0x594e23[_0xa21c('0x19')],_0x28d1a1);_0x3f420f(_0x4f9bcb[_0xa21c('0x18')](0x1f4,_0x594e23[_0xa21c('0x19')]));});});};exports[_0xa21c('0x1a')]=function(_0x4b46e5){var _0x590329=this;return new Promise(function(_0x20ed9e,_0xf8fcea){return db['SquareProject'][_0xa21c('0x1b')]({'raw':_0x4b46e5[_0xa21c('0xc')]?_0x4b46e5[_0xa21c('0xc')][_0xa21c('0x1c')]===undefined?!![]:![]:!![],'where':_0x4b46e5[_0xa21c('0xc')]?_0x4b46e5[_0xa21c('0xc')][_0xa21c('0xd')]||null:null,'attributes':_0x4b46e5[_0xa21c('0xc')]?_0x4b46e5[_0xa21c('0xc')][_0xa21c('0xe')]||null:null,'include':_0x4b46e5[_0xa21c('0xc')]?_0x4b46e5[_0xa21c('0xc')][_0xa21c('0x10')]?_[_0xa21c('0x11')](_0x4b46e5['options']['include'],function(_0x2ec6d4){return{'model':db[_0x2ec6d4[_0xa21c('0x12')]],'as':_0x2ec6d4['as'],'attributes':_0x2ec6d4['attributes'],'include':_0x2ec6d4[_0xa21c('0x10')]?_[_0xa21c('0x11')](_0x2ec6d4[_0xa21c('0x10')],function(_0x2041ef){return{'model':db[_0x2041ef['model']],'as':_0x2041ef['as'],'attributes':_0x2041ef[_0xa21c('0xe')],'include':_0x2041ef[_0xa21c('0x10')]?_[_0xa21c('0x11')](_0x2041ef[_0xa21c('0x10')],function(_0x1cfa24){return{'model':db[_0x1cfa24['model']],'as':_0x1cfa24['as'],'attributes':_0x1cfa24[_0xa21c('0xe')]};}):[]};}):[]};}):[]:[]})[_0xa21c('0x13')](function(_0x4b9636){logger[_0xa21c('0x14')](_0xa21c('0x1a'),_0x4b46e5);logger[_0xa21c('0x15')](_0xa21c('0x1a'),_0x4b46e5,JSON['stringify'](_0x4b9636));_0x20ed9e(_0x4b9636);})[_0xa21c('0x17')](function(_0x6e4d9b){logger[_0xa21c('0x18')]('ShowSquareProject',_0x6e4d9b['message'],_0x4b46e5);_0xf8fcea(_0x590329[_0xa21c('0x18')](0x1f4,_0x6e4d9b[_0xa21c('0x19')]));});});};
\ No newline at end of file
index d194997..d7a7c9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc749=['register','squareProject:','./squareProject.events','remove','emit','removeListener'];(function(_0x3df91b,_0x588b25){var _0x5e2cad=function(_0x23f2fd){while(--_0x23f2fd){_0x3df91b['push'](_0x3df91b['shift']());}};_0x5e2cad(++_0x588b25);}(_0xc749,0x1ee));var _0x9c74=function(_0x14917b,_0x241db3){_0x14917b=_0x14917b-0x0;var _0x2f6198=_0xc749[_0x14917b];return _0x2f6198;};'use strict';var SquareProjectEvents=require(_0x9c74('0x0'));var events=['save',_0x9c74('0x1'),'update'];function createListener(_0x3c39c8,_0x643c52){return function(_0x1dec76){_0x643c52[_0x9c74('0x2')](_0x3c39c8,_0x1dec76);};}function removeListener(_0x278a59,_0x3505e9){return function(){SquareProjectEvents[_0x9c74('0x3')](_0x278a59,_0x3505e9);};}exports[_0x9c74('0x4')]=function(_0x362a9d){for(var _0x115abf=0x0,_0x2ff6fd=events['length'];_0x115abf<_0x2ff6fd;_0x115abf++){var _0x4c18d0=events[_0x115abf];var _0x32f938=createListener(_0x9c74('0x5')+_0x4c18d0,_0x362a9d);SquareProjectEvents['on'](_0x4c18d0,_0x32f938);}};
\ No newline at end of file
+var _0x20fa=['update','emit','removeListener','register','length','squareProject:','./squareProject.events','remove'];(function(_0xd104d6,_0x2c3ce5){var _0x505628=function(_0x11d4e3){while(--_0x11d4e3){_0xd104d6['push'](_0xd104d6['shift']());}};_0x505628(++_0x2c3ce5);}(_0x20fa,0x1e6));var _0xa20f=function(_0x575057,_0x14baf3){_0x575057=_0x575057-0x0;var _0x49dbc8=_0x20fa[_0x575057];return _0x49dbc8;};'use strict';var SquareProjectEvents=require(_0xa20f('0x0'));var events=['save',_0xa20f('0x1'),_0xa20f('0x2')];function createListener(_0x1f658a,_0x747b44){return function(_0x2d3a7e){_0x747b44[_0xa20f('0x3')](_0x1f658a,_0x2d3a7e);};}function removeListener(_0x2d022c,_0x54834a){return function(){SquareProjectEvents[_0xa20f('0x4')](_0x2d022c,_0x54834a);};}exports[_0xa20f('0x5')]=function(_0x1e2792){for(var _0x4ef226=0x0,_0x3a90f2=events[_0xa20f('0x6')];_0x4ef226<_0x3a90f2;_0x4ef226++){var _0x22bebe=events[_0x4ef226];var _0x36c35=createListener(_0xa20f('0x7')+_0x22bebe,_0x1e2792);SquareProjectEvents['on'](_0x22bebe,_0x36c35);}};
\ No newline at end of file
index ae98a69..fcf71a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['express','Router','fs-extra','../../components/auth/service','../../config/environment','./squareRecording.controller','get','isAuthenticated','show','/:id/download','download','post','create','put','update','/:id','multer','util','connect-timeout'];(function(_0x302b27,_0x2ac7b8){var _0x340b4a=function(_0x5aa194){while(--_0x5aa194){_0x302b27['push'](_0x302b27['shift']());}};_0x340b4a(++_0x2ac7b8);}(_0x5fc3,0xa8));var _0x35fc=function(_0x2bb66c,_0x36c6c6){_0x2bb66c=_0x2bb66c-0x0;var _0x1e0f98=_0x5fc3[_0x2bb66c];return _0x1e0f98;};'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')]('/:id',auth[_0x35fc('0xa')](),controller[_0x35fc('0xb')]);router[_0x35fc('0x9')](_0x35fc('0xc'),auth[_0x35fc('0xa')](),controller[_0x35fc('0xd')]);router[_0x35fc('0xe')]('/',auth['isAuthenticated'](),controller[_0x35fc('0xf')]);router[_0x35fc('0x10')]('/:id',auth[_0x35fc('0xa')](),controller[_0x35fc('0x11')]);router['delete'](_0x35fc('0x12'),auth[_0x35fc('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xe14b=['Router','../../components/auth/service','./squareRecording.controller','get','isAuthenticated','index','/:id','download','post','delete','destroy','exports','multer','util','express'];(function(_0x354061,_0x541c1a){var _0x233e95=function(_0x5f545c){while(--_0x5f545c){_0x354061['push'](_0x354061['shift']());}};_0x233e95(++_0x541c1a);}(_0xe14b,0x93));var _0xbe14=function(_0x34fa48,_0x362739){_0x34fa48=_0x34fa48-0x0;var _0x4a8693=_0xe14b[_0x34fa48];return _0x4a8693;};'use strict';var multer=require(_0xbe14('0x0'));var util=require(_0xbe14('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xbe14('0x2'));var router=express[_0xbe14('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xbe14('0x4'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xbe14('0x5'));router[_0xbe14('0x6')]('/',auth[_0xbe14('0x7')](),controller[_0xbe14('0x8')]);router[_0xbe14('0x6')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['show']);router['get']('/:id/download',auth[_0xbe14('0x7')](),controller[_0xbe14('0xa')]);router[_0xbe14('0xb')]('/',auth[_0xbe14('0x7')](),controller['create']);router['put'](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller['update']);router[_0xbe14('0xc')](_0xbe14('0x9'),auth[_0xbe14('0x7')](),controller[_0xbe14('0xd')]);module[_0xbe14('0xe')]=router;
\ No newline at end of file
index 9c93bc3..825945c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdc97=['savePath','substring','lastIndexOf','sequelize','exports','STRING','VIRTUAL','getDataValue'];(function(_0x3b6652,_0x32486d){var _0x14d39f=function(_0x3a595a){while(--_0x3a595a){_0x3b6652['push'](_0x3b6652['shift']());}};_0x14d39f(++_0x32486d);}(_0xdc97,0x13b));var _0x7dc9=function(_0x1a253a,_0x3f41ce){_0x1a253a=_0x1a253a-0x0;var _0x1f2f51=_0xdc97[_0x1a253a];return _0x1f2f51;};'use strict';var Sequelize=require(_0x7dc9('0x0'));module[_0x7dc9('0x1')]={'uniqueid':{'type':Sequelize[_0x7dc9('0x2')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0x7dc9('0x2')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x7dc9('0x2')]},'priority':{'type':Sequelize[_0x7dc9('0x2')]},'accountcode':{'type':Sequelize['STRING']},'dnid':{'type':Sequelize[_0x7dc9('0x2')]},'projectName':{'type':Sequelize[_0x7dc9('0x2')]},'saveName':{'type':Sequelize[_0x7dc9('0x2')]},'filename':{'type':Sequelize[_0x7dc9('0x2')]},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x7dc9('0x3')],'get':function(){var _0x4f91c7='';var _0x4b3229=this[_0x7dc9('0x4')](_0x7dc9('0x5'));if(_0x4b3229){_0x4f91c7=_0x4b3229[_0x7dc9('0x6')](_0x4b3229[_0x7dc9('0x7')]('.'));}return _0x4f91c7;}}};
\ No newline at end of file
+var _0x8ef6=['VIRTUAL','savePath','substring','lastIndexOf','sequelize','exports','STRING'];(function(_0x4753f3,_0xfa186e){var _0x124353=function(_0x43a04a){while(--_0x43a04a){_0x4753f3['push'](_0x4753f3['shift']());}};_0x124353(++_0xfa186e);}(_0x8ef6,0xf2));var _0x68ef=function(_0x4961c9,_0x3673d4){_0x4961c9=_0x4961c9-0x0;var _0x1ef728=_0x8ef6[_0x4961c9];return _0x1ef728;};'use strict';var Sequelize=require(_0x68ef('0x0'));module[_0x68ef('0x1')]={'uniqueid':{'type':Sequelize[_0x68ef('0x2')]},'callerid':{'type':Sequelize[_0x68ef('0x2')]},'calleridname':{'type':Sequelize[_0x68ef('0x2')]},'context':{'type':Sequelize[_0x68ef('0x2')]},'extension':{'type':Sequelize[_0x68ef('0x2')]},'priority':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x68ef('0x2')]},'dnid':{'type':Sequelize[_0x68ef('0x2')]},'projectName':{'type':Sequelize[_0x68ef('0x2')]},'saveName':{'type':Sequelize[_0x68ef('0x2')]},'filename':{'type':Sequelize['STRING']},'savePath':{'type':Sequelize['STRING']},'format':{'type':Sequelize[_0x68ef('0x3')],'get':function(){var _0x4740e8='';var _0x2de776=this['getDataValue'](_0x68ef('0x4'));if(_0x2de776){_0x4740e8=_0x2de776[_0x68ef('0x5')](_0x2de776[_0x68ef('0x6')]('.'));}return _0x4740e8;}}};
\ No newline at end of file
index 8837ee7..4ccb00a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf01e=['filter','type','VIRTUAL','merge','options','includeAll','include','findAll','rows','catch','show','params','fields','find','body','uniqueid','savePath','format','existsSync','decryptFile','secrets','recording','Sequelize','ValidationError','SquareRecording\x20not\x20found','download','unlink','message','Not\x20found','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','unlinkSync','.cypher','File:\x20\x22','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','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','offset','undefined','limit','count','json','apply','reject','save','then','destroy','sendStatus','error','stack','name','send','index','map','SquareRecording','rawAttributes','key','query','keys','intersection','model','attributes','length','hasOwnProperty','nolimit','order','sort','where','pick','filters'];(function(_0x48d6a3,_0x37c848){var _0x38bfa0=function(_0x3fba2e){while(--_0x3fba2e){_0x48d6a3['push'](_0x48d6a3['shift']());}};_0x38bfa0(++_0x37c848);}(_0xf01e,0x89));var _0xef01=function(_0x289891,_0x49a0fa){_0x289891=_0x289891-0x0;var _0x31cf2e=_0xf01e[_0x289891];return _0x31cf2e;};'use strict';var emlformat=require(_0xef01('0x0'));var rimraf=require(_0xef01('0x1'));var zipdir=require(_0xef01('0x2'));var jsonpatch=require(_0xef01('0x3'));var rp=require(_0xef01('0x4'));var moment=require(_0xef01('0x5'));var BPromise=require(_0xef01('0x6'));var Mustache=require(_0xef01('0x7'));var util=require(_0xef01('0x8'));var path=require('path');var sox=require(_0xef01('0x9'));var csv=require(_0xef01('0xa'));var ejs=require(_0xef01('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xef01('0xc'));var squel=require(_0xef01('0xd'));var crypto=require('crypto');var jsforce=require(_0xef01('0xe'));var deskjs=require(_0xef01('0xf'));var toCsv=require('to-csv');var querystring=require(_0xef01('0x10'));var Papa=require(_0xef01('0x11'));var Redis=require(_0xef01('0x12'));var authService=require(_0xef01('0x13'));var qs=require(_0xef01('0x14'));var as=require(_0xef01('0x15'));var hardwareService=require(_0xef01('0x16'));var logger=require(_0xef01('0x17'))(_0xef01('0x18'));var utils=require(_0xef01('0x19'));var config=require(_0xef01('0x1a'));var licenseUtil=require(_0xef01('0x1b'));var db=require(_0xef01('0x1c'))['db'];function respondWithStatusCode(_0x3a8109,_0x4a7f68){_0x4a7f68=_0x4a7f68||0xcc;return function(_0x3378c5){if(_0x3378c5){return _0x3a8109['sendStatus'](_0x4a7f68);}return _0x3a8109[_0xef01('0x1d')](_0x4a7f68)['end']();};}function respondWithResult(_0x29c1fc,_0x123bf6){_0x123bf6=_0x123bf6||0xc8;return function(_0xf3e45e){if(_0xf3e45e){return _0x29c1fc[_0xef01('0x1d')](_0x123bf6)['json'](_0xf3e45e);}};}function respondWithFilteredResult(_0x1dd1f3,_0x53db95){return function(_0x505952){if(_0x505952){var _0x48dae9=typeof _0x53db95[_0xef01('0x1e')]===_0xef01('0x1f')&&typeof _0x53db95[_0xef01('0x20')]==='undefined';var _0x4faf92=_0x505952[_0xef01('0x21')];var _0x2f66e1=_0x48dae9?0x0:_0x53db95[_0xef01('0x1e')];var _0x361ee3=_0x48dae9?_0x505952[_0xef01('0x21')]:_0x53db95[_0xef01('0x1e')]+_0x53db95[_0xef01('0x20')];var _0x1bd949;if(_0x361ee3>=_0x4faf92){_0x361ee3=_0x4faf92;_0x1bd949=0xc8;}else{_0x1bd949=0xce;}_0x1dd1f3[_0xef01('0x1d')](_0x1bd949);return _0x1dd1f3['set']('Content-Range',_0x2f66e1+'-'+_0x361ee3+'/'+_0x4faf92)[_0xef01('0x22')](_0x505952);}return null;};}function patchUpdates(_0x5612ff){return function(_0x5f3553){try{jsonpatch[_0xef01('0x23')](_0x5f3553,_0x5612ff,!![]);}catch(_0x4512a7){return BPromise[_0xef01('0x24')](_0x4512a7);}return _0x5f3553[_0xef01('0x25')]();};}function saveUpdates(_0x3460e2,_0x48534f){return function(_0xb3ee51){if(_0xb3ee51){return _0xb3ee51['update'](_0x3460e2)[_0xef01('0x26')](function(_0xdf96c1){return _0xdf96c1;});}return null;};}function removeEntity(_0x21e247,_0x48db2c){return function(_0x4391b9){if(_0x4391b9){return _0x4391b9[_0xef01('0x27')]()[_0xef01('0x26')](function(){_0x21e247['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xa3ce34,_0x4fb1eb){return function(_0x12d435){if(!_0x12d435){_0xa3ce34[_0xef01('0x28')](0x194);}return _0x12d435;};}function handleError(_0x23d08e,_0x534a7b){_0x534a7b=_0x534a7b||0x1f4;return function(_0x31f253){logger[_0xef01('0x29')](_0x31f253[_0xef01('0x2a')]);if(_0x31f253[_0xef01('0x2b')]){delete _0x31f253[_0xef01('0x2b')];}_0x23d08e[_0xef01('0x1d')](_0x534a7b)[_0xef01('0x2c')](_0x31f253);};}exports[_0xef01('0x2d')]=function(_0x1a857b,_0x4f2366){var _0x33255c={},_0x206fb1={},_0x112e28={'count':0x0,'rows':[]};var _0x4c193e=_[_0xef01('0x2e')](db[_0xef01('0x2f')][_0xef01('0x30')],function(_0x427abd){return{'name':_0x427abd['fieldName'],'type':_0x427abd['type'][_0xef01('0x31')]};});_0x206fb1['model']=_['map'](_0x4c193e,'name');_0x206fb1[_0xef01('0x32')]=_[_0xef01('0x33')](_0x1a857b[_0xef01('0x32')]);_0x206fb1['filters']=_[_0xef01('0x34')](_0x206fb1[_0xef01('0x35')],_0x206fb1['query']);_0x33255c[_0xef01('0x36')]=_[_0xef01('0x34')](_0x206fb1['model'],qs['fields'](_0x1a857b[_0xef01('0x32')]['fields']));_0x33255c[_0xef01('0x36')]=_0x33255c[_0xef01('0x36')][_0xef01('0x37')]?_0x33255c[_0xef01('0x36')]:_0x206fb1[_0xef01('0x35')];if(!_0x1a857b[_0xef01('0x32')][_0xef01('0x38')](_0xef01('0x39'))){_0x33255c[_0xef01('0x20')]=qs['limit'](_0x1a857b[_0xef01('0x32')]['limit']);_0x33255c[_0xef01('0x1e')]=qs[_0xef01('0x1e')](_0x1a857b[_0xef01('0x32')][_0xef01('0x1e')]);}_0x33255c[_0xef01('0x3a')]=qs[_0xef01('0x3b')](_0x1a857b['query'][_0xef01('0x3b')]);_0x33255c[_0xef01('0x3c')]=qs['filters'](_[_0xef01('0x3d')](_0x1a857b[_0xef01('0x32')],_0x206fb1[_0xef01('0x3e')]),_0x4c193e);if(_0x1a857b[_0xef01('0x32')][_0xef01('0x3f')]){_0x33255c[_0xef01('0x3c')]=_['merge'](_0x33255c['where'],{'$or':_[_0xef01('0x2e')](_0x4c193e,function(_0x4d6ea9){if(_0x4d6ea9[_0xef01('0x40')]!==_0xef01('0x41')){var _0xd639df={};_0xd639df[_0x4d6ea9[_0xef01('0x2b')]]={'$like':'%'+_0x1a857b[_0xef01('0x32')][_0xef01('0x3f')]+'%'};return _0xd639df;}})});}_0x33255c=_[_0xef01('0x42')]({},_0x33255c,_0x1a857b[_0xef01('0x43')]);var _0x173e62={'where':_0x33255c[_0xef01('0x3c')]};return db[_0xef01('0x2f')][_0xef01('0x21')](_0x173e62)['then'](function(_0x4c4a9e){_0x112e28[_0xef01('0x21')]=_0x4c4a9e;if(_0x1a857b['query'][_0xef01('0x44')]){_0x33255c[_0xef01('0x45')]=[{'all':!![]}];}return db['SquareRecording'][_0xef01('0x46')](_0x33255c);})['then'](function(_0x2c08fd){_0x112e28[_0xef01('0x47')]=_0x2c08fd;return _0x112e28;})[_0xef01('0x26')](respondWithFilteredResult(_0x4f2366,_0x33255c))[_0xef01('0x48')](handleError(_0x4f2366,null));};exports[_0xef01('0x49')]=function(_0x4e3328,_0x1a3571){var _0x233b4d={'raw':!![],'where':{'id':_0x4e3328[_0xef01('0x4a')]['id']}},_0x5a5521={};_0x5a5521[_0xef01('0x35')]=_[_0xef01('0x33')](db[_0xef01('0x2f')][_0xef01('0x30')]);_0x5a5521['query']=_[_0xef01('0x33')](_0x4e3328[_0xef01('0x32')]);_0x5a5521[_0xef01('0x3e')]=_[_0xef01('0x34')](_0x5a5521[_0xef01('0x35')],_0x5a5521[_0xef01('0x32')]);_0x233b4d[_0xef01('0x36')]=_[_0xef01('0x34')](_0x5a5521[_0xef01('0x35')],qs[_0xef01('0x4b')](_0x4e3328['query'][_0xef01('0x4b')]));_0x233b4d[_0xef01('0x36')]=_0x233b4d[_0xef01('0x36')][_0xef01('0x37')]?_0x233b4d[_0xef01('0x36')]:_0x5a5521[_0xef01('0x35')];if(_0x4e3328[_0xef01('0x32')][_0xef01('0x44')]){_0x233b4d['include']=[{'all':!![]}];}_0x233b4d=_['merge']({},_0x233b4d,_0x4e3328[_0xef01('0x43')]);return db[_0xef01('0x2f')][_0xef01('0x4c')](_0x233b4d)[_0xef01('0x26')](handleEntityNotFound(_0x1a3571,null))['then'](respondWithResult(_0x1a3571,null))[_0xef01('0x48')](handleError(_0x1a3571,null));};exports['create']=function(_0x445a2d,_0x422d3e){return db['SquareRecording']['create'](_0x445a2d[_0xef01('0x4d')],{})[_0xef01('0x26')](respondWithResult(_0x422d3e,0xc9))[_0xef01('0x48')](handleError(_0x422d3e,null));};exports['update']=function(_0x3b1b0c,_0x456aa0){if(_0x3b1b0c[_0xef01('0x4d')]['id']){delete _0x3b1b0c[_0xef01('0x4d')]['id'];}return db[_0xef01('0x2f')]['find']({'where':{'id':_0x3b1b0c['params']['id']}})[_0xef01('0x26')](handleEntityNotFound(_0x456aa0,null))[_0xef01('0x26')](saveUpdates(_0x3b1b0c[_0xef01('0x4d')],null))[_0xef01('0x26')](respondWithResult(_0x456aa0,null))[_0xef01('0x48')](handleError(_0x456aa0,null));};exports['download']=function(_0x5e69c7,_0x514ddb,_0x2d0b3f){var _0xaae17=require('../../components/encryptor');var _0x2c6547=![];var _0x3f262a={};if(_0x5e69c7[_0xef01('0x32')][_0xef01('0x40')]&&_0x5e69c7[_0xef01('0x32')][_0xef01('0x40')]==='uniqueid'){_0x3f262a[_0xef01('0x4e')]=_0x5e69c7[_0xef01('0x4a')]['id'];}else{_0x3f262a['id']=_0x5e69c7[_0xef01('0x4a')]['id'];}return db[_0xef01('0x2f')]['find']({'where':_0x3f262a,'attributes':['id',_0xef01('0x4f'),'filename'],'raw':!![]})[_0xef01('0x26')](handleEntityNotFound(_0x514ddb,null))[_0xef01('0x26')](function(_0x20602e){if(_0x20602e){var _0x50d335=_0x20602e['savePath'];var _0x4a58e8=util[_0xef01('0x50')]('%s.cypher',_0x50d335);if(fs[_0xef01('0x51')](_0x4a58e8)){_0x2c6547=!![];return _0xaae17[_0xef01('0x52')](_0x4a58e8,_0x50d335,config[_0xef01('0x53')][_0xef01('0x54')])[_0xef01('0x26')](function(){return _0x20602e;});}return _0x20602e;}})[_0xef01('0x26')](function(_0x3e720b){if(_0x3e720b){var _0x2b71fb=_0x3e720b['savePath'];if(!fs[_0xef01('0x51')](_0x2b71fb)){throw new db[(_0xef01('0x55'))][(_0xef01('0x56'))](_0xef01('0x57'));}if(_0x3e720b['filename']){return _0x514ddb[_0xef01('0x58')](_0x2b71fb,_0x3e720b['filename']+path['extname'](_0x2b71fb),function(){if(_0x2c6547){fs[_0xef01('0x59')](_0x2b71fb);}});}else{return _0x514ddb['download'](_0x2b71fb,function(_0x2575b0){if(_0x2c6547){fs[_0xef01('0x59')](_0x2b71fb);}});}}})['catch'](function(_0x4ef38e){if(_0x4ef38e[_0xef01('0x5a')]==='SquareRecording\x20not\x20found'){_0x514ddb[_0xef01('0x1d')](0x194)[_0xef01('0x2c')](_0xef01('0x5b'));}else{return handleError(_0x514ddb,null);}});};exports[_0xef01('0x27')]=function(_0x1ad887,_0x2479c1){return db[_0xef01('0x2f')][_0xef01('0x4c')]({'where':{'id':_0x1ad887[_0xef01('0x4a')]['id']}})[_0xef01('0x26')](function(_0x38278f){if(_['isNil'](_0x38278f)){throw new ReferenceError(_0xef01('0x5c'));}return _0x38278f;})[_0xef01('0x26')](function(_0x5a17fa){var _0x141e34=_0x5a17fa[_0xef01('0x4f')];logger[_0xef01('0x5d')](_0xef01('0x5e'),_0x141e34);if(!_[_0xef01('0x5f')](_0x5a17fa[_0xef01('0x4f')])&&fs['existsSync'](_0x141e34)){logger[_0xef01('0x5d')]('File:\x20\x22'+_0x141e34+_0xef01('0x60'));fs[_0xef01('0x61')](_0x141e34);}_0x141e34=_0x141e34+_0xef01('0x62');if(!_[_0xef01('0x5f')](_0x5a17fa[_0xef01('0x4f')])&&fs[_0xef01('0x51')](_0x141e34)){logger['info'](_0xef01('0x63')+_0x141e34+_0xef01('0x60'));fs['unlinkSync'](_0x141e34);}return _0x5a17fa;})[_0xef01('0x26')](function(_0x1428a8){if(!_0x1428a8)throw new InternalError();return _0x1428a8[_0xef01('0x27')]();})[_0xef01('0x26')](function(){_0x2479c1[_0xef01('0x1d')](0xcc)['end']();})['catch'](handleError(_0x2479c1,null));};
\ No newline at end of file
+var _0x12ef=['ValidationError','SquareRecording\x20not\x20found','download','unlink','message','destroy','isNil','Entity\x20not\x20found','info','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','unlinkSync','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','to-csv','ejs','fs-extra','lodash','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','reject','update','error','stack','name','send','index','map','SquareRecording','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','where','VIRTUAL','filter','merge','options','then','includeAll','include','findAll','show','find','create','body','catch','params','../../components/encryptor','uniqueid','savePath','filename','%s.cypher','existsSync','secrets','recording','Sequelize'];(function(_0x27bdbc,_0x2e9d9d){var _0x3c9a90=function(_0xfa170b){while(--_0xfa170b){_0x27bdbc['push'](_0x27bdbc['shift']());}};_0x3c9a90(++_0x2e9d9d);}(_0x12ef,0x69));var _0xf12e=function(_0xbd08b4,_0x4790ed){_0xbd08b4=_0xbd08b4-0x0;var _0x314f1e=_0x12ef[_0xbd08b4];return _0x314f1e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xf12e('0x0'));var zipdir=require(_0xf12e('0x1'));var jsonpatch=require(_0xf12e('0x2'));var rp=require(_0xf12e('0x3'));var moment=require('moment');var BPromise=require(_0xf12e('0x4'));var Mustache=require(_0xf12e('0x5'));var util=require(_0xf12e('0x6'));var path=require(_0xf12e('0x7'));var sox=require('sox');var csv=require(_0xf12e('0x8'));var ejs=require(_0xf12e('0x9'));var fs=require('fs');var fs_extra=require(_0xf12e('0xa'));var _=require(_0xf12e('0xb'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xf12e('0xc'));var toCsv=require(_0xf12e('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xf12e('0xd'));var authService=require(_0xf12e('0xe'));var qs=require(_0xf12e('0xf'));var as=require(_0xf12e('0x10'));var hardwareService=require(_0xf12e('0x11'));var logger=require('../../config/logger')('api');var utils=require(_0xf12e('0x12'));var config=require('../../config/environment');var licenseUtil=require(_0xf12e('0x13'));var db=require(_0xf12e('0x14'))['db'];function respondWithStatusCode(_0x5ebe26,_0x4b9fab){_0x4b9fab=_0x4b9fab||0xcc;return function(_0x578439){if(_0x578439){return _0x5ebe26[_0xf12e('0x15')](_0x4b9fab);}return _0x5ebe26[_0xf12e('0x16')](_0x4b9fab)[_0xf12e('0x17')]();};}function respondWithResult(_0x43c624,_0x2b70c9){_0x2b70c9=_0x2b70c9||0xc8;return function(_0x4d3352){if(_0x4d3352){return _0x43c624[_0xf12e('0x16')](_0x2b70c9)[_0xf12e('0x18')](_0x4d3352);}};}function respondWithFilteredResult(_0xfeb3d2,_0x463a64){return function(_0x8e2afb){if(_0x8e2afb){var _0x155158=typeof _0x463a64[_0xf12e('0x19')]==='undefined'&&typeof _0x463a64[_0xf12e('0x1a')]===_0xf12e('0x1b');var _0x2e7e95=_0x8e2afb[_0xf12e('0x1c')];var _0x5bf665=_0x155158?0x0:_0x463a64[_0xf12e('0x19')];var _0x3dda8f=_0x155158?_0x8e2afb[_0xf12e('0x1c')]:_0x463a64[_0xf12e('0x19')]+_0x463a64[_0xf12e('0x1a')];var _0x2e2a29;if(_0x3dda8f>=_0x2e7e95){_0x3dda8f=_0x2e7e95;_0x2e2a29=0xc8;}else{_0x2e2a29=0xce;}_0xfeb3d2['status'](_0x2e2a29);return _0xfeb3d2['set'](_0xf12e('0x1d'),_0x5bf665+'-'+_0x3dda8f+'/'+_0x2e7e95)['json'](_0x8e2afb);}return null;};}function patchUpdates(_0x31e087){return function(_0x2e205b){try{jsonpatch['apply'](_0x2e205b,_0x31e087,!![]);}catch(_0x2ee991){return BPromise[_0xf12e('0x1e')](_0x2ee991);}return _0x2e205b['save']();};}function saveUpdates(_0x103d28,_0x5521a9){return function(_0x430e7c){if(_0x430e7c){return _0x430e7c[_0xf12e('0x1f')](_0x103d28)['then'](function(_0x11bf8c){return _0x11bf8c;});}return null;};}function removeEntity(_0x686ef8,_0x372862){return function(_0xfe32d7){if(_0xfe32d7){return _0xfe32d7['destroy']()['then'](function(){_0x686ef8[_0xf12e('0x16')](0xcc)['end']();});}};}function handleEntityNotFound(_0x1d1d50,_0xcb0da0){return function(_0x2ed52e){if(!_0x2ed52e){_0x1d1d50[_0xf12e('0x15')](0x194);}return _0x2ed52e;};}function handleError(_0x13c0b8,_0x5ec764){_0x5ec764=_0x5ec764||0x1f4;return function(_0x219226){logger[_0xf12e('0x20')](_0x219226[_0xf12e('0x21')]);if(_0x219226['name']){delete _0x219226[_0xf12e('0x22')];}_0x13c0b8[_0xf12e('0x16')](_0x5ec764)[_0xf12e('0x23')](_0x219226);};}exports[_0xf12e('0x24')]=function(_0x566d3d,_0xdd719f){var _0x3ccef6={},_0x3d0256={},_0x58b747={'count':0x0,'rows':[]};var _0x35d7fc=_[_0xf12e('0x25')](db[_0xf12e('0x26')][_0xf12e('0x27')],function(_0x12a323){return{'name':_0x12a323['fieldName'],'type':_0x12a323[_0xf12e('0x28')][_0xf12e('0x29')]};});_0x3d0256[_0xf12e('0x2a')]=_['map'](_0x35d7fc,_0xf12e('0x22'));_0x3d0256[_0xf12e('0x2b')]=_[_0xf12e('0x2c')](_0x566d3d['query']);_0x3d0256[_0xf12e('0x2d')]=_[_0xf12e('0x2e')](_0x3d0256[_0xf12e('0x2a')],_0x3d0256[_0xf12e('0x2b')]);_0x3ccef6[_0xf12e('0x2f')]=_['intersection'](_0x3d0256[_0xf12e('0x2a')],qs[_0xf12e('0x30')](_0x566d3d[_0xf12e('0x2b')][_0xf12e('0x30')]));_0x3ccef6[_0xf12e('0x2f')]=_0x3ccef6['attributes'][_0xf12e('0x31')]?_0x3ccef6[_0xf12e('0x2f')]:_0x3d0256[_0xf12e('0x2a')];if(!_0x566d3d['query'][_0xf12e('0x32')](_0xf12e('0x33'))){_0x3ccef6[_0xf12e('0x1a')]=qs[_0xf12e('0x1a')](_0x566d3d[_0xf12e('0x2b')][_0xf12e('0x1a')]);_0x3ccef6[_0xf12e('0x19')]=qs[_0xf12e('0x19')](_0x566d3d['query'][_0xf12e('0x19')]);}_0x3ccef6[_0xf12e('0x34')]=qs[_0xf12e('0x35')](_0x566d3d[_0xf12e('0x2b')]['sort']);_0x3ccef6['where']=qs['filters'](_[_0xf12e('0x36')](_0x566d3d[_0xf12e('0x2b')],_0x3d0256[_0xf12e('0x2d')]),_0x35d7fc);if(_0x566d3d[_0xf12e('0x2b')]['filter']){_0x3ccef6[_0xf12e('0x37')]=_['merge'](_0x3ccef6[_0xf12e('0x37')],{'$or':_[_0xf12e('0x25')](_0x35d7fc,function(_0x383a43){if(_0x383a43['type']!==_0xf12e('0x38')){var _0x3f5b8c={};_0x3f5b8c[_0x383a43[_0xf12e('0x22')]]={'$like':'%'+_0x566d3d['query'][_0xf12e('0x39')]+'%'};return _0x3f5b8c;}})});}_0x3ccef6=_[_0xf12e('0x3a')]({},_0x3ccef6,_0x566d3d[_0xf12e('0x3b')]);var _0x42efe2={'where':_0x3ccef6[_0xf12e('0x37')]};return db[_0xf12e('0x26')][_0xf12e('0x1c')](_0x42efe2)[_0xf12e('0x3c')](function(_0x2542ec){_0x58b747['count']=_0x2542ec;if(_0x566d3d[_0xf12e('0x2b')][_0xf12e('0x3d')]){_0x3ccef6[_0xf12e('0x3e')]=[{'all':!![]}];}return db['SquareRecording'][_0xf12e('0x3f')](_0x3ccef6);})['then'](function(_0x48070f){_0x58b747['rows']=_0x48070f;return _0x58b747;})[_0xf12e('0x3c')](respondWithFilteredResult(_0xdd719f,_0x3ccef6))['catch'](handleError(_0xdd719f,null));};exports[_0xf12e('0x40')]=function(_0xd13b2c,_0x517bf5){var _0x47d223={'raw':!![],'where':{'id':_0xd13b2c['params']['id']}},_0x3535fc={};_0x3535fc['model']=_[_0xf12e('0x2c')](db[_0xf12e('0x26')][_0xf12e('0x27')]);_0x3535fc['query']=_[_0xf12e('0x2c')](_0xd13b2c[_0xf12e('0x2b')]);_0x3535fc[_0xf12e('0x2d')]=_[_0xf12e('0x2e')](_0x3535fc['model'],_0x3535fc[_0xf12e('0x2b')]);_0x47d223[_0xf12e('0x2f')]=_[_0xf12e('0x2e')](_0x3535fc['model'],qs['fields'](_0xd13b2c[_0xf12e('0x2b')][_0xf12e('0x30')]));_0x47d223[_0xf12e('0x2f')]=_0x47d223[_0xf12e('0x2f')][_0xf12e('0x31')]?_0x47d223['attributes']:_0x3535fc[_0xf12e('0x2a')];if(_0xd13b2c['query'][_0xf12e('0x3d')]){_0x47d223[_0xf12e('0x3e')]=[{'all':!![]}];}_0x47d223=_[_0xf12e('0x3a')]({},_0x47d223,_0xd13b2c[_0xf12e('0x3b')]);return db[_0xf12e('0x26')][_0xf12e('0x41')](_0x47d223)[_0xf12e('0x3c')](handleEntityNotFound(_0x517bf5,null))['then'](respondWithResult(_0x517bf5,null))['catch'](handleError(_0x517bf5,null));};exports[_0xf12e('0x42')]=function(_0x3addb5,_0x43961e){return db[_0xf12e('0x26')][_0xf12e('0x42')](_0x3addb5[_0xf12e('0x43')],{})[_0xf12e('0x3c')](respondWithResult(_0x43961e,0xc9))[_0xf12e('0x44')](handleError(_0x43961e,null));};exports[_0xf12e('0x1f')]=function(_0x3a0f49,_0x403f0d){if(_0x3a0f49[_0xf12e('0x43')]['id']){delete _0x3a0f49[_0xf12e('0x43')]['id'];}return db[_0xf12e('0x26')][_0xf12e('0x41')]({'where':{'id':_0x3a0f49[_0xf12e('0x45')]['id']}})['then'](handleEntityNotFound(_0x403f0d,null))['then'](saveUpdates(_0x3a0f49['body'],null))[_0xf12e('0x3c')](respondWithResult(_0x403f0d,null))[_0xf12e('0x44')](handleError(_0x403f0d,null));};exports['download']=function(_0x5c0e0a,_0x3da9f6,_0x421ff4){var _0x38e90a=require(_0xf12e('0x46'));var _0x2d6cd5=![];var _0x595057={};if(_0x5c0e0a['query'][_0xf12e('0x28')]&&_0x5c0e0a['query'][_0xf12e('0x28')]===_0xf12e('0x47')){_0x595057[_0xf12e('0x47')]=_0x5c0e0a[_0xf12e('0x45')]['id'];}else{_0x595057['id']=_0x5c0e0a[_0xf12e('0x45')]['id'];}return db['SquareRecording'][_0xf12e('0x41')]({'where':_0x595057,'attributes':['id',_0xf12e('0x48'),_0xf12e('0x49')],'raw':!![]})[_0xf12e('0x3c')](handleEntityNotFound(_0x3da9f6,null))[_0xf12e('0x3c')](function(_0x3609df){if(_0x3609df){var _0x526a5a=_0x3609df[_0xf12e('0x48')];var _0x384da9=util['format'](_0xf12e('0x4a'),_0x526a5a);if(fs[_0xf12e('0x4b')](_0x384da9)){_0x2d6cd5=!![];return _0x38e90a['decryptFile'](_0x384da9,_0x526a5a,config[_0xf12e('0x4c')][_0xf12e('0x4d')])['then'](function(){return _0x3609df;});}return _0x3609df;}})[_0xf12e('0x3c')](function(_0xbd2ff){if(_0xbd2ff){var _0x174cc7=_0xbd2ff[_0xf12e('0x48')];if(!fs[_0xf12e('0x4b')](_0x174cc7)){throw new db[(_0xf12e('0x4e'))][(_0xf12e('0x4f'))](_0xf12e('0x50'));}if(_0xbd2ff['filename']){return _0x3da9f6['download'](_0x174cc7,_0xbd2ff[_0xf12e('0x49')]+path['extname'](_0x174cc7),function(){if(_0x2d6cd5){fs['unlink'](_0x174cc7);}});}else{return _0x3da9f6[_0xf12e('0x51')](_0x174cc7,function(_0x3b12c5){if(_0x2d6cd5){fs[_0xf12e('0x52')](_0x174cc7);}});}}})[_0xf12e('0x44')](function(_0x132a0c){if(_0x132a0c[_0xf12e('0x53')]===_0xf12e('0x50')){_0x3da9f6[_0xf12e('0x16')](0x194)[_0xf12e('0x23')]('Not\x20found');}else{return handleError(_0x3da9f6,null);}});};exports[_0xf12e('0x54')]=function(_0x34f476,_0x241f42){return db[_0xf12e('0x26')][_0xf12e('0x41')]({'where':{'id':_0x34f476[_0xf12e('0x45')]['id']}})[_0xf12e('0x3c')](function(_0x4f8619){if(_[_0xf12e('0x55')](_0x4f8619)){throw new ReferenceError(_0xf12e('0x56'));}return _0x4f8619;})[_0xf12e('0x3c')](function(_0x13bd8b){var _0x3da32c=_0x13bd8b[_0xf12e('0x48')];logger[_0xf12e('0x57')]('cancellazione\x20fisica\x20documento\x20%s',_0x3da32c);if(!_['isNil'](_0x13bd8b[_0xf12e('0x48')])&&fs['existsSync'](_0x3da32c)){logger[_0xf12e('0x57')](_0xf12e('0x58')+_0x3da32c+_0xf12e('0x59'));fs['unlinkSync'](_0x3da32c);}_0x3da32c=_0x3da32c+_0xf12e('0x5a');if(!_[_0xf12e('0x55')](_0x13bd8b[_0xf12e('0x48')])&&fs[_0xf12e('0x4b')](_0x3da32c)){logger['info'](_0xf12e('0x58')+_0x3da32c+_0xf12e('0x59'));fs[_0xf12e('0x5b')](_0x3da32c);}return _0x13bd8b;})[_0xf12e('0x3c')](function(_0x3eb6d2){if(!_0x3eb6d2)throw new InternalError();return _0x3eb6d2[_0xf12e('0x54')]();})[_0xf12e('0x3c')](function(){_0x241f42[_0xf12e('0x16')](0xcc)[_0xf12e('0x17')]();})['catch'](handleError(_0x241f42,null));};
\ No newline at end of file
index ff5853b..abeca0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b11=['api','bluebird','request-promise','path','../../config/environment','./squareRecording.attributes','exports','define','SquareRecording','square_recordings','lodash','util','../../config/logger'];(function(_0x54b3b3,_0x2c0d15){var _0x13e9b1=function(_0x10c98f){while(--_0x10c98f){_0x54b3b3['push'](_0x54b3b3['shift']());}};_0x13e9b1(++_0x2c0d15);}(_0x4b11,0xf4));var _0x14b1=function(_0x17050f,_0x1f08eb){_0x17050f=_0x17050f-0x0;var _0x236f39=_0x4b11[_0x17050f];return _0x236f39;};'use strict';var _=require(_0x14b1('0x0'));var util=require(_0x14b1('0x1'));var logger=require(_0x14b1('0x2'))(_0x14b1('0x3'));var moment=require('moment');var BPromise=require(_0x14b1('0x4'));var rp=require(_0x14b1('0x5'));var fs=require('fs');var path=require(_0x14b1('0x6'));var rimraf=require('rimraf');var config=require(_0x14b1('0x7'));var attributes=require(_0x14b1('0x8'));module[_0x14b1('0x9')]=function(_0x1fb89f,_0x322430){return _0x1fb89f[_0x14b1('0xa')](_0x14b1('0xb'),attributes,{'tableName':_0x14b1('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x644f=['define','SquareRecording','lodash','util','moment','bluebird','request-promise','path','rimraf','../../config/environment','./squareRecording.attributes','exports'];(function(_0x1c8982,_0x592bce){var _0x573af0=function(_0x3f7fca){while(--_0x3f7fca){_0x1c8982['push'](_0x1c8982['shift']());}};_0x573af0(++_0x592bce);}(_0x644f,0xc2));var _0xf644=function(_0x4232d8,_0x13fd09){_0x4232d8=_0x4232d8-0x0;var _0x324de2=_0x644f[_0x4232d8];return _0x324de2;};'use strict';var _=require(_0xf644('0x0'));var util=require(_0xf644('0x1'));var logger=require('../../config/logger')('api');var moment=require(_0xf644('0x2'));var BPromise=require(_0xf644('0x3'));var rp=require(_0xf644('0x4'));var fs=require('fs');var path=require(_0xf644('0x5'));var rimraf=require(_0xf644('0x6'));var config=require(_0xf644('0x7'));var attributes=require(_0xf644('0x8'));module[_0xf644('0x9')]=function(_0x9938ed,_0x1a6cbb){return _0x9938ed[_0xf644('0xa')](_0xf644('0xb'),attributes,{'tableName':'square_recordings','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fac6ae7..b6fd18e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1764=['util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','then','info','SquareRecording,\x20%s,\x20%s','SquareRecording,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateSquareRecording','create','body','options','raw','debug','lodash'];(function(_0x27ec50,_0x1d8698){var _0x2da0f5=function(_0x206a3e){while(--_0x206a3e){_0x27ec50['push'](_0x27ec50['shift']());}};_0x2da0f5(++_0x1d8698);}(_0x1764,0x1cf));var _0x4176=function(_0x2b09f6,_0x51a4a1){_0x2b09f6=_0x2b09f6-0x0;var _0x1deb45=_0x1764[_0x2b09f6];return _0x1deb45;};'use strict';var _=require(_0x4176('0x0'));var util=require(_0x4176('0x1'));var moment=require(_0x4176('0x2'));var BPromise=require(_0x4176('0x3'));var rs=require(_0x4176('0x4'));var fs=require('fs');var Redis=require(_0x4176('0x5'));var db=require(_0x4176('0x6'))['db'];var utils=require(_0x4176('0x7'));var logger=require(_0x4176('0x8'))(_0x4176('0x9'));var config=require(_0x4176('0xa'));var jayson=require(_0x4176('0xb'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x56c21b,_0x3f535b,_0x4ed703){return new BPromise(function(_0x4e8d64,_0x3a90d1){return client['request'](_0x56c21b,_0x4ed703)[_0x4176('0xc')](function(_0x26f2d5){logger[_0x4176('0xd')](_0x4176('0xe'),_0x3f535b,'request\x20sent');logger['debug'](_0x4176('0xf'),_0x3f535b,_0x4176('0x10'),JSON[_0x4176('0x11')](_0x26f2d5));if(_0x26f2d5[_0x4176('0x12')]){if(_0x26f2d5['error'][_0x4176('0x13')]===0x1f4){logger[_0x4176('0x12')](_0x4176('0xe'),_0x3f535b,_0x26f2d5['error'][_0x4176('0x14')]);return _0x3a90d1(_0x26f2d5[_0x4176('0x12')][_0x4176('0x14')]);}logger['error'](_0x4176('0xe'),_0x3f535b,_0x26f2d5[_0x4176('0x12')][_0x4176('0x14')]);return _0x4e8d64(_0x26f2d5['error'][_0x4176('0x14')]);}else{logger['info'](_0x4176('0xe'),_0x3f535b,_0x4176('0x10'));_0x4e8d64(_0x26f2d5[_0x4176('0x15')][_0x4176('0x14')]);}})[_0x4176('0x16')](function(_0x571e03){logger[_0x4176('0x12')](_0x4176('0xe'),_0x3f535b,_0x571e03);_0x3a90d1(_0x571e03);});});}exports[_0x4176('0x17')]=function(_0x48b216){var _0x1f781b=this;return new Promise(function(_0x230fd3,_0x41ea9a){return db['SquareRecording'][_0x4176('0x18')](_0x48b216[_0x4176('0x19')],{'raw':_0x48b216[_0x4176('0x1a')]?_0x48b216[_0x4176('0x1a')][_0x4176('0x1b')]===undefined?!![]:![]:!![]})[_0x4176('0xc')](function(_0x371a9b){logger[_0x4176('0xd')](_0x4176('0x17'),_0x48b216);logger[_0x4176('0x1c')](_0x4176('0x17'),_0x48b216,JSON[_0x4176('0x11')](_0x371a9b));_0x230fd3(_0x371a9b);})['catch'](function(_0x49b63e){logger[_0x4176('0x12')](_0x4176('0x17'),_0x49b63e['message'],_0x48b216);_0x41ea9a(_0x1f781b[_0x4176('0x12')](0x1f4,_0x49b63e[_0x4176('0x14')]));});});};
\ No newline at end of file
+var _0x3c11=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','SquareRecording,\x20%s,\x20%s','request\x20sent','debug','SquareRecording,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','CreateSquareRecording','body','options','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger'];(function(_0x17004e,_0x4727df){var _0x14488c=function(_0x55f9f4){while(--_0x55f9f4){_0x17004e['push'](_0x17004e['shift']());}};_0x14488c(++_0x4727df);}(_0x3c11,0x110));var _0x13c1=function(_0x106de3,_0xfe4c8f){_0x106de3=_0x106de3-0x0;var _0x1a835b=_0x3c11[_0x106de3];return _0x1a835b;};'use strict';var _=require(_0x13c1('0x0'));var util=require(_0x13c1('0x1'));var moment=require(_0x13c1('0x2'));var BPromise=require(_0x13c1('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x13c1('0x4'));var db=require(_0x13c1('0x5'))['db'];var utils=require(_0x13c1('0x6'));var logger=require(_0x13c1('0x7'))(_0x13c1('0x8'));var config=require(_0x13c1('0x9'));var jayson=require(_0x13c1('0xa'));var client=jayson[_0x13c1('0xb')][_0x13c1('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4bf44e,_0x24ce10,_0x181db4){return new BPromise(function(_0xf5cb4e,_0x124d59){return client[_0x13c1('0xd')](_0x4bf44e,_0x181db4)[_0x13c1('0xe')](function(_0x972701){logger[_0x13c1('0xf')](_0x13c1('0x10'),_0x24ce10,_0x13c1('0x11'));logger[_0x13c1('0x12')](_0x13c1('0x13'),_0x24ce10,'request\x20sent',JSON[_0x13c1('0x14')](_0x972701));if(_0x972701[_0x13c1('0x15')]){if(_0x972701['error'][_0x13c1('0x16')]===0x1f4){logger[_0x13c1('0x15')]('SquareRecording,\x20%s,\x20%s',_0x24ce10,_0x972701['error']['message']);return _0x124d59(_0x972701[_0x13c1('0x15')]['message']);}logger[_0x13c1('0x15')](_0x13c1('0x10'),_0x24ce10,_0x972701[_0x13c1('0x15')][_0x13c1('0x17')]);return _0xf5cb4e(_0x972701[_0x13c1('0x15')][_0x13c1('0x17')]);}else{logger['info']('SquareRecording,\x20%s,\x20%s',_0x24ce10,_0x13c1('0x11'));_0xf5cb4e(_0x972701[_0x13c1('0x18')][_0x13c1('0x17')]);}})['catch'](function(_0x10bbf6){logger['error'](_0x13c1('0x10'),_0x24ce10,_0x10bbf6);_0x124d59(_0x10bbf6);});});}exports[_0x13c1('0x19')]=function(_0xfe8a69){var _0x762fba=this;return new Promise(function(_0x4488a5,_0x423246){return db['SquareRecording']['create'](_0xfe8a69[_0x13c1('0x1a')],{'raw':_0xfe8a69[_0x13c1('0x1b')]?_0xfe8a69[_0x13c1('0x1b')]['raw']===undefined?!![]:![]:!![]})[_0x13c1('0xe')](function(_0x3eec03){logger['info'](_0x13c1('0x19'),_0xfe8a69);logger[_0x13c1('0x12')](_0x13c1('0x19'),_0xfe8a69,JSON[_0x13c1('0x14')](_0x3eec03));_0x4488a5(_0x3eec03);})['catch'](function(_0x40bd51){logger[_0x13c1('0x15')](_0x13c1('0x19'),_0x40bd51[_0x13c1('0x17')],_0xfe8a69);_0x423246(_0x762fba[_0x13c1('0x15')](0x1f4,_0x40bd51[_0x13c1('0x17')]));});});};
\ No newline at end of file
index 647f8b1..74cfd55 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x5abb00,_0x342d70){var _0xf9b854=function(_0x43ac30){while(--_0x43ac30){_0x5abb00['push'](_0x5abb00['shift']());}};_0xf9b854(++_0x342d70);}(_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'));var controller=require('./squareReport.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
+var _0xa9e0=['isAuthenticated','create','put','/:id','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReport.controller','get','index','/describe','show','post'];(function(_0x30182f,_0x30ce41){var _0x5207db=function(_0x50a417){while(--_0x50a417){_0x30182f['push'](_0x30182f['shift']());}};_0x5207db(++_0x30ce41);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xa9e0[_0x4cf98e];return _0x1623ac;};'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
index eaa0dd4..c7ac350 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbb48=['exports','STRING','DATE','BOOLEAN','sequelize'];(function(_0x378b4,_0x5ca7fa){var _0x11d07b=function(_0x35d420){while(--_0x35d420){_0x378b4['push'](_0x378b4['shift']());}};_0x11d07b(++_0x5ca7fa);}(_0xbb48,0x1ee));var _0x8bb4=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xbb48[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require(_0x8bb4('0x0'));module[_0x8bb4('0x1')]={'network':{'type':Sequelize[_0x8bb4('0x2')]},'network_script':{'type':Sequelize['STRING']},'request':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x8bb4('0x2')]},'language':{'type':Sequelize[_0x8bb4('0x2')]},'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize[_0x8bb4('0x2')]},'version':{'type':Sequelize[_0x8bb4('0x2')]},'callerid':{'type':Sequelize[_0x8bb4('0x2')]},'calleridname':{'type':Sequelize[_0x8bb4('0x2')]},'callingpres':{'type':Sequelize[_0x8bb4('0x2')]},'callingani2':{'type':Sequelize['STRING']},'callington':{'type':Sequelize['STRING']},'callingtns':{'type':Sequelize[_0x8bb4('0x2')]},'dnid':{'type':Sequelize[_0x8bb4('0x2')]},'rdnis':{'type':Sequelize[_0x8bb4('0x2')]},'context':{'type':Sequelize['STRING']},'extension':{'type':Sequelize[_0x8bb4('0x2')]},'priority':{'type':Sequelize['STRING']},'enhanced':{'type':Sequelize[_0x8bb4('0x2')]},'accountcode':{'type':Sequelize[_0x8bb4('0x2')]},'threadid':{'type':Sequelize[_0x8bb4('0x2')]},'project_name':{'type':Sequelize[_0x8bb4('0x2')]},'joinAt':{'type':Sequelize['DATE']},'leaveAt':{'type':Sequelize[_0x8bb4('0x3')]},'bot':{'type':Sequelize[_0x8bb4('0x4')],'defaultValue':![]}};
\ No newline at end of file
+var _0x1185=['STRING','DATE','BOOLEAN','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1185,0x127));var _0x5118=function(_0x21b25d,_0x189aa2){_0x21b25d=_0x21b25d-0x0;var _0x655a61=_0x1185[_0x21b25d];return _0x655a61;};'use strict';var Sequelize=require('sequelize');module[_0x5118('0x0')]={'network':{'type':Sequelize['STRING']},'network_script':{'type':Sequelize['STRING']},'request':{'type':Sequelize[_0x5118('0x1')]},'channel':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x5118('0x1')]},'type':{'type':Sequelize[_0x5118('0x1')]},'uniqueid':{'type':Sequelize[_0x5118('0x1')]},'version':{'type':Sequelize[_0x5118('0x1')]},'callerid':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize['STRING']},'callingpres':{'type':Sequelize['STRING']},'callingani2':{'type':Sequelize[_0x5118('0x1')]},'callington':{'type':Sequelize[_0x5118('0x1')]},'callingtns':{'type':Sequelize[_0x5118('0x1')]},'dnid':{'type':Sequelize[_0x5118('0x1')]},'rdnis':{'type':Sequelize['STRING']},'context':{'type':Sequelize[_0x5118('0x1')]},'extension':{'type':Sequelize[_0x5118('0x1')]},'priority':{'type':Sequelize[_0x5118('0x1')]},'enhanced':{'type':Sequelize[_0x5118('0x1')]},'accountcode':{'type':Sequelize[_0x5118('0x1')]},'threadid':{'type':Sequelize[_0x5118('0x1')]},'project_name':{'type':Sequelize[_0x5118('0x1')]},'joinAt':{'type':Sequelize[_0x5118('0x2')]},'leaveAt':{'type':Sequelize[_0x5118('0x2')]},'bot':{'type':Sequelize[_0x5118('0x3')],'defaultValue':![]}};
\ No newline at end of file
index 0d0008d..75c4f75 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb529=['../../config/utils','sendStatus','status','offset','undefined','limit','count','set','Content-Range','json','reject','save','update','then','destroy','error','name','send','index','map','SquareReport','rawAttributes','fieldName','type','key','model','query','keys','filters','attributes','intersection','fields','length','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','catch','show','find','create','body','params','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','api'];(function(_0x203486,_0x464679){var _0x963e33=function(_0x38cf95){while(--_0x38cf95){_0x203486['push'](_0x203486['shift']());}};_0x963e33(++_0x464679);}(_0xb529,0x75));var _0x9b52=function(_0x1b5688,_0x336b37){_0x1b5688=_0x1b5688-0x0;var _0x43c86e=_0xb529[_0x1b5688];return _0x43c86e;};'use strict';var emlformat=require(_0x9b52('0x0'));var rimraf=require(_0x9b52('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x9b52('0x2'));var rp=require(_0x9b52('0x3'));var moment=require(_0x9b52('0x4'));var BPromise=require(_0x9b52('0x5'));var Mustache=require(_0x9b52('0x6'));var util=require('util');var path=require(_0x9b52('0x7'));var sox=require('sox');var csv=require(_0x9b52('0x8'));var ejs=require(_0x9b52('0x9'));var fs=require('fs');var fs_extra=require(_0x9b52('0xa'));var _=require('lodash');var squel=require(_0x9b52('0xb'));var crypto=require(_0x9b52('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x9b52('0xd'));var toCsv=require('to-csv');var querystring=require(_0x9b52('0xe'));var Papa=require(_0x9b52('0xf'));var Redis=require('ioredis');var authService=require(_0x9b52('0x10'));var qs=require(_0x9b52('0x11'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x9b52('0x12'));var utils=require(_0x9b52('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x3cfa33,_0x459db2){_0x459db2=_0x459db2||0xcc;return function(_0x3038ea){if(_0x3038ea){return _0x3cfa33[_0x9b52('0x14')](_0x459db2);}return _0x3cfa33[_0x9b52('0x15')](_0x459db2)['end']();};}function respondWithResult(_0x4010cb,_0x47bba6){_0x47bba6=_0x47bba6||0xc8;return function(_0x3806bb){if(_0x3806bb){return _0x4010cb[_0x9b52('0x15')](_0x47bba6)['json'](_0x3806bb);}};}function respondWithFilteredResult(_0x5e672e,_0x16b86f){return function(_0x4d4964){if(_0x4d4964){var _0x36cac3=typeof _0x16b86f[_0x9b52('0x16')]===_0x9b52('0x17')&&typeof _0x16b86f[_0x9b52('0x18')]===_0x9b52('0x17');var _0x4695a9=_0x4d4964[_0x9b52('0x19')];var _0x11a941=_0x36cac3?0x0:_0x16b86f[_0x9b52('0x16')];var _0x28982b=_0x36cac3?_0x4d4964[_0x9b52('0x19')]:_0x16b86f['offset']+_0x16b86f[_0x9b52('0x18')];var _0x357e1d;if(_0x28982b>=_0x4695a9){_0x28982b=_0x4695a9;_0x357e1d=0xc8;}else{_0x357e1d=0xce;}_0x5e672e[_0x9b52('0x15')](_0x357e1d);return _0x5e672e[_0x9b52('0x1a')](_0x9b52('0x1b'),_0x11a941+'-'+_0x28982b+'/'+_0x4695a9)[_0x9b52('0x1c')](_0x4d4964);}return null;};}function patchUpdates(_0x2b1f5b){return function(_0x4517e7){try{jsonpatch['apply'](_0x4517e7,_0x2b1f5b,!![]);}catch(_0x4c27ac){return BPromise[_0x9b52('0x1d')](_0x4c27ac);}return _0x4517e7[_0x9b52('0x1e')]();};}function saveUpdates(_0xc47b19,_0x2382fb){return function(_0x2c025f){if(_0x2c025f){return _0x2c025f[_0x9b52('0x1f')](_0xc47b19)[_0x9b52('0x20')](function(_0x234f5d){return _0x234f5d;});}return null;};}function removeEntity(_0x5cfef4,_0x1c0544){return function(_0x1288e4){if(_0x1288e4){return _0x1288e4[_0x9b52('0x21')]()[_0x9b52('0x20')](function(){_0x5cfef4[_0x9b52('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4640fa,_0x16be24){return function(_0xe01f35){if(!_0xe01f35){_0x4640fa[_0x9b52('0x14')](0x194);}return _0xe01f35;};}function handleError(_0x3703c5,_0x1f67fe){_0x1f67fe=_0x1f67fe||0x1f4;return function(_0x564378){logger[_0x9b52('0x22')](_0x564378['stack']);if(_0x564378[_0x9b52('0x23')]){delete _0x564378[_0x9b52('0x23')];}_0x3703c5[_0x9b52('0x15')](_0x1f67fe)[_0x9b52('0x24')](_0x564378);};}exports[_0x9b52('0x25')]=function(_0x24f317,_0x85cf9f){var _0x1a8fe5={},_0x254488={},_0x2da99b={'count':0x0,'rows':[]};var _0x5f9db1=_[_0x9b52('0x26')](db[_0x9b52('0x27')][_0x9b52('0x28')],function(_0x4b4b46){return{'name':_0x4b4b46[_0x9b52('0x29')],'type':_0x4b4b46[_0x9b52('0x2a')][_0x9b52('0x2b')]};});_0x254488[_0x9b52('0x2c')]=_['map'](_0x5f9db1,_0x9b52('0x23'));_0x254488[_0x9b52('0x2d')]=_[_0x9b52('0x2e')](_0x24f317[_0x9b52('0x2d')]);_0x254488[_0x9b52('0x2f')]=_['intersection'](_0x254488[_0x9b52('0x2c')],_0x254488['query']);_0x1a8fe5[_0x9b52('0x30')]=_[_0x9b52('0x31')](_0x254488['model'],qs['fields'](_0x24f317[_0x9b52('0x2d')][_0x9b52('0x32')]));_0x1a8fe5[_0x9b52('0x30')]=_0x1a8fe5[_0x9b52('0x30')][_0x9b52('0x33')]?_0x1a8fe5[_0x9b52('0x30')]:_0x254488[_0x9b52('0x2c')];if(!_0x24f317[_0x9b52('0x2d')]['hasOwnProperty']('nolimit')){_0x1a8fe5['limit']=qs['limit'](_0x24f317[_0x9b52('0x2d')][_0x9b52('0x18')]);_0x1a8fe5[_0x9b52('0x16')]=qs['offset'](_0x24f317[_0x9b52('0x2d')][_0x9b52('0x16')]);}_0x1a8fe5[_0x9b52('0x34')]=qs[_0x9b52('0x35')](_0x24f317[_0x9b52('0x2d')][_0x9b52('0x35')]);_0x1a8fe5['where']=qs['filters'](_[_0x9b52('0x36')](_0x24f317[_0x9b52('0x2d')],_0x254488[_0x9b52('0x2f')]),_0x5f9db1);if(_0x24f317[_0x9b52('0x2d')][_0x9b52('0x37')]){_0x1a8fe5[_0x9b52('0x38')]=_[_0x9b52('0x39')](_0x1a8fe5[_0x9b52('0x38')],{'$or':_[_0x9b52('0x26')](_0x5f9db1,function(_0x1d5a7b){if(_0x1d5a7b[_0x9b52('0x2a')]!==_0x9b52('0x3a')){var _0x403e17={};_0x403e17[_0x1d5a7b[_0x9b52('0x23')]]={'$like':'%'+_0x24f317['query'][_0x9b52('0x37')]+'%'};return _0x403e17;}})});}_0x1a8fe5=_[_0x9b52('0x39')]({},_0x1a8fe5,_0x24f317[_0x9b52('0x3b')]);var _0x57d046={'where':_0x1a8fe5[_0x9b52('0x38')]};return db[_0x9b52('0x27')][_0x9b52('0x19')](_0x57d046)['then'](function(_0x317a5c){_0x2da99b['count']=_0x317a5c;if(_0x24f317[_0x9b52('0x2d')][_0x9b52('0x3c')]){_0x1a8fe5['include']=[{'all':!![]}];}return db['SquareReport']['findAll'](_0x1a8fe5);})[_0x9b52('0x20')](function(_0xc20d1d){_0x2da99b['rows']=_0xc20d1d;return _0x2da99b;})[_0x9b52('0x20')](respondWithFilteredResult(_0x85cf9f,_0x1a8fe5))[_0x9b52('0x3d')](handleError(_0x85cf9f,null));};exports[_0x9b52('0x3e')]=function(_0x3cc748,_0x941da6){var _0xc884b7={'raw':!![],'where':{'id':_0x3cc748['params']['id']}},_0x540c11={};_0x540c11[_0x9b52('0x2c')]=_[_0x9b52('0x2e')](db[_0x9b52('0x27')][_0x9b52('0x28')]);_0x540c11[_0x9b52('0x2d')]=_['keys'](_0x3cc748[_0x9b52('0x2d')]);_0x540c11[_0x9b52('0x2f')]=_[_0x9b52('0x31')](_0x540c11[_0x9b52('0x2c')],_0x540c11[_0x9b52('0x2d')]);_0xc884b7[_0x9b52('0x30')]=_[_0x9b52('0x31')](_0x540c11[_0x9b52('0x2c')],qs[_0x9b52('0x32')](_0x3cc748[_0x9b52('0x2d')][_0x9b52('0x32')]));_0xc884b7['attributes']=_0xc884b7[_0x9b52('0x30')][_0x9b52('0x33')]?_0xc884b7['attributes']:_0x540c11[_0x9b52('0x2c')];if(_0x3cc748[_0x9b52('0x2d')]['includeAll']){_0xc884b7['include']=[{'all':!![]}];}_0xc884b7=_[_0x9b52('0x39')]({},_0xc884b7,_0x3cc748['options']);return db['SquareReport'][_0x9b52('0x3f')](_0xc884b7)[_0x9b52('0x20')](handleEntityNotFound(_0x941da6,null))[_0x9b52('0x20')](respondWithResult(_0x941da6,null))[_0x9b52('0x3d')](handleError(_0x941da6,null));};exports[_0x9b52('0x40')]=function(_0x3800e4,_0x1abb04){return db[_0x9b52('0x27')]['create'](_0x3800e4[_0x9b52('0x41')],{})['then'](respondWithResult(_0x1abb04,0xc9))[_0x9b52('0x3d')](handleError(_0x1abb04,null));};exports[_0x9b52('0x1f')]=function(_0x4cb019,_0x2fa68a){if(_0x4cb019[_0x9b52('0x41')]['id']){delete _0x4cb019['body']['id'];}return db[_0x9b52('0x27')][_0x9b52('0x3f')]({'where':{'id':_0x4cb019['params']['id']}})['then'](handleEntityNotFound(_0x2fa68a,null))['then'](saveUpdates(_0x4cb019[_0x9b52('0x41')],null))[_0x9b52('0x20')](respondWithResult(_0x2fa68a,null))[_0x9b52('0x3d')](handleError(_0x2fa68a,null));};exports['destroy']=function(_0x1283d9,_0x48158d){return db[_0x9b52('0x27')][_0x9b52('0x3f')]({'where':{'id':_0x1283d9[_0x9b52('0x42')]['id']}})[_0x9b52('0x20')](handleEntityNotFound(_0x48158d,null))[_0x9b52('0x20')](removeEntity(_0x48158d,null))[_0x9b52('0x3d')](handleError(_0x48158d,null));};exports['describe']=function(_0x5b3816,_0x728c09){return db[_0x9b52('0x27')][_0x9b52('0x43')]()[_0x9b52('0x20')](respondWithResult(_0x728c09,null))['catch'](handleError(_0x728c09,null));};
\ No newline at end of file
+var _0x7091=['set','Content-Range','apply','reject','save','update','then','destroy','stack','name','send','rawAttributes','type','key','model','map','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','pick','where','merge','VIRTUAL','options','SquareReport','includeAll','include','findAll','rows','catch','show','params','create','body','find','describe','eml-format','rimraf','fast-json-patch','request-promise','bluebird','util','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','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'];(function(_0x446200,_0x558a1e){var _0x2f4e1c=function(_0x2d16cf){while(--_0x2d16cf){_0x446200['push'](_0x446200['shift']());}};_0x2f4e1c(++_0x558a1e);}(_0x7091,0xc1));var _0x1709=function(_0x477081,_0x2ee413){_0x477081=_0x477081-0x0;var _0x12a477=_0x7091[_0x477081];return _0x12a477;};'use strict';var emlformat=require(_0x1709('0x0'));var rimraf=require(_0x1709('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x1709('0x2'));var rp=require(_0x1709('0x3'));var moment=require('moment');var BPromise=require(_0x1709('0x4'));var Mustache=require('mustache');var util=require(_0x1709('0x5'));var path=require('path');var sox=require(_0x1709('0x6'));var csv=require(_0x1709('0x7'));var ejs=require(_0x1709('0x8'));var fs=require('fs');var fs_extra=require(_0x1709('0x9'));var _=require(_0x1709('0xa'));var squel=require('squel');var crypto=require(_0x1709('0xb'));var jsforce=require(_0x1709('0xc'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x1709('0xd'));var Papa=require('papaparse');var Redis=require(_0x1709('0xe'));var authService=require(_0x1709('0xf'));var qs=require(_0x1709('0x10'));var as=require(_0x1709('0x11'));var hardwareService=require(_0x1709('0x12'));var logger=require(_0x1709('0x13'))(_0x1709('0x14'));var utils=require(_0x1709('0x15'));var config=require(_0x1709('0x16'));var licenseUtil=require(_0x1709('0x17'));var db=require(_0x1709('0x18'))['db'];function respondWithStatusCode(_0x41d45d,_0x3251cd){_0x3251cd=_0x3251cd||0xcc;return function(_0x454a36){if(_0x454a36){return _0x41d45d[_0x1709('0x19')](_0x3251cd);}return _0x41d45d[_0x1709('0x1a')](_0x3251cd)['end']();};}function respondWithResult(_0x32abf5,_0x4819ee){_0x4819ee=_0x4819ee||0xc8;return function(_0x18406b){if(_0x18406b){return _0x32abf5['status'](_0x4819ee)[_0x1709('0x1b')](_0x18406b);}};}function respondWithFilteredResult(_0x3ed76f,_0x2e9183){return function(_0x1e223c){if(_0x1e223c){var _0x399e79=typeof _0x2e9183[_0x1709('0x1c')]===_0x1709('0x1d')&&typeof _0x2e9183[_0x1709('0x1e')]==='undefined';var _0x55e897=_0x1e223c[_0x1709('0x1f')];var _0x4cf61d=_0x399e79?0x0:_0x2e9183['offset'];var _0x506301=_0x399e79?_0x1e223c[_0x1709('0x1f')]:_0x2e9183[_0x1709('0x1c')]+_0x2e9183[_0x1709('0x1e')];var _0x2cc524;if(_0x506301>=_0x55e897){_0x506301=_0x55e897;_0x2cc524=0xc8;}else{_0x2cc524=0xce;}_0x3ed76f[_0x1709('0x1a')](_0x2cc524);return _0x3ed76f[_0x1709('0x20')](_0x1709('0x21'),_0x4cf61d+'-'+_0x506301+'/'+_0x55e897)['json'](_0x1e223c);}return null;};}function patchUpdates(_0x2690b7){return function(_0x16e76c){try{jsonpatch[_0x1709('0x22')](_0x16e76c,_0x2690b7,!![]);}catch(_0x172230){return BPromise[_0x1709('0x23')](_0x172230);}return _0x16e76c[_0x1709('0x24')]();};}function saveUpdates(_0xd188c7,_0x3eb25f){return function(_0x395971){if(_0x395971){return _0x395971[_0x1709('0x25')](_0xd188c7)[_0x1709('0x26')](function(_0x1ad6a1){return _0x1ad6a1;});}return null;};}function removeEntity(_0x517069,_0x3ab698){return function(_0xbcdf1a){if(_0xbcdf1a){return _0xbcdf1a[_0x1709('0x27')]()[_0x1709('0x26')](function(){_0x517069[_0x1709('0x1a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5b87a5,_0x2a057b){return function(_0x36ae60){if(!_0x36ae60){_0x5b87a5['sendStatus'](0x194);}return _0x36ae60;};}function handleError(_0x3f73e8,_0x135d3b){_0x135d3b=_0x135d3b||0x1f4;return function(_0x2bbea2){logger['error'](_0x2bbea2[_0x1709('0x28')]);if(_0x2bbea2[_0x1709('0x29')]){delete _0x2bbea2['name'];}_0x3f73e8['status'](_0x135d3b)[_0x1709('0x2a')](_0x2bbea2);};}exports['index']=function(_0x195f2f,_0x5bae6b){var _0x1bc4f2={},_0x415b8d={},_0x5bc105={'count':0x0,'rows':[]};var _0x474e1c=_['map'](db['SquareReport'][_0x1709('0x2b')],function(_0x473683){return{'name':_0x473683['fieldName'],'type':_0x473683[_0x1709('0x2c')][_0x1709('0x2d')]};});_0x415b8d[_0x1709('0x2e')]=_[_0x1709('0x2f')](_0x474e1c,'name');_0x415b8d[_0x1709('0x30')]=_[_0x1709('0x31')](_0x195f2f[_0x1709('0x30')]);_0x415b8d[_0x1709('0x32')]=_['intersection'](_0x415b8d[_0x1709('0x2e')],_0x415b8d[_0x1709('0x30')]);_0x1bc4f2[_0x1709('0x33')]=_[_0x1709('0x34')](_0x415b8d[_0x1709('0x2e')],qs[_0x1709('0x35')](_0x195f2f[_0x1709('0x30')][_0x1709('0x35')]));_0x1bc4f2['attributes']=_0x1bc4f2[_0x1709('0x33')][_0x1709('0x36')]?_0x1bc4f2[_0x1709('0x33')]:_0x415b8d[_0x1709('0x2e')];if(!_0x195f2f[_0x1709('0x30')][_0x1709('0x37')](_0x1709('0x38'))){_0x1bc4f2[_0x1709('0x1e')]=qs[_0x1709('0x1e')](_0x195f2f[_0x1709('0x30')][_0x1709('0x1e')]);_0x1bc4f2[_0x1709('0x1c')]=qs[_0x1709('0x1c')](_0x195f2f[_0x1709('0x30')]['offset']);}_0x1bc4f2['order']=qs[_0x1709('0x39')](_0x195f2f[_0x1709('0x30')][_0x1709('0x39')]);_0x1bc4f2['where']=qs[_0x1709('0x32')](_[_0x1709('0x3a')](_0x195f2f[_0x1709('0x30')],_0x415b8d[_0x1709('0x32')]),_0x474e1c);if(_0x195f2f[_0x1709('0x30')]['filter']){_0x1bc4f2[_0x1709('0x3b')]=_[_0x1709('0x3c')](_0x1bc4f2[_0x1709('0x3b')],{'$or':_[_0x1709('0x2f')](_0x474e1c,function(_0x537ee6){if(_0x537ee6[_0x1709('0x2c')]!==_0x1709('0x3d')){var _0x5a3fa2={};_0x5a3fa2[_0x537ee6[_0x1709('0x29')]]={'$like':'%'+_0x195f2f[_0x1709('0x30')]['filter']+'%'};return _0x5a3fa2;}})});}_0x1bc4f2=_['merge']({},_0x1bc4f2,_0x195f2f[_0x1709('0x3e')]);var _0x5e4649={'where':_0x1bc4f2['where']};return db[_0x1709('0x3f')]['count'](_0x5e4649)['then'](function(_0x471427){_0x5bc105[_0x1709('0x1f')]=_0x471427;if(_0x195f2f[_0x1709('0x30')][_0x1709('0x40')]){_0x1bc4f2[_0x1709('0x41')]=[{'all':!![]}];}return db[_0x1709('0x3f')][_0x1709('0x42')](_0x1bc4f2);})[_0x1709('0x26')](function(_0x70ef8c){_0x5bc105[_0x1709('0x43')]=_0x70ef8c;return _0x5bc105;})['then'](respondWithFilteredResult(_0x5bae6b,_0x1bc4f2))[_0x1709('0x44')](handleError(_0x5bae6b,null));};exports[_0x1709('0x45')]=function(_0x2b3688,_0x424289){var _0x1477a1={'raw':!![],'where':{'id':_0x2b3688[_0x1709('0x46')]['id']}},_0x3ca36d={};_0x3ca36d[_0x1709('0x2e')]=_['keys'](db[_0x1709('0x3f')][_0x1709('0x2b')]);_0x3ca36d[_0x1709('0x30')]=_[_0x1709('0x31')](_0x2b3688[_0x1709('0x30')]);_0x3ca36d[_0x1709('0x32')]=_['intersection'](_0x3ca36d[_0x1709('0x2e')],_0x3ca36d[_0x1709('0x30')]);_0x1477a1['attributes']=_[_0x1709('0x34')](_0x3ca36d[_0x1709('0x2e')],qs['fields'](_0x2b3688[_0x1709('0x30')][_0x1709('0x35')]));_0x1477a1[_0x1709('0x33')]=_0x1477a1[_0x1709('0x33')]['length']?_0x1477a1[_0x1709('0x33')]:_0x3ca36d[_0x1709('0x2e')];if(_0x2b3688['query'][_0x1709('0x40')]){_0x1477a1[_0x1709('0x41')]=[{'all':!![]}];}_0x1477a1=_[_0x1709('0x3c')]({},_0x1477a1,_0x2b3688[_0x1709('0x3e')]);return db['SquareReport']['find'](_0x1477a1)[_0x1709('0x26')](handleEntityNotFound(_0x424289,null))[_0x1709('0x26')](respondWithResult(_0x424289,null))[_0x1709('0x44')](handleError(_0x424289,null));};exports[_0x1709('0x47')]=function(_0x364d0a,_0x2b3866){return db[_0x1709('0x3f')]['create'](_0x364d0a[_0x1709('0x48')],{})[_0x1709('0x26')](respondWithResult(_0x2b3866,0xc9))[_0x1709('0x44')](handleError(_0x2b3866,null));};exports[_0x1709('0x25')]=function(_0x4d8c10,_0x52a419){if(_0x4d8c10[_0x1709('0x48')]['id']){delete _0x4d8c10[_0x1709('0x48')]['id'];}return db[_0x1709('0x3f')][_0x1709('0x49')]({'where':{'id':_0x4d8c10[_0x1709('0x46')]['id']}})['then'](handleEntityNotFound(_0x52a419,null))[_0x1709('0x26')](saveUpdates(_0x4d8c10[_0x1709('0x48')],null))['then'](respondWithResult(_0x52a419,null))[_0x1709('0x44')](handleError(_0x52a419,null));};exports[_0x1709('0x27')]=function(_0x27b1b0,_0x520409){return db['SquareReport']['find']({'where':{'id':_0x27b1b0[_0x1709('0x46')]['id']}})['then'](handleEntityNotFound(_0x520409,null))['then'](removeEntity(_0x520409,null))[_0x1709('0x44')](handleError(_0x520409,null));};exports[_0x1709('0x4a')]=function(_0x51790c,_0x5c2ff0){return db['SquareReport'][_0x1709('0x4a')]()[_0x1709('0x26')](respondWithResult(_0x5c2ff0,null))[_0x1709('0x44')](handleError(_0x5c2ff0,null));};
\ No newline at end of file
index 8bb436d..eda81a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55b9=['../../config/environment','./squareReport.attributes','report_square','uid_pname','uniqueid','project_name','leaveAt','lodash','util','api','moment','bluebird','request-promise','path'];(function(_0x2c7f2b,_0x3c384a){var _0x6a1787=function(_0x550c70){while(--_0x550c70){_0x2c7f2b['push'](_0x2c7f2b['shift']());}};_0x6a1787(++_0x3c384a);}(_0x55b9,0xcb));var _0x955b=function(_0x48954b,_0x1a1dfb){_0x48954b=_0x48954b-0x0;var _0x1e8ef2=_0x55b9[_0x48954b];return _0x1e8ef2;};'use strict';var _=require(_0x955b('0x0'));var util=require(_0x955b('0x1'));var logger=require('../../config/logger')(_0x955b('0x2'));var moment=require(_0x955b('0x3'));var BPromise=require(_0x955b('0x4'));var rp=require(_0x955b('0x5'));var fs=require('fs');var path=require(_0x955b('0x6'));var rimraf=require('rimraf');var config=require(_0x955b('0x7'));var attributes=require(_0x955b('0x8'));module['exports']=function(_0x244141,_0x577954){return _0x244141['define']('SquareReport',attributes,{'tableName':_0x955b('0x9'),'paranoid':![],'indexes':[{'name':_0x955b('0xa'),'fields':[_0x955b('0xb'),_0x955b('0xc')]},{'name':_0x955b('0xd'),'fields':['leaveAt']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x5b06=['request-promise','path','../../config/environment','./squareReport.attributes','exports','SquareReport','uid_pname','uniqueid','project_name','leaveAt','lodash','util','../../config/logger','moment'];(function(_0x4c7c58,_0x424ad2){var _0x329c04=function(_0x3d9b2d){while(--_0x3d9b2d){_0x4c7c58['push'](_0x4c7c58['shift']());}};_0x329c04(++_0x424ad2);}(_0x5b06,0xea));var _0x65b0=function(_0xed801d,_0x2cc0db){_0xed801d=_0xed801d-0x0;var _0x399980=_0x5b06[_0xed801d];return _0x399980;};'use strict';var _=require(_0x65b0('0x0'));var util=require(_0x65b0('0x1'));var logger=require(_0x65b0('0x2'))('api');var moment=require(_0x65b0('0x3'));var BPromise=require('bluebird');var rp=require(_0x65b0('0x4'));var fs=require('fs');var path=require(_0x65b0('0x5'));var rimraf=require('rimraf');var config=require(_0x65b0('0x6'));var attributes=require(_0x65b0('0x7'));module[_0x65b0('0x8')]=function(_0x249451,_0x1d59b6){return _0x249451['define'](_0x65b0('0x9'),attributes,{'tableName':'report_square','paranoid':![],'indexes':[{'name':_0x65b0('0xa'),'fields':[_0x65b0('0xb'),_0x65b0('0xc')]},{'name':_0x65b0('0xd'),'fields':[_0x65b0('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index c025c13..89230cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4280=['UpdateSquareReport','where','attributes','limit','lodash','randomstring','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','request','then','SquareReport,\x20%s,\x20%s','request\x20sent','debug','SquareReport,\x20%s,\x20%s,\x20%s','error','code','message','info','CreateSquareReport','SquareReport','create','body','options','raw','stringify','catch'];(function(_0x10038c,_0x445a3f){var _0x50a7b6=function(_0x201202){while(--_0x201202){_0x10038c['push'](_0x10038c['shift']());}};_0x50a7b6(++_0x445a3f);}(_0x4280,0x7c));var _0x0428=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x4280[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0428('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0428('0x1'));var fs=require('fs');var Redis=require(_0x0428('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x0428('0x3'));var logger=require(_0x0428('0x4'))('rpc');var config=require(_0x0428('0x5'));var jayson=require(_0x0428('0x6'));var client=jayson[_0x0428('0x7')]['http']({'port':0x232a});function respondWithRpcPromise(_0x326168,_0x3602cb,_0x433026){return new BPromise(function(_0x4c94ba,_0x283feb){return client[_0x0428('0x8')](_0x326168,_0x433026)[_0x0428('0x9')](function(_0x578192){logger['info'](_0x0428('0xa'),_0x3602cb,_0x0428('0xb'));logger[_0x0428('0xc')](_0x0428('0xd'),_0x3602cb,_0x0428('0xb'),JSON['stringify'](_0x578192));if(_0x578192['error']){if(_0x578192[_0x0428('0xe')][_0x0428('0xf')]===0x1f4){logger[_0x0428('0xe')]('SquareReport,\x20%s,\x20%s',_0x3602cb,_0x578192['error'][_0x0428('0x10')]);return _0x283feb(_0x578192[_0x0428('0xe')][_0x0428('0x10')]);}logger[_0x0428('0xe')]('SquareReport,\x20%s,\x20%s',_0x3602cb,_0x578192['error']['message']);return _0x4c94ba(_0x578192['error'][_0x0428('0x10')]);}else{logger[_0x0428('0x11')](_0x0428('0xa'),_0x3602cb,'request\x20sent');_0x4c94ba(_0x578192['result']['message']);}})['catch'](function(_0x26dd2e){logger[_0x0428('0xe')]('SquareReport,\x20%s,\x20%s',_0x3602cb,_0x26dd2e);_0x283feb(_0x26dd2e);});});}exports[_0x0428('0x12')]=function(_0x3f4649){var _0x224957=this;return new Promise(function(_0x436fbb,_0x40c85f){return db[_0x0428('0x13')][_0x0428('0x14')](_0x3f4649[_0x0428('0x15')],{'raw':_0x3f4649[_0x0428('0x16')]?_0x3f4649[_0x0428('0x16')][_0x0428('0x17')]===undefined?!![]:![]:!![]})[_0x0428('0x9')](function(_0x5285c4){logger[_0x0428('0x11')](_0x0428('0x12'),_0x3f4649);logger['debug']('CreateSquareReport',_0x3f4649,JSON[_0x0428('0x18')](_0x5285c4));_0x436fbb(_0x5285c4);})[_0x0428('0x19')](function(_0x3535df){logger[_0x0428('0xe')](_0x0428('0x12'),_0x3535df[_0x0428('0x10')],_0x3f4649);_0x40c85f(_0x224957[_0x0428('0xe')](0x1f4,_0x3535df[_0x0428('0x10')]));});});};exports[_0x0428('0x1a')]=function(_0x248d2a){var _0x147fba=this;return new Promise(function(_0x11d153,_0x4e00e4){return db[_0x0428('0x13')]['update'](_0x248d2a['body'],{'raw':_0x248d2a['options']?_0x248d2a['options'][_0x0428('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x248d2a[_0x0428('0x16')]?_0x248d2a['options'][_0x0428('0x1b')]||null:null,'attributes':_0x248d2a['options']?_0x248d2a[_0x0428('0x16')][_0x0428('0x1c')]||null:null,'limit':_0x248d2a['options']?_0x248d2a[_0x0428('0x16')][_0x0428('0x1d')]||null:null})[_0x0428('0x9')](function(_0x533344){logger['info'](_0x0428('0x1a'),_0x248d2a);logger[_0x0428('0xc')](_0x0428('0x1a'),_0x248d2a,JSON[_0x0428('0x18')](_0x533344));_0x11d153(_0x533344);})[_0x0428('0x19')](function(_0x2e14f2){logger[_0x0428('0xe')](_0x0428('0x1a'),_0x2e14f2[_0x0428('0x10')],_0x248d2a);_0x4e00e4(_0x147fba[_0x0428('0xe')](0x1f4,_0x2e14f2[_0x0428('0x10')]));});});};
\ No newline at end of file
+var _0x679a=['../../mysqldb','rpc','jayson/promise','client','http','request','then','info','SquareReport,\x20%s,\x20%s','debug','SquareReport,\x20%s,\x20%s,\x20%s','request\x20sent','error','code','message','result','catch','SquareReport','create','options','CreateSquareReport','stringify','UpdateSquareReport','body','raw','where','attributes','limit','lodash','bluebird','randomstring'];(function(_0x248a49,_0x378b4e){var _0x48c9b0=function(_0x448f15){while(--_0x448f15){_0x248a49['push'](_0x248a49['shift']());}};_0x48c9b0(++_0x378b4e);}(_0x679a,0x79));var _0xa679=function(_0x336b89,_0x13eef8){_0x336b89=_0x336b89-0x0;var _0x259984=_0x679a[_0x336b89];return _0x259984;};'use strict';var _=require(_0xa679('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0xa679('0x1'));var rs=require(_0xa679('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa679('0x3'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0xa679('0x4'));var config=require('../../config/environment');var jayson=require(_0xa679('0x5'));var client=jayson[_0xa679('0x6')][_0xa679('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x4b313c,_0x1bd39e,_0x162b4d){return new BPromise(function(_0x1fe5d8,_0x10c3dd){return client[_0xa679('0x8')](_0x4b313c,_0x162b4d)[_0xa679('0x9')](function(_0x50bbf9){logger[_0xa679('0xa')](_0xa679('0xb'),_0x1bd39e,'request\x20sent');logger[_0xa679('0xc')](_0xa679('0xd'),_0x1bd39e,_0xa679('0xe'),JSON['stringify'](_0x50bbf9));if(_0x50bbf9[_0xa679('0xf')]){if(_0x50bbf9[_0xa679('0xf')][_0xa679('0x10')]===0x1f4){logger['error'](_0xa679('0xb'),_0x1bd39e,_0x50bbf9[_0xa679('0xf')][_0xa679('0x11')]);return _0x10c3dd(_0x50bbf9[_0xa679('0xf')]['message']);}logger['error']('SquareReport,\x20%s,\x20%s',_0x1bd39e,_0x50bbf9[_0xa679('0xf')][_0xa679('0x11')]);return _0x1fe5d8(_0x50bbf9['error'][_0xa679('0x11')]);}else{logger[_0xa679('0xa')]('SquareReport,\x20%s,\x20%s',_0x1bd39e,_0xa679('0xe'));_0x1fe5d8(_0x50bbf9[_0xa679('0x12')][_0xa679('0x11')]);}})[_0xa679('0x13')](function(_0x163b31){logger[_0xa679('0xf')](_0xa679('0xb'),_0x1bd39e,_0x163b31);_0x10c3dd(_0x163b31);});});}exports['CreateSquareReport']=function(_0x43d97c){var _0x3f3923=this;return new Promise(function(_0x297cba,_0x282b7f){return db[_0xa679('0x14')][_0xa679('0x15')](_0x43d97c['body'],{'raw':_0x43d97c[_0xa679('0x16')]?_0x43d97c[_0xa679('0x16')]['raw']===undefined?!![]:![]:!![]})[_0xa679('0x9')](function(_0x323d1a){logger[_0xa679('0xa')](_0xa679('0x17'),_0x43d97c);logger[_0xa679('0xc')]('CreateSquareReport',_0x43d97c,JSON[_0xa679('0x18')](_0x323d1a));_0x297cba(_0x323d1a);})[_0xa679('0x13')](function(_0x3ef81e){logger[_0xa679('0xf')]('CreateSquareReport',_0x3ef81e[_0xa679('0x11')],_0x43d97c);_0x282b7f(_0x3f3923[_0xa679('0xf')](0x1f4,_0x3ef81e[_0xa679('0x11')]));});});};exports[_0xa679('0x19')]=function(_0x52264f){var _0x14f074=this;return new Promise(function(_0x23f64d,_0x1f0228){return db[_0xa679('0x14')]['update'](_0x52264f[_0xa679('0x1a')],{'raw':_0x52264f[_0xa679('0x16')]?_0x52264f[_0xa679('0x16')][_0xa679('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x52264f['options']?_0x52264f['options'][_0xa679('0x1c')]||null:null,'attributes':_0x52264f[_0xa679('0x16')]?_0x52264f[_0xa679('0x16')][_0xa679('0x1d')]||null:null,'limit':_0x52264f['options']?_0x52264f['options'][_0xa679('0x1e')]||null:null})['then'](function(_0x344c6b){logger[_0xa679('0xa')]('UpdateSquareReport',_0x52264f);logger[_0xa679('0xc')]('UpdateSquareReport',_0x52264f,JSON[_0xa679('0x18')](_0x344c6b));_0x23f64d(_0x344c6b);})[_0xa679('0x13')](function(_0x24fa6d){logger[_0xa679('0xf')](_0xa679('0x19'),_0x24fa6d[_0xa679('0x11')],_0x52264f);_0x1f0228(_0x14f074['error'](0x1f4,_0x24fa6d[_0xa679('0x11')]));});});};
\ No newline at end of file
index 69c0d67..22d2c6d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe186=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','index','/describe','/:id','show','create','update','util','path','connect-timeout'];(function(_0x4e8cb9,_0x30bfea){var _0x2b0b72=function(_0x1d8151){while(--_0x1d8151){_0x4e8cb9['push'](_0x4e8cb9['shift']());}};_0x2b0b72(++_0x30bfea);}(_0xe186,0x12f));var _0x6e18=function(_0x1c72e8,_0x29a78d){_0x1c72e8=_0x1c72e8-0x0;var _0x48fb92=_0xe186[_0x1c72e8];return _0x48fb92;};'use strict';var multer=require('multer');var util=require(_0x6e18('0x0'));var path=require(_0x6e18('0x1'));var timeout=require(_0x6e18('0x2'));var express=require(_0x6e18('0x3'));var router=express[_0x6e18('0x4')]();var fs_extra=require(_0x6e18('0x5'));var auth=require(_0x6e18('0x6'));var interaction=require(_0x6e18('0x7'));var config=require(_0x6e18('0x8'));var controller=require(_0x6e18('0x9'));router[_0x6e18('0xa')]('/',auth[_0x6e18('0xb')](),controller[_0x6e18('0xc')]);router['get'](_0x6e18('0xd'),auth['isAuthenticated'](),controller['describe']);router[_0x6e18('0xa')](_0x6e18('0xe'),auth['isAuthenticated'](),controller[_0x6e18('0xf')]);router['post']('/',auth[_0x6e18('0xb')](),controller[_0x6e18('0x10')]);router['put'](_0x6e18('0xe'),auth['isAuthenticated'](),controller[_0x6e18('0x11')]);router['delete'](_0x6e18('0xe'),auth[_0x6e18('0xb')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x4bf8=['util','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./squareReportDetail.controller','get','isAuthenticated','/describe','describe','/:id','show','post','create','update','delete','destroy','exports'];(function(_0x361761,_0x4d65ca){var _0x51db99=function(_0x1ab75a){while(--_0x1ab75a){_0x361761['push'](_0x361761['shift']());}};_0x51db99(++_0x4d65ca);}(_0x4bf8,0xb4));var _0x84bf=function(_0x4ca11e,_0x738ff5){_0x4ca11e=_0x4ca11e-0x0;var _0x23efcb=_0x4bf8[_0x4ca11e];return _0x23efcb;};'use strict';var multer=require('multer');var util=require(_0x84bf('0x0'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x84bf('0x1'));var router=express[_0x84bf('0x2')]();var fs_extra=require(_0x84bf('0x3'));var auth=require(_0x84bf('0x4'));var interaction=require(_0x84bf('0x5'));var config=require(_0x84bf('0x6'));var controller=require(_0x84bf('0x7'));router[_0x84bf('0x8')]('/',auth[_0x84bf('0x9')](),controller['index']);router['get'](_0x84bf('0xa'),auth[_0x84bf('0x9')](),controller[_0x84bf('0xb')]);router[_0x84bf('0x8')](_0x84bf('0xc'),auth[_0x84bf('0x9')](),controller[_0x84bf('0xd')]);router[_0x84bf('0xe')]('/',auth[_0x84bf('0x9')](),controller[_0x84bf('0xf')]);router['put'](_0x84bf('0xc'),auth[_0x84bf('0x9')](),controller[_0x84bf('0x10')]);router[_0x84bf('0x11')](_0x84bf('0xc'),auth['isAuthenticated'](),controller[_0x84bf('0x12')]);module[_0x84bf('0x13')]=router;
\ No newline at end of file
index b43bf0e..65e15aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x48da=['sequelize','exports','STRING','TEXT'];(function(_0x3ba8c8,_0x4e0548){var _0x1e7c2e=function(_0x53ddf5){while(--_0x53ddf5){_0x3ba8c8['push'](_0x3ba8c8['shift']());}};_0x1e7c2e(++_0x4e0548);}(_0x48da,0x70));var _0xa48d=function(_0x17e998,_0x170c10){_0x17e998=_0x17e998-0x0;var _0x1bc9f6=_0x48da[_0x17e998];return _0x1bc9f6;};'use strict';var Sequelize=require(_0xa48d('0x0'));module[_0xa48d('0x1')]={'uniqueid':{'type':Sequelize[_0xa48d('0x2')]},'node':{'type':Sequelize[_0xa48d('0x2')]},'application':{'type':Sequelize[_0xa48d('0x2')]},'data':{'type':Sequelize[_0xa48d('0x3')]},'project_name':{'type':Sequelize[_0xa48d('0x2')]},'callerid':{'type':Sequelize[_0xa48d('0x2')]}};
\ No newline at end of file
+var _0xfb74=['STRING','sequelize','exports'];(function(_0x1f46c5,_0x5726b1){var _0x136753=function(_0x1b855c){while(--_0x1b855c){_0x1f46c5['push'](_0x1f46c5['shift']());}};_0x136753(++_0x5726b1);}(_0xfb74,0x1de));var _0x4fb7=function(_0x1d3019,_0x8dbbd5){_0x1d3019=_0x1d3019-0x0;var _0x36458e=_0xfb74[_0x1d3019];return _0x36458e;};'use strict';var Sequelize=require(_0x4fb7('0x0'));module[_0x4fb7('0x1')]={'uniqueid':{'type':Sequelize[_0x4fb7('0x2')]},'node':{'type':Sequelize['STRING']},'application':{'type':Sequelize['STRING']},'data':{'type':Sequelize['TEXT']},'project_name':{'type':Sequelize[_0x4fb7('0x2')]},'callerid':{'type':Sequelize[_0x4fb7('0x2')]}};
\ No newline at end of file
index 7ce3948..e786f96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4706=['fast-json-patch','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','lodash','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','status','offset','undefined','count','set','Content-Range','json','apply','save','then','end','name','send','index','SquareDetailsReport','rawAttributes','fieldName','key','model','map','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','includeAll','include','findAll','rows','catch','params','length','find','create','body','update','destroy','describe','eml-format','rimraf','zip-dir'];(function(_0x306250,_0x2c44ce){var _0x39e362=function(_0x3cf176){while(--_0x3cf176){_0x306250['push'](_0x306250['shift']());}};_0x39e362(++_0x2c44ce);}(_0x4706,0x17e));var _0x6470=function(_0x362d98,_0xf5ed45){_0x362d98=_0x362d98-0x0;var _0x4e12c2=_0x4706[_0x362d98];return _0x4e12c2;};'use strict';var emlformat=require(_0x6470('0x0'));var rimraf=require(_0x6470('0x1'));var zipdir=require(_0x6470('0x2'));var jsonpatch=require(_0x6470('0x3'));var rp=require(_0x6470('0x4'));var moment=require(_0x6470('0x5'));var BPromise=require(_0x6470('0x6'));var Mustache=require(_0x6470('0x7'));var util=require(_0x6470('0x8'));var path=require('path');var sox=require('sox');var csv=require(_0x6470('0x9'));var ejs=require(_0x6470('0xa'));var fs=require('fs');var fs_extra=require(_0x6470('0xb'));var _=require(_0x6470('0xc'));var squel=require('squel');var crypto=require(_0x6470('0xd'));var jsforce=require(_0x6470('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x6470('0x9'));var querystring=require(_0x6470('0xf'));var Papa=require(_0x6470('0x10'));var Redis=require(_0x6470('0x11'));var authService=require(_0x6470('0x12'));var qs=require(_0x6470('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x6470('0x14'));var logger=require(_0x6470('0x15'))(_0x6470('0x16'));var utils=require(_0x6470('0x17'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x6470('0x18'))['db'];function respondWithStatusCode(_0x325f43,_0x1f5f40){_0x1f5f40=_0x1f5f40||0xcc;return function(_0x4e7d76){if(_0x4e7d76){return _0x325f43[_0x6470('0x19')](_0x1f5f40);}return _0x325f43[_0x6470('0x1a')](_0x1f5f40)['end']();};}function respondWithResult(_0x44b6a7,_0x51cf40){_0x51cf40=_0x51cf40||0xc8;return function(_0x2186eb){if(_0x2186eb){return _0x44b6a7[_0x6470('0x1a')](_0x51cf40)['json'](_0x2186eb);}};}function respondWithFilteredResult(_0x3747e2,_0x2adfb1){return function(_0x4ba0de){if(_0x4ba0de){var _0x50fd0b=typeof _0x2adfb1[_0x6470('0x1b')]===_0x6470('0x1c')&&typeof _0x2adfb1['limit']===_0x6470('0x1c');var _0x4c83e1=_0x4ba0de[_0x6470('0x1d')];var _0x21c020=_0x50fd0b?0x0:_0x2adfb1['offset'];var _0x3623da=_0x50fd0b?_0x4ba0de[_0x6470('0x1d')]:_0x2adfb1['offset']+_0x2adfb1['limit'];var _0x51a121;if(_0x3623da>=_0x4c83e1){_0x3623da=_0x4c83e1;_0x51a121=0xc8;}else{_0x51a121=0xce;}_0x3747e2[_0x6470('0x1a')](_0x51a121);return _0x3747e2[_0x6470('0x1e')](_0x6470('0x1f'),_0x21c020+'-'+_0x3623da+'/'+_0x4c83e1)[_0x6470('0x20')](_0x4ba0de);}return null;};}function patchUpdates(_0x5cdc9d){return function(_0x241185){try{jsonpatch[_0x6470('0x21')](_0x241185,_0x5cdc9d,!![]);}catch(_0x4a780b){return BPromise['reject'](_0x4a780b);}return _0x241185[_0x6470('0x22')]();};}function saveUpdates(_0x4cc130,_0xc719bd){return function(_0x358e0c){if(_0x358e0c){return _0x358e0c['update'](_0x4cc130)[_0x6470('0x23')](function(_0xcce43){return _0xcce43;});}return null;};}function removeEntity(_0x44a7fc,_0x681edc){return function(_0x44c4e6){if(_0x44c4e6){return _0x44c4e6['destroy']()['then'](function(){_0x44a7fc[_0x6470('0x1a')](0xcc)[_0x6470('0x24')]();});}};}function handleEntityNotFound(_0x52e786,_0x512057){return function(_0x2dfbde){if(!_0x2dfbde){_0x52e786[_0x6470('0x19')](0x194);}return _0x2dfbde;};}function handleError(_0x179cc2,_0x27d8b7){_0x27d8b7=_0x27d8b7||0x1f4;return function(_0x602400){logger['error'](_0x602400['stack']);if(_0x602400[_0x6470('0x25')]){delete _0x602400[_0x6470('0x25')];}_0x179cc2[_0x6470('0x1a')](_0x27d8b7)[_0x6470('0x26')](_0x602400);};}exports[_0x6470('0x27')]=function(_0x2d90ec,_0x110c43){var _0x2f20a6={},_0x1dfa70={},_0x21d847={'count':0x0,'rows':[]};var _0xe82484=_['map'](db[_0x6470('0x28')][_0x6470('0x29')],function(_0x1019b7){return{'name':_0x1019b7[_0x6470('0x2a')],'type':_0x1019b7['type'][_0x6470('0x2b')]};});_0x1dfa70[_0x6470('0x2c')]=_[_0x6470('0x2d')](_0xe82484,_0x6470('0x25'));_0x1dfa70[_0x6470('0x2e')]=_[_0x6470('0x2f')](_0x2d90ec[_0x6470('0x2e')]);_0x1dfa70[_0x6470('0x30')]=_[_0x6470('0x31')](_0x1dfa70[_0x6470('0x2c')],_0x1dfa70['query']);_0x2f20a6['attributes']=_[_0x6470('0x31')](_0x1dfa70[_0x6470('0x2c')],qs[_0x6470('0x32')](_0x2d90ec['query'][_0x6470('0x32')]));_0x2f20a6[_0x6470('0x33')]=_0x2f20a6[_0x6470('0x33')]['length']?_0x2f20a6[_0x6470('0x33')]:_0x1dfa70[_0x6470('0x2c')];if(!_0x2d90ec[_0x6470('0x2e')][_0x6470('0x34')](_0x6470('0x35'))){_0x2f20a6['limit']=qs[_0x6470('0x36')](_0x2d90ec[_0x6470('0x2e')][_0x6470('0x36')]);_0x2f20a6[_0x6470('0x1b')]=qs[_0x6470('0x1b')](_0x2d90ec[_0x6470('0x2e')][_0x6470('0x1b')]);}_0x2f20a6[_0x6470('0x37')]=qs[_0x6470('0x38')](_0x2d90ec[_0x6470('0x2e')]['sort']);_0x2f20a6[_0x6470('0x39')]=qs[_0x6470('0x30')](_[_0x6470('0x3a')](_0x2d90ec[_0x6470('0x2e')],_0x1dfa70[_0x6470('0x30')]),_0xe82484);if(_0x2d90ec['query'][_0x6470('0x3b')]){_0x2f20a6[_0x6470('0x39')]=_[_0x6470('0x3c')](_0x2f20a6['where'],{'$or':_[_0x6470('0x2d')](_0xe82484,function(_0x451525){if(_0x451525[_0x6470('0x3d')]!==_0x6470('0x3e')){var _0x42dbe0={};_0x42dbe0[_0x451525[_0x6470('0x25')]]={'$like':'%'+_0x2d90ec[_0x6470('0x2e')][_0x6470('0x3b')]+'%'};return _0x42dbe0;}})});}_0x2f20a6=_[_0x6470('0x3c')]({},_0x2f20a6,_0x2d90ec[_0x6470('0x3f')]);var _0x117c24={'where':_0x2f20a6[_0x6470('0x39')]};return db[_0x6470('0x28')][_0x6470('0x1d')](_0x117c24)['then'](function(_0x556678){_0x21d847[_0x6470('0x1d')]=_0x556678;if(_0x2d90ec[_0x6470('0x2e')][_0x6470('0x40')]){_0x2f20a6[_0x6470('0x41')]=[{'all':!![]}];}return db[_0x6470('0x28')][_0x6470('0x42')](_0x2f20a6);})[_0x6470('0x23')](function(_0x38c9fc){_0x21d847[_0x6470('0x43')]=_0x38c9fc;return _0x21d847;})[_0x6470('0x23')](respondWithFilteredResult(_0x110c43,_0x2f20a6))[_0x6470('0x44')](handleError(_0x110c43,null));};exports['show']=function(_0xbbaf5c,_0xdf6c67){var _0x47969d={'raw':!![],'where':{'id':_0xbbaf5c[_0x6470('0x45')]['id']}},_0x22301a={};_0x22301a[_0x6470('0x2c')]=_[_0x6470('0x2f')](db[_0x6470('0x28')]['rawAttributes']);_0x22301a['query']=_[_0x6470('0x2f')](_0xbbaf5c[_0x6470('0x2e')]);_0x22301a[_0x6470('0x30')]=_[_0x6470('0x31')](_0x22301a[_0x6470('0x2c')],_0x22301a['query']);_0x47969d[_0x6470('0x33')]=_['intersection'](_0x22301a[_0x6470('0x2c')],qs[_0x6470('0x32')](_0xbbaf5c[_0x6470('0x2e')][_0x6470('0x32')]));_0x47969d[_0x6470('0x33')]=_0x47969d['attributes'][_0x6470('0x46')]?_0x47969d[_0x6470('0x33')]:_0x22301a[_0x6470('0x2c')];if(_0xbbaf5c[_0x6470('0x2e')][_0x6470('0x40')]){_0x47969d[_0x6470('0x41')]=[{'all':!![]}];}_0x47969d=_[_0x6470('0x3c')]({},_0x47969d,_0xbbaf5c[_0x6470('0x3f')]);return db['SquareDetailsReport'][_0x6470('0x47')](_0x47969d)[_0x6470('0x23')](handleEntityNotFound(_0xdf6c67,null))[_0x6470('0x23')](respondWithResult(_0xdf6c67,null))[_0x6470('0x44')](handleError(_0xdf6c67,null));};exports['create']=function(_0x1a38dd,_0xd5a733){return db['SquareDetailsReport'][_0x6470('0x48')](_0x1a38dd[_0x6470('0x49')],{})[_0x6470('0x23')](respondWithResult(_0xd5a733,0xc9))[_0x6470('0x44')](handleError(_0xd5a733,null));};exports[_0x6470('0x4a')]=function(_0x5ed875,_0x30fb2a){if(_0x5ed875[_0x6470('0x49')]['id']){delete _0x5ed875[_0x6470('0x49')]['id'];}return db[_0x6470('0x28')][_0x6470('0x47')]({'where':{'id':_0x5ed875[_0x6470('0x45')]['id']}})[_0x6470('0x23')](handleEntityNotFound(_0x30fb2a,null))[_0x6470('0x23')](saveUpdates(_0x5ed875[_0x6470('0x49')],null))['then'](respondWithResult(_0x30fb2a,null))['catch'](handleError(_0x30fb2a,null));};exports[_0x6470('0x4b')]=function(_0x3dcec5,_0x1f7c4a){return db['SquareDetailsReport']['find']({'where':{'id':_0x3dcec5[_0x6470('0x45')]['id']}})[_0x6470('0x23')](handleEntityNotFound(_0x1f7c4a,null))['then'](removeEntity(_0x1f7c4a,null))[_0x6470('0x44')](handleError(_0x1f7c4a,null));};exports['describe']=function(_0xd41b38,_0x702922){return db[_0x6470('0x28')][_0x6470('0x4c')]()[_0x6470('0x23')](respondWithResult(_0x702922,null))[_0x6470('0x44')](handleError(_0x702922,null));};
\ No newline at end of file
+var _0x71ba=['count','offset','Content-Range','apply','save','update','then','destroy','error','name','send','index','SquareDetailsReport','rawAttributes','fieldName','type','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','map','VIRTUAL','includeAll','include','findAll','rows','catch','params','find','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','limit','undefined'];(function(_0x3043e7,_0x2b7cc8){var _0x5a53e9=function(_0x47b0a6){while(--_0x47b0a6){_0x3043e7['push'](_0x3043e7['shift']());}};_0x5a53e9(++_0x2b7cc8);}(_0x71ba,0x1ee));var _0xa71b=function(_0x5bb49c,_0x21297f){_0x5bb49c=_0x5bb49c-0x0;var _0x44d555=_0x71ba[_0x5bb49c];return _0x44d555;};'use strict';var emlformat=require(_0xa71b('0x0'));var rimraf=require(_0xa71b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa71b('0x2'));var rp=require(_0xa71b('0x3'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xa71b('0x4'));var util=require(_0xa71b('0x5'));var path=require(_0xa71b('0x6'));var sox=require(_0xa71b('0x7'));var csv=require('to-csv');var ejs=require(_0xa71b('0x8'));var fs=require('fs');var fs_extra=require(_0xa71b('0x9'));var _=require(_0xa71b('0xa'));var squel=require(_0xa71b('0xb'));var crypto=require('crypto');var jsforce=require(_0xa71b('0xc'));var deskjs=require(_0xa71b('0xd'));var toCsv=require(_0xa71b('0xe'));var querystring=require('querystring');var Papa=require(_0xa71b('0xf'));var Redis=require(_0xa71b('0x10'));var authService=require(_0xa71b('0x11'));var qs=require(_0xa71b('0x12'));var as=require(_0xa71b('0x13'));var hardwareService=require(_0xa71b('0x14'));var logger=require(_0xa71b('0x15'))(_0xa71b('0x16'));var utils=require('../../config/utils');var config=require(_0xa71b('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xa71b('0x18'))['db'];function respondWithStatusCode(_0x5a7c34,_0x4ea1ef){_0x4ea1ef=_0x4ea1ef||0xcc;return function(_0x669674){if(_0x669674){return _0x5a7c34[_0xa71b('0x19')](_0x4ea1ef);}return _0x5a7c34[_0xa71b('0x1a')](_0x4ea1ef)[_0xa71b('0x1b')]();};}function respondWithResult(_0x429675,_0x41ceb3){_0x41ceb3=_0x41ceb3||0xc8;return function(_0x50c77f){if(_0x50c77f){return _0x429675['status'](_0x41ceb3)[_0xa71b('0x1c')](_0x50c77f);}};}function respondWithFilteredResult(_0x17a36a,_0x4b2277){return function(_0x620be4){if(_0x620be4){var _0x36ec61=typeof _0x4b2277['offset']==='undefined'&&typeof _0x4b2277[_0xa71b('0x1d')]===_0xa71b('0x1e');var _0x10acc8=_0x620be4[_0xa71b('0x1f')];var _0x5be5b0=_0x36ec61?0x0:_0x4b2277[_0xa71b('0x20')];var _0x58b3b4=_0x36ec61?_0x620be4[_0xa71b('0x1f')]:_0x4b2277['offset']+_0x4b2277[_0xa71b('0x1d')];var _0x3bce64;if(_0x58b3b4>=_0x10acc8){_0x58b3b4=_0x10acc8;_0x3bce64=0xc8;}else{_0x3bce64=0xce;}_0x17a36a[_0xa71b('0x1a')](_0x3bce64);return _0x17a36a['set'](_0xa71b('0x21'),_0x5be5b0+'-'+_0x58b3b4+'/'+_0x10acc8)[_0xa71b('0x1c')](_0x620be4);}return null;};}function patchUpdates(_0x337003){return function(_0x328e80){try{jsonpatch[_0xa71b('0x22')](_0x328e80,_0x337003,!![]);}catch(_0x3522a0){return BPromise['reject'](_0x3522a0);}return _0x328e80[_0xa71b('0x23')]();};}function saveUpdates(_0xbb1288,_0xec8fae){return function(_0x338638){if(_0x338638){return _0x338638[_0xa71b('0x24')](_0xbb1288)[_0xa71b('0x25')](function(_0x5120cb){return _0x5120cb;});}return null;};}function removeEntity(_0x8c4a4e,_0x57ee7f){return function(_0x559933){if(_0x559933){return _0x559933[_0xa71b('0x26')]()['then'](function(){_0x8c4a4e[_0xa71b('0x1a')](0xcc)[_0xa71b('0x1b')]();});}};}function handleEntityNotFound(_0x3844bb,_0x1c8e8a){return function(_0x22cac6){if(!_0x22cac6){_0x3844bb[_0xa71b('0x19')](0x194);}return _0x22cac6;};}function handleError(_0x44ad27,_0x23f1c6){_0x23f1c6=_0x23f1c6||0x1f4;return function(_0x1d591b){logger[_0xa71b('0x27')](_0x1d591b['stack']);if(_0x1d591b[_0xa71b('0x28')]){delete _0x1d591b[_0xa71b('0x28')];}_0x44ad27[_0xa71b('0x1a')](_0x23f1c6)[_0xa71b('0x29')](_0x1d591b);};}exports[_0xa71b('0x2a')]=function(_0x3c575b,_0x1eba15){var _0x31664b={},_0x5e16f0={},_0x1e0aa5={'count':0x0,'rows':[]};var _0x46709e=_['map'](db[_0xa71b('0x2b')][_0xa71b('0x2c')],function(_0x29f2f8){return{'name':_0x29f2f8[_0xa71b('0x2d')],'type':_0x29f2f8[_0xa71b('0x2e')]['key']};});_0x5e16f0['model']=_['map'](_0x46709e,'name');_0x5e16f0[_0xa71b('0x2f')]=_[_0xa71b('0x30')](_0x3c575b[_0xa71b('0x2f')]);_0x5e16f0[_0xa71b('0x31')]=_['intersection'](_0x5e16f0[_0xa71b('0x32')],_0x5e16f0[_0xa71b('0x2f')]);_0x31664b[_0xa71b('0x33')]=_[_0xa71b('0x34')](_0x5e16f0[_0xa71b('0x32')],qs[_0xa71b('0x35')](_0x3c575b['query'][_0xa71b('0x35')]));_0x31664b['attributes']=_0x31664b[_0xa71b('0x33')][_0xa71b('0x36')]?_0x31664b[_0xa71b('0x33')]:_0x5e16f0[_0xa71b('0x32')];if(!_0x3c575b[_0xa71b('0x2f')][_0xa71b('0x37')](_0xa71b('0x38'))){_0x31664b[_0xa71b('0x1d')]=qs[_0xa71b('0x1d')](_0x3c575b[_0xa71b('0x2f')][_0xa71b('0x1d')]);_0x31664b[_0xa71b('0x20')]=qs['offset'](_0x3c575b[_0xa71b('0x2f')][_0xa71b('0x20')]);}_0x31664b[_0xa71b('0x39')]=qs[_0xa71b('0x3a')](_0x3c575b[_0xa71b('0x2f')][_0xa71b('0x3a')]);_0x31664b['where']=qs[_0xa71b('0x31')](_[_0xa71b('0x3b')](_0x3c575b[_0xa71b('0x2f')],_0x5e16f0[_0xa71b('0x31')]),_0x46709e);if(_0x3c575b[_0xa71b('0x2f')][_0xa71b('0x3c')]){_0x31664b[_0xa71b('0x3d')]=_[_0xa71b('0x3e')](_0x31664b[_0xa71b('0x3d')],{'$or':_[_0xa71b('0x3f')](_0x46709e,function(_0x3d0a44){if(_0x3d0a44[_0xa71b('0x2e')]!==_0xa71b('0x40')){var _0x4fb3ce={};_0x4fb3ce[_0x3d0a44[_0xa71b('0x28')]]={'$like':'%'+_0x3c575b[_0xa71b('0x2f')][_0xa71b('0x3c')]+'%'};return _0x4fb3ce;}})});}_0x31664b=_[_0xa71b('0x3e')]({},_0x31664b,_0x3c575b['options']);var _0x38b27a={'where':_0x31664b[_0xa71b('0x3d')]};return db[_0xa71b('0x2b')][_0xa71b('0x1f')](_0x38b27a)[_0xa71b('0x25')](function(_0x45f457){_0x1e0aa5[_0xa71b('0x1f')]=_0x45f457;if(_0x3c575b[_0xa71b('0x2f')][_0xa71b('0x41')]){_0x31664b[_0xa71b('0x42')]=[{'all':!![]}];}return db[_0xa71b('0x2b')][_0xa71b('0x43')](_0x31664b);})[_0xa71b('0x25')](function(_0x23f744){_0x1e0aa5[_0xa71b('0x44')]=_0x23f744;return _0x1e0aa5;})['then'](respondWithFilteredResult(_0x1eba15,_0x31664b))[_0xa71b('0x45')](handleError(_0x1eba15,null));};exports['show']=function(_0x5851ef,_0x76ce5e){var _0x18d41b={'raw':!![],'where':{'id':_0x5851ef[_0xa71b('0x46')]['id']}},_0x15d5f1={};_0x15d5f1['model']=_[_0xa71b('0x30')](db[_0xa71b('0x2b')][_0xa71b('0x2c')]);_0x15d5f1[_0xa71b('0x2f')]=_[_0xa71b('0x30')](_0x5851ef[_0xa71b('0x2f')]);_0x15d5f1[_0xa71b('0x31')]=_[_0xa71b('0x34')](_0x15d5f1['model'],_0x15d5f1['query']);_0x18d41b[_0xa71b('0x33')]=_['intersection'](_0x15d5f1[_0xa71b('0x32')],qs['fields'](_0x5851ef[_0xa71b('0x2f')][_0xa71b('0x35')]));_0x18d41b[_0xa71b('0x33')]=_0x18d41b[_0xa71b('0x33')][_0xa71b('0x36')]?_0x18d41b[_0xa71b('0x33')]:_0x15d5f1['model'];if(_0x5851ef['query'][_0xa71b('0x41')]){_0x18d41b[_0xa71b('0x42')]=[{'all':!![]}];}_0x18d41b=_[_0xa71b('0x3e')]({},_0x18d41b,_0x5851ef['options']);return db[_0xa71b('0x2b')][_0xa71b('0x47')](_0x18d41b)[_0xa71b('0x25')](handleEntityNotFound(_0x76ce5e,null))[_0xa71b('0x25')](respondWithResult(_0x76ce5e,null))[_0xa71b('0x45')](handleError(_0x76ce5e,null));};exports[_0xa71b('0x48')]=function(_0x2b88fa,_0x4002fd){return db['SquareDetailsReport'][_0xa71b('0x48')](_0x2b88fa[_0xa71b('0x49')],{})['then'](respondWithResult(_0x4002fd,0xc9))[_0xa71b('0x45')](handleError(_0x4002fd,null));};exports[_0xa71b('0x24')]=function(_0x457dba,_0x579f95){if(_0x457dba[_0xa71b('0x49')]['id']){delete _0x457dba[_0xa71b('0x49')]['id'];}return db[_0xa71b('0x2b')][_0xa71b('0x47')]({'where':{'id':_0x457dba[_0xa71b('0x46')]['id']}})[_0xa71b('0x25')](handleEntityNotFound(_0x579f95,null))['then'](saveUpdates(_0x457dba[_0xa71b('0x49')],null))[_0xa71b('0x25')](respondWithResult(_0x579f95,null))[_0xa71b('0x45')](handleError(_0x579f95,null));};exports[_0xa71b('0x26')]=function(_0x273b65,_0x29ae7a){return db['SquareDetailsReport'][_0xa71b('0x47')]({'where':{'id':_0x273b65['params']['id']}})[_0xa71b('0x25')](handleEntityNotFound(_0x29ae7a,null))[_0xa71b('0x25')](removeEntity(_0x29ae7a,null))[_0xa71b('0x45')](handleError(_0x29ae7a,null));};exports[_0xa71b('0x4a')]=function(_0x57455d,_0x45c702){return db[_0xa71b('0x2b')][_0xa71b('0x4a')]()[_0xa71b('0x25')](respondWithResult(_0x45c702,null))[_0xa71b('0x45')](handleError(_0x45c702,null));};
\ No newline at end of file
index 05755fe..b536414 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cd5=['lodash','util','../../config/logger','moment','request-promise','../../config/environment','./squareReportDetail.attributes','exports','report_square_details'];(function(_0x4df200,_0x132c72){var _0x5b197b=function(_0x192d90){while(--_0x192d90){_0x4df200['push'](_0x4df200['shift']());}};_0x5b197b(++_0x132c72);}(_0x3cd5,0x1c2));var _0x53cd=function(_0x5951e8,_0x42b9a7){_0x5951e8=_0x5951e8-0x0;var _0x20a1f5=_0x3cd5[_0x5951e8];return _0x20a1f5;};'use strict';var _=require(_0x53cd('0x0'));var util=require(_0x53cd('0x1'));var logger=require(_0x53cd('0x2'))('api');var moment=require(_0x53cd('0x3'));var BPromise=require('bluebird');var rp=require(_0x53cd('0x4'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x53cd('0x5'));var attributes=require(_0x53cd('0x6'));module[_0x53cd('0x7')]=function(_0x5ea8d1,_0x10572e){return _0x5ea8d1['define']('SquareDetailsReport',attributes,{'tableName':_0x53cd('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1dcd=['path','../../config/environment','./squareReportDetail.attributes','exports','define','SquareDetailsReport','report_square_details','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x5ef1ff,_0x22af2c){var _0xd443e5=function(_0x3ad9cc){while(--_0x3ad9cc){_0x5ef1ff['push'](_0x5ef1ff['shift']());}};_0xd443e5(++_0x22af2c);}(_0x1dcd,0xca));var _0xd1dc=function(_0x4397ff,_0x170b84){_0x4397ff=_0x4397ff-0x0;var _0x405328=_0x1dcd[_0x4397ff];return _0x405328;};'use strict';var _=require('lodash');var util=require(_0xd1dc('0x0'));var logger=require(_0xd1dc('0x1'))(_0xd1dc('0x2'));var moment=require(_0xd1dc('0x3'));var BPromise=require(_0xd1dc('0x4'));var rp=require(_0xd1dc('0x5'));var fs=require('fs');var path=require(_0xd1dc('0x6'));var rimraf=require('rimraf');var config=require(_0xd1dc('0x7'));var attributes=require(_0xd1dc('0x8'));module[_0xd1dc('0x9')]=function(_0x8bb9ec,_0x73c623){return _0x8bb9ec[_0xd1dc('0xa')](_0xd1dc('0xb'),attributes,{'tableName':_0xd1dc('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6c770df..5300a69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c66=['../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','SquareDetailsReport','options','CreateSquareDetailsReport','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x5c7e53,_0x174ce5){var _0x1c9af9=function(_0x38895d){while(--_0x38895d){_0x5c7e53['push'](_0x5c7e53['shift']());}};_0x1c9af9(++_0x174ce5);}(_0x3c66,0x8b));var _0x63c6=function(_0x158aa6,_0xb04595){_0x158aa6=_0x158aa6-0x0;var _0x248e07=_0x3c66[_0x158aa6];return _0x248e07;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0x63c6('0x0'));var rs=require(_0x63c6('0x1'));var fs=require('fs');var Redis=require(_0x63c6('0x2'));var db=require(_0x63c6('0x3'))['db'];var utils=require(_0x63c6('0x4'));var logger=require(_0x63c6('0x5'))(_0x63c6('0x6'));var config=require(_0x63c6('0x7'));var jayson=require(_0x63c6('0x8'));var client=jayson[_0x63c6('0x9')][_0x63c6('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x2b33e8,_0x47b438,_0x232099){return new BPromise(function(_0x50ff5c,_0x44e826){return client[_0x63c6('0xb')](_0x2b33e8,_0x232099)['then'](function(_0x386110){logger[_0x63c6('0xc')](_0x63c6('0xd'),_0x47b438,_0x63c6('0xe'));logger[_0x63c6('0xf')](_0x63c6('0x10'),_0x47b438,'request\x20sent',JSON[_0x63c6('0x11')](_0x386110));if(_0x386110[_0x63c6('0x12')]){if(_0x386110[_0x63c6('0x12')]['code']===0x1f4){logger['error']('SquareDetailsReport,\x20%s,\x20%s',_0x47b438,_0x386110['error']['message']);return _0x44e826(_0x386110['error'][_0x63c6('0x13')]);}logger[_0x63c6('0x12')](_0x63c6('0xd'),_0x47b438,_0x386110[_0x63c6('0x12')][_0x63c6('0x13')]);return _0x50ff5c(_0x386110['error'][_0x63c6('0x13')]);}else{logger[_0x63c6('0xc')]('SquareDetailsReport,\x20%s,\x20%s',_0x47b438,_0x63c6('0xe'));_0x50ff5c(_0x386110['result']['message']);}})[_0x63c6('0x14')](function(_0x571022){logger[_0x63c6('0x12')](_0x63c6('0xd'),_0x47b438,_0x571022);_0x44e826(_0x571022);});});}exports['CreateSquareDetailsReport']=function(_0xd5a3b5){var _0x2bbda5=this;return new Promise(function(_0x377f6e,_0x35ee57){return db[_0x63c6('0x15')]['create'](_0xd5a3b5['body'],{'raw':_0xd5a3b5['options']?_0xd5a3b5[_0x63c6('0x16')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0xb7ba4f){logger[_0x63c6('0xc')]('CreateSquareDetailsReport',_0xd5a3b5);logger[_0x63c6('0xf')](_0x63c6('0x17'),_0xd5a3b5,JSON[_0x63c6('0x11')](_0xb7ba4f));_0x377f6e(_0xb7ba4f);})[_0x63c6('0x14')](function(_0x430a6e){logger['error'](_0x63c6('0x17'),_0x430a6e[_0x63c6('0x13')],_0xd5a3b5);_0x35ee57(_0x2bbda5[_0x63c6('0x12')](0x1f4,_0x430a6e[_0x63c6('0x13')]));});});};
\ No newline at end of file
+var _0x777d=['SquareDetailsReport','options','raw','util','moment','bluebird','ioredis','../../mysqldb','../../config/environment','client','request','then','info','SquareDetailsReport,\x20%s,\x20%s','request\x20sent','debug','SquareDetailsReport,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','CreateSquareDetailsReport'];(function(_0x13b8f3,_0x442821){var _0x1a6d06=function(_0x5126f2){while(--_0x5126f2){_0x13b8f3['push'](_0x13b8f3['shift']());}};_0x1a6d06(++_0x442821);}(_0x777d,0xe9));var _0xd777=function(_0x8e74c4,_0x4c3b72){_0x8e74c4=_0x8e74c4-0x0;var _0x50e53f=_0x777d[_0x8e74c4];return _0x50e53f;};'use strict';var _=require('lodash');var util=require(_0xd777('0x0'));var moment=require(_0xd777('0x1'));var BPromise=require(_0xd777('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd777('0x3'));var db=require(_0xd777('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xd777('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xd777('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0xc7c954,_0x5d1a5f,_0x57d67f){return new BPromise(function(_0x49d55d,_0x197296){return client[_0xd777('0x7')](_0xc7c954,_0x57d67f)[_0xd777('0x8')](function(_0x25450d){logger[_0xd777('0x9')](_0xd777('0xa'),_0x5d1a5f,_0xd777('0xb'));logger[_0xd777('0xc')](_0xd777('0xd'),_0x5d1a5f,_0xd777('0xb'),JSON[_0xd777('0xe')](_0x25450d));if(_0x25450d[_0xd777('0xf')]){if(_0x25450d[_0xd777('0xf')]['code']===0x1f4){logger['error'](_0xd777('0xa'),_0x5d1a5f,_0x25450d['error'][_0xd777('0x10')]);return _0x197296(_0x25450d[_0xd777('0xf')][_0xd777('0x10')]);}logger[_0xd777('0xf')](_0xd777('0xa'),_0x5d1a5f,_0x25450d['error'][_0xd777('0x10')]);return _0x49d55d(_0x25450d['error'][_0xd777('0x10')]);}else{logger[_0xd777('0x9')](_0xd777('0xa'),_0x5d1a5f,_0xd777('0xb'));_0x49d55d(_0x25450d[_0xd777('0x11')]['message']);}})[_0xd777('0x12')](function(_0x4b3d52){logger[_0xd777('0xf')]('SquareDetailsReport,\x20%s,\x20%s',_0x5d1a5f,_0x4b3d52);_0x197296(_0x4b3d52);});});}exports[_0xd777('0x13')]=function(_0x386f1a){var _0x2dd8ec=this;return new Promise(function(_0x13b63b,_0x2c6114){return db[_0xd777('0x14')]['create'](_0x386f1a['body'],{'raw':_0x386f1a[_0xd777('0x15')]?_0x386f1a['options'][_0xd777('0x16')]===undefined?!![]:![]:!![]})['then'](function(_0x58a079){logger['info'](_0xd777('0x13'),_0x386f1a);logger['debug']('CreateSquareDetailsReport',_0x386f1a,JSON['stringify'](_0x58a079));_0x13b63b(_0x58a079);})['catch'](function(_0x55b975){logger[_0xd777('0xf')](_0xd777('0x13'),_0x55b975[_0xd777('0x10')],_0x386f1a);_0x2c6114(_0x2dd8ec[_0xd777('0xf')](0x1f4,_0x55b975[_0xd777('0x10')]));});});};
\ No newline at end of file
index 657cee1..b3fa8d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f4f=['express','Router','../../components/auth/service','isAuthenticated','index','get','/process/:pid/kill','killProcess','exports'];(function(_0x21aec3,_0x5c97e9){var _0x288bbc=function(_0x2283fe){while(--_0x2283fe){_0x21aec3['push'](_0x21aec3['shift']());}};_0x288bbc(++_0x5c97e9);}(_0x2f4f,0x132));var _0xf2f4=function(_0x386b6b,_0x489623){_0x386b6b=_0x386b6b-0x0;var _0x39969e=_0x2f4f[_0x386b6b];return _0x39969e;};'use strict';var express=require(_0xf2f4('0x0'));var router=express[_0xf2f4('0x1')]();var auth=require(_0xf2f4('0x2'));var controller=require('./system.controller');router['get']('/',auth[_0xf2f4('0x3')](),controller[_0xf2f4('0x4')]);router[_0xf2f4('0x5')](_0xf2f4('0x6'),auth[_0xf2f4('0x3')](),controller[_0xf2f4('0x7')]);module[_0xf2f4('0x8')]=router;
\ No newline at end of file
+var _0xce00=['../../components/auth/service','./system.controller','get','isAuthenticated','index','/process/:pid/kill','killProcess','exports','express','Router'];(function(_0x2b868e,_0xc163f7){var _0x34320d=function(_0x6b703b){while(--_0x6b703b){_0x2b868e['push'](_0x2b868e['shift']());}};_0x34320d(++_0xc163f7);}(_0xce00,0x198));var _0x0ce0=function(_0x4b7b69,_0x3ab075){_0x4b7b69=_0x4b7b69-0x0;var _0x173b4c=_0xce00[_0x4b7b69];return _0x173b4c;};'use strict';var express=require(_0x0ce0('0x0'));var router=express[_0x0ce0('0x1')]();var auth=require(_0x0ce0('0x2'));var controller=require(_0x0ce0('0x3'));router[_0x0ce0('0x4')]('/',auth[_0x0ce0('0x5')](),controller[_0x0ce0('0x6')]);router[_0x0ce0('0x4')](_0x0ce0('0x7'),auth[_0x0ce0('0x5')](),controller[_0x0ce0('0x8')]);module[_0x0ce0('0x9')]=router;
\ No newline at end of file
index ccc7625..3090d8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd894=['killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','params','indexOf','Process\x20with\x20pid\x20%s\x20not\x20found!','pid','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','systeminformation','api','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status','send','getAllData','then','json','catch'];(function(_0x53764c,_0xb38d27){var _0x555c8d=function(_0x252e46){while(--_0x252e46){_0x53764c['push'](_0x53764c['shift']());}};_0x555c8d(++_0xb38d27);}(_0xd894,0x6f));var _0x4d89=function(_0x13c652,_0x23870e){_0x13c652=_0x13c652-0x0;var _0x282e66=_0xd894[_0x13c652];return _0x282e66;};'use strict';var info=require(_0x4d89('0x0'));var exec=require('child_process')['exec'];var logger=require('../../config/logger')(_0x4d89('0x1'));var util=require('util');var BPromise=require(_0x4d89('0x2'));var _=require(_0x4d89('0x3'));function handleError(_0x3e2e9b,_0x38a7d3,_0x377d1c){_0x38a7d3=_0x38a7d3||0x1f4;return function(_0x221792){logger[_0x4d89('0x4')](_0x4d89('0x5'),_0x377d1c,_0x38a7d3,util[_0x4d89('0x6')](_0x221792,{'showHidden':![],'depth':null}));delete _0x221792[_0x4d89('0x7')];_0x3e2e9b[_0x4d89('0x8')](_0x38a7d3)[_0x4d89('0x9')](_0x221792);};}exports['index']=function(_0x11ffdd,_0x514661){return info[_0x4d89('0xa')]()[_0x4d89('0xb')](function(_0x1353cc){return _0x514661[_0x4d89('0x8')](0xc8)[_0x4d89('0xc')](_0x1353cc);})[_0x4d89('0xd')](function(_0x324137){return _0x514661['status'](0x1f4)['json'](_0x324137);});};exports[_0x4d89('0xe')]=function(_0x38db45,_0x2ae745){var _0x4780a2=[_0x4d89('0xf')];return new BPromise(function(_0x1168d5,_0x39da57){return exec(util[_0x4d89('0x10')](_0x4d89('0x11'),_0x38db45[_0x4d89('0x12')]['pid']),function(_0x41f124,_0x318061,_0x1d69fc){if(_0x41f124){return _0x39da57(_0x41f124);}return _0x1168d5(_0x318061);});})[_0x4d89('0xb')](function(_0x3b87a2){var _0xe46f90=![];var _0x48dc7d=_0x3b87a2['split'](/\n/);for(var _0x58c8e7=0x0,_0x4b0275=_0x4780a2['length'];_0x58c8e7<_0x4b0275,_0xe46f90===![];_0x58c8e7+=0x1){if(_0x3b87a2[_0x4d89('0x13')](_0x4780a2[_0x58c8e7])>=0x0){_0xe46f90=!![];}}if(!_0xe46f90){throw new Error(util[_0x4d89('0x10')](_0x4d89('0x14'),_0x38db45[_0x4d89('0x12')][_0x4d89('0x15')]));}process[_0x4d89('0x16')](_0x38db45[_0x4d89('0x12')][_0x4d89('0x15')],_0x4d89('0x17'));return _0x2ae745[_0x4d89('0x8')](0xc8)[_0x4d89('0xc')]({'message':util[_0x4d89('0x10')](_0x4d89('0x18'),_0x38db45['params'][_0x4d89('0x15')])});})[_0x4d89('0xd')](handleError(_0x2ae745,null,'killProcess'));};
\ No newline at end of file
+var _0xfb9b=['exec','../../config/logger','util','bluebird','lodash','error','<%-\x20name\x20%>,\x20%s,\x20%s,\x20%s','inspect','name','status','getAllData','then','json','catch','killProcess','components/import/cm','format','ps\x20-p\x20%s\x20-ww\x20-o\x20args','split','length','indexOf','params','pid','kill','SIGINT','Process\x20with\x20pid\x20%s\x20killed\x20correctly','systeminformation','child_process'];(function(_0x44afa4,_0x5be27b){var _0xcad289=function(_0x206272){while(--_0x206272){_0x44afa4['push'](_0x44afa4['shift']());}};_0xcad289(++_0x5be27b);}(_0xfb9b,0x1a2));var _0xbfb9=function(_0x1c11c0,_0x28dcf2){_0x1c11c0=_0x1c11c0-0x0;var _0x338346=_0xfb9b[_0x1c11c0];return _0x338346;};'use strict';var info=require(_0xbfb9('0x0'));var exec=require(_0xbfb9('0x1'))[_0xbfb9('0x2')];var logger=require(_0xbfb9('0x3'))('api');var util=require(_0xbfb9('0x4'));var BPromise=require(_0xbfb9('0x5'));var _=require(_0xbfb9('0x6'));function handleError(_0x43e991,_0x3d5612,_0x2a841d){_0x3d5612=_0x3d5612||0x1f4;return function(_0x371c65){logger[_0xbfb9('0x7')](_0xbfb9('0x8'),_0x2a841d,_0x3d5612,util[_0xbfb9('0x9')](_0x371c65,{'showHidden':![],'depth':null}));delete _0x371c65[_0xbfb9('0xa')];_0x43e991[_0xbfb9('0xb')](_0x3d5612)['send'](_0x371c65);};}exports['index']=function(_0x3bd502,_0x244774){return info[_0xbfb9('0xc')]()[_0xbfb9('0xd')](function(_0x2cb292){return _0x244774[_0xbfb9('0xb')](0xc8)[_0xbfb9('0xe')](_0x2cb292);})[_0xbfb9('0xf')](function(_0x206479){return _0x244774['status'](0x1f4)[_0xbfb9('0xe')](_0x206479);});};exports[_0xbfb9('0x10')]=function(_0x10cbc9,_0x520be9){var _0x1393f1=[_0xbfb9('0x11')];return new BPromise(function(_0x3cb61d,_0x510c37){return exec(util[_0xbfb9('0x12')](_0xbfb9('0x13'),_0x10cbc9['params']['pid']),function(_0x1af5ec,_0xaae674,_0x121f5f){if(_0x1af5ec){return _0x510c37(_0x1af5ec);}return _0x3cb61d(_0xaae674);});})[_0xbfb9('0xd')](function(_0x3876f9){var _0x15f49a=![];var _0x799653=_0x3876f9[_0xbfb9('0x14')](/\n/);for(var _0x39222e=0x0,_0x227ee9=_0x1393f1[_0xbfb9('0x15')];_0x39222e<_0x227ee9,_0x15f49a===![];_0x39222e+=0x1){if(_0x3876f9[_0xbfb9('0x16')](_0x1393f1[_0x39222e])>=0x0){_0x15f49a=!![];}}if(!_0x15f49a){throw new Error(util[_0xbfb9('0x12')]('Process\x20with\x20pid\x20%s\x20not\x20found!',_0x10cbc9[_0xbfb9('0x17')][_0xbfb9('0x18')]));}process[_0xbfb9('0x19')](_0x10cbc9[_0xbfb9('0x17')][_0xbfb9('0x18')],_0xbfb9('0x1a'));return _0x520be9[_0xbfb9('0xb')](0xc8)[_0xbfb9('0xe')]({'message':util[_0xbfb9('0x12')](_0xbfb9('0x1b'),_0x10cbc9['params']['pid'])});})[_0xbfb9('0xf')](handleError(_0x520be9,null,'killProcess'));};
\ No newline at end of file
index b7119f7..dba47cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6b1=['multer','util','path','express','../../components/interaction/service','./tag.controller','get','isAuthenticated','index','show','post','put','/:id','delete','destroy','exports'];(function(_0x145b3c,_0x31ea4a){var _0x1b6e36=function(_0xfccee6){while(--_0xfccee6){_0x145b3c['push'](_0x145b3c['shift']());}};_0x1b6e36(++_0x31ea4a);}(_0xf6b1,0x110));var _0x1f6b=function(_0x5890f1,_0x3002eb){_0x5890f1=_0x5890f1-0x0;var _0x2228f5=_0xf6b1[_0x5890f1];return _0x2228f5;};'use strict';var multer=require(_0x1f6b('0x0'));var util=require(_0x1f6b('0x1'));var path=require(_0x1f6b('0x2'));var timeout=require('connect-timeout');var express=require(_0x1f6b('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x1f6b('0x4'));var config=require('../../config/environment');var controller=require(_0x1f6b('0x5'));router[_0x1f6b('0x6')]('/',auth[_0x1f6b('0x7')](),controller[_0x1f6b('0x8')]);router[_0x1f6b('0x6')]('/:id',auth[_0x1f6b('0x7')](),controller[_0x1f6b('0x9')]);router[_0x1f6b('0xa')]('/',auth[_0x1f6b('0x7')](),controller['create']);router[_0x1f6b('0xb')](_0x1f6b('0xc'),auth['isAuthenticated'](),controller['update']);router[_0x1f6b('0xd')](_0x1f6b('0xc'),auth[_0x1f6b('0x7')](),controller[_0x1f6b('0xe')]);module[_0x1f6b('0xf')]=router;
\ No newline at end of file
+var _0x260d=['delete','connect-timeout','fs-extra','../../components/auth/service','../../config/environment','./tag.controller','get','index','/:id','isAuthenticated','create','put','update'];(function(_0x4a39a4,_0x7a31e4){var _0x229a6f=function(_0x27a4fa){while(--_0x27a4fa){_0x4a39a4['push'](_0x4a39a4['shift']());}};_0x229a6f(++_0x7a31e4);}(_0x260d,0xc4));var _0xd260=function(_0xe45d42,_0x3ca4b7){_0xe45d42=_0xe45d42-0x0;var _0x2873de=_0x260d[_0xe45d42];return _0x2873de;};'use strict';var multer=require('multer');var util=require('util');var path=require('path');var timeout=require(_0xd260('0x0'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xd260('0x1'));var auth=require(_0xd260('0x2'));var interaction=require('../../components/interaction/service');var config=require(_0xd260('0x3'));var controller=require(_0xd260('0x4'));router[_0xd260('0x5')]('/',auth['isAuthenticated'](),controller[_0xd260('0x6')]);router[_0xd260('0x5')](_0xd260('0x7'),auth[_0xd260('0x8')](),controller['show']);router['post']('/',auth['isAuthenticated'](),controller[_0xd260('0x9')]);router[_0xd260('0xa')](_0xd260('0x7'),auth[_0xd260('0x8')](),controller[_0xd260('0xb')]);router[_0xd260('0xc')](_0xd260('0x7'),auth[_0xd260('0x8')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 7a97548..fd9d84b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x486e=['name','STRING','#0091EA','sequelize','exports'];(function(_0x1176d9,_0x2a1b64){var _0x3d1cb6=function(_0xe01528){while(--_0xe01528){_0x1176d9['push'](_0x1176d9['shift']());}};_0x3d1cb6(++_0x2a1b64);}(_0x486e,0xb2));var _0xe486=function(_0x57a50d,_0x2871f8){_0x57a50d=_0x57a50d-0x0;var _0x1b25b3=_0x486e[_0x57a50d];return _0x1b25b3;};'use strict';var Sequelize=require(_0xe486('0x0'));module[_0xe486('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0xe486('0x2'),'allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0xe486('0x3')],'defaultValue':_0xe486('0x4')},'description':{'type':Sequelize[_0xe486('0x3')]}};
\ No newline at end of file
+var _0x0472=['#0091EA','STRING'];(function(_0x3e44fa,_0x75ed2a){var _0x2a0aba=function(_0x1db6a7){while(--_0x1db6a7){_0x3e44fa['push'](_0x3e44fa['shift']());}};_0x2a0aba(++_0x75ed2a);}(_0x0472,0x197));var _0x2047=function(_0x1be262,_0x579a8e){_0x1be262=_0x1be262-0x0;var _0x57ef9e=_0x0472[_0x1be262];return _0x57ef9e;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x2047('0x0')],'unique':'name','allowNull':![],'validate':{'is':/[A-Za-z0-9._\\+*!-]+/,'notEmpty':!![]}},'color':{'type':Sequelize[_0x2047('0x0')],'defaultValue':_0x2047('0x1')},'description':{'type':Sequelize[_0x2047('0x0')]}};
\ No newline at end of file
index 52d25e4..47633e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x87ae=['moment','bluebird','mustache','path','sox','to-csv','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','end','offset','limit','undefined','count','set','Content-Range','json','apply','reject','update','then','UserProfileResource','destroy','status','stack','name','index','map','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order','sort','filter','where','merge','type','VIRTUAL','options','Tag','includeAll','findAll','rows','show','params','length','include','find','catch','create','body','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Tags','UserProfileSection','userProfileId','autoAssociation','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','zip-dir'];(function(_0x3826ad,_0x49a30d){var _0x17b900=function(_0x38474f){while(--_0x38474f){_0x3826ad['push'](_0x3826ad['shift']());}};_0x17b900(++_0x49a30d);}(_0x87ae,0xf5));var _0xe87a=function(_0xc77819,_0x139fdc){_0xc77819=_0xc77819-0x0;var _0x1c9434=_0x87ae[_0xc77819];return _0x1c9434;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xe87a('0x0'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xe87a('0x1'));var BPromise=require(_0xe87a('0x2'));var Mustache=require(_0xe87a('0x3'));var util=require('util');var path=require(_0xe87a('0x4'));var sox=require(_0xe87a('0x5'));var csv=require(_0xe87a('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xe87a('0x7'));var squel=require(_0xe87a('0x8'));var crypto=require('crypto');var jsforce=require(_0xe87a('0x9'));var deskjs=require(_0xe87a('0xa'));var toCsv=require('to-csv');var querystring=require(_0xe87a('0xb'));var Papa=require(_0xe87a('0xc'));var Redis=require('ioredis');var authService=require(_0xe87a('0xd'));var qs=require(_0xe87a('0xe'));var as=require(_0xe87a('0xf'));var hardwareService=require(_0xe87a('0x10'));var logger=require(_0xe87a('0x11'))(_0xe87a('0x12'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0xe87a('0x13'));var db=require(_0xe87a('0x14'))['db'];function respondWithStatusCode(_0x3e990c,_0x4db185){_0x4db185=_0x4db185||0xcc;return function(_0x1a725a){if(_0x1a725a){return _0x3e990c[_0xe87a('0x15')](_0x4db185);}return _0x3e990c['status'](_0x4db185)[_0xe87a('0x16')]();};}function respondWithResult(_0x353c52,_0x136340){_0x136340=_0x136340||0xc8;return function(_0x5032c5){if(_0x5032c5){return _0x353c52['status'](_0x136340)['json'](_0x5032c5);}};}function respondWithFilteredResult(_0x53a4f7,_0x44474f){return function(_0x1fa2cd){if(_0x1fa2cd){var _0xd2ca53=typeof _0x44474f[_0xe87a('0x17')]==='undefined'&&typeof _0x44474f[_0xe87a('0x18')]===_0xe87a('0x19');var _0x527c58=_0x1fa2cd['count'];var _0x4160e2=_0xd2ca53?0x0:_0x44474f['offset'];var _0x182e6f=_0xd2ca53?_0x1fa2cd[_0xe87a('0x1a')]:_0x44474f[_0xe87a('0x17')]+_0x44474f['limit'];var _0x444eeb;if(_0x182e6f>=_0x527c58){_0x182e6f=_0x527c58;_0x444eeb=0xc8;}else{_0x444eeb=0xce;}_0x53a4f7['status'](_0x444eeb);return _0x53a4f7[_0xe87a('0x1b')](_0xe87a('0x1c'),_0x4160e2+'-'+_0x182e6f+'/'+_0x527c58)[_0xe87a('0x1d')](_0x1fa2cd);}return null;};}function patchUpdates(_0x4059e1){return function(_0x104f67){try{jsonpatch[_0xe87a('0x1e')](_0x104f67,_0x4059e1,!![]);}catch(_0x1e37aa){return BPromise[_0xe87a('0x1f')](_0x1e37aa);}return _0x104f67['save']();};}function saveUpdates(_0x59c17c,_0x42ba03){return function(_0x363c6a){if(_0x363c6a){return _0x363c6a[_0xe87a('0x20')](_0x59c17c)[_0xe87a('0x21')](function(_0x15ced2){return _0x15ced2;});}return null;};}function removeEntity(_0x46731f,_0x56eba0){return function(_0x59d9f7){if(_0x59d9f7){return _0x59d9f7['destroy']()['then'](function(){var _0x328921=_0x59d9f7['get']({'plain':!![]});var _0x1108d0='Tags';return db[_0xe87a('0x22')][_0xe87a('0x23')]({'where':{'type':_0x1108d0,'resourceId':_0x328921['id']}})[_0xe87a('0x21')](function(){return _0x59d9f7;});})[_0xe87a('0x21')](function(){_0x46731f[_0xe87a('0x24')](0xcc)[_0xe87a('0x16')]();});}};}function handleEntityNotFound(_0x4fe080,_0x3fc24e){return function(_0x5b984f){if(!_0x5b984f){_0x4fe080['sendStatus'](0x194);}return _0x5b984f;};}function handleError(_0x39ec27,_0x48511b){_0x48511b=_0x48511b||0x1f4;return function(_0x537b52){logger['error'](_0x537b52[_0xe87a('0x25')]);if(_0x537b52[_0xe87a('0x26')]){delete _0x537b52[_0xe87a('0x26')];}_0x39ec27['status'](_0x48511b)['send'](_0x537b52);};}exports[_0xe87a('0x27')]=function(_0x5a747b,_0x4f61f7){var _0x3a5dc4={},_0x1d9742={},_0x15407d={'count':0x0,'rows':[]};var _0x2d3f77=_[_0xe87a('0x28')](db['Tag'][_0xe87a('0x29')],function(_0x4b80df){return{'name':_0x4b80df[_0xe87a('0x2a')],'type':_0x4b80df['type'][_0xe87a('0x2b')]};});_0x1d9742[_0xe87a('0x2c')]=_[_0xe87a('0x28')](_0x2d3f77,_0xe87a('0x26'));_0x1d9742[_0xe87a('0x2d')]=_[_0xe87a('0x2e')](_0x5a747b[_0xe87a('0x2d')]);_0x1d9742[_0xe87a('0x2f')]=_[_0xe87a('0x30')](_0x1d9742[_0xe87a('0x2c')],_0x1d9742['query']);_0x3a5dc4['attributes']=_['intersection'](_0x1d9742[_0xe87a('0x2c')],qs['fields'](_0x5a747b[_0xe87a('0x2d')][_0xe87a('0x31')]));_0x3a5dc4['attributes']=_0x3a5dc4[_0xe87a('0x32')]['length']?_0x3a5dc4['attributes']:_0x1d9742[_0xe87a('0x2c')];if(!_0x5a747b[_0xe87a('0x2d')][_0xe87a('0x33')](_0xe87a('0x34'))){_0x3a5dc4['limit']=qs[_0xe87a('0x18')](_0x5a747b[_0xe87a('0x2d')]['limit']);_0x3a5dc4[_0xe87a('0x17')]=qs[_0xe87a('0x17')](_0x5a747b['query'][_0xe87a('0x17')]);}_0x3a5dc4[_0xe87a('0x35')]=qs[_0xe87a('0x36')](_0x5a747b[_0xe87a('0x2d')][_0xe87a('0x36')]);_0x3a5dc4['where']=qs[_0xe87a('0x2f')](_['pick'](_0x5a747b[_0xe87a('0x2d')],_0x1d9742['filters']),_0x2d3f77);if(_0x5a747b['query'][_0xe87a('0x37')]){_0x3a5dc4[_0xe87a('0x38')]=_[_0xe87a('0x39')](_0x3a5dc4[_0xe87a('0x38')],{'$or':_[_0xe87a('0x28')](_0x2d3f77,function(_0x1109b9){if(_0x1109b9[_0xe87a('0x3a')]!==_0xe87a('0x3b')){var _0xda1ce1={};_0xda1ce1[_0x1109b9[_0xe87a('0x26')]]={'$like':'%'+_0x5a747b[_0xe87a('0x2d')][_0xe87a('0x37')]+'%'};return _0xda1ce1;}})});}_0x3a5dc4=_[_0xe87a('0x39')]({},_0x3a5dc4,_0x5a747b[_0xe87a('0x3c')]);var _0x553537={'where':_0x3a5dc4[_0xe87a('0x38')]};return db[_0xe87a('0x3d')][_0xe87a('0x1a')](_0x553537)[_0xe87a('0x21')](function(_0x5eb4e1){_0x15407d['count']=_0x5eb4e1;if(_0x5a747b['query'][_0xe87a('0x3e')]){_0x3a5dc4['include']=[{'all':!![]}];}return db['Tag'][_0xe87a('0x3f')](_0x3a5dc4);})['then'](function(_0x5b1f55){_0x15407d[_0xe87a('0x40')]=_0x5b1f55;return _0x15407d;})[_0xe87a('0x21')](respondWithFilteredResult(_0x4f61f7,_0x3a5dc4))['catch'](handleError(_0x4f61f7,null));};exports[_0xe87a('0x41')]=function(_0x4e8f4c,_0x5ad3af){var _0x551ba3={'raw':!![],'where':{'id':_0x4e8f4c[_0xe87a('0x42')]['id']}},_0x3aba9c={};_0x3aba9c['model']=_[_0xe87a('0x2e')](db[_0xe87a('0x3d')][_0xe87a('0x29')]);_0x3aba9c['query']=_['keys'](_0x4e8f4c['query']);_0x3aba9c['filters']=_[_0xe87a('0x30')](_0x3aba9c['model'],_0x3aba9c[_0xe87a('0x2d')]);_0x551ba3[_0xe87a('0x32')]=_[_0xe87a('0x30')](_0x3aba9c[_0xe87a('0x2c')],qs['fields'](_0x4e8f4c[_0xe87a('0x2d')][_0xe87a('0x31')]));_0x551ba3['attributes']=_0x551ba3[_0xe87a('0x32')][_0xe87a('0x43')]?_0x551ba3[_0xe87a('0x32')]:_0x3aba9c[_0xe87a('0x2c')];if(_0x4e8f4c[_0xe87a('0x2d')][_0xe87a('0x3e')]){_0x551ba3[_0xe87a('0x44')]=[{'all':!![]}];}_0x551ba3=_[_0xe87a('0x39')]({},_0x551ba3,_0x4e8f4c[_0xe87a('0x3c')]);return db['Tag'][_0xe87a('0x45')](_0x551ba3)[_0xe87a('0x21')](handleEntityNotFound(_0x5ad3af,null))[_0xe87a('0x21')](respondWithResult(_0x5ad3af,null))[_0xe87a('0x46')](handleError(_0x5ad3af,null));};exports['create']=function(_0x6ddec4,_0x28c00b){return db[_0xe87a('0x3d')][_0xe87a('0x47')](_0x6ddec4[_0xe87a('0x48')],{})[_0xe87a('0x21')](function(_0x154f73){var _0x324d97=_0x6ddec4['user'][_0xe87a('0x49')]({'plain':!![]});if(!_0x324d97)throw new Error(_0xe87a('0x4a'));if(_0x324d97[_0xe87a('0x4b')]==='user'){var _0x19d380=_0x154f73[_0xe87a('0x49')]({'plain':!![]});var _0xe032c8=_0xe87a('0x4c');return db[_0xe87a('0x4d')][_0xe87a('0x45')]({'where':{'name':_0xe032c8,'userProfileId':_0x324d97[_0xe87a('0x4e')]},'raw':!![]})[_0xe87a('0x21')](function(_0x1d268a){if(_0x1d268a&&_0x1d268a[_0xe87a('0x4f')]===0x0){return db[_0xe87a('0x22')][_0xe87a('0x47')]({'name':_0x19d380['name'],'resourceId':_0x19d380['id'],'type':_0x1d268a[_0xe87a('0x26')],'sectionId':_0x1d268a['id']},{})[_0xe87a('0x21')](function(){return _0x154f73;});}else{return _0x154f73;}})[_0xe87a('0x46')](function(_0x1bbd2e){logger[_0xe87a('0x50')](_0xe87a('0x51'),_0x1bbd2e);throw _0x1bbd2e;});}return _0x154f73;})[_0xe87a('0x21')](respondWithResult(_0x28c00b,0xc9))[_0xe87a('0x46')](handleError(_0x28c00b,null));};exports[_0xe87a('0x20')]=function(_0x5ee0b9,_0x553df2){if(_0x5ee0b9[_0xe87a('0x48')]['id']){delete _0x5ee0b9[_0xe87a('0x48')]['id'];}return db['Tag'][_0xe87a('0x45')]({'where':{'id':_0x5ee0b9[_0xe87a('0x42')]['id']}})['then'](handleEntityNotFound(_0x553df2,null))[_0xe87a('0x21')](saveUpdates(_0x5ee0b9[_0xe87a('0x48')],null))['then'](respondWithResult(_0x553df2,null))[_0xe87a('0x46')](handleError(_0x553df2,null));};exports[_0xe87a('0x23')]=function(_0x86d45e,_0xe84a3a){return db['Tag']['find']({'where':{'id':_0x86d45e[_0xe87a('0x42')]['id']}})[_0xe87a('0x21')](handleEntityNotFound(_0xe84a3a,null))['then'](removeEntity(_0xe84a3a,null))[_0xe87a('0x46')](handleError(_0xe84a3a,null));};
\ No newline at end of file
+var _0x9a19=['Tag','rawAttributes','type','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','includeAll','include','findAll','rows','catch','show','params','options','find','body','user','UserProfileSection','autoAssociation','create','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','desk.js','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','save','then','destroy','get','Tags','stack','name','send','index','map'];(function(_0x219c08,_0x350145){var _0x101999=function(_0x47cf43){while(--_0x47cf43){_0x219c08['push'](_0x219c08['shift']());}};_0x101999(++_0x350145);}(_0x9a19,0x114));var _0x99a1=function(_0x3db122,_0x5e6bee){_0x3db122=_0x3db122-0x0;var _0x325b67=_0x9a19[_0x3db122];return _0x325b67;};'use strict';var emlformat=require(_0x99a1('0x0'));var rimraf=require(_0x99a1('0x1'));var zipdir=require(_0x99a1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x99a1('0x3'));var moment=require(_0x99a1('0x4'));var BPromise=require(_0x99a1('0x5'));var Mustache=require(_0x99a1('0x6'));var util=require(_0x99a1('0x7'));var path=require(_0x99a1('0x8'));var sox=require(_0x99a1('0x9'));var csv=require(_0x99a1('0xa'));var ejs=require(_0x99a1('0xb'));var fs=require('fs');var fs_extra=require(_0x99a1('0xc'));var _=require(_0x99a1('0xd'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x99a1('0xe'));var toCsv=require(_0x99a1('0xa'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x99a1('0xf'));var authService=require(_0x99a1('0x10'));var qs=require(_0x99a1('0x11'));var as=require(_0x99a1('0x12'));var hardwareService=require(_0x99a1('0x13'));var logger=require('../../config/logger')(_0x99a1('0x14'));var utils=require(_0x99a1('0x15'));var config=require(_0x99a1('0x16'));var licenseUtil=require(_0x99a1('0x17'));var db=require(_0x99a1('0x18'))['db'];function respondWithStatusCode(_0x1bc7aa,_0x2ff655){_0x2ff655=_0x2ff655||0xcc;return function(_0x532f56){if(_0x532f56){return _0x1bc7aa[_0x99a1('0x19')](_0x2ff655);}return _0x1bc7aa[_0x99a1('0x1a')](_0x2ff655)[_0x99a1('0x1b')]();};}function respondWithResult(_0x47815e,_0xe1a1f){_0xe1a1f=_0xe1a1f||0xc8;return function(_0x3c9ef4){if(_0x3c9ef4){return _0x47815e[_0x99a1('0x1a')](_0xe1a1f)['json'](_0x3c9ef4);}};}function respondWithFilteredResult(_0x2d81ed,_0x3e45d4){return function(_0x1bb464){if(_0x1bb464){var _0x3d40cc=typeof _0x3e45d4[_0x99a1('0x1c')]===_0x99a1('0x1d')&&typeof _0x3e45d4[_0x99a1('0x1e')]==='undefined';var _0x4f049c=_0x1bb464[_0x99a1('0x1f')];var _0xbf62f1=_0x3d40cc?0x0:_0x3e45d4[_0x99a1('0x1c')];var _0x1fcd00=_0x3d40cc?_0x1bb464[_0x99a1('0x1f')]:_0x3e45d4[_0x99a1('0x1c')]+_0x3e45d4[_0x99a1('0x1e')];var _0x3cd62c;if(_0x1fcd00>=_0x4f049c){_0x1fcd00=_0x4f049c;_0x3cd62c=0xc8;}else{_0x3cd62c=0xce;}_0x2d81ed[_0x99a1('0x1a')](_0x3cd62c);return _0x2d81ed[_0x99a1('0x20')](_0x99a1('0x21'),_0xbf62f1+'-'+_0x1fcd00+'/'+_0x4f049c)['json'](_0x1bb464);}return null;};}function patchUpdates(_0x3023a1){return function(_0x20007e){try{jsonpatch['apply'](_0x20007e,_0x3023a1,!![]);}catch(_0x38435b){return BPromise['reject'](_0x38435b);}return _0x20007e[_0x99a1('0x22')]();};}function saveUpdates(_0x2927b0,_0x2d6f20){return function(_0x2d3b82){if(_0x2d3b82){return _0x2d3b82['update'](_0x2927b0)[_0x99a1('0x23')](function(_0x1268a7){return _0x1268a7;});}return null;};}function removeEntity(_0x483c17,_0x44df2d){return function(_0x5b5dfa){if(_0x5b5dfa){return _0x5b5dfa[_0x99a1('0x24')]()[_0x99a1('0x23')](function(){var _0x179597=_0x5b5dfa[_0x99a1('0x25')]({'plain':!![]});var _0x3c813=_0x99a1('0x26');return db['UserProfileResource'][_0x99a1('0x24')]({'where':{'type':_0x3c813,'resourceId':_0x179597['id']}})['then'](function(){return _0x5b5dfa;});})['then'](function(){_0x483c17[_0x99a1('0x1a')](0xcc)[_0x99a1('0x1b')]();});}};}function handleEntityNotFound(_0xa6799b,_0x15a0b6){return function(_0x25d560){if(!_0x25d560){_0xa6799b[_0x99a1('0x19')](0x194);}return _0x25d560;};}function handleError(_0x183037,_0x549645){_0x549645=_0x549645||0x1f4;return function(_0xf41b0d){logger['error'](_0xf41b0d[_0x99a1('0x27')]);if(_0xf41b0d[_0x99a1('0x28')]){delete _0xf41b0d[_0x99a1('0x28')];}_0x183037['status'](_0x549645)[_0x99a1('0x29')](_0xf41b0d);};}exports[_0x99a1('0x2a')]=function(_0x5718b9,_0x37514e){var _0x1434a0={},_0x36aa34={},_0x303d1e={'count':0x0,'rows':[]};var _0x2a5b8c=_[_0x99a1('0x2b')](db[_0x99a1('0x2c')][_0x99a1('0x2d')],function(_0x52da8d){return{'name':_0x52da8d['fieldName'],'type':_0x52da8d[_0x99a1('0x2e')]['key']};});_0x36aa34[_0x99a1('0x2f')]=_[_0x99a1('0x2b')](_0x2a5b8c,'name');_0x36aa34[_0x99a1('0x30')]=_[_0x99a1('0x31')](_0x5718b9[_0x99a1('0x30')]);_0x36aa34[_0x99a1('0x32')]=_[_0x99a1('0x33')](_0x36aa34[_0x99a1('0x2f')],_0x36aa34[_0x99a1('0x30')]);_0x1434a0[_0x99a1('0x34')]=_[_0x99a1('0x33')](_0x36aa34[_0x99a1('0x2f')],qs[_0x99a1('0x35')](_0x5718b9[_0x99a1('0x30')][_0x99a1('0x35')]));_0x1434a0[_0x99a1('0x34')]=_0x1434a0['attributes']['length']?_0x1434a0[_0x99a1('0x34')]:_0x36aa34[_0x99a1('0x2f')];if(!_0x5718b9[_0x99a1('0x30')][_0x99a1('0x36')](_0x99a1('0x37'))){_0x1434a0[_0x99a1('0x1e')]=qs[_0x99a1('0x1e')](_0x5718b9['query'][_0x99a1('0x1e')]);_0x1434a0[_0x99a1('0x1c')]=qs['offset'](_0x5718b9[_0x99a1('0x30')][_0x99a1('0x1c')]);}_0x1434a0[_0x99a1('0x38')]=qs[_0x99a1('0x39')](_0x5718b9[_0x99a1('0x30')][_0x99a1('0x39')]);_0x1434a0[_0x99a1('0x3a')]=qs[_0x99a1('0x32')](_[_0x99a1('0x3b')](_0x5718b9[_0x99a1('0x30')],_0x36aa34[_0x99a1('0x32')]),_0x2a5b8c);if(_0x5718b9[_0x99a1('0x30')][_0x99a1('0x3c')]){_0x1434a0['where']=_['merge'](_0x1434a0['where'],{'$or':_[_0x99a1('0x2b')](_0x2a5b8c,function(_0x169df7){if(_0x169df7[_0x99a1('0x2e')]!==_0x99a1('0x3d')){var _0x40613a={};_0x40613a[_0x169df7['name']]={'$like':'%'+_0x5718b9[_0x99a1('0x30')][_0x99a1('0x3c')]+'%'};return _0x40613a;}})});}_0x1434a0=_[_0x99a1('0x3e')]({},_0x1434a0,_0x5718b9['options']);var _0x49be37={'where':_0x1434a0[_0x99a1('0x3a')]};return db[_0x99a1('0x2c')][_0x99a1('0x1f')](_0x49be37)['then'](function(_0x6c4cb){_0x303d1e[_0x99a1('0x1f')]=_0x6c4cb;if(_0x5718b9[_0x99a1('0x30')][_0x99a1('0x3f')]){_0x1434a0[_0x99a1('0x40')]=[{'all':!![]}];}return db[_0x99a1('0x2c')][_0x99a1('0x41')](_0x1434a0);})[_0x99a1('0x23')](function(_0x1c4ce4){_0x303d1e[_0x99a1('0x42')]=_0x1c4ce4;return _0x303d1e;})['then'](respondWithFilteredResult(_0x37514e,_0x1434a0))[_0x99a1('0x43')](handleError(_0x37514e,null));};exports[_0x99a1('0x44')]=function(_0x3d5373,_0x50d38b){var _0x1beed2={'raw':!![],'where':{'id':_0x3d5373[_0x99a1('0x45')]['id']}},_0x51536d={};_0x51536d[_0x99a1('0x2f')]=_[_0x99a1('0x31')](db[_0x99a1('0x2c')][_0x99a1('0x2d')]);_0x51536d[_0x99a1('0x30')]=_['keys'](_0x3d5373[_0x99a1('0x30')]);_0x51536d['filters']=_[_0x99a1('0x33')](_0x51536d[_0x99a1('0x2f')],_0x51536d[_0x99a1('0x30')]);_0x1beed2[_0x99a1('0x34')]=_[_0x99a1('0x33')](_0x51536d[_0x99a1('0x2f')],qs[_0x99a1('0x35')](_0x3d5373[_0x99a1('0x30')][_0x99a1('0x35')]));_0x1beed2[_0x99a1('0x34')]=_0x1beed2[_0x99a1('0x34')]['length']?_0x1beed2[_0x99a1('0x34')]:_0x51536d[_0x99a1('0x2f')];if(_0x3d5373['query'][_0x99a1('0x3f')]){_0x1beed2[_0x99a1('0x40')]=[{'all':!![]}];}_0x1beed2=_[_0x99a1('0x3e')]({},_0x1beed2,_0x3d5373[_0x99a1('0x46')]);return db[_0x99a1('0x2c')][_0x99a1('0x47')](_0x1beed2)[_0x99a1('0x23')](handleEntityNotFound(_0x50d38b,null))['then'](respondWithResult(_0x50d38b,null))[_0x99a1('0x43')](handleError(_0x50d38b,null));};exports['create']=function(_0x1d4d3f,_0x269798){return db['Tag']['create'](_0x1d4d3f[_0x99a1('0x48')],{})[_0x99a1('0x23')](function(_0x462c15){var _0x4519fb=_0x1d4d3f[_0x99a1('0x49')]['get']({'plain':!![]});if(!_0x4519fb)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4519fb['role']===_0x99a1('0x49')){var _0x4ae90e=_0x462c15[_0x99a1('0x25')]({'plain':!![]});var _0x30fdfb=_0x99a1('0x26');return db[_0x99a1('0x4a')][_0x99a1('0x47')]({'where':{'name':_0x30fdfb,'userProfileId':_0x4519fb['userProfileId']},'raw':!![]})[_0x99a1('0x23')](function(_0x22bfd8){if(_0x22bfd8&&_0x22bfd8[_0x99a1('0x4b')]===0x0){return db['UserProfileResource'][_0x99a1('0x4c')]({'name':_0x4ae90e['name'],'resourceId':_0x4ae90e['id'],'type':_0x22bfd8['name'],'sectionId':_0x22bfd8['id']},{})[_0x99a1('0x23')](function(){return _0x462c15;});}else{return _0x462c15;}})[_0x99a1('0x43')](function(_0x1dd17b){logger[_0x99a1('0x4d')](_0x99a1('0x4e'),_0x1dd17b);throw _0x1dd17b;});}return _0x462c15;})[_0x99a1('0x23')](respondWithResult(_0x269798,0xc9))[_0x99a1('0x43')](handleError(_0x269798,null));};exports[_0x99a1('0x4f')]=function(_0x16641e,_0x53e9eb){if(_0x16641e[_0x99a1('0x48')]['id']){delete _0x16641e['body']['id'];}return db[_0x99a1('0x2c')][_0x99a1('0x47')]({'where':{'id':_0x16641e['params']['id']}})[_0x99a1('0x23')](handleEntityNotFound(_0x53e9eb,null))[_0x99a1('0x23')](saveUpdates(_0x16641e[_0x99a1('0x48')],null))[_0x99a1('0x23')](respondWithResult(_0x53e9eb,null))[_0x99a1('0x43')](handleError(_0x53e9eb,null));};exports[_0x99a1('0x24')]=function(_0x157c49,_0x1a5658){return db[_0x99a1('0x2c')][_0x99a1('0x47')]({'where':{'id':_0x157c49[_0x99a1('0x45')]['id']}})[_0x99a1('0x23')](handleEntityNotFound(_0x1a5658,null))['then'](removeEntity(_0x1a5658,null))['catch'](handleError(_0x1a5658,null));};
\ No newline at end of file
index 5e8e02b..13d432f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0bd=['exports','define','Tag','tools_tags','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./tag.attributes'];(function(_0x30bf6d,_0x14b2dd){var _0x21b620=function(_0x29224a){while(--_0x29224a){_0x30bf6d['push'](_0x30bf6d['shift']());}};_0x21b620(++_0x14b2dd);}(_0xa0bd,0x17e));var _0xda0b=function(_0x2b96c0,_0x53697c){_0x2b96c0=_0x2b96c0-0x0;var _0x34744=_0xa0bd[_0x2b96c0];return _0x34744;};'use strict';var _=require('lodash');var util=require(_0xda0b('0x0'));var logger=require(_0xda0b('0x1'))(_0xda0b('0x2'));var moment=require(_0xda0b('0x3'));var BPromise=require(_0xda0b('0x4'));var rp=require(_0xda0b('0x5'));var fs=require('fs');var path=require(_0xda0b('0x6'));var rimraf=require(_0xda0b('0x7'));var config=require(_0xda0b('0x8'));var attributes=require(_0xda0b('0x9'));module[_0xda0b('0xa')]=function(_0x103ef8,_0xc7ce90){return _0x103ef8[_0xda0b('0xb')](_0xda0b('0xc'),attributes,{'tableName':_0xda0b('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x8937=['api','moment','rimraf','../../config/environment','./tag.attributes','exports','define','tools_tags','lodash','util','../../config/logger'];(function(_0x186683,_0x39ea45){var _0x29e712=function(_0x4b2a65){while(--_0x4b2a65){_0x186683['push'](_0x186683['shift']());}};_0x29e712(++_0x39ea45);}(_0x8937,0x15d));var _0x7893=function(_0x2ba7ff,_0x406361){_0x2ba7ff=_0x2ba7ff-0x0;var _0x26bff7=_0x8937[_0x2ba7ff];return _0x26bff7;};'use strict';var _=require(_0x7893('0x0'));var util=require(_0x7893('0x1'));var logger=require(_0x7893('0x2'))(_0x7893('0x3'));var moment=require(_0x7893('0x4'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x7893('0x5'));var config=require(_0x7893('0x6'));var attributes=require(_0x7893('0x7'));module[_0x7893('0x8')]=function(_0xa07ab0,_0x48532b){return _0xa07ab0[_0x7893('0x9')]('Tag',attributes,{'tableName':_0x7893('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index fff30e9..5f09a82 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99e9=['../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info','Tag,\x20%s,\x20%s','request\x20sent','debug','Tag,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','util','moment','bluebird','randomstring'];(function(_0xbf5e16,_0x146ce3){var _0x5975a5=function(_0x2387a7){while(--_0x2387a7){_0xbf5e16['push'](_0xbf5e16['shift']());}};_0x5975a5(++_0x146ce3);}(_0x99e9,0xb4));var _0x999e=function(_0x2daef6,_0xcac228){_0x2daef6=_0x2daef6-0x0;var _0x62d030=_0x99e9[_0x2daef6];return _0x62d030;};'use strict';var _=require('lodash');var util=require(_0x999e('0x0'));var moment=require(_0x999e('0x1'));var BPromise=require(_0x999e('0x2'));var rs=require(_0x999e('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x999e('0x4'))['db'];var utils=require(_0x999e('0x5'));var logger=require(_0x999e('0x6'))('rpc');var config=require(_0x999e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x999e('0x8')][_0x999e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x100330,_0x18f337,_0x5c1c17){return new BPromise(function(_0x46aeae,_0x38a692){return client[_0x999e('0xa')](_0x100330,_0x5c1c17)[_0x999e('0xb')](function(_0x2c38cf){logger[_0x999e('0xc')](_0x999e('0xd'),_0x18f337,_0x999e('0xe'));logger[_0x999e('0xf')](_0x999e('0x10'),_0x18f337,_0x999e('0xe'),JSON[_0x999e('0x11')](_0x2c38cf));if(_0x2c38cf[_0x999e('0x12')]){if(_0x2c38cf[_0x999e('0x12')][_0x999e('0x13')]===0x1f4){logger[_0x999e('0x12')](_0x999e('0xd'),_0x18f337,_0x2c38cf['error'][_0x999e('0x14')]);return _0x38a692(_0x2c38cf['error'][_0x999e('0x14')]);}logger[_0x999e('0x12')](_0x999e('0xd'),_0x18f337,_0x2c38cf['error'][_0x999e('0x14')]);return _0x46aeae(_0x2c38cf['error'][_0x999e('0x14')]);}else{logger['info']('Tag,\x20%s,\x20%s',_0x18f337,_0x999e('0xe'));_0x46aeae(_0x2c38cf[_0x999e('0x15')][_0x999e('0x14')]);}})[_0x999e('0x16')](function(_0x1e9bff){logger[_0x999e('0x12')]('Tag,\x20%s,\x20%s',_0x18f337,_0x1e9bff);_0x38a692(_0x1e9bff);});});}
\ No newline at end of file
+var _0x1b73=['debug','Tag,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','request','then','Tag,\x20%s,\x20%s','request\x20sent'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0x1b73,0x1d5));var _0x31b7=function(_0x2d6a4c,_0x5393f5){_0x2d6a4c=_0x2d6a4c-0x0;var _0x15c803=_0x1b73[_0x2d6a4c];return _0x15c803;};'use strict';var _=require('lodash');var util=require(_0x31b7('0x0'));var moment=require(_0x31b7('0x1'));var BPromise=require(_0x31b7('0x2'));var rs=require(_0x31b7('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x31b7('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x31b7('0x5'))(_0x31b7('0x6'));var config=require('../../config/environment');var jayson=require(_0x31b7('0x7'));var client=jayson[_0x31b7('0x8')][_0x31b7('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x502838,_0x445dbe,_0x1a730f){return new BPromise(function(_0x86ef8e,_0x19b92a){return client[_0x31b7('0xa')](_0x502838,_0x1a730f)[_0x31b7('0xb')](function(_0x3d2b41){logger['info'](_0x31b7('0xc'),_0x445dbe,_0x31b7('0xd'));logger[_0x31b7('0xe')](_0x31b7('0xf'),_0x445dbe,_0x31b7('0xd'),JSON[_0x31b7('0x10')](_0x3d2b41));if(_0x3d2b41[_0x31b7('0x11')]){if(_0x3d2b41[_0x31b7('0x11')][_0x31b7('0x12')]===0x1f4){logger[_0x31b7('0x11')]('Tag,\x20%s,\x20%s',_0x445dbe,_0x3d2b41[_0x31b7('0x11')][_0x31b7('0x13')]);return _0x19b92a(_0x3d2b41[_0x31b7('0x11')][_0x31b7('0x13')]);}logger[_0x31b7('0x11')](_0x31b7('0xc'),_0x445dbe,_0x3d2b41[_0x31b7('0x11')][_0x31b7('0x13')]);return _0x86ef8e(_0x3d2b41[_0x31b7('0x11')]['message']);}else{logger[_0x31b7('0x14')]('Tag,\x20%s,\x20%s',_0x445dbe,_0x31b7('0xd'));_0x86ef8e(_0x3d2b41[_0x31b7('0x15')]['message']);}})[_0x31b7('0x16')](function(_0x3c71ae){logger[_0x31b7('0x11')](_0x31b7('0xc'),_0x445dbe,_0x3c71ae);_0x19b92a(_0x3c71ae);});});}
\ No newline at end of file
index 66c1c22..be85453 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(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x45e98e,_0x169b60){_0x45e98e=_0x45e98e-0x0;var _0x374dba=_0xa9e0[_0x45e98e];return _0x374dba;};'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(_0x8c43de,_0x90ff31){var _0xa6591b=function(_0x469716){while(--_0x469716){_0x8c43de['push'](_0x8c43de['shift']());}};_0xa6591b(++_0x90ff31);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5c3c0b,_0x4ee35e){_0x5c3c0b=_0x5c3c0b-0x0;var _0x52ecd2=_0xa9e0[_0x5c3c0b];return _0x52ecd2;};'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 47e2679..84d9227 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb7e7=['STRING','sequelize'];(function(_0x4b4f24,_0x5654a8){var _0x1c13d4=function(_0x4940bf){while(--_0x4940bf){_0x4b4f24['push'](_0x4b4f24['shift']());}};_0x1c13d4(++_0x5654a8);}(_0xb7e7,0x121));var _0x7b7e=function(_0x1b7368,_0x3286ed){_0x1b7368=_0x1b7368-0x0;var _0x25d54c=_0xb7e7[_0x1b7368];return _0x25d54c;};'use strict';var Sequelize=require(_0x7b7e('0x0'));module['exports']={'name':{'type':Sequelize[_0x7b7e('0x1')],'allowNull':![],'unique':'name'},'description':{'type':Sequelize[_0x7b7e('0x1')]}};
\ No newline at end of file
+var _0xbaf0=['name','exports','STRING'];(function(_0x58fbb0,_0xe497b5){var _0x1783d2=function(_0x5554a8){while(--_0x5554a8){_0x58fbb0['push'](_0x58fbb0['shift']());}};_0x1783d2(++_0xe497b5);}(_0xbaf0,0x12a));var _0x0baf=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xbaf0[_0xa464c9];return _0x3d73c4;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'name':{'type':Sequelize[_0x0baf('0x1')],'allowNull':![],'unique':_0x0baf('0x2')},'description':{'type':Sequelize[_0x0baf('0x1')]}};
\ No newline at end of file
index 453c91f..f7f5ea1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0349=['query','intersection','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','then','includeAll','include','rows','catch','show','params','keys','options','create','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','get','Teams','find','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','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','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','UserMailQueue','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','UserChatQueue','SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20','FaxQueueId','UserFaxQueue','SELECT\x20OpenchannelQueueId\x20FROM\x20team_has_openchannel_queues\x20WHERE\x20TeamId\x20=\x20','UserOpenchannelQueue','SELECT\x20WhatsappQueueId\x20FROM\x20team_has_whatsapp_queues\x20WHERE\x20TeamId\x20=\x20','WhatsappQueueId','UserWhatsappQueue','UserVoicePrefix','VoicePrefixId','getQueues','findOne','channel','isValidChannel','capitalize','toLowerCase','Queue','rawAttributes','Queues','addQueues','ValidationError','ids','removeQueues','remove','isArray','Voice','Chat','Mail','Sms','Fax','Openchannel','Whatsapp','transaction','through','penalty','QueueId','TeamVoiceQueue','findOrCreate','emit','Queue:save','findAll','online','voicePause','upsert','isNil','interface','SIP/%s','all','TeamVoicePrefix','addAgents','spread','removeAgents','Queue:remove','UserVoiceQueueRt','getAgents','User','nolimit','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','defaults','redis','localhost','socket.io-emitter','./team.socket','sendStatus','status','end','offset','undefined','limit','count','set','json','save','update','error','stack','name','send','index','map','Team','fieldName','type','key','model'];(function(_0x5aee10,_0x57b094){var _0x2c800b=function(_0x2101dd){while(--_0x2101dd){_0x5aee10['push'](_0x5aee10['shift']());}};_0x2c800b(++_0x57b094);}(_0x0349,0x1a2));var _0x9034=function(_0xc87d08,_0x59c9be){_0xc87d08=_0xc87d08-0x0;var _0x30a714=_0x0349[_0xc87d08];return _0x30a714;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x9034('0x0'));var zipdir=require(_0x9034('0x1'));var jsonpatch=require(_0x9034('0x2'));var rp=require(_0x9034('0x3'));var moment=require(_0x9034('0x4'));var BPromise=require(_0x9034('0x5'));var Mustache=require(_0x9034('0x6'));var util=require('util');var path=require(_0x9034('0x7'));var sox=require(_0x9034('0x8'));var csv=require('to-csv');var ejs=require(_0x9034('0x9'));var fs=require('fs');var fs_extra=require(_0x9034('0xa'));var _=require(_0x9034('0xb'));var squel=require(_0x9034('0xc'));var crypto=require(_0x9034('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x9034('0xe'));var toCsv=require(_0x9034('0xf'));var querystring=require('querystring');var Papa=require(_0x9034('0x10'));var Redis=require(_0x9034('0x11'));var authService=require(_0x9034('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x9034('0x13'));var hardwareService=require(_0x9034('0x14'));var logger=require(_0x9034('0x15'))(_0x9034('0x16'));var utils=require(_0x9034('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0x9034('0x18'));var db=require(_0x9034('0x19'))['db'];config['redis']=_[_0x9034('0x1a')](config[_0x9034('0x1b')],{'host':_0x9034('0x1c'),'port':0x18eb});var socket=require(_0x9034('0x1d'))(new Redis(config['redis']));require(_0x9034('0x1e'))['register'](socket);function respondWithStatusCode(_0x28b186,_0x1723b5){_0x1723b5=_0x1723b5||0xcc;return function(_0x9ef236){if(_0x9ef236){return _0x28b186[_0x9034('0x1f')](_0x1723b5);}return _0x28b186[_0x9034('0x20')](_0x1723b5)[_0x9034('0x21')]();};}function respondWithResult(_0x23fbc2,_0x2b5088){_0x2b5088=_0x2b5088||0xc8;return function(_0x13f524){if(_0x13f524){return _0x23fbc2[_0x9034('0x20')](_0x2b5088)['json'](_0x13f524);}};}function respondWithFilteredResult(_0x3dce8a,_0x4952b5){return function(_0x58acca){if(_0x58acca){var _0x1819ae=typeof _0x4952b5[_0x9034('0x22')]===_0x9034('0x23')&&typeof _0x4952b5[_0x9034('0x24')]===_0x9034('0x23');var _0x7f608=_0x58acca[_0x9034('0x25')];var _0x5464b8=_0x1819ae?0x0:_0x4952b5[_0x9034('0x22')];var _0xd98541=_0x1819ae?_0x58acca['count']:_0x4952b5[_0x9034('0x22')]+_0x4952b5['limit'];var _0x4192ca;if(_0xd98541>=_0x7f608){_0xd98541=_0x7f608;_0x4192ca=0xc8;}else{_0x4192ca=0xce;}_0x3dce8a[_0x9034('0x20')](_0x4192ca);return _0x3dce8a[_0x9034('0x26')]('Content-Range',_0x5464b8+'-'+_0xd98541+'/'+_0x7f608)[_0x9034('0x27')](_0x58acca);}return null;};}function patchUpdates(_0x4e93f9){return function(_0x50ac2c){try{jsonpatch['apply'](_0x50ac2c,_0x4e93f9,!![]);}catch(_0x6c85b9){return BPromise['reject'](_0x6c85b9);}return _0x50ac2c[_0x9034('0x28')]();};}function saveUpdates(_0x47f12b,_0x385fe7){return function(_0x47fd0f){if(_0x47fd0f){return _0x47fd0f[_0x9034('0x29')](_0x47f12b)['then'](function(_0x48e8fa){return _0x48e8fa;});}return null;};}function handleEntityNotFound(_0x1cf80a,_0x57ac04){return function(_0x5babd4){if(!_0x5babd4){_0x1cf80a[_0x9034('0x1f')](0x194);}return _0x5babd4;};}function handleError(_0x36f30e,_0x57dabd){_0x57dabd=_0x57dabd||0x1f4;return function(_0x1b113f){logger[_0x9034('0x2a')](_0x1b113f[_0x9034('0x2b')]);if(_0x1b113f[_0x9034('0x2c')]){delete _0x1b113f['name'];}_0x36f30e[_0x9034('0x20')](_0x57dabd)[_0x9034('0x2d')](_0x1b113f);};}exports[_0x9034('0x2e')]=function(_0x134f70,_0xcfb14f){var _0x2e9643={},_0x3e9d14={},_0x178b17={'count':0x0,'rows':[]};var _0xff94ff=_[_0x9034('0x2f')](db[_0x9034('0x30')]['rawAttributes'],function(_0x2f4d7d){return{'name':_0x2f4d7d[_0x9034('0x31')],'type':_0x2f4d7d[_0x9034('0x32')][_0x9034('0x33')]};});_0x3e9d14[_0x9034('0x34')]=_[_0x9034('0x2f')](_0xff94ff,_0x9034('0x2c'));_0x3e9d14[_0x9034('0x35')]=_['keys'](_0x134f70[_0x9034('0x35')]);_0x3e9d14['filters']=_[_0x9034('0x36')](_0x3e9d14['model'],_0x3e9d14[_0x9034('0x35')]);_0x2e9643['attributes']=_['intersection'](_0x3e9d14[_0x9034('0x34')],qs[_0x9034('0x37')](_0x134f70[_0x9034('0x35')]['fields']));_0x2e9643[_0x9034('0x38')]=_0x2e9643[_0x9034('0x38')][_0x9034('0x39')]?_0x2e9643[_0x9034('0x38')]:_0x3e9d14['model'];if(!_0x134f70[_0x9034('0x35')][_0x9034('0x3a')]('nolimit')){_0x2e9643[_0x9034('0x24')]=qs['limit'](_0x134f70[_0x9034('0x35')][_0x9034('0x24')]);_0x2e9643[_0x9034('0x22')]=qs[_0x9034('0x22')](_0x134f70['query'][_0x9034('0x22')]);}_0x2e9643[_0x9034('0x3b')]=qs[_0x9034('0x3c')](_0x134f70[_0x9034('0x35')][_0x9034('0x3c')]);_0x2e9643[_0x9034('0x3d')]=qs[_0x9034('0x3e')](_[_0x9034('0x3f')](_0x134f70[_0x9034('0x35')],_0x3e9d14[_0x9034('0x3e')]),_0xff94ff);if(_0x134f70[_0x9034('0x35')]['filter']){_0x2e9643[_0x9034('0x3d')]=_['merge'](_0x2e9643[_0x9034('0x3d')],{'$or':_[_0x9034('0x2f')](_0xff94ff,function(_0x534f43){if(_0x534f43[_0x9034('0x32')]!=='VIRTUAL'){var _0x53b982={};_0x53b982[_0x534f43[_0x9034('0x2c')]]={'$like':'%'+_0x134f70[_0x9034('0x35')][_0x9034('0x40')]+'%'};return _0x53b982;}})});}_0x2e9643=_[_0x9034('0x41')]({},_0x2e9643,_0x134f70['options']);var _0x11667b={'where':_0x2e9643[_0x9034('0x3d')]};return db['Team'][_0x9034('0x25')](_0x11667b)[_0x9034('0x42')](function(_0x197a0a){_0x178b17[_0x9034('0x25')]=_0x197a0a;if(_0x134f70[_0x9034('0x35')][_0x9034('0x43')]){_0x2e9643[_0x9034('0x44')]=[{'all':!![]}];}return db['Team']['findAll'](_0x2e9643);})[_0x9034('0x42')](function(_0x4626ae){_0x178b17[_0x9034('0x45')]=_0x4626ae;return _0x178b17;})[_0x9034('0x42')](respondWithFilteredResult(_0xcfb14f,_0x2e9643))[_0x9034('0x46')](handleError(_0xcfb14f,null));};exports[_0x9034('0x47')]=function(_0x5d8ac9,_0x1b046c){var _0x4ad07e={'raw':![],'where':{'id':_0x5d8ac9[_0x9034('0x48')]['id']}},_0x3621a3={};_0x3621a3['model']=_['keys'](db[_0x9034('0x30')]['rawAttributes']);_0x3621a3[_0x9034('0x35')]=_[_0x9034('0x49')](_0x5d8ac9['query']);_0x3621a3[_0x9034('0x3e')]=_[_0x9034('0x36')](_0x3621a3[_0x9034('0x34')],_0x3621a3[_0x9034('0x35')]);_0x4ad07e[_0x9034('0x38')]=_[_0x9034('0x36')](_0x3621a3['model'],qs['fields'](_0x5d8ac9[_0x9034('0x35')][_0x9034('0x37')]));_0x4ad07e[_0x9034('0x38')]=_0x4ad07e[_0x9034('0x38')][_0x9034('0x39')]?_0x4ad07e[_0x9034('0x38')]:_0x3621a3[_0x9034('0x34')];if(_0x5d8ac9[_0x9034('0x35')]['includeAll']){_0x4ad07e['include']=[{'all':!![]}];}_0x4ad07e=_[_0x9034('0x41')]({},_0x4ad07e,_0x5d8ac9[_0x9034('0x4a')]);return db[_0x9034('0x30')]['find'](_0x4ad07e)['then'](handleEntityNotFound(_0x1b046c,null))[_0x9034('0x42')](respondWithResult(_0x1b046c,null))[_0x9034('0x46')](handleError(_0x1b046c,null));};exports['create']=function(_0x267500,_0x5a4372){return db[_0x9034('0x30')][_0x9034('0x4b')](_0x267500['body'],{})[_0x9034('0x42')](function(_0x1e6ace){var _0x3974d7=_0x267500[_0x9034('0x4c')]['get']({'plain':!![]});if(!_0x3974d7)throw new Error(_0x9034('0x4d'));if(_0x3974d7[_0x9034('0x4e')]===_0x9034('0x4c')){var _0x1f2b0=_0x1e6ace[_0x9034('0x4f')]({'plain':!![]});var _0x2fd10a=_0x9034('0x50');return db['UserProfileSection'][_0x9034('0x51')]({'where':{'name':_0x2fd10a,'userProfileId':_0x3974d7['userProfileId']},'raw':!![]})[_0x9034('0x42')](function(_0x46c893){if(_0x46c893&&_0x46c893[_0x9034('0x52')]===0x0){return db[_0x9034('0x53')][_0x9034('0x4b')]({'name':_0x1f2b0['name'],'resourceId':_0x1f2b0['id'],'type':_0x46c893['name'],'sectionId':_0x46c893['id']},{})[_0x9034('0x42')](function(){return _0x1e6ace;});}else{return _0x1e6ace;}})['catch'](function(_0x498ff8){logger[_0x9034('0x2a')](_0x9034('0x54'),_0x498ff8);throw _0x498ff8;});}return _0x1e6ace;})[_0x9034('0x42')](respondWithResult(_0x5a4372,0xc9))[_0x9034('0x46')](handleError(_0x5a4372,null));};exports[_0x9034('0x29')]=function(_0x4d9b8d,_0x1e46b2){if(_0x4d9b8d[_0x9034('0x55')]['id']){delete _0x4d9b8d[_0x9034('0x55')]['id'];}return db[_0x9034('0x30')][_0x9034('0x51')]({'where':{'id':_0x4d9b8d[_0x9034('0x48')]['id']}})[_0x9034('0x42')](handleEntityNotFound(_0x1e46b2,null))[_0x9034('0x42')](saveUpdates(_0x4d9b8d['body'],null))[_0x9034('0x42')](respondWithResult(_0x1e46b2,null))[_0x9034('0x46')](handleError(_0x1e46b2,null));};exports[_0x9034('0x56')]=function(_0x2dd950,_0x56af66){var _0x3bad98=_0x2dd950[_0x9034('0x48')]['id'];var _0x37840f=[];return db[_0x9034('0x57')]['transaction'](function(_0x3c200e){var _0x148c96=_0x9034('0x58')+_0x3bad98;return db[_0x9034('0x57')][_0x9034('0x35')](_0x148c96,{'type':db[_0x9034('0x59')][_0x9034('0x5a')][_0x9034('0x5b')],'raw':!![],'transaction':_0x3c200e})[_0x9034('0x42')](function(_0x2e2489){_0x37840f=_['map'](_0x2e2489,function(_0x267ebd){return Number(_0x267ebd[_0x9034('0x5c')]);});})[_0x9034('0x42')](function(){var _0x11700c=_0x9034('0x5d')+_0x3bad98;return db[_0x9034('0x57')][_0x9034('0x35')](_0x11700c,{'type':db[_0x9034('0x59')]['QueryTypes'][_0x9034('0x5b')],'raw':!![],'transaction':_0x3c200e});})[_0x9034('0x42')](function(_0x3f9da9){var _0x3cc46c=_[_0x9034('0x2f')](_0x3f9da9,function(_0x505ec2){return Number(_0x505ec2['VoiceQueueId']);});return db[_0x9034('0x5e')]['destroy']({'where':{'UserId':{'$in':_0x37840f},'VoiceQueueId':{'$in':_0x3cc46c}},'transaction':_0x3c200e});})[_0x9034('0x42')](function(){var _0x347d6a=_0x9034('0x5f')+_0x3bad98;return db[_0x9034('0x57')][_0x9034('0x35')](_0x347d6a,{'type':db[_0x9034('0x59')][_0x9034('0x5a')][_0x9034('0x5b')],'raw':!![],'transaction':_0x3c200e});})[_0x9034('0x42')](function(_0x27f450){var _0xad675e=_[_0x9034('0x2f')](_0x27f450,function(_0x18ac2d){return Number(_0x18ac2d['MailQueueId']);});return db[_0x9034('0x60')][_0x9034('0x56')]({'where':{'UserId':{'$in':_0x37840f},'MailQueueId':{'$in':_0xad675e}},'transaction':_0x3c200e});})[_0x9034('0x42')](function(){var _0x5f1b25=_0x9034('0x61')+_0x3bad98;return db[_0x9034('0x57')]['query'](_0x5f1b25,{'type':db[_0x9034('0x59')][_0x9034('0x5a')][_0x9034('0x5b')],'raw':!![],'transaction':_0x3c200e});})[_0x9034('0x42')](function(_0x200520){var _0x55c30f=_['map'](_0x200520,function(_0x2637e6){return Number(_0x2637e6['SmsQueueId']);});return db['UserSmsQueue']['destroy']({'where':{'UserId':{'$in':_0x37840f},'SmsQueueId':{'$in':_0x55c30f}},'transaction':_0x3c200e});})[_0x9034('0x42')](function(){var _0x404fe2=_0x9034('0x62')+_0x3bad98;return db[_0x9034('0x57')][_0x9034('0x35')](_0x404fe2,{'type':db[_0x9034('0x59')][_0x9034('0x5a')][_0x9034('0x5b')],'raw':!![],'transaction':_0x3c200e});})['then'](function(_0x54ca5d){var _0x243dc8=_[_0x9034('0x2f')](_0x54ca5d,function(_0x429984){return Number(_0x429984['ChatQueueId']);});return db[_0x9034('0x63')][_0x9034('0x56')]({'where':{'UserId':{'$in':_0x37840f},'ChatQueueId':{'$in':_0x243dc8}},'transaction':_0x3c200e});})[_0x9034('0x42')](function(){var _0x44279f=_0x9034('0x64')+_0x3bad98;return db['sequelize'][_0x9034('0x35')](_0x44279f,{'type':db[_0x9034('0x59')][_0x9034('0x5a')][_0x9034('0x5b')],'raw':!![],'transaction':_0x3c200e});})['then'](function(_0x1faf0c){var _0x4b4f8d=_[_0x9034('0x2f')](_0x1faf0c,function(_0x52de63){return Number(_0x52de63[_0x9034('0x65')]);});return db[_0x9034('0x66')][_0x9034('0x56')]({'where':{'UserId':{'$in':_0x37840f},'FaxQueueId':{'$in':_0x4b4f8d}},'transaction':_0x3c200e});})[_0x9034('0x42')](function(){var _0x2fb96b=_0x9034('0x67')+_0x3bad98;return db[_0x9034('0x57')][_0x9034('0x35')](_0x2fb96b,{'type':db[_0x9034('0x59')][_0x9034('0x5a')][_0x9034('0x5b')],'raw':!![],'transaction':_0x3c200e});})[_0x9034('0x42')](function(_0x36ec6b){var _0x34408b=_[_0x9034('0x2f')](_0x36ec6b,function(_0x2788eb){return Number(_0x2788eb['OpenchannelQueueId']);});return db[_0x9034('0x68')]['destroy']({'where':{'UserId':{'$in':_0x37840f},'OpenchannelQueueId':{'$in':_0x34408b}},'transaction':_0x3c200e});})['then'](function(){var _0x1469bc=_0x9034('0x69')+_0x3bad98;return db[_0x9034('0x57')][_0x9034('0x35')](_0x1469bc,{'type':db[_0x9034('0x59')][_0x9034('0x5a')][_0x9034('0x5b')],'raw':!![],'transaction':_0x3c200e});})[_0x9034('0x42')](function(_0x28eaae){var _0x20f83e=_[_0x9034('0x2f')](_0x28eaae,function(_0x28cef9){return Number(_0x28cef9[_0x9034('0x6a')]);});return db[_0x9034('0x6b')]['destroy']({'where':{'UserId':{'$in':_0x37840f},'WhatsappQueueId':{'$in':_0x20f83e}},'transaction':_0x3c200e});})['then'](function(){return db['TeamVoicePrefix'][_0x9034('0x51')]({'where':{'TeamId':_0x3bad98}});})[_0x9034('0x42')](function(_0x20398b){if(_0x20398b===null){return;}return db[_0x9034('0x6c')][_0x9034('0x56')]({'where':{'UserId':{'$in':_0x37840f},'VoicePrefixId':_0x20398b[_0x9034('0x6d')]},'transaction':_0x3c200e});})['then'](function(){return db[_0x9034('0x30')]['destroy']({'where':{'id':_0x3bad98},'cascade':!![],'transaction':_0x3c200e});})[_0x9034('0x42')](function(_0x41e42a){if(_0x41e42a===0x0){_0x56af66[_0x9034('0x1f')](0x194);}else{return db[_0x9034('0x53')][_0x9034('0x56')]({'where':{'type':'Teams','resourceId':_0x3bad98},'cascade':!![],'transaction':_0x3c200e})[_0x9034('0x42')](function(){_0x56af66[_0x9034('0x20')](0xcc)[_0x9034('0x21')]();});}})['catch'](function(_0x257ffd){_0x56af66[_0x9034('0x20')](0x1f4)[_0x9034('0x2d')](_0x257ffd);});});};exports[_0x9034('0x6e')]=function(_0x256da5,_0x505f19,_0x3f1121){return db[_0x9034('0x30')][_0x9034('0x6f')]({'where':{'id':_0x256da5[_0x9034('0x48')]['id']}})[_0x9034('0x42')](handleEntityNotFound(_0x505f19,null))[_0x9034('0x42')](function(_0x520410){if(!_0x256da5[_0x9034('0x35')][_0x9034('0x70')]||!utils[_0x9034('0x71')](_0x256da5['query'][_0x9034('0x70')])){throw new db[(_0x9034('0x59'))]['ValidationError']('Unknown\x20channel');}var _0x545227={};var _0x20bd6c={};_0x20bd6c[_0x9034('0x34')]=_[_0x9034('0x49')](db[_[_0x9034('0x72')](_0x256da5[_0x9034('0x35')]['channel'][_0x9034('0x73')]())+_0x9034('0x74')][_0x9034('0x75')]);_0x20bd6c[_0x9034('0x35')]=_[_0x9034('0x49')](_0x256da5[_0x9034('0x35')]);_0x20bd6c[_0x9034('0x3e')]=_[_0x9034('0x36')](_0x20bd6c[_0x9034('0x34')],_0x20bd6c[_0x9034('0x35')]);_0x545227[_0x9034('0x38')]=_[_0x9034('0x36')](_0x20bd6c[_0x9034('0x34')],qs[_0x9034('0x37')](_0x256da5[_0x9034('0x35')][_0x9034('0x37')]));_0x545227[_0x9034('0x38')]=_0x545227['attributes'][_0x9034('0x39')]?_0x545227[_0x9034('0x38')]:_0x20bd6c['model'];_0x545227[_0x9034('0x24')]=qs[_0x9034('0x24')](_0x256da5[_0x9034('0x35')][_0x9034('0x24')]);_0x545227[_0x9034('0x22')]=qs[_0x9034('0x22')](_0x256da5[_0x9034('0x35')]['offset']);_0x545227[_0x9034('0x3b')]=qs[_0x9034('0x3c')](_0x256da5[_0x9034('0x35')]['sort']);_0x545227[_0x9034('0x3d')]=qs['filters'](_[_0x9034('0x3f')](_0x256da5['query'],_0x20bd6c[_0x9034('0x3e')]));_0x545227=_[_0x9034('0x41')]({},_0x545227,_0x256da5[_0x9034('0x4a')]);return _0x520410['get'+_[_0x9034('0x72')](_0x256da5[_0x9034('0x35')][_0x9034('0x70')][_0x9034('0x73')]())+_0x9034('0x76')](_0x545227);})[_0x9034('0x42')](respondWithResult(_0x505f19,null))[_0x9034('0x46')](handleError(_0x505f19,null));};exports[_0x9034('0x77')]=function(_0x58676c,_0x417915,_0x5adcb5){return db[_0x9034('0x30')][_0x9034('0x6f')]({'where':{'id':_0x58676c[_0x9034('0x48')]['id']}})[_0x9034('0x42')](function(_0x2e7a44){if(_0x2e7a44){if(!_0x58676c[_0x9034('0x55')][_0x9034('0x70')]||!utils['isValidChannel'](_0x58676c[_0x9034('0x55')][_0x9034('0x70')])){throw new db['Sequelize'][(_0x9034('0x78'))]('Unknown\x20channel');}return _0x2e7a44['add'+_[_0x9034('0x72')](_0x58676c[_0x9034('0x55')][_0x9034('0x70')][_0x9034('0x73')]())+_0x9034('0x76')](_0x58676c[_0x9034('0x55')][_0x9034('0x79')]);}return null;})['then'](handleEntityNotFound(_0x417915,null))[_0x9034('0x42')](respondWithStatusCode(_0x417915,null))[_0x9034('0x46')](handleError(_0x417915,null));};exports[_0x9034('0x7a')]=function(_0x5936dd,_0x203e18,_0x57777e){return db[_0x9034('0x30')]['findOne']({'where':{'id':_0x5936dd['params']['id']}})[_0x9034('0x42')](function(_0x216c39){if(_0x216c39){if(!_0x5936dd[_0x9034('0x35')][_0x9034('0x70')]||!utils[_0x9034('0x71')](_0x5936dd['query'][_0x9034('0x70')])){throw new db['Sequelize']['ValidationError']('Unknown\x20channel');}return _0x216c39[_0x9034('0x7b')+_['capitalize'](_0x5936dd[_0x9034('0x35')][_0x9034('0x70')][_0x9034('0x73')]())+'Queues'](_0x5936dd[_0x9034('0x35')]['ids']);}return null;})[_0x9034('0x42')](handleEntityNotFound(_0x203e18,null))[_0x9034('0x42')](respondWithStatusCode(_0x203e18,null))[_0x9034('0x46')](handleError(_0x203e18,null));};exports['addAgents']=function(_0x71499c,_0x23f0ef){var _0x27af44=_[_0x9034('0x7c')](_0x71499c['body'][_0x9034('0x79')])?_0x71499c[_0x9034('0x55')]['ids']:[_0x71499c[_0x9034('0x55')]['ids']];var _0x18abbb=_0x71499c[_0x9034('0x48')]['id'];return db[_0x9034('0x30')][_0x9034('0x51')]({'where':{'id':_0x18abbb}})[_0x9034('0x42')](handleEntityNotFound(_0x23f0ef,null))[_0x9034('0x42')](function(_0x21c078){if(_0x21c078){var _0x20a99d=[_0x9034('0x7d'),_0x9034('0x7e'),_0x9034('0x7f'),_0x9034('0x80'),_0x9034('0x81'),_0x9034('0x82'),_0x9034('0x83')];return db[_0x9034('0x57')][_0x9034('0x84')](function(_0xdbf31f){var _0x7e9b3c=_['map'](_0x20a99d,function(_0x1a7469){var _0x11ac7f={'attributes':['id',_0x9034('0x2c')]};if(_0x1a7469==='Voice'){_0x11ac7f[_0x9034('0x85')]={'attributes':[_0x9034('0x86')]};}return _0x21c078[_0x9034('0x4f')+_0x1a7469+_0x9034('0x76')](_0x11ac7f)[_0x9034('0x42')](function(_0x2f75d0){var _0x361a27=_[_0x9034('0x2f')](_0x2f75d0,function(_0x278394){var _0x375f15=_['map'](_0x27af44,function(_0x7e8f5){var _0x4b3982={'where':{'UserId':_0x7e8f5,[_0x1a7469+_0x9034('0x87')]:_0x278394['id']},'transaction':_0xdbf31f};if(_0x1a7469==='Voice'){_0x4b3982[_0x9034('0x1a')]={'penalty':_0x278394[_0x9034('0x88')]['penalty']};}return db['User'+_0x1a7469+_0x9034('0x74')][_0x9034('0x89')](_0x4b3982)[_0x9034('0x42')](function(){socket[_0x9034('0x8a')]('user'+_0x1a7469+_0x9034('0x8b'),{'UserId':_0x7e8f5,[_0x1a7469+'QueueId']:_0x278394['id']});if(_0x1a7469!==_0x9034('0x7d')){return;}return db['User'][_0x9034('0x8c')]({'where':{'id':_0x27af44,'online':0x1},'attributes':['id',_0x9034('0x2c'),_0x9034('0x8d'),_0x9034('0x8e'),'interface'],'raw':!![]})[_0x9034('0x42')](function(_0x26947d){var _0x5e8d54=_[_0x9034('0x2f')](_0x26947d,function(_0x2a8cde){return db['UserVoiceQueueRt'][_0x9034('0x8f')]({'membername':_0x2a8cde[_0x9034('0x2c')],'UserId':_0x2a8cde['id'],'queue_name':_0x278394[_0x9034('0x2c')],'VoiceQueueId':_0x278394['id'],'interface':_[_0x9034('0x90')](_0x2a8cde[_0x9034('0x91')])?util['format'](_0x9034('0x92'),_0x2a8cde[_0x9034('0x2c')]):_0x2a8cde['interface'],'paused':_0x2a8cde[_0x9034('0x8e')]||![],'penalty':_0x278394[_0x9034('0x88')][_0x9034('0x86')]},{'transaction':_0xdbf31f});});return Promise['all'](_0x5e8d54);});});});return Promise[_0x9034('0x93')](_0x375f15);});return Promise['all'](_0x361a27);})[_0x9034('0x42')](function(){return db[_0x9034('0x94')]['findOne']({'where':{'teamId':_0x18abbb}})['then'](function(_0x270974){if(_0x270974){var _0x3f2f0b=_[_0x9034('0x2f')](_0x27af44,function(_0x5cd4a7){db[_0x9034('0x6c')][_0x9034('0x8f')]({'UserId':_0x5cd4a7,'VoicePrefixId':_0x270974[_0x9034('0x6d')]});});return Promise[_0x9034('0x93')](_0x3f2f0b);}});});});return Promise[_0x9034('0x93')](_0x7e9b3c)[_0x9034('0x42')](function(){return _0x21c078[_0x9034('0x95')](_0x27af44,{'transaction':_0xdbf31f})[_0x9034('0x96')](function(_0x23c8c5){return _0x23c8c5;});});});}})['then'](respondWithResult(_0x23f0ef,null))[_0x9034('0x46')](handleError(_0x23f0ef,null));};exports[_0x9034('0x97')]=function(_0x11ae76,_0x8e5216){var _0x3dc7ad=_[_0x9034('0x7c')](_0x11ae76[_0x9034('0x35')][_0x9034('0x79')])?_0x11ae76[_0x9034('0x35')][_0x9034('0x79')]:[_0x11ae76[_0x9034('0x35')][_0x9034('0x79')]];var _0x43e9a3=_0x11ae76[_0x9034('0x48')]['id'];return db[_0x9034('0x30')]['find']({'where':{'id':_0x43e9a3}})[_0x9034('0x42')](handleEntityNotFound(_0x8e5216,null))[_0x9034('0x42')](function(_0x3f9052){if(_0x3f9052){var _0x438808=[_0x9034('0x7d'),_0x9034('0x7e'),_0x9034('0x7f'),_0x9034('0x80'),'Fax','Openchannel','Whatsapp'];return db[_0x9034('0x57')][_0x9034('0x84')](function(_0x3e82cf){var _0x321df5=_[_0x9034('0x2f')](_0x438808,function(_0x2a37cd){var _0x58e840={'attributes':['id',_0x9034('0x2c')]};return _0x3f9052[_0x9034('0x4f')+_0x2a37cd+_0x9034('0x76')](_0x58e840)['then'](function(_0x512fe4){var _0x1e547c=_['map'](_0x512fe4,function(_0x5468af){return _0x5468af[_0x9034('0x97')](_0x3dc7ad,{'transaction':_0x3e82cf})[_0x9034('0x42')](function(){var _0x4ce2bf=_[_0x9034('0x2f')](_0x3dc7ad,function(_0x31acbc){socket['emit'](_0x9034('0x4c')+_0x2a37cd+_0x9034('0x98'),{'UserId':Number(_0x31acbc),[_0x2a37cd+_0x9034('0x87')]:_0x5468af['id']});if(_0x2a37cd!==_0x9034('0x7d')){return;}return db[_0x9034('0x99')][_0x9034('0x56')]({'where':{'VoiceQueueId':_0x5468af['id'],'UserId':_0x31acbc},'transaction':_0x3e82cf});});return Promise[_0x9034('0x93')](_0x4ce2bf);});});return Promise[_0x9034('0x93')](_0x1e547c);});});return Promise[_0x9034('0x93')](_0x321df5)[_0x9034('0x42')](function(){return _0x3f9052[_0x9034('0x97')](_0x3dc7ad,{'transaction':_0x3e82cf});})[_0x9034('0x42')](function(){return db['TeamVoicePrefix'][_0x9034('0x6f')]({'where':{'teamId':_0x43e9a3}})[_0x9034('0x42')](function(_0x3853d1){if(_0x3853d1){var _0x219ffe=_[_0x9034('0x2f')](_0x3dc7ad,function(_0x1ceb7c){db[_0x9034('0x6c')][_0x9034('0x56')]({'where':{'UserId':_0x1ceb7c,'VoicePrefixId':_0x3853d1[_0x9034('0x6d')]}});});return Promise[_0x9034('0x93')](_0x219ffe);}});});});}})[_0x9034('0x42')](respondWithStatusCode(_0x8e5216,null))[_0x9034('0x46')](handleError(_0x8e5216,null));};exports[_0x9034('0x9a')]=function(_0x5e5f65,_0x37bee7,_0x38a31d){var _0x84a87c={};var _0x121cc0={};var _0x49ec93;var _0x45be2a;return db[_0x9034('0x30')][_0x9034('0x6f')]({'where':{'id':_0x5e5f65[_0x9034('0x48')]['id']}})['then'](handleEntityNotFound(_0x37bee7,null))[_0x9034('0x42')](function(_0x5491e4){if(_0x5491e4){_0x49ec93=_0x5491e4;_0x121cc0[_0x9034('0x34')]=_['keys'](db[_0x9034('0x9b')][_0x9034('0x75')]);_0x121cc0[_0x9034('0x35')]=_[_0x9034('0x49')](_0x5e5f65[_0x9034('0x35')]);_0x121cc0[_0x9034('0x3e')]=_[_0x9034('0x36')](_0x121cc0['model'],_0x121cc0[_0x9034('0x35')]);_0x84a87c['attributes']=_[_0x9034('0x36')](_0x121cc0[_0x9034('0x34')],qs['fields'](_0x5e5f65[_0x9034('0x35')][_0x9034('0x37')]));_0x84a87c[_0x9034('0x38')]=_0x84a87c[_0x9034('0x38')][_0x9034('0x39')]?_0x84a87c[_0x9034('0x38')]:_0x121cc0[_0x9034('0x34')];_0x84a87c[_0x9034('0x3b')]=qs[_0x9034('0x3c')](_0x5e5f65['query'][_0x9034('0x3c')]);_0x84a87c[_0x9034('0x3d')]=qs[_0x9034('0x3e')](_['pick'](_0x5e5f65['query'],_0x121cc0['filters']));if(_0x5e5f65[_0x9034('0x35')][_0x9034('0x40')]){_0x84a87c[_0x9034('0x3d')]=_['merge'](_0x84a87c[_0x9034('0x3d')],{'$or':_['map'](_0x84a87c[_0x9034('0x38')],function(_0x1fabe2){var _0x5b7000={};_0x5b7000[_0x1fabe2]={'$like':'%'+_0x5e5f65[_0x9034('0x35')]['filter']+'%'};return _0x5b7000;})});}_0x84a87c=_[_0x9034('0x41')]({},_0x84a87c,_0x5e5f65['options']);return _0x49ec93[_0x9034('0x9a')](_0x84a87c);}})[_0x9034('0x42')](function(_0x44411c){if(_0x44411c){_0x45be2a=_0x44411c[_0x9034('0x39')];if(!_0x5e5f65['query'][_0x9034('0x3a')](_0x9034('0x9c'))){_0x84a87c[_0x9034('0x24')]=qs[_0x9034('0x24')](_0x5e5f65[_0x9034('0x35')][_0x9034('0x24')]);_0x84a87c[_0x9034('0x22')]=qs['offset'](_0x5e5f65[_0x9034('0x35')][_0x9034('0x22')]);}return _0x49ec93[_0x9034('0x9a')](_0x84a87c);}})[_0x9034('0x42')](function(_0x2811e7){if(_0x2811e7){return _0x2811e7?{'count':_0x45be2a,'rows':_0x2811e7}:null;}})[_0x9034('0x42')](respondWithResult(_0x37bee7,null))[_0x9034('0x46')](handleError(_0x37bee7,null));};
\ No newline at end of file
+var _0xf85d=['sendStatus','end','status','json','offset','undefined','count','set','Content-Range','save','then','error','stack','map','Team','rawAttributes','fieldName','name','query','keys','filters','intersection','model','attributes','hasOwnProperty','nolimit','limit','order','sort','where','pick','filter','merge','type','options','include','findAll','rows','show','params','fields','find','catch','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','Teams','UserProfileSection','autoAssociation','UserProfileResource','update','body','sequelize','transaction','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','VoiceQueueId','SELECT\x20MailQueueId\x20FROM\x20team_has_mail_queues\x20WHERE\x20TeamId\x20=\x20','UserMailQueue','SELECT\x20SmsQueueId\x20FROM\x20team_has_sms_queues\x20WHERE\x20TeamId\x20=\x20','SmsQueueId','SELECT\x20ChatQueueId\x20FROM\x20team_has_chat_queues\x20WHERE\x20TeamId\x20=\x20','ChatQueueId','UserChatQueue','destroy','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','UserWhatsappQueue','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','getQueues','channel','Unknown\x20channel','capitalize','toLowerCase','length','addQueues','findOne','isValidChannel','ValidationError','add','Queues','removeQueues','remove','addAgents','isArray','ids','Voice','Chat','Mail','Sms','Fax','Openchannel','Whatsapp','through','QueueId','defaults','penalty','User','Queue','findOrCreate','emit','Queue:save','online','upsert','isNil','interface','format','voicePause','TeamVoiceQueue','all','spread','removeAgents','Queue:remove','UserVoiceQueueRt','getAgents','eml-format','rimraf','zip-dir','moment','bluebird','mustache','path','sox','lodash','crypto','jsforce','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','../../mysqldb','redis','localhost','socket.io-emitter','./team.socket','register'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xf85d,0x119));var _0xdf85=function(_0x512891,_0x46005a){_0x512891=_0x512891-0x0;var _0x1c190c=_0xf85d[_0x512891];return _0x1c190c;};'use strict';var emlformat=require(_0xdf85('0x0'));var rimraf=require(_0xdf85('0x1'));var zipdir=require(_0xdf85('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xdf85('0x3'));var BPromise=require(_0xdf85('0x4'));var Mustache=require(_0xdf85('0x5'));var util=require('util');var path=require(_0xdf85('0x6'));var sox=require(_0xdf85('0x7'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xdf85('0x8'));var squel=require('squel');var crypto=require(_0xdf85('0x9'));var jsforce=require(_0xdf85('0xa'));var deskjs=require(_0xdf85('0xb'));var toCsv=require(_0xdf85('0xc'));var querystring=require(_0xdf85('0xd'));var Papa=require(_0xdf85('0xe'));var Redis=require(_0xdf85('0xf'));var authService=require(_0xdf85('0x10'));var qs=require(_0xdf85('0x11'));var as=require(_0xdf85('0x12'));var hardwareService=require(_0xdf85('0x13'));var logger=require(_0xdf85('0x14'))('api');var utils=require(_0xdf85('0x15'));var config=require(_0xdf85('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xdf85('0x17'))['db'];config[_0xdf85('0x18')]=_['defaults'](config[_0xdf85('0x18')],{'host':_0xdf85('0x19'),'port':0x18eb});var socket=require(_0xdf85('0x1a'))(new Redis(config[_0xdf85('0x18')]));require(_0xdf85('0x1b'))[_0xdf85('0x1c')](socket);function respondWithStatusCode(_0x3409c8,_0x2b0e57){_0x2b0e57=_0x2b0e57||0xcc;return function(_0x4fc810){if(_0x4fc810){return _0x3409c8[_0xdf85('0x1d')](_0x2b0e57);}return _0x3409c8['status'](_0x2b0e57)[_0xdf85('0x1e')]();};}function respondWithResult(_0x2eaedc,_0x1dc3e5){_0x1dc3e5=_0x1dc3e5||0xc8;return function(_0x48b0a4){if(_0x48b0a4){return _0x2eaedc[_0xdf85('0x1f')](_0x1dc3e5)[_0xdf85('0x20')](_0x48b0a4);}};}function respondWithFilteredResult(_0x2e34e4,_0xb34ed9){return function(_0x58736d){if(_0x58736d){var _0x255119=typeof _0xb34ed9[_0xdf85('0x21')]===_0xdf85('0x22')&&typeof _0xb34ed9['limit']===_0xdf85('0x22');var _0x62470b=_0x58736d['count'];var _0x54a502=_0x255119?0x0:_0xb34ed9[_0xdf85('0x21')];var _0xc32d8=_0x255119?_0x58736d[_0xdf85('0x23')]:_0xb34ed9[_0xdf85('0x21')]+_0xb34ed9['limit'];var _0x28ec0b;if(_0xc32d8>=_0x62470b){_0xc32d8=_0x62470b;_0x28ec0b=0xc8;}else{_0x28ec0b=0xce;}_0x2e34e4[_0xdf85('0x1f')](_0x28ec0b);return _0x2e34e4[_0xdf85('0x24')](_0xdf85('0x25'),_0x54a502+'-'+_0xc32d8+'/'+_0x62470b)['json'](_0x58736d);}return null;};}function patchUpdates(_0xe800f7){return function(_0x49cf30){try{jsonpatch['apply'](_0x49cf30,_0xe800f7,!![]);}catch(_0x21978f){return BPromise['reject'](_0x21978f);}return _0x49cf30[_0xdf85('0x26')]();};}function saveUpdates(_0x3fdc89,_0x43d78c){return function(_0x29dd81){if(_0x29dd81){return _0x29dd81['update'](_0x3fdc89)[_0xdf85('0x27')](function(_0x3a16f4){return _0x3a16f4;});}return null;};}function handleEntityNotFound(_0xa6bb38,_0x103747){return function(_0x842da4){if(!_0x842da4){_0xa6bb38[_0xdf85('0x1d')](0x194);}return _0x842da4;};}function handleError(_0xe85496,_0x91cf74){_0x91cf74=_0x91cf74||0x1f4;return function(_0x4ede7f){logger[_0xdf85('0x28')](_0x4ede7f[_0xdf85('0x29')]);if(_0x4ede7f['name']){delete _0x4ede7f['name'];}_0xe85496[_0xdf85('0x1f')](_0x91cf74)['send'](_0x4ede7f);};}exports['index']=function(_0x1ad917,_0x3eaf79){var _0x481cf7={},_0xf7ccbe={},_0x544242={'count':0x0,'rows':[]};var _0x599da8=_[_0xdf85('0x2a')](db[_0xdf85('0x2b')][_0xdf85('0x2c')],function(_0x138d76){return{'name':_0x138d76[_0xdf85('0x2d')],'type':_0x138d76['type']['key']};});_0xf7ccbe['model']=_[_0xdf85('0x2a')](_0x599da8,_0xdf85('0x2e'));_0xf7ccbe[_0xdf85('0x2f')]=_[_0xdf85('0x30')](_0x1ad917[_0xdf85('0x2f')]);_0xf7ccbe[_0xdf85('0x31')]=_[_0xdf85('0x32')](_0xf7ccbe[_0xdf85('0x33')],_0xf7ccbe['query']);_0x481cf7['attributes']=_[_0xdf85('0x32')](_0xf7ccbe[_0xdf85('0x33')],qs['fields'](_0x1ad917[_0xdf85('0x2f')]['fields']));_0x481cf7[_0xdf85('0x34')]=_0x481cf7[_0xdf85('0x34')]['length']?_0x481cf7[_0xdf85('0x34')]:_0xf7ccbe[_0xdf85('0x33')];if(!_0x1ad917[_0xdf85('0x2f')][_0xdf85('0x35')](_0xdf85('0x36'))){_0x481cf7[_0xdf85('0x37')]=qs[_0xdf85('0x37')](_0x1ad917[_0xdf85('0x2f')]['limit']);_0x481cf7[_0xdf85('0x21')]=qs[_0xdf85('0x21')](_0x1ad917['query']['offset']);}_0x481cf7[_0xdf85('0x38')]=qs[_0xdf85('0x39')](_0x1ad917[_0xdf85('0x2f')][_0xdf85('0x39')]);_0x481cf7[_0xdf85('0x3a')]=qs[_0xdf85('0x31')](_[_0xdf85('0x3b')](_0x1ad917['query'],_0xf7ccbe['filters']),_0x599da8);if(_0x1ad917['query'][_0xdf85('0x3c')]){_0x481cf7[_0xdf85('0x3a')]=_[_0xdf85('0x3d')](_0x481cf7['where'],{'$or':_[_0xdf85('0x2a')](_0x599da8,function(_0xb9daab){if(_0xb9daab[_0xdf85('0x3e')]!=='VIRTUAL'){var _0x48d090={};_0x48d090[_0xb9daab[_0xdf85('0x2e')]]={'$like':'%'+_0x1ad917['query'][_0xdf85('0x3c')]+'%'};return _0x48d090;}})});}_0x481cf7=_[_0xdf85('0x3d')]({},_0x481cf7,_0x1ad917[_0xdf85('0x3f')]);var _0x4d63f3={'where':_0x481cf7[_0xdf85('0x3a')]};return db[_0xdf85('0x2b')][_0xdf85('0x23')](_0x4d63f3)[_0xdf85('0x27')](function(_0x16790b){_0x544242['count']=_0x16790b;if(_0x1ad917[_0xdf85('0x2f')]['includeAll']){_0x481cf7[_0xdf85('0x40')]=[{'all':!![]}];}return db[_0xdf85('0x2b')][_0xdf85('0x41')](_0x481cf7);})[_0xdf85('0x27')](function(_0x3aa0a2){_0x544242[_0xdf85('0x42')]=_0x3aa0a2;return _0x544242;})['then'](respondWithFilteredResult(_0x3eaf79,_0x481cf7))['catch'](handleError(_0x3eaf79,null));};exports[_0xdf85('0x43')]=function(_0x3c025f,_0x47ba5f){var _0x370e3c={'raw':![],'where':{'id':_0x3c025f[_0xdf85('0x44')]['id']}},_0x2c40fc={};_0x2c40fc[_0xdf85('0x33')]=_[_0xdf85('0x30')](db[_0xdf85('0x2b')][_0xdf85('0x2c')]);_0x2c40fc[_0xdf85('0x2f')]=_[_0xdf85('0x30')](_0x3c025f[_0xdf85('0x2f')]);_0x2c40fc['filters']=_['intersection'](_0x2c40fc[_0xdf85('0x33')],_0x2c40fc['query']);_0x370e3c[_0xdf85('0x34')]=_['intersection'](_0x2c40fc[_0xdf85('0x33')],qs['fields'](_0x3c025f['query'][_0xdf85('0x45')]));_0x370e3c['attributes']=_0x370e3c[_0xdf85('0x34')]['length']?_0x370e3c[_0xdf85('0x34')]:_0x2c40fc[_0xdf85('0x33')];if(_0x3c025f['query']['includeAll']){_0x370e3c[_0xdf85('0x40')]=[{'all':!![]}];}_0x370e3c=_[_0xdf85('0x3d')]({},_0x370e3c,_0x3c025f['options']);return db[_0xdf85('0x2b')][_0xdf85('0x46')](_0x370e3c)[_0xdf85('0x27')](handleEntityNotFound(_0x47ba5f,null))[_0xdf85('0x27')](respondWithResult(_0x47ba5f,null))[_0xdf85('0x47')](handleError(_0x47ba5f,null));};exports[_0xdf85('0x48')]=function(_0x34f8fa,_0x51441c){return db['Team'][_0xdf85('0x48')](_0x34f8fa['body'],{})[_0xdf85('0x27')](function(_0x320faa){var _0x170915=_0x34f8fa[_0xdf85('0x49')][_0xdf85('0x4a')]({'plain':!![]});if(!_0x170915)throw new Error(_0xdf85('0x4b'));if(_0x170915[_0xdf85('0x4c')]===_0xdf85('0x49')){var _0x5355ba=_0x320faa[_0xdf85('0x4a')]({'plain':!![]});var _0x31786e=_0xdf85('0x4d');return db[_0xdf85('0x4e')]['find']({'where':{'name':_0x31786e,'userProfileId':_0x170915['userProfileId']},'raw':!![]})[_0xdf85('0x27')](function(_0x59b309){if(_0x59b309&&_0x59b309[_0xdf85('0x4f')]===0x0){return db[_0xdf85('0x50')]['create']({'name':_0x5355ba['name'],'resourceId':_0x5355ba['id'],'type':_0x59b309['name'],'sectionId':_0x59b309['id']},{})[_0xdf85('0x27')](function(){return _0x320faa;});}else{return _0x320faa;}})[_0xdf85('0x47')](function(_0x302a0e){logger[_0xdf85('0x28')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x302a0e);throw _0x302a0e;});}return _0x320faa;})[_0xdf85('0x27')](respondWithResult(_0x51441c,0xc9))[_0xdf85('0x47')](handleError(_0x51441c,null));};exports[_0xdf85('0x51')]=function(_0xb206c6,_0x423a61){if(_0xb206c6[_0xdf85('0x52')]['id']){delete _0xb206c6['body']['id'];}return db[_0xdf85('0x2b')][_0xdf85('0x46')]({'where':{'id':_0xb206c6[_0xdf85('0x44')]['id']}})[_0xdf85('0x27')](handleEntityNotFound(_0x423a61,null))[_0xdf85('0x27')](saveUpdates(_0xb206c6[_0xdf85('0x52')],null))[_0xdf85('0x27')](respondWithResult(_0x423a61,null))[_0xdf85('0x47')](handleError(_0x423a61,null));};exports['destroy']=function(_0x1925af,_0x2a4dc7){var _0x19987f=_0x1925af['params']['id'];var _0x3a03b6=[];return db[_0xdf85('0x53')][_0xdf85('0x54')](function(_0x3a0128){var _0x136b15=_0xdf85('0x55')+_0x19987f;return db['sequelize'][_0xdf85('0x2f')](_0x136b15,{'type':db[_0xdf85('0x56')][_0xdf85('0x57')][_0xdf85('0x58')],'raw':!![],'transaction':_0x3a0128})[_0xdf85('0x27')](function(_0x48b26f){_0x3a03b6=_[_0xdf85('0x2a')](_0x48b26f,function(_0x2124c5){return Number(_0x2124c5[_0xdf85('0x59')]);});})[_0xdf85('0x27')](function(){var _0x37a4f0=_0xdf85('0x5a')+_0x19987f;return db[_0xdf85('0x53')][_0xdf85('0x2f')](_0x37a4f0,{'type':db[_0xdf85('0x56')][_0xdf85('0x57')][_0xdf85('0x58')],'raw':!![],'transaction':_0x3a0128});})['then'](function(_0x2d04ff){var _0x4e5993=_['map'](_0x2d04ff,function(_0x2a1605){return Number(_0x2a1605[_0xdf85('0x5b')]);});return db['UserVoiceQueue']['destroy']({'where':{'UserId':{'$in':_0x3a03b6},'VoiceQueueId':{'$in':_0x4e5993}},'transaction':_0x3a0128});})[_0xdf85('0x27')](function(){var _0x3039fc=_0xdf85('0x5c')+_0x19987f;return db[_0xdf85('0x53')][_0xdf85('0x2f')](_0x3039fc,{'type':db[_0xdf85('0x56')][_0xdf85('0x57')][_0xdf85('0x58')],'raw':!![],'transaction':_0x3a0128});})[_0xdf85('0x27')](function(_0x187700){var _0x1d7ebc=_[_0xdf85('0x2a')](_0x187700,function(_0xaa633c){return Number(_0xaa633c['MailQueueId']);});return db[_0xdf85('0x5d')]['destroy']({'where':{'UserId':{'$in':_0x3a03b6},'MailQueueId':{'$in':_0x1d7ebc}},'transaction':_0x3a0128});})[_0xdf85('0x27')](function(){var _0x724284=_0xdf85('0x5e')+_0x19987f;return db[_0xdf85('0x53')][_0xdf85('0x2f')](_0x724284,{'type':db['Sequelize'][_0xdf85('0x57')][_0xdf85('0x58')],'raw':!![],'transaction':_0x3a0128});})[_0xdf85('0x27')](function(_0x1b7305){var _0x267b35=_[_0xdf85('0x2a')](_0x1b7305,function(_0x2c2284){return Number(_0x2c2284[_0xdf85('0x5f')]);});return db['UserSmsQueue']['destroy']({'where':{'UserId':{'$in':_0x3a03b6},'SmsQueueId':{'$in':_0x267b35}},'transaction':_0x3a0128});})[_0xdf85('0x27')](function(){var _0x4e10b1=_0xdf85('0x60')+_0x19987f;return db[_0xdf85('0x53')][_0xdf85('0x2f')](_0x4e10b1,{'type':db[_0xdf85('0x56')]['QueryTypes'][_0xdf85('0x58')],'raw':!![],'transaction':_0x3a0128});})[_0xdf85('0x27')](function(_0x575712){var _0xf3ba66=_['map'](_0x575712,function(_0x5bfea1){return Number(_0x5bfea1[_0xdf85('0x61')]);});return db[_0xdf85('0x62')][_0xdf85('0x63')]({'where':{'UserId':{'$in':_0x3a03b6},'ChatQueueId':{'$in':_0xf3ba66}},'transaction':_0x3a0128});})[_0xdf85('0x27')](function(){var _0x235cc6='SELECT\x20FaxQueueId\x20FROM\x20team_has_fax_queues\x20WHERE\x20TeamId\x20=\x20'+_0x19987f;return db['sequelize']['query'](_0x235cc6,{'type':db['Sequelize'][_0xdf85('0x57')][_0xdf85('0x58')],'raw':!![],'transaction':_0x3a0128});})['then'](function(_0x5b1932){var _0xc75bda=_[_0xdf85('0x2a')](_0x5b1932,function(_0x13ec6f){return Number(_0x13ec6f['FaxQueueId']);});return db[_0xdf85('0x64')][_0xdf85('0x63')]({'where':{'UserId':{'$in':_0x3a03b6},'FaxQueueId':{'$in':_0xc75bda}},'transaction':_0x3a0128});})[_0xdf85('0x27')](function(){var _0x353d74=_0xdf85('0x65')+_0x19987f;return db[_0xdf85('0x53')][_0xdf85('0x2f')](_0x353d74,{'type':db[_0xdf85('0x56')][_0xdf85('0x57')][_0xdf85('0x58')],'raw':!![],'transaction':_0x3a0128});})[_0xdf85('0x27')](function(_0x7bef8d){var _0x302579=_[_0xdf85('0x2a')](_0x7bef8d,function(_0x386f71){return Number(_0x386f71[_0xdf85('0x66')]);});return db[_0xdf85('0x67')][_0xdf85('0x63')]({'where':{'UserId':{'$in':_0x3a03b6},'OpenchannelQueueId':{'$in':_0x302579}},'transaction':_0x3a0128});})['then'](function(){var _0x2b9eab=_0xdf85('0x68')+_0x19987f;return db[_0xdf85('0x53')][_0xdf85('0x2f')](_0x2b9eab,{'type':db[_0xdf85('0x56')][_0xdf85('0x57')][_0xdf85('0x58')],'raw':!![],'transaction':_0x3a0128});})['then'](function(_0x316229){var _0x4f454c=_[_0xdf85('0x2a')](_0x316229,function(_0x558ed6){return Number(_0x558ed6['WhatsappQueueId']);});return db[_0xdf85('0x69')][_0xdf85('0x63')]({'where':{'UserId':{'$in':_0x3a03b6},'WhatsappQueueId':{'$in':_0x4f454c}},'transaction':_0x3a0128});})['then'](function(){return db[_0xdf85('0x6a')][_0xdf85('0x46')]({'where':{'TeamId':_0x19987f}});})[_0xdf85('0x27')](function(_0x496ec9){if(_0x496ec9===null){return;}return db[_0xdf85('0x6b')][_0xdf85('0x63')]({'where':{'UserId':{'$in':_0x3a03b6},'VoicePrefixId':_0x496ec9[_0xdf85('0x6c')]},'transaction':_0x3a0128});})[_0xdf85('0x27')](function(){return db[_0xdf85('0x2b')][_0xdf85('0x63')]({'where':{'id':_0x19987f},'cascade':!![],'transaction':_0x3a0128});})[_0xdf85('0x27')](function(_0x1fa3ad){if(_0x1fa3ad===0x0){_0x2a4dc7[_0xdf85('0x1d')](0x194);}else{return db[_0xdf85('0x50')][_0xdf85('0x63')]({'where':{'type':_0xdf85('0x4d'),'resourceId':_0x19987f},'cascade':!![],'transaction':_0x3a0128})[_0xdf85('0x27')](function(){_0x2a4dc7[_0xdf85('0x1f')](0xcc)[_0xdf85('0x1e')]();});}})[_0xdf85('0x47')](function(_0x1dd34f){_0x2a4dc7[_0xdf85('0x1f')](0x1f4)['send'](_0x1dd34f);});});};exports[_0xdf85('0x6d')]=function(_0xa28a52,_0x440f13,_0x48c769){return db[_0xdf85('0x2b')]['findOne']({'where':{'id':_0xa28a52[_0xdf85('0x44')]['id']}})[_0xdf85('0x27')](handleEntityNotFound(_0x440f13,null))[_0xdf85('0x27')](function(_0x153409){if(!_0xa28a52[_0xdf85('0x2f')][_0xdf85('0x6e')]||!utils['isValidChannel'](_0xa28a52['query'][_0xdf85('0x6e')])){throw new db[(_0xdf85('0x56'))]['ValidationError'](_0xdf85('0x6f'));}var _0x1e6f6a={};var _0x5e4ea1={};_0x5e4ea1[_0xdf85('0x33')]=_[_0xdf85('0x30')](db[_[_0xdf85('0x70')](_0xa28a52[_0xdf85('0x2f')]['channel'][_0xdf85('0x71')]())+'Queue'][_0xdf85('0x2c')]);_0x5e4ea1[_0xdf85('0x2f')]=_['keys'](_0xa28a52[_0xdf85('0x2f')]);_0x5e4ea1[_0xdf85('0x31')]=_['intersection'](_0x5e4ea1[_0xdf85('0x33')],_0x5e4ea1['query']);_0x1e6f6a[_0xdf85('0x34')]=_[_0xdf85('0x32')](_0x5e4ea1[_0xdf85('0x33')],qs[_0xdf85('0x45')](_0xa28a52[_0xdf85('0x2f')][_0xdf85('0x45')]));_0x1e6f6a['attributes']=_0x1e6f6a[_0xdf85('0x34')][_0xdf85('0x72')]?_0x1e6f6a[_0xdf85('0x34')]:_0x5e4ea1[_0xdf85('0x33')];_0x1e6f6a[_0xdf85('0x37')]=qs[_0xdf85('0x37')](_0xa28a52[_0xdf85('0x2f')]['limit']);_0x1e6f6a['offset']=qs[_0xdf85('0x21')](_0xa28a52[_0xdf85('0x2f')][_0xdf85('0x21')]);_0x1e6f6a[_0xdf85('0x38')]=qs['sort'](_0xa28a52[_0xdf85('0x2f')][_0xdf85('0x39')]);_0x1e6f6a['where']=qs[_0xdf85('0x31')](_[_0xdf85('0x3b')](_0xa28a52[_0xdf85('0x2f')],_0x5e4ea1[_0xdf85('0x31')]));_0x1e6f6a=_[_0xdf85('0x3d')]({},_0x1e6f6a,_0xa28a52[_0xdf85('0x3f')]);return _0x153409[_0xdf85('0x4a')+_['capitalize'](_0xa28a52[_0xdf85('0x2f')]['channel']['toLowerCase']())+'Queues'](_0x1e6f6a);})[_0xdf85('0x27')](respondWithResult(_0x440f13,null))[_0xdf85('0x47')](handleError(_0x440f13,null));};exports[_0xdf85('0x73')]=function(_0xa55d8b,_0x469876,_0x4200fe){return db[_0xdf85('0x2b')][_0xdf85('0x74')]({'where':{'id':_0xa55d8b['params']['id']}})[_0xdf85('0x27')](function(_0x27f570){if(_0x27f570){if(!_0xa55d8b[_0xdf85('0x52')]['channel']||!utils[_0xdf85('0x75')](_0xa55d8b[_0xdf85('0x52')][_0xdf85('0x6e')])){throw new db[(_0xdf85('0x56'))][(_0xdf85('0x76'))](_0xdf85('0x6f'));}return _0x27f570[_0xdf85('0x77')+_[_0xdf85('0x70')](_0xa55d8b[_0xdf85('0x52')]['channel'][_0xdf85('0x71')]())+_0xdf85('0x78')](_0xa55d8b['body']['ids']);}return null;})[_0xdf85('0x27')](handleEntityNotFound(_0x469876,null))[_0xdf85('0x27')](respondWithStatusCode(_0x469876,null))[_0xdf85('0x47')](handleError(_0x469876,null));};exports[_0xdf85('0x79')]=function(_0x56d52d,_0x2f86fe,_0x5f2b98){return db[_0xdf85('0x2b')]['findOne']({'where':{'id':_0x56d52d[_0xdf85('0x44')]['id']}})[_0xdf85('0x27')](function(_0x2bce75){if(_0x2bce75){if(!_0x56d52d[_0xdf85('0x2f')]['channel']||!utils['isValidChannel'](_0x56d52d['query'][_0xdf85('0x6e')])){throw new db[(_0xdf85('0x56'))][(_0xdf85('0x76'))](_0xdf85('0x6f'));}return _0x2bce75[_0xdf85('0x7a')+_[_0xdf85('0x70')](_0x56d52d[_0xdf85('0x2f')][_0xdf85('0x6e')]['toLowerCase']())+_0xdf85('0x78')](_0x56d52d['query']['ids']);}return null;})[_0xdf85('0x27')](handleEntityNotFound(_0x2f86fe,null))['then'](respondWithStatusCode(_0x2f86fe,null))['catch'](handleError(_0x2f86fe,null));};exports[_0xdf85('0x7b')]=function(_0x5cc362,_0x2d7124){var _0x2c7227=_[_0xdf85('0x7c')](_0x5cc362[_0xdf85('0x52')]['ids'])?_0x5cc362[_0xdf85('0x52')]['ids']:[_0x5cc362['body'][_0xdf85('0x7d')]];var _0xa8a0f0=_0x5cc362[_0xdf85('0x44')]['id'];return db['Team']['find']({'where':{'id':_0xa8a0f0}})[_0xdf85('0x27')](handleEntityNotFound(_0x2d7124,null))['then'](function(_0x1768c2){if(_0x1768c2){var _0xab18b7=[_0xdf85('0x7e'),_0xdf85('0x7f'),_0xdf85('0x80'),_0xdf85('0x81'),_0xdf85('0x82'),_0xdf85('0x83'),_0xdf85('0x84')];return db[_0xdf85('0x53')]['transaction'](function(_0x41c44f){var _0x483490=_[_0xdf85('0x2a')](_0xab18b7,function(_0x382cfe){var _0x1b9099={'attributes':['id','name']};if(_0x382cfe===_0xdf85('0x7e')){_0x1b9099[_0xdf85('0x85')]={'attributes':['penalty']};}return _0x1768c2[_0xdf85('0x4a')+_0x382cfe+_0xdf85('0x78')](_0x1b9099)[_0xdf85('0x27')](function(_0x54bcc4){var _0xd4df20=_[_0xdf85('0x2a')](_0x54bcc4,function(_0x3eb583){var _0x4f64e1=_[_0xdf85('0x2a')](_0x2c7227,function(_0x51655c){var _0x188482={'where':{'UserId':_0x51655c,[_0x382cfe+_0xdf85('0x86')]:_0x3eb583['id']},'transaction':_0x41c44f};if(_0x382cfe===_0xdf85('0x7e')){_0x188482[_0xdf85('0x87')]={'penalty':_0x3eb583['TeamVoiceQueue'][_0xdf85('0x88')]};}return db[_0xdf85('0x89')+_0x382cfe+_0xdf85('0x8a')][_0xdf85('0x8b')](_0x188482)[_0xdf85('0x27')](function(){socket[_0xdf85('0x8c')](_0xdf85('0x49')+_0x382cfe+_0xdf85('0x8d'),{'UserId':_0x51655c,[_0x382cfe+_0xdf85('0x86')]:_0x3eb583['id']});if(_0x382cfe!==_0xdf85('0x7e')){return;}return db['User'][_0xdf85('0x41')]({'where':{'id':_0x2c7227,'online':0x1},'attributes':['id','name',_0xdf85('0x8e'),'voicePause','interface'],'raw':!![]})['then'](function(_0x25dff8){var _0x41a16b=_['map'](_0x25dff8,function(_0x11168c){return db['UserVoiceQueueRt'][_0xdf85('0x8f')]({'membername':_0x11168c[_0xdf85('0x2e')],'UserId':_0x11168c['id'],'queue_name':_0x3eb583['name'],'VoiceQueueId':_0x3eb583['id'],'interface':_[_0xdf85('0x90')](_0x11168c[_0xdf85('0x91')])?util[_0xdf85('0x92')]('SIP/%s',_0x11168c[_0xdf85('0x2e')]):_0x11168c['interface'],'paused':_0x11168c[_0xdf85('0x93')]||![],'penalty':_0x3eb583[_0xdf85('0x94')][_0xdf85('0x88')]},{'transaction':_0x41c44f});});return Promise[_0xdf85('0x95')](_0x41a16b);});});});return Promise[_0xdf85('0x95')](_0x4f64e1);});return Promise[_0xdf85('0x95')](_0xd4df20);})[_0xdf85('0x27')](function(){return db[_0xdf85('0x6a')][_0xdf85('0x74')]({'where':{'teamId':_0xa8a0f0}})['then'](function(_0x30a505){if(_0x30a505){var _0x5bee18=_['map'](_0x2c7227,function(_0x6e46f1){db[_0xdf85('0x6b')]['upsert']({'UserId':_0x6e46f1,'VoicePrefixId':_0x30a505['VoicePrefixId']});});return Promise['all'](_0x5bee18);}});});});return Promise[_0xdf85('0x95')](_0x483490)[_0xdf85('0x27')](function(){return _0x1768c2[_0xdf85('0x7b')](_0x2c7227,{'transaction':_0x41c44f})[_0xdf85('0x96')](function(_0x186421){return _0x186421;});});});}})['then'](respondWithResult(_0x2d7124,null))[_0xdf85('0x47')](handleError(_0x2d7124,null));};exports[_0xdf85('0x97')]=function(_0x2d8e54,_0x141506){var _0x275d6b=_['isArray'](_0x2d8e54['query'][_0xdf85('0x7d')])?_0x2d8e54[_0xdf85('0x2f')][_0xdf85('0x7d')]:[_0x2d8e54[_0xdf85('0x2f')][_0xdf85('0x7d')]];var _0x3c3db5=_0x2d8e54['params']['id'];return db['Team'][_0xdf85('0x46')]({'where':{'id':_0x3c3db5}})[_0xdf85('0x27')](handleEntityNotFound(_0x141506,null))[_0xdf85('0x27')](function(_0x137423){if(_0x137423){var _0x389f57=[_0xdf85('0x7e'),_0xdf85('0x7f'),_0xdf85('0x80'),_0xdf85('0x81'),_0xdf85('0x82'),_0xdf85('0x83'),_0xdf85('0x84')];return db['sequelize'][_0xdf85('0x54')](function(_0x3e380d){var _0x536f07=_[_0xdf85('0x2a')](_0x389f57,function(_0x1b9c06){var _0x43819b={'attributes':['id','name']};return _0x137423['get'+_0x1b9c06+_0xdf85('0x78')](_0x43819b)[_0xdf85('0x27')](function(_0x4e3327){var _0xb76900=_['map'](_0x4e3327,function(_0x59c361){return _0x59c361['removeAgents'](_0x275d6b,{'transaction':_0x3e380d})[_0xdf85('0x27')](function(){var _0x96b74b=_['map'](_0x275d6b,function(_0x48c385){socket[_0xdf85('0x8c')]('user'+_0x1b9c06+_0xdf85('0x98'),{'UserId':Number(_0x48c385),[_0x1b9c06+_0xdf85('0x86')]:_0x59c361['id']});if(_0x1b9c06!==_0xdf85('0x7e')){return;}return db[_0xdf85('0x99')][_0xdf85('0x63')]({'where':{'VoiceQueueId':_0x59c361['id'],'UserId':_0x48c385},'transaction':_0x3e380d});});return Promise[_0xdf85('0x95')](_0x96b74b);});});return Promise[_0xdf85('0x95')](_0xb76900);});});return Promise[_0xdf85('0x95')](_0x536f07)[_0xdf85('0x27')](function(){return _0x137423[_0xdf85('0x97')](_0x275d6b,{'transaction':_0x3e380d});})[_0xdf85('0x27')](function(){return db['TeamVoicePrefix'][_0xdf85('0x74')]({'where':{'teamId':_0x3c3db5}})['then'](function(_0x469661){if(_0x469661){var _0x237b62=_['map'](_0x275d6b,function(_0x311d2a){db['UserVoicePrefix'][_0xdf85('0x63')]({'where':{'UserId':_0x311d2a,'VoicePrefixId':_0x469661[_0xdf85('0x6c')]}});});return Promise['all'](_0x237b62);}});});});}})[_0xdf85('0x27')](respondWithStatusCode(_0x141506,null))[_0xdf85('0x47')](handleError(_0x141506,null));};exports[_0xdf85('0x9a')]=function(_0x4b0729,_0x338781,_0x2fa938){var _0x5ebc81={};var _0x5c93cf={};var _0x19964b;var _0x2e54e3;return db[_0xdf85('0x2b')]['findOne']({'where':{'id':_0x4b0729[_0xdf85('0x44')]['id']}})['then'](handleEntityNotFound(_0x338781,null))[_0xdf85('0x27')](function(_0x2a7654){if(_0x2a7654){_0x19964b=_0x2a7654;_0x5c93cf[_0xdf85('0x33')]=_[_0xdf85('0x30')](db[_0xdf85('0x89')][_0xdf85('0x2c')]);_0x5c93cf[_0xdf85('0x2f')]=_[_0xdf85('0x30')](_0x4b0729[_0xdf85('0x2f')]);_0x5c93cf[_0xdf85('0x31')]=_[_0xdf85('0x32')](_0x5c93cf['model'],_0x5c93cf[_0xdf85('0x2f')]);_0x5ebc81[_0xdf85('0x34')]=_[_0xdf85('0x32')](_0x5c93cf[_0xdf85('0x33')],qs[_0xdf85('0x45')](_0x4b0729[_0xdf85('0x2f')][_0xdf85('0x45')]));_0x5ebc81[_0xdf85('0x34')]=_0x5ebc81[_0xdf85('0x34')][_0xdf85('0x72')]?_0x5ebc81[_0xdf85('0x34')]:_0x5c93cf[_0xdf85('0x33')];_0x5ebc81[_0xdf85('0x38')]=qs[_0xdf85('0x39')](_0x4b0729[_0xdf85('0x2f')][_0xdf85('0x39')]);_0x5ebc81[_0xdf85('0x3a')]=qs[_0xdf85('0x31')](_[_0xdf85('0x3b')](_0x4b0729['query'],_0x5c93cf['filters']));if(_0x4b0729[_0xdf85('0x2f')][_0xdf85('0x3c')]){_0x5ebc81[_0xdf85('0x3a')]=_[_0xdf85('0x3d')](_0x5ebc81['where'],{'$or':_[_0xdf85('0x2a')](_0x5ebc81[_0xdf85('0x34')],function(_0x3f7c26){var _0x579ad8={};_0x579ad8[_0x3f7c26]={'$like':'%'+_0x4b0729[_0xdf85('0x2f')][_0xdf85('0x3c')]+'%'};return _0x579ad8;})});}_0x5ebc81=_[_0xdf85('0x3d')]({},_0x5ebc81,_0x4b0729['options']);return _0x19964b[_0xdf85('0x9a')](_0x5ebc81);}})['then'](function(_0x302bba){if(_0x302bba){_0x2e54e3=_0x302bba[_0xdf85('0x72')];if(!_0x4b0729[_0xdf85('0x2f')]['hasOwnProperty']('nolimit')){_0x5ebc81[_0xdf85('0x37')]=qs[_0xdf85('0x37')](_0x4b0729['query']['limit']);_0x5ebc81['offset']=qs[_0xdf85('0x21')](_0x4b0729[_0xdf85('0x2f')]['offset']);}return _0x19964b[_0xdf85('0x9a')](_0x5ebc81);}})['then'](function(_0x3b955c){if(_0x3b955c){return _0x3b955c?{'count':_0x2e54e3,'rows':_0x3b955c}:null;}})[_0xdf85('0x27')](respondWithResult(_0x338781,null))[_0xdf85('0x47')](handleError(_0x338781,null));};
\ No newline at end of file
index 2f486e7..a108d43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacb3=['hasOwnProperty','exports','Team','setMaxListeners','remove','emit'];(function(_0x45eb65,_0xf7ff56){var _0x595cf3=function(_0x152153){while(--_0x152153){_0x45eb65['push'](_0x45eb65['shift']());}};_0x595cf3(++_0xf7ff56);}(_0xacb3,0x8c));var _0x3acb=function(_0x2d05fa,_0x372364){_0x2d05fa=_0x2d05fa-0x0;var _0x10ae61=_0xacb3[_0x2d05fa];return _0x10ae61;};'use strict';var EventEmitter=require('events');var Team=require('../../mysqldb')['db'][_0x3acb('0x0')];var TeamEvents=new EventEmitter();TeamEvents[_0x3acb('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x3acb('0x2')};function emitEvent(_0x122d37){return function(_0x59fbb4,_0x3f7d76,_0x2c87f9){TeamEvents['emit'](_0x122d37+':'+_0x59fbb4['id'],_0x59fbb4);TeamEvents[_0x3acb('0x3')](_0x122d37,_0x59fbb4);_0x2c87f9(null);};}for(var e in events){if(events[_0x3acb('0x4')](e)){var event=events[e];Team['hook'](e,emitEvent(event));}}module[_0x3acb('0x5')]=TeamEvents;
\ No newline at end of file
+var _0x187f=['../../mysqldb','Team','save','update','hook','exports'];(function(_0x3050b5,_0x182c6a){var _0x37cceb=function(_0x49b797){while(--_0x49b797){_0x3050b5['push'](_0x3050b5['shift']());}};_0x37cceb(++_0x182c6a);}(_0x187f,0x6c));var _0xf187=function(_0x2eb10c,_0xb71992){_0x2eb10c=_0x2eb10c-0x0;var _0xf3fa60=_0x187f[_0x2eb10c];return _0xf3fa60;};'use strict';var EventEmitter=require('events');var Team=require(_0xf187('0x0'))['db'][_0xf187('0x1')];var TeamEvents=new EventEmitter();TeamEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xf187('0x2'),'afterUpdate':_0xf187('0x3'),'afterDestroy':'remove'};function emitEvent(_0x532a80){return function(_0x1d12a6,_0x1a0859,_0x1f9d1d){TeamEvents['emit'](_0x532a80+':'+_0x1d12a6['id'],_0x1d12a6);TeamEvents['emit'](_0x532a80,_0x1d12a6);_0x1f9d1d(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];Team[_0xf187('0x4')](e,emitEvent(event));}}module[_0xf187('0x5')]=TeamEvents;
\ No newline at end of file
index 6f40c44..1076018 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa955=['util','../../config/logger','moment','bluebird','rimraf','../../config/environment','./team.attributes','exports','define','Team'];(function(_0x46a00c,_0x57cd8a){var _0x247873=function(_0x4edc83){while(--_0x4edc83){_0x46a00c['push'](_0x46a00c['shift']());}};_0x247873(++_0x57cd8a);}(_0xa955,0x96));var _0x5a95=function(_0x3c5728,_0x452d1f){_0x3c5728=_0x3c5728-0x0;var _0x4fb03e=_0xa955[_0x3c5728];return _0x4fb03e;};'use strict';var _=require('lodash');var util=require(_0x5a95('0x0'));var logger=require(_0x5a95('0x1'))('api');var moment=require(_0x5a95('0x2'));var BPromise=require(_0x5a95('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x5a95('0x4'));var config=require(_0x5a95('0x5'));var attributes=require(_0x5a95('0x6'));module[_0x5a95('0x7')]=function(_0xe772cb,_0x36c646){return _0xe772cb[_0x5a95('0x8')](_0x5a95('0x9'),attributes,{'tableName':'teams','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6f4e=['channel','catch','exports','define','Team','teams','Chat','Fax','Mail','Openchannel','Sms','Voice','Whatsapp','resolve','all','lodash','./team.attributes','get','then','map','setDataValue'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x6f4e,0xf6));var _0xe6f4=function(_0x1dd2a6,_0x3addc8){_0x1dd2a6=_0x1dd2a6-0x0;var _0x17aafa=_0x6f4e[_0x1dd2a6];return _0x17aafa;};'use strict';var _=require(_0xe6f4('0x0'));var attributes=require(_0xe6f4('0x1'));function getQueuesByChannel(_0x618176,_0x55874c){var _0x53ec24=_0xe6f4('0x2')+_0x55874c+'Queues';return _0x618176[_0x53ec24]()[_0xe6f4('0x3')](function(_0x5dd7c2){return _[_0xe6f4('0x4')](_0x5dd7c2,function(_0x5abb8b){_0x5abb8b[_0xe6f4('0x5')](_0xe6f4('0x6'),_0x55874c);return _0x5abb8b;});})[_0xe6f4('0x7')](function(_0x1271db){throw _0x1271db;});}module[_0xe6f4('0x8')]=function(_0x2baa7f){return _0x2baa7f[_0xe6f4('0x9')](_0xe6f4('0xa'),attributes,{'tableName':_0xe6f4('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'getAssociatedQueues':function(){var _0x4b93ac=this;var _0x3ced58=[_0xe6f4('0xc'),_0xe6f4('0xd'),_0xe6f4('0xe'),_0xe6f4('0xf'),_0xe6f4('0x10'),_0xe6f4('0x11'),_0xe6f4('0x12')];return Promise[_0xe6f4('0x13')]()[_0xe6f4('0x3')](function(){var _0x3e0f40=_[_0xe6f4('0x4')](_0x3ced58,function(_0x2c9f58){return getQueuesByChannel(_0x4b93ac,_0x2c9f58);});return Promise[_0xe6f4('0x14')](_0x3e0f40);})[_0xe6f4('0x7')](function(_0x18f9a8){throw _0x18f9a8;});}}});};
\ No newline at end of file
index 3208163..205847b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7625=['../../config/utils','../../config/logger','../../config/environment','redis','defaults','./team.socket','then','info','Team,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb'];(function(_0x2b0a86,_0x2ecebd){var _0x955940=function(_0x1988f8){while(--_0x1988f8){_0x2b0a86['push'](_0x2b0a86['shift']());}};_0x955940(++_0x2ecebd);}(_0x7625,0x87));var _0x5762=function(_0x2be8c2,_0x14a4b5){_0x2be8c2=_0x2be8c2-0x0;var _0x97f531=_0x7625[_0x2be8c2];return _0x97f531;};'use strict';var _=require(_0x5762('0x0'));var util=require('util');var moment=require(_0x5762('0x1'));var BPromise=require(_0x5762('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x5762('0x3'));var db=require(_0x5762('0x4'))['db'];var utils=require(_0x5762('0x5'));var logger=require(_0x5762('0x6'))('rpc');var config=require(_0x5762('0x7'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});config[_0x5762('0x8')]=_[_0x5762('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x5762('0x8')]));require(_0x5762('0xa'))['register'](socket);function respondWithRpcPromise(_0x19c843,_0x568455,_0x1656e8){return new BPromise(function(_0x4b536f,_0x411174){return client['request'](_0x19c843,_0x1656e8)[_0x5762('0xb')](function(_0x4eb641){logger[_0x5762('0xc')](_0x5762('0xd'),_0x568455,_0x5762('0xe'));logger['debug']('Team,\x20%s,\x20%s,\x20%s',_0x568455,_0x5762('0xe'),JSON[_0x5762('0xf')](_0x4eb641));if(_0x4eb641[_0x5762('0x10')]){if(_0x4eb641[_0x5762('0x10')]['code']===0x1f4){logger[_0x5762('0x10')]('Team,\x20%s,\x20%s',_0x568455,_0x4eb641[_0x5762('0x10')][_0x5762('0x11')]);return _0x411174(_0x4eb641['error'][_0x5762('0x11')]);}logger['error'](_0x5762('0xd'),_0x568455,_0x4eb641[_0x5762('0x10')][_0x5762('0x11')]);return _0x4b536f(_0x4eb641['error']['message']);}else{logger['info'](_0x5762('0xd'),_0x568455,_0x5762('0xe'));_0x4b536f(_0x4eb641[_0x5762('0x12')]['message']);}})[_0x5762('0x13')](function(_0x4232fc){logger[_0x5762('0x10')](_0x5762('0xd'),_0x568455,_0x4232fc);_0x411174(_0x4232fc);});});}
\ No newline at end of file
+var _0xdc4d=['ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./team.socket','register','request','info','Team,\x20%s,\x20%s','debug','Team,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','util','bluebird','randomstring'];(function(_0x4099c0,_0x30cf4c){var _0x320746=function(_0x528a6a){while(--_0x528a6a){_0x4099c0['push'](_0x4099c0['shift']());}};_0x320746(++_0x30cf4c);}(_0xdc4d,0x129));var _0xddc4=function(_0x1e3614,_0x4634da){_0x1e3614=_0x1e3614-0x0;var _0x1d9a4f=_0xdc4d[_0x1e3614];return _0x1d9a4f;};'use strict';var _=require('lodash');var util=require(_0xddc4('0x0'));var moment=require('moment');var BPromise=require(_0xddc4('0x1'));var rs=require(_0xddc4('0x2'));var fs=require('fs');var Redis=require(_0xddc4('0x3'));var db=require(_0xddc4('0x4'))['db'];var utils=require(_0xddc4('0x5'));var logger=require(_0xddc4('0x6'))(_0xddc4('0x7'));var config=require(_0xddc4('0x8'));var jayson=require(_0xddc4('0x9'));var client=jayson[_0xddc4('0xa')][_0xddc4('0xb')]({'port':0x232a});config[_0xddc4('0xc')]=_[_0xddc4('0xd')](config[_0xddc4('0xc')],{'host':_0xddc4('0xe'),'port':0x18eb});var socket=require(_0xddc4('0xf'))(new Redis(config[_0xddc4('0xc')]));require(_0xddc4('0x10'))[_0xddc4('0x11')](socket);function respondWithRpcPromise(_0x5978b4,_0x127cd7,_0xd263fb){return new BPromise(function(_0x3b6dc0,_0xc7fb68){return client[_0xddc4('0x12')](_0x5978b4,_0xd263fb)['then'](function(_0x22f0a6){logger[_0xddc4('0x13')](_0xddc4('0x14'),_0x127cd7,'request\x20sent');logger[_0xddc4('0x15')](_0xddc4('0x16'),_0x127cd7,_0xddc4('0x17'),JSON[_0xddc4('0x18')](_0x22f0a6));if(_0x22f0a6[_0xddc4('0x19')]){if(_0x22f0a6[_0xddc4('0x19')][_0xddc4('0x1a')]===0x1f4){logger[_0xddc4('0x19')](_0xddc4('0x14'),_0x127cd7,_0x22f0a6['error'][_0xddc4('0x1b')]);return _0xc7fb68(_0x22f0a6[_0xddc4('0x19')][_0xddc4('0x1b')]);}logger[_0xddc4('0x19')](_0xddc4('0x14'),_0x127cd7,_0x22f0a6['error'][_0xddc4('0x1b')]);return _0x3b6dc0(_0x22f0a6[_0xddc4('0x19')][_0xddc4('0x1b')]);}else{logger['info'](_0xddc4('0x14'),_0x127cd7,_0xddc4('0x17'));_0x3b6dc0(_0x22f0a6[_0xddc4('0x1c')][_0xddc4('0x1b')]);}})[_0xddc4('0x1d')](function(_0x1232dc){logger[_0xddc4('0x19')](_0xddc4('0x14'),_0x127cd7,_0x1232dc);_0xc7fb68(_0x1232dc);});});}
\ No newline at end of file
index ea2e17b..9955401 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc3a1=['register','length','team:','save','remove','emit'];(function(_0x211b79,_0x4de57e){var _0x2d7198=function(_0x32db90){while(--_0x32db90){_0x211b79['push'](_0x211b79['shift']());}};_0x2d7198(++_0x4de57e);}(_0xc3a1,0x11d));var _0x1c3a=function(_0x470b1b,_0x582fe0){_0x470b1b=_0x470b1b-0x0;var _0x2c9b5d=_0xc3a1[_0x470b1b];return _0x2c9b5d;};'use strict';var TeamEvents=require('./team.events');var events=[_0x1c3a('0x0'),_0x1c3a('0x1'),'update'];function createListener(_0x59ae2b,_0x21987b){return function(_0x2f2e54){_0x21987b[_0x1c3a('0x2')](_0x59ae2b,_0x2f2e54);};}function removeListener(_0x5b07d5,_0x15a1a1){return function(){TeamEvents['removeListener'](_0x5b07d5,_0x15a1a1);};}exports[_0x1c3a('0x3')]=function(_0x8d26a4){for(var _0xad51e2=0x0,_0x11024b=events[_0x1c3a('0x4')];_0xad51e2<_0x11024b;_0xad51e2++){var _0xe001bb=events[_0xad51e2];var _0x3753c9=createListener(_0x1c3a('0x5')+_0xe001bb,_0x8d26a4);TeamEvents['on'](_0xe001bb,_0x3753c9);}};
\ No newline at end of file
+var _0x8166=['emit','removeListener','register','team:','./team.events','remove','update'];(function(_0x5c5174,_0x42c27a){var _0x29a260=function(_0x137ff5){while(--_0x137ff5){_0x5c5174['push'](_0x5c5174['shift']());}};_0x29a260(++_0x42c27a);}(_0x8166,0x100));var _0x6816=function(_0x53ddab,_0x4ada9d){_0x53ddab=_0x53ddab-0x0;var _0x5819ac=_0x8166[_0x53ddab];return _0x5819ac;};'use strict';var TeamEvents=require(_0x6816('0x0'));var events=['save',_0x6816('0x1'),_0x6816('0x2')];function createListener(_0x4d53c0,_0x1461e6){return function(_0x3b45d2){_0x1461e6[_0x6816('0x3')](_0x4d53c0,_0x3b45d2);};}function removeListener(_0x254db1,_0x4e1b9c){return function(){TeamEvents[_0x6816('0x4')](_0x254db1,_0x4e1b9c);};}exports[_0x6816('0x5')]=function(_0x1fc363){for(var _0xca44d0=0x0,_0x8ef073=events['length'];_0xca44d0<_0x8ef073;_0xca44d0++){var _0x34ffac=events[_0xca44d0];var _0x14170d=createListener(_0x6816('0x6')+_0x34ffac,_0x1fc363);TeamEvents['on'](_0x34ffac,_0x14170d);}};
\ No newline at end of file
index ae89a9f..049af77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1a9c=['INTEGER'];(function(_0xcd25fd,_0x319299){var _0xdc3547=function(_0x11bab0){while(--_0x11bab0){_0xcd25fd['push'](_0xcd25fd['shift']());}};_0xdc3547(++_0x319299);}(_0x1a9c,0xff));var _0xc1a9=function(_0x135d14,_0x35da32){_0x135d14=_0x135d14-0x0;var _0xe3f9d3=_0x1a9c[_0x135d14];return _0xe3f9d3;};'use strict';var Sequelize=require('sequelize');module['exports']={'TeamId':{'type':Sequelize[_0xc1a9('0x0')]},'VoicePrefixId':{'type':Sequelize[_0xc1a9('0x0')]}};
\ No newline at end of file
+var _0x2f14=['INTEGER','exports'];(function(_0x12f8b8,_0x50e207){var _0x5ef0fa=function(_0x5c3f1b){while(--_0x5c3f1b){_0x12f8b8['push'](_0x12f8b8['shift']());}};_0x5ef0fa(++_0x50e207);}(_0x2f14,0x199));var _0x42f1=function(_0x4b263a,_0x4df51d){_0x4b263a=_0x4b263a-0x0;var _0x569f71=_0x2f14[_0x4b263a];return _0x569f71;};'use strict';var Sequelize=require('sequelize');module[_0x42f1('0x0')]={'TeamId':{'type':Sequelize[_0x42f1('0x1')]},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 41b0ca0..0704374 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb8a0=['./teamVoicePrefix.attributes','exports','define','TeamVoicePrefix','team_has_voice_prefixes','../../config/logger','api','bluebird'];(function(_0x204836,_0x34d172){var _0x335884=function(_0x4e8e65){while(--_0x4e8e65){_0x204836['push'](_0x204836['shift']());}};_0x335884(++_0x34d172);}(_0xb8a0,0x1d5));var _0x0b8a=function(_0xcd3ed4,_0x2856e5){_0xcd3ed4=_0xcd3ed4-0x0;var _0x2bce47=_0xb8a0[_0xcd3ed4];return _0x2bce47;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x0b8a('0x0'))(_0x0b8a('0x1'));var moment=require('moment');var BPromise=require(_0x0b8a('0x2'));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(_0x0b8a('0x3'));module[_0x0b8a('0x4')]=function(_0x381b17,_0x165710){return _0x381b17[_0x0b8a('0x5')](_0x0b8a('0x6'),attributes,{'tableName':_0x0b8a('0x7'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x29b1=['rimraf','../../config/environment','./teamVoicePrefix.attributes','exports','TeamVoicePrefix','lodash','util','../../config/logger','api','moment','request-promise','path'];(function(_0x1e56bc,_0x304af2){var _0x257516=function(_0xcfcd64){while(--_0xcfcd64){_0x1e56bc['push'](_0x1e56bc['shift']());}};_0x257516(++_0x304af2);}(_0x29b1,0x16d));var _0x129b=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0x29b1[_0x432682];return _0x463d05;};'use strict';var _=require(_0x129b('0x0'));var util=require(_0x129b('0x1'));var logger=require(_0x129b('0x2'))(_0x129b('0x3'));var moment=require(_0x129b('0x4'));var BPromise=require('bluebird');var rp=require(_0x129b('0x5'));var fs=require('fs');var path=require(_0x129b('0x6'));var rimraf=require(_0x129b('0x7'));var config=require(_0x129b('0x8'));var attributes=require(_0x129b('0x9'));module[_0x129b('0xa')]=function(_0x31e428,_0xe27ed4){return _0x31e428['define'](_0x129b('0xb'),attributes,{'tableName':'team_has_voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 4aa7dec..676a7cb 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(_0x32a100,_0xe4b641){var _0x1f578c=function(_0x12aa4e){while(--_0x12aa4e){_0x32a100['push'](_0x32a100['shift']());}};_0x1f578c(++_0xe4b641);}(_0xe706,0xa3));var _0x6e70=function(_0x110ea8,_0xacb6fa){_0x110ea8=_0x110ea8-0x0;var _0x4073cf=_0xe706[_0x110ea8];return _0x4073cf;};'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 _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x41c451,_0x1ef4c7){var _0x3a6263=function(_0x48b86b){while(--_0x48b86b){_0x41c451['push'](_0x41c451['shift']());}};_0x3a6263(++_0x1ef4c7);}(_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 5baf7ee..2be00de 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x67de=['INTEGER','sequelize','exports'];(function(_0x3ac195,_0x241b25){var _0x4b2565=function(_0x3fe694){while(--_0x3fe694){_0x3ac195['push'](_0x3ac195['shift']());}};_0x4b2565(++_0x241b25);}(_0x67de,0x1ba));var _0xe67d=function(_0x386c29,_0x5e1410){_0x386c29=_0x386c29-0x0;var _0x5937c6=_0x67de[_0x386c29];return _0x5937c6;};'use strict';var Sequelize=require(_0xe67d('0x0'));module[_0xe67d('0x1')]={'penalty':{'type':Sequelize[_0xe67d('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x4cc3=['INTEGER'];(function(_0x1b2ff7,_0x12a034){var _0x31656a=function(_0x1165a5){while(--_0x1165a5){_0x1b2ff7['push'](_0x1b2ff7['shift']());}};_0x31656a(++_0x12a034);}(_0x4cc3,0x8d));var _0x34cc=function(_0x57f153,_0xd5df69){_0x57f153=_0x57f153-0x0;var _0x806ad8=_0x4cc3[_0x57f153];return _0x806ad8;};'use strict';var Sequelize=require('sequelize');module['exports']={'penalty':{'type':Sequelize[_0x34cc('0x0')],'defaultValue':0x0}};
\ No newline at end of file
index 47dd591..0577a11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb647=['../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','exports','define','TeamVoiceQueue','team_has_voice_queues','lodash','util'];(function(_0x2b09eb,_0xc52210){var _0x47dea0=function(_0x209614){while(--_0x209614){_0x2b09eb['push'](_0x2b09eb['shift']());}};_0x47dea0(++_0xc52210);}(_0xb647,0xdb));var _0x7b64=function(_0xd39880,_0x183642){_0xd39880=_0xd39880-0x0;var _0xe9f752=_0xb647[_0xd39880];return _0xe9f752;};'use strict';var _=require(_0x7b64('0x0'));var util=require(_0x7b64('0x1'));var logger=require(_0x7b64('0x2'))(_0x7b64('0x3'));var moment=require(_0x7b64('0x4'));var BPromise=require(_0x7b64('0x5'));var rp=require(_0x7b64('0x6'));var fs=require('fs');var path=require(_0x7b64('0x7'));var rimraf=require('rimraf');var config=require(_0x7b64('0x8'));var attributes=require('./teamVoiceQueue.attributes');module[_0x7b64('0x9')]=function(_0x38ebf7,_0x31915b){return _0x38ebf7[_0x7b64('0xa')](_0x7b64('0xb'),attributes,{'tableName':_0x7b64('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x7ee1=['TeamVoiceQueue','lodash','../../config/logger','api','moment','bluebird','request-promise','rimraf','exports','define'];(function(_0x4bf793,_0x404922){var _0x55a44b=function(_0xbbc6c0){while(--_0xbbc6c0){_0x4bf793['push'](_0x4bf793['shift']());}};_0x55a44b(++_0x404922);}(_0x7ee1,0xab));var _0x17ee=function(_0x37d023,_0x13347c){_0x37d023=_0x37d023-0x0;var _0x402a98=_0x7ee1[_0x37d023];return _0x402a98;};'use strict';var _=require(_0x17ee('0x0'));var util=require('util');var logger=require(_0x17ee('0x1'))(_0x17ee('0x2'));var moment=require(_0x17ee('0x3'));var BPromise=require(_0x17ee('0x4'));var rp=require(_0x17ee('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0x17ee('0x6'));var config=require('../../config/environment');var attributes=require('./teamVoiceQueue.attributes');module[_0x17ee('0x7')]=function(_0x2e4db0,_0x2efefb){return _0x2e4db0[_0x17ee('0x8')](_0x17ee('0x9'),attributes,{'tableName':'team_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 79c8bf0..f855aeb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c0a=['util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','info','TeamVoiceQueue,\x20%s,\x20%s','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','result','catch'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1c0a,0x14a));var _0xa1c0=function(_0x5acf76,_0x353ff4){_0x5acf76=_0x5acf76-0x0;var _0x296025=_0x1c0a[_0x5acf76];return _0x296025;};'use strict';var _=require('lodash');var util=require(_0xa1c0('0x0'));var moment=require(_0xa1c0('0x1'));var BPromise=require(_0xa1c0('0x2'));var rs=require(_0xa1c0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xa1c0('0x4'))['db'];var utils=require(_0xa1c0('0x5'));var logger=require(_0xa1c0('0x6'))('rpc');var config=require(_0xa1c0('0x7'));var jayson=require(_0xa1c0('0x8'));var client=jayson[_0xa1c0('0x9')][_0xa1c0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x50f5cf,_0x38a9d4,_0xff6c60){return new BPromise(function(_0x2818a4,_0x5e7146){return client['request'](_0x50f5cf,_0xff6c60)['then'](function(_0x5d386c){logger[_0xa1c0('0xb')](_0xa1c0('0xc'),_0x38a9d4,'request\x20sent');logger[_0xa1c0('0xd')](_0xa1c0('0xe'),_0x38a9d4,'request\x20sent',JSON[_0xa1c0('0xf')](_0x5d386c));if(_0x5d386c['error']){if(_0x5d386c[_0xa1c0('0x10')][_0xa1c0('0x11')]===0x1f4){logger[_0xa1c0('0x10')](_0xa1c0('0xc'),_0x38a9d4,_0x5d386c[_0xa1c0('0x10')][_0xa1c0('0x12')]);return _0x5e7146(_0x5d386c[_0xa1c0('0x10')][_0xa1c0('0x12')]);}logger[_0xa1c0('0x10')](_0xa1c0('0xc'),_0x38a9d4,_0x5d386c[_0xa1c0('0x10')]['message']);return _0x2818a4(_0x5d386c[_0xa1c0('0x10')][_0xa1c0('0x12')]);}else{logger[_0xa1c0('0xb')](_0xa1c0('0xc'),_0x38a9d4,_0xa1c0('0x13'));_0x2818a4(_0x5d386c[_0xa1c0('0x14')][_0xa1c0('0x12')]);}})[_0xa1c0('0x15')](function(_0x5c74ba){logger['error']('TeamVoiceQueue,\x20%s,\x20%s',_0x38a9d4,_0x5c74ba);_0x5e7146(_0x5c74ba);});});}
\ No newline at end of file
+var _0x4124=['../../config/utils','../../config/logger','rpc','jayson/promise','client','http','request','TeamVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','TeamVoiceQueue,\x20%s,\x20%s,\x20%s','error','code','message','info','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0x2c50a8,_0x924fdb){var _0x1df688=function(_0x23f16e){while(--_0x23f16e){_0x2c50a8['push'](_0x2c50a8['shift']());}};_0x1df688(++_0x924fdb);}(_0x4124,0x1c1));var _0x4412=function(_0x1fca5c,_0x152646){_0x1fca5c=_0x1fca5c-0x0;var _0x502126=_0x4124[_0x1fca5c];return _0x502126;};'use strict';var _=require(_0x4412('0x0'));var util=require(_0x4412('0x1'));var moment=require(_0x4412('0x2'));var BPromise=require(_0x4412('0x3'));var rs=require(_0x4412('0x4'));var fs=require('fs');var Redis=require(_0x4412('0x5'));var db=require(_0x4412('0x6'))['db'];var utils=require(_0x4412('0x7'));var logger=require(_0x4412('0x8'))(_0x4412('0x9'));var config=require('../../config/environment');var jayson=require(_0x4412('0xa'));var client=jayson[_0x4412('0xb')][_0x4412('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x4b5ed9,_0x687a3d,_0x4e4d65){return new BPromise(function(_0x1674cf,_0x58313c){return client[_0x4412('0xd')](_0x4b5ed9,_0x4e4d65)['then'](function(_0x2201f7){logger['info'](_0x4412('0xe'),_0x687a3d,_0x4412('0xf'));logger[_0x4412('0x10')](_0x4412('0x11'),_0x687a3d,_0x4412('0xf'),JSON['stringify'](_0x2201f7));if(_0x2201f7[_0x4412('0x12')]){if(_0x2201f7[_0x4412('0x12')][_0x4412('0x13')]===0x1f4){logger[_0x4412('0x12')](_0x4412('0xe'),_0x687a3d,_0x2201f7[_0x4412('0x12')][_0x4412('0x14')]);return _0x58313c(_0x2201f7[_0x4412('0x12')]['message']);}logger[_0x4412('0x12')](_0x4412('0xe'),_0x687a3d,_0x2201f7[_0x4412('0x12')][_0x4412('0x14')]);return _0x1674cf(_0x2201f7[_0x4412('0x12')][_0x4412('0x14')]);}else{logger[_0x4412('0x15')]('TeamVoiceQueue,\x20%s,\x20%s',_0x687a3d,_0x4412('0xf'));_0x1674cf(_0x2201f7[_0x4412('0x16')][_0x4412('0x14')]);}})[_0x4412('0x17')](function(_0xa88831){logger[_0x4412('0x12')](_0x4412('0xe'),_0x687a3d,_0xa88831);_0x58313c(_0xa88831);});});}
\ No newline at end of file
index 7c1a683..7cece9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e0c=['isAuthenticated','show','update','delete','destroy','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./template.controller','/:id'];(function(_0x2e63e8,_0xed68f5){var _0x3fe904=function(_0x10e876){while(--_0x10e876){_0x2e63e8['push'](_0x2e63e8['shift']());}};_0x3fe904(++_0xed68f5);}(_0x3e0c,0x16d));var _0xc3e0=function(_0x58ee61,_0x41f78f){_0x58ee61=_0x58ee61-0x0;var _0x1b8825=_0x3e0c[_0x58ee61];return _0x1b8825;};'use strict';var multer=require(_0xc3e0('0x0'));var util=require(_0xc3e0('0x1'));var path=require(_0xc3e0('0x2'));var timeout=require('connect-timeout');var express=require(_0xc3e0('0x3'));var router=express[_0xc3e0('0x4')]();var fs_extra=require(_0xc3e0('0x5'));var auth=require(_0xc3e0('0x6'));var interaction=require(_0xc3e0('0x7'));var config=require('../../config/environment');var controller=require(_0xc3e0('0x8'));router['get']('/',auth['isAuthenticated'](),controller['index']);router['get'](_0xc3e0('0x9'),auth[_0xc3e0('0xa')](),controller[_0xc3e0('0xb')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['put'](_0xc3e0('0x9'),auth[_0xc3e0('0xa')](),controller[_0xc3e0('0xc')]);router[_0xc3e0('0xd')](_0xc3e0('0x9'),auth[_0xc3e0('0xa')](),controller[_0xc3e0('0xe')]);module['exports']=router;
\ No newline at end of file
+var _0x49db=['connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','./template.controller','index','get','/:id','show','post','isAuthenticated','create','put','delete','destroy','exports','multer','util','path'];(function(_0x6d0b17,_0x221ac0){var _0x1ee7f3=function(_0x2d8b55){while(--_0x2d8b55){_0x6d0b17['push'](_0x6d0b17['shift']());}};_0x1ee7f3(++_0x221ac0);}(_0x49db,0xc5));var _0xb49d=function(_0x520bec,_0x135b8d){_0x520bec=_0x520bec-0x0;var _0x4fa84b=_0x49db[_0x520bec];return _0x4fa84b;};'use strict';var multer=require(_0xb49d('0x0'));var util=require(_0xb49d('0x1'));var path=require(_0xb49d('0x2'));var timeout=require(_0xb49d('0x3'));var express=require(_0xb49d('0x4'));var router=express['Router']();var fs_extra=require(_0xb49d('0x5'));var auth=require(_0xb49d('0x6'));var interaction=require(_0xb49d('0x7'));var config=require('../../config/environment');var controller=require(_0xb49d('0x8'));router['get']('/',auth['isAuthenticated'](),controller[_0xb49d('0x9')]);router[_0xb49d('0xa')](_0xb49d('0xb'),auth['isAuthenticated'](),controller[_0xb49d('0xc')]);router[_0xb49d('0xd')]('/',auth[_0xb49d('0xe')](),controller[_0xb49d('0xf')]);router[_0xb49d('0x10')](_0xb49d('0xb'),auth['isAuthenticated'](),controller['update']);router[_0xb49d('0x11')](_0xb49d('0xb'),auth[_0xb49d('0xe')](),controller[_0xb49d('0x12')]);module[_0xb49d('0x13')]=router;
\ No newline at end of file
index d548a79..a5420ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa013=['exports','STRING','TEXT','sequelize'];(function(_0xf4ded6,_0x1e38d2){var _0x5827fc=function(_0x639e78){while(--_0x639e78){_0xf4ded6['push'](_0xf4ded6['shift']());}};_0x5827fc(++_0x1e38d2);}(_0xa013,0x13f));var _0x3a01=function(_0x1064bc,_0x206f12){_0x1064bc=_0x1064bc-0x0;var _0x5edc45=_0xa013[_0x1064bc];return _0x5edc45;};'use strict';var Sequelize=require(_0x3a01('0x0'));module[_0x3a01('0x1')]={'name':{'type':Sequelize[_0x3a01('0x2')]},'description':{'type':Sequelize[_0x3a01('0x2')]},'html':{'type':Sequelize[_0x3a01('0x3')]}};
\ No newline at end of file
+var _0x8f44=['exports','STRING','sequelize'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x8f44,0x140));var _0x48f4=function(_0x1918aa,_0x43c34f){_0x1918aa=_0x1918aa-0x0;var _0x3f4772=_0x8f44[_0x1918aa];return _0x3f4772;};'use strict';var Sequelize=require(_0x48f4('0x0'));module[_0x48f4('0x1')]={'name':{'type':Sequelize[_0x48f4('0x2')]},'description':{'type':Sequelize['STRING']},'html':{'type':Sequelize['TEXT']}};
\ No newline at end of file
index e9b8c48..ba5160c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xee9e=['name','send','Template','rawAttributes','fieldName','type','model','map','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','where','pick','filter','VIRTUAL','merge','options','includeAll','include','rows','catch','show','params','keys','find','create','body','user','role','Templates','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','rimraf','fast-json-patch','request-promise','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','then','destroy','get','sendStatus'];(function(_0x2744ef,_0xb558b6){var _0x183b28=function(_0x28529d){while(--_0x28529d){_0x2744ef['push'](_0x2744ef['shift']());}};_0x183b28(++_0xb558b6);}(_0xee9e,0x7a));var _0xeee9=function(_0x229bef,_0x1357d4){_0x229bef=_0x229bef-0x0;var _0x173e6a=_0xee9e[_0x229bef];return _0x173e6a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xeee9('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0xeee9('0x1'));var rp=require(_0xeee9('0x2'));var moment=require('moment');var BPromise=require(_0xeee9('0x3'));var Mustache=require(_0xeee9('0x4'));var util=require('util');var path=require('path');var sox=require(_0xeee9('0x5'));var csv=require(_0xeee9('0x6'));var ejs=require(_0xeee9('0x7'));var fs=require('fs');var fs_extra=require(_0xeee9('0x8'));var _=require(_0xeee9('0x9'));var squel=require(_0xeee9('0xa'));var crypto=require('crypto');var jsforce=require(_0xeee9('0xb'));var deskjs=require(_0xeee9('0xc'));var toCsv=require(_0xeee9('0x6'));var querystring=require(_0xeee9('0xd'));var Papa=require('papaparse');var Redis=require(_0xeee9('0xe'));var authService=require(_0xeee9('0xf'));var qs=require(_0xeee9('0x10'));var as=require(_0xeee9('0x11'));var hardwareService=require(_0xeee9('0x12'));var logger=require(_0xeee9('0x13'))(_0xeee9('0x14'));var utils=require(_0xeee9('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xeee9('0x16'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x45166a,_0x573eb0){_0x573eb0=_0x573eb0||0xcc;return function(_0x545de2){if(_0x545de2){return _0x45166a['sendStatus'](_0x573eb0);}return _0x45166a[_0xeee9('0x17')](_0x573eb0)[_0xeee9('0x18')]();};}function respondWithResult(_0x5c09fa,_0xd71049){_0xd71049=_0xd71049||0xc8;return function(_0x44540c){if(_0x44540c){return _0x5c09fa[_0xeee9('0x17')](_0xd71049)[_0xeee9('0x19')](_0x44540c);}};}function respondWithFilteredResult(_0x20e380,_0x533fe6){return function(_0x19854a){if(_0x19854a){var _0x103c88=typeof _0x533fe6[_0xeee9('0x1a')]===_0xeee9('0x1b')&&typeof _0x533fe6['limit']===_0xeee9('0x1b');var _0x519469=_0x19854a['count'];var _0x1fdcc0=_0x103c88?0x0:_0x533fe6[_0xeee9('0x1a')];var _0x5a03a5=_0x103c88?_0x19854a[_0xeee9('0x1c')]:_0x533fe6[_0xeee9('0x1a')]+_0x533fe6['limit'];var _0x44094f;if(_0x5a03a5>=_0x519469){_0x5a03a5=_0x519469;_0x44094f=0xc8;}else{_0x44094f=0xce;}_0x20e380[_0xeee9('0x17')](_0x44094f);return _0x20e380[_0xeee9('0x1d')](_0xeee9('0x1e'),_0x1fdcc0+'-'+_0x5a03a5+'/'+_0x519469)[_0xeee9('0x19')](_0x19854a);}return null;};}function patchUpdates(_0x17c6be){return function(_0x40572b){try{jsonpatch[_0xeee9('0x1f')](_0x40572b,_0x17c6be,!![]);}catch(_0x25b9e4){return BPromise[_0xeee9('0x20')](_0x25b9e4);}return _0x40572b[_0xeee9('0x21')]();};}function saveUpdates(_0x20993e,_0x4a0977){return function(_0x250cc5){if(_0x250cc5){return _0x250cc5['update'](_0x20993e)[_0xeee9('0x22')](function(_0x50cc4a){return _0x50cc4a;});}return null;};}function removeEntity(_0x5ed98a,_0x138eaf){return function(_0x4fecd0){if(_0x4fecd0){return _0x4fecd0[_0xeee9('0x23')]()['then'](function(){var _0x1700d2=_0x4fecd0[_0xeee9('0x24')]({'plain':!![]});var _0x2699c3='Templates';return db['UserProfileResource'][_0xeee9('0x23')]({'where':{'type':_0x2699c3,'resourceId':_0x1700d2['id']}})[_0xeee9('0x22')](function(){return _0x4fecd0;});})['then'](function(){_0x5ed98a['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x353766,_0x55ea59){return function(_0x4f7c51){if(!_0x4f7c51){_0x353766[_0xeee9('0x25')](0x194);}return _0x4f7c51;};}function handleError(_0x4de963,_0x5f0a9b){_0x5f0a9b=_0x5f0a9b||0x1f4;return function(_0x57d4a2){logger['error'](_0x57d4a2['stack']);if(_0x57d4a2[_0xeee9('0x26')]){delete _0x57d4a2[_0xeee9('0x26')];}_0x4de963['status'](_0x5f0a9b)[_0xeee9('0x27')](_0x57d4a2);};}exports['index']=function(_0x5c8cc9,_0x16418b){var _0x35d1eb={},_0x23ed89={},_0x1b829f={'count':0x0,'rows':[]};var _0x4afaa2=_['map'](db[_0xeee9('0x28')][_0xeee9('0x29')],function(_0x2fa075){return{'name':_0x2fa075[_0xeee9('0x2a')],'type':_0x2fa075[_0xeee9('0x2b')]['key']};});_0x23ed89[_0xeee9('0x2c')]=_[_0xeee9('0x2d')](_0x4afaa2,_0xeee9('0x26'));_0x23ed89[_0xeee9('0x2e')]=_['keys'](_0x5c8cc9[_0xeee9('0x2e')]);_0x23ed89[_0xeee9('0x2f')]=_[_0xeee9('0x30')](_0x23ed89[_0xeee9('0x2c')],_0x23ed89['query']);_0x35d1eb[_0xeee9('0x31')]=_[_0xeee9('0x30')](_0x23ed89[_0xeee9('0x2c')],qs[_0xeee9('0x32')](_0x5c8cc9[_0xeee9('0x2e')][_0xeee9('0x32')]));_0x35d1eb[_0xeee9('0x31')]=_0x35d1eb[_0xeee9('0x31')][_0xeee9('0x33')]?_0x35d1eb[_0xeee9('0x31')]:_0x23ed89['model'];if(!_0x5c8cc9[_0xeee9('0x2e')][_0xeee9('0x34')](_0xeee9('0x35'))){_0x35d1eb['limit']=qs['limit'](_0x5c8cc9[_0xeee9('0x2e')]['limit']);_0x35d1eb[_0xeee9('0x1a')]=qs[_0xeee9('0x1a')](_0x5c8cc9['query'][_0xeee9('0x1a')]);}_0x35d1eb['order']=qs['sort'](_0x5c8cc9[_0xeee9('0x2e')]['sort']);_0x35d1eb[_0xeee9('0x36')]=qs[_0xeee9('0x2f')](_[_0xeee9('0x37')](_0x5c8cc9['query'],_0x23ed89[_0xeee9('0x2f')]),_0x4afaa2);if(_0x5c8cc9['query'][_0xeee9('0x38')]){_0x35d1eb[_0xeee9('0x36')]=_['merge'](_0x35d1eb['where'],{'$or':_[_0xeee9('0x2d')](_0x4afaa2,function(_0x27048c){if(_0x27048c[_0xeee9('0x2b')]!==_0xeee9('0x39')){var _0x298c48={};_0x298c48[_0x27048c[_0xeee9('0x26')]]={'$like':'%'+_0x5c8cc9[_0xeee9('0x2e')][_0xeee9('0x38')]+'%'};return _0x298c48;}})});}_0x35d1eb=_[_0xeee9('0x3a')]({},_0x35d1eb,_0x5c8cc9[_0xeee9('0x3b')]);var _0x40b54e={'where':_0x35d1eb[_0xeee9('0x36')]};return db[_0xeee9('0x28')][_0xeee9('0x1c')](_0x40b54e)[_0xeee9('0x22')](function(_0x32f833){_0x1b829f['count']=_0x32f833;if(_0x5c8cc9['query'][_0xeee9('0x3c')]){_0x35d1eb[_0xeee9('0x3d')]=[{'all':!![]}];}return db[_0xeee9('0x28')]['findAll'](_0x35d1eb);})[_0xeee9('0x22')](function(_0x53f18a){_0x1b829f[_0xeee9('0x3e')]=_0x53f18a;return _0x1b829f;})['then'](respondWithFilteredResult(_0x16418b,_0x35d1eb))[_0xeee9('0x3f')](handleError(_0x16418b,null));};exports[_0xeee9('0x40')]=function(_0x37e9a3,_0x1f0ea2){var _0x191459={'raw':!![],'where':{'id':_0x37e9a3[_0xeee9('0x41')]['id']}},_0x345cb1={};_0x345cb1[_0xeee9('0x2c')]=_[_0xeee9('0x42')](db['Template'][_0xeee9('0x29')]);_0x345cb1[_0xeee9('0x2e')]=_[_0xeee9('0x42')](_0x37e9a3[_0xeee9('0x2e')]);_0x345cb1[_0xeee9('0x2f')]=_[_0xeee9('0x30')](_0x345cb1['model'],_0x345cb1[_0xeee9('0x2e')]);_0x191459['attributes']=_[_0xeee9('0x30')](_0x345cb1[_0xeee9('0x2c')],qs[_0xeee9('0x32')](_0x37e9a3[_0xeee9('0x2e')][_0xeee9('0x32')]));_0x191459['attributes']=_0x191459[_0xeee9('0x31')][_0xeee9('0x33')]?_0x191459[_0xeee9('0x31')]:_0x345cb1[_0xeee9('0x2c')];if(_0x37e9a3[_0xeee9('0x2e')][_0xeee9('0x3c')]){_0x191459['include']=[{'all':!![]}];}_0x191459=_['merge']({},_0x191459,_0x37e9a3['options']);return db[_0xeee9('0x28')][_0xeee9('0x43')](_0x191459)[_0xeee9('0x22')](handleEntityNotFound(_0x1f0ea2,null))['then'](respondWithResult(_0x1f0ea2,null))['catch'](handleError(_0x1f0ea2,null));};exports['create']=function(_0x31bea7,_0x135c20){return db[_0xeee9('0x28')][_0xeee9('0x44')](_0x31bea7[_0xeee9('0x45')],{})[_0xeee9('0x22')](function(_0x3640ca){var _0x5082fe=_0x31bea7[_0xeee9('0x46')]['get']({'plain':!![]});if(!_0x5082fe)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5082fe[_0xeee9('0x47')]===_0xeee9('0x46')){var _0x31d8db=_0x3640ca[_0xeee9('0x24')]({'plain':!![]});var _0xfea4fe=_0xeee9('0x48');return db[_0xeee9('0x49')][_0xeee9('0x43')]({'where':{'name':_0xfea4fe,'userProfileId':_0x5082fe[_0xeee9('0x4a')]},'raw':!![]})[_0xeee9('0x22')](function(_0x28cb7d){if(_0x28cb7d&&_0x28cb7d[_0xeee9('0x4b')]===0x0){return db[_0xeee9('0x4c')]['create']({'name':_0x31d8db[_0xeee9('0x26')],'resourceId':_0x31d8db['id'],'type':_0x28cb7d[_0xeee9('0x26')],'sectionId':_0x28cb7d['id']},{})[_0xeee9('0x22')](function(){return _0x3640ca;});}else{return _0x3640ca;}})[_0xeee9('0x3f')](function(_0x29661d){logger[_0xeee9('0x4d')](_0xeee9('0x4e'),_0x29661d);throw _0x29661d;});}return _0x3640ca;})['then'](respondWithResult(_0x135c20,0xc9))[_0xeee9('0x3f')](handleError(_0x135c20,null));};exports[_0xeee9('0x4f')]=function(_0x46a501,_0x253331){if(_0x46a501[_0xeee9('0x45')]['id']){delete _0x46a501['body']['id'];}return db[_0xeee9('0x28')][_0xeee9('0x43')]({'where':{'id':_0x46a501[_0xeee9('0x41')]['id']}})[_0xeee9('0x22')](handleEntityNotFound(_0x253331,null))['then'](saveUpdates(_0x46a501[_0xeee9('0x45')],null))['then'](respondWithResult(_0x253331,null))[_0xeee9('0x3f')](handleError(_0x253331,null));};exports[_0xeee9('0x23')]=function(_0x3942db,_0x579cbe){return db[_0xeee9('0x28')][_0xeee9('0x43')]({'where':{'id':_0x3942db['params']['id']}})[_0xeee9('0x22')](handleEntityNotFound(_0x579cbe,null))[_0xeee9('0x22')](removeEntity(_0x579cbe,null))['catch'](handleError(_0x579cbe,null));};
\ No newline at end of file
+var _0x19b2=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','squel','crypto','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','status','end','json','undefined','limit','offset','count','save','update','then','destroy','get','stack','name','index','Template','rawAttributes','fieldName','type','key','map','query','keys','intersection','model','attributes','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','filters','fields','length','find','create','role','user','Templates','UserProfileSection','userProfileId','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body'];(function(_0x138676,_0x27a8d5){var _0xf72f74=function(_0xc6036a){while(--_0xc6036a){_0x138676['push'](_0x138676['shift']());}};_0xf72f74(++_0x27a8d5);}(_0x19b2,0x15c));var _0x219b=function(_0x4a1843,_0x1884bc){_0x4a1843=_0x4a1843-0x0;var _0x2dfbc4=_0x19b2[_0x4a1843];return _0x2dfbc4;};'use strict';var emlformat=require(_0x219b('0x0'));var rimraf=require(_0x219b('0x1'));var zipdir=require(_0x219b('0x2'));var jsonpatch=require(_0x219b('0x3'));var rp=require(_0x219b('0x4'));var moment=require(_0x219b('0x5'));var BPromise=require(_0x219b('0x6'));var Mustache=require(_0x219b('0x7'));var util=require(_0x219b('0x8'));var path=require('path');var sox=require(_0x219b('0x9'));var csv=require(_0x219b('0xa'));var ejs=require(_0x219b('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x219b('0xc'));var squel=require(_0x219b('0xd'));var crypto=require(_0x219b('0xe'));var jsforce=require(_0x219b('0xf'));var deskjs=require(_0x219b('0x10'));var toCsv=require(_0x219b('0xa'));var querystring=require(_0x219b('0x11'));var Papa=require(_0x219b('0x12'));var Redis=require(_0x219b('0x13'));var authService=require(_0x219b('0x14'));var qs=require(_0x219b('0x15'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x219b('0x16'));var logger=require(_0x219b('0x17'))(_0x219b('0x18'));var utils=require(_0x219b('0x19'));var config=require(_0x219b('0x1a'));var licenseUtil=require(_0x219b('0x1b'));var db=require(_0x219b('0x1c'))['db'];function respondWithStatusCode(_0x2c429d,_0x32a6a9){_0x32a6a9=_0x32a6a9||0xcc;return function(_0x30d4a7){if(_0x30d4a7){return _0x2c429d[_0x219b('0x1d')](_0x32a6a9);}return _0x2c429d[_0x219b('0x1e')](_0x32a6a9)[_0x219b('0x1f')]();};}function respondWithResult(_0x10e80a,_0x5b802d){_0x5b802d=_0x5b802d||0xc8;return function(_0x17a238){if(_0x17a238){return _0x10e80a[_0x219b('0x1e')](_0x5b802d)[_0x219b('0x20')](_0x17a238);}};}function respondWithFilteredResult(_0xa50a08,_0x5138a4){return function(_0x2789f4){if(_0x2789f4){var _0xb72510=typeof _0x5138a4['offset']===_0x219b('0x21')&&typeof _0x5138a4[_0x219b('0x22')]===_0x219b('0x21');var _0x496a7e=_0x2789f4['count'];var _0x187aa9=_0xb72510?0x0:_0x5138a4[_0x219b('0x23')];var _0x367756=_0xb72510?_0x2789f4[_0x219b('0x24')]:_0x5138a4[_0x219b('0x23')]+_0x5138a4[_0x219b('0x22')];var _0x25b580;if(_0x367756>=_0x496a7e){_0x367756=_0x496a7e;_0x25b580=0xc8;}else{_0x25b580=0xce;}_0xa50a08['status'](_0x25b580);return _0xa50a08['set']('Content-Range',_0x187aa9+'-'+_0x367756+'/'+_0x496a7e)['json'](_0x2789f4);}return null;};}function patchUpdates(_0x2248d5){return function(_0x506320){try{jsonpatch['apply'](_0x506320,_0x2248d5,!![]);}catch(_0x4adcf2){return BPromise['reject'](_0x4adcf2);}return _0x506320[_0x219b('0x25')]();};}function saveUpdates(_0x2d4fec,_0x855fe1){return function(_0x5b82b6){if(_0x5b82b6){return _0x5b82b6[_0x219b('0x26')](_0x2d4fec)[_0x219b('0x27')](function(_0x2f919e){return _0x2f919e;});}return null;};}function removeEntity(_0x4685e8,_0x5e1afe){return function(_0x488d00){if(_0x488d00){return _0x488d00[_0x219b('0x28')]()['then'](function(){var _0x42b12f=_0x488d00[_0x219b('0x29')]({'plain':!![]});var _0x21ce32='Templates';return db['UserProfileResource']['destroy']({'where':{'type':_0x21ce32,'resourceId':_0x42b12f['id']}})[_0x219b('0x27')](function(){return _0x488d00;});})[_0x219b('0x27')](function(){_0x4685e8[_0x219b('0x1e')](0xcc)[_0x219b('0x1f')]();});}};}function handleEntityNotFound(_0x67a094,_0x2efc15){return function(_0x1eb9d8){if(!_0x1eb9d8){_0x67a094[_0x219b('0x1d')](0x194);}return _0x1eb9d8;};}function handleError(_0x560914,_0x580967){_0x580967=_0x580967||0x1f4;return function(_0xcc4769){logger['error'](_0xcc4769[_0x219b('0x2a')]);if(_0xcc4769[_0x219b('0x2b')]){delete _0xcc4769['name'];}_0x560914[_0x219b('0x1e')](_0x580967)['send'](_0xcc4769);};}exports[_0x219b('0x2c')]=function(_0x25c0d0,_0x2e3cb0){var _0x2c9c74={},_0x4fea97={},_0x12c164={'count':0x0,'rows':[]};var _0x4bb814=_['map'](db[_0x219b('0x2d')][_0x219b('0x2e')],function(_0xb559ab){return{'name':_0xb559ab[_0x219b('0x2f')],'type':_0xb559ab[_0x219b('0x30')][_0x219b('0x31')]};});_0x4fea97['model']=_[_0x219b('0x32')](_0x4bb814,'name');_0x4fea97[_0x219b('0x33')]=_[_0x219b('0x34')](_0x25c0d0['query']);_0x4fea97['filters']=_[_0x219b('0x35')](_0x4fea97[_0x219b('0x36')],_0x4fea97['query']);_0x2c9c74[_0x219b('0x37')]=_[_0x219b('0x35')](_0x4fea97[_0x219b('0x36')],qs['fields'](_0x25c0d0['query']['fields']));_0x2c9c74[_0x219b('0x37')]=_0x2c9c74[_0x219b('0x37')]['length']?_0x2c9c74[_0x219b('0x37')]:_0x4fea97[_0x219b('0x36')];if(!_0x25c0d0[_0x219b('0x33')][_0x219b('0x38')](_0x219b('0x39'))){_0x2c9c74[_0x219b('0x22')]=qs[_0x219b('0x22')](_0x25c0d0[_0x219b('0x33')][_0x219b('0x22')]);_0x2c9c74['offset']=qs[_0x219b('0x23')](_0x25c0d0[_0x219b('0x33')]['offset']);}_0x2c9c74[_0x219b('0x3a')]=qs[_0x219b('0x3b')](_0x25c0d0['query'][_0x219b('0x3b')]);_0x2c9c74[_0x219b('0x3c')]=qs['filters'](_[_0x219b('0x3d')](_0x25c0d0[_0x219b('0x33')],_0x4fea97['filters']),_0x4bb814);if(_0x25c0d0[_0x219b('0x33')]['filter']){_0x2c9c74['where']=_[_0x219b('0x3e')](_0x2c9c74[_0x219b('0x3c')],{'$or':_[_0x219b('0x32')](_0x4bb814,function(_0x3c4e67){if(_0x3c4e67[_0x219b('0x30')]!==_0x219b('0x3f')){var _0x1c43fb={};_0x1c43fb[_0x3c4e67[_0x219b('0x2b')]]={'$like':'%'+_0x25c0d0[_0x219b('0x33')][_0x219b('0x40')]+'%'};return _0x1c43fb;}})});}_0x2c9c74=_[_0x219b('0x3e')]({},_0x2c9c74,_0x25c0d0[_0x219b('0x41')]);var _0x1d5d20={'where':_0x2c9c74[_0x219b('0x3c')]};return db['Template']['count'](_0x1d5d20)[_0x219b('0x27')](function(_0x10b437){_0x12c164[_0x219b('0x24')]=_0x10b437;if(_0x25c0d0['query'][_0x219b('0x42')]){_0x2c9c74[_0x219b('0x43')]=[{'all':!![]}];}return db[_0x219b('0x2d')][_0x219b('0x44')](_0x2c9c74);})[_0x219b('0x27')](function(_0x2a963b){_0x12c164[_0x219b('0x45')]=_0x2a963b;return _0x12c164;})['then'](respondWithFilteredResult(_0x2e3cb0,_0x2c9c74))[_0x219b('0x46')](handleError(_0x2e3cb0,null));};exports[_0x219b('0x47')]=function(_0x3afd24,_0x756717){var _0xb4219={'raw':!![],'where':{'id':_0x3afd24[_0x219b('0x48')]['id']}},_0x4ffa3c={};_0x4ffa3c[_0x219b('0x36')]=_[_0x219b('0x34')](db['Template'][_0x219b('0x2e')]);_0x4ffa3c['query']=_[_0x219b('0x34')](_0x3afd24[_0x219b('0x33')]);_0x4ffa3c[_0x219b('0x49')]=_['intersection'](_0x4ffa3c[_0x219b('0x36')],_0x4ffa3c[_0x219b('0x33')]);_0xb4219[_0x219b('0x37')]=_[_0x219b('0x35')](_0x4ffa3c[_0x219b('0x36')],qs[_0x219b('0x4a')](_0x3afd24['query'][_0x219b('0x4a')]));_0xb4219['attributes']=_0xb4219['attributes'][_0x219b('0x4b')]?_0xb4219['attributes']:_0x4ffa3c[_0x219b('0x36')];if(_0x3afd24['query'][_0x219b('0x42')]){_0xb4219[_0x219b('0x43')]=[{'all':!![]}];}_0xb4219=_[_0x219b('0x3e')]({},_0xb4219,_0x3afd24[_0x219b('0x41')]);return db['Template'][_0x219b('0x4c')](_0xb4219)[_0x219b('0x27')](handleEntityNotFound(_0x756717,null))[_0x219b('0x27')](respondWithResult(_0x756717,null))[_0x219b('0x46')](handleError(_0x756717,null));};exports[_0x219b('0x4d')]=function(_0x4e50f9,_0x5be813){return db[_0x219b('0x2d')][_0x219b('0x4d')](_0x4e50f9['body'],{})[_0x219b('0x27')](function(_0x22936f){var _0x2d92fc=_0x4e50f9['user']['get']({'plain':!![]});if(!_0x2d92fc)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2d92fc[_0x219b('0x4e')]===_0x219b('0x4f')){var _0x408021=_0x22936f[_0x219b('0x29')]({'plain':!![]});var _0x26e5d9=_0x219b('0x50');return db[_0x219b('0x51')][_0x219b('0x4c')]({'where':{'name':_0x26e5d9,'userProfileId':_0x2d92fc[_0x219b('0x52')]},'raw':!![]})['then'](function(_0x24d164){if(_0x24d164&&_0x24d164['autoAssociation']===0x0){return db[_0x219b('0x53')][_0x219b('0x4d')]({'name':_0x408021[_0x219b('0x2b')],'resourceId':_0x408021['id'],'type':_0x24d164['name'],'sectionId':_0x24d164['id']},{})[_0x219b('0x27')](function(){return _0x22936f;});}else{return _0x22936f;}})[_0x219b('0x46')](function(_0x408955){logger[_0x219b('0x54')](_0x219b('0x55'),_0x408955);throw _0x408955;});}return _0x22936f;})[_0x219b('0x27')](respondWithResult(_0x5be813,0xc9))[_0x219b('0x46')](handleError(_0x5be813,null));};exports[_0x219b('0x26')]=function(_0x1f802f,_0x42425d){if(_0x1f802f[_0x219b('0x56')]['id']){delete _0x1f802f[_0x219b('0x56')]['id'];}return db[_0x219b('0x2d')][_0x219b('0x4c')]({'where':{'id':_0x1f802f[_0x219b('0x48')]['id']}})['then'](handleEntityNotFound(_0x42425d,null))[_0x219b('0x27')](saveUpdates(_0x1f802f[_0x219b('0x56')],null))[_0x219b('0x27')](respondWithResult(_0x42425d,null))[_0x219b('0x46')](handleError(_0x42425d,null));};exports[_0x219b('0x28')]=function(_0x2e97ec,_0x2fb207){return db[_0x219b('0x2d')][_0x219b('0x4c')]({'where':{'id':_0x2e97ec[_0x219b('0x48')]['id']}})[_0x219b('0x27')](handleEntityNotFound(_0x2fb207,null))['then'](removeEntity(_0x2fb207,null))[_0x219b('0x46')](handleError(_0x2fb207,null));};
\ No newline at end of file
index 5961ced..986fcba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0945=['util','../../config/logger','api','request-promise','path','./template.attributes','define','tools_templates','lodash'];(function(_0x324f7f,_0x34504f){var _0x56e96d=function(_0x37d6bb){while(--_0x37d6bb){_0x324f7f['push'](_0x324f7f['shift']());}};_0x56e96d(++_0x34504f);}(_0x0945,0x1d3));var _0x5094=function(_0x39979b,_0x2111f9){_0x39979b=_0x39979b-0x0;var _0x560b41=_0x0945[_0x39979b];return _0x560b41;};'use strict';var _=require(_0x5094('0x0'));var util=require(_0x5094('0x1'));var logger=require(_0x5094('0x2'))(_0x5094('0x3'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x5094('0x4'));var fs=require('fs');var path=require(_0x5094('0x5'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x5094('0x6'));module['exports']=function(_0x4312d5,_0x41a8d8){return _0x4312d5[_0x5094('0x7')]('Template',attributes,{'tableName':_0x5094('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x755b=['tools_templates','lodash','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./template.attributes','exports','define'];(function(_0x121d9e,_0x11b966){var _0x5df466=function(_0x519340){while(--_0x519340){_0x121d9e['push'](_0x121d9e['shift']());}};_0x5df466(++_0x11b966);}(_0x755b,0x139));var _0xb755=function(_0x23e26c,_0x501919){_0x23e26c=_0x23e26c-0x0;var _0x5deb1b=_0x755b[_0x23e26c];return _0x5deb1b;};'use strict';var _=require(_0xb755('0x0'));var util=require(_0xb755('0x1'));var logger=require(_0xb755('0x2'))(_0xb755('0x3'));var moment=require(_0xb755('0x4'));var BPromise=require('bluebird');var rp=require(_0xb755('0x5'));var fs=require('fs');var path=require(_0xb755('0x6'));var rimraf=require(_0xb755('0x7'));var config=require(_0xb755('0x8'));var attributes=require(_0xb755('0x9'));module[_0xb755('0xa')]=function(_0x3a831a,_0x501f00){return _0x3a831a[_0xb755('0xb')]('Template',attributes,{'tableName':_0xb755('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1e0d2aa..8ff136b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9f8a=['message','result','catch','GetTemplate','Template','options','raw','where','attributes','map','model','include','lodash','util','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','request','then','info','Template,\x20%s,\x20%s','debug','Template,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code'];(function(_0x156eb6,_0x561067){var _0x1317e9=function(_0x5d8e39){while(--_0x5d8e39){_0x156eb6['push'](_0x156eb6['shift']());}};_0x1317e9(++_0x561067);}(_0x9f8a,0x185));var _0xa9f8=function(_0x1946e4,_0x1c317e){_0x1946e4=_0x1946e4-0x0;var _0x49a7db=_0x9f8a[_0x1946e4];return _0x49a7db;};'use strict';var _=require(_0xa9f8('0x0'));var util=require(_0xa9f8('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0xa9f8('0x2'));var fs=require('fs');var Redis=require(_0xa9f8('0x3'));var db=require('../../mysqldb')['db'];var utils=require(_0xa9f8('0x4'));var logger=require(_0xa9f8('0x5'))('rpc');var config=require('../../config/environment');var jayson=require(_0xa9f8('0x6'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x5d6c92,_0x2047bd,_0x52ef00){return new BPromise(function(_0x292bfe,_0x36162e){return client[_0xa9f8('0x7')](_0x5d6c92,_0x52ef00)[_0xa9f8('0x8')](function(_0x2a7a11){logger[_0xa9f8('0x9')](_0xa9f8('0xa'),_0x2047bd,'request\x20sent');logger[_0xa9f8('0xb')](_0xa9f8('0xc'),_0x2047bd,_0xa9f8('0xd'),JSON[_0xa9f8('0xe')](_0x2a7a11));if(_0x2a7a11[_0xa9f8('0xf')]){if(_0x2a7a11[_0xa9f8('0xf')][_0xa9f8('0x10')]===0x1f4){logger[_0xa9f8('0xf')](_0xa9f8('0xa'),_0x2047bd,_0x2a7a11[_0xa9f8('0xf')][_0xa9f8('0x11')]);return _0x36162e(_0x2a7a11[_0xa9f8('0xf')][_0xa9f8('0x11')]);}logger[_0xa9f8('0xf')](_0xa9f8('0xa'),_0x2047bd,_0x2a7a11[_0xa9f8('0xf')]['message']);return _0x292bfe(_0x2a7a11[_0xa9f8('0xf')][_0xa9f8('0x11')]);}else{logger['info'](_0xa9f8('0xa'),_0x2047bd,_0xa9f8('0xd'));_0x292bfe(_0x2a7a11[_0xa9f8('0x12')][_0xa9f8('0x11')]);}})[_0xa9f8('0x13')](function(_0x29aab6){logger[_0xa9f8('0xf')](_0xa9f8('0xa'),_0x2047bd,_0x29aab6);_0x36162e(_0x29aab6);});});}exports[_0xa9f8('0x14')]=function(_0x28fcaa){var _0x3c47f1=this;return new Promise(function(_0x4b37bc,_0x39f407){return db[_0xa9f8('0x15')]['findAll']({'raw':_0x28fcaa[_0xa9f8('0x16')]?_0x28fcaa[_0xa9f8('0x16')][_0xa9f8('0x17')]===undefined?!![]:![]:!![],'where':_0x28fcaa[_0xa9f8('0x16')]?_0x28fcaa['options'][_0xa9f8('0x18')]||null:null,'attributes':_0x28fcaa[_0xa9f8('0x16')]?_0x28fcaa[_0xa9f8('0x16')][_0xa9f8('0x19')]||null:null,'limit':_0x28fcaa['options']?_0x28fcaa[_0xa9f8('0x16')]['limit']||null:null,'include':_0x28fcaa[_0xa9f8('0x16')]?_0x28fcaa['options']['include']?_[_0xa9f8('0x1a')](_0x28fcaa[_0xa9f8('0x16')]['include'],function(_0x15b7a6){return{'model':db[_0x15b7a6[_0xa9f8('0x1b')]],'as':_0x15b7a6['as'],'attributes':_0x15b7a6[_0xa9f8('0x19')],'include':_0x15b7a6[_0xa9f8('0x1c')]?_['map'](_0x15b7a6[_0xa9f8('0x1c')],function(_0x25d7e5){return{'model':db[_0x25d7e5[_0xa9f8('0x1b')]],'as':_0x25d7e5['as'],'attributes':_0x25d7e5[_0xa9f8('0x19')],'include':_0x25d7e5['include']?_['map'](_0x25d7e5[_0xa9f8('0x1c')],function(_0x5af137){return{'model':db[_0x5af137[_0xa9f8('0x1b')]],'as':_0x5af137['as'],'attributes':_0x5af137[_0xa9f8('0x19')]};}):[]};}):[]};}):[]:[]})[_0xa9f8('0x8')](function(_0x139de2){logger[_0xa9f8('0x9')]('GetTemplate',_0x28fcaa);logger['debug'](_0xa9f8('0x14'),_0x28fcaa,JSON[_0xa9f8('0xe')](_0x139de2));_0x4b37bc(_0x139de2);})[_0xa9f8('0x13')](function(_0x51945d){logger[_0xa9f8('0xf')](_0xa9f8('0x14'),_0x51945d[_0xa9f8('0x11')],_0x28fcaa);_0x39f407(_0x3c47f1['error'](0x1f4,_0x51945d[_0xa9f8('0x11')]));});});};
\ No newline at end of file
+var _0xc961=['GetTemplate','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','info','Template,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','Template','findAll','raw','options','where','attributes','include','map','model','then'];(function(_0x3ed233,_0x2f18de){var _0x2ea9f3=function(_0x369e24){while(--_0x369e24){_0x3ed233['push'](_0x3ed233['shift']());}};_0x2ea9f3(++_0x2f18de);}(_0xc961,0xa6));var _0x1c96=function(_0x1d61de,_0x2a303d){_0x1d61de=_0x1d61de-0x0;var _0x446d8f=_0xc961[_0x1d61de];return _0x446d8f;};'use strict';var _=require(_0x1c96('0x0'));var util=require(_0x1c96('0x1'));var moment=require(_0x1c96('0x2'));var BPromise=require(_0x1c96('0x3'));var rs=require(_0x1c96('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x1c96('0x5'))['db'];var utils=require(_0x1c96('0x6'));var logger=require(_0x1c96('0x7'))(_0x1c96('0x8'));var config=require(_0x1c96('0x9'));var jayson=require(_0x1c96('0xa'));var client=jayson[_0x1c96('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x505f08,_0x1e459f,_0x258746){return new BPromise(function(_0x583693,_0x3d90f3){return client[_0x1c96('0xc')](_0x505f08,_0x258746)['then'](function(_0x5d3704){logger[_0x1c96('0xd')](_0x1c96('0xe'),_0x1e459f,_0x1c96('0xf'));logger[_0x1c96('0x10')]('Template,\x20%s,\x20%s,\x20%s',_0x1e459f,_0x1c96('0xf'),JSON[_0x1c96('0x11')](_0x5d3704));if(_0x5d3704[_0x1c96('0x12')]){if(_0x5d3704['error'][_0x1c96('0x13')]===0x1f4){logger['error'](_0x1c96('0xe'),_0x1e459f,_0x5d3704[_0x1c96('0x12')][_0x1c96('0x14')]);return _0x3d90f3(_0x5d3704[_0x1c96('0x12')][_0x1c96('0x14')]);}logger[_0x1c96('0x12')](_0x1c96('0xe'),_0x1e459f,_0x5d3704[_0x1c96('0x12')][_0x1c96('0x14')]);return _0x583693(_0x5d3704['error']['message']);}else{logger['info'](_0x1c96('0xe'),_0x1e459f,_0x1c96('0xf'));_0x583693(_0x5d3704['result']['message']);}})[_0x1c96('0x15')](function(_0x1979f8){logger['error']('Template,\x20%s,\x20%s',_0x1e459f,_0x1979f8);_0x3d90f3(_0x1979f8);});});}exports['GetTemplate']=function(_0xa28775){var _0x29fce1=this;return new Promise(function(_0x504667,_0x158e9d){return db[_0x1c96('0x16')][_0x1c96('0x17')]({'raw':_0xa28775['options']?_0xa28775['options'][_0x1c96('0x18')]===undefined?!![]:![]:!![],'where':_0xa28775['options']?_0xa28775[_0x1c96('0x19')][_0x1c96('0x1a')]||null:null,'attributes':_0xa28775[_0x1c96('0x19')]?_0xa28775[_0x1c96('0x19')][_0x1c96('0x1b')]||null:null,'limit':_0xa28775[_0x1c96('0x19')]?_0xa28775[_0x1c96('0x19')]['limit']||null:null,'include':_0xa28775[_0x1c96('0x19')]?_0xa28775['options'][_0x1c96('0x1c')]?_[_0x1c96('0x1d')](_0xa28775[_0x1c96('0x19')][_0x1c96('0x1c')],function(_0x3c3d39){return{'model':db[_0x3c3d39['model']],'as':_0x3c3d39['as'],'attributes':_0x3c3d39[_0x1c96('0x1b')],'include':_0x3c3d39[_0x1c96('0x1c')]?_[_0x1c96('0x1d')](_0x3c3d39[_0x1c96('0x1c')],function(_0x26d238){return{'model':db[_0x26d238[_0x1c96('0x1e')]],'as':_0x26d238['as'],'attributes':_0x26d238['attributes'],'include':_0x26d238[_0x1c96('0x1c')]?_[_0x1c96('0x1d')](_0x26d238[_0x1c96('0x1c')],function(_0x353fac){return{'model':db[_0x353fac[_0x1c96('0x1e')]],'as':_0x353fac['as'],'attributes':_0x353fac[_0x1c96('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x1c96('0x1f')](function(_0x396280){logger[_0x1c96('0xd')](_0x1c96('0x20'),_0xa28775);logger[_0x1c96('0x10')](_0x1c96('0x20'),_0xa28775,JSON['stringify'](_0x396280));_0x504667(_0x396280);})[_0x1c96('0x15')](function(_0x10c5e6){logger[_0x1c96('0x12')](_0x1c96('0x20'),_0x10c5e6[_0x1c96('0x14')],_0xa28775);_0x158e9d(_0x29fce1[_0x1c96('0x12')](0x1f4,_0x10c5e6[_0x1c96('0x14')]));});});};
\ No newline at end of file
index 71c2a0c..657d473 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd679=['/:id','isAuthenticated','show','/:id/all_conditions','getAllConditions','/:id/actions','getActions','post','create','addAllCondition','addAnyCondition','addAction','put','update','destroy','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./trigger.controller','get','index'];(function(_0x471e81,_0x19816a){var _0x5388b9=function(_0x484338){while(--_0x484338){_0x471e81['push'](_0x471e81['shift']());}};_0x5388b9(++_0x19816a);}(_0xd679,0xcc));var _0x9d67=function(_0x1f3062,_0x22ad7d){_0x1f3062=_0x1f3062-0x0;var _0x5aac3d=_0xd679[_0x1f3062];return _0x5aac3d;};'use strict';var multer=require('multer');var util=require(_0x9d67('0x0'));var path=require(_0x9d67('0x1'));var timeout=require(_0x9d67('0x2'));var express=require(_0x9d67('0x3'));var router=express[_0x9d67('0x4')]();var fs_extra=require(_0x9d67('0x5'));var auth=require(_0x9d67('0x6'));var interaction=require(_0x9d67('0x7'));var config=require(_0x9d67('0x8'));var controller=require(_0x9d67('0x9'));router[_0x9d67('0xa')]('/',auth['isAuthenticated'](),controller[_0x9d67('0xb')]);router['get'](_0x9d67('0xc'),auth[_0x9d67('0xd')](),controller[_0x9d67('0xe')]);router['get'](_0x9d67('0xf'),auth[_0x9d67('0xd')](),controller[_0x9d67('0x10')]);router[_0x9d67('0xa')]('/:id/any_conditions',auth['isAuthenticated'](),controller['getAnyConditions']);router[_0x9d67('0xa')](_0x9d67('0x11'),auth[_0x9d67('0xd')](),controller[_0x9d67('0x12')]);router[_0x9d67('0x13')]('/',auth[_0x9d67('0xd')](),controller[_0x9d67('0x14')]);router[_0x9d67('0x13')](_0x9d67('0xf'),auth[_0x9d67('0xd')](),controller[_0x9d67('0x15')]);router[_0x9d67('0x13')]('/:id/any_conditions',auth[_0x9d67('0xd')](),controller[_0x9d67('0x16')]);router['post'](_0x9d67('0x11'),auth[_0x9d67('0xd')](),controller[_0x9d67('0x17')]);router[_0x9d67('0x18')]('/:id',auth['isAuthenticated'](),controller[_0x9d67('0x19')]);router['delete']('/:id',auth[_0x9d67('0xd')](),controller[_0x9d67('0x1a')]);module['exports']=router;
\ No newline at end of file
+var _0x291e=['../../config/environment','./trigger.controller','isAuthenticated','/:id','get','/:id/all_conditions','getAllConditions','getAnyConditions','/:id/actions','getActions','post','addAllCondition','/:id/any_conditions','addAnyCondition','addAction','put','update','delete','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service'];(function(_0x297870,_0x551fb2){var _0x4a9ab6=function(_0x2c0b24){while(--_0x2c0b24){_0x297870['push'](_0x297870['shift']());}};_0x4a9ab6(++_0x551fb2);}(_0x291e,0xeb));var _0xe291=function(_0xf28e1d,_0x4e089d){_0xf28e1d=_0xf28e1d-0x0;var _0x2cdbf1=_0x291e[_0xf28e1d];return _0x2cdbf1;};'use strict';var multer=require(_0xe291('0x0'));var util=require(_0xe291('0x1'));var path=require(_0xe291('0x2'));var timeout=require(_0xe291('0x3'));var express=require(_0xe291('0x4'));var router=express[_0xe291('0x5')]();var fs_extra=require(_0xe291('0x6'));var auth=require(_0xe291('0x7'));var interaction=require('../../components/interaction/service');var config=require(_0xe291('0x8'));var controller=require(_0xe291('0x9'));router['get']('/',auth[_0xe291('0xa')](),controller['index']);router['get'](_0xe291('0xb'),auth[_0xe291('0xa')](),controller['show']);router[_0xe291('0xc')](_0xe291('0xd'),auth[_0xe291('0xa')](),controller[_0xe291('0xe')]);router[_0xe291('0xc')]('/:id/any_conditions',auth['isAuthenticated'](),controller[_0xe291('0xf')]);router[_0xe291('0xc')](_0xe291('0x10'),auth['isAuthenticated'](),controller[_0xe291('0x11')]);router[_0xe291('0x12')]('/',auth[_0xe291('0xa')](),controller['create']);router[_0xe291('0x12')](_0xe291('0xd'),auth[_0xe291('0xa')](),controller[_0xe291('0x13')]);router['post'](_0xe291('0x14'),auth[_0xe291('0xa')](),controller[_0xe291('0x15')]);router[_0xe291('0x12')](_0xe291('0x10'),auth[_0xe291('0xa')](),controller[_0xe291('0x16')]);router[_0xe291('0x17')]('/:id',auth[_0xe291('0xa')](),controller[_0xe291('0x18')]);router[_0xe291('0x19')](_0xe291('0xb'),auth[_0xe291('0xa')](),controller['destroy']);module[_0xe291('0x1a')]=router;
\ No newline at end of file
index 5ab8825..684fa45 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6e28=['exports','STRING','BOOLEAN','sequelize'];(function(_0x494452,_0x5b9635){var _0x456e08=function(_0xf79cd4){while(--_0xf79cd4){_0x494452['push'](_0x494452['shift']());}};_0x456e08(++_0x5b9635);}(_0x6e28,0xeb));var _0x86e2=function(_0x58dd3c,_0x1db9da){_0x58dd3c=_0x58dd3c-0x0;var _0x4595a8=_0x6e28[_0x58dd3c];return _0x4595a8;};'use strict';var Sequelize=require(_0x86e2('0x0'));module[_0x86e2('0x1')]={'name':{'type':Sequelize[_0x86e2('0x2')]},'channel':{'type':Sequelize[_0x86e2('0x2')]},'description':{'type':Sequelize[_0x86e2('0x2')]},'status':{'type':Sequelize[_0x86e2('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0xda3a=['BOOLEAN'];(function(_0x3be7e9,_0x3197d7){var _0x3fb44a=function(_0x531e1f){while(--_0x531e1f){_0x3be7e9['push'](_0x3be7e9['shift']());}};_0x3fb44a(++_0x3197d7);}(_0xda3a,0xba));var _0xada3=function(_0x53b84c,_0x3d6443){_0x53b84c=_0x53b84c-0x0;var _0xbf6283=_0xda3a[_0x53b84c];return _0xbf6283;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']},'status':{'type':Sequelize[_0xada3('0x0')],'defaultValue':![]}};
\ No newline at end of file
index 7f19109..baf2fb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc075=['map','query','intersection','attributes','fields','hasOwnProperty','sort','where','filters','filter','merge','Trigger','includeAll','include','findAll','catch','show','params','keys','length','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','addAnyCondition','TriggerAnyId','Condition','getAllConditions','order','pick','nolimit','getAnyConditions','findOne','TriggerId','getActions','Action','eml-format','rimraf','request-promise','moment','util','path','sox','to-csv','fs-extra','lodash','squel','jsforce','querystring','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','undefined','count','limit','Content-Range','apply','reject','save','update','destroy','get','Triggers','UserProfileResource','then','sendStatus','stack','name','send','index','rawAttributes','type','key','model'];(function(_0x397e5f,_0x454c8f){var _0x5302b8=function(_0x1a29ef){while(--_0x1a29ef){_0x397e5f['push'](_0x397e5f['shift']());}};_0x5302b8(++_0x454c8f);}(_0xc075,0x1ed));var _0x5c07=function(_0xdf1a02,_0x469861){_0xdf1a02=_0xdf1a02-0x0;var _0x5d2675=_0xc075[_0xdf1a02];return _0x5d2675;};'use strict';var emlformat=require(_0x5c07('0x0'));var rimraf=require(_0x5c07('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x5c07('0x2'));var moment=require(_0x5c07('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x5c07('0x4'));var path=require(_0x5c07('0x5'));var sox=require(_0x5c07('0x6'));var csv=require(_0x5c07('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5c07('0x8'));var _=require(_0x5c07('0x9'));var squel=require(_0x5c07('0xa'));var crypto=require('crypto');var jsforce=require(_0x5c07('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x5c07('0x7'));var querystring=require(_0x5c07('0xc'));var Papa=require(_0x5c07('0xd'));var Redis=require(_0x5c07('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x5c07('0xf'));var hardwareService=require(_0x5c07('0x10'));var logger=require('../../config/logger')(_0x5c07('0x11'));var utils=require(_0x5c07('0x12'));var config=require(_0x5c07('0x13'));var licenseUtil=require(_0x5c07('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x46398b,_0x41dd18){_0x41dd18=_0x41dd18||0xcc;return function(_0x3da04e){if(_0x3da04e){return _0x46398b['sendStatus'](_0x41dd18);}return _0x46398b[_0x5c07('0x15')](_0x41dd18)[_0x5c07('0x16')]();};}function respondWithResult(_0x556e0f,_0x5971ee){_0x5971ee=_0x5971ee||0xc8;return function(_0x1aedea){if(_0x1aedea){return _0x556e0f['status'](_0x5971ee)[_0x5c07('0x17')](_0x1aedea);}};}function respondWithFilteredResult(_0x123d4e,_0x21aebc){return function(_0x39cc0c){if(_0x39cc0c){var _0x125fb=typeof _0x21aebc[_0x5c07('0x18')]===_0x5c07('0x19')&&typeof _0x21aebc['limit']===_0x5c07('0x19');var _0x136694=_0x39cc0c[_0x5c07('0x1a')];var _0x3c3751=_0x125fb?0x0:_0x21aebc[_0x5c07('0x18')];var _0x48e27b=_0x125fb?_0x39cc0c[_0x5c07('0x1a')]:_0x21aebc[_0x5c07('0x18')]+_0x21aebc[_0x5c07('0x1b')];var _0x8dbf12;if(_0x48e27b>=_0x136694){_0x48e27b=_0x136694;_0x8dbf12=0xc8;}else{_0x8dbf12=0xce;}_0x123d4e[_0x5c07('0x15')](_0x8dbf12);return _0x123d4e['set'](_0x5c07('0x1c'),_0x3c3751+'-'+_0x48e27b+'/'+_0x136694)[_0x5c07('0x17')](_0x39cc0c);}return null;};}function patchUpdates(_0x36df01){return function(_0x311bd4){try{jsonpatch[_0x5c07('0x1d')](_0x311bd4,_0x36df01,!![]);}catch(_0x2856a0){return BPromise[_0x5c07('0x1e')](_0x2856a0);}return _0x311bd4[_0x5c07('0x1f')]();};}function saveUpdates(_0x487b01,_0x454d13){return function(_0x2703e1){if(_0x2703e1){return _0x2703e1[_0x5c07('0x20')](_0x487b01)['then'](function(_0x324ca9){return _0x324ca9;});}return null;};}function removeEntity(_0x55e7ea,_0x306331){return function(_0x2893c1){if(_0x2893c1){return _0x2893c1[_0x5c07('0x21')]()['then'](function(){var _0x41ea8f=_0x2893c1[_0x5c07('0x22')]({'plain':!![]});var _0x4744f4=_0x5c07('0x23');return db[_0x5c07('0x24')][_0x5c07('0x21')]({'where':{'type':_0x4744f4,'resourceId':_0x41ea8f['id']}})[_0x5c07('0x25')](function(){return _0x2893c1;});})[_0x5c07('0x25')](function(){_0x55e7ea[_0x5c07('0x15')](0xcc)[_0x5c07('0x16')]();});}};}function handleEntityNotFound(_0x3d423a,_0x32e3e2){return function(_0x64caf3){if(!_0x64caf3){_0x3d423a[_0x5c07('0x26')](0x194);}return _0x64caf3;};}function handleError(_0x59441b,_0x5864ab){_0x5864ab=_0x5864ab||0x1f4;return function(_0x5ef2dc){logger['error'](_0x5ef2dc[_0x5c07('0x27')]);if(_0x5ef2dc[_0x5c07('0x28')]){delete _0x5ef2dc[_0x5c07('0x28')];}_0x59441b[_0x5c07('0x15')](_0x5864ab)[_0x5c07('0x29')](_0x5ef2dc);};}exports[_0x5c07('0x2a')]=function(_0x192ccc,_0xc170a1){var _0xc8c3e4={},_0x5e18de={},_0x5a6d59={'count':0x0,'rows':[]};var _0x4cacf5=_['map'](db['Trigger'][_0x5c07('0x2b')],function(_0x4a2d7f){return{'name':_0x4a2d7f['fieldName'],'type':_0x4a2d7f[_0x5c07('0x2c')][_0x5c07('0x2d')]};});_0x5e18de[_0x5c07('0x2e')]=_[_0x5c07('0x2f')](_0x4cacf5,_0x5c07('0x28'));_0x5e18de[_0x5c07('0x30')]=_['keys'](_0x192ccc[_0x5c07('0x30')]);_0x5e18de['filters']=_[_0x5c07('0x31')](_0x5e18de[_0x5c07('0x2e')],_0x5e18de[_0x5c07('0x30')]);_0xc8c3e4[_0x5c07('0x32')]=_[_0x5c07('0x31')](_0x5e18de[_0x5c07('0x2e')],qs['fields'](_0x192ccc[_0x5c07('0x30')][_0x5c07('0x33')]));_0xc8c3e4[_0x5c07('0x32')]=_0xc8c3e4[_0x5c07('0x32')]['length']?_0xc8c3e4[_0x5c07('0x32')]:_0x5e18de[_0x5c07('0x2e')];if(!_0x192ccc['query'][_0x5c07('0x34')]('nolimit')){_0xc8c3e4[_0x5c07('0x1b')]=qs[_0x5c07('0x1b')](_0x192ccc['query']['limit']);_0xc8c3e4['offset']=qs['offset'](_0x192ccc[_0x5c07('0x30')]['offset']);}_0xc8c3e4['order']=qs[_0x5c07('0x35')](_0x192ccc['query']['sort']);_0xc8c3e4[_0x5c07('0x36')]=qs[_0x5c07('0x37')](_['pick'](_0x192ccc[_0x5c07('0x30')],_0x5e18de['filters']),_0x4cacf5);if(_0x192ccc['query'][_0x5c07('0x38')]){_0xc8c3e4[_0x5c07('0x36')]=_[_0x5c07('0x39')](_0xc8c3e4[_0x5c07('0x36')],{'$or':_['map'](_0x4cacf5,function(_0x289401){if(_0x289401[_0x5c07('0x2c')]!=='VIRTUAL'){var _0x117985={};_0x117985[_0x289401[_0x5c07('0x28')]]={'$like':'%'+_0x192ccc[_0x5c07('0x30')][_0x5c07('0x38')]+'%'};return _0x117985;}})});}_0xc8c3e4=_[_0x5c07('0x39')]({},_0xc8c3e4,_0x192ccc['options']);var _0x1316a8={'where':_0xc8c3e4[_0x5c07('0x36')]};return db[_0x5c07('0x3a')][_0x5c07('0x1a')](_0x1316a8)[_0x5c07('0x25')](function(_0x214b31){_0x5a6d59[_0x5c07('0x1a')]=_0x214b31;if(_0x192ccc[_0x5c07('0x30')][_0x5c07('0x3b')]){_0xc8c3e4[_0x5c07('0x3c')]=[{'all':!![]}];}return db[_0x5c07('0x3a')][_0x5c07('0x3d')](_0xc8c3e4);})[_0x5c07('0x25')](function(_0x42bfe0){_0x5a6d59['rows']=_0x42bfe0;return _0x5a6d59;})['then'](respondWithFilteredResult(_0xc170a1,_0xc8c3e4))[_0x5c07('0x3e')](handleError(_0xc170a1,null));};exports[_0x5c07('0x3f')]=function(_0x391fb8,_0xb27d91){var _0x24d2b5={'raw':![],'where':{'id':_0x391fb8[_0x5c07('0x40')]['id']}},_0x2671de={};_0x2671de[_0x5c07('0x2e')]=_[_0x5c07('0x41')](db['Trigger'][_0x5c07('0x2b')]);_0x2671de['query']=_[_0x5c07('0x41')](_0x391fb8[_0x5c07('0x30')]);_0x2671de[_0x5c07('0x37')]=_['intersection'](_0x2671de[_0x5c07('0x2e')],_0x2671de[_0x5c07('0x30')]);_0x24d2b5[_0x5c07('0x32')]=_[_0x5c07('0x31')](_0x2671de['model'],qs[_0x5c07('0x33')](_0x391fb8[_0x5c07('0x30')][_0x5c07('0x33')]));_0x24d2b5['attributes']=_0x24d2b5[_0x5c07('0x32')][_0x5c07('0x42')]?_0x24d2b5[_0x5c07('0x32')]:_0x2671de['model'];if(_0x391fb8[_0x5c07('0x30')]['includeAll']){_0x24d2b5[_0x5c07('0x3c')]=[{'all':!![]}];}_0x24d2b5=_['merge']({},_0x24d2b5,_0x391fb8[_0x5c07('0x43')]);return db[_0x5c07('0x3a')][_0x5c07('0x44')](_0x24d2b5)[_0x5c07('0x25')](handleEntityNotFound(_0xb27d91,null))[_0x5c07('0x25')](respondWithResult(_0xb27d91,null))[_0x5c07('0x3e')](handleError(_0xb27d91,null));};exports[_0x5c07('0x45')]=function(_0x510c3d,_0x1f6d63){return db[_0x5c07('0x3a')][_0x5c07('0x45')](_0x510c3d[_0x5c07('0x46')],{})[_0x5c07('0x25')](function(_0x228a8d){var _0xde5457=_0x510c3d[_0x5c07('0x47')][_0x5c07('0x22')]({'plain':!![]});if(!_0xde5457)throw new Error(_0x5c07('0x48'));if(_0xde5457[_0x5c07('0x49')]===_0x5c07('0x47')){var _0x5bb36c=_0x228a8d[_0x5c07('0x22')]({'plain':!![]});var _0x3ac253=_0x5c07('0x23');return db['UserProfileSection'][_0x5c07('0x44')]({'where':{'name':_0x3ac253,'userProfileId':_0xde5457[_0x5c07('0x4a')]},'raw':!![]})[_0x5c07('0x25')](function(_0x4b6739){if(_0x4b6739&&_0x4b6739[_0x5c07('0x4b')]===0x0){return db[_0x5c07('0x24')]['create']({'name':_0x5bb36c[_0x5c07('0x28')],'resourceId':_0x5bb36c['id'],'type':_0x4b6739['name'],'sectionId':_0x4b6739['id']},{})['then'](function(){return _0x228a8d;});}else{return _0x228a8d;}})[_0x5c07('0x3e')](function(_0x24cef3){logger['error'](_0x5c07('0x4c'),_0x24cef3);throw _0x24cef3;});}return _0x228a8d;})[_0x5c07('0x25')](respondWithResult(_0x1f6d63,0xc9))['catch'](handleError(_0x1f6d63,null));};exports[_0x5c07('0x20')]=function(_0x4a6f6c,_0x5be83d){if(_0x4a6f6c[_0x5c07('0x46')]['id']){delete _0x4a6f6c[_0x5c07('0x46')]['id'];}return db[_0x5c07('0x3a')][_0x5c07('0x44')]({'where':{'id':_0x4a6f6c['params']['id']}})['then'](handleEntityNotFound(_0x5be83d,null))[_0x5c07('0x25')](saveUpdates(_0x4a6f6c['body'],null))[_0x5c07('0x25')](respondWithResult(_0x5be83d,null))[_0x5c07('0x3e')](handleError(_0x5be83d,null));};exports[_0x5c07('0x21')]=function(_0xaac9f4,_0x4b4673){return db[_0x5c07('0x3a')][_0x5c07('0x44')]({'where':{'id':_0xaac9f4[_0x5c07('0x40')]['id']}})[_0x5c07('0x25')](handleEntityNotFound(_0x4b4673,null))['then'](removeEntity(_0x4b4673,null))[_0x5c07('0x3e')](handleError(_0x4b4673,null));};exports[_0x5c07('0x4d')]=function(_0x3b6ead,_0x1622a5,_0xc8e887){if(_0x3b6ead['body']['id']){delete _0x3b6ead[_0x5c07('0x46')]['id'];}return db[_0x5c07('0x3a')]['find']({'where':{'id':_0x3b6ead['params']['id']}})['then'](handleEntityNotFound(_0x1622a5,null))[_0x5c07('0x25')](function(_0x561ef3){if(_0x561ef3){_0x3b6ead[_0x5c07('0x46')]['TriggerAllId']=_0x561ef3['id'];return db['Condition']['create'](_0x3b6ead[_0x5c07('0x46')]);}})[_0x5c07('0x25')](respondWithResult(_0x1622a5,null))[_0x5c07('0x3e')](handleError(_0x1622a5,null));};exports[_0x5c07('0x4e')]=function(_0x461a3b,_0x52c8c1,_0x21f0e9){if(_0x461a3b[_0x5c07('0x46')]['id']){delete _0x461a3b[_0x5c07('0x46')]['id'];}return db['Trigger'][_0x5c07('0x44')]({'where':{'id':_0x461a3b[_0x5c07('0x40')]['id']}})[_0x5c07('0x25')](handleEntityNotFound(_0x52c8c1,null))[_0x5c07('0x25')](function(_0x534758){if(_0x534758){_0x461a3b['body'][_0x5c07('0x4f')]=_0x534758['id'];return db[_0x5c07('0x50')][_0x5c07('0x45')](_0x461a3b['body']);}})['then'](respondWithResult(_0x52c8c1,null))['catch'](handleError(_0x52c8c1,null));};exports[_0x5c07('0x51')]=function(_0x4ad717,_0x2af967,_0x3cf470){var _0x2f6f39={};var _0x195c9c={};var _0x54a5d1;var _0x50fff8;return db[_0x5c07('0x3a')]['findOne']({'where':{'id':_0x4ad717['params']['id']}})[_0x5c07('0x25')](handleEntityNotFound(_0x2af967,null))['then'](function(_0x47f4df){if(_0x47f4df){_0x54a5d1=_0x47f4df;_0x195c9c[_0x5c07('0x2e')]=_[_0x5c07('0x41')](db[_0x5c07('0x50')][_0x5c07('0x2b')]);_0x195c9c[_0x5c07('0x30')]=_[_0x5c07('0x41')](_0x4ad717['query']);_0x195c9c[_0x5c07('0x37')]=_['intersection'](_0x195c9c[_0x5c07('0x2e')],_0x195c9c['query']);_0x2f6f39['attributes']=_[_0x5c07('0x31')](_0x195c9c['model'],qs[_0x5c07('0x33')](_0x4ad717[_0x5c07('0x30')][_0x5c07('0x33')]));_0x2f6f39['attributes']=_0x2f6f39[_0x5c07('0x32')][_0x5c07('0x42')]?_0x2f6f39[_0x5c07('0x32')]:_0x195c9c[_0x5c07('0x2e')];_0x2f6f39[_0x5c07('0x52')]=qs[_0x5c07('0x35')](_0x4ad717[_0x5c07('0x30')][_0x5c07('0x35')]);_0x2f6f39[_0x5c07('0x36')]=qs[_0x5c07('0x37')](_[_0x5c07('0x53')](_0x4ad717[_0x5c07('0x30')],_0x195c9c[_0x5c07('0x37')]));if(_0x4ad717[_0x5c07('0x30')][_0x5c07('0x38')]){_0x2f6f39[_0x5c07('0x36')]=_[_0x5c07('0x39')](_0x2f6f39[_0x5c07('0x36')],{'$or':_['map'](_0x2f6f39[_0x5c07('0x32')],function(_0xecd712){var _0x4e88d8={};_0x4e88d8[_0xecd712]={'$like':'%'+_0x4ad717[_0x5c07('0x30')][_0x5c07('0x38')]+'%'};return _0x4e88d8;})});}_0x2f6f39=_[_0x5c07('0x39')]({},_0x2f6f39,_0x4ad717[_0x5c07('0x43')]);return _0x54a5d1['getAllConditions'](_0x2f6f39);}})['then'](function(_0x21e919){if(_0x21e919){_0x50fff8=_0x21e919['length'];if(!_0x4ad717[_0x5c07('0x30')]['hasOwnProperty'](_0x5c07('0x54'))){_0x2f6f39['limit']=qs[_0x5c07('0x1b')](_0x4ad717[_0x5c07('0x30')][_0x5c07('0x1b')]);_0x2f6f39[_0x5c07('0x18')]=qs[_0x5c07('0x18')](_0x4ad717[_0x5c07('0x30')][_0x5c07('0x18')]);}return _0x54a5d1[_0x5c07('0x51')](_0x2f6f39);}})[_0x5c07('0x25')](function(_0x50afad){if(_0x50afad){return _0x50afad?{'count':_0x50fff8,'rows':_0x50afad}:null;}})[_0x5c07('0x25')](respondWithResult(_0x2af967,null))['catch'](handleError(_0x2af967,null));};exports[_0x5c07('0x55')]=function(_0x4b8b71,_0x50cf25,_0x4f78b0){var _0x484a41={};var _0x500106={};var _0xb69106;var _0x44c6a7;return db[_0x5c07('0x3a')][_0x5c07('0x56')]({'where':{'id':_0x4b8b71[_0x5c07('0x40')]['id']}})[_0x5c07('0x25')](handleEntityNotFound(_0x50cf25,null))['then'](function(_0xf39114){if(_0xf39114){_0xb69106=_0xf39114;_0x500106['model']=_['keys'](db[_0x5c07('0x50')][_0x5c07('0x2b')]);_0x500106[_0x5c07('0x30')]=_[_0x5c07('0x41')](_0x4b8b71['query']);_0x500106[_0x5c07('0x37')]=_['intersection'](_0x500106[_0x5c07('0x2e')],_0x500106['query']);_0x484a41['attributes']=_['intersection'](_0x500106[_0x5c07('0x2e')],qs[_0x5c07('0x33')](_0x4b8b71[_0x5c07('0x30')][_0x5c07('0x33')]));_0x484a41[_0x5c07('0x32')]=_0x484a41['attributes'][_0x5c07('0x42')]?_0x484a41[_0x5c07('0x32')]:_0x500106['model'];_0x484a41[_0x5c07('0x52')]=qs['sort'](_0x4b8b71[_0x5c07('0x30')][_0x5c07('0x35')]);_0x484a41[_0x5c07('0x36')]=qs[_0x5c07('0x37')](_['pick'](_0x4b8b71[_0x5c07('0x30')],_0x500106['filters']));if(_0x4b8b71[_0x5c07('0x30')][_0x5c07('0x38')]){_0x484a41['where']=_[_0x5c07('0x39')](_0x484a41[_0x5c07('0x36')],{'$or':_[_0x5c07('0x2f')](_0x484a41[_0x5c07('0x32')],function(_0x105d9c){var _0x4d7a01={};_0x4d7a01[_0x105d9c]={'$like':'%'+_0x4b8b71['query']['filter']+'%'};return _0x4d7a01;})});}_0x484a41=_[_0x5c07('0x39')]({},_0x484a41,_0x4b8b71[_0x5c07('0x43')]);return _0xb69106[_0x5c07('0x55')](_0x484a41);}})['then'](function(_0x51a863){if(_0x51a863){_0x44c6a7=_0x51a863[_0x5c07('0x42')];if(!_0x4b8b71[_0x5c07('0x30')][_0x5c07('0x34')](_0x5c07('0x54'))){_0x484a41[_0x5c07('0x1b')]=qs[_0x5c07('0x1b')](_0x4b8b71[_0x5c07('0x30')][_0x5c07('0x1b')]);_0x484a41['offset']=qs['offset'](_0x4b8b71['query'][_0x5c07('0x18')]);}return _0xb69106[_0x5c07('0x55')](_0x484a41);}})['then'](function(_0x10f310){if(_0x10f310){return _0x10f310?{'count':_0x44c6a7,'rows':_0x10f310}:null;}})[_0x5c07('0x25')](respondWithResult(_0x50cf25,null))[_0x5c07('0x3e')](handleError(_0x50cf25,null));};exports['addAction']=function(_0x485f77,_0x1afc63,_0x3d0df9){if(_0x485f77['body']['id']){delete _0x485f77['body']['id'];}return db[_0x5c07('0x3a')][_0x5c07('0x44')]({'where':{'id':_0x485f77[_0x5c07('0x40')]['id']}})[_0x5c07('0x25')](handleEntityNotFound(_0x1afc63,null))[_0x5c07('0x25')](function(_0xd34ad5){if(_0xd34ad5){_0x485f77['body'][_0x5c07('0x57')]=_0xd34ad5['id'];return db['Action'][_0x5c07('0x45')](_0x485f77[_0x5c07('0x46')]);}})['then'](respondWithResult(_0x1afc63,null))[_0x5c07('0x3e')](handleError(_0x1afc63,null));};exports[_0x5c07('0x58')]=function(_0x43b5b6,_0x3f85aa,_0x30cd8d){var _0x52248a={};var _0x5d4a9f={};var _0x19c73d;var _0x1467b0;return db[_0x5c07('0x3a')][_0x5c07('0x56')]({'where':{'id':_0x43b5b6['params']['id']}})[_0x5c07('0x25')](handleEntityNotFound(_0x3f85aa,null))['then'](function(_0x423b65){if(_0x423b65){_0x19c73d=_0x423b65;_0x5d4a9f[_0x5c07('0x2e')]=_[_0x5c07('0x41')](db[_0x5c07('0x59')][_0x5c07('0x2b')]);_0x5d4a9f[_0x5c07('0x30')]=_[_0x5c07('0x41')](_0x43b5b6[_0x5c07('0x30')]);_0x5d4a9f[_0x5c07('0x37')]=_[_0x5c07('0x31')](_0x5d4a9f[_0x5c07('0x2e')],_0x5d4a9f[_0x5c07('0x30')]);_0x52248a[_0x5c07('0x32')]=_[_0x5c07('0x31')](_0x5d4a9f[_0x5c07('0x2e')],qs[_0x5c07('0x33')](_0x43b5b6[_0x5c07('0x30')]['fields']));_0x52248a[_0x5c07('0x32')]=_0x52248a[_0x5c07('0x32')][_0x5c07('0x42')]?_0x52248a[_0x5c07('0x32')]:_0x5d4a9f['model'];_0x52248a[_0x5c07('0x52')]=qs[_0x5c07('0x35')](_0x43b5b6['query'][_0x5c07('0x35')]);_0x52248a[_0x5c07('0x36')]=qs[_0x5c07('0x37')](_['pick'](_0x43b5b6['query'],_0x5d4a9f[_0x5c07('0x37')]));if(_0x43b5b6[_0x5c07('0x30')][_0x5c07('0x38')]){_0x52248a[_0x5c07('0x36')]=_[_0x5c07('0x39')](_0x52248a[_0x5c07('0x36')],{'$or':_[_0x5c07('0x2f')](_0x52248a[_0x5c07('0x32')],function(_0x14c73b){var _0x5e80ce={};_0x5e80ce[_0x14c73b]={'$like':'%'+_0x43b5b6[_0x5c07('0x30')][_0x5c07('0x38')]+'%'};return _0x5e80ce;})});}_0x52248a=_[_0x5c07('0x39')]({},_0x52248a,_0x43b5b6[_0x5c07('0x43')]);return _0x19c73d[_0x5c07('0x58')](_0x52248a);}})[_0x5c07('0x25')](function(_0x4ac023){if(_0x4ac023){_0x1467b0=_0x4ac023[_0x5c07('0x42')];if(!_0x43b5b6[_0x5c07('0x30')]['hasOwnProperty'](_0x5c07('0x54'))){_0x52248a[_0x5c07('0x1b')]=qs['limit'](_0x43b5b6[_0x5c07('0x30')][_0x5c07('0x1b')]);_0x52248a[_0x5c07('0x18')]=qs[_0x5c07('0x18')](_0x43b5b6['query'][_0x5c07('0x18')]);}return _0x19c73d[_0x5c07('0x58')](_0x52248a);}})[_0x5c07('0x25')](function(_0x3dcf60){if(_0x3dcf60){return _0x3dcf60?{'count':_0x1467b0,'rows':_0x3dcf60}:null;}})['then'](respondWithResult(_0x3f85aa,null))[_0x5c07('0x3e')](handleError(_0x3f85aa,null));};
\ No newline at end of file
+var _0x37c7=['json','offset','undefined','limit','Content-Range','apply','save','update','then','destroy','Triggers','name','index','map','Trigger','fieldName','type','model','query','filters','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','count','include','findAll','rows','catch','show','params','keys','intersection','includeAll','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','addAllCondition','TriggerAllId','addAnyCondition','Condition','getAllConditions','rawAttributes','getAnyConditions','findOne','addAction','Action','getActions','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status'];(function(_0x15ef43,_0x44ff1d){var _0xa31599=function(_0x107d76){while(--_0x107d76){_0x15ef43['push'](_0x15ef43['shift']());}};_0xa31599(++_0x44ff1d);}(_0x37c7,0x1b5));var _0x737c=function(_0x18e89d,_0x4814fe){_0x18e89d=_0x18e89d-0x0;var _0x1aea52=_0x37c7[_0x18e89d];return _0x1aea52;};'use strict';var emlformat=require(_0x737c('0x0'));var rimraf=require(_0x737c('0x1'));var zipdir=require(_0x737c('0x2'));var jsonpatch=require(_0x737c('0x3'));var rp=require('request-promise');var moment=require(_0x737c('0x4'));var BPromise=require(_0x737c('0x5'));var Mustache=require(_0x737c('0x6'));var util=require('util');var path=require(_0x737c('0x7'));var sox=require(_0x737c('0x8'));var csv=require(_0x737c('0x9'));var ejs=require(_0x737c('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x737c('0xb'));var squel=require(_0x737c('0xc'));var crypto=require(_0x737c('0xd'));var jsforce=require(_0x737c('0xe'));var deskjs=require(_0x737c('0xf'));var toCsv=require('to-csv');var querystring=require(_0x737c('0x10'));var Papa=require(_0x737c('0x11'));var Redis=require('ioredis');var authService=require(_0x737c('0x12'));var qs=require(_0x737c('0x13'));var as=require(_0x737c('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x737c('0x15'))('api');var utils=require(_0x737c('0x16'));var config=require(_0x737c('0x17'));var licenseUtil=require(_0x737c('0x18'));var db=require(_0x737c('0x19'))['db'];function respondWithStatusCode(_0x206722,_0x1d337e){_0x1d337e=_0x1d337e||0xcc;return function(_0x5ab62d){if(_0x5ab62d){return _0x206722[_0x737c('0x1a')](_0x1d337e);}return _0x206722[_0x737c('0x1b')](_0x1d337e)['end']();};}function respondWithResult(_0x2cb188,_0x69f486){_0x69f486=_0x69f486||0xc8;return function(_0x1839b9){if(_0x1839b9){return _0x2cb188[_0x737c('0x1b')](_0x69f486)[_0x737c('0x1c')](_0x1839b9);}};}function respondWithFilteredResult(_0x5baad1,_0x35026d){return function(_0x5e5f8c){if(_0x5e5f8c){var _0x57916c=typeof _0x35026d[_0x737c('0x1d')]===_0x737c('0x1e')&&typeof _0x35026d['limit']==='undefined';var _0x22b5ba=_0x5e5f8c['count'];var _0x34d6c8=_0x57916c?0x0:_0x35026d['offset'];var _0x1dd932=_0x57916c?_0x5e5f8c['count']:_0x35026d[_0x737c('0x1d')]+_0x35026d[_0x737c('0x1f')];var _0x373618;if(_0x1dd932>=_0x22b5ba){_0x1dd932=_0x22b5ba;_0x373618=0xc8;}else{_0x373618=0xce;}_0x5baad1[_0x737c('0x1b')](_0x373618);return _0x5baad1['set'](_0x737c('0x20'),_0x34d6c8+'-'+_0x1dd932+'/'+_0x22b5ba)[_0x737c('0x1c')](_0x5e5f8c);}return null;};}function patchUpdates(_0xcb3bf3){return function(_0x2fa875){try{jsonpatch[_0x737c('0x21')](_0x2fa875,_0xcb3bf3,!![]);}catch(_0x596b68){return BPromise['reject'](_0x596b68);}return _0x2fa875[_0x737c('0x22')]();};}function saveUpdates(_0x478cd7,_0x57fb27){return function(_0x1a0ec9){if(_0x1a0ec9){return _0x1a0ec9[_0x737c('0x23')](_0x478cd7)[_0x737c('0x24')](function(_0x544537){return _0x544537;});}return null;};}function removeEntity(_0x3a9cd0,_0xad126e){return function(_0x1e0deb){if(_0x1e0deb){return _0x1e0deb[_0x737c('0x25')]()[_0x737c('0x24')](function(){var _0x2edd20=_0x1e0deb['get']({'plain':!![]});var _0x5f5d2e=_0x737c('0x26');return db['UserProfileResource'][_0x737c('0x25')]({'where':{'type':_0x5f5d2e,'resourceId':_0x2edd20['id']}})['then'](function(){return _0x1e0deb;});})['then'](function(){_0x3a9cd0[_0x737c('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5080f3,_0xbf61c1){return function(_0x19a602){if(!_0x19a602){_0x5080f3[_0x737c('0x1a')](0x194);}return _0x19a602;};}function handleError(_0x493066,_0x5d5cd7){_0x5d5cd7=_0x5d5cd7||0x1f4;return function(_0x490434){logger['error'](_0x490434['stack']);if(_0x490434[_0x737c('0x27')]){delete _0x490434[_0x737c('0x27')];}_0x493066[_0x737c('0x1b')](_0x5d5cd7)['send'](_0x490434);};}exports[_0x737c('0x28')]=function(_0x375f80,_0x2c694e){var _0x4b81af={},_0x4a6274={},_0x43d362={'count':0x0,'rows':[]};var _0x1dc192=_[_0x737c('0x29')](db[_0x737c('0x2a')]['rawAttributes'],function(_0x1e2c7f){return{'name':_0x1e2c7f[_0x737c('0x2b')],'type':_0x1e2c7f[_0x737c('0x2c')]['key']};});_0x4a6274[_0x737c('0x2d')]=_[_0x737c('0x29')](_0x1dc192,_0x737c('0x27'));_0x4a6274[_0x737c('0x2e')]=_['keys'](_0x375f80[_0x737c('0x2e')]);_0x4a6274[_0x737c('0x2f')]=_['intersection'](_0x4a6274['model'],_0x4a6274[_0x737c('0x2e')]);_0x4b81af[_0x737c('0x30')]=_['intersection'](_0x4a6274[_0x737c('0x2d')],qs[_0x737c('0x31')](_0x375f80[_0x737c('0x2e')][_0x737c('0x31')]));_0x4b81af[_0x737c('0x30')]=_0x4b81af['attributes'][_0x737c('0x32')]?_0x4b81af[_0x737c('0x30')]:_0x4a6274[_0x737c('0x2d')];if(!_0x375f80[_0x737c('0x2e')][_0x737c('0x33')](_0x737c('0x34'))){_0x4b81af[_0x737c('0x1f')]=qs[_0x737c('0x1f')](_0x375f80['query'][_0x737c('0x1f')]);_0x4b81af[_0x737c('0x1d')]=qs[_0x737c('0x1d')](_0x375f80[_0x737c('0x2e')][_0x737c('0x1d')]);}_0x4b81af[_0x737c('0x35')]=qs['sort'](_0x375f80[_0x737c('0x2e')][_0x737c('0x36')]);_0x4b81af[_0x737c('0x37')]=qs[_0x737c('0x2f')](_[_0x737c('0x38')](_0x375f80[_0x737c('0x2e')],_0x4a6274[_0x737c('0x2f')]),_0x1dc192);if(_0x375f80[_0x737c('0x2e')][_0x737c('0x39')]){_0x4b81af['where']=_['merge'](_0x4b81af['where'],{'$or':_[_0x737c('0x29')](_0x1dc192,function(_0x454685){if(_0x454685[_0x737c('0x2c')]!==_0x737c('0x3a')){var _0x4d592c={};_0x4d592c[_0x454685[_0x737c('0x27')]]={'$like':'%'+_0x375f80['query']['filter']+'%'};return _0x4d592c;}})});}_0x4b81af=_[_0x737c('0x3b')]({},_0x4b81af,_0x375f80[_0x737c('0x3c')]);var _0x4e3eed={'where':_0x4b81af['where']};return db['Trigger'][_0x737c('0x3d')](_0x4e3eed)[_0x737c('0x24')](function(_0x29b1f3){_0x43d362[_0x737c('0x3d')]=_0x29b1f3;if(_0x375f80[_0x737c('0x2e')]['includeAll']){_0x4b81af[_0x737c('0x3e')]=[{'all':!![]}];}return db[_0x737c('0x2a')][_0x737c('0x3f')](_0x4b81af);})['then'](function(_0x6757cd){_0x43d362[_0x737c('0x40')]=_0x6757cd;return _0x43d362;})[_0x737c('0x24')](respondWithFilteredResult(_0x2c694e,_0x4b81af))[_0x737c('0x41')](handleError(_0x2c694e,null));};exports[_0x737c('0x42')]=function(_0x111de5,_0x1d88a5){var _0x54bd3d={'raw':![],'where':{'id':_0x111de5[_0x737c('0x43')]['id']}},_0x347911={};_0x347911[_0x737c('0x2d')]=_[_0x737c('0x44')](db[_0x737c('0x2a')]['rawAttributes']);_0x347911[_0x737c('0x2e')]=_[_0x737c('0x44')](_0x111de5[_0x737c('0x2e')]);_0x347911[_0x737c('0x2f')]=_[_0x737c('0x45')](_0x347911[_0x737c('0x2d')],_0x347911['query']);_0x54bd3d['attributes']=_[_0x737c('0x45')](_0x347911[_0x737c('0x2d')],qs[_0x737c('0x31')](_0x111de5['query'][_0x737c('0x31')]));_0x54bd3d[_0x737c('0x30')]=_0x54bd3d[_0x737c('0x30')][_0x737c('0x32')]?_0x54bd3d[_0x737c('0x30')]:_0x347911[_0x737c('0x2d')];if(_0x111de5[_0x737c('0x2e')][_0x737c('0x46')]){_0x54bd3d[_0x737c('0x3e')]=[{'all':!![]}];}_0x54bd3d=_[_0x737c('0x3b')]({},_0x54bd3d,_0x111de5[_0x737c('0x3c')]);return db[_0x737c('0x2a')][_0x737c('0x47')](_0x54bd3d)[_0x737c('0x24')](handleEntityNotFound(_0x1d88a5,null))[_0x737c('0x24')](respondWithResult(_0x1d88a5,null))['catch'](handleError(_0x1d88a5,null));};exports[_0x737c('0x48')]=function(_0x3175d3,_0x3c72af){return db[_0x737c('0x2a')][_0x737c('0x48')](_0x3175d3[_0x737c('0x49')],{})[_0x737c('0x24')](function(_0x22ee48){var _0x53db8b=_0x3175d3[_0x737c('0x4a')][_0x737c('0x4b')]({'plain':!![]});if(!_0x53db8b)throw new Error(_0x737c('0x4c'));if(_0x53db8b[_0x737c('0x4d')]===_0x737c('0x4a')){var _0x2c3ae7=_0x22ee48[_0x737c('0x4b')]({'plain':!![]});var _0x94142e=_0x737c('0x26');return db['UserProfileSection']['find']({'where':{'name':_0x94142e,'userProfileId':_0x53db8b[_0x737c('0x4e')]},'raw':!![]})[_0x737c('0x24')](function(_0xc9abd5){if(_0xc9abd5&&_0xc9abd5[_0x737c('0x4f')]===0x0){return db[_0x737c('0x50')]['create']({'name':_0x2c3ae7['name'],'resourceId':_0x2c3ae7['id'],'type':_0xc9abd5[_0x737c('0x27')],'sectionId':_0xc9abd5['id']},{})[_0x737c('0x24')](function(){return _0x22ee48;});}else{return _0x22ee48;}})[_0x737c('0x41')](function(_0x567c5e){logger['error'](_0x737c('0x51'),_0x567c5e);throw _0x567c5e;});}return _0x22ee48;})[_0x737c('0x24')](respondWithResult(_0x3c72af,0xc9))[_0x737c('0x41')](handleError(_0x3c72af,null));};exports[_0x737c('0x23')]=function(_0x346db5,_0x4246fb){if(_0x346db5['body']['id']){delete _0x346db5['body']['id'];}return db['Trigger']['find']({'where':{'id':_0x346db5[_0x737c('0x43')]['id']}})[_0x737c('0x24')](handleEntityNotFound(_0x4246fb,null))[_0x737c('0x24')](saveUpdates(_0x346db5[_0x737c('0x49')],null))[_0x737c('0x24')](respondWithResult(_0x4246fb,null))[_0x737c('0x41')](handleError(_0x4246fb,null));};exports[_0x737c('0x25')]=function(_0x4ae1cd,_0x56d84f){return db['Trigger']['find']({'where':{'id':_0x4ae1cd[_0x737c('0x43')]['id']}})[_0x737c('0x24')](handleEntityNotFound(_0x56d84f,null))[_0x737c('0x24')](removeEntity(_0x56d84f,null))[_0x737c('0x41')](handleError(_0x56d84f,null));};exports[_0x737c('0x52')]=function(_0x4fd3f6,_0x2c1162,_0x4ed6ea){if(_0x4fd3f6[_0x737c('0x49')]['id']){delete _0x4fd3f6[_0x737c('0x49')]['id'];}return db['Trigger'][_0x737c('0x47')]({'where':{'id':_0x4fd3f6[_0x737c('0x43')]['id']}})['then'](handleEntityNotFound(_0x2c1162,null))[_0x737c('0x24')](function(_0x47649d){if(_0x47649d){_0x4fd3f6[_0x737c('0x49')][_0x737c('0x53')]=_0x47649d['id'];return db['Condition'][_0x737c('0x48')](_0x4fd3f6[_0x737c('0x49')]);}})[_0x737c('0x24')](respondWithResult(_0x2c1162,null))[_0x737c('0x41')](handleError(_0x2c1162,null));};exports[_0x737c('0x54')]=function(_0x4306c4,_0x3e2491,_0x4517cb){if(_0x4306c4[_0x737c('0x49')]['id']){delete _0x4306c4[_0x737c('0x49')]['id'];}return db['Trigger']['find']({'where':{'id':_0x4306c4['params']['id']}})[_0x737c('0x24')](handleEntityNotFound(_0x3e2491,null))[_0x737c('0x24')](function(_0x5be997){if(_0x5be997){_0x4306c4[_0x737c('0x49')]['TriggerAnyId']=_0x5be997['id'];return db[_0x737c('0x55')][_0x737c('0x48')](_0x4306c4[_0x737c('0x49')]);}})[_0x737c('0x24')](respondWithResult(_0x3e2491,null))[_0x737c('0x41')](handleError(_0x3e2491,null));};exports[_0x737c('0x56')]=function(_0xb8aea5,_0x169672,_0x1ff9b6){var _0x233e2d={};var _0x3c9579={};var _0xa09433;var _0x5272a7;return db[_0x737c('0x2a')]['findOne']({'where':{'id':_0xb8aea5['params']['id']}})[_0x737c('0x24')](handleEntityNotFound(_0x169672,null))[_0x737c('0x24')](function(_0x19b222){if(_0x19b222){_0xa09433=_0x19b222;_0x3c9579[_0x737c('0x2d')]=_[_0x737c('0x44')](db['Condition'][_0x737c('0x57')]);_0x3c9579[_0x737c('0x2e')]=_[_0x737c('0x44')](_0xb8aea5['query']);_0x3c9579[_0x737c('0x2f')]=_['intersection'](_0x3c9579['model'],_0x3c9579[_0x737c('0x2e')]);_0x233e2d[_0x737c('0x30')]=_['intersection'](_0x3c9579[_0x737c('0x2d')],qs[_0x737c('0x31')](_0xb8aea5[_0x737c('0x2e')][_0x737c('0x31')]));_0x233e2d[_0x737c('0x30')]=_0x233e2d['attributes']['length']?_0x233e2d[_0x737c('0x30')]:_0x3c9579[_0x737c('0x2d')];_0x233e2d[_0x737c('0x35')]=qs[_0x737c('0x36')](_0xb8aea5[_0x737c('0x2e')][_0x737c('0x36')]);_0x233e2d[_0x737c('0x37')]=qs[_0x737c('0x2f')](_[_0x737c('0x38')](_0xb8aea5[_0x737c('0x2e')],_0x3c9579['filters']));if(_0xb8aea5[_0x737c('0x2e')][_0x737c('0x39')]){_0x233e2d[_0x737c('0x37')]=_['merge'](_0x233e2d[_0x737c('0x37')],{'$or':_[_0x737c('0x29')](_0x233e2d['attributes'],function(_0xf70b8d){var _0x3a6673={};_0x3a6673[_0xf70b8d]={'$like':'%'+_0xb8aea5[_0x737c('0x2e')][_0x737c('0x39')]+'%'};return _0x3a6673;})});}_0x233e2d=_[_0x737c('0x3b')]({},_0x233e2d,_0xb8aea5[_0x737c('0x3c')]);return _0xa09433[_0x737c('0x56')](_0x233e2d);}})[_0x737c('0x24')](function(_0x152254){if(_0x152254){_0x5272a7=_0x152254[_0x737c('0x32')];if(!_0xb8aea5['query'][_0x737c('0x33')](_0x737c('0x34'))){_0x233e2d[_0x737c('0x1f')]=qs[_0x737c('0x1f')](_0xb8aea5[_0x737c('0x2e')][_0x737c('0x1f')]);_0x233e2d['offset']=qs[_0x737c('0x1d')](_0xb8aea5['query'][_0x737c('0x1d')]);}return _0xa09433['getAllConditions'](_0x233e2d);}})[_0x737c('0x24')](function(_0x29bcf1){if(_0x29bcf1){return _0x29bcf1?{'count':_0x5272a7,'rows':_0x29bcf1}:null;}})[_0x737c('0x24')](respondWithResult(_0x169672,null))[_0x737c('0x41')](handleError(_0x169672,null));};exports[_0x737c('0x58')]=function(_0x2a215a,_0x52c947,_0x5af37a){var _0x4a31e3={};var _0x538ce5={};var _0x32da6f;var _0x2167b3;return db['Trigger'][_0x737c('0x59')]({'where':{'id':_0x2a215a[_0x737c('0x43')]['id']}})[_0x737c('0x24')](handleEntityNotFound(_0x52c947,null))[_0x737c('0x24')](function(_0x167c62){if(_0x167c62){_0x32da6f=_0x167c62;_0x538ce5[_0x737c('0x2d')]=_[_0x737c('0x44')](db[_0x737c('0x55')][_0x737c('0x57')]);_0x538ce5[_0x737c('0x2e')]=_[_0x737c('0x44')](_0x2a215a[_0x737c('0x2e')]);_0x538ce5[_0x737c('0x2f')]=_[_0x737c('0x45')](_0x538ce5[_0x737c('0x2d')],_0x538ce5[_0x737c('0x2e')]);_0x4a31e3[_0x737c('0x30')]=_['intersection'](_0x538ce5[_0x737c('0x2d')],qs[_0x737c('0x31')](_0x2a215a[_0x737c('0x2e')][_0x737c('0x31')]));_0x4a31e3[_0x737c('0x30')]=_0x4a31e3[_0x737c('0x30')][_0x737c('0x32')]?_0x4a31e3[_0x737c('0x30')]:_0x538ce5['model'];_0x4a31e3['order']=qs[_0x737c('0x36')](_0x2a215a['query'][_0x737c('0x36')]);_0x4a31e3[_0x737c('0x37')]=qs[_0x737c('0x2f')](_[_0x737c('0x38')](_0x2a215a[_0x737c('0x2e')],_0x538ce5['filters']));if(_0x2a215a[_0x737c('0x2e')][_0x737c('0x39')]){_0x4a31e3[_0x737c('0x37')]=_[_0x737c('0x3b')](_0x4a31e3[_0x737c('0x37')],{'$or':_[_0x737c('0x29')](_0x4a31e3[_0x737c('0x30')],function(_0x3e2405){var _0x52232e={};_0x52232e[_0x3e2405]={'$like':'%'+_0x2a215a[_0x737c('0x2e')][_0x737c('0x39')]+'%'};return _0x52232e;})});}_0x4a31e3=_[_0x737c('0x3b')]({},_0x4a31e3,_0x2a215a[_0x737c('0x3c')]);return _0x32da6f['getAnyConditions'](_0x4a31e3);}})[_0x737c('0x24')](function(_0x2d89db){if(_0x2d89db){_0x2167b3=_0x2d89db[_0x737c('0x32')];if(!_0x2a215a[_0x737c('0x2e')][_0x737c('0x33')](_0x737c('0x34'))){_0x4a31e3[_0x737c('0x1f')]=qs[_0x737c('0x1f')](_0x2a215a['query'][_0x737c('0x1f')]);_0x4a31e3[_0x737c('0x1d')]=qs['offset'](_0x2a215a['query'][_0x737c('0x1d')]);}return _0x32da6f['getAnyConditions'](_0x4a31e3);}})[_0x737c('0x24')](function(_0x513c5a){if(_0x513c5a){return _0x513c5a?{'count':_0x2167b3,'rows':_0x513c5a}:null;}})['then'](respondWithResult(_0x52c947,null))['catch'](handleError(_0x52c947,null));};exports[_0x737c('0x5a')]=function(_0x2384e4,_0x242888,_0x3d244c){if(_0x2384e4[_0x737c('0x49')]['id']){delete _0x2384e4['body']['id'];}return db['Trigger'][_0x737c('0x47')]({'where':{'id':_0x2384e4['params']['id']}})[_0x737c('0x24')](handleEntityNotFound(_0x242888,null))[_0x737c('0x24')](function(_0x9904d5){if(_0x9904d5){_0x2384e4[_0x737c('0x49')]['TriggerId']=_0x9904d5['id'];return db[_0x737c('0x5b')][_0x737c('0x48')](_0x2384e4[_0x737c('0x49')]);}})[_0x737c('0x24')](respondWithResult(_0x242888,null))['catch'](handleError(_0x242888,null));};exports['getActions']=function(_0x2a21de,_0x5a8ec5,_0x137f67){var _0x395886={};var _0x280798={};var _0x10157e;var _0x1507a9;return db[_0x737c('0x2a')]['findOne']({'where':{'id':_0x2a21de['params']['id']}})[_0x737c('0x24')](handleEntityNotFound(_0x5a8ec5,null))[_0x737c('0x24')](function(_0x49d61f){if(_0x49d61f){_0x10157e=_0x49d61f;_0x280798[_0x737c('0x2d')]=_['keys'](db[_0x737c('0x5b')]['rawAttributes']);_0x280798[_0x737c('0x2e')]=_[_0x737c('0x44')](_0x2a21de[_0x737c('0x2e')]);_0x280798['filters']=_[_0x737c('0x45')](_0x280798[_0x737c('0x2d')],_0x280798['query']);_0x395886['attributes']=_[_0x737c('0x45')](_0x280798['model'],qs[_0x737c('0x31')](_0x2a21de['query'][_0x737c('0x31')]));_0x395886['attributes']=_0x395886[_0x737c('0x30')][_0x737c('0x32')]?_0x395886[_0x737c('0x30')]:_0x280798[_0x737c('0x2d')];_0x395886[_0x737c('0x35')]=qs[_0x737c('0x36')](_0x2a21de[_0x737c('0x2e')][_0x737c('0x36')]);_0x395886['where']=qs[_0x737c('0x2f')](_[_0x737c('0x38')](_0x2a21de[_0x737c('0x2e')],_0x280798[_0x737c('0x2f')]));if(_0x2a21de[_0x737c('0x2e')][_0x737c('0x39')]){_0x395886[_0x737c('0x37')]=_[_0x737c('0x3b')](_0x395886[_0x737c('0x37')],{'$or':_[_0x737c('0x29')](_0x395886[_0x737c('0x30')],function(_0x38e67a){var _0x5ef9aa={};_0x5ef9aa[_0x38e67a]={'$like':'%'+_0x2a21de[_0x737c('0x2e')]['filter']+'%'};return _0x5ef9aa;})});}_0x395886=_[_0x737c('0x3b')]({},_0x395886,_0x2a21de[_0x737c('0x3c')]);return _0x10157e[_0x737c('0x5c')](_0x395886);}})[_0x737c('0x24')](function(_0x19f584){if(_0x19f584){_0x1507a9=_0x19f584[_0x737c('0x32')];if(!_0x2a21de[_0x737c('0x2e')][_0x737c('0x33')](_0x737c('0x34'))){_0x395886[_0x737c('0x1f')]=qs[_0x737c('0x1f')](_0x2a21de['query'][_0x737c('0x1f')]);_0x395886['offset']=qs['offset'](_0x2a21de['query']['offset']);}return _0x10157e[_0x737c('0x5c')](_0x395886);}})[_0x737c('0x24')](function(_0x63a9c4){if(_0x63a9c4){return _0x63a9c4?{'count':_0x1507a9,'rows':_0x63a9c4}:null;}})[_0x737c('0x24')](respondWithResult(_0x5a8ec5,null))['catch'](handleError(_0x5a8ec5,null));};
\ No newline at end of file
index 1293ff8..a272c19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8255=['Trigger','tools_triggers','lodash','util','../../config/logger','api','moment','bluebird','request-promise','./trigger.attributes','exports','define'];(function(_0x3fdd34,_0x1d612a){var _0x14bb56=function(_0x4539da){while(--_0x4539da){_0x3fdd34['push'](_0x3fdd34['shift']());}};_0x14bb56(++_0x1d612a);}(_0x8255,0x176));var _0x5825=function(_0x550381,_0x3f466f){_0x550381=_0x550381-0x0;var _0x51a5ea=_0x8255[_0x550381];return _0x51a5ea;};'use strict';var _=require(_0x5825('0x0'));var util=require(_0x5825('0x1'));var logger=require(_0x5825('0x2'))(_0x5825('0x3'));var moment=require(_0x5825('0x4'));var BPromise=require(_0x5825('0x5'));var rp=require(_0x5825('0x6'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x5825('0x7'));module[_0x5825('0x8')]=function(_0x122c90,_0xa8e4d1){return _0x122c90[_0x5825('0x9')](_0x5825('0xa'),attributes,{'tableName':_0x5825('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x07c3=['util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./trigger.attributes','exports','define','Trigger','tools_triggers','lodash'];(function(_0xb4ec3a,_0x2bace0){var _0x1b83db=function(_0x5278f3){while(--_0x5278f3){_0xb4ec3a['push'](_0xb4ec3a['shift']());}};_0x1b83db(++_0x2bace0);}(_0x07c3,0x1bf));var _0x307c=function(_0x44e50a,_0x1cc4a2){_0x44e50a=_0x44e50a-0x0;var _0x1b5994=_0x07c3[_0x44e50a];return _0x1b5994;};'use strict';var _=require(_0x307c('0x0'));var util=require(_0x307c('0x1'));var logger=require(_0x307c('0x2'))(_0x307c('0x3'));var moment=require(_0x307c('0x4'));var BPromise=require(_0x307c('0x5'));var rp=require(_0x307c('0x6'));var fs=require('fs');var path=require(_0x307c('0x7'));var rimraf=require('rimraf');var config=require(_0x307c('0x8'));var attributes=require(_0x307c('0x9'));module[_0x307c('0xa')]=function(_0x317066,_0x250f22){return _0x317066[_0x307c('0xb')](_0x307c('0xc'),attributes,{'tableName':_0x307c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 81a9938..dafcb69 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9880=['../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Trigger,\x20%s,\x20%s','request\x20sent','Trigger,\x20%s,\x20%s,\x20%s','error','message','result','catch','GetTrigger','Trigger','findAll','options','raw','where','include','model','attributes','map','debug','stringify','ShowTrigger','find','lodash','util','moment','randomstring','ioredis'];(function(_0x4b1984,_0x1bfb09){var _0x5c92d9=function(_0x504d7d){while(--_0x504d7d){_0x4b1984['push'](_0x4b1984['shift']());}};_0x5c92d9(++_0x1bfb09);}(_0x9880,0x187));var _0x0988=function(_0x5179a5,_0x419746){_0x5179a5=_0x5179a5-0x0;var _0x15c8ce=_0x9880[_0x5179a5];return _0x15c8ce;};'use strict';var _=require(_0x0988('0x0'));var util=require(_0x0988('0x1'));var moment=require(_0x0988('0x2'));var BPromise=require('bluebird');var rs=require(_0x0988('0x3'));var fs=require('fs');var Redis=require(_0x0988('0x4'));var db=require(_0x0988('0x5'))['db'];var utils=require(_0x0988('0x6'));var logger=require('../../config/logger')(_0x0988('0x7'));var config=require(_0x0988('0x8'));var jayson=require(_0x0988('0x9'));var client=jayson[_0x0988('0xa')][_0x0988('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x54e60e,_0x50e361,_0x5a92fb){return new BPromise(function(_0x185b96,_0xd54c55){return client[_0x0988('0xc')](_0x54e60e,_0x5a92fb)[_0x0988('0xd')](function(_0x2c4af2){logger[_0x0988('0xe')](_0x0988('0xf'),_0x50e361,_0x0988('0x10'));logger['debug'](_0x0988('0x11'),_0x50e361,_0x0988('0x10'),JSON['stringify'](_0x2c4af2));if(_0x2c4af2[_0x0988('0x12')]){if(_0x2c4af2[_0x0988('0x12')]['code']===0x1f4){logger['error']('Trigger,\x20%s,\x20%s',_0x50e361,_0x2c4af2['error']['message']);return _0xd54c55(_0x2c4af2[_0x0988('0x12')][_0x0988('0x13')]);}logger[_0x0988('0x12')](_0x0988('0xf'),_0x50e361,_0x2c4af2[_0x0988('0x12')][_0x0988('0x13')]);return _0x185b96(_0x2c4af2[_0x0988('0x12')]['message']);}else{logger[_0x0988('0xe')](_0x0988('0xf'),_0x50e361,_0x0988('0x10'));_0x185b96(_0x2c4af2[_0x0988('0x14')][_0x0988('0x13')]);}})[_0x0988('0x15')](function(_0x19b59d){logger[_0x0988('0x12')](_0x0988('0xf'),_0x50e361,_0x19b59d);_0xd54c55(_0x19b59d);});});}exports[_0x0988('0x16')]=function(_0x9d24fb){var _0x22a5dd=this;return new Promise(function(_0x3b4efd,_0x157452){return db[_0x0988('0x17')][_0x0988('0x18')]({'raw':_0x9d24fb[_0x0988('0x19')]?_0x9d24fb['options'][_0x0988('0x1a')]===undefined?!![]:![]:!![],'where':_0x9d24fb[_0x0988('0x19')]?_0x9d24fb[_0x0988('0x19')][_0x0988('0x1b')]||null:null,'attributes':_0x9d24fb['options']?_0x9d24fb[_0x0988('0x19')]['attributes']||null:null,'limit':_0x9d24fb['options']?_0x9d24fb[_0x0988('0x19')]['limit']||null:null,'include':_0x9d24fb[_0x0988('0x19')]?_0x9d24fb['options']['include']?_['map'](_0x9d24fb[_0x0988('0x19')][_0x0988('0x1c')],function(_0x4c48e7){return{'model':db[_0x4c48e7[_0x0988('0x1d')]],'as':_0x4c48e7['as'],'attributes':_0x4c48e7['attributes'],'include':_0x4c48e7['include']?_['map'](_0x4c48e7[_0x0988('0x1c')],function(_0x2401f0){return{'model':db[_0x2401f0[_0x0988('0x1d')]],'as':_0x2401f0['as'],'attributes':_0x2401f0[_0x0988('0x1e')],'include':_0x2401f0['include']?_[_0x0988('0x1f')](_0x2401f0['include'],function(_0x1f84e6){return{'model':db[_0x1f84e6['model']],'as':_0x1f84e6['as'],'attributes':_0x1f84e6[_0x0988('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x0988('0xd')](function(_0x1bdfef){logger[_0x0988('0xe')](_0x0988('0x16'),_0x9d24fb);logger[_0x0988('0x20')](_0x0988('0x16'),_0x9d24fb,JSON[_0x0988('0x21')](_0x1bdfef));_0x3b4efd(_0x1bdfef);})[_0x0988('0x15')](function(_0x233ffa){logger['error'](_0x0988('0x16'),_0x233ffa[_0x0988('0x13')],_0x9d24fb);_0x157452(_0x22a5dd[_0x0988('0x12')](0x1f4,_0x233ffa['message']));});});};exports[_0x0988('0x22')]=function(_0x4f24e5){var _0x87aa7f=this;return new Promise(function(_0x56bafa,_0x1312e3){return db['Trigger'][_0x0988('0x23')]({'raw':_0x4f24e5[_0x0988('0x19')]?_0x4f24e5[_0x0988('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x4f24e5[_0x0988('0x19')]?_0x4f24e5[_0x0988('0x19')][_0x0988('0x1b')]||null:null,'attributes':_0x4f24e5['options']?_0x4f24e5[_0x0988('0x19')][_0x0988('0x1e')]||null:null,'include':_0x4f24e5[_0x0988('0x19')]?_0x4f24e5['options'][_0x0988('0x1c')]?_[_0x0988('0x1f')](_0x4f24e5['options'][_0x0988('0x1c')],function(_0x1f94f0){return{'model':db[_0x1f94f0[_0x0988('0x1d')]],'as':_0x1f94f0['as'],'attributes':_0x1f94f0[_0x0988('0x1e')],'include':_0x1f94f0[_0x0988('0x1c')]?_[_0x0988('0x1f')](_0x1f94f0[_0x0988('0x1c')],function(_0x2b24b9){return{'model':db[_0x2b24b9[_0x0988('0x1d')]],'as':_0x2b24b9['as'],'attributes':_0x2b24b9[_0x0988('0x1e')],'include':_0x2b24b9[_0x0988('0x1c')]?_['map'](_0x2b24b9['include'],function(_0xf566a6){return{'model':db[_0xf566a6[_0x0988('0x1d')]],'as':_0xf566a6['as'],'attributes':_0xf566a6[_0x0988('0x1e')]};}):[]};}):[]};}):[]:[]})[_0x0988('0xd')](function(_0x3620ef){logger['info'](_0x0988('0x22'),_0x4f24e5);logger['debug'](_0x0988('0x22'),_0x4f24e5,JSON[_0x0988('0x21')](_0x3620ef));_0x56bafa(_0x3620ef);})[_0x0988('0x15')](function(_0x3a21b8){logger[_0x0988('0x12')](_0x0988('0x22'),_0x3a21b8[_0x0988('0x13')],_0x4f24e5);_0x1312e3(_0x87aa7f['error'](0x1f4,_0x3a21b8[_0x0988('0x13')]));});});};
\ No newline at end of file
+var _0xbb25=['Trigger','findAll','options','where','attributes','limit','include','map','model','stringify','ShowTrigger','find','raw','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info','Trigger,\x20%s,\x20%s','request\x20sent','debug','Trigger,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','GetTrigger'];(function(_0xb0f7c3,_0x4eae95){var _0x28ea68=function(_0x4395a7){while(--_0x4395a7){_0xb0f7c3['push'](_0xb0f7c3['shift']());}};_0x28ea68(++_0x4eae95);}(_0xbb25,0xf1));var _0x5bb2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xbb25[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var util=require(_0x5bb2('0x0'));var moment=require('moment');var BPromise=require(_0x5bb2('0x1'));var rs=require(_0x5bb2('0x2'));var fs=require('fs');var Redis=require(_0x5bb2('0x3'));var db=require(_0x5bb2('0x4'))['db'];var utils=require(_0x5bb2('0x5'));var logger=require(_0x5bb2('0x6'))(_0x5bb2('0x7'));var config=require(_0x5bb2('0x8'));var jayson=require(_0x5bb2('0x9'));var client=jayson[_0x5bb2('0xa')][_0x5bb2('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x2ff7f2,_0x38cdcd,_0x4e6be5){return new BPromise(function(_0x54bb69,_0xd6ff5a){return client[_0x5bb2('0xc')](_0x2ff7f2,_0x4e6be5)[_0x5bb2('0xd')](function(_0x1ea05f){logger[_0x5bb2('0xe')](_0x5bb2('0xf'),_0x38cdcd,_0x5bb2('0x10'));logger[_0x5bb2('0x11')](_0x5bb2('0x12'),_0x38cdcd,_0x5bb2('0x10'),JSON['stringify'](_0x1ea05f));if(_0x1ea05f[_0x5bb2('0x13')]){if(_0x1ea05f[_0x5bb2('0x13')][_0x5bb2('0x14')]===0x1f4){logger[_0x5bb2('0x13')](_0x5bb2('0xf'),_0x38cdcd,_0x1ea05f['error'][_0x5bb2('0x15')]);return _0xd6ff5a(_0x1ea05f[_0x5bb2('0x13')][_0x5bb2('0x15')]);}logger[_0x5bb2('0x13')](_0x5bb2('0xf'),_0x38cdcd,_0x1ea05f[_0x5bb2('0x13')][_0x5bb2('0x15')]);return _0x54bb69(_0x1ea05f[_0x5bb2('0x13')][_0x5bb2('0x15')]);}else{logger[_0x5bb2('0xe')]('Trigger,\x20%s,\x20%s',_0x38cdcd,_0x5bb2('0x10'));_0x54bb69(_0x1ea05f[_0x5bb2('0x16')][_0x5bb2('0x15')]);}})[_0x5bb2('0x17')](function(_0x2b6676){logger[_0x5bb2('0x13')](_0x5bb2('0xf'),_0x38cdcd,_0x2b6676);_0xd6ff5a(_0x2b6676);});});}exports[_0x5bb2('0x18')]=function(_0x266db8){var _0x3314ea=this;return new Promise(function(_0x4f960a,_0x53ce49){return db[_0x5bb2('0x19')][_0x5bb2('0x1a')]({'raw':_0x266db8[_0x5bb2('0x1b')]?_0x266db8[_0x5bb2('0x1b')]['raw']===undefined?!![]:![]:!![],'where':_0x266db8[_0x5bb2('0x1b')]?_0x266db8['options'][_0x5bb2('0x1c')]||null:null,'attributes':_0x266db8['options']?_0x266db8[_0x5bb2('0x1b')][_0x5bb2('0x1d')]||null:null,'limit':_0x266db8[_0x5bb2('0x1b')]?_0x266db8[_0x5bb2('0x1b')][_0x5bb2('0x1e')]||null:null,'include':_0x266db8['options']?_0x266db8[_0x5bb2('0x1b')][_0x5bb2('0x1f')]?_[_0x5bb2('0x20')](_0x266db8[_0x5bb2('0x1b')][_0x5bb2('0x1f')],function(_0x4c47b8){return{'model':db[_0x4c47b8[_0x5bb2('0x21')]],'as':_0x4c47b8['as'],'attributes':_0x4c47b8['attributes'],'include':_0x4c47b8[_0x5bb2('0x1f')]?_[_0x5bb2('0x20')](_0x4c47b8['include'],function(_0x5c9497){return{'model':db[_0x5c9497[_0x5bb2('0x21')]],'as':_0x5c9497['as'],'attributes':_0x5c9497[_0x5bb2('0x1d')],'include':_0x5c9497[_0x5bb2('0x1f')]?_[_0x5bb2('0x20')](_0x5c9497[_0x5bb2('0x1f')],function(_0x44c848){return{'model':db[_0x44c848[_0x5bb2('0x21')]],'as':_0x44c848['as'],'attributes':_0x44c848[_0x5bb2('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x5bb2('0xd')](function(_0x424c60){logger['info'](_0x5bb2('0x18'),_0x266db8);logger['debug'](_0x5bb2('0x18'),_0x266db8,JSON[_0x5bb2('0x22')](_0x424c60));_0x4f960a(_0x424c60);})[_0x5bb2('0x17')](function(_0x5e2f87){logger['error'](_0x5bb2('0x18'),_0x5e2f87[_0x5bb2('0x15')],_0x266db8);_0x53ce49(_0x3314ea[_0x5bb2('0x13')](0x1f4,_0x5e2f87['message']));});});};exports[_0x5bb2('0x23')]=function(_0x3388b2){var _0x14499d=this;return new Promise(function(_0x5bb07b,_0xfd42ad){return db[_0x5bb2('0x19')][_0x5bb2('0x24')]({'raw':_0x3388b2[_0x5bb2('0x1b')]?_0x3388b2['options'][_0x5bb2('0x25')]===undefined?!![]:![]:!![],'where':_0x3388b2[_0x5bb2('0x1b')]?_0x3388b2[_0x5bb2('0x1b')][_0x5bb2('0x1c')]||null:null,'attributes':_0x3388b2[_0x5bb2('0x1b')]?_0x3388b2[_0x5bb2('0x1b')][_0x5bb2('0x1d')]||null:null,'include':_0x3388b2['options']?_0x3388b2[_0x5bb2('0x1b')][_0x5bb2('0x1f')]?_[_0x5bb2('0x20')](_0x3388b2['options']['include'],function(_0x440b2f){return{'model':db[_0x440b2f[_0x5bb2('0x21')]],'as':_0x440b2f['as'],'attributes':_0x440b2f[_0x5bb2('0x1d')],'include':_0x440b2f['include']?_[_0x5bb2('0x20')](_0x440b2f['include'],function(_0x54f80e){return{'model':db[_0x54f80e[_0x5bb2('0x21')]],'as':_0x54f80e['as'],'attributes':_0x54f80e[_0x5bb2('0x1d')],'include':_0x54f80e['include']?_[_0x5bb2('0x20')](_0x54f80e[_0x5bb2('0x1f')],function(_0x156d25){return{'model':db[_0x156d25[_0x5bb2('0x21')]],'as':_0x156d25['as'],'attributes':_0x156d25['attributes']};}):[]};}):[]};}):[]:[]})[_0x5bb2('0xd')](function(_0x321fd5){logger[_0x5bb2('0xe')]('ShowTrigger',_0x3388b2);logger[_0x5bb2('0x11')](_0x5bb2('0x23'),_0x3388b2,JSON[_0x5bb2('0x22')](_0x321fd5));_0x5bb07b(_0x321fd5);})[_0x5bb2('0x17')](function(_0x4de53f){logger[_0x5bb2('0x13')](_0x5bb2('0x23'),_0x4de53f[_0x5bb2('0x15')],_0x3388b2);_0xfd42ad(_0x14499d[_0x5bb2('0x13')](0x1f4,_0x4de53f['message']));});});};
\ No newline at end of file
index 6870575..532f655 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x40c5=['path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','/:id/clone','clone','create','put','/:id','update','delete','exports','multer','util'];(function(_0x3bcd64,_0x8faae0){var _0x182564=function(_0x36ec03){while(--_0x36ec03){_0x3bcd64['push'](_0x3bcd64['shift']());}};_0x182564(++_0x8faae0);}(_0x40c5,0xa6));var _0x540c=function(_0x53c7ea,_0x13789e){_0x53c7ea=_0x53c7ea-0x0;var _0x4197e1=_0x40c5[_0x53c7ea];return _0x4197e1;};'use strict';var multer=require(_0x540c('0x0'));var util=require(_0x540c('0x1'));var path=require(_0x540c('0x2'));var timeout=require('connect-timeout');var express=require(_0x540c('0x3'));var router=express[_0x540c('0x4')]();var fs_extra=require(_0x540c('0x5'));var auth=require(_0x540c('0x6'));var interaction=require(_0x540c('0x7'));var config=require(_0x540c('0x8'));var controller=require('./trunk.controller');router[_0x540c('0x9')]('/',auth[_0x540c('0xa')](),controller[_0x540c('0xb')]);router[_0x540c('0x9')]('/:id',auth[_0x540c('0xa')](),controller[_0x540c('0xc')]);router['post'](_0x540c('0xd'),auth['isAuthenticated'](),controller[_0x540c('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0x540c('0xf')]);router[_0x540c('0x10')](_0x540c('0x11'),auth[_0x540c('0xa')](),controller[_0x540c('0x12')]);router[_0x540c('0x13')](_0x540c('0x11'),auth['isAuthenticated'](),controller['destroy']);module[_0x540c('0x14')]=router;
\ No newline at end of file
+var _0x0e4c=['put','destroy','exports','multer','path','connect-timeout','express','Router','../../components/auth/service','../../config/environment','./trunk.controller','get','isAuthenticated','index','/:id','show','post','create'];(function(_0x1a71cb,_0x5ca695){var _0x4fb562=function(_0x53cf59){while(--_0x53cf59){_0x1a71cb['push'](_0x1a71cb['shift']());}};_0x4fb562(++_0x5ca695);}(_0x0e4c,0xb7));var _0xc0e4=function(_0x439f6c,_0x256cb4){_0x439f6c=_0x439f6c-0x0;var _0x178e6a=_0x0e4c[_0x439f6c];return _0x178e6a;};'use strict';var multer=require(_0xc0e4('0x0'));var util=require('util');var path=require(_0xc0e4('0x1'));var timeout=require(_0xc0e4('0x2'));var express=require(_0xc0e4('0x3'));var router=express[_0xc0e4('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xc0e4('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xc0e4('0x6'));var controller=require(_0xc0e4('0x7'));router[_0xc0e4('0x8')]('/',auth[_0xc0e4('0x9')](),controller[_0xc0e4('0xa')]);router[_0xc0e4('0x8')](_0xc0e4('0xb'),auth[_0xc0e4('0x9')](),controller[_0xc0e4('0xc')]);router[_0xc0e4('0xd')]('/:id/clone',auth['isAuthenticated'](),controller['clone']);router[_0xc0e4('0xd')]('/',auth[_0xc0e4('0x9')](),controller[_0xc0e4('0xe')]);router[_0xc0e4('0xf')](_0xc0e4('0xb'),auth[_0xc0e4('0x9')](),controller['update']);router['delete']('/:id',auth[_0xc0e4('0x9')](),controller[_0xc0e4('0x10')]);module[_0xc0e4('0x11')]=router;
\ No newline at end of file
index 8517974..b0d8eea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cca=['insecure','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]','never','INTEGER','always','uas','pai','fingerprint','certificate','passive','actpass','dynamic','nonat','update','update,nonat','sequelize','name','friend','user','peer','STRING','from-voip-provider','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','setDataValue','transport','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','inband','auto','ENUM','yes','outgoing','force_rport,comedia','nat','join','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'];(function(_0x37dacb,_0x2048bf){var _0x3a4ff8=function(_0x3929c1){while(--_0x3929c1){_0x37dacb['push'](_0x37dacb['shift']());}};_0x3a4ff8(++_0x2048bf);}(_0x3cca,0xcb));var _0xa3cc=function(_0x1f28ad,_0x2b26bc){_0x1f28ad=_0x1f28ad-0x0;var _0x31eb49=_0x3cca[_0x1f28ad];return _0x31eb49;};'use strict';var Sequelize=require(_0xa3cc('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0xa3cc('0x1'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM'](_0xa3cc('0x2'),_0xa3cc('0x3'),_0xa3cc('0x4')),'allowNull':![],'defaultValue':_0xa3cc('0x2')},'context':{'type':Sequelize[_0xa3cc('0x5')],'allowNull':![],'defaultValue':_0xa3cc('0x6')},'callingpres':{'type':Sequelize['ENUM']('ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN',_0xa3cc('0x7'),_0xa3cc('0x8'),_0xa3cc('0x9'),_0xa3cc('0xa'),_0xa3cc('0xb'),'PROHIB')},'deny':{'type':Sequelize[_0xa3cc('0x5')]},'permit':{'type':Sequelize[_0xa3cc('0x5')]},'secret':{'type':Sequelize['STRING']},'md5secret':{'type':Sequelize['STRING']},'remotesecret':{'type':Sequelize[_0xa3cc('0x5')]},'transport':{'type':Sequelize[_0xa3cc('0x5')],'defaultValue':'udp','set':function(_0x243c0e){this[_0xa3cc('0xc')](_0xa3cc('0xd'),_0x243c0e?_0x243c0e['join'](','):null);},'get':function(){return this[_0xa3cc('0xe')]('transport')?this[_0xa3cc('0xe')](_0xa3cc('0xd'))[_0xa3cc('0xf')](','):null;},'comment':_0xa3cc('0x10')},'dtmfmode':{'type':Sequelize['ENUM'](_0xa3cc('0x11'),_0xa3cc('0x12'),'shortinfo',_0xa3cc('0x13'),_0xa3cc('0x14')),'defaultValue':_0xa3cc('0x11')},'directmedia':{'type':Sequelize[_0xa3cc('0x15')](_0xa3cc('0x16'),'no','nonat','update',_0xa3cc('0x17')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xa3cc('0x15')](_0xa3cc('0x16'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xa3cc('0x5')]},'directmediadeny':{'type':Sequelize['STRING']},'nat':{'type':Sequelize[_0xa3cc('0x5')],'defaultValue':_0xa3cc('0x18'),'set':function(_0x58f211){this[_0xa3cc('0xc')](_0xa3cc('0x19'),_0x58f211?_0x58f211[_0xa3cc('0x1a')](','):null);},'get':function(){return this[_0xa3cc('0xe')](_0xa3cc('0x19'))?this['getDataValue'](_0xa3cc('0x19'))[_0xa3cc('0xf')](','):null;},'comment':_0xa3cc('0x1b')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize['STRING']},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0xa3cc('0x5')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xa3cc('0x5')],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':'all'},'allow':{'type':Sequelize[_0xa3cc('0x5')],'allowNull':![],'defaultValue':_0xa3cc('0x1c'),'set':function(_0x514746){this[_0xa3cc('0xc')](_0xa3cc('0x1d'),_0x514746?_0x514746[_0xa3cc('0x1a')](';'):_0xa3cc('0x1c'));},'get':function(){return this[_0xa3cc('0xe')](_0xa3cc('0x1d'))?this[_0xa3cc('0xe')](_0xa3cc('0x1d'))['split'](';'):null;},'comment':_0xa3cc('0x1e')},'autoframing':{'type':Sequelize['ENUM'](_0xa3cc('0x16'),'no')},'insecure':{'type':Sequelize[_0xa3cc('0x5')],'defaultValue':_0xa3cc('0x1f'),'set':function(_0x1fea6d){this['setDataValue']('insecure',_0x1fea6d?_0x1fea6d[_0xa3cc('0x1a')](','):null);},'get':function(){return this[_0xa3cc('0xe')](_0xa3cc('0x20'))?this[_0xa3cc('0xe')]('insecure')[_0xa3cc('0xf')](','):null;},'comment':_0xa3cc('0x21')},'trustrpid':{'type':Sequelize[_0xa3cc('0x15')]('yes','no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize['ENUM'](_0xa3cc('0x16'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize[_0xa3cc('0x15')](_0xa3cc('0x16'),'no',_0xa3cc('0x22'))},'promiscredir':{'type':Sequelize[_0xa3cc('0x15')]('yes','no')},'useclientcode':{'type':Sequelize['ENUM'](_0xa3cc('0x16'),'no')},'accountcode':{'type':Sequelize[_0xa3cc('0x23')](0xb)},'setvar':{'type':Sequelize[_0xa3cc('0x5')]},'callerid':{'type':Sequelize[_0xa3cc('0x5')],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize['STRING']},'callcounter':{'type':Sequelize[_0xa3cc('0x15')](_0xa3cc('0x16'),'no'),'defaultValue':_0xa3cc('0x16')},'busylevel':{'type':Sequelize[_0xa3cc('0x23')](0xb)},'allowoverlap':{'type':Sequelize[_0xa3cc('0x15')](_0xa3cc('0x16'),'no')},'allowsubscribe':{'type':Sequelize[_0xa3cc('0x15')](_0xa3cc('0x16'),'no')},'allowtransfer':{'type':Sequelize[_0xa3cc('0x15')]('yes','no')},'ignoresdpversion':{'type':Sequelize['ENUM'](_0xa3cc('0x16'),'no')},'subscribecontext':{'type':Sequelize['STRING']},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize[_0xa3cc('0x15')](_0xa3cc('0x16'),'no',_0xa3cc('0x24')),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize['INTEGER'](0xb)},'rfc2833compensate':{'type':Sequelize[_0xa3cc('0x15')](_0xa3cc('0x16'),'no')},'mailbox':{'type':Sequelize[_0xa3cc('0x5')]},'session_timers':{'type':Sequelize[_0xa3cc('0x15')]('accept','refuse','originate')},'session_expires':{'type':Sequelize[_0xa3cc('0x23')](0xb)},'session_minse':{'type':Sequelize[_0xa3cc('0x23')](0xb)},'session_refresher':{'type':Sequelize[_0xa3cc('0x15')]('uac',_0xa3cc('0x25')),'defaultValue':_0xa3cc('0x25')},'t38pt_usertpsource':{'type':Sequelize[_0xa3cc('0x5')]},'regexten':{'type':Sequelize[_0xa3cc('0x5')]},'fromdomain':{'type':Sequelize['STRING']},'fromuser':{'type':Sequelize[_0xa3cc('0x5')]},'port':{'type':Sequelize[_0xa3cc('0x23')](0x5)},'qualify':{'type':Sequelize[_0xa3cc('0x15')](_0xa3cc('0x16'),'no'),'defaultValue':_0xa3cc('0x16')},'keepalive':{'type':Sequelize[_0xa3cc('0x23')](0xb)},'defaultip':{'type':Sequelize[_0xa3cc('0x5')]},'defaultuser':{'type':Sequelize['STRING']},'rtptimeout':{'type':Sequelize[_0xa3cc('0x23')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xa3cc('0x23')](0xb)},'rtpkeepalive':{'type':Sequelize[_0xa3cc('0x23')](0xb)},'sendrpid':{'type':Sequelize[_0xa3cc('0x15')](_0xa3cc('0x16'),'no',_0xa3cc('0x26')),'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0xa3cc('0x5')]},'callbackextension':{'type':Sequelize['STRING']},'timert1':{'type':Sequelize['INTEGER'](0xb)},'timerb':{'type':Sequelize[_0xa3cc('0x23')](0xb)},'qualifyfreq':{'type':Sequelize[_0xa3cc('0x23')](0xb)},'contactpermit':{'type':Sequelize[_0xa3cc('0x5')]},'contactdeny':{'type':Sequelize[_0xa3cc('0x5')]},'contactacl':{'type':Sequelize['STRING']},'unsolicited_mailbox':{'type':Sequelize[_0xa3cc('0x5')]},'use_q850_reason':{'type':Sequelize[_0xa3cc('0x5')]},'maxforwards':{'type':Sequelize[_0xa3cc('0x23')](0xb)},'encryption':{'type':Sequelize[_0xa3cc('0x15')]('yes','no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0xa3cc('0x15')](_0xa3cc('0x16'),'no')},'force_avp':{'type':Sequelize[_0xa3cc('0x15')]('yes','no')},'icesupport':{'type':Sequelize['ENUM'](_0xa3cc('0x16'),'no')},'dtlsenable':{'type':Sequelize[_0xa3cc('0x15')](_0xa3cc('0x16'),'no')},'dtlsverify':{'type':Sequelize[_0xa3cc('0x15')](_0xa3cc('0x16'),'no',_0xa3cc('0x27'),_0xa3cc('0x28'))},'dtlsrekey':{'type':Sequelize['INTEGER'](0xb)},'dtlscertfile':{'type':Sequelize[_0xa3cc('0x5')]},'dtlsprivatekey':{'type':Sequelize[_0xa3cc('0x5')]},'dtlscipher':{'type':Sequelize[_0xa3cc('0x5')]},'dtlscafile':{'type':Sequelize[_0xa3cc('0x5')]},'dtlscapath':{'type':Sequelize['STRING']},'dtlssetup':{'type':Sequelize['ENUM']('active',_0xa3cc('0x29'),_0xa3cc('0x2a')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xa3cc('0x5')]},'usereqphone':{'type':Sequelize[_0xa3cc('0x15')](_0xa3cc('0x16'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize['STRING']},'recordofffeature':{'type':Sequelize[_0xa3cc('0x5')]},'call_limit':{'type':Sequelize[_0xa3cc('0x23')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xa3cc('0x15')]('yes','no')},'subscribemwi':{'type':Sequelize[_0xa3cc('0x15')](_0xa3cc('0x16'),'no')},'vmexten':{'type':Sequelize[_0xa3cc('0x5')]},'mohinterpret':{'type':Sequelize[_0xa3cc('0x5')]},'mohsuggest':{'type':Sequelize[_0xa3cc('0x5')]},'parkinglot':{'type':Sequelize[_0xa3cc('0x5')]},'description':{'type':Sequelize[_0xa3cc('0x5')]},'host':{'type':Sequelize[_0xa3cc('0x5')],'defaultValue':_0xa3cc('0x2b')},'canreinvite':{'type':Sequelize[_0xa3cc('0x15')]('yes','no',_0xa3cc('0x2c'),_0xa3cc('0x2d'),_0xa3cc('0x2e')),'defaultValue':'no'},'registry':{'type':Sequelize[_0xa3cc('0x5')]},'otherFields':{'type':Sequelize[_0xa3cc('0x5')]},'active':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xa3cc('0x5')],'defaultValue':'no'}};
\ No newline at end of file
+var _0x460e=['INTEGER','\x22\x22\x20<>','accept','refuse','originate','uac','uas','fingerprint','active','passive','actpass','dynamic','nonat','update,nonat','BOOLEAN','sequelize','exports','STRING','name','ENUM','friend','peer','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB_FAILED_SCREEN','udp','setDataValue','transport','join','getDataValue','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','auto','update','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','port,invite','insecure'];(function(_0x2573b9,_0x334da3){var _0x375e0c=function(_0x5ebc70){while(--_0x5ebc70){_0x2573b9['push'](_0x2573b9['shift']());}};_0x375e0c(++_0x334da3);}(_0x460e,0x16d));var _0xe460=function(_0x29ce14,_0x334166){_0x29ce14=_0x29ce14-0x0;var _0x48f289=_0x460e[_0x29ce14];return _0x48f289;};'use strict';var Sequelize=require(_0xe460('0x0'));module[_0xe460('0x1')]={'name':{'type':Sequelize[_0xe460('0x2')],'allowNull':![],'unique':_0xe460('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x5'),'user',_0xe460('0x6')),'allowNull':![],'defaultValue':_0xe460('0x5')},'context':{'type':Sequelize[_0xe460('0x2')],'allowNull':![],'defaultValue':'from-voip-provider'},'callingpres':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x7'),_0xe460('0x8'),'ALLOWED_FAILED_SCREEN',_0xe460('0x9'),_0xe460('0xa'),_0xe460('0xb'),_0xe460('0xc'),'PROHIB')},'deny':{'type':Sequelize[_0xe460('0x2')]},'permit':{'type':Sequelize[_0xe460('0x2')]},'secret':{'type':Sequelize['STRING']},'md5secret':{'type':Sequelize[_0xe460('0x2')]},'remotesecret':{'type':Sequelize[_0xe460('0x2')]},'transport':{'type':Sequelize[_0xe460('0x2')],'defaultValue':_0xe460('0xd'),'set':function(_0x54eded){this[_0xe460('0xe')](_0xe460('0xf'),_0x54eded?_0x54eded[_0xe460('0x10')](','):null);},'get':function(){return this[_0xe460('0x11')](_0xe460('0xf'))?this['getDataValue'](_0xe460('0xf'))[_0xe460('0x12')](','):null;},'comment':_0xe460('0x13')},'dtmfmode':{'type':Sequelize['ENUM'](_0xe460('0x14'),_0xe460('0x15'),_0xe460('0x16'),'inband',_0xe460('0x17')),'defaultValue':_0xe460('0x14')},'directmedia':{'type':Sequelize[_0xe460('0x4')]('yes','no','nonat',_0xe460('0x18'),_0xe460('0x19')),'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x1a'),'no'),'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0xe460('0x2')]},'directmediadeny':{'type':Sequelize[_0xe460('0x2')]},'nat':{'type':Sequelize[_0xe460('0x2')],'defaultValue':_0xe460('0x1b'),'set':function(_0x2b56a4){this['setDataValue'](_0xe460('0x1c'),_0x2b56a4?_0x2b56a4['join'](','):null);},'get':function(){return this[_0xe460('0x11')](_0xe460('0x1c'))?this[_0xe460('0x11')](_0xe460('0x1c'))[_0xe460('0x12')](','):null;},'comment':_0xe460('0x1d')},'callgroup':{'type':Sequelize[_0xe460('0x2')]},'namedcallgroup':{'type':Sequelize[_0xe460('0x2')]},'pickupgroup':{'type':Sequelize['STRING']},'namedpickupgroup':{'type':Sequelize[_0xe460('0x2')]},'language':{'type':Sequelize[_0xe460('0x2')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0xe460('0x2')],'allowNull':!![]},'disallow':{'type':Sequelize['STRING'],'defaultValue':_0xe460('0x1e')},'allow':{'type':Sequelize[_0xe460('0x2')],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x116945){this[_0xe460('0xe')](_0xe460('0x1f'),_0x116945?_0x116945[_0xe460('0x10')](';'):_0xe460('0x20'));},'get':function(){return this[_0xe460('0x11')](_0xe460('0x1f'))?this['getDataValue']('allow')[_0xe460('0x12')](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22alaw\x22]'},'autoframing':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x1a'),'no')},'insecure':{'type':Sequelize[_0xe460('0x2')],'defaultValue':_0xe460('0x21'),'set':function(_0x307bca){this['setDataValue'](_0xe460('0x22'),_0x307bca?_0x307bca[_0xe460('0x10')](','):null);},'get':function(){return this[_0xe460('0x11')]('insecure')?this['getDataValue']('insecure')[_0xe460('0x12')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x1a'),'no'),'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x1a'),'no'),'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM']('yes','no','never')},'promiscredir':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x1a'),'no')},'useclientcode':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x1a'),'no')},'accountcode':{'type':Sequelize[_0xe460('0x23')](0xb)},'setvar':{'type':Sequelize[_0xe460('0x2')]},'callerid':{'type':Sequelize['STRING'],'defaultValue':_0xe460('0x24')},'amaflags':{'type':Sequelize['STRING']},'callcounter':{'type':Sequelize[_0xe460('0x4')]('yes','no'),'defaultValue':_0xe460('0x1a')},'busylevel':{'type':Sequelize[_0xe460('0x23')](0xb)},'allowoverlap':{'type':Sequelize[_0xe460('0x4')]('yes','no')},'allowsubscribe':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x1a'),'no')},'allowtransfer':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x1a'),'no')},'ignoresdpversion':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x1a'),'no')},'subscribecontext':{'type':Sequelize[_0xe460('0x2')]},'template':{'type':Sequelize['STRING']},'videosupport':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x1a'),'no','always'),'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0xe460('0x23')](0xb)},'rfc2833compensate':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x1a'),'no')},'mailbox':{'type':Sequelize[_0xe460('0x2')]},'session_timers':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x25'),_0xe460('0x26'),_0xe460('0x27'))},'session_expires':{'type':Sequelize[_0xe460('0x23')](0xb)},'session_minse':{'type':Sequelize[_0xe460('0x23')](0xb)},'session_refresher':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x28'),_0xe460('0x29')),'defaultValue':_0xe460('0x29')},'t38pt_usertpsource':{'type':Sequelize[_0xe460('0x2')]},'regexten':{'type':Sequelize[_0xe460('0x2')]},'fromdomain':{'type':Sequelize[_0xe460('0x2')]},'fromuser':{'type':Sequelize[_0xe460('0x2')]},'port':{'type':Sequelize[_0xe460('0x23')](0x5)},'qualify':{'type':Sequelize[_0xe460('0x4')]('yes','no'),'defaultValue':_0xe460('0x1a')},'keepalive':{'type':Sequelize[_0xe460('0x23')](0xb)},'defaultip':{'type':Sequelize[_0xe460('0x2')]},'defaultuser':{'type':Sequelize[_0xe460('0x2')]},'rtptimeout':{'type':Sequelize[_0xe460('0x23')](0xb)},'rtpholdtimeout':{'type':Sequelize[_0xe460('0x23')](0xb)},'rtpkeepalive':{'type':Sequelize['INTEGER'](0xb)},'sendrpid':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x1a'),'no','pai'),'defaultValue':'no'},'outboundproxy':{'type':Sequelize['STRING']},'callbackextension':{'type':Sequelize[_0xe460('0x2')]},'timert1':{'type':Sequelize[_0xe460('0x23')](0xb)},'timerb':{'type':Sequelize[_0xe460('0x23')](0xb)},'qualifyfreq':{'type':Sequelize[_0xe460('0x23')](0xb)},'contactpermit':{'type':Sequelize[_0xe460('0x2')]},'contactdeny':{'type':Sequelize[_0xe460('0x2')]},'contactacl':{'type':Sequelize[_0xe460('0x2')]},'unsolicited_mailbox':{'type':Sequelize['STRING']},'use_q850_reason':{'type':Sequelize[_0xe460('0x2')]},'maxforwards':{'type':Sequelize[_0xe460('0x23')](0xb)},'encryption':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x1a'),'no'),'defaultValue':'no'},'avpf':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x1a'),'no')},'force_avp':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x1a'),'no')},'icesupport':{'type':Sequelize[_0xe460('0x4')]('yes','no')},'dtlsenable':{'type':Sequelize[_0xe460('0x4')]('yes','no')},'dtlsverify':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x1a'),'no',_0xe460('0x2a'),'certificate')},'dtlsrekey':{'type':Sequelize[_0xe460('0x23')](0xb)},'dtlscertfile':{'type':Sequelize[_0xe460('0x2')]},'dtlsprivatekey':{'type':Sequelize[_0xe460('0x2')]},'dtlscipher':{'type':Sequelize[_0xe460('0x2')]},'dtlscafile':{'type':Sequelize[_0xe460('0x2')]},'dtlscapath':{'type':Sequelize[_0xe460('0x2')]},'dtlssetup':{'type':Sequelize['ENUM'](_0xe460('0x2b'),_0xe460('0x2c'),_0xe460('0x2d')),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0xe460('0x2')]},'usereqphone':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x1a'),'no'),'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0xe460('0x2')]},'recordofffeature':{'type':Sequelize[_0xe460('0x2')]},'call_limit':{'type':Sequelize[_0xe460('0x23')](0xb),'defaultValue':0x3e8},'registertrying':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x1a'),'no')},'subscribemwi':{'type':Sequelize[_0xe460('0x4')](_0xe460('0x1a'),'no')},'vmexten':{'type':Sequelize[_0xe460('0x2')]},'mohinterpret':{'type':Sequelize['STRING']},'mohsuggest':{'type':Sequelize[_0xe460('0x2')]},'parkinglot':{'type':Sequelize[_0xe460('0x2')]},'description':{'type':Sequelize['STRING']},'host':{'type':Sequelize[_0xe460('0x2')],'defaultValue':_0xe460('0x2e')},'canreinvite':{'type':Sequelize['ENUM']('yes','no',_0xe460('0x2f'),_0xe460('0x18'),_0xe460('0x30')),'defaultValue':'no'},'registry':{'type':Sequelize['STRING']},'otherFields':{'type':Sequelize[_0xe460('0x2')]},'active':{'type':Sequelize[_0xe460('0x31')],'allowNull':![],'defaultValue':!![]},'t38pt_udptl':{'type':Sequelize[_0xe460('0x2')],'defaultValue':'no'}};
\ No newline at end of file
index fed0c5b..aee43b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa41a=['server/files/templates/registry.ejs','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','jayson/promise','http','request','then','info','Trunk,\x20%s,\x20%s','debug','Trunk,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','sendStatus','status','json','offset','undefined','limit','count','set','reject','update','destroy','get','UserProfileResource','end','name','send','map','Trunk','fieldName','type','key','query','intersection','model','attributes','fields','length','order','filters','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','show','params','keys','rawAttributes','find','createdAt','updatedAt','body','create','user','UserProfileSection','userProfileId','autoAssociation','readFileSync','join','root','server/files/templates/trunk.ejs','utf8','render','/etc/asterisk/sip_xcally_trunks.conf','registry','writeFileSync','/etc/asterisk/sip_xcally_registers.conf','chan_sip.so','role','Trunks','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','Reload'];(function(_0x4ef402,_0x58c632){var _0x44b661=function(_0x70dfe3){while(--_0x70dfe3){_0x4ef402['push'](_0x4ef402['shift']());}};_0x44b661(++_0x58c632);}(_0xa41a,0x6b));var _0xaa41=function(_0x6368a2,_0x53740b){_0x6368a2=_0x6368a2-0x0;var _0x247cfb=_0xa41a[_0x6368a2];return _0x247cfb;};'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'];var jayson=require(_0xaa41('0x19'));var client=jayson['client'][_0xaa41('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x12d9e6,_0x2f64bc,_0x889d44,_0x6f9ade){return new BPromise(function(_0x4eaf81,_0x1e9d7f){var _0x178170=_0x6f9ade||client;return _0x178170[_0xaa41('0x1b')](_0x12d9e6,_0x889d44)[_0xaa41('0x1c')](function(_0x2a6988){logger[_0xaa41('0x1d')](_0xaa41('0x1e'),_0x2f64bc,'request\x20sent');logger[_0xaa41('0x1f')](_0xaa41('0x20'),_0x2f64bc,_0xaa41('0x21'),JSON[_0xaa41('0x22')](_0x2a6988));if(_0x2a6988[_0xaa41('0x23')]){if(_0x2a6988[_0xaa41('0x23')][_0xaa41('0x24')]===0x1f4){logger[_0xaa41('0x23')](_0xaa41('0x1e'),_0x2f64bc,_0x2a6988['error']['message']);return _0x1e9d7f(_0x2a6988[_0xaa41('0x23')][_0xaa41('0x25')]);}logger[_0xaa41('0x23')]('Trunk,\x20%s,\x20%s',_0x2f64bc,_0x2a6988[_0xaa41('0x23')][_0xaa41('0x25')]);return _0x4eaf81(_0x2a6988['error']['message']);}else{logger[_0xaa41('0x1d')]('Trunk,\x20%s,\x20%s',_0x2f64bc,_0xaa41('0x21'));_0x4eaf81(_0x2a6988[_0xaa41('0x26')][_0xaa41('0x25')]);}})[_0xaa41('0x27')](function(_0x1d623c){logger['error'](_0xaa41('0x1e'),_0x2f64bc,_0x1d623c);_0x1e9d7f(_0x1d623c);});});}function respondWithStatusCode(_0x43a85c,_0x448a21){_0x448a21=_0x448a21||0xcc;return function(_0x21f596){if(_0x21f596){return _0x43a85c[_0xaa41('0x28')](_0x448a21);}return _0x43a85c[_0xaa41('0x29')](_0x448a21)['end']();};}function respondWithResult(_0x5795f4,_0x16aec5){_0x16aec5=_0x16aec5||0xc8;return function(_0x527cac){if(_0x527cac){return _0x5795f4['status'](_0x16aec5)[_0xaa41('0x2a')](_0x527cac);}};}function respondWithFilteredResult(_0x59707f,_0x536bed){return function(_0x2d0ac0){if(_0x2d0ac0){var _0x9c8c21=typeof _0x536bed[_0xaa41('0x2b')]===_0xaa41('0x2c')&&typeof _0x536bed[_0xaa41('0x2d')]===_0xaa41('0x2c');var _0x57ef96=_0x2d0ac0[_0xaa41('0x2e')];var _0x1f0275=_0x9c8c21?0x0:_0x536bed[_0xaa41('0x2b')];var _0x9a16e3=_0x9c8c21?_0x2d0ac0[_0xaa41('0x2e')]:_0x536bed[_0xaa41('0x2b')]+_0x536bed[_0xaa41('0x2d')];var _0x104a95;if(_0x9a16e3>=_0x57ef96){_0x9a16e3=_0x57ef96;_0x104a95=0xc8;}else{_0x104a95=0xce;}_0x59707f['status'](_0x104a95);return _0x59707f[_0xaa41('0x2f')]('Content-Range',_0x1f0275+'-'+_0x9a16e3+'/'+_0x57ef96)['json'](_0x2d0ac0);}return null;};}function patchUpdates(_0x714537){return function(_0x1176bd){try{jsonpatch['apply'](_0x1176bd,_0x714537,!![]);}catch(_0x392b5d){return BPromise[_0xaa41('0x30')](_0x392b5d);}return _0x1176bd['save']();};}function saveUpdates(_0x5022fb,_0x5c25fb){return function(_0x1cf3da){if(_0x1cf3da){return _0x1cf3da[_0xaa41('0x31')](_0x5022fb)[_0xaa41('0x1c')](function(_0x38afc4){return _0x38afc4;});}return null;};}function removeEntity(_0x58f203,_0x289c4a){return function(_0x45c8fe){if(_0x45c8fe){return _0x45c8fe[_0xaa41('0x32')]()['then'](function(){var _0x387c55=_0x45c8fe[_0xaa41('0x33')]({'plain':!![]});var _0x321eb7='Trunks';return db[_0xaa41('0x34')][_0xaa41('0x32')]({'where':{'type':_0x321eb7,'resourceId':_0x387c55['id']}})['then'](function(){return _0x45c8fe;});})[_0xaa41('0x1c')](function(){_0x58f203[_0xaa41('0x29')](0xcc)[_0xaa41('0x35')]();});}};}function handleEntityNotFound(_0x5cec87,_0x22b272){return function(_0x48335f){if(!_0x48335f){_0x5cec87[_0xaa41('0x28')](0x194);}return _0x48335f;};}function handleError(_0x199b24,_0xf13742){_0xf13742=_0xf13742||0x1f4;return function(_0x49b77a){logger['error'](_0x49b77a['stack']);if(_0x49b77a[_0xaa41('0x36')]){delete _0x49b77a[_0xaa41('0x36')];}_0x199b24[_0xaa41('0x29')](_0xf13742)[_0xaa41('0x37')](_0x49b77a);};}exports['index']=function(_0x53a2e4,_0x267999){var _0x5673c={},_0x951e52={},_0x4e8d2e={'count':0x0,'rows':[]};var _0xba115a=_[_0xaa41('0x38')](db[_0xaa41('0x39')]['rawAttributes'],function(_0x3adc28){return{'name':_0x3adc28[_0xaa41('0x3a')],'type':_0x3adc28[_0xaa41('0x3b')][_0xaa41('0x3c')]};});_0x951e52['model']=_['map'](_0xba115a,_0xaa41('0x36'));_0x951e52[_0xaa41('0x3d')]=_['keys'](_0x53a2e4[_0xaa41('0x3d')]);_0x951e52['filters']=_[_0xaa41('0x3e')](_0x951e52[_0xaa41('0x3f')],_0x951e52[_0xaa41('0x3d')]);_0x5673c[_0xaa41('0x40')]=_[_0xaa41('0x3e')](_0x951e52[_0xaa41('0x3f')],qs[_0xaa41('0x41')](_0x53a2e4[_0xaa41('0x3d')]['fields']));_0x5673c[_0xaa41('0x40')]=_0x5673c[_0xaa41('0x40')][_0xaa41('0x42')]?_0x5673c[_0xaa41('0x40')]:_0x951e52[_0xaa41('0x3f')];if(!_0x53a2e4[_0xaa41('0x3d')]['hasOwnProperty']('nolimit')){_0x5673c[_0xaa41('0x2d')]=qs['limit'](_0x53a2e4[_0xaa41('0x3d')][_0xaa41('0x2d')]);_0x5673c[_0xaa41('0x2b')]=qs[_0xaa41('0x2b')](_0x53a2e4[_0xaa41('0x3d')][_0xaa41('0x2b')]);}_0x5673c[_0xaa41('0x43')]=qs['sort'](_0x53a2e4[_0xaa41('0x3d')]['sort']);_0x5673c['where']=qs[_0xaa41('0x44')](_['pick'](_0x53a2e4['query'],_0x951e52['filters']),_0xba115a);if(_0x53a2e4[_0xaa41('0x3d')]['filter']){_0x5673c[_0xaa41('0x45')]=_[_0xaa41('0x46')](_0x5673c['where'],{'$or':_['map'](_0xba115a,function(_0xe58f5e){if(_0xe58f5e[_0xaa41('0x3b')]!==_0xaa41('0x47')){var _0x2af8ba={};_0x2af8ba[_0xe58f5e[_0xaa41('0x36')]]={'$like':'%'+_0x53a2e4[_0xaa41('0x3d')][_0xaa41('0x48')]+'%'};return _0x2af8ba;}})});}_0x5673c=_[_0xaa41('0x46')]({},_0x5673c,_0x53a2e4[_0xaa41('0x49')]);var _0x4e1ac4={'where':_0x5673c[_0xaa41('0x45')]};return db[_0xaa41('0x39')][_0xaa41('0x2e')](_0x4e1ac4)[_0xaa41('0x1c')](function(_0x206d86){_0x4e8d2e[_0xaa41('0x2e')]=_0x206d86;if(_0x53a2e4['query'][_0xaa41('0x4a')]){_0x5673c[_0xaa41('0x4b')]=[{'all':!![]}];}return db[_0xaa41('0x39')][_0xaa41('0x4c')](_0x5673c);})['then'](function(_0x23bc61){_0x4e8d2e['rows']=_0x23bc61;return _0x4e8d2e;})['then'](respondWithFilteredResult(_0x267999,_0x5673c))[_0xaa41('0x27')](handleError(_0x267999,null));};exports[_0xaa41('0x4d')]=function(_0x3e16ef,_0x4ca114){var _0xb4773b={'raw':![],'where':{'id':_0x3e16ef[_0xaa41('0x4e')]['id']}},_0x3e1a73={};_0x3e1a73['model']=_[_0xaa41('0x4f')](db[_0xaa41('0x39')][_0xaa41('0x50')]);_0x3e1a73[_0xaa41('0x3d')]=_[_0xaa41('0x4f')](_0x3e16ef[_0xaa41('0x3d')]);_0x3e1a73[_0xaa41('0x44')]=_[_0xaa41('0x3e')](_0x3e1a73['model'],_0x3e1a73[_0xaa41('0x3d')]);_0xb4773b['attributes']=_['intersection'](_0x3e1a73[_0xaa41('0x3f')],qs[_0xaa41('0x41')](_0x3e16ef[_0xaa41('0x3d')][_0xaa41('0x41')]));_0xb4773b[_0xaa41('0x40')]=_0xb4773b[_0xaa41('0x40')][_0xaa41('0x42')]?_0xb4773b[_0xaa41('0x40')]:_0x3e1a73['model'];if(_0x3e16ef[_0xaa41('0x3d')][_0xaa41('0x4a')]){_0xb4773b[_0xaa41('0x4b')]=[{'all':!![]}];}_0xb4773b=_['merge']({},_0xb4773b,_0x3e16ef[_0xaa41('0x49')]);return db[_0xaa41('0x39')]['find'](_0xb4773b)[_0xaa41('0x1c')](handleEntityNotFound(_0x4ca114,null))[_0xaa41('0x1c')](respondWithResult(_0x4ca114,null))[_0xaa41('0x27')](handleError(_0x4ca114,null));};exports['clone']=function(_0x2cf32c,_0xc8e626){var _0x4e3b13={'where':{'id':_0x2cf32c[_0xaa41('0x4e')]['id']}},_0x49789a={};_0x49789a[_0xaa41('0x3f')]=_[_0xaa41('0x4f')](db['Trunk'][_0xaa41('0x50')]);_0x4e3b13[_0xaa41('0x40')]=_[_0xaa41('0x3e')](_0x49789a[_0xaa41('0x3f')],qs[_0xaa41('0x41')](_0x2cf32c['query'][_0xaa41('0x41')]));_0x4e3b13['attributes']=_0x4e3b13['attributes'][_0xaa41('0x42')]?_0x4e3b13['attributes']:_0x49789a[_0xaa41('0x3f')];if(_0x2cf32c[_0xaa41('0x3d')][_0xaa41('0x4a')]){_0x4e3b13['include']=[{'all':!![]}];}_0x4e3b13=_[_0xaa41('0x46')]({},_0x4e3b13,_0x2cf32c[_0xaa41('0x49')]);return db[_0xaa41('0x39')][_0xaa41('0x51')](_0x4e3b13)[_0xaa41('0x1c')](handleEntityNotFound(_0xc8e626,null))[_0xaa41('0x1c')](function(_0xc56018){if(_0xc56018){var _0x337059=_0xc56018[_0xaa41('0x33')]({'plain':!![]});_0x337059=qs['omit'](_0x337059,['id',_0xaa41('0x52'),_0xaa41('0x53')]);_0x2cf32c[_0xaa41('0x54')]=_['omit'](_0x2cf32c[_0xaa41('0x54')],['id',_0xaa41('0x52'),_0xaa41('0x53')]);return db[_0xaa41('0x39')][_0xaa41('0x55')](_[_0xaa41('0x46')](_0x337059,_0x2cf32c[_0xaa41('0x54')]),{'include':_0x2cf32c['query']['includeAll']?[{'all':!![]}]:undefined})['then'](function(_0x540325){var _0x4ec357=_0x2cf32c['user'][_0xaa41('0x33')]({'plain':!![]});if(!_0x4ec357)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x4ec357['role']===_0xaa41('0x56')){var _0x40a524=_0x540325[_0xaa41('0x33')]({'plain':!![]});var _0x312eee='Trunks';return db[_0xaa41('0x57')][_0xaa41('0x51')]({'where':{'name':_0x312eee,'userProfileId':_0x4ec357[_0xaa41('0x58')]},'raw':!![]})[_0xaa41('0x1c')](function(_0xa71432){if(_0xa71432&&_0xa71432[_0xaa41('0x59')]===0x0){return db[_0xaa41('0x34')][_0xaa41('0x55')]({'name':_0x40a524[_0xaa41('0x36')],'resourceId':_0x40a524['id'],'type':_0xa71432['name'],'sectionId':_0xa71432['id']},{})[_0xaa41('0x1c')](function(){return _0x540325;});}else{return _0x540325;}})[_0xaa41('0x27')](function(_0x50170f){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x50170f);throw _0x50170f;});}return _0x540325;});}})[_0xaa41('0x1c')](respondWithResult(_0xc8e626,0xc9))['catch'](handleError(_0xc8e626,null));};exports[_0xaa41('0x55')]=function(_0x5c8028,_0x5423b6,_0x18d18b){var _0x4b1ec4;return db[_0xaa41('0x39')][_0xaa41('0x55')](_0x5c8028[_0xaa41('0x54')],{'raw':!![]})[_0xaa41('0x1c')](function(_0x5a2683){_0x4b1ec4=_0x5a2683;return db['Trunk'][_0xaa41('0x4c')]({'raw':!![]});})[_0xaa41('0x1c')](function(_0x4d6d0c){var _0x5954ba=fs[_0xaa41('0x5a')](path[_0xaa41('0x5b')](config[_0xaa41('0x5c')],_0xaa41('0x5d')),_0xaa41('0x5e'));var _0x5a385e=fs[_0xaa41('0x5a')](path['join'](config['root'],'server/files/templates/registry.ejs'),_0xaa41('0x5e'));var _0x19ec63=ejs[_0xaa41('0x5f')](_0x5954ba,{'trunks':_0x4d6d0c||[]});fs['writeFileSync'](_0xaa41('0x60'),_0x19ec63);if(_0x4b1ec4[_0xaa41('0x61')]){var _0x19ed68=ejs[_0xaa41('0x5f')](_0x5a385e,{'trunks':_0x4d6d0c||[]});fs[_0xaa41('0x62')](_0xaa41('0x63'),_0x19ed68);}})[_0xaa41('0x1c')](function(){return respondWithRpcPromise('Reload',_0xaa41('0x55'),{'module':_0xaa41('0x64')});})[_0xaa41('0x1c')](function(){var _0x175ca9=_0x5c8028['user'][_0xaa41('0x33')]({'plain':!![]});if(!_0x175ca9)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x175ca9[_0xaa41('0x65')]===_0xaa41('0x56')){var _0x2b9e68=_0x4b1ec4[_0xaa41('0x33')]({'plain':!![]});return db['UserProfileSection'][_0xaa41('0x51')]({'where':{'name':_0xaa41('0x66'),'userProfileId':_0x175ca9[_0xaa41('0x58')]},'raw':!![]})[_0xaa41('0x1c')](function(_0x59052d){if(_0x59052d&&_0x59052d[_0xaa41('0x59')]===0x0){return db['UserProfileResource'][_0xaa41('0x55')]({'name':_0x2b9e68[_0xaa41('0x36')],'resourceId':_0x2b9e68['id'],'type':_0x59052d['name'],'sectionId':_0x59052d['id']},{})[_0xaa41('0x1c')](function(){return _0x4b1ec4;});}else{return _0x4b1ec4;}})[_0xaa41('0x27')](function(_0x2ba160){logger[_0xaa41('0x23')](_0xaa41('0x67'),_0x2ba160);throw _0x2ba160;});}return _0x4b1ec4;})[_0xaa41('0x1c')](respondWithResult(_0x5423b6,0xc9))[_0xaa41('0x27')](handleError(_0x5423b6,null));};exports[_0xaa41('0x31')]=function(_0x33b5f4,_0x3d4f1e,_0x25a064){var _0x59a30b;return db[_0xaa41('0x39')][_0xaa41('0x51')]({'where':{'id':_0x33b5f4[_0xaa41('0x4e')]['id']}})['then'](handleEntityNotFound(_0x3d4f1e,null))['then'](saveUpdates(_0x33b5f4[_0xaa41('0x54')],null))[_0xaa41('0x1c')](function(_0x59fd6a){if(_0x59fd6a){_0x59a30b=_0x59fd6a;return db[_0xaa41('0x39')][_0xaa41('0x4c')]({'raw':!![]});}})['then'](function(_0x305050){if(_0x305050){var _0x3dd47e=fs[_0xaa41('0x5a')](path[_0xaa41('0x5b')](config[_0xaa41('0x5c')],_0xaa41('0x5d')),_0xaa41('0x5e'));var _0x1472be=fs['readFileSync'](path['join'](config[_0xaa41('0x5c')],'server/files/templates/registry.ejs'),_0xaa41('0x5e'));var _0x44154f=ejs[_0xaa41('0x5f')](_0x3dd47e,{'trunks':_0x305050||[]});fs['writeFileSync'](_0xaa41('0x60'),_0x44154f);var _0x404c38=ejs[_0xaa41('0x5f')](_0x1472be,{'trunks':_0x305050||[]});fs['writeFileSync'](_0xaa41('0x63'),_0x404c38);return respondWithRpcPromise(_0xaa41('0x68'),'update',{'module':_0xaa41('0x64')});}return null;})['then'](function(_0x53faf4){if(_0x53faf4){return _0x59a30b;}})[_0xaa41('0x1c')](respondWithResult(_0x3d4f1e,null))[_0xaa41('0x27')](handleError(_0x3d4f1e,null));};exports['destroy']=function(_0x5a8cb0,_0x241e1a,_0x1726ec){var _0x3c189d;return db[_0xaa41('0x39')]['find']({'where':{'id':_0x5a8cb0[_0xaa41('0x4e')]['id']}})[_0xaa41('0x1c')](handleEntityNotFound(_0x241e1a,null))[_0xaa41('0x1c')](removeEntity(_0x241e1a,null))['then'](function(){return db[_0xaa41('0x39')][_0xaa41('0x4c')]({'raw':!![]});})[_0xaa41('0x1c')](function(_0x5697b6){var _0x183b36=fs['readFileSync'](path['join'](config[_0xaa41('0x5c')],_0xaa41('0x5d')),'utf8');var _0x399fbd=fs[_0xaa41('0x5a')](path[_0xaa41('0x5b')](config['root'],_0xaa41('0x69')),_0xaa41('0x5e'));var _0x1a2deb=ejs[_0xaa41('0x5f')](_0x183b36,{'trunks':_0x5697b6});var _0x38f5d0=ejs['render'](_0x399fbd,{'trunks':_0x5697b6});fs[_0xaa41('0x62')]('/etc/asterisk/sip_xcally_trunks.conf',_0x1a2deb);fs[_0xaa41('0x62')](_0xaa41('0x63'),_0x38f5d0);return respondWithRpcPromise(_0xaa41('0x68'),_0xaa41('0x32'),{'module':_0xaa41('0x64')});})[_0xaa41('0x27')](handleError(_0x241e1a,null));};
\ No newline at end of file
+var _0xe14d=['options','includeAll','include','findAll','rows','params','keys','rawAttributes','find','omit','createdAt','updatedAt','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','join','server/files/templates/trunk.ejs','utf8','root','server/files/templates/registry.ejs','writeFileSync','/etc/asterisk/sip_xcally_trunks.conf','registry','Reload','UserProfileSection','autoAssociation','readFileSync','render','/etc/asterisk/sip_xcally_registers.conf','chan_sip.so','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','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','../../mysqldb','jayson/promise','client','http','request','then','info','Trunk,\x20%s,\x20%s','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','save','update','get','Trunks','UserProfileResource','destroy','stack','name','map','Trunk','fieldName','type','key','model','query','filters','intersection','fields','attributes','length','nolimit','order','where','pick','filter','merge','VIRTUAL'];(function(_0x5b479f,_0x1b3d7e){var _0x2cfdd0=function(_0x4a5ecd){while(--_0x4a5ecd){_0x5b479f['push'](_0x5b479f['shift']());}};_0x2cfdd0(++_0x1b3d7e);}(_0xe14d,0x1ee));var _0xde14=function(_0x2dafbe,_0x5d04de){_0x2dafbe=_0x2dafbe-0x0;var _0x58a45a=_0xe14d[_0x2dafbe];return _0x58a45a;};'use strict';var emlformat=require(_0xde14('0x0'));var rimraf=require(_0xde14('0x1'));var zipdir=require(_0xde14('0x2'));var jsonpatch=require(_0xde14('0x3'));var rp=require('request-promise');var moment=require(_0xde14('0x4'));var BPromise=require(_0xde14('0x5'));var Mustache=require('mustache');var util=require(_0xde14('0x6'));var path=require(_0xde14('0x7'));var sox=require(_0xde14('0x8'));var csv=require(_0xde14('0x9'));var ejs=require(_0xde14('0xa'));var fs=require('fs');var fs_extra=require(_0xde14('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xde14('0xc'));var jsforce=require(_0xde14('0xd'));var deskjs=require(_0xde14('0xe'));var toCsv=require(_0xde14('0x9'));var querystring=require(_0xde14('0xf'));var Papa=require(_0xde14('0x10'));var Redis=require(_0xde14('0x11'));var authService=require(_0xde14('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xde14('0x13'));var hardwareService=require(_0xde14('0x14'));var logger=require(_0xde14('0x15'))(_0xde14('0x16'));var utils=require(_0xde14('0x17'));var config=require(_0xde14('0x18'));var licenseUtil=require(_0xde14('0x19'));var db=require(_0xde14('0x1a'))['db'];var jayson=require(_0xde14('0x1b'));var client=jayson[_0xde14('0x1c')][_0xde14('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x464624,_0x3521d4,_0x281c54,_0x1489e9){return new BPromise(function(_0x54c58b,_0x584959){var _0x23c878=_0x1489e9||client;return _0x23c878[_0xde14('0x1e')](_0x464624,_0x281c54)[_0xde14('0x1f')](function(_0x4c86ff){logger[_0xde14('0x20')](_0xde14('0x21'),_0x3521d4,_0xde14('0x22'));logger[_0xde14('0x23')](_0xde14('0x24'),_0x3521d4,_0xde14('0x22'),JSON[_0xde14('0x25')](_0x4c86ff));if(_0x4c86ff[_0xde14('0x26')]){if(_0x4c86ff[_0xde14('0x26')][_0xde14('0x27')]===0x1f4){logger['error'](_0xde14('0x21'),_0x3521d4,_0x4c86ff[_0xde14('0x26')][_0xde14('0x28')]);return _0x584959(_0x4c86ff[_0xde14('0x26')]['message']);}logger[_0xde14('0x26')]('Trunk,\x20%s,\x20%s',_0x3521d4,_0x4c86ff[_0xde14('0x26')]['message']);return _0x54c58b(_0x4c86ff[_0xde14('0x26')][_0xde14('0x28')]);}else{logger[_0xde14('0x20')](_0xde14('0x21'),_0x3521d4,_0xde14('0x22'));_0x54c58b(_0x4c86ff[_0xde14('0x29')][_0xde14('0x28')]);}})[_0xde14('0x2a')](function(_0xdd8d59){logger[_0xde14('0x26')](_0xde14('0x21'),_0x3521d4,_0xdd8d59);_0x584959(_0xdd8d59);});});}function respondWithStatusCode(_0xbaa078,_0x8f8033){_0x8f8033=_0x8f8033||0xcc;return function(_0x5ae4c1){if(_0x5ae4c1){return _0xbaa078[_0xde14('0x2b')](_0x8f8033);}return _0xbaa078[_0xde14('0x2c')](_0x8f8033)[_0xde14('0x2d')]();};}function respondWithResult(_0xbd05d6,_0x1bb7be){_0x1bb7be=_0x1bb7be||0xc8;return function(_0x21ef15){if(_0x21ef15){return _0xbd05d6[_0xde14('0x2c')](_0x1bb7be)[_0xde14('0x2e')](_0x21ef15);}};}function respondWithFilteredResult(_0x1618e1,_0x350a78){return function(_0x4eff65){if(_0x4eff65){var _0x309922=typeof _0x350a78[_0xde14('0x2f')]===_0xde14('0x30')&&typeof _0x350a78[_0xde14('0x31')]==='undefined';var _0x3fc2a4=_0x4eff65[_0xde14('0x32')];var _0x30c4a8=_0x309922?0x0:_0x350a78['offset'];var _0x4655fb=_0x309922?_0x4eff65['count']:_0x350a78[_0xde14('0x2f')]+_0x350a78[_0xde14('0x31')];var _0x3bb1da;if(_0x4655fb>=_0x3fc2a4){_0x4655fb=_0x3fc2a4;_0x3bb1da=0xc8;}else{_0x3bb1da=0xce;}_0x1618e1[_0xde14('0x2c')](_0x3bb1da);return _0x1618e1[_0xde14('0x33')](_0xde14('0x34'),_0x30c4a8+'-'+_0x4655fb+'/'+_0x3fc2a4)[_0xde14('0x2e')](_0x4eff65);}return null;};}function patchUpdates(_0x464666){return function(_0x4e7c5b){try{jsonpatch[_0xde14('0x35')](_0x4e7c5b,_0x464666,!![]);}catch(_0xbf49ac){return BPromise['reject'](_0xbf49ac);}return _0x4e7c5b[_0xde14('0x36')]();};}function saveUpdates(_0x4c9b15,_0x2e40ad){return function(_0x44e88a){if(_0x44e88a){return _0x44e88a[_0xde14('0x37')](_0x4c9b15)[_0xde14('0x1f')](function(_0x13c164){return _0x13c164;});}return null;};}function removeEntity(_0x57fc47,_0x26dfa9){return function(_0x57b98b){if(_0x57b98b){return _0x57b98b['destroy']()[_0xde14('0x1f')](function(){var _0x3c943b=_0x57b98b[_0xde14('0x38')]({'plain':!![]});var _0x319136=_0xde14('0x39');return db[_0xde14('0x3a')][_0xde14('0x3b')]({'where':{'type':_0x319136,'resourceId':_0x3c943b['id']}})[_0xde14('0x1f')](function(){return _0x57b98b;});})[_0xde14('0x1f')](function(){_0x57fc47['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1c7136,_0x403007){return function(_0x20913d){if(!_0x20913d){_0x1c7136[_0xde14('0x2b')](0x194);}return _0x20913d;};}function handleError(_0x31cad4,_0x23813f){_0x23813f=_0x23813f||0x1f4;return function(_0x1f42ab){logger[_0xde14('0x26')](_0x1f42ab[_0xde14('0x3c')]);if(_0x1f42ab['name']){delete _0x1f42ab[_0xde14('0x3d')];}_0x31cad4['status'](_0x23813f)['send'](_0x1f42ab);};}exports['index']=function(_0xb0eba6,_0x258759){var _0x398f63={},_0x152dab={},_0x1228d8={'count':0x0,'rows':[]};var _0x8b5bb4=_[_0xde14('0x3e')](db[_0xde14('0x3f')]['rawAttributes'],function(_0xc2a39d){return{'name':_0xc2a39d[_0xde14('0x40')],'type':_0xc2a39d[_0xde14('0x41')][_0xde14('0x42')]};});_0x152dab[_0xde14('0x43')]=_[_0xde14('0x3e')](_0x8b5bb4,_0xde14('0x3d'));_0x152dab[_0xde14('0x44')]=_['keys'](_0xb0eba6[_0xde14('0x44')]);_0x152dab[_0xde14('0x45')]=_[_0xde14('0x46')](_0x152dab[_0xde14('0x43')],_0x152dab['query']);_0x398f63['attributes']=_[_0xde14('0x46')](_0x152dab[_0xde14('0x43')],qs[_0xde14('0x47')](_0xb0eba6[_0xde14('0x44')][_0xde14('0x47')]));_0x398f63['attributes']=_0x398f63[_0xde14('0x48')][_0xde14('0x49')]?_0x398f63[_0xde14('0x48')]:_0x152dab['model'];if(!_0xb0eba6[_0xde14('0x44')]['hasOwnProperty'](_0xde14('0x4a'))){_0x398f63['limit']=qs[_0xde14('0x31')](_0xb0eba6[_0xde14('0x44')][_0xde14('0x31')]);_0x398f63[_0xde14('0x2f')]=qs[_0xde14('0x2f')](_0xb0eba6[_0xde14('0x44')][_0xde14('0x2f')]);}_0x398f63[_0xde14('0x4b')]=qs['sort'](_0xb0eba6[_0xde14('0x44')]['sort']);_0x398f63[_0xde14('0x4c')]=qs['filters'](_[_0xde14('0x4d')](_0xb0eba6[_0xde14('0x44')],_0x152dab[_0xde14('0x45')]),_0x8b5bb4);if(_0xb0eba6[_0xde14('0x44')][_0xde14('0x4e')]){_0x398f63[_0xde14('0x4c')]=_[_0xde14('0x4f')](_0x398f63[_0xde14('0x4c')],{'$or':_['map'](_0x8b5bb4,function(_0x15859c){if(_0x15859c[_0xde14('0x41')]!==_0xde14('0x50')){var _0x4b1ef7={};_0x4b1ef7[_0x15859c['name']]={'$like':'%'+_0xb0eba6[_0xde14('0x44')][_0xde14('0x4e')]+'%'};return _0x4b1ef7;}})});}_0x398f63=_[_0xde14('0x4f')]({},_0x398f63,_0xb0eba6[_0xde14('0x51')]);var _0x39572b={'where':_0x398f63[_0xde14('0x4c')]};return db['Trunk'][_0xde14('0x32')](_0x39572b)['then'](function(_0xa408ec){_0x1228d8[_0xde14('0x32')]=_0xa408ec;if(_0xb0eba6['query'][_0xde14('0x52')]){_0x398f63[_0xde14('0x53')]=[{'all':!![]}];}return db[_0xde14('0x3f')][_0xde14('0x54')](_0x398f63);})[_0xde14('0x1f')](function(_0x1c87e1){_0x1228d8[_0xde14('0x55')]=_0x1c87e1;return _0x1228d8;})['then'](respondWithFilteredResult(_0x258759,_0x398f63))[_0xde14('0x2a')](handleError(_0x258759,null));};exports['show']=function(_0xfa80c8,_0x6aa9ab){var _0x237be4={'raw':![],'where':{'id':_0xfa80c8[_0xde14('0x56')]['id']}},_0x235202={};_0x235202[_0xde14('0x43')]=_[_0xde14('0x57')](db[_0xde14('0x3f')][_0xde14('0x58')]);_0x235202[_0xde14('0x44')]=_['keys'](_0xfa80c8[_0xde14('0x44')]);_0x235202[_0xde14('0x45')]=_[_0xde14('0x46')](_0x235202[_0xde14('0x43')],_0x235202[_0xde14('0x44')]);_0x237be4['attributes']=_[_0xde14('0x46')](_0x235202['model'],qs[_0xde14('0x47')](_0xfa80c8[_0xde14('0x44')][_0xde14('0x47')]));_0x237be4[_0xde14('0x48')]=_0x237be4[_0xde14('0x48')]['length']?_0x237be4['attributes']:_0x235202[_0xde14('0x43')];if(_0xfa80c8['query'][_0xde14('0x52')]){_0x237be4[_0xde14('0x53')]=[{'all':!![]}];}_0x237be4=_[_0xde14('0x4f')]({},_0x237be4,_0xfa80c8[_0xde14('0x51')]);return db[_0xde14('0x3f')][_0xde14('0x59')](_0x237be4)[_0xde14('0x1f')](handleEntityNotFound(_0x6aa9ab,null))[_0xde14('0x1f')](respondWithResult(_0x6aa9ab,null))[_0xde14('0x2a')](handleError(_0x6aa9ab,null));};exports['clone']=function(_0x205a94,_0x2c972b){var _0x1ea6d2={'where':{'id':_0x205a94[_0xde14('0x56')]['id']}},_0x21d226={};_0x21d226['model']=_[_0xde14('0x57')](db['Trunk'][_0xde14('0x58')]);_0x1ea6d2[_0xde14('0x48')]=_[_0xde14('0x46')](_0x21d226[_0xde14('0x43')],qs[_0xde14('0x47')](_0x205a94[_0xde14('0x44')][_0xde14('0x47')]));_0x1ea6d2[_0xde14('0x48')]=_0x1ea6d2['attributes']['length']?_0x1ea6d2['attributes']:_0x21d226[_0xde14('0x43')];if(_0x205a94['query']['includeAll']){_0x1ea6d2[_0xde14('0x53')]=[{'all':!![]}];}_0x1ea6d2=_[_0xde14('0x4f')]({},_0x1ea6d2,_0x205a94[_0xde14('0x51')]);return db[_0xde14('0x3f')][_0xde14('0x59')](_0x1ea6d2)[_0xde14('0x1f')](handleEntityNotFound(_0x2c972b,null))[_0xde14('0x1f')](function(_0x13f698){if(_0x13f698){var _0x2dd108=_0x13f698['get']({'plain':!![]});_0x2dd108=qs[_0xde14('0x5a')](_0x2dd108,['id',_0xde14('0x5b'),_0xde14('0x5c')]);_0x205a94['body']=_[_0xde14('0x5a')](_0x205a94['body'],['id',_0xde14('0x5b'),_0xde14('0x5c')]);return db[_0xde14('0x3f')][_0xde14('0x5d')](_[_0xde14('0x4f')](_0x2dd108,_0x205a94[_0xde14('0x5e')]),{'include':_0x205a94[_0xde14('0x44')]['includeAll']?[{'all':!![]}]:undefined})[_0xde14('0x1f')](function(_0x25ba7e){var _0x1a0bb1=_0x205a94[_0xde14('0x5f')][_0xde14('0x38')]({'plain':!![]});if(!_0x1a0bb1)throw new Error(_0xde14('0x60'));if(_0x1a0bb1[_0xde14('0x61')]==='user'){var _0x4a9e85=_0x25ba7e[_0xde14('0x38')]({'plain':!![]});var _0x19a162=_0xde14('0x39');return db['UserProfileSection'][_0xde14('0x59')]({'where':{'name':_0x19a162,'userProfileId':_0x1a0bb1[_0xde14('0x62')]},'raw':!![]})[_0xde14('0x1f')](function(_0x32e075){if(_0x32e075&&_0x32e075['autoAssociation']===0x0){return db['UserProfileResource'][_0xde14('0x5d')]({'name':_0x4a9e85[_0xde14('0x3d')],'resourceId':_0x4a9e85['id'],'type':_0x32e075[_0xde14('0x3d')],'sectionId':_0x32e075['id']},{})[_0xde14('0x1f')](function(){return _0x25ba7e;});}else{return _0x25ba7e;}})[_0xde14('0x2a')](function(_0x120284){logger[_0xde14('0x26')](_0xde14('0x63'),_0x120284);throw _0x120284;});}return _0x25ba7e;});}})[_0xde14('0x1f')](respondWithResult(_0x2c972b,0xc9))[_0xde14('0x2a')](handleError(_0x2c972b,null));};exports[_0xde14('0x5d')]=function(_0x299b69,_0x1ff577,_0x42329a){var _0x6a641f;return db[_0xde14('0x3f')][_0xde14('0x5d')](_0x299b69[_0xde14('0x5e')],{'raw':!![]})[_0xde14('0x1f')](function(_0x1b5d70){_0x6a641f=_0x1b5d70;return db[_0xde14('0x3f')][_0xde14('0x54')]({'raw':!![]});})[_0xde14('0x1f')](function(_0x4809fa){var _0x1084fb=fs['readFileSync'](path[_0xde14('0x64')](config['root'],_0xde14('0x65')),_0xde14('0x66'));var _0x3aaba2=fs['readFileSync'](path['join'](config[_0xde14('0x67')],_0xde14('0x68')),_0xde14('0x66'));var _0x430bdb=ejs['render'](_0x1084fb,{'trunks':_0x4809fa||[]});fs[_0xde14('0x69')](_0xde14('0x6a'),_0x430bdb);if(_0x6a641f[_0xde14('0x6b')]){var _0x500344=ejs['render'](_0x3aaba2,{'trunks':_0x4809fa||[]});fs['writeFileSync']('/etc/asterisk/sip_xcally_registers.conf',_0x500344);}})[_0xde14('0x1f')](function(){return respondWithRpcPromise(_0xde14('0x6c'),_0xde14('0x5d'),{'module':'chan_sip.so'});})[_0xde14('0x1f')](function(){var _0x37f7c3=_0x299b69[_0xde14('0x5f')][_0xde14('0x38')]({'plain':!![]});if(!_0x37f7c3)throw new Error(_0xde14('0x60'));if(_0x37f7c3[_0xde14('0x61')]==='user'){var _0x579a6c=_0x6a641f[_0xde14('0x38')]({'plain':!![]});return db[_0xde14('0x6d')]['find']({'where':{'name':_0xde14('0x39'),'userProfileId':_0x37f7c3[_0xde14('0x62')]},'raw':!![]})[_0xde14('0x1f')](function(_0x367ede){if(_0x367ede&&_0x367ede[_0xde14('0x6e')]===0x0){return db[_0xde14('0x3a')][_0xde14('0x5d')]({'name':_0x579a6c['name'],'resourceId':_0x579a6c['id'],'type':_0x367ede['name'],'sectionId':_0x367ede['id']},{})['then'](function(){return _0x6a641f;});}else{return _0x6a641f;}})['catch'](function(_0x3dbda9){logger[_0xde14('0x26')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3dbda9);throw _0x3dbda9;});}return _0x6a641f;})['then'](respondWithResult(_0x1ff577,0xc9))[_0xde14('0x2a')](handleError(_0x1ff577,null));};exports[_0xde14('0x37')]=function(_0xe2b9f5,_0x5805ec,_0x1aa75d){var _0x2b1e2e;return db['Trunk'][_0xde14('0x59')]({'where':{'id':_0xe2b9f5[_0xde14('0x56')]['id']}})[_0xde14('0x1f')](handleEntityNotFound(_0x5805ec,null))[_0xde14('0x1f')](saveUpdates(_0xe2b9f5['body'],null))[_0xde14('0x1f')](function(_0x5a5b25){if(_0x5a5b25){_0x2b1e2e=_0x5a5b25;return db[_0xde14('0x3f')][_0xde14('0x54')]({'raw':!![]});}})[_0xde14('0x1f')](function(_0x5f49d1){if(_0x5f49d1){var _0x283eb8=fs[_0xde14('0x6f')](path[_0xde14('0x64')](config[_0xde14('0x67')],_0xde14('0x65')),'utf8');var _0x53433d=fs[_0xde14('0x6f')](path[_0xde14('0x64')](config[_0xde14('0x67')],'server/files/templates/registry.ejs'),_0xde14('0x66'));var _0x1a12b5=ejs[_0xde14('0x70')](_0x283eb8,{'trunks':_0x5f49d1||[]});fs[_0xde14('0x69')](_0xde14('0x6a'),_0x1a12b5);var _0x2cc5b7=ejs[_0xde14('0x70')](_0x53433d,{'trunks':_0x5f49d1||[]});fs['writeFileSync'](_0xde14('0x71'),_0x2cc5b7);return respondWithRpcPromise(_0xde14('0x6c'),_0xde14('0x37'),{'module':_0xde14('0x72')});}return null;})[_0xde14('0x1f')](function(_0x1732d0){if(_0x1732d0){return _0x2b1e2e;}})[_0xde14('0x1f')](respondWithResult(_0x5805ec,null))['catch'](handleError(_0x5805ec,null));};exports[_0xde14('0x3b')]=function(_0x1bdeae,_0x5f4b92,_0x4543f1){var _0x4a0108;return db[_0xde14('0x3f')]['find']({'where':{'id':_0x1bdeae[_0xde14('0x56')]['id']}})[_0xde14('0x1f')](handleEntityNotFound(_0x5f4b92,null))[_0xde14('0x1f')](removeEntity(_0x5f4b92,null))[_0xde14('0x1f')](function(){return db[_0xde14('0x3f')][_0xde14('0x54')]({'raw':!![]});})['then'](function(_0x43a155){var _0x58cf06=fs[_0xde14('0x6f')](path['join'](config[_0xde14('0x67')],_0xde14('0x65')),_0xde14('0x66'));var _0x4a1114=fs[_0xde14('0x6f')](path[_0xde14('0x64')](config[_0xde14('0x67')],'server/files/templates/registry.ejs'),'utf8');var _0x495741=ejs['render'](_0x58cf06,{'trunks':_0x43a155});var _0x381d6d=ejs[_0xde14('0x70')](_0x4a1114,{'trunks':_0x43a155});fs['writeFileSync'](_0xde14('0x6a'),_0x495741);fs[_0xde14('0x69')](_0xde14('0x71'),_0x381d6d);return respondWithRpcPromise(_0xde14('0x6c'),_0xde14('0x3b'),{'module':'chan_sip.so'});})[_0xde14('0x2a')](handleError(_0x5f4b92,null));};
\ No newline at end of file
index 1f44314..04d91e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2719=['Trunk','tools_trunks','lodash','util','../../config/logger','api','bluebird','request-promise','path','rimraf','./trunk.attributes','exports','define'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x2719,0x1d6));var _0x9271=function(_0x42ecb5,_0x20b4d2){_0x42ecb5=_0x42ecb5-0x0;var _0x487442=_0x2719[_0x42ecb5];return _0x487442;};'use strict';var _=require(_0x9271('0x0'));var util=require(_0x9271('0x1'));var logger=require(_0x9271('0x2'))(_0x9271('0x3'));var moment=require('moment');var BPromise=require(_0x9271('0x4'));var rp=require(_0x9271('0x5'));var fs=require('fs');var path=require(_0x9271('0x6'));var rimraf=require(_0x9271('0x7'));var config=require('../../config/environment');var attributes=require(_0x9271('0x8'));module[_0x9271('0x9')]=function(_0x4a3b90,_0x582749){return _0x4a3b90[_0x9271('0xa')](_0x9271('0xb'),attributes,{'tableName':_0x9271('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x3ae8=['path','rimraf','../../config/environment','./trunk.attributes','define','Trunk','tools_trunks','lodash','api','moment'];(function(_0x1d357b,_0x4af1ba){var _0x240114=function(_0x46c814){while(--_0x46c814){_0x1d357b['push'](_0x1d357b['shift']());}};_0x240114(++_0x4af1ba);}(_0x3ae8,0x18d));var _0x83ae=function(_0x264505,_0x139ee5){_0x264505=_0x264505-0x0;var _0x1579ff=_0x3ae8[_0x264505];return _0x1579ff;};'use strict';var _=require(_0x83ae('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x83ae('0x1'));var moment=require(_0x83ae('0x2'));var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x83ae('0x3'));var rimraf=require(_0x83ae('0x4'));var config=require(_0x83ae('0x5'));var attributes=require(_0x83ae('0x6'));module['exports']=function(_0x1c0c88,_0x5b6972){return _0x1c0c88[_0x83ae('0x7')](_0x83ae('0x8'),attributes,{'tableName':_0x83ae('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2b9818c..8e3f6f9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd756=['where','attributes','limit','include','map','model','then','GetTrunk','ShowTrunk','find','raw','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','request','info','request\x20sent','debug','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','code','Trunk,\x20%s,\x20%s','message','result','catch','Trunk','findAll','options'];(function(_0x399784,_0x2848bf){var _0x3ffee5=function(_0x16206f){while(--_0x16206f){_0x399784['push'](_0x399784['shift']());}};_0x3ffee5(++_0x2848bf);}(_0xd756,0x9f));var _0x6d75=function(_0x4bfe6d,_0x16dea4){_0x4bfe6d=_0x4bfe6d-0x0;var _0x243ecc=_0xd756[_0x4bfe6d];return _0x243ecc;};'use strict';var _=require(_0x6d75('0x0'));var util=require(_0x6d75('0x1'));var moment=require(_0x6d75('0x2'));var BPromise=require(_0x6d75('0x3'));var rs=require(_0x6d75('0x4'));var fs=require('fs');var Redis=require(_0x6d75('0x5'));var db=require(_0x6d75('0x6'))['db'];var utils=require(_0x6d75('0x7'));var logger=require(_0x6d75('0x8'))('rpc');var config=require(_0x6d75('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x6d75('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x11efe3,_0x3490c5,_0x115845){return new BPromise(function(_0x3d1b8b,_0x1f95d7){return client[_0x6d75('0xb')](_0x11efe3,_0x115845)['then'](function(_0x266e60){logger[_0x6d75('0xc')]('Trunk,\x20%s,\x20%s',_0x3490c5,_0x6d75('0xd'));logger[_0x6d75('0xe')](_0x6d75('0xf'),_0x3490c5,'request\x20sent',JSON[_0x6d75('0x10')](_0x266e60));if(_0x266e60[_0x6d75('0x11')]){if(_0x266e60[_0x6d75('0x11')][_0x6d75('0x12')]===0x1f4){logger[_0x6d75('0x11')](_0x6d75('0x13'),_0x3490c5,_0x266e60[_0x6d75('0x11')]['message']);return _0x1f95d7(_0x266e60[_0x6d75('0x11')][_0x6d75('0x14')]);}logger[_0x6d75('0x11')](_0x6d75('0x13'),_0x3490c5,_0x266e60['error']['message']);return _0x3d1b8b(_0x266e60[_0x6d75('0x11')][_0x6d75('0x14')]);}else{logger[_0x6d75('0xc')](_0x6d75('0x13'),_0x3490c5,_0x6d75('0xd'));_0x3d1b8b(_0x266e60[_0x6d75('0x15')][_0x6d75('0x14')]);}})[_0x6d75('0x16')](function(_0x118cf0){logger[_0x6d75('0x11')](_0x6d75('0x13'),_0x3490c5,_0x118cf0);_0x1f95d7(_0x118cf0);});});}exports['GetTrunk']=function(_0x4fc52b){var _0x396126=this;return new Promise(function(_0x258b46,_0xd3b91c){return db[_0x6d75('0x17')][_0x6d75('0x18')]({'raw':_0x4fc52b['options']?_0x4fc52b[_0x6d75('0x19')]['raw']===undefined?!![]:![]:!![],'where':_0x4fc52b[_0x6d75('0x19')]?_0x4fc52b[_0x6d75('0x19')][_0x6d75('0x1a')]||null:null,'attributes':_0x4fc52b['options']?_0x4fc52b[_0x6d75('0x19')][_0x6d75('0x1b')]||null:null,'limit':_0x4fc52b[_0x6d75('0x19')]?_0x4fc52b[_0x6d75('0x19')][_0x6d75('0x1c')]||null:null,'include':_0x4fc52b[_0x6d75('0x19')]?_0x4fc52b[_0x6d75('0x19')][_0x6d75('0x1d')]?_[_0x6d75('0x1e')](_0x4fc52b[_0x6d75('0x19')][_0x6d75('0x1d')],function(_0x2f5b5a){return{'model':db[_0x2f5b5a['model']],'as':_0x2f5b5a['as'],'attributes':_0x2f5b5a[_0x6d75('0x1b')],'include':_0x2f5b5a[_0x6d75('0x1d')]?_[_0x6d75('0x1e')](_0x2f5b5a['include'],function(_0xe7e015){return{'model':db[_0xe7e015[_0x6d75('0x1f')]],'as':_0xe7e015['as'],'attributes':_0xe7e015[_0x6d75('0x1b')],'include':_0xe7e015[_0x6d75('0x1d')]?_[_0x6d75('0x1e')](_0xe7e015[_0x6d75('0x1d')],function(_0x45b7e9){return{'model':db[_0x45b7e9['model']],'as':_0x45b7e9['as'],'attributes':_0x45b7e9[_0x6d75('0x1b')]};}):[]};}):[]};}):[]:[]})[_0x6d75('0x20')](function(_0x4fb3f7){logger['info'](_0x6d75('0x21'),_0x4fc52b);logger['debug']('GetTrunk',_0x4fc52b,JSON['stringify'](_0x4fb3f7));_0x258b46(_0x4fb3f7);})['catch'](function(_0x585299){logger[_0x6d75('0x11')](_0x6d75('0x21'),_0x585299[_0x6d75('0x14')],_0x4fc52b);_0xd3b91c(_0x396126['error'](0x1f4,_0x585299[_0x6d75('0x14')]));});});};exports[_0x6d75('0x22')]=function(_0x23c829){var _0xf154b4=this;return new Promise(function(_0x12ee10,_0x4cb562){return db[_0x6d75('0x17')][_0x6d75('0x23')]({'raw':_0x23c829['options']?_0x23c829[_0x6d75('0x19')][_0x6d75('0x24')]===undefined?!![]:![]:!![],'where':_0x23c829[_0x6d75('0x19')]?_0x23c829[_0x6d75('0x19')]['where']||null:null,'attributes':_0x23c829['options']?_0x23c829[_0x6d75('0x19')][_0x6d75('0x1b')]||null:null,'include':_0x23c829['options']?_0x23c829['options'][_0x6d75('0x1d')]?_['map'](_0x23c829[_0x6d75('0x19')][_0x6d75('0x1d')],function(_0x117a91){return{'model':db[_0x117a91['model']],'as':_0x117a91['as'],'attributes':_0x117a91[_0x6d75('0x1b')],'include':_0x117a91['include']?_[_0x6d75('0x1e')](_0x117a91[_0x6d75('0x1d')],function(_0x114714){return{'model':db[_0x114714[_0x6d75('0x1f')]],'as':_0x114714['as'],'attributes':_0x114714['attributes'],'include':_0x114714[_0x6d75('0x1d')]?_[_0x6d75('0x1e')](_0x114714['include'],function(_0x42aad9){return{'model':db[_0x42aad9[_0x6d75('0x1f')]],'as':_0x42aad9['as'],'attributes':_0x42aad9['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x52d0b1){logger[_0x6d75('0xc')](_0x6d75('0x22'),_0x23c829);logger['debug'](_0x6d75('0x22'),_0x23c829,JSON[_0x6d75('0x10')](_0x52d0b1));_0x12ee10(_0x52d0b1);})[_0x6d75('0x16')](function(_0x447a6c){logger[_0x6d75('0x11')](_0x6d75('0x22'),_0x447a6c[_0x6d75('0x14')],_0x23c829);_0x4cb562(_0xf154b4[_0x6d75('0x11')](0x1f4,_0x447a6c['message']));});});};
\ No newline at end of file
+var _0xe7d6=['rpc','../../config/environment','jayson/promise','client','http','request','then','info','Trunk,\x20%s,\x20%s','Trunk,\x20%s,\x20%s,\x20%s','stringify','error','message','request\x20sent','result','catch','GetTrunk','findAll','options','raw','include','map','model','attributes','debug','Trunk','find','ShowTrunk','moment','bluebird','randomstring','../../mysqldb','../../config/logger'];(function(_0x1b5433,_0x3b89ae){var _0x58e0de=function(_0x5aeb0f){while(--_0x5aeb0f){_0x1b5433['push'](_0x1b5433['shift']());}};_0x58e0de(++_0x3b89ae);}(_0xe7d6,0x124));var _0x6e7d=function(_0x3253a4,_0x43a815){_0x3253a4=_0x3253a4-0x0;var _0xb6a170=_0xe7d6[_0x3253a4];return _0xb6a170;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x6e7d('0x0'));var BPromise=require(_0x6e7d('0x1'));var rs=require(_0x6e7d('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x6e7d('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x6e7d('0x4'))(_0x6e7d('0x5'));var config=require(_0x6e7d('0x6'));var jayson=require(_0x6e7d('0x7'));var client=jayson[_0x6e7d('0x8')][_0x6e7d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x309a77,_0x32cdcf,_0x15d97b){return new BPromise(function(_0x3e8200,_0x527001){return client[_0x6e7d('0xa')](_0x309a77,_0x15d97b)[_0x6e7d('0xb')](function(_0xa87072){logger[_0x6e7d('0xc')](_0x6e7d('0xd'),_0x32cdcf,'request\x20sent');logger['debug'](_0x6e7d('0xe'),_0x32cdcf,'request\x20sent',JSON[_0x6e7d('0xf')](_0xa87072));if(_0xa87072[_0x6e7d('0x10')]){if(_0xa87072[_0x6e7d('0x10')]['code']===0x1f4){logger[_0x6e7d('0x10')]('Trunk,\x20%s,\x20%s',_0x32cdcf,_0xa87072[_0x6e7d('0x10')][_0x6e7d('0x11')]);return _0x527001(_0xa87072[_0x6e7d('0x10')][_0x6e7d('0x11')]);}logger['error']('Trunk,\x20%s,\x20%s',_0x32cdcf,_0xa87072[_0x6e7d('0x10')]['message']);return _0x3e8200(_0xa87072['error'][_0x6e7d('0x11')]);}else{logger[_0x6e7d('0xc')]('Trunk,\x20%s,\x20%s',_0x32cdcf,_0x6e7d('0x12'));_0x3e8200(_0xa87072[_0x6e7d('0x13')][_0x6e7d('0x11')]);}})[_0x6e7d('0x14')](function(_0x52c33b){logger[_0x6e7d('0x10')](_0x6e7d('0xd'),_0x32cdcf,_0x52c33b);_0x527001(_0x52c33b);});});}exports[_0x6e7d('0x15')]=function(_0x2dfc12){var _0x6e0da0=this;return new Promise(function(_0x390086,_0x55c3f6){return db['Trunk'][_0x6e7d('0x16')]({'raw':_0x2dfc12[_0x6e7d('0x17')]?_0x2dfc12[_0x6e7d('0x17')][_0x6e7d('0x18')]===undefined?!![]:![]:!![],'where':_0x2dfc12['options']?_0x2dfc12[_0x6e7d('0x17')]['where']||null:null,'attributes':_0x2dfc12[_0x6e7d('0x17')]?_0x2dfc12[_0x6e7d('0x17')]['attributes']||null:null,'limit':_0x2dfc12[_0x6e7d('0x17')]?_0x2dfc12[_0x6e7d('0x17')]['limit']||null:null,'include':_0x2dfc12['options']?_0x2dfc12[_0x6e7d('0x17')][_0x6e7d('0x19')]?_[_0x6e7d('0x1a')](_0x2dfc12['options'][_0x6e7d('0x19')],function(_0x505aa8){return{'model':db[_0x505aa8[_0x6e7d('0x1b')]],'as':_0x505aa8['as'],'attributes':_0x505aa8[_0x6e7d('0x1c')],'include':_0x505aa8['include']?_[_0x6e7d('0x1a')](_0x505aa8[_0x6e7d('0x19')],function(_0x4b86d5){return{'model':db[_0x4b86d5[_0x6e7d('0x1b')]],'as':_0x4b86d5['as'],'attributes':_0x4b86d5[_0x6e7d('0x1c')],'include':_0x4b86d5[_0x6e7d('0x19')]?_[_0x6e7d('0x1a')](_0x4b86d5[_0x6e7d('0x19')],function(_0x17a886){return{'model':db[_0x17a886[_0x6e7d('0x1b')]],'as':_0x17a886['as'],'attributes':_0x17a886['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x8e05fa){logger[_0x6e7d('0xc')](_0x6e7d('0x15'),_0x2dfc12);logger[_0x6e7d('0x1d')](_0x6e7d('0x15'),_0x2dfc12,JSON['stringify'](_0x8e05fa));_0x390086(_0x8e05fa);})[_0x6e7d('0x14')](function(_0x270ad7){logger[_0x6e7d('0x10')](_0x6e7d('0x15'),_0x270ad7[_0x6e7d('0x11')],_0x2dfc12);_0x55c3f6(_0x6e0da0[_0x6e7d('0x10')](0x1f4,_0x270ad7[_0x6e7d('0x11')]));});});};exports['ShowTrunk']=function(_0x4e97ad){var _0x550c1c=this;return new Promise(function(_0x1716b0,_0x3488e4){return db[_0x6e7d('0x1e')][_0x6e7d('0x1f')]({'raw':_0x4e97ad[_0x6e7d('0x17')]?_0x4e97ad['options']['raw']===undefined?!![]:![]:!![],'where':_0x4e97ad[_0x6e7d('0x17')]?_0x4e97ad['options']['where']||null:null,'attributes':_0x4e97ad[_0x6e7d('0x17')]?_0x4e97ad['options']['attributes']||null:null,'include':_0x4e97ad[_0x6e7d('0x17')]?_0x4e97ad[_0x6e7d('0x17')][_0x6e7d('0x19')]?_[_0x6e7d('0x1a')](_0x4e97ad[_0x6e7d('0x17')][_0x6e7d('0x19')],function(_0x131a0e){return{'model':db[_0x131a0e[_0x6e7d('0x1b')]],'as':_0x131a0e['as'],'attributes':_0x131a0e[_0x6e7d('0x1c')],'include':_0x131a0e[_0x6e7d('0x19')]?_[_0x6e7d('0x1a')](_0x131a0e[_0x6e7d('0x19')],function(_0x3fd581){return{'model':db[_0x3fd581[_0x6e7d('0x1b')]],'as':_0x3fd581['as'],'attributes':_0x3fd581[_0x6e7d('0x1c')],'include':_0x3fd581[_0x6e7d('0x19')]?_[_0x6e7d('0x1a')](_0x3fd581[_0x6e7d('0x19')],function(_0x19f0fe){return{'model':db[_0x19f0fe[_0x6e7d('0x1b')]],'as':_0x19f0fe['as'],'attributes':_0x19f0fe[_0x6e7d('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x6e7d('0xb')](function(_0x544685){logger[_0x6e7d('0xc')](_0x6e7d('0x20'),_0x4e97ad);logger[_0x6e7d('0x1d')](_0x6e7d('0x20'),_0x4e97ad,JSON[_0x6e7d('0xf')](_0x544685));_0x1716b0(_0x544685);})[_0x6e7d('0x14')](function(_0x25ae4b){logger['error']('ShowTrunk',_0x25ae4b['message'],_0x4e97ad);_0x3488e4(_0x550c1c[_0x6e7d('0x10')](0x1f4,_0x25ae4b['message']));});});};
\ No newline at end of file
index 3019d99..9293439 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2050=['Router','../../components/auth/service','put','/:id','isAuthenticated','exports','express'];(function(_0x3cba93,_0x5c2fd8){var _0x4a2991=function(_0x3cf95b){while(--_0x3cf95b){_0x3cba93['push'](_0x3cba93['shift']());}};_0x4a2991(++_0x5c2fd8);}(_0x2050,0xd1));var _0x0205=function(_0x4c6489,_0x154275){_0x4c6489=_0x4c6489-0x0;var _0x1e303f=_0x2050[_0x4c6489];return _0x1e303f;};'use strict';var express=require(_0x0205('0x0'));var router=express[_0x0205('0x1')]();var auth=require(_0x0205('0x2'));var controller=require('./user-setting.controller');router[_0x0205('0x3')](_0x0205('0x4'),auth[_0x0205('0x5')](),controller['update']);module[_0x0205('0x6')]=router;
\ No newline at end of file
+var _0xf112=['isAuthenticated','update','exports','express','Router','../../components/auth/service','put','/:id'];(function(_0x1cd34d,_0x1f8559){var _0x406c54=function(_0x33deaa){while(--_0x33deaa){_0x1cd34d['push'](_0x1cd34d['shift']());}};_0x406c54(++_0x1f8559);}(_0xf112,0x133));var _0x2f11=function(_0x47cde9,_0x19d013){_0x47cde9=_0x47cde9-0x0;var _0x26fdf1=_0xf112[_0x47cde9];return _0x26fdf1;};'use strict';var express=require(_0x2f11('0x0'));var router=express[_0x2f11('0x1')]();var auth=require(_0x2f11('0x2'));var controller=require('./user-setting.controller');router[_0x2f11('0x3')](_0x2f11('0x4'),auth[_0x2f11('0x5')](),controller[_0x2f11('0x6')]);module[_0x2f11('0x7')]=router;
\ No newline at end of file
index a82d3e5..afa4d97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0006=['BOOLEAN','TEXT','UserId','sequelize','error','warning','info','debug','exports','ENUM'];(function(_0x83c12,_0x117a40){var _0x116d8b=function(_0x339f90){while(--_0x339f90){_0x83c12['push'](_0x83c12['shift']());}};_0x116d8b(++_0x117a40);}(_0x0006,0x111));var _0x6000=function(_0x2a9b58,_0x31bede){_0x2a9b58=_0x2a9b58-0x0;var _0x3478c7=_0x0006[_0x2a9b58];return _0x3478c7;};'use strict';var Sequelize=require(_0x6000('0x0'));const CLIENT_SIDE_LOG_LEVELS=[_0x6000('0x1'),_0x6000('0x2'),_0x6000('0x3'),_0x6000('0x4')];module[_0x6000('0x5')]={'clientSideLoggingLevel':{'type':Sequelize[_0x6000('0x6')](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0x6000('0x1'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0x6000('0x7')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0x6000('0x8')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize['DATE'],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize['INTEGER'],'unique':_0x6000('0x9')}};
\ No newline at end of file
+var _0xf9c7=['INTEGER','UserId','sequelize','error','warning','info','debug','exports','BOOLEAN','TEXT','DATE'];(function(_0x4dc7b9,_0x319d5a){var _0x3ab114=function(_0x51a9df){while(--_0x51a9df){_0x4dc7b9['push'](_0x4dc7b9['shift']());}};_0x3ab114(++_0x319d5a);}(_0xf9c7,0x86));var _0x7f9c=function(_0x2964e5,_0x363898){_0x2964e5=_0x2964e5-0x0;var _0x33072c=_0xf9c7[_0x2964e5];return _0x33072c;};'use strict';var Sequelize=require(_0x7f9c('0x0'));const CLIENT_SIDE_LOG_LEVELS=[_0x7f9c('0x1'),_0x7f9c('0x2'),_0x7f9c('0x3'),_0x7f9c('0x4')];module[_0x7f9c('0x5')]={'clientSideLoggingLevel':{'type':Sequelize['ENUM'](CLIENT_SIDE_LOG_LEVELS),'allowNull':![],'defaultValue':_0x7f9c('0x1'),'validate':{'isIn':[CLIENT_SIDE_LOG_LEVELS]}},'clientSideLoggingEnabled':{'type':Sequelize[_0x7f9c('0x6')],'defaultValue':![]},'clientSideLoggingScopes':{'type':Sequelize[_0x7f9c('0x7')],'allowNull':!![]},'clientSideLoggingEnabledSince':{'type':Sequelize[_0x7f9c('0x8')],'allowNull':!![],'defaultValue':null},'UserId':{'type':Sequelize[_0x7f9c('0x9')],'unique':_0x7f9c('0xa')}};
\ No newline at end of file
index f7f5c98..9dfad48 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5af0=['../../config/logger','api','../../config/environment','../../mysqldb','socket.io-emitter','redis','register','defaults','localhost','status','json','sendStatus','stack','name','send','update','user','role','admin','Unauthorized','params','Invalid\x20user\x20setting\x20id','UserSetting','find','body','then','catch','lodash','ioredis'];(function(_0x3a88d5,_0x55b44b){var _0x34c22e=function(_0x33964a){while(--_0x33964a){_0x3a88d5['push'](_0x3a88d5['shift']());}};_0x34c22e(++_0x55b44b);}(_0x5af0,0x1eb));var _0x05af=function(_0x5c036b,_0x39fd65){_0x5c036b=_0x5c036b-0x0;var _0x1b27b1=_0x5af0[_0x5c036b];return _0x1b27b1;};'use strict';var _=require(_0x05af('0x0'));var Redis=require(_0x05af('0x1'));var logger=require(_0x05af('0x2'))(_0x05af('0x3'));var config=require(_0x05af('0x4'));var db=require(_0x05af('0x5'))['db'];var socket=require(_0x05af('0x6'))(new Redis(config[_0x05af('0x7')]));require('./user-setting.socket')[_0x05af('0x8')](socket);config['redis']=_[_0x05af('0x9')](config[_0x05af('0x7')],{'host':_0x05af('0xa'),'port':0x18eb});function respondWithResult(_0x4a963b,_0xfbaa9a){_0xfbaa9a=_0xfbaa9a||0xc8;return function(_0x4e120b){if(_0x4e120b){return _0x4a963b[_0x05af('0xb')](_0xfbaa9a)[_0x05af('0xc')](_0x4e120b);}};}function saveUpdates(_0x1d8343){return function(_0x4c8690){if(_0x4c8690){return _0x4c8690['update'](_0x1d8343)['then'](function(_0x47e5ad){return _0x47e5ad;});}return null;};}function handleEntityNotFound(_0xb5fb8a){return function(_0x34c228){if(!_0x34c228){_0xb5fb8a[_0x05af('0xd')](0x194);}return _0x34c228;};}function handleError(_0x48680f,_0x408a12){_0x408a12=_0x408a12||0x1f4;return function(_0x4dc76d){logger['error'](_0x4dc76d[_0x05af('0xe')]);if(_0x4dc76d[_0x05af('0xf')]){delete _0x4dc76d[_0x05af('0xf')];}_0x48680f[_0x05af('0xb')](_0x408a12)[_0x05af('0x10')](_0x4dc76d);};}exports[_0x05af('0x11')]=function(_0xf57ece,_0x2fd2d4){if(_0xf57ece[_0x05af('0x12')][_0x05af('0x13')]!==_0x05af('0x14'))throw new Error(_0x05af('0x15'));if(isNaN(Number(_0xf57ece[_0x05af('0x16')]['id'])))throw new Error(_0x05af('0x17'));return db[_0x05af('0x18')][_0x05af('0x19')]({'where':{'id':_0xf57ece[_0x05af('0x16')]['id']}})['then'](handleEntityNotFound(_0x2fd2d4,null))['then'](saveUpdates(_0xf57ece[_0x05af('0x1a')],null))[_0x05af('0x1b')](respondWithResult(_0x2fd2d4,null))[_0x05af('0x1c')](handleError(_0x2fd2d4,null));};
\ No newline at end of file
+var _0x3036=['admin','Unauthorized','params','Invalid\x20user\x20setting\x20id','UserSetting','find','catch','../../config/logger','api','../../config/environment','socket.io-emitter','redis','localhost','status','json','update','then','sendStatus','error','name','send','role'];(function(_0x29ceb8,_0x4521b3){var _0x3608c8=function(_0x45595a){while(--_0x45595a){_0x29ceb8['push'](_0x29ceb8['shift']());}};_0x3608c8(++_0x4521b3);}(_0x3036,0x1a9));var _0x6303=function(_0x228607,_0x5a2561){_0x228607=_0x228607-0x0;var _0x3cb4da=_0x3036[_0x228607];return _0x3cb4da;};'use strict';var _=require('lodash');var Redis=require('ioredis');var logger=require(_0x6303('0x0'))(_0x6303('0x1'));var config=require(_0x6303('0x2'));var db=require('../../mysqldb')['db'];var socket=require(_0x6303('0x3'))(new Redis(config['redis']));require('./user-setting.socket')['register'](socket);config[_0x6303('0x4')]=_['defaults'](config[_0x6303('0x4')],{'host':_0x6303('0x5'),'port':0x18eb});function respondWithResult(_0x25a0ce,_0x48c936){_0x48c936=_0x48c936||0xc8;return function(_0x8a0038){if(_0x8a0038){return _0x25a0ce[_0x6303('0x6')](_0x48c936)[_0x6303('0x7')](_0x8a0038);}};}function saveUpdates(_0x469401){return function(_0x7f88f){if(_0x7f88f){return _0x7f88f[_0x6303('0x8')](_0x469401)[_0x6303('0x9')](function(_0x179151){return _0x179151;});}return null;};}function handleEntityNotFound(_0x3eccd5){return function(_0x558fca){if(!_0x558fca){_0x3eccd5[_0x6303('0xa')](0x194);}return _0x558fca;};}function handleError(_0x24aa6c,_0x3ac7ef){_0x3ac7ef=_0x3ac7ef||0x1f4;return function(_0x408063){logger[_0x6303('0xb')](_0x408063['stack']);if(_0x408063[_0x6303('0xc')]){delete _0x408063[_0x6303('0xc')];}_0x24aa6c[_0x6303('0x6')](_0x3ac7ef)[_0x6303('0xd')](_0x408063);};}exports[_0x6303('0x8')]=function(_0x48462d,_0x5ef678){if(_0x48462d['user'][_0x6303('0xe')]!==_0x6303('0xf'))throw new Error(_0x6303('0x10'));if(isNaN(Number(_0x48462d[_0x6303('0x11')]['id'])))throw new Error(_0x6303('0x12'));return db[_0x6303('0x13')][_0x6303('0x14')]({'where':{'id':_0x48462d[_0x6303('0x11')]['id']}})[_0x6303('0x9')](handleEntityNotFound(_0x5ef678,null))['then'](saveUpdates(_0x48462d['body'],null))[_0x6303('0x9')](respondWithResult(_0x5ef678,null))[_0x6303('0x15')](handleError(_0x5ef678,null));};
\ No newline at end of file
index d7728ea..0c015cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb64=['exports','events','setMaxListeners','save','update','remove','emit','hasOwnProperty','hook'];(function(_0x2d9f8b,_0x1eca48){var _0x251209=function(_0x15205f){while(--_0x15205f){_0x2d9f8b['push'](_0x2d9f8b['shift']());}};_0x251209(++_0x1eca48);}(_0xcb64,0xeb));var _0x4cb6=function(_0x4e3e88,_0x263d7f){_0x4e3e88=_0x4e3e88-0x0;var _0x37fb83=_0xcb64[_0x4e3e88];return _0x37fb83;};'use strict';var EventEmitter=require(_0x4cb6('0x0'));var UserSetting=require('../../mysqldb')['db']['UserSetting'];var UserSettingEvents=new EventEmitter();UserSettingEvents[_0x4cb6('0x1')](0x0);var events={'afterCreate':_0x4cb6('0x2'),'afterUpdate':_0x4cb6('0x3'),'afterDestroy':_0x4cb6('0x4')};function emitEvent(_0x48349e){return function(_0x2a0248,_0x133ca3,_0x48c0cc){UserSettingEvents[_0x4cb6('0x5')](_0x48349e+':'+_0x2a0248['id'],_0x2a0248);UserSettingEvents[_0x4cb6('0x5')](_0x48349e,_0x2a0248);_0x48c0cc(null);};}for(var e in events){if(events[_0x4cb6('0x6')](e)){var event=events[e];UserSetting[_0x4cb6('0x7')](e,emitEvent(event));}}module[_0x4cb6('0x8')]=UserSettingEvents;
\ No newline at end of file
+var _0x1ddf=['remove','hasOwnProperty','exports','../../mysqldb','UserSetting','update'];(function(_0x55daed,_0x892a6d){var _0x5d5451=function(_0x5e5e93){while(--_0x5e5e93){_0x55daed['push'](_0x55daed['shift']());}};_0x5d5451(++_0x892a6d);}(_0x1ddf,0x9f));var _0xf1dd=function(_0x10b4b8,_0x450fea){_0x10b4b8=_0x10b4b8-0x0;var _0x424293=_0x1ddf[_0x10b4b8];return _0x424293;};'use strict';var EventEmitter=require('events');var UserSetting=require(_0xf1dd('0x0'))['db'][_0xf1dd('0x1')];var UserSettingEvents=new EventEmitter();UserSettingEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xf1dd('0x2'),'afterDestroy':_0xf1dd('0x3')};function emitEvent(_0x1f517a){return function(_0x1e5d57,_0x7915e6,_0x2ae81b){UserSettingEvents['emit'](_0x1f517a+':'+_0x1e5d57['id'],_0x1e5d57);UserSettingEvents['emit'](_0x1f517a,_0x1e5d57);_0x2ae81b(null);};}for(var e in events){if(events[_0xf1dd('0x4')](e)){var event=events[e];UserSetting['hook'](e,emitEvent(event));}}module[_0xf1dd('0x5')]=UserSettingEvents;
\ No newline at end of file
index d9aeaf9..d3d6e02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xac4a=['clientSideLoggingEnabledSince','./user-setting.attributes','exports','define','UserSetting','user_settings'];(function(_0x4fde08,_0x463a36){var _0x12e725=function(_0x2670c5){while(--_0x2670c5){_0x4fde08['push'](_0x4fde08['shift']());}};_0x12e725(++_0x463a36);}(_0xac4a,0x13f));var _0xaac4=function(_0x19a0d7,_0x37213a){_0x19a0d7=_0x19a0d7-0x0;var _0x37034d=_0xac4a[_0x19a0d7];return _0x37034d;};'use strict';var attributes=require(_0xaac4('0x0'));module[_0xaac4('0x1')]=function(_0x2e2ad0){return _0x2e2ad0[_0xaac4('0x2')](_0xaac4('0x3'),attributes,{'tableName':_0xaac4('0x4'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x5aeb7d){if(!_0x5aeb7d['clientSideLoggingEnabled'])_0x5aeb7d[_0xaac4('0x5')]=null;else if(_0x5aeb7d[_0xaac4('0x5')]===null)_0x5aeb7d[_0xaac4('0x5')]=new Date();}}});};
\ No newline at end of file
+var _0x84a0=['user_settings','clientSideLoggingEnabledSince','./user-setting.attributes','exports','define'];(function(_0x1f3aec,_0x24c18e){var _0x409f0d=function(_0x52b818){while(--_0x52b818){_0x1f3aec['push'](_0x1f3aec['shift']());}};_0x409f0d(++_0x24c18e);}(_0x84a0,0x66));var _0x084a=function(_0x58addc,_0x9118ff){_0x58addc=_0x58addc-0x0;var _0x33527a=_0x84a0[_0x58addc];return _0x33527a;};'use strict';var attributes=require(_0x084a('0x0'));module[_0x084a('0x1')]=function(_0x209635){return _0x209635[_0x084a('0x2')]('UserSetting',attributes,{'tableName':_0x084a('0x3'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x428004){if(!_0x428004['clientSideLoggingEnabled'])_0x428004['clientSideLoggingEnabledSince']=null;else if(_0x428004[_0x084a('0x4')]===null)_0x428004[_0x084a('0x4')]=new Date();}}});};
\ No newline at end of file
index 833e038..306b194 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8331=['update','emit','user-setting:update:user-','UserId','register','length','user-setting:','./user-setting.events','save','remove'];(function(_0x4fbfd9,_0x3ab91a){var _0x31dc94=function(_0x11e53b){while(--_0x11e53b){_0x4fbfd9['push'](_0x4fbfd9['shift']());}};_0x31dc94(++_0x3ab91a);}(_0x8331,0x165));var _0x1833=function(_0x31b5a5,_0x44376a){_0x31b5a5=_0x31b5a5-0x0;var _0x364cc9=_0x8331[_0x31b5a5];return _0x364cc9;};'use strict';var UserSettingEvents=require(_0x1833('0x0'));var events=[_0x1833('0x1'),_0x1833('0x2'),_0x1833('0x3')];function createListener(_0x4f1905,_0x3a05b7){return function(_0x66cfa8){_0x3a05b7[_0x1833('0x4')](_0x4f1905,_0x66cfa8);if(_0x4f1905==='user-setting:update'){_0x3a05b7[_0x1833('0x4')](_0x1833('0x5')+_0x66cfa8[_0x1833('0x6')],_0x66cfa8);}};}exports[_0x1833('0x7')]=function(_0x4bd368){for(var _0x43a546=0x0,_0x98f80c=events[_0x1833('0x8')];_0x43a546<_0x98f80c;_0x43a546++){var _0x25bd9d=events[_0x43a546];var _0x128b09=createListener(_0x1833('0x9')+_0x25bd9d,_0x4bd368);UserSettingEvents['on'](_0x25bd9d,_0x128b09);}};
\ No newline at end of file
+var _0xfe67=['length','./user-setting.events','save','remove','update','emit','user-setting:update:user-','UserId','register'];(function(_0x202e3c,_0x532538){var _0x2743d7=function(_0x4a18d9){while(--_0x4a18d9){_0x202e3c['push'](_0x202e3c['shift']());}};_0x2743d7(++_0x532538);}(_0xfe67,0xc7));var _0x7fe6=function(_0x5db1ce,_0x57ab66){_0x5db1ce=_0x5db1ce-0x0;var _0xb62cbb=_0xfe67[_0x5db1ce];return _0xb62cbb;};'use strict';var UserSettingEvents=require(_0x7fe6('0x0'));var events=[_0x7fe6('0x1'),_0x7fe6('0x2'),_0x7fe6('0x3')];function createListener(_0x84a57,_0x15158c){return function(_0xca306){_0x15158c[_0x7fe6('0x4')](_0x84a57,_0xca306);if(_0x84a57==='user-setting:update'){_0x15158c[_0x7fe6('0x4')](_0x7fe6('0x5')+_0xca306[_0x7fe6('0x6')],_0xca306);}};}exports[_0x7fe6('0x7')]=function(_0x2da89e){for(var _0xa63462=0x0,_0x19a37f=events[_0x7fe6('0x8')];_0xa63462<_0x19a37f;_0xa63462++){var _0x392b17=events[_0xa63462];var _0x11de64=createListener('user-setting:'+_0x392b17,_0x2da89e);UserSettingEvents['on'](_0x392b17,_0x11de64);}};
\ No newline at end of file
index ec8936d..0f80581 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4ee=['removeChatInteractions','removeMailInteractions','/:id/fax_interactions','/:id/sms_interactions','/:id/openchannel_interactions','removeOpenchannelInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeChatWebsites','removeWhatsappAccounts','removeSquareProjects','removeApiKey','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./user.controller','isAuthenticated','index','get','/describe','describe','/whoami','whoami','/presence','getPresence','/:id','show','getAvatar','getOpenTabs','/:id/contacts','/:id/queues','getQueues','/:id/queues_rt','getVoiceQueuesRt','/:id/groups','getGroups','/:id/recordings','getRecordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','getOpenchannelInteractions','getMailInteractions','/:id/sms/interactions','getSmsInteractions','/:id/fax/interactions','/:id/whatsapp/interactions','getTeams','/:id/lists','getLists','/:id/agents','getAgents','/:id/prefixes','getVoicePrefixes','/:id/fax_accounts','getFaxAccounts','/:id/mail_accounts','/:id/openchannel_accounts','getOpenchannelAccounts','/:id/sms_accounts','getSmsAccounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','getWhatsappAccounts','/:id/square_projects','getSquareProjects','/:id/scheduled_calls','getScheduledCalls','/:id/api_key','getApiKey','post','addContacts','create','diskStorage','root','server/files/images/','format','%s-%s','now','originalname','/:id/avatar','addAvatar','login','/:id/logout','logout','/:id/pause','pause','/:id/unpause','unpause','/:id/teams','addTeams','/:id/chat_interactions','/:id/mail_interactions','addMailInteractions','addFaxInteractions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','addFaxAccounts','addOpenchannelAccounts','addSmsAccounts','addChatWebsites','addWhatsappAccounts','addSquareProjects','createApiKey','put','update','/:id/password','changePassword','removeQueues','delete','removeTeams'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0xd4ee,0x104));var _0xed4e=function(_0x495b9e,_0x338719){_0x495b9e=_0x495b9e-0x0;var _0x54b504=_0xd4ee[_0x495b9e];return _0x54b504;};'use strict';var multer=require(_0xed4e('0x0'));var util=require(_0xed4e('0x1'));var path=require(_0xed4e('0x2'));var timeout=require(_0xed4e('0x3'));var express=require(_0xed4e('0x4'));var router=express[_0xed4e('0x5')]();var fs_extra=require(_0xed4e('0x6'));var auth=require(_0xed4e('0x7'));var interaction=require(_0xed4e('0x8'));var config=require('../../config/environment');var controller=require(_0xed4e('0x9'));router['get']('/',auth[_0xed4e('0xa')](),controller[_0xed4e('0xb')]);router[_0xed4e('0xc')](_0xed4e('0xd'),auth[_0xed4e('0xa')](),controller[_0xed4e('0xe')]);router[_0xed4e('0xc')](_0xed4e('0xf'),auth['isAuthenticated'](),controller[_0xed4e('0x10')]);router[_0xed4e('0xc')](_0xed4e('0x11'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x12')]);router[_0xed4e('0xc')](_0xed4e('0x13'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x14')]);router[_0xed4e('0xc')]('/:id/avatar',controller[_0xed4e('0x15')]);router[_0xed4e('0xc')]('/:id/open_tabs',auth[_0xed4e('0xa')](),controller[_0xed4e('0x16')]);router['get'](_0xed4e('0x17'),auth[_0xed4e('0xa')](),controller['getContacts']);router[_0xed4e('0xc')](_0xed4e('0x18'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x19')]);router[_0xed4e('0xc')](_0xed4e('0x1a'),auth['isAuthenticated'](),controller[_0xed4e('0x1b')]);router[_0xed4e('0xc')](_0xed4e('0x1c'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x1d')]);router[_0xed4e('0xc')](_0xed4e('0x1e'),auth['isAuthenticated'](),controller[_0xed4e('0x1f')]);router[_0xed4e('0xc')](_0xed4e('0x20'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x21')]);router[_0xed4e('0xc')](_0xed4e('0x22'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x23')]);router[_0xed4e('0xc')](_0xed4e('0x24'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x25')]);router[_0xed4e('0xc')]('/:id/mail/interactions',auth['isAuthenticated'](),controller[_0xed4e('0x26')]);router[_0xed4e('0xc')](_0xed4e('0x27'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x28')]);router[_0xed4e('0xc')](_0xed4e('0x29'),auth[_0xed4e('0xa')](),controller['getFaxInteractions']);router[_0xed4e('0xc')](_0xed4e('0x2a'),auth[_0xed4e('0xa')](),controller['getWhatsappInteractions']);router[_0xed4e('0xc')]('/:id/teams',auth[_0xed4e('0xa')](),controller[_0xed4e('0x2b')]);router['get'](_0xed4e('0x2c'),auth['isAuthenticated'](),controller[_0xed4e('0x2d')]);router[_0xed4e('0xc')](_0xed4e('0x2e'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x2f')]);router[_0xed4e('0xc')](_0xed4e('0x30'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x31')]);router[_0xed4e('0xc')](_0xed4e('0x32'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x33')]);router[_0xed4e('0xc')](_0xed4e('0x34'),auth['isAuthenticated'](),controller['getMailAccounts']);router[_0xed4e('0xc')](_0xed4e('0x35'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x36')]);router['get'](_0xed4e('0x37'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x38')]);router['get'](_0xed4e('0x39'),auth['isAuthenticated'](),controller[_0xed4e('0x3a')]);router[_0xed4e('0xc')](_0xed4e('0x3b'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x3c')]);router[_0xed4e('0xc')](_0xed4e('0x3d'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x3e')]);router[_0xed4e('0xc')](_0xed4e('0x3f'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x40')]);router[_0xed4e('0xc')](_0xed4e('0x41'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x42')]);router[_0xed4e('0x43')](_0xed4e('0x17'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x44')]);router[_0xed4e('0x43')]('/',auth[_0xed4e('0xa')](),controller[_0xed4e('0x45')]);router['post']('/create_many',auth[_0xed4e('0xa')](),controller['bulkCreate']);router[_0xed4e('0x43')](_0xed4e('0x18'),auth[_0xed4e('0xa')](),controller['addQueues']);var upload=multer({'storage':multer[_0xed4e('0x46')]({'destination':function(_0x3f758c,_0x212187,_0x46ba8d){_0x46ba8d(null,path['join'](config[_0xed4e('0x47')],_0xed4e('0x48')));},'filename':function(_0x51b08e,_0x4e6224,_0x71fd88){_0x71fd88(null,util[_0xed4e('0x49')](_0xed4e('0x4a'),Date[_0xed4e('0x4b')](),_0x4e6224[_0xed4e('0x4c')]));}})});router[_0xed4e('0x43')](_0xed4e('0x4d'),upload['single']('file'),controller[_0xed4e('0x4e')]);router[_0xed4e('0x43')]('/:id/login',auth[_0xed4e('0xa')](),controller[_0xed4e('0x4f')]);router[_0xed4e('0x43')](_0xed4e('0x50'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x51')]);router[_0xed4e('0x43')](_0xed4e('0x52'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x53')]);router['post'](_0xed4e('0x54'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x55')]);router['post'](_0xed4e('0x56'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x57')]);router[_0xed4e('0x43')](_0xed4e('0x58'),auth['isAuthenticated'](),controller['addChatInteractions']);router['post'](_0xed4e('0x59'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x5a')]);router[_0xed4e('0x43')]('/:id/fax_interactions',auth[_0xed4e('0xa')](),controller[_0xed4e('0x5b')]);router[_0xed4e('0x43')]('/:id/sms_interactions',auth[_0xed4e('0xa')](),controller['addSmsInteractions']);router[_0xed4e('0x43')]('/:id/openchannel_interactions',auth[_0xed4e('0xa')](),controller[_0xed4e('0x5c')]);router['post'](_0xed4e('0x5d'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x5e')]);router[_0xed4e('0x43')]('/:id/fax_accounts',auth[_0xed4e('0xa')](),controller[_0xed4e('0x5f')]);router[_0xed4e('0x43')](_0xed4e('0x34'),auth[_0xed4e('0xa')](),controller['addMailAccounts']);router['post'](_0xed4e('0x35'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x60')]);router[_0xed4e('0x43')](_0xed4e('0x37'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x61')]);router[_0xed4e('0x43')](_0xed4e('0x39'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x62')]);router['post'](_0xed4e('0x3b'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x63')]);router['post']('/:id/square_projects',auth[_0xed4e('0xa')](),controller[_0xed4e('0x64')]);router['post'](_0xed4e('0x41'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x65')]);router[_0xed4e('0x66')]('/:id',auth[_0xed4e('0xa')](),controller[_0xed4e('0x67')]);router[_0xed4e('0x66')](_0xed4e('0x68'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x69')]);router['delete']('/:id/queues',auth[_0xed4e('0xa')](),controller[_0xed4e('0x6a')]);router[_0xed4e('0x6b')](_0xed4e('0x56'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x6c')]);router['delete'](_0xed4e('0x13'),auth['isAuthenticated'](),controller['destroy']);router[_0xed4e('0x6b')](_0xed4e('0x58'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x6d')]);router[_0xed4e('0x6b')](_0xed4e('0x59'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x6e')]);router[_0xed4e('0x6b')](_0xed4e('0x6f'),auth[_0xed4e('0xa')](),controller['removeFaxInteractions']);router[_0xed4e('0x6b')](_0xed4e('0x70'),auth['isAuthenticated'](),controller['removeSmsInteractions']);router[_0xed4e('0x6b')](_0xed4e('0x71'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x72')]);router[_0xed4e('0x6b')](_0xed4e('0x5d'),auth['isAuthenticated'](),controller['removeWhatsappInteractions']);router[_0xed4e('0x6b')]('/:id/fax_accounts',auth[_0xed4e('0xa')](),controller[_0xed4e('0x73')]);router[_0xed4e('0x6b')](_0xed4e('0x34'),auth['isAuthenticated'](),controller[_0xed4e('0x74')]);router[_0xed4e('0x6b')]('/:id/openchannel_accounts',auth[_0xed4e('0xa')](),controller[_0xed4e('0x75')]);router[_0xed4e('0x6b')](_0xed4e('0x37'),auth[_0xed4e('0xa')](),controller['removeSmsAccounts']);router[_0xed4e('0x6b')](_0xed4e('0x39'),auth['isAuthenticated'](),controller[_0xed4e('0x76')]);router[_0xed4e('0x6b')](_0xed4e('0x3b'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x77')]);router[_0xed4e('0x6b')](_0xed4e('0x3d'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x78')]);router[_0xed4e('0x6b')](_0xed4e('0x41'),auth[_0xed4e('0xa')](),controller[_0xed4e('0x79')]);module[_0xed4e('0x7a')]=router;
\ No newline at end of file
+var _0xaaaf=['createApiKey','put','update','changePassword','delete','removeQueues','removeTeams','destroy','removeChatInteractions','removeMailInteractions','removeFaxInteractions','removeSmsInteractions','removeWhatsappInteractions','removeFaxAccounts','removeMailAccounts','removeOpenchannelAccounts','removeSmsAccounts','removeChatWebsites','removeWhatsappAccounts','removeApiKey','exports','util','path','connect-timeout','Router','fs-extra','../../config/environment','./user.controller','isAuthenticated','/describe','get','/whoami','/presence','getPresence','/:id','show','/:id/avatar','getAvatar','getOpenTabs','/:id/contacts','getContacts','/:id/queues','getQueues','getVoiceQueuesRt','/:id/recordings','/:id/screen_recordings','getScreenRecordings','/:id/chat/interactions','getChatInteractions','/:id/openchannel/interactions','/:id/mail/interactions','getMailInteractions','getSmsInteractions','/:id/fax/interactions','getFaxInteractions','getWhatsappInteractions','/:id/teams','getTeams','/:id/lists','/:id/agents','getAgents','/:id/prefixes','getVoicePrefixes','getFaxAccounts','getMailAccounts','/:id/openchannel_accounts','/:id/sms_accounts','/:id/chat_websites','getChatWebsites','/:id/whatsapp_accounts','/:id/square_projects','/:id/scheduled_calls','getScheduledCalls','getApiKey','post','addContacts','/create_many','bulkCreate','addQueues','diskStorage','join','root','server/files/images/','format','now','originalname','single','addAvatar','/:id/login','login','/:id/logout','logout','/:id/pause','pause','/:id/unpause','unpause','addTeams','/:id/chat_interactions','addChatInteractions','/:id/mail_interactions','addMailInteractions','/:id/fax_interactions','addFaxInteractions','/:id/sms_interactions','/:id/openchannel_interactions','addOpenchannelInteractions','/:id/whatsapp_interactions','addWhatsappInteractions','/:id/fax_accounts','addFaxAccounts','/:id/mail_accounts','addMailAccounts','addOpenchannelAccounts','addSmsAccounts','addChatWebsites','/:id/api_key'];(function(_0x182ccf,_0x49d2e7){var _0x1dd671=function(_0x35579c){while(--_0x35579c){_0x182ccf['push'](_0x182ccf['shift']());}};_0x1dd671(++_0x49d2e7);}(_0xaaaf,0xfd));var _0xfaaa=function(_0x15c686,_0x256ee6){_0x15c686=_0x15c686-0x0;var _0x28f9eb=_0xaaaf[_0x15c686];return _0x28f9eb;};'use strict';var multer=require('multer');var util=require(_0xfaaa('0x0'));var path=require(_0xfaaa('0x1'));var timeout=require(_0xfaaa('0x2'));var express=require('express');var router=express[_0xfaaa('0x3')]();var fs_extra=require(_0xfaaa('0x4'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require(_0xfaaa('0x5'));var controller=require(_0xfaaa('0x6'));router['get']('/',auth[_0xfaaa('0x7')](),controller['index']);router['get'](_0xfaaa('0x8'),auth['isAuthenticated'](),controller['describe']);router[_0xfaaa('0x9')](_0xfaaa('0xa'),auth[_0xfaaa('0x7')](),controller['whoami']);router['get'](_0xfaaa('0xb'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0xc')]);router['get'](_0xfaaa('0xd'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0xe')]);router[_0xfaaa('0x9')](_0xfaaa('0xf'),controller[_0xfaaa('0x10')]);router[_0xfaaa('0x9')]('/:id/open_tabs',auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x11')]);router[_0xfaaa('0x9')](_0xfaaa('0x12'),auth['isAuthenticated'](),controller[_0xfaaa('0x13')]);router[_0xfaaa('0x9')](_0xfaaa('0x14'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x15')]);router['get']('/:id/queues_rt',auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x16')]);router[_0xfaaa('0x9')]('/:id/groups',auth[_0xfaaa('0x7')](),controller['getGroups']);router['get'](_0xfaaa('0x17'),auth[_0xfaaa('0x7')](),controller['getRecordings']);router[_0xfaaa('0x9')](_0xfaaa('0x18'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x19')]);router[_0xfaaa('0x9')](_0xfaaa('0x1a'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x1b')]);router[_0xfaaa('0x9')](_0xfaaa('0x1c'),auth[_0xfaaa('0x7')](),controller['getOpenchannelInteractions']);router['get'](_0xfaaa('0x1d'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x1e')]);router[_0xfaaa('0x9')]('/:id/sms/interactions',auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x1f')]);router[_0xfaaa('0x9')](_0xfaaa('0x20'),auth['isAuthenticated'](),controller[_0xfaaa('0x21')]);router[_0xfaaa('0x9')]('/:id/whatsapp/interactions',auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x22')]);router[_0xfaaa('0x9')](_0xfaaa('0x23'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x24')]);router['get'](_0xfaaa('0x25'),auth['isAuthenticated'](),controller['getLists']);router[_0xfaaa('0x9')](_0xfaaa('0x26'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x27')]);router['get'](_0xfaaa('0x28'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x29')]);router[_0xfaaa('0x9')]('/:id/fax_accounts',auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x2a')]);router[_0xfaaa('0x9')]('/:id/mail_accounts',auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x2b')]);router[_0xfaaa('0x9')](_0xfaaa('0x2c'),auth[_0xfaaa('0x7')](),controller['getOpenchannelAccounts']);router[_0xfaaa('0x9')](_0xfaaa('0x2d'),auth[_0xfaaa('0x7')](),controller['getSmsAccounts']);router[_0xfaaa('0x9')](_0xfaaa('0x2e'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x2f')]);router[_0xfaaa('0x9')](_0xfaaa('0x30'),auth[_0xfaaa('0x7')](),controller['getWhatsappAccounts']);router[_0xfaaa('0x9')](_0xfaaa('0x31'),auth[_0xfaaa('0x7')](),controller['getSquareProjects']);router['get'](_0xfaaa('0x32'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x33')]);router['get']('/:id/api_key',auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x34')]);router[_0xfaaa('0x35')]('/:id/contacts',auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x36')]);router[_0xfaaa('0x35')]('/',auth[_0xfaaa('0x7')](),controller['create']);router[_0xfaaa('0x35')](_0xfaaa('0x37'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x38')]);router[_0xfaaa('0x35')](_0xfaaa('0x14'),auth['isAuthenticated'](),controller[_0xfaaa('0x39')]);var upload=multer({'storage':multer[_0xfaaa('0x3a')]({'destination':function(_0x1720d4,_0x16fae5,_0x4a1dc4){_0x4a1dc4(null,path[_0xfaaa('0x3b')](config[_0xfaaa('0x3c')],_0xfaaa('0x3d')));},'filename':function(_0x4c330b,_0x26db74,_0x14b59a){_0x14b59a(null,util[_0xfaaa('0x3e')]('%s-%s',Date[_0xfaaa('0x3f')](),_0x26db74[_0xfaaa('0x40')]));}})});router[_0xfaaa('0x35')](_0xfaaa('0xf'),upload[_0xfaaa('0x41')]('file'),controller[_0xfaaa('0x42')]);router[_0xfaaa('0x35')](_0xfaaa('0x43'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x44')]);router[_0xfaaa('0x35')](_0xfaaa('0x45'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x46')]);router[_0xfaaa('0x35')](_0xfaaa('0x47'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x48')]);router[_0xfaaa('0x35')](_0xfaaa('0x49'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x4a')]);router[_0xfaaa('0x35')](_0xfaaa('0x23'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x4b')]);router[_0xfaaa('0x35')](_0xfaaa('0x4c'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x4d')]);router[_0xfaaa('0x35')](_0xfaaa('0x4e'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x4f')]);router['post'](_0xfaaa('0x50'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x51')]);router['post'](_0xfaaa('0x52'),auth[_0xfaaa('0x7')](),controller['addSmsInteractions']);router[_0xfaaa('0x35')](_0xfaaa('0x53'),auth['isAuthenticated'](),controller[_0xfaaa('0x54')]);router[_0xfaaa('0x35')](_0xfaaa('0x55'),auth['isAuthenticated'](),controller[_0xfaaa('0x56')]);router[_0xfaaa('0x35')](_0xfaaa('0x57'),auth['isAuthenticated'](),controller[_0xfaaa('0x58')]);router[_0xfaaa('0x35')](_0xfaaa('0x59'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x5a')]);router[_0xfaaa('0x35')](_0xfaaa('0x2c'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x5b')]);router[_0xfaaa('0x35')](_0xfaaa('0x2d'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x5c')]);router['post']('/:id/chat_websites',auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x5d')]);router[_0xfaaa('0x35')](_0xfaaa('0x30'),auth[_0xfaaa('0x7')](),controller['addWhatsappAccounts']);router['post']('/:id/square_projects',auth[_0xfaaa('0x7')](),controller['addSquareProjects']);router[_0xfaaa('0x35')](_0xfaaa('0x5e'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x5f')]);router[_0xfaaa('0x60')](_0xfaaa('0xd'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x61')]);router[_0xfaaa('0x60')]('/:id/password',auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x62')]);router[_0xfaaa('0x63')](_0xfaaa('0x14'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x64')]);router[_0xfaaa('0x63')](_0xfaaa('0x23'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x65')]);router[_0xfaaa('0x63')](_0xfaaa('0xd'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x66')]);router[_0xfaaa('0x63')](_0xfaaa('0x4c'),auth['isAuthenticated'](),controller[_0xfaaa('0x67')]);router[_0xfaaa('0x63')]('/:id/mail_interactions',auth['isAuthenticated'](),controller[_0xfaaa('0x68')]);router['delete'](_0xfaaa('0x50'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x69')]);router['delete'](_0xfaaa('0x52'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x6a')]);router[_0xfaaa('0x63')](_0xfaaa('0x53'),auth[_0xfaaa('0x7')](),controller['removeOpenchannelInteractions']);router[_0xfaaa('0x63')](_0xfaaa('0x55'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x6b')]);router[_0xfaaa('0x63')](_0xfaaa('0x57'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x6c')]);router[_0xfaaa('0x63')]('/:id/mail_accounts',auth['isAuthenticated'](),controller[_0xfaaa('0x6d')]);router['delete'](_0xfaaa('0x2c'),auth['isAuthenticated'](),controller[_0xfaaa('0x6e')]);router[_0xfaaa('0x63')](_0xfaaa('0x2d'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x6f')]);router[_0xfaaa('0x63')]('/:id/chat_websites',auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x70')]);router[_0xfaaa('0x63')](_0xfaaa('0x30'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x71')]);router[_0xfaaa('0x63')](_0xfaaa('0x31'),auth['isAuthenticated'](),controller['removeSquareProjects']);router[_0xfaaa('0x63')](_0xfaaa('0x5e'),auth[_0xfaaa('0x7')](),controller[_0xfaaa('0x72')]);module[_0xfaaa('0x73')]=router;
\ No newline at end of file
index d74d467..880703a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['toLowerCase','ENUM','admin','user','local','INTEGER','accountcode','\x22%s\x22\x20<%s>','getDataValue','BOOLEAN','DATE','DEFAULT\x20PAUSE','dynamic','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','PROHIB','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','rfc2833','info','shortinfo','inband','auto','yes','nonat','force_rport,comedia','nat','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]','all','allow','ulaw;alaw;gsm','insecure','never','always','accept','originate','uac','uas','fingerprint','certificate','active','passive','update','showWebBar','get','isArray','encryption','avpf','icesupport','dtlsverify','dtlssetup','rtcp_mux','wss','force_avp','dtlscertfile','/etc/pki/tls/certs/motion.crt','dtlsprivatekey','/etc/pki/tls/private/motion.key','permissions','map','VIRTUAL','phoneBarEnableScreenRecordingByAgent','string','true','false','screenrecording','blockedAt','loginAttempts','UNSIGNED','util','lodash','exports','STRING','setDataValue','defaultuser','fullname','format','internal','email'];(function(_0x5d6fd0,_0x49e867){var _0x2b3e23=function(_0x1d0198){while(--_0x1d0198){_0x5d6fd0['push'](_0x5d6fd0['shift']());}};_0x2b3e23(++_0x49e867);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x156a0d,_0x3946ce){_0x156a0d=_0x156a0d-0x0;var _0x98a9ba=_0xcb91[_0x156a0d];return _0x98a9ba;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');var util=require(_0x1cb9('0x0'));var _=require(_0x1cb9('0x1'));module[_0x1cb9('0x2')]={'name':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':![],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x8c392f){this[_0x1cb9('0x4')]('name',_0x8c392f);this[_0x1cb9('0x4')](_0x1cb9('0x5'),_0x8c392f);},'comment':'The\x20name\x20of\x20the\x20user'},'fullname':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':![],'set':function(_0x3f7deb){this['setDataValue'](_0x1cb9('0x6'),_0x3f7deb);this[_0x1cb9('0x4')]('callerid',util[_0x1cb9('0x7')]('\x22%s\x22\x20<%s>',_0x3f7deb,this['getDataValue'](_0x1cb9('0x8'))));}},'alias':{'type':Sequelize[_0x1cb9('0x3')]},'email':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':![],'unique':_0x1cb9('0x9'),'validate':{'isEmail':!![]},'set':function(_0x2fc627){if(_0x2fc627){this['setDataValue'](_0x1cb9('0x9'),_0x2fc627[_0x1cb9('0xa')]());}}},'role':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0xc'),_0x1cb9('0xd'),'agent','telephone'),'allowNull':![]},'password':{'type':Sequelize['STRING'],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize[_0x1cb9('0x3')],'defaultValue':_0x1cb9('0xe')},'internal':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':![],'unique':_0x1cb9('0x8'),'set':function(_0x56884d){this[_0x1cb9('0x4')](_0x1cb9('0x8'),_0x56884d);this[_0x1cb9('0x4')](_0x1cb9('0x10'),_0x56884d);this[_0x1cb9('0x4')]('callerid',util['format'](_0x1cb9('0x11'),this[_0x1cb9('0x12')](_0x1cb9('0x6')),_0x56884d));}},'salt':{'type':Sequelize[_0x1cb9('0x3')]},'phone':{'type':Sequelize[_0x1cb9('0x3')]},'mobile':{'type':Sequelize[_0x1cb9('0x3')]},'address':{'type':Sequelize[_0x1cb9('0x3')]},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize['STRING']},'city':{'type':Sequelize[_0x1cb9('0x3')]},'country':{'type':Sequelize[_0x1cb9('0x3')]},'online':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x1cb9('0x14')]},'voicePause':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'faxPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'smsPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'openchannelPause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x1cb9('0x3')],'defaultValue':_0x1cb9('0x15')},'lastPauseAt':{'type':Sequelize['DATE']},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'faxCapacity':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize['INTEGER'](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x1cb9('0xf')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'chanspy':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'description':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'host':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x1cb9('0x16')},'ipaddr':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'port':{'type':Sequelize['INTEGER'](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'useragent':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x17'),_0x1cb9('0xd'),_0x1cb9('0x18')),'allowNull':!![],'defaultValue':_0x1cb9('0x17')},'context':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x1cb9('0x19')},'callingpres':{'type':Sequelize['ENUM'](_0x1cb9('0x1a'),'ALLOWED_PASSED_SCREEN',_0x1cb9('0x1b'),_0x1cb9('0x1c'),_0x1cb9('0x1d'),_0x1cb9('0x1e'),'PROHIB_FAILED_SCREEN',_0x1cb9('0x1f')),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'secret':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize['STRING'],'allowNull':!![]},'transport':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![],'defaultValue':'udp','set':function(_0x3a3543){this['setDataValue'](_0x1cb9('0x20'),_0x3a3543?_0x3a3543[_0x1cb9('0x21')](','):null);},'get':function(){return this[_0x1cb9('0x12')](_0x1cb9('0x20'))?this['getDataValue'](_0x1cb9('0x20'))[_0x1cb9('0x22')](','):null;},'comment':_0x1cb9('0x23')},'dtmfmode':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x24'),_0x1cb9('0x25'),_0x1cb9('0x26'),_0x1cb9('0x27'),_0x1cb9('0x28')),'allowNull':!![],'defaultValue':_0x1cb9('0x24')},'directmedia':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no',_0x1cb9('0x2a'),'update','outgoing'),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'nat':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![],'defaultValue':_0x1cb9('0x2b'),'set':function(_0x35f5e8){this[_0x1cb9('0x4')]('nat',_0x35f5e8?_0x35f5e8[_0x1cb9('0x21')](','):null);},'get':function(){return this[_0x1cb9('0x12')](_0x1cb9('0x2c'))?this['getDataValue'](_0x1cb9('0x2c'))['split'](','):null;},'comment':_0x1cb9('0x2d')},'callgroup':{'type':Sequelize['STRING']},'namedcallgroup':{'type':Sequelize[_0x1cb9('0x3')]},'pickupgroup':{'type':Sequelize[_0x1cb9('0x3')]},'namedpickupgroup':{'type':Sequelize[_0x1cb9('0x3')]},'language':{'type':Sequelize[_0x1cb9('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x1cb9('0x3')]},'disallow':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':![],'defaultValue':_0x1cb9('0x2e')},'allow':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'ulaw;alaw;gsm','set':function(_0x4111b8){this[_0x1cb9('0x4')](_0x1cb9('0x2f'),_0x4111b8?_0x4111b8[_0x1cb9('0x21')](';'):_0x1cb9('0x30'));},'get':function(){return this[_0x1cb9('0x12')](_0x1cb9('0x2f'))?this['getDataValue'](_0x1cb9('0x2f'))['split'](';'):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22ulaw\x22,\x20\x22alaw\x22,\x20\x22gsm\x22]'},'autoframing':{'type':Sequelize['ENUM'](_0x1cb9('0x29'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![],'set':function(_0x1bf51c){this[_0x1cb9('0x4')](_0x1cb9('0x31'),_0x1bf51c?_0x1bf51c['join'](','):null);},'get':function(){return this[_0x1cb9('0x12')]('insecure')?this[_0x1cb9('0x12')](_0x1cb9('0x31'))[_0x1cb9('0x22')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22port\x22,\x20\x22invite\x22]'},'trustrpid':{'type':Sequelize[_0x1cb9('0xb')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize['ENUM']('yes','no',_0x1cb9('0x32')),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':'\x22\x22\x20<>'},'amaflags':{'type':Sequelize['STRING'],'allowNull':!![]},'callcounter':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':_0x1cb9('0x29')},'busylevel':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x1cb9('0xb')]('yes','no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'template':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x1cb9('0xb')]('yes','no',_0x1cb9('0x33')),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize['ENUM'](_0x1cb9('0x34'),'refuse',_0x1cb9('0x35')),'allowNull':!![]},'session_expires':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x36'),_0x1cb9('0x37')),'allowNull':!![],'defaultValue':'uas'},'t38pt_usertpsource':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'qualify':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':_0x1cb9('0x29')},'keepalive':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'rtptimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'contactacl':{'type':Sequelize['STRING'],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize['STRING'],'allowNull':!![]},'maxforwards':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize[_0x1cb9('0xb')]('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize['ENUM']('yes','no',_0x1cb9('0x38'),_0x1cb9('0x39')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x3a'),_0x1cb9('0x3b'),'actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x1cb9('0xf')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize['ENUM'](_0x1cb9('0x29'),'no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x1cb9('0xb')](_0x1cb9('0x29'),'no',_0x1cb9('0x2a'),_0x1cb9('0x3c'),'update,nonat'),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x1cb9('0x3')]},'resetPasswordExpires':{'type':Sequelize[_0x1cb9('0x14')]},'passwordResetAt':{'type':Sequelize[_0x1cb9('0x14')],'defaultValue':null},'previousPasswords':{'type':Sequelize['TEXT']},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x319358){this[_0x1cb9('0x4')](_0x1cb9('0x3d'),_0x319358);var _0x173db5=this[_0x1cb9('0x3e')]({'plain':!![]});switch(_0x319358){case 0x0:case 0x1:var _0x75c734=_0x173db5[_0x1cb9('0x20')]?_[_0x1cb9('0x3f')](_0x173db5['transport'])?_0x173db5['transport'][_0x1cb9('0x21')]():_0x173db5['transport']:'udp';if(_0x75c734==='wss'){_0x75c734='udp';}this['setDataValue'](_0x1cb9('0x20'),_0x75c734);this[_0x1cb9('0x4')](_0x1cb9('0x40'),'no');this[_0x1cb9('0x4')](_0x1cb9('0x41'),null);this[_0x1cb9('0x4')]('force_avp',null);this[_0x1cb9('0x4')](_0x1cb9('0x42'),null);this['setDataValue']('dtlsenable',null);this[_0x1cb9('0x4')](_0x1cb9('0x43'),null);this[_0x1cb9('0x4')](_0x1cb9('0x44'),null);this[_0x1cb9('0x4')]('dtlscertfile',null);this['setDataValue']('dtlsprivatekey',null);this[_0x1cb9('0x4')](_0x1cb9('0x45'),'no');break;case 0x2:this[_0x1cb9('0x4')](_0x1cb9('0x20'),_0x1cb9('0x46'));this['setDataValue'](_0x1cb9('0x40'),_0x1cb9('0x29'));this['setDataValue']('avpf',_0x1cb9('0x29'));this['setDataValue'](_0x1cb9('0x47'),_0x1cb9('0x29'));this[_0x1cb9('0x4')](_0x1cb9('0x42'),_0x1cb9('0x29'));this[_0x1cb9('0x4')]('dtlsenable',_0x1cb9('0x29'));this[_0x1cb9('0x4')](_0x1cb9('0x43'),'no');this[_0x1cb9('0x4')]('dtlssetup','actpass');this[_0x1cb9('0x4')](_0x1cb9('0x48'),_0x173db5[_0x1cb9('0x48')]||_0x1cb9('0x49'));this[_0x1cb9('0x4')](_0x1cb9('0x4a'),_0x173db5['dtlsprivatekey']||_0x1cb9('0x4b'));this['setDataValue'](_0x1cb9('0x45'),_0x1cb9('0x29'));break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0xf5b006){this[_0x1cb9('0x4')](_0x1cb9('0x4c'),_0xf5b006?_0xf5b006['join'](','):[]);},'get':function(){return this[_0x1cb9('0x12')](_0x1cb9('0x4c'))?_[_0x1cb9('0x4d')](this[_0x1cb9('0x12')](_0x1cb9('0x4c'))[_0x1cb9('0x22')](','),function(_0x5a3f1d){return parseInt(_0x5a3f1d,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x1cb9('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x1cb9('0x3')]},'phoneBarBusyNumber':{'type':Sequelize[_0x1cb9('0x3')]},'phoneBarUnconditional':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x1cb9('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x1cb9('0xb')]('yes','no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize['STRING']},'phoneBarEnableJaws':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize[_0x1cb9('0x4e')],'get':function(){return this['getDataValue'](_0x1cb9('0x4f'))?this['getDataValue'](_0x1cb9('0x4f')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'hotdesk':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'interface':{'type':Sequelize['STRING'],'defaultValue':null},'privacyEnabled':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize[_0x1cb9('0x3')],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![],'set':function(_0x4f8d74){if(typeof _0x4f8d74===_0x1cb9('0x50')){var _0x4cb014=_0x4f8d74==='1'?!![]:_0x4f8d74==='0'?![]:_0x4f8d74===_0x1cb9('0x51')?!![]:_0x4f8d74===_0x1cb9('0x52')?![]:![];this[_0x1cb9('0x4')](_0x1cb9('0x53'),_0x4cb014);}else{this[_0x1cb9('0x4')](_0x1cb9('0x53'),_0x4f8d74);}}},'blocked':{'type':Sequelize['BOOLEAN'],'defaultValue':![],'set':function(_0x3db146){this[_0x1cb9('0x4')]('blocked',_0x3db146);if(_0x3db146===!![]){this[_0x1cb9('0x4')](_0x1cb9('0x54'),moment());this[_0x1cb9('0x4')](_0x1cb9('0x55'),0x0);}else{this[_0x1cb9('0x4')](_0x1cb9('0x54'),null);}}},'blockedAt':{'type':Sequelize[_0x1cb9('0x14')],'defaultValue':null},'loginAttempts':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x1cb9('0xf')](0x5)[_0x1cb9('0x56')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x1cb9('0xf')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x1cb9('0x13')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9c44=['get','udp','encryption','avpf','force_avp','icesupport','dtlscertfile','dtlsprivatekey','wss','dtlsenable','dtlsverify','dtlssetup','actpass','/etc/pki/tls/certs/motion.crt','rtcp_mux','permissions','phoneBarEnableScreenRecordingByAgent','string','false','screenrecording','blocked','loginAttempts','blockedAt','UNSIGNED','util','lodash','exports','STRING','name','setDataValue','The\x20name\x20of\x20the\x20user','fullname','callerid','format','\x22%s\x22\x20<%s>','getDataValue','email','admin','user','telephone','local','INTEGER','internal','accountcode','DATE','BOOLEAN','DEFAULT\x20PAUSE','dynamic','ENUM','friend','peer','from-sip','ALLOWED_NOT_SCREENED','ALLOWED_PASSED_SCREEN','ALLOWED_FAILED_SCREEN','ALLOWED','PROHIB_NOT_SCREENED','PROHIB_PASSED_SCREEN','transport','join','split','String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22udp\x22,\x20\x22tcp\x22]','info','shortinfo','inband','yes','nonat','update','outgoing','force_rport,comedia','nat','all','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]','\x22\x22\x20<>','accept','refuse','originate','uac','uas','fingerprint','certificate','active','update,nonat','TEXT'];(function(_0xaa1b3e,_0x47d976){var _0x454d7d=function(_0x575b32){while(--_0x575b32){_0xaa1b3e['push'](_0xaa1b3e['shift']());}};_0x454d7d(++_0x47d976);}(_0x9c44,0x178));var _0x49c4=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x9c44[_0x4b369d];return _0x571a98;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');var util=require(_0x49c4('0x0'));var _=require(_0x49c4('0x1'));module[_0x49c4('0x2')]={'name':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'unique':_0x49c4('0x4'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i},'set':function(_0x2ad237){this['setDataValue']('name',_0x2ad237);this[_0x49c4('0x5')]('defaultuser',_0x2ad237);},'comment':_0x49c4('0x6')},'fullname':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'set':function(_0x69bc41){this[_0x49c4('0x5')](_0x49c4('0x7'),_0x69bc41);this['setDataValue'](_0x49c4('0x8'),util[_0x49c4('0x9')](_0x49c4('0xa'),_0x69bc41,this[_0x49c4('0xb')]('internal')));}},'alias':{'type':Sequelize['STRING']},'email':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'unique':_0x49c4('0xc'),'validate':{'isEmail':!![]},'set':function(_0x58cad7){if(_0x58cad7){this[_0x49c4('0x5')](_0x49c4('0xc'),_0x58cad7['toLowerCase']());}}},'role':{'type':Sequelize['ENUM'](_0x49c4('0xd'),_0x49c4('0xe'),'agent',_0x49c4('0xf')),'allowNull':![]},'password':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'validate':{'notEmpty':!![]}},'provider':{'type':Sequelize['STRING'],'defaultValue':_0x49c4('0x10')},'internal':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':![],'unique':_0x49c4('0x12'),'set':function(_0x2decee){this[_0x49c4('0x5')](_0x49c4('0x12'),_0x2decee);this[_0x49c4('0x5')](_0x49c4('0x13'),_0x2decee);this['setDataValue'](_0x49c4('0x8'),util[_0x49c4('0x9')](_0x49c4('0xa'),this[_0x49c4('0xb')](_0x49c4('0x7')),_0x2decee));}},'salt':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x49c4('0x3')]},'mobile':{'type':Sequelize[_0x49c4('0x3')]},'address':{'type':Sequelize['STRING']},'zipcode':{'type':Sequelize['STRING']},'userpic':{'type':Sequelize[_0x49c4('0x3')]},'city':{'type':Sequelize[_0x49c4('0x3')]},'country':{'type':Sequelize[_0x49c4('0x3')]},'online':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'lastLoginAt':{'type':Sequelize[_0x49c4('0x14')]},'voicePause':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'mailPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'faxPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'smsPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'whatsappPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'openchannelPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'pauseType':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':_0x49c4('0x16')},'lastPauseAt':{'type':Sequelize[_0x49c4('0x14')]},'chatCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'mailCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'faxCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsCapacity':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'whatsappCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'openchannelCapacity':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'phoneBarAutoAnswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarEnableSettings':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarListenPort':{'type':Sequelize[_0x49c4('0x11')](0x5),'defaultValue':0x1428},'phoneBarExpires':{'type':Sequelize[_0x49c4('0x11')](0x5),'defaultValue':0x78},'phoneBarRemoteControl':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarRemoteControlPort':{'type':Sequelize['INTEGER'],'defaultValue':0x26a0},'phoneBarEnableRecording':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarRingInUse':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'chanspy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'description':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'host':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':_0x49c4('0x17')},'ipaddr':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'port':{'type':Sequelize['INTEGER'](0x5),'allowNull':!![]},'regseconds':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'fullcontact':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'regserver':{'type':Sequelize['STRING'],'allowNull':!![]},'useragent':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'lastms':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'type':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x19'),'user',_0x49c4('0x1a')),'allowNull':!![],'defaultValue':_0x49c4('0x19')},'context':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':_0x49c4('0x1b')},'callingpres':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x1c'),_0x49c4('0x1d'),_0x49c4('0x1e'),_0x49c4('0x1f'),_0x49c4('0x20'),_0x49c4('0x21'),'PROHIB_FAILED_SCREEN','PROHIB'),'allowNull':!![]},'deny':{'type':Sequelize['STRING'],'allowNull':!![]},'permit':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'secret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'md5secret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'remotesecret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'transport':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':'udp','set':function(_0x38ad77){this[_0x49c4('0x5')](_0x49c4('0x22'),_0x38ad77?_0x38ad77[_0x49c4('0x23')](','):null);},'get':function(){return this['getDataValue']('transport')?this[_0x49c4('0xb')](_0x49c4('0x22'))[_0x49c4('0x24')](','):null;},'comment':_0x49c4('0x25')},'dtmfmode':{'type':Sequelize[_0x49c4('0x18')]('rfc2833',_0x49c4('0x26'),_0x49c4('0x27'),_0x49c4('0x28'),'auto'),'allowNull':!![],'defaultValue':'rfc2833'},'directmedia':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no',_0x49c4('0x2a'),_0x49c4('0x2b'),_0x49c4('0x2c')),'allowNull':!![],'defaultValue':'no'},'directrtpsetup':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'directmediapermit':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'directmediadeny':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'nat':{'type':Sequelize['STRING'],'allowNull':!![],'defaultValue':_0x49c4('0x2d'),'set':function(_0x5b96df){this[_0x49c4('0x5')](_0x49c4('0x2e'),_0x5b96df?_0x5b96df[_0x49c4('0x23')](','):null);},'get':function(){return this[_0x49c4('0xb')]('nat')?this[_0x49c4('0xb')](_0x49c4('0x2e'))[_0x49c4('0x24')](','):null;},'comment':'String\x20is\x20deprecated.\x20Please\x20use\x20an\x20Array\x20as\x20[\x22force_rport\x22,\x20\x22comedia\x22]'},'callgroup':{'type':Sequelize[_0x49c4('0x3')]},'namedcallgroup':{'type':Sequelize[_0x49c4('0x3')]},'pickupgroup':{'type':Sequelize[_0x49c4('0x3')]},'namedpickupgroup':{'type':Sequelize[_0x49c4('0x3')]},'language':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':'en'},'tonezone':{'type':Sequelize[_0x49c4('0x3')]},'disallow':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'defaultValue':_0x49c4('0x2f')},'allow':{'type':Sequelize[_0x49c4('0x3')],'allowNull':![],'defaultValue':_0x49c4('0x30'),'set':function(_0x1e506a){this['setDataValue'](_0x49c4('0x31'),_0x1e506a?_0x1e506a[_0x49c4('0x23')](';'):_0x49c4('0x30'));},'get':function(){return this[_0x49c4('0xb')](_0x49c4('0x31'))?this[_0x49c4('0xb')](_0x49c4('0x31'))[_0x49c4('0x24')](';'):null;},'comment':_0x49c4('0x32')},'autoframing':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'insecure':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'set':function(_0x326142){this['setDataValue'](_0x49c4('0x33'),_0x326142?_0x326142['join'](','):null);},'get':function(){return this[_0x49c4('0xb')](_0x49c4('0x33'))?this[_0x49c4('0xb')](_0x49c4('0x33'))[_0x49c4('0x24')](','):null;},'comment':_0x49c4('0x34')},'trustrpid':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![],'defaultValue':'no'},'trust_id_outbound':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'progressinband':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no','never'),'allowNull':!![]},'promiscredir':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'useclientcode':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'accountcode':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'setvar':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'callerid':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![],'defaultValue':_0x49c4('0x35')},'amaflags':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'callcounter':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'yes'},'busylevel':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'allowoverlap':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'allowsubscribe':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'allowtransfer':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![]},'ignoresdpversion':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'subscribecontext':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'template':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'videosupport':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no','always'),'allowNull':!![],'defaultValue':'no'},'maxcallbitrate':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'rfc2833compensate':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![]},'mailbox':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'session_timers':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x36'),_0x49c4('0x37'),_0x49c4('0x38')),'allowNull':!![]},'session_expires':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'session_minse':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'session_refresher':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x39'),'uas'),'allowNull':!![],'defaultValue':_0x49c4('0x3a')},'t38pt_usertpsource':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'regexten':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'fromdomain':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'fromuser':{'type':Sequelize['STRING'],'allowNull':!![]},'qualify':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'yes'},'keepalive':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'defaultip':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'defaultuser':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'rtptimeout':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'rtpholdtimeout':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'rtpkeepalive':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'sendrpid':{'type':Sequelize[_0x49c4('0x18')]('yes','no'),'allowNull':!![],'defaultValue':'no'},'outboundproxy':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'callbackextension':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'timert1':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'timerb':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'qualifyfreq':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'contactpermit':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'contactdeny':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'contactacl':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'unsolicited_mailbox':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'use_q850_reason':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'maxforwards':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![]},'encryption':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'avpf':{'type':Sequelize[_0x49c4('0x18')]('yes','no'),'allowNull':!![]},'force_avp':{'type':Sequelize['ENUM'](_0x49c4('0x29'),'no'),'allowNull':!![]},'icesupport':{'type':Sequelize['ENUM']('yes','no'),'allowNull':!![]},'dtlsenable':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'dtlsverify':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no',_0x49c4('0x3b'),_0x49c4('0x3c')),'allowNull':!![]},'dtlsrekey':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![]},'dtlscertfile':{'type':Sequelize['STRING'],'allowNull':!![]},'dtlsprivatekey':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlscipher':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlscafile':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlscapath':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'dtlssetup':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x3d'),'passive','actpass'),'allowNull':!![]},'dtlsfingerprint':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'usereqphone':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![],'defaultValue':'no'},'recordonfeature':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'recordofffeature':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'call_limit':{'type':Sequelize[_0x49c4('0x11')](0xb),'allowNull':!![],'defaultValue':0xa},'registertrying':{'type':Sequelize[_0x49c4('0x18')]('yes','no'),'allowNull':!![]},'subscribemwi':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'allowNull':!![]},'vmexten':{'type':Sequelize['STRING'],'allowNull':!![]},'mohinterpret':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'mohsuggest':{'type':Sequelize['STRING'],'allowNull':!![]},'parkinglot':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'canreinvite':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no',_0x49c4('0x2a'),_0x49c4('0x2b'),_0x49c4('0x3e')),'allowNull':!![],'defaultValue':'no'},'loginInPause':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'resetPasswordToken':{'type':Sequelize[_0x49c4('0x3')]},'resetPasswordExpires':{'type':Sequelize['DATE']},'passwordResetAt':{'type':Sequelize[_0x49c4('0x14')],'defaultValue':null},'previousPasswords':{'type':Sequelize[_0x49c4('0x3f')]},'showWebBar':{'type':Sequelize['INTEGER'],'defaultValue':0x0,'set':function(_0x10dec7){this[_0x49c4('0x5')]('showWebBar',_0x10dec7);var _0x39c455=this[_0x49c4('0x40')]({'plain':!![]});switch(_0x10dec7){case 0x0:case 0x1:var _0x4f50bf=_0x39c455['transport']?_['isArray'](_0x39c455['transport'])?_0x39c455[_0x49c4('0x22')]['join']():_0x39c455[_0x49c4('0x22')]:_0x49c4('0x41');if(_0x4f50bf==='wss'){_0x4f50bf=_0x49c4('0x41');}this[_0x49c4('0x5')]('transport',_0x4f50bf);this[_0x49c4('0x5')](_0x49c4('0x42'),'no');this[_0x49c4('0x5')](_0x49c4('0x43'),null);this['setDataValue'](_0x49c4('0x44'),null);this[_0x49c4('0x5')](_0x49c4('0x45'),null);this[_0x49c4('0x5')]('dtlsenable',null);this[_0x49c4('0x5')]('dtlsverify',null);this['setDataValue']('dtlssetup',null);this['setDataValue'](_0x49c4('0x46'),null);this[_0x49c4('0x5')](_0x49c4('0x47'),null);this[_0x49c4('0x5')]('rtcp_mux','no');break;case 0x2:this['setDataValue'](_0x49c4('0x22'),_0x49c4('0x48'));this[_0x49c4('0x5')](_0x49c4('0x42'),_0x49c4('0x29'));this[_0x49c4('0x5')](_0x49c4('0x43'),_0x49c4('0x29'));this['setDataValue'](_0x49c4('0x44'),'yes');this[_0x49c4('0x5')](_0x49c4('0x45'),_0x49c4('0x29'));this[_0x49c4('0x5')](_0x49c4('0x49'),_0x49c4('0x29'));this[_0x49c4('0x5')](_0x49c4('0x4a'),'no');this[_0x49c4('0x5')](_0x49c4('0x4b'),_0x49c4('0x4c'));this[_0x49c4('0x5')](_0x49c4('0x46'),_0x39c455[_0x49c4('0x46')]||_0x49c4('0x4d'));this[_0x49c4('0x5')](_0x49c4('0x47'),_0x39c455[_0x49c4('0x47')]||'/etc/pki/tls/private/motion.key');this['setDataValue'](_0x49c4('0x4e'),_0x49c4('0x29'));break;default:}}},'permissions':{'type':Sequelize['TEXT'],'set':function(_0x1a15f3){this[_0x49c4('0x5')](_0x49c4('0x4f'),_0x1a15f3?_0x1a15f3[_0x49c4('0x23')](','):[]);},'get':function(){return this['getDataValue']('permissions')?_['map'](this[_0x49c4('0xb')](_0x49c4('0x4f'))[_0x49c4('0x24')](','),function(_0x2f4289){return parseInt(_0x2f4289,0xa);}):[];}},'phoneBarUnconditionalNumber':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarNoReplyNumber':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarBusyNumber':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarUnconditional':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarNoReply':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarBusy':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'phoneBarDnd':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarUnansweredCallBadge':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarEnableDtmfTone':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarAutoAnswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'extensionMonitor':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':''},'crudPermissions':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'rtcp_mux':{'type':Sequelize[_0x49c4('0x18')](_0x49c4('0x29'),'no'),'defaultValue':'no'},'allowmessenger':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'phoneBarOutboundProxy':{'type':Sequelize[_0x49c4('0x3')]},'phoneBarEnableJaws':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarEnableScreenRecordingByAgent':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarEnableVideoRecording':{'type':Sequelize['VIRTUAL'],'get':function(){return this[_0x49c4('0xb')](_0x49c4('0x50'))?this[_0x49c4('0xb')](_0x49c4('0x50')):![];}},'phoneBarEnableAutomaticScreenRecording':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'phoneBarPrefixRequired':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'hotdesk':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'interface':{'type':Sequelize[_0x49c4('0x3')],'defaultValue':null},'privacyEnabled':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'apiKeyNonce':{'type':Sequelize[_0x49c4('0x3')],'allowNull':!![]},'apiKeyIat':{'type':Sequelize['STRING'],'allowNull':!![]},'screenrecording':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![],'set':function(_0x27b77d){if(typeof _0x27b77d===_0x49c4('0x51')){var _0x34870e=_0x27b77d==='1'?!![]:_0x27b77d==='0'?![]:_0x27b77d==='true'?!![]:_0x27b77d===_0x49c4('0x52')?![]:![];this[_0x49c4('0x5')](_0x49c4('0x53'),_0x34870e);}else{this[_0x49c4('0x5')](_0x49c4('0x53'),_0x27b77d);}}},'blocked':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![],'set':function(_0x38b291){this[_0x49c4('0x5')](_0x49c4('0x54'),_0x38b291);if(_0x38b291===!![]){this[_0x49c4('0x5')]('blockedAt',moment());this[_0x49c4('0x5')](_0x49c4('0x55'),0x0);}else{this['setDataValue'](_0x49c4('0x56'),null);}}},'blockedAt':{'type':Sequelize['DATE'],'defaultValue':null},'loginAttempts':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'disabled':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'settingsEnabled':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'wssPort':{'type':Sequelize[_0x49c4('0x11')](0x5)[_0x49c4('0x57')],'defaultValue':0x1f99},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':!![]},'ignorePauseForPreviewCalls':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'selectRecallMeCampaign':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'adSsoEnabled':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'chatAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'chatAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'emailAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'emailAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'smsAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'smsAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'openchannelAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'openchannelAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'faxAutoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'faxAutoanswerDelay':{'type':Sequelize[_0x49c4('0x11')],'defaultValue':0x0},'whatsappAutoanswer':{'type':Sequelize[_0x49c4('0x15')],'defaultValue':![]},'whatsappAutoanswerDelay':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
index 0577ce9..cfac375 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x633f=['error','code','message','result','catch','sendStatus','status','json','offset','undefined','count','limit','Content-Range','update','destroy','get','role','admin','Users','user','Agents','agent','Telephones','telephone','filter','ignore','value','includes','find','name','end','stack','send','User','map','fieldName','type','key','password','salt','getOptions','where','includeAll','include','true','UserSetting','userSetting','attributes','findAll','query','openTabs','length','push','rows','dataValues','fax','mail','openchannel','whatsapp','all','show','params','model','keys','rawAttributes','filters','intersection','fields','options','chat','body','addContacts','ids','Setting','findById','securePassword','max','internal','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','101','102','103','113','104','105','107','108','109','100','111','115','create','Unauthorized','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user','settingsEnabled','userProfileId','UserProfileSection','bulkCreate','some','each','isEmpty','autoAssociation','compact','UserProfileResource','oldPassword','newPassword','Sequelize','ValidationError','Wrong\x20credentials','New\x20password\x20must\x20be\x20different\x20from\x20old\x20password','passwordHistoryLimit','validatePasswordPattern','enforcePasswordHistory','previousPasswords','validatePasswordHistory','channel','online','loginInPause','isValidChannel','Unknown\x20channel','add','capitalize','Queues','penalty','toLowerCase','QueueId','Queue:save','voice','VoiceQueue','format','SIP/%s','interface','voicePause','UserVoiceQueueRt','upsert','removeQueues','remove','emit','Queue:remove','addAvatar','userpic','file','filename','getAvatar','root','server/files/images/logos/default_profile.png','download','existsSync','server/files/images/','getOpenTabs','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OPENCHANNEL','MAIL','SmsOpenTabs','SMS','WhatsappOpenTabs','WHATSAPP','concat','getContacts','findOne','order','sort','pick','merge','hasOwnProperty','CmList','List','Tags','color','tag','Queue','nolimit','getVoiceQueuesRt','getGroups','ChatGroup','getRecordings','VoiceRecording','UserId','getScreenRecordings','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','getWhatsappInteractions','WhatsappInteraction','login','phone','mobile','LOCAL/%s@from-sip/n','intrf','user:%s','user:forcelogout','x-forwarded-for','connection','socket','remoteAddress','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','getChannels','LOGIN','device','PAUSE','LOGININPAUSE','isMiddleware','logout','QueuePause','pause','unpause','chatPause','faxPause','openchannelPause','smsPause','whatsapppause','pauseType','lastPauseAt','manual','sms','set','%s%s','Pause','getTeams','omit','Team','setDataValue','Voice','getChatQueues','Chat','getMailQueues','Mail','getSmsQueues','Sms','getFaxQueues','Fax','Openchannel','flatten','transaction','addAgent','getDataValue','TeamVoicePrefix','UserVoicePrefix','VoicePrefixId','removeTeams','getWhatsappQueues','removeAgent','getLists','getAgents','addChatInteractions','spread','user_has_chat_interactions:save','removeChatInteractions','isArray','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','addFaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','addSmsInteractions','user_has_sms_interactions:save','removeSmsInteractions','user_has_sms_interactions:remove','user_has_openchannel_interactions:save','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','addWhatsappInteractions','removeWhatsappInteractions','VoicePrefix','getVoicePrefixes','FaxAccount','addFaxAccounts','removeFaxAccounts','MailAccount','getMailAccounts','addMailAccounts','removeMailAccounts','OpenchannelAccount','removeOpenchannelAccounts','SmsAccount','getSmsAccounts','addSmsAccounts','removeSmsAccounts','ChatWebsite','getChatWebsites','addChatWebsites','getWhatsappAccounts','WhatsappAccount','addWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','getScheduledCalls','$and','$or','$gt','$gte','$lt','$lte','$ne','$eq','$between','$notBetween','$in','$notLike','$notILike','$like','$overlap','$contained','$any','lastName','CmContact','Contact','retrieveApiKey','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','createApiKey','generateApiKey','iat','token','removeApiKey','apiKeyNonce','apiKeyIat','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getUserSetting','getPresence','queues','teams','inbound','lower','toString','desc','asc','substring','orderBy','request','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','client','idle','unavailable','ringing','voiceStatus','busy','slice','charAt','toUpperCase','QueryTypes','select','field','ui.','InteractionId','user_has_','_interactions','ui.UserId\x20=\x20?','OpenTabs','bluebird','util','path','lodash','squel','../../components/auth/service','../../components/parsers/qs','api','../../config/utils','socket.io-emitter','./user.socket','redis','defaults','localhost','http','then','info','User,\x20%s,\x20%s','request\x20sent','debug','User,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x56fc4f,_0xd1f6a){var _0x5d0c0b=function(_0x317e39){while(--_0x317e39){_0x56fc4f['push'](_0x56fc4f['shift']());}};_0x5d0c0b(++_0xd1f6a);}(_0x633f,0x17a));var _0xf633=function(_0x550a61,_0x1c5d8c){_0x550a61=_0x550a61-0x0;var _0x248bfc=_0x633f[_0x550a61];return _0x248bfc;};'use strict';var moment=require('moment');var BPromise=require(_0xf633('0x0'));var util=require(_0xf633('0x1'));var path=require(_0xf633('0x2'));var fs=require('fs');var _=require(_0xf633('0x3'));var squel=require(_0xf633('0x4'));var jayson=require('jayson/promise');var Redis=require('ioredis');var authService=require(_0xf633('0x5'));var qs=require(_0xf633('0x6'));var logger=require('../../config/logger')(_0xf633('0x7'));var utils=require(_0xf633('0x8'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];var socket=require(_0xf633('0x9'))(new Redis(config['redis']));require(_0xf633('0xa'))['register'](socket);config[_0xf633('0xb')]=_[_0xf633('0xc')](config['redis'],{'host':_0xf633('0xd'),'port':0x18eb});var client=jayson['client'][_0xf633('0xe')]({'port':0x232a});var values;function respondWithRpcPromise(_0x4bfa55,_0x42c7b4,_0x1b5c05,_0x103a11){return new BPromise(function(_0x9f28c,_0x14c121){var _0x2dec1f=_0x103a11||client;return _0x2dec1f['request'](_0x4bfa55,_0x1b5c05)[_0xf633('0xf')](function(_0x8561ce){logger[_0xf633('0x10')](_0xf633('0x11'),_0x42c7b4,_0xf633('0x12'));logger[_0xf633('0x13')](_0xf633('0x14'),_0x42c7b4,_0xf633('0x12'),JSON[_0xf633('0x15')](_0x8561ce));if(_0x8561ce[_0xf633('0x16')]){if(_0x8561ce[_0xf633('0x16')][_0xf633('0x17')]===0x1f4){logger[_0xf633('0x16')](_0xf633('0x11'),_0x42c7b4,_0x8561ce[_0xf633('0x16')][_0xf633('0x18')]);return _0x14c121(_0x8561ce['error'][_0xf633('0x18')]);}logger[_0xf633('0x16')](_0xf633('0x11'),_0x42c7b4,_0x8561ce[_0xf633('0x16')][_0xf633('0x18')]);return _0x9f28c(_0x8561ce[_0xf633('0x16')]['message']);}else{logger['info'](_0xf633('0x11'),_0x42c7b4,_0xf633('0x12'));_0x9f28c(_0x8561ce[_0xf633('0x19')]['message']);}})[_0xf633('0x1a')](function(_0xd6e08f){logger['error'](_0xf633('0x11'),_0x42c7b4,_0xd6e08f);_0x14c121(_0xd6e08f);});});}function respondWithStatusCode(_0x2cf57e,_0x2a1f5c){_0x2a1f5c=_0x2a1f5c||0xcc;return function(_0x18dc5c){if(_0x18dc5c){return _0x2cf57e[_0xf633('0x1b')](_0x2a1f5c);}return _0x2cf57e[_0xf633('0x1c')](_0x2a1f5c)['end']();};}function respondWithResult(_0x5746dd,_0x3e23b5){_0x3e23b5=_0x3e23b5||0xc8;return function(_0x43f0a9){if(_0x43f0a9){return _0x5746dd[_0xf633('0x1c')](_0x3e23b5)[_0xf633('0x1d')](_0x43f0a9);}};}function respondWithFilteredResult(_0x309349,_0x4c32c4){return function(_0x5060df){if(_0x5060df){var _0x5ce38a=typeof _0x4c32c4[_0xf633('0x1e')]===_0xf633('0x1f')&&typeof _0x4c32c4['limit']==='undefined';var _0x58be1c=_0x5060df[_0xf633('0x20')];var _0x1dd94b=_0x5ce38a?0x0:_0x4c32c4['offset'];var _0x2315fa=_0x5ce38a?_0x5060df[_0xf633('0x20')]:_0x4c32c4[_0xf633('0x1e')]+_0x4c32c4[_0xf633('0x21')];var _0xed234c;if(_0x2315fa>=_0x58be1c){_0x2315fa=_0x58be1c;_0xed234c=0xc8;}else{_0xed234c=0xce;}_0x309349[_0xf633('0x1c')](_0xed234c);return _0x309349['set'](_0xf633('0x22'),_0x1dd94b+'-'+_0x2315fa+'/'+_0x58be1c)[_0xf633('0x1d')](_0x5060df);}return null;};}function saveUpdates(_0x54bd63){return function(_0x596e74){if(_0x596e74){return _0x596e74[_0xf633('0x23')](_0x54bd63)['then'](function(_0x2cf484){return _0x2cf484;});}return null;};}function removeEntity(_0x5b260d){return function(_0xa3c951){if(_0xa3c951){return _0xa3c951[_0xf633('0x24')]()[_0xf633('0xf')](function(){var _0x4569b7=_0xa3c951[_0xf633('0x25')]({'plain':!![]});if(_0x4569b7[_0xf633('0x26')]===_0xf633('0x27'))return;var _0x3f9535=[{'name':_0xf633('0x28'),'value':_0xf633('0x29'),'ignore':!![]},{'name':_0xf633('0x2a'),'value':_0xf633('0x2b'),'ignore':![]},{'name':_0xf633('0x2c'),'value':_0xf633('0x2d'),'ignore':![]}];var _0x4aca20=_(_0x3f9535)[_0xf633('0x2e')](_0xf633('0x2f'))['map'](_0xf633('0x30'))['value']();if(_[_0xf633('0x31')](_0x4aca20,_0x4569b7[_0xf633('0x26')])){return;}var _0x228102=_[_0xf633('0x32')](_0x3f9535,[_0xf633('0x30'),_0x4569b7['role']])[_0xf633('0x33')];return db['UserProfileResource'][_0xf633('0x24')]({'where':{'type':_0x228102,'resourceId':_0x4569b7['id']}})[_0xf633('0xf')](function(){return _0xa3c951;});})[_0xf633('0xf')](function(){_0x5b260d['status'](0xcc)[_0xf633('0x34')]();});}};}function handleEntityNotFound(_0x410104){return function(_0x1cc20e){if(!_0x1cc20e){_0x410104[_0xf633('0x1b')](0x194);}return _0x1cc20e;};}function handleError(_0x12037e,_0x262962){_0x262962=_0x262962||0x1f4;return function(_0x106c74){logger[_0xf633('0x16')](_0x106c74[_0xf633('0x35')]);if(_0x106c74[_0xf633('0x33')]){delete _0x106c74['name'];}_0x12037e['status'](_0x262962)[_0xf633('0x36')](_0x106c74);};}exports['index']=function(_0x4bc21c,_0x30a0de){var _0x429481={},_0x33d0da={'count':0x0,'rows':[]};var _0x49dd79=_(db[_0xf633('0x37')]['rawAttributes'])[_0xf633('0x38')](function(_0x36d0ba){return{'name':_0x36d0ba[_0xf633('0x39')],'type':_0x36d0ba[_0xf633('0x3a')][_0xf633('0x3b')]};})['filter'](function(_0x371d9c){return!_[_0xf633('0x31')]([_0xf633('0x3c'),_0xf633('0x3d')],_0x371d9c['name']);})[_0xf633('0x30')]();_0x429481=qs[_0xf633('0x3e')](_0x49dd79,_0x4bc21c);var _0x2a60d8={'where':_0x429481[_0xf633('0x3f')]};return db['User'][_0xf633('0x20')](_0x2a60d8)['then'](function(_0x385d57){_0x33d0da[_0xf633('0x20')]=_0x385d57;if(_0x4bc21c['query'][_0xf633('0x40')]){_0x429481[_0xf633('0x41')]=[{'all':!![]}];}if(_0x4bc21c['query']['userSetting']===_0xf633('0x42')){_0x429481[_0xf633('0x41')]=[{'model':db[_0xf633('0x43')],'as':_0xf633('0x44')}];}if(!_[_0xf633('0x31')](_0x429481[_0xf633('0x45')],'id')){_0x429481[_0xf633('0x45')]['push']('id');}return db[_0xf633('0x37')][_0xf633('0x46')](_0x429481);})[_0xf633('0xf')](function(_0x165c62){_0x33d0da['rows']=_0x165c62;if(_0x4bc21c[_0xf633('0x47')][_0xf633('0x48')]===_0xf633('0x42')){var _0x2d33f8=[];for(var _0x2f5605=0x0;_0x2f5605<_0x33d0da['rows'][_0xf633('0x49')];_0x2f5605++){_0x2d33f8[_0xf633('0x4a')](get_open_tabs('chat',_0x33d0da[_0xf633('0x4b')][_0x2f5605][_0xf633('0x4c')]));_0x2d33f8[_0xf633('0x4a')](get_open_tabs('sms',_0x33d0da[_0xf633('0x4b')][_0x2f5605][_0xf633('0x4c')]));_0x2d33f8[_0xf633('0x4a')](get_open_tabs(_0xf633('0x4d'),_0x33d0da[_0xf633('0x4b')][_0x2f5605]['dataValues']));_0x2d33f8[_0xf633('0x4a')](get_open_tabs(_0xf633('0x4e'),_0x33d0da['rows'][_0x2f5605]['dataValues']));_0x2d33f8[_0xf633('0x4a')](get_open_tabs(_0xf633('0x4f'),_0x33d0da[_0xf633('0x4b')][_0x2f5605][_0xf633('0x4c')]));_0x2d33f8[_0xf633('0x4a')](get_open_tabs(_0xf633('0x50'),_0x33d0da[_0xf633('0x4b')][_0x2f5605][_0xf633('0x4c')]));}return BPromise[_0xf633('0x51')](_0x2d33f8)['then'](function(){return _0x33d0da;});}else{return _0x33d0da;}})[_0xf633('0xf')](respondWithFilteredResult(_0x30a0de,_0x429481))['catch'](handleError(_0x30a0de,null));};exports[_0xf633('0x52')]=function(_0x22116c,_0x2f1762){var _0x29a727={'raw':![],'where':{'id':_0x22116c[_0xf633('0x53')]['id']}},_0xfb9487={};_0xfb9487[_0xf633('0x54')]=_['differenceBy'](_[_0xf633('0x55')](db[_0xf633('0x37')][_0xf633('0x56')]),[_0xf633('0x3c'),_0xf633('0x3d')]);_0xfb9487[_0xf633('0x47')]=_['keys'](_0x22116c[_0xf633('0x47')]);_0xfb9487[_0xf633('0x57')]=_[_0xf633('0x58')](_0xfb9487[_0xf633('0x54')],_0xfb9487[_0xf633('0x47')]);_0x29a727[_0xf633('0x45')]=_[_0xf633('0x58')](_0xfb9487[_0xf633('0x54')],qs[_0xf633('0x59')](_0x22116c[_0xf633('0x47')][_0xf633('0x59')]));_0x29a727['attributes']=_0x29a727[_0xf633('0x45')][_0xf633('0x49')]?_0x29a727['attributes']:_0xfb9487[_0xf633('0x54')];if(_0x22116c[_0xf633('0x47')][_0xf633('0x40')]){_0x29a727['include']=[{'all':!![]}];}if(_0x22116c[_0xf633('0x47')][_0xf633('0x44')]===_0xf633('0x42')){_0x29a727['include']=[{'model':db[_0xf633('0x43')],'as':_0xf633('0x44')}];}_0x29a727=_['merge']({},_0x29a727,_0x22116c[_0xf633('0x5a')]);if(!_['includes'](_0x29a727[_0xf633('0x45')],'id')){_0x29a727[_0xf633('0x45')][_0xf633('0x4a')]('id');}return db['User'][_0xf633('0x32')](_0x29a727)[_0xf633('0xf')](handleEntityNotFound(_0x2f1762,null))[_0xf633('0xf')](function(_0xd904be){var _0x480e1b=[];values=_0xd904be;if(_0x22116c[_0xf633('0x47')][_0xf633('0x48')]===_0xf633('0x42')){_0x480e1b[_0xf633('0x4a')](get_open_tabs(_0xf633('0x5b'),_0xd904be['dataValues']));_0x480e1b[_0xf633('0x4a')](get_open_tabs('sms',_0xd904be[_0xf633('0x4c')]));_0x480e1b[_0xf633('0x4a')](get_open_tabs(_0xf633('0x4f'),_0xd904be['dataValues']));_0x480e1b[_0xf633('0x4a')](get_open_tabs(_0xf633('0x50'),_0xd904be[_0xf633('0x4c')]));_0x480e1b[_0xf633('0x4a')](get_open_tabs(_0xf633('0x4d'),_0xd904be[_0xf633('0x4c')]));_0x480e1b[_0xf633('0x4a')](get_open_tabs(_0xf633('0x4e'),_0xd904be[_0xf633('0x4c')]));return BPromise[_0xf633('0x51')](_0x480e1b);}else{return values;}})['then'](function(){return values;})[_0xf633('0xf')](respondWithResult(_0x2f1762,null))[_0xf633('0x1a')](handleError(_0x2f1762,null));};exports[_0xf633('0x23')]=function(_0x159e46,_0x736f68){if(_0x159e46[_0xf633('0x5c')]['id']){delete _0x159e46[_0xf633('0x5c')]['id'];}delete _0x159e46['body'][_0xf633('0x26')];return db['User'][_0xf633('0x32')]({'where':{'id':_0x159e46[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x736f68,null))['then'](saveUpdates(_0x159e46[_0xf633('0x5c')],null))[_0xf633('0xf')](respondWithResult(_0x736f68,null))[_0xf633('0x1a')](handleError(_0x736f68,null));};exports['describe']=function(_0x454936,_0x2a415b){return db[_0xf633('0x37')]['describe']()[_0xf633('0xf')](respondWithResult(_0x2a415b,null))[_0xf633('0x1a')](handleError(_0x2a415b,null));};exports[_0xf633('0x5d')]=function(_0x29b9a7,_0xb20608){return db[_0xf633('0x37')][_0xf633('0x32')]({'where':{'id':_0x29b9a7[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0xb20608,null))[_0xf633('0xf')](function(_0x367b36){if(_0x367b36){return _0x367b36[_0xf633('0x5d')](_0x29b9a7[_0xf633('0x5c')][_0xf633('0x5e')],_['omit'](_0x29b9a7[_0xf633('0x5c')],[_0xf633('0x5e'),'id'])||{});}})[_0xf633('0xf')](respondWithResult(_0xb20608,null))[_0xf633('0x1a')](handleError(_0xb20608,null));};function validateUser(_0x2c7181){return new BPromise(function(_0x2fccc0,_0x552a4c){if(_0x2c7181['internal'])return _0x2fccc0(_0x2c7181);return db[_0xf633('0x5f')][_0xf633('0x60')](0x1)[_0xf633('0xf')](function(_0x38f8a7){if(_0x38f8a7[_0xf633('0x61')])authService['validatePasswordPattern'](_0x2c7181['password']);db[_0xf633('0x37')][_0xf633('0x62')](_0xf633('0x63'))['then'](function(_0x5ba451){if(_[_0xf633('0x64')](_0x5ba451)){_0x2c7181[_0xf633('0x63')]=_0x38f8a7[_0xf633('0x65')]||0x1;return;}if(_[_0xf633('0x64')](_0x38f8a7['min_internal'])||_0x38f8a7[_0xf633('0x65')]===_0x5ba451){_0x2c7181[_0xf633('0x63')]=_0x5ba451+0x1;return;}if(_0x38f8a7[_0xf633('0x65')]>_0x5ba451){_0x2c7181[_0xf633('0x63')]=_0x38f8a7['min_internal'];return;}return db[_0xf633('0x66')][_0xf633('0x47')](_0xf633('0x67'),{'type':db[_0xf633('0x66')]['QueryTypes'][_0xf633('0x68')]})[_0xf633('0xf')](function(_0x2c5065){if(_0x2c5065&&_0x2c5065[_0xf633('0x49')]){for(var _0x39c0c8=0x0,_0x52a92b=_0x2c5065[_0xf633('0x49')];_0x39c0c8<_0x52a92b&&_['isNil'](_0x2c7181[_0xf633('0x63')]);_0x39c0c8++){if(_0x38f8a7[_0xf633('0x65')]<=_0x2c5065[_0x39c0c8][_0xf633('0x69')]){_0x2c7181[_0xf633('0x63')]=_0x2c5065[_0x39c0c8][_0xf633('0x69')];}else if(_0x38f8a7[_0xf633('0x65')]>_0x2c5065[_0x39c0c8][_0xf633('0x69')]&&_0x38f8a7[_0xf633('0x65')]<=_0x2c5065[_0x39c0c8]['to']){_0x2c7181[_0xf633('0x63')]=_0x38f8a7[_0xf633('0x65')];}}}if(_['isNil'](_0x2c7181['internal'])){_0x2c7181[_0xf633('0x63')]=_0x5ba451+0x1;}return _0x2fccc0(_0x2c7181);});});})['catch'](function(_0x2a403f){_0x552a4c(_0x2a403f);});});}function updateUser(_0x3a0dca){return new BPromise(function(_0x4c1554,_0x574984){try{if(_0x3a0dca['voicemail']){_0x3a0dca[_0xf633('0x6a')]=_0x3a0dca[_0xf633('0x63')];_0x3a0dca[_0xf633('0x6b')]={'mailbox':_0x3a0dca[_0xf633('0x63')],'password':_0x3a0dca['password'],'fullname':_0x3a0dca[_0xf633('0x6c')],'email':_0x3a0dca[_0xf633('0x6d')]};}if(_0x3a0dca['role']===_0xf633('0x2b')){if(!_0x3a0dca['permissions'])_0x3a0dca['permissions']=[_0xf633('0x6e'),_0xf633('0x6f'),_0xf633('0x70'),_0xf633('0x71'),'110',_0xf633('0x72'),_0xf633('0x73'),'106',_0xf633('0x74'),_0xf633('0x75'),_0xf633('0x76'),_0xf633('0x77'),_0xf633('0x78'),'114',_0xf633('0x79')];}_0x4c1554(_0x3a0dca);}catch(_0x595ac9){_0x574984(_0x595ac9);}});}exports[_0xf633('0x7a')]=function(_0x534b65,_0x9e3208){if(_0x534b65[_0xf633('0x29')]['role']===_0xf633('0x2b'))throw new Error(_0xf633('0x7b'));if(_0x534b65[_0xf633('0x5c')][_0xf633('0x26')]===_0xf633('0x29')&&_0x534b65[_0xf633('0x29')]['role']!==_0xf633('0x27')){throw new Error(_0xf633('0x7c'));}if(_0x534b65[_0xf633('0x5c')][_0xf633('0x26')]===_0xf633('0x27')&&_0x534b65[_0xf633('0x29')]['role']!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20another\x20administrator');}return licenseUtil['checkUserLimits']([_0x534b65[_0xf633('0x5c')]])['then'](function(){return validateUser(_0x534b65[_0xf633('0x5c')]);})[_0xf633('0xf')](function(_0x17b3cd){return updateUser(_0x17b3cd)[_0xf633('0xf')](function(_0x22effe){if(_0x22effe[_0xf633('0x26')]==='admin'){_0x22effe['settingsEnabled']=_0x534b65[_0xf633('0x29')][_0xf633('0x7d')];delete _0x22effe[_0xf633('0x7e')];}return _0x22effe;});})[_0xf633('0xf')](function(_0x3941f4){return db[_0xf633('0x37')][_0xf633('0x7a')](_0x3941f4,{'include':[{'model':db[_0xf633('0x6b')],'as':_0xf633('0x6b')}]});})[_0xf633('0xf')](function(_0x5501e6){if(_0x534b65[_0xf633('0x5c')][_0xf633('0x26')]===_0xf633('0x29'))return _0x5501e6;if(_0x534b65[_0xf633('0x29')][_0xf633('0x26')]!=='user')return _0x5501e6;return db[_0xf633('0x7f')]['find']({'where':{'name':_0x5501e6['role']===_0xf633('0x2b')?_0xf633('0x2a'):_0xf633('0x2c'),'userProfileId':_0x534b65['user'][_0xf633('0x7e')]},'raw':!![]})[_0xf633('0xf')](function(_0x8339ae){if(!_0x8339ae||_0x8339ae['autoAssociation']!=0x0)return _0x5501e6;return db['UserProfileResource'][_0xf633('0x7a')]({'name':_0x5501e6[_0xf633('0x33')],'resourceId':_0x5501e6['id'],'type':_0x8339ae[_0xf633('0x33')],'sectionId':_0x8339ae['id']},{})[_0xf633('0xf')](function(){return _0x5501e6;});})[_0xf633('0x1a')](function(_0x3f7c99){logger[_0xf633('0x16')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x3f7c99);throw _0x3f7c99;});})[_0xf633('0xf')](respondWithResult(_0x9e3208,0xc9))[_0xf633('0x1a')](handleError(_0x9e3208,null));};exports[_0xf633('0x80')]=function(_0x3656f8,_0x52a776){var _0x11453a=_0x3656f8[_0xf633('0x5c')];var _0x23812d=[];if(_0x3656f8[_0xf633('0x29')]['role']==='agent')throw new Error(_0xf633('0x7b'));if(_[_0xf633('0x81')](_0x11453a,['role',_0xf633('0x29')])&&_0x3656f8[_0xf633('0x29')]['role']!==_0xf633('0x27')){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20user');}if(_[_0xf633('0x81')](_0x11453a,[_0xf633('0x26'),'admin'])&&_0x3656f8[_0xf633('0x29')]['role']!=='admin'){throw new Error('Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator');}return licenseUtil['checkUserLimits'](_0x11453a)['then'](function(){return validateUser(_0x11453a[0x0]);})[_0xf633('0xf')](function(){for(var _0x2a039b=0x1;_0x2a039b<_0x11453a['length'];_0x2a039b++){var _0x4721cd=_0x11453a[_0x2a039b-0x1][_0xf633('0x63')];if(!_0x11453a[_0x2a039b][_0xf633('0x63')])_0x11453a[_0x2a039b][_0xf633('0x63')]=_0x4721cd+0x1;_0x23812d['push'](validateUser(_0x11453a[_0x2a039b]));}return BPromise[_0xf633('0x51')](_0x23812d);})[_0xf633('0xf')](function(){_0x23812d=[];for(var _0x1bb735=0x0;_0x1bb735<_0x11453a[_0xf633('0x49')];_0x1bb735++){_0x23812d[_0xf633('0x4a')](updateUser(_0x11453a[_0x1bb735]));}return BPromise[_0xf633('0x51')](_0x23812d);})[_0xf633('0xf')](function(){return BPromise[_0xf633('0x82')](_0x11453a,function(_0x135d04){return db[_0xf633('0x37')][_0xf633('0x7a')](_0x135d04,{'include':[{'model':db[_0xf633('0x6b')],'as':_0xf633('0x6b')}]})[_0xf633('0xf')](function(_0xdcf6c4){_0x135d04['id']=_0xdcf6c4['id'];return _0x135d04;});});})[_0xf633('0xf')](function(_0x3431e0){if(_0x3656f8['body'][_0xf633('0x26')]===_0xf633('0x29'))return _0x3431e0;if(_0x3656f8[_0xf633('0x29')][_0xf633('0x26')]!==_0xf633('0x29'))return _0x3431e0;var _0x42b14f=_[_0xf633('0x81')](_0x3431e0,function(_0x20cfce){return _0x20cfce[_0xf633('0x26')]===_0xf633('0x2b')||_0x20cfce[_0xf633('0x26')]===_0xf633('0x2d');});if(!_0x42b14f)return _0x3431e0;return db[_0xf633('0x7f')]['findAll']({'where':{'name':{'$or':[_0xf633('0x2a'),_0xf633('0x2c')]},'userProfileId':_0x3656f8[_0xf633('0x29')][_0xf633('0x7e')]},'raw':!![]})[_0xf633('0xf')](function(_0x41261e){if(_[_0xf633('0x83')](_0x41261e)||!_[_0xf633('0x81')](_0x41261e,[_0xf633('0x84'),0x0]))return _0x3431e0;_0x23812d=[];var _0x5b2c65=_(_0x41261e)['map'](function(_0x5a091a){if(_0x5a091a[_0xf633('0x84')]===0x1)return;return _0x5a091a[_0xf633('0x33')]===_0xf633('0x2a')?'agent':'telephone';})[_0xf633('0x85')]()[_0xf633('0x30')]();for(var _0x2b9533=0x0;_0x2b9533<_0x3431e0[_0xf633('0x49')];_0x2b9533++){if(!_[_0xf633('0x31')](_0x5b2c65,_0x3431e0[_0x2b9533][_0xf633('0x26')]))return;var _0x1e200e=_0x3431e0[_0x2b9533]['role']===_0xf633('0x2b')?_0xf633('0x2a'):_0xf633('0x2c');_0x23812d[_0xf633('0x4a')](db[_0xf633('0x86')][_0xf633('0x7a')]({'name':_0x3431e0[_0x2b9533][_0xf633('0x33')],'resourceId':_0x3431e0[_0x2b9533]['id'],'type':_0x1e200e,'sectionId':_[_0xf633('0x32')](_0x41261e,[_0xf633('0x33'),_0x1e200e])['id']},{}));}return BPromise[_0xf633('0x51')](_0x23812d);});})[_0xf633('0xf')](respondWithResult(_0x52a776,0xc9))[_0xf633('0x1a')](handleError(_0x52a776,null));};exports['changePassword']=function(_0x2fd085,_0x1825fc){if(_0x2fd085[_0xf633('0x5c')]['id']){delete _0x2fd085['body']['id'];}return db['User'][_0xf633('0x32')]({'where':{'id':_0x2fd085['params']['id']}})['then'](function(_0x2cd72d){if(!_0x2cd72d)return null;if(_0x2cd72d['id']===_0x2fd085[_0xf633('0x29')]['id']){if(!_0x2fd085['body'][_0xf633('0x87')]||!_0x2fd085[_0xf633('0x5c')][_0xf633('0x88')]){throw new db[(_0xf633('0x89'))][(_0xf633('0x8a'))]('Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword');}if(!_0x2cd72d['authenticate'](_0x2fd085['body']['oldPassword'])){throw new db['Sequelize'][(_0xf633('0x8a'))](_0xf633('0x8b'));}if(_0x2fd085['body']['oldPassword']===_0x2fd085['body'][_0xf633('0x88')]){throw new db['Sequelize'][(_0xf633('0x8a'))](_0xf633('0x8c'));}}else if(_0x2fd085['user'][_0xf633('0x26')]===_0xf633('0x27')){if(!_0x2fd085[_0xf633('0x5c')][_0xf633('0x88')]){throw new db[(_0xf633('0x89'))][(_0xf633('0x8a'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}}else if(_0x2fd085[_0xf633('0x29')][_0xf633('0x26')]===_0xf633('0x29')){if(!_0x2fd085[_0xf633('0x5c')]['newPassword']){throw new db['Sequelize']['ValidationError']('Invalid\x20body\x20format.\x20Use\x20newPassword');}if(_0x2cd72d[_0xf633('0x26')]!==_0xf633('0x2b')){throw new db['Sequelize'][(_0xf633('0x8a'))](_0xf633('0x7b'));}}else{throw new db[(_0xf633('0x89'))][(_0xf633('0x8a'))](_0xf633('0x7b'));}return _0x2cd72d;})['then'](handleEntityNotFound(_0x1825fc,null))[_0xf633('0xf')](function(_0x5b2d64){return db[_0xf633('0x5f')]['findOne']({'attributes':['id',_0xf633('0x61'),'enforcePasswordHistory',_0xf633('0x8d')]})[_0xf633('0xf')](function(_0x144b51){if(_0x144b51['securePassword'])authService[_0xf633('0x8e')](_0x2fd085[_0xf633('0x5c')][_0xf633('0x88')]);if(!_0x144b51[_0xf633('0x8f')]||!_0x5b2d64[_0xf633('0x90')])return _0x5b2d64;authService[_0xf633('0x91')](_0x2fd085[_0xf633('0x5c')][_0xf633('0x88')],_0x5b2d64['previousPasswords'],_0x144b51[_0xf633('0x8d')]);return _0x5b2d64;})[_0xf633('0xf')](saveUpdates({'password':_0x2fd085['body'][_0xf633('0x88')],'passwordResetAt':_0x2fd085['user']['id']==_0x2fd085['params']['id']?moment():null,'previousPasswords':authService['updatePasswordsHistory'](_0x2fd085[_0xf633('0x5c')][_0xf633('0x88')],_0x5b2d64[_0xf633('0x90')])},null));})[_0xf633('0xf')](respondWithResult(_0x1825fc,null))[_0xf633('0x1a')](handleError(_0x1825fc,null));};exports['addQueues']=function(_0x1fb4b4,_0x3f15c2){var _0x13dbca=_0x1fb4b4['body'][_0xf633('0x92')];return db[_0xf633('0x37')][_0xf633('0x32')]({'where':{'id':_0x1fb4b4['params']['id']},'attributes':['id',_0xf633('0x33'),_0xf633('0x26'),_0xf633('0x93'),_0xf633('0x94'),'voicePause','interface']})[_0xf633('0xf')](handleEntityNotFound(_0x3f15c2,null))[_0xf633('0xf')](function(_0x116c06){if(_0x116c06){if(!utils[_0xf633('0x95')](_0x13dbca)){throw new db['Sequelize'][(_0xf633('0x8a'))](_0xf633('0x96'));}return _0x116c06[_0xf633('0x97')+_[_0xf633('0x98')](_0x13dbca['toLowerCase']())+_0xf633('0x99')](_0x1fb4b4['body'][_0xf633('0x5e')],{'penalty':_0x1fb4b4['body'][_0xf633('0x9a')]||0x0})['spread'](function(_0x3e31ea){for(var _0x206e10=0x0;_0x206e10<_0x1fb4b4[_0xf633('0x5c')][_0xf633('0x5e')][_0xf633('0x49')];_0x206e10+=0x1){var _0x4193cb={'UserId':Number(_0x1fb4b4[_0xf633('0x53')]['id'])};_0x4193cb[_[_0xf633('0x98')](_0x13dbca[_0xf633('0x9b')]())+_0xf633('0x9c')]=Number(_0x1fb4b4[_0xf633('0x5c')]['ids'][_0x206e10]);socket['emit']('user'+_['capitalize'](_0x13dbca['toLowerCase']())+_0xf633('0x9d'),_0x4193cb);}return _0x3e31ea;})[_0xf633('0xf')](function(){if(_0x13dbca===_0xf633('0x9e')){return db[_0xf633('0x9f')]['findAll']({'where':{'id':_0x1fb4b4[_0xf633('0x5c')][_0xf633('0x5e')]||[]},'raw':!![],'attributes':['id',_0xf633('0x33')]});}})[_0xf633('0xf')](function(_0x50209e){var _0x5cf7bc=_0x116c06[_0xf633('0x25')]({'plain':!![]});var _0x6f5771=[];if(_0x13dbca===_0xf633('0x9e')&&_0x5cf7bc[_0xf633('0x26')]==='agent'&&_0x5cf7bc[_0xf633('0x93')]){for(var _0x3779e7=0x0;_0x3779e7<_0x50209e[_0xf633('0x49')];_0x3779e7+=0x1){_0x6f5771['push']({'membername':_0x5cf7bc[_0xf633('0x33')],'UserId':_0x5cf7bc['id'],'queue_name':_0x50209e[_0x3779e7][_0xf633('0x33')],'VoiceQueueId':_0x50209e[_0x3779e7]['id'],'interface':_[_0xf633('0x64')](_0x5cf7bc['interface'])?util[_0xf633('0xa0')](_0xf633('0xa1'),_0x5cf7bc['name']):_0x5cf7bc[_0xf633('0xa2')],'paused':_0x5cf7bc[_0xf633('0xa3')]||![],'penalty':_0x1fb4b4['body'][_0xf633('0x9a')]||0x0});}return BPromise[_0xf633('0x82')](_0x6f5771,function(_0x184f6f){return db[_0xf633('0xa4')][_0xf633('0xa5')](_0x184f6f);});}return _0x116c06;});}})[_0xf633('0xf')](respondWithStatusCode(_0x3f15c2,null))[_0xf633('0x1a')](handleError(_0x3f15c2,null));};exports[_0xf633('0xa6')]=function(_0x13f48c,_0x1320a0){var _0x36bd1b,_0x44e91f;return db['User'][_0xf633('0x32')]({'where':{'id':_0x13f48c[_0xf633('0x53')]['id']},'attributes':['id',_0xf633('0x33'),_0xf633('0x26')]})[_0xf633('0xf')](handleEntityNotFound(_0x1320a0,null))[_0xf633('0xf')](function(_0x58905a){if(_0x58905a){_0x36bd1b=_0x58905a;if(!_0x13f48c[_0xf633('0x47')][_0xf633('0x92')]||!utils[_0xf633('0x95')](_0x13f48c[_0xf633('0x47')][_0xf633('0x92')])){throw new db[(_0xf633('0x89'))]['ValidationError'](_0xf633('0x96'));}return _0x58905a[_0xf633('0xa7')+_['capitalize'](_0x13f48c[_0xf633('0x47')]['channel'][_0xf633('0x9b')]())+'Queues'](_0x13f48c[_0xf633('0x47')][_0xf633('0x5e')]);}})[_0xf633('0xf')](function(_0x2b2af2){if(_['isArray'](_0x13f48c['query']['ids'])){for(var _0x39981a=0x0;_0x39981a<_0x13f48c[_0xf633('0x47')][_0xf633('0x5e')]['length'];_0x39981a+=0x1){_0x44e91f={'UserId':Number(_0x13f48c[_0xf633('0x53')]['id'])};_0x44e91f[_[_0xf633('0x98')](_0x13f48c['query'][_0xf633('0x92')][_0xf633('0x9b')]())+'QueueId']=Number(_0x13f48c[_0xf633('0x47')]['ids'][_0x39981a]);socket[_0xf633('0xa8')](_0xf633('0x29')+_[_0xf633('0x98')](_0x13f48c[_0xf633('0x47')][_0xf633('0x92')]['toLowerCase']())+_0xf633('0xa9'),_0x44e91f);}}else{_0x44e91f={'UserId':Number(_0x13f48c[_0xf633('0x53')]['id'])};_0x44e91f[_[_0xf633('0x98')](_0x13f48c[_0xf633('0x47')][_0xf633('0x92')]['toLowerCase']())+_0xf633('0x9c')]=Number(_0x13f48c[_0xf633('0x47')][_0xf633('0x5e')]);socket[_0xf633('0xa8')]('user'+_[_0xf633('0x98')](_0x13f48c['query'][_0xf633('0x92')][_0xf633('0x9b')]())+_0xf633('0xa9'),_0x44e91f);}return _0x2b2af2;})[_0xf633('0xf')](function(){if(_0x13f48c[_0xf633('0x47')][_0xf633('0x92')]==='voice'){return db[_0xf633('0xa4')][_0xf633('0x24')]({'where':{'UserId':_0x13f48c['params']['id'],'VoiceQueueId':_0x13f48c['query'][_0xf633('0x5e')]},'individualHooks':!![]})[_0xf633('0xf')](function(){return _0x36bd1b;});}return _0x36bd1b;})[_0xf633('0xf')](respondWithStatusCode(_0x1320a0,null))['catch'](handleError(_0x1320a0,null));};exports[_0xf633('0xaa')]=function(_0x1a8d97,_0x31ee03){_0x1a8d97[_0xf633('0x5c')][_0xf633('0xab')]=_0x1a8d97[_0xf633('0xac')][_0xf633('0xad')];return db['User'][_0xf633('0x32')]({'where':{'id':_0x1a8d97[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x31ee03,null))[_0xf633('0xf')](saveUpdates(_0x1a8d97[_0xf633('0x5c')],null))[_0xf633('0xf')](respondWithResult(_0x31ee03,null))[_0xf633('0x1a')](handleError(_0x31ee03,null));};exports[_0xf633('0xae')]=function(_0x1a0f68,_0x33c697){var _0x508a1a=path['join'](config[_0xf633('0xaf')],_0xf633('0xb0'));return db[_0xf633('0x37')][_0xf633('0x32')]({'where':{'id':_0x1a0f68[_0xf633('0x53')]['id']},'attributes':['id',_0xf633('0xab')],'raw':!![]})[_0xf633('0xf')](handleEntityNotFound(_0x33c697,null))['then'](function(_0x396a08){if(_0x396a08){if(_[_0xf633('0x64')](_0x396a08[_0xf633('0xab')])){return _0x33c697[_0xf633('0xb1')](_0x508a1a);}else{if(!fs[_0xf633('0xb2')](path['join'](config[_0xf633('0xaf')],'server/files/images/',_0x396a08['userpic']))){return _0x33c697[_0xf633('0xb1')](_0x508a1a);}return _0x33c697[_0xf633('0xb1')](path['join'](config[_0xf633('0xaf')],_0xf633('0xb3'),_0x396a08[_0xf633('0xab')]));}}})['catch'](handleError(_0x33c697,null));};exports[_0xf633('0xb4')]=function(_0x53a791,_0x1247f6){return db[_0xf633('0x37')][_0xf633('0x32')]({'where':{'id':_0x53a791[_0xf633('0x53')]['id']},'attributes':['id']})['then'](handleEntityNotFound(_0x1247f6,null))[_0xf633('0xf')](function(_0x1d486d){var _0x101ff0=[];values=_0x1d486d[_0xf633('0x4c')];_0x101ff0[_0xf633('0x4a')](get_open_tabs(_0xf633('0x5b'),_0x1d486d['dataValues']));_0x101ff0[_0xf633('0x4a')](get_open_tabs('sms',_0x1d486d[_0xf633('0x4c')]));_0x101ff0[_0xf633('0x4a')](get_open_tabs(_0xf633('0x4f'),_0x1d486d[_0xf633('0x4c')]));_0x101ff0[_0xf633('0x4a')](get_open_tabs(_0xf633('0x50'),_0x1d486d[_0xf633('0x4c')]));_0x101ff0[_0xf633('0x4a')](get_open_tabs('fax',_0x1d486d[_0xf633('0x4c')]));_0x101ff0[_0xf633('0x4a')](get_open_tabs(_0xf633('0x4e'),_0x1d486d['dataValues']));return BPromise[_0xf633('0x51')](_0x101ff0);})[_0xf633('0xf')](function(_0x190a10){if(_0x190a10){var _0x8db091=_[_0xf633('0x38')](values[_0xf633('0xb5')],function(_0x47f331){return{'channel':_0xf633('0xb6'),'id':_0x47f331['id'],'createdAt':_0x47f331[_0xf633('0xb7')]};});var _0x237bf6=_[_0xf633('0x38')](values[_0xf633('0xb8')],function(_0x4ab611){return{'channel':_0xf633('0xb9'),'id':_0x4ab611['id'],'createdAt':_0x4ab611[_0xf633('0xb7')]};});var _0x23075e=_[_0xf633('0x38')](values['OpenchannelOpenTabs'],function(_0x59d1cb){return{'channel':_0xf633('0xba'),'id':_0x59d1cb['id'],'createdAt':_0x59d1cb['createdAt']};});var _0x28f204=_[_0xf633('0x38')](values['MailOpenTabs'],function(_0x15c5a0){return{'channel':_0xf633('0xbb'),'id':_0x15c5a0['id'],'createdAt':_0x15c5a0[_0xf633('0xb7')]};});var _0x1997bc=_[_0xf633('0x38')](values[_0xf633('0xbc')],function(_0x1f2739){return{'channel':_0xf633('0xbd'),'id':_0x1f2739['id'],'createdAt':_0x1f2739[_0xf633('0xb7')]};});var _0x2cc015=_[_0xf633('0x38')](values[_0xf633('0xbe')],function(_0x5286fb){return{'channel':_0xf633('0xbf'),'id':_0x5286fb['id'],'createdAt':_0x5286fb[_0xf633('0xb7')]};});var _0x5bc72d=_[_0xf633('0xc0')](_0x8db091,_0x237bf6,_0x23075e,_0x28f204,_0x1997bc,_0x2cc015);var _0x55dbd6={'count':_0x5bc72d[_0xf633('0x49')],'rows':_0x5bc72d};return _0x55dbd6;}else return null;})[_0xf633('0xf')](respondWithResult(_0x1247f6,null))['catch'](handleError(_0x1247f6,null));};exports[_0xf633('0xc1')]=function(_0x4b0886,_0x1c59a3){var _0x401deb={};var _0x58368a={};var _0x4f47d8;var _0x8f9400;return db[_0xf633('0x37')][_0xf633('0xc2')]({'where':{'id':_0x4b0886[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x1c59a3,null))[_0xf633('0xf')](function(_0x27810e){if(_0x27810e){_0x4f47d8=_0x27810e;_0x58368a[_0xf633('0x54')]=_[_0xf633('0x55')](db['CmContact'][_0xf633('0x56')]);_0x58368a[_0xf633('0x47')]=_[_0xf633('0x55')](_0x4b0886[_0xf633('0x47')]);_0x58368a[_0xf633('0x57')]=_[_0xf633('0x58')](_0x58368a[_0xf633('0x54')],_0x58368a['query']);_0x401deb[_0xf633('0x45')]=_[_0xf633('0x58')](_0x58368a[_0xf633('0x54')],qs['fields'](_0x4b0886[_0xf633('0x47')][_0xf633('0x59')]));_0x401deb[_0xf633('0x45')]=_0x401deb[_0xf633('0x45')]['length']?_0x401deb[_0xf633('0x45')]:_0x58368a[_0xf633('0x54')];_0x401deb[_0xf633('0xc3')]=qs['sort'](_0x4b0886['query'][_0xf633('0xc4')]);_0x401deb[_0xf633('0x3f')]=qs['filters'](_[_0xf633('0xc5')](_0x4b0886[_0xf633('0x47')],_0x58368a[_0xf633('0x57')]));if(_0x4b0886[_0xf633('0x47')][_0xf633('0x2e')]){_0x401deb['where']=_['merge'](_0x401deb['where'],{'$or':_[_0xf633('0x38')](_0x401deb[_0xf633('0x45')],function(_0x24b30b){var _0x12cc24={};_0x12cc24[_0x24b30b]={'$like':'%'+_0x4b0886[_0xf633('0x47')][_0xf633('0x2e')]+'%'};return _0x12cc24;})});}_0x401deb=_[_0xf633('0xc6')]({},_0x401deb,_0x4b0886['options']);return _0x4f47d8[_0xf633('0xc1')](_0x401deb);}})[_0xf633('0xf')](function(_0x126bfe){if(_0x126bfe){_0x8f9400=_0x126bfe[_0xf633('0x49')];if(_0x4b0886[_0xf633('0x47')][_0xf633('0xc7')](_0xf633('0x40'))){_0x401deb[_0xf633('0x41')]=[{'model':db[_0xf633('0xc8')],'as':_0xf633('0xc9'),'required':![]},{'model':db['Tag'],'as':_0xf633('0xca'),'attributes':['id',_0xf633('0x33'),_0xf633('0xcb')],'where':_0x4b0886[_0xf633('0x47')][_0xf633('0xcc')]?{'id':_0x4b0886['query'][_0xf633('0xcc')]}:undefined,'required':_0x4b0886[_0xf633('0x47')][_0xf633('0xcc')]?!![]:![]}];}if(!_0x4b0886['query'][_0xf633('0xc7')]('nolimit')){_0x401deb['limit']=qs[_0xf633('0x21')](_0x4b0886[_0xf633('0x47')][_0xf633('0x21')]);_0x401deb[_0xf633('0x1e')]=qs[_0xf633('0x1e')](_0x4b0886[_0xf633('0x47')][_0xf633('0x1e')]);}return _0x4f47d8[_0xf633('0xc1')](_0x401deb);}})[_0xf633('0xf')](function(_0x20551e){if(_0x20551e){return _0x20551e?{'count':_0x8f9400,'rows':_0x20551e}:null;}})[_0xf633('0xf')](respondWithResult(_0x1c59a3,null))['catch'](handleError(_0x1c59a3,null));};exports['getQueues']=function(_0x4dd219,_0x470383){var _0xbcb15b;var _0x3a59a3={};var _0x52f511;return db['User'][_0xf633('0xc2')]({'where':{'id':_0x4dd219['params']['id']},'attributes':['id',_0xf633('0x33'),'role']})['then'](handleEntityNotFound(_0x470383,null))[_0xf633('0xf')](function(_0x4c8e01){if(!utils[_0xf633('0x95')](_0x4dd219[_0xf633('0x47')][_0xf633('0x92')])){throw new db[(_0xf633('0x89'))][(_0xf633('0x8a'))](_0xf633('0x96'));}_0xbcb15b=_0x4c8e01;var _0x3e7ae7={};_0x3e7ae7[_0xf633('0x54')]=_['keys'](db[_[_0xf633('0x98')](_0x4dd219['query'][_0xf633('0x92')])+'Queue']['rawAttributes']);_0x3e7ae7[_0xf633('0x47')]=_[_0xf633('0x55')](_0x4dd219['query']);_0x3e7ae7[_0xf633('0x57')]=_[_0xf633('0x58')](_0x3e7ae7['model'],_0x3e7ae7[_0xf633('0x47')]);_0x3a59a3['attributes']=_[_0xf633('0x58')](_0x3e7ae7[_0xf633('0x54')],qs[_0xf633('0x59')](_0x4dd219[_0xf633('0x47')][_0xf633('0x59')]));_0x3a59a3['attributes']=_0x3a59a3[_0xf633('0x45')]['length']?_0x3a59a3[_0xf633('0x45')]:_0x3e7ae7[_0xf633('0x54')];_0x3a59a3['order']=qs['sort'](_0x4dd219[_0xf633('0x47')][_0xf633('0xc4')]);_0x3a59a3[_0xf633('0x3f')]=qs[_0xf633('0x57')](_[_0xf633('0xc5')](_0x4dd219[_0xf633('0x47')],_0x3e7ae7[_0xf633('0x57')]));if(_0x4dd219[_0xf633('0x47')]['filter']){_0x3a59a3[_0xf633('0x3f')]=_[_0xf633('0xc6')](_0x3a59a3['where'],{'$or':_[_0xf633('0x38')](_0x3a59a3['attributes'],function(_0x17957d){var _0x274b42={};_0x274b42[_0x17957d]={'$like':'%'+_0x4dd219[_0xf633('0x47')][_0xf633('0x2e')]+'%'};return _0x274b42;})});}_0x3a59a3=_[_0xf633('0xc6')]({},_0x3a59a3,_0x4dd219['options']);switch(_0xbcb15b[_0xf633('0x26')]){case _0xf633('0x27'):return db[_['capitalize'](_0x4dd219[_0xf633('0x47')]['channel'])+_0xf633('0xcd')][_0xf633('0x46')](_0x3a59a3);case _0xf633('0x29'):case _0xf633('0x2b'):return _0xbcb15b[_0xf633('0x25')+_[_0xf633('0x98')](_0x4dd219[_0xf633('0x47')][_0xf633('0x92')])+_0xf633('0x99')](_0x3a59a3);default:throw new db['Sequelize'][(_0xf633('0x8a'))]('Unknown\x20role');}})[_0xf633('0xf')](function(_0x38a63d){_0x52f511=_0x38a63d[_0xf633('0x49')];if(!_0x4dd219[_0xf633('0x47')]['hasOwnProperty'](_0xf633('0xce'))){_0x3a59a3[_0xf633('0x21')]=qs[_0xf633('0x21')](_0x4dd219[_0xf633('0x47')][_0xf633('0x21')]);_0x3a59a3[_0xf633('0x1e')]=qs[_0xf633('0x1e')](_0x4dd219['query']['offset']);}switch(_0xbcb15b['role']){case _0xf633('0x27'):return db[_[_0xf633('0x98')](_0x4dd219[_0xf633('0x47')]['channel'])+_0xf633('0xcd')][_0xf633('0x46')](_0x3a59a3);case _0xf633('0x29'):case _0xf633('0x2b'):return _0xbcb15b[_0xf633('0x25')+_[_0xf633('0x98')](_0x4dd219['query'][_0xf633('0x92')])+_0xf633('0x99')](_0x3a59a3);}})[_0xf633('0xf')](function(_0x2ca301){return{'count':_0x52f511,'rows':_0x2ca301};})[_0xf633('0xf')](respondWithResult(_0x470383,null))[_0xf633('0x1a')](handleError(_0x470383,null));};exports[_0xf633('0xcf')]=function(_0x1174a9,_0x2a9148){var _0x2783e3={};var _0x380787={};var _0x114e8f;var _0x7c44a;return db['User']['findOne']({'where':{'id':_0x1174a9[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x2a9148,null))['then'](function(_0x2ebd8e){if(_0x2ebd8e){_0x114e8f=_0x2ebd8e;_0x380787[_0xf633('0x54')]=_['keys'](db[_0xf633('0xa4')][_0xf633('0x56')]);_0x380787[_0xf633('0x47')]=_[_0xf633('0x55')](_0x1174a9[_0xf633('0x47')]);_0x380787['filters']=_[_0xf633('0x58')](_0x380787['model'],_0x380787[_0xf633('0x47')]);_0x2783e3[_0xf633('0x45')]=_[_0xf633('0x58')](_0x380787['model'],qs['fields'](_0x1174a9[_0xf633('0x47')][_0xf633('0x59')]));_0x2783e3[_0xf633('0x45')]=_0x2783e3[_0xf633('0x45')]['length']?_0x2783e3[_0xf633('0x45')]:_0x380787[_0xf633('0x54')];_0x2783e3[_0xf633('0xc3')]=qs[_0xf633('0xc4')](_0x1174a9['query'][_0xf633('0xc4')]);_0x2783e3[_0xf633('0x3f')]=qs[_0xf633('0x57')](_['pick'](_0x1174a9['query'],_0x380787['filters']));if(_0x1174a9['query'][_0xf633('0x2e')]){_0x2783e3[_0xf633('0x3f')]=_[_0xf633('0xc6')](_0x2783e3[_0xf633('0x3f')],{'$or':_[_0xf633('0x38')](_0x2783e3[_0xf633('0x45')],function(_0x4817ba){var _0xe04919={};_0xe04919[_0x4817ba]={'$like':'%'+_0x1174a9[_0xf633('0x47')][_0xf633('0x2e')]+'%'};return _0xe04919;})});}_0x2783e3=_['merge']({},_0x2783e3,_0x1174a9[_0xf633('0x5a')]);return _0x114e8f['getVoiceQueuesRt'](_0x2783e3);}})[_0xf633('0xf')](function(_0x3588a6){if(_0x3588a6){_0x7c44a=_0x3588a6['length'];if(!_0x1174a9[_0xf633('0x47')][_0xf633('0xc7')]('nolimit')){_0x2783e3['limit']=qs['limit'](_0x1174a9['query']['limit']);_0x2783e3[_0xf633('0x1e')]=qs[_0xf633('0x1e')](_0x1174a9['query'][_0xf633('0x1e')]);}return _0x114e8f[_0xf633('0xcf')](_0x2783e3);}})[_0xf633('0xf')](function(_0x1e4d68){if(_0x1e4d68){return _0x1e4d68?{'count':_0x7c44a,'rows':_0x1e4d68}:null;}})[_0xf633('0xf')](respondWithResult(_0x2a9148,null))[_0xf633('0x1a')](handleError(_0x2a9148,null));};exports[_0xf633('0xd0')]=function(_0xfedafe,_0x47525a){var _0x4770ec={};var _0x5778ec={};var _0x4938db;var _0x4848d6;return db[_0xf633('0x37')][_0xf633('0xc2')]({'where':{'id':_0xfedafe[_0xf633('0x53')]['id']}})['then'](handleEntityNotFound(_0x47525a,null))['then'](function(_0x2d4383){if(_0x2d4383){_0x4938db=_0x2d4383;_0x5778ec['model']=_['keys'](db[_0xf633('0xd1')][_0xf633('0x56')]);_0x5778ec[_0xf633('0x47')]=_[_0xf633('0x55')](_0xfedafe[_0xf633('0x47')]);_0x5778ec[_0xf633('0x57')]=_[_0xf633('0x58')](_0x5778ec['model'],_0x5778ec[_0xf633('0x47')]);_0x4770ec[_0xf633('0x45')]=_[_0xf633('0x58')](_0x5778ec['model'],qs[_0xf633('0x59')](_0xfedafe['query'][_0xf633('0x59')]));_0x4770ec[_0xf633('0x45')]=_0x4770ec[_0xf633('0x45')][_0xf633('0x49')]?_0x4770ec[_0xf633('0x45')]:_0x5778ec[_0xf633('0x54')];_0x4770ec[_0xf633('0xc3')]=qs['sort'](_0xfedafe['query'][_0xf633('0xc4')]);_0x4770ec[_0xf633('0x3f')]=qs[_0xf633('0x57')](_[_0xf633('0xc5')](_0xfedafe[_0xf633('0x47')],_0x5778ec[_0xf633('0x57')]));if(_0xfedafe[_0xf633('0x47')][_0xf633('0x2e')]){_0x4770ec['where']=_[_0xf633('0xc6')](_0x4770ec['where'],{'$or':_[_0xf633('0x38')](_0x4770ec['attributes'],function(_0x53190b){var _0x43b752={};_0x43b752[_0x53190b]={'$like':'%'+_0xfedafe[_0xf633('0x47')][_0xf633('0x2e')]+'%'};return _0x43b752;})});}_0x4770ec=_[_0xf633('0xc6')]({},_0x4770ec,_0xfedafe[_0xf633('0x5a')]);return _0x4938db['getGroups'](_0x4770ec);}})['then'](function(_0x936b76){if(_0x936b76){_0x4848d6=_0x936b76['length'];if(!_0xfedafe[_0xf633('0x47')]['hasOwnProperty']('nolimit')){_0x4770ec[_0xf633('0x21')]=qs[_0xf633('0x21')](_0xfedafe[_0xf633('0x47')][_0xf633('0x21')]);_0x4770ec[_0xf633('0x1e')]=qs['offset'](_0xfedafe[_0xf633('0x47')]['offset']);}return _0x4938db[_0xf633('0xd0')](_0x4770ec);}})[_0xf633('0xf')](function(_0x570ec9){if(_0x570ec9){return _0x570ec9?{'count':_0x4848d6,'rows':_0x570ec9}:null;}})[_0xf633('0xf')](respondWithResult(_0x47525a,null))[_0xf633('0x1a')](handleError(_0x47525a,null));};exports[_0xf633('0xd2')]=function(_0x1c2648,_0x1ca536){var _0x142014={'raw':!![],'where':{}};var _0x43bf7c={};var _0x2306c8={'count':0x0,'rows':[]};return db['User']['findOne']({'where':{'id':_0x1c2648[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x1ca536,null))[_0xf633('0xf')](function(_0x3d97c5){if(_0x3d97c5){_0x43bf7c[_0xf633('0x54')]=_[_0xf633('0x55')](db[_0xf633('0xd3')][_0xf633('0x56')]);_0x43bf7c[_0xf633('0x47')]=_[_0xf633('0x55')](_0x1c2648[_0xf633('0x47')]);_0x43bf7c[_0xf633('0x57')]=_[_0xf633('0x58')](_0x43bf7c[_0xf633('0x54')],_0x43bf7c[_0xf633('0x47')]);_0x142014[_0xf633('0x45')]=_['intersection'](_0x43bf7c[_0xf633('0x54')],qs[_0xf633('0x59')](_0x1c2648[_0xf633('0x47')][_0xf633('0x59')]));_0x142014['attributes']=_0x142014[_0xf633('0x45')][_0xf633('0x49')]?_0x142014[_0xf633('0x45')]:_0x43bf7c['model'];if(!_0x1c2648[_0xf633('0x47')][_0xf633('0xc7')](_0xf633('0xce'))){_0x142014['limit']=qs[_0xf633('0x21')](_0x1c2648[_0xf633('0x47')][_0xf633('0x21')]);_0x142014['offset']=qs[_0xf633('0x1e')](_0x1c2648[_0xf633('0x47')][_0xf633('0x1e')]);}_0x142014[_0xf633('0xc3')]=qs[_0xf633('0xc4')](_0x1c2648[_0xf633('0x47')][_0xf633('0xc4')]);_0x142014[_0xf633('0x3f')]=qs[_0xf633('0x57')](_[_0xf633('0xc5')](_0x1c2648[_0xf633('0x47')],_0x43bf7c[_0xf633('0x57')]));_0x142014[_0xf633('0x3f')][_0xf633('0xd4')]=_0x3d97c5['id'];if(_0x1c2648[_0xf633('0x47')][_0xf633('0x2e')]){_0x142014['where']=_['merge'](_0x142014['where'],{'$or':_[_0xf633('0x38')](_0x142014[_0xf633('0x45')],function(_0x379489){var _0x1ae913={};_0x1ae913[_0x379489]={'$like':'%'+_0x1c2648['query']['filter']+'%'};return _0x1ae913;})});}_0x142014=_[_0xf633('0xc6')]({},_0x142014,_0x1c2648[_0xf633('0x5a')]);return db[_0xf633('0xd3')][_0xf633('0x20')]({'where':_0x142014[_0xf633('0x3f')]})[_0xf633('0xf')](function(_0x5e73d3){_0x2306c8[_0xf633('0x20')]=_0x5e73d3;if(_0x1c2648[_0xf633('0x47')][_0xf633('0x40')]){_0x142014[_0xf633('0x41')]=[{'all':!![]}];}return db[_0xf633('0xd3')][_0xf633('0x46')](_0x142014);})[_0xf633('0xf')](function(_0x15a0dd){_0x2306c8[_0xf633('0x4b')]=_0x15a0dd;return _0x2306c8;});}})[_0xf633('0xf')](respondWithFilteredResult(_0x1ca536,_0x142014))[_0xf633('0x1a')](handleError(_0x1ca536,null));};exports[_0xf633('0xd5')]=function(_0x34a062,_0x15b3d4){var _0x1a5228={'raw':!![],'where':{}};var _0x51d60a={};var _0x6c338c={'count':0x0,'rows':[]};return db[_0xf633('0x37')][_0xf633('0xc2')]({'where':{'id':_0x34a062[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x15b3d4,null))['then'](function(_0x4c0ff7){if(_0x4c0ff7){_0x51d60a[_0xf633('0x54')]=_[_0xf633('0x55')](db['ScreenRecording'][_0xf633('0x56')]);_0x51d60a[_0xf633('0x47')]=_['keys'](_0x34a062[_0xf633('0x47')]);_0x51d60a['filters']=_[_0xf633('0x58')](_0x51d60a['model'],_0x51d60a['query']);_0x1a5228[_0xf633('0x45')]=_[_0xf633('0x58')](_0x51d60a[_0xf633('0x54')],qs[_0xf633('0x59')](_0x34a062[_0xf633('0x47')][_0xf633('0x59')]));_0x1a5228['attributes']=_0x1a5228[_0xf633('0x45')][_0xf633('0x49')]?_0x1a5228[_0xf633('0x45')]:_0x51d60a[_0xf633('0x54')];if(!_0x34a062[_0xf633('0x47')][_0xf633('0xc7')](_0xf633('0xce'))){_0x1a5228['limit']=qs[_0xf633('0x21')](_0x34a062['query'][_0xf633('0x21')]);_0x1a5228[_0xf633('0x1e')]=qs['offset'](_0x34a062['query'][_0xf633('0x1e')]);}_0x1a5228[_0xf633('0xc3')]=qs['sort'](_0x34a062[_0xf633('0x47')][_0xf633('0xc4')]);_0x1a5228[_0xf633('0x3f')]=qs[_0xf633('0x57')](_[_0xf633('0xc5')](_0x34a062[_0xf633('0x47')],_0x51d60a['filters']));_0x1a5228[_0xf633('0x3f')][_0xf633('0xd4')]=_0x4c0ff7['id'];if(_0x34a062[_0xf633('0x47')][_0xf633('0x2e')]){_0x1a5228['where']=_['merge'](_0x1a5228[_0xf633('0x3f')],{'$or':_[_0xf633('0x38')](_0x1a5228[_0xf633('0x45')],function(_0x1ab539){var _0x1ff927={};_0x1ff927[_0x1ab539]={'$like':'%'+_0x34a062[_0xf633('0x47')][_0xf633('0x2e')]+'%'};return _0x1ff927;})});}_0x1a5228=_['merge']({},_0x1a5228,_0x34a062[_0xf633('0x5a')]);return db[_0xf633('0xd6')]['count']({'where':_0x1a5228['where']})['then'](function(_0xecc3f8){_0x6c338c[_0xf633('0x20')]=_0xecc3f8;if(_0x34a062[_0xf633('0x47')]['includeAll']){_0x1a5228[_0xf633('0x41')]=[{'all':!![]}];}return db[_0xf633('0xd6')][_0xf633('0x46')](_0x1a5228);})[_0xf633('0xf')](function(_0x3c0946){_0x6c338c[_0xf633('0x4b')]=_0x3c0946;return _0x6c338c;});}})[_0xf633('0xf')](respondWithFilteredResult(_0x15b3d4,_0x1a5228))[_0xf633('0x1a')](handleError(_0x15b3d4,null));};exports[_0xf633('0xd7')]=function(_0x2ca629,_0xd39d9){var _0x4ee84b={};var _0x29f174={};var _0x973824;var _0x4a2064;return db[_0xf633('0x37')][_0xf633('0xc2')]({'where':{'id':_0x2ca629[_0xf633('0x53')]['id']}})['then'](handleEntityNotFound(_0xd39d9,null))[_0xf633('0xf')](function(_0x4f5c83){if(_0x4f5c83){_0x973824=_0x4f5c83;_0x29f174[_0xf633('0x54')]=_[_0xf633('0x55')](db[_0xf633('0xd8')][_0xf633('0x56')]);_0x29f174[_0xf633('0x47')]=_[_0xf633('0x55')](_0x2ca629[_0xf633('0x47')]);_0x29f174[_0xf633('0x57')]=_[_0xf633('0x58')](_0x29f174['model'],_0x29f174[_0xf633('0x47')]);_0x4ee84b['attributes']=_['intersection'](_0x29f174['model'],qs[_0xf633('0x59')](_0x2ca629[_0xf633('0x47')]['fields']));_0x4ee84b[_0xf633('0x45')]=_0x4ee84b[_0xf633('0x45')]['length']?_0x4ee84b[_0xf633('0x45')]:_0x29f174[_0xf633('0x54')];_0x4ee84b[_0xf633('0xc3')]=qs[_0xf633('0xc4')](_0x2ca629[_0xf633('0x47')]['sort']);_0x4ee84b[_0xf633('0x3f')]=qs['filters'](_[_0xf633('0xc5')](_0x2ca629[_0xf633('0x47')],_0x29f174[_0xf633('0x57')]));if(_0x2ca629[_0xf633('0x47')][_0xf633('0x2e')]){_0x4ee84b['where']=_[_0xf633('0xc6')](_0x4ee84b['where'],{'$or':_[_0xf633('0x38')](_0x4ee84b[_0xf633('0x45')],function(_0xcdfc00){var _0x4c868b={};_0x4c868b[_0xcdfc00]={'$like':'%'+_0x2ca629[_0xf633('0x47')][_0xf633('0x2e')]+'%'};return _0x4c868b;})});}_0x4ee84b=_[_0xf633('0xc6')]({},_0x4ee84b,_0x2ca629['options']);return _0x973824['getChatInteractions'](_0x4ee84b);}})[_0xf633('0xf')](function(_0x57f302){if(_0x57f302){_0x4a2064=_0x57f302['length'];if(!_0x2ca629[_0xf633('0x47')][_0xf633('0xc7')](_0xf633('0xce'))){_0x4ee84b[_0xf633('0x21')]=qs['limit'](_0x2ca629[_0xf633('0x47')][_0xf633('0x21')]);_0x4ee84b[_0xf633('0x1e')]=qs[_0xf633('0x1e')](_0x2ca629['query'][_0xf633('0x1e')]);}return _0x973824[_0xf633('0xd7')](_0x4ee84b);}})[_0xf633('0xf')](function(_0x2d21fc){if(_0x2d21fc){return _0x2d21fc?{'count':_0x4a2064,'rows':_0x2d21fc}:null;}})[_0xf633('0xf')](respondWithResult(_0xd39d9,null))['catch'](handleError(_0xd39d9,null));};exports[_0xf633('0xd9')]=function(_0x294faf,_0x3853d4){var _0x5a130a={};var _0x5f48be={};var _0xf385d;var _0x51c51f;return db[_0xf633('0x37')][_0xf633('0xc2')]({'where':{'id':_0x294faf[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x3853d4,null))[_0xf633('0xf')](function(_0x448038){if(_0x448038){_0xf385d=_0x448038;_0x5f48be[_0xf633('0x54')]=_[_0xf633('0x55')](db[_0xf633('0xda')][_0xf633('0x56')]);_0x5f48be[_0xf633('0x47')]=_[_0xf633('0x55')](_0x294faf[_0xf633('0x47')]);_0x5f48be['filters']=_['intersection'](_0x5f48be[_0xf633('0x54')],_0x5f48be[_0xf633('0x47')]);_0x5a130a[_0xf633('0x45')]=_[_0xf633('0x58')](_0x5f48be[_0xf633('0x54')],qs[_0xf633('0x59')](_0x294faf[_0xf633('0x47')]['fields']));_0x5a130a['attributes']=_0x5a130a[_0xf633('0x45')][_0xf633('0x49')]?_0x5a130a[_0xf633('0x45')]:_0x5f48be['model'];_0x5a130a[_0xf633('0xc3')]=qs['sort'](_0x294faf[_0xf633('0x47')][_0xf633('0xc4')]);_0x5a130a[_0xf633('0x3f')]=qs['filters'](_['pick'](_0x294faf[_0xf633('0x47')],_0x5f48be[_0xf633('0x57')]));if(_0x294faf[_0xf633('0x47')][_0xf633('0x2e')]){_0x5a130a[_0xf633('0x3f')]=_[_0xf633('0xc6')](_0x5a130a[_0xf633('0x3f')],{'$or':_[_0xf633('0x38')](_0x5a130a[_0xf633('0x45')],function(_0x4ce0bc){var _0x23c343={};_0x23c343[_0x4ce0bc]={'$like':'%'+_0x294faf[_0xf633('0x47')][_0xf633('0x2e')]+'%'};return _0x23c343;})});}_0x5a130a=_[_0xf633('0xc6')]({},_0x5a130a,_0x294faf['options']);return _0xf385d[_0xf633('0xd9')](_0x5a130a);}})[_0xf633('0xf')](function(_0xf841af){if(_0xf841af){_0x51c51f=_0xf841af[_0xf633('0x49')];if(!_0x294faf[_0xf633('0x47')][_0xf633('0xc7')]('nolimit')){_0x5a130a['limit']=qs['limit'](_0x294faf[_0xf633('0x47')][_0xf633('0x21')]);_0x5a130a[_0xf633('0x1e')]=qs['offset'](_0x294faf[_0xf633('0x47')][_0xf633('0x1e')]);}return _0xf385d['getOpenchannelInteractions'](_0x5a130a);}})[_0xf633('0xf')](function(_0x36e062){if(_0x36e062){return _0x36e062?{'count':_0x51c51f,'rows':_0x36e062}:null;}})['then'](respondWithResult(_0x3853d4,null))[_0xf633('0x1a')](handleError(_0x3853d4,null));};exports[_0xf633('0xdb')]=function(_0x59bd31,_0x16bec0){var _0x33646b={'raw':!![],'where':{}};var _0x3c20e4={};var _0x5d027f={'count':0x0,'rows':[]};return db[_0xf633('0x37')][_0xf633('0xc2')]({'where':{'id':_0x59bd31[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x16bec0,null))[_0xf633('0xf')](function(_0x5b8c35){if(_0x5b8c35){_0x3c20e4[_0xf633('0x54')]=_['keys'](db[_0xf633('0xdc')][_0xf633('0x56')]);_0x3c20e4['query']=_['keys'](_0x59bd31[_0xf633('0x47')]);_0x3c20e4[_0xf633('0x57')]=_[_0xf633('0x58')](_0x3c20e4[_0xf633('0x54')],_0x3c20e4[_0xf633('0x47')]);_0x33646b[_0xf633('0x45')]=_['intersection'](_0x3c20e4[_0xf633('0x54')],qs[_0xf633('0x59')](_0x59bd31['query'][_0xf633('0x59')]));_0x33646b[_0xf633('0x45')]=_0x33646b['attributes'][_0xf633('0x49')]?_0x33646b['attributes']:_0x3c20e4['model'];if(!_0x59bd31[_0xf633('0x47')][_0xf633('0xc7')](_0xf633('0xce'))){_0x33646b[_0xf633('0x21')]=qs[_0xf633('0x21')](_0x59bd31[_0xf633('0x47')][_0xf633('0x21')]);_0x33646b['offset']=qs[_0xf633('0x1e')](_0x59bd31[_0xf633('0x47')][_0xf633('0x1e')]);}_0x33646b[_0xf633('0xc3')]=qs[_0xf633('0xc4')](_0x59bd31[_0xf633('0x47')]['sort']);_0x33646b[_0xf633('0x3f')]=qs[_0xf633('0x57')](_[_0xf633('0xc5')](_0x59bd31[_0xf633('0x47')],_0x3c20e4[_0xf633('0x57')]));_0x33646b['where'][_0xf633('0xd4')]=_0x5b8c35['id'];if(_0x59bd31['query'][_0xf633('0x2e')]){_0x33646b[_0xf633('0x3f')]=_[_0xf633('0xc6')](_0x33646b[_0xf633('0x3f')],{'$or':_[_0xf633('0x38')](_0x33646b['attributes'],function(_0x2b39bc){var _0x58d9b5={};_0x58d9b5[_0x2b39bc]={'$like':'%'+_0x59bd31[_0xf633('0x47')]['filter']+'%'};return _0x58d9b5;})});}_0x33646b=_[_0xf633('0xc6')]({},_0x33646b,_0x59bd31[_0xf633('0x5a')]);return db[_0xf633('0xdc')][_0xf633('0x20')]({'where':_0x33646b[_0xf633('0x3f')]})[_0xf633('0xf')](function(_0x2c721f){_0x5d027f[_0xf633('0x20')]=_0x2c721f;if(_0x59bd31[_0xf633('0x47')][_0xf633('0x40')]){_0x33646b[_0xf633('0x41')]=[{'all':!![]}];}return db[_0xf633('0xdc')]['findAll'](_0x33646b);})[_0xf633('0xf')](function(_0x1d81bc){_0x5d027f['rows']=_0x1d81bc;return _0x5d027f;});}})['then'](respondWithFilteredResult(_0x16bec0,_0x33646b))['catch'](handleError(_0x16bec0,null));};exports[_0xf633('0xdd')]=function(_0x3dc9ac,_0x3bc6cc){var _0x5d27f3={};var _0x2cb59e={};var _0x4af614;var _0x346538;return db[_0xf633('0x37')]['findOne']({'where':{'id':_0x3dc9ac['params']['id']}})['then'](handleEntityNotFound(_0x3bc6cc,null))[_0xf633('0xf')](function(_0x430b05){if(_0x430b05){_0x4af614=_0x430b05;_0x2cb59e[_0xf633('0x54')]=_[_0xf633('0x55')](db[_0xf633('0xde')][_0xf633('0x56')]);_0x2cb59e['query']=_[_0xf633('0x55')](_0x3dc9ac['query']);_0x2cb59e[_0xf633('0x57')]=_['intersection'](_0x2cb59e['model'],_0x2cb59e['query']);_0x5d27f3[_0xf633('0x45')]=_[_0xf633('0x58')](_0x2cb59e[_0xf633('0x54')],qs[_0xf633('0x59')](_0x3dc9ac['query'][_0xf633('0x59')]));_0x5d27f3[_0xf633('0x45')]=_0x5d27f3[_0xf633('0x45')]['length']?_0x5d27f3['attributes']:_0x2cb59e[_0xf633('0x54')];_0x5d27f3[_0xf633('0xc3')]=qs[_0xf633('0xc4')](_0x3dc9ac[_0xf633('0x47')][_0xf633('0xc4')]);_0x5d27f3['where']=qs['filters'](_[_0xf633('0xc5')](_0x3dc9ac[_0xf633('0x47')],_0x2cb59e[_0xf633('0x57')]));if(_0x3dc9ac[_0xf633('0x47')][_0xf633('0x2e')]){_0x5d27f3[_0xf633('0x3f')]=_[_0xf633('0xc6')](_0x5d27f3[_0xf633('0x3f')],{'$or':_[_0xf633('0x38')](_0x5d27f3[_0xf633('0x45')],function(_0x5946e1){var _0x5afa8b={};_0x5afa8b[_0x5946e1]={'$like':'%'+_0x3dc9ac[_0xf633('0x47')][_0xf633('0x2e')]+'%'};return _0x5afa8b;})});}_0x5d27f3=_[_0xf633('0xc6')]({},_0x5d27f3,_0x3dc9ac[_0xf633('0x5a')]);return _0x4af614[_0xf633('0xdd')](_0x5d27f3);}})[_0xf633('0xf')](function(_0x50183c){if(_0x50183c){_0x346538=_0x50183c['length'];if(!_0x3dc9ac['query'][_0xf633('0xc7')](_0xf633('0xce'))){_0x5d27f3[_0xf633('0x21')]=qs[_0xf633('0x21')](_0x3dc9ac[_0xf633('0x47')][_0xf633('0x21')]);_0x5d27f3[_0xf633('0x1e')]=qs[_0xf633('0x1e')](_0x3dc9ac['query'][_0xf633('0x1e')]);}return _0x4af614['getSmsInteractions'](_0x5d27f3);}})['then'](function(_0x175103){if(_0x175103){return _0x175103?{'count':_0x346538,'rows':_0x175103}:null;}})[_0xf633('0xf')](respondWithResult(_0x3bc6cc,null))[_0xf633('0x1a')](handleError(_0x3bc6cc,null));};exports[_0xf633('0xdf')]=function(_0x98004d,_0x15b976){var _0x30535e={};var _0x1291c0={};var _0x553288;var _0x5c5dac;return db['User']['findOne']({'where':{'id':_0x98004d[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x15b976,null))[_0xf633('0xf')](function(_0x35c180){if(_0x35c180){_0x553288=_0x35c180;_0x1291c0[_0xf633('0x54')]=_[_0xf633('0x55')](db['FaxInteraction'][_0xf633('0x56')]);_0x1291c0['query']=_[_0xf633('0x55')](_0x98004d[_0xf633('0x47')]);_0x1291c0[_0xf633('0x57')]=_[_0xf633('0x58')](_0x1291c0[_0xf633('0x54')],_0x1291c0[_0xf633('0x47')]);_0x30535e[_0xf633('0x45')]=_['intersection'](_0x1291c0[_0xf633('0x54')],qs['fields'](_0x98004d[_0xf633('0x47')]['fields']));_0x30535e['attributes']=_0x30535e[_0xf633('0x45')][_0xf633('0x49')]?_0x30535e[_0xf633('0x45')]:_0x1291c0[_0xf633('0x54')];_0x30535e[_0xf633('0xc3')]=qs['sort'](_0x98004d[_0xf633('0x47')]['sort']);_0x30535e[_0xf633('0x3f')]=qs[_0xf633('0x57')](_[_0xf633('0xc5')](_0x98004d[_0xf633('0x47')],_0x1291c0[_0xf633('0x57')]));if(_0x98004d[_0xf633('0x47')][_0xf633('0x2e')]){_0x30535e[_0xf633('0x3f')]=_[_0xf633('0xc6')](_0x30535e[_0xf633('0x3f')],{'$or':_[_0xf633('0x38')](_0x30535e[_0xf633('0x45')],function(_0x4a8871){var _0x31fce3={};_0x31fce3[_0x4a8871]={'$like':'%'+_0x98004d[_0xf633('0x47')]['filter']+'%'};return _0x31fce3;})});}_0x30535e=_[_0xf633('0xc6')]({},_0x30535e,_0x98004d[_0xf633('0x5a')]);return _0x553288['getFaxInteractions'](_0x30535e);}})[_0xf633('0xf')](function(_0xc04d15){if(_0xc04d15){_0x5c5dac=_0xc04d15[_0xf633('0x49')];if(!_0x98004d[_0xf633('0x47')][_0xf633('0xc7')](_0xf633('0xce'))){_0x30535e[_0xf633('0x21')]=qs['limit'](_0x98004d['query']['limit']);_0x30535e[_0xf633('0x1e')]=qs['offset'](_0x98004d[_0xf633('0x47')]['offset']);}return _0x553288[_0xf633('0xdf')](_0x30535e);}})[_0xf633('0xf')](function(_0x1a4885){if(_0x1a4885){return _0x1a4885?{'count':_0x5c5dac,'rows':_0x1a4885}:null;}})[_0xf633('0xf')](respondWithResult(_0x15b976,null))[_0xf633('0x1a')](handleError(_0x15b976,null));};exports[_0xf633('0xe0')]=function(_0x112f21,_0x4fca9b){var _0x4023fa={};var _0x2c73a0={};var _0x11059e;var _0x2521f9;return db[_0xf633('0x37')][_0xf633('0xc2')]({'where':{'id':_0x112f21[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x4fca9b,null))[_0xf633('0xf')](function(_0x7976b8){if(_0x7976b8){_0x11059e=_0x7976b8;_0x2c73a0[_0xf633('0x54')]=_['keys'](db[_0xf633('0xe1')][_0xf633('0x56')]);_0x2c73a0['query']=_['keys'](_0x112f21[_0xf633('0x47')]);_0x2c73a0[_0xf633('0x57')]=_[_0xf633('0x58')](_0x2c73a0[_0xf633('0x54')],_0x2c73a0['query']);_0x4023fa[_0xf633('0x45')]=_[_0xf633('0x58')](_0x2c73a0[_0xf633('0x54')],qs[_0xf633('0x59')](_0x112f21[_0xf633('0x47')][_0xf633('0x59')]));_0x4023fa[_0xf633('0x45')]=_0x4023fa['attributes'][_0xf633('0x49')]?_0x4023fa['attributes']:_0x2c73a0[_0xf633('0x54')];_0x4023fa[_0xf633('0xc3')]=qs[_0xf633('0xc4')](_0x112f21[_0xf633('0x47')]['sort']);_0x4023fa[_0xf633('0x3f')]=qs[_0xf633('0x57')](_['pick'](_0x112f21['query'],_0x2c73a0[_0xf633('0x57')]));if(_0x112f21[_0xf633('0x47')][_0xf633('0x2e')]){_0x4023fa[_0xf633('0x3f')]=_[_0xf633('0xc6')](_0x4023fa['where'],{'$or':_[_0xf633('0x38')](_0x4023fa['attributes'],function(_0xa67e0f){var _0x5cfa6f={};_0x5cfa6f[_0xa67e0f]={'$like':'%'+_0x112f21[_0xf633('0x47')]['filter']+'%'};return _0x5cfa6f;})});}_0x4023fa=_[_0xf633('0xc6')]({},_0x4023fa,_0x112f21[_0xf633('0x5a')]);return _0x11059e['getWhatsappInteractions'](_0x4023fa);}})[_0xf633('0xf')](function(_0x545c4d){if(_0x545c4d){_0x2521f9=_0x545c4d[_0xf633('0x49')];if(!_0x112f21[_0xf633('0x47')]['hasOwnProperty'](_0xf633('0xce'))){_0x4023fa[_0xf633('0x21')]=qs[_0xf633('0x21')](_0x112f21[_0xf633('0x47')][_0xf633('0x21')]);_0x4023fa[_0xf633('0x1e')]=qs[_0xf633('0x1e')](_0x112f21['query'][_0xf633('0x1e')]);}return _0x11059e[_0xf633('0xe0')](_0x4023fa);}})[_0xf633('0xf')](function(_0x579f48){if(_0x579f48){return _0x579f48?{'count':_0x2521f9,'rows':_0x579f48}:null;}})[_0xf633('0xf')](respondWithResult(_0x4fca9b,null))[_0xf633('0x1a')](handleError(_0x4fca9b,null));};exports[_0xf633('0xe2')]=function(_0x1bed37,_0x3cfd22,_0x4b5273){var _0x1cf2c9;var _0x297407;var _0x23e0be;var _0x5a9be1=!_[_0xf633('0x64')](_0x1bed37['params']['id'])?_0x1bed37[_0xf633('0x53')]['id']:!_['isNil'](_0x1bed37[_0xf633('0x29')]['id'])?_0x1bed37[_0xf633('0x29')]['id']:null;return db[_0xf633('0x37')]['find']({'where':{'id':_0x5a9be1,'role':{'$or':[_0xf633('0x27'),'user',_0xf633('0x2b')]}},'attributes':['id',_0xf633('0x33'),_0xf633('0xe3'),_0xf633('0xe4'),_0xf633('0x26'),'internal',_0xf633('0x94')]})['then'](function(_0x4502f1){if(_0x4502f1){if(_0x4502f1['role']===_0xf633('0x2b')){_0x1cf2c9=_0x4502f1;if(_0x1bed37[_0xf633('0x5c')][_0xf633('0xa2')]){_0x23e0be=util['format'](_0xf633('0xe5'),_0x1cf2c9[_0x1bed37['body'][_0xf633('0xa2')]]);}else if(_0x1bed37[_0xf633('0x5c')][_0xf633('0xe6')]){_0x23e0be=util[_0xf633('0xa0')](_0xf633('0xa1'),_0x1bed37['body'][_0xf633('0xe6')]);}else{_0x23e0be=util['format'](_0xf633('0xa1'),_0x1cf2c9[_0xf633('0x33')]);}socket['to'](util[_0xf633('0xa0')](_0xf633('0xe7'),_0x1cf2c9[_0xf633('0x33')]))[_0xf633('0xa8')](_0xf633('0xe8'),{'user':{'id':_0x1cf2c9['id'],'name':_0x1cf2c9[_0xf633('0x33')]},'ip':_0x1bed37['headers'][_0xf633('0xe9')]||_0x1bed37[_0xf633('0xea')]['remoteAddress']||_0x1bed37[_0xf633('0xeb')]['remoteAddress']||_0x1bed37['connection'][_0xf633('0xeb')][_0xf633('0xec')]});return db[_0xf633('0xa4')]['destroy']({'where':{'membername':_0x1cf2c9[_0xf633('0x33')]},'individualHooks':!![]});}}else{throw new db['Sequelize'][(_0xf633('0x8a'))](_0xf633('0xed'));}})[_0xf633('0xf')](function(){if(_0x1cf2c9){return _0x1cf2c9[_0xf633('0xee')]({'raw':!![]});}})[_0xf633('0xf')](function(_0x269f83){if(_0x1cf2c9){var _0x589009=[];if(_0x269f83){_0x297407=_0x269f83;if(_0x297407[_0xf633('0x49')]){for(var _0x545f1b=0x0;_0x545f1b<_0x297407[_0xf633('0x49')];_0x545f1b++){_0x589009['push']({'membername':_0x1cf2c9['name'],'UserId':_0x1cf2c9['id'],'queue_name':_0x297407[_0x545f1b][_0xf633('0x33')],'VoiceQueueId':_0x297407[_0x545f1b]['id'],'interface':_0x23e0be,'paused':_0x1cf2c9[_0xf633('0x94')]||![],'penalty':_0x297407[_0x545f1b][_0xf633('0xef')]||0x0});}return BPromise[_0xf633('0x82')](_0x589009,function(_0x59ffa9){return db[_0xf633('0xa4')][_0xf633('0xa5')](_0x59ffa9);});}}}})[_0xf633('0xf')](function(){if(_0x1cf2c9){return db[_0xf633('0xf0')][_0xf633('0x46')]({'where':{'membername':_0x1cf2c9['name'],'exitAt':null}});}})[_0xf633('0xf')](function(_0x5b93b2){if(_0x1cf2c9){var _0x4efba9=[];_0x5b93b2[_0xf633('0xf1')](function(_0x421a98){_0x4efba9[_0xf633('0x4a')](_0x421a98['update']({'exitAt':moment()[_0xf633('0xa0')](_0xf633('0xf2'))}));});return BPromise[_0xf633('0x51')](_0x4efba9);}})[_0xf633('0xf')](function(){if(_0x1cf2c9){var _0x4d656e=[];var _0xe231df=[];var _0x52b5db=utils[_0xf633('0xf3')]();var _0x1b00f0={'membername':_0x1cf2c9[_0xf633('0x33')],'interface':_0x23e0be,'enterAt':moment()['format'](_0xf633('0xf2')),'role':_0x1cf2c9[_0xf633('0x26')],'internal':_0x1cf2c9[_0xf633('0x63')]};_0x52b5db['forEach'](function(_0x30909a){_0x4d656e['push'](_['merge']({'channel':_0x30909a,'type':_0xf633('0xf4'),'data1':_0x1bed37['body'][_0xf633('0xf5')],'data2':_0x23e0be},_0x1b00f0));if(_0x1cf2c9[_0xf633('0x94')]){_0xe231df[_0xf633('0x4a')](_[_0xf633('0xc6')]({'channel':_0x30909a,'type':_0xf633('0xf6'),'data1':_0xf633('0xf7')},_0x1b00f0));}});return db['MemberReport'][_0xf633('0x80')](_0x4d656e[_0xf633('0xc0')](_0xe231df),{'individualHooks':!![]});}})[_0xf633('0xf')](function(){if(_0x1cf2c9){return _0x1cf2c9[_0xf633('0x23')]({'online':!![],'lastLoginAt':moment()[_0xf633('0xa0')](_0xf633('0xf2')),'voicePause':_0x1cf2c9[_0xf633('0x94')]||![],'mailPause':_0x1cf2c9[_0xf633('0x94')]||![],'chatPause':_0x1cf2c9['loginInPause']||![],'faxPause':_0x1cf2c9['loginInPause']||![],'smsPause':_0x1cf2c9[_0xf633('0x94')]||![],'openchannelPause':_0x1cf2c9[_0xf633('0x94')]||![],'whatsappPause':_0x1cf2c9[_0xf633('0x94')]||![],'pauseType':_0x1cf2c9[_0xf633('0x94')]?_0xf633('0xf7'):null,'interface':_0x23e0be,'lastPauseAt':moment()[_0xf633('0xa0')]('YYYY-MM-DD\x20HH:mm:ss')});}})[_0xf633('0xf')](function(_0xbef56f){if(_0x1bed37[_0xf633('0xf8')]){return _0x4b5273();}else{return BPromise['resolve'](_0xbef56f)[_0xf633('0xf')](respondWithResult(_0x3cfd22,null));}})['catch'](handleError(_0x3cfd22,null));};exports[_0xf633('0xf9')]=function(_0x1d0f03,_0x49081d){var _0x3336d7;return db['User']['find']({'where':{'id':_0x1d0f03['params']['id'],'role':_0xf633('0x2b')},'attributes':['id',_0xf633('0x33'),'role']})[_0xf633('0xf')](handleEntityNotFound(_0x49081d,null))[_0xf633('0xf')](function(_0x26f48a){if(_0x26f48a){_0x3336d7=_0x26f48a;return db[_0xf633('0xa4')][_0xf633('0x24')]({'where':{'membername':_0x3336d7[_0xf633('0x33')]},'individualHooks':!![]});}})[_0xf633('0xf')](function(){return db[_0xf633('0xf0')][_0xf633('0x46')]({'where':{'membername':_0x3336d7[_0xf633('0x33')],'exitAt':null}});})[_0xf633('0xf')](function(_0x5d31fb){var _0x8da9d0=[];_0x5d31fb['forEach'](function(_0x96f725){_0x8da9d0[_0xf633('0x4a')](_0x96f725[_0xf633('0x23')]({'exitAt':moment()[_0xf633('0xa0')](_0xf633('0xf2'))}));});return BPromise[_0xf633('0x51')](_0x8da9d0);})['then'](function(){return _0x3336d7['update']({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})['then'](respondWithResult(_0x49081d,null))[_0xf633('0x1a')](handleError(_0x49081d,null));};exports['pause']=function(_0x345bbe,_0x56784c){var _0x1fa610;return db[_0xf633('0xa4')][_0xf633('0x23')]({'paused':0x1},{'where':{'UserId':_0x345bbe[_0xf633('0x53')]['id']},'individualHooks':!![]})[_0xf633('0xf')](function(){return db[_0xf633('0x37')][_0xf633('0x32')]({'where':{'id':_0x345bbe[_0xf633('0x53')]['id'],'role':_0xf633('0x2b')},'attributes':['id','name',_0xf633('0x26'),_0xf633('0x63'),'interface']});})[_0xf633('0xf')](handleEntityNotFound(_0x56784c,null))[_0xf633('0xf')](function(_0x4a5cbf){if(_0x4a5cbf){_0x1fa610=_0x4a5cbf;return respondWithRpcPromise(_0xf633('0xfa'),_0xf633('0xfb'),{'id':_0x1fa610['id'],'name':_0x1fa610[_0xf633('0x33')],'pause':!![]});}})[_0xf633('0xf')](function(){if(_0x1fa610){return db[_0xf633('0xf0')]['findAll']({'where':{'membername':_0x1fa610[_0xf633('0x33')],'type':_0xf633('0xf6'),'exitAt':null}});}})[_0xf633('0xf')](function(_0x7ba270){if(_0x7ba270[_0xf633('0x49')]){var _0xe603ff=moment()[_0xf633('0xa0')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0xf00c1a=0x0,_0x48a16e=_0x7ba270[_0xf633('0x49')];_0xf00c1a<_0x48a16e;_0xf00c1a++){_0x7ba270[_0xf00c1a]['updateAttributes']({'exitAt':_0xe603ff});}}})[_0xf633('0xf')](function(){var _0x910f12=[];var _0x22aa12=utils[_0xf633('0xf3')]();_0x22aa12[_0xf633('0xf1')](function(_0x4963e6){_0x910f12['push']({'channel':_0x4963e6,'membername':_0x1fa610['name'],'interface':_[_0xf633('0x64')](_0x1fa610[_0xf633('0xa2')])?util[_0xf633('0xa0')]('SIP/%s',_0x1fa610[_0xf633('0x33')]):_0x1fa610[_0xf633('0xa2')],'type':_0xf633('0xf6'),'enterAt':moment()[_0xf633('0xa0')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x345bbe['body'][_0xf633('0x3a')]||'DEFAULT\x20PAUSE','role':_0x1fa610[_0xf633('0x26')],'internal':_0x1fa610[_0xf633('0x63')]});});return db[_0xf633('0xf0')][_0xf633('0x80')](_0x910f12,{'individualHooks':!![]});})[_0xf633('0xf')](function(){return _0x1fa610[_0xf633('0x23')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x345bbe['body']['type']||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0xf633('0xa0')]('YYYY-MM-DD\x20HH:mm:ss')});})['then'](respondWithResult(_0x56784c,null))[_0xf633('0x1a')](handleError(_0x56784c,null));};exports[_0xf633('0xfc')]=function(_0x169df7,_0x2f3374){var _0x417e06;return db[_0xf633('0x37')][_0xf633('0x32')]({'where':{'id':_0x169df7[_0xf633('0x53')]['id']},'attributes':['id',_0xf633('0x33'),_0xf633('0x26'),_0xf633('0xa3'),'mailPause',_0xf633('0xfd'),_0xf633('0xfe'),_0xf633('0xff'),_0xf633('0x100'),_0xf633('0x101'),_0xf633('0x102'),_0xf633('0x103')]})['then'](handleEntityNotFound(_0x2f3374,null))[_0xf633('0xf')](function(_0xacf3df){if(_0xacf3df){_0x417e06=_0xacf3df;if(_0x169df7[_0xf633('0x5c')][_0xf633('0x92')]&&!utils[_0xf633('0x95')](_0x169df7['body'][_0xf633('0x92')])){throw new db[(_0xf633('0x89'))][(_0xf633('0x8a'))](_0xf633('0x96'));}switch(_0x169df7[_0xf633('0x5c')][_0xf633('0x92')]){case'voice':return respondWithRpcPromise('QueuePause',_0xf633('0xfc'),{'id':_0x417e06['id'],'name':_0x417e06['name'],'pause':![]})[_0xf633('0xf')](function(){return db[_0xf633('0xa4')]['update']({'paused':0x0},{'where':{'UserId':_0x417e06['id']},'individualHooks':!![]});})[_0xf633('0xf')](function(){return db[_0xf633('0xf0')][_0xf633('0x32')]({'where':{'channel':_0x169df7[_0xf633('0x5c')][_0xf633('0x92')],'membername':_0x417e06[_0xf633('0x33')],'type':_0xf633('0xf6'),'exitAt':null}});})[_0xf633('0xf')](function(_0x4e9db6){if(_0x4e9db6){return _0x4e9db6['update']({'exitAt':moment()[_0xf633('0xa0')](_0xf633('0xf2')),'data2':_0xf633('0x104')},{'individualHooks':!![]});}return null;})['then'](function(){return _0x417e06['update']({'voicePause':![]});});case'mail':case _0xf633('0x5b'):case _0xf633('0x4d'):case _0xf633('0x105'):case _0xf633('0x50'):case _0xf633('0x4f'):return db[_0xf633('0xf0')][_0xf633('0x32')]({'where':{'channel':_0x169df7[_0xf633('0x5c')][_0xf633('0x92')],'membername':_0x417e06[_0xf633('0x33')],'type':_0xf633('0xf6'),'exitAt':null}})[_0xf633('0xf')](function(_0x41e4e9){if(_0x41e4e9){return _0x41e4e9['update']({'exitAt':moment()['format'](_0xf633('0xf2')),'data2':'manual'},{'individualHooks':!![]});}return null;})[_0xf633('0xf')](function(){var _0x45c1a1={};_[_0xf633('0x106')](_0x45c1a1,util['format'](_0xf633('0x107'),_0x169df7[_0xf633('0x5c')][_0xf633('0x92')],_0xf633('0x108')),![]);return _0x417e06['update'](_0x45c1a1);});default:return respondWithRpcPromise(_0xf633('0xfa'),'unpause',{'id':_0x417e06['id'],'name':_0x417e06['name'],'pause':![]})[_0xf633('0xf')](function(){return db[_0xf633('0xa4')][_0xf633('0x23')]({'paused':0x0},{'where':{'UserId':_0x417e06['id']}});})[_0xf633('0xf')](function(){return db['MemberReport']['findAll']({'where':{'membername':_0x417e06[_0xf633('0x33')],'type':_0xf633('0xf6'),'exitAt':null}});})['then'](function(_0x399b55){var _0x17771e=[];_0x399b55[_0xf633('0xf1')](function(_0x3a0559){_0x17771e[_0xf633('0x4a')](_0x3a0559[_0xf633('0x23')]({'exitAt':moment()[_0xf633('0xa0')](_0xf633('0xf2')),'data2':'manual'}));});return BPromise[_0xf633('0x51')](_0x17771e);})['then'](function(){return _0x417e06[_0xf633('0x23')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0xf633('0xf')](respondWithResult(_0x2f3374,null))[_0xf633('0x1a')](handleError(_0x2f3374,null));};exports[_0xf633('0x109')]=function(_0x45bb42,_0x5ee180){var _0x2de94b={};var _0x191fde={};var _0x406006;var _0x50e18e;return db[_0xf633('0x37')][_0xf633('0xc2')]({'where':{'id':_0x45bb42[_0xf633('0x53')]['id']}})['then'](handleEntityNotFound(_0x5ee180,null))[_0xf633('0xf')](function(_0x1a711c){if(_0x1a711c){_0x406006=_0x1a711c;_0x191fde[_0xf633('0x54')]=_[_0xf633('0x55')](db['Team'][_0xf633('0x56')]);_0x191fde[_0xf633('0x47')]=_[_0xf633('0x55')](_0x45bb42['query']);_0x191fde[_0xf633('0x57')]=_[_0xf633('0x58')](_0x191fde['model'],_0x191fde[_0xf633('0x47')]);_0x2de94b[_0xf633('0x45')]=_[_0xf633('0x58')](_0x191fde[_0xf633('0x54')],qs[_0xf633('0x59')](_0x45bb42[_0xf633('0x47')][_0xf633('0x59')]));_0x2de94b[_0xf633('0x45')]=_0x2de94b[_0xf633('0x45')][_0xf633('0x49')]?_0x2de94b[_0xf633('0x45')]:_0x191fde[_0xf633('0x54')];_0x2de94b[_0xf633('0xc3')]=qs[_0xf633('0xc4')](_0x45bb42[_0xf633('0x47')][_0xf633('0xc4')]);_0x2de94b[_0xf633('0x3f')]=qs[_0xf633('0x57')](_['pick'](_0x45bb42[_0xf633('0x47')],_0x191fde[_0xf633('0x57')]));if(_0x45bb42[_0xf633('0x47')][_0xf633('0x2e')]){_0x2de94b[_0xf633('0x3f')]=_['merge'](_0x2de94b[_0xf633('0x3f')],{'$or':_[_0xf633('0x38')](_0x2de94b['attributes'],function(_0xf5aa27){var _0x2238d0={};_0x2238d0[_0xf5aa27]={'$like':'%'+_0x45bb42['query'][_0xf633('0x2e')]+'%'};return _0x2238d0;})});}_0x2de94b=_['merge']({},_0x2de94b,_0x45bb42[_0xf633('0x5a')]);return _0x406006[_0xf633('0x109')](_0x2de94b);}})[_0xf633('0xf')](function(_0x488b54){if(_0x488b54){_0x50e18e=_0x488b54['length'];if(!_0x45bb42[_0xf633('0x47')][_0xf633('0xc7')](_0xf633('0xce'))){_0x2de94b[_0xf633('0x21')]=qs[_0xf633('0x21')](_0x45bb42[_0xf633('0x47')][_0xf633('0x21')]);_0x2de94b[_0xf633('0x1e')]=qs[_0xf633('0x1e')](_0x45bb42['query'][_0xf633('0x1e')]);}return _0x406006[_0xf633('0x109')](_0x2de94b);}})[_0xf633('0xf')](function(_0x3a1eb5){if(_0x3a1eb5){return _0x3a1eb5?{'count':_0x50e18e,'rows':_0x3a1eb5}:null;}})['then'](respondWithResult(_0x5ee180,null))[_0xf633('0x1a')](handleError(_0x5ee180,null));};exports['addTeams']=function(_0x406e19,_0x4cc8a2){return db[_0xf633('0x37')][_0xf633('0x32')]({'where':{'id':_0x406e19[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x4cc8a2,null))[_0xf633('0xf')](function(_0x553448){if(_0x553448){var _0x45aeb0=_0x553448[_0xf633('0x25')]({'plain':!![]});return _0x553448['addTeams'](_0x406e19[_0xf633('0x5c')][_0xf633('0x5e')],_[_0xf633('0x10a')](_0x406e19['body'],[_0xf633('0x5e'),'id'])||{})[_0xf633('0xf')](function(){for(var _0x2687e4=0x0;_0x2687e4<_0x406e19[_0xf633('0x5c')][_0xf633('0x5e')][_0xf633('0x49')];_0x2687e4++){var _0x206fe6=[];var _0x369d9d={};db[_0xf633('0x10b')][_0xf633('0xc2')]({'where':{'id':_0x406e19[_0xf633('0x5c')]['ids'][_0x2687e4]}})[_0xf633('0xf')](function(_0x1de76d){_0x369d9d=_0x1de76d[_0xf633('0x4c')];_0x206fe6['push'](_0x1de76d[_0xf633('0xee')]()[_0xf633('0xf')](function(_0x2b120d){for(var _0x43c6ba=0x0;_0x43c6ba<_0x2b120d[_0xf633('0x49')];_0x43c6ba++){_0x2b120d[_0x43c6ba][_0xf633('0x10c')](_0xf633('0x92'),_0xf633('0x10d'));}return _0x2b120d;}));_0x206fe6[_0xf633('0x4a')](_0x1de76d[_0xf633('0x10e')]()['then'](function(_0xf14d7f){for(var _0x2f2451=0x0;_0x2f2451<_0xf14d7f['length'];_0x2f2451++){_0xf14d7f[_0x2f2451][_0xf633('0x10c')](_0xf633('0x92'),_0xf633('0x10f'));}return _0xf14d7f;}));_0x206fe6['push'](_0x1de76d[_0xf633('0x110')]()[_0xf633('0xf')](function(_0x5b2ec2){for(var _0x29abe6=0x0;_0x29abe6<_0x5b2ec2[_0xf633('0x49')];_0x29abe6++){_0x5b2ec2[_0x29abe6][_0xf633('0x10c')]('channel',_0xf633('0x111'));}return _0x5b2ec2;}));_0x206fe6['push'](_0x1de76d[_0xf633('0x112')]()[_0xf633('0xf')](function(_0x138d98){for(var _0x15ce99=0x0;_0x15ce99<_0x138d98['length'];_0x15ce99++){_0x138d98[_0x15ce99][_0xf633('0x10c')](_0xf633('0x92'),_0xf633('0x113'));}return _0x138d98;}));_0x206fe6['push'](_0x1de76d['getWhatsappQueues']()[_0xf633('0xf')](function(_0x5a125f){for(var _0x276bb1=0x0;_0x276bb1<_0x5a125f[_0xf633('0x49')];_0x276bb1++){_0x5a125f[_0x276bb1][_0xf633('0x10c')](_0xf633('0x92'),'Whatsapp');}return _0x5a125f;}));_0x206fe6[_0xf633('0x4a')](_0x1de76d[_0xf633('0x114')]()['then'](function(_0x14f17f){for(var _0x912374=0x0;_0x912374<_0x14f17f['length'];_0x912374++){_0x14f17f[_0x912374]['setDataValue'](_0xf633('0x92'),_0xf633('0x115'));}return _0x14f17f;}));_0x206fe6[_0xf633('0x4a')](_0x1de76d['getOpenchannelQueues']()[_0xf633('0xf')](function(_0x2dbdb5){for(var _0x55c4b3=0x0;_0x55c4b3<_0x2dbdb5[_0xf633('0x49')];_0x55c4b3++){_0x2dbdb5[_0x55c4b3][_0xf633('0x10c')](_0xf633('0x92'),_0xf633('0x116'));}return _0x2dbdb5;}));return BPromise['all'](_0x206fe6);})[_0xf633('0xf')](function(_0x11c545){var _0x336ae6=_[_0xf633('0x117')](_0x11c545);_0x206fe6=[];return db['sequelize'][_0xf633('0x118')](function(_0x591d9e){for(var _0x538875=0x0;_0x538875<_0x336ae6[_0xf633('0x49')];_0x538875++){_0x206fe6[_0xf633('0x4a')](_0x336ae6[_0x538875][_0xf633('0x119')](_0x45aeb0['id']),{'transaction':_0x591d9e});}return BPromise[_0xf633('0x51')](_0x206fe6)[_0xf633('0xf')](function(){if(_0x45aeb0['online']){return BPromise[_0xf633('0x82')](_[_0xf633('0x2e')](_0x336ae6,function(_0x54322a){return _0x54322a[_0xf633('0x11a')](_0xf633('0x92'))===_0xf633('0x10d');}),function(_0x1b0dd8){return db[_0xf633('0xa4')]['upsert']({'membername':_0x45aeb0[_0xf633('0x33')],'UserId':_0x45aeb0['id'],'queue_name':_0x1b0dd8[_0xf633('0x33')],'VoiceQueueId':_0x1b0dd8['id'],'interface':_[_0xf633('0x64')](_0x45aeb0[_0xf633('0xa2')])?util[_0xf633('0xa0')](_0xf633('0xa1'),_0x45aeb0['name']):_0x45aeb0[_0xf633('0xa2')],'paused':_0x45aeb0[_0xf633('0xa3')]||![],'penalty':_0x45aeb0[_0xf633('0x9a')]},{'transaction':_0x591d9e});});}else{return;}})[_0xf633('0xf')](function(){for(var _0x50dc24=0x0;_0x50dc24<_0x336ae6['length'];_0x50dc24++){var _0x424a48=_0x336ae6[_0x50dc24][_0xf633('0x11a')](_0xf633('0x92'));var _0x1bf08e=_0x424a48+_0xf633('0x9c');socket[_0xf633('0xa8')](_0xf633('0x29')+_0x424a48+'Queue:save',{'UserId':_0x45aeb0['id'],['queueField']:_0x336ae6[_0x50dc24]['id']});}});});})[_0xf633('0xf')](function(){db[_0xf633('0x11b')][_0xf633('0xc2')]({'where':{'teamId':_0x369d9d['id']}})['then'](function(_0x7e5558){if(_0x7e5558){db[_0xf633('0x11c')][_0xf633('0x7a')]({'UserId':_0x406e19[_0xf633('0x53')]['id'],'VoicePrefixId':_0x7e5558[_0xf633('0x11d')]});}});});}});}})['then'](respondWithStatusCode(_0x4cc8a2,null))[_0xf633('0x1a')](handleError(_0x4cc8a2,null));};exports['removeTeams']=function(_0x4fc755,_0xaf080c){return db['User'][_0xf633('0xc2')]({'where':{'id':_0x4fc755[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0xaf080c,null))['then'](function(_0x54cd97){if(_0x54cd97){var _0x37e1fe=_0x54cd97[_0xf633('0x25')]({'plain':!![]});var _0x266f8b=_0x4fc755[_0xf633('0x47')]['ids'];return _0x54cd97[_0xf633('0x11e')](_0x266f8b)[_0xf633('0xf')](function(){for(var _0x4bc337=0x0;_0x4bc337<_0x266f8b[_0xf633('0x49')];_0x4bc337++){var _0x28f319=[];var _0x134e48={};db[_0xf633('0x10b')][_0xf633('0xc2')]({'where':{'id':_0x266f8b[_0x4bc337]}})[_0xf633('0xf')](function(_0x29930e){_0x134e48=_0x29930e[_0xf633('0x4c')];_0x28f319[_0xf633('0x4a')](_0x29930e[_0xf633('0xee')]()[_0xf633('0xf')](function(_0x450538){for(var _0x52b919=0x0;_0x52b919<_0x450538[_0xf633('0x49')];_0x52b919++){_0x450538[_0x52b919]['setDataValue'](_0xf633('0x92'),'Voice');}return _0x450538;}));_0x28f319[_0xf633('0x4a')](_0x29930e[_0xf633('0x10e')]()[_0xf633('0xf')](function(_0x3a1360){for(var _0x542538=0x0;_0x542538<_0x3a1360[_0xf633('0x49')];_0x542538++){_0x3a1360[_0x542538]['setDataValue'](_0xf633('0x92'),_0xf633('0x10f'));}return _0x3a1360;}));_0x28f319['push'](_0x29930e['getMailQueues']()[_0xf633('0xf')](function(_0xfd2c4e){for(var _0xe3162d=0x0;_0xe3162d<_0xfd2c4e[_0xf633('0x49')];_0xe3162d++){_0xfd2c4e[_0xe3162d]['setDataValue'](_0xf633('0x92'),_0xf633('0x111'));}return _0xfd2c4e;}));_0x28f319['push'](_0x29930e[_0xf633('0x112')]()['then'](function(_0x5d6318){for(var _0x4c49e7=0x0;_0x4c49e7<_0x5d6318[_0xf633('0x49')];_0x4c49e7++){_0x5d6318[_0x4c49e7][_0xf633('0x10c')]('channel',_0xf633('0x113'));}return _0x5d6318;}));_0x28f319[_0xf633('0x4a')](_0x29930e[_0xf633('0x11f')]()[_0xf633('0xf')](function(_0x12e828){for(var _0x16f1d0=0x0;_0x16f1d0<_0x12e828[_0xf633('0x49')];_0x16f1d0++){_0x12e828[_0x16f1d0][_0xf633('0x10c')](_0xf633('0x92'),'Whatsapp');}return _0x12e828;}));_0x28f319[_0xf633('0x4a')](_0x29930e['getFaxQueues']()[_0xf633('0xf')](function(_0x26915c){for(var _0x3031e9=0x0;_0x3031e9<_0x26915c[_0xf633('0x49')];_0x3031e9++){_0x26915c[_0x3031e9][_0xf633('0x10c')](_0xf633('0x92'),_0xf633('0x115'));}return _0x26915c;}));_0x28f319[_0xf633('0x4a')](_0x29930e['getOpenchannelQueues']()[_0xf633('0xf')](function(_0xee002d){for(var _0x33a1f4=0x0;_0x33a1f4<_0xee002d['length'];_0x33a1f4++){_0xee002d[_0x33a1f4]['setDataValue'](_0xf633('0x92'),_0xf633('0x116'));}return _0xee002d;}));return BPromise[_0xf633('0x51')](_0x28f319);})[_0xf633('0xf')](function(_0x433a14){var _0x289b05=_[_0xf633('0x117')](_0x433a14);_0x28f319=[];return db[_0xf633('0x66')]['transaction'](function(_0x38c4bc){for(var _0x61ce69=0x0;_0x61ce69<_0x289b05[_0xf633('0x49')];_0x61ce69++){_0x28f319['push'](_0x289b05[_0x61ce69][_0xf633('0x120')](_0x37e1fe['id']),{'transaction':_0x38c4bc});}return BPromise['all'](_0x28f319)[_0xf633('0xf')](function(){if(_0x37e1fe[_0xf633('0x93')]){return BPromise[_0xf633('0x82')](_[_0xf633('0x2e')](_0x289b05,function(_0x3a6e55){return _0x3a6e55['getDataValue'](_0xf633('0x92'))===_0xf633('0x10d');}),function(_0x46fb44){return db[_0xf633('0xa4')][_0xf633('0x24')]({'where':{'VoiceQueueId':_0x46fb44['id'],'UserId':_0x37e1fe['id']},'transaction':_0x38c4bc});});}else{return;}})['then'](function(){db[_0xf633('0x11b')][_0xf633('0xc2')]({'where':{'teamId':_0x134e48['id']}})[_0xf633('0xf')](function(_0x51ffde){if(_0x51ffde){return db[_0xf633('0x11c')][_0xf633('0x24')]({'where':{'UserId':_0x37e1fe['id'],'VoicePrefixId':_0x51ffde[_0xf633('0x4c')]['VoicePrefixId']}});}});})[_0xf633('0xf')](function(){for(var _0x1b81cb=0x0;_0x1b81cb<_0x289b05[_0xf633('0x49')];_0x1b81cb++){var _0xed4af8=_0x289b05[_0x1b81cb][_0xf633('0x11a')]('channel');var _0x4a1c01=_0xed4af8+_0xf633('0x9c');socket[_0xf633('0xa8')](_0xf633('0x29')+_0xed4af8+_0xf633('0xa9'),{'UserId':_0x37e1fe['id'],['queueField']:_0x289b05[_0x1b81cb]['id']});}});});});}});}})[_0xf633('0xf')](respondWithStatusCode(_0xaf080c,null))['catch'](handleError(_0xaf080c,null));};exports[_0xf633('0x121')]=function(_0x7b9f24,_0x5ab41b){var _0x367152={};var _0x48945e={};var _0x46f442;var _0x5d0e4b;return db[_0xf633('0x37')]['findOne']({'where':{'id':_0x7b9f24[_0xf633('0x53')]['id']}})['then'](handleEntityNotFound(_0x5ab41b,null))[_0xf633('0xf')](function(_0x5f0b0b){if(_0x5f0b0b){_0x46f442=_0x5f0b0b;_0x48945e['model']=_[_0xf633('0x55')](db[_0xf633('0xc8')][_0xf633('0x56')]);_0x48945e[_0xf633('0x47')]=_[_0xf633('0x55')](_0x7b9f24['query']);_0x48945e[_0xf633('0x57')]=_[_0xf633('0x58')](_0x48945e[_0xf633('0x54')],_0x48945e[_0xf633('0x47')]);_0x367152[_0xf633('0x45')]=_['intersection'](_0x48945e['model'],qs[_0xf633('0x59')](_0x7b9f24[_0xf633('0x47')][_0xf633('0x59')]));_0x367152[_0xf633('0x45')]=_0x367152[_0xf633('0x45')]['length']?_0x367152[_0xf633('0x45')]:_0x48945e['model'];_0x367152[_0xf633('0xc3')]=qs['sort'](_0x7b9f24['query'][_0xf633('0xc4')]);_0x367152[_0xf633('0x3f')]=qs['filters'](_['pick'](_0x7b9f24[_0xf633('0x47')],_0x48945e[_0xf633('0x57')]));if(_0x7b9f24[_0xf633('0x47')][_0xf633('0x2e')]){_0x367152[_0xf633('0x3f')]=_[_0xf633('0xc6')](_0x367152[_0xf633('0x3f')],{'$or':_['map'](_0x367152[_0xf633('0x45')],function(_0x9cdb18){var _0x2f03c6={};_0x2f03c6[_0x9cdb18]={'$like':'%'+_0x7b9f24['query'][_0xf633('0x2e')]+'%'};return _0x2f03c6;})});}_0x367152=_['merge']({},_0x367152,_0x7b9f24['options']);return _0x46f442[_0xf633('0x121')](_0x367152);}})['then'](function(_0x41fb42){if(_0x41fb42){_0x5d0e4b=_0x41fb42[_0xf633('0x49')];if(!_0x7b9f24[_0xf633('0x47')][_0xf633('0xc7')](_0xf633('0xce'))){_0x367152[_0xf633('0x21')]=qs[_0xf633('0x21')](_0x7b9f24[_0xf633('0x47')][_0xf633('0x21')]);_0x367152[_0xf633('0x1e')]=qs[_0xf633('0x1e')](_0x7b9f24[_0xf633('0x47')][_0xf633('0x1e')]);}return _0x46f442[_0xf633('0x121')](_0x367152);}})[_0xf633('0xf')](function(_0x5f7ce4){if(_0x5f7ce4){return _0x5f7ce4?{'count':_0x5d0e4b,'rows':_0x5f7ce4}:null;}})[_0xf633('0xf')](respondWithResult(_0x5ab41b,null))['catch'](handleError(_0x5ab41b,null));};exports[_0xf633('0x122')]=function(_0x2effc1,_0x5456fa){var _0x518343={};var _0x139b14={};var _0x14e604;return db[_0xf633('0x37')][_0xf633('0xc2')]({'where':{'id':_0x2effc1['params']['id']}})['then'](handleEntityNotFound(_0x5456fa,null))[_0xf633('0xf')](function(_0x9b0d3e){if(_0x9b0d3e){_0x14e604=_0x9b0d3e;_0x139b14['model']=_[_0xf633('0x55')](db[_0xf633('0x37')][_0xf633('0x56')]);_0x139b14['query']=_[_0xf633('0x55')](_0x2effc1[_0xf633('0x47')]);_0x139b14[_0xf633('0x57')]=_[_0xf633('0x58')](_0x139b14[_0xf633('0x54')],_0x139b14[_0xf633('0x47')]);_0x518343[_0xf633('0x45')]=_[_0xf633('0x58')](_0x139b14[_0xf633('0x54')],qs[_0xf633('0x59')](_0x2effc1['query'][_0xf633('0x59')]));_0x518343[_0xf633('0x45')]=_0x518343[_0xf633('0x45')]['length']?_0x518343[_0xf633('0x45')]:_0x139b14[_0xf633('0x54')];_0x518343['order']=qs[_0xf633('0xc4')](_0x2effc1['query'][_0xf633('0xc4')]);_0x518343[_0xf633('0x3f')]=qs['filters'](_[_0xf633('0xc5')](_0x2effc1[_0xf633('0x47')],_0x139b14['filters']));if(_0x2effc1[_0xf633('0x47')][_0xf633('0x2e')]){_0x518343[_0xf633('0x3f')]=_[_0xf633('0xc6')](_0x518343['where'],{'$or':_['map'](_0x518343[_0xf633('0x45')],function(_0x35613f){var _0x36255d={};_0x36255d[_0x35613f]={'$like':'%'+_0x2effc1['query'][_0xf633('0x2e')]+'%'};return _0x36255d;})});}_0x518343['model']=db[_0xf633('0x37')];_0x518343['as']='Agents';_0x518343=_[_0xf633('0xc6')]({},_0x518343,_0x2effc1['options']);return _0x14e604[_0xf633('0xee')]({'include':[_0x518343]});}})[_0xf633('0xf')](function(_0x98fb22){if(_0x98fb22){var _0x1c8d3a={},_0x45b1ec=[];for(var _0x46eb7c=0x0;_0x46eb7c<_0x98fb22[_0xf633('0x49')];_0x46eb7c+=0x1){for(var _0x30d927=0x0,_0xe9af8a;_0x30d927<_0x98fb22[_0x46eb7c]['Agents'][_0xf633('0x49')];_0x30d927+=0x1){_0xe9af8a=_0x98fb22[_0x46eb7c][_0xf633('0x2a')][_0x30d927][_0xf633('0x25')]({'plain':!![]});_0x1c8d3a[_0xe9af8a['id']]=_0xe9af8a;}}_0x1c8d3a=_['values'](_0x1c8d3a);for(var _0x579124=qs['offset'](_0x2effc1[_0xf633('0x47')][_0xf633('0x1e')]);_0x579124<_0x1c8d3a['length']&&_0x45b1ec[_0xf633('0x49')]<qs[_0xf633('0x21')](_0x2effc1['query']['limit']);_0x579124+=0x1){if(_0x1c8d3a[_0x579124]){_0x45b1ec['push'](_0x1c8d3a[_0x579124]);}}return{'count':_0x1c8d3a['length'],'rows':_0x45b1ec};}})[_0xf633('0xf')](respondWithResult(_0x5456fa,null))[_0xf633('0x1a')](handleError(_0x5456fa,null));};exports[_0xf633('0x24')]=function(_0x3db6d2,_0x3f3890){if(_0x3db6d2[_0xf633('0x29')]['id']==_0x3db6d2[_0xf633('0x53')]['id']){return _0x3f3890[_0xf633('0x1c')](0x1f4)[_0xf633('0x36')]({'message':'You\x20can\x27t\x20delete\x20yourself'});}return db[_0xf633('0x37')]['find']({'where':{'id':_0x3db6d2['params']['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x3f3890,null))[_0xf633('0xf')](removeEntity(_0x3f3890,null))['catch'](handleError(_0x3f3890,null));};exports[_0xf633('0x123')]=function(_0x392c7c,_0x255690){return db[_0xf633('0x37')][_0xf633('0x32')]({'where':{'id':_0x392c7c['params']['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x255690,null))[_0xf633('0xf')](function(_0x4e88d1){if(_0x4e88d1){return _0x4e88d1[_0xf633('0x123')](_0x392c7c[_0xf633('0x5c')][_0xf633('0x5e')],_[_0xf633('0x10a')](_0x392c7c[_0xf633('0x5c')],[_0xf633('0x5e'),'id'])||{})[_0xf633('0x124')](function(){for(var _0x347de5=0x0;_0x347de5<_0x392c7c[_0xf633('0x5c')][_0xf633('0x5e')]['length'];_0x347de5+=0x1){socket[_0xf633('0xa8')](_0xf633('0x125'),{'ChatInteractionId':Number(_0x392c7c[_0xf633('0x5c')][_0xf633('0x5e')][_0x347de5]),'UserId':Number(_0x392c7c[_0xf633('0x53')]['id'])});}return _0x392c7c['body'][_0xf633('0x5e')];});}})[_0xf633('0xf')](respondWithResult(_0x255690,null))['catch'](handleError(_0x255690,null));};exports['removeChatInteractions']=function(_0x1cfc73,_0xd66551){return db[_0xf633('0x37')][_0xf633('0x32')]({'where':{'id':_0x1cfc73[_0xf633('0x53')]['id']}})['then'](handleEntityNotFound(_0xd66551,null))[_0xf633('0xf')](function(_0x532b7f){if(_0x532b7f){return _0x532b7f[_0xf633('0x126')](_0x1cfc73[_0xf633('0x47')]['ids'])[_0xf633('0xf')](function(){if(_[_0xf633('0x127')](_0x1cfc73[_0xf633('0x47')][_0xf633('0x5e')])){for(var _0x36586f=0x0;_0x36586f<_0x1cfc73[_0xf633('0x47')]['ids']['length'];_0x36586f+=0x1){socket[_0xf633('0xa8')]('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x1cfc73[_0xf633('0x47')][_0xf633('0x5e')][_0x36586f]),'UserId':Number(_0x1cfc73[_0xf633('0x53')]['id'])});}}else{socket['emit']('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x1cfc73[_0xf633('0x47')][_0xf633('0x5e')]),'UserId':Number(_0x1cfc73['params']['id'])});}});}})['then'](respondWithStatusCode(_0xd66551,null))[_0xf633('0x1a')](handleError(_0xd66551,null));};exports[_0xf633('0x128')]=function(_0x7cb1a,_0x36d1d2){return db[_0xf633('0x37')][_0xf633('0x32')]({'where':{'id':_0x7cb1a[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x36d1d2,null))['then'](function(_0x1bde92){if(_0x1bde92){return _0x1bde92['addMailInteractions'](_0x7cb1a[_0xf633('0x5c')][_0xf633('0x5e')],_[_0xf633('0x10a')](_0x7cb1a['body'],[_0xf633('0x5e'),'id'])||{})['spread'](function(){for(var _0xa193f0=0x0;_0xa193f0<_0x7cb1a[_0xf633('0x5c')]['ids'][_0xf633('0x49')];_0xa193f0+=0x1){socket[_0xf633('0xa8')](_0xf633('0x129'),{'MailInteractionId':Number(_0x7cb1a[_0xf633('0x5c')][_0xf633('0x5e')][_0xa193f0]),'UserId':Number(_0x7cb1a[_0xf633('0x53')]['id'])});}return _0x7cb1a[_0xf633('0x5c')][_0xf633('0x5e')];});}})['then'](respondWithResult(_0x36d1d2,null))[_0xf633('0x1a')](handleError(_0x36d1d2,null));};exports[_0xf633('0x12a')]=function(_0x238e46,_0x207531){return db[_0xf633('0x37')]['find']({'where':{'id':_0x238e46[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x207531,null))['then'](function(_0x3f2e20){if(_0x3f2e20){return _0x3f2e20[_0xf633('0x12a')](_0x238e46['query']['ids'])[_0xf633('0xf')](function(){if(_[_0xf633('0x127')](_0x238e46[_0xf633('0x47')][_0xf633('0x5e')])){for(var _0x227080=0x0;_0x227080<_0x238e46['query'][_0xf633('0x5e')]['length'];_0x227080+=0x1){socket[_0xf633('0xa8')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x238e46[_0xf633('0x47')][_0xf633('0x5e')][_0x227080]),'UserId':Number(_0x238e46['params']['id'])});}}else{socket[_0xf633('0xa8')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x238e46[_0xf633('0x47')]['ids']),'UserId':Number(_0x238e46[_0xf633('0x53')]['id'])});}});}})[_0xf633('0xf')](respondWithStatusCode(_0x207531,null))[_0xf633('0x1a')](handleError(_0x207531,null));};exports[_0xf633('0x12b')]=function(_0x549846,_0x4a69d9){return db['User']['find']({'where':{'id':_0x549846[_0xf633('0x53')]['id']}})['then'](handleEntityNotFound(_0x4a69d9,null))[_0xf633('0xf')](function(_0x3a52bb){if(_0x3a52bb){return _0x3a52bb[_0xf633('0x12b')](_0x549846['body'][_0xf633('0x5e')],_[_0xf633('0x10a')](_0x549846[_0xf633('0x5c')],['ids','id'])||{})[_0xf633('0x124')](function(){for(var _0x4ad843=0x0;_0x4ad843<_0x549846[_0xf633('0x5c')][_0xf633('0x5e')][_0xf633('0x49')];_0x4ad843+=0x1){socket[_0xf633('0xa8')]('user_has_fax_interactions:save',{'FaxInteractionId':Number(_0x549846[_0xf633('0x5c')]['ids'][_0x4ad843]),'UserId':Number(_0x549846[_0xf633('0x53')]['id'])});}return _0x549846['body'][_0xf633('0x5e')];});}})[_0xf633('0xf')](respondWithResult(_0x4a69d9,null))[_0xf633('0x1a')](handleError(_0x4a69d9,null));};exports[_0xf633('0x12c')]=function(_0x346bc8,_0x4542dc){return db['User']['find']({'where':{'id':_0x346bc8[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x4542dc,null))[_0xf633('0xf')](function(_0x6e16cd){if(_0x6e16cd){return _0x6e16cd['removeFaxInteractions'](_0x346bc8[_0xf633('0x47')][_0xf633('0x5e')])[_0xf633('0xf')](function(){if(_[_0xf633('0x127')](_0x346bc8['query']['ids'])){for(var _0x2b64c8=0x0;_0x2b64c8<_0x346bc8[_0xf633('0x47')]['ids'][_0xf633('0x49')];_0x2b64c8+=0x1){socket['emit'](_0xf633('0x12d'),{'FaxInteractionId':Number(_0x346bc8[_0xf633('0x47')][_0xf633('0x5e')][_0x2b64c8]),'UserId':Number(_0x346bc8[_0xf633('0x53')]['id'])});}}else{socket['emit'](_0xf633('0x12d'),{'FaxInteractionId':Number(_0x346bc8[_0xf633('0x47')][_0xf633('0x5e')]),'UserId':Number(_0x346bc8['params']['id'])});}});}})['then'](respondWithStatusCode(_0x4542dc,null))[_0xf633('0x1a')](handleError(_0x4542dc,null));};exports[_0xf633('0x12e')]=function(_0x433088,_0x5d31d1){return db['User'][_0xf633('0x32')]({'where':{'id':_0x433088[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x5d31d1,null))['then'](function(_0x5cfbb7){if(_0x5cfbb7){return _0x5cfbb7[_0xf633('0x12e')](_0x433088[_0xf633('0x5c')][_0xf633('0x5e')],_['omit'](_0x433088['body'],[_0xf633('0x5e'),'id'])||{})['spread'](function(){for(var _0x513cd6=0x0;_0x513cd6<_0x433088[_0xf633('0x5c')]['ids']['length'];_0x513cd6+=0x1){socket[_0xf633('0xa8')](_0xf633('0x12f'),{'SmsInteractionId':Number(_0x433088[_0xf633('0x5c')]['ids'][_0x513cd6]),'UserId':Number(_0x433088[_0xf633('0x53')]['id'])});}return _0x433088['body'][_0xf633('0x5e')];});}})[_0xf633('0xf')](respondWithResult(_0x5d31d1,null))['catch'](handleError(_0x5d31d1,null));};exports['removeSmsInteractions']=function(_0x35d370,_0x346e3d){return db['User']['find']({'where':{'id':_0x35d370[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x346e3d,null))[_0xf633('0xf')](function(_0x5aee7d){if(_0x5aee7d){return _0x5aee7d[_0xf633('0x130')](_0x35d370['query'][_0xf633('0x5e')])[_0xf633('0xf')](function(){if(_[_0xf633('0x127')](_0x35d370[_0xf633('0x47')][_0xf633('0x5e')])){for(var _0xbf7c5b=0x0;_0xbf7c5b<_0x35d370[_0xf633('0x47')][_0xf633('0x5e')][_0xf633('0x49')];_0xbf7c5b+=0x1){socket[_0xf633('0xa8')](_0xf633('0x131'),{'SmsInteractionId':Number(_0x35d370['query'][_0xf633('0x5e')][_0xbf7c5b]),'UserId':Number(_0x35d370[_0xf633('0x53')]['id'])});}}else{socket[_0xf633('0xa8')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x35d370['query'][_0xf633('0x5e')]),'UserId':Number(_0x35d370[_0xf633('0x53')]['id'])});}});}})[_0xf633('0xf')](respondWithStatusCode(_0x346e3d,null))['catch'](handleError(_0x346e3d,null));};exports['addOpenchannelInteractions']=function(_0x5a061c,_0x2c7ffc){return db[_0xf633('0x37')][_0xf633('0x32')]({'where':{'id':_0x5a061c['params']['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x2c7ffc,null))[_0xf633('0xf')](function(_0x4617eb){if(_0x4617eb){return _0x4617eb['addOpenchannelInteractions'](_0x5a061c[_0xf633('0x5c')][_0xf633('0x5e')],_[_0xf633('0x10a')](_0x5a061c[_0xf633('0x5c')],[_0xf633('0x5e'),'id'])||{})[_0xf633('0x124')](function(){for(var _0x1bb6d4=0x0;_0x1bb6d4<_0x5a061c['body'][_0xf633('0x5e')][_0xf633('0x49')];_0x1bb6d4+=0x1){socket['emit'](_0xf633('0x132'),{'OpenchannelInteractionId':Number(_0x5a061c[_0xf633('0x5c')]['ids'][_0x1bb6d4]),'UserId':Number(_0x5a061c[_0xf633('0x53')]['id'])});}return _0x5a061c[_0xf633('0x5c')][_0xf633('0x5e')];});}})['then'](respondWithResult(_0x2c7ffc,null))['catch'](handleError(_0x2c7ffc,null));};exports[_0xf633('0x133')]=function(_0x16b1e7,_0x4e1a9c){return db[_0xf633('0x37')]['find']({'where':{'id':_0x16b1e7[_0xf633('0x53')]['id']}})['then'](handleEntityNotFound(_0x4e1a9c,null))['then'](function(_0x204cc5){if(_0x204cc5){return _0x204cc5['removeOpenchannelInteractions'](_0x16b1e7[_0xf633('0x47')][_0xf633('0x5e')])[_0xf633('0xf')](function(){if(_[_0xf633('0x127')](_0x16b1e7['query'][_0xf633('0x5e')])){for(var _0x22bb8b=0x0;_0x22bb8b<_0x16b1e7[_0xf633('0x47')]['ids'][_0xf633('0x49')];_0x22bb8b+=0x1){socket['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x16b1e7[_0xf633('0x47')][_0xf633('0x5e')][_0x22bb8b]),'UserId':Number(_0x16b1e7[_0xf633('0x53')]['id'])});}}else{socket['emit'](_0xf633('0x134'),{'OpenchannelInteractionId':Number(_0x16b1e7['query'][_0xf633('0x5e')]),'UserId':Number(_0x16b1e7[_0xf633('0x53')]['id'])});}});}})['then'](respondWithStatusCode(_0x4e1a9c,null))[_0xf633('0x1a')](handleError(_0x4e1a9c,null));};exports[_0xf633('0x135')]=function(_0x2f363e,_0x46dd49){return db['User']['find']({'where':{'id':_0x2f363e[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x46dd49,null))[_0xf633('0xf')](function(_0x44048a){if(_0x44048a){return _0x44048a['addWhatsappInteractions'](_0x2f363e['body'][_0xf633('0x5e')],_[_0xf633('0x10a')](_0x2f363e['body'],[_0xf633('0x5e'),'id'])||{})['spread'](function(){for(var _0xc7f2f0=0x0;_0xc7f2f0<_0x2f363e[_0xf633('0x5c')][_0xf633('0x5e')][_0xf633('0x49')];_0xc7f2f0+=0x1){socket[_0xf633('0xa8')]('user_has_whatsapp_interactions:save',{'WhatsappInteractionId':Number(_0x2f363e['body'][_0xf633('0x5e')][_0xc7f2f0]),'UserId':Number(_0x2f363e[_0xf633('0x53')]['id'])});}return _0x2f363e[_0xf633('0x5c')][_0xf633('0x5e')];});}})[_0xf633('0xf')](respondWithResult(_0x46dd49,null))[_0xf633('0x1a')](handleError(_0x46dd49,null));};exports[_0xf633('0x136')]=function(_0x1c133f,_0x5dac88){return db[_0xf633('0x37')]['find']({'where':{'id':_0x1c133f['params']['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x5dac88,null))[_0xf633('0xf')](function(_0x286b03){if(_0x286b03){return _0x286b03[_0xf633('0x136')](_0x1c133f[_0xf633('0x47')][_0xf633('0x5e')]);}})[_0xf633('0xf')](respondWithStatusCode(_0x5dac88,null))['catch'](handleError(_0x5dac88,null));};exports['getVoicePrefixes']=function(_0x26aec5,_0x3e0d58){var _0x4861d4={};var _0x280ff9={};var _0x41c364;var _0x149661;return db[_0xf633('0x37')][_0xf633('0xc2')]({'where':{'id':_0x26aec5[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x3e0d58,null))[_0xf633('0xf')](function(_0x4a5352){if(_0x4a5352){_0x41c364=_0x4a5352;_0x280ff9[_0xf633('0x54')]=_[_0xf633('0x55')](db[_0xf633('0x137')]['rawAttributes']);_0x280ff9[_0xf633('0x47')]=_[_0xf633('0x55')](_0x26aec5[_0xf633('0x47')]);_0x280ff9[_0xf633('0x57')]=_[_0xf633('0x58')](_0x280ff9['model'],_0x280ff9[_0xf633('0x47')]);_0x4861d4[_0xf633('0x45')]=_[_0xf633('0x58')](_0x280ff9[_0xf633('0x54')],qs['fields'](_0x26aec5[_0xf633('0x47')]['fields']));_0x4861d4[_0xf633('0x45')]=_0x4861d4[_0xf633('0x45')][_0xf633('0x49')]?_0x4861d4['attributes']:_0x280ff9[_0xf633('0x54')];_0x4861d4[_0xf633('0xc3')]=qs[_0xf633('0xc4')](_0x26aec5[_0xf633('0x47')][_0xf633('0xc4')]);_0x4861d4[_0xf633('0x3f')]=qs['filters'](_[_0xf633('0xc5')](_0x26aec5[_0xf633('0x47')],_0x280ff9[_0xf633('0x57')]));if(_0x26aec5[_0xf633('0x47')][_0xf633('0x2e')]){_0x4861d4[_0xf633('0x3f')]=_[_0xf633('0xc6')](_0x4861d4[_0xf633('0x3f')],{'$or':_['map'](_0x4861d4[_0xf633('0x45')],function(_0x29d488){var _0x5cc224={};_0x5cc224[_0x29d488]={'$like':'%'+_0x26aec5[_0xf633('0x47')][_0xf633('0x2e')]+'%'};return _0x5cc224;})});}_0x4861d4=_[_0xf633('0xc6')]({},_0x4861d4,_0x26aec5[_0xf633('0x5a')]);return _0x41c364['getVoicePrefixes'](_0x4861d4);}})[_0xf633('0xf')](function(_0x1933b6){if(_0x1933b6){_0x149661=_0x1933b6[_0xf633('0x49')];if(!_0x26aec5[_0xf633('0x47')][_0xf633('0xc7')](_0xf633('0xce'))){_0x4861d4['limit']=qs[_0xf633('0x21')](_0x26aec5[_0xf633('0x47')][_0xf633('0x21')]);_0x4861d4[_0xf633('0x1e')]=qs[_0xf633('0x1e')](_0x26aec5['query']['offset']);}return _0x41c364[_0xf633('0x138')](_0x4861d4);}})[_0xf633('0xf')](function(_0x31e428){if(_0x31e428){return _0x31e428?{'count':_0x149661,'rows':_0x31e428}:null;}})[_0xf633('0xf')](respondWithResult(_0x3e0d58,null))['catch'](handleError(_0x3e0d58,null));};exports['getFaxAccounts']=function(_0x35222e,_0x1704a7){var _0x67dea3={};var _0x4c7136={};var _0xda3e0f;var _0x2c974d;return db[_0xf633('0x37')]['findOne']({'where':{'id':_0x35222e[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x1704a7,null))[_0xf633('0xf')](function(_0x424dd){if(_0x424dd){_0xda3e0f=_0x424dd;_0x4c7136[_0xf633('0x54')]=_['keys'](db[_0xf633('0x139')][_0xf633('0x56')]);_0x4c7136['query']=_['keys'](_0x35222e[_0xf633('0x47')]);_0x4c7136['filters']=_[_0xf633('0x58')](_0x4c7136[_0xf633('0x54')],_0x4c7136['query']);_0x67dea3[_0xf633('0x45')]=_[_0xf633('0x58')](_0x4c7136[_0xf633('0x54')],qs[_0xf633('0x59')](_0x35222e['query'][_0xf633('0x59')]));_0x67dea3[_0xf633('0x45')]=_0x67dea3[_0xf633('0x45')][_0xf633('0x49')]?_0x67dea3[_0xf633('0x45')]:_0x4c7136[_0xf633('0x54')];_0x67dea3['order']=qs[_0xf633('0xc4')](_0x35222e[_0xf633('0x47')][_0xf633('0xc4')]);_0x67dea3[_0xf633('0x3f')]=qs[_0xf633('0x57')](_[_0xf633('0xc5')](_0x35222e[_0xf633('0x47')],_0x4c7136[_0xf633('0x57')]));if(_0x35222e[_0xf633('0x47')][_0xf633('0x2e')]){_0x67dea3[_0xf633('0x3f')]=_[_0xf633('0xc6')](_0x67dea3[_0xf633('0x3f')],{'$or':_[_0xf633('0x38')](_0x67dea3['attributes'],function(_0x15b851){var _0x36d34d={};_0x36d34d[_0x15b851]={'$like':'%'+_0x35222e[_0xf633('0x47')][_0xf633('0x2e')]+'%'};return _0x36d34d;})});}_0x67dea3=_['merge']({},_0x67dea3,_0x35222e[_0xf633('0x5a')]);return _0xda3e0f['getFaxAccounts'](_0x67dea3);}})['then'](function(_0x2ee8d6){if(_0x2ee8d6){_0x2c974d=_0x2ee8d6[_0xf633('0x49')];if(!_0x35222e[_0xf633('0x47')]['hasOwnProperty'](_0xf633('0xce'))){_0x67dea3[_0xf633('0x21')]=qs['limit'](_0x35222e['query'][_0xf633('0x21')]);_0x67dea3[_0xf633('0x1e')]=qs[_0xf633('0x1e')](_0x35222e[_0xf633('0x47')][_0xf633('0x1e')]);}return _0xda3e0f['getFaxAccounts'](_0x67dea3);}})['then'](function(_0x2b58b4){if(_0x2b58b4){return _0x2b58b4?{'count':_0x2c974d,'rows':_0x2b58b4}:null;}})[_0xf633('0xf')](respondWithResult(_0x1704a7,null))[_0xf633('0x1a')](handleError(_0x1704a7,null));};exports[_0xf633('0x13a')]=function(_0x4004b8,_0x48ccc3){return db[_0xf633('0x37')][_0xf633('0x32')]({'where':{'id':_0x4004b8[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x48ccc3,null))[_0xf633('0xf')](function(_0x212f4a){if(_0x212f4a){return _0x212f4a[_0xf633('0x13a')](_0x4004b8[_0xf633('0x5c')]['ids'],_[_0xf633('0x10a')](_0x4004b8['body'],[_0xf633('0x5e'),'id'])||{});}})[_0xf633('0xf')](respondWithResult(_0x48ccc3,null))[_0xf633('0x1a')](handleError(_0x48ccc3,null));};exports[_0xf633('0x13b')]=function(_0x5b09c0,_0x557c71){return db['User'][_0xf633('0x32')]({'where':{'id':_0x5b09c0[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x557c71,null))[_0xf633('0xf')](function(_0x15eb1a){if(_0x15eb1a){return _0x15eb1a[_0xf633('0x13b')](_0x5b09c0['query'][_0xf633('0x5e')]);}})[_0xf633('0xf')](respondWithStatusCode(_0x557c71,null))[_0xf633('0x1a')](handleError(_0x557c71,null));};exports['getMailAccounts']=function(_0x3d558f,_0x269d88){var _0x133554={};var _0x38ef12={};var _0xeb417a;var _0x6a3b8;return db[_0xf633('0x37')][_0xf633('0xc2')]({'where':{'id':_0x3d558f[_0xf633('0x53')]['id']}})['then'](handleEntityNotFound(_0x269d88,null))[_0xf633('0xf')](function(_0x3af39c){if(_0x3af39c){_0xeb417a=_0x3af39c;_0x38ef12[_0xf633('0x54')]=_['keys'](db[_0xf633('0x13c')][_0xf633('0x56')]);_0x38ef12[_0xf633('0x47')]=_[_0xf633('0x55')](_0x3d558f[_0xf633('0x47')]);_0x38ef12['filters']=_[_0xf633('0x58')](_0x38ef12['model'],_0x38ef12[_0xf633('0x47')]);_0x133554[_0xf633('0x45')]=_['intersection'](_0x38ef12[_0xf633('0x54')],qs['fields'](_0x3d558f[_0xf633('0x47')][_0xf633('0x59')]));_0x133554[_0xf633('0x45')]=_0x133554['attributes'][_0xf633('0x49')]?_0x133554[_0xf633('0x45')]:_0x38ef12[_0xf633('0x54')];_0x133554[_0xf633('0xc3')]=qs[_0xf633('0xc4')](_0x3d558f['query'][_0xf633('0xc4')]);_0x133554[_0xf633('0x3f')]=qs[_0xf633('0x57')](_[_0xf633('0xc5')](_0x3d558f['query'],_0x38ef12[_0xf633('0x57')]));if(_0x3d558f[_0xf633('0x47')][_0xf633('0x2e')]){_0x133554['where']=_[_0xf633('0xc6')](_0x133554[_0xf633('0x3f')],{'$or':_['map'](_0x133554[_0xf633('0x45')],function(_0x6712d8){var _0x45dbd8={};_0x45dbd8[_0x6712d8]={'$like':'%'+_0x3d558f['query'][_0xf633('0x2e')]+'%'};return _0x45dbd8;})});}_0x133554=_['merge']({},_0x133554,_0x3d558f[_0xf633('0x5a')]);return _0xeb417a[_0xf633('0x13d')](_0x133554);}})['then'](function(_0x1034dd){if(_0x1034dd){_0x6a3b8=_0x1034dd[_0xf633('0x49')];if(!_0x3d558f[_0xf633('0x47')]['hasOwnProperty'](_0xf633('0xce'))){_0x133554[_0xf633('0x21')]=qs[_0xf633('0x21')](_0x3d558f[_0xf633('0x47')][_0xf633('0x21')]);_0x133554[_0xf633('0x1e')]=qs[_0xf633('0x1e')](_0x3d558f[_0xf633('0x47')][_0xf633('0x1e')]);}return _0xeb417a[_0xf633('0x13d')](_0x133554);}})[_0xf633('0xf')](function(_0x496e83){if(_0x496e83){return _0x496e83?{'count':_0x6a3b8,'rows':_0x496e83}:null;}})['then'](respondWithResult(_0x269d88,null))[_0xf633('0x1a')](handleError(_0x269d88,null));};exports[_0xf633('0x13e')]=function(_0x15a1fb,_0x2f94bb){return db[_0xf633('0x37')]['find']({'where':{'id':_0x15a1fb[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x2f94bb,null))[_0xf633('0xf')](function(_0x3414fa){if(_0x3414fa){return _0x3414fa[_0xf633('0x13e')](_0x15a1fb[_0xf633('0x5c')][_0xf633('0x5e')],_[_0xf633('0x10a')](_0x15a1fb[_0xf633('0x5c')],[_0xf633('0x5e'),'id'])||{});}})[_0xf633('0xf')](respondWithResult(_0x2f94bb,null))[_0xf633('0x1a')](handleError(_0x2f94bb,null));};exports[_0xf633('0x13f')]=function(_0x23cf69,_0x569f13){return db[_0xf633('0x37')][_0xf633('0x32')]({'where':{'id':_0x23cf69[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x569f13,null))['then'](function(_0x372506){if(_0x372506){return _0x372506[_0xf633('0x13f')](_0x23cf69[_0xf633('0x47')][_0xf633('0x5e')]);}})[_0xf633('0xf')](respondWithStatusCode(_0x569f13,null))[_0xf633('0x1a')](handleError(_0x569f13,null));};exports['getOpenchannelAccounts']=function(_0x15208e,_0x32970f){var _0x235c12={};var _0x1cca97={};var _0xb01eef;var _0x5bc402;return db[_0xf633('0x37')][_0xf633('0xc2')]({'where':{'id':_0x15208e['params']['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x32970f,null))[_0xf633('0xf')](function(_0x3333e7){if(_0x3333e7){_0xb01eef=_0x3333e7;_0x1cca97['model']=_[_0xf633('0x55')](db[_0xf633('0x140')]['rawAttributes']);_0x1cca97[_0xf633('0x47')]=_[_0xf633('0x55')](_0x15208e[_0xf633('0x47')]);_0x1cca97[_0xf633('0x57')]=_[_0xf633('0x58')](_0x1cca97[_0xf633('0x54')],_0x1cca97[_0xf633('0x47')]);_0x235c12[_0xf633('0x45')]=_['intersection'](_0x1cca97[_0xf633('0x54')],qs[_0xf633('0x59')](_0x15208e[_0xf633('0x47')]['fields']));_0x235c12[_0xf633('0x45')]=_0x235c12[_0xf633('0x45')]['length']?_0x235c12[_0xf633('0x45')]:_0x1cca97['model'];_0x235c12[_0xf633('0xc3')]=qs[_0xf633('0xc4')](_0x15208e[_0xf633('0x47')][_0xf633('0xc4')]);_0x235c12[_0xf633('0x3f')]=qs[_0xf633('0x57')](_['pick'](_0x15208e[_0xf633('0x47')],_0x1cca97[_0xf633('0x57')]));if(_0x15208e[_0xf633('0x47')][_0xf633('0x2e')]){_0x235c12[_0xf633('0x3f')]=_[_0xf633('0xc6')](_0x235c12[_0xf633('0x3f')],{'$or':_[_0xf633('0x38')](_0x235c12[_0xf633('0x45')],function(_0x417fad){var _0x1a8953={};_0x1a8953[_0x417fad]={'$like':'%'+_0x15208e[_0xf633('0x47')][_0xf633('0x2e')]+'%'};return _0x1a8953;})});}_0x235c12=_[_0xf633('0xc6')]({},_0x235c12,_0x15208e[_0xf633('0x5a')]);return _0xb01eef['getOpenchannelAccounts'](_0x235c12);}})[_0xf633('0xf')](function(_0x1c06ee){if(_0x1c06ee){_0x5bc402=_0x1c06ee['length'];if(!_0x15208e['query'][_0xf633('0xc7')](_0xf633('0xce'))){_0x235c12[_0xf633('0x21')]=qs[_0xf633('0x21')](_0x15208e['query']['limit']);_0x235c12[_0xf633('0x1e')]=qs[_0xf633('0x1e')](_0x15208e[_0xf633('0x47')][_0xf633('0x1e')]);}return _0xb01eef['getOpenchannelAccounts'](_0x235c12);}})['then'](function(_0x4bb36e){if(_0x4bb36e){return _0x4bb36e?{'count':_0x5bc402,'rows':_0x4bb36e}:null;}})['then'](respondWithResult(_0x32970f,null))[_0xf633('0x1a')](handleError(_0x32970f,null));};exports['addOpenchannelAccounts']=function(_0x40540a,_0x56f343){return db[_0xf633('0x37')][_0xf633('0x32')]({'where':{'id':_0x40540a[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x56f343,null))['then'](function(_0x32e30f){if(_0x32e30f){return _0x32e30f['addOpenchannelAccounts'](_0x40540a['body']['ids'],_[_0xf633('0x10a')](_0x40540a['body'],[_0xf633('0x5e'),'id'])||{});}})[_0xf633('0xf')](respondWithResult(_0x56f343,null))[_0xf633('0x1a')](handleError(_0x56f343,null));};exports[_0xf633('0x141')]=function(_0x37a924,_0x48e437){return db[_0xf633('0x37')]['find']({'where':{'id':_0x37a924[_0xf633('0x53')]['id']}})['then'](handleEntityNotFound(_0x48e437,null))[_0xf633('0xf')](function(_0x37e0c4){if(_0x37e0c4){return _0x37e0c4[_0xf633('0x141')](_0x37a924['query'][_0xf633('0x5e')]);}})[_0xf633('0xf')](respondWithStatusCode(_0x48e437,null))[_0xf633('0x1a')](handleError(_0x48e437,null));};exports['getSmsAccounts']=function(_0x3b6215,_0x50ee86){var _0x434ab4={};var _0x4f588b={};var _0x516ade;var _0xc364b0;return db[_0xf633('0x37')][_0xf633('0xc2')]({'where':{'id':_0x3b6215[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x50ee86,null))[_0xf633('0xf')](function(_0x31a88e){if(_0x31a88e){_0x516ade=_0x31a88e;_0x4f588b[_0xf633('0x54')]=_[_0xf633('0x55')](db[_0xf633('0x142')][_0xf633('0x56')]);_0x4f588b[_0xf633('0x47')]=_[_0xf633('0x55')](_0x3b6215[_0xf633('0x47')]);_0x4f588b[_0xf633('0x57')]=_[_0xf633('0x58')](_0x4f588b['model'],_0x4f588b['query']);_0x434ab4[_0xf633('0x45')]=_[_0xf633('0x58')](_0x4f588b[_0xf633('0x54')],qs[_0xf633('0x59')](_0x3b6215[_0xf633('0x47')][_0xf633('0x59')]));_0x434ab4['attributes']=_0x434ab4['attributes'][_0xf633('0x49')]?_0x434ab4[_0xf633('0x45')]:_0x4f588b['model'];_0x434ab4[_0xf633('0xc3')]=qs[_0xf633('0xc4')](_0x3b6215[_0xf633('0x47')][_0xf633('0xc4')]);_0x434ab4[_0xf633('0x3f')]=qs[_0xf633('0x57')](_[_0xf633('0xc5')](_0x3b6215[_0xf633('0x47')],_0x4f588b['filters']));if(_0x3b6215['query'][_0xf633('0x2e')]){_0x434ab4[_0xf633('0x3f')]=_[_0xf633('0xc6')](_0x434ab4['where'],{'$or':_['map'](_0x434ab4[_0xf633('0x45')],function(_0x5e3c7d){var _0x19af35={};_0x19af35[_0x5e3c7d]={'$like':'%'+_0x3b6215[_0xf633('0x47')]['filter']+'%'};return _0x19af35;})});}_0x434ab4=_[_0xf633('0xc6')]({},_0x434ab4,_0x3b6215['options']);return _0x516ade[_0xf633('0x143')](_0x434ab4);}})[_0xf633('0xf')](function(_0x1c0294){if(_0x1c0294){_0xc364b0=_0x1c0294[_0xf633('0x49')];if(!_0x3b6215[_0xf633('0x47')]['hasOwnProperty'](_0xf633('0xce'))){_0x434ab4[_0xf633('0x21')]=qs['limit'](_0x3b6215['query'][_0xf633('0x21')]);_0x434ab4['offset']=qs[_0xf633('0x1e')](_0x3b6215[_0xf633('0x47')][_0xf633('0x1e')]);}return _0x516ade[_0xf633('0x143')](_0x434ab4);}})['then'](function(_0x488ea3){if(_0x488ea3){return _0x488ea3?{'count':_0xc364b0,'rows':_0x488ea3}:null;}})[_0xf633('0xf')](respondWithResult(_0x50ee86,null))[_0xf633('0x1a')](handleError(_0x50ee86,null));};exports['addSmsAccounts']=function(_0x2fa3c5,_0x2bf4a5){return db[_0xf633('0x37')][_0xf633('0x32')]({'where':{'id':_0x2fa3c5[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x2bf4a5,null))['then'](function(_0x167dc5){if(_0x167dc5){return _0x167dc5[_0xf633('0x144')](_0x2fa3c5[_0xf633('0x5c')][_0xf633('0x5e')],_[_0xf633('0x10a')](_0x2fa3c5[_0xf633('0x5c')],[_0xf633('0x5e'),'id'])||{});}})[_0xf633('0xf')](respondWithResult(_0x2bf4a5,null))[_0xf633('0x1a')](handleError(_0x2bf4a5,null));};exports[_0xf633('0x145')]=function(_0x398152,_0x46fba5){return db[_0xf633('0x37')][_0xf633('0x32')]({'where':{'id':_0x398152[_0xf633('0x53')]['id']}})['then'](handleEntityNotFound(_0x46fba5,null))[_0xf633('0xf')](function(_0x446549){if(_0x446549){return _0x446549['removeSmsAccounts'](_0x398152['query'][_0xf633('0x5e')]);}})[_0xf633('0xf')](respondWithStatusCode(_0x46fba5,null))[_0xf633('0x1a')](handleError(_0x46fba5,null));};exports['getChatWebsites']=function(_0x485a2d,_0x4cedab){var _0x5178b7={};var _0x1cbfd8={};var _0x1a59b0;var _0xeecbf3;return db['User'][_0xf633('0xc2')]({'where':{'id':_0x485a2d['params']['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x4cedab,null))['then'](function(_0x40d438){if(_0x40d438){_0x1a59b0=_0x40d438;_0x1cbfd8['model']=_['keys'](db[_0xf633('0x146')][_0xf633('0x56')]);_0x1cbfd8['query']=_[_0xf633('0x55')](_0x485a2d[_0xf633('0x47')]);_0x1cbfd8[_0xf633('0x57')]=_[_0xf633('0x58')](_0x1cbfd8[_0xf633('0x54')],_0x1cbfd8[_0xf633('0x47')]);_0x5178b7[_0xf633('0x45')]=_['intersection'](_0x1cbfd8['model'],qs[_0xf633('0x59')](_0x485a2d['query']['fields']));_0x5178b7[_0xf633('0x45')]=_0x5178b7[_0xf633('0x45')][_0xf633('0x49')]?_0x5178b7[_0xf633('0x45')]:_0x1cbfd8[_0xf633('0x54')];_0x5178b7[_0xf633('0xc3')]=qs[_0xf633('0xc4')](_0x485a2d[_0xf633('0x47')][_0xf633('0xc4')]);_0x5178b7['where']=qs[_0xf633('0x57')](_[_0xf633('0xc5')](_0x485a2d['query'],_0x1cbfd8[_0xf633('0x57')]));if(_0x485a2d[_0xf633('0x47')][_0xf633('0x2e')]){_0x5178b7[_0xf633('0x3f')]=_[_0xf633('0xc6')](_0x5178b7[_0xf633('0x3f')],{'$or':_[_0xf633('0x38')](_0x5178b7[_0xf633('0x45')],function(_0x198ae8){var _0x1f4766={};_0x1f4766[_0x198ae8]={'$like':'%'+_0x485a2d['query'][_0xf633('0x2e')]+'%'};return _0x1f4766;})});}_0x5178b7=_[_0xf633('0xc6')]({},_0x5178b7,_0x485a2d[_0xf633('0x5a')]);return _0x1a59b0[_0xf633('0x147')](_0x5178b7);}})[_0xf633('0xf')](function(_0x2b3927){if(_0x2b3927){_0xeecbf3=_0x2b3927['length'];if(!_0x485a2d['query'][_0xf633('0xc7')](_0xf633('0xce'))){_0x5178b7[_0xf633('0x21')]=qs['limit'](_0x485a2d[_0xf633('0x47')][_0xf633('0x21')]);_0x5178b7['offset']=qs[_0xf633('0x1e')](_0x485a2d[_0xf633('0x47')][_0xf633('0x1e')]);}return _0x1a59b0[_0xf633('0x147')](_0x5178b7);}})[_0xf633('0xf')](function(_0x517ea1){if(_0x517ea1){return _0x517ea1?{'count':_0xeecbf3,'rows':_0x517ea1}:null;}})['then'](respondWithResult(_0x4cedab,null))[_0xf633('0x1a')](handleError(_0x4cedab,null));};exports[_0xf633('0x148')]=function(_0x210cec,_0x40d47e){return db[_0xf633('0x37')][_0xf633('0x32')]({'where':{'id':_0x210cec[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x40d47e,null))[_0xf633('0xf')](function(_0x4c197b){if(_0x4c197b){return _0x4c197b[_0xf633('0x148')](_0x210cec[_0xf633('0x5c')][_0xf633('0x5e')],_[_0xf633('0x10a')](_0x210cec[_0xf633('0x5c')],[_0xf633('0x5e'),'id'])||{});}})[_0xf633('0xf')](respondWithResult(_0x40d47e,null))['catch'](handleError(_0x40d47e,null));};exports['removeChatWebsites']=function(_0x3a2f1e,_0x34a667){return db[_0xf633('0x37')][_0xf633('0x32')]({'where':{'id':_0x3a2f1e[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x34a667,null))['then'](function(_0x365b40){if(_0x365b40){return _0x365b40['removeChatWebsites'](_0x3a2f1e['query']['ids']);}})[_0xf633('0xf')](respondWithStatusCode(_0x34a667,null))[_0xf633('0x1a')](handleError(_0x34a667,null));};exports[_0xf633('0x149')]=function(_0x2bf22d,_0x1817a8){var _0x5484fb={};var _0x473da0={};var _0x376ba7;var _0x413dca;return db[_0xf633('0x37')][_0xf633('0xc2')]({'where':{'id':_0x2bf22d['params']['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x1817a8,null))[_0xf633('0xf')](function(_0x597517){if(_0x597517){_0x376ba7=_0x597517;_0x473da0[_0xf633('0x54')]=_[_0xf633('0x55')](db[_0xf633('0x14a')][_0xf633('0x56')]);_0x473da0[_0xf633('0x47')]=_[_0xf633('0x55')](_0x2bf22d[_0xf633('0x47')]);_0x473da0['filters']=_[_0xf633('0x58')](_0x473da0[_0xf633('0x54')],_0x473da0[_0xf633('0x47')]);_0x5484fb[_0xf633('0x45')]=_[_0xf633('0x58')](_0x473da0['model'],qs[_0xf633('0x59')](_0x2bf22d['query'][_0xf633('0x59')]));_0x5484fb[_0xf633('0x45')]=_0x5484fb[_0xf633('0x45')]['length']?_0x5484fb['attributes']:_0x473da0[_0xf633('0x54')];_0x5484fb['order']=qs[_0xf633('0xc4')](_0x2bf22d[_0xf633('0x47')]['sort']);_0x5484fb[_0xf633('0x3f')]=qs[_0xf633('0x57')](_[_0xf633('0xc5')](_0x2bf22d[_0xf633('0x47')],_0x473da0['filters']));if(_0x2bf22d[_0xf633('0x47')]['filter']){_0x5484fb['where']=_[_0xf633('0xc6')](_0x5484fb[_0xf633('0x3f')],{'$or':_[_0xf633('0x38')](_0x5484fb[_0xf633('0x45')],function(_0x17ace3){var _0x9645f8={};_0x9645f8[_0x17ace3]={'$like':'%'+_0x2bf22d[_0xf633('0x47')][_0xf633('0x2e')]+'%'};return _0x9645f8;})});}_0x5484fb=_[_0xf633('0xc6')]({},_0x5484fb,_0x2bf22d['options']);return _0x376ba7['getWhatsappAccounts'](_0x5484fb);}})[_0xf633('0xf')](function(_0x1e65af){if(_0x1e65af){_0x413dca=_0x1e65af[_0xf633('0x49')];if(!_0x2bf22d[_0xf633('0x47')]['hasOwnProperty'](_0xf633('0xce'))){_0x5484fb[_0xf633('0x21')]=qs['limit'](_0x2bf22d[_0xf633('0x47')][_0xf633('0x21')]);_0x5484fb[_0xf633('0x1e')]=qs[_0xf633('0x1e')](_0x2bf22d['query'][_0xf633('0x1e')]);}return _0x376ba7[_0xf633('0x149')](_0x5484fb);}})[_0xf633('0xf')](function(_0x25de12){if(_0x25de12){return _0x25de12?{'count':_0x413dca,'rows':_0x25de12}:null;}})[_0xf633('0xf')](respondWithResult(_0x1817a8,null))['catch'](handleError(_0x1817a8,null));};exports[_0xf633('0x14b')]=function(_0x2c0f92,_0x114b16){return db['User'][_0xf633('0x32')]({'where':{'id':_0x2c0f92[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x114b16,null))[_0xf633('0xf')](function(_0x4f5a10){if(_0x4f5a10){return _0x4f5a10[_0xf633('0x14b')](_0x2c0f92[_0xf633('0x5c')][_0xf633('0x5e')],_['omit'](_0x2c0f92[_0xf633('0x5c')],[_0xf633('0x5e'),'id'])||{});}})['then'](respondWithResult(_0x114b16,null))[_0xf633('0x1a')](handleError(_0x114b16,null));};exports['removeWhatsappAccounts']=function(_0x305070,_0x24c119){return db[_0xf633('0x37')]['find']({'where':{'id':_0x305070[_0xf633('0x53')]['id']}})['then'](handleEntityNotFound(_0x24c119,null))[_0xf633('0xf')](function(_0x37865b){if(_0x37865b){return _0x37865b['removeWhatsappAccounts'](_0x305070[_0xf633('0x47')][_0xf633('0x5e')]);}})[_0xf633('0xf')](respondWithStatusCode(_0x24c119,null))[_0xf633('0x1a')](handleError(_0x24c119,null));};exports[_0xf633('0x14c')]=function(_0x51af40,_0x36691b){var _0x3b8a63={};var _0x1060cf={};var _0x753b5e;var _0xbdad22;return db[_0xf633('0x37')][_0xf633('0xc2')]({'where':{'id':_0x51af40[_0xf633('0x53')]['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x36691b,null))['then'](function(_0x2e6051){if(_0x2e6051){_0x753b5e=_0x2e6051;_0x1060cf[_0xf633('0x54')]=_[_0xf633('0x55')](db[_0xf633('0x14d')]['rawAttributes']);_0x1060cf[_0xf633('0x47')]=_[_0xf633('0x55')](_0x51af40[_0xf633('0x47')]);_0x1060cf[_0xf633('0x57')]=_[_0xf633('0x58')](_0x1060cf['model'],_0x1060cf[_0xf633('0x47')]);_0x3b8a63[_0xf633('0x45')]=_[_0xf633('0x58')](_0x1060cf[_0xf633('0x54')],qs[_0xf633('0x59')](_0x51af40['query']['fields']));_0x3b8a63[_0xf633('0x45')]=_0x3b8a63['attributes']['length']?_0x3b8a63[_0xf633('0x45')]:_0x1060cf['model'];_0x3b8a63[_0xf633('0xc3')]=qs[_0xf633('0xc4')](_0x51af40[_0xf633('0x47')][_0xf633('0xc4')]);_0x3b8a63['where']=qs[_0xf633('0x57')](_[_0xf633('0xc5')](_0x51af40['query'],_0x1060cf['filters']));if(_0x51af40['query'][_0xf633('0x2e')]){_0x3b8a63['where']=_['merge'](_0x3b8a63['where'],{'$or':_[_0xf633('0x38')](_0x3b8a63['attributes'],function(_0x29d7ef){var _0x4e27c4={};_0x4e27c4[_0x29d7ef]={'$like':'%'+_0x51af40['query'][_0xf633('0x2e')]+'%'};return _0x4e27c4;})});}_0x3b8a63=_[_0xf633('0xc6')]({},_0x3b8a63,_0x51af40[_0xf633('0x5a')]);return _0x753b5e[_0xf633('0x14c')](_0x3b8a63);}})[_0xf633('0xf')](function(_0xee55e6){if(_0xee55e6){_0xbdad22=_0xee55e6[_0xf633('0x49')];if(!_0x51af40[_0xf633('0x47')][_0xf633('0xc7')](_0xf633('0xce'))){_0x3b8a63[_0xf633('0x21')]=qs[_0xf633('0x21')](_0x51af40[_0xf633('0x47')]['limit']);_0x3b8a63[_0xf633('0x1e')]=qs['offset'](_0x51af40[_0xf633('0x47')][_0xf633('0x1e')]);}return _0x753b5e[_0xf633('0x14c')](_0x3b8a63);}})[_0xf633('0xf')](function(_0xd22422){if(_0xd22422){return _0xd22422?{'count':_0xbdad22,'rows':_0xd22422}:null;}})[_0xf633('0xf')](respondWithResult(_0x36691b,null))[_0xf633('0x1a')](handleError(_0x36691b,null));};exports[_0xf633('0x14e')]=function(_0x3d601f,_0x4786b1){return db['User'][_0xf633('0x32')]({'where':{'id':_0x3d601f['params']['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x4786b1,null))[_0xf633('0xf')](function(_0x36845a){if(_0x36845a){return _0x36845a[_0xf633('0x14e')](_0x3d601f[_0xf633('0x5c')][_0xf633('0x5e')],_[_0xf633('0x10a')](_0x3d601f[_0xf633('0x5c')],[_0xf633('0x5e'),'id'])||{});}})[_0xf633('0xf')](respondWithResult(_0x4786b1,null))[_0xf633('0x1a')](handleError(_0x4786b1,null));};exports[_0xf633('0x14f')]=function(_0x403b8f,_0x795c80){return db[_0xf633('0x37')][_0xf633('0x32')]({'where':{'id':_0x403b8f[_0xf633('0x53')]['id']}})['then'](handleEntityNotFound(_0x795c80,null))[_0xf633('0xf')](function(_0x5cd1e0){if(_0x5cd1e0){return _0x5cd1e0[_0xf633('0x14f')](_0x403b8f[_0xf633('0x47')][_0xf633('0x5e')]);}})[_0xf633('0xf')](respondWithStatusCode(_0x795c80,null))[_0xf633('0x1a')](handleError(_0x795c80,null));};exports[_0xf633('0x150')]=function(_0x3360fb,_0x10f66c){var _0x21aef4={},_0x473bfd={},_0x223e23={'count':0x0,'rows':[]};var _0x337bc3=db['CmHopper'][_0xf633('0x56')];_0x473bfd[_0xf633('0x54')]=_['keys'](_0x337bc3);_0x473bfd['query']=_[_0xf633('0x55')](_0x3360fb[_0xf633('0x47')]);_0x473bfd[_0xf633('0x57')]=_[_0xf633('0x58')](_0x473bfd['model'],_0x473bfd['query']);_0x473bfd[_0xf633('0x57')]=_[_0xf633('0xc0')](_0x473bfd[_0xf633('0x57')],[_0xf633('0x151'),_0xf633('0x152'),_0xf633('0x153'),_0xf633('0x154'),_0xf633('0x155'),_0xf633('0x156'),_0xf633('0x157'),_0xf633('0x158'),'$not',_0xf633('0x159'),_0xf633('0x15a'),_0xf633('0x15b'),'$notIn','$like',_0xf633('0x15c'),'$iLike',_0xf633('0x15d'),_0xf633('0x15e'),_0xf633('0x15f'),'$contains',_0xf633('0x160'),_0xf633('0x161')]);_0x21aef4['attributes']=_[_0xf633('0x58')](_0x473bfd[_0xf633('0x54')],qs['fields'](_0x3360fb[_0xf633('0x47')][_0xf633('0x59')]));_0x21aef4[_0xf633('0x45')]=_0x21aef4[_0xf633('0x45')][_0xf633('0x49')]?_0x21aef4[_0xf633('0x45')]:_0x473bfd['model'];if(!_0x3360fb[_0xf633('0x47')]['hasOwnProperty'](_0xf633('0xce'))){_0x21aef4[_0xf633('0x21')]=qs[_0xf633('0x21')](_0x3360fb['query'][_0xf633('0x21')]);_0x21aef4[_0xf633('0x1e')]=qs['offset'](_0x3360fb['query'][_0xf633('0x1e')]);}_0x21aef4[_0xf633('0xc3')]=qs[_0xf633('0xc4')](_0x3360fb['query']['sort']);_0x21aef4['where']=qs[_0xf633('0x57')](_[_0xf633('0xc5')](_0x3360fb[_0xf633('0x47')],_0x473bfd['filters']));if(_0x3360fb[_0xf633('0x47')][_0xf633('0x2e')]){_0x21aef4[_0xf633('0x3f')]=_[_0xf633('0xc6')](_0x21aef4[_0xf633('0x3f')],{'$or':_['map'](_0x21aef4['attributes'],function(_0x330150){var _0x10fea8={};_0x10fea8[_0x330150]={'$like':'%'+_0x3360fb[_0xf633('0x47')][_0xf633('0x2e')]+'%'};return _0x10fea8;})});}_0x21aef4[_0xf633('0x3f')]={'$and':[_0x21aef4['where'],{'$or':[{'UserId':_0x3360fb[_0xf633('0x53')]['id']},{'OwnerId':_0x3360fb[_0xf633('0x53')]['id']}]}]};_0x21aef4=_[_0xf633('0xc6')]({},_0x21aef4,_0x3360fb[_0xf633('0x5a')]);var _0x2ce6a9={'where':_0x21aef4['where']};return db['CmHopper'][_0xf633('0x20')](_0x2ce6a9)['then'](function(_0x4ab497){_0x223e23['count']=_0x4ab497;if(_0x3360fb[_0xf633('0x47')][_0xf633('0x40')]){_0x21aef4[_0xf633('0x41')]=[{'attributes':['id','firstName',_0xf633('0x162'),_0xf633('0xe3')],'model':db[_0xf633('0x163')],'as':_0xf633('0x164')},{'attributes':['id','name','dialActive'],'model':db[_0xf633('0x9f')],'as':'Queue'}];}return db['CmHopper'][_0xf633('0x46')](_0x21aef4);})[_0xf633('0xf')](function(_0x5e9cea){_0x223e23['rows']=_0x5e9cea;return _0x223e23;})[_0xf633('0xf')](respondWithFilteredResult(_0x10f66c,_0x21aef4))[_0xf633('0x1a')](handleError(_0x10f66c,null));};exports['getApiKey']=function(_0x25829e,_0x38674d){if(!_['isNil'](_0x25829e['user']['id'])&&(_0x25829e[_0xf633('0x29')][_0xf633('0x26')]==_0xf633('0x27')||_0x25829e['user'][_0xf633('0x26')]=='user')){return db['User'][_0xf633('0xc2')]({'where':{'id':_0x25829e[_0xf633('0x53')]['id']},'raw':!![]})[_0xf633('0xf')](function(_0x56c6e4){return authService[_0xf633('0x165')](_0x56c6e4);})[_0xf633('0xf')](function(_0x533c20){if(_0x533c20){return _0x38674d['status'](0xc8)[_0xf633('0x1d')]({'api_key':_0x533c20['token']});}else{return _0x38674d[_0xf633('0x1c')](0xcc)['json']({'message':'No\x20API\x20access\x20key\x20found!'});}})[_0xf633('0x1a')](handleError(_0x38674d,0x193));}else{return _0x38674d['status'](0x191)['json']({'message':_0xf633('0x166')});}};exports[_0xf633('0x167')]=function(_0x1f058b,_0x4c34f8){if(!_['isNil'](_0x1f058b[_0xf633('0x29')]['id'])&&(_0x1f058b[_0xf633('0x29')]['role']==_0xf633('0x27')||_0x1f058b[_0xf633('0x29')][_0xf633('0x26')]==_0xf633('0x29'))){return db[_0xf633('0x37')][_0xf633('0x32')]({'where':{'id':_0x1f058b[_0xf633('0x53')]['id']}})[_0xf633('0xf')](function(_0x5cde2c){return authService[_0xf633('0x168')](_0x5cde2c);})[_0xf633('0xf')](function(_0x8a771c){return db[_0xf633('0x37')][_0xf633('0x23')]({'apiKeyIat':_0x8a771c[_0xf633('0x169')],'apiKeyNonce':_0x8a771c['nonce']},{'where':{'id':_0x1f058b[_0xf633('0x53')]['id']}})[_0xf633('0xf')](function(){return _0x4c34f8[_0xf633('0x1c')](0xc8)['json']({'api_key':_0x8a771c[_0xf633('0x16a')]});});})['catch'](handleError(_0x4c34f8,0x193));}else{return _0x4c34f8[_0xf633('0x1c')](0x191)[_0xf633('0x1d')]({'message':_0xf633('0x166')});}};exports[_0xf633('0x16b')]=function(_0x112565,_0x200813){if(!_[_0xf633('0x64')](_0x112565[_0xf633('0x29')]['id'])&&(_0x112565[_0xf633('0x29')][_0xf633('0x26')]==_0xf633('0x27')||_0x112565[_0xf633('0x29')][_0xf633('0x26')]==_0xf633('0x29'))){return db[_0xf633('0x37')][_0xf633('0x32')]({'where':{'id':_0x112565['params']['id']}})[_0xf633('0xf')](handleEntityNotFound(_0x200813,null))[_0xf633('0xf')](function(_0x2401fd){if(_0x2401fd&&_0x2401fd[_0xf633('0x16c')]&&_0x2401fd[_0xf633('0x16d')])return _0x2401fd;else throw{'message':_0xf633('0x16e')};})[_0xf633('0xf')](function(){return db[_0xf633('0x37')][_0xf633('0x23')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x112565[_0xf633('0x53')]['id']}});})[_0xf633('0xf')](respondWithStatusCode(_0x200813,0xc8))['catch'](handleError(_0x200813,0x193));}else{return _0x200813[_0xf633('0x1c')](0x191)[_0xf633('0x1d')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0xf633('0x16f')]=function(_0x37304f,_0x3332c8){var _0x1c9fb4=_0x37304f['user'][_0xf633('0x25')]({'plain':!![]});if(!_0x1c9fb4){return _0x3332c8[_0xf633('0x1c')](0x191)[_0xf633('0x36')](_0xf633('0x170'));}else{Promise['resolve']()[_0xf633('0xf')](function(){if(_0x37304f[_0xf633('0x47')][_0xf633('0x44')]!==_0xf633('0x42'))return;return _0x37304f[_0xf633('0x29')][_0xf633('0x171')]();})[_0xf633('0xf')](function(_0x43d80d){if(!_0x43d80d)return;return _0x43d80d[_0xf633('0x25')]({'plain':!![]});})[_0xf633('0xf')](function(_0x192dd4){_0x1c9fb4['userSetting']=_0x192dd4;return _0x3332c8['status'](0xc8)['json'](_0x1c9fb4);});}};exports[_0xf633('0x172')]=function(_0x4f3151,_0x1e4d90){var _0x5d5e31={'offset':0x0},_0x35b3d3={'count':0x0,'rows':[]};Promise['resolve']()[_0xf633('0xf')](function(){if(!_0x4f3151[_0xf633('0x47')]['filter']&&!_0x4f3151[_0xf633('0x47')]['teams']&&!_0x4f3151[_0xf633('0x47')][_0xf633('0x173')])return[];return Promise['resolve']()['then'](function(){var _0x37c509=[];if(!_[_0xf633('0x83')](_0x4f3151['query']['teams'])){_0x37c509['push'](db[_0xf633('0x10b')][_0xf633('0x46')]({'attributes':['id',_0xf633('0x33')],'where':{'id':_0x4f3151[_0xf633('0x47')][_0xf633('0x174')]}}));}if(!_['isEmpty'](_0x4f3151[_0xf633('0x47')]['queues'])){_0x37c509[_0xf633('0x4a')](db[_0xf633('0x9f')][_0xf633('0x46')]({'attributes':['id','name'],'type':_0xf633('0x175'),'where':{'id':_0x4f3151['query'][_0xf633('0x173')]}}));}return Promise[_0xf633('0x51')](_0x37c509);})['then'](function(_0x462bbc){var _0x5935e6=_[_0xf633('0x117')](_0x462bbc)['map'](function(_0xab8466){return _0xab8466[_0xf633('0x122')]({'attributes':['id','name',_0xf633('0x63'),'online'],'raw':!![]});});return Promise[_0xf633('0x51')](_0x5935e6);})[_0xf633('0xf')](function(_0x374798){var _0xde287d=_['flatten'](_0x374798);if(!_0x4f3151['query']['filter'])return _0xde287d;if(_['isEmpty'](_0xde287d)){return db[_0xf633('0x37')]['findAll']({'attributes':['id','name',_0xf633('0x63'),_0xf633('0x93')],'where':{'role':_0xf633('0x2b'),'$or':[db['sequelize']['where'](db[_0xf633('0x66')]['fn'](_0xf633('0x176'),db[_0xf633('0x66')]['col']('name')),{'$like':'%'+_0x4f3151[_0xf633('0x47')]['filter'][_0xf633('0x9b')]()+'%'}),{'internal':{'$like':'%'+_0x4f3151[_0xf633('0x47')][_0xf633('0x2e')]+'%'}}]},'raw':!![]});}else{return _(_0xde287d)[_0xf633('0x117')]()[_0xf633('0x2e')](function(_0x2015cc){return _0x2015cc[_0xf633('0x33')][_0xf633('0x9b')]()['includes'](_0x4f3151[_0xf633('0x47')][_0xf633('0x2e')][_0xf633('0x9b')]())||_0x2015cc[_0xf633('0x63')][_0xf633('0x177')]()[_0xf633('0x31')](_0x4f3151['query'][_0xf633('0x2e')]);})[_0xf633('0x30')]();}})[_0xf633('0xf')](function(_0x22b8cf){var _0x2dcc0a='name';var _0x3f2b43='asc';if(_0x4f3151[_0xf633('0x47')][_0xf633('0xc4')]){_0x3f2b43=_0x4f3151[_0xf633('0x47')][_0xf633('0xc4')][0x0]==='-'?_0xf633('0x178'):_0xf633('0x179');_0x2dcc0a=_0x3f2b43===_0xf633('0x179')?_0x4f3151[_0xf633('0x47')]['sort']:_0x4f3151[_0xf633('0x47')][_0xf633('0xc4')][_0xf633('0x17a')](0x1);}return _(_0x22b8cf)['uniqBy']('id')[_0xf633('0x17b')]([function(_0x5c05dc){return _0x2dcc0a===_0xf633('0x33')?_0x5c05dc[_0x2dcc0a][_0xf633('0x9b')]():_0x5c05dc[_0x2dcc0a];}],[_0x3f2b43])['map'](function(_0x40546f){return _[_0xf633('0xc5')](_0x40546f,['id',_0xf633('0x33'),'internal',_0xf633('0x93')]);})[_0xf633('0x30')]();})[_0xf633('0xf')](function(_0x14b65f){return client[_0xf633('0x17c')](_0xf633('0x2a'),_0x4f3151)[_0xf633('0xf')](function(_0x4629e7){if(_0x4629e7['error'])throw new Error(_0xf633('0x17d'));var _0x510355=_0x4629e7[_0xf633('0x19')];var _0x77e85a=jayson[_0xf633('0x17e')]['http']({'port':0x232c});return _0x77e85a[_0xf633('0x17c')](_0xf633('0x2a'),_0x4f3151)[_0xf633('0xf')](function(_0x444dda){if(_0x444dda[_0xf633('0x16')])throw new Error('Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)');var _0x4fe6a0=_0x444dda[_0xf633('0x19')];return _['merge']({},_0x4fe6a0,_0x510355);});})[_0xf633('0xf')](function(_0x11927a){return _['map'](_0x14b65f,function(_0x1b825d){var _0x417212=_[_0xf633('0x32')](_0x11927a[_0xf633('0x4b')],['id',_0x1b825d['id']]);if(!_0x417212||!_0x1b825d[_0xf633('0x93')]){_0x1b825d[_0xf633('0x1c')]='offline';}else if(_0x417212[_0xf633('0xa3')]){_0x1b825d['status']='pause';}else{_0x1b825d[_0xf633('0x1c')]=_[_0xf633('0x31')]([_0xf633('0x17f'),'unknown',_0xf633('0x180'),_0xf633('0x181'),null,undefined],_0x417212[_0xf633('0x182')])?'online':_0xf633('0x183');}return _0x1b825d;});});});})['then'](function(_0x13f2f1){if(!_0x4f3151[_0xf633('0x47')][_0xf633('0xc7')](_0xf633('0xce'))){_0x5d5e31[_0xf633('0x21')]=qs['limit'](_0x4f3151[_0xf633('0x47')][_0xf633('0x21')]||0xa);_0x5d5e31[_0xf633('0x1e')]=qs[_0xf633('0x1e')](_0x4f3151[_0xf633('0x47')]['offset']);}_0x35b3d3[_0xf633('0x20')]=_0x13f2f1[_0xf633('0x49')];_0x35b3d3[_0xf633('0x4b')]=_0x5d5e31[_0xf633('0x21')]?_0x13f2f1[_0xf633('0x184')](_0x5d5e31[_0xf633('0x1e')],_0x5d5e31[_0xf633('0x1e')]+_0x5d5e31[_0xf633('0x21')]):_0x13f2f1;return _0x35b3d3;})[_0xf633('0xf')](respondWithFilteredResult(_0x1e4d90,_0x5d5e31))['catch'](handleError(_0x1e4d90,null));};function get_open_tabs(_0x2ea77b,_0x4fd1bc){var _0x513b2d=_0x2ea77b[_0xf633('0x185')](0x0)[_0xf633('0x186')]()+_0x2ea77b[_0xf633('0x184')](0x1);var _0x3b812e={'type':db[_0xf633('0x89')][_0xf633('0x187')][_0xf633('0x68')],'raw':!![]};return new BPromise(function(_0x1627c6,_0x2f1275){var _0x2f57dd=squel[_0xf633('0x188')]()[_0xf633('0x189')](_0xf633('0x18a')+_0x513b2d+_0xf633('0x18b'),'id')[_0xf633('0x189')]('ui.createdAt')[_0xf633('0x69')](_0xf633('0x18c')+_0x2ea77b+_0xf633('0x18d'),'ui')['where'](_0xf633('0x18e'),_0x4fd1bc['id']);return db[_0xf633('0x66')][_0xf633('0x47')](_0x2f57dd[_0xf633('0x177')](),_0x3b812e)['then'](function(_0x4f6ef1){_0x4fd1bc[_0x513b2d+_0xf633('0x18f')]=_0x4f6ef1;_0x1627c6(_0x4f6ef1);})[_0xf633('0x1a')](function(_0x84f6d2){_0x2f1275(_0x84f6d2);});});}
\ No newline at end of file
+var _0x89be=['ui.createdAt','user_has_','_interactions','ui.UserId\x20=\x20?','toString','moment','bluebird','util','path','lodash','squel','jayson/promise','ioredis','../../components/auth/service','../../config/logger','api','../../config/utils','APIBadRequestError','../../errors/api','APINotFoundError','handleError','../../mysqldb','socket.io-emitter','redis','./user.socket','register','defaults','localhost','client','http','request','then','request\x20sent','debug','stringify','error','code','message','User,\x20%s,\x20%s','result','status','end','offset','undefined','limit','count','set','Content-Range','json','update','userNotification:recalc:','destroy','role','admin','user','Agents','agent','telephone','ignore','value','name','UserProfileResource','sendStatus','stack','send','index','rawAttributes','map','type','filter','includes','password','salt','getOptions','where','User','query','userSetting','true','include','attributes','findAll','rows','length','push','chat','dataValues','fax','mail','whatsapp','all','show','params','model','differenceBy','keys','filters','intersection','fields','includeAll','UserSetting','merge','options','find','sms','openchannel','catch','body','describe','addContacts','ids','omit','internal','Setting','findById','securePassword','validatePasswordPattern','isNil','min_internal','sequelize','QueryTypes','SELECT','from','mailbox','VoiceMail','fullname','permissions','101','102','113','104','105','107','109','111','114','115','create','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','Telephones','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','bulkCreate','some','Unauthorized.\x20You\x20must\x20be\x20an\x20administrator\x20in\x20order\x20to\x20create\x20an\x20administrator','each','isEmpty','autoAssociation','compact','changePassword','oldPassword','newPassword','Sequelize','ValidationError','Invalid\x20body\x20format.\x20Use\x20oldPassword\x20and\x20newPassword','Invalid\x20body\x20format.\x20Use\x20newPassword','enforcePasswordHistory','passwordHistoryLimit','previousPasswords','validatePasswordHistory','updatePasswordsHistory','channel','loginInPause','interface','isValidChannel','capitalize','toLowerCase','Queues','penalty','spread','QueueId','emit','Queue:save','voice','VoiceQueue','get','format','SIP/%s','voicePause','UserVoiceQueueRt','removeQueues','Unknown\x20channel','Queue:remove','addAvatar','userpic','file','filename','getAvatar','root','server/files/images/logos/default_profile.png','download','existsSync','join','server/files/images/','getOpenTabs','ChatOpenTabs','CHAT','createdAt','FaxOpenTabs','FAX','OpenchannelOpenTabs','MailOpenTabs','MAIL','SmsOpenTabs','SMS','concat','findOne','CmContact','sort','pick','getContacts','hasOwnProperty','CmList','List','Tag','Tags','tag','nolimit','order','Queue','Unknown\x20role','getVoiceQueuesRt','ChatGroup','getGroups','VoiceRecording','getScreenRecordings','UserId','ScreenRecording','getChatInteractions','ChatInteraction','getOpenchannelInteractions','OpenchannelInteraction','getMailInteractions','MailInteraction','getSmsInteractions','SmsInteraction','getFaxInteractions','FaxInteraction','getWhatsappInteractions','WhatsappInteraction','login','phone','mobile','LOCAL/%s@from-sip/n','user:%s','headers','x-forwarded-for','remoteAddress','socket','connection','User\x20not\x20found\x20or\x20not\x20allowed\x20to\x20perform\x20login\x20method','getVoiceQueues','UserVoiceQueue.penalty','upsert','MemberReport','forEach','YYYY-MM-DD\x20HH:mm:ss','LOGIN','device','PAUSE','LOGININPAUSE','isMiddleware','resolve','logout','pause','QueuePause','getChannels','DEFAULT\x20PAUSE','unpause','mailPause','chatPause','faxPause','smsPause','whatsapppause','lastPauseAt','manual','%s%s','Pause','Team','getTeams','Body\x20parameter\x20\x27ids\x27\x20is\x20required','User\x20with\x20id\x20%s\x20not\x20found','transaction','addTeams','getAssociatedQueues','addAgent','getDataValue','TeamVoicePrefix','UserVoicePrefix','removeTeams','isArray','flattenDeep','online','Voice','getLists','getAgents','values','addChatInteractions','user_has_chat_interactions:save','removeChatInteractions','user_has_chat_interactions:remove','addMailInteractions','user_has_mail_interactions:save','removeMailInteractions','user_has_mail_interactions:remove','addFaxInteractions','removeFaxInteractions','user_has_fax_interactions:remove','user_has_sms_interactions:save','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','addFaxAccounts','removeFaxAccounts','getMailAccounts','addMailAccounts','removeMailAccounts','getOpenchannelAccounts','addOpenchannelAccounts','removeOpenchannelAccounts','getSmsAccounts','SmsAccount','addSmsAccounts','removeSmsAccounts','getChatWebsites','ChatWebsite','addChatWebsites','removeChatWebsites','WhatsappAccount','getWhatsappAccounts','addWhatsappAccounts','removeWhatsappAccounts','getSquareProjects','SquareProject','addSquareProjects','removeSquareProjects','getScheduledCalls','CmHopper','$and','$gt','$lt','$lte','$ne','$eq','$not','$between','$notBetween','$in','$notIn','$like','$notLike','$iLike','$notILike','$overlap','$contained','$any','firstName','lastName','getApiKey','retrieveApiKey','token','You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.','iat','nonce','apiKeyNonce','API\x20key\x20not\x20available','whoami','Unable\x20to\x20retrieve\x20the\x20current\x20user','getUserSetting','getPresence','teams','queues','inbound','flatten','col','asc','desc','orderBy','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(AMI)','Unable\x20to\x20retrieve\x20RPC\x20agents\x20(Routing)','offline','idle','unknown','unavailable','ringing','voiceStatus','busy','slice','charAt','field','ui.'];(function(_0x205c39,_0x5cca7f){var _0xa57bb5=function(_0x27cf00){while(--_0x27cf00){_0x205c39['push'](_0x205c39['shift']());}};_0xa57bb5(++_0x5cca7f);}(_0x89be,0x198));var _0xe89b=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x89be[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require(_0xe89b('0x0'));var BPromise=require(_0xe89b('0x1'));var util=require(_0xe89b('0x2'));var path=require(_0xe89b('0x3'));var fs=require('fs');var _=require(_0xe89b('0x4'));var squel=require(_0xe89b('0x5'));var jayson=require(_0xe89b('0x6'));var Redis=require(_0xe89b('0x7'));var authService=require(_0xe89b('0x8'));var qs=require('../../components/parsers/qs');var logger=require(_0xe89b('0x9'))(_0xe89b('0xa'));var utils=require(_0xe89b('0xb'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var APIBadRequestError=require('../../errors/api')[_0xe89b('0xc')];var APINotFoundError=require(_0xe89b('0xd'))[_0xe89b('0xe')];var APIHandleError=require('../../errors/api')[_0xe89b('0xf')];var db=require(_0xe89b('0x10'))['db'];var socket=require(_0xe89b('0x11'))(new Redis(config[_0xe89b('0x12')]));require(_0xe89b('0x13'))[_0xe89b('0x14')](socket);config[_0xe89b('0x12')]=_[_0xe89b('0x15')](config[_0xe89b('0x12')],{'host':_0xe89b('0x16'),'port':0x18eb});var client=jayson[_0xe89b('0x17')][_0xe89b('0x18')]({'port':0x232a});var values;function respondWithRpcPromise(_0x3de879,_0x5bb656,_0x2266d3,_0x4d8be4){return new BPromise(function(_0x4875e7,_0x47ce6c){var _0x31ccaa=_0x4d8be4||client;return _0x31ccaa[_0xe89b('0x19')](_0x3de879,_0x2266d3)[_0xe89b('0x1a')](function(_0x3e083f){logger['info']('User,\x20%s,\x20%s',_0x5bb656,_0xe89b('0x1b'));logger[_0xe89b('0x1c')]('User,\x20%s,\x20%s,\x20%s',_0x5bb656,_0xe89b('0x1b'),JSON[_0xe89b('0x1d')](_0x3e083f));if(_0x3e083f[_0xe89b('0x1e')]){if(_0x3e083f[_0xe89b('0x1e')][_0xe89b('0x1f')]===0x1f4){logger['error']('User,\x20%s,\x20%s',_0x5bb656,_0x3e083f[_0xe89b('0x1e')]['message']);return _0x47ce6c(_0x3e083f[_0xe89b('0x1e')][_0xe89b('0x20')]);}logger[_0xe89b('0x1e')](_0xe89b('0x21'),_0x5bb656,_0x3e083f['error'][_0xe89b('0x20')]);return _0x4875e7(_0x3e083f[_0xe89b('0x1e')][_0xe89b('0x20')]);}else{logger['info']('User,\x20%s,\x20%s',_0x5bb656,'request\x20sent');_0x4875e7(_0x3e083f[_0xe89b('0x22')][_0xe89b('0x20')]);}})['catch'](function(_0x4429c4){logger['error'](_0xe89b('0x21'),_0x5bb656,_0x4429c4);_0x47ce6c(_0x4429c4);});});}function respondWithStatusCode(_0x1ca52a,_0x1a0887){_0x1a0887=_0x1a0887||0xcc;return function(_0x12d4b4){if(_0x12d4b4){return _0x1ca52a['sendStatus'](_0x1a0887);}return _0x1ca52a[_0xe89b('0x23')](_0x1a0887)[_0xe89b('0x24')]();};}function respondWithResult(_0x3bd703,_0x3cb0a9){_0x3cb0a9=_0x3cb0a9||0xc8;return function(_0x5939c5){if(_0x5939c5){return _0x3bd703[_0xe89b('0x23')](_0x3cb0a9)['json'](_0x5939c5);}};}function respondWithFilteredResult(_0x321e7a,_0x4b729b){return function(_0x19f093){if(_0x19f093){var _0x2abd29=typeof _0x4b729b[_0xe89b('0x25')]===_0xe89b('0x26')&&typeof _0x4b729b[_0xe89b('0x27')]===_0xe89b('0x26');var _0x277c3b=_0x19f093[_0xe89b('0x28')];var _0x2680ce=_0x2abd29?0x0:_0x4b729b[_0xe89b('0x25')];var _0x5ed1a7=_0x2abd29?_0x19f093[_0xe89b('0x28')]:_0x4b729b[_0xe89b('0x25')]+_0x4b729b['limit'];var _0x440067;if(_0x5ed1a7>=_0x277c3b){_0x5ed1a7=_0x277c3b;_0x440067=0xc8;}else{_0x440067=0xce;}_0x321e7a[_0xe89b('0x23')](_0x440067);return _0x321e7a[_0xe89b('0x29')](_0xe89b('0x2a'),_0x2680ce+'-'+_0x5ed1a7+'/'+_0x277c3b)[_0xe89b('0x2b')](_0x19f093);}return null;};}function saveUpdates(_0x5a4d83){return function(_0x509e84){if(_0x509e84){return _0x509e84[_0xe89b('0x2c')](_0x5a4d83)['then'](function(_0x5463d8){socket['emit'](_0xe89b('0x2d')+_0x5463d8['id'],{});return _0x5463d8;});}return null;};}function removeEntity(_0x3e7e91){return function(_0x5e210e){if(_0x5e210e){return _0x5e210e[_0xe89b('0x2e')]()[_0xe89b('0x1a')](function(){var _0x256bd9=_0x5e210e['get']({'plain':!![]});if(_0x256bd9[_0xe89b('0x2f')]===_0xe89b('0x30'))return;var _0x17f78a=[{'name':'Users','value':_0xe89b('0x31'),'ignore':!![]},{'name':_0xe89b('0x32'),'value':_0xe89b('0x33'),'ignore':![]},{'name':'Telephones','value':_0xe89b('0x34'),'ignore':![]}];var _0x28af90=_(_0x17f78a)['filter'](_0xe89b('0x35'))['map']('value')[_0xe89b('0x36')]();if(_['includes'](_0x28af90,_0x256bd9[_0xe89b('0x2f')])){return;}var _0x115d6f=_['find'](_0x17f78a,[_0xe89b('0x36'),_0x256bd9[_0xe89b('0x2f')]])[_0xe89b('0x37')];return db[_0xe89b('0x38')]['destroy']({'where':{'type':_0x115d6f,'resourceId':_0x256bd9['id']}})['then'](function(){return _0x5e210e;});})[_0xe89b('0x1a')](function(){_0x3e7e91['status'](0xcc)[_0xe89b('0x24')]();});}};}function handleEntityNotFound(_0x4c9e2e){return function(_0xa75b7a){if(!_0xa75b7a){_0x4c9e2e[_0xe89b('0x39')](0x194);}return _0xa75b7a;};}function handleError(_0x5637dd,_0x462bd8){_0x462bd8=_0x462bd8||0x1f4;return function(_0x4b5834){logger[_0xe89b('0x1e')](_0x4b5834[_0xe89b('0x3a')]);if(_0x4b5834[_0xe89b('0x37')]){delete _0x4b5834[_0xe89b('0x37')];}_0x5637dd[_0xe89b('0x23')](_0x462bd8)[_0xe89b('0x3b')](_0x4b5834);};}exports[_0xe89b('0x3c')]=function(_0x1843df,_0x5cfd90){var _0x12eec7={},_0x4dfe27={'count':0x0,'rows':[]};var _0x54d15c=_(db['User'][_0xe89b('0x3d')])[_0xe89b('0x3e')](function(_0x39da2a){return{'name':_0x39da2a['fieldName'],'type':_0x39da2a[_0xe89b('0x3f')]['key']};})[_0xe89b('0x40')](function(_0x619f33){return!_[_0xe89b('0x41')]([_0xe89b('0x42'),_0xe89b('0x43')],_0x619f33['name']);})[_0xe89b('0x36')]();_0x12eec7=qs[_0xe89b('0x44')](_0x54d15c,_0x1843df);var _0x110dae={'where':_0x12eec7[_0xe89b('0x45')]};return db[_0xe89b('0x46')][_0xe89b('0x28')](_0x110dae)['then'](function(_0x222c4b){_0x4dfe27['count']=_0x222c4b;if(_0x1843df[_0xe89b('0x47')]['includeAll']){_0x12eec7['include']=[{'all':!![]}];}if(_0x1843df[_0xe89b('0x47')][_0xe89b('0x48')]===_0xe89b('0x49')){_0x12eec7[_0xe89b('0x4a')]=[{'model':db['UserSetting'],'as':_0xe89b('0x48')}];}if(!_[_0xe89b('0x41')](_0x12eec7['attributes'],'id')){_0x12eec7[_0xe89b('0x4b')]['push']('id');}return db[_0xe89b('0x46')][_0xe89b('0x4c')](_0x12eec7);})['then'](function(_0x27b3a4){_0x4dfe27[_0xe89b('0x4d')]=_0x27b3a4;if(_0x1843df[_0xe89b('0x47')]['openTabs']===_0xe89b('0x49')){var _0xfb0b18=[];for(var _0x5efe4b=0x0;_0x5efe4b<_0x4dfe27['rows'][_0xe89b('0x4e')];_0x5efe4b++){_0xfb0b18[_0xe89b('0x4f')](get_open_tabs(_0xe89b('0x50'),_0x4dfe27['rows'][_0x5efe4b][_0xe89b('0x51')]));_0xfb0b18[_0xe89b('0x4f')](get_open_tabs('sms',_0x4dfe27[_0xe89b('0x4d')][_0x5efe4b][_0xe89b('0x51')]));_0xfb0b18[_0xe89b('0x4f')](get_open_tabs(_0xe89b('0x52'),_0x4dfe27['rows'][_0x5efe4b][_0xe89b('0x51')]));_0xfb0b18[_0xe89b('0x4f')](get_open_tabs(_0xe89b('0x53'),_0x4dfe27['rows'][_0x5efe4b][_0xe89b('0x51')]));_0xfb0b18[_0xe89b('0x4f')](get_open_tabs('openchannel',_0x4dfe27['rows'][_0x5efe4b][_0xe89b('0x51')]));_0xfb0b18['push'](get_open_tabs(_0xe89b('0x54'),_0x4dfe27[_0xe89b('0x4d')][_0x5efe4b][_0xe89b('0x51')]));}return BPromise[_0xe89b('0x55')](_0xfb0b18)[_0xe89b('0x1a')](function(){return _0x4dfe27;});}else{return _0x4dfe27;}})[_0xe89b('0x1a')](respondWithFilteredResult(_0x5cfd90,_0x12eec7))['catch'](handleError(_0x5cfd90,null));};exports[_0xe89b('0x56')]=function(_0x362c71,_0x2e7259){var _0x139b43={'raw':![],'where':{'id':_0x362c71[_0xe89b('0x57')]['id']}},_0x1e109b={};_0x1e109b[_0xe89b('0x58')]=_[_0xe89b('0x59')](_[_0xe89b('0x5a')](db[_0xe89b('0x46')][_0xe89b('0x3d')]),['password',_0xe89b('0x43')]);_0x1e109b[_0xe89b('0x47')]=_['keys'](_0x362c71[_0xe89b('0x47')]);_0x1e109b[_0xe89b('0x5b')]=_[_0xe89b('0x5c')](_0x1e109b['model'],_0x1e109b['query']);_0x139b43[_0xe89b('0x4b')]=_[_0xe89b('0x5c')](_0x1e109b[_0xe89b('0x58')],qs[_0xe89b('0x5d')](_0x362c71[_0xe89b('0x47')][_0xe89b('0x5d')]));_0x139b43[_0xe89b('0x4b')]=_0x139b43[_0xe89b('0x4b')][_0xe89b('0x4e')]?_0x139b43[_0xe89b('0x4b')]:_0x1e109b[_0xe89b('0x58')];if(_0x362c71['query'][_0xe89b('0x5e')]){_0x139b43['include']=[{'all':!![]}];}if(_0x362c71[_0xe89b('0x47')][_0xe89b('0x48')]==='true'){_0x139b43[_0xe89b('0x4a')]=[{'model':db[_0xe89b('0x5f')],'as':_0xe89b('0x48')}];}_0x139b43=_[_0xe89b('0x60')]({},_0x139b43,_0x362c71[_0xe89b('0x61')]);if(!_['includes'](_0x139b43[_0xe89b('0x4b')],'id')){_0x139b43[_0xe89b('0x4b')][_0xe89b('0x4f')]('id');}return db[_0xe89b('0x46')][_0xe89b('0x62')](_0x139b43)[_0xe89b('0x1a')](handleEntityNotFound(_0x2e7259,null))[_0xe89b('0x1a')](function(_0xbf8453){var _0x53adcb=[];values=_0xbf8453;if(_0x362c71[_0xe89b('0x47')]['openTabs']==='true'){_0x53adcb[_0xe89b('0x4f')](get_open_tabs(_0xe89b('0x50'),_0xbf8453[_0xe89b('0x51')]));_0x53adcb[_0xe89b('0x4f')](get_open_tabs(_0xe89b('0x63'),_0xbf8453[_0xe89b('0x51')]));_0x53adcb[_0xe89b('0x4f')](get_open_tabs(_0xe89b('0x64'),_0xbf8453[_0xe89b('0x51')]));_0x53adcb['push'](get_open_tabs(_0xe89b('0x54'),_0xbf8453[_0xe89b('0x51')]));_0x53adcb[_0xe89b('0x4f')](get_open_tabs(_0xe89b('0x52'),_0xbf8453[_0xe89b('0x51')]));_0x53adcb[_0xe89b('0x4f')](get_open_tabs('mail',_0xbf8453['dataValues']));return BPromise['all'](_0x53adcb);}else{return values;}})[_0xe89b('0x1a')](function(){return values;})[_0xe89b('0x1a')](respondWithResult(_0x2e7259,null))[_0xe89b('0x65')](handleError(_0x2e7259,null));};exports[_0xe89b('0x2c')]=function(_0x222542,_0x32e430){if(_0x222542[_0xe89b('0x66')]['id']){delete _0x222542[_0xe89b('0x66')]['id'];}delete _0x222542[_0xe89b('0x66')]['role'];return db['User'][_0xe89b('0x62')]({'where':{'id':_0x222542['params']['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x32e430,null))[_0xe89b('0x1a')](saveUpdates(_0x222542[_0xe89b('0x66')],null))[_0xe89b('0x1a')](respondWithResult(_0x32e430,null))[_0xe89b('0x65')](handleError(_0x32e430,null));};exports[_0xe89b('0x67')]=function(_0x3d89a6,_0x146c07){return db[_0xe89b('0x46')][_0xe89b('0x67')]()[_0xe89b('0x1a')](respondWithResult(_0x146c07,null))[_0xe89b('0x65')](handleError(_0x146c07,null));};exports[_0xe89b('0x68')]=function(_0x5e7684,_0x48fe15){return db[_0xe89b('0x46')][_0xe89b('0x62')]({'where':{'id':_0x5e7684['params']['id']}})['then'](handleEntityNotFound(_0x48fe15,null))[_0xe89b('0x1a')](function(_0x4df584){if(_0x4df584){return _0x4df584[_0xe89b('0x68')](_0x5e7684[_0xe89b('0x66')][_0xe89b('0x69')],_[_0xe89b('0x6a')](_0x5e7684[_0xe89b('0x66')],[_0xe89b('0x69'),'id'])||{});}})[_0xe89b('0x1a')](respondWithResult(_0x48fe15,null))[_0xe89b('0x65')](handleError(_0x48fe15,null));};function validateUser(_0x22de51){return new BPromise(function(_0x1da9d5,_0x1f6e7d){if(_0x22de51[_0xe89b('0x6b')])return _0x1da9d5(_0x22de51);return db[_0xe89b('0x6c')][_0xe89b('0x6d')](0x1)[_0xe89b('0x1a')](function(_0x211702){if(_0x211702[_0xe89b('0x6e')])authService[_0xe89b('0x6f')](_0x22de51[_0xe89b('0x42')]);db[_0xe89b('0x46')]['max'](_0xe89b('0x6b'))[_0xe89b('0x1a')](function(_0x5edbf1){if(_[_0xe89b('0x70')](_0x5edbf1)){_0x22de51[_0xe89b('0x6b')]=_0x211702['min_internal']||0x1;return;}if(_[_0xe89b('0x70')](_0x211702[_0xe89b('0x71')])||_0x211702[_0xe89b('0x71')]===_0x5edbf1){_0x22de51[_0xe89b('0x6b')]=_0x5edbf1+0x1;return;}if(_0x211702[_0xe89b('0x71')]>_0x5edbf1){_0x22de51['internal']=_0x211702['min_internal'];return;}return db[_0xe89b('0x72')][_0xe89b('0x47')]('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[_0xe89b('0x72')][_0xe89b('0x73')][_0xe89b('0x74')]})[_0xe89b('0x1a')](function(_0x4034f6){if(_0x4034f6&&_0x4034f6[_0xe89b('0x4e')]){for(var _0x4716fa=0x0,_0x20d13f=_0x4034f6[_0xe89b('0x4e')];_0x4716fa<_0x20d13f&&_['isNil'](_0x22de51[_0xe89b('0x6b')]);_0x4716fa++){if(_0x211702[_0xe89b('0x71')]<=_0x4034f6[_0x4716fa][_0xe89b('0x75')]){_0x22de51[_0xe89b('0x6b')]=_0x4034f6[_0x4716fa][_0xe89b('0x75')];}else if(_0x211702[_0xe89b('0x71')]>_0x4034f6[_0x4716fa][_0xe89b('0x75')]&&_0x211702['min_internal']<=_0x4034f6[_0x4716fa]['to']){_0x22de51[_0xe89b('0x6b')]=_0x211702[_0xe89b('0x71')];}}}if(_['isNil'](_0x22de51['internal'])){_0x22de51[_0xe89b('0x6b')]=_0x5edbf1+0x1;}return _0x1da9d5(_0x22de51);});});})[_0xe89b('0x65')](function(_0x2eabc4){_0x1f6e7d(_0x2eabc4);});});}function updateUser(_0x590fbd){return new BPromise(function(_0x26320c,_0x44d7c7){try{if(_0x590fbd['voicemail']){_0x590fbd[_0xe89b('0x76')]=_0x590fbd[_0xe89b('0x6b')];_0x590fbd[_0xe89b('0x77')]={'mailbox':_0x590fbd['internal'],'password':_0x590fbd[_0xe89b('0x42')],'fullname':_0x590fbd[_0xe89b('0x78')],'email':_0x590fbd['email']};}if(_0x590fbd[_0xe89b('0x2f')]===_0xe89b('0x33')){if(!_0x590fbd[_0xe89b('0x79')])_0x590fbd[_0xe89b('0x79')]=[_0xe89b('0x7a'),_0xe89b('0x7b'),'103',_0xe89b('0x7c'),'110',_0xe89b('0x7d'),_0xe89b('0x7e'),'106',_0xe89b('0x7f'),'108',_0xe89b('0x80'),'100',_0xe89b('0x81'),_0xe89b('0x82'),_0xe89b('0x83')];}_0x26320c(_0x590fbd);}catch(_0xf3bf23){_0x44d7c7(_0xf3bf23);}});}exports[_0xe89b('0x84')]=function(_0x459fb5,_0x3be938){if(_0x459fb5['user'][_0xe89b('0x2f')]===_0xe89b('0x33'))throw new Error(_0xe89b('0x85'));if(_0x459fb5[_0xe89b('0x66')][_0xe89b('0x2f')]===_0xe89b('0x31')&&_0x459fb5[_0xe89b('0x31')]['role']!=='admin'){throw new Error(_0xe89b('0x86'));}if(_0x459fb5['body'][_0xe89b('0x2f')]==='admin'&&_0x459fb5['user']['role']!==_0xe89b('0x30')){throw new Error(_0xe89b('0x87'));}return licenseUtil[_0xe89b('0x88')]([_0x459fb5[_0xe89b('0x66')]])[_0xe89b('0x1a')](function(){return validateUser(_0x459fb5[_0xe89b('0x66')]);})[_0xe89b('0x1a')](function(_0x273801){return updateUser(_0x273801)['then'](function(_0x183ba1){if(_0x183ba1[_0xe89b('0x2f')]===_0xe89b('0x30')){_0x183ba1[_0xe89b('0x89')]=_0x459fb5['user']['settingsEnabled'];delete _0x183ba1['userProfileId'];}return _0x183ba1;});})['then'](function(_0x2e7c94){return db['User'][_0xe89b('0x84')](_0x2e7c94,{'include':[{'model':db[_0xe89b('0x77')],'as':'VoiceMail'}]});})[_0xe89b('0x1a')](function(_0x3085fc){if(_0x459fb5[_0xe89b('0x66')]['role']===_0xe89b('0x31'))return _0x3085fc;if(_0x459fb5[_0xe89b('0x31')]['role']!==_0xe89b('0x31'))return _0x3085fc;return db[_0xe89b('0x8a')][_0xe89b('0x62')]({'where':{'name':_0x3085fc[_0xe89b('0x2f')]===_0xe89b('0x33')?_0xe89b('0x32'):_0xe89b('0x8b'),'userProfileId':_0x459fb5[_0xe89b('0x31')]['userProfileId']},'raw':!![]})['then'](function(_0x5c16e2){if(!_0x5c16e2||_0x5c16e2['autoAssociation']!=0x0)return _0x3085fc;return db[_0xe89b('0x38')][_0xe89b('0x84')]({'name':_0x3085fc[_0xe89b('0x37')],'resourceId':_0x3085fc['id'],'type':_0x5c16e2[_0xe89b('0x37')],'sectionId':_0x5c16e2['id']},{})['then'](function(){return _0x3085fc;});})['catch'](function(_0x42c26b){logger[_0xe89b('0x1e')](_0xe89b('0x8c'),_0x42c26b);throw _0x42c26b;});})[_0xe89b('0x1a')](respondWithResult(_0x3be938,0xc9))['catch'](handleError(_0x3be938,null));};exports[_0xe89b('0x8d')]=function(_0x5d305f,_0x398c13){var _0x459c29=_0x5d305f[_0xe89b('0x66')];var _0x1430c6=[];if(_0x5d305f['user'][_0xe89b('0x2f')]===_0xe89b('0x33'))throw new Error(_0xe89b('0x85'));if(_['some'](_0x459c29,[_0xe89b('0x2f'),'user'])&&_0x5d305f['user'][_0xe89b('0x2f')]!==_0xe89b('0x30')){throw new Error(_0xe89b('0x86'));}if(_[_0xe89b('0x8e')](_0x459c29,['role',_0xe89b('0x30')])&&_0x5d305f[_0xe89b('0x31')][_0xe89b('0x2f')]!==_0xe89b('0x30')){throw new Error(_0xe89b('0x8f'));}return licenseUtil[_0xe89b('0x88')](_0x459c29)[_0xe89b('0x1a')](function(){return validateUser(_0x459c29[0x0]);})[_0xe89b('0x1a')](function(){for(var _0x45662c=0x1;_0x45662c<_0x459c29[_0xe89b('0x4e')];_0x45662c++){var _0x1dad5d=_0x459c29[_0x45662c-0x1][_0xe89b('0x6b')];if(!_0x459c29[_0x45662c][_0xe89b('0x6b')])_0x459c29[_0x45662c]['internal']=_0x1dad5d+0x1;_0x1430c6[_0xe89b('0x4f')](validateUser(_0x459c29[_0x45662c]));}return BPromise[_0xe89b('0x55')](_0x1430c6);})[_0xe89b('0x1a')](function(){_0x1430c6=[];for(var _0x1b3631=0x0;_0x1b3631<_0x459c29[_0xe89b('0x4e')];_0x1b3631++){_0x1430c6[_0xe89b('0x4f')](updateUser(_0x459c29[_0x1b3631]));}return BPromise['all'](_0x1430c6);})['then'](function(){return BPromise[_0xe89b('0x90')](_0x459c29,function(_0x77f06b){return db[_0xe89b('0x46')]['create'](_0x77f06b,{'include':[{'model':db[_0xe89b('0x77')],'as':_0xe89b('0x77')}]})['then'](function(_0x16833b){_0x77f06b['id']=_0x16833b['id'];return _0x77f06b;});});})[_0xe89b('0x1a')](function(_0x5ce84b){if(_0x5d305f['body'][_0xe89b('0x2f')]==='user')return _0x5ce84b;if(_0x5d305f[_0xe89b('0x31')][_0xe89b('0x2f')]!==_0xe89b('0x31'))return _0x5ce84b;var _0x23706a=_[_0xe89b('0x8e')](_0x5ce84b,function(_0xa28721){return _0xa28721[_0xe89b('0x2f')]===_0xe89b('0x33')||_0xa28721[_0xe89b('0x2f')]==='telephone';});if(!_0x23706a)return _0x5ce84b;return db[_0xe89b('0x8a')]['findAll']({'where':{'name':{'$or':['Agents',_0xe89b('0x8b')]},'userProfileId':_0x5d305f['user']['userProfileId']},'raw':!![]})[_0xe89b('0x1a')](function(_0x21f2cd){if(_[_0xe89b('0x91')](_0x21f2cd)||!_[_0xe89b('0x8e')](_0x21f2cd,[_0xe89b('0x92'),0x0]))return _0x5ce84b;_0x1430c6=[];var _0x30619b=_(_0x21f2cd)[_0xe89b('0x3e')](function(_0xd0d6b0){if(_0xd0d6b0[_0xe89b('0x92')]===0x1)return;return _0xd0d6b0[_0xe89b('0x37')]==='Agents'?_0xe89b('0x33'):_0xe89b('0x34');})[_0xe89b('0x93')]()[_0xe89b('0x36')]();for(var _0x345788=0x0;_0x345788<_0x5ce84b[_0xe89b('0x4e')];_0x345788++){if(!_['includes'](_0x30619b,_0x5ce84b[_0x345788]['role']))return;var _0x1188e3=_0x5ce84b[_0x345788][_0xe89b('0x2f')]===_0xe89b('0x33')?'Agents':'Telephones';_0x1430c6[_0xe89b('0x4f')](db[_0xe89b('0x38')][_0xe89b('0x84')]({'name':_0x5ce84b[_0x345788][_0xe89b('0x37')],'resourceId':_0x5ce84b[_0x345788]['id'],'type':_0x1188e3,'sectionId':_[_0xe89b('0x62')](_0x21f2cd,[_0xe89b('0x37'),_0x1188e3])['id']},{}));}return BPromise[_0xe89b('0x55')](_0x1430c6);});})[_0xe89b('0x1a')](respondWithResult(_0x398c13,0xc9))['catch'](handleError(_0x398c13,null));};exports[_0xe89b('0x94')]=function(_0x3a321b,_0x58756e){if(_0x3a321b[_0xe89b('0x66')]['id']){delete _0x3a321b['body']['id'];}return db[_0xe89b('0x46')]['find']({'where':{'id':_0x3a321b[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](function(_0x15e6c2){if(!_0x15e6c2)return null;if(_0x15e6c2['id']===_0x3a321b[_0xe89b('0x31')]['id']){if(!_0x3a321b[_0xe89b('0x66')][_0xe89b('0x95')]||!_0x3a321b[_0xe89b('0x66')][_0xe89b('0x96')]){throw new db[(_0xe89b('0x97'))][(_0xe89b('0x98'))](_0xe89b('0x99'));}if(!_0x15e6c2['authenticate'](_0x3a321b['body'][_0xe89b('0x95')])){throw new db[(_0xe89b('0x97'))][(_0xe89b('0x98'))]('Wrong\x20credentials');}if(_0x3a321b[_0xe89b('0x66')][_0xe89b('0x95')]===_0x3a321b[_0xe89b('0x66')][_0xe89b('0x96')]){throw new db[(_0xe89b('0x97'))][(_0xe89b('0x98'))]('New\x20password\x20must\x20be\x20different\x20from\x20old\x20password');}}else if(_0x3a321b['user']['role']===_0xe89b('0x30')){if(!_0x3a321b[_0xe89b('0x66')][_0xe89b('0x96')]){throw new db[(_0xe89b('0x97'))][(_0xe89b('0x98'))]('Invalid\x20body\x20format.\x20Use\x20newPassword');}}else if(_0x3a321b[_0xe89b('0x31')][_0xe89b('0x2f')]===_0xe89b('0x31')){if(!_0x3a321b[_0xe89b('0x66')][_0xe89b('0x96')]){throw new db[(_0xe89b('0x97'))][(_0xe89b('0x98'))](_0xe89b('0x9a'));}if(_0x15e6c2[_0xe89b('0x2f')]!=='agent'){throw new db[(_0xe89b('0x97'))][(_0xe89b('0x98'))]('Unauthorized');}}else{throw new db['Sequelize'][(_0xe89b('0x98'))](_0xe89b('0x85'));}return _0x15e6c2;})[_0xe89b('0x1a')](handleEntityNotFound(_0x58756e,null))[_0xe89b('0x1a')](function(_0x3449b5){return db[_0xe89b('0x6c')]['findOne']({'attributes':['id',_0xe89b('0x6e'),_0xe89b('0x9b'),_0xe89b('0x9c')]})[_0xe89b('0x1a')](function(_0x796cd5){if(_0x796cd5[_0xe89b('0x6e')])authService[_0xe89b('0x6f')](_0x3a321b[_0xe89b('0x66')]['newPassword']);if(!_0x796cd5[_0xe89b('0x9b')]||!_0x3449b5[_0xe89b('0x9d')])return _0x3449b5;authService[_0xe89b('0x9e')](_0x3a321b['body']['newPassword'],_0x3449b5[_0xe89b('0x9d')],_0x796cd5[_0xe89b('0x9c')]);return _0x3449b5;})['then'](saveUpdates({'password':_0x3a321b[_0xe89b('0x66')]['newPassword'],'passwordResetAt':_0x3a321b[_0xe89b('0x31')]['id']==_0x3a321b[_0xe89b('0x57')]['id']?moment():null,'previousPasswords':authService[_0xe89b('0x9f')](_0x3a321b[_0xe89b('0x66')]['newPassword'],_0x3449b5[_0xe89b('0x9d')])},null));})[_0xe89b('0x1a')](respondWithResult(_0x58756e,null))[_0xe89b('0x65')](handleError(_0x58756e,null));};exports['addQueues']=function(_0x228973,_0x2a23e3){var _0x379721=_0x228973[_0xe89b('0x66')][_0xe89b('0xa0')];return db['User'][_0xe89b('0x62')]({'where':{'id':_0x228973[_0xe89b('0x57')]['id']},'attributes':['id',_0xe89b('0x37'),_0xe89b('0x2f'),'online',_0xe89b('0xa1'),'voicePause',_0xe89b('0xa2')]})[_0xe89b('0x1a')](handleEntityNotFound(_0x2a23e3,null))[_0xe89b('0x1a')](function(_0x3a6e7a){if(_0x3a6e7a){if(!utils[_0xe89b('0xa3')](_0x379721)){throw new db[(_0xe89b('0x97'))][(_0xe89b('0x98'))]('Unknown\x20channel');}return _0x3a6e7a['add'+_[_0xe89b('0xa4')](_0x379721[_0xe89b('0xa5')]())+_0xe89b('0xa6')](_0x228973[_0xe89b('0x66')][_0xe89b('0x69')],{'penalty':_0x228973[_0xe89b('0x66')][_0xe89b('0xa7')]||0x0})[_0xe89b('0xa8')](function(_0x4c35af){for(var _0x2e9406=0x0;_0x2e9406<_0x228973[_0xe89b('0x66')][_0xe89b('0x69')]['length'];_0x2e9406+=0x1){var _0x4953c3={'UserId':Number(_0x228973['params']['id'])};_0x4953c3[_[_0xe89b('0xa4')](_0x379721[_0xe89b('0xa5')]())+_0xe89b('0xa9')]=Number(_0x228973[_0xe89b('0x66')][_0xe89b('0x69')][_0x2e9406]);socket[_0xe89b('0xaa')]('user'+_[_0xe89b('0xa4')](_0x379721[_0xe89b('0xa5')]())+_0xe89b('0xab'),_0x4953c3);}return _0x4c35af;})[_0xe89b('0x1a')](function(){if(_0x379721===_0xe89b('0xac')){return db[_0xe89b('0xad')][_0xe89b('0x4c')]({'where':{'id':_0x228973[_0xe89b('0x66')][_0xe89b('0x69')]||[]},'raw':!![],'attributes':['id','name']});}})[_0xe89b('0x1a')](function(_0x69b710){var _0x40e149=_0x3a6e7a[_0xe89b('0xae')]({'plain':!![]});var _0x4448b3=[];if(_0x379721===_0xe89b('0xac')&&_0x40e149['role']==='agent'&&_0x40e149['online']){for(var _0x4cc5be=0x0;_0x4cc5be<_0x69b710[_0xe89b('0x4e')];_0x4cc5be+=0x1){_0x4448b3[_0xe89b('0x4f')]({'membername':_0x40e149['name'],'UserId':_0x40e149['id'],'queue_name':_0x69b710[_0x4cc5be]['name'],'VoiceQueueId':_0x69b710[_0x4cc5be]['id'],'interface':_['isNil'](_0x40e149['interface'])?util[_0xe89b('0xaf')](_0xe89b('0xb0'),_0x40e149[_0xe89b('0x37')]):_0x40e149['interface'],'paused':_0x40e149[_0xe89b('0xb1')]||![],'penalty':_0x228973['body']['penalty']||0x0});}return BPromise[_0xe89b('0x90')](_0x4448b3,function(_0x4cc560){return db[_0xe89b('0xb2')]['upsert'](_0x4cc560);});}return _0x3a6e7a;});}})['then'](respondWithStatusCode(_0x2a23e3,null))[_0xe89b('0x65')](handleError(_0x2a23e3,null));};exports[_0xe89b('0xb3')]=function(_0x459ed3,_0x28818c){var _0x26c9d9,_0x78e1c;return db['User'][_0xe89b('0x62')]({'where':{'id':_0x459ed3['params']['id']},'attributes':['id',_0xe89b('0x37'),_0xe89b('0x2f')]})[_0xe89b('0x1a')](handleEntityNotFound(_0x28818c,null))[_0xe89b('0x1a')](function(_0x4ea846){if(_0x4ea846){_0x26c9d9=_0x4ea846;if(!_0x459ed3['query'][_0xe89b('0xa0')]||!utils[_0xe89b('0xa3')](_0x459ed3['query'][_0xe89b('0xa0')])){throw new db[(_0xe89b('0x97'))][(_0xe89b('0x98'))](_0xe89b('0xb4'));}return _0x4ea846['remove'+_['capitalize'](_0x459ed3['query'][_0xe89b('0xa0')][_0xe89b('0xa5')]())+_0xe89b('0xa6')](_0x459ed3['query'][_0xe89b('0x69')]);}})['then'](function(_0x4bfa52){if(_['isArray'](_0x459ed3['query']['ids'])){for(var _0x1b94f2=0x0;_0x1b94f2<_0x459ed3['query'][_0xe89b('0x69')][_0xe89b('0x4e')];_0x1b94f2+=0x1){_0x78e1c={'UserId':Number(_0x459ed3[_0xe89b('0x57')]['id'])};_0x78e1c[_[_0xe89b('0xa4')](_0x459ed3[_0xe89b('0x47')][_0xe89b('0xa0')][_0xe89b('0xa5')]())+_0xe89b('0xa9')]=Number(_0x459ed3[_0xe89b('0x47')]['ids'][_0x1b94f2]);socket[_0xe89b('0xaa')]('user'+_[_0xe89b('0xa4')](_0x459ed3[_0xe89b('0x47')][_0xe89b('0xa0')][_0xe89b('0xa5')]())+_0xe89b('0xb5'),_0x78e1c);}}else{_0x78e1c={'UserId':Number(_0x459ed3[_0xe89b('0x57')]['id'])};_0x78e1c[_[_0xe89b('0xa4')](_0x459ed3[_0xe89b('0x47')][_0xe89b('0xa0')][_0xe89b('0xa5')]())+_0xe89b('0xa9')]=Number(_0x459ed3[_0xe89b('0x47')][_0xe89b('0x69')]);socket[_0xe89b('0xaa')](_0xe89b('0x31')+_[_0xe89b('0xa4')](_0x459ed3['query']['channel']['toLowerCase']())+_0xe89b('0xb5'),_0x78e1c);}return _0x4bfa52;})[_0xe89b('0x1a')](function(){if(_0x459ed3['query'][_0xe89b('0xa0')]===_0xe89b('0xac')){return db[_0xe89b('0xb2')][_0xe89b('0x2e')]({'where':{'UserId':_0x459ed3[_0xe89b('0x57')]['id'],'VoiceQueueId':_0x459ed3[_0xe89b('0x47')][_0xe89b('0x69')]},'individualHooks':!![]})[_0xe89b('0x1a')](function(){return _0x26c9d9;});}return _0x26c9d9;})[_0xe89b('0x1a')](respondWithStatusCode(_0x28818c,null))[_0xe89b('0x65')](handleError(_0x28818c,null));};exports[_0xe89b('0xb6')]=function(_0x5f8851,_0x3d66fb){_0x5f8851[_0xe89b('0x66')][_0xe89b('0xb7')]=_0x5f8851[_0xe89b('0xb8')][_0xe89b('0xb9')];return db[_0xe89b('0x46')][_0xe89b('0x62')]({'where':{'id':_0x5f8851[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x3d66fb,null))[_0xe89b('0x1a')](saveUpdates(_0x5f8851[_0xe89b('0x66')],null))['then'](respondWithResult(_0x3d66fb,null))[_0xe89b('0x65')](handleError(_0x3d66fb,null));};exports[_0xe89b('0xba')]=function(_0x503ab7,_0x33f8a2){var _0x10d839=path['join'](config[_0xe89b('0xbb')],_0xe89b('0xbc'));return db[_0xe89b('0x46')][_0xe89b('0x62')]({'where':{'id':_0x503ab7[_0xe89b('0x57')]['id']},'attributes':['id',_0xe89b('0xb7')],'raw':!![]})['then'](handleEntityNotFound(_0x33f8a2,null))[_0xe89b('0x1a')](function(_0x4d0356){if(_0x4d0356){if(_['isNil'](_0x4d0356['userpic'])){return _0x33f8a2[_0xe89b('0xbd')](_0x10d839);}else{if(!fs[_0xe89b('0xbe')](path[_0xe89b('0xbf')](config[_0xe89b('0xbb')],_0xe89b('0xc0'),_0x4d0356['userpic']))){return _0x33f8a2[_0xe89b('0xbd')](_0x10d839);}return _0x33f8a2['download'](path[_0xe89b('0xbf')](config[_0xe89b('0xbb')],_0xe89b('0xc0'),_0x4d0356[_0xe89b('0xb7')]));}}})['catch'](handleError(_0x33f8a2,null));};exports[_0xe89b('0xc1')]=function(_0x5883bf,_0x16ef02){return db[_0xe89b('0x46')][_0xe89b('0x62')]({'where':{'id':_0x5883bf[_0xe89b('0x57')]['id']},'attributes':['id']})[_0xe89b('0x1a')](handleEntityNotFound(_0x16ef02,null))[_0xe89b('0x1a')](function(_0x20ef50){var _0x3a96c9=[];values=_0x20ef50['dataValues'];_0x3a96c9['push'](get_open_tabs(_0xe89b('0x50'),_0x20ef50[_0xe89b('0x51')]));_0x3a96c9['push'](get_open_tabs('sms',_0x20ef50[_0xe89b('0x51')]));_0x3a96c9[_0xe89b('0x4f')](get_open_tabs(_0xe89b('0x64'),_0x20ef50['dataValues']));_0x3a96c9['push'](get_open_tabs(_0xe89b('0x54'),_0x20ef50[_0xe89b('0x51')]));_0x3a96c9[_0xe89b('0x4f')](get_open_tabs(_0xe89b('0x52'),_0x20ef50[_0xe89b('0x51')]));_0x3a96c9[_0xe89b('0x4f')](get_open_tabs('mail',_0x20ef50[_0xe89b('0x51')]));return BPromise[_0xe89b('0x55')](_0x3a96c9);})[_0xe89b('0x1a')](function(_0x25c3b2){if(_0x25c3b2){var _0x523957=_['map'](values[_0xe89b('0xc2')],function(_0x2070e0){return{'channel':_0xe89b('0xc3'),'id':_0x2070e0['id'],'createdAt':_0x2070e0[_0xe89b('0xc4')]};});var _0x11f366=_[_0xe89b('0x3e')](values[_0xe89b('0xc5')],function(_0x25dd95){return{'channel':_0xe89b('0xc6'),'id':_0x25dd95['id'],'createdAt':_0x25dd95['createdAt']};});var _0x3ce763=_[_0xe89b('0x3e')](values[_0xe89b('0xc7')],function(_0x52b53c){return{'channel':'OPENCHANNEL','id':_0x52b53c['id'],'createdAt':_0x52b53c['createdAt']};});var _0x4ac32d=_['map'](values[_0xe89b('0xc8')],function(_0x4e2a4c){return{'channel':_0xe89b('0xc9'),'id':_0x4e2a4c['id'],'createdAt':_0x4e2a4c[_0xe89b('0xc4')]};});var _0x1b5e5e=_[_0xe89b('0x3e')](values[_0xe89b('0xca')],function(_0x5b1e0d){return{'channel':_0xe89b('0xcb'),'id':_0x5b1e0d['id'],'createdAt':_0x5b1e0d['createdAt']};});var _0x2efb0f=_[_0xe89b('0x3e')](values['WhatsappOpenTabs'],function(_0x1bb37d){return{'channel':'WHATSAPP','id':_0x1bb37d['id'],'createdAt':_0x1bb37d[_0xe89b('0xc4')]};});var _0x2da5f8=_[_0xe89b('0xcc')](_0x523957,_0x11f366,_0x3ce763,_0x4ac32d,_0x1b5e5e,_0x2efb0f);var _0x1bddf0={'count':_0x2da5f8[_0xe89b('0x4e')],'rows':_0x2da5f8};return _0x1bddf0;}else return null;})[_0xe89b('0x1a')](respondWithResult(_0x16ef02,null))['catch'](handleError(_0x16ef02,null));};exports['getContacts']=function(_0x1740fa,_0xf2ffd1){var _0x477b56={};var _0x42bf1c={};var _0x1c1dc2;var _0x554db5;return db[_0xe89b('0x46')][_0xe89b('0xcd')]({'where':{'id':_0x1740fa[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0xf2ffd1,null))[_0xe89b('0x1a')](function(_0x4ffcdc){if(_0x4ffcdc){_0x1c1dc2=_0x4ffcdc;_0x42bf1c[_0xe89b('0x58')]=_['keys'](db[_0xe89b('0xce')][_0xe89b('0x3d')]);_0x42bf1c[_0xe89b('0x47')]=_[_0xe89b('0x5a')](_0x1740fa[_0xe89b('0x47')]);_0x42bf1c[_0xe89b('0x5b')]=_[_0xe89b('0x5c')](_0x42bf1c[_0xe89b('0x58')],_0x42bf1c[_0xe89b('0x47')]);_0x477b56[_0xe89b('0x4b')]=_['intersection'](_0x42bf1c[_0xe89b('0x58')],qs['fields'](_0x1740fa[_0xe89b('0x47')]['fields']));_0x477b56['attributes']=_0x477b56[_0xe89b('0x4b')][_0xe89b('0x4e')]?_0x477b56[_0xe89b('0x4b')]:_0x42bf1c['model'];_0x477b56['order']=qs[_0xe89b('0xcf')](_0x1740fa[_0xe89b('0x47')]['sort']);_0x477b56[_0xe89b('0x45')]=qs[_0xe89b('0x5b')](_[_0xe89b('0xd0')](_0x1740fa[_0xe89b('0x47')],_0x42bf1c[_0xe89b('0x5b')]));if(_0x1740fa['query'][_0xe89b('0x40')]){_0x477b56[_0xe89b('0x45')]=_[_0xe89b('0x60')](_0x477b56[_0xe89b('0x45')],{'$or':_[_0xe89b('0x3e')](_0x477b56[_0xe89b('0x4b')],function(_0x70af56){var _0x42a9ed={};_0x42a9ed[_0x70af56]={'$like':'%'+_0x1740fa['query'][_0xe89b('0x40')]+'%'};return _0x42a9ed;})});}_0x477b56=_[_0xe89b('0x60')]({},_0x477b56,_0x1740fa['options']);return _0x1c1dc2[_0xe89b('0xd1')](_0x477b56);}})[_0xe89b('0x1a')](function(_0x2abe9c){if(_0x2abe9c){_0x554db5=_0x2abe9c[_0xe89b('0x4e')];if(_0x1740fa['query'][_0xe89b('0xd2')]('includeAll')){_0x477b56[_0xe89b('0x4a')]=[{'model':db[_0xe89b('0xd3')],'as':_0xe89b('0xd4'),'required':![]},{'model':db[_0xe89b('0xd5')],'as':_0xe89b('0xd6'),'attributes':['id',_0xe89b('0x37'),'color'],'where':_0x1740fa[_0xe89b('0x47')]['tag']?{'id':_0x1740fa['query'][_0xe89b('0xd7')]}:undefined,'required':_0x1740fa[_0xe89b('0x47')][_0xe89b('0xd7')]?!![]:![]}];}if(!_0x1740fa[_0xe89b('0x47')][_0xe89b('0xd2')](_0xe89b('0xd8'))){_0x477b56[_0xe89b('0x27')]=qs[_0xe89b('0x27')](_0x1740fa[_0xe89b('0x47')][_0xe89b('0x27')]);_0x477b56['offset']=qs[_0xe89b('0x25')](_0x1740fa[_0xe89b('0x47')][_0xe89b('0x25')]);}return _0x1c1dc2[_0xe89b('0xd1')](_0x477b56);}})['then'](function(_0x2c74ac){if(_0x2c74ac){return _0x2c74ac?{'count':_0x554db5,'rows':_0x2c74ac}:null;}})['then'](respondWithResult(_0xf2ffd1,null))['catch'](handleError(_0xf2ffd1,null));};exports['getQueues']=function(_0x59691f,_0x3a3af3){var _0x1834c0;var _0x17966f={};var _0x50313c;return db[_0xe89b('0x46')][_0xe89b('0xcd')]({'where':{'id':_0x59691f[_0xe89b('0x57')]['id']},'attributes':['id',_0xe89b('0x37'),_0xe89b('0x2f')]})[_0xe89b('0x1a')](handleEntityNotFound(_0x3a3af3,null))['then'](function(_0x5494e6){if(!utils['isValidChannel'](_0x59691f[_0xe89b('0x47')][_0xe89b('0xa0')])){throw new db[(_0xe89b('0x97'))]['ValidationError'](_0xe89b('0xb4'));}_0x1834c0=_0x5494e6;var _0x105647={};_0x105647[_0xe89b('0x58')]=_['keys'](db[_[_0xe89b('0xa4')](_0x59691f[_0xe89b('0x47')][_0xe89b('0xa0')])+'Queue'][_0xe89b('0x3d')]);_0x105647[_0xe89b('0x47')]=_[_0xe89b('0x5a')](_0x59691f['query']);_0x105647['filters']=_[_0xe89b('0x5c')](_0x105647['model'],_0x105647[_0xe89b('0x47')]);_0x17966f['attributes']=_[_0xe89b('0x5c')](_0x105647[_0xe89b('0x58')],qs['fields'](_0x59691f['query'][_0xe89b('0x5d')]));_0x17966f[_0xe89b('0x4b')]=_0x17966f['attributes'][_0xe89b('0x4e')]?_0x17966f[_0xe89b('0x4b')]:_0x105647[_0xe89b('0x58')];_0x17966f[_0xe89b('0xd9')]=qs[_0xe89b('0xcf')](_0x59691f['query'][_0xe89b('0xcf')]);_0x17966f[_0xe89b('0x45')]=qs[_0xe89b('0x5b')](_[_0xe89b('0xd0')](_0x59691f[_0xe89b('0x47')],_0x105647['filters']));if(_0x59691f[_0xe89b('0x47')][_0xe89b('0x40')]){_0x17966f[_0xe89b('0x45')]=_[_0xe89b('0x60')](_0x17966f[_0xe89b('0x45')],{'$or':_[_0xe89b('0x3e')](_0x17966f[_0xe89b('0x4b')],function(_0xf2aeee){var _0x4f8935={};_0x4f8935[_0xf2aeee]={'$like':'%'+_0x59691f['query'][_0xe89b('0x40')]+'%'};return _0x4f8935;})});}_0x17966f=_[_0xe89b('0x60')]({},_0x17966f,_0x59691f[_0xe89b('0x61')]);switch(_0x1834c0['role']){case _0xe89b('0x30'):return db[_[_0xe89b('0xa4')](_0x59691f[_0xe89b('0x47')][_0xe89b('0xa0')])+_0xe89b('0xda')][_0xe89b('0x4c')](_0x17966f);case _0xe89b('0x31'):case _0xe89b('0x33'):return _0x1834c0[_0xe89b('0xae')+_[_0xe89b('0xa4')](_0x59691f[_0xe89b('0x47')][_0xe89b('0xa0')])+'Queues'](_0x17966f);default:throw new db['Sequelize']['ValidationError'](_0xe89b('0xdb'));}})[_0xe89b('0x1a')](function(_0x30a70c){_0x50313c=_0x30a70c[_0xe89b('0x4e')];if(!_0x59691f['query'][_0xe89b('0xd2')](_0xe89b('0xd8'))){_0x17966f['limit']=qs[_0xe89b('0x27')](_0x59691f[_0xe89b('0x47')][_0xe89b('0x27')]);_0x17966f[_0xe89b('0x25')]=qs[_0xe89b('0x25')](_0x59691f[_0xe89b('0x47')]['offset']);}switch(_0x1834c0[_0xe89b('0x2f')]){case'admin':return db[_['capitalize'](_0x59691f[_0xe89b('0x47')][_0xe89b('0xa0')])+_0xe89b('0xda')][_0xe89b('0x4c')](_0x17966f);case'user':case _0xe89b('0x33'):return _0x1834c0[_0xe89b('0xae')+_[_0xe89b('0xa4')](_0x59691f[_0xe89b('0x47')][_0xe89b('0xa0')])+_0xe89b('0xa6')](_0x17966f);}})[_0xe89b('0x1a')](function(_0x2c7dd9){return{'count':_0x50313c,'rows':_0x2c7dd9};})[_0xe89b('0x1a')](respondWithResult(_0x3a3af3,null))['catch'](handleError(_0x3a3af3,null));};exports[_0xe89b('0xdc')]=function(_0x21025e,_0x42b5f5){var _0x2727db={};var _0x2add26={};var _0x584d1b;var _0x2eeaf5;return db[_0xe89b('0x46')][_0xe89b('0xcd')]({'where':{'id':_0x21025e[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x42b5f5,null))[_0xe89b('0x1a')](function(_0x3fa099){if(_0x3fa099){_0x584d1b=_0x3fa099;_0x2add26[_0xe89b('0x58')]=_[_0xe89b('0x5a')](db[_0xe89b('0xb2')]['rawAttributes']);_0x2add26[_0xe89b('0x47')]=_[_0xe89b('0x5a')](_0x21025e['query']);_0x2add26[_0xe89b('0x5b')]=_['intersection'](_0x2add26[_0xe89b('0x58')],_0x2add26[_0xe89b('0x47')]);_0x2727db[_0xe89b('0x4b')]=_[_0xe89b('0x5c')](_0x2add26['model'],qs[_0xe89b('0x5d')](_0x21025e['query'][_0xe89b('0x5d')]));_0x2727db['attributes']=_0x2727db[_0xe89b('0x4b')][_0xe89b('0x4e')]?_0x2727db[_0xe89b('0x4b')]:_0x2add26[_0xe89b('0x58')];_0x2727db[_0xe89b('0xd9')]=qs[_0xe89b('0xcf')](_0x21025e[_0xe89b('0x47')]['sort']);_0x2727db[_0xe89b('0x45')]=qs['filters'](_['pick'](_0x21025e[_0xe89b('0x47')],_0x2add26['filters']));if(_0x21025e[_0xe89b('0x47')][_0xe89b('0x40')]){_0x2727db['where']=_[_0xe89b('0x60')](_0x2727db[_0xe89b('0x45')],{'$or':_[_0xe89b('0x3e')](_0x2727db[_0xe89b('0x4b')],function(_0x2c7e34){var _0x2c2ba4={};_0x2c2ba4[_0x2c7e34]={'$like':'%'+_0x21025e['query'][_0xe89b('0x40')]+'%'};return _0x2c2ba4;})});}_0x2727db=_['merge']({},_0x2727db,_0x21025e[_0xe89b('0x61')]);return _0x584d1b['getVoiceQueuesRt'](_0x2727db);}})['then'](function(_0x382248){if(_0x382248){_0x2eeaf5=_0x382248['length'];if(!_0x21025e['query']['hasOwnProperty'](_0xe89b('0xd8'))){_0x2727db['limit']=qs[_0xe89b('0x27')](_0x21025e['query']['limit']);_0x2727db[_0xe89b('0x25')]=qs[_0xe89b('0x25')](_0x21025e[_0xe89b('0x47')][_0xe89b('0x25')]);}return _0x584d1b['getVoiceQueuesRt'](_0x2727db);}})[_0xe89b('0x1a')](function(_0x2e5495){if(_0x2e5495){return _0x2e5495?{'count':_0x2eeaf5,'rows':_0x2e5495}:null;}})[_0xe89b('0x1a')](respondWithResult(_0x42b5f5,null))[_0xe89b('0x65')](handleError(_0x42b5f5,null));};exports['getGroups']=function(_0x489c22,_0x2ad0ec){var _0x2d7f77={};var _0x44a141={};var _0x3bdaca;var _0x5236ec;return db[_0xe89b('0x46')][_0xe89b('0xcd')]({'where':{'id':_0x489c22[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x2ad0ec,null))[_0xe89b('0x1a')](function(_0x329e4f){if(_0x329e4f){_0x3bdaca=_0x329e4f;_0x44a141['model']=_[_0xe89b('0x5a')](db[_0xe89b('0xdd')][_0xe89b('0x3d')]);_0x44a141[_0xe89b('0x47')]=_[_0xe89b('0x5a')](_0x489c22[_0xe89b('0x47')]);_0x44a141[_0xe89b('0x5b')]=_[_0xe89b('0x5c')](_0x44a141['model'],_0x44a141['query']);_0x2d7f77[_0xe89b('0x4b')]=_[_0xe89b('0x5c')](_0x44a141[_0xe89b('0x58')],qs[_0xe89b('0x5d')](_0x489c22[_0xe89b('0x47')][_0xe89b('0x5d')]));_0x2d7f77[_0xe89b('0x4b')]=_0x2d7f77[_0xe89b('0x4b')]['length']?_0x2d7f77[_0xe89b('0x4b')]:_0x44a141[_0xe89b('0x58')];_0x2d7f77[_0xe89b('0xd9')]=qs['sort'](_0x489c22[_0xe89b('0x47')][_0xe89b('0xcf')]);_0x2d7f77[_0xe89b('0x45')]=qs['filters'](_['pick'](_0x489c22[_0xe89b('0x47')],_0x44a141[_0xe89b('0x5b')]));if(_0x489c22[_0xe89b('0x47')][_0xe89b('0x40')]){_0x2d7f77[_0xe89b('0x45')]=_[_0xe89b('0x60')](_0x2d7f77[_0xe89b('0x45')],{'$or':_[_0xe89b('0x3e')](_0x2d7f77[_0xe89b('0x4b')],function(_0x4250c9){var _0x29278b={};_0x29278b[_0x4250c9]={'$like':'%'+_0x489c22['query']['filter']+'%'};return _0x29278b;})});}_0x2d7f77=_['merge']({},_0x2d7f77,_0x489c22[_0xe89b('0x61')]);return _0x3bdaca[_0xe89b('0xde')](_0x2d7f77);}})[_0xe89b('0x1a')](function(_0x9a3bbf){if(_0x9a3bbf){_0x5236ec=_0x9a3bbf['length'];if(!_0x489c22[_0xe89b('0x47')][_0xe89b('0xd2')](_0xe89b('0xd8'))){_0x2d7f77[_0xe89b('0x27')]=qs['limit'](_0x489c22[_0xe89b('0x47')][_0xe89b('0x27')]);_0x2d7f77[_0xe89b('0x25')]=qs['offset'](_0x489c22[_0xe89b('0x47')][_0xe89b('0x25')]);}return _0x3bdaca[_0xe89b('0xde')](_0x2d7f77);}})[_0xe89b('0x1a')](function(_0x427a7b){if(_0x427a7b){return _0x427a7b?{'count':_0x5236ec,'rows':_0x427a7b}:null;}})[_0xe89b('0x1a')](respondWithResult(_0x2ad0ec,null))[_0xe89b('0x65')](handleError(_0x2ad0ec,null));};exports['getRecordings']=function(_0x5deb3d,_0x390acd){var _0x5075da={'raw':!![],'where':{}};var _0x2a929d={};var _0x5ac402={'count':0x0,'rows':[]};return db[_0xe89b('0x46')][_0xe89b('0xcd')]({'where':{'id':_0x5deb3d[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x390acd,null))[_0xe89b('0x1a')](function(_0x995422){if(_0x995422){_0x2a929d['model']=_[_0xe89b('0x5a')](db[_0xe89b('0xdf')][_0xe89b('0x3d')]);_0x2a929d['query']=_[_0xe89b('0x5a')](_0x5deb3d[_0xe89b('0x47')]);_0x2a929d[_0xe89b('0x5b')]=_[_0xe89b('0x5c')](_0x2a929d[_0xe89b('0x58')],_0x2a929d[_0xe89b('0x47')]);_0x5075da[_0xe89b('0x4b')]=_[_0xe89b('0x5c')](_0x2a929d[_0xe89b('0x58')],qs[_0xe89b('0x5d')](_0x5deb3d['query'][_0xe89b('0x5d')]));_0x5075da[_0xe89b('0x4b')]=_0x5075da['attributes'][_0xe89b('0x4e')]?_0x5075da[_0xe89b('0x4b')]:_0x2a929d[_0xe89b('0x58')];if(!_0x5deb3d[_0xe89b('0x47')]['hasOwnProperty'](_0xe89b('0xd8'))){_0x5075da['limit']=qs[_0xe89b('0x27')](_0x5deb3d[_0xe89b('0x47')][_0xe89b('0x27')]);_0x5075da[_0xe89b('0x25')]=qs[_0xe89b('0x25')](_0x5deb3d[_0xe89b('0x47')][_0xe89b('0x25')]);}_0x5075da[_0xe89b('0xd9')]=qs['sort'](_0x5deb3d[_0xe89b('0x47')][_0xe89b('0xcf')]);_0x5075da[_0xe89b('0x45')]=qs[_0xe89b('0x5b')](_['pick'](_0x5deb3d[_0xe89b('0x47')],_0x2a929d[_0xe89b('0x5b')]));_0x5075da[_0xe89b('0x45')]['UserId']=_0x995422['id'];if(_0x5deb3d[_0xe89b('0x47')][_0xe89b('0x40')]){_0x5075da[_0xe89b('0x45')]=_[_0xe89b('0x60')](_0x5075da[_0xe89b('0x45')],{'$or':_[_0xe89b('0x3e')](_0x5075da[_0xe89b('0x4b')],function(_0x71f2f4){var _0xc6c7f2={};_0xc6c7f2[_0x71f2f4]={'$like':'%'+_0x5deb3d[_0xe89b('0x47')][_0xe89b('0x40')]+'%'};return _0xc6c7f2;})});}_0x5075da=_['merge']({},_0x5075da,_0x5deb3d[_0xe89b('0x61')]);return db[_0xe89b('0xdf')]['count']({'where':_0x5075da['where']})[_0xe89b('0x1a')](function(_0x4e26ae){_0x5ac402[_0xe89b('0x28')]=_0x4e26ae;if(_0x5deb3d[_0xe89b('0x47')]['includeAll']){_0x5075da[_0xe89b('0x4a')]=[{'all':!![]}];}return db[_0xe89b('0xdf')][_0xe89b('0x4c')](_0x5075da);})['then'](function(_0x6822e8){_0x5ac402[_0xe89b('0x4d')]=_0x6822e8;return _0x5ac402;});}})['then'](respondWithFilteredResult(_0x390acd,_0x5075da))[_0xe89b('0x65')](handleError(_0x390acd,null));};exports[_0xe89b('0xe0')]=function(_0x2083b5,_0x18354d){var _0x5844b5={'raw':!![],'where':{}};var _0x30b0f8={};var _0x2be346={'count':0x0,'rows':[]};return db[_0xe89b('0x46')][_0xe89b('0xcd')]({'where':{'id':_0x2083b5[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x18354d,null))[_0xe89b('0x1a')](function(_0x2bf252){if(_0x2bf252){_0x30b0f8[_0xe89b('0x58')]=_[_0xe89b('0x5a')](db['ScreenRecording'][_0xe89b('0x3d')]);_0x30b0f8[_0xe89b('0x47')]=_[_0xe89b('0x5a')](_0x2083b5[_0xe89b('0x47')]);_0x30b0f8[_0xe89b('0x5b')]=_[_0xe89b('0x5c')](_0x30b0f8[_0xe89b('0x58')],_0x30b0f8[_0xe89b('0x47')]);_0x5844b5[_0xe89b('0x4b')]=_['intersection'](_0x30b0f8[_0xe89b('0x58')],qs['fields'](_0x2083b5[_0xe89b('0x47')][_0xe89b('0x5d')]));_0x5844b5[_0xe89b('0x4b')]=_0x5844b5[_0xe89b('0x4b')][_0xe89b('0x4e')]?_0x5844b5[_0xe89b('0x4b')]:_0x30b0f8[_0xe89b('0x58')];if(!_0x2083b5[_0xe89b('0x47')][_0xe89b('0xd2')](_0xe89b('0xd8'))){_0x5844b5[_0xe89b('0x27')]=qs['limit'](_0x2083b5[_0xe89b('0x47')]['limit']);_0x5844b5['offset']=qs['offset'](_0x2083b5[_0xe89b('0x47')][_0xe89b('0x25')]);}_0x5844b5[_0xe89b('0xd9')]=qs['sort'](_0x2083b5[_0xe89b('0x47')][_0xe89b('0xcf')]);_0x5844b5[_0xe89b('0x45')]=qs[_0xe89b('0x5b')](_[_0xe89b('0xd0')](_0x2083b5['query'],_0x30b0f8[_0xe89b('0x5b')]));_0x5844b5[_0xe89b('0x45')][_0xe89b('0xe1')]=_0x2bf252['id'];if(_0x2083b5[_0xe89b('0x47')]['filter']){_0x5844b5[_0xe89b('0x45')]=_[_0xe89b('0x60')](_0x5844b5[_0xe89b('0x45')],{'$or':_[_0xe89b('0x3e')](_0x5844b5[_0xe89b('0x4b')],function(_0xcfd0bd){var _0x2e8fda={};_0x2e8fda[_0xcfd0bd]={'$like':'%'+_0x2083b5[_0xe89b('0x47')][_0xe89b('0x40')]+'%'};return _0x2e8fda;})});}_0x5844b5=_['merge']({},_0x5844b5,_0x2083b5[_0xe89b('0x61')]);return db[_0xe89b('0xe2')][_0xe89b('0x28')]({'where':_0x5844b5['where']})[_0xe89b('0x1a')](function(_0x4b50be){_0x2be346[_0xe89b('0x28')]=_0x4b50be;if(_0x2083b5[_0xe89b('0x47')]['includeAll']){_0x5844b5['include']=[{'all':!![]}];}return db['ScreenRecording'][_0xe89b('0x4c')](_0x5844b5);})[_0xe89b('0x1a')](function(_0x51fdc0){_0x2be346[_0xe89b('0x4d')]=_0x51fdc0;return _0x2be346;});}})[_0xe89b('0x1a')](respondWithFilteredResult(_0x18354d,_0x5844b5))[_0xe89b('0x65')](handleError(_0x18354d,null));};exports[_0xe89b('0xe3')]=function(_0x2d2c69,_0x1e2eac){var _0x37831a={};var _0xa88eb0={};var _0x3657aa;var _0x316b6a;return db[_0xe89b('0x46')]['findOne']({'where':{'id':_0x2d2c69[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x1e2eac,null))[_0xe89b('0x1a')](function(_0x412d8b){if(_0x412d8b){_0x3657aa=_0x412d8b;_0xa88eb0[_0xe89b('0x58')]=_[_0xe89b('0x5a')](db[_0xe89b('0xe4')][_0xe89b('0x3d')]);_0xa88eb0[_0xe89b('0x47')]=_['keys'](_0x2d2c69['query']);_0xa88eb0[_0xe89b('0x5b')]=_[_0xe89b('0x5c')](_0xa88eb0[_0xe89b('0x58')],_0xa88eb0[_0xe89b('0x47')]);_0x37831a[_0xe89b('0x4b')]=_[_0xe89b('0x5c')](_0xa88eb0['model'],qs['fields'](_0x2d2c69[_0xe89b('0x47')][_0xe89b('0x5d')]));_0x37831a[_0xe89b('0x4b')]=_0x37831a[_0xe89b('0x4b')][_0xe89b('0x4e')]?_0x37831a['attributes']:_0xa88eb0['model'];_0x37831a[_0xe89b('0xd9')]=qs['sort'](_0x2d2c69[_0xe89b('0x47')][_0xe89b('0xcf')]);_0x37831a[_0xe89b('0x45')]=qs[_0xe89b('0x5b')](_[_0xe89b('0xd0')](_0x2d2c69['query'],_0xa88eb0[_0xe89b('0x5b')]));if(_0x2d2c69['query'][_0xe89b('0x40')]){_0x37831a[_0xe89b('0x45')]=_[_0xe89b('0x60')](_0x37831a['where'],{'$or':_[_0xe89b('0x3e')](_0x37831a['attributes'],function(_0x35cad6){var _0x162fe3={};_0x162fe3[_0x35cad6]={'$like':'%'+_0x2d2c69[_0xe89b('0x47')][_0xe89b('0x40')]+'%'};return _0x162fe3;})});}_0x37831a=_[_0xe89b('0x60')]({},_0x37831a,_0x2d2c69[_0xe89b('0x61')]);return _0x3657aa[_0xe89b('0xe3')](_0x37831a);}})['then'](function(_0x1c185b){if(_0x1c185b){_0x316b6a=_0x1c185b[_0xe89b('0x4e')];if(!_0x2d2c69[_0xe89b('0x47')][_0xe89b('0xd2')](_0xe89b('0xd8'))){_0x37831a[_0xe89b('0x27')]=qs[_0xe89b('0x27')](_0x2d2c69[_0xe89b('0x47')]['limit']);_0x37831a[_0xe89b('0x25')]=qs[_0xe89b('0x25')](_0x2d2c69[_0xe89b('0x47')]['offset']);}return _0x3657aa[_0xe89b('0xe3')](_0x37831a);}})[_0xe89b('0x1a')](function(_0xcd9722){if(_0xcd9722){return _0xcd9722?{'count':_0x316b6a,'rows':_0xcd9722}:null;}})[_0xe89b('0x1a')](respondWithResult(_0x1e2eac,null))[_0xe89b('0x65')](handleError(_0x1e2eac,null));};exports[_0xe89b('0xe5')]=function(_0x949b72,_0x3a7e9d){var _0x15920e={};var _0x29963f={};var _0x5c9f7b;var _0x2b13f9;return db[_0xe89b('0x46')][_0xe89b('0xcd')]({'where':{'id':_0x949b72[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x3a7e9d,null))['then'](function(_0x41e490){if(_0x41e490){_0x5c9f7b=_0x41e490;_0x29963f['model']=_['keys'](db[_0xe89b('0xe6')]['rawAttributes']);_0x29963f[_0xe89b('0x47')]=_['keys'](_0x949b72[_0xe89b('0x47')]);_0x29963f[_0xe89b('0x5b')]=_['intersection'](_0x29963f[_0xe89b('0x58')],_0x29963f[_0xe89b('0x47')]);_0x15920e[_0xe89b('0x4b')]=_[_0xe89b('0x5c')](_0x29963f[_0xe89b('0x58')],qs['fields'](_0x949b72[_0xe89b('0x47')][_0xe89b('0x5d')]));_0x15920e[_0xe89b('0x4b')]=_0x15920e[_0xe89b('0x4b')]['length']?_0x15920e['attributes']:_0x29963f['model'];_0x15920e[_0xe89b('0xd9')]=qs[_0xe89b('0xcf')](_0x949b72['query'][_0xe89b('0xcf')]);_0x15920e[_0xe89b('0x45')]=qs[_0xe89b('0x5b')](_[_0xe89b('0xd0')](_0x949b72[_0xe89b('0x47')],_0x29963f[_0xe89b('0x5b')]));if(_0x949b72[_0xe89b('0x47')][_0xe89b('0x40')]){_0x15920e[_0xe89b('0x45')]=_[_0xe89b('0x60')](_0x15920e['where'],{'$or':_[_0xe89b('0x3e')](_0x15920e['attributes'],function(_0x3fc956){var _0x19184a={};_0x19184a[_0x3fc956]={'$like':'%'+_0x949b72[_0xe89b('0x47')][_0xe89b('0x40')]+'%'};return _0x19184a;})});}_0x15920e=_[_0xe89b('0x60')]({},_0x15920e,_0x949b72[_0xe89b('0x61')]);return _0x5c9f7b['getOpenchannelInteractions'](_0x15920e);}})[_0xe89b('0x1a')](function(_0x2cb664){if(_0x2cb664){_0x2b13f9=_0x2cb664[_0xe89b('0x4e')];if(!_0x949b72[_0xe89b('0x47')][_0xe89b('0xd2')]('nolimit')){_0x15920e[_0xe89b('0x27')]=qs[_0xe89b('0x27')](_0x949b72[_0xe89b('0x47')][_0xe89b('0x27')]);_0x15920e[_0xe89b('0x25')]=qs[_0xe89b('0x25')](_0x949b72['query']['offset']);}return _0x5c9f7b[_0xe89b('0xe5')](_0x15920e);}})[_0xe89b('0x1a')](function(_0x3f3d65){if(_0x3f3d65){return _0x3f3d65?{'count':_0x2b13f9,'rows':_0x3f3d65}:null;}})[_0xe89b('0x1a')](respondWithResult(_0x3a7e9d,null))[_0xe89b('0x65')](handleError(_0x3a7e9d,null));};exports[_0xe89b('0xe7')]=function(_0x3d59d5,_0x249ac3){var _0x4fd135={'raw':!![],'where':{}};var _0x5e35f2={};var _0x1c74ae={'count':0x0,'rows':[]};return db['User'][_0xe89b('0xcd')]({'where':{'id':_0x3d59d5['params']['id']}})['then'](handleEntityNotFound(_0x249ac3,null))[_0xe89b('0x1a')](function(_0x614e7c){if(_0x614e7c){_0x5e35f2[_0xe89b('0x58')]=_[_0xe89b('0x5a')](db[_0xe89b('0xe8')][_0xe89b('0x3d')]);_0x5e35f2[_0xe89b('0x47')]=_['keys'](_0x3d59d5['query']);_0x5e35f2[_0xe89b('0x5b')]=_[_0xe89b('0x5c')](_0x5e35f2['model'],_0x5e35f2[_0xe89b('0x47')]);_0x4fd135[_0xe89b('0x4b')]=_[_0xe89b('0x5c')](_0x5e35f2['model'],qs['fields'](_0x3d59d5['query'][_0xe89b('0x5d')]));_0x4fd135[_0xe89b('0x4b')]=_0x4fd135[_0xe89b('0x4b')][_0xe89b('0x4e')]?_0x4fd135[_0xe89b('0x4b')]:_0x5e35f2[_0xe89b('0x58')];if(!_0x3d59d5['query']['hasOwnProperty']('nolimit')){_0x4fd135[_0xe89b('0x27')]=qs[_0xe89b('0x27')](_0x3d59d5[_0xe89b('0x47')][_0xe89b('0x27')]);_0x4fd135['offset']=qs['offset'](_0x3d59d5['query'][_0xe89b('0x25')]);}_0x4fd135['order']=qs['sort'](_0x3d59d5[_0xe89b('0x47')]['sort']);_0x4fd135[_0xe89b('0x45')]=qs[_0xe89b('0x5b')](_[_0xe89b('0xd0')](_0x3d59d5[_0xe89b('0x47')],_0x5e35f2[_0xe89b('0x5b')]));_0x4fd135['where'][_0xe89b('0xe1')]=_0x614e7c['id'];if(_0x3d59d5[_0xe89b('0x47')][_0xe89b('0x40')]){_0x4fd135[_0xe89b('0x45')]=_[_0xe89b('0x60')](_0x4fd135[_0xe89b('0x45')],{'$or':_[_0xe89b('0x3e')](_0x4fd135[_0xe89b('0x4b')],function(_0x483497){var _0x455bf2={};_0x455bf2[_0x483497]={'$like':'%'+_0x3d59d5['query'][_0xe89b('0x40')]+'%'};return _0x455bf2;})});}_0x4fd135=_[_0xe89b('0x60')]({},_0x4fd135,_0x3d59d5[_0xe89b('0x61')]);return db['MailInteraction'][_0xe89b('0x28')]({'where':_0x4fd135[_0xe89b('0x45')]})['then'](function(_0x57b541){_0x1c74ae[_0xe89b('0x28')]=_0x57b541;if(_0x3d59d5['query'][_0xe89b('0x5e')]){_0x4fd135[_0xe89b('0x4a')]=[{'all':!![]}];}return db['MailInteraction']['findAll'](_0x4fd135);})['then'](function(_0x10ccba){_0x1c74ae['rows']=_0x10ccba;return _0x1c74ae;});}})[_0xe89b('0x1a')](respondWithFilteredResult(_0x249ac3,_0x4fd135))[_0xe89b('0x65')](handleError(_0x249ac3,null));};exports[_0xe89b('0xe9')]=function(_0x2b2274,_0x4d42a3){var _0x48fdbc={};var _0x39b20f={};var _0xce62ed;var _0x4f6172;return db[_0xe89b('0x46')][_0xe89b('0xcd')]({'where':{'id':_0x2b2274[_0xe89b('0x57')]['id']}})['then'](handleEntityNotFound(_0x4d42a3,null))['then'](function(_0x3cfa8f){if(_0x3cfa8f){_0xce62ed=_0x3cfa8f;_0x39b20f['model']=_[_0xe89b('0x5a')](db[_0xe89b('0xea')][_0xe89b('0x3d')]);_0x39b20f[_0xe89b('0x47')]=_[_0xe89b('0x5a')](_0x2b2274[_0xe89b('0x47')]);_0x39b20f['filters']=_[_0xe89b('0x5c')](_0x39b20f[_0xe89b('0x58')],_0x39b20f[_0xe89b('0x47')]);_0x48fdbc[_0xe89b('0x4b')]=_[_0xe89b('0x5c')](_0x39b20f[_0xe89b('0x58')],qs['fields'](_0x2b2274[_0xe89b('0x47')]['fields']));_0x48fdbc['attributes']=_0x48fdbc[_0xe89b('0x4b')][_0xe89b('0x4e')]?_0x48fdbc['attributes']:_0x39b20f['model'];_0x48fdbc[_0xe89b('0xd9')]=qs[_0xe89b('0xcf')](_0x2b2274['query']['sort']);_0x48fdbc[_0xe89b('0x45')]=qs[_0xe89b('0x5b')](_[_0xe89b('0xd0')](_0x2b2274[_0xe89b('0x47')],_0x39b20f['filters']));if(_0x2b2274[_0xe89b('0x47')][_0xe89b('0x40')]){_0x48fdbc[_0xe89b('0x45')]=_[_0xe89b('0x60')](_0x48fdbc['where'],{'$or':_['map'](_0x48fdbc[_0xe89b('0x4b')],function(_0x2b7c80){var _0x2dc290={};_0x2dc290[_0x2b7c80]={'$like':'%'+_0x2b2274[_0xe89b('0x47')][_0xe89b('0x40')]+'%'};return _0x2dc290;})});}_0x48fdbc=_['merge']({},_0x48fdbc,_0x2b2274['options']);return _0xce62ed[_0xe89b('0xe9')](_0x48fdbc);}})[_0xe89b('0x1a')](function(_0x2bf8e4){if(_0x2bf8e4){_0x4f6172=_0x2bf8e4[_0xe89b('0x4e')];if(!_0x2b2274[_0xe89b('0x47')][_0xe89b('0xd2')](_0xe89b('0xd8'))){_0x48fdbc[_0xe89b('0x27')]=qs[_0xe89b('0x27')](_0x2b2274[_0xe89b('0x47')][_0xe89b('0x27')]);_0x48fdbc[_0xe89b('0x25')]=qs[_0xe89b('0x25')](_0x2b2274[_0xe89b('0x47')]['offset']);}return _0xce62ed[_0xe89b('0xe9')](_0x48fdbc);}})[_0xe89b('0x1a')](function(_0x444a56){if(_0x444a56){return _0x444a56?{'count':_0x4f6172,'rows':_0x444a56}:null;}})[_0xe89b('0x1a')](respondWithResult(_0x4d42a3,null))[_0xe89b('0x65')](handleError(_0x4d42a3,null));};exports[_0xe89b('0xeb')]=function(_0x57023c,_0x4d3a13){var _0x515a22={};var _0x39d9ea={};var _0x470255;var _0x317b69;return db['User'][_0xe89b('0xcd')]({'where':{'id':_0x57023c['params']['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x4d3a13,null))[_0xe89b('0x1a')](function(_0x144a4b){if(_0x144a4b){_0x470255=_0x144a4b;_0x39d9ea['model']=_[_0xe89b('0x5a')](db[_0xe89b('0xec')][_0xe89b('0x3d')]);_0x39d9ea[_0xe89b('0x47')]=_[_0xe89b('0x5a')](_0x57023c['query']);_0x39d9ea['filters']=_[_0xe89b('0x5c')](_0x39d9ea['model'],_0x39d9ea[_0xe89b('0x47')]);_0x515a22[_0xe89b('0x4b')]=_[_0xe89b('0x5c')](_0x39d9ea[_0xe89b('0x58')],qs[_0xe89b('0x5d')](_0x57023c[_0xe89b('0x47')][_0xe89b('0x5d')]));_0x515a22['attributes']=_0x515a22['attributes']['length']?_0x515a22[_0xe89b('0x4b')]:_0x39d9ea[_0xe89b('0x58')];_0x515a22[_0xe89b('0xd9')]=qs[_0xe89b('0xcf')](_0x57023c[_0xe89b('0x47')][_0xe89b('0xcf')]);_0x515a22[_0xe89b('0x45')]=qs['filters'](_['pick'](_0x57023c[_0xe89b('0x47')],_0x39d9ea['filters']));if(_0x57023c['query'][_0xe89b('0x40')]){_0x515a22[_0xe89b('0x45')]=_[_0xe89b('0x60')](_0x515a22['where'],{'$or':_[_0xe89b('0x3e')](_0x515a22[_0xe89b('0x4b')],function(_0x37a2da){var _0xf2d4e={};_0xf2d4e[_0x37a2da]={'$like':'%'+_0x57023c[_0xe89b('0x47')][_0xe89b('0x40')]+'%'};return _0xf2d4e;})});}_0x515a22=_[_0xe89b('0x60')]({},_0x515a22,_0x57023c[_0xe89b('0x61')]);return _0x470255[_0xe89b('0xeb')](_0x515a22);}})[_0xe89b('0x1a')](function(_0x25dcac){if(_0x25dcac){_0x317b69=_0x25dcac[_0xe89b('0x4e')];if(!_0x57023c[_0xe89b('0x47')][_0xe89b('0xd2')](_0xe89b('0xd8'))){_0x515a22['limit']=qs[_0xe89b('0x27')](_0x57023c[_0xe89b('0x47')]['limit']);_0x515a22['offset']=qs[_0xe89b('0x25')](_0x57023c['query'][_0xe89b('0x25')]);}return _0x470255[_0xe89b('0xeb')](_0x515a22);}})[_0xe89b('0x1a')](function(_0x6dc3ab){if(_0x6dc3ab){return _0x6dc3ab?{'count':_0x317b69,'rows':_0x6dc3ab}:null;}})[_0xe89b('0x1a')](respondWithResult(_0x4d3a13,null))[_0xe89b('0x65')](handleError(_0x4d3a13,null));};exports[_0xe89b('0xed')]=function(_0x295a5f,_0x234fe9){var _0x4f144c={};var _0x557ccb={};var _0x198a8e;var _0x3a1e98;return db[_0xe89b('0x46')][_0xe89b('0xcd')]({'where':{'id':_0x295a5f[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x234fe9,null))[_0xe89b('0x1a')](function(_0x16a7c5){if(_0x16a7c5){_0x198a8e=_0x16a7c5;_0x557ccb['model']=_['keys'](db[_0xe89b('0xee')][_0xe89b('0x3d')]);_0x557ccb[_0xe89b('0x47')]=_['keys'](_0x295a5f[_0xe89b('0x47')]);_0x557ccb['filters']=_[_0xe89b('0x5c')](_0x557ccb[_0xe89b('0x58')],_0x557ccb[_0xe89b('0x47')]);_0x4f144c['attributes']=_[_0xe89b('0x5c')](_0x557ccb['model'],qs[_0xe89b('0x5d')](_0x295a5f['query'][_0xe89b('0x5d')]));_0x4f144c[_0xe89b('0x4b')]=_0x4f144c[_0xe89b('0x4b')][_0xe89b('0x4e')]?_0x4f144c['attributes']:_0x557ccb[_0xe89b('0x58')];_0x4f144c[_0xe89b('0xd9')]=qs[_0xe89b('0xcf')](_0x295a5f['query'][_0xe89b('0xcf')]);_0x4f144c[_0xe89b('0x45')]=qs['filters'](_['pick'](_0x295a5f[_0xe89b('0x47')],_0x557ccb[_0xe89b('0x5b')]));if(_0x295a5f[_0xe89b('0x47')][_0xe89b('0x40')]){_0x4f144c['where']=_[_0xe89b('0x60')](_0x4f144c['where'],{'$or':_['map'](_0x4f144c['attributes'],function(_0x65a4d0){var _0x23ee36={};_0x23ee36[_0x65a4d0]={'$like':'%'+_0x295a5f[_0xe89b('0x47')][_0xe89b('0x40')]+'%'};return _0x23ee36;})});}_0x4f144c=_['merge']({},_0x4f144c,_0x295a5f[_0xe89b('0x61')]);return _0x198a8e[_0xe89b('0xed')](_0x4f144c);}})[_0xe89b('0x1a')](function(_0x3058a3){if(_0x3058a3){_0x3a1e98=_0x3058a3[_0xe89b('0x4e')];if(!_0x295a5f[_0xe89b('0x47')][_0xe89b('0xd2')](_0xe89b('0xd8'))){_0x4f144c[_0xe89b('0x27')]=qs[_0xe89b('0x27')](_0x295a5f[_0xe89b('0x47')][_0xe89b('0x27')]);_0x4f144c['offset']=qs[_0xe89b('0x25')](_0x295a5f['query'][_0xe89b('0x25')]);}return _0x198a8e[_0xe89b('0xed')](_0x4f144c);}})[_0xe89b('0x1a')](function(_0x420051){if(_0x420051){return _0x420051?{'count':_0x3a1e98,'rows':_0x420051}:null;}})[_0xe89b('0x1a')](respondWithResult(_0x234fe9,null))[_0xe89b('0x65')](handleError(_0x234fe9,null));};exports[_0xe89b('0xef')]=function(_0x45dd25,_0x379b90,_0xc2369c){var _0x469b80;var _0x20f3f6;var _0x4dfbaf;var _0x974ee=!_[_0xe89b('0x70')](_0x45dd25[_0xe89b('0x57')]['id'])?_0x45dd25[_0xe89b('0x57')]['id']:!_[_0xe89b('0x70')](_0x45dd25[_0xe89b('0x31')]['id'])?_0x45dd25[_0xe89b('0x31')]['id']:null;return db['User'][_0xe89b('0x62')]({'where':{'id':_0x974ee,'role':{'$or':[_0xe89b('0x30'),_0xe89b('0x31'),_0xe89b('0x33')]}},'attributes':['id',_0xe89b('0x37'),_0xe89b('0xf0'),_0xe89b('0xf1'),_0xe89b('0x2f'),'internal',_0xe89b('0xa1')]})[_0xe89b('0x1a')](function(_0x7410bd){if(_0x7410bd){if(_0x7410bd['role']===_0xe89b('0x33')){_0x469b80=_0x7410bd;if(_0x45dd25[_0xe89b('0x66')][_0xe89b('0xa2')]){_0x4dfbaf=util['format'](_0xe89b('0xf2'),_0x469b80[_0x45dd25[_0xe89b('0x66')][_0xe89b('0xa2')]]);}else if(_0x45dd25['body']['intrf']){_0x4dfbaf=util['format'](_0xe89b('0xb0'),_0x45dd25[_0xe89b('0x66')]['intrf']);}else{_0x4dfbaf=util[_0xe89b('0xaf')](_0xe89b('0xb0'),_0x469b80[_0xe89b('0x37')]);}socket['to'](util['format'](_0xe89b('0xf3'),_0x469b80['name']))[_0xe89b('0xaa')]('user:forcelogout',{'user':{'id':_0x469b80['id'],'name':_0x469b80[_0xe89b('0x37')]},'ip':_0x45dd25[_0xe89b('0xf4')][_0xe89b('0xf5')]||_0x45dd25['connection'][_0xe89b('0xf6')]||_0x45dd25[_0xe89b('0xf7')][_0xe89b('0xf6')]||_0x45dd25[_0xe89b('0xf8')][_0xe89b('0xf7')][_0xe89b('0xf6')]});return db[_0xe89b('0xb2')]['destroy']({'where':{'membername':_0x469b80['name']},'individualHooks':!![]});}}else{throw new db[(_0xe89b('0x97'))]['ValidationError'](_0xe89b('0xf9'));}})[_0xe89b('0x1a')](function(){if(_0x469b80){return _0x469b80[_0xe89b('0xfa')]({'raw':!![]});}})[_0xe89b('0x1a')](function(_0x418230){if(_0x469b80){var _0x4de1e4=[];if(_0x418230){_0x20f3f6=_0x418230;if(_0x20f3f6[_0xe89b('0x4e')]){for(var _0x37d4c3=0x0;_0x37d4c3<_0x20f3f6[_0xe89b('0x4e')];_0x37d4c3++){_0x4de1e4['push']({'membername':_0x469b80['name'],'UserId':_0x469b80['id'],'queue_name':_0x20f3f6[_0x37d4c3][_0xe89b('0x37')],'VoiceQueueId':_0x20f3f6[_0x37d4c3]['id'],'interface':_0x4dfbaf,'paused':_0x469b80[_0xe89b('0xa1')]||![],'penalty':_0x20f3f6[_0x37d4c3][_0xe89b('0xfb')]||0x0});}return BPromise['each'](_0x4de1e4,function(_0x43392f){return db[_0xe89b('0xb2')][_0xe89b('0xfc')](_0x43392f);});}}}})[_0xe89b('0x1a')](function(){if(_0x469b80){return db[_0xe89b('0xfd')][_0xe89b('0x4c')]({'where':{'membername':_0x469b80[_0xe89b('0x37')],'exitAt':null}});}})[_0xe89b('0x1a')](function(_0x214c65){if(_0x469b80){var _0x1dd474=[];_0x214c65[_0xe89b('0xfe')](function(_0x2f90f4){_0x1dd474['push'](_0x2f90f4[_0xe89b('0x2c')]({'exitAt':moment()[_0xe89b('0xaf')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise[_0xe89b('0x55')](_0x1dd474);}})[_0xe89b('0x1a')](function(){if(_0x469b80){var _0x187e11=[];var _0x70fb37=[];var _0x5f4de6=utils['getChannels']();var _0x495268={'membername':_0x469b80[_0xe89b('0x37')],'interface':_0x4dfbaf,'enterAt':moment()[_0xe89b('0xaf')](_0xe89b('0xff')),'role':_0x469b80['role'],'internal':_0x469b80[_0xe89b('0x6b')]};_0x5f4de6[_0xe89b('0xfe')](function(_0xfa5819){_0x187e11[_0xe89b('0x4f')](_[_0xe89b('0x60')]({'channel':_0xfa5819,'type':_0xe89b('0x100'),'data1':_0x45dd25[_0xe89b('0x66')][_0xe89b('0x101')],'data2':_0x4dfbaf},_0x495268));if(_0x469b80[_0xe89b('0xa1')]){_0x70fb37[_0xe89b('0x4f')](_[_0xe89b('0x60')]({'channel':_0xfa5819,'type':_0xe89b('0x102'),'data1':_0xe89b('0x103')},_0x495268));}});return db[_0xe89b('0xfd')]['bulkCreate'](_0x187e11[_0xe89b('0xcc')](_0x70fb37),{'individualHooks':!![]});}})[_0xe89b('0x1a')](function(){if(_0x469b80){return _0x469b80['update']({'online':!![],'lastLoginAt':moment()[_0xe89b('0xaf')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x469b80[_0xe89b('0xa1')]||![],'mailPause':_0x469b80[_0xe89b('0xa1')]||![],'chatPause':_0x469b80[_0xe89b('0xa1')]||![],'faxPause':_0x469b80[_0xe89b('0xa1')]||![],'smsPause':_0x469b80[_0xe89b('0xa1')]||![],'openchannelPause':_0x469b80[_0xe89b('0xa1')]||![],'whatsappPause':_0x469b80[_0xe89b('0xa1')]||![],'pauseType':_0x469b80[_0xe89b('0xa1')]?_0xe89b('0x103'):null,'interface':_0x4dfbaf,'lastPauseAt':moment()[_0xe89b('0xaf')](_0xe89b('0xff'))});}})[_0xe89b('0x1a')](function(_0x41c35b){if(_0x45dd25[_0xe89b('0x104')]){return _0xc2369c();}else{return BPromise[_0xe89b('0x105')](_0x41c35b)['then'](respondWithResult(_0x379b90,null));}})[_0xe89b('0x65')](handleError(_0x379b90,null));};exports[_0xe89b('0x106')]=function(_0x184201,_0x50f65b){var _0x3c967f;return db[_0xe89b('0x46')][_0xe89b('0x62')]({'where':{'id':_0x184201['params']['id'],'role':_0xe89b('0x33')},'attributes':['id',_0xe89b('0x37'),'role']})[_0xe89b('0x1a')](handleEntityNotFound(_0x50f65b,null))[_0xe89b('0x1a')](function(_0x1dec8a){if(_0x1dec8a){_0x3c967f=_0x1dec8a;return db[_0xe89b('0xb2')][_0xe89b('0x2e')]({'where':{'membername':_0x3c967f[_0xe89b('0x37')]},'individualHooks':!![]});}})[_0xe89b('0x1a')](function(){return db['MemberReport']['findAll']({'where':{'membername':_0x3c967f['name'],'exitAt':null}});})[_0xe89b('0x1a')](function(_0x5dcd98){var _0x5320ea=[];_0x5dcd98['forEach'](function(_0x1f4cc5){_0x5320ea[_0xe89b('0x4f')](_0x1f4cc5[_0xe89b('0x2c')]({'exitAt':moment()['format'](_0xe89b('0xff'))}));});return BPromise['all'](_0x5320ea);})[_0xe89b('0x1a')](function(){return _0x3c967f[_0xe89b('0x2c')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![],'interface':null});})[_0xe89b('0x1a')](respondWithResult(_0x50f65b,null))[_0xe89b('0x65')](handleError(_0x50f65b,null));};exports[_0xe89b('0x107')]=function(_0x2fdcef,_0x4b85c6){var _0xd1aea4;return db[_0xe89b('0xb2')][_0xe89b('0x2c')]({'paused':0x1},{'where':{'UserId':_0x2fdcef[_0xe89b('0x57')]['id']},'individualHooks':!![]})[_0xe89b('0x1a')](function(){return db[_0xe89b('0x46')]['find']({'where':{'id':_0x2fdcef['params']['id'],'role':_0xe89b('0x33')},'attributes':['id',_0xe89b('0x37'),'role',_0xe89b('0x6b'),_0xe89b('0xa2')]});})[_0xe89b('0x1a')](handleEntityNotFound(_0x4b85c6,null))[_0xe89b('0x1a')](function(_0x19457b){if(_0x19457b){_0xd1aea4=_0x19457b;return respondWithRpcPromise(_0xe89b('0x108'),_0xe89b('0x107'),{'id':_0xd1aea4['id'],'name':_0xd1aea4['name'],'pause':!![]});}})[_0xe89b('0x1a')](function(){if(_0xd1aea4){return db['MemberReport']['findAll']({'where':{'membername':_0xd1aea4['name'],'type':'PAUSE','exitAt':null}});}})[_0xe89b('0x1a')](function(_0x5db2cb){if(_0x5db2cb[_0xe89b('0x4e')]){var _0x5c6990=moment()[_0xe89b('0xaf')](_0xe89b('0xff'));for(var _0x119859=0x0,_0x186569=_0x5db2cb[_0xe89b('0x4e')];_0x119859<_0x186569;_0x119859++){_0x5db2cb[_0x119859]['updateAttributes']({'exitAt':_0x5c6990});}}})['then'](function(){var _0x358eed=[];var _0x9b5280=utils[_0xe89b('0x109')]();_0x9b5280[_0xe89b('0xfe')](function(_0xde7c59){_0x358eed[_0xe89b('0x4f')]({'channel':_0xde7c59,'membername':_0xd1aea4['name'],'interface':_['isNil'](_0xd1aea4[_0xe89b('0xa2')])?util[_0xe89b('0xaf')](_0xe89b('0xb0'),_0xd1aea4['name']):_0xd1aea4[_0xe89b('0xa2')],'type':_0xe89b('0x102'),'enterAt':moment()[_0xe89b('0xaf')](_0xe89b('0xff')),'data1':_0x2fdcef[_0xe89b('0x66')][_0xe89b('0x3f')]||_0xe89b('0x10a'),'role':_0xd1aea4[_0xe89b('0x2f')],'internal':_0xd1aea4[_0xe89b('0x6b')]});});return db[_0xe89b('0xfd')]['bulkCreate'](_0x358eed,{'individualHooks':!![]});})['then'](function(){return _0xd1aea4[_0xe89b('0x2c')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'whatsappPause':!![],'openchannelPause':!![],'pauseType':_0x2fdcef['body']['type']||_0xe89b('0x10a'),'lastPauseAt':moment()[_0xe89b('0xaf')]('YYYY-MM-DD\x20HH:mm:ss')});})[_0xe89b('0x1a')](respondWithResult(_0x4b85c6,null))['catch'](handleError(_0x4b85c6,null));};exports[_0xe89b('0x10b')]=function(_0x198848,_0x2c472b){var _0x41598c;return db['User'][_0xe89b('0x62')]({'where':{'id':_0x198848[_0xe89b('0x57')]['id']},'attributes':['id',_0xe89b('0x37'),_0xe89b('0x2f'),'voicePause',_0xe89b('0x10c'),_0xe89b('0x10d'),_0xe89b('0x10e'),'openchannelPause',_0xe89b('0x10f'),_0xe89b('0x110'),'pauseType',_0xe89b('0x111')]})[_0xe89b('0x1a')](handleEntityNotFound(_0x2c472b,null))[_0xe89b('0x1a')](function(_0x20926f){if(_0x20926f){_0x41598c=_0x20926f;if(_0x198848[_0xe89b('0x66')][_0xe89b('0xa0')]&&!utils[_0xe89b('0xa3')](_0x198848[_0xe89b('0x66')][_0xe89b('0xa0')])){throw new db[(_0xe89b('0x97'))]['ValidationError'](_0xe89b('0xb4'));}switch(_0x198848[_0xe89b('0x66')][_0xe89b('0xa0')]){case _0xe89b('0xac'):return respondWithRpcPromise(_0xe89b('0x108'),_0xe89b('0x10b'),{'id':_0x41598c['id'],'name':_0x41598c[_0xe89b('0x37')],'pause':![]})[_0xe89b('0x1a')](function(){return db[_0xe89b('0xb2')][_0xe89b('0x2c')]({'paused':0x0},{'where':{'UserId':_0x41598c['id']},'individualHooks':!![]});})[_0xe89b('0x1a')](function(){return db[_0xe89b('0xfd')][_0xe89b('0x62')]({'where':{'channel':_0x198848[_0xe89b('0x66')][_0xe89b('0xa0')],'membername':_0x41598c[_0xe89b('0x37')],'type':_0xe89b('0x102'),'exitAt':null}});})[_0xe89b('0x1a')](function(_0x100203){if(_0x100203){return _0x100203['update']({'exitAt':moment()[_0xe89b('0xaf')](_0xe89b('0xff')),'data2':'manual'},{'individualHooks':!![]});}return null;})[_0xe89b('0x1a')](function(){return _0x41598c['update']({'voicePause':![]});});case _0xe89b('0x53'):case _0xe89b('0x50'):case _0xe89b('0x52'):case'sms':case _0xe89b('0x54'):case _0xe89b('0x64'):return db['MemberReport']['find']({'where':{'channel':_0x198848['body']['channel'],'membername':_0x41598c[_0xe89b('0x37')],'type':_0xe89b('0x102'),'exitAt':null}})[_0xe89b('0x1a')](function(_0x35d7e0){if(_0x35d7e0){return _0x35d7e0[_0xe89b('0x2c')]({'exitAt':moment()[_0xe89b('0xaf')](_0xe89b('0xff')),'data2':_0xe89b('0x112')},{'individualHooks':!![]});}return null;})['then'](function(){var _0x5552c9={};_[_0xe89b('0x29')](_0x5552c9,util['format'](_0xe89b('0x113'),_0x198848['body']['channel'],_0xe89b('0x114')),![]);return _0x41598c[_0xe89b('0x2c')](_0x5552c9);});default:return respondWithRpcPromise('QueuePause',_0xe89b('0x10b'),{'id':_0x41598c['id'],'name':_0x41598c['name'],'pause':![]})['then'](function(){return db[_0xe89b('0xb2')][_0xe89b('0x2c')]({'paused':0x0},{'where':{'UserId':_0x41598c['id']}});})['then'](function(){return db[_0xe89b('0xfd')][_0xe89b('0x4c')]({'where':{'membername':_0x41598c[_0xe89b('0x37')],'type':_0xe89b('0x102'),'exitAt':null}});})[_0xe89b('0x1a')](function(_0x474310){var _0x23fcbf=[];_0x474310[_0xe89b('0xfe')](function(_0x2b3b18){_0x23fcbf[_0xe89b('0x4f')](_0x2b3b18['update']({'exitAt':moment()[_0xe89b('0xaf')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0xe89b('0x112')}));});return BPromise[_0xe89b('0x55')](_0x23fcbf);})[_0xe89b('0x1a')](function(){return _0x41598c[_0xe89b('0x2c')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'whatsappPause':![],'openchannelPause':![]});});}}})[_0xe89b('0x1a')](respondWithResult(_0x2c472b,null))['catch'](handleError(_0x2c472b,null));};exports['getTeams']=function(_0x30214b,_0x128bc3){var _0x46457d={};var _0x376048={};var _0x123a5b;var _0x555ef0;return db[_0xe89b('0x46')]['findOne']({'where':{'id':_0x30214b['params']['id']}})['then'](handleEntityNotFound(_0x128bc3,null))[_0xe89b('0x1a')](function(_0x3e0a5a){if(_0x3e0a5a){_0x123a5b=_0x3e0a5a;_0x376048['model']=_['keys'](db[_0xe89b('0x115')][_0xe89b('0x3d')]);_0x376048[_0xe89b('0x47')]=_[_0xe89b('0x5a')](_0x30214b[_0xe89b('0x47')]);_0x376048['filters']=_[_0xe89b('0x5c')](_0x376048[_0xe89b('0x58')],_0x376048[_0xe89b('0x47')]);_0x46457d['attributes']=_[_0xe89b('0x5c')](_0x376048[_0xe89b('0x58')],qs[_0xe89b('0x5d')](_0x30214b[_0xe89b('0x47')][_0xe89b('0x5d')]));_0x46457d[_0xe89b('0x4b')]=_0x46457d[_0xe89b('0x4b')][_0xe89b('0x4e')]?_0x46457d['attributes']:_0x376048[_0xe89b('0x58')];_0x46457d['order']=qs[_0xe89b('0xcf')](_0x30214b[_0xe89b('0x47')][_0xe89b('0xcf')]);_0x46457d[_0xe89b('0x45')]=qs['filters'](_[_0xe89b('0xd0')](_0x30214b[_0xe89b('0x47')],_0x376048[_0xe89b('0x5b')]));if(_0x30214b[_0xe89b('0x47')][_0xe89b('0x40')]){_0x46457d[_0xe89b('0x45')]=_[_0xe89b('0x60')](_0x46457d[_0xe89b('0x45')],{'$or':_[_0xe89b('0x3e')](_0x46457d[_0xe89b('0x4b')],function(_0x12b017){var _0x2fe6f3={};_0x2fe6f3[_0x12b017]={'$like':'%'+_0x30214b[_0xe89b('0x47')][_0xe89b('0x40')]+'%'};return _0x2fe6f3;})});}_0x46457d=_[_0xe89b('0x60')]({},_0x46457d,_0x30214b[_0xe89b('0x61')]);return _0x123a5b[_0xe89b('0x116')](_0x46457d);}})['then'](function(_0x520dd0){if(_0x520dd0){_0x555ef0=_0x520dd0['length'];if(!_0x30214b[_0xe89b('0x47')]['hasOwnProperty'](_0xe89b('0xd8'))){_0x46457d[_0xe89b('0x27')]=qs[_0xe89b('0x27')](_0x30214b[_0xe89b('0x47')][_0xe89b('0x27')]);_0x46457d[_0xe89b('0x25')]=qs[_0xe89b('0x25')](_0x30214b[_0xe89b('0x47')]['offset']);}return _0x123a5b['getTeams'](_0x46457d);}})[_0xe89b('0x1a')](function(_0x16d945){if(_0x16d945){return _0x16d945?{'count':_0x555ef0,'rows':_0x16d945}:null;}})[_0xe89b('0x1a')](respondWithResult(_0x128bc3,null))[_0xe89b('0x65')](handleError(_0x128bc3,null));};exports['addTeams']=function(_0x17549a,_0x345181){var _0x4184fc=_0x17549a[_0xe89b('0x57')]['id'];var _0xa60a26=_0x17549a[_0xe89b('0x66')]?_0x17549a[_0xe89b('0x66')][_0xe89b('0x69')]:null;var _0x25f13f=[];return Promise['resolve']()[_0xe89b('0x1a')](function(){if(!_0xa60a26)throw new APIBadRequestError(_0xe89b('0x117'));})[_0xe89b('0x1a')](function(){return db[_0xe89b('0x46')][_0xe89b('0xcd')]({'where':{'id':_0x4184fc}});})[_0xe89b('0x1a')](function(_0x2f6322){if(!_0x2f6322)throw new APINotFoundError(util[_0xe89b('0xaf')](_0xe89b('0x118'),_0x17549a['params']['id']));return db[_0xe89b('0x72')][_0xe89b('0x119')](function(_0x110446){return _0x2f6322[_0xe89b('0x11a')](_0xa60a26,{'transaction':_0x110446})[_0xe89b('0x1a')](function(){return db[_0xe89b('0x115')]['findAll']({'where':{'id':{'$in':_0xa60a26}}});})[_0xe89b('0x1a')](function(_0x42b653){var _0x5178a8=_[_0xe89b('0x3e')](_0x42b653,function(_0x5202d0){return _0x5202d0[_0xe89b('0x11b')]();});return Promise['all'](_0x5178a8);})[_0xe89b('0x1a')](function(_0x23359e){_0x25f13f=_['flattenDeep'](_0x23359e);var _0x330239=_[_0xe89b('0x3e')](_0x25f13f,function(_0xa64294){return _0xa64294[_0xe89b('0x11c')](_0x2f6322['id'],{'transaction':_0x110446});});return Promise[_0xe89b('0x55')](_0x330239);})[_0xe89b('0x1a')](function(){if(!_0x2f6322['online'])return;var _0xec6793=_[_0xe89b('0x40')](_0x25f13f,function(_0x32b252){return _0x32b252[_0xe89b('0x11d')](_0xe89b('0xa0'))==='Voice';});var _0x103e30=_[_0xe89b('0x3e')](_0xec6793,function(_0x134245){return db[_0xe89b('0xb2')][_0xe89b('0xfc')]({'membername':_0x2f6322[_0xe89b('0x37')],'UserId':_0x2f6322['id'],'queue_name':_0x134245[_0xe89b('0x37')],'VoiceQueueId':_0x134245['id'],'interface':_['isNil'](_0x2f6322[_0xe89b('0xa2')])?util[_0xe89b('0xaf')](_0xe89b('0xb0'),_0x2f6322[_0xe89b('0x37')]):_0x2f6322[_0xe89b('0xa2')],'paused':_0x2f6322['voicePause']||![],'penalty':_0x2f6322['penalty']},{'transaction':_0x110446});});return Promise[_0xe89b('0x55')](_0x103e30);})[_0xe89b('0x1a')](function(){return db[_0xe89b('0x11e')][_0xe89b('0x4c')]({'where':{'teamId':{'$in':_0xa60a26}}});})['then'](function(_0x4ca66b){var _0x180e7b=_[_0xe89b('0x3e')](_0x4ca66b,function(_0x3f7f36){return db[_0xe89b('0x11f')]['create']({'UserId':_0x2f6322['id'],'VoicePrefixId':_0x3f7f36['VoicePrefixId']},{'transaction':_0x110446});});return Promise['all'](_0x180e7b);});});})[_0xe89b('0x1a')](function(){for(var _0x4c2f11=0x0;_0x4c2f11<_0x25f13f[_0xe89b('0x4e')];_0x4c2f11++){var _0x193a6c=_0x25f13f[_0x4c2f11][_0xe89b('0x11d')](_0xe89b('0xa0'));var _0x191396=_0x193a6c+_0xe89b('0xa9');socket[_0xe89b('0xaa')](_0xe89b('0x31')+_0x193a6c+'Queue:save',{'UserId':_0x4184fc,['queueField']:_0x25f13f[_0x4c2f11]['id']});}})[_0xe89b('0x1a')](respondWithStatusCode(_0x345181,null))[_0xe89b('0x65')](APIHandleError(_0x345181));};exports[_0xe89b('0x120')]=function(_0x3ecb65,_0x58d1de){var _0x1463ef=_0x3ecb65[_0xe89b('0x57')]['id'];var _0x389d23=null;if(_0x3ecb65[_0xe89b('0x47')]['ids']){_0x389d23=_[_0xe89b('0x121')](_0x3ecb65[_0xe89b('0x47')][_0xe89b('0x69')])?_0x3ecb65[_0xe89b('0x47')]['ids']:[_0x3ecb65[_0xe89b('0x47')][_0xe89b('0x69')]];}var _0x5b6de6=[];return Promise['resolve']()['then'](function(){if(!_0x389d23)throw new APIBadRequestError('Query\x20parameter\x20\x27ids\x27\x20is\x20required');})[_0xe89b('0x1a')](function(){return db[_0xe89b('0x46')]['findOne']({'where':{'id':_0x1463ef}});})[_0xe89b('0x1a')](function(_0x590de){if(!_0x590de)throw new APINotFoundError(util[_0xe89b('0xaf')](_0xe89b('0x118'),_0x3ecb65[_0xe89b('0x57')]['id']));return db[_0xe89b('0x72')][_0xe89b('0x119')](function(_0x225567){return _0x590de['removeTeams'](_0x389d23,{'transaction':_0x225567})[_0xe89b('0x1a')](function(){return db[_0xe89b('0x115')]['findAll']({'where':{'id':{'$in':_0x389d23}}});})[_0xe89b('0x1a')](function(_0x3338b5){var _0x34aab1=_[_0xe89b('0x3e')](_0x3338b5,function(_0x2456eb){return _0x2456eb[_0xe89b('0x11b')]();});return Promise[_0xe89b('0x55')](_0x34aab1);})[_0xe89b('0x1a')](function(_0x40552b){_0x5b6de6=_[_0xe89b('0x122')](_0x40552b);var _0x232aad=_['map'](_0x5b6de6,function(_0x11d9eb){return _0x11d9eb['removeAgent'](_0x590de['id'],{'transaction':_0x225567});});return Promise[_0xe89b('0x55')](_0x232aad);})[_0xe89b('0x1a')](function(){if(!_0x590de[_0xe89b('0x123')])return;var _0x2e4258=_[_0xe89b('0x40')](_0x5b6de6,function(_0x364db1){return _0x364db1[_0xe89b('0x11d')](_0xe89b('0xa0'))===_0xe89b('0x124');});var _0x20d7ff=_[_0xe89b('0x3e')](_0x2e4258,function(_0x28b432){return db[_0xe89b('0xb2')][_0xe89b('0x2e')]({'where':{'VoiceQueueId':_0x28b432['id'],'UserId':_0x590de['id']},'transaction':_0x225567});});return Promise['all'](_0x20d7ff);})[_0xe89b('0x1a')](function(){return db[_0xe89b('0x11e')][_0xe89b('0x4c')]({'where':{'teamId':{'$in':_0x389d23}}});})[_0xe89b('0x1a')](function(_0x51551a){var _0x243fba=_[_0xe89b('0x3e')](_0x51551a,function(_0xd58996){return db[_0xe89b('0x11f')][_0xe89b('0x2e')]({'where':{'UserId':_0x590de['id'],'VoicePrefixId':_0xd58996['VoicePrefixId']}},{'transaction':_0x225567});});return Promise['all'](_0x243fba);});});})[_0xe89b('0x1a')](function(){for(var _0x3e1b35=0x0;_0x3e1b35<_0x5b6de6[_0xe89b('0x4e')];_0x3e1b35++){var _0x538a7c=_0x5b6de6[_0x3e1b35]['getDataValue'](_0xe89b('0xa0'));var _0x53e5d8=_0x538a7c+_0xe89b('0xa9');socket[_0xe89b('0xaa')]('user'+_0x538a7c+_0xe89b('0xb5'),{'UserId':_0x1463ef,['queueField']:_0x5b6de6[_0x3e1b35]['id']});}})['then'](respondWithStatusCode(_0x58d1de,null))['catch'](APIHandleError(_0x58d1de));};exports[_0xe89b('0x125')]=function(_0x29946c,_0x218444){var _0x3d320d={};var _0x3a019b={};var _0x4d17e3;var _0x19f42e;return db[_0xe89b('0x46')]['findOne']({'where':{'id':_0x29946c[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x218444,null))[_0xe89b('0x1a')](function(_0x42969d){if(_0x42969d){_0x4d17e3=_0x42969d;_0x3a019b[_0xe89b('0x58')]=_[_0xe89b('0x5a')](db[_0xe89b('0xd3')][_0xe89b('0x3d')]);_0x3a019b[_0xe89b('0x47')]=_['keys'](_0x29946c[_0xe89b('0x47')]);_0x3a019b[_0xe89b('0x5b')]=_['intersection'](_0x3a019b['model'],_0x3a019b[_0xe89b('0x47')]);_0x3d320d[_0xe89b('0x4b')]=_[_0xe89b('0x5c')](_0x3a019b[_0xe89b('0x58')],qs[_0xe89b('0x5d')](_0x29946c[_0xe89b('0x47')][_0xe89b('0x5d')]));_0x3d320d[_0xe89b('0x4b')]=_0x3d320d['attributes'][_0xe89b('0x4e')]?_0x3d320d['attributes']:_0x3a019b[_0xe89b('0x58')];_0x3d320d[_0xe89b('0xd9')]=qs[_0xe89b('0xcf')](_0x29946c[_0xe89b('0x47')]['sort']);_0x3d320d[_0xe89b('0x45')]=qs['filters'](_[_0xe89b('0xd0')](_0x29946c['query'],_0x3a019b[_0xe89b('0x5b')]));if(_0x29946c[_0xe89b('0x47')][_0xe89b('0x40')]){_0x3d320d['where']=_['merge'](_0x3d320d[_0xe89b('0x45')],{'$or':_[_0xe89b('0x3e')](_0x3d320d[_0xe89b('0x4b')],function(_0x45bcea){var _0x542504={};_0x542504[_0x45bcea]={'$like':'%'+_0x29946c[_0xe89b('0x47')]['filter']+'%'};return _0x542504;})});}_0x3d320d=_[_0xe89b('0x60')]({},_0x3d320d,_0x29946c[_0xe89b('0x61')]);return _0x4d17e3[_0xe89b('0x125')](_0x3d320d);}})[_0xe89b('0x1a')](function(_0x474b9a){if(_0x474b9a){_0x19f42e=_0x474b9a['length'];if(!_0x29946c[_0xe89b('0x47')][_0xe89b('0xd2')](_0xe89b('0xd8'))){_0x3d320d[_0xe89b('0x27')]=qs[_0xe89b('0x27')](_0x29946c[_0xe89b('0x47')][_0xe89b('0x27')]);_0x3d320d[_0xe89b('0x25')]=qs[_0xe89b('0x25')](_0x29946c[_0xe89b('0x47')][_0xe89b('0x25')]);}return _0x4d17e3['getLists'](_0x3d320d);}})[_0xe89b('0x1a')](function(_0x3e43f5){if(_0x3e43f5){return _0x3e43f5?{'count':_0x19f42e,'rows':_0x3e43f5}:null;}})[_0xe89b('0x1a')](respondWithResult(_0x218444,null))[_0xe89b('0x65')](handleError(_0x218444,null));};exports[_0xe89b('0x126')]=function(_0x5133ed,_0x57f4bb){var _0x961cc8={};var _0x517f34={};var _0x38d19f;return db[_0xe89b('0x46')][_0xe89b('0xcd')]({'where':{'id':_0x5133ed['params']['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x57f4bb,null))[_0xe89b('0x1a')](function(_0x398e78){if(_0x398e78){_0x38d19f=_0x398e78;_0x517f34[_0xe89b('0x58')]=_[_0xe89b('0x5a')](db[_0xe89b('0x46')][_0xe89b('0x3d')]);_0x517f34[_0xe89b('0x47')]=_[_0xe89b('0x5a')](_0x5133ed['query']);_0x517f34[_0xe89b('0x5b')]=_['intersection'](_0x517f34[_0xe89b('0x58')],_0x517f34[_0xe89b('0x47')]);_0x961cc8[_0xe89b('0x4b')]=_['intersection'](_0x517f34[_0xe89b('0x58')],qs[_0xe89b('0x5d')](_0x5133ed[_0xe89b('0x47')][_0xe89b('0x5d')]));_0x961cc8[_0xe89b('0x4b')]=_0x961cc8[_0xe89b('0x4b')][_0xe89b('0x4e')]?_0x961cc8['attributes']:_0x517f34[_0xe89b('0x58')];_0x961cc8[_0xe89b('0xd9')]=qs['sort'](_0x5133ed[_0xe89b('0x47')]['sort']);_0x961cc8[_0xe89b('0x45')]=qs[_0xe89b('0x5b')](_[_0xe89b('0xd0')](_0x5133ed[_0xe89b('0x47')],_0x517f34['filters']));if(_0x5133ed[_0xe89b('0x47')][_0xe89b('0x40')]){_0x961cc8[_0xe89b('0x45')]=_[_0xe89b('0x60')](_0x961cc8['where'],{'$or':_[_0xe89b('0x3e')](_0x961cc8[_0xe89b('0x4b')],function(_0x239d15){var _0x1b6923={};_0x1b6923[_0x239d15]={'$like':'%'+_0x5133ed[_0xe89b('0x47')]['filter']+'%'};return _0x1b6923;})});}_0x961cc8[_0xe89b('0x58')]=db[_0xe89b('0x46')];_0x961cc8['as']=_0xe89b('0x32');_0x961cc8=_[_0xe89b('0x60')]({},_0x961cc8,_0x5133ed[_0xe89b('0x61')]);return _0x38d19f[_0xe89b('0xfa')]({'include':[_0x961cc8]});}})['then'](function(_0x3281d7){if(_0x3281d7){var _0x161db7={},_0x828568=[];for(var _0x581415=0x0;_0x581415<_0x3281d7['length'];_0x581415+=0x1){for(var _0x3c8a39=0x0,_0x2b7b21;_0x3c8a39<_0x3281d7[_0x581415]['Agents']['length'];_0x3c8a39+=0x1){_0x2b7b21=_0x3281d7[_0x581415][_0xe89b('0x32')][_0x3c8a39]['get']({'plain':!![]});_0x161db7[_0x2b7b21['id']]=_0x2b7b21;}}_0x161db7=_[_0xe89b('0x127')](_0x161db7);for(var _0x374a56=qs[_0xe89b('0x25')](_0x5133ed[_0xe89b('0x47')][_0xe89b('0x25')]);_0x374a56<_0x161db7['length']&&_0x828568[_0xe89b('0x4e')]<qs[_0xe89b('0x27')](_0x5133ed['query'][_0xe89b('0x27')]);_0x374a56+=0x1){if(_0x161db7[_0x374a56]){_0x828568[_0xe89b('0x4f')](_0x161db7[_0x374a56]);}}return{'count':_0x161db7[_0xe89b('0x4e')],'rows':_0x828568};}})[_0xe89b('0x1a')](respondWithResult(_0x57f4bb,null))[_0xe89b('0x65')](handleError(_0x57f4bb,null));};exports['destroy']=function(_0x447ebc,_0x392dfa){if(_0x447ebc[_0xe89b('0x31')]['id']==_0x447ebc[_0xe89b('0x57')]['id']){return _0x392dfa['status'](0x1f4)[_0xe89b('0x3b')]({'message':'You\x20can\x27t\x20delete\x20yourself'});}return db[_0xe89b('0x46')][_0xe89b('0x62')]({'where':{'id':_0x447ebc[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x392dfa,null))[_0xe89b('0x1a')](removeEntity(_0x392dfa,null))[_0xe89b('0x65')](handleError(_0x392dfa,null));};exports[_0xe89b('0x128')]=function(_0xe9dcc6,_0x181ab7){return db[_0xe89b('0x46')]['find']({'where':{'id':_0xe9dcc6[_0xe89b('0x57')]['id']}})['then'](handleEntityNotFound(_0x181ab7,null))[_0xe89b('0x1a')](function(_0x2566e2){if(_0x2566e2){return _0x2566e2[_0xe89b('0x128')](_0xe9dcc6[_0xe89b('0x66')][_0xe89b('0x69')],_[_0xe89b('0x6a')](_0xe9dcc6['body'],['ids','id'])||{})[_0xe89b('0xa8')](function(){for(var _0x18b14d=0x0;_0x18b14d<_0xe9dcc6['body'][_0xe89b('0x69')][_0xe89b('0x4e')];_0x18b14d+=0x1){socket[_0xe89b('0xaa')](_0xe89b('0x129'),{'ChatInteractionId':Number(_0xe9dcc6['body']['ids'][_0x18b14d]),'UserId':Number(_0xe9dcc6[_0xe89b('0x57')]['id'])});}return _0xe9dcc6['body'][_0xe89b('0x69')];});}})[_0xe89b('0x1a')](respondWithResult(_0x181ab7,null))[_0xe89b('0x65')](handleError(_0x181ab7,null));};exports[_0xe89b('0x12a')]=function(_0x3904e5,_0x42f6e7){return db[_0xe89b('0x46')]['find']({'where':{'id':_0x3904e5[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x42f6e7,null))[_0xe89b('0x1a')](function(_0x52a853){if(_0x52a853){return _0x52a853['removeChatInteractions'](_0x3904e5['query']['ids'])[_0xe89b('0x1a')](function(){if(_[_0xe89b('0x121')](_0x3904e5[_0xe89b('0x47')][_0xe89b('0x69')])){for(var _0x4e917c=0x0;_0x4e917c<_0x3904e5['query'][_0xe89b('0x69')][_0xe89b('0x4e')];_0x4e917c+=0x1){socket['emit']('user_has_chat_interactions:remove',{'ChatInteractionId':Number(_0x3904e5['query']['ids'][_0x4e917c]),'UserId':Number(_0x3904e5[_0xe89b('0x57')]['id'])});}}else{socket[_0xe89b('0xaa')](_0xe89b('0x12b'),{'ChatInteractionId':Number(_0x3904e5[_0xe89b('0x47')][_0xe89b('0x69')]),'UserId':Number(_0x3904e5[_0xe89b('0x57')]['id'])});}});}})[_0xe89b('0x1a')](respondWithStatusCode(_0x42f6e7,null))[_0xe89b('0x65')](handleError(_0x42f6e7,null));};exports['addMailInteractions']=function(_0x2525aa,_0xc9942a){return db[_0xe89b('0x46')][_0xe89b('0x62')]({'where':{'id':_0x2525aa[_0xe89b('0x57')]['id']}})['then'](handleEntityNotFound(_0xc9942a,null))[_0xe89b('0x1a')](function(_0x309857){if(_0x309857){return _0x309857[_0xe89b('0x12c')](_0x2525aa[_0xe89b('0x66')][_0xe89b('0x69')],_[_0xe89b('0x6a')](_0x2525aa[_0xe89b('0x66')],['ids','id'])||{})[_0xe89b('0xa8')](function(){for(var _0x46953b=0x0;_0x46953b<_0x2525aa[_0xe89b('0x66')][_0xe89b('0x69')]['length'];_0x46953b+=0x1){socket[_0xe89b('0xaa')](_0xe89b('0x12d'),{'MailInteractionId':Number(_0x2525aa[_0xe89b('0x66')][_0xe89b('0x69')][_0x46953b]),'UserId':Number(_0x2525aa[_0xe89b('0x57')]['id'])});}return _0x2525aa[_0xe89b('0x66')][_0xe89b('0x69')];});}})['then'](respondWithResult(_0xc9942a,null))[_0xe89b('0x65')](handleError(_0xc9942a,null));};exports[_0xe89b('0x12e')]=function(_0x1525d2,_0x23f8fc){return db['User'][_0xe89b('0x62')]({'where':{'id':_0x1525d2[_0xe89b('0x57')]['id']}})['then'](handleEntityNotFound(_0x23f8fc,null))[_0xe89b('0x1a')](function(_0x381c26){if(_0x381c26){return _0x381c26[_0xe89b('0x12e')](_0x1525d2[_0xe89b('0x47')][_0xe89b('0x69')])[_0xe89b('0x1a')](function(){if(_[_0xe89b('0x121')](_0x1525d2[_0xe89b('0x47')][_0xe89b('0x69')])){for(var _0x427bca=0x0;_0x427bca<_0x1525d2[_0xe89b('0x47')]['ids'][_0xe89b('0x4e')];_0x427bca+=0x1){socket['emit'](_0xe89b('0x12f'),{'MailInteractionId':Number(_0x1525d2['query']['ids'][_0x427bca]),'UserId':Number(_0x1525d2[_0xe89b('0x57')]['id'])});}}else{socket[_0xe89b('0xaa')]('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x1525d2[_0xe89b('0x47')][_0xe89b('0x69')]),'UserId':Number(_0x1525d2['params']['id'])});}});}})[_0xe89b('0x1a')](respondWithStatusCode(_0x23f8fc,null))['catch'](handleError(_0x23f8fc,null));};exports[_0xe89b('0x130')]=function(_0x9fe87e,_0x3303dc){return db[_0xe89b('0x46')]['find']({'where':{'id':_0x9fe87e['params']['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x3303dc,null))[_0xe89b('0x1a')](function(_0x1b6bb5){if(_0x1b6bb5){return _0x1b6bb5[_0xe89b('0x130')](_0x9fe87e[_0xe89b('0x66')][_0xe89b('0x69')],_['omit'](_0x9fe87e['body'],[_0xe89b('0x69'),'id'])||{})['spread'](function(){for(var _0x3a1939=0x0;_0x3a1939<_0x9fe87e['body'][_0xe89b('0x69')]['length'];_0x3a1939+=0x1){socket[_0xe89b('0xaa')]('user_has_fax_interactions:save',{'FaxInteractionId':Number(_0x9fe87e['body'][_0xe89b('0x69')][_0x3a1939]),'UserId':Number(_0x9fe87e['params']['id'])});}return _0x9fe87e[_0xe89b('0x66')][_0xe89b('0x69')];});}})[_0xe89b('0x1a')](respondWithResult(_0x3303dc,null))[_0xe89b('0x65')](handleError(_0x3303dc,null));};exports['removeFaxInteractions']=function(_0x388d3b,_0x307892){return db[_0xe89b('0x46')][_0xe89b('0x62')]({'where':{'id':_0x388d3b[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x307892,null))[_0xe89b('0x1a')](function(_0x2513a1){if(_0x2513a1){return _0x2513a1[_0xe89b('0x131')](_0x388d3b[_0xe89b('0x47')][_0xe89b('0x69')])['then'](function(){if(_[_0xe89b('0x121')](_0x388d3b[_0xe89b('0x47')][_0xe89b('0x69')])){for(var _0xee1978=0x0;_0xee1978<_0x388d3b['query'][_0xe89b('0x69')][_0xe89b('0x4e')];_0xee1978+=0x1){socket[_0xe89b('0xaa')](_0xe89b('0x132'),{'FaxInteractionId':Number(_0x388d3b[_0xe89b('0x47')]['ids'][_0xee1978]),'UserId':Number(_0x388d3b[_0xe89b('0x57')]['id'])});}}else{socket[_0xe89b('0xaa')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x388d3b[_0xe89b('0x47')]['ids']),'UserId':Number(_0x388d3b[_0xe89b('0x57')]['id'])});}});}})[_0xe89b('0x1a')](respondWithStatusCode(_0x307892,null))['catch'](handleError(_0x307892,null));};exports['addSmsInteractions']=function(_0x239b45,_0x10de9f){return db['User'][_0xe89b('0x62')]({'where':{'id':_0x239b45[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x10de9f,null))[_0xe89b('0x1a')](function(_0x4c9ae3){if(_0x4c9ae3){return _0x4c9ae3['addSmsInteractions'](_0x239b45['body']['ids'],_['omit'](_0x239b45[_0xe89b('0x66')],[_0xe89b('0x69'),'id'])||{})[_0xe89b('0xa8')](function(){for(var _0x44e241=0x0;_0x44e241<_0x239b45[_0xe89b('0x66')]['ids'][_0xe89b('0x4e')];_0x44e241+=0x1){socket[_0xe89b('0xaa')](_0xe89b('0x133'),{'SmsInteractionId':Number(_0x239b45[_0xe89b('0x66')][_0xe89b('0x69')][_0x44e241]),'UserId':Number(_0x239b45[_0xe89b('0x57')]['id'])});}return _0x239b45[_0xe89b('0x66')][_0xe89b('0x69')];});}})[_0xe89b('0x1a')](respondWithResult(_0x10de9f,null))[_0xe89b('0x65')](handleError(_0x10de9f,null));};exports[_0xe89b('0x134')]=function(_0x351b73,_0x4dbba4){return db[_0xe89b('0x46')]['find']({'where':{'id':_0x351b73[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x4dbba4,null))[_0xe89b('0x1a')](function(_0x4eaf13){if(_0x4eaf13){return _0x4eaf13['removeSmsInteractions'](_0x351b73[_0xe89b('0x47')][_0xe89b('0x69')])[_0xe89b('0x1a')](function(){if(_[_0xe89b('0x121')](_0x351b73[_0xe89b('0x47')][_0xe89b('0x69')])){for(var _0x242674=0x0;_0x242674<_0x351b73[_0xe89b('0x47')][_0xe89b('0x69')]['length'];_0x242674+=0x1){socket[_0xe89b('0xaa')](_0xe89b('0x135'),{'SmsInteractionId':Number(_0x351b73[_0xe89b('0x47')][_0xe89b('0x69')][_0x242674]),'UserId':Number(_0x351b73[_0xe89b('0x57')]['id'])});}}else{socket[_0xe89b('0xaa')](_0xe89b('0x135'),{'SmsInteractionId':Number(_0x351b73['query'][_0xe89b('0x69')]),'UserId':Number(_0x351b73[_0xe89b('0x57')]['id'])});}});}})[_0xe89b('0x1a')](respondWithStatusCode(_0x4dbba4,null))[_0xe89b('0x65')](handleError(_0x4dbba4,null));};exports[_0xe89b('0x136')]=function(_0x4f707f,_0x50a5b8){return db[_0xe89b('0x46')]['find']({'where':{'id':_0x4f707f[_0xe89b('0x57')]['id']}})['then'](handleEntityNotFound(_0x50a5b8,null))[_0xe89b('0x1a')](function(_0x417637){if(_0x417637){return _0x417637[_0xe89b('0x136')](_0x4f707f['body'][_0xe89b('0x69')],_[_0xe89b('0x6a')](_0x4f707f[_0xe89b('0x66')],[_0xe89b('0x69'),'id'])||{})[_0xe89b('0xa8')](function(){for(var _0x46f8f7=0x0;_0x46f8f7<_0x4f707f[_0xe89b('0x66')][_0xe89b('0x69')][_0xe89b('0x4e')];_0x46f8f7+=0x1){socket[_0xe89b('0xaa')](_0xe89b('0x137'),{'OpenchannelInteractionId':Number(_0x4f707f[_0xe89b('0x66')][_0xe89b('0x69')][_0x46f8f7]),'UserId':Number(_0x4f707f[_0xe89b('0x57')]['id'])});}return _0x4f707f[_0xe89b('0x66')]['ids'];});}})['then'](respondWithResult(_0x50a5b8,null))[_0xe89b('0x65')](handleError(_0x50a5b8,null));};exports[_0xe89b('0x138')]=function(_0xc95a62,_0x236bf7){return db[_0xe89b('0x46')][_0xe89b('0x62')]({'where':{'id':_0xc95a62[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x236bf7,null))[_0xe89b('0x1a')](function(_0x40c86d){if(_0x40c86d){return _0x40c86d['removeOpenchannelInteractions'](_0xc95a62[_0xe89b('0x47')][_0xe89b('0x69')])[_0xe89b('0x1a')](function(){if(_[_0xe89b('0x121')](_0xc95a62[_0xe89b('0x47')][_0xe89b('0x69')])){for(var _0x139dbb=0x0;_0x139dbb<_0xc95a62[_0xe89b('0x47')][_0xe89b('0x69')][_0xe89b('0x4e')];_0x139dbb+=0x1){socket[_0xe89b('0xaa')]('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0xc95a62[_0xe89b('0x47')][_0xe89b('0x69')][_0x139dbb]),'UserId':Number(_0xc95a62['params']['id'])});}}else{socket['emit'](_0xe89b('0x139'),{'OpenchannelInteractionId':Number(_0xc95a62[_0xe89b('0x47')]['ids']),'UserId':Number(_0xc95a62['params']['id'])});}});}})['then'](respondWithStatusCode(_0x236bf7,null))[_0xe89b('0x65')](handleError(_0x236bf7,null));};exports[_0xe89b('0x13a')]=function(_0x493bfa,_0x188501){return db['User'][_0xe89b('0x62')]({'where':{'id':_0x493bfa[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x188501,null))[_0xe89b('0x1a')](function(_0x3faa15){if(_0x3faa15){return _0x3faa15['addWhatsappInteractions'](_0x493bfa[_0xe89b('0x66')][_0xe89b('0x69')],_[_0xe89b('0x6a')](_0x493bfa[_0xe89b('0x66')],['ids','id'])||{})[_0xe89b('0xa8')](function(){for(var _0x2181fb=0x0;_0x2181fb<_0x493bfa[_0xe89b('0x66')][_0xe89b('0x69')][_0xe89b('0x4e')];_0x2181fb+=0x1){socket['emit'](_0xe89b('0x13b'),{'WhatsappInteractionId':Number(_0x493bfa[_0xe89b('0x66')][_0xe89b('0x69')][_0x2181fb]),'UserId':Number(_0x493bfa[_0xe89b('0x57')]['id'])});}return _0x493bfa['body'][_0xe89b('0x69')];});}})[_0xe89b('0x1a')](respondWithResult(_0x188501,null))['catch'](handleError(_0x188501,null));};exports[_0xe89b('0x13c')]=function(_0xbec60a,_0x59d14a){return db[_0xe89b('0x46')][_0xe89b('0x62')]({'where':{'id':_0xbec60a[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x59d14a,null))[_0xe89b('0x1a')](function(_0x53f95a){if(_0x53f95a){return _0x53f95a['removeWhatsappInteractions'](_0xbec60a[_0xe89b('0x47')]['ids']);}})['then'](respondWithStatusCode(_0x59d14a,null))[_0xe89b('0x65')](handleError(_0x59d14a,null));};exports['getVoicePrefixes']=function(_0x5693b6,_0x5b60ed){var _0x1c03d8={};var _0x40954f={};var _0x32e898;var _0x15c309;return db[_0xe89b('0x46')]['findOne']({'where':{'id':_0x5693b6['params']['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x5b60ed,null))[_0xe89b('0x1a')](function(_0xcd8ae9){if(_0xcd8ae9){_0x32e898=_0xcd8ae9;_0x40954f[_0xe89b('0x58')]=_[_0xe89b('0x5a')](db['VoicePrefix'][_0xe89b('0x3d')]);_0x40954f[_0xe89b('0x47')]=_['keys'](_0x5693b6[_0xe89b('0x47')]);_0x40954f[_0xe89b('0x5b')]=_[_0xe89b('0x5c')](_0x40954f[_0xe89b('0x58')],_0x40954f[_0xe89b('0x47')]);_0x1c03d8[_0xe89b('0x4b')]=_[_0xe89b('0x5c')](_0x40954f[_0xe89b('0x58')],qs[_0xe89b('0x5d')](_0x5693b6[_0xe89b('0x47')]['fields']));_0x1c03d8[_0xe89b('0x4b')]=_0x1c03d8[_0xe89b('0x4b')][_0xe89b('0x4e')]?_0x1c03d8['attributes']:_0x40954f[_0xe89b('0x58')];_0x1c03d8[_0xe89b('0xd9')]=qs[_0xe89b('0xcf')](_0x5693b6[_0xe89b('0x47')][_0xe89b('0xcf')]);_0x1c03d8[_0xe89b('0x45')]=qs[_0xe89b('0x5b')](_[_0xe89b('0xd0')](_0x5693b6['query'],_0x40954f[_0xe89b('0x5b')]));if(_0x5693b6[_0xe89b('0x47')][_0xe89b('0x40')]){_0x1c03d8[_0xe89b('0x45')]=_[_0xe89b('0x60')](_0x1c03d8[_0xe89b('0x45')],{'$or':_[_0xe89b('0x3e')](_0x1c03d8[_0xe89b('0x4b')],function(_0x2ac1ec){var _0x209aaa={};_0x209aaa[_0x2ac1ec]={'$like':'%'+_0x5693b6[_0xe89b('0x47')][_0xe89b('0x40')]+'%'};return _0x209aaa;})});}_0x1c03d8=_[_0xe89b('0x60')]({},_0x1c03d8,_0x5693b6['options']);return _0x32e898['getVoicePrefixes'](_0x1c03d8);}})[_0xe89b('0x1a')](function(_0x27538e){if(_0x27538e){_0x15c309=_0x27538e[_0xe89b('0x4e')];if(!_0x5693b6[_0xe89b('0x47')]['hasOwnProperty'](_0xe89b('0xd8'))){_0x1c03d8[_0xe89b('0x27')]=qs[_0xe89b('0x27')](_0x5693b6[_0xe89b('0x47')][_0xe89b('0x27')]);_0x1c03d8[_0xe89b('0x25')]=qs[_0xe89b('0x25')](_0x5693b6['query'][_0xe89b('0x25')]);}return _0x32e898[_0xe89b('0x13d')](_0x1c03d8);}})[_0xe89b('0x1a')](function(_0x669c4){if(_0x669c4){return _0x669c4?{'count':_0x15c309,'rows':_0x669c4}:null;}})['then'](respondWithResult(_0x5b60ed,null))['catch'](handleError(_0x5b60ed,null));};exports[_0xe89b('0x13e')]=function(_0x117d6e,_0x4344d1){var _0x3355ee={};var _0x2b1033={};var _0x59727a;var _0x1b2acc;return db[_0xe89b('0x46')]['findOne']({'where':{'id':_0x117d6e[_0xe89b('0x57')]['id']}})['then'](handleEntityNotFound(_0x4344d1,null))[_0xe89b('0x1a')](function(_0x209de1){if(_0x209de1){_0x59727a=_0x209de1;_0x2b1033['model']=_['keys'](db['FaxAccount'][_0xe89b('0x3d')]);_0x2b1033[_0xe89b('0x47')]=_[_0xe89b('0x5a')](_0x117d6e[_0xe89b('0x47')]);_0x2b1033[_0xe89b('0x5b')]=_['intersection'](_0x2b1033['model'],_0x2b1033[_0xe89b('0x47')]);_0x3355ee[_0xe89b('0x4b')]=_['intersection'](_0x2b1033[_0xe89b('0x58')],qs['fields'](_0x117d6e['query'][_0xe89b('0x5d')]));_0x3355ee['attributes']=_0x3355ee[_0xe89b('0x4b')][_0xe89b('0x4e')]?_0x3355ee['attributes']:_0x2b1033[_0xe89b('0x58')];_0x3355ee[_0xe89b('0xd9')]=qs['sort'](_0x117d6e[_0xe89b('0x47')]['sort']);_0x3355ee[_0xe89b('0x45')]=qs[_0xe89b('0x5b')](_['pick'](_0x117d6e['query'],_0x2b1033[_0xe89b('0x5b')]));if(_0x117d6e[_0xe89b('0x47')][_0xe89b('0x40')]){_0x3355ee[_0xe89b('0x45')]=_['merge'](_0x3355ee['where'],{'$or':_[_0xe89b('0x3e')](_0x3355ee[_0xe89b('0x4b')],function(_0x2172f1){var _0x2db47={};_0x2db47[_0x2172f1]={'$like':'%'+_0x117d6e[_0xe89b('0x47')][_0xe89b('0x40')]+'%'};return _0x2db47;})});}_0x3355ee=_[_0xe89b('0x60')]({},_0x3355ee,_0x117d6e[_0xe89b('0x61')]);return _0x59727a[_0xe89b('0x13e')](_0x3355ee);}})[_0xe89b('0x1a')](function(_0x4e09c9){if(_0x4e09c9){_0x1b2acc=_0x4e09c9[_0xe89b('0x4e')];if(!_0x117d6e[_0xe89b('0x47')][_0xe89b('0xd2')]('nolimit')){_0x3355ee[_0xe89b('0x27')]=qs[_0xe89b('0x27')](_0x117d6e['query'][_0xe89b('0x27')]);_0x3355ee['offset']=qs[_0xe89b('0x25')](_0x117d6e['query']['offset']);}return _0x59727a['getFaxAccounts'](_0x3355ee);}})[_0xe89b('0x1a')](function(_0x404595){if(_0x404595){return _0x404595?{'count':_0x1b2acc,'rows':_0x404595}:null;}})[_0xe89b('0x1a')](respondWithResult(_0x4344d1,null))[_0xe89b('0x65')](handleError(_0x4344d1,null));};exports[_0xe89b('0x13f')]=function(_0x59eaac,_0x15de44){return db['User']['find']({'where':{'id':_0x59eaac[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x15de44,null))[_0xe89b('0x1a')](function(_0x5aa1cf){if(_0x5aa1cf){return _0x5aa1cf[_0xe89b('0x13f')](_0x59eaac[_0xe89b('0x66')]['ids'],_[_0xe89b('0x6a')](_0x59eaac['body'],['ids','id'])||{});}})[_0xe89b('0x1a')](respondWithResult(_0x15de44,null))[_0xe89b('0x65')](handleError(_0x15de44,null));};exports[_0xe89b('0x140')]=function(_0x253bb0,_0x7a9122){return db['User']['find']({'where':{'id':_0x253bb0[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x7a9122,null))[_0xe89b('0x1a')](function(_0x117f05){if(_0x117f05){return _0x117f05[_0xe89b('0x140')](_0x253bb0[_0xe89b('0x47')]['ids']);}})[_0xe89b('0x1a')](respondWithStatusCode(_0x7a9122,null))[_0xe89b('0x65')](handleError(_0x7a9122,null));};exports[_0xe89b('0x141')]=function(_0x25195e,_0x42bc7f){var _0x3333de={};var _0x59167e={};var _0x14dd22;var _0x4cb20c;return db[_0xe89b('0x46')][_0xe89b('0xcd')]({'where':{'id':_0x25195e[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x42bc7f,null))[_0xe89b('0x1a')](function(_0x5c9347){if(_0x5c9347){_0x14dd22=_0x5c9347;_0x59167e[_0xe89b('0x58')]=_[_0xe89b('0x5a')](db['MailAccount'][_0xe89b('0x3d')]);_0x59167e['query']=_[_0xe89b('0x5a')](_0x25195e[_0xe89b('0x47')]);_0x59167e[_0xe89b('0x5b')]=_[_0xe89b('0x5c')](_0x59167e[_0xe89b('0x58')],_0x59167e[_0xe89b('0x47')]);_0x3333de['attributes']=_[_0xe89b('0x5c')](_0x59167e['model'],qs['fields'](_0x25195e[_0xe89b('0x47')][_0xe89b('0x5d')]));_0x3333de[_0xe89b('0x4b')]=_0x3333de[_0xe89b('0x4b')]['length']?_0x3333de[_0xe89b('0x4b')]:_0x59167e['model'];_0x3333de[_0xe89b('0xd9')]=qs[_0xe89b('0xcf')](_0x25195e[_0xe89b('0x47')][_0xe89b('0xcf')]);_0x3333de[_0xe89b('0x45')]=qs['filters'](_[_0xe89b('0xd0')](_0x25195e['query'],_0x59167e[_0xe89b('0x5b')]));if(_0x25195e[_0xe89b('0x47')]['filter']){_0x3333de['where']=_[_0xe89b('0x60')](_0x3333de[_0xe89b('0x45')],{'$or':_[_0xe89b('0x3e')](_0x3333de[_0xe89b('0x4b')],function(_0x2e49f8){var _0x2d05ea={};_0x2d05ea[_0x2e49f8]={'$like':'%'+_0x25195e[_0xe89b('0x47')]['filter']+'%'};return _0x2d05ea;})});}_0x3333de=_[_0xe89b('0x60')]({},_0x3333de,_0x25195e[_0xe89b('0x61')]);return _0x14dd22[_0xe89b('0x141')](_0x3333de);}})[_0xe89b('0x1a')](function(_0x4c2e05){if(_0x4c2e05){_0x4cb20c=_0x4c2e05[_0xe89b('0x4e')];if(!_0x25195e[_0xe89b('0x47')][_0xe89b('0xd2')]('nolimit')){_0x3333de[_0xe89b('0x27')]=qs[_0xe89b('0x27')](_0x25195e[_0xe89b('0x47')][_0xe89b('0x27')]);_0x3333de[_0xe89b('0x25')]=qs[_0xe89b('0x25')](_0x25195e[_0xe89b('0x47')][_0xe89b('0x25')]);}return _0x14dd22['getMailAccounts'](_0x3333de);}})[_0xe89b('0x1a')](function(_0x292dcc){if(_0x292dcc){return _0x292dcc?{'count':_0x4cb20c,'rows':_0x292dcc}:null;}})[_0xe89b('0x1a')](respondWithResult(_0x42bc7f,null))[_0xe89b('0x65')](handleError(_0x42bc7f,null));};exports[_0xe89b('0x142')]=function(_0x53cb7a,_0x45cb95){return db['User']['find']({'where':{'id':_0x53cb7a[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x45cb95,null))[_0xe89b('0x1a')](function(_0x4aa44f){if(_0x4aa44f){return _0x4aa44f['addMailAccounts'](_0x53cb7a[_0xe89b('0x66')][_0xe89b('0x69')],_['omit'](_0x53cb7a[_0xe89b('0x66')],[_0xe89b('0x69'),'id'])||{});}})[_0xe89b('0x1a')](respondWithResult(_0x45cb95,null))[_0xe89b('0x65')](handleError(_0x45cb95,null));};exports['removeMailAccounts']=function(_0x2e135b,_0x3af04b){return db[_0xe89b('0x46')]['find']({'where':{'id':_0x2e135b[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x3af04b,null))[_0xe89b('0x1a')](function(_0x36c4e2){if(_0x36c4e2){return _0x36c4e2[_0xe89b('0x143')](_0x2e135b[_0xe89b('0x47')][_0xe89b('0x69')]);}})[_0xe89b('0x1a')](respondWithStatusCode(_0x3af04b,null))[_0xe89b('0x65')](handleError(_0x3af04b,null));};exports[_0xe89b('0x144')]=function(_0x574a1a,_0x57b84d){var _0x998847={};var _0x99eeaf={};var _0x50be65;var _0x89d91a;return db['User'][_0xe89b('0xcd')]({'where':{'id':_0x574a1a[_0xe89b('0x57')]['id']}})['then'](handleEntityNotFound(_0x57b84d,null))[_0xe89b('0x1a')](function(_0xb44431){if(_0xb44431){_0x50be65=_0xb44431;_0x99eeaf['model']=_[_0xe89b('0x5a')](db['OpenchannelAccount'][_0xe89b('0x3d')]);_0x99eeaf['query']=_[_0xe89b('0x5a')](_0x574a1a['query']);_0x99eeaf[_0xe89b('0x5b')]=_[_0xe89b('0x5c')](_0x99eeaf[_0xe89b('0x58')],_0x99eeaf[_0xe89b('0x47')]);_0x998847[_0xe89b('0x4b')]=_[_0xe89b('0x5c')](_0x99eeaf[_0xe89b('0x58')],qs[_0xe89b('0x5d')](_0x574a1a['query']['fields']));_0x998847[_0xe89b('0x4b')]=_0x998847['attributes']['length']?_0x998847[_0xe89b('0x4b')]:_0x99eeaf[_0xe89b('0x58')];_0x998847[_0xe89b('0xd9')]=qs[_0xe89b('0xcf')](_0x574a1a['query']['sort']);_0x998847['where']=qs['filters'](_[_0xe89b('0xd0')](_0x574a1a[_0xe89b('0x47')],_0x99eeaf[_0xe89b('0x5b')]));if(_0x574a1a['query']['filter']){_0x998847['where']=_[_0xe89b('0x60')](_0x998847['where'],{'$or':_[_0xe89b('0x3e')](_0x998847[_0xe89b('0x4b')],function(_0x2fc776){var _0x2a3b38={};_0x2a3b38[_0x2fc776]={'$like':'%'+_0x574a1a['query'][_0xe89b('0x40')]+'%'};return _0x2a3b38;})});}_0x998847=_[_0xe89b('0x60')]({},_0x998847,_0x574a1a['options']);return _0x50be65[_0xe89b('0x144')](_0x998847);}})[_0xe89b('0x1a')](function(_0x526a95){if(_0x526a95){_0x89d91a=_0x526a95[_0xe89b('0x4e')];if(!_0x574a1a['query'][_0xe89b('0xd2')](_0xe89b('0xd8'))){_0x998847[_0xe89b('0x27')]=qs[_0xe89b('0x27')](_0x574a1a[_0xe89b('0x47')][_0xe89b('0x27')]);_0x998847[_0xe89b('0x25')]=qs['offset'](_0x574a1a[_0xe89b('0x47')][_0xe89b('0x25')]);}return _0x50be65['getOpenchannelAccounts'](_0x998847);}})[_0xe89b('0x1a')](function(_0x1e8dac){if(_0x1e8dac){return _0x1e8dac?{'count':_0x89d91a,'rows':_0x1e8dac}:null;}})[_0xe89b('0x1a')](respondWithResult(_0x57b84d,null))[_0xe89b('0x65')](handleError(_0x57b84d,null));};exports[_0xe89b('0x145')]=function(_0x4a4f41,_0x5782b3){return db[_0xe89b('0x46')][_0xe89b('0x62')]({'where':{'id':_0x4a4f41[_0xe89b('0x57')]['id']}})['then'](handleEntityNotFound(_0x5782b3,null))[_0xe89b('0x1a')](function(_0x1864a5){if(_0x1864a5){return _0x1864a5[_0xe89b('0x145')](_0x4a4f41['body'][_0xe89b('0x69')],_['omit'](_0x4a4f41[_0xe89b('0x66')],[_0xe89b('0x69'),'id'])||{});}})[_0xe89b('0x1a')](respondWithResult(_0x5782b3,null))['catch'](handleError(_0x5782b3,null));};exports['removeOpenchannelAccounts']=function(_0x22f6fc,_0x388905){return db[_0xe89b('0x46')][_0xe89b('0x62')]({'where':{'id':_0x22f6fc[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x388905,null))['then'](function(_0x17fe5c){if(_0x17fe5c){return _0x17fe5c[_0xe89b('0x146')](_0x22f6fc[_0xe89b('0x47')][_0xe89b('0x69')]);}})['then'](respondWithStatusCode(_0x388905,null))[_0xe89b('0x65')](handleError(_0x388905,null));};exports[_0xe89b('0x147')]=function(_0x5630de,_0x331311){var _0x59c5d5={};var _0x4c609c={};var _0x4d4242;var _0x2517c8;return db['User'][_0xe89b('0xcd')]({'where':{'id':_0x5630de['params']['id']}})['then'](handleEntityNotFound(_0x331311,null))[_0xe89b('0x1a')](function(_0x412be7){if(_0x412be7){_0x4d4242=_0x412be7;_0x4c609c[_0xe89b('0x58')]=_[_0xe89b('0x5a')](db[_0xe89b('0x148')]['rawAttributes']);_0x4c609c[_0xe89b('0x47')]=_['keys'](_0x5630de[_0xe89b('0x47')]);_0x4c609c[_0xe89b('0x5b')]=_[_0xe89b('0x5c')](_0x4c609c['model'],_0x4c609c[_0xe89b('0x47')]);_0x59c5d5['attributes']=_['intersection'](_0x4c609c[_0xe89b('0x58')],qs[_0xe89b('0x5d')](_0x5630de['query'][_0xe89b('0x5d')]));_0x59c5d5[_0xe89b('0x4b')]=_0x59c5d5['attributes'][_0xe89b('0x4e')]?_0x59c5d5['attributes']:_0x4c609c['model'];_0x59c5d5[_0xe89b('0xd9')]=qs[_0xe89b('0xcf')](_0x5630de[_0xe89b('0x47')]['sort']);_0x59c5d5[_0xe89b('0x45')]=qs[_0xe89b('0x5b')](_['pick'](_0x5630de['query'],_0x4c609c[_0xe89b('0x5b')]));if(_0x5630de[_0xe89b('0x47')][_0xe89b('0x40')]){_0x59c5d5['where']=_[_0xe89b('0x60')](_0x59c5d5['where'],{'$or':_[_0xe89b('0x3e')](_0x59c5d5[_0xe89b('0x4b')],function(_0x1a7fc8){var _0x48efe3={};_0x48efe3[_0x1a7fc8]={'$like':'%'+_0x5630de[_0xe89b('0x47')][_0xe89b('0x40')]+'%'};return _0x48efe3;})});}_0x59c5d5=_[_0xe89b('0x60')]({},_0x59c5d5,_0x5630de['options']);return _0x4d4242[_0xe89b('0x147')](_0x59c5d5);}})[_0xe89b('0x1a')](function(_0x364b58){if(_0x364b58){_0x2517c8=_0x364b58['length'];if(!_0x5630de[_0xe89b('0x47')]['hasOwnProperty'](_0xe89b('0xd8'))){_0x59c5d5['limit']=qs[_0xe89b('0x27')](_0x5630de[_0xe89b('0x47')][_0xe89b('0x27')]);_0x59c5d5[_0xe89b('0x25')]=qs['offset'](_0x5630de[_0xe89b('0x47')]['offset']);}return _0x4d4242[_0xe89b('0x147')](_0x59c5d5);}})[_0xe89b('0x1a')](function(_0x583393){if(_0x583393){return _0x583393?{'count':_0x2517c8,'rows':_0x583393}:null;}})[_0xe89b('0x1a')](respondWithResult(_0x331311,null))[_0xe89b('0x65')](handleError(_0x331311,null));};exports[_0xe89b('0x149')]=function(_0x3a756b,_0x4e8a1a){return db['User'][_0xe89b('0x62')]({'where':{'id':_0x3a756b[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x4e8a1a,null))[_0xe89b('0x1a')](function(_0x3abd34){if(_0x3abd34){return _0x3abd34[_0xe89b('0x149')](_0x3a756b[_0xe89b('0x66')][_0xe89b('0x69')],_[_0xe89b('0x6a')](_0x3a756b['body'],['ids','id'])||{});}})[_0xe89b('0x1a')](respondWithResult(_0x4e8a1a,null))['catch'](handleError(_0x4e8a1a,null));};exports[_0xe89b('0x14a')]=function(_0x3601e0,_0x2a8659){return db[_0xe89b('0x46')][_0xe89b('0x62')]({'where':{'id':_0x3601e0[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x2a8659,null))[_0xe89b('0x1a')](function(_0xa3dc4f){if(_0xa3dc4f){return _0xa3dc4f[_0xe89b('0x14a')](_0x3601e0[_0xe89b('0x47')][_0xe89b('0x69')]);}})[_0xe89b('0x1a')](respondWithStatusCode(_0x2a8659,null))[_0xe89b('0x65')](handleError(_0x2a8659,null));};exports[_0xe89b('0x14b')]=function(_0x3c85bf,_0x33cbdb){var _0x139894={};var _0x1c9849={};var _0x4be0f5;var _0x507e17;return db[_0xe89b('0x46')][_0xe89b('0xcd')]({'where':{'id':_0x3c85bf['params']['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x33cbdb,null))['then'](function(_0x41b2b5){if(_0x41b2b5){_0x4be0f5=_0x41b2b5;_0x1c9849[_0xe89b('0x58')]=_[_0xe89b('0x5a')](db[_0xe89b('0x14c')][_0xe89b('0x3d')]);_0x1c9849[_0xe89b('0x47')]=_[_0xe89b('0x5a')](_0x3c85bf['query']);_0x1c9849['filters']=_[_0xe89b('0x5c')](_0x1c9849[_0xe89b('0x58')],_0x1c9849[_0xe89b('0x47')]);_0x139894[_0xe89b('0x4b')]=_[_0xe89b('0x5c')](_0x1c9849['model'],qs[_0xe89b('0x5d')](_0x3c85bf[_0xe89b('0x47')][_0xe89b('0x5d')]));_0x139894[_0xe89b('0x4b')]=_0x139894['attributes']['length']?_0x139894[_0xe89b('0x4b')]:_0x1c9849[_0xe89b('0x58')];_0x139894['order']=qs[_0xe89b('0xcf')](_0x3c85bf['query'][_0xe89b('0xcf')]);_0x139894[_0xe89b('0x45')]=qs[_0xe89b('0x5b')](_[_0xe89b('0xd0')](_0x3c85bf[_0xe89b('0x47')],_0x1c9849[_0xe89b('0x5b')]));if(_0x3c85bf['query'][_0xe89b('0x40')]){_0x139894['where']=_[_0xe89b('0x60')](_0x139894[_0xe89b('0x45')],{'$or':_[_0xe89b('0x3e')](_0x139894[_0xe89b('0x4b')],function(_0x596d54){var _0x29f8ab={};_0x29f8ab[_0x596d54]={'$like':'%'+_0x3c85bf[_0xe89b('0x47')][_0xe89b('0x40')]+'%'};return _0x29f8ab;})});}_0x139894=_[_0xe89b('0x60')]({},_0x139894,_0x3c85bf[_0xe89b('0x61')]);return _0x4be0f5[_0xe89b('0x14b')](_0x139894);}})[_0xe89b('0x1a')](function(_0x3dbe60){if(_0x3dbe60){_0x507e17=_0x3dbe60[_0xe89b('0x4e')];if(!_0x3c85bf['query']['hasOwnProperty'](_0xe89b('0xd8'))){_0x139894[_0xe89b('0x27')]=qs['limit'](_0x3c85bf[_0xe89b('0x47')]['limit']);_0x139894['offset']=qs[_0xe89b('0x25')](_0x3c85bf['query']['offset']);}return _0x4be0f5['getChatWebsites'](_0x139894);}})[_0xe89b('0x1a')](function(_0x4981d6){if(_0x4981d6){return _0x4981d6?{'count':_0x507e17,'rows':_0x4981d6}:null;}})[_0xe89b('0x1a')](respondWithResult(_0x33cbdb,null))[_0xe89b('0x65')](handleError(_0x33cbdb,null));};exports[_0xe89b('0x14d')]=function(_0x3dfa2d,_0x4e8dc3){return db[_0xe89b('0x46')][_0xe89b('0x62')]({'where':{'id':_0x3dfa2d[_0xe89b('0x57')]['id']}})['then'](handleEntityNotFound(_0x4e8dc3,null))[_0xe89b('0x1a')](function(_0x40b5ac){if(_0x40b5ac){return _0x40b5ac[_0xe89b('0x14d')](_0x3dfa2d['body'][_0xe89b('0x69')],_['omit'](_0x3dfa2d[_0xe89b('0x66')],[_0xe89b('0x69'),'id'])||{});}})[_0xe89b('0x1a')](respondWithResult(_0x4e8dc3,null))[_0xe89b('0x65')](handleError(_0x4e8dc3,null));};exports[_0xe89b('0x14e')]=function(_0x393494,_0x41e5e3){return db[_0xe89b('0x46')][_0xe89b('0x62')]({'where':{'id':_0x393494['params']['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x41e5e3,null))[_0xe89b('0x1a')](function(_0x6a391){if(_0x6a391){return _0x6a391[_0xe89b('0x14e')](_0x393494[_0xe89b('0x47')][_0xe89b('0x69')]);}})[_0xe89b('0x1a')](respondWithStatusCode(_0x41e5e3,null))['catch'](handleError(_0x41e5e3,null));};exports['getWhatsappAccounts']=function(_0x544adc,_0x5685db){var _0x396d2d={};var _0x2b7541={};var _0x285464;var _0x43381f;return db[_0xe89b('0x46')][_0xe89b('0xcd')]({'where':{'id':_0x544adc[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x5685db,null))[_0xe89b('0x1a')](function(_0x57246e){if(_0x57246e){_0x285464=_0x57246e;_0x2b7541[_0xe89b('0x58')]=_[_0xe89b('0x5a')](db[_0xe89b('0x14f')][_0xe89b('0x3d')]);_0x2b7541[_0xe89b('0x47')]=_[_0xe89b('0x5a')](_0x544adc['query']);_0x2b7541['filters']=_[_0xe89b('0x5c')](_0x2b7541[_0xe89b('0x58')],_0x2b7541[_0xe89b('0x47')]);_0x396d2d[_0xe89b('0x4b')]=_[_0xe89b('0x5c')](_0x2b7541['model'],qs[_0xe89b('0x5d')](_0x544adc[_0xe89b('0x47')][_0xe89b('0x5d')]));_0x396d2d['attributes']=_0x396d2d[_0xe89b('0x4b')][_0xe89b('0x4e')]?_0x396d2d[_0xe89b('0x4b')]:_0x2b7541['model'];_0x396d2d['order']=qs['sort'](_0x544adc['query'][_0xe89b('0xcf')]);_0x396d2d[_0xe89b('0x45')]=qs['filters'](_[_0xe89b('0xd0')](_0x544adc['query'],_0x2b7541[_0xe89b('0x5b')]));if(_0x544adc[_0xe89b('0x47')][_0xe89b('0x40')]){_0x396d2d[_0xe89b('0x45')]=_[_0xe89b('0x60')](_0x396d2d[_0xe89b('0x45')],{'$or':_[_0xe89b('0x3e')](_0x396d2d['attributes'],function(_0x2e0d96){var _0x30c810={};_0x30c810[_0x2e0d96]={'$like':'%'+_0x544adc[_0xe89b('0x47')][_0xe89b('0x40')]+'%'};return _0x30c810;})});}_0x396d2d=_[_0xe89b('0x60')]({},_0x396d2d,_0x544adc[_0xe89b('0x61')]);return _0x285464[_0xe89b('0x150')](_0x396d2d);}})[_0xe89b('0x1a')](function(_0x30d416){if(_0x30d416){_0x43381f=_0x30d416[_0xe89b('0x4e')];if(!_0x544adc[_0xe89b('0x47')][_0xe89b('0xd2')](_0xe89b('0xd8'))){_0x396d2d['limit']=qs[_0xe89b('0x27')](_0x544adc[_0xe89b('0x47')][_0xe89b('0x27')]);_0x396d2d[_0xe89b('0x25')]=qs[_0xe89b('0x25')](_0x544adc[_0xe89b('0x47')]['offset']);}return _0x285464['getWhatsappAccounts'](_0x396d2d);}})['then'](function(_0x5dddb0){if(_0x5dddb0){return _0x5dddb0?{'count':_0x43381f,'rows':_0x5dddb0}:null;}})[_0xe89b('0x1a')](respondWithResult(_0x5685db,null))[_0xe89b('0x65')](handleError(_0x5685db,null));};exports[_0xe89b('0x151')]=function(_0x2c9f0a,_0x453ec3){return db[_0xe89b('0x46')][_0xe89b('0x62')]({'where':{'id':_0x2c9f0a[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x453ec3,null))[_0xe89b('0x1a')](function(_0x1cd266){if(_0x1cd266){return _0x1cd266['addWhatsappAccounts'](_0x2c9f0a['body'][_0xe89b('0x69')],_[_0xe89b('0x6a')](_0x2c9f0a[_0xe89b('0x66')],['ids','id'])||{});}})[_0xe89b('0x1a')](respondWithResult(_0x453ec3,null))[_0xe89b('0x65')](handleError(_0x453ec3,null));};exports[_0xe89b('0x152')]=function(_0x249932,_0x3822c1){return db[_0xe89b('0x46')]['find']({'where':{'id':_0x249932[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x3822c1,null))['then'](function(_0x142b3e){if(_0x142b3e){return _0x142b3e['removeWhatsappAccounts'](_0x249932['query']['ids']);}})[_0xe89b('0x1a')](respondWithStatusCode(_0x3822c1,null))[_0xe89b('0x65')](handleError(_0x3822c1,null));};exports[_0xe89b('0x153')]=function(_0x56e067,_0x520a78){var _0x543dfd={};var _0x56c9a3={};var _0x1c708c;var _0x348217;return db[_0xe89b('0x46')]['findOne']({'where':{'id':_0x56e067[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x520a78,null))['then'](function(_0x1fa967){if(_0x1fa967){_0x1c708c=_0x1fa967;_0x56c9a3[_0xe89b('0x58')]=_[_0xe89b('0x5a')](db[_0xe89b('0x154')][_0xe89b('0x3d')]);_0x56c9a3['query']=_['keys'](_0x56e067[_0xe89b('0x47')]);_0x56c9a3['filters']=_[_0xe89b('0x5c')](_0x56c9a3[_0xe89b('0x58')],_0x56c9a3[_0xe89b('0x47')]);_0x543dfd[_0xe89b('0x4b')]=_[_0xe89b('0x5c')](_0x56c9a3[_0xe89b('0x58')],qs[_0xe89b('0x5d')](_0x56e067[_0xe89b('0x47')][_0xe89b('0x5d')]));_0x543dfd[_0xe89b('0x4b')]=_0x543dfd[_0xe89b('0x4b')][_0xe89b('0x4e')]?_0x543dfd['attributes']:_0x56c9a3[_0xe89b('0x58')];_0x543dfd['order']=qs[_0xe89b('0xcf')](_0x56e067['query'][_0xe89b('0xcf')]);_0x543dfd[_0xe89b('0x45')]=qs[_0xe89b('0x5b')](_[_0xe89b('0xd0')](_0x56e067[_0xe89b('0x47')],_0x56c9a3[_0xe89b('0x5b')]));if(_0x56e067[_0xe89b('0x47')][_0xe89b('0x40')]){_0x543dfd[_0xe89b('0x45')]=_[_0xe89b('0x60')](_0x543dfd[_0xe89b('0x45')],{'$or':_[_0xe89b('0x3e')](_0x543dfd[_0xe89b('0x4b')],function(_0x3b0b1c){var _0x2025d6={};_0x2025d6[_0x3b0b1c]={'$like':'%'+_0x56e067[_0xe89b('0x47')]['filter']+'%'};return _0x2025d6;})});}_0x543dfd=_[_0xe89b('0x60')]({},_0x543dfd,_0x56e067[_0xe89b('0x61')]);return _0x1c708c['getSquareProjects'](_0x543dfd);}})[_0xe89b('0x1a')](function(_0x5435d1){if(_0x5435d1){_0x348217=_0x5435d1[_0xe89b('0x4e')];if(!_0x56e067['query']['hasOwnProperty'](_0xe89b('0xd8'))){_0x543dfd[_0xe89b('0x27')]=qs[_0xe89b('0x27')](_0x56e067[_0xe89b('0x47')]['limit']);_0x543dfd[_0xe89b('0x25')]=qs['offset'](_0x56e067[_0xe89b('0x47')][_0xe89b('0x25')]);}return _0x1c708c[_0xe89b('0x153')](_0x543dfd);}})[_0xe89b('0x1a')](function(_0x44b6a3){if(_0x44b6a3){return _0x44b6a3?{'count':_0x348217,'rows':_0x44b6a3}:null;}})['then'](respondWithResult(_0x520a78,null))[_0xe89b('0x65')](handleError(_0x520a78,null));};exports['addSquareProjects']=function(_0x1a3f70,_0x41adab){return db[_0xe89b('0x46')][_0xe89b('0x62')]({'where':{'id':_0x1a3f70[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x41adab,null))[_0xe89b('0x1a')](function(_0x41621b){if(_0x41621b){return _0x41621b[_0xe89b('0x155')](_0x1a3f70[_0xe89b('0x66')][_0xe89b('0x69')],_[_0xe89b('0x6a')](_0x1a3f70[_0xe89b('0x66')],[_0xe89b('0x69'),'id'])||{});}})[_0xe89b('0x1a')](respondWithResult(_0x41adab,null))[_0xe89b('0x65')](handleError(_0x41adab,null));};exports[_0xe89b('0x156')]=function(_0x131891,_0x2b6983){return db[_0xe89b('0x46')]['find']({'where':{'id':_0x131891[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x2b6983,null))['then'](function(_0xcb87a1){if(_0xcb87a1){return _0xcb87a1[_0xe89b('0x156')](_0x131891[_0xe89b('0x47')][_0xe89b('0x69')]);}})[_0xe89b('0x1a')](respondWithStatusCode(_0x2b6983,null))[_0xe89b('0x65')](handleError(_0x2b6983,null));};exports[_0xe89b('0x157')]=function(_0xb31fd1,_0xae244a){var _0x582046={},_0x54957c={},_0x5c0ae1={'count':0x0,'rows':[]};var _0x19d34d=db[_0xe89b('0x158')][_0xe89b('0x3d')];_0x54957c[_0xe89b('0x58')]=_[_0xe89b('0x5a')](_0x19d34d);_0x54957c[_0xe89b('0x47')]=_['keys'](_0xb31fd1[_0xe89b('0x47')]);_0x54957c[_0xe89b('0x5b')]=_[_0xe89b('0x5c')](_0x54957c[_0xe89b('0x58')],_0x54957c[_0xe89b('0x47')]);_0x54957c['filters']=_[_0xe89b('0xcc')](_0x54957c[_0xe89b('0x5b')],[_0xe89b('0x159'),'$or',_0xe89b('0x15a'),'$gte',_0xe89b('0x15b'),_0xe89b('0x15c'),_0xe89b('0x15d'),_0xe89b('0x15e'),_0xe89b('0x15f'),_0xe89b('0x160'),_0xe89b('0x161'),_0xe89b('0x162'),_0xe89b('0x163'),_0xe89b('0x164'),_0xe89b('0x165'),_0xe89b('0x166'),_0xe89b('0x167'),'$like',_0xe89b('0x168'),'$contains',_0xe89b('0x169'),_0xe89b('0x16a')]);_0x582046['attributes']=_[_0xe89b('0x5c')](_0x54957c['model'],qs[_0xe89b('0x5d')](_0xb31fd1[_0xe89b('0x47')][_0xe89b('0x5d')]));_0x582046[_0xe89b('0x4b')]=_0x582046[_0xe89b('0x4b')][_0xe89b('0x4e')]?_0x582046['attributes']:_0x54957c[_0xe89b('0x58')];if(!_0xb31fd1[_0xe89b('0x47')][_0xe89b('0xd2')]('nolimit')){_0x582046['limit']=qs[_0xe89b('0x27')](_0xb31fd1[_0xe89b('0x47')][_0xe89b('0x27')]);_0x582046[_0xe89b('0x25')]=qs[_0xe89b('0x25')](_0xb31fd1['query'][_0xe89b('0x25')]);}_0x582046['order']=qs[_0xe89b('0xcf')](_0xb31fd1[_0xe89b('0x47')][_0xe89b('0xcf')]);_0x582046[_0xe89b('0x45')]=qs[_0xe89b('0x5b')](_[_0xe89b('0xd0')](_0xb31fd1['query'],_0x54957c['filters']));if(_0xb31fd1['query'][_0xe89b('0x40')]){_0x582046[_0xe89b('0x45')]=_[_0xe89b('0x60')](_0x582046[_0xe89b('0x45')],{'$or':_[_0xe89b('0x3e')](_0x582046[_0xe89b('0x4b')],function(_0x441d70){var _0x21fc40={};_0x21fc40[_0x441d70]={'$like':'%'+_0xb31fd1[_0xe89b('0x47')]['filter']+'%'};return _0x21fc40;})});}_0x582046[_0xe89b('0x45')]={'$and':[_0x582046[_0xe89b('0x45')],{'$or':[{'UserId':_0xb31fd1[_0xe89b('0x57')]['id']},{'OwnerId':_0xb31fd1[_0xe89b('0x57')]['id']}]}]};_0x582046=_[_0xe89b('0x60')]({},_0x582046,_0xb31fd1['options']);var _0x3d9ab7={'where':_0x582046[_0xe89b('0x45')]};return db[_0xe89b('0x158')][_0xe89b('0x28')](_0x3d9ab7)[_0xe89b('0x1a')](function(_0x3fb49e){_0x5c0ae1[_0xe89b('0x28')]=_0x3fb49e;if(_0xb31fd1[_0xe89b('0x47')][_0xe89b('0x5e')]){_0x582046[_0xe89b('0x4a')]=[{'attributes':['id',_0xe89b('0x16b'),_0xe89b('0x16c'),'phone'],'model':db['CmContact'],'as':'Contact'},{'attributes':['id',_0xe89b('0x37'),'dialActive'],'model':db[_0xe89b('0xad')],'as':_0xe89b('0xda')}];}return db[_0xe89b('0x158')][_0xe89b('0x4c')](_0x582046);})['then'](function(_0x124b0a){_0x5c0ae1[_0xe89b('0x4d')]=_0x124b0a;return _0x5c0ae1;})[_0xe89b('0x1a')](respondWithFilteredResult(_0xae244a,_0x582046))['catch'](handleError(_0xae244a,null));};exports[_0xe89b('0x16d')]=function(_0x112804,_0x38ce60){if(!_[_0xe89b('0x70')](_0x112804[_0xe89b('0x31')]['id'])&&(_0x112804[_0xe89b('0x31')][_0xe89b('0x2f')]==_0xe89b('0x30')||_0x112804[_0xe89b('0x31')][_0xe89b('0x2f')]==_0xe89b('0x31'))){return db[_0xe89b('0x46')][_0xe89b('0xcd')]({'where':{'id':_0x112804[_0xe89b('0x57')]['id']},'raw':!![]})[_0xe89b('0x1a')](function(_0x4e35f1){return authService[_0xe89b('0x16e')](_0x4e35f1);})[_0xe89b('0x1a')](function(_0x507c1c){if(_0x507c1c){return _0x38ce60[_0xe89b('0x23')](0xc8)[_0xe89b('0x2b')]({'api_key':_0x507c1c[_0xe89b('0x16f')]});}else{return _0x38ce60[_0xe89b('0x23')](0xcc)[_0xe89b('0x2b')]({'message':'No\x20API\x20access\x20key\x20found!'});}})['catch'](handleError(_0x38ce60,0x193));}else{return _0x38ce60[_0xe89b('0x23')](0x191)[_0xe89b('0x2b')]({'message':_0xe89b('0x170')});}};exports['createApiKey']=function(_0x469eb9,_0x15a83c){if(!_[_0xe89b('0x70')](_0x469eb9['user']['id'])&&(_0x469eb9['user']['role']==_0xe89b('0x30')||_0x469eb9[_0xe89b('0x31')]['role']==_0xe89b('0x31'))){return db[_0xe89b('0x46')]['find']({'where':{'id':_0x469eb9[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](function(_0x3b2e6d){return authService['generateApiKey'](_0x3b2e6d);})[_0xe89b('0x1a')](function(_0x1ecb3a){return db[_0xe89b('0x46')][_0xe89b('0x2c')]({'apiKeyIat':_0x1ecb3a[_0xe89b('0x171')],'apiKeyNonce':_0x1ecb3a[_0xe89b('0x172')]},{'where':{'id':_0x469eb9[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](function(){return _0x15a83c['status'](0xc8)[_0xe89b('0x2b')]({'api_key':_0x1ecb3a[_0xe89b('0x16f')]});});})[_0xe89b('0x65')](handleError(_0x15a83c,0x193));}else{return _0x15a83c['status'](0x191)['json']({'message':_0xe89b('0x170')});}};exports['removeApiKey']=function(_0x2430a8,_0x4b3549){if(!_['isNil'](_0x2430a8[_0xe89b('0x31')]['id'])&&(_0x2430a8[_0xe89b('0x31')][_0xe89b('0x2f')]==_0xe89b('0x30')||_0x2430a8[_0xe89b('0x31')]['role']=='user')){return db[_0xe89b('0x46')][_0xe89b('0x62')]({'where':{'id':_0x2430a8[_0xe89b('0x57')]['id']}})[_0xe89b('0x1a')](handleEntityNotFound(_0x4b3549,null))[_0xe89b('0x1a')](function(_0x2e6d8c){if(_0x2e6d8c&&_0x2e6d8c[_0xe89b('0x173')]&&_0x2e6d8c['apiKeyIat'])return _0x2e6d8c;else throw{'message':_0xe89b('0x174')};})[_0xe89b('0x1a')](function(){return db['User'][_0xe89b('0x2c')]({'apiKeyNonce':null,'apiKeyIat':null},{'where':{'id':_0x2430a8[_0xe89b('0x57')]['id']}});})[_0xe89b('0x1a')](respondWithStatusCode(_0x4b3549,0xc8))['catch'](handleError(_0x4b3549,0x193));}else{return _0x4b3549[_0xe89b('0x23')](0x191)[_0xe89b('0x2b')]({'message':'You\x20don\x27t\x20have\x20sufficient\x20privileges\x20to\x20access\x20this\x20resource.'});}};exports[_0xe89b('0x175')]=function(_0x49f750,_0x342ab6){var _0x30738a=_0x49f750[_0xe89b('0x31')][_0xe89b('0xae')]({'plain':!![]});if(!_0x30738a){return _0x342ab6['status'](0x191)[_0xe89b('0x3b')](_0xe89b('0x176'));}else{Promise[_0xe89b('0x105')]()[_0xe89b('0x1a')](function(){if(_0x49f750[_0xe89b('0x47')][_0xe89b('0x48')]!==_0xe89b('0x49'))return;return _0x49f750[_0xe89b('0x31')][_0xe89b('0x177')]();})[_0xe89b('0x1a')](function(_0x230ec){if(!_0x230ec)return;return _0x230ec[_0xe89b('0xae')]({'plain':!![]});})['then'](function(_0x5e5fea){_0x30738a[_0xe89b('0x48')]=_0x5e5fea;return _0x342ab6[_0xe89b('0x23')](0xc8)[_0xe89b('0x2b')](_0x30738a);});}};exports[_0xe89b('0x178')]=function(_0x15bdc3,_0x4d3d7f){var _0x407b3d={'offset':0x0},_0x34c37a={'count':0x0,'rows':[]};Promise[_0xe89b('0x105')]()[_0xe89b('0x1a')](function(){if(!_0x15bdc3[_0xe89b('0x47')]['filter']&&!_0x15bdc3[_0xe89b('0x47')][_0xe89b('0x179')]&&!_0x15bdc3[_0xe89b('0x47')][_0xe89b('0x17a')])return[];return Promise['resolve']()[_0xe89b('0x1a')](function(){var _0x2f4ab0=[];if(!_[_0xe89b('0x91')](_0x15bdc3[_0xe89b('0x47')][_0xe89b('0x179')])){_0x2f4ab0[_0xe89b('0x4f')](db[_0xe89b('0x115')]['findAll']({'attributes':['id','name'],'where':{'id':_0x15bdc3[_0xe89b('0x47')][_0xe89b('0x179')]}}));}if(!_['isEmpty'](_0x15bdc3[_0xe89b('0x47')]['queues'])){_0x2f4ab0[_0xe89b('0x4f')](db[_0xe89b('0xad')]['findAll']({'attributes':['id','name'],'type':_0xe89b('0x17b'),'where':{'id':_0x15bdc3['query'][_0xe89b('0x17a')]}}));}return Promise[_0xe89b('0x55')](_0x2f4ab0);})[_0xe89b('0x1a')](function(_0x569b58){var _0x24b90e=_[_0xe89b('0x17c')](_0x569b58)[_0xe89b('0x3e')](function(_0x68041c){return _0x68041c[_0xe89b('0x126')]({'attributes':['id',_0xe89b('0x37'),_0xe89b('0x6b'),'online'],'raw':!![]});});return Promise[_0xe89b('0x55')](_0x24b90e);})[_0xe89b('0x1a')](function(_0x4c786b){var _0x28e898=_['flatten'](_0x4c786b);if(!_0x15bdc3[_0xe89b('0x47')][_0xe89b('0x40')])return _0x28e898;if(_[_0xe89b('0x91')](_0x28e898)){return db['User'][_0xe89b('0x4c')]({'attributes':['id','name',_0xe89b('0x6b'),_0xe89b('0x123')],'where':{'role':'agent','$or':[db[_0xe89b('0x72')][_0xe89b('0x45')](db[_0xe89b('0x72')]['fn']('lower',db[_0xe89b('0x72')][_0xe89b('0x17d')](_0xe89b('0x37'))),{'$like':'%'+_0x15bdc3[_0xe89b('0x47')][_0xe89b('0x40')][_0xe89b('0xa5')]()+'%'}),{'internal':{'$like':'%'+_0x15bdc3[_0xe89b('0x47')][_0xe89b('0x40')]+'%'}}]},'raw':!![]});}else{return _(_0x28e898)[_0xe89b('0x17c')]()['filter'](function(_0x278a85){return _0x278a85[_0xe89b('0x37')][_0xe89b('0xa5')]()['includes'](_0x15bdc3[_0xe89b('0x47')]['filter'][_0xe89b('0xa5')]())||_0x278a85[_0xe89b('0x6b')]['toString']()['includes'](_0x15bdc3['query']['filter']);})['value']();}})[_0xe89b('0x1a')](function(_0xeeb294){var _0x531931=_0xe89b('0x37');var _0x41af93=_0xe89b('0x17e');if(_0x15bdc3[_0xe89b('0x47')][_0xe89b('0xcf')]){_0x41af93=_0x15bdc3['query'][_0xe89b('0xcf')][0x0]==='-'?_0xe89b('0x17f'):_0xe89b('0x17e');_0x531931=_0x41af93===_0xe89b('0x17e')?_0x15bdc3[_0xe89b('0x47')][_0xe89b('0xcf')]:_0x15bdc3[_0xe89b('0x47')][_0xe89b('0xcf')]['substring'](0x1);}return _(_0xeeb294)['uniqBy']('id')[_0xe89b('0x180')]([function(_0x3be384){return _0x531931===_0xe89b('0x37')?_0x3be384[_0x531931][_0xe89b('0xa5')]():_0x3be384[_0x531931];}],[_0x41af93])[_0xe89b('0x3e')](function(_0x5cda15){return _['pick'](_0x5cda15,['id','name',_0xe89b('0x6b'),_0xe89b('0x123')]);})[_0xe89b('0x36')]();})['then'](function(_0x3587f5){return client['request']('Agents',_0x15bdc3)[_0xe89b('0x1a')](function(_0x410e39){if(_0x410e39[_0xe89b('0x1e')])throw new Error(_0xe89b('0x181'));var _0x1ccfe4=_0x410e39[_0xe89b('0x22')];var _0x4a8332=jayson[_0xe89b('0x17')][_0xe89b('0x18')]({'port':0x232c});return _0x4a8332['request'](_0xe89b('0x32'),_0x15bdc3)[_0xe89b('0x1a')](function(_0xda8e00){if(_0xda8e00[_0xe89b('0x1e')])throw new Error(_0xe89b('0x182'));var _0x4aa752=_0xda8e00[_0xe89b('0x22')];return _[_0xe89b('0x60')]({},_0x4aa752,_0x1ccfe4);});})[_0xe89b('0x1a')](function(_0x4cd11d){return _[_0xe89b('0x3e')](_0x3587f5,function(_0x283856){var _0x39c34c=_[_0xe89b('0x62')](_0x4cd11d[_0xe89b('0x4d')],['id',_0x283856['id']]);if(!_0x39c34c||!_0x283856[_0xe89b('0x123')]){_0x283856[_0xe89b('0x23')]=_0xe89b('0x183');}else if(_0x39c34c[_0xe89b('0xb1')]){_0x283856[_0xe89b('0x23')]=_0xe89b('0x107');}else{_0x283856[_0xe89b('0x23')]=_[_0xe89b('0x41')]([_0xe89b('0x184'),_0xe89b('0x185'),_0xe89b('0x186'),_0xe89b('0x187'),null,undefined],_0x39c34c[_0xe89b('0x188')])?_0xe89b('0x123'):_0xe89b('0x189');}return _0x283856;});});});})['then'](function(_0x184f6a){if(!_0x15bdc3[_0xe89b('0x47')][_0xe89b('0xd2')](_0xe89b('0xd8'))){_0x407b3d['limit']=qs[_0xe89b('0x27')](_0x15bdc3[_0xe89b('0x47')][_0xe89b('0x27')]||0xa);_0x407b3d[_0xe89b('0x25')]=qs[_0xe89b('0x25')](_0x15bdc3[_0xe89b('0x47')]['offset']);}_0x34c37a[_0xe89b('0x28')]=_0x184f6a[_0xe89b('0x4e')];_0x34c37a[_0xe89b('0x4d')]=_0x407b3d['limit']?_0x184f6a[_0xe89b('0x18a')](_0x407b3d['offset'],_0x407b3d[_0xe89b('0x25')]+_0x407b3d[_0xe89b('0x27')]):_0x184f6a;return _0x34c37a;})[_0xe89b('0x1a')](respondWithFilteredResult(_0x4d3d7f,_0x407b3d))[_0xe89b('0x65')](handleError(_0x4d3d7f,null));};function get_open_tabs(_0x1ae776,_0x5b6929){var _0x1053bd=_0x1ae776[_0xe89b('0x18b')](0x0)['toUpperCase']()+_0x1ae776[_0xe89b('0x18a')](0x1);var _0x1a576d={'type':db[_0xe89b('0x97')][_0xe89b('0x73')][_0xe89b('0x74')],'raw':!![]};return new BPromise(function(_0x4f783d,_0x2ad901){var _0x1a0ddd=squel['select']()[_0xe89b('0x18c')](_0xe89b('0x18d')+_0x1053bd+'InteractionId','id')[_0xe89b('0x18c')](_0xe89b('0x18e'))[_0xe89b('0x75')](_0xe89b('0x18f')+_0x1ae776+_0xe89b('0x190'),'ui')[_0xe89b('0x45')](_0xe89b('0x191'),_0x5b6929['id']);return db[_0xe89b('0x72')][_0xe89b('0x47')](_0x1a0ddd[_0xe89b('0x192')](),_0x1a576d)[_0xe89b('0x1a')](function(_0xa4854e){_0x5b6929[_0x1053bd+'OpenTabs']=_0xa4854e;_0x4f783d(_0xa4854e);})['catch'](function(_0x15b141){_0x2ad901(_0x15b141);});});}
\ No newline at end of file
index 0fe9bb9..b197408 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa618=['remove','emit','hasOwnProperty','exports','events','../../mysqldb','User','setMaxListeners','save','update'];(function(_0x41e6b5,_0x4e9771){var _0x1eb88a=function(_0xd80992){while(--_0xd80992){_0x41e6b5['push'](_0x41e6b5['shift']());}};_0x1eb88a(++_0x4e9771);}(_0xa618,0xf4));var _0x8a61=function(_0xa16095,_0x16b3a1){_0xa16095=_0xa16095-0x0;var _0x55ab6d=_0xa618[_0xa16095];return _0x55ab6d;};'use strict';var EventEmitter=require(_0x8a61('0x0'));var User=require(_0x8a61('0x1'))['db'][_0x8a61('0x2')];var UserEvents=new EventEmitter();UserEvents[_0x8a61('0x3')](0x0);var events={'afterCreate':_0x8a61('0x4'),'afterUpdate':_0x8a61('0x5'),'afterDestroy':_0x8a61('0x6')};function emitEvent(_0x163f9a){return function(_0x2f95e3,_0x415751,_0x43c33f){UserEvents[_0x8a61('0x7')](_0x163f9a+':'+_0x2f95e3['id'],_0x2f95e3);UserEvents[_0x8a61('0x7')](_0x163f9a,_0x2f95e3);_0x43c33f(null);};}for(var e in events){if(events[_0x8a61('0x8')](e)){var event=events[e];User['hook'](e,emitEvent(event));}}module[_0x8a61('0x9')]=UserEvents;
\ No newline at end of file
+var _0xbec8=['update','hasOwnProperty','hook','events','User','setMaxListeners'];(function(_0x5f09c5,_0x2bfca0){var _0x426ad9=function(_0x18fe5f){while(--_0x18fe5f){_0x5f09c5['push'](_0x5f09c5['shift']());}};_0x426ad9(++_0x2bfca0);}(_0xbec8,0x1e3));var _0x8bec=function(_0x592df4,_0x4e719b){_0x592df4=_0x592df4-0x0;var _0x3b4fe4=_0xbec8[_0x592df4];return _0x3b4fe4;};'use strict';var EventEmitter=require(_0x8bec('0x0'));var User=require('../../mysqldb')['db'][_0x8bec('0x1')];var UserEvents=new EventEmitter();UserEvents[_0x8bec('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0x8bec('0x3'),'afterDestroy':'remove'};function emitEvent(_0x2a82e9){return function(_0x30b8f4,_0x30ff6c,_0x53d514){UserEvents['emit'](_0x2a82e9+':'+_0x30b8f4['id'],_0x30b8f4);UserEvents['emit'](_0x2a82e9,_0x30b8f4);_0x53d514(null);};}for(var e in events){if(events[_0x8bec('0x4')](e)){var event=events[e];User[_0x8bec('0x5')](e,emitEvent(event));}}module['exports']=UserEvents;
\ No newline at end of file
index d6b8c63..dffdd6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e2a=['SIP/%s,,tTxXU(xcally-mixmonitor-context)','SIP/%s,,tTxX','priority','VoiceChanSpy','findAll','then','internal','concat','exports','models','User','users','utf8','undefined','resolve','UserProfile','find','updateMd5Password','updatePassword','catch','changed','userProfileId','userSetting','createUserSetting','error','VoiceExtension','bulkCreate','destroy','encryptPassword','function','Missing\x20Callback','randomBytes','salt','base64','pbkdf2Sync','sha1','toString','pbkdf2','indexOf','provider','makeSalt','md5secret','bluebird','crypto','util','md5','./user.attributes','google','length','system','format','prefix','push','merge','Set','CDR(type)=%s','chanspy','record','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','SIP/%s,%s','name','options','join','StopMixMonitor','wav','gsm','context','from-sip','CDR(type)=internal','extensionMonitor','includes','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=%s'];(function(_0x2f1172,_0x5f5b26){var _0x58e374=function(_0x1a61fa){while(--_0x1a61fa){_0x2f1172['push'](_0x2f1172['shift']());}};_0x58e374(++_0x5f5b26);}(_0x3e2a,0xc4));var _0xa3e2=function(_0x46a02a,_0x22c333){_0x46a02a=_0x46a02a-0x0;var _0x4ce1fd=_0x3e2a[_0x46a02a];return _0x4ce1fd;};'use strict';var BPromise=require(_0xa3e2('0x0'));var crypto=require(_0xa3e2('0x1'));var util=require(_0xa3e2('0x2'));var md5=require(_0xa3e2('0x3'));var _=require('lodash');var attributes=require(_0xa3e2('0x4'));var authTypes=[_0xa3e2('0x5')];var validatePresenceOf=function(_0x1b4b12){return _0x1b4b12&&_0x1b4b12[_0xa3e2('0x6')];};var getChanSpyApplications=function(_0x24dc69,_0xf3f006,_0x208486){var _0x5272c7={'context':_0x24dc69['context']||'from-sip','type':_0xa3e2('0x7'),'isApp':![],'UserId':_0x24dc69['id']};var _0x4ceaf4=[];for(var _0x2f518f=0x0,_0x537d2c=0x1;_0x2f518f<_0x208486[_0xa3e2('0x6')];_0x2f518f++,_0x537d2c=0x1){var _0x5a0b98={'exten':util[_0xa3e2('0x8')]('%s%s',_0x208486[_0x2f518f][_0xa3e2('0x9')],_0xf3f006),'ChanSpyId':_0x208486[_0x2f518f]['id']};_0x4ceaf4[_0xa3e2('0xa')](_[_0xa3e2('0xb')]({'app':_0xa3e2('0xc'),'appdata':util[_0xa3e2('0x8')](_0xa3e2('0xd'),_0xa3e2('0xe')),'priority':_0x537d2c++},_0x5272c7,_0x5a0b98));if(_0x208486[_0x2f518f][_0xa3e2('0xf')]){_0x4ceaf4['push'](_[_0xa3e2('0xb')]({'app':'MixMonitor','appdata':util[_0xa3e2('0x8')](_0xa3e2('0x10'),_0x208486[_0x2f518f][_0xa3e2('0x11')]),'priority':_0x537d2c++},_0x5272c7,_0x5a0b98));}if(_0x208486[_0x2f518f][_0xa3e2('0x12')]){_0x4ceaf4[_0xa3e2('0xa')](_[_0xa3e2('0xb')]({'app':_0xa3e2('0x13'),'appdata':_0x208486[_0x2f518f][_0xa3e2('0x14')],'priority':_0x537d2c++},_0x5272c7,_0x5a0b98));}_0x4ceaf4[_0xa3e2('0xa')](_[_0xa3e2('0xb')]({'app':'ChanSpy','appdata':util['format'](_0xa3e2('0x15'),_0x24dc69[_0xa3e2('0x16')],_0x208486[_0x2f518f][_0xa3e2('0x17')]?_0x208486[_0x2f518f]['options'][_0xa3e2('0x18')](''):''),'priority':_0x537d2c++},_0x5272c7,_0x5a0b98));if(_0x208486[_0x2f518f][_0xa3e2('0xf')]){_0x4ceaf4[_0xa3e2('0xa')](_['merge']({'app':_0xa3e2('0x19'),'priority':_0x537d2c++},_0x5272c7,_0x5a0b98));}}return _0x4ceaf4;};var getUserApplications=function(_0x29d380,_0xd966c7){var _0x2fbe0b=[_0xa3e2('0x1a'),'WAV',_0xa3e2('0x1b')];var _0x1aaf07={'context':_0x29d380[_0xa3e2('0x1c')]||_0xa3e2('0x1d'),'exten':_0xd966c7,'type':'system','isApp':![],'UserId':_0x29d380['id']};var _0x8485e7=[{'app':_0xa3e2('0xc'),'appdata':_0xa3e2('0x1e')}];if(_0x29d380[_0xa3e2('0x1f')]&&_[_0xa3e2('0x20')](_0x2fbe0b,_0x29d380[_0xa3e2('0x1f')])){_0x8485e7[_0xa3e2('0xa')]({'app':_0xa3e2('0xc'),'appdata':_0xa3e2('0x21')});_0x8485e7[_0xa3e2('0xa')]({'app':'Set','appdata':util[_0xa3e2('0x8')](_0xa3e2('0x22'),_0x29d380[_0xa3e2('0x1f')])});_0x8485e7[_0xa3e2('0xa')]({'app':'Dial','appdata':util[_0xa3e2('0x8')](_0xa3e2('0x23'),_0x29d380[_0xa3e2('0x16')])});}else{_0x8485e7[_0xa3e2('0xa')]({'app':'Dial','appdata':util[_0xa3e2('0x8')](_0xa3e2('0x24'),_0x29d380[_0xa3e2('0x16')])});}_0x8485e7[_0xa3e2('0xa')]({'app':'Hangup'});for(var _0x3b1bfb=0x0;_0x3b1bfb<_0x8485e7[_0xa3e2('0x6')];_0x3b1bfb++){_0x8485e7[_0x3b1bfb][_0xa3e2('0x25')]=_0x3b1bfb+0x1;_0x8485e7[_0x3b1bfb]=_['defaults'](_0x8485e7[_0x3b1bfb],_0x1aaf07);}return _0x8485e7;};var getChanSpyPromise=function(_0x5768e2,_0x3e34e0){return new BPromise(function(_0x1a688b,_0xc4aab2){return _0x5768e2[_0xa3e2('0x26')][_0xa3e2('0x27')]()[_0xa3e2('0x28')](function(_0x5b98f4){if(_0x5b98f4){var _0x4fe696=getChanSpyApplications(_0x3e34e0,_0x3e34e0['internal'],_0x5b98f4);if(_0x3e34e0[_0xa3e2('0x29')]!=_0x3e34e0[_0xa3e2('0x16')]){_0x4fe696=_0x4fe696[_0xa3e2('0x2a')](getChanSpyApplications(_0x3e34e0,_0x3e34e0[_0xa3e2('0x16')],_0x5b98f4));}return _0x1a688b(_0x4fe696);}return _0x1a688b([]);})['catch'](function(_0x5c5fa2){_0xc4aab2(_0x5c5fa2);});});};module[_0xa3e2('0x2b')]=function(_0x56d6a9){var _0x4fe62b=_0x56d6a9[_0xa3e2('0x2c')];return _0x56d6a9['define'](_0xa3e2('0x2d'),attributes,{'tableName':_0xa3e2('0x2e'),'charset':_0xa3e2('0x2f'),'collate':'utf8_bin','hooks':{'beforeCreate':function(_0x320e7d,_0x3a0e8c,_0x161b3b){var _0x542ea6=typeof _0x320e7d['userProfileId']===_0xa3e2('0x30')?BPromise[_0xa3e2('0x31')](null):_0x4fe62b[_0xa3e2('0x32')][_0xa3e2('0x33')]({'where':{'id':_0x320e7d['userProfileId']}});_0x542ea6['then'](function(_0x457935){if(_0x457935){_0x320e7d['privacyEnabled']=_0x457935['privacyEnabled'];}})[_0xa3e2('0x28')](function(){_0x320e7d[_0xa3e2('0x34')]();_0x320e7d[_0xa3e2('0x35')](_0x161b3b);})[_0xa3e2('0x36')](function(_0x33c46f){_0x161b3b(_0x33c46f);});},'beforeUpdate':function(_0x10e5af,_0x1943b7,_0x18bacb){Promise['resolve']()['then'](function(){if(_0x10e5af[_0xa3e2('0x37')](_0xa3e2('0x38'))===![])return;return _0x4fe62b['UserProfile'][_0xa3e2('0x33')]({'where':{'id':_0x10e5af[_0xa3e2('0x38')]}})[_0xa3e2('0x28')](function(_0x57e719){if(_0x57e719)_0x10e5af['privacyEnabled']=_0x57e719['privacyEnabled'];return;});})['then'](function(){if(_0x10e5af[_0xa3e2('0x37')](_0xa3e2('0x14'))){_0x10e5af['updateMd5Password']();return _0x10e5af[_0xa3e2('0x35')](_0x18bacb);}_0x18bacb();})[_0xa3e2('0x36')](function(_0xc7046b){_0x18bacb(_0xc7046b);});},'afterCreate':function(_0x4b17c7,_0x568518,_0x375366){var _0x21d7a1=getUserApplications(_0x4b17c7,_0x4b17c7[_0xa3e2('0x29')]);if(_0x4b17c7[_0xa3e2('0x29')]!=_0x4b17c7[_0xa3e2('0x16')]){_0x21d7a1=_0x21d7a1[_0xa3e2('0x2a')](getUserApplications(_0x4b17c7,_0x4b17c7[_0xa3e2('0x16')]));}return Promise[_0xa3e2('0x31')]()[_0xa3e2('0x28')](function(){if(!_0x4b17c7[_0xa3e2('0x39')]){return _0x4b17c7[_0xa3e2('0x3a')]({'clientSideLoggingLevel':_0xa3e2('0x3b'),'clientSideLoggingEnabled':![]});}})[_0xa3e2('0x28')](function(){return _0x4fe62b[_0xa3e2('0x3c')]['bulkCreate'](_0x21d7a1);})['then'](function(){if(_0x4b17c7[_0xa3e2('0xe')]){return getChanSpyPromise(_0x4fe62b,_0x4b17c7);}})['then'](function(_0x2525da){if(_0x2525da&&_0x2525da[_0xa3e2('0x6')]){return _0x4fe62b['VoiceExtension'][_0xa3e2('0x3d')](_0x2525da);}})['then'](function(){_0x375366();})[_0xa3e2('0x36')](function(_0x42d7f2){_0x375366(_0x42d7f2);});},'afterUpdate':function(_0x18562b,_0x583db8,_0x251b24){return BPromise[_0xa3e2('0x31')]()['then'](function(){if(_0x18562b['changed'](_0xa3e2('0xe'))||_0x18562b['changed'](_0xa3e2('0x1c'))){return _0x4fe62b[_0xa3e2('0x3c')]['destroy']({'where':{'UserId':_0x18562b['id'],'type':'system','ChanSpyId':{'$ne':null}}})[_0xa3e2('0x28')](function(){if(_0x18562b[_0xa3e2('0xe')]){return getChanSpyPromise(_0x4fe62b,_0x18562b)['then'](function(_0x59d0fc){if(_0x59d0fc&&_0x59d0fc['length']){return _0x4fe62b[_0xa3e2('0x3c')]['bulkCreate'](_0x59d0fc);}});}});}})[_0xa3e2('0x28')](function(){if(_0x18562b[_0xa3e2('0x37')]('extensionMonitor')||_0x18562b[_0xa3e2('0x37')](_0xa3e2('0x1c'))){return _0x4fe62b['VoiceExtension']['destroy']({'where':{'UserId':_0x18562b['id'],'type':_0xa3e2('0x7'),'ChanSpyId':null}})[_0xa3e2('0x28')](function(){var _0x445220=getUserApplications(_0x18562b,_0x18562b[_0xa3e2('0x29')]);if(_0x18562b['internal']!=_0x18562b[_0xa3e2('0x16')]){_0x445220=_0x445220[_0xa3e2('0x2a')](getUserApplications(_0x18562b,_0x18562b[_0xa3e2('0x16')]));}return _0x4fe62b['VoiceExtension'][_0xa3e2('0x3d')](_0x445220);});}})['then'](function(){_0x251b24();})[_0xa3e2('0x36')](function(_0x3e0241){_0x251b24(_0x3e0241);});},'afterDestroy':function(_0x28b8e4){return _0x4fe62b['VoiceExtension'][_0xa3e2('0x3e')]({'where':{'UserId':_0x28b8e4['id'],'type':_0xa3e2('0x7')}});}},'instanceMethods':{'authenticate':function(_0x11226f,_0x5ce67b){if(!_0x5ce67b){return this[_0xa3e2('0x14')]===this[_0xa3e2('0x3f')](_0x11226f);}var _0x4946ee=this;this[_0xa3e2('0x3f')](_0x11226f,function(_0x20a6ad,_0x4d5998){if(_0x20a6ad){_0x5ce67b(_0x20a6ad);}if(_0x4946ee[_0xa3e2('0x14')]===_0x4d5998){_0x5ce67b(null,!![]);}else{_0x5ce67b(null,![]);}});},'makeSalt':function(_0x6a579b,_0x14083b){var _0x5adc1b=0x10;if(typeof arguments[0x0]===_0xa3e2('0x40')){_0x14083b=arguments[0x0];_0x6a579b=_0x5adc1b;}else if(typeof arguments[0x1]===_0xa3e2('0x40')){_0x14083b=arguments[0x1];}else{throw new Error(_0xa3e2('0x41'));}if(!_0x6a579b){_0x6a579b=_0x5adc1b;}return crypto[_0xa3e2('0x42')](_0x6a579b,function(_0x52c3ea,_0x5a8aea){if(_0x52c3ea){_0x14083b(_0x52c3ea);}return _0x14083b(null,_0x5a8aea['toString']('base64'));});},'encryptPassword':function(_0x16b621,_0x28a569){if(!_0x16b621||!this['salt']){return _0x28a569?_0x28a569(null):null;}var _0x5b534e=0x2710;var _0x2d0642=0x40;var _0x2be13f=new Buffer(this[_0xa3e2('0x43')],_0xa3e2('0x44'));if(!_0x28a569){return crypto[_0xa3e2('0x45')](_0x16b621,_0x2be13f,_0x5b534e,_0x2d0642,_0xa3e2('0x46'))[_0xa3e2('0x47')]('base64');}return crypto[_0xa3e2('0x48')](_0x16b621,_0x2be13f,_0x5b534e,_0x2d0642,'sha1',function(_0x17cc6f,_0x21d1b5){if(_0x17cc6f){_0x28a569(_0x17cc6f);}return _0x28a569(null,_0x21d1b5[_0xa3e2('0x47')](_0xa3e2('0x44')));});},'updatePassword':function(_0x1f388f){if(!this[_0xa3e2('0x14')]){return _0x1f388f(null);}if(!validatePresenceOf(this[_0xa3e2('0x14')])&&authTypes[_0xa3e2('0x49')](this[_0xa3e2('0x4a')])===-0x1){_0x1f388f(new Error('Invalid\x20password'));}var _0x198f38=this;this[_0xa3e2('0x4b')](function(_0xe75a75,_0x1f64cd){if(_0xe75a75){return _0x1f388f(_0xe75a75);}_0x198f38[_0xa3e2('0x43')]=_0x1f64cd;_0x198f38[_0xa3e2('0x3f')](_0x198f38[_0xa3e2('0x14')],function(_0x42ddcd,_0x250bfa){if(_0x42ddcd){_0x1f388f(_0x42ddcd);}_0x198f38['password']=_0x250bfa;_0x1f388f(null);});});},'updateMd5Password':function(){this['md5secret']=md5(this[_0xa3e2('0x16')]+':asterisk:'+this[_0xa3e2('0x14')]);return this[_0xa3e2('0x4c')];}}});};
\ No newline at end of file
+var _0xf6ae=['CDR(type)=internal','includes','extensionMonitor','_XCALLY_MIXMONITOR_FORMAT=%s','SIP/%s,,tTxXU(xcally-mixmonitor-context)','Dial','Hangup','defaults','VoiceChanSpy','findAll','internal','concat','catch','exports','models','define','User','utf8_bin','userProfileId','find','then','privacyEnabled','updatePassword','resolve','changed','UserProfile','updateMd5Password','userSetting','VoiceExtension','bulkCreate','length','destroy','encryptPassword','function','randomBytes','toString','base64','salt','pbkdf2Sync','sha1','pbkdf2','indexOf','provider','Invalid\x20password','makeSalt','md5secret','bluebird','util','lodash','./user.attributes','google','context','from-sip','format','prefix','push','merge','CDR(type)=%s','chanspy','record','MixMonitor','recordingFormat','auth','password','ChanSpy','SIP/%s,%s','name','options','StopMixMonitor','wav','WAV','system','Set'];(function(_0x38ced4,_0x24263f){var _0x547c07=function(_0x279fc4){while(--_0x279fc4){_0x38ced4['push'](_0x38ced4['shift']());}};_0x547c07(++_0x24263f);}(_0xf6ae,0x152));var _0xef6a=function(_0x44ae1b,_0x3262f5){_0x44ae1b=_0x44ae1b-0x0;var _0x2407e7=_0xf6ae[_0x44ae1b];return _0x2407e7;};'use strict';var BPromise=require(_0xef6a('0x0'));var crypto=require('crypto');var util=require(_0xef6a('0x1'));var md5=require('md5');var _=require(_0xef6a('0x2'));var attributes=require(_0xef6a('0x3'));var authTypes=[_0xef6a('0x4')];var validatePresenceOf=function(_0x521dee){return _0x521dee&&_0x521dee['length'];};var getChanSpyApplications=function(_0x43e208,_0x301797,_0x23c34b){var _0x5d3204={'context':_0x43e208[_0xef6a('0x5')]||_0xef6a('0x6'),'type':'system','isApp':![],'UserId':_0x43e208['id']};var _0x522129=[];for(var _0x1fd2d8=0x0,_0x588a0c=0x1;_0x1fd2d8<_0x23c34b['length'];_0x1fd2d8++,_0x588a0c=0x1){var _0x158aa6={'exten':util[_0xef6a('0x7')]('%s%s',_0x23c34b[_0x1fd2d8][_0xef6a('0x8')],_0x301797),'ChanSpyId':_0x23c34b[_0x1fd2d8]['id']};_0x522129[_0xef6a('0x9')](_[_0xef6a('0xa')]({'app':'Set','appdata':util['format'](_0xef6a('0xb'),_0xef6a('0xc')),'priority':_0x588a0c++},_0x5d3204,_0x158aa6));if(_0x23c34b[_0x1fd2d8][_0xef6a('0xd')]){_0x522129[_0xef6a('0x9')](_[_0xef6a('0xa')]({'app':_0xef6a('0xe'),'appdata':util[_0xef6a('0x7')]('${UNIQUEID}.%s,a',_0x23c34b[_0x1fd2d8][_0xef6a('0xf')]),'priority':_0x588a0c++},_0x5d3204,_0x158aa6));}if(_0x23c34b[_0x1fd2d8][_0xef6a('0x10')]){_0x522129['push'](_[_0xef6a('0xa')]({'app':'Authenticate','appdata':_0x23c34b[_0x1fd2d8][_0xef6a('0x11')],'priority':_0x588a0c++},_0x5d3204,_0x158aa6));}_0x522129[_0xef6a('0x9')](_[_0xef6a('0xa')]({'app':_0xef6a('0x12'),'appdata':util['format'](_0xef6a('0x13'),_0x43e208[_0xef6a('0x14')],_0x23c34b[_0x1fd2d8][_0xef6a('0x15')]?_0x23c34b[_0x1fd2d8][_0xef6a('0x15')]['join'](''):''),'priority':_0x588a0c++},_0x5d3204,_0x158aa6));if(_0x23c34b[_0x1fd2d8][_0xef6a('0xd')]){_0x522129['push'](_['merge']({'app':_0xef6a('0x16'),'priority':_0x588a0c++},_0x5d3204,_0x158aa6));}}return _0x522129;};var getUserApplications=function(_0x5da07b,_0x12726e){var _0xea0695=[_0xef6a('0x17'),_0xef6a('0x18'),'gsm'];var _0x2fa2cc={'context':_0x5da07b[_0xef6a('0x5')]||_0xef6a('0x6'),'exten':_0x12726e,'type':_0xef6a('0x19'),'isApp':![],'UserId':_0x5da07b['id']};var _0x4d0165=[{'app':_0xef6a('0x1a'),'appdata':_0xef6a('0x1b')}];if(_0x5da07b['extensionMonitor']&&_[_0xef6a('0x1c')](_0xea0695,_0x5da07b[_0xef6a('0x1d')])){_0x4d0165['push']({'app':'Set','appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}'});_0x4d0165[_0xef6a('0x9')]({'app':_0xef6a('0x1a'),'appdata':util[_0xef6a('0x7')](_0xef6a('0x1e'),_0x5da07b[_0xef6a('0x1d')])});_0x4d0165[_0xef6a('0x9')]({'app':'Dial','appdata':util['format'](_0xef6a('0x1f'),_0x5da07b[_0xef6a('0x14')])});}else{_0x4d0165['push']({'app':_0xef6a('0x20'),'appdata':util[_0xef6a('0x7')]('SIP/%s,,tTxX',_0x5da07b[_0xef6a('0x14')])});}_0x4d0165['push']({'app':_0xef6a('0x21')});for(var _0x20a371=0x0;_0x20a371<_0x4d0165['length'];_0x20a371++){_0x4d0165[_0x20a371]['priority']=_0x20a371+0x1;_0x4d0165[_0x20a371]=_[_0xef6a('0x22')](_0x4d0165[_0x20a371],_0x2fa2cc);}return _0x4d0165;};var getChanSpyPromise=function(_0x465c41,_0x3a930e){return new BPromise(function(_0x35c4e9,_0x110a47){return _0x465c41[_0xef6a('0x23')][_0xef6a('0x24')]()['then'](function(_0x1f1151){if(_0x1f1151){var _0x1412e4=getChanSpyApplications(_0x3a930e,_0x3a930e[_0xef6a('0x25')],_0x1f1151);if(_0x3a930e[_0xef6a('0x25')]!=_0x3a930e['name']){_0x1412e4=_0x1412e4[_0xef6a('0x26')](getChanSpyApplications(_0x3a930e,_0x3a930e[_0xef6a('0x14')],_0x1f1151));}return _0x35c4e9(_0x1412e4);}return _0x35c4e9([]);})[_0xef6a('0x27')](function(_0x272538){_0x110a47(_0x272538);});});};module[_0xef6a('0x28')]=function(_0x58517b){var _0x4927cf=_0x58517b[_0xef6a('0x29')];return _0x58517b[_0xef6a('0x2a')](_0xef6a('0x2b'),attributes,{'tableName':'users','charset':'utf8','collate':_0xef6a('0x2c'),'hooks':{'beforeCreate':function(_0x36390d,_0x1e3e32,_0x94ea09){var _0x5cbfd6=typeof _0x36390d[_0xef6a('0x2d')]==='undefined'?BPromise['resolve'](null):_0x4927cf['UserProfile'][_0xef6a('0x2e')]({'where':{'id':_0x36390d[_0xef6a('0x2d')]}});_0x5cbfd6[_0xef6a('0x2f')](function(_0x1c1fc1){if(_0x1c1fc1){_0x36390d[_0xef6a('0x30')]=_0x1c1fc1[_0xef6a('0x30')];}})[_0xef6a('0x2f')](function(){_0x36390d['updateMd5Password']();_0x36390d[_0xef6a('0x31')](_0x94ea09);})[_0xef6a('0x27')](function(_0x2ab37c){_0x94ea09(_0x2ab37c);});},'beforeUpdate':function(_0x5eeb41,_0x1ab40a,_0x1f2430){Promise[_0xef6a('0x32')]()[_0xef6a('0x2f')](function(){if(_0x5eeb41[_0xef6a('0x33')](_0xef6a('0x2d'))===![])return;return _0x4927cf[_0xef6a('0x34')][_0xef6a('0x2e')]({'where':{'id':_0x5eeb41[_0xef6a('0x2d')]}})[_0xef6a('0x2f')](function(_0xc6cca7){if(_0xc6cca7)_0x5eeb41['privacyEnabled']=_0xc6cca7[_0xef6a('0x30')];return;});})[_0xef6a('0x2f')](function(){if(_0x5eeb41['changed'](_0xef6a('0x11'))){_0x5eeb41[_0xef6a('0x35')]();return _0x5eeb41[_0xef6a('0x31')](_0x1f2430);}_0x1f2430();})[_0xef6a('0x27')](function(_0x12524c){_0x1f2430(_0x12524c);});},'afterCreate':function(_0x115e89,_0x42a774,_0x2ebe66){var _0x487406=getUserApplications(_0x115e89,_0x115e89[_0xef6a('0x25')]);if(_0x115e89[_0xef6a('0x25')]!=_0x115e89['name']){_0x487406=_0x487406['concat'](getUserApplications(_0x115e89,_0x115e89['name']));}return Promise[_0xef6a('0x32')]()[_0xef6a('0x2f')](function(){if(!_0x115e89[_0xef6a('0x36')]){return _0x115e89['createUserSetting']({'clientSideLoggingLevel':'error','clientSideLoggingEnabled':![]});}})['then'](function(){return _0x4927cf['VoiceExtension']['bulkCreate'](_0x487406);})[_0xef6a('0x2f')](function(){if(_0x115e89[_0xef6a('0xc')]){return getChanSpyPromise(_0x4927cf,_0x115e89);}})['then'](function(_0x329088){if(_0x329088&&_0x329088['length']){return _0x4927cf[_0xef6a('0x37')][_0xef6a('0x38')](_0x329088);}})[_0xef6a('0x2f')](function(){_0x2ebe66();})[_0xef6a('0x27')](function(_0x4fa5c5){_0x2ebe66(_0x4fa5c5);});},'afterUpdate':function(_0x5c113d,_0x45654f,_0x356e2e){return BPromise[_0xef6a('0x32')]()['then'](function(){if(_0x5c113d[_0xef6a('0x33')](_0xef6a('0xc'))||_0x5c113d[_0xef6a('0x33')](_0xef6a('0x5'))){return _0x4927cf[_0xef6a('0x37')]['destroy']({'where':{'UserId':_0x5c113d['id'],'type':_0xef6a('0x19'),'ChanSpyId':{'$ne':null}}})[_0xef6a('0x2f')](function(){if(_0x5c113d[_0xef6a('0xc')]){return getChanSpyPromise(_0x4927cf,_0x5c113d)[_0xef6a('0x2f')](function(_0x17c074){if(_0x17c074&&_0x17c074[_0xef6a('0x39')]){return _0x4927cf[_0xef6a('0x37')][_0xef6a('0x38')](_0x17c074);}});}});}})[_0xef6a('0x2f')](function(){if(_0x5c113d[_0xef6a('0x33')](_0xef6a('0x1d'))||_0x5c113d['changed']('context')){return _0x4927cf[_0xef6a('0x37')][_0xef6a('0x3a')]({'where':{'UserId':_0x5c113d['id'],'type':'system','ChanSpyId':null}})['then'](function(){var _0x47a090=getUserApplications(_0x5c113d,_0x5c113d[_0xef6a('0x25')]);if(_0x5c113d[_0xef6a('0x25')]!=_0x5c113d[_0xef6a('0x14')]){_0x47a090=_0x47a090['concat'](getUserApplications(_0x5c113d,_0x5c113d[_0xef6a('0x14')]));}return _0x4927cf[_0xef6a('0x37')]['bulkCreate'](_0x47a090);});}})[_0xef6a('0x2f')](function(){_0x356e2e();})[_0xef6a('0x27')](function(_0x242e9c){_0x356e2e(_0x242e9c);});},'afterDestroy':function(_0x2953e2){return _0x4927cf['VoiceExtension'][_0xef6a('0x3a')]({'where':{'UserId':_0x2953e2['id'],'type':_0xef6a('0x19')}});}},'instanceMethods':{'authenticate':function(_0x249a15,_0x5c40c4){if(!_0x5c40c4){return this[_0xef6a('0x11')]===this[_0xef6a('0x3b')](_0x249a15);}var _0x5d3abb=this;this[_0xef6a('0x3b')](_0x249a15,function(_0x349959,_0x4f1551){if(_0x349959){_0x5c40c4(_0x349959);}if(_0x5d3abb['password']===_0x4f1551){_0x5c40c4(null,!![]);}else{_0x5c40c4(null,![]);}});},'makeSalt':function(_0x4fd735,_0x4f5221){var _0x5bf7a4=0x10;if(typeof arguments[0x0]===_0xef6a('0x3c')){_0x4f5221=arguments[0x0];_0x4fd735=_0x5bf7a4;}else if(typeof arguments[0x1]==='function'){_0x4f5221=arguments[0x1];}else{throw new Error('Missing\x20Callback');}if(!_0x4fd735){_0x4fd735=_0x5bf7a4;}return crypto[_0xef6a('0x3d')](_0x4fd735,function(_0x4dc790,_0x4966bb){if(_0x4dc790){_0x4f5221(_0x4dc790);}return _0x4f5221(null,_0x4966bb[_0xef6a('0x3e')](_0xef6a('0x3f')));});},'encryptPassword':function(_0x3112f8,_0x723c0c){if(!_0x3112f8||!this[_0xef6a('0x40')]){return _0x723c0c?_0x723c0c(null):null;}var _0x2ca730=0x2710;var _0x2d4e85=0x40;var _0x46ba63=new Buffer(this[_0xef6a('0x40')],_0xef6a('0x3f'));if(!_0x723c0c){return crypto[_0xef6a('0x41')](_0x3112f8,_0x46ba63,_0x2ca730,_0x2d4e85,_0xef6a('0x42'))[_0xef6a('0x3e')](_0xef6a('0x3f'));}return crypto[_0xef6a('0x43')](_0x3112f8,_0x46ba63,_0x2ca730,_0x2d4e85,_0xef6a('0x42'),function(_0x4c5042,_0x910b16){if(_0x4c5042){_0x723c0c(_0x4c5042);}return _0x723c0c(null,_0x910b16[_0xef6a('0x3e')](_0xef6a('0x3f')));});},'updatePassword':function(_0x1a208b){if(!this[_0xef6a('0x11')]){return _0x1a208b(null);}if(!validatePresenceOf(this[_0xef6a('0x11')])&&authTypes[_0xef6a('0x44')](this[_0xef6a('0x45')])===-0x1){_0x1a208b(new Error(_0xef6a('0x46')));}var _0x3db4e9=this;this[_0xef6a('0x47')](function(_0x441123,_0x33c996){if(_0x441123){return _0x1a208b(_0x441123);}_0x3db4e9[_0xef6a('0x40')]=_0x33c996;_0x3db4e9[_0xef6a('0x3b')](_0x3db4e9[_0xef6a('0x11')],function(_0x2fdb86,_0x431a46){if(_0x2fdb86){_0x1a208b(_0x2fdb86);}_0x3db4e9[_0xef6a('0x11')]=_0x431a46;_0x1a208b(null);});});},'updateMd5Password':function(){this[_0xef6a('0x48')]=md5(this['name']+':asterisk:'+this[_0xef6a('0x11')]);return this[_0xef6a('0x48')];}}});};
\ No newline at end of file
index 1652cc1..9b10a16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1257=['agent','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','LOGIN','merge','LOGININPAUSE','concat','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','redis','socket.io-emitter','./user.socket','register','request','then','info','User,\x20%s,\x20%s','debug','User,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','GetUser','User','findAll','options','raw','attributes','limit','map','include','model','catch','ShowUser','find','PauseUser','where','name','internal','interface','UserVoiceQueueRt','update','MemberReport','length','format','YYYY-MM-DD\x20HH:mm:ss','updateAttributes','push','isNil','PAUSE','body','type','DEFAULT\x20PAUSE','role','bulkCreate','UnpauseUser','findOne','channel','isValidChannel','voice','system','mail','chat','fax','sms','openchannel','whatsapp','set','%s%s','forEach','all','LogoutUser','destroy','LoginUser','loginInPause','count'];(function(_0x238c3c,_0x2c570b){var _0x283786=function(_0x37e93c){while(--_0x37e93c){_0x238c3c['push'](_0x238c3c['shift']());}};_0x283786(++_0x2c570b);}(_0x1257,0x66));var _0x7125=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0x1257[_0x5447fd];return _0x15b28a;};'use strict';var _=require(_0x7125('0x0'));var util=require(_0x7125('0x1'));var moment=require(_0x7125('0x2'));var BPromise=require(_0x7125('0x3'));var rs=require(_0x7125('0x4'));var fs=require('fs');var Redis=require(_0x7125('0x5'));var db=require(_0x7125('0x6'))['db'];var utils=require(_0x7125('0x7'));var logger=require('../../config/logger')(_0x7125('0x8'));var config=require('../../config/environment');var jayson=require(_0x7125('0x9'));var client=jayson[_0x7125('0xa')][_0x7125('0xb')]({'port':0x232a});config[_0x7125('0xc')]=_['defaults'](config[_0x7125('0xc')],{'host':'localhost','port':0x18eb});var socket=require(_0x7125('0xd'))(new Redis(config[_0x7125('0xc')]));require(_0x7125('0xe'))[_0x7125('0xf')](socket);function respondWithRpcPromise(_0x574788,_0x5d1bc5,_0x39fa65){return new BPromise(function(_0x5ca2ed,_0x224240){return client[_0x7125('0x10')](_0x574788,_0x39fa65)[_0x7125('0x11')](function(_0x30bdd0){logger[_0x7125('0x12')](_0x7125('0x13'),_0x5d1bc5,'request\x20sent');logger[_0x7125('0x14')](_0x7125('0x15'),_0x5d1bc5,_0x7125('0x16'),JSON[_0x7125('0x17')](_0x30bdd0));if(_0x30bdd0['error']){if(_0x30bdd0[_0x7125('0x18')][_0x7125('0x19')]===0x1f4){logger[_0x7125('0x18')](_0x7125('0x13'),_0x5d1bc5,_0x30bdd0[_0x7125('0x18')][_0x7125('0x1a')]);return _0x224240(_0x30bdd0[_0x7125('0x18')][_0x7125('0x1a')]);}logger[_0x7125('0x18')](_0x7125('0x13'),_0x5d1bc5,_0x30bdd0['error'][_0x7125('0x1a')]);return _0x5ca2ed(_0x30bdd0['error']['message']);}else{logger[_0x7125('0x12')]('User,\x20%s,\x20%s',_0x5d1bc5,_0x7125('0x16'));_0x5ca2ed(_0x30bdd0[_0x7125('0x1b')][_0x7125('0x1a')]);}})['catch'](function(_0x537a16){logger[_0x7125('0x18')](_0x7125('0x13'),_0x5d1bc5,_0x537a16);_0x224240(_0x537a16);});});}exports[_0x7125('0x1c')]=function(_0x366439){var _0xc1fae7=this;return new Promise(function(_0x51f273,_0x7236ba){return db[_0x7125('0x1d')][_0x7125('0x1e')]({'raw':_0x366439[_0x7125('0x1f')]?_0x366439[_0x7125('0x1f')][_0x7125('0x20')]===undefined?!![]:![]:!![],'where':_0x366439[_0x7125('0x1f')]?_0x366439[_0x7125('0x1f')]['where']||null:null,'attributes':_0x366439[_0x7125('0x1f')]?_0x366439[_0x7125('0x1f')][_0x7125('0x21')]||null:null,'limit':_0x366439[_0x7125('0x1f')]?_0x366439['options'][_0x7125('0x22')]||null:null,'include':_0x366439[_0x7125('0x1f')]?_0x366439[_0x7125('0x1f')]['include']?_[_0x7125('0x23')](_0x366439[_0x7125('0x1f')][_0x7125('0x24')],function(_0x27bde8){return{'model':db[_0x27bde8[_0x7125('0x25')]],'as':_0x27bde8['as'],'attributes':_0x27bde8['attributes'],'include':_0x27bde8[_0x7125('0x24')]?_['map'](_0x27bde8['include'],function(_0x5526cf){return{'model':db[_0x5526cf[_0x7125('0x25')]],'as':_0x5526cf['as'],'attributes':_0x5526cf[_0x7125('0x21')],'include':_0x5526cf[_0x7125('0x24')]?_[_0x7125('0x23')](_0x5526cf[_0x7125('0x24')],function(_0x95c575){return{'model':db[_0x95c575[_0x7125('0x25')]],'as':_0x95c575['as'],'attributes':_0x95c575[_0x7125('0x21')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x4b69a6){logger[_0x7125('0x12')](_0x7125('0x1c'),_0x366439);logger[_0x7125('0x14')](_0x7125('0x1c'),_0x366439,JSON[_0x7125('0x17')](_0x4b69a6));_0x51f273(_0x4b69a6);})[_0x7125('0x26')](function(_0x38c1a5){logger[_0x7125('0x18')]('GetUser',_0x38c1a5[_0x7125('0x1a')],_0x366439);_0x7236ba(_0xc1fae7['error'](0x1f4,_0x38c1a5[_0x7125('0x1a')]));});});};exports[_0x7125('0x27')]=function(_0x4fc6c3){var _0xc2b9f1=this;return new Promise(function(_0xa6f1c0,_0x33d984){return db[_0x7125('0x1d')][_0x7125('0x28')]({'raw':_0x4fc6c3[_0x7125('0x1f')]?_0x4fc6c3[_0x7125('0x1f')][_0x7125('0x20')]===undefined?!![]:![]:!![],'where':_0x4fc6c3['options']?_0x4fc6c3[_0x7125('0x1f')]['where']||null:null,'attributes':_0x4fc6c3['options']?_0x4fc6c3['options'][_0x7125('0x21')]||null:null,'include':_0x4fc6c3['options']?_0x4fc6c3[_0x7125('0x1f')][_0x7125('0x24')]?_[_0x7125('0x23')](_0x4fc6c3['options'][_0x7125('0x24')],function(_0x26f221){return{'model':db[_0x26f221[_0x7125('0x25')]],'as':_0x26f221['as'],'attributes':_0x26f221[_0x7125('0x21')],'include':_0x26f221[_0x7125('0x24')]?_[_0x7125('0x23')](_0x26f221[_0x7125('0x24')],function(_0x51306f){return{'model':db[_0x51306f[_0x7125('0x25')]],'as':_0x51306f['as'],'attributes':_0x51306f[_0x7125('0x21')],'include':_0x51306f['include']?_[_0x7125('0x23')](_0x51306f[_0x7125('0x24')],function(_0x191fa2){return{'model':db[_0x191fa2['model']],'as':_0x191fa2['as'],'attributes':_0x191fa2[_0x7125('0x21')]};}):[]};}):[]};}):[]:[]})[_0x7125('0x11')](function(_0x100d78){logger[_0x7125('0x12')](_0x7125('0x27'),_0x4fc6c3);logger['debug'](_0x7125('0x27'),_0x4fc6c3,JSON['stringify'](_0x100d78));_0xa6f1c0(_0x100d78);})[_0x7125('0x26')](function(_0x5d1abf){logger[_0x7125('0x18')](_0x7125('0x27'),_0x5d1abf[_0x7125('0x1a')],_0x4fc6c3);_0x33d984(_0xc2b9f1[_0x7125('0x18')](0x1f4,_0x5d1abf[_0x7125('0x1a')]));});});};exports[_0x7125('0x29')]=function(_0x4037b6){var _0x58414f=this;return new Promise(function(_0x4f7655,_0x47cd3d){var _0x598a18;return db[_0x7125('0x1d')][_0x7125('0x28')]({'where':_0x4037b6[_0x7125('0x1f')][_0x7125('0x2a')]||{},'attributes':['id',_0x7125('0x2b'),'role',_0x7125('0x2c'),_0x7125('0x2d')]})['then'](function(_0x239bc1){if(_0x239bc1){_0x598a18=_0x239bc1;return db[_0x7125('0x2e')][_0x7125('0x2f')]({'paused':0x1},{'where':{'UserId':_0x598a18['id']},'individualHooks':!![]});}})[_0x7125('0x11')](function(){if(_0x598a18){return db[_0x7125('0x30')][_0x7125('0x1e')]({'where':{'membername':_0x598a18[_0x7125('0x2b')],'type':'PAUSE','exitAt':null}});}})['then'](function(_0x1032f6){if(_0x598a18){if(_0x1032f6&&_0x1032f6[_0x7125('0x31')]){var _0x1aa374=moment()[_0x7125('0x32')](_0x7125('0x33'));for(var _0x2ebca9=0x0,_0x26ad3d=_0x1032f6[_0x7125('0x31')];_0x2ebca9<_0x26ad3d;_0x2ebca9++){_0x1032f6[_0x2ebca9][_0x7125('0x34')]({'exitAt':_0x1aa374});}}}})['then'](function(){if(_0x598a18){var _0x15a961=[];var _0x12e670=utils['getChannels']();_0x12e670['forEach'](function(_0x2efc88){_0x15a961[_0x7125('0x35')]({'channel':_0x2efc88,'membername':_0x598a18[_0x7125('0x2b')],'interface':_[_0x7125('0x36')](_0x598a18[_0x7125('0x2d')])?util[_0x7125('0x32')]('SIP/%s',_0x598a18['name']):_0x598a18[_0x7125('0x2d')],'type':_0x7125('0x37'),'enterAt':moment()[_0x7125('0x32')]('YYYY-MM-DD\x20HH:mm:ss'),'data1':_0x4037b6[_0x7125('0x38')][_0x7125('0x39')]||_0x7125('0x3a'),'role':_0x598a18[_0x7125('0x3b')],'internal':_0x598a18[_0x7125('0x2c')],'uniqueid':_0x4037b6[_0x7125('0x38')]['uniqueid']||null});});return db['MemberReport'][_0x7125('0x3c')](_0x15a961,{'individualHooks':!![]});}})['then'](function(){if(_0x598a18){return _0x598a18[_0x7125('0x2f')]({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x4037b6['body'][_0x7125('0x39')]||'DEFAULT\x20PAUSE','lastPauseAt':moment()[_0x7125('0x32')](_0x7125('0x33'))});}})['then'](function(_0x596f7b){_0x4f7655(_0x596f7b);})[_0x7125('0x26')](function(_0x4f03b7){_0x47cd3d(_0x58414f[_0x7125('0x18')](0x1f4,_0x4f03b7['message']));});});};exports[_0x7125('0x3d')]=function(_0x469f39){var _0x1d0a32=this;return new Promise(function(_0x11b9bd,_0x1769af){var _0x4ae552;return db[_0x7125('0x1d')][_0x7125('0x3e')]({'where':_0x469f39[_0x7125('0x1f')][_0x7125('0x2a')]||{},'attributes':['id',_0x7125('0x2b')]})[_0x7125('0x11')](function(_0x120d22){if(_0x120d22){_0x4ae552=_0x120d22;if(_0x469f39['body'][_0x7125('0x3f')]&&!utils[_0x7125('0x40')](_0x469f39[_0x7125('0x38')][_0x7125('0x3f')])){throw new Error('Unknown\x20channel');}switch(_0x469f39[_0x7125('0x38')]['channel']){case _0x7125('0x41'):return db[_0x7125('0x2e')][_0x7125('0x2f')]({'paused':0x0},{'where':{'UserId':_0x4ae552['id']}})[_0x7125('0x11')](function(){return db[_0x7125('0x30')][_0x7125('0x28')]({'where':{'channel':_0x469f39[_0x7125('0x38')]['channel'],'membername':_0x4ae552[_0x7125('0x2b')],'type':_0x7125('0x37'),'exitAt':null}});})[_0x7125('0x11')](function(_0x35a740){if(_0x35a740){return _0x35a740['update']({'exitAt':moment()['format'](_0x7125('0x33')),'data2':_0x7125('0x42')},{'individualHooks':!![]});}return null;})[_0x7125('0x11')](function(){return _0x4ae552['update']({'voicePause':![]});});case _0x7125('0x43'):case _0x7125('0x44'):case _0x7125('0x45'):case _0x7125('0x46'):case _0x7125('0x47'):case _0x7125('0x48'):return db[_0x7125('0x30')][_0x7125('0x28')]({'where':{'channel':_0x469f39[_0x7125('0x38')]['channel'],'membername':_0x4ae552[_0x7125('0x2b')],'type':_0x7125('0x37'),'exitAt':null}})[_0x7125('0x11')](function(_0x3b3310){return _0x3b3310[_0x7125('0x2f')]({'exitAt':moment()[_0x7125('0x32')](_0x7125('0x33')),'data2':_0x7125('0x42')},{'individualHooks':!![]});})['then'](function(){var _0x480b42={};_[_0x7125('0x49')](_0x480b42,util[_0x7125('0x32')](_0x7125('0x4a'),_0x469f39['body']['channel'],'Pause'),![]);return _0x4ae552[_0x7125('0x2f')](_0x480b42);});default:return db[_0x7125('0x2e')][_0x7125('0x2f')]({'paused':0x0},{'where':{'UserId':_0x4ae552['id']}})[_0x7125('0x11')](function(){return db['MemberReport']['findAll']({'where':{'membername':_0x4ae552[_0x7125('0x2b')],'type':_0x7125('0x37'),'exitAt':null}});})[_0x7125('0x11')](function(_0xa3cfad){var _0x3b95d7=[];_0xa3cfad[_0x7125('0x4b')](function(_0x3b3903){_0x3b95d7['push'](_0x3b3903['update']({'exitAt':moment()[_0x7125('0x32')]('YYYY-MM-DD\x20HH:mm:ss'),'data2':_0x7125('0x42')}));});return BPromise[_0x7125('0x4c')](_0x3b95d7);})[_0x7125('0x11')](function(){return _0x4ae552['update']({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})[_0x7125('0x11')](function(_0x8a8630){_0x11b9bd(_0x8a8630);})['catch'](function(_0xa0672c){_0x1769af(_0x1d0a32[_0x7125('0x18')](0x1f4,_0xa0672c['message']));});});};exports[_0x7125('0x4d')]=function(_0x3a13dd){var _0x59b286=this;return new Promise(function(_0x3fc0a6,_0x12cc78){var _0x33ad07;return db[_0x7125('0x1d')][_0x7125('0x3e')]({'where':_0x3a13dd[_0x7125('0x1f')][_0x7125('0x2a')]||{},'attributes':['id',_0x7125('0x2b')]})[_0x7125('0x11')](function(_0x100552){if(_0x100552){_0x33ad07=_0x100552;return db[_0x7125('0x2e')][_0x7125('0x4e')]({'where':{'membername':_0x33ad07[_0x7125('0x2b')]},'individualHooks':!![]});}})[_0x7125('0x11')](function(){if(_0x33ad07){return db[_0x7125('0x30')][_0x7125('0x1e')]({'where':{'membername':_0x33ad07[_0x7125('0x2b')],'exitAt':null}});}})[_0x7125('0x11')](function(_0x4439ba){if(_0x33ad07){if(_0x4439ba&&_0x4439ba[_0x7125('0x31')]){var _0x5d8808=[];_0x4439ba[_0x7125('0x4b')](function(_0x45d51e){_0x5d8808[_0x7125('0x35')](_0x45d51e[_0x7125('0x2f')]({'exitAt':moment()[_0x7125('0x32')]('YYYY-MM-DD\x20HH:mm:ss')}));});return BPromise['all'](_0x5d8808);}}})['then'](function(){if(_0x33ad07){return _0x33ad07[_0x7125('0x2f')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x7125('0x11')](function(_0x525e1c){_0x3fc0a6(_0x525e1c);})[_0x7125('0x26')](function(_0x250526){_0x12cc78(_0x59b286['error'](0x1f4,_0x250526[_0x7125('0x1a')]));});});};exports[_0x7125('0x4f')]=function(_0x23a93f){var _0x3ed22e=this;return new Promise(function(_0x342fe7,_0xe17f23){var _0x56d265;var _0x4777cd;var _0x2f3420;var _0x5e947d;return db[_0x7125('0x1d')]['findOne']({'where':_0x23a93f[_0x7125('0x1f')][_0x7125('0x2a')]||{},'attributes':['id','name',_0x7125('0x3b'),'mobile','phone',_0x7125('0x2c'),_0x7125('0x50'),_0x7125('0x2d')]})[_0x7125('0x11')](function(_0x4be6ac){if(_0x4be6ac){_0x56d265=_0x4be6ac;_0x5e947d=_0x23a93f[_0x7125('0x38')][_0x7125('0x2d')]?_0x23a93f[_0x7125('0x38')][_0x7125('0x2d')]:util[_0x7125('0x32')]('SIP/%s',_0x56d265['name']);return db[_0x7125('0x1d')][_0x7125('0x51')]({'where':{'role':_0x7125('0x52'),'online':!![],'id':{'$ne':_0x56d265['id']}}});}})[_0x7125('0x11')](function(_0x48c364){if(_0x48c364){_0x2f3420=_0x48c364;return require(_0x7125('0x53'))[_0x7125('0x54')]();}})['then'](function(_0x20fa20){if(_0x20fa20&&_0x20fa20['agents']&&_0x2f3420>=_0x20fa20[_0x7125('0x55')]){throw new Error(_0x7125('0x56'));}})[_0x7125('0x11')](function(){if(_0x56d265){return db[_0x7125('0x2e')][_0x7125('0x4e')]({'where':{'membername':_0x56d265[_0x7125('0x2b')]},'individualHooks':!![]});}})[_0x7125('0x11')](function(){if(_0x56d265){return _0x56d265[_0x7125('0x57')]({'raw':!![]});}})['then'](function(_0x49d6b2){if(_0x56d265){if(_0x49d6b2){var _0x4eadf0=[];_0x4777cd=_0x49d6b2;if(_0x4777cd[_0x7125('0x31')]){for(var _0x4a7b88=0x0;_0x4a7b88<_0x4777cd[_0x7125('0x31')];_0x4a7b88++){_0x4eadf0[_0x7125('0x35')](db[_0x7125('0x2e')]['upsert']({'membername':_0x56d265[_0x7125('0x2b')],'UserId':_0x56d265['id'],'queue_name':_0x4777cd[_0x4a7b88]['name'],'VoiceQueueId':_0x4777cd[_0x4a7b88]['id'],'interface':_0x5e947d,'paused':_0x56d265[_0x7125('0x50')]||![],'penalty':_0x4777cd[_0x4a7b88]['UserVoiceQueue.penalty']||0x0}));}return BPromise['all'](_0x4eadf0);}}}})[_0x7125('0x11')](function(){if(_0x56d265){return db[_0x7125('0x30')][_0x7125('0x1e')]({'where':{'membername':_0x56d265[_0x7125('0x2b')],'exitAt':null}});}})[_0x7125('0x11')](function(_0x2a0ced){if(_0x56d265){if(_0x2a0ced&&_0x2a0ced[_0x7125('0x31')]){var _0x3e6d5f=[];_0x2a0ced[_0x7125('0x4b')](function(_0x256419){_0x3e6d5f[_0x7125('0x35')](_0x256419[_0x7125('0x2f')]({'exitAt':moment()[_0x7125('0x32')](_0x7125('0x33'))}));});return BPromise[_0x7125('0x4c')](_0x3e6d5f);}}})[_0x7125('0x11')](function(_0x50301b){if(_0x56d265){var _0x12874f=[];var _0x51e218=[];var _0x3bc85c=utils['getChannels']();var _0x2808ea={'membername':_0x56d265['name'],'interface':_0x5e947d,'enterAt':moment()[_0x7125('0x32')]('YYYY-MM-DD\x20HH:mm:ss'),'role':_0x56d265[_0x7125('0x3b')],'internal':_0x56d265[_0x7125('0x2c')]};_0x3bc85c['forEach'](function(_0x100bd2){_0x12874f[_0x7125('0x35')](_['merge']({'channel':_0x100bd2,'type':_0x7125('0x58'),'data1':'callysquare','data2':_0x5e947d},_0x2808ea));if(_0x56d265['loginInPause']){_0x51e218[_0x7125('0x35')](_[_0x7125('0x59')]({'channel':_0x100bd2,'type':_0x7125('0x37'),'data1':_0x7125('0x5a')},_0x2808ea));}});return db['MemberReport'][_0x7125('0x3c')](_0x12874f[_0x7125('0x5b')](_0x51e218),{'individualHooks':!![]});}})[_0x7125('0x11')](function(){if(_0x56d265){return _0x56d265['update']({'online':!![],'lastLoginAt':moment()[_0x7125('0x32')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x56d265['loginInPause']||![],'mailPause':_0x56d265[_0x7125('0x50')]||![],'chatPause':_0x56d265[_0x7125('0x50')]||![],'faxPause':_0x56d265[_0x7125('0x50')]||![],'smsPause':_0x56d265[_0x7125('0x50')]||![],'openchannelPause':_0x56d265['loginInPause']||![],'pauseType':_0x56d265[_0x7125('0x50')]?_0x7125('0x5a'):null,'lastPauseAt':moment()[_0x7125('0x32')](_0x7125('0x33')),'interface':_0x5e947d});}})[_0x7125('0x11')](function(_0x34efa0){_0x342fe7(_0x34efa0);})[_0x7125('0x26')](function(_0x2e6285){_0xe17f23(_0x3ed22e[_0x7125('0x18')](0x1f4,_0x2e6285[_0x7125('0x1a')]));});});};
\ No newline at end of file
+var _0xdd80=['http','redis','defaults','localhost','socket.io-emitter','register','request','then','info','User,\x20%s,\x20%s','request\x20sent','User,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','GetUser','User','findAll','options','raw','where','attributes','limit','include','map','model','debug','ShowUser','find','PauseUser','name','role','internal','UserVoiceQueueRt','MemberReport','PAUSE','length','format','updateAttributes','forEach','isNil','interface','SIP/%s','YYYY-MM-DD\x20HH:mm:ss','body','type','DEFAULT\x20PAUSE','uniqueid','findOne','channel','isValidChannel','Unknown\x20channel','voice','update','system','chat','fax','sms','openchannel','whatsapp','%s%s','all','LogoutUser','destroy','push','LoginUser','mobile','phone','loginInPause','count','../../config/license/util','getLicense','agents','Maximum\x20login\x20has\x20been\x20reached','getVoiceQueues','upsert','getChannels','merge','LOGIN','callysquare','bulkCreate','concat','LOGININPAUSE','randomstring','ioredis','../../config/utils','../../config/environment','client'];(function(_0x3f3f75,_0x5e215f){var _0x322635=function(_0x1ff524){while(--_0x1ff524){_0x3f3f75['push'](_0x3f3f75['shift']());}};_0x322635(++_0x5e215f);}(_0xdd80,0x163));var _0x0dd8=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xdd80[_0x432682];return _0x463d05;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x0dd8('0x0'));var fs=require('fs');var Redis=require(_0x0dd8('0x1'));var db=require('../../mysqldb')['db'];var utils=require(_0x0dd8('0x2'));var logger=require('../../config/logger')('rpc');var config=require(_0x0dd8('0x3'));var jayson=require('jayson/promise');var client=jayson[_0x0dd8('0x4')][_0x0dd8('0x5')]({'port':0x232a});config[_0x0dd8('0x6')]=_[_0x0dd8('0x7')](config['redis'],{'host':_0x0dd8('0x8'),'port':0x18eb});var socket=require(_0x0dd8('0x9'))(new Redis(config[_0x0dd8('0x6')]));require('./user.socket')[_0x0dd8('0xa')](socket);function respondWithRpcPromise(_0x275ece,_0x29c828,_0x506e26){return new BPromise(function(_0x3988e0,_0x16421d){return client[_0x0dd8('0xb')](_0x275ece,_0x506e26)[_0x0dd8('0xc')](function(_0x22be78){logger[_0x0dd8('0xd')](_0x0dd8('0xe'),_0x29c828,_0x0dd8('0xf'));logger['debug'](_0x0dd8('0x10'),_0x29c828,_0x0dd8('0xf'),JSON[_0x0dd8('0x11')](_0x22be78));if(_0x22be78[_0x0dd8('0x12')]){if(_0x22be78[_0x0dd8('0x12')]['code']===0x1f4){logger[_0x0dd8('0x12')]('User,\x20%s,\x20%s',_0x29c828,_0x22be78['error'][_0x0dd8('0x13')]);return _0x16421d(_0x22be78[_0x0dd8('0x12')][_0x0dd8('0x13')]);}logger[_0x0dd8('0x12')]('User,\x20%s,\x20%s',_0x29c828,_0x22be78['error']['message']);return _0x3988e0(_0x22be78[_0x0dd8('0x12')][_0x0dd8('0x13')]);}else{logger['info'](_0x0dd8('0xe'),_0x29c828,_0x0dd8('0xf'));_0x3988e0(_0x22be78[_0x0dd8('0x14')][_0x0dd8('0x13')]);}})[_0x0dd8('0x15')](function(_0x458183){logger[_0x0dd8('0x12')](_0x0dd8('0xe'),_0x29c828,_0x458183);_0x16421d(_0x458183);});});}exports[_0x0dd8('0x16')]=function(_0x88e365){var _0x76d773=this;return new Promise(function(_0x19edbf,_0x362c87){return db[_0x0dd8('0x17')][_0x0dd8('0x18')]({'raw':_0x88e365[_0x0dd8('0x19')]?_0x88e365[_0x0dd8('0x19')][_0x0dd8('0x1a')]===undefined?!![]:![]:!![],'where':_0x88e365[_0x0dd8('0x19')]?_0x88e365[_0x0dd8('0x19')][_0x0dd8('0x1b')]||null:null,'attributes':_0x88e365[_0x0dd8('0x19')]?_0x88e365['options'][_0x0dd8('0x1c')]||null:null,'limit':_0x88e365[_0x0dd8('0x19')]?_0x88e365['options'][_0x0dd8('0x1d')]||null:null,'include':_0x88e365[_0x0dd8('0x19')]?_0x88e365[_0x0dd8('0x19')][_0x0dd8('0x1e')]?_[_0x0dd8('0x1f')](_0x88e365[_0x0dd8('0x19')][_0x0dd8('0x1e')],function(_0x3d7b1c){return{'model':db[_0x3d7b1c[_0x0dd8('0x20')]],'as':_0x3d7b1c['as'],'attributes':_0x3d7b1c[_0x0dd8('0x1c')],'include':_0x3d7b1c[_0x0dd8('0x1e')]?_[_0x0dd8('0x1f')](_0x3d7b1c[_0x0dd8('0x1e')],function(_0x4dcd3f){return{'model':db[_0x4dcd3f[_0x0dd8('0x20')]],'as':_0x4dcd3f['as'],'attributes':_0x4dcd3f['attributes'],'include':_0x4dcd3f[_0x0dd8('0x1e')]?_[_0x0dd8('0x1f')](_0x4dcd3f['include'],function(_0x4ef866){return{'model':db[_0x4ef866[_0x0dd8('0x20')]],'as':_0x4ef866['as'],'attributes':_0x4ef866['attributes']};}):[]};}):[]};}):[]:[]})[_0x0dd8('0xc')](function(_0x1bb8c3){logger[_0x0dd8('0xd')](_0x0dd8('0x16'),_0x88e365);logger[_0x0dd8('0x21')](_0x0dd8('0x16'),_0x88e365,JSON[_0x0dd8('0x11')](_0x1bb8c3));_0x19edbf(_0x1bb8c3);})[_0x0dd8('0x15')](function(_0x39809d){logger['error'](_0x0dd8('0x16'),_0x39809d[_0x0dd8('0x13')],_0x88e365);_0x362c87(_0x76d773['error'](0x1f4,_0x39809d[_0x0dd8('0x13')]));});});};exports[_0x0dd8('0x22')]=function(_0x584f48){var _0x4e553f=this;return new Promise(function(_0x2d0ac7,_0x506c0a){return db[_0x0dd8('0x17')][_0x0dd8('0x23')]({'raw':_0x584f48[_0x0dd8('0x19')]?_0x584f48[_0x0dd8('0x19')][_0x0dd8('0x1a')]===undefined?!![]:![]:!![],'where':_0x584f48[_0x0dd8('0x19')]?_0x584f48['options'][_0x0dd8('0x1b')]||null:null,'attributes':_0x584f48[_0x0dd8('0x19')]?_0x584f48[_0x0dd8('0x19')][_0x0dd8('0x1c')]||null:null,'include':_0x584f48[_0x0dd8('0x19')]?_0x584f48[_0x0dd8('0x19')][_0x0dd8('0x1e')]?_[_0x0dd8('0x1f')](_0x584f48[_0x0dd8('0x19')][_0x0dd8('0x1e')],function(_0x548ed4){return{'model':db[_0x548ed4[_0x0dd8('0x20')]],'as':_0x548ed4['as'],'attributes':_0x548ed4[_0x0dd8('0x1c')],'include':_0x548ed4[_0x0dd8('0x1e')]?_['map'](_0x548ed4[_0x0dd8('0x1e')],function(_0x307239){return{'model':db[_0x307239[_0x0dd8('0x20')]],'as':_0x307239['as'],'attributes':_0x307239[_0x0dd8('0x1c')],'include':_0x307239[_0x0dd8('0x1e')]?_[_0x0dd8('0x1f')](_0x307239[_0x0dd8('0x1e')],function(_0x3cc0b6){return{'model':db[_0x3cc0b6[_0x0dd8('0x20')]],'as':_0x3cc0b6['as'],'attributes':_0x3cc0b6['attributes']};}):[]};}):[]};}):[]:[]})[_0x0dd8('0xc')](function(_0x3cc8e2){logger['info'](_0x0dd8('0x22'),_0x584f48);logger[_0x0dd8('0x21')]('ShowUser',_0x584f48,JSON['stringify'](_0x3cc8e2));_0x2d0ac7(_0x3cc8e2);})[_0x0dd8('0x15')](function(_0x35cb1f){logger[_0x0dd8('0x12')](_0x0dd8('0x22'),_0x35cb1f[_0x0dd8('0x13')],_0x584f48);_0x506c0a(_0x4e553f[_0x0dd8('0x12')](0x1f4,_0x35cb1f['message']));});});};exports[_0x0dd8('0x24')]=function(_0x2afe30){var _0x4b3bb3=this;return new Promise(function(_0x11cee2,_0x4da7a6){var _0x1ad855;return db[_0x0dd8('0x17')][_0x0dd8('0x23')]({'where':_0x2afe30[_0x0dd8('0x19')][_0x0dd8('0x1b')]||{},'attributes':['id',_0x0dd8('0x25'),_0x0dd8('0x26'),_0x0dd8('0x27'),'interface']})['then'](function(_0x20dadb){if(_0x20dadb){_0x1ad855=_0x20dadb;return db[_0x0dd8('0x28')]['update']({'paused':0x1},{'where':{'UserId':_0x1ad855['id']},'individualHooks':!![]});}})[_0x0dd8('0xc')](function(){if(_0x1ad855){return db[_0x0dd8('0x29')][_0x0dd8('0x18')]({'where':{'membername':_0x1ad855['name'],'type':_0x0dd8('0x2a'),'exitAt':null}});}})[_0x0dd8('0xc')](function(_0x2655fb){if(_0x1ad855){if(_0x2655fb&&_0x2655fb[_0x0dd8('0x2b')]){var _0x1eb621=moment()[_0x0dd8('0x2c')]('YYYY-MM-DD\x20HH:mm:ss');for(var _0x494005=0x0,_0x23a08c=_0x2655fb[_0x0dd8('0x2b')];_0x494005<_0x23a08c;_0x494005++){_0x2655fb[_0x494005][_0x0dd8('0x2d')]({'exitAt':_0x1eb621});}}}})[_0x0dd8('0xc')](function(){if(_0x1ad855){var _0x14e269=[];var _0x5ec6d0=utils['getChannels']();_0x5ec6d0[_0x0dd8('0x2e')](function(_0x5e194a){_0x14e269['push']({'channel':_0x5e194a,'membername':_0x1ad855[_0x0dd8('0x25')],'interface':_[_0x0dd8('0x2f')](_0x1ad855[_0x0dd8('0x30')])?util['format'](_0x0dd8('0x31'),_0x1ad855[_0x0dd8('0x25')]):_0x1ad855[_0x0dd8('0x30')],'type':_0x0dd8('0x2a'),'enterAt':moment()[_0x0dd8('0x2c')](_0x0dd8('0x32')),'data1':_0x2afe30[_0x0dd8('0x33')][_0x0dd8('0x34')]||_0x0dd8('0x35'),'role':_0x1ad855[_0x0dd8('0x26')],'internal':_0x1ad855[_0x0dd8('0x27')],'uniqueid':_0x2afe30[_0x0dd8('0x33')][_0x0dd8('0x36')]||null});});return db[_0x0dd8('0x29')]['bulkCreate'](_0x14e269,{'individualHooks':!![]});}})[_0x0dd8('0xc')](function(){if(_0x1ad855){return _0x1ad855['update']({'voicePause':!![],'mailPause':!![],'chatPause':!![],'faxPause':!![],'smsPause':!![],'openchannelPause':!![],'whatsappPause':!![],'pauseType':_0x2afe30[_0x0dd8('0x33')][_0x0dd8('0x34')]||_0x0dd8('0x35'),'lastPauseAt':moment()[_0x0dd8('0x2c')](_0x0dd8('0x32'))});}})[_0x0dd8('0xc')](function(_0x51ad66){_0x11cee2(_0x51ad66);})[_0x0dd8('0x15')](function(_0x412024){_0x4da7a6(_0x4b3bb3['error'](0x1f4,_0x412024[_0x0dd8('0x13')]));});});};exports['UnpauseUser']=function(_0x102ea6){var _0x327f4c=this;return new Promise(function(_0x2943e5,_0x1c8408){var _0x20a5ea;return db[_0x0dd8('0x17')][_0x0dd8('0x37')]({'where':_0x102ea6[_0x0dd8('0x19')][_0x0dd8('0x1b')]||{},'attributes':['id',_0x0dd8('0x25')]})['then'](function(_0x2bc978){if(_0x2bc978){_0x20a5ea=_0x2bc978;if(_0x102ea6[_0x0dd8('0x33')][_0x0dd8('0x38')]&&!utils[_0x0dd8('0x39')](_0x102ea6[_0x0dd8('0x33')]['channel'])){throw new Error(_0x0dd8('0x3a'));}switch(_0x102ea6[_0x0dd8('0x33')][_0x0dd8('0x38')]){case _0x0dd8('0x3b'):return db['UserVoiceQueueRt']['update']({'paused':0x0},{'where':{'UserId':_0x20a5ea['id']}})[_0x0dd8('0xc')](function(){return db[_0x0dd8('0x29')][_0x0dd8('0x23')]({'where':{'channel':_0x102ea6[_0x0dd8('0x33')][_0x0dd8('0x38')],'membername':_0x20a5ea['name'],'type':'PAUSE','exitAt':null}});})[_0x0dd8('0xc')](function(_0xdbdc6a){if(_0xdbdc6a){return _0xdbdc6a[_0x0dd8('0x3c')]({'exitAt':moment()[_0x0dd8('0x2c')](_0x0dd8('0x32')),'data2':_0x0dd8('0x3d')},{'individualHooks':!![]});}return null;})[_0x0dd8('0xc')](function(){return _0x20a5ea[_0x0dd8('0x3c')]({'voicePause':![]});});case'mail':case _0x0dd8('0x3e'):case _0x0dd8('0x3f'):case _0x0dd8('0x40'):case _0x0dd8('0x41'):case _0x0dd8('0x42'):return db[_0x0dd8('0x29')]['find']({'where':{'channel':_0x102ea6[_0x0dd8('0x33')]['channel'],'membername':_0x20a5ea['name'],'type':_0x0dd8('0x2a'),'exitAt':null}})[_0x0dd8('0xc')](function(_0x2b2c10){return _0x2b2c10[_0x0dd8('0x3c')]({'exitAt':moment()[_0x0dd8('0x2c')](_0x0dd8('0x32')),'data2':_0x0dd8('0x3d')},{'individualHooks':!![]});})['then'](function(){var _0x5f247d={};_['set'](_0x5f247d,util['format'](_0x0dd8('0x43'),_0x102ea6[_0x0dd8('0x33')][_0x0dd8('0x38')],'Pause'),![]);return _0x20a5ea[_0x0dd8('0x3c')](_0x5f247d);});default:return db[_0x0dd8('0x28')][_0x0dd8('0x3c')]({'paused':0x0},{'where':{'UserId':_0x20a5ea['id']}})['then'](function(){return db['MemberReport']['findAll']({'where':{'membername':_0x20a5ea['name'],'type':_0x0dd8('0x2a'),'exitAt':null}});})['then'](function(_0xb4c1a7){var _0x4dcfdc=[];_0xb4c1a7[_0x0dd8('0x2e')](function(_0x33c00b){_0x4dcfdc['push'](_0x33c00b[_0x0dd8('0x3c')]({'exitAt':moment()[_0x0dd8('0x2c')](_0x0dd8('0x32')),'data2':_0x0dd8('0x3d')}));});return BPromise[_0x0dd8('0x44')](_0x4dcfdc);})[_0x0dd8('0xc')](function(){return _0x20a5ea[_0x0dd8('0x3c')]({'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![],'whatsappPause':![]});});}}})['then'](function(_0x258fca){_0x2943e5(_0x258fca);})[_0x0dd8('0x15')](function(_0x4b120d){_0x1c8408(_0x327f4c[_0x0dd8('0x12')](0x1f4,_0x4b120d[_0x0dd8('0x13')]));});});};exports[_0x0dd8('0x45')]=function(_0xd1b18c){var _0x4a1ae9=this;return new Promise(function(_0x34d299,_0x2d3378){var _0x5113c7;return db[_0x0dd8('0x17')]['findOne']({'where':_0xd1b18c['options'][_0x0dd8('0x1b')]||{},'attributes':['id','name']})[_0x0dd8('0xc')](function(_0x26e971){if(_0x26e971){_0x5113c7=_0x26e971;return db[_0x0dd8('0x28')][_0x0dd8('0x46')]({'where':{'membername':_0x5113c7[_0x0dd8('0x25')]},'individualHooks':!![]});}})[_0x0dd8('0xc')](function(){if(_0x5113c7){return db[_0x0dd8('0x29')][_0x0dd8('0x18')]({'where':{'membername':_0x5113c7['name'],'exitAt':null}});}})[_0x0dd8('0xc')](function(_0x3620ff){if(_0x5113c7){if(_0x3620ff&&_0x3620ff['length']){var _0x3d26d6=[];_0x3620ff[_0x0dd8('0x2e')](function(_0xed9031){_0x3d26d6[_0x0dd8('0x47')](_0xed9031[_0x0dd8('0x3c')]({'exitAt':moment()[_0x0dd8('0x2c')](_0x0dd8('0x32'))}));});return BPromise[_0x0dd8('0x44')](_0x3d26d6);}}})[_0x0dd8('0xc')](function(){if(_0x5113c7){return _0x5113c7[_0x0dd8('0x3c')]({'online':![],'voicePause':![],'mailPause':![],'chatPause':![],'faxPause':![],'smsPause':![],'openchannelPause':![]});}})[_0x0dd8('0xc')](function(_0x55431e){_0x34d299(_0x55431e);})[_0x0dd8('0x15')](function(_0x151031){_0x2d3378(_0x4a1ae9[_0x0dd8('0x12')](0x1f4,_0x151031[_0x0dd8('0x13')]));});});};exports[_0x0dd8('0x48')]=function(_0x31658a){var _0x28acdb=this;return new Promise(function(_0x168c1b,_0x357966){var _0x4815d8;var _0x1bea70;var _0x424bf0;var _0x4e2b12;return db[_0x0dd8('0x17')][_0x0dd8('0x37')]({'where':_0x31658a['options'][_0x0dd8('0x1b')]||{},'attributes':['id',_0x0dd8('0x25'),_0x0dd8('0x26'),_0x0dd8('0x49'),_0x0dd8('0x4a'),'internal',_0x0dd8('0x4b'),_0x0dd8('0x30')]})[_0x0dd8('0xc')](function(_0x4fe706){if(_0x4fe706){_0x4815d8=_0x4fe706;_0x4e2b12=_0x31658a[_0x0dd8('0x33')][_0x0dd8('0x30')]?_0x31658a[_0x0dd8('0x33')][_0x0dd8('0x30')]:util[_0x0dd8('0x2c')](_0x0dd8('0x31'),_0x4815d8[_0x0dd8('0x25')]);return db['User'][_0x0dd8('0x4c')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x4815d8['id']}}});}})[_0x0dd8('0xc')](function(_0x413b0a){if(_0x413b0a){_0x424bf0=_0x413b0a;return require(_0x0dd8('0x4d'))[_0x0dd8('0x4e')]();}})[_0x0dd8('0xc')](function(_0x4180fb){if(_0x4180fb&&_0x4180fb[_0x0dd8('0x4f')]&&_0x424bf0>=_0x4180fb[_0x0dd8('0x4f')]){throw new Error(_0x0dd8('0x50'));}})[_0x0dd8('0xc')](function(){if(_0x4815d8){return db['UserVoiceQueueRt'][_0x0dd8('0x46')]({'where':{'membername':_0x4815d8[_0x0dd8('0x25')]},'individualHooks':!![]});}})[_0x0dd8('0xc')](function(){if(_0x4815d8){return _0x4815d8[_0x0dd8('0x51')]({'raw':!![]});}})[_0x0dd8('0xc')](function(_0x23af6c){if(_0x4815d8){if(_0x23af6c){var _0x45de0d=[];_0x1bea70=_0x23af6c;if(_0x1bea70['length']){for(var _0x5a1ed2=0x0;_0x5a1ed2<_0x1bea70[_0x0dd8('0x2b')];_0x5a1ed2++){_0x45de0d[_0x0dd8('0x47')](db['UserVoiceQueueRt'][_0x0dd8('0x52')]({'membername':_0x4815d8['name'],'UserId':_0x4815d8['id'],'queue_name':_0x1bea70[_0x5a1ed2][_0x0dd8('0x25')],'VoiceQueueId':_0x1bea70[_0x5a1ed2]['id'],'interface':_0x4e2b12,'paused':_0x4815d8['loginInPause']||![],'penalty':_0x1bea70[_0x5a1ed2]['UserVoiceQueue.penalty']||0x0}));}return BPromise[_0x0dd8('0x44')](_0x45de0d);}}}})[_0x0dd8('0xc')](function(){if(_0x4815d8){return db['MemberReport'][_0x0dd8('0x18')]({'where':{'membername':_0x4815d8['name'],'exitAt':null}});}})['then'](function(_0x38a2de){if(_0x4815d8){if(_0x38a2de&&_0x38a2de['length']){var _0x51bddb=[];_0x38a2de['forEach'](function(_0x2de9d9){_0x51bddb[_0x0dd8('0x47')](_0x2de9d9[_0x0dd8('0x3c')]({'exitAt':moment()[_0x0dd8('0x2c')](_0x0dd8('0x32'))}));});return BPromise[_0x0dd8('0x44')](_0x51bddb);}}})['then'](function(_0x2ff464){if(_0x4815d8){var _0x51b8aa=[];var _0x2d432e=[];var _0x3412e5=utils[_0x0dd8('0x53')]();var _0x2ae0fc={'membername':_0x4815d8['name'],'interface':_0x4e2b12,'enterAt':moment()[_0x0dd8('0x2c')](_0x0dd8('0x32')),'role':_0x4815d8[_0x0dd8('0x26')],'internal':_0x4815d8[_0x0dd8('0x27')]};_0x3412e5[_0x0dd8('0x2e')](function(_0x1e7ea2){_0x51b8aa[_0x0dd8('0x47')](_[_0x0dd8('0x54')]({'channel':_0x1e7ea2,'type':_0x0dd8('0x55'),'data1':_0x0dd8('0x56'),'data2':_0x4e2b12},_0x2ae0fc));if(_0x4815d8[_0x0dd8('0x4b')]){_0x2d432e[_0x0dd8('0x47')](_[_0x0dd8('0x54')]({'channel':_0x1e7ea2,'type':_0x0dd8('0x2a'),'data1':'LOGININPAUSE'},_0x2ae0fc));}});return db['MemberReport'][_0x0dd8('0x57')](_0x51b8aa[_0x0dd8('0x58')](_0x2d432e),{'individualHooks':!![]});}})[_0x0dd8('0xc')](function(){if(_0x4815d8){return _0x4815d8[_0x0dd8('0x3c')]({'online':!![],'lastLoginAt':moment()[_0x0dd8('0x2c')]('YYYY-MM-DD\x20HH:mm:ss'),'voicePause':_0x4815d8[_0x0dd8('0x4b')]||![],'mailPause':_0x4815d8[_0x0dd8('0x4b')]||![],'chatPause':_0x4815d8['loginInPause']||![],'faxPause':_0x4815d8[_0x0dd8('0x4b')]||![],'smsPause':_0x4815d8[_0x0dd8('0x4b')]||![],'openchannelPause':_0x4815d8[_0x0dd8('0x4b')]||![],'pauseType':_0x4815d8[_0x0dd8('0x4b')]?_0x0dd8('0x59'):null,'lastPauseAt':moment()[_0x0dd8('0x2c')]('YYYY-MM-DD\x20HH:mm:ss'),'interface':_0x4e2b12});}})['then'](function(_0x3adc59){_0x168c1b(_0x3adc59);})['catch'](function(_0x4c1e03){_0x357966(_0x28acdb[_0x0dd8('0x12')](0x1f4,_0x4c1e03[_0x0dd8('0x13')]));});});};
\ No newline at end of file
index b1b3c1d..db65f02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad16=['register','length','./user.events','save','update','removeListener'];(function(_0x1e54f9,_0x2a0fab){var _0xf4ff94=function(_0x7e7227){while(--_0x7e7227){_0x1e54f9['push'](_0x1e54f9['shift']());}};_0xf4ff94(++_0x2a0fab);}(_0xad16,0x1be));var _0x6ad1=function(_0x2dc428,_0x5b0bd2){_0x2dc428=_0x2dc428-0x0;var _0x51dc8b=_0xad16[_0x2dc428];return _0x51dc8b;};'use strict';var UserEvents=require(_0x6ad1('0x0'));var events=[_0x6ad1('0x1'),'remove',_0x6ad1('0x2')];function createListener(_0x49f7a3,_0x4c6c10){return function(_0x327e9b){_0x4c6c10['emit'](_0x49f7a3,_0x327e9b);};}function removeListener(_0x33dcb2,_0x382438){return function(){UserEvents[_0x6ad1('0x3')](_0x33dcb2,_0x382438);};}exports[_0x6ad1('0x4')]=function(_0x9b9d68){for(var _0x32ca6e=0x0,_0x3fcae1=events[_0x6ad1('0x5')];_0x32ca6e<_0x3fcae1;_0x32ca6e++){var _0x4b41a7=events[_0x32ca6e];var _0x138a67=createListener('user:'+_0x4b41a7,_0x9b9d68);UserEvents['on'](_0x4b41a7,_0x138a67);}};
\ No newline at end of file
+var _0x059e=['./user.events','remove','update','emit','register','user:'];(function(_0x3a7e21,_0x1f2c1b){var _0x49a357=function(_0x50144f){while(--_0x50144f){_0x3a7e21['push'](_0x3a7e21['shift']());}};_0x49a357(++_0x1f2c1b);}(_0x059e,0xde));var _0xe059=function(_0x5c251d,_0x1b98ac){_0x5c251d=_0x5c251d-0x0;var _0x17db9c=_0x059e[_0x5c251d];return _0x17db9c;};'use strict';var UserEvents=require(_0xe059('0x0'));var events=['save',_0xe059('0x1'),_0xe059('0x2')];function createListener(_0x258c1a,_0x2f1c1c){return function(_0x33a0a8){_0x2f1c1c[_0xe059('0x3')](_0x258c1a,_0x33a0a8);};}function removeListener(_0xb6a4d0,_0x236092){return function(){UserEvents['removeListener'](_0xb6a4d0,_0x236092);};}exports[_0xe059('0x4')]=function(_0xcfd2eb){for(var _0x3427d0=0x0,_0x2f0e92=events['length'];_0x3427d0<_0x2f0e92;_0x3427d0++){var _0x3e65e8=events[_0x3427d0];var _0x4511fd=createListener(_0xe059('0x5')+_0x3e65e8,_0xcfd2eb);UserEvents['on'](_0x3e65e8,_0x4511fd);}};
\ No newline at end of file
index 19496c5..729aade 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(_0xb5a041,_0x394f01){var _0x187974=function(_0x404261){while(--_0x404261){_0xb5a041['push'](_0xb5a041['shift']());}};_0x187974(++_0x394f01);}(_0xa9e0,0x123));var _0x0a9e=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0xa9e0[_0x40ac5e];return _0x2839d6;};'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(_0x1ae16c,_0x4988dd){var _0x4afb04=function(_0x16cb1c){while(--_0x16cb1c){_0x1ae16c['push'](_0x1ae16c['shift']());}};_0x4afb04(++_0x4988dd);}(_0xe706,0xa3));var _0x6e70=function(_0x3cdfdb,_0x40545d){_0x3cdfdb=_0x3cdfdb-0x0;var _0x57d4d8=_0xe706[_0x3cdfdb];return _0x57d4d8;};'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 65814fb..9006424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5458=['exports','INTEGER','sequelize'];(function(_0x20fdc5,_0x114b00){var _0x2a4eee=function(_0x56cb03){while(--_0x56cb03){_0x20fdc5['push'](_0x20fdc5['shift']());}};_0x2a4eee(++_0x114b00);}(_0x5458,0x14c));var _0x8545=function(_0x2515c5,_0x3594bc){_0x2515c5=_0x2515c5-0x0;var _0x1615a8=_0x5458[_0x2515c5];return _0x1615a8;};'use strict';var Sequelize=require(_0x8545('0x0'));module[_0x8545('0x1')]={'penalty':{'type':Sequelize[_0x8545('0x2')],'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 e8e0076..ed5b91b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7065=['moment','request-promise','path','rimraf','../../config/environment','./userChatQueue.attributes','exports','UserChatQueue','user_has_chat_queues','lodash','util','../../config/logger','api'];(function(_0x194404,_0x4662e0){var _0x315e2c=function(_0x19fda3){while(--_0x19fda3){_0x194404['push'](_0x194404['shift']());}};_0x315e2c(++_0x4662e0);}(_0x7065,0x1b6));var _0x5706=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7065[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x5706('0x0'));var util=require(_0x5706('0x1'));var logger=require(_0x5706('0x2'))(_0x5706('0x3'));var moment=require(_0x5706('0x4'));var BPromise=require('bluebird');var rp=require(_0x5706('0x5'));var fs=require('fs');var path=require(_0x5706('0x6'));var rimraf=require(_0x5706('0x7'));var config=require(_0x5706('0x8'));var attributes=require(_0x5706('0x9'));module[_0x5706('0xa')]=function(_0x5955a2,_0x23a8a3){return _0x5955a2['define'](_0x5706('0xb'),attributes,{'tableName':_0x5706('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xc5b0=['../../config/logger','moment','bluebird','request-promise','path','./userChatQueue.attributes','define','user_has_chat_queues','lodash','util'];(function(_0x150bae,_0x306fbd){var _0x110dc8=function(_0x819a32){while(--_0x819a32){_0x150bae['push'](_0x150bae['shift']());}};_0x110dc8(++_0x306fbd);}(_0xc5b0,0x102));var _0x0c5b=function(_0x17e74a,_0x26b6c1){_0x17e74a=_0x17e74a-0x0;var _0x3dd6c5=_0xc5b0[_0x17e74a];return _0x3dd6c5;};'use strict';var _=require(_0x0c5b('0x0'));var util=require(_0x0c5b('0x1'));var logger=require(_0x0c5b('0x2'))('api');var moment=require(_0x0c5b('0x3'));var BPromise=require(_0x0c5b('0x4'));var rp=require(_0x0c5b('0x5'));var fs=require('fs');var path=require(_0x0c5b('0x6'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x0c5b('0x7'));module['exports']=function(_0x3d842c,_0x8671b3){return _0x3d842c[_0x0c5b('0x8')]('UserChatQueue',attributes,{'tableName':_0x0c5b('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 0049e0d..101c106 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7099=['ioredis','../../mysqldb','../../config/logger','../../config/environment','then','info','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug','UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','code','error','message','result','catch','lodash','util','randomstring'];(function(_0x9faf49,_0x51c0a4){var _0x3d3179=function(_0x49791c){while(--_0x49791c){_0x9faf49['push'](_0x9faf49['shift']());}};_0x3d3179(++_0x51c0a4);}(_0x7099,0x107));var _0x9709=function(_0x36b0d7,_0x3044c7){_0x36b0d7=_0x36b0d7-0x0;var _0x3ec0c9=_0x7099[_0x36b0d7];return _0x3ec0c9;};'use strict';var _=require(_0x9709('0x0'));var util=require(_0x9709('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x9709('0x2'));var fs=require('fs');var Redis=require(_0x9709('0x3'));var db=require(_0x9709('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x9709('0x5'))('rpc');var config=require(_0x9709('0x6'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x3a7b57,_0x3d7e86,_0x50be83){return new BPromise(function(_0x308872,_0x27af6e){return client['request'](_0x3a7b57,_0x50be83)[_0x9709('0x7')](function(_0x1a9891){logger[_0x9709('0x8')](_0x9709('0x9'),_0x3d7e86,_0x9709('0xa'));logger[_0x9709('0xb')](_0x9709('0xc'),_0x3d7e86,'request\x20sent',JSON[_0x9709('0xd')](_0x1a9891));if(_0x1a9891['error']){if(_0x1a9891['error'][_0x9709('0xe')]===0x1f4){logger[_0x9709('0xf')](_0x9709('0x9'),_0x3d7e86,_0x1a9891['error']['message']);return _0x27af6e(_0x1a9891[_0x9709('0xf')]['message']);}logger[_0x9709('0xf')](_0x9709('0x9'),_0x3d7e86,_0x1a9891[_0x9709('0xf')][_0x9709('0x10')]);return _0x308872(_0x1a9891[_0x9709('0xf')][_0x9709('0x10')]);}else{logger[_0x9709('0x8')](_0x9709('0x9'),_0x3d7e86,_0x9709('0xa'));_0x308872(_0x1a9891[_0x9709('0x11')][_0x9709('0x10')]);}})[_0x9709('0x12')](function(_0x4f1b77){logger[_0x9709('0xf')](_0x9709('0x9'),_0x3d7e86,_0x4f1b77);_0x27af6e(_0x4f1b77);});});}
\ No newline at end of file
+var _0x1a3a=['UserChatQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','catch','util','moment','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','UserChatQueue,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x143f64,_0x4f6918){var _0x5d5f65=function(_0x54643b){while(--_0x54643b){_0x143f64['push'](_0x143f64['shift']());}};_0x5d5f65(++_0x4f6918);}(_0x1a3a,0x197));var _0xa1a3=function(_0x52da32,_0x118d74){_0x52da32=_0x52da32-0x0;var _0x580919=_0x1a3a[_0x52da32];return _0x580919;};'use strict';var _=require('lodash');var util=require(_0xa1a3('0x0'));var moment=require(_0xa1a3('0x1'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xa1a3('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xa1a3('0x3'));var logger=require(_0xa1a3('0x4'))(_0xa1a3('0x5'));var config=require(_0xa1a3('0x6'));var jayson=require(_0xa1a3('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x16e1f9,_0x499149,_0x11e072){return new BPromise(function(_0x42e7cf,_0xb6230a){return client[_0xa1a3('0x8')](_0x16e1f9,_0x11e072)[_0xa1a3('0x9')](function(_0x3b9c19){logger['info'](_0xa1a3('0xa'),_0x499149,_0xa1a3('0xb'));logger[_0xa1a3('0xc')](_0xa1a3('0xd'),_0x499149,_0xa1a3('0xb'),JSON[_0xa1a3('0xe')](_0x3b9c19));if(_0x3b9c19[_0xa1a3('0xf')]){if(_0x3b9c19[_0xa1a3('0xf')][_0xa1a3('0x10')]===0x1f4){logger[_0xa1a3('0xf')]('UserChatQueue,\x20%s,\x20%s',_0x499149,_0x3b9c19[_0xa1a3('0xf')][_0xa1a3('0x11')]);return _0xb6230a(_0x3b9c19[_0xa1a3('0xf')][_0xa1a3('0x11')]);}logger['error']('UserChatQueue,\x20%s,\x20%s',_0x499149,_0x3b9c19[_0xa1a3('0xf')][_0xa1a3('0x11')]);return _0x42e7cf(_0x3b9c19[_0xa1a3('0xf')]['message']);}else{logger[_0xa1a3('0x12')]('UserChatQueue,\x20%s,\x20%s',_0x499149,_0xa1a3('0xb'));_0x42e7cf(_0x3b9c19[_0xa1a3('0x13')][_0xa1a3('0x11')]);}})[_0xa1a3('0x14')](function(_0x504d6c){logger[_0xa1a3('0xf')](_0xa1a3('0xa'),_0x499149,_0x504d6c);_0xb6230a(_0x504d6c);});});}
\ No newline at end of file
index d6f131e..b2520b8 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(_0x590773,_0x11f28d){var _0x5c4d05=function(_0x220a2b){while(--_0x220a2b){_0x590773['push'](_0x590773['shift']());}};_0x5c4d05(++_0x11f28d);}(_0xe706,0xa3));var _0x6e70=function(_0x26f4a4,_0xeb0dc6){_0x26f4a4=_0x26f4a4-0x0;var _0x437404=_0xe706[_0x26f4a4];return _0x437404;};'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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0x2c22c4,_0x294036){var _0x455109=function(_0xb07723){while(--_0xb07723){_0x2c22c4['push'](_0x2c22c4['shift']());}};_0x455109(++_0x294036);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x23be51,_0xc02a1b){_0x23be51=_0x23be51-0x0;var _0x47a26d=_0xcb91[_0x23be51];return _0x47a26d;};'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
index a352ccf..7125e4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9dad=['STRING','sequelize','INTEGER'];(function(_0x1d1bd1,_0xb06564){var _0x649f8f=function(_0x596c62){while(--_0x596c62){_0x1d1bd1['push'](_0x1d1bd1['shift']());}};_0x649f8f(++_0xb06564);}(_0x9dad,0x148));var _0xd9da=function(_0x493ccb,_0x399422){_0x493ccb=_0x493ccb-0x0;var _0x24528f=_0x9dad[_0x493ccb];return _0x24528f;};'use strict';var Sequelize=require(_0xd9da('0x0'));module['exports']={'penalty':{'type':Sequelize[_0xd9da('0x1')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xd9da('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize[_0xd9da('0x2')]}};
\ No newline at end of file
+var _0x791c=['STRING','sequelize','INTEGER'];(function(_0x19fb00,_0x14936e){var _0x17dcf0=function(_0x2eabaf){while(--_0x2eabaf){_0x19fb00['push'](_0x19fb00['shift']());}};_0x17dcf0(++_0x14936e);}(_0x791c,0x88));var _0xc791=function(_0x2bfd4f,_0x1bbf2c){_0x2bfd4f=_0x2bfd4f-0x0;var _0x341849=_0x791c[_0x2bfd4f];return _0x341849;};'use strict';var Sequelize=require(_0xc791('0x0'));module['exports']={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xc791('0x1')],'defaultValue':0x0},'queue':{'type':Sequelize[_0xc791('0x2')]}};
\ No newline at end of file
index fcdbcfd..a0e2117 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x061f=['define','user_has_fax_queues','util','api','moment','bluebird','request-promise','rimraf','../../config/environment','./userFaxQueue.attributes','exports'];(function(_0x29b7a1,_0x1b8914){var _0x525021=function(_0x4b70ab){while(--_0x4b70ab){_0x29b7a1['push'](_0x29b7a1['shift']());}};_0x525021(++_0x1b8914);}(_0x061f,0xff));var _0xf061=function(_0xf1bfd8,_0xcb3760){_0xf1bfd8=_0xf1bfd8-0x0;var _0x2d1d17=_0x061f[_0xf1bfd8];return _0x2d1d17;};'use strict';var _=require('lodash');var util=require(_0xf061('0x0'));var logger=require('../../config/logger')(_0xf061('0x1'));var moment=require(_0xf061('0x2'));var BPromise=require(_0xf061('0x3'));var rp=require(_0xf061('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0xf061('0x5'));var config=require(_0xf061('0x6'));var attributes=require(_0xf061('0x7'));module[_0xf061('0x8')]=function(_0xecd7df,_0x882224){return _0xecd7df[_0xf061('0x9')]('UserFaxQueue',attributes,{'tableName':_0xf061('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x1af6=['../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','./userFaxQueue.attributes','exports','define','user_has_fax_queues','lodash','util'];(function(_0x15b33f,_0x49451c){var _0x27d7b5=function(_0x313758){while(--_0x313758){_0x15b33f['push'](_0x15b33f['shift']());}};_0x27d7b5(++_0x49451c);}(_0x1af6,0xe8));var _0x61af=function(_0x5511c3,_0x149c5d){_0x5511c3=_0x5511c3-0x0;var _0x461096=_0x1af6[_0x5511c3];return _0x461096;};'use strict';var _=require(_0x61af('0x0'));var util=require(_0x61af('0x1'));var logger=require(_0x61af('0x2'))(_0x61af('0x3'));var moment=require(_0x61af('0x4'));var BPromise=require('bluebird');var rp=require(_0x61af('0x5'));var fs=require('fs');var path=require(_0x61af('0x6'));var rimraf=require(_0x61af('0x7'));var config=require(_0x61af('0x8'));var attributes=require(_0x61af('0x9'));module[_0x61af('0xa')]=function(_0x125963,_0x2617b1){return _0x125963[_0x61af('0xb')]('UserFaxQueue',attributes,{'tableName':_0x61af('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 1a7825a..50c775d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6cff=['../../config/utils','../../config/logger','jayson/promise','request','info','UserFaxQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb'];(function(_0xca7df5,_0x488054){var _0x1000dc=function(_0x19ab04){while(--_0x19ab04){_0xca7df5['push'](_0xca7df5['shift']());}};_0x1000dc(++_0x488054);}(_0x6cff,0x79));var _0xf6cf=function(_0x179e11,_0xf65436){_0x179e11=_0x179e11-0x0;var _0x549f04=_0x6cff[_0x179e11];return _0x549f04;};'use strict';var _=require('lodash');var util=require(_0xf6cf('0x0'));var moment=require('moment');var BPromise=require(_0xf6cf('0x1'));var rs=require(_0xf6cf('0x2'));var fs=require('fs');var Redis=require(_0xf6cf('0x3'));var db=require(_0xf6cf('0x4'))['db'];var utils=require(_0xf6cf('0x5'));var logger=require(_0xf6cf('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xf6cf('0x7'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x4fdcfe,_0x52da91,_0x48d86a){return new BPromise(function(_0x25863c,_0x154f88){return client[_0xf6cf('0x8')](_0x4fdcfe,_0x48d86a)['then'](function(_0x58fc8e){logger[_0xf6cf('0x9')](_0xf6cf('0xa'),_0x52da91,_0xf6cf('0xb'));logger[_0xf6cf('0xc')]('UserFaxQueue,\x20%s,\x20%s,\x20%s',_0x52da91,_0xf6cf('0xb'),JSON[_0xf6cf('0xd')](_0x58fc8e));if(_0x58fc8e[_0xf6cf('0xe')]){if(_0x58fc8e[_0xf6cf('0xe')]['code']===0x1f4){logger[_0xf6cf('0xe')](_0xf6cf('0xa'),_0x52da91,_0x58fc8e['error'][_0xf6cf('0xf')]);return _0x154f88(_0x58fc8e[_0xf6cf('0xe')][_0xf6cf('0xf')]);}logger['error'](_0xf6cf('0xa'),_0x52da91,_0x58fc8e[_0xf6cf('0xe')][_0xf6cf('0xf')]);return _0x25863c(_0x58fc8e['error'][_0xf6cf('0xf')]);}else{logger['info'](_0xf6cf('0xa'),_0x52da91,_0xf6cf('0xb'));_0x25863c(_0x58fc8e[_0xf6cf('0x10')][_0xf6cf('0xf')]);}})[_0xf6cf('0x11')](function(_0x30d49a){logger[_0xf6cf('0xe')]('UserFaxQueue,\x20%s,\x20%s',_0x52da91,_0x30d49a);_0x154f88(_0x30d49a);});});}
\ No newline at end of file
+var _0x4ede=['randomstring','ioredis','../../mysqldb','../../config/utils','rpc','jayson/promise','client','http','request','info','UserFaxQueue,\x20%s,\x20%s','debug','UserFaxQueue,\x20%s,\x20%s,\x20%s','error','code','message','request\x20sent','result','lodash','util','moment'];(function(_0x535639,_0x1519d8){var _0x541400=function(_0x22c85d){while(--_0x22c85d){_0x535639['push'](_0x535639['shift']());}};_0x541400(++_0x1519d8);}(_0x4ede,0x7b));var _0xe4ed=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x4ede[_0x2c91e9];return _0x13f0ff;};'use strict';var _=require(_0xe4ed('0x0'));var util=require(_0xe4ed('0x1'));var moment=require(_0xe4ed('0x2'));var BPromise=require('bluebird');var rs=require(_0xe4ed('0x3'));var fs=require('fs');var Redis=require(_0xe4ed('0x4'));var db=require(_0xe4ed('0x5'))['db'];var utils=require(_0xe4ed('0x6'));var logger=require('../../config/logger')(_0xe4ed('0x7'));var config=require('../../config/environment');var jayson=require(_0xe4ed('0x8'));var client=jayson[_0xe4ed('0x9')][_0xe4ed('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x35c989,_0x44dad9,_0x3bc56a){return new BPromise(function(_0x42901a,_0x3b4e9a){return client[_0xe4ed('0xb')](_0x35c989,_0x3bc56a)['then'](function(_0xa365d2){logger[_0xe4ed('0xc')](_0xe4ed('0xd'),_0x44dad9,'request\x20sent');logger[_0xe4ed('0xe')](_0xe4ed('0xf'),_0x44dad9,'request\x20sent',JSON['stringify'](_0xa365d2));if(_0xa365d2[_0xe4ed('0x10')]){if(_0xa365d2[_0xe4ed('0x10')][_0xe4ed('0x11')]===0x1f4){logger[_0xe4ed('0x10')](_0xe4ed('0xd'),_0x44dad9,_0xa365d2[_0xe4ed('0x10')][_0xe4ed('0x12')]);return _0x3b4e9a(_0xa365d2['error'][_0xe4ed('0x12')]);}logger[_0xe4ed('0x10')](_0xe4ed('0xd'),_0x44dad9,_0xa365d2[_0xe4ed('0x10')][_0xe4ed('0x12')]);return _0x42901a(_0xa365d2[_0xe4ed('0x10')][_0xe4ed('0x12')]);}else{logger[_0xe4ed('0xc')](_0xe4ed('0xd'),_0x44dad9,_0xe4ed('0x13'));_0x42901a(_0xa365d2[_0xe4ed('0x14')][_0xe4ed('0x12')]);}})['catch'](function(_0x566957){logger[_0xe4ed('0x10')]('UserFaxQueue,\x20%s,\x20%s',_0x44dad9,_0x566957);_0x3b4e9a(_0x566957);});});}
\ No newline at end of file
index 7f4311d..ca00725 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xedd9=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','exports'];(function(_0x190c46,_0x18e8c4){var _0x5577cd=function(_0x389608){while(--_0x389608){_0x190c46['push'](_0x190c46['shift']());}};_0x5577cd(++_0x18e8c4);}(_0xedd9,0xfc));var _0x9edd=function(_0xd73a2d,_0x2c75d1){_0xd73a2d=_0xd73a2d-0x0;var _0x532597=_0xedd9[_0xd73a2d];return _0x532597;};'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
+var _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x5475a9,_0x5e0e50){var _0x1e865c=function(_0x744886){while(--_0x744886){_0x5475a9['push'](_0x5475a9['shift']());}};_0x1e865c(++_0x5e0e50);}(_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 ade7127..995a3ec 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0a12=['INTEGER','sequelize','exports'];(function(_0x27df84,_0x734b17){var _0x2c080e=function(_0x29e7ce){while(--_0x29e7ce){_0x27df84['push'](_0x27df84['shift']());}};_0x2c080e(++_0x734b17);}(_0x0a12,0x1cc));var _0x20a1=function(_0x1b5aea,_0x3f04b7){_0x1b5aea=_0x1b5aea-0x0;var _0x15cfc6=_0x0a12[_0x1b5aea];return _0x15cfc6;};'use strict';var Sequelize=require(_0x20a1('0x0'));module[_0x20a1('0x1')]={'penalty':{'type':Sequelize[_0x20a1('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x3600=['INTEGER','sequelize'];(function(_0x3f912a,_0x4fa2aa){var _0xa4e620=function(_0x27141a){while(--_0x27141a){_0x3f912a['push'](_0x3f912a['shift']());}};_0xa4e620(++_0x4fa2aa);}(_0x3600,0x13f));var _0x0360=function(_0x19d7f4,_0x207713){_0x19d7f4=_0x19d7f4-0x0;var _0x56b52b=_0x3600[_0x19d7f4];return _0x56b52b;};'use strict';var Sequelize=require(_0x0360('0x0'));module['exports']={'penalty':{'type':Sequelize[_0x0360('0x1')],'defaultValue':0x0}};
\ No newline at end of file
index f38a558..b7c1f0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbc4c=['moment','bluebird','request-promise','path','../../config/environment','./userMailQueue.attributes','exports','UserMailQueue','util','api'];(function(_0x2df507,_0x553862){var _0x1f7167=function(_0x11319e){while(--_0x11319e){_0x2df507['push'](_0x2df507['shift']());}};_0x1f7167(++_0x553862);}(_0xbc4c,0xf8));var _0xcbc4=function(_0x6e1239,_0x3562ac){_0x6e1239=_0x6e1239-0x0;var _0x418150=_0xbc4c[_0x6e1239];return _0x418150;};'use strict';var _=require('lodash');var util=require(_0xcbc4('0x0'));var logger=require('../../config/logger')(_0xcbc4('0x1'));var moment=require(_0xcbc4('0x2'));var BPromise=require(_0xcbc4('0x3'));var rp=require(_0xcbc4('0x4'));var fs=require('fs');var path=require(_0xcbc4('0x5'));var rimraf=require('rimraf');var config=require(_0xcbc4('0x6'));var attributes=require(_0xcbc4('0x7'));module[_0xcbc4('0x8')]=function(_0x1bccc3,_0x510e4a){return _0x1bccc3['define'](_0xcbc4('0x9'),attributes,{'tableName':'user_has_mail_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xf95c=['user_has_mail_queues','lodash','util','../../config/logger','api','bluebird','request-promise','path','../../config/environment','./userMailQueue.attributes','exports','define','UserMailQueue'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf95c,0xf8));var _0xcf95=function(_0x2342d4,_0x12ad6d){_0x2342d4=_0x2342d4-0x0;var _0x11d4bf=_0xf95c[_0x2342d4];return _0x11d4bf;};'use strict';var _=require(_0xcf95('0x0'));var util=require(_0xcf95('0x1'));var logger=require(_0xcf95('0x2'))(_0xcf95('0x3'));var moment=require('moment');var BPromise=require(_0xcf95('0x4'));var rp=require(_0xcf95('0x5'));var fs=require('fs');var path=require(_0xcf95('0x6'));var rimraf=require('rimraf');var config=require(_0xcf95('0x7'));var attributes=require(_0xcf95('0x8'));module[_0xcf95('0x9')]=function(_0x9171a4,_0x5cff07){return _0x9171a4[_0xcf95('0xa')](_0xcf95('0xb'),attributes,{'tableName':_0xcf95('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dc6fedc..ea48c4c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6aa7=['result','catch','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','request','then','info','UserMailQueue,\x20%s,\x20%s','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message'];(function(_0x3f2b86,_0x3d9cca){var _0x58f7c5=function(_0x270c59){while(--_0x270c59){_0x3f2b86['push'](_0x3f2b86['shift']());}};_0x58f7c5(++_0x3d9cca);}(_0x6aa7,0x178));var _0x76aa=function(_0x5229d7,_0x254d64){_0x5229d7=_0x5229d7-0x0;var _0x5420b4=_0x6aa7[_0x5229d7];return _0x5420b4;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var moment=require(_0x76aa('0x1'));var BPromise=require(_0x76aa('0x2'));var rs=require(_0x76aa('0x3'));var fs=require('fs');var Redis=require(_0x76aa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x76aa('0x5'));var logger=require(_0x76aa('0x6'))(_0x76aa('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x76aa('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32dee5,_0x36d12b,_0xa9b695){return new BPromise(function(_0x56d6bc,_0x3dae33){return client[_0x76aa('0x9')](_0x32dee5,_0xa9b695)[_0x76aa('0xa')](function(_0x557d69){logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,_0x76aa('0xd'));logger[_0x76aa('0xe')](_0x76aa('0xf'),_0x36d12b,_0x76aa('0xd'),JSON[_0x76aa('0x10')](_0x557d69));if(_0x557d69[_0x76aa('0x11')]){if(_0x557d69[_0x76aa('0x11')][_0x76aa('0x12')]===0x1f4){logger['error'](_0x76aa('0xc'),_0x36d12b,_0x557d69['error'][_0x76aa('0x13')]);return _0x3dae33(_0x557d69[_0x76aa('0x11')][_0x76aa('0x13')]);}logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x557d69['error']['message']);return _0x56d6bc(_0x557d69[_0x76aa('0x11')]['message']);}else{logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,'request\x20sent');_0x56d6bc(_0x557d69[_0x76aa('0x14')]['message']);}})[_0x76aa('0x15')](function(_0x5181d2){logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x5181d2);_0x3dae33(_0x5181d2);});});}
\ No newline at end of file
+var _0x4b84=['../../config/logger','rpc','http','then','info','request\x20sent','debug','UserMailQueue,\x20%s,\x20%s,\x20%s','stringify','error','UserMailQueue,\x20%s,\x20%s','message','lodash','util','randomstring','../../config/utils'];(function(_0x4f915c,_0x1f15b7){var _0x34f1fd=function(_0x5155bf){while(--_0x5155bf){_0x4f915c['push'](_0x4f915c['shift']());}};_0x34f1fd(++_0x1f15b7);}(_0x4b84,0x1cc));var _0x44b8=function(_0xbe200f,_0x4b50eb){_0xbe200f=_0xbe200f-0x0;var _0x192597=_0x4b84[_0xbe200f];return _0x192597;};'use strict';var _=require(_0x44b8('0x0'));var util=require(_0x44b8('0x1'));var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x44b8('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x44b8('0x3'));var logger=require(_0x44b8('0x4'))(_0x44b8('0x5'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson['client'][_0x44b8('0x6')]({'port':0x232a});function respondWithRpcPromise(_0x54274b,_0x327f59,_0x5947f7){return new BPromise(function(_0x3e87c5,_0x5a2353){return client['request'](_0x54274b,_0x5947f7)[_0x44b8('0x7')](function(_0x42319d){logger[_0x44b8('0x8')]('UserMailQueue,\x20%s,\x20%s',_0x327f59,_0x44b8('0x9'));logger[_0x44b8('0xa')](_0x44b8('0xb'),_0x327f59,_0x44b8('0x9'),JSON[_0x44b8('0xc')](_0x42319d));if(_0x42319d[_0x44b8('0xd')]){if(_0x42319d[_0x44b8('0xd')]['code']===0x1f4){logger[_0x44b8('0xd')](_0x44b8('0xe'),_0x327f59,_0x42319d['error'][_0x44b8('0xf')]);return _0x5a2353(_0x42319d['error'][_0x44b8('0xf')]);}logger[_0x44b8('0xd')]('UserMailQueue,\x20%s,\x20%s',_0x327f59,_0x42319d[_0x44b8('0xd')]['message']);return _0x3e87c5(_0x42319d['error'][_0x44b8('0xf')]);}else{logger[_0x44b8('0x8')](_0x44b8('0xe'),_0x327f59,_0x44b8('0x9'));_0x3e87c5(_0x42319d['result']['message']);}})['catch'](function(_0x3fe9fb){logger['error'](_0x44b8('0xe'),_0x327f59,_0x3fe9fb);_0x5a2353(_0x3fe9fb);});});}
\ No newline at end of file
index 1923ae8..3c68ee0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1954=['sendUserNotification','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userNotification.controller','post','isAuthenticated'];(function(_0x1f683e,_0x2ce412){var _0x2f613a=function(_0x3a787a){while(--_0x3a787a){_0x1f683e['push'](_0x1f683e['shift']());}};_0x2f613a(++_0x2ce412);}(_0x1954,0xb8));var _0x4195=function(_0x3a69fc,_0x56649a){_0x3a69fc=_0x3a69fc-0x0;var _0x35aba8=_0x1954[_0x3a69fc];return _0x35aba8;};'use strict';var multer=require('multer');var util=require(_0x4195('0x0'));var path=require(_0x4195('0x1'));var timeout=require(_0x4195('0x2'));var express=require(_0x4195('0x3'));var router=express[_0x4195('0x4')]();var fs_extra=require(_0x4195('0x5'));var auth=require(_0x4195('0x6'));var interaction=require(_0x4195('0x7'));var config=require(_0x4195('0x8'));var controller=require(_0x4195('0x9'));router[_0x4195('0xa')]('/',auth[_0x4195('0xb')](),controller[_0x4195('0xc')]);module[_0x4195('0xd')]=router;
\ No newline at end of file
+var _0xf998=['multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','post','isAuthenticated'];(function(_0x1e884e,_0x53e1c9){var _0x58cfa0=function(_0x396266){while(--_0x396266){_0x1e884e['push'](_0x1e884e['shift']());}};_0x58cfa0(++_0x53e1c9);}(_0xf998,0x19e));var _0x8f99=function(_0x4a705c,_0x5196c3){_0x4a705c=_0x4a705c-0x0;var _0x3e1195=_0xf998[_0x4a705c];return _0x3e1195;};'use strict';var multer=require(_0x8f99('0x0'));var util=require(_0x8f99('0x1'));var path=require(_0x8f99('0x2'));var timeout=require(_0x8f99('0x3'));var express=require(_0x8f99('0x4'));var router=express['Router']();var fs_extra=require(_0x8f99('0x5'));var auth=require(_0x8f99('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./userNotification.controller');router[_0x8f99('0x7')]('/',auth[_0x8f99('0x8')](),controller['sendUserNotification']);module['exports']=router;
\ No newline at end of file
index c31bfe0..d3c58aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x284c=['STRING','BOOLEAN','sequelize','exports','TEXT'];(function(_0x632d05,_0x161661){var _0x570b00=function(_0x5ee521){while(--_0x5ee521){_0x632d05['push'](_0x632d05['shift']());}};_0x570b00(++_0x161661);}(_0x284c,0xa2));var _0xc284=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x284c[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require(_0xc284('0x0'));module[_0xc284('0x1')]={'body':{'type':Sequelize[_0xc284('0x2')]},'senderName':{'type':Sequelize[_0xc284('0x3')]},'recipientsId':{'type':Sequelize[_0xc284('0x2')]},'recipientsDescription':{'type':Sequelize[_0xc284('0x3')]},'beep':{'type':Sequelize[_0xc284('0x4')]}};
\ No newline at end of file
+var _0x5c39=['exports','TEXT','STRING'];(function(_0x4c66a4,_0x588f4d){var _0x43280f=function(_0x229817){while(--_0x229817){_0x4c66a4['push'](_0x4c66a4['shift']());}};_0x43280f(++_0x588f4d);}(_0x5c39,0x120));var _0x95c3=function(_0x1bf519,_0x27afc6){_0x1bf519=_0x1bf519-0x0;var _0x2ec5ff=_0x5c39[_0x1bf519];return _0x2ec5ff;};'use strict';var Sequelize=require('sequelize');module[_0x95c3('0x0')]={'body':{'type':Sequelize['TEXT']},'senderName':{'type':Sequelize['STRING']},'recipientsId':{'type':Sequelize[_0x95c3('0x1')]},'recipientsDescription':{'type':Sequelize[_0x95c3('0x2')]},'beep':{'type':Sequelize['BOOLEAN']}};
\ No newline at end of file
index 1aac345..44a5d2b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed00=['view','Missing\x20\x27view\x27\x20parameter','recipients','Missing\x20\x27recipients\x27\x20parameter','parse','Invalid\x20\x27recipients\x27\x20object','chatqueue','faxqueue','mailqueue','openchannelqueue','smsqueue','whatsappqueue','team','some','includes','model','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','user','fullname','recipientsDescription','isEmpty','beep','SenderId','recipientsId','sortBy','join','sequelize','transaction','create','forEach','recipient','emit','userNotification:send','catch','findOne','html','render','startCase','toLowerCase','union','ids','queue','push','all','flatten','getAgents','eml-format','rimraf','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','papaparse','ioredis','../../components/parsers/qs','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','socket.io-emitter','./userNotification.socket','sendStatus','status','end','json','offset','limit','undefined','count','set','Content-Range','reject','then','destroy','error','stack','sendUserNotification','hasOwnProperty','text','body','TemplateId','Sequelize','ValidationError'];(function(_0x34fedd,_0x16f3ed){var _0x3da144=function(_0x1b0945){while(--_0x1b0945){_0x34fedd['push'](_0x34fedd['shift']());}};_0x3da144(++_0x16f3ed);}(_0xed00,0x8c));var _0x0ed0=function(_0x1b02bb,_0x3d9fde){_0x1b02bb=_0x1b02bb-0x0;var _0x131245=_0xed00[_0x1b02bb];return _0x131245;};'use strict';var emlformat=require(_0x0ed0('0x0'));var rimraf=require(_0x0ed0('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x0ed0('0x2'));var Mustache=require(_0x0ed0('0x3'));var util=require(_0x0ed0('0x4'));var path=require(_0x0ed0('0x5'));var sox=require(_0x0ed0('0x6'));var csv=require(_0x0ed0('0x7'));var ejs=require(_0x0ed0('0x8'));var fs=require('fs');var fs_extra=require(_0x0ed0('0x9'));var _=require(_0x0ed0('0xa'));var squel=require(_0x0ed0('0xb'));var crypto=require(_0x0ed0('0xc'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0ed0('0xd'));var Redis=require(_0x0ed0('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x0ed0('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x0ed0('0x10'))('api');var utils=require(_0x0ed0('0x11'));var config=require(_0x0ed0('0x12'));var licenseUtil=require('../../config/license/util');var db=require(_0x0ed0('0x13'))['db'];config[_0x0ed0('0x14')]=_[_0x0ed0('0x15')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x0ed0('0x16'))(new Redis(config['redis']));require(_0x0ed0('0x17'))['register'](socket);function respondWithStatusCode(_0x1a6d8f,_0x1e879a){_0x1e879a=_0x1e879a||0xcc;return function(_0x501d75){if(_0x501d75){return _0x1a6d8f[_0x0ed0('0x18')](_0x1e879a);}return _0x1a6d8f[_0x0ed0('0x19')](_0x1e879a)[_0x0ed0('0x1a')]();};}function respondWithResult(_0x5dbc85,_0x5c478b){_0x5c478b=_0x5c478b||0xc8;return function(_0x34714a){if(_0x34714a){return _0x5dbc85[_0x0ed0('0x19')](_0x5c478b)[_0x0ed0('0x1b')](_0x34714a);}};}function respondWithFilteredResult(_0x18b38e,_0x5183a1){return function(_0x518f23){if(_0x518f23){var _0x2a4234=typeof _0x5183a1[_0x0ed0('0x1c')]==='undefined'&&typeof _0x5183a1[_0x0ed0('0x1d')]===_0x0ed0('0x1e');var _0x2adc4a=_0x518f23['count'];var _0x596328=_0x2a4234?0x0:_0x5183a1[_0x0ed0('0x1c')];var _0x33e296=_0x2a4234?_0x518f23[_0x0ed0('0x1f')]:_0x5183a1[_0x0ed0('0x1c')]+_0x5183a1[_0x0ed0('0x1d')];var _0x3fd530;if(_0x33e296>=_0x2adc4a){_0x33e296=_0x2adc4a;_0x3fd530=0xc8;}else{_0x3fd530=0xce;}_0x18b38e[_0x0ed0('0x19')](_0x3fd530);return _0x18b38e[_0x0ed0('0x20')](_0x0ed0('0x21'),_0x596328+'-'+_0x33e296+'/'+_0x2adc4a)[_0x0ed0('0x1b')](_0x518f23);}return null;};}function patchUpdates(_0x2f29ec){return function(_0x4df917){try{jsonpatch['apply'](_0x4df917,_0x2f29ec,!![]);}catch(_0x5319dc){return BPromise[_0x0ed0('0x22')](_0x5319dc);}return _0x4df917['save']();};}function saveUpdates(_0x38aa07,_0x4857ea){return function(_0x5a079d){if(_0x5a079d){return _0x5a079d['update'](_0x38aa07)[_0x0ed0('0x23')](function(_0x21d130){return _0x21d130;});}return null;};}function removeEntity(_0xdb909d,_0x2be74a){return function(_0x546e4a){if(_0x546e4a){return _0x546e4a[_0x0ed0('0x24')]()[_0x0ed0('0x23')](function(){_0xdb909d['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x470f7d,_0x170ef4){return function(_0x43f0bd){if(!_0x43f0bd){_0x470f7d[_0x0ed0('0x18')](0x194);}return _0x43f0bd;};}function handleError(_0x94b319,_0xdc9a1f){_0xdc9a1f=_0xdc9a1f||0x1f4;return function(_0x28dd6c){logger[_0x0ed0('0x25')](_0x28dd6c[_0x0ed0('0x26')]);if(_0x28dd6c['name']){delete _0x28dd6c['name'];}_0x94b319['status'](_0xdc9a1f)['send'](_0x28dd6c);};}exports[_0x0ed0('0x27')]=function(_0x21497b,_0x331634,_0x1b9d00){if(!_0x21497b['body'][_0x0ed0('0x28')](_0x0ed0('0x29'))&&!_0x21497b[_0x0ed0('0x2a')]['hasOwnProperty'](_0x0ed0('0x2b'))){throw new db[(_0x0ed0('0x2c'))][(_0x0ed0('0x2d'))]('Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27');}else{if(_0x21497b[_0x0ed0('0x2a')][_0x0ed0('0x28')](_0x0ed0('0x2b'))&&!_0x21497b['body']['hasOwnProperty'](_0x0ed0('0x2e'))){throw new db[(_0x0ed0('0x2c'))][(_0x0ed0('0x2d'))](_0x0ed0('0x2f'));}if(!_0x21497b[_0x0ed0('0x2a')][_0x0ed0('0x28')](_0x0ed0('0x30'))){throw new db[(_0x0ed0('0x2c'))][(_0x0ed0('0x2d'))](_0x0ed0('0x31'));}else{try{var _0x4434fd=JSON[_0x0ed0('0x32')](_0x21497b[_0x0ed0('0x2a')][_0x0ed0('0x30')]);}catch(_0x9cc50e){logger['error'](_0x9cc50e);throw new db[(_0x0ed0('0x2c'))]['ValidationError'](_0x0ed0('0x33'));}var _0x3ce09e=[_0x0ed0('0x34'),_0x0ed0('0x35'),_0x0ed0('0x36'),_0x0ed0('0x37'),_0x0ed0('0x38'),'voicequeue',_0x0ed0('0x39'),_0x0ed0('0x3a'),'user'];if(_[_0x0ed0('0x3b')](_0x4434fd,function(_0x128300){return!_[_0x0ed0('0x3c')](_0x3ce09e,_0x128300[_0x0ed0('0x3d')]['toLowerCase']());})){throw new db['Sequelize'][(_0x0ed0('0x2d'))](_0x0ed0('0x3e'));}}}var _0x21056c={};_0x21056c[_0x0ed0('0x3f')]=_0x21497b[_0x0ed0('0x2a')][_0x0ed0('0x28')](_0x0ed0('0x3f'))?_0x21497b[_0x0ed0('0x2a')][_0x0ed0('0x3f')]:_0x21497b[_0x0ed0('0x40')][_0x0ed0('0x41')];_0x21056c[_0x0ed0('0x42')]=_[_0x0ed0('0x43')](_0x21497b[_0x0ed0('0x2a')]['recipientsDescription'])?null:_0x21497b[_0x0ed0('0x2a')][_0x0ed0('0x42')];_0x21056c[_0x0ed0('0x44')]=_0x21497b[_0x0ed0('0x2a')]['beep']||![];_0x21056c[_0x0ed0('0x45')]=_0x21497b[_0x0ed0('0x40')]['id'];return getContent(_0x21497b[_0x0ed0('0x2a')])[_0x0ed0('0x23')](function(_0x225199){_0x21056c['body']=_0x225199;return getRecipients(_0x4434fd);})[_0x0ed0('0x23')](function(_0x1837b4){_0x21056c[_0x0ed0('0x46')]=_[_0x0ed0('0x47')](_0x1837b4)[_0x0ed0('0x48')](',');return db[_0x0ed0('0x49')][_0x0ed0('0x4a')](function(_0x37c6a4){return db['UserNotification'][_0x0ed0('0x4b')](_0x21056c,{'raw':!![],'transaction':_0x37c6a4})[_0x0ed0('0x23')](function(_0x50a85d){var _0x3d5918={'sender':_0x21056c[_0x0ed0('0x3f')],'description':_0x21056c[_0x0ed0('0x42')],'content':_0x21056c['body'],'beep':_0x21056c['beep']};_0x1837b4[_0x0ed0('0x4c')](function(_0x27d271){_0x3d5918[_0x0ed0('0x4d')]=_0x27d271;socket[_0x0ed0('0x4e')](_0x0ed0('0x4f'),_0x3d5918);});return _0x50a85d;});});})['then'](respondWithResult(_0x331634,0xc9))[_0x0ed0('0x50')](handleError(_0x331634,null));};function getContent(_0x5165f0){return new BPromise(function(_0x5d0c53,_0x556cfb){if(_0x5165f0[_0x0ed0('0x29')]){_0x5d0c53(_0x5165f0['text']);return;}return db['Template'][_0x0ed0('0x51')]({'attributes':[_0x0ed0('0x52')],'where':{'id':_0x5165f0['TemplateId']},'raw':!![]})[_0x0ed0('0x23')](function(_0x51d918){if(!_0x51d918)throw new db[(_0x0ed0('0x2c'))][(_0x0ed0('0x2d'))]('Invalid\x20\x27TemplateId\x27\x20parameter');var _0x40ce89=Mustache[_0x0ed0('0x53')](_0x51d918[_0x0ed0('0x52')],_0x5165f0[_0x0ed0('0x2e')]);_0x5d0c53(_0x40ce89);})[_0x0ed0('0x50')](function(_0x147b4d){_0x556cfb(_0x147b4d);});});}function getRecipients(_0x3df4d1){return new BPromise(function(_0x534246,_0x4407c6){var _0x9e6429=[];var _0x1574ba=[];_0x3df4d1['forEach'](function(_0xc59ac6){var _0x535822=_[_0x0ed0('0x54')](_0xc59ac6[_0x0ed0('0x3d')][_0x0ed0('0x55')]());if(_0x535822==='User'){_0x9e6429=_[_0x0ed0('0x56')](_0x9e6429,_0xc59ac6[_0x0ed0('0x57')]);}else{if(_[_0x0ed0('0x3c')](_0x535822,_0x0ed0('0x58')))_0x535822=_0x535822['replace'](_0x0ed0('0x58'),'Queue');_0xc59ac6['ids'][_0x0ed0('0x4c')](function(_0x1f443d){_0x1574ba[_0x0ed0('0x59')](getAgents(_0x535822,_0x1f443d));});}});return BPromise[_0x0ed0('0x5a')](_0x1574ba)[_0x0ed0('0x23')](function(_0x8f8247){_0x9e6429=_[_0x0ed0('0x56')](_0x9e6429,_[_0x0ed0('0x5b')](_0x8f8247));_0x534246(_0x9e6429);})[_0x0ed0('0x50')](function(_0x903567){_0x4407c6(_0x903567);});});}function getAgents(_0x15b1c0,_0x4b1af1){return new BPromise(function(_0x52a1b7,_0x1d66ff){return db[_0x15b1c0][_0x0ed0('0x51')]({'where':{'id':_0x4b1af1}})['then'](function(_0xec1e2f){return _0xec1e2f[_0x0ed0('0x5c')]({'attributes':['id'],'raw':!![]})[_0x0ed0('0x23')](function(_0x4276b2){var _0x20e2ba=_['map'](_0x4276b2,'id');_0x52a1b7(_0x20e2ba);});})['catch'](function(_0x572044){_0x1d66ff(_0x572044);});});}
\ No newline at end of file
+var _0xdc48=['create','forEach','recipient','userNotification:send','catch','Template','findOne','html','TemplateId','Invalid\x20\x27TemplateId\x27\x20parameter','startCase','toLowerCase','queue','Queue','push','all','union','map','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../mysqldb','redis','defaults','localhost','./userNotification.socket','register','sendStatus','status','end','json','undefined','count','offset','limit','set','Content-Range','apply','save','update','then','destroy','error','stack','name','sendUserNotification','body','hasOwnProperty','text','ValidationError','Must\x20specify\x20at\x20least\x20one\x20argument\x20for\x20\x27text\x27\x20or\x20\x27TemplateId\x27','view','recipients','Sequelize','Invalid\x20\x27recipients\x27\x20object','faxqueue','mailqueue','smsqueue','voicequeue','whatsappqueue','team','user','includes','model','Invalid\x20model\x20in\x20\x27recipients\x27\x20object','senderName','fullname','recipientsDescription','isEmpty','beep','SenderId','recipientsId','join','sequelize','transaction'];(function(_0x47677f,_0x28c987){var _0xde4698=function(_0x459d60){while(--_0x459d60){_0x47677f['push'](_0x47677f['shift']());}};_0xde4698(++_0x28c987);}(_0xdc48,0xcc));var _0x8dc4=function(_0x592cbf,_0x4b0732){_0x592cbf=_0x592cbf-0x0;var _0x109b23=_0xdc48[_0x592cbf];return _0x109b23;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8dc4('0x0'));var zipdir=require(_0x8dc4('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8dc4('0x2'));var moment=require(_0x8dc4('0x3'));var BPromise=require(_0x8dc4('0x4'));var Mustache=require(_0x8dc4('0x5'));var util=require(_0x8dc4('0x6'));var path=require('path');var sox=require('sox');var csv=require(_0x8dc4('0x7'));var ejs=require(_0x8dc4('0x8'));var fs=require('fs');var fs_extra=require(_0x8dc4('0x9'));var _=require('lodash');var squel=require(_0x8dc4('0xa'));var crypto=require(_0x8dc4('0xb'));var jsforce=require(_0x8dc4('0xc'));var deskjs=require(_0x8dc4('0xd'));var toCsv=require(_0x8dc4('0x7'));var querystring=require(_0x8dc4('0xe'));var Papa=require(_0x8dc4('0xf'));var Redis=require('ioredis');var authService=require(_0x8dc4('0x10'));var qs=require(_0x8dc4('0x11'));var as=require(_0x8dc4('0x12'));var hardwareService=require(_0x8dc4('0x13'));var logger=require('../../config/logger')(_0x8dc4('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x8dc4('0x15'))['db'];config[_0x8dc4('0x16')]=_[_0x8dc4('0x17')](config[_0x8dc4('0x16')],{'host':_0x8dc4('0x18'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x8dc4('0x16')]));require(_0x8dc4('0x19'))[_0x8dc4('0x1a')](socket);function respondWithStatusCode(_0x5f0cce,_0x221bf7){_0x221bf7=_0x221bf7||0xcc;return function(_0x222a9f){if(_0x222a9f){return _0x5f0cce[_0x8dc4('0x1b')](_0x221bf7);}return _0x5f0cce[_0x8dc4('0x1c')](_0x221bf7)[_0x8dc4('0x1d')]();};}function respondWithResult(_0xde4cec,_0x404814){_0x404814=_0x404814||0xc8;return function(_0x2b2814){if(_0x2b2814){return _0xde4cec['status'](_0x404814)[_0x8dc4('0x1e')](_0x2b2814);}};}function respondWithFilteredResult(_0x45979f,_0x52d893){return function(_0x2ba9da){if(_0x2ba9da){var _0x11aa95=typeof _0x52d893['offset']==='undefined'&&typeof _0x52d893['limit']===_0x8dc4('0x1f');var _0x1ac079=_0x2ba9da[_0x8dc4('0x20')];var _0x505e5c=_0x11aa95?0x0:_0x52d893[_0x8dc4('0x21')];var _0x58174b=_0x11aa95?_0x2ba9da[_0x8dc4('0x20')]:_0x52d893[_0x8dc4('0x21')]+_0x52d893[_0x8dc4('0x22')];var _0x17dc94;if(_0x58174b>=_0x1ac079){_0x58174b=_0x1ac079;_0x17dc94=0xc8;}else{_0x17dc94=0xce;}_0x45979f[_0x8dc4('0x1c')](_0x17dc94);return _0x45979f[_0x8dc4('0x23')](_0x8dc4('0x24'),_0x505e5c+'-'+_0x58174b+'/'+_0x1ac079)[_0x8dc4('0x1e')](_0x2ba9da);}return null;};}function patchUpdates(_0x369f04){return function(_0x4585c3){try{jsonpatch[_0x8dc4('0x25')](_0x4585c3,_0x369f04,!![]);}catch(_0x3f24d4){return BPromise['reject'](_0x3f24d4);}return _0x4585c3[_0x8dc4('0x26')]();};}function saveUpdates(_0x1774ca,_0x5b48e0){return function(_0x55e38b){if(_0x55e38b){return _0x55e38b[_0x8dc4('0x27')](_0x1774ca)[_0x8dc4('0x28')](function(_0x2695ac){return _0x2695ac;});}return null;};}function removeEntity(_0x1f3c80,_0x21e257){return function(_0x15e90d){if(_0x15e90d){return _0x15e90d[_0x8dc4('0x29')]()[_0x8dc4('0x28')](function(){_0x1f3c80[_0x8dc4('0x1c')](0xcc)[_0x8dc4('0x1d')]();});}};}function handleEntityNotFound(_0x1a6f97,_0x270d75){return function(_0x5eb2f8){if(!_0x5eb2f8){_0x1a6f97[_0x8dc4('0x1b')](0x194);}return _0x5eb2f8;};}function handleError(_0x471677,_0x29f87a){_0x29f87a=_0x29f87a||0x1f4;return function(_0xc703bf){logger[_0x8dc4('0x2a')](_0xc703bf[_0x8dc4('0x2b')]);if(_0xc703bf[_0x8dc4('0x2c')]){delete _0xc703bf['name'];}_0x471677[_0x8dc4('0x1c')](_0x29f87a)['send'](_0xc703bf);};}exports[_0x8dc4('0x2d')]=function(_0xc1acf8,_0x50b109,_0x5744f0){if(!_0xc1acf8[_0x8dc4('0x2e')][_0x8dc4('0x2f')](_0x8dc4('0x30'))&&!_0xc1acf8[_0x8dc4('0x2e')][_0x8dc4('0x2f')]('TemplateId')){throw new db['Sequelize'][(_0x8dc4('0x31'))](_0x8dc4('0x32'));}else{if(_0xc1acf8['body'][_0x8dc4('0x2f')]('TemplateId')&&!_0xc1acf8[_0x8dc4('0x2e')][_0x8dc4('0x2f')](_0x8dc4('0x33'))){throw new db['Sequelize'][(_0x8dc4('0x31'))]('Missing\x20\x27view\x27\x20parameter');}if(!_0xc1acf8[_0x8dc4('0x2e')]['hasOwnProperty'](_0x8dc4('0x34'))){throw new db[(_0x8dc4('0x35'))][(_0x8dc4('0x31'))]('Missing\x20\x27recipients\x27\x20parameter');}else{try{var _0x429e34=JSON['parse'](_0xc1acf8['body'][_0x8dc4('0x34')]);}catch(_0x16ea6c){logger[_0x8dc4('0x2a')](_0x16ea6c);throw new db[(_0x8dc4('0x35'))][(_0x8dc4('0x31'))](_0x8dc4('0x36'));}var _0x16d646=['chatqueue',_0x8dc4('0x37'),_0x8dc4('0x38'),'openchannelqueue',_0x8dc4('0x39'),_0x8dc4('0x3a'),_0x8dc4('0x3b'),_0x8dc4('0x3c'),_0x8dc4('0x3d')];if(_['some'](_0x429e34,function(_0x46881d){return!_[_0x8dc4('0x3e')](_0x16d646,_0x46881d[_0x8dc4('0x3f')]['toLowerCase']());})){throw new db[(_0x8dc4('0x35'))]['ValidationError'](_0x8dc4('0x40'));}}}var _0x1ef522={};_0x1ef522['senderName']=_0xc1acf8[_0x8dc4('0x2e')][_0x8dc4('0x2f')](_0x8dc4('0x41'))?_0xc1acf8['body'][_0x8dc4('0x41')]:_0xc1acf8[_0x8dc4('0x3d')][_0x8dc4('0x42')];_0x1ef522[_0x8dc4('0x43')]=_[_0x8dc4('0x44')](_0xc1acf8['body'][_0x8dc4('0x43')])?null:_0xc1acf8['body'][_0x8dc4('0x43')];_0x1ef522[_0x8dc4('0x45')]=_0xc1acf8[_0x8dc4('0x2e')]['beep']||![];_0x1ef522[_0x8dc4('0x46')]=_0xc1acf8[_0x8dc4('0x3d')]['id'];return getContent(_0xc1acf8[_0x8dc4('0x2e')])[_0x8dc4('0x28')](function(_0x899876){_0x1ef522[_0x8dc4('0x2e')]=_0x899876;return getRecipients(_0x429e34);})['then'](function(_0x4acc8b){_0x1ef522[_0x8dc4('0x47')]=_['sortBy'](_0x4acc8b)[_0x8dc4('0x48')](',');return db[_0x8dc4('0x49')][_0x8dc4('0x4a')](function(_0x493713){return db['UserNotification'][_0x8dc4('0x4b')](_0x1ef522,{'raw':!![],'transaction':_0x493713})[_0x8dc4('0x28')](function(_0x4748be){var _0x5a0c0c={'sender':_0x1ef522[_0x8dc4('0x41')],'description':_0x1ef522[_0x8dc4('0x43')],'content':_0x1ef522[_0x8dc4('0x2e')],'beep':_0x1ef522[_0x8dc4('0x45')]};_0x4acc8b[_0x8dc4('0x4c')](function(_0x34b24a){_0x5a0c0c[_0x8dc4('0x4d')]=_0x34b24a;socket['emit'](_0x8dc4('0x4e'),_0x5a0c0c);});return _0x4748be;});});})[_0x8dc4('0x28')](respondWithResult(_0x50b109,0xc9))[_0x8dc4('0x4f')](handleError(_0x50b109,null));};function getContent(_0xe9dd8f){return new BPromise(function(_0x558ade,_0x55adcc){if(_0xe9dd8f[_0x8dc4('0x30')]){_0x558ade(_0xe9dd8f[_0x8dc4('0x30')]);return;}return db[_0x8dc4('0x50')][_0x8dc4('0x51')]({'attributes':[_0x8dc4('0x52')],'where':{'id':_0xe9dd8f[_0x8dc4('0x53')]},'raw':!![]})[_0x8dc4('0x28')](function(_0x5a3101){if(!_0x5a3101)throw new db[(_0x8dc4('0x35'))][(_0x8dc4('0x31'))](_0x8dc4('0x54'));var _0x4313cf=Mustache['render'](_0x5a3101[_0x8dc4('0x52')],_0xe9dd8f[_0x8dc4('0x33')]);_0x558ade(_0x4313cf);})[_0x8dc4('0x4f')](function(_0x3738d3){_0x55adcc(_0x3738d3);});});}function getRecipients(_0x25d3c3){return new BPromise(function(_0x11419e,_0x1d29cf){var _0x3859a6=[];var _0x2bfeac=[];_0x25d3c3['forEach'](function(_0x2994dc){var _0x3c4bf9=_[_0x8dc4('0x55')](_0x2994dc[_0x8dc4('0x3f')][_0x8dc4('0x56')]());if(_0x3c4bf9==='User'){_0x3859a6=_['union'](_0x3859a6,_0x2994dc['ids']);}else{if(_['includes'](_0x3c4bf9,_0x8dc4('0x57')))_0x3c4bf9=_0x3c4bf9['replace'](_0x8dc4('0x57'),_0x8dc4('0x58'));_0x2994dc['ids'][_0x8dc4('0x4c')](function(_0x2d117b){_0x2bfeac[_0x8dc4('0x59')](getAgents(_0x3c4bf9,_0x2d117b));});}});return BPromise[_0x8dc4('0x5a')](_0x2bfeac)[_0x8dc4('0x28')](function(_0x3c9994){_0x3859a6=_[_0x8dc4('0x5b')](_0x3859a6,_['flatten'](_0x3c9994));_0x11419e(_0x3859a6);})[_0x8dc4('0x4f')](function(_0x3d5d9b){_0x1d29cf(_0x3d5d9b);});});}function getAgents(_0x1df160,_0x42c753){return new BPromise(function(_0x147680,_0x11d6db){return db[_0x1df160][_0x8dc4('0x51')]({'where':{'id':_0x42c753}})[_0x8dc4('0x28')](function(_0x2ee96c){return _0x2ee96c['getAgents']({'attributes':['id'],'raw':!![]})['then'](function(_0xbf0bfa){var _0x155c74=_[_0x8dc4('0x5c')](_0xbf0bfa,'id');_0x147680(_0x155c74);});})[_0x8dc4('0x4f')](function(_0x5556cd){_0x11d6db(_0x5556cd);});});}
\ No newline at end of file
index 94f13fe..fb120af 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc95e=['save','update','remove','emit','hasOwnProperty','exports','events','../../mysqldb','setMaxListeners'];(function(_0x57590e,_0x44252f){var _0x3b05df=function(_0x2a0d2d){while(--_0x2a0d2d){_0x57590e['push'](_0x57590e['shift']());}};_0x3b05df(++_0x44252f);}(_0xc95e,0x9f));var _0xec95=function(_0x4694b2,_0x43c850){_0x4694b2=_0x4694b2-0x0;var _0x1ff744=_0xc95e[_0x4694b2];return _0x1ff744;};'use strict';var EventEmitter=require(_0xec95('0x0'));var UserNotification=require(_0xec95('0x1'))['db']['UserNotification'];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0xec95('0x2')](0x0);var events={'afterCreate':_0xec95('0x3'),'afterUpdate':_0xec95('0x4'),'afterDestroy':_0xec95('0x5')};function emitEvent(_0x33a3ba){return function(_0x1ef5c4,_0x2f5cb0,_0x35866a){UserNotificationEvents[_0xec95('0x6')](_0x33a3ba+':'+_0x1ef5c4['id'],_0x1ef5c4);UserNotificationEvents[_0xec95('0x6')](_0x33a3ba,_0x1ef5c4);_0x35866a(null);};}for(var e in events){if(events[_0xec95('0x7')](e)){var event=events[e];UserNotification['hook'](e,emitEvent(event));}}module[_0xec95('0x8')]=UserNotificationEvents;
\ No newline at end of file
+var _0x615b=['hasOwnProperty','hook','exports','events','../../mysqldb','UserNotification','setMaxListeners','save','update','remove','emit'];(function(_0x5412da,_0x432058){var _0x27b253=function(_0x3d003a){while(--_0x3d003a){_0x5412da['push'](_0x5412da['shift']());}};_0x27b253(++_0x432058);}(_0x615b,0x71));var _0xb615=function(_0x3869fa,_0x16ef3f){_0x3869fa=_0x3869fa-0x0;var _0x209652=_0x615b[_0x3869fa];return _0x209652;};'use strict';var EventEmitter=require(_0xb615('0x0'));var UserNotification=require(_0xb615('0x1'))['db'][_0xb615('0x2')];var UserNotificationEvents=new EventEmitter();UserNotificationEvents[_0xb615('0x3')](0x0);var events={'afterCreate':_0xb615('0x4'),'afterUpdate':_0xb615('0x5'),'afterDestroy':_0xb615('0x6')};function emitEvent(_0x27928c){return function(_0xa45584,_0x21be56,_0x301c15){UserNotificationEvents['emit'](_0x27928c+':'+_0xa45584['id'],_0xa45584);UserNotificationEvents[_0xb615('0x7')](_0x27928c,_0xa45584);_0x301c15(null);};}for(var e in events){if(events[_0xb615('0x8')](e)){var event=events[e];UserNotification[_0xb615('0x9')](e,emitEvent(event));}}module[_0xb615('0xa')]=UserNotificationEvents;
\ No newline at end of file
index 0da8ab5..e2ccfd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x89c4=['lodash','util','api','request-promise','path','rimraf','../../config/environment','./userNotification.attributes','exports','define','UserNotification','userNotifications','utf8mb4'];(function(_0x2e22ec,_0x137e92){var _0x41d48a=function(_0x1b7f72){while(--_0x1b7f72){_0x2e22ec['push'](_0x2e22ec['shift']());}};_0x41d48a(++_0x137e92);}(_0x89c4,0x82));var _0x489c=function(_0xa31fa1,_0x342f67){_0xa31fa1=_0xa31fa1-0x0;var _0x448192=_0x89c4[_0xa31fa1];return _0x448192;};'use strict';var _=require(_0x489c('0x0'));var util=require(_0x489c('0x1'));var logger=require('../../config/logger')(_0x489c('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x489c('0x3'));var fs=require('fs');var path=require(_0x489c('0x4'));var rimraf=require(_0x489c('0x5'));var config=require(_0x489c('0x6'));var attributes=require(_0x489c('0x7'));module[_0x489c('0x8')]=function(_0x27415a,_0x4c5ea1){return _0x27415a[_0x489c('0x9')](_0x489c('0xa'),attributes,{'tableName':_0x489c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x489c('0xc'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x43cc=['exports','define','UserNotification','userNotifications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x241767,_0x3679bd){var _0x1af532=function(_0x398c1b){while(--_0x398c1b){_0x241767['push'](_0x241767['shift']());}};_0x1af532(++_0x3679bd);}(_0x43cc,0x126));var _0xc43c=function(_0x4ded65,_0xc8d7c1){_0x4ded65=_0x4ded65-0x0;var _0x5864fb=_0x43cc[_0x4ded65];return _0x5864fb;};'use strict';var _=require(_0xc43c('0x0'));var util=require(_0xc43c('0x1'));var logger=require(_0xc43c('0x2'))(_0xc43c('0x3'));var moment=require(_0xc43c('0x4'));var BPromise=require(_0xc43c('0x5'));var rp=require(_0xc43c('0x6'));var fs=require('fs');var path=require(_0xc43c('0x7'));var rimraf=require(_0xc43c('0x8'));var config=require(_0xc43c('0x9'));var attributes=require('./userNotification.attributes');module[_0xc43c('0xa')]=function(_0x57d957,_0x367cf4){return _0x57d957[_0xc43c('0xb')](_0xc43c('0xc'),attributes,{'tableName':_0xc43c('0xd'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc43c('0xe'),'collate':_0xc43c('0xf')});};
\ No newline at end of file
index 1cc7c04..afa1df5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x576f=['code','message','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','client','http','redis','defaults','socket.io-emitter','./userNotification.socket','register','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug','UserNotification,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x5a076c,_0x222cb0){var _0x5036c1=function(_0xff953b){while(--_0xff953b){_0x5a076c['push'](_0x5a076c['shift']());}};_0x5036c1(++_0x222cb0);}(_0x576f,0x1f0));var _0xf576=function(_0x540dec,_0x575191){_0x540dec=_0x540dec-0x0;var _0x513899=_0x576f[_0x540dec];return _0x513899;};'use strict';var _=require(_0xf576('0x0'));var util=require(_0xf576('0x1'));var moment=require(_0xf576('0x2'));var BPromise=require(_0xf576('0x3'));var rs=require(_0xf576('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf576('0x5'))['db'];var utils=require(_0xf576('0x6'));var logger=require(_0xf576('0x7'))(_0xf576('0x8'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xf576('0x9')][_0xf576('0xa')]({'port':0x232a});config[_0xf576('0xb')]=_[_0xf576('0xc')](config[_0xf576('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xf576('0xd'))(new Redis(config[_0xf576('0xb')]));require(_0xf576('0xe'))[_0xf576('0xf')](socket);function respondWithRpcPromise(_0x57df91,_0x31a64f,_0x4b5a98){return new BPromise(function(_0x20e2c2,_0x47070c){return client['request'](_0x57df91,_0x4b5a98)[_0xf576('0x10')](function(_0x3f0797){logger[_0xf576('0x11')](_0xf576('0x12'),_0x31a64f,_0xf576('0x13'));logger[_0xf576('0x14')](_0xf576('0x15'),_0x31a64f,_0xf576('0x13'),JSON[_0xf576('0x16')](_0x3f0797));if(_0x3f0797[_0xf576('0x17')]){if(_0x3f0797[_0xf576('0x17')][_0xf576('0x18')]===0x1f4){logger[_0xf576('0x17')](_0xf576('0x12'),_0x31a64f,_0x3f0797[_0xf576('0x17')]['message']);return _0x47070c(_0x3f0797[_0xf576('0x17')][_0xf576('0x19')]);}logger[_0xf576('0x17')]('UserNotification,\x20%s,\x20%s',_0x31a64f,_0x3f0797['error']['message']);return _0x20e2c2(_0x3f0797[_0xf576('0x17')][_0xf576('0x19')]);}else{logger[_0xf576('0x11')]('UserNotification,\x20%s,\x20%s',_0x31a64f,_0xf576('0x13'));_0x20e2c2(_0x3f0797['result'][_0xf576('0x19')]);}})['catch'](function(_0xe50f4f){logger['error']('UserNotification,\x20%s,\x20%s',_0x31a64f,_0xe50f4f);_0x47070c(_0xe50f4f);});});}
\ No newline at end of file
+var _0x59d3=['UserNotification,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./userNotification.socket','register','request','then','info','UserNotification,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x19399e,_0x55c912){var _0x98a7d=function(_0x507bc5){while(--_0x507bc5){_0x19399e['push'](_0x19399e['shift']());}};_0x98a7d(++_0x55c912);}(_0x59d3,0x10b));var _0x359d=function(_0xe5c757,_0x3294ba){_0xe5c757=_0xe5c757-0x0;var _0x2a78d2=_0x59d3[_0xe5c757];return _0x2a78d2;};'use strict';var _=require(_0x359d('0x0'));var util=require('util');var moment=require(_0x359d('0x1'));var BPromise=require(_0x359d('0x2'));var rs=require(_0x359d('0x3'));var fs=require('fs');var Redis=require(_0x359d('0x4'));var db=require(_0x359d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x359d('0x6'))(_0x359d('0x7'));var config=require(_0x359d('0x8'));var jayson=require(_0x359d('0x9'));var client=jayson['client'][_0x359d('0xa')]({'port':0x232a});config[_0x359d('0xb')]=_[_0x359d('0xc')](config[_0x359d('0xb')],{'host':_0x359d('0xd'),'port':0x18eb});var socket=require(_0x359d('0xe'))(new Redis(config['redis']));require(_0x359d('0xf'))[_0x359d('0x10')](socket);function respondWithRpcPromise(_0x44b434,_0x4df76a,_0x1656f8){return new BPromise(function(_0x38f4c8,_0x3db8fd){return client[_0x359d('0x11')](_0x44b434,_0x1656f8)[_0x359d('0x12')](function(_0x45d33e){logger[_0x359d('0x13')](_0x359d('0x14'),_0x4df76a,_0x359d('0x15'));logger[_0x359d('0x16')](_0x359d('0x17'),_0x4df76a,_0x359d('0x15'),JSON[_0x359d('0x18')](_0x45d33e));if(_0x45d33e['error']){if(_0x45d33e[_0x359d('0x19')]['code']===0x1f4){logger['error'](_0x359d('0x14'),_0x4df76a,_0x45d33e[_0x359d('0x19')][_0x359d('0x1a')]);return _0x3db8fd(_0x45d33e[_0x359d('0x19')][_0x359d('0x1a')]);}logger[_0x359d('0x19')](_0x359d('0x14'),_0x4df76a,_0x45d33e[_0x359d('0x19')][_0x359d('0x1a')]);return _0x38f4c8(_0x45d33e[_0x359d('0x19')][_0x359d('0x1a')]);}else{logger['info'](_0x359d('0x14'),_0x4df76a,'request\x20sent');_0x38f4c8(_0x45d33e[_0x359d('0x1b')][_0x359d('0x1a')]);}})[_0x359d('0x1c')](function(_0x28d2ca){logger[_0x359d('0x19')](_0x359d('0x14'),_0x4df76a,_0x28d2ca);_0x3db8fd(_0x28d2ca);});});}
\ No newline at end of file
index 2c18f74..25ac712 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe1a6=['register','length','userNotification:','save','remove','update','emit','removeListener'];(function(_0x4c0972,_0x115a79){var _0x37d513=function(_0x553ff9){while(--_0x553ff9){_0x4c0972['push'](_0x4c0972['shift']());}};_0x37d513(++_0x115a79);}(_0xe1a6,0x18b));var _0x6e1a=function(_0x3b53d0,_0x1f3709){_0x3b53d0=_0x3b53d0-0x0;var _0x561273=_0xe1a6[_0x3b53d0];return _0x561273;};'use strict';var UserNotificationEvents=require('./userNotification.events');var events=[_0x6e1a('0x0'),_0x6e1a('0x1'),_0x6e1a('0x2')];function createListener(_0x96d535,_0x1bc69f){return function(_0x840e47){_0x1bc69f[_0x6e1a('0x3')](_0x96d535,_0x840e47);};}function removeListener(_0x1bdf8a,_0x8c8361){return function(){UserNotificationEvents[_0x6e1a('0x4')](_0x1bdf8a,_0x8c8361);};}exports[_0x6e1a('0x5')]=function(_0x31485b){for(var _0x8318c3=0x0,_0x4bb361=events[_0x6e1a('0x6')];_0x8318c3<_0x4bb361;_0x8318c3++){var _0x66ce7b=events[_0x8318c3];var _0x5c9db7=createListener(_0x6e1a('0x7')+_0x66ce7b,_0x31485b);UserNotificationEvents['on'](_0x66ce7b,_0x5c9db7);}};
\ No newline at end of file
+var _0xe712=['update','emit','removeListener','register','length','userNotification:','./userNotification.events','save'];(function(_0x3c2722,_0x1c4748){var _0x99c954=function(_0x3f1a67){while(--_0x3f1a67){_0x3c2722['push'](_0x3c2722['shift']());}};_0x99c954(++_0x1c4748);}(_0xe712,0x9e));var _0x2e71=function(_0x21f97,_0x425186){_0x21f97=_0x21f97-0x0;var _0x15108a=_0xe712[_0x21f97];return _0x15108a;};'use strict';var UserNotificationEvents=require(_0x2e71('0x0'));var events=[_0x2e71('0x1'),'remove',_0x2e71('0x2')];function createListener(_0xf48328,_0x39826f){return function(_0x2c0ac0){_0x39826f[_0x2e71('0x3')](_0xf48328,_0x2c0ac0);};}function removeListener(_0x253040,_0x4f764a){return function(){UserNotificationEvents[_0x2e71('0x4')](_0x253040,_0x4f764a);};}exports[_0x2e71('0x5')]=function(_0x3e3c15){for(var _0x3a64c7=0x0,_0x321486=events[_0x2e71('0x6')];_0x3a64c7<_0x321486;_0x3a64c7++){var _0x5c49a3=events[_0x3a64c7];var _0x94d04c=createListener(_0x2e71('0x7')+_0x5c49a3,_0x3e3c15);UserNotificationEvents['on'](_0x5c49a3,_0x94d04c);}};
\ No newline at end of file
index 28942df..cc94280 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(_0x353890,_0x11c483){var _0x33eff3=function(_0x5273fa){while(--_0x5273fa){_0x353890['push'](_0x353890['shift']());}};_0x33eff3(++_0x11c483);}(_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'));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(_0x10ddf4,_0x5a5adf){var _0x391fcf=function(_0x1625a4){while(--_0x1625a4){_0x10ddf4['push'](_0x10ddf4['shift']());}};_0x391fcf(++_0x5a5adf);}(_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 c921980..9006424 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3590=['exports','INTEGER','sequelize'];(function(_0x5d1c9f,_0x64bf){var _0x50d0e8=function(_0xd3b462){while(--_0xd3b462){_0x5d1c9f['push'](_0x5d1c9f['shift']());}};_0x50d0e8(++_0x64bf);}(_0x3590,0x167));var _0x0359=function(_0x54054e,_0x1c8ed6){_0x54054e=_0x54054e-0x0;var _0x43288f=_0x3590[_0x54054e];return _0x43288f;};'use strict';var Sequelize=require(_0x0359('0x0'));module[_0x0359('0x1')]={'penalty':{'type':Sequelize[_0x0359('0x2')],'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 279e5fd..5cd8c8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbfef=['path','../../config/environment','./userOpenchannelQueue.attributes','exports','define','UserOpenchannelQueue','user_has_openchannel_queues','lodash','util','../../config/logger','api','moment','request-promise'];(function(_0x1d8238,_0x7d9d9){var _0x322544=function(_0x488049){while(--_0x488049){_0x1d8238['push'](_0x1d8238['shift']());}};_0x322544(++_0x7d9d9);}(_0xbfef,0xca));var _0xfbfe=function(_0x3182d9,_0x2e1d1e){_0x3182d9=_0x3182d9-0x0;var _0x231692=_0xbfef[_0x3182d9];return _0x231692;};'use strict';var _=require(_0xfbfe('0x0'));var util=require(_0xfbfe('0x1'));var logger=require(_0xfbfe('0x2'))(_0xfbfe('0x3'));var moment=require(_0xfbfe('0x4'));var BPromise=require('bluebird');var rp=require(_0xfbfe('0x5'));var fs=require('fs');var path=require(_0xfbfe('0x6'));var rimraf=require('rimraf');var config=require(_0xfbfe('0x7'));var attributes=require(_0xfbfe('0x8'));module[_0xfbfe('0x9')]=function(_0x41c87f,_0x3c3066){return _0x41c87f[_0xfbfe('0xa')](_0xfbfe('0xb'),attributes,{'tableName':_0xfbfe('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2947=['exports','lodash','util','../../config/logger','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x2aecb2,_0x343312){var _0x3ebb80=function(_0x19fab3){while(--_0x19fab3){_0x2aecb2['push'](_0x2aecb2['shift']());}};_0x3ebb80(++_0x343312);}(_0x2947,0x1e1));var _0x7294=function(_0x9c0012,_0x448a4f){_0x9c0012=_0x9c0012-0x0;var _0x3e0ee1=_0x2947[_0x9c0012];return _0x3e0ee1;};'use strict';var _=require(_0x7294('0x0'));var util=require(_0x7294('0x1'));var logger=require(_0x7294('0x2'))('api');var moment=require('moment');var BPromise=require(_0x7294('0x3'));var rp=require(_0x7294('0x4'));var fs=require('fs');var path=require('path');var rimraf=require(_0x7294('0x5'));var config=require(_0x7294('0x6'));var attributes=require('./userOpenchannelQueue.attributes');module[_0x7294('0x7')]=function(_0x4d420d,_0x32020d){return _0x4d420d['define']('UserOpenchannelQueue',attributes,{'tableName':'user_has_openchannel_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 612df67..138cec1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2502=['../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','request\x20sent','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','UserOpenchannelQueue,\x20%s,\x20%s','message','result','lodash','util','moment','randomstring','ioredis','../../config/utils'];(function(_0x3ba422,_0x53303c){var _0x20b5dd=function(_0x10b8a7){while(--_0x10b8a7){_0x3ba422['push'](_0x3ba422['shift']());}};_0x20b5dd(++_0x53303c);}(_0x2502,0x1f4));var _0x2250=function(_0x3493dc,_0x5c88cb){_0x3493dc=_0x3493dc-0x0;var _0x5867f3=_0x2502[_0x3493dc];return _0x5867f3;};'use strict';var _=require(_0x2250('0x0'));var util=require(_0x2250('0x1'));var moment=require(_0x2250('0x2'));var BPromise=require('bluebird');var rs=require(_0x2250('0x3'));var fs=require('fs');var Redis=require(_0x2250('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x2250('0x5'));var logger=require(_0x2250('0x6'))(_0x2250('0x7'));var config=require(_0x2250('0x8'));var jayson=require(_0x2250('0x9'));var client=jayson[_0x2250('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2fd30f,_0x4b0edd,_0x144f3f){return new BPromise(function(_0x1b3587,_0x3ba678){return client[_0x2250('0xb')](_0x2fd30f,_0x144f3f)[_0x2250('0xc')](function(_0x327890){logger[_0x2250('0xd')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x4b0edd,_0x2250('0xe'));logger[_0x2250('0xf')](_0x2250('0x10'),_0x4b0edd,'request\x20sent',JSON[_0x2250('0x11')](_0x327890));if(_0x327890[_0x2250('0x12')]){if(_0x327890['error'][_0x2250('0x13')]===0x1f4){logger['error'](_0x2250('0x14'),_0x4b0edd,_0x327890['error']['message']);return _0x3ba678(_0x327890[_0x2250('0x12')]['message']);}logger[_0x2250('0x12')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x4b0edd,_0x327890[_0x2250('0x12')][_0x2250('0x15')]);return _0x1b3587(_0x327890[_0x2250('0x12')]['message']);}else{logger[_0x2250('0xd')](_0x2250('0x14'),_0x4b0edd,_0x2250('0xe'));_0x1b3587(_0x327890[_0x2250('0x16')][_0x2250('0x15')]);}})['catch'](function(_0x2e1252){logger[_0x2250('0x12')](_0x2250('0x14'),_0x4b0edd,_0x2e1252);_0x3ba678(_0x2e1252);});});}
\ No newline at end of file
+var _0x47d1=['UserOpenchannelQueue,\x20%s,\x20%s','debug','UserOpenchannelQueue,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','http','request','then','info'];(function(_0x5751e6,_0x125e5e){var _0x4199e4=function(_0x559843){while(--_0x559843){_0x5751e6['push'](_0x5751e6['shift']());}};_0x4199e4(++_0x125e5e);}(_0x47d1,0xfb));var _0x147d=function(_0x3d235c,_0xa18dd1){_0x3d235c=_0x3d235c-0x0;var _0x56ae19=_0x47d1[_0x3d235c];return _0x56ae19;};'use strict';var _=require(_0x147d('0x0'));var util=require(_0x147d('0x1'));var moment=require(_0x147d('0x2'));var BPromise=require(_0x147d('0x3'));var rs=require(_0x147d('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x147d('0x5'))['db'];var utils=require(_0x147d('0x6'));var logger=require(_0x147d('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0x147d('0x8'));var client=jayson['client'][_0x147d('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x56d348,_0x2133d9,_0x3283eb){return new BPromise(function(_0x3e72c4,_0x447ff4){return client[_0x147d('0xa')](_0x56d348,_0x3283eb)[_0x147d('0xb')](function(_0x331ee1){logger[_0x147d('0xc')](_0x147d('0xd'),_0x2133d9,'request\x20sent');logger[_0x147d('0xe')](_0x147d('0xf'),_0x2133d9,_0x147d('0x10'),JSON[_0x147d('0x11')](_0x331ee1));if(_0x331ee1[_0x147d('0x12')]){if(_0x331ee1[_0x147d('0x12')][_0x147d('0x13')]===0x1f4){logger[_0x147d('0x12')](_0x147d('0xd'),_0x2133d9,_0x331ee1[_0x147d('0x12')][_0x147d('0x14')]);return _0x447ff4(_0x331ee1[_0x147d('0x12')][_0x147d('0x14')]);}logger[_0x147d('0x12')](_0x147d('0xd'),_0x2133d9,_0x331ee1['error'][_0x147d('0x14')]);return _0x3e72c4(_0x331ee1['error'][_0x147d('0x14')]);}else{logger['info'](_0x147d('0xd'),_0x2133d9,_0x147d('0x10'));_0x3e72c4(_0x331ee1['result'][_0x147d('0x14')]);}})[_0x147d('0x15')](function(_0x2d15b4){logger[_0x147d('0x12')]('UserOpenchannelQueue,\x20%s,\x20%s',_0x2133d9,_0x2d15b4);_0x447ff4(_0x2d15b4);});});}
\ No newline at end of file
index 484c516..049e7c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62d3=['show','/:id/sections','getSections','/:id/resources','post','create','/:id/clone','clone','addSections','/:id','delete','removeResources','exports','multer','util','express','Router','../../components/auth/service','../../config/environment','./userProfile.controller','get','index','/describe','isAuthenticated','describe'];(function(_0x8ad29a,_0x28c424){var _0x33a8f8=function(_0x58b571){while(--_0x58b571){_0x8ad29a['push'](_0x8ad29a['shift']());}};_0x33a8f8(++_0x28c424);}(_0x62d3,0x19d));var _0x362d=function(_0x521e56,_0x379b5e){_0x521e56=_0x521e56-0x0;var _0x23aa6e=_0x62d3[_0x521e56];return _0x23aa6e;};'use strict';var multer=require(_0x362d('0x0'));var util=require(_0x362d('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0x362d('0x2'));var router=express[_0x362d('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x362d('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x362d('0x5'));var controller=require(_0x362d('0x6'));router[_0x362d('0x7')]('/',auth['isAuthenticated'](),controller[_0x362d('0x8')]);router['get'](_0x362d('0x9'),auth[_0x362d('0xa')](),controller[_0x362d('0xb')]);router[_0x362d('0x7')]('/:id',auth['isAuthenticated'](),controller[_0x362d('0xc')]);router['get'](_0x362d('0xd'),auth['isAuthenticated'](),controller[_0x362d('0xe')]);router[_0x362d('0x7')](_0x362d('0xf'),auth[_0x362d('0xa')](),controller['getResources']);router[_0x362d('0x10')]('/',auth['isAuthenticated'](),controller[_0x362d('0x11')]);router['post'](_0x362d('0x12'),auth[_0x362d('0xa')](),controller[_0x362d('0x13')]);router[_0x362d('0x10')](_0x362d('0xd'),auth[_0x362d('0xa')](),controller[_0x362d('0x14')]);router[_0x362d('0x10')](_0x362d('0xf'),auth['isAuthenticated'](),controller['addResources']);router['put'](_0x362d('0x15'),auth['isAuthenticated'](),controller['update']);router['delete'](_0x362d('0x15'),auth[_0x362d('0xa')](),controller['destroy']);router[_0x362d('0x16')](_0x362d('0xd'),auth[_0x362d('0xa')](),controller['removeSections']);router[_0x362d('0x16')](_0x362d('0xf'),auth[_0x362d('0xa')](),controller[_0x362d('0x17')]);module[_0x362d('0x18')]=router;
\ No newline at end of file
+var _0x4089=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfile.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/sections','getSections','/:id/resources','post','create','clone','addSections','addResources','update','delete','destroy','removeSections','removeResources','exports','multer','path','connect-timeout','express','Router'];(function(_0x46950a,_0x14a01f){var _0x2d3cc2=function(_0x454e36){while(--_0x454e36){_0x46950a['push'](_0x46950a['shift']());}};_0x2d3cc2(++_0x14a01f);}(_0x4089,0x91));var _0x9408=function(_0x8f6fa5,_0x320980){_0x8f6fa5=_0x8f6fa5-0x0;var _0x2e1201=_0x4089[_0x8f6fa5];return _0x2e1201;};'use strict';var multer=require(_0x9408('0x0'));var util=require('util');var path=require(_0x9408('0x1'));var timeout=require(_0x9408('0x2'));var express=require(_0x9408('0x3'));var router=express[_0x9408('0x4')]();var fs_extra=require(_0x9408('0x5'));var auth=require(_0x9408('0x6'));var interaction=require(_0x9408('0x7'));var config=require(_0x9408('0x8'));var controller=require(_0x9408('0x9'));router[_0x9408('0xa')]('/',auth[_0x9408('0xb')](),controller['index']);router[_0x9408('0xa')](_0x9408('0xc'),auth[_0x9408('0xb')](),controller[_0x9408('0xd')]);router['get'](_0x9408('0xe'),auth['isAuthenticated'](),controller[_0x9408('0xf')]);router[_0x9408('0xa')](_0x9408('0x10'),auth['isAuthenticated'](),controller[_0x9408('0x11')]);router[_0x9408('0xa')](_0x9408('0x12'),auth[_0x9408('0xb')](),controller['getResources']);router[_0x9408('0x13')]('/',auth[_0x9408('0xb')](),controller[_0x9408('0x14')]);router[_0x9408('0x13')]('/:id/clone',auth[_0x9408('0xb')](),controller[_0x9408('0x15')]);router[_0x9408('0x13')](_0x9408('0x10'),auth['isAuthenticated'](),controller[_0x9408('0x16')]);router[_0x9408('0x13')]('/:id/resources',auth[_0x9408('0xb')](),controller[_0x9408('0x17')]);router['put'](_0x9408('0xe'),auth[_0x9408('0xb')](),controller[_0x9408('0x18')]);router[_0x9408('0x19')](_0x9408('0xe'),auth['isAuthenticated'](),controller[_0x9408('0x1a')]);router[_0x9408('0x19')](_0x9408('0x10'),auth[_0x9408('0xb')](),controller[_0x9408('0x1b')]);router[_0x9408('0x19')](_0x9408('0x12'),auth[_0x9408('0xb')](),controller[_0x9408('0x1c')]);module[_0x9408('0x1d')]=router;
\ No newline at end of file
index 2957ac2..8b0331e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3887=['exports','name','STRING','setDataValue','crudPermissions','join','getDataValue','split','BOOLEAN','sequelize'];(function(_0x5a477f,_0x36db90){var _0x478d61=function(_0x2de181){while(--_0x2de181){_0x5a477f['push'](_0x5a477f['shift']());}};_0x478d61(++_0x36db90);}(_0x3887,0x77));var _0x7388=function(_0x2ae5ce,_0x481760){_0x2ae5ce=_0x2ae5ce-0x0;var _0x3ccd3c=_0x3887[_0x2ae5ce];return _0x3ccd3c;};'use strict';var Sequelize=require(_0x7388('0x0'));module[_0x7388('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x7388('0x2')},'crudPermissions':{'type':Sequelize[_0x7388('0x3')],'set':function(_0x4c5f19){this[_0x7388('0x4')](_0x7388('0x5'),_0x4c5f19?_0x4c5f19[_0x7388('0x6')](''):[]);},'get':function(){return this[_0x7388('0x7')]('crudPermissions')?this[_0x7388('0x7')](_0x7388('0x5'))[_0x7388('0x8')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x7388('0x3')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x7388('0x9')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize[_0x7388('0x9')],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize[_0x7388('0x9')],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x7388('0x9')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize[_0x7388('0x9')],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize[_0x7388('0x9')],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize[_0x7388('0x9')],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x7388('0x9')],'defaultValue':!![]}};
\ No newline at end of file
+var _0x1cc3=['getDataValue','split','BOOLEAN','STRING','name','setDataValue','crudPermissions','join'];(function(_0x5f1391,_0x19c132){var _0x50ebe3=function(_0x3d00a3){while(--_0x3d00a3){_0x5f1391['push'](_0x5f1391['shift']());}};_0x50ebe3(++_0x19c132);}(_0x1cc3,0x7b));var _0x31cc=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x1cc3[_0x17d9e3];return _0x14192d;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x31cc('0x0')],'allowNull':![],'unique':_0x31cc('0x1')},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x2485f5){this[_0x31cc('0x2')](_0x31cc('0x3'),_0x2485f5?_0x2485f5[_0x31cc('0x4')](''):[]);},'get':function(){return this[_0x31cc('0x5')](_0x31cc('0x3'))?this[_0x31cc('0x5')](_0x31cc('0x3'))[_0x31cc('0x6')](''):[];},'allowNull':![],'defaultValue':'r'},'description':{'type':Sequelize[_0x31cc('0x0')],'allowNull':!![]},'privacyEnabled':{'type':Sequelize[_0x31cc('0x7')],'defaultValue':![]},'downloadAttachments':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadCallySquareRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadContactManagerLists':{'type':Sequelize[_0x31cc('0x7')],'defaultValue':!![]},'downloadJscriptySessions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadOmnichannelInteractions':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadScreenRecordings':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'downloadVoiceRecordings':{'type':Sequelize[_0x31cc('0x7')],'defaultValue':!![]}};
\ No newline at end of file
index 65130fe..54d6460 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8603=['attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','merge','VIRTUAL','options','where','UserProfile','includeAll','include','findAll','rows','params','find','catch','create','clone','get','omit','createdAt','updatedAt','crudPermissions','body','transaction','UserProfileSection','each','autoAssociation','sectionId','userProfileId','Resources','UserProfileResource','update','destroy','addSections','sequelize','push','ids','getSections','enabled','isEmpty','subsections','includes','Dashboard','forEach','resourceId','addResources','bulkCreate','removeResources','section','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','getResources','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','sox','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./userProfile.socket','register','sendStatus','status','end','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','then','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','keys','filters','intersection','model','query'];(function(_0x316ac6,_0x2cfb83){var _0x5908b9=function(_0x7e4951){while(--_0x7e4951){_0x316ac6['push'](_0x316ac6['shift']());}};_0x5908b9(++_0x2cfb83);}(_0x8603,0x190));var _0x3860=function(_0x542ce3,_0x4e833a){_0x542ce3=_0x542ce3-0x0;var _0x29b3f7=_0x8603[_0x542ce3];return _0x29b3f7;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x3860('0x0'));var zipdir=require(_0x3860('0x1'));var jsonpatch=require(_0x3860('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x3860('0x3'));var Mustache=require(_0x3860('0x4'));var util=require(_0x3860('0x5'));var path=require('path');var sox=require(_0x3860('0x6'));var csv=require('to-csv');var ejs=require(_0x3860('0x7'));var fs=require('fs');var fs_extra=require(_0x3860('0x8'));var _=require(_0x3860('0x9'));var squel=require(_0x3860('0xa'));var crypto=require(_0x3860('0xb'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x3860('0xc'));var Papa=require(_0x3860('0xd'));var Redis=require('ioredis');var authService=require(_0x3860('0xe'));var qs=require(_0x3860('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x3860('0x10'));var logger=require(_0x3860('0x11'))('api');var utils=require(_0x3860('0x12'));var config=require(_0x3860('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x3860('0x14'))['db'];config[_0x3860('0x15')]=_[_0x3860('0x16')](config[_0x3860('0x15')],{'host':_0x3860('0x17'),'port':0x18eb});var socket=require(_0x3860('0x18'))(new Redis(config[_0x3860('0x15')]));require(_0x3860('0x19'))[_0x3860('0x1a')](socket);function respondWithStatusCode(_0x46264d,_0x54dbc3){_0x54dbc3=_0x54dbc3||0xcc;return function(_0x3d861d){if(_0x3d861d){return _0x46264d[_0x3860('0x1b')](_0x54dbc3);}return _0x46264d[_0x3860('0x1c')](_0x54dbc3)[_0x3860('0x1d')]();};}function respondWithResult(_0x1055b3,_0xfa0c9a){_0xfa0c9a=_0xfa0c9a||0xc8;return function(_0x2d8a3a){if(_0x2d8a3a){return _0x1055b3[_0x3860('0x1c')](_0xfa0c9a)[_0x3860('0x1e')](_0x2d8a3a);}};}function respondWithFilteredResult(_0x3c0d91,_0x3e51b4){return function(_0x45b799){if(_0x45b799){var _0x4b6b15=typeof _0x3e51b4['offset']===_0x3860('0x1f')&&typeof _0x3e51b4[_0x3860('0x20')]===_0x3860('0x1f');var _0x53fc63=_0x45b799[_0x3860('0x21')];var _0x145b26=_0x4b6b15?0x0:_0x3e51b4[_0x3860('0x22')];var _0x3af33a=_0x4b6b15?_0x45b799[_0x3860('0x21')]:_0x3e51b4[_0x3860('0x22')]+_0x3e51b4[_0x3860('0x20')];var _0x1f8891;if(_0x3af33a>=_0x53fc63){_0x3af33a=_0x53fc63;_0x1f8891=0xc8;}else{_0x1f8891=0xce;}_0x3c0d91[_0x3860('0x1c')](_0x1f8891);return _0x3c0d91[_0x3860('0x23')](_0x3860('0x24'),_0x145b26+'-'+_0x3af33a+'/'+_0x53fc63)[_0x3860('0x1e')](_0x45b799);}return null;};}function patchUpdates(_0x280ea9){return function(_0x9eaaa1){try{jsonpatch[_0x3860('0x25')](_0x9eaaa1,_0x280ea9,!![]);}catch(_0x564efd){return BPromise[_0x3860('0x26')](_0x564efd);}return _0x9eaaa1[_0x3860('0x27')]();};}function saveUpdates(_0x2b91f2,_0x301e03){return function(_0x20bb1e){if(_0x20bb1e){return _0x20bb1e['update'](_0x2b91f2)[_0x3860('0x28')](function(_0x568515){return _0x568515;});}return null;};}function removeEntity(_0x577750,_0xfa9705){return function(_0x1c4bbc){if(_0x1c4bbc){return _0x1c4bbc['destroy']()['then'](function(){_0x577750['status'](0xcc)[_0x3860('0x1d')]();});}};}function handleEntityNotFound(_0x3ebc5b,_0xb25cc2){return function(_0x371f3a){if(!_0x371f3a){_0x3ebc5b[_0x3860('0x1b')](0x194);}return _0x371f3a;};}function handleError(_0x228d34,_0x544b9a){_0x544b9a=_0x544b9a||0x1f4;return function(_0x4c4314){logger[_0x3860('0x29')](_0x4c4314[_0x3860('0x2a')]);if(_0x4c4314['name']){delete _0x4c4314[_0x3860('0x2b')];}_0x228d34[_0x3860('0x1c')](_0x544b9a)[_0x3860('0x2c')](_0x4c4314);};}exports[_0x3860('0x2d')]=function(_0x3628f7,_0x4bbae9){var _0x36ae2b={},_0xf624ba={},_0x367b14={'count':0x0,'rows':[]};var _0x4bd90c=_[_0x3860('0x2e')](db['UserProfile'][_0x3860('0x2f')],function(_0x4825f0){return{'name':_0x4825f0[_0x3860('0x30')],'type':_0x4825f0[_0x3860('0x31')][_0x3860('0x32')]};});_0xf624ba['model']=_[_0x3860('0x2e')](_0x4bd90c,_0x3860('0x2b'));_0xf624ba['query']=_[_0x3860('0x33')](_0x3628f7['query']);_0xf624ba[_0x3860('0x34')]=_[_0x3860('0x35')](_0xf624ba[_0x3860('0x36')],_0xf624ba[_0x3860('0x37')]);_0x36ae2b[_0x3860('0x38')]=_[_0x3860('0x35')](_0xf624ba[_0x3860('0x36')],qs['fields'](_0x3628f7[_0x3860('0x37')][_0x3860('0x39')]));_0x36ae2b['attributes']=_0x36ae2b[_0x3860('0x38')][_0x3860('0x3a')]?_0x36ae2b[_0x3860('0x38')]:_0xf624ba['model'];if(!_0x3628f7['query'][_0x3860('0x3b')](_0x3860('0x3c'))){_0x36ae2b[_0x3860('0x20')]=qs[_0x3860('0x20')](_0x3628f7['query']['limit']);_0x36ae2b[_0x3860('0x22')]=qs[_0x3860('0x22')](_0x3628f7[_0x3860('0x37')][_0x3860('0x22')]);}_0x36ae2b[_0x3860('0x3d')]=qs['sort'](_0x3628f7[_0x3860('0x37')][_0x3860('0x3e')]);_0x36ae2b['where']=qs['filters'](_[_0x3860('0x3f')](_0x3628f7[_0x3860('0x37')],_0xf624ba[_0x3860('0x34')]),_0x4bd90c);if(_0x3628f7[_0x3860('0x37')][_0x3860('0x40')]){_0x36ae2b['where']=_[_0x3860('0x41')](_0x36ae2b['where'],{'$or':_[_0x3860('0x2e')](_0x4bd90c,function(_0x35bf7a){if(_0x35bf7a['type']!==_0x3860('0x42')){var _0x162e65={};_0x162e65[_0x35bf7a['name']]={'$like':'%'+_0x3628f7[_0x3860('0x37')][_0x3860('0x40')]+'%'};return _0x162e65;}})});}_0x36ae2b=_[_0x3860('0x41')]({},_0x36ae2b,_0x3628f7[_0x3860('0x43')]);var _0x4f486e={'where':_0x36ae2b[_0x3860('0x44')]};return db[_0x3860('0x45')][_0x3860('0x21')](_0x4f486e)['then'](function(_0x3a87e5){_0x367b14['count']=_0x3a87e5;if(_0x3628f7[_0x3860('0x37')][_0x3860('0x46')]){_0x36ae2b[_0x3860('0x47')]=[{'all':!![]}];}return db[_0x3860('0x45')][_0x3860('0x48')](_0x36ae2b);})[_0x3860('0x28')](function(_0x4e0a44){_0x367b14[_0x3860('0x49')]=_0x4e0a44;return _0x367b14;})[_0x3860('0x28')](respondWithFilteredResult(_0x4bbae9,_0x36ae2b))['catch'](handleError(_0x4bbae9,null));};exports['show']=function(_0x2938d4,_0x5840f7){var _0x4f2f53={'raw':![],'where':{'id':_0x2938d4[_0x3860('0x4a')]['id']}},_0x164a77={};_0x164a77['model']=_[_0x3860('0x33')](db[_0x3860('0x45')][_0x3860('0x2f')]);_0x164a77[_0x3860('0x37')]=_[_0x3860('0x33')](_0x2938d4[_0x3860('0x37')]);_0x164a77[_0x3860('0x34')]=_[_0x3860('0x35')](_0x164a77[_0x3860('0x36')],_0x164a77[_0x3860('0x37')]);_0x4f2f53[_0x3860('0x38')]=_[_0x3860('0x35')](_0x164a77[_0x3860('0x36')],qs['fields'](_0x2938d4[_0x3860('0x37')]['fields']));_0x4f2f53[_0x3860('0x38')]=_0x4f2f53[_0x3860('0x38')][_0x3860('0x3a')]?_0x4f2f53[_0x3860('0x38')]:_0x164a77[_0x3860('0x36')];if(_0x2938d4[_0x3860('0x37')][_0x3860('0x46')]){_0x4f2f53[_0x3860('0x47')]=[{'all':!![]}];}_0x4f2f53=_['merge']({},_0x4f2f53,_0x2938d4[_0x3860('0x43')]);return db[_0x3860('0x45')][_0x3860('0x4b')](_0x4f2f53)['then'](handleEntityNotFound(_0x5840f7,null))[_0x3860('0x28')](respondWithResult(_0x5840f7,null))[_0x3860('0x4c')](handleError(_0x5840f7,null));};exports[_0x3860('0x4d')]=function(_0x3dc957,_0x5ed2db){return db['UserProfile'][_0x3860('0x4d')](_0x3dc957['body'],{})[_0x3860('0x28')](respondWithResult(_0x5ed2db,0xc9))[_0x3860('0x4c')](handleError(_0x5ed2db,null));};exports[_0x3860('0x4e')]=function(_0x52456e,_0x29c52d){var _0x5a019a={'where':{'id':_0x52456e['params']['id']}},_0x3e87d1={};_0x3e87d1[_0x3860('0x36')]=_[_0x3860('0x33')](db[_0x3860('0x45')]['rawAttributes']);_0x5a019a['attributes']=_[_0x3860('0x35')](_0x3e87d1[_0x3860('0x36')],qs['fields'](_0x52456e[_0x3860('0x37')]['fields']));_0x5a019a[_0x3860('0x38')]=_0x5a019a[_0x3860('0x38')][_0x3860('0x3a')]?_0x5a019a[_0x3860('0x38')]:_0x3e87d1[_0x3860('0x36')];if(_0x52456e[_0x3860('0x37')][_0x3860('0x46')]){_0x5a019a['include']=[{'all':!![]}];}_0x5a019a=_[_0x3860('0x41')]({},_0x5a019a,_0x52456e[_0x3860('0x43')]);return db[_0x3860('0x45')][_0x3860('0x4b')](_0x5a019a)[_0x3860('0x28')](handleEntityNotFound(_0x29c52d,null))[_0x3860('0x28')](function(_0x47ff99){if(_0x47ff99){var _0x2cf48c=_0x47ff99[_0x3860('0x4f')]({'plain':!![]});_0x2cf48c=qs[_0x3860('0x50')](_0x2cf48c,['id',_0x3860('0x51'),_0x3860('0x52'),_0x3860('0x53')]);_0x52456e[_0x3860('0x54')]=_[_0x3860('0x50')](_0x52456e['body'],['id',_0x3860('0x51'),_0x3860('0x52')]);return db['sequelize'][_0x3860('0x55')](function(_0x275df2){return db[_0x3860('0x45')]['create'](_[_0x3860('0x41')](_0x2cf48c,_0x52456e['body']),{'include':_0x52456e[_0x3860('0x37')][_0x3860('0x46')]?[{'all':!![]}]:undefined,'transaction':_0x275df2})[_0x3860('0x28')](function(_0x2cc119){var _0x27a853=_0x2cc119[_0x3860('0x4f')]({'plain':!![]});return db[_0x3860('0x56')][_0x3860('0x48')]({'where':{'userProfileId':_0x52456e[_0x3860('0x4a')]['id']},'raw':!![]})[_0x3860('0x28')](function(_0x3ba9a1){if(_0x3ba9a1){return BPromise[_0x3860('0x57')](_0x3ba9a1,function(_0x58147d){return new BPromise(function(_0x5ce9a4,_0x5111e0){if(_0x58147d[_0x3860('0x58')]===null||_0x58147d['autoAssociation']===0x1)_0x5ce9a4(null);return db['UserProfileResource'][_0x3860('0x48')]({'where':{'sectionId':_0x58147d['id']},'raw':!![]})[_0x3860('0x28')](function(_0x2ff440){var _0x2fd966=_[_0x3860('0x2e')](_0x2ff440,function(_0x2e5cf0){return qs['omit'](_0x2e5cf0,['id','createdAt','updatedAt',_0x3860('0x59')]);});_0x5ce9a4(_0x2fd966);})[_0x3860('0x4c')](function(_0x2d1646){_0x5111e0(_0x2d1646);});})['then'](function(_0xf875e4){var _0x59a0bd=qs[_0x3860('0x50')](_0x58147d,['id',_0x3860('0x51'),'updatedAt']);_0x59a0bd[_0x3860('0x5a')]=_0x27a853['id'];if(_0xf875e4)_0x59a0bd[_0x3860('0x5b')]=_0xf875e4;return _0x59a0bd;})[_0x3860('0x28')](function(_0x27f817){return db['UserProfileSection'][_0x3860('0x4d')](_0x27f817,{'include':[{'model':db[_0x3860('0x5c')],'as':_0x3860('0x5b')}],'raw':!![],'transaction':_0x275df2});});})['then'](function(){return _0x27a853;});}});});});}})['then'](respondWithResult(_0x29c52d,0xc9))[_0x3860('0x4c')](handleError(_0x29c52d,null));};exports[_0x3860('0x5d')]=function(_0xe67023,_0x1ca0e7){if(_0xe67023[_0x3860('0x54')]['id']){delete _0xe67023[_0x3860('0x54')]['id'];}return db['UserProfile'][_0x3860('0x4b')]({'where':{'id':_0xe67023[_0x3860('0x4a')]['id']}})['then'](handleEntityNotFound(_0x1ca0e7,null))[_0x3860('0x28')](saveUpdates(_0xe67023[_0x3860('0x54')],null))[_0x3860('0x28')](respondWithResult(_0x1ca0e7,null))[_0x3860('0x4c')](handleError(_0x1ca0e7,null));};exports[_0x3860('0x5e')]=function(_0x2ee555,_0x5b9a7b){return db[_0x3860('0x45')][_0x3860('0x4b')]({'where':{'id':_0x2ee555[_0x3860('0x4a')]['id']}})[_0x3860('0x28')](handleEntityNotFound(_0x5b9a7b,null))[_0x3860('0x28')](removeEntity(_0x5b9a7b,null))[_0x3860('0x4c')](handleError(_0x5b9a7b,null));};exports['describe']=function(_0x1ae31b,_0x81010b){return db[_0x3860('0x45')]['describe']()['then'](respondWithResult(_0x81010b,null))[_0x3860('0x4c')](handleError(_0x81010b,null));};exports[_0x3860('0x5f')]=function(_0x11c2c8,_0x3b7a76){var _0x3fe275=_0x11c2c8['body'];return db['UserProfile'][_0x3860('0x4b')]({'where':{'id':_0x11c2c8[_0x3860('0x4a')]['id']}})['then'](handleEntityNotFound(_0x3b7a76,null))['then'](function(_0x2fd2ec){if(_0x2fd2ec){return db[_0x3860('0x60')]['transaction'](function(_0x304b18){return db[_0x3860('0x56')][_0x3860('0x5e')]({'where':{'userProfileId':_0x11c2c8[_0x3860('0x4a')]['id'],'sectionId':_['map'](_0x3fe275,function(_0x1e8c5c){return _0x1e8c5c[_0x3860('0x59')];})},'transaction':_0x304b18})['then'](function(){var _0x57e944=_[_0x3860('0x2e')](_0x3fe275,function(_0x3427a5){_0x3427a5['userProfileId']=_0x11c2c8[_0x3860('0x4a')]['id'];return _0x3427a5;});var _0x5a20de=[];return BPromise[_0x3860('0x57')](_0x57e944,function(_0x552435){return db['UserProfileSection'][_0x3860('0x4d')](_0x552435,{'include':[{'model':db['UserProfileResource'],'as':_0x3860('0x5b')}],'raw':!![],'transaction':_0x304b18})[_0x3860('0x28')](function(_0x29eb2c){_0x5a20de[_0x3860('0x61')](_0x29eb2c[_0x3860('0x4f')]({'plain':!![]}));});})[_0x3860('0x28')](function(){return _0x5a20de;});});});}})['then'](function(_0x3756b3){return _0x3756b3;})[_0x3860('0x28')](respondWithResult(_0x3b7a76,null))[_0x3860('0x4c')](handleError(_0x3b7a76,null));};exports['removeSections']=function(_0x352a44,_0x55661a){var _0x30e093;return db[_0x3860('0x45')]['find']({'where':{'id':_0x352a44[_0x3860('0x4a')]['id']},'attributes':['id',_0x3860('0x2b')]})[_0x3860('0x28')](handleEntityNotFound(_0x55661a,null))['then'](function(_0x572707){if(_0x572707){_0x30e093=_0x572707;return db['UserProfileSection']['destroy']({'where':{'userProfileId':_0x352a44[_0x3860('0x4a')]['id'],'sectionId':_0x352a44[_0x3860('0x37')][_0x3860('0x62')]}});}})[_0x3860('0x28')](function(){return _0x30e093;})['then'](respondWithStatusCode(_0x55661a,null))['catch'](handleError(_0x55661a,null));};exports[_0x3860('0x63')]=function(_0x32e503,_0x1b0e46){var _0x61798b=[];var _0x4b0652=[];return db[_0x3860('0x56')][_0x3860('0x48')]({'where':{'userProfileId':_0x32e503['params']['id']},'raw':!![]})['then'](function(_0x32cbe8){_0x61798b=_[_0x3860('0x40')](_0x32cbe8,function(_0x4742ae){return _0x4742ae[_0x3860('0x64')]===0x1||_['includes']([0x3eb,0x709],_0x4742ae['sectionId']);});if(!_[_0x3860('0x65')](_0x61798b)){return _['map'](_0x61798b,function(_0x466d90){return _0x466d90[_0x3860('0x59')];});}else{return;}})['then'](function(_0x4e7713){if(_0x4e7713)_0x4b0652=_0x4e7713;if(_['includes'](_0x4b0652,0x64)){var _0x2d6eab=_[_0x3860('0x4b')](_0x61798b,{'sectionId':0x64});return hasDefaultDashboard(_0x2d6eab)['then'](function(_0x22177b){return _[_0x3860('0x2e')](_0x61798b,function(_0x2351fe){if(_0x2351fe[_0x3860('0x59')]===0x64){_0x2351fe[_0x3860('0x66')]=_0x22177b;}return _0x2351fe;});});}else{return;}})['then'](function(_0x1426c4){if(_0x1426c4)_0x61798b=_0x1426c4;if(_[_0x3860('0x67')](_0x4b0652,0x3eb)){var _0x3359cf=_[_0x3860('0x4b')](_0x61798b,{'sectionId':0x3eb});return getCustomDashboards(_0x3359cf)[_0x3860('0x28')](function(_0x4a98a0){return _[_0x3860('0x2e')](_0x61798b,function(_0xf57e80){if(_0x3359cf[_0x3860('0x64')]){if(_0xf57e80[_0x3860('0x59')]===0x3eb){_0xf57e80[_0x3860('0x66')]=_0x4a98a0;}}else{if(_0xf57e80['sectionId']===0x64){_0xf57e80['subsections']=_0x4a98a0;}}return _0xf57e80;});});}else{return;}})[_0x3860('0x28')](function(_0x2f3eb6){if(_0x2f3eb6)_0x61798b=_0x2f3eb6;if(_[_0x3860('0x67')](_0x4b0652,0x709)){var _0xf950d8=_[_0x3860('0x4b')](_0x61798b,{'sectionId':0x709});return getPlugins(_0xf950d8)[_0x3860('0x28')](function(_0x182292){if(_0xf950d8['enabled']){return _[_0x3860('0x2e')](_0x61798b,function(_0x3eb292){if(_0x3eb292['sectionId']===0x709){_0x3eb292[_0x3860('0x66')]=_0x182292;}return _0x3eb292;});}else{var _0x2f70fa={'sectionId':0x76c,'enabled':0x1,'subsections':_0x182292};var _0x292704=_['map'](_0x61798b);_0x292704[_0x3860('0x61')](_0x2f70fa);return _0x292704;}});}else{return;}})[_0x3860('0x28')](function(_0x5f11ca){if(_0x5f11ca)_0x61798b=_0x5f11ca;return _[_0x3860('0x40')](_0x61798b,['enabled',0x1]);})[_0x3860('0x28')](respondWithResult(_0x1b0e46,null))[_0x3860('0x4c')](handleError(_0x1b0e46,null));};function hasDefaultDashboard(_0x479d65){var _0x330fd0=[0x65];return new BPromise(function(_0x2dc788,_0x361113){try{if(_0x479d65[_0x3860('0x58')]){_0x2dc788(_0x330fd0);}else{return db[_0x3860('0x5c')]['findOne']({'where':{'sectionId':_0x479d65['id']},'raw':!![]})[_0x3860('0x28')](function(_0x15b0b0){_0x15b0b0?_0x2dc788(_0x330fd0):_0x2dc788();});}}catch(_0x43aa44){_0x361113(_0x43aa44);}});}function getCustomDashboards(_0x6e6513){var _0x3c9837=[];return new BPromise(function(_0x5c6bbe,_0x490359){try{if(_0x6e6513[_0x3860('0x58')]){return db[_0x3860('0x68')]['findAll']({'raw':!![]})[_0x3860('0x28')](function(_0x27ef52){_0x27ef52[_0x3860('0x69')](function(_0x9d8eca){_0x3c9837['push'](_0x9d8eca['id']+0x1869f);});_0x5c6bbe(_0x3c9837);});}else{return db[_0x3860('0x5c')]['findAll']({'where':{'sectionId':_0x6e6513['id']},'raw':!![]})[_0x3860('0x28')](function(_0xac70c6){_0xac70c6[_0x3860('0x69')](function(_0x315b44){_0x3c9837[_0x3860('0x61')](_0x315b44[_0x3860('0x6a')]+0x1869f);});_0x5c6bbe(_0x3c9837);});}}catch(_0x467b1b){_0x490359(_0x467b1b);}});}function getPlugins(_0x4936e7){var _0x277aba=[];return new BPromise(function(_0x47396d,_0x4ae542){try{if(_0x4936e7['autoAssociation']){return db['Plugin']['findAll']({'raw':!![]})[_0x3860('0x28')](function(_0x2f0210){_0x2f0210[_0x3860('0x69')](function(_0x1482cd){_0x277aba[_0x3860('0x61')](_0x1482cd['id']+0x15b38);});_0x47396d(_0x277aba);});}else{return db[_0x3860('0x5c')]['findAll']({'where':{'sectionId':_0x4936e7['id']},'raw':!![]})[_0x3860('0x28')](function(_0x5e2959){_0x5e2959[_0x3860('0x69')](function(_0x3b1683){_0x277aba[_0x3860('0x61')](_0x3b1683[_0x3860('0x6a')]+0x15b38);});_0x47396d(_0x277aba);});}}catch(_0x459b6c){_0x4ae542(_0x459b6c);}});}exports[_0x3860('0x6b')]=function(_0x23d7f0,_0x52987a){return db[_0x3860('0x45')][_0x3860('0x4b')]({'where':{'id':_0x23d7f0[_0x3860('0x4a')]['id']}})['then'](handleEntityNotFound(_0x52987a,null))[_0x3860('0x28')](function(_0x304c95){if(_0x304c95){return db[_0x3860('0x60')]['transaction'](function(_0xf370f9){return db[_0x3860('0x56')][_0x3860('0x48')]({'where':{'userProfileId':_0x23d7f0[_0x3860('0x4a')]['id']},'attributes':['id'],'raw':!![]})['then'](function(_0x16a462){if(_0x16a462){return db[_0x3860('0x56')][_0x3860('0x5e')]({'where':{'userProfileId':_0x23d7f0['params']['id'],'id':_[_0x3860('0x2e')](_0x16a462,function(_0x30272a){return _0x30272a['id'];})},'transaction':_0xf370f9});}})[_0x3860('0x28')](function(_0x59123c){var _0x2f9470=_[_0x3860('0x2e')](_0x23d7f0[_0x3860('0x54')],function(_0x4907c5){_0x4907c5[_0x3860('0x5a')]=_0x23d7f0[_0x3860('0x4a')]['id'];return _0x4907c5;});return db[_0x3860('0x56')]['bulkCreate'](_0x2f9470,{'raw':!![],'transaction':_0xf370f9});})[_0x3860('0x28')](function(_0x2a6eb5){var _0x1b8060=_['filter'](_[_0x3860('0x2e')](_0x2a6eb5,function(_0x59a7c5){return _0x59a7c5[_0x3860('0x4f')]({'plain':!![]});}),{'includeAll':![]});if(_0x1b8060){return db['UserProfileSection'][_0x3860('0x48')]({'where':{'userProfileId':_0x23d7f0[_0x3860('0x4a')]['id'],'sectionId':_[_0x3860('0x2e')](_0x1b8060,function(_0x37ee7e){return _0x37ee7e[_0x3860('0x59')];})},'attributes':['id',_0x3860('0x59')],'raw':!![]})[_0x3860('0x28')](function(_0x3c9ccc){var _0x3f808c=_[_0x3860('0x2e')](_0x23d7f0[_0x3860('0x54')],function(_0x33fed2){_0x33fed2[_0x3860('0x5a')]=_0x23d7f0[_0x3860('0x4a')]['id'];return _0x33fed2;});return db[_0x3860('0x5c')][_0x3860('0x6c')](_0x3f808c,{'raw':!![],'transaction':_0xf370f9});});}})[_0x3860('0x4c')](handleError(_0x52987a,null));});}})[_0x3860('0x28')](function(_0x47ebbd){var _0x37575b=_[_0x3860('0x2e')](_0x47ebbd,function(_0x394a84){return _0x394a84[_0x3860('0x4f')]({'plain':!![]});});})[_0x3860('0x28')](respondWithResult(_0x52987a,null))[_0x3860('0x4c')](handleError(_0x52987a,null));};exports[_0x3860('0x6d')]=function(_0x130249,_0x222e5a,_0x11a80c){return db[_0x3860('0x45')]['find']({'where':{'id':_0x130249[_0x3860('0x4a')]['id']}})[_0x3860('0x28')](handleEntityNotFound(_0x222e5a,null))[_0x3860('0x28')](function(_0x6334ca){if(_0x6334ca){return _0x6334ca['removeResources'](_0x130249[_0x3860('0x37')][_0x3860('0x62')]);}})[_0x3860('0x28')](respondWithStatusCode(_0x222e5a,null))[_0x3860('0x4c')](handleError(_0x222e5a,null));};exports['getResources']=function(_0x280747,_0x5d7415){var _0x5450e2={};if(!_0x280747[_0x3860('0x37')][_0x3860('0x6e')])throw new Error(_0x3860('0x6f'));if(!_0x280747[_0x3860('0x37')][_0x3860('0x3b')](_0x3860('0x3c'))){_0x5450e2[_0x3860('0x20')]=qs[_0x3860('0x20')](_0x280747[_0x3860('0x37')][_0x3860('0x20')]);_0x5450e2[_0x3860('0x22')]=qs[_0x3860('0x22')](_0x280747[_0x3860('0x37')]['offset']);}return db[_0x3860('0x45')]['find']({'where':{'id':_0x280747[_0x3860('0x4a')]['id']}})[_0x3860('0x28')](function(_0x5891d8){if(!_0x5891d8)throw new Error(_0x3860('0x70')+_0x280747[_0x3860('0x4a')]['id']);return db[_0x3860('0x45')][_0x3860('0x71')](_0x280747);})[_0x3860('0x28')](respondWithFilteredResult(_0x5d7415,_0x5450e2))[_0x3860('0x4c')](handleError(_0x5d7415,null));};
\ No newline at end of file
+var _0xe1d7=['undefined','limit','count','Content-Range','apply','reject','save','update','destroy','then','end','error','stack','name','send','index','map','UserProfile','rawAttributes','fieldName','type','key','query','keys','intersection','model','fields','attributes','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','include','findAll','catch','show','params','find','body','clone','get','createdAt','updatedAt','crudPermissions','omit','sequelize','transaction','create','UserProfileSection','each','autoAssociation','UserProfileResource','sectionId','Resources','describe','addSections','userProfileId','removeSections','getSections','enabled','includes','isEmpty','subsections','findOne','Dashboard','forEach','push','resourceId','Plugin','bulkCreate','removeResources','ids','getResources','section','Missing\x20section\x20parameter','No\x20User\x20Profile\x20found\x20for\x20id\x20','rimraf','moment','bluebird','mustache','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','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','./userProfile.socket','register','sendStatus','status','json','offset'];(function(_0x4e9e00,_0x157820){var _0x201de0=function(_0x3217d5){while(--_0x3217d5){_0x4e9e00['push'](_0x4e9e00['shift']());}};_0x201de0(++_0x157820);}(_0xe1d7,0x1a9));var _0x7e1d=function(_0x596f3f,_0x53c5bf){_0x596f3f=_0x596f3f-0x0;var _0x2c1225=_0xe1d7[_0x596f3f];return _0x2c1225;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7e1d('0x0'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x7e1d('0x1'));var BPromise=require(_0x7e1d('0x2'));var Mustache=require(_0x7e1d('0x3'));var util=require('util');var path=require(_0x7e1d('0x4'));var sox=require(_0x7e1d('0x5'));var csv=require(_0x7e1d('0x6'));var ejs=require(_0x7e1d('0x7'));var fs=require('fs');var fs_extra=require(_0x7e1d('0x8'));var _=require('lodash');var squel=require(_0x7e1d('0x9'));var crypto=require(_0x7e1d('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x7e1d('0xb'));var toCsv=require(_0x7e1d('0x6'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x7e1d('0xc'));var authService=require(_0x7e1d('0xd'));var qs=require(_0x7e1d('0xe'));var as=require(_0x7e1d('0xf'));var hardwareService=require(_0x7e1d('0x10'));var logger=require(_0x7e1d('0x11'))(_0x7e1d('0x12'));var utils=require('../../config/utils');var config=require(_0x7e1d('0x13'));var licenseUtil=require(_0x7e1d('0x14'));var db=require(_0x7e1d('0x15'))['db'];config[_0x7e1d('0x16')]=_['defaults'](config[_0x7e1d('0x16')],{'host':_0x7e1d('0x17'),'port':0x18eb});var socket=require(_0x7e1d('0x18'))(new Redis(config['redis']));require(_0x7e1d('0x19'))[_0x7e1d('0x1a')](socket);function respondWithStatusCode(_0x5cafde,_0x514641){_0x514641=_0x514641||0xcc;return function(_0x401fe1){if(_0x401fe1){return _0x5cafde[_0x7e1d('0x1b')](_0x514641);}return _0x5cafde[_0x7e1d('0x1c')](_0x514641)['end']();};}function respondWithResult(_0x25f214,_0x2420e8){_0x2420e8=_0x2420e8||0xc8;return function(_0x528fd0){if(_0x528fd0){return _0x25f214[_0x7e1d('0x1c')](_0x2420e8)[_0x7e1d('0x1d')](_0x528fd0);}};}function respondWithFilteredResult(_0x3eb945,_0x2e6067){return function(_0x5a9abe){if(_0x5a9abe){var _0x15dcbe=typeof _0x2e6067[_0x7e1d('0x1e')]===_0x7e1d('0x1f')&&typeof _0x2e6067[_0x7e1d('0x20')]===_0x7e1d('0x1f');var _0x3671d3=_0x5a9abe[_0x7e1d('0x21')];var _0x52cd38=_0x15dcbe?0x0:_0x2e6067[_0x7e1d('0x1e')];var _0x32cecb=_0x15dcbe?_0x5a9abe[_0x7e1d('0x21')]:_0x2e6067[_0x7e1d('0x1e')]+_0x2e6067[_0x7e1d('0x20')];var _0x5480fe;if(_0x32cecb>=_0x3671d3){_0x32cecb=_0x3671d3;_0x5480fe=0xc8;}else{_0x5480fe=0xce;}_0x3eb945['status'](_0x5480fe);return _0x3eb945['set'](_0x7e1d('0x22'),_0x52cd38+'-'+_0x32cecb+'/'+_0x3671d3)[_0x7e1d('0x1d')](_0x5a9abe);}return null;};}function patchUpdates(_0x30229f){return function(_0x49ea3a){try{jsonpatch[_0x7e1d('0x23')](_0x49ea3a,_0x30229f,!![]);}catch(_0x56653f){return BPromise[_0x7e1d('0x24')](_0x56653f);}return _0x49ea3a[_0x7e1d('0x25')]();};}function saveUpdates(_0xcc5980,_0x221ed5){return function(_0x16e753){if(_0x16e753){return _0x16e753[_0x7e1d('0x26')](_0xcc5980)['then'](function(_0x1fd926){return _0x1fd926;});}return null;};}function removeEntity(_0x45473a,_0x12ba7f){return function(_0x194765){if(_0x194765){return _0x194765[_0x7e1d('0x27')]()[_0x7e1d('0x28')](function(){_0x45473a[_0x7e1d('0x1c')](0xcc)[_0x7e1d('0x29')]();});}};}function handleEntityNotFound(_0x50c8fd,_0x38bb7d){return function(_0x248b1a){if(!_0x248b1a){_0x50c8fd['sendStatus'](0x194);}return _0x248b1a;};}function handleError(_0x23adc5,_0x20fe65){_0x20fe65=_0x20fe65||0x1f4;return function(_0x4ebce1){logger[_0x7e1d('0x2a')](_0x4ebce1[_0x7e1d('0x2b')]);if(_0x4ebce1[_0x7e1d('0x2c')]){delete _0x4ebce1[_0x7e1d('0x2c')];}_0x23adc5[_0x7e1d('0x1c')](_0x20fe65)[_0x7e1d('0x2d')](_0x4ebce1);};}exports[_0x7e1d('0x2e')]=function(_0x7b6836,_0x12ad82){var _0x19f6ae={},_0x568746={},_0xfaefdb={'count':0x0,'rows':[]};var _0x3293bf=_[_0x7e1d('0x2f')](db[_0x7e1d('0x30')][_0x7e1d('0x31')],function(_0x416bf3){return{'name':_0x416bf3[_0x7e1d('0x32')],'type':_0x416bf3[_0x7e1d('0x33')][_0x7e1d('0x34')]};});_0x568746['model']=_['map'](_0x3293bf,_0x7e1d('0x2c'));_0x568746[_0x7e1d('0x35')]=_[_0x7e1d('0x36')](_0x7b6836[_0x7e1d('0x35')]);_0x568746['filters']=_[_0x7e1d('0x37')](_0x568746['model'],_0x568746[_0x7e1d('0x35')]);_0x19f6ae['attributes']=_[_0x7e1d('0x37')](_0x568746[_0x7e1d('0x38')],qs[_0x7e1d('0x39')](_0x7b6836['query'][_0x7e1d('0x39')]));_0x19f6ae[_0x7e1d('0x3a')]=_0x19f6ae['attributes']['length']?_0x19f6ae['attributes']:_0x568746[_0x7e1d('0x38')];if(!_0x7b6836[_0x7e1d('0x35')][_0x7e1d('0x3b')](_0x7e1d('0x3c'))){_0x19f6ae[_0x7e1d('0x20')]=qs['limit'](_0x7b6836['query'][_0x7e1d('0x20')]);_0x19f6ae[_0x7e1d('0x1e')]=qs['offset'](_0x7b6836[_0x7e1d('0x35')][_0x7e1d('0x1e')]);}_0x19f6ae[_0x7e1d('0x3d')]=qs[_0x7e1d('0x3e')](_0x7b6836[_0x7e1d('0x35')]['sort']);_0x19f6ae[_0x7e1d('0x3f')]=qs['filters'](_[_0x7e1d('0x40')](_0x7b6836[_0x7e1d('0x35')],_0x568746['filters']),_0x3293bf);if(_0x7b6836[_0x7e1d('0x35')]['filter']){_0x19f6ae[_0x7e1d('0x3f')]=_[_0x7e1d('0x41')](_0x19f6ae[_0x7e1d('0x3f')],{'$or':_[_0x7e1d('0x2f')](_0x3293bf,function(_0x30c8e9){if(_0x30c8e9[_0x7e1d('0x33')]!==_0x7e1d('0x42')){var _0x507b95={};_0x507b95[_0x30c8e9[_0x7e1d('0x2c')]]={'$like':'%'+_0x7b6836[_0x7e1d('0x35')][_0x7e1d('0x43')]+'%'};return _0x507b95;}})});}_0x19f6ae=_[_0x7e1d('0x41')]({},_0x19f6ae,_0x7b6836[_0x7e1d('0x44')]);var _0x2f939e={'where':_0x19f6ae[_0x7e1d('0x3f')]};return db[_0x7e1d('0x30')][_0x7e1d('0x21')](_0x2f939e)[_0x7e1d('0x28')](function(_0x5dd3f6){_0xfaefdb[_0x7e1d('0x21')]=_0x5dd3f6;if(_0x7b6836[_0x7e1d('0x35')][_0x7e1d('0x45')]){_0x19f6ae[_0x7e1d('0x46')]=[{'all':!![]}];}return db[_0x7e1d('0x30')][_0x7e1d('0x47')](_0x19f6ae);})[_0x7e1d('0x28')](function(_0x5959){_0xfaefdb['rows']=_0x5959;return _0xfaefdb;})[_0x7e1d('0x28')](respondWithFilteredResult(_0x12ad82,_0x19f6ae))[_0x7e1d('0x48')](handleError(_0x12ad82,null));};exports[_0x7e1d('0x49')]=function(_0x149fa6,_0xf8e424){var _0x485f34={'raw':![],'where':{'id':_0x149fa6[_0x7e1d('0x4a')]['id']}},_0x448a6b={};_0x448a6b[_0x7e1d('0x38')]=_['keys'](db['UserProfile'][_0x7e1d('0x31')]);_0x448a6b['query']=_[_0x7e1d('0x36')](_0x149fa6[_0x7e1d('0x35')]);_0x448a6b['filters']=_[_0x7e1d('0x37')](_0x448a6b[_0x7e1d('0x38')],_0x448a6b[_0x7e1d('0x35')]);_0x485f34['attributes']=_[_0x7e1d('0x37')](_0x448a6b['model'],qs[_0x7e1d('0x39')](_0x149fa6[_0x7e1d('0x35')][_0x7e1d('0x39')]));_0x485f34[_0x7e1d('0x3a')]=_0x485f34[_0x7e1d('0x3a')]['length']?_0x485f34[_0x7e1d('0x3a')]:_0x448a6b[_0x7e1d('0x38')];if(_0x149fa6['query'][_0x7e1d('0x45')]){_0x485f34[_0x7e1d('0x46')]=[{'all':!![]}];}_0x485f34=_[_0x7e1d('0x41')]({},_0x485f34,_0x149fa6['options']);return db['UserProfile'][_0x7e1d('0x4b')](_0x485f34)[_0x7e1d('0x28')](handleEntityNotFound(_0xf8e424,null))[_0x7e1d('0x28')](respondWithResult(_0xf8e424,null))[_0x7e1d('0x48')](handleError(_0xf8e424,null));};exports['create']=function(_0x395b11,_0x2a107a){return db[_0x7e1d('0x30')]['create'](_0x395b11[_0x7e1d('0x4c')],{})[_0x7e1d('0x28')](respondWithResult(_0x2a107a,0xc9))['catch'](handleError(_0x2a107a,null));};exports[_0x7e1d('0x4d')]=function(_0x443294,_0x23ebdf){var _0x46f6e8={'where':{'id':_0x443294['params']['id']}},_0x552900={};_0x552900[_0x7e1d('0x38')]=_[_0x7e1d('0x36')](db[_0x7e1d('0x30')]['rawAttributes']);_0x46f6e8[_0x7e1d('0x3a')]=_['intersection'](_0x552900['model'],qs[_0x7e1d('0x39')](_0x443294[_0x7e1d('0x35')][_0x7e1d('0x39')]));_0x46f6e8[_0x7e1d('0x3a')]=_0x46f6e8[_0x7e1d('0x3a')]['length']?_0x46f6e8['attributes']:_0x552900[_0x7e1d('0x38')];if(_0x443294['query']['includeAll']){_0x46f6e8['include']=[{'all':!![]}];}_0x46f6e8=_['merge']({},_0x46f6e8,_0x443294[_0x7e1d('0x44')]);return db[_0x7e1d('0x30')][_0x7e1d('0x4b')](_0x46f6e8)[_0x7e1d('0x28')](handleEntityNotFound(_0x23ebdf,null))['then'](function(_0x9a35cf){if(_0x9a35cf){var _0xa24982=_0x9a35cf[_0x7e1d('0x4e')]({'plain':!![]});_0xa24982=qs['omit'](_0xa24982,['id',_0x7e1d('0x4f'),_0x7e1d('0x50'),_0x7e1d('0x51')]);_0x443294[_0x7e1d('0x4c')]=_[_0x7e1d('0x52')](_0x443294[_0x7e1d('0x4c')],['id',_0x7e1d('0x4f'),'updatedAt']);return db[_0x7e1d('0x53')][_0x7e1d('0x54')](function(_0x5d5c0a){return db[_0x7e1d('0x30')][_0x7e1d('0x55')](_[_0x7e1d('0x41')](_0xa24982,_0x443294[_0x7e1d('0x4c')]),{'include':_0x443294[_0x7e1d('0x35')][_0x7e1d('0x45')]?[{'all':!![]}]:undefined,'transaction':_0x5d5c0a})[_0x7e1d('0x28')](function(_0x5c80ad){var _0x173511=_0x5c80ad[_0x7e1d('0x4e')]({'plain':!![]});return db[_0x7e1d('0x56')][_0x7e1d('0x47')]({'where':{'userProfileId':_0x443294[_0x7e1d('0x4a')]['id']},'raw':!![]})[_0x7e1d('0x28')](function(_0xf10186){if(_0xf10186){return BPromise[_0x7e1d('0x57')](_0xf10186,function(_0xfc1e37){return new BPromise(function(_0x6f25fc,_0x378aba){if(_0xfc1e37['autoAssociation']===null||_0xfc1e37[_0x7e1d('0x58')]===0x1)_0x6f25fc(null);return db[_0x7e1d('0x59')][_0x7e1d('0x47')]({'where':{'sectionId':_0xfc1e37['id']},'raw':!![]})['then'](function(_0x5c1b97){var _0x56dc54=_[_0x7e1d('0x2f')](_0x5c1b97,function(_0x12a1c7){return qs[_0x7e1d('0x52')](_0x12a1c7,['id',_0x7e1d('0x4f'),_0x7e1d('0x50'),_0x7e1d('0x5a')]);});_0x6f25fc(_0x56dc54);})[_0x7e1d('0x48')](function(_0x22eb12){_0x378aba(_0x22eb12);});})['then'](function(_0x2c6a5c){var _0x5d3551=qs[_0x7e1d('0x52')](_0xfc1e37,['id',_0x7e1d('0x4f'),_0x7e1d('0x50')]);_0x5d3551['userProfileId']=_0x173511['id'];if(_0x2c6a5c)_0x5d3551['Resources']=_0x2c6a5c;return _0x5d3551;})['then'](function(_0x639b25){return db[_0x7e1d('0x56')][_0x7e1d('0x55')](_0x639b25,{'include':[{'model':db[_0x7e1d('0x59')],'as':_0x7e1d('0x5b')}],'raw':!![],'transaction':_0x5d5c0a});});})[_0x7e1d('0x28')](function(){return _0x173511;});}});});});}})[_0x7e1d('0x28')](respondWithResult(_0x23ebdf,0xc9))[_0x7e1d('0x48')](handleError(_0x23ebdf,null));};exports[_0x7e1d('0x26')]=function(_0x13a222,_0x134a02){if(_0x13a222['body']['id']){delete _0x13a222[_0x7e1d('0x4c')]['id'];}return db[_0x7e1d('0x30')][_0x7e1d('0x4b')]({'where':{'id':_0x13a222[_0x7e1d('0x4a')]['id']}})[_0x7e1d('0x28')](handleEntityNotFound(_0x134a02,null))[_0x7e1d('0x28')](saveUpdates(_0x13a222[_0x7e1d('0x4c')],null))[_0x7e1d('0x28')](respondWithResult(_0x134a02,null))[_0x7e1d('0x48')](handleError(_0x134a02,null));};exports['destroy']=function(_0x2f24ac,_0x21284b){return db[_0x7e1d('0x30')]['find']({'where':{'id':_0x2f24ac[_0x7e1d('0x4a')]['id']}})[_0x7e1d('0x28')](handleEntityNotFound(_0x21284b,null))[_0x7e1d('0x28')](removeEntity(_0x21284b,null))[_0x7e1d('0x48')](handleError(_0x21284b,null));};exports[_0x7e1d('0x5c')]=function(_0x344571,_0x2ef4bb){return db['UserProfile'][_0x7e1d('0x5c')]()[_0x7e1d('0x28')](respondWithResult(_0x2ef4bb,null))[_0x7e1d('0x48')](handleError(_0x2ef4bb,null));};exports[_0x7e1d('0x5d')]=function(_0x42bed9,_0x2ac2e1){var _0x248fae=_0x42bed9['body'];return db[_0x7e1d('0x30')][_0x7e1d('0x4b')]({'where':{'id':_0x42bed9[_0x7e1d('0x4a')]['id']}})[_0x7e1d('0x28')](handleEntityNotFound(_0x2ac2e1,null))[_0x7e1d('0x28')](function(_0x1960f1){if(_0x1960f1){return db['sequelize'][_0x7e1d('0x54')](function(_0x538596){return db[_0x7e1d('0x56')][_0x7e1d('0x27')]({'where':{'userProfileId':_0x42bed9['params']['id'],'sectionId':_[_0x7e1d('0x2f')](_0x248fae,function(_0x23892c){return _0x23892c[_0x7e1d('0x5a')];})},'transaction':_0x538596})[_0x7e1d('0x28')](function(){var _0x893c1c=_[_0x7e1d('0x2f')](_0x248fae,function(_0x1e9d26){_0x1e9d26[_0x7e1d('0x5e')]=_0x42bed9['params']['id'];return _0x1e9d26;});var _0x2948e2=[];return BPromise['each'](_0x893c1c,function(_0x1889a0){return db[_0x7e1d('0x56')][_0x7e1d('0x55')](_0x1889a0,{'include':[{'model':db[_0x7e1d('0x59')],'as':_0x7e1d('0x5b')}],'raw':!![],'transaction':_0x538596})[_0x7e1d('0x28')](function(_0x216e93){_0x2948e2['push'](_0x216e93['get']({'plain':!![]}));});})[_0x7e1d('0x28')](function(){return _0x2948e2;});});});}})[_0x7e1d('0x28')](function(_0x7b943){return _0x7b943;})[_0x7e1d('0x28')](respondWithResult(_0x2ac2e1,null))[_0x7e1d('0x48')](handleError(_0x2ac2e1,null));};exports[_0x7e1d('0x5f')]=function(_0x20bdce,_0x476622){var _0x270a75;return db[_0x7e1d('0x30')]['find']({'where':{'id':_0x20bdce['params']['id']},'attributes':['id',_0x7e1d('0x2c')]})[_0x7e1d('0x28')](handleEntityNotFound(_0x476622,null))['then'](function(_0x4ac845){if(_0x4ac845){_0x270a75=_0x4ac845;return db[_0x7e1d('0x56')][_0x7e1d('0x27')]({'where':{'userProfileId':_0x20bdce['params']['id'],'sectionId':_0x20bdce['query']['ids']}});}})[_0x7e1d('0x28')](function(){return _0x270a75;})[_0x7e1d('0x28')](respondWithStatusCode(_0x476622,null))['catch'](handleError(_0x476622,null));};exports[_0x7e1d('0x60')]=function(_0x303fd7,_0x44347c){var _0x4a8f98=[];var _0x18cad1=[];return db['UserProfileSection']['findAll']({'where':{'userProfileId':_0x303fd7[_0x7e1d('0x4a')]['id']},'raw':!![]})[_0x7e1d('0x28')](function(_0x407a05){_0x4a8f98=_['filter'](_0x407a05,function(_0x14259c){return _0x14259c[_0x7e1d('0x61')]===0x1||_[_0x7e1d('0x62')]([0x3eb,0x709],_0x14259c[_0x7e1d('0x5a')]);});if(!_[_0x7e1d('0x63')](_0x4a8f98)){return _[_0x7e1d('0x2f')](_0x4a8f98,function(_0x3211bb){return _0x3211bb[_0x7e1d('0x5a')];});}else{return;}})[_0x7e1d('0x28')](function(_0x5c1b15){if(_0x5c1b15)_0x18cad1=_0x5c1b15;if(_[_0x7e1d('0x62')](_0x18cad1,0x64)){var _0x41e2c7=_[_0x7e1d('0x4b')](_0x4a8f98,{'sectionId':0x64});return hasDefaultDashboard(_0x41e2c7)['then'](function(_0x1bcd88){return _[_0x7e1d('0x2f')](_0x4a8f98,function(_0x3de20f){if(_0x3de20f[_0x7e1d('0x5a')]===0x64){_0x3de20f[_0x7e1d('0x64')]=_0x1bcd88;}return _0x3de20f;});});}else{return;}})[_0x7e1d('0x28')](function(_0x4e9fa9){if(_0x4e9fa9)_0x4a8f98=_0x4e9fa9;if(_[_0x7e1d('0x62')](_0x18cad1,0x3eb)){var _0x306164=_['find'](_0x4a8f98,{'sectionId':0x3eb});return getCustomDashboards(_0x306164)[_0x7e1d('0x28')](function(_0x3c8818){return _[_0x7e1d('0x2f')](_0x4a8f98,function(_0x225658){if(_0x306164[_0x7e1d('0x61')]){if(_0x225658[_0x7e1d('0x5a')]===0x3eb){_0x225658[_0x7e1d('0x64')]=_0x3c8818;}}else{if(_0x225658[_0x7e1d('0x5a')]===0x64){_0x225658[_0x7e1d('0x64')]=_0x3c8818;}}return _0x225658;});});}else{return;}})[_0x7e1d('0x28')](function(_0x229bce){if(_0x229bce)_0x4a8f98=_0x229bce;if(_['includes'](_0x18cad1,0x709)){var _0xb91b72=_[_0x7e1d('0x4b')](_0x4a8f98,{'sectionId':0x709});return getPlugins(_0xb91b72)['then'](function(_0x517a36){if(_0xb91b72[_0x7e1d('0x61')]){return _[_0x7e1d('0x2f')](_0x4a8f98,function(_0x2fba76){if(_0x2fba76['sectionId']===0x709){_0x2fba76[_0x7e1d('0x64')]=_0x517a36;}return _0x2fba76;});}else{var _0x4be476={'sectionId':0x76c,'enabled':0x1,'subsections':_0x517a36};var _0x53e272=_[_0x7e1d('0x2f')](_0x4a8f98);_0x53e272['push'](_0x4be476);return _0x53e272;}});}else{return;}})['then'](function(_0x1870ff){if(_0x1870ff)_0x4a8f98=_0x1870ff;return _[_0x7e1d('0x43')](_0x4a8f98,[_0x7e1d('0x61'),0x1]);})[_0x7e1d('0x28')](respondWithResult(_0x44347c,null))['catch'](handleError(_0x44347c,null));};function hasDefaultDashboard(_0x38a010){var _0x2185b7=[0x65];return new BPromise(function(_0x29b092,_0x24b393){try{if(_0x38a010[_0x7e1d('0x58')]){_0x29b092(_0x2185b7);}else{return db[_0x7e1d('0x59')][_0x7e1d('0x65')]({'where':{'sectionId':_0x38a010['id']},'raw':!![]})[_0x7e1d('0x28')](function(_0x6cfd6b){_0x6cfd6b?_0x29b092(_0x2185b7):_0x29b092();});}}catch(_0x33c0c1){_0x24b393(_0x33c0c1);}});}function getCustomDashboards(_0x4e5e80){var _0x3d3fec=[];return new BPromise(function(_0x2d1987,_0x560310){try{if(_0x4e5e80[_0x7e1d('0x58')]){return db[_0x7e1d('0x66')][_0x7e1d('0x47')]({'raw':!![]})['then'](function(_0x249e63){_0x249e63[_0x7e1d('0x67')](function(_0x34739a){_0x3d3fec[_0x7e1d('0x68')](_0x34739a['id']+0x1869f);});_0x2d1987(_0x3d3fec);});}else{return db['UserProfileResource'][_0x7e1d('0x47')]({'where':{'sectionId':_0x4e5e80['id']},'raw':!![]})[_0x7e1d('0x28')](function(_0x48c6ad){_0x48c6ad['forEach'](function(_0x4fa526){_0x3d3fec[_0x7e1d('0x68')](_0x4fa526[_0x7e1d('0x69')]+0x1869f);});_0x2d1987(_0x3d3fec);});}}catch(_0x40dffc){_0x560310(_0x40dffc);}});}function getPlugins(_0x15afa9){var _0x2afe23=[];return new BPromise(function(_0x97d18f,_0x2034d3){try{if(_0x15afa9[_0x7e1d('0x58')]){return db[_0x7e1d('0x6a')][_0x7e1d('0x47')]({'raw':!![]})[_0x7e1d('0x28')](function(_0x2798dd){_0x2798dd['forEach'](function(_0x4be603){_0x2afe23[_0x7e1d('0x68')](_0x4be603['id']+0x15b38);});_0x97d18f(_0x2afe23);});}else{return db[_0x7e1d('0x59')][_0x7e1d('0x47')]({'where':{'sectionId':_0x15afa9['id']},'raw':!![]})['then'](function(_0x214b03){_0x214b03['forEach'](function(_0x4d1b83){_0x2afe23[_0x7e1d('0x68')](_0x4d1b83[_0x7e1d('0x69')]+0x15b38);});_0x97d18f(_0x2afe23);});}}catch(_0xea0878){_0x2034d3(_0xea0878);}});}exports['addResources']=function(_0x5bb064,_0x1e1126){return db[_0x7e1d('0x30')][_0x7e1d('0x4b')]({'where':{'id':_0x5bb064['params']['id']}})[_0x7e1d('0x28')](handleEntityNotFound(_0x1e1126,null))[_0x7e1d('0x28')](function(_0x75a8ab){if(_0x75a8ab){return db[_0x7e1d('0x53')][_0x7e1d('0x54')](function(_0x4c9980){return db[_0x7e1d('0x56')][_0x7e1d('0x47')]({'where':{'userProfileId':_0x5bb064[_0x7e1d('0x4a')]['id']},'attributes':['id'],'raw':!![]})[_0x7e1d('0x28')](function(_0x2d3fc8){if(_0x2d3fc8){return db['UserProfileSection'][_0x7e1d('0x27')]({'where':{'userProfileId':_0x5bb064[_0x7e1d('0x4a')]['id'],'id':_['map'](_0x2d3fc8,function(_0x4386fb){return _0x4386fb['id'];})},'transaction':_0x4c9980});}})[_0x7e1d('0x28')](function(_0x5881fb){var _0x47d0f5=_[_0x7e1d('0x2f')](_0x5bb064[_0x7e1d('0x4c')],function(_0x4b0c4e){_0x4b0c4e[_0x7e1d('0x5e')]=_0x5bb064[_0x7e1d('0x4a')]['id'];return _0x4b0c4e;});return db[_0x7e1d('0x56')][_0x7e1d('0x6b')](_0x47d0f5,{'raw':!![],'transaction':_0x4c9980});})[_0x7e1d('0x28')](function(_0x1a92ec){var _0x5b0dd0=_[_0x7e1d('0x43')](_[_0x7e1d('0x2f')](_0x1a92ec,function(_0x30bcc2){return _0x30bcc2[_0x7e1d('0x4e')]({'plain':!![]});}),{'includeAll':![]});if(_0x5b0dd0){return db[_0x7e1d('0x56')][_0x7e1d('0x47')]({'where':{'userProfileId':_0x5bb064[_0x7e1d('0x4a')]['id'],'sectionId':_[_0x7e1d('0x2f')](_0x5b0dd0,function(_0x4c6659){return _0x4c6659[_0x7e1d('0x5a')];})},'attributes':['id','sectionId'],'raw':!![]})[_0x7e1d('0x28')](function(_0x16c955){var _0x3caae9=_[_0x7e1d('0x2f')](_0x5bb064['body'],function(_0x49c5de){_0x49c5de['userProfileId']=_0x5bb064['params']['id'];return _0x49c5de;});return db[_0x7e1d('0x59')][_0x7e1d('0x6b')](_0x3caae9,{'raw':!![],'transaction':_0x4c9980});});}})[_0x7e1d('0x48')](handleError(_0x1e1126,null));});}})[_0x7e1d('0x28')](function(_0x32f713){var _0x4f1cae=_[_0x7e1d('0x2f')](_0x32f713,function(_0x3507a4){return _0x3507a4[_0x7e1d('0x4e')]({'plain':!![]});});})[_0x7e1d('0x28')](respondWithResult(_0x1e1126,null))[_0x7e1d('0x48')](handleError(_0x1e1126,null));};exports['removeResources']=function(_0x5bc720,_0x1d8e3e,_0x4dde69){return db['UserProfile'][_0x7e1d('0x4b')]({'where':{'id':_0x5bc720['params']['id']}})['then'](handleEntityNotFound(_0x1d8e3e,null))[_0x7e1d('0x28')](function(_0x254e90){if(_0x254e90){return _0x254e90[_0x7e1d('0x6c')](_0x5bc720[_0x7e1d('0x35')][_0x7e1d('0x6d')]);}})[_0x7e1d('0x28')](respondWithStatusCode(_0x1d8e3e,null))[_0x7e1d('0x48')](handleError(_0x1d8e3e,null));};exports[_0x7e1d('0x6e')]=function(_0x512c38,_0x1163e7){var _0x37d969={};if(!_0x512c38[_0x7e1d('0x35')][_0x7e1d('0x6f')])throw new Error(_0x7e1d('0x70'));if(!_0x512c38[_0x7e1d('0x35')]['hasOwnProperty'](_0x7e1d('0x3c'))){_0x37d969[_0x7e1d('0x20')]=qs['limit'](_0x512c38[_0x7e1d('0x35')]['limit']);_0x37d969[_0x7e1d('0x1e')]=qs[_0x7e1d('0x1e')](_0x512c38[_0x7e1d('0x35')]['offset']);}return db[_0x7e1d('0x30')][_0x7e1d('0x4b')]({'where':{'id':_0x512c38[_0x7e1d('0x4a')]['id']}})['then'](function(_0x4aa222){if(!_0x4aa222)throw new Error(_0x7e1d('0x71')+_0x512c38['params']['id']);return db[_0x7e1d('0x30')][_0x7e1d('0x6e')](_0x512c38);})[_0x7e1d('0x28')](respondWithFilteredResult(_0x1163e7,_0x37d969))[_0x7e1d('0x48')](handleError(_0x1163e7,null));};
\ No newline at end of file
index ebf535c..8b395c6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['remove','emit','hasOwnProperty','hook','events','setMaxListeners'];(function(_0x4e48fa,_0x47db76){var _0x26d7ff=function(_0x3e3e87){while(--_0x3e3e87){_0x4e48fa['push'](_0x4e48fa['shift']());}};_0x26d7ff(++_0x47db76);}(_0x0295,0x1f0));var _0x5029=function(_0x5bf79a,_0x2eaa1d){_0x5bf79a=_0x5bf79a-0x0;var _0x3ff10f=_0x0295[_0x5bf79a];return _0x3ff10f;};'use strict';var EventEmitter=require(_0x5029('0x0'));var UserProfile=require('../../mysqldb')['db']['UserProfile'];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x5029('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':'update','afterDestroy':_0x5029('0x2')};function emitEvent(_0x36335d){return function(_0x157a4f,_0x3d0af1,_0x170504){UserProfileEvents[_0x5029('0x3')](_0x36335d+':'+_0x157a4f['id'],_0x157a4f);UserProfileEvents[_0x5029('0x3')](_0x36335d,_0x157a4f);_0x170504(null);};}for(var e in events){if(events[_0x5029('0x4')](e)){var event=events[e];UserProfile[_0x5029('0x5')](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
+var _0x77d4=['update','remove','emit','hasOwnProperty','hook','../../mysqldb','setMaxListeners'];(function(_0x142c85,_0x56e09d){var _0x2cf70e=function(_0x1a6998){while(--_0x1a6998){_0x142c85['push'](_0x142c85['shift']());}};_0x2cf70e(++_0x56e09d);}(_0x77d4,0x108));var _0x477d=function(_0x1a15ed,_0x269dc4){_0x1a15ed=_0x1a15ed-0x0;var _0x386030=_0x77d4[_0x1a15ed];return _0x386030;};'use strict';var EventEmitter=require('events');var UserProfile=require(_0x477d('0x0'))['db']['UserProfile'];var UserProfileEvents=new EventEmitter();UserProfileEvents[_0x477d('0x1')](0x0);var events={'afterCreate':'save','afterUpdate':_0x477d('0x2'),'afterDestroy':_0x477d('0x3')};function emitEvent(_0x53637c){return function(_0x53e1b8,_0x16213f,_0xf3cde0){UserProfileEvents[_0x477d('0x4')](_0x53637c+':'+_0x53e1b8['id'],_0x53e1b8);UserProfileEvents[_0x477d('0x4')](_0x53637c,_0x53e1b8);_0xf3cde0(null);};}for(var e in events){if(events[_0x477d('0x5')](e)){var event=events[e];UserProfile[_0x477d('0x6')](e,emitEvent(event));}}module['exports']=UserProfileEvents;
\ No newline at end of file
index 140e5cb..bb31528 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xef0f=['sms','dataValues','fax','mail','openchannel','whatsapp','lodash','../../components/parsers/qs','squel','exports','models','filter','findAll','then','associatedResources','map','catch','field','value','model','resolve','AnalyticExtractedReport','type','toLowerCase','squareprojects','odbc','childModel','SquareOdbc','squarerecordings','SquareRecording','parentSections','SquareProjects','name','projects','JscriptyProject','contacts','CmContact','Lists','ListId','lists','CmList','CmCustomField','ChatWebsite','faxqueues','FaxAccount','internalroutes','outboundroutes','contexts','VoiceContext','voicemails','VoiceMail','voicerecordings','VoiceRecording','membername','User','role','agent','Telephones','telephone','VoiceQueues','VoiceQueue','inbound','QueueCampaigns','outbound','VoiceMusicOnHold','chanspies','VoiceChanSpy','VoicePrefix','Campaign','mailqueues','MailQueue','mailaccounts','mailsubstatuses','openchannelaccounts','OpenchannelAccount','smsqueues','SmsQueue','smsaccounts','whatsappqueues','whatsappaccounts','teams','Team','voicequeues','queuecampaigns','agents','Users','admin','Agents','ZendeskAccount','salesforceaccounts','SalesforceAccount','sugarcrmaccounts','SugarcrmAccount','deskaccounts','DeskAccount','zohoaccounts','ZohoAccount','cannedanswers','CannedAnswer','dispositions','Disposition','customdashboards','Dashboard','intervals','Interval','pauses','Schedule','sounds','tags','Tag','templates','Template','triggers','Trigger','trunks','Trunk','Variable','Reports','reportId','metrics','charAt','slice','Sequelize','SELECT','select','ui.','ui.createdAt','user_has_','_interactions','where','ui.UserId\x20=\x20?','sequelize','query','toString','OpenTabs','UserProfile','user_profiles','section','mergeResources','length','push','UserProfileSection','find','all','ignore','isEmpty','union','autoAssociation','filters','attributes','fields','hasOwnProperty','limit','offset','sort','merge','key','VIRTUAL','foreignKey','forEach','options','include','reportType','default','DefaultReports','CustomReports','count','rows','ids','includeAll','Tags','color','tag','ThroughTags','openTabs','true','chat'];(function(_0x35a573,_0x588822){var _0x2ad431=function(_0x105979){while(--_0x105979){_0x35a573['push'](_0x35a573['shift']());}};_0x2ad431(++_0x588822);}(_0xef0f,0x168));var _0xfef0=function(_0x241b4a,_0x59aa9a){_0x241b4a=_0x241b4a-0x0;var _0x27d1dc=_0xef0f[_0x241b4a];return _0x27d1dc;};'use strict';var _=require(_0xfef0('0x0'));var attributes=require('./userProfile.attributes');var qs=require(_0xfef0('0x1'));var squel=require(_0xfef0('0x2'));module[_0xfef0('0x3')]=function(_0x4d29e5){var _0x3fc3a1=_0x4d29e5[_0xfef0('0x4')];function _0x4618fb(_0x4e1af6,_0x2a6fcf){return new Promise(function(_0x9b8b9e,_0x2697df){if(!_0x2a6fcf)return _0x9b8b9e(null);var _0x315a8c=_0x2a6fcf[_0xfef0('0x5')]?{[_0x2a6fcf[_0xfef0('0x5')]['field']]:_0x2a6fcf[_0xfef0('0x5')]['value']}:undefined;return _0x3fc3a1[_0x4e1af6][_0xfef0('0x6')]({'where':_0x315a8c,'raw':!![]})[_0xfef0('0x7')](function(_0x3a81cc){_0x2a6fcf[_0xfef0('0x8')]=_[_0xfef0('0x9')](_0x3a81cc,'id');_0x9b8b9e(_0x2a6fcf);})[_0xfef0('0xa')](function(_0xc177db){_0x2697df(_0xc177db);});});}function _0x4bd6f2(_0x11bbca,_0x111878){return new Promise(function(_0x410234,_0x356298){var _0x87f32a=_0x11bbca[_0xfef0('0x5')]?{[_0x11bbca['filter'][_0xfef0('0xb')]]:_0x11bbca[_0xfef0('0x5')][_0xfef0('0xc')]}:undefined;return _0x3fc3a1[_0x11bbca[_0xfef0('0xd')]][_0xfef0('0x6')]({'where':_0x87f32a,'raw':!![]})[_0xfef0('0x7')](function(_0xa9f040){_0x111878['associatedResources']=_[_0xfef0('0x9')](_0xa9f040,function(_0x554aaa){return _0x554aaa['name'];});_0x410234(_0x111878);})['catch'](function(_0x118b8d){_0x356298(_0x118b8d);});});}function _0x284b6d(_0x3510a7,_0x1bce2f,_0x2a96d9){if(!_0x1bce2f)return Promise[_0xfef0('0xe')](null);return new Promise(function(_0x155833,_0x2887e6){return _0x3fc3a1['UserProfileResource'][_0xfef0('0x6')]({'where':{'sectionId':_0x1bce2f['id']},'raw':!![]})[_0xfef0('0x7')](function(_0x1577fa){if(_0x3510a7[_0xfef0('0xb')]&&_0x3510a7[_0xfef0('0xb')]!=='id'){_0x1bce2f['associatedResources']=_[_0xfef0('0x9')](_0x1577fa,function(_0x4e24de){return _0x4e24de[_0x3510a7[_0xfef0('0xb')]];});}else{if(_0x2a96d9===_0xfef0('0xf')){_0x1bce2f[_0xfef0('0x8')]=_['map'](_0x1577fa,function(_0x2be956){return{'id':_0x2be956['resourceId'],'type':_0x2be956[_0xfef0('0x10')]};});}else{_0x1bce2f[_0xfef0('0x8')]=_['map'](_0x1577fa,function(_0x4897af){return _0x4897af['resourceId'];});}}_0x155833(_0x1bce2f);})[_0xfef0('0xa')](function(_0x4faea8){_0x2887e6(_0x4faea8);});});}function _0x1f9970(_0x46b34a,_0x1a8d66){var _0x4483f2={'parentSections':[]};switch(_0x46b34a[_0xfef0('0x11')]()){case _0xfef0('0x12'):_0x4483f2['childModel']='SquareProject';break;case _0xfef0('0x13'):_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x15');break;case _0xfef0('0x16'):_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x17');_0x4483f2[_0xfef0('0x18')]=[{'name':_0xfef0('0x19'),'field':_0xfef0('0x1a'),'foreignKey':'projectName'}];break;case _0xfef0('0x1b'):_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x1c');break;case _0xfef0('0x1d'):_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x1e');_0x4483f2[_0xfef0('0x18')]=[{'name':_0xfef0('0x1f'),'field':'id','foreignKey':_0xfef0('0x20')}];break;case _0xfef0('0x21'):_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x22');break;case'companies':_0x4483f2[_0xfef0('0x14')]='CmCompany';break;case'globalcustomfields':_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x23');break;case'chatqueues':_0x4483f2['childModel']='ChatQueue';break;case'chatwebsites':_0x4483f2['childModel']=_0xfef0('0x24');break;case _0xfef0('0x25'):_0x4483f2[_0xfef0('0x14')]='FaxQueue';break;case'faxaccounts':_0x4483f2['childModel']=_0xfef0('0x26');break;case'inboundroutes':case _0xfef0('0x27'):case _0xfef0('0x28'):_0x4483f2[_0xfef0('0x14')]='VoiceExtension';break;case _0xfef0('0x29'):_0x4483f2['childModel']=_0xfef0('0x2a');break;case _0xfef0('0x2b'):_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x2c');break;case _0xfef0('0x2d'):_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x2e');_0x4483f2[_0xfef0('0x18')]=[{'name':'Agents','field':_0xfef0('0x1a'),'foreignKey':_0xfef0('0x2f'),'model':_0xfef0('0x30'),'filter':{'field':_0xfef0('0x31'),'value':[_0xfef0('0x32')]}},{'name':_0xfef0('0x33'),'field':_0xfef0('0x1a'),'foreignKey':_0xfef0('0x2f'),'model':_0xfef0('0x30'),'filter':{'field':_0xfef0('0x31'),'value':[_0xfef0('0x34')]}},{'name':_0xfef0('0x35'),'field':_0xfef0('0x1a'),'foreignKey':'queue','model':_0xfef0('0x36'),'filter':{'field':'type','value':[_0xfef0('0x37')]}},{'name':_0xfef0('0x38'),'field':_0xfef0('0x1a'),'foreignKey':'queue','model':_0xfef0('0x36'),'filter':{'field':_0xfef0('0x10'),'value':[_0xfef0('0x39')]}}];break;case'musiconholds':_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x3a');break;case _0xfef0('0x3b'):_0x4483f2['childModel']=_0xfef0('0x3c');break;case'voiceprefixes':_0x4483f2['childModel']=_0xfef0('0x3d');break;case'ivrcampaigns':_0x4483f2['childModel']=_0xfef0('0x3e');break;case _0xfef0('0x3f'):_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x40');break;case _0xfef0('0x41'):_0x4483f2[_0xfef0('0x14')]='MailAccount';break;case _0xfef0('0x42'):_0x4483f2[_0xfef0('0x14')]='MailSubstatus';break;case'openchannelqueues':_0x4483f2[_0xfef0('0x14')]='OpenchannelQueue';break;case _0xfef0('0x43'):_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x44');break;case _0xfef0('0x45'):_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x46');break;case _0xfef0('0x47'):_0x4483f2[_0xfef0('0x14')]='SmsAccount';break;case _0xfef0('0x48'):_0x4483f2['childModel']='WhatsappQueue';break;case _0xfef0('0x49'):_0x4483f2[_0xfef0('0x14')]='WhatsappAccount';break;case _0xfef0('0x4a'):_0x4483f2['childModel']=_0xfef0('0x4b');break;case _0xfef0('0x4c'):case _0xfef0('0x4d'):_0x4483f2[_0xfef0('0x14')]='VoiceQueue';if(_0x1a8d66){_0x4483f2[_0xfef0('0x18')]=[{'name':_0xfef0('0x35')},{'name':'QueueCampaigns'}];}break;case'users':case _0xfef0('0x4e'):case'telephones':_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x30');if(_0x1a8d66){_0x4483f2[_0xfef0('0x18')]=[{'name':_0xfef0('0x4f'),'filter':{'field':_0xfef0('0x31'),'value':[_0xfef0('0x50'),'user']},'ignore':!![]},{'name':_0xfef0('0x51')},{'name':'Telephones'}];}break;case'zendeskaccounts':_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x52');break;case _0xfef0('0x53'):_0x4483f2['childModel']=_0xfef0('0x54');break;case'freshdeskaccounts':_0x4483f2['childModel']='FreshdeskAccount';break;case _0xfef0('0x55'):_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x56');break;case _0xfef0('0x57'):_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x58');break;case _0xfef0('0x59'):_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x5a');break;case'vtigeraccounts':_0x4483f2['childModel']=_0xfef0('0x30');break;case _0xfef0('0x5b'):_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x5c');break;case _0xfef0('0x5d'):_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x5e');break;case _0xfef0('0x5f'):_0x4483f2['childModel']=_0xfef0('0x60');break;case _0xfef0('0x61'):_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x62');break;case _0xfef0('0x63'):_0x4483f2['childModel']='Pause';break;case'scheduler':_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x64');break;case _0xfef0('0x65'):_0x4483f2[_0xfef0('0x14')]='Sound';break;case _0xfef0('0x66'):_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x67');break;case _0xfef0('0x68'):_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x69');break;case _0xfef0('0x6a'):_0x4483f2['childModel']=_0xfef0('0x6b');break;case _0xfef0('0x6c'):_0x4483f2['childModel']=_0xfef0('0x6d');break;case'variables':_0x4483f2[_0xfef0('0x14')]=_0xfef0('0x6e');break;case'plugins':_0x4483f2[_0xfef0('0x14')]='Plugin';break;case'extractedreports':_0x4483f2['childModel']=_0xfef0('0xf');_0x4483f2[_0xfef0('0x18')]=[{'name':_0xfef0('0x6f'),'field':'id','foreignKey':_0xfef0('0x70')}];break;case _0xfef0('0x71'):_0x4483f2[_0xfef0('0x14')]='AnalyticMetric';break;}return _0x4483f2;}function _0xa365e5(_0x4156d5,_0x12f52d){var _0x45abb3=_0x4156d5[_0xfef0('0x72')](0x0)['toUpperCase']()+_0x4156d5[_0xfef0('0x73')](0x1);var _0x4aef94={'type':_0x3fc3a1[_0xfef0('0x74')]['QueryTypes'][_0xfef0('0x75')],'raw':!![]};return new Promise(function(_0x851e97,_0xdd1121){var _0x281259=squel[_0xfef0('0x76')]()['field'](_0xfef0('0x77')+_0x45abb3+'InteractionId','id')[_0xfef0('0xb')](_0xfef0('0x78'))['from'](_0xfef0('0x79')+_0x4156d5+_0xfef0('0x7a'),'ui')[_0xfef0('0x7b')](_0xfef0('0x7c'),_0x12f52d['id']);return _0x3fc3a1[_0xfef0('0x7d')][_0xfef0('0x7e')](_0x281259[_0xfef0('0x7f')](),_0x4aef94)[_0xfef0('0x7')](function(_0x17a595){_0x12f52d[_0x45abb3+_0xfef0('0x80')]=_0x17a595;_0x851e97(_0x17a595);})[_0xfef0('0xa')](function(_0x46d0bb){_0xdd1121(_0x46d0bb);});});}return _0x4d29e5['define'](_0xfef0('0x81'),attributes,{'tableName':_0xfef0('0x82'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x28cab7){var _0x312dcf={'raw':_0x28cab7[_0xfef0('0x7e')]['raw'],'where':{}};var _0x12e383={};var _0x15275e={'count':0x0,'rows':[]};var _0xf023ba=_0x28cab7[_0xfef0('0x7e')][_0xfef0('0x83')];var _0x1765e2=_0x28cab7[_0xfef0('0x7e')][_0xfef0('0x84')]||![];var _0x14d53d=_0x1f9970(_0xf023ba,_0x1765e2);if(!_0x14d53d[_0xfef0('0x14')])throw new Error('Invalid\x20section\x20\x27'+_0xf023ba+'\x27');var _0x100c6a=[{'name':_0xf023ba}];if(!_['isEmpty'](_0x14d53d[_0xfef0('0x18')]))_0x100c6a=_0x14d53d[_0xfef0('0x18')];var _0x5e3204=[];for(var _0x374b46=0x0;_0x374b46<_0x100c6a[_0xfef0('0x85')];_0x374b46++){_0x5e3204[_0xfef0('0x86')](_0x3fc3a1[_0xfef0('0x87')][_0xfef0('0x88')]({'where':{'userProfileId':_0x28cab7['params']['id'],'name':_0x100c6a[_0x374b46][_0xfef0('0x1a')]},'raw':!![]}));}return Promise[_0xfef0('0x89')](_0x5e3204)[_0xfef0('0x7')](function(_0x4f0737){var _0x117b74=_[_0xfef0('0x5')](_0x4f0737,function(_0x3e1d4a){return _0x3e1d4a?_0x3e1d4a:undefined;});var _0x6f759a=_[_0xfef0('0x5')](_0x100c6a,[_0xfef0('0x8a'),!![]]);var _0x45ba65=_['isEmpty'](_0x117b74)&&_[_0xfef0('0x8b')](_0x6f759a)?null:_[_0xfef0('0x8c')](_0x6f759a,_0x117b74);if(!_0x45ba65)return null;var _0x3cd0c5=[];for(var _0x350ca1=0x0;_0x350ca1<_0x45ba65[_0xfef0('0x85')];_0x350ca1++){var _0x2dde67=_['find'](_0x100c6a,function(_0x340517){return _0x45ba65[_0x350ca1]?_0x340517[_0xfef0('0x1a')]===_0x45ba65[_0x350ca1][_0xfef0('0x1a')]:null;});if(_0x2dde67){if(_0x45ba65[_0x350ca1][_0xfef0('0x8a')]){_0x3cd0c5['push'](_0x4618fb(_0x14d53d[_0xfef0('0x14')],_0x45ba65[_0x350ca1]));}else{if(!_0x45ba65[_0x350ca1][_0xfef0('0x8d')]){_0x3cd0c5['push'](_0x284b6d(_0x2dde67,_0x45ba65[_0x350ca1],_0x14d53d[_0xfef0('0x14')]));}else{if(_0x2dde67[_0xfef0('0xd')]){_0x3cd0c5[_0xfef0('0x86')](_0x4bd6f2(_0x2dde67,_0x45ba65[_0x350ca1]));}}}}}return Promise[_0xfef0('0x89')](_0x3cd0c5);})[_0xfef0('0x7')](function(_0x53a531){var _0x4eb78e=_0x53a531;var _0x5c3ef1=null;if(_0x4eb78e){_0x5c3ef1=_0x4eb78e[_0xfef0('0x85')]===0x1?_0x4eb78e[0x0]:null;}if(!_0x5c3ef1&&!_0x4eb78e)return _0x15275e;var _0xe36e48=_0x3fc3a1[_0x14d53d[_0xfef0('0x14')]]['rawAttributes'];_0x12e383[_0xfef0('0xd')]=_['keys'](_0xe36e48);_0x12e383['query']=_['keys'](_0x28cab7[_0xfef0('0x7e')]);_0x12e383[_0xfef0('0x8e')]=_['intersection'](_0x12e383[_0xfef0('0xd')],_0x12e383[_0xfef0('0x7e')]);_0x312dcf[_0xfef0('0x8f')]=_['intersection'](_0x12e383[_0xfef0('0xd')],qs['fields'](_0x28cab7['query'][_0xfef0('0x90')]));_0x312dcf[_0xfef0('0x8f')]=_0x312dcf[_0xfef0('0x8f')][_0xfef0('0x85')]?_0x312dcf['attributes']:_0x12e383['model'];if(!_0x28cab7['query'][_0xfef0('0x91')]('nolimit')){_0x312dcf[_0xfef0('0x92')]=qs[_0xfef0('0x92')](_0x28cab7[_0xfef0('0x7e')][_0xfef0('0x92')]);_0x312dcf[_0xfef0('0x93')]=qs['offset'](_0x28cab7[_0xfef0('0x7e')]['offset']);}_0x312dcf['order']=qs[_0xfef0('0x94')](_0x28cab7[_0xfef0('0x7e')][_0xfef0('0x94')]);_0x312dcf[_0xfef0('0x7b')]=qs['filters'](_['pick'](_0x28cab7[_0xfef0('0x7e')],_0x12e383[_0xfef0('0x8e')]));if(_0x28cab7['query'][_0xfef0('0x5')]){_0x312dcf[_0xfef0('0x7b')]=_[_0xfef0('0x95')](_0x312dcf[_0xfef0('0x7b')],{'$or':_[_0xfef0('0x9')](_0xe36e48,function(_0x9dfe03){if(_0x9dfe03[_0xfef0('0x10')][_0xfef0('0x96')]!==_0xfef0('0x97')){var _0x52fe45={};_0x52fe45[_0x9dfe03[_0xfef0('0xb')]]={'$like':'%'+_0x28cab7[_0xfef0('0x7e')][_0xfef0('0x5')]+'%'};return _0x52fe45;}})});}var _0x357e69=[];var _0x584927=null;var _0x2240da={};if(_0x5c3ef1){_0x584927=_[_0xfef0('0x88')](_0x100c6a,['name',_0x5c3ef1[_0xfef0('0x1a')]]);if(_0x584927[_0xfef0('0xb')]){_0x2240da={};if(_0x14d53d[_0xfef0('0x14')]===_0xfef0('0xf')){_0x2240da[_0x584927[_0xfef0('0x98')]]=_[_0xfef0('0x9')](_0x5c3ef1[_0xfef0('0x8')],'id');}else{_0x2240da[_0x584927[_0xfef0('0x98')]]=_0x5c3ef1[_0xfef0('0x8')];}_0x357e69[_0xfef0('0x86')](_0x2240da);}else{_0x312dcf[_0xfef0('0x7b')]['id']=_0x5c3ef1[_0xfef0('0x8')];}}else{for(var _0x283d5a=0x0;_0x283d5a<_0x4eb78e['length'];_0x283d5a++){_0x584927=_[_0xfef0('0x88')](_0x100c6a,['name',_0x4eb78e[_0x283d5a]['name']]);if(_0x584927[_0xfef0('0xb')]){_0x2240da={};_0x2240da[_0x584927[_0xfef0('0x98')]]=_0x4eb78e[_0x283d5a]['associatedResources'];_0x357e69[_0xfef0('0x86')](_0x2240da);}else{if(!_0x312dcf['where']['id'])_0x312dcf['where']['id']=[];_0x4eb78e[_0x283d5a][_0xfef0('0x8')][_0xfef0('0x99')](function(_0x4ebcf){_0x312dcf[_0xfef0('0x7b')]['id']['push'](_0x4ebcf);});}}}if(!_[_0xfef0('0x8b')](_0x357e69)){_0x312dcf[_0xfef0('0x7b')]=_['merge'](_0x312dcf[_0xfef0('0x7b')],{'$and':{'$or':_0x357e69}});}_0x312dcf=_[_0xfef0('0x95')]({},_0x312dcf,_0x28cab7[_0xfef0('0x9a')]);if(_0x5c3ef1&&!_0x5c3ef1['autoAssociation']&&_0x14d53d['childModel']===_0xfef0('0xf')){if(_0x28cab7['query']['includeAll']){_0x312dcf[_0xfef0('0x9b')]=[{'all':!![]}];}return _0x3fc3a1[_0x14d53d['childModel']][_0xfef0('0x6')](_0x312dcf)[_0xfef0('0x7')](function(_0x14fe33){var _0x44461c=[];_0x14fe33[_0xfef0('0x99')](function(_0x2cba75){var _0x29878f;switch(_0x2cba75[_0xfef0('0x9c')]){case _0xfef0('0x9d'):_0x29878f=_[_0xfef0('0x88')](_0x5c3ef1['associatedResources'],function(_0x15f829){return _0x15f829['id']===_0x2cba75['reportId']&&_0x15f829['type']===_0xfef0('0x9e');});break;case'custom':_0x29878f=_[_0xfef0('0x88')](_0x5c3ef1[_0xfef0('0x8')],function(_0x2e7268){return _0x2e7268['id']===_0x2cba75[_0xfef0('0x70')]&&_0x2e7268[_0xfef0('0x10')]===_0xfef0('0x9f');});break;}if(_0x29878f)_0x44461c['push'](_0x2cba75);});_0x15275e[_0xfef0('0xa0')]=_0x44461c[_0xfef0('0x85')];_0x15275e[_0xfef0('0xa1')]=_0x44461c;return _0x15275e;});}else{if(!_[_0xfef0('0x8b')](_0x28cab7[_0xfef0('0x7e')][_0xfef0('0xa2')])){_0x312dcf[_0xfef0('0x7b')]['id']=_0x312dcf[_0xfef0('0x7b')]['id']?_['intersection'](_0x312dcf[_0xfef0('0x7b')]['id'],_0x28cab7[_0xfef0('0x7e')]['ids']):_0x28cab7[_0xfef0('0x7e')][_0xfef0('0xa2')];}return _0x3fc3a1[_0x14d53d[_0xfef0('0x14')]]['count']({'where':_0x312dcf[_0xfef0('0x7b')]})['then'](function(_0x1cb952){_0x15275e[_0xfef0('0xa0')]=_0x1cb952;if(_0x28cab7['query'][_0xfef0('0xa3')]){if(_0x14d53d['childModel']===_0xfef0('0x1e')){_0x312dcf[_0xfef0('0x9b')]=[{'model':_0x3fc3a1[_0xfef0('0x67')],'as':_0xfef0('0xa4'),'attributes':['id',_0xfef0('0x1a'),_0xfef0('0xa5')],'required':_0x28cab7[_0xfef0('0x7e')][_0xfef0('0xa6')]?!![]:![]},{'model':_0x3fc3a1[_0xfef0('0x67')],'as':_0xfef0('0xa7'),'attributes':['id',_0xfef0('0x1a'),'color'],'through':_0x28cab7[_0xfef0('0x7e')]['tag']?{'attributes':[],'where':{'TagId':_0x28cab7['query'][_0xfef0('0xa6')]||undefined}}:{},'required':_0x28cab7['query'][_0xfef0('0xa6')]?!![]:![]}];}else{_0x312dcf['include']=[{'all':!![]}];}}return _0x3fc3a1[_0x14d53d['childModel']][_0xfef0('0x6')](_0x312dcf);})['then'](function(_0x4c3ec9){_0x15275e['rows']=_0x4c3ec9;if(_0xf023ba===_0xfef0('0x51')&&_0x28cab7[_0xfef0('0x7e')][_0xfef0('0xa8')]===_0xfef0('0xa9')){var _0x4e52b1=[];for(var _0x1bfd99=0x0;_0x1bfd99<_0x15275e[_0xfef0('0xa1')][_0xfef0('0x85')];_0x1bfd99++){_0x4e52b1[_0xfef0('0x86')](_0xa365e5(_0xfef0('0xaa'),_0x15275e['rows'][_0x1bfd99]['dataValues']));_0x4e52b1[_0xfef0('0x86')](_0xa365e5(_0xfef0('0xab'),_0x15275e['rows'][_0x1bfd99][_0xfef0('0xac')]));_0x4e52b1[_0xfef0('0x86')](_0xa365e5(_0xfef0('0xad'),_0x15275e[_0xfef0('0xa1')][_0x1bfd99][_0xfef0('0xac')]));_0x4e52b1[_0xfef0('0x86')](_0xa365e5(_0xfef0('0xae'),_0x15275e[_0xfef0('0xa1')][_0x1bfd99]['dataValues']));_0x4e52b1['push'](_0xa365e5(_0xfef0('0xaf'),_0x15275e[_0xfef0('0xa1')][_0x1bfd99][_0xfef0('0xac')]));_0x4e52b1[_0xfef0('0x86')](_0xa365e5(_0xfef0('0xb0'),_0x15275e[_0xfef0('0xa1')][_0x1bfd99][_0xfef0('0xac')]));}return Promise[_0xfef0('0x89')](_0x4e52b1)['then'](function(){return _0x15275e;});}return _0x15275e;});}});}}});};
\ No newline at end of file
+var _0x5f2f=['whatsappqueues','WhatsappQueue','whatsappaccounts','WhatsappAccount','teams','voicequeues','VoiceQueue','VoiceQueues','users','telephones','Users','role','admin','user','zendeskaccounts','salesforceaccounts','SalesforceAccount','FreshdeskAccount','sugarcrmaccounts','SugarcrmAccount','zohoaccounts','ZohoAccount','vtigeraccounts','CannedAnswer','Disposition','customdashboards','Dashboard','intervals','Interval','Pause','scheduler','Schedule','sounds','Sound','tags','Tag','Template','triggers','Trigger','trunks','Trunk','variables','plugins','Plugin','extractedreports','AnalyticExtractedReport','reportId','AnalyticMetric','toUpperCase','slice','Sequelize','SELECT','select','ui.','ui.createdAt','from','user_has_','_interactions','ui.UserId\x20=\x20?','toString','OpenTabs','UserProfile','user_profiles','query','raw','section','mergeResources','Invalid\x20section\x20\x27','isEmpty','push','UserProfileSection','find','params','all','union','length','ignore','autoAssociation','model','rawAttributes','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','key','foreignKey','forEach','options','includeAll','include','reportType','default','custom','count','rows','ids','CmContact','Tags','tag','ThroughTags','true','sms','dataValues','fax','openchannel','whatsapp','lodash','./userProfile.attributes','../../components/parsers/qs','squel','exports','models','filter','value','findAll','associatedResources','map','field','then','name','catch','resolve','UserProfileResource','type','resourceId','childModel','SquareProject','odbc','SquareOdbc','squarerecordings','SquareRecording','parentSections','projectName','projects','JscriptyProject','contacts','Lists','ListId','CmList','companies','CmCompany','globalcustomfields','chatqueues','ChatQueue','ChatWebsite','faxqueues','FaxQueue','faxaccounts','FaxAccount','internalroutes','outboundroutes','VoiceExtension','contexts','VoiceContext','VoiceMail','Agents','membername','agent','Telephones','User','telephone','queue','inbound','QueueCampaigns','outbound','musiconholds','VoiceMusicOnHold','chanspies','voiceprefixes','ivrcampaigns','Campaign','mailqueues','MailQueue','mailaccounts','mailsubstatuses','MailSubstatus','openchannelaccounts','smsqueues','SmsQueue','smsaccounts','SmsAccount'];(function(_0x5bd344,_0x3fac8e){var _0x94d800=function(_0x5c005f){while(--_0x5c005f){_0x5bd344['push'](_0x5bd344['shift']());}};_0x94d800(++_0x3fac8e);}(_0x5f2f,0x73));var _0xf5f2=function(_0x14bfd2,_0x9495a8){_0x14bfd2=_0x14bfd2-0x0;var _0x416c5c=_0x5f2f[_0x14bfd2];return _0x416c5c;};'use strict';var _=require(_0xf5f2('0x0'));var attributes=require(_0xf5f2('0x1'));var qs=require(_0xf5f2('0x2'));var squel=require(_0xf5f2('0x3'));module[_0xf5f2('0x4')]=function(_0x174bc7){var _0x3c72ee=_0x174bc7[_0xf5f2('0x5')];function _0x501fbd(_0x4854b6,_0x1665c7){return new Promise(function(_0x192215,_0xad7f65){if(!_0x1665c7)return _0x192215(null);var _0x3eebf6=_0x1665c7[_0xf5f2('0x6')]?{[_0x1665c7[_0xf5f2('0x6')]['field']]:_0x1665c7[_0xf5f2('0x6')][_0xf5f2('0x7')]}:undefined;return _0x3c72ee[_0x4854b6][_0xf5f2('0x8')]({'where':_0x3eebf6,'raw':!![]})['then'](function(_0x375da4){_0x1665c7[_0xf5f2('0x9')]=_[_0xf5f2('0xa')](_0x375da4,'id');_0x192215(_0x1665c7);})['catch'](function(_0x977a59){_0xad7f65(_0x977a59);});});}function _0x4ebbbe(_0x53fb33,_0xa7e1a6){return new Promise(function(_0x151aba,_0x4b78cd){var _0x336f6b=_0x53fb33[_0xf5f2('0x6')]?{[_0x53fb33[_0xf5f2('0x6')][_0xf5f2('0xb')]]:_0x53fb33[_0xf5f2('0x6')][_0xf5f2('0x7')]}:undefined;return _0x3c72ee[_0x53fb33['model']][_0xf5f2('0x8')]({'where':_0x336f6b,'raw':!![]})[_0xf5f2('0xc')](function(_0x269909){_0xa7e1a6[_0xf5f2('0x9')]=_[_0xf5f2('0xa')](_0x269909,function(_0x4d97fc){return _0x4d97fc[_0xf5f2('0xd')];});_0x151aba(_0xa7e1a6);})[_0xf5f2('0xe')](function(_0x17d656){_0x4b78cd(_0x17d656);});});}function _0x1b6dd2(_0x23e23a,_0x3a9dbb,_0xdb61b3){if(!_0x3a9dbb)return Promise[_0xf5f2('0xf')](null);return new Promise(function(_0x11f702,_0x228ace){return _0x3c72ee[_0xf5f2('0x10')][_0xf5f2('0x8')]({'where':{'sectionId':_0x3a9dbb['id']},'raw':!![]})[_0xf5f2('0xc')](function(_0x3ee69){if(_0x23e23a[_0xf5f2('0xb')]&&_0x23e23a[_0xf5f2('0xb')]!=='id'){_0x3a9dbb[_0xf5f2('0x9')]=_['map'](_0x3ee69,function(_0x34706d){return _0x34706d[_0x23e23a[_0xf5f2('0xb')]];});}else{if(_0xdb61b3==='AnalyticExtractedReport'){_0x3a9dbb['associatedResources']=_[_0xf5f2('0xa')](_0x3ee69,function(_0x388e6c){return{'id':_0x388e6c['resourceId'],'type':_0x388e6c[_0xf5f2('0x11')]};});}else{_0x3a9dbb[_0xf5f2('0x9')]=_[_0xf5f2('0xa')](_0x3ee69,function(_0x39c024){return _0x39c024[_0xf5f2('0x12')];});}}_0x11f702(_0x3a9dbb);})['catch'](function(_0x21cd91){_0x228ace(_0x21cd91);});});}function _0x4669a6(_0x4e8bda,_0x2833fe){var _0x287ad5={'parentSections':[]};switch(_0x4e8bda['toLowerCase']()){case'squareprojects':_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x14');break;case _0xf5f2('0x15'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x16');break;case _0xf5f2('0x17'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x18');_0x287ad5[_0xf5f2('0x19')]=[{'name':'SquareProjects','field':_0xf5f2('0xd'),'foreignKey':_0xf5f2('0x1a')}];break;case _0xf5f2('0x1b'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x1c');break;case _0xf5f2('0x1d'):_0x287ad5['childModel']='CmContact';_0x287ad5[_0xf5f2('0x19')]=[{'name':_0xf5f2('0x1e'),'field':'id','foreignKey':_0xf5f2('0x1f')}];break;case'lists':_0x287ad5['childModel']=_0xf5f2('0x20');break;case _0xf5f2('0x21'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x22');break;case _0xf5f2('0x23'):_0x287ad5['childModel']='CmCustomField';break;case _0xf5f2('0x24'):_0x287ad5['childModel']=_0xf5f2('0x25');break;case'chatwebsites':_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x26');break;case _0xf5f2('0x27'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x28');break;case _0xf5f2('0x29'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x2a');break;case'inboundroutes':case _0xf5f2('0x2b'):case _0xf5f2('0x2c'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x2d');break;case _0xf5f2('0x2e'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x2f');break;case'voicemails':_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x30');break;case'voicerecordings':_0x287ad5[_0xf5f2('0x13')]='VoiceRecording';_0x287ad5[_0xf5f2('0x19')]=[{'name':_0xf5f2('0x31'),'field':_0xf5f2('0xd'),'foreignKey':_0xf5f2('0x32'),'model':'User','filter':{'field':'role','value':[_0xf5f2('0x33')]}},{'name':_0xf5f2('0x34'),'field':_0xf5f2('0xd'),'foreignKey':'membername','model':_0xf5f2('0x35'),'filter':{'field':'role','value':[_0xf5f2('0x36')]}},{'name':'VoiceQueues','field':_0xf5f2('0xd'),'foreignKey':_0xf5f2('0x37'),'model':'VoiceQueue','filter':{'field':_0xf5f2('0x11'),'value':[_0xf5f2('0x38')]}},{'name':_0xf5f2('0x39'),'field':_0xf5f2('0xd'),'foreignKey':'queue','model':'VoiceQueue','filter':{'field':_0xf5f2('0x11'),'value':[_0xf5f2('0x3a')]}}];break;case _0xf5f2('0x3b'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x3c');break;case _0xf5f2('0x3d'):_0x287ad5[_0xf5f2('0x13')]='VoiceChanSpy';break;case _0xf5f2('0x3e'):_0x287ad5[_0xf5f2('0x13')]='VoicePrefix';break;case _0xf5f2('0x3f'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x40');break;case _0xf5f2('0x41'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x42');break;case _0xf5f2('0x43'):_0x287ad5[_0xf5f2('0x13')]='MailAccount';break;case _0xf5f2('0x44'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x45');break;case'openchannelqueues':_0x287ad5['childModel']='OpenchannelQueue';break;case _0xf5f2('0x46'):_0x287ad5[_0xf5f2('0x13')]='OpenchannelAccount';break;case _0xf5f2('0x47'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x48');break;case _0xf5f2('0x49'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x4a');break;case _0xf5f2('0x4b'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x4c');break;case _0xf5f2('0x4d'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x4e');break;case _0xf5f2('0x4f'):_0x287ad5[_0xf5f2('0x13')]='Team';break;case _0xf5f2('0x50'):case'queuecampaigns':_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x51');if(_0x2833fe){_0x287ad5[_0xf5f2('0x19')]=[{'name':_0xf5f2('0x52')},{'name':_0xf5f2('0x39')}];}break;case _0xf5f2('0x53'):case'agents':case _0xf5f2('0x54'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x35');if(_0x2833fe){_0x287ad5[_0xf5f2('0x19')]=[{'name':_0xf5f2('0x55'),'filter':{'field':_0xf5f2('0x56'),'value':[_0xf5f2('0x57'),_0xf5f2('0x58')]},'ignore':!![]},{'name':'Agents'},{'name':_0xf5f2('0x34')}];}break;case _0xf5f2('0x59'):_0x287ad5[_0xf5f2('0x13')]='ZendeskAccount';break;case _0xf5f2('0x5a'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x5b');break;case'freshdeskaccounts':_0x287ad5['childModel']=_0xf5f2('0x5c');break;case _0xf5f2('0x5d'):_0x287ad5['childModel']=_0xf5f2('0x5e');break;case'deskaccounts':_0x287ad5[_0xf5f2('0x13')]='DeskAccount';break;case _0xf5f2('0x5f'):_0x287ad5['childModel']=_0xf5f2('0x60');break;case _0xf5f2('0x61'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x35');break;case'cannedanswers':_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x62');break;case'dispositions':_0x287ad5['childModel']=_0xf5f2('0x63');break;case _0xf5f2('0x64'):_0x287ad5['childModel']=_0xf5f2('0x65');break;case _0xf5f2('0x66'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x67');break;case'pauses':_0x287ad5['childModel']=_0xf5f2('0x68');break;case _0xf5f2('0x69'):_0x287ad5['childModel']=_0xf5f2('0x6a');break;case _0xf5f2('0x6b'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x6c');break;case _0xf5f2('0x6d'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x6e');break;case'templates':_0x287ad5['childModel']=_0xf5f2('0x6f');break;case _0xf5f2('0x70'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x71');break;case _0xf5f2('0x72'):_0x287ad5['childModel']=_0xf5f2('0x73');break;case _0xf5f2('0x74'):_0x287ad5[_0xf5f2('0x13')]='Variable';break;case _0xf5f2('0x75'):_0x287ad5['childModel']=_0xf5f2('0x76');break;case _0xf5f2('0x77'):_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x78');_0x287ad5['parentSections']=[{'name':'Reports','field':'id','foreignKey':_0xf5f2('0x79')}];break;case'metrics':_0x287ad5[_0xf5f2('0x13')]=_0xf5f2('0x7a');break;}return _0x287ad5;}function _0x572ec1(_0x3f0579,_0xa4c0be){var _0x2a8f6d=_0x3f0579['charAt'](0x0)[_0xf5f2('0x7b')]()+_0x3f0579[_0xf5f2('0x7c')](0x1);var _0x42cc27={'type':_0x3c72ee[_0xf5f2('0x7d')]['QueryTypes'][_0xf5f2('0x7e')],'raw':!![]};return new Promise(function(_0x506fe5,_0x2cbe1e){var _0x2a773d=squel[_0xf5f2('0x7f')]()[_0xf5f2('0xb')](_0xf5f2('0x80')+_0x2a8f6d+'InteractionId','id')[_0xf5f2('0xb')](_0xf5f2('0x81'))[_0xf5f2('0x82')](_0xf5f2('0x83')+_0x3f0579+_0xf5f2('0x84'),'ui')['where'](_0xf5f2('0x85'),_0xa4c0be['id']);return _0x3c72ee['sequelize']['query'](_0x2a773d[_0xf5f2('0x86')](),_0x42cc27)['then'](function(_0x10f2b8){_0xa4c0be[_0x2a8f6d+_0xf5f2('0x87')]=_0x10f2b8;_0x506fe5(_0x10f2b8);})[_0xf5f2('0xe')](function(_0x123b93){_0x2cbe1e(_0x123b93);});});}return _0x174bc7['define'](_0xf5f2('0x88'),attributes,{'tableName':_0xf5f2('0x89'),'paranoid':![],'indexes':[],'timestamps':!![],'classMethods':{'getResources':function(_0x1ec682){var _0x18c41f={'raw':_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0x8b')],'where':{}};var _0x158768={};var _0x4a7be9={'count':0x0,'rows':[]};var _0x1f55af=_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0x8c')];var _0x45c7c1=_0x1ec682['query'][_0xf5f2('0x8d')]||![];var _0x4cce08=_0x4669a6(_0x1f55af,_0x45c7c1);if(!_0x4cce08[_0xf5f2('0x13')])throw new Error(_0xf5f2('0x8e')+_0x1f55af+'\x27');var _0x5588cf=[{'name':_0x1f55af}];if(!_[_0xf5f2('0x8f')](_0x4cce08[_0xf5f2('0x19')]))_0x5588cf=_0x4cce08[_0xf5f2('0x19')];var _0x138c55=[];for(var _0x146462=0x0;_0x146462<_0x5588cf['length'];_0x146462++){_0x138c55[_0xf5f2('0x90')](_0x3c72ee[_0xf5f2('0x91')][_0xf5f2('0x92')]({'where':{'userProfileId':_0x1ec682[_0xf5f2('0x93')]['id'],'name':_0x5588cf[_0x146462][_0xf5f2('0xd')]},'raw':!![]}));}return Promise[_0xf5f2('0x94')](_0x138c55)['then'](function(_0x321d4d){var _0x3f475e=_['filter'](_0x321d4d,function(_0x3f677e){return _0x3f677e?_0x3f677e:undefined;});var _0x36503c=_[_0xf5f2('0x6')](_0x5588cf,['ignore',!![]]);var _0x551cc9=_['isEmpty'](_0x3f475e)&&_[_0xf5f2('0x8f')](_0x36503c)?null:_[_0xf5f2('0x95')](_0x36503c,_0x3f475e);if(!_0x551cc9)return null;var _0x35f6a2=[];for(var _0x450691=0x0;_0x450691<_0x551cc9[_0xf5f2('0x96')];_0x450691++){var _0x4d878e=_[_0xf5f2('0x92')](_0x5588cf,function(_0x3a98b4){return _0x551cc9[_0x450691]?_0x3a98b4[_0xf5f2('0xd')]===_0x551cc9[_0x450691][_0xf5f2('0xd')]:null;});if(_0x4d878e){if(_0x551cc9[_0x450691][_0xf5f2('0x97')]){_0x35f6a2[_0xf5f2('0x90')](_0x501fbd(_0x4cce08[_0xf5f2('0x13')],_0x551cc9[_0x450691]));}else{if(!_0x551cc9[_0x450691][_0xf5f2('0x98')]){_0x35f6a2[_0xf5f2('0x90')](_0x1b6dd2(_0x4d878e,_0x551cc9[_0x450691],_0x4cce08[_0xf5f2('0x13')]));}else{if(_0x4d878e[_0xf5f2('0x99')]){_0x35f6a2['push'](_0x4ebbbe(_0x4d878e,_0x551cc9[_0x450691]));}}}}}return Promise['all'](_0x35f6a2);})['then'](function(_0x40f362){var _0xafba8e=_0x40f362;var _0x3d3181=null;if(_0xafba8e){_0x3d3181=_0xafba8e[_0xf5f2('0x96')]===0x1?_0xafba8e[0x0]:null;}if(!_0x3d3181&&!_0xafba8e)return _0x4a7be9;var _0x1bb752=_0x3c72ee[_0x4cce08['childModel']][_0xf5f2('0x9a')];_0x158768[_0xf5f2('0x99')]=_[_0xf5f2('0x9b')](_0x1bb752);_0x158768[_0xf5f2('0x8a')]=_[_0xf5f2('0x9b')](_0x1ec682['query']);_0x158768[_0xf5f2('0x9c')]=_[_0xf5f2('0x9d')](_0x158768['model'],_0x158768[_0xf5f2('0x8a')]);_0x18c41f[_0xf5f2('0x9e')]=_[_0xf5f2('0x9d')](_0x158768[_0xf5f2('0x99')],qs['fields'](_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0x9f')]));_0x18c41f[_0xf5f2('0x9e')]=_0x18c41f[_0xf5f2('0x9e')][_0xf5f2('0x96')]?_0x18c41f['attributes']:_0x158768['model'];if(!_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0xa0')](_0xf5f2('0xa1'))){_0x18c41f[_0xf5f2('0xa2')]=qs['limit'](_0x1ec682['query'][_0xf5f2('0xa2')]);_0x18c41f['offset']=qs['offset'](_0x1ec682['query']['offset']);}_0x18c41f[_0xf5f2('0xa3')]=qs[_0xf5f2('0xa4')](_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0xa4')]);_0x18c41f[_0xf5f2('0xa5')]=qs[_0xf5f2('0x9c')](_[_0xf5f2('0xa6')](_0x1ec682[_0xf5f2('0x8a')],_0x158768[_0xf5f2('0x9c')]));if(_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0x6')]){_0x18c41f[_0xf5f2('0xa5')]=_[_0xf5f2('0xa7')](_0x18c41f[_0xf5f2('0xa5')],{'$or':_[_0xf5f2('0xa')](_0x1bb752,function(_0x21da15){if(_0x21da15[_0xf5f2('0x11')][_0xf5f2('0xa8')]!=='VIRTUAL'){var _0xe7ac8={};_0xe7ac8[_0x21da15[_0xf5f2('0xb')]]={'$like':'%'+_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0x6')]+'%'};return _0xe7ac8;}})});}var _0x18c353=[];var _0x308220=null;var _0x16491c={};if(_0x3d3181){_0x308220=_[_0xf5f2('0x92')](_0x5588cf,['name',_0x3d3181[_0xf5f2('0xd')]]);if(_0x308220['field']){_0x16491c={};if(_0x4cce08['childModel']==='AnalyticExtractedReport'){_0x16491c[_0x308220['foreignKey']]=_['map'](_0x3d3181['associatedResources'],'id');}else{_0x16491c[_0x308220[_0xf5f2('0xa9')]]=_0x3d3181[_0xf5f2('0x9')];}_0x18c353[_0xf5f2('0x90')](_0x16491c);}else{_0x18c41f[_0xf5f2('0xa5')]['id']=_0x3d3181[_0xf5f2('0x9')];}}else{for(var _0x3cf857=0x0;_0x3cf857<_0xafba8e['length'];_0x3cf857++){_0x308220=_['find'](_0x5588cf,[_0xf5f2('0xd'),_0xafba8e[_0x3cf857]['name']]);if(_0x308220[_0xf5f2('0xb')]){_0x16491c={};_0x16491c[_0x308220[_0xf5f2('0xa9')]]=_0xafba8e[_0x3cf857]['associatedResources'];_0x18c353['push'](_0x16491c);}else{if(!_0x18c41f[_0xf5f2('0xa5')]['id'])_0x18c41f[_0xf5f2('0xa5')]['id']=[];_0xafba8e[_0x3cf857]['associatedResources'][_0xf5f2('0xaa')](function(_0x388b32){_0x18c41f['where']['id'][_0xf5f2('0x90')](_0x388b32);});}}}if(!_[_0xf5f2('0x8f')](_0x18c353)){_0x18c41f[_0xf5f2('0xa5')]=_['merge'](_0x18c41f[_0xf5f2('0xa5')],{'$and':{'$or':_0x18c353}});}_0x18c41f=_[_0xf5f2('0xa7')]({},_0x18c41f,_0x1ec682[_0xf5f2('0xab')]);if(_0x3d3181&&!_0x3d3181[_0xf5f2('0x98')]&&_0x4cce08[_0xf5f2('0x13')]===_0xf5f2('0x78')){if(_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0xac')]){_0x18c41f[_0xf5f2('0xad')]=[{'all':!![]}];}return _0x3c72ee[_0x4cce08[_0xf5f2('0x13')]][_0xf5f2('0x8')](_0x18c41f)[_0xf5f2('0xc')](function(_0x6f9240){var _0x407dd8=[];_0x6f9240[_0xf5f2('0xaa')](function(_0x28b9cd){var _0x1902c6;switch(_0x28b9cd[_0xf5f2('0xae')]){case _0xf5f2('0xaf'):_0x1902c6=_[_0xf5f2('0x92')](_0x3d3181[_0xf5f2('0x9')],function(_0x533aff){return _0x533aff['id']===_0x28b9cd[_0xf5f2('0x79')]&&_0x533aff[_0xf5f2('0x11')]==='DefaultReports';});break;case _0xf5f2('0xb0'):_0x1902c6=_[_0xf5f2('0x92')](_0x3d3181['associatedResources'],function(_0xb56304){return _0xb56304['id']===_0x28b9cd[_0xf5f2('0x79')]&&_0xb56304[_0xf5f2('0x11')]==='CustomReports';});break;}if(_0x1902c6)_0x407dd8['push'](_0x28b9cd);});_0x4a7be9[_0xf5f2('0xb1')]=_0x407dd8[_0xf5f2('0x96')];_0x4a7be9[_0xf5f2('0xb2')]=_0x407dd8;return _0x4a7be9;});}else{if(!_['isEmpty'](_0x1ec682['query'][_0xf5f2('0xb3')])){_0x18c41f[_0xf5f2('0xa5')]['id']=_0x18c41f[_0xf5f2('0xa5')]['id']?_['intersection'](_0x18c41f['where']['id'],_0x1ec682['query']['ids']):_0x1ec682['query'][_0xf5f2('0xb3')];}return _0x3c72ee[_0x4cce08['childModel']][_0xf5f2('0xb1')]({'where':_0x18c41f[_0xf5f2('0xa5')]})[_0xf5f2('0xc')](function(_0x43a167){_0x4a7be9[_0xf5f2('0xb1')]=_0x43a167;if(_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0xac')]){if(_0x4cce08[_0xf5f2('0x13')]===_0xf5f2('0xb4')){_0x18c41f[_0xf5f2('0xad')]=[{'model':_0x3c72ee[_0xf5f2('0x6e')],'as':_0xf5f2('0xb5'),'attributes':['id',_0xf5f2('0xd'),'color'],'required':_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0xb6')]?!![]:![]},{'model':_0x3c72ee['Tag'],'as':_0xf5f2('0xb7'),'attributes':['id',_0xf5f2('0xd'),'color'],'through':_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0xb6')]?{'attributes':[],'where':{'TagId':_0x1ec682[_0xf5f2('0x8a')]['tag']||undefined}}:{},'required':_0x1ec682[_0xf5f2('0x8a')][_0xf5f2('0xb6')]?!![]:![]}];}else{_0x18c41f['include']=[{'all':!![]}];}}return _0x3c72ee[_0x4cce08[_0xf5f2('0x13')]][_0xf5f2('0x8')](_0x18c41f);})[_0xf5f2('0xc')](function(_0x517aa8){_0x4a7be9[_0xf5f2('0xb2')]=_0x517aa8;if(_0x1f55af==='Agents'&&_0x1ec682[_0xf5f2('0x8a')]['openTabs']===_0xf5f2('0xb8')){var _0x3cbc58=[];for(var _0x120e2b=0x0;_0x120e2b<_0x4a7be9[_0xf5f2('0xb2')]['length'];_0x120e2b++){_0x3cbc58[_0xf5f2('0x90')](_0x572ec1('chat',_0x4a7be9['rows'][_0x120e2b]['dataValues']));_0x3cbc58[_0xf5f2('0x90')](_0x572ec1(_0xf5f2('0xb9'),_0x4a7be9['rows'][_0x120e2b][_0xf5f2('0xba')]));_0x3cbc58[_0xf5f2('0x90')](_0x572ec1(_0xf5f2('0xbb'),_0x4a7be9[_0xf5f2('0xb2')][_0x120e2b][_0xf5f2('0xba')]));_0x3cbc58[_0xf5f2('0x90')](_0x572ec1('mail',_0x4a7be9[_0xf5f2('0xb2')][_0x120e2b][_0xf5f2('0xba')]));_0x3cbc58['push'](_0x572ec1(_0xf5f2('0xbc'),_0x4a7be9[_0xf5f2('0xb2')][_0x120e2b]['dataValues']));_0x3cbc58[_0xf5f2('0x90')](_0x572ec1(_0xf5f2('0xbd'),_0x4a7be9[_0xf5f2('0xb2')][_0x120e2b][_0xf5f2('0xba')]));}return Promise[_0xf5f2('0x94')](_0x3cbc58)[_0xf5f2('0xc')](function(){return _0x4a7be9;});}return _0x4a7be9;});}});}}});};
\ No newline at end of file
index 1b5f1a5..5e65493 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e69=['register','request','then','info','UserProfile,\x20%s,\x20%s','request\x20sent','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','code','message','catch','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','./userProfile.socket'];(function(_0x182ac4,_0x587fcb){var _0x4773f2=function(_0x855697){while(--_0x855697){_0x182ac4['push'](_0x182ac4['shift']());}};_0x4773f2(++_0x587fcb);}(_0x9e69,0x150));var _0x99e6=function(_0x2ceaa2,_0x47ec31){_0x2ceaa2=_0x2ceaa2-0x0;var _0x3e6fb4=_0x9e69[_0x2ceaa2];return _0x3e6fb4;};'use strict';var _=require('lodash');var util=require(_0x99e6('0x0'));var moment=require(_0x99e6('0x1'));var BPromise=require(_0x99e6('0x2'));var rs=require(_0x99e6('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x99e6('0x4'))['db'];var utils=require(_0x99e6('0x5'));var logger=require('../../config/logger')(_0x99e6('0x6'));var config=require(_0x99e6('0x7'));var jayson=require(_0x99e6('0x8'));var client=jayson['client'][_0x99e6('0x9')]({'port':0x232a});config[_0x99e6('0xa')]=_[_0x99e6('0xb')](config['redis'],{'host':_0x99e6('0xc'),'port':0x18eb});var socket=require(_0x99e6('0xd'))(new Redis(config['redis']));require(_0x99e6('0xe'))[_0x99e6('0xf')](socket);function respondWithRpcPromise(_0x5d2a2b,_0x26bcdd,_0x74906a){return new BPromise(function(_0x490a04,_0x4d2d8c){return client[_0x99e6('0x10')](_0x5d2a2b,_0x74906a)[_0x99e6('0x11')](function(_0x45d416){logger[_0x99e6('0x12')](_0x99e6('0x13'),_0x26bcdd,_0x99e6('0x14'));logger['debug'](_0x99e6('0x15'),_0x26bcdd,_0x99e6('0x14'),JSON[_0x99e6('0x16')](_0x45d416));if(_0x45d416['error']){if(_0x45d416[_0x99e6('0x17')][_0x99e6('0x18')]===0x1f4){logger[_0x99e6('0x17')]('UserProfile,\x20%s,\x20%s',_0x26bcdd,_0x45d416['error']['message']);return _0x4d2d8c(_0x45d416[_0x99e6('0x17')][_0x99e6('0x19')]);}logger[_0x99e6('0x17')]('UserProfile,\x20%s,\x20%s',_0x26bcdd,_0x45d416[_0x99e6('0x17')][_0x99e6('0x19')]);return _0x490a04(_0x45d416[_0x99e6('0x17')][_0x99e6('0x19')]);}else{logger[_0x99e6('0x12')]('UserProfile,\x20%s,\x20%s',_0x26bcdd,_0x99e6('0x14'));_0x490a04(_0x45d416['result'][_0x99e6('0x19')]);}})[_0x99e6('0x1a')](function(_0x538651){logger[_0x99e6('0x17')](_0x99e6('0x13'),_0x26bcdd,_0x538651);_0x4d2d8c(_0x538651);});});}
\ No newline at end of file
+var _0x1574=['moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','register','request','info','UserProfile,\x20%s,\x20%s','request\x20sent','debug','UserProfile,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','lodash','util'];(function(_0x4ae6ef,_0xc2af80){var _0x3cbb4e=function(_0x569ad5){while(--_0x569ad5){_0x4ae6ef['push'](_0x4ae6ef['shift']());}};_0x3cbb4e(++_0xc2af80);}(_0x1574,0x148));var _0x4157=function(_0x561ed2,_0x1387aa){_0x561ed2=_0x561ed2-0x0;var _0x4e01f3=_0x1574[_0x561ed2];return _0x4e01f3;};'use strict';var _=require(_0x4157('0x0'));var util=require(_0x4157('0x1'));var moment=require(_0x4157('0x2'));var BPromise=require(_0x4157('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x4157('0x4'));var db=require(_0x4157('0x5'))['db'];var utils=require(_0x4157('0x6'));var logger=require(_0x4157('0x7'))(_0x4157('0x8'));var config=require(_0x4157('0x9'));var jayson=require(_0x4157('0xa'));var client=jayson[_0x4157('0xb')][_0x4157('0xc')]({'port':0x232a});config[_0x4157('0xd')]=_[_0x4157('0xe')](config[_0x4157('0xd')],{'host':_0x4157('0xf'),'port':0x18eb});var socket=require(_0x4157('0x10'))(new Redis(config[_0x4157('0xd')]));require('./userProfile.socket')[_0x4157('0x11')](socket);function respondWithRpcPromise(_0x598545,_0x4ba25d,_0x5a60a8){return new BPromise(function(_0x2e221c,_0xa5e176){return client[_0x4157('0x12')](_0x598545,_0x5a60a8)['then'](function(_0x43be92){logger[_0x4157('0x13')](_0x4157('0x14'),_0x4ba25d,_0x4157('0x15'));logger[_0x4157('0x16')](_0x4157('0x17'),_0x4ba25d,_0x4157('0x15'),JSON[_0x4157('0x18')](_0x43be92));if(_0x43be92[_0x4157('0x19')]){if(_0x43be92[_0x4157('0x19')][_0x4157('0x1a')]===0x1f4){logger[_0x4157('0x19')]('UserProfile,\x20%s,\x20%s',_0x4ba25d,_0x43be92[_0x4157('0x19')]['message']);return _0xa5e176(_0x43be92[_0x4157('0x19')][_0x4157('0x1b')]);}logger[_0x4157('0x19')](_0x4157('0x14'),_0x4ba25d,_0x43be92[_0x4157('0x19')][_0x4157('0x1b')]);return _0x2e221c(_0x43be92[_0x4157('0x19')][_0x4157('0x1b')]);}else{logger[_0x4157('0x13')](_0x4157('0x14'),_0x4ba25d,_0x4157('0x15'));_0x2e221c(_0x43be92[_0x4157('0x1c')]['message']);}})[_0x4157('0x1d')](function(_0x4f9de8){logger[_0x4157('0x19')](_0x4157('0x14'),_0x4ba25d,_0x4f9de8);_0xa5e176(_0x4f9de8);});});}
\ No newline at end of file
index 9b8eb51..e69756d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ee1=['save','remove','update','emit','removeListener','length','userProfile:','./userProfile.events'];(function(_0x55ff79,_0x3d45e7){var _0x579067=function(_0x3650e4){while(--_0x3650e4){_0x55ff79['push'](_0x55ff79['shift']());}};_0x579067(++_0x3d45e7);}(_0x1ee1,0x15f));var _0x11ee=function(_0x567e94,_0x3284a7){_0x567e94=_0x567e94-0x0;var _0x3880ff=_0x1ee1[_0x567e94];return _0x3880ff;};'use strict';var UserProfileEvents=require(_0x11ee('0x0'));var events=[_0x11ee('0x1'),_0x11ee('0x2'),_0x11ee('0x3')];function createListener(_0x46c093,_0x15f9e5){return function(_0x103599){_0x15f9e5[_0x11ee('0x4')](_0x46c093,_0x103599);};}function removeListener(_0x15bcad,_0x343945){return function(){UserProfileEvents[_0x11ee('0x5')](_0x15bcad,_0x343945);};}exports['register']=function(_0x126f07){for(var _0x52d921=0x0,_0xf78b1e=events[_0x11ee('0x6')];_0x52d921<_0xf78b1e;_0x52d921++){var _0x3caf91=events[_0x52d921];var _0x99a47=createListener(_0x11ee('0x7')+_0x3caf91,_0x126f07);UserProfileEvents['on'](_0x3caf91,_0x99a47);}};
\ No newline at end of file
+var _0xc8d6=['userProfile:','./userProfile.events','save','remove','update','emit','removeListener','register'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xc8d6,0x71));var _0x6c8d=function(_0x440ff6,_0x6d91c9){_0x440ff6=_0x440ff6-0x0;var _0x2bef24=_0xc8d6[_0x440ff6];return _0x2bef24;};'use strict';var UserProfileEvents=require(_0x6c8d('0x0'));var events=[_0x6c8d('0x1'),_0x6c8d('0x2'),_0x6c8d('0x3')];function createListener(_0x36d2dc,_0x114932){return function(_0x51414e){_0x114932[_0x6c8d('0x4')](_0x36d2dc,_0x51414e);};}function removeListener(_0x197c18,_0x3afc6b){return function(){UserProfileEvents[_0x6c8d('0x5')](_0x197c18,_0x3afc6b);};}exports[_0x6c8d('0x6')]=function(_0x5e1da3){for(var _0x141f33=0x0,_0xd92e2f=events['length'];_0x141f33<_0xd92e2f;_0x141f33++){var _0x1abea0=events[_0x141f33];var _0x179c10=createListener(_0x6c8d('0x7')+_0x1abea0,_0x5e1da3);UserProfileEvents['on'](_0x1abea0,_0x179c10);}};
\ No newline at end of file
index 53bf873..f0ff615 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7c85=['../../components/auth/service','../../components/interaction/service','./userProfileResource.controller','get','isAuthenticated','index','/describe','/:id','show','create','put','update','delete','multer','path','express','Router'];(function(_0x3f59b4,_0xb4eb45){var _0x20c6b7=function(_0x204774){while(--_0x204774){_0x3f59b4['push'](_0x3f59b4['shift']());}};_0x20c6b7(++_0xb4eb45);}(_0x7c85,0x1b6));var _0x57c8=function(_0x399d76,_0xdc4493){_0x399d76=_0x399d76-0x0;var _0x3b19a1=_0x7c85[_0x399d76];return _0x3b19a1;};'use strict';var multer=require(_0x57c8('0x0'));var util=require('util');var path=require(_0x57c8('0x1'));var timeout=require('connect-timeout');var express=require(_0x57c8('0x2'));var router=express[_0x57c8('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x57c8('0x4'));var interaction=require(_0x57c8('0x5'));var config=require('../../config/environment');var controller=require(_0x57c8('0x6'));router[_0x57c8('0x7')]('/',auth[_0x57c8('0x8')](),controller[_0x57c8('0x9')]);router['get'](_0x57c8('0xa'),auth[_0x57c8('0x8')](),controller['describe']);router['get'](_0x57c8('0xb'),auth[_0x57c8('0x8')](),controller[_0x57c8('0xc')]);router['post']('/',auth[_0x57c8('0x8')](),controller[_0x57c8('0xd')]);router[_0x57c8('0xe')]('/:id',auth[_0x57c8('0x8')](),controller[_0x57c8('0xf')]);router[_0x57c8('0x10')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0x0673=['update','delete','destroy','multer','util','path','express','Router','../../components/interaction/service','../../config/environment','./userProfileResource.controller','get','isAuthenticated','index','/describe','describe','show','post','create','put'];(function(_0x3e3ba0,_0x1825c2){var _0x1b2896=function(_0x15baa3){while(--_0x15baa3){_0x3e3ba0['push'](_0x3e3ba0['shift']());}};_0x1b2896(++_0x1825c2);}(_0x0673,0x143));var _0x3067=function(_0x53fbef,_0x388095){_0x53fbef=_0x53fbef-0x0;var _0x5d5d2d=_0x0673[_0x53fbef];return _0x5d5d2d;};'use strict';var multer=require(_0x3067('0x0'));var util=require(_0x3067('0x1'));var path=require(_0x3067('0x2'));var timeout=require('connect-timeout');var express=require(_0x3067('0x3'));var router=express[_0x3067('0x4')]();var fs_extra=require('fs-extra');var auth=require('../../components/auth/service');var interaction=require(_0x3067('0x5'));var config=require(_0x3067('0x6'));var controller=require(_0x3067('0x7'));router[_0x3067('0x8')]('/',auth[_0x3067('0x9')](),controller[_0x3067('0xa')]);router[_0x3067('0x8')](_0x3067('0xb'),auth[_0x3067('0x9')](),controller[_0x3067('0xc')]);router[_0x3067('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x3067('0xd')]);router[_0x3067('0xe')]('/',auth['isAuthenticated'](),controller[_0x3067('0xf')]);router[_0x3067('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x3067('0x11')]);router[_0x3067('0x12')]('/:id',auth[_0x3067('0x9')](),controller[_0x3067('0x13')]);module['exports']=router;
\ No newline at end of file
index 14ee737..d16b918 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb07=['sequelize','exports','INTEGER','STRING'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xdb07,0xf0));var _0x7db0=function(_0x42fb06,_0xc8e815){_0x42fb06=_0x42fb06-0x0;var _0x5580ad=_0xdb07[_0x42fb06];return _0x5580ad;};'use strict';var Sequelize=require(_0x7db0('0x0'));module[_0x7db0('0x1')]={'name':{'type':Sequelize['STRING'],'allowNull':![]},'resourceId':{'type':Sequelize[_0x7db0('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x7db0('0x3')],'allowNull':![]}};
\ No newline at end of file
+var _0xf4f4=['STRING','sequelize','exports'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0xf4f4,0x106));var _0x4f4f=function(_0x6da47,_0x281700){_0x6da47=_0x6da47-0x0;var _0x4f2026=_0xf4f4[_0x6da47];return _0x4f2026;};'use strict';var Sequelize=require(_0x4f4f('0x0'));module[_0x4f4f('0x1')]={'name':{'type':Sequelize[_0x4f4f('0x2')],'allowNull':![]},'resourceId':{'type':Sequelize['INTEGER'],'allowNull':![]},'type':{'type':Sequelize[_0x4f4f('0x2')],'allowNull':![]}};
\ No newline at end of file
index a9d44e3..ca551a8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x66fa=['end','status','json','undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','sendStatus','error','stack','name','send','index','rawAttributes','type','key','map','query','keys','intersection','attributes','fields','length','model','hasOwnProperty','nolimit','order','sort','where','pick','filters','filter','VIRTUAL','includeAll','include','UserProfileResource','findAll','rows','catch','merge','options','find','create','body','params','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/license/util'];(function(_0x4709c0,_0x3396c7){var _0x13348b=function(_0x426235){while(--_0x426235){_0x4709c0['push'](_0x4709c0['shift']());}};_0x13348b(++_0x3396c7);}(_0x66fa,0x117));var _0xa66f=function(_0x3f1816,_0x17e103){_0x3f1816=_0x3f1816-0x0;var _0x2fd162=_0x66fa[_0x3f1816];return _0x2fd162;};'use strict';var emlformat=require(_0xa66f('0x0'));var rimraf=require(_0xa66f('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xa66f('0x2'));var rp=require(_0xa66f('0x3'));var moment=require(_0xa66f('0x4'));var BPromise=require(_0xa66f('0x5'));var Mustache=require(_0xa66f('0x6'));var util=require(_0xa66f('0x7'));var path=require(_0xa66f('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xa66f('0x9'));var fs=require('fs');var fs_extra=require(_0xa66f('0xa'));var _=require(_0xa66f('0xb'));var squel=require(_0xa66f('0xc'));var crypto=require(_0xa66f('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xa66f('0xe'));var toCsv=require('to-csv');var querystring=require(_0xa66f('0xf'));var Papa=require('papaparse');var Redis=require(_0xa66f('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xa66f('0x11'));var logger=require(_0xa66f('0x12'))('api');var utils=require(_0xa66f('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xa66f('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x251189,_0x14af70){_0x14af70=_0x14af70||0xcc;return function(_0xca12f8){if(_0xca12f8){return _0x251189['sendStatus'](_0x14af70);}return _0x251189['status'](_0x14af70)[_0xa66f('0x15')]();};}function respondWithResult(_0x4e09cf,_0x528427){_0x528427=_0x528427||0xc8;return function(_0x5a7b16){if(_0x5a7b16){return _0x4e09cf[_0xa66f('0x16')](_0x528427)[_0xa66f('0x17')](_0x5a7b16);}};}function respondWithFilteredResult(_0x267129,_0x236d64){return function(_0xd348f9){if(_0xd348f9){var _0x567d4f=typeof _0x236d64['offset']===_0xa66f('0x18')&&typeof _0x236d64[_0xa66f('0x19')]===_0xa66f('0x18');var _0x403f4d=_0xd348f9['count'];var _0x1cbe64=_0x567d4f?0x0:_0x236d64['offset'];var _0x4a28d4=_0x567d4f?_0xd348f9[_0xa66f('0x1a')]:_0x236d64[_0xa66f('0x1b')]+_0x236d64[_0xa66f('0x19')];var _0x355ddc;if(_0x4a28d4>=_0x403f4d){_0x4a28d4=_0x403f4d;_0x355ddc=0xc8;}else{_0x355ddc=0xce;}_0x267129[_0xa66f('0x16')](_0x355ddc);return _0x267129[_0xa66f('0x1c')](_0xa66f('0x1d'),_0x1cbe64+'-'+_0x4a28d4+'/'+_0x403f4d)[_0xa66f('0x17')](_0xd348f9);}return null;};}function patchUpdates(_0x2033a4){return function(_0x2d9602){try{jsonpatch[_0xa66f('0x1e')](_0x2d9602,_0x2033a4,!![]);}catch(_0xbba376){return BPromise[_0xa66f('0x1f')](_0xbba376);}return _0x2d9602[_0xa66f('0x20')]();};}function saveUpdates(_0x82924d,_0x5cd613){return function(_0x27f570){if(_0x27f570){return _0x27f570[_0xa66f('0x21')](_0x82924d)[_0xa66f('0x22')](function(_0x37ee13){return _0x37ee13;});}return null;};}function removeEntity(_0x5cbd82,_0x337602){return function(_0x473822){if(_0x473822){return _0x473822[_0xa66f('0x23')]()[_0xa66f('0x22')](function(){_0x5cbd82['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0xed98b9,_0x598942){return function(_0x3a3e4f){if(!_0x3a3e4f){_0xed98b9[_0xa66f('0x24')](0x194);}return _0x3a3e4f;};}function handleError(_0x384164,_0x57da7f){_0x57da7f=_0x57da7f||0x1f4;return function(_0x4683c7){logger[_0xa66f('0x25')](_0x4683c7[_0xa66f('0x26')]);if(_0x4683c7[_0xa66f('0x27')]){delete _0x4683c7[_0xa66f('0x27')];}_0x384164[_0xa66f('0x16')](_0x57da7f)[_0xa66f('0x28')](_0x4683c7);};}exports[_0xa66f('0x29')]=function(_0x20ee67,_0x117d03){var _0x45f71c={},_0x63650b={},_0x42b966={'count':0x0,'rows':[]};var _0xeeb22e=_['map'](db['UserProfileResource'][_0xa66f('0x2a')],function(_0x27ceae){return{'name':_0x27ceae['fieldName'],'type':_0x27ceae[_0xa66f('0x2b')][_0xa66f('0x2c')]};});_0x63650b['model']=_[_0xa66f('0x2d')](_0xeeb22e,_0xa66f('0x27'));_0x63650b[_0xa66f('0x2e')]=_[_0xa66f('0x2f')](_0x20ee67[_0xa66f('0x2e')]);_0x63650b['filters']=_[_0xa66f('0x30')](_0x63650b['model'],_0x63650b[_0xa66f('0x2e')]);_0x45f71c[_0xa66f('0x31')]=_[_0xa66f('0x30')](_0x63650b['model'],qs[_0xa66f('0x32')](_0x20ee67[_0xa66f('0x2e')]['fields']));_0x45f71c[_0xa66f('0x31')]=_0x45f71c[_0xa66f('0x31')][_0xa66f('0x33')]?_0x45f71c[_0xa66f('0x31')]:_0x63650b[_0xa66f('0x34')];if(!_0x20ee67[_0xa66f('0x2e')][_0xa66f('0x35')](_0xa66f('0x36'))){_0x45f71c[_0xa66f('0x19')]=qs[_0xa66f('0x19')](_0x20ee67['query'][_0xa66f('0x19')]);_0x45f71c['offset']=qs[_0xa66f('0x1b')](_0x20ee67[_0xa66f('0x2e')][_0xa66f('0x1b')]);}_0x45f71c[_0xa66f('0x37')]=qs[_0xa66f('0x38')](_0x20ee67[_0xa66f('0x2e')][_0xa66f('0x38')]);_0x45f71c[_0xa66f('0x39')]=qs['filters'](_[_0xa66f('0x3a')](_0x20ee67['query'],_0x63650b[_0xa66f('0x3b')]),_0xeeb22e);if(_0x20ee67[_0xa66f('0x2e')][_0xa66f('0x3c')]){_0x45f71c['where']=_['merge'](_0x45f71c[_0xa66f('0x39')],{'$or':_[_0xa66f('0x2d')](_0xeeb22e,function(_0x20b07e){if(_0x20b07e[_0xa66f('0x2b')]!==_0xa66f('0x3d')){var _0x581dca={};_0x581dca[_0x20b07e['name']]={'$like':'%'+_0x20ee67['query'][_0xa66f('0x3c')]+'%'};return _0x581dca;}})});}_0x45f71c=_['merge']({},_0x45f71c,_0x20ee67['options']);var _0x5bf856={'where':_0x45f71c[_0xa66f('0x39')]};return db['UserProfileResource'][_0xa66f('0x1a')](_0x5bf856)[_0xa66f('0x22')](function(_0x23a546){_0x42b966[_0xa66f('0x1a')]=_0x23a546;if(_0x20ee67[_0xa66f('0x2e')][_0xa66f('0x3e')]){_0x45f71c[_0xa66f('0x3f')]=[{'all':!![]}];}return db[_0xa66f('0x40')][_0xa66f('0x41')](_0x45f71c);})[_0xa66f('0x22')](function(_0x3a7929){_0x42b966[_0xa66f('0x42')]=_0x3a7929;return _0x42b966;})[_0xa66f('0x22')](respondWithFilteredResult(_0x117d03,_0x45f71c))[_0xa66f('0x43')](handleError(_0x117d03,null));};exports['show']=function(_0x36037c,_0x25c2cb){var _0x58c1f2={'raw':![],'where':{'id':_0x36037c['params']['id']}},_0x248587={};_0x248587[_0xa66f('0x34')]=_[_0xa66f('0x2f')](db['UserProfileResource'][_0xa66f('0x2a')]);_0x248587[_0xa66f('0x2e')]=_[_0xa66f('0x2f')](_0x36037c['query']);_0x248587[_0xa66f('0x3b')]=_['intersection'](_0x248587[_0xa66f('0x34')],_0x248587[_0xa66f('0x2e')]);_0x58c1f2[_0xa66f('0x31')]=_[_0xa66f('0x30')](_0x248587[_0xa66f('0x34')],qs[_0xa66f('0x32')](_0x36037c[_0xa66f('0x2e')]['fields']));_0x58c1f2[_0xa66f('0x31')]=_0x58c1f2[_0xa66f('0x31')][_0xa66f('0x33')]?_0x58c1f2[_0xa66f('0x31')]:_0x248587[_0xa66f('0x34')];if(_0x36037c['query']['includeAll']){_0x58c1f2[_0xa66f('0x3f')]=[{'all':!![]}];}_0x58c1f2=_[_0xa66f('0x44')]({},_0x58c1f2,_0x36037c[_0xa66f('0x45')]);return db[_0xa66f('0x40')][_0xa66f('0x46')](_0x58c1f2)[_0xa66f('0x22')](handleEntityNotFound(_0x25c2cb,null))['then'](respondWithResult(_0x25c2cb,null))[_0xa66f('0x43')](handleError(_0x25c2cb,null));};exports[_0xa66f('0x47')]=function(_0x3f9cdd,_0x5651e9){return db['UserProfileResource'][_0xa66f('0x47')](_0x3f9cdd[_0xa66f('0x48')],{})[_0xa66f('0x22')](respondWithResult(_0x5651e9,0xc9))['catch'](handleError(_0x5651e9,null));};exports['update']=function(_0x52054e,_0x19e7ce){if(_0x52054e[_0xa66f('0x48')]['id']){delete _0x52054e[_0xa66f('0x48')]['id'];}return db[_0xa66f('0x40')][_0xa66f('0x46')]({'where':{'id':_0x52054e[_0xa66f('0x49')]['id']}})[_0xa66f('0x22')](handleEntityNotFound(_0x19e7ce,null))[_0xa66f('0x22')](saveUpdates(_0x52054e['body'],null))[_0xa66f('0x22')](respondWithResult(_0x19e7ce,null))[_0xa66f('0x43')](handleError(_0x19e7ce,null));};exports[_0xa66f('0x23')]=function(_0x393755,_0x11597b){return db[_0xa66f('0x40')]['find']({'where':{'id':_0x393755[_0xa66f('0x49')]['id']}})[_0xa66f('0x22')](handleEntityNotFound(_0x11597b,null))[_0xa66f('0x22')](removeEntity(_0x11597b,null))[_0xa66f('0x43')](handleError(_0x11597b,null));};exports[_0xa66f('0x4a')]=function(_0x5d77d1,_0x389b9a){return db['UserProfileResource'][_0xa66f('0x4a')]()['then'](respondWithResult(_0x389b9a,null))['catch'](handleError(_0x389b9a,null));};
\ No newline at end of file
+var _0xc6ac=['filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','VIRTUAL','options','findAll','rows','show','params','includeAll','include','find','catch','create','body','update','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','limit','undefined','count','offset','set','Content-Range','apply','reject','save','then','destroy','end','error','name','send','UserProfileResource','rawAttributes','fieldName','type','key','map','query','keys'];(function(_0x152136,_0x4f14f1){var _0x20df44=function(_0x362877){while(--_0x362877){_0x152136['push'](_0x152136['shift']());}};_0x20df44(++_0x4f14f1);}(_0xc6ac,0x15b));var _0xcc6a=function(_0x54a53e,_0x3c2734){_0x54a53e=_0x54a53e-0x0;var _0x1c881e=_0xc6ac[_0x54a53e];return _0x1c881e;};'use strict';var emlformat=require(_0xcc6a('0x0'));var rimraf=require(_0xcc6a('0x1'));var zipdir=require(_0xcc6a('0x2'));var jsonpatch=require(_0xcc6a('0x3'));var rp=require(_0xcc6a('0x4'));var moment=require(_0xcc6a('0x5'));var BPromise=require(_0xcc6a('0x6'));var Mustache=require(_0xcc6a('0x7'));var util=require(_0xcc6a('0x8'));var path=require(_0xcc6a('0x9'));var sox=require(_0xcc6a('0xa'));var csv=require(_0xcc6a('0xb'));var ejs=require(_0xcc6a('0xc'));var fs=require('fs');var fs_extra=require(_0xcc6a('0xd'));var _=require('lodash');var squel=require(_0xcc6a('0xe'));var crypto=require(_0xcc6a('0xf'));var jsforce=require(_0xcc6a('0x10'));var deskjs=require('desk.js');var toCsv=require(_0xcc6a('0xb'));var querystring=require(_0xcc6a('0x11'));var Papa=require(_0xcc6a('0x12'));var Redis=require(_0xcc6a('0x13'));var authService=require(_0xcc6a('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xcc6a('0x15'));var hardwareService=require(_0xcc6a('0x16'));var logger=require(_0xcc6a('0x17'))('api');var utils=require(_0xcc6a('0x18'));var config=require(_0xcc6a('0x19'));var licenseUtil=require(_0xcc6a('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x59ce6d,_0xf0f6d5){_0xf0f6d5=_0xf0f6d5||0xcc;return function(_0x211444){if(_0x211444){return _0x59ce6d[_0xcc6a('0x1b')](_0xf0f6d5);}return _0x59ce6d['status'](_0xf0f6d5)['end']();};}function respondWithResult(_0x369dc1,_0xcb9e2e){_0xcb9e2e=_0xcb9e2e||0xc8;return function(_0x43710d){if(_0x43710d){return _0x369dc1[_0xcc6a('0x1c')](_0xcb9e2e)[_0xcc6a('0x1d')](_0x43710d);}};}function respondWithFilteredResult(_0x337ec5,_0x4133fa){return function(_0x403b18){if(_0x403b18){var _0x56ffb0=typeof _0x4133fa['offset']==='undefined'&&typeof _0x4133fa[_0xcc6a('0x1e')]===_0xcc6a('0x1f');var _0x307f2a=_0x403b18[_0xcc6a('0x20')];var _0x33079c=_0x56ffb0?0x0:_0x4133fa[_0xcc6a('0x21')];var _0x2d9585=_0x56ffb0?_0x403b18[_0xcc6a('0x20')]:_0x4133fa[_0xcc6a('0x21')]+_0x4133fa[_0xcc6a('0x1e')];var _0x1d20a3;if(_0x2d9585>=_0x307f2a){_0x2d9585=_0x307f2a;_0x1d20a3=0xc8;}else{_0x1d20a3=0xce;}_0x337ec5['status'](_0x1d20a3);return _0x337ec5[_0xcc6a('0x22')](_0xcc6a('0x23'),_0x33079c+'-'+_0x2d9585+'/'+_0x307f2a)[_0xcc6a('0x1d')](_0x403b18);}return null;};}function patchUpdates(_0x368a6e){return function(_0x1495d8){try{jsonpatch[_0xcc6a('0x24')](_0x1495d8,_0x368a6e,!![]);}catch(_0x36c80f){return BPromise[_0xcc6a('0x25')](_0x36c80f);}return _0x1495d8[_0xcc6a('0x26')]();};}function saveUpdates(_0x19d32c,_0x329d17){return function(_0x845088){if(_0x845088){return _0x845088['update'](_0x19d32c)[_0xcc6a('0x27')](function(_0x3a081e){return _0x3a081e;});}return null;};}function removeEntity(_0x38f812,_0x581aae){return function(_0x10016a){if(_0x10016a){return _0x10016a[_0xcc6a('0x28')]()[_0xcc6a('0x27')](function(){_0x38f812[_0xcc6a('0x1c')](0xcc)[_0xcc6a('0x29')]();});}};}function handleEntityNotFound(_0x5fc697,_0x50abc1){return function(_0x26def8){if(!_0x26def8){_0x5fc697[_0xcc6a('0x1b')](0x194);}return _0x26def8;};}function handleError(_0x3514f3,_0x5f27e5){_0x5f27e5=_0x5f27e5||0x1f4;return function(_0x3afb3a){logger[_0xcc6a('0x2a')](_0x3afb3a['stack']);if(_0x3afb3a[_0xcc6a('0x2b')]){delete _0x3afb3a[_0xcc6a('0x2b')];}_0x3514f3[_0xcc6a('0x1c')](_0x5f27e5)[_0xcc6a('0x2c')](_0x3afb3a);};}exports['index']=function(_0x194aab,_0x3cf14c){var _0x2c6d88={},_0x4f176b={},_0x2590a2={'count':0x0,'rows':[]};var _0x5308d4=_['map'](db[_0xcc6a('0x2d')][_0xcc6a('0x2e')],function(_0x3aa315){return{'name':_0x3aa315[_0xcc6a('0x2f')],'type':_0x3aa315[_0xcc6a('0x30')][_0xcc6a('0x31')]};});_0x4f176b['model']=_[_0xcc6a('0x32')](_0x5308d4,_0xcc6a('0x2b'));_0x4f176b[_0xcc6a('0x33')]=_[_0xcc6a('0x34')](_0x194aab[_0xcc6a('0x33')]);_0x4f176b[_0xcc6a('0x35')]=_[_0xcc6a('0x36')](_0x4f176b[_0xcc6a('0x37')],_0x4f176b['query']);_0x2c6d88[_0xcc6a('0x38')]=_[_0xcc6a('0x36')](_0x4f176b[_0xcc6a('0x37')],qs[_0xcc6a('0x39')](_0x194aab[_0xcc6a('0x33')][_0xcc6a('0x39')]));_0x2c6d88[_0xcc6a('0x38')]=_0x2c6d88['attributes'][_0xcc6a('0x3a')]?_0x2c6d88['attributes']:_0x4f176b['model'];if(!_0x194aab['query'][_0xcc6a('0x3b')](_0xcc6a('0x3c'))){_0x2c6d88[_0xcc6a('0x1e')]=qs[_0xcc6a('0x1e')](_0x194aab[_0xcc6a('0x33')]['limit']);_0x2c6d88['offset']=qs[_0xcc6a('0x21')](_0x194aab[_0xcc6a('0x33')][_0xcc6a('0x21')]);}_0x2c6d88['order']=qs[_0xcc6a('0x3d')](_0x194aab[_0xcc6a('0x33')][_0xcc6a('0x3d')]);_0x2c6d88[_0xcc6a('0x3e')]=qs[_0xcc6a('0x35')](_[_0xcc6a('0x3f')](_0x194aab[_0xcc6a('0x33')],_0x4f176b[_0xcc6a('0x35')]),_0x5308d4);if(_0x194aab[_0xcc6a('0x33')][_0xcc6a('0x40')]){_0x2c6d88[_0xcc6a('0x3e')]=_[_0xcc6a('0x41')](_0x2c6d88[_0xcc6a('0x3e')],{'$or':_[_0xcc6a('0x32')](_0x5308d4,function(_0x262a1e){if(_0x262a1e[_0xcc6a('0x30')]!==_0xcc6a('0x42')){var _0x386cbc={};_0x386cbc[_0x262a1e['name']]={'$like':'%'+_0x194aab['query'][_0xcc6a('0x40')]+'%'};return _0x386cbc;}})});}_0x2c6d88=_[_0xcc6a('0x41')]({},_0x2c6d88,_0x194aab[_0xcc6a('0x43')]);var _0x1fd8e1={'where':_0x2c6d88[_0xcc6a('0x3e')]};return db[_0xcc6a('0x2d')][_0xcc6a('0x20')](_0x1fd8e1)[_0xcc6a('0x27')](function(_0x49b65c){_0x2590a2['count']=_0x49b65c;if(_0x194aab[_0xcc6a('0x33')]['includeAll']){_0x2c6d88['include']=[{'all':!![]}];}return db['UserProfileResource'][_0xcc6a('0x44')](_0x2c6d88);})[_0xcc6a('0x27')](function(_0xb42897){_0x2590a2[_0xcc6a('0x45')]=_0xb42897;return _0x2590a2;})[_0xcc6a('0x27')](respondWithFilteredResult(_0x3cf14c,_0x2c6d88))['catch'](handleError(_0x3cf14c,null));};exports[_0xcc6a('0x46')]=function(_0xfbb079,_0x17e5a0){var _0x2f966f={'raw':![],'where':{'id':_0xfbb079[_0xcc6a('0x47')]['id']}},_0x14ca90={};_0x14ca90['model']=_[_0xcc6a('0x34')](db[_0xcc6a('0x2d')][_0xcc6a('0x2e')]);_0x14ca90[_0xcc6a('0x33')]=_['keys'](_0xfbb079[_0xcc6a('0x33')]);_0x14ca90['filters']=_[_0xcc6a('0x36')](_0x14ca90[_0xcc6a('0x37')],_0x14ca90[_0xcc6a('0x33')]);_0x2f966f['attributes']=_[_0xcc6a('0x36')](_0x14ca90[_0xcc6a('0x37')],qs[_0xcc6a('0x39')](_0xfbb079['query']['fields']));_0x2f966f[_0xcc6a('0x38')]=_0x2f966f[_0xcc6a('0x38')][_0xcc6a('0x3a')]?_0x2f966f[_0xcc6a('0x38')]:_0x14ca90[_0xcc6a('0x37')];if(_0xfbb079['query'][_0xcc6a('0x48')]){_0x2f966f[_0xcc6a('0x49')]=[{'all':!![]}];}_0x2f966f=_['merge']({},_0x2f966f,_0xfbb079[_0xcc6a('0x43')]);return db[_0xcc6a('0x2d')][_0xcc6a('0x4a')](_0x2f966f)[_0xcc6a('0x27')](handleEntityNotFound(_0x17e5a0,null))[_0xcc6a('0x27')](respondWithResult(_0x17e5a0,null))[_0xcc6a('0x4b')](handleError(_0x17e5a0,null));};exports['create']=function(_0x4e1a0b,_0x47c999){return db[_0xcc6a('0x2d')][_0xcc6a('0x4c')](_0x4e1a0b[_0xcc6a('0x4d')],{})[_0xcc6a('0x27')](respondWithResult(_0x47c999,0xc9))['catch'](handleError(_0x47c999,null));};exports[_0xcc6a('0x4e')]=function(_0x5e7bab,_0x3aa7dd){if(_0x5e7bab[_0xcc6a('0x4d')]['id']){delete _0x5e7bab[_0xcc6a('0x4d')]['id'];}return db[_0xcc6a('0x2d')][_0xcc6a('0x4a')]({'where':{'id':_0x5e7bab[_0xcc6a('0x47')]['id']}})['then'](handleEntityNotFound(_0x3aa7dd,null))[_0xcc6a('0x27')](saveUpdates(_0x5e7bab[_0xcc6a('0x4d')],null))[_0xcc6a('0x27')](respondWithResult(_0x3aa7dd,null))[_0xcc6a('0x4b')](handleError(_0x3aa7dd,null));};exports[_0xcc6a('0x28')]=function(_0x362bf6,_0x431684){return db[_0xcc6a('0x2d')][_0xcc6a('0x4a')]({'where':{'id':_0x362bf6[_0xcc6a('0x47')]['id']}})['then'](handleEntityNotFound(_0x431684,null))[_0xcc6a('0x27')](removeEntity(_0x431684,null))[_0xcc6a('0x4b')](handleError(_0x431684,null));};exports[_0xcc6a('0x4f')]=function(_0x34531d,_0x14f5e5){return db[_0xcc6a('0x2d')]['describe']()['then'](respondWithResult(_0x14f5e5,null))[_0xcc6a('0x4b')](handleError(_0x14f5e5,null));};
\ No newline at end of file
index a10f186..65ff014 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x283b=['resourceId','sectionId','lodash','util','../../config/logger','api','moment','request-promise','rimraf','../../config/environment','./userProfileResource.attributes','exports','define','user_profile_has_resources','compositeIndex'];(function(_0x1445e9,_0x1d5cff){var _0x40e5ee=function(_0x2db628){while(--_0x2db628){_0x1445e9['push'](_0x1445e9['shift']());}};_0x40e5ee(++_0x1d5cff);}(_0x283b,0x13d));var _0xb283=function(_0x542869,_0x5ec5e5){_0x542869=_0x542869-0x0;var _0x1fd6d3=_0x283b[_0x542869];return _0x1fd6d3;};'use strict';var _=require(_0xb283('0x0'));var util=require(_0xb283('0x1'));var logger=require(_0xb283('0x2'))(_0xb283('0x3'));var moment=require(_0xb283('0x4'));var BPromise=require('bluebird');var rp=require(_0xb283('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xb283('0x6'));var config=require(_0xb283('0x7'));var attributes=require(_0xb283('0x8'));module[_0xb283('0x9')]=function(_0x253b17,_0x379015){return _0x253b17[_0xb283('0xa')]('UserProfileResource',attributes,{'tableName':_0xb283('0xb'),'paranoid':![],'indexes':[{'name':_0xb283('0xc'),'fields':[_0xb283('0xd'),_0xb283('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xda4e=['exports','define','UserProfileResource','user_profile_has_resources','compositeIndex','sectionId','lodash','util','../../config/logger','api','moment','bluebird','path','rimraf','./userProfileResource.attributes'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0xda4e,0xab));var _0xeda4=function(_0xad1b8e,_0x6efa3){_0xad1b8e=_0xad1b8e-0x0;var _0x187277=_0xda4e[_0xad1b8e];return _0x187277;};'use strict';var _=require(_0xeda4('0x0'));var util=require(_0xeda4('0x1'));var logger=require(_0xeda4('0x2'))(_0xeda4('0x3'));var moment=require(_0xeda4('0x4'));var BPromise=require(_0xeda4('0x5'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xeda4('0x6'));var rimraf=require(_0xeda4('0x7'));var config=require('../../config/environment');var attributes=require(_0xeda4('0x8'));module[_0xeda4('0x9')]=function(_0x131d70,_0x16337b){return _0x131d70[_0xeda4('0xa')](_0xeda4('0xb'),attributes,{'tableName':_0xeda4('0xc'),'paranoid':![],'indexes':[{'name':_0xeda4('0xd'),'fields':['resourceId',_0xeda4('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 4c88682..303648e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0112=['../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','UserProfileResource,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','moment','randomstring'];(function(_0xcdf6b,_0x862f19){var _0x31deac=function(_0x42c7d6){while(--_0x42c7d6){_0xcdf6b['push'](_0xcdf6b['shift']());}};_0x31deac(++_0x862f19);}(_0x0112,0x115));var _0x2011=function(_0x5f09c5,_0x2bfca0){_0x5f09c5=_0x5f09c5-0x0;var _0x426ad9=_0x0112[_0x5f09c5];return _0x426ad9;};'use strict';var _=require(_0x2011('0x0'));var util=require('util');var moment=require(_0x2011('0x1'));var BPromise=require('bluebird');var rs=require(_0x2011('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x2011('0x3'))(_0x2011('0x4'));var config=require(_0x2011('0x5'));var jayson=require(_0x2011('0x6'));var client=jayson['client'][_0x2011('0x7')]({'port':0x232a});function respondWithRpcPromise(_0x503209,_0x417e9b,_0x48d87d){return new BPromise(function(_0x2b9112,_0xabb69b){return client[_0x2011('0x8')](_0x503209,_0x48d87d)[_0x2011('0x9')](function(_0x3de43f){logger[_0x2011('0xa')](_0x2011('0xb'),_0x417e9b,_0x2011('0xc'));logger[_0x2011('0xd')](_0x2011('0xe'),_0x417e9b,_0x2011('0xc'),JSON['stringify'](_0x3de43f));if(_0x3de43f[_0x2011('0xf')]){if(_0x3de43f[_0x2011('0xf')][_0x2011('0x10')]===0x1f4){logger[_0x2011('0xf')](_0x2011('0xb'),_0x417e9b,_0x3de43f[_0x2011('0xf')][_0x2011('0x11')]);return _0xabb69b(_0x3de43f[_0x2011('0xf')][_0x2011('0x11')]);}logger['error'](_0x2011('0xb'),_0x417e9b,_0x3de43f[_0x2011('0xf')]['message']);return _0x2b9112(_0x3de43f['error']['message']);}else{logger[_0x2011('0xa')](_0x2011('0xb'),_0x417e9b,'request\x20sent');_0x2b9112(_0x3de43f[_0x2011('0x12')]['message']);}})[_0x2011('0x13')](function(_0x3b6ff8){logger[_0x2011('0xf')](_0x2011('0xb'),_0x417e9b,_0x3b6ff8);_0xabb69b(_0x3b6ff8);});});}
\ No newline at end of file
+var _0x5558=['code','message','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','request','info','UserProfileResource,\x20%s,\x20%s','request\x20sent','debug','error'];(function(_0x4e6a33,_0x3039d2){var _0x11c1d5=function(_0x1305d5){while(--_0x1305d5){_0x4e6a33['push'](_0x4e6a33['shift']());}};_0x11c1d5(++_0x3039d2);}(_0x5558,0x1cf));var _0x8555=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x5558[_0x42cae2];return _0x5f256f;};'use strict';var _=require('lodash');var util=require(_0x8555('0x0'));var moment=require('moment');var BPromise=require(_0x8555('0x1'));var rs=require(_0x8555('0x2'));var fs=require('fs');var Redis=require(_0x8555('0x3'));var db=require(_0x8555('0x4'))['db'];var utils=require(_0x8555('0x5'));var logger=require(_0x8555('0x6'))('rpc');var config=require(_0x8555('0x7'));var jayson=require(_0x8555('0x8'));var client=jayson[_0x8555('0x9')][_0x8555('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf68879,_0x3ec6ad,_0x5661e4){return new BPromise(function(_0x573cc8,_0x185708){return client[_0x8555('0xb')](_0xf68879,_0x5661e4)['then'](function(_0x421975){logger[_0x8555('0xc')](_0x8555('0xd'),_0x3ec6ad,_0x8555('0xe'));logger[_0x8555('0xf')]('UserProfileResource,\x20%s,\x20%s,\x20%s',_0x3ec6ad,_0x8555('0xe'),JSON['stringify'](_0x421975));if(_0x421975[_0x8555('0x10')]){if(_0x421975[_0x8555('0x10')][_0x8555('0x11')]===0x1f4){logger[_0x8555('0x10')](_0x8555('0xd'),_0x3ec6ad,_0x421975[_0x8555('0x10')]['message']);return _0x185708(_0x421975[_0x8555('0x10')][_0x8555('0x12')]);}logger['error'](_0x8555('0xd'),_0x3ec6ad,_0x421975[_0x8555('0x10')][_0x8555('0x12')]);return _0x573cc8(_0x421975['error'][_0x8555('0x12')]);}else{logger[_0x8555('0xc')]('UserProfileResource,\x20%s,\x20%s',_0x3ec6ad,_0x8555('0xe'));_0x573cc8(_0x421975['result'][_0x8555('0x12')]);}})[_0x8555('0x13')](function(_0x11f5d9){logger[_0x8555('0x10')](_0x8555('0xd'),_0x3ec6ad,_0x11f5d9);_0x185708(_0x11f5d9);});});}
\ No newline at end of file
index 7055493..68b6443 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd0ae=['update','delete','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/interaction/service','../../config/environment','get','index','/describe','isAuthenticated','describe','/:id','show','post','create','put'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd0ae,0x6d));var _0xed0a=function(_0x52ff36,_0x5e3fdd){_0x52ff36=_0x52ff36-0x0;var _0x42e4f3=_0xd0ae[_0x52ff36];return _0x42e4f3;};'use strict';var multer=require('multer');var util=require(_0xed0a('0x0'));var path=require(_0xed0a('0x1'));var timeout=require(_0xed0a('0x2'));var express=require(_0xed0a('0x3'));var router=express['Router']();var fs_extra=require(_0xed0a('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xed0a('0x5'));var config=require(_0xed0a('0x6'));var controller=require('./userProfileSection.controller');router[_0xed0a('0x7')]('/',auth['isAuthenticated'](),controller[_0xed0a('0x8')]);router[_0xed0a('0x7')](_0xed0a('0x9'),auth[_0xed0a('0xa')](),controller[_0xed0a('0xb')]);router[_0xed0a('0x7')](_0xed0a('0xc'),auth[_0xed0a('0xa')](),controller[_0xed0a('0xd')]);router[_0xed0a('0xe')]('/',auth[_0xed0a('0xa')](),controller[_0xed0a('0xf')]);router[_0xed0a('0x10')](_0xed0a('0xc'),auth[_0xed0a('0xa')](),controller[_0xed0a('0x11')]);router[_0xed0a('0x12')](_0xed0a('0xc'),auth[_0xed0a('0xa')](),controller[_0xed0a('0x13')]);module[_0xed0a('0x14')]=router;
\ No newline at end of file
+var _0xa23b=['get','isAuthenticated','index','/describe','describe','/:id','show','create','update','delete','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./userProfileSection.controller'];(function(_0x29ae84,_0x2a26e0){var _0x526794=function(_0x432b73){while(--_0x432b73){_0x29ae84['push'](_0x29ae84['shift']());}};_0x526794(++_0x2a26e0);}(_0xa23b,0x107));var _0xba23=function(_0x4a700e,_0x4cfb44){_0x4a700e=_0x4a700e-0x0;var _0x5c4e5d=_0xa23b[_0x4a700e];return _0x5c4e5d;};'use strict';var multer=require('multer');var util=require(_0xba23('0x0'));var path=require(_0xba23('0x1'));var timeout=require(_0xba23('0x2'));var express=require(_0xba23('0x3'));var router=express[_0xba23('0x4')]();var fs_extra=require(_0xba23('0x5'));var auth=require(_0xba23('0x6'));var interaction=require(_0xba23('0x7'));var config=require(_0xba23('0x8'));var controller=require(_0xba23('0x9'));router[_0xba23('0xa')]('/',auth[_0xba23('0xb')](),controller[_0xba23('0xc')]);router[_0xba23('0xa')](_0xba23('0xd'),auth[_0xba23('0xb')](),controller[_0xba23('0xe')]);router[_0xba23('0xa')](_0xba23('0xf'),auth[_0xba23('0xb')](),controller[_0xba23('0x10')]);router['post']('/',auth[_0xba23('0xb')](),controller[_0xba23('0x11')]);router['put'](_0xba23('0xf'),auth[_0xba23('0xb')](),controller[_0xba23('0x12')]);router[_0xba23('0x13')](_0xba23('0xf'),auth[_0xba23('0xb')](),controller['destroy']);module[_0xba23('0x14')]=router;
\ No newline at end of file
index f226ea0..52c8237 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ec6=['exports','STRING','INTEGER','BOOLEAN','crudPermissions','getDataValue','split','sequelize'];(function(_0x1c1172,_0x27c3c4){var _0x300943=function(_0x3f8b89){while(--_0x3f8b89){_0x1c1172['push'](_0x1c1172['shift']());}};_0x300943(++_0x27c3c4);}(_0x5ec6,0x7f));var _0x65ec=function(_0x41fa84,_0x370961){_0x41fa84=_0x41fa84-0x0;var _0x4140a9=_0x5ec6[_0x41fa84];return _0x4140a9;};'use strict';var Sequelize=require(_0x65ec('0x0'));module[_0x65ec('0x1')]={'name':{'type':Sequelize[_0x65ec('0x2')],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0x65ec('0x3')],'allowNull':![]},'enabled':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x65ec('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize['STRING'],'set':function(_0x33751d){this['setDataValue'](_0x65ec('0x5'),_0x33751d?_0x33751d['join'](''):[]);},'get':function(){return this[_0x65ec('0x6')](_0x65ec('0x5'))?this['getDataValue'](_0x65ec('0x5'))[_0x65ec('0x7')](''):[];}}};
\ No newline at end of file
+var _0x63a5=['STRING','INTEGER','BOOLEAN','setDataValue','getDataValue','crudPermissions','sequelize','exports'];(function(_0x46c6e1,_0x3e103d){var _0x23f5dd=function(_0xcc1bd5){while(--_0xcc1bd5){_0x46c6e1['push'](_0x46c6e1['shift']());}};_0x23f5dd(++_0x3e103d);}(_0x63a5,0x18e));var _0x563a=function(_0x5a3cf0,_0x160a68){_0x5a3cf0=_0x5a3cf0-0x0;var _0x5a64ee=_0x63a5[_0x5a3cf0];return _0x5a64ee;};'use strict';var Sequelize=require(_0x563a('0x0'));module[_0x563a('0x1')]={'name':{'type':Sequelize[_0x563a('0x2')],'allowNull':![]},'category':{'type':Sequelize['STRING'],'allowNull':![]},'sectionId':{'type':Sequelize[_0x563a('0x3')],'allowNull':![]},'enabled':{'type':Sequelize['BOOLEAN'],'defaultValue':null},'autoAssociation':{'type':Sequelize[_0x563a('0x4')],'defaultValue':null},'crudPermissions':{'type':Sequelize[_0x563a('0x2')],'set':function(_0x386400){this[_0x563a('0x5')]('crudPermissions',_0x386400?_0x386400['join'](''):[]);},'get':function(){return this[_0x563a('0x6')]('crudPermissions')?this[_0x563a('0x6')](_0x563a('0x7'))['split'](''):[];}}};
\ No newline at end of file
index c9ee738..64e50f2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabdf=['undefined','limit','count','offset','set','Content-Range','apply','reject','save','update','then','destroy','end','sendStatus','error','stack','name','index','map','UserProfileSection','rawAttributes','fieldName','type','model','keys','filters','intersection','attributes','fields','query','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','includeAll','include','rows','catch','show','find','create','body','params','describe','eml-format','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','status','json'];(function(_0x54bcb3,_0x53f1c5){var _0xd4ce86=function(_0x4d1a90){while(--_0x4d1a90){_0x54bcb3['push'](_0x54bcb3['shift']());}};_0xd4ce86(++_0x53f1c5);}(_0xabdf,0x7f));var _0xfabd=function(_0x5758ea,_0x221181){_0x5758ea=_0x5758ea-0x0;var _0x37ff80=_0xabdf[_0x5758ea];return _0x37ff80;};'use strict';var emlformat=require(_0xfabd('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xfabd('0x1'));var rp=require(_0xfabd('0x2'));var moment=require(_0xfabd('0x3'));var BPromise=require(_0xfabd('0x4'));var Mustache=require(_0xfabd('0x5'));var util=require('util');var path=require(_0xfabd('0x6'));var sox=require(_0xfabd('0x7'));var csv=require(_0xfabd('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xfabd('0x9'));var _=require(_0xfabd('0xa'));var squel=require(_0xfabd('0xb'));var crypto=require(_0xfabd('0xc'));var jsforce=require(_0xfabd('0xd'));var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xfabd('0xe'));var Redis=require(_0xfabd('0xf'));var authService=require(_0xfabd('0x10'));var qs=require(_0xfabd('0x11'));var as=require(_0xfabd('0x12'));var hardwareService=require(_0xfabd('0x13'));var logger=require(_0xfabd('0x14'))(_0xfabd('0x15'));var utils=require(_0xfabd('0x16'));var config=require(_0xfabd('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xfabd('0x18'))['db'];function respondWithStatusCode(_0x267fb7,_0x4d8054){_0x4d8054=_0x4d8054||0xcc;return function(_0x2e018d){if(_0x2e018d){return _0x267fb7['sendStatus'](_0x4d8054);}return _0x267fb7[_0xfabd('0x19')](_0x4d8054)['end']();};}function respondWithResult(_0x32e90c,_0x420a4f){_0x420a4f=_0x420a4f||0xc8;return function(_0x1dbf67){if(_0x1dbf67){return _0x32e90c[_0xfabd('0x19')](_0x420a4f)[_0xfabd('0x1a')](_0x1dbf67);}};}function respondWithFilteredResult(_0x137b3b,_0x4c617a){return function(_0x4e5537){if(_0x4e5537){var _0x46d27f=typeof _0x4c617a['offset']===_0xfabd('0x1b')&&typeof _0x4c617a[_0xfabd('0x1c')]===_0xfabd('0x1b');var _0x30b966=_0x4e5537[_0xfabd('0x1d')];var _0x5a6587=_0x46d27f?0x0:_0x4c617a[_0xfabd('0x1e')];var _0x3d214a=_0x46d27f?_0x4e5537[_0xfabd('0x1d')]:_0x4c617a['offset']+_0x4c617a[_0xfabd('0x1c')];var _0x226bdf;if(_0x3d214a>=_0x30b966){_0x3d214a=_0x30b966;_0x226bdf=0xc8;}else{_0x226bdf=0xce;}_0x137b3b['status'](_0x226bdf);return _0x137b3b[_0xfabd('0x1f')](_0xfabd('0x20'),_0x5a6587+'-'+_0x3d214a+'/'+_0x30b966)['json'](_0x4e5537);}return null;};}function patchUpdates(_0x43bff2){return function(_0xce1e25){try{jsonpatch[_0xfabd('0x21')](_0xce1e25,_0x43bff2,!![]);}catch(_0x22bcfc){return BPromise[_0xfabd('0x22')](_0x22bcfc);}return _0xce1e25[_0xfabd('0x23')]();};}function saveUpdates(_0xd0fa0f,_0x236114){return function(_0x55466e){if(_0x55466e){return _0x55466e[_0xfabd('0x24')](_0xd0fa0f)[_0xfabd('0x25')](function(_0x4ff7ca){return _0x4ff7ca;});}return null;};}function removeEntity(_0x4a7724,_0x4cced8){return function(_0x9e74e4){if(_0x9e74e4){return _0x9e74e4[_0xfabd('0x26')]()[_0xfabd('0x25')](function(){_0x4a7724[_0xfabd('0x19')](0xcc)[_0xfabd('0x27')]();});}};}function handleEntityNotFound(_0x3daffb,_0xd0359){return function(_0x4e190c){if(!_0x4e190c){_0x3daffb[_0xfabd('0x28')](0x194);}return _0x4e190c;};}function handleError(_0xea1617,_0x371eac){_0x371eac=_0x371eac||0x1f4;return function(_0x1f4b1b){logger[_0xfabd('0x29')](_0x1f4b1b[_0xfabd('0x2a')]);if(_0x1f4b1b['name']){delete _0x1f4b1b[_0xfabd('0x2b')];}_0xea1617[_0xfabd('0x19')](_0x371eac)['send'](_0x1f4b1b);};}exports[_0xfabd('0x2c')]=function(_0x96a81e,_0x4d0257){var _0x4b8496={},_0x323734={},_0x3ff9a8={'count':0x0,'rows':[]};var _0x19f311=_[_0xfabd('0x2d')](db[_0xfabd('0x2e')][_0xfabd('0x2f')],function(_0x383c3e){return{'name':_0x383c3e[_0xfabd('0x30')],'type':_0x383c3e[_0xfabd('0x31')]['key']};});_0x323734[_0xfabd('0x32')]=_[_0xfabd('0x2d')](_0x19f311,_0xfabd('0x2b'));_0x323734['query']=_[_0xfabd('0x33')](_0x96a81e['query']);_0x323734[_0xfabd('0x34')]=_[_0xfabd('0x35')](_0x323734[_0xfabd('0x32')],_0x323734['query']);_0x4b8496[_0xfabd('0x36')]=_[_0xfabd('0x35')](_0x323734[_0xfabd('0x32')],qs[_0xfabd('0x37')](_0x96a81e[_0xfabd('0x38')][_0xfabd('0x37')]));_0x4b8496[_0xfabd('0x36')]=_0x4b8496[_0xfabd('0x36')][_0xfabd('0x39')]?_0x4b8496['attributes']:_0x323734[_0xfabd('0x32')];if(!_0x96a81e[_0xfabd('0x38')][_0xfabd('0x3a')](_0xfabd('0x3b'))){_0x4b8496[_0xfabd('0x1c')]=qs['limit'](_0x96a81e['query'][_0xfabd('0x1c')]);_0x4b8496[_0xfabd('0x1e')]=qs['offset'](_0x96a81e['query'][_0xfabd('0x1e')]);}_0x4b8496[_0xfabd('0x3c')]=qs['sort'](_0x96a81e['query'][_0xfabd('0x3d')]);_0x4b8496['where']=qs[_0xfabd('0x34')](_[_0xfabd('0x3e')](_0x96a81e['query'],_0x323734[_0xfabd('0x34')]),_0x19f311);if(_0x96a81e[_0xfabd('0x38')][_0xfabd('0x3f')]){_0x4b8496[_0xfabd('0x40')]=_[_0xfabd('0x41')](_0x4b8496[_0xfabd('0x40')],{'$or':_[_0xfabd('0x2d')](_0x19f311,function(_0x4fd9a7){if(_0x4fd9a7[_0xfabd('0x31')]!==_0xfabd('0x42')){var _0x4de2bb={};_0x4de2bb[_0x4fd9a7['name']]={'$like':'%'+_0x96a81e['query'][_0xfabd('0x3f')]+'%'};return _0x4de2bb;}})});}_0x4b8496=_[_0xfabd('0x41')]({},_0x4b8496,_0x96a81e['options']);var _0x2e702a={'where':_0x4b8496[_0xfabd('0x40')]};return db[_0xfabd('0x2e')][_0xfabd('0x1d')](_0x2e702a)['then'](function(_0x32506a){_0x3ff9a8['count']=_0x32506a;if(_0x96a81e[_0xfabd('0x38')][_0xfabd('0x43')]){_0x4b8496[_0xfabd('0x44')]=[{'all':!![]}];}return db['UserProfileSection']['findAll'](_0x4b8496);})['then'](function(_0x5c1761){_0x3ff9a8[_0xfabd('0x45')]=_0x5c1761;return _0x3ff9a8;})[_0xfabd('0x25')](respondWithFilteredResult(_0x4d0257,_0x4b8496))[_0xfabd('0x46')](handleError(_0x4d0257,null));};exports[_0xfabd('0x47')]=function(_0x26d622,_0x17e25c){var _0x1437c4={'raw':![],'where':{'id':_0x26d622['params']['id']}},_0x4a9d4c={};_0x4a9d4c[_0xfabd('0x32')]=_[_0xfabd('0x33')](db[_0xfabd('0x2e')]['rawAttributes']);_0x4a9d4c['query']=_['keys'](_0x26d622[_0xfabd('0x38')]);_0x4a9d4c[_0xfabd('0x34')]=_[_0xfabd('0x35')](_0x4a9d4c[_0xfabd('0x32')],_0x4a9d4c[_0xfabd('0x38')]);_0x1437c4['attributes']=_[_0xfabd('0x35')](_0x4a9d4c[_0xfabd('0x32')],qs[_0xfabd('0x37')](_0x26d622[_0xfabd('0x38')][_0xfabd('0x37')]));_0x1437c4[_0xfabd('0x36')]=_0x1437c4[_0xfabd('0x36')]['length']?_0x1437c4['attributes']:_0x4a9d4c[_0xfabd('0x32')];if(_0x26d622[_0xfabd('0x38')]['includeAll']){_0x1437c4[_0xfabd('0x44')]=[{'all':!![]}];}_0x1437c4=_['merge']({},_0x1437c4,_0x26d622['options']);return db['UserProfileSection'][_0xfabd('0x48')](_0x1437c4)[_0xfabd('0x25')](handleEntityNotFound(_0x17e25c,null))[_0xfabd('0x25')](respondWithResult(_0x17e25c,null))['catch'](handleError(_0x17e25c,null));};exports[_0xfabd('0x49')]=function(_0x529850,_0x3e5d33){return db['UserProfileSection'][_0xfabd('0x49')](_0x529850[_0xfabd('0x4a')],{})[_0xfabd('0x25')](respondWithResult(_0x3e5d33,0xc9))[_0xfabd('0x46')](handleError(_0x3e5d33,null));};exports[_0xfabd('0x24')]=function(_0x285252,_0x24e367){if(_0x285252['body']['id']){delete _0x285252[_0xfabd('0x4a')]['id'];}return db[_0xfabd('0x2e')]['find']({'where':{'id':_0x285252[_0xfabd('0x4b')]['id']}})[_0xfabd('0x25')](handleEntityNotFound(_0x24e367,null))[_0xfabd('0x25')](saveUpdates(_0x285252[_0xfabd('0x4a')],null))[_0xfabd('0x25')](respondWithResult(_0x24e367,null))[_0xfabd('0x46')](handleError(_0x24e367,null));};exports['destroy']=function(_0x26ff5f,_0x4c7cda){return db[_0xfabd('0x2e')][_0xfabd('0x48')]({'where':{'id':_0x26ff5f[_0xfabd('0x4b')]['id']}})[_0xfabd('0x25')](handleEntityNotFound(_0x4c7cda,null))['then'](removeEntity(_0x4c7cda,null))[_0xfabd('0x46')](handleError(_0x4c7cda,null));};exports[_0xfabd('0x4c')]=function(_0x409bd2,_0x1fef23){return db[_0xfabd('0x2e')][_0xfabd('0x4c')]()[_0xfabd('0x25')](respondWithResult(_0x1fef23,null))['catch'](handleError(_0x1fef23,null));};
\ No newline at end of file
+var _0x78e9=['error','name','send','index','rawAttributes','type','key','map','query','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','filter','VIRTUAL','merge','options','includeAll','include','UserProfileSection','rows','show','params','keys','find','catch','create','body','describe','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','save','update','destroy','then'];(function(_0x10d3c2,_0x1f5142){var _0x4208aa=function(_0x2e1ff9){while(--_0x2e1ff9){_0x10d3c2['push'](_0x10d3c2['shift']());}};_0x4208aa(++_0x1f5142);}(_0x78e9,0x190));var _0x978e=function(_0x8cfaba,_0x207ffb){_0x8cfaba=_0x8cfaba-0x0;var _0x2dc0db=_0x78e9[_0x8cfaba];return _0x2dc0db;};'use strict';var emlformat=require(_0x978e('0x0'));var rimraf=require(_0x978e('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x978e('0x2'));var rp=require(_0x978e('0x3'));var moment=require(_0x978e('0x4'));var BPromise=require(_0x978e('0x5'));var Mustache=require(_0x978e('0x6'));var util=require(_0x978e('0x7'));var path=require(_0x978e('0x8'));var sox=require(_0x978e('0x9'));var csv=require(_0x978e('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x978e('0xb'));var squel=require(_0x978e('0xc'));var crypto=require(_0x978e('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x978e('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x978e('0xf'));var Redis=require(_0x978e('0x10'));var authService=require(_0x978e('0x11'));var qs=require(_0x978e('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x978e('0x13'));var logger=require(_0x978e('0x14'))('api');var utils=require(_0x978e('0x15'));var config=require(_0x978e('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0x978e('0x17'))['db'];function respondWithStatusCode(_0x5ec496,_0x5163c8){_0x5163c8=_0x5163c8||0xcc;return function(_0x4f123c){if(_0x4f123c){return _0x5ec496[_0x978e('0x18')](_0x5163c8);}return _0x5ec496[_0x978e('0x19')](_0x5163c8)[_0x978e('0x1a')]();};}function respondWithResult(_0x4301d0,_0x23dde1){_0x23dde1=_0x23dde1||0xc8;return function(_0x574ad8){if(_0x574ad8){return _0x4301d0[_0x978e('0x19')](_0x23dde1)['json'](_0x574ad8);}};}function respondWithFilteredResult(_0x5b2771,_0x202a23){return function(_0x9a35fb){if(_0x9a35fb){var _0x9653b4=typeof _0x202a23['offset']===_0x978e('0x1b')&&typeof _0x202a23[_0x978e('0x1c')]==='undefined';var _0x1bd8de=_0x9a35fb[_0x978e('0x1d')];var _0x4f9e84=_0x9653b4?0x0:_0x202a23[_0x978e('0x1e')];var _0x51ca13=_0x9653b4?_0x9a35fb[_0x978e('0x1d')]:_0x202a23[_0x978e('0x1e')]+_0x202a23['limit'];var _0x5943a8;if(_0x51ca13>=_0x1bd8de){_0x51ca13=_0x1bd8de;_0x5943a8=0xc8;}else{_0x5943a8=0xce;}_0x5b2771[_0x978e('0x19')](_0x5943a8);return _0x5b2771[_0x978e('0x1f')](_0x978e('0x20'),_0x4f9e84+'-'+_0x51ca13+'/'+_0x1bd8de)[_0x978e('0x21')](_0x9a35fb);}return null;};}function patchUpdates(_0x1329e1){return function(_0x4ce4e8){try{jsonpatch['apply'](_0x4ce4e8,_0x1329e1,!![]);}catch(_0x5b0d98){return BPromise['reject'](_0x5b0d98);}return _0x4ce4e8[_0x978e('0x22')]();};}function saveUpdates(_0x328c66,_0x1025c8){return function(_0x7915f7){if(_0x7915f7){return _0x7915f7[_0x978e('0x23')](_0x328c66)['then'](function(_0x4ad091){return _0x4ad091;});}return null;};}function removeEntity(_0x37e3ca,_0x2d43b2){return function(_0x448b60){if(_0x448b60){return _0x448b60[_0x978e('0x24')]()[_0x978e('0x25')](function(){_0x37e3ca[_0x978e('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4f8cde,_0x3d6fba){return function(_0x564aaa){if(!_0x564aaa){_0x4f8cde[_0x978e('0x18')](0x194);}return _0x564aaa;};}function handleError(_0x1ec313,_0x57cacd){_0x57cacd=_0x57cacd||0x1f4;return function(_0x525c18){logger[_0x978e('0x26')](_0x525c18['stack']);if(_0x525c18[_0x978e('0x27')]){delete _0x525c18[_0x978e('0x27')];}_0x1ec313[_0x978e('0x19')](_0x57cacd)[_0x978e('0x28')](_0x525c18);};}exports[_0x978e('0x29')]=function(_0x482793,_0x544e36){var _0x56b4b0={},_0x247483={},_0x327fff={'count':0x0,'rows':[]};var _0x89a50a=_['map'](db['UserProfileSection'][_0x978e('0x2a')],function(_0xdebb81){return{'name':_0xdebb81['fieldName'],'type':_0xdebb81[_0x978e('0x2b')][_0x978e('0x2c')]};});_0x247483['model']=_[_0x978e('0x2d')](_0x89a50a,_0x978e('0x27'));_0x247483['query']=_['keys'](_0x482793[_0x978e('0x2e')]);_0x247483[_0x978e('0x2f')]=_[_0x978e('0x30')](_0x247483[_0x978e('0x31')],_0x247483[_0x978e('0x2e')]);_0x56b4b0[_0x978e('0x32')]=_[_0x978e('0x30')](_0x247483[_0x978e('0x31')],qs[_0x978e('0x33')](_0x482793[_0x978e('0x2e')][_0x978e('0x33')]));_0x56b4b0['attributes']=_0x56b4b0[_0x978e('0x32')][_0x978e('0x34')]?_0x56b4b0[_0x978e('0x32')]:_0x247483[_0x978e('0x31')];if(!_0x482793['query']['hasOwnProperty'](_0x978e('0x35'))){_0x56b4b0[_0x978e('0x1c')]=qs[_0x978e('0x1c')](_0x482793[_0x978e('0x2e')][_0x978e('0x1c')]);_0x56b4b0['offset']=qs['offset'](_0x482793[_0x978e('0x2e')][_0x978e('0x1e')]);}_0x56b4b0[_0x978e('0x36')]=qs[_0x978e('0x37')](_0x482793[_0x978e('0x2e')][_0x978e('0x37')]);_0x56b4b0[_0x978e('0x38')]=qs[_0x978e('0x2f')](_['pick'](_0x482793[_0x978e('0x2e')],_0x247483[_0x978e('0x2f')]),_0x89a50a);if(_0x482793[_0x978e('0x2e')][_0x978e('0x39')]){_0x56b4b0[_0x978e('0x38')]=_['merge'](_0x56b4b0[_0x978e('0x38')],{'$or':_[_0x978e('0x2d')](_0x89a50a,function(_0x3accbd){if(_0x3accbd['type']!==_0x978e('0x3a')){var _0x1a8737={};_0x1a8737[_0x3accbd[_0x978e('0x27')]]={'$like':'%'+_0x482793['query']['filter']+'%'};return _0x1a8737;}})});}_0x56b4b0=_[_0x978e('0x3b')]({},_0x56b4b0,_0x482793[_0x978e('0x3c')]);var _0x12e1e8={'where':_0x56b4b0[_0x978e('0x38')]};return db['UserProfileSection'][_0x978e('0x1d')](_0x12e1e8)[_0x978e('0x25')](function(_0x37e7ac){_0x327fff['count']=_0x37e7ac;if(_0x482793['query'][_0x978e('0x3d')]){_0x56b4b0[_0x978e('0x3e')]=[{'all':!![]}];}return db[_0x978e('0x3f')]['findAll'](_0x56b4b0);})[_0x978e('0x25')](function(_0x10beee){_0x327fff[_0x978e('0x40')]=_0x10beee;return _0x327fff;})[_0x978e('0x25')](respondWithFilteredResult(_0x544e36,_0x56b4b0))['catch'](handleError(_0x544e36,null));};exports[_0x978e('0x41')]=function(_0x41c3e9,_0x119700){var _0x52403a={'raw':![],'where':{'id':_0x41c3e9[_0x978e('0x42')]['id']}},_0x58b8e3={};_0x58b8e3[_0x978e('0x31')]=_['keys'](db[_0x978e('0x3f')][_0x978e('0x2a')]);_0x58b8e3[_0x978e('0x2e')]=_[_0x978e('0x43')](_0x41c3e9[_0x978e('0x2e')]);_0x58b8e3[_0x978e('0x2f')]=_['intersection'](_0x58b8e3[_0x978e('0x31')],_0x58b8e3[_0x978e('0x2e')]);_0x52403a[_0x978e('0x32')]=_[_0x978e('0x30')](_0x58b8e3['model'],qs[_0x978e('0x33')](_0x41c3e9[_0x978e('0x2e')]['fields']));_0x52403a['attributes']=_0x52403a[_0x978e('0x32')][_0x978e('0x34')]?_0x52403a[_0x978e('0x32')]:_0x58b8e3['model'];if(_0x41c3e9['query'][_0x978e('0x3d')]){_0x52403a[_0x978e('0x3e')]=[{'all':!![]}];}_0x52403a=_[_0x978e('0x3b')]({},_0x52403a,_0x41c3e9[_0x978e('0x3c')]);return db[_0x978e('0x3f')][_0x978e('0x44')](_0x52403a)[_0x978e('0x25')](handleEntityNotFound(_0x119700,null))[_0x978e('0x25')](respondWithResult(_0x119700,null))[_0x978e('0x45')](handleError(_0x119700,null));};exports[_0x978e('0x46')]=function(_0x790dc5,_0x2b9d33){return db[_0x978e('0x3f')][_0x978e('0x46')](_0x790dc5['body'],{})['then'](respondWithResult(_0x2b9d33,0xc9))[_0x978e('0x45')](handleError(_0x2b9d33,null));};exports[_0x978e('0x23')]=function(_0x58ae5d,_0x30c2a5){if(_0x58ae5d[_0x978e('0x47')]['id']){delete _0x58ae5d[_0x978e('0x47')]['id'];}return db[_0x978e('0x3f')][_0x978e('0x44')]({'where':{'id':_0x58ae5d[_0x978e('0x42')]['id']}})[_0x978e('0x25')](handleEntityNotFound(_0x30c2a5,null))[_0x978e('0x25')](saveUpdates(_0x58ae5d['body'],null))['then'](respondWithResult(_0x30c2a5,null))['catch'](handleError(_0x30c2a5,null));};exports[_0x978e('0x24')]=function(_0x58f02d,_0x579368){return db[_0x978e('0x3f')][_0x978e('0x44')]({'where':{'id':_0x58f02d[_0x978e('0x42')]['id']}})[_0x978e('0x25')](handleEntityNotFound(_0x579368,null))['then'](removeEntity(_0x579368,null))[_0x978e('0x45')](handleError(_0x579368,null));};exports['describe']=function(_0x583b9c,_0xe8d551){return db[_0x978e('0x3f')][_0x978e('0x48')]()[_0x978e('0x25')](respondWithResult(_0xe8d551,null))[_0x978e('0x45')](handleError(_0xe8d551,null));};
\ No newline at end of file
index b32b032..9287e57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7622=['define','UserProfileSection','user_profile_has_sections','userProfileId','lodash','util','../../config/logger','api','bluebird','rimraf','../../config/environment','./userProfileSection.attributes','exports'];(function(_0x3f7109,_0x188ed1){var _0x1fdd39=function(_0x551576){while(--_0x551576){_0x3f7109['push'](_0x3f7109['shift']());}};_0x1fdd39(++_0x188ed1);}(_0x7622,0x6c));var _0x2762=function(_0x289c3e,_0x3614b5){_0x289c3e=_0x289c3e-0x0;var _0x25a4b3=_0x7622[_0x289c3e];return _0x25a4b3;};'use strict';var _=require(_0x2762('0x0'));var util=require(_0x2762('0x1'));var logger=require(_0x2762('0x2'))(_0x2762('0x3'));var moment=require('moment');var BPromise=require(_0x2762('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x2762('0x5'));var config=require(_0x2762('0x6'));var attributes=require(_0x2762('0x7'));module[_0x2762('0x8')]=function(_0x289d74,_0x178f36){return _0x289d74[_0x2762('0x9')](_0x2762('0xa'),attributes,{'tableName':_0x2762('0xb'),'paranoid':![],'indexes':[{'name':'compositeIndex','fields':['sectionId',_0x2762('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xdeb3=['userProfileId','util','../../config/logger','api','request-promise','path','rimraf','../../config/environment','./userProfileSection.attributes','define','user_profile_has_sections','compositeIndex','sectionId'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0xdeb3,0xb7));var _0x3deb=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0xdeb3[_0x4b369d];return _0x571a98;};'use strict';var _=require('lodash');var util=require(_0x3deb('0x0'));var logger=require(_0x3deb('0x1'))(_0x3deb('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require(_0x3deb('0x3'));var fs=require('fs');var path=require(_0x3deb('0x4'));var rimraf=require(_0x3deb('0x5'));var config=require(_0x3deb('0x6'));var attributes=require(_0x3deb('0x7'));module['exports']=function(_0x193700,_0x47d2d4){return _0x193700[_0x3deb('0x8')]('UserProfileSection',attributes,{'tableName':_0x3deb('0x9'),'paranoid':![],'indexes':[{'name':_0x3deb('0xa'),'fields':[_0x3deb('0xb'),_0x3deb('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index c98f878..38b1b5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x07dd=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','UserProfileSection,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','randomstring','ioredis'];(function(_0x2be8c2,_0x14a4b5){var _0x97f531=function(_0xcee58d){while(--_0xcee58d){_0x2be8c2['push'](_0x2be8c2['shift']());}};_0x97f531(++_0x14a4b5);}(_0x07dd,0x64));var _0xd07d=function(_0x14e442,_0x36b1bd){_0x14e442=_0x14e442-0x0;var _0x1385e2=_0x07dd[_0x14e442];return _0x1385e2;};'use strict';var _=require(_0xd07d('0x0'));var util=require(_0xd07d('0x1'));var moment=require(_0xd07d('0x2'));var BPromise=require('bluebird');var rs=require(_0xd07d('0x3'));var fs=require('fs');var Redis=require(_0xd07d('0x4'));var db=require(_0xd07d('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xd07d('0x6'))(_0xd07d('0x7'));var config=require(_0xd07d('0x8'));var jayson=require(_0xd07d('0x9'));var client=jayson[_0xd07d('0xa')][_0xd07d('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x859b7f,_0x5792bc,_0x44deb3){return new BPromise(function(_0x49b24a,_0xb76611){return client['request'](_0x859b7f,_0x44deb3)['then'](function(_0x1ae491){logger[_0xd07d('0xc')](_0xd07d('0xd'),_0x5792bc,_0xd07d('0xe'));logger['debug'](_0xd07d('0xf'),_0x5792bc,'request\x20sent',JSON['stringify'](_0x1ae491));if(_0x1ae491[_0xd07d('0x10')]){if(_0x1ae491[_0xd07d('0x10')][_0xd07d('0x11')]===0x1f4){logger['error'](_0xd07d('0xd'),_0x5792bc,_0x1ae491[_0xd07d('0x10')][_0xd07d('0x12')]);return _0xb76611(_0x1ae491['error'][_0xd07d('0x12')]);}logger['error'](_0xd07d('0xd'),_0x5792bc,_0x1ae491[_0xd07d('0x10')]['message']);return _0x49b24a(_0x1ae491[_0xd07d('0x10')][_0xd07d('0x12')]);}else{logger['info']('UserProfileSection,\x20%s,\x20%s',_0x5792bc,_0xd07d('0xe'));_0x49b24a(_0x1ae491[_0xd07d('0x13')][_0xd07d('0x12')]);}})[_0xd07d('0x14')](function(_0x520cbd){logger[_0xd07d('0x10')](_0xd07d('0xd'),_0x5792bc,_0x520cbd);_0xb76611(_0x520cbd);});});}
\ No newline at end of file
+var _0x33e6=['code','message','catch','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','../../config/environment','client','http','request','then','info','UserProfileSection,\x20%s,\x20%s','request\x20sent','UserProfileSection,\x20%s,\x20%s,\x20%s','stringify','error'];(function(_0x3e813e,_0x56d2a1){var _0x37a809=function(_0x15fc51){while(--_0x15fc51){_0x3e813e['push'](_0x3e813e['shift']());}};_0x37a809(++_0x56d2a1);}(_0x33e6,0xc0));var _0x633e=function(_0x326eaf,_0x4ec974){_0x326eaf=_0x326eaf-0x0;var _0xf1bcab=_0x33e6[_0x326eaf];return _0xf1bcab;};'use strict';var _=require(_0x633e('0x0'));var util=require('util');var moment=require(_0x633e('0x1'));var BPromise=require(_0x633e('0x2'));var rs=require(_0x633e('0x3'));var fs=require('fs');var Redis=require(_0x633e('0x4'));var db=require(_0x633e('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x633e('0x6'))('rpc');var config=require(_0x633e('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x633e('0x8')][_0x633e('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2199ae,_0x1bf61a,_0x44b4c9){return new BPromise(function(_0x59d416,_0xdb9544){return client[_0x633e('0xa')](_0x2199ae,_0x44b4c9)[_0x633e('0xb')](function(_0x235437){logger[_0x633e('0xc')](_0x633e('0xd'),_0x1bf61a,_0x633e('0xe'));logger['debug'](_0x633e('0xf'),_0x1bf61a,_0x633e('0xe'),JSON[_0x633e('0x10')](_0x235437));if(_0x235437[_0x633e('0x11')]){if(_0x235437[_0x633e('0x11')][_0x633e('0x12')]===0x1f4){logger[_0x633e('0x11')](_0x633e('0xd'),_0x1bf61a,_0x235437[_0x633e('0x11')][_0x633e('0x13')]);return _0xdb9544(_0x235437[_0x633e('0x11')][_0x633e('0x13')]);}logger['error'](_0x633e('0xd'),_0x1bf61a,_0x235437[_0x633e('0x11')]['message']);return _0x59d416(_0x235437['error'][_0x633e('0x13')]);}else{logger[_0x633e('0xc')](_0x633e('0xd'),_0x1bf61a,_0x633e('0xe'));_0x59d416(_0x235437['result'][_0x633e('0x13')]);}})[_0x633e('0x14')](function(_0x11d469){logger[_0x633e('0x11')](_0x633e('0xd'),_0x1bf61a,_0x11d469);_0xdb9544(_0x11d469);});});}
\ No newline at end of file
index e1b10c2..3f1c66a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['../../components/auth/service','../../components/interaction/service','exports','multer','util','path','Router','fs-extra'];(function(_0x309aa6,_0x45b458){var _0x1fdcdd=function(_0x290437){while(--_0x290437){_0x309aa6['push'](_0x309aa6['shift']());}};_0x1fdcdd(++_0x45b458);}(_0x70e0,0x17b));var _0x070e=function(_0x4c5809,_0xf1f734){_0x4c5809=_0x4c5809-0x0;var _0xb9d359=_0x70e0[_0x4c5809];return _0xb9d359;};'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
+var _0x9c44=['express','Router','fs-extra','../../components/auth/service','exports','path','connect-timeout'];(function(_0xc08f00,_0x28067f){var _0x8649f7=function(_0x25f9a2){while(--_0x25f9a2){_0xc08f00['push'](_0xc08f00['shift']());}};_0x8649f7(++_0x28067f);}(_0x9c44,0x178));var _0x49c4=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x9c44[_0x2641f9];return _0x585741;};'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 0f57ebe..144f44d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc06=['INTEGER','sequelize','exports'];(function(_0x273e9a,_0x1d5505){var _0x48d6d1=function(_0x2094bf){while(--_0x2094bf){_0x273e9a['push'](_0x273e9a['shift']());}};_0x48d6d1(++_0x1d5505);}(_0xfc06,0x6a));var _0x6fc0=function(_0x589162,_0x1e8537){_0x589162=_0x589162-0x0;var _0x2826e6=_0xfc06[_0x589162];return _0x2826e6;};'use strict';var Sequelize=require(_0x6fc0('0x0'));module[_0x6fc0('0x1')]={'penalty':{'type':Sequelize[_0x6fc0('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x0a2a=['sequelize','exports','INTEGER'];(function(_0x1649af,_0x9522f8){var _0x28359a=function(_0x255fd8){while(--_0x255fd8){_0x1649af['push'](_0x1649af['shift']());}};_0x28359a(++_0x9522f8);}(_0x0a2a,0x186));var _0xa0a2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0a2a[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0xa0a2('0x0'));module[_0xa0a2('0x1')]={'penalty':{'type':Sequelize[_0xa0a2('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 8a3da87..9383acf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57ca=['util','../../config/logger','moment','bluebird','request-promise','path','rimraf','./userSmsQueue.attributes','exports','define','UserSmsQueue','user_has_sms_queues'];(function(_0x12f69b,_0x2445df){var _0x3ae140=function(_0x5f5962){while(--_0x5f5962){_0x12f69b['push'](_0x12f69b['shift']());}};_0x3ae140(++_0x2445df);}(_0x57ca,0x108));var _0xa57c=function(_0x4ce680,_0x347bec){_0x4ce680=_0x4ce680-0x0;var _0x13fa09=_0x57ca[_0x4ce680];return _0x13fa09;};'use strict';var _=require('lodash');var util=require(_0xa57c('0x0'));var logger=require(_0xa57c('0x1'))('api');var moment=require(_0xa57c('0x2'));var BPromise=require(_0xa57c('0x3'));var rp=require(_0xa57c('0x4'));var fs=require('fs');var path=require(_0xa57c('0x5'));var rimraf=require(_0xa57c('0x6'));var config=require('../../config/environment');var attributes=require(_0xa57c('0x7'));module[_0xa57c('0x8')]=function(_0x113dcf,_0x19473f){return _0x113dcf[_0xa57c('0x9')](_0xa57c('0xa'),attributes,{'tableName':_0xa57c('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x9b0d=['define','UserSmsQueue','user_has_sms_queues','util','../../config/logger','api','moment','request-promise','path','rimraf','../../config/environment','exports'];(function(_0x207eef,_0x39622d){var _0x1d906f=function(_0x55cfd0){while(--_0x55cfd0){_0x207eef['push'](_0x207eef['shift']());}};_0x1d906f(++_0x39622d);}(_0x9b0d,0xb7));var _0xd9b0=function(_0x3d2bad,_0x4d8a8d){_0x3d2bad=_0x3d2bad-0x0;var _0x39c3ac=_0x9b0d[_0x3d2bad];return _0x39c3ac;};'use strict';var _=require('lodash');var util=require(_0xd9b0('0x0'));var logger=require(_0xd9b0('0x1'))(_0xd9b0('0x2'));var moment=require(_0xd9b0('0x3'));var BPromise=require('bluebird');var rp=require(_0xd9b0('0x4'));var fs=require('fs');var path=require(_0xd9b0('0x5'));var rimraf=require(_0xd9b0('0x6'));var config=require(_0xd9b0('0x7'));var attributes=require('./userSmsQueue.attributes');module[_0xd9b0('0x8')]=function(_0x21798d,_0x41dad9){return _0x21798d[_0xd9b0('0x9')](_0xd9b0('0xa'),attributes,{'tableName':_0xd9b0('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 159f15b..d272b5f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf4f=['then','info','UserSmsQueue,\x20%s,\x20%s','debug','stringify','error','code','message','result','lodash','util','bluebird','ioredis','../../mysqldb','../../config/environment','jayson/promise','http','request'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xcf4f,0x87));var _0xfcf4=function(_0x68ee8b,_0x3cc6c5){_0x68ee8b=_0x68ee8b-0x0;var _0x5148f7=_0xcf4f[_0x68ee8b];return _0x5148f7;};'use strict';var _=require(_0xfcf4('0x0'));var util=require(_0xfcf4('0x1'));var moment=require('moment');var BPromise=require(_0xfcf4('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xfcf4('0x3'));var db=require(_0xfcf4('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xfcf4('0x5'));var jayson=require(_0xfcf4('0x6'));var client=jayson['client'][_0xfcf4('0x7')]({'port':0x232a});function respondWithRpcPromise(_0xb2e045,_0x536e53,_0x1ec7f3){return new BPromise(function(_0x1707cb,_0xbc3992){return client[_0xfcf4('0x8')](_0xb2e045,_0x1ec7f3)[_0xfcf4('0x9')](function(_0x1fa6c0){logger[_0xfcf4('0xa')](_0xfcf4('0xb'),_0x536e53,'request\x20sent');logger[_0xfcf4('0xc')]('UserSmsQueue,\x20%s,\x20%s,\x20%s',_0x536e53,'request\x20sent',JSON[_0xfcf4('0xd')](_0x1fa6c0));if(_0x1fa6c0['error']){if(_0x1fa6c0[_0xfcf4('0xe')][_0xfcf4('0xf')]===0x1f4){logger[_0xfcf4('0xe')](_0xfcf4('0xb'),_0x536e53,_0x1fa6c0[_0xfcf4('0xe')][_0xfcf4('0x10')]);return _0xbc3992(_0x1fa6c0[_0xfcf4('0xe')][_0xfcf4('0x10')]);}logger[_0xfcf4('0xe')](_0xfcf4('0xb'),_0x536e53,_0x1fa6c0[_0xfcf4('0xe')][_0xfcf4('0x10')]);return _0x1707cb(_0x1fa6c0[_0xfcf4('0xe')][_0xfcf4('0x10')]);}else{logger[_0xfcf4('0xa')](_0xfcf4('0xb'),_0x536e53,'request\x20sent');_0x1707cb(_0x1fa6c0[_0xfcf4('0x11')][_0xfcf4('0x10')]);}})['catch'](function(_0xfbe675){logger[_0xfcf4('0xe')](_0xfcf4('0xb'),_0x536e53,_0xfbe675);_0xbc3992(_0xfbe675);});});}
\ No newline at end of file
+var _0xfd08=['UserSmsQueue,\x20%s,\x20%s','request\x20sent','stringify','error','message','result','catch','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x15c1f1,_0x5cca54){var _0x499879=function(_0x141ee4){while(--_0x141ee4){_0x15c1f1['push'](_0x15c1f1['shift']());}};_0x499879(++_0x5cca54);}(_0xfd08,0xd8));var _0x8fd0=function(_0x5cab28,_0x307622){_0x5cab28=_0x5cab28-0x0;var _0xa3554d=_0xfd08[_0x5cab28];return _0xa3554d;};'use strict';var _=require(_0x8fd0('0x0'));var util=require('util');var moment=require(_0x8fd0('0x1'));var BPromise=require(_0x8fd0('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x8fd0('0x3'));var db=require(_0x8fd0('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x8fd0('0x5'))(_0x8fd0('0x6'));var config=require(_0x8fd0('0x7'));var jayson=require(_0x8fd0('0x8'));var client=jayson[_0x8fd0('0x9')][_0x8fd0('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x97571e,_0xb0bdf3,_0x1bb8ef){return new BPromise(function(_0x4ad5df,_0x1ecd57){return client[_0x8fd0('0xb')](_0x97571e,_0x1bb8ef)['then'](function(_0x3c1eee){logger['info'](_0x8fd0('0xc'),_0xb0bdf3,_0x8fd0('0xd'));logger['debug']('UserSmsQueue,\x20%s,\x20%s,\x20%s',_0xb0bdf3,_0x8fd0('0xd'),JSON[_0x8fd0('0xe')](_0x3c1eee));if(_0x3c1eee[_0x8fd0('0xf')]){if(_0x3c1eee[_0x8fd0('0xf')]['code']===0x1f4){logger[_0x8fd0('0xf')]('UserSmsQueue,\x20%s,\x20%s',_0xb0bdf3,_0x3c1eee['error'][_0x8fd0('0x10')]);return _0x1ecd57(_0x3c1eee[_0x8fd0('0xf')]['message']);}logger[_0x8fd0('0xf')]('UserSmsQueue,\x20%s,\x20%s',_0xb0bdf3,_0x3c1eee[_0x8fd0('0xf')][_0x8fd0('0x10')]);return _0x4ad5df(_0x3c1eee['error'][_0x8fd0('0x10')]);}else{logger['info'](_0x8fd0('0xc'),_0xb0bdf3,_0x8fd0('0xd'));_0x4ad5df(_0x3c1eee[_0x8fd0('0x11')][_0x8fd0('0x10')]);}})[_0x8fd0('0x12')](function(_0x5c3ae3){logger['error'](_0x8fd0('0xc'),_0xb0bdf3,_0x5c3ae3);_0x1ecd57(_0x5c3ae3);});});}
\ No newline at end of file
index 96970c1..00b32ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c52=['sequelize','INTEGER'];(function(_0x522cba,_0x3cb8be){var _0x4a0876=function(_0x49dbd5){while(--_0x49dbd5){_0x522cba['push'](_0x522cba['shift']());}};_0x4a0876(++_0x3cb8be);}(_0x5c52,0x152));var _0x25c5=function(_0x372a1d,_0x433913){_0x372a1d=_0x372a1d-0x0;var _0x5cc468=_0x5c52[_0x372a1d];return _0x5cc468;};'use strict';var Sequelize=require(_0x25c5('0x0'));module['exports']={'UserId':{'type':Sequelize[_0x25c5('0x1')]},'VoicePrefixId':{'type':Sequelize[_0x25c5('0x1')]}};
\ No newline at end of file
+var _0xdfee=['exports','INTEGER'];(function(_0x1d62fe,_0x1a41a6){var _0x1b4ef8=function(_0xc1672){while(--_0xc1672){_0x1d62fe['push'](_0x1d62fe['shift']());}};_0x1b4ef8(++_0x1a41a6);}(_0xdfee,0x12a));var _0xedfe=function(_0x197e68,_0x320a88){_0x197e68=_0x197e68-0x0;var _0x3505fd=_0xdfee[_0x197e68];return _0x3505fd;};'use strict';var Sequelize=require('sequelize');module[_0xedfe('0x0')]={'UserId':{'type':Sequelize[_0xedfe('0x1')]},'VoicePrefixId':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
index 031cac0..1e1ddfc 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(_0x2f865f,_0x4d3de4){var _0x1992ce=function(_0xc697d6){while(--_0xc697d6){_0x2f865f['push'](_0x2f865f['shift']());}};_0x1992ce(++_0x4d3de4);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xa9e0[_0x3054be];return _0x3df150;};'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(_0x25b841,_0x43b5e2){var _0x402b10=function(_0x50cb95){while(--_0x50cb95){_0x25b841['push'](_0x25b841['shift']());}};_0x402b10(++_0x43b5e2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x37bd26,_0x5ad346){_0x37bd26=_0x37bd26-0x0;var _0xe83dc4=_0xa9e0[_0x37bd26];return _0xe83dc4;};'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 28fd40f..2686ae9 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(_0x44e016,_0x2a4ac3){var _0x5bc0a0=function(_0x2e3b13){while(--_0x2e3b13){_0x44e016['push'](_0x44e016['shift']());}};_0x5bc0a0(++_0x2a4ac3);}(_0x9c44,0x178));var _0x49c4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9c44[_0x3dd15e];return _0x231fd0;};'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 _0x0713=['../../config/environment','exports','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service'];(function(_0x1ec780,_0x3a1997){var _0x175ec6=function(_0x3aee5c){while(--_0x3aee5c){_0x1ec780['push'](_0x1ec780['shift']());}};_0x175ec6(++_0x3a1997);}(_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 bbeb156..5d4aca7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a26=['exports','sequelize'];(function(_0x3b0c1b,_0x57a009){var _0x77ae0e=function(_0x1aa441){while(--_0x1aa441){_0x3b0c1b['push'](_0x3b0c1b['shift']());}};_0x77ae0e(++_0x57a009);}(_0x5a26,0x165));var _0x65a2=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5a26[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x65a2('0x0'));module[_0x65a2('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xecd9=['INTEGER','sequelize','exports'];(function(_0x31abee,_0x11ff0c){var _0x3c1761=function(_0x2b5062){while(--_0x2b5062){_0x31abee['push'](_0x31abee['shift']());}};_0x3c1761(++_0x11ff0c);}(_0xecd9,0x13f));var _0x9ecd=function(_0x19e196,_0x55e1ba){_0x19e196=_0x19e196-0x0;var _0x121ade=_0xecd9[_0x19e196];return _0x121ade;};'use strict';var Sequelize=require(_0x9ecd('0x0'));module[_0x9ecd('0x1')]={'penalty':{'type':Sequelize[_0x9ecd('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 617f25a..eb1dbfb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x321c=['define','user_has_voice_queues','lodash','../../config/logger','moment','bluebird','path','rimraf','./userVoiceQueue.attributes'];(function(_0x23ef1f,_0x127dd2){var _0x234192=function(_0x2d83da){while(--_0x2d83da){_0x23ef1f['push'](_0x23ef1f['shift']());}};_0x234192(++_0x127dd2);}(_0x321c,0x1b2));var _0xc321=function(_0x3215b5,_0x2f4c73){_0x3215b5=_0x3215b5-0x0;var _0x6d71d0=_0x321c[_0x3215b5];return _0x6d71d0;};'use strict';var _=require(_0xc321('0x0'));var util=require('util');var logger=require(_0xc321('0x1'))('api');var moment=require(_0xc321('0x2'));var BPromise=require(_0xc321('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xc321('0x4'));var rimraf=require(_0xc321('0x5'));var config=require('../../config/environment');var attributes=require(_0xc321('0x6'));module['exports']=function(_0x8e1e19,_0x337506){return _0x8e1e19[_0xc321('0x7')]('UserVoiceQueue',attributes,{'tableName':_0xc321('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xff9e=['exports','UserVoiceQueue','lodash','util','../../config/logger','api','moment','request-promise','path','../../config/environment','./userVoiceQueue.attributes'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xff9e,0xe9));var _0xeff9=function(_0x3f0753,_0x556828){_0x3f0753=_0x3f0753-0x0;var _0x519e6a=_0xff9e[_0x3f0753];return _0x519e6a;};'use strict';var _=require(_0xeff9('0x0'));var util=require(_0xeff9('0x1'));var logger=require(_0xeff9('0x2'))(_0xeff9('0x3'));var moment=require(_0xeff9('0x4'));var BPromise=require('bluebird');var rp=require(_0xeff9('0x5'));var fs=require('fs');var path=require(_0xeff9('0x6'));var rimraf=require('rimraf');var config=require(_0xeff9('0x7'));var attributes=require(_0xeff9('0x8'));module[_0xeff9('0x9')]=function(_0x9b1cab,_0x4f1898){return _0x9b1cab['define'](_0xeff9('0xa'),attributes,{'tableName':'user_has_voice_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 6a955a8..3eab129 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa2ea=['randomstring','ioredis','../../mysqldb','../../config/environment','jayson/promise','client','http','request','then','info','UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','util','moment'];(function(_0x341dfc,_0x3a68f2){var _0x3ee25f=function(_0x2dd21e){while(--_0x2dd21e){_0x341dfc['push'](_0x341dfc['shift']());}};_0x3ee25f(++_0x3a68f2);}(_0xa2ea,0xcf));var _0xaa2e=function(_0x3238bd,_0x4ea3ef){_0x3238bd=_0x3238bd-0x0;var _0xdc7a7e=_0xa2ea[_0x3238bd];return _0xdc7a7e;};'use strict';var _=require('lodash');var util=require(_0xaa2e('0x0'));var moment=require(_0xaa2e('0x1'));var BPromise=require('bluebird');var rs=require(_0xaa2e('0x2'));var fs=require('fs');var Redis=require(_0xaa2e('0x3'));var db=require(_0xaa2e('0x4'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')('rpc');var config=require(_0xaa2e('0x5'));var jayson=require(_0xaa2e('0x6'));var client=jayson[_0xaa2e('0x7')][_0xaa2e('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x36c4d9,_0x58a1a3,_0xb4ac90){return new BPromise(function(_0x4f8f53,_0x51abc6){return client[_0xaa2e('0x9')](_0x36c4d9,_0xb4ac90)[_0xaa2e('0xa')](function(_0x53a109){logger[_0xaa2e('0xb')](_0xaa2e('0xc'),_0x58a1a3,_0xaa2e('0xd'));logger[_0xaa2e('0xe')](_0xaa2e('0xf'),_0x58a1a3,'request\x20sent',JSON[_0xaa2e('0x10')](_0x53a109));if(_0x53a109['error']){if(_0x53a109[_0xaa2e('0x11')]['code']===0x1f4){logger[_0xaa2e('0x11')](_0xaa2e('0xc'),_0x58a1a3,_0x53a109['error']['message']);return _0x51abc6(_0x53a109['error'][_0xaa2e('0x12')]);}logger[_0xaa2e('0x11')](_0xaa2e('0xc'),_0x58a1a3,_0x53a109[_0xaa2e('0x11')]['message']);return _0x4f8f53(_0x53a109[_0xaa2e('0x11')]['message']);}else{logger[_0xaa2e('0xb')]('UserVoiceQueue,\x20%s,\x20%s',_0x58a1a3,_0xaa2e('0xd'));_0x4f8f53(_0x53a109['result']['message']);}})['catch'](function(_0x4a5f67){logger[_0xaa2e('0x11')](_0xaa2e('0xc'),_0x58a1a3,_0x4a5f67);_0x51abc6(_0x4a5f67);});});}
\ No newline at end of file
+var _0xc2f7=['UserVoiceQueue,\x20%s,\x20%s','request\x20sent','debug','UserVoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','message','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','rpc','../../config/environment','client','http','request','then','info'];(function(_0xc69f39,_0x2ce0cf){var _0x93be41=function(_0xd66056){while(--_0xd66056){_0xc69f39['push'](_0xc69f39['shift']());}};_0x93be41(++_0x2ce0cf);}(_0xc2f7,0xcf));var _0x7c2f=function(_0x246c71,_0x2dc14f){_0x246c71=_0x246c71-0x0;var _0x5592e2=_0xc2f7[_0x246c71];return _0x5592e2;};'use strict';var _=require('lodash');var util=require(_0x7c2f('0x0'));var moment=require(_0x7c2f('0x1'));var BPromise=require(_0x7c2f('0x2'));var rs=require(_0x7c2f('0x3'));var fs=require('fs');var Redis=require(_0x7c2f('0x4'));var db=require(_0x7c2f('0x5'))['db'];var utils=require('../../config/utils');var logger=require('../../config/logger')(_0x7c2f('0x6'));var config=require(_0x7c2f('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x7c2f('0x8')][_0x7c2f('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x3b3fb4,_0xea69f4,_0x284d84){return new BPromise(function(_0x41e59d,_0x1770fa){return client[_0x7c2f('0xa')](_0x3b3fb4,_0x284d84)[_0x7c2f('0xb')](function(_0x45b23a){logger[_0x7c2f('0xc')](_0x7c2f('0xd'),_0xea69f4,_0x7c2f('0xe'));logger[_0x7c2f('0xf')](_0x7c2f('0x10'),_0xea69f4,_0x7c2f('0xe'),JSON[_0x7c2f('0x11')](_0x45b23a));if(_0x45b23a['error']){if(_0x45b23a[_0x7c2f('0x12')]['code']===0x1f4){logger[_0x7c2f('0x12')](_0x7c2f('0xd'),_0xea69f4,_0x45b23a[_0x7c2f('0x12')][_0x7c2f('0x13')]);return _0x1770fa(_0x45b23a[_0x7c2f('0x12')]['message']);}logger[_0x7c2f('0x12')](_0x7c2f('0xd'),_0xea69f4,_0x45b23a[_0x7c2f('0x12')][_0x7c2f('0x13')]);return _0x41e59d(_0x45b23a[_0x7c2f('0x12')]['message']);}else{logger[_0x7c2f('0xc')](_0x7c2f('0xd'),_0xea69f4,'request\x20sent');_0x41e59d(_0x45b23a[_0x7c2f('0x14')][_0x7c2f('0x13')]);}})[_0x7c2f('0x15')](function(_0x54e519){logger[_0x7c2f('0x12')]('UserVoiceQueue,\x20%s,\x20%s',_0xea69f4,_0x54e519);_0x1770fa(_0x54e519);});});}
\ No newline at end of file
index ce722d5..0ab5347 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(_0x3eae02,_0x367d0f){var _0xf27f0d=function(_0x4249a5){while(--_0x4249a5){_0x3eae02['push'](_0x3eae02['shift']());}};_0xf27f0d(++_0x367d0f);}(_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 _0xcb91=['express','Router','../../components/auth/service','../../components/interaction/service','exports','path','connect-timeout'];(function(_0xfd96a3,_0x266b97){var _0x5a9e8a=function(_0x37305f){while(--_0x37305f){_0xfd96a3['push'](_0xfd96a3['shift']());}};_0x5a9e8a(++_0x266b97);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x1f99a0,_0x50b73d){_0x1f99a0=_0x1f99a0-0x0;var _0x1e0849=_0xcb91[_0x1f99a0];return _0x1e0849;};'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
index 64cb85a..a991c93 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2ce1=['sequelize','INTEGER','STRING','Required\x20by\x20Asterisk','queue_interface'];(function(_0x55cffa,_0x326b9e){var _0x1df17b=function(_0xf4f4aa){while(--_0xf4f4aa){_0x55cffa['push'](_0x55cffa['shift']());}};_0x1df17b(++_0x326b9e);}(_0x2ce1,0xff));var _0x12ce=function(_0x5678f8,_0x23cff2){_0x5678f8=_0x5678f8-0x0;var _0x277ee0=_0x2ce1[_0x5678f8];return _0x277ee0;};'use strict';var Sequelize=require(_0x12ce('0x0'));module['exports']={'uniqueid':{'type':Sequelize[_0x12ce('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':'Required\x20by\x20Asterisk'},'membername':{'type':Sequelize[_0x12ce('0x2')],'allowNull':![],'comment':_0x12ce('0x3')},'UserId':{'type':Sequelize['INTEGER'],'allowNull':![]},'queue_name':{'type':Sequelize[_0x12ce('0x2')],'allowNull':![],'unique':_0x12ce('0x4'),'comment':_0x12ce('0x3')},'VoiceQueueId':{'type':Sequelize[_0x12ce('0x1')],'allowNull':![]},'interface':{'type':Sequelize[_0x12ce('0x2')],'allowNull':![],'unique':'queue_interface','comment':_0x12ce('0x3')},'penalty':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0,'comment':_0x12ce('0x3')},'paused':{'type':Sequelize[_0x12ce('0x1')](0xb),'defaultValue':0x0,'comment':_0x12ce('0x3')}};
\ No newline at end of file
+var _0xf29c=['INTEGER','Required\x20by\x20Asterisk','STRING','queue_interface','exports'];(function(_0x1a0631,_0xf522ec){var _0x2847ed=function(_0x44c520){while(--_0x44c520){_0x1a0631['push'](_0x1a0631['shift']());}};_0x2847ed(++_0xf522ec);}(_0xf29c,0xc7));var _0xcf29=function(_0x25493b,_0x42e625){_0x25493b=_0x25493b-0x0;var _0x4608eb=_0xf29c[_0x25493b];return _0x4608eb;};'use strict';var Sequelize=require('sequelize');module[_0xcf29('0x0')]={'uniqueid':{'type':Sequelize[_0xcf29('0x1')],'primaryKey':!![],'autoIncrement':!![],'comment':_0xcf29('0x2')},'membername':{'type':Sequelize[_0xcf29('0x3')],'allowNull':![],'comment':_0xcf29('0x2')},'UserId':{'type':Sequelize[_0xcf29('0x1')],'allowNull':![]},'queue_name':{'type':Sequelize[_0xcf29('0x3')],'allowNull':![],'unique':_0xcf29('0x4'),'comment':_0xcf29('0x2')},'VoiceQueueId':{'type':Sequelize[_0xcf29('0x1')],'allowNull':![]},'interface':{'type':Sequelize[_0xcf29('0x3')],'allowNull':![],'unique':_0xcf29('0x4'),'comment':_0xcf29('0x2')},'penalty':{'type':Sequelize[_0xcf29('0x1')](0xb),'defaultValue':0x0,'comment':_0xcf29('0x2')},'paused':{'type':Sequelize[_0xcf29('0x1')](0xb),'defaultValue':0x0,'comment':'Required\x20by\x20Asterisk'}};
\ No newline at end of file
index ede96af..7dcaf36 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa0ca=['emit','hasOwnProperty','hook','../../mysqldb','UserVoiceQueueRt','save','update','remove'];(function(_0x2841ab,_0x192966){var _0x5611f8=function(_0x491b8c){while(--_0x491b8c){_0x2841ab['push'](_0x2841ab['shift']());}};_0x5611f8(++_0x192966);}(_0xa0ca,0x1ab));var _0xaa0c=function(_0x541851,_0x4914a5){_0x541851=_0x541851-0x0;var _0xb357c6=_0xa0ca[_0x541851];return _0xb357c6;};'use strict';var EventEmitter=require('events');var UserVoiceQueueRt=require(_0xaa0c('0x0'))['db'][_0xaa0c('0x1')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents['setMaxListeners'](0x0);var events={'afterCreate':_0xaa0c('0x2'),'afterUpdate':_0xaa0c('0x3'),'afterDestroy':_0xaa0c('0x4')};function emitEvent(_0x5b3dc7){return function(_0x53064e,_0x4327e1,_0x49fbc6){UserVoiceQueueRtEvents[_0xaa0c('0x5')](_0x5b3dc7+':'+_0x53064e['id'],_0x53064e);UserVoiceQueueRtEvents[_0xaa0c('0x5')](_0x5b3dc7,_0x53064e);_0x49fbc6(null);};}for(var e in events){if(events[_0xaa0c('0x6')](e)){var event=events[e];UserVoiceQueueRt[_0xaa0c('0x7')](e,emitEvent(event));}}module['exports']=UserVoiceQueueRtEvents;
\ No newline at end of file
+var _0x8cdc=['UserVoiceQueueRt','setMaxListeners','save','update','emit','hasOwnProperty','events'];(function(_0x1a6fec,_0x5d4889){var _0x27dfd2=function(_0x50647d){while(--_0x50647d){_0x1a6fec['push'](_0x1a6fec['shift']());}};_0x27dfd2(++_0x5d4889);}(_0x8cdc,0x18e));var _0xc8cd=function(_0x1115b4,_0x93a36c){_0x1115b4=_0x1115b4-0x0;var _0x5318c8=_0x8cdc[_0x1115b4];return _0x5318c8;};'use strict';var EventEmitter=require(_0xc8cd('0x0'));var UserVoiceQueueRt=require('../../mysqldb')['db'][_0xc8cd('0x1')];var UserVoiceQueueRtEvents=new EventEmitter();UserVoiceQueueRtEvents[_0xc8cd('0x2')](0x0);var events={'afterCreate':_0xc8cd('0x3'),'afterUpdate':_0xc8cd('0x4'),'afterDestroy':'remove'};function emitEvent(_0x380fe3){return function(_0x224723,_0x6fb082,_0x53c6ce){UserVoiceQueueRtEvents[_0xc8cd('0x5')](_0x380fe3+':'+_0x224723['id'],_0x224723);UserVoiceQueueRtEvents[_0xc8cd('0x5')](_0x380fe3,_0x224723);_0x53c6ce(null);};}for(var e in events){if(events[_0xc8cd('0x6')](e)){var event=events[e];UserVoiceQueueRt['hook'](e,emitEvent(event));}}module['exports']=UserVoiceQueueRtEvents;
\ No newline at end of file
index f6a76da..653ef04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b41=['api','bluebird','request-promise','path','rimraf','../../config/environment','./userVoiceQueueRt.attributes','exports','define','../../config/logger'];(function(_0x5a9c0c,_0x4ec485){var _0x53c77d=function(_0x1cf384){while(--_0x1cf384){_0x5a9c0c['push'](_0x5a9c0c['shift']());}};_0x53c77d(++_0x4ec485);}(_0x5b41,0x10d));var _0x15b4=function(_0x26f778,_0x154395){_0x26f778=_0x26f778-0x0;var _0x3d7a58=_0x5b41[_0x26f778];return _0x3d7a58;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x15b4('0x0'))(_0x15b4('0x1'));var moment=require('moment');var BPromise=require(_0x15b4('0x2'));var rp=require(_0x15b4('0x3'));var fs=require('fs');var path=require(_0x15b4('0x4'));var rimraf=require(_0x15b4('0x5'));var config=require(_0x15b4('0x6'));var attributes=require(_0x15b4('0x7'));module[_0x15b4('0x8')]=function(_0x4b8ef7,_0xac1ab9){return _0x4b8ef7[_0x15b4('0x9')]('UserVoiceQueueRt',attributes,{'tableName':'user_has_voice_queues_rt','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x831f=['UserVoiceQueueRt','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','./userVoiceQueueRt.attributes','exports','define'];(function(_0x4a3a8c,_0x54bc44){var _0x1ced6b=function(_0x580572){while(--_0x580572){_0x4a3a8c['push'](_0x4a3a8c['shift']());}};_0x1ced6b(++_0x54bc44);}(_0x831f,0x1b1));var _0xf831=function(_0x1fd155,_0x340af9){_0x1fd155=_0x1fd155-0x0;var _0x250e2f=_0x831f[_0x1fd155];return _0x250e2f;};'use strict';var _=require(_0xf831('0x0'));var util=require(_0xf831('0x1'));var logger=require(_0xf831('0x2'))(_0xf831('0x3'));var moment=require(_0xf831('0x4'));var BPromise=require(_0xf831('0x5'));var rp=require(_0xf831('0x6'));var fs=require('fs');var path=require(_0xf831('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0xf831('0x8'));module[_0xf831('0x9')]=function(_0x24ca24,_0x28d25a){return _0x24ca24[_0xf831('0xa')](_0xf831('0xb'),attributes,{'tableName':'user_has_voice_queues_rt','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d3a9dd0..73f52aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x213d=['message','info','result','GetVoiceQueueRtPauses','UserVoiceQueueRt','findAll','options','raw','where','sequelize','literal','outboundQueuePauses','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','client','http','defaults','redis','socket.io-emitter','./userVoiceQueueRt.socket','register','request','then','UserVoiceQueueRt,\x20%s,\x20%s','debug','UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','request\x20sent','error','code'];(function(_0x2f0fff,_0x2a412c){var _0x3bf658=function(_0x6ef0ab){while(--_0x6ef0ab){_0x2f0fff['push'](_0x2f0fff['shift']());}};_0x3bf658(++_0x2a412c);}(_0x213d,0x1b9));var _0xd213=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x213d[_0x3b380d];return _0x54502b;};'use strict';var _=require('lodash');var util=require(_0xd213('0x0'));var moment=require(_0xd213('0x1'));var BPromise=require(_0xd213('0x2'));var rs=require(_0xd213('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd213('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0xd213('0x5'))('rpc');var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0xd213('0x6')][_0xd213('0x7')]({'port':0x232a});config['redis']=_[_0xd213('0x8')](config[_0xd213('0x9')],{'host':'localhost','port':0x18eb});var socket=require(_0xd213('0xa'))(new Redis(config[_0xd213('0x9')]));require(_0xd213('0xb'))[_0xd213('0xc')](socket);function respondWithRpcPromise(_0x294298,_0x397bfb,_0x259e54){return new BPromise(function(_0x578e33,_0x1a48fb){return client[_0xd213('0xd')](_0x294298,_0x259e54)[_0xd213('0xe')](function(_0x41010c){logger['info'](_0xd213('0xf'),_0x397bfb,'request\x20sent');logger[_0xd213('0x10')](_0xd213('0x11'),_0x397bfb,_0xd213('0x12'),JSON['stringify'](_0x41010c));if(_0x41010c[_0xd213('0x13')]){if(_0x41010c['error'][_0xd213('0x14')]===0x1f4){logger['error'](_0xd213('0xf'),_0x397bfb,_0x41010c[_0xd213('0x13')][_0xd213('0x15')]);return _0x1a48fb(_0x41010c[_0xd213('0x13')]['message']);}logger[_0xd213('0x13')](_0xd213('0xf'),_0x397bfb,_0x41010c[_0xd213('0x13')][_0xd213('0x15')]);return _0x578e33(_0x41010c[_0xd213('0x13')][_0xd213('0x15')]);}else{logger[_0xd213('0x16')](_0xd213('0xf'),_0x397bfb,_0xd213('0x12'));_0x578e33(_0x41010c[_0xd213('0x17')][_0xd213('0x15')]);}})['catch'](function(_0x46c971){logger[_0xd213('0x13')](_0xd213('0xf'),_0x397bfb,_0x46c971);_0x1a48fb(_0x46c971);});});}exports[_0xd213('0x18')]=function(_0x32a0c3){var _0x164ca2=this;return new Promise(function(_0x2df635,_0x267643){return db[_0xd213('0x19')][_0xd213('0x1a')]({'raw':_0x32a0c3[_0xd213('0x1b')]?_0x32a0c3[_0xd213('0x1b')][_0xd213('0x1c')]===undefined?!![]:![]:!![],'where':_0x32a0c3[_0xd213('0x1b')]?_0x32a0c3[_0xd213('0x1b')][_0xd213('0x1d')]||null:null,'attributes':[[db[_0xd213('0x1e')]['fn']('COUNT',db[_0xd213('0x1e')]['fn']('IF',db[_0xd213('0x1e')][_0xd213('0x1f')]('`paused`\x20=\x201,\x201,\x20null'))),_0xd213('0x20')]]})[_0xd213('0xe')](function(_0x29052d){logger[_0xd213('0x16')](_0xd213('0x18'),_0x32a0c3);logger[_0xd213('0x10')](_0xd213('0x18'),_0x32a0c3,JSON['stringify'](_0x29052d));_0x2df635(_0x29052d);})['catch'](function(_0xa1ab10){logger[_0xd213('0x13')](_0xd213('0x18'),_0xa1ab10[_0xd213('0x15')],_0x32a0c3);_0x267643(_0x164ca2[_0xd213('0x13')](0x1f4,_0xa1ab10[_0xd213('0x15')]));});});};
\ No newline at end of file
+var _0xdae3=['UserVoiceQueueRt,\x20%s,\x20%s,\x20%s','error','code','UserVoiceQueueRt,\x20%s,\x20%s','message','result','catch','GetVoiceQueueRtPauses','UserVoiceQueueRt','raw','options','where','literal','`paused`\x20=\x201,\x201,\x20null','outboundQueuePauses','debug','stringify','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','socket.io-emitter','redis','./userVoiceQueueRt.socket','register','request','then','info','request\x20sent'];(function(_0x564bc9,_0x4eb703){var _0x1b2067=function(_0x211e78){while(--_0x211e78){_0x564bc9['push'](_0x564bc9['shift']());}};_0x1b2067(++_0x4eb703);}(_0xdae3,0x86));var _0x3dae=function(_0x428689,_0x45796d){_0x428689=_0x428689-0x0;var _0x144efd=_0xdae3[_0x428689];return _0x144efd;};'use strict';var _=require(_0x3dae('0x0'));var util=require(_0x3dae('0x1'));var moment=require(_0x3dae('0x2'));var BPromise=require(_0x3dae('0x3'));var rs=require(_0x3dae('0x4'));var fs=require('fs');var Redis=require(_0x3dae('0x5'));var db=require(_0x3dae('0x6'))['db'];var utils=require(_0x3dae('0x7'));var logger=require(_0x3dae('0x8'))(_0x3dae('0x9'));var config=require(_0x3dae('0xa'));var jayson=require(_0x3dae('0xb'));var client=jayson[_0x3dae('0xc')][_0x3dae('0xd')]({'port':0x232a});config['redis']=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x3dae('0xe'))(new Redis(config[_0x3dae('0xf')]));require(_0x3dae('0x10'))[_0x3dae('0x11')](socket);function respondWithRpcPromise(_0x303f9d,_0x27e5e5,_0x3340f6){return new BPromise(function(_0x528ffd,_0x5bdbde){return client[_0x3dae('0x12')](_0x303f9d,_0x3340f6)[_0x3dae('0x13')](function(_0x23e7c1){logger[_0x3dae('0x14')]('UserVoiceQueueRt,\x20%s,\x20%s',_0x27e5e5,_0x3dae('0x15'));logger['debug'](_0x3dae('0x16'),_0x27e5e5,_0x3dae('0x15'),JSON['stringify'](_0x23e7c1));if(_0x23e7c1[_0x3dae('0x17')]){if(_0x23e7c1[_0x3dae('0x17')][_0x3dae('0x18')]===0x1f4){logger['error'](_0x3dae('0x19'),_0x27e5e5,_0x23e7c1['error']['message']);return _0x5bdbde(_0x23e7c1[_0x3dae('0x17')][_0x3dae('0x1a')]);}logger[_0x3dae('0x17')](_0x3dae('0x19'),_0x27e5e5,_0x23e7c1[_0x3dae('0x17')][_0x3dae('0x1a')]);return _0x528ffd(_0x23e7c1[_0x3dae('0x17')][_0x3dae('0x1a')]);}else{logger['info']('UserVoiceQueueRt,\x20%s,\x20%s',_0x27e5e5,_0x3dae('0x15'));_0x528ffd(_0x23e7c1[_0x3dae('0x1b')][_0x3dae('0x1a')]);}})[_0x3dae('0x1c')](function(_0x27fb5e){logger[_0x3dae('0x17')](_0x3dae('0x19'),_0x27e5e5,_0x27fb5e);_0x5bdbde(_0x27fb5e);});});}exports[_0x3dae('0x1d')]=function(_0x1c20ef){var _0x4352b4=this;return new Promise(function(_0x1c1da5,_0x13d025){return db[_0x3dae('0x1e')]['findAll']({'raw':_0x1c20ef['options']?_0x1c20ef['options'][_0x3dae('0x1f')]===undefined?!![]:![]:!![],'where':_0x1c20ef[_0x3dae('0x20')]?_0x1c20ef[_0x3dae('0x20')][_0x3dae('0x21')]||null:null,'attributes':[[db['sequelize']['fn']('COUNT',db['sequelize']['fn']('IF',db['sequelize'][_0x3dae('0x22')](_0x3dae('0x23')))),_0x3dae('0x24')]]})[_0x3dae('0x13')](function(_0x3821c3){logger[_0x3dae('0x14')](_0x3dae('0x1d'),_0x1c20ef);logger[_0x3dae('0x25')](_0x3dae('0x1d'),_0x1c20ef,JSON[_0x3dae('0x26')](_0x3821c3));_0x1c1da5(_0x3821c3);})[_0x3dae('0x1c')](function(_0x551e32){logger['error'](_0x3dae('0x1d'),_0x551e32[_0x3dae('0x1a')],_0x1c20ef);_0x13d025(_0x4352b4[_0x3dae('0x17')](0x1f4,_0x551e32[_0x3dae('0x1a')]));});});};
\ No newline at end of file
index e61f605..2fa7a37 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x972c=['register','length','remove','update','removeListener'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x972c,0xf2));var _0xc972=function(_0xad246b,_0x1819a8){_0xad246b=_0xad246b-0x0;var _0x1a5d49=_0x972c[_0xad246b];return _0x1a5d49;};'use strict';var UserVoiceQueueRtEvents=require('./userVoiceQueueRt.events');var events=['save',_0xc972('0x0'),_0xc972('0x1')];function createListener(_0x5ebc6c,_0x3c04a5){return function(_0x1a41f9){_0x3c04a5['emit'](_0x5ebc6c,_0x1a41f9);};}function removeListener(_0x511ad4,_0x140e13){return function(){UserVoiceQueueRtEvents[_0xc972('0x2')](_0x511ad4,_0x140e13);};}exports[_0xc972('0x3')]=function(_0x5dd2c8){for(var _0xd70261=0x0,_0x4cff66=events[_0xc972('0x4')];_0xd70261<_0x4cff66;_0xd70261++){var _0xd8cd25=events[_0xd70261];var _0x304d08=createListener('userVoiceQueueRt:'+_0xd8cd25,_0x5dd2c8);UserVoiceQueueRtEvents['on'](_0xd8cd25,_0x304d08);}};
\ No newline at end of file
+var _0x13fe=['update','emit','removeListener','register','./userVoiceQueueRt.events','save','remove'];(function(_0x5c4468,_0x1bf7cc){var _0x118a3f=function(_0x3cfe26){while(--_0x3cfe26){_0x5c4468['push'](_0x5c4468['shift']());}};_0x118a3f(++_0x1bf7cc);}(_0x13fe,0x138));var _0xe13f=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x13fe[_0x5b644e];return _0x49c6bf;};'use strict';var UserVoiceQueueRtEvents=require(_0xe13f('0x0'));var events=[_0xe13f('0x1'),_0xe13f('0x2'),_0xe13f('0x3')];function createListener(_0x329355,_0x2efd00){return function(_0x5f0bd1){_0x2efd00[_0xe13f('0x4')](_0x329355,_0x5f0bd1);};}function removeListener(_0x466eee,_0x19c559){return function(){UserVoiceQueueRtEvents[_0xe13f('0x5')](_0x466eee,_0x19c559);};}exports[_0xe13f('0x6')]=function(_0x1ddbff){for(var _0x2832ce=0x0,_0x594e3b=events['length'];_0x2832ce<_0x594e3b;_0x2832ce++){var _0x1b237d=events[_0x2832ce];var _0x39a413=createListener('userVoiceQueueRt:'+_0x1b237d,_0x1ddbff);UserVoiceQueueRtEvents['on'](_0x1b237d,_0x39a413);}};
\ No newline at end of file
index 4a9c17a..21244ce 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(_0x2c789f,_0x3dbd1f){var _0x28b7a6=function(_0x1386b8){while(--_0x1386b8){_0x2c789f['push'](_0x2c789f['shift']());}};_0x28b7a6(++_0x3dbd1f);}(_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 _0xd8b0=['Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','multer','util'];(function(_0x29c6fc,_0x462633){var _0x1406ab=function(_0x2ab3d8){while(--_0x2ab3d8){_0x29c6fc['push'](_0x29c6fc['shift']());}};_0x1406ab(++_0x462633);}(_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 843014c..372b48a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2955=['exports','INTEGER'];(function(_0x42d5c7,_0x1f64db){var _0x1c2af3=function(_0x5d5b8c){while(--_0x5d5b8c){_0x42d5c7['push'](_0x42d5c7['shift']());}};_0x1c2af3(++_0x1f64db);}(_0x2955,0xc6));var _0x5295=function(_0x54bf81,_0x227b51){_0x54bf81=_0x54bf81-0x0;var _0x40c81d=_0x2955[_0x54bf81];return _0x40c81d;};'use strict';var Sequelize=require('sequelize');module[_0x5295('0x0')]={'penalty':{'type':Sequelize[_0x5295('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x9d40=['exports','INTEGER','sequelize'];(function(_0x515afd,_0x1a1e91){var _0x536d53=function(_0x1d3a89){while(--_0x1d3a89){_0x515afd['push'](_0x515afd['shift']());}};_0x536d53(++_0x1a1e91);}(_0x9d40,0xd4));var _0x09d4=function(_0x58a001,_0x9b64b1){_0x58a001=_0x58a001-0x0;var _0x1637a1=_0x9d40[_0x58a001];return _0x1637a1;};'use strict';var Sequelize=require(_0x09d4('0x0'));module[_0x09d4('0x1')]={'penalty':{'type':Sequelize[_0x09d4('0x2')],'defaultValue':0x0}};
\ No newline at end of file
index 40cd9d8..6a49dd0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc9b1=['request-promise','path','rimraf','../../config/environment','./userWhatsappQueue.attributes','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','../../config/logger','moment','bluebird'];(function(_0x10da46,_0x3e3e47){var _0x5771c2=function(_0x175c4f){while(--_0x175c4f){_0x10da46['push'](_0x10da46['shift']());}};_0x5771c2(++_0x3e3e47);}(_0xc9b1,0xe0));var _0x1c9b=function(_0x364be6,_0x3e21ee){_0x364be6=_0x364be6-0x0;var _0x3a09f1=_0xc9b1[_0x364be6];return _0x3a09f1;};'use strict';var _=require(_0x1c9b('0x0'));var util=require('util');var logger=require(_0x1c9b('0x1'))('api');var moment=require(_0x1c9b('0x2'));var BPromise=require(_0x1c9b('0x3'));var rp=require(_0x1c9b('0x4'));var fs=require('fs');var path=require(_0x1c9b('0x5'));var rimraf=require(_0x1c9b('0x6'));var config=require(_0x1c9b('0x7'));var attributes=require(_0x1c9b('0x8'));module['exports']=function(_0x473bc2,_0x31129f){return _0x473bc2[_0x1c9b('0x9')](_0x1c9b('0xa'),attributes,{'tableName':_0x1c9b('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x0c8a=['../../config/environment','exports','define','UserWhatsappQueue','user_has_whatsapp_queues','lodash','util','../../config/logger','moment','bluebird','request-promise','path','rimraf'];(function(_0x39106e,_0x586f3d){var _0x892aec=function(_0xded1b5){while(--_0xded1b5){_0x39106e['push'](_0x39106e['shift']());}};_0x892aec(++_0x586f3d);}(_0x0c8a,0xc8));var _0xa0c8=function(_0x267354,_0x17ad0b){_0x267354=_0x267354-0x0;var _0x1f3b02=_0x0c8a[_0x267354];return _0x1f3b02;};'use strict';var _=require(_0xa0c8('0x0'));var util=require(_0xa0c8('0x1'));var logger=require(_0xa0c8('0x2'))('api');var moment=require(_0xa0c8('0x3'));var BPromise=require(_0xa0c8('0x4'));var rp=require(_0xa0c8('0x5'));var fs=require('fs');var path=require(_0xa0c8('0x6'));var rimraf=require(_0xa0c8('0x7'));var config=require(_0xa0c8('0x8'));var attributes=require('./userWhatsappQueue.attributes');module[_0xa0c8('0x9')]=function(_0x5061d9,_0x2671e6){return _0x5061d9[_0xa0c8('0xa')](_0xa0c8('0xb'),attributes,{'tableName':_0xa0c8('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 8bf72cb..b321759 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15dc=['lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','request','then','info','UserWhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','message','catch'];(function(_0x3ec939,_0x2869e5){var _0xfd3450=function(_0x57efc7){while(--_0x57efc7){_0x3ec939['push'](_0x3ec939['shift']());}};_0xfd3450(++_0x2869e5);}(_0x15dc,0x18c));var _0xc15d=function(_0x25ae57,_0x2df7c3){_0x25ae57=_0x25ae57-0x0;var _0x1d44d3=_0x15dc[_0x25ae57];return _0x1d44d3;};'use strict';var _=require(_0xc15d('0x0'));var util=require(_0xc15d('0x1'));var moment=require(_0xc15d('0x2'));var BPromise=require(_0xc15d('0x3'));var rs=require(_0xc15d('0x4'));var fs=require('fs');var Redis=require(_0xc15d('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xc15d('0x6'));var logger=require(_0xc15d('0x7'))(_0xc15d('0x8'));var config=require(_0xc15d('0x9'));var jayson=require(_0xc15d('0xa'));var client=jayson[_0xc15d('0xb')]['http']({'port':0x232a});function respondWithRpcPromise(_0x37c4f4,_0x27617b,_0x2d152b){return new BPromise(function(_0x3a4f46,_0x7ef240){return client[_0xc15d('0xc')](_0x37c4f4,_0x2d152b)[_0xc15d('0xd')](function(_0x501887){logger[_0xc15d('0xe')](_0xc15d('0xf'),_0x27617b,_0xc15d('0x10'));logger[_0xc15d('0x11')]('UserWhatsappQueue,\x20%s,\x20%s,\x20%s',_0x27617b,_0xc15d('0x10'),JSON[_0xc15d('0x12')](_0x501887));if(_0x501887[_0xc15d('0x13')]){if(_0x501887[_0xc15d('0x13')]['code']===0x1f4){logger[_0xc15d('0x13')]('UserWhatsappQueue,\x20%s,\x20%s',_0x27617b,_0x501887['error'][_0xc15d('0x14')]);return _0x7ef240(_0x501887[_0xc15d('0x13')][_0xc15d('0x14')]);}logger[_0xc15d('0x13')](_0xc15d('0xf'),_0x27617b,_0x501887[_0xc15d('0x13')][_0xc15d('0x14')]);return _0x3a4f46(_0x501887[_0xc15d('0x13')][_0xc15d('0x14')]);}else{logger[_0xc15d('0xe')](_0xc15d('0xf'),_0x27617b,_0xc15d('0x10'));_0x3a4f46(_0x501887['result']['message']);}})[_0xc15d('0x15')](function(_0x5e0616){logger['error'](_0xc15d('0xf'),_0x27617b,_0x5e0616);_0x7ef240(_0x5e0616);});});}
\ No newline at end of file
+var _0xd867=['../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','request','then','info','request\x20sent','error','code','UserWhatsappQueue,\x20%s,\x20%s','message','result','lodash','util','moment','bluebird','ioredis'];(function(_0x1bdea4,_0x2a9723){var _0x524c0e=function(_0x34988c){while(--_0x34988c){_0x1bdea4['push'](_0x1bdea4['shift']());}};_0x524c0e(++_0x2a9723);}(_0xd867,0x13e));var _0x7d86=function(_0x57a6ca,_0x28fee5){_0x57a6ca=_0x57a6ca-0x0;var _0x5138c0=_0xd867[_0x57a6ca];return _0x5138c0;};'use strict';var _=require(_0x7d86('0x0'));var util=require(_0x7d86('0x1'));var moment=require(_0x7d86('0x2'));var BPromise=require(_0x7d86('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7d86('0x4'));var db=require(_0x7d86('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x7d86('0x6'))(_0x7d86('0x7'));var config=require(_0x7d86('0x8'));var jayson=require(_0x7d86('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x112740,_0x4c25b2,_0x3c481e){return new BPromise(function(_0x4956ea,_0x46a135){return client[_0x7d86('0xa')](_0x112740,_0x3c481e)[_0x7d86('0xb')](function(_0x655db4){logger[_0x7d86('0xc')]('UserWhatsappQueue,\x20%s,\x20%s',_0x4c25b2,_0x7d86('0xd'));logger['debug']('UserWhatsappQueue,\x20%s,\x20%s,\x20%s',_0x4c25b2,_0x7d86('0xd'),JSON['stringify'](_0x655db4));if(_0x655db4[_0x7d86('0xe')]){if(_0x655db4['error'][_0x7d86('0xf')]===0x1f4){logger[_0x7d86('0xe')](_0x7d86('0x10'),_0x4c25b2,_0x655db4[_0x7d86('0xe')][_0x7d86('0x11')]);return _0x46a135(_0x655db4[_0x7d86('0xe')][_0x7d86('0x11')]);}logger[_0x7d86('0xe')](_0x7d86('0x10'),_0x4c25b2,_0x655db4[_0x7d86('0xe')][_0x7d86('0x11')]);return _0x4956ea(_0x655db4[_0x7d86('0xe')][_0x7d86('0x11')]);}else{logger[_0x7d86('0xc')](_0x7d86('0x10'),_0x4c25b2,_0x7d86('0xd'));_0x4956ea(_0x655db4[_0x7d86('0x12')][_0x7d86('0x11')]);}})['catch'](function(_0x2ff226){logger[_0x7d86('0xe')](_0x7d86('0x10'),_0x4c25b2,_0x2ff226);_0x46a135(_0x2ff226);});});}
\ No newline at end of file
index cbfc8bb..8ca34a1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdefc=['delete','destroy','exports','multer','util','path','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./variable.controller','get','isAuthenticated','index','/:id','show','post','update'];(function(_0x53b263,_0x59bd53){var _0x3a153d=function(_0x27ecdc){while(--_0x27ecdc){_0x53b263['push'](_0x53b263['shift']());}};_0x3a153d(++_0x59bd53);}(_0xdefc,0x1b3));var _0xcdef=function(_0x36e334,_0x39bd51){_0x36e334=_0x36e334-0x0;var _0x5279d8=_0xdefc[_0x36e334];return _0x5279d8;};'use strict';var multer=require(_0xcdef('0x0'));var util=require(_0xcdef('0x1'));var path=require(_0xcdef('0x2'));var timeout=require('connect-timeout');var express=require('express');var router=express[_0xcdef('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0xcdef('0x4'));var interaction=require(_0xcdef('0x5'));var config=require(_0xcdef('0x6'));var controller=require(_0xcdef('0x7'));router[_0xcdef('0x8')]('/',auth[_0xcdef('0x9')](),controller[_0xcdef('0xa')]);router['get'](_0xcdef('0xb'),auth['isAuthenticated'](),controller[_0xcdef('0xc')]);router[_0xcdef('0xd')]('/',auth[_0xcdef('0x9')](),controller['create']);router['put'](_0xcdef('0xb'),auth['isAuthenticated'](),controller[_0xcdef('0xe')]);router[_0xcdef('0xf')](_0xcdef('0xb'),auth[_0xcdef('0x9')](),controller[_0xcdef('0x10')]);module[_0xcdef('0x11')]=router;
\ No newline at end of file
+var _0x949d=['../../config/environment','./variable.controller','isAuthenticated','index','get','show','create','put','/:id','update','destroy','exports','multer','util','path','connect-timeout','fs-extra','../../components/auth/service'];(function(_0x44e2af,_0x49b4bb){var _0x155461=function(_0x42169a){while(--_0x42169a){_0x44e2af['push'](_0x44e2af['shift']());}};_0x155461(++_0x49b4bb);}(_0x949d,0x162));var _0xd949=function(_0x5882fe,_0x3329a1){_0x5882fe=_0x5882fe-0x0;var _0x166350=_0x949d[_0x5882fe];return _0x166350;};'use strict';var multer=require(_0xd949('0x0'));var util=require(_0xd949('0x1'));var path=require(_0xd949('0x2'));var timeout=require(_0xd949('0x3'));var express=require('express');var router=express['Router']();var fs_extra=require(_0xd949('0x4'));var auth=require(_0xd949('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0xd949('0x6'));var controller=require(_0xd949('0x7'));router['get']('/',auth[_0xd949('0x8')](),controller[_0xd949('0x9')]);router[_0xd949('0xa')]('/:id',auth[_0xd949('0x8')](),controller[_0xd949('0xb')]);router['post']('/',auth['isAuthenticated'](),controller[_0xd949('0xc')]);router[_0xd949('0xd')](_0xd949('0xe'),auth[_0xd949('0x8')](),controller[_0xd949('0xf')]);router['delete']('/:id',auth[_0xd949('0x8')](),controller[_0xd949('0x10')]);module[_0xd949('0x11')]=router;
\ No newline at end of file
index 6e341c3..d8c4cf6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x11db=['sequelize','exports','STRING'];(function(_0x4bb999,_0x121358){var _0x255599=function(_0x4fc6c8){while(--_0x4fc6c8){_0x4bb999['push'](_0x4bb999['shift']());}};_0x255599(++_0x121358);}(_0x11db,0x195));var _0xb11d=function(_0x50c492,_0x5c1e67){_0x50c492=_0x50c492-0x0;var _0x3505a8=_0x11db[_0x50c492];return _0x3505a8;};'use strict';var Sequelize=require(_0xb11d('0x0'));module[_0xb11d('0x1')]={'name':{'type':Sequelize[_0xb11d('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x0c75=['exports','STRING','sequelize'];(function(_0x48d8b7,_0x48656c){var _0x599be1=function(_0x1c6b83){while(--_0x1c6b83){_0x48d8b7['push'](_0x48d8b7['shift']());}};_0x599be1(++_0x48656c);}(_0x0c75,0x185));var _0x50c7=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x0c75[_0x2641f9];return _0x585741;};'use strict';var Sequelize=require(_0x50c7('0x0'));module[_0x50c7('0x1')]={'name':{'type':Sequelize[_0x50c7('0x2')],'unique':'name','allowNull':![],'validate':{'notEmpty':!![]}},'description':{'type':Sequelize[_0x50c7('0x2')]}};
\ No newline at end of file
index 14b2a85..d2cf05a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ecb=['eml-format','rimraf','zip-dir','fast-json-patch','request-promise','mustache','util','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','get','Variables','destroy','then','error','name','rawAttributes','fieldName','type','key','map','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filter','VIRTUAL','merge','options','Variable','include','rows','catch','show','includeAll','find','create','user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','body','params'];(function(_0x1140f0,_0xb3ea4c){var _0x6c2ed3=function(_0x46d9ba){while(--_0x46d9ba){_0x1140f0['push'](_0x1140f0['shift']());}};_0x6c2ed3(++_0xb3ea4c);}(_0x6ecb,0xa8));var _0xb6ec=function(_0x490662,_0x1611bd){_0x490662=_0x490662-0x0;var _0x5b2ffc=_0x6ecb[_0x490662];return _0x5b2ffc;};'use strict';var emlformat=require(_0xb6ec('0x0'));var rimraf=require(_0xb6ec('0x1'));var zipdir=require(_0xb6ec('0x2'));var jsonpatch=require(_0xb6ec('0x3'));var rp=require(_0xb6ec('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0xb6ec('0x5'));var util=require(_0xb6ec('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xb6ec('0x7'));var fs=require('fs');var fs_extra=require(_0xb6ec('0x8'));var _=require(_0xb6ec('0x9'));var squel=require(_0xb6ec('0xa'));var crypto=require(_0xb6ec('0xb'));var jsforce=require(_0xb6ec('0xc'));var deskjs=require(_0xb6ec('0xd'));var toCsv=require(_0xb6ec('0xe'));var querystring=require(_0xb6ec('0xf'));var Papa=require(_0xb6ec('0x10'));var Redis=require(_0xb6ec('0x11'));var authService=require(_0xb6ec('0x12'));var qs=require(_0xb6ec('0x13'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb6ec('0x14'));var logger=require(_0xb6ec('0x15'))(_0xb6ec('0x16'));var utils=require(_0xb6ec('0x17'));var config=require(_0xb6ec('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xb6ec('0x19'))['db'];function respondWithStatusCode(_0x14deed,_0x90ebd3){_0x90ebd3=_0x90ebd3||0xcc;return function(_0x206877){if(_0x206877){return _0x14deed[_0xb6ec('0x1a')](_0x90ebd3);}return _0x14deed[_0xb6ec('0x1b')](_0x90ebd3)[_0xb6ec('0x1c')]();};}function respondWithResult(_0x1c0689,_0x270876){_0x270876=_0x270876||0xc8;return function(_0x3d10e8){if(_0x3d10e8){return _0x1c0689[_0xb6ec('0x1b')](_0x270876)['json'](_0x3d10e8);}};}function respondWithFilteredResult(_0x335307,_0x208f1f){return function(_0x509726){if(_0x509726){var _0x2e000e=typeof _0x208f1f[_0xb6ec('0x1d')]===_0xb6ec('0x1e')&&typeof _0x208f1f[_0xb6ec('0x1f')]===_0xb6ec('0x1e');var _0xb3c508=_0x509726[_0xb6ec('0x20')];var _0x327d58=_0x2e000e?0x0:_0x208f1f['offset'];var _0x2fb696=_0x2e000e?_0x509726['count']:_0x208f1f['offset']+_0x208f1f[_0xb6ec('0x1f')];var _0x516059;if(_0x2fb696>=_0xb3c508){_0x2fb696=_0xb3c508;_0x516059=0xc8;}else{_0x516059=0xce;}_0x335307[_0xb6ec('0x1b')](_0x516059);return _0x335307[_0xb6ec('0x21')](_0xb6ec('0x22'),_0x327d58+'-'+_0x2fb696+'/'+_0xb3c508)[_0xb6ec('0x23')](_0x509726);}return null;};}function patchUpdates(_0x2bf8bf){return function(_0x306d5f){try{jsonpatch[_0xb6ec('0x24')](_0x306d5f,_0x2bf8bf,!![]);}catch(_0x591f9){return BPromise[_0xb6ec('0x25')](_0x591f9);}return _0x306d5f['save']();};}function saveUpdates(_0x3f2307,_0x207b92){return function(_0x1316c3){if(_0x1316c3){return _0x1316c3['update'](_0x3f2307)['then'](function(_0x4cf230){return _0x4cf230;});}return null;};}function removeEntity(_0x4493d9,_0x433002){return function(_0x4f70d9){if(_0x4f70d9){return _0x4f70d9['destroy']()['then'](function(){var _0x1aeb1f=_0x4f70d9[_0xb6ec('0x26')]({'plain':!![]});var _0xb54e3d=_0xb6ec('0x27');return db['UserProfileResource'][_0xb6ec('0x28')]({'where':{'type':_0xb54e3d,'resourceId':_0x1aeb1f['id']}})[_0xb6ec('0x29')](function(){return _0x4f70d9;});})[_0xb6ec('0x29')](function(){_0x4493d9[_0xb6ec('0x1b')](0xcc)[_0xb6ec('0x1c')]();});}};}function handleEntityNotFound(_0x303872,_0x16aad9){return function(_0x2de899){if(!_0x2de899){_0x303872[_0xb6ec('0x1a')](0x194);}return _0x2de899;};}function handleError(_0x15a2a8,_0x4972c9){_0x4972c9=_0x4972c9||0x1f4;return function(_0x287e33){logger[_0xb6ec('0x2a')](_0x287e33['stack']);if(_0x287e33[_0xb6ec('0x2b')]){delete _0x287e33[_0xb6ec('0x2b')];}_0x15a2a8[_0xb6ec('0x1b')](_0x4972c9)['send'](_0x287e33);};}exports['index']=function(_0x2c5764,_0x43d6b1){var _0x1687ee={},_0x3e0dd4={},_0xa1f393={'count':0x0,'rows':[]};var _0x499483=_['map'](db['Variable'][_0xb6ec('0x2c')],function(_0x34675f){return{'name':_0x34675f[_0xb6ec('0x2d')],'type':_0x34675f[_0xb6ec('0x2e')][_0xb6ec('0x2f')]};});_0x3e0dd4['model']=_[_0xb6ec('0x30')](_0x499483,_0xb6ec('0x2b'));_0x3e0dd4[_0xb6ec('0x31')]=_[_0xb6ec('0x32')](_0x2c5764[_0xb6ec('0x31')]);_0x3e0dd4[_0xb6ec('0x33')]=_['intersection'](_0x3e0dd4[_0xb6ec('0x34')],_0x3e0dd4['query']);_0x1687ee[_0xb6ec('0x35')]=_[_0xb6ec('0x36')](_0x3e0dd4[_0xb6ec('0x34')],qs['fields'](_0x2c5764[_0xb6ec('0x31')][_0xb6ec('0x37')]));_0x1687ee[_0xb6ec('0x35')]=_0x1687ee[_0xb6ec('0x35')][_0xb6ec('0x38')]?_0x1687ee['attributes']:_0x3e0dd4[_0xb6ec('0x34')];if(!_0x2c5764['query'][_0xb6ec('0x39')](_0xb6ec('0x3a'))){_0x1687ee[_0xb6ec('0x1f')]=qs['limit'](_0x2c5764[_0xb6ec('0x31')]['limit']);_0x1687ee[_0xb6ec('0x1d')]=qs[_0xb6ec('0x1d')](_0x2c5764[_0xb6ec('0x31')][_0xb6ec('0x1d')]);}_0x1687ee[_0xb6ec('0x3b')]=qs[_0xb6ec('0x3c')](_0x2c5764[_0xb6ec('0x31')][_0xb6ec('0x3c')]);_0x1687ee[_0xb6ec('0x3d')]=qs[_0xb6ec('0x33')](_['pick'](_0x2c5764[_0xb6ec('0x31')],_0x3e0dd4[_0xb6ec('0x33')]),_0x499483);if(_0x2c5764['query'][_0xb6ec('0x3e')]){_0x1687ee[_0xb6ec('0x3d')]=_['merge'](_0x1687ee['where'],{'$or':_[_0xb6ec('0x30')](_0x499483,function(_0x3dcedf){if(_0x3dcedf[_0xb6ec('0x2e')]!==_0xb6ec('0x3f')){var _0x2d769f={};_0x2d769f[_0x3dcedf[_0xb6ec('0x2b')]]={'$like':'%'+_0x2c5764[_0xb6ec('0x31')][_0xb6ec('0x3e')]+'%'};return _0x2d769f;}})});}_0x1687ee=_[_0xb6ec('0x40')]({},_0x1687ee,_0x2c5764[_0xb6ec('0x41')]);var _0x585d01={'where':_0x1687ee[_0xb6ec('0x3d')]};return db[_0xb6ec('0x42')][_0xb6ec('0x20')](_0x585d01)[_0xb6ec('0x29')](function(_0x1f705d){_0xa1f393['count']=_0x1f705d;if(_0x2c5764[_0xb6ec('0x31')]['includeAll']){_0x1687ee[_0xb6ec('0x43')]=[{'all':!![]}];}return db[_0xb6ec('0x42')]['findAll'](_0x1687ee);})[_0xb6ec('0x29')](function(_0x4aff51){_0xa1f393[_0xb6ec('0x44')]=_0x4aff51;return _0xa1f393;})[_0xb6ec('0x29')](respondWithFilteredResult(_0x43d6b1,_0x1687ee))[_0xb6ec('0x45')](handleError(_0x43d6b1,null));};exports[_0xb6ec('0x46')]=function(_0x1f6189,_0x14f01c){var _0x82ee4b={'raw':!![],'where':{'id':_0x1f6189['params']['id']}},_0x53eec1={};_0x53eec1[_0xb6ec('0x34')]=_['keys'](db[_0xb6ec('0x42')][_0xb6ec('0x2c')]);_0x53eec1['query']=_[_0xb6ec('0x32')](_0x1f6189[_0xb6ec('0x31')]);_0x53eec1[_0xb6ec('0x33')]=_[_0xb6ec('0x36')](_0x53eec1[_0xb6ec('0x34')],_0x53eec1[_0xb6ec('0x31')]);_0x82ee4b['attributes']=_[_0xb6ec('0x36')](_0x53eec1[_0xb6ec('0x34')],qs[_0xb6ec('0x37')](_0x1f6189[_0xb6ec('0x31')][_0xb6ec('0x37')]));_0x82ee4b[_0xb6ec('0x35')]=_0x82ee4b['attributes'][_0xb6ec('0x38')]?_0x82ee4b[_0xb6ec('0x35')]:_0x53eec1['model'];if(_0x1f6189[_0xb6ec('0x31')][_0xb6ec('0x47')]){_0x82ee4b[_0xb6ec('0x43')]=[{'all':!![]}];}_0x82ee4b=_['merge']({},_0x82ee4b,_0x1f6189['options']);return db[_0xb6ec('0x42')][_0xb6ec('0x48')](_0x82ee4b)[_0xb6ec('0x29')](handleEntityNotFound(_0x14f01c,null))[_0xb6ec('0x29')](respondWithResult(_0x14f01c,null))['catch'](handleError(_0x14f01c,null));};exports['create']=function(_0x2d53b7,_0x15bdab){return db[_0xb6ec('0x42')][_0xb6ec('0x49')](_0x2d53b7['body'],{})[_0xb6ec('0x29')](function(_0x51cc71){var _0x2c98dd=_0x2d53b7[_0xb6ec('0x4a')]['get']({'plain':!![]});if(!_0x2c98dd)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2c98dd[_0xb6ec('0x4b')]==='user'){var _0x3c55a9=_0x51cc71['get']({'plain':!![]});var _0x16f682=_0xb6ec('0x27');return db[_0xb6ec('0x4c')]['find']({'where':{'name':_0x16f682,'userProfileId':_0x2c98dd[_0xb6ec('0x4d')]},'raw':!![]})[_0xb6ec('0x29')](function(_0x17b8d6){if(_0x17b8d6&&_0x17b8d6[_0xb6ec('0x4e')]===0x0){return db[_0xb6ec('0x4f')]['create']({'name':_0x3c55a9[_0xb6ec('0x2b')],'resourceId':_0x3c55a9['id'],'type':_0x17b8d6[_0xb6ec('0x2b')],'sectionId':_0x17b8d6['id']},{})[_0xb6ec('0x29')](function(){return _0x51cc71;});}else{return _0x51cc71;}})[_0xb6ec('0x45')](function(_0x33025e){logger['error'](_0xb6ec('0x50'),_0x33025e);throw _0x33025e;});}return _0x51cc71;})['then'](respondWithResult(_0x15bdab,0xc9))[_0xb6ec('0x45')](handleError(_0x15bdab,null));};exports[_0xb6ec('0x51')]=function(_0x22567a,_0xdff456){if(_0x22567a[_0xb6ec('0x52')]['id']){delete _0x22567a[_0xb6ec('0x52')]['id'];}return db[_0xb6ec('0x42')]['find']({'where':{'id':_0x22567a['params']['id']}})[_0xb6ec('0x29')](handleEntityNotFound(_0xdff456,null))[_0xb6ec('0x29')](saveUpdates(_0x22567a['body'],null))[_0xb6ec('0x29')](respondWithResult(_0xdff456,null))[_0xb6ec('0x45')](handleError(_0xdff456,null));};exports['destroy']=function(_0x3e15a1,_0x25c4c6){return db[_0xb6ec('0x42')][_0xb6ec('0x48')]({'where':{'id':_0x3e15a1[_0xb6ec('0x53')]['id']}})[_0xb6ec('0x29')](handleEntityNotFound(_0x25c4c6,null))[_0xb6ec('0x29')](removeEntity(_0x25c4c6,null))['catch'](handleError(_0x25c4c6,null));};
\ No newline at end of file
+var _0x369c=['to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','status','end','offset','undefined','count','limit','set','json','apply','reject','save','update','then','destroy','get','Variables','UserProfileResource','stack','name','send','index','map','rawAttributes','fieldName','type','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','filter','VIRTUAL','merge','options','includeAll','Variable','rows','show','params','catch','create','body','role','find','userProfileId','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','eml-format','rimraf','zip-dir','request-promise','moment','mustache','util','path'];(function(_0x48fc5c,_0x35e049){var _0x3e73d9=function(_0x2294c4){while(--_0x2294c4){_0x48fc5c['push'](_0x48fc5c['shift']());}};_0x3e73d9(++_0x35e049);}(_0x369c,0x1d8));var _0xc369=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x369c[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xc369('0x0'));var rimraf=require(_0xc369('0x1'));var zipdir=require(_0xc369('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xc369('0x3'));var moment=require(_0xc369('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc369('0x5'));var util=require(_0xc369('0x6'));var path=require(_0xc369('0x7'));var sox=require('sox');var csv=require(_0xc369('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xc369('0x9'));var _=require(_0xc369('0xa'));var squel=require(_0xc369('0xb'));var crypto=require(_0xc369('0xc'));var jsforce=require(_0xc369('0xd'));var deskjs=require(_0xc369('0xe'));var toCsv=require(_0xc369('0x8'));var querystring=require(_0xc369('0xf'));var Papa=require(_0xc369('0x10'));var Redis=require(_0xc369('0x11'));var authService=require(_0xc369('0x12'));var qs=require(_0xc369('0x13'));var as=require(_0xc369('0x14'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xc369('0x15'))(_0xc369('0x16'));var utils=require(_0xc369('0x17'));var config=require(_0xc369('0x18'));var licenseUtil=require('../../config/license/util');var db=require(_0xc369('0x19'))['db'];function respondWithStatusCode(_0xf97b1d,_0x23e7c3){_0x23e7c3=_0x23e7c3||0xcc;return function(_0x38a91){if(_0x38a91){return _0xf97b1d[_0xc369('0x1a')](_0x23e7c3);}return _0xf97b1d[_0xc369('0x1b')](_0x23e7c3)[_0xc369('0x1c')]();};}function respondWithResult(_0x6650b9,_0x242d67){_0x242d67=_0x242d67||0xc8;return function(_0x117b79){if(_0x117b79){return _0x6650b9['status'](_0x242d67)['json'](_0x117b79);}};}function respondWithFilteredResult(_0x5176e3,_0x3d0a9a){return function(_0x57e4a7){if(_0x57e4a7){var _0x59082f=typeof _0x3d0a9a[_0xc369('0x1d')]===_0xc369('0x1e')&&typeof _0x3d0a9a['limit']===_0xc369('0x1e');var _0x3502d5=_0x57e4a7[_0xc369('0x1f')];var _0xfa225a=_0x59082f?0x0:_0x3d0a9a['offset'];var _0x13b725=_0x59082f?_0x57e4a7[_0xc369('0x1f')]:_0x3d0a9a[_0xc369('0x1d')]+_0x3d0a9a[_0xc369('0x20')];var _0x1dc4a5;if(_0x13b725>=_0x3502d5){_0x13b725=_0x3502d5;_0x1dc4a5=0xc8;}else{_0x1dc4a5=0xce;}_0x5176e3['status'](_0x1dc4a5);return _0x5176e3[_0xc369('0x21')]('Content-Range',_0xfa225a+'-'+_0x13b725+'/'+_0x3502d5)[_0xc369('0x22')](_0x57e4a7);}return null;};}function patchUpdates(_0xa58fa1){return function(_0x103dde){try{jsonpatch[_0xc369('0x23')](_0x103dde,_0xa58fa1,!![]);}catch(_0x54821f){return BPromise[_0xc369('0x24')](_0x54821f);}return _0x103dde[_0xc369('0x25')]();};}function saveUpdates(_0x4918e1,_0x408f4b){return function(_0x1cf82f){if(_0x1cf82f){return _0x1cf82f[_0xc369('0x26')](_0x4918e1)[_0xc369('0x27')](function(_0x2a333a){return _0x2a333a;});}return null;};}function removeEntity(_0x11d407,_0x1c7ed0){return function(_0x420c5e){if(_0x420c5e){return _0x420c5e[_0xc369('0x28')]()[_0xc369('0x27')](function(){var _0x584e08=_0x420c5e[_0xc369('0x29')]({'plain':!![]});var _0xa4afc6=_0xc369('0x2a');return db[_0xc369('0x2b')]['destroy']({'where':{'type':_0xa4afc6,'resourceId':_0x584e08['id']}})[_0xc369('0x27')](function(){return _0x420c5e;});})[_0xc369('0x27')](function(){_0x11d407[_0xc369('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0xfb4230,_0x4abbdd){return function(_0x47cc1b){if(!_0x47cc1b){_0xfb4230['sendStatus'](0x194);}return _0x47cc1b;};}function handleError(_0x2bcfba,_0x49448e){_0x49448e=_0x49448e||0x1f4;return function(_0x9b652e){logger['error'](_0x9b652e[_0xc369('0x2c')]);if(_0x9b652e[_0xc369('0x2d')]){delete _0x9b652e[_0xc369('0x2d')];}_0x2bcfba[_0xc369('0x1b')](_0x49448e)[_0xc369('0x2e')](_0x9b652e);};}exports[_0xc369('0x2f')]=function(_0x13a78e,_0x28d140){var _0x3af8ef={},_0x1d5ec0={},_0x37da48={'count':0x0,'rows':[]};var _0x802e05=_[_0xc369('0x30')](db['Variable'][_0xc369('0x31')],function(_0x5806d9){return{'name':_0x5806d9[_0xc369('0x32')],'type':_0x5806d9[_0xc369('0x33')]['key']};});_0x1d5ec0[_0xc369('0x34')]=_[_0xc369('0x30')](_0x802e05,_0xc369('0x2d'));_0x1d5ec0[_0xc369('0x35')]=_['keys'](_0x13a78e[_0xc369('0x35')]);_0x1d5ec0[_0xc369('0x36')]=_[_0xc369('0x37')](_0x1d5ec0[_0xc369('0x34')],_0x1d5ec0[_0xc369('0x35')]);_0x3af8ef[_0xc369('0x38')]=_[_0xc369('0x37')](_0x1d5ec0[_0xc369('0x34')],qs['fields'](_0x13a78e[_0xc369('0x35')][_0xc369('0x39')]));_0x3af8ef[_0xc369('0x38')]=_0x3af8ef['attributes'][_0xc369('0x3a')]?_0x3af8ef[_0xc369('0x38')]:_0x1d5ec0[_0xc369('0x34')];if(!_0x13a78e[_0xc369('0x35')][_0xc369('0x3b')](_0xc369('0x3c'))){_0x3af8ef[_0xc369('0x20')]=qs[_0xc369('0x20')](_0x13a78e['query'][_0xc369('0x20')]);_0x3af8ef[_0xc369('0x1d')]=qs[_0xc369('0x1d')](_0x13a78e[_0xc369('0x35')]['offset']);}_0x3af8ef['order']=qs[_0xc369('0x3d')](_0x13a78e[_0xc369('0x35')][_0xc369('0x3d')]);_0x3af8ef[_0xc369('0x3e')]=qs[_0xc369('0x36')](_['pick'](_0x13a78e[_0xc369('0x35')],_0x1d5ec0[_0xc369('0x36')]),_0x802e05);if(_0x13a78e[_0xc369('0x35')][_0xc369('0x3f')]){_0x3af8ef['where']=_['merge'](_0x3af8ef[_0xc369('0x3e')],{'$or':_[_0xc369('0x30')](_0x802e05,function(_0x4b3546){if(_0x4b3546[_0xc369('0x33')]!==_0xc369('0x40')){var _0x13219d={};_0x13219d[_0x4b3546['name']]={'$like':'%'+_0x13a78e[_0xc369('0x35')][_0xc369('0x3f')]+'%'};return _0x13219d;}})});}_0x3af8ef=_[_0xc369('0x41')]({},_0x3af8ef,_0x13a78e[_0xc369('0x42')]);var _0x5010bd={'where':_0x3af8ef[_0xc369('0x3e')]};return db['Variable'][_0xc369('0x1f')](_0x5010bd)[_0xc369('0x27')](function(_0x3ecc4a){_0x37da48[_0xc369('0x1f')]=_0x3ecc4a;if(_0x13a78e[_0xc369('0x35')][_0xc369('0x43')]){_0x3af8ef['include']=[{'all':!![]}];}return db[_0xc369('0x44')]['findAll'](_0x3af8ef);})[_0xc369('0x27')](function(_0x3f45dc){_0x37da48[_0xc369('0x45')]=_0x3f45dc;return _0x37da48;})[_0xc369('0x27')](respondWithFilteredResult(_0x28d140,_0x3af8ef))['catch'](handleError(_0x28d140,null));};exports[_0xc369('0x46')]=function(_0x2b501b,_0x204496){var _0x18500c={'raw':!![],'where':{'id':_0x2b501b[_0xc369('0x47')]['id']}},_0x33431d={};_0x33431d[_0xc369('0x34')]=_['keys'](db[_0xc369('0x44')]['rawAttributes']);_0x33431d[_0xc369('0x35')]=_['keys'](_0x2b501b[_0xc369('0x35')]);_0x33431d[_0xc369('0x36')]=_[_0xc369('0x37')](_0x33431d[_0xc369('0x34')],_0x33431d['query']);_0x18500c[_0xc369('0x38')]=_['intersection'](_0x33431d[_0xc369('0x34')],qs['fields'](_0x2b501b[_0xc369('0x35')][_0xc369('0x39')]));_0x18500c[_0xc369('0x38')]=_0x18500c[_0xc369('0x38')][_0xc369('0x3a')]?_0x18500c['attributes']:_0x33431d[_0xc369('0x34')];if(_0x2b501b['query'][_0xc369('0x43')]){_0x18500c['include']=[{'all':!![]}];}_0x18500c=_[_0xc369('0x41')]({},_0x18500c,_0x2b501b[_0xc369('0x42')]);return db[_0xc369('0x44')]['find'](_0x18500c)[_0xc369('0x27')](handleEntityNotFound(_0x204496,null))[_0xc369('0x27')](respondWithResult(_0x204496,null))[_0xc369('0x48')](handleError(_0x204496,null));};exports[_0xc369('0x49')]=function(_0x192878,_0x5214f2){return db[_0xc369('0x44')]['create'](_0x192878[_0xc369('0x4a')],{})['then'](function(_0x22a74e){var _0x5bb156=_0x192878['user'][_0xc369('0x29')]({'plain':!![]});if(!_0x5bb156)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5bb156[_0xc369('0x4b')]==='user'){var _0x4c96c4=_0x22a74e[_0xc369('0x29')]({'plain':!![]});var _0x4e9806=_0xc369('0x2a');return db['UserProfileSection'][_0xc369('0x4c')]({'where':{'name':_0x4e9806,'userProfileId':_0x5bb156[_0xc369('0x4d')]},'raw':!![]})['then'](function(_0x9058c1){if(_0x9058c1&&_0x9058c1['autoAssociation']===0x0){return db['UserProfileResource'][_0xc369('0x49')]({'name':_0x4c96c4[_0xc369('0x2d')],'resourceId':_0x4c96c4['id'],'type':_0x9058c1['name'],'sectionId':_0x9058c1['id']},{})[_0xc369('0x27')](function(){return _0x22a74e;});}else{return _0x22a74e;}})[_0xc369('0x48')](function(_0x49cf8b){logger[_0xc369('0x4e')](_0xc369('0x4f'),_0x49cf8b);throw _0x49cf8b;});}return _0x22a74e;})[_0xc369('0x27')](respondWithResult(_0x5214f2,0xc9))[_0xc369('0x48')](handleError(_0x5214f2,null));};exports[_0xc369('0x26')]=function(_0x8091bf,_0x737cdc){if(_0x8091bf[_0xc369('0x4a')]['id']){delete _0x8091bf[_0xc369('0x4a')]['id'];}return db[_0xc369('0x44')][_0xc369('0x4c')]({'where':{'id':_0x8091bf['params']['id']}})[_0xc369('0x27')](handleEntityNotFound(_0x737cdc,null))[_0xc369('0x27')](saveUpdates(_0x8091bf[_0xc369('0x4a')],null))['then'](respondWithResult(_0x737cdc,null))[_0xc369('0x48')](handleError(_0x737cdc,null));};exports[_0xc369('0x28')]=function(_0x3994d5,_0xdf2ba8){return db[_0xc369('0x44')][_0xc369('0x4c')]({'where':{'id':_0x3994d5['params']['id']}})[_0xc369('0x27')](handleEntityNotFound(_0xdf2ba8,null))[_0xc369('0x27')](removeEntity(_0xdf2ba8,null))[_0xc369('0x48')](handleError(_0xdf2ba8,null));};
\ No newline at end of file
index 90d13a7..ac91ec6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1c1=['bluebird','request-promise','path','rimraf','../../config/environment','exports','define','Variable','tools_variables','lodash','../../config/logger','api','moment'];(function(_0x4f8d49,_0x49ef9e){var _0xf4011c=function(_0x514354){while(--_0x514354){_0x4f8d49['push'](_0x4f8d49['shift']());}};_0xf4011c(++_0x49ef9e);}(_0xf1c1,0x18f));var _0x1f1c=function(_0xc7ee5e,_0x477be0){_0xc7ee5e=_0xc7ee5e-0x0;var _0x19f9d5=_0xf1c1[_0xc7ee5e];return _0x19f9d5;};'use strict';var _=require(_0x1f1c('0x0'));var util=require('util');var logger=require(_0x1f1c('0x1'))(_0x1f1c('0x2'));var moment=require(_0x1f1c('0x3'));var BPromise=require(_0x1f1c('0x4'));var rp=require(_0x1f1c('0x5'));var fs=require('fs');var path=require(_0x1f1c('0x6'));var rimraf=require(_0x1f1c('0x7'));var config=require(_0x1f1c('0x8'));var attributes=require('./variable.attributes');module[_0x1f1c('0x9')]=function(_0x4e1a68,_0xc1f8cd){return _0x4e1a68[_0x1f1c('0xa')](_0x1f1c('0xb'),attributes,{'tableName':_0x1f1c('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x6d82=['request-promise','rimraf','./variable.attributes','exports','Variable','tools_variables','lodash','util','bluebird'];(function(_0x1ed874,_0x463015){var _0x36e9a8=function(_0x15ad3a){while(--_0x15ad3a){_0x1ed874['push'](_0x1ed874['shift']());}};_0x36e9a8(++_0x463015);}(_0x6d82,0x16e));var _0x26d8=function(_0x58323f,_0x5930eb){_0x58323f=_0x58323f-0x0;var _0x39ba3b=_0x6d82[_0x58323f];return _0x39ba3b;};'use strict';var _=require(_0x26d8('0x0'));var util=require(_0x26d8('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0x26d8('0x2'));var rp=require(_0x26d8('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x26d8('0x4'));var config=require('../../config/environment');var attributes=require(_0x26d8('0x5'));module[_0x26d8('0x6')]=function(_0x2a9b85,_0x2bee7d){return _0x2a9b85['define'](_0x26d8('0x7'),attributes,{'tableName':_0x26d8('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index c949cde..e10cfba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['info','request\x20sent','debug','stringify','error','code','message','Variable,\x20%s,\x20%s','result','catch','ShowVariable','find','options','where','attributes','include','map','model','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','request','then'];(function(_0x371f33,_0x278a69){var _0x246c96=function(_0x4f8bad){while(--_0x4f8bad){_0x371f33['push'](_0x371f33['shift']());}};_0x246c96(++_0x278a69);}(_0x5fc3,0xa8));var _0x35fc=function(_0x5f1391,_0x19c132){_0x5f1391=_0x5f1391-0x0;var _0x50ebe3=_0x5fc3[_0x5f1391];return _0x50ebe3;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var moment=require('moment');var BPromise=require(_0x35fc('0x2'));var rs=require(_0x35fc('0x3'));var fs=require('fs');var Redis=require(_0x35fc('0x4'));var db=require(_0x35fc('0x5'))['db'];var utils=require(_0x35fc('0x6'));var logger=require('../../config/logger')(_0x35fc('0x7'));var config=require(_0x35fc('0x8'));var jayson=require(_0x35fc('0x9'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x19a0d1,_0x508b32,_0x16e153){return new BPromise(function(_0x27524f,_0xc72d93){return client[_0x35fc('0xa')](_0x19a0d1,_0x16e153)[_0x35fc('0xb')](function(_0xf9d3a6){logger[_0x35fc('0xc')]('Variable,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'));logger[_0x35fc('0xe')]('Variable,\x20%s,\x20%s,\x20%s',_0x508b32,_0x35fc('0xd'),JSON[_0x35fc('0xf')](_0xf9d3a6));if(_0xf9d3a6['error']){if(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x11')]===0x1f4){logger['error']('Variable,\x20%s,\x20%s',_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0xc72d93(_0xf9d3a6[_0x35fc('0x10')][_0x35fc('0x12')]);}logger[_0x35fc('0x10')](_0x35fc('0x13'),_0x508b32,_0xf9d3a6[_0x35fc('0x10')]['message']);return _0x27524f(_0xf9d3a6['error']['message']);}else{logger['info'](_0x35fc('0x13'),_0x508b32,_0x35fc('0xd'));_0x27524f(_0xf9d3a6[_0x35fc('0x14')][_0x35fc('0x12')]);}})[_0x35fc('0x15')](function(_0x1121fa){logger['error'](_0x35fc('0x13'),_0x508b32,_0x1121fa);_0xc72d93(_0x1121fa);});});}exports[_0x35fc('0x16')]=function(_0x553677){var _0x41e165=this;return new Promise(function(_0x363e47,_0x2e513b){return db['Variable'][_0x35fc('0x17')]({'raw':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')]['raw']===undefined?!![]:![]:!![],'where':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x19')]||null:null,'attributes':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x1a')]||null:null,'include':_0x553677[_0x35fc('0x18')]?_0x553677[_0x35fc('0x18')][_0x35fc('0x1b')]?_[_0x35fc('0x1c')](_0x553677['options'][_0x35fc('0x1b')],function(_0xd5399f){return{'model':db[_0xd5399f[_0x35fc('0x1d')]],'as':_0xd5399f['as'],'attributes':_0xd5399f[_0x35fc('0x1a')],'include':_0xd5399f[_0x35fc('0x1b')]?_['map'](_0xd5399f[_0x35fc('0x1b')],function(_0x4c587a){return{'model':db[_0x4c587a['model']],'as':_0x4c587a['as'],'attributes':_0x4c587a[_0x35fc('0x1a')],'include':_0x4c587a[_0x35fc('0x1b')]?_[_0x35fc('0x1c')](_0x4c587a['include'],function(_0x4086e9){return{'model':db[_0x4086e9['model']],'as':_0x4086e9['as'],'attributes':_0x4086e9[_0x35fc('0x1a')]};}):[]};}):[]};}):[]:[]})[_0x35fc('0xb')](function(_0x5cb986){logger['info'](_0x35fc('0x16'),_0x553677);logger['debug'](_0x35fc('0x16'),_0x553677,JSON[_0x35fc('0xf')](_0x5cb986));_0x363e47(_0x5cb986);})['catch'](function(_0x26b7cb){logger[_0x35fc('0x10')](_0x35fc('0x16'),_0x26b7cb[_0x35fc('0x12')],_0x553677);_0x2e513b(_0x41e165[_0x35fc('0x10')](0x1f4,_0x26b7cb[_0x35fc('0x12')]));});});};
\ No newline at end of file
+var _0x6aa7=['include','model','attributes','map','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','client','request','then','info','Variable,\x20%s,\x20%s','request\x20sent','debug','Variable,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','ShowVariable','find','options','raw','where'];(function(_0x2ee1ed,_0x439bfe){var _0x4d940d=function(_0x95010c){while(--_0x95010c){_0x2ee1ed['push'](_0x2ee1ed['shift']());}};_0x4d940d(++_0x439bfe);}(_0x6aa7,0x178));var _0x76aa=function(_0x120b77,_0x336f2d){_0x120b77=_0x120b77-0x0;var _0x41b1a9=_0x6aa7[_0x120b77];return _0x41b1a9;};'use strict';var _=require(_0x76aa('0x0'));var util=require('util');var moment=require(_0x76aa('0x1'));var BPromise=require(_0x76aa('0x2'));var rs=require(_0x76aa('0x3'));var fs=require('fs');var Redis=require(_0x76aa('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x76aa('0x5'));var logger=require(_0x76aa('0x6'))(_0x76aa('0x7'));var config=require('../../config/environment');var jayson=require('jayson/promise');var client=jayson[_0x76aa('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x32dee5,_0x36d12b,_0xa9b695){return new BPromise(function(_0x56d6bc,_0x3dae33){return client[_0x76aa('0x9')](_0x32dee5,_0xa9b695)[_0x76aa('0xa')](function(_0x557d69){logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,_0x76aa('0xd'));logger[_0x76aa('0xe')](_0x76aa('0xf'),_0x36d12b,_0x76aa('0xd'),JSON[_0x76aa('0x10')](_0x557d69));if(_0x557d69[_0x76aa('0x11')]){if(_0x557d69[_0x76aa('0x11')][_0x76aa('0x12')]===0x1f4){logger['error'](_0x76aa('0xc'),_0x36d12b,_0x557d69['error'][_0x76aa('0x13')]);return _0x3dae33(_0x557d69[_0x76aa('0x11')][_0x76aa('0x13')]);}logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x557d69['error']['message']);return _0x56d6bc(_0x557d69[_0x76aa('0x11')]['message']);}else{logger[_0x76aa('0xb')](_0x76aa('0xc'),_0x36d12b,'request\x20sent');_0x56d6bc(_0x557d69[_0x76aa('0x14')]['message']);}})[_0x76aa('0x15')](function(_0x5181d2){logger[_0x76aa('0x11')](_0x76aa('0xc'),_0x36d12b,_0x5181d2);_0x3dae33(_0x5181d2);});});}exports[_0x76aa('0x16')]=function(_0x21c16d){var _0xa1bc7=this;return new Promise(function(_0x3ead3f,_0x496902){return db['Variable'][_0x76aa('0x17')]({'raw':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')][_0x76aa('0x19')]===undefined?!![]:![]:!![],'where':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')][_0x76aa('0x1a')]||null:null,'attributes':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')]['attributes']||null:null,'include':_0x21c16d[_0x76aa('0x18')]?_0x21c16d[_0x76aa('0x18')][_0x76aa('0x1b')]?_['map'](_0x21c16d[_0x76aa('0x18')][_0x76aa('0x1b')],function(_0x31252f){return{'model':db[_0x31252f[_0x76aa('0x1c')]],'as':_0x31252f['as'],'attributes':_0x31252f[_0x76aa('0x1d')],'include':_0x31252f[_0x76aa('0x1b')]?_[_0x76aa('0x1e')](_0x31252f[_0x76aa('0x1b')],function(_0x32bf9f){return{'model':db[_0x32bf9f[_0x76aa('0x1c')]],'as':_0x32bf9f['as'],'attributes':_0x32bf9f[_0x76aa('0x1d')],'include':_0x32bf9f[_0x76aa('0x1b')]?_[_0x76aa('0x1e')](_0x32bf9f['include'],function(_0xb5e8a9){return{'model':db[_0xb5e8a9[_0x76aa('0x1c')]],'as':_0xb5e8a9['as'],'attributes':_0xb5e8a9[_0x76aa('0x1d')]};}):[]};}):[]};}):[]:[]})[_0x76aa('0xa')](function(_0xa1e6){logger[_0x76aa('0xb')](_0x76aa('0x16'),_0x21c16d);logger[_0x76aa('0xe')](_0x76aa('0x16'),_0x21c16d,JSON[_0x76aa('0x10')](_0xa1e6));_0x3ead3f(_0xa1e6);})['catch'](function(_0x3fcb7f){logger['error'](_0x76aa('0x16'),_0x3fcb7f[_0x76aa('0x13')],_0x21c16d);_0x496902(_0xa1bc7[_0x76aa('0x11')](0x1f4,_0x3fcb7f[_0x76aa('0x13')]));});});};
\ No newline at end of file
index 739e13a..70d83c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe95c=['/restart','restart','/migrations','migrations','exports','express','Router','get','index','isAuthenticated','canUpdate','fetch','/reset','reset','/pull','pull'];(function(_0xe3e917,_0x24f748){var _0x18463b=function(_0x2aff40){while(--_0x2aff40){_0xe3e917['push'](_0xe3e917['shift']());}};_0x18463b(++_0x24f748);}(_0xe95c,0x1b5));var _0xce95=function(_0x22b68a,_0x2bffc3){_0x22b68a=_0x22b68a-0x0;var _0x1ac67a=_0xe95c[_0x22b68a];return _0x1ac67a;};'use strict';var express=require(_0xce95('0x0'));var router=express[_0xce95('0x1')]();var auth=require('../../components/auth/service');var controller=require('./version.controller');router[_0xce95('0x2')]('/',controller[_0xce95('0x3')]);router[_0xce95('0x2')]('/fetch',auth[_0xce95('0x4')](),auth[_0xce95('0x5')](),controller[_0xce95('0x6')]);router[_0xce95('0x2')](_0xce95('0x7'),auth[_0xce95('0x4')](),auth[_0xce95('0x5')](),controller[_0xce95('0x8')]);router['get'](_0xce95('0x9'),auth[_0xce95('0x4')](),auth[_0xce95('0x5')](),controller[_0xce95('0xa')]);router['get'](_0xce95('0xb'),auth[_0xce95('0x4')](),controller[_0xce95('0xc')]);router[_0xce95('0x2')](_0xce95('0xd'),controller[_0xce95('0xe')]);module[_0xce95('0xf')]=router;
\ No newline at end of file
+var _0x04df=['pull','/restart','restart','/migrations','migrations','exports','express','./version.controller','get','index','/fetch','isAuthenticated','canUpdate','/reset'];(function(_0x5df59f,_0xf11a72){var _0x190e3b=function(_0x2b983e){while(--_0x2b983e){_0x5df59f['push'](_0x5df59f['shift']());}};_0x190e3b(++_0xf11a72);}(_0x04df,0x148));var _0xf04d=function(_0x5ddb1c,_0x5ea4df){_0x5ddb1c=_0x5ddb1c-0x0;var _0x354adc=_0x04df[_0x5ddb1c];return _0x354adc;};'use strict';var express=require(_0xf04d('0x0'));var router=express['Router']();var auth=require('../../components/auth/service');var controller=require(_0xf04d('0x1'));router[_0xf04d('0x2')]('/',controller[_0xf04d('0x3')]);router['get'](_0xf04d('0x4'),auth[_0xf04d('0x5')](),auth[_0xf04d('0x6')](),controller['fetch']);router[_0xf04d('0x2')](_0xf04d('0x7'),auth[_0xf04d('0x5')](),auth['canUpdate'](),controller['reset']);router['get']('/pull',auth['isAuthenticated'](),auth[_0xf04d('0x6')](),controller[_0xf04d('0x8')]);router[_0xf04d('0x2')](_0xf04d('0x9'),auth[_0xf04d('0x5')](),controller[_0xf04d('0xa')]);router[_0xf04d('0x2')](_0xf04d('0xb'),controller[_0xf04d('0xc')]);module[_0xf04d('0xd')]=router;
\ No newline at end of file
index 39216ba..a5b38e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8b9d=['../../mysqldb','../../config/environment','../../config/pm2','../../config/logger','update','simple-git','exports','query','latest','tags','2.0.0','status','json','fetch','master','error','info','git\x20fetch','reset','--hard','FETCH_HEAD','git\x20reset\x20--hard\x20FETCH_HEAD','git\x20reset\x20--hard','restart','motion2','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','server','replace','push','length','sort','sequelize','Migration','getQueryInterface','constructor','join','root','migrations','map','.js','then','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','pkginfo','version','compare-versions','exec'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x8b9d,0x137));var _0xd8b9=function(_0x19be52,_0x417078){_0x19be52=_0x19be52-0x0;var _0x42dfd2=_0x8b9d[_0x19be52];return _0x42dfd2;};'use strict';var Umzug=require(_0xd8b9('0x0'));var path=require(_0xd8b9('0x1'));var fs=require('fs');var _=require(_0xd8b9('0x2'));var pkginfo=require(_0xd8b9('0x3'))(module,_0xd8b9('0x4'));var compareVersions=require(_0xd8b9('0x5'));var exec=require('child_process')[_0xd8b9('0x6')];var db=require(_0xd8b9('0x7'))['db'];var config=require(_0xd8b9('0x8'));var pm2=require(_0xd8b9('0x9'));var logger=require(_0xd8b9('0xa'))(_0xd8b9('0xb'));var git=require(_0xd8b9('0xc'))(config['root']);exports['index']=function(_0x426c17,_0x359591){var _0x18a8f6={'current':module[_0xd8b9('0xd')][_0xd8b9('0x4')],'phonebar':0x2};if(_0x426c17[_0xd8b9('0xe')]&&_0x426c17[_0xd8b9('0xe')][_0xd8b9('0xf')]){return git['fetch']()[_0xd8b9('0x10')](function(_0x19016e,_0x475873){_0x18a8f6[_0xd8b9('0xf')]=(_0x19016e?module[_0xd8b9('0xd')][_0xd8b9('0x4')]:_0x475873[_0xd8b9('0xf')])||_0xd8b9('0x11');return _0x359591[_0xd8b9('0x12')](0xc8)['json'](_0x18a8f6);});}else{return _0x359591[_0xd8b9('0x12')](0xc8)[_0xd8b9('0x13')](_0x18a8f6);}};exports[_0xd8b9('0x14')]=function(_0x9e6b0d,_0x593a3a){return git[_0xd8b9('0x14')](['origin',_0xd8b9('0x15')],function(_0x4ef58e){if(_0x4ef58e){logger[_0xd8b9('0x16')](_0x4ef58e);return _0x593a3a[_0xd8b9('0x12')](0x1f4)[_0xd8b9('0x13')](_0x4ef58e);}logger[_0xd8b9('0x17')](_0xd8b9('0x18'));return _0x593a3a['status'](0xc8)['json']({'output':'git\x20fetch\x20origin\x20master'});});};exports[_0xd8b9('0x19')]=function(_0x199516,_0x362276){return git[_0xd8b9('0x19')]([_0xd8b9('0x1a'),_0xd8b9('0x1b')],function(_0x3684f9){if(_0x3684f9){logger[_0xd8b9('0x16')](_0x3684f9);return _0x362276[_0xd8b9('0x12')](0x1f4)[_0xd8b9('0x13')](_0x3684f9);}logger[_0xd8b9('0x17')](_0xd8b9('0x1c'));return _0x362276[_0xd8b9('0x12')](0xc8)[_0xd8b9('0x13')]({'output':_0xd8b9('0x1d')});});};exports['pull']=function(_0x33f598,_0x3131aa){exec('npm\x20install\x20--production',function(_0x27f651,_0x1e33a0,_0x10f740){logger[_0xd8b9('0x17')](_0x1e33a0);logger[_0xd8b9('0x17')](_0x10f740);if(_0x27f651){logger[_0xd8b9('0x16')](_0x27f651);return _0x3131aa[_0xd8b9('0x12')](0x1f4)[_0xd8b9('0x13')](_0x27f651);}return _0x3131aa[_0xd8b9('0x12')](0xc8)[_0xd8b9('0x13')]({'output':_0x1e33a0});});};exports[_0xd8b9('0x1e')]=function(_0x261708,_0x1f1cb3){return pm2[_0xd8b9('0x1e')](_0xd8b9('0x1f'))['then'](function(_0xc73104){logger[_0xd8b9('0x17')](_0xd8b9('0x20'),_0xc73104);return _0x1f1cb3[_0xd8b9('0x12')](0xc8)[_0xd8b9('0x13')]({'output':_0xd8b9('0x21')});})[_0xd8b9('0x22')](function(_0x47eaf6){logger[_0xd8b9('0x16')](_0x47eaf6);return _0x1f1cb3[_0xd8b9('0x12')](0x1f4)[_0xd8b9('0x13')](_0x47eaf6);});};exports['migrations']=function(_0x71a157,_0x5f3b95){var _0x405ffd=fs['readdirSync'](path['join'](config['root'],_0xd8b9('0x23'),'migrations'));var _0x352230=[];for(var _0x360f94=0x0;_0x360f94<_0x405ffd['length'];_0x360f94++){var _0x10e77f=_0x405ffd[_0x360f94][_0xd8b9('0x24')]('.js','');if(compareVersions(module[_0xd8b9('0xd')][_0xd8b9('0x4')],_0x10e77f)===-0x1){_0x352230[_0xd8b9('0x25')](_0x10e77f);}}if(_0x352230[_0xd8b9('0x26')]){var _0x4fcc70=_0x352230[_0xd8b9('0x27')](compareVersions);var _0x4e8b3b=new Umzug({'storage':_0xd8b9('0x28'),'storageOptions':{'model':db[_0xd8b9('0x29')],'modelName':_0xd8b9('0x29'),'columnName':_0xd8b9('0x4')},'migrations':{'params':[db[_0xd8b9('0x28')][_0xd8b9('0x2a')](),db[_0xd8b9('0x28')][_0xd8b9('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[_0xd8b9('0x2c')](config[_0xd8b9('0x2d')],'server',_0xd8b9('0x2e')),'pattern':/\.js$/}});_0x4e8b3b['up']({'migrations':_[_0xd8b9('0x2f')](_0x4fcc70,function(_0x57b038){return _0x57b038+_0xd8b9('0x30');})})[_0xd8b9('0x31')](function(){return _0x5f3b95[_0xd8b9('0x12')](0xc8)[_0xd8b9('0x13')]({'output':'Database\x20migrated\x20successfully\x20from\x20version\x20'+module['exports'][_0xd8b9('0x4')]+'\x20to\x20'+_[_0xd8b9('0x32')](_0x4fcc70),'migrations':_[_0xd8b9('0x2c')](_0x4fcc70)});})['catch'](function(_0x1933a4){if(_0x1933a4 instanceof db[_0xd8b9('0x28')][_0xd8b9('0x33')]){return _0x5f3b95[_0xd8b9('0x12')](0xc8)['json']({'output':_0xd8b9('0x34')});}else{return _0x5f3b95[_0xd8b9('0x12')](0x1f4)[_0xd8b9('0x13')](_0x1933a4);}});}else{return _0x5f3b95[_0xd8b9('0x12')](0xc8)[_0xd8b9('0x13')]({'output':_0xd8b9('0x34')});}};
\ No newline at end of file
+var _0x8505=['git\x20reset\x20--hard','pull','npm\x20install\x20--production','motion2','then','pm2\x20restart\x20motion\x20%s','Your\x20system\x20has\x20been\x20restart\x20successfully','catch','migrations','readdirSync','join','server','length','replace','.js','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.','Database\x20migrated\x20successfully\x20from\x20version\x20','\x20to\x20','last','UniqueConstraintError','Database\x20already\x20up-to-date','umzug','path','lodash','pkginfo','version','compare-versions','../../config/logger','update','simple-git','root','index','exports','query','latest','fetch','2.0.0','status','json','origin','master','error','info','git\x20fetch','git\x20fetch\x20origin\x20master','reset','--hard','FETCH_HEAD'];(function(_0x947959,_0xe60e92){var _0xf2b815=function(_0x1e9f1b){while(--_0x1e9f1b){_0x947959['push'](_0x947959['shift']());}};_0xf2b815(++_0xe60e92);}(_0x8505,0xee));var _0x5850=function(_0x3a8d97,_0x584331){_0x3a8d97=_0x3a8d97-0x0;var _0x4f7ed2=_0x8505[_0x3a8d97];return _0x4f7ed2;};'use strict';var Umzug=require(_0x5850('0x0'));var path=require(_0x5850('0x1'));var fs=require('fs');var _=require(_0x5850('0x2'));var pkginfo=require(_0x5850('0x3'))(module,_0x5850('0x4'));var compareVersions=require(_0x5850('0x5'));var exec=require('child_process')['exec'];var db=require('../../mysqldb')['db'];var config=require('../../config/environment');var pm2=require('../../config/pm2');var logger=require(_0x5850('0x6'))(_0x5850('0x7'));var git=require(_0x5850('0x8'))(config[_0x5850('0x9')]);exports[_0x5850('0xa')]=function(_0x1eff83,_0x3154dd){var _0x419605={'current':module[_0x5850('0xb')][_0x5850('0x4')],'phonebar':0x2};if(_0x1eff83[_0x5850('0xc')]&&_0x1eff83[_0x5850('0xc')][_0x5850('0xd')]){return git[_0x5850('0xe')]()['tags'](function(_0x2470a6,_0x27cf42){_0x419605['latest']=(_0x2470a6?module[_0x5850('0xb')][_0x5850('0x4')]:_0x27cf42[_0x5850('0xd')])||_0x5850('0xf');return _0x3154dd[_0x5850('0x10')](0xc8)[_0x5850('0x11')](_0x419605);});}else{return _0x3154dd[_0x5850('0x10')](0xc8)[_0x5850('0x11')](_0x419605);}};exports[_0x5850('0xe')]=function(_0x4da57a,_0x2f226b){return git[_0x5850('0xe')]([_0x5850('0x12'),_0x5850('0x13')],function(_0x2a4b51){if(_0x2a4b51){logger[_0x5850('0x14')](_0x2a4b51);return _0x2f226b[_0x5850('0x10')](0x1f4)['json'](_0x2a4b51);}logger[_0x5850('0x15')](_0x5850('0x16'));return _0x2f226b[_0x5850('0x10')](0xc8)[_0x5850('0x11')]({'output':_0x5850('0x17')});});};exports[_0x5850('0x18')]=function(_0xf2ee24,_0x4957f4){return git[_0x5850('0x18')]([_0x5850('0x19'),_0x5850('0x1a')],function(_0x331712){if(_0x331712){logger[_0x5850('0x14')](_0x331712);return _0x4957f4['status'](0x1f4)[_0x5850('0x11')](_0x331712);}logger[_0x5850('0x15')]('git\x20reset\x20--hard\x20FETCH_HEAD');return _0x4957f4['status'](0xc8)[_0x5850('0x11')]({'output':_0x5850('0x1b')});});};exports[_0x5850('0x1c')]=function(_0x30d165,_0x5f0fcc){exec(_0x5850('0x1d'),function(_0x2abe82,_0xaf0576,_0x158be0){logger[_0x5850('0x15')](_0xaf0576);logger['info'](_0x158be0);if(_0x2abe82){logger[_0x5850('0x14')](_0x2abe82);return _0x5f0fcc['status'](0x1f4)[_0x5850('0x11')](_0x2abe82);}return _0x5f0fcc[_0x5850('0x10')](0xc8)['json']({'output':_0xaf0576});});};exports['restart']=function(_0x22cc63,_0x5a75bf){return pm2['restart'](_0x5850('0x1e'))[_0x5850('0x1f')](function(_0x5ea6f1){logger['info'](_0x5850('0x20'),_0x5ea6f1);return _0x5a75bf[_0x5850('0x10')](0xc8)['json']({'output':_0x5850('0x21')});})[_0x5850('0x22')](function(_0x7850c0){logger[_0x5850('0x14')](_0x7850c0);return _0x5a75bf[_0x5850('0x10')](0x1f4)[_0x5850('0x11')](_0x7850c0);});};exports[_0x5850('0x23')]=function(_0x4d80ff,_0x49aac9){var _0x2ba1a1=fs[_0x5850('0x24')](path[_0x5850('0x25')](config['root'],_0x5850('0x26'),_0x5850('0x23')));var _0x2a5713=[];for(var _0x137535=0x0;_0x137535<_0x2ba1a1[_0x5850('0x27')];_0x137535++){var _0x261b09=_0x2ba1a1[_0x137535][_0x5850('0x28')](_0x5850('0x29'),'');if(compareVersions(module['exports'][_0x5850('0x4')],_0x261b09)===-0x1){_0x2a5713['push'](_0x261b09);}}if(_0x2a5713[_0x5850('0x27')]){var _0x13029c=_0x2a5713[_0x5850('0x2a')](compareVersions);var _0xfa1ed=new Umzug({'storage':_0x5850('0x2b'),'storageOptions':{'model':db[_0x5850('0x2c')],'modelName':_0x5850('0x2c'),'columnName':_0x5850('0x4')},'migrations':{'params':[db[_0x5850('0x2b')][_0x5850('0x2d')](),db[_0x5850('0x2b')][_0x5850('0x2e')],function(){throw new Error(_0x5850('0x2f'));}],'path':path[_0x5850('0x25')](config['root'],_0x5850('0x26'),_0x5850('0x23')),'pattern':/\.js$/}});_0xfa1ed['up']({'migrations':_['map'](_0x13029c,function(_0x392cff){return _0x392cff+_0x5850('0x29');})})[_0x5850('0x1f')](function(){return _0x49aac9['status'](0xc8)[_0x5850('0x11')]({'output':_0x5850('0x30')+module[_0x5850('0xb')][_0x5850('0x4')]+_0x5850('0x31')+_[_0x5850('0x32')](_0x13029c),'migrations':_['join'](_0x13029c)});})[_0x5850('0x22')](function(_0x52742e){if(_0x52742e instanceof db['sequelize'][_0x5850('0x33')]){return _0x49aac9[_0x5850('0x10')](0xc8)[_0x5850('0x11')]({'output':_0x5850('0x34')});}else{return _0x49aac9[_0x5850('0x10')](0x1f4)[_0x5850('0x11')](_0x52742e);}});}else{return _0x49aac9[_0x5850('0x10')](0xc8)[_0x5850('0x11')]({'output':_0x5850('0x34')});}};
\ No newline at end of file
index 28e809d..92ce100 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1bc7=['/describe','describe','/:id','post','put','delete','destroy','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get','isAuthenticated','index'];(function(_0x243b59,_0x3f9495){var _0x3e1676=function(_0x354052){while(--_0x354052){_0x243b59['push'](_0x243b59['shift']());}};_0x3e1676(++_0x3f9495);}(_0x1bc7,0xbb));var _0x71bc=function(_0x100f55,_0x37b466){_0x100f55=_0x100f55-0x0;var _0xc39600=_0x1bc7[_0x100f55];return _0xc39600;};'use strict';var multer=require('multer');var util=require(_0x71bc('0x0'));var path=require(_0x71bc('0x1'));var timeout=require('connect-timeout');var express=require(_0x71bc('0x2'));var router=express[_0x71bc('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x71bc('0x4'));var interaction=require(_0x71bc('0x5'));var config=require(_0x71bc('0x6'));var controller=require(_0x71bc('0x7'));router[_0x71bc('0x8')]('/',auth[_0x71bc('0x9')](),controller[_0x71bc('0xa')]);router[_0x71bc('0x8')](_0x71bc('0xb'),auth['isAuthenticated'](),controller[_0x71bc('0xc')]);router[_0x71bc('0x8')](_0x71bc('0xd'),auth[_0x71bc('0x9')](),controller['show']);router[_0x71bc('0xe')]('/',auth['isAuthenticated'](),controller['create']);router[_0x71bc('0xf')](_0x71bc('0xd'),auth[_0x71bc('0x9')](),controller['update']);router[_0x71bc('0x10')]('/:id',auth['isAuthenticated'](),controller[_0x71bc('0x11')]);module['exports']=router;
\ No newline at end of file
+var _0xc1bb=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceAgentReport.controller','get','index','isAuthenticated','show','post','create','update','delete','/:id','destroy','exports','multer','util','path','connect-timeout','Router'];(function(_0x11a85f,_0x541f11){var _0x105df7=function(_0x284d7c){while(--_0x284d7c){_0x11a85f['push'](_0x11a85f['shift']());}};_0x105df7(++_0x541f11);}(_0xc1bb,0x160));var _0xbc1b=function(_0x9cd190,_0x1cdcce){_0x9cd190=_0x9cd190-0x0;var _0x43e509=_0xc1bb[_0x9cd190];return _0x43e509;};'use strict';var multer=require(_0xbc1b('0x0'));var util=require(_0xbc1b('0x1'));var path=require(_0xbc1b('0x2'));var timeout=require(_0xbc1b('0x3'));var express=require('express');var router=express[_0xbc1b('0x4')]();var fs_extra=require(_0xbc1b('0x5'));var auth=require(_0xbc1b('0x6'));var interaction=require(_0xbc1b('0x7'));var config=require(_0xbc1b('0x8'));var controller=require(_0xbc1b('0x9'));router[_0xbc1b('0xa')]('/',auth['isAuthenticated'](),controller[_0xbc1b('0xb')]);router[_0xbc1b('0xa')]('/describe',auth[_0xbc1b('0xc')](),controller['describe']);router['get']('/:id',auth[_0xbc1b('0xc')](),controller[_0xbc1b('0xd')]);router[_0xbc1b('0xe')]('/',auth[_0xbc1b('0xc')](),controller[_0xbc1b('0xf')]);router['put']('/:id',auth[_0xbc1b('0xc')](),controller[_0xbc1b('0x10')]);router[_0xbc1b('0x11')](_0xbc1b('0x12'),auth['isAuthenticated'](),controller[_0xbc1b('0x13')]);module[_0xbc1b('0x14')]=router;
\ No newline at end of file
index 184f594..b705a26 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34b7=['INTEGER','BOOLEAN','STRING','DATE'];(function(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0x34b7,0x196));var _0x734b=function(_0x4f15d2,_0x4d719a){_0x4f15d2=_0x4f15d2-0x0;var _0x55be7a=_0x34b7[_0x4f15d2];return _0x55be7a;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize[_0x734b('0x0')]},'uniqueid':{'type':Sequelize[_0x734b('0x0')]},'calleridnum':{'type':Sequelize[_0x734b('0x0')]},'calleridname':{'type':Sequelize[_0x734b('0x0')]},'queue':{'type':Sequelize[_0x734b('0x0')]},'interface':{'type':Sequelize[_0x734b('0x0')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0x734b('0x1')]},'agentcompleteAt':{'type':Sequelize[_0x734b('0x1')]},'agentringnoanswerAt':{'type':Sequelize[_0x734b('0x1')]},'agentdumpAt':{'type':Sequelize[_0x734b('0x1')]},'holdtime':{'type':Sequelize[_0x734b('0x2')]},'agentcomplete':{'type':Sequelize[_0x734b('0x3')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x734b('0x3')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x734b('0x2')]},'agentacw':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'acwtime':{'type':Sequelize['INTEGER']},'reason':{'type':Sequelize['STRING']},'lastevent':{'type':Sequelize[_0x734b('0x0')]},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0x734b('0x2')]},'channelstatedesc':{'type':Sequelize[_0x734b('0x0')]},'connectedlinenum':{'type':Sequelize[_0x734b('0x0')]},'connectedlinename':{'type':Sequelize[_0x734b('0x0')]},'language':{'type':Sequelize[_0x734b('0x0')]},'accountcode':{'type':Sequelize[_0x734b('0x0')]},'context':{'type':Sequelize[_0x734b('0x0')]},'exten':{'type':Sequelize[_0x734b('0x0')]},'priority':{'type':Sequelize[_0x734b('0x0')]},'destchannel':{'type':Sequelize[_0x734b('0x0')]},'destchannelstate':{'type':Sequelize[_0x734b('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x734b('0x0')]},'destcalleridnum':{'type':Sequelize[_0x734b('0x0')]},'destcalleridname':{'type':Sequelize[_0x734b('0x0')]},'destconnectedlinenum':{'type':Sequelize['STRING']},'destconnectedlinename':{'type':Sequelize[_0x734b('0x0')]},'destlanguage':{'type':Sequelize[_0x734b('0x0')]},'destaccountcode':{'type':Sequelize[_0x734b('0x0')]},'destcontext':{'type':Sequelize[_0x734b('0x0')]},'destexten':{'type':Sequelize[_0x734b('0x0')]},'destpriority':{'type':Sequelize[_0x734b('0x0')]},'destuniqueid':{'type':Sequelize[_0x734b('0x0')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x734b('0x0')]},'answeredelsewheremembername':{'type':Sequelize[_0x734b('0x0')]},'transfer':{'type':Sequelize[_0x734b('0x3')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x734b('0x0')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x734b('0x0')]},'transferuniqueid':{'type':Sequelize[_0x734b('0x0')]},'agententerreason':{'type':Sequelize[_0x734b('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xae87=['INTEGER','FORWARD,\x20BLIND,\x20ATTENDED','STRING','DATE','BOOLEAN'];(function(_0x1d5125,_0x11d896){var _0x34cb11=function(_0x3b0001){while(--_0x3b0001){_0x1d5125['push'](_0x1d5125['shift']());}};_0x34cb11(++_0x11d896);}(_0xae87,0x1ce));var _0x7ae8=function(_0x43776a,_0x4eb74c){_0x43776a=_0x43776a-0x0;var _0x18eb8f=_0xae87[_0x43776a];return _0x18eb8f;};'use strict';var Sequelize=require('sequelize');module['exports']={'type':{'type':Sequelize['STRING']},'uniqueid':{'type':Sequelize['STRING']},'calleridnum':{'type':Sequelize[_0x7ae8('0x0')]},'calleridname':{'type':Sequelize[_0x7ae8('0x0')]},'queue':{'type':Sequelize['STRING']},'interface':{'type':Sequelize[_0x7ae8('0x0')]},'membername':{'type':Sequelize['STRING']},'agentcalledAt':{'type':Sequelize['DATE']},'agentconnectAt':{'type':Sequelize[_0x7ae8('0x1')]},'agentcompleteAt':{'type':Sequelize[_0x7ae8('0x1')]},'agentringnoanswerAt':{'type':Sequelize[_0x7ae8('0x1')]},'agentdumpAt':{'type':Sequelize[_0x7ae8('0x1')]},'holdtime':{'type':Sequelize['INTEGER']},'agentcomplete':{'type':Sequelize[_0x7ae8('0x2')],'defaultValue':![]},'agentringnoanswer':{'type':Sequelize[_0x7ae8('0x2')],'defaultValue':![]},'agentdump':{'type':Sequelize[_0x7ae8('0x2')],'defaultValue':![]},'talktime':{'type':Sequelize[_0x7ae8('0x3')]},'agentacw':{'type':Sequelize[_0x7ae8('0x2')],'defaultValue':![]},'acwtime':{'type':Sequelize[_0x7ae8('0x3')]},'reason':{'type':Sequelize[_0x7ae8('0x0')]},'lastevent':{'type':Sequelize['STRING']},'channel':{'type':Sequelize['STRING']},'channelstate':{'type':Sequelize[_0x7ae8('0x3')]},'channelstatedesc':{'type':Sequelize[_0x7ae8('0x0')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0x7ae8('0x0')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0x7ae8('0x0')]},'context':{'type':Sequelize['STRING']},'exten':{'type':Sequelize[_0x7ae8('0x0')]},'priority':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0x7ae8('0x0')]},'destchannelstate':{'type':Sequelize[_0x7ae8('0x3')]},'destchannelstatedesc':{'type':Sequelize[_0x7ae8('0x0')]},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0x7ae8('0x0')]},'destconnectedlinenum':{'type':Sequelize[_0x7ae8('0x0')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x7ae8('0x0')]},'destaccountcode':{'type':Sequelize[_0x7ae8('0x0')]},'destcontext':{'type':Sequelize[_0x7ae8('0x0')]},'destexten':{'type':Sequelize[_0x7ae8('0x0')]},'destpriority':{'type':Sequelize[_0x7ae8('0x0')]},'destuniqueid':{'type':Sequelize[_0x7ae8('0x0')]},'answeredelsewheredestinationuniqueid':{'type':Sequelize[_0x7ae8('0x0')]},'answeredelsewheremembername':{'type':Sequelize[_0x7ae8('0x0')]},'transfer':{'type':Sequelize[_0x7ae8('0x2')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x7ae8('0x0')],'comment':_0x7ae8('0x4')},'transferexten':{'type':Sequelize[_0x7ae8('0x0')]},'transferuniqueid':{'type':Sequelize['STRING']},'agententerreason':{'type':Sequelize[_0x7ae8('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 2b013aa..d68de46 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(_0x3e44fa,_0x75ed2a){var _0x2a0aba=function(_0x1db6a7){while(--_0x1db6a7){_0x3e44fa['push'](_0x3e44fa['shift']());}};_0x2a0aba(++_0x75ed2a);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4baae2,_0x487ab6){_0x4baae2=_0x4baae2-0x0;var _0x1a2285=_0xa9e0[_0x4baae2];return _0x1a2285;};'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(_0x1deb03,_0xd05ad8){var _0x189fe7=function(_0x321225){while(--_0x321225){_0x1deb03['push'](_0x1deb03['shift']());}};_0x189fe7(++_0xd05ad8);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4b7b62,_0x4920a9){_0x4b7b62=_0x4b7b62-0x0;var _0x2280df=_0xa9e0[_0x4b7b62];return _0x2280df;};'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 b3f95fd..8cac1d9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x615a=['path','../../config/environment','./voiceAgentReport.attributes','define','VoiceAgentReport','report_agent','uniqueid','destuniqueid','lodash','../../config/logger','moment','bluebird','request-promise'];(function(_0xfaeb5b,_0x1a614c){var _0x21ff36=function(_0x31431d){while(--_0x31431d){_0xfaeb5b['push'](_0xfaeb5b['shift']());}};_0x21ff36(++_0x1a614c);}(_0x615a,0x119));var _0xa615=function(_0x75c3eb,_0x271b5a){_0x75c3eb=_0x75c3eb-0x0;var _0x6e6585=_0x615a[_0x75c3eb];return _0x6e6585;};'use strict';var _=require(_0xa615('0x0'));var util=require('util');var logger=require(_0xa615('0x1'))('api');var moment=require(_0xa615('0x2'));var BPromise=require(_0xa615('0x3'));var rp=require(_0xa615('0x4'));var fs=require('fs');var path=require(_0xa615('0x5'));var rimraf=require('rimraf');var config=require(_0xa615('0x6'));var attributes=require(_0xa615('0x7'));module['exports']=function(_0x320680,_0x5d04bd){return _0x320680[_0xa615('0x8')](_0xa615('0x9'),attributes,{'tableName':_0xa615('0xa'),'paranoid':![],'indexes':[{'fields':[_0xa615('0xb'),_0xa615('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xfcbd=['./voiceAgentReport.attributes','exports','define','VoiceAgentReport','report_agent','uniqueid','destuniqueid','lodash','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x56740a,_0x568894){var _0x257144=function(_0x2b8cc5){while(--_0x2b8cc5){_0x56740a['push'](_0x56740a['shift']());}};_0x257144(++_0x568894);}(_0xfcbd,0x160));var _0xdfcb=function(_0x401274,_0x3490f2){_0x401274=_0x401274-0x0;var _0x195f0b=_0xfcbd[_0x401274];return _0x195f0b;};'use strict';var _=require(_0xdfcb('0x0'));var util=require('util');var logger=require('../../config/logger')(_0xdfcb('0x1'));var moment=require(_0xdfcb('0x2'));var BPromise=require(_0xdfcb('0x3'));var rp=require(_0xdfcb('0x4'));var fs=require('fs');var path=require(_0xdfcb('0x5'));var rimraf=require(_0xdfcb('0x6'));var config=require(_0xdfcb('0x7'));var attributes=require(_0xdfcb('0x8'));module[_0xdfcb('0x9')]=function(_0x4bdf76,_0x5615a6){return _0x4bdf76[_0xdfcb('0xa')](_0xdfcb('0xb'),attributes,{'tableName':_0xdfcb('0xc'),'paranoid':![],'indexes':[{'fields':[_0xdfcb('0xd'),_0xdfcb('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index ee14410..6cae75d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf0f9=['rpc','../../config/environment','jayson/promise','client','http','request','then','VoiceAgentReport,\x20%s,\x20%s','debug','VoiceAgentReport,\x20%s,\x20%s,\x20%s','stringify','error','message','info','request\x20sent','result','catch','CreateVoiceAgentReport','VoiceAgentReport','create','options','raw','update','where','limit','UpdateVoiceAgentReport','lodash','moment','bluebird','ioredis','../../mysqldb','../../config/utils'];(function(_0x2fbde0,_0x50dfbd){var _0x12a57c=function(_0x512a30){while(--_0x512a30){_0x2fbde0['push'](_0x2fbde0['shift']());}};_0x12a57c(++_0x50dfbd);}(_0xf0f9,0x7a));var _0x9f0f=function(_0x5155f8,_0x55041b){_0x5155f8=_0x5155f8-0x0;var _0x507e69=_0xf0f9[_0x5155f8];return _0x507e69;};'use strict';var _=require(_0x9f0f('0x0'));var util=require('util');var moment=require(_0x9f0f('0x1'));var BPromise=require(_0x9f0f('0x2'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9f0f('0x3'));var db=require(_0x9f0f('0x4'))['db'];var utils=require(_0x9f0f('0x5'));var logger=require('../../config/logger')(_0x9f0f('0x6'));var config=require(_0x9f0f('0x7'));var jayson=require(_0x9f0f('0x8'));var client=jayson[_0x9f0f('0x9')][_0x9f0f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4c427d,_0x74045,_0x32cbf9){return new BPromise(function(_0x51aa59,_0x42cf9a){return client[_0x9f0f('0xb')](_0x4c427d,_0x32cbf9)[_0x9f0f('0xc')](function(_0x36db38){logger['info'](_0x9f0f('0xd'),_0x74045,'request\x20sent');logger[_0x9f0f('0xe')](_0x9f0f('0xf'),_0x74045,'request\x20sent',JSON[_0x9f0f('0x10')](_0x36db38));if(_0x36db38['error']){if(_0x36db38[_0x9f0f('0x11')]['code']===0x1f4){logger[_0x9f0f('0x11')](_0x9f0f('0xd'),_0x74045,_0x36db38[_0x9f0f('0x11')][_0x9f0f('0x12')]);return _0x42cf9a(_0x36db38[_0x9f0f('0x11')][_0x9f0f('0x12')]);}logger[_0x9f0f('0x11')](_0x9f0f('0xd'),_0x74045,_0x36db38[_0x9f0f('0x11')][_0x9f0f('0x12')]);return _0x51aa59(_0x36db38['error'][_0x9f0f('0x12')]);}else{logger[_0x9f0f('0x13')]('VoiceAgentReport,\x20%s,\x20%s',_0x74045,_0x9f0f('0x14'));_0x51aa59(_0x36db38[_0x9f0f('0x15')][_0x9f0f('0x12')]);}})[_0x9f0f('0x16')](function(_0x206ce1){logger['error']('VoiceAgentReport,\x20%s,\x20%s',_0x74045,_0x206ce1);_0x42cf9a(_0x206ce1);});});}exports[_0x9f0f('0x17')]=function(_0x4c8993){var _0x517fc3=this;return new Promise(function(_0x14e7bd,_0x200015){return db[_0x9f0f('0x18')][_0x9f0f('0x19')](_0x4c8993['body'],{'raw':_0x4c8993[_0x9f0f('0x1a')]?_0x4c8993[_0x9f0f('0x1a')][_0x9f0f('0x1b')]===undefined?!![]:![]:!![]})[_0x9f0f('0xc')](function(_0x4c51b7){logger[_0x9f0f('0x13')](_0x9f0f('0x17'),_0x4c8993);logger['debug'](_0x9f0f('0x17'),_0x4c8993,JSON['stringify'](_0x4c51b7));_0x14e7bd(_0x4c51b7);})[_0x9f0f('0x16')](function(_0x543644){logger[_0x9f0f('0x11')](_0x9f0f('0x17'),_0x543644[_0x9f0f('0x12')],_0x4c8993);_0x200015(_0x517fc3[_0x9f0f('0x11')](0x1f4,_0x543644[_0x9f0f('0x12')]));});});};exports['UpdateVoiceAgentReport']=function(_0x5cd614){var _0x493394=this;return new Promise(function(_0x32b32f,_0x352284){return db[_0x9f0f('0x18')][_0x9f0f('0x1c')](_0x5cd614['body'],{'raw':_0x5cd614[_0x9f0f('0x1a')]?_0x5cd614['options'][_0x9f0f('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x5cd614['options']?_0x5cd614[_0x9f0f('0x1a')][_0x9f0f('0x1d')]||null:null,'attributes':_0x5cd614[_0x9f0f('0x1a')]?_0x5cd614['options']['attributes']||null:null,'limit':_0x5cd614[_0x9f0f('0x1a')]?_0x5cd614[_0x9f0f('0x1a')][_0x9f0f('0x1e')]||null:null})[_0x9f0f('0xc')](function(_0x202aef){logger[_0x9f0f('0x13')](_0x9f0f('0x1f'),_0x5cd614);logger[_0x9f0f('0xe')](_0x9f0f('0x1f'),_0x5cd614,JSON[_0x9f0f('0x10')](_0x202aef));_0x32b32f(_0x202aef);})['catch'](function(_0xfcd3f1){logger[_0x9f0f('0x11')](_0x9f0f('0x1f'),_0xfcd3f1[_0x9f0f('0x12')],_0x5cd614);_0x352284(_0x493394['error'](0x1f4,_0xfcd3f1[_0x9f0f('0x12')]));});});};
\ No newline at end of file
+var _0x254d=['request\x20sent','stringify','error','VoiceAgentReport,\x20%s,\x20%s','message','catch','VoiceAgentReport','create','body','options','raw','CreateVoiceAgentReport','UpdateVoiceAgentReport','update','where','attributes','limit','debug','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','client','http','request','then','info'];(function(_0x2c2d3f,_0x348257){var _0x62e907=function(_0x516a26){while(--_0x516a26){_0x2c2d3f['push'](_0x2c2d3f['shift']());}};_0x62e907(++_0x348257);}(_0x254d,0x1b2));var _0xd254=function(_0x55daf2,_0x1b48de){_0x55daf2=_0x55daf2-0x0;var _0x1c8500=_0x254d[_0x55daf2];return _0x1c8500;};'use strict';var _=require(_0xd254('0x0'));var util=require(_0xd254('0x1'));var moment=require(_0xd254('0x2'));var BPromise=require(_0xd254('0x3'));var rs=require(_0xd254('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xd254('0x5'))['db'];var utils=require(_0xd254('0x6'));var logger=require(_0xd254('0x7'))('rpc');var config=require(_0xd254('0x8'));var jayson=require('jayson/promise');var client=jayson[_0xd254('0x9')][_0xd254('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x271381,_0x54aa50,_0x6aff7d){return new BPromise(function(_0x51ecba,_0x5f4708){return client[_0xd254('0xb')](_0x271381,_0x6aff7d)[_0xd254('0xc')](function(_0x4680a0){logger[_0xd254('0xd')]('VoiceAgentReport,\x20%s,\x20%s',_0x54aa50,_0xd254('0xe'));logger['debug']('VoiceAgentReport,\x20%s,\x20%s,\x20%s',_0x54aa50,'request\x20sent',JSON[_0xd254('0xf')](_0x4680a0));if(_0x4680a0[_0xd254('0x10')]){if(_0x4680a0[_0xd254('0x10')]['code']===0x1f4){logger[_0xd254('0x10')](_0xd254('0x11'),_0x54aa50,_0x4680a0[_0xd254('0x10')][_0xd254('0x12')]);return _0x5f4708(_0x4680a0[_0xd254('0x10')][_0xd254('0x12')]);}logger[_0xd254('0x10')](_0xd254('0x11'),_0x54aa50,_0x4680a0[_0xd254('0x10')][_0xd254('0x12')]);return _0x51ecba(_0x4680a0['error'][_0xd254('0x12')]);}else{logger[_0xd254('0xd')](_0xd254('0x11'),_0x54aa50,_0xd254('0xe'));_0x51ecba(_0x4680a0['result'][_0xd254('0x12')]);}})[_0xd254('0x13')](function(_0x458b63){logger[_0xd254('0x10')]('VoiceAgentReport,\x20%s,\x20%s',_0x54aa50,_0x458b63);_0x5f4708(_0x458b63);});});}exports['CreateVoiceAgentReport']=function(_0x772de9){var _0x5ba364=this;return new Promise(function(_0x4e8b49,_0x12caa8){return db[_0xd254('0x14')][_0xd254('0x15')](_0x772de9[_0xd254('0x16')],{'raw':_0x772de9['options']?_0x772de9[_0xd254('0x17')][_0xd254('0x18')]===undefined?!![]:![]:!![]})[_0xd254('0xc')](function(_0x106766){logger[_0xd254('0xd')](_0xd254('0x19'),_0x772de9);logger['debug'](_0xd254('0x19'),_0x772de9,JSON[_0xd254('0xf')](_0x106766));_0x4e8b49(_0x106766);})[_0xd254('0x13')](function(_0x1603e2){logger[_0xd254('0x10')](_0xd254('0x19'),_0x1603e2['message'],_0x772de9);_0x12caa8(_0x5ba364[_0xd254('0x10')](0x1f4,_0x1603e2[_0xd254('0x12')]));});});};exports[_0xd254('0x1a')]=function(_0x1b78f2){var _0x2d0715=this;return new Promise(function(_0x3c0dfa,_0x5e4735){return db['VoiceAgentReport'][_0xd254('0x1b')](_0x1b78f2[_0xd254('0x16')],{'raw':_0x1b78f2['options']?_0x1b78f2[_0xd254('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1b78f2[_0xd254('0x17')]?_0x1b78f2[_0xd254('0x17')][_0xd254('0x1c')]||null:null,'attributes':_0x1b78f2[_0xd254('0x17')]?_0x1b78f2[_0xd254('0x17')][_0xd254('0x1d')]||null:null,'limit':_0x1b78f2[_0xd254('0x17')]?_0x1b78f2[_0xd254('0x17')][_0xd254('0x1e')]||null:null})[_0xd254('0xc')](function(_0x8c4501){logger[_0xd254('0xd')](_0xd254('0x1a'),_0x1b78f2);logger[_0xd254('0x1f')](_0xd254('0x1a'),_0x1b78f2,JSON[_0xd254('0xf')](_0x8c4501));_0x3c0dfa(_0x8c4501);})[_0xd254('0x13')](function(_0x451278){logger['error'](_0xd254('0x1a'),_0x451278[_0xd254('0x12')],_0x1b78f2);_0x5e4735(_0x2d0715['error'](0x1f4,_0x451278[_0xd254('0x12')]));});});};
\ No newline at end of file
index 98f73d0..d86e2b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7217=['../../config/environment','./voiceCallReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','put','update','delete','destroy','multer','path','connect-timeout','express','Router','fs-extra'];(function(_0x210603,_0x4adbac){var _0x1bcb7d=function(_0x2cdf89){while(--_0x2cdf89){_0x210603['push'](_0x210603['shift']());}};_0x1bcb7d(++_0x4adbac);}(_0x7217,0x19e));var _0x7721=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0x7217[_0x1b349a];return _0x5d1f7c;};'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('0x8')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0xe')]);router[_0x7721('0xf')]('/',auth[_0x7721('0x9')](),controller['create']);router[_0x7721('0x10')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0x11')]);router[_0x7721('0x12')](_0x7721('0xd'),auth[_0x7721('0x9')](),controller[_0x7721('0x13')]);module['exports']=router;
\ No newline at end of file
+var _0x2bd8=['multer','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceCallReport.controller','get','isAuthenticated','/describe','describe','/:id','delete','destroy'];(function(_0x53d594,_0x2d444e){var _0x457b13=function(_0x5f88f8){while(--_0x5f88f8){_0x53d594['push'](_0x53d594['shift']());}};_0x457b13(++_0x2d444e);}(_0x2bd8,0x130));var _0x82bd=function(_0x40daa6,_0x2f0679){_0x40daa6=_0x40daa6-0x0;var _0x8a2e94=_0x2bd8[_0x40daa6];return _0x8a2e94;};'use strict';var multer=require(_0x82bd('0x0'));var util=require('util');var path=require(_0x82bd('0x1'));var timeout=require(_0x82bd('0x2'));var express=require(_0x82bd('0x3'));var router=express[_0x82bd('0x4')]();var fs_extra=require(_0x82bd('0x5'));var auth=require(_0x82bd('0x6'));var interaction=require(_0x82bd('0x7'));var config=require('../../config/environment');var controller=require(_0x82bd('0x8'));router[_0x82bd('0x9')]('/',auth[_0x82bd('0xa')](),controller['index']);router[_0x82bd('0x9')](_0x82bd('0xb'),auth[_0x82bd('0xa')](),controller[_0x82bd('0xc')]);router['get'](_0x82bd('0xd'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x82bd('0xa')](),controller['create']);router['put'](_0x82bd('0xd'),auth['isAuthenticated'](),controller['update']);router[_0x82bd('0xe')](_0x82bd('0xd'),auth['isAuthenticated'](),controller[_0x82bd('0xf')]);module['exports']=router;
\ No newline at end of file
index 9d83792..8a67409 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0444=['DATE','INTEGER','sequelize','ENUM','inbound','internal','outbound','outbound-fax','dialer','STRING','TEXT'];(function(_0xf9cb7a,_0x155fd9){var _0x337245=function(_0x385c3b){while(--_0x385c3b){_0xf9cb7a['push'](_0xf9cb7a['shift']());}};_0x337245(++_0x155fd9);}(_0x0444,0xbd));var _0x4044=function(_0x3bb6f2,_0x3ff683){_0x3bb6f2=_0x3bb6f2-0x0;var _0x1b2600=_0x0444[_0x3bb6f2];return _0x1b2600;};'use strict';var Sequelize=require(_0x4044('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING']},'type':{'type':Sequelize[_0x4044('0x1')](_0x4044('0x2'),_0x4044('0x3'),_0x4044('0x4'),'inbound-fax',_0x4044('0x5'),_0x4044('0x6'))},'tag':{'type':Sequelize[_0x4044('0x7')]},'accountcode':{'type':Sequelize[_0x4044('0x7')]},'source':{'type':Sequelize[_0x4044('0x7')]},'destination':{'type':Sequelize['STRING']},'destinationcontext':{'type':Sequelize[_0x4044('0x7')]},'callerid':{'type':Sequelize['STRING']},'channel':{'type':Sequelize[_0x4044('0x7')]},'destinationchannel':{'type':Sequelize[_0x4044('0x7')]},'lastapplication':{'type':Sequelize[_0x4044('0x7')]},'lastdata':{'type':Sequelize[_0x4044('0x8')]},'starttime':{'type':Sequelize[_0x4044('0x9')]},'systemanswertime':{'type':Sequelize[_0x4044('0x9')]},'answertime':{'type':Sequelize[_0x4044('0x9')]},'endtime':{'type':Sequelize[_0x4044('0x9')]},'duration':{'type':Sequelize[_0x4044('0xa')]},'billableseconds':{'type':Sequelize[_0x4044('0xa')]},'mohtime':{'type':Sequelize[_0x4044('0xa')],'defaultValue':0x0},'disposition':{'type':Sequelize[_0x4044('0x7')]},'amaflags':{'type':Sequelize[_0x4044('0x7')]},'userfield':{'type':Sequelize[_0x4044('0x7')]},'userDisposition':{'type':Sequelize[_0x4044('0x7')]},'userSecondDisposition':{'type':Sequelize[_0x4044('0x7')]},'userThirdDisposition':{'type':Sequelize['STRING']},'note':{'type':Sequelize[_0x4044('0x7')]},'prefix':{'type':Sequelize['STRING']},'routeid':{'type':Sequelize['INTEGER']},'sipcallid':{'type':Sequelize['STRING']}};
\ No newline at end of file
+var _0x8374=['internal','outbound','inbound-fax','outbound-fax','dialer','TEXT','DATE','INTEGER','sequelize','exports','STRING','ENUM','inbound'];(function(_0x213a58,_0x51e0cf){var _0x21ea30=function(_0x7d76d7){while(--_0x7d76d7){_0x213a58['push'](_0x213a58['shift']());}};_0x21ea30(++_0x51e0cf);}(_0x8374,0x174));var _0x4837=function(_0x5c071b,_0x4ff17f){_0x5c071b=_0x5c071b-0x0;var _0x48a758=_0x8374[_0x5c071b];return _0x48a758;};'use strict';var Sequelize=require(_0x4837('0x0'));module[_0x4837('0x1')]={'uniqueid':{'type':Sequelize[_0x4837('0x2')]},'type':{'type':Sequelize[_0x4837('0x3')](_0x4837('0x4'),_0x4837('0x5'),_0x4837('0x6'),_0x4837('0x7'),_0x4837('0x8'),_0x4837('0x9'))},'tag':{'type':Sequelize[_0x4837('0x2')]},'accountcode':{'type':Sequelize[_0x4837('0x2')]},'source':{'type':Sequelize[_0x4837('0x2')]},'destination':{'type':Sequelize[_0x4837('0x2')]},'destinationcontext':{'type':Sequelize['STRING']},'callerid':{'type':Sequelize[_0x4837('0x2')]},'channel':{'type':Sequelize['STRING']},'destinationchannel':{'type':Sequelize[_0x4837('0x2')]},'lastapplication':{'type':Sequelize[_0x4837('0x2')]},'lastdata':{'type':Sequelize[_0x4837('0xa')]},'starttime':{'type':Sequelize[_0x4837('0xb')]},'systemanswertime':{'type':Sequelize[_0x4837('0xb')]},'answertime':{'type':Sequelize[_0x4837('0xb')]},'endtime':{'type':Sequelize[_0x4837('0xb')]},'duration':{'type':Sequelize[_0x4837('0xc')]},'billableseconds':{'type':Sequelize[_0x4837('0xc')]},'mohtime':{'type':Sequelize[_0x4837('0xc')],'defaultValue':0x0},'disposition':{'type':Sequelize['STRING']},'amaflags':{'type':Sequelize['STRING']},'userfield':{'type':Sequelize[_0x4837('0x2')]},'userDisposition':{'type':Sequelize['STRING']},'userSecondDisposition':{'type':Sequelize[_0x4837('0x2')]},'userThirdDisposition':{'type':Sequelize[_0x4837('0x2')]},'note':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize['STRING']},'routeid':{'type':Sequelize['INTEGER']},'sipcallid':{'type':Sequelize[_0x4837('0x2')]}};
\ No newline at end of file
index 486ff28..84bac10 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f2f=['stack','name','send','index','VoiceCallReport','rawAttributes','fieldName','type','map','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','merge','where','options','includeAll','include','fullname','alias','User','findAll','catch','params','keys','find','create','body','destroy','describe','update','uniqueid','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','offset','undefined','limit','count','set','Content-Range','apply','reject','save','then'];(function(_0x291aaf,_0x4c6d8d){var _0x5571e6=function(_0x1b4fec){while(--_0x1b4fec){_0x291aaf['push'](_0x291aaf['shift']());}};_0x5571e6(++_0x4c6d8d);}(_0x5f2f,0x73));var _0xf5f2=function(_0x341172,_0x34bdd9){_0x341172=_0x341172-0x0;var _0x58cf11=_0x5f2f[_0x341172];return _0x58cf11;};'use strict';var emlformat=require(_0xf5f2('0x0'));var rimraf=require(_0xf5f2('0x1'));var zipdir=require(_0xf5f2('0x2'));var jsonpatch=require(_0xf5f2('0x3'));var rp=require(_0xf5f2('0x4'));var moment=require(_0xf5f2('0x5'));var BPromise=require(_0xf5f2('0x6'));var Mustache=require(_0xf5f2('0x7'));var util=require('util');var path=require('path');var sox=require(_0xf5f2('0x8'));var csv=require(_0xf5f2('0x9'));var ejs=require(_0xf5f2('0xa'));var fs=require('fs');var fs_extra=require(_0xf5f2('0xb'));var _=require(_0xf5f2('0xc'));var squel=require(_0xf5f2('0xd'));var crypto=require('crypto');var jsforce=require(_0xf5f2('0xe'));var deskjs=require(_0xf5f2('0xf'));var toCsv=require(_0xf5f2('0x9'));var querystring=require('querystring');var Papa=require(_0xf5f2('0x10'));var Redis=require(_0xf5f2('0x11'));var authService=require(_0xf5f2('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0xf5f2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xf5f2('0x14'));var utils=require(_0xf5f2('0x15'));var config=require('../../config/environment');var licenseUtil=require(_0xf5f2('0x16'));var db=require(_0xf5f2('0x17'))['db'];function respondWithStatusCode(_0x331482,_0x3f2997){_0x3f2997=_0x3f2997||0xcc;return function(_0x59bb6c){if(_0x59bb6c){return _0x331482[_0xf5f2('0x18')](_0x3f2997);}return _0x331482['status'](_0x3f2997)[_0xf5f2('0x19')]();};}function respondWithResult(_0xea612c,_0x269909){_0x269909=_0x269909||0xc8;return function(_0x1c1a5c){if(_0x1c1a5c){return _0xea612c[_0xf5f2('0x1a')](_0x269909)['json'](_0x1c1a5c);}};}function respondWithFilteredResult(_0xafe430,_0x286197){return function(_0x17d656){if(_0x17d656){var _0x1b6dd2=typeof _0x286197[_0xf5f2('0x1b')]===_0xf5f2('0x1c')&&typeof _0x286197[_0xf5f2('0x1d')]===_0xf5f2('0x1c');var _0x11f702=_0x17d656[_0xf5f2('0x1e')];var _0x20fccd=_0x1b6dd2?0x0:_0x286197[_0xf5f2('0x1b')];var _0x4ff59b=_0x1b6dd2?_0x17d656[_0xf5f2('0x1e')]:_0x286197[_0xf5f2('0x1b')]+_0x286197[_0xf5f2('0x1d')];var _0x1bf655;if(_0x4ff59b>=_0x11f702){_0x4ff59b=_0x11f702;_0x1bf655=0xc8;}else{_0x1bf655=0xce;}_0xafe430['status'](_0x1bf655);return _0xafe430[_0xf5f2('0x1f')](_0xf5f2('0x20'),_0x20fccd+'-'+_0x4ff59b+'/'+_0x11f702)['json'](_0x17d656);}return null;};}function patchUpdates(_0x47acfc){return function(_0x2d2805){try{jsonpatch[_0xf5f2('0x21')](_0x2d2805,_0x47acfc,!![]);}catch(_0x4ae323){return BPromise[_0xf5f2('0x22')](_0x4ae323);}return _0x2d2805[_0xf5f2('0x23')]();};}function saveUpdates(_0x39e44a,_0x39c024){return function(_0x36f1cb){if(_0x36f1cb){return _0x36f1cb['update'](_0x39e44a)[_0xf5f2('0x24')](function(_0x4669a6){return _0x4669a6;});}return null;};}function removeEntity(_0x4e8bda,_0x2833fe){return function(_0x287ad5){if(_0x287ad5){return _0x287ad5['destroy']()['then'](function(){_0x4e8bda[_0xf5f2('0x1a')](0xcc)[_0xf5f2('0x19')]();});}};}function handleEntityNotFound(_0x13da6f,_0x1a5bb3){return function(_0xf6c58d){if(!_0xf6c58d){_0x13da6f[_0xf5f2('0x18')](0x194);}return _0xf6c58d;};}function handleError(_0x13a3be,_0x281ec8){_0x281ec8=_0x281ec8||0x1f4;return function(_0x294414){logger['error'](_0x294414[_0xf5f2('0x25')]);if(_0x294414[_0xf5f2('0x26')]){delete _0x294414[_0xf5f2('0x26')];}_0x13a3be[_0xf5f2('0x1a')](_0x281ec8)[_0xf5f2('0x27')](_0x294414);};}exports[_0xf5f2('0x28')]=function(_0x5b6672,_0x53cb96){var _0x22c826={},_0x14c829={},_0x11c771={'count':0x0,'rows':[]};var _0x5027ab=_['map'](db[_0xf5f2('0x29')][_0xf5f2('0x2a')],function(_0x17394a){return{'name':_0x17394a[_0xf5f2('0x2b')],'type':_0x17394a[_0xf5f2('0x2c')]['key']};});_0x14c829['model']=_[_0xf5f2('0x2d')](_0x5027ab,'name');_0x14c829[_0xf5f2('0x2e')]=_['keys'](_0x5b6672[_0xf5f2('0x2e')]);_0x14c829[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],_0x14c829[_0xf5f2('0x2e')]);_0x22c826[_0xf5f2('0x32')]=_[_0xf5f2('0x30')](_0x14c829[_0xf5f2('0x31')],qs['fields'](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x33')]));_0x22c826[_0xf5f2('0x32')]=_0x22c826[_0xf5f2('0x32')][_0xf5f2('0x34')]?_0x22c826[_0xf5f2('0x32')]:_0x14c829[_0xf5f2('0x31')];if(!_0x5b6672['query'][_0xf5f2('0x35')](_0xf5f2('0x36'))){_0x22c826['limit']=qs[_0xf5f2('0x1d')](_0x5b6672['query'][_0xf5f2('0x1d')]);_0x22c826[_0xf5f2('0x1b')]=qs[_0xf5f2('0x1b')](_0x5b6672[_0xf5f2('0x2e')]['offset']);}_0x22c826['order']=qs[_0xf5f2('0x37')](_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x37')]);_0x22c826['where']=qs[_0xf5f2('0x2f')](_['pick'](_0x5b6672[_0xf5f2('0x2e')],_0x14c829['filters']),_0x5027ab);if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]){_0x22c826['where']=_[_0xf5f2('0x39')](_0x22c826[_0xf5f2('0x3a')],{'$or':_[_0xf5f2('0x2d')](_0x5027ab,function(_0x35f738){if(_0x35f738['type']!=='VIRTUAL'){var _0x3d328f={};_0x3d328f[_0x35f738[_0xf5f2('0x26')]]={'$like':'%'+_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x38')]+'%'};return _0x3d328f;}})});}_0x22c826=_[_0xf5f2('0x39')]({},_0x22c826,_0x5b6672[_0xf5f2('0x3b')]);var _0x2bc20e={'where':_0x22c826['where']};return db[_0xf5f2('0x29')][_0xf5f2('0x1e')](_0x2bc20e)['then'](function(_0xc6a1ae){_0x11c771[_0xf5f2('0x1e')]=_0xc6a1ae;if(_0x5b6672[_0xf5f2('0x2e')][_0xf5f2('0x3c')]){_0x22c826[_0xf5f2('0x3d')]=[{'attributes':['id',_0xf5f2('0x26'),_0xf5f2('0x3e'),_0xf5f2('0x3f')],'model':db['User'],'as':_0xf5f2('0x40')}];}return db[_0xf5f2('0x29')][_0xf5f2('0x41')](_0x22c826);})['then'](function(_0x509dbc){_0x11c771['rows']=_0x509dbc;return _0x11c771;})[_0xf5f2('0x24')](respondWithFilteredResult(_0x53cb96,_0x22c826))[_0xf5f2('0x42')](handleError(_0x53cb96,null));};exports['show']=function(_0x106272,_0xeed03d){var _0x28e33f={'raw':!![],'where':{'id':_0x106272[_0xf5f2('0x43')]['id']}},_0x31f86c={};_0x31f86c[_0xf5f2('0x31')]=_[_0xf5f2('0x44')](db[_0xf5f2('0x29')][_0xf5f2('0x2a')]);_0x31f86c[_0xf5f2('0x2e')]=_[_0xf5f2('0x44')](_0x106272[_0xf5f2('0x2e')]);_0x31f86c[_0xf5f2('0x2f')]=_[_0xf5f2('0x30')](_0x31f86c['model'],_0x31f86c[_0xf5f2('0x2e')]);_0x28e33f['attributes']=_[_0xf5f2('0x30')](_0x31f86c[_0xf5f2('0x31')],qs[_0xf5f2('0x33')](_0x106272[_0xf5f2('0x2e')][_0xf5f2('0x33')]));_0x28e33f[_0xf5f2('0x32')]=_0x28e33f['attributes'][_0xf5f2('0x34')]?_0x28e33f[_0xf5f2('0x32')]:_0x31f86c[_0xf5f2('0x31')];if(_0x106272[_0xf5f2('0x2e')][_0xf5f2('0x3c')]){_0x28e33f[_0xf5f2('0x3d')]=[{'all':!![]}];}_0x28e33f=_[_0xf5f2('0x39')]({},_0x28e33f,_0x106272[_0xf5f2('0x3b')]);return db['VoiceCallReport'][_0xf5f2('0x45')](_0x28e33f)[_0xf5f2('0x24')](handleEntityNotFound(_0xeed03d,null))[_0xf5f2('0x24')](respondWithResult(_0xeed03d,null))['catch'](handleError(_0xeed03d,null));};exports[_0xf5f2('0x46')]=function(_0xc91b64,_0x3179a9){return db['VoiceCallReport']['create'](_0xc91b64[_0xf5f2('0x47')],{})[_0xf5f2('0x24')](respondWithResult(_0x3179a9,0xc9))['catch'](handleError(_0x3179a9,null));};exports[_0xf5f2('0x48')]=function(_0x533cca,_0x740321){return db['VoiceCallReport'][_0xf5f2('0x45')]({'where':{'id':_0x533cca['params']['id']}})[_0xf5f2('0x24')](handleEntityNotFound(_0x740321,null))[_0xf5f2('0x24')](removeEntity(_0x740321,null))[_0xf5f2('0x42')](handleError(_0x740321,null));};exports[_0xf5f2('0x49')]=function(_0x4fa738,_0x3154c1){return db[_0xf5f2('0x29')]['describe']()['then'](respondWithResult(_0x3154c1,null))[_0xf5f2('0x42')](handleError(_0x3154c1,null));};exports[_0xf5f2('0x4a')]=function(_0x57782c,_0x22b645){if(_0x57782c[_0xf5f2('0x47')][_0xf5f2('0x4b')]){delete _0x57782c[_0xf5f2('0x47')]['uniqueid'];}return db['VoiceCallReport'][_0xf5f2('0x45')]({'where':{'uniqueid':_0x57782c[_0xf5f2('0x43')]['id'],'UserId':{'$or':[null,_0x57782c['user']['id']]}}})[_0xf5f2('0x24')](handleEntityNotFound(_0x22b645,null))[_0xf5f2('0x24')](saveUpdates(_0x57782c[_0xf5f2('0x47')],null))[_0xf5f2('0x24')](respondWithResult(_0x22b645,null))[_0xf5f2('0x42')](handleError(_0x22b645,null));};
\ No newline at end of file
+var _0xdb28=['options','includeAll','fullname','User','findAll','rows','catch','show','params','rawAttributes','intersection','include','find','create','destroy','describe','body','uniqueid','user','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','path','to-csv','ejs','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','count','limit','set','apply','save','update','then','sendStatus','error','stack','name','send','index','VoiceCallReport','fieldName','type','key','map','query','keys','model','fields','attributes','length','nolimit','order','sort','filters','filter','where','VIRTUAL','merge'];(function(_0x3fa453,_0x1e87ab){var _0x5643b8=function(_0x4863ea){while(--_0x4863ea){_0x3fa453['push'](_0x3fa453['shift']());}};_0x5643b8(++_0x1e87ab);}(_0xdb28,0x106));var _0x8db2=function(_0x1e4f26,_0x5b0360){_0x1e4f26=_0x1e4f26-0x0;var _0x36ad0f=_0xdb28[_0x1e4f26];return _0x36ad0f;};'use strict';var emlformat=require(_0x8db2('0x0'));var rimraf=require(_0x8db2('0x1'));var zipdir=require(_0x8db2('0x2'));var jsonpatch=require(_0x8db2('0x3'));var rp=require('request-promise');var moment=require(_0x8db2('0x4'));var BPromise=require(_0x8db2('0x5'));var Mustache=require(_0x8db2('0x6'));var util=require(_0x8db2('0x7'));var path=require(_0x8db2('0x8'));var sox=require('sox');var csv=require(_0x8db2('0x9'));var ejs=require(_0x8db2('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x8db2('0xb'));var crypto=require(_0x8db2('0xc'));var jsforce=require(_0x8db2('0xd'));var deskjs=require(_0x8db2('0xe'));var toCsv=require(_0x8db2('0x9'));var querystring=require(_0x8db2('0xf'));var Papa=require(_0x8db2('0x10'));var Redis=require('ioredis');var authService=require(_0x8db2('0x11'));var qs=require(_0x8db2('0x12'));var as=require(_0x8db2('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x8db2('0x14'))(_0x8db2('0x15'));var utils=require('../../config/utils');var config=require(_0x8db2('0x16'));var licenseUtil=require(_0x8db2('0x17'));var db=require(_0x8db2('0x18'))['db'];function respondWithStatusCode(_0x204f49,_0x37d017){_0x37d017=_0x37d017||0xcc;return function(_0x559fb1){if(_0x559fb1){return _0x204f49['sendStatus'](_0x37d017);}return _0x204f49[_0x8db2('0x19')](_0x37d017)[_0x8db2('0x1a')]();};}function respondWithResult(_0x350d61,_0x1d6a15){_0x1d6a15=_0x1d6a15||0xc8;return function(_0x227355){if(_0x227355){return _0x350d61[_0x8db2('0x19')](_0x1d6a15)[_0x8db2('0x1b')](_0x227355);}};}function respondWithFilteredResult(_0x3c96a7,_0x131252){return function(_0x16c8c2){if(_0x16c8c2){var _0x5489a9=typeof _0x131252[_0x8db2('0x1c')]===_0x8db2('0x1d')&&typeof _0x131252['limit']===_0x8db2('0x1d');var _0x44957d=_0x16c8c2[_0x8db2('0x1e')];var _0x3fddc2=_0x5489a9?0x0:_0x131252[_0x8db2('0x1c')];var _0x46ce14=_0x5489a9?_0x16c8c2['count']:_0x131252['offset']+_0x131252[_0x8db2('0x1f')];var _0x104e33;if(_0x46ce14>=_0x44957d){_0x46ce14=_0x44957d;_0x104e33=0xc8;}else{_0x104e33=0xce;}_0x3c96a7[_0x8db2('0x19')](_0x104e33);return _0x3c96a7[_0x8db2('0x20')]('Content-Range',_0x3fddc2+'-'+_0x46ce14+'/'+_0x44957d)[_0x8db2('0x1b')](_0x16c8c2);}return null;};}function patchUpdates(_0x36a9ff){return function(_0x260940){try{jsonpatch[_0x8db2('0x21')](_0x260940,_0x36a9ff,!![]);}catch(_0x3dbe8e){return BPromise['reject'](_0x3dbe8e);}return _0x260940[_0x8db2('0x22')]();};}function saveUpdates(_0x3e30e6,_0x18f69c){return function(_0x125be2){if(_0x125be2){return _0x125be2[_0x8db2('0x23')](_0x3e30e6)[_0x8db2('0x24')](function(_0x796ec1){return _0x796ec1;});}return null;};}function removeEntity(_0x5c6614,_0x256202){return function(_0x4f6516){if(_0x4f6516){return _0x4f6516['destroy']()['then'](function(){_0x5c6614['status'](0xcc)[_0x8db2('0x1a')]();});}};}function handleEntityNotFound(_0x29b5cd,_0x3be281){return function(_0x2baed0){if(!_0x2baed0){_0x29b5cd[_0x8db2('0x25')](0x194);}return _0x2baed0;};}function handleError(_0x8d4f54,_0x58cd9d){_0x58cd9d=_0x58cd9d||0x1f4;return function(_0x3544ba){logger[_0x8db2('0x26')](_0x3544ba[_0x8db2('0x27')]);if(_0x3544ba[_0x8db2('0x28')]){delete _0x3544ba['name'];}_0x8d4f54[_0x8db2('0x19')](_0x58cd9d)[_0x8db2('0x29')](_0x3544ba);};}exports[_0x8db2('0x2a')]=function(_0x1687ed,_0xbe5ece){var _0x21bae5={},_0xa54ea3={},_0x3124d5={'count':0x0,'rows':[]};var _0xbc5366=_['map'](db[_0x8db2('0x2b')]['rawAttributes'],function(_0x59cb77){return{'name':_0x59cb77[_0x8db2('0x2c')],'type':_0x59cb77[_0x8db2('0x2d')][_0x8db2('0x2e')]};});_0xa54ea3['model']=_[_0x8db2('0x2f')](_0xbc5366,'name');_0xa54ea3[_0x8db2('0x30')]=_[_0x8db2('0x31')](_0x1687ed[_0x8db2('0x30')]);_0xa54ea3['filters']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],_0xa54ea3[_0x8db2('0x30')]);_0x21bae5['attributes']=_['intersection'](_0xa54ea3[_0x8db2('0x32')],qs[_0x8db2('0x33')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x33')]));_0x21bae5[_0x8db2('0x34')]=_0x21bae5[_0x8db2('0x34')][_0x8db2('0x35')]?_0x21bae5[_0x8db2('0x34')]:_0xa54ea3[_0x8db2('0x32')];if(!_0x1687ed[_0x8db2('0x30')]['hasOwnProperty'](_0x8db2('0x36'))){_0x21bae5[_0x8db2('0x1f')]=qs['limit'](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x1f')]);_0x21bae5['offset']=qs['offset'](_0x1687ed[_0x8db2('0x30')]['offset']);}_0x21bae5[_0x8db2('0x37')]=qs[_0x8db2('0x38')](_0x1687ed[_0x8db2('0x30')][_0x8db2('0x38')]);_0x21bae5['where']=qs[_0x8db2('0x39')](_['pick'](_0x1687ed[_0x8db2('0x30')],_0xa54ea3[_0x8db2('0x39')]),_0xbc5366);if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]){_0x21bae5['where']=_['merge'](_0x21bae5[_0x8db2('0x3b')],{'$or':_[_0x8db2('0x2f')](_0xbc5366,function(_0x5dc2b4){if(_0x5dc2b4[_0x8db2('0x2d')]!==_0x8db2('0x3c')){var _0x656dd2={};_0x656dd2[_0x5dc2b4['name']]={'$like':'%'+_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3a')]+'%'};return _0x656dd2;}})});}_0x21bae5=_[_0x8db2('0x3d')]({},_0x21bae5,_0x1687ed[_0x8db2('0x3e')]);var _0x2e6f0c={'where':_0x21bae5[_0x8db2('0x3b')]};return db[_0x8db2('0x2b')][_0x8db2('0x1e')](_0x2e6f0c)[_0x8db2('0x24')](function(_0x63c561){_0x3124d5[_0x8db2('0x1e')]=_0x63c561;if(_0x1687ed[_0x8db2('0x30')][_0x8db2('0x3f')]){_0x21bae5['include']=[{'attributes':['id',_0x8db2('0x28'),_0x8db2('0x40'),'alias'],'model':db['User'],'as':_0x8db2('0x41')}];}return db['VoiceCallReport'][_0x8db2('0x42')](_0x21bae5);})[_0x8db2('0x24')](function(_0x313130){_0x3124d5[_0x8db2('0x43')]=_0x313130;return _0x3124d5;})[_0x8db2('0x24')](respondWithFilteredResult(_0xbe5ece,_0x21bae5))[_0x8db2('0x44')](handleError(_0xbe5ece,null));};exports[_0x8db2('0x45')]=function(_0x5c97ef,_0x2f86b1){var _0x3d44de={'raw':!![],'where':{'id':_0x5c97ef[_0x8db2('0x46')]['id']}},_0x40c69e={};_0x40c69e['model']=_[_0x8db2('0x31')](db[_0x8db2('0x2b')][_0x8db2('0x47')]);_0x40c69e[_0x8db2('0x30')]=_['keys'](_0x5c97ef[_0x8db2('0x30')]);_0x40c69e['filters']=_[_0x8db2('0x48')](_0x40c69e[_0x8db2('0x32')],_0x40c69e[_0x8db2('0x30')]);_0x3d44de['attributes']=_['intersection'](_0x40c69e[_0x8db2('0x32')],qs['fields'](_0x5c97ef[_0x8db2('0x30')][_0x8db2('0x33')]));_0x3d44de[_0x8db2('0x34')]=_0x3d44de[_0x8db2('0x34')][_0x8db2('0x35')]?_0x3d44de[_0x8db2('0x34')]:_0x40c69e[_0x8db2('0x32')];if(_0x5c97ef[_0x8db2('0x30')][_0x8db2('0x3f')]){_0x3d44de[_0x8db2('0x49')]=[{'all':!![]}];}_0x3d44de=_[_0x8db2('0x3d')]({},_0x3d44de,_0x5c97ef[_0x8db2('0x3e')]);return db['VoiceCallReport'][_0x8db2('0x4a')](_0x3d44de)[_0x8db2('0x24')](handleEntityNotFound(_0x2f86b1,null))[_0x8db2('0x24')](respondWithResult(_0x2f86b1,null))[_0x8db2('0x44')](handleError(_0x2f86b1,null));};exports['create']=function(_0x4ffd9d,_0x11c224){return db[_0x8db2('0x2b')][_0x8db2('0x4b')](_0x4ffd9d['body'],{})['then'](respondWithResult(_0x11c224,0xc9))['catch'](handleError(_0x11c224,null));};exports[_0x8db2('0x4c')]=function(_0x368c37,_0x55c7dd){return db[_0x8db2('0x2b')][_0x8db2('0x4a')]({'where':{'id':_0x368c37[_0x8db2('0x46')]['id']}})[_0x8db2('0x24')](handleEntityNotFound(_0x55c7dd,null))['then'](removeEntity(_0x55c7dd,null))['catch'](handleError(_0x55c7dd,null));};exports[_0x8db2('0x4d')]=function(_0x18c6ef,_0x2908e4){return db[_0x8db2('0x2b')][_0x8db2('0x4d')]()[_0x8db2('0x24')](respondWithResult(_0x2908e4,null))[_0x8db2('0x44')](handleError(_0x2908e4,null));};exports[_0x8db2('0x23')]=function(_0x4187d6,_0x426ae0){if(_0x4187d6[_0x8db2('0x4e')][_0x8db2('0x4f')]){delete _0x4187d6[_0x8db2('0x4e')][_0x8db2('0x4f')];}return db[_0x8db2('0x2b')]['find']({'where':{'uniqueid':_0x4187d6[_0x8db2('0x46')]['id'],'UserId':{'$or':[null,_0x4187d6[_0x8db2('0x50')]['id']]}}})['then'](handleEntityNotFound(_0x426ae0,null))[_0x8db2('0x24')](saveUpdates(_0x4187d6[_0x8db2('0x4e')],null))[_0x8db2('0x24')](respondWithResult(_0x426ae0,null))['catch'](handleError(_0x426ae0,null));};
\ No newline at end of file
index e454f57..e11c6be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2320=['path','rimraf','../../config/environment','./voiceCallReport.attributes','VoiceCallReport','report_call','uniqueid','lodash','util','../../config/logger','api','moment','bluebird','request-promise'];(function(_0x84e5fa,_0x48904f){var _0x525805=function(_0x5559cf){while(--_0x5559cf){_0x84e5fa['push'](_0x84e5fa['shift']());}};_0x525805(++_0x48904f);}(_0x2320,0x13b));var _0x0232=function(_0x3a763c,_0x5a3589){_0x3a763c=_0x3a763c-0x0;var _0x3d8616=_0x2320[_0x3a763c];return _0x3d8616;};'use strict';var _=require(_0x0232('0x0'));var util=require(_0x0232('0x1'));var logger=require(_0x0232('0x2'))(_0x0232('0x3'));var moment=require(_0x0232('0x4'));var BPromise=require(_0x0232('0x5'));var rp=require(_0x0232('0x6'));var fs=require('fs');var path=require(_0x0232('0x7'));var rimraf=require(_0x0232('0x8'));var config=require(_0x0232('0x9'));var attributes=require(_0x0232('0xa'));module['exports']=function(_0x2fb1a5,_0x49ec60){return _0x2fb1a5['define'](_0x0232('0xb'),attributes,{'tableName':_0x0232('0xc'),'paranoid':![],'indexes':[{'fields':[_0x0232('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xabfb=['../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','exports','define','VoiceCallReport','report_call','uniqueid','lodash','util'];(function(_0x45e500,_0x1b1055){var _0x1030c1=function(_0x335e3c){while(--_0x335e3c){_0x45e500['push'](_0x45e500['shift']());}};_0x1030c1(++_0x1b1055);}(_0xabfb,0x1a2));var _0xbabf=function(_0x836465,_0x5442ae){_0x836465=_0x836465-0x0;var _0x2150ea=_0xabfb[_0x836465];return _0x2150ea;};'use strict';var _=require(_0xbabf('0x0'));var util=require(_0xbabf('0x1'));var logger=require(_0xbabf('0x2'))(_0xbabf('0x3'));var moment=require(_0xbabf('0x4'));var BPromise=require(_0xbabf('0x5'));var rp=require(_0xbabf('0x6'));var fs=require('fs');var path=require(_0xbabf('0x7'));var rimraf=require(_0xbabf('0x8'));var config=require(_0xbabf('0x9'));var attributes=require('./voiceCallReport.attributes');module[_0xbabf('0xa')]=function(_0x41c019,_0x48fbbe){return _0x41c019[_0xbabf('0xb')](_0xbabf('0xc'),attributes,{'tableName':_0xbabf('0xd'),'paranoid':![],'indexes':[{'fields':[_0xbabf('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
index 6dfbd38..e9d9761 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3249=['code','VoiceCallReport,\x20%s,\x20%s','message','catch','GetVoiceCallReport','VoiceCallReport','findAll','options','raw','attributes','include','map','model','info','CreateVoiceCallReport','create','body','UpdateVoiceCallReport','where','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../config/logger','../../config/environment','jayson/promise','http','then','debug','VoiceCallReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error'];(function(_0x2c8df0,_0x32e64b){var _0x5753b1=function(_0x279686){while(--_0x279686){_0x2c8df0['push'](_0x2c8df0['shift']());}};_0x5753b1(++_0x32e64b);}(_0x3249,0x17c));var _0x9324=function(_0x45d55e,_0x2fede3){_0x45d55e=_0x45d55e-0x0;var _0x29812a=_0x3249[_0x45d55e];return _0x29812a;};'use strict';var _=require(_0x9324('0x0'));var util=require(_0x9324('0x1'));var moment=require(_0x9324('0x2'));var BPromise=require(_0x9324('0x3'));var rs=require(_0x9324('0x4'));var fs=require('fs');var Redis=require(_0x9324('0x5'));var db=require('../../mysqldb')['db'];var utils=require('../../config/utils');var logger=require(_0x9324('0x6'))('rpc');var config=require(_0x9324('0x7'));var jayson=require(_0x9324('0x8'));var client=jayson['client'][_0x9324('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x41ab67,_0x23a28b,_0x257ac1){return new BPromise(function(_0x38e330,_0x1ffb24){return client['request'](_0x41ab67,_0x257ac1)[_0x9324('0xa')](function(_0x39d0d0){logger['info']('VoiceCallReport,\x20%s,\x20%s',_0x23a28b,'request\x20sent');logger[_0x9324('0xb')](_0x9324('0xc'),_0x23a28b,_0x9324('0xd'),JSON[_0x9324('0xe')](_0x39d0d0));if(_0x39d0d0[_0x9324('0xf')]){if(_0x39d0d0[_0x9324('0xf')][_0x9324('0x10')]===0x1f4){logger[_0x9324('0xf')](_0x9324('0x11'),_0x23a28b,_0x39d0d0[_0x9324('0xf')][_0x9324('0x12')]);return _0x1ffb24(_0x39d0d0[_0x9324('0xf')][_0x9324('0x12')]);}logger[_0x9324('0xf')]('VoiceCallReport,\x20%s,\x20%s',_0x23a28b,_0x39d0d0[_0x9324('0xf')]['message']);return _0x38e330(_0x39d0d0['error']['message']);}else{logger['info']('VoiceCallReport,\x20%s,\x20%s',_0x23a28b,_0x9324('0xd'));_0x38e330(_0x39d0d0['result']['message']);}})[_0x9324('0x13')](function(_0x2bb6e2){logger[_0x9324('0xf')](_0x9324('0x11'),_0x23a28b,_0x2bb6e2);_0x1ffb24(_0x2bb6e2);});});}exports[_0x9324('0x14')]=function(_0xa7e573){var _0x1756b6=this;return new Promise(function(_0x41a4c3,_0x51ecfd){return db[_0x9324('0x15')][_0x9324('0x16')]({'raw':_0xa7e573[_0x9324('0x17')]?_0xa7e573[_0x9324('0x17')][_0x9324('0x18')]===undefined?!![]:![]:!![],'where':_0xa7e573['options']?_0xa7e573[_0x9324('0x17')]['where']||null:null,'attributes':_0xa7e573['options']?_0xa7e573['options'][_0x9324('0x19')]||null:null,'limit':_0xa7e573[_0x9324('0x17')]?_0xa7e573[_0x9324('0x17')]['limit']||null:null,'include':_0xa7e573[_0x9324('0x17')]?_0xa7e573[_0x9324('0x17')]['include']?_['map'](_0xa7e573['options'][_0x9324('0x1a')],function(_0x5189ea){return{'model':db[_0x5189ea['model']],'as':_0x5189ea['as'],'attributes':_0x5189ea[_0x9324('0x19')],'include':_0x5189ea[_0x9324('0x1a')]?_[_0x9324('0x1b')](_0x5189ea[_0x9324('0x1a')],function(_0x3e3c2e){return{'model':db[_0x3e3c2e[_0x9324('0x1c')]],'as':_0x3e3c2e['as'],'attributes':_0x3e3c2e[_0x9324('0x19')],'include':_0x3e3c2e[_0x9324('0x1a')]?_[_0x9324('0x1b')](_0x3e3c2e[_0x9324('0x1a')],function(_0x5d5064){return{'model':db[_0x5d5064[_0x9324('0x1c')]],'as':_0x5d5064['as'],'attributes':_0x5d5064[_0x9324('0x19')]};}):[]};}):[]};}):[]:[]})[_0x9324('0xa')](function(_0x18ab10){logger[_0x9324('0x1d')](_0x9324('0x14'),_0xa7e573);logger[_0x9324('0xb')]('GetVoiceCallReport',_0xa7e573,JSON['stringify'](_0x18ab10));_0x41a4c3(_0x18ab10);})[_0x9324('0x13')](function(_0x51d008){logger[_0x9324('0xf')]('GetVoiceCallReport',_0x51d008[_0x9324('0x12')],_0xa7e573);_0x51ecfd(_0x1756b6[_0x9324('0xf')](0x1f4,_0x51d008[_0x9324('0x12')]));});});};exports[_0x9324('0x1e')]=function(_0x556585){var _0x3516ad=this;return new Promise(function(_0xe86496,_0x581457){return db['VoiceCallReport'][_0x9324('0x1f')](_0x556585[_0x9324('0x20')],{'raw':_0x556585[_0x9324('0x17')]?_0x556585[_0x9324('0x17')][_0x9324('0x18')]===undefined?!![]:![]:!![]})['then'](function(_0x52eb80){logger[_0x9324('0x1d')](_0x9324('0x1e'),_0x556585);logger[_0x9324('0xb')](_0x9324('0x1e'),_0x556585,JSON[_0x9324('0xe')](_0x52eb80));_0xe86496(_0x52eb80);})[_0x9324('0x13')](function(_0x108191){logger[_0x9324('0xf')](_0x9324('0x1e'),_0x108191[_0x9324('0x12')],_0x556585);_0x581457(_0x3516ad['error'](0x1f4,_0x108191[_0x9324('0x12')]));});});};exports[_0x9324('0x21')]=function(_0x395280){var _0x13d88f=this;return new Promise(function(_0x5a8a5a,_0x265aed){return db[_0x9324('0x15')]['update'](_0x395280[_0x9324('0x20')],{'raw':_0x395280['options']?_0x395280[_0x9324('0x17')][_0x9324('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x395280[_0x9324('0x17')]?_0x395280[_0x9324('0x17')][_0x9324('0x22')]||null:null,'attributes':_0x395280[_0x9324('0x17')]?_0x395280['options'][_0x9324('0x19')]||null:null,'limit':_0x395280[_0x9324('0x17')]?_0x395280['options'][_0x9324('0x23')]||null:null})['then'](function(_0x1f28a0){logger[_0x9324('0x1d')](_0x9324('0x21'),_0x395280);logger['debug'](_0x9324('0x21'),_0x395280,JSON[_0x9324('0xe')](_0x1f28a0));_0x5a8a5a(_0x1f28a0);})[_0x9324('0x13')](function(_0x1445d9){logger['error'](_0x9324('0x21'),_0x1445d9[_0x9324('0x12')],_0x395280);_0x265aed(_0x13d88f[_0x9324('0xf')](0x1f4,_0x1445d9[_0x9324('0x12')]));});});};
\ No newline at end of file
+var _0xf33b=['VoiceCallReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetVoiceCallReport','VoiceCallReport','findAll','options','raw','where','attributes','include','map','model','catch','CreateVoiceCallReport','create','body','UpdateVoiceCallReport','update','limit','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','client','then','info','VoiceCallReport,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x44b346,_0xeb097d){var _0x1c2f2b=function(_0x4e1f23){while(--_0x4e1f23){_0x44b346['push'](_0x44b346['shift']());}};_0x1c2f2b(++_0xeb097d);}(_0xf33b,0x198));var _0xbf33=function(_0x3e2fcf,_0x579110){_0x3e2fcf=_0x3e2fcf-0x0;var _0x497db7=_0xf33b[_0x3e2fcf];return _0x497db7;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0xbf33('0x0'));var BPromise=require(_0xbf33('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xbf33('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0xbf33('0x3'));var logger=require(_0xbf33('0x4'))('rpc');var config=require(_0xbf33('0x5'));var jayson=require('jayson/promise');var client=jayson[_0xbf33('0x6')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3e6174,_0x12fbaf,_0x54293b){return new BPromise(function(_0x578b72,_0x862512){return client['request'](_0x3e6174,_0x54293b)[_0xbf33('0x7')](function(_0x3508a3){logger[_0xbf33('0x8')](_0xbf33('0x9'),_0x12fbaf,_0xbf33('0xa'));logger[_0xbf33('0xb')](_0xbf33('0xc'),_0x12fbaf,_0xbf33('0xa'),JSON[_0xbf33('0xd')](_0x3508a3));if(_0x3508a3[_0xbf33('0xe')]){if(_0x3508a3[_0xbf33('0xe')][_0xbf33('0xf')]===0x1f4){logger[_0xbf33('0xe')]('VoiceCallReport,\x20%s,\x20%s',_0x12fbaf,_0x3508a3[_0xbf33('0xe')][_0xbf33('0x10')]);return _0x862512(_0x3508a3[_0xbf33('0xe')]['message']);}logger[_0xbf33('0xe')](_0xbf33('0x9'),_0x12fbaf,_0x3508a3[_0xbf33('0xe')][_0xbf33('0x10')]);return _0x578b72(_0x3508a3[_0xbf33('0xe')]['message']);}else{logger[_0xbf33('0x8')](_0xbf33('0x9'),_0x12fbaf,_0xbf33('0xa'));_0x578b72(_0x3508a3[_0xbf33('0x11')][_0xbf33('0x10')]);}})['catch'](function(_0x1a25e5){logger[_0xbf33('0xe')](_0xbf33('0x9'),_0x12fbaf,_0x1a25e5);_0x862512(_0x1a25e5);});});}exports[_0xbf33('0x12')]=function(_0x4caf1f){var _0x2bb35b=this;return new Promise(function(_0x1dd305,_0x24a867){return db[_0xbf33('0x13')][_0xbf33('0x14')]({'raw':_0x4caf1f[_0xbf33('0x15')]?_0x4caf1f[_0xbf33('0x15')][_0xbf33('0x16')]===undefined?!![]:![]:!![],'where':_0x4caf1f[_0xbf33('0x15')]?_0x4caf1f[_0xbf33('0x15')][_0xbf33('0x17')]||null:null,'attributes':_0x4caf1f['options']?_0x4caf1f[_0xbf33('0x15')][_0xbf33('0x18')]||null:null,'limit':_0x4caf1f[_0xbf33('0x15')]?_0x4caf1f[_0xbf33('0x15')]['limit']||null:null,'include':_0x4caf1f[_0xbf33('0x15')]?_0x4caf1f['options'][_0xbf33('0x19')]?_[_0xbf33('0x1a')](_0x4caf1f[_0xbf33('0x15')][_0xbf33('0x19')],function(_0x595a6b){return{'model':db[_0x595a6b[_0xbf33('0x1b')]],'as':_0x595a6b['as'],'attributes':_0x595a6b[_0xbf33('0x18')],'include':_0x595a6b[_0xbf33('0x19')]?_['map'](_0x595a6b['include'],function(_0x392cc9){return{'model':db[_0x392cc9[_0xbf33('0x1b')]],'as':_0x392cc9['as'],'attributes':_0x392cc9['attributes'],'include':_0x392cc9[_0xbf33('0x19')]?_[_0xbf33('0x1a')](_0x392cc9[_0xbf33('0x19')],function(_0x51d6e6){return{'model':db[_0x51d6e6['model']],'as':_0x51d6e6['as'],'attributes':_0x51d6e6[_0xbf33('0x18')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xd2ca46){logger[_0xbf33('0x8')](_0xbf33('0x12'),_0x4caf1f);logger[_0xbf33('0xb')](_0xbf33('0x12'),_0x4caf1f,JSON['stringify'](_0xd2ca46));_0x1dd305(_0xd2ca46);})[_0xbf33('0x1c')](function(_0x2d4bb7){logger[_0xbf33('0xe')](_0xbf33('0x12'),_0x2d4bb7[_0xbf33('0x10')],_0x4caf1f);_0x24a867(_0x2bb35b[_0xbf33('0xe')](0x1f4,_0x2d4bb7[_0xbf33('0x10')]));});});};exports[_0xbf33('0x1d')]=function(_0x2d8ec3){var _0x5a2866=this;return new Promise(function(_0x2bc387,_0x5d2e53){return db['VoiceCallReport'][_0xbf33('0x1e')](_0x2d8ec3[_0xbf33('0x1f')],{'raw':_0x2d8ec3[_0xbf33('0x15')]?_0x2d8ec3[_0xbf33('0x15')][_0xbf33('0x16')]===undefined?!![]:![]:!![]})[_0xbf33('0x7')](function(_0x508ee0){logger['info']('CreateVoiceCallReport',_0x2d8ec3);logger[_0xbf33('0xb')](_0xbf33('0x1d'),_0x2d8ec3,JSON['stringify'](_0x508ee0));_0x2bc387(_0x508ee0);})[_0xbf33('0x1c')](function(_0x27175c){logger[_0xbf33('0xe')](_0xbf33('0x1d'),_0x27175c[_0xbf33('0x10')],_0x2d8ec3);_0x5d2e53(_0x5a2866['error'](0x1f4,_0x27175c[_0xbf33('0x10')]));});});};exports[_0xbf33('0x20')]=function(_0x1495ba){var _0x14240d=this;return new Promise(function(_0xf18609,_0xba6454){return db[_0xbf33('0x13')][_0xbf33('0x21')](_0x1495ba[_0xbf33('0x1f')],{'raw':_0x1495ba[_0xbf33('0x15')]?_0x1495ba['options'][_0xbf33('0x16')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1495ba[_0xbf33('0x15')]?_0x1495ba[_0xbf33('0x15')][_0xbf33('0x17')]||null:null,'attributes':_0x1495ba[_0xbf33('0x15')]?_0x1495ba['options'][_0xbf33('0x18')]||null:null,'limit':_0x1495ba[_0xbf33('0x15')]?_0x1495ba[_0xbf33('0x15')][_0xbf33('0x22')]||null:null})[_0xbf33('0x7')](function(_0x202dea){logger[_0xbf33('0x8')](_0xbf33('0x20'),_0x1495ba);logger[_0xbf33('0xb')](_0xbf33('0x20'),_0x1495ba,JSON[_0xbf33('0xd')](_0x202dea));_0xf18609(_0x202dea);})['catch'](function(_0x48a439){logger['error']('UpdateVoiceCallReport',_0x48a439[_0xbf33('0x10')],_0x1495ba);_0xba6454(_0x14240d[_0xbf33('0xe')](0x1f4,_0x48a439[_0xbf33('0x10')]));});});};
\ No newline at end of file
index 2f99d67..0cc9e7f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe495=['destroy','exports','multer','path','connect-timeout','Router','fs-extra','../../components/auth/service','../../config/environment','./voiceChanSpy.controller','get','isAuthenticated','index','show','post','put','update','delete'];(function(_0x340380,_0x4bd2a8){var _0x49ce1c=function(_0x4cb9e2){while(--_0x4cb9e2){_0x340380['push'](_0x340380['shift']());}};_0x49ce1c(++_0x4bd2a8);}(_0xe495,0xfe));var _0x5e49=function(_0x599f41,_0x4db732){_0x599f41=_0x599f41-0x0;var _0x2e4d58=_0xe495[_0x599f41];return _0x2e4d58;};'use strict';var multer=require(_0x5e49('0x0'));var util=require('util');var path=require(_0x5e49('0x1'));var timeout=require(_0x5e49('0x2'));var express=require('express');var router=express[_0x5e49('0x3')]();var fs_extra=require(_0x5e49('0x4'));var auth=require(_0x5e49('0x5'));var interaction=require('../../components/interaction/service');var config=require(_0x5e49('0x6'));var controller=require(_0x5e49('0x7'));router[_0x5e49('0x8')]('/',auth[_0x5e49('0x9')](),controller[_0x5e49('0xa')]);router[_0x5e49('0x8')]('/:id',auth['isAuthenticated'](),controller[_0x5e49('0xb')]);router[_0x5e49('0xc')]('/',auth['isAuthenticated'](),controller['create']);router[_0x5e49('0xd')]('/:id',auth[_0x5e49('0x9')](),controller[_0x5e49('0xe')]);router[_0x5e49('0xf')]('/:id',auth[_0x5e49('0x9')](),controller[_0x5e49('0x10')]);module[_0x5e49('0x11')]=router;
\ No newline at end of file
+var _0x1019=['update','delete','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','index','/:id','isAuthenticated','show','post','create','put'];(function(_0x3a081b,_0x516437){var _0xb166c4=function(_0x22bc5d){while(--_0x22bc5d){_0x3a081b['push'](_0x3a081b['shift']());}};_0xb166c4(++_0x516437);}(_0x1019,0x17f));var _0x9101=function(_0x4b707f,_0x5e009d){_0x4b707f=_0x4b707f-0x0;var _0x1aad12=_0x1019[_0x4b707f];return _0x1aad12;};'use strict';var multer=require(_0x9101('0x0'));var util=require(_0x9101('0x1'));var path=require(_0x9101('0x2'));var timeout=require('connect-timeout');var express=require(_0x9101('0x3'));var router=express[_0x9101('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x9101('0x5'));var interaction=require(_0x9101('0x6'));var config=require(_0x9101('0x7'));var controller=require('./voiceChanSpy.controller');router[_0x9101('0x8')]('/',auth['isAuthenticated'](),controller[_0x9101('0x9')]);router[_0x9101('0x8')](_0x9101('0xa'),auth[_0x9101('0xb')](),controller[_0x9101('0xc')]);router[_0x9101('0xd')]('/',auth['isAuthenticated'](),controller[_0x9101('0xe')]);router[_0x9101('0xf')](_0x9101('0xa'),auth['isAuthenticated'](),controller[_0x9101('0x10')]);router[_0x9101('0x11')](_0x9101('0xa'),auth[_0x9101('0xb')](),controller['destroy']);module[_0x9101('0x12')]=router;
\ No newline at end of file
index 409dffa..e35f40e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5f96=['BOOLEAN','sequelize','exports','STRING','name','setDataValue','join','getDataValue','options','split'];(function(_0x26df48,_0x22aa50){var _0x209047=function(_0x1d068b){while(--_0x1d068b){_0x26df48['push'](_0x26df48['shift']());}};_0x209047(++_0x22aa50);}(_0x5f96,0xf1));var _0x65f9=function(_0x2aec52,_0x59d962){_0x2aec52=_0x2aec52-0x0;var _0x3b8835=_0x5f96[_0x2aec52];return _0x3b8835;};'use strict';var Sequelize=require(_0x65f9('0x0'));module[_0x65f9('0x1')]={'name':{'type':Sequelize[_0x65f9('0x2')]},'prefix':{'type':Sequelize[_0x65f9('0x2')],'unique':_0x65f9('0x3'),'allowNull':![]},'options':{'type':Sequelize[_0x65f9('0x2')],'set':function(_0x5912a2){this[_0x65f9('0x4')]('options',_0x5912a2?_0x5912a2[_0x65f9('0x5')](''):[]);},'get':function(){return this[_0x65f9('0x6')](_0x65f9('0x7'))?this[_0x65f9('0x6')](_0x65f9('0x7'))[_0x65f9('0x8')](''):[];}},'auth':{'type':Sequelize[_0x65f9('0x9')],'defaultValue':![]},'password':{'type':Sequelize[_0x65f9('0x2')]},'record':{'type':Sequelize[_0x65f9('0x9')],'defaultValue':![]},'recordingFormat':{'type':Sequelize[_0x65f9('0x2')]},'description':{'type':Sequelize[_0x65f9('0x2')]}};
\ No newline at end of file
+var _0x2cae=['setDataValue','join','getDataValue','options','split','sequelize','exports','name','STRING'];(function(_0x723747,_0x404499){var _0x4b59f8=function(_0x14a83d){while(--_0x14a83d){_0x723747['push'](_0x723747['shift']());}};_0x4b59f8(++_0x404499);}(_0x2cae,0x191));var _0xe2ca=function(_0x202d24,_0x5e8641){_0x202d24=_0x202d24-0x0;var _0x2b3a8e=_0x2cae[_0x202d24];return _0x2b3a8e;};'use strict';var Sequelize=require(_0xe2ca('0x0'));module[_0xe2ca('0x1')]={'name':{'type':Sequelize['STRING']},'prefix':{'type':Sequelize['STRING'],'unique':_0xe2ca('0x2'),'allowNull':![]},'options':{'type':Sequelize[_0xe2ca('0x3')],'set':function(_0x38c18a){this[_0xe2ca('0x4')]('options',_0x38c18a?_0x38c18a[_0xe2ca('0x5')](''):[]);},'get':function(){return this[_0xe2ca('0x6')]('options')?this['getDataValue'](_0xe2ca('0x7'))[_0xe2ca('0x8')](''):[];}},'auth':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'password':{'type':Sequelize[_0xe2ca('0x3')]},'record':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'recordingFormat':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0xe2ca('0x3')]}};
\ No newline at end of file
index 199cd56..d41e0e7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x345e=['filter','VIRTUAL','merge','options','VoiceChanSpy','includeAll','include','findAll','rows','show','params','find','catch','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','userProfileId','autoAssociation','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','ChanSpies','UserProfileResource','error','name','send','index','map','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','order','sort','where','pick'];(function(_0x2416af,_0x360bcc){var _0x418741=function(_0x1fe9cf){while(--_0x1fe9cf){_0x2416af['push'](_0x2416af['shift']());}};_0x418741(++_0x360bcc);}(_0x345e,0x168));var _0xe345=function(_0x326f81,_0x57c9d8){_0x326f81=_0x326f81-0x0;var _0x8a3c6e=_0x345e[_0x326f81];return _0x8a3c6e;};'use strict';var emlformat=require(_0xe345('0x0'));var rimraf=require(_0xe345('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xe345('0x2'));var rp=require(_0xe345('0x3'));var moment=require(_0xe345('0x4'));var BPromise=require(_0xe345('0x5'));var Mustache=require(_0xe345('0x6'));var util=require(_0xe345('0x7'));var path=require(_0xe345('0x8'));var sox=require(_0xe345('0x9'));var csv=require(_0xe345('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xe345('0xb'));var _=require(_0xe345('0xc'));var squel=require(_0xe345('0xd'));var crypto=require(_0xe345('0xe'));var jsforce=require(_0xe345('0xf'));var deskjs=require(_0xe345('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xe345('0x11'));var Redis=require(_0xe345('0x12'));var authService=require(_0xe345('0x13'));var qs=require(_0xe345('0x14'));var as=require(_0xe345('0x15'));var hardwareService=require(_0xe345('0x16'));var logger=require(_0xe345('0x17'))(_0xe345('0x18'));var utils=require(_0xe345('0x19'));var config=require(_0xe345('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0xe345('0x1b'))['db'];function respondWithStatusCode(_0x1a8ced,_0x5a5df4){_0x5a5df4=_0x5a5df4||0xcc;return function(_0x5d9379){if(_0x5d9379){return _0x1a8ced[_0xe345('0x1c')](_0x5a5df4);}return _0x1a8ced['status'](_0x5a5df4)[_0xe345('0x1d')]();};}function respondWithResult(_0x4ee2e9,_0x510923){_0x510923=_0x510923||0xc8;return function(_0x28af76){if(_0x28af76){return _0x4ee2e9[_0xe345('0x1e')](_0x510923)[_0xe345('0x1f')](_0x28af76);}};}function respondWithFilteredResult(_0x60ee31,_0x263ee0){return function(_0x1ce318){if(_0x1ce318){var _0x1d3717=typeof _0x263ee0[_0xe345('0x20')]===_0xe345('0x21')&&typeof _0x263ee0[_0xe345('0x22')]==='undefined';var _0x4f3887=_0x1ce318[_0xe345('0x23')];var _0x21f20a=_0x1d3717?0x0:_0x263ee0[_0xe345('0x20')];var _0x11332c=_0x1d3717?_0x1ce318[_0xe345('0x23')]:_0x263ee0['offset']+_0x263ee0[_0xe345('0x22')];var _0x143856;if(_0x11332c>=_0x4f3887){_0x11332c=_0x4f3887;_0x143856=0xc8;}else{_0x143856=0xce;}_0x60ee31['status'](_0x143856);return _0x60ee31[_0xe345('0x24')](_0xe345('0x25'),_0x21f20a+'-'+_0x11332c+'/'+_0x4f3887)[_0xe345('0x1f')](_0x1ce318);}return null;};}function patchUpdates(_0x6ea93d){return function(_0xe94a03){try{jsonpatch[_0xe345('0x26')](_0xe94a03,_0x6ea93d,!![]);}catch(_0x5a8c9b){return BPromise[_0xe345('0x27')](_0x5a8c9b);}return _0xe94a03['save']();};}function saveUpdates(_0x176e04,_0x5e3308){return function(_0x2d77ff){if(_0x2d77ff){return _0x2d77ff[_0xe345('0x28')](_0x176e04)[_0xe345('0x29')](function(_0x442811){return _0x442811;});}return null;};}function removeEntity(_0x47cb89,_0x5f2641){return function(_0x46f64d){if(_0x46f64d){return _0x46f64d[_0xe345('0x2a')]()['then'](function(){var _0x575c9a=_0x46f64d['get']({'plain':!![]});var _0x3dac93=_0xe345('0x2b');return db[_0xe345('0x2c')]['destroy']({'where':{'type':_0x3dac93,'resourceId':_0x575c9a['id']}})['then'](function(){return _0x46f64d;});})[_0xe345('0x29')](function(){_0x47cb89['status'](0xcc)[_0xe345('0x1d')]();});}};}function handleEntityNotFound(_0x76b74c,_0x4cd00e){return function(_0x517ffa){if(!_0x517ffa){_0x76b74c[_0xe345('0x1c')](0x194);}return _0x517ffa;};}function handleError(_0x5b527a,_0xa1c821){_0xa1c821=_0xa1c821||0x1f4;return function(_0x4aee1f){logger[_0xe345('0x2d')](_0x4aee1f['stack']);if(_0x4aee1f['name']){delete _0x4aee1f[_0xe345('0x2e')];}_0x5b527a[_0xe345('0x1e')](_0xa1c821)[_0xe345('0x2f')](_0x4aee1f);};}exports[_0xe345('0x30')]=function(_0x256585,_0x4c650a){var _0x13a4d4={},_0x34ec29={},_0x246a91={'count':0x0,'rows':[]};var _0x1bb9f7=_[_0xe345('0x31')](db['VoiceChanSpy'][_0xe345('0x32')],function(_0x374349){return{'name':_0x374349['fieldName'],'type':_0x374349[_0xe345('0x33')][_0xe345('0x34')]};});_0x34ec29[_0xe345('0x35')]=_['map'](_0x1bb9f7,'name');_0x34ec29[_0xe345('0x36')]=_[_0xe345('0x37')](_0x256585['query']);_0x34ec29[_0xe345('0x38')]=_[_0xe345('0x39')](_0x34ec29[_0xe345('0x35')],_0x34ec29[_0xe345('0x36')]);_0x13a4d4[_0xe345('0x3a')]=_[_0xe345('0x39')](_0x34ec29[_0xe345('0x35')],qs[_0xe345('0x3b')](_0x256585[_0xe345('0x36')]['fields']));_0x13a4d4[_0xe345('0x3a')]=_0x13a4d4[_0xe345('0x3a')][_0xe345('0x3c')]?_0x13a4d4[_0xe345('0x3a')]:_0x34ec29[_0xe345('0x35')];if(!_0x256585[_0xe345('0x36')]['hasOwnProperty']('nolimit')){_0x13a4d4['limit']=qs[_0xe345('0x22')](_0x256585['query'][_0xe345('0x22')]);_0x13a4d4[_0xe345('0x20')]=qs[_0xe345('0x20')](_0x256585[_0xe345('0x36')]['offset']);}_0x13a4d4[_0xe345('0x3d')]=qs[_0xe345('0x3e')](_0x256585[_0xe345('0x36')]['sort']);_0x13a4d4[_0xe345('0x3f')]=qs[_0xe345('0x38')](_[_0xe345('0x40')](_0x256585['query'],_0x34ec29['filters']),_0x1bb9f7);if(_0x256585[_0xe345('0x36')][_0xe345('0x41')]){_0x13a4d4[_0xe345('0x3f')]=_['merge'](_0x13a4d4['where'],{'$or':_[_0xe345('0x31')](_0x1bb9f7,function(_0x20007e){if(_0x20007e[_0xe345('0x33')]!==_0xe345('0x42')){var _0x3452f9={};_0x3452f9[_0x20007e[_0xe345('0x2e')]]={'$like':'%'+_0x256585[_0xe345('0x36')][_0xe345('0x41')]+'%'};return _0x3452f9;}})});}_0x13a4d4=_[_0xe345('0x43')]({},_0x13a4d4,_0x256585[_0xe345('0x44')]);var _0x4dfb17={'where':_0x13a4d4[_0xe345('0x3f')]};return db[_0xe345('0x45')][_0xe345('0x23')](_0x4dfb17)[_0xe345('0x29')](function(_0x52b848){_0x246a91['count']=_0x52b848;if(_0x256585['query'][_0xe345('0x46')]){_0x13a4d4[_0xe345('0x47')]=[{'all':!![]}];}return db[_0xe345('0x45')][_0xe345('0x48')](_0x13a4d4);})[_0xe345('0x29')](function(_0x7ce549){_0x246a91[_0xe345('0x49')]=_0x7ce549;return _0x246a91;})[_0xe345('0x29')](respondWithFilteredResult(_0x4c650a,_0x13a4d4))['catch'](handleError(_0x4c650a,null));};exports[_0xe345('0x4a')]=function(_0x4704ba,_0x4e8cac){var _0x53dbc7={'raw':![],'where':{'id':_0x4704ba[_0xe345('0x4b')]['id']}},_0x3fa377={};_0x3fa377[_0xe345('0x35')]=_['keys'](db[_0xe345('0x45')][_0xe345('0x32')]);_0x3fa377['query']=_['keys'](_0x4704ba[_0xe345('0x36')]);_0x3fa377[_0xe345('0x38')]=_['intersection'](_0x3fa377['model'],_0x3fa377[_0xe345('0x36')]);_0x53dbc7['attributes']=_[_0xe345('0x39')](_0x3fa377['model'],qs['fields'](_0x4704ba[_0xe345('0x36')][_0xe345('0x3b')]));_0x53dbc7[_0xe345('0x3a')]=_0x53dbc7[_0xe345('0x3a')][_0xe345('0x3c')]?_0x53dbc7[_0xe345('0x3a')]:_0x3fa377[_0xe345('0x35')];if(_0x4704ba[_0xe345('0x36')][_0xe345('0x46')]){_0x53dbc7['include']=[{'all':!![]}];}_0x53dbc7=_['merge']({},_0x53dbc7,_0x4704ba[_0xe345('0x44')]);return db[_0xe345('0x45')][_0xe345('0x4c')](_0x53dbc7)['then'](handleEntityNotFound(_0x4e8cac,null))[_0xe345('0x29')](respondWithResult(_0x4e8cac,null))[_0xe345('0x4d')](handleError(_0x4e8cac,null));};exports[_0xe345('0x4e')]=function(_0x22d1fe,_0x45ef35){return db['VoiceChanSpy']['create'](_0x22d1fe['body'],{})[_0xe345('0x29')](function(_0x1d924e){var _0x6f3a55=_0x22d1fe[_0xe345('0x4f')][_0xe345('0x50')]({'plain':!![]});if(!_0x6f3a55)throw new Error(_0xe345('0x51'));if(_0x6f3a55['role']===_0xe345('0x4f')){var _0x4a9b7f=_0x1d924e[_0xe345('0x50')]({'plain':!![]});var _0x2cac09=_0xe345('0x2b');return db['UserProfileSection'][_0xe345('0x4c')]({'where':{'name':_0x2cac09,'userProfileId':_0x6f3a55[_0xe345('0x52')]},'raw':!![]})['then'](function(_0x349c72){if(_0x349c72&&_0x349c72[_0xe345('0x53')]===0x0){return db[_0xe345('0x2c')]['create']({'name':_0x4a9b7f[_0xe345('0x2e')],'resourceId':_0x4a9b7f['id'],'type':_0x349c72['name'],'sectionId':_0x349c72['id']},{})[_0xe345('0x29')](function(){return _0x1d924e;});}else{return _0x1d924e;}})[_0xe345('0x4d')](function(_0x4e9b9f){logger[_0xe345('0x2d')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4e9b9f);throw _0x4e9b9f;});}return _0x1d924e;})['then'](respondWithResult(_0x45ef35,0xc9))[_0xe345('0x4d')](handleError(_0x45ef35,null));};exports[_0xe345('0x28')]=function(_0x3388d3,_0x5b8e1f){if(_0x3388d3['body']['id']){delete _0x3388d3['body']['id'];}return db[_0xe345('0x45')][_0xe345('0x4c')]({'where':{'id':_0x3388d3['params']['id']}})[_0xe345('0x29')](handleEntityNotFound(_0x5b8e1f,null))[_0xe345('0x29')](saveUpdates(_0x3388d3[_0xe345('0x54')],null))[_0xe345('0x29')](respondWithResult(_0x5b8e1f,null))['catch'](handleError(_0x5b8e1f,null));};exports[_0xe345('0x2a')]=function(_0x2663e7,_0x2333c0){return db['VoiceChanSpy'][_0xe345('0x4c')]({'where':{'id':_0x2663e7[_0xe345('0x4b')]['id']}})[_0xe345('0x29')](handleEntityNotFound(_0x2333c0,null))[_0xe345('0x29')](removeEntity(_0x2333c0,null))[_0xe345('0x4d')](handleError(_0x2333c0,null));};
\ No newline at end of file
+var _0xe7b9=['papaparse','ioredis','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','end','offset','undefined','limit','count','Content-Range','json','apply','reject','save','then','destroy','ChanSpies','UserProfileResource','error','name','status','send','index','map','VoiceChanSpy','fieldName','key','query','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','options','includeAll','include','findAll','rows','catch','show','params','keys','rawAttributes','find','create','body','get','role','UserProfileSection','autoAssociation','update','eml-format','rimraf','zip-dir','moment','bluebird','path','to-csv','lodash','squel','crypto','desk.js','querystring'];(function(_0x27677c,_0x1b73b2){var _0x22fb5c=function(_0x24980c){while(--_0x24980c){_0x27677c['push'](_0x27677c['shift']());}};_0x22fb5c(++_0x1b73b2);}(_0xe7b9,0x170));var _0x9e7b=function(_0x2559ff,_0x343c77){_0x2559ff=_0x2559ff-0x0;var _0x4c4cf7=_0xe7b9[_0x2559ff];return _0x4c4cf7;};'use strict';var emlformat=require(_0x9e7b('0x0'));var rimraf=require(_0x9e7b('0x1'));var zipdir=require(_0x9e7b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x9e7b('0x3'));var BPromise=require(_0x9e7b('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0x9e7b('0x5'));var sox=require('sox');var csv=require(_0x9e7b('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x9e7b('0x7'));var squel=require(_0x9e7b('0x8'));var crypto=require(_0x9e7b('0x9'));var jsforce=require('jsforce');var deskjs=require(_0x9e7b('0xa'));var toCsv=require(_0x9e7b('0x6'));var querystring=require(_0x9e7b('0xb'));var Papa=require(_0x9e7b('0xc'));var Redis=require(_0x9e7b('0xd'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x9e7b('0xe'));var logger=require(_0x9e7b('0xf'))(_0x9e7b('0x10'));var utils=require(_0x9e7b('0x11'));var config=require(_0x9e7b('0x12'));var licenseUtil=require(_0x9e7b('0x13'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x1ab7d0,_0x41cd2c){_0x41cd2c=_0x41cd2c||0xcc;return function(_0x2aca68){if(_0x2aca68){return _0x1ab7d0[_0x9e7b('0x14')](_0x41cd2c);}return _0x1ab7d0['status'](_0x41cd2c)[_0x9e7b('0x15')]();};}function respondWithResult(_0x4cf728,_0x33861f){_0x33861f=_0x33861f||0xc8;return function(_0x33aeaf){if(_0x33aeaf){return _0x4cf728['status'](_0x33861f)['json'](_0x33aeaf);}};}function respondWithFilteredResult(_0x3daf24,_0x310919){return function(_0xfc0ea9){if(_0xfc0ea9){var _0x59b4b3=typeof _0x310919[_0x9e7b('0x16')]===_0x9e7b('0x17')&&typeof _0x310919[_0x9e7b('0x18')]===_0x9e7b('0x17');var _0xddd207=_0xfc0ea9[_0x9e7b('0x19')];var _0x56c1f6=_0x59b4b3?0x0:_0x310919[_0x9e7b('0x16')];var _0x291132=_0x59b4b3?_0xfc0ea9[_0x9e7b('0x19')]:_0x310919[_0x9e7b('0x16')]+_0x310919[_0x9e7b('0x18')];var _0x2733a2;if(_0x291132>=_0xddd207){_0x291132=_0xddd207;_0x2733a2=0xc8;}else{_0x2733a2=0xce;}_0x3daf24['status'](_0x2733a2);return _0x3daf24['set'](_0x9e7b('0x1a'),_0x56c1f6+'-'+_0x291132+'/'+_0xddd207)[_0x9e7b('0x1b')](_0xfc0ea9);}return null;};}function patchUpdates(_0x5712c8){return function(_0x4237c4){try{jsonpatch[_0x9e7b('0x1c')](_0x4237c4,_0x5712c8,!![]);}catch(_0x410f1c){return BPromise[_0x9e7b('0x1d')](_0x410f1c);}return _0x4237c4[_0x9e7b('0x1e')]();};}function saveUpdates(_0x622932,_0x360f48){return function(_0x41b483){if(_0x41b483){return _0x41b483['update'](_0x622932)[_0x9e7b('0x1f')](function(_0x8fa5fa){return _0x8fa5fa;});}return null;};}function removeEntity(_0x316498,_0xebb66a){return function(_0x375a44){if(_0x375a44){return _0x375a44[_0x9e7b('0x20')]()[_0x9e7b('0x1f')](function(){var _0x49a4c5=_0x375a44['get']({'plain':!![]});var _0x2fd138=_0x9e7b('0x21');return db[_0x9e7b('0x22')]['destroy']({'where':{'type':_0x2fd138,'resourceId':_0x49a4c5['id']}})[_0x9e7b('0x1f')](function(){return _0x375a44;});})['then'](function(){_0x316498['status'](0xcc)[_0x9e7b('0x15')]();});}};}function handleEntityNotFound(_0x17292c,_0x32f9a4){return function(_0x30664f){if(!_0x30664f){_0x17292c[_0x9e7b('0x14')](0x194);}return _0x30664f;};}function handleError(_0x920b6f,_0x711d55){_0x711d55=_0x711d55||0x1f4;return function(_0x2d1ce2){logger[_0x9e7b('0x23')](_0x2d1ce2['stack']);if(_0x2d1ce2[_0x9e7b('0x24')]){delete _0x2d1ce2[_0x9e7b('0x24')];}_0x920b6f[_0x9e7b('0x25')](_0x711d55)[_0x9e7b('0x26')](_0x2d1ce2);};}exports[_0x9e7b('0x27')]=function(_0x3dfd0c,_0x4d52b5){var _0x888006={},_0x55d7b1={},_0x356a24={'count':0x0,'rows':[]};var _0x5f0089=_[_0x9e7b('0x28')](db[_0x9e7b('0x29')]['rawAttributes'],function(_0x6a0e11){return{'name':_0x6a0e11[_0x9e7b('0x2a')],'type':_0x6a0e11['type'][_0x9e7b('0x2b')]};});_0x55d7b1['model']=_['map'](_0x5f0089,_0x9e7b('0x24'));_0x55d7b1[_0x9e7b('0x2c')]=_['keys'](_0x3dfd0c[_0x9e7b('0x2c')]);_0x55d7b1['filters']=_['intersection'](_0x55d7b1[_0x9e7b('0x2d')],_0x55d7b1['query']);_0x888006[_0x9e7b('0x2e')]=_[_0x9e7b('0x2f')](_0x55d7b1[_0x9e7b('0x2d')],qs[_0x9e7b('0x30')](_0x3dfd0c[_0x9e7b('0x2c')][_0x9e7b('0x30')]));_0x888006['attributes']=_0x888006['attributes'][_0x9e7b('0x31')]?_0x888006[_0x9e7b('0x2e')]:_0x55d7b1['model'];if(!_0x3dfd0c[_0x9e7b('0x2c')][_0x9e7b('0x32')](_0x9e7b('0x33'))){_0x888006['limit']=qs[_0x9e7b('0x18')](_0x3dfd0c[_0x9e7b('0x2c')][_0x9e7b('0x18')]);_0x888006[_0x9e7b('0x16')]=qs[_0x9e7b('0x16')](_0x3dfd0c[_0x9e7b('0x2c')]['offset']);}_0x888006[_0x9e7b('0x34')]=qs[_0x9e7b('0x35')](_0x3dfd0c[_0x9e7b('0x2c')]['sort']);_0x888006[_0x9e7b('0x36')]=qs['filters'](_['pick'](_0x3dfd0c[_0x9e7b('0x2c')],_0x55d7b1[_0x9e7b('0x37')]),_0x5f0089);if(_0x3dfd0c[_0x9e7b('0x2c')][_0x9e7b('0x38')]){_0x888006[_0x9e7b('0x36')]=_[_0x9e7b('0x39')](_0x888006[_0x9e7b('0x36')],{'$or':_[_0x9e7b('0x28')](_0x5f0089,function(_0x4cba36){if(_0x4cba36['type']!=='VIRTUAL'){var _0x18a2d3={};_0x18a2d3[_0x4cba36[_0x9e7b('0x24')]]={'$like':'%'+_0x3dfd0c[_0x9e7b('0x2c')][_0x9e7b('0x38')]+'%'};return _0x18a2d3;}})});}_0x888006=_[_0x9e7b('0x39')]({},_0x888006,_0x3dfd0c[_0x9e7b('0x3a')]);var _0x396d11={'where':_0x888006[_0x9e7b('0x36')]};return db[_0x9e7b('0x29')][_0x9e7b('0x19')](_0x396d11)[_0x9e7b('0x1f')](function(_0x508af1){_0x356a24[_0x9e7b('0x19')]=_0x508af1;if(_0x3dfd0c[_0x9e7b('0x2c')][_0x9e7b('0x3b')]){_0x888006[_0x9e7b('0x3c')]=[{'all':!![]}];}return db[_0x9e7b('0x29')][_0x9e7b('0x3d')](_0x888006);})[_0x9e7b('0x1f')](function(_0x39dee2){_0x356a24[_0x9e7b('0x3e')]=_0x39dee2;return _0x356a24;})[_0x9e7b('0x1f')](respondWithFilteredResult(_0x4d52b5,_0x888006))[_0x9e7b('0x3f')](handleError(_0x4d52b5,null));};exports[_0x9e7b('0x40')]=function(_0x2c653c,_0x3a946b){var _0x255a06={'raw':![],'where':{'id':_0x2c653c[_0x9e7b('0x41')]['id']}},_0x4e32bc={};_0x4e32bc[_0x9e7b('0x2d')]=_[_0x9e7b('0x42')](db[_0x9e7b('0x29')][_0x9e7b('0x43')]);_0x4e32bc[_0x9e7b('0x2c')]=_[_0x9e7b('0x42')](_0x2c653c[_0x9e7b('0x2c')]);_0x4e32bc[_0x9e7b('0x37')]=_[_0x9e7b('0x2f')](_0x4e32bc[_0x9e7b('0x2d')],_0x4e32bc[_0x9e7b('0x2c')]);_0x255a06[_0x9e7b('0x2e')]=_[_0x9e7b('0x2f')](_0x4e32bc['model'],qs[_0x9e7b('0x30')](_0x2c653c[_0x9e7b('0x2c')][_0x9e7b('0x30')]));_0x255a06[_0x9e7b('0x2e')]=_0x255a06[_0x9e7b('0x2e')][_0x9e7b('0x31')]?_0x255a06[_0x9e7b('0x2e')]:_0x4e32bc['model'];if(_0x2c653c[_0x9e7b('0x2c')][_0x9e7b('0x3b')]){_0x255a06['include']=[{'all':!![]}];}_0x255a06=_[_0x9e7b('0x39')]({},_0x255a06,_0x2c653c[_0x9e7b('0x3a')]);return db[_0x9e7b('0x29')][_0x9e7b('0x44')](_0x255a06)[_0x9e7b('0x1f')](handleEntityNotFound(_0x3a946b,null))[_0x9e7b('0x1f')](respondWithResult(_0x3a946b,null))[_0x9e7b('0x3f')](handleError(_0x3a946b,null));};exports[_0x9e7b('0x45')]=function(_0x1f8a3f,_0x120d75){return db[_0x9e7b('0x29')][_0x9e7b('0x45')](_0x1f8a3f[_0x9e7b('0x46')],{})[_0x9e7b('0x1f')](function(_0x15fcbf){var _0x15d83f=_0x1f8a3f['user'][_0x9e7b('0x47')]({'plain':!![]});if(!_0x15d83f)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x15d83f[_0x9e7b('0x48')]==='user'){var _0x36c875=_0x15fcbf[_0x9e7b('0x47')]({'plain':!![]});var _0x20c99a='ChanSpies';return db[_0x9e7b('0x49')][_0x9e7b('0x44')]({'where':{'name':_0x20c99a,'userProfileId':_0x15d83f['userProfileId']},'raw':!![]})[_0x9e7b('0x1f')](function(_0x1ec7b2){if(_0x1ec7b2&&_0x1ec7b2[_0x9e7b('0x4a')]===0x0){return db['UserProfileResource'][_0x9e7b('0x45')]({'name':_0x36c875[_0x9e7b('0x24')],'resourceId':_0x36c875['id'],'type':_0x1ec7b2[_0x9e7b('0x24')],'sectionId':_0x1ec7b2['id']},{})['then'](function(){return _0x15fcbf;});}else{return _0x15fcbf;}})['catch'](function(_0x1ebb33){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x1ebb33);throw _0x1ebb33;});}return _0x15fcbf;})[_0x9e7b('0x1f')](respondWithResult(_0x120d75,0xc9))[_0x9e7b('0x3f')](handleError(_0x120d75,null));};exports[_0x9e7b('0x4b')]=function(_0x2f822e,_0x421694){if(_0x2f822e[_0x9e7b('0x46')]['id']){delete _0x2f822e[_0x9e7b('0x46')]['id'];}return db[_0x9e7b('0x29')][_0x9e7b('0x44')]({'where':{'id':_0x2f822e['params']['id']}})[_0x9e7b('0x1f')](handleEntityNotFound(_0x421694,null))[_0x9e7b('0x1f')](saveUpdates(_0x2f822e[_0x9e7b('0x46')],null))[_0x9e7b('0x1f')](respondWithResult(_0x421694,null))['catch'](handleError(_0x421694,null));};exports['destroy']=function(_0x26b95f,_0x3a8fd0){return db[_0x9e7b('0x29')]['find']({'where':{'id':_0x26b95f[_0x9e7b('0x41')]['id']}})['then'](handleEntityNotFound(_0x3a8fd0,null))[_0x9e7b('0x1f')](removeEntity(_0x3a8fd0,null))[_0x9e7b('0x3f')](handleError(_0x3a8fd0,null));};
\ No newline at end of file
index 7be9aab..776e1f8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbce5=['destroy','bulkCreate','lodash','bluebird','from-sip','format','prefix','system','push','merge','Set','chanspy','record','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','password','ChanSpy','options','StopMixMonitor','internal','name','concat','User','findAll','agent','then','catch','exports','models','define','VoiceChanSpy','voice_chanspy','length','VoiceExtension'];(function(_0x5de1bc,_0x434be1){var _0x19f4b8=function(_0x35f764){while(--_0x35f764){_0x5de1bc['push'](_0x5de1bc['shift']());}};_0x19f4b8(++_0x434be1);}(_0xbce5,0x16a));var _0x5bce=function(_0x2fcf18,_0x10009a){_0x2fcf18=_0x2fcf18-0x0;var _0x4c68cc=_0xbce5[_0x2fcf18];return _0x4c68cc;};'use strict';var _=require(_0x5bce('0x0'));var util=require('util');var BPromise=require(_0x5bce('0x1'));var attributes=require('./voiceChanSpy.attributes');var getUserApplications=function(_0x40d76c,_0x29406f,_0x300352){var _0x47fd9c=0x1;var _0x578190=[];var _0x2c1e19={'context':_0x29406f['context']||_0x5bce('0x2'),'exten':util[_0x5bce('0x3')]('%s%s',_0x40d76c[_0x5bce('0x4')],_0x300352),'type':_0x5bce('0x5'),'isApp':![],'ChanSpyId':_0x40d76c['id'],'UserId':_0x29406f['id']};_0x578190[_0x5bce('0x6')](_[_0x5bce('0x7')]({'app':_0x5bce('0x8'),'appdata':util[_0x5bce('0x3')]('CDR(type)=%s',_0x5bce('0x9')),'priority':_0x47fd9c++},_0x2c1e19));if(_0x40d76c[_0x5bce('0xa')]){_0x578190[_0x5bce('0x6')](_['merge']({'app':'MixMonitor','appdata':util['format'](_0x5bce('0xb'),_0x40d76c[_0x5bce('0xc')]),'priority':_0x47fd9c++},_0x2c1e19));}if(_0x40d76c[_0x5bce('0xd')]){_0x578190[_0x5bce('0x6')](_[_0x5bce('0x7')]({'app':_0x5bce('0xe'),'appdata':_0x40d76c[_0x5bce('0xf')],'priority':_0x47fd9c++},_0x2c1e19));}_0x578190[_0x5bce('0x6')](_[_0x5bce('0x7')]({'app':_0x5bce('0x10'),'appdata':util[_0x5bce('0x3')]('SIP/%s,%s',_0x29406f['name'],_0x40d76c[_0x5bce('0x11')]?_0x40d76c[_0x5bce('0x11')]['join'](''):''),'priority':_0x47fd9c++},_0x2c1e19));if(_0x40d76c['record']){_0x578190[_0x5bce('0x6')](_[_0x5bce('0x7')]({'app':_0x5bce('0x12'),'priority':_0x47fd9c++},_0x2c1e19));}return _0x578190;};var getChanSpyApplications=function(_0x4c1e4f,_0x3ea6ae){var _0x390c2c=[];for(var _0x3d5dc2=0x0,_0x18367d=0x1;_0x3d5dc2<_0x3ea6ae['length'];_0x3d5dc2++,_0x18367d=0x1){_0x390c2c=_0x390c2c['concat'](getUserApplications(_0x4c1e4f,_0x3ea6ae[_0x3d5dc2],_0x3ea6ae[_0x3d5dc2][_0x5bce('0x13')]));if(_0x3ea6ae[_0x3d5dc2][_0x5bce('0x13')]!=_0x3ea6ae[_0x3d5dc2][_0x5bce('0x14')]){_0x390c2c=_0x390c2c[_0x5bce('0x15')](getUserApplications(_0x4c1e4f,_0x3ea6ae[_0x3d5dc2],_0x3ea6ae[_0x3d5dc2]['name']));}}return _0x390c2c;};var getChanSpyPromise=function(_0x1a26ed,_0x4cbac9){return new BPromise(function(_0x201cc2,_0x3c6248){return _0x1a26ed[_0x5bce('0x16')][_0x5bce('0x17')]({'attributes':['id',_0x5bce('0x14'),_0x5bce('0x13')],'where':{'role':_0x5bce('0x18'),'chanspy':!![]},'raw':!![]})[_0x5bce('0x19')](function(_0x3acfce){if(_0x3acfce){return _0x201cc2(getChanSpyApplications(_0x4cbac9,_0x3acfce));}return _0x201cc2([]);})[_0x5bce('0x1a')](function(_0x34d2a6){_0x3c6248(_0x34d2a6);});});};module[_0x5bce('0x1b')]=function(_0x352b21,_0x4bb21a){var _0x42a6ba=_0x352b21[_0x5bce('0x1c')];return _0x352b21[_0x5bce('0x1d')](_0x5bce('0x1e'),attributes,{'tableName':_0x5bce('0x1f'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x2e2be7,_0x1f0f85,_0x2a2d3f){return getChanSpyPromise(_0x42a6ba,_0x2e2be7)['then'](function(_0x42c5b2){if(_0x42c5b2&&_0x42c5b2[_0x5bce('0x20')]){return _0x42a6ba[_0x5bce('0x21')]['bulkCreate'](_0x42c5b2);}})[_0x5bce('0x19')](function(){_0x2a2d3f();})[_0x5bce('0x1a')](function(_0x41ea41){_0x2a2d3f(_0x41ea41);});},'afterUpdate':function(_0x460cc7,_0x76ead0,_0x121d3d){return _0x42a6ba[_0x5bce('0x21')][_0x5bce('0x22')]({'where':{'ChanSpyId':_0x460cc7['id']}})['then'](function(){return getChanSpyPromise(_0x42a6ba,_0x460cc7);})[_0x5bce('0x19')](function(_0x1b3829){if(_0x1b3829&&_0x1b3829[_0x5bce('0x20')]){return _0x42a6ba[_0x5bce('0x21')][_0x5bce('0x23')](_0x1b3829);}})['then'](function(){_0x121d3d();})[_0x5bce('0x1a')](function(_0x5f43e4){_0x121d3d(_0x5f43e4);});},'afterDestroy':function(_0x18cce4,_0x41335b,_0x30aa00){return _0x42a6ba[_0x5bce('0x21')]['destroy']({'where':{'ChanSpyId':_0x18cce4['id']}})[_0x5bce('0x19')](function(){_0x30aa00();})[_0x5bce('0x1a')](function(_0x53f42c){_0x30aa00(_0x53f42c);});}}});};
\ No newline at end of file
+var _0x32eb=['push','merge','Set','CDR(type)=%s','chanspy','record','MixMonitor','${UNIQUEID}.%s,a','recordingFormat','auth','Authenticate','format','SIP/%s,%s','name','join','StopMixMonitor','length','internal','concat','catch','exports','models','define','VoiceChanSpy','voice_chanspy','then','VoiceExtension','destroy','bulkCreate','util','bluebird','./voiceChanSpy.attributes','context','from-sip','%s%s','system'];(function(_0x57b677,_0x10e96c){var _0x2e1faf=function(_0x760922){while(--_0x760922){_0x57b677['push'](_0x57b677['shift']());}};_0x2e1faf(++_0x10e96c);}(_0x32eb,0x1a9));var _0xb32e=function(_0x476b5f,_0x1f9952){_0x476b5f=_0x476b5f-0x0;var _0x5a23d8=_0x32eb[_0x476b5f];return _0x5a23d8;};'use strict';var _=require('lodash');var util=require(_0xb32e('0x0'));var BPromise=require(_0xb32e('0x1'));var attributes=require(_0xb32e('0x2'));var getUserApplications=function(_0x5aabe4,_0x1ad32d,_0x3a035c){var _0x5d7278=0x1;var _0xb25b6f=[];var _0x1ef26c={'context':_0x1ad32d[_0xb32e('0x3')]||_0xb32e('0x4'),'exten':util['format'](_0xb32e('0x5'),_0x5aabe4['prefix'],_0x3a035c),'type':_0xb32e('0x6'),'isApp':![],'ChanSpyId':_0x5aabe4['id'],'UserId':_0x1ad32d['id']};_0xb25b6f[_0xb32e('0x7')](_[_0xb32e('0x8')]({'app':_0xb32e('0x9'),'appdata':util['format'](_0xb32e('0xa'),_0xb32e('0xb')),'priority':_0x5d7278++},_0x1ef26c));if(_0x5aabe4[_0xb32e('0xc')]){_0xb25b6f[_0xb32e('0x7')](_[_0xb32e('0x8')]({'app':_0xb32e('0xd'),'appdata':util['format'](_0xb32e('0xe'),_0x5aabe4[_0xb32e('0xf')]),'priority':_0x5d7278++},_0x1ef26c));}if(_0x5aabe4[_0xb32e('0x10')]){_0xb25b6f['push'](_['merge']({'app':_0xb32e('0x11'),'appdata':_0x5aabe4['password'],'priority':_0x5d7278++},_0x1ef26c));}_0xb25b6f[_0xb32e('0x7')](_[_0xb32e('0x8')]({'app':'ChanSpy','appdata':util[_0xb32e('0x12')](_0xb32e('0x13'),_0x1ad32d[_0xb32e('0x14')],_0x5aabe4['options']?_0x5aabe4['options'][_0xb32e('0x15')](''):''),'priority':_0x5d7278++},_0x1ef26c));if(_0x5aabe4[_0xb32e('0xc')]){_0xb25b6f['push'](_[_0xb32e('0x8')]({'app':_0xb32e('0x16'),'priority':_0x5d7278++},_0x1ef26c));}return _0xb25b6f;};var getChanSpyApplications=function(_0x459c00,_0x3d0187){var _0x484603=[];for(var _0x226ba0=0x0,_0x536884=0x1;_0x226ba0<_0x3d0187[_0xb32e('0x17')];_0x226ba0++,_0x536884=0x1){_0x484603=_0x484603['concat'](getUserApplications(_0x459c00,_0x3d0187[_0x226ba0],_0x3d0187[_0x226ba0][_0xb32e('0x18')]));if(_0x3d0187[_0x226ba0][_0xb32e('0x18')]!=_0x3d0187[_0x226ba0][_0xb32e('0x14')]){_0x484603=_0x484603[_0xb32e('0x19')](getUserApplications(_0x459c00,_0x3d0187[_0x226ba0],_0x3d0187[_0x226ba0][_0xb32e('0x14')]));}}return _0x484603;};var getChanSpyPromise=function(_0x39d2d9,_0x1f5bf7){return new BPromise(function(_0x295db3,_0xd47ee8){return _0x39d2d9['User']['findAll']({'attributes':['id','name',_0xb32e('0x18')],'where':{'role':'agent','chanspy':!![]},'raw':!![]})['then'](function(_0x59d38a){if(_0x59d38a){return _0x295db3(getChanSpyApplications(_0x1f5bf7,_0x59d38a));}return _0x295db3([]);})[_0xb32e('0x1a')](function(_0x2f545a){_0xd47ee8(_0x2f545a);});});};module[_0xb32e('0x1b')]=function(_0x582b2c,_0x301b2e){var _0x1b27e8=_0x582b2c[_0xb32e('0x1c')];return _0x582b2c[_0xb32e('0x1d')](_0xb32e('0x1e'),attributes,{'tableName':_0xb32e('0x1f'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'afterCreate':function(_0x4796d8,_0x3050a2,_0x34a678){return getChanSpyPromise(_0x1b27e8,_0x4796d8)[_0xb32e('0x20')](function(_0x5ca01a){if(_0x5ca01a&&_0x5ca01a[_0xb32e('0x17')]){return _0x1b27e8[_0xb32e('0x21')]['bulkCreate'](_0x5ca01a);}})[_0xb32e('0x20')](function(){_0x34a678();})['catch'](function(_0x4e1168){_0x34a678(_0x4e1168);});},'afterUpdate':function(_0x5c1823,_0x29b8c7,_0x267589){return _0x1b27e8[_0xb32e('0x21')][_0xb32e('0x22')]({'where':{'ChanSpyId':_0x5c1823['id']}})[_0xb32e('0x20')](function(){return getChanSpyPromise(_0x1b27e8,_0x5c1823);})[_0xb32e('0x20')](function(_0x396c7e){if(_0x396c7e&&_0x396c7e[_0xb32e('0x17')]){return _0x1b27e8['VoiceExtension'][_0xb32e('0x23')](_0x396c7e);}})[_0xb32e('0x20')](function(){_0x267589();})[_0xb32e('0x1a')](function(_0x90eab8){_0x267589(_0x90eab8);});},'afterDestroy':function(_0x28c189,_0x57f5e8,_0x19c887){return _0x1b27e8[_0xb32e('0x21')][_0xb32e('0x22')]({'where':{'ChanSpyId':_0x28c189['id']}})[_0xb32e('0x20')](function(){_0x19c887();})['catch'](function(_0x52d664){_0x19c887(_0x52d664);});}}});};
\ No newline at end of file
index 8dbdb9a..b2da5a2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0427=['../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','VoiceChanSpy,\x20%s,\x20%s','stringify','error','code','message','info','request\x20sent','result','catch','moment','bluebird','ioredis','../../mysqldb'];(function(_0xc1131,_0x5ab0f3){var _0x382bd7=function(_0x15f4c1){while(--_0x15f4c1){_0xc1131['push'](_0xc1131['shift']());}};_0x382bd7(++_0x5ab0f3);}(_0x0427,0x137));var _0x7042=function(_0x29fd01,_0x57f1ac){_0x29fd01=_0x29fd01-0x0;var _0x5e4b76=_0x0427[_0x29fd01];return _0x5e4b76;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x7042('0x0'));var BPromise=require(_0x7042('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x7042('0x2'));var db=require(_0x7042('0x3'))['db'];var utils=require(_0x7042('0x4'));var logger=require(_0x7042('0x5'))(_0x7042('0x6'));var config=require(_0x7042('0x7'));var jayson=require(_0x7042('0x8'));var client=jayson['client'][_0x7042('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x2f24b5,_0x25c552,_0x346aa8){return new BPromise(function(_0x295b19,_0x978169){return client[_0x7042('0xa')](_0x2f24b5,_0x346aa8)[_0x7042('0xb')](function(_0x3bd534){logger['info'](_0x7042('0xc'),_0x25c552,'request\x20sent');logger['debug']('VoiceChanSpy,\x20%s,\x20%s,\x20%s',_0x25c552,'request\x20sent',JSON[_0x7042('0xd')](_0x3bd534));if(_0x3bd534['error']){if(_0x3bd534[_0x7042('0xe')][_0x7042('0xf')]===0x1f4){logger[_0x7042('0xe')]('VoiceChanSpy,\x20%s,\x20%s',_0x25c552,_0x3bd534['error'][_0x7042('0x10')]);return _0x978169(_0x3bd534[_0x7042('0xe')][_0x7042('0x10')]);}logger[_0x7042('0xe')](_0x7042('0xc'),_0x25c552,_0x3bd534[_0x7042('0xe')]['message']);return _0x295b19(_0x3bd534[_0x7042('0xe')][_0x7042('0x10')]);}else{logger[_0x7042('0x11')]('VoiceChanSpy,\x20%s,\x20%s',_0x25c552,_0x7042('0x12'));_0x295b19(_0x3bd534[_0x7042('0x13')]['message']);}})[_0x7042('0x14')](function(_0x590edd){logger['error'](_0x7042('0xc'),_0x25c552,_0x590edd);_0x978169(_0x590edd);});});}
\ No newline at end of file
+var _0x3a25=['then','info','VoiceChanSpy,\x20%s,\x20%s','request\x20sent','debug','VoiceChanSpy,\x20%s,\x20%s,\x20%s','error','code','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request'];(function(_0x476157,_0x1d310b){var _0x171d27=function(_0x1ee2af){while(--_0x1ee2af){_0x476157['push'](_0x476157['shift']());}};_0x171d27(++_0x1d310b);}(_0x3a25,0x15d));var _0x53a2=function(_0x34d4d9,_0x204b4d){_0x34d4d9=_0x34d4d9-0x0;var _0x3693e3=_0x3a25[_0x34d4d9];return _0x3693e3;};'use strict';var _=require(_0x53a2('0x0'));var util=require(_0x53a2('0x1'));var moment=require(_0x53a2('0x2'));var BPromise=require(_0x53a2('0x3'));var rs=require(_0x53a2('0x4'));var fs=require('fs');var Redis=require(_0x53a2('0x5'));var db=require(_0x53a2('0x6'))['db'];var utils=require(_0x53a2('0x7'));var logger=require(_0x53a2('0x8'))(_0x53a2('0x9'));var config=require(_0x53a2('0xa'));var jayson=require(_0x53a2('0xb'));var client=jayson[_0x53a2('0xc')][_0x53a2('0xd')]({'port':0x232a});function respondWithRpcPromise(_0x409fff,_0x4d53b8,_0x3ee956){return new BPromise(function(_0x5dc70e,_0x17aa09){return client[_0x53a2('0xe')](_0x409fff,_0x3ee956)[_0x53a2('0xf')](function(_0x42bf42){logger[_0x53a2('0x10')](_0x53a2('0x11'),_0x4d53b8,_0x53a2('0x12'));logger[_0x53a2('0x13')](_0x53a2('0x14'),_0x4d53b8,_0x53a2('0x12'),JSON['stringify'](_0x42bf42));if(_0x42bf42['error']){if(_0x42bf42[_0x53a2('0x15')][_0x53a2('0x16')]===0x1f4){logger['error']('VoiceChanSpy,\x20%s,\x20%s',_0x4d53b8,_0x42bf42['error'][_0x53a2('0x17')]);return _0x17aa09(_0x42bf42[_0x53a2('0x15')][_0x53a2('0x17')]);}logger['error']('VoiceChanSpy,\x20%s,\x20%s',_0x4d53b8,_0x42bf42['error'][_0x53a2('0x17')]);return _0x5dc70e(_0x42bf42[_0x53a2('0x15')][_0x53a2('0x17')]);}else{logger[_0x53a2('0x10')]('VoiceChanSpy,\x20%s,\x20%s',_0x4d53b8,_0x53a2('0x12'));_0x5dc70e(_0x42bf42[_0x53a2('0x18')][_0x53a2('0x17')]);}})[_0x53a2('0x19')](function(_0x34c7de){logger['error']('VoiceChanSpy,\x20%s,\x20%s',_0x4d53b8,_0x34c7de);_0x17aa09(_0x34c7de);});});}
\ No newline at end of file
index 1c25a23..b19de4f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa5e=['fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceContext.controller','isAuthenticated','index','get','/:id','show','create','put','update','delete','destroy','exports','multer','path','connect-timeout','express','Router'];(function(_0x17266e,_0x5d273d){var _0x8eeaf4=function(_0xda6721){while(--_0xda6721){_0x17266e['push'](_0x17266e['shift']());}};_0x8eeaf4(++_0x5d273d);}(_0xfa5e,0x14b));var _0xefa5=function(_0x4c6f68,_0x45e821){_0x4c6f68=_0x4c6f68-0x0;var _0x5461d6=_0xfa5e[_0x4c6f68];return _0x5461d6;};'use strict';var multer=require(_0xefa5('0x0'));var util=require('util');var path=require(_0xefa5('0x1'));var timeout=require(_0xefa5('0x2'));var express=require(_0xefa5('0x3'));var router=express[_0xefa5('0x4')]();var fs_extra=require(_0xefa5('0x5'));var auth=require(_0xefa5('0x6'));var interaction=require(_0xefa5('0x7'));var config=require(_0xefa5('0x8'));var controller=require(_0xefa5('0x9'));router['get']('/',auth[_0xefa5('0xa')](),controller[_0xefa5('0xb')]);router[_0xefa5('0xc')](_0xefa5('0xd'),auth[_0xefa5('0xa')](),controller[_0xefa5('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0xefa5('0xf')]);router[_0xefa5('0x10')](_0xefa5('0xd'),auth[_0xefa5('0xa')](),controller[_0xefa5('0x11')]);router[_0xefa5('0x12')](_0xefa5('0xd'),auth[_0xefa5('0xa')](),controller[_0xefa5('0x13')]);module[_0xefa5('0x14')]=router;
\ No newline at end of file
+var _0x3db1=['express','Router','../../components/auth/service','../../components/interaction/service','get','isAuthenticated','index','/:id','show','post','create','delete','exports','util','path','connect-timeout'];(function(_0x19950b,_0x53d0d7){var _0x3c6b41=function(_0x3924ad){while(--_0x3924ad){_0x19950b['push'](_0x19950b['shift']());}};_0x3c6b41(++_0x53d0d7);}(_0x3db1,0x6d));var _0x13db=function(_0x537b3c,_0x12aff2){_0x537b3c=_0x537b3c-0x0;var _0x3d9d55=_0x3db1[_0x537b3c];return _0x3d9d55;};'use strict';var multer=require('multer');var util=require(_0x13db('0x0'));var path=require(_0x13db('0x1'));var timeout=require(_0x13db('0x2'));var express=require(_0x13db('0x3'));var router=express[_0x13db('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x13db('0x5'));var interaction=require(_0x13db('0x6'));var config=require('../../config/environment');var controller=require('./voiceContext.controller');router[_0x13db('0x7')]('/',auth[_0x13db('0x8')](),controller[_0x13db('0x9')]);router[_0x13db('0x7')](_0x13db('0xa'),auth[_0x13db('0x8')](),controller[_0x13db('0xb')]);router[_0x13db('0xc')]('/',auth['isAuthenticated'](),controller[_0x13db('0xd')]);router['put'](_0x13db('0xa'),auth['isAuthenticated'](),controller['update']);router[_0x13db('0xe')](_0x13db('0xa'),auth[_0x13db('0x8')](),controller['destroy']);module[_0x13db('0xf')]=router;
\ No newline at end of file
index c370162..1885bc2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d24=['sequelize','exports','name','STRING','BOOLEAN'];(function(_0x31f852,_0x316139){var _0x3c0f2f=function(_0x3a4b94){while(--_0x3a4b94){_0x31f852['push'](_0x31f852['shift']());}};_0x3c0f2f(++_0x316139);}(_0x3d24,0x73));var _0x43d2=function(_0x250f41,_0xa3c744){_0x250f41=_0x250f41-0x0;var _0x4fdeb5=_0x3d24[_0x250f41];return _0x4fdeb5;};'use strict';var Sequelize=require(_0x43d2('0x0'));module[_0x43d2('0x1')]={'name':{'type':Sequelize['STRING'],'unique':_0x43d2('0x2')},'description':{'type':Sequelize[_0x43d2('0x3')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x43d2('0x4')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x6459=['STRING','BOOLEAN','exports','name'];(function(_0x6d7ba4,_0x3699d4){var _0x2ccaa7=function(_0x2a1c51){while(--_0x2a1c51){_0x6d7ba4['push'](_0x6d7ba4['shift']());}};_0x2ccaa7(++_0x3699d4);}(_0x6459,0x6e));var _0x9645=function(_0x9e7254,_0x5c519a){_0x9e7254=_0x9e7254-0x0;var _0x1da7ea=_0x6459[_0x9e7254];return _0x1da7ea;};'use strict';var Sequelize=require('sequelize');module[_0x9645('0x0')]={'name':{'type':Sequelize['STRING'],'unique':_0x9645('0x1')},'description':{'type':Sequelize[_0x9645('0x2')],'allowNull':!![]},'defaultEntry':{'type':Sequelize[_0x9645('0x3')],'defaultValue':0x0}};
\ No newline at end of file
index 371c43e..7fc3fcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdca0=['sort','where','pick','filter','type','VIRTUAL','merge','includeAll','findAll','rows','show','params','keys','rawAttributes','include','options','find','create','body','readFileSync','root','server/files/templates/context.ejs','utf8','render','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','chan_sip.so','user','role','UserProfileSection','autoAssociation','join','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../mysqldb','request','then','info','VoiceContext,\x20%s,\x20%s','VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','code','message','request\x20sent','catch','sendStatus','status','end','json','offset','undefined','limit','count','set','Content-Range','apply','reject','update','destroy','get','Contexts','UserProfileResource','stack','name','send','VoiceContext','fieldName','key','model','map','query','filters','intersection','fields','attributes','hasOwnProperty','nolimit','order'];(function(_0x12baa8,_0x43ce92){var _0x49e7b7=function(_0x53498f){while(--_0x53498f){_0x12baa8['push'](_0x12baa8['shift']());}};_0x49e7b7(++_0x43ce92);}(_0xdca0,0x86));var _0x0dca=function(_0x351795,_0x3936b1){_0x351795=_0x351795-0x0;var _0x2cbe0f=_0xdca0[_0x351795];return _0x2cbe0f;};'use strict';var emlformat=require(_0x0dca('0x0'));var rimraf=require(_0x0dca('0x1'));var zipdir=require(_0x0dca('0x2'));var jsonpatch=require(_0x0dca('0x3'));var rp=require(_0x0dca('0x4'));var moment=require(_0x0dca('0x5'));var BPromise=require(_0x0dca('0x6'));var Mustache=require(_0x0dca('0x7'));var util=require(_0x0dca('0x8'));var path=require(_0x0dca('0x9'));var sox=require(_0x0dca('0xa'));var csv=require(_0x0dca('0xb'));var ejs=require(_0x0dca('0xc'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x0dca('0xd'));var squel=require(_0x0dca('0xe'));var crypto=require(_0x0dca('0xf'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x0dca('0x10'));var Redis=require('ioredis');var authService=require(_0x0dca('0x11'));var qs=require(_0x0dca('0x12'));var as=require(_0x0dca('0x13'));var hardwareService=require(_0x0dca('0x14'));var logger=require(_0x0dca('0x15'))(_0x0dca('0x16'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x0dca('0x17'))['db'];var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x238059,_0x23fc5c,_0x559594,_0x53affb){return new BPromise(function(_0x17286d,_0x315cd0){var _0x5de2bf=_0x53affb||client;return _0x5de2bf[_0x0dca('0x18')](_0x238059,_0x559594)[_0x0dca('0x19')](function(_0x471d87){logger[_0x0dca('0x1a')](_0x0dca('0x1b'),_0x23fc5c,'request\x20sent');logger['debug'](_0x0dca('0x1c'),_0x23fc5c,'request\x20sent',JSON[_0x0dca('0x1d')](_0x471d87));if(_0x471d87[_0x0dca('0x1e')]){if(_0x471d87[_0x0dca('0x1e')][_0x0dca('0x1f')]===0x1f4){logger[_0x0dca('0x1e')]('VoiceContext,\x20%s,\x20%s',_0x23fc5c,_0x471d87['error'][_0x0dca('0x20')]);return _0x315cd0(_0x471d87[_0x0dca('0x1e')]['message']);}logger['error'](_0x0dca('0x1b'),_0x23fc5c,_0x471d87[_0x0dca('0x1e')][_0x0dca('0x20')]);return _0x17286d(_0x471d87[_0x0dca('0x1e')][_0x0dca('0x20')]);}else{logger['info'](_0x0dca('0x1b'),_0x23fc5c,_0x0dca('0x21'));_0x17286d(_0x471d87['result'][_0x0dca('0x20')]);}})[_0x0dca('0x22')](function(_0x1b6dd0){logger[_0x0dca('0x1e')](_0x0dca('0x1b'),_0x23fc5c,_0x1b6dd0);_0x315cd0(_0x1b6dd0);});});}function respondWithStatusCode(_0x5bda16,_0x42025e){_0x42025e=_0x42025e||0xcc;return function(_0x409e4a){if(_0x409e4a){return _0x5bda16[_0x0dca('0x23')](_0x42025e);}return _0x5bda16[_0x0dca('0x24')](_0x42025e)[_0x0dca('0x25')]();};}function respondWithResult(_0x169f55,_0x253e3d){_0x253e3d=_0x253e3d||0xc8;return function(_0x44f627){if(_0x44f627){return _0x169f55[_0x0dca('0x24')](_0x253e3d)[_0x0dca('0x26')](_0x44f627);}};}function respondWithFilteredResult(_0x5b19e5,_0x3baca3){return function(_0x41cd12){if(_0x41cd12){var _0x33701e=typeof _0x3baca3[_0x0dca('0x27')]===_0x0dca('0x28')&&typeof _0x3baca3[_0x0dca('0x29')]==='undefined';var _0x4e82d9=_0x41cd12['count'];var _0xaebf72=_0x33701e?0x0:_0x3baca3[_0x0dca('0x27')];var _0x3b1e38=_0x33701e?_0x41cd12[_0x0dca('0x2a')]:_0x3baca3[_0x0dca('0x27')]+_0x3baca3[_0x0dca('0x29')];var _0x24e386;if(_0x3b1e38>=_0x4e82d9){_0x3b1e38=_0x4e82d9;_0x24e386=0xc8;}else{_0x24e386=0xce;}_0x5b19e5['status'](_0x24e386);return _0x5b19e5[_0x0dca('0x2b')](_0x0dca('0x2c'),_0xaebf72+'-'+_0x3b1e38+'/'+_0x4e82d9)[_0x0dca('0x26')](_0x41cd12);}return null;};}function patchUpdates(_0x3e00d3){return function(_0x163f41){try{jsonpatch[_0x0dca('0x2d')](_0x163f41,_0x3e00d3,!![]);}catch(_0x56e77c){return BPromise[_0x0dca('0x2e')](_0x56e77c);}return _0x163f41['save']();};}function saveUpdates(_0x48c2ee,_0x26cf23){return function(_0x22b86c){if(_0x22b86c){return _0x22b86c[_0x0dca('0x2f')](_0x48c2ee)['then'](function(_0x3146d0){return _0x3146d0;});}return null;};}function removeEntity(_0xef2480,_0x252c64){return function(_0x3c86c5){if(_0x3c86c5){return _0x3c86c5[_0x0dca('0x30')]()[_0x0dca('0x19')](function(){var _0x3a26b4=_0x3c86c5[_0x0dca('0x31')]({'plain':!![]});var _0x357e8c=_0x0dca('0x32');return db[_0x0dca('0x33')]['destroy']({'where':{'type':_0x357e8c,'resourceId':_0x3a26b4['id']}})[_0x0dca('0x19')](function(){return _0x3c86c5;});})[_0x0dca('0x19')](function(){_0xef2480['status'](0xcc)[_0x0dca('0x25')]();});}};}function handleEntityNotFound(_0x228851,_0x225fc1){return function(_0x557a24){if(!_0x557a24){_0x228851[_0x0dca('0x23')](0x194);}return _0x557a24;};}function handleError(_0xeb306b,_0x6f780b){_0x6f780b=_0x6f780b||0x1f4;return function(_0x38b571){logger[_0x0dca('0x1e')](_0x38b571[_0x0dca('0x34')]);if(_0x38b571[_0x0dca('0x35')]){delete _0x38b571[_0x0dca('0x35')];}_0xeb306b[_0x0dca('0x24')](_0x6f780b)[_0x0dca('0x36')](_0x38b571);};}exports['index']=function(_0x175574,_0x47c7a1){var _0x15cee6={},_0x330066={},_0x187c01={'count':0x0,'rows':[]};var _0x258cac=_['map'](db[_0x0dca('0x37')]['rawAttributes'],function(_0x3c5585){return{'name':_0x3c5585[_0x0dca('0x38')],'type':_0x3c5585['type'][_0x0dca('0x39')]};});_0x330066[_0x0dca('0x3a')]=_[_0x0dca('0x3b')](_0x258cac,_0x0dca('0x35'));_0x330066['query']=_['keys'](_0x175574[_0x0dca('0x3c')]);_0x330066[_0x0dca('0x3d')]=_[_0x0dca('0x3e')](_0x330066['model'],_0x330066[_0x0dca('0x3c')]);_0x15cee6['attributes']=_['intersection'](_0x330066[_0x0dca('0x3a')],qs['fields'](_0x175574['query'][_0x0dca('0x3f')]));_0x15cee6[_0x0dca('0x40')]=_0x15cee6[_0x0dca('0x40')]['length']?_0x15cee6['attributes']:_0x330066[_0x0dca('0x3a')];if(!_0x175574['query'][_0x0dca('0x41')](_0x0dca('0x42'))){_0x15cee6[_0x0dca('0x29')]=qs['limit'](_0x175574[_0x0dca('0x3c')][_0x0dca('0x29')]);_0x15cee6[_0x0dca('0x27')]=qs[_0x0dca('0x27')](_0x175574[_0x0dca('0x3c')][_0x0dca('0x27')]);}_0x15cee6[_0x0dca('0x43')]=qs[_0x0dca('0x44')](_0x175574[_0x0dca('0x3c')][_0x0dca('0x44')]);_0x15cee6[_0x0dca('0x45')]=qs[_0x0dca('0x3d')](_[_0x0dca('0x46')](_0x175574[_0x0dca('0x3c')],_0x330066[_0x0dca('0x3d')]),_0x258cac);if(_0x175574[_0x0dca('0x3c')][_0x0dca('0x47')]){_0x15cee6[_0x0dca('0x45')]=_['merge'](_0x15cee6[_0x0dca('0x45')],{'$or':_[_0x0dca('0x3b')](_0x258cac,function(_0x4873f9){if(_0x4873f9[_0x0dca('0x48')]!==_0x0dca('0x49')){var _0x311a47={};_0x311a47[_0x4873f9[_0x0dca('0x35')]]={'$like':'%'+_0x175574['query']['filter']+'%'};return _0x311a47;}})});}_0x15cee6=_[_0x0dca('0x4a')]({},_0x15cee6,_0x175574['options']);var _0x5d8395={'where':_0x15cee6[_0x0dca('0x45')]};return db[_0x0dca('0x37')][_0x0dca('0x2a')](_0x5d8395)[_0x0dca('0x19')](function(_0x26bd79){_0x187c01[_0x0dca('0x2a')]=_0x26bd79;if(_0x175574[_0x0dca('0x3c')][_0x0dca('0x4b')]){_0x15cee6['include']=[{'all':!![]}];}return db['VoiceContext'][_0x0dca('0x4c')](_0x15cee6);})[_0x0dca('0x19')](function(_0x3aa453){_0x187c01[_0x0dca('0x4d')]=_0x3aa453;return _0x187c01;})['then'](respondWithFilteredResult(_0x47c7a1,_0x15cee6))[_0x0dca('0x22')](handleError(_0x47c7a1,null));};exports[_0x0dca('0x4e')]=function(_0x2e697a,_0x27327b){var _0x28bdbe={'raw':![],'where':{'id':_0x2e697a[_0x0dca('0x4f')]['id']}},_0x59d8ab={};_0x59d8ab[_0x0dca('0x3a')]=_[_0x0dca('0x50')](db[_0x0dca('0x37')][_0x0dca('0x51')]);_0x59d8ab[_0x0dca('0x3c')]=_[_0x0dca('0x50')](_0x2e697a[_0x0dca('0x3c')]);_0x59d8ab['filters']=_[_0x0dca('0x3e')](_0x59d8ab[_0x0dca('0x3a')],_0x59d8ab[_0x0dca('0x3c')]);_0x28bdbe[_0x0dca('0x40')]=_['intersection'](_0x59d8ab[_0x0dca('0x3a')],qs[_0x0dca('0x3f')](_0x2e697a['query'][_0x0dca('0x3f')]));_0x28bdbe[_0x0dca('0x40')]=_0x28bdbe['attributes']['length']?_0x28bdbe[_0x0dca('0x40')]:_0x59d8ab[_0x0dca('0x3a')];if(_0x2e697a[_0x0dca('0x3c')][_0x0dca('0x4b')]){_0x28bdbe[_0x0dca('0x52')]=[{'all':!![]}];}_0x28bdbe=_['merge']({},_0x28bdbe,_0x2e697a[_0x0dca('0x53')]);return db['VoiceContext'][_0x0dca('0x54')](_0x28bdbe)[_0x0dca('0x19')](handleEntityNotFound(_0x27327b,null))[_0x0dca('0x19')](respondWithResult(_0x27327b,null))[_0x0dca('0x22')](handleError(_0x27327b,null));};exports[_0x0dca('0x55')]=function(_0x2d7d23,_0x46704d,_0x523e91){var _0x3448fc;return db[_0x0dca('0x37')][_0x0dca('0x55')](_0x2d7d23[_0x0dca('0x56')],{'raw':!![]})['then'](function(_0x199a89){_0x3448fc=_0x199a89;return db[_0x0dca('0x37')]['findAll']({'raw':!![]});})['then'](function(_0x1c57f9){var _0x531195=fs[_0x0dca('0x57')](path['join'](config[_0x0dca('0x58')],_0x0dca('0x59')),_0x0dca('0x5a'));var _0x242a87=ejs[_0x0dca('0x5b')](_0x531195,{'contexts':_0x1c57f9||[]});fs[_0x0dca('0x5c')](_0x0dca('0x5d'),_0x242a87);})['then'](function(){return respondWithRpcPromise(_0x0dca('0x5e'),_0x0dca('0x55'),{'module':_0x0dca('0x5f')});})['then'](function(){var _0x1e6757=_0x2d7d23[_0x0dca('0x60')][_0x0dca('0x31')]({'plain':!![]});if(!_0x1e6757)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x1e6757[_0x0dca('0x61')]===_0x0dca('0x60')){var _0x595494=_0x3448fc[_0x0dca('0x31')]({'plain':!![]});return db[_0x0dca('0x62')][_0x0dca('0x54')]({'where':{'name':'Contexts','userProfileId':_0x1e6757['userProfileId']},'raw':!![]})[_0x0dca('0x19')](function(_0x2ec339){if(_0x2ec339&&_0x2ec339[_0x0dca('0x63')]===0x0){return db['UserProfileResource'][_0x0dca('0x55')]({'name':_0x595494[_0x0dca('0x35')],'resourceId':_0x595494['id'],'type':_0x2ec339[_0x0dca('0x35')],'sectionId':_0x2ec339['id']},{})[_0x0dca('0x19')](function(){return _0x3448fc;});}else{return _0x3448fc;}})[_0x0dca('0x22')](function(_0x4d73a6){logger[_0x0dca('0x1e')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x4d73a6);throw _0x4d73a6;});}return _0x3448fc;})[_0x0dca('0x19')](respondWithResult(_0x46704d,0xc9))[_0x0dca('0x22')](handleError(_0x46704d,null));};exports['update']=function(_0x4ae43d,_0x2459ea,_0x557bf6){var _0x5955d9;return db[_0x0dca('0x37')][_0x0dca('0x54')]({'where':{'id':_0x4ae43d[_0x0dca('0x4f')]['id']}})['then'](handleEntityNotFound(_0x2459ea,null))[_0x0dca('0x19')](saveUpdates(_0x4ae43d['body'],null))[_0x0dca('0x19')](function(_0x1feedd){if(_0x1feedd){_0x5955d9=_0x1feedd;return db['VoiceContext'][_0x0dca('0x4c')]({'raw':!![]});}})['then'](function(_0x2637c2){var _0x15ca15=fs['readFileSync'](path[_0x0dca('0x64')](config['root'],_0x0dca('0x59')),_0x0dca('0x5a'));var _0x413ec1=ejs[_0x0dca('0x5b')](_0x15ca15,{'contexts':_0x2637c2||[]});fs[_0x0dca('0x5c')](_0x0dca('0x5d'),_0x413ec1);})[_0x0dca('0x19')](function(){return respondWithRpcPromise('Reload',_0x0dca('0x2f'),{'module':_0x0dca('0x5f')});})['then'](function(){return _0x5955d9;})['then'](respondWithResult(_0x2459ea,null))[_0x0dca('0x22')](handleError(_0x2459ea,null));};exports[_0x0dca('0x30')]=function(_0x2a7100,_0x4dd133,_0x4a18e9){var _0x46a46e;return db[_0x0dca('0x37')][_0x0dca('0x54')]({'where':{'id':_0x2a7100[_0x0dca('0x4f')]['id']}})['then'](handleEntityNotFound(_0x4dd133,null))[_0x0dca('0x19')](removeEntity(_0x4dd133,null))[_0x0dca('0x19')](function(){return db['VoiceContext'][_0x0dca('0x4c')]({'raw':!![]});})[_0x0dca('0x19')](function(_0x378ff6){var _0x1ca56d=fs[_0x0dca('0x57')](path[_0x0dca('0x64')](config[_0x0dca('0x58')],_0x0dca('0x59')),_0x0dca('0x5a'));var _0x36ef6f=ejs[_0x0dca('0x5b')](_0x1ca56d,{'contexts':_0x378ff6});fs[_0x0dca('0x5c')](_0x0dca('0x5d'),_0x36ef6f);return respondWithRpcPromise('Reload',_0x0dca('0x30'),{'module':_0x0dca('0x5f')});})[_0x0dca('0x22')](handleError(_0x4dd133,null));};
\ No newline at end of file
+var _0xab84=['order','sort','where','pick','filters','merge','VIRTUAL','filter','options','includeAll','include','rows','params','keys','rawAttributes','find','body','findAll','readFileSync','join','server/files/templates/context.ejs','utf8','writeFileSync','/etc/asterisk/extensions_xcally_contexts.conf','Reload','create','chan_sip.so','user','role','userProfileId','autoAssociation','root','render','eml-format','rimraf','request-promise','moment','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','api','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','request\x20sent','debug','VoiceContext,\x20%s,\x20%s,\x20%s','error','VoiceContext,\x20%s,\x20%s','message','result','catch','status','end','json','offset','undefined','count','limit','set','apply','reject','save','update','destroy','get','Contexts','UserProfileResource','sendStatus','stack','name','send','index','map','VoiceContext','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit'];(function(_0x2ddbf6,_0x439dbe){var _0x187a79=function(_0x34fcd2){while(--_0x34fcd2){_0x2ddbf6['push'](_0x2ddbf6['shift']());}};_0x187a79(++_0x439dbe);}(_0xab84,0x15c));var _0x4ab8=function(_0x103b94,_0x59d9c3){_0x103b94=_0x103b94-0x0;var _0x138d14=_0xab84[_0x103b94];return _0x138d14;};'use strict';var emlformat=require(_0x4ab8('0x0'));var rimraf=require(_0x4ab8('0x1'));var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x4ab8('0x2'));var moment=require(_0x4ab8('0x3'));var BPromise=require('bluebird');var Mustache=require(_0x4ab8('0x4'));var util=require(_0x4ab8('0x5'));var path=require(_0x4ab8('0x6'));var sox=require(_0x4ab8('0x7'));var csv=require(_0x4ab8('0x8'));var ejs=require(_0x4ab8('0x9'));var fs=require('fs');var fs_extra=require(_0x4ab8('0xa'));var _=require(_0x4ab8('0xb'));var squel=require('squel');var crypto=require(_0x4ab8('0xc'));var jsforce=require(_0x4ab8('0xd'));var deskjs=require(_0x4ab8('0xe'));var toCsv=require(_0x4ab8('0x8'));var querystring=require(_0x4ab8('0xf'));var Papa=require(_0x4ab8('0x10'));var Redis=require('ioredis');var authService=require(_0x4ab8('0x11'));var qs=require(_0x4ab8('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4ab8('0x13'));var logger=require('../../config/logger')(_0x4ab8('0x14'));var utils=require('../../config/utils');var config=require(_0x4ab8('0x15'));var licenseUtil=require(_0x4ab8('0x16'));var db=require(_0x4ab8('0x17'))['db'];var jayson=require(_0x4ab8('0x18'));var client=jayson[_0x4ab8('0x19')][_0x4ab8('0x1a')]({'port':0x232a});function respondWithRpcPromise(_0x41bc9a,_0x42b6b2,_0xc56dfa,_0x2cc15f){return new BPromise(function(_0x32c4d3,_0x4c0aab){var _0x17ad8c=_0x2cc15f||client;return _0x17ad8c[_0x4ab8('0x1b')](_0x41bc9a,_0xc56dfa)[_0x4ab8('0x1c')](function(_0x22b160){logger[_0x4ab8('0x1d')]('VoiceContext,\x20%s,\x20%s',_0x42b6b2,_0x4ab8('0x1e'));logger[_0x4ab8('0x1f')](_0x4ab8('0x20'),_0x42b6b2,_0x4ab8('0x1e'),JSON['stringify'](_0x22b160));if(_0x22b160[_0x4ab8('0x21')]){if(_0x22b160[_0x4ab8('0x21')]['code']===0x1f4){logger['error'](_0x4ab8('0x22'),_0x42b6b2,_0x22b160['error'][_0x4ab8('0x23')]);return _0x4c0aab(_0x22b160['error'][_0x4ab8('0x23')]);}logger[_0x4ab8('0x21')](_0x4ab8('0x22'),_0x42b6b2,_0x22b160[_0x4ab8('0x21')][_0x4ab8('0x23')]);return _0x32c4d3(_0x22b160[_0x4ab8('0x21')]['message']);}else{logger[_0x4ab8('0x1d')](_0x4ab8('0x22'),_0x42b6b2,_0x4ab8('0x1e'));_0x32c4d3(_0x22b160[_0x4ab8('0x24')][_0x4ab8('0x23')]);}})[_0x4ab8('0x25')](function(_0x630d5c){logger['error']('VoiceContext,\x20%s,\x20%s',_0x42b6b2,_0x630d5c);_0x4c0aab(_0x630d5c);});});}function respondWithStatusCode(_0x3e52a3,_0xddb1ca){_0xddb1ca=_0xddb1ca||0xcc;return function(_0x848f3f){if(_0x848f3f){return _0x3e52a3['sendStatus'](_0xddb1ca);}return _0x3e52a3[_0x4ab8('0x26')](_0xddb1ca)[_0x4ab8('0x27')]();};}function respondWithResult(_0x5a7af0,_0x2903a5){_0x2903a5=_0x2903a5||0xc8;return function(_0x26cc8f){if(_0x26cc8f){return _0x5a7af0['status'](_0x2903a5)[_0x4ab8('0x28')](_0x26cc8f);}};}function respondWithFilteredResult(_0x2a1347,_0x1ff318){return function(_0x2885da){if(_0x2885da){var _0x126547=typeof _0x1ff318[_0x4ab8('0x29')]===_0x4ab8('0x2a')&&typeof _0x1ff318['limit']===_0x4ab8('0x2a');var _0xde05ff=_0x2885da['count'];var _0x32b691=_0x126547?0x0:_0x1ff318['offset'];var _0x1e6798=_0x126547?_0x2885da[_0x4ab8('0x2b')]:_0x1ff318['offset']+_0x1ff318[_0x4ab8('0x2c')];var _0x2ed312;if(_0x1e6798>=_0xde05ff){_0x1e6798=_0xde05ff;_0x2ed312=0xc8;}else{_0x2ed312=0xce;}_0x2a1347['status'](_0x2ed312);return _0x2a1347[_0x4ab8('0x2d')]('Content-Range',_0x32b691+'-'+_0x1e6798+'/'+_0xde05ff)[_0x4ab8('0x28')](_0x2885da);}return null;};}function patchUpdates(_0xd0af33){return function(_0x3b04cc){try{jsonpatch[_0x4ab8('0x2e')](_0x3b04cc,_0xd0af33,!![]);}catch(_0x37ed32){return BPromise[_0x4ab8('0x2f')](_0x37ed32);}return _0x3b04cc[_0x4ab8('0x30')]();};}function saveUpdates(_0x455e37,_0x4d5fb8){return function(_0x4f00b6){if(_0x4f00b6){return _0x4f00b6[_0x4ab8('0x31')](_0x455e37)[_0x4ab8('0x1c')](function(_0x222595){return _0x222595;});}return null;};}function removeEntity(_0x846dc6,_0x47d83c){return function(_0x1c17e2){if(_0x1c17e2){return _0x1c17e2[_0x4ab8('0x32')]()[_0x4ab8('0x1c')](function(){var _0x57e5aa=_0x1c17e2[_0x4ab8('0x33')]({'plain':!![]});var _0x5107f1=_0x4ab8('0x34');return db[_0x4ab8('0x35')]['destroy']({'where':{'type':_0x5107f1,'resourceId':_0x57e5aa['id']}})[_0x4ab8('0x1c')](function(){return _0x1c17e2;});})[_0x4ab8('0x1c')](function(){_0x846dc6[_0x4ab8('0x26')](0xcc)[_0x4ab8('0x27')]();});}};}function handleEntityNotFound(_0x1b9ca8,_0x3007c4){return function(_0x48320d){if(!_0x48320d){_0x1b9ca8[_0x4ab8('0x36')](0x194);}return _0x48320d;};}function handleError(_0xf08e51,_0x26d721){_0x26d721=_0x26d721||0x1f4;return function(_0x55515a){logger[_0x4ab8('0x21')](_0x55515a[_0x4ab8('0x37')]);if(_0x55515a[_0x4ab8('0x38')]){delete _0x55515a[_0x4ab8('0x38')];}_0xf08e51[_0x4ab8('0x26')](_0x26d721)[_0x4ab8('0x39')](_0x55515a);};}exports[_0x4ab8('0x3a')]=function(_0x159f56,_0x49d73e){var _0x46b459={},_0x4431fa={},_0x5b860a={'count':0x0,'rows':[]};var _0xc84115=_[_0x4ab8('0x3b')](db[_0x4ab8('0x3c')]['rawAttributes'],function(_0x3f5615){return{'name':_0x3f5615[_0x4ab8('0x3d')],'type':_0x3f5615[_0x4ab8('0x3e')][_0x4ab8('0x3f')]};});_0x4431fa[_0x4ab8('0x40')]=_[_0x4ab8('0x3b')](_0xc84115,_0x4ab8('0x38'));_0x4431fa['query']=_['keys'](_0x159f56[_0x4ab8('0x41')]);_0x4431fa['filters']=_[_0x4ab8('0x42')](_0x4431fa[_0x4ab8('0x40')],_0x4431fa['query']);_0x46b459[_0x4ab8('0x43')]=_[_0x4ab8('0x42')](_0x4431fa['model'],qs['fields'](_0x159f56['query'][_0x4ab8('0x44')]));_0x46b459[_0x4ab8('0x43')]=_0x46b459[_0x4ab8('0x43')][_0x4ab8('0x45')]?_0x46b459[_0x4ab8('0x43')]:_0x4431fa['model'];if(!_0x159f56[_0x4ab8('0x41')][_0x4ab8('0x46')](_0x4ab8('0x47'))){_0x46b459[_0x4ab8('0x2c')]=qs['limit'](_0x159f56[_0x4ab8('0x41')][_0x4ab8('0x2c')]);_0x46b459['offset']=qs[_0x4ab8('0x29')](_0x159f56['query'][_0x4ab8('0x29')]);}_0x46b459[_0x4ab8('0x48')]=qs['sort'](_0x159f56[_0x4ab8('0x41')][_0x4ab8('0x49')]);_0x46b459[_0x4ab8('0x4a')]=qs['filters'](_[_0x4ab8('0x4b')](_0x159f56['query'],_0x4431fa[_0x4ab8('0x4c')]),_0xc84115);if(_0x159f56[_0x4ab8('0x41')]['filter']){_0x46b459[_0x4ab8('0x4a')]=_[_0x4ab8('0x4d')](_0x46b459[_0x4ab8('0x4a')],{'$or':_[_0x4ab8('0x3b')](_0xc84115,function(_0x49052e){if(_0x49052e[_0x4ab8('0x3e')]!==_0x4ab8('0x4e')){var _0x1a8d18={};_0x1a8d18[_0x49052e[_0x4ab8('0x38')]]={'$like':'%'+_0x159f56['query'][_0x4ab8('0x4f')]+'%'};return _0x1a8d18;}})});}_0x46b459=_[_0x4ab8('0x4d')]({},_0x46b459,_0x159f56[_0x4ab8('0x50')]);var _0x242e42={'where':_0x46b459['where']};return db[_0x4ab8('0x3c')]['count'](_0x242e42)['then'](function(_0x3741ff){_0x5b860a[_0x4ab8('0x2b')]=_0x3741ff;if(_0x159f56[_0x4ab8('0x41')][_0x4ab8('0x51')]){_0x46b459[_0x4ab8('0x52')]=[{'all':!![]}];}return db[_0x4ab8('0x3c')]['findAll'](_0x46b459);})['then'](function(_0x359780){_0x5b860a[_0x4ab8('0x53')]=_0x359780;return _0x5b860a;})[_0x4ab8('0x1c')](respondWithFilteredResult(_0x49d73e,_0x46b459))[_0x4ab8('0x25')](handleError(_0x49d73e,null));};exports['show']=function(_0x5c7485,_0x147c3b){var _0x1d30a0={'raw':![],'where':{'id':_0x5c7485[_0x4ab8('0x54')]['id']}},_0xbaf224={};_0xbaf224['model']=_[_0x4ab8('0x55')](db[_0x4ab8('0x3c')][_0x4ab8('0x56')]);_0xbaf224[_0x4ab8('0x41')]=_[_0x4ab8('0x55')](_0x5c7485[_0x4ab8('0x41')]);_0xbaf224[_0x4ab8('0x4c')]=_['intersection'](_0xbaf224[_0x4ab8('0x40')],_0xbaf224[_0x4ab8('0x41')]);_0x1d30a0[_0x4ab8('0x43')]=_['intersection'](_0xbaf224[_0x4ab8('0x40')],qs['fields'](_0x5c7485['query']['fields']));_0x1d30a0[_0x4ab8('0x43')]=_0x1d30a0['attributes'][_0x4ab8('0x45')]?_0x1d30a0['attributes']:_0xbaf224[_0x4ab8('0x40')];if(_0x5c7485['query'][_0x4ab8('0x51')]){_0x1d30a0[_0x4ab8('0x52')]=[{'all':!![]}];}_0x1d30a0=_['merge']({},_0x1d30a0,_0x5c7485[_0x4ab8('0x50')]);return db['VoiceContext'][_0x4ab8('0x57')](_0x1d30a0)[_0x4ab8('0x1c')](handleEntityNotFound(_0x147c3b,null))[_0x4ab8('0x1c')](respondWithResult(_0x147c3b,null))[_0x4ab8('0x25')](handleError(_0x147c3b,null));};exports['create']=function(_0x1a74be,_0x89f7e4,_0x164a29){var _0x53805a;return db[_0x4ab8('0x3c')]['create'](_0x1a74be[_0x4ab8('0x58')],{'raw':!![]})[_0x4ab8('0x1c')](function(_0x90dd33){_0x53805a=_0x90dd33;return db[_0x4ab8('0x3c')][_0x4ab8('0x59')]({'raw':!![]});})[_0x4ab8('0x1c')](function(_0x1e5df6){var _0x5cacc5=fs[_0x4ab8('0x5a')](path[_0x4ab8('0x5b')](config['root'],_0x4ab8('0x5c')),_0x4ab8('0x5d'));var _0x55620f=ejs['render'](_0x5cacc5,{'contexts':_0x1e5df6||[]});fs[_0x4ab8('0x5e')](_0x4ab8('0x5f'),_0x55620f);})['then'](function(){return respondWithRpcPromise(_0x4ab8('0x60'),_0x4ab8('0x61'),{'module':_0x4ab8('0x62')});})[_0x4ab8('0x1c')](function(){var _0x2bd0d8=_0x1a74be[_0x4ab8('0x63')][_0x4ab8('0x33')]({'plain':!![]});if(!_0x2bd0d8)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x2bd0d8[_0x4ab8('0x64')]===_0x4ab8('0x63')){var _0x18a13c=_0x53805a[_0x4ab8('0x33')]({'plain':!![]});return db['UserProfileSection'][_0x4ab8('0x57')]({'where':{'name':_0x4ab8('0x34'),'userProfileId':_0x2bd0d8[_0x4ab8('0x65')]},'raw':!![]})[_0x4ab8('0x1c')](function(_0x483141){if(_0x483141&&_0x483141[_0x4ab8('0x66')]===0x0){return db[_0x4ab8('0x35')][_0x4ab8('0x61')]({'name':_0x18a13c[_0x4ab8('0x38')],'resourceId':_0x18a13c['id'],'type':_0x483141[_0x4ab8('0x38')],'sectionId':_0x483141['id']},{})[_0x4ab8('0x1c')](function(){return _0x53805a;});}else{return _0x53805a;}})['catch'](function(_0x5d58fa){logger[_0x4ab8('0x21')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x5d58fa);throw _0x5d58fa;});}return _0x53805a;})[_0x4ab8('0x1c')](respondWithResult(_0x89f7e4,0xc9))['catch'](handleError(_0x89f7e4,null));};exports[_0x4ab8('0x31')]=function(_0x344aa8,_0x3ae33e,_0xbdc9f7){var _0x311dbc;return db[_0x4ab8('0x3c')][_0x4ab8('0x57')]({'where':{'id':_0x344aa8[_0x4ab8('0x54')]['id']}})[_0x4ab8('0x1c')](handleEntityNotFound(_0x3ae33e,null))[_0x4ab8('0x1c')](saveUpdates(_0x344aa8[_0x4ab8('0x58')],null))['then'](function(_0x4a3c56){if(_0x4a3c56){_0x311dbc=_0x4a3c56;return db[_0x4ab8('0x3c')][_0x4ab8('0x59')]({'raw':!![]});}})['then'](function(_0x5d56bc){var _0x5377df=fs[_0x4ab8('0x5a')](path[_0x4ab8('0x5b')](config[_0x4ab8('0x67')],_0x4ab8('0x5c')),'utf8');var _0x3340f1=ejs[_0x4ab8('0x68')](_0x5377df,{'contexts':_0x5d56bc||[]});fs[_0x4ab8('0x5e')](_0x4ab8('0x5f'),_0x3340f1);})[_0x4ab8('0x1c')](function(){return respondWithRpcPromise(_0x4ab8('0x60'),'update',{'module':_0x4ab8('0x62')});})[_0x4ab8('0x1c')](function(){return _0x311dbc;})['then'](respondWithResult(_0x3ae33e,null))[_0x4ab8('0x25')](handleError(_0x3ae33e,null));};exports[_0x4ab8('0x32')]=function(_0x48728b,_0x4df759,_0x5daafe){var _0x3fa963;return db['VoiceContext'][_0x4ab8('0x57')]({'where':{'id':_0x48728b[_0x4ab8('0x54')]['id']}})[_0x4ab8('0x1c')](handleEntityNotFound(_0x4df759,null))['then'](removeEntity(_0x4df759,null))['then'](function(){return db['VoiceContext'][_0x4ab8('0x59')]({'raw':!![]});})[_0x4ab8('0x1c')](function(_0x5aa761){var _0x189b74=fs[_0x4ab8('0x5a')](path['join'](config[_0x4ab8('0x67')],_0x4ab8('0x5c')),_0x4ab8('0x5d'));var _0x24425a=ejs['render'](_0x189b74,{'contexts':_0x5aa761});fs[_0x4ab8('0x5e')](_0x4ab8('0x5f'),_0x24425a);return respondWithRpcPromise(_0x4ab8('0x60'),_0x4ab8('0x32'),{'module':_0x4ab8('0x62')});})[_0x4ab8('0x25')](handleError(_0x4df759,null));};
\ No newline at end of file
index f375e06..b8640fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f2e=['rimraf','../../config/environment','./voiceContext.attributes','VoiceContext','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x2f2e,0x1cc));var _0xe2f2=function(_0x8de54f,_0x271987){_0x8de54f=_0x8de54f-0x0;var _0x14cba4=_0x2f2e[_0x8de54f];return _0x14cba4;};'use strict';var _=require(_0xe2f2('0x0'));var util=require(_0xe2f2('0x1'));var logger=require(_0xe2f2('0x2'))(_0xe2f2('0x3'));var moment=require(_0xe2f2('0x4'));var BPromise=require(_0xe2f2('0x5'));var rp=require(_0xe2f2('0x6'));var fs=require('fs');var path=require(_0xe2f2('0x7'));var rimraf=require(_0xe2f2('0x8'));var config=require(_0xe2f2('0x9'));var attributes=require(_0xe2f2('0xa'));module['exports']=function(_0x2dd91c,_0x5c8bc2){return _0x2dd91c['define'](_0xe2f2('0xb'),attributes,{'tableName':'voice_contexts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xb72f=['./voiceContext.attributes','exports','define','lodash','util','api','moment','bluebird','rimraf','../../config/environment'];(function(_0x1b6842,_0x39e002){var _0x549c41=function(_0xb35179){while(--_0xb35179){_0x1b6842['push'](_0x1b6842['shift']());}};_0x549c41(++_0x39e002);}(_0xb72f,0x161));var _0xfb72=function(_0x441f7a,_0x576321){_0x441f7a=_0x441f7a-0x0;var _0x4821da=_0xb72f[_0x441f7a];return _0x4821da;};'use strict';var _=require(_0xfb72('0x0'));var util=require(_0xfb72('0x1'));var logger=require('../../config/logger')(_0xfb72('0x2'));var moment=require(_0xfb72('0x3'));var BPromise=require(_0xfb72('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0xfb72('0x5'));var config=require(_0xfb72('0x6'));var attributes=require(_0xfb72('0x7'));module[_0xfb72('0x8')]=function(_0x57d1f1,_0x5ae261){return _0x57d1f1[_0xfb72('0x9')]('VoiceContext',attributes,{'tableName':'voice_contexts','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index d3ab0fe..97e3ada 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5cfa=['then','info','VoiceContext,\x20%s,\x20%s','debug','request\x20sent','stringify','error','code','message','catch','lodash','moment','rpc','../../config/environment','client','http','request'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x5cfa,0x12b));var _0xa5cf=function(_0x29d67c,_0x17112d){_0x29d67c=_0x29d67c-0x0;var _0x3bea3b=_0x5cfa[_0x29d67c];return _0x3bea3b;};'use strict';var _=require(_0xa5cf('0x0'));var util=require('util');var moment=require(_0xa5cf('0x1'));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('../../config/logger')(_0xa5cf('0x2'));var config=require(_0xa5cf('0x3'));var jayson=require('jayson/promise');var client=jayson[_0xa5cf('0x4')][_0xa5cf('0x5')]({'port':0x232a});function respondWithRpcPromise(_0x1d106f,_0x52e32c,_0x3b107a){return new BPromise(function(_0x4369bb,_0x3e7b02){return client[_0xa5cf('0x6')](_0x1d106f,_0x3b107a)[_0xa5cf('0x7')](function(_0x482025){logger[_0xa5cf('0x8')](_0xa5cf('0x9'),_0x52e32c,'request\x20sent');logger[_0xa5cf('0xa')]('VoiceContext,\x20%s,\x20%s,\x20%s',_0x52e32c,_0xa5cf('0xb'),JSON[_0xa5cf('0xc')](_0x482025));if(_0x482025[_0xa5cf('0xd')]){if(_0x482025['error'][_0xa5cf('0xe')]===0x1f4){logger[_0xa5cf('0xd')]('VoiceContext,\x20%s,\x20%s',_0x52e32c,_0x482025[_0xa5cf('0xd')][_0xa5cf('0xf')]);return _0x3e7b02(_0x482025[_0xa5cf('0xd')][_0xa5cf('0xf')]);}logger[_0xa5cf('0xd')]('VoiceContext,\x20%s,\x20%s',_0x52e32c,_0x482025['error'][_0xa5cf('0xf')]);return _0x4369bb(_0x482025[_0xa5cf('0xd')]['message']);}else{logger[_0xa5cf('0x8')]('VoiceContext,\x20%s,\x20%s',_0x52e32c,_0xa5cf('0xb'));_0x4369bb(_0x482025['result'][_0xa5cf('0xf')]);}})[_0xa5cf('0x10')](function(_0x3c60d3){logger['error'](_0xa5cf('0x9'),_0x52e32c,_0x3c60d3);_0x3e7b02(_0x3c60d3);});});}
\ No newline at end of file
+var _0xe2ab=['VoiceContext,\x20%s,\x20%s,\x20%s','stringify','error','VoiceContext,\x20%s,\x20%s','message','result','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','info','request\x20sent','debug'];(function(_0x6f3151,_0x406745){var _0x305fb8=function(_0x24e5a8){while(--_0x24e5a8){_0x6f3151['push'](_0x6f3151['shift']());}};_0x305fb8(++_0x406745);}(_0xe2ab,0xc4));var _0xbe2a=function(_0x357c00,_0x34f8e5){_0x357c00=_0x357c00-0x0;var _0x226bc2=_0xe2ab[_0x357c00];return _0x226bc2;};'use strict';var _=require(_0xbe2a('0x0'));var util=require(_0xbe2a('0x1'));var moment=require(_0xbe2a('0x2'));var BPromise=require(_0xbe2a('0x3'));var rs=require(_0xbe2a('0x4'));var fs=require('fs');var Redis=require(_0xbe2a('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xbe2a('0x6'));var logger=require(_0xbe2a('0x7'))(_0xbe2a('0x8'));var config=require(_0xbe2a('0x9'));var jayson=require('jayson/promise');var client=jayson[_0xbe2a('0xa')]['http']({'port':0x232a});function respondWithRpcPromise(_0x2f504b,_0x58b8f1,_0x5a8a5d){return new BPromise(function(_0xfccbff,_0x232194){return client['request'](_0x2f504b,_0x5a8a5d)['then'](function(_0x83d775){logger[_0xbe2a('0xb')]('VoiceContext,\x20%s,\x20%s',_0x58b8f1,_0xbe2a('0xc'));logger[_0xbe2a('0xd')](_0xbe2a('0xe'),_0x58b8f1,_0xbe2a('0xc'),JSON[_0xbe2a('0xf')](_0x83d775));if(_0x83d775['error']){if(_0x83d775['error']['code']===0x1f4){logger[_0xbe2a('0x10')](_0xbe2a('0x11'),_0x58b8f1,_0x83d775[_0xbe2a('0x10')][_0xbe2a('0x12')]);return _0x232194(_0x83d775[_0xbe2a('0x10')]['message']);}logger[_0xbe2a('0x10')](_0xbe2a('0x11'),_0x58b8f1,_0x83d775[_0xbe2a('0x10')]['message']);return _0xfccbff(_0x83d775[_0xbe2a('0x10')][_0xbe2a('0x12')]);}else{logger[_0xbe2a('0xb')](_0xbe2a('0x11'),_0x58b8f1,_0xbe2a('0xc'));_0xfccbff(_0x83d775[_0xbe2a('0x13')][_0xbe2a('0x12')]);}})[_0xbe2a('0x14')](function(_0x4395fe){logger['error'](_0xbe2a('0x11'),_0x58b8f1,_0x4395fe);_0x232194(_0x4395fe);});});}
\ No newline at end of file
index 331d64d..9b28fbb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe18e=['express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voiceDialReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','create','put','update','delete','destroy','exports','multer','util'];(function(_0x4a0fed,_0x3781a7){var _0x20ae40=function(_0x3d3179){while(--_0x3d3179){_0x4a0fed['push'](_0x4a0fed['shift']());}};_0x20ae40(++_0x3781a7);}(_0xe18e,0xe5));var _0xee18=function(_0x288433,_0x1df406){_0x288433=_0x288433-0x0;var _0x39b702=_0xe18e[_0x288433];return _0x39b702;};'use strict';var multer=require(_0xee18('0x0'));var util=require(_0xee18('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require(_0xee18('0x2'));var router=express[_0xee18('0x3')]();var fs_extra=require(_0xee18('0x4'));var auth=require(_0xee18('0x5'));var interaction=require(_0xee18('0x6'));var config=require('../../config/environment');var controller=require(_0xee18('0x7'));router[_0xee18('0x8')]('/',auth[_0xee18('0x9')](),controller[_0xee18('0xa')]);router[_0xee18('0x8')](_0xee18('0xb'),auth[_0xee18('0x9')](),controller[_0xee18('0xc')]);router[_0xee18('0x8')](_0xee18('0xd'),auth['isAuthenticated'](),controller[_0xee18('0xe')]);router['post']('/',auth['isAuthenticated'](),controller[_0xee18('0xf')]);router[_0xee18('0x10')](_0xee18('0xd'),auth[_0xee18('0x9')](),controller[_0xee18('0x11')]);router[_0xee18('0x12')](_0xee18('0xd'),auth[_0xee18('0x9')](),controller[_0xee18('0x13')]);module[_0xee18('0x14')]=router;
\ No newline at end of file
+var _0x3087=['util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceDialReport.controller','get','isAuthenticated','index','/describe','describe','/:id','show','post','put','update','delete','destroy','multer'];(function(_0xa2ac9,_0xf07f28){var _0x690e9b=function(_0x5b2582){while(--_0x5b2582){_0xa2ac9['push'](_0xa2ac9['shift']());}};_0x690e9b(++_0xf07f28);}(_0x3087,0xe5));var _0x7308=function(_0x4d6f88,_0x5f074d){_0x4d6f88=_0x4d6f88-0x0;var _0x292c49=_0x3087[_0x4d6f88];return _0x292c49;};'use strict';var multer=require(_0x7308('0x0'));var util=require(_0x7308('0x1'));var path=require(_0x7308('0x2'));var timeout=require(_0x7308('0x3'));var express=require(_0x7308('0x4'));var router=express[_0x7308('0x5')]();var fs_extra=require(_0x7308('0x6'));var auth=require(_0x7308('0x7'));var interaction=require(_0x7308('0x8'));var config=require(_0x7308('0x9'));var controller=require(_0x7308('0xa'));router[_0x7308('0xb')]('/',auth[_0x7308('0xc')](),controller[_0x7308('0xd')]);router[_0x7308('0xb')](_0x7308('0xe'),auth[_0x7308('0xc')](),controller[_0x7308('0xf')]);router[_0x7308('0xb')](_0x7308('0x10'),auth['isAuthenticated'](),controller[_0x7308('0x11')]);router[_0x7308('0x12')]('/',auth['isAuthenticated'](),controller['create']);router[_0x7308('0x13')](_0x7308('0x10'),auth[_0x7308('0xc')](),controller[_0x7308('0x14')]);router[_0x7308('0x15')](_0x7308('0x10'),auth[_0x7308('0xc')](),controller[_0x7308('0x16')]);module['exports']=router;
\ No newline at end of file
index 596ce7b..733a592 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['exports','STRING','INTEGER','DATE','sequelize'];(function(_0x1d8fbd,_0x57c0db){var _0x56fb68=function(_0x5e7385){while(--_0x5e7385){_0x1d8fbd['push'](_0x1d8fbd['shift']());}};_0x56fb68(++_0x57c0db);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x35ef6b,_0x202c42){_0x35ef6b=_0x35ef6b-0x0;var _0x3ad145=_0xf3cd[_0x35ef6b];return _0x3ad145;};'use strict';var Sequelize=require(_0xdf3c('0x0'));module[_0xdf3c('0x1')]={'privilege':{'type':Sequelize[_0xdf3c('0x2')]},'channel':{'type':Sequelize[_0xdf3c('0x2')]},'channelstate':{'type':Sequelize[_0xdf3c('0x3')]},'channelstatedesc':{'type':Sequelize[_0xdf3c('0x2')]},'calleridnum':{'type':Sequelize['STRING']},'calleridname':{'type':Sequelize[_0xdf3c('0x2')]},'connectedlinenum':{'type':Sequelize[_0xdf3c('0x2')]},'connectedlinename':{'type':Sequelize[_0xdf3c('0x2')]},'language':{'type':Sequelize['STRING']},'accountcode':{'type':Sequelize[_0xdf3c('0x2')]},'context':{'type':Sequelize[_0xdf3c('0x2')]},'exten':{'type':Sequelize[_0xdf3c('0x2')]},'priority':{'type':Sequelize[_0xdf3c('0x3')]},'uniqueid':{'type':Sequelize[_0xdf3c('0x2')]},'linkedid':{'type':Sequelize[_0xdf3c('0x2')]},'destchannel':{'type':Sequelize['STRING']},'destchannelstate':{'type':Sequelize[_0xdf3c('0x3')]},'destchannelstatedesc':{'type':Sequelize['STRING']},'destcalleridnum':{'type':Sequelize['STRING']},'destcalleridname':{'type':Sequelize[_0xdf3c('0x2')]},'destconnectedlinenum':{'type':Sequelize[_0xdf3c('0x2')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0xdf3c('0x2')]},'destaccountcode':{'type':Sequelize[_0xdf3c('0x2')]},'destcontext':{'type':Sequelize[_0xdf3c('0x2')]},'destexten':{'type':Sequelize[_0xdf3c('0x2')]},'destpriority':{'type':Sequelize[_0xdf3c('0x3')]},'destuniqueid':{'type':Sequelize[_0xdf3c('0x2')]},'destlinkedid':{'type':Sequelize[_0xdf3c('0x2')]},'dialstring':{'type':Sequelize[_0xdf3c('0x2')]},'dialstatus':{'type':Sequelize['STRING']},'starttime':{'type':Sequelize[_0xdf3c('0x4')]},'answertime':{'type':Sequelize[_0xdf3c('0x4')]},'endtime':{'type':Sequelize[_0xdf3c('0x4')]},'lastevent':{'type':Sequelize[_0xdf3c('0x2')],'comment':'called,connect,complete'},'routeId':{'type':Sequelize[_0xdf3c('0x3')]},'duration':{'type':Sequelize[_0xdf3c('0x3')]},'holdtime':{'type':Sequelize[_0xdf3c('0x3')]},'billableseconds':{'type':Sequelize['INTEGER']}};
\ No newline at end of file
+var _0xedd9=['DATE','called,connect,complete','exports','STRING','INTEGER'];(function(_0x5eddff,_0x381ca1){var _0x205279=function(_0x100092){while(--_0x100092){_0x5eddff['push'](_0x5eddff['shift']());}};_0x205279(++_0x381ca1);}(_0xedd9,0xfc));var _0x9edd=function(_0x3747b4,_0x216d80){_0x3747b4=_0x3747b4-0x0;var _0x4b0cf2=_0xedd9[_0x3747b4];return _0x4b0cf2;};'use strict';var Sequelize=require('sequelize');module[_0x9edd('0x0')]={'privilege':{'type':Sequelize[_0x9edd('0x1')]},'channel':{'type':Sequelize[_0x9edd('0x1')]},'channelstate':{'type':Sequelize[_0x9edd('0x2')]},'channelstatedesc':{'type':Sequelize[_0x9edd('0x1')]},'calleridnum':{'type':Sequelize[_0x9edd('0x1')]},'calleridname':{'type':Sequelize[_0x9edd('0x1')]},'connectedlinenum':{'type':Sequelize[_0x9edd('0x1')]},'connectedlinename':{'type':Sequelize['STRING']},'language':{'type':Sequelize[_0x9edd('0x1')]},'accountcode':{'type':Sequelize[_0x9edd('0x1')]},'context':{'type':Sequelize[_0x9edd('0x1')]},'exten':{'type':Sequelize[_0x9edd('0x1')]},'priority':{'type':Sequelize['INTEGER']},'uniqueid':{'type':Sequelize[_0x9edd('0x1')]},'linkedid':{'type':Sequelize['STRING']},'destchannel':{'type':Sequelize[_0x9edd('0x1')]},'destchannelstate':{'type':Sequelize[_0x9edd('0x2')]},'destchannelstatedesc':{'type':Sequelize[_0x9edd('0x1')]},'destcalleridnum':{'type':Sequelize[_0x9edd('0x1')]},'destcalleridname':{'type':Sequelize['STRING']},'destconnectedlinenum':{'type':Sequelize[_0x9edd('0x1')]},'destconnectedlinename':{'type':Sequelize['STRING']},'destlanguage':{'type':Sequelize[_0x9edd('0x1')]},'destaccountcode':{'type':Sequelize[_0x9edd('0x1')]},'destcontext':{'type':Sequelize['STRING']},'destexten':{'type':Sequelize[_0x9edd('0x1')]},'destpriority':{'type':Sequelize[_0x9edd('0x2')]},'destuniqueid':{'type':Sequelize['STRING']},'destlinkedid':{'type':Sequelize[_0x9edd('0x1')]},'dialstring':{'type':Sequelize[_0x9edd('0x1')]},'dialstatus':{'type':Sequelize[_0x9edd('0x1')]},'starttime':{'type':Sequelize[_0x9edd('0x3')]},'answertime':{'type':Sequelize[_0x9edd('0x3')]},'endtime':{'type':Sequelize[_0x9edd('0x3')]},'lastevent':{'type':Sequelize[_0x9edd('0x1')],'comment':_0x9edd('0x4')},'routeId':{'type':Sequelize['INTEGER']},'duration':{'type':Sequelize[_0x9edd('0x2')]},'holdtime':{'type':Sequelize[_0x9edd('0x2')]},'billableseconds':{'type':Sequelize[_0x9edd('0x2')]}};
\ No newline at end of file
index 2fd538b..0ad4d62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3af8=['mustache','util','path','to-csv','ejs','lodash','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../mysqldb','sendStatus','json','offset','limit','undefined','count','status','set','Content-Range','apply','reject','save','update','then','destroy','end','error','name','send','map','rawAttributes','type','query','keys','filters','intersection','model','attributes','fields','length','nolimit','sort','where','pick','filter','merge','VoiceDialReport','include','findAll','rows','catch','find','create','body','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x91f6b4,_0x237124){var _0x472b8a=function(_0x163ac6){while(--_0x163ac6){_0x91f6b4['push'](_0x91f6b4['shift']());}};_0x472b8a(++_0x237124);}(_0x3af8,0xc7));var _0x83af=function(_0x4d7420,_0x12c453){_0x4d7420=_0x4d7420-0x0;var _0x575f76=_0x3af8[_0x4d7420];return _0x575f76;};'use strict';var emlformat=require(_0x83af('0x0'));var rimraf=require(_0x83af('0x1'));var zipdir=require(_0x83af('0x2'));var jsonpatch=require(_0x83af('0x3'));var rp=require(_0x83af('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require(_0x83af('0x5'));var util=require(_0x83af('0x6'));var path=require(_0x83af('0x7'));var sox=require('sox');var csv=require(_0x83af('0x8'));var ejs=require(_0x83af('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x83af('0xa'));var squel=require(_0x83af('0xb'));var crypto=require('crypto');var jsforce=require(_0x83af('0xc'));var deskjs=require(_0x83af('0xd'));var toCsv=require(_0x83af('0x8'));var querystring=require(_0x83af('0xe'));var Papa=require(_0x83af('0xf'));var Redis=require('ioredis');var authService=require(_0x83af('0x10'));var qs=require(_0x83af('0x11'));var as=require(_0x83af('0x12'));var hardwareService=require(_0x83af('0x13'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0x83af('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x83af('0x15'))['db'];function respondWithStatusCode(_0x1997cc,_0x57eac4){_0x57eac4=_0x57eac4||0xcc;return function(_0x1fcb04){if(_0x1fcb04){return _0x1997cc[_0x83af('0x16')](_0x57eac4);}return _0x1997cc['status'](_0x57eac4)['end']();};}function respondWithResult(_0x59564e,_0xfb50e2){_0xfb50e2=_0xfb50e2||0xc8;return function(_0x1abf26){if(_0x1abf26){return _0x59564e['status'](_0xfb50e2)[_0x83af('0x17')](_0x1abf26);}};}function respondWithFilteredResult(_0x1cf2da,_0x2d25df){return function(_0x31f45c){if(_0x31f45c){var _0x2451db=typeof _0x2d25df[_0x83af('0x18')]==='undefined'&&typeof _0x2d25df[_0x83af('0x19')]===_0x83af('0x1a');var _0x390c29=_0x31f45c[_0x83af('0x1b')];var _0x598929=_0x2451db?0x0:_0x2d25df[_0x83af('0x18')];var _0x897f9d=_0x2451db?_0x31f45c[_0x83af('0x1b')]:_0x2d25df[_0x83af('0x18')]+_0x2d25df[_0x83af('0x19')];var _0x263cc9;if(_0x897f9d>=_0x390c29){_0x897f9d=_0x390c29;_0x263cc9=0xc8;}else{_0x263cc9=0xce;}_0x1cf2da[_0x83af('0x1c')](_0x263cc9);return _0x1cf2da[_0x83af('0x1d')](_0x83af('0x1e'),_0x598929+'-'+_0x897f9d+'/'+_0x390c29)[_0x83af('0x17')](_0x31f45c);}return null;};}function patchUpdates(_0x5f1826){return function(_0x189b95){try{jsonpatch[_0x83af('0x1f')](_0x189b95,_0x5f1826,!![]);}catch(_0x14fbf7){return BPromise[_0x83af('0x20')](_0x14fbf7);}return _0x189b95[_0x83af('0x21')]();};}function saveUpdates(_0x36ffa9,_0x4062af){return function(_0x287784){if(_0x287784){return _0x287784[_0x83af('0x22')](_0x36ffa9)[_0x83af('0x23')](function(_0x3bce46){return _0x3bce46;});}return null;};}function removeEntity(_0x51df0d,_0x17b8ae){return function(_0x4569b7){if(_0x4569b7){return _0x4569b7[_0x83af('0x24')]()[_0x83af('0x23')](function(){_0x51df0d[_0x83af('0x1c')](0xcc)[_0x83af('0x25')]();});}};}function handleEntityNotFound(_0xfbc493,_0x32479f){return function(_0x4abe27){if(!_0x4abe27){_0xfbc493[_0x83af('0x16')](0x194);}return _0x4abe27;};}function handleError(_0x3695e4,_0x635bc5){_0x635bc5=_0x635bc5||0x1f4;return function(_0x1c814c){logger[_0x83af('0x26')](_0x1c814c['stack']);if(_0x1c814c[_0x83af('0x27')]){delete _0x1c814c[_0x83af('0x27')];}_0x3695e4[_0x83af('0x1c')](_0x635bc5)[_0x83af('0x28')](_0x1c814c);};}exports['index']=function(_0x5227fa,_0x26de29){var _0xf6174a={},_0x3472f0={},_0x42d086={'count':0x0,'rows':[]};var _0x3c0458=_[_0x83af('0x29')](db['VoiceDialReport'][_0x83af('0x2a')],function(_0xe893e4){return{'name':_0xe893e4['fieldName'],'type':_0xe893e4[_0x83af('0x2b')]['key']};});_0x3472f0['model']=_[_0x83af('0x29')](_0x3c0458,_0x83af('0x27'));_0x3472f0[_0x83af('0x2c')]=_[_0x83af('0x2d')](_0x5227fa[_0x83af('0x2c')]);_0x3472f0[_0x83af('0x2e')]=_[_0x83af('0x2f')](_0x3472f0[_0x83af('0x30')],_0x3472f0[_0x83af('0x2c')]);_0xf6174a[_0x83af('0x31')]=_['intersection'](_0x3472f0[_0x83af('0x30')],qs[_0x83af('0x32')](_0x5227fa[_0x83af('0x2c')][_0x83af('0x32')]));_0xf6174a[_0x83af('0x31')]=_0xf6174a['attributes'][_0x83af('0x33')]?_0xf6174a[_0x83af('0x31')]:_0x3472f0[_0x83af('0x30')];if(!_0x5227fa[_0x83af('0x2c')]['hasOwnProperty'](_0x83af('0x34'))){_0xf6174a['limit']=qs[_0x83af('0x19')](_0x5227fa[_0x83af('0x2c')][_0x83af('0x19')]);_0xf6174a[_0x83af('0x18')]=qs[_0x83af('0x18')](_0x5227fa[_0x83af('0x2c')][_0x83af('0x18')]);}_0xf6174a['order']=qs['sort'](_0x5227fa[_0x83af('0x2c')][_0x83af('0x35')]);_0xf6174a[_0x83af('0x36')]=qs[_0x83af('0x2e')](_[_0x83af('0x37')](_0x5227fa['query'],_0x3472f0['filters']),_0x3c0458);if(_0x5227fa['query']['filter']){_0xf6174a[_0x83af('0x36')]=_['merge'](_0xf6174a[_0x83af('0x36')],{'$or':_[_0x83af('0x29')](_0x3c0458,function(_0x528dd7){if(_0x528dd7['type']!=='VIRTUAL'){var _0xb410={};_0xb410[_0x528dd7[_0x83af('0x27')]]={'$like':'%'+_0x5227fa['query'][_0x83af('0x38')]+'%'};return _0xb410;}})});}_0xf6174a=_[_0x83af('0x39')]({},_0xf6174a,_0x5227fa['options']);var _0x2622e8={'where':_0xf6174a[_0x83af('0x36')]};return db[_0x83af('0x3a')][_0x83af('0x1b')](_0x2622e8)['then'](function(_0xc2eaf7){_0x42d086['count']=_0xc2eaf7;if(_0x5227fa[_0x83af('0x2c')]['includeAll']){_0xf6174a[_0x83af('0x3b')]=[{'all':!![]}];}return db[_0x83af('0x3a')][_0x83af('0x3c')](_0xf6174a);})[_0x83af('0x23')](function(_0x10809b){_0x42d086[_0x83af('0x3d')]=_0x10809b;return _0x42d086;})['then'](respondWithFilteredResult(_0x26de29,_0xf6174a))[_0x83af('0x3e')](handleError(_0x26de29,null));};exports['show']=function(_0xccf716,_0x5bef48){var _0x121be7={'raw':!![],'where':{'id':_0xccf716['params']['id']}},_0x5115bd={};_0x5115bd[_0x83af('0x30')]=_[_0x83af('0x2d')](db[_0x83af('0x3a')][_0x83af('0x2a')]);_0x5115bd[_0x83af('0x2c')]=_[_0x83af('0x2d')](_0xccf716[_0x83af('0x2c')]);_0x5115bd[_0x83af('0x2e')]=_[_0x83af('0x2f')](_0x5115bd[_0x83af('0x30')],_0x5115bd[_0x83af('0x2c')]);_0x121be7['attributes']=_[_0x83af('0x2f')](_0x5115bd[_0x83af('0x30')],qs[_0x83af('0x32')](_0xccf716['query'][_0x83af('0x32')]));_0x121be7[_0x83af('0x31')]=_0x121be7[_0x83af('0x31')]['length']?_0x121be7[_0x83af('0x31')]:_0x5115bd[_0x83af('0x30')];if(_0xccf716['query']['includeAll']){_0x121be7[_0x83af('0x3b')]=[{'all':!![]}];}_0x121be7=_['merge']({},_0x121be7,_0xccf716['options']);return db[_0x83af('0x3a')][_0x83af('0x3f')](_0x121be7)[_0x83af('0x23')](handleEntityNotFound(_0x5bef48,null))[_0x83af('0x23')](respondWithResult(_0x5bef48,null))['catch'](handleError(_0x5bef48,null));};exports[_0x83af('0x40')]=function(_0x591d7d,_0x189e1b){return db['VoiceDialReport'][_0x83af('0x40')](_0x591d7d[_0x83af('0x41')],{})['then'](respondWithResult(_0x189e1b,0xc9))[_0x83af('0x3e')](handleError(_0x189e1b,null));};exports['update']=function(_0x2e4bd1,_0x2837bc){if(_0x2e4bd1[_0x83af('0x41')]['id']){delete _0x2e4bd1[_0x83af('0x41')]['id'];}return db['VoiceDialReport']['find']({'where':{'id':_0x2e4bd1[_0x83af('0x42')]['id']}})[_0x83af('0x23')](handleEntityNotFound(_0x2837bc,null))['then'](saveUpdates(_0x2e4bd1['body'],null))[_0x83af('0x23')](respondWithResult(_0x2837bc,null))[_0x83af('0x3e')](handleError(_0x2837bc,null));};exports[_0x83af('0x24')]=function(_0x28e431,_0x30ffee){return db['VoiceDialReport']['find']({'where':{'id':_0x28e431[_0x83af('0x42')]['id']}})['then'](handleEntityNotFound(_0x30ffee,null))[_0x83af('0x23')](removeEntity(_0x30ffee,null))['catch'](handleError(_0x30ffee,null));};exports['describe']=function(_0x578527,_0x35b649){return db[_0x83af('0x3a')][_0x83af('0x43')]()[_0x83af('0x23')](respondWithResult(_0x35b649,null))[_0x83af('0x3e')](handleError(_0x35b649,null));};
\ No newline at end of file
+var _0xc5b5=['../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','limit','count','set','Content-Range','apply','reject','save','update','error','stack','name','send','index','map','VoiceDialReport','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','then','includeAll','findAll','rows','catch','show','rawAttributes','find','create','body','destroy','params','describe','eml-format','rimraf','zip-dir','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/qs','../../config/license/hardware','../../config/logger','api'];(function(_0x43c900,_0x53b528){var _0x3aaea4=function(_0x25bbe3){while(--_0x25bbe3){_0x43c900['push'](_0x43c900['shift']());}};_0x3aaea4(++_0x53b528);}(_0xc5b5,0x1da));var _0x5c5b=function(_0x104c7a,_0x219911){_0x104c7a=_0x104c7a-0x0;var _0x2a7492=_0xc5b5[_0x104c7a];return _0x2a7492;};'use strict';var emlformat=require(_0x5c5b('0x0'));var rimraf=require(_0x5c5b('0x1'));var zipdir=require(_0x5c5b('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x5c5b('0x3'));var moment=require(_0x5c5b('0x4'));var BPromise=require(_0x5c5b('0x5'));var Mustache=require(_0x5c5b('0x6'));var util=require(_0x5c5b('0x7'));var path=require(_0x5c5b('0x8'));var sox=require(_0x5c5b('0x9'));var csv=require(_0x5c5b('0xa'));var ejs=require(_0x5c5b('0xb'));var fs=require('fs');var fs_extra=require(_0x5c5b('0xc'));var _=require(_0x5c5b('0xd'));var squel=require(_0x5c5b('0xe'));var crypto=require('crypto');var jsforce=require(_0x5c5b('0xf'));var deskjs=require(_0x5c5b('0x10'));var toCsv=require(_0x5c5b('0xa'));var querystring=require('querystring');var Papa=require(_0x5c5b('0x11'));var Redis=require(_0x5c5b('0x12'));var authService=require(_0x5c5b('0x13'));var qs=require(_0x5c5b('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5c5b('0x15'));var logger=require(_0x5c5b('0x16'))(_0x5c5b('0x17'));var utils=require(_0x5c5b('0x18'));var config=require(_0x5c5b('0x19'));var licenseUtil=require(_0x5c5b('0x1a'));var db=require(_0x5c5b('0x1b'))['db'];function respondWithStatusCode(_0x2f66b3,_0x4f2c14){_0x4f2c14=_0x4f2c14||0xcc;return function(_0x52d7a2){if(_0x52d7a2){return _0x2f66b3[_0x5c5b('0x1c')](_0x4f2c14);}return _0x2f66b3['status'](_0x4f2c14)[_0x5c5b('0x1d')]();};}function respondWithResult(_0x2d7e2c,_0xd97a32){_0xd97a32=_0xd97a32||0xc8;return function(_0x4734ec){if(_0x4734ec){return _0x2d7e2c[_0x5c5b('0x1e')](_0xd97a32)[_0x5c5b('0x1f')](_0x4734ec);}};}function respondWithFilteredResult(_0x32850c,_0x322e86){return function(_0x6df5ca){if(_0x6df5ca){var _0x100650=typeof _0x322e86[_0x5c5b('0x20')]===_0x5c5b('0x21')&&typeof _0x322e86[_0x5c5b('0x22')]===_0x5c5b('0x21');var _0x2f75d7=_0x6df5ca[_0x5c5b('0x23')];var _0x48465f=_0x100650?0x0:_0x322e86[_0x5c5b('0x20')];var _0x4872da=_0x100650?_0x6df5ca[_0x5c5b('0x23')]:_0x322e86[_0x5c5b('0x20')]+_0x322e86['limit'];var _0x496803;if(_0x4872da>=_0x2f75d7){_0x4872da=_0x2f75d7;_0x496803=0xc8;}else{_0x496803=0xce;}_0x32850c[_0x5c5b('0x1e')](_0x496803);return _0x32850c[_0x5c5b('0x24')](_0x5c5b('0x25'),_0x48465f+'-'+_0x4872da+'/'+_0x2f75d7)[_0x5c5b('0x1f')](_0x6df5ca);}return null;};}function patchUpdates(_0x54459b){return function(_0x13bb6f){try{jsonpatch[_0x5c5b('0x26')](_0x13bb6f,_0x54459b,!![]);}catch(_0x437bd7){return BPromise[_0x5c5b('0x27')](_0x437bd7);}return _0x13bb6f[_0x5c5b('0x28')]();};}function saveUpdates(_0x317335,_0x1fce71){return function(_0x33d68e){if(_0x33d68e){return _0x33d68e[_0x5c5b('0x29')](_0x317335)['then'](function(_0x4d38b6){return _0x4d38b6;});}return null;};}function removeEntity(_0xc7d15b,_0x3c2eed){return function(_0x2a48af){if(_0x2a48af){return _0x2a48af['destroy']()['then'](function(){_0xc7d15b[_0x5c5b('0x1e')](0xcc)[_0x5c5b('0x1d')]();});}};}function handleEntityNotFound(_0x465141,_0x55693f){return function(_0x4206cd){if(!_0x4206cd){_0x465141[_0x5c5b('0x1c')](0x194);}return _0x4206cd;};}function handleError(_0xe551c6,_0x4d6a34){_0x4d6a34=_0x4d6a34||0x1f4;return function(_0x1ee7f5){logger[_0x5c5b('0x2a')](_0x1ee7f5[_0x5c5b('0x2b')]);if(_0x1ee7f5[_0x5c5b('0x2c')]){delete _0x1ee7f5[_0x5c5b('0x2c')];}_0xe551c6[_0x5c5b('0x1e')](_0x4d6a34)[_0x5c5b('0x2d')](_0x1ee7f5);};}exports[_0x5c5b('0x2e')]=function(_0x35cb84,_0x5232b5){var _0x2c908e={},_0x7d644e={},_0x51f211={'count':0x0,'rows':[]};var _0x85fc16=_[_0x5c5b('0x2f')](db[_0x5c5b('0x30')]['rawAttributes'],function(_0x11d532){return{'name':_0x11d532[_0x5c5b('0x31')],'type':_0x11d532[_0x5c5b('0x32')][_0x5c5b('0x33')]};});_0x7d644e[_0x5c5b('0x34')]=_[_0x5c5b('0x2f')](_0x85fc16,_0x5c5b('0x2c'));_0x7d644e[_0x5c5b('0x35')]=_[_0x5c5b('0x36')](_0x35cb84[_0x5c5b('0x35')]);_0x7d644e[_0x5c5b('0x37')]=_[_0x5c5b('0x38')](_0x7d644e['model'],_0x7d644e[_0x5c5b('0x35')]);_0x2c908e[_0x5c5b('0x39')]=_[_0x5c5b('0x38')](_0x7d644e[_0x5c5b('0x34')],qs[_0x5c5b('0x3a')](_0x35cb84[_0x5c5b('0x35')]['fields']));_0x2c908e[_0x5c5b('0x39')]=_0x2c908e[_0x5c5b('0x39')][_0x5c5b('0x3b')]?_0x2c908e[_0x5c5b('0x39')]:_0x7d644e['model'];if(!_0x35cb84[_0x5c5b('0x35')][_0x5c5b('0x3c')](_0x5c5b('0x3d'))){_0x2c908e['limit']=qs[_0x5c5b('0x22')](_0x35cb84[_0x5c5b('0x35')][_0x5c5b('0x22')]);_0x2c908e['offset']=qs[_0x5c5b('0x20')](_0x35cb84[_0x5c5b('0x35')][_0x5c5b('0x20')]);}_0x2c908e[_0x5c5b('0x3e')]=qs[_0x5c5b('0x3f')](_0x35cb84['query'][_0x5c5b('0x3f')]);_0x2c908e[_0x5c5b('0x40')]=qs[_0x5c5b('0x37')](_[_0x5c5b('0x41')](_0x35cb84[_0x5c5b('0x35')],_0x7d644e[_0x5c5b('0x37')]),_0x85fc16);if(_0x35cb84[_0x5c5b('0x35')]['filter']){_0x2c908e[_0x5c5b('0x40')]=_[_0x5c5b('0x42')](_0x2c908e[_0x5c5b('0x40')],{'$or':_['map'](_0x85fc16,function(_0x27ed28){if(_0x27ed28[_0x5c5b('0x32')]!==_0x5c5b('0x43')){var _0x5bf2b3={};_0x5bf2b3[_0x27ed28['name']]={'$like':'%'+_0x35cb84[_0x5c5b('0x35')][_0x5c5b('0x44')]+'%'};return _0x5bf2b3;}})});}_0x2c908e=_[_0x5c5b('0x42')]({},_0x2c908e,_0x35cb84[_0x5c5b('0x45')]);var _0x3e58c9={'where':_0x2c908e[_0x5c5b('0x40')]};return db[_0x5c5b('0x30')][_0x5c5b('0x23')](_0x3e58c9)[_0x5c5b('0x46')](function(_0x5bdae1){_0x51f211['count']=_0x5bdae1;if(_0x35cb84[_0x5c5b('0x35')][_0x5c5b('0x47')]){_0x2c908e['include']=[{'all':!![]}];}return db[_0x5c5b('0x30')][_0x5c5b('0x48')](_0x2c908e);})[_0x5c5b('0x46')](function(_0x4aee44){_0x51f211[_0x5c5b('0x49')]=_0x4aee44;return _0x51f211;})['then'](respondWithFilteredResult(_0x5232b5,_0x2c908e))[_0x5c5b('0x4a')](handleError(_0x5232b5,null));};exports[_0x5c5b('0x4b')]=function(_0x3bef9f,_0x108f7c){var _0x2e997e={'raw':!![],'where':{'id':_0x3bef9f['params']['id']}},_0x403b79={};_0x403b79[_0x5c5b('0x34')]=_[_0x5c5b('0x36')](db[_0x5c5b('0x30')][_0x5c5b('0x4c')]);_0x403b79[_0x5c5b('0x35')]=_[_0x5c5b('0x36')](_0x3bef9f[_0x5c5b('0x35')]);_0x403b79[_0x5c5b('0x37')]=_['intersection'](_0x403b79[_0x5c5b('0x34')],_0x403b79['query']);_0x2e997e['attributes']=_[_0x5c5b('0x38')](_0x403b79[_0x5c5b('0x34')],qs['fields'](_0x3bef9f[_0x5c5b('0x35')]['fields']));_0x2e997e['attributes']=_0x2e997e[_0x5c5b('0x39')][_0x5c5b('0x3b')]?_0x2e997e[_0x5c5b('0x39')]:_0x403b79[_0x5c5b('0x34')];if(_0x3bef9f[_0x5c5b('0x35')][_0x5c5b('0x47')]){_0x2e997e['include']=[{'all':!![]}];}_0x2e997e=_[_0x5c5b('0x42')]({},_0x2e997e,_0x3bef9f[_0x5c5b('0x45')]);return db[_0x5c5b('0x30')][_0x5c5b('0x4d')](_0x2e997e)[_0x5c5b('0x46')](handleEntityNotFound(_0x108f7c,null))[_0x5c5b('0x46')](respondWithResult(_0x108f7c,null))[_0x5c5b('0x4a')](handleError(_0x108f7c,null));};exports[_0x5c5b('0x4e')]=function(_0x26734f,_0x543437){return db[_0x5c5b('0x30')][_0x5c5b('0x4e')](_0x26734f['body'],{})[_0x5c5b('0x46')](respondWithResult(_0x543437,0xc9))[_0x5c5b('0x4a')](handleError(_0x543437,null));};exports[_0x5c5b('0x29')]=function(_0x367c85,_0x15c6a1){if(_0x367c85[_0x5c5b('0x4f')]['id']){delete _0x367c85[_0x5c5b('0x4f')]['id'];}return db[_0x5c5b('0x30')]['find']({'where':{'id':_0x367c85['params']['id']}})[_0x5c5b('0x46')](handleEntityNotFound(_0x15c6a1,null))[_0x5c5b('0x46')](saveUpdates(_0x367c85['body'],null))[_0x5c5b('0x46')](respondWithResult(_0x15c6a1,null))[_0x5c5b('0x4a')](handleError(_0x15c6a1,null));};exports[_0x5c5b('0x50')]=function(_0x7f40b,_0x1c556a){return db[_0x5c5b('0x30')]['find']({'where':{'id':_0x7f40b[_0x5c5b('0x51')]['id']}})[_0x5c5b('0x46')](handleEntityNotFound(_0x1c556a,null))['then'](removeEntity(_0x1c556a,null))[_0x5c5b('0x4a')](handleError(_0x1c556a,null));};exports[_0x5c5b('0x52')]=function(_0x30bb72,_0x3e3aea){return db['VoiceDialReport'][_0x5c5b('0x52')]()[_0x5c5b('0x46')](respondWithResult(_0x3e3aea,null))[_0x5c5b('0x4a')](handleError(_0x3e3aea,null));};
\ No newline at end of file
index 0a71873..c5aee65 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf596=['rimraf','../../config/environment','exports','VoiceDialReport','report_dial','uniqueid','lodash','../../config/logger','api','moment','bluebird','path'];(function(_0x5e465a,_0x3e0f32){var _0x52c7db=function(_0x2c9dea){while(--_0x2c9dea){_0x5e465a['push'](_0x5e465a['shift']());}};_0x52c7db(++_0x3e0f32);}(_0xf596,0x66));var _0x6f59=function(_0x1b3aef,_0x13548e){_0x1b3aef=_0x1b3aef-0x0;var _0x20fe33=_0xf596[_0x1b3aef];return _0x20fe33;};'use strict';var _=require(_0x6f59('0x0'));var util=require('util');var logger=require(_0x6f59('0x1'))(_0x6f59('0x2'));var moment=require(_0x6f59('0x3'));var BPromise=require(_0x6f59('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6f59('0x5'));var rimraf=require(_0x6f59('0x6'));var config=require(_0x6f59('0x7'));var attributes=require('./voiceDialReport.attributes');module[_0x6f59('0x8')]=function(_0x3ac024,_0x1e1e79){return _0x3ac024['define'](_0x6f59('0x9'),attributes,{'tableName':_0x6f59('0xa'),'paranoid':![],'indexes':[{'fields':[_0x6f59('0xb')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0x861c=['bluebird','request-promise','path','rimraf','../../config/environment','./voiceDialReport.attributes','exports','define','VoiceDialReport','report_dial','uniqueid','lodash','util','../../config/logger','api','moment'];(function(_0x389832,_0x10a4a9){var _0x59429e=function(_0x5f3562){while(--_0x5f3562){_0x389832['push'](_0x389832['shift']());}};_0x59429e(++_0x10a4a9);}(_0x861c,0xdb));var _0xc861=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0x861c[_0xa464c9];return _0x3d73c4;};'use strict';var _=require(_0xc861('0x0'));var util=require(_0xc861('0x1'));var logger=require(_0xc861('0x2'))(_0xc861('0x3'));var moment=require(_0xc861('0x4'));var BPromise=require(_0xc861('0x5'));var rp=require(_0xc861('0x6'));var fs=require('fs');var path=require(_0xc861('0x7'));var rimraf=require(_0xc861('0x8'));var config=require(_0xc861('0x9'));var attributes=require(_0xc861('0xa'));module[_0xc861('0xb')]=function(_0x562f12,_0xc3b5fd){return _0x562f12[_0xc861('0xc')](_0xc861('0xd'),attributes,{'tableName':_0xc861('0xe'),'paranoid':![],'indexes':[{'fields':[_0xc861('0xf')]}],'timestamps':!![]});};
\ No newline at end of file
index 2dff310..87f8122 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9aef=['jayson/promise','client','http','request','info','VoiceDialReport,\x20%s,\x20%s','request\x20sent','VoiceDialReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','CreateVoiceDialReport','VoiceDialReport','create','body','options','raw','then','debug','UpdateVoiceDialReport','update','where','attributes','limit','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc'];(function(_0x42245d,_0x51758f){var _0x4b211a=function(_0x2634e){while(--_0x2634e){_0x42245d['push'](_0x42245d['shift']());}};_0x4b211a(++_0x51758f);}(_0x9aef,0x117));var _0xf9ae=function(_0x52f42e,_0x20d966){_0x52f42e=_0x52f42e-0x0;var _0x4f25b1=_0x9aef[_0x52f42e];return _0x4f25b1;};'use strict';var _=require(_0xf9ae('0x0'));var util=require(_0xf9ae('0x1'));var moment=require(_0xf9ae('0x2'));var BPromise=require(_0xf9ae('0x3'));var rs=require(_0xf9ae('0x4'));var fs=require('fs');var Redis=require(_0xf9ae('0x5'));var db=require(_0xf9ae('0x6'))['db'];var utils=require(_0xf9ae('0x7'));var logger=require('../../config/logger')(_0xf9ae('0x8'));var config=require('../../config/environment');var jayson=require(_0xf9ae('0x9'));var client=jayson[_0xf9ae('0xa')][_0xf9ae('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x5f2a66,_0x515043,_0x2a1608){return new BPromise(function(_0x1f0cc9,_0x49bd3d){return client[_0xf9ae('0xc')](_0x5f2a66,_0x2a1608)['then'](function(_0x42804f){logger[_0xf9ae('0xd')](_0xf9ae('0xe'),_0x515043,_0xf9ae('0xf'));logger['debug'](_0xf9ae('0x10'),_0x515043,'request\x20sent',JSON[_0xf9ae('0x11')](_0x42804f));if(_0x42804f[_0xf9ae('0x12')]){if(_0x42804f[_0xf9ae('0x12')][_0xf9ae('0x13')]===0x1f4){logger[_0xf9ae('0x12')](_0xf9ae('0xe'),_0x515043,_0x42804f[_0xf9ae('0x12')][_0xf9ae('0x14')]);return _0x49bd3d(_0x42804f[_0xf9ae('0x12')][_0xf9ae('0x14')]);}logger['error'](_0xf9ae('0xe'),_0x515043,_0x42804f[_0xf9ae('0x12')]['message']);return _0x1f0cc9(_0x42804f[_0xf9ae('0x12')][_0xf9ae('0x14')]);}else{logger[_0xf9ae('0xd')](_0xf9ae('0xe'),_0x515043,_0xf9ae('0xf'));_0x1f0cc9(_0x42804f[_0xf9ae('0x15')][_0xf9ae('0x14')]);}})[_0xf9ae('0x16')](function(_0x469b24){logger[_0xf9ae('0x12')]('VoiceDialReport,\x20%s,\x20%s',_0x515043,_0x469b24);_0x49bd3d(_0x469b24);});});}exports[_0xf9ae('0x17')]=function(_0x4b35a5){var _0x5e764e=this;return new Promise(function(_0xeb60ba,_0x53768a){return db[_0xf9ae('0x18')][_0xf9ae('0x19')](_0x4b35a5[_0xf9ae('0x1a')],{'raw':_0x4b35a5[_0xf9ae('0x1b')]?_0x4b35a5['options'][_0xf9ae('0x1c')]===undefined?!![]:![]:!![]})[_0xf9ae('0x1d')](function(_0x5d47d7){logger[_0xf9ae('0xd')](_0xf9ae('0x17'),_0x4b35a5);logger[_0xf9ae('0x1e')](_0xf9ae('0x17'),_0x4b35a5,JSON[_0xf9ae('0x11')](_0x5d47d7));_0xeb60ba(_0x5d47d7);})[_0xf9ae('0x16')](function(_0x454973){logger[_0xf9ae('0x12')](_0xf9ae('0x17'),_0x454973['message'],_0x4b35a5);_0x53768a(_0x5e764e[_0xf9ae('0x12')](0x1f4,_0x454973[_0xf9ae('0x14')]));});});};exports[_0xf9ae('0x1f')]=function(_0x3c88ec){var _0x2f2f0e=this;return new Promise(function(_0x376e8d,_0x2276db){return db[_0xf9ae('0x18')][_0xf9ae('0x20')](_0x3c88ec[_0xf9ae('0x1a')],{'raw':_0x3c88ec[_0xf9ae('0x1b')]?_0x3c88ec[_0xf9ae('0x1b')][_0xf9ae('0x1c')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3c88ec['options']?_0x3c88ec[_0xf9ae('0x1b')][_0xf9ae('0x21')]||null:null,'attributes':_0x3c88ec[_0xf9ae('0x1b')]?_0x3c88ec[_0xf9ae('0x1b')][_0xf9ae('0x22')]||null:null,'limit':_0x3c88ec[_0xf9ae('0x1b')]?_0x3c88ec[_0xf9ae('0x1b')][_0xf9ae('0x23')]||null:null})[_0xf9ae('0x1d')](function(_0x38eafb){logger[_0xf9ae('0xd')](_0xf9ae('0x1f'),_0x3c88ec);logger['debug'](_0xf9ae('0x1f'),_0x3c88ec,JSON[_0xf9ae('0x11')](_0x38eafb));_0x376e8d(_0x38eafb);})[_0xf9ae('0x16')](function(_0x2a032a){logger[_0xf9ae('0x12')](_0xf9ae('0x1f'),_0x2a032a['message'],_0x3c88ec);_0x2276db(_0x2f2f0e['error'](0x1f4,_0x2a032a['message']));});});};
\ No newline at end of file
+var _0x0113=['VoiceDialReport','options','raw','CreateVoiceDialReport','debug','body','where','limit','UpdateVoiceDialReport','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceDialReport,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','VoiceDialReport,\x20%s,\x20%s','message','catch'];(function(_0x484bb5,_0x1789ff){var _0x32d1aa=function(_0x24e4ed){while(--_0x24e4ed){_0x484bb5['push'](_0x484bb5['shift']());}};_0x32d1aa(++_0x1789ff);}(_0x0113,0x120));var _0x3011=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0113[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x3011('0x0'));var util=require('util');var moment=require(_0x3011('0x1'));var BPromise=require(_0x3011('0x2'));var rs=require(_0x3011('0x3'));var fs=require('fs');var Redis=require(_0x3011('0x4'));var db=require(_0x3011('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x3011('0x6'))(_0x3011('0x7'));var config=require(_0x3011('0x8'));var jayson=require(_0x3011('0x9'));var client=jayson['client'][_0x3011('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x3f10cd,_0x2c78bc,_0x273673){return new BPromise(function(_0x1b4f46,_0x5d31be){return client[_0x3011('0xb')](_0x3f10cd,_0x273673)[_0x3011('0xc')](function(_0x1835b9){logger[_0x3011('0xd')]('VoiceDialReport,\x20%s,\x20%s',_0x2c78bc,'request\x20sent');logger['debug'](_0x3011('0xe'),_0x2c78bc,_0x3011('0xf'),JSON[_0x3011('0x10')](_0x1835b9));if(_0x1835b9['error']){if(_0x1835b9[_0x3011('0x11')][_0x3011('0x12')]===0x1f4){logger[_0x3011('0x11')](_0x3011('0x13'),_0x2c78bc,_0x1835b9[_0x3011('0x11')][_0x3011('0x14')]);return _0x5d31be(_0x1835b9['error'][_0x3011('0x14')]);}logger[_0x3011('0x11')]('VoiceDialReport,\x20%s,\x20%s',_0x2c78bc,_0x1835b9['error'][_0x3011('0x14')]);return _0x1b4f46(_0x1835b9[_0x3011('0x11')][_0x3011('0x14')]);}else{logger['info']('VoiceDialReport,\x20%s,\x20%s',_0x2c78bc,_0x3011('0xf'));_0x1b4f46(_0x1835b9['result'][_0x3011('0x14')]);}})[_0x3011('0x15')](function(_0x1d8b31){logger[_0x3011('0x11')](_0x3011('0x13'),_0x2c78bc,_0x1d8b31);_0x5d31be(_0x1d8b31);});});}exports['CreateVoiceDialReport']=function(_0x4798d1){var _0x4626cf=this;return new Promise(function(_0x41e8a6,_0x41cea3){return db[_0x3011('0x16')]['create'](_0x4798d1['body'],{'raw':_0x4798d1[_0x3011('0x17')]?_0x4798d1[_0x3011('0x17')][_0x3011('0x18')]===undefined?!![]:![]:!![]})[_0x3011('0xc')](function(_0x3b17e1){logger[_0x3011('0xd')](_0x3011('0x19'),_0x4798d1);logger[_0x3011('0x1a')](_0x3011('0x19'),_0x4798d1,JSON[_0x3011('0x10')](_0x3b17e1));_0x41e8a6(_0x3b17e1);})[_0x3011('0x15')](function(_0x56c724){logger[_0x3011('0x11')](_0x3011('0x19'),_0x56c724[_0x3011('0x14')],_0x4798d1);_0x41cea3(_0x4626cf[_0x3011('0x11')](0x1f4,_0x56c724[_0x3011('0x14')]));});});};exports['UpdateVoiceDialReport']=function(_0x1c4594){var _0x55f613=this;return new Promise(function(_0x314e5e,_0x5416f5){return db[_0x3011('0x16')]['update'](_0x1c4594[_0x3011('0x1b')],{'raw':_0x1c4594[_0x3011('0x17')]?_0x1c4594['options'][_0x3011('0x18')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1c4594[_0x3011('0x17')]?_0x1c4594['options'][_0x3011('0x1c')]||null:null,'attributes':_0x1c4594[_0x3011('0x17')]?_0x1c4594['options']['attributes']||null:null,'limit':_0x1c4594['options']?_0x1c4594[_0x3011('0x17')][_0x3011('0x1d')]||null:null})[_0x3011('0xc')](function(_0x33a070){logger[_0x3011('0xd')](_0x3011('0x1e'),_0x1c4594);logger[_0x3011('0x1a')](_0x3011('0x1e'),_0x1c4594,JSON[_0x3011('0x10')](_0x33a070));_0x314e5e(_0x33a070);})['catch'](function(_0x5ae8ae){logger[_0x3011('0x11')](_0x3011('0x1e'),_0x5ae8ae[_0x3011('0x14')],_0x1c4594);_0x5416f5(_0x55f613['error'](0x1f4,_0x5ae8ae['message']));});});};
\ No newline at end of file
index fbd08ce..c38f86d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x789d=['get','isAuthenticated','show','post','create','/:id/applications','addApplications','put','/:id','update','delete','exports','multer','util','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceExtension.controller'];(function(_0x5e3f53,_0x418250){var _0x546642=function(_0x331041){while(--_0x331041){_0x5e3f53['push'](_0x5e3f53['shift']());}};_0x546642(++_0x418250);}(_0x789d,0xc9));var _0xd789=function(_0xcc00c0,_0x303168){_0xcc00c0=_0xcc00c0-0x0;var _0x39b63b=_0x789d[_0xcc00c0];return _0x39b63b;};'use strict';var multer=require(_0xd789('0x0'));var util=require(_0xd789('0x1'));var path=require('path');var timeout=require(_0xd789('0x2'));var express=require(_0xd789('0x3'));var router=express[_0xd789('0x4')]();var fs_extra=require(_0xd789('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xd789('0x6'));var config=require(_0xd789('0x7'));var controller=require(_0xd789('0x8'));router[_0xd789('0x9')]('/',auth[_0xd789('0xa')](),controller['index']);router['get']('/:id',auth[_0xd789('0xa')](),controller[_0xd789('0xb')]);router[_0xd789('0xc')]('/',auth['isAuthenticated'](),controller[_0xd789('0xd')]);router['post'](_0xd789('0xe'),auth[_0xd789('0xa')](),controller[_0xd789('0xf')]);router[_0xd789('0x10')](_0xd789('0x11'),auth[_0xd789('0xa')](),controller[_0xd789('0x12')]);router[_0xd789('0x13')](_0xd789('0x11'),auth['isAuthenticated'](),controller['destroy']);module[_0xd789('0x14')]=router;
\ No newline at end of file
+var _0x88b5=['create','/:id/applications','addApplications','put','/:id','update','destroy','exports','multer','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceExtension.controller','isAuthenticated','index','get','show','post'];(function(_0x42a250,_0x24d268){var _0x45f350=function(_0x465ab5){while(--_0x465ab5){_0x42a250['push'](_0x42a250['shift']());}};_0x45f350(++_0x24d268);}(_0x88b5,0x152));var _0x588b=function(_0x5aaf63,_0x44d56e){_0x5aaf63=_0x5aaf63-0x0;var _0x20fae6=_0x88b5[_0x5aaf63];return _0x20fae6;};'use strict';var multer=require(_0x588b('0x0'));var util=require('util');var path=require(_0x588b('0x1'));var timeout=require(_0x588b('0x2'));var express=require(_0x588b('0x3'));var router=express[_0x588b('0x4')]();var fs_extra=require(_0x588b('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x588b('0x6'));var config=require(_0x588b('0x7'));var controller=require(_0x588b('0x8'));router['get']('/',auth[_0x588b('0x9')](),controller[_0x588b('0xa')]);router[_0x588b('0xb')]('/:id',auth['isAuthenticated'](),controller[_0x588b('0xc')]);router[_0x588b('0xd')]('/',auth[_0x588b('0x9')](),controller[_0x588b('0xe')]);router[_0x588b('0xd')](_0x588b('0xf'),auth['isAuthenticated'](),controller[_0x588b('0x10')]);router[_0x588b('0x11')](_0x588b('0x12'),auth[_0x588b('0x9')](),controller[_0x588b('0x13')]);router['delete'](_0x588b('0x12'),auth[_0x588b('0x9')](),controller[_0x588b('0x14')]);module[_0x588b('0x15')]=router;
\ No newline at end of file
index 93c060e..a27458c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2725=['NoOp','ENUM','inbound','outbound','internal','inbound-fax','system','any','*,*,*,*','INTEGER','BOOLEAN','VIRTUAL','getDataValue','exten','sequelize','STRING','compositeIndex'];(function(_0x3c11db,_0x31e5de){var _0x3aa48e=function(_0x329dea){while(--_0x329dea){_0x3c11db['push'](_0x3c11db['shift']());}};_0x3aa48e(++_0x31e5de);}(_0x2725,0xda));var _0x5272=function(_0x133fe4,_0x1f473b){_0x133fe4=_0x133fe4-0x0;var _0x4c4017=_0x2725[_0x133fe4];return _0x4c4017;};'use strict';var Sequelize=require(_0x5272('0x0'));module['exports']={'context':{'type':Sequelize[_0x5272('0x1')],'allowNull':![],'unique':_0x5272('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize[_0x5272('0x1')],'allowNull':![],'unique':'compositeIndex'},'priority':{'type':Sequelize[_0x5272('0x1')],'allowNull':![],'defaultValue':'1','unique':_0x5272('0x2')},'tag':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x5272('0x1')],'allowNull':![],'defaultValue':_0x5272('0x3')},'appdata':{'type':Sequelize[_0x5272('0x1')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x5272('0x4')](_0x5272('0x5'),_0x5272('0x6'),_0x5272('0x7'),_0x5272('0x8'),'outbound-fax',_0x5272('0x9'),_0x5272('0xa')),'allowNull':![]},'description':{'type':Sequelize[_0x5272('0x1')]},'interval':{'type':Sequelize[_0x5272('0x1')],'allowNull':![],'defaultValue':_0x5272('0xb')},'IntervalId':{'type':Sequelize[_0x5272('0xc')]},'isApp':{'type':Sequelize[_0x5272('0xd')],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x5272('0x1')],'defaultValue':null},'callerID':{'type':Sequelize[_0x5272('0x1')],'allowNull':!![]},'record':{'type':Sequelize[_0x5272('0xd')],'defaultValue':![]},'cutdigits':{'type':Sequelize[_0x5272('0xc')]},'recordingFormat':{'type':Sequelize[_0x5272('0x1')],'defaultValue':'wav'},'answer':{'type':Sequelize[_0x5272('0xd')],'defaultValue':!![]},'name':{'type':Sequelize[_0x5272('0xe')],'get':function(_0x5ddfcf){return this[_0x5272('0xf')](_0x5272('0x10'));}},'alias':{'type':Sequelize['STRING'],'allowNull':!![]}};
\ No newline at end of file
+var _0xa3f2=['sequelize','exports','compositeIndex','STRING','NoOp','ENUM','inbound','outbound','inbound-fax','system','any','INTEGER','BOOLEAN','wav','VIRTUAL','getDataValue','exten'];(function(_0x2f1f0c,_0x2a0b52){var _0xf6d721=function(_0x534e63){while(--_0x534e63){_0x2f1f0c['push'](_0x2f1f0c['shift']());}};_0xf6d721(++_0x2a0b52);}(_0xa3f2,0x187));var _0x2a3f=function(_0x59b488,_0x37956b){_0x59b488=_0x59b488-0x0;var _0x14c061=_0xa3f2[_0x59b488];return _0x14c061;};'use strict';var Sequelize=require(_0x2a3f('0x0'));module[_0x2a3f('0x1')]={'context':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x2a3f('0x2'),'validate':{'notEmpty':!![],'is':/[A-Za-z0-9._\+*!\-\[\]]+$/i}},'exten':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x2a3f('0x2')},'priority':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'1','unique':_0x2a3f('0x2')},'tag':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':'--'},'app':{'type':Sequelize[_0x2a3f('0x3')],'allowNull':![],'defaultValue':_0x2a3f('0x4')},'appdata':{'type':Sequelize[_0x2a3f('0x3')](0x1000),'allowNull':!![],'defaultValue':''},'type':{'type':Sequelize[_0x2a3f('0x5')](_0x2a3f('0x6'),_0x2a3f('0x7'),'internal',_0x2a3f('0x8'),'outbound-fax',_0x2a3f('0x9'),_0x2a3f('0xa')),'allowNull':![]},'description':{'type':Sequelize[_0x2a3f('0x3')]},'interval':{'type':Sequelize[_0x2a3f('0x3')],'allowNull':![],'defaultValue':'*,*,*,*'},'IntervalId':{'type':Sequelize[_0x2a3f('0xb')]},'isApp':{'type':Sequelize['BOOLEAN'],'allowNull':![],'defaultValue':![]},'appType':{'type':Sequelize[_0x2a3f('0x3')],'defaultValue':null},'callerID':{'type':Sequelize[_0x2a3f('0x3')],'allowNull':!![]},'record':{'type':Sequelize[_0x2a3f('0xc')],'defaultValue':![]},'cutdigits':{'type':Sequelize['INTEGER']},'recordingFormat':{'type':Sequelize[_0x2a3f('0x3')],'defaultValue':_0x2a3f('0xd')},'answer':{'type':Sequelize[_0x2a3f('0xc')],'defaultValue':!![]},'name':{'type':Sequelize[_0x2a3f('0xe')],'get':function(_0x7dc94d){return this[_0x2a3f('0xf')](_0x2a3f('0x10'));}},'alias':{'type':Sequelize[_0x2a3f('0x3')],'allowNull':!![]}};
\ No newline at end of file
index eef4be0..ff98e16 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe2d3=['json','offset','undefined','limit','count','Content-Range','destroy','then','get','InboundRoutes','OutboundRoutes','outbound','InternalRoutes','filter','ignore','map','value','includes','type','find','UserProfileResource','error','stack','name','send','VoiceExtension','fieldName','key','query','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','options','includeAll','include','rows','catch','show','params','keys','rawAttributes','create','body','startsWith','exten','concat','role','user','inbound','internal','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','description','mandatoryDisposition','alias','addApplications','sequelize','transaction','ISOLATION_LEVELS','READ_COMMITTED','VoiceExtensionId','isApp','createRouting','findAndCountAll','finally','../../components/parsers/qs','../../config/logger','api','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','sendStatus','status','end'];(function(_0x56f130,_0x502c55){var _0x345f75=function(_0x5267fc){while(--_0x5267fc){_0x56f130['push'](_0x56f130['shift']());}};_0x345f75(++_0x502c55);}(_0xe2d3,0x102));var _0x3e2d=function(_0x12bcf7,_0xc11103){_0x12bcf7=_0x12bcf7-0x0;var _0x2825a=_0xe2d3[_0x12bcf7];return _0x2825a;};'use strict';var _=require('lodash');var Redis=require('ioredis');var qs=require(_0x3e2d('0x0'));var logger=require(_0x3e2d('0x1'))(_0x3e2d('0x2'));var config=require('../../config/environment');var db=require(_0x3e2d('0x3'))['db'];config[_0x3e2d('0x4')]=_[_0x3e2d('0x5')](config[_0x3e2d('0x4')],{'host':_0x3e2d('0x6'),'port':0x18eb});var socket=require(_0x3e2d('0x7'))(new Redis(config['redis']));require(_0x3e2d('0x8'))['register'](socket);function respondWithStatusCode(_0x26564d,_0x31b611){_0x31b611=_0x31b611||0xcc;return function(_0x260640){if(_0x260640){return _0x26564d[_0x3e2d('0x9')](_0x31b611);}return _0x26564d[_0x3e2d('0xa')](_0x31b611)[_0x3e2d('0xb')]();};}function respondWithResult(_0x298f7c,_0x27f836){_0x27f836=_0x27f836||0xc8;return function(_0x53e612){if(_0x53e612){return _0x298f7c['status'](_0x27f836)[_0x3e2d('0xc')](_0x53e612);}};}function respondWithFilteredResult(_0xfe2010,_0x591e35){return function(_0x581760){if(_0x581760){var _0x41b362=typeof _0x591e35[_0x3e2d('0xd')]===_0x3e2d('0xe')&&typeof _0x591e35[_0x3e2d('0xf')]===_0x3e2d('0xe');var _0x3e604e=_0x581760[_0x3e2d('0x10')];var _0x439c8b=_0x41b362?0x0:_0x591e35[_0x3e2d('0xd')];var _0x13c792=_0x41b362?_0x581760[_0x3e2d('0x10')]:_0x591e35['offset']+_0x591e35[_0x3e2d('0xf')];var _0x132dee;if(_0x13c792>=_0x3e604e){_0x13c792=_0x3e604e;_0x132dee=0xc8;}else{_0x132dee=0xce;}_0xfe2010['status'](_0x132dee);return _0xfe2010['set'](_0x3e2d('0x11'),_0x439c8b+'-'+_0x13c792+'/'+_0x3e604e)['json'](_0x581760);}return null;};}function removeEntity(_0x50b0e2){return function(_0x29a448){if(_0x29a448){return _0x29a448[_0x3e2d('0x12')]()[_0x3e2d('0x13')](function(){var _0x3fc6cb=_0x29a448[_0x3e2d('0x14')]({'plain':!![]});var _0x191d97=[{'name':_0x3e2d('0x15'),'value':'inbound','ignore':![]},{'name':_0x3e2d('0x16'),'value':_0x3e2d('0x17'),'ignore':![]},{'name':_0x3e2d('0x18'),'value':'internal','ignore':![]}];var _0xd78391=_(_0x191d97)[_0x3e2d('0x19')](_0x3e2d('0x1a'))[_0x3e2d('0x1b')](_0x3e2d('0x1c'))[_0x3e2d('0x1c')]();if(_[_0x3e2d('0x1d')](_0xd78391,_0x3fc6cb[_0x3e2d('0x1e')])){return;}var _0x2274a7=_[_0x3e2d('0x1f')](_0x191d97,[_0x3e2d('0x1c'),_0x3fc6cb[_0x3e2d('0x1e')]])['name'];return db[_0x3e2d('0x20')]['destroy']({'where':{'type':_0x2274a7,'resourceId':_0x3fc6cb['id']}})['then'](function(){return _0x29a448;});})['then'](function(){_0x50b0e2[_0x3e2d('0xa')](0xcc)[_0x3e2d('0xb')]();});}};}function handleEntityNotFound(_0x458b5c){return function(_0x3d9af3){if(!_0x3d9af3){_0x458b5c[_0x3e2d('0x9')](0x194);}return _0x3d9af3;};}function handleError(_0x1e5ca2,_0x3fd0f4){_0x3fd0f4=_0x3fd0f4||0x1f4;return function(_0x9753f3){logger[_0x3e2d('0x21')](_0x9753f3[_0x3e2d('0x22')]);if(_0x9753f3[_0x3e2d('0x23')]){delete _0x9753f3[_0x3e2d('0x23')];}_0x1e5ca2[_0x3e2d('0xa')](_0x3fd0f4)[_0x3e2d('0x24')](_0x9753f3);};}exports['index']=function(_0x218ced,_0x4fdf06){var _0x10f709={},_0x17bd28={},_0x56b0fc={'count':0x0,'rows':[]};var _0x59396d=_[_0x3e2d('0x1b')](db[_0x3e2d('0x25')]['rawAttributes'],function(_0x597c6b){return{'name':_0x597c6b[_0x3e2d('0x26')],'type':_0x597c6b[_0x3e2d('0x1e')][_0x3e2d('0x27')]};});_0x17bd28['model']=_['map'](_0x59396d,'name');_0x17bd28[_0x3e2d('0x28')]=_['keys'](_0x218ced['query']);_0x17bd28['filters']=_[_0x3e2d('0x29')](_0x17bd28[_0x3e2d('0x2a')],_0x17bd28[_0x3e2d('0x28')]);_0x10f709[_0x3e2d('0x2b')]=_[_0x3e2d('0x29')](_0x17bd28[_0x3e2d('0x2a')],qs[_0x3e2d('0x2c')](_0x218ced[_0x3e2d('0x28')][_0x3e2d('0x2c')]));_0x10f709[_0x3e2d('0x2b')]=_0x10f709['attributes'][_0x3e2d('0x2d')]?_0x10f709[_0x3e2d('0x2b')]:_0x17bd28['model'];if(!_0x218ced[_0x3e2d('0x28')][_0x3e2d('0x2e')](_0x3e2d('0x2f'))){_0x10f709[_0x3e2d('0xf')]=qs['limit'](_0x218ced[_0x3e2d('0x28')][_0x3e2d('0xf')]);_0x10f709['offset']=qs[_0x3e2d('0xd')](_0x218ced[_0x3e2d('0x28')][_0x3e2d('0xd')]);}_0x10f709[_0x3e2d('0x30')]=qs[_0x3e2d('0x31')](_0x218ced[_0x3e2d('0x28')]['sort']);_0x10f709[_0x3e2d('0x32')]=qs[_0x3e2d('0x33')](_[_0x3e2d('0x34')](_0x218ced['query'],_0x17bd28['filters']),_0x59396d);if(_0x218ced[_0x3e2d('0x28')][_0x3e2d('0x19')]){_0x10f709[_0x3e2d('0x32')]=_[_0x3e2d('0x35')](_0x10f709['where'],{'$or':_['map'](_0x59396d,function(_0x16795b){if(_0x16795b[_0x3e2d('0x1e')]!=='VIRTUAL'){var _0x534cc3={};_0x534cc3[_0x16795b[_0x3e2d('0x23')]]={'$like':'%'+_0x218ced[_0x3e2d('0x28')]['filter']+'%'};return _0x534cc3;}})});}_0x10f709=_[_0x3e2d('0x35')]({},_0x10f709,_0x218ced[_0x3e2d('0x36')]);var _0x205765={'where':_0x10f709['where']};return db[_0x3e2d('0x25')][_0x3e2d('0x10')](_0x205765)[_0x3e2d('0x13')](function(_0x2bf04e){_0x56b0fc[_0x3e2d('0x10')]=_0x2bf04e;if(_0x218ced[_0x3e2d('0x28')][_0x3e2d('0x37')]){_0x10f709[_0x3e2d('0x38')]=[{'all':!![]}];}return db[_0x3e2d('0x25')]['findAll'](_0x10f709);})[_0x3e2d('0x13')](function(_0x150e66){_0x56b0fc[_0x3e2d('0x39')]=_0x150e66;return _0x56b0fc;})[_0x3e2d('0x13')](respondWithFilteredResult(_0x4fdf06,_0x10f709))[_0x3e2d('0x3a')](handleError(_0x4fdf06,null));};exports[_0x3e2d('0x3b')]=function(_0x11dc1c,_0xd2e5f6){var _0x503454={'raw':![],'where':{'id':_0x11dc1c[_0x3e2d('0x3c')]['id']}},_0x45e353={};_0x45e353[_0x3e2d('0x2a')]=_[_0x3e2d('0x3d')](db['VoiceExtension'][_0x3e2d('0x3e')]);_0x45e353['query']=_[_0x3e2d('0x3d')](_0x11dc1c[_0x3e2d('0x28')]);_0x45e353['filters']=_[_0x3e2d('0x29')](_0x45e353['model'],_0x45e353['query']);_0x503454[_0x3e2d('0x2b')]=_[_0x3e2d('0x29')](_0x45e353[_0x3e2d('0x2a')],qs['fields'](_0x11dc1c[_0x3e2d('0x28')][_0x3e2d('0x2c')]));_0x503454[_0x3e2d('0x2b')]=_0x503454[_0x3e2d('0x2b')]['length']?_0x503454[_0x3e2d('0x2b')]:_0x45e353[_0x3e2d('0x2a')];if(_0x11dc1c['query'][_0x3e2d('0x37')]){_0x503454[_0x3e2d('0x38')]=[{'all':!![]}];}_0x503454=_[_0x3e2d('0x35')]({},_0x503454,_0x11dc1c[_0x3e2d('0x36')]);return db[_0x3e2d('0x25')][_0x3e2d('0x1f')](_0x503454)[_0x3e2d('0x13')](handleEntityNotFound(_0xd2e5f6,null))[_0x3e2d('0x13')](respondWithResult(_0xd2e5f6,null))[_0x3e2d('0x3a')](handleError(_0xd2e5f6,null));};exports['destroy']=function(_0x15f17f,_0x12aa2c){return db[_0x3e2d('0x25')]['find']({'where':{'id':_0x15f17f[_0x3e2d('0x3c')]['id']}})[_0x3e2d('0x13')](handleEntityNotFound(_0x12aa2c,null))[_0x3e2d('0x13')](removeEntity(_0x12aa2c,null))[_0x3e2d('0x3a')](handleError(_0x12aa2c,null));};exports[_0x3e2d('0x3f')]=function(_0x5c95be,_0x3ef0f7){if(_0x5c95be[_0x3e2d('0x40')][_0x3e2d('0x1e')]===_0x3e2d('0x17')&&!_[_0x3e2d('0x41')](_0x5c95be[_0x3e2d('0x40')][_0x3e2d('0x42')],'_')){_0x5c95be[_0x3e2d('0x40')][_0x3e2d('0x42')]='_'[_0x3e2d('0x43')](_0x5c95be[_0x3e2d('0x40')][_0x3e2d('0x42')]);}return db[_0x3e2d('0x25')][_0x3e2d('0x3f')](_0x5c95be[_0x3e2d('0x40')],{'raw':![]})[_0x3e2d('0x13')](function(_0x2d8db8){var _0x5ddb18=_0x5c95be['user'][_0x3e2d('0x14')]({'plain':!![]});if(!_0x5ddb18)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5ddb18[_0x3e2d('0x44')]===_0x3e2d('0x45')){var _0x4d9f64=_0x2d8db8[_0x3e2d('0x14')]({'plain':!![]});var _0x51d504=[{'name':'InboundRoutes','value':_0x3e2d('0x46')},{'name':'OutboundRoutes','value':_0x3e2d('0x17')},{'name':_0x3e2d('0x18'),'value':_0x3e2d('0x47')}];var _0x57d4e5=_[_0x3e2d('0x1f')](_0x51d504,[_0x3e2d('0x1c'),_0x4d9f64[_0x3e2d('0x1e')]])[_0x3e2d('0x23')];return db[_0x3e2d('0x48')][_0x3e2d('0x1f')]({'where':{'name':_0x57d4e5,'userProfileId':_0x5ddb18[_0x3e2d('0x49')]},'raw':!![]})[_0x3e2d('0x13')](function(_0xa264b8){if(_0xa264b8&&_0xa264b8['autoAssociation']===0x0){return db[_0x3e2d('0x20')][_0x3e2d('0x3f')]({'name':_0x4d9f64['name'],'resourceId':_0x4d9f64['id'],'type':_0xa264b8['name'],'sectionId':_0xa264b8['id']},{})['then'](function(){return _0x2d8db8;});}else{return _0x2d8db8;}})[_0x3e2d('0x3a')](function(_0xff5dcc){logger[_0x3e2d('0x21')](_0x3e2d('0x4a'),_0xff5dcc);throw _0xff5dcc;});}return _0x2d8db8;})['then'](respondWithResult(_0x3ef0f7,0xc9))['catch'](handleError(_0x3ef0f7,null));};exports['update']=function(_0x1a2fe3,_0x55add8){if(_0x1a2fe3[_0x3e2d('0x40')]['id']){delete _0x1a2fe3['body']['id'];}return db[_0x3e2d('0x25')][_0x3e2d('0x1f')]({'where':{'id':_0x1a2fe3[_0x3e2d('0x3c')]['id']}})[_0x3e2d('0x13')](handleEntityNotFound(_0x55add8,null))[_0x3e2d('0x13')](function(_0x33a166){if(_0x33a166){return db[_0x3e2d('0x25')][_0x3e2d('0x4b')](_[_0x3e2d('0x34')](_0x1a2fe3[_0x3e2d('0x40')],[_0x3e2d('0x42'),_0x3e2d('0x4c'),_0x3e2d('0x4d'),'recordingFormat','cutdigits',_0x3e2d('0x4e'),_0x3e2d('0x4f')]),{'where':{'context':_0x33a166[_0x3e2d('0x4c')],'exten':_0x33a166[_0x3e2d('0x42')]},'individualHooks':!![]})[_0x3e2d('0x13')](function(_0x309911){return _0x309911;});}return null;})[_0x3e2d('0x13')](respondWithStatusCode(_0x55add8,null))[_0x3e2d('0x3a')](handleError(_0x55add8,null));};exports[_0x3e2d('0x50')]=function(_0x1d2faf,_0xa1f852){var _0x5afb5b=_0x1d2faf['params']['id'];var _0x5e8aa7=_0x1d2faf[_0x3e2d('0x40')];var _0x56cc85=0xc8;var _0x47f96f=null;return db[_0x3e2d('0x51')][_0x3e2d('0x52')]({'isolationLevel':db[_0x3e2d('0x51')]['Transaction'][_0x3e2d('0x53')][_0x3e2d('0x54')]},function(_0x47a61f){return db[_0x3e2d('0x25')]['findOne']({'where':{'id':_0x5afb5b},'transaction':_0x47a61f})[_0x3e2d('0x13')](function(_0x2be162){if(_0x2be162){return db['VoiceExtension']['destroy']({'where':{'VoiceExtensionId':_0x5afb5b},'transaction':_0x47a61f})[_0x3e2d('0x13')](function(){var _0x146032=_[_0x3e2d('0x1b')](_0x5e8aa7,function(_0x2ae91f){_0x2ae91f[_0x3e2d('0x55')]=_0x5afb5b;_0x2ae91f[_0x3e2d('0x56')]=!![];return _0x2ae91f;});return _0x2be162[_0x3e2d('0x57')](_0x146032);})['then'](function(_0x3821c3){return db['VoiceExtension']['bulkCreate'](_0x3821c3,{'transaction':_0x47a61f});});}else{_0x56cc85=0x194;_0x47f96f=[];}});})[_0x3e2d('0x13')](function(){if(_0x56cc85!==0x194){return db['VoiceExtension'][_0x3e2d('0x58')]({'where':{'isApp':!![],'VoiceExtensionId':_0x5afb5b},'order':'cast(priority\x20as\x20unsigned)'})[_0x3e2d('0x13')](function(_0x3f8a39){_0x47f96f=_0x3f8a39;});}})[_0x3e2d('0x3a')](function(_0x3f7b3a){_0x56cc85=0x1f4;logger[_0x3e2d('0x21')](_0x3f7b3a[_0x3e2d('0x22')]);if(_0x3f7b3a[_0x3e2d('0x23')]){delete _0x3f7b3a['name'];}_0x47f96f=_0x3f7b3a;})[_0x3e2d('0x59')](function(){if(_0x47f96f===null){_0xa1f852[_0x3e2d('0x9')](_0x56cc85);}else{if(_0x56cc85===0x1f4){_0xa1f852['status'](_0x56cc85)[_0x3e2d('0x24')](_0x47f96f);}else{_0xa1f852['status'](_0x56cc85)[_0x3e2d('0xc')](_0x47f96f);}}});};
\ No newline at end of file
+var _0x2243=['user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','OutboundRoutes','internal','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','context','description','recordingFormat','cutdigits','sequelize','transaction','Transaction','READ_COMMITTED','findOne','VoiceExtensionId','isApp','createRouting','bulkCreate','findAndCountAll','stack','lodash','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','sendStatus','status','json','offset','undefined','count','limit','Content-Range','then','get','InboundRoutes','inbound','outbound','InternalRoutes','filter','ignore','map','value','includes','type','find','name','UserProfileResource','destroy','end','error','index','VoiceExtension','rawAttributes','model','keys','query','filters','intersection','fields','attributes','hasOwnProperty','sort','where','pick','merge','VIRTUAL','options','includeAll','findAll','show','params','include','catch','body','exten','concat','create'];(function(_0x57b07c,_0x3035a5){var _0x372f20=function(_0x4f8e3a){while(--_0x4f8e3a){_0x57b07c['push'](_0x57b07c['shift']());}};_0x372f20(++_0x3035a5);}(_0x2243,0x1da));var _0x3224=function(_0x1cc3a0,_0x31c0ef){_0x1cc3a0=_0x1cc3a0-0x0;var _0x55372e=_0x2243[_0x1cc3a0];return _0x55372e;};'use strict';var _=require(_0x3224('0x0'));var Redis=require(_0x3224('0x1'));var qs=require(_0x3224('0x2'));var logger=require(_0x3224('0x3'))(_0x3224('0x4'));var config=require(_0x3224('0x5'));var db=require(_0x3224('0x6'))['db'];config[_0x3224('0x7')]=_[_0x3224('0x8')](config['redis'],{'host':_0x3224('0x9'),'port':0x18eb});var socket=require(_0x3224('0xa'))(new Redis(config[_0x3224('0x7')]));require(_0x3224('0xb'))[_0x3224('0xc')](socket);function respondWithStatusCode(_0x478030,_0x486849){_0x486849=_0x486849||0xcc;return function(_0x1b8eb9){if(_0x1b8eb9){return _0x478030[_0x3224('0xd')](_0x486849);}return _0x478030[_0x3224('0xe')](_0x486849)['end']();};}function respondWithResult(_0x71943,_0x1da815){_0x1da815=_0x1da815||0xc8;return function(_0x4a1e45){if(_0x4a1e45){return _0x71943[_0x3224('0xe')](_0x1da815)[_0x3224('0xf')](_0x4a1e45);}};}function respondWithFilteredResult(_0x5884c7,_0x15214a){return function(_0x2ffdbd){if(_0x2ffdbd){var _0x1bce8f=typeof _0x15214a[_0x3224('0x10')]===_0x3224('0x11')&&typeof _0x15214a['limit']==='undefined';var _0x2bd2af=_0x2ffdbd[_0x3224('0x12')];var _0x4a2449=_0x1bce8f?0x0:_0x15214a[_0x3224('0x10')];var _0x3d6217=_0x1bce8f?_0x2ffdbd['count']:_0x15214a[_0x3224('0x10')]+_0x15214a[_0x3224('0x13')];var _0x28f4fe;if(_0x3d6217>=_0x2bd2af){_0x3d6217=_0x2bd2af;_0x28f4fe=0xc8;}else{_0x28f4fe=0xce;}_0x5884c7[_0x3224('0xe')](_0x28f4fe);return _0x5884c7['set'](_0x3224('0x14'),_0x4a2449+'-'+_0x3d6217+'/'+_0x2bd2af)[_0x3224('0xf')](_0x2ffdbd);}return null;};}function removeEntity(_0x4ce322){return function(_0x227b62){if(_0x227b62){return _0x227b62['destroy']()[_0x3224('0x15')](function(){var _0x2828f7=_0x227b62[_0x3224('0x16')]({'plain':!![]});var _0x149f2d=[{'name':_0x3224('0x17'),'value':_0x3224('0x18'),'ignore':![]},{'name':'OutboundRoutes','value':_0x3224('0x19'),'ignore':![]},{'name':_0x3224('0x1a'),'value':'internal','ignore':![]}];var _0x34bd15=_(_0x149f2d)[_0x3224('0x1b')](_0x3224('0x1c'))[_0x3224('0x1d')](_0x3224('0x1e'))[_0x3224('0x1e')]();if(_[_0x3224('0x1f')](_0x34bd15,_0x2828f7[_0x3224('0x20')])){return;}var _0x1086b7=_[_0x3224('0x21')](_0x149f2d,[_0x3224('0x1e'),_0x2828f7['type']])[_0x3224('0x22')];return db[_0x3224('0x23')][_0x3224('0x24')]({'where':{'type':_0x1086b7,'resourceId':_0x2828f7['id']}})[_0x3224('0x15')](function(){return _0x227b62;});})[_0x3224('0x15')](function(){_0x4ce322[_0x3224('0xe')](0xcc)[_0x3224('0x25')]();});}};}function handleEntityNotFound(_0xa25153){return function(_0xddce92){if(!_0xddce92){_0xa25153['sendStatus'](0x194);}return _0xddce92;};}function handleError(_0x453468,_0x591844){_0x591844=_0x591844||0x1f4;return function(_0x597c84){logger[_0x3224('0x26')](_0x597c84['stack']);if(_0x597c84[_0x3224('0x22')]){delete _0x597c84[_0x3224('0x22')];}_0x453468[_0x3224('0xe')](_0x591844)['send'](_0x597c84);};}exports[_0x3224('0x27')]=function(_0x3b6f9a,_0x30f10b){var _0x34a1b3={},_0x509484={},_0x3e41af={'count':0x0,'rows':[]};var _0x5ed6d7=_[_0x3224('0x1d')](db[_0x3224('0x28')][_0x3224('0x29')],function(_0x4f9d13){return{'name':_0x4f9d13['fieldName'],'type':_0x4f9d13[_0x3224('0x20')]['key']};});_0x509484[_0x3224('0x2a')]=_[_0x3224('0x1d')](_0x5ed6d7,_0x3224('0x22'));_0x509484['query']=_[_0x3224('0x2b')](_0x3b6f9a[_0x3224('0x2c')]);_0x509484[_0x3224('0x2d')]=_[_0x3224('0x2e')](_0x509484['model'],_0x509484['query']);_0x34a1b3['attributes']=_[_0x3224('0x2e')](_0x509484[_0x3224('0x2a')],qs['fields'](_0x3b6f9a[_0x3224('0x2c')][_0x3224('0x2f')]));_0x34a1b3[_0x3224('0x30')]=_0x34a1b3[_0x3224('0x30')]['length']?_0x34a1b3['attributes']:_0x509484[_0x3224('0x2a')];if(!_0x3b6f9a[_0x3224('0x2c')][_0x3224('0x31')]('nolimit')){_0x34a1b3[_0x3224('0x13')]=qs[_0x3224('0x13')](_0x3b6f9a[_0x3224('0x2c')]['limit']);_0x34a1b3[_0x3224('0x10')]=qs[_0x3224('0x10')](_0x3b6f9a[_0x3224('0x2c')]['offset']);}_0x34a1b3['order']=qs['sort'](_0x3b6f9a[_0x3224('0x2c')][_0x3224('0x32')]);_0x34a1b3[_0x3224('0x33')]=qs['filters'](_[_0x3224('0x34')](_0x3b6f9a[_0x3224('0x2c')],_0x509484['filters']),_0x5ed6d7);if(_0x3b6f9a[_0x3224('0x2c')][_0x3224('0x1b')]){_0x34a1b3[_0x3224('0x33')]=_[_0x3224('0x35')](_0x34a1b3[_0x3224('0x33')],{'$or':_[_0x3224('0x1d')](_0x5ed6d7,function(_0x273f31){if(_0x273f31[_0x3224('0x20')]!==_0x3224('0x36')){var _0x1a6d88={};_0x1a6d88[_0x273f31['name']]={'$like':'%'+_0x3b6f9a[_0x3224('0x2c')][_0x3224('0x1b')]+'%'};return _0x1a6d88;}})});}_0x34a1b3=_[_0x3224('0x35')]({},_0x34a1b3,_0x3b6f9a[_0x3224('0x37')]);var _0x1096bd={'where':_0x34a1b3[_0x3224('0x33')]};return db[_0x3224('0x28')][_0x3224('0x12')](_0x1096bd)[_0x3224('0x15')](function(_0x538da4){_0x3e41af['count']=_0x538da4;if(_0x3b6f9a[_0x3224('0x2c')][_0x3224('0x38')]){_0x34a1b3['include']=[{'all':!![]}];}return db[_0x3224('0x28')][_0x3224('0x39')](_0x34a1b3);})[_0x3224('0x15')](function(_0x11b4f1){_0x3e41af['rows']=_0x11b4f1;return _0x3e41af;})[_0x3224('0x15')](respondWithFilteredResult(_0x30f10b,_0x34a1b3))['catch'](handleError(_0x30f10b,null));};exports[_0x3224('0x3a')]=function(_0x4593bf,_0x34a4a7){var _0x2657fa={'raw':![],'where':{'id':_0x4593bf[_0x3224('0x3b')]['id']}},_0x4b7b4e={};_0x4b7b4e[_0x3224('0x2a')]=_[_0x3224('0x2b')](db['VoiceExtension'][_0x3224('0x29')]);_0x4b7b4e['query']=_[_0x3224('0x2b')](_0x4593bf[_0x3224('0x2c')]);_0x4b7b4e[_0x3224('0x2d')]=_[_0x3224('0x2e')](_0x4b7b4e['model'],_0x4b7b4e[_0x3224('0x2c')]);_0x2657fa[_0x3224('0x30')]=_[_0x3224('0x2e')](_0x4b7b4e['model'],qs['fields'](_0x4593bf[_0x3224('0x2c')][_0x3224('0x2f')]));_0x2657fa['attributes']=_0x2657fa['attributes']['length']?_0x2657fa[_0x3224('0x30')]:_0x4b7b4e['model'];if(_0x4593bf[_0x3224('0x2c')][_0x3224('0x38')]){_0x2657fa[_0x3224('0x3c')]=[{'all':!![]}];}_0x2657fa=_[_0x3224('0x35')]({},_0x2657fa,_0x4593bf[_0x3224('0x37')]);return db[_0x3224('0x28')][_0x3224('0x21')](_0x2657fa)[_0x3224('0x15')](handleEntityNotFound(_0x34a4a7,null))[_0x3224('0x15')](respondWithResult(_0x34a4a7,null))['catch'](handleError(_0x34a4a7,null));};exports[_0x3224('0x24')]=function(_0x1b8f4d,_0x19c90c){return db[_0x3224('0x28')]['find']({'where':{'id':_0x1b8f4d[_0x3224('0x3b')]['id']}})[_0x3224('0x15')](handleEntityNotFound(_0x19c90c,null))[_0x3224('0x15')](removeEntity(_0x19c90c,null))[_0x3224('0x3d')](handleError(_0x19c90c,null));};exports['create']=function(_0x5c5c8b,_0x2a8265){if(_0x5c5c8b[_0x3224('0x3e')][_0x3224('0x20')]==='outbound'&&!_['startsWith'](_0x5c5c8b[_0x3224('0x3e')][_0x3224('0x3f')],'_')){_0x5c5c8b['body'][_0x3224('0x3f')]='_'[_0x3224('0x40')](_0x5c5c8b[_0x3224('0x3e')][_0x3224('0x3f')]);}return db[_0x3224('0x28')][_0x3224('0x41')](_0x5c5c8b[_0x3224('0x3e')],{'raw':![]})[_0x3224('0x15')](function(_0x11597f){var _0x194ff0=_0x5c5c8b[_0x3224('0x42')][_0x3224('0x16')]({'plain':!![]});if(!_0x194ff0)throw new Error(_0x3224('0x43'));if(_0x194ff0[_0x3224('0x44')]===_0x3224('0x42')){var _0x5b1735=_0x11597f['get']({'plain':!![]});var _0xf94917=[{'name':_0x3224('0x17'),'value':'inbound'},{'name':_0x3224('0x45'),'value':_0x3224('0x19')},{'name':_0x3224('0x1a'),'value':_0x3224('0x46')}];var _0x3bf59d=_['find'](_0xf94917,[_0x3224('0x1e'),_0x5b1735['type']])[_0x3224('0x22')];return db[_0x3224('0x47')]['find']({'where':{'name':_0x3bf59d,'userProfileId':_0x194ff0['userProfileId']},'raw':!![]})['then'](function(_0x39deff){if(_0x39deff&&_0x39deff[_0x3224('0x48')]===0x0){return db[_0x3224('0x23')]['create']({'name':_0x5b1735['name'],'resourceId':_0x5b1735['id'],'type':_0x39deff[_0x3224('0x22')],'sectionId':_0x39deff['id']},{})['then'](function(){return _0x11597f;});}else{return _0x11597f;}})['catch'](function(_0x46604e){logger['error'](_0x3224('0x49'),_0x46604e);throw _0x46604e;});}return _0x11597f;})['then'](respondWithResult(_0x2a8265,0xc9))[_0x3224('0x3d')](handleError(_0x2a8265,null));};exports[_0x3224('0x4a')]=function(_0xc07c9d,_0x39504d){if(_0xc07c9d[_0x3224('0x3e')]['id']){delete _0xc07c9d['body']['id'];}return db[_0x3224('0x28')][_0x3224('0x21')]({'where':{'id':_0xc07c9d['params']['id']}})[_0x3224('0x15')](handleEntityNotFound(_0x39504d,null))[_0x3224('0x15')](function(_0xbb3cdc){if(_0xbb3cdc){return db[_0x3224('0x28')][_0x3224('0x4a')](_[_0x3224('0x34')](_0xc07c9d['body'],[_0x3224('0x3f'),_0x3224('0x4b'),_0x3224('0x4c'),_0x3224('0x4d'),_0x3224('0x4e'),'mandatoryDisposition','alias']),{'where':{'context':_0xbb3cdc[_0x3224('0x4b')],'exten':_0xbb3cdc[_0x3224('0x3f')]},'individualHooks':!![]})['then'](function(_0x484722){return _0x484722;});}return null;})['then'](respondWithStatusCode(_0x39504d,null))[_0x3224('0x3d')](handleError(_0x39504d,null));};exports['addApplications']=function(_0x5c80f7,_0x26878b){var _0x478663=_0x5c80f7[_0x3224('0x3b')]['id'];var _0x1d138e=_0x5c80f7['body'];var _0xf51d19=0xc8;var _0x1afdd6=null;return db[_0x3224('0x4f')][_0x3224('0x50')]({'isolationLevel':db['sequelize'][_0x3224('0x51')]['ISOLATION_LEVELS'][_0x3224('0x52')]},function(_0x29e83a){return db[_0x3224('0x28')][_0x3224('0x53')]({'where':{'id':_0x478663},'transaction':_0x29e83a})[_0x3224('0x15')](function(_0x3d01ad){if(_0x3d01ad){return db[_0x3224('0x28')][_0x3224('0x24')]({'where':{'VoiceExtensionId':_0x478663},'transaction':_0x29e83a})[_0x3224('0x15')](function(){var _0x1d096b=_['map'](_0x1d138e,function(_0x2566b2){_0x2566b2[_0x3224('0x54')]=_0x478663;_0x2566b2[_0x3224('0x55')]=!![];return _0x2566b2;});return _0x3d01ad[_0x3224('0x56')](_0x1d096b);})[_0x3224('0x15')](function(_0x4544fd){return db['VoiceExtension'][_0x3224('0x57')](_0x4544fd,{'transaction':_0x29e83a});});}else{_0xf51d19=0x194;_0x1afdd6=[];}});})[_0x3224('0x15')](function(){if(_0xf51d19!==0x194){return db['VoiceExtension'][_0x3224('0x58')]({'where':{'isApp':!![],'VoiceExtensionId':_0x478663},'order':'cast(priority\x20as\x20unsigned)'})[_0x3224('0x15')](function(_0x3cd6a0){_0x1afdd6=_0x3cd6a0;});}})[_0x3224('0x3d')](function(_0x4450c9){_0xf51d19=0x1f4;logger['error'](_0x4450c9[_0x3224('0x59')]);if(_0x4450c9[_0x3224('0x22')]){delete _0x4450c9[_0x3224('0x22')];}_0x1afdd6=_0x4450c9;})['finally'](function(){if(_0x1afdd6===null){_0x26878b[_0x3224('0xd')](_0xf51d19);}else{if(_0xf51d19===0x1f4){_0x26878b[_0x3224('0xe')](_0xf51d19)['send'](_0x1afdd6);}else{_0x26878b[_0x3224('0xe')](_0xf51d19)['json'](_0x1afdd6);}}});};
\ No newline at end of file
index 5deca31..437cc8b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3fdd=['../../mysqldb','VoiceExtension','setMaxListeners','save','update','remove','emit','exports','events'];(function(_0x23bf40,_0xf05f78){var _0x33ca5c=function(_0x261581){while(--_0x261581){_0x23bf40['push'](_0x23bf40['shift']());}};_0x33ca5c(++_0xf05f78);}(_0x3fdd,0x116));var _0xd3fd=function(_0x4ebe4b,_0x20ade5){_0x4ebe4b=_0x4ebe4b-0x0;var _0x297a5c=_0x3fdd[_0x4ebe4b];return _0x297a5c;};'use strict';var EventEmitter=require(_0xd3fd('0x0'));var VoiceExtension=require(_0xd3fd('0x1'))['db'][_0xd3fd('0x2')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0xd3fd('0x3')](0x0);var events={'afterCreate':_0xd3fd('0x4'),'afterUpdate':_0xd3fd('0x5'),'afterDestroy':_0xd3fd('0x6')};function emitEvent(_0x26e68a){return function(_0x42b849,_0x163787,_0x268eba){VoiceExtensionEvents[_0xd3fd('0x7')](_0x26e68a+':'+_0x42b849['id'],_0x42b849);VoiceExtensionEvents[_0xd3fd('0x7')](_0x26e68a,_0x42b849);_0x268eba(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];VoiceExtension['hook'](e,emitEvent(event));}}module[_0xd3fd('0x8')]=VoiceExtensionEvents;
\ No newline at end of file
+var _0xdd8e=['update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','VoiceExtension','setMaxListeners','save'];(function(_0x2642cb,_0x4b917f){var _0xe6e41=function(_0x281676){while(--_0x281676){_0x2642cb['push'](_0x2642cb['shift']());}};_0xe6e41(++_0x4b917f);}(_0xdd8e,0x1e6));var _0xedd8=function(_0x1b16ba,_0xe1a8dc){_0x1b16ba=_0x1b16ba-0x0;var _0x30d703=_0xdd8e[_0x1b16ba];return _0x30d703;};'use strict';var EventEmitter=require('events');var VoiceExtension=require(_0xedd8('0x0'))['db'][_0xedd8('0x1')];var VoiceExtensionEvents=new EventEmitter();VoiceExtensionEvents[_0xedd8('0x2')](0x0);var events={'afterCreate':_0xedd8('0x3'),'afterUpdate':_0xedd8('0x4'),'afterDestroy':_0xedd8('0x5')};function emitEvent(_0x512183){return function(_0xc2d668,_0x19d4c0,_0x3e26c2){VoiceExtensionEvents['emit'](_0x512183+':'+_0xc2d668['id'],_0xc2d668);VoiceExtensionEvents[_0xedd8('0x6')](_0x512183,_0xc2d668);_0x3e26c2(null);};}for(var e in events){if(events[_0xedd8('0x7')](e)){var event=events[e];VoiceExtension[_0xedd8('0x8')](e,emitEvent(event));}}module[_0xedd8('0x9')]=VoiceExtensionEvents;
\ No newline at end of file
index e8dc048..428049a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x42b0=['join','Interval','findAll','interval','IntervalId','*,*,*,*','intervals','map','toLowerCase','tag','Set(CALLERID(all)=','NoOp(No\x20number\x20available)','queue','playback','includes','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','splice','GotoIfTime',',${EXTEN},','outboundDial','appdata','priority','last','concat','catch','define','get','then','Hangup','lodash','./voiceExtension.attributes','models','type','Set','CDR(type)=','exten','NoOp','CDR(routeAlias)=','No\x20alias\x20set','context','inbound','push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','outbound','CDR(destination)=','${EXTEN:','cutdigits','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','MONITOR_OPTIONS=ab','outboundrouteid=','hasOwnProperty','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','trunk','timeout','options','url','split','length','phone','prefix','${EXTEN}','param','U(xcally-mixmonitor-context)','replace'];(function(_0x8ac19c,_0x5cfe49){var _0x8f341d=function(_0x32dda7){while(--_0x32dda7){_0x8ac19c['push'](_0x8ac19c['shift']());}};_0x8f341d(++_0x5cfe49);}(_0x42b0,0xbc));var _0x042b=function(_0x309385,_0x3ab38f){_0x309385=_0x309385-0x0;var _0x45b0f5=_0x42b0[_0x309385];return _0x45b0f5;};'use strict';var _=require(_0x042b('0x0'));var attributes=require(_0x042b('0x1'));module['exports']=function(_0x404215){var _0x4bf494=_0x404215[_0x042b('0x2')];function _0x5a7e27(_0x51e9e9){var _0x401a0c=0x2;var _0xd73d53=[{'type':_0x51e9e9[_0x042b('0x3')],'app':_0x042b('0x4'),'appdata':_0x042b('0x5')+_0x51e9e9['type'],'context':_0x51e9e9['context'],'exten':_0x51e9e9[_0x042b('0x6')],'priority':_0x401a0c++,'VoiceExtensionId':_0x51e9e9['id']},{'type':_0x51e9e9[_0x042b('0x3')],'app':_0x51e9e9['alias']?'Set':_0x042b('0x7'),'appdata':_0x51e9e9['alias']?_0x042b('0x8')+_0x51e9e9['alias']:_0x042b('0x9'),'context':_0x51e9e9[_0x042b('0xa')],'exten':_0x51e9e9[_0x042b('0x6')],'priority':_0x401a0c++,'VoiceExtensionId':_0x51e9e9['id']}];if(_0x51e9e9[_0x042b('0x3')]===_0x042b('0xb')){_0xd73d53[_0x042b('0xc')]({'type':_0x042b('0xb'),'app':_0x042b('0x4'),'appdata':_0x042b('0xd')+_0x51e9e9['id'],'context':_0x51e9e9[_0x042b('0xa')],'exten':_0x51e9e9[_0x042b('0x6')],'priority':_0x401a0c++,'VoiceExtensionId':_0x51e9e9['id']});}_0xd73d53[_0x042b('0xc')]({'type':_0x51e9e9[_0x042b('0x3')],'app':'Set','appdata':_0x042b('0xe'),'context':_0x51e9e9['context'],'exten':_0x51e9e9[_0x042b('0x6')],'priority':_0x401a0c++,'VoiceExtensionId':_0x51e9e9['id']},{'type':_0x51e9e9['type'],'app':_0x042b('0x4'),'appdata':_0x042b('0xf'),'context':_0x51e9e9[_0x042b('0xa')],'exten':_0x51e9e9[_0x042b('0x6')],'priority':_0x401a0c++,'VoiceExtensionId':_0x51e9e9['id']},{'type':_0x51e9e9[_0x042b('0x3')],'app':_0x042b('0x4'),'appdata':'MONITOR_OPTIONS=ab','context':_0x51e9e9[_0x042b('0xa')],'exten':_0x51e9e9[_0x042b('0x6')],'priority':_0x401a0c++,'VoiceExtensionId':_0x51e9e9['id']});return _0xd73d53;}function _0x4d6367(_0x471157){var _0x1e4eee=0x2;var _0x56f252=[{'type':_0x042b('0x10'),'app':_0x042b('0x4'),'appdata':'CDR(type)=outbound','context':_0x471157['context'],'exten':_0x471157[_0x042b('0x6')],'priority':_0x1e4eee++,'VoiceExtensionId':_0x471157['id']},{'type':_0x042b('0x10'),'app':_0x471157['alias']?_0x042b('0x4'):_0x042b('0x7'),'appdata':_0x471157['alias']?'CDR(routeAlias)='+_0x471157['alias']:'No\x20alias\x20set','context':_0x471157[_0x042b('0xa')],'exten':_0x471157[_0x042b('0x6')],'priority':_0x1e4eee++,'VoiceExtensionId':_0x471157['id']},{'type':_0x042b('0x10'),'app':_0x042b('0x4'),'appdata':_0x042b('0x11')+(_0x471157['cutdigits']?_0x042b('0x12')+_0x471157[_0x042b('0x13')]+'}':'${EXTEN}'),'context':_0x471157['context'],'exten':_0x471157[_0x042b('0x6')],'priority':_0x1e4eee++,'VoiceExtensionId':_0x471157['id']},{'type':'outbound','app':'Set','appdata':_0x042b('0xd')+_0x471157['id'],'context':_0x471157[_0x042b('0xa')],'exten':_0x471157['exten'],'priority':_0x1e4eee++,'VoiceExtensionId':_0x471157['id']},{'type':'outbound','app':_0x042b('0x14'),'appdata':_0x042b('0x15')+(_0x1e4eee+0x2)+_0x042b('0x16')+(_0x1e4eee+0x1)+')','context':_0x471157['context'],'exten':_0x471157[_0x042b('0x6')],'priority':_0x1e4eee++,'VoiceExtensionId':_0x471157['id']},{'type':_0x042b('0x10'),'app':_0x042b('0x4'),'appdata':_0x471157['cutdigits']?_0x042b('0x17')+_0x471157[_0x042b('0x13')]+'}':'CDR(prefix)=noprefix','context':_0x471157[_0x042b('0xa')],'exten':_0x471157[_0x042b('0x6')],'priority':_0x1e4eee++,'VoiceExtensionId':_0x471157['id']},{'type':_0x042b('0x10'),'app':_0x042b('0x4'),'appdata':'XCALLY-MOTION-ANSWER=0','context':_0x471157['context'],'exten':_0x471157['exten'],'priority':_0x1e4eee++,'VoiceExtensionId':_0x471157['id']},{'type':'outbound','app':_0x042b('0x4'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x471157[_0x042b('0xa')],'exten':_0x471157[_0x042b('0x6')],'priority':_0x1e4eee++,'VoiceExtensionId':_0x471157['id']},{'type':_0x042b('0x10'),'app':_0x042b('0x4'),'appdata':_0x042b('0x18'),'context':_0x471157[_0x042b('0xa')],'exten':_0x471157[_0x042b('0x6')],'priority':_0x1e4eee++,'VoiceExtensionId':_0x471157['id']},{'type':_0x042b('0x10'),'app':_0x042b('0x4'),'appdata':_0x042b('0x19')+_0x471157['id'],'context':_0x471157[_0x042b('0xa')],'exten':_0x471157[_0x042b('0x6')],'priority':_0x1e4eee++,'VoiceExtensionId':_0x471157['id']}];if(_0x471157[_0x042b('0x1a')](_0x042b('0x1b'))&&_0x471157[_0x042b('0x1b')]!==_0x042b('0x1c')){_0x56f252['push']({'type':_0x042b('0x10'),'app':_0x042b('0x4'),'appdata':_0x042b('0x1d'),'context':_0x471157[_0x042b('0xa')],'exten':_0x471157[_0x042b('0x6')],'priority':_0x1e4eee++,'VoiceExtensionId':_0x471157['id']},{'type':_0x042b('0x10'),'app':'Set','appdata':_0x042b('0x1e')+_0x471157[_0x042b('0x1b')]||'wav','context':_0x471157[_0x042b('0xa')],'exten':_0x471157[_0x042b('0x6')],'priority':_0x1e4eee++,'VoiceExtensionId':_0x471157['id']});}return _0x56f252;}function _0x2e9106(_0x124886,_0x501cf3){var _0x1b994a=[{'name':_0x042b('0x1f'),'param':0x0},{'name':_0x042b('0x20'),'param':0x1},{'name':_0x042b('0x21'),'param':0x2},{'name':_0x042b('0x22'),'param':0x3}];var _0x5deafc={};var _0x2fa7ed=_0x501cf3[_0x042b('0x23')](',');var _0x1f671d=[];for(var _0x52a350=0x0;_0x52a350<_0x1b994a[_0x042b('0x24')];_0x52a350++){switch(_0x1b994a[_0x52a350]['name']){case _0x042b('0x1f'):_0x5deafc[_0x042b('0x1f')]=_0x2fa7ed[_0x1b994a[_0x52a350]['param']][_0x042b('0x23')]('/')[0x1];_0x5deafc[_0x042b('0x25')]=_0x2fa7ed[_0x1b994a[_0x52a350]['param']]['split']('/')[0x2];_0x5deafc[_0x042b('0x26')]=_0x5deafc[_0x042b('0x25')]?_0x5deafc['phone'][_0x042b('0x23')]('$')[0x0]:undefined;_0x5deafc[_0x042b('0x25')]=_0x124886[_0x042b('0x13')]?(_0x5deafc['prefix']||'')+'${EXTEN:'+_0x124886[_0x042b('0x13')]+'}':(_0x5deafc[_0x042b('0x26')]||'')+_0x042b('0x27');_0x1f671d[_0x1b994a[_0x52a350][_0x042b('0x28')]]=['SIP',_0x5deafc['trunk'],_0x5deafc[_0x042b('0x25')]]['join']('/');break;case _0x042b('0x21'):_0x5deafc['options']=_0x2fa7ed[_0x1b994a[_0x52a350][_0x042b('0x28')]];if(_0x124886['recordingFormat']!==_0x042b('0x1c')){if(_0x5deafc[_0x042b('0x21')]['indexOf'](_0x042b('0x29'))<0x0){_0x5deafc['options']+=_0x042b('0x29');}}else{_0x5deafc['options']=_0x5deafc[_0x042b('0x21')][_0x042b('0x2a')](_0x042b('0x29'),'');}_0x1f671d[_0x1b994a[_0x52a350]['param']]=_0x5deafc['options'];break;default:_0x1f671d[_0x1b994a[_0x52a350][_0x042b('0x28')]]=_0x2fa7ed[_0x1b994a[_0x52a350][_0x042b('0x28')]];}}return _0x1f671d[_0x042b('0x2b')](',');}function _0x337db2(_0x79d5fc,_0xf5a1e7,_0x2dd193){return new Promise(function(_0x3b8e8f,_0x3ad12f){var _0x42c11d=[];if(_['isEmpty'](_0xf5a1e7))return _0x3b8e8f(_0x42c11d);_0x4bf494[_0x042b('0x2c')][_0x042b('0x2d')]({'attributes':['id',_0x042b('0x2e'),_0x042b('0x2f')],'raw':!![]})['then'](function(_0x5c0f3c){for(var _0x176bbb=0x0,_0x5b7241=0x0;_0x176bbb<_0xf5a1e7[_0x042b('0x24')];_0x176bbb++,_0x5b7241=0x0){var _0x1e352b=_0xf5a1e7[_0x176bbb];var _0x9392cb=[];var _0x4ce389=[];delete _0x1e352b['id'];if(_0x1e352b[_0x042b('0x2e')]!==_0x042b('0x30')){_0x1e352b[_0x042b('0x31')]=[_0x1e352b[_0x042b('0x2e')]];}else{_0x1e352b[_0x042b('0x31')]=_0x1e352b[_0x042b('0x2f')]?_[_0x042b('0x32')](_['filter'](_0x5c0f3c,{'IntervalId':_0x1e352b[_0x042b('0x2f')]}),'interval'):[];}_0x1e352b[_0x042b('0xa')]=_0x79d5fc[_0x042b('0xa')];_0x1e352b['exten']=_0x79d5fc[_0x042b('0x6')];if(_0x1e352b[_0x042b('0x3')])_0x1e352b[_0x042b('0x3')]=_0x1e352b[_0x042b('0x3')][_0x042b('0x33')]();if(_0x79d5fc[_0x042b('0x3')]===_0x042b('0x10')){if(_0x1e352b[_0x042b('0x1a')]('tag')&&_0x1e352b[_0x042b('0x34')]&&_0x1e352b[_0x042b('0x34')]!=='--'){_0x9392cb[_0x042b('0xc')]({'type':_0x1e352b[_0x042b('0x3')][_0x042b('0x33')](),'app':'Set','appdata':'CDR(tag)='+_0x1e352b['tag'],'context':_0x79d5fc[_0x042b('0xa')],'exten':_0x79d5fc[_0x042b('0x6')],'priority':_0x1e352b[_0x042b('0x31')][_0x042b('0x24')]+_0x2dd193+_0x5b7241++,'VoiceExtensionId':_0x79d5fc['id']});}_0x9392cb[_0x042b('0xc')]({'type':_0x1e352b['type']['toLowerCase'](),'app':_0x042b('0x14'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):'+(_0x1e352b['callerID']?_0x042b('0x35')+_0x1e352b['callerID']+')':_0x042b('0x36')),'context':_0x79d5fc[_0x042b('0xa')],'exten':_0x79d5fc[_0x042b('0x6')],'priority':_0x1e352b[_0x042b('0x31')]['length']+_0x2dd193+_0x5b7241++,'VoiceExtensionId':_0x79d5fc['id']});}else{if(_0x1e352b[_0x042b('0x1a')]('answer')){if([_0x042b('0x37'),_0x042b('0x38')][_0x042b('0x39')](_0x1e352b[_0x042b('0x3a')]['toLowerCase']())&&_0x1e352b[_0x042b('0x3b')]!==_0x042b('0x3c')){if(_0x1e352b['answer']){_0x9392cb[_0x042b('0xc')]({'type':_0x1e352b[_0x042b('0x3')][_0x042b('0x33')](),'app':_0x042b('0x14'),'appdata':_0x042b('0x3d'),'context':_0x79d5fc[_0x042b('0xa')],'exten':_0x79d5fc['exten'],'priority':_0x1e352b[_0x042b('0x31')][_0x042b('0x24')]+_0x2dd193+_0x5b7241++,'VoiceExtensionId':_0x79d5fc['id']});_0x9392cb[_0x042b('0xc')]({'type':_0x1e352b[_0x042b('0x3')]['toLowerCase'](),'app':'Set','appdata':_0x042b('0x3e'),'context':_0x79d5fc[_0x042b('0xa')],'exten':_0x79d5fc[_0x042b('0x6')],'priority':_0x1e352b[_0x042b('0x31')][_0x042b('0x24')]+_0x2dd193+_0x5b7241++,'VoiceExtensionId':_0x79d5fc['id']});}else{_0x9392cb[_0x042b('0xc')]({'type':_0x1e352b[_0x042b('0x3')][_0x042b('0x33')](),'app':'ExecIf','appdata':_0x042b('0x3f'),'context':_0x79d5fc[_0x042b('0xa')],'exten':_0x79d5fc[_0x042b('0x6')],'priority':_0x1e352b[_0x042b('0x31')][_0x042b('0x24')]+_0x2dd193+_0x5b7241++,'VoiceExtensionId':_0x79d5fc['id']});_0x9392cb[_0x042b('0xc')]({'type':_0x1e352b['type'][_0x042b('0x33')](),'app':_0x042b('0x4'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x79d5fc[_0x042b('0xa')],'exten':_0x79d5fc[_0x042b('0x6')],'priority':_0x1e352b[_0x042b('0x31')][_0x042b('0x24')]+_0x2dd193+_0x5b7241++,'VoiceExtensionId':_0x79d5fc['id']});}}}}for(var _0x385638=0x0;_0x385638<_0x1e352b[_0x042b('0x31')][_0x042b('0x24')];_0x385638++){var _0xa2d9a6=_0x2dd193+_0x1e352b[_0x042b('0x31')][_0x042b('0x24')];var _0x54140e=_0x385638===_0x1e352b[_0x042b('0x31')][_0x042b('0x24')]-0x1?_0x2dd193+_0x9392cb[_0x042b('0x24')]+_0x4ce389[_0x042b('0x24')]+0x2:_0x2dd193+_0x385638+0x1;_0x9392cb[_0x042b('0x40')](_0x385638,0x0,{'type':_0x79d5fc['type'],'app':_0x042b('0x41'),'appdata':_0x1e352b[_0x042b('0x31')][_0x385638]+'?'+_0x79d5fc[_0x042b('0xa')]+_0x042b('0x42')+_0xa2d9a6+':'+_0x79d5fc[_0x042b('0xa')]+_0x042b('0x42')+_0x54140e,'exten':_0x79d5fc[_0x042b('0x6')],'context':_0x79d5fc[_0x042b('0xa')],'priority':_0x2dd193+_0x385638,'VoiceExtensionId':_0x79d5fc['id']});}if(_0x1e352b[_0x042b('0x3b')]===_0x042b('0x43'))_0x1e352b[_0x042b('0x44')]=_0x2e9106(_0x79d5fc,_0x1e352b[_0x042b('0x44')]);_0x1e352b[_0x042b('0x45')]=_0x9392cb['length']?_[_0x042b('0x46')](_0x9392cb)['priority']+0x1:_0x2dd193;_0x42c11d=_[_0x042b('0x47')](_0x42c11d,_0x9392cb,[_0x1e352b],_0x4ce389);_0x2dd193=_['last'](_0x42c11d)['priority']+0x1;}return _0x3b8e8f(_0x42c11d);})[_0x042b('0x48')](function(_0x447c0f){_0x3ad12f(_0x447c0f);});});}return _0x404215[_0x042b('0x49')]('VoiceExtension',attributes,{'tableName':'voice_extensions','paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x551b57){var _0x415ac2=this[_0x042b('0x4a')]({'plain':!![]});var _0x4357af=_0x415ac2['type']==='outbound'?_0x4d6367(_0x415ac2):_0x5a7e27(_0x415ac2);return _0x337db2(_0x415ac2,_0x551b57,_['last'](_0x4357af)[_0x042b('0x45')]+0x1)[_0x042b('0x4b')](function(_0x3048a8){var _0x51e989=_[_0x042b('0x47')](_0x4357af,_0x3048a8);_0x51e989[_0x042b('0xc')]({'type':_0x415ac2[_0x042b('0x3')],'app':_0x042b('0x4c'),'exten':_0x415ac2[_0x042b('0x6')],'context':_0x415ac2[_0x042b('0xa')],'priority':_['last'](_0x51e989)[_0x042b('0x45')]+0x1,'VoiceExtensionId':_0x415ac2['id']});return _0x51e989;});}}});};
\ No newline at end of file
+var _0xdbf5=['CDR(type)=','context','exten','alias','CDR(routeAlias)=','No\x20alias\x20set','push','CDR(routeid)=','XCALLY-MOTION-ANSWER=0','MONITOR_OPTIONS=ab','outbound','CDR(type)=outbound','NoOp','CDR(destination)=','cutdigits','${EXTEN:','${EXTEN}','ExecIf','$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto(','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','XCALLY-MOTION-PROGRESS=0','outboundrouteid=','hasOwnProperty','recordingFormat','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','wav','trunk','timeout','url','split','length','name','param','phone','prefix','SIP','join','options','indexOf','U(xcally-mixmonitor-context)','replace','isEmpty','Interval','findAll','interval','then','*,*,*,*','intervals','tag','toLowerCase','CDR(tag)=','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):','callerID','Set(CALLERID(all)=','answer','queue','playback','includes','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','splice','GotoIfTime',',${EXTEN},','appType','appdata','priority','last','catch','define','VoiceExtension','voice_extensions','get','concat','Hangup','./voiceExtension.attributes','models','type','Set'];(function(_0x3d603d,_0x7be48){var _0x3c2e4e=function(_0x1d9618){while(--_0x1d9618){_0x3d603d['push'](_0x3d603d['shift']());}};_0x3c2e4e(++_0x7be48);}(_0xdbf5,0x18c));var _0x5dbf=function(_0x19d0c4,_0x1fb678){_0x19d0c4=_0x19d0c4-0x0;var _0x1928ef=_0xdbf5[_0x19d0c4];return _0x1928ef;};'use strict';var _=require('lodash');var attributes=require(_0x5dbf('0x0'));module['exports']=function(_0x4bde73){var _0x19d2b4=_0x4bde73[_0x5dbf('0x1')];function _0x32ec6b(_0x3afe14){var _0x38b629=0x2;var _0x1a1ea9=[{'type':_0x3afe14[_0x5dbf('0x2')],'app':_0x5dbf('0x3'),'appdata':_0x5dbf('0x4')+_0x3afe14[_0x5dbf('0x2')],'context':_0x3afe14[_0x5dbf('0x5')],'exten':_0x3afe14[_0x5dbf('0x6')],'priority':_0x38b629++,'VoiceExtensionId':_0x3afe14['id']},{'type':_0x3afe14[_0x5dbf('0x2')],'app':_0x3afe14['alias']?_0x5dbf('0x3'):'NoOp','appdata':_0x3afe14[_0x5dbf('0x7')]?_0x5dbf('0x8')+_0x3afe14[_0x5dbf('0x7')]:_0x5dbf('0x9'),'context':_0x3afe14['context'],'exten':_0x3afe14[_0x5dbf('0x6')],'priority':_0x38b629++,'VoiceExtensionId':_0x3afe14['id']}];if(_0x3afe14['type']==='inbound'){_0x1a1ea9[_0x5dbf('0xa')]({'type':'inbound','app':'Set','appdata':_0x5dbf('0xb')+_0x3afe14['id'],'context':_0x3afe14['context'],'exten':_0x3afe14[_0x5dbf('0x6')],'priority':_0x38b629++,'VoiceExtensionId':_0x3afe14['id']});}_0x1a1ea9[_0x5dbf('0xa')]({'type':_0x3afe14[_0x5dbf('0x2')],'app':_0x5dbf('0x3'),'appdata':_0x5dbf('0xc'),'context':_0x3afe14['context'],'exten':_0x3afe14['exten'],'priority':_0x38b629++,'VoiceExtensionId':_0x3afe14['id']},{'type':_0x3afe14[_0x5dbf('0x2')],'app':_0x5dbf('0x3'),'appdata':'XCALLY-MOTION-PROGRESS=0','context':_0x3afe14[_0x5dbf('0x5')],'exten':_0x3afe14[_0x5dbf('0x6')],'priority':_0x38b629++,'VoiceExtensionId':_0x3afe14['id']},{'type':_0x3afe14[_0x5dbf('0x2')],'app':_0x5dbf('0x3'),'appdata':_0x5dbf('0xd'),'context':_0x3afe14[_0x5dbf('0x5')],'exten':_0x3afe14[_0x5dbf('0x6')],'priority':_0x38b629++,'VoiceExtensionId':_0x3afe14['id']});return _0x1a1ea9;}function _0x50ef1d(_0x499cd9){var _0x16dc82=0x2;var _0xc4cb1c=[{'type':_0x5dbf('0xe'),'app':_0x5dbf('0x3'),'appdata':_0x5dbf('0xf'),'context':_0x499cd9['context'],'exten':_0x499cd9[_0x5dbf('0x6')],'priority':_0x16dc82++,'VoiceExtensionId':_0x499cd9['id']},{'type':'outbound','app':_0x499cd9['alias']?'Set':_0x5dbf('0x10'),'appdata':_0x499cd9[_0x5dbf('0x7')]?_0x5dbf('0x8')+_0x499cd9[_0x5dbf('0x7')]:_0x5dbf('0x9'),'context':_0x499cd9['context'],'exten':_0x499cd9[_0x5dbf('0x6')],'priority':_0x16dc82++,'VoiceExtensionId':_0x499cd9['id']},{'type':'outbound','app':_0x5dbf('0x3'),'appdata':_0x5dbf('0x11')+(_0x499cd9[_0x5dbf('0x12')]?_0x5dbf('0x13')+_0x499cd9[_0x5dbf('0x12')]+'}':_0x5dbf('0x14')),'context':_0x499cd9['context'],'exten':_0x499cd9[_0x5dbf('0x6')],'priority':_0x16dc82++,'VoiceExtensionId':_0x499cd9['id']},{'type':_0x5dbf('0xe'),'app':_0x5dbf('0x3'),'appdata':_0x5dbf('0xb')+_0x499cd9['id'],'context':_0x499cd9[_0x5dbf('0x5')],'exten':_0x499cd9[_0x5dbf('0x6')],'priority':_0x16dc82++,'VoiceExtensionId':_0x499cd9['id']},{'type':_0x5dbf('0xe'),'app':_0x5dbf('0x15'),'appdata':_0x5dbf('0x16')+(_0x16dc82+0x2)+_0x5dbf('0x17')+(_0x16dc82+0x1)+')','context':_0x499cd9[_0x5dbf('0x5')],'exten':_0x499cd9[_0x5dbf('0x6')],'priority':_0x16dc82++,'VoiceExtensionId':_0x499cd9['id']},{'type':_0x5dbf('0xe'),'app':_0x5dbf('0x3'),'appdata':_0x499cd9[_0x5dbf('0x12')]?_0x5dbf('0x18')+_0x499cd9[_0x5dbf('0x12')]+'}':_0x5dbf('0x19'),'context':_0x499cd9[_0x5dbf('0x5')],'exten':_0x499cd9[_0x5dbf('0x6')],'priority':_0x16dc82++,'VoiceExtensionId':_0x499cd9['id']},{'type':_0x5dbf('0xe'),'app':_0x5dbf('0x3'),'appdata':_0x5dbf('0xc'),'context':_0x499cd9['context'],'exten':_0x499cd9[_0x5dbf('0x6')],'priority':_0x16dc82++,'VoiceExtensionId':_0x499cd9['id']},{'type':_0x5dbf('0xe'),'app':_0x5dbf('0x3'),'appdata':_0x5dbf('0x1a'),'context':_0x499cd9[_0x5dbf('0x5')],'exten':_0x499cd9[_0x5dbf('0x6')],'priority':_0x16dc82++,'VoiceExtensionId':_0x499cd9['id']},{'type':_0x5dbf('0xe'),'app':_0x5dbf('0x3'),'appdata':_0x5dbf('0xd'),'context':_0x499cd9[_0x5dbf('0x5')],'exten':_0x499cd9[_0x5dbf('0x6')],'priority':_0x16dc82++,'VoiceExtensionId':_0x499cd9['id']},{'type':'outbound','app':'Set','appdata':_0x5dbf('0x1b')+_0x499cd9['id'],'context':_0x499cd9[_0x5dbf('0x5')],'exten':_0x499cd9[_0x5dbf('0x6')],'priority':_0x16dc82++,'VoiceExtensionId':_0x499cd9['id']}];if(_0x499cd9[_0x5dbf('0x1c')](_0x5dbf('0x1d'))&&_0x499cd9['recordingFormat']!=='none'){_0xc4cb1c[_0x5dbf('0xa')]({'type':_0x5dbf('0xe'),'app':'Set','appdata':_0x5dbf('0x1e'),'context':_0x499cd9[_0x5dbf('0x5')],'exten':_0x499cd9[_0x5dbf('0x6')],'priority':_0x16dc82++,'VoiceExtensionId':_0x499cd9['id']},{'type':_0x5dbf('0xe'),'app':_0x5dbf('0x3'),'appdata':'_XCALLY_MIXMONITOR_FORMAT='+_0x499cd9[_0x5dbf('0x1d')]||_0x5dbf('0x1f'),'context':_0x499cd9[_0x5dbf('0x5')],'exten':_0x499cd9[_0x5dbf('0x6')],'priority':_0x16dc82++,'VoiceExtensionId':_0x499cd9['id']});}return _0xc4cb1c;}function _0x3a8196(_0x4e4518,_0x252d54){var _0x7dc2da=[{'name':_0x5dbf('0x20'),'param':0x0},{'name':_0x5dbf('0x21'),'param':0x1},{'name':'options','param':0x2},{'name':_0x5dbf('0x22'),'param':0x3}];var _0x1e9a4e={};var _0x302dda=_0x252d54[_0x5dbf('0x23')](',');var _0x3e309a=[];for(var _0x843d9a=0x0;_0x843d9a<_0x7dc2da[_0x5dbf('0x24')];_0x843d9a++){switch(_0x7dc2da[_0x843d9a][_0x5dbf('0x25')]){case _0x5dbf('0x20'):_0x1e9a4e[_0x5dbf('0x20')]=_0x302dda[_0x7dc2da[_0x843d9a][_0x5dbf('0x26')]]['split']('/')[0x1];_0x1e9a4e[_0x5dbf('0x27')]=_0x302dda[_0x7dc2da[_0x843d9a][_0x5dbf('0x26')]][_0x5dbf('0x23')]('/')[0x2];_0x1e9a4e['prefix']=_0x1e9a4e[_0x5dbf('0x27')]?_0x1e9a4e[_0x5dbf('0x27')][_0x5dbf('0x23')]('$')[0x0]:undefined;_0x1e9a4e['phone']=_0x4e4518[_0x5dbf('0x12')]?(_0x1e9a4e[_0x5dbf('0x28')]||'')+_0x5dbf('0x13')+_0x4e4518['cutdigits']+'}':(_0x1e9a4e[_0x5dbf('0x28')]||'')+_0x5dbf('0x14');_0x3e309a[_0x7dc2da[_0x843d9a][_0x5dbf('0x26')]]=[_0x5dbf('0x29'),_0x1e9a4e[_0x5dbf('0x20')],_0x1e9a4e[_0x5dbf('0x27')]][_0x5dbf('0x2a')]('/');break;case _0x5dbf('0x2b'):_0x1e9a4e['options']=_0x302dda[_0x7dc2da[_0x843d9a]['param']];if(_0x4e4518['recordingFormat']!=='none'){if(_0x1e9a4e[_0x5dbf('0x2b')][_0x5dbf('0x2c')]('U(xcally-mixmonitor-context)')<0x0){_0x1e9a4e[_0x5dbf('0x2b')]+=_0x5dbf('0x2d');}}else{_0x1e9a4e['options']=_0x1e9a4e[_0x5dbf('0x2b')][_0x5dbf('0x2e')](_0x5dbf('0x2d'),'');}_0x3e309a[_0x7dc2da[_0x843d9a][_0x5dbf('0x26')]]=_0x1e9a4e[_0x5dbf('0x2b')];break;default:_0x3e309a[_0x7dc2da[_0x843d9a][_0x5dbf('0x26')]]=_0x302dda[_0x7dc2da[_0x843d9a][_0x5dbf('0x26')]];}}return _0x3e309a[_0x5dbf('0x2a')](',');}function _0xf5bdc5(_0x2718e9,_0x50ac70,_0x78aef3){return new Promise(function(_0x22f958,_0xec1d28){var _0x50880d=[];if(_[_0x5dbf('0x2f')](_0x50ac70))return _0x22f958(_0x50880d);_0x19d2b4[_0x5dbf('0x30')][_0x5dbf('0x31')]({'attributes':['id',_0x5dbf('0x32'),'IntervalId'],'raw':!![]})[_0x5dbf('0x33')](function(_0x561a79){for(var _0x336ba5=0x0,_0x14002b=0x0;_0x336ba5<_0x50ac70[_0x5dbf('0x24')];_0x336ba5++,_0x14002b=0x0){var _0xcc1815=_0x50ac70[_0x336ba5];var _0x4c611d=[];var _0x5c10f1=[];delete _0xcc1815['id'];if(_0xcc1815[_0x5dbf('0x32')]!==_0x5dbf('0x34')){_0xcc1815[_0x5dbf('0x35')]=[_0xcc1815['interval']];}else{_0xcc1815[_0x5dbf('0x35')]=_0xcc1815['IntervalId']?_['map'](_['filter'](_0x561a79,{'IntervalId':_0xcc1815['IntervalId']}),_0x5dbf('0x32')):[];}_0xcc1815[_0x5dbf('0x5')]=_0x2718e9['context'];_0xcc1815[_0x5dbf('0x6')]=_0x2718e9[_0x5dbf('0x6')];if(_0xcc1815['type'])_0xcc1815[_0x5dbf('0x2')]=_0xcc1815[_0x5dbf('0x2')]['toLowerCase']();if(_0x2718e9[_0x5dbf('0x2')]==='outbound'){if(_0xcc1815['hasOwnProperty'](_0x5dbf('0x36'))&&_0xcc1815[_0x5dbf('0x36')]&&_0xcc1815[_0x5dbf('0x36')]!=='--'){_0x4c611d['push']({'type':_0xcc1815['type'][_0x5dbf('0x37')](),'app':_0x5dbf('0x3'),'appdata':_0x5dbf('0x38')+_0xcc1815[_0x5dbf('0x36')],'context':_0x2718e9[_0x5dbf('0x5')],'exten':_0x2718e9[_0x5dbf('0x6')],'priority':_0xcc1815[_0x5dbf('0x35')][_0x5dbf('0x24')]+_0x78aef3+_0x14002b++,'VoiceExtensionId':_0x2718e9['id']});}_0x4c611d['push']({'type':_0xcc1815[_0x5dbf('0x2')][_0x5dbf('0x37')](),'app':_0x5dbf('0x15'),'appdata':_0x5dbf('0x39')+(_0xcc1815[_0x5dbf('0x3a')]?_0x5dbf('0x3b')+_0xcc1815[_0x5dbf('0x3a')]+')':'NoOp(No\x20number\x20available)'),'context':_0x2718e9[_0x5dbf('0x5')],'exten':_0x2718e9['exten'],'priority':_0xcc1815[_0x5dbf('0x35')][_0x5dbf('0x24')]+_0x78aef3+_0x14002b++,'VoiceExtensionId':_0x2718e9['id']});}else{if(_0xcc1815[_0x5dbf('0x1c')](_0x5dbf('0x3c'))){if([_0x5dbf('0x3d'),_0x5dbf('0x3e')][_0x5dbf('0x3f')](_0xcc1815['app']['toLowerCase']())&&_0xcc1815['appType']!==_0x5dbf('0x40')){if(_0xcc1815[_0x5dbf('0x3c')]){_0x4c611d[_0x5dbf('0xa')]({'type':_0xcc1815['type']['toLowerCase'](),'app':_0x5dbf('0x15'),'appdata':_0x5dbf('0x41'),'context':_0x2718e9[_0x5dbf('0x5')],'exten':_0x2718e9['exten'],'priority':_0xcc1815[_0x5dbf('0x35')]['length']+_0x78aef3+_0x14002b++,'VoiceExtensionId':_0x2718e9['id']});_0x4c611d[_0x5dbf('0xa')]({'type':_0xcc1815[_0x5dbf('0x2')][_0x5dbf('0x37')](),'app':'Set','appdata':'XCALLY-MOTION-ANSWER=1','context':_0x2718e9[_0x5dbf('0x5')],'exten':_0x2718e9[_0x5dbf('0x6')],'priority':_0xcc1815[_0x5dbf('0x35')][_0x5dbf('0x24')]+_0x78aef3+_0x14002b++,'VoiceExtensionId':_0x2718e9['id']});}else{_0x4c611d['push']({'type':_0xcc1815[_0x5dbf('0x2')][_0x5dbf('0x37')](),'app':'ExecIf','appdata':'$[${XCALLY-MOTION-PROGRESS}=0]?Progress','context':_0x2718e9[_0x5dbf('0x5')],'exten':_0x2718e9[_0x5dbf('0x6')],'priority':_0xcc1815[_0x5dbf('0x35')][_0x5dbf('0x24')]+_0x78aef3+_0x14002b++,'VoiceExtensionId':_0x2718e9['id']});_0x4c611d[_0x5dbf('0xa')]({'type':_0xcc1815[_0x5dbf('0x2')]['toLowerCase'](),'app':_0x5dbf('0x3'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x2718e9['context'],'exten':_0x2718e9['exten'],'priority':_0xcc1815[_0x5dbf('0x35')]['length']+_0x78aef3+_0x14002b++,'VoiceExtensionId':_0x2718e9['id']});}}}}for(var _0x375c7e=0x0;_0x375c7e<_0xcc1815[_0x5dbf('0x35')][_0x5dbf('0x24')];_0x375c7e++){var _0x3cf098=_0x78aef3+_0xcc1815[_0x5dbf('0x35')][_0x5dbf('0x24')];var _0x1400be=_0x375c7e===_0xcc1815[_0x5dbf('0x35')][_0x5dbf('0x24')]-0x1?_0x78aef3+_0x4c611d[_0x5dbf('0x24')]+_0x5c10f1[_0x5dbf('0x24')]+0x2:_0x78aef3+_0x375c7e+0x1;_0x4c611d[_0x5dbf('0x42')](_0x375c7e,0x0,{'type':_0x2718e9[_0x5dbf('0x2')],'app':_0x5dbf('0x43'),'appdata':_0xcc1815[_0x5dbf('0x35')][_0x375c7e]+'?'+_0x2718e9['context']+_0x5dbf('0x44')+_0x3cf098+':'+_0x2718e9['context']+_0x5dbf('0x44')+_0x1400be,'exten':_0x2718e9[_0x5dbf('0x6')],'context':_0x2718e9[_0x5dbf('0x5')],'priority':_0x78aef3+_0x375c7e,'VoiceExtensionId':_0x2718e9['id']});}if(_0xcc1815[_0x5dbf('0x45')]==='outboundDial')_0xcc1815[_0x5dbf('0x46')]=_0x3a8196(_0x2718e9,_0xcc1815[_0x5dbf('0x46')]);_0xcc1815[_0x5dbf('0x47')]=_0x4c611d[_0x5dbf('0x24')]?_[_0x5dbf('0x48')](_0x4c611d)[_0x5dbf('0x47')]+0x1:_0x78aef3;_0x50880d=_['concat'](_0x50880d,_0x4c611d,[_0xcc1815],_0x5c10f1);_0x78aef3=_[_0x5dbf('0x48')](_0x50880d)[_0x5dbf('0x47')]+0x1;}return _0x22f958(_0x50880d);})[_0x5dbf('0x49')](function(_0x18bc53){_0xec1d28(_0x18bc53);});});}return _0x4bde73[_0x5dbf('0x4a')](_0x5dbf('0x4b'),attributes,{'tableName':_0x5dbf('0x4c'),'paranoid':![],'indexes':[],'timestamps':!![],'instanceMethods':{'createRouting':function(_0x1cc4eb){var _0x12d69b=this[_0x5dbf('0x4d')]({'plain':!![]});var _0x13c8ab=_0x12d69b[_0x5dbf('0x2')]==='outbound'?_0x50ef1d(_0x12d69b):_0x32ec6b(_0x12d69b);return _0xf5bdc5(_0x12d69b,_0x1cc4eb,_['last'](_0x13c8ab)[_0x5dbf('0x47')]+0x1)[_0x5dbf('0x33')](function(_0x2f0c75){var _0x110713=_[_0x5dbf('0x4e')](_0x13c8ab,_0x2f0c75);_0x110713[_0x5dbf('0xa')]({'type':_0x12d69b[_0x5dbf('0x2')],'app':_0x5dbf('0x4f'),'exten':_0x12d69b[_0x5dbf('0x6')],'context':_0x12d69b['context'],'priority':_['last'](_0x110713)['priority']+0x1,'VoiceExtensionId':_0x12d69b['id']});return _0x110713;});}}});};
\ No newline at end of file
index 80b76ea..d6a9135 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d0a=['findAll','options','where','attributes','limit','include','map','model','stringify','catch','lodash','util','moment','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./voiceExtension.socket','register','request','then','info','debug','VoiceExtension,\x20%s,\x20%s,\x20%s','error','code','VoiceExtension,\x20%s,\x20%s','message','request\x20sent','result','GetVoiceExtension','VoiceExtension'];(function(_0x13187a,_0x2fcec4){var _0x65b85f=function(_0x33bf1f){while(--_0x33bf1f){_0x13187a['push'](_0x13187a['shift']());}};_0x65b85f(++_0x2fcec4);}(_0x8d0a,0x172));var _0xa8d0=function(_0x323565,_0x109ab2){_0x323565=_0x323565-0x0;var _0x21d1b5=_0x8d0a[_0x323565];return _0x21d1b5;};'use strict';var _=require(_0xa8d0('0x0'));var util=require(_0xa8d0('0x1'));var moment=require(_0xa8d0('0x2'));var BPromise=require('bluebird');var rs=require(_0xa8d0('0x3'));var fs=require('fs');var Redis=require(_0xa8d0('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xa8d0('0x5'));var logger=require(_0xa8d0('0x6'))(_0xa8d0('0x7'));var config=require('../../config/environment');var jayson=require(_0xa8d0('0x8'));var client=jayson[_0xa8d0('0x9')][_0xa8d0('0xa')]({'port':0x232a});config[_0xa8d0('0xb')]=_[_0xa8d0('0xc')](config[_0xa8d0('0xb')],{'host':_0xa8d0('0xd'),'port':0x18eb});var socket=require(_0xa8d0('0xe'))(new Redis(config[_0xa8d0('0xb')]));require(_0xa8d0('0xf'))[_0xa8d0('0x10')](socket);function respondWithRpcPromise(_0x9fee79,_0x3c1221,_0x23cbc5){return new BPromise(function(_0x3a1138,_0xe516eb){return client[_0xa8d0('0x11')](_0x9fee79,_0x23cbc5)[_0xa8d0('0x12')](function(_0x380cc5){logger[_0xa8d0('0x13')]('VoiceExtension,\x20%s,\x20%s',_0x3c1221,'request\x20sent');logger[_0xa8d0('0x14')](_0xa8d0('0x15'),_0x3c1221,'request\x20sent',JSON['stringify'](_0x380cc5));if(_0x380cc5[_0xa8d0('0x16')]){if(_0x380cc5[_0xa8d0('0x16')][_0xa8d0('0x17')]===0x1f4){logger[_0xa8d0('0x16')](_0xa8d0('0x18'),_0x3c1221,_0x380cc5[_0xa8d0('0x16')][_0xa8d0('0x19')]);return _0xe516eb(_0x380cc5[_0xa8d0('0x16')][_0xa8d0('0x19')]);}logger[_0xa8d0('0x16')](_0xa8d0('0x18'),_0x3c1221,_0x380cc5['error'][_0xa8d0('0x19')]);return _0x3a1138(_0x380cc5[_0xa8d0('0x16')]['message']);}else{logger[_0xa8d0('0x13')](_0xa8d0('0x18'),_0x3c1221,_0xa8d0('0x1a'));_0x3a1138(_0x380cc5[_0xa8d0('0x1b')][_0xa8d0('0x19')]);}})['catch'](function(_0x35554e){logger[_0xa8d0('0x16')](_0xa8d0('0x18'),_0x3c1221,_0x35554e);_0xe516eb(_0x35554e);});});}exports[_0xa8d0('0x1c')]=function(_0x1b5dfb){var _0x16e479=this;return new Promise(function(_0x21a6ca,_0x595452){return db[_0xa8d0('0x1d')][_0xa8d0('0x1e')]({'raw':_0x1b5dfb[_0xa8d0('0x1f')]?_0x1b5dfb[_0xa8d0('0x1f')]['raw']===undefined?!![]:![]:!![],'where':_0x1b5dfb[_0xa8d0('0x1f')]?_0x1b5dfb[_0xa8d0('0x1f')][_0xa8d0('0x20')]||null:null,'attributes':_0x1b5dfb[_0xa8d0('0x1f')]?_0x1b5dfb['options'][_0xa8d0('0x21')]||null:null,'limit':_0x1b5dfb[_0xa8d0('0x1f')]?_0x1b5dfb[_0xa8d0('0x1f')][_0xa8d0('0x22')]||null:null,'include':_0x1b5dfb['options']?_0x1b5dfb[_0xa8d0('0x1f')][_0xa8d0('0x23')]?_[_0xa8d0('0x24')](_0x1b5dfb['options'][_0xa8d0('0x23')],function(_0x5f5dfb){return{'model':db[_0x5f5dfb[_0xa8d0('0x25')]],'as':_0x5f5dfb['as'],'attributes':_0x5f5dfb[_0xa8d0('0x21')],'include':_0x5f5dfb['include']?_['map'](_0x5f5dfb[_0xa8d0('0x23')],function(_0x5d9a04){return{'model':db[_0x5d9a04[_0xa8d0('0x25')]],'as':_0x5d9a04['as'],'attributes':_0x5d9a04[_0xa8d0('0x21')],'include':_0x5d9a04[_0xa8d0('0x23')]?_[_0xa8d0('0x24')](_0x5d9a04[_0xa8d0('0x23')],function(_0x5a5079){return{'model':db[_0x5a5079[_0xa8d0('0x25')]],'as':_0x5a5079['as'],'attributes':_0x5a5079[_0xa8d0('0x21')]};}):[]};}):[]};}):[]:[]})[_0xa8d0('0x12')](function(_0x500cec){logger['info']('GetVoiceExtension',_0x1b5dfb);logger[_0xa8d0('0x14')](_0xa8d0('0x1c'),_0x1b5dfb,JSON[_0xa8d0('0x26')](_0x500cec));_0x21a6ca(_0x500cec);})[_0xa8d0('0x27')](function(_0x2c9ff2){logger[_0xa8d0('0x16')](_0xa8d0('0x1c'),_0x2c9ff2['message'],_0x1b5dfb);_0x595452(_0x16e479[_0xa8d0('0x16')](0x1f4,_0x2c9ff2['message']));});});};
\ No newline at end of file
+var _0x0309=['../../config/logger','rpc','../../config/environment','http','redis','socket.io-emitter','./voiceExtension.socket','request','then','info','VoiceExtension,\x20%s,\x20%s','request\x20sent','VoiceExtension,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceExtension','options','where','attributes','limit','map','include','model','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils'];(function(_0x13ac87,_0x355de4){var _0x53de23=function(_0x51f754){while(--_0x51f754){_0x13ac87['push'](_0x13ac87['shift']());}};_0x53de23(++_0x355de4);}(_0x0309,0x165));var _0x9030=function(_0x3f27e8,_0x5ecbad){_0x3f27e8=_0x3f27e8-0x0;var _0x4888ac=_0x0309[_0x3f27e8];return _0x4888ac;};'use strict';var _=require(_0x9030('0x0'));var util=require('util');var moment=require(_0x9030('0x1'));var BPromise=require('bluebird');var rs=require(_0x9030('0x2'));var fs=require('fs');var Redis=require(_0x9030('0x3'));var db=require(_0x9030('0x4'))['db'];var utils=require(_0x9030('0x5'));var logger=require(_0x9030('0x6'))(_0x9030('0x7'));var config=require(_0x9030('0x8'));var jayson=require('jayson/promise');var client=jayson['client'][_0x9030('0x9')]({'port':0x232a});config[_0x9030('0xa')]=_['defaults'](config[_0x9030('0xa')],{'host':'localhost','port':0x18eb});var socket=require(_0x9030('0xb'))(new Redis(config[_0x9030('0xa')]));require(_0x9030('0xc'))['register'](socket);function respondWithRpcPromise(_0xe2c28b,_0x1da9ec,_0x337b86){return new BPromise(function(_0x53ef39,_0x37d6e0){return client[_0x9030('0xd')](_0xe2c28b,_0x337b86)[_0x9030('0xe')](function(_0x11a539){logger[_0x9030('0xf')](_0x9030('0x10'),_0x1da9ec,_0x9030('0x11'));logger['debug'](_0x9030('0x12'),_0x1da9ec,_0x9030('0x11'),JSON[_0x9030('0x13')](_0x11a539));if(_0x11a539[_0x9030('0x14')]){if(_0x11a539['error'][_0x9030('0x15')]===0x1f4){logger[_0x9030('0x14')](_0x9030('0x10'),_0x1da9ec,_0x11a539[_0x9030('0x14')][_0x9030('0x16')]);return _0x37d6e0(_0x11a539[_0x9030('0x14')][_0x9030('0x16')]);}logger[_0x9030('0x14')](_0x9030('0x10'),_0x1da9ec,_0x11a539['error'][_0x9030('0x16')]);return _0x53ef39(_0x11a539[_0x9030('0x14')][_0x9030('0x16')]);}else{logger[_0x9030('0xf')](_0x9030('0x10'),_0x1da9ec,_0x9030('0x11'));_0x53ef39(_0x11a539[_0x9030('0x17')][_0x9030('0x16')]);}})[_0x9030('0x18')](function(_0x31e196){logger[_0x9030('0x14')](_0x9030('0x10'),_0x1da9ec,_0x31e196);_0x37d6e0(_0x31e196);});});}exports[_0x9030('0x19')]=function(_0x243e7d){var _0x1e5988=this;return new Promise(function(_0x285d93,_0x4105ec){return db['VoiceExtension']['findAll']({'raw':_0x243e7d[_0x9030('0x1a')]?_0x243e7d[_0x9030('0x1a')]['raw']===undefined?!![]:![]:!![],'where':_0x243e7d[_0x9030('0x1a')]?_0x243e7d[_0x9030('0x1a')][_0x9030('0x1b')]||null:null,'attributes':_0x243e7d[_0x9030('0x1a')]?_0x243e7d['options'][_0x9030('0x1c')]||null:null,'limit':_0x243e7d['options']?_0x243e7d['options'][_0x9030('0x1d')]||null:null,'include':_0x243e7d[_0x9030('0x1a')]?_0x243e7d[_0x9030('0x1a')]['include']?_[_0x9030('0x1e')](_0x243e7d[_0x9030('0x1a')][_0x9030('0x1f')],function(_0xce2840){return{'model':db[_0xce2840[_0x9030('0x20')]],'as':_0xce2840['as'],'attributes':_0xce2840['attributes'],'include':_0xce2840[_0x9030('0x1f')]?_[_0x9030('0x1e')](_0xce2840[_0x9030('0x1f')],function(_0x463dda){return{'model':db[_0x463dda[_0x9030('0x20')]],'as':_0x463dda['as'],'attributes':_0x463dda[_0x9030('0x1c')],'include':_0x463dda[_0x9030('0x1f')]?_[_0x9030('0x1e')](_0x463dda[_0x9030('0x1f')],function(_0x11c47d){return{'model':db[_0x11c47d[_0x9030('0x20')]],'as':_0x11c47d['as'],'attributes':_0x11c47d[_0x9030('0x1c')]};}):[]};}):[]};}):[]:[]})[_0x9030('0xe')](function(_0x18de34){logger['info'](_0x9030('0x19'),_0x243e7d);logger['debug'](_0x9030('0x19'),_0x243e7d,JSON['stringify'](_0x18de34));_0x285d93(_0x18de34);})[_0x9030('0x18')](function(_0x37bee3){logger[_0x9030('0x14')]('GetVoiceExtension',_0x37bee3[_0x9030('0x16')],_0x243e7d);_0x4105ec(_0x1e5988[_0x9030('0x14')](0x1f4,_0x37bee3[_0x9030('0x16')]));});});};
\ No newline at end of file
index 48d2ffb..3fde28e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabce=['voiceExtension:','./voiceExtension.events','save','remove','update','emit'];(function(_0x28843a,_0x4a6e56){var _0x50c7de=function(_0x49ab3f){while(--_0x49ab3f){_0x28843a['push'](_0x28843a['shift']());}};_0x50c7de(++_0x4a6e56);}(_0xabce,0x103));var _0xeabc=function(_0x55e08b,_0x421620){_0x55e08b=_0x55e08b-0x0;var _0xd1a7ff=_0xabce[_0x55e08b];return _0xd1a7ff;};'use strict';var VoiceExtensionEvents=require(_0xeabc('0x0'));var events=[_0xeabc('0x1'),_0xeabc('0x2'),_0xeabc('0x3')];function createListener(_0x49dbcc,_0x5bd1a4){return function(_0x5ebc95){_0x5bd1a4[_0xeabc('0x4')](_0x49dbcc,_0x5ebc95);};}function removeListener(_0x1d9f37,_0x1a88a7){return function(){VoiceExtensionEvents['removeListener'](_0x1d9f37,_0x1a88a7);};}exports['register']=function(_0x1b07a8){for(var _0x52a4d7=0x0,_0x229ba4=events['length'];_0x52a4d7<_0x229ba4;_0x52a4d7++){var _0x3bdc29=events[_0x52a4d7];var _0x9417af=createListener(_0xeabc('0x5')+_0x3bdc29,_0x1b07a8);VoiceExtensionEvents['on'](_0x3bdc29,_0x9417af);}};
\ No newline at end of file
+var _0xe14b=['removeListener','register','length','./voiceExtension.events','save','emit'];(function(_0x42c995,_0x5e4e67){var _0x34f4d8=function(_0x1bd089){while(--_0x1bd089){_0x42c995['push'](_0x42c995['shift']());}};_0x34f4d8(++_0x5e4e67);}(_0xe14b,0x93));var _0xbe14=function(_0x460866,_0x381abb){_0x460866=_0x460866-0x0;var _0x204b00=_0xe14b[_0x460866];return _0x204b00;};'use strict';var VoiceExtensionEvents=require(_0xbe14('0x0'));var events=[_0xbe14('0x1'),'remove','update'];function createListener(_0x11c3a0,_0x36393a){return function(_0x48a116){_0x36393a[_0xbe14('0x2')](_0x11c3a0,_0x48a116);};}function removeListener(_0x5ce8fb,_0x496c04){return function(){VoiceExtensionEvents[_0xbe14('0x3')](_0x5ce8fb,_0x496c04);};}exports[_0xbe14('0x4')]=function(_0x1fe204){for(var _0x1ff100=0x0,_0x1d9ade=events[_0xbe14('0x5')];_0x1ff100<_0x1d9ade;_0x1ff100++){var _0x196fca=events[_0x1ff100];var _0x566ae7=createListener('voiceExtension:'+_0x196fca,_0x1fe204);VoiceExtensionEvents['on'](_0x196fca,_0x566ae7);}};
\ No newline at end of file
index 82d97fd..27d0e38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d58=['getMessages','post','update','delete','/:id','destroy','exports','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','show','/:id/messages'];(function(_0x3ca879,_0x2e88ee){var _0x1f0bae=function(_0x114b52){while(--_0x114b52){_0x3ca879['push'](_0x3ca879['shift']());}};_0x1f0bae(++_0x2e88ee);}(_0x5d58,0x187));var _0x85d5=function(_0x4e2524,_0x447218){_0x4e2524=_0x4e2524-0x0;var _0x327d54=_0x5d58[_0x4e2524];return _0x327d54;};'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[_0x85d5('0x0')]();var fs_extra=require(_0x85d5('0x1'));var auth=require('../../components/auth/service');var interaction=require(_0x85d5('0x2'));var config=require(_0x85d5('0x3'));var controller=require('./voiceMail.controller');router[_0x85d5('0x4')]('/',auth[_0x85d5('0x5')](),controller[_0x85d5('0x6')]);router[_0x85d5('0x4')]('/:id',auth[_0x85d5('0x5')](),controller[_0x85d5('0x7')]);router['get'](_0x85d5('0x8'),auth['isAuthenticated'](),controller[_0x85d5('0x9')]);router[_0x85d5('0xa')]('/',auth[_0x85d5('0x5')](),controller['create']);router['put']('/:id',auth[_0x85d5('0x5')](),controller[_0x85d5('0xb')]);router[_0x85d5('0xc')](_0x85d5('0xd'),auth[_0x85d5('0x5')](),controller[_0x85d5('0xe')]);module[_0x85d5('0xf')]=router;
\ No newline at end of file
+var _0x0295=['isAuthenticated','index','post','create','put','/:id','update','delete','destroy','exports','multer','connect-timeout','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMail.controller','get'];(function(_0x44bcb0,_0x235aa9){var _0xfaf881=function(_0x25d81d){while(--_0x25d81d){_0x44bcb0['push'](_0x44bcb0['shift']());}};_0xfaf881(++_0x235aa9);}(_0x0295,0x1f0));var _0x5029=function(_0x538375,_0x365e8d){_0x538375=_0x538375-0x0;var _0x1c3531=_0x0295[_0x538375];return _0x1c3531;};'use strict';var multer=require(_0x5029('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x5029('0x1'));var express=require('express');var router=express['Router']();var fs_extra=require(_0x5029('0x2'));var auth=require(_0x5029('0x3'));var interaction=require(_0x5029('0x4'));var config=require(_0x5029('0x5'));var controller=require(_0x5029('0x6'));router[_0x5029('0x7')]('/',auth[_0x5029('0x8')](),controller[_0x5029('0x9')]);router[_0x5029('0x7')]('/:id',auth['isAuthenticated'](),controller['show']);router[_0x5029('0x7')]('/:id/messages',auth[_0x5029('0x8')](),controller['getMessages']);router[_0x5029('0xa')]('/',auth['isAuthenticated'](),controller[_0x5029('0xb')]);router[_0x5029('0xc')](_0x5029('0xd'),auth['isAuthenticated'](),controller[_0x5029('0xe')]);router[_0x5029('0xf')](_0x5029('0xd'),auth['isAuthenticated'](),controller[_0x5029('0x10')]);module[_0x5029('0x11')]=router;
\ No newline at end of file
index 64c0546..c307a04 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a3=['mailbox','sequelize','exports','STRING','from-voicemail','contest_mailbox','setDataValue','email','trim','central','yes','ENUM','TINYINT(4)','TIMESTAMP','INTEGER','VIRTUAL','getDataValue'];(function(_0x282d8e,_0x19465d){var _0x13d308=function(_0x20ada7){while(--_0x20ada7){_0x282d8e['push'](_0x282d8e['shift']());}};_0x13d308(++_0x19465d);}(_0x14a3,0xef));var _0x314a=function(_0x23ac30,_0x2a1d00){_0x23ac30=_0x23ac30-0x0;var _0x208fec=_0x14a3[_0x23ac30];return _0x208fec;};'use strict';var Sequelize=require(_0x314a('0x0'));module[_0x314a('0x1')]={'customer_id':{'type':Sequelize[_0x314a('0x2')]},'context':{'type':Sequelize[_0x314a('0x2')],'defaultValue':_0x314a('0x3'),'unique':'contest_mailbox'},'mailbox':{'type':Sequelize['STRING'],'defaultValue':'','allowNull':![],'unique':_0x314a('0x4')},'password':{'type':Sequelize[_0x314a('0x2')]},'fullname':{'type':Sequelize[_0x314a('0x2')]},'email':{'type':Sequelize[_0x314a('0x2')],'validate':{'isEmail':!![]},'set':function(_0x3a7e7b){this[_0x314a('0x5')](_0x314a('0x6'),typeof _0x3a7e7b==='string'&&_0x3a7e7b['trim']()?_0x3a7e7b[_0x314a('0x7')]():null);}},'pager':{'type':Sequelize[_0x314a('0x2')]},'tz':{'type':Sequelize['STRING'],'defaultValue':_0x314a('0x8')},'attach':{'type':Sequelize['ENUM'](_0x314a('0x9'),'no'),'defaultValue':'yes','allowNull':![]},'saycid':{'type':Sequelize[_0x314a('0xa')](_0x314a('0x9'),'no'),'defaultValue':_0x314a('0x9'),'allowNull':![]},'dialout':{'type':Sequelize[_0x314a('0x2')]},'callback':{'type':Sequelize[_0x314a('0x2')]},'review':{'type':Sequelize[_0x314a('0xa')](_0x314a('0x9'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize['ENUM'](_0x314a('0x9'),'no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize[_0x314a('0xa')](_0x314a('0x9'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0x314a('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0x314a('0xb'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize[_0x314a('0xa')](_0x314a('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0x314a('0xa')](_0x314a('0x9'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'yes','allowNull':![]},'forcename':{'type':Sequelize[_0x314a('0xa')](_0x314a('0x9'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize[_0x314a('0xa')]('yes','no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':_0x314a('0x9'),'allowNull':![]},'stamp':{'type':_0x314a('0xc')},'emailsubject':{'type':Sequelize['STRING']},'emailbody':{'type':Sequelize[_0x314a('0x2')]},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0x314a('0xd')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0x314a('0xe')],'get':function(){return this[_0x314a('0xf')]('fullname')+'\x20-\x20'+this[_0x314a('0xf')](_0x314a('0x10'));}}};
\ No newline at end of file
+var _0x2f4e=['\x20-\x20','getDataValue','mailbox','sequelize','exports','STRING','from-voicemail','setDataValue','email','string','trim','ENUM','yes','TINYINT(4)','INTEGER','VIRTUAL','fullname'];(function(_0x1e6db3,_0x5643ac){var _0x1de886=function(_0x351318){while(--_0x351318){_0x1e6db3['push'](_0x1e6db3['shift']());}};_0x1de886(++_0x5643ac);}(_0x2f4e,0x9c));var _0xe2f4=function(_0x3f40fd,_0x31b81a){_0x3f40fd=_0x3f40fd-0x0;var _0x12f503=_0x2f4e[_0x3f40fd];return _0x12f503;};'use strict';var Sequelize=require(_0xe2f4('0x0'));module[_0xe2f4('0x1')]={'customer_id':{'type':Sequelize[_0xe2f4('0x2')]},'context':{'type':Sequelize['STRING'],'defaultValue':_0xe2f4('0x3'),'unique':'contest_mailbox'},'mailbox':{'type':Sequelize[_0xe2f4('0x2')],'defaultValue':'','allowNull':![],'unique':'contest_mailbox'},'password':{'type':Sequelize[_0xe2f4('0x2')]},'fullname':{'type':Sequelize[_0xe2f4('0x2')]},'email':{'type':Sequelize[_0xe2f4('0x2')],'validate':{'isEmail':!![]},'set':function(_0x10d0d7){this[_0xe2f4('0x4')](_0xe2f4('0x5'),typeof _0x10d0d7===_0xe2f4('0x6')&&_0x10d0d7[_0xe2f4('0x7')]()?_0x10d0d7[_0xe2f4('0x7')]():null);}},'pager':{'type':Sequelize[_0xe2f4('0x2')]},'tz':{'type':Sequelize[_0xe2f4('0x2')],'defaultValue':'central'},'attach':{'type':Sequelize[_0xe2f4('0x8')](_0xe2f4('0x9'),'no'),'defaultValue':_0xe2f4('0x9'),'allowNull':![]},'saycid':{'type':Sequelize[_0xe2f4('0x8')]('yes','no'),'defaultValue':_0xe2f4('0x9'),'allowNull':![]},'dialout':{'type':Sequelize[_0xe2f4('0x2')]},'callback':{'type':Sequelize[_0xe2f4('0x2')]},'review':{'type':Sequelize[_0xe2f4('0x8')](_0xe2f4('0x9'),'no'),'defaultValue':'no','allowNull':![]},'operator':{'type':Sequelize[_0xe2f4('0x8')]('yes','no'),'defaultValue':'no','allowNull':![]},'envelope':{'type':Sequelize['ENUM'](_0xe2f4('0x9'),'no'),'defaultValue':'no','allowNull':![]},'sayduration':{'type':Sequelize[_0xe2f4('0x8')](_0xe2f4('0x9'),'no'),'defaultValue':'no','allowNull':![]},'saydurationm':{'type':_0xe2f4('0xa'),'defaultValue':0x1,'allowNull':![]},'sendvoicemail':{'type':Sequelize['ENUM'](_0xe2f4('0x9'),'no'),'defaultValue':'no','allowNull':![]},'delete':{'type':Sequelize[_0xe2f4('0x8')](_0xe2f4('0x9'),'no'),'defaultValue':'no','allowNull':![]},'nextaftercmd':{'type':Sequelize['ENUM'](_0xe2f4('0x9'),'no'),'defaultValue':_0xe2f4('0x9'),'allowNull':![]},'forcename':{'type':Sequelize[_0xe2f4('0x8')](_0xe2f4('0x9'),'no'),'defaultValue':'no','allowNull':![]},'forcegreetings':{'type':Sequelize['ENUM']('yes','no'),'defaultValue':'no','allowNull':![]},'hidefromdir':{'type':Sequelize[_0xe2f4('0x8')]('yes','no'),'defaultValue':_0xe2f4('0x9'),'allowNull':![]},'stamp':{'type':'TIMESTAMP'},'emailsubject':{'type':Sequelize[_0xe2f4('0x2')]},'emailbody':{'type':Sequelize[_0xe2f4('0x2')]},'maxsecs':{'type':Sequelize['INTEGER'](0xff),'defaultValue':0xb4,'allowNull':![]},'maxmsg':{'type':Sequelize[_0xe2f4('0xb')](0xff),'defaultValue':0x64,'allowNull':![]},'name':{'type':Sequelize[_0xe2f4('0xc')],'get':function(){return this['getDataValue'](_0xe2f4('0xd'))+_0xe2f4('0xe')+this[_0xe2f4('0xf')](_0xe2f4('0x10'));}}};
\ No newline at end of file
index ac248e2..98b12cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x757a=['../../config/license/hardware','../../config/logger','api','status','json','offset','undefined','count','limit','Content-Range','apply','update','then','get','Voicemails','UserProfileResource','destroy','end','error','name','send','map','VoiceMail','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','filter','merge','options','include','rows','catch','params','find','create','body','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','getMessages','findOne','VoiceMailMessage','hasOwnProperty','findAndCountAll','rimraf','zip-dir','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x2f1d71,_0x267435){var _0x2713c7=function(_0x1f7263){while(--_0x1f7263){_0x2f1d71['push'](_0x2f1d71['shift']());}};_0x2713c7(++_0x267435);}(_0x757a,0xde));var _0xa757=function(_0x25e610,_0x1fef72){_0x25e610=_0x25e610-0x0;var _0x542047=_0x757a[_0x25e610];return _0x542047;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa757('0x0'));var zipdir=require(_0xa757('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0xa757('0x2'));var Mustache=require(_0xa757('0x3'));var util=require(_0xa757('0x4'));var path=require(_0xa757('0x5'));var sox=require(_0xa757('0x6'));var csv=require(_0xa757('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xa757('0x8'));var _=require(_0xa757('0x9'));var squel=require('squel');var crypto=require(_0xa757('0xa'));var jsforce=require(_0xa757('0xb'));var deskjs=require(_0xa757('0xc'));var toCsv=require(_0xa757('0x7'));var querystring=require(_0xa757('0xd'));var Papa=require('papaparse');var Redis=require(_0xa757('0xe'));var authService=require(_0xa757('0xf'));var qs=require(_0xa757('0x10'));var as=require(_0xa757('0x11'));var hardwareService=require(_0xa757('0x12'));var logger=require(_0xa757('0x13'))(_0xa757('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4db68e,_0x421040){_0x421040=_0x421040||0xcc;return function(_0x544b45){if(_0x544b45){return _0x4db68e['sendStatus'](_0x421040);}return _0x4db68e[_0xa757('0x15')](_0x421040)['end']();};}function respondWithResult(_0x481508,_0x32112b){_0x32112b=_0x32112b||0xc8;return function(_0x1b670e){if(_0x1b670e){return _0x481508[_0xa757('0x15')](_0x32112b)[_0xa757('0x16')](_0x1b670e);}};}function respondWithFilteredResult(_0x86abd,_0x31cfd2){return function(_0xf12b68){if(_0xf12b68){var _0x2f7947=typeof _0x31cfd2[_0xa757('0x17')]===_0xa757('0x18')&&typeof _0x31cfd2['limit']===_0xa757('0x18');var _0x44eab8=_0xf12b68[_0xa757('0x19')];var _0x4d9f58=_0x2f7947?0x0:_0x31cfd2['offset'];var _0x151c04=_0x2f7947?_0xf12b68[_0xa757('0x19')]:_0x31cfd2[_0xa757('0x17')]+_0x31cfd2[_0xa757('0x1a')];var _0x27f4ba;if(_0x151c04>=_0x44eab8){_0x151c04=_0x44eab8;_0x27f4ba=0xc8;}else{_0x27f4ba=0xce;}_0x86abd[_0xa757('0x15')](_0x27f4ba);return _0x86abd['set'](_0xa757('0x1b'),_0x4d9f58+'-'+_0x151c04+'/'+_0x44eab8)['json'](_0xf12b68);}return null;};}function patchUpdates(_0x32c2a1){return function(_0x167640){try{jsonpatch[_0xa757('0x1c')](_0x167640,_0x32c2a1,!![]);}catch(_0x2c9ec6){return BPromise['reject'](_0x2c9ec6);}return _0x167640['save']();};}function saveUpdates(_0x40ec48,_0x2159cf){return function(_0x2ba923){if(_0x2ba923){return _0x2ba923[_0xa757('0x1d')](_0x40ec48)[_0xa757('0x1e')](function(_0x40562f){return _0x40562f;});}return null;};}function removeEntity(_0x2ca10d,_0x21f1af){return function(_0x2bf276){if(_0x2bf276){return _0x2bf276['destroy']()[_0xa757('0x1e')](function(){var _0x59e9d4=_0x2bf276[_0xa757('0x1f')]({'plain':!![]});var _0x47903b=_0xa757('0x20');return db[_0xa757('0x21')][_0xa757('0x22')]({'where':{'type':_0x47903b,'resourceId':_0x59e9d4['id']}})['then'](function(){return _0x2bf276;});})[_0xa757('0x1e')](function(){_0x2ca10d[_0xa757('0x15')](0xcc)[_0xa757('0x23')]();});}};}function handleEntityNotFound(_0x3bf7f3,_0x5b4779){return function(_0x449a7d){if(!_0x449a7d){_0x3bf7f3['sendStatus'](0x194);}return _0x449a7d;};}function handleError(_0x5a5664,_0x54b75e){_0x54b75e=_0x54b75e||0x1f4;return function(_0x4f8de2){logger[_0xa757('0x24')](_0x4f8de2['stack']);if(_0x4f8de2[_0xa757('0x25')]){delete _0x4f8de2[_0xa757('0x25')];}_0x5a5664['status'](_0x54b75e)[_0xa757('0x26')](_0x4f8de2);};}exports['index']=function(_0x2c4823,_0xa6d0f6){var _0x5307c3={},_0x235e54={},_0x5ade7b={'count':0x0,'rows':[]};var _0x3a4a66=_[_0xa757('0x27')](db[_0xa757('0x28')][_0xa757('0x29')],function(_0xcc87c0){return{'name':_0xcc87c0[_0xa757('0x2a')],'type':_0xcc87c0[_0xa757('0x2b')][_0xa757('0x2c')]};});_0x235e54[_0xa757('0x2d')]=_[_0xa757('0x27')](_0x3a4a66,_0xa757('0x25'));_0x235e54[_0xa757('0x2e')]=_[_0xa757('0x2f')](_0x2c4823[_0xa757('0x2e')]);_0x235e54[_0xa757('0x30')]=_[_0xa757('0x31')](_0x235e54[_0xa757('0x2d')],_0x235e54[_0xa757('0x2e')]);_0x5307c3[_0xa757('0x32')]=_[_0xa757('0x31')](_0x235e54[_0xa757('0x2d')],qs[_0xa757('0x33')](_0x2c4823[_0xa757('0x2e')][_0xa757('0x33')]));_0x5307c3['attributes']=_0x5307c3[_0xa757('0x32')][_0xa757('0x34')]?_0x5307c3[_0xa757('0x32')]:_0x235e54[_0xa757('0x2d')];if(!_0x2c4823[_0xa757('0x2e')]['hasOwnProperty'](_0xa757('0x35'))){_0x5307c3[_0xa757('0x1a')]=qs[_0xa757('0x1a')](_0x2c4823[_0xa757('0x2e')][_0xa757('0x1a')]);_0x5307c3[_0xa757('0x17')]=qs['offset'](_0x2c4823[_0xa757('0x2e')][_0xa757('0x17')]);}_0x5307c3[_0xa757('0x36')]=qs[_0xa757('0x37')](_0x2c4823[_0xa757('0x2e')][_0xa757('0x37')]);_0x5307c3[_0xa757('0x38')]=qs[_0xa757('0x30')](_[_0xa757('0x39')](_0x2c4823['query'],_0x235e54[_0xa757('0x30')]),_0x3a4a66);if(_0x2c4823[_0xa757('0x2e')][_0xa757('0x3a')]){_0x5307c3[_0xa757('0x38')]=_[_0xa757('0x3b')](_0x5307c3[_0xa757('0x38')],{'$or':_['map'](_0x3a4a66,function(_0x10d3fd){if(_0x10d3fd[_0xa757('0x2b')]!=='VIRTUAL'){var _0x5eae0b={};_0x5eae0b[_0x10d3fd[_0xa757('0x25')]]={'$like':'%'+_0x2c4823[_0xa757('0x2e')]['filter']+'%'};return _0x5eae0b;}})});}_0x5307c3=_['merge']({},_0x5307c3,_0x2c4823[_0xa757('0x3c')]);var _0x1725a2={'where':_0x5307c3[_0xa757('0x38')]};return db['VoiceMail'][_0xa757('0x19')](_0x1725a2)[_0xa757('0x1e')](function(_0x26802c){_0x5ade7b[_0xa757('0x19')]=_0x26802c;if(_0x2c4823[_0xa757('0x2e')]['includeAll']){_0x5307c3[_0xa757('0x3d')]=[{'all':!![]}];}return db['VoiceMail']['findAll'](_0x5307c3);})[_0xa757('0x1e')](function(_0x57298b){_0x5ade7b[_0xa757('0x3e')]=_0x57298b;return _0x5ade7b;})[_0xa757('0x1e')](respondWithFilteredResult(_0xa6d0f6,_0x5307c3))[_0xa757('0x3f')](handleError(_0xa6d0f6,null));};exports['show']=function(_0x5d25bb,_0x11e141){var _0x129d77={'raw':!![],'where':{'id':_0x5d25bb[_0xa757('0x40')]['id']}},_0x2b171c={};_0x2b171c[_0xa757('0x2d')]=_[_0xa757('0x2f')](db['VoiceMail'][_0xa757('0x29')]);_0x2b171c[_0xa757('0x2e')]=_['keys'](_0x5d25bb[_0xa757('0x2e')]);_0x2b171c['filters']=_[_0xa757('0x31')](_0x2b171c[_0xa757('0x2d')],_0x2b171c['query']);_0x129d77[_0xa757('0x32')]=_[_0xa757('0x31')](_0x2b171c['model'],qs[_0xa757('0x33')](_0x5d25bb[_0xa757('0x2e')][_0xa757('0x33')]));_0x129d77[_0xa757('0x32')]=_0x129d77['attributes'][_0xa757('0x34')]?_0x129d77[_0xa757('0x32')]:_0x2b171c[_0xa757('0x2d')];if(_0x5d25bb[_0xa757('0x2e')]['includeAll']){_0x129d77[_0xa757('0x3d')]=[{'all':!![]}];}_0x129d77=_['merge']({},_0x129d77,_0x5d25bb['options']);return db[_0xa757('0x28')][_0xa757('0x41')](_0x129d77)[_0xa757('0x1e')](handleEntityNotFound(_0x11e141,null))['then'](respondWithResult(_0x11e141,null))[_0xa757('0x3f')](handleError(_0x11e141,null));};exports['create']=function(_0x2ed63f,_0x151cc3){return db[_0xa757('0x28')][_0xa757('0x42')](_0x2ed63f[_0xa757('0x43')],{})[_0xa757('0x1e')](function(_0x57bf73){var _0x505cd=_0x2ed63f['user'][_0xa757('0x1f')]({'plain':!![]});if(!_0x505cd)throw new Error(_0xa757('0x44'));if(_0x505cd[_0xa757('0x45')]===_0xa757('0x46')){var _0x319988=_0x57bf73[_0xa757('0x1f')]({'plain':!![]});var _0x15bad7=_0xa757('0x20');return db[_0xa757('0x47')][_0xa757('0x41')]({'where':{'name':_0x15bad7,'userProfileId':_0x505cd[_0xa757('0x48')]},'raw':!![]})[_0xa757('0x1e')](function(_0x2367c7){if(_0x2367c7&&_0x2367c7[_0xa757('0x49')]===0x0){return db[_0xa757('0x21')][_0xa757('0x42')]({'name':_0x319988['name'],'resourceId':_0x319988['id'],'type':_0x2367c7[_0xa757('0x25')],'sectionId':_0x2367c7['id']},{})['then'](function(){return _0x57bf73;});}else{return _0x57bf73;}})[_0xa757('0x3f')](function(_0x311c25){logger[_0xa757('0x24')](_0xa757('0x4a'),_0x311c25);throw _0x311c25;});}return _0x57bf73;})['then'](respondWithResult(_0x151cc3,0xc9))[_0xa757('0x3f')](handleError(_0x151cc3,null));};exports[_0xa757('0x1d')]=function(_0x8614f9,_0x980e1){if(_0x8614f9['body']['id']){delete _0x8614f9[_0xa757('0x43')]['id'];}return db[_0xa757('0x28')][_0xa757('0x41')]({'where':{'id':_0x8614f9[_0xa757('0x40')]['id']}})[_0xa757('0x1e')](handleEntityNotFound(_0x980e1,null))[_0xa757('0x1e')](saveUpdates(_0x8614f9['body'],null))['then'](respondWithResult(_0x980e1,null))['catch'](handleError(_0x980e1,null));};exports['destroy']=function(_0x1d8742,_0x9b3779){return db[_0xa757('0x28')][_0xa757('0x41')]({'where':{'id':_0x1d8742[_0xa757('0x40')]['id']}})[_0xa757('0x1e')](handleEntityNotFound(_0x9b3779,null))['then'](removeEntity(_0x9b3779,null))[_0xa757('0x3f')](handleError(_0x9b3779,null));};exports[_0xa757('0x4b')]=function(_0x34e03f,_0x29b2f5,_0x48b578){return db[_0xa757('0x28')][_0xa757('0x4c')]({'where':{'id':_0x34e03f['params']['id']}})[_0xa757('0x1e')](handleEntityNotFound(_0x29b2f5,null))['then'](function(_0x211980){var _0x5d375c;var _0x51be6e={},_0x58633a={};_0x58633a['model']=_[_0xa757('0x2f')](db[_0xa757('0x4d')][_0xa757('0x29')]);_0x58633a[_0xa757('0x2e')]=_[_0xa757('0x2f')](_0x34e03f[_0xa757('0x2e')]);_0x58633a['filters']=_['intersection'](_0x58633a[_0xa757('0x2d')],_0x58633a[_0xa757('0x2e')]);_0x51be6e[_0xa757('0x32')]=_['intersection'](_0x58633a['model'],qs[_0xa757('0x33')](_0x34e03f[_0xa757('0x2e')][_0xa757('0x33')]));_0x51be6e[_0xa757('0x32')]=_0x51be6e[_0xa757('0x32')][_0xa757('0x34')]?_0x51be6e['attributes']:_0x58633a[_0xa757('0x2d')];if(!_0x34e03f[_0xa757('0x2e')][_0xa757('0x4e')](_0xa757('0x35'))){_0x51be6e[_0xa757('0x1a')]=qs[_0xa757('0x1a')](_0x34e03f[_0xa757('0x2e')][_0xa757('0x1a')]);_0x51be6e[_0xa757('0x17')]=qs[_0xa757('0x17')](_0x34e03f['query'][_0xa757('0x17')]);}_0x51be6e['order']=qs['sort'](_0x34e03f[_0xa757('0x2e')][_0xa757('0x37')]);_0x51be6e[_0xa757('0x38')]=qs[_0xa757('0x30')](_[_0xa757('0x39')](_0x34e03f[_0xa757('0x2e')],_0x58633a[_0xa757('0x30')]));if(_0x34e03f[_0xa757('0x2e')][_0xa757('0x3a')]){_0x51be6e[_0xa757('0x38')]=_[_0xa757('0x3b')](_0x51be6e['where'],{'$or':_[_0xa757('0x27')](_0x51be6e[_0xa757('0x32')],function(_0x5f0b71){var _0x11ebb3={};_0x11ebb3[_0x5f0b71]={'$like':'%'+_0x34e03f[_0xa757('0x2e')][_0xa757('0x3a')]+'%'};return _0x11ebb3;})});}_0x51be6e[_0xa757('0x38')]=_[_0xa757('0x3b')](_0x51be6e[_0xa757('0x38')],{'mailboxuser':_0x211980['mailbox']});_0x51be6e=_[_0xa757('0x3b')]({},_0x51be6e,_0x34e03f['options']);return db[_0xa757('0x4d')][_0xa757('0x4f')](_0x51be6e)[_0xa757('0x1e')](respondWithFilteredResult(_0x29b2f5,_0x51be6e));})[_0xa757('0x3f')](handleError(_0x29b2f5,null));};
\ No newline at end of file
+var _0x2e54=['keys','options','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','autoAssociation','UserProfileResource','error','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','destroy','findOne','VoiceMailMessage','hasOwnProperty','pick','mailbox','findAndCountAll','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','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','save','then','get','Voicemails','stack','name','send','index','map','rawAttributes','fieldName','type','query','filters','intersection','attributes','model','fields','length','nolimit','order','sort','where','filter','merge','VIRTUAL','VoiceMail','includeAll','include','findAll','rows','catch','show','params'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x2e54,0x1dd));var _0x42e5=function(_0x49f438,_0x3a3560){_0x49f438=_0x49f438-0x0;var _0x402efe=_0x2e54[_0x49f438];return _0x402efe;};'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'];function respondWithStatusCode(_0x12385d,_0x4530ba){_0x4530ba=_0x4530ba||0xcc;return function(_0x41598d){if(_0x41598d){return _0x12385d[_0x42e5('0x18')](_0x4530ba);}return _0x12385d[_0x42e5('0x19')](_0x4530ba)[_0x42e5('0x1a')]();};}function respondWithResult(_0x96fae2,_0x447648){_0x447648=_0x447648||0xc8;return function(_0x23957f){if(_0x23957f){return _0x96fae2['status'](_0x447648)[_0x42e5('0x1b')](_0x23957f);}};}function respondWithFilteredResult(_0x1d8e52,_0x4034bd){return function(_0x388300){if(_0x388300){var _0x2f4999=typeof _0x4034bd[_0x42e5('0x1c')]===_0x42e5('0x1d')&&typeof _0x4034bd[_0x42e5('0x1e')]===_0x42e5('0x1d');var _0x3c7b79=_0x388300[_0x42e5('0x1f')];var _0x38282d=_0x2f4999?0x0:_0x4034bd[_0x42e5('0x1c')];var _0x23fe09=_0x2f4999?_0x388300['count']:_0x4034bd[_0x42e5('0x1c')]+_0x4034bd['limit'];var _0x5f4428;if(_0x23fe09>=_0x3c7b79){_0x23fe09=_0x3c7b79;_0x5f4428=0xc8;}else{_0x5f4428=0xce;}_0x1d8e52[_0x42e5('0x19')](_0x5f4428);return _0x1d8e52[_0x42e5('0x20')]('Content-Range',_0x38282d+'-'+_0x23fe09+'/'+_0x3c7b79)[_0x42e5('0x1b')](_0x388300);}return null;};}function patchUpdates(_0x39a3e2){return function(_0x1c2169){try{jsonpatch[_0x42e5('0x21')](_0x1c2169,_0x39a3e2,!![]);}catch(_0x1150f4){return BPromise[_0x42e5('0x22')](_0x1150f4);}return _0x1c2169[_0x42e5('0x23')]();};}function saveUpdates(_0x58eee5,_0x4da508){return function(_0x283d44){if(_0x283d44){return _0x283d44['update'](_0x58eee5)[_0x42e5('0x24')](function(_0x2e9574){return _0x2e9574;});}return null;};}function removeEntity(_0x37d10e,_0x49490f){return function(_0x32380f){if(_0x32380f){return _0x32380f['destroy']()[_0x42e5('0x24')](function(){var _0xf29221=_0x32380f[_0x42e5('0x25')]({'plain':!![]});var _0x275c80=_0x42e5('0x26');return db['UserProfileResource']['destroy']({'where':{'type':_0x275c80,'resourceId':_0xf29221['id']}})[_0x42e5('0x24')](function(){return _0x32380f;});})['then'](function(){_0x37d10e['status'](0xcc)[_0x42e5('0x1a')]();});}};}function handleEntityNotFound(_0x5b1727,_0x392c6b){return function(_0x2d9e65){if(!_0x2d9e65){_0x5b1727[_0x42e5('0x18')](0x194);}return _0x2d9e65;};}function handleError(_0x1c8ee4,_0x27ae27){_0x27ae27=_0x27ae27||0x1f4;return function(_0x2f1edc){logger['error'](_0x2f1edc[_0x42e5('0x27')]);if(_0x2f1edc[_0x42e5('0x28')]){delete _0x2f1edc[_0x42e5('0x28')];}_0x1c8ee4[_0x42e5('0x19')](_0x27ae27)[_0x42e5('0x29')](_0x2f1edc);};}exports[_0x42e5('0x2a')]=function(_0x383e97,_0x282cbf){var _0x5a4930={},_0x2ba9ef={},_0x2c7542={'count':0x0,'rows':[]};var _0x3d9e8b=_[_0x42e5('0x2b')](db['VoiceMail'][_0x42e5('0x2c')],function(_0xf5a3dc){return{'name':_0xf5a3dc[_0x42e5('0x2d')],'type':_0xf5a3dc[_0x42e5('0x2e')]['key']};});_0x2ba9ef['model']=_[_0x42e5('0x2b')](_0x3d9e8b,'name');_0x2ba9ef[_0x42e5('0x2f')]=_['keys'](_0x383e97[_0x42e5('0x2f')]);_0x2ba9ef[_0x42e5('0x30')]=_[_0x42e5('0x31')](_0x2ba9ef['model'],_0x2ba9ef[_0x42e5('0x2f')]);_0x5a4930[_0x42e5('0x32')]=_['intersection'](_0x2ba9ef[_0x42e5('0x33')],qs['fields'](_0x383e97[_0x42e5('0x2f')][_0x42e5('0x34')]));_0x5a4930[_0x42e5('0x32')]=_0x5a4930[_0x42e5('0x32')][_0x42e5('0x35')]?_0x5a4930[_0x42e5('0x32')]:_0x2ba9ef[_0x42e5('0x33')];if(!_0x383e97['query']['hasOwnProperty'](_0x42e5('0x36'))){_0x5a4930[_0x42e5('0x1e')]=qs[_0x42e5('0x1e')](_0x383e97['query']['limit']);_0x5a4930['offset']=qs['offset'](_0x383e97[_0x42e5('0x2f')][_0x42e5('0x1c')]);}_0x5a4930[_0x42e5('0x37')]=qs[_0x42e5('0x38')](_0x383e97[_0x42e5('0x2f')][_0x42e5('0x38')]);_0x5a4930[_0x42e5('0x39')]=qs[_0x42e5('0x30')](_['pick'](_0x383e97[_0x42e5('0x2f')],_0x2ba9ef['filters']),_0x3d9e8b);if(_0x383e97[_0x42e5('0x2f')][_0x42e5('0x3a')]){_0x5a4930[_0x42e5('0x39')]=_[_0x42e5('0x3b')](_0x5a4930[_0x42e5('0x39')],{'$or':_[_0x42e5('0x2b')](_0x3d9e8b,function(_0xd5e7f5){if(_0xd5e7f5['type']!==_0x42e5('0x3c')){var _0x356ff6={};_0x356ff6[_0xd5e7f5['name']]={'$like':'%'+_0x383e97[_0x42e5('0x2f')]['filter']+'%'};return _0x356ff6;}})});}_0x5a4930=_['merge']({},_0x5a4930,_0x383e97['options']);var _0x1105ea={'where':_0x5a4930[_0x42e5('0x39')]};return db[_0x42e5('0x3d')][_0x42e5('0x1f')](_0x1105ea)[_0x42e5('0x24')](function(_0x77aa22){_0x2c7542[_0x42e5('0x1f')]=_0x77aa22;if(_0x383e97['query'][_0x42e5('0x3e')]){_0x5a4930[_0x42e5('0x3f')]=[{'all':!![]}];}return db['VoiceMail'][_0x42e5('0x40')](_0x5a4930);})[_0x42e5('0x24')](function(_0x5db771){_0x2c7542[_0x42e5('0x41')]=_0x5db771;return _0x2c7542;})[_0x42e5('0x24')](respondWithFilteredResult(_0x282cbf,_0x5a4930))[_0x42e5('0x42')](handleError(_0x282cbf,null));};exports[_0x42e5('0x43')]=function(_0x424304,_0x4d32f4){var _0x41e1fd={'raw':!![],'where':{'id':_0x424304[_0x42e5('0x44')]['id']}},_0xc34e51={};_0xc34e51[_0x42e5('0x33')]=_['keys'](db[_0x42e5('0x3d')][_0x42e5('0x2c')]);_0xc34e51[_0x42e5('0x2f')]=_[_0x42e5('0x45')](_0x424304[_0x42e5('0x2f')]);_0xc34e51[_0x42e5('0x30')]=_[_0x42e5('0x31')](_0xc34e51[_0x42e5('0x33')],_0xc34e51['query']);_0x41e1fd[_0x42e5('0x32')]=_['intersection'](_0xc34e51['model'],qs[_0x42e5('0x34')](_0x424304[_0x42e5('0x2f')][_0x42e5('0x34')]));_0x41e1fd[_0x42e5('0x32')]=_0x41e1fd[_0x42e5('0x32')][_0x42e5('0x35')]?_0x41e1fd[_0x42e5('0x32')]:_0xc34e51['model'];if(_0x424304[_0x42e5('0x2f')][_0x42e5('0x3e')]){_0x41e1fd[_0x42e5('0x3f')]=[{'all':!![]}];}_0x41e1fd=_[_0x42e5('0x3b')]({},_0x41e1fd,_0x424304[_0x42e5('0x46')]);return db[_0x42e5('0x3d')][_0x42e5('0x47')](_0x41e1fd)[_0x42e5('0x24')](handleEntityNotFound(_0x4d32f4,null))['then'](respondWithResult(_0x4d32f4,null))[_0x42e5('0x42')](handleError(_0x4d32f4,null));};exports[_0x42e5('0x48')]=function(_0x3616f4,_0x48757e){return db[_0x42e5('0x3d')][_0x42e5('0x48')](_0x3616f4[_0x42e5('0x49')],{})[_0x42e5('0x24')](function(_0x2586b0){var _0x528ddd=_0x3616f4[_0x42e5('0x4a')]['get']({'plain':!![]});if(!_0x528ddd)throw new Error(_0x42e5('0x4b'));if(_0x528ddd[_0x42e5('0x4c')]===_0x42e5('0x4a')){var _0x48b63b=_0x2586b0['get']({'plain':!![]});var _0x4f0639=_0x42e5('0x26');return db[_0x42e5('0x4d')][_0x42e5('0x47')]({'where':{'name':_0x4f0639,'userProfileId':_0x528ddd[_0x42e5('0x4e')]},'raw':!![]})['then'](function(_0x3ae9de){if(_0x3ae9de&&_0x3ae9de[_0x42e5('0x4f')]===0x0){return db[_0x42e5('0x50')]['create']({'name':_0x48b63b[_0x42e5('0x28')],'resourceId':_0x48b63b['id'],'type':_0x3ae9de['name'],'sectionId':_0x3ae9de['id']},{})[_0x42e5('0x24')](function(){return _0x2586b0;});}else{return _0x2586b0;}})[_0x42e5('0x42')](function(_0x53e29b){logger[_0x42e5('0x51')](_0x42e5('0x52'),_0x53e29b);throw _0x53e29b;});}return _0x2586b0;})[_0x42e5('0x24')](respondWithResult(_0x48757e,0xc9))[_0x42e5('0x42')](handleError(_0x48757e,null));};exports[_0x42e5('0x53')]=function(_0x3f043f,_0x41c1dc){if(_0x3f043f[_0x42e5('0x49')]['id']){delete _0x3f043f[_0x42e5('0x49')]['id'];}return db[_0x42e5('0x3d')]['find']({'where':{'id':_0x3f043f[_0x42e5('0x44')]['id']}})[_0x42e5('0x24')](handleEntityNotFound(_0x41c1dc,null))[_0x42e5('0x24')](saveUpdates(_0x3f043f[_0x42e5('0x49')],null))[_0x42e5('0x24')](respondWithResult(_0x41c1dc,null))['catch'](handleError(_0x41c1dc,null));};exports[_0x42e5('0x54')]=function(_0x2b226f,_0x40b633){return db[_0x42e5('0x3d')]['find']({'where':{'id':_0x2b226f['params']['id']}})['then'](handleEntityNotFound(_0x40b633,null))[_0x42e5('0x24')](removeEntity(_0x40b633,null))[_0x42e5('0x42')](handleError(_0x40b633,null));};exports['getMessages']=function(_0x42094e,_0xb73aa8,_0x10346e){return db[_0x42e5('0x3d')][_0x42e5('0x55')]({'where':{'id':_0x42094e[_0x42e5('0x44')]['id']}})[_0x42e5('0x24')](handleEntityNotFound(_0xb73aa8,null))[_0x42e5('0x24')](function(_0x3692fc){var _0x5688a4;var _0x2911e0={},_0x517d03={};_0x517d03[_0x42e5('0x33')]=_[_0x42e5('0x45')](db[_0x42e5('0x56')][_0x42e5('0x2c')]);_0x517d03[_0x42e5('0x2f')]=_[_0x42e5('0x45')](_0x42094e[_0x42e5('0x2f')]);_0x517d03[_0x42e5('0x30')]=_[_0x42e5('0x31')](_0x517d03[_0x42e5('0x33')],_0x517d03[_0x42e5('0x2f')]);_0x2911e0['attributes']=_[_0x42e5('0x31')](_0x517d03['model'],qs[_0x42e5('0x34')](_0x42094e['query'][_0x42e5('0x34')]));_0x2911e0[_0x42e5('0x32')]=_0x2911e0['attributes'][_0x42e5('0x35')]?_0x2911e0[_0x42e5('0x32')]:_0x517d03['model'];if(!_0x42094e[_0x42e5('0x2f')][_0x42e5('0x57')]('nolimit')){_0x2911e0[_0x42e5('0x1e')]=qs[_0x42e5('0x1e')](_0x42094e[_0x42e5('0x2f')]['limit']);_0x2911e0[_0x42e5('0x1c')]=qs[_0x42e5('0x1c')](_0x42094e[_0x42e5('0x2f')][_0x42e5('0x1c')]);}_0x2911e0['order']=qs[_0x42e5('0x38')](_0x42094e['query'][_0x42e5('0x38')]);_0x2911e0[_0x42e5('0x39')]=qs[_0x42e5('0x30')](_[_0x42e5('0x58')](_0x42094e[_0x42e5('0x2f')],_0x517d03[_0x42e5('0x30')]));if(_0x42094e[_0x42e5('0x2f')]['filter']){_0x2911e0[_0x42e5('0x39')]=_[_0x42e5('0x3b')](_0x2911e0[_0x42e5('0x39')],{'$or':_[_0x42e5('0x2b')](_0x2911e0[_0x42e5('0x32')],function(_0x8c4a77){var _0xfef629={};_0xfef629[_0x8c4a77]={'$like':'%'+_0x42094e[_0x42e5('0x2f')][_0x42e5('0x3a')]+'%'};return _0xfef629;})});}_0x2911e0['where']=_[_0x42e5('0x3b')](_0x2911e0[_0x42e5('0x39')],{'mailboxuser':_0x3692fc[_0x42e5('0x59')]});_0x2911e0=_[_0x42e5('0x3b')]({},_0x2911e0,_0x42094e['options']);return db[_0x42e5('0x56')][_0x42e5('0x5a')](_0x2911e0)[_0x42e5('0x24')](respondWithFilteredResult(_0xb73aa8,_0x2911e0));})[_0x42e5('0x42')](handleError(_0xb73aa8,null));};
\ No newline at end of file
index 5694503..1a3641e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14a3=['voice_voicemail','mailbox_context','mailbox','util','api','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceMail.attributes','VoiceMail'];(function(_0x3c15ab,_0x3b5376){var _0x1eb9fa=function(_0x311740){while(--_0x311740){_0x3c15ab['push'](_0x3c15ab['shift']());}};_0x1eb9fa(++_0x3b5376);}(_0x14a3,0x121));var _0x314a=function(_0x44989b,_0x1824e8){_0x44989b=_0x44989b-0x0;var _0x1c771c=_0x14a3[_0x44989b];return _0x1c771c;};'use strict';var _=require('lodash');var util=require(_0x314a('0x0'));var logger=require('../../config/logger')(_0x314a('0x1'));var moment=require(_0x314a('0x2'));var BPromise=require(_0x314a('0x3'));var rp=require(_0x314a('0x4'));var fs=require('fs');var path=require(_0x314a('0x5'));var rimraf=require(_0x314a('0x6'));var config=require(_0x314a('0x7'));var attributes=require(_0x314a('0x8'));module['exports']=function(_0x552964,_0xf7f9c6){return _0x552964['define'](_0x314a('0x9'),attributes,{'tableName':_0x314a('0xa'),'paranoid':![],'indexes':[{'name':_0x314a('0xb'),'fields':[_0x314a('0xc'),'context']}],'timestamps':!![]});};
\ No newline at end of file
+var _0xf67f=['request-promise','path','../../config/environment','./voiceMail.attributes','exports','define','VoiceMail','voice_voicemail','mailbox','context','util','api','moment','bluebird'];(function(_0xf0ec6e,_0xa183d3){var _0x8bbc27=function(_0x39822b){while(--_0x39822b){_0xf0ec6e['push'](_0xf0ec6e['shift']());}};_0x8bbc27(++_0xa183d3);}(_0xf67f,0x15a));var _0xff67=function(_0x1162f9,_0x35f87c){_0x1162f9=_0x1162f9-0x0;var _0x75257c=_0xf67f[_0x1162f9];return _0x75257c;};'use strict';var _=require('lodash');var util=require(_0xff67('0x0'));var logger=require('../../config/logger')(_0xff67('0x1'));var moment=require(_0xff67('0x2'));var BPromise=require(_0xff67('0x3'));var rp=require(_0xff67('0x4'));var fs=require('fs');var path=require(_0xff67('0x5'));var rimraf=require('rimraf');var config=require(_0xff67('0x6'));var attributes=require(_0xff67('0x7'));module[_0xff67('0x8')]=function(_0x1997c2,_0x4e7e39){return _0x1997c2[_0xff67('0x9')](_0xff67('0xa'),attributes,{'tableName':_0xff67('0xb'),'paranoid':![],'indexes':[{'name':'mailbox_context','fields':[_0xff67('0xc'),_0xff67('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 8a96940..6594e32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2010=['request','then','info','VoiceMail,\x20%s,\x20%s','debug','VoiceMail,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','message','catch','lodash','util','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','http'];(function(_0x5b31c5,_0x46514e){var _0x5bd994=function(_0x29e686){while(--_0x29e686){_0x5b31c5['push'](_0x5b31c5['shift']());}};_0x5bd994(++_0x46514e);}(_0x2010,0x197));var _0x0201=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2010[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x0201('0x0'));var util=require(_0x0201('0x1'));var moment=require(_0x0201('0x2'));var BPromise=require(_0x0201('0x3'));var rs=require(_0x0201('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x0201('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x0201('0x6'))(_0x0201('0x7'));var config=require(_0x0201('0x8'));var jayson=require(_0x0201('0x9'));var client=jayson['client'][_0x0201('0xa')]({'port':0x232a});function respondWithRpcPromise(_0xf28ba7,_0x2723f6,_0x56f868){return new BPromise(function(_0x4c6d03,_0x455028){return client[_0x0201('0xb')](_0xf28ba7,_0x56f868)[_0x0201('0xc')](function(_0x24a2bc){logger[_0x0201('0xd')](_0x0201('0xe'),_0x2723f6,'request\x20sent');logger[_0x0201('0xf')](_0x0201('0x10'),_0x2723f6,_0x0201('0x11'),JSON[_0x0201('0x12')](_0x24a2bc));if(_0x24a2bc[_0x0201('0x13')]){if(_0x24a2bc[_0x0201('0x13')]['code']===0x1f4){logger[_0x0201('0x13')]('VoiceMail,\x20%s,\x20%s',_0x2723f6,_0x24a2bc['error']['message']);return _0x455028(_0x24a2bc['error']['message']);}logger[_0x0201('0x13')]('VoiceMail,\x20%s,\x20%s',_0x2723f6,_0x24a2bc[_0x0201('0x13')][_0x0201('0x14')]);return _0x4c6d03(_0x24a2bc[_0x0201('0x13')][_0x0201('0x14')]);}else{logger[_0x0201('0xd')]('VoiceMail,\x20%s,\x20%s',_0x2723f6,'request\x20sent');_0x4c6d03(_0x24a2bc['result'][_0x0201('0x14')]);}})[_0x0201('0x15')](function(_0x3e8b7d){logger[_0x0201('0x13')](_0x0201('0xe'),_0x2723f6,_0x3e8b7d);_0x455028(_0x3e8b7d);});});}
\ No newline at end of file
+var _0xaea0=['stringify','error','code','message','info','result','catch','lodash','moment','bluebird','randomstring','../../config/utils','../../config/logger','rpc','jayson/promise','client','then','VoiceMail,\x20%s,\x20%s','request\x20sent','debug'];(function(_0x4bf96c,_0x4d24fd){var _0x281d09=function(_0x56538e){while(--_0x56538e){_0x4bf96c['push'](_0x4bf96c['shift']());}};_0x281d09(++_0x4d24fd);}(_0xaea0,0x93));var _0x0aea=function(_0x334f9a,_0x542f01){_0x334f9a=_0x334f9a-0x0;var _0x2b219d=_0xaea0[_0x334f9a];return _0x2b219d;};'use strict';var _=require(_0x0aea('0x0'));var util=require('util');var moment=require(_0x0aea('0x1'));var BPromise=require(_0x0aea('0x2'));var rs=require(_0x0aea('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x0aea('0x4'));var logger=require(_0x0aea('0x5'))(_0x0aea('0x6'));var config=require('../../config/environment');var jayson=require(_0x0aea('0x7'));var client=jayson[_0x0aea('0x8')]['http']({'port':0x232a});function respondWithRpcPromise(_0x3d9f07,_0x654206,_0xc04beb){return new BPromise(function(_0x2e0426,_0x54e031){return client['request'](_0x3d9f07,_0xc04beb)[_0x0aea('0x9')](function(_0x3f943d){logger['info'](_0x0aea('0xa'),_0x654206,_0x0aea('0xb'));logger[_0x0aea('0xc')]('VoiceMail,\x20%s,\x20%s,\x20%s',_0x654206,'request\x20sent',JSON[_0x0aea('0xd')](_0x3f943d));if(_0x3f943d[_0x0aea('0xe')]){if(_0x3f943d[_0x0aea('0xe')][_0x0aea('0xf')]===0x1f4){logger[_0x0aea('0xe')](_0x0aea('0xa'),_0x654206,_0x3f943d[_0x0aea('0xe')]['message']);return _0x54e031(_0x3f943d[_0x0aea('0xe')]['message']);}logger[_0x0aea('0xe')](_0x0aea('0xa'),_0x654206,_0x3f943d[_0x0aea('0xe')]['message']);return _0x2e0426(_0x3f943d[_0x0aea('0xe')][_0x0aea('0x10')]);}else{logger[_0x0aea('0x11')](_0x0aea('0xa'),_0x654206,_0x0aea('0xb'));_0x2e0426(_0x3f943d[_0x0aea('0x12')][_0x0aea('0x10')]);}})[_0x0aea('0x13')](function(_0xf54aae){logger[_0x0aea('0xe')]('VoiceMail,\x20%s,\x20%s',_0x654206,_0xf54aae);_0x54e031(_0xf54aae);});});}
\ No newline at end of file
index 01a27aa..2eb7fdf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b9b=['index','/:id','show','/:id/download','download','create','update','delete','exports','multer','path','connect-timeout','express','../../components/auth/service','../../config/environment','./voiceMailMessage.controller','get','isAuthenticated'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0b9b,0xf3));var _0xb0b9=function(_0x4c6a5d,_0x2a7a54){_0x4c6a5d=_0x4c6a5d-0x0;var _0x192453=_0x0b9b[_0x4c6a5d];return _0x192453;};'use strict';var multer=require(_0xb0b9('0x0'));var util=require('util');var path=require(_0xb0b9('0x1'));var timeout=require(_0xb0b9('0x2'));var express=require(_0xb0b9('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0xb0b9('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0xb0b9('0x5'));var controller=require(_0xb0b9('0x6'));router[_0xb0b9('0x7')]('/',auth[_0xb0b9('0x8')](),controller[_0xb0b9('0x9')]);router[_0xb0b9('0x7')](_0xb0b9('0xa'),auth[_0xb0b9('0x8')](),controller[_0xb0b9('0xb')]);router['get'](_0xb0b9('0xc'),auth[_0xb0b9('0x8')](),controller[_0xb0b9('0xd')]);router['post']('/',auth[_0xb0b9('0x8')](),controller[_0xb0b9('0xe')]);router['put'](_0xb0b9('0xa'),auth[_0xb0b9('0x8')](),controller[_0xb0b9('0xf')]);router[_0xb0b9('0x10')](_0xb0b9('0xa'),auth[_0xb0b9('0x8')](),controller['destroy']);module[_0xb0b9('0x11')]=router;
\ No newline at end of file
+var _0xa311=['create','put','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','get','/:id','show','/:id/download','isAuthenticated'];(function(_0x1905b4,_0x4aba85){var _0x26cb5e=function(_0x4745ac){while(--_0x4745ac){_0x1905b4['push'](_0x1905b4['shift']());}};_0x26cb5e(++_0x4aba85);}(_0xa311,0x148));var _0x1a31=function(_0x58965a,_0x2e71db){_0x58965a=_0x58965a-0x0;var _0x254efc=_0xa311[_0x58965a];return _0x254efc;};'use strict';var multer=require(_0x1a31('0x0'));var util=require(_0x1a31('0x1'));var path=require(_0x1a31('0x2'));var timeout=require('connect-timeout');var express=require(_0x1a31('0x3'));var router=express[_0x1a31('0x4')]();var fs_extra=require(_0x1a31('0x5'));var auth=require(_0x1a31('0x6'));var interaction=require(_0x1a31('0x7'));var config=require(_0x1a31('0x8'));var controller=require('./voiceMailMessage.controller');router[_0x1a31('0x9')]('/',auth['isAuthenticated'](),controller['index']);router[_0x1a31('0x9')](_0x1a31('0xa'),auth['isAuthenticated'](),controller[_0x1a31('0xb')]);router[_0x1a31('0x9')](_0x1a31('0xc'),auth[_0x1a31('0xd')](),controller['download']);router['post']('/',auth['isAuthenticated'](),controller[_0x1a31('0xe')]);router[_0x1a31('0xf')](_0x1a31('0xa'),auth[_0x1a31('0xd')](),controller['update']);router['delete'](_0x1a31('0xa'),auth['isAuthenticated'](),controller[_0x1a31('0x10')]);module[_0x1a31('0x11')]=router;
\ No newline at end of file
index f47011e..78c6932 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5b42=['getDataValue','INTEGER','STRING','long','TIMESTAMP','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','VIRTUAL'];(function(_0x14cbe7,_0x56e87c){var _0x211deb=function(_0x3d5fb8){while(--_0x3d5fb8){_0x14cbe7['push'](_0x14cbe7['shift']());}};_0x211deb(++_0x56e87c);}(_0x5b42,0xb5));var _0x25b4=function(_0xaabfb9,_0x532847){_0xaabfb9=_0xaabfb9-0x0;var _0x57fbe7=_0x5b42[_0xaabfb9];return _0x57fbe7;};'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize[_0x25b4('0x0')],'get':function(_0x5df0fd){return this[_0x25b4('0x1')]('id');}},'msgnum':{'type':Sequelize[_0x25b4('0x2')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize['STRING'],'defaultValue':''},'context':{'type':Sequelize['STRING'],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x25b4('0x3')],'defaultValue':''},'callerid':{'type':Sequelize[_0x25b4('0x3')],'defaultValue':''},'origtime':{'type':Sequelize[_0x25b4('0x3')],'defaultValue':''},'duration':{'type':Sequelize[_0x25b4('0x3')],'defaultValue':''},'mailboxuser':{'type':Sequelize['STRING'],'defaultValue':''},'mailboxcontext':{'type':Sequelize[_0x25b4('0x3')],'defaultValue':''},'recording':{'type':Sequelize['BLOB'](_0x25b4('0x4')),'defaultValue':null},'flag':{'type':Sequelize[_0x25b4('0x3')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x25b4('0x3')],'defaultValue':''},'stamp':{'type':_0x25b4('0x5'),'defaultValue':Sequelize['literal'](_0x25b4('0x6'))}};
\ No newline at end of file
+var _0xeef0=['literal','CURRENT_TIMESTAMP\x20ON\x20UPDATE\x20CURRENT_TIMESTAMP','sequelize','exports','VIRTUAL','getDataValue','INTEGER','STRING','BLOB','TIMESTAMP'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0xeef0,0x98));var _0x0eef=function(_0x4ed520,_0x21be63){_0x4ed520=_0x4ed520-0x0;var _0x4415a6=_0xeef0[_0x4ed520];return _0x4415a6;};'use strict';var Sequelize=require(_0x0eef('0x0'));module[_0x0eef('0x1')]={'name':{'type':Sequelize[_0x0eef('0x2')],'get':function(_0x44814f){return this[_0x0eef('0x3')]('id');}},'msgnum':{'type':Sequelize[_0x0eef('0x4')](0xb),'defaultValue':0x0,'allowNull':![]},'dir':{'type':Sequelize[_0x0eef('0x5')],'defaultValue':''},'context':{'type':Sequelize[_0x0eef('0x5')],'defaultValue':''},'macrocontext':{'type':Sequelize[_0x0eef('0x5')],'defaultValue':''},'callerid':{'type':Sequelize[_0x0eef('0x5')],'defaultValue':''},'origtime':{'type':Sequelize[_0x0eef('0x5')],'defaultValue':''},'duration':{'type':Sequelize[_0x0eef('0x5')],'defaultValue':''},'mailboxuser':{'type':Sequelize[_0x0eef('0x5')],'defaultValue':''},'mailboxcontext':{'type':Sequelize['STRING'],'defaultValue':''},'recording':{'type':Sequelize[_0x0eef('0x6')]('long'),'defaultValue':null},'flag':{'type':Sequelize[_0x0eef('0x5')],'defaultValue':''},'msg_id':{'type':Sequelize[_0x0eef('0x5')],'defaultValue':''},'stamp':{'type':_0x0eef('0x7'),'defaultValue':Sequelize[_0x0eef('0x8')](_0x0eef('0x9'))}};
\ No newline at end of file
index ffd6aae..1c75feb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99a5=['filter','where','merge','options','includeAll','findAll','rows','catch','params','include','find','create','body','download','recording','msg_id','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','attachment;\x20filename=\x22','rimraf','zip-dir','bluebird','util','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','undefined','limit','count','set','Content-Range','json','apply','save','update','then','destroy','sendStatus','error','stack','name','send','index','map','VoiceMailMessage','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','offset','order','sort','pick'];(function(_0x29eb6f,_0x21bb39){var _0x5096a4=function(_0x3553c4){while(--_0x3553c4){_0x29eb6f['push'](_0x29eb6f['shift']());}};_0x5096a4(++_0x21bb39);}(_0x99a5,0x10c));var _0x599a=function(_0x339143,_0x1961d6){_0x339143=_0x339143-0x0;var _0x2feb73=_0x99a5[_0x339143];return _0x2feb73;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x599a('0x0'));var zipdir=require(_0x599a('0x1'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x599a('0x2'));var Mustache=require('mustache');var util=require(_0x599a('0x3'));var path=require('path');var sox=require('sox');var csv=require(_0x599a('0x4'));var ejs=require(_0x599a('0x5'));var fs=require('fs');var fs_extra=require(_0x599a('0x6'));var _=require(_0x599a('0x7'));var squel=require('squel');var crypto=require(_0x599a('0x8'));var jsforce=require(_0x599a('0x9'));var deskjs=require(_0x599a('0xa'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x599a('0xb'));var Redis=require(_0x599a('0xc'));var authService=require(_0x599a('0xd'));var qs=require('../../components/parsers/qs');var as=require(_0x599a('0xe'));var hardwareService=require(_0x599a('0xf'));var logger=require(_0x599a('0x10'))(_0x599a('0x11'));var utils=require(_0x599a('0x12'));var config=require(_0x599a('0x13'));var licenseUtil=require(_0x599a('0x14'));var db=require(_0x599a('0x15'))['db'];function respondWithStatusCode(_0x4e2d39,_0x1243ae){_0x1243ae=_0x1243ae||0xcc;return function(_0x1efc7d){if(_0x1efc7d){return _0x4e2d39['sendStatus'](_0x1243ae);}return _0x4e2d39['status'](_0x1243ae)[_0x599a('0x16')]();};}function respondWithResult(_0x510612,_0x4555ff){_0x4555ff=_0x4555ff||0xc8;return function(_0x5a2007){if(_0x5a2007){return _0x510612[_0x599a('0x17')](_0x4555ff)['json'](_0x5a2007);}};}function respondWithFilteredResult(_0x8ea242,_0x484ee7){return function(_0x4a294d){if(_0x4a294d){var _0x3bbafb=typeof _0x484ee7['offset']===_0x599a('0x18')&&typeof _0x484ee7[_0x599a('0x19')]===_0x599a('0x18');var _0x3d8b4d=_0x4a294d[_0x599a('0x1a')];var _0xaa972b=_0x3bbafb?0x0:_0x484ee7['offset'];var _0x1c7ede=_0x3bbafb?_0x4a294d[_0x599a('0x1a')]:_0x484ee7['offset']+_0x484ee7[_0x599a('0x19')];var _0x5a739f;if(_0x1c7ede>=_0x3d8b4d){_0x1c7ede=_0x3d8b4d;_0x5a739f=0xc8;}else{_0x5a739f=0xce;}_0x8ea242['status'](_0x5a739f);return _0x8ea242[_0x599a('0x1b')](_0x599a('0x1c'),_0xaa972b+'-'+_0x1c7ede+'/'+_0x3d8b4d)[_0x599a('0x1d')](_0x4a294d);}return null;};}function patchUpdates(_0x54ae0f){return function(_0x9738c3){try{jsonpatch[_0x599a('0x1e')](_0x9738c3,_0x54ae0f,!![]);}catch(_0x43fff3){return BPromise['reject'](_0x43fff3);}return _0x9738c3[_0x599a('0x1f')]();};}function saveUpdates(_0x22743a,_0x1e56ea){return function(_0x12529a){if(_0x12529a){return _0x12529a[_0x599a('0x20')](_0x22743a)[_0x599a('0x21')](function(_0x3f4cfe){return _0x3f4cfe;});}return null;};}function removeEntity(_0x371138,_0x2a2668){return function(_0x3c0041){if(_0x3c0041){return _0x3c0041[_0x599a('0x22')]()[_0x599a('0x21')](function(){_0x371138[_0x599a('0x17')](0xcc)[_0x599a('0x16')]();});}};}function handleEntityNotFound(_0x300134,_0x5db5d3){return function(_0x2a7099){if(!_0x2a7099){_0x300134[_0x599a('0x23')](0x194);}return _0x2a7099;};}function handleError(_0x4accf8,_0x498a15){_0x498a15=_0x498a15||0x1f4;return function(_0x45e5b2){logger[_0x599a('0x24')](_0x45e5b2[_0x599a('0x25')]);if(_0x45e5b2[_0x599a('0x26')]){delete _0x45e5b2['name'];}_0x4accf8[_0x599a('0x17')](_0x498a15)[_0x599a('0x27')](_0x45e5b2);};}exports[_0x599a('0x28')]=function(_0x1b4be5,_0x4f3831){var _0x5a1311={},_0x5ed434={},_0x509506={'count':0x0,'rows':[]};var _0x234a42=_[_0x599a('0x29')](db[_0x599a('0x2a')][_0x599a('0x2b')],function(_0x1d1aeb){return{'name':_0x1d1aeb[_0x599a('0x2c')],'type':_0x1d1aeb[_0x599a('0x2d')][_0x599a('0x2e')]};});_0x5ed434[_0x599a('0x2f')]=_['differenceBy'](_[_0x599a('0x29')](_0x234a42,_0x599a('0x26')),[_0x599a('0x26')]);_0x5ed434[_0x599a('0x30')]=_[_0x599a('0x31')](_0x1b4be5[_0x599a('0x30')]);_0x5ed434[_0x599a('0x32')]=_[_0x599a('0x33')](_0x5ed434[_0x599a('0x2f')],_0x5ed434[_0x599a('0x30')]);_0x5a1311[_0x599a('0x34')]=_[_0x599a('0x33')](_0x5ed434[_0x599a('0x2f')],qs[_0x599a('0x35')](_0x1b4be5[_0x599a('0x30')][_0x599a('0x35')]));_0x5a1311[_0x599a('0x34')]=_0x5a1311['attributes'][_0x599a('0x36')]?_0x5a1311[_0x599a('0x34')]:_0x5ed434[_0x599a('0x2f')];if(!_0x1b4be5[_0x599a('0x30')]['hasOwnProperty'](_0x599a('0x37'))){_0x5a1311[_0x599a('0x19')]=qs['limit'](_0x1b4be5['query'][_0x599a('0x19')]);_0x5a1311['offset']=qs['offset'](_0x1b4be5[_0x599a('0x30')][_0x599a('0x38')]);}_0x5a1311[_0x599a('0x39')]=qs[_0x599a('0x3a')](_0x1b4be5[_0x599a('0x30')][_0x599a('0x3a')]);_0x5a1311['where']=qs[_0x599a('0x32')](_[_0x599a('0x3b')](_0x1b4be5[_0x599a('0x30')],_0x5ed434[_0x599a('0x32')]),_0x234a42);if(_0x1b4be5[_0x599a('0x30')][_0x599a('0x3c')]){_0x5a1311[_0x599a('0x3d')]=_[_0x599a('0x3e')](_0x5a1311[_0x599a('0x3d')],{'$or':_[_0x599a('0x29')](_0x234a42,function(_0xf5f23d){if(_0xf5f23d[_0x599a('0x2d')]!=='VIRTUAL'){var _0x1e8516={};_0x1e8516[_0xf5f23d[_0x599a('0x26')]]={'$like':'%'+_0x1b4be5['query'][_0x599a('0x3c')]+'%'};return _0x1e8516;}})});}_0x5a1311=_[_0x599a('0x3e')]({},_0x5a1311,_0x1b4be5[_0x599a('0x3f')]);var _0x9ea5cc={'where':_0x5a1311[_0x599a('0x3d')]};return db['VoiceMailMessage'][_0x599a('0x1a')](_0x9ea5cc)[_0x599a('0x21')](function(_0x5d4df9){_0x509506[_0x599a('0x1a')]=_0x5d4df9;if(_0x1b4be5[_0x599a('0x30')][_0x599a('0x40')]){_0x5a1311['include']=[{'all':!![]}];}return db['VoiceMailMessage'][_0x599a('0x41')](_0x5a1311);})[_0x599a('0x21')](function(_0x4e3299){_0x509506[_0x599a('0x42')]=_0x4e3299;return _0x509506;})[_0x599a('0x21')](respondWithFilteredResult(_0x4f3831,_0x5a1311))[_0x599a('0x43')](handleError(_0x4f3831,null));};exports['show']=function(_0xd050c5,_0x2b399d){var _0x36a4a5={'raw':!![],'where':{'id':_0xd050c5[_0x599a('0x44')]['id']}},_0x2cd0e5={};_0x2cd0e5[_0x599a('0x2f')]=_[_0x599a('0x31')](db[_0x599a('0x2a')][_0x599a('0x2b')]);_0x2cd0e5[_0x599a('0x30')]=_[_0x599a('0x31')](_0xd050c5[_0x599a('0x30')]);_0x2cd0e5[_0x599a('0x32')]=_[_0x599a('0x33')](_0x2cd0e5['model'],_0x2cd0e5[_0x599a('0x30')]);_0x36a4a5[_0x599a('0x34')]=_[_0x599a('0x33')](_0x2cd0e5['model'],qs['fields'](_0xd050c5[_0x599a('0x30')]['fields']));_0x36a4a5[_0x599a('0x34')]=_0x36a4a5['attributes']['length']?_0x36a4a5['attributes']:_0x2cd0e5[_0x599a('0x2f')];if(_0xd050c5[_0x599a('0x30')]['includeAll']){_0x36a4a5[_0x599a('0x45')]=[{'all':!![]}];}_0x36a4a5=_['merge']({},_0x36a4a5,_0xd050c5[_0x599a('0x3f')]);return db[_0x599a('0x2a')][_0x599a('0x46')](_0x36a4a5)[_0x599a('0x21')](handleEntityNotFound(_0x2b399d,null))[_0x599a('0x21')](respondWithResult(_0x2b399d,null))[_0x599a('0x43')](handleError(_0x2b399d,null));};exports[_0x599a('0x47')]=function(_0x2ec3a4,_0x402791){return db['VoiceMailMessage']['create'](_0x2ec3a4[_0x599a('0x48')],{})['then'](respondWithResult(_0x402791,0xc9))[_0x599a('0x43')](handleError(_0x402791,null));};exports[_0x599a('0x20')]=function(_0x6bd241,_0x5ebcce){if(_0x6bd241[_0x599a('0x48')]['id']){delete _0x6bd241['body']['id'];}return db[_0x599a('0x2a')][_0x599a('0x46')]({'where':{'id':_0x6bd241[_0x599a('0x44')]['id']}})[_0x599a('0x21')](handleEntityNotFound(_0x5ebcce,null))[_0x599a('0x21')](saveUpdates(_0x6bd241[_0x599a('0x48')],null))[_0x599a('0x21')](respondWithResult(_0x5ebcce,null))['catch'](handleError(_0x5ebcce,null));};exports['destroy']=function(_0x3599b9,_0x240b7f){return db[_0x599a('0x2a')][_0x599a('0x46')]({'where':{'id':_0x3599b9[_0x599a('0x44')]['id']}})['then'](handleEntityNotFound(_0x240b7f,null))[_0x599a('0x21')](removeEntity(_0x240b7f,null))['catch'](handleError(_0x240b7f,null));};exports[_0x599a('0x49')]=function(_0x8dab01,_0x56c70e,_0x35945b){return db[_0x599a('0x2a')][_0x599a('0x46')]({'where':{'id':_0x8dab01['params']['id']},'attributes':['id',_0x599a('0x4a'),_0x599a('0x4b')]})[_0x599a('0x21')](handleEntityNotFound(_0x56c70e,null))[_0x599a('0x21')](function(_0x3a627a){if(_0x3a627a){if(!_0x3a627a[_0x599a('0x4a')]){throw new db[(_0x599a('0x4c'))][(_0x599a('0x4d'))](_0x599a('0x4e'));}var _0x1b6b49={'Content-Type':_0x599a('0x4f'),'Content-Disposition':_0x599a('0x50')};if(_0x3a627a[_0x599a('0x4b')]){_0x1b6b49['Content-Disposition']=_0x599a('0x51')+_0x3a627a[_0x599a('0x4b')]+'.wav\x22';}_0x56c70e[_0x599a('0x1b')](_0x1b6b49);return _0x56c70e[_0x599a('0x27')](new Buffer(_0x3a627a['recording']));}})[_0x599a('0x43')](handleError(_0x56c70e,null));};
\ No newline at end of file
+var _0x2b5a=['key','model','differenceBy','query','keys','filters','attributes','intersection','fields','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','options','VoiceMailMessage','includeAll','include','findAll','rows','show','params','length','find','catch','create','body','recording','Sequelize','ValidationError','VoiceMailMessage\x20not\x20found','audio/wav','attachment','msg_id','Content-Disposition','attachment;\x20filename=\x22','send','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/environment','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','index','map','rawAttributes','fieldName','type'];(function(_0x1a89a1,_0x56d889){var _0x3d5b46=function(_0x56debf){while(--_0x56debf){_0x1a89a1['push'](_0x1a89a1['shift']());}};_0x3d5b46(++_0x56d889);}(_0x2b5a,0x1e1));var _0xa2b5=function(_0x36f4cf,_0x1b1f98){_0x36f4cf=_0x36f4cf-0x0;var _0x43d02b=_0x2b5a[_0x36f4cf];return _0x43d02b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xa2b5('0x0'));var jsonpatch=require(_0xa2b5('0x1'));var rp=require(_0xa2b5('0x2'));var moment=require(_0xa2b5('0x3'));var BPromise=require(_0xa2b5('0x4'));var Mustache=require(_0xa2b5('0x5'));var util=require(_0xa2b5('0x6'));var path=require(_0xa2b5('0x7'));var sox=require(_0xa2b5('0x8'));var csv=require('to-csv');var ejs=require(_0xa2b5('0x9'));var fs=require('fs');var fs_extra=require(_0xa2b5('0xa'));var _=require('lodash');var squel=require(_0xa2b5('0xb'));var crypto=require(_0xa2b5('0xc'));var jsforce=require(_0xa2b5('0xd'));var deskjs=require(_0xa2b5('0xe'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xa2b5('0xf'));var Redis=require(_0xa2b5('0x10'));var authService=require(_0xa2b5('0x11'));var qs=require(_0xa2b5('0x12'));var as=require(_0xa2b5('0x13'));var hardwareService=require(_0xa2b5('0x14'));var logger=require('../../config/logger')(_0xa2b5('0x15'));var utils=require('../../config/utils');var config=require(_0xa2b5('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xa2b5('0x17'))['db'];function respondWithStatusCode(_0x33eeec,_0x31e04f){_0x31e04f=_0x31e04f||0xcc;return function(_0x91b4fd){if(_0x91b4fd){return _0x33eeec[_0xa2b5('0x18')](_0x31e04f);}return _0x33eeec[_0xa2b5('0x19')](_0x31e04f)[_0xa2b5('0x1a')]();};}function respondWithResult(_0x593682,_0xd179c3){_0xd179c3=_0xd179c3||0xc8;return function(_0xab173a){if(_0xab173a){return _0x593682[_0xa2b5('0x19')](_0xd179c3)[_0xa2b5('0x1b')](_0xab173a);}};}function respondWithFilteredResult(_0x2d78cd,_0x1cbfe6){return function(_0x4f3dff){if(_0x4f3dff){var _0x270a74=typeof _0x1cbfe6[_0xa2b5('0x1c')]==='undefined'&&typeof _0x1cbfe6['limit']===_0xa2b5('0x1d');var _0xd6a932=_0x4f3dff['count'];var _0x37ae1d=_0x270a74?0x0:_0x1cbfe6[_0xa2b5('0x1c')];var _0x2b2a54=_0x270a74?_0x4f3dff['count']:_0x1cbfe6[_0xa2b5('0x1c')]+_0x1cbfe6[_0xa2b5('0x1e')];var _0x33e178;if(_0x2b2a54>=_0xd6a932){_0x2b2a54=_0xd6a932;_0x33e178=0xc8;}else{_0x33e178=0xce;}_0x2d78cd['status'](_0x33e178);return _0x2d78cd[_0xa2b5('0x1f')](_0xa2b5('0x20'),_0x37ae1d+'-'+_0x2b2a54+'/'+_0xd6a932)['json'](_0x4f3dff);}return null;};}function patchUpdates(_0x2d0955){return function(_0x2c48fc){try{jsonpatch[_0xa2b5('0x21')](_0x2c48fc,_0x2d0955,!![]);}catch(_0x876171){return BPromise[_0xa2b5('0x22')](_0x876171);}return _0x2c48fc[_0xa2b5('0x23')]();};}function saveUpdates(_0x2a5676,_0x5122b4){return function(_0x1924bd){if(_0x1924bd){return _0x1924bd[_0xa2b5('0x24')](_0x2a5676)[_0xa2b5('0x25')](function(_0x4a6ce9){return _0x4a6ce9;});}return null;};}function removeEntity(_0x16c5a2,_0x1693e8){return function(_0xad9335){if(_0xad9335){return _0xad9335[_0xa2b5('0x26')]()[_0xa2b5('0x25')](function(){_0x16c5a2['status'](0xcc)[_0xa2b5('0x1a')]();});}};}function handleEntityNotFound(_0x10db20,_0x12957e){return function(_0x3c2752){if(!_0x3c2752){_0x10db20[_0xa2b5('0x18')](0x194);}return _0x3c2752;};}function handleError(_0x59723f,_0x33d120){_0x33d120=_0x33d120||0x1f4;return function(_0x3903da){logger[_0xa2b5('0x27')](_0x3903da[_0xa2b5('0x28')]);if(_0x3903da[_0xa2b5('0x29')]){delete _0x3903da[_0xa2b5('0x29')];}_0x59723f[_0xa2b5('0x19')](_0x33d120)['send'](_0x3903da);};}exports[_0xa2b5('0x2a')]=function(_0x155dc0,_0x310df9){var _0x2be494={},_0xd6d897={},_0x1a9544={'count':0x0,'rows':[]};var _0x338c82=_[_0xa2b5('0x2b')](db['VoiceMailMessage'][_0xa2b5('0x2c')],function(_0x163b8f){return{'name':_0x163b8f[_0xa2b5('0x2d')],'type':_0x163b8f[_0xa2b5('0x2e')][_0xa2b5('0x2f')]};});_0xd6d897[_0xa2b5('0x30')]=_[_0xa2b5('0x31')](_[_0xa2b5('0x2b')](_0x338c82,_0xa2b5('0x29')),['name']);_0xd6d897[_0xa2b5('0x32')]=_[_0xa2b5('0x33')](_0x155dc0[_0xa2b5('0x32')]);_0xd6d897[_0xa2b5('0x34')]=_['intersection'](_0xd6d897['model'],_0xd6d897['query']);_0x2be494[_0xa2b5('0x35')]=_[_0xa2b5('0x36')](_0xd6d897[_0xa2b5('0x30')],qs[_0xa2b5('0x37')](_0x155dc0[_0xa2b5('0x32')][_0xa2b5('0x37')]));_0x2be494[_0xa2b5('0x35')]=_0x2be494['attributes']['length']?_0x2be494[_0xa2b5('0x35')]:_0xd6d897[_0xa2b5('0x30')];if(!_0x155dc0[_0xa2b5('0x32')][_0xa2b5('0x38')](_0xa2b5('0x39'))){_0x2be494['limit']=qs[_0xa2b5('0x1e')](_0x155dc0['query'][_0xa2b5('0x1e')]);_0x2be494[_0xa2b5('0x1c')]=qs[_0xa2b5('0x1c')](_0x155dc0['query'][_0xa2b5('0x1c')]);}_0x2be494[_0xa2b5('0x3a')]=qs[_0xa2b5('0x3b')](_0x155dc0[_0xa2b5('0x32')][_0xa2b5('0x3b')]);_0x2be494['where']=qs[_0xa2b5('0x34')](_[_0xa2b5('0x3c')](_0x155dc0[_0xa2b5('0x32')],_0xd6d897[_0xa2b5('0x34')]),_0x338c82);if(_0x155dc0['query'][_0xa2b5('0x3d')]){_0x2be494['where']=_['merge'](_0x2be494[_0xa2b5('0x3e')],{'$or':_[_0xa2b5('0x2b')](_0x338c82,function(_0x2bad3a){if(_0x2bad3a['type']!==_0xa2b5('0x3f')){var _0x398df2={};_0x398df2[_0x2bad3a['name']]={'$like':'%'+_0x155dc0[_0xa2b5('0x32')][_0xa2b5('0x3d')]+'%'};return _0x398df2;}})});}_0x2be494=_[_0xa2b5('0x40')]({},_0x2be494,_0x155dc0[_0xa2b5('0x41')]);var _0x4d2898={'where':_0x2be494[_0xa2b5('0x3e')]};return db[_0xa2b5('0x42')]['count'](_0x4d2898)['then'](function(_0x5d282f){_0x1a9544['count']=_0x5d282f;if(_0x155dc0[_0xa2b5('0x32')][_0xa2b5('0x43')]){_0x2be494[_0xa2b5('0x44')]=[{'all':!![]}];}return db['VoiceMailMessage'][_0xa2b5('0x45')](_0x2be494);})['then'](function(_0x5db51e){_0x1a9544[_0xa2b5('0x46')]=_0x5db51e;return _0x1a9544;})[_0xa2b5('0x25')](respondWithFilteredResult(_0x310df9,_0x2be494))['catch'](handleError(_0x310df9,null));};exports[_0xa2b5('0x47')]=function(_0x153aae,_0x251c07){var _0x16ae19={'raw':!![],'where':{'id':_0x153aae[_0xa2b5('0x48')]['id']}},_0x550a94={};_0x550a94[_0xa2b5('0x30')]=_[_0xa2b5('0x33')](db[_0xa2b5('0x42')][_0xa2b5('0x2c')]);_0x550a94['query']=_['keys'](_0x153aae['query']);_0x550a94[_0xa2b5('0x34')]=_[_0xa2b5('0x36')](_0x550a94[_0xa2b5('0x30')],_0x550a94[_0xa2b5('0x32')]);_0x16ae19[_0xa2b5('0x35')]=_[_0xa2b5('0x36')](_0x550a94[_0xa2b5('0x30')],qs[_0xa2b5('0x37')](_0x153aae[_0xa2b5('0x32')][_0xa2b5('0x37')]));_0x16ae19[_0xa2b5('0x35')]=_0x16ae19[_0xa2b5('0x35')][_0xa2b5('0x49')]?_0x16ae19[_0xa2b5('0x35')]:_0x550a94['model'];if(_0x153aae[_0xa2b5('0x32')][_0xa2b5('0x43')]){_0x16ae19['include']=[{'all':!![]}];}_0x16ae19=_[_0xa2b5('0x40')]({},_0x16ae19,_0x153aae[_0xa2b5('0x41')]);return db['VoiceMailMessage'][_0xa2b5('0x4a')](_0x16ae19)['then'](handleEntityNotFound(_0x251c07,null))[_0xa2b5('0x25')](respondWithResult(_0x251c07,null))[_0xa2b5('0x4b')](handleError(_0x251c07,null));};exports[_0xa2b5('0x4c')]=function(_0x1e2f38,_0x4b6961){return db['VoiceMailMessage'][_0xa2b5('0x4c')](_0x1e2f38[_0xa2b5('0x4d')],{})['then'](respondWithResult(_0x4b6961,0xc9))[_0xa2b5('0x4b')](handleError(_0x4b6961,null));};exports[_0xa2b5('0x24')]=function(_0x1ff7c2,_0x1ad4f4){if(_0x1ff7c2[_0xa2b5('0x4d')]['id']){delete _0x1ff7c2[_0xa2b5('0x4d')]['id'];}return db['VoiceMailMessage'][_0xa2b5('0x4a')]({'where':{'id':_0x1ff7c2['params']['id']}})[_0xa2b5('0x25')](handleEntityNotFound(_0x1ad4f4,null))[_0xa2b5('0x25')](saveUpdates(_0x1ff7c2['body'],null))['then'](respondWithResult(_0x1ad4f4,null))[_0xa2b5('0x4b')](handleError(_0x1ad4f4,null));};exports[_0xa2b5('0x26')]=function(_0x30058d,_0x345529){return db[_0xa2b5('0x42')]['find']({'where':{'id':_0x30058d['params']['id']}})['then'](handleEntityNotFound(_0x345529,null))[_0xa2b5('0x25')](removeEntity(_0x345529,null))[_0xa2b5('0x4b')](handleError(_0x345529,null));};exports['download']=function(_0x377b92,_0x3fdce3,_0x47b53a){return db[_0xa2b5('0x42')][_0xa2b5('0x4a')]({'where':{'id':_0x377b92[_0xa2b5('0x48')]['id']},'attributes':['id','recording','msg_id']})[_0xa2b5('0x25')](handleEntityNotFound(_0x3fdce3,null))[_0xa2b5('0x25')](function(_0x31abb1){if(_0x31abb1){if(!_0x31abb1[_0xa2b5('0x4e')]){throw new db[(_0xa2b5('0x4f'))][(_0xa2b5('0x50'))](_0xa2b5('0x51'));}var _0x13e017={'Content-Type':_0xa2b5('0x52'),'Content-Disposition':_0xa2b5('0x53')};if(_0x31abb1[_0xa2b5('0x54')]){_0x13e017[_0xa2b5('0x55')]=_0xa2b5('0x56')+_0x31abb1[_0xa2b5('0x54')]+'.wav\x22';}_0x3fdce3[_0xa2b5('0x1f')](_0x13e017);return _0x3fdce3[_0xa2b5('0x57')](new Buffer(_0x31abb1[_0xa2b5('0x4e')]));}})[_0xa2b5('0x4b')](handleError(_0x3fdce3,null));};
\ No newline at end of file
index 181fef8..edf8599 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3e4b=['bluebird','request-promise','path','rimraf','../../config/environment','define','dir','lodash','../../config/logger'];(function(_0x31ac2f,_0x5951dc){var _0x32175b=function(_0x129fff){while(--_0x129fff){_0x31ac2f['push'](_0x31ac2f['shift']());}};_0x32175b(++_0x5951dc);}(_0x3e4b,0x8e));var _0xb3e4=function(_0xf9a56d,_0x267b32){_0xf9a56d=_0xf9a56d-0x0;var _0x106220=_0x3e4b[_0xf9a56d];return _0x106220;};'use strict';var _=require(_0xb3e4('0x0'));var util=require('util');var logger=require(_0xb3e4('0x1'))('api');var moment=require('moment');var BPromise=require(_0xb3e4('0x2'));var rp=require(_0xb3e4('0x3'));var fs=require('fs');var path=require(_0xb3e4('0x4'));var rimraf=require(_0xb3e4('0x5'));var config=require(_0xb3e4('0x6'));var attributes=require('./voiceMailMessage.attributes');module['exports']=function(_0x45f5ed,_0xe622ec){return _0x45f5ed[_0xb3e4('0x7')]('VoiceMailMessage',attributes,{'tableName':'voice_voicemail_messages','paranoid':![],'indexes':[{'name':_0xb3e4('0x8'),'fields':[_0xb3e4('0x8')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xbb8d=['moment','bluebird','request-promise','path','rimraf','./voiceMailMessage.attributes','define','VoiceMailMessage','voice_voicemail_messages','dir','util','api'];(function(_0x707e90,_0x347d09){var _0x4dd9d9=function(_0x3a9f71){while(--_0x3a9f71){_0x707e90['push'](_0x707e90['shift']());}};_0x4dd9d9(++_0x347d09);}(_0xbb8d,0x11e));var _0xdbb8=function(_0x3912df,_0x41d229){_0x3912df=_0x3912df-0x0;var _0x1f5d19=_0xbb8d[_0x3912df];return _0x1f5d19;};'use strict';var _=require('lodash');var util=require(_0xdbb8('0x0'));var logger=require('../../config/logger')(_0xdbb8('0x1'));var moment=require(_0xdbb8('0x2'));var BPromise=require(_0xdbb8('0x3'));var rp=require(_0xdbb8('0x4'));var fs=require('fs');var path=require(_0xdbb8('0x5'));var rimraf=require(_0xdbb8('0x6'));var config=require('../../config/environment');var attributes=require(_0xdbb8('0x7'));module['exports']=function(_0x3473b8,_0x1ed02b){return _0x3473b8[_0xdbb8('0x8')](_0xdbb8('0x9'),attributes,{'tableName':_0xdbb8('0xa'),'paranoid':![],'indexes':[{'name':_0xdbb8('0xb'),'fields':[_0xdbb8('0xb')]}],'timestamps':![]});};
\ No newline at end of file
index 0d0f12f..ed55574 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd615=['../../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','message','info','result','catch','lodash','util','bluebird','randomstring'];(function(_0x1e048b,_0x5b18ab){var _0xce173c=function(_0x4133ea){while(--_0x4133ea){_0x1e048b['push'](_0x1e048b['shift']());}};_0xce173c(++_0x5b18ab);}(_0xd615,0x80));var _0x5d61=function(_0x55cf52,_0x523956){_0x55cf52=_0x55cf52-0x0;var _0x506758=_0xd615[_0x55cf52];return _0x506758;};'use strict';var _=require(_0x5d61('0x0'));var util=require(_0x5d61('0x1'));var moment=require('moment');var BPromise=require(_0x5d61('0x2'));var rs=require(_0x5d61('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x5d61('0x4'));var logger=require(_0x5d61('0x5'))(_0x5d61('0x6'));var config=require('../../config/environment');var jayson=require(_0x5d61('0x7'));var client=jayson[_0x5d61('0x8')][_0x5d61('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x38304,_0x401616,_0x4f5026){return new BPromise(function(_0x20460f,_0x591b0e){return client[_0x5d61('0xa')](_0x38304,_0x4f5026)[_0x5d61('0xb')](function(_0x590a04){logger['info'](_0x5d61('0xc'),_0x401616,_0x5d61('0xd'));logger[_0x5d61('0xe')](_0x5d61('0xf'),_0x401616,_0x5d61('0xd'),JSON[_0x5d61('0x10')](_0x590a04));if(_0x590a04[_0x5d61('0x11')]){if(_0x590a04[_0x5d61('0x11')]['code']===0x1f4){logger['error'](_0x5d61('0xc'),_0x401616,_0x590a04[_0x5d61('0x11')][_0x5d61('0x12')]);return _0x591b0e(_0x590a04[_0x5d61('0x11')]['message']);}logger[_0x5d61('0x11')](_0x5d61('0xc'),_0x401616,_0x590a04[_0x5d61('0x11')][_0x5d61('0x12')]);return _0x20460f(_0x590a04[_0x5d61('0x11')]['message']);}else{logger[_0x5d61('0x13')](_0x5d61('0xc'),_0x401616,_0x5d61('0xd'));_0x20460f(_0x590a04[_0x5d61('0x14')][_0x5d61('0x12')]);}})[_0x5d61('0x15')](function(_0x1661e0){logger[_0x5d61('0x11')](_0x5d61('0xc'),_0x401616,_0x1661e0);_0x591b0e(_0x1661e0);});});}
\ No newline at end of file
+var _0x6c3f=['../../mysqldb','../../config/logger','rpc','../../config/environment','request','then','info','VoiceMailMessage,\x20%s,\x20%s','request\x20sent','VoiceMailMessage,\x20%s,\x20%s,\x20%s','code','error','message','catch','lodash','util','moment','bluebird','randomstring'];(function(_0xd653eb,_0xfef7e3){var _0x4ef048=function(_0x154884){while(--_0x154884){_0xd653eb['push'](_0xd653eb['shift']());}};_0x4ef048(++_0xfef7e3);}(_0x6c3f,0x1e9));var _0xf6c3=function(_0x23f9c7,_0xbea809){_0x23f9c7=_0x23f9c7-0x0;var _0x546cc5=_0x6c3f[_0x23f9c7];return _0x546cc5;};'use strict';var _=require(_0xf6c3('0x0'));var util=require(_0xf6c3('0x1'));var moment=require(_0xf6c3('0x2'));var BPromise=require(_0xf6c3('0x3'));var rs=require(_0xf6c3('0x4'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xf6c3('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xf6c3('0x6'))(_0xf6c3('0x7'));var config=require(_0xf6c3('0x8'));var jayson=require('jayson/promise');var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x56f58e,_0x19718f,_0x5ca1ba){return new BPromise(function(_0x339407,_0x30687b){return client[_0xf6c3('0x9')](_0x56f58e,_0x5ca1ba)[_0xf6c3('0xa')](function(_0x39fda7){logger[_0xf6c3('0xb')](_0xf6c3('0xc'),_0x19718f,_0xf6c3('0xd'));logger['debug'](_0xf6c3('0xe'),_0x19718f,'request\x20sent',JSON['stringify'](_0x39fda7));if(_0x39fda7['error']){if(_0x39fda7['error'][_0xf6c3('0xf')]===0x1f4){logger[_0xf6c3('0x10')](_0xf6c3('0xc'),_0x19718f,_0x39fda7['error']['message']);return _0x30687b(_0x39fda7[_0xf6c3('0x10')]['message']);}logger['error'](_0xf6c3('0xc'),_0x19718f,_0x39fda7[_0xf6c3('0x10')]['message']);return _0x339407(_0x39fda7[_0xf6c3('0x10')]['message']);}else{logger[_0xf6c3('0xb')](_0xf6c3('0xc'),_0x19718f,_0xf6c3('0xd'));_0x339407(_0x39fda7['result'][_0xf6c3('0x11')]);}})[_0xf6c3('0x12')](function(_0x47a1f8){logger[_0xf6c3('0x10')](_0xf6c3('0xc'),_0x19718f,_0x47a1f8);_0x30687b(_0x47a1f8);});});}
\ No newline at end of file
index 289106d..80f27d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3d23=['../../components/auth/service','../../components/interaction/service','../../config/environment','./voiceMusicOnHold.controller','get','index','isAuthenticated','show','/:id/sounds','getSounds','post','addSound','put','/:id','update','delete','/:id/sounds/:id2','removeSound','exports','multer','util','path','connect-timeout','express','fs-extra'];(function(_0x1931bf,_0x1f7312){var _0x4a1939=function(_0x57ab77){while(--_0x57ab77){_0x1931bf['push'](_0x1931bf['shift']());}};_0x4a1939(++_0x1f7312);}(_0x3d23,0x77));var _0x33d2=function(_0x5c16e1,_0x12ea72){_0x5c16e1=_0x5c16e1-0x0;var _0x4f59d0=_0x3d23[_0x5c16e1];return _0x4f59d0;};'use strict';var multer=require(_0x33d2('0x0'));var util=require(_0x33d2('0x1'));var path=require(_0x33d2('0x2'));var timeout=require(_0x33d2('0x3'));var express=require(_0x33d2('0x4'));var router=express['Router']();var fs_extra=require(_0x33d2('0x5'));var auth=require(_0x33d2('0x6'));var interaction=require(_0x33d2('0x7'));var config=require(_0x33d2('0x8'));var controller=require(_0x33d2('0x9'));router[_0x33d2('0xa')]('/',auth['isAuthenticated'](),controller[_0x33d2('0xb')]);router[_0x33d2('0xa')]('/:id',auth[_0x33d2('0xc')](),controller[_0x33d2('0xd')]);router[_0x33d2('0xa')](_0x33d2('0xe'),auth['isAuthenticated'](),controller[_0x33d2('0xf')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router[_0x33d2('0x10')]('/:id/sounds',auth['isAuthenticated'](),controller[_0x33d2('0x11')]);router[_0x33d2('0x12')](_0x33d2('0x13'),auth[_0x33d2('0xc')](),controller[_0x33d2('0x14')]);router[_0x33d2('0x15')]('/:id',auth[_0x33d2('0xc')](),controller['destroy']);router[_0x33d2('0x15')](_0x33d2('0x16'),auth[_0x33d2('0xc')](),controller[_0x33d2('0x17')]);module[_0x33d2('0x18')]=router;
\ No newline at end of file
+var _0x5e8d=['/:id/sounds/:id2','removeSound','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','get','isAuthenticated','index','/:id','show','/:id/sounds','getSounds','put','update','destroy','delete'];(function(_0x27bf1c,_0x4d42d2){var _0x38d314=function(_0x503c42){while(--_0x503c42){_0x27bf1c['push'](_0x27bf1c['shift']());}};_0x38d314(++_0x4d42d2);}(_0x5e8d,0x153));var _0xd5e8=function(_0x577b83,_0x30a10a){_0x577b83=_0x577b83-0x0;var _0x3185d9=_0x5e8d[_0x577b83];return _0x3185d9;};'use strict';var multer=require('multer');var util=require(_0xd5e8('0x0'));var path=require(_0xd5e8('0x1'));var timeout=require(_0xd5e8('0x2'));var express=require(_0xd5e8('0x3'));var router=express[_0xd5e8('0x4')]();var fs_extra=require(_0xd5e8('0x5'));var auth=require(_0xd5e8('0x6'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./voiceMusicOnHold.controller');router[_0xd5e8('0x7')]('/',auth[_0xd5e8('0x8')](),controller[_0xd5e8('0x9')]);router[_0xd5e8('0x7')](_0xd5e8('0xa'),auth[_0xd5e8('0x8')](),controller[_0xd5e8('0xb')]);router[_0xd5e8('0x7')](_0xd5e8('0xc'),auth[_0xd5e8('0x8')](),controller[_0xd5e8('0xd')]);router['post']('/',auth[_0xd5e8('0x8')](),controller['create']);router['post']('/:id/sounds',auth[_0xd5e8('0x8')](),controller['addSound']);router[_0xd5e8('0xe')](_0xd5e8('0xa'),auth[_0xd5e8('0x8')](),controller[_0xd5e8('0xf')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0xd5e8('0x10')]);router[_0xd5e8('0x11')](_0xd5e8('0x12'),auth[_0xd5e8('0x8')](),controller[_0xd5e8('0x13')]);module[_0xd5e8('0x14')]=router;
\ No newline at end of file
index 20b6f68..008d089 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1804=['ENUM','custom','quietmp3nb','quietmp3','files','STRING','alpha','TIMESTAMP','BOOLEAN','sequelize'];(function(_0x2c2781,_0x5f1153){var _0x3fe469=function(_0x5915df){while(--_0x5915df){_0x2c2781['push'](_0x2c2781['shift']());}};_0x3fe469(++_0x5f1153);}(_0x1804,0x1b7));var _0x4180=function(_0x40fef1,_0x2c045f){_0x40fef1=_0x40fef1-0x0;var _0x52337b=_0x1804[_0x40fef1];return _0x52337b;};'use strict';var Sequelize=require(_0x4180('0x0'));module['exports']={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':'name'},'mode':{'type':Sequelize[_0x4180('0x1')](_0x4180('0x2'),'files','mp3nb',_0x4180('0x3'),_0x4180('0x4'),'mp3'),'allowNull':!![],'defaultValue':_0x4180('0x5')},'directory':{'type':Sequelize[_0x4180('0x6')],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0x4180('0x6')],'allowNull':!![]},'sort':{'type':Sequelize[_0x4180('0x6')],'allowNull':!![],'defaultValue':_0x4180('0x7')},'format':{'type':Sequelize['STRING'],'allowNull':!![]},'stamp':{'type':_0x4180('0x8')},'defaultEntry':{'type':Sequelize[_0x4180('0x9')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa723=['mp3','alpha','TIMESTAMP','BOOLEAN','exports','STRING','name','ENUM','files','mp3nb','quietmp3nb'];(function(_0x196234,_0x27b3ca){var _0x145d7f=function(_0x34a052){while(--_0x34a052){_0x196234['push'](_0x196234['shift']());}};_0x145d7f(++_0x27b3ca);}(_0xa723,0x14e));var _0x3a72=function(_0x3048ea,_0x3838c2){_0x3048ea=_0x3048ea-0x0;var _0x1a13c4=_0xa723[_0x3048ea];return _0x1a13c4;};'use strict';var Sequelize=require('sequelize');module[_0x3a72('0x0')]={'name':{'type':Sequelize[_0x3a72('0x1')],'allowNull':![],'unique':_0x3a72('0x2')},'mode':{'type':Sequelize[_0x3a72('0x3')]('custom',_0x3a72('0x4'),_0x3a72('0x5'),_0x3a72('0x6'),'quietmp3',_0x3a72('0x7')),'allowNull':!![],'defaultValue':'files'},'directory':{'type':Sequelize[_0x3a72('0x1')],'allowNull':!![]},'application':{'type':Sequelize['STRING'],'allowNull':!![]},'digit':{'type':Sequelize[_0x3a72('0x1')],'allowNull':!![]},'sort':{'type':Sequelize[_0x3a72('0x1')],'allowNull':!![],'defaultValue':_0x3a72('0x8')},'format':{'type':Sequelize[_0x3a72('0x1')],'allowNull':!![]},'stamp':{'type':_0x3a72('0x9')},'defaultEntry':{'type':Sequelize[_0x3a72('0xa')],'defaultValue':0x0}};
\ No newline at end of file
index c98ab5b..2b98010 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd804=['includeAll','include','catch','show','params','keys','options','find','body','create','sequelize','transaction','mode','directory','server/files/moh','mkdirSync','0777','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','UserProfileSection','userProfileId','autoAssociation','readdirSync','forEach','unlinkSync','join','rmdirSync','Sequelize','message','addSound','Sound','save_name','converted_format','createdAt','server/files/sounds/converted','format','%s.%s','extname','root','ValidationError','removeSound','findOne','id2','getSounds','eml-format','zip-dir','fast-json-patch','moment','path','sox','to-csv','ejs','fs-extra','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../mysqldb','sendStatus','status','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','get','MusicOnHolds','UserProfileResource','destroy','end','stack','name','send','index','map','rawAttributes','fieldName','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','limit','order','sort','where','pick','merge','type','filter','VoiceMusicOnHold'];(function(_0x15dda5,_0x4a1121){var _0x3b29c2=function(_0x406889){while(--_0x406889){_0x15dda5['push'](_0x15dda5['shift']());}};_0x3b29c2(++_0x4a1121);}(_0xd804,0x176));var _0x4d80=function(_0x5b3dfb,_0x1b629c){_0x5b3dfb=_0x5b3dfb-0x0;var _0x503711=_0xd804[_0x5b3dfb];return _0x503711;};'use strict';var emlformat=require(_0x4d80('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x4d80('0x1'));var jsonpatch=require(_0x4d80('0x2'));var rp=require('request-promise');var moment=require(_0x4d80('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require('util');var path=require(_0x4d80('0x4'));var sox=require(_0x4d80('0x5'));var csv=require(_0x4d80('0x6'));var ejs=require(_0x4d80('0x7'));var fs=require('fs');var fs_extra=require(_0x4d80('0x8'));var _=require('lodash');var squel=require(_0x4d80('0x9'));var crypto=require(_0x4d80('0xa'));var jsforce=require('jsforce');var deskjs=require(_0x4d80('0xb'));var toCsv=require('to-csv');var querystring=require(_0x4d80('0xc'));var Papa=require(_0x4d80('0xd'));var Redis=require(_0x4d80('0xe'));var authService=require(_0x4d80('0xf'));var qs=require(_0x4d80('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x4d80('0x11'));var logger=require(_0x4d80('0x12'))(_0x4d80('0x13'));var utils=require('../../config/utils');var config=require(_0x4d80('0x14'));var licenseUtil=require('../../config/license/util');var db=require(_0x4d80('0x15'))['db'];function respondWithStatusCode(_0x4bad00,_0x4cb6bd){_0x4cb6bd=_0x4cb6bd||0xcc;return function(_0x2cfd31){if(_0x2cfd31){return _0x4bad00[_0x4d80('0x16')](_0x4cb6bd);}return _0x4bad00[_0x4d80('0x17')](_0x4cb6bd)['end']();};}function respondWithResult(_0x1167e7,_0x238d25){_0x238d25=_0x238d25||0xc8;return function(_0x5eeb35){if(_0x5eeb35){return _0x1167e7['status'](_0x238d25)[_0x4d80('0x18')](_0x5eeb35);}};}function respondWithFilteredResult(_0xc75d36,_0x52532e){return function(_0x581d58){if(_0x581d58){var _0x3a2de1=typeof _0x52532e[_0x4d80('0x19')]==='undefined'&&typeof _0x52532e['limit']===_0x4d80('0x1a');var _0x4b14c9=_0x581d58['count'];var _0x5aad86=_0x3a2de1?0x0:_0x52532e['offset'];var _0x596fd8=_0x3a2de1?_0x581d58[_0x4d80('0x1b')]:_0x52532e[_0x4d80('0x19')]+_0x52532e['limit'];var _0x1afb1b;if(_0x596fd8>=_0x4b14c9){_0x596fd8=_0x4b14c9;_0x1afb1b=0xc8;}else{_0x1afb1b=0xce;}_0xc75d36[_0x4d80('0x17')](_0x1afb1b);return _0xc75d36[_0x4d80('0x1c')](_0x4d80('0x1d'),_0x5aad86+'-'+_0x596fd8+'/'+_0x4b14c9)['json'](_0x581d58);}return null;};}function patchUpdates(_0x5702eb){return function(_0x42c2c6){try{jsonpatch[_0x4d80('0x1e')](_0x42c2c6,_0x5702eb,!![]);}catch(_0x225f4b){return BPromise[_0x4d80('0x1f')](_0x225f4b);}return _0x42c2c6[_0x4d80('0x20')]();};}function saveUpdates(_0x241178,_0x19f998){return function(_0x3f33b5){if(_0x3f33b5){return _0x3f33b5[_0x4d80('0x21')](_0x241178)[_0x4d80('0x22')](function(_0x3f8668){return _0x3f8668;});}return null;};}function removeEntity(_0xdf2f46,_0x4f263e){return function(_0x167da8){if(_0x167da8){return _0x167da8['destroy']()[_0x4d80('0x22')](function(){var _0x5ef07a=_0x167da8[_0x4d80('0x23')]({'plain':!![]});var _0x5c5f4d=_0x4d80('0x24');return db[_0x4d80('0x25')][_0x4d80('0x26')]({'where':{'type':_0x5c5f4d,'resourceId':_0x5ef07a['id']}})[_0x4d80('0x22')](function(){return _0x167da8;});})['then'](function(){_0xdf2f46[_0x4d80('0x17')](0xcc)[_0x4d80('0x27')]();});}};}function handleEntityNotFound(_0x5243cd,_0x4dc0e4){return function(_0x228cdc){if(!_0x228cdc){_0x5243cd[_0x4d80('0x16')](0x194);}return _0x228cdc;};}function handleError(_0x442b33,_0x4d472d){_0x4d472d=_0x4d472d||0x1f4;return function(_0xa7dbd0){logger['error'](_0xa7dbd0[_0x4d80('0x28')]);if(_0xa7dbd0[_0x4d80('0x29')]){delete _0xa7dbd0[_0x4d80('0x29')];}_0x442b33[_0x4d80('0x17')](_0x4d472d)[_0x4d80('0x2a')](_0xa7dbd0);};}exports[_0x4d80('0x2b')]=function(_0x5ce8e7,_0x1801fc){var _0x9cf3c5={},_0x5a4e44={},_0x561001={'count':0x0,'rows':[]};var _0x25468a=_[_0x4d80('0x2c')](db['VoiceMusicOnHold'][_0x4d80('0x2d')],function(_0x4901e7){return{'name':_0x4901e7[_0x4d80('0x2e')],'type':_0x4901e7['type'][_0x4d80('0x2f')]};});_0x5a4e44[_0x4d80('0x30')]=_[_0x4d80('0x2c')](_0x25468a,_0x4d80('0x29'));_0x5a4e44[_0x4d80('0x31')]=_['keys'](_0x5ce8e7[_0x4d80('0x31')]);_0x5a4e44[_0x4d80('0x32')]=_['intersection'](_0x5a4e44[_0x4d80('0x30')],_0x5a4e44[_0x4d80('0x31')]);_0x9cf3c5[_0x4d80('0x33')]=_[_0x4d80('0x34')](_0x5a4e44[_0x4d80('0x30')],qs['fields'](_0x5ce8e7[_0x4d80('0x31')][_0x4d80('0x35')]));_0x9cf3c5['attributes']=_0x9cf3c5['attributes'][_0x4d80('0x36')]?_0x9cf3c5['attributes']:_0x5a4e44[_0x4d80('0x30')];if(!_0x5ce8e7[_0x4d80('0x31')][_0x4d80('0x37')](_0x4d80('0x38'))){_0x9cf3c5['limit']=qs[_0x4d80('0x39')](_0x5ce8e7[_0x4d80('0x31')][_0x4d80('0x39')]);_0x9cf3c5[_0x4d80('0x19')]=qs['offset'](_0x5ce8e7[_0x4d80('0x31')][_0x4d80('0x19')]);}_0x9cf3c5[_0x4d80('0x3a')]=qs[_0x4d80('0x3b')](_0x5ce8e7[_0x4d80('0x31')]['sort']);delete _0x5ce8e7['query'][_0x4d80('0x3b')];_0x9cf3c5[_0x4d80('0x3c')]=qs[_0x4d80('0x32')](_[_0x4d80('0x3d')](_0x5ce8e7[_0x4d80('0x31')],_0x5a4e44[_0x4d80('0x32')]),_0x25468a);if(_0x5ce8e7['query']['filter']){_0x9cf3c5[_0x4d80('0x3c')]=_[_0x4d80('0x3e')](_0x9cf3c5[_0x4d80('0x3c')],{'$or':_[_0x4d80('0x2c')](_0x25468a,function(_0x51f643){if(_0x51f643[_0x4d80('0x3f')]!=='VIRTUAL'){var _0x50d5c9={};_0x50d5c9[_0x51f643[_0x4d80('0x29')]]={'$like':'%'+_0x5ce8e7[_0x4d80('0x31')][_0x4d80('0x40')]+'%'};return _0x50d5c9;}})});}_0x9cf3c5=_[_0x4d80('0x3e')]({},_0x9cf3c5,_0x5ce8e7['options']);var _0x48c154={'where':_0x9cf3c5['where']};return db[_0x4d80('0x41')]['count'](_0x48c154)['then'](function(_0x348e91){_0x561001[_0x4d80('0x1b')]=_0x348e91;if(_0x5ce8e7[_0x4d80('0x31')][_0x4d80('0x42')]){_0x9cf3c5[_0x4d80('0x43')]=[{'all':!![]}];}return db[_0x4d80('0x41')]['findAll'](_0x9cf3c5);})[_0x4d80('0x22')](function(_0x1c6222){_0x561001['rows']=_0x1c6222;return _0x561001;})[_0x4d80('0x22')](respondWithFilteredResult(_0x1801fc,_0x9cf3c5))[_0x4d80('0x44')](handleError(_0x1801fc,null));};exports[_0x4d80('0x45')]=function(_0x75a0cd,_0x5ca171){var _0xfe59a3={'raw':![],'where':{'id':_0x75a0cd[_0x4d80('0x46')]['id']}},_0x284d63={};_0x284d63[_0x4d80('0x30')]=_[_0x4d80('0x47')](db[_0x4d80('0x41')][_0x4d80('0x2d')]);_0x284d63[_0x4d80('0x31')]=_[_0x4d80('0x47')](_0x75a0cd[_0x4d80('0x31')]);_0x284d63['filters']=_[_0x4d80('0x34')](_0x284d63[_0x4d80('0x30')],_0x284d63[_0x4d80('0x31')]);_0xfe59a3[_0x4d80('0x33')]=_[_0x4d80('0x34')](_0x284d63[_0x4d80('0x30')],qs['fields'](_0x75a0cd[_0x4d80('0x31')][_0x4d80('0x35')]));_0xfe59a3[_0x4d80('0x33')]=_0xfe59a3[_0x4d80('0x33')][_0x4d80('0x36')]?_0xfe59a3['attributes']:_0x284d63[_0x4d80('0x30')];if(_0x75a0cd[_0x4d80('0x31')]['includeAll']){_0xfe59a3[_0x4d80('0x43')]=[{'all':!![]}];}_0xfe59a3=_[_0x4d80('0x3e')]({},_0xfe59a3,_0x75a0cd[_0x4d80('0x48')]);return db['VoiceMusicOnHold'][_0x4d80('0x49')](_0xfe59a3)[_0x4d80('0x22')](handleEntityNotFound(_0x5ca171,null))['then'](respondWithResult(_0x5ca171,null))[_0x4d80('0x44')](handleError(_0x5ca171,null));};exports[_0x4d80('0x21')]=function(_0x2b2738,_0x40aaef){if(_0x2b2738[_0x4d80('0x4a')]['id']){delete _0x2b2738['body']['id'];}return db['VoiceMusicOnHold']['find']({'where':{'id':_0x2b2738[_0x4d80('0x46')]['id']}})[_0x4d80('0x22')](handleEntityNotFound(_0x40aaef,null))[_0x4d80('0x22')](saveUpdates(_0x2b2738[_0x4d80('0x4a')],null))[_0x4d80('0x22')](respondWithResult(_0x40aaef,null))[_0x4d80('0x44')](handleError(_0x40aaef,null));};exports[_0x4d80('0x4b')]=function(_0x3993ae,_0x2c6355,_0x538e9e){return db[_0x4d80('0x4c')][_0x4d80('0x4d')](function(_0xbd0b80){if(_0x3993ae[_0x4d80('0x4a')][_0x4d80('0x4e')]==='files'){_0x3993ae[_0x4d80('0x4a')][_0x4d80('0x4f')]=path['join'](config['root'],_0x4d80('0x50'),_0x3993ae[_0x4d80('0x4a')][_0x4d80('0x29')]);}return db[_0x4d80('0x41')][_0x4d80('0x4b')](_0x3993ae['body'],{'transaction':_0xbd0b80})['then'](function(_0x591e85){if(_0x3993ae[_0x4d80('0x4a')][_0x4d80('0x4e')]==='files'){fs[_0x4d80('0x51')](_0x591e85[_0x4d80('0x4f')],parseInt(_0x4d80('0x52'),0x8));}var _0x2367b1=_0x3993ae[_0x4d80('0x53')][_0x4d80('0x23')]({'plain':!![]});if(!_0x2367b1)throw new Error(_0x4d80('0x54'));if(_0x2367b1['role']===_0x4d80('0x53')){var _0x39d859=_0x591e85[_0x4d80('0x23')]({'plain':!![]});return db[_0x4d80('0x55')]['find']({'where':{'name':'MusicOnHolds','userProfileId':_0x2367b1[_0x4d80('0x56')]},'raw':!![]})[_0x4d80('0x22')](function(_0x39c704){if(_0x39c704&&_0x39c704[_0x4d80('0x57')]===0x0){return db[_0x4d80('0x25')][_0x4d80('0x4b')]({'name':_0x39d859[_0x4d80('0x29')],'resourceId':_0x39d859['id'],'type':_0x39c704[_0x4d80('0x29')],'sectionId':_0x39c704['id']},{})[_0x4d80('0x22')](function(){return _0x591e85;});}else{return _0x591e85;}})[_0x4d80('0x44')](function(_0x373edd){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x373edd);});}return _0x591e85;});})[_0x4d80('0x22')](respondWithResult(_0x2c6355,0xc9))[_0x4d80('0x44')](handleError(_0x2c6355,null));};exports[_0x4d80('0x26')]=function(_0x4e004b,_0x1c1892,_0x1855fb){var _0x587882;return db[_0x4d80('0x41')][_0x4d80('0x49')]({'where':{'id':_0x4e004b[_0x4d80('0x46')]['id']}})['then'](function(_0x3b8575){if(_0x3b8575){return db[_0x4d80('0x4c')][_0x4d80('0x4d')](function(_0xc04f42){return _0x3b8575[_0x4d80('0x26')]({'transaction':_0xc04f42,'raw':!![]})[_0x4d80('0x22')](function(_0x26c040){if(_0x26c040[_0x4d80('0x4f')]){fs[_0x4d80('0x58')](_0x26c040['directory'])[_0x4d80('0x59')](function(_0x3440d0){fs[_0x4d80('0x5a')](path[_0x4d80('0x5b')](_0x26c040[_0x4d80('0x4f')],_0x3440d0));});fs[_0x4d80('0x5c')](_0x26c040['directory']);}return _0x26c040;});})[_0x4d80('0x44')](function(_0x3b5418){throw new db[(_0x4d80('0x5d'))]['ValidationError'](_0x3b5418[_0x4d80('0x5e')]);});}})[_0x4d80('0x22')](handleEntityNotFound(_0x1c1892,null))['then'](removeEntity(_0x1c1892,null))[_0x4d80('0x44')](handleError(_0x1c1892,null));};exports['addSound']=function(_0x53aeff,_0x33fa9f,_0x41441d){return db['sequelize']['transaction'](function(_0x5a00c3){var _0x97a7ad;return db[_0x4d80('0x41')][_0x4d80('0x49')]({'where':{'id':_0x53aeff[_0x4d80('0x46')]['id']}})[_0x4d80('0x22')](function(_0x483ed7){if(_0x483ed7){_0x97a7ad=_0x483ed7;return _0x483ed7[_0x4d80('0x5f')](_0x53aeff['body']['id'],{'transaction':_0x5a00c3});}})[_0x4d80('0x22')](function(_0x2357c4){if(_0x2357c4){return db[_0x4d80('0x60')]['findOne']({'where':{'id':_0x53aeff['body']['id']},'attributes':['id',_0x4d80('0x29'),_0x4d80('0x61'),_0x4d80('0x62'),_0x4d80('0x63')],'raw':!![]});}})[_0x4d80('0x22')](function(_0x13865c){if(_0x13865c){var _0x374715=path['join'](config['root'],_0x4d80('0x64'),util[_0x4d80('0x65')](_0x4d80('0x66'),path['basename'](_0x13865c[_0x4d80('0x61')],path[_0x4d80('0x67')](_0x13865c[_0x4d80('0x61')])),_0x13865c[_0x4d80('0x62')]));var _0x4a135d=path['join'](config[_0x4d80('0x68')],_0x4d80('0x50'),_0x97a7ad[_0x4d80('0x29')],util[_0x4d80('0x65')](_0x4d80('0x66'),_0x13865c[_0x4d80('0x29')],_0x13865c[_0x4d80('0x62')]));fs['symlinkSync'](_0x374715,_0x4a135d);return _0x13865c;}})[_0x4d80('0x44')](function(_0x4feac6){throw new db[(_0x4d80('0x5d'))][(_0x4d80('0x69'))](_0x4feac6[_0x4d80('0x5e')]);});})[_0x4d80('0x22')](handleEntityNotFound(_0x33fa9f,null))['then'](respondWithResult(_0x33fa9f,0xc9))['catch'](handleError(_0x33fa9f,null));};exports[_0x4d80('0x6a')]=function(_0x5f1be8,_0x268778,_0x5e16ec){return db[_0x4d80('0x4c')]['transaction'](function(_0x23e91b){var _0x12327e;return db[_0x4d80('0x41')][_0x4d80('0x6b')]({'where':{'id':_0x5f1be8[_0x4d80('0x46')]['id']}})[_0x4d80('0x22')](handleEntityNotFound(_0x268778,null))[_0x4d80('0x22')](function(_0x12d259){if(_0x12d259){_0x12327e=_0x12d259;return _0x12d259['removeSound'](_0x5f1be8[_0x4d80('0x46')][_0x4d80('0x6c')]);}})[_0x4d80('0x22')](function(_0x2a0c0e){if(_0x2a0c0e){return db[_0x4d80('0x60')][_0x4d80('0x6b')]({'where':{'id':_0x5f1be8[_0x4d80('0x46')][_0x4d80('0x6c')]},'attributes':['id','name','save_name',_0x4d80('0x62'),_0x4d80('0x63')],'raw':!![]});}})[_0x4d80('0x22')](function(_0x486a13){if(_0x486a13){fs['unlinkSync'](path[_0x4d80('0x5b')](_0x12327e[_0x4d80('0x4f')],util['format'](_0x4d80('0x66'),_0x486a13['name'],_0x486a13[_0x4d80('0x62')])));return _0x486a13;}})[_0x4d80('0x44')](function(_0x5a2451){throw new db[(_0x4d80('0x5d'))][(_0x4d80('0x69'))](_0x5a2451[_0x4d80('0x5e')]);});})[_0x4d80('0x22')](handleEntityNotFound(_0x268778,null))[_0x4d80('0x22')](respondWithStatusCode(_0x268778,0xcc))[_0x4d80('0x44')](handleError(_0x268778,null));};exports[_0x4d80('0x6d')]=function(_0x2cbf46,_0x1ca1ca,_0x597c9c){var _0x545bba={};var _0x202e22={};var _0x45a2da;var _0x343e8a;return db['VoiceMusicOnHold'][_0x4d80('0x6b')]({'where':{'id':_0x2cbf46['params']['id']}})[_0x4d80('0x22')](handleEntityNotFound(_0x1ca1ca,null))['then'](function(_0x23ae9b){if(_0x23ae9b){_0x45a2da=_0x23ae9b;_0x202e22['model']=_['keys'](db['Sound'][_0x4d80('0x2d')]);_0x202e22[_0x4d80('0x31')]=_[_0x4d80('0x47')](_0x2cbf46[_0x4d80('0x31')]);_0x202e22[_0x4d80('0x32')]=_[_0x4d80('0x34')](_0x202e22[_0x4d80('0x30')],_0x202e22['query']);_0x545bba[_0x4d80('0x33')]=_[_0x4d80('0x34')](_0x202e22[_0x4d80('0x30')],qs['fields'](_0x2cbf46[_0x4d80('0x31')][_0x4d80('0x35')]));_0x545bba[_0x4d80('0x33')]=_0x545bba['attributes'][_0x4d80('0x36')]?_0x545bba[_0x4d80('0x33')]:_0x202e22[_0x4d80('0x30')];_0x545bba[_0x4d80('0x3a')]=qs['sort'](_0x2cbf46[_0x4d80('0x31')][_0x4d80('0x3b')]);_0x545bba[_0x4d80('0x3c')]=qs[_0x4d80('0x32')](_[_0x4d80('0x3d')](_0x2cbf46[_0x4d80('0x31')],_0x202e22['filters']));if(_0x2cbf46[_0x4d80('0x31')][_0x4d80('0x40')]){_0x545bba['where']=_['merge'](_0x545bba[_0x4d80('0x3c')],{'$or':_['map'](_0x545bba[_0x4d80('0x33')],function(_0x382f3f){var _0xb67355={};_0xb67355[_0x382f3f]={'$like':'%'+_0x2cbf46[_0x4d80('0x31')][_0x4d80('0x40')]+'%'};return _0xb67355;})});}_0x545bba=_[_0x4d80('0x3e')]({},_0x545bba,_0x2cbf46[_0x4d80('0x48')]);return _0x45a2da[_0x4d80('0x6d')](_0x545bba);}})['then'](function(_0x28c65c){if(_0x28c65c){_0x343e8a=_0x28c65c[_0x4d80('0x36')];if(!_0x2cbf46['query'][_0x4d80('0x37')](_0x4d80('0x38'))){_0x545bba[_0x4d80('0x39')]=qs[_0x4d80('0x39')](_0x2cbf46[_0x4d80('0x31')][_0x4d80('0x39')]);_0x545bba[_0x4d80('0x19')]=qs[_0x4d80('0x19')](_0x2cbf46[_0x4d80('0x31')][_0x4d80('0x19')]);}return _0x45a2da[_0x4d80('0x6d')](_0x545bba);}})[_0x4d80('0x22')](function(_0x20d46c){if(_0x20d46c){return _0x20d46c?{'count':_0x343e8a,'rows':_0x20d46c}:null;}})[_0x4d80('0x22')](respondWithResult(_0x1ca1ca,null))[_0x4d80('0x44')](handleError(_0x1ca1ca,null));};
\ No newline at end of file
+var _0x2e9a=['body','create','transaction','mode','directory','root','files','mkdirSync','0777','Unable\x20to\x20retrieve\x20the\x20current\x20user','user','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','sequelize','unlinkSync','join','rmdirSync','ValidationError','message','addSound','Sound','converted_format','createdAt','server/files/sounds/converted','format','%s.%s','basename','save_name','server/files/moh','symlinkSync','removeSound','id2','findOne','Sequelize','getSounds','hasOwnProperty','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','squel','crypto','jsforce','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','Content-Range','apply','reject','destroy','then','get','MusicOnHolds','UserProfileResource','error','stack','name','send','index','map','VoiceMusicOnHold','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','fields','attributes','length','nolimit','order','sort','pick','filter','where','merge','options','includeAll','catch','params','include','find','update'];(function(_0x3ec122,_0x55150a){var _0x4ecf41=function(_0x1709cd){while(--_0x1709cd){_0x3ec122['push'](_0x3ec122['shift']());}};_0x4ecf41(++_0x55150a);}(_0x2e9a,0x176));var _0xa2e9=function(_0x3f5d83,_0x1d4bd4){_0x3f5d83=_0x3f5d83-0x0;var _0x39341b=_0x2e9a[_0x3f5d83];return _0x39341b;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xa2e9('0x0'));var zipdir=require(_0xa2e9('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa2e9('0x2'));var moment=require('moment');var BPromise=require(_0xa2e9('0x3'));var Mustache=require(_0xa2e9('0x4'));var util=require(_0xa2e9('0x5'));var path=require(_0xa2e9('0x6'));var sox=require(_0xa2e9('0x7'));var csv=require(_0xa2e9('0x8'));var ejs=require(_0xa2e9('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa2e9('0xa'));var crypto=require(_0xa2e9('0xb'));var jsforce=require(_0xa2e9('0xc'));var deskjs=require('desk.js');var toCsv=require(_0xa2e9('0x8'));var querystring=require(_0xa2e9('0xd'));var Papa=require(_0xa2e9('0xe'));var Redis=require(_0xa2e9('0xf'));var authService=require(_0xa2e9('0x10'));var qs=require(_0xa2e9('0x11'));var as=require(_0xa2e9('0x12'));var hardwareService=require(_0xa2e9('0x13'));var logger=require('../../config/logger')(_0xa2e9('0x14'));var utils=require(_0xa2e9('0x15'));var config=require(_0xa2e9('0x16'));var licenseUtil=require('../../config/license/util');var db=require(_0xa2e9('0x17'))['db'];function respondWithStatusCode(_0x2909c2,_0x5bfa3e){_0x5bfa3e=_0x5bfa3e||0xcc;return function(_0x267323){if(_0x267323){return _0x2909c2[_0xa2e9('0x18')](_0x5bfa3e);}return _0x2909c2[_0xa2e9('0x19')](_0x5bfa3e)[_0xa2e9('0x1a')]();};}function respondWithResult(_0x56df8c,_0x480711){_0x480711=_0x480711||0xc8;return function(_0x3fd59f){if(_0x3fd59f){return _0x56df8c[_0xa2e9('0x19')](_0x480711)[_0xa2e9('0x1b')](_0x3fd59f);}};}function respondWithFilteredResult(_0x1b26d6,_0x1194bf){return function(_0x22b2f7){if(_0x22b2f7){var _0x273dc4=typeof _0x1194bf[_0xa2e9('0x1c')]===_0xa2e9('0x1d')&&typeof _0x1194bf[_0xa2e9('0x1e')]===_0xa2e9('0x1d');var _0x470764=_0x22b2f7[_0xa2e9('0x1f')];var _0x5a63dc=_0x273dc4?0x0:_0x1194bf['offset'];var _0x2bd78b=_0x273dc4?_0x22b2f7[_0xa2e9('0x1f')]:_0x1194bf[_0xa2e9('0x1c')]+_0x1194bf[_0xa2e9('0x1e')];var _0x47c362;if(_0x2bd78b>=_0x470764){_0x2bd78b=_0x470764;_0x47c362=0xc8;}else{_0x47c362=0xce;}_0x1b26d6[_0xa2e9('0x19')](_0x47c362);return _0x1b26d6[_0xa2e9('0x20')](_0xa2e9('0x21'),_0x5a63dc+'-'+_0x2bd78b+'/'+_0x470764)[_0xa2e9('0x1b')](_0x22b2f7);}return null;};}function patchUpdates(_0x1db42a){return function(_0x2d9512){try{jsonpatch[_0xa2e9('0x22')](_0x2d9512,_0x1db42a,!![]);}catch(_0x1ce43e){return BPromise[_0xa2e9('0x23')](_0x1ce43e);}return _0x2d9512['save']();};}function saveUpdates(_0x49faba,_0x3f3ed7){return function(_0x1d793b){if(_0x1d793b){return _0x1d793b['update'](_0x49faba)['then'](function(_0x199a27){return _0x199a27;});}return null;};}function removeEntity(_0x52de25,_0x587be0){return function(_0x1f3d0f){if(_0x1f3d0f){return _0x1f3d0f[_0xa2e9('0x24')]()[_0xa2e9('0x25')](function(){var _0xa7dc7a=_0x1f3d0f[_0xa2e9('0x26')]({'plain':!![]});var _0x5d33e4=_0xa2e9('0x27');return db[_0xa2e9('0x28')]['destroy']({'where':{'type':_0x5d33e4,'resourceId':_0xa7dc7a['id']}})[_0xa2e9('0x25')](function(){return _0x1f3d0f;});})[_0xa2e9('0x25')](function(){_0x52de25['status'](0xcc)[_0xa2e9('0x1a')]();});}};}function handleEntityNotFound(_0x492476,_0x470a0a){return function(_0xee93c1){if(!_0xee93c1){_0x492476[_0xa2e9('0x18')](0x194);}return _0xee93c1;};}function handleError(_0x958690,_0x18aa06){_0x18aa06=_0x18aa06||0x1f4;return function(_0x16b0a5){logger[_0xa2e9('0x29')](_0x16b0a5[_0xa2e9('0x2a')]);if(_0x16b0a5[_0xa2e9('0x2b')]){delete _0x16b0a5[_0xa2e9('0x2b')];}_0x958690[_0xa2e9('0x19')](_0x18aa06)[_0xa2e9('0x2c')](_0x16b0a5);};}exports[_0xa2e9('0x2d')]=function(_0x44a948,_0x4e2060){var _0x5dd3c0={},_0x2c0ab5={},_0x221a2b={'count':0x0,'rows':[]};var _0x2109a3=_[_0xa2e9('0x2e')](db[_0xa2e9('0x2f')][_0xa2e9('0x30')],function(_0x1d2887){return{'name':_0x1d2887[_0xa2e9('0x31')],'type':_0x1d2887[_0xa2e9('0x32')][_0xa2e9('0x33')]};});_0x2c0ab5['model']=_[_0xa2e9('0x2e')](_0x2109a3,_0xa2e9('0x2b'));_0x2c0ab5[_0xa2e9('0x34')]=_[_0xa2e9('0x35')](_0x44a948['query']);_0x2c0ab5[_0xa2e9('0x36')]=_[_0xa2e9('0x37')](_0x2c0ab5[_0xa2e9('0x38')],_0x2c0ab5[_0xa2e9('0x34')]);_0x5dd3c0['attributes']=_[_0xa2e9('0x37')](_0x2c0ab5[_0xa2e9('0x38')],qs[_0xa2e9('0x39')](_0x44a948[_0xa2e9('0x34')][_0xa2e9('0x39')]));_0x5dd3c0[_0xa2e9('0x3a')]=_0x5dd3c0[_0xa2e9('0x3a')][_0xa2e9('0x3b')]?_0x5dd3c0[_0xa2e9('0x3a')]:_0x2c0ab5[_0xa2e9('0x38')];if(!_0x44a948['query']['hasOwnProperty'](_0xa2e9('0x3c'))){_0x5dd3c0[_0xa2e9('0x1e')]=qs['limit'](_0x44a948[_0xa2e9('0x34')][_0xa2e9('0x1e')]);_0x5dd3c0[_0xa2e9('0x1c')]=qs[_0xa2e9('0x1c')](_0x44a948[_0xa2e9('0x34')][_0xa2e9('0x1c')]);}_0x5dd3c0[_0xa2e9('0x3d')]=qs['sort'](_0x44a948['query']['sort']);delete _0x44a948[_0xa2e9('0x34')][_0xa2e9('0x3e')];_0x5dd3c0['where']=qs[_0xa2e9('0x36')](_[_0xa2e9('0x3f')](_0x44a948[_0xa2e9('0x34')],_0x2c0ab5[_0xa2e9('0x36')]),_0x2109a3);if(_0x44a948[_0xa2e9('0x34')][_0xa2e9('0x40')]){_0x5dd3c0[_0xa2e9('0x41')]=_[_0xa2e9('0x42')](_0x5dd3c0[_0xa2e9('0x41')],{'$or':_[_0xa2e9('0x2e')](_0x2109a3,function(_0x4031da){if(_0x4031da['type']!=='VIRTUAL'){var _0x3cdc9d={};_0x3cdc9d[_0x4031da['name']]={'$like':'%'+_0x44a948[_0xa2e9('0x34')][_0xa2e9('0x40')]+'%'};return _0x3cdc9d;}})});}_0x5dd3c0=_['merge']({},_0x5dd3c0,_0x44a948[_0xa2e9('0x43')]);var _0x466a70={'where':_0x5dd3c0[_0xa2e9('0x41')]};return db['VoiceMusicOnHold'][_0xa2e9('0x1f')](_0x466a70)[_0xa2e9('0x25')](function(_0x5a9efd){_0x221a2b['count']=_0x5a9efd;if(_0x44a948[_0xa2e9('0x34')][_0xa2e9('0x44')]){_0x5dd3c0['include']=[{'all':!![]}];}return db[_0xa2e9('0x2f')]['findAll'](_0x5dd3c0);})[_0xa2e9('0x25')](function(_0x58e1b0){_0x221a2b['rows']=_0x58e1b0;return _0x221a2b;})['then'](respondWithFilteredResult(_0x4e2060,_0x5dd3c0))[_0xa2e9('0x45')](handleError(_0x4e2060,null));};exports['show']=function(_0x368069,_0x142de0){var _0xac61e2={'raw':![],'where':{'id':_0x368069[_0xa2e9('0x46')]['id']}},_0x3e448e={};_0x3e448e['model']=_['keys'](db[_0xa2e9('0x2f')][_0xa2e9('0x30')]);_0x3e448e[_0xa2e9('0x34')]=_[_0xa2e9('0x35')](_0x368069[_0xa2e9('0x34')]);_0x3e448e[_0xa2e9('0x36')]=_[_0xa2e9('0x37')](_0x3e448e[_0xa2e9('0x38')],_0x3e448e[_0xa2e9('0x34')]);_0xac61e2[_0xa2e9('0x3a')]=_[_0xa2e9('0x37')](_0x3e448e[_0xa2e9('0x38')],qs['fields'](_0x368069[_0xa2e9('0x34')][_0xa2e9('0x39')]));_0xac61e2[_0xa2e9('0x3a')]=_0xac61e2[_0xa2e9('0x3a')][_0xa2e9('0x3b')]?_0xac61e2[_0xa2e9('0x3a')]:_0x3e448e[_0xa2e9('0x38')];if(_0x368069[_0xa2e9('0x34')]['includeAll']){_0xac61e2[_0xa2e9('0x47')]=[{'all':!![]}];}_0xac61e2=_[_0xa2e9('0x42')]({},_0xac61e2,_0x368069[_0xa2e9('0x43')]);return db[_0xa2e9('0x2f')][_0xa2e9('0x48')](_0xac61e2)[_0xa2e9('0x25')](handleEntityNotFound(_0x142de0,null))[_0xa2e9('0x25')](respondWithResult(_0x142de0,null))[_0xa2e9('0x45')](handleError(_0x142de0,null));};exports[_0xa2e9('0x49')]=function(_0x4ded12,_0x42bd6c){if(_0x4ded12[_0xa2e9('0x4a')]['id']){delete _0x4ded12[_0xa2e9('0x4a')]['id'];}return db[_0xa2e9('0x2f')]['find']({'where':{'id':_0x4ded12[_0xa2e9('0x46')]['id']}})[_0xa2e9('0x25')](handleEntityNotFound(_0x42bd6c,null))[_0xa2e9('0x25')](saveUpdates(_0x4ded12[_0xa2e9('0x4a')],null))[_0xa2e9('0x25')](respondWithResult(_0x42bd6c,null))[_0xa2e9('0x45')](handleError(_0x42bd6c,null));};exports[_0xa2e9('0x4b')]=function(_0x2a5f7c,_0x5ce573,_0x300d58){return db['sequelize'][_0xa2e9('0x4c')](function(_0x281013){if(_0x2a5f7c[_0xa2e9('0x4a')][_0xa2e9('0x4d')]==='files'){_0x2a5f7c[_0xa2e9('0x4a')][_0xa2e9('0x4e')]=path['join'](config[_0xa2e9('0x4f')],'server/files/moh',_0x2a5f7c[_0xa2e9('0x4a')][_0xa2e9('0x2b')]);}return db[_0xa2e9('0x2f')]['create'](_0x2a5f7c[_0xa2e9('0x4a')],{'transaction':_0x281013})['then'](function(_0x44665e){if(_0x2a5f7c['body'][_0xa2e9('0x4d')]===_0xa2e9('0x50')){fs[_0xa2e9('0x51')](_0x44665e[_0xa2e9('0x4e')],parseInt(_0xa2e9('0x52'),0x8));}var _0x1d57fa=_0x2a5f7c['user'][_0xa2e9('0x26')]({'plain':!![]});if(!_0x1d57fa)throw new Error(_0xa2e9('0x53'));if(_0x1d57fa['role']===_0xa2e9('0x54')){var _0x57fed6=_0x44665e[_0xa2e9('0x26')]({'plain':!![]});return db[_0xa2e9('0x55')][_0xa2e9('0x48')]({'where':{'name':_0xa2e9('0x27'),'userProfileId':_0x1d57fa[_0xa2e9('0x56')]},'raw':!![]})[_0xa2e9('0x25')](function(_0xb2ba74){if(_0xb2ba74&&_0xb2ba74[_0xa2e9('0x57')]===0x0){return db[_0xa2e9('0x28')]['create']({'name':_0x57fed6[_0xa2e9('0x2b')],'resourceId':_0x57fed6['id'],'type':_0xb2ba74[_0xa2e9('0x2b')],'sectionId':_0xb2ba74['id']},{})[_0xa2e9('0x25')](function(){return _0x44665e;});}else{return _0x44665e;}})[_0xa2e9('0x45')](function(_0x5974b6){logger[_0xa2e9('0x29')](_0xa2e9('0x58'),_0x5974b6);});}return _0x44665e;});})[_0xa2e9('0x25')](respondWithResult(_0x5ce573,0xc9))[_0xa2e9('0x45')](handleError(_0x5ce573,null));};exports[_0xa2e9('0x24')]=function(_0x27d131,_0x1d8b58,_0x2c2704){var _0x3f69b6;return db['VoiceMusicOnHold'][_0xa2e9('0x48')]({'where':{'id':_0x27d131['params']['id']}})[_0xa2e9('0x25')](function(_0x5ae080){if(_0x5ae080){return db[_0xa2e9('0x59')]['transaction'](function(_0x5d400e){return _0x5ae080[_0xa2e9('0x24')]({'transaction':_0x5d400e,'raw':!![]})['then'](function(_0x50078f){if(_0x50078f[_0xa2e9('0x4e')]){fs['readdirSync'](_0x50078f[_0xa2e9('0x4e')])['forEach'](function(_0x703b97){fs[_0xa2e9('0x5a')](path[_0xa2e9('0x5b')](_0x50078f[_0xa2e9('0x4e')],_0x703b97));});fs[_0xa2e9('0x5c')](_0x50078f[_0xa2e9('0x4e')]);}return _0x50078f;});})[_0xa2e9('0x45')](function(_0x4322c9){throw new db['Sequelize'][(_0xa2e9('0x5d'))](_0x4322c9[_0xa2e9('0x5e')]);});}})[_0xa2e9('0x25')](handleEntityNotFound(_0x1d8b58,null))['then'](removeEntity(_0x1d8b58,null))[_0xa2e9('0x45')](handleError(_0x1d8b58,null));};exports[_0xa2e9('0x5f')]=function(_0x56c5db,_0x33c21e,_0x3040d1){return db[_0xa2e9('0x59')]['transaction'](function(_0x26fd38){var _0x2c7dd8;return db[_0xa2e9('0x2f')]['find']({'where':{'id':_0x56c5db['params']['id']}})['then'](function(_0xd1cae7){if(_0xd1cae7){_0x2c7dd8=_0xd1cae7;return _0xd1cae7[_0xa2e9('0x5f')](_0x56c5db[_0xa2e9('0x4a')]['id'],{'transaction':_0x26fd38});}})[_0xa2e9('0x25')](function(_0x56e902){if(_0x56e902){return db[_0xa2e9('0x60')]['findOne']({'where':{'id':_0x56c5db[_0xa2e9('0x4a')]['id']},'attributes':['id',_0xa2e9('0x2b'),'save_name',_0xa2e9('0x61'),_0xa2e9('0x62')],'raw':!![]});}})[_0xa2e9('0x25')](function(_0x5789ee){if(_0x5789ee){var _0x58d00c=path[_0xa2e9('0x5b')](config[_0xa2e9('0x4f')],_0xa2e9('0x63'),util[_0xa2e9('0x64')](_0xa2e9('0x65'),path[_0xa2e9('0x66')](_0x5789ee[_0xa2e9('0x67')],path['extname'](_0x5789ee[_0xa2e9('0x67')])),_0x5789ee[_0xa2e9('0x61')]));var _0x402c70=path[_0xa2e9('0x5b')](config[_0xa2e9('0x4f')],_0xa2e9('0x68'),_0x2c7dd8[_0xa2e9('0x2b')],util['format']('%s.%s',_0x5789ee['name'],_0x5789ee['converted_format']));fs[_0xa2e9('0x69')](_0x58d00c,_0x402c70);return _0x5789ee;}})[_0xa2e9('0x45')](function(_0x29c3db){throw new db['Sequelize'][(_0xa2e9('0x5d'))](_0x29c3db[_0xa2e9('0x5e')]);});})[_0xa2e9('0x25')](handleEntityNotFound(_0x33c21e,null))[_0xa2e9('0x25')](respondWithResult(_0x33c21e,0xc9))['catch'](handleError(_0x33c21e,null));};exports[_0xa2e9('0x6a')]=function(_0x58f6c3,_0x53ed91,_0x26645e){return db[_0xa2e9('0x59')]['transaction'](function(_0x42b54f){var _0x4b9e12;return db['VoiceMusicOnHold']['findOne']({'where':{'id':_0x58f6c3[_0xa2e9('0x46')]['id']}})[_0xa2e9('0x25')](handleEntityNotFound(_0x53ed91,null))[_0xa2e9('0x25')](function(_0x22bb09){if(_0x22bb09){_0x4b9e12=_0x22bb09;return _0x22bb09[_0xa2e9('0x6a')](_0x58f6c3[_0xa2e9('0x46')][_0xa2e9('0x6b')]);}})[_0xa2e9('0x25')](function(_0xe63a6e){if(_0xe63a6e){return db[_0xa2e9('0x60')][_0xa2e9('0x6c')]({'where':{'id':_0x58f6c3[_0xa2e9('0x46')]['id2']},'attributes':['id','name',_0xa2e9('0x67'),_0xa2e9('0x61'),_0xa2e9('0x62')],'raw':!![]});}})[_0xa2e9('0x25')](function(_0x4c04cd){if(_0x4c04cd){fs[_0xa2e9('0x5a')](path[_0xa2e9('0x5b')](_0x4b9e12[_0xa2e9('0x4e')],util[_0xa2e9('0x64')](_0xa2e9('0x65'),_0x4c04cd[_0xa2e9('0x2b')],_0x4c04cd[_0xa2e9('0x61')])));return _0x4c04cd;}})['catch'](function(_0x49f88a){throw new db[(_0xa2e9('0x6d'))][(_0xa2e9('0x5d'))](_0x49f88a[_0xa2e9('0x5e')]);});})[_0xa2e9('0x25')](handleEntityNotFound(_0x53ed91,null))[_0xa2e9('0x25')](respondWithStatusCode(_0x53ed91,0xcc))['catch'](handleError(_0x53ed91,null));};exports[_0xa2e9('0x6e')]=function(_0x24e9a0,_0x5a14c9,_0x18f1e7){var _0x349221={};var _0x468b05={};var _0x502781;var _0x2e9592;return db['VoiceMusicOnHold']['findOne']({'where':{'id':_0x24e9a0[_0xa2e9('0x46')]['id']}})[_0xa2e9('0x25')](handleEntityNotFound(_0x5a14c9,null))[_0xa2e9('0x25')](function(_0xd8bd80){if(_0xd8bd80){_0x502781=_0xd8bd80;_0x468b05[_0xa2e9('0x38')]=_[_0xa2e9('0x35')](db[_0xa2e9('0x60')][_0xa2e9('0x30')]);_0x468b05['query']=_[_0xa2e9('0x35')](_0x24e9a0[_0xa2e9('0x34')]);_0x468b05[_0xa2e9('0x36')]=_[_0xa2e9('0x37')](_0x468b05[_0xa2e9('0x38')],_0x468b05[_0xa2e9('0x34')]);_0x349221[_0xa2e9('0x3a')]=_['intersection'](_0x468b05[_0xa2e9('0x38')],qs[_0xa2e9('0x39')](_0x24e9a0[_0xa2e9('0x34')][_0xa2e9('0x39')]));_0x349221['attributes']=_0x349221[_0xa2e9('0x3a')]['length']?_0x349221[_0xa2e9('0x3a')]:_0x468b05['model'];_0x349221[_0xa2e9('0x3d')]=qs[_0xa2e9('0x3e')](_0x24e9a0[_0xa2e9('0x34')][_0xa2e9('0x3e')]);_0x349221['where']=qs['filters'](_['pick'](_0x24e9a0[_0xa2e9('0x34')],_0x468b05[_0xa2e9('0x36')]));if(_0x24e9a0[_0xa2e9('0x34')][_0xa2e9('0x40')]){_0x349221[_0xa2e9('0x41')]=_[_0xa2e9('0x42')](_0x349221[_0xa2e9('0x41')],{'$or':_[_0xa2e9('0x2e')](_0x349221['attributes'],function(_0x195d3e){var _0x4c87e2={};_0x4c87e2[_0x195d3e]={'$like':'%'+_0x24e9a0[_0xa2e9('0x34')][_0xa2e9('0x40')]+'%'};return _0x4c87e2;})});}_0x349221=_[_0xa2e9('0x42')]({},_0x349221,_0x24e9a0['options']);return _0x502781[_0xa2e9('0x6e')](_0x349221);}})['then'](function(_0x35ca6a){if(_0x35ca6a){_0x2e9592=_0x35ca6a[_0xa2e9('0x3b')];if(!_0x24e9a0[_0xa2e9('0x34')][_0xa2e9('0x6f')](_0xa2e9('0x3c'))){_0x349221['limit']=qs[_0xa2e9('0x1e')](_0x24e9a0[_0xa2e9('0x34')][_0xa2e9('0x1e')]);_0x349221[_0xa2e9('0x1c')]=qs[_0xa2e9('0x1c')](_0x24e9a0[_0xa2e9('0x34')][_0xa2e9('0x1c')]);}return _0x502781[_0xa2e9('0x6e')](_0x349221);}})[_0xa2e9('0x25')](function(_0x2fe385){if(_0x2fe385){return _0x2fe385?{'count':_0x2e9592,'rows':_0x2fe385}:null;}})[_0xa2e9('0x25')](respondWithResult(_0x5a14c9,null))['catch'](handleError(_0x5a14c9,null));};
\ No newline at end of file
index e63a1c3..bc28632 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdfc4=['util','api','moment','bluebird','request-promise','path','rimraf','./voiceMusicOnHold.attributes','exports','define','voice_musiconhold','lodash'];(function(_0x16cf9e,_0x3d3cfd){var _0x56aefd=function(_0x24d46e){while(--_0x24d46e){_0x16cf9e['push'](_0x16cf9e['shift']());}};_0x56aefd(++_0x3d3cfd);}(_0xdfc4,0x6b));var _0x4dfc=function(_0x4aa350,_0x12a9eb){_0x4aa350=_0x4aa350-0x0;var _0x32a16f=_0xdfc4[_0x4aa350];return _0x32a16f;};'use strict';var _=require(_0x4dfc('0x0'));var util=require(_0x4dfc('0x1'));var logger=require('../../config/logger')(_0x4dfc('0x2'));var moment=require(_0x4dfc('0x3'));var BPromise=require(_0x4dfc('0x4'));var rp=require(_0x4dfc('0x5'));var fs=require('fs');var path=require(_0x4dfc('0x6'));var rimraf=require(_0x4dfc('0x7'));var config=require('../../config/environment');var attributes=require(_0x4dfc('0x8'));module[_0x4dfc('0x9')]=function(_0x3a1894,_0x262bff){return _0x3a1894[_0x4dfc('0xa')]('VoiceMusicOnHold',attributes,{'tableName':_0x4dfc('0xb'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x82e4=['VoiceMusicOnHold','voice_musiconhold','util','../../config/logger','api','path','rimraf','../../config/environment','./voiceMusicOnHold.attributes','exports','define'];(function(_0x5ace9d,_0x76d9b){var _0x557b04=function(_0xa0d6c6){while(--_0xa0d6c6){_0x5ace9d['push'](_0x5ace9d['shift']());}};_0x557b04(++_0x76d9b);}(_0x82e4,0x1c5));var _0x482e=function(_0x39609a,_0x28a563){_0x39609a=_0x39609a-0x0;var _0xecd92=_0x82e4[_0x39609a];return _0xecd92;};'use strict';var _=require('lodash');var util=require(_0x482e('0x0'));var logger=require(_0x482e('0x1'))(_0x482e('0x2'));var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x482e('0x3'));var rimraf=require(_0x482e('0x4'));var config=require(_0x482e('0x5'));var attributes=require(_0x482e('0x6'));module[_0x482e('0x7')]=function(_0x22f941,_0x58aeec){return _0x22f941[_0x482e('0x8')](_0x482e('0x9'),attributes,{'tableName':_0x482e('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index b2a77e2..3705a43 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x33c27a,_0x4da75c){var _0x26b8ab=function(_0x4baaa7){while(--_0x4baaa7){_0x33c27a['push'](_0x33c27a['shift']());}};_0x26b8ab(++_0x4da75c);}(_0x70e0,0x17b));var _0x070e=function(_0x4e2749,_0x1104f5){_0x4e2749=_0x4e2749-0x0;var _0x4ce237=_0x70e0[_0x4e2749];return _0x4ce237;};'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
+var _0x0713=['VoiceMusicOnHold,\x20%s,\x20%s','request\x20sent','debug','VoiceMusicOnHold,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','info'];(function(_0x4afd61,_0x460c8d){var _0x2ce865=function(_0x521281){while(--_0x521281){_0x4afd61['push'](_0x4afd61['shift']());}};_0x2ce865(++_0x460c8d);}(_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 BPromise=require(_0x3071('0x1'));var rs=require(_0x3071('0x2'));var fs=require('fs');var Redis=require(_0x3071('0x3'));var db=require(_0x3071('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x3071('0x5'))(_0x3071('0x6'));var config=require(_0x3071('0x7'));var jayson=require(_0x3071('0x8'));var client=jayson[_0x3071('0x9')][_0x3071('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1d3dd6,_0x2f1e87,_0xbd737f){return new BPromise(function(_0x22274c,_0x3e9a5e){return client[_0x3071('0xb')](_0x1d3dd6,_0xbd737f)[_0x3071('0xc')](function(_0x4a36ec){logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));logger[_0x3071('0x10')](_0x3071('0x11'),_0x2f1e87,'request\x20sent',JSON[_0x3071('0x12')](_0x4a36ec));if(_0x4a36ec[_0x3071('0x13')]){if(_0x4a36ec[_0x3071('0x13')][_0x3071('0x14')]===0x1f4){logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec['error'][_0x3071('0x15')]);return _0x3e9a5e(_0x4a36ec['error'][_0x3071('0x15')]);}logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x4a36ec[_0x3071('0x13')]['message']);return _0x22274c(_0x4a36ec[_0x3071('0x13')][_0x3071('0x15')]);}else{logger[_0x3071('0xd')](_0x3071('0xe'),_0x2f1e87,_0x3071('0xf'));_0x22274c(_0x4a36ec[_0x3071('0x16')][_0x3071('0x15')]);}})[_0x3071('0x17')](function(_0x21aad3){logger[_0x3071('0x13')]('VoiceMusicOnHold,\x20%s,\x20%s',_0x2f1e87,_0x21aad3);_0x3e9a5e(_0x21aad3);});});}
\ No newline at end of file
index 16bee88..e0acb4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa671=['../../config/environment','./voicePrefix.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/users','getAgents','/:id/teams','post','create','put','update','destroy','delete','removeTeams','exports','util','path','connect-timeout','express','../../components/auth/service'];(function(_0x72f2a0,_0x3a8a0d){var _0x3e39a8=function(_0x43f1b3){while(--_0x43f1b3){_0x72f2a0['push'](_0x72f2a0['shift']());}};_0x3e39a8(++_0x3a8a0d);}(_0xa671,0x1a4));var _0x1a67=function(_0x3a00cb,_0x407ba5){_0x3a00cb=_0x3a00cb-0x0;var _0x2cf4c2=_0xa671[_0x3a00cb];return _0x2cf4c2;};'use strict';var multer=require('multer');var util=require(_0x1a67('0x0'));var path=require(_0x1a67('0x1'));var timeout=require(_0x1a67('0x2'));var express=require(_0x1a67('0x3'));var router=express['Router']();var fs_extra=require('fs-extra');var auth=require(_0x1a67('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x1a67('0x5'));var controller=require(_0x1a67('0x6'));router[_0x1a67('0x7')]('/',auth[_0x1a67('0x8')](),controller[_0x1a67('0x9')]);router['get'](_0x1a67('0xa'),auth[_0x1a67('0x8')](),controller[_0x1a67('0xb')]);router[_0x1a67('0x7')](_0x1a67('0xc'),auth[_0x1a67('0x8')](),controller[_0x1a67('0xd')]);router[_0x1a67('0x7')](_0x1a67('0xe'),auth[_0x1a67('0x8')](),controller[_0x1a67('0xf')]);router[_0x1a67('0x7')](_0x1a67('0x10'),auth[_0x1a67('0x8')](),controller['getTeams']);router[_0x1a67('0x11')]('/',auth[_0x1a67('0x8')](),controller[_0x1a67('0x12')]);router['post']('/:id/users',auth[_0x1a67('0x8')](),controller['addAgents']);router[_0x1a67('0x11')]('/:id/teams',auth[_0x1a67('0x8')](),controller['addTeams']);router[_0x1a67('0x13')]('/:id',auth[_0x1a67('0x8')](),controller[_0x1a67('0x14')]);router['delete']('/:id',auth['isAuthenticated'](),controller[_0x1a67('0x15')]);router[_0x1a67('0x16')](_0x1a67('0xe'),auth[_0x1a67('0x8')](),controller['removeAgents']);router[_0x1a67('0x16')]('/:id/teams',auth['isAuthenticated'](),controller[_0x1a67('0x17')]);module[_0x1a67('0x18')]=router;
\ No newline at end of file
+var _0x4d61=['put','update','delete','/:id','destroy','removeAgents','removeTeams','exports','multer','util','path','connect-timeout','express','Router','fs-extra','../../components/auth/service','../../components/interaction/service','./voicePrefix.controller','get','isAuthenticated','index','/describe','/:id/users','getAgents','/:id/teams','getTeams','post','create','addTeams'];(function(_0x30e4a8,_0x8b4c09){var _0x3c28d1=function(_0x44fbcf){while(--_0x44fbcf){_0x30e4a8['push'](_0x30e4a8['shift']());}};_0x3c28d1(++_0x8b4c09);}(_0x4d61,0x147));var _0x14d6=function(_0x5287a5,_0x3ff0ad){_0x5287a5=_0x5287a5-0x0;var _0x158a73=_0x4d61[_0x5287a5];return _0x158a73;};'use strict';var multer=require(_0x14d6('0x0'));var util=require(_0x14d6('0x1'));var path=require(_0x14d6('0x2'));var timeout=require(_0x14d6('0x3'));var express=require(_0x14d6('0x4'));var router=express[_0x14d6('0x5')]();var fs_extra=require(_0x14d6('0x6'));var auth=require(_0x14d6('0x7'));var interaction=require(_0x14d6('0x8'));var config=require('../../config/environment');var controller=require(_0x14d6('0x9'));router[_0x14d6('0xa')]('/',auth[_0x14d6('0xb')](),controller[_0x14d6('0xc')]);router[_0x14d6('0xa')](_0x14d6('0xd'),auth[_0x14d6('0xb')](),controller['describe']);router[_0x14d6('0xa')]('/:id',auth[_0x14d6('0xb')](),controller['show']);router[_0x14d6('0xa')](_0x14d6('0xe'),auth['isAuthenticated'](),controller[_0x14d6('0xf')]);router[_0x14d6('0xa')](_0x14d6('0x10'),auth[_0x14d6('0xb')](),controller[_0x14d6('0x11')]);router[_0x14d6('0x12')]('/',auth[_0x14d6('0xb')](),controller[_0x14d6('0x13')]);router[_0x14d6('0x12')](_0x14d6('0xe'),auth[_0x14d6('0xb')](),controller['addAgents']);router[_0x14d6('0x12')](_0x14d6('0x10'),auth[_0x14d6('0xb')](),controller[_0x14d6('0x14')]);router[_0x14d6('0x15')]('/:id',auth[_0x14d6('0xb')](),controller[_0x14d6('0x16')]);router[_0x14d6('0x17')](_0x14d6('0x18'),auth['isAuthenticated'](),controller[_0x14d6('0x19')]);router[_0x14d6('0x17')](_0x14d6('0xe'),auth['isAuthenticated'](),controller[_0x14d6('0x1a')]);router[_0x14d6('0x17')](_0x14d6('0x10'),auth[_0x14d6('0xb')](),controller[_0x14d6('0x1b')]);module[_0x14d6('0x1c')]=router;
\ No newline at end of file
index 0d81d99..51b914d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3799=['STRING','VIRTUAL','system-','getDataValue','name','INTEGER','sequelize'];(function(_0x82158f,_0x4e103e){var _0x5f475f=function(_0x473255){while(--_0x473255){_0x82158f['push'](_0x82158f['shift']());}};_0x5f475f(++_0x4e103e);}(_0x3799,0x125));var _0x9379=function(_0x41d21b,_0x3cac66){_0x41d21b=_0x41d21b-0x0;var _0x2fc597=_0x3799[_0x41d21b];return _0x2fc597;};'use strict';var Sequelize=require(_0x9379('0x0'));module['exports']={'name':{'type':Sequelize[_0x9379('0x1')],'allowNull':![],'unique':'name'},'prefix':{'type':Sequelize[_0x9379('0x2')],'get':function(_0x117eff){return _0x9379('0x3')+this[_0x9379('0x4')](_0x9379('0x5'))+'-';}},'description':{'type':Sequelize[_0x9379('0x1')]},'callerIdAll':{'type':Sequelize[_0x9379('0x1')]},'VoiceExtensionId':{'type':Sequelize[_0x9379('0x6')]}};
\ No newline at end of file
+var _0x1fb6=['name','system-','getDataValue','STRING','INTEGER','exports'];(function(_0x53a3e5,_0x23ca3a){var _0x591cea=function(_0x222ff1){while(--_0x222ff1){_0x53a3e5['push'](_0x53a3e5['shift']());}};_0x591cea(++_0x23ca3a);}(_0x1fb6,0x149));var _0x61fb=function(_0x35223f,_0x300377){_0x35223f=_0x35223f-0x0;var _0x8a4a3e=_0x1fb6[_0x35223f];return _0x8a4a3e;};'use strict';var Sequelize=require('sequelize');module[_0x61fb('0x0')]={'name':{'type':Sequelize['STRING'],'allowNull':![],'unique':_0x61fb('0x1')},'prefix':{'type':Sequelize['VIRTUAL'],'get':function(_0x22d8d0){return _0x61fb('0x2')+this[_0x61fb('0x3')](_0x61fb('0x1'))+'-';}},'description':{'type':Sequelize[_0x61fb('0x4')]},'callerIdAll':{'type':Sequelize['STRING']},'VoiceExtensionId':{'type':Sequelize[_0x61fb('0x5')]}};
\ No newline at end of file
index cbf7d9a..181f767 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fdc=['fs-extra','lodash','desk.js','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','defaults','redis','localhost','socket.io-emitter','./voicePrefix.socket','register','sendStatus','status','end','offset','undefined','limit','count','json','apply','reject','update','then','get','UserProfileResource','destroy','error','stack','name','index','map','VoicePrefix','rawAttributes','fieldName','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','type','VIRTUAL','includeAll','catch','show','include','options','find','params','describe','create','sequelize','transaction','body','VoiceExtensionId','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','userProfileId','autoAssociation','context','from-sip','exten','app','system','description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','NoOp','Voice\x20Prefix','VoiceExtension','VoicePrefixId','Extensions\x20creation\x20failed','push','callerIdAll','Set','PREFIX-CALLERIDALL=','goto','${EXTEN:','charAt','system-','addAgents','ids','omit','spread','emit','removeAgents','isArray','getAgents','findOne','User','filter','getTeams','Team','findAll','addTeams','each','TeamVoicePrefix','upsert','UserVoicePrefix','findOrCreate','forEach','userVoicePrefix:save','removeTeams','Agents','select','field','tq.TeamId','team_has_voice_prefixes','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','includes','all','union','compact','value','isEmpty','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs'];(function(_0x45783c,_0x49c56d){var _0x1161da=function(_0x3c5d41){while(--_0x3c5d41){_0x45783c['push'](_0x45783c['shift']());}};_0x1161da(++_0x49c56d);}(_0x5fdc,0x127));var _0xc5fd=function(_0x1247fb,_0x4691cf){_0x1247fb=_0x1247fb-0x0;var _0x58045f=_0x5fdc[_0x1247fb];return _0x58045f;};'use strict';var emlformat=require(_0xc5fd('0x0'));var rimraf=require(_0xc5fd('0x1'));var zipdir=require(_0xc5fd('0x2'));var jsonpatch=require(_0xc5fd('0x3'));var rp=require(_0xc5fd('0x4'));var moment=require(_0xc5fd('0x5'));var BPromise=require(_0xc5fd('0x6'));var Mustache=require(_0xc5fd('0x7'));var util=require(_0xc5fd('0x8'));var path=require(_0xc5fd('0x9'));var sox=require(_0xc5fd('0xa'));var csv=require(_0xc5fd('0xb'));var ejs=require(_0xc5fd('0xc'));var fs=require('fs');var fs_extra=require(_0xc5fd('0xd'));var _=require(_0xc5fd('0xe'));var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0xc5fd('0xf'));var toCsv=require(_0xc5fd('0xb'));var querystring=require(_0xc5fd('0x10'));var Papa=require(_0xc5fd('0x11'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xc5fd('0x12'));var as=require(_0xc5fd('0x13'));var hardwareService=require(_0xc5fd('0x14'));var logger=require(_0xc5fd('0x15'))(_0xc5fd('0x16'));var utils=require(_0xc5fd('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xc5fd('0x18'));var db=require('../../mysqldb')['db'];config['redis']=_[_0xc5fd('0x19')](config[_0xc5fd('0x1a')],{'host':_0xc5fd('0x1b'),'port':0x18eb});var socket=require(_0xc5fd('0x1c'))(new Redis(config[_0xc5fd('0x1a')]));require(_0xc5fd('0x1d'))[_0xc5fd('0x1e')](socket);function respondWithStatusCode(_0xa7a954,_0x51233a){_0x51233a=_0x51233a||0xcc;return function(_0x124651){if(_0x124651){return _0xa7a954[_0xc5fd('0x1f')](_0x51233a);}return _0xa7a954[_0xc5fd('0x20')](_0x51233a)[_0xc5fd('0x21')]();};}function respondWithResult(_0x4d3636,_0x4fd364){_0x4fd364=_0x4fd364||0xc8;return function(_0x4efafd){if(_0x4efafd){return _0x4d3636['status'](_0x4fd364)['json'](_0x4efafd);}};}function respondWithFilteredResult(_0x35a9d0,_0x430e52){return function(_0x27f611){if(_0x27f611){var _0xd0a9f1=typeof _0x430e52[_0xc5fd('0x22')]===_0xc5fd('0x23')&&typeof _0x430e52[_0xc5fd('0x24')]==='undefined';var _0xb7bab1=_0x27f611[_0xc5fd('0x25')];var _0x32eac2=_0xd0a9f1?0x0:_0x430e52[_0xc5fd('0x22')];var _0x3b3093=_0xd0a9f1?_0x27f611['count']:_0x430e52[_0xc5fd('0x22')]+_0x430e52[_0xc5fd('0x24')];var _0x18048e;if(_0x3b3093>=_0xb7bab1){_0x3b3093=_0xb7bab1;_0x18048e=0xc8;}else{_0x18048e=0xce;}_0x35a9d0[_0xc5fd('0x20')](_0x18048e);return _0x35a9d0['set']('Content-Range',_0x32eac2+'-'+_0x3b3093+'/'+_0xb7bab1)[_0xc5fd('0x26')](_0x27f611);}return null;};}function patchUpdates(_0x2ab935){return function(_0x3d7211){try{jsonpatch[_0xc5fd('0x27')](_0x3d7211,_0x2ab935,!![]);}catch(_0x334401){return BPromise[_0xc5fd('0x28')](_0x334401);}return _0x3d7211['save']();};}function saveUpdates(_0x1a3f21,_0x2701f7){return function(_0x1a5174){if(_0x1a5174){return _0x1a5174[_0xc5fd('0x29')](_0x1a3f21)[_0xc5fd('0x2a')](function(_0x4020af){return _0x4020af;});}return null;};}function removeEntity(_0x475b91,_0x527018){return function(_0x3a86f9){if(_0x3a86f9){return _0x3a86f9['destroy']()[_0xc5fd('0x2a')](function(){var _0x231368=_0x3a86f9[_0xc5fd('0x2b')]({'plain':!![]});var _0x2bee22='VoicePrefixes';return db[_0xc5fd('0x2c')][_0xc5fd('0x2d')]({'where':{'type':_0x2bee22,'resourceId':_0x231368['id']}})[_0xc5fd('0x2a')](function(){return _0x3a86f9;});})[_0xc5fd('0x2a')](function(){_0x475b91[_0xc5fd('0x20')](0xcc)[_0xc5fd('0x21')]();});}};}function handleEntityNotFound(_0x541c12,_0x412ef7){return function(_0x5d4f70){if(!_0x5d4f70){_0x541c12['sendStatus'](0x194);}return _0x5d4f70;};}function handleError(_0x12a962,_0x165ee2){_0x165ee2=_0x165ee2||0x1f4;return function(_0x39b21a){logger[_0xc5fd('0x2e')](_0x39b21a[_0xc5fd('0x2f')]);if(_0x39b21a[_0xc5fd('0x30')]){delete _0x39b21a[_0xc5fd('0x30')];}_0x12a962[_0xc5fd('0x20')](_0x165ee2)['send'](_0x39b21a);};}exports[_0xc5fd('0x31')]=function(_0x1b2957,_0x6bb14d){var _0x3b9699={},_0x14c832={},_0x40ed4d={'count':0x0,'rows':[]};var _0x3c0f64=_[_0xc5fd('0x32')](db[_0xc5fd('0x33')][_0xc5fd('0x34')],function(_0x104f37){return{'name':_0x104f37[_0xc5fd('0x35')],'type':_0x104f37['type'][_0xc5fd('0x36')]};});_0x14c832[_0xc5fd('0x37')]=_[_0xc5fd('0x32')](_0x3c0f64,_0xc5fd('0x30'));_0x14c832[_0xc5fd('0x38')]=_[_0xc5fd('0x39')](_0x1b2957[_0xc5fd('0x38')]);_0x14c832[_0xc5fd('0x3a')]=_[_0xc5fd('0x3b')](_0x14c832['model'],_0x14c832[_0xc5fd('0x38')]);_0x3b9699[_0xc5fd('0x3c')]=_[_0xc5fd('0x3b')](_0x14c832[_0xc5fd('0x37')],qs[_0xc5fd('0x3d')](_0x1b2957[_0xc5fd('0x38')][_0xc5fd('0x3d')]));_0x3b9699['attributes']=_0x3b9699[_0xc5fd('0x3c')][_0xc5fd('0x3e')]?_0x3b9699['attributes']:_0x14c832[_0xc5fd('0x37')];if(!_0x1b2957['query'][_0xc5fd('0x3f')](_0xc5fd('0x40'))){_0x3b9699[_0xc5fd('0x24')]=qs['limit'](_0x1b2957[_0xc5fd('0x38')][_0xc5fd('0x24')]);_0x3b9699['offset']=qs[_0xc5fd('0x22')](_0x1b2957[_0xc5fd('0x38')][_0xc5fd('0x22')]);}_0x3b9699[_0xc5fd('0x41')]=qs[_0xc5fd('0x42')](_0x1b2957[_0xc5fd('0x38')]['sort']);_0x3b9699[_0xc5fd('0x43')]=qs[_0xc5fd('0x3a')](_[_0xc5fd('0x44')](_0x1b2957[_0xc5fd('0x38')],_0x14c832['filters']),_0x3c0f64);if(_0x1b2957['query']['filter']){_0x3b9699[_0xc5fd('0x43')]=_[_0xc5fd('0x45')](_0x3b9699[_0xc5fd('0x43')],{'$or':_[_0xc5fd('0x32')](_0x3c0f64,function(_0x125c02){if(_0x125c02[_0xc5fd('0x46')]!==_0xc5fd('0x47')){var _0x2ef96f={};_0x2ef96f[_0x125c02[_0xc5fd('0x30')]]={'$like':'%'+_0x1b2957['query']['filter']+'%'};return _0x2ef96f;}})});}_0x3b9699=_[_0xc5fd('0x45')]({},_0x3b9699,_0x1b2957['options']);var _0x970623={'where':_0x3b9699[_0xc5fd('0x43')]};return db[_0xc5fd('0x33')]['count'](_0x970623)[_0xc5fd('0x2a')](function(_0x350753){_0x40ed4d['count']=_0x350753;if(_0x1b2957[_0xc5fd('0x38')][_0xc5fd('0x48')]){_0x3b9699['include']=[{'all':!![]}];}return db[_0xc5fd('0x33')]['findAll'](_0x3b9699);})[_0xc5fd('0x2a')](function(_0x17ce12){_0x40ed4d['rows']=_0x17ce12;return _0x40ed4d;})[_0xc5fd('0x2a')](respondWithFilteredResult(_0x6bb14d,_0x3b9699))[_0xc5fd('0x49')](handleError(_0x6bb14d,null));};exports[_0xc5fd('0x4a')]=function(_0x4825fa,_0x408edb){var _0x74a071={'raw':![],'where':{'id':_0x4825fa['params']['id']}},_0x559282={};_0x559282[_0xc5fd('0x37')]=_['keys'](db['VoicePrefix']['rawAttributes']);_0x559282[_0xc5fd('0x38')]=_[_0xc5fd('0x39')](_0x4825fa[_0xc5fd('0x38')]);_0x559282[_0xc5fd('0x3a')]=_[_0xc5fd('0x3b')](_0x559282[_0xc5fd('0x37')],_0x559282['query']);_0x74a071['attributes']=_['intersection'](_0x559282[_0xc5fd('0x37')],qs[_0xc5fd('0x3d')](_0x4825fa[_0xc5fd('0x38')]['fields']));_0x74a071[_0xc5fd('0x3c')]=_0x74a071['attributes'][_0xc5fd('0x3e')]?_0x74a071[_0xc5fd('0x3c')]:_0x559282[_0xc5fd('0x37')];if(_0x4825fa[_0xc5fd('0x38')][_0xc5fd('0x48')]){_0x74a071[_0xc5fd('0x4b')]=[{'all':!![]}];}_0x74a071=_['merge']({},_0x74a071,_0x4825fa[_0xc5fd('0x4c')]);return db[_0xc5fd('0x33')]['find'](_0x74a071)['then'](handleEntityNotFound(_0x408edb,null))[_0xc5fd('0x2a')](respondWithResult(_0x408edb,null))['catch'](handleError(_0x408edb,null));};exports['destroy']=function(_0x6e5626,_0x2436e9){return db['VoicePrefix'][_0xc5fd('0x4d')]({'where':{'id':_0x6e5626[_0xc5fd('0x4e')]['id']}})['then'](handleEntityNotFound(_0x2436e9,null))[_0xc5fd('0x2a')](removeEntity(_0x2436e9,null))[_0xc5fd('0x49')](handleError(_0x2436e9,null));};exports[_0xc5fd('0x4f')]=function(_0x12b847,_0x1940e3){return db[_0xc5fd('0x33')][_0xc5fd('0x4f')]()[_0xc5fd('0x2a')](respondWithResult(_0x1940e3,null))[_0xc5fd('0x49')](handleError(_0x1940e3,null));};exports[_0xc5fd('0x50')]=function(_0x3e1471,_0x4c10a7){var _0x3c9b99;return db[_0xc5fd('0x51')][_0xc5fd('0x52')](function(_0x4989ce){return db[_0xc5fd('0x33')][_0xc5fd('0x50')](_0x3e1471[_0xc5fd('0x53')],{'transaction':_0x4989ce})[_0xc5fd('0x2a')](function(_0x5c7d68){_0x3c9b99=_0x5c7d68[_0xc5fd('0x2b')]({'plain':!![]});return db['VoiceExtension']['find']({'where':{'id':_0x3c9b99[_0xc5fd('0x54')]},'raw':!![]})[_0xc5fd('0x2a')](function(_0x236d04){return createVoicePrefixExtensions(_0x3c9b99,_0x236d04,_0x4989ce);});});})[_0xc5fd('0x2a')](function(){var _0x275e18=_0x3e1471['user']['get']({'plain':!![]});if(!_0x275e18)throw new Error(_0xc5fd('0x55'));if(_0x275e18[_0xc5fd('0x56')]==='user'){var _0x4e9495=_0x3c9b99;return db['UserProfileSection'][_0xc5fd('0x4d')]({'where':{'name':'VoicePrefixes','userProfileId':_0x275e18[_0xc5fd('0x57')]},'raw':!![]})[_0xc5fd('0x2a')](function(_0x2503cd){if(_0x2503cd&&_0x2503cd[_0xc5fd('0x58')]===0x0){return db[_0xc5fd('0x2c')][_0xc5fd('0x50')]({'name':_0x4e9495[_0xc5fd('0x30')],'resourceId':_0x4e9495['id'],'type':_0x2503cd['name'],'sectionId':_0x2503cd['id']},{})[_0xc5fd('0x2a')](function(){return _0x3c9b99;});}else{return _0x3c9b99;}})[_0xc5fd('0x49')](function(_0x228e40){logger['error']('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x228e40);throw _0x228e40;});}return _0x3c9b99;})[_0xc5fd('0x2a')](respondWithResult(_0x4c10a7,null))[_0xc5fd('0x49')](handleError(_0x4c10a7,null));};function Extension(_0x2f30d6,_0x149483,_0x69367,_0x45f9fd){this[_0xc5fd('0x59')]=_0xc5fd('0x5a');this[_0xc5fd('0x5b')]=_0x2f30d6;this[_0xc5fd('0x5c')]=_0x69367;this[_0xc5fd('0x46')]=_0xc5fd('0x5d');this[_0xc5fd('0x5e')]=_0xc5fd('0x5f');this[_0xc5fd('0x60')]=_0x149483;this[_0xc5fd('0x61')]=_0x45f9fd;}function createVoicePrefixExtensions(_0x548b65,_0x404759,_0xc05f80){return new BPromise(function(_0x3eeae0,_0x53a3ee){var _0x32a240=new Extension(formatPrefixName(_0x548b65[_0xc5fd('0x62')]),0x1,_0xc5fd('0x63'),_0xc5fd('0x64'));_0x32a240['VoicePrefixId']=_0x548b65['id'];return db[_0xc5fd('0x65')][_0xc5fd('0x50')](_0x32a240,{'transaction':_0xc05f80})['then'](function(_0x27a1f5){var _0x53ea3d=_0x27a1f5[_0xc5fd('0x2b')]({'plain':!![]});var _0x70a6d=_[_0xc5fd('0x32')](addVoicePrefixExtensions(_0x548b65,_0x404759),function(_0xcaa6b0){_0xcaa6b0[_0xc5fd('0x54')]=_0x53ea3d['id'];_0xcaa6b0[_0xc5fd('0x66')]=_0x548b65['id'];return _0xcaa6b0;});return db['VoiceExtension']['bulkCreate'](_0x70a6d,{'transaction':_0xc05f80})[_0xc5fd('0x2a')](function(_0x1ff40b){if(!_0x1ff40b){return _0x53a3ee(_0xc5fd('0x67'));}else{return _0x3eeae0(_0x1ff40b);}})[_0xc5fd('0x49')](function(_0x27b533){return _0x53a3ee(_0x27b533);});});;});};function addVoicePrefixExtensions(_0x2f4b60,_0x189d7d){var _0x77a940=[];var _0x4d6f97=formatPrefixName(_0x2f4b60[_0xc5fd('0x62')]);_0x77a940[_0xc5fd('0x68')](new Extension(_0x4d6f97,0x2,'Set','CDR(prefix)='+_0x2f4b60[_0xc5fd('0x30')]));if(_0x2f4b60[_0xc5fd('0x69')]){_0x77a940[_0xc5fd('0x68')](new Extension(_0x4d6f97,0x3,_0xc5fd('0x6a'),_0xc5fd('0x6b')+_0x2f4b60[_0xc5fd('0x69')]));}else{_0x77a940[_0xc5fd('0x68')](new Extension(_0x4d6f97,0x3,_0xc5fd('0x63'),'No\x20callerid\x20available'));}_0x77a940[_0xc5fd('0x68')](new Extension(_0x4d6f97,0x4,_0xc5fd('0x6c'),_0x189d7d['context']+','+_0xc5fd('0x6d')+(0x8+_0x2f4b60[_0xc5fd('0x30')]['length'])+'}'+','+0x1));return _0x77a940;}function formatPrefixName(_0x4591be){var _0x2a8c7f='_';for(var _0x5e3f8=0x0;_0x5e3f8<_0x4591be[_0xc5fd('0x3e')];_0x5e3f8++){if(_0x4591be[_0xc5fd('0x6e')](_0x5e3f8)=='-'){_0x2a8c7f+=_0x4591be[_0xc5fd('0x6e')](_0x5e3f8);}else{_0x2a8c7f+='['+_0x4591be[_0xc5fd('0x6e')](_0x5e3f8)+']';}}_0x2a8c7f+='.';return _0x2a8c7f;}exports[_0xc5fd('0x29')]=function(_0x3d1940,_0x130b7b,_0x539c0a){var _0x5131ba=_0x3d1940[_0xc5fd('0x53')];_0x5131ba[_0xc5fd('0x62')]=_0xc5fd('0x6f')+_0x5131ba['name']+'-';return db[_0xc5fd('0x51')][_0xc5fd('0x52')](function(_0x2696be){return db['VoicePrefix'][_0xc5fd('0x29')](_0x5131ba,{'where':{'id':_0x5131ba['id']},'transaction':_0x2696be})[_0xc5fd('0x2a')](function(){return db[_0xc5fd('0x65')]['destroy']({'where':{'VoicePrefixId':_0x5131ba['id']},'transaction':_0x2696be})['then'](function(){return db[_0xc5fd('0x65')][_0xc5fd('0x4d')]({'where':{'id':_0x5131ba['VoiceExtensionId']},'raw':!![]})[_0xc5fd('0x2a')](function(_0x55d691){return createVoicePrefixExtensions(_0x5131ba,_0x55d691,_0x2696be);});});});})[_0xc5fd('0x2a')](function(){return db[_0xc5fd('0x33')]['findById'](_0x5131ba['id']);})['then'](respondWithResult(_0x130b7b,null))[_0xc5fd('0x49')](handleError(_0x130b7b,null));};exports[_0xc5fd('0x70')]=function(_0x39624c,_0x152212,_0x281cf9){return db[_0xc5fd('0x33')]['find']({'where':{'id':_0x39624c[_0xc5fd('0x4e')]['id']}})[_0xc5fd('0x2a')](handleEntityNotFound(_0x152212,null))[_0xc5fd('0x2a')](function(_0x24ecc2){if(_0x24ecc2){return _0x24ecc2[_0xc5fd('0x70')](_0x39624c[_0xc5fd('0x53')][_0xc5fd('0x71')],_[_0xc5fd('0x72')](_0x39624c[_0xc5fd('0x53')],['ids','id'])||{})[_0xc5fd('0x73')](function(_0x58ca76){for(var _0x151d13=0x0;_0x151d13<_0x39624c[_0xc5fd('0x53')][_0xc5fd('0x71')]['length'];_0x151d13+=0x1){socket[_0xc5fd('0x74')]('userVoicePrefix:save',{'UserId':Number(_0x39624c['body'][_0xc5fd('0x71')][_0x151d13]),'VoicePrefixId':Number(_0x39624c[_0xc5fd('0x4e')]['id'])});}return _0x58ca76;});}})[_0xc5fd('0x2a')](respondWithResult(_0x152212,null))[_0xc5fd('0x49')](handleError(_0x152212,null));};exports[_0xc5fd('0x75')]=function(_0x58df99,_0x4b43fc,_0x1ab84b){return db[_0xc5fd('0x33')][_0xc5fd('0x4d')]({'where':{'id':_0x58df99[_0xc5fd('0x4e')]['id']}})[_0xc5fd('0x2a')](handleEntityNotFound(_0x4b43fc,null))['then'](function(_0x3a89a9){if(_0x3a89a9){return _0x3a89a9[_0xc5fd('0x75')](_0x58df99[_0xc5fd('0x38')][_0xc5fd('0x71')])[_0xc5fd('0x2a')](function(){if(_[_0xc5fd('0x76')](_0x58df99[_0xc5fd('0x38')]['ids'])){for(var _0x9e84d2=0x0;_0x9e84d2<_0x58df99[_0xc5fd('0x38')][_0xc5fd('0x71')][_0xc5fd('0x3e')];_0x9e84d2+=0x1){socket['emit']('userVoicePrefix:remove',{'UserId':Number(_0x58df99['query'][_0xc5fd('0x71')][_0x9e84d2]),'VoicePrefixId':Number(_0x58df99[_0xc5fd('0x4e')]['id'])});}}else{socket[_0xc5fd('0x74')]('userVoicePrefix:remove',{'UserId':Number(_0x58df99[_0xc5fd('0x38')][_0xc5fd('0x71')]),'VoicePrefixId':Number(_0x58df99[_0xc5fd('0x4e')]['id'])});}});}})[_0xc5fd('0x2a')](respondWithStatusCode(_0x4b43fc,null))[_0xc5fd('0x49')](handleError(_0x4b43fc,null));};exports[_0xc5fd('0x77')]=function(_0x31fb3d,_0x5199f3,_0x32a6f3){var _0xe69dd8={};var _0x312b34={};var _0x38c97e;var _0x320249;return db[_0xc5fd('0x33')][_0xc5fd('0x78')]({'where':{'id':_0x31fb3d[_0xc5fd('0x4e')]['id']}})[_0xc5fd('0x2a')](handleEntityNotFound(_0x5199f3,null))[_0xc5fd('0x2a')](function(_0x4e67e7){if(_0x4e67e7){_0x38c97e=_0x4e67e7;_0x312b34[_0xc5fd('0x37')]=_[_0xc5fd('0x39')](db[_0xc5fd('0x79')][_0xc5fd('0x34')]);_0x312b34[_0xc5fd('0x38')]=_[_0xc5fd('0x39')](_0x31fb3d[_0xc5fd('0x38')]);_0x312b34['filters']=_[_0xc5fd('0x3b')](_0x312b34['model'],_0x312b34[_0xc5fd('0x38')]);_0xe69dd8[_0xc5fd('0x3c')]=_[_0xc5fd('0x3b')](_0x312b34[_0xc5fd('0x37')],qs[_0xc5fd('0x3d')](_0x31fb3d[_0xc5fd('0x38')]['fields']));_0xe69dd8[_0xc5fd('0x3c')]=_0xe69dd8['attributes'][_0xc5fd('0x3e')]?_0xe69dd8[_0xc5fd('0x3c')]:_0x312b34['model'];_0xe69dd8[_0xc5fd('0x41')]=qs[_0xc5fd('0x42')](_0x31fb3d[_0xc5fd('0x38')][_0xc5fd('0x42')]);_0xe69dd8[_0xc5fd('0x43')]=qs[_0xc5fd('0x3a')](_[_0xc5fd('0x44')](_0x31fb3d[_0xc5fd('0x38')],_0x312b34[_0xc5fd('0x3a')]));if(_0x31fb3d[_0xc5fd('0x38')][_0xc5fd('0x7a')]){_0xe69dd8[_0xc5fd('0x43')]=_['merge'](_0xe69dd8[_0xc5fd('0x43')],{'$or':_['map'](_0xe69dd8[_0xc5fd('0x3c')],function(_0xcab6e8){var _0x5951b4={};_0x5951b4[_0xcab6e8]={'$like':'%'+_0x31fb3d['query'][_0xc5fd('0x7a')]+'%'};return _0x5951b4;})});}_0xe69dd8=_['merge']({},_0xe69dd8,_0x31fb3d['options']);return _0x38c97e[_0xc5fd('0x77')](_0xe69dd8);}})[_0xc5fd('0x2a')](function(_0x58b8ce){if(_0x58b8ce){_0x320249=_0x58b8ce[_0xc5fd('0x3e')];if(!_0x31fb3d[_0xc5fd('0x38')]['hasOwnProperty'](_0xc5fd('0x40'))){_0xe69dd8[_0xc5fd('0x24')]=qs[_0xc5fd('0x24')](_0x31fb3d[_0xc5fd('0x38')][_0xc5fd('0x24')]);_0xe69dd8[_0xc5fd('0x22')]=qs[_0xc5fd('0x22')](_0x31fb3d[_0xc5fd('0x38')][_0xc5fd('0x22')]);}return _0x38c97e['getAgents'](_0xe69dd8);}})[_0xc5fd('0x2a')](function(_0x41d546){if(_0x41d546){return _0x41d546?{'count':_0x320249,'rows':_0x41d546}:null;}})[_0xc5fd('0x2a')](respondWithResult(_0x5199f3,null))[_0xc5fd('0x49')](handleError(_0x5199f3,null));};exports[_0xc5fd('0x7b')]=function(_0x3260de,_0x52f4a2,_0x3b04bb){var _0x54625d={};var _0x8cc5f6={};var _0x1f8bec;var _0x5cccd3;return db[_0xc5fd('0x33')][_0xc5fd('0x78')]({'where':{'id':_0x3260de['params']['id']}})['then'](handleEntityNotFound(_0x52f4a2,null))[_0xc5fd('0x2a')](function(_0x588469){if(_0x588469){_0x1f8bec=_0x588469;_0x8cc5f6[_0xc5fd('0x37')]=_[_0xc5fd('0x39')](db[_0xc5fd('0x7c')][_0xc5fd('0x34')]);_0x8cc5f6[_0xc5fd('0x38')]=_['keys'](_0x3260de[_0xc5fd('0x38')]);_0x8cc5f6[_0xc5fd('0x3a')]=_[_0xc5fd('0x3b')](_0x8cc5f6['model'],_0x8cc5f6[_0xc5fd('0x38')]);_0x54625d[_0xc5fd('0x3c')]=_['intersection'](_0x8cc5f6[_0xc5fd('0x37')],qs[_0xc5fd('0x3d')](_0x3260de['query'][_0xc5fd('0x3d')]));_0x54625d[_0xc5fd('0x3c')]=_0x54625d[_0xc5fd('0x3c')][_0xc5fd('0x3e')]?_0x54625d[_0xc5fd('0x3c')]:_0x8cc5f6[_0xc5fd('0x37')];_0x54625d['order']=qs[_0xc5fd('0x42')](_0x3260de[_0xc5fd('0x38')][_0xc5fd('0x42')]);_0x54625d[_0xc5fd('0x43')]=qs[_0xc5fd('0x3a')](_[_0xc5fd('0x44')](_0x3260de['query'],_0x8cc5f6[_0xc5fd('0x3a')]));if(_0x3260de[_0xc5fd('0x38')]['filter']){_0x54625d[_0xc5fd('0x43')]=_[_0xc5fd('0x45')](_0x54625d[_0xc5fd('0x43')],{'$or':_[_0xc5fd('0x32')](_0x54625d[_0xc5fd('0x3c')],function(_0x431e42){var _0x147657={};_0x147657[_0x431e42]={'$like':'%'+_0x3260de[_0xc5fd('0x38')][_0xc5fd('0x7a')]+'%'};return _0x147657;})});}_0x54625d=_[_0xc5fd('0x45')]({},_0x54625d,_0x3260de['options']);return _0x1f8bec[_0xc5fd('0x7b')](_0x54625d);}})[_0xc5fd('0x2a')](function(_0x815f86){if(_0x815f86){_0x5cccd3=_0x815f86[_0xc5fd('0x3e')];if(!_0x3260de[_0xc5fd('0x38')]['hasOwnProperty'](_0xc5fd('0x40'))){_0x54625d[_0xc5fd('0x24')]=qs[_0xc5fd('0x24')](_0x3260de[_0xc5fd('0x38')][_0xc5fd('0x24')]);_0x54625d[_0xc5fd('0x22')]=qs[_0xc5fd('0x22')](_0x3260de[_0xc5fd('0x38')][_0xc5fd('0x22')]);}return _0x1f8bec['getTeams'](_0x54625d);}})[_0xc5fd('0x2a')](function(_0x1e9c2c){if(_0x1e9c2c){return _0x1e9c2c?{'count':_0x5cccd3,'rows':_0x1e9c2c}:null;}})[_0xc5fd('0x2a')](respondWithResult(_0x52f4a2,null))[_0xc5fd('0x49')](handleError(_0x52f4a2,null));};exports['addTeams']=function(_0x1e5d78,_0x4bcd48,_0x5afaf5){var _0x5e0206=_0x1e5d78['body'][_0xc5fd('0x71')];var _0x5a3c8c;return db[_0xc5fd('0x7c')][_0xc5fd('0x7d')]({'where':{'id':_0x5e0206},'attributes':['id'],'include':[{'model':db[_0xc5fd('0x79')],'as':'Agents','attributes':['id',_0xc5fd('0x30'),'online','voicePause','interface'],'raw':!![]}]})[_0xc5fd('0x2a')](function(_0x1cb1a6){if(_0x1cb1a6){_0x5a3c8c=_0x1cb1a6;var _0x358648=_['flatMap'](_0x1cb1a6,function(_0x56a5d0){var _0x2bf91e=_0x56a5d0[_0xc5fd('0x2b')]({'plain':!![]});return _0x2bf91e['Agents'];});return db[_0xc5fd('0x33')][_0xc5fd('0x4d')]({'where':{'id':_0x1e5d78['params']['id']}})[_0xc5fd('0x2a')](function(_0x3c94ec){return db[_0xc5fd('0x51')][_0xc5fd('0x52')](function(_0x3bd95a){return _0x3c94ec[_0xc5fd('0x7e')](_0x5e0206,{'transaction':_0x3bd95a})[_0xc5fd('0x2a')](function(){return BPromise[_0xc5fd('0x7f')](_0x5a3c8c,function(_0x1e23e7){return db[_0xc5fd('0x80')][_0xc5fd('0x81')]({'TeamId':_0x1e23e7['id'],'VoicePrefixId':_0x1e5d78[_0xc5fd('0x4e')]['id']},{'transaction':_0x3bd95a});});})['then'](function(){return BPromise[_0xc5fd('0x7f')](_0x358648,function(_0x4c3fbb){return db[_0xc5fd('0x82')][_0xc5fd('0x83')]({'where':{'UserId':_0x4c3fbb['id'],'VoicePrefixId':_0x1e5d78[_0xc5fd('0x4e')]['id']},'transaction':_0x3bd95a});});})['then'](function(){_0x358648[_0xc5fd('0x84')](function(_0x5a438e){socket[_0xc5fd('0x74')](_0xc5fd('0x85'),{'UserId':_0x5a438e['id'],'VoicePrefixId':_0x3c94ec['id']});});});});});}})[_0xc5fd('0x2a')](respondWithStatusCode(_0x4bcd48,null))[_0xc5fd('0x49')](handleError(_0x4bcd48,null));};exports[_0xc5fd('0x86')]=function(_0x4065d9,_0xf709eb,_0x241693){return db[_0xc5fd('0x7c')][_0xc5fd('0x7d')]({'where':{'id':_0x4065d9[_0xc5fd('0x38')][_0xc5fd('0x71')]},'attributes':['id'],'include':[{'model':db[_0xc5fd('0x79')],'as':_0xc5fd('0x87'),'attributes':['id'],'raw':!![]}]})[_0xc5fd('0x2a')](handleEntityNotFound(_0xf709eb,null))[_0xc5fd('0x2a')](function(_0x2fb5f4){var _0x281c9e=_[_0xc5fd('0x32')](_0x2fb5f4,'id');var _0x5ca2a9=[];var _0x6594ae=[];var _0x1af269=squel[_0xc5fd('0x88')]();_0x1af269[_0xc5fd('0x89')](_0xc5fd('0x8a'))['from'](_0xc5fd('0x8b'),'tq')['join'](_0xc5fd('0x8c'),'ut',_0xc5fd('0x8d'))['where']('VoicePrefixId\x20=\x20?',_0x4065d9[_0xc5fd('0x4e')]['id']);for(var _0x4debb8=0x0;_0x4debb8<_0x2fb5f4[_0xc5fd('0x3e')];_0x4debb8+=0x1){let _0x474579=_0x2fb5f4[_0x4debb8];for(var _0x2ab188=0x0;_0x2ab188<_0x474579['Agents']['length'];_0x2ab188+=0x1){let _0x516a64=_0x474579[_0xc5fd('0x87')][_0x2ab188];var _0x41a3b6=_0x1af269[_0xc5fd('0x8e')]();_0x41a3b6[_0xc5fd('0x43')](_0xc5fd('0x8f'),_0x516a64['id']);_0x6594ae[_0xc5fd('0x68')](db[_0xc5fd('0x51')][_0xc5fd('0x38')](_0x41a3b6[_0xc5fd('0x90')](),{'type':db[_0xc5fd('0x51')][_0xc5fd('0x91')][_0xc5fd('0x92')]})[_0xc5fd('0x2a')](function(_0x492f78){if(_0x492f78[_0xc5fd('0x3e')]===0x1){return _0x516a64['id'];}else{var _0x12e1a8=_[_0xc5fd('0x93')](_[_0xc5fd('0x32')](_0x492f78,'TeamId'),function(_0x4751af){return _[_0xc5fd('0x94')](_0x281c9e,_0x4751af);});if(_0x12e1a8){return _0x516a64['id'];}}}));}}return BPromise[_0xc5fd('0x95')](_0x6594ae)[_0xc5fd('0x2a')](function(_0x2917b5){_0x5ca2a9=_(_0x5ca2a9)[_0xc5fd('0x96')](_0x2917b5)[_0xc5fd('0x97')]()[_0xc5fd('0x98')]();return db[_0xc5fd('0x33')][_0xc5fd('0x4d')]({'where':{'id':_0x4065d9['params']['id']}})[_0xc5fd('0x2a')](function(_0x21526e){return db[_0xc5fd('0x51')][_0xc5fd('0x52')](function(_0x2456d8){return _0x21526e['removeTeams'](_0x4065d9[_0xc5fd('0x38')][_0xc5fd('0x71')],{'transaction':_0x2456d8})['then'](function(){if(!_[_0xc5fd('0x99')](_0x5ca2a9)){return _0x21526e['removeAgents'](_0x5ca2a9,{'transaction':_0x2456d8});}})[_0xc5fd('0x2a')](function(){_0x5ca2a9['forEach'](function(_0x233398){socket[_0xc5fd('0x74')]('userVoicePrefix:remove',{'UserId':_0x233398,'VoicePrefixId':_0x21526e['id']});});});});});});})['then'](respondWithStatusCode(_0xf709eb,null))['catch'](handleError(_0xf709eb,null));};
\ No newline at end of file
+var _0x056b=['forEach','removeTeams','select','field','tq.TeamId','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoicePrefixId\x20=\x20?','clone','ut.UserId\x20=\x20?','toString','QueryTypes','SELECT','every','TeamId','includes','all','union','value','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','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','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','localhost','./voicePrefix.socket','register','sendStatus','end','json','offset','limit','undefined','count','set','apply','reject','update','destroy','then','get','VoicePrefixes','UserProfileResource','status','error','stack','name','send','index','map','VoicePrefix','rawAttributes','fieldName','key','keys','query','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','where','pick','filter','merge','type','options','includeAll','include','findAll','rows','catch','params','find','describe','create','sequelize','transaction','body','VoiceExtension','VoiceExtensionId','user','role','UserProfileSection','userProfileId','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','context','from-sip','app','system','description','Voice\x20Prefix\x20Extension','priority','appdata','prefix','Voice\x20Prefix','VoicePrefixId','bulkCreate','Extensions\x20creation\x20failed','Set','CDR(prefix)=','callerIdAll','push','NoOp','goto','${EXTEN:','charAt','system-','findById','addAgents','ids','spread','emit','userVoicePrefix:save','removeAgents','isArray','userVoicePrefix:remove','getAgents','findOne','order','Team','getTeams','addTeams','User','Agents','online','voicePause','flatMap','each','TeamVoicePrefix','upsert','UserVoicePrefix','findOrCreate'];(function(_0xef8146,_0x459c34){var _0x5a6cb0=function(_0x2f84ec){while(--_0x2f84ec){_0xef8146['push'](_0xef8146['shift']());}};_0x5a6cb0(++_0x459c34);}(_0x056b,0xb6));var _0xb056=function(_0x85d355,_0x546c82){_0x85d355=_0x85d355-0x0;var _0x31057a=_0x056b[_0x85d355];return _0x31057a;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xb056('0x0'));var zipdir=require(_0xb056('0x1'));var jsonpatch=require(_0xb056('0x2'));var rp=require(_0xb056('0x3'));var moment=require(_0xb056('0x4'));var BPromise=require(_0xb056('0x5'));var Mustache=require(_0xb056('0x6'));var util=require(_0xb056('0x7'));var path=require(_0xb056('0x8'));var sox=require(_0xb056('0x9'));var csv=require(_0xb056('0xa'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xb056('0xb'));var _=require(_0xb056('0xc'));var squel=require(_0xb056('0xd'));var crypto=require(_0xb056('0xe'));var jsforce=require(_0xb056('0xf'));var deskjs=require(_0xb056('0x10'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xb056('0x11'));var Redis=require(_0xb056('0x12'));var authService=require(_0xb056('0x13'));var qs=require(_0xb056('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb056('0x15'));var logger=require('../../config/logger')(_0xb056('0x16'));var utils=require(_0xb056('0x17'));var config=require(_0xb056('0x18'));var licenseUtil=require(_0xb056('0x19'));var db=require(_0xb056('0x1a'))['db'];config['redis']=_['defaults'](config[_0xb056('0x1b')],{'host':_0xb056('0x1c'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xb056('0x1b')]));require(_0xb056('0x1d'))[_0xb056('0x1e')](socket);function respondWithStatusCode(_0x1197e5,_0x10dd19){_0x10dd19=_0x10dd19||0xcc;return function(_0x3776a1){if(_0x3776a1){return _0x1197e5[_0xb056('0x1f')](_0x10dd19);}return _0x1197e5['status'](_0x10dd19)[_0xb056('0x20')]();};}function respondWithResult(_0x43565e,_0x9e2eed){_0x9e2eed=_0x9e2eed||0xc8;return function(_0x65d7ca){if(_0x65d7ca){return _0x43565e['status'](_0x9e2eed)[_0xb056('0x21')](_0x65d7ca);}};}function respondWithFilteredResult(_0x4e501a,_0x2daffc){return function(_0x311eb9){if(_0x311eb9){var _0x48e140=typeof _0x2daffc[_0xb056('0x22')]==='undefined'&&typeof _0x2daffc[_0xb056('0x23')]===_0xb056('0x24');var _0x5e4bd9=_0x311eb9[_0xb056('0x25')];var _0x48cdaf=_0x48e140?0x0:_0x2daffc[_0xb056('0x22')];var _0x225081=_0x48e140?_0x311eb9[_0xb056('0x25')]:_0x2daffc[_0xb056('0x22')]+_0x2daffc['limit'];var _0x1db585;if(_0x225081>=_0x5e4bd9){_0x225081=_0x5e4bd9;_0x1db585=0xc8;}else{_0x1db585=0xce;}_0x4e501a['status'](_0x1db585);return _0x4e501a[_0xb056('0x26')]('Content-Range',_0x48cdaf+'-'+_0x225081+'/'+_0x5e4bd9)[_0xb056('0x21')](_0x311eb9);}return null;};}function patchUpdates(_0x40ac2d){return function(_0x1de11b){try{jsonpatch[_0xb056('0x27')](_0x1de11b,_0x40ac2d,!![]);}catch(_0x36e539){return BPromise[_0xb056('0x28')](_0x36e539);}return _0x1de11b['save']();};}function saveUpdates(_0x1016da,_0x18a3f2){return function(_0x341544){if(_0x341544){return _0x341544[_0xb056('0x29')](_0x1016da)['then'](function(_0x44a14f){return _0x44a14f;});}return null;};}function removeEntity(_0x10b9b3,_0x5c39db){return function(_0x6d0483){if(_0x6d0483){return _0x6d0483[_0xb056('0x2a')]()[_0xb056('0x2b')](function(){var _0x1d2c66=_0x6d0483[_0xb056('0x2c')]({'plain':!![]});var _0x4024d7=_0xb056('0x2d');return db[_0xb056('0x2e')]['destroy']({'where':{'type':_0x4024d7,'resourceId':_0x1d2c66['id']}})[_0xb056('0x2b')](function(){return _0x6d0483;});})['then'](function(){_0x10b9b3[_0xb056('0x2f')](0xcc)[_0xb056('0x20')]();});}};}function handleEntityNotFound(_0x294874,_0x488185){return function(_0xd53267){if(!_0xd53267){_0x294874[_0xb056('0x1f')](0x194);}return _0xd53267;};}function handleError(_0x4ba5f8,_0x3a9e7d){_0x3a9e7d=_0x3a9e7d||0x1f4;return function(_0x43aa63){logger[_0xb056('0x30')](_0x43aa63[_0xb056('0x31')]);if(_0x43aa63[_0xb056('0x32')]){delete _0x43aa63['name'];}_0x4ba5f8[_0xb056('0x2f')](_0x3a9e7d)[_0xb056('0x33')](_0x43aa63);};}exports[_0xb056('0x34')]=function(_0x248473,_0x103482){var _0x559c34={},_0x16bbd2={},_0x290807={'count':0x0,'rows':[]};var _0x16c1d6=_[_0xb056('0x35')](db[_0xb056('0x36')][_0xb056('0x37')],function(_0x19f277){return{'name':_0x19f277[_0xb056('0x38')],'type':_0x19f277['type'][_0xb056('0x39')]};});_0x16bbd2['model']=_[_0xb056('0x35')](_0x16c1d6,'name');_0x16bbd2['query']=_[_0xb056('0x3a')](_0x248473[_0xb056('0x3b')]);_0x16bbd2[_0xb056('0x3c')]=_[_0xb056('0x3d')](_0x16bbd2[_0xb056('0x3e')],_0x16bbd2[_0xb056('0x3b')]);_0x559c34[_0xb056('0x3f')]=_['intersection'](_0x16bbd2[_0xb056('0x3e')],qs[_0xb056('0x40')](_0x248473['query']['fields']));_0x559c34[_0xb056('0x3f')]=_0x559c34[_0xb056('0x3f')][_0xb056('0x41')]?_0x559c34['attributes']:_0x16bbd2[_0xb056('0x3e')];if(!_0x248473[_0xb056('0x3b')][_0xb056('0x42')](_0xb056('0x43'))){_0x559c34[_0xb056('0x23')]=qs[_0xb056('0x23')](_0x248473[_0xb056('0x3b')][_0xb056('0x23')]);_0x559c34[_0xb056('0x22')]=qs[_0xb056('0x22')](_0x248473[_0xb056('0x3b')][_0xb056('0x22')]);}_0x559c34['order']=qs[_0xb056('0x44')](_0x248473['query'][_0xb056('0x44')]);_0x559c34[_0xb056('0x45')]=qs[_0xb056('0x3c')](_[_0xb056('0x46')](_0x248473[_0xb056('0x3b')],_0x16bbd2[_0xb056('0x3c')]),_0x16c1d6);if(_0x248473[_0xb056('0x3b')][_0xb056('0x47')]){_0x559c34['where']=_[_0xb056('0x48')](_0x559c34[_0xb056('0x45')],{'$or':_[_0xb056('0x35')](_0x16c1d6,function(_0x4c2b1e){if(_0x4c2b1e[_0xb056('0x49')]!=='VIRTUAL'){var _0x39b861={};_0x39b861[_0x4c2b1e[_0xb056('0x32')]]={'$like':'%'+_0x248473[_0xb056('0x3b')][_0xb056('0x47')]+'%'};return _0x39b861;}})});}_0x559c34=_[_0xb056('0x48')]({},_0x559c34,_0x248473[_0xb056('0x4a')]);var _0x57da48={'where':_0x559c34[_0xb056('0x45')]};return db['VoicePrefix'][_0xb056('0x25')](_0x57da48)[_0xb056('0x2b')](function(_0x21d98e){_0x290807[_0xb056('0x25')]=_0x21d98e;if(_0x248473[_0xb056('0x3b')][_0xb056('0x4b')]){_0x559c34[_0xb056('0x4c')]=[{'all':!![]}];}return db[_0xb056('0x36')][_0xb056('0x4d')](_0x559c34);})[_0xb056('0x2b')](function(_0x4fa3c5){_0x290807[_0xb056('0x4e')]=_0x4fa3c5;return _0x290807;})[_0xb056('0x2b')](respondWithFilteredResult(_0x103482,_0x559c34))[_0xb056('0x4f')](handleError(_0x103482,null));};exports['show']=function(_0x2bf4dd,_0x505cad){var _0x49597d={'raw':![],'where':{'id':_0x2bf4dd[_0xb056('0x50')]['id']}},_0x5821e1={};_0x5821e1[_0xb056('0x3e')]=_[_0xb056('0x3a')](db[_0xb056('0x36')]['rawAttributes']);_0x5821e1['query']=_['keys'](_0x2bf4dd['query']);_0x5821e1['filters']=_['intersection'](_0x5821e1[_0xb056('0x3e')],_0x5821e1['query']);_0x49597d[_0xb056('0x3f')]=_[_0xb056('0x3d')](_0x5821e1[_0xb056('0x3e')],qs[_0xb056('0x40')](_0x2bf4dd[_0xb056('0x3b')][_0xb056('0x40')]));_0x49597d[_0xb056('0x3f')]=_0x49597d[_0xb056('0x3f')]['length']?_0x49597d[_0xb056('0x3f')]:_0x5821e1[_0xb056('0x3e')];if(_0x2bf4dd['query'][_0xb056('0x4b')]){_0x49597d[_0xb056('0x4c')]=[{'all':!![]}];}_0x49597d=_[_0xb056('0x48')]({},_0x49597d,_0x2bf4dd[_0xb056('0x4a')]);return db[_0xb056('0x36')][_0xb056('0x51')](_0x49597d)['then'](handleEntityNotFound(_0x505cad,null))[_0xb056('0x2b')](respondWithResult(_0x505cad,null))['catch'](handleError(_0x505cad,null));};exports[_0xb056('0x2a')]=function(_0x3e4a14,_0xde5564){return db[_0xb056('0x36')][_0xb056('0x51')]({'where':{'id':_0x3e4a14[_0xb056('0x50')]['id']}})[_0xb056('0x2b')](handleEntityNotFound(_0xde5564,null))[_0xb056('0x2b')](removeEntity(_0xde5564,null))['catch'](handleError(_0xde5564,null));};exports[_0xb056('0x52')]=function(_0x472a91,_0x5927c7){return db[_0xb056('0x36')][_0xb056('0x52')]()[_0xb056('0x2b')](respondWithResult(_0x5927c7,null))[_0xb056('0x4f')](handleError(_0x5927c7,null));};exports[_0xb056('0x53')]=function(_0x4a9968,_0x122ed7){var _0xc0be0d;return db[_0xb056('0x54')][_0xb056('0x55')](function(_0x1a5170){return db[_0xb056('0x36')]['create'](_0x4a9968[_0xb056('0x56')],{'transaction':_0x1a5170})[_0xb056('0x2b')](function(_0x30ba6e){_0xc0be0d=_0x30ba6e['get']({'plain':!![]});return db[_0xb056('0x57')]['find']({'where':{'id':_0xc0be0d[_0xb056('0x58')]},'raw':!![]})[_0xb056('0x2b')](function(_0x2a064f){return createVoicePrefixExtensions(_0xc0be0d,_0x2a064f,_0x1a5170);});});})[_0xb056('0x2b')](function(){var _0x58c533=_0x4a9968[_0xb056('0x59')][_0xb056('0x2c')]({'plain':!![]});if(!_0x58c533)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x58c533[_0xb056('0x5a')]===_0xb056('0x59')){var _0x1d3cdd=_0xc0be0d;return db[_0xb056('0x5b')][_0xb056('0x51')]({'where':{'name':'VoicePrefixes','userProfileId':_0x58c533[_0xb056('0x5c')]},'raw':!![]})[_0xb056('0x2b')](function(_0x10681b){if(_0x10681b&&_0x10681b[_0xb056('0x5d')]===0x0){return db[_0xb056('0x2e')][_0xb056('0x53')]({'name':_0x1d3cdd[_0xb056('0x32')],'resourceId':_0x1d3cdd['id'],'type':_0x10681b[_0xb056('0x32')],'sectionId':_0x10681b['id']},{})[_0xb056('0x2b')](function(){return _0xc0be0d;});}else{return _0xc0be0d;}})[_0xb056('0x4f')](function(_0x1b4a0d){logger[_0xb056('0x30')](_0xb056('0x5e'),_0x1b4a0d);throw _0x1b4a0d;});}return _0xc0be0d;})[_0xb056('0x2b')](respondWithResult(_0x122ed7,null))[_0xb056('0x4f')](handleError(_0x122ed7,null));};function Extension(_0x282c31,_0x28fc90,_0x435fe9,_0x39765e){this[_0xb056('0x5f')]=_0xb056('0x60');this['exten']=_0x282c31;this[_0xb056('0x61')]=_0x435fe9;this[_0xb056('0x49')]=_0xb056('0x62');this[_0xb056('0x63')]=_0xb056('0x64');this[_0xb056('0x65')]=_0x28fc90;this[_0xb056('0x66')]=_0x39765e;}function createVoicePrefixExtensions(_0x55808b,_0x5b03df,_0x30441e){return new BPromise(function(_0x388817,_0x1205cc){var _0x7b81c7=new Extension(formatPrefixName(_0x55808b[_0xb056('0x67')]),0x1,'NoOp',_0xb056('0x68'));_0x7b81c7[_0xb056('0x69')]=_0x55808b['id'];return db[_0xb056('0x57')][_0xb056('0x53')](_0x7b81c7,{'transaction':_0x30441e})['then'](function(_0x405108){var _0x24b037=_0x405108[_0xb056('0x2c')]({'plain':!![]});var _0x5e419e=_[_0xb056('0x35')](addVoicePrefixExtensions(_0x55808b,_0x5b03df),function(_0x2e02d5){_0x2e02d5[_0xb056('0x58')]=_0x24b037['id'];_0x2e02d5['VoicePrefixId']=_0x55808b['id'];return _0x2e02d5;});return db[_0xb056('0x57')][_0xb056('0x6a')](_0x5e419e,{'transaction':_0x30441e})[_0xb056('0x2b')](function(_0x5bf8ce){if(!_0x5bf8ce){return _0x1205cc(_0xb056('0x6b'));}else{return _0x388817(_0x5bf8ce);}})['catch'](function(_0x2d555d){return _0x1205cc(_0x2d555d);});});;});};function addVoicePrefixExtensions(_0x3e18c1,_0x103ff2){var _0x556a93=[];var _0x45d347=formatPrefixName(_0x3e18c1[_0xb056('0x67')]);_0x556a93['push'](new Extension(_0x45d347,0x2,_0xb056('0x6c'),_0xb056('0x6d')+_0x3e18c1[_0xb056('0x32')]));if(_0x3e18c1[_0xb056('0x6e')]){_0x556a93[_0xb056('0x6f')](new Extension(_0x45d347,0x3,'Set','PREFIX-CALLERIDALL='+_0x3e18c1[_0xb056('0x6e')]));}else{_0x556a93['push'](new Extension(_0x45d347,0x3,_0xb056('0x70'),'No\x20callerid\x20available'));}_0x556a93[_0xb056('0x6f')](new Extension(_0x45d347,0x4,_0xb056('0x71'),_0x103ff2[_0xb056('0x5f')]+','+_0xb056('0x72')+(0x8+_0x3e18c1['name']['length'])+'}'+','+0x1));return _0x556a93;}function formatPrefixName(_0xe6caf7){var _0x1e14e1='_';for(var _0x3b3bbf=0x0;_0x3b3bbf<_0xe6caf7[_0xb056('0x41')];_0x3b3bbf++){if(_0xe6caf7['charAt'](_0x3b3bbf)=='-'){_0x1e14e1+=_0xe6caf7[_0xb056('0x73')](_0x3b3bbf);}else{_0x1e14e1+='['+_0xe6caf7['charAt'](_0x3b3bbf)+']';}}_0x1e14e1+='.';return _0x1e14e1;}exports[_0xb056('0x29')]=function(_0x5f0278,_0x2129c5,_0x56bab7){var _0x432501=_0x5f0278[_0xb056('0x56')];_0x432501[_0xb056('0x67')]=_0xb056('0x74')+_0x432501['name']+'-';return db[_0xb056('0x54')]['transaction'](function(_0x227ab0){return db[_0xb056('0x36')][_0xb056('0x29')](_0x432501,{'where':{'id':_0x432501['id']},'transaction':_0x227ab0})[_0xb056('0x2b')](function(){return db[_0xb056('0x57')][_0xb056('0x2a')]({'where':{'VoicePrefixId':_0x432501['id']},'transaction':_0x227ab0})[_0xb056('0x2b')](function(){return db[_0xb056('0x57')][_0xb056('0x51')]({'where':{'id':_0x432501[_0xb056('0x58')]},'raw':!![]})[_0xb056('0x2b')](function(_0x3f6e2f){return createVoicePrefixExtensions(_0x432501,_0x3f6e2f,_0x227ab0);});});});})['then'](function(){return db['VoicePrefix'][_0xb056('0x75')](_0x432501['id']);})['then'](respondWithResult(_0x2129c5,null))[_0xb056('0x4f')](handleError(_0x2129c5,null));};exports['addAgents']=function(_0x208696,_0x5df962,_0x5f4b72){return db['VoicePrefix'][_0xb056('0x51')]({'where':{'id':_0x208696['params']['id']}})['then'](handleEntityNotFound(_0x5df962,null))[_0xb056('0x2b')](function(_0xb6fd9b){if(_0xb6fd9b){return _0xb6fd9b[_0xb056('0x76')](_0x208696['body']['ids'],_['omit'](_0x208696[_0xb056('0x56')],[_0xb056('0x77'),'id'])||{})[_0xb056('0x78')](function(_0x13bd5f){for(var _0x9185c=0x0;_0x9185c<_0x208696[_0xb056('0x56')][_0xb056('0x77')][_0xb056('0x41')];_0x9185c+=0x1){socket[_0xb056('0x79')](_0xb056('0x7a'),{'UserId':Number(_0x208696[_0xb056('0x56')][_0xb056('0x77')][_0x9185c]),'VoicePrefixId':Number(_0x208696[_0xb056('0x50')]['id'])});}return _0x13bd5f;});}})[_0xb056('0x2b')](respondWithResult(_0x5df962,null))['catch'](handleError(_0x5df962,null));};exports['removeAgents']=function(_0x18feb4,_0x5ef886,_0x11ef5f){return db[_0xb056('0x36')][_0xb056('0x51')]({'where':{'id':_0x18feb4[_0xb056('0x50')]['id']}})['then'](handleEntityNotFound(_0x5ef886,null))['then'](function(_0x2e027a){if(_0x2e027a){return _0x2e027a[_0xb056('0x7b')](_0x18feb4[_0xb056('0x3b')]['ids'])['then'](function(){if(_[_0xb056('0x7c')](_0x18feb4[_0xb056('0x3b')]['ids'])){for(var _0x345cf9=0x0;_0x345cf9<_0x18feb4[_0xb056('0x3b')][_0xb056('0x77')][_0xb056('0x41')];_0x345cf9+=0x1){socket[_0xb056('0x79')](_0xb056('0x7d'),{'UserId':Number(_0x18feb4[_0xb056('0x3b')][_0xb056('0x77')][_0x345cf9]),'VoicePrefixId':Number(_0x18feb4[_0xb056('0x50')]['id'])});}}else{socket[_0xb056('0x79')](_0xb056('0x7d'),{'UserId':Number(_0x18feb4['query'][_0xb056('0x77')]),'VoicePrefixId':Number(_0x18feb4[_0xb056('0x50')]['id'])});}});}})[_0xb056('0x2b')](respondWithStatusCode(_0x5ef886,null))['catch'](handleError(_0x5ef886,null));};exports[_0xb056('0x7e')]=function(_0x4dc495,_0x489233,_0x1b0bbb){var _0x3a2f2f={};var _0x2d7c96={};var _0x56578e;var _0x493d0d;return db[_0xb056('0x36')][_0xb056('0x7f')]({'where':{'id':_0x4dc495['params']['id']}})[_0xb056('0x2b')](handleEntityNotFound(_0x489233,null))['then'](function(_0x3b0f93){if(_0x3b0f93){_0x56578e=_0x3b0f93;_0x2d7c96[_0xb056('0x3e')]=_['keys'](db['User'][_0xb056('0x37')]);_0x2d7c96[_0xb056('0x3b')]=_['keys'](_0x4dc495[_0xb056('0x3b')]);_0x2d7c96['filters']=_['intersection'](_0x2d7c96[_0xb056('0x3e')],_0x2d7c96[_0xb056('0x3b')]);_0x3a2f2f[_0xb056('0x3f')]=_[_0xb056('0x3d')](_0x2d7c96[_0xb056('0x3e')],qs[_0xb056('0x40')](_0x4dc495['query'][_0xb056('0x40')]));_0x3a2f2f['attributes']=_0x3a2f2f[_0xb056('0x3f')][_0xb056('0x41')]?_0x3a2f2f['attributes']:_0x2d7c96[_0xb056('0x3e')];_0x3a2f2f[_0xb056('0x80')]=qs['sort'](_0x4dc495[_0xb056('0x3b')]['sort']);_0x3a2f2f[_0xb056('0x45')]=qs['filters'](_[_0xb056('0x46')](_0x4dc495[_0xb056('0x3b')],_0x2d7c96['filters']));if(_0x4dc495[_0xb056('0x3b')]['filter']){_0x3a2f2f[_0xb056('0x45')]=_[_0xb056('0x48')](_0x3a2f2f[_0xb056('0x45')],{'$or':_[_0xb056('0x35')](_0x3a2f2f[_0xb056('0x3f')],function(_0x100a52){var _0x1bac84={};_0x1bac84[_0x100a52]={'$like':'%'+_0x4dc495[_0xb056('0x3b')]['filter']+'%'};return _0x1bac84;})});}_0x3a2f2f=_[_0xb056('0x48')]({},_0x3a2f2f,_0x4dc495['options']);return _0x56578e['getAgents'](_0x3a2f2f);}})['then'](function(_0x2ea984){if(_0x2ea984){_0x493d0d=_0x2ea984[_0xb056('0x41')];if(!_0x4dc495[_0xb056('0x3b')][_0xb056('0x42')]('nolimit')){_0x3a2f2f[_0xb056('0x23')]=qs[_0xb056('0x23')](_0x4dc495[_0xb056('0x3b')][_0xb056('0x23')]);_0x3a2f2f[_0xb056('0x22')]=qs['offset'](_0x4dc495[_0xb056('0x3b')][_0xb056('0x22')]);}return _0x56578e[_0xb056('0x7e')](_0x3a2f2f);}})['then'](function(_0x526035){if(_0x526035){return _0x526035?{'count':_0x493d0d,'rows':_0x526035}:null;}})['then'](respondWithResult(_0x489233,null))['catch'](handleError(_0x489233,null));};exports['getTeams']=function(_0x5021d2,_0x41532c,_0x1f5c6d){var _0xd82e9={};var _0x2b62f1={};var _0x38b119;var _0xcdd8d6;return db['VoicePrefix'][_0xb056('0x7f')]({'where':{'id':_0x5021d2[_0xb056('0x50')]['id']}})[_0xb056('0x2b')](handleEntityNotFound(_0x41532c,null))[_0xb056('0x2b')](function(_0x1ff1e7){if(_0x1ff1e7){_0x38b119=_0x1ff1e7;_0x2b62f1[_0xb056('0x3e')]=_[_0xb056('0x3a')](db[_0xb056('0x81')][_0xb056('0x37')]);_0x2b62f1[_0xb056('0x3b')]=_['keys'](_0x5021d2['query']);_0x2b62f1['filters']=_[_0xb056('0x3d')](_0x2b62f1['model'],_0x2b62f1[_0xb056('0x3b')]);_0xd82e9[_0xb056('0x3f')]=_[_0xb056('0x3d')](_0x2b62f1[_0xb056('0x3e')],qs[_0xb056('0x40')](_0x5021d2[_0xb056('0x3b')][_0xb056('0x40')]));_0xd82e9[_0xb056('0x3f')]=_0xd82e9[_0xb056('0x3f')]['length']?_0xd82e9[_0xb056('0x3f')]:_0x2b62f1[_0xb056('0x3e')];_0xd82e9[_0xb056('0x80')]=qs[_0xb056('0x44')](_0x5021d2['query']['sort']);_0xd82e9[_0xb056('0x45')]=qs[_0xb056('0x3c')](_[_0xb056('0x46')](_0x5021d2[_0xb056('0x3b')],_0x2b62f1[_0xb056('0x3c')]));if(_0x5021d2[_0xb056('0x3b')][_0xb056('0x47')]){_0xd82e9['where']=_[_0xb056('0x48')](_0xd82e9['where'],{'$or':_[_0xb056('0x35')](_0xd82e9[_0xb056('0x3f')],function(_0x5ba4b4){var _0x13ea6a={};_0x13ea6a[_0x5ba4b4]={'$like':'%'+_0x5021d2['query'][_0xb056('0x47')]+'%'};return _0x13ea6a;})});}_0xd82e9=_[_0xb056('0x48')]({},_0xd82e9,_0x5021d2[_0xb056('0x4a')]);return _0x38b119[_0xb056('0x82')](_0xd82e9);}})[_0xb056('0x2b')](function(_0x48dbfb){if(_0x48dbfb){_0xcdd8d6=_0x48dbfb[_0xb056('0x41')];if(!_0x5021d2[_0xb056('0x3b')][_0xb056('0x42')](_0xb056('0x43'))){_0xd82e9[_0xb056('0x23')]=qs[_0xb056('0x23')](_0x5021d2[_0xb056('0x3b')][_0xb056('0x23')]);_0xd82e9[_0xb056('0x22')]=qs[_0xb056('0x22')](_0x5021d2[_0xb056('0x3b')][_0xb056('0x22')]);}return _0x38b119[_0xb056('0x82')](_0xd82e9);}})[_0xb056('0x2b')](function(_0x3837af){if(_0x3837af){return _0x3837af?{'count':_0xcdd8d6,'rows':_0x3837af}:null;}})[_0xb056('0x2b')](respondWithResult(_0x41532c,null))[_0xb056('0x4f')](handleError(_0x41532c,null));};exports[_0xb056('0x83')]=function(_0x1a8d5b,_0x341a86,_0x506e61){var _0x263bbe=_0x1a8d5b[_0xb056('0x56')][_0xb056('0x77')];var _0x3de775;return db[_0xb056('0x81')][_0xb056('0x4d')]({'where':{'id':_0x263bbe},'attributes':['id'],'include':[{'model':db[_0xb056('0x84')],'as':_0xb056('0x85'),'attributes':['id',_0xb056('0x32'),_0xb056('0x86'),_0xb056('0x87'),'interface'],'raw':!![]}]})['then'](function(_0x330dd3){if(_0x330dd3){_0x3de775=_0x330dd3;var _0x5e5b65=_[_0xb056('0x88')](_0x330dd3,function(_0x88e59f){var _0x2b36b0=_0x88e59f['get']({'plain':!![]});return _0x2b36b0[_0xb056('0x85')];});return db[_0xb056('0x36')]['find']({'where':{'id':_0x1a8d5b['params']['id']}})[_0xb056('0x2b')](function(_0x3f80ab){return db[_0xb056('0x54')][_0xb056('0x55')](function(_0x11276e){return _0x3f80ab['addTeams'](_0x263bbe,{'transaction':_0x11276e})['then'](function(){return BPromise[_0xb056('0x89')](_0x3de775,function(_0x587fcc){return db[_0xb056('0x8a')][_0xb056('0x8b')]({'TeamId':_0x587fcc['id'],'VoicePrefixId':_0x1a8d5b[_0xb056('0x50')]['id']},{'transaction':_0x11276e});});})[_0xb056('0x2b')](function(){return BPromise['each'](_0x5e5b65,function(_0x31fc76){return db[_0xb056('0x8c')][_0xb056('0x8d')]({'where':{'UserId':_0x31fc76['id'],'VoicePrefixId':_0x1a8d5b[_0xb056('0x50')]['id']},'transaction':_0x11276e});});})[_0xb056('0x2b')](function(){_0x5e5b65[_0xb056('0x8e')](function(_0x221269){socket['emit'](_0xb056('0x7a'),{'UserId':_0x221269['id'],'VoicePrefixId':_0x3f80ab['id']});});});});});}})[_0xb056('0x2b')](respondWithStatusCode(_0x341a86,null))[_0xb056('0x4f')](handleError(_0x341a86,null));};exports[_0xb056('0x8f')]=function(_0x38c9fd,_0x3d277a,_0x3803bc){return db['Team'][_0xb056('0x4d')]({'where':{'id':_0x38c9fd[_0xb056('0x3b')][_0xb056('0x77')]},'attributes':['id'],'include':[{'model':db['User'],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xb056('0x2b')](handleEntityNotFound(_0x3d277a,null))['then'](function(_0x59020b){var _0x158f35=_[_0xb056('0x35')](_0x59020b,'id');var _0x18ee53=[];var _0xc4c8b4=[];var _0x1cca4d=squel[_0xb056('0x90')]();_0x1cca4d[_0xb056('0x91')](_0xb056('0x92'))['from']('team_has_voice_prefixes','tq')[_0xb056('0x93')](_0xb056('0x94'),'ut',_0xb056('0x95'))[_0xb056('0x45')](_0xb056('0x96'),_0x38c9fd[_0xb056('0x50')]['id']);for(var _0x5a7549=0x0;_0x5a7549<_0x59020b['length'];_0x5a7549+=0x1){let _0x4c9894=_0x59020b[_0x5a7549];for(var _0x2b75e4=0x0;_0x2b75e4<_0x4c9894['Agents'][_0xb056('0x41')];_0x2b75e4+=0x1){let _0x505f0d=_0x4c9894[_0xb056('0x85')][_0x2b75e4];var _0x462eb8=_0x1cca4d[_0xb056('0x97')]();_0x462eb8[_0xb056('0x45')](_0xb056('0x98'),_0x505f0d['id']);_0xc4c8b4[_0xb056('0x6f')](db[_0xb056('0x54')]['query'](_0x462eb8[_0xb056('0x99')](),{'type':db[_0xb056('0x54')][_0xb056('0x9a')][_0xb056('0x9b')]})[_0xb056('0x2b')](function(_0x499233){if(_0x499233[_0xb056('0x41')]===0x1){return _0x505f0d['id'];}else{var _0x391783=_[_0xb056('0x9c')](_[_0xb056('0x35')](_0x499233,_0xb056('0x9d')),function(_0x2f08e1){return _[_0xb056('0x9e')](_0x158f35,_0x2f08e1);});if(_0x391783){return _0x505f0d['id'];}}}));}}return BPromise[_0xb056('0x9f')](_0xc4c8b4)[_0xb056('0x2b')](function(_0x42b105){_0x18ee53=_(_0x18ee53)[_0xb056('0xa0')](_0x42b105)['compact']()[_0xb056('0xa1')]();return db[_0xb056('0x36')]['find']({'where':{'id':_0x38c9fd['params']['id']}})['then'](function(_0x512997){return db[_0xb056('0x54')][_0xb056('0x55')](function(_0x2f7ca9){return _0x512997[_0xb056('0x8f')](_0x38c9fd[_0xb056('0x3b')][_0xb056('0x77')],{'transaction':_0x2f7ca9})[_0xb056('0x2b')](function(){if(!_['isEmpty'](_0x18ee53)){return _0x512997[_0xb056('0x7b')](_0x18ee53,{'transaction':_0x2f7ca9});}})['then'](function(){_0x18ee53['forEach'](function(_0x33b1ad){socket[_0xb056('0x79')](_0xb056('0x7d'),{'UserId':_0x33b1ad,'VoicePrefixId':_0x512997['id']});});});});});});})[_0xb056('0x2b')](respondWithStatusCode(_0x3d277a,null))[_0xb056('0x4f')](handleError(_0x3d277a,null));};
\ No newline at end of file
index a0dc85f..5e58219 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0ebb=['hook','exports','../../mysqldb','VoicePrefix','update','emit','hasOwnProperty'];(function(_0x5c1345,_0x40116e){var _0x1c070d=function(_0x1e862f){while(--_0x1e862f){_0x5c1345['push'](_0x5c1345['shift']());}};_0x1c070d(++_0x40116e);}(_0x0ebb,0x6b));var _0xb0eb=function(_0x412e68,_0x8d2687){_0x412e68=_0x412e68-0x0;var _0x5cf112=_0x0ebb[_0x412e68];return _0x5cf112;};'use strict';var EventEmitter=require('events');var VoicePrefix=require(_0xb0eb('0x0'))['db'][_0xb0eb('0x1')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xb0eb('0x2'),'afterDestroy':'remove'};function emitEvent(_0x1ec741){return function(_0x4b002c,_0x243b61,_0x47b031){VoicePrefixEvents['emit'](_0x1ec741+':'+_0x4b002c['id'],_0x4b002c);VoicePrefixEvents[_0xb0eb('0x3')](_0x1ec741,_0x4b002c);_0x47b031(null);};}for(var e in events){if(events[_0xb0eb('0x4')](e)){var event=events[e];VoicePrefix[_0xb0eb('0x5')](e,emitEvent(event));}}module[_0xb0eb('0x6')]=VoicePrefixEvents;
\ No newline at end of file
+var _0x351a=['setMaxListeners','update','hasOwnProperty','hook','events','../../mysqldb','VoicePrefix'];(function(_0x2ccc80,_0x466bb7){var _0x151e2e=function(_0x7bfc08){while(--_0x7bfc08){_0x2ccc80['push'](_0x2ccc80['shift']());}};_0x151e2e(++_0x466bb7);}(_0x351a,0x1a8));var _0xa351=function(_0x225460,_0x19f96d){_0x225460=_0x225460-0x0;var _0x14d050=_0x351a[_0x225460];return _0x14d050;};'use strict';var EventEmitter=require(_0xa351('0x0'));var VoicePrefix=require(_0xa351('0x1'))['db'][_0xa351('0x2')];var VoicePrefixEvents=new EventEmitter();VoicePrefixEvents[_0xa351('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xa351('0x4'),'afterDestroy':'remove'};function emitEvent(_0x5abf72){return function(_0x3cbc2b,_0x40eb81,_0x12c4ca){VoicePrefixEvents['emit'](_0x5abf72+':'+_0x3cbc2b['id'],_0x3cbc2b);VoicePrefixEvents['emit'](_0x5abf72,_0x3cbc2b);_0x12c4ca(null);};}for(var e in events){if(events[_0xa351('0x5')](e)){var event=events[e];VoicePrefix[_0xa351('0x6')](e,emitEvent(event));}}module['exports']=VoicePrefixEvents;
\ No newline at end of file
index c5f1855..b9aecd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x97a9=['exports','define','voice_prefixes','util','../../config/logger','api','bluebird','path','rimraf','../../config/environment'];(function(_0x13ffd5,_0x132b2e){var _0x5274a8=function(_0x2cdbe0){while(--_0x2cdbe0){_0x13ffd5['push'](_0x13ffd5['shift']());}};_0x5274a8(++_0x132b2e);}(_0x97a9,0xf3));var _0x997a=function(_0x4f4f90,_0x6203b7){_0x4f4f90=_0x4f4f90-0x0;var _0x1cc99f=_0x97a9[_0x4f4f90];return _0x1cc99f;};'use strict';var _=require('lodash');var util=require(_0x997a('0x0'));var logger=require(_0x997a('0x1'))(_0x997a('0x2'));var moment=require('moment');var BPromise=require(_0x997a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x997a('0x4'));var rimraf=require(_0x997a('0x5'));var config=require(_0x997a('0x6'));var attributes=require('./voicePrefix.attributes');module[_0x997a('0x7')]=function(_0x4db41c,_0x3645c2){return _0x4db41c[_0x997a('0x8')]('VoicePrefix',attributes,{'tableName':_0x997a('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2451=['../../config/environment','./voicePrefix.attributes','exports','define','lodash','../../config/logger','api','bluebird','rimraf'];(function(_0x29e093,_0x387479){var _0xb8b3f=function(_0xbe65fa){while(--_0xbe65fa){_0x29e093['push'](_0x29e093['shift']());}};_0xb8b3f(++_0x387479);}(_0x2451,0x199));var _0x1245=function(_0x1a72b8,_0x1e4f4b){_0x1a72b8=_0x1a72b8-0x0;var _0x39f72d=_0x2451[_0x1a72b8];return _0x39f72d;};'use strict';var _=require(_0x1245('0x0'));var util=require('util');var logger=require(_0x1245('0x1'))(_0x1245('0x2'));var moment=require('moment');var BPromise=require(_0x1245('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require('path');var rimraf=require(_0x1245('0x4'));var config=require(_0x1245('0x5'));var attributes=require(_0x1245('0x6'));module[_0x1245('0x7')]=function(_0x5e4d10,_0x5b61ff){return _0x5e4d10[_0x1245('0x8')]('VoicePrefix',attributes,{'tableName':'voice_prefixes','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index dfc27d6..aa44ad9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd36=['../../config/environment','jayson/promise','http','redis','defaults','localhost','socket.io-emitter','request','then','info','VoicePrefix,\x20%s,\x20%s','debug','VoicePrefix,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','lodash','util','moment','ioredis','../../mysqldb','../../config/logger','rpc'];(function(_0x4f5f12,_0x416857){var _0x183cf7=function(_0x3e4b60){while(--_0x3e4b60){_0x4f5f12['push'](_0x4f5f12['shift']());}};_0x183cf7(++_0x416857);}(_0xbd36,0x65));var _0x6bd3=function(_0x36c5b0,_0x5001da){_0x36c5b0=_0x36c5b0-0x0;var _0xf19333=_0xbd36[_0x36c5b0];return _0xf19333;};'use strict';var _=require(_0x6bd3('0x0'));var util=require(_0x6bd3('0x1'));var moment=require(_0x6bd3('0x2'));var BPromise=require('bluebird');var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x6bd3('0x3'));var db=require(_0x6bd3('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6bd3('0x5'))(_0x6bd3('0x6'));var config=require(_0x6bd3('0x7'));var jayson=require(_0x6bd3('0x8'));var client=jayson['client'][_0x6bd3('0x9')]({'port':0x232a});config[_0x6bd3('0xa')]=_[_0x6bd3('0xb')](config[_0x6bd3('0xa')],{'host':_0x6bd3('0xc'),'port':0x18eb});var socket=require(_0x6bd3('0xd'))(new Redis(config[_0x6bd3('0xa')]));require('./voicePrefix.socket')['register'](socket);function respondWithRpcPromise(_0x310f54,_0x50f7f4,_0x2ce148){return new BPromise(function(_0x18004a,_0x25056a){return client[_0x6bd3('0xe')](_0x310f54,_0x2ce148)[_0x6bd3('0xf')](function(_0x56e88f){logger[_0x6bd3('0x10')](_0x6bd3('0x11'),_0x50f7f4,'request\x20sent');logger[_0x6bd3('0x12')](_0x6bd3('0x13'),_0x50f7f4,_0x6bd3('0x14'),JSON[_0x6bd3('0x15')](_0x56e88f));if(_0x56e88f[_0x6bd3('0x16')]){if(_0x56e88f[_0x6bd3('0x16')][_0x6bd3('0x17')]===0x1f4){logger[_0x6bd3('0x16')]('VoicePrefix,\x20%s,\x20%s',_0x50f7f4,_0x56e88f[_0x6bd3('0x16')][_0x6bd3('0x18')]);return _0x25056a(_0x56e88f['error']['message']);}logger['error'](_0x6bd3('0x11'),_0x50f7f4,_0x56e88f['error'][_0x6bd3('0x18')]);return _0x18004a(_0x56e88f[_0x6bd3('0x16')][_0x6bd3('0x18')]);}else{logger[_0x6bd3('0x10')]('VoicePrefix,\x20%s,\x20%s',_0x50f7f4,'request\x20sent');_0x18004a(_0x56e88f[_0x6bd3('0x19')][_0x6bd3('0x18')]);}})[_0x6bd3('0x1a')](function(_0x45ae0e){logger[_0x6bd3('0x16')](_0x6bd3('0x11'),_0x50f7f4,_0x45ae0e);_0x25056a(_0x45ae0e);});});}
\ No newline at end of file
+var _0x84c6=['request\x20sent','error','code','message','info','result','moment','bluebird','randomstring','../../mysqldb','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','localhost','./voicePrefix.socket','request','then','VoicePrefix,\x20%s,\x20%s','debug','VoicePrefix,\x20%s,\x20%s,\x20%s'];(function(_0x3cbe5f,_0x32b366){var _0x2a1a06=function(_0x4884e6){while(--_0x4884e6){_0x3cbe5f['push'](_0x3cbe5f['shift']());}};_0x2a1a06(++_0x32b366);}(_0x84c6,0xe7));var _0x684c=function(_0x2626d6,_0x31a009){_0x2626d6=_0x2626d6-0x0;var _0x510e0e=_0x84c6[_0x2626d6];return _0x510e0e;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x684c('0x0'));var BPromise=require(_0x684c('0x1'));var rs=require(_0x684c('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x684c('0x3'))['db'];var utils=require('../../config/utils');var logger=require(_0x684c('0x4'))(_0x684c('0x5'));var config=require(_0x684c('0x6'));var jayson=require(_0x684c('0x7'));var client=jayson[_0x684c('0x8')][_0x684c('0x9')]({'port':0x232a});config[_0x684c('0xa')]=_[_0x684c('0xb')](config[_0x684c('0xa')],{'host':_0x684c('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x684c('0xa')]));require(_0x684c('0xd'))['register'](socket);function respondWithRpcPromise(_0x764ffa,_0x51c50b,_0x2049a3){return new BPromise(function(_0x35bbc9,_0x25af75){return client[_0x684c('0xe')](_0x764ffa,_0x2049a3)[_0x684c('0xf')](function(_0x5dc55e){logger['info'](_0x684c('0x10'),_0x51c50b,'request\x20sent');logger[_0x684c('0x11')](_0x684c('0x12'),_0x51c50b,_0x684c('0x13'),JSON['stringify'](_0x5dc55e));if(_0x5dc55e[_0x684c('0x14')]){if(_0x5dc55e['error'][_0x684c('0x15')]===0x1f4){logger[_0x684c('0x14')](_0x684c('0x10'),_0x51c50b,_0x5dc55e[_0x684c('0x14')][_0x684c('0x16')]);return _0x25af75(_0x5dc55e[_0x684c('0x14')][_0x684c('0x16')]);}logger[_0x684c('0x14')](_0x684c('0x10'),_0x51c50b,_0x5dc55e['error'][_0x684c('0x16')]);return _0x35bbc9(_0x5dc55e['error']['message']);}else{logger[_0x684c('0x17')](_0x684c('0x10'),_0x51c50b,_0x684c('0x13'));_0x35bbc9(_0x5dc55e[_0x684c('0x18')][_0x684c('0x16')]);}})['catch'](function(_0x3f9968){logger['error']('VoicePrefix,\x20%s,\x20%s',_0x51c50b,_0x3f9968);_0x25af75(_0x3f9968);});});}
\ No newline at end of file
index e53b8bd..6a3d664 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa900=['length','./voicePrefix.events','save','remove','update','emit','removeListener','register'];(function(_0x156324,_0x5d138c){var _0x508828=function(_0x38dbe6){while(--_0x38dbe6){_0x156324['push'](_0x156324['shift']());}};_0x508828(++_0x5d138c);}(_0xa900,0x101));var _0x0a90=function(_0x588f2c,_0x10e069){_0x588f2c=_0x588f2c-0x0;var _0x467467=_0xa900[_0x588f2c];return _0x467467;};'use strict';var VoicePrefixEvents=require(_0x0a90('0x0'));var events=[_0x0a90('0x1'),_0x0a90('0x2'),_0x0a90('0x3')];function createListener(_0x2a9b60,_0x4e133b){return function(_0x55f0b7){_0x4e133b[_0x0a90('0x4')](_0x2a9b60,_0x55f0b7);};}function removeListener(_0x5872bf,_0x4f5b00){return function(){VoicePrefixEvents[_0x0a90('0x5')](_0x5872bf,_0x4f5b00);};}exports[_0x0a90('0x6')]=function(_0x461b32){for(var _0x34ee43=0x0,_0x56a1e5=events[_0x0a90('0x7')];_0x34ee43<_0x56a1e5;_0x34ee43++){var _0x4718e9=events[_0x34ee43];var _0x33e3cf=createListener('voicePrefix:'+_0x4718e9,_0x461b32);VoicePrefixEvents['on'](_0x4718e9,_0x33e3cf);}};
\ No newline at end of file
+var _0x8c38=['save','update','removeListener','register','length','./voicePrefix.events'];(function(_0xcb24d8,_0x283a82){var _0x1cdddf=function(_0x2993ad){while(--_0x2993ad){_0xcb24d8['push'](_0xcb24d8['shift']());}};_0x1cdddf(++_0x283a82);}(_0x8c38,0x83));var _0x88c3=function(_0x182a51,_0x12d6d2){_0x182a51=_0x182a51-0x0;var _0x50d633=_0x8c38[_0x182a51];return _0x50d633;};'use strict';var VoicePrefixEvents=require(_0x88c3('0x0'));var events=[_0x88c3('0x1'),'remove',_0x88c3('0x2')];function createListener(_0x3c7e76,_0x2fd347){return function(_0x2ac453){_0x2fd347['emit'](_0x3c7e76,_0x2ac453);};}function removeListener(_0x147c39,_0x268d5c){return function(){VoicePrefixEvents[_0x88c3('0x3')](_0x147c39,_0x268d5c);};}exports[_0x88c3('0x4')]=function(_0x2c413c){for(var _0x6b76d7=0x0,_0xcdbc28=events[_0x88c3('0x5')];_0x6b76d7<_0xcdbc28;_0x6b76d7++){var _0x5020c9=events[_0x6b76d7];var _0x350a11=createListener('voicePrefix:'+_0x5020c9,_0x2c413c);VoicePrefixEvents['on'](_0x5020c9,_0x350a11);}};
\ No newline at end of file
index 436c9d5..aac04d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0xf0cde,_0xbb33cc){var _0x316172=function(_0x3861af){while(--_0x3861af){_0xf0cde['push'](_0xf0cde['shift']());}};_0x316172(++_0xbb33cc);}(_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'));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
+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(_0x1c72b8,_0x104b7e){var _0x191114=function(_0x5d76da){while(--_0x5d76da){_0x1c72b8['push'](_0x1c72b8['shift']());}};_0x191114(++_0x104b7e);}(_0xb10b,0x12a));var _0xbb10=function(_0x8c2e66,_0xf79589){_0x8c2e66=_0x8c2e66-0x0;var _0x31492f=_0xb10b[_0x8c2e66];return _0x31492f;};'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
index 3952788..91f32e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd09f=['fewestcalls','random','rrmemory','linear','rrordered','setDataValue','strategy','getDataValue','type','dialMethod','booked','roundrobin','predictive','INTEGER','yes','all','once','TEXT','periodic_announce','split','joinempty','join','leavewhenempty','BOOLEAN','acw','wrapuptime','Active/Disactive\x20Campaign','progressive','power','UNSIGNED','Max\x209999\x20channels,\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)','Originate\x20Timeout\x20Seconds\x20(min:1,\x20max:999)','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)','#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,*,*,*','always','onlyIfOpen','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#RecallMe\x20Timeout\x20(min:1)','DESC','ASC','Random\x20Last\x20Digit\x20(min:1,\x20max:15)','Cut\x20Digit\x20(min:1,\x20max:15)','#NoSuchNumber\x20Retry\x20(min:1,\x20max:999)','NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','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\x20(min:1,\x20max:999)','#AgentReject\x20Retry\x20(min:1,\x20max:999)','AgentReject\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','exports','STRING','name','ENUM','inbound','outbound','default','leastrecent'];(function(_0x45bf86,_0x75586e){var _0x1f02b7=function(_0x1ea8a3){while(--_0x1ea8a3){_0x45bf86['push'](_0x45bf86['shift']());}};_0x1f02b7(++_0x75586e);}(_0xd09f,0x18c));var _0xfd09=function(_0x426267,_0x422e6e){_0x426267=_0x426267-0x0;var _0x59e163=_0xd09f[_0x426267];return _0x59e163;};'use strict';var Sequelize=require(_0xfd09('0x0'));module[_0xfd09('0x1')]={'name':{'type':Sequelize[_0xfd09('0x2')],'allowNull':![],'unique':_0xfd09('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize[_0xfd09('0x4')](_0xfd09('0x5'),_0xfd09('0x6')),'allowNull':![],'defaultValue':_0xfd09('0x5')},'musiconhold':{'type':Sequelize[_0xfd09('0x2')],'defaultValue':_0xfd09('0x7')},'announce':{'type':Sequelize[_0xfd09('0x2')],'defaultValue':''},'strategy':{'type':Sequelize[_0xfd09('0x4')]('rr','ringall',_0xfd09('0x8'),_0xfd09('0x9'),_0xfd09('0xa'),_0xfd09('0xb'),_0xfd09('0xc'),'wrandom',_0xfd09('0xd')),'allowNull':![],'defaultValue':'ringall','set':function(_0x17bfa8){this[_0xfd09('0xe')](_0xfd09('0xf'),_0x17bfa8?_0x17bfa8:_0xfd09('0xb'));},'get':function(){var _0x16293c=this[_0xfd09('0x10')](_0xfd09('0x11'));var _0x1dd59b=this[_0xfd09('0x10')](_0xfd09('0x12'));var _0x39098f=this[_0xfd09('0x10')](_0xfd09('0xf'));if(_0x16293c===_0xfd09('0x5')){return _0x39098f;}if(_0x1dd59b===_0xfd09('0x13')&&_0x39098f===_0xfd09('0xb')||_0x1dd59b==='booked'&&_0x39098f===_0xfd09('0x14')){return _0x39098f;}if(_0x1dd59b==='progressive'||_0x1dd59b===_0xfd09('0x15')||_0x1dd59b==='power'){return _0x39098f;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xfd09('0x2')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize['INTEGER'](0xb)},'timeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xfd09('0x16')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize[_0xfd09('0x2')]},'weight':{'type':Sequelize['INTEGER'](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xfd09('0x16')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xfd09('0x4')]('yes','no'),'defaultValue':_0xfd09('0x17')},'autopause':{'type':Sequelize[_0xfd09('0x4')](_0xfd09('0x17'),'no',_0xfd09('0x18')),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xfd09('0x16')](0xb)},'autopausebusy':{'type':Sequelize['ENUM'](_0xfd09('0x17'),'no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize['ENUM'](_0xfd09('0x17'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xfd09('0x16')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize['ENUM'](_0xfd09('0x17'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xfd09('0x4')](_0xfd09('0x17'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xfd09('0x4')](_0xfd09('0x17'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xfd09('0x4')]('yes','no'),'defaultValue':'no'},'membermacro':{'type':Sequelize['STRING'],'allowNull':!![]},'membergosub':{'type':Sequelize['STRING'],'allowNull':!![]},'announce_frequency':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0xfd09('0x16')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0xfd09('0x16')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize[_0xfd09('0x4')](_0xfd09('0x17'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xfd09('0x4')](_0xfd09('0x17'),'no'),'defaultValue':'yes'},'announce_holdtime':{'type':Sequelize[_0xfd09('0x4')](_0xfd09('0x17'),'no',_0xfd09('0x19')),'defaultValue':'no'},'announce_position':{'type':Sequelize[_0xfd09('0x2')],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xfd09('0x4')]('yes','no')},'announce_position_limit':{'type':Sequelize['INTEGER'](0xb)},'announce_round_seconds':{'type':Sequelize['ENUM']('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xfd09('0x2')],'defaultValue':''},'monitor_type':{'type':Sequelize['STRING']},'queue_youarenext':{'type':Sequelize[_0xfd09('0x2')],'defaultValue':null},'queue_thereare':{'type':Sequelize['STRING'],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xfd09('0x2')],'defaultValue':null},'queue_holdtime':{'type':Sequelize[_0xfd09('0x2')],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xfd09('0x2')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xfd09('0x2')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xfd09('0x2')],'defaultValue':null},'queue_thankyou':{'type':Sequelize['STRING'],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xfd09('0x2')]},'queue_quantity1':{'type':Sequelize['STRING']},'queue_quantity2':{'type':Sequelize[_0xfd09('0x2')]},'queue_periodic_announce':{'type':Sequelize['STRING']},'queue_less_than':{'type':Sequelize[_0xfd09('0x2')]},'periodic_announce':{'type':Sequelize[_0xfd09('0x1a')],'set':function(_0x5a0116){this[_0xfd09('0xe')](_0xfd09('0x1b'),_0x5a0116?_0x5a0116['join'](','):[]);},'get':function(){return this[_0xfd09('0x10')](_0xfd09('0x1b'))?this['getDataValue'](_0xfd09('0x1b'))[_0xfd09('0x1c')](','):[];}},'joinempty':{'type':Sequelize[_0xfd09('0x2')],'defaultValue':'yes','set':function(_0x32d758){this[_0xfd09('0xe')](_0xfd09('0x1d'),_0x32d758?_0x32d758[_0xfd09('0x1e')](','):undefined);},'get':function(){return this['getDataValue'](_0xfd09('0x1d'))?this[_0xfd09('0x10')](_0xfd09('0x1d'))['split'](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xfd09('0x2')],'defaultValue':'no','set':function(_0x8f7ce2){this[_0xfd09('0xe')](_0xfd09('0x1f'),_0x8f7ce2?_0x8f7ce2[_0xfd09('0x1e')](','):undefined);},'get':function(){return this['getDataValue'](_0xfd09('0x1f'))?this['getDataValue'](_0xfd09('0x1f'))[_0xfd09('0x1c')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xfd09('0x4')](_0xfd09('0x17'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xfd09('0x4')](_0xfd09('0x17'),'no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xfd09('0x16')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize['ENUM'](_0xfd09('0x17'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xfd09('0x2')]},'description':{'type':Sequelize[_0xfd09('0x2')]},'acw':{'type':Sequelize[_0xfd09('0x20')],'defaultValue':0x0,'set':function(_0x344329){this[_0xfd09('0xe')](_0xfd09('0x21'),_0x344329);if(_0x344329){if(this[_0xfd09('0x10')](_0xfd09('0x22'))<0x2){this[_0xfd09('0xe')](_0xfd09('0x22'),0x2);}}}},'acwTimeout':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':_0xfd09('0x23')},'dialMethod':{'type':Sequelize[_0xfd09('0x4')]('preview',_0xfd09('0x24'),_0xfd09('0x25'),_0xfd09('0x15'),_0xfd09('0x13')),'defaultValue':_0xfd09('0x24'),'comment':'Dial\x20Method.'},'dialLimitChannel':{'type':Sequelize[_0xfd09('0x16')](0x4)[_0xfd09('0x26')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xfd09('0x27')},'dialLimitQueue':{'type':Sequelize['INTEGER'](0x4)[_0xfd09('0x26')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':'Max\x209999\x20member\x20in\x20queue(min:1,\x20max:9999),\x200\x20means\x20unlimited.'},'dialPowerLevel':{'type':Sequelize[_0xfd09('0x28')](0x2)[_0xfd09('0x26')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xfd09('0x29')},'dialPredictiveOptimization':{'type':Sequelize[_0xfd09('0x4')](_0xfd09('0x2a'),'dropRate'),'defaultValue':_0xfd09('0x2b'),'comment':_0xfd09('0x2c')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0xfd09('0x28')](0x2)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xfd09('0x2d')},'dialPredictiveInterval':{'type':Sequelize[_0xfd09('0x16')](0x3)[_0xfd09('0x26')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xfd09('0x2e')},'dialOriginateCallerIdName':{'type':Sequelize[_0xfd09('0x2')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xfd09('0x2')]},'dialOriginateTimeout':{'type':Sequelize[_0xfd09('0x16')](0x3)['UNSIGNED'],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfd09('0x2f')},'dialQueueOptions':{'type':Sequelize[_0xfd09('0x2')],'defaultValue':'tTxX','comment':'https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue'},'dialQueueTimeout':{'type':Sequelize[_0xfd09('0x16')](0x3)[_0xfd09('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfd09('0x30')},'dialQueueProject':{'type':Sequelize[_0xfd09('0x2')],'comment':_0xfd09('0x31')},'dialCongestionMaxRetry':{'type':Sequelize[_0xfd09('0x16')](0x3)[_0xfd09('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfd09('0x32')},'dialCongestionRetryFrequency':{'type':Sequelize[_0xfd09('0x16')](0x5)[_0xfd09('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfd09('0x33')},'dialBusyMaxRetry':{'type':Sequelize[_0xfd09('0x16')](0x3)[_0xfd09('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfd09('0x34')},'dialBusyRetryFrequency':{'type':Sequelize[_0xfd09('0x16')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfd09('0x35')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xfd09('0x16')](0x3)[_0xfd09('0x26')],'defaultValue':0x3,'comment':_0xfd09('0x36')},'dialNoAnswerRetryFrequency':{'type':Sequelize[_0xfd09('0x16')](0x5)[_0xfd09('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfd09('0x37')},'dialGlobalMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xfd09('0x26')],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xfd09('0x38')},'dialTimezone':{'type':Sequelize[_0xfd09('0x2')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize['STRING'],'defaultValue':_0xfd09('0x39')},'dialPrefix':{'type':Sequelize[_0xfd09('0x2')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize['ENUM'](_0xfd09('0x3a'),'never',_0xfd09('0x3b')),'defaultValue':_0xfd09('0x3a')},'dialAMDActive':{'type':Sequelize[_0xfd09('0x20')],'defaultValue':0x0,'comment':_0xfd09('0x3c')},'dialAMDInitialSilence':{'type':Sequelize[_0xfd09('0x16')](0x9)[_0xfd09('0x26')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xfd09('0x3d')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xfd09('0x16')](0x9)[_0xfd09('0x26')],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xfd09('0x3e')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xfd09('0x16')](0x9)[_0xfd09('0x26')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xfd09('0x3f')},'dialAMDMinWordLength':{'type':Sequelize['INTEGER'](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xfd09('0x16')](0x9)['UNSIGNED'],'defaultValue':0x32,'validate':{'min':0x0},'comment':'#AMD\x20Between\x20Words\x20Silence'},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xfd09('0x16')](0x9)[_0xfd09('0x26')],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize[_0xfd09('0x16')](0x5)[_0xfd09('0x26')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xfd09('0x40')},'dialAMDMaximumWordLength':{'type':Sequelize[_0xfd09('0x16')](0x9)['UNSIGNED'],'defaultValue':0x1388,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Word\x20Length'},'dialRecallMeTimeout':{'type':Sequelize[_0xfd09('0x16')](0x5)[_0xfd09('0x26')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xfd09('0x41')},'dialRecallInQueue':{'type':Sequelize[_0xfd09('0x20')],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize[_0xfd09('0x4')](_0xfd09('0x42'),_0xfd09('0x43')),'defaultValue':_0xfd09('0x42')},'dialQueueProject2':{'type':Sequelize[_0xfd09('0x2')],'comment':_0xfd09('0x31')},'dialAgiAfterHangupClient':{'type':Sequelize[_0xfd09('0x20')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize[_0xfd09('0x16')](0x3)[_0xfd09('0x26')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xfd09('0x44')},'dialCutDigit':{'type':Sequelize[_0xfd09('0x16')](0x3)[_0xfd09('0x26')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xfd09('0x45')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xfd09('0x16')](0x3)[_0xfd09('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfd09('0x46')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xfd09('0x16')](0x5)[_0xfd09('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfd09('0x47')},'dialDropMaxRetry':{'type':Sequelize[_0xfd09('0x16')](0x3)[_0xfd09('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Drop\x20Retry\x20(min:1,\x20max:999)'},'dialDropRetryFrequency':{'type':Sequelize['INTEGER'](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfd09('0x48')},'dialAbandonedMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xfd09('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfd09('0x49')},'dialAbandonedRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xfd09('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfd09('0x4a')},'dialMachineMaxRetry':{'type':Sequelize[_0xfd09('0x16')](0x3)[_0xfd09('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfd09('0x4b')},'dialMachineRetryFrequency':{'type':Sequelize[_0xfd09('0x16')](0x5)[_0xfd09('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'Machine\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialAgentRejectMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xfd09('0x26')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfd09('0x4c')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xfd09('0x16')](0x5)[_0xfd09('0x26')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfd09('0x4d')},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'allowNull':!![],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xfd09('0x20')],'defaultValue':![],'comment':_0xfd09('0x4e'),'set':function(_0x53492a){if(!_0x53492a)this[_0xfd09('0xe')](_0xfd09('0x4f'),null);this['setDataValue'](_0xfd09('0x50'),_0x53492a);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xfd09('0x16')](0x3)[_0xfd09('0x26')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize[_0xfd09('0x16')](0x3)[_0xfd09('0x26')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize['BOOLEAN'],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0xfd09('0x16')](0x3)[_0xfd09('0x26')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize[_0xfd09('0x20')],'defaultValue':![]}};
\ No newline at end of file
+var _0xae3f=['ASC','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)','#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)','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue','mandatoryDispositionPauseId','mandatoryDisposition','sequelize','STRING','name','outbound','inbound','default','ENUM','ringall','leastrecent','rrmemory','setDataValue','type','getDataValue','dialMethod','strategy','booked','roundrobin','progressive','power','INTEGER','yes','TEXT','periodic_announce','join','split','joinempty','leavewhenempty','acw','wrapuptime','BOOLEAN','Active/Disactive\x20Campaign','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.','Predictive\x20Optimization\x20Percentage\x20(min:\x201,\x20max:\x2095)','Interval\x20Predictive\x20Minutes\x20(min:5\x20max:30)','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\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,*,*,*','always','Active/Disactive\x20AMD','#AMD\x20Initial\x20Silence','#AMD\x20After\x20Greeting\x20Silence','#AMD\x20Total\x20Analysis\x20Time','#AMD\x20Between\x20Words\x20Silence','#AMD\x20Silence\x20Threshold\x20(min:0,\x20max:32767)','#AMD\x20Maximum\x20Word\x20Length','#RecallMe\x20Timeout\x20(min:1)'];(function(_0x5d8d60,_0x3c4f43){var _0x33ff75=function(_0x43ab71){while(--_0x43ab71){_0x5d8d60['push'](_0x5d8d60['shift']());}};_0x33ff75(++_0x3c4f43);}(_0xae3f,0xa6));var _0xfae3=function(_0x12f688,_0x585c25){_0x12f688=_0x12f688-0x0;var _0x59c3de=_0xae3f[_0x12f688];return _0x59c3de;};'use strict';var Sequelize=require(_0xfae3('0x0'));module['exports']={'name':{'type':Sequelize[_0xfae3('0x1')],'allowNull':![],'unique':_0xfae3('0x2'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'type':{'type':Sequelize['ENUM']('inbound',_0xfae3('0x3')),'allowNull':![],'defaultValue':_0xfae3('0x4')},'musiconhold':{'type':Sequelize['STRING'],'defaultValue':_0xfae3('0x5')},'announce':{'type':Sequelize[_0xfae3('0x1')],'defaultValue':''},'strategy':{'type':Sequelize[_0xfae3('0x6')]('rr',_0xfae3('0x7'),_0xfae3('0x8'),'fewestcalls','random',_0xfae3('0x9'),'linear','wrandom','rrordered'),'allowNull':![],'defaultValue':_0xfae3('0x7'),'set':function(_0x1766f2){this[_0xfae3('0xa')]('strategy',_0x1766f2?_0x1766f2:'rrmemory');},'get':function(){var _0x2e104b=this['getDataValue'](_0xfae3('0xb'));var _0x3fa1d5=this[_0xfae3('0xc')](_0xfae3('0xd'));var _0xe0690a=this[_0xfae3('0xc')](_0xfae3('0xe'));if(_0x2e104b===_0xfae3('0x4')){return _0xe0690a;}if(_0x3fa1d5==='booked'&&_0xe0690a===_0xfae3('0x9')||_0x3fa1d5===_0xfae3('0xf')&&_0xe0690a===_0xfae3('0x10')){return _0xe0690a;}if(_0x3fa1d5===_0xfae3('0x11')||_0x3fa1d5==='predictive'||_0x3fa1d5===_0xfae3('0x12')){return _0xe0690a;}return null;}},'servicelevel':{'type':Sequelize['INTEGER'](0xb),'defaultValue':0x0},'context':{'type':Sequelize[_0xfae3('0x1')],'defaultValue':null},'penaltymemberslimit':{'type':Sequelize['INTEGER'](0xb)},'timeout':{'type':Sequelize[_0xfae3('0x13')](0xb),'defaultValue':0xf},'retry':{'type':Sequelize[_0xfae3('0x13')](0xb),'defaultValue':0x2},'timeoutpriority':{'type':Sequelize['STRING']},'weight':{'type':Sequelize[_0xfae3('0x13')](0xb),'allowNull':!![],'defaultValue':0x0},'wrapuptime':{'type':Sequelize[_0xfae3('0x13')](0xb),'defaultValue':0x0},'autofill':{'type':Sequelize[_0xfae3('0x6')]('yes','no'),'defaultValue':_0xfae3('0x14')},'autopause':{'type':Sequelize[_0xfae3('0x6')](_0xfae3('0x14'),'no','all'),'defaultValue':'no'},'autopausedelay':{'type':Sequelize[_0xfae3('0x13')](0xb)},'autopausebusy':{'type':Sequelize[_0xfae3('0x6')]('yes','no'),'defaultValue':'no'},'autopauseunavail':{'type':Sequelize[_0xfae3('0x6')](_0xfae3('0x14'),'no'),'defaultValue':'no'},'maxlen':{'type':Sequelize[_0xfae3('0x13')](0xb),'defaultValue':0x0},'setinterfacevar':{'type':Sequelize[_0xfae3('0x6')](_0xfae3('0x14'),'no'),'defaultValue':'no'},'setqueueentryvar':{'type':Sequelize[_0xfae3('0x6')](_0xfae3('0x14'),'no'),'defautValue':'no'},'setqueuevar':{'type':Sequelize[_0xfae3('0x6')](_0xfae3('0x14'),'no'),'defaultValue':'no'},'eventmemberstatus':{'type':Sequelize[_0xfae3('0x6')](_0xfae3('0x14'),'no'),'defaultValue':'no'},'membermacro':{'type':Sequelize[_0xfae3('0x1')],'allowNull':!![]},'membergosub':{'type':Sequelize[_0xfae3('0x1')],'allowNull':!![]},'announce_frequency':{'type':Sequelize[_0xfae3('0x13')](0xb),'defaultValue':0x0},'min_announce_frequency':{'type':Sequelize[_0xfae3('0x13')](0xb),'defaultValue':0x0},'periodic_announce_frequency':{'type':Sequelize[_0xfae3('0x13')](0xb),'defaultValue':0x0},'random_periodic_announce':{'type':Sequelize['ENUM'](_0xfae3('0x14'),'no'),'defaultValue':'no'},'relative_periodic_announce':{'type':Sequelize[_0xfae3('0x6')](_0xfae3('0x14'),'no'),'defaultValue':_0xfae3('0x14')},'announce_holdtime':{'type':Sequelize[_0xfae3('0x6')](_0xfae3('0x14'),'no','once'),'defaultValue':'no'},'announce_position':{'type':Sequelize['STRING'],'defaultValue':'no'},'announce_to_first_user':{'type':Sequelize[_0xfae3('0x6')]('yes','no')},'announce_position_limit':{'type':Sequelize[_0xfae3('0x13')](0xb)},'announce_round_seconds':{'type':Sequelize[_0xfae3('0x6')]('0','5','10','15','20','30'),'defaultValue':'0'},'monitor_format':{'type':Sequelize[_0xfae3('0x1')],'defaultValue':''},'monitor_type':{'type':Sequelize[_0xfae3('0x1')]},'queue_youarenext':{'type':Sequelize[_0xfae3('0x1')],'defaultValue':null},'queue_thereare':{'type':Sequelize[_0xfae3('0x1')],'defaultValue':null},'queue_callswaiting':{'type':Sequelize[_0xfae3('0x1')],'defaultValue':null},'queue_holdtime':{'type':Sequelize['STRING'],'defaultValue':null},'queue_minute':{'type':Sequelize[_0xfae3('0x1')],'allowNull':!![],'defaultValue':null},'queue_minutes':{'type':Sequelize[_0xfae3('0x1')],'defaultValue':null},'queue_seconds':{'type':Sequelize[_0xfae3('0x1')],'defaultValue':null},'queue_thankyou':{'type':Sequelize[_0xfae3('0x1')],'defaultValue':null},'queue_reporthold':{'type':Sequelize[_0xfae3('0x1')]},'queue_quantity1':{'type':Sequelize[_0xfae3('0x1')]},'queue_quantity2':{'type':Sequelize['STRING']},'queue_periodic_announce':{'type':Sequelize['STRING']},'queue_less_than':{'type':Sequelize[_0xfae3('0x1')]},'periodic_announce':{'type':Sequelize[_0xfae3('0x15')],'set':function(_0x364553){this[_0xfae3('0xa')](_0xfae3('0x16'),_0x364553?_0x364553[_0xfae3('0x17')](','):[]);},'get':function(){return this['getDataValue']('periodic_announce')?this['getDataValue'](_0xfae3('0x16'))[_0xfae3('0x18')](','):[];}},'joinempty':{'type':Sequelize[_0xfae3('0x1')],'defaultValue':_0xfae3('0x14'),'set':function(_0x1a040c){this['setDataValue'](_0xfae3('0x19'),_0x1a040c?_0x1a040c['join'](','):undefined);},'get':function(){return this[_0xfae3('0xc')](_0xfae3('0x19'))?this['getDataValue'](_0xfae3('0x19'))['split'](','):undefined;}},'leavewhenempty':{'type':Sequelize[_0xfae3('0x1')],'defaultValue':'no','set':function(_0x1ad7ce){this[_0xfae3('0xa')](_0xfae3('0x1a'),_0x1ad7ce?_0x1ad7ce[_0xfae3('0x17')](','):undefined);},'get':function(){return this[_0xfae3('0xc')](_0xfae3('0x1a'))?this['getDataValue'](_0xfae3('0x1a'))[_0xfae3('0x18')](','):undefined;}},'reportholdtime':{'type':Sequelize[_0xfae3('0x6')](_0xfae3('0x14'),'no'),'defaultValue':'no'},'ringinuse':{'type':Sequelize[_0xfae3('0x6')]('yes','no'),'defaultValue':'no'},'memberdelay':{'type':Sequelize[_0xfae3('0x13')](0xb),'defaultValue':0x0},'timeoutrestart':{'type':Sequelize[_0xfae3('0x6')](_0xfae3('0x14'),'no'),'defaultValue':'no'},'defaultrule':{'type':Sequelize[_0xfae3('0x1')]},'description':{'type':Sequelize['STRING']},'acw':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'set':function(_0x2bfd6f){this[_0xfae3('0xa')](_0xfae3('0x1b'),_0x2bfd6f);if(_0x2bfd6f){if(this[_0xfae3('0xc')](_0xfae3('0x1c'))<0x2){this[_0xfae3('0xa')](_0xfae3('0x1c'),0x2);}}}},'acwTimeout':{'type':Sequelize[_0xfae3('0x13')](0xb),'defaultValue':0xa},'dialActive':{'type':Sequelize[_0xfae3('0x1d')],'defaultValue':0x0,'comment':_0xfae3('0x1e')},'dialMethod':{'type':Sequelize[_0xfae3('0x6')]('preview','progressive',_0xfae3('0x12'),'predictive',_0xfae3('0xf')),'defaultValue':_0xfae3('0x11'),'comment':_0xfae3('0x1f')},'dialLimitChannel':{'type':Sequelize[_0xfae3('0x13')](0x4)[_0xfae3('0x20')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xfae3('0x21')},'dialLimitQueue':{'type':Sequelize[_0xfae3('0x13')](0x4)[_0xfae3('0x20')],'defaultValue':0x0,'validate':{'min':0x0,'max':0x270f},'comment':_0xfae3('0x22')},'dialPowerLevel':{'type':Sequelize[_0xfae3('0x23')](0x2)[_0xfae3('0x20')],'defaultValue':0x1,'validate':{'min':0x1,'max':0xa},'comment':_0xfae3('0x24')},'dialPredictiveOptimization':{'type':Sequelize[_0xfae3('0x6')](_0xfae3('0x25'),_0xfae3('0x26')),'defaultValue':_0xfae3('0x26'),'comment':_0xfae3('0x27')},'dialPredictiveOptimizationPercentage':{'type':Sequelize[_0xfae3('0x23')](0x2)[_0xfae3('0x20')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x5f},'comment':_0xfae3('0x28')},'dialPredictiveInterval':{'type':Sequelize[_0xfae3('0x13')](0x3)[_0xfae3('0x20')],'defaultValue':0xa,'validate':{'min':0x5,'max':0x1e},'comment':_0xfae3('0x29')},'dialOriginateCallerIdName':{'type':Sequelize[_0xfae3('0x1')]},'dialOriginateCallerIdNumber':{'type':Sequelize[_0xfae3('0x1')]},'dialOriginateTimeout':{'type':Sequelize[_0xfae3('0x13')](0x3)[_0xfae3('0x20')],'defaultValue':0x1e,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfae3('0x2a')},'dialQueueOptions':{'type':Sequelize[_0xfae3('0x1')],'defaultValue':_0xfae3('0x2b'),'comment':_0xfae3('0x2c')},'dialQueueTimeout':{'type':Sequelize[_0xfae3('0x13')](0x3)[_0xfae3('0x20')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'Queue\x20Timeout\x20Seconds\x20(min:1,\x20max:999)'},'dialQueueProject':{'type':Sequelize['STRING'],'comment':_0xfae3('0x2d')},'dialCongestionMaxRetry':{'type':Sequelize[_0xfae3('0x13')](0x3)[_0xfae3('0x20')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':'#Congestion\x20Retry\x20(min:1,\x20max:999)'},'dialCongestionRetryFrequency':{'type':Sequelize[_0xfae3('0x13')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfae3('0x2e')},'dialBusyMaxRetry':{'type':Sequelize[_0xfae3('0x13')](0x3)[_0xfae3('0x20')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfae3('0x2f')},'dialBusyRetryFrequency':{'type':Sequelize[_0xfae3('0x13')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfae3('0x30')},'dialNoAnswerMaxRetry':{'type':Sequelize[_0xfae3('0x13')](0x3)[_0xfae3('0x20')],'defaultValue':0x3,'comment':_0xfae3('0x31')},'dialNoAnswerRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xfae3('0x20')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfae3('0x32')},'dialGlobalMaxRetry':{'type':Sequelize[_0xfae3('0x13')](0x3)['UNSIGNED'],'validate':{'min':0x1,'max':0x3e7},'defaultValue':0x4,'comment':_0xfae3('0x33')},'dialTimezone':{'type':Sequelize[_0xfae3('0x1')],'defaultValue':null},'dialGlobalInterval':{'type':Sequelize[_0xfae3('0x1')],'defaultValue':_0xfae3('0x34')},'dialPrefix':{'type':Sequelize[_0xfae3('0x1')],'defaultValue':null},'dialCheckDuplicateType':{'type':Sequelize[_0xfae3('0x6')](_0xfae3('0x35'),'never','onlyIfOpen'),'defaultValue':_0xfae3('0x35')},'dialAMDActive':{'type':Sequelize[_0xfae3('0x1d')],'defaultValue':0x0,'comment':_0xfae3('0x36')},'dialAMDInitialSilence':{'type':Sequelize[_0xfae3('0x13')](0x9)[_0xfae3('0x20')],'defaultValue':0x9c4,'validate':{'min':0x0},'comment':_0xfae3('0x37')},'dialAMDGreeting':{'type':Sequelize['INTEGER'](0x9)[_0xfae3('0x20')],'defaultValue':0x5dc,'validate':{'min':0x0},'comment':'#AMD\x20Greeting'},'dialAMDAfterGreetingSilence':{'type':Sequelize[_0xfae3('0x13')](0x9)['UNSIGNED'],'defaultValue':0x320,'validate':{'min':0x0},'comment':_0xfae3('0x38')},'dialAMDTotalAnalysisTime':{'type':Sequelize[_0xfae3('0x13')](0x9)[_0xfae3('0x20')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xfae3('0x39')},'dialAMDMinWordLength':{'type':Sequelize[_0xfae3('0x13')](0x9)['UNSIGNED'],'defaultValue':0x64,'validate':{'min':0x0},'comment':'#AMD\x20Min\x20Word\x20Length'},'dialAMDBetweenWordsSilence':{'type':Sequelize[_0xfae3('0x13')](0x9)[_0xfae3('0x20')],'defaultValue':0x32,'validate':{'min':0x0},'comment':_0xfae3('0x3a')},'dialAMDMaximumNumberOfWords':{'type':Sequelize[_0xfae3('0x13')](0x9)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x0},'comment':'#AMD\x20Maximum\x20Number\x20Of\x20Words'},'dialAMDSilenceThreshold':{'type':Sequelize['INTEGER'](0x5)[_0xfae3('0x20')],'validate':{'min':0x0,'max':0x7fff},'defaultValue':0x100,'comment':_0xfae3('0x3b')},'dialAMDMaximumWordLength':{'type':Sequelize['INTEGER'](0x9)[_0xfae3('0x20')],'defaultValue':0x1388,'validate':{'min':0x0},'comment':_0xfae3('0x3c')},'dialRecallMeTimeout':{'type':Sequelize[_0xfae3('0x13')](0x5)[_0xfae3('0x20')],'validate':{'min':0x1},'defaultValue':0x1e,'comment':_0xfae3('0x3d')},'dialRecallInQueue':{'type':Sequelize['BOOLEAN'],'defaultValue':0x0,'comment':'Active/Disactive\x20Recall\x20In\x20Queue'},'dialOrderByScheduledAt':{'type':Sequelize['ENUM']('DESC',_0xfae3('0x3e')),'defaultValue':'DESC'},'dialQueueProject2':{'type':Sequelize[_0xfae3('0x1')],'comment':_0xfae3('0x2d')},'dialAgiAfterHangupClient':{'type':Sequelize[_0xfae3('0x1d')],'defaultValue':![]},'dialAgiAfterHangupAgent':{'type':Sequelize[_0xfae3('0x1d')],'defaultValue':![]},'dialRandomLastDigitCallerIdNumber':{'type':Sequelize['INTEGER'](0x3)[_0xfae3('0x20')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':'Random\x20Last\x20Digit\x20(min:1,\x20max:15)'},'dialCutDigit':{'type':Sequelize[_0xfae3('0x13')](0x3)[_0xfae3('0x20')],'validate':{'min':0x0,'max':0xf},'defaultValue':0x0,'comment':_0xfae3('0x3f')},'dialNoSuchNumberMaxRetry':{'type':Sequelize[_0xfae3('0x13')](0x3)[_0xfae3('0x20')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfae3('0x40')},'dialNoSuchNumberRetryFrequency':{'type':Sequelize[_0xfae3('0x13')](0x5)['UNSIGNED'],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':'NoSuchNumber\x20Retry\x20Frequency\x20Minutes\x20(min:1,\x20max:99999)'},'dialDropMaxRetry':{'type':Sequelize[_0xfae3('0x13')](0x3)[_0xfae3('0x20')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfae3('0x41')},'dialDropRetryFrequency':{'type':Sequelize[_0xfae3('0x13')](0x5)[_0xfae3('0x20')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfae3('0x42')},'dialAbandonedMaxRetry':{'type':Sequelize[_0xfae3('0x13')](0x3)[_0xfae3('0x20')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfae3('0x43')},'dialAbandonedRetryFrequency':{'type':Sequelize[_0xfae3('0x13')](0x5)[_0xfae3('0x20')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfae3('0x44')},'dialMachineMaxRetry':{'type':Sequelize['INTEGER'](0x3)[_0xfae3('0x20')],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfae3('0x45')},'dialMachineRetryFrequency':{'type':Sequelize['INTEGER'](0x5)[_0xfae3('0x20')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfae3('0x46')},'dialAgentRejectMaxRetry':{'type':Sequelize[_0xfae3('0x13')](0x3)['UNSIGNED'],'defaultValue':0x3,'validate':{'min':0x1,'max':0x3e7},'comment':_0xfae3('0x47')},'dialAgentRejectRetryFrequency':{'type':Sequelize[_0xfae3('0x13')](0x5)[_0xfae3('0x20')],'validate':{'min':0x1,'max':0x1869f},'defaultValue':0x96,'comment':_0xfae3('0x48')},'mandatoryDispositionPauseId':{'type':Sequelize[_0xfae3('0x13')],'allowNull':!![],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xfae3('0x1d')],'defaultValue':![],'comment':_0xfae3('0x49'),'set':function(_0x4715a5){if(!_0x4715a5)this[_0xfae3('0xa')](_0xfae3('0x4a'),null);this[_0xfae3('0xa')](_0xfae3('0x4b'),_0x4715a5);}},'dialPredictiveIntervalMaxThreshold':{'type':Sequelize[_0xfae3('0x13')](0x3)[_0xfae3('0x20')],'defaultValue':0x14,'validate':{'min':0x1,'max':0x64}},'dialPredictiveIntervalMinThreshold':{'type':Sequelize['INTEGER'](0x3)[_0xfae3('0x20')],'defaultValue':0xa,'validate':{'min':0x1,'max':0x64}},'dialPreviewAutoRecallMe':{'type':Sequelize[_0xfae3('0x1d')],'defaultValue':!![]},'callAdditionalPhoneAfterMin':{'type':Sequelize[_0xfae3('0x13')](0x3)[_0xfae3('0x20')],'defaultValue':0x4},'dialPreviewRecallmeReminder':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index 6c4fcb2..ec6e327 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8f9d=['save','then','destroy','VoiceQueues','inbound','filter','ignore','value','type','find','UserProfileResource','error','send','index','map','rawAttributes','fieldName','name','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','sort','where','pick','merge','options','VoiceQueue','findAll','rows','catch','show','params','includeAll','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','QueueCampaigns','outbound','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','clone','include','omit','updatedAt','createdAt','autoAssociation','update','getHoppers','findOne','CmHopper','VoiceQueueId','getHopperHistories','order','CmHopperHistory','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','addTeams','teams','User','voicePause','interface','Agents','penalty','sequelize','transaction','each','TeamVoiceQueue','upsert','findOrCreate','UserVoiceQueueRt','isNil','format','SIP/%s','forEach','emit','userVoiceQueue:save','field','from','join','user_has_teams','ut.TeamId\x20=\x20tq.TeamId','VoiceQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','toString','QueryTypes','every','union','compact','userVoiceQueue:remove','addAgents','ids','online','isEmpty','all','removeAgents','getAgents','getMembers','CmList','getLists','addLists','YYYY-MM-DD\x20HH:mm:ss','spread','dialCheckDuplicateType','insert','into','fromQuery','scheduledAt','ContactId','select','phone','ListId','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','cm_hopper','onlyIfOpen','CmListId','COALESCE(phone,\x27\x27)','cm_contacts','OrderBy','h.id','ci.item','ci.OrderBy+1','cm_contact_has_items','h.ContactId=ci.CmContactId','h.scheduledat=?','getBlackLists','addBlackLists','cm_hopper_black','NOW()','removeBlackLists','eml-format','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','to-csv','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../mysqldb','defaults','redis','localhost','./voiceQueue.socket','register','sendStatus','status','end','undefined','count','offset','limit','set','Content-Range','json','apply','reject'];(function(_0x150874,_0x3d8667){var _0x29c150=function(_0xaf9fc0){while(--_0xaf9fc0){_0x150874['push'](_0x150874['shift']());}};_0x29c150(++_0x3d8667);}(_0x8f9d,0x93));var _0xd8f9=function(_0x57b54c,_0x54ce0d){_0x57b54c=_0x57b54c-0x0;var _0x59cc19=_0x8f9d[_0x57b54c];return _0x59cc19;};'use strict';var emlformat=require(_0xd8f9('0x0'));var rimraf=require('rimraf');var zipdir=require(_0xd8f9('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0xd8f9('0x2'));var moment=require(_0xd8f9('0x3'));var BPromise=require(_0xd8f9('0x4'));var Mustache=require(_0xd8f9('0x5'));var util=require(_0xd8f9('0x6'));var path=require(_0xd8f9('0x7'));var sox=require(_0xd8f9('0x8'));var csv=require('to-csv');var ejs=require(_0xd8f9('0x9'));var fs=require('fs');var fs_extra=require(_0xd8f9('0xa'));var _=require(_0xd8f9('0xb'));var squel=require(_0xd8f9('0xc'));var crypto=require(_0xd8f9('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xd8f9('0xe'));var toCsv=require(_0xd8f9('0xf'));var querystring=require('querystring');var Papa=require(_0xd8f9('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xd8f9('0x11'));var as=require(_0xd8f9('0x12'));var hardwareService=require(_0xd8f9('0x13'));var logger=require(_0xd8f9('0x14'))(_0xd8f9('0x15'));var utils=require(_0xd8f9('0x16'));var config=require(_0xd8f9('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0xd8f9('0x18'))['db'];config['redis']=_[_0xd8f9('0x19')](config[_0xd8f9('0x1a')],{'host':_0xd8f9('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xd8f9('0x1a')]));require(_0xd8f9('0x1c'))[_0xd8f9('0x1d')](socket);function respondWithStatusCode(_0x223f10,_0x4c11f2){_0x4c11f2=_0x4c11f2||0xcc;return function(_0x3529e9){if(_0x3529e9){return _0x223f10[_0xd8f9('0x1e')](_0x4c11f2);}return _0x223f10[_0xd8f9('0x1f')](_0x4c11f2)[_0xd8f9('0x20')]();};}function respondWithResult(_0x3a3a41,_0x19603a){_0x19603a=_0x19603a||0xc8;return function(_0x566448){if(_0x566448){return _0x3a3a41['status'](_0x19603a)['json'](_0x566448);}};}function respondWithFilteredResult(_0x284a1a,_0xc6a825){return function(_0x4d5b8d){if(_0x4d5b8d){var _0x35943f=typeof _0xc6a825['offset']===_0xd8f9('0x21')&&typeof _0xc6a825['limit']==='undefined';var _0x58956e=_0x4d5b8d[_0xd8f9('0x22')];var _0x5d094d=_0x35943f?0x0:_0xc6a825[_0xd8f9('0x23')];var _0xef802d=_0x35943f?_0x4d5b8d[_0xd8f9('0x22')]:_0xc6a825[_0xd8f9('0x23')]+_0xc6a825[_0xd8f9('0x24')];var _0x45b2e3;if(_0xef802d>=_0x58956e){_0xef802d=_0x58956e;_0x45b2e3=0xc8;}else{_0x45b2e3=0xce;}_0x284a1a['status'](_0x45b2e3);return _0x284a1a[_0xd8f9('0x25')](_0xd8f9('0x26'),_0x5d094d+'-'+_0xef802d+'/'+_0x58956e)[_0xd8f9('0x27')](_0x4d5b8d);}return null;};}function patchUpdates(_0x36d740){return function(_0x1bf210){try{jsonpatch[_0xd8f9('0x28')](_0x1bf210,_0x36d740,!![]);}catch(_0x4c5808){return BPromise[_0xd8f9('0x29')](_0x4c5808);}return _0x1bf210[_0xd8f9('0x2a')]();};}function saveUpdates(_0x1fcd45,_0x956cc3){return function(_0x290553){if(_0x290553){return _0x290553['update'](_0x1fcd45)[_0xd8f9('0x2b')](function(_0x1d6796){return _0x1d6796;});}return null;};}function removeEntity(_0x28854a,_0xd15475){return function(_0x3e68dc){if(_0x3e68dc){return _0x3e68dc[_0xd8f9('0x2c')]()[_0xd8f9('0x2b')](function(){var _0x461880=_0x3e68dc['get']({'plain':!![]});var _0x464a6a=[{'name':_0xd8f9('0x2d'),'value':_0xd8f9('0x2e'),'ignore':![]},{'name':'QueueCampaigns','value':'outbound','ignore':![]}];var _0x4c08b0=_(_0x464a6a)[_0xd8f9('0x2f')](_0xd8f9('0x30'))['map'](_0xd8f9('0x31'))[_0xd8f9('0x31')]();if(_['includes'](_0x4c08b0,_0x461880[_0xd8f9('0x32')])){return;}var _0x13fa4b=_[_0xd8f9('0x33')](_0x464a6a,['value',_0x461880[_0xd8f9('0x32')]])['name'];return db[_0xd8f9('0x34')][_0xd8f9('0x2c')]({'where':{'type':_0x13fa4b,'resourceId':_0x461880['id']}})['then'](function(){return _0x3e68dc;});})[_0xd8f9('0x2b')](function(){_0x28854a['status'](0xcc)[_0xd8f9('0x20')]();});}};}function handleEntityNotFound(_0x45f8bf,_0x26b7ff){return function(_0x394399){if(!_0x394399){_0x45f8bf[_0xd8f9('0x1e')](0x194);}return _0x394399;};}function handleError(_0x105f00,_0xcfd867){_0xcfd867=_0xcfd867||0x1f4;return function(_0x5211c2){logger[_0xd8f9('0x35')](_0x5211c2['stack']);if(_0x5211c2['name']){delete _0x5211c2['name'];}_0x105f00['status'](_0xcfd867)[_0xd8f9('0x36')](_0x5211c2);};}exports[_0xd8f9('0x37')]=function(_0x1ee3f0,_0x1ec068){var _0x36b8fa={},_0x5b197a={},_0x4e7265={'count':0x0,'rows':[]};var _0x1d5c7d=_[_0xd8f9('0x38')](db['VoiceQueue'][_0xd8f9('0x39')],function(_0x204ead){return{'name':_0x204ead[_0xd8f9('0x3a')],'type':_0x204ead['type']['key']};});_0x5b197a['model']=_['map'](_0x1d5c7d,_0xd8f9('0x3b'));_0x5b197a[_0xd8f9('0x3c')]=_[_0xd8f9('0x3d')](_0x1ee3f0[_0xd8f9('0x3c')]);_0x5b197a[_0xd8f9('0x3e')]=_['intersection'](_0x5b197a[_0xd8f9('0x3f')],_0x5b197a[_0xd8f9('0x3c')]);_0x36b8fa[_0xd8f9('0x40')]=_[_0xd8f9('0x41')](_0x5b197a[_0xd8f9('0x3f')],qs[_0xd8f9('0x42')](_0x1ee3f0[_0xd8f9('0x3c')][_0xd8f9('0x42')]));_0x36b8fa[_0xd8f9('0x40')]=_0x36b8fa[_0xd8f9('0x40')][_0xd8f9('0x43')]?_0x36b8fa['attributes']:_0x5b197a[_0xd8f9('0x3f')];if(!_0x1ee3f0[_0xd8f9('0x3c')][_0xd8f9('0x44')](_0xd8f9('0x45'))){_0x36b8fa['limit']=qs[_0xd8f9('0x24')](_0x1ee3f0[_0xd8f9('0x3c')][_0xd8f9('0x24')]);_0x36b8fa[_0xd8f9('0x23')]=qs[_0xd8f9('0x23')](_0x1ee3f0[_0xd8f9('0x3c')]['offset']);}_0x36b8fa['order']=qs['sort'](_0x1ee3f0[_0xd8f9('0x3c')][_0xd8f9('0x46')]);_0x36b8fa[_0xd8f9('0x47')]=qs[_0xd8f9('0x3e')](_[_0xd8f9('0x48')](_0x1ee3f0[_0xd8f9('0x3c')],_0x5b197a[_0xd8f9('0x3e')]),_0x1d5c7d);if(_0x1ee3f0[_0xd8f9('0x3c')][_0xd8f9('0x2f')]){_0x36b8fa['where']=_['merge'](_0x36b8fa[_0xd8f9('0x47')],{'$or':_[_0xd8f9('0x38')](_0x1d5c7d,function(_0x2993a2){if(_0x2993a2['type']!=='VIRTUAL'){var _0x32c300={};_0x32c300[_0x2993a2[_0xd8f9('0x3b')]]={'$like':'%'+_0x1ee3f0[_0xd8f9('0x3c')]['filter']+'%'};return _0x32c300;}})});}_0x36b8fa=_[_0xd8f9('0x49')]({},_0x36b8fa,_0x1ee3f0[_0xd8f9('0x4a')]);var _0x153260={'where':_0x36b8fa[_0xd8f9('0x47')]};return db[_0xd8f9('0x4b')][_0xd8f9('0x22')](_0x153260)[_0xd8f9('0x2b')](function(_0x188d3a){_0x4e7265[_0xd8f9('0x22')]=_0x188d3a;if(_0x1ee3f0['query']['includeAll']){_0x36b8fa['include']=[{'all':!![]}];}return db[_0xd8f9('0x4b')][_0xd8f9('0x4c')](_0x36b8fa);})[_0xd8f9('0x2b')](function(_0x256e8a){_0x4e7265[_0xd8f9('0x4d')]=_0x256e8a;return _0x4e7265;})[_0xd8f9('0x2b')](respondWithFilteredResult(_0x1ec068,_0x36b8fa))[_0xd8f9('0x4e')](handleError(_0x1ec068,null));};exports[_0xd8f9('0x4f')]=function(_0x26527c,_0x521b07){var _0x35f7a6={'raw':![],'where':{'id':_0x26527c[_0xd8f9('0x50')]['id']}},_0xd5bb17={};_0xd5bb17['model']=_[_0xd8f9('0x3d')](db[_0xd8f9('0x4b')][_0xd8f9('0x39')]);_0xd5bb17[_0xd8f9('0x3c')]=_['keys'](_0x26527c[_0xd8f9('0x3c')]);_0xd5bb17['filters']=_['intersection'](_0xd5bb17[_0xd8f9('0x3f')],_0xd5bb17[_0xd8f9('0x3c')]);_0x35f7a6[_0xd8f9('0x40')]=_[_0xd8f9('0x41')](_0xd5bb17[_0xd8f9('0x3f')],qs[_0xd8f9('0x42')](_0x26527c[_0xd8f9('0x3c')][_0xd8f9('0x42')]));_0x35f7a6[_0xd8f9('0x40')]=_0x35f7a6[_0xd8f9('0x40')]['length']?_0x35f7a6['attributes']:_0xd5bb17['model'];if(_0x26527c[_0xd8f9('0x3c')][_0xd8f9('0x51')]){_0x35f7a6['include']=[{'all':!![]}];}_0x35f7a6=_[_0xd8f9('0x49')]({},_0x35f7a6,_0x26527c[_0xd8f9('0x4a')]);return db[_0xd8f9('0x4b')][_0xd8f9('0x33')](_0x35f7a6)[_0xd8f9('0x2b')](handleEntityNotFound(_0x521b07,null))[_0xd8f9('0x2b')](respondWithResult(_0x521b07,null))[_0xd8f9('0x4e')](handleError(_0x521b07,null));};exports[_0xd8f9('0x52')]=function(_0x50efce,_0x34f14e){return db[_0xd8f9('0x4b')][_0xd8f9('0x52')](_0x50efce[_0xd8f9('0x53')],{})[_0xd8f9('0x2b')](function(_0x3b489d){var _0x51a978=_0x50efce[_0xd8f9('0x54')][_0xd8f9('0x55')]({'plain':!![]});if(!_0x51a978)throw new Error(_0xd8f9('0x56'));if(_0x51a978[_0xd8f9('0x57')]==='user'){var _0x21555c=_0x3b489d[_0xd8f9('0x55')]({'plain':!![]});var _0x181ad7=[{'name':_0xd8f9('0x2d'),'value':'inbound'},{'name':_0xd8f9('0x58'),'value':_0xd8f9('0x59')}];var _0x3ac9f6=_['find'](_0x181ad7,[_0xd8f9('0x31'),_0x21555c[_0xd8f9('0x32')]])[_0xd8f9('0x3b')];return db[_0xd8f9('0x5a')]['find']({'where':{'name':_0x3ac9f6,'userProfileId':_0x51a978[_0xd8f9('0x5b')]},'raw':!![]})[_0xd8f9('0x2b')](function(_0x5c0ff9){if(_0x5c0ff9&&_0x5c0ff9['autoAssociation']===0x0){return db[_0xd8f9('0x34')][_0xd8f9('0x52')]({'name':_0x21555c[_0xd8f9('0x3b')],'resourceId':_0x21555c['id'],'type':_0x5c0ff9['name'],'sectionId':_0x5c0ff9['id']},{})[_0xd8f9('0x2b')](function(){return _0x3b489d;});}else{return _0x3b489d;}})['catch'](function(_0x1a45a8){logger['error'](_0xd8f9('0x5c'),_0x1a45a8);throw _0x1a45a8;});}return _0x3b489d;})[_0xd8f9('0x2b')](respondWithResult(_0x34f14e,0xc9))[_0xd8f9('0x4e')](handleError(_0x34f14e,null));};exports[_0xd8f9('0x5d')]=function(_0x5d3dec,_0x30748c){var _0x2b12be={'where':{'id':_0x5d3dec[_0xd8f9('0x50')]['id']}},_0x10aa0a={};_0x10aa0a[_0xd8f9('0x3f')]=_[_0xd8f9('0x3d')](db[_0xd8f9('0x4b')][_0xd8f9('0x39')]);_0x2b12be['attributes']=_[_0xd8f9('0x41')](_0x10aa0a[_0xd8f9('0x3f')],qs[_0xd8f9('0x42')](_0x5d3dec[_0xd8f9('0x3c')][_0xd8f9('0x42')]));_0x2b12be['attributes']=_0x2b12be['attributes']['length']?_0x2b12be[_0xd8f9('0x40')]:_0x10aa0a[_0xd8f9('0x3f')];if(_0x5d3dec['query']['includeAll']){_0x2b12be[_0xd8f9('0x5e')]=[{'all':!![]}];}_0x2b12be=_[_0xd8f9('0x49')]({},_0x2b12be,_0x5d3dec[_0xd8f9('0x4a')]);return db[_0xd8f9('0x4b')][_0xd8f9('0x33')](_0x2b12be)[_0xd8f9('0x2b')](handleEntityNotFound(_0x30748c,null))['then'](function(_0x2855a1){if(_0x2855a1){var _0x452079=_0x2855a1[_0xd8f9('0x55')]({'plain':!![]});_0x452079=qs[_0xd8f9('0x5f')](_0x452079,['id','createdAt',_0xd8f9('0x60')]);_0x5d3dec[_0xd8f9('0x53')]=_[_0xd8f9('0x5f')](_0x5d3dec[_0xd8f9('0x53')],['id',_0xd8f9('0x61'),_0xd8f9('0x60')]);return db[_0xd8f9('0x4b')][_0xd8f9('0x52')](_[_0xd8f9('0x49')](_0x452079,_0x5d3dec['body']),{'include':_0x5d3dec['query']['includeAll']?[{'all':!![]}]:undefined})[_0xd8f9('0x2b')](function(_0x100eec){var _0x2a8815=_0x5d3dec[_0xd8f9('0x54')][_0xd8f9('0x55')]({'plain':!![]});if(!_0x2a8815)throw new Error(_0xd8f9('0x56'));if(_0x2a8815[_0xd8f9('0x57')]===_0xd8f9('0x54')){var _0x5865ec=_0x100eec[_0xd8f9('0x55')]({'plain':!![]});var _0x5a329a=[{'name':_0xd8f9('0x2d'),'value':_0xd8f9('0x2e')},{'name':_0xd8f9('0x58'),'value':_0xd8f9('0x59')}];var _0x28f06f=_[_0xd8f9('0x33')](_0x5a329a,[_0xd8f9('0x31'),_0x5865ec[_0xd8f9('0x32')]])['name'];return db[_0xd8f9('0x5a')]['find']({'where':{'name':_0x28f06f,'userProfileId':_0x2a8815[_0xd8f9('0x5b')]},'raw':!![]})['then'](function(_0x536a9f){if(_0x536a9f&&_0x536a9f[_0xd8f9('0x62')]===0x0){return db['UserProfileResource']['create']({'name':_0x5865ec[_0xd8f9('0x3b')],'resourceId':_0x5865ec['id'],'type':_0x536a9f[_0xd8f9('0x3b')],'sectionId':_0x536a9f['id']},{})[_0xd8f9('0x2b')](function(){return _0x100eec;});}else{return _0x100eec;}})[_0xd8f9('0x4e')](function(_0x371056){logger['error'](_0xd8f9('0x5c'),_0x371056);throw _0x371056;});}return _0x100eec;});}})[_0xd8f9('0x2b')](respondWithResult(_0x30748c,0xc9))['catch'](handleError(_0x30748c,null));};exports[_0xd8f9('0x63')]=function(_0x1ca6a9,_0x2230af){if(_0x1ca6a9[_0xd8f9('0x53')]['id']){delete _0x1ca6a9['body']['id'];}return db[_0xd8f9('0x4b')]['find']({'where':{'id':_0x1ca6a9[_0xd8f9('0x50')]['id']}})[_0xd8f9('0x2b')](handleEntityNotFound(_0x2230af,null))[_0xd8f9('0x2b')](saveUpdates(_0x1ca6a9[_0xd8f9('0x53')],null))[_0xd8f9('0x2b')](respondWithResult(_0x2230af,null))[_0xd8f9('0x4e')](handleError(_0x2230af,null));};exports[_0xd8f9('0x2c')]=function(_0x11c577,_0x24129d){return db[_0xd8f9('0x4b')][_0xd8f9('0x33')]({'where':{'id':_0x11c577[_0xd8f9('0x50')]['id']}})[_0xd8f9('0x2b')](handleEntityNotFound(_0x24129d,null))[_0xd8f9('0x2b')](removeEntity(_0x24129d,null))[_0xd8f9('0x4e')](handleError(_0x24129d,null));};exports[_0xd8f9('0x64')]=function(_0x315575,_0x260185,_0x5e8548){var _0x3fb837={'raw':![],'where':{}};var _0x3206f7={};var _0x516957={'count':0x0,'rows':[]};return db[_0xd8f9('0x4b')][_0xd8f9('0x65')]({'where':{'id':_0x315575[_0xd8f9('0x50')]['id']}})[_0xd8f9('0x2b')](handleEntityNotFound(_0x260185,null))[_0xd8f9('0x2b')](function(_0x5eb7e8){if(_0x5eb7e8){_0x3206f7[_0xd8f9('0x3f')]=_['keys'](db[_0xd8f9('0x66')]['rawAttributes']);_0x3206f7[_0xd8f9('0x3c')]=_[_0xd8f9('0x3d')](_0x315575['query']);_0x3206f7[_0xd8f9('0x3e')]=_['intersection'](_0x3206f7['model'],_0x3206f7[_0xd8f9('0x3c')]);_0x3fb837['attributes']=_['intersection'](_0x3206f7[_0xd8f9('0x3f')],qs['fields'](_0x315575[_0xd8f9('0x3c')]['fields']));_0x3fb837[_0xd8f9('0x40')]=_0x3fb837[_0xd8f9('0x40')]['length']?_0x3fb837[_0xd8f9('0x40')]:_0x3206f7[_0xd8f9('0x3f')];if(!_0x315575[_0xd8f9('0x3c')][_0xd8f9('0x44')]('nolimit')){_0x3fb837[_0xd8f9('0x24')]=qs[_0xd8f9('0x24')](_0x315575[_0xd8f9('0x3c')][_0xd8f9('0x24')]);_0x3fb837[_0xd8f9('0x23')]=qs[_0xd8f9('0x23')](_0x315575[_0xd8f9('0x3c')][_0xd8f9('0x23')]);}_0x3fb837['order']=qs[_0xd8f9('0x46')](_0x315575[_0xd8f9('0x3c')]['sort']);_0x3fb837['where']=qs['filters'](_[_0xd8f9('0x48')](_0x315575[_0xd8f9('0x3c')],_0x3206f7[_0xd8f9('0x3e')]));_0x3fb837[_0xd8f9('0x47')][_0xd8f9('0x67')]=_0x5eb7e8['id'];if(_0x315575['query'][_0xd8f9('0x2f')]){_0x3fb837[_0xd8f9('0x47')]=_[_0xd8f9('0x49')](_0x3fb837[_0xd8f9('0x47')],{'$or':_[_0xd8f9('0x38')](_0x3fb837['attributes'],function(_0x1959b1){var _0x5cdd2b={};_0x5cdd2b[_0x1959b1]={'$like':'%'+_0x315575[_0xd8f9('0x3c')]['filter']+'%'};return _0x5cdd2b;})});}_0x3fb837=_[_0xd8f9('0x49')]({},_0x3fb837,_0x315575['options']);return db[_0xd8f9('0x66')][_0xd8f9('0x22')]({'where':_0x3fb837[_0xd8f9('0x47')]})['then'](function(_0x1a9d4f){_0x516957['count']=_0x1a9d4f;if(_0x315575[_0xd8f9('0x3c')][_0xd8f9('0x51')]){_0x3fb837[_0xd8f9('0x5e')]=[{'all':!![]}];}return db[_0xd8f9('0x66')][_0xd8f9('0x4c')](_0x3fb837);})[_0xd8f9('0x2b')](function(_0x5abbba){_0x516957[_0xd8f9('0x4d')]=_0x5abbba;return _0x516957;});}})[_0xd8f9('0x2b')](respondWithFilteredResult(_0x260185,_0x3fb837))[_0xd8f9('0x4e')](handleError(_0x260185,null));};exports[_0xd8f9('0x68')]=function(_0x3db156,_0x2407dc,_0x3feace){var _0x54bf5f={'raw':!![],'where':{}};var _0x161e91={};var _0x5b452d={'count':0x0,'rows':[]};return db[_0xd8f9('0x4b')][_0xd8f9('0x65')]({'where':{'id':_0x3db156[_0xd8f9('0x50')]['id']}})['then'](handleEntityNotFound(_0x2407dc,null))['then'](function(_0x430c13){if(_0x430c13){_0x161e91[_0xd8f9('0x3f')]=_['keys'](db['CmHopperHistory'][_0xd8f9('0x39')]);_0x161e91[_0xd8f9('0x3c')]=_[_0xd8f9('0x3d')](_0x3db156[_0xd8f9('0x3c')]);_0x161e91[_0xd8f9('0x3e')]=_[_0xd8f9('0x41')](_0x161e91['model'],_0x161e91[_0xd8f9('0x3c')]);_0x54bf5f['attributes']=_[_0xd8f9('0x41')](_0x161e91[_0xd8f9('0x3f')],qs[_0xd8f9('0x42')](_0x3db156['query'][_0xd8f9('0x42')]));_0x54bf5f['attributes']=_0x54bf5f[_0xd8f9('0x40')][_0xd8f9('0x43')]?_0x54bf5f[_0xd8f9('0x40')]:_0x161e91['model'];if(!_0x3db156[_0xd8f9('0x3c')][_0xd8f9('0x44')](_0xd8f9('0x45'))){_0x54bf5f[_0xd8f9('0x24')]=qs[_0xd8f9('0x24')](_0x3db156[_0xd8f9('0x3c')][_0xd8f9('0x24')]);_0x54bf5f[_0xd8f9('0x23')]=qs[_0xd8f9('0x23')](_0x3db156[_0xd8f9('0x3c')]['offset']);}_0x54bf5f[_0xd8f9('0x69')]=qs[_0xd8f9('0x46')](_0x3db156['query'][_0xd8f9('0x46')]);_0x54bf5f['where']=qs[_0xd8f9('0x3e')](_[_0xd8f9('0x48')](_0x3db156[_0xd8f9('0x3c')],_0x161e91[_0xd8f9('0x3e')]));_0x54bf5f[_0xd8f9('0x47')]['VoiceQueueId']=_0x430c13['id'];if(_0x3db156[_0xd8f9('0x3c')][_0xd8f9('0x2f')]){_0x54bf5f[_0xd8f9('0x47')]=_[_0xd8f9('0x49')](_0x54bf5f[_0xd8f9('0x47')],{'$or':_[_0xd8f9('0x38')](_0x54bf5f[_0xd8f9('0x40')],function(_0xfd1c36){var _0xf61375={};_0xf61375[_0xfd1c36]={'$like':'%'+_0x3db156[_0xd8f9('0x3c')][_0xd8f9('0x2f')]+'%'};return _0xf61375;})});}_0x54bf5f=_[_0xd8f9('0x49')]({},_0x54bf5f,_0x3db156[_0xd8f9('0x4a')]);return db[_0xd8f9('0x6a')][_0xd8f9('0x22')]({'where':_0x54bf5f[_0xd8f9('0x47')]})[_0xd8f9('0x2b')](function(_0x3db014){_0x5b452d['count']=_0x3db014;if(_0x3db156[_0xd8f9('0x3c')][_0xd8f9('0x51')]){_0x54bf5f[_0xd8f9('0x5e')]=[{'all':!![]}];}return db[_0xd8f9('0x6a')][_0xd8f9('0x4c')](_0x54bf5f);})[_0xd8f9('0x2b')](function(_0xec7fcc){_0x5b452d['rows']=_0xec7fcc;return _0x5b452d;});}})['then'](respondWithFilteredResult(_0x2407dc,_0x54bf5f))[_0xd8f9('0x4e')](handleError(_0x2407dc,null));};exports['getHopperFinals']=function(_0x5a19b5,_0x3ed6ad,_0x54a7b1){var _0x426179={'raw':!![],'where':{}};var _0x15eebe={};var _0x3859c7={'count':0x0,'rows':[]};return db[_0xd8f9('0x4b')][_0xd8f9('0x65')]({'where':{'id':_0x5a19b5[_0xd8f9('0x50')]['id']}})[_0xd8f9('0x2b')](handleEntityNotFound(_0x3ed6ad,null))['then'](function(_0x22bd60){if(_0x22bd60){_0x15eebe[_0xd8f9('0x3f')]=_[_0xd8f9('0x3d')](db['CmHopperFinal']['rawAttributes']);_0x15eebe[_0xd8f9('0x3c')]=_[_0xd8f9('0x3d')](_0x5a19b5[_0xd8f9('0x3c')]);_0x15eebe['filters']=_['intersection'](_0x15eebe['model'],_0x15eebe[_0xd8f9('0x3c')]);_0x426179[_0xd8f9('0x40')]=_['intersection'](_0x15eebe[_0xd8f9('0x3f')],qs['fields'](_0x5a19b5['query'][_0xd8f9('0x42')]));_0x426179[_0xd8f9('0x40')]=_0x426179[_0xd8f9('0x40')][_0xd8f9('0x43')]?_0x426179['attributes']:_0x15eebe[_0xd8f9('0x3f')];if(!_0x5a19b5[_0xd8f9('0x3c')][_0xd8f9('0x44')](_0xd8f9('0x45'))){_0x426179[_0xd8f9('0x24')]=qs[_0xd8f9('0x24')](_0x5a19b5[_0xd8f9('0x3c')]['limit']);_0x426179[_0xd8f9('0x23')]=qs[_0xd8f9('0x23')](_0x5a19b5['query']['offset']);}_0x426179[_0xd8f9('0x69')]=qs[_0xd8f9('0x46')](_0x5a19b5[_0xd8f9('0x3c')][_0xd8f9('0x46')]);_0x426179[_0xd8f9('0x47')]=qs[_0xd8f9('0x3e')](_[_0xd8f9('0x48')](_0x5a19b5[_0xd8f9('0x3c')],_0x15eebe['filters']));_0x426179[_0xd8f9('0x47')][_0xd8f9('0x67')]=_0x22bd60['id'];if(_0x5a19b5['query'][_0xd8f9('0x2f')]){_0x426179[_0xd8f9('0x47')]=_['merge'](_0x426179[_0xd8f9('0x47')],{'$or':_[_0xd8f9('0x38')](_0x426179['attributes'],function(_0x28a115){var _0x34f02c={};_0x34f02c[_0x28a115]={'$like':'%'+_0x5a19b5[_0xd8f9('0x3c')][_0xd8f9('0x2f')]+'%'};return _0x34f02c;})});}_0x426179=_['merge']({},_0x426179,_0x5a19b5[_0xd8f9('0x4a')]);return db[_0xd8f9('0x6b')][_0xd8f9('0x22')]({'where':_0x426179[_0xd8f9('0x47')]})[_0xd8f9('0x2b')](function(_0x47648c){_0x3859c7[_0xd8f9('0x22')]=_0x47648c;if(_0x5a19b5['query'][_0xd8f9('0x51')]){_0x426179[_0xd8f9('0x5e')]=[{'all':!![]}];}return db[_0xd8f9('0x6b')][_0xd8f9('0x4c')](_0x426179);})[_0xd8f9('0x2b')](function(_0x371724){_0x3859c7[_0xd8f9('0x4d')]=_0x371724;return _0x3859c7;});}})['then'](respondWithFilteredResult(_0x3ed6ad,_0x426179))[_0xd8f9('0x4e')](handleError(_0x3ed6ad,null));};exports[_0xd8f9('0x6c')]=function(_0x2ab7ec,_0x33fe44,_0x327805){var _0x205191={'raw':!![],'where':{}};var _0x4c80b4={};var _0x78bac0={'count':0x0,'rows':[]};return db[_0xd8f9('0x4b')]['findOne']({'where':{'id':_0x2ab7ec['params']['id']}})[_0xd8f9('0x2b')](handleEntityNotFound(_0x33fe44,null))[_0xd8f9('0x2b')](function(_0x4e2305){if(_0x4e2305){_0x4c80b4[_0xd8f9('0x3f')]=_[_0xd8f9('0x3d')](db[_0xd8f9('0x6d')]['rawAttributes']);_0x4c80b4[_0xd8f9('0x3c')]=_[_0xd8f9('0x3d')](_0x2ab7ec['query']);_0x4c80b4[_0xd8f9('0x3e')]=_['intersection'](_0x4c80b4[_0xd8f9('0x3f')],_0x4c80b4[_0xd8f9('0x3c')]);_0x205191[_0xd8f9('0x40')]=_['intersection'](_0x4c80b4[_0xd8f9('0x3f')],qs[_0xd8f9('0x42')](_0x2ab7ec[_0xd8f9('0x3c')][_0xd8f9('0x42')]));_0x205191[_0xd8f9('0x40')]=_0x205191[_0xd8f9('0x40')][_0xd8f9('0x43')]?_0x205191['attributes']:_0x4c80b4[_0xd8f9('0x3f')];if(!_0x2ab7ec['query'][_0xd8f9('0x44')](_0xd8f9('0x45'))){_0x205191[_0xd8f9('0x24')]=qs[_0xd8f9('0x24')](_0x2ab7ec[_0xd8f9('0x3c')][_0xd8f9('0x24')]);_0x205191[_0xd8f9('0x23')]=qs['offset'](_0x2ab7ec[_0xd8f9('0x3c')][_0xd8f9('0x23')]);}_0x205191[_0xd8f9('0x69')]=qs['sort'](_0x2ab7ec['query']['sort']);_0x205191[_0xd8f9('0x47')]=qs[_0xd8f9('0x3e')](_[_0xd8f9('0x48')](_0x2ab7ec[_0xd8f9('0x3c')],_0x4c80b4[_0xd8f9('0x3e')]));_0x205191['where']['VoiceQueueId']=_0x4e2305['id'];if(_0x2ab7ec[_0xd8f9('0x3c')][_0xd8f9('0x2f')]){_0x205191[_0xd8f9('0x47')]=_[_0xd8f9('0x49')](_0x205191[_0xd8f9('0x47')],{'$or':_[_0xd8f9('0x38')](_0x205191['attributes'],function(_0x35ab12){var _0xdd45ab={};_0xdd45ab[_0x35ab12]={'$like':'%'+_0x2ab7ec[_0xd8f9('0x3c')]['filter']+'%'};return _0xdd45ab;})});}_0x205191=_[_0xd8f9('0x49')]({},_0x205191,_0x2ab7ec[_0xd8f9('0x4a')]);return db[_0xd8f9('0x6d')][_0xd8f9('0x22')]({'where':_0x205191[_0xd8f9('0x47')]})['then'](function(_0x1543e5){_0x78bac0['count']=_0x1543e5;if(_0x2ab7ec[_0xd8f9('0x3c')]['includeAll']){_0x205191['include']=[{'all':!![]}];}return db['CmHopperBlack']['findAll'](_0x205191);})[_0xd8f9('0x2b')](function(_0x30c5b7){_0x78bac0['rows']=_0x30c5b7;return _0x78bac0;});}})[_0xd8f9('0x2b')](respondWithFilteredResult(_0x33fe44,_0x205191))['catch'](handleError(_0x33fe44,null));};exports[_0xd8f9('0x6e')]=function(_0x3297df,_0x3e4b1b,_0x5c302a){var _0x29739f={};var _0xf6273e={};var _0x38ed44;var _0x328bd7;return db['VoiceQueue'][_0xd8f9('0x65')]({'where':{'id':_0x3297df[_0xd8f9('0x50')]['id']}})[_0xd8f9('0x2b')](handleEntityNotFound(_0x3e4b1b,null))['then'](function(_0x455deb){if(_0x455deb){_0x38ed44=_0x455deb;_0xf6273e[_0xd8f9('0x3f')]=_[_0xd8f9('0x3d')](db['Team'][_0xd8f9('0x39')]);_0xf6273e['query']=_['keys'](_0x3297df['query']);_0xf6273e['filters']=_[_0xd8f9('0x41')](_0xf6273e['model'],_0xf6273e[_0xd8f9('0x3c')]);_0x29739f[_0xd8f9('0x40')]=_[_0xd8f9('0x41')](_0xf6273e[_0xd8f9('0x3f')],qs[_0xd8f9('0x42')](_0x3297df[_0xd8f9('0x3c')][_0xd8f9('0x42')]));_0x29739f[_0xd8f9('0x40')]=_0x29739f[_0xd8f9('0x40')][_0xd8f9('0x43')]?_0x29739f[_0xd8f9('0x40')]:_0xf6273e[_0xd8f9('0x3f')];_0x29739f[_0xd8f9('0x69')]=qs[_0xd8f9('0x46')](_0x3297df[_0xd8f9('0x3c')][_0xd8f9('0x46')]);_0x29739f[_0xd8f9('0x47')]=qs[_0xd8f9('0x3e')](_[_0xd8f9('0x48')](_0x3297df['query'],_0xf6273e[_0xd8f9('0x3e')]));if(_0x3297df['query'][_0xd8f9('0x2f')]){_0x29739f[_0xd8f9('0x47')]=_[_0xd8f9('0x49')](_0x29739f[_0xd8f9('0x47')],{'$or':_[_0xd8f9('0x38')](_0x29739f[_0xd8f9('0x40')],function(_0x56fcb0){var _0x4d84a6={};_0x4d84a6[_0x56fcb0]={'$like':'%'+_0x3297df[_0xd8f9('0x3c')][_0xd8f9('0x2f')]+'%'};return _0x4d84a6;})});}_0x29739f=_['merge']({},_0x29739f,_0x3297df[_0xd8f9('0x4a')]);return _0x38ed44['getTeams'](_0x29739f);}})['then'](function(_0x583d3d){if(_0x583d3d){_0x328bd7=_0x583d3d['length'];if(!_0x3297df[_0xd8f9('0x3c')][_0xd8f9('0x44')](_0xd8f9('0x45'))){_0x29739f[_0xd8f9('0x24')]=qs[_0xd8f9('0x24')](_0x3297df[_0xd8f9('0x3c')][_0xd8f9('0x24')]);_0x29739f['offset']=qs[_0xd8f9('0x23')](_0x3297df[_0xd8f9('0x3c')][_0xd8f9('0x23')]);}return _0x38ed44[_0xd8f9('0x6e')](_0x29739f);}})['then'](function(_0x9c96e9){if(_0x9c96e9){return _0x9c96e9?{'count':_0x328bd7,'rows':_0x9c96e9}:null;}})[_0xd8f9('0x2b')](respondWithResult(_0x3e4b1b,null))['catch'](handleError(_0x3e4b1b,null));};exports[_0xd8f9('0x6f')]=function(_0x68a6b5,_0x530440,_0x80ed48){var _0x4edf1d=_0x68a6b5['body'][_0xd8f9('0x70')];var _0x1b6355=_[_0xd8f9('0x38')](_0x4edf1d,'id');return db['Team'][_0xd8f9('0x4c')]({'where':{'id':_0x1b6355},'attributes':['id'],'include':[{'model':db[_0xd8f9('0x71')],'as':'Agents','attributes':['id',_0xd8f9('0x3b'),'online',_0xd8f9('0x72'),_0xd8f9('0x73')],'raw':!![]}]})[_0xd8f9('0x2b')](function(_0x1698b4){if(_0x1698b4){var _0x3117d0=_['flatMap'](_0x1698b4,function(_0x2cd3f3){var _0x21864a=_0x2cd3f3['get']({'plain':!![]});_0x21864a[_0xd8f9('0x74')]['forEach'](function(_0x193da1){_0x193da1[_0xd8f9('0x75')]=_[_0xd8f9('0x33')](_0x4edf1d,{'id':_0x21864a['id']})[_0xd8f9('0x75')];});return _0x21864a[_0xd8f9('0x74')];});return db[_0xd8f9('0x4b')]['find']({'where':{'id':_0x68a6b5['params']['id']}})[_0xd8f9('0x2b')](function(_0x2f85a9){return db[_0xd8f9('0x76')][_0xd8f9('0x77')](function(_0x5464e1){return _0x2f85a9['addTeams'](_0x1b6355,{'transaction':_0x5464e1})[_0xd8f9('0x2b')](function(){return BPromise[_0xd8f9('0x78')](_0x4edf1d,function(_0x77d89d){return db[_0xd8f9('0x79')][_0xd8f9('0x7a')]({'TeamId':_0x77d89d['id'],'VoiceQueueId':_0x68a6b5[_0xd8f9('0x50')]['id'],'penalty':_0x77d89d[_0xd8f9('0x75')]},{'transaction':_0x5464e1});});})[_0xd8f9('0x2b')](function(){return BPromise[_0xd8f9('0x78')](_0x3117d0,function(_0x4c7bcf){return db['UserVoiceQueue'][_0xd8f9('0x7b')]({'where':{'UserId':_0x4c7bcf['id'],'VoiceQueueId':_0x68a6b5[_0xd8f9('0x50')]['id']},'defaults':{'penalty':_0x4c7bcf[_0xd8f9('0x75')]},'transaction':_0x5464e1});});})['then'](function(){return BPromise[_0xd8f9('0x78')](_[_0xd8f9('0x2f')](_0x3117d0,{'online':!![]}),function(_0x458603){return db[_0xd8f9('0x7c')][_0xd8f9('0x7a')]({'membername':_0x458603['name'],'UserId':_0x458603['id'],'queue_name':_0x2f85a9[_0xd8f9('0x3b')],'VoiceQueueId':_0x2f85a9['id'],'interface':_[_0xd8f9('0x7d')](_0x458603[_0xd8f9('0x73')])?util[_0xd8f9('0x7e')](_0xd8f9('0x7f'),_0x458603[_0xd8f9('0x3b')]):_0x458603[_0xd8f9('0x73')],'paused':_0x458603[_0xd8f9('0x72')]||![],'penalty':_0x458603[_0xd8f9('0x75')]},{'transaction':_0x5464e1});});})[_0xd8f9('0x2b')](function(){_0x3117d0[_0xd8f9('0x80')](function(_0x1ef145){socket[_0xd8f9('0x81')](_0xd8f9('0x82'),{'UserId':_0x1ef145['id'],'VoiceQueueId':_0x2f85a9['id']});});});});});}})[_0xd8f9('0x2b')](respondWithStatusCode(_0x530440,null))[_0xd8f9('0x4e')](handleError(_0x530440,null));};exports['removeTeams']=function(_0x1cc3c4,_0xd833ef,_0x531113){return db['Team'][_0xd8f9('0x4c')]({'where':{'id':_0x1cc3c4['query']['ids']},'attributes':['id'],'include':[{'model':db[_0xd8f9('0x71')],'as':'Agents','attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0xd833ef,null))[_0xd8f9('0x2b')](function(_0x2c1c09){var _0x3cfc98=_[_0xd8f9('0x38')](_0x2c1c09,'id');var _0x269fd5=[];var _0x328e42=[];var _0x29df3a=squel['select']();_0x29df3a[_0xd8f9('0x83')]('tq.TeamId')[_0xd8f9('0x84')]('team_has_voice_queues','tq')[_0xd8f9('0x85')](_0xd8f9('0x86'),'ut',_0xd8f9('0x87'))[_0xd8f9('0x47')](_0xd8f9('0x88'),_0x1cc3c4['params']['id']);for(var _0x23ff0b=0x0;_0x23ff0b<_0x2c1c09[_0xd8f9('0x43')];_0x23ff0b+=0x1){let _0x87ed3e=_0x2c1c09[_0x23ff0b];for(var _0x209380=0x0;_0x209380<_0x87ed3e[_0xd8f9('0x74')][_0xd8f9('0x43')];_0x209380+=0x1){let _0x57880d=_0x87ed3e['Agents'][_0x209380];var _0x4a5c3a=_0x29df3a['clone']();_0x4a5c3a[_0xd8f9('0x47')](_0xd8f9('0x89'),_0x57880d['id']);_0x328e42[_0xd8f9('0x8a')](db[_0xd8f9('0x76')][_0xd8f9('0x3c')](_0x4a5c3a[_0xd8f9('0x8b')](),{'type':db[_0xd8f9('0x76')][_0xd8f9('0x8c')]['SELECT']})['then'](function(_0x59bc93){if(_0x59bc93[_0xd8f9('0x43')]===0x1){return _0x57880d['id'];}else{var _0x5882ec=_[_0xd8f9('0x8d')](_[_0xd8f9('0x38')](_0x59bc93,'TeamId'),function(_0x450645){return _['includes'](_0x3cfc98,_0x450645);});if(_0x5882ec){return _0x57880d['id'];}}}));}}return BPromise['all'](_0x328e42)[_0xd8f9('0x2b')](function(_0x1ef396){_0x269fd5=_(_0x269fd5)[_0xd8f9('0x8e')](_0x1ef396)[_0xd8f9('0x8f')]()['value']();return db[_0xd8f9('0x4b')][_0xd8f9('0x33')]({'where':{'id':_0x1cc3c4[_0xd8f9('0x50')]['id']}})[_0xd8f9('0x2b')](function(_0x2138f7){return db[_0xd8f9('0x76')][_0xd8f9('0x77')](function(_0x23c851){return _0x2138f7['removeTeams'](_0x1cc3c4['query']['ids'],{'transaction':_0x23c851})[_0xd8f9('0x2b')](function(){if(!_['isEmpty'](_0x269fd5)){return _0x2138f7['removeAgents'](_0x269fd5,{'transaction':_0x23c851})[_0xd8f9('0x2b')](function(){return db[_0xd8f9('0x7c')]['destroy']({'where':{'VoiceQueueId':_0x1cc3c4[_0xd8f9('0x50')]['id'],'UserId':_0x269fd5},'transaction':_0x23c851});});}})[_0xd8f9('0x2b')](function(){_0x269fd5['forEach'](function(_0x51a833){socket[_0xd8f9('0x81')](_0xd8f9('0x90'),{'UserId':_0x51a833,'VoiceQueueId':_0x2138f7['id']});});});});});});})[_0xd8f9('0x2b')](respondWithStatusCode(_0xd833ef,null))[_0xd8f9('0x4e')](handleError(_0xd833ef,null));};exports[_0xd8f9('0x91')]=function(_0x138828,_0x3fa514,_0x5be90c){var _0x35a6a4,_0xaff5ac;return db[_0xd8f9('0x4b')][_0xd8f9('0x33')]({'where':{'id':_0x138828[_0xd8f9('0x50')]['id']}})['then'](handleEntityNotFound(_0x3fa514,null))[_0xd8f9('0x2b')](function(_0x29e663){if(_0x29e663){_0xaff5ac=_0x29e663;return _0x29e663['addAgents'](_0x138828[_0xd8f9('0x53')][_0xd8f9('0x92')],_['omit'](_0x138828[_0xd8f9('0x53')],[_0xd8f9('0x92'),'id'])||{})['spread'](function(_0x1b8f7e){for(var _0x5e69f2=0x0;_0x5e69f2<_0x138828[_0xd8f9('0x53')][_0xd8f9('0x92')][_0xd8f9('0x43')];_0x5e69f2+=0x1){socket[_0xd8f9('0x81')](_0xd8f9('0x82'),{'UserId':Number(_0x138828[_0xd8f9('0x53')][_0xd8f9('0x92')][_0x5e69f2]),'VoiceQueueId':Number(_0x138828[_0xd8f9('0x50')]['id'])});}return _0x1b8f7e;});}})['then'](function(_0x47d783){_0x35a6a4=_0x47d783||[];if(_0xaff5ac){return db[_0xd8f9('0x71')][_0xd8f9('0x4c')]({'where':{'id':_0x138828[_0xd8f9('0x53')]['ids']},'attributes':['id',_0xd8f9('0x3b'),_0xd8f9('0x93'),_0xd8f9('0x72'),_0xd8f9('0x73')],'raw':!![]});}})[_0xd8f9('0x2b')](function(_0x5c2a0a){if(!_[_0xd8f9('0x94')](_0x5c2a0a)){var _0x2be637=[];for(var _0x1712e8=0x0;_0x1712e8<_0x5c2a0a[_0xd8f9('0x43')];_0x1712e8++){if(_0x5c2a0a[_0x1712e8]['online']){_0x2be637[_0xd8f9('0x8a')](db[_0xd8f9('0x7c')]['upsert']({'membername':_0x5c2a0a[_0x1712e8][_0xd8f9('0x3b')],'UserId':_0x5c2a0a[_0x1712e8]['id'],'queue_name':_0xaff5ac[_0xd8f9('0x3b')],'VoiceQueueId':_0xaff5ac['id'],'interface':_['isNil'](_0x5c2a0a[_0x1712e8]['interface'])?util[_0xd8f9('0x7e')]('SIP/%s',_0x5c2a0a[_0x1712e8][_0xd8f9('0x3b')]):_0x5c2a0a[_0x1712e8]['interface'],'paused':_0x5c2a0a[_0x1712e8][_0xd8f9('0x72')]||![],'penalty':_0x138828[_0xd8f9('0x53')][_0xd8f9('0x75')]||0x0}));}}return BPromise[_0xd8f9('0x95')](_0x2be637);}})[_0xd8f9('0x2b')](function(){return _0x35a6a4;})[_0xd8f9('0x2b')](respondWithResult(_0x3fa514,null))[_0xd8f9('0x4e')](handleError(_0x3fa514,null));};exports[_0xd8f9('0x96')]=function(_0x4f7d39,_0x30a6ca,_0x5d8ede){return db[_0xd8f9('0x4b')]['find']({'where':{'id':_0x4f7d39['params']['id']}})[_0xd8f9('0x2b')](handleEntityNotFound(_0x30a6ca,null))[_0xd8f9('0x2b')](function(_0x5b711e){if(_0x5b711e){return _0x5b711e[_0xd8f9('0x96')](_0x4f7d39[_0xd8f9('0x3c')][_0xd8f9('0x92')])[_0xd8f9('0x2b')](function(){if(_['isArray'](_0x4f7d39[_0xd8f9('0x3c')][_0xd8f9('0x92')])){for(var _0x20ab60=0x0;_0x20ab60<_0x4f7d39[_0xd8f9('0x3c')][_0xd8f9('0x92')][_0xd8f9('0x43')];_0x20ab60+=0x1){socket['emit'](_0xd8f9('0x90'),{'UserId':Number(_0x4f7d39[_0xd8f9('0x3c')]['ids'][_0x20ab60]),'VoiceQueueId':Number(_0x4f7d39[_0xd8f9('0x50')]['id'])});}}else{socket['emit']('userVoiceQueue:remove',{'UserId':Number(_0x4f7d39[_0xd8f9('0x3c')]['ids']),'VoiceQueueId':Number(_0x4f7d39[_0xd8f9('0x50')]['id'])});}});}})['then'](function(_0x2b7e94){return db[_0xd8f9('0x7c')][_0xd8f9('0x2c')]({'where':{'VoiceQueueId':_0x4f7d39[_0xd8f9('0x50')]['id'],'UserId':_0x4f7d39['query']['ids']}})[_0xd8f9('0x2b')](function(){return _0x2b7e94;});})[_0xd8f9('0x2b')](respondWithStatusCode(_0x30a6ca,null))[_0xd8f9('0x4e')](handleError(_0x30a6ca,null));};exports['getAgents']=function(_0x168556,_0xe6d92d,_0x3643ed){var _0x26a6bd={};var _0x380e9e={};var _0x5ee187;var _0x3bf1e3;return db[_0xd8f9('0x4b')]['findOne']({'where':{'id':_0x168556['params']['id']}})[_0xd8f9('0x2b')](handleEntityNotFound(_0xe6d92d,null))['then'](function(_0x42db4e){if(_0x42db4e){_0x5ee187=_0x42db4e;_0x380e9e[_0xd8f9('0x3f')]=_[_0xd8f9('0x3d')](db['User'][_0xd8f9('0x39')]);_0x380e9e[_0xd8f9('0x3c')]=_[_0xd8f9('0x3d')](_0x168556['query']);_0x380e9e[_0xd8f9('0x3e')]=_[_0xd8f9('0x41')](_0x380e9e['model'],_0x380e9e[_0xd8f9('0x3c')]);_0x26a6bd[_0xd8f9('0x40')]=_[_0xd8f9('0x41')](_0x380e9e[_0xd8f9('0x3f')],qs[_0xd8f9('0x42')](_0x168556[_0xd8f9('0x3c')][_0xd8f9('0x42')]));_0x26a6bd[_0xd8f9('0x40')]=_0x26a6bd['attributes'][_0xd8f9('0x43')]?_0x26a6bd[_0xd8f9('0x40')]:_0x380e9e[_0xd8f9('0x3f')];_0x26a6bd[_0xd8f9('0x69')]=qs[_0xd8f9('0x46')](_0x168556[_0xd8f9('0x3c')][_0xd8f9('0x46')]);_0x26a6bd[_0xd8f9('0x47')]=qs[_0xd8f9('0x3e')](_['pick'](_0x168556['query'],_0x380e9e['filters']));if(_0x168556[_0xd8f9('0x3c')]['filter']){_0x26a6bd[_0xd8f9('0x47')]=_[_0xd8f9('0x49')](_0x26a6bd['where'],{'$or':_['map'](_0x26a6bd['attributes'],function(_0x5eb726){var _0x581197={};_0x581197[_0x5eb726]={'$like':'%'+_0x168556[_0xd8f9('0x3c')][_0xd8f9('0x2f')]+'%'};return _0x581197;})});}_0x26a6bd=_[_0xd8f9('0x49')]({},_0x26a6bd,_0x168556['options']);return _0x5ee187['getAgents'](_0x26a6bd);}})[_0xd8f9('0x2b')](function(_0xef06c7){if(_0xef06c7){_0x3bf1e3=_0xef06c7[_0xd8f9('0x43')];if(!_0x168556['query'][_0xd8f9('0x44')]('nolimit')){_0x26a6bd[_0xd8f9('0x24')]=qs[_0xd8f9('0x24')](_0x168556['query'][_0xd8f9('0x24')]);_0x26a6bd['offset']=qs['offset'](_0x168556[_0xd8f9('0x3c')]['offset']);}return _0x5ee187[_0xd8f9('0x97')](_0x26a6bd);}})[_0xd8f9('0x2b')](function(_0x2e2bd1){if(_0x2e2bd1){return _0x2e2bd1?{'count':_0x3bf1e3,'rows':_0x2e2bd1}:null;}})['then'](respondWithResult(_0xe6d92d,null))[_0xd8f9('0x4e')](handleError(_0xe6d92d,null));};exports['getMembers']=function(_0xcdfdf2,_0xea02a8,_0x1edb43){var _0x336df2={};var _0x54911b={};var _0x5001c6;var _0x38f869;return db[_0xd8f9('0x4b')][_0xd8f9('0x65')]({'where':{'id':_0xcdfdf2['params']['id']}})[_0xd8f9('0x2b')](handleEntityNotFound(_0xea02a8,null))[_0xd8f9('0x2b')](function(_0x1ce7e5){if(_0x1ce7e5){_0x5001c6=_0x1ce7e5;_0x54911b[_0xd8f9('0x3f')]=_[_0xd8f9('0x3d')](db[_0xd8f9('0x7c')]['rawAttributes']);_0x54911b[_0xd8f9('0x3c')]=_['keys'](_0xcdfdf2['query']);_0x54911b[_0xd8f9('0x3e')]=_['intersection'](_0x54911b[_0xd8f9('0x3f')],_0x54911b[_0xd8f9('0x3c')]);_0x336df2[_0xd8f9('0x40')]=_[_0xd8f9('0x41')](_0x54911b['model'],qs[_0xd8f9('0x42')](_0xcdfdf2[_0xd8f9('0x3c')][_0xd8f9('0x42')]));_0x336df2['attributes']=_0x336df2[_0xd8f9('0x40')][_0xd8f9('0x43')]?_0x336df2[_0xd8f9('0x40')]:_0x54911b[_0xd8f9('0x3f')];_0x336df2[_0xd8f9('0x69')]=qs['sort'](_0xcdfdf2[_0xd8f9('0x3c')][_0xd8f9('0x46')]);_0x336df2[_0xd8f9('0x47')]=qs['filters'](_[_0xd8f9('0x48')](_0xcdfdf2[_0xd8f9('0x3c')],_0x54911b[_0xd8f9('0x3e')]));if(_0xcdfdf2['query'][_0xd8f9('0x2f')]){_0x336df2['where']=_['merge'](_0x336df2[_0xd8f9('0x47')],{'$or':_[_0xd8f9('0x38')](_0x336df2[_0xd8f9('0x40')],function(_0x487e0f){var _0x108f70={};_0x108f70[_0x487e0f]={'$like':'%'+_0xcdfdf2[_0xd8f9('0x3c')][_0xd8f9('0x2f')]+'%'};return _0x108f70;})});}_0x336df2=_[_0xd8f9('0x49')]({},_0x336df2,_0xcdfdf2[_0xd8f9('0x4a')]);return _0x5001c6[_0xd8f9('0x98')](_0x336df2);}})[_0xd8f9('0x2b')](function(_0x54bdfb){if(_0x54bdfb){_0x38f869=_0x54bdfb[_0xd8f9('0x43')];if(!_0xcdfdf2[_0xd8f9('0x3c')][_0xd8f9('0x44')](_0xd8f9('0x45'))){_0x336df2[_0xd8f9('0x24')]=qs['limit'](_0xcdfdf2[_0xd8f9('0x3c')]['limit']);_0x336df2['offset']=qs[_0xd8f9('0x23')](_0xcdfdf2['query'][_0xd8f9('0x23')]);}return _0x5001c6['getMembers'](_0x336df2);}})['then'](function(_0x20908d){return _0x20908d?{'count':_0x38f869,'rows':_0x20908d}:null;})[_0xd8f9('0x2b')](respondWithResult(_0xea02a8,null))[_0xd8f9('0x4e')](handleError(_0xea02a8,null));};exports['getLists']=function(_0x4c7ae5,_0x110495,_0x40c720){var _0x9fa2fa={};var _0x11c1f3={};var _0x2bbfac;var _0x166157;return db['VoiceQueue']['findOne']({'where':{'id':_0x4c7ae5[_0xd8f9('0x50')]['id']}})[_0xd8f9('0x2b')](handleEntityNotFound(_0x110495,null))[_0xd8f9('0x2b')](function(_0xc128b2){if(_0xc128b2){_0x2bbfac=_0xc128b2;_0x11c1f3[_0xd8f9('0x3f')]=_[_0xd8f9('0x3d')](db[_0xd8f9('0x99')][_0xd8f9('0x39')]);_0x11c1f3[_0xd8f9('0x3c')]=_[_0xd8f9('0x3d')](_0x4c7ae5['query']);_0x11c1f3['filters']=_[_0xd8f9('0x41')](_0x11c1f3[_0xd8f9('0x3f')],_0x11c1f3[_0xd8f9('0x3c')]);_0x9fa2fa[_0xd8f9('0x40')]=_[_0xd8f9('0x41')](_0x11c1f3[_0xd8f9('0x3f')],qs[_0xd8f9('0x42')](_0x4c7ae5[_0xd8f9('0x3c')][_0xd8f9('0x42')]));_0x9fa2fa['attributes']=_0x9fa2fa[_0xd8f9('0x40')][_0xd8f9('0x43')]?_0x9fa2fa[_0xd8f9('0x40')]:_0x11c1f3[_0xd8f9('0x3f')];_0x9fa2fa[_0xd8f9('0x69')]=qs['sort'](_0x4c7ae5[_0xd8f9('0x3c')]['sort']);_0x9fa2fa[_0xd8f9('0x47')]=qs['filters'](_[_0xd8f9('0x48')](_0x4c7ae5[_0xd8f9('0x3c')],_0x11c1f3['filters']));if(_0x4c7ae5[_0xd8f9('0x3c')][_0xd8f9('0x2f')]){_0x9fa2fa[_0xd8f9('0x47')]=_[_0xd8f9('0x49')](_0x9fa2fa[_0xd8f9('0x47')],{'$or':_[_0xd8f9('0x38')](_0x9fa2fa[_0xd8f9('0x40')],function(_0x581532){var _0x471e81={};_0x471e81[_0x581532]={'$like':'%'+_0x4c7ae5['query'][_0xd8f9('0x2f')]+'%'};return _0x471e81;})});}_0x9fa2fa=_[_0xd8f9('0x49')]({},_0x9fa2fa,_0x4c7ae5[_0xd8f9('0x4a')]);return _0x2bbfac[_0xd8f9('0x9a')](_0x9fa2fa);}})[_0xd8f9('0x2b')](function(_0x58e95d){if(_0x58e95d){_0x166157=_0x58e95d[_0xd8f9('0x43')];if(!_0x4c7ae5[_0xd8f9('0x3c')][_0xd8f9('0x44')](_0xd8f9('0x45'))){_0x9fa2fa['limit']=qs[_0xd8f9('0x24')](_0x4c7ae5[_0xd8f9('0x3c')][_0xd8f9('0x24')]);_0x9fa2fa[_0xd8f9('0x23')]=qs['offset'](_0x4c7ae5[_0xd8f9('0x3c')][_0xd8f9('0x23')]);}return _0x2bbfac[_0xd8f9('0x9a')](_0x9fa2fa);}})[_0xd8f9('0x2b')](function(_0x2cd6ee){if(_0x2cd6ee){return _0x2cd6ee?{'count':_0x166157,'rows':_0x2cd6ee}:null;}})[_0xd8f9('0x2b')](respondWithResult(_0x110495,null))['catch'](handleError(_0x110495,null));};exports[_0xd8f9('0x9b')]=function(_0x5d7f97,_0x13f217,_0x4308ab){var _0x474dfd=moment()['format'](_0xd8f9('0x9c'));var _0x5b1088,_0x12e678;return db['VoiceQueue'][_0xd8f9('0x33')]({'where':{'id':_0x5d7f97[_0xd8f9('0x50')]['id']}})['then'](handleEntityNotFound(_0x13f217,null))['then'](function(_0x5ec958){if(_0x5ec958){_0x12e678=_0x5ec958;return _0x5ec958[_0xd8f9('0x9b')](_0x5d7f97[_0xd8f9('0x53')][_0xd8f9('0x92')],_[_0xd8f9('0x5f')](_0x5d7f97[_0xd8f9('0x53')],[_0xd8f9('0x92'),'id'])||{});}return null;})[_0xd8f9('0x9d')](function(_0x1ee954){var _0x4c6ac8;_0x5b1088=_0x1ee954||[];var _0xb7c973=[];if(_0x1ee954){for(var _0x51e587=0x0;_0x51e587<_0x1ee954[_0xd8f9('0x43')];_0x51e587+=0x1){var _0x4a0724=_0x1ee954[_0x51e587][_0xd8f9('0x55')]({'plain':!![]});_0x12e678[_0xd8f9('0x9e')]=_0x5d7f97[_0xd8f9('0x53')][_0xd8f9('0x9e')]?_0x5d7f97[_0xd8f9('0x53')][_0xd8f9('0x9e')]:_0x12e678[_0xd8f9('0x9e')];switch(_0x12e678['dialCheckDuplicateType']){case'always':_0x4c6ac8=squel[_0xd8f9('0x9f')]()[_0xd8f9('0xa0')]('cm_hopper')[_0xd8f9('0xa1')](['phone',_0xd8f9('0xa2'),_0xd8f9('0xa3'),'ListId',_0xd8f9('0x67'),_0xd8f9('0x61'),'updatedAt'],squel[_0xd8f9('0xa4')]()[_0xd8f9('0x83')](_0xd8f9('0xa5'),_0xd8f9('0xa5'))[_0xd8f9('0x83')]('\x27'+_0x474dfd+'\x27','scheduledAt')[_0xd8f9('0x83')]('id','ContactId')[_0xd8f9('0x83')](_0x4a0724['CmListId']['toString'](),_0xd8f9('0xa6'))[_0xd8f9('0x83')](_0x5d7f97[_0xd8f9('0x50')]['id'][_0xd8f9('0x8b')](),_0xd8f9('0x67'))['field']('\x27'+_0x474dfd+'\x27',_0xd8f9('0x61'))['field']('\x27'+_0x474dfd+'\x27',_0xd8f9('0x60'))['from']('cm_contacts')[_0xd8f9('0x47')](_0xd8f9('0xa7'))[_0xd8f9('0x47')](_0xd8f9('0xa8'),_0x4a0724['CmListId']['toString']())[_0xd8f9('0x47')](_0xd8f9('0xa9'))[_0xd8f9('0x47')](_0xd8f9('0xaa'),squel[_0xd8f9('0xa4')]()[_0xd8f9('0x83')](_0xd8f9('0xab'))[_0xd8f9('0x84')]('cm_hopper_final')[_0xd8f9('0x47')](_0xd8f9('0x88'),_0x5d7f97[_0xd8f9('0x50')]['id'][_0xd8f9('0x8b')]()))[_0xd8f9('0x47')](_0xd8f9('0xaa'),squel[_0xd8f9('0xa4')]()[_0xd8f9('0x83')]('COALESCE(phone,\x27\x27)')['from'](_0xd8f9('0xac'))[_0xd8f9('0x47')](_0xd8f9('0x88'),_0x5d7f97[_0xd8f9('0x50')]['id'][_0xd8f9('0x8b')]())))[_0xd8f9('0x8b')]();break;case _0xd8f9('0xad'):_0x4c6ac8=squel[_0xd8f9('0x9f')]()[_0xd8f9('0xa0')](_0xd8f9('0xac'))[_0xd8f9('0xa1')]([_0xd8f9('0xa5'),'scheduledAt','ContactId','ListId',_0xd8f9('0x67'),_0xd8f9('0x61'),_0xd8f9('0x60')],squel[_0xd8f9('0xa4')]()[_0xd8f9('0x83')](_0xd8f9('0xa5'),_0xd8f9('0xa5'))[_0xd8f9('0x83')]('\x27'+_0x474dfd+'\x27',_0xd8f9('0xa2'))[_0xd8f9('0x83')]('id','ContactId')[_0xd8f9('0x83')](_0x4a0724[_0xd8f9('0xae')]['toString'](),_0xd8f9('0xa6'))[_0xd8f9('0x83')](_0x5d7f97[_0xd8f9('0x50')]['id'][_0xd8f9('0x8b')](),'VoiceQueueId')['field']('\x27'+_0x474dfd+'\x27',_0xd8f9('0x61'))[_0xd8f9('0x83')]('\x27'+_0x474dfd+'\x27',_0xd8f9('0x60'))[_0xd8f9('0x84')]('cm_contacts')[_0xd8f9('0x47')](_0xd8f9('0xa7'))[_0xd8f9('0x47')](_0xd8f9('0xa8'),_0x4a0724['CmListId'][_0xd8f9('0x8b')]())['where'](_0xd8f9('0xa9'))['where'](_0xd8f9('0xaa'),squel[_0xd8f9('0xa4')]()[_0xd8f9('0x83')](_0xd8f9('0xaf'))['from'](_0xd8f9('0xac'))[_0xd8f9('0x47')](_0xd8f9('0x88'),_0x5d7f97[_0xd8f9('0x50')]['id'][_0xd8f9('0x8b')]())))[_0xd8f9('0x8b')]();break;default:_0x4c6ac8=squel['insert']()[_0xd8f9('0xa0')](_0xd8f9('0xac'))['fromQuery']([_0xd8f9('0xa5'),_0xd8f9('0xa2'),_0xd8f9('0xa3'),_0xd8f9('0xa6'),_0xd8f9('0x67'),_0xd8f9('0x61'),_0xd8f9('0x60')],squel[_0xd8f9('0xa4')]()['field'](_0xd8f9('0xa5'),'phone')[_0xd8f9('0x83')]('\x27'+_0x474dfd+'\x27',_0xd8f9('0xa2'))['field']('id',_0xd8f9('0xa3'))[_0xd8f9('0x83')](_0x4a0724[_0xd8f9('0xae')][_0xd8f9('0x8b')](),'ListId')['field'](_0x5d7f97['params']['id'][_0xd8f9('0x8b')](),'VoiceQueueId')['field']('\x27'+_0x474dfd+'\x27','createdAt')['field']('\x27'+_0x474dfd+'\x27',_0xd8f9('0x60'))['from'](_0xd8f9('0xb0'))[_0xd8f9('0x47')](_0xd8f9('0xa7'))[_0xd8f9('0x47')](_0xd8f9('0xa8'),_0x4a0724[_0xd8f9('0xae')]['toString']())[_0xd8f9('0x47')]('phone\x20IS\x20NOT\x20NULL'))['toString']();}_0xb7c973[_0xd8f9('0x8a')](db[_0xd8f9('0x76')][_0xd8f9('0x3c')](_0x4c6ac8));}return BPromise[_0xd8f9('0x95')](_0xb7c973);}})['then'](function(){var _0x24b3f3=[];var _0x4ac986=squel[_0xd8f9('0x9f')]()[_0xd8f9('0xa0')]('cm_hopper_additional_phones')[_0xd8f9('0xa1')](['CmHopperId',_0xd8f9('0xa5'),_0xd8f9('0xb1'),_0xd8f9('0x61'),_0xd8f9('0x60')],squel[_0xd8f9('0xa4')]()[_0xd8f9('0x83')](_0xd8f9('0xb2'))[_0xd8f9('0x83')](_0xd8f9('0xb3'))[_0xd8f9('0x83')](_0xd8f9('0xb4'))[_0xd8f9('0x83')]('\x27'+_0x474dfd+'\x27',_0xd8f9('0x61'))[_0xd8f9('0x83')]('\x27'+_0x474dfd+'\x27',_0xd8f9('0x60'))[_0xd8f9('0x84')](_0xd8f9('0xb5'),'ci')['join'](_0xd8f9('0xac'),'h',_0xd8f9('0xb6'))[_0xd8f9('0x47')](_0xd8f9('0xb7'),_0x474dfd)[_0xd8f9('0x47')]('ci.ItemClass=?','PHONE'))['toString']();_0x24b3f3[_0xd8f9('0x8a')](db['sequelize'][_0xd8f9('0x3c')](_0x4ac986));return BPromise[_0xd8f9('0x95')](_0x24b3f3);})[_0xd8f9('0x2b')](function(){return _0x5b1088;})[_0xd8f9('0x2b')](respondWithResult(_0x13f217,null))[_0xd8f9('0x4e')](handleError(_0x13f217,null));};exports['removeLists']=function(_0x44e503,_0x176844,_0x2bc2be){return db[_0xd8f9('0x4b')][_0xd8f9('0x33')]({'where':{'id':_0x44e503[_0xd8f9('0x50')]['id']}})[_0xd8f9('0x2b')](handleEntityNotFound(_0x176844,null))['then'](function(_0x492732){if(_0x492732){return _0x492732['removeLists'](_0x44e503[_0xd8f9('0x3c')]['ids']);}})['then'](function(_0x5dc638){if(_0x5dc638){return db[_0xd8f9('0x66')][_0xd8f9('0x2c')]({'where':{'ListId':_0x44e503['query'][_0xd8f9('0x92')],'VoiceQueueId':_0x44e503[_0xd8f9('0x50')]['id']}})[_0xd8f9('0x2b')](function(){return _0x5dc638;});}})[_0xd8f9('0x2b')](respondWithStatusCode(_0x176844,null))['catch'](handleError(_0x176844,null));};exports[_0xd8f9('0xb8')]=function(_0x4c49cb,_0x3b57cb,_0x521252){var _0x1379b7={};var _0x1839d6={};var _0x47dcc9;var _0x6e41c9;return db[_0xd8f9('0x4b')]['findOne']({'where':{'id':_0x4c49cb[_0xd8f9('0x50')]['id']}})['then'](handleEntityNotFound(_0x3b57cb,null))[_0xd8f9('0x2b')](function(_0x4566f6){if(_0x4566f6){_0x47dcc9=_0x4566f6;_0x1839d6[_0xd8f9('0x3f')]=_[_0xd8f9('0x3d')](db[_0xd8f9('0x99')]['rawAttributes']);_0x1839d6[_0xd8f9('0x3c')]=_[_0xd8f9('0x3d')](_0x4c49cb['query']);_0x1839d6['filters']=_[_0xd8f9('0x41')](_0x1839d6[_0xd8f9('0x3f')],_0x1839d6[_0xd8f9('0x3c')]);_0x1379b7[_0xd8f9('0x40')]=_[_0xd8f9('0x41')](_0x1839d6[_0xd8f9('0x3f')],qs['fields'](_0x4c49cb[_0xd8f9('0x3c')][_0xd8f9('0x42')]));_0x1379b7['attributes']=_0x1379b7[_0xd8f9('0x40')][_0xd8f9('0x43')]?_0x1379b7['attributes']:_0x1839d6['model'];_0x1379b7[_0xd8f9('0x69')]=qs[_0xd8f9('0x46')](_0x4c49cb[_0xd8f9('0x3c')][_0xd8f9('0x46')]);_0x1379b7[_0xd8f9('0x47')]=qs[_0xd8f9('0x3e')](_['pick'](_0x4c49cb[_0xd8f9('0x3c')],_0x1839d6[_0xd8f9('0x3e')]));if(_0x4c49cb[_0xd8f9('0x3c')][_0xd8f9('0x2f')]){_0x1379b7[_0xd8f9('0x47')]=_[_0xd8f9('0x49')](_0x1379b7[_0xd8f9('0x47')],{'$or':_[_0xd8f9('0x38')](_0x1379b7[_0xd8f9('0x40')],function(_0x4dea70){var _0x1ac258={};_0x1ac258[_0x4dea70]={'$like':'%'+_0x4c49cb[_0xd8f9('0x3c')][_0xd8f9('0x2f')]+'%'};return _0x1ac258;})});}_0x1379b7=_[_0xd8f9('0x49')]({},_0x1379b7,_0x4c49cb['options']);return _0x47dcc9[_0xd8f9('0xb8')](_0x1379b7);}})[_0xd8f9('0x2b')](function(_0x409ecb){if(_0x409ecb){_0x6e41c9=_0x409ecb['length'];if(!_0x4c49cb[_0xd8f9('0x3c')][_0xd8f9('0x44')](_0xd8f9('0x45'))){_0x1379b7[_0xd8f9('0x24')]=qs[_0xd8f9('0x24')](_0x4c49cb['query'][_0xd8f9('0x24')]);_0x1379b7[_0xd8f9('0x23')]=qs[_0xd8f9('0x23')](_0x4c49cb[_0xd8f9('0x3c')][_0xd8f9('0x23')]);}return _0x47dcc9['getBlackLists'](_0x1379b7);}})[_0xd8f9('0x2b')](function(_0xc82ca2){if(_0xc82ca2){return _0xc82ca2?{'count':_0x6e41c9,'rows':_0xc82ca2}:null;}})[_0xd8f9('0x2b')](respondWithResult(_0x3b57cb,null))[_0xd8f9('0x4e')](handleError(_0x3b57cb,null));};exports['addBlackLists']=function(_0x2ab55a,_0x18b54e,_0x513bef){var _0x4c9b7e,_0x4b8385;return db[_0xd8f9('0x4b')][_0xd8f9('0x33')]({'where':{'id':_0x2ab55a[_0xd8f9('0x50')]['id']}})[_0xd8f9('0x2b')](handleEntityNotFound(_0x18b54e,null))[_0xd8f9('0x2b')](function(_0x1ac781){if(_0x1ac781){_0x4b8385=_0x1ac781;return _0x1ac781[_0xd8f9('0xb9')](_0x2ab55a[_0xd8f9('0x53')]['ids'],_[_0xd8f9('0x5f')](_0x2ab55a[_0xd8f9('0x53')],[_0xd8f9('0x92'),'id'])||{});}return null;})[_0xd8f9('0x9d')](function(_0x5b2a19){var _0x127312;_0x4c9b7e=_0x5b2a19||[];var _0x29b17f=[];if(_0x5b2a19){for(var _0x3234e3=0x0;_0x3234e3<_0x5b2a19[_0xd8f9('0x43')];_0x3234e3+=0x1){var _0x34d036=_0x5b2a19[_0x3234e3][_0xd8f9('0x55')]({'plain':!![]});_0x127312=squel['insert']()[_0xd8f9('0xa0')](_0xd8f9('0xba'))[_0xd8f9('0xa1')]([_0xd8f9('0xa5'),'ContactId',_0xd8f9('0xa6'),_0xd8f9('0x67'),_0xd8f9('0x61'),_0xd8f9('0x60')],squel[_0xd8f9('0xa4')]()['field'](_0xd8f9('0xa5'),_0xd8f9('0xa5'))['field']('id',_0xd8f9('0xa3'))[_0xd8f9('0x83')](_0x34d036[_0xd8f9('0xae')][_0xd8f9('0x8b')](),_0xd8f9('0xa6'))[_0xd8f9('0x83')](_0x2ab55a[_0xd8f9('0x50')]['id'][_0xd8f9('0x8b')](),_0xd8f9('0x67'))['field'](_0xd8f9('0xbb'),_0xd8f9('0x61'))[_0xd8f9('0x83')](_0xd8f9('0xbb'),_0xd8f9('0x60'))['from']('cm_contacts')[_0xd8f9('0x47')](_0xd8f9('0xa7'))['where'](_0xd8f9('0xa8'),_0x34d036[_0xd8f9('0xae')][_0xd8f9('0x8b')]())[_0xd8f9('0x47')](_0xd8f9('0xa9')))[_0xd8f9('0x8b')]();_0x29b17f['push'](db[_0xd8f9('0x76')][_0xd8f9('0x3c')](_0x127312));}return BPromise[_0xd8f9('0x95')](_0x29b17f);}})[_0xd8f9('0x2b')](function(){return _0x4c9b7e;})[_0xd8f9('0x2b')](respondWithResult(_0x18b54e,null))['catch'](handleError(_0x18b54e,null));};exports[_0xd8f9('0xbc')]=function(_0x38c869,_0x1a1ff2,_0x3e249b){return db[_0xd8f9('0x4b')]['find']({'where':{'id':_0x38c869['params']['id']}})['then'](handleEntityNotFound(_0x1a1ff2,null))['then'](function(_0x4f4b76){if(_0x4f4b76){return _0x4f4b76[_0xd8f9('0xbc')](_0x38c869[_0xd8f9('0x3c')]['ids']);}})[_0xd8f9('0x2b')](function(_0x1d4f37){if(_0x1d4f37){return db[_0xd8f9('0x6d')]['destroy']({'where':{'ListId':_0x38c869[_0xd8f9('0x3c')][_0xd8f9('0x92')],'VoiceQueueId':_0x38c869['params']['id']}})[_0xd8f9('0x2b')](function(){return _0x1d4f37;});}})[_0xd8f9('0x2b')](respondWithStatusCode(_0x1a1ff2,null))[_0xd8f9('0x4e')](handleError(_0x1a1ff2,null));};
\ No newline at end of file
+var _0x374c=['updatedAt','role','autoAssociation','getHoppers','findOne','length','nolimit','pick','VoiceQueueId','CmHopper','getHopperHistories','CmHopperHistory','CmHopperFinal','getHopperBlacks','CmHopperBlack','getTeams','Team','addTeams','teams','User','Agents','voicePause','interface','forEach','penalty','sequelize','each','TeamVoiceQueue','upsert','UserVoiceQueueRt','SIP/%s','emit','userVoiceQueue:save','removeTeams','ids','field','tq.TeamId','from','team_has_voice_queues','user_has_teams','clone','ut.UserId\x20=\x20?','push','QueryTypes','every','TeamId','all','union','compact','transaction','userVoiceQueue:remove','addAgents','online','isEmpty','isNil','format','isArray','getAgents','getMembers','getLists','CmList','addLists','YYYY-MM-DD\x20HH:mm:ss','spread','dialCheckDuplicateType','insert','fromQuery','scheduledAt','ContactId','select','CmListId','toString','cm_contacts','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','COALESCE(calleridnum,\x27\x27)','VoiceQueueId\x20=\x20?','COALESCE(phone,\x27\x27)','cm_hopper','onlyIfOpen','into','phone','ListId','deletedAt\x20IS\x20NULL','cm_hopper_additional_phones','OrderBy','h.id','ci.item','ci.OrderBy+1','cm_contact_has_items','join','h.scheduledat=?','PHONE','removeLists','getBlackLists','addBlackLists','NOW()','removeBlackLists','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','sox','ejs','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','defaults','redis','localhost','register','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','get','VoiceQueues','QueueCampaigns','filter','ignore','map','value','includes','type','find','name','UserProfileResource','destroy','then','error','stack','send','VoiceQueue','rawAttributes','fieldName','key','model','keys','query','filters','intersection','attributes','hasOwnProperty','limit','order','sort','where','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch','show','params','fields','create','user','inbound','outbound','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','omit','createdAt','body'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x374c,0x1e3));var _0xc374=function(_0x5c9307,_0x5b97e4){_0x5c9307=_0x5c9307-0x0;var _0x373e29=_0x374c[_0x5c9307];return _0x373e29;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0xc374('0x0'));var zipdir=require(_0xc374('0x1'));var jsonpatch=require(_0xc374('0x2'));var rp=require(_0xc374('0x3'));var moment=require(_0xc374('0x4'));var BPromise=require('bluebird');var Mustache=require(_0xc374('0x5'));var util=require('util');var path=require(_0xc374('0x6'));var sox=require(_0xc374('0x7'));var csv=require('to-csv');var ejs=require(_0xc374('0x8'));var fs=require('fs');var fs_extra=require(_0xc374('0x9'));var _=require(_0xc374('0xa'));var squel=require(_0xc374('0xb'));var crypto=require(_0xc374('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xc374('0xd'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc374('0xe'));var Redis=require(_0xc374('0xf'));var authService=require('../../components/auth/service');var qs=require(_0xc374('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc374('0x11'));var logger=require(_0xc374('0x12'))(_0xc374('0x13'));var utils=require('../../config/utils');var config=require(_0xc374('0x14'));var licenseUtil=require(_0xc374('0x15'));var db=require(_0xc374('0x16'))['db'];config['redis']=_[_0xc374('0x17')](config[_0xc374('0x18')],{'host':_0xc374('0x19'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xc374('0x18')]));require('./voiceQueue.socket')[_0xc374('0x1a')](socket);function respondWithStatusCode(_0x1f472b,_0x52aee6){_0x52aee6=_0x52aee6||0xcc;return function(_0x1e44f9){if(_0x1e44f9){return _0x1f472b[_0xc374('0x1b')](_0x52aee6);}return _0x1f472b[_0xc374('0x1c')](_0x52aee6)[_0xc374('0x1d')]();};}function respondWithResult(_0x1178a1,_0x115e8a){_0x115e8a=_0x115e8a||0xc8;return function(_0x132aff){if(_0x132aff){return _0x1178a1[_0xc374('0x1c')](_0x115e8a)[_0xc374('0x1e')](_0x132aff);}};}function respondWithFilteredResult(_0x1c3784,_0x221151){return function(_0x5957c5){if(_0x5957c5){var _0x57c828=typeof _0x221151[_0xc374('0x1f')]===_0xc374('0x20')&&typeof _0x221151['limit']===_0xc374('0x20');var _0x16c7de=_0x5957c5['count'];var _0x574b90=_0x57c828?0x0:_0x221151[_0xc374('0x1f')];var _0x3bf099=_0x57c828?_0x5957c5[_0xc374('0x21')]:_0x221151[_0xc374('0x1f')]+_0x221151['limit'];var _0xa65465;if(_0x3bf099>=_0x16c7de){_0x3bf099=_0x16c7de;_0xa65465=0xc8;}else{_0xa65465=0xce;}_0x1c3784[_0xc374('0x1c')](_0xa65465);return _0x1c3784[_0xc374('0x22')](_0xc374('0x23'),_0x574b90+'-'+_0x3bf099+'/'+_0x16c7de)[_0xc374('0x1e')](_0x5957c5);}return null;};}function patchUpdates(_0x33c61d){return function(_0x251fad){try{jsonpatch[_0xc374('0x24')](_0x251fad,_0x33c61d,!![]);}catch(_0x2b7fa6){return BPromise[_0xc374('0x25')](_0x2b7fa6);}return _0x251fad[_0xc374('0x26')]();};}function saveUpdates(_0x5b92c6,_0x389a16){return function(_0x6931d1){if(_0x6931d1){return _0x6931d1[_0xc374('0x27')](_0x5b92c6)['then'](function(_0x460fe1){return _0x460fe1;});}return null;};}function removeEntity(_0x3d4fb3,_0x19c668){return function(_0x11825e){if(_0x11825e){return _0x11825e['destroy']()['then'](function(){var _0x4ad849=_0x11825e[_0xc374('0x28')]({'plain':!![]});var _0x2e7fad=[{'name':_0xc374('0x29'),'value':'inbound','ignore':![]},{'name':_0xc374('0x2a'),'value':'outbound','ignore':![]}];var _0x13bda5=_(_0x2e7fad)[_0xc374('0x2b')](_0xc374('0x2c'))[_0xc374('0x2d')](_0xc374('0x2e'))[_0xc374('0x2e')]();if(_[_0xc374('0x2f')](_0x13bda5,_0x4ad849[_0xc374('0x30')])){return;}var _0x5cb37e=_[_0xc374('0x31')](_0x2e7fad,['value',_0x4ad849[_0xc374('0x30')]])[_0xc374('0x32')];return db[_0xc374('0x33')][_0xc374('0x34')]({'where':{'type':_0x5cb37e,'resourceId':_0x4ad849['id']}})['then'](function(){return _0x11825e;});})[_0xc374('0x35')](function(){_0x3d4fb3['status'](0xcc)[_0xc374('0x1d')]();});}};}function handleEntityNotFound(_0xd133d4,_0x414590){return function(_0x431a5f){if(!_0x431a5f){_0xd133d4[_0xc374('0x1b')](0x194);}return _0x431a5f;};}function handleError(_0x69febf,_0x3762fa){_0x3762fa=_0x3762fa||0x1f4;return function(_0x2c22e1){logger[_0xc374('0x36')](_0x2c22e1[_0xc374('0x37')]);if(_0x2c22e1[_0xc374('0x32')]){delete _0x2c22e1[_0xc374('0x32')];}_0x69febf['status'](_0x3762fa)[_0xc374('0x38')](_0x2c22e1);};}exports['index']=function(_0x2cd7fd,_0x476765){var _0x868214={},_0x531295={},_0xefa3bf={'count':0x0,'rows':[]};var _0x1d44a9=_['map'](db[_0xc374('0x39')][_0xc374('0x3a')],function(_0x3ef368){return{'name':_0x3ef368[_0xc374('0x3b')],'type':_0x3ef368[_0xc374('0x30')][_0xc374('0x3c')]};});_0x531295[_0xc374('0x3d')]=_['map'](_0x1d44a9,'name');_0x531295['query']=_[_0xc374('0x3e')](_0x2cd7fd[_0xc374('0x3f')]);_0x531295[_0xc374('0x40')]=_[_0xc374('0x41')](_0x531295['model'],_0x531295[_0xc374('0x3f')]);_0x868214[_0xc374('0x42')]=_[_0xc374('0x41')](_0x531295[_0xc374('0x3d')],qs['fields'](_0x2cd7fd['query']['fields']));_0x868214[_0xc374('0x42')]=_0x868214[_0xc374('0x42')]['length']?_0x868214[_0xc374('0x42')]:_0x531295[_0xc374('0x3d')];if(!_0x2cd7fd['query'][_0xc374('0x43')]('nolimit')){_0x868214['limit']=qs[_0xc374('0x44')](_0x2cd7fd[_0xc374('0x3f')][_0xc374('0x44')]);_0x868214[_0xc374('0x1f')]=qs[_0xc374('0x1f')](_0x2cd7fd['query'][_0xc374('0x1f')]);}_0x868214[_0xc374('0x45')]=qs[_0xc374('0x46')](_0x2cd7fd[_0xc374('0x3f')][_0xc374('0x46')]);_0x868214[_0xc374('0x47')]=qs[_0xc374('0x40')](_['pick'](_0x2cd7fd[_0xc374('0x3f')],_0x531295['filters']),_0x1d44a9);if(_0x2cd7fd[_0xc374('0x3f')]['filter']){_0x868214['where']=_[_0xc374('0x48')](_0x868214[_0xc374('0x47')],{'$or':_[_0xc374('0x2d')](_0x1d44a9,function(_0x5f1e95){if(_0x5f1e95[_0xc374('0x30')]!==_0xc374('0x49')){var _0x5a3fc0={};_0x5a3fc0[_0x5f1e95[_0xc374('0x32')]]={'$like':'%'+_0x2cd7fd[_0xc374('0x3f')][_0xc374('0x2b')]+'%'};return _0x5a3fc0;}})});}_0x868214=_[_0xc374('0x48')]({},_0x868214,_0x2cd7fd[_0xc374('0x4a')]);var _0x1979b0={'where':_0x868214[_0xc374('0x47')]};return db[_0xc374('0x39')]['count'](_0x1979b0)['then'](function(_0x14f511){_0xefa3bf[_0xc374('0x21')]=_0x14f511;if(_0x2cd7fd['query'][_0xc374('0x4b')]){_0x868214[_0xc374('0x4c')]=[{'all':!![]}];}return db['VoiceQueue'][_0xc374('0x4d')](_0x868214);})[_0xc374('0x35')](function(_0x1a97a9){_0xefa3bf[_0xc374('0x4e')]=_0x1a97a9;return _0xefa3bf;})[_0xc374('0x35')](respondWithFilteredResult(_0x476765,_0x868214))[_0xc374('0x4f')](handleError(_0x476765,null));};exports[_0xc374('0x50')]=function(_0xa81f2e,_0x12eb69){var _0x24de44={'raw':![],'where':{'id':_0xa81f2e[_0xc374('0x51')]['id']}},_0x4cdc40={};_0x4cdc40['model']=_[_0xc374('0x3e')](db[_0xc374('0x39')]['rawAttributes']);_0x4cdc40[_0xc374('0x3f')]=_[_0xc374('0x3e')](_0xa81f2e[_0xc374('0x3f')]);_0x4cdc40[_0xc374('0x40')]=_[_0xc374('0x41')](_0x4cdc40[_0xc374('0x3d')],_0x4cdc40[_0xc374('0x3f')]);_0x24de44[_0xc374('0x42')]=_[_0xc374('0x41')](_0x4cdc40['model'],qs[_0xc374('0x52')](_0xa81f2e['query'][_0xc374('0x52')]));_0x24de44[_0xc374('0x42')]=_0x24de44[_0xc374('0x42')]['length']?_0x24de44[_0xc374('0x42')]:_0x4cdc40['model'];if(_0xa81f2e[_0xc374('0x3f')][_0xc374('0x4b')]){_0x24de44[_0xc374('0x4c')]=[{'all':!![]}];}_0x24de44=_[_0xc374('0x48')]({},_0x24de44,_0xa81f2e[_0xc374('0x4a')]);return db[_0xc374('0x39')]['find'](_0x24de44)[_0xc374('0x35')](handleEntityNotFound(_0x12eb69,null))['then'](respondWithResult(_0x12eb69,null))[_0xc374('0x4f')](handleError(_0x12eb69,null));};exports[_0xc374('0x53')]=function(_0x1a65b3,_0x300650){return db[_0xc374('0x39')]['create'](_0x1a65b3['body'],{})[_0xc374('0x35')](function(_0x5c5c52){var _0x3c91e5=_0x1a65b3[_0xc374('0x54')][_0xc374('0x28')]({'plain':!![]});if(!_0x3c91e5)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x3c91e5['role']===_0xc374('0x54')){var _0x30f0a6=_0x5c5c52[_0xc374('0x28')]({'plain':!![]});var _0x98083b=[{'name':_0xc374('0x29'),'value':_0xc374('0x55')},{'name':_0xc374('0x2a'),'value':_0xc374('0x56')}];var _0x5f47f9=_[_0xc374('0x31')](_0x98083b,[_0xc374('0x2e'),_0x30f0a6[_0xc374('0x30')]])[_0xc374('0x32')];return db[_0xc374('0x57')][_0xc374('0x31')]({'where':{'name':_0x5f47f9,'userProfileId':_0x3c91e5[_0xc374('0x58')]},'raw':!![]})[_0xc374('0x35')](function(_0x54125b){if(_0x54125b&&_0x54125b['autoAssociation']===0x0){return db['UserProfileResource'][_0xc374('0x53')]({'name':_0x30f0a6[_0xc374('0x32')],'resourceId':_0x30f0a6['id'],'type':_0x54125b['name'],'sectionId':_0x54125b['id']},{})[_0xc374('0x35')](function(){return _0x5c5c52;});}else{return _0x5c5c52;}})[_0xc374('0x4f')](function(_0x43dbef){logger[_0xc374('0x36')](_0xc374('0x59'),_0x43dbef);throw _0x43dbef;});}return _0x5c5c52;})['then'](respondWithResult(_0x300650,0xc9))[_0xc374('0x4f')](handleError(_0x300650,null));};exports['clone']=function(_0x124cba,_0x323899){var _0x1b42cc={'where':{'id':_0x124cba[_0xc374('0x51')]['id']}},_0x3bf48a={};_0x3bf48a['model']=_[_0xc374('0x3e')](db[_0xc374('0x39')][_0xc374('0x3a')]);_0x1b42cc[_0xc374('0x42')]=_[_0xc374('0x41')](_0x3bf48a['model'],qs[_0xc374('0x52')](_0x124cba[_0xc374('0x3f')][_0xc374('0x52')]));_0x1b42cc['attributes']=_0x1b42cc[_0xc374('0x42')]['length']?_0x1b42cc['attributes']:_0x3bf48a['model'];if(_0x124cba['query'][_0xc374('0x4b')]){_0x1b42cc[_0xc374('0x4c')]=[{'all':!![]}];}_0x1b42cc=_[_0xc374('0x48')]({},_0x1b42cc,_0x124cba['options']);return db[_0xc374('0x39')][_0xc374('0x31')](_0x1b42cc)[_0xc374('0x35')](handleEntityNotFound(_0x323899,null))[_0xc374('0x35')](function(_0x44c4b0){if(_0x44c4b0){var _0x35e00c=_0x44c4b0[_0xc374('0x28')]({'plain':!![]});_0x35e00c=qs[_0xc374('0x5a')](_0x35e00c,['id',_0xc374('0x5b'),'updatedAt']);_0x124cba[_0xc374('0x5c')]=_['omit'](_0x124cba['body'],['id',_0xc374('0x5b'),_0xc374('0x5d')]);return db[_0xc374('0x39')]['create'](_[_0xc374('0x48')](_0x35e00c,_0x124cba['body']),{'include':_0x124cba[_0xc374('0x3f')][_0xc374('0x4b')]?[{'all':!![]}]:undefined})[_0xc374('0x35')](function(_0xb25583){var _0x5dd747=_0x124cba['user'][_0xc374('0x28')]({'plain':!![]});if(!_0x5dd747)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x5dd747[_0xc374('0x5e')]===_0xc374('0x54')){var _0x4120e1=_0xb25583['get']({'plain':!![]});var _0x155996=[{'name':_0xc374('0x29'),'value':_0xc374('0x55')},{'name':_0xc374('0x2a'),'value':_0xc374('0x56')}];var _0x725fa4=_['find'](_0x155996,[_0xc374('0x2e'),_0x4120e1[_0xc374('0x30')]])[_0xc374('0x32')];return db['UserProfileSection'][_0xc374('0x31')]({'where':{'name':_0x725fa4,'userProfileId':_0x5dd747[_0xc374('0x58')]},'raw':!![]})[_0xc374('0x35')](function(_0x13ee74){if(_0x13ee74&&_0x13ee74[_0xc374('0x5f')]===0x0){return db[_0xc374('0x33')]['create']({'name':_0x4120e1[_0xc374('0x32')],'resourceId':_0x4120e1['id'],'type':_0x13ee74['name'],'sectionId':_0x13ee74['id']},{})[_0xc374('0x35')](function(){return _0xb25583;});}else{return _0xb25583;}})[_0xc374('0x4f')](function(_0xd27f62){logger[_0xc374('0x36')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0xd27f62);throw _0xd27f62;});}return _0xb25583;});}})[_0xc374('0x35')](respondWithResult(_0x323899,0xc9))[_0xc374('0x4f')](handleError(_0x323899,null));};exports['update']=function(_0x33a9ff,_0x4ff044){if(_0x33a9ff[_0xc374('0x5c')]['id']){delete _0x33a9ff['body']['id'];}return db[_0xc374('0x39')][_0xc374('0x31')]({'where':{'id':_0x33a9ff[_0xc374('0x51')]['id']}})[_0xc374('0x35')](handleEntityNotFound(_0x4ff044,null))[_0xc374('0x35')](saveUpdates(_0x33a9ff[_0xc374('0x5c')],null))[_0xc374('0x35')](respondWithResult(_0x4ff044,null))[_0xc374('0x4f')](handleError(_0x4ff044,null));};exports[_0xc374('0x34')]=function(_0x4b742a,_0x20802a){return db[_0xc374('0x39')][_0xc374('0x31')]({'where':{'id':_0x4b742a[_0xc374('0x51')]['id']}})[_0xc374('0x35')](handleEntityNotFound(_0x20802a,null))[_0xc374('0x35')](removeEntity(_0x20802a,null))[_0xc374('0x4f')](handleError(_0x20802a,null));};exports[_0xc374('0x60')]=function(_0x540853,_0x64bde,_0x2ebad3){var _0x3d06c1={'raw':![],'where':{}};var _0x9a817={};var _0x13fd59={'count':0x0,'rows':[]};return db[_0xc374('0x39')][_0xc374('0x61')]({'where':{'id':_0x540853[_0xc374('0x51')]['id']}})['then'](handleEntityNotFound(_0x64bde,null))['then'](function(_0x3c4957){if(_0x3c4957){_0x9a817[_0xc374('0x3d')]=_[_0xc374('0x3e')](db['CmHopper']['rawAttributes']);_0x9a817[_0xc374('0x3f')]=_[_0xc374('0x3e')](_0x540853[_0xc374('0x3f')]);_0x9a817['filters']=_[_0xc374('0x41')](_0x9a817['model'],_0x9a817[_0xc374('0x3f')]);_0x3d06c1[_0xc374('0x42')]=_[_0xc374('0x41')](_0x9a817['model'],qs[_0xc374('0x52')](_0x540853['query'][_0xc374('0x52')]));_0x3d06c1[_0xc374('0x42')]=_0x3d06c1[_0xc374('0x42')][_0xc374('0x62')]?_0x3d06c1[_0xc374('0x42')]:_0x9a817['model'];if(!_0x540853[_0xc374('0x3f')][_0xc374('0x43')](_0xc374('0x63'))){_0x3d06c1[_0xc374('0x44')]=qs['limit'](_0x540853[_0xc374('0x3f')]['limit']);_0x3d06c1[_0xc374('0x1f')]=qs[_0xc374('0x1f')](_0x540853[_0xc374('0x3f')]['offset']);}_0x3d06c1[_0xc374('0x45')]=qs[_0xc374('0x46')](_0x540853[_0xc374('0x3f')][_0xc374('0x46')]);_0x3d06c1[_0xc374('0x47')]=qs['filters'](_[_0xc374('0x64')](_0x540853['query'],_0x9a817[_0xc374('0x40')]));_0x3d06c1['where'][_0xc374('0x65')]=_0x3c4957['id'];if(_0x540853[_0xc374('0x3f')][_0xc374('0x2b')]){_0x3d06c1[_0xc374('0x47')]=_['merge'](_0x3d06c1[_0xc374('0x47')],{'$or':_['map'](_0x3d06c1[_0xc374('0x42')],function(_0xbf9e6){var _0x181557={};_0x181557[_0xbf9e6]={'$like':'%'+_0x540853[_0xc374('0x3f')]['filter']+'%'};return _0x181557;})});}_0x3d06c1=_[_0xc374('0x48')]({},_0x3d06c1,_0x540853[_0xc374('0x4a')]);return db[_0xc374('0x66')]['count']({'where':_0x3d06c1[_0xc374('0x47')]})['then'](function(_0x5512d7){_0x13fd59[_0xc374('0x21')]=_0x5512d7;if(_0x540853[_0xc374('0x3f')]['includeAll']){_0x3d06c1[_0xc374('0x4c')]=[{'all':!![]}];}return db[_0xc374('0x66')][_0xc374('0x4d')](_0x3d06c1);})[_0xc374('0x35')](function(_0x1802f8){_0x13fd59[_0xc374('0x4e')]=_0x1802f8;return _0x13fd59;});}})['then'](respondWithFilteredResult(_0x64bde,_0x3d06c1))[_0xc374('0x4f')](handleError(_0x64bde,null));};exports[_0xc374('0x67')]=function(_0x340cb7,_0x3109ae,_0x548aba){var _0x2e6e14={'raw':!![],'where':{}};var _0x13fd85={};var _0x1b6a53={'count':0x0,'rows':[]};return db[_0xc374('0x39')][_0xc374('0x61')]({'where':{'id':_0x340cb7[_0xc374('0x51')]['id']}})['then'](handleEntityNotFound(_0x3109ae,null))[_0xc374('0x35')](function(_0x5731a7){if(_0x5731a7){_0x13fd85[_0xc374('0x3d')]=_[_0xc374('0x3e')](db[_0xc374('0x68')][_0xc374('0x3a')]);_0x13fd85['query']=_['keys'](_0x340cb7['query']);_0x13fd85[_0xc374('0x40')]=_[_0xc374('0x41')](_0x13fd85['model'],_0x13fd85[_0xc374('0x3f')]);_0x2e6e14['attributes']=_[_0xc374('0x41')](_0x13fd85[_0xc374('0x3d')],qs[_0xc374('0x52')](_0x340cb7[_0xc374('0x3f')]['fields']));_0x2e6e14[_0xc374('0x42')]=_0x2e6e14['attributes'][_0xc374('0x62')]?_0x2e6e14['attributes']:_0x13fd85[_0xc374('0x3d')];if(!_0x340cb7[_0xc374('0x3f')][_0xc374('0x43')]('nolimit')){_0x2e6e14[_0xc374('0x44')]=qs[_0xc374('0x44')](_0x340cb7[_0xc374('0x3f')][_0xc374('0x44')]);_0x2e6e14[_0xc374('0x1f')]=qs[_0xc374('0x1f')](_0x340cb7[_0xc374('0x3f')][_0xc374('0x1f')]);}_0x2e6e14['order']=qs['sort'](_0x340cb7[_0xc374('0x3f')][_0xc374('0x46')]);_0x2e6e14[_0xc374('0x47')]=qs[_0xc374('0x40')](_['pick'](_0x340cb7[_0xc374('0x3f')],_0x13fd85[_0xc374('0x40')]));_0x2e6e14[_0xc374('0x47')][_0xc374('0x65')]=_0x5731a7['id'];if(_0x340cb7[_0xc374('0x3f')][_0xc374('0x2b')]){_0x2e6e14[_0xc374('0x47')]=_[_0xc374('0x48')](_0x2e6e14[_0xc374('0x47')],{'$or':_[_0xc374('0x2d')](_0x2e6e14['attributes'],function(_0x5a697b){var _0x16d1fb={};_0x16d1fb[_0x5a697b]={'$like':'%'+_0x340cb7['query'][_0xc374('0x2b')]+'%'};return _0x16d1fb;})});}_0x2e6e14=_[_0xc374('0x48')]({},_0x2e6e14,_0x340cb7[_0xc374('0x4a')]);return db[_0xc374('0x68')][_0xc374('0x21')]({'where':_0x2e6e14[_0xc374('0x47')]})[_0xc374('0x35')](function(_0x4b5b6e){_0x1b6a53[_0xc374('0x21')]=_0x4b5b6e;if(_0x340cb7[_0xc374('0x3f')][_0xc374('0x4b')]){_0x2e6e14[_0xc374('0x4c')]=[{'all':!![]}];}return db['CmHopperHistory'][_0xc374('0x4d')](_0x2e6e14);})[_0xc374('0x35')](function(_0x36d1d3){_0x1b6a53['rows']=_0x36d1d3;return _0x1b6a53;});}})['then'](respondWithFilteredResult(_0x3109ae,_0x2e6e14))[_0xc374('0x4f')](handleError(_0x3109ae,null));};exports['getHopperFinals']=function(_0x1e8706,_0x36c28a,_0x15ca9a){var _0xbf3fcd={'raw':!![],'where':{}};var _0x1eb5dd={};var _0x36f486={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xc374('0x61')]({'where':{'id':_0x1e8706[_0xc374('0x51')]['id']}})['then'](handleEntityNotFound(_0x36c28a,null))[_0xc374('0x35')](function(_0x22eef5){if(_0x22eef5){_0x1eb5dd[_0xc374('0x3d')]=_[_0xc374('0x3e')](db[_0xc374('0x69')][_0xc374('0x3a')]);_0x1eb5dd['query']=_[_0xc374('0x3e')](_0x1e8706[_0xc374('0x3f')]);_0x1eb5dd[_0xc374('0x40')]=_['intersection'](_0x1eb5dd[_0xc374('0x3d')],_0x1eb5dd[_0xc374('0x3f')]);_0xbf3fcd[_0xc374('0x42')]=_['intersection'](_0x1eb5dd[_0xc374('0x3d')],qs['fields'](_0x1e8706[_0xc374('0x3f')][_0xc374('0x52')]));_0xbf3fcd[_0xc374('0x42')]=_0xbf3fcd[_0xc374('0x42')]['length']?_0xbf3fcd['attributes']:_0x1eb5dd[_0xc374('0x3d')];if(!_0x1e8706[_0xc374('0x3f')]['hasOwnProperty'](_0xc374('0x63'))){_0xbf3fcd['limit']=qs[_0xc374('0x44')](_0x1e8706[_0xc374('0x3f')][_0xc374('0x44')]);_0xbf3fcd[_0xc374('0x1f')]=qs['offset'](_0x1e8706[_0xc374('0x3f')][_0xc374('0x1f')]);}_0xbf3fcd[_0xc374('0x45')]=qs[_0xc374('0x46')](_0x1e8706['query'][_0xc374('0x46')]);_0xbf3fcd[_0xc374('0x47')]=qs['filters'](_[_0xc374('0x64')](_0x1e8706['query'],_0x1eb5dd[_0xc374('0x40')]));_0xbf3fcd[_0xc374('0x47')][_0xc374('0x65')]=_0x22eef5['id'];if(_0x1e8706['query']['filter']){_0xbf3fcd[_0xc374('0x47')]=_[_0xc374('0x48')](_0xbf3fcd['where'],{'$or':_[_0xc374('0x2d')](_0xbf3fcd['attributes'],function(_0x45938b){var _0xc0ead4={};_0xc0ead4[_0x45938b]={'$like':'%'+_0x1e8706[_0xc374('0x3f')]['filter']+'%'};return _0xc0ead4;})});}_0xbf3fcd=_[_0xc374('0x48')]({},_0xbf3fcd,_0x1e8706['options']);return db['CmHopperFinal'][_0xc374('0x21')]({'where':_0xbf3fcd['where']})[_0xc374('0x35')](function(_0x2afdfb){_0x36f486[_0xc374('0x21')]=_0x2afdfb;if(_0x1e8706[_0xc374('0x3f')][_0xc374('0x4b')]){_0xbf3fcd[_0xc374('0x4c')]=[{'all':!![]}];}return db[_0xc374('0x69')][_0xc374('0x4d')](_0xbf3fcd);})['then'](function(_0x27c84d){_0x36f486[_0xc374('0x4e')]=_0x27c84d;return _0x36f486;});}})[_0xc374('0x35')](respondWithFilteredResult(_0x36c28a,_0xbf3fcd))[_0xc374('0x4f')](handleError(_0x36c28a,null));};exports[_0xc374('0x6a')]=function(_0x112853,_0x42e638,_0x35b715){var _0x281786={'raw':!![],'where':{}};var _0x7af6a3={};var _0x2a5c42={'count':0x0,'rows':[]};return db['VoiceQueue'][_0xc374('0x61')]({'where':{'id':_0x112853['params']['id']}})[_0xc374('0x35')](handleEntityNotFound(_0x42e638,null))['then'](function(_0xd2652d){if(_0xd2652d){_0x7af6a3['model']=_['keys'](db[_0xc374('0x6b')][_0xc374('0x3a')]);_0x7af6a3['query']=_[_0xc374('0x3e')](_0x112853[_0xc374('0x3f')]);_0x7af6a3[_0xc374('0x40')]=_['intersection'](_0x7af6a3['model'],_0x7af6a3['query']);_0x281786[_0xc374('0x42')]=_[_0xc374('0x41')](_0x7af6a3[_0xc374('0x3d')],qs['fields'](_0x112853['query'][_0xc374('0x52')]));_0x281786['attributes']=_0x281786[_0xc374('0x42')][_0xc374('0x62')]?_0x281786['attributes']:_0x7af6a3[_0xc374('0x3d')];if(!_0x112853['query']['hasOwnProperty'](_0xc374('0x63'))){_0x281786[_0xc374('0x44')]=qs[_0xc374('0x44')](_0x112853[_0xc374('0x3f')]['limit']);_0x281786[_0xc374('0x1f')]=qs[_0xc374('0x1f')](_0x112853[_0xc374('0x3f')]['offset']);}_0x281786[_0xc374('0x45')]=qs['sort'](_0x112853[_0xc374('0x3f')][_0xc374('0x46')]);_0x281786[_0xc374('0x47')]=qs[_0xc374('0x40')](_[_0xc374('0x64')](_0x112853[_0xc374('0x3f')],_0x7af6a3['filters']));_0x281786[_0xc374('0x47')]['VoiceQueueId']=_0xd2652d['id'];if(_0x112853[_0xc374('0x3f')][_0xc374('0x2b')]){_0x281786['where']=_['merge'](_0x281786[_0xc374('0x47')],{'$or':_[_0xc374('0x2d')](_0x281786[_0xc374('0x42')],function(_0x49ee4e){var _0x596daa={};_0x596daa[_0x49ee4e]={'$like':'%'+_0x112853[_0xc374('0x3f')][_0xc374('0x2b')]+'%'};return _0x596daa;})});}_0x281786=_[_0xc374('0x48')]({},_0x281786,_0x112853['options']);return db[_0xc374('0x6b')]['count']({'where':_0x281786[_0xc374('0x47')]})[_0xc374('0x35')](function(_0xe35272){_0x2a5c42['count']=_0xe35272;if(_0x112853[_0xc374('0x3f')]['includeAll']){_0x281786[_0xc374('0x4c')]=[{'all':!![]}];}return db['CmHopperBlack'][_0xc374('0x4d')](_0x281786);})[_0xc374('0x35')](function(_0x4ef27b){_0x2a5c42[_0xc374('0x4e')]=_0x4ef27b;return _0x2a5c42;});}})[_0xc374('0x35')](respondWithFilteredResult(_0x42e638,_0x281786))[_0xc374('0x4f')](handleError(_0x42e638,null));};exports[_0xc374('0x6c')]=function(_0xbeefcb,_0xaa8713,_0x28e4aa){var _0x56c374={};var _0x1f82da={};var _0x38a0dd;var _0x5e1503;return db[_0xc374('0x39')][_0xc374('0x61')]({'where':{'id':_0xbeefcb[_0xc374('0x51')]['id']}})[_0xc374('0x35')](handleEntityNotFound(_0xaa8713,null))[_0xc374('0x35')](function(_0x538ab4){if(_0x538ab4){_0x38a0dd=_0x538ab4;_0x1f82da[_0xc374('0x3d')]=_['keys'](db[_0xc374('0x6d')]['rawAttributes']);_0x1f82da[_0xc374('0x3f')]=_[_0xc374('0x3e')](_0xbeefcb['query']);_0x1f82da[_0xc374('0x40')]=_[_0xc374('0x41')](_0x1f82da[_0xc374('0x3d')],_0x1f82da[_0xc374('0x3f')]);_0x56c374[_0xc374('0x42')]=_[_0xc374('0x41')](_0x1f82da[_0xc374('0x3d')],qs[_0xc374('0x52')](_0xbeefcb[_0xc374('0x3f')][_0xc374('0x52')]));_0x56c374[_0xc374('0x42')]=_0x56c374[_0xc374('0x42')][_0xc374('0x62')]?_0x56c374['attributes']:_0x1f82da[_0xc374('0x3d')];_0x56c374[_0xc374('0x45')]=qs['sort'](_0xbeefcb[_0xc374('0x3f')][_0xc374('0x46')]);_0x56c374[_0xc374('0x47')]=qs[_0xc374('0x40')](_[_0xc374('0x64')](_0xbeefcb['query'],_0x1f82da[_0xc374('0x40')]));if(_0xbeefcb[_0xc374('0x3f')][_0xc374('0x2b')]){_0x56c374[_0xc374('0x47')]=_['merge'](_0x56c374[_0xc374('0x47')],{'$or':_[_0xc374('0x2d')](_0x56c374[_0xc374('0x42')],function(_0x39cb0f){var _0x4c01e6={};_0x4c01e6[_0x39cb0f]={'$like':'%'+_0xbeefcb[_0xc374('0x3f')][_0xc374('0x2b')]+'%'};return _0x4c01e6;})});}_0x56c374=_[_0xc374('0x48')]({},_0x56c374,_0xbeefcb[_0xc374('0x4a')]);return _0x38a0dd[_0xc374('0x6c')](_0x56c374);}})['then'](function(_0x95e850){if(_0x95e850){_0x5e1503=_0x95e850[_0xc374('0x62')];if(!_0xbeefcb['query'][_0xc374('0x43')](_0xc374('0x63'))){_0x56c374[_0xc374('0x44')]=qs['limit'](_0xbeefcb[_0xc374('0x3f')][_0xc374('0x44')]);_0x56c374[_0xc374('0x1f')]=qs['offset'](_0xbeefcb[_0xc374('0x3f')][_0xc374('0x1f')]);}return _0x38a0dd[_0xc374('0x6c')](_0x56c374);}})['then'](function(_0x24acad){if(_0x24acad){return _0x24acad?{'count':_0x5e1503,'rows':_0x24acad}:null;}})[_0xc374('0x35')](respondWithResult(_0xaa8713,null))[_0xc374('0x4f')](handleError(_0xaa8713,null));};exports[_0xc374('0x6e')]=function(_0x3d6df0,_0x498921,_0x5bde8c){var _0x1f98c2=_0x3d6df0[_0xc374('0x5c')][_0xc374('0x6f')];var _0x357b16=_[_0xc374('0x2d')](_0x1f98c2,'id');return db[_0xc374('0x6d')][_0xc374('0x4d')]({'where':{'id':_0x357b16},'attributes':['id'],'include':[{'model':db[_0xc374('0x70')],'as':_0xc374('0x71'),'attributes':['id',_0xc374('0x32'),'online',_0xc374('0x72'),_0xc374('0x73')],'raw':!![]}]})[_0xc374('0x35')](function(_0x200620){if(_0x200620){var _0x1c3b72=_['flatMap'](_0x200620,function(_0x91a2c7){var _0xc5ab54=_0x91a2c7[_0xc374('0x28')]({'plain':!![]});_0xc5ab54[_0xc374('0x71')][_0xc374('0x74')](function(_0x3de492){_0x3de492['penalty']=_[_0xc374('0x31')](_0x1f98c2,{'id':_0xc5ab54['id']})[_0xc374('0x75')];});return _0xc5ab54[_0xc374('0x71')];});return db[_0xc374('0x39')]['find']({'where':{'id':_0x3d6df0[_0xc374('0x51')]['id']}})[_0xc374('0x35')](function(_0x5889c4){return db[_0xc374('0x76')]['transaction'](function(_0x12eee5){return _0x5889c4[_0xc374('0x6e')](_0x357b16,{'transaction':_0x12eee5})[_0xc374('0x35')](function(){return BPromise[_0xc374('0x77')](_0x1f98c2,function(_0x379fed){return db[_0xc374('0x78')][_0xc374('0x79')]({'TeamId':_0x379fed['id'],'VoiceQueueId':_0x3d6df0['params']['id'],'penalty':_0x379fed[_0xc374('0x75')]},{'transaction':_0x12eee5});});})[_0xc374('0x35')](function(){return BPromise[_0xc374('0x77')](_0x1c3b72,function(_0x4f69f6){return db['UserVoiceQueue']['findOrCreate']({'where':{'UserId':_0x4f69f6['id'],'VoiceQueueId':_0x3d6df0[_0xc374('0x51')]['id']},'defaults':{'penalty':_0x4f69f6[_0xc374('0x75')]},'transaction':_0x12eee5});});})[_0xc374('0x35')](function(){return BPromise['each'](_[_0xc374('0x2b')](_0x1c3b72,{'online':!![]}),function(_0x36237f){return db[_0xc374('0x7a')][_0xc374('0x79')]({'membername':_0x36237f[_0xc374('0x32')],'UserId':_0x36237f['id'],'queue_name':_0x5889c4[_0xc374('0x32')],'VoiceQueueId':_0x5889c4['id'],'interface':_['isNil'](_0x36237f[_0xc374('0x73')])?util['format'](_0xc374('0x7b'),_0x36237f[_0xc374('0x32')]):_0x36237f[_0xc374('0x73')],'paused':_0x36237f[_0xc374('0x72')]||![],'penalty':_0x36237f[_0xc374('0x75')]},{'transaction':_0x12eee5});});})[_0xc374('0x35')](function(){_0x1c3b72[_0xc374('0x74')](function(_0x5cf411){socket[_0xc374('0x7c')](_0xc374('0x7d'),{'UserId':_0x5cf411['id'],'VoiceQueueId':_0x5889c4['id']});});});});});}})[_0xc374('0x35')](respondWithStatusCode(_0x498921,null))[_0xc374('0x4f')](handleError(_0x498921,null));};exports[_0xc374('0x7e')]=function(_0x4c79cd,_0x43e8a6,_0x300eda){return db[_0xc374('0x6d')][_0xc374('0x4d')]({'where':{'id':_0x4c79cd[_0xc374('0x3f')][_0xc374('0x7f')]},'attributes':['id'],'include':[{'model':db[_0xc374('0x70')],'as':_0xc374('0x71'),'attributes':['id'],'raw':!![]}]})[_0xc374('0x35')](handleEntityNotFound(_0x43e8a6,null))[_0xc374('0x35')](function(_0x3a6e02){var _0x3758be=_[_0xc374('0x2d')](_0x3a6e02,'id');var _0x5362c0=[];var _0x5a62f9=[];var _0x2f5cc4=squel['select']();_0x2f5cc4[_0xc374('0x80')](_0xc374('0x81'))[_0xc374('0x82')](_0xc374('0x83'),'tq')['join'](_0xc374('0x84'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xc374('0x47')]('VoiceQueueId\x20=\x20?',_0x4c79cd[_0xc374('0x51')]['id']);for(var _0x42e034=0x0;_0x42e034<_0x3a6e02[_0xc374('0x62')];_0x42e034+=0x1){let _0x2a9382=_0x3a6e02[_0x42e034];for(var _0x262d77=0x0;_0x262d77<_0x2a9382[_0xc374('0x71')][_0xc374('0x62')];_0x262d77+=0x1){let _0x38b10f=_0x2a9382[_0xc374('0x71')][_0x262d77];var _0x47ca04=_0x2f5cc4[_0xc374('0x85')]();_0x47ca04['where'](_0xc374('0x86'),_0x38b10f['id']);_0x5a62f9[_0xc374('0x87')](db[_0xc374('0x76')][_0xc374('0x3f')](_0x47ca04['toString'](),{'type':db[_0xc374('0x76')][_0xc374('0x88')]['SELECT']})[_0xc374('0x35')](function(_0x3a9fb6){if(_0x3a9fb6[_0xc374('0x62')]===0x1){return _0x38b10f['id'];}else{var _0x39e37f=_[_0xc374('0x89')](_[_0xc374('0x2d')](_0x3a9fb6,_0xc374('0x8a')),function(_0x591767){return _[_0xc374('0x2f')](_0x3758be,_0x591767);});if(_0x39e37f){return _0x38b10f['id'];}}}));}}return BPromise[_0xc374('0x8b')](_0x5a62f9)[_0xc374('0x35')](function(_0x15606a){_0x5362c0=_(_0x5362c0)[_0xc374('0x8c')](_0x15606a)[_0xc374('0x8d')]()[_0xc374('0x2e')]();return db[_0xc374('0x39')][_0xc374('0x31')]({'where':{'id':_0x4c79cd[_0xc374('0x51')]['id']}})[_0xc374('0x35')](function(_0x2225bc){return db[_0xc374('0x76')][_0xc374('0x8e')](function(_0x59a9b4){return _0x2225bc[_0xc374('0x7e')](_0x4c79cd[_0xc374('0x3f')][_0xc374('0x7f')],{'transaction':_0x59a9b4})[_0xc374('0x35')](function(){if(!_['isEmpty'](_0x5362c0)){return _0x2225bc['removeAgents'](_0x5362c0,{'transaction':_0x59a9b4})[_0xc374('0x35')](function(){return db[_0xc374('0x7a')][_0xc374('0x34')]({'where':{'VoiceQueueId':_0x4c79cd[_0xc374('0x51')]['id'],'UserId':_0x5362c0},'transaction':_0x59a9b4});});}})[_0xc374('0x35')](function(){_0x5362c0[_0xc374('0x74')](function(_0x389a56){socket[_0xc374('0x7c')](_0xc374('0x8f'),{'UserId':_0x389a56,'VoiceQueueId':_0x2225bc['id']});});});});});});})['then'](respondWithStatusCode(_0x43e8a6,null))[_0xc374('0x4f')](handleError(_0x43e8a6,null));};exports[_0xc374('0x90')]=function(_0x102698,_0x1c2250,_0x24a092){var _0x2acf25,_0xb2ee8;return db[_0xc374('0x39')][_0xc374('0x31')]({'where':{'id':_0x102698[_0xc374('0x51')]['id']}})[_0xc374('0x35')](handleEntityNotFound(_0x1c2250,null))[_0xc374('0x35')](function(_0x493aa3){if(_0x493aa3){_0xb2ee8=_0x493aa3;return _0x493aa3[_0xc374('0x90')](_0x102698['body'][_0xc374('0x7f')],_[_0xc374('0x5a')](_0x102698[_0xc374('0x5c')],[_0xc374('0x7f'),'id'])||{})['spread'](function(_0x783121){for(var _0x4228c7=0x0;_0x4228c7<_0x102698[_0xc374('0x5c')][_0xc374('0x7f')][_0xc374('0x62')];_0x4228c7+=0x1){socket[_0xc374('0x7c')]('userVoiceQueue:save',{'UserId':Number(_0x102698[_0xc374('0x5c')][_0xc374('0x7f')][_0x4228c7]),'VoiceQueueId':Number(_0x102698[_0xc374('0x51')]['id'])});}return _0x783121;});}})['then'](function(_0x2a254f){_0x2acf25=_0x2a254f||[];if(_0xb2ee8){return db[_0xc374('0x70')][_0xc374('0x4d')]({'where':{'id':_0x102698['body']['ids']},'attributes':['id','name',_0xc374('0x91'),_0xc374('0x72'),'interface'],'raw':!![]});}})['then'](function(_0x21d6ad){if(!_[_0xc374('0x92')](_0x21d6ad)){var _0x58d80a=[];for(var _0x453c8a=0x0;_0x453c8a<_0x21d6ad[_0xc374('0x62')];_0x453c8a++){if(_0x21d6ad[_0x453c8a][_0xc374('0x91')]){_0x58d80a[_0xc374('0x87')](db['UserVoiceQueueRt'][_0xc374('0x79')]({'membername':_0x21d6ad[_0x453c8a][_0xc374('0x32')],'UserId':_0x21d6ad[_0x453c8a]['id'],'queue_name':_0xb2ee8['name'],'VoiceQueueId':_0xb2ee8['id'],'interface':_[_0xc374('0x93')](_0x21d6ad[_0x453c8a][_0xc374('0x73')])?util[_0xc374('0x94')]('SIP/%s',_0x21d6ad[_0x453c8a][_0xc374('0x32')]):_0x21d6ad[_0x453c8a][_0xc374('0x73')],'paused':_0x21d6ad[_0x453c8a][_0xc374('0x72')]||![],'penalty':_0x102698[_0xc374('0x5c')][_0xc374('0x75')]||0x0}));}}return BPromise['all'](_0x58d80a);}})['then'](function(){return _0x2acf25;})['then'](respondWithResult(_0x1c2250,null))[_0xc374('0x4f')](handleError(_0x1c2250,null));};exports['removeAgents']=function(_0x1c09db,_0x2b00ec,_0x12d80a){return db[_0xc374('0x39')][_0xc374('0x31')]({'where':{'id':_0x1c09db[_0xc374('0x51')]['id']}})[_0xc374('0x35')](handleEntityNotFound(_0x2b00ec,null))[_0xc374('0x35')](function(_0x5cbdce){if(_0x5cbdce){return _0x5cbdce['removeAgents'](_0x1c09db[_0xc374('0x3f')]['ids'])[_0xc374('0x35')](function(){if(_[_0xc374('0x95')](_0x1c09db[_0xc374('0x3f')][_0xc374('0x7f')])){for(var _0x41bebd=0x0;_0x41bebd<_0x1c09db[_0xc374('0x3f')]['ids'][_0xc374('0x62')];_0x41bebd+=0x1){socket['emit'](_0xc374('0x8f'),{'UserId':Number(_0x1c09db['query'][_0xc374('0x7f')][_0x41bebd]),'VoiceQueueId':Number(_0x1c09db[_0xc374('0x51')]['id'])});}}else{socket[_0xc374('0x7c')](_0xc374('0x8f'),{'UserId':Number(_0x1c09db[_0xc374('0x3f')][_0xc374('0x7f')]),'VoiceQueueId':Number(_0x1c09db[_0xc374('0x51')]['id'])});}});}})[_0xc374('0x35')](function(_0x10dd49){return db[_0xc374('0x7a')][_0xc374('0x34')]({'where':{'VoiceQueueId':_0x1c09db[_0xc374('0x51')]['id'],'UserId':_0x1c09db['query'][_0xc374('0x7f')]}})[_0xc374('0x35')](function(){return _0x10dd49;});})[_0xc374('0x35')](respondWithStatusCode(_0x2b00ec,null))[_0xc374('0x4f')](handleError(_0x2b00ec,null));};exports['getAgents']=function(_0x4b1a9c,_0x14baf6,_0x54d0b7){var _0x15c93e={};var _0x1b076f={};var _0x33a0a7;var _0x577ece;return db['VoiceQueue']['findOne']({'where':{'id':_0x4b1a9c['params']['id']}})[_0xc374('0x35')](handleEntityNotFound(_0x14baf6,null))['then'](function(_0x41f92b){if(_0x41f92b){_0x33a0a7=_0x41f92b;_0x1b076f['model']=_[_0xc374('0x3e')](db['User'][_0xc374('0x3a')]);_0x1b076f[_0xc374('0x3f')]=_[_0xc374('0x3e')](_0x4b1a9c['query']);_0x1b076f[_0xc374('0x40')]=_['intersection'](_0x1b076f[_0xc374('0x3d')],_0x1b076f['query']);_0x15c93e[_0xc374('0x42')]=_[_0xc374('0x41')](_0x1b076f[_0xc374('0x3d')],qs[_0xc374('0x52')](_0x4b1a9c['query']['fields']));_0x15c93e[_0xc374('0x42')]=_0x15c93e[_0xc374('0x42')][_0xc374('0x62')]?_0x15c93e['attributes']:_0x1b076f['model'];_0x15c93e[_0xc374('0x45')]=qs[_0xc374('0x46')](_0x4b1a9c[_0xc374('0x3f')][_0xc374('0x46')]);_0x15c93e[_0xc374('0x47')]=qs[_0xc374('0x40')](_[_0xc374('0x64')](_0x4b1a9c[_0xc374('0x3f')],_0x1b076f['filters']));if(_0x4b1a9c[_0xc374('0x3f')][_0xc374('0x2b')]){_0x15c93e['where']=_[_0xc374('0x48')](_0x15c93e[_0xc374('0x47')],{'$or':_[_0xc374('0x2d')](_0x15c93e[_0xc374('0x42')],function(_0x131528){var _0x4a956d={};_0x4a956d[_0x131528]={'$like':'%'+_0x4b1a9c['query'][_0xc374('0x2b')]+'%'};return _0x4a956d;})});}_0x15c93e=_[_0xc374('0x48')]({},_0x15c93e,_0x4b1a9c[_0xc374('0x4a')]);return _0x33a0a7['getAgents'](_0x15c93e);}})[_0xc374('0x35')](function(_0x741bef){if(_0x741bef){_0x577ece=_0x741bef[_0xc374('0x62')];if(!_0x4b1a9c['query']['hasOwnProperty'](_0xc374('0x63'))){_0x15c93e[_0xc374('0x44')]=qs[_0xc374('0x44')](_0x4b1a9c['query'][_0xc374('0x44')]);_0x15c93e[_0xc374('0x1f')]=qs[_0xc374('0x1f')](_0x4b1a9c[_0xc374('0x3f')][_0xc374('0x1f')]);}return _0x33a0a7[_0xc374('0x96')](_0x15c93e);}})[_0xc374('0x35')](function(_0x5037c1){if(_0x5037c1){return _0x5037c1?{'count':_0x577ece,'rows':_0x5037c1}:null;}})[_0xc374('0x35')](respondWithResult(_0x14baf6,null))['catch'](handleError(_0x14baf6,null));};exports[_0xc374('0x97')]=function(_0x426499,_0x1c0f7a,_0x5ac53b){var _0x170dee={};var _0x517069={};var _0x1220fc;var _0x3205f9;return db[_0xc374('0x39')][_0xc374('0x61')]({'where':{'id':_0x426499[_0xc374('0x51')]['id']}})[_0xc374('0x35')](handleEntityNotFound(_0x1c0f7a,null))['then'](function(_0x2a464c){if(_0x2a464c){_0x1220fc=_0x2a464c;_0x517069[_0xc374('0x3d')]=_[_0xc374('0x3e')](db[_0xc374('0x7a')][_0xc374('0x3a')]);_0x517069['query']=_[_0xc374('0x3e')](_0x426499['query']);_0x517069[_0xc374('0x40')]=_[_0xc374('0x41')](_0x517069[_0xc374('0x3d')],_0x517069[_0xc374('0x3f')]);_0x170dee['attributes']=_[_0xc374('0x41')](_0x517069[_0xc374('0x3d')],qs['fields'](_0x426499[_0xc374('0x3f')][_0xc374('0x52')]));_0x170dee[_0xc374('0x42')]=_0x170dee['attributes']['length']?_0x170dee[_0xc374('0x42')]:_0x517069[_0xc374('0x3d')];_0x170dee[_0xc374('0x45')]=qs[_0xc374('0x46')](_0x426499[_0xc374('0x3f')][_0xc374('0x46')]);_0x170dee[_0xc374('0x47')]=qs[_0xc374('0x40')](_[_0xc374('0x64')](_0x426499[_0xc374('0x3f')],_0x517069[_0xc374('0x40')]));if(_0x426499[_0xc374('0x3f')][_0xc374('0x2b')]){_0x170dee[_0xc374('0x47')]=_[_0xc374('0x48')](_0x170dee[_0xc374('0x47')],{'$or':_[_0xc374('0x2d')](_0x170dee[_0xc374('0x42')],function(_0x3f1c2e){var _0x18674d={};_0x18674d[_0x3f1c2e]={'$like':'%'+_0x426499[_0xc374('0x3f')][_0xc374('0x2b')]+'%'};return _0x18674d;})});}_0x170dee=_[_0xc374('0x48')]({},_0x170dee,_0x426499[_0xc374('0x4a')]);return _0x1220fc[_0xc374('0x97')](_0x170dee);}})[_0xc374('0x35')](function(_0x1e5734){if(_0x1e5734){_0x3205f9=_0x1e5734[_0xc374('0x62')];if(!_0x426499[_0xc374('0x3f')][_0xc374('0x43')](_0xc374('0x63'))){_0x170dee[_0xc374('0x44')]=qs[_0xc374('0x44')](_0x426499[_0xc374('0x3f')][_0xc374('0x44')]);_0x170dee[_0xc374('0x1f')]=qs['offset'](_0x426499[_0xc374('0x3f')][_0xc374('0x1f')]);}return _0x1220fc[_0xc374('0x97')](_0x170dee);}})[_0xc374('0x35')](function(_0x282be){return _0x282be?{'count':_0x3205f9,'rows':_0x282be}:null;})[_0xc374('0x35')](respondWithResult(_0x1c0f7a,null))[_0xc374('0x4f')](handleError(_0x1c0f7a,null));};exports[_0xc374('0x98')]=function(_0x4679de,_0x3f7d78,_0x36c524){var _0x551be3={};var _0x1bb0b5={};var _0x5b4e4b;var _0x5e701f;return db[_0xc374('0x39')]['findOne']({'where':{'id':_0x4679de[_0xc374('0x51')]['id']}})['then'](handleEntityNotFound(_0x3f7d78,null))[_0xc374('0x35')](function(_0x1b35a8){if(_0x1b35a8){_0x5b4e4b=_0x1b35a8;_0x1bb0b5[_0xc374('0x3d')]=_[_0xc374('0x3e')](db[_0xc374('0x99')][_0xc374('0x3a')]);_0x1bb0b5[_0xc374('0x3f')]=_['keys'](_0x4679de[_0xc374('0x3f')]);_0x1bb0b5[_0xc374('0x40')]=_[_0xc374('0x41')](_0x1bb0b5['model'],_0x1bb0b5['query']);_0x551be3['attributes']=_[_0xc374('0x41')](_0x1bb0b5[_0xc374('0x3d')],qs['fields'](_0x4679de['query'][_0xc374('0x52')]));_0x551be3[_0xc374('0x42')]=_0x551be3[_0xc374('0x42')]['length']?_0x551be3[_0xc374('0x42')]:_0x1bb0b5['model'];_0x551be3[_0xc374('0x45')]=qs[_0xc374('0x46')](_0x4679de[_0xc374('0x3f')][_0xc374('0x46')]);_0x551be3[_0xc374('0x47')]=qs[_0xc374('0x40')](_[_0xc374('0x64')](_0x4679de[_0xc374('0x3f')],_0x1bb0b5['filters']));if(_0x4679de[_0xc374('0x3f')][_0xc374('0x2b')]){_0x551be3[_0xc374('0x47')]=_[_0xc374('0x48')](_0x551be3[_0xc374('0x47')],{'$or':_['map'](_0x551be3['attributes'],function(_0x2ea34b){var _0x3f0119={};_0x3f0119[_0x2ea34b]={'$like':'%'+_0x4679de[_0xc374('0x3f')]['filter']+'%'};return _0x3f0119;})});}_0x551be3=_[_0xc374('0x48')]({},_0x551be3,_0x4679de[_0xc374('0x4a')]);return _0x5b4e4b[_0xc374('0x98')](_0x551be3);}})['then'](function(_0x15f2d0){if(_0x15f2d0){_0x5e701f=_0x15f2d0['length'];if(!_0x4679de[_0xc374('0x3f')][_0xc374('0x43')](_0xc374('0x63'))){_0x551be3[_0xc374('0x44')]=qs[_0xc374('0x44')](_0x4679de['query'][_0xc374('0x44')]);_0x551be3['offset']=qs[_0xc374('0x1f')](_0x4679de[_0xc374('0x3f')][_0xc374('0x1f')]);}return _0x5b4e4b[_0xc374('0x98')](_0x551be3);}})[_0xc374('0x35')](function(_0x40af76){if(_0x40af76){return _0x40af76?{'count':_0x5e701f,'rows':_0x40af76}:null;}})[_0xc374('0x35')](respondWithResult(_0x3f7d78,null))[_0xc374('0x4f')](handleError(_0x3f7d78,null));};exports[_0xc374('0x9a')]=function(_0x5fb83d,_0x57793a,_0x1f68dc){var _0x515908=moment()[_0xc374('0x94')](_0xc374('0x9b'));var _0x55f471,_0x553f27;return db[_0xc374('0x39')][_0xc374('0x31')]({'where':{'id':_0x5fb83d['params']['id']}})[_0xc374('0x35')](handleEntityNotFound(_0x57793a,null))[_0xc374('0x35')](function(_0x41828c){if(_0x41828c){_0x553f27=_0x41828c;return _0x41828c['addLists'](_0x5fb83d[_0xc374('0x5c')]['ids'],_[_0xc374('0x5a')](_0x5fb83d[_0xc374('0x5c')],[_0xc374('0x7f'),'id'])||{});}return null;})[_0xc374('0x9c')](function(_0x402bc4){var _0x14ee40;_0x55f471=_0x402bc4||[];var _0x39473e=[];if(_0x402bc4){for(var _0x2c15a1=0x0;_0x2c15a1<_0x402bc4[_0xc374('0x62')];_0x2c15a1+=0x1){var _0x1ae9ec=_0x402bc4[_0x2c15a1][_0xc374('0x28')]({'plain':!![]});_0x553f27[_0xc374('0x9d')]=_0x5fb83d[_0xc374('0x5c')][_0xc374('0x9d')]?_0x5fb83d[_0xc374('0x5c')][_0xc374('0x9d')]:_0x553f27['dialCheckDuplicateType'];switch(_0x553f27[_0xc374('0x9d')]){case'always':_0x14ee40=squel[_0xc374('0x9e')]()['into']('cm_hopper')[_0xc374('0x9f')](['phone',_0xc374('0xa0'),_0xc374('0xa1'),'ListId',_0xc374('0x65'),_0xc374('0x5b'),_0xc374('0x5d')],squel[_0xc374('0xa2')]()[_0xc374('0x80')]('phone','phone')[_0xc374('0x80')]('\x27'+_0x515908+'\x27',_0xc374('0xa0'))[_0xc374('0x80')]('id',_0xc374('0xa1'))[_0xc374('0x80')](_0x1ae9ec[_0xc374('0xa3')]['toString'](),'ListId')[_0xc374('0x80')](_0x5fb83d[_0xc374('0x51')]['id'][_0xc374('0xa4')](),_0xc374('0x65'))[_0xc374('0x80')]('\x27'+_0x515908+'\x27',_0xc374('0x5b'))['field']('\x27'+_0x515908+'\x27',_0xc374('0x5d'))[_0xc374('0x82')](_0xc374('0xa5'))['where']('deletedAt\x20IS\x20NULL')[_0xc374('0x47')](_0xc374('0xa6'),_0x1ae9ec[_0xc374('0xa3')][_0xc374('0xa4')]())[_0xc374('0x47')](_0xc374('0xa7'))['where'](_0xc374('0xa8'),squel[_0xc374('0xa2')]()[_0xc374('0x80')](_0xc374('0xa9'))[_0xc374('0x82')]('cm_hopper_final')[_0xc374('0x47')](_0xc374('0xaa'),_0x5fb83d['params']['id'][_0xc374('0xa4')]()))[_0xc374('0x47')](_0xc374('0xa8'),squel[_0xc374('0xa2')]()[_0xc374('0x80')](_0xc374('0xab'))['from'](_0xc374('0xac'))[_0xc374('0x47')](_0xc374('0xaa'),_0x5fb83d[_0xc374('0x51')]['id'][_0xc374('0xa4')]())))['toString']();break;case _0xc374('0xad'):_0x14ee40=squel['insert']()[_0xc374('0xae')]('cm_hopper')[_0xc374('0x9f')]([_0xc374('0xaf'),_0xc374('0xa0'),_0xc374('0xa1'),_0xc374('0xb0'),'VoiceQueueId',_0xc374('0x5b'),_0xc374('0x5d')],squel[_0xc374('0xa2')]()['field']('phone',_0xc374('0xaf'))['field']('\x27'+_0x515908+'\x27','scheduledAt')[_0xc374('0x80')]('id','ContactId')[_0xc374('0x80')](_0x1ae9ec['CmListId'][_0xc374('0xa4')](),_0xc374('0xb0'))[_0xc374('0x80')](_0x5fb83d[_0xc374('0x51')]['id'][_0xc374('0xa4')](),'VoiceQueueId')[_0xc374('0x80')]('\x27'+_0x515908+'\x27','createdAt')[_0xc374('0x80')]('\x27'+_0x515908+'\x27',_0xc374('0x5d'))['from']('cm_contacts')[_0xc374('0x47')]('deletedAt\x20IS\x20NULL')[_0xc374('0x47')](_0xc374('0xa6'),_0x1ae9ec['CmListId'][_0xc374('0xa4')]())['where']('phone\x20IS\x20NOT\x20NULL')['where'](_0xc374('0xa8'),squel[_0xc374('0xa2')]()[_0xc374('0x80')](_0xc374('0xab'))[_0xc374('0x82')]('cm_hopper')[_0xc374('0x47')]('VoiceQueueId\x20=\x20?',_0x5fb83d[_0xc374('0x51')]['id']['toString']())))[_0xc374('0xa4')]();break;default:_0x14ee40=squel['insert']()[_0xc374('0xae')](_0xc374('0xac'))[_0xc374('0x9f')]([_0xc374('0xaf'),_0xc374('0xa0'),'ContactId','ListId',_0xc374('0x65'),'createdAt','updatedAt'],squel['select']()[_0xc374('0x80')](_0xc374('0xaf'),'phone')[_0xc374('0x80')]('\x27'+_0x515908+'\x27',_0xc374('0xa0'))['field']('id',_0xc374('0xa1'))['field'](_0x1ae9ec[_0xc374('0xa3')][_0xc374('0xa4')](),'ListId')[_0xc374('0x80')](_0x5fb83d[_0xc374('0x51')]['id'][_0xc374('0xa4')](),_0xc374('0x65'))[_0xc374('0x80')]('\x27'+_0x515908+'\x27','createdAt')[_0xc374('0x80')]('\x27'+_0x515908+'\x27','updatedAt')[_0xc374('0x82')]('cm_contacts')['where'](_0xc374('0xb1'))['where'](_0xc374('0xa6'),_0x1ae9ec[_0xc374('0xa3')]['toString']())['where'](_0xc374('0xa7')))[_0xc374('0xa4')]();}_0x39473e[_0xc374('0x87')](db[_0xc374('0x76')]['query'](_0x14ee40));}return BPromise[_0xc374('0x8b')](_0x39473e);}})['then'](function(){var _0xb2aca3=[];var _0x73a8fa=squel[_0xc374('0x9e')]()[_0xc374('0xae')](_0xc374('0xb2'))['fromQuery'](['CmHopperId',_0xc374('0xaf'),_0xc374('0xb3'),'createdAt','updatedAt'],squel[_0xc374('0xa2')]()[_0xc374('0x80')](_0xc374('0xb4'))['field'](_0xc374('0xb5'))[_0xc374('0x80')](_0xc374('0xb6'))[_0xc374('0x80')]('\x27'+_0x515908+'\x27',_0xc374('0x5b'))[_0xc374('0x80')]('\x27'+_0x515908+'\x27','updatedAt')['from'](_0xc374('0xb7'),'ci')[_0xc374('0xb8')]('cm_hopper','h','h.ContactId=ci.CmContactId')[_0xc374('0x47')](_0xc374('0xb9'),_0x515908)['where']('ci.ItemClass=?',_0xc374('0xba')))[_0xc374('0xa4')]();_0xb2aca3[_0xc374('0x87')](db[_0xc374('0x76')]['query'](_0x73a8fa));return BPromise['all'](_0xb2aca3);})[_0xc374('0x35')](function(){return _0x55f471;})['then'](respondWithResult(_0x57793a,null))[_0xc374('0x4f')](handleError(_0x57793a,null));};exports[_0xc374('0xbb')]=function(_0x17b306,_0xae216d,_0x7d1a50){return db[_0xc374('0x39')][_0xc374('0x31')]({'where':{'id':_0x17b306[_0xc374('0x51')]['id']}})[_0xc374('0x35')](handleEntityNotFound(_0xae216d,null))[_0xc374('0x35')](function(_0x1223fb){if(_0x1223fb){return _0x1223fb['removeLists'](_0x17b306[_0xc374('0x3f')][_0xc374('0x7f')]);}})[_0xc374('0x35')](function(_0x560393){if(_0x560393){return db['CmHopper'][_0xc374('0x34')]({'where':{'ListId':_0x17b306[_0xc374('0x3f')][_0xc374('0x7f')],'VoiceQueueId':_0x17b306[_0xc374('0x51')]['id']}})[_0xc374('0x35')](function(){return _0x560393;});}})['then'](respondWithStatusCode(_0xae216d,null))[_0xc374('0x4f')](handleError(_0xae216d,null));};exports[_0xc374('0xbc')]=function(_0x5cb4b0,_0x39ba4d,_0x21d9a3){var _0x52a8d1={};var _0x418176={};var _0x23e4e;var _0x29c619;return db['VoiceQueue']['findOne']({'where':{'id':_0x5cb4b0[_0xc374('0x51')]['id']}})[_0xc374('0x35')](handleEntityNotFound(_0x39ba4d,null))['then'](function(_0x492d96){if(_0x492d96){_0x23e4e=_0x492d96;_0x418176[_0xc374('0x3d')]=_[_0xc374('0x3e')](db[_0xc374('0x99')][_0xc374('0x3a')]);_0x418176[_0xc374('0x3f')]=_[_0xc374('0x3e')](_0x5cb4b0[_0xc374('0x3f')]);_0x418176[_0xc374('0x40')]=_[_0xc374('0x41')](_0x418176[_0xc374('0x3d')],_0x418176[_0xc374('0x3f')]);_0x52a8d1['attributes']=_['intersection'](_0x418176[_0xc374('0x3d')],qs[_0xc374('0x52')](_0x5cb4b0[_0xc374('0x3f')][_0xc374('0x52')]));_0x52a8d1['attributes']=_0x52a8d1['attributes'][_0xc374('0x62')]?_0x52a8d1[_0xc374('0x42')]:_0x418176[_0xc374('0x3d')];_0x52a8d1[_0xc374('0x45')]=qs[_0xc374('0x46')](_0x5cb4b0['query']['sort']);_0x52a8d1['where']=qs['filters'](_['pick'](_0x5cb4b0[_0xc374('0x3f')],_0x418176[_0xc374('0x40')]));if(_0x5cb4b0['query'][_0xc374('0x2b')]){_0x52a8d1['where']=_[_0xc374('0x48')](_0x52a8d1[_0xc374('0x47')],{'$or':_['map'](_0x52a8d1[_0xc374('0x42')],function(_0x9afe56){var _0x38e3c0={};_0x38e3c0[_0x9afe56]={'$like':'%'+_0x5cb4b0[_0xc374('0x3f')][_0xc374('0x2b')]+'%'};return _0x38e3c0;})});}_0x52a8d1=_['merge']({},_0x52a8d1,_0x5cb4b0[_0xc374('0x4a')]);return _0x23e4e['getBlackLists'](_0x52a8d1);}})[_0xc374('0x35')](function(_0x217ea9){if(_0x217ea9){_0x29c619=_0x217ea9['length'];if(!_0x5cb4b0[_0xc374('0x3f')][_0xc374('0x43')]('nolimit')){_0x52a8d1[_0xc374('0x44')]=qs[_0xc374('0x44')](_0x5cb4b0[_0xc374('0x3f')][_0xc374('0x44')]);_0x52a8d1['offset']=qs[_0xc374('0x1f')](_0x5cb4b0['query'][_0xc374('0x1f')]);}return _0x23e4e[_0xc374('0xbc')](_0x52a8d1);}})[_0xc374('0x35')](function(_0x32690d){if(_0x32690d){return _0x32690d?{'count':_0x29c619,'rows':_0x32690d}:null;}})[_0xc374('0x35')](respondWithResult(_0x39ba4d,null))['catch'](handleError(_0x39ba4d,null));};exports[_0xc374('0xbd')]=function(_0x506c3f,_0x66ad17,_0x565a77){var _0xcb18ae,_0x3af68f;return db['VoiceQueue']['find']({'where':{'id':_0x506c3f['params']['id']}})[_0xc374('0x35')](handleEntityNotFound(_0x66ad17,null))[_0xc374('0x35')](function(_0x55933b){if(_0x55933b){_0x3af68f=_0x55933b;return _0x55933b[_0xc374('0xbd')](_0x506c3f['body'][_0xc374('0x7f')],_['omit'](_0x506c3f[_0xc374('0x5c')],['ids','id'])||{});}return null;})[_0xc374('0x9c')](function(_0x463765){var _0x461171;_0xcb18ae=_0x463765||[];var _0x1e24bb=[];if(_0x463765){for(var _0x119a3b=0x0;_0x119a3b<_0x463765['length'];_0x119a3b+=0x1){var _0x4bc77f=_0x463765[_0x119a3b][_0xc374('0x28')]({'plain':!![]});_0x461171=squel[_0xc374('0x9e')]()[_0xc374('0xae')]('cm_hopper_black')[_0xc374('0x9f')]([_0xc374('0xaf'),_0xc374('0xa1'),'ListId',_0xc374('0x65'),_0xc374('0x5b'),'updatedAt'],squel[_0xc374('0xa2')]()[_0xc374('0x80')]('phone',_0xc374('0xaf'))[_0xc374('0x80')]('id',_0xc374('0xa1'))[_0xc374('0x80')](_0x4bc77f['CmListId']['toString'](),'ListId')[_0xc374('0x80')](_0x506c3f[_0xc374('0x51')]['id'][_0xc374('0xa4')](),_0xc374('0x65'))['field']('NOW()',_0xc374('0x5b'))[_0xc374('0x80')](_0xc374('0xbe'),_0xc374('0x5d'))['from'](_0xc374('0xa5'))[_0xc374('0x47')](_0xc374('0xb1'))['where']('ListId\x20=\x20?',_0x4bc77f[_0xc374('0xa3')][_0xc374('0xa4')]())[_0xc374('0x47')]('phone\x20IS\x20NOT\x20NULL'))[_0xc374('0xa4')]();_0x1e24bb[_0xc374('0x87')](db[_0xc374('0x76')][_0xc374('0x3f')](_0x461171));}return BPromise['all'](_0x1e24bb);}})[_0xc374('0x35')](function(){return _0xcb18ae;})['then'](respondWithResult(_0x66ad17,null))[_0xc374('0x4f')](handleError(_0x66ad17,null));};exports[_0xc374('0xbf')]=function(_0x36eba3,_0x46a57d,_0x1bb931){return db[_0xc374('0x39')][_0xc374('0x31')]({'where':{'id':_0x36eba3[_0xc374('0x51')]['id']}})['then'](handleEntityNotFound(_0x46a57d,null))[_0xc374('0x35')](function(_0xc10fd6){if(_0xc10fd6){return _0xc10fd6[_0xc374('0xbf')](_0x36eba3[_0xc374('0x3f')][_0xc374('0x7f')]);}})[_0xc374('0x35')](function(_0x5d54a5){if(_0x5d54a5){return db['CmHopperBlack'][_0xc374('0x34')]({'where':{'ListId':_0x36eba3[_0xc374('0x3f')][_0xc374('0x7f')],'VoiceQueueId':_0x36eba3[_0xc374('0x51')]['id']}})['then'](function(){return _0x5d54a5;});}})[_0xc374('0x35')](respondWithStatusCode(_0x46a57d,null))[_0xc374('0x4f')](handleError(_0x46a57d,null));};
\ No newline at end of file
index 8e78668..26f4eca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6ede=['update','remove','hasOwnProperty','hook','exports','events','../../mysqldb','setMaxListeners','save'];(function(_0x171007,_0x337228){var _0x469466=function(_0x4a16a4){while(--_0x4a16a4){_0x171007['push'](_0x171007['shift']());}};_0x469466(++_0x337228);}(_0x6ede,0x188));var _0xe6ed=function(_0x2962d5,_0x38deda){_0x2962d5=_0x2962d5-0x0;var _0x273406=_0x6ede[_0x2962d5];return _0x273406;};'use strict';var EventEmitter=require(_0xe6ed('0x0'));var VoiceQueue=require(_0xe6ed('0x1'))['db']['VoiceQueue'];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0xe6ed('0x2')](0x0);var events={'afterCreate':_0xe6ed('0x3'),'afterUpdate':_0xe6ed('0x4'),'afterDestroy':_0xe6ed('0x5')};function emitEvent(_0x1519e9){return function(_0x5f4084,_0x4ee9b0,_0x365087){VoiceQueueEvents['emit'](_0x1519e9+':'+_0x5f4084['id'],_0x5f4084);VoiceQueueEvents['emit'](_0x1519e9,_0x5f4084);_0x365087(null);};}for(var e in events){if(events[_0xe6ed('0x6')](e)){var event=events[e];VoiceQueue[_0xe6ed('0x7')](e,emitEvent(event));}}module[_0xe6ed('0x8')]=VoiceQueueEvents;
\ No newline at end of file
+var _0x53d3=['remove','hasOwnProperty','hook','exports','events','../../mysqldb','VoiceQueue','setMaxListeners','save','update'];(function(_0x3b380d,_0x4bf247){var _0x54502b=function(_0x35d207){while(--_0x35d207){_0x3b380d['push'](_0x3b380d['shift']());}};_0x54502b(++_0x4bf247);}(_0x53d3,0xea));var _0x353d=function(_0x5581ee,_0x3c8072){_0x5581ee=_0x5581ee-0x0;var _0x2e2597=_0x53d3[_0x5581ee];return _0x2e2597;};'use strict';var EventEmitter=require(_0x353d('0x0'));var VoiceQueue=require(_0x353d('0x1'))['db'][_0x353d('0x2')];var VoiceQueueEvents=new EventEmitter();VoiceQueueEvents[_0x353d('0x3')](0x0);var events={'afterCreate':_0x353d('0x4'),'afterUpdate':_0x353d('0x5'),'afterDestroy':_0x353d('0x6')};function emitEvent(_0x5e8e53){return function(_0x20d47e,_0x205029,_0x496e28){VoiceQueueEvents['emit'](_0x5e8e53+':'+_0x20d47e['id'],_0x20d47e);VoiceQueueEvents['emit'](_0x5e8e53,_0x20d47e);_0x496e28(null);};}for(var e in events){if(events[_0x353d('0x7')](e)){var event=events[e];VoiceQueue[_0x353d('0x8')](e,emitEvent(event));}}module[_0x353d('0x9')]=VoiceQueueEvents;
\ No newline at end of file
index 5e982c7..de6871f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x70e0=['voice_queues','lodash','util','../../config/logger','bluebird','request-promise','path','rimraf','./voiceQueue.attributes'];(function(_0xd941d0,_0x483641){var _0x458841=function(_0x430472){while(--_0x430472){_0xd941d0['push'](_0xd941d0['shift']());}};_0x458841(++_0x483641);}(_0x70e0,0x17b));var _0x070e=function(_0x55f7bc,_0x5b0500){_0x55f7bc=_0x55f7bc-0x0;var _0x3117d7=_0x70e0[_0x55f7bc];return _0x3117d7;};'use strict';var _=require(_0x070e('0x0'));var util=require(_0x070e('0x1'));var logger=require(_0x070e('0x2'))('api');var moment=require('moment');var BPromise=require(_0x070e('0x3'));var rp=require(_0x070e('0x4'));var fs=require('fs');var path=require(_0x070e('0x5'));var rimraf=require(_0x070e('0x6'));var config=require('../../config/environment');var attributes=require(_0x070e('0x7'));module['exports']=function(_0x46fe68,_0x4b041d){return _0x46fe68['define']('VoiceQueue',attributes,{'tableName':_0x070e('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x55ca=['./voiceQueue.attributes','exports','define','voice_queues','lodash','util','bluebird','request-promise','rimraf','../../config/environment'];(function(_0x363ef8,_0x4ecb1a){var _0x148822=function(_0x232634){while(--_0x232634){_0x363ef8['push'](_0x363ef8['shift']());}};_0x148822(++_0x4ecb1a);}(_0x55ca,0x126));var _0xa55c=function(_0x2c0d7b,_0x4ec918){_0x2c0d7b=_0x2c0d7b-0x0;var _0x3c769f=_0x55ca[_0x2c0d7b];return _0x3c769f;};'use strict';var _=require(_0xa55c('0x0'));var util=require(_0xa55c('0x1'));var logger=require('../../config/logger')('api');var moment=require('moment');var BPromise=require(_0xa55c('0x2'));var rp=require(_0xa55c('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0xa55c('0x4'));var config=require(_0xa55c('0x5'));var attributes=require(_0xa55c('0x6'));module[_0xa55c('0x7')]=function(_0x3c97c8,_0x279caa){return _0x3c97c8[_0xa55c('0x8')]('VoiceQueue',attributes,{'tableName':_0xa55c('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2c76eb4..9f40b62 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x580b=['request','then','info','request\x20sent','stringify','error','code','VoiceQueue,\x20%s,\x20%s','message','result','GetVoiceQueue','VoiceQueue','findAll','options','raw','where','attributes','limit','include','map','model','debug','catch','find','ShowVoiceQueue','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','redis','defaults','socket.io-emitter','./voiceQueue.socket','register'];(function(_0x1faa33,_0x563c20){var _0x45d3ee=function(_0x44b759){while(--_0x44b759){_0x1faa33['push'](_0x1faa33['shift']());}};_0x45d3ee(++_0x563c20);}(_0x580b,0x9a));var _0xb580=function(_0x221701,_0x233401){_0x221701=_0x221701-0x0;var _0x52843d=_0x580b[_0x221701];return _0x52843d;};'use strict';var _=require(_0xb580('0x0'));var util=require(_0xb580('0x1'));var moment=require(_0xb580('0x2'));var BPromise=require(_0xb580('0x3'));var rs=require(_0xb580('0x4'));var fs=require('fs');var Redis=require(_0xb580('0x5'));var db=require(_0xb580('0x6'))['db'];var utils=require(_0xb580('0x7'));var logger=require(_0xb580('0x8'))(_0xb580('0x9'));var config=require('../../config/environment');var jayson=require(_0xb580('0xa'));var client=jayson[_0xb580('0xb')][_0xb580('0xc')]({'port':0x232a});config[_0xb580('0xd')]=_[_0xb580('0xe')](config[_0xb580('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0xb580('0xf'))(new Redis(config[_0xb580('0xd')]));require(_0xb580('0x10'))[_0xb580('0x11')](socket);function respondWithRpcPromise(_0x22ded9,_0x143e8c,_0xc51384){return new BPromise(function(_0xe6107a,_0x139cad){return client[_0xb580('0x12')](_0x22ded9,_0xc51384)[_0xb580('0x13')](function(_0x423ca1){logger[_0xb580('0x14')]('VoiceQueue,\x20%s,\x20%s',_0x143e8c,_0xb580('0x15'));logger['debug']('VoiceQueue,\x20%s,\x20%s,\x20%s',_0x143e8c,_0xb580('0x15'),JSON[_0xb580('0x16')](_0x423ca1));if(_0x423ca1[_0xb580('0x17')]){if(_0x423ca1[_0xb580('0x17')][_0xb580('0x18')]===0x1f4){logger[_0xb580('0x17')](_0xb580('0x19'),_0x143e8c,_0x423ca1[_0xb580('0x17')]['message']);return _0x139cad(_0x423ca1[_0xb580('0x17')][_0xb580('0x1a')]);}logger['error'](_0xb580('0x19'),_0x143e8c,_0x423ca1[_0xb580('0x17')][_0xb580('0x1a')]);return _0xe6107a(_0x423ca1[_0xb580('0x17')][_0xb580('0x1a')]);}else{logger[_0xb580('0x14')]('VoiceQueue,\x20%s,\x20%s',_0x143e8c,_0xb580('0x15'));_0xe6107a(_0x423ca1[_0xb580('0x1b')][_0xb580('0x1a')]);}})['catch'](function(_0x399781){logger[_0xb580('0x17')](_0xb580('0x19'),_0x143e8c,_0x399781);_0x139cad(_0x399781);});});}exports[_0xb580('0x1c')]=function(_0x4ddd07){var _0x33dfaf=this;return new Promise(function(_0x17e7d5,_0x3b7ebb){return db[_0xb580('0x1d')][_0xb580('0x1e')]({'raw':_0x4ddd07[_0xb580('0x1f')]?_0x4ddd07[_0xb580('0x1f')][_0xb580('0x20')]===undefined?!![]:![]:!![],'where':_0x4ddd07[_0xb580('0x1f')]?_0x4ddd07[_0xb580('0x1f')][_0xb580('0x21')]||null:null,'attributes':_0x4ddd07['options']?_0x4ddd07['options'][_0xb580('0x22')]||null:null,'limit':_0x4ddd07[_0xb580('0x1f')]?_0x4ddd07[_0xb580('0x1f')][_0xb580('0x23')]||null:null,'include':_0x4ddd07[_0xb580('0x1f')]?_0x4ddd07['options'][_0xb580('0x24')]?_[_0xb580('0x25')](_0x4ddd07[_0xb580('0x1f')][_0xb580('0x24')],function(_0x299498){return{'model':db[_0x299498[_0xb580('0x26')]],'as':_0x299498['as'],'attributes':_0x299498[_0xb580('0x22')],'include':_0x299498[_0xb580('0x24')]?_['map'](_0x299498['include'],function(_0x547b1c){return{'model':db[_0x547b1c[_0xb580('0x26')]],'as':_0x547b1c['as'],'attributes':_0x547b1c[_0xb580('0x22')],'include':_0x547b1c['include']?_[_0xb580('0x25')](_0x547b1c['include'],function(_0x14309b){return{'model':db[_0x14309b[_0xb580('0x26')]],'as':_0x14309b['as'],'attributes':_0x14309b['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x19edc8){logger[_0xb580('0x14')](_0xb580('0x1c'),_0x4ddd07);logger[_0xb580('0x27')](_0xb580('0x1c'),_0x4ddd07,JSON['stringify'](_0x19edc8));_0x17e7d5(_0x19edc8);})[_0xb580('0x28')](function(_0x164d7c){logger[_0xb580('0x17')](_0xb580('0x1c'),_0x164d7c[_0xb580('0x1a')],_0x4ddd07);_0x3b7ebb(_0x33dfaf[_0xb580('0x17')](0x1f4,_0x164d7c[_0xb580('0x1a')]));});});};exports['ShowVoiceQueue']=function(_0x657e53){var _0x501c80=this;return new Promise(function(_0x35f5d0,_0x1e4570){return db[_0xb580('0x1d')][_0xb580('0x29')]({'raw':_0x657e53[_0xb580('0x1f')]?_0x657e53['options'][_0xb580('0x20')]===undefined?!![]:![]:!![],'where':_0x657e53[_0xb580('0x1f')]?_0x657e53[_0xb580('0x1f')][_0xb580('0x21')]||null:null,'attributes':_0x657e53[_0xb580('0x1f')]?_0x657e53[_0xb580('0x1f')][_0xb580('0x22')]||null:null,'include':_0x657e53[_0xb580('0x1f')]?_0x657e53[_0xb580('0x1f')]['include']?_['map'](_0x657e53[_0xb580('0x1f')][_0xb580('0x24')],function(_0x1e7408){return{'model':db[_0x1e7408['model']],'as':_0x1e7408['as'],'attributes':_0x1e7408[_0xb580('0x22')],'include':_0x1e7408[_0xb580('0x24')]?_[_0xb580('0x25')](_0x1e7408[_0xb580('0x24')],function(_0x283904){return{'model':db[_0x283904['model']],'as':_0x283904['as'],'attributes':_0x283904['attributes'],'include':_0x283904['include']?_[_0xb580('0x25')](_0x283904[_0xb580('0x24')],function(_0x40392e){return{'model':db[_0x40392e['model']],'as':_0x40392e['as'],'attributes':_0x40392e[_0xb580('0x22')]};}):[]};}):[]};}):[]:[]})[_0xb580('0x13')](function(_0x335119){logger['info'](_0xb580('0x2a'),_0x657e53);logger[_0xb580('0x27')](_0xb580('0x2a'),_0x657e53,JSON['stringify'](_0x335119));_0x35f5d0(_0x335119);})['catch'](function(_0x3c8bb3){logger['error'](_0xb580('0x2a'),_0x3c8bb3[_0xb580('0x1a')],_0x657e53);_0x1e4570(_0x501c80[_0xb580('0x17')](0x1f4,_0x3c8bb3[_0xb580('0x1a')]));});});};
\ No newline at end of file
+var _0x24d7=['register','request','then','info','VoiceQueue,\x20%s,\x20%s','request\x20sent','debug','VoiceQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','GetVoiceQueue','VoiceQueue','options','raw','where','limit','include','map','model','attributes','catch','ShowVoiceQueue','lodash','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/environment','http','redis','defaults','localhost','socket.io-emitter'];(function(_0x544099,_0x372b30){var _0x20ab09=function(_0x149613){while(--_0x149613){_0x544099['push'](_0x544099['shift']());}};_0x20ab09(++_0x372b30);}(_0x24d7,0xa9));var _0x724d=function(_0x4ae87f,_0x5543c5){_0x4ae87f=_0x4ae87f-0x0;var _0x103798=_0x24d7[_0x4ae87f];return _0x103798;};'use strict';var _=require(_0x724d('0x0'));var util=require('util');var moment=require('moment');var BPromise=require('bluebird');var rs=require(_0x724d('0x1'));var fs=require('fs');var Redis=require(_0x724d('0x2'));var db=require(_0x724d('0x3'))['db'];var utils=require(_0x724d('0x4'));var logger=require('../../config/logger')('rpc');var config=require(_0x724d('0x5'));var jayson=require('jayson/promise');var client=jayson['client'][_0x724d('0x6')]({'port':0x232a});config[_0x724d('0x7')]=_[_0x724d('0x8')](config[_0x724d('0x7')],{'host':_0x724d('0x9'),'port':0x18eb});var socket=require(_0x724d('0xa'))(new Redis(config['redis']));require('./voiceQueue.socket')[_0x724d('0xb')](socket);function respondWithRpcPromise(_0x34449e,_0x5993ac,_0x55fe25){return new BPromise(function(_0x1c22a8,_0x24b98b){return client[_0x724d('0xc')](_0x34449e,_0x55fe25)[_0x724d('0xd')](function(_0x5e5433){logger[_0x724d('0xe')](_0x724d('0xf'),_0x5993ac,_0x724d('0x10'));logger[_0x724d('0x11')](_0x724d('0x12'),_0x5993ac,_0x724d('0x10'),JSON[_0x724d('0x13')](_0x5e5433));if(_0x5e5433['error']){if(_0x5e5433[_0x724d('0x14')][_0x724d('0x15')]===0x1f4){logger[_0x724d('0x14')](_0x724d('0xf'),_0x5993ac,_0x5e5433[_0x724d('0x14')][_0x724d('0x16')]);return _0x24b98b(_0x5e5433['error'][_0x724d('0x16')]);}logger[_0x724d('0x14')](_0x724d('0xf'),_0x5993ac,_0x5e5433[_0x724d('0x14')][_0x724d('0x16')]);return _0x1c22a8(_0x5e5433[_0x724d('0x14')]['message']);}else{logger[_0x724d('0xe')]('VoiceQueue,\x20%s,\x20%s',_0x5993ac,'request\x20sent');_0x1c22a8(_0x5e5433[_0x724d('0x17')][_0x724d('0x16')]);}})['catch'](function(_0x2abca3){logger[_0x724d('0x14')]('VoiceQueue,\x20%s,\x20%s',_0x5993ac,_0x2abca3);_0x24b98b(_0x2abca3);});});}exports[_0x724d('0x18')]=function(_0x5305ee){var _0x450db3=this;return new Promise(function(_0x842dbe,_0x1cacbc){return db[_0x724d('0x19')]['findAll']({'raw':_0x5305ee[_0x724d('0x1a')]?_0x5305ee['options'][_0x724d('0x1b')]===undefined?!![]:![]:!![],'where':_0x5305ee[_0x724d('0x1a')]?_0x5305ee['options'][_0x724d('0x1c')]||null:null,'attributes':_0x5305ee[_0x724d('0x1a')]?_0x5305ee[_0x724d('0x1a')]['attributes']||null:null,'limit':_0x5305ee[_0x724d('0x1a')]?_0x5305ee[_0x724d('0x1a')][_0x724d('0x1d')]||null:null,'include':_0x5305ee[_0x724d('0x1a')]?_0x5305ee[_0x724d('0x1a')][_0x724d('0x1e')]?_[_0x724d('0x1f')](_0x5305ee[_0x724d('0x1a')][_0x724d('0x1e')],function(_0x4dbd4b){return{'model':db[_0x4dbd4b[_0x724d('0x20')]],'as':_0x4dbd4b['as'],'attributes':_0x4dbd4b['attributes'],'include':_0x4dbd4b[_0x724d('0x1e')]?_['map'](_0x4dbd4b[_0x724d('0x1e')],function(_0xfb7af6){return{'model':db[_0xfb7af6[_0x724d('0x20')]],'as':_0xfb7af6['as'],'attributes':_0xfb7af6['attributes'],'include':_0xfb7af6[_0x724d('0x1e')]?_[_0x724d('0x1f')](_0xfb7af6[_0x724d('0x1e')],function(_0x30eb37){return{'model':db[_0x30eb37[_0x724d('0x20')]],'as':_0x30eb37['as'],'attributes':_0x30eb37[_0x724d('0x21')]};}):[]};}):[]};}):[]:[]})[_0x724d('0xd')](function(_0x4cedb0){logger[_0x724d('0xe')](_0x724d('0x18'),_0x5305ee);logger[_0x724d('0x11')]('GetVoiceQueue',_0x5305ee,JSON[_0x724d('0x13')](_0x4cedb0));_0x842dbe(_0x4cedb0);})[_0x724d('0x22')](function(_0x3a8515){logger['error'](_0x724d('0x18'),_0x3a8515['message'],_0x5305ee);_0x1cacbc(_0x450db3[_0x724d('0x14')](0x1f4,_0x3a8515['message']));});});};exports[_0x724d('0x23')]=function(_0x55e09a){var _0x424d23=this;return new Promise(function(_0x554787,_0x2d396c){return db[_0x724d('0x19')]['find']({'raw':_0x55e09a['options']?_0x55e09a[_0x724d('0x1a')][_0x724d('0x1b')]===undefined?!![]:![]:!![],'where':_0x55e09a[_0x724d('0x1a')]?_0x55e09a[_0x724d('0x1a')]['where']||null:null,'attributes':_0x55e09a['options']?_0x55e09a['options'][_0x724d('0x21')]||null:null,'include':_0x55e09a[_0x724d('0x1a')]?_0x55e09a[_0x724d('0x1a')][_0x724d('0x1e')]?_[_0x724d('0x1f')](_0x55e09a[_0x724d('0x1a')][_0x724d('0x1e')],function(_0x577c47){return{'model':db[_0x577c47[_0x724d('0x20')]],'as':_0x577c47['as'],'attributes':_0x577c47['attributes'],'include':_0x577c47[_0x724d('0x1e')]?_['map'](_0x577c47[_0x724d('0x1e')],function(_0x21cdbc){return{'model':db[_0x21cdbc['model']],'as':_0x21cdbc['as'],'attributes':_0x21cdbc['attributes'],'include':_0x21cdbc['include']?_[_0x724d('0x1f')](_0x21cdbc[_0x724d('0x1e')],function(_0x4011e3){return{'model':db[_0x4011e3[_0x724d('0x20')]],'as':_0x4011e3['as'],'attributes':_0x4011e3['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x41145b){logger['info'](_0x724d('0x23'),_0x55e09a);logger['debug'](_0x724d('0x23'),_0x55e09a,JSON['stringify'](_0x41145b));_0x554787(_0x41145b);})['catch'](function(_0x58a757){logger['error']('ShowVoiceQueue',_0x58a757[_0x724d('0x16')],_0x55e09a);_0x2d396c(_0x424d23[_0x724d('0x14')](0x1f4,_0x58a757[_0x724d('0x16')]));});});};
\ No newline at end of file
index 65060e5..77ac031 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x063a=['length','save','remove','emit','removeListener','register'];(function(_0x32aaeb,_0x2377fc){var _0x4b3040=function(_0x53ec07){while(--_0x53ec07){_0x32aaeb['push'](_0x32aaeb['shift']());}};_0x4b3040(++_0x2377fc);}(_0x063a,0x109));var _0xa063=function(_0x3f2891,_0x39d306){_0x3f2891=_0x3f2891-0x0;var _0x40dd13=_0x063a[_0x3f2891];return _0x40dd13;};'use strict';var VoiceQueueEvents=require('./voiceQueue.events');var events=[_0xa063('0x0'),_0xa063('0x1'),'update'];function createListener(_0x2a3f44,_0x1f779e){return function(_0xdcf2df){_0x1f779e[_0xa063('0x2')](_0x2a3f44,_0xdcf2df);};}function removeListener(_0x8c18f6,_0xcb0c5c){return function(){VoiceQueueEvents[_0xa063('0x3')](_0x8c18f6,_0xcb0c5c);};}exports[_0xa063('0x4')]=function(_0x5c85c5){for(var _0x668f91=0x0,_0x1ba662=events[_0xa063('0x5')];_0x668f91<_0x1ba662;_0x668f91++){var _0x2c4dde=events[_0x668f91];var _0x366abc=createListener('voiceQueue:'+_0x2c4dde,_0x5c85c5);VoiceQueueEvents['on'](_0x2c4dde,_0x366abc);}};
\ No newline at end of file
+var _0x6f0e=['save','register','length','./voiceQueue.events'];(function(_0x235f49,_0x2992b4){var _0x551139=function(_0x35565c){while(--_0x35565c){_0x235f49['push'](_0x235f49['shift']());}};_0x551139(++_0x2992b4);}(_0x6f0e,0x11b));var _0xe6f0=function(_0xbc8077,_0x37d8cd){_0xbc8077=_0xbc8077-0x0;var _0x1d826b=_0x6f0e[_0xbc8077];return _0x1d826b;};'use strict';var VoiceQueueEvents=require(_0xe6f0('0x0'));var events=[_0xe6f0('0x1'),'remove','update'];function createListener(_0x1d7ac5,_0x31a0db){return function(_0x35366c){_0x31a0db['emit'](_0x1d7ac5,_0x35366c);};}function removeListener(_0x1aa11f,_0x4934e6){return function(){VoiceQueueEvents['removeListener'](_0x1aa11f,_0x4934e6);};}exports[_0xe6f0('0x2')]=function(_0x593e9e){for(var _0x17a498=0x0,_0x4f35cb=events[_0xe6f0('0x3')];_0x17a498<_0x4f35cb;_0x17a498++){var _0xaf4ec7=events[_0x17a498];var _0x1993c2=createListener('voiceQueue:'+_0xaf4ec7,_0x593e9e);VoiceQueueEvents['on'](_0xaf4ec7,_0x1993c2);}};
\ No newline at end of file
index 16f5907..49517fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2391=['/index','/:id','show','post','create','put','update','delete','destroy','exports','multer','util','path','connect-timeout','express','Router','fs-extra','isAuthenticated','/describe'];(function(_0x138abc,_0x338044){var _0x4b8a7a=function(_0x4d3a59){while(--_0x4d3a59){_0x138abc['push'](_0x138abc['shift']());}};_0x4b8a7a(++_0x338044);}(_0x2391,0xa2));var _0x1239=function(_0x5bd426,_0x4878e5){_0x5bd426=_0x5bd426-0x0;var _0x23a7eb=_0x2391[_0x5bd426];return _0x23a7eb;};'use strict';var multer=require(_0x1239('0x0'));var util=require(_0x1239('0x1'));var path=require(_0x1239('0x2'));var timeout=require(_0x1239('0x3'));var express=require(_0x1239('0x4'));var router=express[_0x1239('0x5')]();var fs_extra=require(_0x1239('0x6'));var auth=require('../../components/auth/service');var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require('./voiceQueueReport.controller');router['get']('/',auth[_0x1239('0x7')](),controller['index']);router['get'](_0x1239('0x8'),auth[_0x1239('0x7')](),controller['describe']);router['get'](_0x1239('0x9'),auth[_0x1239('0x7')](),controller['getVoiceQueuesReport']);router['get'](_0x1239('0xa'),auth[_0x1239('0x7')](),controller[_0x1239('0xb')]);router[_0x1239('0xc')]('/',auth[_0x1239('0x7')](),controller[_0x1239('0xd')]);router[_0x1239('0xe')]('/:id',auth[_0x1239('0x7')](),controller[_0x1239('0xf')]);router[_0x1239('0x10')](_0x1239('0xa'),auth['isAuthenticated'](),controller[_0x1239('0x11')]);module[_0x1239('0x12')]=router;
\ No newline at end of file
+var _0x08e5=['index','/describe','getVoiceQueuesReport','post','create','put','delete','/:id','destroy','multer','express','Router','fs-extra','../../components/auth/service','../../config/environment','get','isAuthenticated'];(function(_0x53cf8e,_0x3d290f){var _0x459197=function(_0x67073c){while(--_0x67073c){_0x53cf8e['push'](_0x53cf8e['shift']());}};_0x459197(++_0x3d290f);}(_0x08e5,0x1e5));var _0x508e=function(_0x4b369d,_0x265eb8){_0x4b369d=_0x4b369d-0x0;var _0x571a98=_0x08e5[_0x4b369d];return _0x571a98;};'use strict';var multer=require(_0x508e('0x0'));var util=require('util');var path=require('path');var timeout=require('connect-timeout');var express=require(_0x508e('0x1'));var router=express[_0x508e('0x2')]();var fs_extra=require(_0x508e('0x3'));var auth=require(_0x508e('0x4'));var interaction=require('../../components/interaction/service');var config=require(_0x508e('0x5'));var controller=require('./voiceQueueReport.controller');router[_0x508e('0x6')]('/',auth[_0x508e('0x7')](),controller[_0x508e('0x8')]);router[_0x508e('0x6')](_0x508e('0x9'),auth[_0x508e('0x7')](),controller['describe']);router[_0x508e('0x6')]('/index',auth[_0x508e('0x7')](),controller[_0x508e('0xa')]);router[_0x508e('0x6')]('/:id',auth[_0x508e('0x7')](),controller['show']);router[_0x508e('0xb')]('/',auth[_0x508e('0x7')](),controller[_0x508e('0xc')]);router[_0x508e('0xd')]('/:id',auth[_0x508e('0x7')](),controller['update']);router[_0x508e('0xe')](_0x508e('0xf'),auth[_0x508e('0x7')](),controller[_0x508e('0x10')]);module['exports']=router;
\ No newline at end of file
index c68c1e3..dbec1cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x542d=['setDataValue','queuecallerleaveAt','holdtime','BOOLEAN','COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT','INTEGER','FORWARD,\x20BLIND,\x20ATTENDED','exports','STRING','DATE','getDataValue','format','YYYY-MM-DD\x20HH:mm:ss','diff'];(function(_0x4f4ae0,_0x3f4e1e){var _0x182e32=function(_0x3b3f96){while(--_0x3b3f96){_0x4f4ae0['push'](_0x4f4ae0['shift']());}};_0x182e32(++_0x3f4e1e);}(_0x542d,0x69));var _0xd542=function(_0x44ae12,_0x113107){_0x44ae12=_0x44ae12-0x0;var _0x3358d8=_0x542d[_0x44ae12];return _0x3358d8;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0xd542('0x0')]={'type':{'type':Sequelize[_0xd542('0x1')]},'uniqueid':{'type':Sequelize[_0xd542('0x1')]},'calleridnum':{'type':Sequelize[_0xd542('0x1')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize['STRING']},'queuecallerjoinAt':{'type':Sequelize[_0xd542('0x2')]},'queuecallerleaveAt':{'type':Sequelize[_0xd542('0x2')],'set':function(_0x3a7240){var _0x4d9dd2=moment(_0x3a7240);var _0x587629=moment(this[_0xd542('0x3')]('queuecallerjoinAt'))[_0xd542('0x4')](_0xd542('0x5'));var _0x59b88a=_0x4d9dd2[_0xd542('0x6')](_0x587629,'seconds');this[_0xd542('0x7')](_0xd542('0x8'),_0x3a7240);this[_0xd542('0x7')](_0xd542('0x9'),_0x59b88a||null);}},'position':{'type':Sequelize['INTEGER']},'count':{'type':Sequelize['INTEGER']},'queuecallerabandon':{'type':Sequelize[_0xd542('0xa')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0xd542('0x2')]},'queuecallercomplete':{'type':Sequelize[_0xd542('0xa')],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0xd542('0x2')]},'queuecallerexit':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize['DATE']},'queuecallerexitreason':{'type':Sequelize[_0xd542('0x1')],'comment':_0xd542('0xb')},'originalposition':{'type':Sequelize['INTEGER']},'channel':{'type':Sequelize[_0xd542('0x1')]},'connectedlinenum':{'type':Sequelize['STRING']},'connectedlinename':{'type':Sequelize[_0xd542('0x1')]},'accountcode':{'type':Sequelize[_0xd542('0x1')]},'context':{'type':Sequelize[_0xd542('0x1')]},'exten':{'type':Sequelize[_0xd542('0x1')]},'priority':{'type':Sequelize['STRING']},'holdtime':{'type':Sequelize['INTEGER']},'mohtime':{'type':Sequelize[_0xd542('0xc')],'defaultValue':0x0},'assigned':{'type':Sequelize[_0xd542('0xa')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize[_0xd542('0x1')]},'transfer':{'type':Sequelize[_0xd542('0xa')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0xd542('0x1')],'comment':_0xd542('0xd')},'transferexten':{'type':Sequelize[_0xd542('0x1')]},'transferuniqueid':{'type':Sequelize[_0xd542('0x1')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0xd542('0x1')]},'thirdDisposition':{'type':Sequelize['STRING']},'queuecallerenterreason':{'type':Sequelize[_0xd542('0xc')],'defaultValue':0x0}};
\ No newline at end of file
+var _0x0886=['exports','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','seconds','queuecallerleaveAt','setDataValue','INTEGER','BOOLEAN','sequelize'];(function(_0x3f6ab1,_0x2bab5d){var _0xf6f681=function(_0x14546d){while(--_0x14546d){_0x3f6ab1['push'](_0x3f6ab1['shift']());}};_0xf6f681(++_0x2bab5d);}(_0x0886,0xa4));var _0x6088=function(_0x179142,_0x33d91b){_0x179142=_0x179142-0x0;var _0x4d22d1=_0x0886[_0x179142];return _0x4d22d1;};'use strict';var Sequelize=require(_0x6088('0x0'));var moment=require('moment');module[_0x6088('0x1')]={'type':{'type':Sequelize[_0x6088('0x2')]},'uniqueid':{'type':Sequelize[_0x6088('0x2')]},'calleridnum':{'type':Sequelize[_0x6088('0x2')]},'calleridname':{'type':Sequelize['STRING']},'queue':{'type':Sequelize[_0x6088('0x2')]},'queuecallerjoinAt':{'type':Sequelize['DATE']},'queuecallerleaveAt':{'type':Sequelize[_0x6088('0x3')],'set':function(_0x245562){var _0x2788ae=moment(_0x245562);var _0x1ab13c=moment(this['getDataValue']('queuecallerjoinAt'))[_0x6088('0x4')](_0x6088('0x5'));var _0x1a3f50=_0x2788ae['diff'](_0x1ab13c,_0x6088('0x6'));this['setDataValue'](_0x6088('0x7'),_0x245562);this[_0x6088('0x8')]('holdtime',_0x1a3f50||null);}},'position':{'type':Sequelize[_0x6088('0x9')]},'count':{'type':Sequelize['INTEGER']},'queuecallerabandon':{'type':Sequelize[_0x6088('0xa')],'defaultValue':![]},'queuecallerabandonAt':{'type':Sequelize[_0x6088('0x3')]},'queuecallercomplete':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'queuecallercompleteAt':{'type':Sequelize[_0x6088('0x3')]},'queuecallerexit':{'type':Sequelize[_0x6088('0xa')],'defaultValue':![]},'queuecallerexitAt':{'type':Sequelize['DATE']},'queuecallerexitreason':{'type':Sequelize[_0x6088('0x2')],'comment':'COMPLETEDBYCALLER,\x20COMPLETEDBYAGENT,\x20FORWARDTRANFER,\x20BLINDTRANSFER,\x20ATTENDEDTRANSFER,\x20EXITWITHKEY,\x20TIMEOUT'},'originalposition':{'type':Sequelize[_0x6088('0x9')]},'channel':{'type':Sequelize[_0x6088('0x2')]},'connectedlinenum':{'type':Sequelize[_0x6088('0x2')]},'connectedlinename':{'type':Sequelize[_0x6088('0x2')]},'accountcode':{'type':Sequelize[_0x6088('0x2')]},'context':{'type':Sequelize[_0x6088('0x2')]},'exten':{'type':Sequelize[_0x6088('0x2')]},'priority':{'type':Sequelize['STRING']},'holdtime':{'type':Sequelize[_0x6088('0x9')]},'mohtime':{'type':Sequelize['INTEGER'],'defaultValue':0x0},'assigned':{'type':Sequelize[_0x6088('0xa')],'defaultValue':![]},'lastAssignedTo':{'type':Sequelize['STRING']},'transfer':{'type':Sequelize[_0x6088('0xa')],'defaultValue':![]},'transfertype':{'type':Sequelize[_0x6088('0x2')],'comment':'FORWARD,\x20BLIND,\x20ATTENDED'},'transferexten':{'type':Sequelize[_0x6088('0x2')]},'transferuniqueid':{'type':Sequelize['STRING']},'disposition':{'type':Sequelize[_0x6088('0x2')]},'secondDisposition':{'type':Sequelize[_0x6088('0x2')]},'thirdDisposition':{'type':Sequelize['STRING']},'queuecallerenterreason':{'type':Sequelize[_0x6088('0x9')],'defaultValue':0x0}};
\ No newline at end of file
index 7e92471..a41cf9f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4c4=['sox','to-csv','fs-extra','crypto','jsforce','desk.js','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','end','json','offset','limit','count','status','set','Content-Range','apply','reject','update','then','destroy','sendStatus','error','stack','name','send','map','VoiceQueueReport','rawAttributes','type','key','query','keys','filters','model','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','find','catch','create','body','describe','getVoiceQueuesReport','rimraf','zip-dir','fast-json-patch','bluebird','mustache','util','path'];(function(_0x59a4cb,_0x177ae3){var _0x51ddf9=function(_0x235180){while(--_0x235180){_0x59a4cb['push'](_0x59a4cb['shift']());}};_0x51ddf9(++_0x177ae3);}(_0xd4c4,0x1d3));var _0x4d4c=function(_0x124d74,_0x18eda2){_0x124d74=_0x124d74-0x0;var _0x46418e=_0xd4c4[_0x124d74];return _0x46418e;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x4d4c('0x0'));var zipdir=require(_0x4d4c('0x1'));var jsonpatch=require(_0x4d4c('0x2'));var rp=require('request-promise');var moment=require('moment');var BPromise=require(_0x4d4c('0x3'));var Mustache=require(_0x4d4c('0x4'));var util=require(_0x4d4c('0x5'));var path=require(_0x4d4c('0x6'));var sox=require(_0x4d4c('0x7'));var csv=require(_0x4d4c('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x4d4c('0x9'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x4d4c('0xa'));var jsforce=require(_0x4d4c('0xb'));var deskjs=require(_0x4d4c('0xc'));var toCsv=require(_0x4d4c('0x8'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0x4d4c('0xd'));var authService=require(_0x4d4c('0xe'));var qs=require(_0x4d4c('0xf'));var as=require(_0x4d4c('0x10'));var hardwareService=require(_0x4d4c('0x11'));var logger=require(_0x4d4c('0x12'))(_0x4d4c('0x13'));var utils=require(_0x4d4c('0x14'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x4d4c('0x15'))['db'];config[_0x4d4c('0x16')]=_[_0x4d4c('0x17')](config[_0x4d4c('0x16')],{'host':_0x4d4c('0x18'),'port':0x18eb});var socket=require(_0x4d4c('0x19'))(new Redis(config[_0x4d4c('0x16')]));require(_0x4d4c('0x1a'))['register'](socket);function respondWithStatusCode(_0xa85283,_0x5dfa9e){_0x5dfa9e=_0x5dfa9e||0xcc;return function(_0x150090){if(_0x150090){return _0xa85283['sendStatus'](_0x5dfa9e);}return _0xa85283['status'](_0x5dfa9e)[_0x4d4c('0x1b')]();};}function respondWithResult(_0x44178b,_0x37c701){_0x37c701=_0x37c701||0xc8;return function(_0x14872f){if(_0x14872f){return _0x44178b['status'](_0x37c701)[_0x4d4c('0x1c')](_0x14872f);}};}function respondWithFilteredResult(_0x23969b,_0x1acd49){return function(_0x31034b){if(_0x31034b){var _0x2050ea=typeof _0x1acd49[_0x4d4c('0x1d')]==='undefined'&&typeof _0x1acd49[_0x4d4c('0x1e')]==='undefined';var _0x4d5bf9=_0x31034b[_0x4d4c('0x1f')];var _0x39276e=_0x2050ea?0x0:_0x1acd49['offset'];var _0x113bd9=_0x2050ea?_0x31034b[_0x4d4c('0x1f')]:_0x1acd49[_0x4d4c('0x1d')]+_0x1acd49[_0x4d4c('0x1e')];var _0x1acbb3;if(_0x113bd9>=_0x4d5bf9){_0x113bd9=_0x4d5bf9;_0x1acbb3=0xc8;}else{_0x1acbb3=0xce;}_0x23969b[_0x4d4c('0x20')](_0x1acbb3);return _0x23969b[_0x4d4c('0x21')](_0x4d4c('0x22'),_0x39276e+'-'+_0x113bd9+'/'+_0x4d5bf9)[_0x4d4c('0x1c')](_0x31034b);}return null;};}function patchUpdates(_0x1c1e0d){return function(_0x29751b){try{jsonpatch[_0x4d4c('0x23')](_0x29751b,_0x1c1e0d,!![]);}catch(_0x338ff2){return BPromise[_0x4d4c('0x24')](_0x338ff2);}return _0x29751b['save']();};}function saveUpdates(_0x8d4e8c,_0xde02f){return function(_0x30508c){if(_0x30508c){return _0x30508c[_0x4d4c('0x25')](_0x8d4e8c)[_0x4d4c('0x26')](function(_0x5165e9){return _0x5165e9;});}return null;};}function removeEntity(_0x2552dc,_0x56187e){return function(_0x56ab57){if(_0x56ab57){return _0x56ab57[_0x4d4c('0x27')]()[_0x4d4c('0x26')](function(){_0x2552dc['status'](0xcc)[_0x4d4c('0x1b')]();});}};}function handleEntityNotFound(_0x23687e,_0x63dcd6){return function(_0x7348d8){if(!_0x7348d8){_0x23687e[_0x4d4c('0x28')](0x194);}return _0x7348d8;};}function handleError(_0x4c3b29,_0x439c86){_0x439c86=_0x439c86||0x1f4;return function(_0x334703){logger[_0x4d4c('0x29')](_0x334703[_0x4d4c('0x2a')]);if(_0x334703[_0x4d4c('0x2b')]){delete _0x334703[_0x4d4c('0x2b')];}_0x4c3b29[_0x4d4c('0x20')](_0x439c86)[_0x4d4c('0x2c')](_0x334703);};}exports['index']=function(_0x37aca5,_0x26e912){var _0x2edd0e={},_0xe6313a={},_0x41da0f={'count':0x0,'rows':[]};var _0x565638=_[_0x4d4c('0x2d')](db[_0x4d4c('0x2e')][_0x4d4c('0x2f')],function(_0x404a63){return{'name':_0x404a63['fieldName'],'type':_0x404a63[_0x4d4c('0x30')][_0x4d4c('0x31')]};});_0xe6313a['model']=_['map'](_0x565638,_0x4d4c('0x2b'));_0xe6313a[_0x4d4c('0x32')]=_[_0x4d4c('0x33')](_0x37aca5[_0x4d4c('0x32')]);_0xe6313a[_0x4d4c('0x34')]=_['intersection'](_0xe6313a[_0x4d4c('0x35')],_0xe6313a[_0x4d4c('0x32')]);_0x2edd0e[_0x4d4c('0x36')]=_[_0x4d4c('0x37')](_0xe6313a[_0x4d4c('0x35')],qs[_0x4d4c('0x38')](_0x37aca5[_0x4d4c('0x32')]['fields']));_0x2edd0e[_0x4d4c('0x36')]=_0x2edd0e['attributes'][_0x4d4c('0x39')]?_0x2edd0e['attributes']:_0xe6313a[_0x4d4c('0x35')];if(!_0x37aca5[_0x4d4c('0x32')][_0x4d4c('0x3a')](_0x4d4c('0x3b'))){_0x2edd0e[_0x4d4c('0x1e')]=qs[_0x4d4c('0x1e')](_0x37aca5[_0x4d4c('0x32')]['limit']);_0x2edd0e[_0x4d4c('0x1d')]=qs[_0x4d4c('0x1d')](_0x37aca5[_0x4d4c('0x32')][_0x4d4c('0x1d')]);}_0x2edd0e[_0x4d4c('0x3c')]=qs[_0x4d4c('0x3d')](_0x37aca5[_0x4d4c('0x32')][_0x4d4c('0x3d')]);_0x2edd0e[_0x4d4c('0x3e')]=qs[_0x4d4c('0x34')](_[_0x4d4c('0x3f')](_0x37aca5[_0x4d4c('0x32')],_0xe6313a[_0x4d4c('0x34')]),_0x565638);if(_0x37aca5[_0x4d4c('0x32')][_0x4d4c('0x40')]){_0x2edd0e[_0x4d4c('0x3e')]=_[_0x4d4c('0x41')](_0x2edd0e[_0x4d4c('0x3e')],{'$or':_[_0x4d4c('0x2d')](_0x565638,function(_0x5a0cdb){if(_0x5a0cdb[_0x4d4c('0x30')]!==_0x4d4c('0x42')){var _0x3f97ae={};_0x3f97ae[_0x5a0cdb[_0x4d4c('0x2b')]]={'$like':'%'+_0x37aca5[_0x4d4c('0x32')][_0x4d4c('0x40')]+'%'};return _0x3f97ae;}})});}_0x2edd0e=_[_0x4d4c('0x41')]({},_0x2edd0e,_0x37aca5[_0x4d4c('0x43')]);var _0x3abebe={'where':_0x2edd0e[_0x4d4c('0x3e')]};return db[_0x4d4c('0x2e')][_0x4d4c('0x1f')](_0x3abebe)[_0x4d4c('0x26')](function(_0x2a1820){_0x41da0f[_0x4d4c('0x1f')]=_0x2a1820;if(_0x37aca5[_0x4d4c('0x32')][_0x4d4c('0x44')]){_0x2edd0e[_0x4d4c('0x45')]=[{'all':!![]}];}return db['VoiceQueueReport'][_0x4d4c('0x46')](_0x2edd0e);})[_0x4d4c('0x26')](function(_0x16aa23){_0x41da0f[_0x4d4c('0x47')]=_0x16aa23;return _0x41da0f;})['then'](respondWithFilteredResult(_0x26e912,_0x2edd0e))['catch'](handleError(_0x26e912,null));};exports['show']=function(_0x478565,_0x58eccc){var _0x299efc={'raw':![],'where':{'id':_0x478565[_0x4d4c('0x48')]['id']}},_0x51496f={};_0x51496f['model']=_['keys'](db[_0x4d4c('0x2e')][_0x4d4c('0x2f')]);_0x51496f[_0x4d4c('0x32')]=_[_0x4d4c('0x33')](_0x478565[_0x4d4c('0x32')]);_0x51496f[_0x4d4c('0x34')]=_[_0x4d4c('0x37')](_0x51496f['model'],_0x51496f[_0x4d4c('0x32')]);_0x299efc[_0x4d4c('0x36')]=_[_0x4d4c('0x37')](_0x51496f[_0x4d4c('0x35')],qs['fields'](_0x478565[_0x4d4c('0x32')][_0x4d4c('0x38')]));_0x299efc[_0x4d4c('0x36')]=_0x299efc['attributes'][_0x4d4c('0x39')]?_0x299efc['attributes']:_0x51496f[_0x4d4c('0x35')];if(_0x478565[_0x4d4c('0x32')][_0x4d4c('0x44')]){_0x299efc[_0x4d4c('0x45')]=[{'all':!![]}];}_0x299efc=_['merge']({},_0x299efc,_0x478565[_0x4d4c('0x43')]);return db[_0x4d4c('0x2e')][_0x4d4c('0x49')](_0x299efc)[_0x4d4c('0x26')](handleEntityNotFound(_0x58eccc,null))[_0x4d4c('0x26')](respondWithResult(_0x58eccc,null))[_0x4d4c('0x4a')](handleError(_0x58eccc,null));};exports[_0x4d4c('0x4b')]=function(_0x3bddcf,_0x209cfd){return db['VoiceQueueReport']['create'](_0x3bddcf['body'],{})['then'](respondWithResult(_0x209cfd,0xc9))[_0x4d4c('0x4a')](handleError(_0x209cfd,null));};exports[_0x4d4c('0x25')]=function(_0x4bf145,_0x2d463){if(_0x4bf145[_0x4d4c('0x4c')]['id']){delete _0x4bf145[_0x4d4c('0x4c')]['id'];}return db[_0x4d4c('0x2e')]['find']({'where':{'id':_0x4bf145[_0x4d4c('0x48')]['id']}})[_0x4d4c('0x26')](handleEntityNotFound(_0x2d463,null))['then'](saveUpdates(_0x4bf145[_0x4d4c('0x4c')],null))['then'](respondWithResult(_0x2d463,null))[_0x4d4c('0x4a')](handleError(_0x2d463,null));};exports[_0x4d4c('0x27')]=function(_0x40a467,_0xf02194){return db[_0x4d4c('0x2e')][_0x4d4c('0x49')]({'where':{'id':_0x40a467[_0x4d4c('0x48')]['id']}})['then'](handleEntityNotFound(_0xf02194,null))['then'](removeEntity(_0xf02194,null))[_0x4d4c('0x4a')](handleError(_0xf02194,null));};exports[_0x4d4c('0x4d')]=function(_0x48a787,_0x5df36){return db[_0x4d4c('0x2e')][_0x4d4c('0x4d')]()[_0x4d4c('0x26')](respondWithResult(_0x5df36,null))['catch'](handleError(_0x5df36,null));};exports['getVoiceQueuesReport']=function(_0x325286,_0x4a543d){var _0x3f8146={},_0x5e5e77={},_0x1620ca={'count':0x0,'rows':[]};_0x5e5e77[_0x4d4c('0x35')]=_[_0x4d4c('0x33')](db[_0x4d4c('0x2e')][_0x4d4c('0x2f')]);_0x5e5e77[_0x4d4c('0x32')]=_[_0x4d4c('0x33')](_0x325286[_0x4d4c('0x32')]);_0x5e5e77[_0x4d4c('0x34')]=_[_0x4d4c('0x37')](_0x5e5e77[_0x4d4c('0x35')],_0x5e5e77['query']);_0x3f8146[_0x4d4c('0x36')]=_[_0x4d4c('0x37')](_0x5e5e77[_0x4d4c('0x35')],qs[_0x4d4c('0x38')](_0x325286[_0x4d4c('0x32')][_0x4d4c('0x38')]));_0x3f8146[_0x4d4c('0x36')]=_0x3f8146['attributes'][_0x4d4c('0x39')]?_0x3f8146[_0x4d4c('0x36')]:_0x5e5e77[_0x4d4c('0x35')];if(!_0x325286[_0x4d4c('0x32')][_0x4d4c('0x3a')](_0x4d4c('0x3b'))){_0x3f8146[_0x4d4c('0x1e')]=qs[_0x4d4c('0x1e')](_0x325286[_0x4d4c('0x32')]['limit']);_0x3f8146['offset']=qs[_0x4d4c('0x1d')](_0x325286[_0x4d4c('0x32')]['offset']);}_0x3f8146[_0x4d4c('0x3c')]=qs['sort'](_0x325286[_0x4d4c('0x32')][_0x4d4c('0x3d')]);_0x3f8146[_0x4d4c('0x3e')]=qs[_0x4d4c('0x34')](_['pick'](_0x325286[_0x4d4c('0x32')],_0x5e5e77[_0x4d4c('0x34')]));if(_0x325286[_0x4d4c('0x32')]['filter']){_0x3f8146[_0x4d4c('0x3e')]=_[_0x4d4c('0x41')](_0x3f8146[_0x4d4c('0x3e')],{'$or':_[_0x4d4c('0x2d')](_0x3f8146[_0x4d4c('0x36')],function(_0x1e3858){var _0x2effd8={};_0x2effd8[_0x1e3858]={'$like':'%'+_0x325286[_0x4d4c('0x32')][_0x4d4c('0x40')]+'%'};return _0x2effd8;})});}_0x3f8146=_[_0x4d4c('0x41')]({},_0x3f8146,_0x325286[_0x4d4c('0x43')]);var _0x1fc273={'where':_0x3f8146[_0x4d4c('0x3e')]};return db[_0x4d4c('0x2e')][_0x4d4c('0x1f')](_0x1fc273)[_0x4d4c('0x26')](function(_0x3e2383){_0x1620ca['count']=_0x3e2383;if(_0x325286[_0x4d4c('0x32')][_0x4d4c('0x44')]){_0x3f8146['include']=[{'all':!![]}];}return db[_0x4d4c('0x2e')]['findAll'](_0x3f8146);})[_0x4d4c('0x26')](function(_0x1498c5){_0x1620ca[_0x4d4c('0x47')]=_0x1498c5;return _0x1620ca;})['then'](respondWithFilteredResult(_0x4a543d,_0x3f8146,_0x4d4c('0x4e')))[_0x4d4c('0x4a')](handleError(_0x4a543d,null,_0x4d4c('0x4e')));};
\ No newline at end of file
+var _0xfecb=['attributes','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','filter','options','includeAll','include','findAll','rows','catch','show','params','keys','find','create','body','describe','getVoiceQueuesReport','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','util','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./voiceQueueReport.socket','register','sendStatus','status','end','undefined','limit','count','offset','set','Content-Range','json','apply','reject','update','destroy','then','error','stack','map','VoiceQueueReport','rawAttributes','fieldName','type','key','model','name','query','filters','intersection','fields'];(function(_0x179e11,_0xf65436){var _0x549f04=function(_0x610545){while(--_0x610545){_0x179e11['push'](_0x179e11['shift']());}};_0x549f04(++_0xf65436);}(_0xfecb,0xbe));var _0xbfec=function(_0x23795e,_0x2ea37d){_0x23795e=_0x23795e-0x0;var _0x5c3dfd=_0xfecb[_0x23795e];return _0x5c3dfd;};'use strict';var emlformat=require(_0xbfec('0x0'));var rimraf=require(_0xbfec('0x1'));var zipdir=require(_0xbfec('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xbfec('0x3'));var moment=require(_0xbfec('0x4'));var BPromise=require(_0xbfec('0x5'));var Mustache=require('mustache');var util=require(_0xbfec('0x6'));var path=require('path');var sox=require(_0xbfec('0x7'));var csv=require(_0xbfec('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0xbfec('0x9'));var _=require(_0xbfec('0xa'));var squel=require(_0xbfec('0xb'));var crypto=require(_0xbfec('0xc'));var jsforce=require(_0xbfec('0xd'));var deskjs=require(_0xbfec('0xe'));var toCsv=require(_0xbfec('0x8'));var querystring=require('querystring');var Papa=require(_0xbfec('0xf'));var Redis=require(_0xbfec('0x10'));var authService=require(_0xbfec('0x11'));var qs=require(_0xbfec('0x12'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0xbfec('0x13'))(_0xbfec('0x14'));var utils=require('../../config/utils');var config=require(_0xbfec('0x15'));var licenseUtil=require(_0xbfec('0x16'));var db=require(_0xbfec('0x17'))['db'];config[_0xbfec('0x18')]=_[_0xbfec('0x19')](config['redis'],{'host':_0xbfec('0x1a'),'port':0x18eb});var socket=require(_0xbfec('0x1b'))(new Redis(config['redis']));require(_0xbfec('0x1c'))[_0xbfec('0x1d')](socket);function respondWithStatusCode(_0x481414,_0x556428){_0x556428=_0x556428||0xcc;return function(_0x2a062f){if(_0x2a062f){return _0x481414[_0xbfec('0x1e')](_0x556428);}return _0x481414[_0xbfec('0x1f')](_0x556428)[_0xbfec('0x20')]();};}function respondWithResult(_0x2a4fa8,_0x97393){_0x97393=_0x97393||0xc8;return function(_0x43d392){if(_0x43d392){return _0x2a4fa8[_0xbfec('0x1f')](_0x97393)['json'](_0x43d392);}};}function respondWithFilteredResult(_0x143e9a,_0x458a64){return function(_0x2a0d96){if(_0x2a0d96){var _0x176064=typeof _0x458a64['offset']===_0xbfec('0x21')&&typeof _0x458a64[_0xbfec('0x22')]===_0xbfec('0x21');var _0x45b19b=_0x2a0d96[_0xbfec('0x23')];var _0x131d19=_0x176064?0x0:_0x458a64['offset'];var _0xad5492=_0x176064?_0x2a0d96[_0xbfec('0x23')]:_0x458a64[_0xbfec('0x24')]+_0x458a64[_0xbfec('0x22')];var _0x529299;if(_0xad5492>=_0x45b19b){_0xad5492=_0x45b19b;_0x529299=0xc8;}else{_0x529299=0xce;}_0x143e9a['status'](_0x529299);return _0x143e9a[_0xbfec('0x25')](_0xbfec('0x26'),_0x131d19+'-'+_0xad5492+'/'+_0x45b19b)[_0xbfec('0x27')](_0x2a0d96);}return null;};}function patchUpdates(_0x59402d){return function(_0x49b62b){try{jsonpatch[_0xbfec('0x28')](_0x49b62b,_0x59402d,!![]);}catch(_0x4355fa){return BPromise[_0xbfec('0x29')](_0x4355fa);}return _0x49b62b['save']();};}function saveUpdates(_0x5740d2,_0xe8fcd3){return function(_0x5c5f9a){if(_0x5c5f9a){return _0x5c5f9a[_0xbfec('0x2a')](_0x5740d2)['then'](function(_0x944766){return _0x944766;});}return null;};}function removeEntity(_0x75177f,_0x1c3ec4){return function(_0x494dee){if(_0x494dee){return _0x494dee[_0xbfec('0x2b')]()[_0xbfec('0x2c')](function(){_0x75177f[_0xbfec('0x1f')](0xcc)['end']();});}};}function handleEntityNotFound(_0x85f18d,_0x2df3f7){return function(_0x43ff36){if(!_0x43ff36){_0x85f18d['sendStatus'](0x194);}return _0x43ff36;};}function handleError(_0x2afb91,_0x1c7b26){_0x1c7b26=_0x1c7b26||0x1f4;return function(_0x39c21d){logger[_0xbfec('0x2d')](_0x39c21d[_0xbfec('0x2e')]);if(_0x39c21d['name']){delete _0x39c21d['name'];}_0x2afb91[_0xbfec('0x1f')](_0x1c7b26)['send'](_0x39c21d);};}exports['index']=function(_0x2ab3a2,_0xa96a15){var _0x423fb2={},_0x371ecf={},_0x43faf8={'count':0x0,'rows':[]};var _0x4e9e33=_[_0xbfec('0x2f')](db[_0xbfec('0x30')][_0xbfec('0x31')],function(_0xf2438b){return{'name':_0xf2438b[_0xbfec('0x32')],'type':_0xf2438b[_0xbfec('0x33')][_0xbfec('0x34')]};});_0x371ecf[_0xbfec('0x35')]=_[_0xbfec('0x2f')](_0x4e9e33,_0xbfec('0x36'));_0x371ecf[_0xbfec('0x37')]=_['keys'](_0x2ab3a2[_0xbfec('0x37')]);_0x371ecf[_0xbfec('0x38')]=_[_0xbfec('0x39')](_0x371ecf[_0xbfec('0x35')],_0x371ecf['query']);_0x423fb2['attributes']=_['intersection'](_0x371ecf[_0xbfec('0x35')],qs['fields'](_0x2ab3a2[_0xbfec('0x37')][_0xbfec('0x3a')]));_0x423fb2[_0xbfec('0x3b')]=_0x423fb2['attributes'][_0xbfec('0x3c')]?_0x423fb2['attributes']:_0x371ecf[_0xbfec('0x35')];if(!_0x2ab3a2[_0xbfec('0x37')][_0xbfec('0x3d')](_0xbfec('0x3e'))){_0x423fb2[_0xbfec('0x22')]=qs['limit'](_0x2ab3a2[_0xbfec('0x37')]['limit']);_0x423fb2['offset']=qs[_0xbfec('0x24')](_0x2ab3a2[_0xbfec('0x37')][_0xbfec('0x24')]);}_0x423fb2[_0xbfec('0x3f')]=qs[_0xbfec('0x40')](_0x2ab3a2['query'][_0xbfec('0x40')]);_0x423fb2[_0xbfec('0x41')]=qs[_0xbfec('0x38')](_['pick'](_0x2ab3a2['query'],_0x371ecf[_0xbfec('0x38')]),_0x4e9e33);if(_0x2ab3a2['query']['filter']){_0x423fb2[_0xbfec('0x41')]=_[_0xbfec('0x42')](_0x423fb2[_0xbfec('0x41')],{'$or':_['map'](_0x4e9e33,function(_0x43fecd){if(_0x43fecd[_0xbfec('0x33')]!==_0xbfec('0x43')){var _0x35ab57={};_0x35ab57[_0x43fecd[_0xbfec('0x36')]]={'$like':'%'+_0x2ab3a2['query'][_0xbfec('0x44')]+'%'};return _0x35ab57;}})});}_0x423fb2=_[_0xbfec('0x42')]({},_0x423fb2,_0x2ab3a2[_0xbfec('0x45')]);var _0x369ed0={'where':_0x423fb2[_0xbfec('0x41')]};return db[_0xbfec('0x30')]['count'](_0x369ed0)[_0xbfec('0x2c')](function(_0x1d528c){_0x43faf8[_0xbfec('0x23')]=_0x1d528c;if(_0x2ab3a2[_0xbfec('0x37')][_0xbfec('0x46')]){_0x423fb2[_0xbfec('0x47')]=[{'all':!![]}];}return db['VoiceQueueReport'][_0xbfec('0x48')](_0x423fb2);})[_0xbfec('0x2c')](function(_0xd844ff){_0x43faf8[_0xbfec('0x49')]=_0xd844ff;return _0x43faf8;})[_0xbfec('0x2c')](respondWithFilteredResult(_0xa96a15,_0x423fb2))[_0xbfec('0x4a')](handleError(_0xa96a15,null));};exports[_0xbfec('0x4b')]=function(_0x4997e3,_0x2efbbf){var _0x593681={'raw':![],'where':{'id':_0x4997e3[_0xbfec('0x4c')]['id']}},_0x5ba0bb={};_0x5ba0bb['model']=_[_0xbfec('0x4d')](db[_0xbfec('0x30')][_0xbfec('0x31')]);_0x5ba0bb[_0xbfec('0x37')]=_[_0xbfec('0x4d')](_0x4997e3[_0xbfec('0x37')]);_0x5ba0bb[_0xbfec('0x38')]=_['intersection'](_0x5ba0bb[_0xbfec('0x35')],_0x5ba0bb[_0xbfec('0x37')]);_0x593681['attributes']=_[_0xbfec('0x39')](_0x5ba0bb['model'],qs[_0xbfec('0x3a')](_0x4997e3[_0xbfec('0x37')][_0xbfec('0x3a')]));_0x593681[_0xbfec('0x3b')]=_0x593681[_0xbfec('0x3b')][_0xbfec('0x3c')]?_0x593681[_0xbfec('0x3b')]:_0x5ba0bb[_0xbfec('0x35')];if(_0x4997e3[_0xbfec('0x37')]['includeAll']){_0x593681['include']=[{'all':!![]}];}_0x593681=_[_0xbfec('0x42')]({},_0x593681,_0x4997e3[_0xbfec('0x45')]);return db[_0xbfec('0x30')][_0xbfec('0x4e')](_0x593681)[_0xbfec('0x2c')](handleEntityNotFound(_0x2efbbf,null))[_0xbfec('0x2c')](respondWithResult(_0x2efbbf,null))[_0xbfec('0x4a')](handleError(_0x2efbbf,null));};exports[_0xbfec('0x4f')]=function(_0x34f22e,_0x4f25ee){return db['VoiceQueueReport'][_0xbfec('0x4f')](_0x34f22e[_0xbfec('0x50')],{})[_0xbfec('0x2c')](respondWithResult(_0x4f25ee,0xc9))[_0xbfec('0x4a')](handleError(_0x4f25ee,null));};exports[_0xbfec('0x2a')]=function(_0x330eee,_0x524e49){if(_0x330eee[_0xbfec('0x50')]['id']){delete _0x330eee['body']['id'];}return db[_0xbfec('0x30')][_0xbfec('0x4e')]({'where':{'id':_0x330eee['params']['id']}})[_0xbfec('0x2c')](handleEntityNotFound(_0x524e49,null))[_0xbfec('0x2c')](saveUpdates(_0x330eee['body'],null))[_0xbfec('0x2c')](respondWithResult(_0x524e49,null))[_0xbfec('0x4a')](handleError(_0x524e49,null));};exports[_0xbfec('0x2b')]=function(_0x519e4f,_0x4927b0){return db['VoiceQueueReport'][_0xbfec('0x4e')]({'where':{'id':_0x519e4f[_0xbfec('0x4c')]['id']}})[_0xbfec('0x2c')](handleEntityNotFound(_0x4927b0,null))[_0xbfec('0x2c')](removeEntity(_0x4927b0,null))[_0xbfec('0x4a')](handleError(_0x4927b0,null));};exports[_0xbfec('0x51')]=function(_0x333ecf,_0x44f4c9){return db[_0xbfec('0x30')][_0xbfec('0x51')]()[_0xbfec('0x2c')](respondWithResult(_0x44f4c9,null))['catch'](handleError(_0x44f4c9,null));};exports[_0xbfec('0x52')]=function(_0x577f9b,_0x577b37){var _0xcf3959={},_0x3adf8f={},_0x361e7b={'count':0x0,'rows':[]};_0x3adf8f['model']=_['keys'](db[_0xbfec('0x30')][_0xbfec('0x31')]);_0x3adf8f[_0xbfec('0x37')]=_['keys'](_0x577f9b['query']);_0x3adf8f[_0xbfec('0x38')]=_[_0xbfec('0x39')](_0x3adf8f[_0xbfec('0x35')],_0x3adf8f[_0xbfec('0x37')]);_0xcf3959['attributes']=_['intersection'](_0x3adf8f['model'],qs[_0xbfec('0x3a')](_0x577f9b[_0xbfec('0x37')][_0xbfec('0x3a')]));_0xcf3959[_0xbfec('0x3b')]=_0xcf3959[_0xbfec('0x3b')]['length']?_0xcf3959[_0xbfec('0x3b')]:_0x3adf8f[_0xbfec('0x35')];if(!_0x577f9b[_0xbfec('0x37')][_0xbfec('0x3d')]('nolimit')){_0xcf3959[_0xbfec('0x22')]=qs['limit'](_0x577f9b['query'][_0xbfec('0x22')]);_0xcf3959[_0xbfec('0x24')]=qs[_0xbfec('0x24')](_0x577f9b[_0xbfec('0x37')][_0xbfec('0x24')]);}_0xcf3959[_0xbfec('0x3f')]=qs['sort'](_0x577f9b[_0xbfec('0x37')]['sort']);_0xcf3959[_0xbfec('0x41')]=qs[_0xbfec('0x38')](_['pick'](_0x577f9b['query'],_0x3adf8f[_0xbfec('0x38')]));if(_0x577f9b[_0xbfec('0x37')][_0xbfec('0x44')]){_0xcf3959[_0xbfec('0x41')]=_[_0xbfec('0x42')](_0xcf3959['where'],{'$or':_['map'](_0xcf3959[_0xbfec('0x3b')],function(_0x8d4d9a){var _0x38147c={};_0x38147c[_0x8d4d9a]={'$like':'%'+_0x577f9b[_0xbfec('0x37')][_0xbfec('0x44')]+'%'};return _0x38147c;})});}_0xcf3959=_[_0xbfec('0x42')]({},_0xcf3959,_0x577f9b[_0xbfec('0x45')]);var _0x1f8059={'where':_0xcf3959[_0xbfec('0x41')]};return db[_0xbfec('0x30')][_0xbfec('0x23')](_0x1f8059)['then'](function(_0x238bb1){_0x361e7b[_0xbfec('0x23')]=_0x238bb1;if(_0x577f9b[_0xbfec('0x37')][_0xbfec('0x46')]){_0xcf3959[_0xbfec('0x47')]=[{'all':!![]}];}return db['VoiceQueueReport'][_0xbfec('0x48')](_0xcf3959);})[_0xbfec('0x2c')](function(_0x2ee93a){_0x361e7b['rows']=_0x2ee93a;return _0x361e7b;})['then'](respondWithFilteredResult(_0x577b37,_0xcf3959,'getVoiceQueuesReport'))[_0xbfec('0x4a')](handleError(_0x577b37,null,_0xbfec('0x52')));};
\ No newline at end of file
index d9c8028..8e5358c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2994=['VoiceQueueReport','setMaxListeners','save','update','emit','hasOwnProperty','hook','exports','events','../../mysqldb'];(function(_0x48f8b2,_0x45e08c){var _0x3c8a1a=function(_0x277b41){while(--_0x277b41){_0x48f8b2['push'](_0x48f8b2['shift']());}};_0x3c8a1a(++_0x45e08c);}(_0x2994,0xc6));var _0x4299=function(_0x22d202,_0xfcd670){_0x22d202=_0x22d202-0x0;var _0x3cb212=_0x2994[_0x22d202];return _0x3cb212;};'use strict';var EventEmitter=require(_0x4299('0x0'));var VoiceQueueReport=require(_0x4299('0x1'))['db'][_0x4299('0x2')];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0x4299('0x3')](0x0);var events={'afterCreate':_0x4299('0x4'),'afterUpdate':_0x4299('0x5'),'afterDestroy':'remove'};function emitEvent(_0x164d84){return function(_0x3a3ba5,_0x1818f1,_0x189274){VoiceQueueReportEvents['emit'](_0x164d84+':'+_0x3a3ba5['id'],_0x3a3ba5);VoiceQueueReportEvents[_0x4299('0x6')](_0x164d84,_0x3a3ba5);_0x189274(null);};}for(var e in events){if(events[_0x4299('0x7')](e)){var event=events[e];VoiceQueueReport[_0x4299('0x8')](e,emitEvent(event));}}module[_0x4299('0x9')]=VoiceQueueReportEvents;
\ No newline at end of file
+var _0x94aa=['save','emit','hasOwnProperty','events','../../mysqldb','setMaxListeners'];(function(_0x3d2ef4,_0x463cb8){var _0x39286b=function(_0x27b57a){while(--_0x27b57a){_0x3d2ef4['push'](_0x3d2ef4['shift']());}};_0x39286b(++_0x463cb8);}(_0x94aa,0xc3));var _0xa94a=function(_0xceaba7,_0x2a7ebd){_0xceaba7=_0xceaba7-0x0;var _0x3686a3=_0x94aa[_0xceaba7];return _0x3686a3;};'use strict';var EventEmitter=require(_0xa94a('0x0'));var VoiceQueueReport=require(_0xa94a('0x1'))['db']['VoiceQueueReport'];var VoiceQueueReportEvents=new EventEmitter();VoiceQueueReportEvents[_0xa94a('0x2')](0x0);var events={'afterCreate':_0xa94a('0x3'),'afterUpdate':'update','afterDestroy':'remove'};function emitEvent(_0x596800){return function(_0x3bafab,_0x1244f2,_0x37fea1){VoiceQueueReportEvents[_0xa94a('0x4')](_0x596800+':'+_0x3bafab['id'],_0x3bafab);VoiceQueueReportEvents[_0xa94a('0x4')](_0x596800,_0x3bafab);_0x37fea1(null);};}for(var e in events){if(events[_0xa94a('0x5')](e)){var event=events[e];VoiceQueueReport['hook'](e,emitEvent(event));}}module['exports']=VoiceQueueReportEvents;
\ No newline at end of file
index 135af90..4ecbdc0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x885d=['./voiceQueueReport.attributes','define','VoiceQueueReport','uniqueid','calleridnum','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','rimraf','../../config/environment'];(function(_0x22342c,_0x218835){var _0xd3b434=function(_0x45b259){while(--_0x45b259){_0x22342c['push'](_0x22342c['shift']());}};_0xd3b434(++_0x218835);}(_0x885d,0x16d));var _0xd885=function(_0x27af45,_0x1b57aa){_0x27af45=_0x27af45-0x0;var _0x18df21=_0x885d[_0x27af45];return _0x18df21;};'use strict';var _=require(_0xd885('0x0'));var util=require(_0xd885('0x1'));var logger=require(_0xd885('0x2'))(_0xd885('0x3'));var moment=require(_0xd885('0x4'));var BPromise=require(_0xd885('0x5'));var rp=require(_0xd885('0x6'));var fs=require('fs');var path=require(_0xd885('0x7'));var rimraf=require(_0xd885('0x8'));var config=require(_0xd885('0x9'));var attributes=require(_0xd885('0xa'));module['exports']=function(_0x1119a3,_0x3f922c){return _0x1119a3[_0xd885('0xb')](_0xd885('0xc'),attributes,{'tableName':'report_queue','paranoid':![],'indexes':[{'fields':[_0xd885('0xd')]},{'fields':[_0xd885('0xe')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xcb5e=['api','moment','bluebird','path','rimraf','../../config/environment','./voiceQueueReport.attributes','exports','VoiceQueueReport','report_queue','uniqueid','calleridnum','util','../../config/logger'];(function(_0x5a9b6c,_0x30ccd0){var _0x72bed=function(_0x1468ea){while(--_0x1468ea){_0x5a9b6c['push'](_0x5a9b6c['shift']());}};_0x72bed(++_0x30ccd0);}(_0xcb5e,0xb4));var _0xecb5=function(_0x3f4e53,_0x5fd554){_0x3f4e53=_0x3f4e53-0x0;var _0x427f06=_0xcb5e[_0x3f4e53];return _0x427f06;};'use strict';var _=require('lodash');var util=require(_0xecb5('0x0'));var logger=require(_0xecb5('0x1'))(_0xecb5('0x2'));var moment=require(_0xecb5('0x3'));var BPromise=require(_0xecb5('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0xecb5('0x5'));var rimraf=require(_0xecb5('0x6'));var config=require(_0xecb5('0x7'));var attributes=require(_0xecb5('0x8'));module[_0xecb5('0x9')]=function(_0x5080ac,_0x3a9145){return _0x5080ac['define'](_0xecb5('0xa'),attributes,{'tableName':_0xecb5('0xb'),'paranoid':![],'indexes':[{'fields':[_0xecb5('0xc')]},{'fields':[_0xecb5('0xd')]}],'timestamps':!![]});};
\ No newline at end of file
index 2946697..f05675a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3086=['options','raw','where','limit','map','model','attributes','include','GetVoiceQueueReport','stringify','CreateVoiceQueueReport','VoiceQueueReport','create','body','UpdateVoiceQueueReport','update','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','jayson/promise','client','redis','defaults','socket.io-emitter','./voiceQueueReport.socket','request','then','VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','error','message','info','result','catch','findAll'];(function(_0x461528,_0x49bb1b){var _0x268db8=function(_0x164b26){while(--_0x164b26){_0x461528['push'](_0x461528['shift']());}};_0x268db8(++_0x49bb1b);}(_0x3086,0x181));var _0x6308=function(_0x7e2eb0,_0x17cd58){_0x7e2eb0=_0x7e2eb0-0x0;var _0xd92de4=_0x3086[_0x7e2eb0];return _0xd92de4;};'use strict';var _=require(_0x6308('0x0'));var util=require('util');var moment=require(_0x6308('0x1'));var BPromise=require(_0x6308('0x2'));var rs=require(_0x6308('0x3'));var fs=require('fs');var Redis=require(_0x6308('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0x6308('0x5'));var logger=require(_0x6308('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0x6308('0x7'));var client=jayson[_0x6308('0x8')]['http']({'port':0x232a});config[_0x6308('0x9')]=_[_0x6308('0xa')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0x6308('0xb'))(new Redis(config['redis']));require(_0x6308('0xc'))['register'](socket);function respondWithRpcPromise(_0x5875c4,_0x2cb8c3,_0x1fb173){return new BPromise(function(_0x266b97,_0x4891f7){return client[_0x6308('0xd')](_0x5875c4,_0x1fb173)[_0x6308('0xe')](function(_0x591988){logger['info'](_0x6308('0xf'),_0x2cb8c3,_0x6308('0x10'));logger[_0x6308('0x11')](_0x6308('0x12'),_0x2cb8c3,_0x6308('0x10'),JSON['stringify'](_0x591988));if(_0x591988[_0x6308('0x13')]){if(_0x591988[_0x6308('0x13')]['code']===0x1f4){logger[_0x6308('0x13')](_0x6308('0xf'),_0x2cb8c3,_0x591988['error'][_0x6308('0x14')]);return _0x4891f7(_0x591988[_0x6308('0x13')][_0x6308('0x14')]);}logger[_0x6308('0x13')](_0x6308('0xf'),_0x2cb8c3,_0x591988[_0x6308('0x13')][_0x6308('0x14')]);return _0x266b97(_0x591988['error']['message']);}else{logger[_0x6308('0x15')](_0x6308('0xf'),_0x2cb8c3,'request\x20sent');_0x266b97(_0x591988[_0x6308('0x16')]['message']);}})[_0x6308('0x17')](function(_0x53a8fc){logger[_0x6308('0x13')]('VoiceQueueReport,\x20%s,\x20%s',_0x2cb8c3,_0x53a8fc);_0x4891f7(_0x53a8fc);});});}exports['GetVoiceQueueReport']=function(_0x3f0223){var _0x13b6a5=this;return new Promise(function(_0x4d1b85,_0x35b7f4){return db['VoiceQueueReport'][_0x6308('0x18')]({'raw':_0x3f0223['options']?_0x3f0223[_0x6308('0x19')][_0x6308('0x1a')]===undefined?!![]:![]:!![],'where':_0x3f0223['options']?_0x3f0223[_0x6308('0x19')][_0x6308('0x1b')]||null:null,'attributes':_0x3f0223[_0x6308('0x19')]?_0x3f0223['options']['attributes']||null:null,'limit':_0x3f0223[_0x6308('0x19')]?_0x3f0223['options'][_0x6308('0x1c')]||null:null,'include':_0x3f0223[_0x6308('0x19')]?_0x3f0223[_0x6308('0x19')]['include']?_[_0x6308('0x1d')](_0x3f0223['options']['include'],function(_0xbb9214){return{'model':db[_0xbb9214[_0x6308('0x1e')]],'as':_0xbb9214['as'],'attributes':_0xbb9214[_0x6308('0x1f')],'include':_0xbb9214['include']?_[_0x6308('0x1d')](_0xbb9214[_0x6308('0x20')],function(_0xc293c3){return{'model':db[_0xc293c3[_0x6308('0x1e')]],'as':_0xc293c3['as'],'attributes':_0xc293c3['attributes'],'include':_0xc293c3[_0x6308('0x20')]?_[_0x6308('0x1d')](_0xc293c3['include'],function(_0x2f76f5){return{'model':db[_0x2f76f5[_0x6308('0x1e')]],'as':_0x2f76f5['as'],'attributes':_0x2f76f5[_0x6308('0x1f')]};}):[]};}):[]};}):[]:[]})[_0x6308('0xe')](function(_0x4f3c90){logger[_0x6308('0x15')](_0x6308('0x21'),_0x3f0223);logger[_0x6308('0x11')](_0x6308('0x21'),_0x3f0223,JSON[_0x6308('0x22')](_0x4f3c90));_0x4d1b85(_0x4f3c90);})[_0x6308('0x17')](function(_0x4fb826){logger[_0x6308('0x13')](_0x6308('0x21'),_0x4fb826['message'],_0x3f0223);_0x35b7f4(_0x13b6a5[_0x6308('0x13')](0x1f4,_0x4fb826[_0x6308('0x14')]));});});};exports[_0x6308('0x23')]=function(_0x30550e){var _0x3e61d2=this;return new Promise(function(_0x4607d6,_0x4a1477){return db[_0x6308('0x24')][_0x6308('0x25')](_0x30550e[_0x6308('0x26')],{'raw':_0x30550e['options']?_0x30550e['options'][_0x6308('0x1a')]===undefined?!![]:![]:!![]})[_0x6308('0xe')](function(_0x37047e){logger['info'](_0x6308('0x23'),_0x30550e);logger['debug'](_0x6308('0x23'),_0x30550e,JSON[_0x6308('0x22')](_0x37047e));_0x4607d6(_0x37047e);})[_0x6308('0x17')](function(_0x368d2c){logger['error'](_0x6308('0x23'),_0x368d2c[_0x6308('0x14')],_0x30550e);_0x4a1477(_0x3e61d2[_0x6308('0x13')](0x1f4,_0x368d2c['message']));});});};exports[_0x6308('0x27')]=function(_0x1499a7){var _0x345505=this;return new Promise(function(_0x59342d,_0x2ab8a7){return db[_0x6308('0x24')][_0x6308('0x28')](_0x1499a7[_0x6308('0x26')],{'raw':_0x1499a7['options']?_0x1499a7[_0x6308('0x19')][_0x6308('0x1a')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1499a7['options']?_0x1499a7[_0x6308('0x19')][_0x6308('0x1b')]||null:null,'attributes':_0x1499a7[_0x6308('0x19')]?_0x1499a7[_0x6308('0x19')][_0x6308('0x1f')]||null:null,'limit':_0x1499a7[_0x6308('0x19')]?_0x1499a7['options'][_0x6308('0x1c')]||null:null})[_0x6308('0xe')](function(_0x1c0a59){logger[_0x6308('0x15')](_0x6308('0x27'),_0x1499a7);logger[_0x6308('0x11')]('UpdateVoiceQueueReport',_0x1499a7,JSON['stringify'](_0x1c0a59));_0x59342d(_0x1c0a59);})[_0x6308('0x17')](function(_0x2ca7e8){logger[_0x6308('0x13')]('UpdateVoiceQueueReport',_0x2ca7e8[_0x6308('0x14')],_0x1499a7);_0x2ab8a7(_0x345505[_0x6308('0x13')](0x1f4,_0x2ca7e8['message']));});});};
\ No newline at end of file
+var _0x1654=['VoiceQueueReport,\x20%s,\x20%s','request\x20sent','debug','VoiceQueueReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetVoiceQueueReport','VoiceQueueReport','options','raw','where','limit','include','map','model','attributes','CreateVoiceQueueReport','create','body','UpdateVoiceQueueReport','update','lodash','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','socket.io-emitter','./voiceQueueReport.socket','request','then','info'];(function(_0x3864fd,_0x3df174){var _0x3b977e=function(_0x4c803e){while(--_0x4c803e){_0x3864fd['push'](_0x3864fd['shift']());}};_0x3b977e(++_0x3df174);}(_0x1654,0x14d));var _0x4165=function(_0x737c93,_0x25a977){_0x737c93=_0x737c93-0x0;var _0x4d0b33=_0x1654[_0x737c93];return _0x4d0b33;};'use strict';var _=require(_0x4165('0x0'));var util=require('util');var moment=require(_0x4165('0x1'));var BPromise=require(_0x4165('0x2'));var rs=require(_0x4165('0x3'));var fs=require('fs');var Redis=require(_0x4165('0x4'));var db=require(_0x4165('0x5'))['db'];var utils=require(_0x4165('0x6'));var logger=require(_0x4165('0x7'))(_0x4165('0x8'));var config=require(_0x4165('0x9'));var jayson=require(_0x4165('0xa'));var client=jayson[_0x4165('0xb')][_0x4165('0xc')]({'port':0x232a});config[_0x4165('0xd')]=_['defaults'](config[_0x4165('0xd')],{'host':'localhost','port':0x18eb});var socket=require(_0x4165('0xe'))(new Redis(config[_0x4165('0xd')]));require(_0x4165('0xf'))['register'](socket);function respondWithRpcPromise(_0x32ada8,_0x22505f,_0x301aca){return new BPromise(function(_0x3248c4,_0x1005c6){return client[_0x4165('0x10')](_0x32ada8,_0x301aca)[_0x4165('0x11')](function(_0x5388c1){logger[_0x4165('0x12')](_0x4165('0x13'),_0x22505f,_0x4165('0x14'));logger[_0x4165('0x15')](_0x4165('0x16'),_0x22505f,'request\x20sent',JSON[_0x4165('0x17')](_0x5388c1));if(_0x5388c1[_0x4165('0x18')]){if(_0x5388c1[_0x4165('0x18')][_0x4165('0x19')]===0x1f4){logger['error'](_0x4165('0x13'),_0x22505f,_0x5388c1['error'][_0x4165('0x1a')]);return _0x1005c6(_0x5388c1[_0x4165('0x18')][_0x4165('0x1a')]);}logger[_0x4165('0x18')](_0x4165('0x13'),_0x22505f,_0x5388c1[_0x4165('0x18')][_0x4165('0x1a')]);return _0x3248c4(_0x5388c1[_0x4165('0x18')]['message']);}else{logger[_0x4165('0x12')](_0x4165('0x13'),_0x22505f,_0x4165('0x14'));_0x3248c4(_0x5388c1[_0x4165('0x1b')][_0x4165('0x1a')]);}})[_0x4165('0x1c')](function(_0x5b59fa){logger['error'](_0x4165('0x13'),_0x22505f,_0x5b59fa);_0x1005c6(_0x5b59fa);});});}exports[_0x4165('0x1d')]=function(_0x18b446){var _0x3f543c=this;return new Promise(function(_0x45ed1b,_0x1a6b0f){return db[_0x4165('0x1e')]['findAll']({'raw':_0x18b446[_0x4165('0x1f')]?_0x18b446[_0x4165('0x1f')][_0x4165('0x20')]===undefined?!![]:![]:!![],'where':_0x18b446[_0x4165('0x1f')]?_0x18b446[_0x4165('0x1f')][_0x4165('0x21')]||null:null,'attributes':_0x18b446['options']?_0x18b446[_0x4165('0x1f')]['attributes']||null:null,'limit':_0x18b446[_0x4165('0x1f')]?_0x18b446[_0x4165('0x1f')][_0x4165('0x22')]||null:null,'include':_0x18b446[_0x4165('0x1f')]?_0x18b446[_0x4165('0x1f')][_0x4165('0x23')]?_[_0x4165('0x24')](_0x18b446[_0x4165('0x1f')][_0x4165('0x23')],function(_0x14f16e){return{'model':db[_0x14f16e[_0x4165('0x25')]],'as':_0x14f16e['as'],'attributes':_0x14f16e[_0x4165('0x26')],'include':_0x14f16e[_0x4165('0x23')]?_[_0x4165('0x24')](_0x14f16e['include'],function(_0x5a0084){return{'model':db[_0x5a0084[_0x4165('0x25')]],'as':_0x5a0084['as'],'attributes':_0x5a0084['attributes'],'include':_0x5a0084[_0x4165('0x23')]?_['map'](_0x5a0084[_0x4165('0x23')],function(_0x3d0838){return{'model':db[_0x3d0838[_0x4165('0x25')]],'as':_0x3d0838['as'],'attributes':_0x3d0838[_0x4165('0x26')]};}):[]};}):[]};}):[]:[]})[_0x4165('0x11')](function(_0x2db7b9){logger[_0x4165('0x12')]('GetVoiceQueueReport',_0x18b446);logger['debug'](_0x4165('0x1d'),_0x18b446,JSON['stringify'](_0x2db7b9));_0x45ed1b(_0x2db7b9);})['catch'](function(_0x22ff1a){logger['error'](_0x4165('0x1d'),_0x22ff1a[_0x4165('0x1a')],_0x18b446);_0x1a6b0f(_0x3f543c[_0x4165('0x18')](0x1f4,_0x22ff1a[_0x4165('0x1a')]));});});};exports[_0x4165('0x27')]=function(_0x5b01b0){var _0xce839c=this;return new Promise(function(_0x3b9e78,_0x340e7a){return db[_0x4165('0x1e')][_0x4165('0x28')](_0x5b01b0[_0x4165('0x29')],{'raw':_0x5b01b0[_0x4165('0x1f')]?_0x5b01b0['options']['raw']===undefined?!![]:![]:!![]})[_0x4165('0x11')](function(_0x4a5770){logger[_0x4165('0x12')]('CreateVoiceQueueReport',_0x5b01b0);logger['debug'](_0x4165('0x27'),_0x5b01b0,JSON['stringify'](_0x4a5770));_0x3b9e78(_0x4a5770);})[_0x4165('0x1c')](function(_0xccc290){logger[_0x4165('0x18')](_0x4165('0x27'),_0xccc290[_0x4165('0x1a')],_0x5b01b0);_0x340e7a(_0xce839c[_0x4165('0x18')](0x1f4,_0xccc290['message']));});});};exports[_0x4165('0x2a')]=function(_0x640b47){var _0x2183bc=this;return new Promise(function(_0x22e692,_0x25018b){return db[_0x4165('0x1e')][_0x4165('0x2b')](_0x640b47['body'],{'raw':_0x640b47[_0x4165('0x1f')]?_0x640b47[_0x4165('0x1f')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x640b47['options']?_0x640b47[_0x4165('0x1f')][_0x4165('0x21')]||null:null,'attributes':_0x640b47[_0x4165('0x1f')]?_0x640b47[_0x4165('0x1f')][_0x4165('0x26')]||null:null,'limit':_0x640b47[_0x4165('0x1f')]?_0x640b47[_0x4165('0x1f')]['limit']||null:null})['then'](function(_0x9e3cc){logger[_0x4165('0x12')]('UpdateVoiceQueueReport',_0x640b47);logger['debug'](_0x4165('0x2a'),_0x640b47,JSON['stringify'](_0x9e3cc));_0x22e692(_0x9e3cc);})['catch'](function(_0x2d0d6b){logger[_0x4165('0x18')](_0x4165('0x2a'),_0x2d0d6b['message'],_0x640b47);_0x25018b(_0x2183bc['error'](0x1f4,_0x2d0d6b[_0x4165('0x1a')]));});});};
\ No newline at end of file
index cc4ba93..68e3120 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfd0f=['save','update','emit','removeListener','register','length','./voiceQueueReport.events'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xfd0f,0x1b8));var _0xffd0=function(_0x475bbc,_0x10cda2){_0x475bbc=_0x475bbc-0x0;var _0x3300d8=_0xfd0f[_0x475bbc];return _0x3300d8;};'use strict';var VoiceQueueReportEvents=require(_0xffd0('0x0'));var events=[_0xffd0('0x1'),'remove',_0xffd0('0x2')];function createListener(_0x28aea8,_0xe1219f){return function(_0x4d3300){_0xe1219f[_0xffd0('0x3')](_0x28aea8,_0x4d3300);};}function removeListener(_0x5e9c0a,_0x303f38){return function(){VoiceQueueReportEvents[_0xffd0('0x4')](_0x5e9c0a,_0x303f38);};}exports[_0xffd0('0x5')]=function(_0x9e9c1f){for(var _0xd7f075=0x0,_0x1b64a5=events[_0xffd0('0x6')];_0xd7f075<_0x1b64a5;_0xd7f075++){var _0x3fcf31=events[_0xd7f075];var _0x55488d=createListener('voiceQueueReport:'+_0x3fcf31,_0x9e9c1f);VoiceQueueReportEvents['on'](_0x3fcf31,_0x55488d);}};
\ No newline at end of file
+var _0x9973=['emit','removeListener','length','save','remove'];(function(_0xff8595,_0x39341d){var _0x31e49e=function(_0x23ee7b){while(--_0x23ee7b){_0xff8595['push'](_0xff8595['shift']());}};_0x31e49e(++_0x39341d);}(_0x9973,0x157));var _0x3997=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x9973[_0x2c91e9];return _0x13f0ff;};'use strict';var VoiceQueueReportEvents=require('./voiceQueueReport.events');var events=[_0x3997('0x0'),_0x3997('0x1'),'update'];function createListener(_0x3e174d,_0x403ff4){return function(_0x7e051d){_0x403ff4[_0x3997('0x2')](_0x3e174d,_0x7e051d);};}function removeListener(_0x873171,_0x30c504){return function(){VoiceQueueReportEvents[_0x3997('0x3')](_0x873171,_0x30c504);};}exports['register']=function(_0x48c26c){for(var _0x320340=0x0,_0x114d26=events[_0x3997('0x4')];_0x320340<_0x114d26;_0x320340++){var _0x483d44=events[_0x320340];var _0x569ddf=createListener('voiceQueueReport:'+_0x483d44,_0x48c26c);VoiceQueueReportEvents['on'](_0x483d44,_0x569ddf);}};
\ No newline at end of file
index 927bfbe..b6fd902 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc0d3=['../../config/environment','./voiceQueuesLog.controller','get','isAuthenticated','index','/:id','put','update','destroy','exports','multer','util','path','connect-timeout','express','Router','../../components/auth/service'];(function(_0x178e48,_0x3c9509){var _0x440d7e=function(_0xc2f8a0){while(--_0xc2f8a0){_0x178e48['push'](_0x178e48['shift']());}};_0x440d7e(++_0x3c9509);}(_0xc0d3,0x191));var _0x3c0d=function(_0x26fafa,_0x2d4c7b){_0x26fafa=_0x26fafa-0x0;var _0x5f165b=_0xc0d3[_0x26fafa];return _0x5f165b;};'use strict';var multer=require(_0x3c0d('0x0'));var util=require(_0x3c0d('0x1'));var path=require(_0x3c0d('0x2'));var timeout=require(_0x3c0d('0x3'));var express=require(_0x3c0d('0x4'));var router=express[_0x3c0d('0x5')]();var fs_extra=require('fs-extra');var auth=require(_0x3c0d('0x6'));var interaction=require('../../components/interaction/service');var config=require(_0x3c0d('0x7'));var controller=require(_0x3c0d('0x8'));router[_0x3c0d('0x9')]('/',auth[_0x3c0d('0xa')](),controller[_0x3c0d('0xb')]);router[_0x3c0d('0x9')](_0x3c0d('0xc'),auth['isAuthenticated'](),controller['show']);router['post']('/',auth[_0x3c0d('0xa')](),controller['create']);router[_0x3c0d('0xd')](_0x3c0d('0xc'),auth[_0x3c0d('0xa')](),controller[_0x3c0d('0xe')]);router['delete'](_0x3c0d('0xc'),auth[_0x3c0d('0xa')](),controller[_0x3c0d('0xf')]);module[_0x3c0d('0x10')]=router;
\ No newline at end of file
+var _0x323f=['fs-extra','../../components/auth/service','../../components/interaction/service','./voiceQueuesLog.controller','isAuthenticated','index','get','/:id','show','post','create','destroy','util','connect-timeout','Router'];(function(_0x5251d5,_0x38f948){var _0xa152ff=function(_0x13e106){while(--_0x13e106){_0x5251d5['push'](_0x5251d5['shift']());}};_0xa152ff(++_0x38f948);}(_0x323f,0xde));var _0xf323=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x323f[_0x501510];return _0x1e6ee5;};'use strict';var multer=require('multer');var util=require(_0xf323('0x0'));var path=require('path');var timeout=require(_0xf323('0x1'));var express=require('express');var router=express[_0xf323('0x2')]();var fs_extra=require(_0xf323('0x3'));var auth=require(_0xf323('0x4'));var interaction=require(_0xf323('0x5'));var config=require('../../config/environment');var controller=require(_0xf323('0x6'));router['get']('/',auth[_0xf323('0x7')](),controller[_0xf323('0x8')]);router[_0xf323('0x9')](_0xf323('0xa'),auth[_0xf323('0x7')](),controller[_0xf323('0xb')]);router[_0xf323('0xc')]('/',auth[_0xf323('0x7')](),controller[_0xf323('0xd')]);router['put'](_0xf323('0xa'),auth['isAuthenticated'](),controller['update']);router['delete'](_0xf323('0xa'),auth[_0xf323('0x7')](),controller[_0xf323('0xe')]);module['exports']=router;
\ No newline at end of file
index 5195b6d..e346bce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1fd9=['exports','STRING','DATE','format','YYYY-MM-DD\x20HH:mm:ss','sequelize','moment'];(function(_0x3c6f0e,_0x53fea4){var _0x1b11e7=function(_0x2403be){while(--_0x2403be){_0x3c6f0e['push'](_0x3c6f0e['shift']());}};_0x1b11e7(++_0x53fea4);}(_0x1fd9,0x19b));var _0x91fd=function(_0x15c858,_0x13a68d){_0x15c858=_0x15c858-0x0;var _0x2088bf=_0x1fd9[_0x15c858];return _0x2088bf;};'use strict';var Sequelize=require(_0x91fd('0x0'));var moment=require(_0x91fd('0x1'));module[_0x91fd('0x2')]={'time':{'type':Sequelize[_0x91fd('0x3')]},'callid':{'type':Sequelize[_0x91fd('0x3')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x91fd('0x3')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize[_0x91fd('0x3')],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x91fd('0x3')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize[_0x91fd('0x3')],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x91fd('0x3')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x91fd('0x4')],'allowNull':![],'defaultValue':moment()[_0x91fd('0x5')](_0x91fd('0x6'))}};
\ No newline at end of file
+var _0x6927=['YYYY-MM-DD\x20HH:mm:ss','sequelize','exports','STRING','DATE'];(function(_0x364cba,_0x19c43b){var _0x1e6de2=function(_0x11731b){while(--_0x11731b){_0x364cba['push'](_0x364cba['shift']());}};_0x1e6de2(++_0x19c43b);}(_0x6927,0xf6));var _0x7692=function(_0x17c404,_0x442fb7){_0x17c404=_0x17c404-0x0;var _0x2d646c=_0x6927[_0x17c404];return _0x2d646c;};'use strict';var Sequelize=require(_0x7692('0x0'));var moment=require('moment');module[_0x7692('0x1')]={'time':{'type':Sequelize[_0x7692('0x2')]},'callid':{'type':Sequelize[_0x7692('0x2')],'allowNull':![],'defaultValue':''},'queuename':{'type':Sequelize[_0x7692('0x2')],'allowNull':![],'defaultValue':''},'agent':{'type':Sequelize[_0x7692('0x2')],'allowNull':![],'defaultValue':''},'event':{'type':Sequelize[_0x7692('0x2')],'allowNull':![],'defaultValue':''},'data':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data1':{'type':Sequelize[_0x7692('0x2')],'allowNull':![],'defaultValue':''},'data2':{'type':Sequelize[_0x7692('0x2')],'allowNull':![],'defaultValue':''},'data3':{'type':Sequelize[_0x7692('0x2')],'allowNull':![],'defaultValue':''},'data4':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':''},'data5':{'type':Sequelize[_0x7692('0x2')],'allowNull':![],'defaultValue':''},'dtm':{'type':Sequelize[_0x7692('0x3')],'allowNull':![],'defaultValue':moment()['format'](_0x7692('0x4'))}};
\ No newline at end of file
index 91b262f..a39cdcd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x62b1=['pick','VIRTUAL','filter','options','includeAll','rows','show','params','keys','merge','find','catch','create','body','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','to-csv','ejs','lodash','crypto','jsforce','querystring','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','offset','undefined','limit','count','set','apply','save','then','destroy','error','name','index','map','VoiceQueuesLog','fieldName','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','where'];(function(_0x41e3e5,_0x441240){var _0x4b5b5c=function(_0x5b988a){while(--_0x5b988a){_0x41e3e5['push'](_0x41e3e5['shift']());}};_0x4b5b5c(++_0x441240);}(_0x62b1,0x1f1));var _0x162b=function(_0xa99316,_0x49a175){_0xa99316=_0xa99316-0x0;var _0x4f9a12=_0x62b1[_0xa99316];return _0x4f9a12;};'use strict';var emlformat=require(_0x162b('0x0'));var rimraf=require(_0x162b('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x162b('0x2'));var rp=require(_0x162b('0x3'));var moment=require(_0x162b('0x4'));var BPromise=require(_0x162b('0x5'));var Mustache=require(_0x162b('0x6'));var util=require('util');var path=require(_0x162b('0x7'));var sox=require('sox');var csv=require(_0x162b('0x8'));var ejs=require(_0x162b('0x9'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x162b('0xa'));var squel=require('squel');var crypto=require(_0x162b('0xb'));var jsforce=require(_0x162b('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x162b('0x8'));var querystring=require(_0x162b('0xd'));var Papa=require('papaparse');var Redis=require(_0x162b('0xe'));var authService=require(_0x162b('0xf'));var qs=require(_0x162b('0x10'));var as=require(_0x162b('0x11'));var hardwareService=require(_0x162b('0x12'));var logger=require(_0x162b('0x13'))(_0x162b('0x14'));var utils=require('../../config/utils');var config=require(_0x162b('0x15'));var licenseUtil=require(_0x162b('0x16'));var db=require(_0x162b('0x17'))['db'];function respondWithStatusCode(_0x31b160,_0x41d8d2){_0x41d8d2=_0x41d8d2||0xcc;return function(_0x52de3a){if(_0x52de3a){return _0x31b160[_0x162b('0x18')](_0x41d8d2);}return _0x31b160[_0x162b('0x19')](_0x41d8d2)[_0x162b('0x1a')]();};}function respondWithResult(_0x4e88f3,_0x171978){_0x171978=_0x171978||0xc8;return function(_0x279249){if(_0x279249){return _0x4e88f3[_0x162b('0x19')](_0x171978)[_0x162b('0x1b')](_0x279249);}};}function respondWithFilteredResult(_0x2aad48,_0xfad130){return function(_0x21fe06){if(_0x21fe06){var _0x3b84b9=typeof _0xfad130[_0x162b('0x1c')]===_0x162b('0x1d')&&typeof _0xfad130[_0x162b('0x1e')]===_0x162b('0x1d');var _0x45cef8=_0x21fe06[_0x162b('0x1f')];var _0x25f2e5=_0x3b84b9?0x0:_0xfad130[_0x162b('0x1c')];var _0x54dbe8=_0x3b84b9?_0x21fe06[_0x162b('0x1f')]:_0xfad130['offset']+_0xfad130[_0x162b('0x1e')];var _0x2ed8ff;if(_0x54dbe8>=_0x45cef8){_0x54dbe8=_0x45cef8;_0x2ed8ff=0xc8;}else{_0x2ed8ff=0xce;}_0x2aad48[_0x162b('0x19')](_0x2ed8ff);return _0x2aad48[_0x162b('0x20')]('Content-Range',_0x25f2e5+'-'+_0x54dbe8+'/'+_0x45cef8)['json'](_0x21fe06);}return null;};}function patchUpdates(_0xfdc533){return function(_0x541d4e){try{jsonpatch[_0x162b('0x21')](_0x541d4e,_0xfdc533,!![]);}catch(_0x12c45c){return BPromise['reject'](_0x12c45c);}return _0x541d4e[_0x162b('0x22')]();};}function saveUpdates(_0x59a36b,_0x8ed32e){return function(_0x328f99){if(_0x328f99){return _0x328f99['update'](_0x59a36b)[_0x162b('0x23')](function(_0x5c2df7){return _0x5c2df7;});}return null;};}function removeEntity(_0xd15b8f,_0x2dba5c){return function(_0x48b595){if(_0x48b595){return _0x48b595[_0x162b('0x24')]()[_0x162b('0x23')](function(){_0xd15b8f[_0x162b('0x19')](0xcc)[_0x162b('0x1a')]();});}};}function handleEntityNotFound(_0x473971,_0x252e90){return function(_0x37e607){if(!_0x37e607){_0x473971[_0x162b('0x18')](0x194);}return _0x37e607;};}function handleError(_0x2dd59f,_0x23ceab){_0x23ceab=_0x23ceab||0x1f4;return function(_0xdb20df){logger[_0x162b('0x25')](_0xdb20df['stack']);if(_0xdb20df[_0x162b('0x26')]){delete _0xdb20df[_0x162b('0x26')];}_0x2dd59f['status'](_0x23ceab)['send'](_0xdb20df);};}exports[_0x162b('0x27')]=function(_0xfc1187,_0x5aef85){var _0x1a5ae3={},_0x3dfce4={},_0x30fd7e={'count':0x0,'rows':[]};var _0x4a1e5f=_[_0x162b('0x28')](db[_0x162b('0x29')]['rawAttributes'],function(_0x274915){return{'name':_0x274915[_0x162b('0x2a')],'type':_0x274915[_0x162b('0x2b')][_0x162b('0x2c')]};});_0x3dfce4[_0x162b('0x2d')]=_[_0x162b('0x28')](_0x4a1e5f,_0x162b('0x26'));_0x3dfce4[_0x162b('0x2e')]=_['keys'](_0xfc1187[_0x162b('0x2e')]);_0x3dfce4[_0x162b('0x2f')]=_['intersection'](_0x3dfce4[_0x162b('0x2d')],_0x3dfce4[_0x162b('0x2e')]);_0x1a5ae3[_0x162b('0x30')]=_[_0x162b('0x31')](_0x3dfce4[_0x162b('0x2d')],qs[_0x162b('0x32')](_0xfc1187[_0x162b('0x2e')][_0x162b('0x32')]));_0x1a5ae3[_0x162b('0x30')]=_0x1a5ae3[_0x162b('0x30')][_0x162b('0x33')]?_0x1a5ae3[_0x162b('0x30')]:_0x3dfce4[_0x162b('0x2d')];if(!_0xfc1187[_0x162b('0x2e')][_0x162b('0x34')]('nolimit')){_0x1a5ae3[_0x162b('0x1e')]=qs[_0x162b('0x1e')](_0xfc1187[_0x162b('0x2e')][_0x162b('0x1e')]);_0x1a5ae3[_0x162b('0x1c')]=qs['offset'](_0xfc1187[_0x162b('0x2e')]['offset']);}_0x1a5ae3[_0x162b('0x35')]=qs['sort'](_0xfc1187[_0x162b('0x2e')]['sort']);_0x1a5ae3[_0x162b('0x36')]=qs['filters'](_[_0x162b('0x37')](_0xfc1187[_0x162b('0x2e')],_0x3dfce4['filters']),_0x4a1e5f);if(_0xfc1187[_0x162b('0x2e')]['filter']){_0x1a5ae3[_0x162b('0x36')]=_['merge'](_0x1a5ae3[_0x162b('0x36')],{'$or':_['map'](_0x4a1e5f,function(_0x2084d7){if(_0x2084d7[_0x162b('0x2b')]!==_0x162b('0x38')){var _0x30e178={};_0x30e178[_0x2084d7['name']]={'$like':'%'+_0xfc1187[_0x162b('0x2e')][_0x162b('0x39')]+'%'};return _0x30e178;}})});}_0x1a5ae3=_['merge']({},_0x1a5ae3,_0xfc1187[_0x162b('0x3a')]);var _0x4e801b={'where':_0x1a5ae3['where']};return db[_0x162b('0x29')][_0x162b('0x1f')](_0x4e801b)['then'](function(_0x6f0c4){_0x30fd7e[_0x162b('0x1f')]=_0x6f0c4;if(_0xfc1187[_0x162b('0x2e')][_0x162b('0x3b')]){_0x1a5ae3['include']=[{'all':!![]}];}return db[_0x162b('0x29')]['findAll'](_0x1a5ae3);})[_0x162b('0x23')](function(_0x412282){_0x30fd7e[_0x162b('0x3c')]=_0x412282;return _0x30fd7e;})['then'](respondWithFilteredResult(_0x5aef85,_0x1a5ae3))['catch'](handleError(_0x5aef85,null));};exports[_0x162b('0x3d')]=function(_0x3b84b8,_0x5af7c3){var _0x345528={'raw':!![],'where':{'id':_0x3b84b8[_0x162b('0x3e')]['id']}},_0x3f9253={};_0x3f9253['model']=_[_0x162b('0x3f')](db[_0x162b('0x29')]['rawAttributes']);_0x3f9253[_0x162b('0x2e')]=_[_0x162b('0x3f')](_0x3b84b8['query']);_0x3f9253[_0x162b('0x2f')]=_['intersection'](_0x3f9253[_0x162b('0x2d')],_0x3f9253[_0x162b('0x2e')]);_0x345528[_0x162b('0x30')]=_[_0x162b('0x31')](_0x3f9253[_0x162b('0x2d')],qs[_0x162b('0x32')](_0x3b84b8['query'][_0x162b('0x32')]));_0x345528['attributes']=_0x345528[_0x162b('0x30')][_0x162b('0x33')]?_0x345528[_0x162b('0x30')]:_0x3f9253[_0x162b('0x2d')];if(_0x3b84b8[_0x162b('0x2e')][_0x162b('0x3b')]){_0x345528['include']=[{'all':!![]}];}_0x345528=_[_0x162b('0x40')]({},_0x345528,_0x3b84b8[_0x162b('0x3a')]);return db[_0x162b('0x29')][_0x162b('0x41')](_0x345528)[_0x162b('0x23')](handleEntityNotFound(_0x5af7c3,null))['then'](respondWithResult(_0x5af7c3,null))[_0x162b('0x42')](handleError(_0x5af7c3,null));};exports[_0x162b('0x43')]=function(_0x332eea,_0x208b9b){return db[_0x162b('0x29')][_0x162b('0x43')](_0x332eea['body'],{})['then'](respondWithResult(_0x208b9b,0xc9))[_0x162b('0x42')](handleError(_0x208b9b,null));};exports['update']=function(_0x30c275,_0x34b273){if(_0x30c275[_0x162b('0x44')]['id']){delete _0x30c275[_0x162b('0x44')]['id'];}return db[_0x162b('0x29')][_0x162b('0x41')]({'where':{'id':_0x30c275['params']['id']}})[_0x162b('0x23')](handleEntityNotFound(_0x34b273,null))[_0x162b('0x23')](saveUpdates(_0x30c275['body'],null))[_0x162b('0x23')](respondWithResult(_0x34b273,null))[_0x162b('0x42')](handleError(_0x34b273,null));};exports[_0x162b('0x24')]=function(_0xa77421,_0x22c568){return db[_0x162b('0x29')][_0x162b('0x41')]({'where':{'id':_0xa77421['params']['id']}})[_0x162b('0x23')](handleEntityNotFound(_0x22c568,null))['then'](removeEntity(_0x22c568,null))[_0x162b('0x42')](handleError(_0x22c568,null));};
\ No newline at end of file
+var _0x6c84=['update','then','destroy','sendStatus','error','stack','name','send','index','map','VoiceQueuesLog','rawAttributes','fieldName','type','key','model','query','keys','intersection','fields','attributes','length','hasOwnProperty','nolimit','sort','where','filters','pick','filter','merge','options','includeAll','include','findAll','catch','show','create','body','find','params','eml-format','request-promise','moment','bluebird','mustache','path','sox','to-csv','fs-extra','crypto','jsforce','querystring','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','status','end','json','offset','limit','count','set','Content-Range','reject','save'];(function(_0x1e0809,_0x2b3fa2){var _0x1b34c2=function(_0x497df7){while(--_0x497df7){_0x1e0809['push'](_0x1e0809['shift']());}};_0x1b34c2(++_0x2b3fa2);}(_0x6c84,0xfd));var _0x46c8=function(_0x49b207,_0x408ade){_0x49b207=_0x49b207-0x0;var _0x2dc8fa=_0x6c84[_0x49b207];return _0x2dc8fa;};'use strict';var emlformat=require(_0x46c8('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require('fast-json-patch');var rp=require(_0x46c8('0x1'));var moment=require(_0x46c8('0x2'));var BPromise=require(_0x46c8('0x3'));var Mustache=require(_0x46c8('0x4'));var util=require('util');var path=require(_0x46c8('0x5'));var sox=require(_0x46c8('0x6'));var csv=require(_0x46c8('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x46c8('0x8'));var _=require('lodash');var squel=require('squel');var crypto=require(_0x46c8('0x9'));var jsforce=require(_0x46c8('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x46c8('0x7'));var querystring=require(_0x46c8('0xb'));var Papa=require('papaparse');var Redis=require(_0x46c8('0xc'));var authService=require('../../components/auth/service');var qs=require(_0x46c8('0xd'));var as=require(_0x46c8('0xe'));var hardwareService=require(_0x46c8('0xf'));var logger=require(_0x46c8('0x10'))(_0x46c8('0x11'));var utils=require(_0x46c8('0x12'));var config=require(_0x46c8('0x13'));var licenseUtil=require(_0x46c8('0x14'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xbb8982,_0x355180){_0x355180=_0x355180||0xcc;return function(_0x39b649){if(_0x39b649){return _0xbb8982['sendStatus'](_0x355180);}return _0xbb8982[_0x46c8('0x15')](_0x355180)[_0x46c8('0x16')]();};}function respondWithResult(_0x4ccce6,_0x3ff52a){_0x3ff52a=_0x3ff52a||0xc8;return function(_0x5c3277){if(_0x5c3277){return _0x4ccce6[_0x46c8('0x15')](_0x3ff52a)[_0x46c8('0x17')](_0x5c3277);}};}function respondWithFilteredResult(_0x5bd7f5,_0x53cc5f){return function(_0x649ff1){if(_0x649ff1){var _0x4d4dba=typeof _0x53cc5f[_0x46c8('0x18')]==='undefined'&&typeof _0x53cc5f[_0x46c8('0x19')]==='undefined';var _0x321037=_0x649ff1[_0x46c8('0x1a')];var _0xc99eb=_0x4d4dba?0x0:_0x53cc5f[_0x46c8('0x18')];var _0x33892e=_0x4d4dba?_0x649ff1[_0x46c8('0x1a')]:_0x53cc5f[_0x46c8('0x18')]+_0x53cc5f[_0x46c8('0x19')];var _0x49adc0;if(_0x33892e>=_0x321037){_0x33892e=_0x321037;_0x49adc0=0xc8;}else{_0x49adc0=0xce;}_0x5bd7f5[_0x46c8('0x15')](_0x49adc0);return _0x5bd7f5[_0x46c8('0x1b')](_0x46c8('0x1c'),_0xc99eb+'-'+_0x33892e+'/'+_0x321037)[_0x46c8('0x17')](_0x649ff1);}return null;};}function patchUpdates(_0x5b1813){return function(_0x4fc445){try{jsonpatch['apply'](_0x4fc445,_0x5b1813,!![]);}catch(_0x18b07b){return BPromise[_0x46c8('0x1d')](_0x18b07b);}return _0x4fc445[_0x46c8('0x1e')]();};}function saveUpdates(_0x21ab85,_0xf8a846){return function(_0x460752){if(_0x460752){return _0x460752[_0x46c8('0x1f')](_0x21ab85)[_0x46c8('0x20')](function(_0x42a33b){return _0x42a33b;});}return null;};}function removeEntity(_0x52d537,_0x506154){return function(_0x2f89c2){if(_0x2f89c2){return _0x2f89c2[_0x46c8('0x21')]()['then'](function(){_0x52d537[_0x46c8('0x15')](0xcc)[_0x46c8('0x16')]();});}};}function handleEntityNotFound(_0x2d3476,_0x558bd8){return function(_0x229479){if(!_0x229479){_0x2d3476[_0x46c8('0x22')](0x194);}return _0x229479;};}function handleError(_0x446733,_0xa4e553){_0xa4e553=_0xa4e553||0x1f4;return function(_0x3f985b){logger[_0x46c8('0x23')](_0x3f985b[_0x46c8('0x24')]);if(_0x3f985b[_0x46c8('0x25')]){delete _0x3f985b[_0x46c8('0x25')];}_0x446733['status'](_0xa4e553)[_0x46c8('0x26')](_0x3f985b);};}exports[_0x46c8('0x27')]=function(_0x4658cf,_0x495daf){var _0x12b07b={},_0x67bdb3={},_0x1e4eda={'count':0x0,'rows':[]};var _0x2d0e69=_[_0x46c8('0x28')](db[_0x46c8('0x29')][_0x46c8('0x2a')],function(_0x22d047){return{'name':_0x22d047[_0x46c8('0x2b')],'type':_0x22d047[_0x46c8('0x2c')][_0x46c8('0x2d')]};});_0x67bdb3[_0x46c8('0x2e')]=_[_0x46c8('0x28')](_0x2d0e69,_0x46c8('0x25'));_0x67bdb3[_0x46c8('0x2f')]=_[_0x46c8('0x30')](_0x4658cf['query']);_0x67bdb3['filters']=_[_0x46c8('0x31')](_0x67bdb3[_0x46c8('0x2e')],_0x67bdb3[_0x46c8('0x2f')]);_0x12b07b['attributes']=_[_0x46c8('0x31')](_0x67bdb3[_0x46c8('0x2e')],qs[_0x46c8('0x32')](_0x4658cf[_0x46c8('0x2f')][_0x46c8('0x32')]));_0x12b07b[_0x46c8('0x33')]=_0x12b07b[_0x46c8('0x33')][_0x46c8('0x34')]?_0x12b07b['attributes']:_0x67bdb3['model'];if(!_0x4658cf[_0x46c8('0x2f')][_0x46c8('0x35')](_0x46c8('0x36'))){_0x12b07b[_0x46c8('0x19')]=qs[_0x46c8('0x19')](_0x4658cf[_0x46c8('0x2f')][_0x46c8('0x19')]);_0x12b07b[_0x46c8('0x18')]=qs[_0x46c8('0x18')](_0x4658cf[_0x46c8('0x2f')][_0x46c8('0x18')]);}_0x12b07b['order']=qs[_0x46c8('0x37')](_0x4658cf[_0x46c8('0x2f')][_0x46c8('0x37')]);_0x12b07b[_0x46c8('0x38')]=qs[_0x46c8('0x39')](_[_0x46c8('0x3a')](_0x4658cf[_0x46c8('0x2f')],_0x67bdb3[_0x46c8('0x39')]),_0x2d0e69);if(_0x4658cf[_0x46c8('0x2f')][_0x46c8('0x3b')]){_0x12b07b[_0x46c8('0x38')]=_[_0x46c8('0x3c')](_0x12b07b[_0x46c8('0x38')],{'$or':_['map'](_0x2d0e69,function(_0x34bc36){if(_0x34bc36[_0x46c8('0x2c')]!=='VIRTUAL'){var _0x29239c={};_0x29239c[_0x34bc36[_0x46c8('0x25')]]={'$like':'%'+_0x4658cf[_0x46c8('0x2f')][_0x46c8('0x3b')]+'%'};return _0x29239c;}})});}_0x12b07b=_[_0x46c8('0x3c')]({},_0x12b07b,_0x4658cf[_0x46c8('0x3d')]);var _0x2c5c39={'where':_0x12b07b[_0x46c8('0x38')]};return db[_0x46c8('0x29')][_0x46c8('0x1a')](_0x2c5c39)[_0x46c8('0x20')](function(_0xeda212){_0x1e4eda[_0x46c8('0x1a')]=_0xeda212;if(_0x4658cf[_0x46c8('0x2f')][_0x46c8('0x3e')]){_0x12b07b[_0x46c8('0x3f')]=[{'all':!![]}];}return db[_0x46c8('0x29')][_0x46c8('0x40')](_0x12b07b);})['then'](function(_0x55af22){_0x1e4eda['rows']=_0x55af22;return _0x1e4eda;})[_0x46c8('0x20')](respondWithFilteredResult(_0x495daf,_0x12b07b))[_0x46c8('0x41')](handleError(_0x495daf,null));};exports[_0x46c8('0x42')]=function(_0x57dcda,_0x329202){var _0x5c4db2={'raw':!![],'where':{'id':_0x57dcda['params']['id']}},_0x525aa1={};_0x525aa1[_0x46c8('0x2e')]=_[_0x46c8('0x30')](db[_0x46c8('0x29')]['rawAttributes']);_0x525aa1['query']=_[_0x46c8('0x30')](_0x57dcda['query']);_0x525aa1[_0x46c8('0x39')]=_[_0x46c8('0x31')](_0x525aa1[_0x46c8('0x2e')],_0x525aa1[_0x46c8('0x2f')]);_0x5c4db2[_0x46c8('0x33')]=_['intersection'](_0x525aa1[_0x46c8('0x2e')],qs[_0x46c8('0x32')](_0x57dcda[_0x46c8('0x2f')]['fields']));_0x5c4db2[_0x46c8('0x33')]=_0x5c4db2['attributes'][_0x46c8('0x34')]?_0x5c4db2[_0x46c8('0x33')]:_0x525aa1['model'];if(_0x57dcda[_0x46c8('0x2f')][_0x46c8('0x3e')]){_0x5c4db2['include']=[{'all':!![]}];}_0x5c4db2=_[_0x46c8('0x3c')]({},_0x5c4db2,_0x57dcda[_0x46c8('0x3d')]);return db[_0x46c8('0x29')]['find'](_0x5c4db2)[_0x46c8('0x20')](handleEntityNotFound(_0x329202,null))['then'](respondWithResult(_0x329202,null))['catch'](handleError(_0x329202,null));};exports['create']=function(_0xf5171a,_0x15e128){return db[_0x46c8('0x29')][_0x46c8('0x43')](_0xf5171a[_0x46c8('0x44')],{})[_0x46c8('0x20')](respondWithResult(_0x15e128,0xc9))[_0x46c8('0x41')](handleError(_0x15e128,null));};exports[_0x46c8('0x1f')]=function(_0x988d0f,_0x1f2373){if(_0x988d0f[_0x46c8('0x44')]['id']){delete _0x988d0f['body']['id'];}return db['VoiceQueuesLog'][_0x46c8('0x45')]({'where':{'id':_0x988d0f[_0x46c8('0x46')]['id']}})[_0x46c8('0x20')](handleEntityNotFound(_0x1f2373,null))[_0x46c8('0x20')](saveUpdates(_0x988d0f['body'],null))[_0x46c8('0x20')](respondWithResult(_0x1f2373,null))[_0x46c8('0x41')](handleError(_0x1f2373,null));};exports[_0x46c8('0x21')]=function(_0x4f3cd4,_0x15da5e){return db[_0x46c8('0x29')][_0x46c8('0x45')]({'where':{'id':_0x4f3cd4[_0x46c8('0x46')]['id']}})[_0x46c8('0x20')](handleEntityNotFound(_0x15da5e,null))[_0x46c8('0x20')](removeEntity(_0x15da5e,null))[_0x46c8('0x41')](handleError(_0x15da5e,null));};
\ No newline at end of file
index 08b6ade..17c981b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xda46=['request-promise','path','rimraf','../../config/environment','./voiceQueuesLog.attributes','define','VoiceQueuesLog','event_dtm','event','dtm','util','../../config/logger','api','moment','bluebird'];(function(_0xc8db29,_0x268fa5){var _0x48d2c1=function(_0x5be83b){while(--_0x5be83b){_0xc8db29['push'](_0xc8db29['shift']());}};_0x48d2c1(++_0x268fa5);}(_0xda46,0x118));var _0x6da4=function(_0x9f374c,_0x396804){_0x9f374c=_0x9f374c-0x0;var _0x53cfbb=_0xda46[_0x9f374c];return _0x53cfbb;};'use strict';var _=require('lodash');var util=require(_0x6da4('0x0'));var logger=require(_0x6da4('0x1'))(_0x6da4('0x2'));var moment=require(_0x6da4('0x3'));var BPromise=require(_0x6da4('0x4'));var rp=require(_0x6da4('0x5'));var fs=require('fs');var path=require(_0x6da4('0x6'));var rimraf=require(_0x6da4('0x7'));var config=require(_0x6da4('0x8'));var attributes=require(_0x6da4('0x9'));module['exports']=function(_0x4f6be3,_0x4a961b){return _0x4f6be3[_0x6da4('0xa')](_0x6da4('0xb'),attributes,{'tableName':'voice_queues_log','paranoid':![],'indexes':[{'name':_0x6da4('0xc'),'fields':[_0x6da4('0xd'),_0x6da4('0xe')]}],'timestamps':![]});};
\ No newline at end of file
+var _0xf2c7=['VoiceQueuesLog','voice_queues_log','event','dtm','lodash','util','../../config/logger','api','bluebird','request-promise','../../config/environment','exports','define'];(function(_0x4599b6,_0x40c254){var _0x2e014c=function(_0x3c4d90){while(--_0x3c4d90){_0x4599b6['push'](_0x4599b6['shift']());}};_0x2e014c(++_0x40c254);}(_0xf2c7,0x1d8));var _0x7f2c=function(_0x33bc64,_0x4d1e92){_0x33bc64=_0x33bc64-0x0;var _0x3fdd34=_0xf2c7[_0x33bc64];return _0x3fdd34;};'use strict';var _=require(_0x7f2c('0x0'));var util=require(_0x7f2c('0x1'));var logger=require(_0x7f2c('0x2'))(_0x7f2c('0x3'));var moment=require('moment');var BPromise=require(_0x7f2c('0x4'));var rp=require(_0x7f2c('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require(_0x7f2c('0x6'));var attributes=require('./voiceQueuesLog.attributes');module[_0x7f2c('0x7')]=function(_0x835eeb,_0x4e348c){return _0x835eeb[_0x7f2c('0x8')](_0x7f2c('0x9'),attributes,{'tableName':_0x7f2c('0xa'),'paranoid':![],'indexes':[{'name':'event_dtm','fields':[_0x7f2c('0xb'),_0x7f2c('0xc')]}],'timestamps':![]});};
\ No newline at end of file
index 52649fb..0f81f71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f38=['message','result','catch','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','http','request','then','info','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code'];(function(_0x5de46a,_0xd2ed3f){var _0x1c110a=function(_0x273c4c){while(--_0x273c4c){_0x5de46a['push'](_0x5de46a['shift']());}};_0x1c110a(++_0xd2ed3f);}(_0x2f38,0x1a7));var _0x82f3=function(_0x107e62,_0x408bc2){_0x107e62=_0x107e62-0x0;var _0x52f649=_0x2f38[_0x107e62];return _0x52f649;};'use strict';var _=require('lodash');var util=require(_0x82f3('0x0'));var moment=require('moment');var BPromise=require(_0x82f3('0x1'));var rs=require(_0x82f3('0x2'));var fs=require('fs');var Redis=require(_0x82f3('0x3'));var db=require(_0x82f3('0x4'))['db'];var utils=require(_0x82f3('0x5'));var logger=require(_0x82f3('0x6'))('rpc');var config=require(_0x82f3('0x7'));var jayson=require('jayson/promise');var client=jayson['client'][_0x82f3('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x1c09a0,_0x28c7f0,_0x2c69d2){return new BPromise(function(_0x659a85,_0x427ef6){return client[_0x82f3('0x9')](_0x1c09a0,_0x2c69d2)[_0x82f3('0xa')](function(_0xb445a3){logger[_0x82f3('0xb')](_0x82f3('0xc'),_0x28c7f0,_0x82f3('0xd'));logger[_0x82f3('0xe')]('VoiceQueuesLog,\x20%s,\x20%s,\x20%s',_0x28c7f0,_0x82f3('0xd'),JSON[_0x82f3('0xf')](_0xb445a3));if(_0xb445a3[_0x82f3('0x10')]){if(_0xb445a3[_0x82f3('0x10')][_0x82f3('0x11')]===0x1f4){logger[_0x82f3('0x10')](_0x82f3('0xc'),_0x28c7f0,_0xb445a3['error']['message']);return _0x427ef6(_0xb445a3[_0x82f3('0x10')][_0x82f3('0x12')]);}logger['error'](_0x82f3('0xc'),_0x28c7f0,_0xb445a3[_0x82f3('0x10')][_0x82f3('0x12')]);return _0x659a85(_0xb445a3[_0x82f3('0x10')][_0x82f3('0x12')]);}else{logger[_0x82f3('0xb')]('VoiceQueuesLog,\x20%s,\x20%s',_0x28c7f0,_0x82f3('0xd'));_0x659a85(_0xb445a3[_0x82f3('0x13')][_0x82f3('0x12')]);}})[_0x82f3('0x14')](function(_0x4d1a2d){logger[_0x82f3('0x10')]('VoiceQueuesLog,\x20%s,\x20%s',_0x28c7f0,_0x4d1a2d);_0x427ef6(_0x4d1a2d);});});}
\ No newline at end of file
+var _0x6d2e=['message','info','result','catch','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','jayson/promise','client','http','then','VoiceQueuesLog,\x20%s,\x20%s','request\x20sent','VoiceQueuesLog,\x20%s,\x20%s,\x20%s','stringify','error','code'];(function(_0x422905,_0x3bce3a){var _0x33dc6c=function(_0x4852c9){while(--_0x4852c9){_0x422905['push'](_0x422905['shift']());}};_0x33dc6c(++_0x3bce3a);}(_0x6d2e,0x97));var _0xe6d2=function(_0x280a2e,_0x244c6f){_0x280a2e=_0x280a2e-0x0;var _0x286f67=_0x6d2e[_0x280a2e];return _0x286f67;};'use strict';var _=require('lodash');var util=require(_0xe6d2('0x0'));var moment=require(_0xe6d2('0x1'));var BPromise=require(_0xe6d2('0x2'));var rs=require(_0xe6d2('0x3'));var fs=require('fs');var Redis=require(_0xe6d2('0x4'));var db=require(_0xe6d2('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0xe6d2('0x6'))('rpc');var config=require('../../config/environment');var jayson=require(_0xe6d2('0x7'));var client=jayson[_0xe6d2('0x8')][_0xe6d2('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x4d9c9f,_0x36d6ad,_0x53906e){return new BPromise(function(_0x2e227e,_0x2ce8cb){return client['request'](_0x4d9c9f,_0x53906e)[_0xe6d2('0xa')](function(_0xa7d0e1){logger['info'](_0xe6d2('0xb'),_0x36d6ad,_0xe6d2('0xc'));logger['debug'](_0xe6d2('0xd'),_0x36d6ad,_0xe6d2('0xc'),JSON[_0xe6d2('0xe')](_0xa7d0e1));if(_0xa7d0e1[_0xe6d2('0xf')]){if(_0xa7d0e1['error'][_0xe6d2('0x10')]===0x1f4){logger[_0xe6d2('0xf')]('VoiceQueuesLog,\x20%s,\x20%s',_0x36d6ad,_0xa7d0e1[_0xe6d2('0xf')][_0xe6d2('0x11')]);return _0x2ce8cb(_0xa7d0e1['error'][_0xe6d2('0x11')]);}logger[_0xe6d2('0xf')](_0xe6d2('0xb'),_0x36d6ad,_0xa7d0e1[_0xe6d2('0xf')][_0xe6d2('0x11')]);return _0x2e227e(_0xa7d0e1[_0xe6d2('0xf')][_0xe6d2('0x11')]);}else{logger[_0xe6d2('0x12')](_0xe6d2('0xb'),_0x36d6ad,_0xe6d2('0xc'));_0x2e227e(_0xa7d0e1[_0xe6d2('0x13')][_0xe6d2('0x11')]);}})[_0xe6d2('0x14')](function(_0x2ad072){logger[_0xe6d2('0xf')]('VoiceQueuesLog,\x20%s,\x20%s',_0x36d6ad,_0x2ad072);_0x2ce8cb(_0x2ad072);});});}
\ No newline at end of file
index b39b9f6..404a1e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x941c=['/:id','destroy','exports','util','path','connect-timeout','express','fs-extra','../../components/auth/service','./voiceRecording.controller','get','isAuthenticated','/:id/download','download','/:id/downloads','downloads','downloadTranscribe','create','post','/:id/transcribe','runTranscribe','put','update','delete'];(function(_0x1385dc,_0x2c7fd7){var _0x2f6469=function(_0x47ed8a){while(--_0x47ed8a){_0x1385dc['push'](_0x1385dc['shift']());}};_0x2f6469(++_0x2c7fd7);}(_0x941c,0x10b));var _0xc941=function(_0x57a88b,_0x26b3f4){_0x57a88b=_0x57a88b-0x0;var _0x1c52ee=_0x941c[_0x57a88b];return _0x1c52ee;};'use strict';var multer=require('multer');var util=require(_0xc941('0x0'));var path=require(_0xc941('0x1'));var timeout=require(_0xc941('0x2'));var express=require(_0xc941('0x3'));var router=express['Router']();var fs_extra=require(_0xc941('0x4'));var auth=require(_0xc941('0x5'));var interaction=require('../../components/interaction/service');var config=require('../../config/environment');var controller=require(_0xc941('0x6'));router[_0xc941('0x7')]('/',auth[_0xc941('0x8')](),controller['index']);router[_0xc941('0x7')]('/describe',auth[_0xc941('0x8')](),controller['describe']);router[_0xc941('0x7')]('/:id',auth[_0xc941('0x8')](),controller['show']);router[_0xc941('0x7')](_0xc941('0x9'),auth[_0xc941('0x8')](),controller[_0xc941('0xa')]);router['get'](_0xc941('0xb'),controller[_0xc941('0xc')]);router['get']('/:id/transcribe',auth['isAuthenticated'](),controller[_0xc941('0xd')]);router['post']('/',auth[_0xc941('0x8')](),controller[_0xc941('0xe')]);router[_0xc941('0xf')](_0xc941('0x10'),auth['isAuthenticated'](),controller[_0xc941('0x11')]);router[_0xc941('0x12')]('/:id',auth[_0xc941('0x8')](),controller[_0xc941('0x13')]);router[_0xc941('0x14')](_0xc941('0x15'),auth['isAuthenticated'](),controller[_0xc941('0x16')]);module[_0xc941('0x17')]=router;
\ No newline at end of file
+var _0xdab4=['express','Router','fs-extra','../../components/interaction/service','../../config/environment','./voiceRecording.controller','get','isAuthenticated','/describe','describe','/:id','show','/:id/download','download','downloads','/:id/transcribe','create','post','runTranscribe','put','update','delete','exports','multer','connect-timeout'];(function(_0x17928f,_0x4ad33f){var _0x500b63=function(_0x127644){while(--_0x127644){_0x17928f['push'](_0x17928f['shift']());}};_0x500b63(++_0x4ad33f);}(_0xdab4,0x1a7));var _0x4dab=function(_0x54eb2c,_0x44aa9d){_0x54eb2c=_0x54eb2c-0x0;var _0x2ad363=_0xdab4[_0x54eb2c];return _0x2ad363;};'use strict';var multer=require(_0x4dab('0x0'));var util=require('util');var path=require('path');var timeout=require(_0x4dab('0x1'));var express=require(_0x4dab('0x2'));var router=express[_0x4dab('0x3')]();var fs_extra=require(_0x4dab('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0x4dab('0x5'));var config=require(_0x4dab('0x6'));var controller=require(_0x4dab('0x7'));router[_0x4dab('0x8')]('/',auth[_0x4dab('0x9')](),controller['index']);router[_0x4dab('0x8')](_0x4dab('0xa'),auth[_0x4dab('0x9')](),controller[_0x4dab('0xb')]);router['get'](_0x4dab('0xc'),auth[_0x4dab('0x9')](),controller[_0x4dab('0xd')]);router['get'](_0x4dab('0xe'),auth['isAuthenticated'](),controller[_0x4dab('0xf')]);router['get']('/:id/downloads',controller[_0x4dab('0x10')]);router[_0x4dab('0x8')](_0x4dab('0x11'),auth[_0x4dab('0x9')](),controller['downloadTranscribe']);router['post']('/',auth[_0x4dab('0x9')](),controller[_0x4dab('0x12')]);router[_0x4dab('0x13')](_0x4dab('0x11'),auth['isAuthenticated'](),controller[_0x4dab('0x14')]);router[_0x4dab('0x15')](_0x4dab('0xc'),auth[_0x4dab('0x9')](),controller[_0x4dab('0x16')]);router[_0x4dab('0x17')](_0x4dab('0xc'),auth[_0x4dab('0x9')](),controller['destroy']);module[_0x4dab('0x18')]=router;
\ No newline at end of file
index 7cff66d..f1cecc5 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(_0x122096,_0x60c295){var _0x3d1966=function(_0x3d569e){while(--_0x3d569e){_0x122096['push'](_0x122096['shift']());}};_0x3d1966(++_0x60c295);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf50820,_0x56f041){_0xf50820=_0xf50820-0x0;var _0x2a9b10=_0xa9e0[_0xf50820];return _0x2a9b10;};'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(_0x5f3f88,_0x562baf){var _0xd08119=function(_0x42dbf7){while(--_0x42dbf7){_0x5f3f88['push'](_0x5f3f88['shift']());}};_0xd08119(++_0x562baf);}(_0xa9e0,0x123));var _0x0a9e=function(_0x298ed3,_0x4ab5e1){_0x298ed3=_0x298ed3-0x0;var _0x5aad28=_0xa9e0[_0x298ed3];return _0x5aad28;};'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 1c158b1..0f32614 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd1d8=['../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../mysqldb','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','save','update','destroy','then','sendStatus','stack','name','send','index','map','VoiceRecording','fieldName','type','key','differenceBy','format','keys','query','intersection','attributes','fields','hasOwnProperty','nolimit','order','sort','where','filters','pick','merge','VIRTUAL','includeAll','include','findAll','rows','show','params','model','rawAttributes','length','options','find','catch','body','describe','../../components/encryptor','uniqueid','value','%s.cypher','existsSync','decryptFile','secrets','Sequelize','ValidationError','filename','extname','unlink','download','message','Not\x20found','downloads','MD5','sequelize','col','$and','push','recording','VoiceRecording\x20not\x20found','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','isNil','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','.cypher','unlinkSync','listBuckets','createBucket','upload','startTranscriptionJob','readFileSync','[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','TranscriptionJobName','transcribeName','TranscriptionJob','TranscriptionJobStatus','runTranscribe','findOne','Setting','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','runSentiment','sentiment','sentimentRegion','language','Sentiment\x20Analysis\x20not\x20configured','Cloud\x20Provider\x20not\x20available','data1','Buckets','Name','data2','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available','transcribeStatus','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','tempSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','sox','ejs','fs-extra','lodash','squel','jsforce','to-csv','querystring','papaparse','aws-sdk','uuid/v4','ioredis','../../components/auth/service'];(function(_0x5e41cd,_0x2e94c0){var _0x5acb25=function(_0xfba10c){while(--_0xfba10c){_0x5e41cd['push'](_0x5e41cd['shift']());}};_0x5acb25(++_0x2e94c0);}(_0xd1d8,0x120));var _0x8d1d=function(_0x4cb322,_0x505daf){_0x4cb322=_0x4cb322-0x0;var _0x25be4b=_0xd1d8[_0x4cb322];return _0x25be4b;};'use strict';var emlformat=require(_0x8d1d('0x0'));var rimraf=require(_0x8d1d('0x1'));var zipdir=require(_0x8d1d('0x2'));var jsonpatch=require(_0x8d1d('0x3'));var rp=require(_0x8d1d('0x4'));var moment=require(_0x8d1d('0x5'));var BPromise=require('bluebird');var Mustache=require(_0x8d1d('0x6'));var util=require(_0x8d1d('0x7'));var path=require(_0x8d1d('0x8'));var sox=require(_0x8d1d('0x9'));var csv=require('to-csv');var ejs=require(_0x8d1d('0xa'));var fs=require('fs');var fs_extra=require(_0x8d1d('0xb'));var _=require(_0x8d1d('0xc'));var squel=require(_0x8d1d('0xd'));var crypto=require('crypto');var jsforce=require(_0x8d1d('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x8d1d('0xf'));var querystring=require(_0x8d1d('0x10'));var Papa=require(_0x8d1d('0x11'));var AWS=require(_0x8d1d('0x12'));var uuidv4=require(_0x8d1d('0x13'));var Redis=require(_0x8d1d('0x14'));var authService=require(_0x8d1d('0x15'));var qs=require(_0x8d1d('0x16'));var as=require(_0x8d1d('0x17'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x8d1d('0x18'));var utils=require(_0x8d1d('0x19'));var config=require(_0x8d1d('0x1a'));var licenseUtil=require('../../config/license/util');var db=require(_0x8d1d('0x1b'))['db'];function respondWithStatusCode(_0x38d710,_0x38bf70){_0x38bf70=_0x38bf70||0xcc;return function(_0x1c2dba){if(_0x1c2dba){return _0x38d710['sendStatus'](_0x38bf70);}return _0x38d710[_0x8d1d('0x1c')](_0x38bf70)[_0x8d1d('0x1d')]();};}function respondWithResult(_0x282a24,_0x2b0498){_0x2b0498=_0x2b0498||0xc8;return function(_0x430fe2){if(_0x430fe2){return _0x282a24[_0x8d1d('0x1c')](_0x2b0498)['json'](_0x430fe2);}};}function respondWithFilteredResult(_0x4e1e84,_0x2974f1){return function(_0x55c6c3){if(_0x55c6c3){var _0x310994=typeof _0x2974f1[_0x8d1d('0x1e')]===_0x8d1d('0x1f')&&typeof _0x2974f1[_0x8d1d('0x20')]===_0x8d1d('0x1f');var _0x190486=_0x55c6c3[_0x8d1d('0x21')];var _0x3320ed=_0x310994?0x0:_0x2974f1[_0x8d1d('0x1e')];var _0x4b6124=_0x310994?_0x55c6c3['count']:_0x2974f1[_0x8d1d('0x1e')]+_0x2974f1[_0x8d1d('0x20')];var _0x1a3351;if(_0x4b6124>=_0x190486){_0x4b6124=_0x190486;_0x1a3351=0xc8;}else{_0x1a3351=0xce;}_0x4e1e84['status'](_0x1a3351);return _0x4e1e84[_0x8d1d('0x22')](_0x8d1d('0x23'),_0x3320ed+'-'+_0x4b6124+'/'+_0x190486)[_0x8d1d('0x24')](_0x55c6c3);}return null;};}function patchUpdates(_0x478254){return function(_0x5ca9e6){try{jsonpatch[_0x8d1d('0x25')](_0x5ca9e6,_0x478254,!![]);}catch(_0x487424){return BPromise['reject'](_0x487424);}return _0x5ca9e6[_0x8d1d('0x26')]();};}function saveUpdates(_0x1f9d2,_0x58e152){return function(_0x51b811){if(_0x51b811){return _0x51b811[_0x8d1d('0x27')](_0x1f9d2)['then'](function(_0x57a9eb){return _0x57a9eb;});}return null;};}function removeEntity(_0x12eb00,_0x17e967){return function(_0xfb9357){if(_0xfb9357){return _0xfb9357[_0x8d1d('0x28')]()[_0x8d1d('0x29')](function(){_0x12eb00[_0x8d1d('0x1c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x58dcd0,_0x195232){return function(_0x51ba87){if(!_0x51ba87){_0x58dcd0[_0x8d1d('0x2a')](0x194);}return _0x51ba87;};}function handleError(_0x20b81f,_0x3b505b){_0x3b505b=_0x3b505b||0x1f4;return function(_0x3e1370){logger['error'](_0x3e1370[_0x8d1d('0x2b')]);if(_0x3e1370[_0x8d1d('0x2c')]){delete _0x3e1370[_0x8d1d('0x2c')];}_0x20b81f[_0x8d1d('0x1c')](_0x3b505b)[_0x8d1d('0x2d')](_0x3e1370);};}exports[_0x8d1d('0x2e')]=function(_0x33a7eb,_0x58aa46){var _0x2b57fa={},_0x1c7d9f={},_0x3400d7={'count':0x0,'rows':[]};var _0x1d2fbb=_[_0x8d1d('0x2f')](db[_0x8d1d('0x30')]['rawAttributes'],function(_0x47d965){return{'name':_0x47d965[_0x8d1d('0x31')],'type':_0x47d965[_0x8d1d('0x32')][_0x8d1d('0x33')]};});_0x1c7d9f['model']=_[_0x8d1d('0x34')](_[_0x8d1d('0x2f')](_0x1d2fbb,_0x8d1d('0x2c')),[_0x8d1d('0x35')]);_0x1c7d9f['query']=_[_0x8d1d('0x36')](_0x33a7eb[_0x8d1d('0x37')]);_0x1c7d9f['filters']=_[_0x8d1d('0x38')](_0x1c7d9f['model'],_0x1c7d9f[_0x8d1d('0x37')]);_0x2b57fa[_0x8d1d('0x39')]=_['intersection'](_0x1c7d9f['model'],qs[_0x8d1d('0x3a')](_0x33a7eb[_0x8d1d('0x37')][_0x8d1d('0x3a')]));_0x2b57fa[_0x8d1d('0x39')]=_0x2b57fa[_0x8d1d('0x39')]['length']?_0x2b57fa[_0x8d1d('0x39')]:_0x1c7d9f['model'];if(!_0x33a7eb[_0x8d1d('0x37')][_0x8d1d('0x3b')](_0x8d1d('0x3c'))){_0x2b57fa['limit']=qs[_0x8d1d('0x20')](_0x33a7eb[_0x8d1d('0x37')]['limit']);_0x2b57fa['offset']=qs[_0x8d1d('0x1e')](_0x33a7eb[_0x8d1d('0x37')][_0x8d1d('0x1e')]);}_0x2b57fa[_0x8d1d('0x3d')]=qs[_0x8d1d('0x3e')](_0x33a7eb[_0x8d1d('0x37')][_0x8d1d('0x3e')]);_0x2b57fa[_0x8d1d('0x3f')]=qs[_0x8d1d('0x40')](_[_0x8d1d('0x41')](_0x33a7eb['query'],_0x1c7d9f[_0x8d1d('0x40')]),_0x1d2fbb);if(_0x33a7eb[_0x8d1d('0x37')]['filter']){_0x2b57fa[_0x8d1d('0x3f')]=_[_0x8d1d('0x42')](_0x2b57fa[_0x8d1d('0x3f')],{'$or':_[_0x8d1d('0x2f')](_0x1d2fbb,function(_0x119bdc){if(_0x119bdc['type']!==_0x8d1d('0x43')){var _0x1e3e68={};_0x1e3e68[_0x119bdc[_0x8d1d('0x2c')]]={'$like':'%'+_0x33a7eb[_0x8d1d('0x37')]['filter']+'%'};return _0x1e3e68;}})});}_0x2b57fa=_[_0x8d1d('0x42')]({},_0x2b57fa,_0x33a7eb['options']);var _0x512e87={'where':_0x2b57fa[_0x8d1d('0x3f')]};return db[_0x8d1d('0x30')][_0x8d1d('0x21')](_0x512e87)[_0x8d1d('0x29')](function(_0x5ab2d2){_0x3400d7[_0x8d1d('0x21')]=_0x5ab2d2;if(_0x33a7eb[_0x8d1d('0x37')][_0x8d1d('0x44')]){_0x2b57fa[_0x8d1d('0x45')]=[{'all':!![]}];}return db[_0x8d1d('0x30')][_0x8d1d('0x46')](_0x2b57fa);})['then'](function(_0x526376){_0x3400d7[_0x8d1d('0x47')]=_0x526376;return _0x3400d7;})[_0x8d1d('0x29')](respondWithFilteredResult(_0x58aa46,_0x2b57fa))['catch'](handleError(_0x58aa46,null));};exports[_0x8d1d('0x48')]=function(_0x349871,_0x53bff3){var _0xb18ac0={'raw':![],'where':{'id':_0x349871[_0x8d1d('0x49')]['id']}},_0xbadcb7={};_0xbadcb7[_0x8d1d('0x4a')]=_['keys'](db[_0x8d1d('0x30')][_0x8d1d('0x4b')]);_0xbadcb7[_0x8d1d('0x37')]=_['keys'](_0x349871[_0x8d1d('0x37')]);_0xbadcb7[_0x8d1d('0x40')]=_[_0x8d1d('0x38')](_0xbadcb7[_0x8d1d('0x4a')],_0xbadcb7[_0x8d1d('0x37')]);_0xb18ac0[_0x8d1d('0x39')]=_[_0x8d1d('0x38')](_0xbadcb7[_0x8d1d('0x4a')],qs[_0x8d1d('0x3a')](_0x349871[_0x8d1d('0x37')]['fields']));_0xb18ac0['attributes']=_0xb18ac0[_0x8d1d('0x39')][_0x8d1d('0x4c')]?_0xb18ac0[_0x8d1d('0x39')]:_0xbadcb7[_0x8d1d('0x4a')];if(_0x349871[_0x8d1d('0x37')]['includeAll']){_0xb18ac0[_0x8d1d('0x45')]=[{'all':!![]}];}_0xb18ac0=_['merge']({},_0xb18ac0,_0x349871[_0x8d1d('0x4d')]);return db[_0x8d1d('0x30')][_0x8d1d('0x4e')](_0xb18ac0)[_0x8d1d('0x29')](handleEntityNotFound(_0x53bff3,null))[_0x8d1d('0x29')](respondWithResult(_0x53bff3,null))[_0x8d1d('0x4f')](handleError(_0x53bff3,null));};exports['create']=function(_0x3405e3,_0x503555){return db[_0x8d1d('0x30')]['create'](_0x3405e3[_0x8d1d('0x50')],{})[_0x8d1d('0x29')](respondWithResult(_0x503555,0xc9))['catch'](handleError(_0x503555,null));};exports['update']=function(_0x2915b7,_0x310587){if(_0x2915b7[_0x8d1d('0x50')]['id']){delete _0x2915b7['body']['id'];}return db[_0x8d1d('0x30')][_0x8d1d('0x4e')]({'where':{'id':_0x2915b7['params']['id']}})[_0x8d1d('0x29')](handleEntityNotFound(_0x310587,null))[_0x8d1d('0x29')](saveUpdates(_0x2915b7['body'],null))[_0x8d1d('0x29')](respondWithResult(_0x310587,null))[_0x8d1d('0x4f')](handleError(_0x310587,null));};exports[_0x8d1d('0x51')]=function(_0x395ccb,_0x2fbaec){return db[_0x8d1d('0x30')]['describe']()[_0x8d1d('0x29')](respondWithResult(_0x2fbaec,null))['catch'](handleError(_0x2fbaec,null));};exports['download']=function(_0x3d6d37,_0x153b35,_0x1587c1){var _0x4a6083=require(_0x8d1d('0x52'));var _0xb006eb=![];var _0x355fed={};if(_0x3d6d37['query'][_0x8d1d('0x32')]&&_0x3d6d37[_0x8d1d('0x37')]['type']===_0x8d1d('0x53')){_0x355fed[_0x8d1d('0x53')]=_0x3d6d37[_0x8d1d('0x49')]['id'];}else{_0x355fed['id']=_0x3d6d37[_0x8d1d('0x49')]['id'];}return db[_0x8d1d('0x30')][_0x8d1d('0x4e')]({'where':_0x355fed,'attributes':['id',_0x8d1d('0x54')],'raw':!![]})['then'](handleEntityNotFound(_0x153b35,null))[_0x8d1d('0x29')](function(_0xcfbd43){if(_0xcfbd43){var _0x2fe8e5=_0xcfbd43[_0x8d1d('0x54')];var _0x198a81=util[_0x8d1d('0x35')](_0x8d1d('0x55'),_0x2fe8e5);if(fs[_0x8d1d('0x56')](_0x198a81)){_0xb006eb=!![];return _0x4a6083[_0x8d1d('0x57')](_0x198a81,_0x2fe8e5,config[_0x8d1d('0x58')]['recording'])['then'](function(){return _0xcfbd43;});}return _0xcfbd43;}})[_0x8d1d('0x29')](function(_0x3106f1){if(_0x3106f1){var _0x3f8f4a=_0x3106f1[_0x8d1d('0x54')];if(!fs[_0x8d1d('0x56')](_0x3f8f4a)){throw new db[(_0x8d1d('0x59'))][(_0x8d1d('0x5a'))]('VoiceRecording\x20not\x20found');}if(_0x3106f1[_0x8d1d('0x5b')]){return _0x153b35['download'](_0x3f8f4a,_0x3106f1['filename']+path[_0x8d1d('0x5c')](_0x3f8f4a),function(){if(_0xb006eb){fs[_0x8d1d('0x5d')](_0x3f8f4a);}});}else{return _0x153b35[_0x8d1d('0x5e')](_0x3f8f4a,function(_0x4f0465){if(_0xb006eb){fs['unlink'](_0x3f8f4a);}});}}})[_0x8d1d('0x4f')](function(_0x2f417b){if(_0x2f417b[_0x8d1d('0x5f')]==='VoiceRecording\x20not\x20found'){_0x153b35[_0x8d1d('0x1c')](0x194)['send'](_0x8d1d('0x60'));}else{return handleError(_0x153b35,null);}});};exports[_0x8d1d('0x61')]=function(_0x4402f4,_0x4a2703,_0x509a68){var _0x5d7749=require(_0x8d1d('0x52'));var _0x1b5155=![];var _0x429fef={'$and':[db['sequelize']['where'](db['sequelize']['fn'](_0x8d1d('0x62'),db[_0x8d1d('0x63')][_0x8d1d('0x64')](_0x8d1d('0x53'))),_0x4402f4[_0x8d1d('0x37')]['token'])]};if(_0x4402f4[_0x8d1d('0x37')][_0x8d1d('0x32')]&&_0x4402f4[_0x8d1d('0x37')][_0x8d1d('0x32')]===_0x8d1d('0x53')){_0x429fef['$and']['push']({'uniqueid':_0x4402f4[_0x8d1d('0x49')]['id']});}else{_0x429fef[_0x8d1d('0x65')][_0x8d1d('0x66')]({'id':_0x4402f4[_0x8d1d('0x49')]['id']});}return db['VoiceRecording'][_0x8d1d('0x4e')]({'where':_0x429fef,'attributes':['id',_0x8d1d('0x54')],'raw':!![]})[_0x8d1d('0x29')](handleEntityNotFound(_0x4a2703,null))['then'](function(_0x156a51){if(_0x156a51){var _0x11c606=util['format']('%s.cypher',_0x156a51[_0x8d1d('0x54')]);if(fs[_0x8d1d('0x56')](_0x11c606)){_0x1b5155=!![];return _0x5d7749['decryptFile'](_0x11c606,_0x156a51['value'],config[_0x8d1d('0x58')][_0x8d1d('0x67')])[_0x8d1d('0x29')](function(){return _0x156a51;});}return _0x156a51;}})[_0x8d1d('0x29')](function(_0x1d357c){if(_0x1d357c){if(!fs['existsSync'](_0x1d357c[_0x8d1d('0x54')])){throw new db['Sequelize'][(_0x8d1d('0x5a'))](_0x8d1d('0x68'));}if(_0x1d357c[_0x8d1d('0x5b')]){return _0x4a2703[_0x8d1d('0x5e')](_0x1d357c[_0x8d1d('0x54')],_0x1d357c['filename']+path['extname'](_0x1d357c[_0x8d1d('0x54')]),function(){if(_0x1b5155){fs[_0x8d1d('0x5d')](_0x1d357c[_0x8d1d('0x54')]);}});}else{return _0x4a2703[_0x8d1d('0x5e')](_0x1d357c[_0x8d1d('0x54')],function(_0x461a8c){if(_0x1b5155){fs[_0x8d1d('0x5d')](_0x1d357c['value']);}});}}})['catch'](handleError(_0x4a2703,null));};exports[_0x8d1d('0x28')]=function(_0x32ab18,_0xb00954){return db[_0x8d1d('0x30')][_0x8d1d('0x4e')]({'where':{'id':_0x32ab18[_0x8d1d('0x49')]['id']}})[_0x8d1d('0x29')](function(_0x363d5b){if(_['isNil'](_0x363d5b)){throw new ReferenceError(_0x8d1d('0x69'));}return _0x363d5b;})[_0x8d1d('0x29')](function(_0x5bfab2){var _0x115920=_0x5bfab2[_0x8d1d('0x54')];logger[_0x8d1d('0x6a')](_0x8d1d('0x6b'),_0x115920);if(!_[_0x8d1d('0x6c')](_0x5bfab2[_0x8d1d('0x54')])&&fs['existsSync'](_0x115920)){logger[_0x8d1d('0x6a')]('File:\x20\x22'+_0x115920+_0x8d1d('0x6d'));fs['unlinkSync'](_0x115920);}_0x115920=_0x115920+_0x8d1d('0x6e');if(!_[_0x8d1d('0x6c')](_0x5bfab2['value'])&&fs[_0x8d1d('0x56')](_0x115920)){logger['info']('File:\x20\x22'+_0x115920+_0x8d1d('0x6d'));fs[_0x8d1d('0x6f')](_0x115920);}return _0x5bfab2;})['then'](function(_0x3130cb){if(!_0x3130cb)throw new InternalError();return _0x3130cb[_0x8d1d('0x28')]();})['then'](function(){_0xb00954['status'](0xcc)[_0x8d1d('0x1d')]();})[_0x8d1d('0x4f')](handleError(_0xb00954,null));};function getBucketslist(_0x4928d5,_0x5359c0,_0x1af273){return new Promise(function(_0x383fcd,_0x32721c){var _0x370893=new AWS['S3']({'accessKeyId':_0x5359c0,'secretAccessKey':_0x4928d5,'region':_0x1af273});_0x370893[_0x8d1d('0x70')]({},function(_0x4cf88b,_0x29b799){if(_0x4cf88b){return _0x32721c(_0x4cf88b);}else{return _0x383fcd(_0x29b799);}});});}function createBucket(_0x53d0cd,_0x10dabd,_0x4eecb0,_0x519309){return new Promise(function(_0x41c9cb,_0x3a98e1){var _0xb1458e=new AWS['S3']({'accessKeyId':_0x10dabd,'secretAccessKey':_0x53d0cd,'region':_0x4eecb0});_0xb1458e[_0x8d1d('0x71')]({'Bucket':_0x519309},function(_0x534638,_0x2596cf){if(_0x534638){return _0x3a98e1(_0x534638);}else{return _0x41c9cb(_0x2596cf);}});});}function uploadFile(_0x15537c,_0x2cc489,_0x10d647,_0x546a6d,_0x171103,_0xa65048){return new Promise(function(_0x1ee0d4,_0x28c8fd){var _0x30a877=new AWS['S3']({'accessKeyId':_0x2cc489,'secretAccessKey':_0x15537c,'region':_0x10d647});_0x30a877[_0x8d1d('0x72')]({'Bucket':_0x546a6d,'Key':_0x171103,'Body':_0xa65048},function(_0x2a9a91,_0xc217a6){if(_0x2a9a91){return _0x28c8fd(_0x2a9a91);}else{return _0x1ee0d4(_0xc217a6);}});});}function startTranscribe(_0x1d68e0,_0x4ebf3f,_0x58b4ef,_0x17b795,_0xecebd,_0x3393de){return new Promise(function(_0x20112f,_0x1483fe){var _0xa132c9=new AWS['TranscribeService']({'accessKeyId':_0x4ebf3f,'secretAccessKey':_0x1d68e0,'region':_0x58b4ef});_0xa132c9[_0x8d1d('0x73')]({'TranscriptionJobName':_0x17b795,'LanguageCode':_0xecebd,'Media':{'MediaFileUri':_0x3393de}},function(_0x19e400,_0x4e07bd){if(_0x19e400){return _0x1483fe(_0x19e400);}else{return _0x20112f(_0x4e07bd);}});});}function transcribe(_0x1db839,_0x490147,_0x208c4a,_0x4e9e04,_0x5773f2,_0x16f048,_0x179842){return new Promise(function(_0x2562b9,_0x60fcb1){var _0x55cf17={};logger[_0x8d1d('0x6a')](util[_0x8d1d('0x35')]('[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s',_0x1db839,_0x5773f2));return uploadFile(_0x490147,_0x208c4a,_0x4e9e04,_0x5773f2,path['basename'](_0x16f048),fs[_0x8d1d('0x74')](_0x16f048))['then'](function(_0x57f175){logger[_0x8d1d('0x6a')](util[_0x8d1d('0x35')](_0x8d1d('0x75'),_0x1db839,_0x5773f2,_0x57f175[_0x8d1d('0x76')]));_0x55cf17[_0x8d1d('0x77')]=_0x57f175[_0x8d1d('0x78')];_0x55cf17['location']=_0x57f175['Location'];logger['info'](util[_0x8d1d('0x35')](_0x8d1d('0x79'),_0x1db839));return startTranscribe(_0x490147,_0x208c4a,_0x4e9e04,uuidv4(),_0x179842,_0x57f175[_0x8d1d('0x76')]);})['then'](function(_0x1ca252){logger[_0x8d1d('0x6a')](util['format'](_0x8d1d('0x7a'),_0x1db839,_0x1ca252['TranscriptionJob'][_0x8d1d('0x7b')]));_0x55cf17[_0x8d1d('0x7c')]=_0x1ca252[_0x8d1d('0x7d')]['TranscriptionJobName'];_0x55cf17['transcribeStatus']=_0x1ca252[_0x8d1d('0x7d')][_0x8d1d('0x7e')];return _0x2562b9(_0x55cf17);})[_0x8d1d('0x4f')](function(_0x58be5e){return _0x60fcb1(_0x58be5e);});});}exports[_0x8d1d('0x7f')]=function(_0x292055,_0x32ad8a,_0x507164){var _0x352dd9;var _0x3e367c;var _0x442b12;var _0x45d8b4=require(_0x8d1d('0x52'));return db[_0x8d1d('0x30')][_0x8d1d('0x80')]({'where':{'id':_0x292055[_0x8d1d('0x49')]['id']}})[_0x8d1d('0x29')](function(_0x2a8cb3){if(_0x2a8cb3){var _0x487ffe=util[_0x8d1d('0x35')](_0x8d1d('0x55'),_0x2a8cb3[_0x8d1d('0x54')]);if(fs[_0x8d1d('0x56')](_0x487ffe)){cypher=!![];return _0x45d8b4['decryptFile'](_0x487ffe,_0x2a8cb3[_0x8d1d('0x54')],config[_0x8d1d('0x58')][_0x8d1d('0x67')])[_0x8d1d('0x29')](function(){return _0x2a8cb3;});}return _0x2a8cb3;}})[_0x8d1d('0x29')](function(_0x2fcf3f){if(!_0x2fcf3f){throw new db[(_0x8d1d('0x59'))][(_0x8d1d('0x5a'))]('Voice\x20Recording\x20not\x20found');}_0x3e367c=_0x2fcf3f;return db[_0x8d1d('0x81')][_0x8d1d('0x80')]({'where':{'id':0x1}});})[_0x8d1d('0x29')](handleEntityNotFound(_0x32ad8a,null))[_0x8d1d('0x29')](function(_0x34d94f){if(_0x34d94f){_0x352dd9=_0x34d94f;if(!_0x352dd9['transcribe']||!_0x352dd9[_0x8d1d('0x82')]||!_0x352dd9[_0x8d1d('0x83')]||!_0x352dd9['language']||!_0x352dd9[_0x8d1d('0x77')]){throw new db[(_0x8d1d('0x59'))][(_0x8d1d('0x5a'))](_0x8d1d('0x84'));}if(_0x292055[_0x8d1d('0x50')][_0x8d1d('0x85')]&&(!_0x352dd9[_0x8d1d('0x86')]||!_0x352dd9['sentimentAccountId']||!_0x352dd9[_0x8d1d('0x87')]||!_0x352dd9[_0x8d1d('0x88')]||!_0x352dd9[_0x8d1d('0x77')])){throw new db[(_0x8d1d('0x59'))][(_0x8d1d('0x5a'))](_0x8d1d('0x89'));}return db['CloudProvider'][_0x8d1d('0x80')]({'where':{'id':_0x352dd9[_0x8d1d('0x82')]}});}})[_0x8d1d('0x29')](function(_0x5d008a){if(!_0x5d008a){throw new db[(_0x8d1d('0x59'))][(_0x8d1d('0x5a'))](_0x8d1d('0x8a'));}if(!_0x5d008a['data1']||!_0x5d008a['data2']){throw new db['Sequelize']['ValidationError']('Cloud\x20Provider\x20not\x20configured');}_0x442b12=_0x5d008a;return getBucketslist(_0x442b12[_0x8d1d('0x8b')],_0x442b12['data2'],_0x352dd9[_0x8d1d('0x83')]);})['then'](function(_0x162d97){if(_0x162d97&&_0x162d97[_0x8d1d('0x8c')]){var _0xe30997=_[_0x8d1d('0x4e')](_0x162d97['Buckets'],function(_0x34699){return _0x34699[_0x8d1d('0x8d')]===_0x352dd9[_0x8d1d('0x77')];});if(!_0xe30997){logger['info'](util['format']('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available',_0x292055[_0x8d1d('0x49')]['id'],_0x352dd9[_0x8d1d('0x77')]));return createBucket(_0x442b12['data1'],_0x442b12[_0x8d1d('0x8e')],_0x352dd9[_0x8d1d('0x83')],_0x352dd9[_0x8d1d('0x77')]);}logger[_0x8d1d('0x6a')](util[_0x8d1d('0x35')](_0x8d1d('0x8f'),_0x292055[_0x8d1d('0x49')]['id'],_0x352dd9[_0x8d1d('0x77')]));return;}})[_0x8d1d('0x29')](function(_0xc3a0d){if(_0x3e367c[_0x8d1d('0x90')]==='NEW'){return transcribe(_0x292055[_0x8d1d('0x49')]['id'],_0x442b12[_0x8d1d('0x8b')],_0x442b12[_0x8d1d('0x8e')],_0x352dd9[_0x8d1d('0x83')],_0x352dd9[_0x8d1d('0x77')],_0x3e367c[_0x8d1d('0x54')],_0x352dd9[_0x8d1d('0x88')]);}else{logger[_0x8d1d('0x6a')](util[_0x8d1d('0x35')](_0x8d1d('0x91'),_0x292055[_0x8d1d('0x49')]['id']));return{'transcribeStatus':'IN_PROGRESS'};}})[_0x8d1d('0x29')](function(_0x1a7989){if(_0x1a7989){_0x1a7989[_0x8d1d('0x92')]=_0x292055[_0x8d1d('0x50')][_0x8d1d('0x85')];return _0x3e367c[_0x8d1d('0x93')](_0x1a7989);}})[_0x8d1d('0x29')](respondWithResult(_0x32ad8a,null))[_0x8d1d('0x4f')](handleError(_0x32ad8a,null));};function writeFile(_0x5ecd40,_0xc7f6a0){return new Promise(function(_0x345483,_0x35d0a2){fs[_0x8d1d('0x94')](_0xc7f6a0,_0x5ecd40,function(_0x41ad69,_0x2f67c0){if(_0x41ad69){return _0x35d0a2(_0x41ad69);}else{return _0x345483(_0x2f67c0);}});});}exports[_0x8d1d('0x95')]=function(_0x3276ea,_0x496d57,_0x3768d9){return db[_0x8d1d('0x30')][_0x8d1d('0x80')]({'where':{'id':_0x3276ea[_0x8d1d('0x49')]['id']}})['then'](handleEntityNotFound(_0x496d57))[_0x8d1d('0x29')](function(_0x15501c){if(_0x15501c&&_0x15501c[_0x8d1d('0x96')]){var _0x24614c=_0x15501c[_0x8d1d('0x96')];var _0x15b576=config[_0x8d1d('0x97')]+_0x8d1d('0x98')+_0x15501c['id']+_0x8d1d('0x99');if(fs[_0x8d1d('0x56')](_0x15b576)){return _0x15b576;}return writeFile(_0x24614c,_0x15b576)[_0x8d1d('0x29')](function(){return _0x15b576;});}else{throw new db[(_0x8d1d('0x59'))][(_0x8d1d('0x5a'))](_0x8d1d('0x9a'));}})['then'](function(_0x1d1d57){return _0x496d57[_0x8d1d('0x5e')](_0x1d1d57);})[_0x8d1d('0x4f')](handleError(_0x496d57));};
\ No newline at end of file
+var _0xaf2d=['[RUNTRANSCRIPT][%d]\x20Transcription\x20job\x20%s\x20created','TranscriptionJob','TranscriptionJobName','transcribeName','transcribeStatus','TranscriptionJobStatus','runTranscribe','Voice\x20Recording\x20not\x20found','Setting','findOne','transcribe','transcribeAccountId','transcribeRegion','bucket','Transcribe\x20not\x20configured','runSentiment','sentimentAccountId','sentimentRegion','language','Sentiment\x20Analysis\x20not\x20configured','Cloud\x20Provider\x20not\x20available','data1','data2','Buckets','Name','[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20not\x20available','NEW','[RUNTRANSCRIPT][%d]\x20Transcript\x20action\x20already\x20requested','IN_PROGRESS','tempSentiment','updateAttributes','writeFile','downloadTranscribe','fileText','root','/server/files/transcribes/transcribe_','.txt','Transcript\x20not\x20available','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','sox','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','uuid/v4','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','sendStatus','status','json','limit','count','offset','set','Content-Range','save','then','destroy','end','error','stack','name','index','map','VoiceRecording','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','includeAll','include','findAll','rows','params','rawAttributes','catch','create','body','update','describe','download','../../components/encryptor','uniqueid','find','value','%s.cypher','existsSync','secrets','Sequelize','ValidationError','VoiceRecording\x20not\x20found','filename','extname','unlink','message','send','sequelize','MD5','col','$and','push','decryptFile','recording','isNil','Entity\x20not\x20found','info','cancellazione\x20fisica\x20documento\x20%s','File:\x20\x22','\x22\x20trovato\x20eseguo\x20la\x20cancellazione','listBuckets','createBucket','upload','TranscribeService','format','basename','readFileSync','[RUNTRANSCRIPT][%d]\x20Voice\x20recording\x20uploaded\x20in\x20bucket\x20%s\x20(%s)','Location','Bucket','location','[RUNTRANSCRIPT][%d]\x20Sending\x20transcribe\x20request'];(function(_0x57a50d,_0x2871f8){var _0x1b25b3=function(_0x45691e){while(--_0x45691e){_0x57a50d['push'](_0x57a50d['shift']());}};_0x1b25b3(++_0x2871f8);}(_0xaf2d,0xc1));var _0xdaf2=function(_0x47b0ab,_0x2095cc){_0x47b0ab=_0x47b0ab-0x0;var _0x1c7dac=_0xaf2d[_0x47b0ab];return _0x1c7dac;};'use strict';var emlformat=require(_0xdaf2('0x0'));var rimraf=require(_0xdaf2('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xdaf2('0x2'));var rp=require(_0xdaf2('0x3'));var moment=require(_0xdaf2('0x4'));var BPromise=require(_0xdaf2('0x5'));var Mustache=require(_0xdaf2('0x6'));var util=require(_0xdaf2('0x7'));var path=require('path');var sox=require(_0xdaf2('0x8'));var csv=require('to-csv');var ejs=require(_0xdaf2('0x9'));var fs=require('fs');var fs_extra=require(_0xdaf2('0xa'));var _=require(_0xdaf2('0xb'));var squel=require('squel');var crypto=require(_0xdaf2('0xc'));var jsforce=require(_0xdaf2('0xd'));var deskjs=require(_0xdaf2('0xe'));var toCsv=require('to-csv');var querystring=require(_0xdaf2('0xf'));var Papa=require(_0xdaf2('0x10'));var AWS=require('aws-sdk');var uuidv4=require(_0xdaf2('0x11'));var Redis=require(_0xdaf2('0x12'));var authService=require(_0xdaf2('0x13'));var qs=require(_0xdaf2('0x14'));var as=require(_0xdaf2('0x15'));var hardwareService=require(_0xdaf2('0x16'));var logger=require('../../config/logger')(_0xdaf2('0x17'));var utils=require(_0xdaf2('0x18'));var config=require(_0xdaf2('0x19'));var licenseUtil=require(_0xdaf2('0x1a'));var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0xdb4012,_0xf095d9){_0xf095d9=_0xf095d9||0xcc;return function(_0x20daab){if(_0x20daab){return _0xdb4012[_0xdaf2('0x1b')](_0xf095d9);}return _0xdb4012[_0xdaf2('0x1c')](_0xf095d9)['end']();};}function respondWithResult(_0x444f01,_0x23af2b){_0x23af2b=_0x23af2b||0xc8;return function(_0x318796){if(_0x318796){return _0x444f01[_0xdaf2('0x1c')](_0x23af2b)[_0xdaf2('0x1d')](_0x318796);}};}function respondWithFilteredResult(_0x36fab0,_0x278919){return function(_0x204434){if(_0x204434){var _0x51c96e=typeof _0x278919['offset']==='undefined'&&typeof _0x278919[_0xdaf2('0x1e')]==='undefined';var _0x1a6784=_0x204434[_0xdaf2('0x1f')];var _0x49b99a=_0x51c96e?0x0:_0x278919[_0xdaf2('0x20')];var _0x5c1a53=_0x51c96e?_0x204434[_0xdaf2('0x1f')]:_0x278919[_0xdaf2('0x20')]+_0x278919['limit'];var _0x4c0b0b;if(_0x5c1a53>=_0x1a6784){_0x5c1a53=_0x1a6784;_0x4c0b0b=0xc8;}else{_0x4c0b0b=0xce;}_0x36fab0[_0xdaf2('0x1c')](_0x4c0b0b);return _0x36fab0[_0xdaf2('0x21')](_0xdaf2('0x22'),_0x49b99a+'-'+_0x5c1a53+'/'+_0x1a6784)['json'](_0x204434);}return null;};}function patchUpdates(_0x14186f){return function(_0x5e8c96){try{jsonpatch['apply'](_0x5e8c96,_0x14186f,!![]);}catch(_0x3550e1){return BPromise['reject'](_0x3550e1);}return _0x5e8c96[_0xdaf2('0x23')]();};}function saveUpdates(_0x39d984,_0xccdbf0){return function(_0x48e59e){if(_0x48e59e){return _0x48e59e['update'](_0x39d984)[_0xdaf2('0x24')](function(_0x1b3b9d){return _0x1b3b9d;});}return null;};}function removeEntity(_0x3e34dd,_0x5cc949){return function(_0x1cb7ad){if(_0x1cb7ad){return _0x1cb7ad[_0xdaf2('0x25')]()[_0xdaf2('0x24')](function(){_0x3e34dd[_0xdaf2('0x1c')](0xcc)[_0xdaf2('0x26')]();});}};}function handleEntityNotFound(_0x3f1d83,_0x5ebabc){return function(_0x575217){if(!_0x575217){_0x3f1d83[_0xdaf2('0x1b')](0x194);}return _0x575217;};}function handleError(_0x48f78b,_0x5f2461){_0x5f2461=_0x5f2461||0x1f4;return function(_0x561f4e){logger[_0xdaf2('0x27')](_0x561f4e[_0xdaf2('0x28')]);if(_0x561f4e['name']){delete _0x561f4e[_0xdaf2('0x29')];}_0x48f78b[_0xdaf2('0x1c')](_0x5f2461)['send'](_0x561f4e);};}exports[_0xdaf2('0x2a')]=function(_0xb77f84,_0x13d5b7){var _0x528fc4={},_0x4bbf86={},_0x402520={'count':0x0,'rows':[]};var _0x695866=_[_0xdaf2('0x2b')](db[_0xdaf2('0x2c')]['rawAttributes'],function(_0x48118d){return{'name':_0x48118d[_0xdaf2('0x2d')],'type':_0x48118d[_0xdaf2('0x2e')][_0xdaf2('0x2f')]};});_0x4bbf86[_0xdaf2('0x30')]=_['differenceBy'](_[_0xdaf2('0x2b')](_0x695866,_0xdaf2('0x29')),['format']);_0x4bbf86[_0xdaf2('0x31')]=_[_0xdaf2('0x32')](_0xb77f84['query']);_0x4bbf86[_0xdaf2('0x33')]=_[_0xdaf2('0x34')](_0x4bbf86['model'],_0x4bbf86['query']);_0x528fc4[_0xdaf2('0x35')]=_[_0xdaf2('0x34')](_0x4bbf86[_0xdaf2('0x30')],qs[_0xdaf2('0x36')](_0xb77f84[_0xdaf2('0x31')][_0xdaf2('0x36')]));_0x528fc4[_0xdaf2('0x35')]=_0x528fc4[_0xdaf2('0x35')][_0xdaf2('0x37')]?_0x528fc4['attributes']:_0x4bbf86['model'];if(!_0xb77f84[_0xdaf2('0x31')][_0xdaf2('0x38')](_0xdaf2('0x39'))){_0x528fc4['limit']=qs['limit'](_0xb77f84[_0xdaf2('0x31')][_0xdaf2('0x1e')]);_0x528fc4['offset']=qs[_0xdaf2('0x20')](_0xb77f84['query'][_0xdaf2('0x20')]);}_0x528fc4[_0xdaf2('0x3a')]=qs['sort'](_0xb77f84[_0xdaf2('0x31')][_0xdaf2('0x3b')]);_0x528fc4[_0xdaf2('0x3c')]=qs[_0xdaf2('0x33')](_[_0xdaf2('0x3d')](_0xb77f84[_0xdaf2('0x31')],_0x4bbf86[_0xdaf2('0x33')]),_0x695866);if(_0xb77f84['query']['filter']){_0x528fc4[_0xdaf2('0x3c')]=_[_0xdaf2('0x3e')](_0x528fc4[_0xdaf2('0x3c')],{'$or':_[_0xdaf2('0x2b')](_0x695866,function(_0x43d250){if(_0x43d250[_0xdaf2('0x2e')]!==_0xdaf2('0x3f')){var _0x3726c2={};_0x3726c2[_0x43d250[_0xdaf2('0x29')]]={'$like':'%'+_0xb77f84['query']['filter']+'%'};return _0x3726c2;}})});}_0x528fc4=_[_0xdaf2('0x3e')]({},_0x528fc4,_0xb77f84[_0xdaf2('0x40')]);var _0x1debfb={'where':_0x528fc4[_0xdaf2('0x3c')]};return db[_0xdaf2('0x2c')][_0xdaf2('0x1f')](_0x1debfb)[_0xdaf2('0x24')](function(_0x52d912){_0x402520[_0xdaf2('0x1f')]=_0x52d912;if(_0xb77f84[_0xdaf2('0x31')][_0xdaf2('0x41')]){_0x528fc4[_0xdaf2('0x42')]=[{'all':!![]}];}return db['VoiceRecording'][_0xdaf2('0x43')](_0x528fc4);})[_0xdaf2('0x24')](function(_0x3b045a){_0x402520[_0xdaf2('0x44')]=_0x3b045a;return _0x402520;})[_0xdaf2('0x24')](respondWithFilteredResult(_0x13d5b7,_0x528fc4))['catch'](handleError(_0x13d5b7,null));};exports['show']=function(_0xd078c7,_0x127af1){var _0xf56e3c={'raw':![],'where':{'id':_0xd078c7[_0xdaf2('0x45')]['id']}},_0x185cf0={};_0x185cf0['model']=_[_0xdaf2('0x32')](db[_0xdaf2('0x2c')][_0xdaf2('0x46')]);_0x185cf0[_0xdaf2('0x31')]=_[_0xdaf2('0x32')](_0xd078c7[_0xdaf2('0x31')]);_0x185cf0[_0xdaf2('0x33')]=_[_0xdaf2('0x34')](_0x185cf0['model'],_0x185cf0[_0xdaf2('0x31')]);_0xf56e3c[_0xdaf2('0x35')]=_[_0xdaf2('0x34')](_0x185cf0[_0xdaf2('0x30')],qs[_0xdaf2('0x36')](_0xd078c7[_0xdaf2('0x31')]['fields']));_0xf56e3c[_0xdaf2('0x35')]=_0xf56e3c[_0xdaf2('0x35')][_0xdaf2('0x37')]?_0xf56e3c['attributes']:_0x185cf0[_0xdaf2('0x30')];if(_0xd078c7[_0xdaf2('0x31')][_0xdaf2('0x41')]){_0xf56e3c[_0xdaf2('0x42')]=[{'all':!![]}];}_0xf56e3c=_[_0xdaf2('0x3e')]({},_0xf56e3c,_0xd078c7[_0xdaf2('0x40')]);return db['VoiceRecording']['find'](_0xf56e3c)[_0xdaf2('0x24')](handleEntityNotFound(_0x127af1,null))[_0xdaf2('0x24')](respondWithResult(_0x127af1,null))[_0xdaf2('0x47')](handleError(_0x127af1,null));};exports[_0xdaf2('0x48')]=function(_0x5911cd,_0x5bf500){return db[_0xdaf2('0x2c')][_0xdaf2('0x48')](_0x5911cd[_0xdaf2('0x49')],{})['then'](respondWithResult(_0x5bf500,0xc9))[_0xdaf2('0x47')](handleError(_0x5bf500,null));};exports[_0xdaf2('0x4a')]=function(_0x1d18e5,_0x4c3081){if(_0x1d18e5[_0xdaf2('0x49')]['id']){delete _0x1d18e5[_0xdaf2('0x49')]['id'];}return db[_0xdaf2('0x2c')]['find']({'where':{'id':_0x1d18e5[_0xdaf2('0x45')]['id']}})['then'](handleEntityNotFound(_0x4c3081,null))[_0xdaf2('0x24')](saveUpdates(_0x1d18e5[_0xdaf2('0x49')],null))['then'](respondWithResult(_0x4c3081,null))['catch'](handleError(_0x4c3081,null));};exports[_0xdaf2('0x4b')]=function(_0x7ccb71,_0x502c86){return db[_0xdaf2('0x2c')][_0xdaf2('0x4b')]()['then'](respondWithResult(_0x502c86,null))[_0xdaf2('0x47')](handleError(_0x502c86,null));};exports[_0xdaf2('0x4c')]=function(_0xb82ede,_0x5d6aae,_0x50ef41){var _0x2705ac=require(_0xdaf2('0x4d'));var _0x355302=![];var _0x2422ba={};if(_0xb82ede[_0xdaf2('0x31')][_0xdaf2('0x2e')]&&_0xb82ede[_0xdaf2('0x31')][_0xdaf2('0x2e')]===_0xdaf2('0x4e')){_0x2422ba['uniqueid']=_0xb82ede[_0xdaf2('0x45')]['id'];}else{_0x2422ba['id']=_0xb82ede['params']['id'];}return db['VoiceRecording'][_0xdaf2('0x4f')]({'where':_0x2422ba,'attributes':['id',_0xdaf2('0x50')],'raw':!![]})['then'](handleEntityNotFound(_0x5d6aae,null))['then'](function(_0x119c5e){if(_0x119c5e){var _0x26387e=_0x119c5e[_0xdaf2('0x50')];var _0x548278=util['format'](_0xdaf2('0x51'),_0x26387e);if(fs[_0xdaf2('0x52')](_0x548278)){_0x355302=!![];return _0x2705ac['decryptFile'](_0x548278,_0x26387e,config[_0xdaf2('0x53')]['recording'])[_0xdaf2('0x24')](function(){return _0x119c5e;});}return _0x119c5e;}})[_0xdaf2('0x24')](function(_0x30e1ee){if(_0x30e1ee){var _0x56af1c=_0x30e1ee['value'];if(!fs['existsSync'](_0x56af1c)){throw new db[(_0xdaf2('0x54'))][(_0xdaf2('0x55'))](_0xdaf2('0x56'));}if(_0x30e1ee[_0xdaf2('0x57')]){return _0x5d6aae[_0xdaf2('0x4c')](_0x56af1c,_0x30e1ee[_0xdaf2('0x57')]+path[_0xdaf2('0x58')](_0x56af1c),function(){if(_0x355302){fs[_0xdaf2('0x59')](_0x56af1c);}});}else{return _0x5d6aae[_0xdaf2('0x4c')](_0x56af1c,function(_0x5da956){if(_0x355302){fs[_0xdaf2('0x59')](_0x56af1c);}});}}})[_0xdaf2('0x47')](function(_0x3f3fc1){if(_0x3f3fc1[_0xdaf2('0x5a')]===_0xdaf2('0x56')){_0x5d6aae[_0xdaf2('0x1c')](0x194)[_0xdaf2('0x5b')]('Not\x20found');}else{return handleError(_0x5d6aae,null);}});};exports['downloads']=function(_0x2653f9,_0x31c3c7,_0x2f9bdf){var _0x585f4e=require(_0xdaf2('0x4d'));var _0x4a445e=![];var _0x2a4585={'$and':[db[_0xdaf2('0x5c')][_0xdaf2('0x3c')](db[_0xdaf2('0x5c')]['fn'](_0xdaf2('0x5d'),db[_0xdaf2('0x5c')][_0xdaf2('0x5e')](_0xdaf2('0x4e'))),_0x2653f9[_0xdaf2('0x31')]['token'])]};if(_0x2653f9[_0xdaf2('0x31')]['type']&&_0x2653f9[_0xdaf2('0x31')][_0xdaf2('0x2e')]===_0xdaf2('0x4e')){_0x2a4585[_0xdaf2('0x5f')][_0xdaf2('0x60')]({'uniqueid':_0x2653f9[_0xdaf2('0x45')]['id']});}else{_0x2a4585[_0xdaf2('0x5f')][_0xdaf2('0x60')]({'id':_0x2653f9[_0xdaf2('0x45')]['id']});}return db[_0xdaf2('0x2c')][_0xdaf2('0x4f')]({'where':_0x2a4585,'attributes':['id','value'],'raw':!![]})[_0xdaf2('0x24')](handleEntityNotFound(_0x31c3c7,null))['then'](function(_0x5c346f){if(_0x5c346f){var _0x395f9f=util['format'](_0xdaf2('0x51'),_0x5c346f[_0xdaf2('0x50')]);if(fs[_0xdaf2('0x52')](_0x395f9f)){_0x4a445e=!![];return _0x585f4e[_0xdaf2('0x61')](_0x395f9f,_0x5c346f[_0xdaf2('0x50')],config[_0xdaf2('0x53')][_0xdaf2('0x62')])[_0xdaf2('0x24')](function(){return _0x5c346f;});}return _0x5c346f;}})['then'](function(_0x21d43f){if(_0x21d43f){if(!fs['existsSync'](_0x21d43f[_0xdaf2('0x50')])){throw new db['Sequelize']['ValidationError']('VoiceRecording\x20not\x20found');}if(_0x21d43f[_0xdaf2('0x57')]){return _0x31c3c7[_0xdaf2('0x4c')](_0x21d43f[_0xdaf2('0x50')],_0x21d43f[_0xdaf2('0x57')]+path[_0xdaf2('0x58')](_0x21d43f[_0xdaf2('0x50')]),function(){if(_0x4a445e){fs['unlink'](_0x21d43f['value']);}});}else{return _0x31c3c7[_0xdaf2('0x4c')](_0x21d43f[_0xdaf2('0x50')],function(_0x375e3d){if(_0x4a445e){fs['unlink'](_0x21d43f[_0xdaf2('0x50')]);}});}}})['catch'](handleError(_0x31c3c7,null));};exports[_0xdaf2('0x25')]=function(_0x4985d0,_0x434480){return db['VoiceRecording'][_0xdaf2('0x4f')]({'where':{'id':_0x4985d0[_0xdaf2('0x45')]['id']}})[_0xdaf2('0x24')](function(_0x5b4609){if(_[_0xdaf2('0x63')](_0x5b4609)){throw new ReferenceError(_0xdaf2('0x64'));}return _0x5b4609;})[_0xdaf2('0x24')](function(_0x59eae1){var _0x5d5528=_0x59eae1[_0xdaf2('0x50')];logger[_0xdaf2('0x65')](_0xdaf2('0x66'),_0x5d5528);if(!_['isNil'](_0x59eae1['value'])&&fs[_0xdaf2('0x52')](_0x5d5528)){logger[_0xdaf2('0x65')](_0xdaf2('0x67')+_0x5d5528+'\x22\x20trovato\x20eseguo\x20la\x20cancellazione');fs['unlinkSync'](_0x5d5528);}_0x5d5528=_0x5d5528+'.cypher';if(!_[_0xdaf2('0x63')](_0x59eae1[_0xdaf2('0x50')])&&fs[_0xdaf2('0x52')](_0x5d5528)){logger['info'](_0xdaf2('0x67')+_0x5d5528+_0xdaf2('0x68'));fs['unlinkSync'](_0x5d5528);}return _0x59eae1;})[_0xdaf2('0x24')](function(_0x541181){if(!_0x541181)throw new InternalError();return _0x541181['destroy']();})['then'](function(){_0x434480[_0xdaf2('0x1c')](0xcc)['end']();})[_0xdaf2('0x47')](handleError(_0x434480,null));};function getBucketslist(_0x32fc1e,_0x1c1e89,_0x5f3b63){return new Promise(function(_0x3a95a2,_0x188f2b){var _0xb8079f=new AWS['S3']({'accessKeyId':_0x1c1e89,'secretAccessKey':_0x32fc1e,'region':_0x5f3b63});_0xb8079f[_0xdaf2('0x69')]({},function(_0x11c3a6,_0x4d2abd){if(_0x11c3a6){return _0x188f2b(_0x11c3a6);}else{return _0x3a95a2(_0x4d2abd);}});});}function createBucket(_0x7156ff,_0xba7d23,_0x4a5b9f,_0x2d0126){return new Promise(function(_0xc56566,_0x42b0b2){var _0x4a8a63=new AWS['S3']({'accessKeyId':_0xba7d23,'secretAccessKey':_0x7156ff,'region':_0x4a5b9f});_0x4a8a63[_0xdaf2('0x6a')]({'Bucket':_0x2d0126},function(_0x48f031,_0x3ffd33){if(_0x48f031){return _0x42b0b2(_0x48f031);}else{return _0xc56566(_0x3ffd33);}});});}function uploadFile(_0x41e123,_0x817ce5,_0x369ec9,_0x2b9068,_0x1195ff,_0x3dc53a){return new Promise(function(_0x1c36cd,_0x3e84cc){var _0x52cb8a=new AWS['S3']({'accessKeyId':_0x817ce5,'secretAccessKey':_0x41e123,'region':_0x369ec9});_0x52cb8a[_0xdaf2('0x6b')]({'Bucket':_0x2b9068,'Key':_0x1195ff,'Body':_0x3dc53a},function(_0xb5594c,_0x5b602c){if(_0xb5594c){return _0x3e84cc(_0xb5594c);}else{return _0x1c36cd(_0x5b602c);}});});}function startTranscribe(_0x5d53fb,_0x176734,_0x7278a3,_0x555548,_0x38e716,_0x51513f){return new Promise(function(_0x4331ff,_0x2d52b9){var _0x50ec2e=new AWS[(_0xdaf2('0x6c'))]({'accessKeyId':_0x176734,'secretAccessKey':_0x5d53fb,'region':_0x7278a3});_0x50ec2e['startTranscriptionJob']({'TranscriptionJobName':_0x555548,'LanguageCode':_0x38e716,'Media':{'MediaFileUri':_0x51513f}},function(_0x21d8d3,_0xa2610e){if(_0x21d8d3){return _0x2d52b9(_0x21d8d3);}else{return _0x4331ff(_0xa2610e);}});});}function transcribe(_0xc8112c,_0x2aabf8,_0x5906da,_0x5751ac,_0x533fa9,_0x43169b,_0x2e1e5a){return new Promise(function(_0x1ca1bb,_0x187629){var _0x451517={};logger['info'](util[_0xdaf2('0x6d')]('[RUNTRANSCRIPT][%d]\x20Starting\x20voice\x20recording\x20upload\x20in\x20bucket\x20%s',_0xc8112c,_0x533fa9));return uploadFile(_0x2aabf8,_0x5906da,_0x5751ac,_0x533fa9,path[_0xdaf2('0x6e')](_0x43169b),fs[_0xdaf2('0x6f')](_0x43169b))[_0xdaf2('0x24')](function(_0x5ba97b){logger[_0xdaf2('0x65')](util[_0xdaf2('0x6d')](_0xdaf2('0x70'),_0xc8112c,_0x533fa9,_0x5ba97b[_0xdaf2('0x71')]));_0x451517['bucket']=_0x5ba97b[_0xdaf2('0x72')];_0x451517[_0xdaf2('0x73')]=_0x5ba97b[_0xdaf2('0x71')];logger[_0xdaf2('0x65')](util[_0xdaf2('0x6d')](_0xdaf2('0x74'),_0xc8112c));return startTranscribe(_0x2aabf8,_0x5906da,_0x5751ac,uuidv4(),_0x2e1e5a,_0x5ba97b['Location']);})[_0xdaf2('0x24')](function(_0x17c6eb){logger[_0xdaf2('0x65')](util[_0xdaf2('0x6d')](_0xdaf2('0x75'),_0xc8112c,_0x17c6eb[_0xdaf2('0x76')][_0xdaf2('0x77')]));_0x451517[_0xdaf2('0x78')]=_0x17c6eb['TranscriptionJob'][_0xdaf2('0x77')];_0x451517[_0xdaf2('0x79')]=_0x17c6eb[_0xdaf2('0x76')][_0xdaf2('0x7a')];return _0x1ca1bb(_0x451517);})[_0xdaf2('0x47')](function(_0x43b0c1){return _0x187629(_0x43b0c1);});});}exports[_0xdaf2('0x7b')]=function(_0x2fd71d,_0x1b5aa5,_0x1eed54){var _0x447aef;var _0x54b680;var _0x353267;var _0x577001=require('../../components/encryptor');return db[_0xdaf2('0x2c')]['findOne']({'where':{'id':_0x2fd71d[_0xdaf2('0x45')]['id']}})[_0xdaf2('0x24')](function(_0x16cd8b){if(_0x16cd8b){var _0x4c37c5=util['format'](_0xdaf2('0x51'),_0x16cd8b[_0xdaf2('0x50')]);if(fs[_0xdaf2('0x52')](_0x4c37c5)){cypher=!![];return _0x577001[_0xdaf2('0x61')](_0x4c37c5,_0x16cd8b[_0xdaf2('0x50')],config[_0xdaf2('0x53')]['recording'])[_0xdaf2('0x24')](function(){return _0x16cd8b;});}return _0x16cd8b;}})[_0xdaf2('0x24')](function(_0x1aaf51){if(!_0x1aaf51){throw new db[(_0xdaf2('0x54'))][(_0xdaf2('0x55'))](_0xdaf2('0x7c'));}_0x54b680=_0x1aaf51;return db[_0xdaf2('0x7d')][_0xdaf2('0x7e')]({'where':{'id':0x1}});})[_0xdaf2('0x24')](handleEntityNotFound(_0x1b5aa5,null))[_0xdaf2('0x24')](function(_0x4f256e){if(_0x4f256e){_0x447aef=_0x4f256e;if(!_0x447aef[_0xdaf2('0x7f')]||!_0x447aef[_0xdaf2('0x80')]||!_0x447aef[_0xdaf2('0x81')]||!_0x447aef['language']||!_0x447aef[_0xdaf2('0x82')]){throw new db[(_0xdaf2('0x54'))]['ValidationError'](_0xdaf2('0x83'));}if(_0x2fd71d['body'][_0xdaf2('0x84')]&&(!_0x447aef['sentiment']||!_0x447aef[_0xdaf2('0x85')]||!_0x447aef[_0xdaf2('0x86')]||!_0x447aef[_0xdaf2('0x87')]||!_0x447aef['bucket'])){throw new db[(_0xdaf2('0x54'))][(_0xdaf2('0x55'))](_0xdaf2('0x88'));}return db['CloudProvider'][_0xdaf2('0x7e')]({'where':{'id':_0x447aef[_0xdaf2('0x80')]}});}})['then'](function(_0x13b36b){if(!_0x13b36b){throw new db[(_0xdaf2('0x54'))][(_0xdaf2('0x55'))](_0xdaf2('0x89'));}if(!_0x13b36b[_0xdaf2('0x8a')]||!_0x13b36b[_0xdaf2('0x8b')]){throw new db[(_0xdaf2('0x54'))][(_0xdaf2('0x55'))]('Cloud\x20Provider\x20not\x20configured');}_0x353267=_0x13b36b;return getBucketslist(_0x353267[_0xdaf2('0x8a')],_0x353267[_0xdaf2('0x8b')],_0x447aef[_0xdaf2('0x81')]);})[_0xdaf2('0x24')](function(_0x2f640e){if(_0x2f640e&&_0x2f640e['Buckets']){var _0x28b23b=_['find'](_0x2f640e[_0xdaf2('0x8c')],function(_0x290b68){return _0x290b68[_0xdaf2('0x8d')]===_0x447aef[_0xdaf2('0x82')];});if(!_0x28b23b){logger[_0xdaf2('0x65')](util[_0xdaf2('0x6d')](_0xdaf2('0x8e'),_0x2fd71d[_0xdaf2('0x45')]['id'],_0x447aef['bucket']));return createBucket(_0x353267['data1'],_0x353267[_0xdaf2('0x8b')],_0x447aef['transcribeRegion'],_0x447aef[_0xdaf2('0x82')]);}logger['info'](util[_0xdaf2('0x6d')]('[RUNTRANSCRIPT][%d]\x20Bucket\x20%s\x20available',_0x2fd71d[_0xdaf2('0x45')]['id'],_0x447aef['bucket']));return;}})[_0xdaf2('0x24')](function(_0x2fb860){if(_0x54b680[_0xdaf2('0x79')]===_0xdaf2('0x8f')){return transcribe(_0x2fd71d[_0xdaf2('0x45')]['id'],_0x353267[_0xdaf2('0x8a')],_0x353267[_0xdaf2('0x8b')],_0x447aef[_0xdaf2('0x81')],_0x447aef[_0xdaf2('0x82')],_0x54b680[_0xdaf2('0x50')],_0x447aef[_0xdaf2('0x87')]);}else{logger[_0xdaf2('0x65')](util[_0xdaf2('0x6d')](_0xdaf2('0x90'),_0x2fd71d[_0xdaf2('0x45')]['id']));return{'transcribeStatus':_0xdaf2('0x91')};}})[_0xdaf2('0x24')](function(_0x26da2b){if(_0x26da2b){_0x26da2b[_0xdaf2('0x92')]=_0x2fd71d[_0xdaf2('0x49')][_0xdaf2('0x84')];return _0x54b680[_0xdaf2('0x93')](_0x26da2b);}})['then'](respondWithResult(_0x1b5aa5,null))[_0xdaf2('0x47')](handleError(_0x1b5aa5,null));};function writeFile(_0x4c44a9,_0x515bfe){return new Promise(function(_0x8cb858,_0x2a14f1){fs[_0xdaf2('0x94')](_0x515bfe,_0x4c44a9,function(_0x4f587d,_0x1ce659){if(_0x4f587d){return _0x2a14f1(_0x4f587d);}else{return _0x8cb858(_0x1ce659);}});});}exports[_0xdaf2('0x95')]=function(_0x31e190,_0x3f946a,_0x5f038e){return db[_0xdaf2('0x2c')][_0xdaf2('0x7e')]({'where':{'id':_0x31e190[_0xdaf2('0x45')]['id']}})[_0xdaf2('0x24')](handleEntityNotFound(_0x3f946a))[_0xdaf2('0x24')](function(_0x3f0d62){if(_0x3f0d62&&_0x3f0d62[_0xdaf2('0x96')]){var _0x4b40be=_0x3f0d62[_0xdaf2('0x96')];var _0x2066d1=config[_0xdaf2('0x97')]+_0xdaf2('0x98')+_0x3f0d62['id']+_0xdaf2('0x99');if(fs[_0xdaf2('0x52')](_0x2066d1)){return _0x2066d1;}return writeFile(_0x4b40be,_0x2066d1)[_0xdaf2('0x24')](function(){return _0x2066d1;});}else{throw new db[(_0xdaf2('0x54'))][(_0xdaf2('0x55'))](_0xdaf2('0x9a'));}})[_0xdaf2('0x24')](function(_0x43b3ec){return _0x3f946a[_0xdaf2('0x4c')](_0x43b3ec);})[_0xdaf2('0x47')](handleError(_0x3f946a));};
\ No newline at end of file
index 3aecc66..b1d13a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xabfc=['uniqueid','../../config/logger','moment','bluebird','request-promise','path','rimraf','../../config/environment','./voiceRecording.attributes','VoiceRecording'];(function(_0x16d92a,_0x41ec05){var _0x426c4b=function(_0x174f1f){while(--_0x174f1f){_0x16d92a['push'](_0x16d92a['shift']());}};_0x426c4b(++_0x41ec05);}(_0xabfc,0x137));var _0xcabf=function(_0x513545,_0x158f2e){_0x513545=_0x513545-0x0;var _0x18b7c5=_0xabfc[_0x513545];return _0x18b7c5;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0xcabf('0x0'))('api');var moment=require(_0xcabf('0x1'));var BPromise=require(_0xcabf('0x2'));var rp=require(_0xcabf('0x3'));var fs=require('fs');var path=require(_0xcabf('0x4'));var rimraf=require(_0xcabf('0x5'));var config=require(_0xcabf('0x6'));var attributes=require(_0xcabf('0x7'));module['exports']=function(_0x3fd0f7,_0x27c5b8){return _0x3fd0f7['define'](_0xcabf('0x8'),attributes,{'tableName':'voice_recordings','paranoid':![],'indexes':[{'name':'uniqueid','fields':[_0xcabf('0x9')]}],'timestamps':!![]});};
\ No newline at end of file
+var _0xac19=['util','api','moment','bluebird','request-promise','path','../../config/environment','./voiceRecording.attributes','exports','define','VoiceRecording','uniqueid','lodash'];(function(_0x17823f,_0xffd807){var _0x51fc21=function(_0x5e4921){while(--_0x5e4921){_0x17823f['push'](_0x17823f['shift']());}};_0x51fc21(++_0xffd807);}(_0xac19,0x11d));var _0x9ac1=function(_0xbc2a71,_0x36aaac){_0xbc2a71=_0xbc2a71-0x0;var _0x43f2ee=_0xac19[_0xbc2a71];return _0x43f2ee;};'use strict';var _=require(_0x9ac1('0x0'));var util=require(_0x9ac1('0x1'));var logger=require('../../config/logger')(_0x9ac1('0x2'));var moment=require(_0x9ac1('0x3'));var BPromise=require(_0x9ac1('0x4'));var rp=require(_0x9ac1('0x5'));var fs=require('fs');var path=require(_0x9ac1('0x6'));var rimraf=require('rimraf');var config=require(_0x9ac1('0x7'));var attributes=require(_0x9ac1('0x8'));module[_0x9ac1('0x9')]=function(_0x4cf2c2,_0x43e2f4){return _0x4cf2c2[_0x9ac1('0xa')](_0x9ac1('0xb'),attributes,{'tableName':'voice_recordings','paranoid':![],'indexes':[{'name':_0x9ac1('0xc'),'fields':[_0x9ac1('0xc')]}],'timestamps':!![]});};
\ No newline at end of file
index 7c43394..144643b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd4a2=['client','http','request','then','info','VoiceRecording,\x20%s,\x20%s','request\x20sent','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','error','code','message','UpdateVoiceRecording','update','body','options','raw','attributes','limit','stringify','catch','CreateVoiceRecording','../../components/encryptor','Setting','findOne','VoiceRecording','create','callRecordingEncryption','existsSync','value','format','%s.cypher','encryptFile','recording','unlink','lodash','bluebird','ioredis','../../config/utils','rpc','../../config/environment','jayson/promise'];(function(_0x4b4865,_0xb43449){var _0x190dc2=function(_0x2b41f7){while(--_0x2b41f7){_0x4b4865['push'](_0x4b4865['shift']());}};_0x190dc2(++_0xb43449);}(_0xd4a2,0x173));var _0x2d4a=function(_0x4045f4,_0xa1163a){_0x4045f4=_0x4045f4-0x0;var _0x4be612=_0xd4a2[_0x4045f4];return _0x4be612;};'use strict';var _=require(_0x2d4a('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x2d4a('0x1'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x2d4a('0x2'));var db=require('../../mysqldb')['db'];var utils=require(_0x2d4a('0x3'));var logger=require('../../config/logger')(_0x2d4a('0x4'));var config=require(_0x2d4a('0x5'));var jayson=require(_0x2d4a('0x6'));var client=jayson[_0x2d4a('0x7')][_0x2d4a('0x8')]({'port':0x232a});function respondWithRpcPromise(_0x57058f,_0x45fefb,_0x41b161){return new BPromise(function(_0x1f237e,_0x29597e){return client[_0x2d4a('0x9')](_0x57058f,_0x41b161)[_0x2d4a('0xa')](function(_0xb9f016){logger[_0x2d4a('0xb')](_0x2d4a('0xc'),_0x45fefb,_0x2d4a('0xd'));logger[_0x2d4a('0xe')](_0x2d4a('0xf'),_0x45fefb,'request\x20sent',JSON['stringify'](_0xb9f016));if(_0xb9f016[_0x2d4a('0x10')]){if(_0xb9f016['error'][_0x2d4a('0x11')]===0x1f4){logger[_0x2d4a('0x10')](_0x2d4a('0xc'),_0x45fefb,_0xb9f016[_0x2d4a('0x10')][_0x2d4a('0x12')]);return _0x29597e(_0xb9f016[_0x2d4a('0x10')][_0x2d4a('0x12')]);}logger[_0x2d4a('0x10')]('VoiceRecording,\x20%s,\x20%s',_0x45fefb,_0xb9f016['error'][_0x2d4a('0x12')]);return _0x1f237e(_0xb9f016['error'][_0x2d4a('0x12')]);}else{logger[_0x2d4a('0xb')](_0x2d4a('0xc'),_0x45fefb,_0x2d4a('0xd'));_0x1f237e(_0xb9f016['result'][_0x2d4a('0x12')]);}})['catch'](function(_0x2838fa){logger['error'](_0x2d4a('0xc'),_0x45fefb,_0x2838fa);_0x29597e(_0x2838fa);});});}exports[_0x2d4a('0x13')]=function(_0x2188b2){var _0x388371=this;return new Promise(function(_0x498956,_0x4fd169){return db['VoiceRecording'][_0x2d4a('0x14')](_0x2188b2[_0x2d4a('0x15')],{'raw':_0x2188b2[_0x2d4a('0x16')]?_0x2188b2[_0x2d4a('0x16')][_0x2d4a('0x17')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x2188b2[_0x2d4a('0x16')]?_0x2188b2['options']['where']||null:null,'attributes':_0x2188b2[_0x2d4a('0x16')]?_0x2188b2[_0x2d4a('0x16')][_0x2d4a('0x18')]||null:null,'limit':_0x2188b2[_0x2d4a('0x16')]?_0x2188b2[_0x2d4a('0x16')][_0x2d4a('0x19')]||null:null})[_0x2d4a('0xa')](function(_0xa43fb1){logger['info'](_0x2d4a('0x13'),_0x2188b2);logger[_0x2d4a('0xe')](_0x2d4a('0x13'),_0x2188b2,JSON[_0x2d4a('0x1a')](_0xa43fb1));_0x498956(_0xa43fb1);})[_0x2d4a('0x1b')](function(_0xed2822){logger[_0x2d4a('0x10')](_0x2d4a('0x13'),_0xed2822['message'],_0x2188b2);_0x4fd169(_0x388371['error'](0x1f4,_0xed2822['message']));});});};exports[_0x2d4a('0x1c')]=function(_0x5029f3){var _0x410f7d=this;return new Promise(function(_0x3a2fd3,_0x3d5558){var _0x1d2fa6=require(_0x2d4a('0x1d'));var _0x326c38;return db[_0x2d4a('0x1e')][_0x2d4a('0x1f')]({'attributes':['id','callRecordingEncryption'],'where':{'id':0x1},'raw':!![]})[_0x2d4a('0xa')](function(_0x5ce262){_0x326c38=_0x5ce262;return db[_0x2d4a('0x20')][_0x2d4a('0x21')](_0x5029f3[_0x2d4a('0x15')]);})[_0x2d4a('0xa')](function(_0x101382){if(_0x326c38[_0x2d4a('0x22')]&&fs[_0x2d4a('0x23')](_0x101382[_0x2d4a('0x24')])){var _0x51b447=util[_0x2d4a('0x25')](_0x2d4a('0x26'),_0x101382[_0x2d4a('0x24')]);return _0x1d2fa6[_0x2d4a('0x27')](_0x101382[_0x2d4a('0x24')],_0x51b447,config['secrets'][_0x2d4a('0x28')])[_0x2d4a('0xa')](function(){fs[_0x2d4a('0x29')](_0x101382[_0x2d4a('0x24')]);logger[_0x2d4a('0xb')]('CreateVoiceRecording\x20file\x20encrypted');return _0x101382;});}return _0x101382;})[_0x2d4a('0xa')](function(_0x2ae694){logger[_0x2d4a('0xb')](_0x2d4a('0x1c'),_0x5029f3);logger[_0x2d4a('0xe')](_0x2d4a('0x1c'),_0x5029f3,JSON['stringify'](_0x2ae694));_0x3a2fd3(_0x2ae694);})[_0x2d4a('0x1b')](function(_0x28955f){logger[_0x2d4a('0x10')](_0x2d4a('0x1c'),_0x28955f[_0x2d4a('0x12')],_0x5029f3);_0x3d5558(_0x410f7d['error'](0x1f4,_0x28955f[_0x2d4a('0x12')]));});});};
\ No newline at end of file
+var _0x4991=['where','attributes','limit','catch','VoiceRecording','create','existsSync','value','%s.cypher','secrets','unlink','CreateVoiceRecording\x20file\x20encrypted','CreateVoiceRecording','lodash','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceRecording,\x20%s,\x20%s','debug','VoiceRecording,\x20%s,\x20%s,\x20%s','stringify','error','message','result','UpdateVoiceRecording','update','body','options','raw'];(function(_0x2bdd0f,_0x1dd058){var _0xde14c6=function(_0x1e2e18){while(--_0x1e2e18){_0x2bdd0f['push'](_0x2bdd0f['shift']());}};_0xde14c6(++_0x1dd058);}(_0x4991,0xf7));var _0x1499=function(_0x3471a9,_0x3baa82){_0x3471a9=_0x3471a9-0x0;var _0x4cdba3=_0x4991[_0x3471a9];return _0x4cdba3;};'use strict';var _=require(_0x1499('0x0'));var util=require('util');var moment=require(_0x1499('0x1'));var BPromise=require('bluebird');var rs=require(_0x1499('0x2'));var fs=require('fs');var Redis=require(_0x1499('0x3'));var db=require(_0x1499('0x4'))['db'];var utils=require(_0x1499('0x5'));var logger=require(_0x1499('0x6'))(_0x1499('0x7'));var config=require(_0x1499('0x8'));var jayson=require(_0x1499('0x9'));var client=jayson['client'][_0x1499('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x1c3bd7,_0x1c65c3,_0x33b261){return new BPromise(function(_0x133bae,_0x380e48){return client[_0x1499('0xb')](_0x1c3bd7,_0x33b261)[_0x1499('0xc')](function(_0x48d2ca){logger[_0x1499('0xd')](_0x1499('0xe'),_0x1c65c3,'request\x20sent');logger[_0x1499('0xf')](_0x1499('0x10'),_0x1c65c3,'request\x20sent',JSON[_0x1499('0x11')](_0x48d2ca));if(_0x48d2ca[_0x1499('0x12')]){if(_0x48d2ca['error']['code']===0x1f4){logger['error'](_0x1499('0xe'),_0x1c65c3,_0x48d2ca[_0x1499('0x12')][_0x1499('0x13')]);return _0x380e48(_0x48d2ca[_0x1499('0x12')][_0x1499('0x13')]);}logger['error']('VoiceRecording,\x20%s,\x20%s',_0x1c65c3,_0x48d2ca[_0x1499('0x12')]['message']);return _0x133bae(_0x48d2ca[_0x1499('0x12')][_0x1499('0x13')]);}else{logger[_0x1499('0xd')](_0x1499('0xe'),_0x1c65c3,'request\x20sent');_0x133bae(_0x48d2ca[_0x1499('0x14')][_0x1499('0x13')]);}})['catch'](function(_0x25164c){logger[_0x1499('0x12')](_0x1499('0xe'),_0x1c65c3,_0x25164c);_0x380e48(_0x25164c);});});}exports[_0x1499('0x15')]=function(_0x1e45a9){var _0x27e533=this;return new Promise(function(_0x5b9859,_0x541477){return db['VoiceRecording'][_0x1499('0x16')](_0x1e45a9[_0x1499('0x17')],{'raw':_0x1e45a9['options']?_0x1e45a9[_0x1499('0x18')][_0x1499('0x19')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x1e45a9[_0x1499('0x18')]?_0x1e45a9[_0x1499('0x18')][_0x1499('0x1a')]||null:null,'attributes':_0x1e45a9[_0x1499('0x18')]?_0x1e45a9[_0x1499('0x18')][_0x1499('0x1b')]||null:null,'limit':_0x1e45a9[_0x1499('0x18')]?_0x1e45a9[_0x1499('0x18')][_0x1499('0x1c')]||null:null})[_0x1499('0xc')](function(_0x223f4c){logger[_0x1499('0xd')](_0x1499('0x15'),_0x1e45a9);logger[_0x1499('0xf')](_0x1499('0x15'),_0x1e45a9,JSON['stringify'](_0x223f4c));_0x5b9859(_0x223f4c);})[_0x1499('0x1d')](function(_0xc79f69){logger[_0x1499('0x12')](_0x1499('0x15'),_0xc79f69[_0x1499('0x13')],_0x1e45a9);_0x541477(_0x27e533[_0x1499('0x12')](0x1f4,_0xc79f69['message']));});});};exports['CreateVoiceRecording']=function(_0x12739b){var _0x3c9aca=this;return new Promise(function(_0x3b9259,_0x50f0cc){var _0x32782a=require('../../components/encryptor');var _0x3e5ed1;return db['Setting']['findOne']({'attributes':['id','callRecordingEncryption'],'where':{'id':0x1},'raw':!![]})[_0x1499('0xc')](function(_0x103efa){_0x3e5ed1=_0x103efa;return db[_0x1499('0x1e')][_0x1499('0x1f')](_0x12739b[_0x1499('0x17')]);})[_0x1499('0xc')](function(_0x3dd534){if(_0x3e5ed1['callRecordingEncryption']&&fs[_0x1499('0x20')](_0x3dd534[_0x1499('0x21')])){var _0x39995b=util['format'](_0x1499('0x22'),_0x3dd534[_0x1499('0x21')]);return _0x32782a['encryptFile'](_0x3dd534[_0x1499('0x21')],_0x39995b,config[_0x1499('0x23')]['recording'])[_0x1499('0xc')](function(){fs[_0x1499('0x24')](_0x3dd534[_0x1499('0x21')]);logger[_0x1499('0xd')](_0x1499('0x25'));return _0x3dd534;});}return _0x3dd534;})[_0x1499('0xc')](function(_0x7b4d75){logger[_0x1499('0xd')](_0x1499('0x26'),_0x12739b);logger[_0x1499('0xf')](_0x1499('0x26'),_0x12739b,JSON[_0x1499('0x11')](_0x7b4d75));_0x3b9259(_0x7b4d75);})[_0x1499('0x1d')](function(_0x3f4c1a){logger[_0x1499('0x12')](_0x1499('0x26'),_0x3f4c1a[_0x1499('0x13')],_0x12739b);_0x50f0cc(_0x3c9aca[_0x1499('0x12')](0x1f4,_0x3f4c1a[_0x1499('0x13')]));});});};
\ No newline at end of file
index 279a069..e6117db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x918c=['../../config/environment','get','index','/describe','isAuthenticated','describe','post','create','/:id','update','delete','destroy','exports','multer','path','express','Router','fs-extra','../../components/interaction/service'];(function(_0x4e8146,_0x43af68){var _0x1e2dbd=function(_0x5a0a22){while(--_0x5a0a22){_0x4e8146['push'](_0x4e8146['shift']());}};_0x1e2dbd(++_0x43af68);}(_0x918c,0x104));var _0xc918=function(_0x2f45ea,_0x15c656){_0x2f45ea=_0x2f45ea-0x0;var _0x485a84=_0x918c[_0x2f45ea];return _0x485a84;};'use strict';var multer=require(_0xc918('0x0'));var util=require('util');var path=require(_0xc918('0x1'));var timeout=require('connect-timeout');var express=require(_0xc918('0x2'));var router=express[_0xc918('0x3')]();var fs_extra=require(_0xc918('0x4'));var auth=require('../../components/auth/service');var interaction=require(_0xc918('0x5'));var config=require(_0xc918('0x6'));var controller=require('./voiceTransferReport.controller');router[_0xc918('0x7')]('/',auth['isAuthenticated'](),controller[_0xc918('0x8')]);router['get'](_0xc918('0x9'),auth[_0xc918('0xa')](),controller[_0xc918('0xb')]);router['get']('/:id',auth['isAuthenticated'](),controller['show']);router[_0xc918('0xc')]('/',auth[_0xc918('0xa')](),controller[_0xc918('0xd')]);router['put'](_0xc918('0xe'),auth[_0xc918('0xa')](),controller[_0xc918('0xf')]);router[_0xc918('0x10')](_0xc918('0xe'),auth[_0xc918('0xa')](),controller[_0xc918('0x11')]);module[_0xc918('0x12')]=router;
\ No newline at end of file
+var _0x9387=['../../config/environment','./voiceTransferReport.controller','index','/describe','isAuthenticated','get','/:id','show','post','create','put','delete','exports','multer','path','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x57b54c,_0x54ce0d){var _0x59cc19=function(_0xa33bc6){while(--_0xa33bc6){_0x57b54c['push'](_0x57b54c['shift']());}};_0x59cc19(++_0x54ce0d);}(_0x9387,0xa5));var _0x7938=function(_0x190588,_0x1b9868){_0x190588=_0x190588-0x0;var _0xa7d7b8=_0x9387[_0x190588];return _0xa7d7b8;};'use strict';var multer=require(_0x7938('0x0'));var util=require('util');var path=require(_0x7938('0x1'));var timeout=require('connect-timeout');var express=require(_0x7938('0x2'));var router=express[_0x7938('0x3')]();var fs_extra=require('fs-extra');var auth=require(_0x7938('0x4'));var interaction=require(_0x7938('0x5'));var config=require(_0x7938('0x6'));var controller=require(_0x7938('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x7938('0x8')]);router['get'](_0x7938('0x9'),auth[_0x7938('0xa')](),controller['describe']);router[_0x7938('0xb')](_0x7938('0xc'),auth[_0x7938('0xa')](),controller[_0x7938('0xd')]);router[_0x7938('0xe')]('/',auth[_0x7938('0xa')](),controller[_0x7938('0xf')]);router[_0x7938('0x10')](_0x7938('0xc'),auth[_0x7938('0xa')](),controller['update']);router[_0x7938('0x11')](_0x7938('0xc'),auth[_0x7938('0xa')](),controller['destroy']);module[_0x7938('0x12')]=router;
\ No newline at end of file
index 2a2a0f3..71abbe6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x80bc=['blind','attended','STRING','Yes','exports','ENUM'];(function(_0x5783f4,_0x4a9e0a){var _0x28e380=function(_0x1ffc49){while(--_0x1ffc49){_0x5783f4['push'](_0x5783f4['shift']());}};_0x28e380(++_0x4a9e0a);}(_0x80bc,0x1c6));var _0xc80b=function(_0x2d460c,_0x4f08c0){_0x2d460c=_0x2d460c-0x0;var _0xf6fc4c=_0x80bc[_0x2d460c];return _0xf6fc4c;};'use strict';var Sequelize=require('sequelize');var moment=require('moment');module[_0xc80b('0x0')]={'type':{'type':Sequelize[_0xc80b('0x1')](_0xc80b('0x2'),_0xc80b('0x3'))},'result':{'type':Sequelize[_0xc80b('0x4')]},'transfererchannel':{'type':Sequelize['STRING']},'transferercalleridnum':{'type':Sequelize[_0xc80b('0x4')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize[_0xc80b('0x4')]},'transfererconnectedlinename':{'type':Sequelize[_0xc80b('0x4')]},'transfereraccountcode':{'type':Sequelize[_0xc80b('0x4')]},'transferercontext':{'type':Sequelize[_0xc80b('0x4')]},'transfererexten':{'type':Sequelize[_0xc80b('0x4')]},'transfererlinkedid':{'type':Sequelize['STRING']},'transfereechannel':{'type':Sequelize[_0xc80b('0x4')]},'transfereecalleridnum':{'type':Sequelize['STRING']},'transfereecalleridname':{'type':Sequelize[_0xc80b('0x4')]},'transfereeconnectedlinenum':{'type':Sequelize[_0xc80b('0x4')]},'transfereeconnectedlinename':{'type':Sequelize[_0xc80b('0x4')]},'transfereeaccountcode':{'type':Sequelize[_0xc80b('0x4')]},'transfereecontext':{'type':Sequelize['STRING']},'transfereeexten':{'type':Sequelize['STRING']},'transfereelinkedid':{'type':Sequelize[_0xc80b('0x4')]},'isexternal':{'type':Sequelize[_0xc80b('0x1')](_0xc80b('0x5'),'No')},'context':{'type':Sequelize[_0xc80b('0x4')]},'extension':{'type':Sequelize[_0xc80b('0x4')]}};
\ No newline at end of file
+var _0x78e7=['attended','STRING','ENUM','moment','exports','blind'];(function(_0x196d14,_0x8a3251){var _0x506a10=function(_0x591256){while(--_0x591256){_0x196d14['push'](_0x196d14['shift']());}};_0x506a10(++_0x8a3251);}(_0x78e7,0x81));var _0x778e=function(_0x24a742,_0x9aa2b9){_0x24a742=_0x24a742-0x0;var _0x490d6d=_0x78e7[_0x24a742];return _0x490d6d;};'use strict';var Sequelize=require('sequelize');var moment=require(_0x778e('0x0'));module[_0x778e('0x1')]={'type':{'type':Sequelize['ENUM'](_0x778e('0x2'),_0x778e('0x3'))},'result':{'type':Sequelize['STRING']},'transfererchannel':{'type':Sequelize[_0x778e('0x4')]},'transferercalleridnum':{'type':Sequelize[_0x778e('0x4')]},'transferercalleridname':{'type':Sequelize['STRING']},'transfererconnectedlinenum':{'type':Sequelize[_0x778e('0x4')]},'transfererconnectedlinename':{'type':Sequelize[_0x778e('0x4')]},'transfereraccountcode':{'type':Sequelize[_0x778e('0x4')]},'transferercontext':{'type':Sequelize[_0x778e('0x4')]},'transfererexten':{'type':Sequelize['STRING']},'transfererlinkedid':{'type':Sequelize[_0x778e('0x4')]},'transfereechannel':{'type':Sequelize['STRING']},'transfereecalleridnum':{'type':Sequelize[_0x778e('0x4')]},'transfereecalleridname':{'type':Sequelize[_0x778e('0x4')]},'transfereeconnectedlinenum':{'type':Sequelize[_0x778e('0x4')]},'transfereeconnectedlinename':{'type':Sequelize[_0x778e('0x4')]},'transfereeaccountcode':{'type':Sequelize[_0x778e('0x4')]},'transfereecontext':{'type':Sequelize[_0x778e('0x4')]},'transfereeexten':{'type':Sequelize[_0x778e('0x4')]},'transfereelinkedid':{'type':Sequelize['STRING']},'isexternal':{'type':Sequelize[_0x778e('0x5')]('Yes','No')},'context':{'type':Sequelize[_0x778e('0x4')]},'extension':{'type':Sequelize[_0x778e('0x4')]}};
\ No newline at end of file
index 73951d4..da3915c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cc8=['filter','includeAll','include','findAll','rows','catch','show','params','length','options','find','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','mustache','util','sox','ejs','lodash','squel','crypto','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','json','offset','undefined','limit','count','status','set','Content-Range','apply','reject','save','update','then','destroy','end','stack','name','send','index','map','VoiceTransferReport','rawAttributes','fieldName','key','keys','filters','intersection','model','fields','query','attributes','hasOwnProperty','nolimit','order','sort','pick','where','merge','VIRTUAL'];(function(_0x376fb9,_0x1d74c6){var _0x4261c4=function(_0x120e1d){while(--_0x120e1d){_0x376fb9['push'](_0x376fb9['shift']());}};_0x4261c4(++_0x1d74c6);}(_0x2cc8,0x184));var _0x82cc=function(_0xe66cf2,_0x32ba5f){_0xe66cf2=_0xe66cf2-0x0;var _0x2d84e7=_0x2cc8[_0xe66cf2];return _0x2d84e7;};'use strict';var emlformat=require(_0x82cc('0x0'));var rimraf=require(_0x82cc('0x1'));var zipdir=require(_0x82cc('0x2'));var jsonpatch=require(_0x82cc('0x3'));var rp=require('request-promise');var moment=require(_0x82cc('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x82cc('0x5'));var util=require(_0x82cc('0x6'));var path=require('path');var sox=require(_0x82cc('0x7'));var csv=require('to-csv');var ejs=require(_0x82cc('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x82cc('0x9'));var squel=require(_0x82cc('0xa'));var crypto=require(_0x82cc('0xb'));var jsforce=require(_0x82cc('0xc'));var deskjs=require('desk.js');var toCsv=require(_0x82cc('0xd'));var querystring=require(_0x82cc('0xe'));var Papa=require(_0x82cc('0xf'));var Redis=require(_0x82cc('0x10'));var authService=require('../../components/auth/service');var qs=require(_0x82cc('0x11'));var as=require(_0x82cc('0x12'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')('api');var utils=require(_0x82cc('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0x82cc('0x14'));var db=require(_0x82cc('0x15'))['db'];function respondWithStatusCode(_0x2414e1,_0x16b2d1){_0x16b2d1=_0x16b2d1||0xcc;return function(_0x73e5e7){if(_0x73e5e7){return _0x2414e1[_0x82cc('0x16')](_0x16b2d1);}return _0x2414e1['status'](_0x16b2d1)['end']();};}function respondWithResult(_0x1a0591,_0x4c079b){_0x4c079b=_0x4c079b||0xc8;return function(_0x3a4669){if(_0x3a4669){return _0x1a0591['status'](_0x4c079b)[_0x82cc('0x17')](_0x3a4669);}};}function respondWithFilteredResult(_0x217522,_0x45b8f2){return function(_0x56e01b){if(_0x56e01b){var _0x5f41d9=typeof _0x45b8f2[_0x82cc('0x18')]===_0x82cc('0x19')&&typeof _0x45b8f2[_0x82cc('0x1a')]===_0x82cc('0x19');var _0x3d93c4=_0x56e01b[_0x82cc('0x1b')];var _0x2edab6=_0x5f41d9?0x0:_0x45b8f2[_0x82cc('0x18')];var _0x44e672=_0x5f41d9?_0x56e01b[_0x82cc('0x1b')]:_0x45b8f2[_0x82cc('0x18')]+_0x45b8f2[_0x82cc('0x1a')];var _0x3e7e02;if(_0x44e672>=_0x3d93c4){_0x44e672=_0x3d93c4;_0x3e7e02=0xc8;}else{_0x3e7e02=0xce;}_0x217522[_0x82cc('0x1c')](_0x3e7e02);return _0x217522[_0x82cc('0x1d')](_0x82cc('0x1e'),_0x2edab6+'-'+_0x44e672+'/'+_0x3d93c4)[_0x82cc('0x17')](_0x56e01b);}return null;};}function patchUpdates(_0x3f1e6b){return function(_0x3e6447){try{jsonpatch[_0x82cc('0x1f')](_0x3e6447,_0x3f1e6b,!![]);}catch(_0x304c2c){return BPromise[_0x82cc('0x20')](_0x304c2c);}return _0x3e6447[_0x82cc('0x21')]();};}function saveUpdates(_0x2e3ccd,_0x1fe0b2){return function(_0x947de4){if(_0x947de4){return _0x947de4[_0x82cc('0x22')](_0x2e3ccd)[_0x82cc('0x23')](function(_0x202789){return _0x202789;});}return null;};}function removeEntity(_0x3a781b,_0x507958){return function(_0x30ebcd){if(_0x30ebcd){return _0x30ebcd[_0x82cc('0x24')]()[_0x82cc('0x23')](function(){_0x3a781b[_0x82cc('0x1c')](0xcc)[_0x82cc('0x25')]();});}};}function handleEntityNotFound(_0x1936c6,_0x1beec1){return function(_0x2683ef){if(!_0x2683ef){_0x1936c6[_0x82cc('0x16')](0x194);}return _0x2683ef;};}function handleError(_0x512641,_0x19a499){_0x19a499=_0x19a499||0x1f4;return function(_0x54d96f){logger['error'](_0x54d96f[_0x82cc('0x26')]);if(_0x54d96f[_0x82cc('0x27')]){delete _0x54d96f['name'];}_0x512641[_0x82cc('0x1c')](_0x19a499)[_0x82cc('0x28')](_0x54d96f);};}exports[_0x82cc('0x29')]=function(_0x26031d,_0x2dc7d6){var _0x1f2ea7={},_0x206882={},_0x362e6e={'count':0x0,'rows':[]};var _0x2241de=_[_0x82cc('0x2a')](db[_0x82cc('0x2b')][_0x82cc('0x2c')],function(_0x266c0e){return{'name':_0x266c0e[_0x82cc('0x2d')],'type':_0x266c0e['type'][_0x82cc('0x2e')]};});_0x206882['model']=_[_0x82cc('0x2a')](_0x2241de,'name');_0x206882['query']=_[_0x82cc('0x2f')](_0x26031d['query']);_0x206882[_0x82cc('0x30')]=_[_0x82cc('0x31')](_0x206882[_0x82cc('0x32')],_0x206882['query']);_0x1f2ea7['attributes']=_[_0x82cc('0x31')](_0x206882[_0x82cc('0x32')],qs[_0x82cc('0x33')](_0x26031d[_0x82cc('0x34')]['fields']));_0x1f2ea7[_0x82cc('0x35')]=_0x1f2ea7[_0x82cc('0x35')]['length']?_0x1f2ea7[_0x82cc('0x35')]:_0x206882[_0x82cc('0x32')];if(!_0x26031d[_0x82cc('0x34')][_0x82cc('0x36')](_0x82cc('0x37'))){_0x1f2ea7[_0x82cc('0x1a')]=qs[_0x82cc('0x1a')](_0x26031d[_0x82cc('0x34')][_0x82cc('0x1a')]);_0x1f2ea7[_0x82cc('0x18')]=qs[_0x82cc('0x18')](_0x26031d['query']['offset']);}_0x1f2ea7[_0x82cc('0x38')]=qs['sort'](_0x26031d[_0x82cc('0x34')][_0x82cc('0x39')]);_0x1f2ea7['where']=qs[_0x82cc('0x30')](_[_0x82cc('0x3a')](_0x26031d[_0x82cc('0x34')],_0x206882[_0x82cc('0x30')]),_0x2241de);if(_0x26031d['query']['filter']){_0x1f2ea7[_0x82cc('0x3b')]=_[_0x82cc('0x3c')](_0x1f2ea7[_0x82cc('0x3b')],{'$or':_[_0x82cc('0x2a')](_0x2241de,function(_0x3a3e3c){if(_0x3a3e3c['type']!==_0x82cc('0x3d')){var _0x12fd42={};_0x12fd42[_0x3a3e3c[_0x82cc('0x27')]]={'$like':'%'+_0x26031d[_0x82cc('0x34')][_0x82cc('0x3e')]+'%'};return _0x12fd42;}})});}_0x1f2ea7=_['merge']({},_0x1f2ea7,_0x26031d['options']);var _0x478b47={'where':_0x1f2ea7[_0x82cc('0x3b')]};return db[_0x82cc('0x2b')][_0x82cc('0x1b')](_0x478b47)['then'](function(_0x48972f){_0x362e6e[_0x82cc('0x1b')]=_0x48972f;if(_0x26031d['query'][_0x82cc('0x3f')]){_0x1f2ea7[_0x82cc('0x40')]=[{'all':!![]}];}return db['VoiceTransferReport'][_0x82cc('0x41')](_0x1f2ea7);})[_0x82cc('0x23')](function(_0x3bd1b3){_0x362e6e[_0x82cc('0x42')]=_0x3bd1b3;return _0x362e6e;})[_0x82cc('0x23')](respondWithFilteredResult(_0x2dc7d6,_0x1f2ea7))[_0x82cc('0x43')](handleError(_0x2dc7d6,null));};exports[_0x82cc('0x44')]=function(_0xd45bb7,_0x1ac38c){var _0x229404={'raw':!![],'where':{'id':_0xd45bb7[_0x82cc('0x45')]['id']}},_0x1df893={};_0x1df893[_0x82cc('0x32')]=_['keys'](db['VoiceTransferReport'][_0x82cc('0x2c')]);_0x1df893[_0x82cc('0x34')]=_['keys'](_0xd45bb7['query']);_0x1df893[_0x82cc('0x30')]=_[_0x82cc('0x31')](_0x1df893[_0x82cc('0x32')],_0x1df893['query']);_0x229404['attributes']=_[_0x82cc('0x31')](_0x1df893['model'],qs[_0x82cc('0x33')](_0xd45bb7[_0x82cc('0x34')][_0x82cc('0x33')]));_0x229404[_0x82cc('0x35')]=_0x229404[_0x82cc('0x35')][_0x82cc('0x46')]?_0x229404[_0x82cc('0x35')]:_0x1df893['model'];if(_0xd45bb7[_0x82cc('0x34')][_0x82cc('0x3f')]){_0x229404['include']=[{'all':!![]}];}_0x229404=_['merge']({},_0x229404,_0xd45bb7[_0x82cc('0x47')]);return db[_0x82cc('0x2b')][_0x82cc('0x48')](_0x229404)['then'](handleEntityNotFound(_0x1ac38c,null))['then'](respondWithResult(_0x1ac38c,null))[_0x82cc('0x43')](handleError(_0x1ac38c,null));};exports['create']=function(_0x4dbdae,_0x3378ff){return db['VoiceTransferReport']['create'](_0x4dbdae[_0x82cc('0x49')],{})['then'](respondWithResult(_0x3378ff,0xc9))[_0x82cc('0x43')](handleError(_0x3378ff,null));};exports[_0x82cc('0x22')]=function(_0x5846b1,_0xf0523c){if(_0x5846b1[_0x82cc('0x49')]['id']){delete _0x5846b1[_0x82cc('0x49')]['id'];}return db[_0x82cc('0x2b')]['find']({'where':{'id':_0x5846b1[_0x82cc('0x45')]['id']}})[_0x82cc('0x23')](handleEntityNotFound(_0xf0523c,null))[_0x82cc('0x23')](saveUpdates(_0x5846b1[_0x82cc('0x49')],null))[_0x82cc('0x23')](respondWithResult(_0xf0523c,null))[_0x82cc('0x43')](handleError(_0xf0523c,null));};exports[_0x82cc('0x24')]=function(_0x3a039c,_0x498baf){return db[_0x82cc('0x2b')][_0x82cc('0x48')]({'where':{'id':_0x3a039c[_0x82cc('0x45')]['id']}})[_0x82cc('0x23')](handleEntityNotFound(_0x498baf,null))[_0x82cc('0x23')](removeEntity(_0x498baf,null))['catch'](handleError(_0x498baf,null));};exports[_0x82cc('0x4a')]=function(_0x2a3d40,_0x49b8c0){return db[_0x82cc('0x2b')][_0x82cc('0x4a')]()[_0x82cc('0x23')](respondWithResult(_0x49b8c0,null))[_0x82cc('0x43')](handleError(_0x49b8c0,null));};
\ No newline at end of file
+var _0xb146=['destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','filter','merge','options','includeAll','VoiceTransferReport','findAll','catch','show','params','find','create','body','describe','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','querystring','papaparse','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../mysqldb','sendStatus','end','offset','undefined','limit','count','status','Content-Range','apply','reject','save','update','then'];(function(_0x48e885,_0x1b7f8a){var _0x3830a4=function(_0x27a583){while(--_0x27a583){_0x48e885['push'](_0x48e885['shift']());}};_0x3830a4(++_0x1b7f8a);}(_0xb146,0x191));var _0x6b14=function(_0x595768,_0x90cee2){_0x595768=_0x595768-0x0;var _0x26c217=_0xb146[_0x595768];return _0x26c217;};'use strict';var emlformat=require(_0x6b14('0x0'));var rimraf=require(_0x6b14('0x1'));var zipdir=require(_0x6b14('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x6b14('0x3'));var moment=require('moment');var BPromise=require(_0x6b14('0x4'));var Mustache=require(_0x6b14('0x5'));var util=require(_0x6b14('0x6'));var path=require(_0x6b14('0x7'));var sox=require(_0x6b14('0x8'));var csv=require(_0x6b14('0x9'));var ejs=require(_0x6b14('0xa'));var fs=require('fs');var fs_extra=require(_0x6b14('0xb'));var _=require(_0x6b14('0xc'));var squel=require(_0x6b14('0xd'));var crypto=require(_0x6b14('0xe'));var jsforce=require('jsforce');var deskjs=require('desk.js');var toCsv=require('to-csv');var querystring=require(_0x6b14('0xf'));var Papa=require(_0x6b14('0x10'));var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x6b14('0x11'));var as=require(_0x6b14('0x12'));var hardwareService=require(_0x6b14('0x13'));var logger=require(_0x6b14('0x14'))(_0x6b14('0x15'));var utils=require(_0x6b14('0x16'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x6b14('0x17'))['db'];function respondWithStatusCode(_0x5450f9,_0x4aa523){_0x4aa523=_0x4aa523||0xcc;return function(_0x38b3dd){if(_0x38b3dd){return _0x5450f9[_0x6b14('0x18')](_0x4aa523);}return _0x5450f9['status'](_0x4aa523)[_0x6b14('0x19')]();};}function respondWithResult(_0x58aa36,_0x45027a){_0x45027a=_0x45027a||0xc8;return function(_0x98c598){if(_0x98c598){return _0x58aa36['status'](_0x45027a)['json'](_0x98c598);}};}function respondWithFilteredResult(_0x5b9042,_0x49a4ba){return function(_0x2676b7){if(_0x2676b7){var _0x4b725b=typeof _0x49a4ba[_0x6b14('0x1a')]===_0x6b14('0x1b')&&typeof _0x49a4ba[_0x6b14('0x1c')]===_0x6b14('0x1b');var _0x2d9295=_0x2676b7[_0x6b14('0x1d')];var _0x3e37ba=_0x4b725b?0x0:_0x49a4ba[_0x6b14('0x1a')];var _0x4f534c=_0x4b725b?_0x2676b7['count']:_0x49a4ba[_0x6b14('0x1a')]+_0x49a4ba[_0x6b14('0x1c')];var _0x200c1c;if(_0x4f534c>=_0x2d9295){_0x4f534c=_0x2d9295;_0x200c1c=0xc8;}else{_0x200c1c=0xce;}_0x5b9042[_0x6b14('0x1e')](_0x200c1c);return _0x5b9042['set'](_0x6b14('0x1f'),_0x3e37ba+'-'+_0x4f534c+'/'+_0x2d9295)['json'](_0x2676b7);}return null;};}function patchUpdates(_0x477026){return function(_0x19674f){try{jsonpatch[_0x6b14('0x20')](_0x19674f,_0x477026,!![]);}catch(_0x5051c5){return BPromise[_0x6b14('0x21')](_0x5051c5);}return _0x19674f[_0x6b14('0x22')]();};}function saveUpdates(_0x218999,_0x2b372c){return function(_0x2d7636){if(_0x2d7636){return _0x2d7636[_0x6b14('0x23')](_0x218999)[_0x6b14('0x24')](function(_0x34efa0){return _0x34efa0;});}return null;};}function removeEntity(_0x2f7148,_0x5b50a4){return function(_0x4d7f5d){if(_0x4d7f5d){return _0x4d7f5d[_0x6b14('0x25')]()[_0x6b14('0x24')](function(){_0x2f7148[_0x6b14('0x1e')](0xcc)[_0x6b14('0x19')]();});}};}function handleEntityNotFound(_0x25f3dc,_0x4959e8){return function(_0x21d6bb){if(!_0x21d6bb){_0x25f3dc[_0x6b14('0x18')](0x194);}return _0x21d6bb;};}function handleError(_0x1ef98b,_0x4b7c3b){_0x4b7c3b=_0x4b7c3b||0x1f4;return function(_0x2a4c7f){logger[_0x6b14('0x26')](_0x2a4c7f[_0x6b14('0x27')]);if(_0x2a4c7f[_0x6b14('0x28')]){delete _0x2a4c7f['name'];}_0x1ef98b['status'](_0x4b7c3b)[_0x6b14('0x29')](_0x2a4c7f);};}exports[_0x6b14('0x2a')]=function(_0x2cdb38,_0x281d6b){var _0x8af67d={},_0x2f2a30={},_0xdc38f2={'count':0x0,'rows':[]};var _0x1a4cd6=_[_0x6b14('0x2b')](db['VoiceTransferReport'][_0x6b14('0x2c')],function(_0x3b8245){return{'name':_0x3b8245[_0x6b14('0x2d')],'type':_0x3b8245[_0x6b14('0x2e')][_0x6b14('0x2f')]};});_0x2f2a30[_0x6b14('0x30')]=_[_0x6b14('0x2b')](_0x1a4cd6,_0x6b14('0x28'));_0x2f2a30[_0x6b14('0x31')]=_[_0x6b14('0x32')](_0x2cdb38[_0x6b14('0x31')]);_0x2f2a30[_0x6b14('0x33')]=_[_0x6b14('0x34')](_0x2f2a30[_0x6b14('0x30')],_0x2f2a30[_0x6b14('0x31')]);_0x8af67d[_0x6b14('0x35')]=_['intersection'](_0x2f2a30[_0x6b14('0x30')],qs['fields'](_0x2cdb38[_0x6b14('0x31')][_0x6b14('0x36')]));_0x8af67d[_0x6b14('0x35')]=_0x8af67d['attributes'][_0x6b14('0x37')]?_0x8af67d[_0x6b14('0x35')]:_0x2f2a30[_0x6b14('0x30')];if(!_0x2cdb38[_0x6b14('0x31')]['hasOwnProperty'](_0x6b14('0x38'))){_0x8af67d[_0x6b14('0x1c')]=qs[_0x6b14('0x1c')](_0x2cdb38[_0x6b14('0x31')][_0x6b14('0x1c')]);_0x8af67d[_0x6b14('0x1a')]=qs[_0x6b14('0x1a')](_0x2cdb38[_0x6b14('0x31')][_0x6b14('0x1a')]);}_0x8af67d[_0x6b14('0x39')]=qs[_0x6b14('0x3a')](_0x2cdb38[_0x6b14('0x31')]['sort']);_0x8af67d[_0x6b14('0x3b')]=qs[_0x6b14('0x33')](_['pick'](_0x2cdb38[_0x6b14('0x31')],_0x2f2a30['filters']),_0x1a4cd6);if(_0x2cdb38['query'][_0x6b14('0x3c')]){_0x8af67d[_0x6b14('0x3b')]=_[_0x6b14('0x3d')](_0x8af67d[_0x6b14('0x3b')],{'$or':_['map'](_0x1a4cd6,function(_0xfcef8e){if(_0xfcef8e[_0x6b14('0x2e')]!=='VIRTUAL'){var _0x12b54a={};_0x12b54a[_0xfcef8e[_0x6b14('0x28')]]={'$like':'%'+_0x2cdb38['query']['filter']+'%'};return _0x12b54a;}})});}_0x8af67d=_[_0x6b14('0x3d')]({},_0x8af67d,_0x2cdb38[_0x6b14('0x3e')]);var _0xffff54={'where':_0x8af67d['where']};return db['VoiceTransferReport'][_0x6b14('0x1d')](_0xffff54)['then'](function(_0x3db2a4){_0xdc38f2[_0x6b14('0x1d')]=_0x3db2a4;if(_0x2cdb38['query'][_0x6b14('0x3f')]){_0x8af67d['include']=[{'all':!![]}];}return db[_0x6b14('0x40')][_0x6b14('0x41')](_0x8af67d);})[_0x6b14('0x24')](function(_0xc9254f){_0xdc38f2['rows']=_0xc9254f;return _0xdc38f2;})[_0x6b14('0x24')](respondWithFilteredResult(_0x281d6b,_0x8af67d))[_0x6b14('0x42')](handleError(_0x281d6b,null));};exports[_0x6b14('0x43')]=function(_0x35fae3,_0x4f9597){var _0x1d8345={'raw':!![],'where':{'id':_0x35fae3[_0x6b14('0x44')]['id']}},_0x4b9ae5={};_0x4b9ae5[_0x6b14('0x30')]=_['keys'](db['VoiceTransferReport']['rawAttributes']);_0x4b9ae5[_0x6b14('0x31')]=_[_0x6b14('0x32')](_0x35fae3[_0x6b14('0x31')]);_0x4b9ae5[_0x6b14('0x33')]=_[_0x6b14('0x34')](_0x4b9ae5['model'],_0x4b9ae5['query']);_0x1d8345[_0x6b14('0x35')]=_[_0x6b14('0x34')](_0x4b9ae5['model'],qs[_0x6b14('0x36')](_0x35fae3[_0x6b14('0x31')][_0x6b14('0x36')]));_0x1d8345[_0x6b14('0x35')]=_0x1d8345[_0x6b14('0x35')][_0x6b14('0x37')]?_0x1d8345['attributes']:_0x4b9ae5['model'];if(_0x35fae3[_0x6b14('0x31')][_0x6b14('0x3f')]){_0x1d8345['include']=[{'all':!![]}];}_0x1d8345=_[_0x6b14('0x3d')]({},_0x1d8345,_0x35fae3[_0x6b14('0x3e')]);return db[_0x6b14('0x40')][_0x6b14('0x45')](_0x1d8345)[_0x6b14('0x24')](handleEntityNotFound(_0x4f9597,null))[_0x6b14('0x24')](respondWithResult(_0x4f9597,null))[_0x6b14('0x42')](handleError(_0x4f9597,null));};exports[_0x6b14('0x46')]=function(_0x2bdb2e,_0x334c76){return db[_0x6b14('0x40')][_0x6b14('0x46')](_0x2bdb2e[_0x6b14('0x47')],{})[_0x6b14('0x24')](respondWithResult(_0x334c76,0xc9))['catch'](handleError(_0x334c76,null));};exports[_0x6b14('0x23')]=function(_0x5dc0b3,_0xd151bf){if(_0x5dc0b3['body']['id']){delete _0x5dc0b3[_0x6b14('0x47')]['id'];}return db['VoiceTransferReport'][_0x6b14('0x45')]({'where':{'id':_0x5dc0b3['params']['id']}})['then'](handleEntityNotFound(_0xd151bf,null))['then'](saveUpdates(_0x5dc0b3[_0x6b14('0x47')],null))[_0x6b14('0x24')](respondWithResult(_0xd151bf,null))[_0x6b14('0x42')](handleError(_0xd151bf,null));};exports[_0x6b14('0x25')]=function(_0x3573a8,_0x15a906){return db['VoiceTransferReport'][_0x6b14('0x45')]({'where':{'id':_0x3573a8[_0x6b14('0x44')]['id']}})[_0x6b14('0x24')](handleEntityNotFound(_0x15a906,null))[_0x6b14('0x24')](removeEntity(_0x15a906,null))['catch'](handleError(_0x15a906,null));};exports['describe']=function(_0x1b79a6,_0xf406){return db[_0x6b14('0x40')][_0x6b14('0x48')]()['then'](respondWithResult(_0xf406,null))[_0x6b14('0x42')](handleError(_0xf406,null));};
\ No newline at end of file
index 3c89dc0..dc6d63b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1806=['report_call_transfer','util','api','moment','bluebird','path','../../config/environment','exports','define'];(function(_0x378e7f,_0x3c3fed){var _0x3bf22c=function(_0x1a205c){while(--_0x1a205c){_0x378e7f['push'](_0x378e7f['shift']());}};_0x3bf22c(++_0x3c3fed);}(_0x1806,0xbe));var _0x6180=function(_0x397e5f,_0x454c8f){_0x397e5f=_0x397e5f-0x0;var _0x5302b8=_0x1806[_0x397e5f];return _0x5302b8;};'use strict';var _=require('lodash');var util=require(_0x6180('0x0'));var logger=require('../../config/logger')(_0x6180('0x1'));var moment=require(_0x6180('0x2'));var BPromise=require(_0x6180('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6180('0x4'));var rimraf=require('rimraf');var config=require(_0x6180('0x5'));var attributes=require('./voiceTransferReport.attributes');module[_0x6180('0x6')]=function(_0x13bcf0,_0x418324){return _0x13bcf0[_0x6180('0x7')]('VoiceTransferReport',attributes,{'tableName':_0x6180('0x8'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xae88=['bluebird','request-promise','path','rimraf','../../config/environment','./voiceTransferReport.attributes','exports','define','VoiceTransferReport','report_call_transfer','lodash','../../config/logger','api','moment'];(function(_0x465f50,_0x30d534){var _0x93459d=function(_0x2cb935){while(--_0x2cb935){_0x465f50['push'](_0x465f50['shift']());}};_0x93459d(++_0x30d534);}(_0xae88,0x184));var _0x8ae8=function(_0x31900d,_0x2ce88d){_0x31900d=_0x31900d-0x0;var _0x507a50=_0xae88[_0x31900d];return _0x507a50;};'use strict';var _=require(_0x8ae8('0x0'));var util=require('util');var logger=require(_0x8ae8('0x1'))(_0x8ae8('0x2'));var moment=require(_0x8ae8('0x3'));var BPromise=require(_0x8ae8('0x4'));var rp=require(_0x8ae8('0x5'));var fs=require('fs');var path=require(_0x8ae8('0x6'));var rimraf=require(_0x8ae8('0x7'));var config=require(_0x8ae8('0x8'));var attributes=require(_0x8ae8('0x9'));module[_0x8ae8('0xa')]=function(_0x477c7e,_0x63623d){return _0x477c7e[_0x8ae8('0xb')](_0x8ae8('0xc'),attributes,{'tableName':_0x8ae8('0xd'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 904e809..9bca0c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb1f=['error','code','message','info','CreateVoiceTransferReport','VoiceTransferReport','create','body','options','catch','lodash','moment','randomstring','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','then','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x5d80de,_0x2cf15d){var _0x1c7556=function(_0x5bd806){while(--_0x5bd806){_0x5d80de['push'](_0x5d80de['shift']());}};_0x1c7556(++_0x2cf15d);}(_0xcb1f,0x192));var _0xfcb1=function(_0x32a2d0,_0x34a08a){_0x32a2d0=_0x32a2d0-0x0;var _0x3c356d=_0xcb1f[_0x32a2d0];return _0x3c356d;};'use strict';var _=require(_0xfcb1('0x0'));var util=require('util');var moment=require(_0xfcb1('0x1'));var BPromise=require('bluebird');var rs=require(_0xfcb1('0x2'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0xfcb1('0x3'))['db'];var utils=require(_0xfcb1('0x4'));var logger=require(_0xfcb1('0x5'))(_0xfcb1('0x6'));var config=require(_0xfcb1('0x7'));var jayson=require(_0xfcb1('0x8'));var client=jayson[_0xfcb1('0x9')][_0xfcb1('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x30c401,_0x13a735,_0x3d4211){return new BPromise(function(_0x18f5eb,_0x27a216){return client[_0xfcb1('0xb')](_0x30c401,_0x3d4211)[_0xfcb1('0xc')](function(_0x247788){logger['info'](_0xfcb1('0xd'),_0x13a735,_0xfcb1('0xe'));logger[_0xfcb1('0xf')](_0xfcb1('0x10'),_0x13a735,_0xfcb1('0xe'),JSON[_0xfcb1('0x11')](_0x247788));if(_0x247788[_0xfcb1('0x12')]){if(_0x247788[_0xfcb1('0x12')][_0xfcb1('0x13')]===0x1f4){logger[_0xfcb1('0x12')](_0xfcb1('0xd'),_0x13a735,_0x247788[_0xfcb1('0x12')]['message']);return _0x27a216(_0x247788[_0xfcb1('0x12')][_0xfcb1('0x14')]);}logger['error'](_0xfcb1('0xd'),_0x13a735,_0x247788[_0xfcb1('0x12')]['message']);return _0x18f5eb(_0x247788[_0xfcb1('0x12')][_0xfcb1('0x14')]);}else{logger[_0xfcb1('0x15')](_0xfcb1('0xd'),_0x13a735,_0xfcb1('0xe'));_0x18f5eb(_0x247788['result'][_0xfcb1('0x14')]);}})['catch'](function(_0x12997a){logger[_0xfcb1('0x12')](_0xfcb1('0xd'),_0x13a735,_0x12997a);_0x27a216(_0x12997a);});});}exports[_0xfcb1('0x16')]=function(_0x46626c){var _0x2979b7=this;return new Promise(function(_0x40875c,_0xcda6d9){return db[_0xfcb1('0x17')][_0xfcb1('0x18')](_0x46626c[_0xfcb1('0x19')],{'raw':_0x46626c[_0xfcb1('0x1a')]?_0x46626c[_0xfcb1('0x1a')]['raw']===undefined?!![]:![]:!![]})[_0xfcb1('0xc')](function(_0x300468){logger[_0xfcb1('0x15')](_0xfcb1('0x16'),_0x46626c);logger['debug'](_0xfcb1('0x16'),_0x46626c,JSON[_0xfcb1('0x11')](_0x300468));_0x40875c(_0x300468);})[_0xfcb1('0x1b')](function(_0x45c207){logger[_0xfcb1('0x12')](_0xfcb1('0x16'),_0x45c207[_0xfcb1('0x14')],_0x46626c);_0xcda6d9(_0x2979b7['error'](0x1f4,_0x45c207[_0xfcb1('0x14')]));});});};
\ No newline at end of file
+var _0x09fb=['rpc','../../config/environment','jayson/promise','http','request','then','info','VoiceTransferReport,\x20%s,\x20%s','request\x20sent','debug','VoiceTransferReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','CreateVoiceTransferReport','VoiceTransferReport','create','options','raw','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger'];(function(_0x1a72f3,_0x217011){var _0x57ef47=function(_0x20123d){while(--_0x20123d){_0x1a72f3['push'](_0x1a72f3['shift']());}};_0x57ef47(++_0x217011);}(_0x09fb,0x18e));var _0xb09f=function(_0x49af70,_0x4abd37){_0x49af70=_0x49af70-0x0;var _0x41c12e=_0x09fb[_0x49af70];return _0x41c12e;};'use strict';var _=require('lodash');var util=require(_0xb09f('0x0'));var moment=require(_0xb09f('0x1'));var BPromise=require(_0xb09f('0x2'));var rs=require(_0xb09f('0x3'));var fs=require('fs');var Redis=require(_0xb09f('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xb09f('0x5'));var logger=require(_0xb09f('0x6'))(_0xb09f('0x7'));var config=require(_0xb09f('0x8'));var jayson=require(_0xb09f('0x9'));var client=jayson['client'][_0xb09f('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x4ea2bb,_0x2b4d4a,_0x3c7763){return new BPromise(function(_0x476c11,_0x78b009){return client[_0xb09f('0xb')](_0x4ea2bb,_0x3c7763)[_0xb09f('0xc')](function(_0x38495e){logger[_0xb09f('0xd')](_0xb09f('0xe'),_0x2b4d4a,_0xb09f('0xf'));logger[_0xb09f('0x10')](_0xb09f('0x11'),_0x2b4d4a,_0xb09f('0xf'),JSON[_0xb09f('0x12')](_0x38495e));if(_0x38495e['error']){if(_0x38495e['error'][_0xb09f('0x13')]===0x1f4){logger['error'](_0xb09f('0xe'),_0x2b4d4a,_0x38495e[_0xb09f('0x14')][_0xb09f('0x15')]);return _0x78b009(_0x38495e[_0xb09f('0x14')]['message']);}logger[_0xb09f('0x14')](_0xb09f('0xe'),_0x2b4d4a,_0x38495e[_0xb09f('0x14')][_0xb09f('0x15')]);return _0x476c11(_0x38495e[_0xb09f('0x14')][_0xb09f('0x15')]);}else{logger[_0xb09f('0xd')]('VoiceTransferReport,\x20%s,\x20%s',_0x2b4d4a,_0xb09f('0xf'));_0x476c11(_0x38495e['result'][_0xb09f('0x15')]);}})['catch'](function(_0x392c2a){logger[_0xb09f('0x14')](_0xb09f('0xe'),_0x2b4d4a,_0x392c2a);_0x78b009(_0x392c2a);});});}exports[_0xb09f('0x16')]=function(_0x2b74a3){var _0x25fd9c=this;return new Promise(function(_0x42d30b,_0xdb2823){return db[_0xb09f('0x17')][_0xb09f('0x18')](_0x2b74a3['body'],{'raw':_0x2b74a3['options']?_0x2b74a3[_0xb09f('0x19')][_0xb09f('0x1a')]===undefined?!![]:![]:!![]})[_0xb09f('0xc')](function(_0xde71d5){logger[_0xb09f('0xd')](_0xb09f('0x16'),_0x2b74a3);logger[_0xb09f('0x10')](_0xb09f('0x16'),_0x2b74a3,JSON['stringify'](_0xde71d5));_0x42d30b(_0xde71d5);})['catch'](function(_0x5ea50a){logger['error'](_0xb09f('0x16'),_0x5ea50a[_0xb09f('0x15')],_0x2b74a3);_0xdb2823(_0x25fd9c['error'](0x1f4,_0x5ea50a[_0xb09f('0x15')]));});});};
\ No newline at end of file
index 221f6b6..06ecd5e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcb91=['/unhold','unhold','/calls','transfer','exports','../../components/auth/service','./webbar.controller','post','/originate','isWebrtcLicence','originate','/hangup','isAuthenticated','hangup','hold'];(function(_0x4154a6,_0x2c0b8e){var _0x3b2786=function(_0x2f5936){while(--_0x2f5936){_0x4154a6['push'](_0x4154a6['shift']());}};_0x3b2786(++_0x2c0b8e);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x51b0dc,_0x5307b7){_0x51b0dc=_0x51b0dc-0x0;var _0x13fa89=_0xcb91[_0x51b0dc];return _0x13fa89;};'use strict';var express=require('express');var router=express['Router']();var auth=require(_0x1cb9('0x0'));var controller=require(_0x1cb9('0x1'));router[_0x1cb9('0x2')](_0x1cb9('0x3'),auth['isAuthenticated'](),auth[_0x1cb9('0x4')](),controller[_0x1cb9('0x5')]);router['post'](_0x1cb9('0x6'),auth[_0x1cb9('0x7')](),auth['isWebrtcLicence'](),controller[_0x1cb9('0x8')]);router[_0x1cb9('0x2')]('/answer',auth[_0x1cb9('0x7')](),auth[_0x1cb9('0x4')](),controller['answer']);router[_0x1cb9('0x2')]('/hold',auth['isAuthenticated'](),auth[_0x1cb9('0x4')](),controller[_0x1cb9('0x9')]);router[_0x1cb9('0x2')](_0x1cb9('0xa'),auth[_0x1cb9('0x7')](),auth['isWebrtcLicence'](),controller[_0x1cb9('0xb')]);router[_0x1cb9('0x2')](_0x1cb9('0xc'),auth[_0x1cb9('0x7')](),auth[_0x1cb9('0x4')](),controller['calls']);router['post']('/transfer',auth[_0x1cb9('0x7')](),auth[_0x1cb9('0x4')](),controller[_0x1cb9('0xd')]);module[_0x1cb9('0xe')]=router;
\ No newline at end of file
+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(_0x348860,_0x4531f6){_0x348860=_0x348860-0x0;var _0x2fc2ad=_0xf3cd[_0x348860];return _0x2fc2ad;};'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
index 1b8667f..9957052 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc03=['send','NotFound','request','then','code','message','result','catch','User','agent','VoiceChannels','filter','UserId','sessionId','length','sessionId\x20','\x20not\x20found!','originate','originate\x20fired:','body','userId','callNumber','callerId','callbackUrl','info','format','json','originate\x20executed!','hangup','hangup\x20fired:','user:%s','webbar:hangup','hangup\x20executed!','answer','answer\x20fired:','entityFound:','webbar:answer','answer\x20executed!','hold','hold\x20fired:','webbar:hold','unhold','unhold\x20fired:','webbar:unhold','unhold\x20executed!','calls','rows','conference','conference\x20fired:','webbar:conference','conference\x20executed!','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','../../mysqldb','../../config/environment','bluebird','client','http','../../config/logger','webbarapi','ioredis','redis','defaults','socket.io-emitter','validate','number','userId\x20is\x20required','string','transferNumber\x20is\x20required','stringify','handleError:','error','stack','name','status'];(function(_0x3bb2ac,_0x1c7310){var _0x5ec771=function(_0x2aaed1){while(--_0x2aaed1){_0x3bb2ac['push'](_0x3bb2ac['shift']());}};_0x5ec771(++_0x1c7310);}(_0xfc03,0x16f));var _0x3fc0=function(_0x3e44fa,_0x75ed2a){_0x3e44fa=_0x3e44fa-0x0;var _0x2a0aba=_0xfc03[_0x3e44fa];return _0x2a0aba;};'use strict';var path=require(_0x3fc0('0x0'));var fs=require('fs');var _=require('lodash');var db=require(_0x3fc0('0x1'))['db'];var config=require(_0x3fc0('0x2'));var util=require('util');var BPromise=require(_0x3fc0('0x3'));var jayson=require('jayson/promise');var amiClient=jayson[_0x3fc0('0x4')][_0x3fc0('0x5')]({'port':0x232a});var logger=require(_0x3fc0('0x6'))(_0x3fc0('0x7'));var Redis=require(_0x3fc0('0x8'));config[_0x3fc0('0x9')]=_[_0x3fc0('0xa')](config[_0x3fc0('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x3fc0('0xb'))(new Redis(config['redis']));var Schema=require(_0x3fc0('0xc'));var originateValidation=new Schema({'userId':{'type':_0x3fc0('0xd'),'required':[!![],_0x3fc0('0xe')]},'callNumber':{'type':_0x3fc0('0xf'),'required':[!![],'callNumber\x20is\x20required']},'callerId':{'type':_0x3fc0('0xf')},'callbackUrl':{'type':_0x3fc0('0xf')}});var hangupValidation=new Schema({'userId':{'type':_0x3fc0('0xd'),'required':[!![],_0x3fc0('0xe')]},'sessionId':{'type':_0x3fc0('0xf'),'required':![]}});var answerValidation=new Schema({'userId':{'type':'number','required':[!![],_0x3fc0('0xe')]},'sessionId':{'type':_0x3fc0('0xf'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x3fc0('0xd'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x3fc0('0xf'),'required':[!![],'sessionId\x20is\x20required']},'transferNumber':{'type':_0x3fc0('0xf'),'required':[!![],_0x3fc0('0x10')]}});var holdValidation=new Schema({'userId':{'type':'number','required':[!![],_0x3fc0('0xe')]},'sessionId':{'type':_0x3fc0('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x3fc0('0xd'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x3fc0('0xf'),'required':![]}});var callsValidation=new Schema({'userId':{'type':_0x3fc0('0xd'),'required':[!![],_0x3fc0('0xe')]}});var conferenceValidation=new Schema({'userId':{'type':_0x3fc0('0xd'),'required':[!![],'userId\x20is\x20required']}});function emit(_0x277dbf,_0x3d869e,_0x3ef95e){logger['info'](_0x277dbf,_0x3d869e,JSON[_0x3fc0('0x11')](_0x3ef95e));io['to'](_0x277dbf)['emit'](_0x3d869e,_0x3ef95e);}function handleError(_0x121931){return function(_0x3c5026){console['log'](_0x3fc0('0x12'),_0x3c5026,_0x3c5026 instanceof RangeError);logger[_0x3fc0('0x13')](_0x3c5026[_0x3fc0('0x14')]);if(_0x3c5026 instanceof RangeError){if(_0x3c5026[_0x3fc0('0x15')]){delete _0x3c5026[_0x3fc0('0x15')];}_0x121931[_0x3fc0('0x16')](0x194)[_0x3fc0('0x17')](_0x3c5026);}else{if(_0x3c5026[_0x3fc0('0x15')]){delete _0x3c5026[_0x3fc0('0x15')];}_0x121931['status'](0x1f4)[_0x3fc0('0x17')](_0x3c5026);}};}function checkError(){return function(_0x9ab2c5){if(!_0x9ab2c5){throw new RangeError(_0x3fc0('0x18'));}return _0x9ab2c5;};}function respondWithRpcPromise(_0x3d6c0a,_0x3a09cd){return new BPromise(function(_0x448293,_0x47c770){var _0x477674=amiClient;return _0x477674[_0x3fc0('0x19')](_0x3d6c0a,_0x3a09cd)[_0x3fc0('0x1a')](function(_0x28fc65){if(_0x28fc65[_0x3fc0('0x13')]){if(_0x28fc65[_0x3fc0('0x13')][_0x3fc0('0x1b')]===0x1f4){return _0x47c770(_0x28fc65[_0x3fc0('0x13')][_0x3fc0('0x1c')]);}return _0x448293(_0x28fc65[_0x3fc0('0x13')][_0x3fc0('0x1c')]);}else{_0x448293(_0x28fc65[_0x3fc0('0x1d')]);}})[_0x3fc0('0x1e')](function(_0xba1a23){_0x47c770(_0xba1a23);});});}function getAgent(_0x55f507){return db[_0x3fc0('0x1f')]['findOne']({'where':{'id':_0x55f507,'role':_0x3fc0('0x20')}})[_0x3fc0('0x1a')](checkError());}function getAgentCheckSession(_0x1d9932,_0x35c34c){return new BPromise(function(_0x5a9179,_0x134317){var _0x197dfa=respondWithRpcPromise(_0x3fc0('0x21'));var _0x2645b4=getAgent(_0x1d9932);Promise['all']([_0x197dfa,_0x2645b4])[_0x3fc0('0x1a')](function(_0x1a2261){var _0x1960a4=_0x1a2261[0x0];var _0xac736c=_0x1a2261[0x1];var _0x29aa32=_[_0x3fc0('0x22')](_0x1960a4['rows'],function(_0xd9ecae){return _0xd9ecae[_0x3fc0('0x23')]==_0xac736c['id']&&_0xd9ecae[_0x3fc0('0x24')]==_0x35c34c;});if(_0x29aa32[_0x3fc0('0x25')]==0x1){_0x5a9179(_0xac736c);}else{_0x134317(new RangeError(_0x3fc0('0x26')+_0x35c34c+_0x3fc0('0x27')));}});});}exports[_0x3fc0('0x28')]=function(_0x164a96,_0x4d6551){logger['info'](_0x3fc0('0x29'),_0x164a96['body']);var _0x58d698=originateValidation[_0x3fc0('0xc')](_0x164a96[_0x3fc0('0x2a')]);if(_0x58d698[_0x3fc0('0x25')]>0x0){return _0x4d6551[_0x3fc0('0x16')](0x190)['json'](_0x58d698);}var _0x4dc8cd=_0x164a96[_0x3fc0('0x2a')][_0x3fc0('0x2b')];var _0x151492=_0x164a96[_0x3fc0('0x2a')][_0x3fc0('0x2c')];var _0x5f0ca1=_0x164a96[_0x3fc0('0x2a')][_0x3fc0('0x2d')];var _0x399c9c=_0x164a96['body'][_0x3fc0('0x2e')];return getAgent(_0x4dc8cd)[_0x3fc0('0x1a')](function(_0x325a2f){logger[_0x3fc0('0x2f')]('entityFound:',_0x325a2f[_0x3fc0('0x15')]);emit(util[_0x3fc0('0x30')]('user:%s',_0x325a2f[_0x3fc0('0x15')]),'webbar:originate',{'callNumber':_0x151492,'callerId':_0x5f0ca1,'callbackUrl':_0x399c9c});return _0x4d6551[_0x3fc0('0x16')](0xc8)[_0x3fc0('0x31')]({'error':![],'message':_0x3fc0('0x32')});})[_0x3fc0('0x1e')](handleError(_0x4d6551));};exports[_0x3fc0('0x33')]=function(_0x104332,_0x469d4b){logger[_0x3fc0('0x2f')](_0x3fc0('0x34'),_0x104332[_0x3fc0('0x2a')]);var _0x41b4b3=hangupValidation['validate'](_0x104332[_0x3fc0('0x2a')]);if(_0x41b4b3[_0x3fc0('0x25')]>0x0){return _0x469d4b[_0x3fc0('0x16')](0x190)[_0x3fc0('0x31')](_0x41b4b3);}var _0x21de4c=_0x104332[_0x3fc0('0x2a')]['userId'];var _0x5ae22c=_0x104332[_0x3fc0('0x2a')][_0x3fc0('0x24')];return getAgent(_0x21de4c)[_0x3fc0('0x1a')](function(_0x3e285f){logger[_0x3fc0('0x2f')]('entityFound:',_0x3e285f['name']);emit(util['format'](_0x3fc0('0x35'),_0x3e285f[_0x3fc0('0x15')]),_0x3fc0('0x36'),{'sessionId':_0x5ae22c});return _0x469d4b['status'](0xc8)['json']({'error':![],'message':_0x3fc0('0x37')});})[_0x3fc0('0x1e')](handleError(_0x469d4b));};exports[_0x3fc0('0x38')]=function(_0x10b845,_0x494c66){logger['info'](_0x3fc0('0x39'),_0x10b845[_0x3fc0('0x2a')]);var _0x547670=answerValidation[_0x3fc0('0xc')](_0x10b845['body']);if(_0x547670[_0x3fc0('0x25')]>0x0){return _0x494c66[_0x3fc0('0x16')](0x190)[_0x3fc0('0x31')](_0x547670);}var _0x90120f=_0x10b845[_0x3fc0('0x2a')][_0x3fc0('0x2b')];var _0x80dfee=_0x10b845[_0x3fc0('0x2a')]['sessionId'];return getAgent(_0x90120f)[_0x3fc0('0x1a')](function(_0x5bd6a8){logger[_0x3fc0('0x2f')](_0x3fc0('0x3a'),_0x5bd6a8[_0x3fc0('0x15')]);emit(util[_0x3fc0('0x30')](_0x3fc0('0x35'),_0x5bd6a8['name']),_0x3fc0('0x3b'),{'sessionId':_0x80dfee});return _0x494c66[_0x3fc0('0x16')](0xc8)[_0x3fc0('0x31')]({'error':![],'message':_0x3fc0('0x3c')});})['catch'](handleError(_0x494c66));};exports[_0x3fc0('0x3d')]=function(_0x5a1672,_0x21c065){logger[_0x3fc0('0x2f')](_0x3fc0('0x3e'),_0x5a1672[_0x3fc0('0x2a')]);var _0x277480=holdValidation['validate'](_0x5a1672[_0x3fc0('0x2a')]);if(_0x277480[_0x3fc0('0x25')]>0x0){return _0x21c065[_0x3fc0('0x16')](0x190)['json'](_0x277480);}var _0x3df404=_0x5a1672[_0x3fc0('0x2a')]['userId'];var _0x1f5e6a=_0x5a1672[_0x3fc0('0x2a')][_0x3fc0('0x24')];return getAgent(_0x3df404)['then'](function(_0x5e5c73){logger[_0x3fc0('0x2f')](_0x3fc0('0x3a'),_0x5e5c73[_0x3fc0('0x15')]);emit(util['format'](_0x3fc0('0x35'),_0x5e5c73['name']),_0x3fc0('0x3f'),{'sessionId':_0x1f5e6a});return _0x21c065['status'](0xc8)['json']({'error':![],'message':'hold\x20executed!'});})[_0x3fc0('0x1e')](handleError(_0x21c065));};exports[_0x3fc0('0x40')]=function(_0x141b4c,_0x3730f5){logger[_0x3fc0('0x2f')](_0x3fc0('0x41'),_0x141b4c['body']);var _0x2cf279=unholdValidation[_0x3fc0('0xc')](_0x141b4c['body']);if(_0x2cf279['length']>0x0){return _0x3730f5[_0x3fc0('0x16')](0x190)[_0x3fc0('0x31')](_0x2cf279);}var _0x1f070b=_0x141b4c[_0x3fc0('0x2a')][_0x3fc0('0x2b')];var _0x330b8f=_0x141b4c[_0x3fc0('0x2a')][_0x3fc0('0x24')];return getAgent(_0x1f070b)[_0x3fc0('0x1a')](function(_0x1cc9f2){logger[_0x3fc0('0x2f')](_0x3fc0('0x3a'),_0x1cc9f2['name']);emit(util[_0x3fc0('0x30')](_0x3fc0('0x35'),_0x1cc9f2[_0x3fc0('0x15')]),_0x3fc0('0x42'),{'sessionId':_0x330b8f});return _0x3730f5[_0x3fc0('0x16')](0xc8)['json']({'error':![],'message':_0x3fc0('0x43')});})['catch'](handleError(_0x3730f5));};exports[_0x3fc0('0x44')]=function(_0xa4864f,_0x397434){logger[_0x3fc0('0x2f')]('calls\x20fired:',_0x397434[_0x3fc0('0x2a')]);var _0xd903e3=callsValidation[_0x3fc0('0xc')](_0xa4864f[_0x3fc0('0x2a')]);if(_0xd903e3[_0x3fc0('0x25')]>0x0){return _0x397434[_0x3fc0('0x16')](0x190)['json'](_0xd903e3);}var _0x2c5ca1=_0xa4864f[_0x3fc0('0x2a')][_0x3fc0('0x2b')];var _0x21c46f=respondWithRpcPromise(_0x3fc0('0x21'));var _0x737d45=getAgent(_0x2c5ca1);return Promise['all']([_0x21c46f,_0x737d45])[_0x3fc0('0x1a')](function(_0x258a27){var _0x3e04a1=_0x258a27[0x0];var _0x5a3732=_0x258a27[0x1];var _0x2cc735=_[_0x3fc0('0x22')](_0x3e04a1[_0x3fc0('0x45')],function(_0x2b709c){return _0x2b709c[_0x3fc0('0x23')]==_0x5a3732['id'];});return _0x397434[_0x3fc0('0x16')](0xc8)[_0x3fc0('0x31')]({'count':_0x2cc735[_0x3fc0('0x25')],'rows':_0x2cc735});})[_0x3fc0('0x1e')](handleError(_0x397434));};exports[_0x3fc0('0x46')]=function(_0x4a5b96,_0x194a3b){logger[_0x3fc0('0x2f')](_0x3fc0('0x47'),_0x4a5b96[_0x3fc0('0x2a')]);var _0x4cb346=conferenceValidation[_0x3fc0('0xc')](_0x4a5b96[_0x3fc0('0x2a')]);if(_0x4cb346[_0x3fc0('0x25')]>0x0){return _0x194a3b[_0x3fc0('0x16')](0x190)[_0x3fc0('0x31')](_0x4cb346);}var _0x27a828=_0x4a5b96[_0x3fc0('0x2a')][_0x3fc0('0x2b')];return getAgent(_0x27a828)[_0x3fc0('0x1a')](function(_0x2b9226){logger['info'](_0x3fc0('0x3a'),_0x2b9226[_0x3fc0('0x15')]);emit(util[_0x3fc0('0x30')](_0x3fc0('0x35'),_0x2b9226[_0x3fc0('0x15')]),_0x3fc0('0x48'));return _0x194a3b['status'](0xc8)[_0x3fc0('0x31')]({'error':![],'message':_0x3fc0('0x49')});})[_0x3fc0('0x1e')](handleError(_0x194a3b));};exports['transfer']=function(_0x40f6d8,_0x431087){logger[_0x3fc0('0x2f')](_0x3fc0('0x4a'),_0x40f6d8[_0x3fc0('0x2a')]);var _0x12758a=transferValidation[_0x3fc0('0xc')](_0x40f6d8[_0x3fc0('0x2a')]);if(_0x12758a[_0x3fc0('0x25')]>0x0){return _0x431087['status'](0x190)[_0x3fc0('0x31')](_0x12758a);}var _0x16cd67=_0x40f6d8[_0x3fc0('0x2a')][_0x3fc0('0x2b')];var _0x3b9b6f=_0x40f6d8['body'][_0x3fc0('0x24')];var _0x42c1ee=_0x40f6d8[_0x3fc0('0x2a')][_0x3fc0('0x4b')];return getAgent(_0x16cd67)[_0x3fc0('0x1a')](function(_0x20e372){logger[_0x3fc0('0x2f')](_0x3fc0('0x3a'),_0x20e372[_0x3fc0('0x15')]);emit(util[_0x3fc0('0x30')](_0x3fc0('0x35'),_0x20e372['name']),_0x3fc0('0x4c'),{'sessionId':_0x3b9b6f,'transferNumber':_0x42c1ee});return _0x431087['status'](0xc8)[_0x3fc0('0x31')]({'error':![],'message':_0x3fc0('0x4d')});})[_0x3fc0('0x1e')](handleError(_0x431087));};
\ No newline at end of file
+var _0x7980=['webbar:hold','hold\x20executed!','unhold','unhold\x20fired:','calls','calls\x20fired:','UserId','conference','conference\x20fired:','webbar:conference','transfer','transfer\x20fired:','transferNumber','webbar:transfer','transfer\x20executed!','path','lodash','../../mysqldb','../../config/environment','util','jayson/promise','client','http','../../config/logger','webbarapi','redis','localhost','socket.io-emitter','number','userId\x20is\x20required','string','callNumber\x20is\x20required','sessionId\x20is\x20required','transferNumber\x20is\x20required','emit','log','handleError:','error','name','send','status','NotFound','request','then','code','message','result','User','agent','VoiceChannels','all','filter','sessionId','length','sessionId\x20','\x20not\x20found!','originate','info','originate\x20fired:','body','validate','callNumber','callerId','user:%s','webbar:originate','json','originate\x20executed!','catch','hangup','hangup\x20fired:','userId','entityFound:','webbar:hangup','hangup\x20executed!','answer\x20fired:','format','answer\x20executed!','hold\x20fired:'];(function(_0x1da04e,_0x31024b){var _0xdd8c41=function(_0x2036f9){while(--_0x2036f9){_0x1da04e['push'](_0x1da04e['shift']());}};_0xdd8c41(++_0x31024b);}(_0x7980,0xab));var _0x0798=function(_0x646603,_0x1a1119){_0x646603=_0x646603-0x0;var _0x232a83=_0x7980[_0x646603];return _0x232a83;};'use strict';var path=require(_0x0798('0x0'));var fs=require('fs');var _=require(_0x0798('0x1'));var db=require(_0x0798('0x2'))['db'];var config=require(_0x0798('0x3'));var util=require(_0x0798('0x4'));var BPromise=require('bluebird');var jayson=require(_0x0798('0x5'));var amiClient=jayson[_0x0798('0x6')][_0x0798('0x7')]({'port':0x232a});var logger=require(_0x0798('0x8'))(_0x0798('0x9'));var Redis=require('ioredis');config[_0x0798('0xa')]=_['defaults'](config[_0x0798('0xa')],{'host':_0x0798('0xb'),'port':0x18eb});var io=require(_0x0798('0xc'))(new Redis(config['redis']));var Schema=require('validate');var originateValidation=new Schema({'userId':{'type':_0x0798('0xd'),'required':[!![],_0x0798('0xe')]},'callNumber':{'type':_0x0798('0xf'),'required':[!![],_0x0798('0x10')]},'callerId':{'type':_0x0798('0xf')},'callbackUrl':{'type':_0x0798('0xf')}});var hangupValidation=new Schema({'userId':{'type':_0x0798('0xd'),'required':[!![],_0x0798('0xe')]},'sessionId':{'type':_0x0798('0xf'),'required':![]}});var answerValidation=new Schema({'userId':{'type':_0x0798('0xd'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':_0x0798('0xf'),'required':![]}});var transferValidation=new Schema({'userId':{'type':_0x0798('0xd'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':[!![],_0x0798('0x11')]},'transferNumber':{'type':_0x0798('0xf'),'required':[!![],_0x0798('0x12')]}});var holdValidation=new Schema({'userId':{'type':_0x0798('0xd'),'required':[!![],_0x0798('0xe')]},'sessionId':{'type':_0x0798('0xf'),'required':![]}});var unholdValidation=new Schema({'userId':{'type':_0x0798('0xd'),'required':[!![],'userId\x20is\x20required']},'sessionId':{'type':'string','required':![]}});var callsValidation=new Schema({'userId':{'type':_0x0798('0xd'),'required':[!![],_0x0798('0xe')]}});var conferenceValidation=new Schema({'userId':{'type':'number','required':[!![],'userId\x20is\x20required']}});function emit(_0x21c30b,_0x45cae6,_0x258081){logger['info'](_0x21c30b,_0x45cae6,JSON['stringify'](_0x258081));io['to'](_0x21c30b)[_0x0798('0x13')](_0x45cae6,_0x258081);}function handleError(_0x502635){return function(_0x41e217){console[_0x0798('0x14')](_0x0798('0x15'),_0x41e217,_0x41e217 instanceof RangeError);logger[_0x0798('0x16')](_0x41e217['stack']);if(_0x41e217 instanceof RangeError){if(_0x41e217[_0x0798('0x17')]){delete _0x41e217[_0x0798('0x17')];}_0x502635['status'](0x194)[_0x0798('0x18')](_0x41e217);}else{if(_0x41e217[_0x0798('0x17')]){delete _0x41e217[_0x0798('0x17')];}_0x502635[_0x0798('0x19')](0x1f4)[_0x0798('0x18')](_0x41e217);}};}function checkError(){return function(_0x273ba8){if(!_0x273ba8){throw new RangeError(_0x0798('0x1a'));}return _0x273ba8;};}function respondWithRpcPromise(_0x212ad5,_0x23b37d){return new BPromise(function(_0x4a86d5,_0x2aaabf){var _0x35c141=amiClient;return _0x35c141[_0x0798('0x1b')](_0x212ad5,_0x23b37d)[_0x0798('0x1c')](function(_0x20654b){if(_0x20654b[_0x0798('0x16')]){if(_0x20654b['error'][_0x0798('0x1d')]===0x1f4){return _0x2aaabf(_0x20654b[_0x0798('0x16')][_0x0798('0x1e')]);}return _0x4a86d5(_0x20654b[_0x0798('0x16')][_0x0798('0x1e')]);}else{_0x4a86d5(_0x20654b[_0x0798('0x1f')]);}})['catch'](function(_0x43d99f){_0x2aaabf(_0x43d99f);});});}function getAgent(_0x14f828){return db[_0x0798('0x20')]['findOne']({'where':{'id':_0x14f828,'role':_0x0798('0x21')}})['then'](checkError());}function getAgentCheckSession(_0x53a3d7,_0x406030){return new BPromise(function(_0x2dfbff,_0x134d24){var _0xaa949b=respondWithRpcPromise(_0x0798('0x22'));var _0x161244=getAgent(_0x53a3d7);Promise[_0x0798('0x23')]([_0xaa949b,_0x161244])[_0x0798('0x1c')](function(_0x5bbe3d){var _0x167960=_0x5bbe3d[0x0];var _0x4f5d1d=_0x5bbe3d[0x1];var _0x5f1780=_[_0x0798('0x24')](_0x167960['rows'],function(_0x1dabd5){return _0x1dabd5['UserId']==_0x4f5d1d['id']&&_0x1dabd5[_0x0798('0x25')]==_0x406030;});if(_0x5f1780[_0x0798('0x26')]==0x1){_0x2dfbff(_0x4f5d1d);}else{_0x134d24(new RangeError(_0x0798('0x27')+_0x406030+_0x0798('0x28')));}});});}exports[_0x0798('0x29')]=function(_0x1ebd07,_0xa1376e){logger[_0x0798('0x2a')](_0x0798('0x2b'),_0x1ebd07[_0x0798('0x2c')]);var _0x54a955=originateValidation[_0x0798('0x2d')](_0x1ebd07['body']);if(_0x54a955[_0x0798('0x26')]>0x0){return _0xa1376e['status'](0x190)['json'](_0x54a955);}var _0x104d23=_0x1ebd07[_0x0798('0x2c')]['userId'];var _0x49d5b8=_0x1ebd07[_0x0798('0x2c')][_0x0798('0x2e')];var _0x322adf=_0x1ebd07[_0x0798('0x2c')][_0x0798('0x2f')];var _0x2ad922=_0x1ebd07['body']['callbackUrl'];return getAgent(_0x104d23)[_0x0798('0x1c')](function(_0x23a70b){logger[_0x0798('0x2a')]('entityFound:',_0x23a70b['name']);emit(util['format'](_0x0798('0x30'),_0x23a70b[_0x0798('0x17')]),_0x0798('0x31'),{'callNumber':_0x49d5b8,'callerId':_0x322adf,'callbackUrl':_0x2ad922});return _0xa1376e[_0x0798('0x19')](0xc8)[_0x0798('0x32')]({'error':![],'message':_0x0798('0x33')});})[_0x0798('0x34')](handleError(_0xa1376e));};exports[_0x0798('0x35')]=function(_0x502556,_0x16dae6){logger['info'](_0x0798('0x36'),_0x502556[_0x0798('0x2c')]);var _0x2caa82=hangupValidation['validate'](_0x502556[_0x0798('0x2c')]);if(_0x2caa82['length']>0x0){return _0x16dae6[_0x0798('0x19')](0x190)[_0x0798('0x32')](_0x2caa82);}var _0x223751=_0x502556['body'][_0x0798('0x37')];var _0xb5937b=_0x502556['body'][_0x0798('0x25')];return getAgent(_0x223751)['then'](function(_0x4e9d94){logger[_0x0798('0x2a')](_0x0798('0x38'),_0x4e9d94['name']);emit(util['format'](_0x0798('0x30'),_0x4e9d94[_0x0798('0x17')]),_0x0798('0x39'),{'sessionId':_0xb5937b});return _0x16dae6[_0x0798('0x19')](0xc8)[_0x0798('0x32')]({'error':![],'message':_0x0798('0x3a')});})[_0x0798('0x34')](handleError(_0x16dae6));};exports['answer']=function(_0x3aa79c,_0x11c5bf){logger[_0x0798('0x2a')](_0x0798('0x3b'),_0x3aa79c[_0x0798('0x2c')]);var _0x26e9cb=answerValidation['validate'](_0x3aa79c[_0x0798('0x2c')]);if(_0x26e9cb[_0x0798('0x26')]>0x0){return _0x11c5bf[_0x0798('0x19')](0x190)[_0x0798('0x32')](_0x26e9cb);}var _0x387450=_0x3aa79c[_0x0798('0x2c')][_0x0798('0x37')];var _0x10a50a=_0x3aa79c[_0x0798('0x2c')][_0x0798('0x25')];return getAgent(_0x387450)[_0x0798('0x1c')](function(_0x31a3cb){logger['info'](_0x0798('0x38'),_0x31a3cb[_0x0798('0x17')]);emit(util[_0x0798('0x3c')](_0x0798('0x30'),_0x31a3cb['name']),'webbar:answer',{'sessionId':_0x10a50a});return _0x11c5bf[_0x0798('0x19')](0xc8)[_0x0798('0x32')]({'error':![],'message':_0x0798('0x3d')});})[_0x0798('0x34')](handleError(_0x11c5bf));};exports['hold']=function(_0x21c28c,_0x4858e6){logger['info'](_0x0798('0x3e'),_0x21c28c[_0x0798('0x2c')]);var _0x42c5b8=holdValidation[_0x0798('0x2d')](_0x21c28c[_0x0798('0x2c')]);if(_0x42c5b8[_0x0798('0x26')]>0x0){return _0x4858e6[_0x0798('0x19')](0x190)[_0x0798('0x32')](_0x42c5b8);}var _0x182e3b=_0x21c28c['body'][_0x0798('0x37')];var _0x56d438=_0x21c28c[_0x0798('0x2c')][_0x0798('0x25')];return getAgent(_0x182e3b)[_0x0798('0x1c')](function(_0x54634d){logger[_0x0798('0x2a')](_0x0798('0x38'),_0x54634d[_0x0798('0x17')]);emit(util[_0x0798('0x3c')]('user:%s',_0x54634d[_0x0798('0x17')]),_0x0798('0x3f'),{'sessionId':_0x56d438});return _0x4858e6[_0x0798('0x19')](0xc8)[_0x0798('0x32')]({'error':![],'message':_0x0798('0x40')});})['catch'](handleError(_0x4858e6));};exports[_0x0798('0x41')]=function(_0x3e1c15,_0x2679b1){logger[_0x0798('0x2a')](_0x0798('0x42'),_0x3e1c15[_0x0798('0x2c')]);var _0x181757=unholdValidation[_0x0798('0x2d')](_0x3e1c15[_0x0798('0x2c')]);if(_0x181757['length']>0x0){return _0x2679b1['status'](0x190)[_0x0798('0x32')](_0x181757);}var _0x499073=_0x3e1c15[_0x0798('0x2c')][_0x0798('0x37')];var _0x40b3d6=_0x3e1c15[_0x0798('0x2c')][_0x0798('0x25')];return getAgent(_0x499073)['then'](function(_0x3cb0b4){logger['info'](_0x0798('0x38'),_0x3cb0b4[_0x0798('0x17')]);emit(util[_0x0798('0x3c')]('user:%s',_0x3cb0b4['name']),'webbar:unhold',{'sessionId':_0x40b3d6});return _0x2679b1[_0x0798('0x19')](0xc8)['json']({'error':![],'message':'unhold\x20executed!'});})[_0x0798('0x34')](handleError(_0x2679b1));};exports[_0x0798('0x43')]=function(_0x455d19,_0x499580){logger[_0x0798('0x2a')](_0x0798('0x44'),_0x499580[_0x0798('0x2c')]);var _0x743d26=callsValidation['validate'](_0x455d19['body']);if(_0x743d26[_0x0798('0x26')]>0x0){return _0x499580[_0x0798('0x19')](0x190)[_0x0798('0x32')](_0x743d26);}var _0x59ad6c=_0x455d19['body'][_0x0798('0x37')];var _0x82599=respondWithRpcPromise(_0x0798('0x22'));var _0x190467=getAgent(_0x59ad6c);return Promise[_0x0798('0x23')]([_0x82599,_0x190467])[_0x0798('0x1c')](function(_0x18c0fa){var _0x1a55c0=_0x18c0fa[0x0];var _0x4f35c7=_0x18c0fa[0x1];var _0x349f86=_[_0x0798('0x24')](_0x1a55c0['rows'],function(_0x3ab2cc){return _0x3ab2cc[_0x0798('0x45')]==_0x4f35c7['id'];});return _0x499580['status'](0xc8)[_0x0798('0x32')]({'count':_0x349f86[_0x0798('0x26')],'rows':_0x349f86});})[_0x0798('0x34')](handleError(_0x499580));};exports[_0x0798('0x46')]=function(_0x458a4e,_0x541669){logger[_0x0798('0x2a')](_0x0798('0x47'),_0x458a4e[_0x0798('0x2c')]);var _0x47cfc0=conferenceValidation[_0x0798('0x2d')](_0x458a4e['body']);if(_0x47cfc0[_0x0798('0x26')]>0x0){return _0x541669[_0x0798('0x19')](0x190)[_0x0798('0x32')](_0x47cfc0);}var _0x26b393=_0x458a4e[_0x0798('0x2c')][_0x0798('0x37')];return getAgent(_0x26b393)['then'](function(_0x3cc8bd){logger[_0x0798('0x2a')](_0x0798('0x38'),_0x3cc8bd[_0x0798('0x17')]);emit(util['format'](_0x0798('0x30'),_0x3cc8bd[_0x0798('0x17')]),_0x0798('0x48'));return _0x541669[_0x0798('0x19')](0xc8)[_0x0798('0x32')]({'error':![],'message':'conference\x20executed!'});})[_0x0798('0x34')](handleError(_0x541669));};exports[_0x0798('0x49')]=function(_0x5668b7,_0x48d1d1){logger[_0x0798('0x2a')](_0x0798('0x4a'),_0x5668b7['body']);var _0x2f336a=transferValidation[_0x0798('0x2d')](_0x5668b7[_0x0798('0x2c')]);if(_0x2f336a[_0x0798('0x26')]>0x0){return _0x48d1d1[_0x0798('0x19')](0x190)[_0x0798('0x32')](_0x2f336a);}var _0x21c156=_0x5668b7[_0x0798('0x2c')]['userId'];var _0x316762=_0x5668b7[_0x0798('0x2c')][_0x0798('0x25')];var _0xf5100e=_0x5668b7['body'][_0x0798('0x4b')];return getAgent(_0x21c156)[_0x0798('0x1c')](function(_0x11946d){logger[_0x0798('0x2a')](_0x0798('0x38'),_0x11946d[_0x0798('0x17')]);emit(util[_0x0798('0x3c')](_0x0798('0x30'),_0x11946d['name']),_0x0798('0x4c'),{'sessionId':_0x316762,'transferNumber':_0xf5100e});return _0x48d1d1['status'](0xc8)[_0x0798('0x32')]({'error':![],'message':_0x0798('0x4d')});})[_0x0798('0x34')](handleError(_0x48d1d1));};
\ No newline at end of file
index 890f34c..ab4d8ae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a07=['express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappAccount.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/dispositions','/:id/canned_answers','getAnswers','getAgents','/:id/applications','getApplications','post','addDisposition','addAnswer','/:id/users','addAgents','addApplications','/:id/notify','notify','/:id/send','send','update','destroy','delete','removeDispositions','removeAnswers','removeAgents','exports','multer','util','path','connect-timeout'];(function(_0x39dec8,_0x4466d0){var _0x3a638f=function(_0x53b12c){while(--_0x53b12c){_0x39dec8['push'](_0x39dec8['shift']());}};_0x3a638f(++_0x4466d0);}(_0x2a07,0x74));var _0x72a0=function(_0x33a61a,_0x106e32){_0x33a61a=_0x33a61a-0x0;var _0x7c2dfd=_0x2a07[_0x33a61a];return _0x7c2dfd;};'use strict';var multer=require(_0x72a0('0x0'));var util=require(_0x72a0('0x1'));var path=require(_0x72a0('0x2'));var timeout=require(_0x72a0('0x3'));var express=require(_0x72a0('0x4'));var router=express['Router']();var fs_extra=require(_0x72a0('0x5'));var auth=require(_0x72a0('0x6'));var interaction=require(_0x72a0('0x7'));var config=require(_0x72a0('0x8'));var controller=require(_0x72a0('0x9'));router[_0x72a0('0xa')]('/',auth[_0x72a0('0xb')](),controller[_0x72a0('0xc')]);router[_0x72a0('0xa')](_0x72a0('0xd'),auth[_0x72a0('0xb')](),controller[_0x72a0('0xe')]);router[_0x72a0('0xa')](_0x72a0('0xf'),auth[_0x72a0('0xb')](),controller[_0x72a0('0x10')]);router['get'](_0x72a0('0x11'),auth[_0x72a0('0xb')](),controller['getDispositions']);router[_0x72a0('0xa')](_0x72a0('0x12'),auth[_0x72a0('0xb')](),controller[_0x72a0('0x13')]);router[_0x72a0('0xa')]('/:id/users',auth[_0x72a0('0xb')](),controller[_0x72a0('0x14')]);router[_0x72a0('0xa')](_0x72a0('0x15'),auth[_0x72a0('0xb')](),controller[_0x72a0('0x16')]);router[_0x72a0('0x17')]('/',auth['isAuthenticated'](),controller['create']);router[_0x72a0('0x17')](_0x72a0('0x11'),auth[_0x72a0('0xb')](),controller[_0x72a0('0x18')]);router[_0x72a0('0x17')](_0x72a0('0x12'),auth['isAuthenticated'](),controller[_0x72a0('0x19')]);router[_0x72a0('0x17')](_0x72a0('0x1a'),auth[_0x72a0('0xb')](),controller[_0x72a0('0x1b')]);router['post'](_0x72a0('0x15'),auth[_0x72a0('0xb')](),controller[_0x72a0('0x1c')]);router['post'](_0x72a0('0x1d'),controller[_0x72a0('0x1e')]);router[_0x72a0('0x17')](_0x72a0('0x1f'),auth['isAuthenticated'](),controller[_0x72a0('0x20')]);router['put'](_0x72a0('0xf'),auth[_0x72a0('0xb')](),controller[_0x72a0('0x21')]);router['delete'](_0x72a0('0xf'),auth[_0x72a0('0xb')](),controller[_0x72a0('0x22')]);router[_0x72a0('0x23')]('/:id/dispositions',auth[_0x72a0('0xb')](),controller[_0x72a0('0x24')]);router[_0x72a0('0x23')](_0x72a0('0x12'),auth[_0x72a0('0xb')](),controller[_0x72a0('0x25')]);router['delete']('/:id/users',auth[_0x72a0('0xb')](),controller[_0x72a0('0x26')]);module[_0x72a0('0x27')]=router;
\ No newline at end of file
+var _0x8e3f=['addDisposition','addAgents','addApplications','/:id/notify','/:id/send','send','put','update','destroy','delete','removeAnswers','removeAgents','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','describe','/:id','show','/:id/dispositions','getDispositions','/:id/canned_answers','getAnswers','/:id/users','getAgents','/:id/applications','post','create'];(function(_0x4b325f,_0x5a6348){var _0x1c0b0b=function(_0x144521){while(--_0x144521){_0x4b325f['push'](_0x4b325f['shift']());}};_0x1c0b0b(++_0x5a6348);}(_0x8e3f,0xc1));var _0xf8e3=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x8e3f[_0x2c91e9];return _0x13f0ff;};'use strict';var multer=require(_0xf8e3('0x0'));var util=require(_0xf8e3('0x1'));var path=require(_0xf8e3('0x2'));var timeout=require('connect-timeout');var express=require(_0xf8e3('0x3'));var router=express[_0xf8e3('0x4')]();var fs_extra=require(_0xf8e3('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xf8e3('0x6'));var config=require(_0xf8e3('0x7'));var controller=require('./whatsappAccount.controller');router[_0xf8e3('0x8')]('/',auth[_0xf8e3('0x9')](),controller[_0xf8e3('0xa')]);router[_0xf8e3('0x8')]('/describe',auth[_0xf8e3('0x9')](),controller[_0xf8e3('0xb')]);router[_0xf8e3('0x8')](_0xf8e3('0xc'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0xd')]);router[_0xf8e3('0x8')](_0xf8e3('0xe'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0xf')]);router[_0xf8e3('0x8')](_0xf8e3('0x10'),auth['isAuthenticated'](),controller[_0xf8e3('0x11')]);router[_0xf8e3('0x8')](_0xf8e3('0x12'),auth['isAuthenticated'](),controller[_0xf8e3('0x13')]);router[_0xf8e3('0x8')](_0xf8e3('0x14'),auth[_0xf8e3('0x9')](),controller['getApplications']);router[_0xf8e3('0x15')]('/',auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x16')]);router['post'](_0xf8e3('0xe'),auth['isAuthenticated'](),controller[_0xf8e3('0x17')]);router[_0xf8e3('0x15')](_0xf8e3('0x10'),auth['isAuthenticated'](),controller['addAnswer']);router[_0xf8e3('0x15')](_0xf8e3('0x12'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x18')]);router[_0xf8e3('0x15')](_0xf8e3('0x14'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x19')]);router[_0xf8e3('0x15')](_0xf8e3('0x1a'),controller['notify']);router[_0xf8e3('0x15')](_0xf8e3('0x1b'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x1c')]);router[_0xf8e3('0x1d')](_0xf8e3('0xc'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x1e')]);router['delete'](_0xf8e3('0xc'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x1f')]);router[_0xf8e3('0x20')]('/:id/dispositions',auth[_0xf8e3('0x9')](),controller['removeDispositions']);router[_0xf8e3('0x20')](_0xf8e3('0x10'),auth[_0xf8e3('0x9')](),controller[_0xf8e3('0x21')]);router[_0xf8e3('0x20')](_0xf8e3('0x12'),auth['isAuthenticated'](),controller[_0xf8e3('0x22')]);module[_0xf8e3('0x23')]=router;
\ No newline at end of file
index 0df92b6..6b07989 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x069e=['setDataValue','mandatoryDispositionPauseId','sequelize','randomstring','exports','STRING','name','generate','ENUM','twilio','TEXT','BOOLEAN','INTEGER','Enabled/disables\x20mandatory\x20dispo\x20on\x20a\x20queue'];(function(_0x50563f,_0x538946){var _0x4a0372=function(_0x243bc9){while(--_0x243bc9){_0x50563f['push'](_0x50563f['shift']());}};_0x4a0372(++_0x538946);}(_0x069e,0x1c2));var _0xe069=function(_0x283cf6,_0x14e096){_0x283cf6=_0x283cf6-0x0;var _0x4b40e5=_0x069e[_0x283cf6];return _0x4b40e5;};'use strict';var Sequelize=require(_0xe069('0x0'));var rs=require(_0xe069('0x1'));module[_0xe069('0x2')]={'name':{'type':Sequelize[_0xe069('0x3')],'unique':_0xe069('0x4'),'allowNull':![]},'key':{'type':Sequelize[_0xe069('0x3')],'allowNull':![]},'remote':{'type':Sequelize[_0xe069('0x3')],'allowNull':![]},'token':{'type':Sequelize[_0xe069('0x3')],'defaultValue':function(){return rs[_0xe069('0x5')]();}},'phone':{'type':Sequelize[_0xe069('0x3')]},'type':{'type':Sequelize[_0xe069('0x6')](_0xe069('0x7'),'sinch')},'accountSid':{'type':Sequelize['STRING']},'baseUrl':{'type':Sequelize[_0xe069('0x3')]},'authToken':{'type':Sequelize[_0xe069('0x3')]},'notificationTemplate':{'type':Sequelize[_0xe069('0x8')],'defaultValue':function(){return'Account:\x20{{account.name}}<br/>{{#queue}}Queue:\x20{{queue.name}}<br/>{{/queue}}From\x20:\x20{{from}}';}},'notificationSound':{'type':Sequelize['BOOLEAN'],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0xe069('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0xe069('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0xe069('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0xe069('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize[_0xe069('0xa')],'comment':'Status\x20to\x20put\x20when\x20mandatory\x20disposition\x20is\x20enabled'},'mandatoryDisposition':{'type':Sequelize[_0xe069('0x9')],'defaultValue':![],'comment':_0xe069('0xb'),'set':function(_0x2a21a0){if(!_0x2a21a0){this[_0xe069('0xc')](_0xe069('0xd'),null);}this[_0xe069('0xc')]('mandatoryDisposition',_0x2a21a0);}},'description':{'type':Sequelize[_0xe069('0x3')]}};
\ No newline at end of file
+var _0x6757=['sequelize','randomstring','STRING','name','generate','twilio','sinch','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'];(function(_0x296754,_0x5befe9){var _0x1d9f1d=function(_0x3f033e){while(--_0x3f033e){_0x296754['push'](_0x296754['shift']());}};_0x1d9f1d(++_0x5befe9);}(_0x6757,0x196));var _0x7675=function(_0x342453,_0x3c0434){_0x342453=_0x342453-0x0;var _0x5406ab=_0x6757[_0x342453];return _0x5406ab;};'use strict';var Sequelize=require(_0x7675('0x0'));var rs=require(_0x7675('0x1'));module['exports']={'name':{'type':Sequelize[_0x7675('0x2')],'unique':_0x7675('0x3'),'allowNull':![]},'key':{'type':Sequelize[_0x7675('0x2')],'allowNull':![]},'remote':{'type':Sequelize[_0x7675('0x2')],'allowNull':![]},'token':{'type':Sequelize[_0x7675('0x2')],'defaultValue':function(){return rs[_0x7675('0x4')]();}},'phone':{'type':Sequelize[_0x7675('0x2')]},'type':{'type':Sequelize['ENUM'](_0x7675('0x5'),_0x7675('0x6'))},'accountSid':{'type':Sequelize[_0x7675('0x2')]},'baseUrl':{'type':Sequelize[_0x7675('0x2')]},'authToken':{'type':Sequelize[_0x7675('0x2')]},'notificationTemplate':{'type':Sequelize[_0x7675('0x7')],'defaultValue':function(){return _0x7675('0x8');}},'notificationSound':{'type':Sequelize[_0x7675('0x9')],'defaultValue':![]},'notificationShake':{'type':Sequelize[_0x7675('0x9')],'defaultValue':![]},'waitForTheAssignedAgent':{'type':Sequelize[_0x7675('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0xa},'queueTransfer':{'type':Sequelize[_0x7675('0x9')],'defaultValue':![]},'queueTransferTimeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'agentTransfer':{'type':Sequelize[_0x7675('0x9')],'defaultValue':![]},'agentTransferTimeout':{'type':Sequelize[_0x7675('0xa')],'validate':{'min':0x1,'max':0x20c49b},'defaultValue':0x12c},'mandatoryDispositionPauseId':{'type':Sequelize['INTEGER'],'comment':_0x7675('0xb')},'mandatoryDisposition':{'type':Sequelize[_0x7675('0x9')],'defaultValue':![],'comment':_0x7675('0xc'),'set':function(_0x2c2f0b){if(!_0x2c2f0b){this['setDataValue']('mandatoryDispositionPauseId',null);}this[_0x7675('0xd')]('mandatoryDisposition',_0x2c2f0b);}},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
index 519c86c..70d66ce 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3dcc=['role','UserProfileSection','find','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','body','describe','addDisposition','WhatsappAccountId','Disposition','getDispositions','hasOwnProperty','pick','findAll','removeDispositions','ids','CannedAnswer','getAnswers','findOne','removeAnswers','addAgents','spread','emit','userWhatsappAccount:save','removeAgents','isArray','userWhatsappAccount:remove','getAgents','User','addApplications','transaction','sequelize','Transaction','ISOLATION_LEVELS','WhatsappApplication','bulkCreate','send','getApplications','notify','whatsapp','Applications','account','sinch','statuses','state','WhatsappMessage','update','message_id','applications','orderBy','Sequelize','ValidationError','no\x20available\x20attributes','createdAt','difference','updatedAt','CompanyId','mobile','from','From','replace','whatsapp:','Body','messageId','notifications','from\x20is\x20mandatory','body\x20is\x20mandatory\x20and\x20not\x20empty','isNil','mapKey','mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20','CmList','CmContact','Contacts','DESC','list','omit','WhatsappInteraction','created','autoclose','push','close','unmanaged','*,*,*,*','interaction','ContactId','AttachmentId','UserId','agent','waitForTheAssignedAgent','Start','startRouting','receiveMessage','entity\x20found','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','List','ListId','out','Messages','dataValues','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','jayson/promise','client','http','then','info','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappAccount,\x20%s,\x20%s','message','sendStatus','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','WhatsappAccounts','destroy','status','stack','name','Pause','mandatoryDispositionPause','map','WhatsappAccount','rawAttributes','model','query','keys','fields','attributes','length','nolimit','limit','order','sort','filters','filter','merge','where','type','VIRTUAL','options','include','rows','catch','show','params','intersection','includeAll','create','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user'];(function(_0x2f8e6d,_0x572491){var _0x51ce45=function(_0x514e18){while(--_0x514e18){_0x2f8e6d['push'](_0x2f8e6d['shift']());}};_0x51ce45(++_0x572491);}(_0x3dcc,0x64));var _0xc3dc=function(_0x616290,_0x280b7f){_0x616290=_0x616290-0x0;var _0x453879=_0x3dcc[_0x616290];return _0x453879;};'use strict';var emlformat=require(_0xc3dc('0x0'));var rimraf=require(_0xc3dc('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xc3dc('0x2'));var rp=require(_0xc3dc('0x3'));var moment=require(_0xc3dc('0x4'));var BPromise=require(_0xc3dc('0x5'));var Mustache=require(_0xc3dc('0x6'));var util=require(_0xc3dc('0x7'));var path=require(_0xc3dc('0x8'));var sox=require('sox');var csv=require(_0xc3dc('0x9'));var ejs=require(_0xc3dc('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xc3dc('0xb'));var squel=require(_0xc3dc('0xc'));var crypto=require(_0xc3dc('0xd'));var jsforce=require(_0xc3dc('0xe'));var deskjs=require(_0xc3dc('0xf'));var toCsv=require('to-csv');var querystring=require(_0xc3dc('0x10'));var Papa=require('papaparse');var Redis=require(_0xc3dc('0x11'));var authService=require(_0xc3dc('0x12'));var qs=require(_0xc3dc('0x13'));var as=require(_0xc3dc('0x14'));var hardwareService=require(_0xc3dc('0x15'));var logger=require('../../config/logger')(_0xc3dc('0x16'));var utils=require(_0xc3dc('0x17'));var config=require('../../config/environment');var licenseUtil=require(_0xc3dc('0x18'));var db=require(_0xc3dc('0x19'))['db'];config[_0xc3dc('0x1a')]=_[_0xc3dc('0x1b')](config[_0xc3dc('0x1a')],{'host':_0xc3dc('0x1c'),'port':0x18eb});var socket=require(_0xc3dc('0x1d'))(new Redis(config[_0xc3dc('0x1a')]));require(_0xc3dc('0x1e'))['register'](socket);var jayson=require(_0xc3dc('0x1f'));var client=jayson[_0xc3dc('0x20')][_0xc3dc('0x21')]({'port':0x232c});function respondWithRpcPromise(_0x4336b1,_0x25bb74,_0x34eda8,_0x30e8f7){return new BPromise(function(_0x327306,_0x23c570){var _0x339fc6=_0x30e8f7||client;return _0x339fc6['request'](_0x4336b1,_0x34eda8)[_0xc3dc('0x22')](function(_0xc97a02){logger[_0xc3dc('0x23')]('WhatsappAccount,\x20%s,\x20%s',_0x25bb74,_0xc3dc('0x24'));logger[_0xc3dc('0x25')](_0xc3dc('0x26'),_0x25bb74,_0xc3dc('0x24'),JSON[_0xc3dc('0x27')](_0xc97a02));if(_0xc97a02[_0xc3dc('0x28')]){if(_0xc97a02['error'][_0xc3dc('0x29')]===0x1f4){logger[_0xc3dc('0x28')](_0xc3dc('0x2a'),_0x25bb74,_0xc97a02['error'][_0xc3dc('0x2b')]);return _0x23c570(_0xc97a02['error'][_0xc3dc('0x2b')]);}logger[_0xc3dc('0x28')](_0xc3dc('0x2a'),_0x25bb74,_0xc97a02['error'][_0xc3dc('0x2b')]);return _0x327306(_0xc97a02[_0xc3dc('0x28')][_0xc3dc('0x2b')]);}else{logger[_0xc3dc('0x23')]('WhatsappAccount,\x20%s,\x20%s',_0x25bb74,'request\x20sent');_0x327306(_0xc97a02['result']['message']);}})['catch'](function(_0x1647dd){logger['error'](_0xc3dc('0x2a'),_0x25bb74,_0x1647dd);_0x23c570(_0x1647dd);});});}function respondWithStatusCode(_0x13cff2,_0x495438){_0x495438=_0x495438||0xcc;return function(_0x4dce78){if(_0x4dce78){return _0x13cff2[_0xc3dc('0x2c')](_0x495438);}return _0x13cff2['status'](_0x495438)[_0xc3dc('0x2d')]();};}function respondWithResult(_0xbdd8e8,_0x3d1b2a){_0x3d1b2a=_0x3d1b2a||0xc8;return function(_0x64491){if(_0x64491){return _0xbdd8e8['status'](_0x3d1b2a)[_0xc3dc('0x2e')](_0x64491);}};}function respondWithFilteredResult(_0x4897b6,_0x235a5b){return function(_0x2e654d){if(_0x2e654d){var _0x3c4783=typeof _0x235a5b[_0xc3dc('0x2f')]===_0xc3dc('0x30')&&typeof _0x235a5b['limit']===_0xc3dc('0x30');var _0xf92913=_0x2e654d['count'];var _0x405611=_0x3c4783?0x0:_0x235a5b[_0xc3dc('0x2f')];var _0x349ab3=_0x3c4783?_0x2e654d[_0xc3dc('0x31')]:_0x235a5b[_0xc3dc('0x2f')]+_0x235a5b['limit'];var _0xd02bf1;if(_0x349ab3>=_0xf92913){_0x349ab3=_0xf92913;_0xd02bf1=0xc8;}else{_0xd02bf1=0xce;}_0x4897b6['status'](_0xd02bf1);return _0x4897b6[_0xc3dc('0x32')](_0xc3dc('0x33'),_0x405611+'-'+_0x349ab3+'/'+_0xf92913)[_0xc3dc('0x2e')](_0x2e654d);}return null;};}function patchUpdates(_0x22b1d7){return function(_0x161448){try{jsonpatch[_0xc3dc('0x34')](_0x161448,_0x22b1d7,!![]);}catch(_0x2a2277){return BPromise[_0xc3dc('0x35')](_0x2a2277);}return _0x161448[_0xc3dc('0x36')]();};}function saveUpdates(_0x3c3e43,_0x1aa8e3){return function(_0xe83064){if(_0xe83064){return _0xe83064['update'](_0x3c3e43)[_0xc3dc('0x22')](function(_0x27d199){return _0x27d199;});}return null;};}function removeEntity(_0x1e0840,_0x186d7e){return function(_0xd09cef){if(_0xd09cef){return _0xd09cef['destroy']()[_0xc3dc('0x22')](function(){var _0x192b07=_0xd09cef['get']({'plain':!![]});var _0x370d3c=_0xc3dc('0x37');return db['UserProfileResource'][_0xc3dc('0x38')]({'where':{'type':_0x370d3c,'resourceId':_0x192b07['id']}})[_0xc3dc('0x22')](function(){return _0xd09cef;});})[_0xc3dc('0x22')](function(){_0x1e0840[_0xc3dc('0x39')](0xcc)[_0xc3dc('0x2d')]();});}};}function handleEntityNotFound(_0x1af2a5,_0x27d55f){return function(_0x4c0673){if(!_0x4c0673){_0x1af2a5[_0xc3dc('0x2c')](0x194);}return _0x4c0673;};}function handleError(_0x8d60e,_0x5f173d){_0x5f173d=_0x5f173d||0x1f4;return function(_0x4e5cfb){logger[_0xc3dc('0x28')](_0x4e5cfb[_0xc3dc('0x3a')]);if(_0x4e5cfb[_0xc3dc('0x3b')]){delete _0x4e5cfb[_0xc3dc('0x3b')];}_0x8d60e[_0xc3dc('0x39')](_0x5f173d)['send'](_0x4e5cfb);};}exports['index']=function(_0x161a1b,_0xa47340){var _0x1ecb6b={'include':[{'model':db[_0xc3dc('0x3c')],'as':_0xc3dc('0x3d')}]},_0x2bf135={},_0x18cec5={'count':0x0,'rows':[]};var _0x314179=_[_0xc3dc('0x3e')](db[_0xc3dc('0x3f')][_0xc3dc('0x40')],function(_0x3c7ccd){return{'name':_0x3c7ccd['fieldName'],'type':_0x3c7ccd['type']['key']};});_0x2bf135[_0xc3dc('0x41')]=_[_0xc3dc('0x3e')](_0x314179,_0xc3dc('0x3b'));_0x2bf135[_0xc3dc('0x42')]=_[_0xc3dc('0x43')](_0x161a1b[_0xc3dc('0x42')]);_0x2bf135['filters']=_['intersection'](_0x2bf135[_0xc3dc('0x41')],_0x2bf135['query']);_0x1ecb6b['attributes']=_['intersection'](_0x2bf135['model'],qs[_0xc3dc('0x44')](_0x161a1b['query']['fields']));_0x1ecb6b[_0xc3dc('0x45')]=_0x1ecb6b[_0xc3dc('0x45')][_0xc3dc('0x46')]?_0x1ecb6b['attributes']:_0x2bf135[_0xc3dc('0x41')];if(!_0x161a1b[_0xc3dc('0x42')]['hasOwnProperty'](_0xc3dc('0x47'))){_0x1ecb6b['limit']=qs[_0xc3dc('0x48')](_0x161a1b['query'][_0xc3dc('0x48')]);_0x1ecb6b['offset']=qs[_0xc3dc('0x2f')](_0x161a1b[_0xc3dc('0x42')][_0xc3dc('0x2f')]);}_0x1ecb6b[_0xc3dc('0x49')]=qs[_0xc3dc('0x4a')](_0x161a1b[_0xc3dc('0x42')][_0xc3dc('0x4a')]);_0x1ecb6b['where']=qs[_0xc3dc('0x4b')](_['pick'](_0x161a1b[_0xc3dc('0x42')],_0x2bf135[_0xc3dc('0x4b')]),_0x314179);if(_0x161a1b['query'][_0xc3dc('0x4c')]){_0x1ecb6b['where']=_[_0xc3dc('0x4d')](_0x1ecb6b[_0xc3dc('0x4e')],{'$or':_['map'](_0x314179,function(_0x4e63f2){if(_0x4e63f2[_0xc3dc('0x4f')]!==_0xc3dc('0x50')){var _0x2d1345={};_0x2d1345[_0x4e63f2[_0xc3dc('0x3b')]]={'$like':'%'+_0x161a1b[_0xc3dc('0x42')]['filter']+'%'};return _0x2d1345;}})});}_0x1ecb6b=_['merge']({},_0x1ecb6b,_0x161a1b[_0xc3dc('0x51')]);var _0x23fd55={'where':_0x1ecb6b['where']};return db[_0xc3dc('0x3f')][_0xc3dc('0x31')](_0x23fd55)['then'](function(_0x3f35e1){_0x18cec5['count']=_0x3f35e1;if(_0x161a1b[_0xc3dc('0x42')]['includeAll']){_0x1ecb6b[_0xc3dc('0x52')]=[{'all':!![]}];}return db[_0xc3dc('0x3f')]['findAll'](_0x1ecb6b);})['then'](function(_0x479102){_0x18cec5[_0xc3dc('0x53')]=_0x479102;return _0x18cec5;})[_0xc3dc('0x22')](respondWithFilteredResult(_0xa47340,_0x1ecb6b))[_0xc3dc('0x54')](handleError(_0xa47340,null));};exports[_0xc3dc('0x55')]=function(_0x471da6,_0x5520ba){var _0x2322c4={'raw':![],'where':{'id':_0x471da6[_0xc3dc('0x56')]['id']},'include':[{'model':db[_0xc3dc('0x3c')],'as':'mandatoryDispositionPause'}]},_0x20b307={};_0x20b307[_0xc3dc('0x41')]=_[_0xc3dc('0x43')](db[_0xc3dc('0x3f')][_0xc3dc('0x40')]);_0x20b307[_0xc3dc('0x42')]=_['keys'](_0x471da6[_0xc3dc('0x42')]);_0x20b307['filters']=_[_0xc3dc('0x57')](_0x20b307['model'],_0x20b307['query']);_0x2322c4[_0xc3dc('0x45')]=_['intersection'](_0x20b307[_0xc3dc('0x41')],qs[_0xc3dc('0x44')](_0x471da6[_0xc3dc('0x42')][_0xc3dc('0x44')]));_0x2322c4[_0xc3dc('0x45')]=_0x2322c4[_0xc3dc('0x45')]['length']?_0x2322c4[_0xc3dc('0x45')]:_0x20b307[_0xc3dc('0x41')];if(_0x471da6[_0xc3dc('0x42')][_0xc3dc('0x58')]){_0x2322c4[_0xc3dc('0x52')]=[{'all':!![]}];}_0x2322c4=_[_0xc3dc('0x4d')]({},_0x2322c4,_0x471da6[_0xc3dc('0x51')]);return db[_0xc3dc('0x3f')]['find'](_0x2322c4)[_0xc3dc('0x22')](handleEntityNotFound(_0x5520ba,null))[_0xc3dc('0x22')](respondWithResult(_0x5520ba,null))[_0xc3dc('0x54')](handleError(_0x5520ba,null));};exports[_0xc3dc('0x59')]=function(_0x15ab40,_0x393748){return db[_0xc3dc('0x3f')][_0xc3dc('0x59')](_0x15ab40['body'],{})[_0xc3dc('0x22')](function(_0xa7736e){var _0x166a14=_0x15ab40[_0xc3dc('0x5a')][_0xc3dc('0x5b')]({'plain':!![]});if(!_0x166a14)throw new Error(_0xc3dc('0x5c'));if(_0x166a14[_0xc3dc('0x5d')]===_0xc3dc('0x5a')){var _0x573f3b=_0xa7736e[_0xc3dc('0x5b')]({'plain':!![]});var _0x4f9b4d=_0xc3dc('0x37');return db[_0xc3dc('0x5e')][_0xc3dc('0x5f')]({'where':{'name':_0x4f9b4d,'userProfileId':_0x166a14['userProfileId']},'raw':!![]})['then'](function(_0x42c16){if(_0x42c16&&_0x42c16[_0xc3dc('0x60')]===0x0){return db['UserProfileResource'][_0xc3dc('0x59')]({'name':_0x573f3b[_0xc3dc('0x3b')],'resourceId':_0x573f3b['id'],'type':_0x42c16[_0xc3dc('0x3b')],'sectionId':_0x42c16['id']},{})[_0xc3dc('0x22')](function(){return _0xa7736e;});}else{return _0xa7736e;}})[_0xc3dc('0x54')](function(_0x565b61){logger['error'](_0xc3dc('0x61'),_0x565b61);throw _0x565b61;});}return _0xa7736e;})['then'](respondWithResult(_0x393748,0xc9))[_0xc3dc('0x54')](handleError(_0x393748,null));};exports['update']=function(_0x5a5fbc,_0x87dde6){if(_0x5a5fbc[_0xc3dc('0x62')]['id']){delete _0x5a5fbc[_0xc3dc('0x62')]['id'];}return db[_0xc3dc('0x3f')]['find']({'where':{'id':_0x5a5fbc[_0xc3dc('0x56')]['id']},'include':[{'model':db[_0xc3dc('0x3c')],'as':_0xc3dc('0x3d')}]})[_0xc3dc('0x22')](handleEntityNotFound(_0x87dde6,null))[_0xc3dc('0x22')](saveUpdates(_0x5a5fbc[_0xc3dc('0x62')],null))['then'](respondWithResult(_0x87dde6,null))[_0xc3dc('0x54')](handleError(_0x87dde6,null));};exports[_0xc3dc('0x38')]=function(_0xf0614f,_0x444207){return db[_0xc3dc('0x3f')][_0xc3dc('0x5f')]({'where':{'id':_0xf0614f[_0xc3dc('0x56')]['id']}})[_0xc3dc('0x22')](handleEntityNotFound(_0x444207,null))['then'](removeEntity(_0x444207,null))[_0xc3dc('0x54')](handleError(_0x444207,null));};exports[_0xc3dc('0x63')]=function(_0x4421a6,_0x5c9036){return db[_0xc3dc('0x3f')][_0xc3dc('0x63')]()[_0xc3dc('0x22')](respondWithResult(_0x5c9036,null))[_0xc3dc('0x54')](handleError(_0x5c9036,null));};exports[_0xc3dc('0x64')]=function(_0x28f230,_0x2d7873,_0x483d47){if(_0x28f230[_0xc3dc('0x62')]['id']){delete _0x28f230['body']['id'];}return db[_0xc3dc('0x3f')]['find']({'where':{'id':_0x28f230[_0xc3dc('0x56')]['id']}})[_0xc3dc('0x22')](handleEntityNotFound(_0x2d7873,null))['then'](function(_0x30239e){if(_0x30239e){_0x28f230[_0xc3dc('0x62')][_0xc3dc('0x65')]=_0x30239e['id'];return db[_0xc3dc('0x66')][_0xc3dc('0x59')](_0x28f230['body']);}})[_0xc3dc('0x22')](respondWithResult(_0x2d7873,null))['catch'](handleError(_0x2d7873,null));};exports[_0xc3dc('0x67')]=function(_0x5ea410,_0x10a2bf,_0x38facc){var _0x2c6324={'raw':![],'where':{}};var _0x524a43={};var _0x4d5ad9={'count':0x0,'rows':[]};return db['WhatsappAccount']['findOne']({'where':{'id':_0x5ea410[_0xc3dc('0x56')]['id']}})[_0xc3dc('0x22')](handleEntityNotFound(_0x10a2bf,null))['then'](function(_0x215ebc){if(_0x215ebc){_0x524a43['model']=_[_0xc3dc('0x43')](db[_0xc3dc('0x66')][_0xc3dc('0x40')]);_0x524a43['query']=_[_0xc3dc('0x43')](_0x5ea410[_0xc3dc('0x42')]);_0x524a43['filters']=_[_0xc3dc('0x57')](_0x524a43[_0xc3dc('0x41')],_0x524a43[_0xc3dc('0x42')]);_0x2c6324[_0xc3dc('0x45')]=_['intersection'](_0x524a43[_0xc3dc('0x41')],qs[_0xc3dc('0x44')](_0x5ea410['query'][_0xc3dc('0x44')]));_0x2c6324['attributes']=_0x2c6324[_0xc3dc('0x45')][_0xc3dc('0x46')]?_0x2c6324[_0xc3dc('0x45')]:_0x524a43[_0xc3dc('0x41')];if(!_0x5ea410[_0xc3dc('0x42')][_0xc3dc('0x68')]('nolimit')){_0x2c6324[_0xc3dc('0x48')]=qs[_0xc3dc('0x48')](_0x5ea410[_0xc3dc('0x42')][_0xc3dc('0x48')]);_0x2c6324[_0xc3dc('0x2f')]=qs[_0xc3dc('0x2f')](_0x5ea410[_0xc3dc('0x42')][_0xc3dc('0x2f')]);}_0x2c6324[_0xc3dc('0x49')]=qs[_0xc3dc('0x4a')](_0x5ea410['query'][_0xc3dc('0x4a')]);_0x2c6324[_0xc3dc('0x4e')]=qs['filters'](_[_0xc3dc('0x69')](_0x5ea410[_0xc3dc('0x42')],_0x524a43[_0xc3dc('0x4b')]));_0x2c6324['where'][_0xc3dc('0x65')]=_0x215ebc['id'];if(_0x5ea410[_0xc3dc('0x42')][_0xc3dc('0x4c')]){_0x2c6324[_0xc3dc('0x4e')]=_[_0xc3dc('0x4d')](_0x2c6324['where'],{'$or':_[_0xc3dc('0x3e')](_0x2c6324[_0xc3dc('0x45')],function(_0x4dcf8a){var _0xdfc0f8={};_0xdfc0f8[_0x4dcf8a]={'$like':'%'+_0x5ea410[_0xc3dc('0x42')]['filter']+'%'};return _0xdfc0f8;})});}_0x2c6324=_[_0xc3dc('0x4d')]({},_0x2c6324,_0x5ea410[_0xc3dc('0x51')]);return db[_0xc3dc('0x66')][_0xc3dc('0x31')]({'where':_0x2c6324[_0xc3dc('0x4e')]})[_0xc3dc('0x22')](function(_0x43bf24){_0x4d5ad9['count']=_0x43bf24;if(_0x5ea410[_0xc3dc('0x42')][_0xc3dc('0x58')]){_0x2c6324['include']=[{'all':!![]}];}return db[_0xc3dc('0x66')][_0xc3dc('0x6a')](_0x2c6324);})[_0xc3dc('0x22')](function(_0x43bfed){_0x4d5ad9['rows']=_0x43bfed;return _0x4d5ad9;});}})['then'](respondWithFilteredResult(_0x10a2bf,_0x2c6324))['catch'](handleError(_0x10a2bf,null));};exports[_0xc3dc('0x6b')]=function(_0x19ba85,_0x57abfa,_0x1d4058){return db[_0xc3dc('0x3f')][_0xc3dc('0x5f')]({'where':{'id':_0x19ba85[_0xc3dc('0x56')]['id']}})[_0xc3dc('0x22')](handleEntityNotFound(_0x57abfa,null))[_0xc3dc('0x22')](function(_0x94a3ff){if(_0x94a3ff){return _0x94a3ff[_0xc3dc('0x6b')](_0x19ba85['query'][_0xc3dc('0x6c')]);}})[_0xc3dc('0x22')](respondWithStatusCode(_0x57abfa,null))[_0xc3dc('0x54')](handleError(_0x57abfa,null));};exports['addAnswer']=function(_0x4fa44b,_0x31cc15,_0x3a99bf){if(_0x4fa44b[_0xc3dc('0x62')]['id']){delete _0x4fa44b[_0xc3dc('0x62')]['id'];}return db[_0xc3dc('0x3f')]['find']({'where':{'id':_0x4fa44b['params']['id']}})[_0xc3dc('0x22')](handleEntityNotFound(_0x31cc15,null))[_0xc3dc('0x22')](function(_0x3fae41){if(_0x3fae41){_0x4fa44b['body'][_0xc3dc('0x65')]=_0x3fae41['id'];return db[_0xc3dc('0x6d')][_0xc3dc('0x59')](_0x4fa44b[_0xc3dc('0x62')]);}})[_0xc3dc('0x22')](respondWithResult(_0x31cc15,null))[_0xc3dc('0x54')](handleError(_0x31cc15,null));};exports[_0xc3dc('0x6e')]=function(_0x1ac352,_0x3d9ebd,_0x418f2a){var _0x27bde3={'raw':![],'where':{}};var _0x29ab8a={};var _0x590894={'count':0x0,'rows':[]};return db['WhatsappAccount'][_0xc3dc('0x6f')]({'where':{'id':_0x1ac352[_0xc3dc('0x56')]['id']}})[_0xc3dc('0x22')](handleEntityNotFound(_0x3d9ebd,null))[_0xc3dc('0x22')](function(_0x2e0494){if(_0x2e0494){_0x29ab8a['model']=_[_0xc3dc('0x43')](db[_0xc3dc('0x6d')][_0xc3dc('0x40')]);_0x29ab8a[_0xc3dc('0x42')]=_[_0xc3dc('0x43')](_0x1ac352[_0xc3dc('0x42')]);_0x29ab8a[_0xc3dc('0x4b')]=_[_0xc3dc('0x57')](_0x29ab8a['model'],_0x29ab8a[_0xc3dc('0x42')]);_0x27bde3['attributes']=_[_0xc3dc('0x57')](_0x29ab8a[_0xc3dc('0x41')],qs[_0xc3dc('0x44')](_0x1ac352[_0xc3dc('0x42')]['fields']));_0x27bde3[_0xc3dc('0x45')]=_0x27bde3[_0xc3dc('0x45')][_0xc3dc('0x46')]?_0x27bde3['attributes']:_0x29ab8a['model'];if(!_0x1ac352[_0xc3dc('0x42')][_0xc3dc('0x68')](_0xc3dc('0x47'))){_0x27bde3[_0xc3dc('0x48')]=qs['limit'](_0x1ac352[_0xc3dc('0x42')][_0xc3dc('0x48')]);_0x27bde3[_0xc3dc('0x2f')]=qs[_0xc3dc('0x2f')](_0x1ac352[_0xc3dc('0x42')][_0xc3dc('0x2f')]);}_0x27bde3[_0xc3dc('0x49')]=qs[_0xc3dc('0x4a')](_0x1ac352['query'][_0xc3dc('0x4a')]);_0x27bde3[_0xc3dc('0x4e')]=qs[_0xc3dc('0x4b')](_[_0xc3dc('0x69')](_0x1ac352[_0xc3dc('0x42')],_0x29ab8a['filters']));_0x27bde3['where'][_0xc3dc('0x65')]=_0x2e0494['id'];if(_0x1ac352[_0xc3dc('0x42')][_0xc3dc('0x4c')]){_0x27bde3[_0xc3dc('0x4e')]=_[_0xc3dc('0x4d')](_0x27bde3['where'],{'$or':_[_0xc3dc('0x3e')](_0x27bde3[_0xc3dc('0x45')],function(_0x353335){var _0x3c6637={};_0x3c6637[_0x353335]={'$like':'%'+_0x1ac352[_0xc3dc('0x42')]['filter']+'%'};return _0x3c6637;})});}_0x27bde3=_[_0xc3dc('0x4d')]({},_0x27bde3,_0x1ac352['options']);return db[_0xc3dc('0x6d')]['count']({'where':_0x27bde3[_0xc3dc('0x4e')]})[_0xc3dc('0x22')](function(_0x125285){_0x590894[_0xc3dc('0x31')]=_0x125285;if(_0x1ac352['query'][_0xc3dc('0x58')]){_0x27bde3[_0xc3dc('0x52')]=[{'all':!![]}];}return db[_0xc3dc('0x6d')][_0xc3dc('0x6a')](_0x27bde3);})['then'](function(_0x4678ea){_0x590894[_0xc3dc('0x53')]=_0x4678ea;return _0x590894;});}})['then'](respondWithFilteredResult(_0x3d9ebd,_0x27bde3))[_0xc3dc('0x54')](handleError(_0x3d9ebd,null));};exports[_0xc3dc('0x70')]=function(_0x24aaeb,_0x10ee26,_0x444b8c){return db[_0xc3dc('0x3f')]['find']({'where':{'id':_0x24aaeb[_0xc3dc('0x56')]['id']}})[_0xc3dc('0x22')](handleEntityNotFound(_0x10ee26,null))[_0xc3dc('0x22')](function(_0x9042bc){if(_0x9042bc){return _0x9042bc[_0xc3dc('0x70')](_0x24aaeb['query'][_0xc3dc('0x6c')]);}})['then'](respondWithStatusCode(_0x10ee26,null))[_0xc3dc('0x54')](handleError(_0x10ee26,null));};exports[_0xc3dc('0x71')]=function(_0x1a3843,_0x3d44d8,_0x440846){return db[_0xc3dc('0x3f')]['find']({'where':{'id':_0x1a3843[_0xc3dc('0x56')]['id']}})[_0xc3dc('0x22')](handleEntityNotFound(_0x3d44d8,null))['then'](function(_0x54afb3){if(_0x54afb3){return _0x54afb3['addAgents'](_0x1a3843[_0xc3dc('0x62')]['ids'],_['omit'](_0x1a3843[_0xc3dc('0x62')],[_0xc3dc('0x6c'),'id'])||{})[_0xc3dc('0x72')](function(_0x469309){for(var _0x41f96b=0x0;_0x41f96b<_0x1a3843[_0xc3dc('0x62')][_0xc3dc('0x6c')][_0xc3dc('0x46')];_0x41f96b+=0x1){socket[_0xc3dc('0x73')](_0xc3dc('0x74'),{'UserId':Number(_0x1a3843['body']['ids'][_0x41f96b]),'WhatsappAccountId':Number(_0x1a3843[_0xc3dc('0x56')]['id'])});}return _0x469309;});}})[_0xc3dc('0x22')](respondWithResult(_0x3d44d8,null))[_0xc3dc('0x54')](handleError(_0x3d44d8,null));};exports[_0xc3dc('0x75')]=function(_0x4031e8,_0xdff8b8,_0x200d7a){return db[_0xc3dc('0x3f')][_0xc3dc('0x5f')]({'where':{'id':_0x4031e8[_0xc3dc('0x56')]['id']}})['then'](handleEntityNotFound(_0xdff8b8,null))[_0xc3dc('0x22')](function(_0x1ac23e){if(_0x1ac23e){return _0x1ac23e[_0xc3dc('0x75')](_0x4031e8['query']['ids'])[_0xc3dc('0x22')](function(){if(_[_0xc3dc('0x76')](_0x4031e8[_0xc3dc('0x42')]['ids'])){for(var _0x110884=0x0;_0x110884<_0x4031e8[_0xc3dc('0x42')][_0xc3dc('0x6c')]['length'];_0x110884+=0x1){socket[_0xc3dc('0x73')](_0xc3dc('0x77'),{'UserId':Number(_0x4031e8['query'][_0xc3dc('0x6c')][_0x110884]),'WhatsappAccountId':Number(_0x4031e8[_0xc3dc('0x56')]['id'])});}}else{socket[_0xc3dc('0x73')]('userWhatsappAccount:remove',{'UserId':Number(_0x4031e8[_0xc3dc('0x42')][_0xc3dc('0x6c')]),'WhatsappAccountId':Number(_0x4031e8['params']['id'])});}});}})['then'](respondWithStatusCode(_0xdff8b8,null))[_0xc3dc('0x54')](handleError(_0xdff8b8,null));};exports[_0xc3dc('0x78')]=function(_0x27c2a2,_0x7030f6,_0x5171da){var _0x180939={};var _0x10a017={};var _0x419b1e;var _0x5560de;return db[_0xc3dc('0x3f')][_0xc3dc('0x6f')]({'where':{'id':_0x27c2a2[_0xc3dc('0x56')]['id']}})[_0xc3dc('0x22')](handleEntityNotFound(_0x7030f6,null))[_0xc3dc('0x22')](function(_0x5a103b){if(_0x5a103b){_0x419b1e=_0x5a103b;_0x10a017[_0xc3dc('0x41')]=_[_0xc3dc('0x43')](db[_0xc3dc('0x79')][_0xc3dc('0x40')]);_0x10a017[_0xc3dc('0x42')]=_['keys'](_0x27c2a2[_0xc3dc('0x42')]);_0x10a017['filters']=_[_0xc3dc('0x57')](_0x10a017[_0xc3dc('0x41')],_0x10a017['query']);_0x180939[_0xc3dc('0x45')]=_['intersection'](_0x10a017[_0xc3dc('0x41')],qs[_0xc3dc('0x44')](_0x27c2a2['query'][_0xc3dc('0x44')]));_0x180939[_0xc3dc('0x45')]=_0x180939[_0xc3dc('0x45')]['length']?_0x180939[_0xc3dc('0x45')]:_0x10a017[_0xc3dc('0x41')];_0x180939[_0xc3dc('0x49')]=qs[_0xc3dc('0x4a')](_0x27c2a2[_0xc3dc('0x42')][_0xc3dc('0x4a')]);_0x180939['where']=qs[_0xc3dc('0x4b')](_[_0xc3dc('0x69')](_0x27c2a2[_0xc3dc('0x42')],_0x10a017['filters']));if(_0x27c2a2[_0xc3dc('0x42')][_0xc3dc('0x4c')]){_0x180939[_0xc3dc('0x4e')]=_[_0xc3dc('0x4d')](_0x180939[_0xc3dc('0x4e')],{'$or':_[_0xc3dc('0x3e')](_0x180939[_0xc3dc('0x45')],function(_0x4b46bf){var _0x571d9d={};_0x571d9d[_0x4b46bf]={'$like':'%'+_0x27c2a2['query']['filter']+'%'};return _0x571d9d;})});}_0x180939=_[_0xc3dc('0x4d')]({},_0x180939,_0x27c2a2[_0xc3dc('0x51')]);return _0x419b1e[_0xc3dc('0x78')](_0x180939);}})[_0xc3dc('0x22')](function(_0x5abd47){if(_0x5abd47){_0x5560de=_0x5abd47[_0xc3dc('0x46')];if(!_0x27c2a2[_0xc3dc('0x42')][_0xc3dc('0x68')](_0xc3dc('0x47'))){_0x180939['limit']=qs[_0xc3dc('0x48')](_0x27c2a2[_0xc3dc('0x42')]['limit']);_0x180939[_0xc3dc('0x2f')]=qs[_0xc3dc('0x2f')](_0x27c2a2[_0xc3dc('0x42')]['offset']);}return _0x419b1e[_0xc3dc('0x78')](_0x180939);}})[_0xc3dc('0x22')](function(_0x24abc0){if(_0x24abc0){return _0x24abc0?{'count':_0x5560de,'rows':_0x24abc0}:null;}})[_0xc3dc('0x22')](respondWithResult(_0x7030f6,null))['catch'](handleError(_0x7030f6,null));};exports[_0xc3dc('0x7a')]=function(_0x3e2aa6,_0x526961){var _0x5b4255=_0x3e2aa6[_0xc3dc('0x56')]['id'];var _0x208d62=_0x3e2aa6['body'];var _0x4e2d46=0xc8;var _0x59ecff=null;return db['sequelize'][_0xc3dc('0x7b')]({'isolationLevel':db[_0xc3dc('0x7c')][_0xc3dc('0x7d')][_0xc3dc('0x7e')]['READ_COMMITTED']},function(_0x1463c2){return db[_0xc3dc('0x3f')][_0xc3dc('0x6f')]({'where':{'id':_0x5b4255},'transaction':_0x1463c2})[_0xc3dc('0x22')](function(_0x175fd5){if(_0x175fd5){return db[_0xc3dc('0x7f')][_0xc3dc('0x38')]({'where':{'WhatsappAccountId':_0x5b4255},'transaction':_0x1463c2})[_0xc3dc('0x22')](function(){var _0x1bdf35=_['map'](_0x208d62,function(_0xebba14){_0xebba14[_0xc3dc('0x65')]=_0x5b4255;return _0xebba14;});return db['WhatsappApplication'][_0xc3dc('0x80')](_0x1bdf35,{'transaction':_0x1463c2});});}else{_0x4e2d46=0x194;_0x59ecff=[];}});})[_0xc3dc('0x22')](function(){if(_0x4e2d46!==0x194){return db[_0xc3dc('0x7f')]['findAndCountAll']({'where':{'WhatsappAccountId':_0x5b4255},'order':'priority'})[_0xc3dc('0x22')](function(_0x3d6124){_0x59ecff=_0x3d6124;});}})[_0xc3dc('0x54')](function(_0x4c3ab0){_0x4e2d46=0x1f4;logger['error'](_0x4c3ab0[_0xc3dc('0x3a')]);if(_0x4c3ab0['name']){delete _0x4c3ab0[_0xc3dc('0x3b')];}_0x59ecff=_0x4c3ab0;})['finally'](function(){if(_0x59ecff===null){_0x526961[_0xc3dc('0x2c')](_0x4e2d46);}else{if(_0x4e2d46===0x1f4){_0x526961[_0xc3dc('0x39')](_0x4e2d46)[_0xc3dc('0x81')](_0x59ecff);}else{_0x526961[_0xc3dc('0x39')](_0x4e2d46)[_0xc3dc('0x2e')](_0x59ecff);}}});};exports[_0xc3dc('0x82')]=function(_0x13bb07,_0x4248bf,_0x7a44f1){var _0x1a457a={};var _0x15901b={};var _0x32a99;var _0x3378b7;return db[_0xc3dc('0x3f')][_0xc3dc('0x6f')]({'where':{'id':_0x13bb07[_0xc3dc('0x56')]['id']}})['then'](handleEntityNotFound(_0x4248bf,null))[_0xc3dc('0x22')](function(_0xde3e96){if(_0xde3e96){_0x32a99=_0xde3e96;_0x15901b[_0xc3dc('0x41')]=_['keys'](db[_0xc3dc('0x7f')][_0xc3dc('0x40')]);_0x15901b[_0xc3dc('0x42')]=_[_0xc3dc('0x43')](_0x13bb07['query']);_0x15901b[_0xc3dc('0x4b')]=_['intersection'](_0x15901b[_0xc3dc('0x41')],_0x15901b[_0xc3dc('0x42')]);_0x1a457a[_0xc3dc('0x45')]=_['intersection'](_0x15901b['model'],qs[_0xc3dc('0x44')](_0x13bb07[_0xc3dc('0x42')]['fields']));_0x1a457a[_0xc3dc('0x45')]=_0x1a457a[_0xc3dc('0x45')][_0xc3dc('0x46')]?_0x1a457a[_0xc3dc('0x45')]:_0x15901b[_0xc3dc('0x41')];_0x1a457a[_0xc3dc('0x49')]=qs[_0xc3dc('0x4a')](_0x13bb07[_0xc3dc('0x42')]['sort']);_0x1a457a['where']=qs[_0xc3dc('0x4b')](_['pick'](_0x13bb07[_0xc3dc('0x42')],_0x15901b[_0xc3dc('0x4b')]));if(_0x13bb07[_0xc3dc('0x42')][_0xc3dc('0x4c')]){_0x1a457a[_0xc3dc('0x4e')]=_[_0xc3dc('0x4d')](_0x1a457a['where'],{'$or':_[_0xc3dc('0x3e')](_0x1a457a[_0xc3dc('0x45')],function(_0x27205d){var _0x573212={};_0x573212[_0x27205d]={'$like':'%'+_0x13bb07[_0xc3dc('0x42')][_0xc3dc('0x4c')]+'%'};return _0x573212;})});}_0x1a457a=_[_0xc3dc('0x4d')]({},_0x1a457a,_0x13bb07[_0xc3dc('0x51')]);return _0x32a99[_0xc3dc('0x82')](_0x1a457a);}})[_0xc3dc('0x22')](function(_0x28907b){if(_0x28907b){_0x3378b7=_0x28907b[_0xc3dc('0x46')];if(!_0x13bb07[_0xc3dc('0x42')][_0xc3dc('0x68')](_0xc3dc('0x47'))){_0x1a457a[_0xc3dc('0x48')]=qs[_0xc3dc('0x48')](_0x13bb07['query'][_0xc3dc('0x48')]);_0x1a457a[_0xc3dc('0x2f')]=qs[_0xc3dc('0x2f')](_0x13bb07[_0xc3dc('0x42')][_0xc3dc('0x2f')]);}return _0x32a99[_0xc3dc('0x82')](_0x1a457a);}})[_0xc3dc('0x22')](function(_0x2e1601){if(_0x2e1601){return _0x2e1601?{'count':_0x3378b7,'rows':_0x2e1601}:null;}})['then'](respondWithResult(_0x4248bf,null))[_0xc3dc('0x54')](handleError(_0x4248bf,null));};exports[_0xc3dc('0x83')]=function(_0x4906d9,_0x461a40,_0x4fa336){var _0x55cd88={'channel':_0xc3dc('0x84')};var _0x4e8974=[];var _0x3339ae=[];var _0x3fceeb={};return db[_0xc3dc('0x3f')]['find']({'where':{'id':_0x4906d9['params']['id']},'include':[{'model':db[_0xc3dc('0x7f')],'as':_0xc3dc('0x85')}]})[_0xc3dc('0x22')](handleEntityNotFound(_0x461a40,null))[_0xc3dc('0x22')](function(_0x2eef40){_0x55cd88[_0xc3dc('0x86')]=_0x2eef40;if(_0x55cd88[_0xc3dc('0x86')]&&_0x55cd88[_0xc3dc('0x86')][_0xc3dc('0x4f')]===_0xc3dc('0x87')&&_0x4906d9[_0xc3dc('0x62')][_0xc3dc('0x88')]){if(_0x4906d9[_0xc3dc('0x62')][_0xc3dc('0x88')][_0xc3dc('0x46')]===0x0)return;if(_0x4906d9[_0xc3dc('0x62')][_0xc3dc('0x88')][0x0][_0xc3dc('0x89')]!=='read')return;return db[_0xc3dc('0x8a')][_0xc3dc('0x8b')]({'read':!![],'readAt':_0x4906d9[_0xc3dc('0x62')]['statuses'][0x0]['timestamp']},{'where':{'messageId':_0x4906d9[_0xc3dc('0x62')][_0xc3dc('0x88')][0x0][_0xc3dc('0x8c')]},'individualHooks':!![]})[_0xc3dc('0x22')](function(_0x5c87e1){return _0x461a40['status'](0xc8)[_0xc3dc('0x2e')](_0x5c87e1);});}_0x55cd88[_0xc3dc('0x8d')]=_[_0xc3dc('0x8e')](_0x2eef40[_0xc3dc('0x85')],['priority'],['asc']);if(_0x55cd88[_0xc3dc('0x86')]['Applications']){delete _0x55cd88[_0xc3dc('0x86')][_0xc3dc('0x85')];}return db['CmContact'][_0xc3dc('0x63')]()[_0xc3dc('0x22')](function(_0x466914){if(!_0x466914){throw new db[(_0xc3dc('0x8f'))][(_0xc3dc('0x90'))](_0xc3dc('0x91'));}_0x4e8974=_['difference'](_['keys'](_0x466914),[_0xc3dc('0x92'),'updatedAt']);_0x3339ae=_[_0xc3dc('0x93')](_[_0xc3dc('0x43')](_0x466914),[_0xc3dc('0x92'),_0xc3dc('0x94'),_0xc3dc('0x95'),'ListId']);_0x55cd88[_0xc3dc('0x62')]={'mapKey':_0xc3dc('0x96')};if(_0x55cd88[_0xc3dc('0x86')]&&_0x55cd88['account'][_0xc3dc('0x4f')]==='twilio'){_0x55cd88[_0xc3dc('0x62')][_0xc3dc('0x97')]=_0x4906d9[_0xc3dc('0x62')][_0xc3dc('0x98')][_0xc3dc('0x99')](_0xc3dc('0x9a'),'');_0x55cd88[_0xc3dc('0x62')][_0xc3dc('0x62')]=_0x4906d9[_0xc3dc('0x62')][_0xc3dc('0x9b')];_0x55cd88[_0xc3dc('0x62')][_0xc3dc('0x9c')]=_0x4906d9[_0xc3dc('0x62')]['MessageSid'];}if(_0x55cd88[_0xc3dc('0x86')]&&_0x55cd88['account'][_0xc3dc('0x4f')]===_0xc3dc('0x87')){_0x55cd88[_0xc3dc('0x62')][_0xc3dc('0x97')]=_0x4906d9[_0xc3dc('0x62')][_0xc3dc('0x9d')][0x0][_0xc3dc('0x97')];_0x55cd88[_0xc3dc('0x62')][_0xc3dc('0x62')]=_0x4906d9[_0xc3dc('0x62')][_0xc3dc('0x9d')][0x0][_0xc3dc('0x2b')]['body'];_0x55cd88['body'][_0xc3dc('0x9c')]=_0x4906d9[_0xc3dc('0x62')][_0xc3dc('0x9d')][0x0]['message_id'];}if(_0x55cd88[_0xc3dc('0x62')]['id']){delete _0x55cd88['body']['id'];}if(_['isNil'](_0x55cd88[_0xc3dc('0x62')]['from'])){throw new db['Sequelize'][(_0xc3dc('0x90'))](_0xc3dc('0x9e'));}if(_['isNil'](_0x55cd88[_0xc3dc('0x62')][_0xc3dc('0x62')])||_0x55cd88['body'][_0xc3dc('0x62')]===''){throw new db[(_0xc3dc('0x8f'))][(_0xc3dc('0x90'))](_0xc3dc('0x9f'));}if(_[_0xc3dc('0xa0')](_0x55cd88['body'][_0xc3dc('0xa1')])){throw new db[(_0xc3dc('0x8f'))][(_0xc3dc('0x90'))]('mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x3339ae);}if(!_['includes'](_0x3339ae,_0x55cd88['body'][_0xc3dc('0xa1')])){throw new db[(_0xc3dc('0x8f'))][(_0xc3dc('0x90'))](_0xc3dc('0xa2')+_0x3339ae);}_0x3fceeb[_0x55cd88[_0xc3dc('0x62')][_0xc3dc('0xa1')]]=_0x55cd88[_0xc3dc('0x62')][_0xc3dc('0x97')];return db[_0xc3dc('0xa3')][_0xc3dc('0x5f')]({'where':{'id':_0x55cd88[_0xc3dc('0x86')]['ListId']},'include':[{'model':db[_0xc3dc('0xa4')],'as':_0xc3dc('0xa5'),'where':_0x3fceeb,'limit':0x1,'order':[[_0xc3dc('0x94'),_0xc3dc('0xa6')]]}]});})['then'](handleEntityNotFound(_0x461a40,null))['then'](function(_0x1a08e0){if(_0x1a08e0){_0x55cd88[_0xc3dc('0xa7')]=_[_0xc3dc('0xa8')](_0x1a08e0,[_0xc3dc('0xa5')]);if(_0x1a08e0[_0xc3dc('0xa5')][_0xc3dc('0x46')]){return _0x1a08e0[_0xc3dc('0xa5')][0x0];}var _0x47129b=_[_0xc3dc('0x1b')](_0x55cd88['body'],{'firstName':_0x55cd88[_0xc3dc('0x62')][_0xc3dc('0x97')],'ListId':_0x1a08e0['id']});_0x47129b[_0x55cd88[_0xc3dc('0x62')]['mapKey']]=_0x55cd88['body'][_0xc3dc('0x97')];return db[_0xc3dc('0xa4')][_0xc3dc('0x59')](_0x47129b,{'fields':_0x4e8974,'raw':!![]});}})['then'](handleEntityNotFound(_0x461a40,null))['then'](function(_0x42dd92){if(_0x42dd92){_0x55cd88['contact']=_0x42dd92;var _0xc7653={'ContactId':_0x42dd92['id'],'phone':_0x55cd88[_0xc3dc('0x62')]['from'],'WhatsappAccountId':_0x4906d9[_0xc3dc('0x56')]['id']};var _0x224664={'ContactId':_0x42dd92['id'],'WhatsappAccountId':_0x4906d9[_0xc3dc('0x56')]['id'],'closed':![]};return db[_0xc3dc('0xa9')]['find']({'where':_0x224664})[_0xc3dc('0x22')](function(_0x3c7422){if(_0x3c7422){return[_0x3c7422,![]];}return db[_0xc3dc('0xa9')]['create'](_0xc7653)[_0xc3dc('0x22')](function(_0x3dee5c){return[_0x3dee5c,!![]];});});}})['spread'](function(_0x40ba42,_0xd923ff){_0x55cd88['interaction']=_0x40ba42[_0xc3dc('0x5b')]({'plain':!![]});_0x55cd88['interaction'][_0xc3dc('0xaa')]=![];if(_0xd923ff){if(_0x55cd88[_0xc3dc('0x86')][_0xc3dc('0xab')]){_0x55cd88[_0xc3dc('0x8d')][_0xc3dc('0xac')]({'id':0x0,'priority':_0x55cd88[_0xc3dc('0x8d')][_0xc3dc('0x46')]+0x1,'app':_0xc3dc('0xad'),'appdata':_0xc3dc('0xae'),'interval':_0xc3dc('0xaf')});}_0x55cd88[_0xc3dc('0xb0')][_0xc3dc('0xaa')]=!![];}return db[_0xc3dc('0x8a')][_0xc3dc('0x59')]({'phone':_0x55cd88['body'][_0xc3dc('0x97')],'messageId':_0x55cd88['body'][_0xc3dc('0x9c')],'body':_0x55cd88['body'][_0xc3dc('0x62')],'WhatsappAccountId':_0x4906d9[_0xc3dc('0x56')]['id'],'WhatsappInteractionId':_0x40ba42['id'],'direction':'in','ContactId':_0x40ba42[_0xc3dc('0xb1')],'AttachmentId':_0x55cd88[_0xc3dc('0x62')][_0xc3dc('0xb2')]});})[_0xc3dc('0x22')](function(_0x22848b){_0x55cd88['message']=_0x22848b;if(_0x55cd88['interaction']['UserId']){return db[_0xc3dc('0x79')]['find']({'attributes':['id',_0xc3dc('0x3b')],'where':{'id':_0x55cd88['interaction'][_0xc3dc('0xb3')]}})[_0xc3dc('0x22')](function(_0x45002f){if(_0x45002f){_0x55cd88[_0xc3dc('0x8d')]['unshift']({'id':0x0,'priority':0x0,'app':_0xc3dc('0xb4'),'appdata':_0x45002f[_0xc3dc('0x3b')]+','+(_0x55cd88[_0xc3dc('0x86')][_0xc3dc('0xb5')]||0xa),'interval':_0xc3dc('0xaf')});}return respondWithRpcPromise(_0xc3dc('0xb6'),_0xc3dc('0xb7'),_0x55cd88);});}return respondWithRpcPromise(_0xc3dc('0xb6'),'startRouting',_0x55cd88);})[_0xc3dc('0x22')](function(_0xc908db){if(_0xc908db){var _0x4f9ef1=0xc8;var _0x8bec67=_0xc3dc('0xb8');logger['info'](_0xc3dc('0x26'),_0x8bec67,_0x4f9ef1,_0xc3dc('0xb9'));logger[_0xc3dc('0x25')](_0xc3dc('0xba'),_0x8bec67,_0x4f9ef1,'entity\x20found',JSON['stringify'](_0xc908db));if(_0x55cd88[_0xc3dc('0x86')][_0xc3dc('0x4f')]==='twilio'){return _0x461a40[_0xc3dc('0x39')](_0x4f9ef1)[_0xc3dc('0x32')](_0xc3dc('0xbb'),'text/xml')[_0xc3dc('0x81')]('<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>');}else{return _0x461a40[_0xc3dc('0x39')](_0x4f9ef1)['json'](_0xc908db);}}});})[_0xc3dc('0x54')](handleError(_0x461a40,null));};exports[_0xc3dc('0x81')]=function(_0x595cfc,_0x2f1598,_0x631ab7){var _0x3cf135,_0x26bc62,_0x2c73aa;if(_[_0xc3dc('0xa0')](_0x595cfc[_0xc3dc('0x62')][_0xc3dc('0x62')])||_0x595cfc['body'][_0xc3dc('0x62')]===''){throw new db[(_0xc3dc('0x8f'))]['ValidationError']('body\x20is\x20mandatory\x20and\x20not\x20empty');}if(_[_0xc3dc('0xa0')](_0x595cfc['body']['to'])){throw new db['Sequelize']['ValidationError']('to\x20is\x20mandatory');}_0x3cf135=_0x595cfc[_0xc3dc('0x62')]['to'];return db[_0xc3dc('0x3f')][_0xc3dc('0x5f')]({'where':{'id':_0x595cfc['params']['id']},'include':[{'model':db[_0xc3dc('0xa3')],'as':_0xc3dc('0xbc'),'include':[{'model':db[_0xc3dc('0xa4')],'as':_0xc3dc('0xa5'),'where':{'mobile':_0x3cf135},'limit':0x1,'order':[[_0xc3dc('0x94'),_0xc3dc('0xa6')]]}]}]})[_0xc3dc('0x22')](handleEntityNotFound(_0x2f1598,null))['then'](function(_0x23ee11){if(_0x23ee11&&_0x23ee11[_0xc3dc('0xbc')]){_0x26bc62=_0x23ee11[_0xc3dc('0x5b')]({'plain':!![]});if(_0x26bc62[_0xc3dc('0xbc')]&&_0x26bc62[_0xc3dc('0xbc')]['Contacts'][_0xc3dc('0x46')]){return _0x26bc62[_0xc3dc('0xbc')][_0xc3dc('0xa5')][0x0];}return db[_0xc3dc('0xa4')][_0xc3dc('0x59')](_[_0xc3dc('0x1b')](_0x595cfc['body'],{'firstName':_0x3cf135,'mobile':_0x3cf135,'phone':_0x3cf135,'ListId':_0x26bc62[_0xc3dc('0xbd')]}));}})[_0xc3dc('0x22')](handleEntityNotFound(_0x2f1598,null))['then'](function(_0xbf13ab){if(_0xbf13ab){_0x2c73aa=_0xbf13ab;return db[_0xc3dc('0xa9')]['find']({'where':{'ContactId':_0x2c73aa['id'],'closed':![],'WhatsappAccountId':_0x26bc62['id']}})[_0xc3dc('0x22')](function(_0x2dcc6c){if(_0x2dcc6c){return[_0x2dcc6c,![]];}return db['WhatsappInteraction'][_0xc3dc('0x59')]({'UserId':_0x595cfc[_0xc3dc('0x5a')]['id'],'ContactId':_0x2c73aa['id'],'WhatsappAccountId':_0x26bc62['id'],'phone':_0x3cf135,'firstMsgDirection':_0xc3dc('0xbe'),'Messages':[_[_0xc3dc('0x4d')](_0x595cfc[_0xc3dc('0x62')],{'read':![],'body':_0x595cfc[_0xc3dc('0x62')][_0xc3dc('0x62')],'phone':_0x3cf135,'WhatsappAccountId':_0x26bc62['id'],'UserId':_0x595cfc[_0xc3dc('0x5a')]['id'],'ContactId':_0x2c73aa['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':_0xc3dc('0xbf')}]})[_0xc3dc('0x22')](function(_0x4884dc){return[_0x4884dc,!![]];});});}})['spread'](function(_0x4e6c5f,_0x39f60f){if(_0x39f60f){return _0x4e6c5f;}return db[_0xc3dc('0x8a')][_0xc3dc('0x59')](_[_0xc3dc('0x4d')](_0x595cfc['body'],{'read':![],'body':_0x595cfc[_0xc3dc('0x62')][_0xc3dc('0x62')],'phone':_0x3cf135,'WhatsappAccountId':_0x26bc62['id'],'WhatsappInteractionId':_0x4e6c5f['id'],'UserId':_0x595cfc['user']['id'],'ContactId':_0x2c73aa['id']}))[_0xc3dc('0x22')](function(_0x3e2161){_0x4e6c5f[_0xc3dc('0xc0')]['Messages']=[];_0x4e6c5f[_0xc3dc('0xc0')][_0xc3dc('0xbf')][_0xc3dc('0xac')](_0x3e2161[_0xc3dc('0xc0')]);return _0x4e6c5f;});})[_0xc3dc('0x22')](respondWithResult(_0x2f1598,null))[_0xc3dc('0x54')](handleError(_0x2f1598,null));};
\ No newline at end of file
+var _0x54cb=['Start','receiveMessage','WhatsappAccount,\x20%s,\x20%s,\x20%s,\x20%s','Content-Type','<?xml\x20version=\x221.0\x22\x20encoding=\x22UTF-8\x22?>\x0a<Response></Response>','to\x20is\x20mandatory','CmList','List','out','Messages','dataValues','push','zip-dir','request-promise','moment','bluebird','sox','to-csv','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappAccount.socket','register','jayson/promise','client','http','then','info','WhatsappAccount,\x20%s,\x20%s','request\x20sent','debug','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','sendStatus','status','end','json','offset','undefined','limit','count','set','apply','reject','destroy','get','WhatsappAccounts','UserProfileResource','stack','name','send','map','WhatsappAccount','rawAttributes','type','key','model','keys','query','intersection','fields','attributes','length','nolimit','order','sort','filters','pick','filter','where','merge','options','includeAll','rows','catch','show','params','Pause','mandatoryDispositionPause','include','find','create','body','user','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','userProfileId','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','update','describe','addDisposition','getDispositions','Disposition','WhatsappAccountId','findAll','removeDispositions','ids','CannedAnswer','getAnswers','hasOwnProperty','removeAnswers','addAgents','omit','emit','userWhatsappAccount:save','removeAgents','userWhatsappAccount:remove','getAgents','findOne','User','addApplications','Transaction','ISOLATION_LEVELS','WhatsappApplication','bulkCreate','priority','getApplications','notify','whatsapp','Applications','account','sinch','statuses','state','read','WhatsappMessage','timestamp','message_id','applications','orderBy','asc','CmContact','Sequelize','no\x20available\x20attributes','createdAt','updatedAt','CompanyId','ListId','mobile','twilio','from','From','whatsapp:','messageId','notifications','ValidationError','isNil','body\x20is\x20mandatory\x20and\x20not\x20empty','mapKey','mapKey\x20is\x20mandatory,\x20please\x20use\x20one\x20of\x20these:\x20','Contacts','DESC','list','WhatsappInteraction','spread','interaction','autoclose','close','created','ContactId','AttachmentId','UserId','unshift','agent','waitForTheAssignedAgent'];(function(_0x3e4e55,_0x50cdae){var _0x48ec77=function(_0x188e5a){while(--_0x188e5a){_0x3e4e55['push'](_0x3e4e55['shift']());}};_0x48ec77(++_0x50cdae);}(_0x54cb,0x184));var _0xb54c=function(_0x408b3e,_0xdc5ff9){_0x408b3e=_0x408b3e-0x0;var _0x1e2b7f=_0x54cb[_0x408b3e];return _0x1e2b7f;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xb54c('0x0'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb54c('0x1'));var moment=require(_0xb54c('0x2'));var BPromise=require(_0xb54c('0x3'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require(_0xb54c('0x4'));var csv=require(_0xb54c('0x5'));var ejs=require(_0xb54c('0x6'));var fs=require('fs');var fs_extra=require(_0xb54c('0x7'));var _=require(_0xb54c('0x8'));var squel=require(_0xb54c('0x9'));var crypto=require('crypto');var jsforce=require(_0xb54c('0xa'));var deskjs=require(_0xb54c('0xb'));var toCsv=require(_0xb54c('0x5'));var querystring=require(_0xb54c('0xc'));var Papa=require(_0xb54c('0xd'));var Redis=require(_0xb54c('0xe'));var authService=require(_0xb54c('0xf'));var qs=require(_0xb54c('0x10'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb54c('0x11'));var logger=require(_0xb54c('0x12'))(_0xb54c('0x13'));var utils=require(_0xb54c('0x14'));var config=require('../../config/environment');var licenseUtil=require(_0xb54c('0x15'));var db=require(_0xb54c('0x16'))['db'];config[_0xb54c('0x17')]=_[_0xb54c('0x18')](config[_0xb54c('0x17')],{'host':_0xb54c('0x19'),'port':0x18eb});var socket=require(_0xb54c('0x1a'))(new Redis(config[_0xb54c('0x17')]));require(_0xb54c('0x1b'))[_0xb54c('0x1c')](socket);var jayson=require(_0xb54c('0x1d'));var client=jayson[_0xb54c('0x1e')][_0xb54c('0x1f')]({'port':0x232c});function respondWithRpcPromise(_0x1262e3,_0x3273ef,_0x38c249,_0x1a33d7){return new BPromise(function(_0x503a72,_0x1ac92e){var _0x5a5a37=_0x1a33d7||client;return _0x5a5a37['request'](_0x1262e3,_0x38c249)[_0xb54c('0x20')](function(_0x5760c7){logger[_0xb54c('0x21')](_0xb54c('0x22'),_0x3273ef,_0xb54c('0x23'));logger[_0xb54c('0x24')](_0xb54c('0x25'),_0x3273ef,_0xb54c('0x23'),JSON[_0xb54c('0x26')](_0x5760c7));if(_0x5760c7['error']){if(_0x5760c7[_0xb54c('0x27')][_0xb54c('0x28')]===0x1f4){logger[_0xb54c('0x27')](_0xb54c('0x22'),_0x3273ef,_0x5760c7[_0xb54c('0x27')][_0xb54c('0x29')]);return _0x1ac92e(_0x5760c7[_0xb54c('0x27')][_0xb54c('0x29')]);}logger[_0xb54c('0x27')]('WhatsappAccount,\x20%s,\x20%s',_0x3273ef,_0x5760c7[_0xb54c('0x27')][_0xb54c('0x29')]);return _0x503a72(_0x5760c7[_0xb54c('0x27')]['message']);}else{logger['info'](_0xb54c('0x22'),_0x3273ef,'request\x20sent');_0x503a72(_0x5760c7[_0xb54c('0x2a')][_0xb54c('0x29')]);}})['catch'](function(_0x47168b){logger[_0xb54c('0x27')](_0xb54c('0x22'),_0x3273ef,_0x47168b);_0x1ac92e(_0x47168b);});});}function respondWithStatusCode(_0x143df0,_0x1d3002){_0x1d3002=_0x1d3002||0xcc;return function(_0x456420){if(_0x456420){return _0x143df0[_0xb54c('0x2b')](_0x1d3002);}return _0x143df0[_0xb54c('0x2c')](_0x1d3002)[_0xb54c('0x2d')]();};}function respondWithResult(_0x59e9ed,_0x11de34){_0x11de34=_0x11de34||0xc8;return function(_0x57c659){if(_0x57c659){return _0x59e9ed[_0xb54c('0x2c')](_0x11de34)[_0xb54c('0x2e')](_0x57c659);}};}function respondWithFilteredResult(_0xf57467,_0x4b7cd1){return function(_0xf20dae){if(_0xf20dae){var _0x19ece1=typeof _0x4b7cd1[_0xb54c('0x2f')]===_0xb54c('0x30')&&typeof _0x4b7cd1[_0xb54c('0x31')]===_0xb54c('0x30');var _0xa75330=_0xf20dae[_0xb54c('0x32')];var _0x17fbaa=_0x19ece1?0x0:_0x4b7cd1[_0xb54c('0x2f')];var _0x5e27e4=_0x19ece1?_0xf20dae['count']:_0x4b7cd1['offset']+_0x4b7cd1[_0xb54c('0x31')];var _0x2b6fd1;if(_0x5e27e4>=_0xa75330){_0x5e27e4=_0xa75330;_0x2b6fd1=0xc8;}else{_0x2b6fd1=0xce;}_0xf57467[_0xb54c('0x2c')](_0x2b6fd1);return _0xf57467[_0xb54c('0x33')]('Content-Range',_0x17fbaa+'-'+_0x5e27e4+'/'+_0xa75330)[_0xb54c('0x2e')](_0xf20dae);}return null;};}function patchUpdates(_0x28b348){return function(_0x33f262){try{jsonpatch[_0xb54c('0x34')](_0x33f262,_0x28b348,!![]);}catch(_0x354e71){return BPromise[_0xb54c('0x35')](_0x354e71);}return _0x33f262['save']();};}function saveUpdates(_0x2e61db,_0x5969dd){return function(_0x2c2d63){if(_0x2c2d63){return _0x2c2d63['update'](_0x2e61db)[_0xb54c('0x20')](function(_0x107c7f){return _0x107c7f;});}return null;};}function removeEntity(_0x14b91e,_0x308d5c){return function(_0x233159){if(_0x233159){return _0x233159[_0xb54c('0x36')]()[_0xb54c('0x20')](function(){var _0x2d3cf4=_0x233159[_0xb54c('0x37')]({'plain':!![]});var _0x1e7014=_0xb54c('0x38');return db[_0xb54c('0x39')]['destroy']({'where':{'type':_0x1e7014,'resourceId':_0x2d3cf4['id']}})[_0xb54c('0x20')](function(){return _0x233159;});})['then'](function(){_0x14b91e[_0xb54c('0x2c')](0xcc)['end']();});}};}function handleEntityNotFound(_0x103428,_0x334d5f){return function(_0x2cca1f){if(!_0x2cca1f){_0x103428[_0xb54c('0x2b')](0x194);}return _0x2cca1f;};}function handleError(_0x3078ee,_0x4cec1b){_0x4cec1b=_0x4cec1b||0x1f4;return function(_0x5bc126){logger['error'](_0x5bc126[_0xb54c('0x3a')]);if(_0x5bc126[_0xb54c('0x3b')]){delete _0x5bc126['name'];}_0x3078ee[_0xb54c('0x2c')](_0x4cec1b)[_0xb54c('0x3c')](_0x5bc126);};}exports['index']=function(_0x422be0,_0x4372f7){var _0x5bed88={'include':[{'model':db['Pause'],'as':'mandatoryDispositionPause'}]},_0x1b0336={},_0x543cd9={'count':0x0,'rows':[]};var _0xe8ad99=_[_0xb54c('0x3d')](db[_0xb54c('0x3e')][_0xb54c('0x3f')],function(_0x59baf8){return{'name':_0x59baf8['fieldName'],'type':_0x59baf8[_0xb54c('0x40')][_0xb54c('0x41')]};});_0x1b0336[_0xb54c('0x42')]=_[_0xb54c('0x3d')](_0xe8ad99,_0xb54c('0x3b'));_0x1b0336['query']=_[_0xb54c('0x43')](_0x422be0[_0xb54c('0x44')]);_0x1b0336['filters']=_[_0xb54c('0x45')](_0x1b0336[_0xb54c('0x42')],_0x1b0336[_0xb54c('0x44')]);_0x5bed88['attributes']=_[_0xb54c('0x45')](_0x1b0336[_0xb54c('0x42')],qs[_0xb54c('0x46')](_0x422be0[_0xb54c('0x44')][_0xb54c('0x46')]));_0x5bed88['attributes']=_0x5bed88[_0xb54c('0x47')][_0xb54c('0x48')]?_0x5bed88[_0xb54c('0x47')]:_0x1b0336[_0xb54c('0x42')];if(!_0x422be0[_0xb54c('0x44')]['hasOwnProperty'](_0xb54c('0x49'))){_0x5bed88[_0xb54c('0x31')]=qs[_0xb54c('0x31')](_0x422be0[_0xb54c('0x44')]['limit']);_0x5bed88[_0xb54c('0x2f')]=qs[_0xb54c('0x2f')](_0x422be0[_0xb54c('0x44')][_0xb54c('0x2f')]);}_0x5bed88[_0xb54c('0x4a')]=qs[_0xb54c('0x4b')](_0x422be0[_0xb54c('0x44')][_0xb54c('0x4b')]);_0x5bed88['where']=qs[_0xb54c('0x4c')](_[_0xb54c('0x4d')](_0x422be0[_0xb54c('0x44')],_0x1b0336[_0xb54c('0x4c')]),_0xe8ad99);if(_0x422be0[_0xb54c('0x44')][_0xb54c('0x4e')]){_0x5bed88[_0xb54c('0x4f')]=_[_0xb54c('0x50')](_0x5bed88[_0xb54c('0x4f')],{'$or':_[_0xb54c('0x3d')](_0xe8ad99,function(_0x1c93c7){if(_0x1c93c7[_0xb54c('0x40')]!=='VIRTUAL'){var _0x392138={};_0x392138[_0x1c93c7[_0xb54c('0x3b')]]={'$like':'%'+_0x422be0[_0xb54c('0x44')][_0xb54c('0x4e')]+'%'};return _0x392138;}})});}_0x5bed88=_[_0xb54c('0x50')]({},_0x5bed88,_0x422be0[_0xb54c('0x51')]);var _0x168e86={'where':_0x5bed88['where']};return db[_0xb54c('0x3e')][_0xb54c('0x32')](_0x168e86)[_0xb54c('0x20')](function(_0x2b9744){_0x543cd9[_0xb54c('0x32')]=_0x2b9744;if(_0x422be0[_0xb54c('0x44')][_0xb54c('0x52')]){_0x5bed88['include']=[{'all':!![]}];}return db[_0xb54c('0x3e')]['findAll'](_0x5bed88);})['then'](function(_0x1f048e){_0x543cd9[_0xb54c('0x53')]=_0x1f048e;return _0x543cd9;})[_0xb54c('0x20')](respondWithFilteredResult(_0x4372f7,_0x5bed88))[_0xb54c('0x54')](handleError(_0x4372f7,null));};exports[_0xb54c('0x55')]=function(_0x25539a,_0x217f0c){var _0x314f8b={'raw':![],'where':{'id':_0x25539a[_0xb54c('0x56')]['id']},'include':[{'model':db[_0xb54c('0x57')],'as':_0xb54c('0x58')}]},_0x3c604c={};_0x3c604c[_0xb54c('0x42')]=_['keys'](db[_0xb54c('0x3e')][_0xb54c('0x3f')]);_0x3c604c[_0xb54c('0x44')]=_[_0xb54c('0x43')](_0x25539a[_0xb54c('0x44')]);_0x3c604c['filters']=_['intersection'](_0x3c604c[_0xb54c('0x42')],_0x3c604c[_0xb54c('0x44')]);_0x314f8b[_0xb54c('0x47')]=_[_0xb54c('0x45')](_0x3c604c['model'],qs[_0xb54c('0x46')](_0x25539a['query'][_0xb54c('0x46')]));_0x314f8b[_0xb54c('0x47')]=_0x314f8b['attributes'][_0xb54c('0x48')]?_0x314f8b[_0xb54c('0x47')]:_0x3c604c[_0xb54c('0x42')];if(_0x25539a[_0xb54c('0x44')][_0xb54c('0x52')]){_0x314f8b[_0xb54c('0x59')]=[{'all':!![]}];}_0x314f8b=_[_0xb54c('0x50')]({},_0x314f8b,_0x25539a['options']);return db[_0xb54c('0x3e')][_0xb54c('0x5a')](_0x314f8b)[_0xb54c('0x20')](handleEntityNotFound(_0x217f0c,null))[_0xb54c('0x20')](respondWithResult(_0x217f0c,null))[_0xb54c('0x54')](handleError(_0x217f0c,null));};exports[_0xb54c('0x5b')]=function(_0x50a48b,_0x5a8449){return db['WhatsappAccount'][_0xb54c('0x5b')](_0x50a48b[_0xb54c('0x5c')],{})[_0xb54c('0x20')](function(_0x490282){var _0x2e03e4=_0x50a48b[_0xb54c('0x5d')][_0xb54c('0x37')]({'plain':!![]});if(!_0x2e03e4)throw new Error(_0xb54c('0x5e'));if(_0x2e03e4[_0xb54c('0x5f')]===_0xb54c('0x5d')){var _0x2d1d50=_0x490282['get']({'plain':!![]});var _0x50775b=_0xb54c('0x38');return db[_0xb54c('0x60')][_0xb54c('0x5a')]({'where':{'name':_0x50775b,'userProfileId':_0x2e03e4[_0xb54c('0x61')]},'raw':!![]})['then'](function(_0x4a5145){if(_0x4a5145&&_0x4a5145['autoAssociation']===0x0){return db[_0xb54c('0x39')][_0xb54c('0x5b')]({'name':_0x2d1d50[_0xb54c('0x3b')],'resourceId':_0x2d1d50['id'],'type':_0x4a5145[_0xb54c('0x3b')],'sectionId':_0x4a5145['id']},{})[_0xb54c('0x20')](function(){return _0x490282;});}else{return _0x490282;}})['catch'](function(_0x2b3356){logger[_0xb54c('0x27')](_0xb54c('0x62'),_0x2b3356);throw _0x2b3356;});}return _0x490282;})[_0xb54c('0x20')](respondWithResult(_0x5a8449,0xc9))[_0xb54c('0x54')](handleError(_0x5a8449,null));};exports[_0xb54c('0x63')]=function(_0x21abd1,_0x55dbd5){if(_0x21abd1[_0xb54c('0x5c')]['id']){delete _0x21abd1[_0xb54c('0x5c')]['id'];}return db[_0xb54c('0x3e')]['find']({'where':{'id':_0x21abd1[_0xb54c('0x56')]['id']},'include':[{'model':db[_0xb54c('0x57')],'as':_0xb54c('0x58')}]})['then'](handleEntityNotFound(_0x55dbd5,null))[_0xb54c('0x20')](saveUpdates(_0x21abd1['body'],null))['then'](respondWithResult(_0x55dbd5,null))[_0xb54c('0x54')](handleError(_0x55dbd5,null));};exports[_0xb54c('0x36')]=function(_0x189640,_0xa7df99){return db[_0xb54c('0x3e')]['find']({'where':{'id':_0x189640['params']['id']}})['then'](handleEntityNotFound(_0xa7df99,null))[_0xb54c('0x20')](removeEntity(_0xa7df99,null))['catch'](handleError(_0xa7df99,null));};exports[_0xb54c('0x64')]=function(_0x4d9a7f,_0x1331ee){return db[_0xb54c('0x3e')][_0xb54c('0x64')]()[_0xb54c('0x20')](respondWithResult(_0x1331ee,null))[_0xb54c('0x54')](handleError(_0x1331ee,null));};exports[_0xb54c('0x65')]=function(_0x321b7a,_0x21c971,_0x5d1e0f){if(_0x321b7a[_0xb54c('0x5c')]['id']){delete _0x321b7a[_0xb54c('0x5c')]['id'];}return db[_0xb54c('0x3e')]['find']({'where':{'id':_0x321b7a[_0xb54c('0x56')]['id']}})[_0xb54c('0x20')](handleEntityNotFound(_0x21c971,null))['then'](function(_0x4008fa){if(_0x4008fa){_0x321b7a['body']['WhatsappAccountId']=_0x4008fa['id'];return db['Disposition'][_0xb54c('0x5b')](_0x321b7a['body']);}})[_0xb54c('0x20')](respondWithResult(_0x21c971,null))[_0xb54c('0x54')](handleError(_0x21c971,null));};exports[_0xb54c('0x66')]=function(_0x2f6a00,_0xa75b29,_0x41be24){var _0x6330a3={'raw':![],'where':{}};var _0xebd449={};var _0x158c2c={'count':0x0,'rows':[]};return db[_0xb54c('0x3e')]['findOne']({'where':{'id':_0x2f6a00[_0xb54c('0x56')]['id']}})[_0xb54c('0x20')](handleEntityNotFound(_0xa75b29,null))[_0xb54c('0x20')](function(_0x2836be){if(_0x2836be){_0xebd449['model']=_[_0xb54c('0x43')](db[_0xb54c('0x67')][_0xb54c('0x3f')]);_0xebd449[_0xb54c('0x44')]=_[_0xb54c('0x43')](_0x2f6a00['query']);_0xebd449[_0xb54c('0x4c')]=_['intersection'](_0xebd449[_0xb54c('0x42')],_0xebd449[_0xb54c('0x44')]);_0x6330a3[_0xb54c('0x47')]=_[_0xb54c('0x45')](_0xebd449[_0xb54c('0x42')],qs[_0xb54c('0x46')](_0x2f6a00['query'][_0xb54c('0x46')]));_0x6330a3[_0xb54c('0x47')]=_0x6330a3[_0xb54c('0x47')][_0xb54c('0x48')]?_0x6330a3[_0xb54c('0x47')]:_0xebd449[_0xb54c('0x42')];if(!_0x2f6a00[_0xb54c('0x44')]['hasOwnProperty']('nolimit')){_0x6330a3[_0xb54c('0x31')]=qs['limit'](_0x2f6a00[_0xb54c('0x44')]['limit']);_0x6330a3['offset']=qs[_0xb54c('0x2f')](_0x2f6a00[_0xb54c('0x44')][_0xb54c('0x2f')]);}_0x6330a3[_0xb54c('0x4a')]=qs[_0xb54c('0x4b')](_0x2f6a00['query'][_0xb54c('0x4b')]);_0x6330a3[_0xb54c('0x4f')]=qs['filters'](_[_0xb54c('0x4d')](_0x2f6a00[_0xb54c('0x44')],_0xebd449['filters']));_0x6330a3[_0xb54c('0x4f')][_0xb54c('0x68')]=_0x2836be['id'];if(_0x2f6a00[_0xb54c('0x44')][_0xb54c('0x4e')]){_0x6330a3[_0xb54c('0x4f')]=_['merge'](_0x6330a3['where'],{'$or':_['map'](_0x6330a3[_0xb54c('0x47')],function(_0x41cd88){var _0x865ced={};_0x865ced[_0x41cd88]={'$like':'%'+_0x2f6a00[_0xb54c('0x44')]['filter']+'%'};return _0x865ced;})});}_0x6330a3=_[_0xb54c('0x50')]({},_0x6330a3,_0x2f6a00['options']);return db[_0xb54c('0x67')]['count']({'where':_0x6330a3['where']})['then'](function(_0x341cd2){_0x158c2c[_0xb54c('0x32')]=_0x341cd2;if(_0x2f6a00[_0xb54c('0x44')][_0xb54c('0x52')]){_0x6330a3[_0xb54c('0x59')]=[{'all':!![]}];}return db['Disposition'][_0xb54c('0x69')](_0x6330a3);})[_0xb54c('0x20')](function(_0x1b580d){_0x158c2c['rows']=_0x1b580d;return _0x158c2c;});}})[_0xb54c('0x20')](respondWithFilteredResult(_0xa75b29,_0x6330a3))['catch'](handleError(_0xa75b29,null));};exports['removeDispositions']=function(_0x38f802,_0x10627f,_0x1efa17){return db[_0xb54c('0x3e')][_0xb54c('0x5a')]({'where':{'id':_0x38f802['params']['id']}})[_0xb54c('0x20')](handleEntityNotFound(_0x10627f,null))[_0xb54c('0x20')](function(_0xa1daf4){if(_0xa1daf4){return _0xa1daf4[_0xb54c('0x6a')](_0x38f802['query'][_0xb54c('0x6b')]);}})['then'](respondWithStatusCode(_0x10627f,null))['catch'](handleError(_0x10627f,null));};exports['addAnswer']=function(_0x41203c,_0x4e759f,_0x24c93a){if(_0x41203c[_0xb54c('0x5c')]['id']){delete _0x41203c[_0xb54c('0x5c')]['id'];}return db[_0xb54c('0x3e')]['find']({'where':{'id':_0x41203c[_0xb54c('0x56')]['id']}})[_0xb54c('0x20')](handleEntityNotFound(_0x4e759f,null))[_0xb54c('0x20')](function(_0x1d8c28){if(_0x1d8c28){_0x41203c['body'][_0xb54c('0x68')]=_0x1d8c28['id'];return db[_0xb54c('0x6c')][_0xb54c('0x5b')](_0x41203c[_0xb54c('0x5c')]);}})[_0xb54c('0x20')](respondWithResult(_0x4e759f,null))[_0xb54c('0x54')](handleError(_0x4e759f,null));};exports[_0xb54c('0x6d')]=function(_0x420b0c,_0x2d56d7,_0x3c5f3e){var _0x2d0dad={'raw':![],'where':{}};var _0x1a6223={};var _0x4a0f06={'count':0x0,'rows':[]};return db['WhatsappAccount']['findOne']({'where':{'id':_0x420b0c[_0xb54c('0x56')]['id']}})['then'](handleEntityNotFound(_0x2d56d7,null))['then'](function(_0x1c5835){if(_0x1c5835){_0x1a6223[_0xb54c('0x42')]=_[_0xb54c('0x43')](db[_0xb54c('0x6c')][_0xb54c('0x3f')]);_0x1a6223[_0xb54c('0x44')]=_[_0xb54c('0x43')](_0x420b0c[_0xb54c('0x44')]);_0x1a6223['filters']=_[_0xb54c('0x45')](_0x1a6223[_0xb54c('0x42')],_0x1a6223[_0xb54c('0x44')]);_0x2d0dad[_0xb54c('0x47')]=_[_0xb54c('0x45')](_0x1a6223[_0xb54c('0x42')],qs[_0xb54c('0x46')](_0x420b0c[_0xb54c('0x44')][_0xb54c('0x46')]));_0x2d0dad[_0xb54c('0x47')]=_0x2d0dad[_0xb54c('0x47')][_0xb54c('0x48')]?_0x2d0dad[_0xb54c('0x47')]:_0x1a6223['model'];if(!_0x420b0c[_0xb54c('0x44')][_0xb54c('0x6e')](_0xb54c('0x49'))){_0x2d0dad['limit']=qs['limit'](_0x420b0c[_0xb54c('0x44')]['limit']);_0x2d0dad[_0xb54c('0x2f')]=qs[_0xb54c('0x2f')](_0x420b0c[_0xb54c('0x44')][_0xb54c('0x2f')]);}_0x2d0dad[_0xb54c('0x4a')]=qs[_0xb54c('0x4b')](_0x420b0c[_0xb54c('0x44')]['sort']);_0x2d0dad[_0xb54c('0x4f')]=qs[_0xb54c('0x4c')](_[_0xb54c('0x4d')](_0x420b0c[_0xb54c('0x44')],_0x1a6223[_0xb54c('0x4c')]));_0x2d0dad['where'][_0xb54c('0x68')]=_0x1c5835['id'];if(_0x420b0c[_0xb54c('0x44')][_0xb54c('0x4e')]){_0x2d0dad[_0xb54c('0x4f')]=_[_0xb54c('0x50')](_0x2d0dad[_0xb54c('0x4f')],{'$or':_[_0xb54c('0x3d')](_0x2d0dad[_0xb54c('0x47')],function(_0x5d0a6d){var _0x2bd4be={};_0x2bd4be[_0x5d0a6d]={'$like':'%'+_0x420b0c['query']['filter']+'%'};return _0x2bd4be;})});}_0x2d0dad=_[_0xb54c('0x50')]({},_0x2d0dad,_0x420b0c['options']);return db['CannedAnswer'][_0xb54c('0x32')]({'where':_0x2d0dad[_0xb54c('0x4f')]})[_0xb54c('0x20')](function(_0x416a78){_0x4a0f06[_0xb54c('0x32')]=_0x416a78;if(_0x420b0c['query'][_0xb54c('0x52')]){_0x2d0dad[_0xb54c('0x59')]=[{'all':!![]}];}return db[_0xb54c('0x6c')][_0xb54c('0x69')](_0x2d0dad);})[_0xb54c('0x20')](function(_0x37e39e){_0x4a0f06['rows']=_0x37e39e;return _0x4a0f06;});}})[_0xb54c('0x20')](respondWithFilteredResult(_0x2d56d7,_0x2d0dad))[_0xb54c('0x54')](handleError(_0x2d56d7,null));};exports[_0xb54c('0x6f')]=function(_0x3f5a88,_0x95f686,_0x3b1da4){return db[_0xb54c('0x3e')][_0xb54c('0x5a')]({'where':{'id':_0x3f5a88[_0xb54c('0x56')]['id']}})[_0xb54c('0x20')](handleEntityNotFound(_0x95f686,null))['then'](function(_0x4984f8){if(_0x4984f8){return _0x4984f8['removeAnswers'](_0x3f5a88['query'][_0xb54c('0x6b')]);}})[_0xb54c('0x20')](respondWithStatusCode(_0x95f686,null))[_0xb54c('0x54')](handleError(_0x95f686,null));};exports[_0xb54c('0x70')]=function(_0x561c4a,_0x4bf77e,_0x16474a){return db[_0xb54c('0x3e')][_0xb54c('0x5a')]({'where':{'id':_0x561c4a[_0xb54c('0x56')]['id']}})[_0xb54c('0x20')](handleEntityNotFound(_0x4bf77e,null))['then'](function(_0x42cc12){if(_0x42cc12){return _0x42cc12[_0xb54c('0x70')](_0x561c4a[_0xb54c('0x5c')][_0xb54c('0x6b')],_[_0xb54c('0x71')](_0x561c4a[_0xb54c('0x5c')],['ids','id'])||{})['spread'](function(_0x1d42ba){for(var _0x5905cc=0x0;_0x5905cc<_0x561c4a['body'][_0xb54c('0x6b')]['length'];_0x5905cc+=0x1){socket[_0xb54c('0x72')](_0xb54c('0x73'),{'UserId':Number(_0x561c4a['body'][_0xb54c('0x6b')][_0x5905cc]),'WhatsappAccountId':Number(_0x561c4a[_0xb54c('0x56')]['id'])});}return _0x1d42ba;});}})[_0xb54c('0x20')](respondWithResult(_0x4bf77e,null))['catch'](handleError(_0x4bf77e,null));};exports[_0xb54c('0x74')]=function(_0x10a257,_0x40a00c,_0x39163e){return db[_0xb54c('0x3e')][_0xb54c('0x5a')]({'where':{'id':_0x10a257[_0xb54c('0x56')]['id']}})[_0xb54c('0x20')](handleEntityNotFound(_0x40a00c,null))[_0xb54c('0x20')](function(_0x2e747c){if(_0x2e747c){return _0x2e747c['removeAgents'](_0x10a257[_0xb54c('0x44')]['ids'])['then'](function(){if(_['isArray'](_0x10a257['query'][_0xb54c('0x6b')])){for(var _0x52cb28=0x0;_0x52cb28<_0x10a257['query'][_0xb54c('0x6b')][_0xb54c('0x48')];_0x52cb28+=0x1){socket[_0xb54c('0x72')](_0xb54c('0x75'),{'UserId':Number(_0x10a257[_0xb54c('0x44')][_0xb54c('0x6b')][_0x52cb28]),'WhatsappAccountId':Number(_0x10a257[_0xb54c('0x56')]['id'])});}}else{socket['emit'](_0xb54c('0x75'),{'UserId':Number(_0x10a257['query'][_0xb54c('0x6b')]),'WhatsappAccountId':Number(_0x10a257['params']['id'])});}});}})['then'](respondWithStatusCode(_0x40a00c,null))[_0xb54c('0x54')](handleError(_0x40a00c,null));};exports[_0xb54c('0x76')]=function(_0x3e05d9,_0x29ab16,_0x2a6022){var _0x41d59b={};var _0x5a3b8a={};var _0x592c31;var _0x305635;return db[_0xb54c('0x3e')][_0xb54c('0x77')]({'where':{'id':_0x3e05d9[_0xb54c('0x56')]['id']}})[_0xb54c('0x20')](handleEntityNotFound(_0x29ab16,null))['then'](function(_0x9855ad){if(_0x9855ad){_0x592c31=_0x9855ad;_0x5a3b8a[_0xb54c('0x42')]=_[_0xb54c('0x43')](db[_0xb54c('0x78')][_0xb54c('0x3f')]);_0x5a3b8a['query']=_[_0xb54c('0x43')](_0x3e05d9[_0xb54c('0x44')]);_0x5a3b8a[_0xb54c('0x4c')]=_['intersection'](_0x5a3b8a[_0xb54c('0x42')],_0x5a3b8a[_0xb54c('0x44')]);_0x41d59b['attributes']=_[_0xb54c('0x45')](_0x5a3b8a['model'],qs['fields'](_0x3e05d9['query']['fields']));_0x41d59b[_0xb54c('0x47')]=_0x41d59b[_0xb54c('0x47')][_0xb54c('0x48')]?_0x41d59b[_0xb54c('0x47')]:_0x5a3b8a[_0xb54c('0x42')];_0x41d59b[_0xb54c('0x4a')]=qs[_0xb54c('0x4b')](_0x3e05d9[_0xb54c('0x44')][_0xb54c('0x4b')]);_0x41d59b[_0xb54c('0x4f')]=qs[_0xb54c('0x4c')](_[_0xb54c('0x4d')](_0x3e05d9[_0xb54c('0x44')],_0x5a3b8a[_0xb54c('0x4c')]));if(_0x3e05d9['query'][_0xb54c('0x4e')]){_0x41d59b[_0xb54c('0x4f')]=_['merge'](_0x41d59b['where'],{'$or':_[_0xb54c('0x3d')](_0x41d59b[_0xb54c('0x47')],function(_0x2a1e7c){var _0xd53b4d={};_0xd53b4d[_0x2a1e7c]={'$like':'%'+_0x3e05d9[_0xb54c('0x44')][_0xb54c('0x4e')]+'%'};return _0xd53b4d;})});}_0x41d59b=_[_0xb54c('0x50')]({},_0x41d59b,_0x3e05d9[_0xb54c('0x51')]);return _0x592c31[_0xb54c('0x76')](_0x41d59b);}})[_0xb54c('0x20')](function(_0x57ef73){if(_0x57ef73){_0x305635=_0x57ef73['length'];if(!_0x3e05d9['query'][_0xb54c('0x6e')](_0xb54c('0x49'))){_0x41d59b['limit']=qs['limit'](_0x3e05d9[_0xb54c('0x44')][_0xb54c('0x31')]);_0x41d59b[_0xb54c('0x2f')]=qs[_0xb54c('0x2f')](_0x3e05d9['query'][_0xb54c('0x2f')]);}return _0x592c31[_0xb54c('0x76')](_0x41d59b);}})[_0xb54c('0x20')](function(_0x2d860d){if(_0x2d860d){return _0x2d860d?{'count':_0x305635,'rows':_0x2d860d}:null;}})[_0xb54c('0x20')](respondWithResult(_0x29ab16,null))['catch'](handleError(_0x29ab16,null));};exports[_0xb54c('0x79')]=function(_0x38d680,_0x21c360){var _0x1e51bb=_0x38d680[_0xb54c('0x56')]['id'];var _0x2a51f9=_0x38d680[_0xb54c('0x5c')];var _0x34a87a=0xc8;var _0x36e5ab=null;return db['sequelize']['transaction']({'isolationLevel':db['sequelize'][_0xb54c('0x7a')][_0xb54c('0x7b')]['READ_COMMITTED']},function(_0x4c363d){return db[_0xb54c('0x3e')][_0xb54c('0x77')]({'where':{'id':_0x1e51bb},'transaction':_0x4c363d})[_0xb54c('0x20')](function(_0xfa854a){if(_0xfa854a){return db['WhatsappApplication'][_0xb54c('0x36')]({'where':{'WhatsappAccountId':_0x1e51bb},'transaction':_0x4c363d})[_0xb54c('0x20')](function(){var _0x20d9a9=_[_0xb54c('0x3d')](_0x2a51f9,function(_0x3cc362){_0x3cc362[_0xb54c('0x68')]=_0x1e51bb;return _0x3cc362;});return db[_0xb54c('0x7c')][_0xb54c('0x7d')](_0x20d9a9,{'transaction':_0x4c363d});});}else{_0x34a87a=0x194;_0x36e5ab=[];}});})['then'](function(){if(_0x34a87a!==0x194){return db['WhatsappApplication']['findAndCountAll']({'where':{'WhatsappAccountId':_0x1e51bb},'order':_0xb54c('0x7e')})[_0xb54c('0x20')](function(_0x5cd67c){_0x36e5ab=_0x5cd67c;});}})[_0xb54c('0x54')](function(_0x32f81a){_0x34a87a=0x1f4;logger[_0xb54c('0x27')](_0x32f81a[_0xb54c('0x3a')]);if(_0x32f81a[_0xb54c('0x3b')]){delete _0x32f81a[_0xb54c('0x3b')];}_0x36e5ab=_0x32f81a;})['finally'](function(){if(_0x36e5ab===null){_0x21c360[_0xb54c('0x2b')](_0x34a87a);}else{if(_0x34a87a===0x1f4){_0x21c360[_0xb54c('0x2c')](_0x34a87a)[_0xb54c('0x3c')](_0x36e5ab);}else{_0x21c360[_0xb54c('0x2c')](_0x34a87a)[_0xb54c('0x2e')](_0x36e5ab);}}});};exports[_0xb54c('0x7f')]=function(_0x48d3b4,_0x5ca407,_0x379eaa){var _0x1492ed={};var _0x1be869={};var _0x24f678;var _0x555fc2;return db[_0xb54c('0x3e')][_0xb54c('0x77')]({'where':{'id':_0x48d3b4[_0xb54c('0x56')]['id']}})[_0xb54c('0x20')](handleEntityNotFound(_0x5ca407,null))[_0xb54c('0x20')](function(_0x37909e){if(_0x37909e){_0x24f678=_0x37909e;_0x1be869[_0xb54c('0x42')]=_[_0xb54c('0x43')](db['WhatsappApplication'][_0xb54c('0x3f')]);_0x1be869[_0xb54c('0x44')]=_[_0xb54c('0x43')](_0x48d3b4['query']);_0x1be869[_0xb54c('0x4c')]=_['intersection'](_0x1be869[_0xb54c('0x42')],_0x1be869[_0xb54c('0x44')]);_0x1492ed['attributes']=_[_0xb54c('0x45')](_0x1be869[_0xb54c('0x42')],qs[_0xb54c('0x46')](_0x48d3b4['query'][_0xb54c('0x46')]));_0x1492ed['attributes']=_0x1492ed['attributes'][_0xb54c('0x48')]?_0x1492ed['attributes']:_0x1be869[_0xb54c('0x42')];_0x1492ed[_0xb54c('0x4a')]=qs[_0xb54c('0x4b')](_0x48d3b4[_0xb54c('0x44')][_0xb54c('0x4b')]);_0x1492ed[_0xb54c('0x4f')]=qs[_0xb54c('0x4c')](_[_0xb54c('0x4d')](_0x48d3b4[_0xb54c('0x44')],_0x1be869[_0xb54c('0x4c')]));if(_0x48d3b4[_0xb54c('0x44')][_0xb54c('0x4e')]){_0x1492ed[_0xb54c('0x4f')]=_[_0xb54c('0x50')](_0x1492ed[_0xb54c('0x4f')],{'$or':_['map'](_0x1492ed['attributes'],function(_0x10e162){var _0x5d46bd={};_0x5d46bd[_0x10e162]={'$like':'%'+_0x48d3b4['query'][_0xb54c('0x4e')]+'%'};return _0x5d46bd;})});}_0x1492ed=_[_0xb54c('0x50')]({},_0x1492ed,_0x48d3b4[_0xb54c('0x51')]);return _0x24f678[_0xb54c('0x7f')](_0x1492ed);}})[_0xb54c('0x20')](function(_0x28e389){if(_0x28e389){_0x555fc2=_0x28e389['length'];if(!_0x48d3b4[_0xb54c('0x44')][_0xb54c('0x6e')](_0xb54c('0x49'))){_0x1492ed[_0xb54c('0x31')]=qs[_0xb54c('0x31')](_0x48d3b4[_0xb54c('0x44')][_0xb54c('0x31')]);_0x1492ed[_0xb54c('0x2f')]=qs[_0xb54c('0x2f')](_0x48d3b4[_0xb54c('0x44')][_0xb54c('0x2f')]);}return _0x24f678[_0xb54c('0x7f')](_0x1492ed);}})['then'](function(_0x128b86){if(_0x128b86){return _0x128b86?{'count':_0x555fc2,'rows':_0x128b86}:null;}})['then'](respondWithResult(_0x5ca407,null))[_0xb54c('0x54')](handleError(_0x5ca407,null));};exports[_0xb54c('0x80')]=function(_0x45c043,_0x4ea1b1,_0x21156b){var _0x541a16={'channel':_0xb54c('0x81')};var _0x38a827=[];var _0x13542b=[];var _0xeca160={};return db['WhatsappAccount'][_0xb54c('0x5a')]({'where':{'id':_0x45c043[_0xb54c('0x56')]['id']},'include':[{'model':db[_0xb54c('0x7c')],'as':_0xb54c('0x82')}]})[_0xb54c('0x20')](handleEntityNotFound(_0x4ea1b1,null))[_0xb54c('0x20')](function(_0x38e41c){_0x541a16['account']=_0x38e41c;if(_0x541a16[_0xb54c('0x83')]&&_0x541a16[_0xb54c('0x83')][_0xb54c('0x40')]===_0xb54c('0x84')&&_0x45c043[_0xb54c('0x5c')][_0xb54c('0x85')]){if(_0x45c043['body'][_0xb54c('0x85')]['length']===0x0)return;if(_0x45c043[_0xb54c('0x5c')]['statuses'][0x0][_0xb54c('0x86')]!==_0xb54c('0x87'))return;return db[_0xb54c('0x88')]['update']({'read':!![],'readAt':_0x45c043['body'][_0xb54c('0x85')][0x0][_0xb54c('0x89')]},{'where':{'messageId':_0x45c043[_0xb54c('0x5c')]['statuses'][0x0][_0xb54c('0x8a')]},'individualHooks':!![]})[_0xb54c('0x20')](function(_0x5f540d){return _0x4ea1b1[_0xb54c('0x2c')](0xc8)[_0xb54c('0x2e')](_0x5f540d);});}_0x541a16[_0xb54c('0x8b')]=_[_0xb54c('0x8c')](_0x38e41c['Applications'],[_0xb54c('0x7e')],[_0xb54c('0x8d')]);if(_0x541a16['account']['Applications']){delete _0x541a16['account']['Applications'];}return db[_0xb54c('0x8e')][_0xb54c('0x64')]()[_0xb54c('0x20')](function(_0x95a025){if(!_0x95a025){throw new db[(_0xb54c('0x8f'))]['ValidationError'](_0xb54c('0x90'));}_0x38a827=_['difference'](_[_0xb54c('0x43')](_0x95a025),[_0xb54c('0x91'),_0xb54c('0x92')]);_0x13542b=_['difference'](_[_0xb54c('0x43')](_0x95a025),[_0xb54c('0x91'),'updatedAt',_0xb54c('0x93'),_0xb54c('0x94')]);_0x541a16['body']={'mapKey':_0xb54c('0x95')};if(_0x541a16['account']&&_0x541a16[_0xb54c('0x83')]['type']===_0xb54c('0x96')){_0x541a16[_0xb54c('0x5c')][_0xb54c('0x97')]=_0x45c043[_0xb54c('0x5c')][_0xb54c('0x98')]['replace'](_0xb54c('0x99'),'');_0x541a16[_0xb54c('0x5c')][_0xb54c('0x5c')]=_0x45c043[_0xb54c('0x5c')]['Body'];_0x541a16[_0xb54c('0x5c')][_0xb54c('0x9a')]=_0x45c043[_0xb54c('0x5c')]['MessageSid'];}if(_0x541a16['account']&&_0x541a16[_0xb54c('0x83')][_0xb54c('0x40')]==='sinch'){_0x541a16[_0xb54c('0x5c')][_0xb54c('0x97')]=_0x45c043[_0xb54c('0x5c')][_0xb54c('0x9b')][0x0][_0xb54c('0x97')];_0x541a16['body']['body']=_0x45c043[_0xb54c('0x5c')]['notifications'][0x0]['message'][_0xb54c('0x5c')];_0x541a16['body']['messageId']=_0x45c043[_0xb54c('0x5c')][_0xb54c('0x9b')][0x0]['message_id'];}if(_0x541a16[_0xb54c('0x5c')]['id']){delete _0x541a16['body']['id'];}if(_['isNil'](_0x541a16[_0xb54c('0x5c')][_0xb54c('0x97')])){throw new db[(_0xb54c('0x8f'))][(_0xb54c('0x9c'))]('from\x20is\x20mandatory');}if(_[_0xb54c('0x9d')](_0x541a16['body'][_0xb54c('0x5c')])||_0x541a16['body']['body']===''){throw new db[(_0xb54c('0x8f'))][(_0xb54c('0x9c'))](_0xb54c('0x9e'));}if(_[_0xb54c('0x9d')](_0x541a16[_0xb54c('0x5c')][_0xb54c('0x9f')])){throw new db['Sequelize']['ValidationError'](_0xb54c('0xa0')+_0x13542b);}if(!_['includes'](_0x13542b,_0x541a16['body'][_0xb54c('0x9f')])){throw new db[(_0xb54c('0x8f'))][(_0xb54c('0x9c'))]('mapKey\x20invalid,\x20please\x20use\x20one\x20of\x20these:\x20'+_0x13542b);}_0xeca160[_0x541a16[_0xb54c('0x5c')]['mapKey']]=_0x541a16[_0xb54c('0x5c')][_0xb54c('0x97')];return db['CmList']['find']({'where':{'id':_0x541a16[_0xb54c('0x83')][_0xb54c('0x94')]},'include':[{'model':db[_0xb54c('0x8e')],'as':_0xb54c('0xa1'),'where':_0xeca160,'limit':0x1,'order':[[_0xb54c('0x92'),_0xb54c('0xa2')]]}]});})['then'](handleEntityNotFound(_0x4ea1b1,null))[_0xb54c('0x20')](function(_0x592d2f){if(_0x592d2f){_0x541a16[_0xb54c('0xa3')]=_[_0xb54c('0x71')](_0x592d2f,[_0xb54c('0xa1')]);if(_0x592d2f[_0xb54c('0xa1')][_0xb54c('0x48')]){return _0x592d2f[_0xb54c('0xa1')][0x0];}var _0x32b52a=_['defaults'](_0x541a16['body'],{'firstName':_0x541a16['body'][_0xb54c('0x97')],'ListId':_0x592d2f['id']});_0x32b52a[_0x541a16[_0xb54c('0x5c')]['mapKey']]=_0x541a16['body'][_0xb54c('0x97')];return db[_0xb54c('0x8e')]['create'](_0x32b52a,{'fields':_0x38a827,'raw':!![]});}})[_0xb54c('0x20')](handleEntityNotFound(_0x4ea1b1,null))['then'](function(_0x2ec8c8){if(_0x2ec8c8){_0x541a16['contact']=_0x2ec8c8;var _0x42d569={'ContactId':_0x2ec8c8['id'],'phone':_0x541a16[_0xb54c('0x5c')][_0xb54c('0x97')],'WhatsappAccountId':_0x45c043[_0xb54c('0x56')]['id']};var _0x2d0874={'ContactId':_0x2ec8c8['id'],'WhatsappAccountId':_0x45c043[_0xb54c('0x56')]['id'],'closed':![]};return db[_0xb54c('0xa4')][_0xb54c('0x5a')]({'where':_0x2d0874})[_0xb54c('0x20')](function(_0x2e9adc){if(_0x2e9adc){return[_0x2e9adc,![]];}return db[_0xb54c('0xa4')][_0xb54c('0x5b')](_0x42d569)[_0xb54c('0x20')](function(_0x1aaf1f){return[_0x1aaf1f,!![]];});});}})[_0xb54c('0xa5')](function(_0x2a8f1f,_0x378ef5){_0x541a16['interaction']=_0x2a8f1f[_0xb54c('0x37')]({'plain':!![]});_0x541a16[_0xb54c('0xa6')]['created']=![];if(_0x378ef5){if(_0x541a16[_0xb54c('0x83')][_0xb54c('0xa7')]){_0x541a16[_0xb54c('0x8b')]['push']({'id':0x0,'priority':_0x541a16[_0xb54c('0x8b')]['length']+0x1,'app':_0xb54c('0xa8'),'appdata':'unmanaged','interval':'*,*,*,*'});}_0x541a16['interaction'][_0xb54c('0xa9')]=!![];}return db[_0xb54c('0x88')][_0xb54c('0x5b')]({'phone':_0x541a16[_0xb54c('0x5c')][_0xb54c('0x97')],'messageId':_0x541a16[_0xb54c('0x5c')][_0xb54c('0x9a')],'body':_0x541a16[_0xb54c('0x5c')]['body'],'WhatsappAccountId':_0x45c043[_0xb54c('0x56')]['id'],'WhatsappInteractionId':_0x2a8f1f['id'],'direction':'in','ContactId':_0x2a8f1f[_0xb54c('0xaa')],'AttachmentId':_0x541a16[_0xb54c('0x5c')][_0xb54c('0xab')]});})[_0xb54c('0x20')](function(_0x455539){_0x541a16[_0xb54c('0x29')]=_0x455539;if(_0x541a16[_0xb54c('0xa6')][_0xb54c('0xac')]){return db['User']['find']({'attributes':['id',_0xb54c('0x3b')],'where':{'id':_0x541a16[_0xb54c('0xa6')][_0xb54c('0xac')]}})[_0xb54c('0x20')](function(_0x4f0c79){if(_0x4f0c79){_0x541a16[_0xb54c('0x8b')][_0xb54c('0xad')]({'id':0x0,'priority':0x0,'app':_0xb54c('0xae'),'appdata':_0x4f0c79[_0xb54c('0x3b')]+','+(_0x541a16['account'][_0xb54c('0xaf')]||0xa),'interval':'*,*,*,*'});}return respondWithRpcPromise(_0xb54c('0xb0'),'startRouting',_0x541a16);});}return respondWithRpcPromise(_0xb54c('0xb0'),'startRouting',_0x541a16);})[_0xb54c('0x20')](function(_0x184426){if(_0x184426){var _0x40eb62=0xc8;var _0xe53495=_0xb54c('0xb1');logger['info']('WhatsappAccount,\x20%s,\x20%s,\x20%s',_0xe53495,_0x40eb62,'entity\x20found');logger['debug'](_0xb54c('0xb2'),_0xe53495,_0x40eb62,'entity\x20found',JSON[_0xb54c('0x26')](_0x184426));if(_0x541a16['account']['type']===_0xb54c('0x96')){return _0x4ea1b1['status'](_0x40eb62)['set'](_0xb54c('0xb3'),'text/xml')[_0xb54c('0x3c')](_0xb54c('0xb4'));}else{return _0x4ea1b1[_0xb54c('0x2c')](_0x40eb62)[_0xb54c('0x2e')](_0x184426);}}});})[_0xb54c('0x54')](handleError(_0x4ea1b1,null));};exports[_0xb54c('0x3c')]=function(_0x2e69c3,_0xab4ba8,_0x69e513){var _0xfc1c9f,_0x364d0f,_0x55c815;if(_[_0xb54c('0x9d')](_0x2e69c3[_0xb54c('0x5c')][_0xb54c('0x5c')])||_0x2e69c3[_0xb54c('0x5c')]['body']===''){throw new db[(_0xb54c('0x8f'))][(_0xb54c('0x9c'))](_0xb54c('0x9e'));}if(_['isNil'](_0x2e69c3[_0xb54c('0x5c')]['to'])){throw new db[(_0xb54c('0x8f'))]['ValidationError'](_0xb54c('0xb5'));}_0xfc1c9f=_0x2e69c3[_0xb54c('0x5c')]['to'];return db[_0xb54c('0x3e')][_0xb54c('0x5a')]({'where':{'id':_0x2e69c3['params']['id']},'include':[{'model':db[_0xb54c('0xb6')],'as':_0xb54c('0xb7'),'include':[{'model':db[_0xb54c('0x8e')],'as':'Contacts','where':{'mobile':_0xfc1c9f},'limit':0x1,'order':[[_0xb54c('0x92'),_0xb54c('0xa2')]]}]}]})['then'](handleEntityNotFound(_0xab4ba8,null))['then'](function(_0x2b4174){if(_0x2b4174&&_0x2b4174[_0xb54c('0xb7')]){_0x364d0f=_0x2b4174[_0xb54c('0x37')]({'plain':!![]});if(_0x364d0f['List']&&_0x364d0f[_0xb54c('0xb7')][_0xb54c('0xa1')][_0xb54c('0x48')]){return _0x364d0f[_0xb54c('0xb7')][_0xb54c('0xa1')][0x0];}return db[_0xb54c('0x8e')]['create'](_[_0xb54c('0x18')](_0x2e69c3[_0xb54c('0x5c')],{'firstName':_0xfc1c9f,'mobile':_0xfc1c9f,'phone':_0xfc1c9f,'ListId':_0x364d0f[_0xb54c('0x94')]}));}})[_0xb54c('0x20')](handleEntityNotFound(_0xab4ba8,null))[_0xb54c('0x20')](function(_0x179c62){if(_0x179c62){_0x55c815=_0x179c62;return db['WhatsappInteraction'][_0xb54c('0x5a')]({'where':{'ContactId':_0x55c815['id'],'closed':![],'WhatsappAccountId':_0x364d0f['id']}})[_0xb54c('0x20')](function(_0xffedde){if(_0xffedde){return[_0xffedde,![]];}return db[_0xb54c('0xa4')][_0xb54c('0x5b')]({'UserId':_0x2e69c3[_0xb54c('0x5d')]['id'],'ContactId':_0x55c815['id'],'WhatsappAccountId':_0x364d0f['id'],'phone':_0xfc1c9f,'firstMsgDirection':_0xb54c('0xb8'),'Messages':[_[_0xb54c('0x50')](_0x2e69c3[_0xb54c('0x5c')],{'read':![],'body':_0x2e69c3[_0xb54c('0x5c')][_0xb54c('0x5c')],'phone':_0xfc1c9f,'WhatsappAccountId':_0x364d0f['id'],'UserId':_0x2e69c3[_0xb54c('0x5d')]['id'],'ContactId':_0x55c815['id']})]},{'include':[{'model':db['WhatsappMessage'],'as':_0xb54c('0xb9')}]})['then'](function(_0x3583ce){return[_0x3583ce,!![]];});});}})['spread'](function(_0x1d9f7c,_0xb296c9){if(_0xb296c9){return _0x1d9f7c;}return db['WhatsappMessage'][_0xb54c('0x5b')](_[_0xb54c('0x50')](_0x2e69c3[_0xb54c('0x5c')],{'read':![],'body':_0x2e69c3[_0xb54c('0x5c')][_0xb54c('0x5c')],'phone':_0xfc1c9f,'WhatsappAccountId':_0x364d0f['id'],'WhatsappInteractionId':_0x1d9f7c['id'],'UserId':_0x2e69c3[_0xb54c('0x5d')]['id'],'ContactId':_0x55c815['id']}))[_0xb54c('0x20')](function(_0x202cfc){_0x1d9f7c[_0xb54c('0xba')][_0xb54c('0xb9')]=[];_0x1d9f7c[_0xb54c('0xba')][_0xb54c('0xb9')][_0xb54c('0xbb')](_0x202cfc['dataValues']);return _0x1d9f7c;});})['then'](respondWithResult(_0xab4ba8,null))[_0xb54c('0x54')](handleError(_0xab4ba8,null));};
\ No newline at end of file
index 596214b..a9851e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x553d=['update','remove','emit','hasOwnProperty','hook','exports','../../mysqldb','WhatsappAccount','setMaxListeners'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x553d,0x16e));var _0xd553=function(_0x3af9c7,_0x44289b){_0x3af9c7=_0x3af9c7-0x0;var _0x1ad392=_0x553d[_0x3af9c7];return _0x1ad392;};'use strict';var EventEmitter=require('events');var WhatsappAccount=require(_0xd553('0x0'))['db'][_0xd553('0x1')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0xd553('0x2')](0x0);var events={'afterCreate':'save','afterUpdate':_0xd553('0x3'),'afterDestroy':_0xd553('0x4')};function emitEvent(_0x51e6da){return function(_0x1f7321,_0x111911,_0xa0044a){WhatsappAccountEvents['emit'](_0x51e6da+':'+_0x1f7321['id'],_0x1f7321);WhatsappAccountEvents[_0xd553('0x5')](_0x51e6da,_0x1f7321);_0xa0044a(null);};}for(var e in events){if(events[_0xd553('0x6')](e)){var event=events[e];WhatsappAccount[_0xd553('0x7')](e,emitEvent(event));}}module[_0xd553('0x8')]=WhatsappAccountEvents;
\ No newline at end of file
+var _0xac7b=['hasOwnProperty','hook','events','../../mysqldb','WhatsappAccount','setMaxListeners','save','update','remove','emit'];(function(_0x1b4322,_0xecb205){var _0x16ba0c=function(_0x1a5498){while(--_0x1a5498){_0x1b4322['push'](_0x1b4322['shift']());}};_0x16ba0c(++_0xecb205);}(_0xac7b,0x17e));var _0xbac7=function(_0x15a8ca,_0x242aa8){_0x15a8ca=_0x15a8ca-0x0;var _0x20e43f=_0xac7b[_0x15a8ca];return _0x20e43f;};'use strict';var EventEmitter=require(_0xbac7('0x0'));var WhatsappAccount=require(_0xbac7('0x1'))['db'][_0xbac7('0x2')];var WhatsappAccountEvents=new EventEmitter();WhatsappAccountEvents[_0xbac7('0x3')](0x0);var events={'afterCreate':_0xbac7('0x4'),'afterUpdate':_0xbac7('0x5'),'afterDestroy':_0xbac7('0x6')};function emitEvent(_0x1ecc5a){return function(_0x2915f0,_0x3b72f8,_0x5b07a7){WhatsappAccountEvents[_0xbac7('0x7')](_0x1ecc5a+':'+_0x2915f0['id'],_0x2915f0);WhatsappAccountEvents[_0xbac7('0x7')](_0x1ecc5a,_0x2915f0);_0x5b07a7(null);};}for(var e in events){if(events[_0xbac7('0x8')](e)){var event=events[e];WhatsappAccount[_0xbac7('0x9')](e,emitEvent(event));}}module['exports']=WhatsappAccountEvents;
\ No newline at end of file
index 53816f5..9be1707 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1021=['request-promise','./whatsappAccount.attributes','define','WhatsappAccount','whatsapp_accounts','lodash','util','api','moment','bluebird'];(function(_0x6a4faf,_0x3aa856){var _0x3bdbcc=function(_0x2d77ee){while(--_0x2d77ee){_0x6a4faf['push'](_0x6a4faf['shift']());}};_0x3bdbcc(++_0x3aa856);}(_0x1021,0xcd));var _0x1102=function(_0x478978,_0x287bd7){_0x478978=_0x478978-0x0;var _0x48cac6=_0x1021[_0x478978];return _0x48cac6;};'use strict';var _=require(_0x1102('0x0'));var util=require(_0x1102('0x1'));var logger=require('../../config/logger')(_0x1102('0x2'));var moment=require(_0x1102('0x3'));var BPromise=require(_0x1102('0x4'));var rp=require(_0x1102('0x5'));var fs=require('fs');var path=require('path');var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require(_0x1102('0x6'));module['exports']=function(_0x3afd64,_0xafcde2){return _0x3afd64[_0x1102('0x7')](_0x1102('0x8'),attributes,{'tableName':_0x1102('0x9'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0x2f1d=['WhatsappAccount','whatsapp_accounts','lodash','util','../../config/logger','api','moment','bluebird','request-promise','path','define'];(function(_0x369790,_0x3660bb){var _0x43e9f3=function(_0x47017c){while(--_0x47017c){_0x369790['push'](_0x369790['shift']());}};_0x43e9f3(++_0x3660bb);}(_0x2f1d,0x199));var _0xd2f1=function(_0xc8a931,_0x260690){_0xc8a931=_0xc8a931-0x0;var _0x28bd27=_0x2f1d[_0xc8a931];return _0x28bd27;};'use strict';var _=require(_0xd2f1('0x0'));var util=require(_0xd2f1('0x1'));var logger=require(_0xd2f1('0x2'))(_0xd2f1('0x3'));var moment=require(_0xd2f1('0x4'));var BPromise=require(_0xd2f1('0x5'));var rp=require(_0xd2f1('0x6'));var fs=require('fs');var path=require(_0xd2f1('0x7'));var rimraf=require('rimraf');var config=require('../../config/environment');var attributes=require('./whatsappAccount.attributes');module['exports']=function(_0x56ca79,_0xfa8095){return _0x56ca79[_0xd2f1('0x8')](_0xd2f1('0x9'),attributes,{'tableName':_0xd2f1('0xa'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index ce6f63b..00f2cbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9446=['jayson/promise','client','http','defaults','localhost','redis','./whatsappAccount.socket','register','then','info','WhatsappAccount,\x20%s,\x20%s','WhatsappAccount,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','ShowWhatsappAccount','WhatsappAccount','find','options','raw','where','attributes','include','model','map','lodash','bluebird','randomstring','ioredis','../../mysqldb','../../config/logger','rpc','../../config/environment'];(function(_0x343350,_0x142daa){var _0x5844cc=function(_0x4bb29e){while(--_0x4bb29e){_0x343350['push'](_0x343350['shift']());}};_0x5844cc(++_0x142daa);}(_0x9446,0xb1));var _0x6944=function(_0x4bcb2e,_0x4d2b87){_0x4bcb2e=_0x4bcb2e-0x0;var _0x35848b=_0x9446[_0x4bcb2e];return _0x35848b;};'use strict';var _=require(_0x6944('0x0'));var util=require('util');var moment=require('moment');var BPromise=require(_0x6944('0x1'));var rs=require(_0x6944('0x2'));var fs=require('fs');var Redis=require(_0x6944('0x3'));var db=require(_0x6944('0x4'))['db'];var utils=require('../../config/utils');var logger=require(_0x6944('0x5'))(_0x6944('0x6'));var config=require(_0x6944('0x7'));var jayson=require(_0x6944('0x8'));var client=jayson[_0x6944('0x9')][_0x6944('0xa')]({'port':0x232a});config['redis']=_[_0x6944('0xb')](config['redis'],{'host':_0x6944('0xc'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6944('0xd')]));require(_0x6944('0xe'))[_0x6944('0xf')](socket);function respondWithRpcPromise(_0x5e4bfc,_0x12d013,_0x3e0b97){return new BPromise(function(_0x1df3a2,_0x5adc5c){return client['request'](_0x5e4bfc,_0x3e0b97)[_0x6944('0x10')](function(_0x48c6c8){logger[_0x6944('0x11')](_0x6944('0x12'),_0x12d013,'request\x20sent');logger['debug'](_0x6944('0x13'),_0x12d013,_0x6944('0x14'),JSON[_0x6944('0x15')](_0x48c6c8));if(_0x48c6c8[_0x6944('0x16')]){if(_0x48c6c8['error'][_0x6944('0x17')]===0x1f4){logger[_0x6944('0x16')](_0x6944('0x12'),_0x12d013,_0x48c6c8[_0x6944('0x16')][_0x6944('0x18')]);return _0x5adc5c(_0x48c6c8[_0x6944('0x16')][_0x6944('0x18')]);}logger[_0x6944('0x16')]('WhatsappAccount,\x20%s,\x20%s',_0x12d013,_0x48c6c8['error'][_0x6944('0x18')]);return _0x1df3a2(_0x48c6c8[_0x6944('0x16')][_0x6944('0x18')]);}else{logger['info'](_0x6944('0x12'),_0x12d013,_0x6944('0x14'));_0x1df3a2(_0x48c6c8[_0x6944('0x19')]['message']);}})[_0x6944('0x1a')](function(_0x47c27b){logger[_0x6944('0x16')](_0x6944('0x12'),_0x12d013,_0x47c27b);_0x5adc5c(_0x47c27b);});});}exports[_0x6944('0x1b')]=function(_0x408ca4){var _0x3b045a=this;return new Promise(function(_0x34d287,_0x40a535){return db[_0x6944('0x1c')][_0x6944('0x1d')]({'raw':_0x408ca4[_0x6944('0x1e')]?_0x408ca4[_0x6944('0x1e')][_0x6944('0x1f')]===undefined?!![]:![]:!![],'where':_0x408ca4['options']?_0x408ca4[_0x6944('0x1e')][_0x6944('0x20')]||null:null,'attributes':_0x408ca4[_0x6944('0x1e')]?_0x408ca4['options'][_0x6944('0x21')]||null:null,'include':_0x408ca4[_0x6944('0x1e')]?_0x408ca4['options']['include']?_['map'](_0x408ca4[_0x6944('0x1e')][_0x6944('0x22')],function(_0x5683cc){return{'model':db[_0x5683cc[_0x6944('0x23')]],'as':_0x5683cc['as'],'attributes':_0x5683cc['attributes'],'include':_0x5683cc['include']?_[_0x6944('0x24')](_0x5683cc[_0x6944('0x22')],function(_0x2fa5ef){return{'model':db[_0x2fa5ef[_0x6944('0x23')]],'as':_0x2fa5ef['as'],'attributes':_0x2fa5ef['attributes'],'include':_0x2fa5ef[_0x6944('0x22')]?_[_0x6944('0x24')](_0x2fa5ef[_0x6944('0x22')],function(_0x25fce7){return{'model':db[_0x25fce7[_0x6944('0x23')]],'as':_0x25fce7['as'],'attributes':_0x25fce7[_0x6944('0x21')]};}):[]};}):[]};}):[]:[]})[_0x6944('0x10')](function(_0x2db402){logger[_0x6944('0x11')](_0x6944('0x1b'),_0x408ca4);logger['debug'](_0x6944('0x1b'),_0x408ca4,JSON[_0x6944('0x15')](_0x2db402));_0x34d287(_0x2db402);})['catch'](function(_0x2b3582){logger['error']('ShowWhatsappAccount',_0x2b3582['message'],_0x408ca4);_0x40a535(_0x3b045a[_0x6944('0x16')](0x1f4,_0x2b3582[_0x6944('0x18')]));});});};
\ No newline at end of file
+var _0xfa7e=['error','code','message','info','catch','ShowWhatsappAccount','find','options','raw','where','attributes','map','include','model','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./whatsappAccount.socket','then','WhatsappAccount,\x20%s,\x20%s','request\x20sent','WhatsappAccount,\x20%s,\x20%s,\x20%s','stringify'];(function(_0x181707,_0x47d753){var _0x1d2b7a=function(_0x508991){while(--_0x508991){_0x181707['push'](_0x181707['shift']());}};_0x1d2b7a(++_0x47d753);}(_0xfa7e,0xfc));var _0xefa7=function(_0xb833b1,_0x1c3d3f){_0xb833b1=_0xb833b1-0x0;var _0x1ab87a=_0xfa7e[_0xb833b1];return _0x1ab87a;};'use strict';var _=require('lodash');var util=require(_0xefa7('0x0'));var moment=require('moment');var BPromise=require(_0xefa7('0x1'));var rs=require(_0xefa7('0x2'));var fs=require('fs');var Redis=require(_0xefa7('0x3'));var db=require(_0xefa7('0x4'))['db'];var utils=require(_0xefa7('0x5'));var logger=require('../../config/logger')(_0xefa7('0x6'));var config=require(_0xefa7('0x7'));var jayson=require(_0xefa7('0x8'));var client=jayson[_0xefa7('0x9')][_0xefa7('0xa')]({'port':0x232a});config[_0xefa7('0xb')]=_[_0xefa7('0xc')](config['redis'],{'host':'localhost','port':0x18eb});var socket=require(_0xefa7('0xd'))(new Redis(config[_0xefa7('0xb')]));require(_0xefa7('0xe'))['register'](socket);function respondWithRpcPromise(_0xbcdb04,_0xded5ac,_0xe586e9){return new BPromise(function(_0x1571de,_0x44aa3e){return client['request'](_0xbcdb04,_0xe586e9)[_0xefa7('0xf')](function(_0xdf4f53){logger['info'](_0xefa7('0x10'),_0xded5ac,_0xefa7('0x11'));logger['debug'](_0xefa7('0x12'),_0xded5ac,_0xefa7('0x11'),JSON[_0xefa7('0x13')](_0xdf4f53));if(_0xdf4f53[_0xefa7('0x14')]){if(_0xdf4f53[_0xefa7('0x14')][_0xefa7('0x15')]===0x1f4){logger['error'](_0xefa7('0x10'),_0xded5ac,_0xdf4f53[_0xefa7('0x14')][_0xefa7('0x16')]);return _0x44aa3e(_0xdf4f53[_0xefa7('0x14')][_0xefa7('0x16')]);}logger[_0xefa7('0x14')](_0xefa7('0x10'),_0xded5ac,_0xdf4f53[_0xefa7('0x14')][_0xefa7('0x16')]);return _0x1571de(_0xdf4f53[_0xefa7('0x14')][_0xefa7('0x16')]);}else{logger[_0xefa7('0x17')](_0xefa7('0x10'),_0xded5ac,'request\x20sent');_0x1571de(_0xdf4f53['result'][_0xefa7('0x16')]);}})[_0xefa7('0x18')](function(_0x40880a){logger['error'](_0xefa7('0x10'),_0xded5ac,_0x40880a);_0x44aa3e(_0x40880a);});});}exports[_0xefa7('0x19')]=function(_0x47527c){var _0x159b1b=this;return new Promise(function(_0x5803e3,_0x136150){return db['WhatsappAccount'][_0xefa7('0x1a')]({'raw':_0x47527c['options']?_0x47527c[_0xefa7('0x1b')][_0xefa7('0x1c')]===undefined?!![]:![]:!![],'where':_0x47527c[_0xefa7('0x1b')]?_0x47527c[_0xefa7('0x1b')][_0xefa7('0x1d')]||null:null,'attributes':_0x47527c[_0xefa7('0x1b')]?_0x47527c[_0xefa7('0x1b')][_0xefa7('0x1e')]||null:null,'include':_0x47527c[_0xefa7('0x1b')]?_0x47527c[_0xefa7('0x1b')]['include']?_[_0xefa7('0x1f')](_0x47527c[_0xefa7('0x1b')][_0xefa7('0x20')],function(_0x58697f){return{'model':db[_0x58697f[_0xefa7('0x21')]],'as':_0x58697f['as'],'attributes':_0x58697f[_0xefa7('0x1e')],'include':_0x58697f[_0xefa7('0x20')]?_[_0xefa7('0x1f')](_0x58697f[_0xefa7('0x20')],function(_0x116a10){return{'model':db[_0x116a10['model']],'as':_0x116a10['as'],'attributes':_0x116a10[_0xefa7('0x1e')],'include':_0x116a10[_0xefa7('0x20')]?_[_0xefa7('0x1f')](_0x116a10['include'],function(_0x4ca384){return{'model':db[_0x4ca384[_0xefa7('0x21')]],'as':_0x4ca384['as'],'attributes':_0x4ca384[_0xefa7('0x1e')]};}):[]};}):[]};}):[]:[]})[_0xefa7('0xf')](function(_0x4f0059){logger[_0xefa7('0x17')](_0xefa7('0x19'),_0x47527c);logger['debug'](_0xefa7('0x19'),_0x47527c,JSON[_0xefa7('0x13')](_0x4f0059));_0x5803e3(_0x4f0059);})[_0xefa7('0x18')](function(_0x12cbde){logger[_0xefa7('0x14')](_0xefa7('0x19'),_0x12cbde[_0xefa7('0x16')],_0x47527c);_0x136150(_0x159b1b[_0xefa7('0x14')](0x1f4,_0x12cbde[_0xefa7('0x16')]));});});};
\ No newline at end of file
index ab7f0b0..5c649d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeab6=['remove','emit','register','length','whatsappAccount:','./whatsappAccount.events','save'];(function(_0x3890f1,_0x14a76d){var _0x9cc383=function(_0x1d2c83){while(--_0x1d2c83){_0x3890f1['push'](_0x3890f1['shift']());}};_0x9cc383(++_0x14a76d);}(_0xeab6,0x9f));var _0x6eab=function(_0x229764,_0x3687f1){_0x229764=_0x229764-0x0;var _0x143dea=_0xeab6[_0x229764];return _0x143dea;};'use strict';var WhatsappAccountEvents=require(_0x6eab('0x0'));var events=[_0x6eab('0x1'),_0x6eab('0x2'),'update'];function createListener(_0x2ff3a5,_0x2e4a38){return function(_0x4c50bc){_0x2e4a38[_0x6eab('0x3')](_0x2ff3a5,_0x4c50bc);};}function removeListener(_0x2077fe,_0x531b8e){return function(){WhatsappAccountEvents['removeListener'](_0x2077fe,_0x531b8e);};}exports[_0x6eab('0x4')]=function(_0x2b7e77){for(var _0x2a21c4=0x0,_0x15c215=events[_0x6eab('0x5')];_0x2a21c4<_0x15c215;_0x2a21c4++){var _0x140820=events[_0x2a21c4];var _0x3ffc54=createListener(_0x6eab('0x6')+_0x140820,_0x2b7e77);WhatsappAccountEvents['on'](_0x140820,_0x3ffc54);}};
\ No newline at end of file
+var _0x4a0a=['whatsappAccount:','./whatsappAccount.events','save','remove','update','emit','register','length'];(function(_0x21a588,_0x38ba94){var _0x11e9b0=function(_0x20525a){while(--_0x20525a){_0x21a588['push'](_0x21a588['shift']());}};_0x11e9b0(++_0x38ba94);}(_0x4a0a,0x139));var _0xa4a0=function(_0x413feb,_0x10477f){_0x413feb=_0x413feb-0x0;var _0x40ee88=_0x4a0a[_0x413feb];return _0x40ee88;};'use strict';var WhatsappAccountEvents=require(_0xa4a0('0x0'));var events=[_0xa4a0('0x1'),_0xa4a0('0x2'),_0xa4a0('0x3')];function createListener(_0x4546a6,_0x2e6264){return function(_0x9680a8){_0x2e6264[_0xa4a0('0x4')](_0x4546a6,_0x9680a8);};}function removeListener(_0x2eddbc,_0x264220){return function(){WhatsappAccountEvents['removeListener'](_0x2eddbc,_0x264220);};}exports[_0xa4a0('0x5')]=function(_0x562059){for(var _0x9029a7=0x0,_0x2e060f=events[_0xa4a0('0x6')];_0x9029a7<_0x2e060f;_0x9029a7++){var _0x4768b3=events[_0x9029a7];var _0x435909=createListener(_0xa4a0('0x7')+_0x4768b3,_0x562059);WhatsappAccountEvents['on'](_0x4768b3,_0x435909);}};
\ No newline at end of file
index 62b0d84..1176f52 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8489=['update','destroy','exports','multer','util','Router','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappApplication.controller','index','get','/:id','isAuthenticated','post','create','put'];(function(_0x164eca,_0x555e28){var _0x2ce562=function(_0x148ca6){while(--_0x148ca6){_0x164eca['push'](_0x164eca['shift']());}};_0x2ce562(++_0x555e28);}(_0x8489,0x1d7));var _0x9848=function(_0x3de8f0,_0x4759b2){_0x3de8f0=_0x3de8f0-0x0;var _0x273e05=_0x8489[_0x3de8f0];return _0x273e05;};'use strict';var multer=require(_0x9848('0x0'));var util=require(_0x9848('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express[_0x9848('0x2')]();var fs_extra=require(_0x9848('0x3'));var auth=require(_0x9848('0x4'));var interaction=require(_0x9848('0x5'));var config=require(_0x9848('0x6'));var controller=require(_0x9848('0x7'));router['get']('/',auth['isAuthenticated'](),controller[_0x9848('0x8')]);router[_0x9848('0x9')](_0x9848('0xa'),auth[_0x9848('0xb')](),controller['show']);router[_0x9848('0xc')]('/',auth['isAuthenticated'](),controller[_0x9848('0xd')]);router[_0x9848('0xe')]('/:id',auth[_0x9848('0xb')](),controller[_0x9848('0xf')]);router['delete'](_0x9848('0xa'),auth[_0x9848('0xb')](),controller[_0x9848('0x10')]);module[_0x9848('0x11')]=router;
\ No newline at end of file
+var _0x8d6f=['delete','destroy','exports','multer','util','path','express','Router','fs-extra','../../components/interaction/service','./whatsappApplication.controller','get','isAuthenticated','/:id','show','put','update'];(function(_0x1efb4a,_0x46acc8){var _0x30c4b9=function(_0x28f547){while(--_0x28f547){_0x1efb4a['push'](_0x1efb4a['shift']());}};_0x30c4b9(++_0x46acc8);}(_0x8d6f,0x19b));var _0xf8d6=function(_0x686501,_0x28fb39){_0x686501=_0x686501-0x0;var _0x24bb36=_0x8d6f[_0x686501];return _0x24bb36;};'use strict';var multer=require(_0xf8d6('0x0'));var util=require(_0xf8d6('0x1'));var path=require(_0xf8d6('0x2'));var timeout=require('connect-timeout');var express=require(_0xf8d6('0x3'));var router=express[_0xf8d6('0x4')]();var fs_extra=require(_0xf8d6('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xf8d6('0x6'));var config=require('../../config/environment');var controller=require(_0xf8d6('0x7'));router[_0xf8d6('0x8')]('/',auth[_0xf8d6('0x9')](),controller['index']);router['get'](_0xf8d6('0xa'),auth[_0xf8d6('0x9')](),controller[_0xf8d6('0xb')]);router['post']('/',auth[_0xf8d6('0x9')](),controller['create']);router[_0xf8d6('0xc')]('/:id',auth[_0xf8d6('0x9')](),controller[_0xf8d6('0xd')]);router[_0xf8d6('0xe')](_0xf8d6('0xa'),auth[_0xf8d6('0x9')](),controller[_0xf8d6('0xf')]);module[_0xf8d6('0x10')]=router;
\ No newline at end of file
index 5312d92..a23ff03 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x90f1=['TEXT','*,*,*,*','sequelize','STRING','noop'];(function(_0x3c8b46,_0x34e053){var _0x4bf0a8=function(_0x4fd53f){while(--_0x4fd53f){_0x3c8b46['push'](_0x3c8b46['shift']());}};_0x4bf0a8(++_0x34e053);}(_0x90f1,0x19c));var _0x190f=function(_0x1a1655,_0x4510c7){_0x1a1655=_0x1a1655-0x0;var _0x4af406=_0x90f1[_0x1a1655];return _0x4af406;};'use strict';var Sequelize=require(_0x190f('0x0'));module['exports']={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize[_0x190f('0x1')],'allowNull':![],'defaultValue':_0x190f('0x2')},'appdata':{'type':Sequelize[_0x190f('0x3')]()},'description':{'type':Sequelize['STRING']},'interval':{'type':Sequelize[_0x190f('0x1')],'defaultValue':_0x190f('0x4')}};
\ No newline at end of file
+var _0xa6dc=['TEXT','STRING','sequelize','exports','noop'];(function(_0x4ab0b7,_0x411aba){var _0x249f17=function(_0x14bcbf){while(--_0x14bcbf){_0x4ab0b7['push'](_0x4ab0b7['shift']());}};_0x249f17(++_0x411aba);}(_0xa6dc,0x98));var _0xca6d=function(_0x4d751d,_0x205f5a){_0x4d751d=_0x4d751d-0x0;var _0x440b06=_0xa6dc[_0x4d751d];return _0x440b06;};'use strict';var Sequelize=require(_0xca6d('0x0'));module[_0xca6d('0x1')]={'priority':{'type':Sequelize['INTEGER'],'allowNull':![]},'app':{'type':Sequelize['STRING'],'allowNull':![],'defaultValue':_0xca6d('0x2')},'appdata':{'type':Sequelize[_0xca6d('0x3')]()},'description':{'type':Sequelize[_0xca6d('0x4')]},'interval':{'type':Sequelize[_0xca6d('0x4')],'defaultValue':'*,*,*,*'}};
\ No newline at end of file
index 7aa0b52..62454ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x471a=['Content-Range','apply','reject','save','then','error','stack','name','send','index','map','WhatsappApplication','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','nolimit','limit','sort','where','pick','filter','merge','options','includeAll','findAll','rows','catch','params','rawAttributes','length','find','create','body','destroy','eml-format','rimraf','zip-dir','request-promise','moment','bluebird','mustache','to-csv','squel','crypto','jsforce','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','status','json','offset','undefined','count','set'];(function(_0xb6e43,_0x1568fc){var _0x47c40f=function(_0x107786){while(--_0x107786){_0xb6e43['push'](_0xb6e43['shift']());}};_0x47c40f(++_0x1568fc);}(_0x471a,0x18d));var _0xa471=function(_0x2bdb7c,_0x143c44){_0x2bdb7c=_0x2bdb7c-0x0;var _0x19cc75=_0x471a[_0x2bdb7c];return _0x19cc75;};'use strict';var emlformat=require(_0xa471('0x0'));var rimraf=require(_0xa471('0x1'));var zipdir=require(_0xa471('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xa471('0x3'));var moment=require(_0xa471('0x4'));var BPromise=require(_0xa471('0x5'));var Mustache=require(_0xa471('0x6'));var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0xa471('0x7'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0xa471('0x8'));var crypto=require(_0xa471('0x9'));var jsforce=require(_0xa471('0xa'));var deskjs=require('desk.js');var toCsv=require(_0xa471('0x7'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xa471('0xb'));var authService=require(_0xa471('0xc'));var qs=require(_0xa471('0xd'));var as=require(_0xa471('0xe'));var hardwareService=require('../../config/license/hardware');var logger=require(_0xa471('0xf'))(_0xa471('0x10'));var utils=require(_0xa471('0x11'));var config=require(_0xa471('0x12'));var licenseUtil=require(_0xa471('0x13'));var db=require(_0xa471('0x14'))['db'];function respondWithStatusCode(_0x5703c9,_0x2ae2a2){_0x2ae2a2=_0x2ae2a2||0xcc;return function(_0x4f1a44){if(_0x4f1a44){return _0x5703c9[_0xa471('0x15')](_0x2ae2a2);}return _0x5703c9['status'](_0x2ae2a2)[_0xa471('0x16')]();};}function respondWithResult(_0x115541,_0x501375){_0x501375=_0x501375||0xc8;return function(_0x39c025){if(_0x39c025){return _0x115541[_0xa471('0x17')](_0x501375)[_0xa471('0x18')](_0x39c025);}};}function respondWithFilteredResult(_0x531451,_0x31bcb7){return function(_0x1ed20c){if(_0x1ed20c){var _0x16e5bf=typeof _0x31bcb7[_0xa471('0x19')]===_0xa471('0x1a')&&typeof _0x31bcb7['limit']===_0xa471('0x1a');var _0x35f2f3=_0x1ed20c[_0xa471('0x1b')];var _0x5e5225=_0x16e5bf?0x0:_0x31bcb7['offset'];var _0x23fb08=_0x16e5bf?_0x1ed20c['count']:_0x31bcb7[_0xa471('0x19')]+_0x31bcb7['limit'];var _0x5e56dc;if(_0x23fb08>=_0x35f2f3){_0x23fb08=_0x35f2f3;_0x5e56dc=0xc8;}else{_0x5e56dc=0xce;}_0x531451[_0xa471('0x17')](_0x5e56dc);return _0x531451[_0xa471('0x1c')](_0xa471('0x1d'),_0x5e5225+'-'+_0x23fb08+'/'+_0x35f2f3)[_0xa471('0x18')](_0x1ed20c);}return null;};}function patchUpdates(_0x45ff30){return function(_0x6b230){try{jsonpatch[_0xa471('0x1e')](_0x6b230,_0x45ff30,!![]);}catch(_0x554610){return BPromise[_0xa471('0x1f')](_0x554610);}return _0x6b230[_0xa471('0x20')]();};}function saveUpdates(_0x398f23,_0x49ea0b){return function(_0x3e0972){if(_0x3e0972){return _0x3e0972['update'](_0x398f23)[_0xa471('0x21')](function(_0x2b7755){return _0x2b7755;});}return null;};}function removeEntity(_0x56a34e,_0x21b9e5){return function(_0x41a855){if(_0x41a855){return _0x41a855['destroy']()[_0xa471('0x21')](function(){_0x56a34e['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x188d6a,_0x2b1d3c){return function(_0x56682a){if(!_0x56682a){_0x188d6a['sendStatus'](0x194);}return _0x56682a;};}function handleError(_0x165504,_0x2d2a91){_0x2d2a91=_0x2d2a91||0x1f4;return function(_0x5009cf){logger[_0xa471('0x22')](_0x5009cf[_0xa471('0x23')]);if(_0x5009cf[_0xa471('0x24')]){delete _0x5009cf[_0xa471('0x24')];}_0x165504['status'](_0x2d2a91)[_0xa471('0x25')](_0x5009cf);};}exports[_0xa471('0x26')]=function(_0x5a3f99,_0x3851d9){var _0x3bb318={},_0x469b08={},_0x3961b5={'count':0x0,'rows':[]};var _0x5d4441=_[_0xa471('0x27')](db[_0xa471('0x28')]['rawAttributes'],function(_0x4eb527){return{'name':_0x4eb527[_0xa471('0x29')],'type':_0x4eb527[_0xa471('0x2a')][_0xa471('0x2b')]};});_0x469b08[_0xa471('0x2c')]=_[_0xa471('0x27')](_0x5d4441,'name');_0x469b08[_0xa471('0x2d')]=_[_0xa471('0x2e')](_0x5a3f99[_0xa471('0x2d')]);_0x469b08[_0xa471('0x2f')]=_[_0xa471('0x30')](_0x469b08[_0xa471('0x2c')],_0x469b08[_0xa471('0x2d')]);_0x3bb318[_0xa471('0x31')]=_[_0xa471('0x30')](_0x469b08['model'],qs[_0xa471('0x32')](_0x5a3f99[_0xa471('0x2d')][_0xa471('0x32')]));_0x3bb318[_0xa471('0x31')]=_0x3bb318[_0xa471('0x31')]['length']?_0x3bb318[_0xa471('0x31')]:_0x469b08[_0xa471('0x2c')];if(!_0x5a3f99[_0xa471('0x2d')][_0xa471('0x33')](_0xa471('0x34'))){_0x3bb318[_0xa471('0x35')]=qs['limit'](_0x5a3f99[_0xa471('0x2d')][_0xa471('0x35')]);_0x3bb318[_0xa471('0x19')]=qs[_0xa471('0x19')](_0x5a3f99[_0xa471('0x2d')][_0xa471('0x19')]);}_0x3bb318['order']=qs[_0xa471('0x36')](_0x5a3f99['query']['sort']);_0x3bb318[_0xa471('0x37')]=qs[_0xa471('0x2f')](_[_0xa471('0x38')](_0x5a3f99[_0xa471('0x2d')],_0x469b08[_0xa471('0x2f')]),_0x5d4441);if(_0x5a3f99['query'][_0xa471('0x39')]){_0x3bb318[_0xa471('0x37')]=_[_0xa471('0x3a')](_0x3bb318[_0xa471('0x37')],{'$or':_[_0xa471('0x27')](_0x5d4441,function(_0xcf1361){if(_0xcf1361[_0xa471('0x2a')]!=='VIRTUAL'){var _0x2aefbf={};_0x2aefbf[_0xcf1361[_0xa471('0x24')]]={'$like':'%'+_0x5a3f99['query']['filter']+'%'};return _0x2aefbf;}})});}_0x3bb318=_[_0xa471('0x3a')]({},_0x3bb318,_0x5a3f99[_0xa471('0x3b')]);var _0x2d98f0={'where':_0x3bb318[_0xa471('0x37')]};return db[_0xa471('0x28')][_0xa471('0x1b')](_0x2d98f0)[_0xa471('0x21')](function(_0xcc3f85){_0x3961b5[_0xa471('0x1b')]=_0xcc3f85;if(_0x5a3f99['query'][_0xa471('0x3c')]){_0x3bb318['include']=[{'all':!![]}];}return db[_0xa471('0x28')][_0xa471('0x3d')](_0x3bb318);})[_0xa471('0x21')](function(_0x19eb6e){_0x3961b5[_0xa471('0x3e')]=_0x19eb6e;return _0x3961b5;})[_0xa471('0x21')](respondWithFilteredResult(_0x3851d9,_0x3bb318))[_0xa471('0x3f')](handleError(_0x3851d9,null));};exports['show']=function(_0xc932ae,_0x2d848a){var _0x50668b={'raw':!![],'where':{'id':_0xc932ae[_0xa471('0x40')]['id']}},_0x38ec90={};_0x38ec90['model']=_['keys'](db[_0xa471('0x28')][_0xa471('0x41')]);_0x38ec90[_0xa471('0x2d')]=_[_0xa471('0x2e')](_0xc932ae[_0xa471('0x2d')]);_0x38ec90[_0xa471('0x2f')]=_[_0xa471('0x30')](_0x38ec90[_0xa471('0x2c')],_0x38ec90[_0xa471('0x2d')]);_0x50668b[_0xa471('0x31')]=_[_0xa471('0x30')](_0x38ec90[_0xa471('0x2c')],qs['fields'](_0xc932ae[_0xa471('0x2d')][_0xa471('0x32')]));_0x50668b[_0xa471('0x31')]=_0x50668b[_0xa471('0x31')][_0xa471('0x42')]?_0x50668b['attributes']:_0x38ec90[_0xa471('0x2c')];if(_0xc932ae['query'][_0xa471('0x3c')]){_0x50668b['include']=[{'all':!![]}];}_0x50668b=_[_0xa471('0x3a')]({},_0x50668b,_0xc932ae[_0xa471('0x3b')]);return db[_0xa471('0x28')][_0xa471('0x43')](_0x50668b)[_0xa471('0x21')](handleEntityNotFound(_0x2d848a,null))['then'](respondWithResult(_0x2d848a,null))[_0xa471('0x3f')](handleError(_0x2d848a,null));};exports['create']=function(_0x2fb716,_0x39e2d8){return db[_0xa471('0x28')][_0xa471('0x44')](_0x2fb716[_0xa471('0x45')],{})['then'](respondWithResult(_0x39e2d8,0xc9))[_0xa471('0x3f')](handleError(_0x39e2d8,null));};exports['update']=function(_0x5c0efe,_0x2cf4a9){if(_0x5c0efe['body']['id']){delete _0x5c0efe['body']['id'];}return db[_0xa471('0x28')]['find']({'where':{'id':_0x5c0efe[_0xa471('0x40')]['id']}})[_0xa471('0x21')](handleEntityNotFound(_0x2cf4a9,null))['then'](saveUpdates(_0x5c0efe[_0xa471('0x45')],null))[_0xa471('0x21')](respondWithResult(_0x2cf4a9,null))[_0xa471('0x3f')](handleError(_0x2cf4a9,null));};exports[_0xa471('0x46')]=function(_0x3e486f,_0x21323b){return db[_0xa471('0x28')]['find']({'where':{'id':_0x3e486f[_0xa471('0x40')]['id']}})[_0xa471('0x21')](handleEntityNotFound(_0x21323b,null))[_0xa471('0x21')](removeEntity(_0x21323b,null))['catch'](handleError(_0x21323b,null));};
\ No newline at end of file
+var _0x8aad=['attributes','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','include','findAll','rows','catch','show','params','includeAll','find','create','body','eml-format','rimraf','fast-json-patch','moment','bluebird','path','ejs','fs-extra','lodash','crypto','jsforce','desk.js','to-csv','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','undefined','limit','count','offset','Content-Range','json','apply','reject','save','update','then','destroy','end','error','stack','name','send','map','WhatsappApplication','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','fields'];(function(_0x5f12ad,_0x339cf2){var _0xb503f5=function(_0x2d3223){while(--_0x2d3223){_0x5f12ad['push'](_0x5f12ad['shift']());}};_0xb503f5(++_0x339cf2);}(_0x8aad,0x146));var _0xd8aa=function(_0x2a71bf,_0x4859b8){_0x2a71bf=_0x2a71bf-0x0;var _0x3b0de8=_0x8aad[_0x2a71bf];return _0x3b0de8;};'use strict';var emlformat=require(_0xd8aa('0x0'));var rimraf=require(_0xd8aa('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0xd8aa('0x2'));var rp=require('request-promise');var moment=require(_0xd8aa('0x3'));var BPromise=require(_0xd8aa('0x4'));var Mustache=require('mustache');var util=require('util');var path=require(_0xd8aa('0x5'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xd8aa('0x6'));var fs=require('fs');var fs_extra=require(_0xd8aa('0x7'));var _=require(_0xd8aa('0x8'));var squel=require('squel');var crypto=require(_0xd8aa('0x9'));var jsforce=require(_0xd8aa('0xa'));var deskjs=require(_0xd8aa('0xb'));var toCsv=require(_0xd8aa('0xc'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require(_0xd8aa('0xd'));var authService=require(_0xd8aa('0xe'));var qs=require(_0xd8aa('0xf'));var as=require(_0xd8aa('0x10'));var hardwareService=require(_0xd8aa('0x11'));var logger=require('../../config/logger')(_0xd8aa('0x12'));var utils=require(_0xd8aa('0x13'));var config=require(_0xd8aa('0x14'));var licenseUtil=require(_0xd8aa('0x15'));var db=require(_0xd8aa('0x16'))['db'];function respondWithStatusCode(_0x6ec0eb,_0x549fad){_0x549fad=_0x549fad||0xcc;return function(_0x1e7db8){if(_0x1e7db8){return _0x6ec0eb[_0xd8aa('0x17')](_0x549fad);}return _0x6ec0eb[_0xd8aa('0x18')](_0x549fad)['end']();};}function respondWithResult(_0x5a8c79,_0x275eff){_0x275eff=_0x275eff||0xc8;return function(_0x319ffe){if(_0x319ffe){return _0x5a8c79[_0xd8aa('0x18')](_0x275eff)['json'](_0x319ffe);}};}function respondWithFilteredResult(_0x2678ed,_0x180c56){return function(_0x39b5bc){if(_0x39b5bc){var _0x404ed6=typeof _0x180c56['offset']===_0xd8aa('0x19')&&typeof _0x180c56[_0xd8aa('0x1a')]==='undefined';var _0x16d5c6=_0x39b5bc[_0xd8aa('0x1b')];var _0x32e2cd=_0x404ed6?0x0:_0x180c56[_0xd8aa('0x1c')];var _0x2d34ac=_0x404ed6?_0x39b5bc['count']:_0x180c56[_0xd8aa('0x1c')]+_0x180c56[_0xd8aa('0x1a')];var _0xb156e6;if(_0x2d34ac>=_0x16d5c6){_0x2d34ac=_0x16d5c6;_0xb156e6=0xc8;}else{_0xb156e6=0xce;}_0x2678ed[_0xd8aa('0x18')](_0xb156e6);return _0x2678ed['set'](_0xd8aa('0x1d'),_0x32e2cd+'-'+_0x2d34ac+'/'+_0x16d5c6)[_0xd8aa('0x1e')](_0x39b5bc);}return null;};}function patchUpdates(_0x46d69b){return function(_0x3588ee){try{jsonpatch[_0xd8aa('0x1f')](_0x3588ee,_0x46d69b,!![]);}catch(_0x4fe5d8){return BPromise[_0xd8aa('0x20')](_0x4fe5d8);}return _0x3588ee[_0xd8aa('0x21')]();};}function saveUpdates(_0xc4f55c,_0x5910b3){return function(_0xa7cf85){if(_0xa7cf85){return _0xa7cf85[_0xd8aa('0x22')](_0xc4f55c)[_0xd8aa('0x23')](function(_0x290849){return _0x290849;});}return null;};}function removeEntity(_0x3ef3a9,_0x16758a){return function(_0x1f64f8){if(_0x1f64f8){return _0x1f64f8[_0xd8aa('0x24')]()[_0xd8aa('0x23')](function(){_0x3ef3a9[_0xd8aa('0x18')](0xcc)[_0xd8aa('0x25')]();});}};}function handleEntityNotFound(_0x370d6f,_0x26cc66){return function(_0x5f1027){if(!_0x5f1027){_0x370d6f[_0xd8aa('0x17')](0x194);}return _0x5f1027;};}function handleError(_0x59eb3f,_0xd4d204){_0xd4d204=_0xd4d204||0x1f4;return function(_0x1f6ab2){logger[_0xd8aa('0x26')](_0x1f6ab2[_0xd8aa('0x27')]);if(_0x1f6ab2[_0xd8aa('0x28')]){delete _0x1f6ab2[_0xd8aa('0x28')];}_0x59eb3f[_0xd8aa('0x18')](_0xd4d204)[_0xd8aa('0x29')](_0x1f6ab2);};}exports['index']=function(_0x1f2a28,_0x34b792){var _0x214393={},_0x49a7c8={},_0x19a59d={'count':0x0,'rows':[]};var _0x51c6f4=_[_0xd8aa('0x2a')](db[_0xd8aa('0x2b')][_0xd8aa('0x2c')],function(_0x168a2e){return{'name':_0x168a2e[_0xd8aa('0x2d')],'type':_0x168a2e[_0xd8aa('0x2e')][_0xd8aa('0x2f')]};});_0x49a7c8[_0xd8aa('0x30')]=_['map'](_0x51c6f4,_0xd8aa('0x28'));_0x49a7c8[_0xd8aa('0x31')]=_[_0xd8aa('0x32')](_0x1f2a28[_0xd8aa('0x31')]);_0x49a7c8[_0xd8aa('0x33')]=_[_0xd8aa('0x34')](_0x49a7c8[_0xd8aa('0x30')],_0x49a7c8[_0xd8aa('0x31')]);_0x214393['attributes']=_[_0xd8aa('0x34')](_0x49a7c8[_0xd8aa('0x30')],qs[_0xd8aa('0x35')](_0x1f2a28['query'][_0xd8aa('0x35')]));_0x214393[_0xd8aa('0x36')]=_0x214393[_0xd8aa('0x36')][_0xd8aa('0x37')]?_0x214393[_0xd8aa('0x36')]:_0x49a7c8[_0xd8aa('0x30')];if(!_0x1f2a28[_0xd8aa('0x31')][_0xd8aa('0x38')](_0xd8aa('0x39'))){_0x214393['limit']=qs[_0xd8aa('0x1a')](_0x1f2a28[_0xd8aa('0x31')][_0xd8aa('0x1a')]);_0x214393[_0xd8aa('0x1c')]=qs[_0xd8aa('0x1c')](_0x1f2a28[_0xd8aa('0x31')][_0xd8aa('0x1c')]);}_0x214393[_0xd8aa('0x3a')]=qs[_0xd8aa('0x3b')](_0x1f2a28['query'][_0xd8aa('0x3b')]);_0x214393['where']=qs[_0xd8aa('0x33')](_[_0xd8aa('0x3c')](_0x1f2a28['query'],_0x49a7c8[_0xd8aa('0x33')]),_0x51c6f4);if(_0x1f2a28[_0xd8aa('0x31')][_0xd8aa('0x3d')]){_0x214393[_0xd8aa('0x3e')]=_[_0xd8aa('0x3f')](_0x214393['where'],{'$or':_['map'](_0x51c6f4,function(_0x25145c){if(_0x25145c['type']!==_0xd8aa('0x40')){var _0x7a6df2={};_0x7a6df2[_0x25145c[_0xd8aa('0x28')]]={'$like':'%'+_0x1f2a28[_0xd8aa('0x31')][_0xd8aa('0x3d')]+'%'};return _0x7a6df2;}})});}_0x214393=_[_0xd8aa('0x3f')]({},_0x214393,_0x1f2a28[_0xd8aa('0x41')]);var _0x3b0220={'where':_0x214393[_0xd8aa('0x3e')]};return db[_0xd8aa('0x2b')][_0xd8aa('0x1b')](_0x3b0220)['then'](function(_0x17ebb4){_0x19a59d[_0xd8aa('0x1b')]=_0x17ebb4;if(_0x1f2a28[_0xd8aa('0x31')]['includeAll']){_0x214393[_0xd8aa('0x42')]=[{'all':!![]}];}return db[_0xd8aa('0x2b')][_0xd8aa('0x43')](_0x214393);})[_0xd8aa('0x23')](function(_0x3a0284){_0x19a59d[_0xd8aa('0x44')]=_0x3a0284;return _0x19a59d;})[_0xd8aa('0x23')](respondWithFilteredResult(_0x34b792,_0x214393))[_0xd8aa('0x45')](handleError(_0x34b792,null));};exports[_0xd8aa('0x46')]=function(_0x3f5857,_0x20c7a0){var _0x3ec42f={'raw':!![],'where':{'id':_0x3f5857[_0xd8aa('0x47')]['id']}},_0x3b26c9={};_0x3b26c9[_0xd8aa('0x30')]=_[_0xd8aa('0x32')](db[_0xd8aa('0x2b')][_0xd8aa('0x2c')]);_0x3b26c9['query']=_[_0xd8aa('0x32')](_0x3f5857[_0xd8aa('0x31')]);_0x3b26c9[_0xd8aa('0x33')]=_[_0xd8aa('0x34')](_0x3b26c9[_0xd8aa('0x30')],_0x3b26c9[_0xd8aa('0x31')]);_0x3ec42f['attributes']=_[_0xd8aa('0x34')](_0x3b26c9['model'],qs[_0xd8aa('0x35')](_0x3f5857['query'][_0xd8aa('0x35')]));_0x3ec42f['attributes']=_0x3ec42f['attributes'][_0xd8aa('0x37')]?_0x3ec42f[_0xd8aa('0x36')]:_0x3b26c9[_0xd8aa('0x30')];if(_0x3f5857[_0xd8aa('0x31')][_0xd8aa('0x48')]){_0x3ec42f[_0xd8aa('0x42')]=[{'all':!![]}];}_0x3ec42f=_['merge']({},_0x3ec42f,_0x3f5857[_0xd8aa('0x41')]);return db[_0xd8aa('0x2b')][_0xd8aa('0x49')](_0x3ec42f)[_0xd8aa('0x23')](handleEntityNotFound(_0x20c7a0,null))[_0xd8aa('0x23')](respondWithResult(_0x20c7a0,null))['catch'](handleError(_0x20c7a0,null));};exports['create']=function(_0x58cf42,_0x1fd1dc){return db[_0xd8aa('0x2b')][_0xd8aa('0x4a')](_0x58cf42[_0xd8aa('0x4b')],{})[_0xd8aa('0x23')](respondWithResult(_0x1fd1dc,0xc9))[_0xd8aa('0x45')](handleError(_0x1fd1dc,null));};exports['update']=function(_0x221e2b,_0x241e23){if(_0x221e2b['body']['id']){delete _0x221e2b[_0xd8aa('0x4b')]['id'];}return db[_0xd8aa('0x2b')][_0xd8aa('0x49')]({'where':{'id':_0x221e2b['params']['id']}})[_0xd8aa('0x23')](handleEntityNotFound(_0x241e23,null))[_0xd8aa('0x23')](saveUpdates(_0x221e2b[_0xd8aa('0x4b')],null))[_0xd8aa('0x23')](respondWithResult(_0x241e23,null))[_0xd8aa('0x45')](handleError(_0x241e23,null));};exports[_0xd8aa('0x24')]=function(_0x4f494d,_0x566d52){return db[_0xd8aa('0x2b')][_0xd8aa('0x49')]({'where':{'id':_0x4f494d[_0xd8aa('0x47')]['id']}})[_0xd8aa('0x23')](handleEntityNotFound(_0x566d52,null))[_0xd8aa('0x23')](removeEntity(_0x566d52,null))[_0xd8aa('0x45')](handleError(_0x566d52,null));};
\ No newline at end of file
index f9a6295..2b173e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3645=['define','WhatsappApplication','whatsapp_applications','utf8mb4','util','../../config/logger','api','moment','bluebird','request-promise','path','../../config/environment','./whatsappApplication.attributes','exports'];(function(_0x2aea9e,_0x1f587f){var _0x430b92=function(_0x416c37){while(--_0x416c37){_0x2aea9e['push'](_0x2aea9e['shift']());}};_0x430b92(++_0x1f587f);}(_0x3645,0x154));var _0x5364=function(_0x3f578f,_0x51f172){_0x3f578f=_0x3f578f-0x0;var _0x32c754=_0x3645[_0x3f578f];return _0x32c754;};'use strict';var _=require('lodash');var util=require(_0x5364('0x0'));var logger=require(_0x5364('0x1'))(_0x5364('0x2'));var moment=require(_0x5364('0x3'));var BPromise=require(_0x5364('0x4'));var rp=require(_0x5364('0x5'));var fs=require('fs');var path=require(_0x5364('0x6'));var rimraf=require('rimraf');var config=require(_0x5364('0x7'));var attributes=require(_0x5364('0x8'));module[_0x5364('0x9')]=function(_0x1f9c6b,_0x417c44){return _0x1f9c6b[_0x5364('0xa')](_0x5364('0xb'),attributes,{'tableName':_0x5364('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0x5364('0xd'),'collate':'utf8mb4_unicode_ci'});};
\ No newline at end of file
+var _0x3edc=['request-promise','rimraf','../../config/environment','./whatsappApplication.attributes','exports','define','WhatsappApplication','whatsapp_applications','utf8mb4','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x3edc,0x1ae));var _0xc3ed=function(_0x4c64d7,_0x5d93e6){_0x4c64d7=_0x4c64d7-0x0;var _0x5d613d=_0x3edc[_0x4c64d7];return _0x5d613d;};'use strict';var _=require(_0xc3ed('0x0'));var util=require(_0xc3ed('0x1'));var logger=require(_0xc3ed('0x2'))(_0xc3ed('0x3'));var moment=require(_0xc3ed('0x4'));var BPromise=require('bluebird');var rp=require(_0xc3ed('0x5'));var fs=require('fs');var path=require('path');var rimraf=require(_0xc3ed('0x6'));var config=require(_0xc3ed('0x7'));var attributes=require(_0xc3ed('0x8'));module[_0xc3ed('0x9')]=function(_0x3f8468,_0x50b95c){return _0x3f8468[_0xc3ed('0xa')](_0xc3ed('0xb'),attributes,{'tableName':_0xc3ed('0xc'),'paranoid':![],'indexes':[],'timestamps':!![],'charset':_0xc3ed('0xd'),'collate':_0xc3ed('0xe')});};
\ No newline at end of file
index fa1e0f5..339f849 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf3cd=['catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','jayson/promise','client','http','info','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappApplication,\x20%s,\x20%s','message','result'];(function(_0x409902,_0x4ca869){var _0x100a72=function(_0x423879){while(--_0x423879){_0x409902['push'](_0x409902['shift']());}};_0x100a72(++_0x4ca869);}(_0xf3cd,0xfe));var _0xdf3c=function(_0x143ce6,_0x46e089){_0x143ce6=_0x143ce6-0x0;var _0x33ed64=_0xf3cd[_0x143ce6];return _0x33ed64;};'use strict';var _=require(_0xdf3c('0x0'));var util=require(_0xdf3c('0x1'));var moment=require(_0xdf3c('0x2'));var BPromise=require(_0xdf3c('0x3'));var rs=require(_0xdf3c('0x4'));var fs=require('fs');var Redis=require(_0xdf3c('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0xdf3c('0x6'));var logger=require(_0xdf3c('0x7'))(_0xdf3c('0x8'));var config=require('../../config/environment');var jayson=require(_0xdf3c('0x9'));var client=jayson[_0xdf3c('0xa')][_0xdf3c('0xb')]({'port':0x232a});function respondWithRpcPromise(_0x1f0601,_0x106021,_0x28edae){return new BPromise(function(_0x52c073,_0x15705d){return client['request'](_0x1f0601,_0x28edae)['then'](function(_0x22d8ae){logger[_0xdf3c('0xc')]('WhatsappApplication,\x20%s,\x20%s',_0x106021,_0xdf3c('0xd'));logger[_0xdf3c('0xe')](_0xdf3c('0xf'),_0x106021,_0xdf3c('0xd'),JSON[_0xdf3c('0x10')](_0x22d8ae));if(_0x22d8ae[_0xdf3c('0x11')]){if(_0x22d8ae[_0xdf3c('0x11')][_0xdf3c('0x12')]===0x1f4){logger['error'](_0xdf3c('0x13'),_0x106021,_0x22d8ae[_0xdf3c('0x11')][_0xdf3c('0x14')]);return _0x15705d(_0x22d8ae[_0xdf3c('0x11')]['message']);}logger[_0xdf3c('0x11')](_0xdf3c('0x13'),_0x106021,_0x22d8ae[_0xdf3c('0x11')]['message']);return _0x52c073(_0x22d8ae[_0xdf3c('0x11')][_0xdf3c('0x14')]);}else{logger[_0xdf3c('0xc')](_0xdf3c('0x13'),_0x106021,_0xdf3c('0xd'));_0x52c073(_0x22d8ae[_0xdf3c('0x15')][_0xdf3c('0x14')]);}})[_0xdf3c('0x16')](function(_0x2986d0){logger[_0xdf3c('0x11')]('WhatsappApplication,\x20%s,\x20%s',_0x106021,_0x2986d0);_0x15705d(_0x2986d0);});});}
\ No newline at end of file
+var _0x9a19=['catch','lodash','util','moment','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','request','info','WhatsappApplication,\x20%s,\x20%s','request\x20sent','debug','WhatsappApplication,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result'];(function(_0x14477e,_0x44d4da){var _0x5d4a05=function(_0x5e0fa3){while(--_0x5e0fa3){_0x14477e['push'](_0x14477e['shift']());}};_0x5d4a05(++_0x44d4da);}(_0x9a19,0x114));var _0x99a1=function(_0x2b9b7f,_0x4d47df){_0x2b9b7f=_0x2b9b7f-0x0;var _0x4ed19a=_0x9a19[_0x2b9b7f];return _0x4ed19a;};'use strict';var _=require(_0x99a1('0x0'));var util=require(_0x99a1('0x1'));var moment=require(_0x99a1('0x2'));var BPromise=require('bluebird');var rs=require(_0x99a1('0x3'));var fs=require('fs');var Redis=require(_0x99a1('0x4'));var db=require(_0x99a1('0x5'))['db'];var utils=require(_0x99a1('0x6'));var logger=require(_0x99a1('0x7'))(_0x99a1('0x8'));var config=require(_0x99a1('0x9'));var jayson=require(_0x99a1('0xa'));var client=jayson[_0x99a1('0xb')][_0x99a1('0xc')]({'port':0x232a});function respondWithRpcPromise(_0x65045d,_0x523b9e,_0x4d2a5c){return new BPromise(function(_0x5aa6c2,_0x56f50){return client[_0x99a1('0xd')](_0x65045d,_0x4d2a5c)['then'](function(_0x5874fc){logger[_0x99a1('0xe')](_0x99a1('0xf'),_0x523b9e,_0x99a1('0x10'));logger[_0x99a1('0x11')](_0x99a1('0x12'),_0x523b9e,'request\x20sent',JSON[_0x99a1('0x13')](_0x5874fc));if(_0x5874fc[_0x99a1('0x14')]){if(_0x5874fc[_0x99a1('0x14')][_0x99a1('0x15')]===0x1f4){logger[_0x99a1('0x14')](_0x99a1('0xf'),_0x523b9e,_0x5874fc[_0x99a1('0x14')][_0x99a1('0x16')]);return _0x56f50(_0x5874fc[_0x99a1('0x14')][_0x99a1('0x16')]);}logger[_0x99a1('0x14')](_0x99a1('0xf'),_0x523b9e,_0x5874fc[_0x99a1('0x14')][_0x99a1('0x16')]);return _0x5aa6c2(_0x5874fc[_0x99a1('0x14')]['message']);}else{logger[_0x99a1('0xe')](_0x99a1('0xf'),_0x523b9e,_0x99a1('0x10'));_0x5aa6c2(_0x5874fc[_0x99a1('0x17')][_0x99a1('0x16')]);}})[_0x99a1('0x18')](function(_0x1ca878){logger['error']('WhatsappApplication,\x20%s,\x20%s',_0x523b9e,_0x1ca878);_0x56f50(_0x1ca878);});});}
\ No newline at end of file
index ef6779d..efaf497 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xed1c=['whatsappinteraction:addtags','addTags','put','whatsapp','whatsappinteraction:update','update','delete','whatsappinteraction:destroy','destroy','removeTags','exports','multer','util','fs-extra','../../components/auth/service','../../components/interaction/service','./whatsappInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/download','download','post','create','/:id/messages','addMessage','tracked'];(function(_0x3452a8,_0x4bfaa4){var _0x233814=function(_0x40b537){while(--_0x40b537){_0x3452a8['push'](_0x3452a8['shift']());}};_0x233814(++_0x4bfaa4);}(_0xed1c,0xe4));var _0xced1=function(_0xe33eb6,_0x747429){_0xe33eb6=_0xe33eb6-0x0;var _0x15c78e=_0xed1c[_0xe33eb6];return _0x15c78e;};'use strict';var multer=require(_0xced1('0x0'));var util=require(_0xced1('0x1'));var path=require('path');var timeout=require('connect-timeout');var express=require('express');var router=express['Router']();var fs_extra=require(_0xced1('0x2'));var auth=require(_0xced1('0x3'));var interaction=require(_0xced1('0x4'));var config=require('../../config/environment');var controller=require(_0xced1('0x5'));router[_0xced1('0x6')]('/',auth[_0xced1('0x7')](),controller[_0xced1('0x8')]);router['get'](_0xced1('0x9'),auth[_0xced1('0x7')](),controller[_0xced1('0xa')]);router[_0xced1('0x6')](_0xced1('0xb'),auth[_0xced1('0x7')](),controller[_0xced1('0xc')]);router[_0xced1('0x6')]('/:id/messages',auth[_0xced1('0x7')](),controller['getMessages']);router[_0xced1('0x6')](_0xced1('0xd'),auth[_0xced1('0x7')](),controller[_0xced1('0xe')]);router[_0xced1('0xf')]('/',auth[_0xced1('0x7')](),controller[_0xced1('0x10')]);router['post'](_0xced1('0x11'),auth[_0xced1('0x7')](),controller[_0xced1('0x12')]);router[_0xced1('0xf')]('/:id/tags',auth[_0xced1('0x7')](),interaction[_0xced1('0x13')]('whatsapp',_0xced1('0x14')),controller[_0xced1('0x15')]);router[_0xced1('0x16')](_0xced1('0xb'),auth['isAuthenticated'](),interaction['tracked'](_0xced1('0x17'),_0xced1('0x18')),controller[_0xced1('0x19')]);router[_0xced1('0x1a')](_0xced1('0xb'),auth[_0xced1('0x7')](),interaction['tracked']('whatsapp',_0xced1('0x1b')),controller[_0xced1('0x1c')]);router[_0xced1('0x1a')]('/:id/tags',auth[_0xced1('0x7')](),controller[_0xced1('0x1d')]);module[_0xced1('0x1e')]=router;
\ No newline at end of file
+var _0xf69d=['put','whatsappinteraction:update','delete','tracked','destroy','removeTags','exports','multer','util','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappInteraction.controller','get','isAuthenticated','index','/describe','describe','/:id','show','getMessages','/:id/download','download','/:id/messages','addMessage','post','/:id/tags','whatsapp','whatsappinteraction:addtags','addTags'];(function(_0x2eedb5,_0x2e1801){var _0x534cd6=function(_0x17100c){while(--_0x17100c){_0x2eedb5['push'](_0x2eedb5['shift']());}};_0x534cd6(++_0x2e1801);}(_0xf69d,0xd3));var _0xdf69=function(_0xab70b6,_0x48df75){_0xab70b6=_0xab70b6-0x0;var _0xbd31de=_0xf69d[_0xab70b6];return _0xbd31de;};'use strict';var multer=require(_0xdf69('0x0'));var util=require(_0xdf69('0x1'));var path=require(_0xdf69('0x2'));var timeout=require(_0xdf69('0x3'));var express=require(_0xdf69('0x4'));var router=express['Router']();var fs_extra=require(_0xdf69('0x5'));var auth=require(_0xdf69('0x6'));var interaction=require(_0xdf69('0x7'));var config=require(_0xdf69('0x8'));var controller=require(_0xdf69('0x9'));router[_0xdf69('0xa')]('/',auth[_0xdf69('0xb')](),controller[_0xdf69('0xc')]);router[_0xdf69('0xa')](_0xdf69('0xd'),auth[_0xdf69('0xb')](),controller[_0xdf69('0xe')]);router[_0xdf69('0xa')](_0xdf69('0xf'),auth[_0xdf69('0xb')](),controller[_0xdf69('0x10')]);router[_0xdf69('0xa')]('/:id/messages',auth[_0xdf69('0xb')](),controller[_0xdf69('0x11')]);router[_0xdf69('0xa')](_0xdf69('0x12'),auth[_0xdf69('0xb')](),controller[_0xdf69('0x13')]);router['post']('/',auth['isAuthenticated'](),controller['create']);router['post'](_0xdf69('0x14'),auth[_0xdf69('0xb')](),controller[_0xdf69('0x15')]);router[_0xdf69('0x16')](_0xdf69('0x17'),auth[_0xdf69('0xb')](),interaction['tracked'](_0xdf69('0x18'),_0xdf69('0x19')),controller[_0xdf69('0x1a')]);router[_0xdf69('0x1b')]('/:id',auth[_0xdf69('0xb')](),interaction['tracked'](_0xdf69('0x18'),_0xdf69('0x1c')),controller['update']);router[_0xdf69('0x1d')](_0xdf69('0xf'),auth[_0xdf69('0xb')](),interaction[_0xdf69('0x1e')]('whatsapp','whatsappinteraction:destroy'),controller[_0xdf69('0x1f')]);router[_0xdf69('0x1d')]('/:id/tags',auth[_0xdf69('0xb')](),controller[_0xdf69('0x20')]);module[_0xdf69('0x21')]=router;
\ No newline at end of file
index 7553547..6aa15d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3cd8=['sequelize','moment','exports','BOOLEAN','DATE','STRING','ENUM','out'];(function(_0x560be2,_0x106fad){var _0x383713=function(_0x41b4a2){while(--_0x41b4a2){_0x560be2['push'](_0x560be2['shift']());}};_0x383713(++_0x106fad);}(_0x3cd8,0x150));var _0x83cd=function(_0x373dee,_0x1a8c45){_0x373dee=_0x373dee-0x0;var _0x46798f=_0x3cd8[_0x373dee];return _0x46798f;};'use strict';var Sequelize=require(_0x83cd('0x0'));var moment=require(_0x83cd('0x1'));module[_0x83cd('0x2')]={'closed':{'type':Sequelize[_0x83cd('0x3')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x83cd('0x4')]},'disposition':{'type':Sequelize[_0x83cd('0x5')]},'secondDisposition':{'type':Sequelize[_0x83cd('0x5')]},'thirdDisposition':{'type':Sequelize[_0x83cd('0x5')]},'note':{'type':Sequelize['STRING']},'phone':{'type':Sequelize[_0x83cd('0x5')]},'read1stAt':{'type':Sequelize[_0x83cd('0x4')]},'firstMsgDirection':{'type':Sequelize[_0x83cd('0x6')]('in',_0x83cd('0x7')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x83cd('0x4')]},'lastMsgDirection':{'type':Sequelize[_0x83cd('0x6')]('in',_0x83cd('0x7')),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize[_0x83cd('0x3')],'defaultValue':![]}};
\ No newline at end of file
+var _0x4677=['BOOLEAN','DATE','STRING','ENUM','out','sequelize','exports'];(function(_0xa270f3,_0x293fd){var _0x48767f=function(_0x2db048){while(--_0x2db048){_0xa270f3['push'](_0xa270f3['shift']());}};_0x48767f(++_0x293fd);}(_0x4677,0x155));var _0x7467=function(_0xa08ea2,_0x5b8aa2){_0xa08ea2=_0xa08ea2-0x0;var _0x32f9e1=_0x4677[_0xa08ea2];return _0x32f9e1;};'use strict';var Sequelize=require(_0x7467('0x0'));var moment=require('moment');module[_0x7467('0x1')]={'closed':{'type':Sequelize[_0x7467('0x2')],'defaultValue':![]},'closedAt':{'type':Sequelize[_0x7467('0x3')]},'disposition':{'type':Sequelize['STRING']},'secondDisposition':{'type':Sequelize[_0x7467('0x4')]},'thirdDisposition':{'type':Sequelize[_0x7467('0x4')]},'note':{'type':Sequelize[_0x7467('0x4')]},'phone':{'type':Sequelize[_0x7467('0x4')]},'read1stAt':{'type':Sequelize[_0x7467('0x3')]},'firstMsgDirection':{'type':Sequelize[_0x7467('0x5')]('in',_0x7467('0x6')),'defaultValue':'in','allowNull':![]},'lastMsgAt':{'type':Sequelize[_0x7467('0x3')]},'lastMsgDirection':{'type':Sequelize[_0x7467('0x5')]('in','out'),'defaultValue':'in','allowNull':![]},'autoreplyExecuted':{'type':Sequelize['BOOLEAN'],'defaultValue':![]}};
\ No newline at end of file
index bdaa2db..811f834 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x583c=['create','addMessage','WhatsappMessage','ids','findOne','$gte','format','YYYY-MM-DD\x20HH:mm:ss','includeAll','include','findAll','setTags','omit','spread','whatsappInteractionTags:save','removeTags','download','unix','join','root','server','files','tmp','transcript-%d-%s.zip','fullname','CmContact','firstName','attachments','Attachment','Messages','direction','secret','Account','get','mkdirSync','Whatsapp','Owner','N.A.','closedAt','basename','existsSync','createWriteStream','out','lastName','renderFile','views','downloadInteraction.ejs','transcript-','.pdf','createPdfFromHTML','log','err','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','path','sox','ejs','fs-extra','lodash','squel','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/export/pdf','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','sendStatus','end','status','undefined','count','offset','limit','set','Content-Range','apply','save','update','destroy','then','error','stack','name','send','Users','map','TagIds','Tags','forEach','catch','waiting','unmanaged','total','UserId','closed','talking','answered','index','WhatsappInteraction','rawAttributes','fieldName','key','model','query','fields','attributes','hasOwnProperty','nolimit','sort','where','filters','pick','select','field','color','from','tools_tags','u.id','u.fullname','ui.WhatsappInteractionId','user_has_whatsapp_interactions','users','u.id\x20=\x20ui.UserId','whatsapp_interactions','left_join','cm_contacts','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL','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','expr','search','parseSearch','sqlOperator','conditions','length','find','value','having','`\x20>\x200','Contact','operator','split','MATCH\x20(c.firstName,\x20c.lastName,\x20c.phone,\x20c.mobile,\x20c.fax,\x20c.email)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','getFullTextValue','ContactId','buildExpression','type','text','Tag','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','User','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','start','body','keys','some','compact','isEmpty','i.WhatsappAccountId\x20IN\x20?','concat','createdAt','parse','$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','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','unreadMessages','contactName','order','DESC','t.id\x20IN\x20?','resolve','WhatsappAccountId','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','role','agent','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','toString','sequelize','keyBy','merge','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.lastName','Contact.lastName','c.email','Contact.email','Contact.phone','Contact.mobile','c.fax','Contact.fax','o.fullname','o.internal','Owner.internal','GROUP_CONCAT(DISTINCT\x20t.id)','ui.WhatsappInteractionId\x20IN\x20?','groupBy','push','all','rows','show','params','intersection','options'];(function(_0x51020b,_0x38c2c7){var _0x371e47=function(_0x2a538f){while(--_0x2a538f){_0x51020b['push'](_0x51020b['shift']());}};_0x371e47(++_0x38c2c7);}(_0x583c,0x12b));var _0xc583=function(_0x27d8bc,_0x19e010){_0x27d8bc=_0x27d8bc-0x0;var _0x4b04cb=_0x583c[_0x27d8bc];return _0x4b04cb;};'use strict';var emlformat=require(_0xc583('0x0'));var rimraf=require(_0xc583('0x1'));var zipdir=require(_0xc583('0x2'));var jsonpatch=require(_0xc583('0x3'));var rp=require('request-promise');var moment=require(_0xc583('0x4'));var BPromise=require(_0xc583('0x5'));var Mustache=require('mustache');var util=require('util');var path=require(_0xc583('0x6'));var sox=require(_0xc583('0x7'));var csv=require('to-csv');var ejs=require(_0xc583('0x8'));var fs=require('fs');var fs_extra=require(_0xc583('0x9'));var _=require(_0xc583('0xa'));var squel=require(_0xc583('0xb'));var crypto=require('crypto');var jsforce=require(_0xc583('0xc'));var deskjs=require(_0xc583('0xd'));var toCsv=require('to-csv');var querystring=require(_0xc583('0xe'));var Papa=require(_0xc583('0xf'));var Redis=require(_0xc583('0x10'));var authService=require(_0xc583('0x11'));var qs=require(_0xc583('0x12'));var as=require('../../components/parsers/advancedSearch');var pdf=require(_0xc583('0x13'));var hardwareService=require(_0xc583('0x14'));var logger=require('../../config/logger')(_0xc583('0x15'));var utils=require(_0xc583('0x16'));var config=require('../../config/environment');var licenseUtil=require(_0xc583('0x17'));var db=require(_0xc583('0x18'))['db'];config[_0xc583('0x19')]=_[_0xc583('0x1a')](config[_0xc583('0x19')],{'host':_0xc583('0x1b'),'port':0x18eb});var socket=require(_0xc583('0x1c'))(new Redis(config[_0xc583('0x19')]));require(_0xc583('0x1d'))['register'](socket);function respondWithStatusCode(_0x21cf25,_0x51ecd7){_0x51ecd7=_0x51ecd7||0xcc;return function(_0x19f46a){if(_0x19f46a){return _0x21cf25[_0xc583('0x1e')](_0x51ecd7);}return _0x21cf25['status'](_0x51ecd7)[_0xc583('0x1f')]();};}function respondWithResult(_0x311ad5,_0x5b1871){_0x5b1871=_0x5b1871||0xc8;return function(_0x7d1690){if(_0x7d1690){return _0x311ad5[_0xc583('0x20')](_0x5b1871)['json'](_0x7d1690);}};}function respondWithFilteredResult(_0x21cf22,_0x8a2d84){return function(_0x12aac2){if(_0x12aac2){var _0x36e0fd=typeof _0x8a2d84['offset']===_0xc583('0x21')&&typeof _0x8a2d84['limit']===_0xc583('0x21');var _0x471db2=_0x12aac2[_0xc583('0x22')];var _0x774f4c=_0x36e0fd?0x0:_0x8a2d84[_0xc583('0x23')];var _0x12b910=_0x36e0fd?_0x12aac2[_0xc583('0x22')]:_0x8a2d84[_0xc583('0x23')]+_0x8a2d84[_0xc583('0x24')];var _0x197b0a;if(_0x12b910>=_0x471db2){_0x12b910=_0x471db2;_0x197b0a=0xc8;}else{_0x197b0a=0xce;}_0x21cf22[_0xc583('0x20')](_0x197b0a);return _0x21cf22[_0xc583('0x25')](_0xc583('0x26'),_0x774f4c+'-'+_0x12b910+'/'+_0x471db2)['json'](_0x12aac2);}return null;};}function patchUpdates(_0x542256){return function(_0x34b353){try{jsonpatch[_0xc583('0x27')](_0x34b353,_0x542256,!![]);}catch(_0x8443dc){return BPromise['reject'](_0x8443dc);}return _0x34b353[_0xc583('0x28')]();};}function saveUpdates(_0x959500,_0x37f156){return function(_0x4688bd){if(_0x4688bd){return _0x4688bd[_0xc583('0x29')](_0x959500)['then'](function(_0x4cad36){return _0x4cad36;});}return null;};}function removeEntity(_0x45871c,_0x4f366b){return function(_0x45ef74){if(_0x45ef74){return _0x45ef74[_0xc583('0x2a')]()[_0xc583('0x2b')](function(){_0x45871c[_0xc583('0x20')](0xcc)[_0xc583('0x1f')]();});}};}function handleEntityNotFound(_0x4b1c18,_0x2dafb4){return function(_0x44f76a){if(!_0x44f76a){_0x4b1c18['sendStatus'](0x194);}return _0x44f76a;};}function handleError(_0x162c85,_0x483357){_0x483357=_0x483357||0x1f4;return function(_0x2c9088){logger[_0xc583('0x2c')](_0x2c9088[_0xc583('0x2d')]);if(_0x2c9088[_0xc583('0x2e')]){delete _0x2c9088[_0xc583('0x2e')];}_0x162c85[_0xc583('0x20')](_0x483357)[_0xc583('0x2f')](_0x2c9088);};}function getInteractionUsers(_0x4a87b5,_0x529dbe){return new BPromise(function(_0x390bc3,_0x23f3a4){try{if(_0x529dbe[_0x4a87b5['id']]){_0x4a87b5[_0xc583('0x30')]=_[_0xc583('0x31')](_0x529dbe[_0x4a87b5['id']],function(_0x3f3269){return{'id':_0x3f3269['id'],'fullname':_0x3f3269['fullname']};});}}catch(_0x2246dd){_0x23f3a4(_0x2246dd);}_0x390bc3(_0x4a87b5);});}function getInteractionTags(_0x58d97f,_0x510931){return new BPromise(function(_0x299551,_0x2df18d){try{if(_0x58d97f[_0xc583('0x32')]){_0x58d97f[_0xc583('0x33')]=[];_0x58d97f[_0xc583('0x32')]['split'](',')[_0xc583('0x34')](function(_0xc141e){_0x58d97f[_0xc583('0x33')]['push'](_0x510931[_0xc141e]);});}delete _0x58d97f[_0xc583('0x32')];}catch(_0x55bdca){_0x2df18d(_0x55bdca);}_0x299551(_0x58d97f);});}function updateWhatsappInteraction(_0x1aa62a,_0x41c09b,_0x473072){return new BPromise(function(_0x18a288,_0x3bd1fd){return getInteractionUsers(_0x1aa62a,_0x473072)['then'](function(_0x242728){return getInteractionTags(_0x242728,_0x41c09b);})['then'](function(_0x113285){return getStateInteraction(_0x113285);})['then'](function(_0x2e96fc){_0x18a288(_0x2e96fc);})[_0xc583('0x35')](function(_0x7d89d0){_0x3bd1fd(_0x7d89d0);});});}function getStateInteraction(_0xc5e742){return new BPromise(function(_0xa44825){_0xc5e742[_0xc583('0x36')]=0x0;_0xc5e742['talking']=0x0;_0xc5e742['answered']=0x0;_0xc5e742[_0xc583('0x37')]=0x0;_0xc5e742[_0xc583('0x38')]=0x0;if(!_0xc5e742['closed']&&!_0xc5e742[_0xc583('0x39')]){_0xc5e742[_0xc583('0x36')]+=0x1;}if(!_0xc5e742[_0xc583('0x3a')]&&_0xc5e742[_0xc583('0x39')]){_0xc5e742[_0xc583('0x3b')]+=0x1;if(_0xc5e742[_0xc583('0x36')]){_0xc5e742['waiting']-=0x1;}}if(_0xc5e742[_0xc583('0x3a')]&&_0xc5e742['UserId']){_0xc5e742[_0xc583('0x3c')]+=0x1;if(_0xc5e742[_0xc583('0x3b')]){_0xc5e742[_0xc583('0x3b')]-=0x1;}}if(_0xc5e742['closed']&&!_0xc5e742['UserId']){_0xc5e742['unmanaged']+=0x1;if(_0xc5e742[_0xc583('0x36')]){_0xc5e742[_0xc583('0x36')]-=0x1;}}_0xc5e742[_0xc583('0x38')]+=0x1;_0xa44825(_0xc5e742);});}exports[_0xc583('0x3d')]=function(_0x5148ef,_0x374196){var _0x136776={},_0x594a0b={},_0x48930a={'count':0x0,'rows':[]};var _0x1ea5da=_['map'](db[_0xc583('0x3e')][_0xc583('0x3f')],function(_0xe73752){return{'name':_0xe73752[_0xc583('0x40')],'type':_0xe73752['type'][_0xc583('0x41')]};});_0x594a0b[_0xc583('0x42')]=_[_0xc583('0x31')](_0x1ea5da,_0xc583('0x2e'));_0x594a0b[_0xc583('0x43')]=_['keys'](_0x5148ef[_0xc583('0x43')]);_0x594a0b['filters']=_['intersection'](_0x594a0b[_0xc583('0x42')],_0x594a0b[_0xc583('0x43')]);_0x136776['attributes']=_['intersection'](_0x594a0b[_0xc583('0x42')],qs[_0xc583('0x44')](_0x5148ef[_0xc583('0x43')][_0xc583('0x44')]));_0x136776['attributes']=_0x136776[_0xc583('0x45')]['length']?_0x136776[_0xc583('0x45')]:_0x594a0b['model'];if(!_0x5148ef[_0xc583('0x43')][_0xc583('0x46')](_0xc583('0x47'))){_0x136776[_0xc583('0x24')]=qs[_0xc583('0x24')](_0x5148ef['query'][_0xc583('0x24')]);_0x136776[_0xc583('0x23')]=qs[_0xc583('0x23')](_0x5148ef['query']['offset']);}_0x136776['order']=qs[_0xc583('0x48')](_0x5148ef['query'][_0xc583('0x48')]);_0x136776[_0xc583('0x49')]=qs[_0xc583('0x4a')](_[_0xc583('0x4b')](_0x5148ef[_0xc583('0x43')],_0x594a0b[_0xc583('0x4a')]),_0x1ea5da);var _0x302038=[];var _0x32cfbf=squel[_0xc583('0x4c')]()[_0xc583('0x4d')]('id')[_0xc583('0x4d')]('name')[_0xc583('0x4d')](_0xc583('0x4e'))[_0xc583('0x4f')](_0xc583('0x50'));var _0x56e370=squel[_0xc583('0x4c')]()[_0xc583('0x4d')](_0xc583('0x51'))[_0xc583('0x4d')](_0xc583('0x52'))[_0xc583('0x4d')](_0xc583('0x53'))[_0xc583('0x4f')](_0xc583('0x54'),'ui')['left_join'](_0xc583('0x55'),'u',_0xc583('0x56'));var _0x416259=squel[_0xc583('0x4c')]()[_0xc583('0x4f')](_0xc583('0x57'),'i')[_0xc583('0x58')](_0xc583('0x59'),'c',_0xc583('0x5a'))[_0xc583('0x58')](_0xc583('0x55'),'o',_0xc583('0x5b'))[_0xc583('0x58')]('whatsapp_accounts','a',_0xc583('0x5c'))[_0xc583('0x58')](_0xc583('0x5d'),'me',_0xc583('0x5e'))[_0xc583('0x58')](_0xc583('0x5f'),'it',_0xc583('0x60'))[_0xc583('0x58')](_0xc583('0x50'),'t','t.id\x20=\x20it.TagId');var _0x141faa=squel[_0xc583('0x61')]();var _0x56eb65=[];var _0x59ce34=squel['expr']();var _0x2bb764;if(_0x5148ef['query'][_0xc583('0x62')]){_0x2bb764=as[_0xc583('0x63')](_0x5148ef['query']['search']);var _0x282290=_0x2bb764[_0xc583('0x64')];for(var _0xa2b111=0x0;_0xa2b111<_0x2bb764[_0xc583('0x65')][_0xc583('0x66')];_0xa2b111++){var _0x1e3ddb=_0x2bb764[_0xc583('0x65')][_0xa2b111];var _0x43b438='i';var _0x5c60f1=_[_0xc583('0x67')](_0x1ea5da,[_0xc583('0x2e'),_0x1e3ddb[_0xc583('0x4d')]]);if(!_0x5c60f1){switch(_0x1e3ddb[_0xc583('0x4d')]){case'unreadMessages':if(_0x1e3ddb[_0xc583('0x68')]==0x1){_0x416259[_0xc583('0x69')]('`'+_0x1e3ddb['field']+'`\x20=\x200');}else{_0x416259[_0xc583('0x69')]('`'+_0x1e3ddb['field']+_0xc583('0x6a'));}break;case _0xc583('0x6b'):if(_0x1e3ddb[_0xc583('0x6c')]==='$substring'){if(_0x1e3ddb['value'][_0xc583('0x6d')]('\x20')[_0xc583('0x66')]>0x1){_0x141faa[_0x282290](_0xc583('0x6e'),qs[_0xc583('0x6f')](_0x1e3ddb['value']),null);}else{var _0x476c33='%'+_0x1e3ddb[_0xc583('0x68')]+'%';_0x141faa[_0x282290]('c.firstName\x20LIKE\x20?\x20OR\x20c.lastName\x20LIKE\x20?\x20OR\x20c.email\x20LIKE\x20?',_0x476c33,_0x476c33,_0x476c33);}}else{_0x5c60f1=_['find'](_0x1ea5da,[_0xc583('0x2e'),'ContactId']);_0x1e3ddb['field']=_0xc583('0x70');_0x49ddc3=as[_0xc583('0x71')](_0x43b438,_0x5c60f1[_0xc583('0x72')],_0x1e3ddb);_0x141faa[_0x282290](_0x49ddc3[_0xc583('0x73')],_0x49ddc3[_0xc583('0x68')]['start'],_0x49ddc3['value'][_0xc583('0x1f')]);}break;case _0xc583('0x74'):var _0x599663=_0x1e3ddb['value'][_0xc583('0x6d')](',')['map'](function(_0x3a18d6){return Number(_0x3a18d6);});_0x599663[_0xc583('0x34')](function(_0x596100){_0x59ce34['or'](_0xc583('0x75'),'%,'+_0x596100+',%');});_0x56eb65=_['union'](_0x56eb65,_0x599663);break;case _0xc583('0x76'):if(_0x1e3ddb[_0xc583('0x6c')]==='$substring'){_0x141faa[_0x282290](_0xc583('0x77'),'%'+_0x1e3ddb[_0xc583('0x68')]+'%',null);}else{_0x5c60f1=_[_0xc583('0x67')](_0x1ea5da,[_0xc583('0x2e'),_0xc583('0x39')]);_0x1e3ddb[_0xc583('0x4d')]=_0xc583('0x39');_0x49ddc3=as[_0xc583('0x71')](_0x43b438,_0x5c60f1['type'],_0x1e3ddb);_0x141faa[_0x282290](_0x49ddc3['text'],_0x49ddc3['value'][_0xc583('0x78')],_0x49ddc3['value'][_0xc583('0x1f')]);}break;case _0xc583('0x79'):_0x49ddc3=as[_0xc583('0x71')]('me',null,_0x1e3ddb);_0x141faa[_0x282290](_0x49ddc3[_0xc583('0x73')],_0x49ddc3[_0xc583('0x68')][_0xc583('0x78')],_0x49ddc3[_0xc583('0x68')][_0xc583('0x1f')]);break;}}else{var _0x49ddc3=as[_0xc583('0x71')](_0x43b438,_0x5c60f1[_0xc583('0x72')],_0x1e3ddb);_0x141faa[_0x282290](_0x49ddc3[_0xc583('0x73')],_0x49ddc3[_0xc583('0x68')][_0xc583('0x78')],_0x49ddc3[_0xc583('0x68')]['end']);}}}else{var _0x4695a3=_(_0x5148ef[_0xc583('0x43')])[_0xc583('0x7a')]()[_0xc583('0x31')](function(_0x3b3a3a){return _[_0xc583('0x7b')](_0x1ea5da,['name',_0x3b3a3a])?_0x3b3a3a:undefined;})[_0xc583('0x7c')]()[_0xc583('0x68')]();if(!_[_0xc583('0x7d')](_0x4695a3)){_0x4695a3['forEach'](function(_0x1abac9){if(_0x1abac9==='WhatsappAccountId'){_0x416259[_0xc583('0x49')](_0xc583('0x7e'),[][_0xc583('0x7f')](_0x5148ef[_0xc583('0x43')][_0x1abac9]));}else if(_0x1abac9===_0xc583('0x80')){var _0x89f9af=JSON[_0xc583('0x81')](_0x5148ef['query'][_0x1abac9])['$gte'];var _0x5e979d=JSON['parse'](_0x5148ef[_0xc583('0x43')][_0x1abac9])[_0xc583('0x82')];_0x416259[_0xc583('0x49')](_0xc583('0x83'),_0x89f9af,_0x5e979d);}else{if(_0x5148ef[_0xc583('0x43')][_0x1abac9]===_0xc583('0x84')){_0x416259[_0xc583('0x49')]('i.'+_0x1abac9+_0xc583('0x85'));}else{_0x416259[_0xc583('0x49')]('i.'+_0x1abac9+_0xc583('0x86'),_0x5148ef['query'][_0x1abac9]);}}});}if(_0x5148ef[_0xc583('0x43')][_0xc583('0x87')]){if(_0x5148ef['query']['read']==0x1){_0x416259['having'](_0xc583('0x88'));}else{_0x416259[_0xc583('0x69')](_0xc583('0x89'));}}if(_0x5148ef[_0xc583('0x43')][_0xc583('0x8a')]){_0x56eb65=_[_0xc583('0x8b')](_0x5148ef[_0xc583('0x43')][_0xc583('0x8a')])?_0x5148ef[_0xc583('0x43')]['tag']:new Array(_0x5148ef[_0xc583('0x43')][_0xc583('0x8a')]);_0x56eb65['forEach'](function(_0x5ba55){_0x59ce34['or'](_0xc583('0x75'),'%,'+_0x5ba55+',%');});}if(_0x5148ef[_0xc583('0x43')][_0xc583('0x8c')]){var _0x3658d0=_0x5148ef['query'][_0xc583('0x8c')][_0xc583('0x8d')]('\x5c','\x5c\x5c')[_0xc583('0x8d')](/'/g,'\x27\x27');if(qs[_0xc583('0x8e')](_0x3658d0)){_0x141faa['or']('i.id\x20LIKE\x20?',_0x3658d0+'%')['or']('i.phone\x20LIKE\x20?',_0x3658d0+'%');}else{_0x141faa['or']('MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)',qs[_0xc583('0x6f')](_0x3658d0))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x3658d0+'%');}}}_0x416259['where'](_0x141faa);_0x416259['group'](_0xc583('0x8f'));var _0x3e8319={'type':db[_0xc583('0x90')][_0xc583('0x91')][_0xc583('0x92')],'raw':!![]};var _0x5150b4=_0x416259[_0xc583('0x93')]();_0x5150b4[_0xc583('0x4d')](_0xc583('0x8f'));_0x5150b4['field'](_0xc583('0x94'),_0xc583('0x95'));if(_0x136776['order']){_0x136776['order'][_0xc583('0x34')](function(_0x1e4691){var _0x383b93=_0x1e4691[0x0]===_0xc583('0x96')?_0x1e4691[0x0]:'i.'+_0x1e4691[0x0];_0x416259[_0xc583('0x97')](_0x383b93,_0x1e4691[0x1]===_0xc583('0x98')?![]:!![]);});}if(!_[_0xc583('0x7d')](_0x56eb65)){_0x416259[_0xc583('0x69')](_0x59ce34);_0x5150b4['where'](_0xc583('0x99'),_0x56eb65);}BPromise[_0xc583('0x9a')]()[_0xc583('0x2b')](function(){if(!_0x2bb764){if(_0x5148ef[_0xc583('0x43')][_0xc583('0x9b')])return;_0x5150b4[_0xc583('0x49')](_0xc583('0x9c'));_0x416259[_0xc583('0x49')](_0xc583('0x9c'));return;}if(_0x5148ef[_0xc583('0x9d')][_0xc583('0x9e')]!==_0xc583('0x9f'))return;return _0x5148ef[_0xc583('0x9d')][_0xc583('0xa0')]({'attributes':['id'],'raw':!![]})[_0xc583('0x2b')](function(_0x200c14){if(_[_0xc583('0x7d')](_0x200c14)){_0x5150b4[_0xc583('0x49')](_0xc583('0xa1'));_0x416259[_0xc583('0x49')](_0xc583('0xa1'));}else{_0x5150b4[_0xc583('0x49')](_0xc583('0x7e'),_[_0xc583('0x31')](_0x200c14,'id'));_0x416259['where']('i.WhatsappAccountId\x20IN\x20?',_[_0xc583('0x31')](_0x200c14,'id'));}});})[_0xc583('0x2b')](function(){if(_0x5148ef['user']['role']===_0xc583('0x9f')&&!_0x2bb764&&!_0x5148ef[_0xc583('0x43')]['WhatsappAccountId'])return[];return db['sequelize'][_0xc583('0x43')](_0x5150b4[_0xc583('0xa2')](),_0x3e8319);})[_0xc583('0x2b')](function(_0x5e28ab){_0x48930a['count']=_0x5e28ab[_0xc583('0x66')];if(_0x48930a[_0xc583('0x22')]===0x0)return[];return db[_0xc583('0xa3')]['query'](_0x32cfbf[_0xc583('0xa2')](),_0x3e8319)[_0xc583('0x2b')](function(_0x4df76d){_0x302038=_[_0xc583('0xa4')](_0x4df76d,'id');_0x3e8319=_[_0xc583('0xa5')](_0x3e8319,{'model':db[_0xc583('0x3e')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x5148ef[_0xc583('0x43')][_0xc583('0x44')]){_0x136776[_0xc583('0x45')][_0xc583('0x34')](function(_0x47e7f8){_0x416259['field']('i.'+_0x47e7f8);});}else{_0x416259['field'](_0xc583('0x94'),_0xc583('0x95'));_0x416259[_0xc583('0x4d')](_0xc583('0xa6'),_0xc583('0xa7'));_0x416259[_0xc583('0x4d')](_0xc583('0xa8'),_0xc583('0xa9'));_0x416259['field'](_0xc583('0xaa'),_0xc583('0x96'));_0x416259[_0xc583('0x4d')](_0xc583('0xab'));_0x416259['field']('c.firstName','Contact.firstName');_0x416259[_0xc583('0x4d')](_0xc583('0xac'),_0xc583('0xad'));_0x416259[_0xc583('0x4d')](_0xc583('0xae'),_0xc583('0xaf'));_0x416259['field']('c.phone',_0xc583('0xb0'));_0x416259[_0xc583('0x4d')]('c.mobile',_0xc583('0xb1'));_0x416259[_0xc583('0x4d')](_0xc583('0xb2'),_0xc583('0xb3'));_0x416259[_0xc583('0x4d')](_0xc583('0xb4'),'Owner.fullname');_0x416259[_0xc583('0x4d')](_0xc583('0xb5'),_0xc583('0xb6'));_0x416259[_0xc583('0x4d')](_0xc583('0xb7'),_0xc583('0x32'));}if(_0x136776[_0xc583('0x24')])_0x416259[_0xc583('0x24')](_0x136776[_0xc583('0x24')]);if(_0x136776[_0xc583('0x23')])_0x416259['offset'](_0x136776[_0xc583('0x23')]);return db[_0xc583('0xa3')][_0xc583('0x43')](_0x416259['toString'](),_0x3e8319);})[_0xc583('0x2b')](function(_0x56de40){if(_0x56de40[_0xc583('0x66')]>0x0)_0x56e370[_0xc583('0x49')](_0xc583('0xb8'),_[_0xc583('0x31')](_0x56de40,'id'));return db[_0xc583('0xa3')][_0xc583('0x43')](_0x56e370[_0xc583('0xa2')](),_0x3e8319)['then'](function(_0x5a49a6){var _0x490236=_[_0xc583('0xb9')](_0x5a49a6,'WhatsappInteractionId');var _0x1e9a68=[];_0x56de40[_0xc583('0x34')](function(_0x1d17c2){_0x1e9a68[_0xc583('0xba')](updateWhatsappInteraction(_0x1d17c2,_0x302038,_0x490236));});return BPromise[_0xc583('0xbb')](_0x1e9a68);});});})[_0xc583('0x2b')](function(_0x16273a){_0x48930a[_0xc583('0xbc')]=_0x16273a;return _0x48930a;})['then'](respondWithFilteredResult(_0x374196,_0x136776))[_0xc583('0x35')](handleError(_0x374196,null));};exports[_0xc583('0xbd')]=function(_0x128cdb,_0x3ae684){var _0x424cd7={'raw':![],'where':{'id':_0x128cdb[_0xc583('0xbe')]['id']}},_0x4dea66={};_0x4dea66[_0xc583('0x42')]=_[_0xc583('0x7a')](db['WhatsappInteraction']['rawAttributes']);_0x4dea66[_0xc583('0x43')]=_[_0xc583('0x7a')](_0x128cdb[_0xc583('0x43')]);_0x4dea66[_0xc583('0x4a')]=_[_0xc583('0xbf')](_0x4dea66[_0xc583('0x42')],_0x4dea66['query']);_0x424cd7[_0xc583('0x45')]=_[_0xc583('0xbf')](_0x4dea66[_0xc583('0x42')],qs[_0xc583('0x44')](_0x128cdb[_0xc583('0x43')]['fields']));_0x424cd7[_0xc583('0x45')]=_0x424cd7['attributes'][_0xc583('0x66')]?_0x424cd7['attributes']:_0x4dea66[_0xc583('0x42')];if(_0x128cdb[_0xc583('0x43')]['includeAll']){_0x424cd7['include']=[{'all':!![]}];}_0x424cd7=_[_0xc583('0xa5')]({},_0x424cd7,_0x128cdb[_0xc583('0xc0')]);return db[_0xc583('0x3e')][_0xc583('0x67')](_0x424cd7)[_0xc583('0x2b')](handleEntityNotFound(_0x3ae684,null))['then'](respondWithResult(_0x3ae684,null))[_0xc583('0x35')](handleError(_0x3ae684,null));};exports['create']=function(_0xeed0a4,_0xd54077){return db[_0xc583('0x3e')][_0xc583('0xc1')](_0xeed0a4['body'],{})['then'](respondWithResult(_0xd54077,0xc9))['catch'](handleError(_0xd54077,null));};exports[_0xc583('0x29')]=function(_0x46632d,_0x2afb8c){if(_0x46632d['body']['id']){delete _0x46632d[_0xc583('0x79')]['id'];}return db[_0xc583('0x3e')]['find']({'where':{'id':_0x46632d[_0xc583('0xbe')]['id']}})['then'](handleEntityNotFound(_0x2afb8c,null))[_0xc583('0x2b')](saveUpdates(_0x46632d[_0xc583('0x79')],null))[_0xc583('0x2b')](respondWithResult(_0x2afb8c,null))[_0xc583('0x35')](handleError(_0x2afb8c,null));};exports['destroy']=function(_0xc84276,_0x3c3c28){return db[_0xc583('0x3e')]['find']({'where':{'id':_0xc84276['params']['id']}})['then'](handleEntityNotFound(_0x3c3c28,null))[_0xc583('0x2b')](removeEntity(_0x3c3c28,null))[_0xc583('0x35')](handleError(_0x3c3c28,null));};exports['describe']=function(_0x363a8e,_0x11b19f){return db['WhatsappInteraction']['describe']()[_0xc583('0x2b')](respondWithResult(_0x11b19f,null))['catch'](handleError(_0x11b19f,null));};exports[_0xc583('0xc2')]=function(_0x3e1c5e,_0xb8bb55,_0x215a5a){return db[_0xc583('0xc3')][_0xc583('0x67')]({'where':{'id':_0x3e1c5e['params']['id']}})[_0xc583('0x2b')](handleEntityNotFound(_0xb8bb55,null))[_0xc583('0x2b')](function(_0x45a609){if(_0x45a609){return _0x45a609[_0xc583('0xc2')](_0x3e1c5e[_0xc583('0x79')][_0xc583('0xc4')],_['omit'](_0x3e1c5e[_0xc583('0x79')],['ids','id'])||{});}})[_0xc583('0x2b')](respondWithResult(_0xb8bb55,null))[_0xc583('0x35')](handleError(_0xb8bb55,null));};exports['getMessages']=function(_0x5a3bac,_0x42b5a5,_0x583588){var _0x564e57={'raw':![],'where':{}};var _0x58d95={};var _0x5490f5={'count':0x0,'rows':[]};return db[_0xc583('0x3e')][_0xc583('0xc5')]({'where':{'id':_0x5a3bac[_0xc583('0xbe')]['id']}})[_0xc583('0x2b')](handleEntityNotFound(_0x42b5a5,null))['then'](function(_0x3f2e06){if(_0x3f2e06){_0x58d95[_0xc583('0x42')]=_[_0xc583('0x7a')](db[_0xc583('0xc3')][_0xc583('0x3f')]);_0x58d95[_0xc583('0x43')]=_[_0xc583('0x7a')](_0x5a3bac[_0xc583('0x43')]);_0x58d95[_0xc583('0x4a')]=_[_0xc583('0xbf')](_0x58d95[_0xc583('0x42')],_0x58d95[_0xc583('0x43')]);_0x564e57[_0xc583('0x45')]=_['intersection'](_0x58d95[_0xc583('0x42')],qs[_0xc583('0x44')](_0x5a3bac[_0xc583('0x43')][_0xc583('0x44')]));_0x564e57[_0xc583('0x45')]=_0x564e57[_0xc583('0x45')][_0xc583('0x66')]?_0x564e57[_0xc583('0x45')]:_0x58d95['model'];if(!_0x5a3bac[_0xc583('0x43')][_0xc583('0x46')]('nolimit')){_0x564e57['limit']=qs[_0xc583('0x24')](_0x5a3bac[_0xc583('0x43')]['limit']);_0x564e57[_0xc583('0x23')]=qs['offset'](_0x5a3bac[_0xc583('0x43')][_0xc583('0x23')]);}_0x564e57[_0xc583('0x97')]=qs[_0xc583('0x48')](_0x5a3bac[_0xc583('0x43')][_0xc583('0x48')]);_0x564e57[_0xc583('0x49')]=qs['filters'](_['pick'](_0x5a3bac[_0xc583('0x43')],_0x58d95['filters']));_0x564e57[_0xc583('0x49')]['WhatsappInteractionId']=_0x3f2e06['id'];if(_0x5a3bac[_0xc583('0x43')][_0xc583('0x8c')]){_0x564e57['where']=_[_0xc583('0xa5')](_0x564e57[_0xc583('0x49')],{'$or':_[_0xc583('0x31')](_0x564e57[_0xc583('0x45')],function(_0x52fcc2){var _0x2fb10c={};_0x2fb10c[_0x52fcc2]={'$like':'%'+_0x5a3bac[_0xc583('0x43')][_0xc583('0x8c')]+'%'};return _0x2fb10c;})});}if(_0x5a3bac['query'][_0xc583('0xc6')]){var _0x34e2a6=_0x5a3bac[_0xc583('0x43')][_0xc583('0xc6')][_0xc583('0x6d')](',');var _0x5db6a2={};_0x5db6a2[_0x34e2a6[0x0]]={'$gte':moment(_0x34e2a6[0x1])[_0xc583('0xc7')](_0xc583('0xc8'))};_0x564e57['where']=_[_0xc583('0xa5')](_0x564e57['where'],_0x5db6a2);}_0x564e57=_[_0xc583('0xa5')]({},_0x564e57,_0x5a3bac[_0xc583('0xc0')]);return db[_0xc583('0xc3')][_0xc583('0x22')]({'where':_0x564e57[_0xc583('0x49')]})[_0xc583('0x2b')](function(_0x2d0d5c){_0x5490f5[_0xc583('0x22')]=_0x2d0d5c;if(_0x5a3bac[_0xc583('0x43')][_0xc583('0xc9')]){_0x564e57[_0xc583('0xca')]=[{'all':!![]}];}return db['WhatsappMessage'][_0xc583('0xcb')](_0x564e57);})[_0xc583('0x2b')](function(_0x33549f){_0x5490f5[_0xc583('0xbc')]=_0x33549f;return _0x5490f5;});}})[_0xc583('0x2b')](respondWithFilteredResult(_0x42b5a5,_0x564e57))[_0xc583('0x35')](handleError(_0x42b5a5,null));};exports['addTags']=function(_0x259dc8,_0x35a2bd,_0x2da8a9){return db[_0xc583('0x3e')][_0xc583('0x67')]({'where':{'id':_0x259dc8[_0xc583('0xbe')]['id']}})[_0xc583('0x2b')](handleEntityNotFound(_0x35a2bd,null))[_0xc583('0x2b')](function(_0x25be6c){if(_0x25be6c){return _0x25be6c[_0xc583('0xcc')](_0x259dc8[_0xc583('0x79')][_0xc583('0xc4')],_[_0xc583('0xcd')](_0x259dc8['body'],[_0xc583('0xc4'),'id'])||{})[_0xc583('0xce')](function(){return db[_0xc583('0x74')][_0xc583('0xcb')]({'attributes':['id',_0xc583('0x2e'),_0xc583('0x4e')],'where':{'id':_0x259dc8['body'][_0xc583('0xc4')]}});})['then'](function(_0x573df8){socket['emit'](_0xc583('0xcf'),{'id':Number(_0x259dc8[_0xc583('0xbe')]['id']),'tags':_0x573df8||[]});return{'id':Number(_0x259dc8[_0xc583('0xbe')]['id']),'tags':_0x573df8||[]};});}})[_0xc583('0x2b')](respondWithResult(_0x35a2bd,null))[_0xc583('0x35')](handleError(_0x35a2bd,null));};exports['removeTags']=function(_0x5d4bd4,_0x50f9d6,_0x1aa8a2){return db[_0xc583('0x3e')][_0xc583('0x67')]({'where':{'id':_0x5d4bd4[_0xc583('0xbe')]['id']}})[_0xc583('0x2b')](handleEntityNotFound(_0x50f9d6,null))[_0xc583('0x2b')](function(_0x55dd20){if(_0x55dd20){return _0x55dd20[_0xc583('0xd0')](_0x5d4bd4['query'][_0xc583('0xc4')]);}})[_0xc583('0x2b')](respondWithStatusCode(_0x50f9d6,null))[_0xc583('0x35')](handleError(_0x50f9d6,null));};exports[_0xc583('0xd1')]=function(_0x1fea79,_0x164f98){var _0x1957ed=moment()[_0xc583('0xd2')]()[_0xc583('0xa2')]();var _0x3f7fae=path[_0xc583('0xd3')](config[_0xc583('0xd4')],_0xc583('0xd5'),_0xc583('0xd6'),_0xc583('0xd7'));var _0x1b66e4=path[_0xc583('0xd3')](config[_0xc583('0xd4')],_0xc583('0xd5'),'files','attachments');var _0x222290=path[_0xc583('0xd3')](_0x3f7fae,_0x1957ed);var _0x4c42f=util[_0xc583('0xc7')](_0xc583('0xd8'),_0x1fea79['params']['id'],_0x1957ed);var _0x115308=path['join'](_0x3f7fae,_0x4c42f);var _0x8d44b7=[];_0x8d44b7[_0xc583('0xba')]({'model':db[_0xc583('0x76')],'as':_0xc583('0x76'),'attributes':['id',_0xc583('0xd9')],'raw':!![]});_0x8d44b7[_0xc583('0xba')]({'model':db[_0xc583('0xda')],'as':_0xc583('0x6b'),'attributes':['id',_0xc583('0xdb'),'lastName'],'raw':!![]});if(_0x1fea79[_0xc583('0x43')][_0xc583('0xdc')]){_0x8d44b7['push']({'model':db[_0xc583('0xdd')],'as':_0xc583('0xdd'),'raw':!![]});}var _0x3dd023=[{'model':db['WhatsappMessage'],'as':_0xc583('0xde'),'attributes':['id',_0xc583('0x79'),_0xc583('0x80'),_0xc583('0xdf'),_0xc583('0xe0'),_0xc583('0x87')],'include':_0x8d44b7}];_0x3dd023[_0xc583('0xba')]({'model':db['WhatsappAccount'],'as':_0xc583('0xe1'),'attributes':['id',_0xc583('0x2e')]});_0x3dd023[_0xc583('0xba')]({'model':db['User'],'as':'Owner','attributes':['id','fullname']});return db[_0xc583('0x3e')][_0xc583('0x67')]({'where':{'id':_0x1fea79['params']['id']},'include':_0x3dd023})[_0xc583('0x2b')](handleEntityNotFound(_0x164f98,null))[_0xc583('0x2b')](function(_0x3cada8){if(_0x3cada8){var _0x3130e9=_0x3cada8[_0xc583('0xe2')]({'plain':!![]});fs[_0xc583('0xe3')](_0x222290);var _0x46573e={'channel':_0xc583('0xe4'),'account':_0x3130e9[_0xc583('0xe1')][_0xc583('0x2e')],'agent':_0x3130e9['Owner']?_0x3130e9[_0xc583('0xe5')]['fullname']:_0xc583('0xe6'),'createdAt':moment(_0x3130e9[_0xc583('0x80')])[_0xc583('0xc7')](_0xc583('0xc8'))[_0xc583('0xa2')](),'closedAt':_0x3130e9[_0xc583('0x3a')]?moment(_0x3130e9[_0xc583('0xe7')])[_0xc583('0xc7')](_0xc583('0xc8'))[_0xc583('0xa2')]():'','disposition':_0x3130e9['disposition'],'messages':_(_0x3130e9['Messages'])[_0xc583('0x8c')]({'secret':![]})['map'](function(_0x45270a){if(_0x45270a[_0xc583('0xdd')]){var _0x1ac795=path[_0xc583('0xd3')](_0x1b66e4,_0x45270a['Attachment'][_0xc583('0xe8')]);if(fs[_0xc583('0xe9')](_0x1ac795)){fs['createReadStream'](_0x1ac795)['pipe'](fs[_0xc583('0xea')](path[_0xc583('0xd3')](_0x222290,_0x45270a[_0xc583('0xdd')]['basename'])));}}return{'date':moment(_0x45270a['createdAt'])[_0xc583('0xc7')]('YYYY-MM-DD\x20HH:mm:ss')[_0xc583('0xa2')](),'sender':_0x45270a[_0xc583('0xdf')]===_0xc583('0xeb')?_0x45270a['User']?_0x45270a[_0xc583('0x76')]['fullname']:'System':_0x45270a[_0xc583('0x6b')][_0xc583('0xdb')]+(_0x45270a[_0xc583('0x6b')][_0xc583('0xec')]?'\x20'+_0x45270a[_0xc583('0x6b')][_0xc583('0xec')]:''),'body':_0x45270a[_0xc583('0xdd')]?_0x45270a[_0xc583('0xdd')][_0xc583('0xe8')]:_0x45270a[_0xc583('0x79')],'direction':_0x45270a[_0xc583('0xdf')]===_0xc583('0xeb')?'A':'C','secret':_0x45270a[_0xc583('0xe0')],'read':_0x45270a[_0xc583('0x87')],'attachment':_0x45270a[_0xc583('0xdd')]};})['value']()};return ejs[_0xc583('0xed')](path[_0xc583('0xd3')](config[_0xc583('0xd4')],_0xc583('0xd5'),_0xc583('0xee'),_0xc583('0xef')),{'interaction':_0x46573e})[_0xc583('0x2b')](function(_0x794d96){var _0xa21d7a=path[_0xc583('0xd3')](_0x222290,_0xc583('0xf0')+_0x3130e9['id']+'-'+_0x1957ed+_0xc583('0xf1'));var _0x34e54d={'path':_0xa21d7a,'channel':_0xc583('0xe4'),'interactionId':_0x3130e9['id']};return pdf[_0xc583('0xf2')](_0x794d96,_0x34e54d);})['then'](function(){return new BPromise(function(_0x31784f,_0x474a56){zipdir(_0x222290,{'saveTo':_0x115308},function(_0x470044,_0x38bd42){if(_0x470044)return _0x474a56(_0x470044);return _0x31784f(_0x38bd42);});})['then'](function(){return new BPromise(function(_0x2d67b6,_0x1f8a3d){rimraf(_0x222290,function(_0x19eb71){if(_0x19eb71)_0x1f8a3d(_0x19eb71);return _0x2d67b6();});});})['then'](function(){return _0x164f98['download'](_0x115308,_0x4c42f,function(_0x4b37b8){if(_0x4b37b8){console[_0xc583('0xf3')](_0xc583('0xf4'),_0x4b37b8);}else{fs[_0xc583('0xf5')](_0x115308);}});});});}else{return _0x164f98['sendStatus'](0xc8);}})[_0xc583('0x35')](handleError(_0x164f98,null));};
\ No newline at end of file
+var _0xbc48=['firstName','lastName','attachments','Attachment','createdAt','direction','secret','Account','Owner','get','mkdirSync','N.A.','closedAt','existsSync','createReadStream','pipe','out','System','basename','renderFile','views','transcript-','.pdf','createPdfFromHTML','log','unlinkSync','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','lodash','jsforce','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../components/export/pdf','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','register','sendStatus','status','json','undefined','offset','count','limit','set','Content-Range','apply','save','update','then','destroy','end','error','stack','name','map','fullname','TagIds','Tags','split','push','catch','waiting','talking','answered','total','closed','UserId','unmanaged','index','WhatsappInteraction','fieldName','type','key','model','query','filters','attributes','intersection','fields','nolimit','sort','pick','select','field','color','from','tools_tags','u.id','ui.WhatsappInteractionId','user_has_whatsapp_interactions','left_join','users','u.id\x20=\x20ui.UserId','whatsapp_interactions','cm_contacts','o.id\x20=\x20i.UserId','whatsapp_accounts','a.id\x20=\x20i.WhatsappAccountId','me.WhatsappInteractionId\x20=\x20i.id','t.id\x20=\x20it.TagId','expr','search','sqlOperator','conditions','length','find','unreadMessages','having','`\x20=\x200','`\x20>\x200','Contact','$substring','value','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','forEach','CONCAT(\x27,\x27,\x20`TagIds`,\x20\x27,\x27)\x20LIKE\x20?','union','User','operator','CONCAT_WS(\x27\x20\x27,\x20o.name,\x20o.fullname)\x20LIKE\x20?','body','keys','some','compact','isEmpty','WhatsappAccountId','where','i.WhatsappAccountId\x20IN\x20?','concat','parse','$lte','null','\x20IS\x20NULL','\x20=\x20?','read','`unreadMessages`\x20=\x200','`unreadMessages`\x20>\x200','tag','filter','replace','isNumeric','i.id\x20LIKE\x20?','MATCH\x20(me.body)\x20AGAINST\x20(?\x20IN\x20BOOLEAN\x20MODE)','group','i.id','Sequelize','QueryTypes','SELECT','clone','SUM(me.read\x20=\x200\x20AND\x20me.direction\x20=\x20\x27in\x27)','order','DESC','t.id\x20IN\x20?','i.WhatsappAccountId\x20IS\x20NOT\x20NULL','user','getWhatsappAccounts','i.WhatsappAccountId\x20IS\x20NULL','role','sequelize','toString','keyBy','merge','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','contactName','Contact.firstName','c.lastName','Contact.lastName','c.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','rows','show','params','includeAll','include','options','create','describe','addMessage','WhatsappMessage','ids','getMessages','findOne','rawAttributes','hasOwnProperty','WhatsappInteractionId','$gte','format','YYYY-MM-DD\x20HH:mm:ss','findAll','addTags','omit','spread','Tag','emit','whatsappInteractionTags:save','removeTags','download','unix','join','root','files','tmp','server','transcript-%d-%s.zip','CmContact'];(function(_0x5617d8,_0x4e0a79){var _0xc4307a=function(_0xafdc4f){while(--_0xafdc4f){_0x5617d8['push'](_0x5617d8['shift']());}};_0xc4307a(++_0x4e0a79);}(_0xbc48,0x111));var _0x8bc4=function(_0x5855e,_0x18d7a3){_0x5855e=_0x5855e-0x0;var _0x58276c=_0xbc48[_0x5855e];return _0x58276c;};'use strict';var emlformat=require(_0x8bc4('0x0'));var rimraf=require(_0x8bc4('0x1'));var zipdir=require(_0x8bc4('0x2'));var jsonpatch=require(_0x8bc4('0x3'));var rp=require('request-promise');var moment=require(_0x8bc4('0x4'));var BPromise=require(_0x8bc4('0x5'));var Mustache=require(_0x8bc4('0x6'));var util=require(_0x8bc4('0x7'));var path=require('path');var sox=require(_0x8bc4('0x8'));var csv=require('to-csv');var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x8bc4('0x9'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x8bc4('0xa'));var deskjs=require('desk.js');var toCsv=require(_0x8bc4('0xb'));var querystring=require(_0x8bc4('0xc'));var Papa=require(_0x8bc4('0xd'));var Redis=require(_0x8bc4('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x8bc4('0xf'));var as=require(_0x8bc4('0x10'));var pdf=require(_0x8bc4('0x11'));var hardwareService=require(_0x8bc4('0x12'));var logger=require(_0x8bc4('0x13'))(_0x8bc4('0x14'));var utils=require(_0x8bc4('0x15'));var config=require(_0x8bc4('0x16'));var licenseUtil=require(_0x8bc4('0x17'));var db=require(_0x8bc4('0x18'))['db'];config[_0x8bc4('0x19')]=_[_0x8bc4('0x1a')](config[_0x8bc4('0x19')],{'host':_0x8bc4('0x1b'),'port':0x18eb});var socket=require(_0x8bc4('0x1c'))(new Redis(config['redis']));require(_0x8bc4('0x1d'))[_0x8bc4('0x1e')](socket);function respondWithStatusCode(_0x1bffd0,_0xca2e4b){_0xca2e4b=_0xca2e4b||0xcc;return function(_0x2e1213){if(_0x2e1213){return _0x1bffd0[_0x8bc4('0x1f')](_0xca2e4b);}return _0x1bffd0['status'](_0xca2e4b)['end']();};}function respondWithResult(_0x50e59b,_0x36714f){_0x36714f=_0x36714f||0xc8;return function(_0x556cef){if(_0x556cef){return _0x50e59b[_0x8bc4('0x20')](_0x36714f)[_0x8bc4('0x21')](_0x556cef);}};}function respondWithFilteredResult(_0xbd600f,_0x5982e6){return function(_0x13348c){if(_0x13348c){var _0x968929=typeof _0x5982e6['offset']===_0x8bc4('0x22')&&typeof _0x5982e6['limit']===_0x8bc4('0x22');var _0x54400a=_0x13348c['count'];var _0x1da3d7=_0x968929?0x0:_0x5982e6[_0x8bc4('0x23')];var _0x415598=_0x968929?_0x13348c[_0x8bc4('0x24')]:_0x5982e6[_0x8bc4('0x23')]+_0x5982e6[_0x8bc4('0x25')];var _0x26aa99;if(_0x415598>=_0x54400a){_0x415598=_0x54400a;_0x26aa99=0xc8;}else{_0x26aa99=0xce;}_0xbd600f[_0x8bc4('0x20')](_0x26aa99);return _0xbd600f[_0x8bc4('0x26')](_0x8bc4('0x27'),_0x1da3d7+'-'+_0x415598+'/'+_0x54400a)[_0x8bc4('0x21')](_0x13348c);}return null;};}function patchUpdates(_0x4fd827){return function(_0x2a68c9){try{jsonpatch[_0x8bc4('0x28')](_0x2a68c9,_0x4fd827,!![]);}catch(_0x23329e){return BPromise['reject'](_0x23329e);}return _0x2a68c9[_0x8bc4('0x29')]();};}function saveUpdates(_0x247eb8,_0x53aa1b){return function(_0x3eac08){if(_0x3eac08){return _0x3eac08[_0x8bc4('0x2a')](_0x247eb8)[_0x8bc4('0x2b')](function(_0x4cb042){return _0x4cb042;});}return null;};}function removeEntity(_0x324e59,_0x5e80f7){return function(_0x57b437){if(_0x57b437){return _0x57b437[_0x8bc4('0x2c')]()[_0x8bc4('0x2b')](function(){_0x324e59[_0x8bc4('0x20')](0xcc)[_0x8bc4('0x2d')]();});}};}function handleEntityNotFound(_0x16c2a8,_0x14c7ec){return function(_0x26133e){if(!_0x26133e){_0x16c2a8[_0x8bc4('0x1f')](0x194);}return _0x26133e;};}function handleError(_0x4a32a7,_0x56f462){_0x56f462=_0x56f462||0x1f4;return function(_0x2f9cf4){logger[_0x8bc4('0x2e')](_0x2f9cf4[_0x8bc4('0x2f')]);if(_0x2f9cf4[_0x8bc4('0x30')]){delete _0x2f9cf4[_0x8bc4('0x30')];}_0x4a32a7[_0x8bc4('0x20')](_0x56f462)['send'](_0x2f9cf4);};}function getInteractionUsers(_0xf57c8a,_0x88f990){return new BPromise(function(_0xb006b8,_0x26452e){try{if(_0x88f990[_0xf57c8a['id']]){_0xf57c8a['Users']=_[_0x8bc4('0x31')](_0x88f990[_0xf57c8a['id']],function(_0x1a0947){return{'id':_0x1a0947['id'],'fullname':_0x1a0947[_0x8bc4('0x32')]};});}}catch(_0x3af06f){_0x26452e(_0x3af06f);}_0xb006b8(_0xf57c8a);});}function getInteractionTags(_0x268473,_0x5d8d20){return new BPromise(function(_0x23368a,_0x4adb4e){try{if(_0x268473[_0x8bc4('0x33')]){_0x268473[_0x8bc4('0x34')]=[];_0x268473[_0x8bc4('0x33')][_0x8bc4('0x35')](',')['forEach'](function(_0x5dbe7c){_0x268473[_0x8bc4('0x34')][_0x8bc4('0x36')](_0x5d8d20[_0x5dbe7c]);});}delete _0x268473[_0x8bc4('0x33')];}catch(_0xc7f140){_0x4adb4e(_0xc7f140);}_0x23368a(_0x268473);});}function updateWhatsappInteraction(_0x52de3b,_0x4dbbc5,_0x592820){return new BPromise(function(_0x3f1cf8,_0x8ee9c5){return getInteractionUsers(_0x52de3b,_0x592820)[_0x8bc4('0x2b')](function(_0x48c7d6){return getInteractionTags(_0x48c7d6,_0x4dbbc5);})['then'](function(_0x52f358){return getStateInteraction(_0x52f358);})['then'](function(_0x4c4d8d){_0x3f1cf8(_0x4c4d8d);})[_0x8bc4('0x37')](function(_0x7e562f){_0x8ee9c5(_0x7e562f);});});}function getStateInteraction(_0x42597a){return new BPromise(function(_0x4e0558){_0x42597a[_0x8bc4('0x38')]=0x0;_0x42597a[_0x8bc4('0x39')]=0x0;_0x42597a[_0x8bc4('0x3a')]=0x0;_0x42597a['unmanaged']=0x0;_0x42597a[_0x8bc4('0x3b')]=0x0;if(!_0x42597a[_0x8bc4('0x3c')]&&!_0x42597a[_0x8bc4('0x3d')]){_0x42597a[_0x8bc4('0x38')]+=0x1;}if(!_0x42597a[_0x8bc4('0x3c')]&&_0x42597a['UserId']){_0x42597a[_0x8bc4('0x39')]+=0x1;if(_0x42597a[_0x8bc4('0x38')]){_0x42597a[_0x8bc4('0x38')]-=0x1;}}if(_0x42597a['closed']&&_0x42597a[_0x8bc4('0x3d')]){_0x42597a[_0x8bc4('0x3a')]+=0x1;if(_0x42597a[_0x8bc4('0x39')]){_0x42597a[_0x8bc4('0x39')]-=0x1;}}if(_0x42597a[_0x8bc4('0x3c')]&&!_0x42597a[_0x8bc4('0x3d')]){_0x42597a[_0x8bc4('0x3e')]+=0x1;if(_0x42597a[_0x8bc4('0x38')]){_0x42597a[_0x8bc4('0x38')]-=0x1;}}_0x42597a[_0x8bc4('0x3b')]+=0x1;_0x4e0558(_0x42597a);});}exports[_0x8bc4('0x3f')]=function(_0x500eff,_0x51ca1f){var _0x405142={},_0x1f89f2={},_0x596ad9={'count':0x0,'rows':[]};var _0x1c8e75=_[_0x8bc4('0x31')](db[_0x8bc4('0x40')]['rawAttributes'],function(_0x513aa5){return{'name':_0x513aa5[_0x8bc4('0x41')],'type':_0x513aa5[_0x8bc4('0x42')][_0x8bc4('0x43')]};});_0x1f89f2[_0x8bc4('0x44')]=_[_0x8bc4('0x31')](_0x1c8e75,_0x8bc4('0x30'));_0x1f89f2[_0x8bc4('0x45')]=_['keys'](_0x500eff['query']);_0x1f89f2[_0x8bc4('0x46')]=_['intersection'](_0x1f89f2['model'],_0x1f89f2[_0x8bc4('0x45')]);_0x405142[_0x8bc4('0x47')]=_[_0x8bc4('0x48')](_0x1f89f2[_0x8bc4('0x44')],qs[_0x8bc4('0x49')](_0x500eff[_0x8bc4('0x45')]['fields']));_0x405142[_0x8bc4('0x47')]=_0x405142[_0x8bc4('0x47')]['length']?_0x405142[_0x8bc4('0x47')]:_0x1f89f2['model'];if(!_0x500eff[_0x8bc4('0x45')]['hasOwnProperty'](_0x8bc4('0x4a'))){_0x405142[_0x8bc4('0x25')]=qs[_0x8bc4('0x25')](_0x500eff['query'][_0x8bc4('0x25')]);_0x405142[_0x8bc4('0x23')]=qs[_0x8bc4('0x23')](_0x500eff[_0x8bc4('0x45')]['offset']);}_0x405142['order']=qs[_0x8bc4('0x4b')](_0x500eff[_0x8bc4('0x45')][_0x8bc4('0x4b')]);_0x405142['where']=qs['filters'](_[_0x8bc4('0x4c')](_0x500eff['query'],_0x1f89f2[_0x8bc4('0x46')]),_0x1c8e75);var _0x38da9c=[];var _0x1c758c=squel[_0x8bc4('0x4d')]()[_0x8bc4('0x4e')]('id')[_0x8bc4('0x4e')](_0x8bc4('0x30'))[_0x8bc4('0x4e')](_0x8bc4('0x4f'))[_0x8bc4('0x50')](_0x8bc4('0x51'));var _0x3386a1=squel[_0x8bc4('0x4d')]()[_0x8bc4('0x4e')](_0x8bc4('0x52'))[_0x8bc4('0x4e')]('u.fullname')[_0x8bc4('0x4e')](_0x8bc4('0x53'))[_0x8bc4('0x50')](_0x8bc4('0x54'),'ui')[_0x8bc4('0x55')](_0x8bc4('0x56'),'u',_0x8bc4('0x57'));var _0x277c39=squel['select']()[_0x8bc4('0x50')](_0x8bc4('0x58'),'i')[_0x8bc4('0x55')](_0x8bc4('0x59'),'c','c.id\x20=\x20i.ContactId\x20AND\x20c.deletedAt\x20IS\x20NULL')[_0x8bc4('0x55')]('users','o',_0x8bc4('0x5a'))['left_join'](_0x8bc4('0x5b'),'a',_0x8bc4('0x5c'))[_0x8bc4('0x55')]('whatsapp_messages','me',_0x8bc4('0x5d'))[_0x8bc4('0x55')]('whatsapp_interaction_has_tags','it','it.WhatsappInteractionId\x20=\x20i.id')[_0x8bc4('0x55')]('tools_tags','t',_0x8bc4('0x5e'));var _0xc4f351=squel[_0x8bc4('0x5f')]();var _0x484fc2=[];var _0x371854=squel['expr']();var _0x2a2ab1;if(_0x500eff[_0x8bc4('0x45')][_0x8bc4('0x60')]){_0x2a2ab1=as['parseSearch'](_0x500eff[_0x8bc4('0x45')][_0x8bc4('0x60')]);var _0x5b3799=_0x2a2ab1[_0x8bc4('0x61')];for(var _0x5808a9=0x0;_0x5808a9<_0x2a2ab1[_0x8bc4('0x62')][_0x8bc4('0x63')];_0x5808a9++){var _0x216734=_0x2a2ab1[_0x8bc4('0x62')][_0x5808a9];var _0x27561f='i';var _0x5ed187=_[_0x8bc4('0x64')](_0x1c8e75,['name',_0x216734[_0x8bc4('0x4e')]]);if(!_0x5ed187){switch(_0x216734['field']){case _0x8bc4('0x65'):if(_0x216734['value']==0x1){_0x277c39[_0x8bc4('0x66')]('`'+_0x216734['field']+_0x8bc4('0x67'));}else{_0x277c39['having']('`'+_0x216734['field']+_0x8bc4('0x68'));}break;case _0x8bc4('0x69'):if(_0x216734['operator']===_0x8bc4('0x6a')){if(_0x216734[_0x8bc4('0x6b')][_0x8bc4('0x35')]('\x20')['length']>0x1){_0xc4f351[_0x5b3799](_0x8bc4('0x6c'),qs[_0x8bc4('0x6d')](_0x216734[_0x8bc4('0x6b')]),null);}else{var _0x332243='%'+_0x216734[_0x8bc4('0x6b')]+'%';_0xc4f351[_0x5b3799](_0x8bc4('0x6e'),_0x332243,_0x332243,_0x332243);}}else{_0x5ed187=_[_0x8bc4('0x64')](_0x1c8e75,[_0x8bc4('0x30'),_0x8bc4('0x6f')]);_0x216734[_0x8bc4('0x4e')]='ContactId';_0x9d2a88=as[_0x8bc4('0x70')](_0x27561f,_0x5ed187['type'],_0x216734);_0xc4f351[_0x5b3799](_0x9d2a88[_0x8bc4('0x71')],_0x9d2a88[_0x8bc4('0x6b')][_0x8bc4('0x72')],_0x9d2a88[_0x8bc4('0x6b')][_0x8bc4('0x2d')]);}break;case'Tag':var _0x527df1=_0x216734[_0x8bc4('0x6b')]['split'](',')[_0x8bc4('0x31')](function(_0x39511c){return Number(_0x39511c);});_0x527df1[_0x8bc4('0x73')](function(_0x5587fa){_0x371854['or'](_0x8bc4('0x74'),'%,'+_0x5587fa+',%');});_0x484fc2=_[_0x8bc4('0x75')](_0x484fc2,_0x527df1);break;case _0x8bc4('0x76'):if(_0x216734[_0x8bc4('0x77')]==='$substring'){_0xc4f351[_0x5b3799](_0x8bc4('0x78'),'%'+_0x216734[_0x8bc4('0x6b')]+'%',null);}else{_0x5ed187=_['find'](_0x1c8e75,['name',_0x8bc4('0x3d')]);_0x216734[_0x8bc4('0x4e')]=_0x8bc4('0x3d');_0x9d2a88=as['buildExpression'](_0x27561f,_0x5ed187[_0x8bc4('0x42')],_0x216734);_0xc4f351[_0x5b3799](_0x9d2a88['text'],_0x9d2a88['value'][_0x8bc4('0x72')],_0x9d2a88[_0x8bc4('0x6b')][_0x8bc4('0x2d')]);}break;case _0x8bc4('0x79'):_0x9d2a88=as['buildExpression']('me',null,_0x216734);_0xc4f351[_0x5b3799](_0x9d2a88[_0x8bc4('0x71')],_0x9d2a88['value'][_0x8bc4('0x72')],_0x9d2a88[_0x8bc4('0x6b')][_0x8bc4('0x2d')]);break;}}else{var _0x9d2a88=as[_0x8bc4('0x70')](_0x27561f,_0x5ed187['type'],_0x216734);_0xc4f351[_0x5b3799](_0x9d2a88[_0x8bc4('0x71')],_0x9d2a88['value']['start'],_0x9d2a88[_0x8bc4('0x6b')]['end']);}}}else{var _0x5b4869=_(_0x500eff[_0x8bc4('0x45')])[_0x8bc4('0x7a')]()[_0x8bc4('0x31')](function(_0x3b39de){return _[_0x8bc4('0x7b')](_0x1c8e75,[_0x8bc4('0x30'),_0x3b39de])?_0x3b39de:undefined;})[_0x8bc4('0x7c')]()[_0x8bc4('0x6b')]();if(!_[_0x8bc4('0x7d')](_0x5b4869)){_0x5b4869['forEach'](function(_0x24eea6){if(_0x24eea6===_0x8bc4('0x7e')){_0x277c39[_0x8bc4('0x7f')](_0x8bc4('0x80'),[][_0x8bc4('0x81')](_0x500eff[_0x8bc4('0x45')][_0x24eea6]));}else if(_0x24eea6==='createdAt'){var _0x3e3ae5=JSON[_0x8bc4('0x82')](_0x500eff['query'][_0x24eea6])['$gte'];var _0x4f3916=JSON['parse'](_0x500eff[_0x8bc4('0x45')][_0x24eea6])[_0x8bc4('0x83')];_0x277c39[_0x8bc4('0x7f')]('i.createdAt\x20BETWEEN\x20?\x20AND\x20?',_0x3e3ae5,_0x4f3916);}else{if(_0x500eff['query'][_0x24eea6]===_0x8bc4('0x84')){_0x277c39[_0x8bc4('0x7f')]('i.'+_0x24eea6+_0x8bc4('0x85'));}else{_0x277c39[_0x8bc4('0x7f')]('i.'+_0x24eea6+_0x8bc4('0x86'),_0x500eff[_0x8bc4('0x45')][_0x24eea6]);}}});}if(_0x500eff[_0x8bc4('0x45')][_0x8bc4('0x87')]){if(_0x500eff[_0x8bc4('0x45')][_0x8bc4('0x87')]==0x1){_0x277c39['having'](_0x8bc4('0x88'));}else{_0x277c39[_0x8bc4('0x66')](_0x8bc4('0x89'));}}if(_0x500eff[_0x8bc4('0x45')]['tag']){_0x484fc2=_['isArray'](_0x500eff[_0x8bc4('0x45')][_0x8bc4('0x8a')])?_0x500eff[_0x8bc4('0x45')][_0x8bc4('0x8a')]:new Array(_0x500eff[_0x8bc4('0x45')][_0x8bc4('0x8a')]);_0x484fc2[_0x8bc4('0x73')](function(_0x31bd66){_0x371854['or'](_0x8bc4('0x74'),'%,'+_0x31bd66+',%');});}if(_0x500eff['query'][_0x8bc4('0x8b')]){var _0x3f1d7c=_0x500eff[_0x8bc4('0x45')][_0x8bc4('0x8b')]['replace']('\x5c','\x5c\x5c')[_0x8bc4('0x8c')](/'/g,'\x27\x27');if(qs[_0x8bc4('0x8d')](_0x3f1d7c)){_0xc4f351['or'](_0x8bc4('0x8e'),_0x3f1d7c+'%')['or']('i.phone\x20LIKE\x20?',_0x3f1d7c+'%');}else{_0xc4f351['or'](_0x8bc4('0x8f'),qs[_0x8bc4('0x6d')](_0x3f1d7c))['or']('CONCAT(c.firstName,\x20\x27\x20\x27,\x20c.lastName)\x20LIKE\x20?',_0x3f1d7c+'%');}}}_0x277c39[_0x8bc4('0x7f')](_0xc4f351);_0x277c39[_0x8bc4('0x90')](_0x8bc4('0x91'));var _0x10113d={'type':db[_0x8bc4('0x92')][_0x8bc4('0x93')][_0x8bc4('0x94')],'raw':!![]};var _0x51428e=_0x277c39[_0x8bc4('0x95')]();_0x51428e['field'](_0x8bc4('0x91'));_0x51428e[_0x8bc4('0x4e')](_0x8bc4('0x96'),_0x8bc4('0x65'));if(_0x405142[_0x8bc4('0x97')]){_0x405142['order'][_0x8bc4('0x73')](function(_0x3be3c3){var _0x58be6d=_0x3be3c3[0x0]==='contactName'?_0x3be3c3[0x0]:'i.'+_0x3be3c3[0x0];_0x277c39['order'](_0x58be6d,_0x3be3c3[0x1]===_0x8bc4('0x98')?![]:!![]);});}if(!_[_0x8bc4('0x7d')](_0x484fc2)){_0x277c39['having'](_0x371854);_0x51428e['where'](_0x8bc4('0x99'),_0x484fc2);}BPromise['resolve']()[_0x8bc4('0x2b')](function(){if(!_0x2a2ab1){if(_0x500eff[_0x8bc4('0x45')][_0x8bc4('0x7e')])return;_0x51428e[_0x8bc4('0x7f')](_0x8bc4('0x9a'));_0x277c39[_0x8bc4('0x7f')](_0x8bc4('0x9a'));return;}if(_0x500eff[_0x8bc4('0x9b')]['role']!=='agent')return;return _0x500eff[_0x8bc4('0x9b')][_0x8bc4('0x9c')]({'attributes':['id'],'raw':!![]})[_0x8bc4('0x2b')](function(_0x472dc1){if(_['isEmpty'](_0x472dc1)){_0x51428e[_0x8bc4('0x7f')](_0x8bc4('0x9d'));_0x277c39['where'](_0x8bc4('0x9d'));}else{_0x51428e['where']('i.WhatsappAccountId\x20IN\x20?',_[_0x8bc4('0x31')](_0x472dc1,'id'));_0x277c39[_0x8bc4('0x7f')](_0x8bc4('0x80'),_['map'](_0x472dc1,'id'));}});})[_0x8bc4('0x2b')](function(){if(_0x500eff['user'][_0x8bc4('0x9e')]==='agent'&&!_0x2a2ab1&&!_0x500eff[_0x8bc4('0x45')][_0x8bc4('0x7e')])return[];return db[_0x8bc4('0x9f')][_0x8bc4('0x45')](_0x51428e[_0x8bc4('0xa0')](),_0x10113d);})[_0x8bc4('0x2b')](function(_0x409e04){_0x596ad9['count']=_0x409e04[_0x8bc4('0x63')];if(_0x596ad9[_0x8bc4('0x24')]===0x0)return[];return db['sequelize'][_0x8bc4('0x45')](_0x1c758c[_0x8bc4('0xa0')](),_0x10113d)['then'](function(_0x105dbe){_0x38da9c=_[_0x8bc4('0xa1')](_0x105dbe,'id');_0x10113d=_[_0x8bc4('0xa2')](_0x10113d,{'model':db[_0x8bc4('0x40')],'mapToModel':!![],'raw':!![],'nest':!![]});if(_0x500eff[_0x8bc4('0x45')]['fields']){_0x405142[_0x8bc4('0x47')][_0x8bc4('0x73')](function(_0x25759d){_0x277c39[_0x8bc4('0x4e')]('i.'+_0x25759d);});}else{_0x277c39[_0x8bc4('0x4e')](_0x8bc4('0x96'),_0x8bc4('0x65'));_0x277c39[_0x8bc4('0x4e')](_0x8bc4('0xa3'),'Account.key');_0x277c39[_0x8bc4('0x4e')](_0x8bc4('0xa4'),_0x8bc4('0xa5'));_0x277c39['field'](_0x8bc4('0xa6'),_0x8bc4('0xa7'));_0x277c39[_0x8bc4('0x4e')]('i.*');_0x277c39[_0x8bc4('0x4e')]('c.firstName',_0x8bc4('0xa8'));_0x277c39[_0x8bc4('0x4e')](_0x8bc4('0xa9'),_0x8bc4('0xaa'));_0x277c39[_0x8bc4('0x4e')](_0x8bc4('0xab'),'Contact.email');_0x277c39['field'](_0x8bc4('0xac'),_0x8bc4('0xad'));_0x277c39[_0x8bc4('0x4e')](_0x8bc4('0xae'),_0x8bc4('0xaf'));_0x277c39['field'](_0x8bc4('0xb0'),_0x8bc4('0xb1'));_0x277c39['field'](_0x8bc4('0xb2'),_0x8bc4('0xb3'));_0x277c39['field'](_0x8bc4('0xb4'),_0x8bc4('0xb5'));_0x277c39[_0x8bc4('0x4e')](_0x8bc4('0xb6'),_0x8bc4('0x33'));}if(_0x405142[_0x8bc4('0x25')])_0x277c39[_0x8bc4('0x25')](_0x405142[_0x8bc4('0x25')]);if(_0x405142[_0x8bc4('0x23')])_0x277c39[_0x8bc4('0x23')](_0x405142['offset']);return db[_0x8bc4('0x9f')][_0x8bc4('0x45')](_0x277c39[_0x8bc4('0xa0')](),_0x10113d);})[_0x8bc4('0x2b')](function(_0x1b3add){if(_0x1b3add['length']>0x0)_0x3386a1[_0x8bc4('0x7f')](_0x8bc4('0xb7'),_[_0x8bc4('0x31')](_0x1b3add,'id'));return db[_0x8bc4('0x9f')][_0x8bc4('0x45')](_0x3386a1[_0x8bc4('0xa0')](),_0x10113d)[_0x8bc4('0x2b')](function(_0x37b687){var _0xce95eb=_[_0x8bc4('0xb8')](_0x37b687,'WhatsappInteractionId');var _0x37d4d3=[];_0x1b3add[_0x8bc4('0x73')](function(_0x39f7f3){_0x37d4d3[_0x8bc4('0x36')](updateWhatsappInteraction(_0x39f7f3,_0x38da9c,_0xce95eb));});return BPromise['all'](_0x37d4d3);});});})[_0x8bc4('0x2b')](function(_0x387ae5){_0x596ad9[_0x8bc4('0xb9')]=_0x387ae5;return _0x596ad9;})[_0x8bc4('0x2b')](respondWithFilteredResult(_0x51ca1f,_0x405142))[_0x8bc4('0x37')](handleError(_0x51ca1f,null));};exports[_0x8bc4('0xba')]=function(_0x1e6371,_0x405df7){var _0x2d03e3={'raw':![],'where':{'id':_0x1e6371[_0x8bc4('0xbb')]['id']}},_0x20da54={};_0x20da54['model']=_['keys'](db['WhatsappInteraction']['rawAttributes']);_0x20da54['query']=_[_0x8bc4('0x7a')](_0x1e6371['query']);_0x20da54[_0x8bc4('0x46')]=_[_0x8bc4('0x48')](_0x20da54[_0x8bc4('0x44')],_0x20da54[_0x8bc4('0x45')]);_0x2d03e3['attributes']=_['intersection'](_0x20da54[_0x8bc4('0x44')],qs[_0x8bc4('0x49')](_0x1e6371[_0x8bc4('0x45')][_0x8bc4('0x49')]));_0x2d03e3[_0x8bc4('0x47')]=_0x2d03e3[_0x8bc4('0x47')][_0x8bc4('0x63')]?_0x2d03e3[_0x8bc4('0x47')]:_0x20da54['model'];if(_0x1e6371[_0x8bc4('0x45')][_0x8bc4('0xbc')]){_0x2d03e3[_0x8bc4('0xbd')]=[{'all':!![]}];}_0x2d03e3=_[_0x8bc4('0xa2')]({},_0x2d03e3,_0x1e6371[_0x8bc4('0xbe')]);return db['WhatsappInteraction']['find'](_0x2d03e3)[_0x8bc4('0x2b')](handleEntityNotFound(_0x405df7,null))[_0x8bc4('0x2b')](respondWithResult(_0x405df7,null))[_0x8bc4('0x37')](handleError(_0x405df7,null));};exports[_0x8bc4('0xbf')]=function(_0x3ca68c,_0x4dcf85){return db[_0x8bc4('0x40')][_0x8bc4('0xbf')](_0x3ca68c['body'],{})[_0x8bc4('0x2b')](respondWithResult(_0x4dcf85,0xc9))[_0x8bc4('0x37')](handleError(_0x4dcf85,null));};exports[_0x8bc4('0x2a')]=function(_0xe9c7b,_0x4a4490){if(_0xe9c7b[_0x8bc4('0x79')]['id']){delete _0xe9c7b[_0x8bc4('0x79')]['id'];}return db[_0x8bc4('0x40')][_0x8bc4('0x64')]({'where':{'id':_0xe9c7b[_0x8bc4('0xbb')]['id']}})[_0x8bc4('0x2b')](handleEntityNotFound(_0x4a4490,null))[_0x8bc4('0x2b')](saveUpdates(_0xe9c7b[_0x8bc4('0x79')],null))[_0x8bc4('0x2b')](respondWithResult(_0x4a4490,null))[_0x8bc4('0x37')](handleError(_0x4a4490,null));};exports[_0x8bc4('0x2c')]=function(_0x4d6ea9,_0x198cb4){return db[_0x8bc4('0x40')]['find']({'where':{'id':_0x4d6ea9[_0x8bc4('0xbb')]['id']}})['then'](handleEntityNotFound(_0x198cb4,null))[_0x8bc4('0x2b')](removeEntity(_0x198cb4,null))[_0x8bc4('0x37')](handleError(_0x198cb4,null));};exports[_0x8bc4('0xc0')]=function(_0x512b0d,_0xee5535){return db[_0x8bc4('0x40')]['describe']()['then'](respondWithResult(_0xee5535,null))['catch'](handleError(_0xee5535,null));};exports[_0x8bc4('0xc1')]=function(_0x1701c2,_0x37d488,_0x22b316){return db[_0x8bc4('0xc2')][_0x8bc4('0x64')]({'where':{'id':_0x1701c2[_0x8bc4('0xbb')]['id']}})[_0x8bc4('0x2b')](handleEntityNotFound(_0x37d488,null))['then'](function(_0x4585e8){if(_0x4585e8){return _0x4585e8['addMessage'](_0x1701c2[_0x8bc4('0x79')][_0x8bc4('0xc3')],_['omit'](_0x1701c2[_0x8bc4('0x79')],[_0x8bc4('0xc3'),'id'])||{});}})[_0x8bc4('0x2b')](respondWithResult(_0x37d488,null))['catch'](handleError(_0x37d488,null));};exports[_0x8bc4('0xc4')]=function(_0x371a30,_0x1c703a,_0x3fe085){var _0x7eb586={'raw':![],'where':{}};var _0x4a82e9={};var _0x467a31={'count':0x0,'rows':[]};return db[_0x8bc4('0x40')][_0x8bc4('0xc5')]({'where':{'id':_0x371a30[_0x8bc4('0xbb')]['id']}})[_0x8bc4('0x2b')](handleEntityNotFound(_0x1c703a,null))[_0x8bc4('0x2b')](function(_0x198a36){if(_0x198a36){_0x4a82e9[_0x8bc4('0x44')]=_[_0x8bc4('0x7a')](db[_0x8bc4('0xc2')][_0x8bc4('0xc6')]);_0x4a82e9[_0x8bc4('0x45')]=_[_0x8bc4('0x7a')](_0x371a30['query']);_0x4a82e9['filters']=_[_0x8bc4('0x48')](_0x4a82e9[_0x8bc4('0x44')],_0x4a82e9[_0x8bc4('0x45')]);_0x7eb586['attributes']=_[_0x8bc4('0x48')](_0x4a82e9[_0x8bc4('0x44')],qs[_0x8bc4('0x49')](_0x371a30[_0x8bc4('0x45')][_0x8bc4('0x49')]));_0x7eb586['attributes']=_0x7eb586[_0x8bc4('0x47')]['length']?_0x7eb586[_0x8bc4('0x47')]:_0x4a82e9[_0x8bc4('0x44')];if(!_0x371a30[_0x8bc4('0x45')][_0x8bc4('0xc7')](_0x8bc4('0x4a'))){_0x7eb586[_0x8bc4('0x25')]=qs[_0x8bc4('0x25')](_0x371a30[_0x8bc4('0x45')]['limit']);_0x7eb586[_0x8bc4('0x23')]=qs['offset'](_0x371a30['query']['offset']);}_0x7eb586[_0x8bc4('0x97')]=qs[_0x8bc4('0x4b')](_0x371a30[_0x8bc4('0x45')][_0x8bc4('0x4b')]);_0x7eb586['where']=qs['filters'](_['pick'](_0x371a30['query'],_0x4a82e9[_0x8bc4('0x46')]));_0x7eb586['where'][_0x8bc4('0xc8')]=_0x198a36['id'];if(_0x371a30[_0x8bc4('0x45')][_0x8bc4('0x8b')]){_0x7eb586[_0x8bc4('0x7f')]=_[_0x8bc4('0xa2')](_0x7eb586[_0x8bc4('0x7f')],{'$or':_[_0x8bc4('0x31')](_0x7eb586[_0x8bc4('0x47')],function(_0x5d27d6){var _0x558ad4={};_0x558ad4[_0x5d27d6]={'$like':'%'+_0x371a30[_0x8bc4('0x45')][_0x8bc4('0x8b')]+'%'};return _0x558ad4;})});}if(_0x371a30[_0x8bc4('0x45')]['$gte']){var _0x24e1a3=_0x371a30[_0x8bc4('0x45')][_0x8bc4('0xc9')][_0x8bc4('0x35')](',');var _0x63c801={};_0x63c801[_0x24e1a3[0x0]]={'$gte':moment(_0x24e1a3[0x1])[_0x8bc4('0xca')](_0x8bc4('0xcb'))};_0x7eb586[_0x8bc4('0x7f')]=_[_0x8bc4('0xa2')](_0x7eb586[_0x8bc4('0x7f')],_0x63c801);}_0x7eb586=_[_0x8bc4('0xa2')]({},_0x7eb586,_0x371a30[_0x8bc4('0xbe')]);return db['WhatsappMessage'][_0x8bc4('0x24')]({'where':_0x7eb586['where']})[_0x8bc4('0x2b')](function(_0x4ecc79){_0x467a31[_0x8bc4('0x24')]=_0x4ecc79;if(_0x371a30[_0x8bc4('0x45')][_0x8bc4('0xbc')]){_0x7eb586[_0x8bc4('0xbd')]=[{'all':!![]}];}return db['WhatsappMessage'][_0x8bc4('0xcc')](_0x7eb586);})[_0x8bc4('0x2b')](function(_0x35bcd8){_0x467a31['rows']=_0x35bcd8;return _0x467a31;});}})[_0x8bc4('0x2b')](respondWithFilteredResult(_0x1c703a,_0x7eb586))[_0x8bc4('0x37')](handleError(_0x1c703a,null));};exports[_0x8bc4('0xcd')]=function(_0x4679d7,_0x31740f,_0x3190e2){return db[_0x8bc4('0x40')]['find']({'where':{'id':_0x4679d7[_0x8bc4('0xbb')]['id']}})['then'](handleEntityNotFound(_0x31740f,null))[_0x8bc4('0x2b')](function(_0x24528){if(_0x24528){return _0x24528['setTags'](_0x4679d7[_0x8bc4('0x79')][_0x8bc4('0xc3')],_[_0x8bc4('0xce')](_0x4679d7[_0x8bc4('0x79')],[_0x8bc4('0xc3'),'id'])||{})[_0x8bc4('0xcf')](function(){return db[_0x8bc4('0xd0')][_0x8bc4('0xcc')]({'attributes':['id',_0x8bc4('0x30'),_0x8bc4('0x4f')],'where':{'id':_0x4679d7[_0x8bc4('0x79')][_0x8bc4('0xc3')]}});})[_0x8bc4('0x2b')](function(_0x1417e1){socket[_0x8bc4('0xd1')](_0x8bc4('0xd2'),{'id':Number(_0x4679d7[_0x8bc4('0xbb')]['id']),'tags':_0x1417e1||[]});return{'id':Number(_0x4679d7[_0x8bc4('0xbb')]['id']),'tags':_0x1417e1||[]};});}})[_0x8bc4('0x2b')](respondWithResult(_0x31740f,null))['catch'](handleError(_0x31740f,null));};exports['removeTags']=function(_0x5b0a9f,_0x28e4de,_0xe111a8){return db[_0x8bc4('0x40')][_0x8bc4('0x64')]({'where':{'id':_0x5b0a9f['params']['id']}})[_0x8bc4('0x2b')](handleEntityNotFound(_0x28e4de,null))[_0x8bc4('0x2b')](function(_0x5e3e88){if(_0x5e3e88){return _0x5e3e88[_0x8bc4('0xd3')](_0x5b0a9f['query'][_0x8bc4('0xc3')]);}})[_0x8bc4('0x2b')](respondWithStatusCode(_0x28e4de,null))[_0x8bc4('0x37')](handleError(_0x28e4de,null));};exports[_0x8bc4('0xd4')]=function(_0x32aaa9,_0x158277){var _0x1e91d7=moment()[_0x8bc4('0xd5')]()[_0x8bc4('0xa0')]();var _0x432f14=path[_0x8bc4('0xd6')](config[_0x8bc4('0xd7')],'server',_0x8bc4('0xd8'),_0x8bc4('0xd9'));var _0x2f0f58=path[_0x8bc4('0xd6')](config[_0x8bc4('0xd7')],_0x8bc4('0xda'),_0x8bc4('0xd8'),'attachments');var _0x3339f3=path[_0x8bc4('0xd6')](_0x432f14,_0x1e91d7);var _0x20dc2e=util[_0x8bc4('0xca')](_0x8bc4('0xdb'),_0x32aaa9[_0x8bc4('0xbb')]['id'],_0x1e91d7);var _0x5db02b=path[_0x8bc4('0xd6')](_0x432f14,_0x20dc2e);var _0x396219=[];_0x396219[_0x8bc4('0x36')]({'model':db[_0x8bc4('0x76')],'as':'User','attributes':['id',_0x8bc4('0x32')],'raw':!![]});_0x396219[_0x8bc4('0x36')]({'model':db[_0x8bc4('0xdc')],'as':_0x8bc4('0x69'),'attributes':['id',_0x8bc4('0xdd'),_0x8bc4('0xde')],'raw':!![]});if(_0x32aaa9[_0x8bc4('0x45')][_0x8bc4('0xdf')]){_0x396219[_0x8bc4('0x36')]({'model':db[_0x8bc4('0xe0')],'as':_0x8bc4('0xe0'),'raw':!![]});}var _0x31f3d5=[{'model':db['WhatsappMessage'],'as':'Messages','attributes':['id','body',_0x8bc4('0xe1'),_0x8bc4('0xe2'),_0x8bc4('0xe3'),'read'],'include':_0x396219}];_0x31f3d5[_0x8bc4('0x36')]({'model':db['WhatsappAccount'],'as':_0x8bc4('0xe4'),'attributes':['id',_0x8bc4('0x30')]});_0x31f3d5[_0x8bc4('0x36')]({'model':db[_0x8bc4('0x76')],'as':_0x8bc4('0xe5'),'attributes':['id',_0x8bc4('0x32')]});return db[_0x8bc4('0x40')][_0x8bc4('0x64')]({'where':{'id':_0x32aaa9[_0x8bc4('0xbb')]['id']},'include':_0x31f3d5})['then'](handleEntityNotFound(_0x158277,null))[_0x8bc4('0x2b')](function(_0x5c6563){if(_0x5c6563){var _0x341d84=_0x5c6563[_0x8bc4('0xe6')]({'plain':!![]});fs[_0x8bc4('0xe7')](_0x3339f3);var _0x4de69e={'channel':'Whatsapp','account':_0x341d84[_0x8bc4('0xe4')]['name'],'agent':_0x341d84[_0x8bc4('0xe5')]?_0x341d84[_0x8bc4('0xe5')][_0x8bc4('0x32')]:_0x8bc4('0xe8'),'createdAt':moment(_0x341d84[_0x8bc4('0xe1')])['format'](_0x8bc4('0xcb'))[_0x8bc4('0xa0')](),'closedAt':_0x341d84[_0x8bc4('0x3c')]?moment(_0x341d84[_0x8bc4('0xe9')])[_0x8bc4('0xca')](_0x8bc4('0xcb'))[_0x8bc4('0xa0')]():'','disposition':_0x341d84['disposition'],'messages':_(_0x341d84['Messages'])[_0x8bc4('0x8b')]({'secret':![]})['map'](function(_0x3a9301){if(_0x3a9301[_0x8bc4('0xe0')]){var _0x2dc9ee=path['join'](_0x2f0f58,_0x3a9301['Attachment']['basename']);if(fs[_0x8bc4('0xea')](_0x2dc9ee)){fs[_0x8bc4('0xeb')](_0x2dc9ee)[_0x8bc4('0xec')](fs['createWriteStream'](path[_0x8bc4('0xd6')](_0x3339f3,_0x3a9301[_0x8bc4('0xe0')]['basename'])));}}return{'date':moment(_0x3a9301[_0x8bc4('0xe1')])[_0x8bc4('0xca')]('YYYY-MM-DD\x20HH:mm:ss')[_0x8bc4('0xa0')](),'sender':_0x3a9301[_0x8bc4('0xe2')]===_0x8bc4('0xed')?_0x3a9301[_0x8bc4('0x76')]?_0x3a9301[_0x8bc4('0x76')]['fullname']:_0x8bc4('0xee'):_0x3a9301[_0x8bc4('0x69')][_0x8bc4('0xdd')]+(_0x3a9301[_0x8bc4('0x69')][_0x8bc4('0xde')]?'\x20'+_0x3a9301[_0x8bc4('0x69')][_0x8bc4('0xde')]:''),'body':_0x3a9301[_0x8bc4('0xe0')]?_0x3a9301[_0x8bc4('0xe0')][_0x8bc4('0xef')]:_0x3a9301['body'],'direction':_0x3a9301['direction']===_0x8bc4('0xed')?'A':'C','secret':_0x3a9301[_0x8bc4('0xe3')],'read':_0x3a9301['read'],'attachment':_0x3a9301[_0x8bc4('0xe0')]};})[_0x8bc4('0x6b')]()};return ejs[_0x8bc4('0xf0')](path['join'](config['root'],_0x8bc4('0xda'),_0x8bc4('0xf1'),'downloadInteraction.ejs'),{'interaction':_0x4de69e})[_0x8bc4('0x2b')](function(_0x388712){var _0x1e4adb=path[_0x8bc4('0xd6')](_0x3339f3,_0x8bc4('0xf2')+_0x341d84['id']+'-'+_0x1e91d7+_0x8bc4('0xf3'));var _0x7a358b={'path':_0x1e4adb,'channel':'Whatsapp','interactionId':_0x341d84['id']};return pdf[_0x8bc4('0xf4')](_0x388712,_0x7a358b);})[_0x8bc4('0x2b')](function(){return new BPromise(function(_0x5a255b,_0x4ba706){zipdir(_0x3339f3,{'saveTo':_0x5db02b},function(_0x19b7d3,_0x5c106e){if(_0x19b7d3)return _0x4ba706(_0x19b7d3);return _0x5a255b(_0x5c106e);});})['then'](function(){return new BPromise(function(_0x1856a9,_0x16d0f0){rimraf(_0x3339f3,function(_0x29ade2){if(_0x29ade2)_0x16d0f0(_0x29ade2);return _0x1856a9();});});})[_0x8bc4('0x2b')](function(){return _0x158277['download'](_0x5db02b,_0x20dc2e,function(_0x86448){if(_0x86448){console[_0x8bc4('0xf5')]('err',_0x86448);}else{fs[_0x8bc4('0xf6')](_0x5db02b);}});});});}else{return _0x158277[_0x8bc4('0x1f')](0xc8);}})[_0x8bc4('0x37')](handleError(_0x158277,null));};
\ No newline at end of file
index 16f208b..a402d8a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x515d=['unreadMessages','emit','catch','hasOwnProperty','exports','../../mysqldb','WhatsappInteraction','WhatsappMessage','setMaxListeners','save','update','remove','getUsers','then','setDataValue','Users','findAll'];(function(_0x1b0640,_0x30b23d){var _0x4aa1ec=function(_0x59fbc8){while(--_0x59fbc8){_0x1b0640['push'](_0x1b0640['shift']());}};_0x4aa1ec(++_0x30b23d);}(_0x515d,0x104));var _0xd515=function(_0x535f1d,_0x259e98){_0x535f1d=_0x535f1d-0x0;var _0x3f4076=_0x515d[_0x535f1d];return _0x3f4076;};'use strict';var EventEmitter=require('events');var WhatsappInteraction=require(_0xd515('0x0'))['db'][_0xd515('0x1')];var WhatsappMessage=require(_0xd515('0x0'))['db'][_0xd515('0x2')];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents[_0xd515('0x3')](0x0);var events={'afterCreate':_0xd515('0x4'),'afterUpdate':_0xd515('0x5'),'afterDestroy':_0xd515('0x6')};function emitEvent(_0x51e08b){return function(_0x1bd639,_0x544f53,_0x4d578b){_0x1bd639[_0xd515('0x7')]({'attributes':['id'],'raw':!![]})[_0xd515('0x8')](function(_0x43d633){_0x1bd639[_0xd515('0x9')](_0xd515('0xa'),_0x43d633['map'](function(_0x31d6b6){return{'id':_0x31d6b6['id']};}));return WhatsappMessage[_0xd515('0xb')]({'where':{'WhatsappInteractionId':_0x1bd639['id'],'direction':'in','read':![]},'raw':!![]});})[_0xd515('0x8')](function(_0x423156){_0x1bd639[_0xd515('0x9')](_0xd515('0xc'),_0x423156['length']);WhatsappInteractionEvents[_0xd515('0xd')](_0x51e08b+':'+_0x1bd639['id'],_0x1bd639);WhatsappInteractionEvents[_0xd515('0xd')](_0x51e08b,_0x1bd639);_0x4d578b(null);})[_0xd515('0xe')](_0x4d578b(null));};}for(var e in events){if(events[_0xd515('0xf')](e)){var event=events[e];WhatsappInteraction['hook'](e,emitEvent(event));}}module[_0xd515('0x10')]=WhatsappInteractionEvents;
\ No newline at end of file
+var _0x073e=['hook','events','../../mysqldb','WhatsappInteraction','update','remove','getUsers','then','setDataValue','Users','map','findAll','length','emit','catch','hasOwnProperty'];(function(_0x25dcff,_0x31cdb8){var _0x45efef=function(_0x4ac2a8){while(--_0x4ac2a8){_0x25dcff['push'](_0x25dcff['shift']());}};_0x45efef(++_0x31cdb8);}(_0x073e,0x181));var _0xe073=function(_0x9e6439,_0x1686bb){_0x9e6439=_0x9e6439-0x0;var _0x58fb8f=_0x073e[_0x9e6439];return _0x58fb8f;};'use strict';var EventEmitter=require(_0xe073('0x0'));var WhatsappInteraction=require(_0xe073('0x1'))['db'][_0xe073('0x2')];var WhatsappMessage=require(_0xe073('0x1'))['db']['WhatsappMessage'];var WhatsappInteractionEvents=new EventEmitter();WhatsappInteractionEvents['setMaxListeners'](0x0);var events={'afterCreate':'save','afterUpdate':_0xe073('0x3'),'afterDestroy':_0xe073('0x4')};function emitEvent(_0x29444b){return function(_0x5ce161,_0x5b9324,_0x4bc6b3){_0x5ce161[_0xe073('0x5')]({'attributes':['id'],'raw':!![]})[_0xe073('0x6')](function(_0x1bcaae){_0x5ce161[_0xe073('0x7')](_0xe073('0x8'),_0x1bcaae[_0xe073('0x9')](function(_0x483f85){return{'id':_0x483f85['id']};}));return WhatsappMessage[_0xe073('0xa')]({'where':{'WhatsappInteractionId':_0x5ce161['id'],'direction':'in','read':![]},'raw':!![]});})[_0xe073('0x6')](function(_0x46757c){_0x5ce161[_0xe073('0x7')]('unreadMessages',_0x46757c[_0xe073('0xb')]);WhatsappInteractionEvents[_0xe073('0xc')](_0x29444b+':'+_0x5ce161['id'],_0x5ce161);WhatsappInteractionEvents[_0xe073('0xc')](_0x29444b,_0x5ce161);_0x4bc6b3(null);})[_0xe073('0xd')](_0x4bc6b3(null));};}for(var e in events){if(events[_0xe073('0xe')](e)){var event=events[e];WhatsappInteraction[_0xe073('0xf')](e,emitEvent(event));}}module['exports']=WhatsappInteractionEvents;
\ No newline at end of file
index f700e73..8013b11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5a5=['api','moment','bluebird','path','rimraf','../../config/environment','./whatsappInteraction.attributes','exports','define','WhatsappInteraction','whatsapp_interactions','closedAt','YYYY-MM-DD\x20HH:mm:ss','lodash'];(function(_0x105e87,_0x460888){var _0x51615b=function(_0x398c18){while(--_0x398c18){_0x105e87['push'](_0x105e87['shift']());}};_0x51615b(++_0x460888);}(_0xc5a5,0x1b1));var _0x5c5a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xc5a5[_0x20a584];return _0x4b41a8;};'use strict';var _=require(_0x5c5a('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x5c5a('0x1'));var moment=require(_0x5c5a('0x2'));var BPromise=require(_0x5c5a('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x5c5a('0x4'));var rimraf=require(_0x5c5a('0x5'));var config=require(_0x5c5a('0x6'));var attributes=require(_0x5c5a('0x7'));module[_0x5c5a('0x8')]=function(_0x4588f4,_0x5e923a){return _0x4588f4[_0x5c5a('0x9')](_0x5c5a('0xa'),attributes,{'tableName':_0x5c5a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x473f4c,_0x40411d,_0x3743d6){if(_0x473f4c['changed']('closed')){_0x473f4c[_0x5c5a('0xc')]=moment()['format'](_0x5c5a('0xd'));}_0x3743d6(null,_0x473f4c);}}});};
\ No newline at end of file
+var _0x69a2=['request-promise','path','rimraf','../../config/environment','./whatsappInteraction.attributes','exports','define','whatsapp_interactions','closedAt','format','lodash','../../config/logger','moment','bluebird'];(function(_0x2ea20d,_0x5e8e3c){var _0x3ba66a=function(_0x164ca6){while(--_0x164ca6){_0x2ea20d['push'](_0x2ea20d['shift']());}};_0x3ba66a(++_0x5e8e3c);}(_0x69a2,0x106));var _0x269a=function(_0x200d39,_0x53191d){_0x200d39=_0x200d39-0x0;var _0x54a1e0=_0x69a2[_0x200d39];return _0x54a1e0;};'use strict';var _=require(_0x269a('0x0'));var util=require('util');var logger=require(_0x269a('0x1'))('api');var moment=require(_0x269a('0x2'));var BPromise=require(_0x269a('0x3'));var rp=require(_0x269a('0x4'));var fs=require('fs');var path=require(_0x269a('0x5'));var rimraf=require(_0x269a('0x6'));var config=require(_0x269a('0x7'));var attributes=require(_0x269a('0x8'));module[_0x269a('0x9')]=function(_0x59ecaf,_0x1e8ab0){return _0x59ecaf[_0x269a('0xa')]('WhatsappInteraction',attributes,{'tableName':_0x269a('0xb'),'paranoid':![],'indexes':[],'timestamps':!![],'hooks':{'beforeUpdate':function(_0x3028df,_0xb3ec49,_0x2cdec5){if(_0x3028df['changed']('closed')){_0x3028df[_0x269a('0xc')]=moment()[_0x269a('0xd')]('YYYY-MM-DD\x20HH:mm:ss');}_0x2cdec5(null,_0x3028df);}}});};
\ No newline at end of file
index 6838270..5ee61cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcdff=['../../config/environment','jayson/promise','client','http','redis','defaults','localhost','socket.io-emitter','./whatsappInteraction.socket','request','info','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','code','WhatsappInteraction,\x20%s,\x20%s','message','request\x20sent','result','UpdateWhatsappInteraction','WhatsappInteraction','update','body','options','raw','where','attributes','then','catch','AddTagsToWhatsappInteraction','addTags','ids','omit','spread','AddTags','lodash','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc'];(function(_0x2fd61e,_0x408859){var _0x55ee6b=function(_0x175115){while(--_0x175115){_0x2fd61e['push'](_0x2fd61e['shift']());}};_0x55ee6b(++_0x408859);}(_0xcdff,0x100));var _0xfcdf=function(_0x5889c6,_0x5aa8bf){_0x5889c6=_0x5889c6-0x0;var _0x23a572=_0xcdff[_0x5889c6];return _0x23a572;};'use strict';var _=require(_0xfcdf('0x0'));var util=require('util');var moment=require(_0xfcdf('0x1'));var BPromise=require(_0xfcdf('0x2'));var rs=require(_0xfcdf('0x3'));var fs=require('fs');var Redis=require(_0xfcdf('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xfcdf('0x5'));var logger=require(_0xfcdf('0x6'))(_0xfcdf('0x7'));var config=require(_0xfcdf('0x8'));var jayson=require(_0xfcdf('0x9'));var client=jayson[_0xfcdf('0xa')][_0xfcdf('0xb')]({'port':0x232a});config[_0xfcdf('0xc')]=_[_0xfcdf('0xd')](config[_0xfcdf('0xc')],{'host':_0xfcdf('0xe'),'port':0x18eb});var socket=require(_0xfcdf('0xf'))(new Redis(config['redis']));require(_0xfcdf('0x10'))['register'](socket);function respondWithRpcPromise(_0xaf3fc8,_0x2eb9df,_0x16eb4f){return new BPromise(function(_0x1b7a24,_0x2eb558){return client[_0xfcdf('0x11')](_0xaf3fc8,_0x16eb4f)['then'](function(_0x32ab7d){logger[_0xfcdf('0x12')]('WhatsappInteraction,\x20%s,\x20%s',_0x2eb9df,'request\x20sent');logger[_0xfcdf('0x13')](_0xfcdf('0x14'),_0x2eb9df,'request\x20sent',JSON[_0xfcdf('0x15')](_0x32ab7d));if(_0x32ab7d['error']){if(_0x32ab7d[_0xfcdf('0x16')][_0xfcdf('0x17')]===0x1f4){logger[_0xfcdf('0x16')](_0xfcdf('0x18'),_0x2eb9df,_0x32ab7d[_0xfcdf('0x16')][_0xfcdf('0x19')]);return _0x2eb558(_0x32ab7d[_0xfcdf('0x16')][_0xfcdf('0x19')]);}logger['error'](_0xfcdf('0x18'),_0x2eb9df,_0x32ab7d['error'][_0xfcdf('0x19')]);return _0x1b7a24(_0x32ab7d[_0xfcdf('0x16')]['message']);}else{logger[_0xfcdf('0x12')](_0xfcdf('0x18'),_0x2eb9df,_0xfcdf('0x1a'));_0x1b7a24(_0x32ab7d[_0xfcdf('0x1b')][_0xfcdf('0x19')]);}})['catch'](function(_0x306294){logger[_0xfcdf('0x16')](_0xfcdf('0x18'),_0x2eb9df,_0x306294);_0x2eb558(_0x306294);});});}exports[_0xfcdf('0x1c')]=function(_0x435255){var _0x186b0e=this;return new Promise(function(_0x419c03,_0x1cc8b1){return db[_0xfcdf('0x1d')][_0xfcdf('0x1e')](_0x435255[_0xfcdf('0x1f')],{'raw':_0x435255['options']?_0x435255[_0xfcdf('0x20')][_0xfcdf('0x21')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x435255[_0xfcdf('0x20')]?_0x435255[_0xfcdf('0x20')][_0xfcdf('0x22')]||null:null,'attributes':_0x435255[_0xfcdf('0x20')]?_0x435255[_0xfcdf('0x20')][_0xfcdf('0x23')]||null:null,'limit':_0x435255[_0xfcdf('0x20')]?_0x435255['options']['limit']||null:null})[_0xfcdf('0x24')](function(_0xd6485){logger[_0xfcdf('0x12')](_0xfcdf('0x1c'),_0x435255);logger[_0xfcdf('0x13')](_0xfcdf('0x1c'),_0x435255,JSON['stringify'](_0xd6485));_0x419c03(_0xd6485);})[_0xfcdf('0x25')](function(_0x51869a){logger['error'](_0xfcdf('0x1c'),_0x51869a[_0xfcdf('0x19')],_0x435255);_0x1cc8b1(_0x186b0e[_0xfcdf('0x16')](0x1f4,_0x51869a[_0xfcdf('0x19')]));});});};exports[_0xfcdf('0x26')]=function(_0x3a3951){return new Promise(function(_0x4d7250,_0xb2e10d){return db['WhatsappInteraction']['find']({'where':_0x3a3951['options']?_0x3a3951[_0xfcdf('0x20')]['where']||null:null})[_0xfcdf('0x24')](function(_0x13429f){if(_0x13429f){return _0x13429f[_0xfcdf('0x27')](_0x3a3951['body'][_0xfcdf('0x28')],_[_0xfcdf('0x29')](_0x3a3951[_0xfcdf('0x1f')],['ids','id'])||{});}})[_0xfcdf('0x2a')](function(_0x5d1f9f){logger[_0xfcdf('0x12')](_0xfcdf('0x2b'),_0x3a3951);logger['debug']('AddTags',_0x3a3951,JSON[_0xfcdf('0x15')](_0x5d1f9f));_0x4d7250(_0x5d1f9f);})['catch'](function(_0xe39989){logger[_0xfcdf('0x16')](_0xfcdf('0x2b'),_0xe39989[_0xfcdf('0x19')],_0x3a3951);_0xb2e10d(_this[_0xfcdf('0x16')](0x1f4,_0xe39989['message']));});});};
\ No newline at end of file
+var _0xdefc=['result','catch','UpdateWhatsappInteraction','WhatsappInteraction','update','body','raw','options','where','attributes','limit','AddTagsToWhatsappInteraction','find','addTags','ids','omit','spread','AddTags','lodash','util','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','redis','localhost','socket.io-emitter','./whatsappInteraction.socket','register','request','info','WhatsappInteraction,\x20%s,\x20%s','request\x20sent','debug','WhatsappInteraction,\x20%s,\x20%s,\x20%s','stringify','error','message'];(function(_0x3df223,_0x1740fc){var _0x562d11=function(_0x343009){while(--_0x343009){_0x3df223['push'](_0x3df223['shift']());}};_0x562d11(++_0x1740fc);}(_0xdefc,0x1b6));var _0xcdef=function(_0x5c4de8,_0x5a248d){_0x5c4de8=_0x5c4de8-0x0;var _0x402aea=_0xdefc[_0x5c4de8];return _0x402aea;};'use strict';var _=require(_0xcdef('0x0'));var util=require(_0xcdef('0x1'));var moment=require('moment');var BPromise=require(_0xcdef('0x2'));var rs=require(_0xcdef('0x3'));var fs=require('fs');var Redis=require(_0xcdef('0x4'));var db=require(_0xcdef('0x5'))['db'];var utils=require(_0xcdef('0x6'));var logger=require(_0xcdef('0x7'))('rpc');var config=require(_0xcdef('0x8'));var jayson=require(_0xcdef('0x9'));var client=jayson['client']['http']({'port':0x232a});config[_0xcdef('0xa')]=_['defaults'](config[_0xcdef('0xa')],{'host':_0xcdef('0xb'),'port':0x18eb});var socket=require(_0xcdef('0xc'))(new Redis(config[_0xcdef('0xa')]));require(_0xcdef('0xd'))[_0xcdef('0xe')](socket);function respondWithRpcPromise(_0x5b5f96,_0x1ec924,_0x3bee53){return new BPromise(function(_0xe9660f,_0x42a167){return client[_0xcdef('0xf')](_0x5b5f96,_0x3bee53)['then'](function(_0x18eea8){logger[_0xcdef('0x10')](_0xcdef('0x11'),_0x1ec924,_0xcdef('0x12'));logger[_0xcdef('0x13')](_0xcdef('0x14'),_0x1ec924,'request\x20sent',JSON[_0xcdef('0x15')](_0x18eea8));if(_0x18eea8[_0xcdef('0x16')]){if(_0x18eea8[_0xcdef('0x16')]['code']===0x1f4){logger['error'](_0xcdef('0x11'),_0x1ec924,_0x18eea8['error'][_0xcdef('0x17')]);return _0x42a167(_0x18eea8[_0xcdef('0x16')]['message']);}logger['error'](_0xcdef('0x11'),_0x1ec924,_0x18eea8['error'][_0xcdef('0x17')]);return _0xe9660f(_0x18eea8[_0xcdef('0x16')][_0xcdef('0x17')]);}else{logger['info'](_0xcdef('0x11'),_0x1ec924,'request\x20sent');_0xe9660f(_0x18eea8[_0xcdef('0x18')]['message']);}})[_0xcdef('0x19')](function(_0x151e64){logger[_0xcdef('0x16')](_0xcdef('0x11'),_0x1ec924,_0x151e64);_0x42a167(_0x151e64);});});}exports[_0xcdef('0x1a')]=function(_0xd93856){var _0x3fe72e=this;return new Promise(function(_0x3fc583,_0x1b8e82){return db[_0xcdef('0x1b')][_0xcdef('0x1c')](_0xd93856[_0xcdef('0x1d')],{'raw':_0xd93856['options']?_0xd93856['options'][_0xcdef('0x1e')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xd93856[_0xcdef('0x1f')]?_0xd93856['options'][_0xcdef('0x20')]||null:null,'attributes':_0xd93856[_0xcdef('0x1f')]?_0xd93856[_0xcdef('0x1f')][_0xcdef('0x21')]||null:null,'limit':_0xd93856[_0xcdef('0x1f')]?_0xd93856[_0xcdef('0x1f')][_0xcdef('0x22')]||null:null})['then'](function(_0x1cb0eb){logger[_0xcdef('0x10')](_0xcdef('0x1a'),_0xd93856);logger[_0xcdef('0x13')]('UpdateWhatsappInteraction',_0xd93856,JSON[_0xcdef('0x15')](_0x1cb0eb));_0x3fc583(_0x1cb0eb);})[_0xcdef('0x19')](function(_0x4939fe){logger['error'](_0xcdef('0x1a'),_0x4939fe['message'],_0xd93856);_0x1b8e82(_0x3fe72e[_0xcdef('0x16')](0x1f4,_0x4939fe[_0xcdef('0x17')]));});});};exports[_0xcdef('0x23')]=function(_0x588321){return new Promise(function(_0x2c2c87,_0x37c09f){return db[_0xcdef('0x1b')][_0xcdef('0x24')]({'where':_0x588321[_0xcdef('0x1f')]?_0x588321[_0xcdef('0x1f')][_0xcdef('0x20')]||null:null})['then'](function(_0x26910f){if(_0x26910f){return _0x26910f[_0xcdef('0x25')](_0x588321[_0xcdef('0x1d')][_0xcdef('0x26')],_[_0xcdef('0x27')](_0x588321[_0xcdef('0x1d')],['ids','id'])||{});}})[_0xcdef('0x28')](function(_0x184cc6){logger[_0xcdef('0x10')](_0xcdef('0x29'),_0x588321);logger['debug'](_0xcdef('0x29'),_0x588321,JSON[_0xcdef('0x15')](_0x184cc6));_0x2c2c87(_0x184cc6);})[_0xcdef('0x19')](function(_0x1f6c05){logger[_0xcdef('0x16')]('AddTags',_0x1f6c05['message'],_0x588321);_0x37c09f(_this[_0xcdef('0x16')](0x1f4,_0x1f6c05[_0xcdef('0x17')]));});});};
\ No newline at end of file
index 0681857..b35e3ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x15d2=['update','emit','register','length','whatsappInteraction:','./whatsappInteraction.events','save'];(function(_0x519e9e,_0x564a7f){var _0x3b1d21=function(_0x1ce20c){while(--_0x1ce20c){_0x519e9e['push'](_0x519e9e['shift']());}};_0x3b1d21(++_0x564a7f);}(_0x15d2,0x101));var _0x215d=function(_0x21aec3,_0x5c97e9){_0x21aec3=_0x21aec3-0x0;var _0x288bbc=_0x15d2[_0x21aec3];return _0x288bbc;};'use strict';var WhatsappInteractionEvents=require(_0x215d('0x0'));var events=[_0x215d('0x1'),'remove',_0x215d('0x2')];function createListener(_0x58cfbb,_0x21534b){return function(_0x4bb29d){_0x21534b[_0x215d('0x3')](_0x58cfbb,_0x4bb29d);};}function removeListener(_0x530268,_0x19359c){return function(){WhatsappInteractionEvents['removeListener'](_0x530268,_0x19359c);};}exports[_0x215d('0x4')]=function(_0x40b8ec){for(var _0x2aeff5=0x0,_0x3062ae=events[_0x215d('0x5')];_0x2aeff5<_0x3062ae;_0x2aeff5++){var _0x14075=events[_0x2aeff5];var _0x3e0a81=createListener(_0x215d('0x6')+_0x14075,_0x40b8ec);WhatsappInteractionEvents['on'](_0x14075,_0x3e0a81);}};
\ No newline at end of file
+var _0xea30=['save','remove','update','removeListener','register','length'];(function(_0x11125a,_0x187d8c){var _0x242aa0=function(_0x4d1998){while(--_0x4d1998){_0x11125a['push'](_0x11125a['shift']());}};_0x242aa0(++_0x187d8c);}(_0xea30,0x186));var _0x0ea3=function(_0x3a841f,_0x377450){_0x3a841f=_0x3a841f-0x0;var _0x3c17fe=_0xea30[_0x3a841f];return _0x3c17fe;};'use strict';var WhatsappInteractionEvents=require('./whatsappInteraction.events');var events=[_0x0ea3('0x0'),_0x0ea3('0x1'),_0x0ea3('0x2')];function createListener(_0x39c309,_0x5a0a31){return function(_0x38d5de){_0x5a0a31['emit'](_0x39c309,_0x38d5de);};}function removeListener(_0x304a73,_0x5a41b1){return function(){WhatsappInteractionEvents[_0x0ea3('0x3')](_0x304a73,_0x5a41b1);};}exports[_0x0ea3('0x4')]=function(_0x5e514d){for(var _0x31c039=0x0,_0x2cd228=events[_0x0ea3('0x5')];_0x31c039<_0x2cd228;_0x31c039++){var _0x3c5e72=events[_0x31c039];var _0x3c1d15=createListener('whatsappInteraction:'+_0x3c5e72,_0x5e514d);WhatsappInteractionEvents['on'](_0x3c5e72,_0x3c1d15);}};
\ No newline at end of file
index 82dc9f3..2a453b1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c15=['tracked','whatsappmessage:create','create','/:id/status','status','put','update','accept','reject','delete','destroy','exports','multer','util','path','express','Router','../../components/auth/service','../../components/interaction/service','./whatsappMessage.controller','get','/describe','isAuthenticated','describe','/:id','show','post'];(function(_0x618414,_0x1a7a60){var _0x21c19a=function(_0x507b17){while(--_0x507b17){_0x618414['push'](_0x618414['shift']());}};_0x21c19a(++_0x1a7a60);}(_0x9c15,0x1d7));var _0x59c1=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9c15[_0x3947c9];return _0x2e7871;};'use strict';var multer=require(_0x59c1('0x0'));var util=require(_0x59c1('0x1'));var path=require(_0x59c1('0x2'));var timeout=require('connect-timeout');var express=require(_0x59c1('0x3'));var router=express[_0x59c1('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x59c1('0x5'));var interaction=require(_0x59c1('0x6'));var config=require('../../config/environment');var controller=require(_0x59c1('0x7'));router[_0x59c1('0x8')]('/',auth['isAuthenticated'](),controller['index']);router[_0x59c1('0x8')](_0x59c1('0x9'),auth[_0x59c1('0xa')](),controller[_0x59c1('0xb')]);router[_0x59c1('0x8')](_0x59c1('0xc'),auth['isAuthenticated'](),controller[_0x59c1('0xd')]);router[_0x59c1('0xe')]('/',auth[_0x59c1('0xa')](),interaction[_0x59c1('0xf')]('whatsapp',_0x59c1('0x10')),controller[_0x59c1('0x11')]);router[_0x59c1('0xe')](_0x59c1('0x12'),controller[_0x59c1('0x13')]);router[_0x59c1('0x14')](_0x59c1('0xc'),auth[_0x59c1('0xa')](),controller[_0x59c1('0x15')]);router[_0x59c1('0x14')]('/:id/accept',auth[_0x59c1('0xa')](),controller[_0x59c1('0x16')]);router[_0x59c1('0x14')]('/:id/reject',auth[_0x59c1('0xa')](),controller[_0x59c1('0x17')]);router[_0x59c1('0x18')](_0x59c1('0xc'),auth['isAuthenticated'](),controller[_0x59c1('0x19')]);module[_0x59c1('0x1a')]=router;
\ No newline at end of file
+var _0x1120=['reject','delete','util','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappMessage.controller','get','index','/describe','isAuthenticated','describe','/:id','show','post','whatsapp','whatsappmessage:create','/:id/status','put','/:id/accept','accept','/:id/reject'];(function(_0xcc9bf7,_0x3dd357){var _0x5a6155=function(_0x2fdcf3){while(--_0x2fdcf3){_0xcc9bf7['push'](_0xcc9bf7['shift']());}};_0x5a6155(++_0x3dd357);}(_0x1120,0x147));var _0x0112=function(_0xf71120,_0x25b7f9){_0xf71120=_0xf71120-0x0;var _0xbe2fd3=_0x1120[_0xf71120];return _0xbe2fd3;};'use strict';var multer=require('multer');var util=require(_0x0112('0x0'));var path=require('path');var timeout=require(_0x0112('0x1'));var express=require(_0x0112('0x2'));var router=express['Router']();var fs_extra=require(_0x0112('0x3'));var auth=require(_0x0112('0x4'));var interaction=require(_0x0112('0x5'));var config=require(_0x0112('0x6'));var controller=require(_0x0112('0x7'));router[_0x0112('0x8')]('/',auth['isAuthenticated'](),controller[_0x0112('0x9')]);router[_0x0112('0x8')](_0x0112('0xa'),auth[_0x0112('0xb')](),controller[_0x0112('0xc')]);router[_0x0112('0x8')](_0x0112('0xd'),auth[_0x0112('0xb')](),controller[_0x0112('0xe')]);router[_0x0112('0xf')]('/',auth[_0x0112('0xb')](),interaction['tracked'](_0x0112('0x10'),_0x0112('0x11')),controller['create']);router[_0x0112('0xf')](_0x0112('0x12'),controller['status']);router[_0x0112('0x13')](_0x0112('0xd'),auth[_0x0112('0xb')](),controller['update']);router[_0x0112('0x13')](_0x0112('0x14'),auth[_0x0112('0xb')](),controller[_0x0112('0x15')]);router[_0x0112('0x13')](_0x0112('0x16'),auth['isAuthenticated'](),controller[_0x0112('0x17')]);router[_0x0112('0x18')]('/:id',auth['isAuthenticated'](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index 036e246..bf1d253 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9fdc=['DATE','TEXT','sequelize','exports','medium','BOOLEAN','ENUM','out','STRING'];(function(_0x4e2148,_0x382a2c){var _0x323345=function(_0x426339){while(--_0x426339){_0x4e2148['push'](_0x4e2148['shift']());}};_0x323345(++_0x382a2c);}(_0x9fdc,0x18e));var _0xc9fd=function(_0x337748,_0x402b05){_0x337748=_0x337748-0x0;var _0x3bb03f=_0x9fdc[_0x337748];return _0x3bb03f;};'use strict';var Sequelize=require(_0xc9fd('0x0'));module[_0xc9fd('0x1')]={'body':{'type':Sequelize['TEXT'](_0xc9fd('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0xc9fd('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0xc9fd('0x4')]('in',_0xc9fd('0x5')),'defaultValue':_0xc9fd('0x5'),'allowNull':![]},'messageId':{'type':Sequelize[_0xc9fd('0x6')](0xbe)},'phone':{'type':Sequelize[_0xc9fd('0x6')]},'readAt':{'type':Sequelize[_0xc9fd('0x7')]},'secret':{'type':Sequelize[_0xc9fd('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0xc9fd('0x6')]},'providerResponse':{'type':Sequelize[_0xc9fd('0x8')]}};
\ No newline at end of file
+var _0x4d33=['ENUM','out','DATE','STRING','TEXT','sequelize','exports','medium','BOOLEAN'];(function(_0x42cae2,_0x284ef8){var _0x5f256f=function(_0x41abc8){while(--_0x41abc8){_0x42cae2['push'](_0x42cae2['shift']());}};_0x5f256f(++_0x284ef8);}(_0x4d33,0x140));var _0x34d3=function(_0x207811,_0x3420a6){_0x207811=_0x207811-0x0;var _0x170d56=_0x4d33[_0x207811];return _0x170d56;};'use strict';var Sequelize=require(_0x34d3('0x0'));module[_0x34d3('0x1')]={'body':{'type':Sequelize['TEXT'](_0x34d3('0x2')),'allowNull':![]},'read':{'type':Sequelize[_0x34d3('0x3')],'defaultValue':![]},'direction':{'type':Sequelize[_0x34d3('0x4')]('in',_0x34d3('0x5')),'defaultValue':_0x34d3('0x5'),'allowNull':![]},'messageId':{'type':Sequelize['STRING'](0xbe)},'phone':{'type':Sequelize['STRING']},'readAt':{'type':Sequelize[_0x34d3('0x6')]},'secret':{'type':Sequelize[_0x34d3('0x3')],'defaultValue':![]},'providerName':{'type':Sequelize[_0x34d3('0x7')]},'providerResponse':{'type':Sequelize[_0x34d3('0x8')]}};
\ No newline at end of file
index 8046ccb..d394ba9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2633=['to-csv','ejs','fs-extra','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/utils','../../config/environment','defaults','redis','localhost','socket.io-emitter','./whatsappMessage.socket','register','jayson/promise','http','request','then','info','request\x20sent','debug','stringify','error','WhatsappMessage,\x20%s,\x20%s','message','sendStatus','json','undefined','offset','count','set','Content-Range','reject','save','destroy','end','stack','name','status','send','index','map','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','limit','sort','where','merge','filter','options','WhatsappMessage','includeAll','include','findAll','catch','show','params','rawAttributes','create','body','update','find','describe','whatsapp','read','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','WhatsappInteraction','isNil','read1stAt','interaction','get','[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','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','SIP/%s','channel','motionChannel','EventManager','acceptmessage','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','rejectMessage','interface','event','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','MessageSid','MessageStatus','inspect','eml-format','rimraf','zip-dir','request-promise','bluebird','mustache','util','path','sox'];(function(_0x14ead8,_0x4787a8){var _0x420953=function(_0x58a1f4){while(--_0x58a1f4){_0x14ead8['push'](_0x14ead8['shift']());}};_0x420953(++_0x4787a8);}(_0x2633,0x10b));var _0x3263=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x2633[_0x110c3d];return _0x226d67;};'use strict';var emlformat=require(_0x3263('0x0'));var rimraf=require(_0x3263('0x1'));var zipdir=require(_0x3263('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x3263('0x3'));var moment=require('moment');var BPromise=require(_0x3263('0x4'));var Mustache=require(_0x3263('0x5'));var util=require(_0x3263('0x6'));var path=require(_0x3263('0x7'));var sox=require(_0x3263('0x8'));var csv=require(_0x3263('0x9'));var ejs=require(_0x3263('0xa'));var fs=require('fs');var fs_extra=require(_0x3263('0xb'));var _=require('lodash');var squel=require(_0x3263('0xc'));var crypto=require(_0x3263('0xd'));var jsforce=require(_0x3263('0xe'));var deskjs=require(_0x3263('0xf'));var toCsv=require(_0x3263('0x9'));var querystring=require(_0x3263('0x10'));var Papa=require(_0x3263('0x11'));var Redis=require(_0x3263('0x12'));var authService=require(_0x3263('0x13'));var qs=require(_0x3263('0x14'));var as=require(_0x3263('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x3263('0x16'))(_0x3263('0x17'));var utils=require(_0x3263('0x18'));var config=require(_0x3263('0x19'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];config['redis']=_[_0x3263('0x1a')](config[_0x3263('0x1b')],{'host':_0x3263('0x1c'),'port':0x18eb});var socket=require(_0x3263('0x1d'))(new Redis(config[_0x3263('0x1b')]));require(_0x3263('0x1e'))[_0x3263('0x1f')](socket);var jayson=require(_0x3263('0x20'));var client=jayson['client']['http']({'port':0x232c});var client9002=jayson['client'][_0x3263('0x21')]({'port':0x232a});function respondWithRpcPromise(_0x3e51ef,_0x2a43c4,_0x2b6d33,_0x45a9a4){return new BPromise(function(_0x5a2117,_0x4d77a0){var _0x11f5ed=_0x45a9a4||client;return _0x11f5ed[_0x3263('0x22')](_0x3e51ef,_0x2b6d33)[_0x3263('0x23')](function(_0x207a54){logger[_0x3263('0x24')]('WhatsappMessage,\x20%s,\x20%s',_0x2a43c4,_0x3263('0x25'));logger[_0x3263('0x26')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x2a43c4,'request\x20sent',JSON[_0x3263('0x27')](_0x207a54));if(_0x207a54[_0x3263('0x28')]){if(_0x207a54[_0x3263('0x28')]['code']===0x1f4){logger[_0x3263('0x28')](_0x3263('0x29'),_0x2a43c4,_0x207a54['error'][_0x3263('0x2a')]);return _0x4d77a0(_0x207a54[_0x3263('0x28')][_0x3263('0x2a')]);}logger[_0x3263('0x28')](_0x3263('0x29'),_0x2a43c4,_0x207a54[_0x3263('0x28')][_0x3263('0x2a')]);return _0x5a2117(_0x207a54[_0x3263('0x28')][_0x3263('0x2a')]);}else{logger['info'](_0x3263('0x29'),_0x2a43c4,_0x3263('0x25'));_0x5a2117(_0x207a54['result'][_0x3263('0x2a')]);}})['catch'](function(_0x4e1d0e){logger[_0x3263('0x28')](_0x3263('0x29'),_0x2a43c4,_0x4e1d0e);_0x4d77a0(_0x4e1d0e);});});}function respondWithStatusCode(_0x29ce39,_0x3350fb){_0x3350fb=_0x3350fb||0xcc;return function(_0x5a38e4){if(_0x5a38e4){return _0x29ce39[_0x3263('0x2b')](_0x3350fb);}return _0x29ce39['status'](_0x3350fb)['end']();};}function respondWithResult(_0x453b56,_0x26f052){_0x26f052=_0x26f052||0xc8;return function(_0x347b80){if(_0x347b80){return _0x453b56['status'](_0x26f052)[_0x3263('0x2c')](_0x347b80);}};}function respondWithFilteredResult(_0x511c41,_0x2e6a2d){return function(_0x3cec24){if(_0x3cec24){var _0x409135=typeof _0x2e6a2d['offset']===_0x3263('0x2d')&&typeof _0x2e6a2d['limit']===_0x3263('0x2d');var _0x2ce234=_0x3cec24['count'];var _0x1daaf3=_0x409135?0x0:_0x2e6a2d[_0x3263('0x2e')];var _0x409ff3=_0x409135?_0x3cec24[_0x3263('0x2f')]:_0x2e6a2d['offset']+_0x2e6a2d['limit'];var _0x213a22;if(_0x409ff3>=_0x2ce234){_0x409ff3=_0x2ce234;_0x213a22=0xc8;}else{_0x213a22=0xce;}_0x511c41['status'](_0x213a22);return _0x511c41[_0x3263('0x30')](_0x3263('0x31'),_0x1daaf3+'-'+_0x409ff3+'/'+_0x2ce234)[_0x3263('0x2c')](_0x3cec24);}return null;};}function patchUpdates(_0x36b18f){return function(_0x94b00e){try{jsonpatch['apply'](_0x94b00e,_0x36b18f,!![]);}catch(_0x329fad){return BPromise[_0x3263('0x32')](_0x329fad);}return _0x94b00e[_0x3263('0x33')]();};}function saveUpdates(_0x117d8b,_0x368f25){return function(_0x707580){if(_0x707580){return _0x707580['update'](_0x117d8b)['then'](function(_0x405a39){return _0x405a39;});}return null;};}function removeEntity(_0x5db0a6,_0x595c0d){return function(_0x1f7c4e){if(_0x1f7c4e){return _0x1f7c4e[_0x3263('0x34')]()[_0x3263('0x23')](function(){_0x5db0a6['status'](0xcc)[_0x3263('0x35')]();});}};}function handleEntityNotFound(_0x56ac3d,_0x4e5ac0){return function(_0x477504){if(!_0x477504){_0x56ac3d[_0x3263('0x2b')](0x194);}return _0x477504;};}function handleError(_0x58a91d,_0x1118d2){_0x1118d2=_0x1118d2||0x1f4;return function(_0x40aa51){logger[_0x3263('0x28')](_0x40aa51[_0x3263('0x36')]);if(_0x40aa51[_0x3263('0x37')]){delete _0x40aa51[_0x3263('0x37')];}_0x58a91d[_0x3263('0x38')](_0x1118d2)[_0x3263('0x39')](_0x40aa51);};}exports[_0x3263('0x3a')]=function(_0x219165,_0xf4105e){var _0x2a1d68={},_0x179492={},_0x20f316={'count':0x0,'rows':[]};var _0x4f6813=_[_0x3263('0x3b')](db['WhatsappMessage']['rawAttributes'],function(_0x40b66c){return{'name':_0x40b66c[_0x3263('0x3c')],'type':_0x40b66c[_0x3263('0x3d')][_0x3263('0x3e')]};});_0x179492[_0x3263('0x3f')]=_[_0x3263('0x3b')](_0x4f6813,'name');_0x179492[_0x3263('0x40')]=_[_0x3263('0x41')](_0x219165[_0x3263('0x40')]);_0x179492[_0x3263('0x42')]=_[_0x3263('0x43')](_0x179492[_0x3263('0x3f')],_0x179492['query']);_0x2a1d68[_0x3263('0x44')]=_[_0x3263('0x43')](_0x179492['model'],qs[_0x3263('0x45')](_0x219165[_0x3263('0x40')][_0x3263('0x45')]));_0x2a1d68[_0x3263('0x44')]=_0x2a1d68[_0x3263('0x44')][_0x3263('0x46')]?_0x2a1d68[_0x3263('0x44')]:_0x179492[_0x3263('0x3f')];if(!_0x219165[_0x3263('0x40')][_0x3263('0x47')]('nolimit')){_0x2a1d68[_0x3263('0x48')]=qs[_0x3263('0x48')](_0x219165[_0x3263('0x40')][_0x3263('0x48')]);_0x2a1d68[_0x3263('0x2e')]=qs[_0x3263('0x2e')](_0x219165[_0x3263('0x40')]['offset']);}_0x2a1d68['order']=qs[_0x3263('0x49')](_0x219165[_0x3263('0x40')][_0x3263('0x49')]);_0x2a1d68['where']=qs['filters'](_['pick'](_0x219165[_0x3263('0x40')],_0x179492[_0x3263('0x42')]),_0x4f6813);if(_0x219165[_0x3263('0x40')]['filter']){_0x2a1d68[_0x3263('0x4a')]=_[_0x3263('0x4b')](_0x2a1d68[_0x3263('0x4a')],{'$or':_['map'](_0x4f6813,function(_0x3866ce){if(_0x3866ce[_0x3263('0x3d')]!=='VIRTUAL'){var _0x490b4d={};_0x490b4d[_0x3866ce[_0x3263('0x37')]]={'$like':'%'+_0x219165[_0x3263('0x40')][_0x3263('0x4c')]+'%'};return _0x490b4d;}})});}_0x2a1d68=_[_0x3263('0x4b')]({},_0x2a1d68,_0x219165[_0x3263('0x4d')]);var _0x5a0484={'where':_0x2a1d68[_0x3263('0x4a')]};return db[_0x3263('0x4e')][_0x3263('0x2f')](_0x5a0484)[_0x3263('0x23')](function(_0x46419a){_0x20f316['count']=_0x46419a;if(_0x219165[_0x3263('0x40')][_0x3263('0x4f')]){_0x2a1d68[_0x3263('0x50')]=[{'all':!![]}];}return db[_0x3263('0x4e')][_0x3263('0x51')](_0x2a1d68);})['then'](function(_0x7365b4){_0x20f316['rows']=_0x7365b4;return _0x20f316;})[_0x3263('0x23')](respondWithFilteredResult(_0xf4105e,_0x2a1d68))[_0x3263('0x52')](handleError(_0xf4105e,null));};exports[_0x3263('0x53')]=function(_0x2340a5,_0x2e77cb){var _0x53f102={'raw':!![],'where':{'id':_0x2340a5[_0x3263('0x54')]['id']}},_0x51f502={};_0x51f502[_0x3263('0x3f')]=_[_0x3263('0x41')](db[_0x3263('0x4e')][_0x3263('0x55')]);_0x51f502['query']=_['keys'](_0x2340a5[_0x3263('0x40')]);_0x51f502['filters']=_['intersection'](_0x51f502['model'],_0x51f502[_0x3263('0x40')]);_0x53f102['attributes']=_[_0x3263('0x43')](_0x51f502['model'],qs['fields'](_0x2340a5[_0x3263('0x40')][_0x3263('0x45')]));_0x53f102[_0x3263('0x44')]=_0x53f102[_0x3263('0x44')][_0x3263('0x46')]?_0x53f102[_0x3263('0x44')]:_0x51f502[_0x3263('0x3f')];if(_0x2340a5[_0x3263('0x40')]['includeAll']){_0x53f102[_0x3263('0x50')]=[{'all':!![]}];}_0x53f102=_['merge']({},_0x53f102,_0x2340a5['options']);return db[_0x3263('0x4e')]['find'](_0x53f102)[_0x3263('0x23')](handleEntityNotFound(_0x2e77cb,null))[_0x3263('0x23')](respondWithResult(_0x2e77cb,null))[_0x3263('0x52')](handleError(_0x2e77cb,null));};exports[_0x3263('0x56')]=function(_0x5aa470,_0x581df9){return db['WhatsappMessage']['create'](_0x5aa470[_0x3263('0x57')],{})['then'](respondWithResult(_0x581df9,0xc9))[_0x3263('0x52')](handleError(_0x581df9,null));};exports[_0x3263('0x58')]=function(_0x19092f,_0x303351){if(_0x19092f[_0x3263('0x57')]['id']){delete _0x19092f[_0x3263('0x57')]['id'];}return db[_0x3263('0x4e')][_0x3263('0x59')]({'where':{'id':_0x19092f['params']['id']}})[_0x3263('0x23')](handleEntityNotFound(_0x303351,null))[_0x3263('0x23')](saveUpdates(_0x19092f[_0x3263('0x57')],null))[_0x3263('0x23')](respondWithResult(_0x303351,null))[_0x3263('0x52')](handleError(_0x303351,null));};exports[_0x3263('0x34')]=function(_0x5bfbea,_0x562e7e){return db[_0x3263('0x4e')][_0x3263('0x59')]({'where':{'id':_0x5bfbea[_0x3263('0x54')]['id']}})[_0x3263('0x23')](handleEntityNotFound(_0x562e7e,null))[_0x3263('0x23')](removeEntity(_0x562e7e,null))[_0x3263('0x52')](handleError(_0x562e7e,null));};exports[_0x3263('0x5a')]=function(_0x17747a,_0x33b47d){return db[_0x3263('0x4e')]['describe']()[_0x3263('0x23')](respondWithResult(_0x33b47d,null))['catch'](handleError(_0x33b47d,null));};var interaction_log=require('../../config/logger')('whatsapp-interactions');exports['accept']=function(_0x1ac1dc,_0x50b7ee,_0x5b96d2){var _0x56bd39={'agent':{},'channel':_0x3263('0x5b')};if(_0x1ac1dc[_0x3263('0x57')]['id']){delete _0x1ac1dc[_0x3263('0x57')]['id'];}_0x1ac1dc['body'][_0x3263('0x5c')]=!![];_0x1ac1dc['body'][_0x3263('0x5d')]=moment()[_0x3263('0x5e')](_0x3263('0x5f'));_0x1ac1dc[_0x3263('0x57')][_0x3263('0x60')]=_0x1ac1dc[_0x3263('0x57')][_0x3263('0x60')]||_0x1ac1dc[_0x3263('0x61')]['id'];_0x56bd39[_0x3263('0x62')]['id']=_0x1ac1dc[_0x3263('0x57')][_0x3263('0x60')];return db[_0x3263('0x4e')][_0x3263('0x59')]({'where':{'id':_0x1ac1dc[_0x3263('0x54')]['id'],'UserId':null}})['then'](handleEntityNotFound(_0x50b7ee,null))[_0x3263('0x23')](saveUpdates(_0x1ac1dc[_0x3263('0x57')],null))[_0x3263('0x23')](function(_0x36da38){if(_0x36da38){_0x56bd39[_0x3263('0x2a')]=_0x36da38['get']({'plain':!![]});return db[_0x3263('0x63')]['find']({'where':{'id':_0x36da38['WhatsappInteractionId']}});}return null;})[_0x3263('0x23')](handleEntityNotFound(_0x50b7ee,null))[_0x3263('0x23')](function(_0x2cc2f8){if(_0x2cc2f8){return _0x2cc2f8[_0x3263('0x58')]({'UserId':_0x1ac1dc[_0x3263('0x57')][_0x3263('0x60')],'read1stAt':_[_0x3263('0x64')](_0x2cc2f8[_0x3263('0x65')])?moment()[_0x3263('0x5e')](_0x3263('0x5f')):undefined});}return null;})[_0x3263('0x23')](function(_0x5d4a4b){if(_0x5d4a4b){_0x56bd39[_0x3263('0x66')]=_0x5d4a4b[_0x3263('0x67')]({'plain':!![]});interaction_log['info'](_0x3263('0x68'),_0x1ac1dc['user']['id'],_0x1ac1dc[_0x3263('0x61')]['name'],_0x1ac1dc['user'][_0x3263('0x69')],_0x56bd39[_0x3263('0x66')]['id'],_0x1ac1dc['body']?JSON['stringify'](_0x1ac1dc['body']):_0x3263('0x6a'));return respondWithRpcPromise(_0x3263('0x6b'),_0x3263('0x6c'),_0x56bd39);}return null;})['then'](function(_0x1997d5){var _0x213bc3=_0x3263('0x6d')+_0x1997d5[_0x3263('0x2a')][_0x3263('0x6e')];return db[_0x3263('0x6f')][_0x3263('0x40')](_0x213bc3,{'type':db[_0x3263('0x70')][_0x3263('0x71')][_0x3263('0x72')],'raw':!![]})[_0x3263('0x23')](function(_0x1cc310){return _0x1cc310;});})[_0x3263('0x23')](function(_0x100c79){if(_0x100c79){_0x56bd39[_0x3263('0x2a')][_0x3263('0x73')]=_0x100c79[0x0];if(!_0x1ac1dc[_0x3263('0x57')][_0x3263('0x60')])return;return db[_0x3263('0x74')][_0x3263('0x59')]({'where':{'id':_0x1ac1dc['body'][_0x3263('0x60')],'role':_0x3263('0x62')},'attributes':['id',_0x3263('0x37'),_0x3263('0x75'),_0x3263('0x76'),_0x3263('0x77')],'raw':!![]});}return null;})[_0x3263('0x23')](function(_0x410e4e){if(!_0x410e4e)return null;_0x56bd39[_0x3263('0x2a')]['agent']=_0x410e4e;return _0x56bd39;})['then'](function(_0x574fe6){if(_0x574fe6){if(_0x1ac1dc[_0x3263('0x57')][_0x3263('0x78')]){_0x56bd39[_0x3263('0x2a')]['interface']=util[_0x3263('0x5e')](_0x3263('0x79'),_0x1ac1dc['user']['name']);_0x56bd39[_0x3263('0x2a')][_0x3263('0x7a')]=_0x56bd39[_0x3263('0x7a')];_0x56bd39[_0x3263('0x2a')][_0x3263('0x7b')]=_0x56bd39['channel'];_0x56bd39[_0x3263('0x2a')]['event']='accept';return respondWithRpcPromise(_0x3263('0x7c'),_0x3263('0x7c'),{'event':_0x3263('0x7d'),'message':_0x56bd39[_0x3263('0x2a')]},client9002)[_0x3263('0x23')](function(){return _0x56bd39;});}return _0x56bd39;}return null;})['then'](respondWithResult(_0x50b7ee,null))[_0x3263('0x52')](handleError(_0x50b7ee,null));};var interaction_log=require('../../config/logger')('whatsapp-interactions');exports[_0x3263('0x32')]=function(_0x2740b,_0x57cbfa,_0x439f70){var _0x1fd343={'agent':{},'channel':_0x3263('0x5b')};if(_0x2740b[_0x3263('0x57')]['id']){delete _0x2740b['body']['id'];}_0x2740b[_0x3263('0x57')][_0x3263('0x60')]=_0x2740b[_0x3263('0x57')][_0x3263('0x60')]||_0x2740b[_0x3263('0x61')]['id'];_0x1fd343[_0x3263('0x62')]['id']=_0x2740b['body'][_0x3263('0x60')];return db['WhatsappMessage'][_0x3263('0x59')]({'where':{'id':_0x2740b[_0x3263('0x54')]['id'],'UserId':null}})[_0x3263('0x23')](handleEntityNotFound(_0x57cbfa,null))[_0x3263('0x23')](function(_0x34353b){if(_0x34353b){_0x1fd343[_0x3263('0x2a')]=_0x34353b['get']({'plain':!![]});return db[_0x3263('0x63')][_0x3263('0x59')]({'where':{'id':_0x34353b['WhatsappInteractionId']}});}return null;})['then'](handleEntityNotFound(_0x57cbfa,null))[_0x3263('0x23')](function(_0x50e73f){if(_0x50e73f){_0x1fd343[_0x3263('0x66')]=_0x50e73f[_0x3263('0x67')]({'plain':!![]});interaction_log['info'](_0x3263('0x7e'),_0x2740b['user']['id'],_0x2740b[_0x3263('0x61')][_0x3263('0x37')],_0x2740b['user']['role'],_0x1fd343['interaction']['id'],_0x2740b[_0x3263('0x57')]?JSON[_0x3263('0x27')](_0x2740b[_0x3263('0x57')]):_0x3263('0x6a'));return respondWithRpcPromise('RejectMessage',_0x3263('0x7f'),_0x1fd343);}return null;})[_0x3263('0x23')](function(_0x2b4dc2){var _0x5f5948=_0x3263('0x6d')+_0x2b4dc2['message'][_0x3263('0x6e')];return db[_0x3263('0x6f')][_0x3263('0x40')](_0x5f5948,{'type':db[_0x3263('0x70')]['QueryTypes'][_0x3263('0x72')],'raw':!![]})['then'](function(_0x4fcc40){return _0x4fcc40;});})[_0x3263('0x23')](function(_0x17cc86){if(_0x17cc86){_0x1fd343['message'][_0x3263('0x73')]=_0x17cc86[0x0];if(!_0x2740b[_0x3263('0x57')][_0x3263('0x60')])return;return db[_0x3263('0x74')][_0x3263('0x59')]({'where':{'id':_0x2740b[_0x3263('0x57')][_0x3263('0x60')],'role':_0x3263('0x62')},'attributes':['id',_0x3263('0x37'),_0x3263('0x75'),_0x3263('0x76'),_0x3263('0x77')],'raw':!![]});}return null;})[_0x3263('0x23')](function(_0x11251e){if(!_0x11251e)return null;_0x1fd343[_0x3263('0x2a')][_0x3263('0x62')]=_0x11251e;return _0x1fd343;})[_0x3263('0x23')](function(_0x2abffe){if(_0x2abffe){_0x2abffe['message'][_0x3263('0x80')]=util[_0x3263('0x5e')](_0x3263('0x79'),_0x2740b[_0x3263('0x61')][_0x3263('0x37')]);_0x2abffe[_0x3263('0x2a')][_0x3263('0x7a')]=_0x1fd343[_0x3263('0x7a')];_0x2abffe['message'][_0x3263('0x7b')]=_0x1fd343[_0x3263('0x7a')];_0x2abffe[_0x3263('0x2a')][_0x3263('0x81')]='reject';respondWithRpcPromise('EventManager',_0x3263('0x7c'),{'event':_0x3263('0x82'),'message':_0x2abffe[_0x3263('0x2a')]},client9002);return _0x1fd343;}return null;})[_0x3263('0x23')](respondWithResult(_0x57cbfa,null))[_0x3263('0x52')](handleError(_0x57cbfa,null));};exports[_0x3263('0x38')]=function(_0x255013,_0x27f94b,_0x4e39c0){if(_0x255013[_0x3263('0x57')]['id']){delete _0x255013['body']['id'];}var _0x1b7a89;return db['WhatsappMessage'][_0x3263('0x59')]({'where':{'id':_0x255013[_0x3263('0x54')]['id']}})['then'](handleEntityNotFound(_0x27f94b,null))[_0x3263('0x23')](function(_0x24c044){if(_0x24c044){_0x1b7a89=_0x24c044;return db[_0x3263('0x83')][_0x3263('0x59')]({'where':{'id':_0x24c044[_0x3263('0x84')]}});}})[_0x3263('0x23')](handleEntityNotFound(_0x27f94b,null))[_0x3263('0x23')](function(_0x559213){if(_0x559213){logger[_0x3263('0x26')](_0x3263('0x85'),_0x3263('0x38'),_0x3263('0x86'),_0x559213[_0x3263('0x3d')],util['inspect'](_0x255013['body'],{'showHidden':![],'depth':null}));switch(_0x559213['type']){case'twilio':if(_0x255013[_0x3263('0x57')][_0x3263('0x87')]&&_0x255013[_0x3263('0x57')]['MessageSid']===_0x1b7a89['messageId']&&_0x255013['body']['MessageStatus']&&_0x255013[_0x3263('0x57')][_0x3263('0x88')]===_0x3263('0x5c')){return _0x1b7a89[_0x3263('0x58')]({'read':!![]});}else{logger[_0x3263('0x28')]('WhatsappAccount,\x20%s,\x20%s,\x20%s','status','twilio',util[_0x3263('0x89')](_0x255013[_0x3263('0x57')],{'showHidden':![],'depth':null}));}break;}return _0x1b7a89;}})['then'](respondWithResult(_0x27f94b,null))[_0x3263('0x52')](handleError(_0x27f94b,null));};
\ No newline at end of file
+var _0xe9b7=['AcceptMessage','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','Sequelize','QueryTypes','SELECT','contact','User','fullname','email','internal','manual','interface','SIP/%s','channel','motionChannel','event','EventManager','acceptmessage','WhatsappInteraction','[WHATSAPPMESSAGE:REJECT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','RejectMessage','rejectMessage','ContactId','sequelize','rejectmessage','WhatsappAccount','WhatsappAccountId','WhatsppMessage,\x20%s,\x20%s,\x20%s','received\x20delivery\x20report\x20from','inspect','twilio','MessageSid','MessageStatus','read','WhatsappAccount,\x20%s,\x20%s,\x20%s','rimraf','fast-json-patch','moment','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/environment','../../mysqldb','redis','defaults','localhost','socket.io-emitter','./whatsappMessage.socket','register','http','client','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','destroy','name','index','map','WhatsappMessage','rawAttributes','type','key','model','query','filters','attributes','intersection','fields','hasOwnProperty','nolimit','sort','where','pick','filter','merge','options','includeAll','include','findAll','rows','show','params','keys','find','create','body','describe','whatsapp-interactions','accept','whatsapp','readAt','format','YYYY-MM-DD\x20HH:mm:ss','UserId','user','agent','get','WhatsappInteractionId','update','isNil','interaction','[WHATSAPPMESSAGE:ACCEPT]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','role','null'];(function(_0x18ab2a,_0x4debcd){var _0x16dcee=function(_0x10107a){while(--_0x10107a){_0x18ab2a['push'](_0x18ab2a['shift']());}};_0x16dcee(++_0x4debcd);}(_0xe9b7,0x139));var _0x7e9b=function(_0x177fb0,_0x210ea7){_0x177fb0=_0x177fb0-0x0;var _0xeb5ec5=_0xe9b7[_0x177fb0];return _0xeb5ec5;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x7e9b('0x0'));var zipdir=require('zip-dir');var jsonpatch=require(_0x7e9b('0x1'));var rp=require('request-promise');var moment=require(_0x7e9b('0x2'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x7e9b('0x3'));var path=require(_0x7e9b('0x4'));var sox=require(_0x7e9b('0x5'));var csv=require(_0x7e9b('0x6'));var ejs=require(_0x7e9b('0x7'));var fs=require('fs');var fs_extra=require(_0x7e9b('0x8'));var _=require(_0x7e9b('0x9'));var squel=require('squel');var crypto=require(_0x7e9b('0xa'));var jsforce=require(_0x7e9b('0xb'));var deskjs=require(_0x7e9b('0xc'));var toCsv=require(_0x7e9b('0x6'));var querystring=require(_0x7e9b('0xd'));var Papa=require(_0x7e9b('0xe'));var Redis=require(_0x7e9b('0xf'));var authService=require('../../components/auth/service');var qs=require(_0x7e9b('0x10'));var as=require(_0x7e9b('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x7e9b('0x12'))('api');var utils=require('../../config/utils');var config=require(_0x7e9b('0x13'));var licenseUtil=require('../../config/license/util');var db=require(_0x7e9b('0x14'))['db'];config[_0x7e9b('0x15')]=_[_0x7e9b('0x16')](config['redis'],{'host':_0x7e9b('0x17'),'port':0x18eb});var socket=require(_0x7e9b('0x18'))(new Redis(config['redis']));require(_0x7e9b('0x19'))[_0x7e9b('0x1a')](socket);var jayson=require('jayson/promise');var client=jayson['client'][_0x7e9b('0x1b')]({'port':0x232c});var client9002=jayson[_0x7e9b('0x1c')]['http']({'port':0x232a});function respondWithRpcPromise(_0x7db5ac,_0x55a75c,_0x244a82,_0xaed11){return new BPromise(function(_0x3f953e,_0x144e6e){var _0x2f201c=_0xaed11||client;return _0x2f201c[_0x7e9b('0x1d')](_0x7db5ac,_0x244a82)[_0x7e9b('0x1e')](function(_0x517878){logger[_0x7e9b('0x1f')](_0x7e9b('0x20'),_0x55a75c,_0x7e9b('0x21'));logger[_0x7e9b('0x22')](_0x7e9b('0x23'),_0x55a75c,'request\x20sent',JSON[_0x7e9b('0x24')](_0x517878));if(_0x517878[_0x7e9b('0x25')]){if(_0x517878[_0x7e9b('0x25')][_0x7e9b('0x26')]===0x1f4){logger['error'](_0x7e9b('0x20'),_0x55a75c,_0x517878[_0x7e9b('0x25')][_0x7e9b('0x27')]);return _0x144e6e(_0x517878[_0x7e9b('0x25')]['message']);}logger[_0x7e9b('0x25')](_0x7e9b('0x20'),_0x55a75c,_0x517878['error'][_0x7e9b('0x27')]);return _0x3f953e(_0x517878[_0x7e9b('0x25')][_0x7e9b('0x27')]);}else{logger['info']('WhatsappMessage,\x20%s,\x20%s',_0x55a75c,_0x7e9b('0x21'));_0x3f953e(_0x517878[_0x7e9b('0x28')][_0x7e9b('0x27')]);}})[_0x7e9b('0x29')](function(_0xcd7d2a){logger[_0x7e9b('0x25')](_0x7e9b('0x20'),_0x55a75c,_0xcd7d2a);_0x144e6e(_0xcd7d2a);});});}function respondWithStatusCode(_0x337141,_0x4866c9){_0x4866c9=_0x4866c9||0xcc;return function(_0x450fcc){if(_0x450fcc){return _0x337141[_0x7e9b('0x2a')](_0x4866c9);}return _0x337141[_0x7e9b('0x2b')](_0x4866c9)[_0x7e9b('0x2c')]();};}function respondWithResult(_0x2bfa44,_0x2cca89){_0x2cca89=_0x2cca89||0xc8;return function(_0x56097e){if(_0x56097e){return _0x2bfa44['status'](_0x2cca89)[_0x7e9b('0x2d')](_0x56097e);}};}function respondWithFilteredResult(_0x5a160a,_0x47b4be){return function(_0x2137cc){if(_0x2137cc){var _0x334d69=typeof _0x47b4be[_0x7e9b('0x2e')]===_0x7e9b('0x2f')&&typeof _0x47b4be['limit']===_0x7e9b('0x2f');var _0xd5aad9=_0x2137cc[_0x7e9b('0x30')];var _0x43815b=_0x334d69?0x0:_0x47b4be['offset'];var _0x166994=_0x334d69?_0x2137cc[_0x7e9b('0x30')]:_0x47b4be[_0x7e9b('0x2e')]+_0x47b4be[_0x7e9b('0x31')];var _0x2d6715;if(_0x166994>=_0xd5aad9){_0x166994=_0xd5aad9;_0x2d6715=0xc8;}else{_0x2d6715=0xce;}_0x5a160a[_0x7e9b('0x2b')](_0x2d6715);return _0x5a160a[_0x7e9b('0x32')](_0x7e9b('0x33'),_0x43815b+'-'+_0x166994+'/'+_0xd5aad9)['json'](_0x2137cc);}return null;};}function patchUpdates(_0x3c659f){return function(_0x4398da){try{jsonpatch[_0x7e9b('0x34')](_0x4398da,_0x3c659f,!![]);}catch(_0x56c9f9){return BPromise[_0x7e9b('0x35')](_0x56c9f9);}return _0x4398da['save']();};}function saveUpdates(_0x46da9a,_0x1822c9){return function(_0x41d65d){if(_0x41d65d){return _0x41d65d['update'](_0x46da9a)[_0x7e9b('0x1e')](function(_0xbd546c){return _0xbd546c;});}return null;};}function removeEntity(_0x561381,_0x34d59c){return function(_0x10e0a8){if(_0x10e0a8){return _0x10e0a8[_0x7e9b('0x36')]()[_0x7e9b('0x1e')](function(){_0x561381['status'](0xcc)[_0x7e9b('0x2c')]();});}};}function handleEntityNotFound(_0x2b722d,_0x4e223a){return function(_0x1c4440){if(!_0x1c4440){_0x2b722d[_0x7e9b('0x2a')](0x194);}return _0x1c4440;};}function handleError(_0x26c43a,_0x15cc3f){_0x15cc3f=_0x15cc3f||0x1f4;return function(_0x54a683){logger[_0x7e9b('0x25')](_0x54a683['stack']);if(_0x54a683[_0x7e9b('0x37')]){delete _0x54a683[_0x7e9b('0x37')];}_0x26c43a[_0x7e9b('0x2b')](_0x15cc3f)['send'](_0x54a683);};}exports[_0x7e9b('0x38')]=function(_0x3ddece,_0x120d13){var _0xa16f9d={},_0x14f351={},_0x1dc448={'count':0x0,'rows':[]};var _0x4c3591=_[_0x7e9b('0x39')](db[_0x7e9b('0x3a')][_0x7e9b('0x3b')],function(_0x480389){return{'name':_0x480389['fieldName'],'type':_0x480389[_0x7e9b('0x3c')][_0x7e9b('0x3d')]};});_0x14f351[_0x7e9b('0x3e')]=_['map'](_0x4c3591,_0x7e9b('0x37'));_0x14f351[_0x7e9b('0x3f')]=_['keys'](_0x3ddece[_0x7e9b('0x3f')]);_0x14f351[_0x7e9b('0x40')]=_['intersection'](_0x14f351['model'],_0x14f351['query']);_0xa16f9d[_0x7e9b('0x41')]=_[_0x7e9b('0x42')](_0x14f351[_0x7e9b('0x3e')],qs[_0x7e9b('0x43')](_0x3ddece[_0x7e9b('0x3f')][_0x7e9b('0x43')]));_0xa16f9d[_0x7e9b('0x41')]=_0xa16f9d[_0x7e9b('0x41')]['length']?_0xa16f9d[_0x7e9b('0x41')]:_0x14f351[_0x7e9b('0x3e')];if(!_0x3ddece['query'][_0x7e9b('0x44')](_0x7e9b('0x45'))){_0xa16f9d[_0x7e9b('0x31')]=qs['limit'](_0x3ddece['query'][_0x7e9b('0x31')]);_0xa16f9d[_0x7e9b('0x2e')]=qs[_0x7e9b('0x2e')](_0x3ddece[_0x7e9b('0x3f')]['offset']);}_0xa16f9d['order']=qs[_0x7e9b('0x46')](_0x3ddece[_0x7e9b('0x3f')]['sort']);_0xa16f9d[_0x7e9b('0x47')]=qs[_0x7e9b('0x40')](_[_0x7e9b('0x48')](_0x3ddece[_0x7e9b('0x3f')],_0x14f351[_0x7e9b('0x40')]),_0x4c3591);if(_0x3ddece['query'][_0x7e9b('0x49')]){_0xa16f9d[_0x7e9b('0x47')]=_['merge'](_0xa16f9d['where'],{'$or':_[_0x7e9b('0x39')](_0x4c3591,function(_0x517f29){if(_0x517f29[_0x7e9b('0x3c')]!=='VIRTUAL'){var _0x5608bd={};_0x5608bd[_0x517f29[_0x7e9b('0x37')]]={'$like':'%'+_0x3ddece[_0x7e9b('0x3f')]['filter']+'%'};return _0x5608bd;}})});}_0xa16f9d=_[_0x7e9b('0x4a')]({},_0xa16f9d,_0x3ddece[_0x7e9b('0x4b')]);var _0x5b042d={'where':_0xa16f9d['where']};return db[_0x7e9b('0x3a')]['count'](_0x5b042d)[_0x7e9b('0x1e')](function(_0x558482){_0x1dc448[_0x7e9b('0x30')]=_0x558482;if(_0x3ddece['query'][_0x7e9b('0x4c')]){_0xa16f9d[_0x7e9b('0x4d')]=[{'all':!![]}];}return db[_0x7e9b('0x3a')][_0x7e9b('0x4e')](_0xa16f9d);})[_0x7e9b('0x1e')](function(_0x1a3161){_0x1dc448[_0x7e9b('0x4f')]=_0x1a3161;return _0x1dc448;})['then'](respondWithFilteredResult(_0x120d13,_0xa16f9d))[_0x7e9b('0x29')](handleError(_0x120d13,null));};exports[_0x7e9b('0x50')]=function(_0x362004,_0x118b99){var _0xa98aab={'raw':!![],'where':{'id':_0x362004[_0x7e9b('0x51')]['id']}},_0x5060ec={};_0x5060ec[_0x7e9b('0x3e')]=_[_0x7e9b('0x52')](db['WhatsappMessage'][_0x7e9b('0x3b')]);_0x5060ec['query']=_[_0x7e9b('0x52')](_0x362004[_0x7e9b('0x3f')]);_0x5060ec['filters']=_[_0x7e9b('0x42')](_0x5060ec[_0x7e9b('0x3e')],_0x5060ec[_0x7e9b('0x3f')]);_0xa98aab[_0x7e9b('0x41')]=_[_0x7e9b('0x42')](_0x5060ec['model'],qs[_0x7e9b('0x43')](_0x362004[_0x7e9b('0x3f')][_0x7e9b('0x43')]));_0xa98aab[_0x7e9b('0x41')]=_0xa98aab[_0x7e9b('0x41')]['length']?_0xa98aab[_0x7e9b('0x41')]:_0x5060ec[_0x7e9b('0x3e')];if(_0x362004[_0x7e9b('0x3f')][_0x7e9b('0x4c')]){_0xa98aab[_0x7e9b('0x4d')]=[{'all':!![]}];}_0xa98aab=_['merge']({},_0xa98aab,_0x362004[_0x7e9b('0x4b')]);return db[_0x7e9b('0x3a')][_0x7e9b('0x53')](_0xa98aab)[_0x7e9b('0x1e')](handleEntityNotFound(_0x118b99,null))[_0x7e9b('0x1e')](respondWithResult(_0x118b99,null))['catch'](handleError(_0x118b99,null));};exports[_0x7e9b('0x54')]=function(_0x11f124,_0x32b5c2){return db['WhatsappMessage']['create'](_0x11f124[_0x7e9b('0x55')],{})['then'](respondWithResult(_0x32b5c2,0xc9))[_0x7e9b('0x29')](handleError(_0x32b5c2,null));};exports['update']=function(_0xe4dfe0,_0xabec67){if(_0xe4dfe0[_0x7e9b('0x55')]['id']){delete _0xe4dfe0[_0x7e9b('0x55')]['id'];}return db[_0x7e9b('0x3a')]['find']({'where':{'id':_0xe4dfe0['params']['id']}})[_0x7e9b('0x1e')](handleEntityNotFound(_0xabec67,null))[_0x7e9b('0x1e')](saveUpdates(_0xe4dfe0[_0x7e9b('0x55')],null))[_0x7e9b('0x1e')](respondWithResult(_0xabec67,null))[_0x7e9b('0x29')](handleError(_0xabec67,null));};exports[_0x7e9b('0x36')]=function(_0x1447cf,_0x15479a){return db['WhatsappMessage']['find']({'where':{'id':_0x1447cf[_0x7e9b('0x51')]['id']}})[_0x7e9b('0x1e')](handleEntityNotFound(_0x15479a,null))[_0x7e9b('0x1e')](removeEntity(_0x15479a,null))[_0x7e9b('0x29')](handleError(_0x15479a,null));};exports[_0x7e9b('0x56')]=function(_0x5683e0,_0xfffdc0){return db[_0x7e9b('0x3a')][_0x7e9b('0x56')]()[_0x7e9b('0x1e')](respondWithResult(_0xfffdc0,null))[_0x7e9b('0x29')](handleError(_0xfffdc0,null));};var interaction_log=require(_0x7e9b('0x12'))(_0x7e9b('0x57'));exports[_0x7e9b('0x58')]=function(_0x15466f,_0x5cc395,_0x3dc734){var _0x21f441={'agent':{},'channel':_0x7e9b('0x59')};if(_0x15466f[_0x7e9b('0x55')]['id']){delete _0x15466f['body']['id'];}_0x15466f['body']['read']=!![];_0x15466f[_0x7e9b('0x55')][_0x7e9b('0x5a')]=moment()[_0x7e9b('0x5b')](_0x7e9b('0x5c'));_0x15466f[_0x7e9b('0x55')][_0x7e9b('0x5d')]=_0x15466f[_0x7e9b('0x55')]['UserId']||_0x15466f[_0x7e9b('0x5e')]['id'];_0x21f441[_0x7e9b('0x5f')]['id']=_0x15466f[_0x7e9b('0x55')][_0x7e9b('0x5d')];return db['WhatsappMessage'][_0x7e9b('0x53')]({'where':{'id':_0x15466f[_0x7e9b('0x51')]['id'],'UserId':null}})[_0x7e9b('0x1e')](handleEntityNotFound(_0x5cc395,null))[_0x7e9b('0x1e')](saveUpdates(_0x15466f[_0x7e9b('0x55')],null))[_0x7e9b('0x1e')](function(_0x7b42ef){if(_0x7b42ef){_0x21f441[_0x7e9b('0x27')]=_0x7b42ef[_0x7e9b('0x60')]({'plain':!![]});return db['WhatsappInteraction'][_0x7e9b('0x53')]({'where':{'id':_0x7b42ef[_0x7e9b('0x61')]}});}return null;})[_0x7e9b('0x1e')](handleEntityNotFound(_0x5cc395,null))[_0x7e9b('0x1e')](function(_0x40db79){if(_0x40db79){return _0x40db79[_0x7e9b('0x62')]({'UserId':_0x15466f['body'][_0x7e9b('0x5d')],'read1stAt':_[_0x7e9b('0x63')](_0x40db79['read1stAt'])?moment()[_0x7e9b('0x5b')](_0x7e9b('0x5c')):undefined});}return null;})[_0x7e9b('0x1e')](function(_0x131083){if(_0x131083){_0x21f441[_0x7e9b('0x64')]=_0x131083['get']({'plain':!![]});interaction_log[_0x7e9b('0x1f')](_0x7e9b('0x65'),_0x15466f[_0x7e9b('0x5e')]['id'],_0x15466f[_0x7e9b('0x5e')][_0x7e9b('0x37')],_0x15466f[_0x7e9b('0x5e')][_0x7e9b('0x66')],_0x21f441[_0x7e9b('0x64')]['id'],_0x15466f[_0x7e9b('0x55')]?JSON[_0x7e9b('0x24')](_0x15466f[_0x7e9b('0x55')]):_0x7e9b('0x67'));return respondWithRpcPromise(_0x7e9b('0x68'),'acceptMessage',_0x21f441);}return null;})[_0x7e9b('0x1e')](function(_0x39da95){var _0x39ae4f=_0x7e9b('0x69')+_0x39da95[_0x7e9b('0x27')]['ContactId'];return db['sequelize'][_0x7e9b('0x3f')](_0x39ae4f,{'type':db[_0x7e9b('0x6a')][_0x7e9b('0x6b')][_0x7e9b('0x6c')],'raw':!![]})[_0x7e9b('0x1e')](function(_0x1f5012){return _0x1f5012;});})[_0x7e9b('0x1e')](function(_0x2f0922){if(_0x2f0922){_0x21f441[_0x7e9b('0x27')][_0x7e9b('0x6d')]=_0x2f0922[0x0];if(!_0x15466f[_0x7e9b('0x55')][_0x7e9b('0x5d')])return;return db[_0x7e9b('0x6e')]['find']({'where':{'id':_0x15466f['body'][_0x7e9b('0x5d')],'role':_0x7e9b('0x5f')},'attributes':['id','name',_0x7e9b('0x6f'),_0x7e9b('0x70'),_0x7e9b('0x71')],'raw':!![]});}return null;})[_0x7e9b('0x1e')](function(_0x208a62){if(!_0x208a62)return null;_0x21f441[_0x7e9b('0x27')][_0x7e9b('0x5f')]=_0x208a62;return _0x21f441;})['then'](function(_0x263899){if(_0x263899){if(_0x15466f[_0x7e9b('0x55')][_0x7e9b('0x72')]){_0x21f441['message'][_0x7e9b('0x73')]=util[_0x7e9b('0x5b')](_0x7e9b('0x74'),_0x15466f[_0x7e9b('0x5e')][_0x7e9b('0x37')]);_0x21f441[_0x7e9b('0x27')][_0x7e9b('0x75')]=_0x21f441[_0x7e9b('0x75')];_0x21f441[_0x7e9b('0x27')][_0x7e9b('0x76')]=_0x21f441[_0x7e9b('0x75')];_0x21f441[_0x7e9b('0x27')][_0x7e9b('0x77')]=_0x7e9b('0x58');return respondWithRpcPromise(_0x7e9b('0x78'),_0x7e9b('0x78'),{'event':_0x7e9b('0x79'),'message':_0x21f441[_0x7e9b('0x27')]},client9002)[_0x7e9b('0x1e')](function(){return _0x21f441;});}return _0x21f441;}return null;})[_0x7e9b('0x1e')](respondWithResult(_0x5cc395,null))[_0x7e9b('0x29')](handleError(_0x5cc395,null));};var interaction_log=require(_0x7e9b('0x12'))('whatsapp-interactions');exports[_0x7e9b('0x35')]=function(_0x4f1460,_0x5ee1c9,_0x337521){var _0x5b0942={'agent':{},'channel':_0x7e9b('0x59')};if(_0x4f1460['body']['id']){delete _0x4f1460['body']['id'];}_0x4f1460[_0x7e9b('0x55')]['UserId']=_0x4f1460[_0x7e9b('0x55')][_0x7e9b('0x5d')]||_0x4f1460[_0x7e9b('0x5e')]['id'];_0x5b0942['agent']['id']=_0x4f1460[_0x7e9b('0x55')][_0x7e9b('0x5d')];return db[_0x7e9b('0x3a')][_0x7e9b('0x53')]({'where':{'id':_0x4f1460[_0x7e9b('0x51')]['id'],'UserId':null}})[_0x7e9b('0x1e')](handleEntityNotFound(_0x5ee1c9,null))[_0x7e9b('0x1e')](function(_0x2bcebc){if(_0x2bcebc){_0x5b0942[_0x7e9b('0x27')]=_0x2bcebc[_0x7e9b('0x60')]({'plain':!![]});return db[_0x7e9b('0x7a')][_0x7e9b('0x53')]({'where':{'id':_0x2bcebc[_0x7e9b('0x61')]}});}return null;})[_0x7e9b('0x1e')](handleEntityNotFound(_0x5ee1c9,null))[_0x7e9b('0x1e')](function(_0x34b757){if(_0x34b757){_0x5b0942['interaction']=_0x34b757['get']({'plain':!![]});interaction_log[_0x7e9b('0x1f')](_0x7e9b('0x7b'),_0x4f1460[_0x7e9b('0x5e')]['id'],_0x4f1460['user']['name'],_0x4f1460[_0x7e9b('0x5e')][_0x7e9b('0x66')],_0x5b0942['interaction']['id'],_0x4f1460[_0x7e9b('0x55')]?JSON[_0x7e9b('0x24')](_0x4f1460['body']):_0x7e9b('0x67'));return respondWithRpcPromise(_0x7e9b('0x7c'),_0x7e9b('0x7d'),_0x5b0942);}return null;})[_0x7e9b('0x1e')](function(_0x122ec9){var _0xa7fc50='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x122ec9['message'][_0x7e9b('0x7e')];return db[_0x7e9b('0x7f')][_0x7e9b('0x3f')](_0xa7fc50,{'type':db['Sequelize'][_0x7e9b('0x6b')][_0x7e9b('0x6c')],'raw':!![]})['then'](function(_0x1bb7bf){return _0x1bb7bf;});})[_0x7e9b('0x1e')](function(_0x392916){if(_0x392916){_0x5b0942[_0x7e9b('0x27')][_0x7e9b('0x6d')]=_0x392916[0x0];if(!_0x4f1460[_0x7e9b('0x55')][_0x7e9b('0x5d')])return;return db[_0x7e9b('0x6e')][_0x7e9b('0x53')]({'where':{'id':_0x4f1460[_0x7e9b('0x55')]['UserId'],'role':_0x7e9b('0x5f')},'attributes':['id','name',_0x7e9b('0x6f'),_0x7e9b('0x70'),_0x7e9b('0x71')],'raw':!![]});}return null;})[_0x7e9b('0x1e')](function(_0x12a4de){if(!_0x12a4de)return null;_0x5b0942[_0x7e9b('0x27')][_0x7e9b('0x5f')]=_0x12a4de;return _0x5b0942;})[_0x7e9b('0x1e')](function(_0x531ec9){if(_0x531ec9){_0x531ec9['message'][_0x7e9b('0x73')]=util[_0x7e9b('0x5b')](_0x7e9b('0x74'),_0x4f1460[_0x7e9b('0x5e')]['name']);_0x531ec9[_0x7e9b('0x27')][_0x7e9b('0x75')]=_0x5b0942[_0x7e9b('0x75')];_0x531ec9['message']['motionChannel']=_0x5b0942[_0x7e9b('0x75')];_0x531ec9['message']['event']=_0x7e9b('0x35');respondWithRpcPromise(_0x7e9b('0x78'),_0x7e9b('0x78'),{'event':_0x7e9b('0x80'),'message':_0x531ec9[_0x7e9b('0x27')]},client9002);return _0x5b0942;}return null;})['then'](respondWithResult(_0x5ee1c9,null))[_0x7e9b('0x29')](handleError(_0x5ee1c9,null));};exports[_0x7e9b('0x2b')]=function(_0x1f2664,_0x2ada39,_0xcb604a){if(_0x1f2664[_0x7e9b('0x55')]['id']){delete _0x1f2664[_0x7e9b('0x55')]['id'];}var _0x3bc379;return db[_0x7e9b('0x3a')][_0x7e9b('0x53')]({'where':{'id':_0x1f2664[_0x7e9b('0x51')]['id']}})['then'](handleEntityNotFound(_0x2ada39,null))[_0x7e9b('0x1e')](function(_0x449564){if(_0x449564){_0x3bc379=_0x449564;return db[_0x7e9b('0x81')]['find']({'where':{'id':_0x449564[_0x7e9b('0x82')]}});}})[_0x7e9b('0x1e')](handleEntityNotFound(_0x2ada39,null))[_0x7e9b('0x1e')](function(_0x258f9f){if(_0x258f9f){logger['debug'](_0x7e9b('0x83'),_0x7e9b('0x2b'),_0x7e9b('0x84'),_0x258f9f[_0x7e9b('0x3c')],util[_0x7e9b('0x85')](_0x1f2664[_0x7e9b('0x55')],{'showHidden':![],'depth':null}));switch(_0x258f9f[_0x7e9b('0x3c')]){case _0x7e9b('0x86'):if(_0x1f2664['body'][_0x7e9b('0x87')]&&_0x1f2664[_0x7e9b('0x55')][_0x7e9b('0x87')]===_0x3bc379['messageId']&&_0x1f2664[_0x7e9b('0x55')][_0x7e9b('0x88')]&&_0x1f2664[_0x7e9b('0x55')][_0x7e9b('0x88')]===_0x7e9b('0x89')){return _0x3bc379['update']({'read':!![]});}else{logger[_0x7e9b('0x25')](_0x7e9b('0x8a'),_0x7e9b('0x2b'),'twilio',util[_0x7e9b('0x85')](_0x1f2664[_0x7e9b('0x55')],{'showHidden':![],'depth':null}));}break;}return _0x3bc379;}})['then'](respondWithResult(_0x2ada39,null))[_0x7e9b('0x29')](handleError(_0x2ada39,null));};
\ No newline at end of file
index 20aaf55..c4081be 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x04b8=['exports','../../mysqldb','setMaxListeners','save','remove','emit','hasOwnProperty','hook'];(function(_0x14612f,_0x1c3389){var _0x3c41ad=function(_0x41043c){while(--_0x41043c){_0x14612f['push'](_0x14612f['shift']());}};_0x3c41ad(++_0x1c3389);}(_0x04b8,0x159));var _0x804b=function(_0x3d0e53,_0x158180){_0x3d0e53=_0x3d0e53-0x0;var _0xf10dbd=_0x04b8[_0x3d0e53];return _0xf10dbd;};'use strict';var EventEmitter=require('events');var WhatsappMessage=require(_0x804b('0x0'))['db']['WhatsappMessage'];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents[_0x804b('0x1')](0x0);var events={'afterCreate':_0x804b('0x2'),'afterUpdate':'update','afterDestroy':_0x804b('0x3')};function emitEvent(_0x1cd188){return function(_0x5857dc,_0x3530f6,_0x1c3474){WhatsappMessageEvents[_0x804b('0x4')](_0x1cd188+':'+_0x5857dc['id'],_0x5857dc);WhatsappMessageEvents['emit'](_0x1cd188,_0x5857dc);_0x1c3474(null);};}for(var e in events){if(events[_0x804b('0x5')](e)){var event=events[e];WhatsappMessage[_0x804b('0x6')](e,emitEvent(event));}}module[_0x804b('0x7')]=WhatsappMessageEvents;
\ No newline at end of file
+var _0x1ba2=['remove','emit','hasOwnProperty','exports','events','WhatsappMessage','save','update'];(function(_0xa52531,_0x42db01){var _0x55220a=function(_0x5ef9ab){while(--_0x5ef9ab){_0xa52531['push'](_0xa52531['shift']());}};_0x55220a(++_0x42db01);}(_0x1ba2,0xb4));var _0x21ba=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1ba2[_0x14add3];return _0x4a174f;};'use strict';var EventEmitter=require(_0x21ba('0x0'));var WhatsappMessage=require('../../mysqldb')['db'][_0x21ba('0x1')];var WhatsappMessageEvents=new EventEmitter();WhatsappMessageEvents['setMaxListeners'](0x0);var events={'afterCreate':_0x21ba('0x2'),'afterUpdate':_0x21ba('0x3'),'afterDestroy':_0x21ba('0x4')};function emitEvent(_0xface0a){return function(_0x3661dd,_0x527ad5,_0x36e207){WhatsappMessageEvents[_0x21ba('0x5')](_0xface0a+':'+_0x3661dd['id'],_0x3661dd);WhatsappMessageEvents['emit'](_0xface0a,_0x3661dd);_0x36e207(null);};}for(var e in events){if(events[_0x21ba('0x6')](e)){var event=events[e];WhatsappMessage['hook'](e,emitEvent(event));}}module[_0x21ba('0x7')]=WhatsappMessageEvents;
\ No newline at end of file
index 5a4f6b3..bc918d7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3476=['out','secret','UserId','WhatsappInteraction','findOne','WhatsappInteractionId','then','update','catch','error','WhatsappAccount','find','WhatsappAccountId','type','twilio','accountSid','authToken','phone','messages','create','whatsapp:','remote','/api/whatsapp/messages/','token','WhatsappMessage,\x20%s,\x20%s,\x20%s','afterCreate','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','sinch','/whatsapp/v1/','/messages/','POST','statuses','message_id','WhatsappMessage,\x20%s','finally','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','bluebird','request-promise','node-fetch','path','rimraf','../../config/environment','./whatsappMessage.attributes','exports','WhatsappMessage','messageId','FULLTEXT','get','direction','toLowerCase'];(function(_0x2e2abe,_0x1317aa){var _0x16fcc5=function(_0x3518c4){while(--_0x3518c4){_0x2e2abe['push'](_0x2e2abe['shift']());}};_0x16fcc5(++_0x1317aa);}(_0x3476,0x132));var _0x6347=function(_0x45bf86,_0x75586e){_0x45bf86=_0x45bf86-0x0;var _0x1f02b7=_0x3476[_0x45bf86];return _0x1f02b7;};'use strict';var _=require(_0x6347('0x0'));var util=require(_0x6347('0x1'));var logger=require(_0x6347('0x2'))(_0x6347('0x3'));var moment=require('moment');var BPromise=require(_0x6347('0x4'));var rp=require(_0x6347('0x5'));var fetch=require(_0x6347('0x6'));var fs=require('fs');var path=require(_0x6347('0x7'));var rimraf=require(_0x6347('0x8'));var config=require(_0x6347('0x9'));var attributes=require(_0x6347('0xa'));module[_0x6347('0xb')]=function(_0x13bd46,_0x40c8f2){return _0x13bd46['define'](_0x6347('0xc'),attributes,{'tableName':'whatsapp_messages','paranoid':![],'indexes':[{'name':'messageId','fields':[_0x6347('0xd')]},{'name':'fti_whatsapp_messages','fields':['body'],'type':_0x6347('0xe')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x580ac5,_0x5b3a47,_0x17841b){var _0x3f358f=_0x13bd46['models'];var _0x2c299b=_0x580ac5[_0x6347('0xf')]({'plain':!![]});if(_0x2c299b[_0x6347('0x10')][_0x6347('0x11')]()==='in'||_0x2c299b[_0x6347('0x10')][_0x6347('0x11')]()===_0x6347('0x12')&&!_0x2c299b[_0x6347('0x13')]&&!_['isNil'](_0x2c299b[_0x6347('0x14')])){_0x3f358f[_0x6347('0x15')][_0x6347('0x16')]({'where':{'id':_0x2c299b[_0x6347('0x17')]}})[_0x6347('0x18')](function(_0x5a0ec0){if(_0x5a0ec0){_0x5a0ec0[_0x6347('0x19')]({'lastMsgAt':_0x2c299b['createdAt'],'lastMsgDirection':_0x2c299b['direction'][_0x6347('0x11')]()});}})[_0x6347('0x1a')](function(_0x3b3ca4){console[_0x6347('0x1b')](_0x3b3ca4);});}if(_0x2c299b[_0x6347('0x10')]===_0x6347('0x12')&&!_0x2c299b[_0x6347('0x13')]){var _0x345d86;_0x3f358f[_0x6347('0x1c')][_0x6347('0x1d')]({'where':{'id':_0x2c299b[_0x6347('0x1e')]},'raw':!![]})[_0x6347('0x18')](function(_0x5f2688){_0x345d86=_0x5f2688;if(_0x345d86&&_0x345d86[_0x6347('0x1f')]){switch(_0x345d86[_0x6347('0x1f')]){case _0x6347('0x20'):var _0x3ae97d=require(_0x6347('0x20'));if(_0x345d86[_0x6347('0x21')]&&_0x345d86[_0x6347('0x22')]&&_0x345d86[_0x6347('0x23')]){var _0x2072fe=new _0x3ae97d(_0x345d86[_0x6347('0x21')],_0x345d86[_0x6347('0x22')]);_0x2072fe[_0x6347('0x24')][_0x6347('0x25')]({'body':_0x2c299b['body'],'to':'whatsapp:'+_0x2c299b[_0x6347('0x23')],'from':_0x6347('0x26')+_0x345d86[_0x6347('0x23')],'statusCallback':_0x345d86[_0x6347('0x27')]+_0x6347('0x28')+_0x2c299b['id']+'/status?token='+_0x345d86[_0x6347('0x29')]})[_0x6347('0x18')](function(_0x32aa94){if(_0x32aa94['sid']){return _0x580ac5[_0x6347('0x19')]({'messageId':_0x32aa94['sid']});}})[_0x6347('0x1a')](function(_0x3899ab){logger[_0x6347('0x1b')](_0x6347('0x2a'),_0x6347('0x2b'),_0x6347('0x20'),util['inspect'](_0x3899ab,{'showHidden':![],'depth':null}));});}else{logger['error'](_0x6347('0x2a'),'afterCreate',_0x6347('0x20'),_0x6347('0x2c'));}break;case _0x6347('0x2d'):var _0x428584=_0x345d86[_0x6347('0x21')];var _0x5a7118=_0x345d86[_0x6347('0x22')];var _0x430923=_0x345d86['baseUrl']+_0x6347('0x2e')+_0x428584+_0x6347('0x2f');var _0x250a89={'to':[_0x2c299b[_0x6347('0x23')]],'message':{'type':'text','text':_0x2c299b['body']}};var _0xaa6934={'method':_0x6347('0x30'),'uri':_0x430923,'headers':{'Authorization':'Bearer\x20'+_0x5a7118,'Content-Type':'application/json'},'body':_0x250a89,'json':!![]};rp(_0xaa6934)['then'](function(_0x1c5cd6){if(_0x1c5cd6[_0x6347('0x31')][0x0][_0x6347('0x32')]){return _0x580ac5[_0x6347('0x19')]({'messageId':_0x1c5cd6[_0x6347('0x31')][0x0]['message_id']});}})[_0x6347('0x1a')](function(_0x458e14){logger['err'](_0x6347('0x33'),_0x458e14);});break;}}})[_0x6347('0x34')](function(){_0x17841b();});}else{_0x17841b();}}},'charset':'utf8mb4','collate':_0x6347('0x35')});};
\ No newline at end of file
+var _0x25f0=['UserId','then','update','catch','error','WhatsappAccount','find','WhatsappAccountId','type','twilio','accountSid','authToken','phone','messages','create','body','whatsapp:','remote','/status?token=','token','sid','afterCreate','inspect','WhatsappMessage,\x20%s,\x20%s,\x20%s','Missing\x20parameters:\x20phone,\x20accountSid\x20or\x20authToken','/whatsapp/v1/','/messages/','text','POST','Bearer\x20','application/json','statuses','message_id','WhatsappMessage,\x20%s','finally','utf8mb4_unicode_ci','lodash','util','../../config/logger','api','moment','bluebird','request-promise','node-fetch','rimraf','../../config/environment','./whatsappMessage.attributes','exports','define','whatsapp_messages','messageId','fti_whatsapp_messages','FULLTEXT','direction','toLowerCase','out','isNil'];(function(_0x383fac,_0xeda6b6){var _0x38d3b6=function(_0x481966){while(--_0x481966){_0x383fac['push'](_0x383fac['shift']());}};_0x38d3b6(++_0xeda6b6);}(_0x25f0,0x108));var _0x025f=function(_0x2fc0d8,_0x17a900){_0x2fc0d8=_0x2fc0d8-0x0;var _0x98ec3=_0x25f0[_0x2fc0d8];return _0x98ec3;};'use strict';var _=require(_0x025f('0x0'));var util=require(_0x025f('0x1'));var logger=require(_0x025f('0x2'))(_0x025f('0x3'));var moment=require(_0x025f('0x4'));var BPromise=require(_0x025f('0x5'));var rp=require(_0x025f('0x6'));var fetch=require(_0x025f('0x7'));var fs=require('fs');var path=require('path');var rimraf=require(_0x025f('0x8'));var config=require(_0x025f('0x9'));var attributes=require(_0x025f('0xa'));module[_0x025f('0xb')]=function(_0x357dda,_0x5d74fb){return _0x357dda[_0x025f('0xc')]('WhatsappMessage',attributes,{'tableName':_0x025f('0xd'),'paranoid':![],'indexes':[{'name':_0x025f('0xe'),'fields':[_0x025f('0xe')]},{'name':_0x025f('0xf'),'fields':['body'],'type':_0x025f('0x10')}],'timestamps':!![],'hooks':{'afterCreate':function(_0x1508da,_0x35de33,_0x46b213){var _0x16a5ad=_0x357dda['models'];var _0x2f5ae9=_0x1508da['get']({'plain':!![]});if(_0x2f5ae9[_0x025f('0x11')][_0x025f('0x12')]()==='in'||_0x2f5ae9[_0x025f('0x11')][_0x025f('0x12')]()===_0x025f('0x13')&&!_0x2f5ae9['secret']&&!_[_0x025f('0x14')](_0x2f5ae9[_0x025f('0x15')])){_0x16a5ad['WhatsappInteraction']['findOne']({'where':{'id':_0x2f5ae9['WhatsappInteractionId']}})[_0x025f('0x16')](function(_0x4a7bf2){if(_0x4a7bf2){_0x4a7bf2[_0x025f('0x17')]({'lastMsgAt':_0x2f5ae9['createdAt'],'lastMsgDirection':_0x2f5ae9['direction'][_0x025f('0x12')]()});}})[_0x025f('0x18')](function(_0x47ede3){console[_0x025f('0x19')](_0x47ede3);});}if(_0x2f5ae9[_0x025f('0x11')]==='out'&&!_0x2f5ae9['secret']){var _0x2b2514;_0x16a5ad[_0x025f('0x1a')][_0x025f('0x1b')]({'where':{'id':_0x2f5ae9[_0x025f('0x1c')]},'raw':!![]})[_0x025f('0x16')](function(_0x13b6db){_0x2b2514=_0x13b6db;if(_0x2b2514&&_0x2b2514[_0x025f('0x1d')]){switch(_0x2b2514['type']){case _0x025f('0x1e'):var _0x16b1f6=require(_0x025f('0x1e'));if(_0x2b2514[_0x025f('0x1f')]&&_0x2b2514[_0x025f('0x20')]&&_0x2b2514[_0x025f('0x21')]){var _0x55f9e2=new _0x16b1f6(_0x2b2514[_0x025f('0x1f')],_0x2b2514[_0x025f('0x20')]);_0x55f9e2[_0x025f('0x22')][_0x025f('0x23')]({'body':_0x2f5ae9[_0x025f('0x24')],'to':_0x025f('0x25')+_0x2f5ae9['phone'],'from':_0x025f('0x25')+_0x2b2514[_0x025f('0x21')],'statusCallback':_0x2b2514[_0x025f('0x26')]+'/api/whatsapp/messages/'+_0x2f5ae9['id']+_0x025f('0x27')+_0x2b2514[_0x025f('0x28')]})[_0x025f('0x16')](function(_0x498ebd){if(_0x498ebd[_0x025f('0x29')]){return _0x1508da[_0x025f('0x17')]({'messageId':_0x498ebd[_0x025f('0x29')]});}})['catch'](function(_0x117767){logger['error']('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x025f('0x2a'),_0x025f('0x1e'),util[_0x025f('0x2b')](_0x117767,{'showHidden':![],'depth':null}));});}else{logger[_0x025f('0x19')](_0x025f('0x2c'),_0x025f('0x2a'),'twilio',_0x025f('0x2d'));}break;case'sinch':var _0x1dcbf3=_0x2b2514['accountSid'];var _0x3c761a=_0x2b2514[_0x025f('0x20')];var _0x408caf=_0x2b2514['baseUrl']+_0x025f('0x2e')+_0x1dcbf3+_0x025f('0x2f');var _0x4c28fe={'to':[_0x2f5ae9[_0x025f('0x21')]],'message':{'type':_0x025f('0x30'),'text':_0x2f5ae9[_0x025f('0x24')]}};var _0x4ae657={'method':_0x025f('0x31'),'uri':_0x408caf,'headers':{'Authorization':_0x025f('0x32')+_0x3c761a,'Content-Type':_0x025f('0x33')},'body':_0x4c28fe,'json':!![]};rp(_0x4ae657)[_0x025f('0x16')](function(_0x39a228){if(_0x39a228[_0x025f('0x34')][0x0][_0x025f('0x35')]){return _0x1508da[_0x025f('0x17')]({'messageId':_0x39a228[_0x025f('0x34')][0x0][_0x025f('0x35')]});}})[_0x025f('0x18')](function(_0x2e781a){logger['err'](_0x025f('0x36'),_0x2e781a);});break;}}})[_0x025f('0x37')](function(){_0x46b213();});}else{_0x46b213();}}},'charset':'utf8mb4','collate':_0x025f('0x38')});};
\ No newline at end of file
index ecd3371..f22fcfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x935d=['WhatsappMessage','create','body','raw','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/utils','../../config/logger','jayson/promise','client','redis','localhost','socket.io-emitter','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','CreateWhatsappMessage'];(function(_0x59474f,_0x231bdf){var _0x29b159=function(_0x413b80){while(--_0x413b80){_0x59474f['push'](_0x59474f['shift']());}};_0x29b159(++_0x231bdf);}(_0x935d,0x95));var _0xd935=function(_0x5a7d41,_0x4447e2){_0x5a7d41=_0x5a7d41-0x0;var _0x98d8fa=_0x935d[_0x5a7d41];return _0x98d8fa;};'use strict';var _=require(_0xd935('0x0'));var util=require(_0xd935('0x1'));var moment=require(_0xd935('0x2'));var BPromise=require(_0xd935('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xd935('0x4'));var db=require(_0xd935('0x5'))['db'];var utils=require(_0xd935('0x6'));var logger=require(_0xd935('0x7'))('rpc');var config=require('../../config/environment');var jayson=require(_0xd935('0x8'));var client=jayson[_0xd935('0x9')]['http']({'port':0x232a});config[_0xd935('0xa')]=_['defaults'](config['redis'],{'host':_0xd935('0xb'),'port':0x18eb});var socket=require(_0xd935('0xc'))(new Redis(config[_0xd935('0xa')]));require('./whatsappMessage.socket')['register'](socket);function respondWithRpcPromise(_0x16a812,_0x3aa6e7,_0x346107){return new BPromise(function(_0x3dea03,_0x3d39b5){return client[_0xd935('0xd')](_0x16a812,_0x346107)[_0xd935('0xe')](function(_0x5dceaf){logger[_0xd935('0xf')](_0xd935('0x10'),_0x3aa6e7,_0xd935('0x11'));logger[_0xd935('0x12')]('WhatsappMessage,\x20%s,\x20%s,\x20%s',_0x3aa6e7,_0xd935('0x11'),JSON[_0xd935('0x13')](_0x5dceaf));if(_0x5dceaf[_0xd935('0x14')]){if(_0x5dceaf['error'][_0xd935('0x15')]===0x1f4){logger[_0xd935('0x14')]('WhatsappMessage,\x20%s,\x20%s',_0x3aa6e7,_0x5dceaf['error'][_0xd935('0x16')]);return _0x3d39b5(_0x5dceaf[_0xd935('0x14')][_0xd935('0x16')]);}logger['error'](_0xd935('0x10'),_0x3aa6e7,_0x5dceaf[_0xd935('0x14')][_0xd935('0x16')]);return _0x3dea03(_0x5dceaf[_0xd935('0x14')][_0xd935('0x16')]);}else{logger[_0xd935('0xf')]('WhatsappMessage,\x20%s,\x20%s',_0x3aa6e7,_0xd935('0x11'));_0x3dea03(_0x5dceaf['result'][_0xd935('0x16')]);}})[_0xd935('0x17')](function(_0x2c35b4){logger[_0xd935('0x14')](_0xd935('0x10'),_0x3aa6e7,_0x2c35b4);_0x3d39b5(_0x2c35b4);});});}exports[_0xd935('0x18')]=function(_0x24bb8a){var _0xd5cf6c=this;return new Promise(function(_0x4a3703,_0x26b9d5){return db[_0xd935('0x19')][_0xd935('0x1a')](_0x24bb8a[_0xd935('0x1b')],{'raw':_0x24bb8a['options']?_0x24bb8a['options'][_0xd935('0x1c')]===undefined?!![]:![]:!![]})[_0xd935('0xe')](function(_0x59b534){logger[_0xd935('0xf')](_0xd935('0x18'),_0x24bb8a);logger[_0xd935('0x12')]('CreateWhatsappMessage',_0x24bb8a,JSON[_0xd935('0x13')](_0x59b534));_0x4a3703(_0x59b534);})[_0xd935('0x17')](function(_0x511c06){logger[_0xd935('0x14')]('CreateWhatsappMessage',_0x511c06[_0xd935('0x16')],_0x24bb8a);_0x26b9d5(_0xd5cf6c[_0xd935('0x14')](0x1f4,_0x511c06['message']));});});};
\ No newline at end of file
+var _0x6684=['options','raw','CreateWhatsappMessage','catch','lodash','util','moment','bluebird','randomstring','ioredis','../../config/utils','../../config/logger','rpc','../../config/environment','client','http','redis','localhost','./whatsappMessage.socket','register','request','then','info','WhatsappMessage,\x20%s,\x20%s','request\x20sent','debug','WhatsappMessage,\x20%s,\x20%s,\x20%s','stringify','error','message','result','WhatsappMessage','create'];(function(_0x1facfa,_0x1acf7d){var _0x9ec701=function(_0x115e37){while(--_0x115e37){_0x1facfa['push'](_0x1facfa['shift']());}};_0x9ec701(++_0x1acf7d);}(_0x6684,0x190));var _0x4668=function(_0x270a54,_0x307ff6){_0x270a54=_0x270a54-0x0;var _0x4d07d0=_0x6684[_0x270a54];return _0x4d07d0;};'use strict';var _=require(_0x4668('0x0'));var util=require(_0x4668('0x1'));var moment=require(_0x4668('0x2'));var BPromise=require(_0x4668('0x3'));var rs=require(_0x4668('0x4'));var fs=require('fs');var Redis=require(_0x4668('0x5'));var db=require('../../mysqldb')['db'];var utils=require(_0x4668('0x6'));var logger=require(_0x4668('0x7'))(_0x4668('0x8'));var config=require(_0x4668('0x9'));var jayson=require('jayson/promise');var client=jayson[_0x4668('0xa')][_0x4668('0xb')]({'port':0x232a});config[_0x4668('0xc')]=_['defaults'](config['redis'],{'host':_0x4668('0xd'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x4668('0xe'))[_0x4668('0xf')](socket);function respondWithRpcPromise(_0x41272e,_0x1c6f3b,_0x568ae5){return new BPromise(function(_0x2284e0,_0x585740){return client[_0x4668('0x10')](_0x41272e,_0x568ae5)[_0x4668('0x11')](function(_0x552656){logger[_0x4668('0x12')](_0x4668('0x13'),_0x1c6f3b,_0x4668('0x14'));logger[_0x4668('0x15')](_0x4668('0x16'),_0x1c6f3b,_0x4668('0x14'),JSON[_0x4668('0x17')](_0x552656));if(_0x552656[_0x4668('0x18')]){if(_0x552656['error']['code']===0x1f4){logger[_0x4668('0x18')](_0x4668('0x13'),_0x1c6f3b,_0x552656[_0x4668('0x18')][_0x4668('0x19')]);return _0x585740(_0x552656['error'][_0x4668('0x19')]);}logger[_0x4668('0x18')]('WhatsappMessage,\x20%s,\x20%s',_0x1c6f3b,_0x552656[_0x4668('0x18')]['message']);return _0x2284e0(_0x552656[_0x4668('0x18')][_0x4668('0x19')]);}else{logger[_0x4668('0x12')](_0x4668('0x13'),_0x1c6f3b,_0x4668('0x14'));_0x2284e0(_0x552656[_0x4668('0x1a')][_0x4668('0x19')]);}})['catch'](function(_0x455a0f){logger[_0x4668('0x18')](_0x4668('0x13'),_0x1c6f3b,_0x455a0f);_0x585740(_0x455a0f);});});}exports['CreateWhatsappMessage']=function(_0x27b705){var _0x27c859=this;return new Promise(function(_0x45f249,_0x346658){return db[_0x4668('0x1b')][_0x4668('0x1c')](_0x27b705['body'],{'raw':_0x27b705[_0x4668('0x1d')]?_0x27b705[_0x4668('0x1d')][_0x4668('0x1e')]===undefined?!![]:![]:!![]})[_0x4668('0x11')](function(_0x5d4bd2){logger['info'](_0x4668('0x1f'),_0x27b705);logger[_0x4668('0x15')](_0x4668('0x1f'),_0x27b705,JSON[_0x4668('0x17')](_0x5d4bd2));_0x45f249(_0x5d4bd2);})[_0x4668('0x20')](function(_0x4bad50){logger[_0x4668('0x18')](_0x4668('0x1f'),_0x4bad50[_0x4668('0x19')],_0x27b705);_0x346658(_0x27c859[_0x4668('0x18')](0x1f4,_0x4bad50[_0x4668('0x19')]));});});};
\ No newline at end of file
index 6758d19..0d6a1aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5ef2=['register','length','./whatsappMessage.events','save','remove','update','emit'];(function(_0x54aa5d,_0x5a9ae6){var _0x6e6a48=function(_0x54dd2b){while(--_0x54dd2b){_0x54aa5d['push'](_0x54aa5d['shift']());}};_0x6e6a48(++_0x5a9ae6);}(_0x5ef2,0x19f));var _0x25ef=function(_0x3a9a70,_0x53f6d5){_0x3a9a70=_0x3a9a70-0x0;var _0x42e5d1=_0x5ef2[_0x3a9a70];return _0x42e5d1;};'use strict';var WhatsappMessageEvents=require(_0x25ef('0x0'));var events=[_0x25ef('0x1'),_0x25ef('0x2'),_0x25ef('0x3')];function createListener(_0x1ede87,_0x1c2308){return function(_0x4b1149){_0x1c2308[_0x25ef('0x4')](_0x1ede87,_0x4b1149);};}function removeListener(_0x272a79,_0x258f89){return function(){WhatsappMessageEvents['removeListener'](_0x272a79,_0x258f89);};}exports[_0x25ef('0x5')]=function(_0xe76e0f){for(var _0x52642c=0x0,_0x21c5b8=events[_0x25ef('0x6')];_0x52642c<_0x21c5b8;_0x52642c++){var _0x2da708=events[_0x52642c];var _0x1d3205=createListener('whatsappMessage:'+_0x2da708,_0xe76e0f);WhatsappMessageEvents['on'](_0x2da708,_0x1d3205);}};
\ No newline at end of file
+var _0x0259=['remove','update','emit','removeListener','save'];(function(_0x2afbb0,_0x44f16d){var _0x411ff2=function(_0x5edd7e){while(--_0x5edd7e){_0x2afbb0['push'](_0x2afbb0['shift']());}};_0x411ff2(++_0x44f16d);}(_0x0259,0x1d5));var _0x9025=function(_0x48ebfc,_0x163b81){_0x48ebfc=_0x48ebfc-0x0;var _0x5d6878=_0x0259[_0x48ebfc];return _0x5d6878;};'use strict';var WhatsappMessageEvents=require('./whatsappMessage.events');var events=[_0x9025('0x0'),_0x9025('0x1'),_0x9025('0x2')];function createListener(_0x498095,_0x1dce02){return function(_0x23bda8){_0x1dce02[_0x9025('0x3')](_0x498095,_0x23bda8);};}function removeListener(_0x4afabd,_0x2335df){return function(){WhatsappMessageEvents[_0x9025('0x4')](_0x4afabd,_0x2335df);};}exports['register']=function(_0x50e112){for(var _0x1f5a16=0x0,_0x54bc62=events['length'];_0x1f5a16<_0x54bc62;_0x1f5a16++){var _0x79ffe=events[_0x1f5a16];var _0x2b58f0=createListener('whatsappMessage:'+_0x79ffe,_0x50e112);WhatsappMessageEvents['on'](_0x79ffe,_0x2b58f0);}};
\ No newline at end of file
index 49a40b7..b90e0a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x52fe=['../../config/environment','index','get','/describe','isAuthenticated','/:id','show','/:id/members','getMembers','/:id/users','getAgents','create','/:id/teams','addTeams','post','put','update','delete','destroy','exports','util','path','connect-timeout','express','Router','../../components/auth/service','../../components/interaction/service'];(function(_0x2fee96,_0x2f735d){var _0x2e6ad1=function(_0x2c55ad){while(--_0x2c55ad){_0x2fee96['push'](_0x2fee96['shift']());}};_0x2e6ad1(++_0x2f735d);}(_0x52fe,0x65));var _0xe52f=function(_0x58aee7,_0x1a574e){_0x58aee7=_0x58aee7-0x0;var _0x1ec5c8=_0x52fe[_0x58aee7];return _0x1ec5c8;};'use strict';var multer=require('multer');var util=require(_0xe52f('0x0'));var path=require(_0xe52f('0x1'));var timeout=require(_0xe52f('0x2'));var express=require(_0xe52f('0x3'));var router=express[_0xe52f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0xe52f('0x5'));var interaction=require(_0xe52f('0x6'));var config=require(_0xe52f('0x7'));var controller=require('./whatsappQueue.controller');router['get']('/',auth['isAuthenticated'](),controller[_0xe52f('0x8')]);router[_0xe52f('0x9')](_0xe52f('0xa'),auth[_0xe52f('0xb')](),controller['describe']);router['get'](_0xe52f('0xc'),auth[_0xe52f('0xb')](),controller[_0xe52f('0xd')]);router['get'](_0xe52f('0xe'),auth[_0xe52f('0xb')](),controller[_0xe52f('0xf')]);router['get']('/:id/teams',auth[_0xe52f('0xb')](),controller['getTeams']);router[_0xe52f('0x9')](_0xe52f('0x10'),auth[_0xe52f('0xb')](),controller[_0xe52f('0x11')]);router['post']('/',auth[_0xe52f('0xb')](),controller[_0xe52f('0x12')]);router['post'](_0xe52f('0x13'),auth[_0xe52f('0xb')](),controller[_0xe52f('0x14')]);router[_0xe52f('0x15')](_0xe52f('0x10'),auth[_0xe52f('0xb')](),controller['addAgents']);router[_0xe52f('0x16')](_0xe52f('0xc'),auth[_0xe52f('0xb')](),controller[_0xe52f('0x17')]);router[_0xe52f('0x18')](_0xe52f('0xc'),auth['isAuthenticated'](),controller[_0xe52f('0x19')]);router[_0xe52f('0x18')](_0xe52f('0x13'),auth[_0xe52f('0xb')](),controller['removeTeams']);router[_0xe52f('0x18')](_0xe52f('0x10'),auth[_0xe52f('0xb')](),controller['removeAgents']);module[_0xe52f('0x1a')]=router;
\ No newline at end of file
+var _0xfdf4=['post','addTeams','addAgents','put','update','delete','/:id/teams','removeTeams','removeAgents','exports','util','path','connect-timeout','express','Router','fs-extra','../../components/interaction/service','./whatsappQueue.controller','get','isAuthenticated','index','/describe','describe','/:id','show','/:id/users','getAgents'];(function(_0x22a033,_0x3ca39f){var _0x4d5ad0=function(_0x5e0cbc){while(--_0x5e0cbc){_0x22a033['push'](_0x22a033['shift']());}};_0x4d5ad0(++_0x3ca39f);}(_0xfdf4,0xfd));var _0x4fdf=function(_0x48ad10,_0x5176fc){_0x48ad10=_0x48ad10-0x0;var _0x2b768c=_0xfdf4[_0x48ad10];return _0x2b768c;};'use strict';var multer=require('multer');var util=require(_0x4fdf('0x0'));var path=require(_0x4fdf('0x1'));var timeout=require(_0x4fdf('0x2'));var express=require(_0x4fdf('0x3'));var router=express[_0x4fdf('0x4')]();var fs_extra=require(_0x4fdf('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0x4fdf('0x6'));var config=require('../../config/environment');var controller=require(_0x4fdf('0x7'));router[_0x4fdf('0x8')]('/',auth[_0x4fdf('0x9')](),controller[_0x4fdf('0xa')]);router[_0x4fdf('0x8')](_0x4fdf('0xb'),auth[_0x4fdf('0x9')](),controller[_0x4fdf('0xc')]);router['get'](_0x4fdf('0xd'),auth[_0x4fdf('0x9')](),controller[_0x4fdf('0xe')]);router[_0x4fdf('0x8')]('/:id/members',auth['isAuthenticated'](),controller['getMembers']);router['get']('/:id/teams',auth['isAuthenticated'](),controller['getTeams']);router['get'](_0x4fdf('0xf'),auth[_0x4fdf('0x9')](),controller[_0x4fdf('0x10')]);router[_0x4fdf('0x11')]('/',auth[_0x4fdf('0x9')](),controller['create']);router[_0x4fdf('0x11')]('/:id/teams',auth[_0x4fdf('0x9')](),controller[_0x4fdf('0x12')]);router[_0x4fdf('0x11')](_0x4fdf('0xf'),auth[_0x4fdf('0x9')](),controller[_0x4fdf('0x13')]);router[_0x4fdf('0x14')](_0x4fdf('0xd'),auth[_0x4fdf('0x9')](),controller[_0x4fdf('0x15')]);router['delete'](_0x4fdf('0xd'),auth['isAuthenticated'](),controller['destroy']);router[_0x4fdf('0x16')](_0x4fdf('0x17'),auth[_0x4fdf('0x9')](),controller[_0x4fdf('0x18')]);router[_0x4fdf('0x16')](_0x4fdf('0xf'),auth['isAuthenticated'](),controller[_0x4fdf('0x19')]);module[_0x4fdf('0x1a')]=router;
\ No newline at end of file
index 4406a4d..e408086 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4e61=['sequelize','exports','STRING','ENUM','rrmemory','beepall','roundrobin'];(function(_0x44ce70,_0x4f4e57){var _0x3aea81=function(_0x3ebb67){while(--_0x3ebb67){_0x44ce70['push'](_0x44ce70['shift']());}};_0x3aea81(++_0x4f4e57);}(_0x4e61,0x8c));var _0x14e6=function(_0x3ad737,_0x300131){_0x3ad737=_0x3ad737-0x0;var _0x16c1e2=_0x4e61[_0x3ad737];return _0x16c1e2;};'use strict';var Sequelize=require(_0x14e6('0x0'));module[_0x14e6('0x1')]={'name':{'type':Sequelize[_0x14e6('0x2')],'unique':'name','validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize['INTEGER'],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0x14e6('0x3')](_0x14e6('0x4'),_0x14e6('0x5'),_0x14e6('0x6'))},'description':{'type':Sequelize[_0x14e6('0x2')]}};
\ No newline at end of file
+var _0xc99a=['INTEGER','ENUM','beepall','roundrobin','sequelize','exports','STRING','name'];(function(_0x5bf665,_0x3113cb){var _0x2215a6=function(_0x4f656b){while(--_0x4f656b){_0x5bf665['push'](_0x5bf665['shift']());}};_0x2215a6(++_0x3113cb);}(_0xc99a,0x7c));var _0xac99=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xc99a[_0x321bb2];return _0x9c12ed;};'use strict';var Sequelize=require(_0xac99('0x0'));module[_0xac99('0x1')]={'name':{'type':Sequelize[_0xac99('0x2')],'unique':_0xac99('0x3'),'validate':{'notEmpty':!![],'is':/^[A-Za-z0-9\.\_]+$/i}},'timeout':{'type':Sequelize[_0xac99('0x4')],'validate':{'min':0x1,'max':0x20c49b}},'strategy':{'type':Sequelize[_0xac99('0x5')]('rrmemory',_0xac99('0x6'),_0xac99('0x7'))},'description':{'type':Sequelize[_0xac99('0x2')]}};
\ No newline at end of file
index 61042dd..782ffab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe64f=['show','params','rawAttributes','find','create','body','user','get','Unable\x20to\x20retrieve\x20the\x20current\x20user','role','UserProfileSection','autoAssociation','Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s','describe','findOne','UserWhatsappQueue','WhatsappQueueId','findAndCountAll','agent','whatsappPause','updatedAt','createdAt','format','SIP','getTeams','Team','nolimit','addTeams','ids','User','Agents','online','voicePause','interface','flatMap','sequelize','transaction','each','findOrCreate','emit','userWhatsappQueue:save','field','tq.TeamId','from','team_has_whatsapp_queues','join','user_has_teams','WhatsappQueueId\x20=\x20?','clone','ut.UserId\x20=\x20?','push','QueryTypes','every','TeamId','includes','all','union','compact','value','removeTeams','removeAgents','forEach','userWhatsappQueue:remove','addAgents','omit','isArray','getAgents','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../config/license/hardware','../../config/logger','api','../../config/environment','../../config/license/util','../../mysqldb','redis','defaults','localhost','socket.io-emitter','sendStatus','status','end','json','offset','undefined','count','limit','set','Content-Range','apply','reject','update','then','WhatsappQueues','UserProfileResource','destroy','error','name','send','index','WhatsappQueue','fieldName','type','key','map','query','keys','intersection','model','fields','attributes','length','hasOwnProperty','order','sort','where','filters','pick','filter','merge','VIRTUAL','options','includeAll','include','findAll','rows','catch'];(function(_0x2f2dd0,_0x242127){var _0x3c48d1=function(_0x4516b1){while(--_0x4516b1){_0x2f2dd0['push'](_0x2f2dd0['shift']());}};_0x3c48d1(++_0x242127);}(_0xe64f,0xd5));var _0xfe64=function(_0x4b08c7,_0x23c743){_0x4b08c7=_0x4b08c7-0x0;var _0x3fc3a7=_0xe64f[_0x4b08c7];return _0x3fc3a7;};'use strict';var emlformat=require(_0xfe64('0x0'));var rimraf=require(_0xfe64('0x1'));var zipdir=require(_0xfe64('0x2'));var jsonpatch=require(_0xfe64('0x3'));var rp=require(_0xfe64('0x4'));var moment=require(_0xfe64('0x5'));var BPromise=require(_0xfe64('0x6'));var Mustache=require(_0xfe64('0x7'));var util=require('util');var path=require(_0xfe64('0x8'));var sox=require(_0xfe64('0x9'));var csv=require(_0xfe64('0xa'));var ejs=require(_0xfe64('0xb'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0xfe64('0xc'));var squel=require(_0xfe64('0xd'));var crypto=require(_0xfe64('0xe'));var jsforce=require(_0xfe64('0xf'));var deskjs=require(_0xfe64('0x10'));var toCsv=require(_0xfe64('0xa'));var querystring=require(_0xfe64('0x11'));var Papa=require('papaparse');var Redis=require(_0xfe64('0x12'));var authService=require(_0xfe64('0x13'));var qs=require(_0xfe64('0x14'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xfe64('0x15'));var logger=require(_0xfe64('0x16'))(_0xfe64('0x17'));var utils=require('../../config/utils');var config=require(_0xfe64('0x18'));var licenseUtil=require(_0xfe64('0x19'));var db=require(_0xfe64('0x1a'))['db'];config[_0xfe64('0x1b')]=_[_0xfe64('0x1c')](config[_0xfe64('0x1b')],{'host':_0xfe64('0x1d'),'port':0x18eb});var socket=require(_0xfe64('0x1e'))(new Redis(config[_0xfe64('0x1b')]));require('./whatsappQueue.socket')['register'](socket);function respondWithStatusCode(_0x5dbe52,_0x35094b){_0x35094b=_0x35094b||0xcc;return function(_0x5ee0bf){if(_0x5ee0bf){return _0x5dbe52[_0xfe64('0x1f')](_0x35094b);}return _0x5dbe52[_0xfe64('0x20')](_0x35094b)[_0xfe64('0x21')]();};}function respondWithResult(_0x29d0b6,_0x52e518){_0x52e518=_0x52e518||0xc8;return function(_0x2b5032){if(_0x2b5032){return _0x29d0b6[_0xfe64('0x20')](_0x52e518)[_0xfe64('0x22')](_0x2b5032);}};}function respondWithFilteredResult(_0x54d18f,_0x3754c0){return function(_0x1ced4f){if(_0x1ced4f){var _0x327ac4=typeof _0x3754c0[_0xfe64('0x23')]===_0xfe64('0x24')&&typeof _0x3754c0['limit']===_0xfe64('0x24');var _0x1707e8=_0x1ced4f[_0xfe64('0x25')];var _0x546714=_0x327ac4?0x0:_0x3754c0[_0xfe64('0x23')];var _0x475ca2=_0x327ac4?_0x1ced4f[_0xfe64('0x25')]:_0x3754c0[_0xfe64('0x23')]+_0x3754c0[_0xfe64('0x26')];var _0x549554;if(_0x475ca2>=_0x1707e8){_0x475ca2=_0x1707e8;_0x549554=0xc8;}else{_0x549554=0xce;}_0x54d18f[_0xfe64('0x20')](_0x549554);return _0x54d18f[_0xfe64('0x27')](_0xfe64('0x28'),_0x546714+'-'+_0x475ca2+'/'+_0x1707e8)[_0xfe64('0x22')](_0x1ced4f);}return null;};}function patchUpdates(_0x4db353){return function(_0x2f5deb){try{jsonpatch[_0xfe64('0x29')](_0x2f5deb,_0x4db353,!![]);}catch(_0x8f1a11){return BPromise[_0xfe64('0x2a')](_0x8f1a11);}return _0x2f5deb['save']();};}function saveUpdates(_0x418fbf,_0x31eccd){return function(_0x400f51){if(_0x400f51){return _0x400f51[_0xfe64('0x2b')](_0x418fbf)[_0xfe64('0x2c')](function(_0x2ef82d){return _0x2ef82d;});}return null;};}function removeEntity(_0x4b5728,_0x4a1f77){return function(_0x12b499){if(_0x12b499){return _0x12b499['destroy']()['then'](function(){var _0xf45022=_0x12b499['get']({'plain':!![]});var _0x102a19=_0xfe64('0x2d');return db[_0xfe64('0x2e')][_0xfe64('0x2f')]({'where':{'type':_0x102a19,'resourceId':_0xf45022['id']}})[_0xfe64('0x2c')](function(){return _0x12b499;});})[_0xfe64('0x2c')](function(){_0x4b5728['status'](0xcc)[_0xfe64('0x21')]();});}};}function handleEntityNotFound(_0x56b750,_0x4c941f){return function(_0x4fde30){if(!_0x4fde30){_0x56b750[_0xfe64('0x1f')](0x194);}return _0x4fde30;};}function handleError(_0x374aa4,_0x4d18d){_0x4d18d=_0x4d18d||0x1f4;return function(_0x2d5341){logger[_0xfe64('0x30')](_0x2d5341['stack']);if(_0x2d5341[_0xfe64('0x31')]){delete _0x2d5341[_0xfe64('0x31')];}_0x374aa4[_0xfe64('0x20')](_0x4d18d)[_0xfe64('0x32')](_0x2d5341);};}exports[_0xfe64('0x33')]=function(_0x3b8399,_0x1676a4){var _0xe14751={},_0x52b877={},_0x2b07df={'count':0x0,'rows':[]};var _0xc0e7d8=_['map'](db[_0xfe64('0x34')]['rawAttributes'],function(_0x4c24bc){return{'name':_0x4c24bc[_0xfe64('0x35')],'type':_0x4c24bc[_0xfe64('0x36')][_0xfe64('0x37')]};});_0x52b877['model']=_[_0xfe64('0x38')](_0xc0e7d8,'name');_0x52b877[_0xfe64('0x39')]=_[_0xfe64('0x3a')](_0x3b8399[_0xfe64('0x39')]);_0x52b877['filters']=_[_0xfe64('0x3b')](_0x52b877[_0xfe64('0x3c')],_0x52b877[_0xfe64('0x39')]);_0xe14751['attributes']=_['intersection'](_0x52b877[_0xfe64('0x3c')],qs[_0xfe64('0x3d')](_0x3b8399[_0xfe64('0x39')]['fields']));_0xe14751[_0xfe64('0x3e')]=_0xe14751[_0xfe64('0x3e')][_0xfe64('0x3f')]?_0xe14751[_0xfe64('0x3e')]:_0x52b877[_0xfe64('0x3c')];if(!_0x3b8399[_0xfe64('0x39')][_0xfe64('0x40')]('nolimit')){_0xe14751[_0xfe64('0x26')]=qs['limit'](_0x3b8399[_0xfe64('0x39')][_0xfe64('0x26')]);_0xe14751[_0xfe64('0x23')]=qs[_0xfe64('0x23')](_0x3b8399[_0xfe64('0x39')][_0xfe64('0x23')]);}_0xe14751[_0xfe64('0x41')]=qs[_0xfe64('0x42')](_0x3b8399[_0xfe64('0x39')]['sort']);_0xe14751[_0xfe64('0x43')]=qs[_0xfe64('0x44')](_[_0xfe64('0x45')](_0x3b8399[_0xfe64('0x39')],_0x52b877[_0xfe64('0x44')]),_0xc0e7d8);if(_0x3b8399[_0xfe64('0x39')][_0xfe64('0x46')]){_0xe14751[_0xfe64('0x43')]=_[_0xfe64('0x47')](_0xe14751[_0xfe64('0x43')],{'$or':_[_0xfe64('0x38')](_0xc0e7d8,function(_0xb30b){if(_0xb30b[_0xfe64('0x36')]!==_0xfe64('0x48')){var _0x57a362={};_0x57a362[_0xb30b['name']]={'$like':'%'+_0x3b8399['query'][_0xfe64('0x46')]+'%'};return _0x57a362;}})});}_0xe14751=_[_0xfe64('0x47')]({},_0xe14751,_0x3b8399[_0xfe64('0x49')]);var _0x22a17d={'where':_0xe14751['where']};return db[_0xfe64('0x34')][_0xfe64('0x25')](_0x22a17d)[_0xfe64('0x2c')](function(_0x27d1e6){_0x2b07df['count']=_0x27d1e6;if(_0x3b8399[_0xfe64('0x39')][_0xfe64('0x4a')]){_0xe14751[_0xfe64('0x4b')]=[{'all':!![]}];}return db['WhatsappQueue'][_0xfe64('0x4c')](_0xe14751);})['then'](function(_0x414c37){_0x2b07df[_0xfe64('0x4d')]=_0x414c37;return _0x2b07df;})[_0xfe64('0x2c')](respondWithFilteredResult(_0x1676a4,_0xe14751))[_0xfe64('0x4e')](handleError(_0x1676a4,null));};exports[_0xfe64('0x4f')]=function(_0x5bb79a,_0x3757bf){var _0x2e813a={'raw':!![],'where':{'id':_0x5bb79a[_0xfe64('0x50')]['id']}},_0x54719c={};_0x54719c[_0xfe64('0x3c')]=_[_0xfe64('0x3a')](db['WhatsappQueue'][_0xfe64('0x51')]);_0x54719c['query']=_['keys'](_0x5bb79a[_0xfe64('0x39')]);_0x54719c[_0xfe64('0x44')]=_['intersection'](_0x54719c['model'],_0x54719c[_0xfe64('0x39')]);_0x2e813a[_0xfe64('0x3e')]=_[_0xfe64('0x3b')](_0x54719c['model'],qs['fields'](_0x5bb79a[_0xfe64('0x39')][_0xfe64('0x3d')]));_0x2e813a[_0xfe64('0x3e')]=_0x2e813a[_0xfe64('0x3e')]['length']?_0x2e813a['attributes']:_0x54719c[_0xfe64('0x3c')];if(_0x5bb79a[_0xfe64('0x39')][_0xfe64('0x4a')]){_0x2e813a[_0xfe64('0x4b')]=[{'all':!![]}];}_0x2e813a=_[_0xfe64('0x47')]({},_0x2e813a,_0x5bb79a['options']);return db['WhatsappQueue'][_0xfe64('0x52')](_0x2e813a)['then'](handleEntityNotFound(_0x3757bf,null))[_0xfe64('0x2c')](respondWithResult(_0x3757bf,null))[_0xfe64('0x4e')](handleError(_0x3757bf,null));};exports['create']=function(_0x452a48,_0x4e47aa){return db[_0xfe64('0x34')][_0xfe64('0x53')](_0x452a48[_0xfe64('0x54')],{})[_0xfe64('0x2c')](function(_0x11ab81){var _0x3b2d8f=_0x452a48[_0xfe64('0x55')][_0xfe64('0x56')]({'plain':!![]});if(!_0x3b2d8f)throw new Error(_0xfe64('0x57'));if(_0x3b2d8f[_0xfe64('0x58')]===_0xfe64('0x55')){var _0x2ad29e=_0x11ab81[_0xfe64('0x56')]({'plain':!![]});var _0x52eef4=_0xfe64('0x2d');return db[_0xfe64('0x59')]['find']({'where':{'name':_0x52eef4,'userProfileId':_0x3b2d8f['userProfileId']},'raw':!![]})[_0xfe64('0x2c')](function(_0x2ab3fa){if(_0x2ab3fa&&_0x2ab3fa[_0xfe64('0x5a')]===0x0){return db[_0xfe64('0x2e')]['create']({'name':_0x2ad29e[_0xfe64('0x31')],'resourceId':_0x2ad29e['id'],'type':_0x2ab3fa[_0xfe64('0x31')],'sectionId':_0x2ab3fa['id']},{})[_0xfe64('0x2c')](function(){return _0x11ab81;});}else{return _0x11ab81;}})[_0xfe64('0x4e')](function(_0x455594){logger[_0xfe64('0x30')](_0xfe64('0x5b'),_0x455594);throw _0x455594;});}return _0x11ab81;})['then'](respondWithResult(_0x4e47aa,0xc9))[_0xfe64('0x4e')](handleError(_0x4e47aa,null));};exports[_0xfe64('0x2b')]=function(_0x861a2f,_0x11d885){if(_0x861a2f[_0xfe64('0x54')]['id']){delete _0x861a2f['body']['id'];}return db[_0xfe64('0x34')][_0xfe64('0x52')]({'where':{'id':_0x861a2f['params']['id']}})['then'](handleEntityNotFound(_0x11d885,null))[_0xfe64('0x2c')](saveUpdates(_0x861a2f['body'],null))[_0xfe64('0x2c')](respondWithResult(_0x11d885,null))[_0xfe64('0x4e')](handleError(_0x11d885,null));};exports['destroy']=function(_0x3111d7,_0x1ea917){return db[_0xfe64('0x34')][_0xfe64('0x52')]({'where':{'id':_0x3111d7[_0xfe64('0x50')]['id']}})[_0xfe64('0x2c')](handleEntityNotFound(_0x1ea917,null))['then'](removeEntity(_0x1ea917,null))['catch'](handleError(_0x1ea917,null));};exports[_0xfe64('0x5c')]=function(_0x421a87,_0x2550a8){return db[_0xfe64('0x34')][_0xfe64('0x5c')]()[_0xfe64('0x2c')](respondWithResult(_0x2550a8,null))[_0xfe64('0x4e')](handleError(_0x2550a8,null));};exports['getMembers']=function(_0x8332e4,_0x457ff9,_0x48242a){var _0x5a4a20={'raw':!![],'where':{}},_0x247eed={},_0x1dc8ae;return db[_0xfe64('0x34')][_0xfe64('0x5d')]({'where':{'id':_0x8332e4[_0xfe64('0x50')]['id']}})[_0xfe64('0x2c')](handleEntityNotFound(_0x457ff9,null))[_0xfe64('0x2c')](function(_0xa5f9bf){if(_0xa5f9bf){_0x1dc8ae=_0xa5f9bf['get']({'plain':!![]});_0x247eed[_0xfe64('0x3c')]=_[_0xfe64('0x3a')](db[_0xfe64('0x5e')][_0xfe64('0x51')]);_0x247eed[_0xfe64('0x39')]=_[_0xfe64('0x3a')](_0x8332e4[_0xfe64('0x39')]);_0x247eed['filters']=_['intersection'](_0x247eed[_0xfe64('0x3c')],_0x247eed[_0xfe64('0x39')]);_0x5a4a20[_0xfe64('0x3e')]=_['intersection'](_0x247eed[_0xfe64('0x3c')],qs[_0xfe64('0x3d')](_0x8332e4[_0xfe64('0x39')]['fields']));_0x5a4a20[_0xfe64('0x3e')]=_0x5a4a20[_0xfe64('0x3e')][_0xfe64('0x3f')]?_0x5a4a20[_0xfe64('0x3e')]:_0x247eed[_0xfe64('0x3c')];if(!_0x8332e4[_0xfe64('0x39')][_0xfe64('0x40')]('nolimit')){_0x5a4a20[_0xfe64('0x26')]=qs[_0xfe64('0x26')](_0x8332e4[_0xfe64('0x39')][_0xfe64('0x26')]);_0x5a4a20[_0xfe64('0x23')]=qs[_0xfe64('0x23')](_0x8332e4['query'][_0xfe64('0x23')]);}_0x5a4a20[_0xfe64('0x41')]=qs['sort'](_0x8332e4['query'][_0xfe64('0x42')]);_0x5a4a20[_0xfe64('0x43')]=qs[_0xfe64('0x44')](_[_0xfe64('0x45')](_0x8332e4[_0xfe64('0x39')],_0x247eed['filters']));_0x5a4a20[_0xfe64('0x43')][_0xfe64('0x5f')]=_0xa5f9bf['id'];if(_0x8332e4[_0xfe64('0x39')][_0xfe64('0x46')]){_0x5a4a20['where']=_['merge'](_0x5a4a20[_0xfe64('0x43')],{'$or':_[_0xfe64('0x38')](_0x5a4a20['attributes'],function(_0x209677){var _0x9de949={};_0x9de949[_0x209677]={'$like':'%'+_0x8332e4['query'][_0xfe64('0x46')]+'%'};return _0x9de949;})});}_0x5a4a20=_['merge']({},_0x5a4a20,_0x8332e4[_0xfe64('0x49')]);return db[_0xfe64('0x5e')]['findAll'](_0x5a4a20);}})['then'](function(_0x110379){if(_0x110379){return db['User'][_0xfe64('0x60')]({'where':{'id':_[_0xfe64('0x38')](_0x110379,'UserId'),'role':_0xfe64('0x61')},'attributes':['id',_0xfe64('0x31'),_0xfe64('0x62'),_0xfe64('0x63'),_0xfe64('0x64')]});}})[_0xfe64('0x2c')](function(_0x304062){if(_0x304062){return{'count':_0x304062[_0xfe64('0x25')],'rows':_[_0xfe64('0x38')](_0x304062[_0xfe64('0x4d')],function(_0x4dbb5d){return{'membername':_0x4dbb5d[_0xfe64('0x31')],'UserId':_0x4dbb5d['id'],'queue_name':_0x1dc8ae[_0xfe64('0x31')],'WhatsappQueueId':_0x1dc8ae['id'],'interface':util[_0xfe64('0x65')]('%s/%s',_0xfe64('0x66'),_0x4dbb5d[_0xfe64('0x31')]),'penalty':0x0,'paused':_0x4dbb5d['whatsappPause'],'createdAt':_0x4dbb5d[_0xfe64('0x64')],'updatedAt':_0x4dbb5d[_0xfe64('0x63')]};})};}else{return{'count':0x0,'rows':[]};}})['then'](respondWithFilteredResult(_0x457ff9,_0x5a4a20))[_0xfe64('0x4e')](handleError(_0x457ff9,null));};exports[_0xfe64('0x67')]=function(_0x351a90,_0x498167,_0x2e9d37){var _0x1d1673={};var _0x45a2b4={};var _0x560faa;var _0x843808;return db[_0xfe64('0x34')]['findOne']({'where':{'id':_0x351a90[_0xfe64('0x50')]['id']}})['then'](handleEntityNotFound(_0x498167,null))[_0xfe64('0x2c')](function(_0x4a29e8){if(_0x4a29e8){_0x560faa=_0x4a29e8;_0x45a2b4[_0xfe64('0x3c')]=_[_0xfe64('0x3a')](db[_0xfe64('0x68')]['rawAttributes']);_0x45a2b4['query']=_[_0xfe64('0x3a')](_0x351a90['query']);_0x45a2b4[_0xfe64('0x44')]=_['intersection'](_0x45a2b4[_0xfe64('0x3c')],_0x45a2b4[_0xfe64('0x39')]);_0x1d1673[_0xfe64('0x3e')]=_['intersection'](_0x45a2b4[_0xfe64('0x3c')],qs[_0xfe64('0x3d')](_0x351a90[_0xfe64('0x39')][_0xfe64('0x3d')]));_0x1d1673[_0xfe64('0x3e')]=_0x1d1673['attributes']['length']?_0x1d1673[_0xfe64('0x3e')]:_0x45a2b4[_0xfe64('0x3c')];_0x1d1673[_0xfe64('0x41')]=qs[_0xfe64('0x42')](_0x351a90['query'][_0xfe64('0x42')]);_0x1d1673[_0xfe64('0x43')]=qs[_0xfe64('0x44')](_[_0xfe64('0x45')](_0x351a90['query'],_0x45a2b4['filters']));if(_0x351a90['query']['filter']){_0x1d1673['where']=_['merge'](_0x1d1673[_0xfe64('0x43')],{'$or':_[_0xfe64('0x38')](_0x1d1673[_0xfe64('0x3e')],function(_0x505d5b){var _0x50a076={};_0x50a076[_0x505d5b]={'$like':'%'+_0x351a90[_0xfe64('0x39')][_0xfe64('0x46')]+'%'};return _0x50a076;})});}_0x1d1673=_[_0xfe64('0x47')]({},_0x1d1673,_0x351a90[_0xfe64('0x49')]);return _0x560faa['getTeams'](_0x1d1673);}})['then'](function(_0x41ee6f){if(_0x41ee6f){_0x843808=_0x41ee6f[_0xfe64('0x3f')];if(!_0x351a90[_0xfe64('0x39')][_0xfe64('0x40')](_0xfe64('0x69'))){_0x1d1673['limit']=qs[_0xfe64('0x26')](_0x351a90[_0xfe64('0x39')][_0xfe64('0x26')]);_0x1d1673[_0xfe64('0x23')]=qs[_0xfe64('0x23')](_0x351a90[_0xfe64('0x39')][_0xfe64('0x23')]);}return _0x560faa[_0xfe64('0x67')](_0x1d1673);}})[_0xfe64('0x2c')](function(_0x38f160){if(_0x38f160){return _0x38f160?{'count':_0x843808,'rows':_0x38f160}:null;}})['then'](respondWithResult(_0x498167,null))[_0xfe64('0x4e')](handleError(_0x498167,null));};exports[_0xfe64('0x6a')]=function(_0x2e29ad,_0x21bc01,_0x34733a){var _0x1c1488=_0x2e29ad[_0xfe64('0x54')][_0xfe64('0x6b')];return db[_0xfe64('0x68')][_0xfe64('0x4c')]({'where':{'id':_0x1c1488},'attributes':['id'],'include':[{'model':db[_0xfe64('0x6c')],'as':_0xfe64('0x6d'),'attributes':['id','name',_0xfe64('0x6e'),_0xfe64('0x6f'),_0xfe64('0x70')],'raw':!![]}]})[_0xfe64('0x2c')](function(_0x2ff932){if(_0x2ff932){var _0x37ff95=_[_0xfe64('0x71')](_0x2ff932,function(_0x1a40bd){var _0x2c14ea=_0x1a40bd[_0xfe64('0x56')]({'plain':!![]});return _0x2c14ea[_0xfe64('0x6d')];});return db[_0xfe64('0x34')][_0xfe64('0x52')]({'where':{'id':_0x2e29ad[_0xfe64('0x50')]['id']}})[_0xfe64('0x2c')](function(_0x13322d){return db[_0xfe64('0x72')][_0xfe64('0x73')](function(_0x9539c1){return _0x13322d[_0xfe64('0x6a')](_0x1c1488,{'transaction':_0x9539c1})[_0xfe64('0x2c')](function(){return BPromise[_0xfe64('0x74')](_0x37ff95,function(_0x3028c4){return db[_0xfe64('0x5e')][_0xfe64('0x75')]({'where':{'UserId':_0x3028c4['id'],'WhatsappQueueId':_0x2e29ad[_0xfe64('0x50')]['id']},'transaction':_0x9539c1});});})[_0xfe64('0x2c')](function(){_0x37ff95['forEach'](function(_0x58328c){socket[_0xfe64('0x76')](_0xfe64('0x77'),{'UserId':_0x58328c['id'],'WhatsappQueueId':_0x13322d['id']});});});});});}})[_0xfe64('0x2c')](respondWithStatusCode(_0x21bc01,null))[_0xfe64('0x4e')](handleError(_0x21bc01,null));};exports['removeTeams']=function(_0x2862a5,_0x2cacf2,_0x4f179a){return db['Team'][_0xfe64('0x4c')]({'where':{'id':_0x2862a5[_0xfe64('0x39')]['ids']},'attributes':['id'],'include':[{'model':db[_0xfe64('0x6c')],'as':'Agents','attributes':['id'],'raw':!![]}]})[_0xfe64('0x2c')](handleEntityNotFound(_0x2cacf2,null))[_0xfe64('0x2c')](function(_0x1c30f8){var _0x138c02=_['map'](_0x1c30f8,'id');var _0x5b3599=[];var _0x42ffd7=[];var _0x567aba=squel['select']();_0x567aba[_0xfe64('0x78')](_0xfe64('0x79'))[_0xfe64('0x7a')](_0xfe64('0x7b'),'tq')[_0xfe64('0x7c')](_0xfe64('0x7d'),'ut','ut.TeamId\x20=\x20tq.TeamId')[_0xfe64('0x43')](_0xfe64('0x7e'),_0x2862a5[_0xfe64('0x50')]['id']);for(var _0x4af9e3=0x0;_0x4af9e3<_0x1c30f8[_0xfe64('0x3f')];_0x4af9e3+=0x1){let _0x36904a=_0x1c30f8[_0x4af9e3];for(var _0x54b4a7=0x0;_0x54b4a7<_0x36904a['Agents'][_0xfe64('0x3f')];_0x54b4a7+=0x1){let _0x2987b1=_0x36904a[_0xfe64('0x6d')][_0x54b4a7];var _0x4f537f=_0x567aba[_0xfe64('0x7f')]();_0x4f537f[_0xfe64('0x43')](_0xfe64('0x80'),_0x2987b1['id']);_0x42ffd7[_0xfe64('0x81')](db[_0xfe64('0x72')][_0xfe64('0x39')](_0x4f537f['toString'](),{'type':db[_0xfe64('0x72')][_0xfe64('0x82')]['SELECT']})['then'](function(_0x3d392c){if(_0x3d392c[_0xfe64('0x3f')]===0x1){return _0x2987b1['id'];}else{var _0x28338e=_[_0xfe64('0x83')](_[_0xfe64('0x38')](_0x3d392c,_0xfe64('0x84')),function(_0x209b2f){return _[_0xfe64('0x85')](_0x138c02,_0x209b2f);});if(_0x28338e){return _0x2987b1['id'];}}}));}}return BPromise[_0xfe64('0x86')](_0x42ffd7)[_0xfe64('0x2c')](function(_0x4f15cf){_0x5b3599=_(_0x5b3599)[_0xfe64('0x87')](_0x4f15cf)[_0xfe64('0x88')]()[_0xfe64('0x89')]();return db[_0xfe64('0x34')][_0xfe64('0x52')]({'where':{'id':_0x2862a5[_0xfe64('0x50')]['id']}})[_0xfe64('0x2c')](function(_0x36b88c){return db[_0xfe64('0x72')][_0xfe64('0x73')](function(_0x4b1aea){return _0x36b88c[_0xfe64('0x8a')](_0x2862a5['query']['ids'],{'transaction':_0x4b1aea})[_0xfe64('0x2c')](function(){if(!_['isEmpty'](_0x5b3599)){return _0x36b88c[_0xfe64('0x8b')](_0x5b3599,{'transaction':_0x4b1aea});}})[_0xfe64('0x2c')](function(){_0x5b3599[_0xfe64('0x8c')](function(_0x46e91b){socket[_0xfe64('0x76')](_0xfe64('0x8d'),{'UserId':_0x46e91b,'WhatsappQueueId':_0x36b88c['id']});});});});});});})[_0xfe64('0x2c')](respondWithStatusCode(_0x2cacf2,null))[_0xfe64('0x4e')](handleError(_0x2cacf2,null));};exports[_0xfe64('0x8e')]=function(_0x316200,_0x904be0,_0x557277){return db[_0xfe64('0x34')]['find']({'where':{'id':_0x316200[_0xfe64('0x50')]['id']}})[_0xfe64('0x2c')](handleEntityNotFound(_0x904be0,null))['then'](function(_0x58f7a3){if(_0x58f7a3){return _0x58f7a3['addAgents'](_0x316200[_0xfe64('0x54')]['ids'],_[_0xfe64('0x8f')](_0x316200[_0xfe64('0x54')],[_0xfe64('0x6b'),'id'])||{})['spread'](function(_0xbe1ff5){for(var _0x180e78=0x0;_0x180e78<_0x316200[_0xfe64('0x54')][_0xfe64('0x6b')]['length'];_0x180e78+=0x1){socket['emit'](_0xfe64('0x77'),{'UserId':Number(_0x316200['body'][_0xfe64('0x6b')][_0x180e78]),'WhatsappQueueId':Number(_0x316200['params']['id'])});}return _0xbe1ff5;});}})['then'](respondWithResult(_0x904be0,null))['catch'](handleError(_0x904be0,null));};exports[_0xfe64('0x8b')]=function(_0x531aa7,_0x440c45,_0x380d4a){return db['WhatsappQueue'][_0xfe64('0x52')]({'where':{'id':_0x531aa7[_0xfe64('0x50')]['id']}})['then'](handleEntityNotFound(_0x440c45,null))[_0xfe64('0x2c')](function(_0x1a06bd){if(_0x1a06bd){return _0x1a06bd[_0xfe64('0x8b')](_0x531aa7[_0xfe64('0x39')][_0xfe64('0x6b')])[_0xfe64('0x2c')](function(){if(_[_0xfe64('0x90')](_0x531aa7[_0xfe64('0x39')]['ids'])){for(var _0x42e177=0x0;_0x42e177<_0x531aa7['query'][_0xfe64('0x6b')][_0xfe64('0x3f')];_0x42e177+=0x1){socket['emit']('userWhatsappQueue:remove',{'UserId':Number(_0x531aa7[_0xfe64('0x39')]['ids'][_0x42e177]),'WhatsappQueueId':Number(_0x531aa7[_0xfe64('0x50')]['id'])});}}else{socket[_0xfe64('0x76')]('userWhatsappQueue:remove',{'UserId':Number(_0x531aa7[_0xfe64('0x39')][_0xfe64('0x6b')]),'WhatsappQueueId':Number(_0x531aa7[_0xfe64('0x50')]['id'])});}});}})[_0xfe64('0x2c')](respondWithStatusCode(_0x440c45,null))[_0xfe64('0x4e')](handleError(_0x440c45,null));};exports[_0xfe64('0x91')]=function(_0x18641a,_0x48dadc,_0x4144c0){var _0x12ac17={};var _0x118ec1={};var _0x4a7e80;var _0x5b3dcb;return db['WhatsappQueue'][_0xfe64('0x5d')]({'where':{'id':_0x18641a[_0xfe64('0x50')]['id']}})[_0xfe64('0x2c')](handleEntityNotFound(_0x48dadc,null))[_0xfe64('0x2c')](function(_0x6afa45){if(_0x6afa45){_0x4a7e80=_0x6afa45;_0x118ec1[_0xfe64('0x3c')]=_[_0xfe64('0x3a')](db[_0xfe64('0x6c')]['rawAttributes']);_0x118ec1['query']=_[_0xfe64('0x3a')](_0x18641a[_0xfe64('0x39')]);_0x118ec1[_0xfe64('0x44')]=_[_0xfe64('0x3b')](_0x118ec1[_0xfe64('0x3c')],_0x118ec1['query']);_0x12ac17[_0xfe64('0x3e')]=_[_0xfe64('0x3b')](_0x118ec1['model'],qs['fields'](_0x18641a[_0xfe64('0x39')][_0xfe64('0x3d')]));_0x12ac17['attributes']=_0x12ac17[_0xfe64('0x3e')]['length']?_0x12ac17[_0xfe64('0x3e')]:_0x118ec1[_0xfe64('0x3c')];_0x12ac17[_0xfe64('0x41')]=qs[_0xfe64('0x42')](_0x18641a[_0xfe64('0x39')][_0xfe64('0x42')]);_0x12ac17[_0xfe64('0x43')]=qs[_0xfe64('0x44')](_[_0xfe64('0x45')](_0x18641a[_0xfe64('0x39')],_0x118ec1[_0xfe64('0x44')]));if(_0x18641a[_0xfe64('0x39')][_0xfe64('0x46')]){_0x12ac17[_0xfe64('0x43')]=_[_0xfe64('0x47')](_0x12ac17['where'],{'$or':_[_0xfe64('0x38')](_0x12ac17[_0xfe64('0x3e')],function(_0x1f6845){var _0x326e75={};_0x326e75[_0x1f6845]={'$like':'%'+_0x18641a[_0xfe64('0x39')][_0xfe64('0x46')]+'%'};return _0x326e75;})});}_0x12ac17=_['merge']({},_0x12ac17,_0x18641a[_0xfe64('0x49')]);return _0x4a7e80[_0xfe64('0x91')](_0x12ac17);}})['then'](function(_0x2c9f48){if(_0x2c9f48){_0x5b3dcb=_0x2c9f48['length'];if(!_0x18641a[_0xfe64('0x39')]['hasOwnProperty'](_0xfe64('0x69'))){_0x12ac17[_0xfe64('0x26')]=qs[_0xfe64('0x26')](_0x18641a[_0xfe64('0x39')][_0xfe64('0x26')]);_0x12ac17[_0xfe64('0x23')]=qs['offset'](_0x18641a[_0xfe64('0x39')]['offset']);}return _0x4a7e80[_0xfe64('0x91')](_0x12ac17);}})[_0xfe64('0x2c')](function(_0x68b97f){if(_0x68b97f){return _0x68b97f?{'count':_0x5b3dcb,'rows':_0x68b97f}:null;}})[_0xfe64('0x2c')](respondWithResult(_0x48dadc,null))[_0xfe64('0x4e')](handleError(_0x48dadc,null));};
\ No newline at end of file
+var _0x3de4=['WhatsappQueues','UserProfileResource','destroy','error','name','send','index','map','rawAttributes','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','order','sort','where','pick','merge','VIRTUAL','filter','options','includeAll','WhatsappQueue','rows','catch','params','find','create','body','user','UserProfileSection','autoAssociation','describe','getMembers','WhatsappQueueId','findAll','User','findAndCountAll','UserId','agent','updatedAt','createdAt','format','%s/%s','whatsappPause','getTeams','findOne','hasOwnProperty','addTeams','ids','Agents','online','interface','flatMap','sequelize','each','findOrCreate','emit','userWhatsappQueue:save','removeTeams','select','tq.TeamId','from','team_has_whatsapp_queues','join','ut.TeamId\x20=\x20tq.TeamId','WhatsappQueueId\x20=\x20?','ut.UserId\x20=\x20?','push','SELECT','every','TeamId','all','union','transaction','isEmpty','userWhatsappQueue:remove','addAgents','omit','removeAgents','isArray','getAgents','eml-format','zip-dir','fast-json-patch','request-promise','moment','bluebird','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','../../mysqldb','redis','defaults','localhost','./whatsappQueue.socket','register','sendStatus','status','end','json','undefined','limit','offset','count','set','Content-Range','apply','reject','save','update','then','get'];(function(_0x1f6df2,_0x22a926){var _0x3ad5cc=function(_0xcddf84){while(--_0xcddf84){_0x1f6df2['push'](_0x1f6df2['shift']());}};_0x3ad5cc(++_0x22a926);}(_0x3de4,0x1ee));var _0x43de=function(_0x2c169e,_0x554de0){_0x2c169e=_0x2c169e-0x0;var _0x1c5914=_0x3de4[_0x2c169e];return _0x1c5914;};'use strict';var emlformat=require(_0x43de('0x0'));var rimraf=require('rimraf');var zipdir=require(_0x43de('0x1'));var jsonpatch=require(_0x43de('0x2'));var rp=require(_0x43de('0x3'));var moment=require(_0x43de('0x4'));var BPromise=require(_0x43de('0x5'));var Mustache=require('mustache');var util=require('util');var path=require('path');var sox=require('sox');var csv=require(_0x43de('0x6'));var ejs=require(_0x43de('0x7'));var fs=require('fs');var fs_extra=require(_0x43de('0x8'));var _=require(_0x43de('0x9'));var squel=require(_0x43de('0xa'));var crypto=require(_0x43de('0xb'));var jsforce=require(_0x43de('0xc'));var deskjs=require(_0x43de('0xd'));var toCsv=require(_0x43de('0x6'));var querystring=require(_0x43de('0xe'));var Papa=require(_0x43de('0xf'));var Redis=require(_0x43de('0x10'));var authService=require(_0x43de('0x11'));var qs=require(_0x43de('0x12'));var as=require(_0x43de('0x13'));var hardwareService=require(_0x43de('0x14'));var logger=require(_0x43de('0x15'))('api');var utils=require(_0x43de('0x16'));var config=require(_0x43de('0x17'));var licenseUtil=require('../../config/license/util');var db=require(_0x43de('0x18'))['db'];config[_0x43de('0x19')]=_[_0x43de('0x1a')](config[_0x43de('0x19')],{'host':_0x43de('0x1b'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x43de('0x19')]));require(_0x43de('0x1c'))[_0x43de('0x1d')](socket);function respondWithStatusCode(_0x1d2676,_0xf4535b){_0xf4535b=_0xf4535b||0xcc;return function(_0x794302){if(_0x794302){return _0x1d2676[_0x43de('0x1e')](_0xf4535b);}return _0x1d2676[_0x43de('0x1f')](_0xf4535b)[_0x43de('0x20')]();};}function respondWithResult(_0xaf4365,_0x111546){_0x111546=_0x111546||0xc8;return function(_0x1d32d8){if(_0x1d32d8){return _0xaf4365['status'](_0x111546)[_0x43de('0x21')](_0x1d32d8);}};}function respondWithFilteredResult(_0x245d04,_0x53d207){return function(_0x44a26a){if(_0x44a26a){var _0x450e00=typeof _0x53d207['offset']===_0x43de('0x22')&&typeof _0x53d207[_0x43de('0x23')]==='undefined';var _0x3309bf=_0x44a26a['count'];var _0x2e49f9=_0x450e00?0x0:_0x53d207[_0x43de('0x24')];var _0x5a37d6=_0x450e00?_0x44a26a[_0x43de('0x25')]:_0x53d207[_0x43de('0x24')]+_0x53d207[_0x43de('0x23')];var _0x5a8db3;if(_0x5a37d6>=_0x3309bf){_0x5a37d6=_0x3309bf;_0x5a8db3=0xc8;}else{_0x5a8db3=0xce;}_0x245d04[_0x43de('0x1f')](_0x5a8db3);return _0x245d04[_0x43de('0x26')](_0x43de('0x27'),_0x2e49f9+'-'+_0x5a37d6+'/'+_0x3309bf)['json'](_0x44a26a);}return null;};}function patchUpdates(_0x1f1ca6){return function(_0xca050a){try{jsonpatch[_0x43de('0x28')](_0xca050a,_0x1f1ca6,!![]);}catch(_0x275716){return BPromise[_0x43de('0x29')](_0x275716);}return _0xca050a[_0x43de('0x2a')]();};}function saveUpdates(_0x17a7c3,_0x106166){return function(_0x47d597){if(_0x47d597){return _0x47d597[_0x43de('0x2b')](_0x17a7c3)[_0x43de('0x2c')](function(_0x2e9322){return _0x2e9322;});}return null;};}function removeEntity(_0x181003,_0x1ead25){return function(_0x386733){if(_0x386733){return _0x386733['destroy']()['then'](function(){var _0x2de244=_0x386733[_0x43de('0x2d')]({'plain':!![]});var _0x8468d0=_0x43de('0x2e');return db[_0x43de('0x2f')][_0x43de('0x30')]({'where':{'type':_0x8468d0,'resourceId':_0x2de244['id']}})[_0x43de('0x2c')](function(){return _0x386733;});})[_0x43de('0x2c')](function(){_0x181003[_0x43de('0x1f')](0xcc)[_0x43de('0x20')]();});}};}function handleEntityNotFound(_0x195cef,_0x2ce57b){return function(_0x1c3208){if(!_0x1c3208){_0x195cef[_0x43de('0x1e')](0x194);}return _0x1c3208;};}function handleError(_0x20a775,_0x3d342b){_0x3d342b=_0x3d342b||0x1f4;return function(_0x23e044){logger[_0x43de('0x31')](_0x23e044['stack']);if(_0x23e044[_0x43de('0x32')]){delete _0x23e044[_0x43de('0x32')];}_0x20a775[_0x43de('0x1f')](_0x3d342b)[_0x43de('0x33')](_0x23e044);};}exports[_0x43de('0x34')]=function(_0x182969,_0x55cf07){var _0x30ab6d={},_0x7bc428={},_0x468f39={'count':0x0,'rows':[]};var _0x1321fb=_[_0x43de('0x35')](db['WhatsappQueue'][_0x43de('0x36')],function(_0x3ea0a1){return{'name':_0x3ea0a1[_0x43de('0x37')],'type':_0x3ea0a1[_0x43de('0x38')]['key']};});_0x7bc428[_0x43de('0x39')]=_[_0x43de('0x35')](_0x1321fb,_0x43de('0x32'));_0x7bc428[_0x43de('0x3a')]=_[_0x43de('0x3b')](_0x182969[_0x43de('0x3a')]);_0x7bc428[_0x43de('0x3c')]=_[_0x43de('0x3d')](_0x7bc428[_0x43de('0x39')],_0x7bc428[_0x43de('0x3a')]);_0x30ab6d[_0x43de('0x3e')]=_[_0x43de('0x3d')](_0x7bc428[_0x43de('0x39')],qs[_0x43de('0x3f')](_0x182969['query']['fields']));_0x30ab6d['attributes']=_0x30ab6d[_0x43de('0x3e')][_0x43de('0x40')]?_0x30ab6d[_0x43de('0x3e')]:_0x7bc428[_0x43de('0x39')];if(!_0x182969['query']['hasOwnProperty'](_0x43de('0x41'))){_0x30ab6d[_0x43de('0x23')]=qs[_0x43de('0x23')](_0x182969[_0x43de('0x3a')][_0x43de('0x23')]);_0x30ab6d['offset']=qs['offset'](_0x182969[_0x43de('0x3a')][_0x43de('0x24')]);}_0x30ab6d[_0x43de('0x42')]=qs[_0x43de('0x43')](_0x182969[_0x43de('0x3a')][_0x43de('0x43')]);_0x30ab6d[_0x43de('0x44')]=qs[_0x43de('0x3c')](_[_0x43de('0x45')](_0x182969[_0x43de('0x3a')],_0x7bc428[_0x43de('0x3c')]),_0x1321fb);if(_0x182969['query']['filter']){_0x30ab6d[_0x43de('0x44')]=_[_0x43de('0x46')](_0x30ab6d['where'],{'$or':_[_0x43de('0x35')](_0x1321fb,function(_0x8b5013){if(_0x8b5013[_0x43de('0x38')]!==_0x43de('0x47')){var _0x2391ce={};_0x2391ce[_0x8b5013[_0x43de('0x32')]]={'$like':'%'+_0x182969[_0x43de('0x3a')][_0x43de('0x48')]+'%'};return _0x2391ce;}})});}_0x30ab6d=_[_0x43de('0x46')]({},_0x30ab6d,_0x182969[_0x43de('0x49')]);var _0x410007={'where':_0x30ab6d['where']};return db['WhatsappQueue'][_0x43de('0x25')](_0x410007)[_0x43de('0x2c')](function(_0x1d6c28){_0x468f39['count']=_0x1d6c28;if(_0x182969[_0x43de('0x3a')][_0x43de('0x4a')]){_0x30ab6d['include']=[{'all':!![]}];}return db[_0x43de('0x4b')]['findAll'](_0x30ab6d);})['then'](function(_0x26b772){_0x468f39[_0x43de('0x4c')]=_0x26b772;return _0x468f39;})[_0x43de('0x2c')](respondWithFilteredResult(_0x55cf07,_0x30ab6d))[_0x43de('0x4d')](handleError(_0x55cf07,null));};exports['show']=function(_0x158907,_0x42b8c5){var _0x56efa7={'raw':!![],'where':{'id':_0x158907[_0x43de('0x4e')]['id']}},_0x334b62={};_0x334b62[_0x43de('0x39')]=_[_0x43de('0x3b')](db[_0x43de('0x4b')][_0x43de('0x36')]);_0x334b62[_0x43de('0x3a')]=_[_0x43de('0x3b')](_0x158907[_0x43de('0x3a')]);_0x334b62[_0x43de('0x3c')]=_[_0x43de('0x3d')](_0x334b62[_0x43de('0x39')],_0x334b62[_0x43de('0x3a')]);_0x56efa7[_0x43de('0x3e')]=_[_0x43de('0x3d')](_0x334b62[_0x43de('0x39')],qs['fields'](_0x158907[_0x43de('0x3a')][_0x43de('0x3f')]));_0x56efa7[_0x43de('0x3e')]=_0x56efa7[_0x43de('0x3e')][_0x43de('0x40')]?_0x56efa7['attributes']:_0x334b62[_0x43de('0x39')];if(_0x158907[_0x43de('0x3a')][_0x43de('0x4a')]){_0x56efa7['include']=[{'all':!![]}];}_0x56efa7=_[_0x43de('0x46')]({},_0x56efa7,_0x158907[_0x43de('0x49')]);return db['WhatsappQueue'][_0x43de('0x4f')](_0x56efa7)['then'](handleEntityNotFound(_0x42b8c5,null))[_0x43de('0x2c')](respondWithResult(_0x42b8c5,null))[_0x43de('0x4d')](handleError(_0x42b8c5,null));};exports[_0x43de('0x50')]=function(_0x7dcf60,_0x47d1d5){return db['WhatsappQueue']['create'](_0x7dcf60[_0x43de('0x51')],{})['then'](function(_0x3db021){var _0x463f41=_0x7dcf60[_0x43de('0x52')][_0x43de('0x2d')]({'plain':!![]});if(!_0x463f41)throw new Error('Unable\x20to\x20retrieve\x20the\x20current\x20user');if(_0x463f41['role']===_0x43de('0x52')){var _0x132376=_0x3db021[_0x43de('0x2d')]({'plain':!![]});var _0x513437=_0x43de('0x2e');return db[_0x43de('0x53')][_0x43de('0x4f')]({'where':{'name':_0x513437,'userProfileId':_0x463f41['userProfileId']},'raw':!![]})[_0x43de('0x2c')](function(_0x4fec1e){if(_0x4fec1e&&_0x4fec1e[_0x43de('0x54')]===0x0){return db[_0x43de('0x2f')][_0x43de('0x50')]({'name':_0x132376[_0x43de('0x32')],'resourceId':_0x132376['id'],'type':_0x4fec1e[_0x43de('0x32')],'sectionId':_0x4fec1e['id']},{})[_0x43de('0x2c')](function(){return _0x3db021;});}else{return _0x3db021;}})[_0x43de('0x4d')](function(_0x41ecd7){logger[_0x43de('0x31')]('Unable\x20to\x20associate\x20the\x20resource\x20to\x20the\x20User\x20Profile:\x20%s',_0x41ecd7);throw _0x41ecd7;});}return _0x3db021;})[_0x43de('0x2c')](respondWithResult(_0x47d1d5,0xc9))['catch'](handleError(_0x47d1d5,null));};exports['update']=function(_0x3dc6e0,_0x2894f4){if(_0x3dc6e0[_0x43de('0x51')]['id']){delete _0x3dc6e0[_0x43de('0x51')]['id'];}return db['WhatsappQueue'][_0x43de('0x4f')]({'where':{'id':_0x3dc6e0[_0x43de('0x4e')]['id']}})[_0x43de('0x2c')](handleEntityNotFound(_0x2894f4,null))['then'](saveUpdates(_0x3dc6e0[_0x43de('0x51')],null))[_0x43de('0x2c')](respondWithResult(_0x2894f4,null))['catch'](handleError(_0x2894f4,null));};exports[_0x43de('0x30')]=function(_0x4ef928,_0x3865ff){return db[_0x43de('0x4b')]['find']({'where':{'id':_0x4ef928[_0x43de('0x4e')]['id']}})[_0x43de('0x2c')](handleEntityNotFound(_0x3865ff,null))[_0x43de('0x2c')](removeEntity(_0x3865ff,null))['catch'](handleError(_0x3865ff,null));};exports[_0x43de('0x55')]=function(_0x4fd072,_0x2ae9f4){return db['WhatsappQueue'][_0x43de('0x55')]()['then'](respondWithResult(_0x2ae9f4,null))['catch'](handleError(_0x2ae9f4,null));};exports[_0x43de('0x56')]=function(_0xadc9ec,_0x21958e,_0x4d5f99){var _0x4e244f={'raw':!![],'where':{}},_0x205856={},_0x1ab167;return db['WhatsappQueue']['findOne']({'where':{'id':_0xadc9ec[_0x43de('0x4e')]['id']}})['then'](handleEntityNotFound(_0x21958e,null))[_0x43de('0x2c')](function(_0x31bba3){if(_0x31bba3){_0x1ab167=_0x31bba3[_0x43de('0x2d')]({'plain':!![]});_0x205856[_0x43de('0x39')]=_[_0x43de('0x3b')](db['UserWhatsappQueue'][_0x43de('0x36')]);_0x205856[_0x43de('0x3a')]=_['keys'](_0xadc9ec[_0x43de('0x3a')]);_0x205856[_0x43de('0x3c')]=_[_0x43de('0x3d')](_0x205856[_0x43de('0x39')],_0x205856['query']);_0x4e244f[_0x43de('0x3e')]=_['intersection'](_0x205856[_0x43de('0x39')],qs['fields'](_0xadc9ec[_0x43de('0x3a')][_0x43de('0x3f')]));_0x4e244f[_0x43de('0x3e')]=_0x4e244f[_0x43de('0x3e')][_0x43de('0x40')]?_0x4e244f[_0x43de('0x3e')]:_0x205856[_0x43de('0x39')];if(!_0xadc9ec['query']['hasOwnProperty'](_0x43de('0x41'))){_0x4e244f[_0x43de('0x23')]=qs[_0x43de('0x23')](_0xadc9ec[_0x43de('0x3a')]['limit']);_0x4e244f['offset']=qs[_0x43de('0x24')](_0xadc9ec[_0x43de('0x3a')][_0x43de('0x24')]);}_0x4e244f[_0x43de('0x42')]=qs[_0x43de('0x43')](_0xadc9ec['query'][_0x43de('0x43')]);_0x4e244f[_0x43de('0x44')]=qs['filters'](_['pick'](_0xadc9ec[_0x43de('0x3a')],_0x205856[_0x43de('0x3c')]));_0x4e244f[_0x43de('0x44')][_0x43de('0x57')]=_0x31bba3['id'];if(_0xadc9ec[_0x43de('0x3a')][_0x43de('0x48')]){_0x4e244f[_0x43de('0x44')]=_[_0x43de('0x46')](_0x4e244f['where'],{'$or':_[_0x43de('0x35')](_0x4e244f[_0x43de('0x3e')],function(_0x2b7161){var _0x434000={};_0x434000[_0x2b7161]={'$like':'%'+_0xadc9ec[_0x43de('0x3a')][_0x43de('0x48')]+'%'};return _0x434000;})});}_0x4e244f=_['merge']({},_0x4e244f,_0xadc9ec[_0x43de('0x49')]);return db['UserWhatsappQueue'][_0x43de('0x58')](_0x4e244f);}})['then'](function(_0x14d98e){if(_0x14d98e){return db[_0x43de('0x59')][_0x43de('0x5a')]({'where':{'id':_['map'](_0x14d98e,_0x43de('0x5b')),'role':_0x43de('0x5c')},'attributes':['id','name','whatsappPause',_0x43de('0x5d'),_0x43de('0x5e')]});}})[_0x43de('0x2c')](function(_0x630ac5){if(_0x630ac5){return{'count':_0x630ac5[_0x43de('0x25')],'rows':_[_0x43de('0x35')](_0x630ac5[_0x43de('0x4c')],function(_0x4ef6a2){return{'membername':_0x4ef6a2[_0x43de('0x32')],'UserId':_0x4ef6a2['id'],'queue_name':_0x1ab167[_0x43de('0x32')],'WhatsappQueueId':_0x1ab167['id'],'interface':util[_0x43de('0x5f')](_0x43de('0x60'),'SIP',_0x4ef6a2[_0x43de('0x32')]),'penalty':0x0,'paused':_0x4ef6a2[_0x43de('0x61')],'createdAt':_0x4ef6a2[_0x43de('0x5e')],'updatedAt':_0x4ef6a2['updatedAt']};})};}else{return{'count':0x0,'rows':[]};}})[_0x43de('0x2c')](respondWithFilteredResult(_0x21958e,_0x4e244f))[_0x43de('0x4d')](handleError(_0x21958e,null));};exports[_0x43de('0x62')]=function(_0x41f3a7,_0x42dc67,_0x37149c){var _0x150191={};var _0x57b922={};var _0xc2431e;var _0x5b4a56;return db[_0x43de('0x4b')][_0x43de('0x63')]({'where':{'id':_0x41f3a7['params']['id']}})['then'](handleEntityNotFound(_0x42dc67,null))[_0x43de('0x2c')](function(_0x359501){if(_0x359501){_0xc2431e=_0x359501;_0x57b922[_0x43de('0x39')]=_['keys'](db['Team']['rawAttributes']);_0x57b922[_0x43de('0x3a')]=_[_0x43de('0x3b')](_0x41f3a7['query']);_0x57b922[_0x43de('0x3c')]=_[_0x43de('0x3d')](_0x57b922[_0x43de('0x39')],_0x57b922[_0x43de('0x3a')]);_0x150191[_0x43de('0x3e')]=_[_0x43de('0x3d')](_0x57b922[_0x43de('0x39')],qs[_0x43de('0x3f')](_0x41f3a7[_0x43de('0x3a')][_0x43de('0x3f')]));_0x150191[_0x43de('0x3e')]=_0x150191[_0x43de('0x3e')]['length']?_0x150191['attributes']:_0x57b922[_0x43de('0x39')];_0x150191[_0x43de('0x42')]=qs[_0x43de('0x43')](_0x41f3a7[_0x43de('0x3a')][_0x43de('0x43')]);_0x150191[_0x43de('0x44')]=qs['filters'](_['pick'](_0x41f3a7[_0x43de('0x3a')],_0x57b922['filters']));if(_0x41f3a7[_0x43de('0x3a')]['filter']){_0x150191[_0x43de('0x44')]=_[_0x43de('0x46')](_0x150191[_0x43de('0x44')],{'$or':_['map'](_0x150191['attributes'],function(_0x53bf3f){var _0x2cb1f5={};_0x2cb1f5[_0x53bf3f]={'$like':'%'+_0x41f3a7[_0x43de('0x3a')][_0x43de('0x48')]+'%'};return _0x2cb1f5;})});}_0x150191=_['merge']({},_0x150191,_0x41f3a7[_0x43de('0x49')]);return _0xc2431e['getTeams'](_0x150191);}})[_0x43de('0x2c')](function(_0xdfa214){if(_0xdfa214){_0x5b4a56=_0xdfa214['length'];if(!_0x41f3a7[_0x43de('0x3a')][_0x43de('0x64')](_0x43de('0x41'))){_0x150191[_0x43de('0x23')]=qs[_0x43de('0x23')](_0x41f3a7[_0x43de('0x3a')][_0x43de('0x23')]);_0x150191[_0x43de('0x24')]=qs[_0x43de('0x24')](_0x41f3a7['query'][_0x43de('0x24')]);}return _0xc2431e[_0x43de('0x62')](_0x150191);}})[_0x43de('0x2c')](function(_0x15efae){if(_0x15efae){return _0x15efae?{'count':_0x5b4a56,'rows':_0x15efae}:null;}})[_0x43de('0x2c')](respondWithResult(_0x42dc67,null))['catch'](handleError(_0x42dc67,null));};exports[_0x43de('0x65')]=function(_0x1e3b91,_0x1dfbc2,_0x1e2219){var _0x4bdc2d=_0x1e3b91[_0x43de('0x51')][_0x43de('0x66')];return db['Team'][_0x43de('0x58')]({'where':{'id':_0x4bdc2d},'attributes':['id'],'include':[{'model':db[_0x43de('0x59')],'as':_0x43de('0x67'),'attributes':['id',_0x43de('0x32'),_0x43de('0x68'),'voicePause',_0x43de('0x69')],'raw':!![]}]})['then'](function(_0x143c98){if(_0x143c98){var _0x39a8dd=_[_0x43de('0x6a')](_0x143c98,function(_0x4f336d){var _0x4427c2=_0x4f336d[_0x43de('0x2d')]({'plain':!![]});return _0x4427c2[_0x43de('0x67')];});return db[_0x43de('0x4b')]['find']({'where':{'id':_0x1e3b91['params']['id']}})['then'](function(_0x487091){return db[_0x43de('0x6b')]['transaction'](function(_0x5224b8){return _0x487091[_0x43de('0x65')](_0x4bdc2d,{'transaction':_0x5224b8})[_0x43de('0x2c')](function(){return BPromise[_0x43de('0x6c')](_0x39a8dd,function(_0x245299){return db['UserWhatsappQueue'][_0x43de('0x6d')]({'where':{'UserId':_0x245299['id'],'WhatsappQueueId':_0x1e3b91[_0x43de('0x4e')]['id']},'transaction':_0x5224b8});});})[_0x43de('0x2c')](function(){_0x39a8dd['forEach'](function(_0x46175a){socket[_0x43de('0x6e')](_0x43de('0x6f'),{'UserId':_0x46175a['id'],'WhatsappQueueId':_0x487091['id']});});});});});}})[_0x43de('0x2c')](respondWithStatusCode(_0x1dfbc2,null))[_0x43de('0x4d')](handleError(_0x1dfbc2,null));};exports[_0x43de('0x70')]=function(_0x5e8711,_0x4e2b83,_0x1fce23){return db['Team']['findAll']({'where':{'id':_0x5e8711[_0x43de('0x3a')][_0x43de('0x66')]},'attributes':['id'],'include':[{'model':db['User'],'as':_0x43de('0x67'),'attributes':['id'],'raw':!![]}]})['then'](handleEntityNotFound(_0x4e2b83,null))[_0x43de('0x2c')](function(_0x3837df){var _0x4ee0f9=_[_0x43de('0x35')](_0x3837df,'id');var _0x23fe93=[];var _0x1d1249=[];var _0x4593d4=squel[_0x43de('0x71')]();_0x4593d4['field'](_0x43de('0x72'))[_0x43de('0x73')](_0x43de('0x74'),'tq')[_0x43de('0x75')]('user_has_teams','ut',_0x43de('0x76'))['where'](_0x43de('0x77'),_0x5e8711[_0x43de('0x4e')]['id']);for(var _0x1ccc9a=0x0;_0x1ccc9a<_0x3837df['length'];_0x1ccc9a+=0x1){let _0x59209a=_0x3837df[_0x1ccc9a];for(var _0x1bf10c=0x0;_0x1bf10c<_0x59209a[_0x43de('0x67')][_0x43de('0x40')];_0x1bf10c+=0x1){let _0x435e40=_0x59209a[_0x43de('0x67')][_0x1bf10c];var _0x56fd99=_0x4593d4['clone']();_0x56fd99[_0x43de('0x44')](_0x43de('0x78'),_0x435e40['id']);_0x1d1249[_0x43de('0x79')](db[_0x43de('0x6b')]['query'](_0x56fd99['toString'](),{'type':db['sequelize']['QueryTypes'][_0x43de('0x7a')]})['then'](function(_0x40610c){if(_0x40610c[_0x43de('0x40')]===0x1){return _0x435e40['id'];}else{var _0x1b1c3f=_[_0x43de('0x7b')](_[_0x43de('0x35')](_0x40610c,_0x43de('0x7c')),function(_0xfa10f0){return _['includes'](_0x4ee0f9,_0xfa10f0);});if(_0x1b1c3f){return _0x435e40['id'];}}}));}}return BPromise[_0x43de('0x7d')](_0x1d1249)[_0x43de('0x2c')](function(_0x4df3a3){_0x23fe93=_(_0x23fe93)[_0x43de('0x7e')](_0x4df3a3)['compact']()['value']();return db['WhatsappQueue'][_0x43de('0x4f')]({'where':{'id':_0x5e8711['params']['id']}})['then'](function(_0x36919e){return db['sequelize'][_0x43de('0x7f')](function(_0x2b29ab){return _0x36919e['removeTeams'](_0x5e8711['query'][_0x43de('0x66')],{'transaction':_0x2b29ab})['then'](function(){if(!_[_0x43de('0x80')](_0x23fe93)){return _0x36919e['removeAgents'](_0x23fe93,{'transaction':_0x2b29ab});}})[_0x43de('0x2c')](function(){_0x23fe93['forEach'](function(_0x565253){socket[_0x43de('0x6e')](_0x43de('0x81'),{'UserId':_0x565253,'WhatsappQueueId':_0x36919e['id']});});});});});});})[_0x43de('0x2c')](respondWithStatusCode(_0x4e2b83,null))['catch'](handleError(_0x4e2b83,null));};exports[_0x43de('0x82')]=function(_0x3a25a6,_0x36aa33,_0x406095){return db[_0x43de('0x4b')][_0x43de('0x4f')]({'where':{'id':_0x3a25a6[_0x43de('0x4e')]['id']}})['then'](handleEntityNotFound(_0x36aa33,null))['then'](function(_0x585c7d){if(_0x585c7d){return _0x585c7d[_0x43de('0x82')](_0x3a25a6[_0x43de('0x51')][_0x43de('0x66')],_[_0x43de('0x83')](_0x3a25a6['body'],[_0x43de('0x66'),'id'])||{})['spread'](function(_0x27a844){for(var _0x4c2fce=0x0;_0x4c2fce<_0x3a25a6[_0x43de('0x51')][_0x43de('0x66')][_0x43de('0x40')];_0x4c2fce+=0x1){socket[_0x43de('0x6e')](_0x43de('0x6f'),{'UserId':Number(_0x3a25a6[_0x43de('0x51')][_0x43de('0x66')][_0x4c2fce]),'WhatsappQueueId':Number(_0x3a25a6[_0x43de('0x4e')]['id'])});}return _0x27a844;});}})['then'](respondWithResult(_0x36aa33,null))[_0x43de('0x4d')](handleError(_0x36aa33,null));};exports[_0x43de('0x84')]=function(_0xaa1e8b,_0x5ac2b6,_0x50fb30){return db[_0x43de('0x4b')][_0x43de('0x4f')]({'where':{'id':_0xaa1e8b[_0x43de('0x4e')]['id']}})[_0x43de('0x2c')](handleEntityNotFound(_0x5ac2b6,null))[_0x43de('0x2c')](function(_0x438e24){if(_0x438e24){return _0x438e24['removeAgents'](_0xaa1e8b[_0x43de('0x3a')]['ids'])[_0x43de('0x2c')](function(){if(_[_0x43de('0x85')](_0xaa1e8b[_0x43de('0x3a')][_0x43de('0x66')])){for(var _0x1a893b=0x0;_0x1a893b<_0xaa1e8b[_0x43de('0x3a')][_0x43de('0x66')][_0x43de('0x40')];_0x1a893b+=0x1){socket[_0x43de('0x6e')](_0x43de('0x81'),{'UserId':Number(_0xaa1e8b[_0x43de('0x3a')]['ids'][_0x1a893b]),'WhatsappQueueId':Number(_0xaa1e8b[_0x43de('0x4e')]['id'])});}}else{socket[_0x43de('0x6e')](_0x43de('0x81'),{'UserId':Number(_0xaa1e8b[_0x43de('0x3a')][_0x43de('0x66')]),'WhatsappQueueId':Number(_0xaa1e8b[_0x43de('0x4e')]['id'])});}});}})[_0x43de('0x2c')](respondWithStatusCode(_0x5ac2b6,null))[_0x43de('0x4d')](handleError(_0x5ac2b6,null));};exports['getAgents']=function(_0xe40b8d,_0x4e629b,_0xf9156d){var _0x5524e8={};var _0x1bd65b={};var _0x555340;var _0x134a6e;return db[_0x43de('0x4b')][_0x43de('0x63')]({'where':{'id':_0xe40b8d[_0x43de('0x4e')]['id']}})['then'](handleEntityNotFound(_0x4e629b,null))[_0x43de('0x2c')](function(_0x3abf20){if(_0x3abf20){_0x555340=_0x3abf20;_0x1bd65b[_0x43de('0x39')]=_[_0x43de('0x3b')](db[_0x43de('0x59')][_0x43de('0x36')]);_0x1bd65b['query']=_[_0x43de('0x3b')](_0xe40b8d['query']);_0x1bd65b['filters']=_['intersection'](_0x1bd65b[_0x43de('0x39')],_0x1bd65b[_0x43de('0x3a')]);_0x5524e8[_0x43de('0x3e')]=_[_0x43de('0x3d')](_0x1bd65b[_0x43de('0x39')],qs[_0x43de('0x3f')](_0xe40b8d['query'][_0x43de('0x3f')]));_0x5524e8['attributes']=_0x5524e8[_0x43de('0x3e')]['length']?_0x5524e8[_0x43de('0x3e')]:_0x1bd65b[_0x43de('0x39')];_0x5524e8[_0x43de('0x42')]=qs['sort'](_0xe40b8d[_0x43de('0x3a')][_0x43de('0x43')]);_0x5524e8[_0x43de('0x44')]=qs['filters'](_['pick'](_0xe40b8d[_0x43de('0x3a')],_0x1bd65b['filters']));if(_0xe40b8d[_0x43de('0x3a')]['filter']){_0x5524e8[_0x43de('0x44')]=_[_0x43de('0x46')](_0x5524e8[_0x43de('0x44')],{'$or':_[_0x43de('0x35')](_0x5524e8[_0x43de('0x3e')],function(_0x107a60){var _0x2c8f2e={};_0x2c8f2e[_0x107a60]={'$like':'%'+_0xe40b8d[_0x43de('0x3a')][_0x43de('0x48')]+'%'};return _0x2c8f2e;})});}_0x5524e8=_['merge']({},_0x5524e8,_0xe40b8d[_0x43de('0x49')]);return _0x555340[_0x43de('0x86')](_0x5524e8);}})[_0x43de('0x2c')](function(_0x4fe42a){if(_0x4fe42a){_0x134a6e=_0x4fe42a[_0x43de('0x40')];if(!_0xe40b8d[_0x43de('0x3a')][_0x43de('0x64')](_0x43de('0x41'))){_0x5524e8[_0x43de('0x23')]=qs[_0x43de('0x23')](_0xe40b8d[_0x43de('0x3a')][_0x43de('0x23')]);_0x5524e8[_0x43de('0x24')]=qs[_0x43de('0x24')](_0xe40b8d['query'][_0x43de('0x24')]);}return _0x555340[_0x43de('0x86')](_0x5524e8);}})[_0x43de('0x2c')](function(_0x14eb44){if(_0x14eb44){return _0x14eb44?{'count':_0x134a6e,'rows':_0x14eb44}:null;}})[_0x43de('0x2c')](respondWithResult(_0x4e629b,null))[_0x43de('0x4d')](handleError(_0x4e629b,null));};
\ No newline at end of file
index 3ec85de..2604836 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x076a=['update','remove','emit','hook','../../mysqldb','WhatsappQueue','setMaxListeners','save'];(function(_0x3ac6a3,_0x3dc212){var _0x16951c=function(_0x3e3498){while(--_0x3e3498){_0x3ac6a3['push'](_0x3ac6a3['shift']());}};_0x16951c(++_0x3dc212);}(_0x076a,0xb4));var _0xa076=function(_0x2cf34f,_0x113909){_0x2cf34f=_0x2cf34f-0x0;var _0xe590ce=_0x076a[_0x2cf34f];return _0xe590ce;};'use strict';var EventEmitter=require('events');var WhatsappQueue=require(_0xa076('0x0'))['db'][_0xa076('0x1')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xa076('0x2')](0x0);var events={'afterCreate':_0xa076('0x3'),'afterUpdate':_0xa076('0x4'),'afterDestroy':_0xa076('0x5')};function emitEvent(_0x42cb05){return function(_0x201294,_0x127ebb,_0x149faa){WhatsappQueueEvents['emit'](_0x42cb05+':'+_0x201294['id'],_0x201294);WhatsappQueueEvents[_0xa076('0x6')](_0x42cb05,_0x201294);_0x149faa(null);};}for(var e in events){if(events['hasOwnProperty'](e)){var event=events[e];WhatsappQueue[_0xa076('0x7')](e,emitEvent(event));}}module['exports']=WhatsappQueueEvents;
\ No newline at end of file
+var _0xf27a=['hasOwnProperty','hook','exports','events','../../mysqldb','WhatsappQueue','setMaxListeners','update','remove','emit'];(function(_0x3caf0a,_0x299822){var _0x44050b=function(_0x1dcaca){while(--_0x1dcaca){_0x3caf0a['push'](_0x3caf0a['shift']());}};_0x44050b(++_0x299822);}(_0xf27a,0x111));var _0xaf27=function(_0x532d1c,_0x27e70f){_0x532d1c=_0x532d1c-0x0;var _0x3e89f6=_0xf27a[_0x532d1c];return _0x3e89f6;};'use strict';var EventEmitter=require(_0xaf27('0x0'));var WhatsappQueue=require(_0xaf27('0x1'))['db'][_0xaf27('0x2')];var WhatsappQueueEvents=new EventEmitter();WhatsappQueueEvents[_0xaf27('0x3')](0x0);var events={'afterCreate':'save','afterUpdate':_0xaf27('0x4'),'afterDestroy':_0xaf27('0x5')};function emitEvent(_0x18785f){return function(_0x33cc1d,_0x13ee2a,_0x1fa2ce){WhatsappQueueEvents[_0xaf27('0x6')](_0x18785f+':'+_0x33cc1d['id'],_0x33cc1d);WhatsappQueueEvents[_0xaf27('0x6')](_0x18785f,_0x33cc1d);_0x1fa2ce(null);};}for(var e in events){if(events[_0xaf27('0x7')](e)){var event=events[e];WhatsappQueue[_0xaf27('0x8')](e,emitEvent(event));}}module[_0xaf27('0x9')]=WhatsappQueueEvents;
\ No newline at end of file
index 33af4a9..02b38d6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3c06=['WhatsappQueue','whatsapp_queues','util','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./whatsappQueue.attributes','exports','define'];(function(_0x503834,_0x7438d5){var _0x577742=function(_0x48acff){while(--_0x48acff){_0x503834['push'](_0x503834['shift']());}};_0x577742(++_0x7438d5);}(_0x3c06,0xf9));var _0x63c0=function(_0x39f18f,_0x41841a){_0x39f18f=_0x39f18f-0x0;var _0x8285b7=_0x3c06[_0x39f18f];return _0x8285b7;};'use strict';var _=require('lodash');var util=require(_0x63c0('0x0'));var logger=require(_0x63c0('0x1'))(_0x63c0('0x2'));var moment=require(_0x63c0('0x3'));var BPromise=require(_0x63c0('0x4'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x63c0('0x5'));var rimraf=require(_0x63c0('0x6'));var config=require(_0x63c0('0x7'));var attributes=require(_0x63c0('0x8'));module[_0x63c0('0x9')]=function(_0xde81df,_0x5434d2){return _0xde81df[_0x63c0('0xa')](_0x63c0('0xb'),attributes,{'tableName':_0x63c0('0xc'),'paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
+var _0xfe7c=['lodash','../../config/logger','moment','bluebird','request-promise','path','rimraf','./whatsappQueue.attributes','exports','define'];(function(_0x2584a8,_0x2b9369){var _0x4687d4=function(_0x5c12ae){while(--_0x5c12ae){_0x2584a8['push'](_0x2584a8['shift']());}};_0x4687d4(++_0x2b9369);}(_0xfe7c,0x1c2));var _0xcfe7=function(_0x350d78,_0x57f352){_0x350d78=_0x350d78-0x0;var _0x25385a=_0xfe7c[_0x350d78];return _0x25385a;};'use strict';var _=require(_0xcfe7('0x0'));var util=require('util');var logger=require(_0xcfe7('0x1'))('api');var moment=require(_0xcfe7('0x2'));var BPromise=require(_0xcfe7('0x3'));var rp=require(_0xcfe7('0x4'));var fs=require('fs');var path=require(_0xcfe7('0x5'));var rimraf=require(_0xcfe7('0x6'));var config=require('../../config/environment');var attributes=require(_0xcfe7('0x7'));module[_0xcfe7('0x8')]=function(_0x2dae35,_0x512d5d){return _0x2dae35[_0xcfe7('0x9')]('WhatsappQueue',attributes,{'tableName':'whatsapp_queues','paranoid':![],'indexes':[],'timestamps':!![]});};
\ No newline at end of file
index 2d1a81c..cd99ec2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa206=['then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','WhatsappQueue,\x20%s,\x20%s,\x20%s','stringify','error','code','message','result','catch','GetWhatsappQueue','WhatsappQueue','options','raw','where','attributes','limit','include','map','model','debug','ShowWhatsappQueue','find','lodash','util','moment','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','../../config/logger','rpc','../../config/environment','jayson/promise','client','http','redis','defaults','./whatsappQueue.socket','register','request'];(function(_0x53955c,_0x1400fd){var _0x591b50=function(_0x4af6be){while(--_0x4af6be){_0x53955c['push'](_0x53955c['shift']());}};_0x591b50(++_0x1400fd);}(_0xa206,0x1f1));var _0x6a20=function(_0x1a9b87,_0x4b9987){_0x1a9b87=_0x1a9b87-0x0;var _0x3e5a50=_0xa206[_0x1a9b87];return _0x3e5a50;};'use strict';var _=require(_0x6a20('0x0'));var util=require(_0x6a20('0x1'));var moment=require(_0x6a20('0x2'));var BPromise=require(_0x6a20('0x3'));var rs=require(_0x6a20('0x4'));var fs=require('fs');var Redis=require(_0x6a20('0x5'));var db=require(_0x6a20('0x6'))['db'];var utils=require(_0x6a20('0x7'));var logger=require(_0x6a20('0x8'))(_0x6a20('0x9'));var config=require(_0x6a20('0xa'));var jayson=require(_0x6a20('0xb'));var client=jayson[_0x6a20('0xc')][_0x6a20('0xd')]({'port':0x232a});config[_0x6a20('0xe')]=_[_0x6a20('0xf')](config[_0x6a20('0xe')],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x6a20('0xe')]));require(_0x6a20('0x10'))[_0x6a20('0x11')](socket);function respondWithRpcPromise(_0x5c0a86,_0x565336,_0x2fb3de){return new BPromise(function(_0x462d01,_0x113228){return client[_0x6a20('0x12')](_0x5c0a86,_0x2fb3de)[_0x6a20('0x13')](function(_0x5e2448){logger[_0x6a20('0x14')](_0x6a20('0x15'),_0x565336,_0x6a20('0x16'));logger['debug'](_0x6a20('0x17'),_0x565336,_0x6a20('0x16'),JSON[_0x6a20('0x18')](_0x5e2448));if(_0x5e2448[_0x6a20('0x19')]){if(_0x5e2448['error'][_0x6a20('0x1a')]===0x1f4){logger['error'](_0x6a20('0x15'),_0x565336,_0x5e2448[_0x6a20('0x19')][_0x6a20('0x1b')]);return _0x113228(_0x5e2448['error'][_0x6a20('0x1b')]);}logger[_0x6a20('0x19')](_0x6a20('0x15'),_0x565336,_0x5e2448[_0x6a20('0x19')][_0x6a20('0x1b')]);return _0x462d01(_0x5e2448[_0x6a20('0x19')][_0x6a20('0x1b')]);}else{logger['info'](_0x6a20('0x15'),_0x565336,'request\x20sent');_0x462d01(_0x5e2448[_0x6a20('0x1c')][_0x6a20('0x1b')]);}})[_0x6a20('0x1d')](function(_0x340f82){logger[_0x6a20('0x19')]('WhatsappQueue,\x20%s,\x20%s',_0x565336,_0x340f82);_0x113228(_0x340f82);});});}exports[_0x6a20('0x1e')]=function(_0x11aafc){var _0x27fe72=this;return new Promise(function(_0x2c7842,_0x225f57){return db[_0x6a20('0x1f')]['findAll']({'raw':_0x11aafc[_0x6a20('0x20')]?_0x11aafc['options'][_0x6a20('0x21')]===undefined?!![]:![]:!![],'where':_0x11aafc[_0x6a20('0x20')]?_0x11aafc[_0x6a20('0x20')][_0x6a20('0x22')]||null:null,'attributes':_0x11aafc[_0x6a20('0x20')]?_0x11aafc[_0x6a20('0x20')][_0x6a20('0x23')]||null:null,'limit':_0x11aafc['options']?_0x11aafc[_0x6a20('0x20')][_0x6a20('0x24')]||null:null,'include':_0x11aafc[_0x6a20('0x20')]?_0x11aafc[_0x6a20('0x20')][_0x6a20('0x25')]?_['map'](_0x11aafc[_0x6a20('0x20')][_0x6a20('0x25')],function(_0x2cb6a3){return{'model':db[_0x2cb6a3['model']],'as':_0x2cb6a3['as'],'attributes':_0x2cb6a3[_0x6a20('0x23')],'include':_0x2cb6a3[_0x6a20('0x25')]?_[_0x6a20('0x26')](_0x2cb6a3['include'],function(_0x27eea0){return{'model':db[_0x27eea0[_0x6a20('0x27')]],'as':_0x27eea0['as'],'attributes':_0x27eea0[_0x6a20('0x23')],'include':_0x27eea0['include']?_[_0x6a20('0x26')](_0x27eea0[_0x6a20('0x25')],function(_0x2e1f31){return{'model':db[_0x2e1f31[_0x6a20('0x27')]],'as':_0x2e1f31['as'],'attributes':_0x2e1f31[_0x6a20('0x23')]};}):[]};}):[]};}):[]:[]})[_0x6a20('0x13')](function(_0x1561c0){logger[_0x6a20('0x14')](_0x6a20('0x1e'),_0x11aafc);logger[_0x6a20('0x28')](_0x6a20('0x1e'),_0x11aafc,JSON[_0x6a20('0x18')](_0x1561c0));_0x2c7842(_0x1561c0);})[_0x6a20('0x1d')](function(_0x48a565){logger['error'](_0x6a20('0x1e'),_0x48a565[_0x6a20('0x1b')],_0x11aafc);_0x225f57(_0x27fe72['error'](0x1f4,_0x48a565[_0x6a20('0x1b')]));});});};exports[_0x6a20('0x29')]=function(_0x299ec7){var _0x4e53c5=this;return new Promise(function(_0x348bcf,_0x33959e){return db[_0x6a20('0x1f')][_0x6a20('0x2a')]({'raw':_0x299ec7[_0x6a20('0x20')]?_0x299ec7[_0x6a20('0x20')]['raw']===undefined?!![]:![]:!![],'where':_0x299ec7[_0x6a20('0x20')]?_0x299ec7[_0x6a20('0x20')][_0x6a20('0x22')]||null:null,'attributes':_0x299ec7['options']?_0x299ec7[_0x6a20('0x20')][_0x6a20('0x23')]||null:null,'include':_0x299ec7[_0x6a20('0x20')]?_0x299ec7['options'][_0x6a20('0x25')]?_[_0x6a20('0x26')](_0x299ec7[_0x6a20('0x20')][_0x6a20('0x25')],function(_0x2a6809){return{'model':db[_0x2a6809[_0x6a20('0x27')]],'as':_0x2a6809['as'],'attributes':_0x2a6809[_0x6a20('0x23')],'include':_0x2a6809[_0x6a20('0x25')]?_[_0x6a20('0x26')](_0x2a6809[_0x6a20('0x25')],function(_0xe9795f){return{'model':db[_0xe9795f[_0x6a20('0x27')]],'as':_0xe9795f['as'],'attributes':_0xe9795f[_0x6a20('0x23')],'include':_0xe9795f[_0x6a20('0x25')]?_['map'](_0xe9795f['include'],function(_0x4b20ab){return{'model':db[_0x4b20ab[_0x6a20('0x27')]],'as':_0x4b20ab['as'],'attributes':_0x4b20ab[_0x6a20('0x23')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x269f9c){logger[_0x6a20('0x14')](_0x6a20('0x29'),_0x299ec7);logger[_0x6a20('0x28')](_0x6a20('0x29'),_0x299ec7,JSON[_0x6a20('0x18')](_0x269f9c));_0x348bcf(_0x269f9c);})['catch'](function(_0xc5fc59){logger[_0x6a20('0x19')](_0x6a20('0x29'),_0xc5fc59[_0x6a20('0x1b')],_0x299ec7);_0x33959e(_0x4e53c5[_0x6a20('0x19')](0x1f4,_0xc5fc59['message']));});});};
\ No newline at end of file
+var _0xe95d=['ShowWhatsappQueue','lodash','util','moment','bluebird','ioredis','../../config/utils','../../config/logger','../../config/environment','jayson/promise','client','http','redis','defaults','socket.io-emitter','./whatsappQueue.socket','register','request','then','info','WhatsappQueue,\x20%s,\x20%s','request\x20sent','debug','stringify','error','code','message','catch','GetWhatsappQueue','WhatsappQueue','findAll','options','where','limit','include','map','model','attributes','find','raw'];(function(_0x578166,_0x22bae5){var _0x9640f=function(_0x3c216a){while(--_0x3c216a){_0x578166['push'](_0x578166['shift']());}};_0x9640f(++_0x22bae5);}(_0xe95d,0x191));var _0xde95=function(_0xbf19d7,_0x58b2bf){_0xbf19d7=_0xbf19d7-0x0;var _0x376e11=_0xe95d[_0xbf19d7];return _0x376e11;};'use strict';var _=require(_0xde95('0x0'));var util=require(_0xde95('0x1'));var moment=require(_0xde95('0x2'));var BPromise=require(_0xde95('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0xde95('0x4'));var db=require('../../mysqldb')['db'];var utils=require(_0xde95('0x5'));var logger=require(_0xde95('0x6'))('rpc');var config=require(_0xde95('0x7'));var jayson=require(_0xde95('0x8'));var client=jayson[_0xde95('0x9')][_0xde95('0xa')]({'port':0x232a});config[_0xde95('0xb')]=_[_0xde95('0xc')](config[_0xde95('0xb')],{'host':'localhost','port':0x18eb});var socket=require(_0xde95('0xd'))(new Redis(config[_0xde95('0xb')]));require(_0xde95('0xe'))[_0xde95('0xf')](socket);function respondWithRpcPromise(_0x96e3ea,_0x5e0aae,_0x5d5c86){return new BPromise(function(_0x4262e2,_0x330f5e){return client[_0xde95('0x10')](_0x96e3ea,_0x5d5c86)[_0xde95('0x11')](function(_0x53369e){logger[_0xde95('0x12')](_0xde95('0x13'),_0x5e0aae,_0xde95('0x14'));logger[_0xde95('0x15')]('WhatsappQueue,\x20%s,\x20%s,\x20%s',_0x5e0aae,_0xde95('0x14'),JSON[_0xde95('0x16')](_0x53369e));if(_0x53369e['error']){if(_0x53369e[_0xde95('0x17')][_0xde95('0x18')]===0x1f4){logger[_0xde95('0x17')](_0xde95('0x13'),_0x5e0aae,_0x53369e[_0xde95('0x17')][_0xde95('0x19')]);return _0x330f5e(_0x53369e['error'][_0xde95('0x19')]);}logger[_0xde95('0x17')](_0xde95('0x13'),_0x5e0aae,_0x53369e[_0xde95('0x17')][_0xde95('0x19')]);return _0x4262e2(_0x53369e[_0xde95('0x17')][_0xde95('0x19')]);}else{logger[_0xde95('0x12')](_0xde95('0x13'),_0x5e0aae,'request\x20sent');_0x4262e2(_0x53369e['result'][_0xde95('0x19')]);}})[_0xde95('0x1a')](function(_0x564dfb){logger['error'](_0xde95('0x13'),_0x5e0aae,_0x564dfb);_0x330f5e(_0x564dfb);});});}exports[_0xde95('0x1b')]=function(_0x1395c2){var _0x3f23b2=this;return new Promise(function(_0x4aab32,_0x2f7a92){return db[_0xde95('0x1c')][_0xde95('0x1d')]({'raw':_0x1395c2[_0xde95('0x1e')]?_0x1395c2[_0xde95('0x1e')]['raw']===undefined?!![]:![]:!![],'where':_0x1395c2['options']?_0x1395c2[_0xde95('0x1e')][_0xde95('0x1f')]||null:null,'attributes':_0x1395c2[_0xde95('0x1e')]?_0x1395c2[_0xde95('0x1e')]['attributes']||null:null,'limit':_0x1395c2[_0xde95('0x1e')]?_0x1395c2['options'][_0xde95('0x20')]||null:null,'include':_0x1395c2['options']?_0x1395c2[_0xde95('0x1e')][_0xde95('0x21')]?_[_0xde95('0x22')](_0x1395c2[_0xde95('0x1e')][_0xde95('0x21')],function(_0x3291e2){return{'model':db[_0x3291e2[_0xde95('0x23')]],'as':_0x3291e2['as'],'attributes':_0x3291e2[_0xde95('0x24')],'include':_0x3291e2[_0xde95('0x21')]?_[_0xde95('0x22')](_0x3291e2[_0xde95('0x21')],function(_0x4ac156){return{'model':db[_0x4ac156[_0xde95('0x23')]],'as':_0x4ac156['as'],'attributes':_0x4ac156[_0xde95('0x24')],'include':_0x4ac156['include']?_[_0xde95('0x22')](_0x4ac156[_0xde95('0x21')],function(_0xe2566a){return{'model':db[_0xe2566a[_0xde95('0x23')]],'as':_0xe2566a['as'],'attributes':_0xe2566a[_0xde95('0x24')]};}):[]};}):[]};}):[]:[]})[_0xde95('0x11')](function(_0x291ca8){logger['info'](_0xde95('0x1b'),_0x1395c2);logger[_0xde95('0x15')](_0xde95('0x1b'),_0x1395c2,JSON[_0xde95('0x16')](_0x291ca8));_0x4aab32(_0x291ca8);})[_0xde95('0x1a')](function(_0x4a33b8){logger[_0xde95('0x17')]('GetWhatsappQueue',_0x4a33b8['message'],_0x1395c2);_0x2f7a92(_0x3f23b2[_0xde95('0x17')](0x1f4,_0x4a33b8[_0xde95('0x19')]));});});};exports['ShowWhatsappQueue']=function(_0x31b6f3){var _0x388816=this;return new Promise(function(_0x5dc330,_0xb533ac){return db[_0xde95('0x1c')][_0xde95('0x25')]({'raw':_0x31b6f3[_0xde95('0x1e')]?_0x31b6f3['options'][_0xde95('0x26')]===undefined?!![]:![]:!![],'where':_0x31b6f3[_0xde95('0x1e')]?_0x31b6f3['options'][_0xde95('0x1f')]||null:null,'attributes':_0x31b6f3['options']?_0x31b6f3[_0xde95('0x1e')][_0xde95('0x24')]||null:null,'include':_0x31b6f3[_0xde95('0x1e')]?_0x31b6f3[_0xde95('0x1e')][_0xde95('0x21')]?_[_0xde95('0x22')](_0x31b6f3['options'][_0xde95('0x21')],function(_0x1cf05a){return{'model':db[_0x1cf05a[_0xde95('0x23')]],'as':_0x1cf05a['as'],'attributes':_0x1cf05a[_0xde95('0x24')],'include':_0x1cf05a[_0xde95('0x21')]?_['map'](_0x1cf05a[_0xde95('0x21')],function(_0xf4a13e){return{'model':db[_0xf4a13e['model']],'as':_0xf4a13e['as'],'attributes':_0xf4a13e[_0xde95('0x24')],'include':_0xf4a13e['include']?_[_0xde95('0x22')](_0xf4a13e[_0xde95('0x21')],function(_0x3c5d4d){return{'model':db[_0x3c5d4d[_0xde95('0x23')]],'as':_0x3c5d4d['as'],'attributes':_0x3c5d4d[_0xde95('0x24')]};}):[]};}):[]};}):[]:[]})['then'](function(_0x5b0cf4){logger[_0xde95('0x12')](_0xde95('0x27'),_0x31b6f3);logger[_0xde95('0x15')](_0xde95('0x27'),_0x31b6f3,JSON[_0xde95('0x16')](_0x5b0cf4));_0x5dc330(_0x5b0cf4);})['catch'](function(_0x5c0f06){logger[_0xde95('0x17')](_0xde95('0x27'),_0x5c0f06[_0xde95('0x19')],_0x31b6f3);_0xb533ac(_0x388816[_0xde95('0x17')](0x1f4,_0x5c0f06[_0xde95('0x19')]));});});};
\ No newline at end of file
index 617f5cd..a3e164b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe4f1=['whatsappQueue:','./whatsappQueue.events','save','remove','removeListener','register','length'];(function(_0x5f3f88,_0x562baf){var _0xd08119=function(_0x42dbf7){while(--_0x42dbf7){_0x5f3f88['push'](_0x5f3f88['shift']());}};_0xd08119(++_0x562baf);}(_0xe4f1,0x174));var _0x1e4f=function(_0xf65c62,_0x412a98){_0xf65c62=_0xf65c62-0x0;var _0x1aee4b=_0xe4f1[_0xf65c62];return _0x1aee4b;};'use strict';var WhatsappQueueEvents=require(_0x1e4f('0x0'));var events=[_0x1e4f('0x1'),_0x1e4f('0x2'),'update'];function createListener(_0x2fe79e,_0x411095){return function(_0xbf4df3){_0x411095['emit'](_0x2fe79e,_0xbf4df3);};}function removeListener(_0x44d93b,_0x3a2628){return function(){WhatsappQueueEvents[_0x1e4f('0x3')](_0x44d93b,_0x3a2628);};}exports[_0x1e4f('0x4')]=function(_0x2f46ed){for(var _0x4db4c3=0x0,_0xd698d1=events[_0x1e4f('0x5')];_0x4db4c3<_0xd698d1;_0x4db4c3++){var _0x34f206=events[_0x4db4c3];var _0x32a99c=createListener(_0x1e4f('0x6')+_0x34f206,_0x2f46ed);WhatsappQueueEvents['on'](_0x34f206,_0x32a99c);}};
\ No newline at end of file
+var _0x84b4=['removeListener','register','length','whatsappQueue:','./whatsappQueue.events','save','update','emit'];(function(_0x19d350,_0x3c843f){var _0x3bfc8d=function(_0xd89003){while(--_0xd89003){_0x19d350['push'](_0x19d350['shift']());}};_0x3bfc8d(++_0x3c843f);}(_0x84b4,0x164));var _0x484b=function(_0x5effa6,_0x3b5c2e){_0x5effa6=_0x5effa6-0x0;var _0xd7022f=_0x84b4[_0x5effa6];return _0xd7022f;};'use strict';var WhatsappQueueEvents=require(_0x484b('0x0'));var events=[_0x484b('0x1'),'remove',_0x484b('0x2')];function createListener(_0x52806c,_0x11e982){return function(_0x1525c7){_0x11e982[_0x484b('0x3')](_0x52806c,_0x1525c7);};}function removeListener(_0x7bdf48,_0x32538e){return function(){WhatsappQueueEvents[_0x484b('0x4')](_0x7bdf48,_0x32538e);};}exports[_0x484b('0x5')]=function(_0x39a5c5){for(var _0x4a3b2e=0x0,_0x2e8c6f=events[_0x484b('0x6')];_0x4a3b2e<_0x2e8c6f;_0x4a3b2e++){var _0xb4c2e0=events[_0x4a3b2e];var _0xb6d8b3=createListener(_0x484b('0x7')+_0xb4c2e0,_0x39a5c5);WhatsappQueueEvents['on'](_0xb4c2e0,_0xb6d8b3);}};
\ No newline at end of file
index 55079b0..5c79517 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x14f6=['delete','/:id','destroy','multer','util','path','connect-timeout','Router','../../components/auth/service','../../components/interaction/service','../../config/environment','get','isAuthenticated','index','/describe','show','post','create','update'];(function(_0x4820b8,_0x3cfc5f){var _0x4b58da=function(_0x1910c7){while(--_0x1910c7){_0x4820b8['push'](_0x4820b8['shift']());}};_0x4b58da(++_0x3cfc5f);}(_0x14f6,0x1b8));var _0x614f=function(_0x451487,_0x519245){_0x451487=_0x451487-0x0;var _0x4b1924=_0x14f6[_0x451487];return _0x4b1924;};'use strict';var multer=require(_0x614f('0x0'));var util=require(_0x614f('0x1'));var path=require(_0x614f('0x2'));var timeout=require(_0x614f('0x3'));var express=require('express');var router=express[_0x614f('0x4')]();var fs_extra=require('fs-extra');var auth=require(_0x614f('0x5'));var interaction=require(_0x614f('0x6'));var config=require(_0x614f('0x7'));var controller=require('./whatsappQueueReport.controller');router[_0x614f('0x8')]('/',auth[_0x614f('0x9')](),controller[_0x614f('0xa')]);router[_0x614f('0x8')](_0x614f('0xb'),auth['isAuthenticated'](),controller['describe']);router[_0x614f('0x8')]('/:id',auth[_0x614f('0x9')](),controller[_0x614f('0xc')]);router[_0x614f('0xd')]('/',auth[_0x614f('0x9')](),controller[_0x614f('0xe')]);router['put']('/:id',auth[_0x614f('0x9')](),controller[_0x614f('0xf')]);router[_0x614f('0x10')](_0x614f('0x11'),auth[_0x614f('0x9')](),controller[_0x614f('0x12')]);module['exports']=router;
\ No newline at end of file
+var _0x6019=['show','create','update','delete','multer','path','connect-timeout','express','fs-extra','../../components/auth/service','../../components/interaction/service','../../config/environment','./whatsappQueueReport.controller','get','isAuthenticated','/describe','/:id'];(function(_0x1de896,_0x3ae849){var _0x194005=function(_0x3ec7e1){while(--_0x3ec7e1){_0x1de896['push'](_0x1de896['shift']());}};_0x194005(++_0x3ae849);}(_0x6019,0x9d));var _0x9601=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x6019[_0x501510];return _0x1e6ee5;};'use strict';var multer=require(_0x9601('0x0'));var util=require('util');var path=require(_0x9601('0x1'));var timeout=require(_0x9601('0x2'));var express=require(_0x9601('0x3'));var router=express['Router']();var fs_extra=require(_0x9601('0x4'));var auth=require(_0x9601('0x5'));var interaction=require(_0x9601('0x6'));var config=require(_0x9601('0x7'));var controller=require(_0x9601('0x8'));router[_0x9601('0x9')]('/',auth[_0x9601('0xa')](),controller['index']);router['get'](_0x9601('0xb'),auth[_0x9601('0xa')](),controller['describe']);router[_0x9601('0x9')](_0x9601('0xc'),auth[_0x9601('0xa')](),controller[_0x9601('0xd')]);router['post']('/',auth['isAuthenticated'](),controller[_0x9601('0xe')]);router['put']('/:id',auth[_0x9601('0xa')](),controller[_0x9601('0xf')]);router[_0x9601('0x10')](_0x9601('0xc'),auth[_0x9601('0xa')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
index a93b0e0..f116a77 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['STRING','DATE','sequelize','exports'];(function(_0x5baccc,_0x1389dc){var _0x418eab=function(_0x4b47ec){while(--_0x4b47ec){_0x5baccc['push'](_0x5baccc['shift']());}};_0x418eab(++_0x1389dc);}(_0x7a54,0x106));var _0x47a5=function(_0x230cc0,_0x5e2d73){_0x230cc0=_0x230cc0-0x0;var _0x52dc09=_0x7a54[_0x230cc0];return _0x52dc09;};'use strict';var Sequelize=require(_0x47a5('0x0'));module[_0x47a5('0x1')]={'uniqueid':{'type':Sequelize[_0x47a5('0x2')],'allowNull':![]},'from':{'type':Sequelize['STRING']},'joinAt':{'type':Sequelize[_0x47a5('0x3')]},'leaveAt':{'type':Sequelize[_0x47a5('0x3')]},'acceptAt':{'type':Sequelize['DATE']},'exitAt':{'type':Sequelize[_0x47a5('0x3')]},'reason':{'type':Sequelize[_0x47a5('0x2')]}};
\ No newline at end of file
+var _0x9957=['exports','STRING','DATE','sequelize'];(function(_0x4e1095,_0x4346a6){var _0x32bf66=function(_0x3e545b){while(--_0x3e545b){_0x4e1095['push'](_0x4e1095['shift']());}};_0x32bf66(++_0x4346a6);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'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 91306bc..1f751b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cf8=['limit','order','sort','where','pick','VIRTUAL','filter','options','includeAll','findAll','rows','show','merge','find','create','body','params','catch','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','lodash','crypto','jsforce','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','api','../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','count','set','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','send','map','WhatsappQueueReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','nolimit'];(function(_0x8969c2,_0xc524b7){var _0x519f23=function(_0x3d14f6){while(--_0x3d14f6){_0x8969c2['push'](_0x8969c2['shift']());}};_0x519f23(++_0xc524b7);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x2be240,_0x1e119d){_0x2be240=_0x2be240-0x0;var _0x123543=_0x4cf8[_0x2be240];return _0x123543;};'use strict';var emlformat=require(_0x84cf('0x0'));var rimraf=require(_0x84cf('0x1'));var zipdir=require(_0x84cf('0x2'));var jsonpatch=require(_0x84cf('0x3'));var rp=require(_0x84cf('0x4'));var moment=require(_0x84cf('0x5'));var BPromise=require(_0x84cf('0x6'));var Mustache=require(_0x84cf('0x7'));var util=require(_0x84cf('0x8'));var path=require(_0x84cf('0x9'));var sox=require(_0x84cf('0xa'));var csv=require(_0x84cf('0xb'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x84cf('0xc'));var squel=require('squel');var crypto=require(_0x84cf('0xd'));var jsforce=require(_0x84cf('0xe'));var deskjs=require('desk.js');var toCsv=require(_0x84cf('0xb'));var querystring=require(_0x84cf('0xf'));var Papa=require('papaparse');var Redis=require(_0x84cf('0x10'));var authService=require(_0x84cf('0x11'));var qs=require(_0x84cf('0x12'));var as=require(_0x84cf('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x84cf('0x14'))(_0x84cf('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x84cf('0x16'));var db=require(_0x84cf('0x17'))['db'];function respondWithStatusCode(_0x35f852,_0x33f83e){_0x33f83e=_0x33f83e||0xcc;return function(_0x172d04){if(_0x172d04){return _0x35f852[_0x84cf('0x18')](_0x33f83e);}return _0x35f852[_0x84cf('0x19')](_0x33f83e)[_0x84cf('0x1a')]();};}function respondWithResult(_0xced48,_0x250a19){_0x250a19=_0x250a19||0xc8;return function(_0x2fc41f){if(_0x2fc41f){return _0xced48[_0x84cf('0x19')](_0x250a19)[_0x84cf('0x1b')](_0x2fc41f);}};}function respondWithFilteredResult(_0x20e79c,_0x27261b){return function(_0x167c3e){if(_0x167c3e){var _0x464e70=typeof _0x27261b[_0x84cf('0x1c')]===_0x84cf('0x1d')&&typeof _0x27261b['limit']===_0x84cf('0x1d');var _0x5d6a93=_0x167c3e[_0x84cf('0x1e')];var _0x1abe2d=_0x464e70?0x0:_0x27261b[_0x84cf('0x1c')];var _0x13ba16=_0x464e70?_0x167c3e[_0x84cf('0x1e')]:_0x27261b['offset']+_0x27261b['limit'];var _0x42d6d4;if(_0x13ba16>=_0x5d6a93){_0x13ba16=_0x5d6a93;_0x42d6d4=0xc8;}else{_0x42d6d4=0xce;}_0x20e79c[_0x84cf('0x19')](_0x42d6d4);return _0x20e79c[_0x84cf('0x1f')](_0x84cf('0x20'),_0x1abe2d+'-'+_0x13ba16+'/'+_0x5d6a93)[_0x84cf('0x1b')](_0x167c3e);}return null;};}function patchUpdates(_0x5dda3f){return function(_0x39a37b){try{jsonpatch[_0x84cf('0x21')](_0x39a37b,_0x5dda3f,!![]);}catch(_0x3ca1be){return BPromise[_0x84cf('0x22')](_0x3ca1be);}return _0x39a37b[_0x84cf('0x23')]();};}function saveUpdates(_0x54405a,_0x42fa45){return function(_0x160f86){if(_0x160f86){return _0x160f86[_0x84cf('0x24')](_0x54405a)[_0x84cf('0x25')](function(_0x3e5e94){return _0x3e5e94;});}return null;};}function removeEntity(_0x29e9e1,_0x7feb4){return function(_0x4c9d1c){if(_0x4c9d1c){return _0x4c9d1c[_0x84cf('0x26')]()[_0x84cf('0x25')](function(){_0x29e9e1[_0x84cf('0x19')](0xcc)[_0x84cf('0x1a')]();});}};}function handleEntityNotFound(_0x1d220a,_0x44d4bf){return function(_0x3c7eda){if(!_0x3c7eda){_0x1d220a[_0x84cf('0x18')](0x194);}return _0x3c7eda;};}function handleError(_0x401aa4,_0x6797c0){_0x6797c0=_0x6797c0||0x1f4;return function(_0x5179c1){logger[_0x84cf('0x27')](_0x5179c1[_0x84cf('0x28')]);if(_0x5179c1[_0x84cf('0x29')]){delete _0x5179c1[_0x84cf('0x29')];}_0x401aa4['status'](_0x6797c0)[_0x84cf('0x2a')](_0x5179c1);};}exports['index']=function(_0x29455e,_0x4092fd){var _0x43b41b={},_0xc15298={},_0x51adcf={'count':0x0,'rows':[]};var _0x20de4b=_[_0x84cf('0x2b')](db[_0x84cf('0x2c')][_0x84cf('0x2d')],function(_0xb4fc5a){return{'name':_0xb4fc5a[_0x84cf('0x2e')],'type':_0xb4fc5a[_0x84cf('0x2f')][_0x84cf('0x30')]};});_0xc15298[_0x84cf('0x31')]=_['map'](_0x20de4b,'name');_0xc15298[_0x84cf('0x32')]=_[_0x84cf('0x33')](_0x29455e[_0x84cf('0x32')]);_0xc15298[_0x84cf('0x34')]=_[_0x84cf('0x35')](_0xc15298[_0x84cf('0x31')],_0xc15298[_0x84cf('0x32')]);_0x43b41b[_0x84cf('0x36')]=_['intersection'](_0xc15298[_0x84cf('0x31')],qs[_0x84cf('0x37')](_0x29455e['query'][_0x84cf('0x37')]));_0x43b41b['attributes']=_0x43b41b[_0x84cf('0x36')][_0x84cf('0x38')]?_0x43b41b[_0x84cf('0x36')]:_0xc15298[_0x84cf('0x31')];if(!_0x29455e[_0x84cf('0x32')]['hasOwnProperty'](_0x84cf('0x39'))){_0x43b41b['limit']=qs['limit'](_0x29455e[_0x84cf('0x32')][_0x84cf('0x3a')]);_0x43b41b['offset']=qs[_0x84cf('0x1c')](_0x29455e[_0x84cf('0x32')][_0x84cf('0x1c')]);}_0x43b41b[_0x84cf('0x3b')]=qs[_0x84cf('0x3c')](_0x29455e[_0x84cf('0x32')]['sort']);_0x43b41b[_0x84cf('0x3d')]=qs[_0x84cf('0x34')](_[_0x84cf('0x3e')](_0x29455e[_0x84cf('0x32')],_0xc15298[_0x84cf('0x34')]),_0x20de4b);if(_0x29455e[_0x84cf('0x32')]['filter']){_0x43b41b[_0x84cf('0x3d')]=_['merge'](_0x43b41b[_0x84cf('0x3d')],{'$or':_[_0x84cf('0x2b')](_0x20de4b,function(_0x3fa39a){if(_0x3fa39a[_0x84cf('0x2f')]!==_0x84cf('0x3f')){var _0x3897b0={};_0x3897b0[_0x3fa39a[_0x84cf('0x29')]]={'$like':'%'+_0x29455e[_0x84cf('0x32')][_0x84cf('0x40')]+'%'};return _0x3897b0;}})});}_0x43b41b=_['merge']({},_0x43b41b,_0x29455e[_0x84cf('0x41')]);var _0x516928={'where':_0x43b41b[_0x84cf('0x3d')]};return db[_0x84cf('0x2c')]['count'](_0x516928)[_0x84cf('0x25')](function(_0x531410){_0x51adcf[_0x84cf('0x1e')]=_0x531410;if(_0x29455e['query'][_0x84cf('0x42')]){_0x43b41b['include']=[{'all':!![]}];}return db[_0x84cf('0x2c')][_0x84cf('0x43')](_0x43b41b);})['then'](function(_0x847ce9){_0x51adcf[_0x84cf('0x44')]=_0x847ce9;return _0x51adcf;})[_0x84cf('0x25')](respondWithFilteredResult(_0x4092fd,_0x43b41b))['catch'](handleError(_0x4092fd,null));};exports[_0x84cf('0x45')]=function(_0x5f1b8e,_0x1c84e0){var _0x58b539={'raw':!![],'where':{'id':_0x5f1b8e['params']['id']}},_0x56b0e5={};_0x56b0e5[_0x84cf('0x31')]=_[_0x84cf('0x33')](db['WhatsappQueueReport'][_0x84cf('0x2d')]);_0x56b0e5['query']=_[_0x84cf('0x33')](_0x5f1b8e[_0x84cf('0x32')]);_0x56b0e5['filters']=_[_0x84cf('0x35')](_0x56b0e5['model'],_0x56b0e5[_0x84cf('0x32')]);_0x58b539['attributes']=_['intersection'](_0x56b0e5['model'],qs['fields'](_0x5f1b8e['query']['fields']));_0x58b539['attributes']=_0x58b539[_0x84cf('0x36')][_0x84cf('0x38')]?_0x58b539[_0x84cf('0x36')]:_0x56b0e5[_0x84cf('0x31')];if(_0x5f1b8e['query'][_0x84cf('0x42')]){_0x58b539['include']=[{'all':!![]}];}_0x58b539=_[_0x84cf('0x46')]({},_0x58b539,_0x5f1b8e[_0x84cf('0x41')]);return db[_0x84cf('0x2c')][_0x84cf('0x47')](_0x58b539)[_0x84cf('0x25')](handleEntityNotFound(_0x1c84e0,null))[_0x84cf('0x25')](respondWithResult(_0x1c84e0,null))['catch'](handleError(_0x1c84e0,null));};exports[_0x84cf('0x48')]=function(_0x2732bf,_0x4a4cf7){return db[_0x84cf('0x2c')][_0x84cf('0x48')](_0x2732bf[_0x84cf('0x49')],{})['then'](respondWithResult(_0x4a4cf7,0xc9))['catch'](handleError(_0x4a4cf7,null));};exports['update']=function(_0x1cf3f6,_0x104421){if(_0x1cf3f6[_0x84cf('0x49')]['id']){delete _0x1cf3f6[_0x84cf('0x49')]['id'];}return db[_0x84cf('0x2c')][_0x84cf('0x47')]({'where':{'id':_0x1cf3f6['params']['id']}})[_0x84cf('0x25')](handleEntityNotFound(_0x104421,null))['then'](saveUpdates(_0x1cf3f6[_0x84cf('0x49')],null))['then'](respondWithResult(_0x104421,null))['catch'](handleError(_0x104421,null));};exports[_0x84cf('0x26')]=function(_0xb1c3a8,_0x426df1){return db['WhatsappQueueReport']['find']({'where':{'id':_0xb1c3a8[_0x84cf('0x4a')]['id']}})[_0x84cf('0x25')](handleEntityNotFound(_0x426df1,null))[_0x84cf('0x25')](removeEntity(_0x426df1,null))[_0x84cf('0x4b')](handleError(_0x426df1,null));};exports[_0x84cf('0x4c')]=function(_0x4c2025,_0xcfe28f){return db[_0x84cf('0x2c')]['describe']()[_0x84cf('0x25')](respondWithResult(_0xcfe28f,null))['catch'](handleError(_0xcfe28f,null));};
\ No newline at end of file
+var _0xbaf0=['../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','sendStatus','end','status','json','offset','undefined','limit','count','Content-Range','apply','reject','save','update','error','stack','name','send','index','map','WhatsappQueueReport','rawAttributes','fieldName','type','key','query','keys','filters','intersection','model','attributes','fields','length','nolimit','order','sort','where','pick','filter','VIRTUAL','merge','options','then','includeAll','include','findAll','rows','show','params','find','catch','create','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch'];(function(_0x3f0781,_0x327714){var _0x220035=function(_0x2981c3){while(--_0x2981c3){_0x3f0781['push'](_0x3f0781['shift']());}};_0x220035(++_0x327714);}(_0xbaf0,0x12a));var _0x0baf=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xbaf0[_0x1facfa];return _0x9ec701;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x0baf('0x0'));var zipdir=require(_0x0baf('0x1'));var jsonpatch=require(_0x0baf('0x2'));var rp=require(_0x0baf('0x3'));var moment=require(_0x0baf('0x4'));var BPromise=require(_0x0baf('0x5'));var Mustache=require('mustache');var util=require(_0x0baf('0x6'));var path=require(_0x0baf('0x7'));var sox=require(_0x0baf('0x8'));var csv=require(_0x0baf('0x9'));var ejs=require(_0x0baf('0xa'));var fs=require('fs');var fs_extra=require(_0x0baf('0xb'));var _=require(_0x0baf('0xc'));var squel=require(_0x0baf('0xd'));var crypto=require(_0x0baf('0xe'));var jsforce=require('jsforce');var deskjs=require(_0x0baf('0xf'));var toCsv=require('to-csv');var querystring=require(_0x0baf('0x10'));var Papa=require(_0x0baf('0x11'));var Redis=require(_0x0baf('0x12'));var authService=require(_0x0baf('0x13'));var qs=require(_0x0baf('0x14'));var as=require(_0x0baf('0x15'));var hardwareService=require(_0x0baf('0x16'));var logger=require(_0x0baf('0x17'))(_0x0baf('0x18'));var utils=require(_0x0baf('0x19'));var config=require(_0x0baf('0x1a'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x465dd7,_0xe4378c){_0xe4378c=_0xe4378c||0xcc;return function(_0x5db689){if(_0x5db689){return _0x465dd7[_0x0baf('0x1b')](_0xe4378c);}return _0x465dd7['status'](_0xe4378c)[_0x0baf('0x1c')]();};}function respondWithResult(_0x49e44b,_0x1c76a8){_0x1c76a8=_0x1c76a8||0xc8;return function(_0x1f50c3){if(_0x1f50c3){return _0x49e44b[_0x0baf('0x1d')](_0x1c76a8)[_0x0baf('0x1e')](_0x1f50c3);}};}function respondWithFilteredResult(_0xb8339e,_0x469599){return function(_0x4f80a8){if(_0x4f80a8){var _0x4cd79d=typeof _0x469599[_0x0baf('0x1f')]===_0x0baf('0x20')&&typeof _0x469599[_0x0baf('0x21')]===_0x0baf('0x20');var _0x2cf7da=_0x4f80a8[_0x0baf('0x22')];var _0x53c338=_0x4cd79d?0x0:_0x469599[_0x0baf('0x1f')];var _0xfbecec=_0x4cd79d?_0x4f80a8[_0x0baf('0x22')]:_0x469599[_0x0baf('0x1f')]+_0x469599[_0x0baf('0x21')];var _0x42b7f2;if(_0xfbecec>=_0x2cf7da){_0xfbecec=_0x2cf7da;_0x42b7f2=0xc8;}else{_0x42b7f2=0xce;}_0xb8339e['status'](_0x42b7f2);return _0xb8339e['set'](_0x0baf('0x23'),_0x53c338+'-'+_0xfbecec+'/'+_0x2cf7da)[_0x0baf('0x1e')](_0x4f80a8);}return null;};}function patchUpdates(_0x32e839){return function(_0x1848e8){try{jsonpatch[_0x0baf('0x24')](_0x1848e8,_0x32e839,!![]);}catch(_0x3e3e20){return BPromise[_0x0baf('0x25')](_0x3e3e20);}return _0x1848e8[_0x0baf('0x26')]();};}function saveUpdates(_0x2c42e2,_0x15a2c3){return function(_0x54f2fa){if(_0x54f2fa){return _0x54f2fa[_0x0baf('0x27')](_0x2c42e2)['then'](function(_0xf6c158){return _0xf6c158;});}return null;};}function removeEntity(_0x5dbf00,_0x4de74c){return function(_0x2ef0aa){if(_0x2ef0aa){return _0x2ef0aa['destroy']()['then'](function(){_0x5dbf00[_0x0baf('0x1d')](0xcc)[_0x0baf('0x1c')]();});}};}function handleEntityNotFound(_0x34e264,_0x19d9fd){return function(_0x3a1ba1){if(!_0x3a1ba1){_0x34e264['sendStatus'](0x194);}return _0x3a1ba1;};}function handleError(_0x448617,_0x4681c5){_0x4681c5=_0x4681c5||0x1f4;return function(_0x1ca35a){logger[_0x0baf('0x28')](_0x1ca35a[_0x0baf('0x29')]);if(_0x1ca35a[_0x0baf('0x2a')]){delete _0x1ca35a[_0x0baf('0x2a')];}_0x448617['status'](_0x4681c5)[_0x0baf('0x2b')](_0x1ca35a);};}exports[_0x0baf('0x2c')]=function(_0xcaf13d,_0x265915){var _0x55c715={},_0x29dbdf={},_0x34a58a={'count':0x0,'rows':[]};var _0x5d9d7f=_[_0x0baf('0x2d')](db[_0x0baf('0x2e')][_0x0baf('0x2f')],function(_0xb4dbb1){return{'name':_0xb4dbb1[_0x0baf('0x30')],'type':_0xb4dbb1[_0x0baf('0x31')][_0x0baf('0x32')]};});_0x29dbdf['model']=_[_0x0baf('0x2d')](_0x5d9d7f,_0x0baf('0x2a'));_0x29dbdf[_0x0baf('0x33')]=_[_0x0baf('0x34')](_0xcaf13d[_0x0baf('0x33')]);_0x29dbdf[_0x0baf('0x35')]=_[_0x0baf('0x36')](_0x29dbdf[_0x0baf('0x37')],_0x29dbdf[_0x0baf('0x33')]);_0x55c715[_0x0baf('0x38')]=_[_0x0baf('0x36')](_0x29dbdf[_0x0baf('0x37')],qs[_0x0baf('0x39')](_0xcaf13d[_0x0baf('0x33')]['fields']));_0x55c715[_0x0baf('0x38')]=_0x55c715['attributes'][_0x0baf('0x3a')]?_0x55c715[_0x0baf('0x38')]:_0x29dbdf[_0x0baf('0x37')];if(!_0xcaf13d[_0x0baf('0x33')]['hasOwnProperty'](_0x0baf('0x3b'))){_0x55c715[_0x0baf('0x21')]=qs['limit'](_0xcaf13d[_0x0baf('0x33')][_0x0baf('0x21')]);_0x55c715[_0x0baf('0x1f')]=qs[_0x0baf('0x1f')](_0xcaf13d[_0x0baf('0x33')][_0x0baf('0x1f')]);}_0x55c715[_0x0baf('0x3c')]=qs[_0x0baf('0x3d')](_0xcaf13d['query'][_0x0baf('0x3d')]);_0x55c715[_0x0baf('0x3e')]=qs['filters'](_[_0x0baf('0x3f')](_0xcaf13d['query'],_0x29dbdf['filters']),_0x5d9d7f);if(_0xcaf13d[_0x0baf('0x33')][_0x0baf('0x40')]){_0x55c715['where']=_['merge'](_0x55c715[_0x0baf('0x3e')],{'$or':_[_0x0baf('0x2d')](_0x5d9d7f,function(_0x3412bc){if(_0x3412bc[_0x0baf('0x31')]!==_0x0baf('0x41')){var _0x2028ad={};_0x2028ad[_0x3412bc[_0x0baf('0x2a')]]={'$like':'%'+_0xcaf13d[_0x0baf('0x33')][_0x0baf('0x40')]+'%'};return _0x2028ad;}})});}_0x55c715=_[_0x0baf('0x42')]({},_0x55c715,_0xcaf13d[_0x0baf('0x43')]);var _0x148540={'where':_0x55c715[_0x0baf('0x3e')]};return db[_0x0baf('0x2e')]['count'](_0x148540)[_0x0baf('0x44')](function(_0x1435d5){_0x34a58a['count']=_0x1435d5;if(_0xcaf13d[_0x0baf('0x33')][_0x0baf('0x45')]){_0x55c715[_0x0baf('0x46')]=[{'all':!![]}];}return db[_0x0baf('0x2e')][_0x0baf('0x47')](_0x55c715);})[_0x0baf('0x44')](function(_0x57b581){_0x34a58a[_0x0baf('0x48')]=_0x57b581;return _0x34a58a;})[_0x0baf('0x44')](respondWithFilteredResult(_0x265915,_0x55c715))['catch'](handleError(_0x265915,null));};exports[_0x0baf('0x49')]=function(_0x412e6f,_0x45c6aa){var _0x57903e={'raw':!![],'where':{'id':_0x412e6f[_0x0baf('0x4a')]['id']}},_0x504031={};_0x504031[_0x0baf('0x37')]=_[_0x0baf('0x34')](db[_0x0baf('0x2e')][_0x0baf('0x2f')]);_0x504031[_0x0baf('0x33')]=_[_0x0baf('0x34')](_0x412e6f[_0x0baf('0x33')]);_0x504031[_0x0baf('0x35')]=_[_0x0baf('0x36')](_0x504031['model'],_0x504031[_0x0baf('0x33')]);_0x57903e[_0x0baf('0x38')]=_[_0x0baf('0x36')](_0x504031[_0x0baf('0x37')],qs[_0x0baf('0x39')](_0x412e6f['query'][_0x0baf('0x39')]));_0x57903e[_0x0baf('0x38')]=_0x57903e[_0x0baf('0x38')][_0x0baf('0x3a')]?_0x57903e[_0x0baf('0x38')]:_0x504031['model'];if(_0x412e6f[_0x0baf('0x33')][_0x0baf('0x45')]){_0x57903e[_0x0baf('0x46')]=[{'all':!![]}];}_0x57903e=_[_0x0baf('0x42')]({},_0x57903e,_0x412e6f[_0x0baf('0x43')]);return db[_0x0baf('0x2e')][_0x0baf('0x4b')](_0x57903e)['then'](handleEntityNotFound(_0x45c6aa,null))[_0x0baf('0x44')](respondWithResult(_0x45c6aa,null))[_0x0baf('0x4c')](handleError(_0x45c6aa,null));};exports[_0x0baf('0x4d')]=function(_0x57008f,_0x3c9de3){return db[_0x0baf('0x2e')][_0x0baf('0x4d')](_0x57008f[_0x0baf('0x4e')],{})[_0x0baf('0x44')](respondWithResult(_0x3c9de3,0xc9))[_0x0baf('0x4c')](handleError(_0x3c9de3,null));};exports[_0x0baf('0x27')]=function(_0x5a54bb,_0x22c451){if(_0x5a54bb[_0x0baf('0x4e')]['id']){delete _0x5a54bb[_0x0baf('0x4e')]['id'];}return db[_0x0baf('0x2e')][_0x0baf('0x4b')]({'where':{'id':_0x5a54bb[_0x0baf('0x4a')]['id']}})[_0x0baf('0x44')](handleEntityNotFound(_0x22c451,null))[_0x0baf('0x44')](saveUpdates(_0x5a54bb[_0x0baf('0x4e')],null))[_0x0baf('0x44')](respondWithResult(_0x22c451,null))[_0x0baf('0x4c')](handleError(_0x22c451,null));};exports['destroy']=function(_0x528ff6,_0x354329){return db[_0x0baf('0x2e')][_0x0baf('0x4b')]({'where':{'id':_0x528ff6[_0x0baf('0x4a')]['id']}})[_0x0baf('0x44')](handleEntityNotFound(_0x354329,null))[_0x0baf('0x44')](removeEntity(_0x354329,null))[_0x0baf('0x4c')](handleError(_0x354329,null));};exports['describe']=function(_0x3fe534,_0x2ef4c1){return db[_0x0baf('0x2e')][_0x0baf('0x4f')]()[_0x0baf('0x44')](respondWithResult(_0x2ef4c1,null))[_0x0baf('0x4c')](handleError(_0x2ef4c1,null));};
\ No newline at end of file
index 1cbc636..d595076 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd964=['uniqueid','../../config/logger','api','moment','bluebird','path','rimraf','../../config/environment','./whatsappQueueReport.attributes','exports','define','WhatsappQueueReport','report_whatsapp_queue'];(function(_0x358049,_0x56e00a){var _0x2426d1=function(_0x161aa2){while(--_0x161aa2){_0x358049['push'](_0x358049['shift']());}};_0x2426d1(++_0x56e00a);}(_0xd964,0x90));var _0x4d96=function(_0x2bcd55,_0x2dd6d2){_0x2bcd55=_0x2bcd55-0x0;var _0x33927b=_0xd964[_0x2bcd55];return _0x33927b;};'use strict';var _=require('lodash');var util=require('util');var logger=require(_0x4d96('0x0'))(_0x4d96('0x1'));var moment=require(_0x4d96('0x2'));var BPromise=require(_0x4d96('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x4d96('0x4'));var rimraf=require(_0x4d96('0x5'));var config=require(_0x4d96('0x6'));var attributes=require(_0x4d96('0x7'));module[_0x4d96('0x8')]=function(_0x506fae,_0x19c0d4){return _0x506fae[_0x4d96('0x9')](_0x4d96('0xa'),attributes,{'tableName':_0x4d96('0xb'),'paranoid':![],'indexes':[{'name':_0x4d96('0xc'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4db1=['api','moment','request-promise','rimraf','./whatsappQueueReport.attributes','exports','define','WhatsappQueueReport','report_whatsapp_queue','uniqueid','lodash'];(function(_0x39ebe8,_0x316e19){var _0x465497=function(_0x50594e){while(--_0x50594e){_0x39ebe8['push'](_0x39ebe8['shift']());}};_0x465497(++_0x316e19);}(_0x4db1,0x1e3));var _0x14db=function(_0x285800,_0x26765e){_0x285800=_0x285800-0x0;var _0x4b809e=_0x4db1[_0x285800];return _0x4b809e;};'use strict';var _=require(_0x14db('0x0'));var util=require('util');var logger=require('../../config/logger')(_0x14db('0x1'));var moment=require(_0x14db('0x2'));var BPromise=require('bluebird');var rp=require(_0x14db('0x3'));var fs=require('fs');var path=require('path');var rimraf=require(_0x14db('0x4'));var config=require('../../config/environment');var attributes=require(_0x14db('0x5'));module[_0x14db('0x6')]=function(_0x274540,_0x2b2d90){return _0x274540[_0x14db('0x7')](_0x14db('0x8'),attributes,{'tableName':_0x14db('0x9'),'paranoid':![],'indexes':[{'name':_0x14db('0xa'),'fields':[_0x14db('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 1cd47b6..5d9c8ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f03=['then','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappQueueReport,\x20%s,\x20%s,\x20%s','stringify','code','error','message','info','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','create','body','options','raw','where','attributes','limit','UpdateWhatsappQueueReport','util','moment','bluebird','randomstring','../../mysqldb','../../config/utils','../../config/logger','../../config/environment','jayson/promise','request'];(function(_0x482c5c,_0x5d8108){var _0x10826a=function(_0x2f02ad){while(--_0x2f02ad){_0x482c5c['push'](_0x482c5c['shift']());}};_0x10826a(++_0x5d8108);}(_0x4f03,0xb6));var _0x34f0=function(_0x536068,_0x3de52c){_0x536068=_0x536068-0x0;var _0x4a5db2=_0x4f03[_0x536068];return _0x4a5db2;};'use strict';var _=require('lodash');var util=require(_0x34f0('0x0'));var moment=require(_0x34f0('0x1'));var BPromise=require(_0x34f0('0x2'));var rs=require(_0x34f0('0x3'));var fs=require('fs');var Redis=require('ioredis');var db=require(_0x34f0('0x4'))['db'];var utils=require(_0x34f0('0x5'));var logger=require(_0x34f0('0x6'))('rpc');var config=require(_0x34f0('0x7'));var jayson=require(_0x34f0('0x8'));var client=jayson['client']['http']({'port':0x232a});function respondWithRpcPromise(_0x233b54,_0x329a5f,_0xc7a87c){return new BPromise(function(_0xb22892,_0x5e8ccd){return client[_0x34f0('0x9')](_0x233b54,_0xc7a87c)[_0x34f0('0xa')](function(_0x33c2a1){logger['info'](_0x34f0('0xb'),_0x329a5f,_0x34f0('0xc'));logger[_0x34f0('0xd')](_0x34f0('0xe'),_0x329a5f,_0x34f0('0xc'),JSON[_0x34f0('0xf')](_0x33c2a1));if(_0x33c2a1['error']){if(_0x33c2a1['error'][_0x34f0('0x10')]===0x1f4){logger[_0x34f0('0x11')](_0x34f0('0xb'),_0x329a5f,_0x33c2a1[_0x34f0('0x11')][_0x34f0('0x12')]);return _0x5e8ccd(_0x33c2a1['error'][_0x34f0('0x12')]);}logger[_0x34f0('0x11')]('WhatsappQueueReport,\x20%s,\x20%s',_0x329a5f,_0x33c2a1[_0x34f0('0x11')]['message']);return _0xb22892(_0x33c2a1[_0x34f0('0x11')][_0x34f0('0x12')]);}else{logger[_0x34f0('0x13')]('WhatsappQueueReport,\x20%s,\x20%s',_0x329a5f,_0x34f0('0xc'));_0xb22892(_0x33c2a1[_0x34f0('0x14')][_0x34f0('0x12')]);}})[_0x34f0('0x15')](function(_0x3b1ffb){logger['error'](_0x34f0('0xb'),_0x329a5f,_0x3b1ffb);_0x5e8ccd(_0x3b1ffb);});});}exports[_0x34f0('0x16')]=function(_0x511323){var _0x2a6c71=this;return new Promise(function(_0x19ffc3,_0x58046c){return db[_0x34f0('0x17')][_0x34f0('0x18')](_0x511323[_0x34f0('0x19')],{'raw':_0x511323[_0x34f0('0x1a')]?_0x511323['options'][_0x34f0('0x1b')]===undefined?!![]:![]:!![]})[_0x34f0('0xa')](function(_0x1e40ff){logger['info'](_0x34f0('0x16'),_0x511323);logger[_0x34f0('0xd')](_0x34f0('0x16'),_0x511323,JSON[_0x34f0('0xf')](_0x1e40ff));_0x19ffc3(_0x1e40ff);})[_0x34f0('0x15')](function(_0x210a97){logger[_0x34f0('0x11')]('CreateWhatsappQueueReport',_0x210a97[_0x34f0('0x12')],_0x511323);_0x58046c(_0x2a6c71[_0x34f0('0x11')](0x1f4,_0x210a97[_0x34f0('0x12')]));});});};exports['UpdateWhatsappQueueReport']=function(_0x3f85c7){var _0x420003=this;return new Promise(function(_0x5a9c20,_0x4475e5){return db['WhatsappQueueReport']['update'](_0x3f85c7['body'],{'raw':_0x3f85c7[_0x34f0('0x1a')]?_0x3f85c7[_0x34f0('0x1a')][_0x34f0('0x1b')]===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x3f85c7[_0x34f0('0x1a')]?_0x3f85c7['options'][_0x34f0('0x1c')]||null:null,'attributes':_0x3f85c7[_0x34f0('0x1a')]?_0x3f85c7['options'][_0x34f0('0x1d')]||null:null,'limit':_0x3f85c7[_0x34f0('0x1a')]?_0x3f85c7['options'][_0x34f0('0x1e')]||null:null})[_0x34f0('0xa')](function(_0xa0eb2c){logger[_0x34f0('0x13')](_0x34f0('0x1f'),_0x3f85c7);logger['debug'](_0x34f0('0x1f'),_0x3f85c7,JSON[_0x34f0('0xf')](_0xa0eb2c));_0x5a9c20(_0xa0eb2c);})[_0x34f0('0x15')](function(_0x2bc180){logger[_0x34f0('0x11')](_0x34f0('0x1f'),_0x2bc180['message'],_0x3f85c7);_0x4475e5(_0x420003[_0x34f0('0x11')](0x1f4,_0x2bc180[_0x34f0('0x12')]));});});};
\ No newline at end of file
+var _0xa55d=['where','attributes','limit','bluebird','randomstring','ioredis','../../mysqldb','../../config/utils','rpc','../../config/environment','jayson/promise','client','http','request','info','WhatsappQueueReport,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','result','catch','CreateWhatsappQueueReport','WhatsappQueueReport','create','options','raw','then','debug','UpdateWhatsappQueueReport','update','body'];(function(_0x15c421,_0x6366f7){var _0x5e5ed5=function(_0x206e66){while(--_0x206e66){_0x15c421['push'](_0x15c421['shift']());}};_0x5e5ed5(++_0x6366f7);}(_0xa55d,0xc9));var _0xda55=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0xa55d[_0x3b380d];return _0x54502b;};'use strict';var _=require('lodash');var util=require('util');var moment=require('moment');var BPromise=require(_0xda55('0x0'));var rs=require(_0xda55('0x1'));var fs=require('fs');var Redis=require(_0xda55('0x2'));var db=require(_0xda55('0x3'))['db'];var utils=require(_0xda55('0x4'));var logger=require('../../config/logger')(_0xda55('0x5'));var config=require(_0xda55('0x6'));var jayson=require(_0xda55('0x7'));var client=jayson[_0xda55('0x8')][_0xda55('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x1814f2,_0x2a7ad4,_0x77efe1){return new BPromise(function(_0x2a8721,_0x58da56){return client[_0xda55('0xa')](_0x1814f2,_0x77efe1)['then'](function(_0x2a8369){logger[_0xda55('0xb')](_0xda55('0xc'),_0x2a7ad4,_0xda55('0xd'));logger['debug']('WhatsappQueueReport,\x20%s,\x20%s,\x20%s',_0x2a7ad4,_0xda55('0xd'),JSON[_0xda55('0xe')](_0x2a8369));if(_0x2a8369[_0xda55('0xf')]){if(_0x2a8369[_0xda55('0xf')][_0xda55('0x10')]===0x1f4){logger['error'](_0xda55('0xc'),_0x2a7ad4,_0x2a8369[_0xda55('0xf')][_0xda55('0x11')]);return _0x58da56(_0x2a8369['error'][_0xda55('0x11')]);}logger[_0xda55('0xf')](_0xda55('0xc'),_0x2a7ad4,_0x2a8369['error'][_0xda55('0x11')]);return _0x2a8721(_0x2a8369[_0xda55('0xf')]['message']);}else{logger[_0xda55('0xb')](_0xda55('0xc'),_0x2a7ad4,_0xda55('0xd'));_0x2a8721(_0x2a8369[_0xda55('0x12')][_0xda55('0x11')]);}})[_0xda55('0x13')](function(_0x730329){logger[_0xda55('0xf')](_0xda55('0xc'),_0x2a7ad4,_0x730329);_0x58da56(_0x730329);});});}exports[_0xda55('0x14')]=function(_0x46dfcb){var _0x3d8fdc=this;return new Promise(function(_0x4a52cd,_0x12664d){return db[_0xda55('0x15')][_0xda55('0x16')](_0x46dfcb['body'],{'raw':_0x46dfcb[_0xda55('0x17')]?_0x46dfcb[_0xda55('0x17')][_0xda55('0x18')]===undefined?!![]:![]:!![]})[_0xda55('0x19')](function(_0x3b1cfa){logger['info'](_0xda55('0x14'),_0x46dfcb);logger[_0xda55('0x1a')](_0xda55('0x14'),_0x46dfcb,JSON[_0xda55('0xe')](_0x3b1cfa));_0x4a52cd(_0x3b1cfa);})[_0xda55('0x13')](function(_0x209a3d){logger[_0xda55('0xf')](_0xda55('0x14'),_0x209a3d[_0xda55('0x11')],_0x46dfcb);_0x12664d(_0x3d8fdc[_0xda55('0xf')](0x1f4,_0x209a3d[_0xda55('0x11')]));});});};exports[_0xda55('0x1b')]=function(_0xcd2fd8){var _0x16ab07=this;return new Promise(function(_0x2740a0,_0x12ce42){return db[_0xda55('0x15')][_0xda55('0x1c')](_0xcd2fd8[_0xda55('0x1d')],{'raw':_0xcd2fd8[_0xda55('0x17')]?_0xcd2fd8['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0xcd2fd8[_0xda55('0x17')]?_0xcd2fd8[_0xda55('0x17')][_0xda55('0x1e')]||null:null,'attributes':_0xcd2fd8[_0xda55('0x17')]?_0xcd2fd8[_0xda55('0x17')][_0xda55('0x1f')]||null:null,'limit':_0xcd2fd8[_0xda55('0x17')]?_0xcd2fd8[_0xda55('0x17')][_0xda55('0x20')]||null:null})[_0xda55('0x19')](function(_0x2c302c){logger[_0xda55('0xb')](_0xda55('0x1b'),_0xcd2fd8);logger['debug'](_0xda55('0x1b'),_0xcd2fd8,JSON[_0xda55('0xe')](_0x2c302c));_0x2740a0(_0x2c302c);})[_0xda55('0x13')](function(_0x502fdd){logger[_0xda55('0xf')](_0xda55('0x1b'),_0x502fdd['message'],_0xcd2fd8);_0x12ce42(_0x16ab07['error'](0x1f4,_0x502fdd['message']));});});};
\ No newline at end of file
index a6ed231..790cd14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x723e=['show','post','create','put','/:id','delete','multer','util','path','connect-timeout','express','./whatsappTransferReport.controller','get','index','/describe','isAuthenticated'];(function(_0x47aa64,_0xfb8a07){var _0x549c7a=function(_0x266165){while(--_0x266165){_0x47aa64['push'](_0x47aa64['shift']());}};_0x549c7a(++_0xfb8a07);}(_0x723e,0x86));var _0xe723=function(_0x64e3c1,_0x14da00){_0x64e3c1=_0x64e3c1-0x0;var _0x44adc8=_0x723e[_0x64e3c1];return _0x44adc8;};'use strict';var multer=require(_0xe723('0x0'));var util=require(_0xe723('0x1'));var path=require(_0xe723('0x2'));var timeout=require(_0xe723('0x3'));var express=require(_0xe723('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('../../config/environment');var controller=require(_0xe723('0x5'));router[_0xe723('0x6')]('/',auth['isAuthenticated'](),controller[_0xe723('0x7')]);router[_0xe723('0x6')](_0xe723('0x8'),auth[_0xe723('0x9')](),controller['describe']);router['get']('/:id',auth[_0xe723('0x9')](),controller[_0xe723('0xa')]);router[_0xe723('0xb')]('/',auth[_0xe723('0x9')](),controller[_0xe723('0xc')]);router[_0xe723('0xd')](_0xe723('0xe'),auth[_0xe723('0x9')](),controller['update']);router[_0xe723('0xf')](_0xe723('0xe'),auth[_0xe723('0x9')](),controller['destroy']);module['exports']=router;
\ No newline at end of file
+var _0xea2b=['connect-timeout','Router','fs-extra','../../components/interaction/service','get','isAuthenticated','index','/describe','describe','/:id','show','post','create','put','update','delete','exports','multer','util','path'];(function(_0x341e0f,_0x4a09d0){var _0x59555a=function(_0x4343a8){while(--_0x4343a8){_0x341e0f['push'](_0x341e0f['shift']());}};_0x59555a(++_0x4a09d0);}(_0xea2b,0x1f1));var _0xbea2=function(_0x3f3a05,_0x1b7896){_0x3f3a05=_0x3f3a05-0x0;var _0x16d070=_0xea2b[_0x3f3a05];return _0x16d070;};'use strict';var multer=require(_0xbea2('0x0'));var util=require(_0xbea2('0x1'));var path=require(_0xbea2('0x2'));var timeout=require(_0xbea2('0x3'));var express=require('express');var router=express[_0xbea2('0x4')]();var fs_extra=require(_0xbea2('0x5'));var auth=require('../../components/auth/service');var interaction=require(_0xbea2('0x6'));var config=require('../../config/environment');var controller=require('./whatsappTransferReport.controller');router[_0xbea2('0x7')]('/',auth[_0xbea2('0x8')](),controller[_0xbea2('0x9')]);router[_0xbea2('0x7')](_0xbea2('0xa'),auth[_0xbea2('0x8')](),controller[_0xbea2('0xb')]);router[_0xbea2('0x7')](_0xbea2('0xc'),auth[_0xbea2('0x8')](),controller[_0xbea2('0xd')]);router[_0xbea2('0xe')]('/',auth[_0xbea2('0x8')](),controller[_0xbea2('0xf')]);router[_0xbea2('0x10')](_0xbea2('0xc'),auth['isAuthenticated'](),controller[_0xbea2('0x11')]);router[_0xbea2('0x12')]('/:id',auth[_0xbea2('0x8')](),controller['destroy']);module[_0xbea2('0x13')]=router;
\ No newline at end of file
index ac5b2db..5b478b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbff2=['STRING','ENUM','account','agent','queue','DATE','sequelize','exports'];(function(_0x154983,_0xc29edf){var _0x3d1243=function(_0x5cb7a4){while(--_0x5cb7a4){_0x154983['push'](_0x154983['shift']());}};_0x3d1243(++_0xc29edf);}(_0xbff2,0x10e));var _0x2bff=function(_0x16a021,_0x415aaa){_0x16a021=_0x16a021-0x0;var _0x4c25db=_0xbff2[_0x16a021];return _0x4c25db;};'use strict';var Sequelize=require(_0x2bff('0x0'));module[_0x2bff('0x1')]={'uniqueid':{'type':Sequelize[_0x2bff('0x2')],'allowNull':![]},'type':{'type':Sequelize[_0x2bff('0x3')](_0x2bff('0x4'),_0x2bff('0x5'),_0x2bff('0x6')),'allowNull':![]},'transferredAt':{'type':Sequelize[_0x2bff('0x7')]}};
\ No newline at end of file
+var _0xbc87=['sequelize','ENUM','account','agent'];(function(_0x40ec5c,_0x53fc9d){var _0x1070c1=function(_0xa827cc){while(--_0xa827cc){_0x40ec5c['push'](_0x40ec5c['shift']());}};_0x1070c1(++_0x53fc9d);}(_0xbc87,0x144));var _0x7bc8=function(_0x24ac51,_0x2145ba){_0x24ac51=_0x24ac51-0x0;var _0x13a5fe=_0xbc87[_0x24ac51];return _0x13a5fe;};'use strict';var Sequelize=require(_0x7bc8('0x0'));module['exports']={'uniqueid':{'type':Sequelize['STRING'],'allowNull':![]},'type':{'type':Sequelize[_0x7bc8('0x1')](_0x7bc8('0x2'),_0x7bc8('0x3'),'queue'),'allowNull':![]},'transferredAt':{'type':Sequelize['DATE']}};
\ No newline at end of file
index b451e6e..1917a00 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9ea8=['params','keys','create','update','find','body','describe','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','path','ejs','fs-extra','lodash','squel','desk.js','to-csv','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','end','status','json','undefined','limit','offset','count','set','apply','reject','save','then','destroy','error','stack','name','send','index','map','rawAttributes','fieldName','type','key','model','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','where','pick','filter','merge','VIRTUAL','options','WhatsappTransferReport','includeAll','include','findAll','rows','catch','show'];(function(_0x4ee436,_0x5e8e1b){var _0x163591=function(_0x473bad){while(--_0x473bad){_0x4ee436['push'](_0x4ee436['shift']());}};_0x163591(++_0x5e8e1b);}(_0x9ea8,0x147));var _0x89ea=function(_0x582b0f,_0x35a9de){_0x582b0f=_0x582b0f-0x0;var _0x4658f0=_0x9ea8[_0x582b0f];return _0x4658f0;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x89ea('0x0'));var zipdir=require(_0x89ea('0x1'));var jsonpatch=require(_0x89ea('0x2'));var rp=require(_0x89ea('0x3'));var moment=require(_0x89ea('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x89ea('0x5'));var util=require('util');var path=require(_0x89ea('0x6'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x89ea('0x7'));var fs=require('fs');var fs_extra=require(_0x89ea('0x8'));var _=require(_0x89ea('0x9'));var squel=require(_0x89ea('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x89ea('0xb'));var toCsv=require(_0x89ea('0xc'));var querystring=require(_0x89ea('0xd'));var Papa=require(_0x89ea('0xe'));var Redis=require(_0x89ea('0xf'));var authService=require(_0x89ea('0x10'));var qs=require(_0x89ea('0x11'));var as=require(_0x89ea('0x12'));var hardwareService=require(_0x89ea('0x13'));var logger=require(_0x89ea('0x14'))(_0x89ea('0x15'));var utils=require(_0x89ea('0x16'));var config=require(_0x89ea('0x17'));var licenseUtil=require(_0x89ea('0x18'));var db=require(_0x89ea('0x19'))['db'];function respondWithStatusCode(_0x57e3f7,_0x3c5f1d){_0x3c5f1d=_0x3c5f1d||0xcc;return function(_0x3012ea){if(_0x3012ea){return _0x57e3f7[_0x89ea('0x1a')](_0x3c5f1d);}return _0x57e3f7['status'](_0x3c5f1d)[_0x89ea('0x1b')]();};}function respondWithResult(_0xd7894a,_0x5eee81){_0x5eee81=_0x5eee81||0xc8;return function(_0x5c57cd){if(_0x5c57cd){return _0xd7894a[_0x89ea('0x1c')](_0x5eee81)[_0x89ea('0x1d')](_0x5c57cd);}};}function respondWithFilteredResult(_0x34190d,_0x1cca47){return function(_0x1ec206){if(_0x1ec206){var _0x3ad2a7=typeof _0x1cca47['offset']===_0x89ea('0x1e')&&typeof _0x1cca47[_0x89ea('0x1f')]===_0x89ea('0x1e');var _0x1271d5=_0x1ec206['count'];var _0x500024=_0x3ad2a7?0x0:_0x1cca47[_0x89ea('0x20')];var _0x20bce2=_0x3ad2a7?_0x1ec206[_0x89ea('0x21')]:_0x1cca47[_0x89ea('0x20')]+_0x1cca47[_0x89ea('0x1f')];var _0xaf9eea;if(_0x20bce2>=_0x1271d5){_0x20bce2=_0x1271d5;_0xaf9eea=0xc8;}else{_0xaf9eea=0xce;}_0x34190d[_0x89ea('0x1c')](_0xaf9eea);return _0x34190d[_0x89ea('0x22')]('Content-Range',_0x500024+'-'+_0x20bce2+'/'+_0x1271d5)[_0x89ea('0x1d')](_0x1ec206);}return null;};}function patchUpdates(_0x329e9f){return function(_0x4e2508){try{jsonpatch[_0x89ea('0x23')](_0x4e2508,_0x329e9f,!![]);}catch(_0x22309a){return BPromise[_0x89ea('0x24')](_0x22309a);}return _0x4e2508[_0x89ea('0x25')]();};}function saveUpdates(_0x19c427,_0x1d12ce){return function(_0x19798d){if(_0x19798d){return _0x19798d['update'](_0x19c427)[_0x89ea('0x26')](function(_0x1c55ee){return _0x1c55ee;});}return null;};}function removeEntity(_0x4b52d0,_0x4811e7){return function(_0x190771){if(_0x190771){return _0x190771[_0x89ea('0x27')]()[_0x89ea('0x26')](function(){_0x4b52d0[_0x89ea('0x1c')](0xcc)[_0x89ea('0x1b')]();});}};}function handleEntityNotFound(_0x409a20,_0x5f5ad8){return function(_0x19610a){if(!_0x19610a){_0x409a20[_0x89ea('0x1a')](0x194);}return _0x19610a;};}function handleError(_0x2354fb,_0x3e0e72){_0x3e0e72=_0x3e0e72||0x1f4;return function(_0x45627b){logger[_0x89ea('0x28')](_0x45627b[_0x89ea('0x29')]);if(_0x45627b['name']){delete _0x45627b[_0x89ea('0x2a')];}_0x2354fb[_0x89ea('0x1c')](_0x3e0e72)[_0x89ea('0x2b')](_0x45627b);};}exports[_0x89ea('0x2c')]=function(_0x1f18d2,_0x48a120){var _0x579006={},_0x3cade7={},_0x125687={'count':0x0,'rows':[]};var _0x26dc95=_[_0x89ea('0x2d')](db['WhatsappTransferReport'][_0x89ea('0x2e')],function(_0x2a5037){return{'name':_0x2a5037[_0x89ea('0x2f')],'type':_0x2a5037[_0x89ea('0x30')][_0x89ea('0x31')]};});_0x3cade7[_0x89ea('0x32')]=_[_0x89ea('0x2d')](_0x26dc95,_0x89ea('0x2a'));_0x3cade7[_0x89ea('0x33')]=_['keys'](_0x1f18d2[_0x89ea('0x33')]);_0x3cade7[_0x89ea('0x34')]=_[_0x89ea('0x35')](_0x3cade7[_0x89ea('0x32')],_0x3cade7[_0x89ea('0x33')]);_0x579006[_0x89ea('0x36')]=_['intersection'](_0x3cade7[_0x89ea('0x32')],qs[_0x89ea('0x37')](_0x1f18d2[_0x89ea('0x33')][_0x89ea('0x37')]));_0x579006[_0x89ea('0x36')]=_0x579006['attributes'][_0x89ea('0x38')]?_0x579006[_0x89ea('0x36')]:_0x3cade7[_0x89ea('0x32')];if(!_0x1f18d2[_0x89ea('0x33')][_0x89ea('0x39')](_0x89ea('0x3a'))){_0x579006[_0x89ea('0x1f')]=qs[_0x89ea('0x1f')](_0x1f18d2[_0x89ea('0x33')][_0x89ea('0x1f')]);_0x579006[_0x89ea('0x20')]=qs[_0x89ea('0x20')](_0x1f18d2['query'][_0x89ea('0x20')]);}_0x579006[_0x89ea('0x3b')]=qs['sort'](_0x1f18d2[_0x89ea('0x33')]['sort']);_0x579006[_0x89ea('0x3c')]=qs['filters'](_[_0x89ea('0x3d')](_0x1f18d2['query'],_0x3cade7[_0x89ea('0x34')]),_0x26dc95);if(_0x1f18d2[_0x89ea('0x33')][_0x89ea('0x3e')]){_0x579006[_0x89ea('0x3c')]=_[_0x89ea('0x3f')](_0x579006[_0x89ea('0x3c')],{'$or':_[_0x89ea('0x2d')](_0x26dc95,function(_0x44c15b){if(_0x44c15b[_0x89ea('0x30')]!==_0x89ea('0x40')){var _0x1ed6ab={};_0x1ed6ab[_0x44c15b[_0x89ea('0x2a')]]={'$like':'%'+_0x1f18d2[_0x89ea('0x33')][_0x89ea('0x3e')]+'%'};return _0x1ed6ab;}})});}_0x579006=_[_0x89ea('0x3f')]({},_0x579006,_0x1f18d2[_0x89ea('0x41')]);var _0x17413e={'where':_0x579006[_0x89ea('0x3c')]};return db[_0x89ea('0x42')][_0x89ea('0x21')](_0x17413e)[_0x89ea('0x26')](function(_0xf42668){_0x125687[_0x89ea('0x21')]=_0xf42668;if(_0x1f18d2[_0x89ea('0x33')][_0x89ea('0x43')]){_0x579006[_0x89ea('0x44')]=[{'all':!![]}];}return db[_0x89ea('0x42')][_0x89ea('0x45')](_0x579006);})[_0x89ea('0x26')](function(_0x551594){_0x125687[_0x89ea('0x46')]=_0x551594;return _0x125687;})['then'](respondWithFilteredResult(_0x48a120,_0x579006))[_0x89ea('0x47')](handleError(_0x48a120,null));};exports[_0x89ea('0x48')]=function(_0x4ec97d,_0x5b67f0){var _0x2d7654={'raw':!![],'where':{'id':_0x4ec97d[_0x89ea('0x49')]['id']}},_0x1cd481={};_0x1cd481[_0x89ea('0x32')]=_[_0x89ea('0x4a')](db[_0x89ea('0x42')][_0x89ea('0x2e')]);_0x1cd481[_0x89ea('0x33')]=_[_0x89ea('0x4a')](_0x4ec97d[_0x89ea('0x33')]);_0x1cd481[_0x89ea('0x34')]=_[_0x89ea('0x35')](_0x1cd481['model'],_0x1cd481[_0x89ea('0x33')]);_0x2d7654[_0x89ea('0x36')]=_[_0x89ea('0x35')](_0x1cd481[_0x89ea('0x32')],qs[_0x89ea('0x37')](_0x4ec97d[_0x89ea('0x33')][_0x89ea('0x37')]));_0x2d7654[_0x89ea('0x36')]=_0x2d7654[_0x89ea('0x36')]['length']?_0x2d7654['attributes']:_0x1cd481[_0x89ea('0x32')];if(_0x4ec97d[_0x89ea('0x33')][_0x89ea('0x43')]){_0x2d7654[_0x89ea('0x44')]=[{'all':!![]}];}_0x2d7654=_[_0x89ea('0x3f')]({},_0x2d7654,_0x4ec97d[_0x89ea('0x41')]);return db['WhatsappTransferReport']['find'](_0x2d7654)['then'](handleEntityNotFound(_0x5b67f0,null))[_0x89ea('0x26')](respondWithResult(_0x5b67f0,null))[_0x89ea('0x47')](handleError(_0x5b67f0,null));};exports['create']=function(_0x4a1849,_0x19aac0){return db[_0x89ea('0x42')][_0x89ea('0x4b')](_0x4a1849['body'],{})[_0x89ea('0x26')](respondWithResult(_0x19aac0,0xc9))[_0x89ea('0x47')](handleError(_0x19aac0,null));};exports[_0x89ea('0x4c')]=function(_0x449ab4,_0x54a4b6){if(_0x449ab4['body']['id']){delete _0x449ab4['body']['id'];}return db[_0x89ea('0x42')][_0x89ea('0x4d')]({'where':{'id':_0x449ab4[_0x89ea('0x49')]['id']}})['then'](handleEntityNotFound(_0x54a4b6,null))[_0x89ea('0x26')](saveUpdates(_0x449ab4[_0x89ea('0x4e')],null))[_0x89ea('0x26')](respondWithResult(_0x54a4b6,null))[_0x89ea('0x47')](handleError(_0x54a4b6,null));};exports[_0x89ea('0x27')]=function(_0x3ff77c,_0x407e53){return db[_0x89ea('0x42')][_0x89ea('0x4d')]({'where':{'id':_0x3ff77c[_0x89ea('0x49')]['id']}})[_0x89ea('0x26')](handleEntityNotFound(_0x407e53,null))[_0x89ea('0x26')](removeEntity(_0x407e53,null))[_0x89ea('0x47')](handleError(_0x407e53,null));};exports[_0x89ea('0x4f')]=function(_0x200be1,_0x1895b2){return db[_0x89ea('0x42')][_0x89ea('0x4f')]()[_0x89ea('0x26')](respondWithResult(_0x1895b2,null))[_0x89ea('0x47')](handleError(_0x1895b2,null));};
\ No newline at end of file
+var _0x3798=['reject','save','update','destroy','then','sendStatus','error','stack','name','send','index','map','WhatsappTransferReport','type','key','model','query','filters','attributes','intersection','fields','length','hasOwnProperty','order','where','pick','filter','merge','VIRTUAL','options','includeAll','findAll','rows','params','rawAttributes','include','find','catch','create','body','describe','rimraf','zip-dir','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','desk.js','papaparse','ioredis','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/license/util','../../mysqldb','status','end','json','offset','undefined','limit','count','set','Content-Range','apply'];(function(_0x5804e7,_0x3a2f66){var _0x530f0a=function(_0x9e11a1){while(--_0x9e11a1){_0x5804e7['push'](_0x5804e7['shift']());}};_0x530f0a(++_0x3a2f66);}(_0x3798,0x107));var _0x8379=function(_0x23955c,_0x37a5e3){_0x23955c=_0x23955c-0x0;var _0x13de15=_0x3798[_0x23955c];return _0x13de15;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8379('0x0'));var zipdir=require(_0x8379('0x1'));var jsonpatch=require('fast-json-patch');var rp=require(_0x8379('0x2'));var moment=require(_0x8379('0x3'));var BPromise=require(_0x8379('0x4'));var Mustache=require(_0x8379('0x5'));var util=require(_0x8379('0x6'));var path=require(_0x8379('0x7'));var sox=require(_0x8379('0x8'));var csv=require(_0x8379('0x9'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x8379('0xa'));var _=require(_0x8379('0xb'));var squel=require(_0x8379('0xc'));var crypto=require(_0x8379('0xd'));var jsforce=require('jsforce');var deskjs=require(_0x8379('0xe'));var toCsv=require(_0x8379('0x9'));var querystring=require('querystring');var Papa=require(_0x8379('0xf'));var Redis=require(_0x8379('0x10'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require(_0x8379('0x11'));var hardwareService=require(_0x8379('0x12'));var logger=require(_0x8379('0x13'))(_0x8379('0x14'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require(_0x8379('0x15'));var db=require(_0x8379('0x16'))['db'];function respondWithStatusCode(_0x274cfb,_0x556be8){_0x556be8=_0x556be8||0xcc;return function(_0x19bf77){if(_0x19bf77){return _0x274cfb['sendStatus'](_0x556be8);}return _0x274cfb[_0x8379('0x17')](_0x556be8)[_0x8379('0x18')]();};}function respondWithResult(_0x4d654d,_0xc61aa6){_0xc61aa6=_0xc61aa6||0xc8;return function(_0x241dca){if(_0x241dca){return _0x4d654d[_0x8379('0x17')](_0xc61aa6)[_0x8379('0x19')](_0x241dca);}};}function respondWithFilteredResult(_0x28927b,_0x271bb4){return function(_0x16fed5){if(_0x16fed5){var _0x3fcdd7=typeof _0x271bb4[_0x8379('0x1a')]===_0x8379('0x1b')&&typeof _0x271bb4[_0x8379('0x1c')]===_0x8379('0x1b');var _0x5e771d=_0x16fed5[_0x8379('0x1d')];var _0x435d2d=_0x3fcdd7?0x0:_0x271bb4[_0x8379('0x1a')];var _0x881853=_0x3fcdd7?_0x16fed5[_0x8379('0x1d')]:_0x271bb4[_0x8379('0x1a')]+_0x271bb4['limit'];var _0x304ecf;if(_0x881853>=_0x5e771d){_0x881853=_0x5e771d;_0x304ecf=0xc8;}else{_0x304ecf=0xce;}_0x28927b[_0x8379('0x17')](_0x304ecf);return _0x28927b[_0x8379('0x1e')](_0x8379('0x1f'),_0x435d2d+'-'+_0x881853+'/'+_0x5e771d)[_0x8379('0x19')](_0x16fed5);}return null;};}function patchUpdates(_0x5c3f7b){return function(_0x4c9991){try{jsonpatch[_0x8379('0x20')](_0x4c9991,_0x5c3f7b,!![]);}catch(_0x4b94cc){return BPromise[_0x8379('0x21')](_0x4b94cc);}return _0x4c9991[_0x8379('0x22')]();};}function saveUpdates(_0x12c31c,_0x39071b){return function(_0x553226){if(_0x553226){return _0x553226[_0x8379('0x23')](_0x12c31c)['then'](function(_0x466201){return _0x466201;});}return null;};}function removeEntity(_0x548f22,_0x1842ea){return function(_0x25d980){if(_0x25d980){return _0x25d980[_0x8379('0x24')]()[_0x8379('0x25')](function(){_0x548f22[_0x8379('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x522c4a,_0x4a3e77){return function(_0xa5cf80){if(!_0xa5cf80){_0x522c4a[_0x8379('0x26')](0x194);}return _0xa5cf80;};}function handleError(_0x6f6852,_0x18a145){_0x18a145=_0x18a145||0x1f4;return function(_0x2ce194){logger[_0x8379('0x27')](_0x2ce194[_0x8379('0x28')]);if(_0x2ce194[_0x8379('0x29')]){delete _0x2ce194['name'];}_0x6f6852[_0x8379('0x17')](_0x18a145)[_0x8379('0x2a')](_0x2ce194);};}exports[_0x8379('0x2b')]=function(_0x3b7bc8,_0x3f4968){var _0x43ac9b={},_0x2f0f8e={},_0x4919f1={'count':0x0,'rows':[]};var _0x27dbb5=_[_0x8379('0x2c')](db[_0x8379('0x2d')]['rawAttributes'],function(_0x21027f){return{'name':_0x21027f['fieldName'],'type':_0x21027f[_0x8379('0x2e')][_0x8379('0x2f')]};});_0x2f0f8e[_0x8379('0x30')]=_['map'](_0x27dbb5,_0x8379('0x29'));_0x2f0f8e[_0x8379('0x31')]=_['keys'](_0x3b7bc8['query']);_0x2f0f8e[_0x8379('0x32')]=_['intersection'](_0x2f0f8e[_0x8379('0x30')],_0x2f0f8e[_0x8379('0x31')]);_0x43ac9b[_0x8379('0x33')]=_[_0x8379('0x34')](_0x2f0f8e[_0x8379('0x30')],qs[_0x8379('0x35')](_0x3b7bc8[_0x8379('0x31')][_0x8379('0x35')]));_0x43ac9b[_0x8379('0x33')]=_0x43ac9b[_0x8379('0x33')][_0x8379('0x36')]?_0x43ac9b[_0x8379('0x33')]:_0x2f0f8e['model'];if(!_0x3b7bc8[_0x8379('0x31')][_0x8379('0x37')]('nolimit')){_0x43ac9b[_0x8379('0x1c')]=qs[_0x8379('0x1c')](_0x3b7bc8[_0x8379('0x31')][_0x8379('0x1c')]);_0x43ac9b[_0x8379('0x1a')]=qs[_0x8379('0x1a')](_0x3b7bc8[_0x8379('0x31')][_0x8379('0x1a')]);}_0x43ac9b[_0x8379('0x38')]=qs['sort'](_0x3b7bc8[_0x8379('0x31')]['sort']);_0x43ac9b[_0x8379('0x39')]=qs['filters'](_[_0x8379('0x3a')](_0x3b7bc8[_0x8379('0x31')],_0x2f0f8e['filters']),_0x27dbb5);if(_0x3b7bc8['query'][_0x8379('0x3b')]){_0x43ac9b[_0x8379('0x39')]=_[_0x8379('0x3c')](_0x43ac9b[_0x8379('0x39')],{'$or':_[_0x8379('0x2c')](_0x27dbb5,function(_0x3b0767){if(_0x3b0767['type']!==_0x8379('0x3d')){var _0x5592c5={};_0x5592c5[_0x3b0767[_0x8379('0x29')]]={'$like':'%'+_0x3b7bc8[_0x8379('0x31')][_0x8379('0x3b')]+'%'};return _0x5592c5;}})});}_0x43ac9b=_[_0x8379('0x3c')]({},_0x43ac9b,_0x3b7bc8[_0x8379('0x3e')]);var _0x805a06={'where':_0x43ac9b[_0x8379('0x39')]};return db[_0x8379('0x2d')][_0x8379('0x1d')](_0x805a06)[_0x8379('0x25')](function(_0x514127){_0x4919f1[_0x8379('0x1d')]=_0x514127;if(_0x3b7bc8[_0x8379('0x31')][_0x8379('0x3f')]){_0x43ac9b['include']=[{'all':!![]}];}return db[_0x8379('0x2d')][_0x8379('0x40')](_0x43ac9b);})['then'](function(_0x2d355a){_0x4919f1[_0x8379('0x41')]=_0x2d355a;return _0x4919f1;})[_0x8379('0x25')](respondWithFilteredResult(_0x3f4968,_0x43ac9b))['catch'](handleError(_0x3f4968,null));};exports['show']=function(_0x58beb0,_0x33af6f){var _0x20ff22={'raw':!![],'where':{'id':_0x58beb0[_0x8379('0x42')]['id']}},_0x5b00bc={};_0x5b00bc[_0x8379('0x30')]=_['keys'](db[_0x8379('0x2d')][_0x8379('0x43')]);_0x5b00bc['query']=_['keys'](_0x58beb0[_0x8379('0x31')]);_0x5b00bc[_0x8379('0x32')]=_[_0x8379('0x34')](_0x5b00bc[_0x8379('0x30')],_0x5b00bc[_0x8379('0x31')]);_0x20ff22['attributes']=_[_0x8379('0x34')](_0x5b00bc[_0x8379('0x30')],qs['fields'](_0x58beb0[_0x8379('0x31')]['fields']));_0x20ff22[_0x8379('0x33')]=_0x20ff22[_0x8379('0x33')]['length']?_0x20ff22['attributes']:_0x5b00bc[_0x8379('0x30')];if(_0x58beb0[_0x8379('0x31')][_0x8379('0x3f')]){_0x20ff22[_0x8379('0x44')]=[{'all':!![]}];}_0x20ff22=_[_0x8379('0x3c')]({},_0x20ff22,_0x58beb0[_0x8379('0x3e')]);return db['WhatsappTransferReport'][_0x8379('0x45')](_0x20ff22)[_0x8379('0x25')](handleEntityNotFound(_0x33af6f,null))[_0x8379('0x25')](respondWithResult(_0x33af6f,null))[_0x8379('0x46')](handleError(_0x33af6f,null));};exports[_0x8379('0x47')]=function(_0xebe6a1,_0x69a79b){return db[_0x8379('0x2d')][_0x8379('0x47')](_0xebe6a1[_0x8379('0x48')],{})[_0x8379('0x25')](respondWithResult(_0x69a79b,0xc9))['catch'](handleError(_0x69a79b,null));};exports[_0x8379('0x23')]=function(_0x55b2f6,_0x4d02cd){if(_0x55b2f6['body']['id']){delete _0x55b2f6[_0x8379('0x48')]['id'];}return db[_0x8379('0x2d')][_0x8379('0x45')]({'where':{'id':_0x55b2f6[_0x8379('0x42')]['id']}})['then'](handleEntityNotFound(_0x4d02cd,null))[_0x8379('0x25')](saveUpdates(_0x55b2f6[_0x8379('0x48')],null))[_0x8379('0x25')](respondWithResult(_0x4d02cd,null))[_0x8379('0x46')](handleError(_0x4d02cd,null));};exports[_0x8379('0x24')]=function(_0x21ff29,_0x58985f){return db['WhatsappTransferReport']['find']({'where':{'id':_0x21ff29[_0x8379('0x42')]['id']}})[_0x8379('0x25')](handleEntityNotFound(_0x58985f,null))['then'](removeEntity(_0x58985f,null))[_0x8379('0x46')](handleError(_0x58985f,null));};exports[_0x8379('0x49')]=function(_0x12aa46,_0x4318ee){return db[_0x8379('0x2d')][_0x8379('0x49')]()[_0x8379('0x25')](respondWithResult(_0x4318ee,null))[_0x8379('0x46')](handleError(_0x4318ee,null));};
\ No newline at end of file
index 9a09915..85098b0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf96=['path','../../config/environment','exports','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','bluebird'];(function(_0x1624ea,_0x1a3c25){var _0xde7a75=function(_0x472a71){while(--_0x472a71){_0x1624ea['push'](_0x1624ea['shift']());}};_0xde7a75(++_0x1a3c25);}(_0xcf96,0x18c));var _0x6cf9=function(_0x3b6fa9,_0x91a3b1){_0x3b6fa9=_0x3b6fa9-0x0;var _0x26621c=_0xcf96[_0x3b6fa9];return _0x26621c;};'use strict';var _=require(_0x6cf9('0x0'));var util=require(_0x6cf9('0x1'));var logger=require(_0x6cf9('0x2'))('api');var moment=require('moment');var BPromise=require(_0x6cf9('0x3'));var rp=require('request-promise');var fs=require('fs');var path=require(_0x6cf9('0x4'));var rimraf=require('rimraf');var config=require(_0x6cf9('0x5'));var attributes=require('./whatsappTransferReport.attributes');module[_0x6cf9('0x6')]=function(_0x52af69,_0x415bc8){return _0x52af69['define'](_0x6cf9('0x7'),attributes,{'tableName':_0x6cf9('0x8'),'paranoid':![],'indexes':[{'name':_0x6cf9('0x9'),'fields':['uniqueid']}],'timestamps':!![]});};
\ No newline at end of file
+var _0x4798=['../../config/environment','./whatsappTransferReport.attributes','define','WhatsappTransferReport','report_whatsapp_transfer','uniqueid','lodash','util','../../config/logger','path','rimraf'];(function(_0x1ac42c,_0xa4848d){var _0x4aa8e4=function(_0x3aef3d){while(--_0x3aef3d){_0x1ac42c['push'](_0x1ac42c['shift']());}};_0x4aa8e4(++_0xa4848d);}(_0x4798,0x1a8));var _0x8479=function(_0x41aff9,_0x396c2d){_0x41aff9=_0x41aff9-0x0;var _0x5b0773=_0x4798[_0x41aff9];return _0x5b0773;};'use strict';var _=require(_0x8479('0x0'));var util=require(_0x8479('0x1'));var logger=require(_0x8479('0x2'))('api');var moment=require('moment');var BPromise=require('bluebird');var rp=require('request-promise');var fs=require('fs');var path=require(_0x8479('0x3'));var rimraf=require(_0x8479('0x4'));var config=require(_0x8479('0x5'));var attributes=require(_0x8479('0x6'));module['exports']=function(_0x232185,_0x41caa0){return _0x232185[_0x8479('0x7')](_0x8479('0x8'),attributes,{'tableName':_0x8479('0x9'),'paranoid':![],'indexes':[{'name':_0x8479('0xa'),'fields':[_0x8479('0xa')]}],'timestamps':!![]});};
\ No newline at end of file
index 5e4fa65..dd9e811 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9089=['../../mysqldb','../../config/logger','../../config/environment','jayson/promise','client','http','request','then','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','stringify','error','code','message','info','result','lodash','util','moment','bluebird','ioredis'];(function(_0x45bf86,_0x75586e){var _0x1f02b7=function(_0x1ea8a3){while(--_0x1ea8a3){_0x45bf86['push'](_0x45bf86['shift']());}};_0x1f02b7(++_0x75586e);}(_0x9089,0x154));var _0x9908=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x9089[_0x138adb];return _0x1b27f2;};'use strict';var _=require(_0x9908('0x0'));var util=require(_0x9908('0x1'));var moment=require(_0x9908('0x2'));var BPromise=require(_0x9908('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x9908('0x4'));var db=require(_0x9908('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x9908('0x6'))('rpc');var config=require(_0x9908('0x7'));var jayson=require(_0x9908('0x8'));var client=jayson[_0x9908('0x9')][_0x9908('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x353ca4,_0x112929,_0x2c91a5){return new BPromise(function(_0x43984e,_0x2ab98d){return client[_0x9908('0xb')](_0x353ca4,_0x2c91a5)[_0x9908('0xc')](function(_0x3ea21e){logger['info'](_0x9908('0xd'),_0x112929,_0x9908('0xe'));logger[_0x9908('0xf')](_0x9908('0x10'),_0x112929,_0x9908('0xe'),JSON[_0x9908('0x11')](_0x3ea21e));if(_0x3ea21e[_0x9908('0x12')]){if(_0x3ea21e[_0x9908('0x12')][_0x9908('0x13')]===0x1f4){logger['error'](_0x9908('0xd'),_0x112929,_0x3ea21e[_0x9908('0x12')][_0x9908('0x14')]);return _0x2ab98d(_0x3ea21e[_0x9908('0x12')][_0x9908('0x14')]);}logger[_0x9908('0x12')](_0x9908('0xd'),_0x112929,_0x3ea21e[_0x9908('0x12')]['message']);return _0x43984e(_0x3ea21e['error'][_0x9908('0x14')]);}else{logger[_0x9908('0x15')]('WhatsappTransferReport,\x20%s,\x20%s',_0x112929,_0x9908('0xe'));_0x43984e(_0x3ea21e[_0x9908('0x16')][_0x9908('0x14')]);}})['catch'](function(_0x4ef82d){logger['error'](_0x9908('0xd'),_0x112929,_0x4ef82d);_0x2ab98d(_0x4ef82d);});});}
\ No newline at end of file
+var _0x78a2=['../../config/logger','rpc','../../config/environment','client','http','request','then','info','WhatsappTransferReport,\x20%s,\x20%s','request\x20sent','debug','WhatsappTransferReport,\x20%s,\x20%s,\x20%s','error','code','message','result','lodash','util','moment','bluebird','../../config/utils'];(function(_0x2f2e3f,_0x902203){var _0x2bb971=function(_0x584cb9){while(--_0x584cb9){_0x2f2e3f['push'](_0x2f2e3f['shift']());}};_0x2bb971(++_0x902203);}(_0x78a2,0x8e));var _0x278a=function(_0x3c789c,_0x3515b1){_0x3c789c=_0x3c789c-0x0;var _0x3be991=_0x78a2[_0x3c789c];return _0x3be991;};'use strict';var _=require(_0x278a('0x0'));var util=require(_0x278a('0x1'));var moment=require(_0x278a('0x2'));var BPromise=require(_0x278a('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require('ioredis');var db=require('../../mysqldb')['db'];var utils=require(_0x278a('0x4'));var logger=require(_0x278a('0x5'))(_0x278a('0x6'));var config=require(_0x278a('0x7'));var jayson=require('jayson/promise');var client=jayson[_0x278a('0x8')][_0x278a('0x9')]({'port':0x232a});function respondWithRpcPromise(_0x21512e,_0x2848d1,_0x2d246b){return new BPromise(function(_0x266d38,_0x293fc9){return client[_0x278a('0xa')](_0x21512e,_0x2d246b)[_0x278a('0xb')](function(_0x5b4eb1){logger[_0x278a('0xc')](_0x278a('0xd'),_0x2848d1,_0x278a('0xe'));logger[_0x278a('0xf')](_0x278a('0x10'),_0x2848d1,'request\x20sent',JSON['stringify'](_0x5b4eb1));if(_0x5b4eb1['error']){if(_0x5b4eb1[_0x278a('0x11')][_0x278a('0x12')]===0x1f4){logger[_0x278a('0x11')](_0x278a('0xd'),_0x2848d1,_0x5b4eb1['error'][_0x278a('0x13')]);return _0x293fc9(_0x5b4eb1[_0x278a('0x11')]['message']);}logger[_0x278a('0x11')](_0x278a('0xd'),_0x2848d1,_0x5b4eb1[_0x278a('0x11')]['message']);return _0x266d38(_0x5b4eb1[_0x278a('0x11')][_0x278a('0x13')]);}else{logger[_0x278a('0xc')](_0x278a('0xd'),_0x2848d1,'request\x20sent');_0x266d38(_0x5b4eb1[_0x278a('0x14')]['message']);}})['catch'](function(_0x396a65){logger[_0x278a('0x11')](_0x278a('0xd'),_0x2848d1,_0x396a65);_0x293fc9(_0x396a65);});});}
\ No newline at end of file
index d403a2b..2774920 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4a25=['./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','sequelize','sync','then','listen','info','start','filter','exitCode','number','length','\x20processes\x20failed\x20at\x20startup:\x20','map','name','join','Offline\x20apps:','status','None','App\x20Ready!','catch','log','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./config/seedDB','./rpc','./config/environment','./config/logger','app','./config/pm2/config','./config/schedule'];(function(_0xffa198,_0x5a8940){var _0x1e4b50=function(_0x1f1c43){while(--_0x1f1c43){_0xffa198['push'](_0xffa198['shift']());}};_0x1e4b50(++_0x5a8940);}(_0x4a25,0x1d4));var _0x54a2=function(_0x1635fe,_0x5f1d9f){_0x1635fe=_0x1635fe-0x0;var _0x3c512a=_0x4a25[_0x1635fe];return _0x3c512a;};'use strict';var _=require(_0x54a2('0x0'));var db=require('./mysqldb')['db'];var seedDb=require(_0x54a2('0x1'));var checkLicense=require('./config/license');var rpc=require(_0x54a2('0x2'));var config=require(_0x54a2('0x3'));var logger=require(_0x54a2('0x4'))(_0x54a2('0x5'));var pm2=require('./config/pm2');var pm2Config=require(_0x54a2('0x6'));var schedule=require(_0x54a2('0x7'));var chat=require(_0x54a2('0x8'));var whatsapp=require(_0x54a2('0x9'));var transcribe=require(_0x54a2('0xa'));var provider=require('./config/schedule/cloud-provider');function main(){return db[_0x54a2('0xb')][_0x54a2('0xc')]()[_0x54a2('0xd')](function(){if(config['seedDB']){return seedDb['default']();}})[_0x54a2('0xd')](function(){return checkLicense['default']();})[_0x54a2('0xd')](function(){return rpc[_0x54a2('0xe')]();})['then'](function(_0x38a9f5){logger[_0x54a2('0xf')](_0x38a9f5);return chat['start']();})[_0x54a2('0xd')](function(){return whatsapp[_0x54a2('0x10')]();})['then'](function(){return schedule[_0x54a2('0x10')]();})[_0x54a2('0xd')](function(){return transcribe[_0x54a2('0x10')]();})[_0x54a2('0xd')](function(){return provider[_0x54a2('0x10')]();})[_0x54a2('0xd')](function(_0x191ee0){logger[_0x54a2('0xf')](_0x191ee0);return pm2['start'](pm2Config);})[_0x54a2('0xd')](function(_0x5e2e9a){var _0x339d74=_0x5e2e9a[_0x54a2('0x11')](function(_0xb61800){return typeof _0xb61800[_0x54a2('0x12')]===_0x54a2('0x13')&&_0xb61800[_0x54a2('0x12')]>=0x0;});if(_0x339d74[_0x54a2('0x14')]>0x0){throw new Error(_0x339d74[_0x54a2('0x14')]+_0x54a2('0x15')+_[_0x54a2('0x16')](_0x339d74,function(_0x528ca9){return'\x22'+_0x528ca9['pm2_env']['name']+'\x22';}));}logger[_0x54a2('0xf')]('Online\x20apps:',_['map'](_['filter'](_0x5e2e9a,{'status':'online'}),_0x54a2('0x17'))[_0x54a2('0x18')]());logger[_0x54a2('0xf')](_0x54a2('0x19'),_[_0x54a2('0x16')](_[_0x54a2('0x11')](_0x5e2e9a,function(_0x466a5b){return _0x466a5b[_0x54a2('0x1a')]!=='online';}),_0x54a2('0x17'))[_0x54a2('0x18')]()||_0x54a2('0x1b'));console['log'](_0x54a2('0x1c'));})[_0x54a2('0x1d')](function(_0x57c95b){console[_0x54a2('0x1e')](_0x54a2('0x1f'),_0x57c95b);logger['error'](_0x54a2('0x20'),_0x57c95b);process[_0x54a2('0x21')](0x1);});}main();
\ No newline at end of file
+var _0x46e1=['info','start','filter','exitCode','number','length','map','pm2_env','name','Online\x20apps:','online','join','Offline\x20apps:','status','Server\x20failed\x20to\x20start\x20due\x20to\x20error!','Server\x20failed\x20to\x20start\x20due\x20to\x20error:\x20%s','exit','lodash','./mysqldb','./config/seedDB','./config/license','./rpc','./config/environment','./config/logger','app','./config/pm2','./config/pm2/config','./config/schedule/chat','./config/schedule/whatsapp','./config/schedule/transcribe','./config/schedule/cloud-provider','sequelize','sync','then','default','listen'];(function(_0x344796,_0x126296){var _0x1b7ce4=function(_0x3b1275){while(--_0x3b1275){_0x344796['push'](_0x344796['shift']());}};_0x1b7ce4(++_0x126296);}(_0x46e1,0x155));var _0x146e=function(_0x11caa2,_0x47c75a){_0x11caa2=_0x11caa2-0x0;var _0x453f97=_0x46e1[_0x11caa2];return _0x453f97;};'use strict';var _=require(_0x146e('0x0'));var db=require(_0x146e('0x1'))['db'];var seedDb=require(_0x146e('0x2'));var checkLicense=require(_0x146e('0x3'));var rpc=require(_0x146e('0x4'));var config=require(_0x146e('0x5'));var logger=require(_0x146e('0x6'))(_0x146e('0x7'));var pm2=require(_0x146e('0x8'));var pm2Config=require(_0x146e('0x9'));var schedule=require('./config/schedule');var chat=require(_0x146e('0xa'));var whatsapp=require(_0x146e('0xb'));var transcribe=require(_0x146e('0xc'));var provider=require(_0x146e('0xd'));function main(){return db[_0x146e('0xe')][_0x146e('0xf')]()[_0x146e('0x10')](function(){if(config['seedDB']){return seedDb[_0x146e('0x11')]();}})['then'](function(){return checkLicense[_0x146e('0x11')]();})[_0x146e('0x10')](function(){return rpc[_0x146e('0x12')]();})[_0x146e('0x10')](function(_0x15cea1){logger[_0x146e('0x13')](_0x15cea1);return chat['start']();})['then'](function(){return whatsapp[_0x146e('0x14')]();})[_0x146e('0x10')](function(){return schedule[_0x146e('0x14')]();})[_0x146e('0x10')](function(){return transcribe[_0x146e('0x14')]();})[_0x146e('0x10')](function(){return provider[_0x146e('0x14')]();})[_0x146e('0x10')](function(_0x524209){logger['info'](_0x524209);return pm2[_0x146e('0x14')](pm2Config);})[_0x146e('0x10')](function(_0x18e9bc){var _0x547342=_0x18e9bc[_0x146e('0x15')](function(_0x21c564){return typeof _0x21c564[_0x146e('0x16')]===_0x146e('0x17')&&_0x21c564[_0x146e('0x16')]>=0x0;});if(_0x547342[_0x146e('0x18')]>0x0){throw new Error(_0x547342[_0x146e('0x18')]+'\x20processes\x20failed\x20at\x20startup:\x20'+_[_0x146e('0x19')](_0x547342,function(_0x1a8a20){return'\x22'+_0x1a8a20[_0x146e('0x1a')][_0x146e('0x1b')]+'\x22';}));}logger[_0x146e('0x13')](_0x146e('0x1c'),_[_0x146e('0x19')](_['filter'](_0x18e9bc,{'status':_0x146e('0x1d')}),'name')[_0x146e('0x1e')]());logger[_0x146e('0x13')](_0x146e('0x1f'),_['map'](_[_0x146e('0x15')](_0x18e9bc,function(_0x559f54){return _0x559f54[_0x146e('0x20')]!=='online';}),_0x146e('0x1b'))[_0x146e('0x1e')]()||'None');console['log']('App\x20Ready!');})['catch'](function(_0x4d0ee3){console['log'](_0x146e('0x21'),_0x4d0ee3);logger['error'](_0x146e('0x22'),_0x4d0ee3);process[_0x146e('0x23')](0x1);});}main();
\ No newline at end of file
index daf16f5..3e8224b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9c44=['showWebBar','lastLoginAt','crudPermissions','allowmessenger','alias','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableRecording','phoneBarEnableDtmfTone','phoneBarEnableSettings','phoneBarExpires','phoneBarRemoteControl','phoneBarRemoteControlPort','hotdesk','interface','userProfileId','settingsEnabled','wssPort','downloadAttachments','ignorePauseForPreviewCalls','selectRecallMeCampaign','chatAutoanswerDelay','emailAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','openchannelAutoanswerDelay','faxAutoanswer','faxAutoanswerDelay','whatsappAutoanswer','whatsappAutoanswerDelay','user','ChatInteraction','findOne','params','then','status','disposition','unmanaged','json','Unmanaged.','catch','isAuthenticated','headers','authorization','startsWith','Basic','authenticate','pass','Wrong\x20credentials.','Bearer','Unknown\x20authorization\x20format','apikey','getUuid','User','find','sub','Setting','allowedLoginAttempts','isEqual','apiKeyNonce','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','Invalid\x20API\x20access\x20key','blocked','blockDuration','blockedAt','add','minutes','use','User\x20not\x20found.','User\x20object\x20not\x20found.','canUpdate','getLicense','update','Forbidden','isWebrtcLicence','webrtc','isMiddleware','setTokenCookie','cookie','motion.token','redirect','/dashboards/general','send','retrieveApiKey','isNil','apiKeyIat','generateApiKey','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','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~!@#$%^&-_=+[{]}.','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','updatePasswordsHistory','length','unshift','encryptString','sign','options','promisify','toString','hex','floor','now','HS512','../../config/license/hardware','../../config/license/util','../encryptor','lodash','jsonwebtoken','express-jwt','crypto','util','moment','secrets','session','role','name','internal','email','userpic','voicePause','chatPause','faxPause','smsPause'];(function(_0x1196b0,_0x36c47a){var _0x111c52=function(_0x5604c7){while(--_0x5604c7){_0x1196b0['push'](_0x1196b0['shift']());}};_0x111c52(++_0x36c47a);}(_0x9c44,0x178));var _0x49c4=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0x9c44[_0x422905];return _0x33dc6c;};'use strict';var db=require('../../mysqldb')['db'];var config=require('../../config/environment');var hardwareConf=require(_0x49c4('0x0'));var licenseUtil=require(_0x49c4('0x1'));var encryptor=require(_0x49c4('0x2'));var _=require(_0x49c4('0x3'));var jwt=require(_0x49c4('0x4'));var expressJwt=require(_0x49c4('0x5'));var compose=require('composable-middleware');var basicAuth=require('basic-auth');var crypto=require(_0x49c4('0x6'));var BPromise=require('bluebird');var util=require(_0x49c4('0x7'));var moment=require(_0x49c4('0x8'));var validateJwt=expressJwt({'secret':config[_0x49c4('0x9')][_0x49c4('0xa')]});var userAttributes=['id',_0x49c4('0xb'),'fullname',_0x49c4('0xc'),_0x49c4('0xd'),_0x49c4('0xe'),_0x49c4('0xf'),'permissions','md5secret',_0x49c4('0x10'),_0x49c4('0x11'),'mailPause',_0x49c4('0x12'),_0x49c4('0x13'),'openchannelPause','pauseType',_0x49c4('0x14'),_0x49c4('0x15'),'lastPauseAt',_0x49c4('0x16'),_0x49c4('0x17'),'passwordResetAt',_0x49c4('0x18'),_0x49c4('0x19'),_0x49c4('0x1a'),_0x49c4('0x1b'),_0x49c4('0x1c'),_0x49c4('0x1d'),_0x49c4('0x1e'),_0x49c4('0x1f'),'phoneBarPrefixRequired',_0x49c4('0x20'),_0x49c4('0x21'),_0x49c4('0x22'),_0x49c4('0x23'),_0x49c4('0x24'),'privacyEnabled',_0x49c4('0x25'),_0x49c4('0x26'),'downloadVoiceRecordings','downloadOmnichannelInteractions',_0x49c4('0x27'),_0x49c4('0x28'),_0x49c4('0x29'),'chatAutoanswer',_0x49c4('0x2a'),'emailAutoanswer',_0x49c4('0x2b'),_0x49c4('0x2c'),_0x49c4('0x2d'),_0x49c4('0x2e'),_0x49c4('0x2f'),_0x49c4('0x30'),_0x49c4('0x31'),_0x49c4('0x32'),_0x49c4('0x33')];exports['isChatInteractionAuthorized']=function(){return this['isAuthenticated'](!![])['use'](function(_0x1c99b1,_0x4f0b62,_0x592bb8){if(_0x1c99b1[_0x49c4('0x34')]){_0x592bb8();}else{return db[_0x49c4('0x35')][_0x49c4('0x36')]({'where':{'id':_0x1c99b1[_0x49c4('0x37')]['id']},'attributes':['id','closed','disposition'],'raw':!![]})[_0x49c4('0x38')](function(_0x9cb797){if(_0x9cb797&&_0x9cb797['closed']){return _0x4f0b62[_0x49c4('0x39')](_0x9cb797[_0x49c4('0x3a')]===_0x49c4('0x3b')?0x195:0x193)[_0x49c4('0x3c')]({'message':_0x9cb797['disposition']==='unmanaged'?_0x49c4('0x3d'):'Forbidden.'});}else{_0x592bb8();}})[_0x49c4('0x3e')](function(_0x3852b2){_0x592bb8(_0x3852b2);});}});};exports[_0x49c4('0x3f')]=function isAuthenticated(_0x372a47){return compose()['use'](function(_0x889909,_0x2b2793,_0x46e04d){var _0x4f28a2;if(_0x889909[_0x49c4('0x40')][_0x49c4('0x41')]){if(_[_0x49c4('0x42')](_0x889909[_0x49c4('0x40')][_0x49c4('0x41')],_0x49c4('0x43'))){var _0x46f7ea=basicAuth(_0x889909);db['User']['find']({'where':{'name':_0x46f7ea['name']}})[_0x49c4('0x38')](function(_0x7ee704){if(!_0x7ee704||!_0x7ee704[_0x49c4('0x44')](_0x46f7ea[_0x49c4('0x45')])){return _0x2b2793[_0x49c4('0x39')](0x191)['json']({'message':_0x49c4('0x46')});}_0x889909[_0x49c4('0x34')]={'id':_0x7ee704['id']};_0x46e04d();})[_0x49c4('0x3e')](function(_0x24bba9){_0x46e04d(_0x24bba9);});}else if(_['startsWith'](_0x889909['headers'][_0x49c4('0x41')],_0x49c4('0x47'))){validateJwt(_0x889909,_0x2b2793,_0x46e04d);}else{if(_0x372a47){_0x46e04d();}else{return _0x2b2793[_0x49c4('0x39')](0x193)[_0x49c4('0x3c')]({'message':_0x49c4('0x48')});}}}else if(_0x889909['query'][_0x49c4('0x49')]){try{var _0x84c621={'audience':hardwareConf[_0x49c4('0x4a')](),'issuer':hardwareConf['getUuid']()};verifyJwt(_0x889909['query'][_0x49c4('0x49')],_0x84c621)[_0x49c4('0x38')](function(_0x3bec0a){return db[_0x49c4('0x4b')][_0x49c4('0x4c')]({'where':{'id':_0x3bec0a[_0x49c4('0x4d')]}})[_0x49c4('0x38')](function(_0x27ef5f){_0x4f28a2=_0x27ef5f;return db[_0x49c4('0x4e')]['findOne']({'where':{'id':0x1},'attributes':[_0x49c4('0x4f'),'blockDuration'],'raw':!![]});})[_0x49c4('0x38')](function(_0x349791){if(!_0x4f28a2||!_[_0x49c4('0x50')](_0x4f28a2[_0x49c4('0x51')],_0x3bec0a['nonce'])){return _0x2b2793[_0x49c4('0x39')](0x191)[_0x49c4('0x3c')]({'message':_0x49c4('0x52')});}if(_0x4f28a2['disabled']){return _0x2b2793[_0x49c4('0x39')](0x191)[_0x49c4('0x3c')]({'message':_0x49c4('0x53')});}if(_0x4f28a2[_0x49c4('0x54')]){if(_0x349791[_0x49c4('0x55')]>0x0){if(moment(_0x4f28a2[_0x49c4('0x56')])[_0x49c4('0x57')](_0x349791[_0x49c4('0x55')],_0x49c4('0x58'))>moment()){return _0x2b2793[_0x49c4('0x39')](0x191)[_0x49c4('0x3c')]({'message':'Invalid\x20API\x20access\x20key'});}}else{return _0x2b2793[_0x49c4('0x39')](0x191)[_0x49c4('0x3c')]({'message':_0x49c4('0x53')});}}_0x889909[_0x49c4('0x34')]={'id':_0x4f28a2['id']};_0x46e04d();});})[_0x49c4('0x3e')](function(){return _0x2b2793[_0x49c4('0x39')](0x191)[_0x49c4('0x3c')]({'message':_0x49c4('0x53')});});}catch(_0x248c0a){_0x46e04d(_0x248c0a);}}else if(_0x372a47){_0x46e04d();}else{return _0x2b2793[_0x49c4('0x39')](0x193)[_0x49c4('0x3c')]({'message':_0x49c4('0x48')});}})[_0x49c4('0x59')](function(_0x4e38bc,_0x212366,_0x49829e){if(_0x4e38bc[_0x49c4('0x34')]){db[_0x49c4('0x4b')][_0x49c4('0x4c')]({'where':{'id':_0x4e38bc[_0x49c4('0x34')]['id']},'attributes':userAttributes})[_0x49c4('0x38')](function(_0x281b83){if(!_0x281b83){return _0x212366['status'](0x194)['json']({'message':_0x49c4('0x5a')});}_0x4e38bc[_0x49c4('0x34')]=_0x281b83;_0x49829e();})[_0x49c4('0x3e')](function(_0x117151){_0x49829e(_0x117151);});}else if(_0x372a47){_0x49829e();}else{return _0x212366['status'](0x194)[_0x49c4('0x3c')]({'message':_0x49c4('0x5b')});}});};exports[_0x49c4('0x5c')]=function canUpdate(){return compose()[_0x49c4('0x59')](function(_0x81a674,_0x3bde49,_0x1a9593){return licenseUtil[_0x49c4('0x5d')]()[_0x49c4('0x38')](function(_0x5640d3){if(_0x5640d3[_0x49c4('0x5e')]){_0x1a9593();}else{return _0x3bde49['status'](0x193)[_0x49c4('0x3c')]({'message':_0x49c4('0x5f')});}})[_0x49c4('0x3e')](function(_0x258abe){_0x1a9593(_0x258abe);});});};exports[_0x49c4('0x60')]=function isWebrtcLicence(){return compose()['use'](function(_0x592e8e,_0x15b674,_0x384862){return licenseUtil[_0x49c4('0x5d')]()[_0x49c4('0x38')](function(_0x5d4790){if(_0x5d4790[_0x49c4('0x61')]){_0x384862();}else{return _0x15b674['status'](0x193)[_0x49c4('0x3c')]({'message':'Forbidden'});}})[_0x49c4('0x3e')](function(_0x906d3){_0x384862(_0x906d3);});});};exports[_0x49c4('0x62')]=function(_0x27adfe,_0x2d8087,_0x30bea5){_0x27adfe[_0x49c4('0x62')]=!![];return _0x30bea5();};exports['signToken']=function signToken(_0x3b731f){return signJwt(_0x3b731f);};exports[_0x49c4('0x63')]=function(_0x4a5c34,_0x1e1ac4){if(!_0x4a5c34[_0x49c4('0x34')]){return _0x1e1ac4[_0x49c4('0x39')](0x194)[_0x49c4('0x3c')]({'message':'It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.'});}var _0x5d8bf0={'payload':{'id':_0x4a5c34[_0x49c4('0x34')]['id'],'role':_0x4a5c34['user'][_0x49c4('0xb')]},'options':{'expiresIn':0x15180}};return signJwt(_0x5d8bf0)[_0x49c4('0x38')](function(_0x3811b2){_0x1e1ac4[_0x49c4('0x64')](_0x49c4('0x65'),_0x3811b2);_0x1e1ac4[_0x49c4('0x66')](_0x49c4('0x67'));})['catch'](function(_0x1f26c2){return _0x1e1ac4[_0x49c4('0x39')](0x1f4)[_0x49c4('0x68')](_0x1f26c2);});};exports[_0x49c4('0x69')]=function(_0x17ef75){if(_[_0x49c4('0x6a')](_0x17ef75[_0x49c4('0x51')])||_[_0x49c4('0x6a')](_0x17ef75[_0x49c4('0x6b')])){return null;}else{return createJwt(_0x17ef75);}};exports[_0x49c4('0x6c')]=function(_0x5b822f){_0x5b822f['apiKeyNonce']=generateNonce();_0x5b822f[_0x49c4('0x6b')]=generateIssuedAt();return createJwt(_0x5b822f);};exports[_0x49c4('0x6d')]=function(_0x527e74,_0x59a8bc){var _0x77163d=_0x527e74['query']['apikey'];if(_0x77163d){var _0x3208c2={'nonce':_0x59a8bc[_0x49c4('0x51')],'iat':_0x59a8bc[_0x49c4('0x6b')],'audience':hardwareConf[_0x49c4('0x4a')](),'issuer':hardwareConf[_0x49c4('0x4a')]()};return verifyJwt(_0x77163d,_0x3208c2)[_0x49c4('0x38')](function(){return generateApiKey(_0x59a8bc);});}else{throw{'message':_0x49c4('0x6e')};}};exports['validatePasswordPattern']=function(_0x859dde){var _0xcc6a2b=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0xcc6a2b[_0x49c4('0x6f')](_0x859dde))throw new db[(_0x49c4('0x70'))][(_0x49c4('0x71'))](_0x49c4('0x72'));return;};exports['validatePasswordHistory']=function(_0x5c7ddd,_0x1ef0c1,_0x155c43){var _0x2a6308=encryptor[_0x49c4('0x73')](_0x1ef0c1)[_0x49c4('0x74')](',');for(var _0x6b2592=0x0;_0x6b2592<_0x155c43;_0x6b2592++){if(!_0x2a6308[_0x6b2592])break;if(_0x5c7ddd[_0x49c4('0x75')]()===_0x2a6308[_0x6b2592]['toLowerCase']()){var _0x45d715=util[_0x49c4('0x76')]('The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.',_0x155c43);if(_0x155c43===0x1){_0x45d715=_0x49c4('0x77');}throw new db['Sequelize'][(_0x49c4('0x71'))](_0x45d715);}}return;};exports[_0x49c4('0x78')]=function(_0x9eaa84,_0x2fe89a){var _0x845f7e=_0x2fe89a?encryptor[_0x49c4('0x73')](_0x2fe89a)[_0x49c4('0x74')](','):[];if(_0x845f7e[_0x49c4('0x79')]===0x5){_0x845f7e['splice'](-0x1,0x1);}_0x845f7e[_0x49c4('0x7a')](_0x9eaa84);return encryptor[_0x49c4('0x7b')](_0x845f7e['join'](','));};function signJwt(_0x10dec7){var _0x299e74=BPromise['promisify'](jwt[_0x49c4('0x7c')],{'context':jwt});var _0x42e0e6=_0x10dec7['secret']||config['secrets']['session'];return new BPromise(function(_0x513879,_0xc43386){_0x299e74(_0x10dec7['payload'],_0x42e0e6,_0x10dec7[_0x49c4('0x7d')])[_0x49c4('0x38')](function(_0x515240){_0x513879(_0x515240);})[_0x49c4('0x3e')](function(_0xdb2b33){_0xc43386(_0xdb2b33);});});}function verifyJwt(_0x5ac9f0,_0x34272f,_0x3dcf4c){var _0x167e84=BPromise[_0x49c4('0x7e')](jwt['verify'],{'context':jwt});var _0x431921=_0x3dcf4c||config[_0x49c4('0x9')][_0x49c4('0xa')];return new BPromise(function(_0x20e97d,_0x5d3375){_0x167e84(_0x5ac9f0,_0x431921,_0x34272f)[_0x49c4('0x38')](function(_0x4a93bc){_0x20e97d(_0x4a93bc);})['catch'](function(_0x58259d){_0x5d3375(_0x58259d);});});}function generateNonce(){return crypto['randomBytes'](0x10)[_0x49c4('0x7f')](_0x49c4('0x80'));}function generateIssuedAt(){return Math[_0x49c4('0x81')](Date[_0x49c4('0x82')]()/0x3e8)['toString']();}function createJwt(_0x4daa6d){var _0x340523={'payload':{'iat':_0x4daa6d[_0x49c4('0x6b')],'nonce':_0x4daa6d[_0x49c4('0x51')]},'options':{'algorithm':_0x49c4('0x83'),'subject':_0x4daa6d['id'][_0x49c4('0x7f')](),'issuer':hardwareConf[_0x49c4('0x4a')](),'audience':hardwareConf[_0x49c4('0x4a')]()}};return signJwt(_0x340523)[_0x49c4('0x38')](function(_0x4d49e0){return{'iat':_0x4daa6d[_0x49c4('0x6b')],'nonce':_0x4daa6d['apiKeyNonce'],'token':_0x4d49e0};});}
\ No newline at end of file
+var _0x3e74=['util','moment','session','role','fullname','name','internal','userpic','voicePause','chatPause','faxPause','openchannelPause','pauseType','lastLoginAt','lastPauseAt','crudPermissions','allowmessenger','phoneBarAutoAnswer','phoneBarAutoAnswerDelay','phoneBarDnd','phoneBarEnableSettings','phoneBarExpires','phoneBarPrefixRequired','phoneBarRemoteControl','interface','userProfileId','privacyEnabled','downloadVoiceRecordings','downloadOmnichannelInteractions','downloadAttachments','ignorePauseForPreviewCalls','selectRecallMeCampaign','chatAutoanswer','chatAutoanswerDelay','emailAutoanswer','emailAutoanswerDelay','smsAutoanswer','smsAutoanswerDelay','openchannelAutoanswer','faxAutoanswer','faxAutoanswerDelay','whatsappAutoanswerDelay','isChatInteractionAuthorized','isAuthenticated','use','user','params','closed','then','disposition','unmanaged','json','Forbidden.','headers','authorization','startsWith','Basic','User','find','authenticate','pass','status','Wrong\x20credentials.','catch','Unknown\x20authorization\x20format','query','apikey','getUuid','sub','Setting','findOne','allowedLoginAttempts','blockDuration','API\x20access\x20key\x20is\x20not\x20valid\x20anymore','disabled','Invalid\x20API\x20access\x20key','blocked','blockedAt','add','minutes','update','Forbidden','isWebrtcLicence','webrtc','isMiddleware','It\x20looks\x20like\x20you\x20aren\x27t\x20logged\x20in,\x20please\x20try\x20again.','cookie','motion.token','redirect','/dashboards/general','send','retrieveApiKey','apiKeyNonce','isNil','generateApiKey','apiKeyIat','regenerateApiKey','Please\x20use\x20the\x20previous\x20API\x20access\x20key\x20to\x20generate\x20a\x20new\x20one','validatePasswordPattern','Sequelize','ValidationError','validatePasswordHistory','decryptString','split','toLowerCase','format','The\x20password\x20must\x20be\x20different\x20from\x20the\x20previous\x20%d\x20passwords.\x20Please\x20choose\x20another\x20one.','The\x20password\x20must\x20be\x20different\x20from\x20the\x20last\x20one.\x20Please\x20choose\x20another\x20one.','length','join','promisify','secret','secrets','payload','options','randomBytes','toString','floor','now','../../mysqldb','../../config/license/hardware','../../config/license/util','../encryptor','express-jwt','basic-auth','crypto','bluebird'];(function(_0x5b8d6b,_0x9b7fdf){var _0x39d06f=function(_0x491124){while(--_0x491124){_0x5b8d6b['push'](_0x5b8d6b['shift']());}};_0x39d06f(++_0x9b7fdf);}(_0x3e74,0x175));var _0x43e7=function(_0xfb105f,_0x2730cd){_0xfb105f=_0xfb105f-0x0;var _0x6a1e7e=_0x3e74[_0xfb105f];return _0x6a1e7e;};'use strict';var db=require(_0x43e7('0x0'))['db'];var config=require('../../config/environment');var hardwareConf=require(_0x43e7('0x1'));var licenseUtil=require(_0x43e7('0x2'));var encryptor=require(_0x43e7('0x3'));var _=require('lodash');var jwt=require('jsonwebtoken');var expressJwt=require(_0x43e7('0x4'));var compose=require('composable-middleware');var basicAuth=require(_0x43e7('0x5'));var crypto=require(_0x43e7('0x6'));var BPromise=require(_0x43e7('0x7'));var util=require(_0x43e7('0x8'));var moment=require(_0x43e7('0x9'));var validateJwt=expressJwt({'secret':config['secrets'][_0x43e7('0xa')]});var userAttributes=['id',_0x43e7('0xb'),_0x43e7('0xc'),_0x43e7('0xd'),_0x43e7('0xe'),'email',_0x43e7('0xf'),'permissions','md5secret',_0x43e7('0x10'),_0x43e7('0x11'),'mailPause',_0x43e7('0x12'),'smsPause',_0x43e7('0x13'),_0x43e7('0x14'),'showWebBar',_0x43e7('0x15'),_0x43e7('0x16'),_0x43e7('0x17'),_0x43e7('0x18'),'passwordResetAt','alias',_0x43e7('0x19'),_0x43e7('0x1a'),_0x43e7('0x1b'),'phoneBarEnableRecording','phoneBarEnableDtmfTone',_0x43e7('0x1c'),_0x43e7('0x1d'),_0x43e7('0x1e'),_0x43e7('0x1f'),'phoneBarRemoteControlPort','hotdesk',_0x43e7('0x20'),_0x43e7('0x21'),_0x43e7('0x22'),'settingsEnabled','wssPort',_0x43e7('0x23'),_0x43e7('0x24'),_0x43e7('0x25'),_0x43e7('0x26'),_0x43e7('0x27'),_0x43e7('0x28'),_0x43e7('0x29'),_0x43e7('0x2a'),_0x43e7('0x2b'),_0x43e7('0x2c'),_0x43e7('0x2d'),_0x43e7('0x2e'),'openchannelAutoanswerDelay',_0x43e7('0x2f'),_0x43e7('0x30'),'whatsappAutoanswer',_0x43e7('0x31')];exports[_0x43e7('0x32')]=function(){return this[_0x43e7('0x33')](!![])[_0x43e7('0x34')](function(_0x4077fb,_0x2f4cb4,_0x54a9e7){if(_0x4077fb[_0x43e7('0x35')]){_0x54a9e7();}else{return db['ChatInteraction']['findOne']({'where':{'id':_0x4077fb[_0x43e7('0x36')]['id']},'attributes':['id',_0x43e7('0x37'),'disposition'],'raw':!![]})[_0x43e7('0x38')](function(_0x4ca5cf){if(_0x4ca5cf&&_0x4ca5cf[_0x43e7('0x37')]){return _0x2f4cb4['status'](_0x4ca5cf[_0x43e7('0x39')]===_0x43e7('0x3a')?0x195:0x193)[_0x43e7('0x3b')]({'message':_0x4ca5cf[_0x43e7('0x39')]==='unmanaged'?'Unmanaged.':_0x43e7('0x3c')});}else{_0x54a9e7();}})['catch'](function(_0x2dd5f){_0x54a9e7(_0x2dd5f);});}});};exports[_0x43e7('0x33')]=function isAuthenticated(_0x3565cf){return compose()[_0x43e7('0x34')](function(_0x5087d7,_0x33a1a5,_0x4690a6){var _0x45b675;if(_0x5087d7[_0x43e7('0x3d')][_0x43e7('0x3e')]){if(_[_0x43e7('0x3f')](_0x5087d7[_0x43e7('0x3d')][_0x43e7('0x3e')],_0x43e7('0x40'))){var _0x35dbcd=basicAuth(_0x5087d7);db[_0x43e7('0x41')][_0x43e7('0x42')]({'where':{'name':_0x35dbcd[_0x43e7('0xd')]}})[_0x43e7('0x38')](function(_0x4bdb17){if(!_0x4bdb17||!_0x4bdb17[_0x43e7('0x43')](_0x35dbcd[_0x43e7('0x44')])){return _0x33a1a5[_0x43e7('0x45')](0x191)[_0x43e7('0x3b')]({'message':_0x43e7('0x46')});}_0x5087d7['user']={'id':_0x4bdb17['id']};_0x4690a6();})[_0x43e7('0x47')](function(_0x49b83d){_0x4690a6(_0x49b83d);});}else if(_[_0x43e7('0x3f')](_0x5087d7[_0x43e7('0x3d')]['authorization'],'Bearer')){validateJwt(_0x5087d7,_0x33a1a5,_0x4690a6);}else{if(_0x3565cf){_0x4690a6();}else{return _0x33a1a5['status'](0x193)[_0x43e7('0x3b')]({'message':_0x43e7('0x48')});}}}else if(_0x5087d7[_0x43e7('0x49')][_0x43e7('0x4a')]){try{var _0x108313={'audience':hardwareConf[_0x43e7('0x4b')](),'issuer':hardwareConf['getUuid']()};verifyJwt(_0x5087d7['query']['apikey'],_0x108313)['then'](function(_0x4e8e86){return db['User']['find']({'where':{'id':_0x4e8e86[_0x43e7('0x4c')]}})['then'](function(_0x2b4bfd){_0x45b675=_0x2b4bfd;return db[_0x43e7('0x4d')][_0x43e7('0x4e')]({'where':{'id':0x1},'attributes':[_0x43e7('0x4f'),_0x43e7('0x50')],'raw':!![]});})[_0x43e7('0x38')](function(_0x101d45){if(!_0x45b675||!_['isEqual'](_0x45b675['apiKeyNonce'],_0x4e8e86['nonce'])){return _0x33a1a5[_0x43e7('0x45')](0x191)[_0x43e7('0x3b')]({'message':_0x43e7('0x51')});}if(_0x45b675[_0x43e7('0x52')]){return _0x33a1a5[_0x43e7('0x45')](0x191)[_0x43e7('0x3b')]({'message':_0x43e7('0x53')});}if(_0x45b675[_0x43e7('0x54')]){if(_0x101d45['blockDuration']>0x0){if(moment(_0x45b675[_0x43e7('0x55')])[_0x43e7('0x56')](_0x101d45['blockDuration'],_0x43e7('0x57'))>moment()){return _0x33a1a5['status'](0x191)[_0x43e7('0x3b')]({'message':_0x43e7('0x53')});}}else{return _0x33a1a5[_0x43e7('0x45')](0x191)[_0x43e7('0x3b')]({'message':_0x43e7('0x53')});}}_0x5087d7[_0x43e7('0x35')]={'id':_0x45b675['id']};_0x4690a6();});})['catch'](function(){return _0x33a1a5['status'](0x191)[_0x43e7('0x3b')]({'message':_0x43e7('0x53')});});}catch(_0x44b6ae){_0x4690a6(_0x44b6ae);}}else if(_0x3565cf){_0x4690a6();}else{return _0x33a1a5[_0x43e7('0x45')](0x193)[_0x43e7('0x3b')]({'message':'Unknown\x20authorization\x20format'});}})[_0x43e7('0x34')](function(_0x4227c4,_0x575439,_0x3628e0){if(_0x4227c4['user']){db[_0x43e7('0x41')]['find']({'where':{'id':_0x4227c4[_0x43e7('0x35')]['id']},'attributes':userAttributes})[_0x43e7('0x38')](function(_0x3a5807){if(!_0x3a5807){return _0x575439[_0x43e7('0x45')](0x194)['json']({'message':'User\x20not\x20found.'});}_0x4227c4[_0x43e7('0x35')]=_0x3a5807;_0x3628e0();})[_0x43e7('0x47')](function(_0xe979b5){_0x3628e0(_0xe979b5);});}else if(_0x3565cf){_0x3628e0();}else{return _0x575439[_0x43e7('0x45')](0x194)['json']({'message':'User\x20object\x20not\x20found.'});}});};exports['canUpdate']=function canUpdate(){return compose()[_0x43e7('0x34')](function(_0x57f5d0,_0x2ab022,_0x4b3a59){return licenseUtil['getLicense']()[_0x43e7('0x38')](function(_0x5ee1c5){if(_0x5ee1c5[_0x43e7('0x58')]){_0x4b3a59();}else{return _0x2ab022[_0x43e7('0x45')](0x193)[_0x43e7('0x3b')]({'message':_0x43e7('0x59')});}})['catch'](function(_0x91f1e4){_0x4b3a59(_0x91f1e4);});});};exports[_0x43e7('0x5a')]=function isWebrtcLicence(){return compose()[_0x43e7('0x34')](function(_0x1fd277,_0x296dc8,_0x1efe59){return licenseUtil['getLicense']()['then'](function(_0x3bc9de){if(_0x3bc9de[_0x43e7('0x5b')]){_0x1efe59();}else{return _0x296dc8[_0x43e7('0x45')](0x193)['json']({'message':'Forbidden'});}})['catch'](function(_0x292ded){_0x1efe59(_0x292ded);});});};exports[_0x43e7('0x5c')]=function(_0x52b098,_0x351ca2,_0x47686e){_0x52b098[_0x43e7('0x5c')]=!![];return _0x47686e();};exports['signToken']=function signToken(_0x593155){return signJwt(_0x593155);};exports['setTokenCookie']=function(_0x4de644,_0x214e7e){if(!_0x4de644[_0x43e7('0x35')]){return _0x214e7e['status'](0x194)[_0x43e7('0x3b')]({'message':_0x43e7('0x5d')});}var _0x426bcb={'payload':{'id':_0x4de644[_0x43e7('0x35')]['id'],'role':_0x4de644['user'][_0x43e7('0xb')]},'options':{'expiresIn':0x15180}};return signJwt(_0x426bcb)['then'](function(_0x4bebd4){_0x214e7e[_0x43e7('0x5e')](_0x43e7('0x5f'),_0x4bebd4);_0x214e7e[_0x43e7('0x60')](_0x43e7('0x61'));})[_0x43e7('0x47')](function(_0x2351cf){return _0x214e7e[_0x43e7('0x45')](0x1f4)[_0x43e7('0x62')](_0x2351cf);});};exports[_0x43e7('0x63')]=function(_0x2b5515){if(_['isNil'](_0x2b5515[_0x43e7('0x64')])||_[_0x43e7('0x65')](_0x2b5515['apiKeyIat'])){return null;}else{return createJwt(_0x2b5515);}};exports[_0x43e7('0x66')]=function(_0x4e6f6d){_0x4e6f6d[_0x43e7('0x64')]=generateNonce();_0x4e6f6d[_0x43e7('0x67')]=generateIssuedAt();return createJwt(_0x4e6f6d);};exports[_0x43e7('0x68')]=function(_0x1f561f,_0xfe13fa){var _0x5e5556=_0x1f561f['query'][_0x43e7('0x4a')];if(_0x5e5556){var _0x2ab7ee={'nonce':_0xfe13fa[_0x43e7('0x64')],'iat':_0xfe13fa[_0x43e7('0x67')],'audience':hardwareConf[_0x43e7('0x4b')](),'issuer':hardwareConf[_0x43e7('0x4b')]()};return verifyJwt(_0x5e5556,_0x2ab7ee)[_0x43e7('0x38')](function(){return generateApiKey(_0xfe13fa);});}else{throw{'message':_0x43e7('0x69')};}};exports[_0x43e7('0x6a')]=function(_0x24e758){var _0x312306=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(!_0x312306['test'](_0x24e758))throw new db[(_0x43e7('0x6b'))][(_0x43e7('0x6c'))]('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[_0x43e7('0x6d')]=function(_0x220bf2,_0x2d0052,_0x558d54){var _0x5d63c6=encryptor[_0x43e7('0x6e')](_0x2d0052)[_0x43e7('0x6f')](',');for(var _0x4ebdde=0x0;_0x4ebdde<_0x558d54;_0x4ebdde++){if(!_0x5d63c6[_0x4ebdde])break;if(_0x220bf2[_0x43e7('0x70')]()===_0x5d63c6[_0x4ebdde]['toLowerCase']()){var _0x49a6ce=util[_0x43e7('0x71')](_0x43e7('0x72'),_0x558d54);if(_0x558d54===0x1){_0x49a6ce=_0x43e7('0x73');}throw new db[(_0x43e7('0x6b'))][(_0x43e7('0x6c'))](_0x49a6ce);}}return;};exports['updatePasswordsHistory']=function(_0xc3976,_0xdb9fbe){var _0x4d89bd=_0xdb9fbe?encryptor[_0x43e7('0x6e')](_0xdb9fbe)[_0x43e7('0x6f')](','):[];if(_0x4d89bd[_0x43e7('0x74')]===0x5){_0x4d89bd['splice'](-0x1,0x1);}_0x4d89bd['unshift'](_0xc3976);return encryptor['encryptString'](_0x4d89bd[_0x43e7('0x75')](','));};function signJwt(_0x4058ce){var _0x323cf7=BPromise[_0x43e7('0x76')](jwt['sign'],{'context':jwt});var _0x5a50fc=_0x4058ce[_0x43e7('0x77')]||config[_0x43e7('0x78')][_0x43e7('0xa')];return new BPromise(function(_0x5dd349,_0x5ea0db){_0x323cf7(_0x4058ce[_0x43e7('0x79')],_0x5a50fc,_0x4058ce[_0x43e7('0x7a')])[_0x43e7('0x38')](function(_0x2a194d){_0x5dd349(_0x2a194d);})[_0x43e7('0x47')](function(_0xd41e79){_0x5ea0db(_0xd41e79);});});}function verifyJwt(_0x4665db,_0x46748f,_0x406155){var _0x381208=BPromise[_0x43e7('0x76')](jwt['verify'],{'context':jwt});var _0x5f3824=_0x406155||config[_0x43e7('0x78')]['session'];return new BPromise(function(_0x501616,_0x50edb2){_0x381208(_0x4665db,_0x5f3824,_0x46748f)[_0x43e7('0x38')](function(_0xe666b0){_0x501616(_0xe666b0);})['catch'](function(_0xfe5a8d){_0x50edb2(_0xfe5a8d);});});}function generateNonce(){return crypto[_0x43e7('0x7b')](0x10)[_0x43e7('0x7c')]('hex');}function generateIssuedAt(){return Math[_0x43e7('0x7d')](Date[_0x43e7('0x7e')]()/0x3e8)[_0x43e7('0x7c')]();}function createJwt(_0xc9723){var _0x2f43d7={'payload':{'iat':_0xc9723[_0x43e7('0x67')],'nonce':_0xc9723[_0x43e7('0x64')]},'options':{'algorithm':'HS512','subject':_0xc9723['id'][_0x43e7('0x7c')](),'issuer':hardwareConf[_0x43e7('0x4b')](),'audience':hardwareConf[_0x43e7('0x4b')]()}};return signJwt(_0x2f43d7)['then'](function(_0x56b06d){return{'iat':_0xc9723[_0x43e7('0x67')],'nonce':_0xc9723['apiKeyNonce'],'token':_0x56b06d};});}
\ No newline at end of file
index 9954e26..6e3ee58 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x79f9=['app','aes-256-ctr','aes192','encrypt','algorithm','join','error','test','getCiphers','filter','indexOf','hasOwnProperty','encryptFile','createReadStream','createCipher','update','binary','write','end','final','close','unlink','decryptFile','createWriteStream','createDecipher','encryptString','secret','base64','utf8','crypto','bluebird','lodash'];(function(_0x48d189,_0x1cf3aa){var _0x3ce62e=function(_0x5dd206){while(--_0x5dd206){_0x48d189['push'](_0x48d189['shift']());}};_0x3ce62e(++_0x1cf3aa);}(_0x79f9,0x13d));var _0x979f=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x79f9[_0x19950b];return _0x3c6b41;};'use strict';var crypto=require(_0x979f('0x0'));var fs=require('fs');var BPromise=require(_0x979f('0x1'));var _=require(_0x979f('0x2'));var config=require('../../config/environment');var logger=require('../../config/logger')(_0x979f('0x3'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets']['session'],'algorithm':_0x979f('0x4')};const fileOptions={'algorithm':_0x979f('0x5')};if(config[_0x979f('0x6')]&&config[_0x979f('0x6')][_0x979f('0x7')]){var isSupported=isAlgorithmSupported(config[_0x979f('0x6')][_0x979f('0x7')]);if(isSupported){fileOptions['algorithm']=config[_0x979f('0x6')][_0x979f('0x7')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x979f('0x8')](',\x20');logger[_0x979f('0x9')](config[_0x979f('0x6')]['algorithm'],'is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:',supportedAlgorithms);}}function isASupportedCipher(_0x56c3b8){return AES_SUPPORTED_RX[_0x979f('0xa')](_0x56c3b8);}function getSupportedCiphers(){return crypto[_0x979f('0xb')]()[_0x979f('0xc')](isASupportedCipher);}function isAlgorithmSupported(_0x120a05){return getSupportedCiphers()[_0x979f('0xd')](_0x120a05)>-0x1;}function combineOptions(_0x33b53a){var _0x57a286={};for(var _0x13c0c4 in fileOptions){if(fileOptions[_0x979f('0xe')](_0x13c0c4)){_0x57a286[_0x13c0c4]=fileOptions[_0x13c0c4];}}if(_0x33b53a){for(var _0x576372 in _0x33b53a){if(_0x33b53a[_0x979f('0xe')](_0x576372)){_0x57a286[_0x576372]=_0x33b53a[_0x576372];}}}return _0x57a286;}exports[_0x979f('0xf')]=function(_0x2ed479,_0x217ced,_0x3c7da4,_0x10559f){return new BPromise(function(_0x3d2c3b,_0x284028){_0x10559f=combineOptions(_0x10559f);var _0x425a42=new Buffer(_0x3c7da4);var _0x3f85af=fs[_0x979f('0x10')](_0x2ed479);var _0x196493=fs['createWriteStream'](_0x217ced);var _0x3c3e94=crypto[_0x979f('0x11')](_0x10559f['algorithm'],_0x425a42);_0x3f85af['on']('data',function(_0x5b9138){var _0x1b9b01=new Buffer(_0x3c3e94[_0x979f('0x12')](_0x5b9138),_0x979f('0x13'));_0x196493[_0x979f('0x14')](_0x1b9b01);});_0x3f85af['on'](_0x979f('0x15'),function(){try{var _0x4d36a1=new Buffer(_0x3c3e94[_0x979f('0x16')]('binary'),'binary');_0x196493[_0x979f('0x14')](_0x4d36a1);_0x196493[_0x979f('0x15')]();_0x196493['on'](_0x979f('0x17'),function(){return _0x3d2c3b(_0x217ced);});}catch(_0x2b0013){fs[_0x979f('0x18')](_0x217ced);return _0x284028(_0x2b0013);}});});};exports[_0x979f('0x19')]=function(_0x3fc296,_0x2e987e,_0x34e24f,_0x122e97){return new BPromise(function(_0x1a5ca3,_0x49bb05){_0x122e97=combineOptions(_0x122e97);var _0x5d9dc6=new Buffer(_0x34e24f);var _0x26443b=fs[_0x979f('0x10')](_0x3fc296);var _0x147449=fs[_0x979f('0x1a')](_0x2e987e);var _0x2253df=crypto[_0x979f('0x1b')](_0x122e97['algorithm'],_0x5d9dc6);_0x26443b['on']('data',function(_0x2c0585){var _0x6e9d85=new Buffer(_0x2253df[_0x979f('0x12')](_0x2c0585),_0x979f('0x13'));_0x147449['write'](_0x6e9d85);});_0x26443b['on'](_0x979f('0x15'),function(){try{var _0x3008be=new Buffer(_0x2253df[_0x979f('0x16')](_0x979f('0x13')),_0x979f('0x13'));_0x147449[_0x979f('0x14')](_0x3008be);_0x147449[_0x979f('0x15')]();_0x147449['on'](_0x979f('0x17'),function(){return _0x1a5ca3(_0x2e987e);});}catch(_0x46d5f1){fs[_0x979f('0x18')](_0x2e987e);return _0x49bb05(_0x46d5f1);}});});};exports[_0x979f('0x1c')]=function(_0x5ef05b,_0x3a908e,_0x498527){var _0xc39d6c=_0x498527||stringOptions[_0x979f('0x7')];var _0x28c820=_0x3a908e||stringOptions[_0x979f('0x1d')];var _0x4c251c=crypto[_0x979f('0x11')](_0xc39d6c,_0x28c820);var _0x431fe1=_0x4c251c[_0x979f('0x12')](_0x5ef05b,'utf8',_0x979f('0x1e'));_0x431fe1+=_0x4c251c[_0x979f('0x16')](_0x979f('0x1e'));return _0x431fe1;};exports['decryptString']=function(_0xf47dca,_0x25fcb9,_0x4b1d2c){var _0x52728a=_0x4b1d2c||stringOptions[_0x979f('0x7')];var _0x2d5c36=_0x25fcb9||stringOptions[_0x979f('0x1d')];var _0x3d08f2=crypto[_0x979f('0x1b')](_0x52728a,_0x2d5c36);var _0x304eef=_0x3d08f2[_0x979f('0x12')](_0xf47dca,_0x979f('0x1e'),_0x979f('0x1f'));_0x304eef+=_0x3d08f2[_0x979f('0x16')](_0x979f('0x1f'));return _0x304eef;};
\ No newline at end of file
+var _0x26f5=['end','unlink','encryptString','createCipher','base64','secret','createDecipher','utf8','crypto','../../config/environment','app','aes-256-ctr','aes192','encrypt','algorithm','join','is\x20not\x20a\x20supported\x20algorithm.\x20Your\x20system\x20supports\x20the\x20following\x20algorithms:','test','getCiphers','filter','indexOf','hasOwnProperty','createReadStream','data','update','binary','write','final','close','decryptFile','createWriteStream'];(function(_0x488964,_0x22ea0b){var _0x5097e1=function(_0x4cbdf9){while(--_0x4cbdf9){_0x488964['push'](_0x488964['shift']());}};_0x5097e1(++_0x22ea0b);}(_0x26f5,0xe1));var _0x526f=function(_0x552ce7,_0x308028){_0x552ce7=_0x552ce7-0x0;var _0x1413cf=_0x26f5[_0x552ce7];return _0x1413cf;};'use strict';var crypto=require(_0x526f('0x0'));var fs=require('fs');var BPromise=require('bluebird');var _=require('lodash');var config=require(_0x526f('0x1'));var logger=require('../../config/logger')(_0x526f('0x2'));const AES_SUPPORTED_RX=/^aes(-)?\d{3}(-(cbc|cfb|ctr)(1|8)?){0,1}$/;const stringOptions={'secret':config['secrets']['session'],'algorithm':_0x526f('0x3')};const fileOptions={'algorithm':_0x526f('0x4')};if(config['encrypt']&&config[_0x526f('0x5')][_0x526f('0x6')]){var isSupported=isAlgorithmSupported(config[_0x526f('0x5')][_0x526f('0x6')]);if(isSupported){fileOptions['algorithm']=config['encrypt'][_0x526f('0x6')];}else{var supportedAlgorithms=getSupportedCiphers()[_0x526f('0x7')](',\x20');logger['error'](config[_0x526f('0x5')][_0x526f('0x6')],_0x526f('0x8'),supportedAlgorithms);}}function isASupportedCipher(_0x532b85){return AES_SUPPORTED_RX[_0x526f('0x9')](_0x532b85);}function getSupportedCiphers(){return crypto[_0x526f('0xa')]()[_0x526f('0xb')](isASupportedCipher);}function isAlgorithmSupported(_0x4eb582){return getSupportedCiphers()[_0x526f('0xc')](_0x4eb582)>-0x1;}function combineOptions(_0x57bcd5){var _0x3df26b={};for(var _0xc01a78 in fileOptions){if(fileOptions[_0x526f('0xd')](_0xc01a78)){_0x3df26b[_0xc01a78]=fileOptions[_0xc01a78];}}if(_0x57bcd5){for(var _0x58753b in _0x57bcd5){if(_0x57bcd5[_0x526f('0xd')](_0x58753b)){_0x3df26b[_0x58753b]=_0x57bcd5[_0x58753b];}}}return _0x3df26b;}exports['encryptFile']=function(_0x3a202d,_0x2711b0,_0x1b477d,_0x74ef02){return new BPromise(function(_0x484b9c,_0xc9bbed){_0x74ef02=combineOptions(_0x74ef02);var _0x17302f=new Buffer(_0x1b477d);var _0x1a406a=fs[_0x526f('0xe')](_0x3a202d);var _0x402ebb=fs['createWriteStream'](_0x2711b0);var _0x5e4071=crypto['createCipher'](_0x74ef02[_0x526f('0x6')],_0x17302f);_0x1a406a['on'](_0x526f('0xf'),function(_0x9302e5){var _0x404d67=new Buffer(_0x5e4071[_0x526f('0x10')](_0x9302e5),_0x526f('0x11'));_0x402ebb[_0x526f('0x12')](_0x404d67);});_0x1a406a['on']('end',function(){try{var _0x183c4b=new Buffer(_0x5e4071[_0x526f('0x13')]('binary'),_0x526f('0x11'));_0x402ebb[_0x526f('0x12')](_0x183c4b);_0x402ebb['end']();_0x402ebb['on'](_0x526f('0x14'),function(){return _0x484b9c(_0x2711b0);});}catch(_0x19935f){fs['unlink'](_0x2711b0);return _0xc9bbed(_0x19935f);}});});};exports[_0x526f('0x15')]=function(_0x22dbe0,_0x57a9bb,_0x4c19c8,_0x404d9c){return new BPromise(function(_0x23e9f0,_0x501425){_0x404d9c=combineOptions(_0x404d9c);var _0x2d3d73=new Buffer(_0x4c19c8);var _0x4e2433=fs[_0x526f('0xe')](_0x22dbe0);var _0x2c3742=fs[_0x526f('0x16')](_0x57a9bb);var _0x288364=crypto['createDecipher'](_0x404d9c[_0x526f('0x6')],_0x2d3d73);_0x4e2433['on'](_0x526f('0xf'),function(_0x9501a1){var _0x2d4e05=new Buffer(_0x288364['update'](_0x9501a1),'binary');_0x2c3742[_0x526f('0x12')](_0x2d4e05);});_0x4e2433['on'](_0x526f('0x17'),function(){try{var _0x4a2fcf=new Buffer(_0x288364['final']('binary'),'binary');_0x2c3742[_0x526f('0x12')](_0x4a2fcf);_0x2c3742[_0x526f('0x17')]();_0x2c3742['on'](_0x526f('0x14'),function(){return _0x23e9f0(_0x57a9bb);});}catch(_0x97d633){fs[_0x526f('0x18')](_0x57a9bb);return _0x501425(_0x97d633);}});});};exports[_0x526f('0x19')]=function(_0x574c3b,_0x3d29bd,_0x3b9b53){var _0x4e1b0e=_0x3b9b53||stringOptions[_0x526f('0x6')];var _0x563d60=_0x3d29bd||stringOptions['secret'];var _0x46cc92=crypto[_0x526f('0x1a')](_0x4e1b0e,_0x563d60);var _0x47a839=_0x46cc92[_0x526f('0x10')](_0x574c3b,'utf8',_0x526f('0x1b'));_0x47a839+=_0x46cc92[_0x526f('0x13')](_0x526f('0x1b'));return _0x47a839;};exports['decryptString']=function(_0x5f066a,_0x4e8c40,_0x2a4d2a){var _0x5747e6=_0x2a4d2a||stringOptions['algorithm'];var _0x5e4685=_0x4e8c40||stringOptions[_0x526f('0x1c')];var _0x205d3b=crypto[_0x526f('0x1d')](_0x5747e6,_0x5e4685);var _0x2147b0=_0x205d3b[_0x526f('0x10')](_0x5f066a,_0x526f('0x1b'),'utf8');_0x2147b0+=_0x205d3b[_0x526f('0x13')](_0x526f('0x1e'));return _0x2147b0;};
\ No newline at end of file
index ec3c184..bdf126f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x17c2=['.csv','existsSync','join','each','%s%d.%s','csv','%s.%s','writeFileSync','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','path','bluebird','zip-dir','rimraf','../../mysqldb','dbH','../../config/logger','argv','savename','update','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','Setting','find','split','splitSizeCsv','sequelize','query','format','QueryTypes','SELECT','then','num','Empty','length','range','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname'];(function(_0x245615,_0x1da95e){var _0x52800c=function(_0x48eb18){while(--_0x48eb18){_0x245615['push'](_0x245615['shift']());}};_0x52800c(++_0x1da95e);}(_0x17c2,0x101));var _0x217c=function(_0x2405de,_0x548637){_0x2405de=_0x2405de-0x0;var _0xeadb6e=_0x17c2[_0x2405de];return _0xeadb6e;};'use strict';var util=require('util');var path=require(_0x217c('0x0'));var _=require('lodash');var csv=require('to-csv');var fs=require('fs');var BPromise=require(_0x217c('0x1'));var zipdir=require(_0x217c('0x2'));var rimraf=require(_0x217c('0x3'));var db=require(_0x217c('0x4'))['db'];var dbH=require(_0x217c('0x4'))[_0x217c('0x5')];var logger=require(_0x217c('0x6'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0x217c('0x7')][0x2]);var QUERY=process[_0x217c('0x7')][0x3];var PATH=process[_0x217c('0x7')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x4424f6,_0x5739ef){var _0x49f776={'status':_0x4424f6};var _0x550008={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x5739ef){_0x49f776[_0x217c('0x8')]=_0x5739ef;}return db['AnalyticExtractedReport'][_0x217c('0x9')](_0x49f776,_0x550008);}function main(){var _0x4346f0=0x1388;var _0x1ba9ac;logger['info'](util['format'](_0x217c('0xa'),EXTRACTED_REPORT_ID,_0x217c('0xb')));return db[_0x217c('0xc')][_0x217c('0xd')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x217c('0xe'),'splitSizeCsv']})['then'](function(_0x565758){if(_0x565758){_0x1ba9ac=_0x565758;_0x4346f0=_0x1ba9ac[_0x217c('0xf')]||0x1388;}})['then'](function(){return dbH[_0x217c('0x10')][_0x217c('0x11')](util[_0x217c('0x12')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH['sequelize'][_0x217c('0x13')][_0x217c('0x14')]});})[_0x217c('0x15')](function(_0x58957e){if(!_0x58957e[0x0][_0x217c('0x16')]){return analyticExtractedReport(_0x217c('0x17'));}var _0x2fd0a9=[];var _0x38b45d=0x0;if(_0x1ba9ac[_0x217c('0xe')]){if(_0x58957e&&_0x58957e[_0x217c('0x18')]){var _0x38f246=_[_0x217c('0x19')](_0x58957e[0x0][_0x217c('0x16')]/_0x4346f0);var _0x5cfb7d=Number[_0x217c('0x1a')](_0x58957e[0x0][_0x217c('0x16')]/_0x4346f0)?_0x58957e[0x0][_0x217c('0x16')]%_0x4346f0:0x0;_0x38f246[_0x217c('0x1b')](function(_0x3a9b9e){if(_0x3a9b9e>0x0){_0x38b45d+=_0x4346f0;}_0x2fd0a9[_0x217c('0x1c')](dbH[_0x217c('0x10')][_0x217c('0x11')](util[_0x217c('0x12')](_0x217c('0x1d'),QUERY,_0x4346f0,_0x38b45d),{'type':dbH[_0x217c('0x10')][_0x217c('0x13')][_0x217c('0x14')]}));});if(_0x5cfb7d>0x0){_0x38b45d+=_0x4346f0;_0x2fd0a9[_0x217c('0x1c')](dbH[_0x217c('0x10')][_0x217c('0x11')](util[_0x217c('0x12')](_0x217c('0x1d'),QUERY,_0x5cfb7d,_0x38b45d),{'type':dbH[_0x217c('0x10')][_0x217c('0x13')]['SELECT']}));}}}else{_0x2fd0a9['push'](dbH[_0x217c('0x10')]['query'](QUERY,{'type':dbH[_0x217c('0x10')][_0x217c('0x13')][_0x217c('0x14')]}));}var _0x2bfaa2=path[_0x217c('0x1e')](PATH);var _0x439053=path['basename'](PATH,_0x217c('0x1f'));var _0x5a23a0=_0x1ba9ac['split']&&_0x2fd0a9['length']>0x1;var _0x31f963=[];if(!fs[_0x217c('0x20')](path[_0x217c('0x21')](_0x2bfaa2,_0x439053))&&_0x5a23a0){fs['mkdirSync'](path['join'](_0x2bfaa2,_0x439053));}return BPromise[_0x217c('0x22')](_0x2fd0a9,function(_0x113edc){_0x31f963[_0x217c('0x1c')](_0x113edc);})[_0x217c('0x15')](function(){for(var _0x562a57=0x0;_0x562a57<_0x31f963[_0x217c('0x18')];_0x562a57+=0x1){var _0x1740de;var _0x428b29=_0x31f963[_0x562a57];if(_0x5a23a0){_0x1740de=path['join'](_0x2bfaa2,_0x439053,util[_0x217c('0x12')](_0x217c('0x23'),_0x439053,_0x562a57,_0x217c('0x24')));}else{_0x1740de=path[_0x217c('0x21')](_0x2bfaa2,util[_0x217c('0x12')](_0x217c('0x25'),_0x439053,_0x217c('0x24')));}fs[_0x217c('0x26')](_0x1740de,csv(_0x428b29));}})['then'](function(){if(_0x5a23a0){return new Promise(function(_0x4870e1){zipdir(path[_0x217c('0x21')](_0x2bfaa2,_0x439053),{'saveTo':path['join'](_0x2bfaa2,util['format'](_0x217c('0x25'),_0x439053,_0x217c('0x27')))},function(_0x5d2f03,_0x1e6c73){rimraf(path[_0x217c('0x21')](_0x2bfaa2,_0x439053),function(){});_0x4870e1(_0x217c('0x28'));});});}})[_0x217c('0x15')](function(){logger[_0x217c('0x29')](util[_0x217c('0x12')](_0x217c('0x2a'),EXTRACTED_REPORT_ID,_0x217c('0xb')));return analyticExtractedReport(_0x217c('0x2b'),_0x5a23a0?util[_0x217c('0x12')](_0x217c('0x25'),_0x439053,_0x5a23a0?'zip':_0x217c('0x24')):null);});})['catch'](function(_0x55d650){logger[_0x217c('0x29')](util[_0x217c('0x12')](_0x217c('0x2c'),EXTRACTED_REPORT_ID,_0x217c('0xb')),util[_0x217c('0x2d')](_0x55d650,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x217c('0x2e'));})[_0x217c('0x2f')](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xb120=['util','path','to-csv','zip-dir','rimraf','../../mysqldb','dbH','analytics','argv','savename','AnalyticExtractedReport','update','format','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','CSV','find','split','splitSizeCsv','then','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','QueryTypes','SELECT','num','Empty','range','isInteger','forEach','push','query','%s\x20limit\x20%d\x20OFFSET\x20%d','dirname','basename','.csv','length','existsSync','join','mkdirSync','%s%d.%s','%s.%s','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','csv','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed'];(function(_0xc8a931,_0x260690){var _0x28bd27=function(_0x591b9f){while(--_0x591b9f){_0xc8a931['push'](_0xc8a931['shift']());}};_0x28bd27(++_0x260690);}(_0xb120,0x1f4));var _0x0b12=function(_0x21aacc,_0x4996ae){_0x21aacc=_0x21aacc-0x0;var _0x239061=_0xb120[_0x21aacc];return _0x239061;};'use strict';var util=require(_0x0b12('0x0'));var path=require(_0x0b12('0x1'));var _=require('lodash');var csv=require(_0x0b12('0x2'));var fs=require('fs');var BPromise=require('bluebird');var zipdir=require(_0x0b12('0x3'));var rimraf=require(_0x0b12('0x4'));var db=require(_0x0b12('0x5'))['db'];var dbH=require(_0x0b12('0x5'))[_0x0b12('0x6')];var logger=require('../../config/logger')(_0x0b12('0x7'));var EXTRACTED_REPORT_ID=Number(process[_0x0b12('0x8')][0x2]);var QUERY=process[_0x0b12('0x8')][0x3];var PATH=process[_0x0b12('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x346dc7,_0x471da7){var _0x4abb43={'status':_0x346dc7};var _0x37a074={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x471da7){_0x4abb43[_0x0b12('0x9')]=_0x471da7;}return db[_0x0b12('0xa')][_0x0b12('0xb')](_0x4abb43,_0x37a074);}function main(){var _0x4b2331=0x1388;var _0x474887;logger['info'](util[_0x0b12('0xc')](_0x0b12('0xd'),EXTRACTED_REPORT_ID,_0x0b12('0xe')));return db['Setting'][_0x0b12('0xf')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0x0b12('0x10'),_0x0b12('0x11')]})['then'](function(_0x229b8a){if(_0x229b8a){_0x474887=_0x229b8a;_0x4b2331=_0x474887[_0x0b12('0x11')]||0x1388;}})[_0x0b12('0x12')](function(){return dbH['sequelize']['query'](util[_0x0b12('0xc')](_0x0b12('0x13'),QUERY),{'type':dbH[_0x0b12('0x14')][_0x0b12('0x15')][_0x0b12('0x16')]});})[_0x0b12('0x12')](function(_0x5f29b0){if(!_0x5f29b0[0x0][_0x0b12('0x17')]){return analyticExtractedReport(_0x0b12('0x18'));}var _0xa004ac=[];var _0x475af0=0x0;if(_0x474887['split']){if(_0x5f29b0&&_0x5f29b0['length']){var _0x18f5f5=_[_0x0b12('0x19')](_0x5f29b0[0x0][_0x0b12('0x17')]/_0x4b2331);var _0x3585a0=Number[_0x0b12('0x1a')](_0x5f29b0[0x0]['num']/_0x4b2331)?_0x5f29b0[0x0]['num']%_0x4b2331:0x0;_0x18f5f5[_0x0b12('0x1b')](function(_0x14a74f){if(_0x14a74f>0x0){_0x475af0+=_0x4b2331;}_0xa004ac[_0x0b12('0x1c')](dbH[_0x0b12('0x14')][_0x0b12('0x1d')](util[_0x0b12('0xc')](_0x0b12('0x1e'),QUERY,_0x4b2331,_0x475af0),{'type':dbH['sequelize'][_0x0b12('0x15')][_0x0b12('0x16')]}));});if(_0x3585a0>0x0){_0x475af0+=_0x4b2331;_0xa004ac[_0x0b12('0x1c')](dbH[_0x0b12('0x14')]['query'](util[_0x0b12('0xc')](_0x0b12('0x1e'),QUERY,_0x3585a0,_0x475af0),{'type':dbH[_0x0b12('0x14')][_0x0b12('0x15')][_0x0b12('0x16')]}));}}}else{_0xa004ac['push'](dbH[_0x0b12('0x14')][_0x0b12('0x1d')](QUERY,{'type':dbH[_0x0b12('0x14')]['QueryTypes'][_0x0b12('0x16')]}));}var _0x1e3b11=path[_0x0b12('0x1f')](PATH);var _0x1c58c6=path[_0x0b12('0x20')](PATH,_0x0b12('0x21'));var _0x4a164d=_0x474887[_0x0b12('0x10')]&&_0xa004ac[_0x0b12('0x22')]>0x1;var _0x26404b=[];if(!fs[_0x0b12('0x23')](path[_0x0b12('0x24')](_0x1e3b11,_0x1c58c6))&&_0x4a164d){fs[_0x0b12('0x25')](path[_0x0b12('0x24')](_0x1e3b11,_0x1c58c6));}return BPromise['each'](_0xa004ac,function(_0x246a4d){_0x26404b[_0x0b12('0x1c')](_0x246a4d);})[_0x0b12('0x12')](function(){for(var _0x506481=0x0;_0x506481<_0x26404b[_0x0b12('0x22')];_0x506481+=0x1){var _0x275248;var _0x1ccd4f=_0x26404b[_0x506481];if(_0x4a164d){_0x275248=path[_0x0b12('0x24')](_0x1e3b11,_0x1c58c6,util[_0x0b12('0xc')](_0x0b12('0x26'),_0x1c58c6,_0x506481,'csv'));}else{_0x275248=path[_0x0b12('0x24')](_0x1e3b11,util['format'](_0x0b12('0x27'),_0x1c58c6,'csv'));}fs['writeFileSync'](_0x275248,csv(_0x1ccd4f));}})[_0x0b12('0x12')](function(){if(_0x4a164d){return new Promise(function(_0x4fce7d){zipdir(path[_0x0b12('0x24')](_0x1e3b11,_0x1c58c6),{'saveTo':path[_0x0b12('0x24')](_0x1e3b11,util[_0x0b12('0xc')]('%s.%s',_0x1c58c6,_0x0b12('0x28')))},function(_0xff3fb9,_0x175c26){rimraf(path['join'](_0x1e3b11,_0x1c58c6),function(){});_0x4fce7d(_0x0b12('0x29'));});});}})['then'](function(){logger[_0x0b12('0x2a')](util[_0x0b12('0xc')](_0x0b12('0x2b'),EXTRACTED_REPORT_ID,'CSV'));return analyticExtractedReport(_0x0b12('0x2c'),_0x4a164d?util[_0x0b12('0xc')](_0x0b12('0x27'),_0x1c58c6,_0x4a164d?_0x0b12('0x28'):_0x0b12('0x2d')):null);});})[_0x0b12('0x2e')](function(_0x5011f1){logger['info'](util[_0x0b12('0xc')](_0x0b12('0x2f'),EXTRACTED_REPORT_ID,_0x0b12('0xe')),util[_0x0b12('0x30')](_0x5011f1,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x0b12('0x31'));})['finally'](function(){process['exit'](EXIT_CODE);});}main();
\ No newline at end of file
index 9071608..a1979ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x45ad=['tableHeader','pick','value','length','auto','body','concat','chunk','keys','forEach','format','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','endDate','push','header','pageBreak','before','margin','toString','footer','num','Empty','Setting','find','split','splitSizePdf','then','range','isInteger','sequelize','query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','dirname','basename','.pdf','existsSync','mkdirSync','join','each','createPdfKitDocument','%s%d.%s','pdf','%s.%s','all','zip','zip\x20finished','info','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','PDF','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','Failed','finally','exit','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','%s\x20#%d','channel','interactionId','YYYY-MM-DD','Arial','center','Interaction\x20Transcript','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','createWriteStream','finish','error','createPdfFromHTML','lodash','path','html-to-pdfmake','pdfmake/src/printer','zip-dir','jsdom','JSDOM','window','../../mysqldb','dbH','../../config/logger','analytics','argv','MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a','savename','AnalyticExtractedReport','update','map'];(function(_0x4badb4,_0x35dd05){var _0xff35b2=function(_0x43b032){while(--_0x43b032){_0x4badb4['push'](_0x4badb4['shift']());}};_0xff35b2(++_0x35dd05);}(_0x45ad,0x166));var _0xd45a=function(_0x382168,_0xe03b6a){_0x382168=_0x382168-0x0;var _0x3ecf7e=_0x45ad[_0x382168];return _0x3ecf7e;};'use strict';var _=require(_0xd45a('0x0'));var fs=require('fs');var util=require('util');var path=require(_0xd45a('0x1'));var moment=require('moment');var htmlToPdfmake=require(_0xd45a('0x2'));var PdfPrinter=require(_0xd45a('0x3'));var zipdir=require(_0xd45a('0x4'));var rimraf=require('rimraf');var JSDOM=require(_0xd45a('0x5'))[_0xd45a('0x6')];var window=new JSDOM('')[_0xd45a('0x7')];var BPromise=require('bluebird');var db=require(_0xd45a('0x8'))['db'];var dbH=require(_0xd45a('0x8'))[_0xd45a('0x9')];var logger=require(_0xd45a('0xa'))(_0xd45a('0xb'));var EXTRACTED_REPORT_ID=Number(process[_0xd45a('0xc')][0x2]);var QUERY=process[_0xd45a('0xc')][0x3];var PATH=process['argv'][0x4];var NAME=process[_0xd45a('0xc')][0x5];var FORMAT=_0xd45a('0xd');var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0x3d750c,_0x5b772d){var _0x39a867={'status':_0x3d750c};var _0x471a55={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x5b772d){_0x39a867[_0xd45a('0xe')]=_0x5b772d;}return db[_0xd45a('0xf')][_0xd45a('0x10')](_0x39a867,_0x471a55);}function getHeaders(_0x408167){return _[_0xd45a('0x11')](_0x408167,function(_0x29f943){return{'text':_0x29f943,'style':_0xd45a('0x12')};});}function getRows(_0x559f3f,_0x64471a){return _[_0xd45a('0x11')](_0x64471a,function(_0x40b645){return _(_0x40b645)[_0xd45a('0x13')](_0x559f3f)[_0xd45a('0x11')](function(_0x7c24d0){return _0x7c24d0?_['toString'](_0x7c24d0):'';})[_0xd45a('0x14')]();});}function createTable(_0x232515,_0x5ad106){var _0x314029={'widths':_['fill'](Array(_0x232515[_0xd45a('0x15')]),0x91),'heights':function(_0x495b8a){return _0x495b8a===0x0?_0xd45a('0x16'):0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0x532dfa=getHeaders(_0x232515);_0x314029[_0xd45a('0x17')]['push'](_0x532dfa);var _0x4cb30d=getRows(_0x232515,_0x5ad106);_0x314029[_0xd45a('0x17')]=_0x314029[_0xd45a('0x17')][_0xd45a('0x18')](_0x4cb30d);return _0x314029;}function createTables(_0xad2aec){var _0x281be9=[];var _0x335442=_[_0xd45a('0x19')](Object[_0xd45a('0x1a')](_0xad2aec[0x0]),0x5);_0x335442[_0xd45a('0x1b')](function(_0x1c4132){_0x281be9['push'](createTable(_0x1c4132,_0xad2aec));});return _0x281be9;}function getPDFDocDefinition(_0x3f8128){var _0x57cd56=util[_0xd45a('0x1c')](_0xd45a('0x1d'),NAME,EXTRACTED_REPORT[_0xd45a('0x1e')],moment(EXTRACTED_REPORT[_0xd45a('0x1f')])[_0xd45a('0x1c')](FORMAT),moment(EXTRACTED_REPORT[_0xd45a('0x20')])[_0xd45a('0x1c')](FORMAT));var _0x311179=[];for(var _0x2cdebc=0x0;_0x2cdebc<_0x3f8128[_0xd45a('0x15')];_0x2cdebc++){var _0x1dfe4d=[];if(_0x2cdebc===0x0){_0x1dfe4d[_0xd45a('0x21')]({'text':_0x57cd56,'style':_0xd45a('0x22')});}var _0x57e3a6={'table':_0x3f8128[_0x2cdebc]};if(_0x2cdebc>0x0){_0x57e3a6[_0xd45a('0x23')]=_0xd45a('0x24');_0x57e3a6[_0xd45a('0x25')]=[0x0,0x46,0x0,0x0];}_0x1dfe4d['push'](_0x57e3a6);_0x311179[_0xd45a('0x21')](_0x1dfe4d);}return{'pageSize':'A4','pageOrientation':'landscape','content':_0x311179,'footer':function(_0xb62d84,_0x2d2d60){return{'text':_0xb62d84[_0xd45a('0x26')]()+'\x20/\x20'+_0x2d2d60,'style':_0xd45a('0x27')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':'black'},'footer':{'alignment':'right','margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x121d31){var _0x433da3=0x1388;var _0x5d5dac;if(!_0x121d31[0x0][_0xd45a('0x28')]){return analyticExtractedReport(_0xd45a('0x29'));}return db[_0xd45a('0x2a')][_0xd45a('0x2b')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xd45a('0x2c'),_0xd45a('0x2d')]})[_0xd45a('0x2e')](function(_0x1a5383){if(_0x1a5383){_0x5d5dac=_0x1a5383;_0x433da3=_0x5d5dac['splitSizePdf']||0x3e8;}})[_0xd45a('0x2e')](function(){var _0xdcff8a=[];var _0x2db829=0x0;if(_0x5d5dac['split']){if(_0x121d31&&_0x121d31[_0xd45a('0x15')]){var _0x180dde=_[_0xd45a('0x2f')](_0x121d31[0x0]['num']/_0x433da3);var _0x5da8a4=Number[_0xd45a('0x30')](_0x121d31[0x0][_0xd45a('0x28')]/_0x433da3)?_0x121d31[0x0][_0xd45a('0x28')]%_0x433da3:0x0;_0x180dde['forEach'](function(_0x35693a){if(_0x35693a>0x0){_0x2db829+=_0x433da3;}_0xdcff8a[_0xd45a('0x21')](dbH[_0xd45a('0x31')][_0xd45a('0x32')](util[_0xd45a('0x1c')](_0xd45a('0x33'),QUERY,_0x433da3,_0x2db829),{'type':dbH[_0xd45a('0x31')][_0xd45a('0x34')][_0xd45a('0x35')]}));});if(_0x5da8a4>0x0){_0x2db829+=_0x433da3;_0xdcff8a[_0xd45a('0x21')](dbH[_0xd45a('0x31')][_0xd45a('0x32')](util[_0xd45a('0x1c')](_0xd45a('0x33'),QUERY,_0x5da8a4,_0x2db829),{'type':dbH[_0xd45a('0x31')][_0xd45a('0x34')]['SELECT']}));}}}else{_0xdcff8a['push'](dbH[_0xd45a('0x31')][_0xd45a('0x32')](QUERY,{'type':dbH['sequelize'][_0xd45a('0x34')][_0xd45a('0x35')]}));}var _0x1ffff1=path[_0xd45a('0x36')](PATH);var _0x3ee5c7=path[_0xd45a('0x37')](PATH,_0xd45a('0x38'));var _0x542fd4=_0x5d5dac['split']&&_0xdcff8a['length']>0x1;var _0x4ff72e=[];if(!fs[_0xd45a('0x39')](path['join'](_0x1ffff1,_0x3ee5c7))&&_0x542fd4){fs[_0xd45a('0x3a')](path[_0xd45a('0x3b')](_0x1ffff1,_0x3ee5c7));}return BPromise[_0xd45a('0x3c')](_0xdcff8a,function(_0x44e5a3){_0x4ff72e[_0xd45a('0x21')](_0x44e5a3);})[_0xd45a('0x2e')](function(){var _0x48378e=[];for(var _0x309615=0x0;_0x309615<_0x4ff72e[_0xd45a('0x15')];_0x309615+=0x1){var _0x4a9742=_0x4ff72e[_0x309615];var _0x1df977=createTables(_['flatten'](_0x4a9742));var _0x596e2e;var _0x279f3d=getPDFDocDefinition(_0x1df977);var _0x3ed178=getPDFPrinter();var _0x3e6360=_0x3ed178[_0xd45a('0x3d')](_0x279f3d);if(_0x542fd4){_0x596e2e=path[_0xd45a('0x3b')](_0x1ffff1,_0x3ee5c7,util['format'](_0xd45a('0x3e'),_0x3ee5c7,_0x309615,_0xd45a('0x3f')));}else{_0x596e2e=path[_0xd45a('0x3b')](_0x1ffff1,util[_0xd45a('0x1c')](_0xd45a('0x40'),_0x3ee5c7,'pdf'));}_0x48378e[_0xd45a('0x21')](writePDFDocument(_0x3e6360,_0x596e2e));}return Promise[_0xd45a('0x41')](_0x48378e);})[_0xd45a('0x2e')](function(){if(_0x542fd4){return new Promise(function(_0x5368f3){zipdir(path['join'](_0x1ffff1,_0x3ee5c7),{'saveTo':path['join'](_0x1ffff1,util['format'](_0xd45a('0x40'),_0x3ee5c7,_0xd45a('0x42')))},function(){rimraf(path[_0xd45a('0x3b')](_0x1ffff1,_0x3ee5c7),function(){});_0x5368f3(_0xd45a('0x43'));});});}})[_0xd45a('0x2e')](function(){if(!_0x542fd4)return;rimraf(path[_0xd45a('0x3b')](_0x1ffff1,_0x3ee5c7),function(){});})[_0xd45a('0x2e')](function(){logger[_0xd45a('0x44')](util['format'](_0xd45a('0x45'),EXTRACTED_REPORT_ID,_0xd45a('0x46')));return analyticExtractedReport('Completed',_0x542fd4?util['format'](_0xd45a('0x40'),_0x3ee5c7,_0x542fd4?_0xd45a('0x42'):_0xd45a('0x3f')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0xd45a('0x44')](util['format'](_0xd45a('0x47'),EXTRACTED_REPORT_ID,_0xd45a('0x46')));return db[_0xd45a('0xf')][_0xd45a('0x48')]({'where':{'id':EXTRACTED_REPORT_ID}})[_0xd45a('0x2e')](function(_0x2b6b92){EXTRACTED_REPORT=_0x2b6b92;return dbH[_0xd45a('0x31')]['query'](util[_0xd45a('0x1c')](_0xd45a('0x49'),QUERY),{'type':dbH[_0xd45a('0x31')][_0xd45a('0x34')][_0xd45a('0x35')]});})['then'](extractReport)[_0xd45a('0x4a')](function(_0x33d4ae){logger[_0xd45a('0x44')](util[_0xd45a('0x1c')](_0xd45a('0x4b'),EXTRACTED_REPORT_ID,_0xd45a('0x46')),util['inspect'](_0x33d4ae,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xd45a('0x4c'));})[_0xd45a('0x4d')](function(){process[_0xd45a('0x4e')](EXIT_CODE);});}main();function getPDFPrinter(){var _0x4ee4d2=new PdfPrinter({'Arial':{'normal':__dirname+'/fonts/arial-regular.ttf','bold':__dirname+'/fonts/arial-bold.ttf','italics':__dirname+_0xd45a('0x4f'),'bolditalics':__dirname+_0xd45a('0x50')}});return _0x4ee4d2;}function getPDFDocDefinitionFromHTML(_0x2309fe,_0x399a51){var _0x59faf3=util[_0xd45a('0x1c')](_0xd45a('0x51'),_0x399a51[_0xd45a('0x52')],_0x399a51[_0xd45a('0x53')]);var _0x24fc38=moment()[_0xd45a('0x1c')](_0xd45a('0x54'))[_0xd45a('0x26')]();var _0x3bfe6d=htmlToPdfmake(_0x2309fe,{'window':window,'tableAutoSize':!![]});return{'content':[_0x3bfe6d],'defaultStyle':{'font':_0xd45a('0x55')},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':'center','margin':[0xa,0xa,0xa,0xa]},'footer':{'fontSize':0x9,'alignment':_0xd45a('0x56'),'margin':[0xa,0x14,0xa,0xa]},'textblock':{'fontSize':0xb},'textfield':{'bold':!![]},'messageContainer':{'fontSize':0xa},'messageInfo':{'bold':!![]},'interactionData':{'alignment':_0xd45a('0x56')}},'header':function(){return[{'text':_0xd45a('0x57'),'style':_0xd45a('0x22')}];},'footer':function(_0x564a54,_0x329d32){return[{'text':util['format'](_0xd45a('0x58'),_0x59faf3,_0x564a54,_0x329d32,_0x24fc38),'style':_0xd45a('0x27')}];}};}function writePDFDocument(_0x461b47,_0x32e86c){return new Promise(function(_0x350021,_0xda6b7c){var _0x4131fb=_0x461b47[_0xd45a('0x59')](fs[_0xd45a('0x5a')](_0x32e86c));_0x4131fb['on'](_0xd45a('0x5b'),function(){_0x350021(_0xd45a('0x5b'));});_0x4131fb['on'](_0xd45a('0x5c'),function(_0x3c05dd){_0xda6b7c(_0x3c05dd);});_0x461b47['end']();});}exports[_0xd45a('0x5d')]=function(_0x4bfbe7,_0x367724){var _0x5cc89d=getPDFPrinter();var _0x3eff89=getPDFDocDefinitionFromHTML(_0x4bfbe7,_0x367724);var _0x29adf5=_0x5cc89d[_0xd45a('0x3d')](_0x3eff89);return writePDFDocument(_0x29adf5,_0x367724['path'])[_0xd45a('0x4a')](function(_0x2040c6){throw _0x2040c6;});};
\ No newline at end of file
+var _0x31e2=['query','%s\x20limit\x20%d\x20OFFSET\x20%d','QueryTypes','SELECT','dirname','basename','.pdf','existsSync','join','mkdirSync','each','flatten','createPdfKitDocument','%s%d.%s','pdf','all','%s.%s','zip','zip\x20finished','info','PDF','findOne','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','Failed','finally','/fonts/arial-regular.ttf','/fonts/arial-bold.ttf','/fonts/arial-italic.ttf','/fonts/arial-bold-italic.ttf','interactionId','center','Interaction\x20Transcript','header','\x09\x09XCALLY\x20Motion\x20-\x20%s\x09\x09\x09\x09%d/%d\x09\x09\x09\x09%s','pipe','finish','error','createPdfFromHTML','catch','lodash','util','path','moment','pdfmake/src/printer','zip-dir','rimraf','jsdom','JSDOM','window','bluebird','../../mysqldb','../../config/logger','analytics','argv','savename','tableHeader','map','pick','value','fill','length','body','push','chunk','keys','forEach','Name:\x20%s\x0aReport:\x20%s\x0aFrom:\x20%s\x20To:\x20%s','name','startDate','format','endDate','pageBreak','margin','landscape','toString','\x20/\x20','footer','black','right','num','Setting','find','splitSizePdf','then','split','range','isInteger','sequelize'];(function(_0x393500,_0x1037af){var _0x120d3b=function(_0x17234e){while(--_0x17234e){_0x393500['push'](_0x393500['shift']());}};_0x120d3b(++_0x1037af);}(_0x31e2,0x12f));var _0x231e=function(_0x323d87,_0x4ef3f9){_0x323d87=_0x323d87-0x0;var _0x5e8f74=_0x31e2[_0x323d87];return _0x5e8f74;};'use strict';var _=require(_0x231e('0x0'));var fs=require('fs');var util=require(_0x231e('0x1'));var path=require(_0x231e('0x2'));var moment=require(_0x231e('0x3'));var htmlToPdfmake=require('html-to-pdfmake');var PdfPrinter=require(_0x231e('0x4'));var zipdir=require(_0x231e('0x5'));var rimraf=require(_0x231e('0x6'));var JSDOM=require(_0x231e('0x7'))[_0x231e('0x8')];var window=new JSDOM('')[_0x231e('0x9')];var BPromise=require(_0x231e('0xa'));var db=require(_0x231e('0xb'))['db'];var dbH=require('../../mysqldb')['dbH'];var logger=require(_0x231e('0xc'))(_0x231e('0xd'));var EXTRACTED_REPORT_ID=Number(process[_0x231e('0xe')][0x2]);var QUERY=process[_0x231e('0xe')][0x3];var PATH=process['argv'][0x4];var NAME=process[_0x231e('0xe')][0x5];var FORMAT='MMMM\x20Do\x20YYYY,\x20h:mm:ss\x20a';var EXTRACTED_REPORT;var EXIT_CODE=0x0;function analyticExtractedReport(_0xa08f52,_0x367c70){var _0x1153c9={'status':_0xa08f52};var _0x2e5577={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x367c70){_0x1153c9[_0x231e('0xf')]=_0x367c70;}return db['AnalyticExtractedReport']['update'](_0x1153c9,_0x2e5577);}function getHeaders(_0x3abf9f){return _['map'](_0x3abf9f,function(_0x596de3){return{'text':_0x596de3,'style':_0x231e('0x10')};});}function getRows(_0x1ceef6,_0x1702dc){return _[_0x231e('0x11')](_0x1702dc,function(_0x148ea1){return _(_0x148ea1)[_0x231e('0x12')](_0x1ceef6)[_0x231e('0x11')](function(_0x5a6003){return _0x5a6003?_['toString'](_0x5a6003):'';})[_0x231e('0x13')]();});}function createTable(_0x3b9830,_0x5f593d){var _0x4d147b={'widths':_[_0x231e('0x14')](Array(_0x3b9830[_0x231e('0x15')]),0x91),'heights':function(_0x344e6d){return _0x344e6d===0x0?'auto':0x32;},'dontBreakRows':!![],'headerRows':0x1,'body':[]};var _0xa65fb1=getHeaders(_0x3b9830);_0x4d147b[_0x231e('0x16')][_0x231e('0x17')](_0xa65fb1);var _0x35d5f4=getRows(_0x3b9830,_0x5f593d);_0x4d147b['body']=_0x4d147b[_0x231e('0x16')]['concat'](_0x35d5f4);return _0x4d147b;}function createTables(_0x323ff4){var _0x3b3678=[];var _0x4dc977=_[_0x231e('0x18')](Object[_0x231e('0x19')](_0x323ff4[0x0]),0x5);_0x4dc977[_0x231e('0x1a')](function(_0xc25920){_0x3b3678['push'](createTable(_0xc25920,_0x323ff4));});return _0x3b3678;}function getPDFDocDefinition(_0x1c8302){var _0x1ac1b5=util['format'](_0x231e('0x1b'),NAME,EXTRACTED_REPORT[_0x231e('0x1c')],moment(EXTRACTED_REPORT[_0x231e('0x1d')])[_0x231e('0x1e')](FORMAT),moment(EXTRACTED_REPORT[_0x231e('0x1f')])[_0x231e('0x1e')](FORMAT));var _0x33e08e=[];for(var _0x1f45f4=0x0;_0x1f45f4<_0x1c8302[_0x231e('0x15')];_0x1f45f4++){var _0x372104=[];if(_0x1f45f4===0x0){_0x372104['push']({'text':_0x1ac1b5,'style':'header'});}var _0x345157={'table':_0x1c8302[_0x1f45f4]};if(_0x1f45f4>0x0){_0x345157[_0x231e('0x20')]='before';_0x345157[_0x231e('0x21')]=[0x0,0x46,0x0,0x0];}_0x372104[_0x231e('0x17')](_0x345157);_0x33e08e['push'](_0x372104);}return{'pageSize':'A4','pageOrientation':_0x231e('0x22'),'content':_0x33e08e,'footer':function(_0x43f1a1,_0x1f3ae3){return{'text':_0x43f1a1[_0x231e('0x23')]()+_0x231e('0x24')+_0x1f3ae3,'style':_0x231e('0x25')};},'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'margin':[0x0,0x0,0x0,0xa]},'tableHeader':{'bold':!![],'fontSize':0xd,'color':_0x231e('0x26')},'footer':{'alignment':_0x231e('0x27'),'margin':[0x0,0x0,0x28,0x0]}}};}function extractReport(_0x2570d7){var _0x1a1b04=0x1388;var _0x31ef1c;if(!_0x2570d7[0x0][_0x231e('0x28')]){return analyticExtractedReport('Empty');}return db[_0x231e('0x29')][_0x231e('0x2a')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split',_0x231e('0x2b')]})[_0x231e('0x2c')](function(_0x146838){if(_0x146838){_0x31ef1c=_0x146838;_0x1a1b04=_0x31ef1c[_0x231e('0x2b')]||0x3e8;}})['then'](function(){var _0x2e34e0=[];var _0xec16cb=0x0;if(_0x31ef1c[_0x231e('0x2d')]){if(_0x2570d7&&_0x2570d7[_0x231e('0x15')]){var _0x133c5f=_[_0x231e('0x2e')](_0x2570d7[0x0][_0x231e('0x28')]/_0x1a1b04);var _0x38d711=Number[_0x231e('0x2f')](_0x2570d7[0x0][_0x231e('0x28')]/_0x1a1b04)?_0x2570d7[0x0][_0x231e('0x28')]%_0x1a1b04:0x0;_0x133c5f[_0x231e('0x1a')](function(_0x2aaaf6){if(_0x2aaaf6>0x0){_0xec16cb+=_0x1a1b04;}_0x2e34e0[_0x231e('0x17')](dbH[_0x231e('0x30')][_0x231e('0x31')](util['format'](_0x231e('0x32'),QUERY,_0x1a1b04,_0xec16cb),{'type':dbH['sequelize'][_0x231e('0x33')][_0x231e('0x34')]}));});if(_0x38d711>0x0){_0xec16cb+=_0x1a1b04;_0x2e34e0[_0x231e('0x17')](dbH[_0x231e('0x30')][_0x231e('0x31')](util[_0x231e('0x1e')]('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x38d711,_0xec16cb),{'type':dbH[_0x231e('0x30')]['QueryTypes'][_0x231e('0x34')]}));}}}else{_0x2e34e0['push'](dbH[_0x231e('0x30')][_0x231e('0x31')](QUERY,{'type':dbH[_0x231e('0x30')][_0x231e('0x33')]['SELECT']}));}var _0x4f28d3=path[_0x231e('0x35')](PATH);var _0x19d501=path[_0x231e('0x36')](PATH,_0x231e('0x37'));var _0xf45e4e=_0x31ef1c[_0x231e('0x2d')]&&_0x2e34e0[_0x231e('0x15')]>0x1;var _0x4a83e1=[];if(!fs[_0x231e('0x38')](path[_0x231e('0x39')](_0x4f28d3,_0x19d501))&&_0xf45e4e){fs[_0x231e('0x3a')](path[_0x231e('0x39')](_0x4f28d3,_0x19d501));}return BPromise[_0x231e('0x3b')](_0x2e34e0,function(_0x24b806){_0x4a83e1['push'](_0x24b806);})['then'](function(){var _0x12e34d=[];for(var _0x564489=0x0;_0x564489<_0x4a83e1['length'];_0x564489+=0x1){var _0x1b1abb=_0x4a83e1[_0x564489];var _0x2befd2=createTables(_[_0x231e('0x3c')](_0x1b1abb));var _0x3cac6e;var _0x3953c0=getPDFDocDefinition(_0x2befd2);var _0x3a2dd1=getPDFPrinter();var _0x351204=_0x3a2dd1[_0x231e('0x3d')](_0x3953c0);if(_0xf45e4e){_0x3cac6e=path[_0x231e('0x39')](_0x4f28d3,_0x19d501,util[_0x231e('0x1e')](_0x231e('0x3e'),_0x19d501,_0x564489,_0x231e('0x3f')));}else{_0x3cac6e=path[_0x231e('0x39')](_0x4f28d3,util[_0x231e('0x1e')]('%s.%s',_0x19d501,'pdf'));}_0x12e34d['push'](writePDFDocument(_0x351204,_0x3cac6e));}return Promise[_0x231e('0x40')](_0x12e34d);})['then'](function(){if(_0xf45e4e){return new Promise(function(_0x167956){zipdir(path['join'](_0x4f28d3,_0x19d501),{'saveTo':path[_0x231e('0x39')](_0x4f28d3,util[_0x231e('0x1e')](_0x231e('0x41'),_0x19d501,_0x231e('0x42')))},function(){rimraf(path[_0x231e('0x39')](_0x4f28d3,_0x19d501),function(){});_0x167956(_0x231e('0x43'));});});}})['then'](function(){if(!_0xf45e4e)return;rimraf(path['join'](_0x4f28d3,_0x19d501),function(){});})[_0x231e('0x2c')](function(){logger[_0x231e('0x44')](util['format']('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,'PDF'));return analyticExtractedReport('Completed',_0xf45e4e?util[_0x231e('0x1e')]('%s.%s',_0x19d501,_0xf45e4e?_0x231e('0x42'):_0x231e('0x3f')):null);});});}function main(){if(!EXTRACTED_REPORT_ID)return;logger[_0x231e('0x44')](util[_0x231e('0x1e')]('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x231e('0x45')));return db['AnalyticExtractedReport'][_0x231e('0x46')]({'where':{'id':EXTRACTED_REPORT_ID}})['then'](function(_0x656b76){EXTRACTED_REPORT=_0x656b76;return dbH['sequelize']['query'](util[_0x231e('0x1e')](_0x231e('0x47'),QUERY),{'type':dbH[_0x231e('0x30')]['QueryTypes'][_0x231e('0x34')]});})[_0x231e('0x2c')](extractReport)['catch'](function(_0x59038c){logger[_0x231e('0x44')](util[_0x231e('0x1e')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0x231e('0x45')),util['inspect'](_0x59038c,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x231e('0x48'));})[_0x231e('0x49')](function(){process['exit'](EXIT_CODE);});}main();function getPDFPrinter(){var _0x5e214f=new PdfPrinter({'Arial':{'normal':__dirname+_0x231e('0x4a'),'bold':__dirname+_0x231e('0x4b'),'italics':__dirname+_0x231e('0x4c'),'bolditalics':__dirname+_0x231e('0x4d')}});return _0x5e214f;}function getPDFDocDefinitionFromHTML(_0x28747b,_0x3dcdcc){var _0x26ae47=util['format']('%s\x20#%d',_0x3dcdcc['channel'],_0x3dcdcc[_0x231e('0x4e')]);var _0x49c6eb=moment()['format']('YYYY-MM-DD')[_0x231e('0x23')]();var _0x4bcc3e=htmlToPdfmake(_0x28747b,{'window':window,'tableAutoSize':!![]});return{'content':[_0x4bcc3e],'defaultStyle':{'font':'Arial'},'styles':{'header':{'fontSize':0x12,'bold':!![],'alignment':_0x231e('0x4f'),'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':_0x231e('0x50'),'style':_0x231e('0x51')}];},'footer':function(_0x1a5d73,_0x3a7e64){return[{'text':util[_0x231e('0x1e')](_0x231e('0x52'),_0x26ae47,_0x1a5d73,_0x3a7e64,_0x49c6eb),'style':_0x231e('0x25')}];}};}function writePDFDocument(_0x2ee3c4,_0x2a7de5){return new Promise(function(_0x2c2b6b,_0x180315){var _0x483e53=_0x2ee3c4[_0x231e('0x53')](fs['createWriteStream'](_0x2a7de5));_0x483e53['on'](_0x231e('0x54'),function(){_0x2c2b6b(_0x231e('0x54'));});_0x483e53['on'](_0x231e('0x55'),function(_0x1bfd2b){_0x180315(_0x1bfd2b);});_0x2ee3c4['end']();});}exports[_0x231e('0x56')]=function(_0x347807,_0xa8a631){var _0x3720c1=getPDFPrinter();var _0x5b0fd5=getPDFDocDefinitionFromHTML(_0x347807,_0xa8a631);var _0x1df309=_0x3720c1['createPdfKitDocument'](_0x5b0fd5);return writePDFDocument(_0x1df309,_0xa8a631['path'])[_0x231e('0x57')](function(_0x23e6f5){throw _0x23e6f5;});};
\ No newline at end of file
index 36eb566..4c8d247 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x590a=['zip','zip\x20finished','Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed','Completed','catch','inspect','Failed','finally','exit','path','lodash','json2xls','bluebird','zip-dir','../../mysqldb','dbH','../../config/logger','argv','AnalyticExtractedReport','info','Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','XLSX','Setting','find','split','splitSizeXlsx','then','sequelize','query','format','QueryTypes','Empty','length','range','num','isInteger','forEach','push','%s\x20limit\x20%d\x20OFFSET\x20%d','SELECT','dirname','.xlsx','join','mkdirSync','each','xlsx','%s.%s','writeFileSync'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x590a,0x159));var _0xa590=function(_0xb304f6,_0x2a67f7){_0xb304f6=_0xb304f6-0x0;var _0x46e039=_0x590a[_0xb304f6];return _0x46e039;};'use strict';var util=require('util');var path=require(_0xa590('0x0'));var _=require(_0xa590('0x1'));var fs=require('fs');var json2xls=require(_0xa590('0x2'));var BPromise=require(_0xa590('0x3'));var zipdir=require(_0xa590('0x4'));var rimraf=require('rimraf');var db=require('../../mysqldb')['db'];var dbH=require(_0xa590('0x5'))[_0xa590('0x6')];var logger=require(_0xa590('0x7'))('analytics');var EXTRACTED_REPORT_ID=Number(process[_0xa590('0x8')][0x2]);var QUERY=process['argv'][0x3];var PATH=process[_0xa590('0x8')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0x163d19,_0x2ad01a){var _0x27a5fa={'status':_0x163d19};var _0x5d9565={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x2ad01a){_0x27a5fa['savename']=_0x2ad01a;}return db[_0xa590('0x9')]['update'](_0x27a5fa,_0x5d9565);}function main(){var _0x397b6c=0x1388;var _0x3e59f3;logger[_0xa590('0xa')](util['format'](_0xa590('0xb'),EXTRACTED_REPORT_ID,_0xa590('0xc')));return db[_0xa590('0xd')][_0xa590('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id',_0xa590('0xf'),_0xa590('0x10')]})[_0xa590('0x11')](function(_0x570b51){if(_0x570b51){_0x3e59f3=_0x570b51;_0x397b6c=_0x3e59f3['splitSizeXlsx']||0x1388;}})[_0xa590('0x11')](function(){return dbH[_0xa590('0x12')][_0xa590('0x13')](util[_0xa590('0x14')]('SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t',QUERY),{'type':dbH[_0xa590('0x12')][_0xa590('0x15')]['SELECT']});})['then'](function(_0x2954af){if(!_0x2954af[0x0]['num']){return analyticExtractedReport(_0xa590('0x16'));}var _0x6ca5c8=[];var _0x1d218c=0x0;if(_0x3e59f3[_0xa590('0xf')]){if(_0x2954af&&_0x2954af[_0xa590('0x17')]){var _0x114654=_[_0xa590('0x18')](_0x2954af[0x0][_0xa590('0x19')]/_0x397b6c);var _0x4f4075=Number[_0xa590('0x1a')](_0x2954af[0x0][_0xa590('0x19')]/_0x397b6c)?_0x2954af[0x0][_0xa590('0x19')]%_0x397b6c:0x0;_0x114654[_0xa590('0x1b')](function(_0x5b4317){if(_0x5b4317>0x0){_0x1d218c+=_0x397b6c;}_0x6ca5c8[_0xa590('0x1c')](dbH[_0xa590('0x12')][_0xa590('0x13')](util[_0xa590('0x14')](_0xa590('0x1d'),QUERY,_0x397b6c,_0x1d218c),{'type':dbH[_0xa590('0x12')][_0xa590('0x15')][_0xa590('0x1e')]}));});if(_0x4f4075>0x0){_0x1d218c+=_0x397b6c;_0x6ca5c8['push'](dbH[_0xa590('0x12')][_0xa590('0x13')](util['format']('%s\x20limit\x20%d\x20OFFSET\x20%d',QUERY,_0x4f4075,_0x1d218c),{'type':dbH[_0xa590('0x12')][_0xa590('0x15')][_0xa590('0x1e')]}));}}}else{_0x6ca5c8[_0xa590('0x1c')](dbH[_0xa590('0x12')]['query'](QUERY,{'type':dbH[_0xa590('0x12')][_0xa590('0x15')][_0xa590('0x1e')]}));}var _0x257297=path[_0xa590('0x1f')](PATH);var _0x457a32=path['basename'](PATH,_0xa590('0x20'));var _0x4fdc6e=_0x3e59f3[_0xa590('0xf')]&&_0x6ca5c8[_0xa590('0x17')]>0x1;var _0x46f7dd=[];if(!fs['existsSync'](path[_0xa590('0x21')](_0x257297,_0x457a32))&&_0x4fdc6e){fs[_0xa590('0x22')](path[_0xa590('0x21')](_0x257297,_0x457a32));}return BPromise[_0xa590('0x23')](_0x6ca5c8,function(_0x51612e){_0x46f7dd['push'](_0x51612e);})[_0xa590('0x11')](function(){for(var _0x391f8c=0x0;_0x391f8c<_0x46f7dd[_0xa590('0x17')];_0x391f8c+=0x1){var _0x115e45;var _0x3b47f1=_0x46f7dd[_0x391f8c];if(_0x4fdc6e){_0x115e45=path[_0xa590('0x21')](_0x257297,_0x457a32,util[_0xa590('0x14')]('%s%d.%s',_0x457a32,_0x391f8c,_0xa590('0x24')));}else{_0x115e45=path[_0xa590('0x21')](_0x257297,util[_0xa590('0x14')](_0xa590('0x25'),_0x457a32,_0xa590('0x24')));}fs[_0xa590('0x26')](_0x115e45,json2xls(_0x3b47f1),'binary');}})['then'](function(){if(_0x4fdc6e){return new Promise(function(_0x5e86e2){zipdir(path[_0xa590('0x21')](_0x257297,_0x457a32),{'saveTo':path['join'](_0x257297,util['format'](_0xa590('0x25'),_0x457a32,_0xa590('0x27')))},function(_0x41782a,_0x2cbe1a){rimraf(path['join'](_0x257297,_0x457a32),function(){});_0x5e86e2(_0xa590('0x28'));});});}})[_0xa590('0x11')](function(){logger['info'](util[_0xa590('0x14')](_0xa590('0x29'),EXTRACTED_REPORT_ID,_0xa590('0xc')));return analyticExtractedReport(_0xa590('0x2a'),_0x4fdc6e?util[_0xa590('0x14')]('%s.%s',_0x457a32,_0x4fdc6e?_0xa590('0x27'):'xlsx'):null);});})[_0xa590('0x2b')](function(_0x15f2c5){logger[_0xa590('0xa')](util[_0xa590('0x14')]('Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,_0xa590('0xc')),util[_0xa590('0x2c')](_0x15f2c5,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0xa590('0x2d'));})[_0xa590('0x2e')](function(){process[_0xa590('0x2f')](EXIT_CODE);});}main();
\ No newline at end of file
+var _0xcf98=['../../config/logger','analytics','argv','savename','info','Setting','find','splitSizeXlsx','query','format','SELECT\x20count(*)\x20as\x20num\x20FROM\x20(%s)\x20t','sequelize','QueryTypes','SELECT','then','num','Empty','split','length','range','isInteger','forEach','%s\x20limit\x20%d\x20OFFSET\x20%d','push','dirname','.xlsx','existsSync','mkdirSync','join','each','xlsx','writeFileSync','binary','%s.%s','zip','zip\x20finished','XLSX','Completed','catch','Error\x20during\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format','inspect','Failed','finally','exit','util','path','lodash','json2xls','zip-dir','rimraf','../../mysqldb','dbH'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xcf98,0xc8));var _0x8cf9=function(_0x4bc857,_0x143504){_0x4bc857=_0x4bc857-0x0;var _0x5dbde4=_0xcf98[_0x4bc857];return _0x5dbde4;};'use strict';var util=require(_0x8cf9('0x0'));var path=require(_0x8cf9('0x1'));var _=require(_0x8cf9('0x2'));var fs=require('fs');var json2xls=require(_0x8cf9('0x3'));var BPromise=require('bluebird');var zipdir=require(_0x8cf9('0x4'));var rimraf=require(_0x8cf9('0x5'));var db=require(_0x8cf9('0x6'))['db'];var dbH=require(_0x8cf9('0x6'))[_0x8cf9('0x7')];var logger=require(_0x8cf9('0x8'))(_0x8cf9('0x9'));var EXTRACTED_REPORT_ID=Number(process[_0x8cf9('0xa')][0x2]);var QUERY=process[_0x8cf9('0xa')][0x3];var PATH=process[_0x8cf9('0xa')][0x4];var EXIT_CODE=0x0;function analyticExtractedReport(_0xd6c522,_0x1ae5ea){var _0x51cd13={'status':_0xd6c522};var _0x20e198={'where':{'id':EXTRACTED_REPORT_ID}};if(_0x1ae5ea){_0x51cd13[_0x8cf9('0xb')]=_0x1ae5ea;}return db['AnalyticExtractedReport']['update'](_0x51cd13,_0x20e198);}function main(){var _0x539396=0x1388;var _0x5db4d0;logger[_0x8cf9('0xc')](util['format']('Start\x20extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format',EXTRACTED_REPORT_ID,'XLSX'));return db[_0x8cf9('0xd')][_0x8cf9('0xe')]({'where':{'id':0x1},'raw':!![],'attributes':['id','split','splitSizeXlsx']})['then'](function(_0x433b06){if(_0x433b06){_0x5db4d0=_0x433b06;_0x539396=_0x5db4d0[_0x8cf9('0xf')]||0x1388;}})['then'](function(){return dbH['sequelize'][_0x8cf9('0x10')](util[_0x8cf9('0x11')](_0x8cf9('0x12'),QUERY),{'type':dbH[_0x8cf9('0x13')][_0x8cf9('0x14')][_0x8cf9('0x15')]});})[_0x8cf9('0x16')](function(_0x5468c8){if(!_0x5468c8[0x0][_0x8cf9('0x17')]){return analyticExtractedReport(_0x8cf9('0x18'));}var _0x2d9095=[];var _0x47df89=0x0;if(_0x5db4d0[_0x8cf9('0x19')]){if(_0x5468c8&&_0x5468c8[_0x8cf9('0x1a')]){var _0x16b7bd=_[_0x8cf9('0x1b')](_0x5468c8[0x0][_0x8cf9('0x17')]/_0x539396);var _0x11a4ed=Number[_0x8cf9('0x1c')](_0x5468c8[0x0][_0x8cf9('0x17')]/_0x539396)?_0x5468c8[0x0][_0x8cf9('0x17')]%_0x539396:0x0;_0x16b7bd[_0x8cf9('0x1d')](function(_0x1ad5ba){if(_0x1ad5ba>0x0){_0x47df89+=_0x539396;}_0x2d9095['push'](dbH[_0x8cf9('0x13')][_0x8cf9('0x10')](util[_0x8cf9('0x11')](_0x8cf9('0x1e'),QUERY,_0x539396,_0x47df89),{'type':dbH[_0x8cf9('0x13')]['QueryTypes']['SELECT']}));});if(_0x11a4ed>0x0){_0x47df89+=_0x539396;_0x2d9095['push'](dbH[_0x8cf9('0x13')][_0x8cf9('0x10')](util[_0x8cf9('0x11')](_0x8cf9('0x1e'),QUERY,_0x11a4ed,_0x47df89),{'type':dbH['sequelize'][_0x8cf9('0x14')][_0x8cf9('0x15')]}));}}}else{_0x2d9095[_0x8cf9('0x1f')](dbH[_0x8cf9('0x13')][_0x8cf9('0x10')](QUERY,{'type':dbH[_0x8cf9('0x13')][_0x8cf9('0x14')][_0x8cf9('0x15')]}));}var _0x55680c=path[_0x8cf9('0x20')](PATH);var _0x108da5=path['basename'](PATH,_0x8cf9('0x21'));var _0x52291f=_0x5db4d0[_0x8cf9('0x19')]&&_0x2d9095[_0x8cf9('0x1a')]>0x1;var _0x2bf56f=[];if(!fs[_0x8cf9('0x22')](path['join'](_0x55680c,_0x108da5))&&_0x52291f){fs[_0x8cf9('0x23')](path[_0x8cf9('0x24')](_0x55680c,_0x108da5));}return BPromise[_0x8cf9('0x25')](_0x2d9095,function(_0x50d7f3){_0x2bf56f[_0x8cf9('0x1f')](_0x50d7f3);})['then'](function(){for(var _0x53c854=0x0;_0x53c854<_0x2bf56f['length'];_0x53c854+=0x1){var _0x28645f;var _0x28a882=_0x2bf56f[_0x53c854];if(_0x52291f){_0x28645f=path[_0x8cf9('0x24')](_0x55680c,_0x108da5,util['format']('%s%d.%s',_0x108da5,_0x53c854,_0x8cf9('0x26')));}else{_0x28645f=path[_0x8cf9('0x24')](_0x55680c,util['format']('%s.%s',_0x108da5,_0x8cf9('0x26')));}fs[_0x8cf9('0x27')](_0x28645f,json2xls(_0x28a882),_0x8cf9('0x28'));}})[_0x8cf9('0x16')](function(){if(_0x52291f){return new Promise(function(_0x2d46fb){zipdir(path[_0x8cf9('0x24')](_0x55680c,_0x108da5),{'saveTo':path[_0x8cf9('0x24')](_0x55680c,util['format'](_0x8cf9('0x29'),_0x108da5,_0x8cf9('0x2a')))},function(_0x1f4a13,_0x1ea6a8){rimraf(path['join'](_0x55680c,_0x108da5),function(){});_0x2d46fb(_0x8cf9('0x2b'));});});}})['then'](function(){logger[_0x8cf9('0xc')](util['format']('Extraction\x20report\x20with\x20id\x20%d\x20in\x20%s\x20format\x20completed',EXTRACTED_REPORT_ID,_0x8cf9('0x2c')));return analyticExtractedReport(_0x8cf9('0x2d'),_0x52291f?util[_0x8cf9('0x11')](_0x8cf9('0x29'),_0x108da5,_0x52291f?_0x8cf9('0x2a'):'xlsx'):null);});})[_0x8cf9('0x2e')](function(_0x3e3b2a){logger['info'](util[_0x8cf9('0x11')](_0x8cf9('0x2f'),EXTRACTED_REPORT_ID,_0x8cf9('0x2c')),util[_0x8cf9('0x30')](_0x3e3b2a,{'showHidden':![],'depth':null}));EXIT_CODE=0x1;return analyticExtractedReport(_0x8cf9('0x31'));})[_0x8cf9('0x32')](function(){process[_0x8cf9('0x33')](EXIT_CODE);});}main();
\ No newline at end of file
index 609043b..aef5fbe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5c0d=['Set','format','VoiceExtensionId','inbound','push','CDR(routeid)=','context','outbound','CDR(destination)=','cutdigits','ExecIf','):Goto(','CDR(prefix)=${EXTEN:0:','CDR(prefix)=noprefix','outboundrouteid=','recordingFormat','_XCALLY_MIXMONITOR_FORMAT=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt','updatedAt','interval','*,*,*,*','intervals','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','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','XCALLY-MOTION-ANSWER=1','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','splice',',${EXTEN},','last','concat','transaction','destroy','bulkCreate','sortBy','catch','lodash','util','models','Interval','findAll','then','VoiceExtension','IntervalId','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','playback','hasOwnProperty','priority','extension','find','extensions','type'];(function(_0x23b411,_0x8a755e){var _0x4d8915=function(_0x32047d){while(--_0x32047d){_0x23b411['push'](_0x23b411['shift']());}};_0x4d8915(++_0x8a755e);}(_0x5c0d,0xbb));var _0xd5c0=function(_0x26b8b5,_0xf5c2c1){_0x26b8b5=_0x26b8b5-0x0;var _0x2150a9=_0x5c0d[_0x26b8b5];return _0x2150a9;};'use strict';var _=require(_0xd5c0('0x0'));var util=require(_0xd5c0('0x1'));function rewrite(_0x25d413,_0xf70ada){var _0x357ff0=this;return _0x25d413[_0xd5c0('0x2')][_0xd5c0('0x3')][_0xd5c0('0x4')]({'raw':!![]})[_0xd5c0('0x5')](function(_0x26b768){_0x357ff0['intervals']=_0x26b768;return _0x25d413[_0xd5c0('0x2')][_0xd5c0('0x6')][_0xd5c0('0x4')]({'where':{'IntervalId':_0xf70ada[_0xd5c0('0x7')]},'raw':!![]});})['then'](function(_0x589d35){return _0x25d413['models'][_0xd5c0('0x6')][_0xd5c0('0x4')]({'where':{'exten':{'$in':_['uniq'](_['map'](_0x589d35,_0xd5c0('0x8')))}},'order':[{'raw':_0xd5c0('0x9')}],'raw':!![]});})[_0xd5c0('0x5')](function(_0x1cfe52){var _0x41d3cc=_[_0xd5c0('0xa')](_0x1cfe52,{'priority':'1'});var _0x5db4aa=_[_0xd5c0('0xa')](_0x1cfe52,{'isApp':0x1});var _0x2e170c=_[_0xd5c0('0xb')](_0x5db4aa,'exten');var _0x4aee64=[_0xd5c0('0xc'),_0xd5c0('0xd')];var _0xec8765=[];var _0x24972d=[];for(var _0x3c8912 in _0x2e170c){if(_0x2e170c[_0xd5c0('0xe')](_0x3c8912)){_0x357ff0[_0xd5c0('0xf')]=0x2;_0x357ff0['extensions']=[];_0x357ff0[_0xd5c0('0x10')]=_[_0xd5c0('0x11')](_0x41d3cc,{'exten':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x8')]});_0x357ff0[_0xd5c0('0x12')]['push']({'type':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x13')],'app':_0xd5c0('0x14'),'appdata':util[_0xd5c0('0x15')]('CDR(type)=%s',_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x13')]),'context':_0x2e170c[_0x3c8912][0x0]['context'],'exten':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x8')],'priority':_0x357ff0[_0xd5c0('0xf')]++,'VoiceExtensionId':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x16')]});if(_0x2e170c[_0x3c8912][0x0]['type']===_0xd5c0('0x17')){_0x357ff0['extensions'][_0xd5c0('0x18')]({'type':_0x2e170c[_0x3c8912][0x0]['type'],'app':_0xd5c0('0x14'),'appdata':_0xd5c0('0x19')+_0x2e170c[_0x3c8912][0x0]['VoiceExtensionId'],'context':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x1a')],'exten':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x8')],'priority':_0x357ff0['priority']++,'VoiceExtensionId':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x16')]});}else if(_0x2e170c[_0x3c8912][0x0]['type']===_0xd5c0('0x1b')){if(_0x357ff0[_0xd5c0('0x10')]){_0x357ff0[_0xd5c0('0x12')][_0xd5c0('0x18')]({'type':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x13')],'app':_0xd5c0('0x14'),'appdata':_0xd5c0('0x1c')+(_0x357ff0[_0xd5c0('0x10')]['cutdigits']?'${EXTEN:'+_0x357ff0[_0xd5c0('0x10')][_0xd5c0('0x1d')]+'}':'${EXTEN}'),'context':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x1a')],'exten':_0x2e170c[_0x3c8912][0x0]['exten'],'priority':_0x357ff0[_0xd5c0('0xf')]++,'VoiceExtensionId':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x16')]});}_0x357ff0[_0xd5c0('0x12')][_0xd5c0('0x18')]({'type':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x13')],'app':'Set','appdata':_0xd5c0('0x19')+_0x2e170c[_0x3c8912][0x0]['VoiceExtensionId'],'context':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x1a')],'exten':_0x2e170c[_0x3c8912][0x0]['exten'],'priority':_0x357ff0[_0xd5c0('0xf')]++,'VoiceExtensionId':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x16')]});var _0x361efe=_0x357ff0['priority']++;_0x357ff0['extensions'][_0xd5c0('0x18')]({'type':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x13')],'app':_0xd5c0('0x1e'),'appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x361efe+0x2)+_0xd5c0('0x1f')+(_0x361efe+0x1)+')','context':_0x2e170c[_0x3c8912][0x0]['context'],'exten':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x8')],'priority':_0x361efe,'VoiceExtensionId':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x16')]});if(_0x357ff0[_0xd5c0('0x10')]){_0x357ff0[_0xd5c0('0x12')]['push']({'type':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x13')],'app':_0xd5c0('0x14'),'appdata':_0x357ff0[_0xd5c0('0x10')][_0xd5c0('0x1d')]?_0xd5c0('0x20')+_0x357ff0[_0xd5c0('0x10')]['cutdigits']+'}':_0xd5c0('0x21'),'context':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x1a')],'exten':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x8')],'priority':_0x357ff0[_0xd5c0('0xf')]++,'VoiceExtensionId':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x16')]});}_0x357ff0[_0xd5c0('0x12')]['push']({'type':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x13')],'app':_0xd5c0('0x14'),'appdata':_0xd5c0('0x22')+_0x2e170c[_0x3c8912][0x0]['VoiceExtensionId'],'context':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x1a')],'exten':_0x2e170c[_0x3c8912][0x0]['exten'],'priority':_0x357ff0[_0xd5c0('0xf')]++,'VoiceExtensionId':_0x2e170c[_0x3c8912][0x0]['VoiceExtensionId']});if(_0x357ff0['extension']&&_0x357ff0['extension'][_0xd5c0('0xe')](_0xd5c0('0x23'))&&_0x357ff0[_0xd5c0('0x10')][_0xd5c0('0x23')]!=='none'){_0x357ff0[_0xd5c0('0x12')][_0xd5c0('0x18')]({'type':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x13')],'app':_0xd5c0('0x14'),'appdata':'_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','context':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x1a')],'exten':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x8')],'priority':_0x357ff0[_0xd5c0('0xf')]++,'VoiceExtensionId':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x16')]});_0x357ff0[_0xd5c0('0x12')][_0xd5c0('0x18')]({'type':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x13')],'app':'Set','appdata':_0xd5c0('0x24')+_0x357ff0[_0xd5c0('0x10')][_0xd5c0('0x23')]||'wav','context':_0x2e170c[_0x3c8912][0x0]['context'],'exten':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x8')],'priority':_0x357ff0[_0xd5c0('0xf')]++,'VoiceExtensionId':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x16')]});}}_0x357ff0['extensions']['push']({'type':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x13')],'app':'Set','appdata':_0xd5c0('0x25'),'context':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x1a')],'exten':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x8')],'priority':_0x357ff0[_0xd5c0('0xf')]++,'VoiceExtensionId':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x16')]});_0x357ff0[_0xd5c0('0x12')][_0xd5c0('0x18')]({'type':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x13')],'app':_0xd5c0('0x14'),'appdata':_0xd5c0('0x26'),'context':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x1a')],'exten':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x8')],'priority':_0x357ff0[_0xd5c0('0xf')]++,'VoiceExtensionId':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x16')]});_0x357ff0[_0xd5c0('0x12')][_0xd5c0('0x18')]({'type':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x13')],'app':_0xd5c0('0x14'),'appdata':_0xd5c0('0x27'),'context':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x1a')],'exten':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x8')],'priority':_0x357ff0['priority']++,'VoiceExtensionId':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x16')]});for(var _0x3ceabd=0x0,_0x3f918d=0x0;_0x3ceabd<_0x2e170c[_0x3c8912][_0xd5c0('0x28')];_0x3ceabd+=0x1,_0x3f918d=0x0){var _0x28c72c=_0x2e170c[_0x3c8912][_0x3ceabd];if(_0x28c72c['type']){_0x28c72c[_0xd5c0('0x13')]=_0x28c72c[_0xd5c0('0x13')][_0xd5c0('0x29')]();}var _0x5b20ed=[];var _0x15f404=[];delete _0x28c72c['id'];delete _0x28c72c[_0xd5c0('0x2a')];delete _0x28c72c[_0xd5c0('0x2b')];var _0x4396e9=_0x28c72c[_0xd5c0('0x2c')]!==_0xd5c0('0x2d')?[_0x28c72c[_0xd5c0('0x2c')]]:_0x28c72c['IntervalId']?_['map'](_[_0xd5c0('0xa')](_0x357ff0[_0xd5c0('0x2e')],{'IntervalId':_0x28c72c[_0xd5c0('0x7')]}),'interval'):[];if(_0x28c72c[_0xd5c0('0xe')](_0xd5c0('0x2f'))){if(_0x28c72c[_0xd5c0('0x2f')]&&_0x28c72c[_0xd5c0('0x2f')]!=='--'){_0x5b20ed[_0xd5c0('0x18')]({'type':_0x28c72c[_0xd5c0('0x13')],'app':_0xd5c0('0x14'),'appdata':_0xd5c0('0x30')+_0x28c72c['tag'],'context':_0x28c72c[_0xd5c0('0x1a')],'exten':_0x28c72c[_0xd5c0('0x8')],'priority':_0x4396e9[_0xd5c0('0x28')]+_0x357ff0[_0xd5c0('0xf')]+_0x3f918d++,'VoiceExtensionId':_0x28c72c[_0xd5c0('0x16')]});}}if(_0x28c72c[_0xd5c0('0x13')]===_0xd5c0('0x1b')&&_0x28c72c['hasOwnProperty'](_0xd5c0('0x31'))){if(_0x28c72c[_0xd5c0('0x31')]){_0x5b20ed[_0xd5c0('0x18')]({'type':_0x28c72c[_0xd5c0('0x13')],'app':_0xd5c0('0x1e'),'appdata':_0xd5c0('0x32')+_0x28c72c['callerID']+')','context':_0x28c72c[_0xd5c0('0x1a')],'exten':_0x28c72c['exten'],'priority':_0x4396e9[_0xd5c0('0x28')]+_0x357ff0[_0xd5c0('0xf')]+_0x3f918d++,'VoiceExtensionId':_0x28c72c[_0xd5c0('0x16')]});}else{_0x5b20ed[_0xd5c0('0x18')]({'type':_0x28c72c[_0xd5c0('0x13')],'app':_0xd5c0('0x1e'),'appdata':_0xd5c0('0x33'),'context':_0x28c72c['context'],'exten':_0x28c72c['exten'],'priority':_0x4396e9[_0xd5c0('0x28')]+_0x357ff0[_0xd5c0('0xf')]+_0x3f918d++,'VoiceExtensionId':_0x28c72c[_0xd5c0('0x16')]});}}if(_0x28c72c['hasOwnProperty'](_0xd5c0('0x34'))){if(_0x4aee64[_0xd5c0('0x35')](_0x28c72c[_0xd5c0('0x36')][_0xd5c0('0x29')]())>=0x0&&_0x28c72c[_0xd5c0('0x37')]!==_0xd5c0('0x38')){if(_0x28c72c['answer']){_0x5b20ed[_0xd5c0('0x18')]({'type':_0x28c72c[_0xd5c0('0x13')],'app':_0xd5c0('0x1e'),'appdata':_0xd5c0('0x39'),'context':_0x28c72c[_0xd5c0('0x1a')],'exten':_0x28c72c['exten'],'priority':_0x4396e9['length']+_0x357ff0['priority']+_0x3f918d++,'VoiceExtensionId':_0x28c72c['VoiceExtensionId']});_0x5b20ed['push']({'type':_0x28c72c[_0xd5c0('0x13')],'app':_0xd5c0('0x14'),'appdata':_0xd5c0('0x3a'),'context':_0x28c72c[_0xd5c0('0x1a')],'exten':_0x28c72c[_0xd5c0('0x8')],'priority':_0x4396e9[_0xd5c0('0x28')]+_0x357ff0[_0xd5c0('0xf')]+_0x3f918d++,'VoiceExtensionId':_0x28c72c[_0xd5c0('0x16')]});}else{_0x5b20ed['push']({'type':_0x28c72c[_0xd5c0('0x13')],'app':'ExecIf','appdata':_0xd5c0('0x3b'),'context':_0x28c72c['context'],'exten':_0x28c72c[_0xd5c0('0x8')],'priority':_0x4396e9['length']+_0x357ff0[_0xd5c0('0xf')]+_0x3f918d++,'VoiceExtensionId':_0x28c72c['VoiceExtensionId']});_0x5b20ed[_0xd5c0('0x18')]({'type':_0x28c72c[_0xd5c0('0x13')],'app':_0xd5c0('0x14'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x28c72c[_0xd5c0('0x1a')],'exten':_0x28c72c[_0xd5c0('0x8')],'priority':_0x4396e9[_0xd5c0('0x28')]+_0x357ff0[_0xd5c0('0xf')]+_0x3f918d++,'VoiceExtensionId':_0x28c72c[_0xd5c0('0x16')]});}}}for(var _0xef8ebf=0x0;_0xef8ebf<_0x4396e9['length'];_0xef8ebf+=0x1){var _0x544f36=_0x357ff0[_0xd5c0('0xf')]+_0x4396e9[_0xd5c0('0x28')];var _0x483269=_0xef8ebf===_0x4396e9[_0xd5c0('0x28')]-0x1?_0x357ff0[_0xd5c0('0xf')]+_0x5b20ed[_0xd5c0('0x28')]+_0x15f404[_0xd5c0('0x28')]+0x2:_0x357ff0['priority']+_0xef8ebf+0x1;_0x5b20ed[_0xd5c0('0x3c')](_0xef8ebf,0x0,{'type':_0x28c72c[_0xd5c0('0x13')],'app':'GotoIfTime','appdata':_0x4396e9[_0xef8ebf]+'?'+_0x28c72c['context']+_0xd5c0('0x3d')+_0x544f36+':'+_0x28c72c['context']+_0xd5c0('0x3d')+_0x483269,'exten':_0x28c72c[_0xd5c0('0x8')],'context':_0x28c72c[_0xd5c0('0x1a')],'priority':_0x357ff0['priority']+_0xef8ebf,'VoiceExtensionId':_0x2e170c[_0x3c8912][0x0]['VoiceExtensionId']});}_0x28c72c[_0xd5c0('0xf')]=_0x5b20ed[_0xd5c0('0x28')]?_[_0xd5c0('0x3e')](_0x5b20ed)[_0xd5c0('0xf')]+0x1:_0x357ff0[_0xd5c0('0xf')];_0x357ff0[_0xd5c0('0xf')]=(_0x15f404[_0xd5c0('0x28')]?_['last'](_0x15f404)[_0xd5c0('0xf')]:_0x28c72c[_0xd5c0('0xf')])+0x1;_0x357ff0[_0xd5c0('0x12')]=_[_0xd5c0('0x3f')](_0x357ff0[_0xd5c0('0x12')],_0x5b20ed,[_0x28c72c],_0x15f404);}_0x357ff0[_0xd5c0('0x12')][_0xd5c0('0x18')]({'type':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x13')],'app':'Hangup','exten':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x8')],'context':_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x1a')],'priority':_0x357ff0[_0xd5c0('0xf')],'VoiceExtensionId':_0x2e170c[_0x3c8912][0x0]['VoiceExtensionId']});_0xec8765[_0xd5c0('0x18')](_0x2e170c[_0x3c8912][0x0][_0xd5c0('0x16')]);_0x24972d=_[_0xd5c0('0x3f')](_0x24972d,_0x357ff0[_0xd5c0('0x12')]);}}return _0x25d413[_0xd5c0('0x40')](function(_0x16a3c4){return _0x25d413[_0xd5c0('0x2')][_0xd5c0('0x6')][_0xd5c0('0x41')]({'where':{'VoiceExtensionId':{'$in':_0xec8765}},'transaction':_0x16a3c4})[_0xd5c0('0x5')](function(_0x216383){return _0x25d413['models'][_0xd5c0('0x6')][_0xd5c0('0x42')](_[_0xd5c0('0x43')](_0x24972d,_0xd5c0('0xf')),{'transaction':_0x16a3c4});});});})[_0xd5c0('0x44')](function(_0x23583a){console['error'](_0x23583a);});}exports['rewrite']=rewrite;
\ No newline at end of file
+var _0x5275=['hasOwnProperty','priority','find','extensions','push','type','Set','format','CDR(type)=%s','context','VoiceExtensionId','CDR(routeid)=','extension','${EXTEN:','cutdigits','${EXTEN}','):Goto(','CDR(prefix)=${EXTEN:0:','outboundrouteid=','recordingFormat','none','_XCALLY_MIXMONITOR_UNIQUEID=${UNIQUEID}','_XCALLY_MIXMONITOR_FORMAT=','XCALLY-MOTION-ANSWER=0','XCALLY-MOTION-PROGRESS=0','MONITOR_OPTIONS=ab','length','toLowerCase','createdAt','updatedAt','intervals','interval','tag','outbound','callerID','ExecIf','$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):NoOp(No\x20number\x20available)','answer','app','appType','custom','$[${XCALLY-MOTION-ANSWER}=0]?Answer','$[${XCALLY-MOTION-PROGRESS}=0]?Progress','GotoIfTime',',${EXTEN},','last','concat','Hangup','transaction','bulkCreate','sortBy','catch','error','rewrite','lodash','models','Interval','findAll','then','VoiceExtension','IntervalId','uniq','map','exten','CAST(priority\x20AS\x20UNSIGNED)','filter','groupBy','queue','playback'];(function(_0xfae23b,_0x2be4ba){var _0x200640=function(_0x4ae258){while(--_0x4ae258){_0xfae23b['push'](_0xfae23b['shift']());}};_0x200640(++_0x2be4ba);}(_0x5275,0x1d4));var _0x5527=function(_0x333767,_0x220733){_0x333767=_0x333767-0x0;var _0x42a755=_0x5275[_0x333767];return _0x42a755;};'use strict';var _=require(_0x5527('0x0'));var util=require('util');function rewrite(_0x444a79,_0x5125ef){var _0x38b5ff=this;return _0x444a79[_0x5527('0x1')][_0x5527('0x2')][_0x5527('0x3')]({'raw':!![]})[_0x5527('0x4')](function(_0x546ca8){_0x38b5ff['intervals']=_0x546ca8;return _0x444a79[_0x5527('0x1')][_0x5527('0x5')][_0x5527('0x3')]({'where':{'IntervalId':_0x5125ef[_0x5527('0x6')]},'raw':!![]});})[_0x5527('0x4')](function(_0x2a77fb){return _0x444a79[_0x5527('0x1')][_0x5527('0x5')][_0x5527('0x3')]({'where':{'exten':{'$in':_[_0x5527('0x7')](_[_0x5527('0x8')](_0x2a77fb,_0x5527('0x9')))}},'order':[{'raw':_0x5527('0xa')}],'raw':!![]});})[_0x5527('0x4')](function(_0x320859){var _0x5e55c8=_[_0x5527('0xb')](_0x320859,{'priority':'1'});var _0x5ea5db=_[_0x5527('0xb')](_0x320859,{'isApp':0x1});var _0x5700ee=_[_0x5527('0xc')](_0x5ea5db,_0x5527('0x9'));var _0xdb8d16=[_0x5527('0xd'),_0x5527('0xe')];var _0x10b5b1=[];var _0x39a598=[];for(var _0x511e70 in _0x5700ee){if(_0x5700ee[_0x5527('0xf')](_0x511e70)){_0x38b5ff[_0x5527('0x10')]=0x2;_0x38b5ff['extensions']=[];_0x38b5ff['extension']=_[_0x5527('0x11')](_0x5e55c8,{'exten':_0x5700ee[_0x511e70][0x0]['exten']});_0x38b5ff[_0x5527('0x12')][_0x5527('0x13')]({'type':_0x5700ee[_0x511e70][0x0][_0x5527('0x14')],'app':_0x5527('0x15'),'appdata':util[_0x5527('0x16')](_0x5527('0x17'),_0x5700ee[_0x511e70][0x0][_0x5527('0x14')]),'context':_0x5700ee[_0x511e70][0x0][_0x5527('0x18')],'exten':_0x5700ee[_0x511e70][0x0][_0x5527('0x9')],'priority':_0x38b5ff['priority']++,'VoiceExtensionId':_0x5700ee[_0x511e70][0x0][_0x5527('0x19')]});if(_0x5700ee[_0x511e70][0x0][_0x5527('0x14')]==='inbound'){_0x38b5ff[_0x5527('0x12')]['push']({'type':_0x5700ee[_0x511e70][0x0][_0x5527('0x14')],'app':_0x5527('0x15'),'appdata':_0x5527('0x1a')+_0x5700ee[_0x511e70][0x0][_0x5527('0x19')],'context':_0x5700ee[_0x511e70][0x0][_0x5527('0x18')],'exten':_0x5700ee[_0x511e70][0x0][_0x5527('0x9')],'priority':_0x38b5ff[_0x5527('0x10')]++,'VoiceExtensionId':_0x5700ee[_0x511e70][0x0][_0x5527('0x19')]});}else if(_0x5700ee[_0x511e70][0x0][_0x5527('0x14')]==='outbound'){if(_0x38b5ff['extension']){_0x38b5ff['extensions'][_0x5527('0x13')]({'type':_0x5700ee[_0x511e70][0x0][_0x5527('0x14')],'app':'Set','appdata':'CDR(destination)='+(_0x38b5ff[_0x5527('0x1b')]['cutdigits']?_0x5527('0x1c')+_0x38b5ff[_0x5527('0x1b')][_0x5527('0x1d')]+'}':_0x5527('0x1e')),'context':_0x5700ee[_0x511e70][0x0][_0x5527('0x18')],'exten':_0x5700ee[_0x511e70][0x0][_0x5527('0x9')],'priority':_0x38b5ff['priority']++,'VoiceExtensionId':_0x5700ee[_0x511e70][0x0]['VoiceExtensionId']});}_0x38b5ff['extensions'][_0x5527('0x13')]({'type':_0x5700ee[_0x511e70][0x0][_0x5527('0x14')],'app':_0x5527('0x15'),'appdata':_0x5527('0x1a')+_0x5700ee[_0x511e70][0x0][_0x5527('0x19')],'context':_0x5700ee[_0x511e70][0x0][_0x5527('0x18')],'exten':_0x5700ee[_0x511e70][0x0][_0x5527('0x9')],'priority':_0x38b5ff[_0x5527('0x10')]++,'VoiceExtensionId':_0x5700ee[_0x511e70][0x0][_0x5527('0x19')]});var _0x2e7b8b=_0x38b5ff[_0x5527('0x10')]++;_0x38b5ff[_0x5527('0x12')][_0x5527('0x13')]({'type':_0x5700ee[_0x511e70][0x0][_0x5527('0x14')],'app':'ExecIf','appdata':'$[${LEN(${CDR(prefix)})}\x20>\x200]?Goto('+(_0x2e7b8b+0x2)+_0x5527('0x1f')+(_0x2e7b8b+0x1)+')','context':_0x5700ee[_0x511e70][0x0][_0x5527('0x18')],'exten':_0x5700ee[_0x511e70][0x0][_0x5527('0x9')],'priority':_0x2e7b8b,'VoiceExtensionId':_0x5700ee[_0x511e70][0x0][_0x5527('0x19')]});if(_0x38b5ff[_0x5527('0x1b')]){_0x38b5ff[_0x5527('0x12')][_0x5527('0x13')]({'type':_0x5700ee[_0x511e70][0x0][_0x5527('0x14')],'app':'Set','appdata':_0x38b5ff[_0x5527('0x1b')]['cutdigits']?_0x5527('0x20')+_0x38b5ff[_0x5527('0x1b')][_0x5527('0x1d')]+'}':'CDR(prefix)=noprefix','context':_0x5700ee[_0x511e70][0x0][_0x5527('0x18')],'exten':_0x5700ee[_0x511e70][0x0]['exten'],'priority':_0x38b5ff[_0x5527('0x10')]++,'VoiceExtensionId':_0x5700ee[_0x511e70][0x0]['VoiceExtensionId']});}_0x38b5ff[_0x5527('0x12')][_0x5527('0x13')]({'type':_0x5700ee[_0x511e70][0x0][_0x5527('0x14')],'app':_0x5527('0x15'),'appdata':_0x5527('0x21')+_0x5700ee[_0x511e70][0x0][_0x5527('0x19')],'context':_0x5700ee[_0x511e70][0x0]['context'],'exten':_0x5700ee[_0x511e70][0x0]['exten'],'priority':_0x38b5ff[_0x5527('0x10')]++,'VoiceExtensionId':_0x5700ee[_0x511e70][0x0][_0x5527('0x19')]});if(_0x38b5ff['extension']&&_0x38b5ff[_0x5527('0x1b')][_0x5527('0xf')](_0x5527('0x22'))&&_0x38b5ff['extension'][_0x5527('0x22')]!==_0x5527('0x23')){_0x38b5ff[_0x5527('0x12')][_0x5527('0x13')]({'type':_0x5700ee[_0x511e70][0x0][_0x5527('0x14')],'app':_0x5527('0x15'),'appdata':_0x5527('0x24'),'context':_0x5700ee[_0x511e70][0x0][_0x5527('0x18')],'exten':_0x5700ee[_0x511e70][0x0]['exten'],'priority':_0x38b5ff[_0x5527('0x10')]++,'VoiceExtensionId':_0x5700ee[_0x511e70][0x0][_0x5527('0x19')]});_0x38b5ff[_0x5527('0x12')][_0x5527('0x13')]({'type':_0x5700ee[_0x511e70][0x0]['type'],'app':_0x5527('0x15'),'appdata':_0x5527('0x25')+_0x38b5ff[_0x5527('0x1b')][_0x5527('0x22')]||'wav','context':_0x5700ee[_0x511e70][0x0][_0x5527('0x18')],'exten':_0x5700ee[_0x511e70][0x0][_0x5527('0x9')],'priority':_0x38b5ff[_0x5527('0x10')]++,'VoiceExtensionId':_0x5700ee[_0x511e70][0x0][_0x5527('0x19')]});}}_0x38b5ff[_0x5527('0x12')][_0x5527('0x13')]({'type':_0x5700ee[_0x511e70][0x0][_0x5527('0x14')],'app':'Set','appdata':_0x5527('0x26'),'context':_0x5700ee[_0x511e70][0x0][_0x5527('0x18')],'exten':_0x5700ee[_0x511e70][0x0][_0x5527('0x9')],'priority':_0x38b5ff['priority']++,'VoiceExtensionId':_0x5700ee[_0x511e70][0x0]['VoiceExtensionId']});_0x38b5ff[_0x5527('0x12')]['push']({'type':_0x5700ee[_0x511e70][0x0]['type'],'app':_0x5527('0x15'),'appdata':_0x5527('0x27'),'context':_0x5700ee[_0x511e70][0x0]['context'],'exten':_0x5700ee[_0x511e70][0x0]['exten'],'priority':_0x38b5ff['priority']++,'VoiceExtensionId':_0x5700ee[_0x511e70][0x0][_0x5527('0x19')]});_0x38b5ff['extensions'][_0x5527('0x13')]({'type':_0x5700ee[_0x511e70][0x0][_0x5527('0x14')],'app':_0x5527('0x15'),'appdata':_0x5527('0x28'),'context':_0x5700ee[_0x511e70][0x0][_0x5527('0x18')],'exten':_0x5700ee[_0x511e70][0x0][_0x5527('0x9')],'priority':_0x38b5ff['priority']++,'VoiceExtensionId':_0x5700ee[_0x511e70][0x0][_0x5527('0x19')]});for(var _0x4ffb52=0x0,_0x4ae93d=0x0;_0x4ffb52<_0x5700ee[_0x511e70][_0x5527('0x29')];_0x4ffb52+=0x1,_0x4ae93d=0x0){var _0x178bb6=_0x5700ee[_0x511e70][_0x4ffb52];if(_0x178bb6[_0x5527('0x14')]){_0x178bb6['type']=_0x178bb6[_0x5527('0x14')][_0x5527('0x2a')]();}var _0xe3fcd5=[];var _0x815da2=[];delete _0x178bb6['id'];delete _0x178bb6[_0x5527('0x2b')];delete _0x178bb6[_0x5527('0x2c')];var _0x561613=_0x178bb6['interval']!=='*,*,*,*'?[_0x178bb6['interval']]:_0x178bb6[_0x5527('0x6')]?_[_0x5527('0x8')](_[_0x5527('0xb')](_0x38b5ff[_0x5527('0x2d')],{'IntervalId':_0x178bb6['IntervalId']}),_0x5527('0x2e')):[];if(_0x178bb6[_0x5527('0xf')](_0x5527('0x2f'))){if(_0x178bb6[_0x5527('0x2f')]&&_0x178bb6[_0x5527('0x2f')]!=='--'){_0xe3fcd5[_0x5527('0x13')]({'type':_0x178bb6['type'],'app':'Set','appdata':'CDR(tag)='+_0x178bb6[_0x5527('0x2f')],'context':_0x178bb6['context'],'exten':_0x178bb6[_0x5527('0x9')],'priority':_0x561613[_0x5527('0x29')]+_0x38b5ff['priority']+_0x4ae93d++,'VoiceExtensionId':_0x178bb6[_0x5527('0x19')]});}}if(_0x178bb6[_0x5527('0x14')]===_0x5527('0x30')&&_0x178bb6[_0x5527('0xf')](_0x5527('0x31'))){if(_0x178bb6[_0x5527('0x31')]){_0xe3fcd5[_0x5527('0x13')]({'type':_0x178bb6[_0x5527('0x14')],'app':_0x5527('0x32'),'appdata':'$[${LEN(${PREFIX-CALLERIDALL})}\x20>\x200]?Set(CALLERID(all)=${PREFIX-CALLERIDALL}):Set(CALLERID(all)='+_0x178bb6[_0x5527('0x31')]+')','context':_0x178bb6['context'],'exten':_0x178bb6[_0x5527('0x9')],'priority':_0x561613['length']+_0x38b5ff[_0x5527('0x10')]+_0x4ae93d++,'VoiceExtensionId':_0x178bb6[_0x5527('0x19')]});}else{_0xe3fcd5[_0x5527('0x13')]({'type':_0x178bb6[_0x5527('0x14')],'app':_0x5527('0x32'),'appdata':_0x5527('0x33'),'context':_0x178bb6[_0x5527('0x18')],'exten':_0x178bb6[_0x5527('0x9')],'priority':_0x561613[_0x5527('0x29')]+_0x38b5ff[_0x5527('0x10')]+_0x4ae93d++,'VoiceExtensionId':_0x178bb6[_0x5527('0x19')]});}}if(_0x178bb6[_0x5527('0xf')](_0x5527('0x34'))){if(_0xdb8d16['indexOf'](_0x178bb6[_0x5527('0x35')][_0x5527('0x2a')]())>=0x0&&_0x178bb6[_0x5527('0x36')]!==_0x5527('0x37')){if(_0x178bb6[_0x5527('0x34')]){_0xe3fcd5[_0x5527('0x13')]({'type':_0x178bb6[_0x5527('0x14')],'app':'ExecIf','appdata':_0x5527('0x38'),'context':_0x178bb6[_0x5527('0x18')],'exten':_0x178bb6[_0x5527('0x9')],'priority':_0x561613[_0x5527('0x29')]+_0x38b5ff[_0x5527('0x10')]+_0x4ae93d++,'VoiceExtensionId':_0x178bb6[_0x5527('0x19')]});_0xe3fcd5[_0x5527('0x13')]({'type':_0x178bb6[_0x5527('0x14')],'app':'Set','appdata':'XCALLY-MOTION-ANSWER=1','context':_0x178bb6[_0x5527('0x18')],'exten':_0x178bb6[_0x5527('0x9')],'priority':_0x561613[_0x5527('0x29')]+_0x38b5ff[_0x5527('0x10')]+_0x4ae93d++,'VoiceExtensionId':_0x178bb6[_0x5527('0x19')]});}else{_0xe3fcd5['push']({'type':_0x178bb6[_0x5527('0x14')],'app':_0x5527('0x32'),'appdata':_0x5527('0x39'),'context':_0x178bb6[_0x5527('0x18')],'exten':_0x178bb6[_0x5527('0x9')],'priority':_0x561613[_0x5527('0x29')]+_0x38b5ff[_0x5527('0x10')]+_0x4ae93d++,'VoiceExtensionId':_0x178bb6[_0x5527('0x19')]});_0xe3fcd5[_0x5527('0x13')]({'type':_0x178bb6[_0x5527('0x14')],'app':_0x5527('0x15'),'appdata':'XCALLY-MOTION-PROGRESS=1','context':_0x178bb6[_0x5527('0x18')],'exten':_0x178bb6['exten'],'priority':_0x561613[_0x5527('0x29')]+_0x38b5ff[_0x5527('0x10')]+_0x4ae93d++,'VoiceExtensionId':_0x178bb6[_0x5527('0x19')]});}}}for(var _0x20fa43=0x0;_0x20fa43<_0x561613['length'];_0x20fa43+=0x1){var _0x2287e5=_0x38b5ff[_0x5527('0x10')]+_0x561613[_0x5527('0x29')];var _0x5732be=_0x20fa43===_0x561613['length']-0x1?_0x38b5ff['priority']+_0xe3fcd5[_0x5527('0x29')]+_0x815da2[_0x5527('0x29')]+0x2:_0x38b5ff[_0x5527('0x10')]+_0x20fa43+0x1;_0xe3fcd5['splice'](_0x20fa43,0x0,{'type':_0x178bb6[_0x5527('0x14')],'app':_0x5527('0x3a'),'appdata':_0x561613[_0x20fa43]+'?'+_0x178bb6[_0x5527('0x18')]+_0x5527('0x3b')+_0x2287e5+':'+_0x178bb6[_0x5527('0x18')]+_0x5527('0x3b')+_0x5732be,'exten':_0x178bb6[_0x5527('0x9')],'context':_0x178bb6[_0x5527('0x18')],'priority':_0x38b5ff['priority']+_0x20fa43,'VoiceExtensionId':_0x5700ee[_0x511e70][0x0][_0x5527('0x19')]});}_0x178bb6[_0x5527('0x10')]=_0xe3fcd5['length']?_[_0x5527('0x3c')](_0xe3fcd5)['priority']+0x1:_0x38b5ff[_0x5527('0x10')];_0x38b5ff['priority']=(_0x815da2[_0x5527('0x29')]?_['last'](_0x815da2)[_0x5527('0x10')]:_0x178bb6[_0x5527('0x10')])+0x1;_0x38b5ff[_0x5527('0x12')]=_[_0x5527('0x3d')](_0x38b5ff['extensions'],_0xe3fcd5,[_0x178bb6],_0x815da2);}_0x38b5ff[_0x5527('0x12')][_0x5527('0x13')]({'type':_0x5700ee[_0x511e70][0x0][_0x5527('0x14')],'app':_0x5527('0x3e'),'exten':_0x5700ee[_0x511e70][0x0]['exten'],'context':_0x5700ee[_0x511e70][0x0]['context'],'priority':_0x38b5ff[_0x5527('0x10')],'VoiceExtensionId':_0x5700ee[_0x511e70][0x0][_0x5527('0x19')]});_0x10b5b1[_0x5527('0x13')](_0x5700ee[_0x511e70][0x0][_0x5527('0x19')]);_0x39a598=_[_0x5527('0x3d')](_0x39a598,_0x38b5ff[_0x5527('0x12')]);}}return _0x444a79[_0x5527('0x3f')](function(_0x461f9d){return _0x444a79[_0x5527('0x1')][_0x5527('0x5')]['destroy']({'where':{'VoiceExtensionId':{'$in':_0x10b5b1}},'transaction':_0x461f9d})['then'](function(_0x63eb6c){return _0x444a79[_0x5527('0x1')][_0x5527('0x5')][_0x5527('0x40')](_[_0x5527('0x41')](_0x39a598,'priority'),{'transaction':_0x461f9d});});});})[_0x5527('0x42')](function(_0x125dc9){console[_0x5527('0x43')](_0x125dc9);});}exports[_0x5527('0x44')]=rewrite;
\ No newline at end of file
index 4dc1f9a..b91830e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb54=['select','field','NOW()','scheduledAt','toString','updatedAt','from','cm_contacts','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','\x20=\x20?','id\x20IN\x20?','str','calleridnum','into','cm_hopper_black','VoiceQueue','dialCheckDuplicateType','CmList','Lists','get','VoiceQueueId','sequelize','query','all','findAll','outbound','BlackLists','Campaign','always','onlyIfOpen','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','emit','resume','resolve','contact:csv_','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','info','CSV\x20import\x20process\x20stopped!','createReadStream','parse','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','util','squel','papaparse','ioredis','../../../mysqldb','../../../config/environment','api','defaults','redis','localhost','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','map','message','join','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','birthDate','YYYY-MM-DD','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','ListId','CompanyId','find','duplicate','Duplicate\x20Contact','CmContact','create','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','inspect','insert','cm_hopper','fromQuery','phone','ContactId','createdAt'];(function(_0x2aa47b,_0x2d19f0){var _0x4b05d5=function(_0xe6e71){while(--_0xe6e71){_0x2aa47b['push'](_0x2aa47b['shift']());}};_0x4b05d5(++_0x2d19f0);}(_0xdb54,0xa6));var _0x4db5=function(_0x359dd6,_0x33078c){_0x359dd6=_0x359dd6-0x0;var _0x49fb07=_0xdb54[_0x359dd6];return _0x49fb07;};'use strict';var BPromise=require('bluebird');var util=require(_0x4db5('0x0'));var _=require('lodash');var fs=require('fs');var squel=require(_0x4db5('0x1'));var Papa=require(_0x4db5('0x2'));var Redis=require(_0x4db5('0x3'));var db=require(_0x4db5('0x4'))['db'];var config=require(_0x4db5('0x5'));var logger=require('../../../config/logger')(_0x4db5('0x6'));config['redis']=_[_0x4db5('0x7')](config[_0x4db5('0x8')],{'host':_0x4db5('0x9'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config['redis']));require(_0x4db5('0xa'))[_0x4db5('0xb')](socket);try{if(!process['argv'][0x2]||process[_0x4db5('0xc')][0x2]===_0x4db5('0xd')||process[_0x4db5('0xc')][0x2]===_0x4db5('0xe')){throw new Error(_0x4db5('0xf'));}var FILEPATH=process[_0x4db5('0xc')][0x2];if(!process['argv'][0x3]||process[_0x4db5('0xc')][0x3]===_0x4db5('0xd')||process['argv'][0x3]===_0x4db5('0xe')||!process['argv'][0x4]||process[_0x4db5('0xc')][0x4]===_0x4db5('0xd')||process[_0x4db5('0xc')][0x4]===_0x4db5('0xe')){throw new Error(_0x4db5('0x10'));}var FIELDS=_['zipObject'](process[_0x4db5('0xc')][0x3][_0x4db5('0x11')](','),process[_0x4db5('0xc')][0x4][_0x4db5('0x11')](','));if(!process[_0x4db5('0xc')][0x5]||process[_0x4db5('0xc')][0x5]===_0x4db5('0xd')||process['argv'][0x5]===_0x4db5('0xe')){throw new Error(_0x4db5('0x12'));}var LISTID=process[_0x4db5('0xc')][0x5];var COMPANYID=process[_0x4db5('0xc')][0x6]&&process[_0x4db5('0xc')][0x6]!=='undefined'&&process[_0x4db5('0xc')][0x6]!==_0x4db5('0xe')?process[_0x4db5('0xc')][0x6]:null;var DUPLICATES=process[_0x4db5('0xc')][0x7]&&process['argv'][0x7]!==_0x4db5('0xd')&&process['argv'][0x7]!==_0x4db5('0xe')?process[_0x4db5('0xc')][0x7]:null;if(!process['argv'][0x8]||process[_0x4db5('0xc')][0x8]===_0x4db5('0xd')||process[_0x4db5('0xc')][0x8]===_0x4db5('0xe')){throw new Error(_0x4db5('0x13'));}var SOCKET_TIMESTAMP=process[_0x4db5('0xc')][0x8];}catch(_0x15e3f4){logger[_0x4db5('0x14')](_0x15e3f4);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(_0x362da0,_0x41bf52,_0x11342f,_0x4d42e5){var _0x1a0e9c={'message':_0x41bf52};_0x1a0e9c[_0x362da0]=!![];if(_0x11342f){_0x1a0e9c[_0x4db5('0x15')]=_0x11342f;}if(_0x4d42e5){_0x1a0e9c['index']=_0x4d42e5;}return _0x1a0e9c;}function isEmail(_0x27b1e5){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))*$/[_0x4db5('0x16')](_0x27b1e5);}function checkRow(_0x220b9a,_0x2d2218,_0xf5e222){return new BPromise(function(_0x191ff9,_0x2cdcee){if(_[_0x4db5('0x17')](_0x220b9a)){return _0x2cdcee(handleCheckRowError(_0x4db5('0x14'),_0x4db5('0x18'),null,_0xf5e222));}if(_0x220b9a[_0x4db5('0x19')]&&_0x220b9a[_0x4db5('0x19')][_0x4db5('0x1a')]){var _0x4bb591=_[_0x4db5('0x1b')](_0x220b9a['errors'],_0x4db5('0x1c'))[_0x4db5('0x1d')](';');return _0x2cdcee(handleCheckRowError(_0x4db5('0x14'),_0x4bb591,null,_0xf5e222));}var _0xa324c1={};for(var _0x3d3b85 in FIELDS){if(FIELDS[_0x4db5('0x1e')](_0x3d3b85)&&FIELDS[_0x3d3b85]){_0xa324c1[_0x3d3b85]=_0x220b9a[_0x4db5('0x1f')][0x0][FIELDS[_0x3d3b85]]||_0x220b9a[_0x4db5('0x1f')][0x0]['\ufeff'+FIELDS[_0x3d3b85]];}}if(!_0xa324c1[_0x4db5('0x20')]){return _0x2cdcee(handleCheckRowError(_0x4db5('0x14'),_0x4db5('0x21'),null,_0xf5e222));}if(!_0xa324c1['phone']){return _0x2cdcee(handleCheckRowError(_0x4db5('0x14'),'phone\x20not\x20specified!',null,_0xf5e222));}if(_0xa324c1[_0x4db5('0x22')]){var _0x3598f4=moment(_0xa324c1[_0x4db5('0x22')],_0x4db5('0x23'));if(!_0x3598f4['isValid']()){return _0x2cdcee(handleCheckRowError(_0x4db5('0x14'),_0x4db5('0x24'),null,_0xf5e222));}}if(_0xa324c1[_0x4db5('0x25')]){if(!isEmail(_0xa324c1['email'])){return _0x2cdcee(handleCheckRowError('error','email\x20format\x20is\x20not\x20valid!',null,_0xf5e222));}}_0xa324c1[_0x4db5('0x26')]=LISTID;_0xa324c1[_0x4db5('0x27')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x4db5('0x1a')]&&_0x2d2218){var _0x27fc70={};for(var _0x15f52b=0x0,_0x3fab4c=DUPLICATES[_0x4db5('0x1a')];_0x15f52b<_0x3fab4c;_0x15f52b+=0x1){_0x27fc70[DUPLICATES[_0x15f52b]]=_0xa324c1[DUPLICATES[_0x15f52b]];}var _0x65ed29=_[_0x4db5('0x28')](_0x2d2218,_0x27fc70);if(_0x65ed29){return _0x2cdcee(handleCheckRowError(_0x4db5('0x29'),_0x4db5('0x2a'),_0x65ed29,_0xf5e222));}}return db[_0x4db5('0x2b')][_0x4db5('0x2c')](_0xa324c1,{'raw':!![],'hooks':![],'fields':_[_0x4db5('0x2d')](_0xa324c1)})[_0x4db5('0x2e')](function(_0x3b82ac){if(DUPLICATES&&DUPLICATES['length']&&_0x2d2218){_0x2d2218[_0x4db5('0x2f')](_[_0x4db5('0x30')](_0xa324c1,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x3b82ac['id'];return _0x191ff9();})[_0x4db5('0x31')](function(_0x12d3a7){return _0x2cdcee(handleCheckRowError(_0x4db5('0x14'),_0x4db5('0x32')+(_0x12d3a7[_0x4db5('0x1c')]||JSON[_0x4db5('0x33')](_0x12d3a7)),null,_0xf5e222));});});}function checkHopper(){function _0xc35549(){return function(_0x31eca5){logger['error'](_0x4db5('0x34'),'checkHopper',util[_0x4db5('0x35')](_0x31eca5,{'showHidden':![],'depth':null}));};}var _0x1fb596=function(_0x4d1d17,_0x440467){var _0x1fcb49=squel[_0x4db5('0x36')]()['into'](_0x4db5('0x37'))[_0x4db5('0x38')]([_0x4db5('0x39'),'scheduledAt',_0x4db5('0x3a'),_0x4db5('0x26'),_0x440467,_0x4db5('0x3b'),'updatedAt'],squel[_0x4db5('0x3c')]()[_0x4db5('0x3d')](_0x4db5('0x39'),_0x4db5('0x39'))[_0x4db5('0x3d')](_0x4db5('0x3e'),_0x4db5('0x3f'))['field']('id',_0x4db5('0x3a'))[_0x4db5('0x3d')](LISTID['toString'](),_0x4db5('0x26'))[_0x4db5('0x3d')](_0x4d1d17['id'][_0x4db5('0x40')](),_0x440467)[_0x4db5('0x3d')]('NOW()',_0x4db5('0x3b'))['field'](_0x4db5('0x3e'),_0x4db5('0x41'))[_0x4db5('0x42')](_0x4db5('0x43'))[_0x4db5('0x44')](_0x4db5('0x45'))[_0x4db5('0x44')](_0x4db5('0x46'),LISTID[_0x4db5('0x40')]())[_0x4db5('0x44')](_0x4db5('0x47'))[_0x4db5('0x44')](_0x4db5('0x48'),squel['select']()[_0x4db5('0x3d')](_0x4db5('0x39'))[_0x4db5('0x42')](_0x4db5('0x37'))[_0x4db5('0x44')](_0x440467+_0x4db5('0x49'),_0x4d1d17['id']['toString']())))[_0x4db5('0x40')]();return _0x1fcb49;};var _0x321741=function(_0x12402d,_0x34b5d0){var _0x4466fe=squel[_0x4db5('0x36')]()['into']('cm_hopper')[_0x4db5('0x38')]([_0x4db5('0x39'),'scheduledAt',_0x4db5('0x3a'),'ListId',_0x34b5d0,_0x4db5('0x3b'),_0x4db5('0x41')],squel[_0x4db5('0x3c')]()[_0x4db5('0x3d')]('phone',_0x4db5('0x39'))['field'](_0x4db5('0x3e'),_0x4db5('0x3f'))[_0x4db5('0x3d')]('id',_0x4db5('0x3a'))[_0x4db5('0x3d')](LISTID[_0x4db5('0x40')](),'ListId')[_0x4db5('0x3d')](_0x12402d['id'][_0x4db5('0x40')](),_0x34b5d0)[_0x4db5('0x3d')](_0x4db5('0x3e'),_0x4db5('0x3b'))[_0x4db5('0x3d')](_0x4db5('0x3e'),_0x4db5('0x41'))['from']('cm_contacts')[_0x4db5('0x44')]('deletedAt\x20IS\x20NULL')[_0x4db5('0x44')](_0x4db5('0x46'),LISTID[_0x4db5('0x40')]())[_0x4db5('0x44')](_0x4db5('0x4a'),squel[_0x4db5('0x4b')](hopperContacts))['where']('phone\x20IS\x20NOT\x20NULL')[_0x4db5('0x44')]('phone\x20NOT\x20IN\x20(?)',squel[_0x4db5('0x3c')]()[_0x4db5('0x3d')](_0x4db5('0x4c'))[_0x4db5('0x42')]('cm_hopper_final')[_0x4db5('0x44')](_0x34b5d0+_0x4db5('0x49'),_0x12402d['id'][_0x4db5('0x40')]()))['where']('phone\x20NOT\x20IN\x20(?)',squel['select']()['field']('phone')['from'](_0x4db5('0x37'))['where'](_0x34b5d0+_0x4db5('0x49'),_0x12402d['id'][_0x4db5('0x40')]())))[_0x4db5('0x40')]();return _0x4466fe;};function _0x447f9c(_0x3bc530,_0x202484){var _0x9bbfde=squel[_0x4db5('0x36')]()[_0x4db5('0x4d')]('cm_hopper')[_0x4db5('0x38')](['phone',_0x4db5('0x3f'),_0x4db5('0x3a'),_0x4db5('0x26'),_0x202484,_0x4db5('0x3b'),_0x4db5('0x41')],squel[_0x4db5('0x3c')]()[_0x4db5('0x3d')](_0x4db5('0x39'),_0x4db5('0x39'))[_0x4db5('0x3d')]('NOW()','scheduledAt')[_0x4db5('0x3d')]('id',_0x4db5('0x3a'))[_0x4db5('0x3d')](LISTID['toString'](),_0x4db5('0x26'))[_0x4db5('0x3d')](_0x3bc530['id'][_0x4db5('0x40')](),_0x202484)[_0x4db5('0x3d')](_0x4db5('0x3e'),_0x4db5('0x3b'))[_0x4db5('0x3d')]('NOW()','updatedAt')['from'](_0x4db5('0x43'))[_0x4db5('0x44')](_0x4db5('0x45'))[_0x4db5('0x44')](_0x4db5('0x46'),LISTID[_0x4db5('0x40')]())[_0x4db5('0x44')](_0x4db5('0x4a'),squel[_0x4db5('0x4b')](hopperContacts))[_0x4db5('0x44')](_0x4db5('0x47')))[_0x4db5('0x40')]();return _0x9bbfde;}function _0x18a6a4(_0x2bd738,_0x533563){var _0x2c17bc=squel['insert']()['into'](_0x4db5('0x4e'))['fromQuery']([_0x4db5('0x39'),'ContactId','ListId',_0x533563,_0x4db5('0x3b'),_0x4db5('0x41')],squel[_0x4db5('0x3c')]()[_0x4db5('0x3d')]('phone',_0x4db5('0x39'))[_0x4db5('0x3d')]('id',_0x4db5('0x3a'))[_0x4db5('0x3d')](LISTID[_0x4db5('0x40')](),'ListId')[_0x4db5('0x3d')](_0x2bd738['id']['toString'](),_0x533563)[_0x4db5('0x3d')](_0x4db5('0x3e'),'createdAt')[_0x4db5('0x3d')](_0x4db5('0x3e'),'updatedAt')[_0x4db5('0x42')](_0x4db5('0x43'))['where'](_0x4db5('0x45'))[_0x4db5('0x44')](_0x4db5('0x46'),LISTID[_0x4db5('0x40')]())[_0x4db5('0x44')](_0x4db5('0x4a'),squel[_0x4db5('0x4b')](hopperContacts))[_0x4db5('0x44')]('phone\x20IS\x20NOT\x20NULL'))[_0x4db5('0x40')]();return _0x2c17bc;}return db[_0x4db5('0x4f')]['findAll']({'where':{'type':'outbound'},'attributes':['id',_0x4db5('0x50')],'include':[{'model':db[_0x4db5('0x51')],'as':_0x4db5('0x52'),'where':{'id':LISTID}}]})[_0x4db5('0x2e')](function(_0x21a696){var _0x5db16a=[];if(_0x21a696){var _0x2756d4;for(var _0x584bb8=0x0,_0xf8b597;_0x584bb8<_0x21a696['length'];_0x584bb8+=0x1){_0xf8b597=_0x21a696[_0x584bb8][_0x4db5('0x53')]({'plain':!![]});switch(_0xf8b597[_0x4db5('0x50')]){case'always':_0x5db16a[_0x4db5('0x2f')](db['sequelize']['query'](_0x321741(_0xf8b597,_0x4db5('0x54')))['then'](function(){})[_0x4db5('0x31')](_0xc35549()));break;case'onlyIfOpen':_0x5db16a[_0x4db5('0x2f')](db['sequelize']['query'](_0x1fb596(_0xf8b597,_0x4db5('0x54')))[_0x4db5('0x2e')](function(){})[_0x4db5('0x31')](_0xc35549()));break;default:_0x5db16a[_0x4db5('0x2f')](db[_0x4db5('0x55')][_0x4db5('0x56')](_0x447f9c(_0xf8b597,_0x4db5('0x54')))[_0x4db5('0x2e')](function(){})[_0x4db5('0x31')](_0xc35549()));}}}return _0x5db16a;})[_0x4db5('0x57')]()[_0x4db5('0x2e')](function(){return db[_0x4db5('0x4f')][_0x4db5('0x58')]({'where':{'type':_0x4db5('0x59')},'attributes':['id'],'include':[{'model':db[_0x4db5('0x51')],'as':_0x4db5('0x5a'),'where':{'id':LISTID}}]})[_0x4db5('0x2e')](function(_0x34b873){var _0x2c7814=[];if(_0x34b873){var _0x13cf2d;for(var _0x40e2a4=0x0,_0x338c05;_0x40e2a4<_0x34b873['length'];_0x40e2a4+=0x1){_0x338c05=_0x34b873[_0x40e2a4][_0x4db5('0x53')]({'plain':!![]});_0x2c7814[_0x4db5('0x2f')](db[_0x4db5('0x55')][_0x4db5('0x56')](_0x18a6a4(_0x338c05,_0x4db5('0x54')))[_0x4db5('0x2e')](function(){})[_0x4db5('0x31')](_0xc35549()));}}return _0x2c7814;})[_0x4db5('0x57')]();})[_0x4db5('0x2e')](function(){return db[_0x4db5('0x5b')][_0x4db5('0x58')]({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x4db5('0x51')],'as':_0x4db5('0x52'),'where':{'id':LISTID}}]})[_0x4db5('0x2e')](function(_0x52d293){var _0x4ac9ef=[];if(_0x52d293){for(var _0x2aea29=0x0,_0x2742f8;_0x2aea29<_0x52d293[_0x4db5('0x1a')];_0x2aea29+=0x1){_0x2742f8=_0x52d293[_0x2aea29][_0x4db5('0x53')]({'plain':!![]});switch(_0x2742f8['dialCheckDuplicateType']){case _0x4db5('0x5c'):_0x4ac9ef[_0x4db5('0x2f')](db[_0x4db5('0x55')][_0x4db5('0x56')](_0x321741(_0x2742f8,'CampaignId'))[_0x4db5('0x2e')](function(){})[_0x4db5('0x31')](_0xc35549()));break;case _0x4db5('0x5d'):_0x4ac9ef['push'](db[_0x4db5('0x55')]['query'](_0x1fb596(_0x2742f8,_0x4db5('0x5e')))[_0x4db5('0x2e')](function(){})[_0x4db5('0x31')](_0xc35549()));break;default:_0x4ac9ef[_0x4db5('0x2f')](db[_0x4db5('0x55')][_0x4db5('0x56')](_0x447f9c(_0x2742f8,_0x4db5('0x5e')))[_0x4db5('0x2e')](function(){})['catch'](_0xc35549()));}}}return _0x4ac9ef;})[_0x4db5('0x57')]();})[_0x4db5('0x2e')](function(){return db[_0x4db5('0x5b')][_0x4db5('0x58')]({'attributes':['id'],'include':[{'model':db[_0x4db5('0x51')],'as':_0x4db5('0x5a'),'where':{'id':LISTID}}]})[_0x4db5('0x2e')](function(_0x5b687a){var _0x2c12fb=[];if(_0x5b687a){for(var _0x3aba03=0x0,_0x15c5fe;_0x3aba03<_0x5b687a[_0x4db5('0x1a')];_0x3aba03+=0x1){_0x15c5fe=_0x5b687a[_0x3aba03][_0x4db5('0x53')]({'plain':!![]});_0x2c12fb[_0x4db5('0x2f')](db['sequelize'][_0x4db5('0x56')](_0x18a6a4(_0x15c5fe,_0x4db5('0x5e')))['then'](function(){})[_0x4db5('0x31')](_0xc35549()));}}return _0x2c12fb;})[_0x4db5('0x57')]();})[_0x4db5('0x31')](function(_0xd10d04){logger['error'](_0x4db5('0x5f'),_0x4db5('0x60'),_0xd10d04[_0x4db5('0x1c')]);});}var processPromises=function(_0x2f9146){return BPromise[_0x4db5('0x57')](promises)[_0x4db5('0x2e')](function(_0x2f8cab){})['catch'](function(_0x1f7504){logger['error'](_0x4db5('0x61'),JSON[_0x4db5('0x33')](_0x1f7504));})['finally'](function(){socket[_0x4db5('0x62')]('contact:csv_'+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x2f9146){return _0x2f9146[_0x4db5('0x63')]();}});};var endCsv=function(){return BPromise[_0x4db5('0x64')]()[_0x4db5('0x2e')](function(){if(hopperContacts){return checkHopper();}})[_0x4db5('0x2e')](function(){socket[_0x4db5('0x62')](_0x4db5('0x65')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x4db5('0x66')](FILEPATH);}catch(_0x37d4ae){logger[_0x4db5('0x14')](_0x4db5('0x67'),JSON[_0x4db5('0x33')](_0x37d4ae));}finally{process[_0x4db5('0x68')](0x0);}});};process['on']('SIGINT',function(){logger[_0x4db5('0x69')](_0x4db5('0x6a'));endCsv();});function main(){return BPromise[_0x4db5('0x64')]()['then'](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x4db5('0x11')](',');return db[_0x4db5('0x2b')][_0x4db5('0x58')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x4db5('0x2e')](function(_0x2ee525){var _0x1c6e46=fs[_0x4db5('0x6b')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x4db5('0x6c')](_0x1c6e46,{'header':!![],'skipEmptyLines':!![],'step':function(_0x2578d6,_0x4bce50){total+=0x1;var _0x585f1b=total;promises['push'](checkRow(_0x2578d6,_0x2ee525,_0x585f1b)['then'](function(){success+=0x1;})['catch'](function(_0x5e9196){if(_0x5e9196['error']){errors+=0x1;delete _0x5e9196[_0x4db5('0x14')];}else if(_0x5e9196[_0x4db5('0x29')]){duplicates+=0x1;delete _0x5e9196[_0x4db5('0x29')];}rows['push'](_0x5e9196);}));if(total%0xc8===0x0){_0x4bce50[_0x4db5('0x6d')]();return processPromises(_0x4bce50);}},'complete':function(){return processPromises()[_0x4db5('0x2e')](function(){logger[_0x4db5('0x69')](_0x4db5('0x6e'));endCsv();});},'error':function(_0x1943a7,_0x1d7303){logger['info'](_0x4db5('0x6f'),JSON[_0x4db5('0x33')](_0x1943a7));endCsv();}});})['catch'](function(_0x4c728b){logger[_0x4db5('0x14')](_0x4db5('0x70'),JSON[_0x4db5('0x33')](_0x4c728b));});}main();
\ No newline at end of file
+var _0x23d8=['resolve','unlinkSync','exit','CSV\x20import\x20process\x20stopped!','createReadStream','parse','info','CSV\x20parsed\x20correctly!','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','api','redis','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','index','test','error','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','message','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','YYYY-MM-DD','isValid','email','email\x20format\x20is\x20not\x20valid!','ListId','find','duplicate','Duplicate\x20Contact','CmContact','keys','then','push','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','inspect','into','cm_hopper','fromQuery','scheduledAt','ContactId','createdAt','updatedAt','field','NOW()','toString','from','cm_contacts','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','select','\x20=\x20?','insert','id\x20IN\x20?','str','calleridnum','cm_hopper_final','cm_hopper_black','VoiceQueue','CmList','Lists','get','dialCheckDuplicateType','always','query','VoiceQueueId','onlyIfOpen','sequelize','all','Campaign','findAll','CampaignId','BlackLists','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','emit','resume'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x23d8,0x13a));var _0x823d=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x23d8[_0x14add3];return _0x4a174f;};'use strict';var BPromise=require('bluebird');var util=require('util');var _=require('lodash');var fs=require('fs');var squel=require(_0x823d('0x0'));var Papa=require('papaparse');var Redis=require(_0x823d('0x1'));var db=require(_0x823d('0x2'))['db'];var config=require(_0x823d('0x3'));var logger=require(_0x823d('0x4'))(_0x823d('0x5'));config[_0x823d('0x6')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x823d('0x6')]));require(_0x823d('0x7'))[_0x823d('0x8')](socket);try{if(!process[_0x823d('0x9')][0x2]||process['argv'][0x2]===_0x823d('0xa')||process[_0x823d('0x9')][0x2]===_0x823d('0xb')){throw new Error(_0x823d('0xc'));}var FILEPATH=process['argv'][0x2];if(!process[_0x823d('0x9')][0x3]||process[_0x823d('0x9')][0x3]===_0x823d('0xa')||process[_0x823d('0x9')][0x3]==='null'||!process[_0x823d('0x9')][0x4]||process[_0x823d('0x9')][0x4]===_0x823d('0xa')||process[_0x823d('0x9')][0x4]==='null'){throw new Error(_0x823d('0xd'));}var FIELDS=_[_0x823d('0xe')](process[_0x823d('0x9')][0x3][_0x823d('0xf')](','),process[_0x823d('0x9')][0x4][_0x823d('0xf')](','));if(!process[_0x823d('0x9')][0x5]||process['argv'][0x5]==='undefined'||process[_0x823d('0x9')][0x5]===_0x823d('0xb')){throw new Error(_0x823d('0x10'));}var LISTID=process['argv'][0x5];var COMPANYID=process[_0x823d('0x9')][0x6]&&process[_0x823d('0x9')][0x6]!=='undefined'&&process[_0x823d('0x9')][0x6]!==_0x823d('0xb')?process['argv'][0x6]:null;var DUPLICATES=process[_0x823d('0x9')][0x7]&&process[_0x823d('0x9')][0x7]!==_0x823d('0xa')&&process[_0x823d('0x9')][0x7]!==_0x823d('0xb')?process[_0x823d('0x9')][0x7]:null;if(!process['argv'][0x8]||process[_0x823d('0x9')][0x8]===_0x823d('0xa')||process[_0x823d('0x9')][0x8]===_0x823d('0xb')){throw new Error(_0x823d('0x11'));}var SOCKET_TIMESTAMP=process[_0x823d('0x9')][0x8];}catch(_0x5b5024){logger['error'](_0x5b5024);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(_0x4d8833,_0x5cc445,_0x5a7362,_0x373c28){var _0x484736={'message':_0x5cc445};_0x484736[_0x4d8833]=!![];if(_0x5a7362){_0x484736['contact']=_0x5a7362;}if(_0x373c28){_0x484736[_0x823d('0x12')]=_0x373c28;}return _0x484736;}function isEmail(_0xfaabc8){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))*$/[_0x823d('0x13')](_0xfaabc8);}function checkRow(_0x11bc21,_0x15c253,_0x2db370){return new BPromise(function(_0x3b87f8,_0x4f1d6b){if(_['isNil'](_0x11bc21)){return _0x4f1d6b(handleCheckRowError(_0x823d('0x14'),_0x823d('0x15'),null,_0x2db370));}if(_0x11bc21['errors']&&_0x11bc21[_0x823d('0x16')][_0x823d('0x17')]){var _0x1c1ee4=_['map'](_0x11bc21[_0x823d('0x16')],_0x823d('0x18'))['join'](';');return _0x4f1d6b(handleCheckRowError(_0x823d('0x14'),_0x1c1ee4,null,_0x2db370));}var _0x412068={};for(var _0x140f45 in FIELDS){if(FIELDS[_0x823d('0x19')](_0x140f45)&&FIELDS[_0x140f45]){_0x412068[_0x140f45]=_0x11bc21[_0x823d('0x1a')][0x0][FIELDS[_0x140f45]]||_0x11bc21[_0x823d('0x1a')][0x0]['\ufeff'+FIELDS[_0x140f45]];}}if(!_0x412068[_0x823d('0x1b')]){return _0x4f1d6b(handleCheckRowError(_0x823d('0x14'),_0x823d('0x1c'),null,_0x2db370));}if(!_0x412068[_0x823d('0x1d')]){return _0x4f1d6b(handleCheckRowError('error',_0x823d('0x1e'),null,_0x2db370));}if(_0x412068['birthDate']){var _0x30aec2=moment(_0x412068['birthDate'],_0x823d('0x1f'));if(!_0x30aec2[_0x823d('0x20')]()){return _0x4f1d6b(handleCheckRowError(_0x823d('0x14'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x2db370));}}if(_0x412068[_0x823d('0x21')]){if(!isEmail(_0x412068[_0x823d('0x21')])){return _0x4f1d6b(handleCheckRowError('error',_0x823d('0x22'),null,_0x2db370));}}_0x412068[_0x823d('0x23')]=LISTID;_0x412068['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x823d('0x17')]&&_0x15c253){var _0x470146={};for(var _0xc1c923=0x0,_0x51044e=DUPLICATES[_0x823d('0x17')];_0xc1c923<_0x51044e;_0xc1c923+=0x1){_0x470146[DUPLICATES[_0xc1c923]]=_0x412068[DUPLICATES[_0xc1c923]];}var _0x4c6cad=_[_0x823d('0x24')](_0x15c253,_0x470146);if(_0x4c6cad){return _0x4f1d6b(handleCheckRowError(_0x823d('0x25'),_0x823d('0x26'),_0x4c6cad,_0x2db370));}}return db[_0x823d('0x27')]['create'](_0x412068,{'raw':!![],'hooks':![],'fields':_[_0x823d('0x28')](_0x412068)})[_0x823d('0x29')](function(_0x2da0a3){if(DUPLICATES&&DUPLICATES[_0x823d('0x17')]&&_0x15c253){_0x15c253[_0x823d('0x2a')](_['pick'](_0x412068,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x2da0a3['id'];return _0x3b87f8();})[_0x823d('0x2b')](function(_0x9f9041){return _0x4f1d6b(handleCheckRowError(_0x823d('0x14'),_0x823d('0x2c')+(_0x9f9041[_0x823d('0x18')]||JSON[_0x823d('0x2d')](_0x9f9041)),null,_0x2db370));});});}function checkHopper(){function _0x363f29(){return function(_0x5f5ddc){logger['error'](_0x823d('0x2e'),_0x823d('0x2f'),util[_0x823d('0x30')](_0x5f5ddc,{'showHidden':![],'depth':null}));};}var _0x39c2ec=function(_0x574ee1,_0x11c04b){var _0x7a05e=squel['insert']()[_0x823d('0x31')](_0x823d('0x32'))[_0x823d('0x33')](['phone',_0x823d('0x34'),_0x823d('0x35'),'ListId',_0x11c04b,_0x823d('0x36'),_0x823d('0x37')],squel['select']()[_0x823d('0x38')](_0x823d('0x1d'),_0x823d('0x1d'))['field'](_0x823d('0x39'),_0x823d('0x34'))[_0x823d('0x38')]('id','ContactId')[_0x823d('0x38')](LISTID[_0x823d('0x3a')](),'ListId')['field'](_0x574ee1['id'][_0x823d('0x3a')](),_0x11c04b)[_0x823d('0x38')](_0x823d('0x39'),'createdAt')[_0x823d('0x38')](_0x823d('0x39'),_0x823d('0x37'))[_0x823d('0x3b')](_0x823d('0x3c'))[_0x823d('0x3d')](_0x823d('0x3e'))[_0x823d('0x3d')](_0x823d('0x3f'),LISTID[_0x823d('0x3a')]())['where'](_0x823d('0x40'))[_0x823d('0x3d')](_0x823d('0x41'),squel[_0x823d('0x42')]()[_0x823d('0x38')](_0x823d('0x1d'))['from'](_0x823d('0x32'))[_0x823d('0x3d')](_0x11c04b+_0x823d('0x43'),_0x574ee1['id']['toString']())))[_0x823d('0x3a')]();return _0x7a05e;};var _0x3a6c47=function(_0x2d2315,_0x26cecd){var _0x580759=squel[_0x823d('0x44')]()[_0x823d('0x31')](_0x823d('0x32'))['fromQuery'](['phone','scheduledAt',_0x823d('0x35'),_0x823d('0x23'),_0x26cecd,_0x823d('0x36'),'updatedAt'],squel['select']()[_0x823d('0x38')]('phone',_0x823d('0x1d'))[_0x823d('0x38')](_0x823d('0x39'),_0x823d('0x34'))[_0x823d('0x38')]('id','ContactId')['field'](LISTID[_0x823d('0x3a')](),_0x823d('0x23'))['field'](_0x2d2315['id'][_0x823d('0x3a')](),_0x26cecd)[_0x823d('0x38')](_0x823d('0x39'),_0x823d('0x36'))['field'](_0x823d('0x39'),_0x823d('0x37'))['from'](_0x823d('0x3c'))[_0x823d('0x3d')](_0x823d('0x3e'))[_0x823d('0x3d')](_0x823d('0x3f'),LISTID[_0x823d('0x3a')]())[_0x823d('0x3d')](_0x823d('0x45'),squel[_0x823d('0x46')](hopperContacts))['where'](_0x823d('0x40'))[_0x823d('0x3d')](_0x823d('0x41'),squel[_0x823d('0x42')]()[_0x823d('0x38')](_0x823d('0x47'))[_0x823d('0x3b')](_0x823d('0x48'))['where'](_0x26cecd+'\x20=\x20?',_0x2d2315['id']['toString']()))[_0x823d('0x3d')](_0x823d('0x41'),squel[_0x823d('0x42')]()[_0x823d('0x38')](_0x823d('0x1d'))[_0x823d('0x3b')](_0x823d('0x32'))[_0x823d('0x3d')](_0x26cecd+_0x823d('0x43'),_0x2d2315['id'][_0x823d('0x3a')]())))['toString']();return _0x580759;};function _0x17f4cd(_0x40d495,_0x39b175){var _0x3c6f40=squel[_0x823d('0x44')]()[_0x823d('0x31')](_0x823d('0x32'))[_0x823d('0x33')]([_0x823d('0x1d'),'scheduledAt',_0x823d('0x35'),_0x823d('0x23'),_0x39b175,_0x823d('0x36'),'updatedAt'],squel[_0x823d('0x42')]()[_0x823d('0x38')](_0x823d('0x1d'),_0x823d('0x1d'))['field'](_0x823d('0x39'),'scheduledAt')[_0x823d('0x38')]('id',_0x823d('0x35'))['field'](LISTID[_0x823d('0x3a')](),_0x823d('0x23'))['field'](_0x40d495['id']['toString'](),_0x39b175)[_0x823d('0x38')]('NOW()',_0x823d('0x36'))['field'](_0x823d('0x39'),'updatedAt')[_0x823d('0x3b')](_0x823d('0x3c'))[_0x823d('0x3d')](_0x823d('0x3e'))[_0x823d('0x3d')](_0x823d('0x3f'),LISTID[_0x823d('0x3a')]())[_0x823d('0x3d')]('id\x20IN\x20?',squel[_0x823d('0x46')](hopperContacts))['where']('phone\x20IS\x20NOT\x20NULL'))['toString']();return _0x3c6f40;}function _0x360400(_0x51bbd5,_0x17786b){var _0x562010=squel[_0x823d('0x44')]()[_0x823d('0x31')](_0x823d('0x49'))['fromQuery']([_0x823d('0x1d'),_0x823d('0x35'),_0x823d('0x23'),_0x17786b,'createdAt',_0x823d('0x37')],squel[_0x823d('0x42')]()['field']('phone',_0x823d('0x1d'))[_0x823d('0x38')]('id',_0x823d('0x35'))[_0x823d('0x38')](LISTID[_0x823d('0x3a')](),'ListId')[_0x823d('0x38')](_0x51bbd5['id'][_0x823d('0x3a')](),_0x17786b)[_0x823d('0x38')](_0x823d('0x39'),_0x823d('0x36'))[_0x823d('0x38')](_0x823d('0x39'),_0x823d('0x37'))[_0x823d('0x3b')](_0x823d('0x3c'))[_0x823d('0x3d')](_0x823d('0x3e'))['where'](_0x823d('0x3f'),LISTID[_0x823d('0x3a')]())[_0x823d('0x3d')]('id\x20IN\x20?',squel[_0x823d('0x46')](hopperContacts))[_0x823d('0x3d')](_0x823d('0x40')))['toString']();return _0x562010;}return db[_0x823d('0x4a')]['findAll']({'where':{'type':'outbound'},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x823d('0x4b')],'as':_0x823d('0x4c'),'where':{'id':LISTID}}]})[_0x823d('0x29')](function(_0xe21c29){var _0x19af1d=[];if(_0xe21c29){var _0x57dd12;for(var _0x3b684f=0x0,_0x6de809;_0x3b684f<_0xe21c29[_0x823d('0x17')];_0x3b684f+=0x1){_0x6de809=_0xe21c29[_0x3b684f][_0x823d('0x4d')]({'plain':!![]});switch(_0x6de809[_0x823d('0x4e')]){case _0x823d('0x4f'):_0x19af1d[_0x823d('0x2a')](db['sequelize'][_0x823d('0x50')](_0x3a6c47(_0x6de809,_0x823d('0x51')))[_0x823d('0x29')](function(){})[_0x823d('0x2b')](_0x363f29()));break;case _0x823d('0x52'):_0x19af1d['push'](db[_0x823d('0x53')]['query'](_0x39c2ec(_0x6de809,'VoiceQueueId'))[_0x823d('0x29')](function(){})['catch'](_0x363f29()));break;default:_0x19af1d['push'](db[_0x823d('0x53')][_0x823d('0x50')](_0x17f4cd(_0x6de809,_0x823d('0x51')))[_0x823d('0x29')](function(){})['catch'](_0x363f29()));}}}return _0x19af1d;})[_0x823d('0x54')]()[_0x823d('0x29')](function(){return db[_0x823d('0x4a')]['findAll']({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':db[_0x823d('0x4b')],'as':'BlackLists','where':{'id':LISTID}}]})[_0x823d('0x29')](function(_0x336173){var _0x503f18=[];if(_0x336173){var _0x11cacb;for(var _0x116c6e=0x0,_0x1653a5;_0x116c6e<_0x336173[_0x823d('0x17')];_0x116c6e+=0x1){_0x1653a5=_0x336173[_0x116c6e]['get']({'plain':!![]});_0x503f18['push'](db[_0x823d('0x53')][_0x823d('0x50')](_0x360400(_0x1653a5,_0x823d('0x51')))[_0x823d('0x29')](function(){})[_0x823d('0x2b')](_0x363f29()));}}return _0x503f18;})[_0x823d('0x54')]();})[_0x823d('0x29')](function(){return db[_0x823d('0x55')][_0x823d('0x56')]({'attributes':['id',_0x823d('0x4e')],'include':[{'model':db[_0x823d('0x4b')],'as':_0x823d('0x4c'),'where':{'id':LISTID}}]})[_0x823d('0x29')](function(_0x5b8d72){var _0x3734f2=[];if(_0x5b8d72){for(var _0x2d58e3=0x0,_0x1fb447;_0x2d58e3<_0x5b8d72[_0x823d('0x17')];_0x2d58e3+=0x1){_0x1fb447=_0x5b8d72[_0x2d58e3]['get']({'plain':!![]});switch(_0x1fb447[_0x823d('0x4e')]){case _0x823d('0x4f'):_0x3734f2[_0x823d('0x2a')](db['sequelize'][_0x823d('0x50')](_0x3a6c47(_0x1fb447,_0x823d('0x57')))[_0x823d('0x29')](function(){})[_0x823d('0x2b')](_0x363f29()));break;case _0x823d('0x52'):_0x3734f2[_0x823d('0x2a')](db[_0x823d('0x53')][_0x823d('0x50')](_0x39c2ec(_0x1fb447,_0x823d('0x57')))[_0x823d('0x29')](function(){})[_0x823d('0x2b')](_0x363f29()));break;default:_0x3734f2[_0x823d('0x2a')](db['sequelize']['query'](_0x17f4cd(_0x1fb447,_0x823d('0x57')))[_0x823d('0x29')](function(){})[_0x823d('0x2b')](_0x363f29()));}}}return _0x3734f2;})['all']();})[_0x823d('0x29')](function(){return db[_0x823d('0x55')][_0x823d('0x56')]({'attributes':['id'],'include':[{'model':db[_0x823d('0x4b')],'as':_0x823d('0x58'),'where':{'id':LISTID}}]})[_0x823d('0x29')](function(_0x38cc45){var _0x287c48=[];if(_0x38cc45){for(var _0x5f1ab6=0x0,_0x5de3fa;_0x5f1ab6<_0x38cc45[_0x823d('0x17')];_0x5f1ab6+=0x1){_0x5de3fa=_0x38cc45[_0x5f1ab6][_0x823d('0x4d')]({'plain':!![]});_0x287c48[_0x823d('0x2a')](db[_0x823d('0x53')][_0x823d('0x50')](_0x360400(_0x5de3fa,_0x823d('0x57')))[_0x823d('0x29')](function(){})[_0x823d('0x2b')](_0x363f29()));}}return _0x287c48;})['all']();})[_0x823d('0x2b')](function(_0x1f8609){logger['error'](_0x823d('0x59'),_0x823d('0x5a'),_0x1f8609[_0x823d('0x18')]);});}var processPromises=function(_0x5383c2){return BPromise[_0x823d('0x54')](promises)['then'](function(_0x5af3fc){})[_0x823d('0x2b')](function(_0x5be4e2){logger[_0x823d('0x14')](_0x823d('0x5b'),JSON[_0x823d('0x2d')](_0x5be4e2));})['finally'](function(){socket[_0x823d('0x5c')]('contact:csv_'+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x5383c2){return _0x5383c2[_0x823d('0x5d')]();}});};var endCsv=function(){return BPromise[_0x823d('0x5e')]()[_0x823d('0x29')](function(){if(hopperContacts){return checkHopper();}})['then'](function(){socket[_0x823d('0x5c')]('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x823d('0x5f')](FILEPATH);}catch(_0x2b22fd){logger['error']('Unable\x20to\x20delete\x20temp\x20file:',JSON[_0x823d('0x2d')](_0x2b22fd));}finally{process[_0x823d('0x60')](0x0);}});};process['on']('SIGINT',function(){logger['info'](_0x823d('0x61'));endCsv();});function main(){return BPromise[_0x823d('0x5e')]()[_0x823d('0x29')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x823d('0xf')](',');return db[_0x823d('0x27')][_0x823d('0x56')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x823d('0x29')](function(_0x39b82b){var _0x4a0e46=fs[_0x823d('0x62')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x823d('0x63')](_0x4a0e46,{'header':!![],'skipEmptyLines':!![],'step':function(_0x479a1a,_0x175997){total+=0x1;var _0xa8eb1d=total;promises[_0x823d('0x2a')](checkRow(_0x479a1a,_0x39b82b,_0xa8eb1d)[_0x823d('0x29')](function(){success+=0x1;})['catch'](function(_0x3f6b3d){if(_0x3f6b3d['error']){errors+=0x1;delete _0x3f6b3d['error'];}else if(_0x3f6b3d['duplicate']){duplicates+=0x1;delete _0x3f6b3d['duplicate'];}rows[_0x823d('0x2a')](_0x3f6b3d);}));if(total%0xc8===0x0){_0x175997['pause']();return processPromises(_0x175997);}},'complete':function(){return processPromises()['then'](function(){logger[_0x823d('0x64')](_0x823d('0x65'));endCsv();});},'error':function(_0x224c99,_0x4d7b4f){logger['info']('CSV\x20parse\x20error',JSON[_0x823d('0x2d')](_0x224c99));endCsv();}});})[_0x823d('0x2b')](function(_0x4dda10){logger[_0x823d('0x14')]('Error\x20executing\x20contact\x20csv\x20import:',JSON['stringify'](_0x4dda10));});}main();
\ No newline at end of file
index e4b8927..d8a8e7b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf5ff=['exit','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','server/files/tmp','existsSync','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','SIGINT','uncaughtException','path','papaparse','util','bluebird','../../../mysqldb','../../../config/environment','../../../config/environment/shared','../../../config/logger','import','redis','localhost','socket.io-emitter','YYYY-MM-DD\x20HH:mm:ss','format','test','phone','from','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','findAll','AdditionalPhones','then','length','push','split','all','filter','CmContactHasItem','findOne','update','updated','create','PHONE','inserted','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.priority','cm_hopper','fromQuery','scheduledat','ListId','updatedAt','priority','recallme','select','cm_contacts.ListId\x20=\x20','.CmListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','\x22always\x22','\x22onlyIfOpen\x22','toString','cm_contacts.updatedAt','insert','into','cm_hopper_black','ContactId','createdAt','fields','cm_contacts','.CmListId','field','ListId\x20=\x20?','date_add(cm_contacts.scheduledat,interval\x20','.offset-cm_contacts.utcOffset\x20minute)','cm_contacts.UserId','UserId','cm_hopper.id','cm_contact_has_items.createdAt','cm_hopper_additional_phones','CmHopperId','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','keys','CompanyId',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','group','Received\x20SIGINT','error','message','errors','code','info','sequelize','spread','catch','campaigns.dialTimezone','campaigns','campaigns_has_cm_lists','campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId','campaigns_has_cm_lists.CmListId=','query','voice_queues','voice_queues_has_cm_lists','voice_queues_has_cm_lists.CmListId=','timezones','dialTimezone','isNil','utcOffset','set','main','stringify','send','binding','clone','root','includes','header','name','_description','writeFileSync','parse','createReadStream','data','rows','find','hasOwnProperty','trim','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','isNumber','email','email\x20wrong\x20format','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','itemTypeId','description','SystemRow','appendFileSync','contact:import:','Abort\x20parser','abort','step','duplicates','cm_contacts_','CREATE\x20TABLE\x20','campaigns_','voice_queues_','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','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',',\x20scheduledAt\x20=\x20NOW()','each','contactTypeId','orderBy','VoiceQueueId','voice_queues_has_cm_blacklists','CampaignId','campaigns_has_cm_blacklists','DROP\x20TABLE\x20','affectedRows','emit','unlink'];(function(_0x3c5ee4,_0xd6846){var _0x4db48c=function(_0x595600){while(--_0x595600){_0x3c5ee4['push'](_0x3c5ee4['shift']());}};_0x4db48c(++_0xd6846);}(_0xf5ff,0xbe));var _0xff5f=function(_0x27f6c2,_0x4fa688){_0x27f6c2=_0x27f6c2-0x0;var _0x2ad8fd=_0xf5ff[_0x27f6c2];return _0x2ad8fd;};'use strict';var fs=require('fs');var path=require(_0xff5f('0x0'));var _=require('lodash');var Papa=require(_0xff5f('0x1'));var util=require(_0xff5f('0x2'));var BPromise=require(_0xff5f('0x3'));var moment=require('moment');var squel=require('squel');var Redis=require('ioredis');var db=require(_0xff5f('0x4'))['db'];var config=require(_0xff5f('0x5'));var shared=require(_0xff5f('0x6'));var logger=require(_0xff5f('0x7'))(_0xff5f('0x8'));config['redis']=_['defaults'](config[_0xff5f('0x9')],{'host':_0xff5f('0xa'),'port':0x18eb});var socket=require(_0xff5f('0xb'))(new Redis(config[_0xff5f('0x9')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()['format'](_0xff5f('0xc'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()[_0xff5f('0xd')](_0xff5f('0xc'));function isEmail(_0x3b6aaa){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))*$/[_0xff5f('0xe')](_0x3b6aaa);}function selectNotIn(_0x3c16d3,_0x3f5c77,_0x2c8d22,_0x165641,_0x3cd569){return squel['select']()['field'](_0xff5f('0xf'))[_0xff5f('0x10')](_0x165641)[_0xff5f('0x11')](_0x3f5c77,null,_0x3f5c77+_0xff5f('0x12')+_0x165641+'.'+_0x2c8d22)[_0xff5f('0x13')](_0x165641+'.'+_0x2c8d22+_0xff5f('0x14')+_0x3c16d3+'.'+_0x2c8d22)[_0xff5f('0x13')](_0x3f5c77+_0xff5f('0x15')+_0x3cd569[_0xff5f('0x11')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x5ecb19,_0x34055e){promisesAdditionalPhones=[];return db['CmContact'][_0xff5f('0x16')]({'raw':!![],'attributes':['id',_0xff5f('0x17')],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})[_0xff5f('0x18')](function(_0x311199){if(_0x311199!==null){var _0xd22ce1=[];for(var _0x28f08b=0x0;_0x28f08b<_0x311199[_0xff5f('0x19')];_0x28f08b++){var _0x16fb95=_0x311199[_0x28f08b];_0xd22ce1[_0xff5f('0x1a')](insertAdditionalPhones(_0x16fb95));}}Promise['all'](_0xd22ce1)[_0xff5f('0x18')](function(){_0x5ecb19({'val':0x1});});});});}function insertAdditionalPhones(_0x26c0c4){return new Promise(function(_0x2457ee,_0x26aae8){var _0x3c986f=_0x26c0c4['AdditionalPhones'];var _0x1d940a=_0x3c986f[_0xff5f('0x1b')](';');var _0x1644ac=[];orderBy=0x0;for(var _0x42a9c7=0x0;_0x42a9c7<_0x1d940a['length'];_0x42a9c7++){_0x1644ac['push'](splitAdditionalPhone(_0x26c0c4['id'],_0x1d940a[_0x42a9c7]));}Promise[_0xff5f('0x1c')](_0x1644ac)[_0xff5f('0x18')](function(){_0x2457ee({'val':_0x1d940a[_0xff5f('0x19')]});});});}function splitAdditionalPhone(_0x23dc3c,_0x25bbcb){return new Promise(function(_0x10ba1e,_0x1915aa){var _0x287c20=_0x25bbcb['split'](':');var _0x62a3ed=_0x287c20[0x0];var _0x57f162=_0x287c20[0x1];if(!_['isNil'](_0x57f162)){var _0x9d5aad=_0x57f162['split']('|');var _0x1af520=[];for(var _0x2218d0=0x0;_0x2218d0<_0x9d5aad[_0xff5f('0x19')];_0x2218d0++){if(_0x9d5aad[_0x2218d0]!==''){var _0x21b5d9=_[_0xff5f('0x1d')](promisesAdditionalPhones,{'contactId':_0x23dc3c,'phone':_0x9d5aad[_0x2218d0]});if(_0x21b5d9[_0xff5f('0x19')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0x23dc3c,'contactTypeId':_0x62a3ed,'phone':_0x9d5aad[_0x2218d0],'orderBy':orderBy});}}}_0x10ba1e({'ok':0x1});}else _0x10ba1e({'res':0x0});});}function createAdditionalPhone(_0x48b138,_0x494bb3,_0x146340,_0x3c614b){var _0x2601d0='';var _0x19f948='';var _0x329ff5=_0x146340[_0xff5f('0x1b')]('§');_0x2601d0=_0x329ff5[0x0];if(_0x329ff5[_0xff5f('0x19')]==0x2)_0x19f948=_0x329ff5[0x1];return new Promise(function(_0x577b75,_0x230b95){return db[_0xff5f('0x1e')][_0xff5f('0x1f')]({'where':{'CmContactId':_0x48b138,'item':_0x2601d0}})[_0xff5f('0x18')](function(_0x374c1c){if(_0x374c1c){return db[_0xff5f('0x1e')][_0xff5f('0x20')]({'ItemTypeId':_0x494bb3,'description':_0x19f948,'OrderBy':_0x3c614b},{'where':{'CmContactId':_0x48b138,'item':_0x2601d0}})[_0xff5f('0x18')](function(_0x46b23f){_0x577b75({'res':_0xff5f('0x21')});});}else{return db[_0xff5f('0x1e')][_0xff5f('0x22')]({'CmContactId':_0x48b138,'item':_0x2601d0,'description':_0x19f948,'ItemTypeId':_0x494bb3,'OrderBy':_0x3c614b,'ItemClass':_0xff5f('0x23')})['then'](function(_0x56a88b){_0x577b75({'res':_0xff5f('0x24')});});}});});}function insertCmHopper(_0x83deff,_0x22fc47,_0x330f8e,_0x381446,_0x11cbb3){var _0x2a51d3=[_0xff5f('0x25'),_0xff5f('0x26'),_0xff5f('0x27'),_0xff5f('0x28'),_0x22fc47+'.'+_0x381446,_0xff5f('0x29'),'cm_contacts.updatedAt',_0xff5f('0x2a'),'cm_contacts.UserId','\x22'+_0x11cbb3+'\x22'];return squel['insert']()['into'](_0xff5f('0x2b'))[_0xff5f('0x2c')](['phone',_0xff5f('0x2d'),'ContactId',_0xff5f('0x2e'),_0x381446,'createdAt',_0xff5f('0x2f'),_0xff5f('0x30'),'UserId',_0xff5f('0x31')],squel[_0xff5f('0x32')]()['fields'](_0x2a51d3)[_0xff5f('0x10')](_0x22fc47)[_0xff5f('0x11')]('cm_contacts',null,_0xff5f('0x33')+_0x22fc47+'.CmListId')[_0xff5f('0x11')](_0x330f8e,null,_0x330f8e+_0xff5f('0x12')+_0x22fc47+'.'+_0x381446)[_0xff5f('0x13')](_0x22fc47+_0xff5f('0x34'),_0x83deff)[_0xff5f('0x13')](_0xff5f('0x35'),NOW)[_0xff5f('0x13')](_0xff5f('0x36'),selectNotIn(_0x22fc47,_0x330f8e,_0x381446,_0xff5f('0x2b'),[_0xff5f('0x37'),_0xff5f('0x38')]))[_0xff5f('0x13')](_0xff5f('0x36'),selectNotIn(_0x22fc47,_0x330f8e,_0x381446,_0xff5f('0x2b'),[_0xff5f('0x37')])))[_0xff5f('0x39')]();}function insertCmHopperBlack(_0x731f09,_0x9cd79b,_0x1bd3fd,_0x76ed87){var _0xd988=[_0xff5f('0x25'),_0xff5f('0x27'),_0xff5f('0x28'),_0x9cd79b+'.'+_0x76ed87,_0xff5f('0x29'),_0xff5f('0x3a')];return squel[_0xff5f('0x3b')]()[_0xff5f('0x3c')](_0xff5f('0x3d'))[_0xff5f('0x2c')]([_0xff5f('0xf'),_0xff5f('0x3e'),_0xff5f('0x2e'),_0x76ed87,_0xff5f('0x3f'),_0xff5f('0x2f')],squel[_0xff5f('0x32')]()[_0xff5f('0x40')](_0xd988)['from'](_0x9cd79b)[_0xff5f('0x11')](_0xff5f('0x41'),null,_0xff5f('0x33')+_0x9cd79b+_0xff5f('0x42'))[_0xff5f('0x11')](_0x1bd3fd,null,_0x1bd3fd+_0xff5f('0x12')+_0x9cd79b+'.'+_0x76ed87)[_0xff5f('0x13')](_0x9cd79b+_0xff5f('0x34'),_0x731f09)[_0xff5f('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0xff5f('0x13')](_0xff5f('0x36'),squel[_0xff5f('0x32')]()[_0xff5f('0x43')](_0xff5f('0xf'))[_0xff5f('0x10')](_0xff5f('0x3d'))[_0xff5f('0x13')](_0xff5f('0x44'),_0x731f09)[_0xff5f('0x13')](_0x76ed87+_0xff5f('0x14')+_0x9cd79b+'.'+_0x76ed87)))[_0xff5f('0x39')]();}function insertTzCmHopper(_0xf4e5f,_0x3c9120,_0x1219ff,_0x55df7d,_0x191bcc,_0x33a49d){var _0x512772=['cm_contacts.phone',_0xff5f('0x45')+_0x33a49d+_0xff5f('0x46'),_0xff5f('0x27'),'cm_contacts.ListId',_0x3c9120+'.'+_0x55df7d,_0xff5f('0x29'),'cm_contacts.updatedAt',_0xff5f('0x2a'),_0xff5f('0x47'),'\x22'+_0x191bcc+'\x22'];var _0x534918=squel[_0xff5f('0x3b')]()[_0xff5f('0x3c')](_0xff5f('0x2b'))[_0xff5f('0x2c')]([_0xff5f('0xf'),_0xff5f('0x2d'),_0xff5f('0x3e'),'ListId',_0x55df7d,'createdAt','updatedAt',_0xff5f('0x30'),_0xff5f('0x48'),_0xff5f('0x31')],squel['select']()[_0xff5f('0x40')](_0x512772)[_0xff5f('0x10')](_0x3c9120)[_0xff5f('0x11')]('cm_contacts',null,_0xff5f('0x33')+_0x3c9120+'.CmListId')['join'](_0x1219ff,null,_0x1219ff+_0xff5f('0x12')+_0x3c9120+'.'+_0x55df7d)[_0xff5f('0x11')](_0x33a49d,null,_0x33a49d+_0xff5f('0x12')+_0x3c9120+'.'+_0x55df7d)[_0xff5f('0x13')](_0x3c9120+_0xff5f('0x34'),_0xf4e5f)['where'](_0xff5f('0x35'),NOW)[_0xff5f('0x13')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x3c9120,_0x1219ff,_0x55df7d,_0xff5f('0x2b'),[_0xff5f('0x37'),_0xff5f('0x38')]))['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x3c9120,_0x1219ff,_0x55df7d,_0xff5f('0x2b'),[_0xff5f('0x37')])))[_0xff5f('0x39')]();return _0x534918;}function insertTzCmHopperBlack(_0x1a0118,_0x233466,_0x34fb07,_0x3402f0){var _0x203420=[_0xff5f('0x25'),_0xff5f('0x27'),_0xff5f('0x28'),_0x233466+'.'+_0x3402f0,_0xff5f('0x29'),_0xff5f('0x3a')];return squel[_0xff5f('0x3b')]()['into'](_0xff5f('0x3d'))[_0xff5f('0x2c')]([_0xff5f('0xf'),'ContactId',_0xff5f('0x2e'),_0x3402f0,'createdAt',_0xff5f('0x2f')],squel[_0xff5f('0x32')]()[_0xff5f('0x40')](_0x203420)[_0xff5f('0x10')](_0x233466)['join'](_0xff5f('0x41'),null,_0xff5f('0x33')+_0x233466+_0xff5f('0x42'))['join'](_0x34fb07,null,_0x34fb07+_0xff5f('0x12')+_0x233466+'.'+_0x3402f0)[_0xff5f('0x13')](_0x233466+_0xff5f('0x34'),_0x1a0118)['where'](_0xff5f('0x35'),NOW)[_0xff5f('0x13')](_0xff5f('0x36'),squel['select']()['field'](_0xff5f('0xf'))['from'](_0xff5f('0x3d'))[_0xff5f('0x13')](_0xff5f('0x44'),_0x1a0118)[_0xff5f('0x13')](_0x3402f0+_0xff5f('0x14')+_0x233466+'.'+_0x3402f0)))[_0xff5f('0x39')]();}function insertCmHopperAdditionalPhones(_0x36fd2a){var _0x1cdf8b=[_0xff5f('0x49'),'cm_contact_has_items.item','cm_contact_has_items.OrderBy',_0xff5f('0x4a'),'cm_contact_has_items.updatedAt'];return squel[_0xff5f('0x3b')]()['into'](_0xff5f('0x4b'))['fromQuery']([_0xff5f('0x4c'),'phone','OrderBy',_0xff5f('0x3f'),_0xff5f('0x2f')],squel['select']()['fields'](_0x1cdf8b)[_0xff5f('0x10')](_0xff5f('0x2b'))[_0xff5f('0x11')](_0xff5f('0x41'),null,'cm_contacts.id\x20=\x20cm_hopper.ContactId')[_0xff5f('0x11')]('cm_contact_has_items',null,_0xff5f('0x4d'))['where']('cm_hopper.ListId\x20=\x20?',_0x36fd2a)['where'](_0xff5f('0x35'),NOW))[_0xff5f('0x39')]();}function insertCmContact(_0x5160b2,_0x4d32d0,_0x83edc0,_0x19611e){var _0x2c5f25=_['concat'](_[_0xff5f('0x4e')](_0x19611e),[_0xff5f('0x2e'),_0xff5f('0x4f'),_0xff5f('0x3f'),_0xff5f('0x2f')]);return squel[_0xff5f('0x3b')]()[_0xff5f('0x3c')](_0xff5f('0x41'))[_0xff5f('0x2c')](_0x2c5f25,squel[_0xff5f('0x32')]()[_0xff5f('0x40')](_0x2c5f25)[_0xff5f('0x10')](_0x4d32d0)[_0xff5f('0x13')]('('+_0x83edc0['join'](',')+_0xff5f('0x50'),squel[_0xff5f('0x32')]()[_0xff5f('0x40')](_0x83edc0)[_0xff5f('0x10')]('cm_contacts')[_0xff5f('0x13')](_0xff5f('0x44'),_0x5160b2)[_0xff5f('0x13')](_0xff5f('0x51')))[_0xff5f('0x13')](_0xff5f('0x52'),squel['select']()[_0xff5f('0x43')](_0xff5f('0x53'),_0xff5f('0x54'))[_0xff5f('0x10')](_0x4d32d0)[_0xff5f('0x55')](_0x83edc0[_0xff5f('0x11')](','))))['toString']();}function handleStop(){logger['info'](_0xff5f('0x56'));stopped=!![];}function handleUncaughtException(_0x5c82a3){logger[_0xff5f('0x57')](_0x5c82a3[_0xff5f('0x58')]);process['exit'](0x1);}function handleError(_0x32dee0,_0x1e5fc0){stats[_0xff5f('0x59')][_0xff5f('0x1a')]({'name':_0x1e5fc0[_0xff5f('0x5a')],'message':_0x1e5fc0[_0xff5f('0x58')],'row':_0x32dee0});}function handleQuery(_0x6ca6ba){logger[_0xff5f('0x5b')](_0x6ca6ba);return db[_0xff5f('0x5c')]['query'](_0x6ca6ba)[_0xff5f('0x5d')](function(_0x575075){results[_0xff5f('0x1a')](_0x575075);})[_0xff5f('0x5e')](function(_0x278311){logger[_0xff5f('0x57')](_0x278311['message']);});}function updateTzCampaigns(_0x50ef4e){return new Promise(function(_0x5e0756,_0x5c7258){var _0x25e3c6=squel['select']()[_0xff5f('0x40')](['campaigns.id',_0xff5f('0x5f')])[_0xff5f('0x10')](_0xff5f('0x60'))[_0xff5f('0x11')](_0xff5f('0x61'),null,_0xff5f('0x62'))['where'](_0xff5f('0x63')+_0x50ef4e);db[_0xff5f('0x5c')][_0xff5f('0x64')](_0x25e3c6[_0xff5f('0x39')]())[_0xff5f('0x5d')](function(_0xbbcbd7){var _0x47a157=[];for(var _0x41d4cd=0x0;_0x41d4cd<_0xbbcbd7[_0xff5f('0x19')];_0x41d4cd++){_0x47a157[_0xff5f('0x1a')](getTimezoneData(_0xbbcbd7[_0x41d4cd],tmp_campaigns));}BPromise[_0xff5f('0x1c')](_0x47a157)[_0xff5f('0x18')](function(){_0x5e0756({'val':0x1});});})[_0xff5f('0x5e')](function(_0x345c8b){logger[_0xff5f('0x57')](_0x345c8b[_0xff5f('0x58')]);_0x5e0756({'val':0x0});});});}function updateTzVoiceQueues(_0x76ec98){return new Promise(function(_0x2bdfea,_0x10f92f){var _0xd4ac53=squel[_0xff5f('0x32')]()[_0xff5f('0x40')](['voice_queues.id','voice_queues.dialTimezone'])['from'](_0xff5f('0x65'))[_0xff5f('0x11')](_0xff5f('0x66'),null,'voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId')['where'](_0xff5f('0x67')+_0x76ec98);db[_0xff5f('0x5c')]['query'](_0xd4ac53['toString']())['spread'](function(_0xc74633){var _0x12c464=[];for(var _0x344457=0x0;_0x344457<_0xc74633[_0xff5f('0x19')];_0x344457++){_0x12c464[_0xff5f('0x1a')](getTimezoneData(_0xc74633[_0x344457],tmp_voice_queues));}BPromise[_0xff5f('0x1c')](_0x12c464)[_0xff5f('0x18')](function(){_0x2bdfea({'val':0x1});});})['catch'](function(_0x4d0106){logger[_0xff5f('0x57')](_0x4d0106[_0xff5f('0x58')]);_0x2bdfea({'val':0x0});});});}function getTimezoneData(_0x1b31ca,_0x4835b7){return new Promise(function(_0x4a42bf,_0x4ec0cf){var _0x269385=shared[_0xff5f('0x68')];var _0x1ec9f8=_0x269385[_0x1b31ca[_0xff5f('0x69')]];if(_[_0xff5f('0x6a')](_0x1ec9f8)){_0x4a42bf({'ret':0x1});}else{var _0x35dd2a=_0x1ec9f8[_0xff5f('0x6b')];var _0x296a9f=squel[_0xff5f('0x3b')]()['into'](_0x4835b7)[_0xff5f('0x6c')]('id',_0x1b31ca['id'])[_0xff5f('0x6c')]('offset',_0x35dd2a)[_0xff5f('0x6c')]('dialTimezone',_0x1b31ca[_0xff5f('0x69')])[_0xff5f('0x39')]();return db[_0xff5f('0x5c')]['query'](_0x296a9f)[_0xff5f('0x5d')](function(_0x57cee1){_0x4a42bf({'ret':0x1});})[_0xff5f('0x5e')](function(_0x179569){logger['error'](_0x179569['message']);_0x4ec0cf({'ret':0x1});});}});}function handleTZQuery(_0x5c9101){logger[_0xff5f('0x5b')](_0x5c9101);return db[_0xff5f('0x5c')][_0xff5f('0x64')](_0x5c9101)[_0xff5f('0x5d')](function(_0x25e4c5){})[_0xff5f('0x5e')](function(_0x9b3805){logger[_0xff5f('0x57')](_0x9b3805[_0xff5f('0x58')]);});}function main(_0xb59afc,_0xa2dd89,_0x3801eb,_0x1da2df){logger[_0xff5f('0x5b')](_0xff5f('0x6d'),_0xb59afc,JSON[_0xff5f('0x6e')](_0xa2dd89));process[_0xff5f('0x6f')]('start');var _0x433bcb=_0xa2dd89[_0xff5f('0x70')];var _0x59136e=_[_0xff5f('0x71')](_0x433bcb);var _0x29f9ea=_0xa2dd89['socket_timestamp'];var _0x5c2474=path[_0xff5f('0x11')](config[_0xff5f('0x72')],'server/files/tmp',_0x29f9ea+'.csv');hasTZ=_['keys'](_0x433bcb)[_0xff5f('0x73')](_0xff5f('0x69'));var _0x3badd2=_[_0xff5f('0x4e')](_0x433bcb)['join']();logger[_0xff5f('0x5b')](_0xff5f('0x74'),_0x3badd2);db['ContactItemType'][_0xff5f('0x16')]({'raw':!![],'attributes':['id',_0xff5f('0x75')]})[_0xff5f('0x18')](function(_0x477fe2){for(var _0x6ed726=0x0;_0x6ed726<_0x477fe2[_0xff5f('0x19')];_0x6ed726++){if(_0x477fe2[_0x6ed726]['name']in _0x433bcb){contactItemTypes[_0xff5f('0x1a')](_0x477fe2[_0x6ed726]);delete _0x59136e[_0x477fe2[_0x6ed726][_0xff5f('0x75')]];hasAdditionalPhones=!![];}for(var _0xd2e2ae in _0x433bcb){if(_0x477fe2[_0x6ed726]['name']+_0xff5f('0x76')===_0xd2e2ae){phoneDescriptions['push']({'itemTypeId':_0x477fe2[_0x6ed726]['id'],'description':_0xd2e2ae});delete _0x59136e[_0xd2e2ae];}}}if(hasAdditionalPhones)_0x59136e[_0xff5f('0x17')]='';var _0x3f4ea6=_['keys'](_0x59136e)[_0xff5f('0x11')]();logger['info'](_0xff5f('0x74'),_0x3f4ea6);fs[_0xff5f('0x77')](_0x5c2474,_0x3f4ea6+'\x0a');Papa[_0xff5f('0x78')](fs[_0xff5f('0x79')](_0xb59afc),{'header':!![],'skipEmptyLines':!![],'step':function(_0x2a1bfd,_0x3b174f){try{for(var _0x31a071=0x0,_0xb7bf5d=[];_0x31a071<_0x2a1bfd[_0xff5f('0x7a')][_0xff5f('0x19')];_0x31a071++){stats[_0xff5f('0x7b')]+=0x1;if(_0x2a1bfd['errors'][_0x31a071]){handleError(_0x2a1bfd[_0xff5f('0x7a')][_0x31a071],_0x2a1bfd[_0xff5f('0x59')][_0x31a071]);}else{var _0x56fb11=[];var _0x588fd8=[];var _0x521d45={};for(var _0x2b89fd in _0x433bcb){let _0x5d2f2e=contactItemTypes[_0xff5f('0x7c')](_0x19825f=>_0x19825f[_0xff5f('0x75')]===_0x2b89fd);let _0x247b58=contactItemTypes['find'](_0xaf54cf=>_0xaf54cf[_0xff5f('0x75')]+_0xff5f('0x76')===_0x2b89fd);if(_[_0xff5f('0x6a')](_0x5d2f2e)&&_[_0xff5f('0x6a')](_0x247b58)){if(_0x433bcb[_0xff5f('0x7d')](_0x2b89fd)){if(_0x2a1bfd[_0xff5f('0x7a')][_0x31a071][_0x433bcb[_0x2b89fd]]){var _0x4938a7=_[_0xff5f('0x7e')](_0x2a1bfd[_0xff5f('0x7a')][_0x31a071][_0x433bcb[_0x2b89fd]][_0xff5f('0x7f')](/"/g,'\x27'));switch(_0x2b89fd){case _0xff5f('0x2d'):var _0x59e7e9=moment(_0x4938a7,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x59e7e9[_0xff5f('0x80')]()){_0xb7bf5d[_0xff5f('0x1a')]('\x22'+_0x4938a7+'\x22');}else{_0x56fb11[_0xff5f('0x1a')](_0xff5f('0x81'));}break;case _0xff5f('0x30'):var _0x28f4d0=parseInt(_0x4938a7);_0x4938a7=_['isNaN'](_0x28f4d0)||_0x28f4d0<0x0||_0x28f4d0>0x4?_0x1da2df?0x3:0x2:_0x28f4d0;_0xb7bf5d['push']('\x22'+_0x4938a7+'\x22');break;case _0xff5f('0x48'):var _0x767a40=parseInt(_0x4938a7);if(_[_0xff5f('0x82')](_0x767a40)&&_[_0xff5f('0x73')](_0x3801eb,_0x767a40)){_0xb7bf5d['push']('\x22'+_0x767a40+'\x22');}else{_0x56fb11[_0xff5f('0x1a')]('agent\x20not\x20exists');}break;case _0xff5f('0x83'):if(isEmail(_0x4938a7)){_0xb7bf5d['push']('\x22'+_0x4938a7+'\x22');}else{_0x56fb11['push'](_0xff5f('0x84'));}break;case _0xff5f('0x85'):var _0x47df73=moment(_0x4938a7,'YYYY-MM-DD',!![]);if(_0x47df73[_0xff5f('0x80')]()){_0xb7bf5d['push']('\x22'+_0x4938a7+'\x22');}else{_0x56fb11[_0xff5f('0x1a')](_0xff5f('0x86'));}break;case'dialTimezone':var _0x221a77=shared[_0xff5f('0x68')];var _0x44b009=_0x221a77[_0x4938a7];if(!_[_0xff5f('0x6a')](_0x44b009)){var _0x1b325a=_0x44b009[_0xff5f('0x6b')];_0xb7bf5d['push']('\x22'+_0x4938a7+'\x22');_0xb7bf5d['push']('\x22'+_0x1b325a+'\x22');}break;default:_0xb7bf5d[_0xff5f('0x1a')]('\x22'+_0x4938a7+'\x22');}}else{switch(_0x2b89fd){case _0xff5f('0x87'):case _0xff5f('0xf'):_0x56fb11[_0xff5f('0x1a')](_0x2b89fd+_0xff5f('0x88'));break;default:_0xb7bf5d[_0xff5f('0x1a')]('\x22\x22');}}}}else{var _0x419ba2='';if(!_[_0xff5f('0x6a')](_0x5d2f2e)){if(!_0x521d45[_0xff5f('0x7d')](_0x5d2f2e['id'])){if(!_[_0xff5f('0x6a')](_0x2a1bfd['data'][_0x31a071][_0x433bcb[_0x2b89fd]])){var _0x4938a7=_[_0xff5f('0x7e')](_0x2a1bfd[_0xff5f('0x7a')][_0x31a071][_0x433bcb[_0x2b89fd]][_0xff5f('0x7f')](/"/g,'\x27'));var _0xeb7d56=phoneDescriptions[_0xff5f('0x7c')](_0x568dd6=>_0x568dd6[_0xff5f('0x89')]===_0x5d2f2e['id']);if(!_['isNil'](_0xeb7d56)){var _0x198c75=_[_0xff5f('0x7e')](_0x2a1bfd[_0xff5f('0x7a')][_0x31a071][_0x433bcb[_0xeb7d56[_0xff5f('0x8a')]]][_0xff5f('0x7f')](/"/g,'\x27'));if(!_[_0xff5f('0x6a')](_0x198c75))_0x4938a7=_0x4938a7+'§'+_0x198c75;}if(_0x419ba2=='')_0x419ba2=_0x4938a7;else _0x419ba2+='|'+_0x4938a7;}_0x588fd8[_0xff5f('0x1a')](_0x5d2f2e['id']+':'+_0x419ba2);_0x521d45[_0x5d2f2e['id']]=0x1;}}}}if(hasAdditionalPhones){_0xb7bf5d[_0xff5f('0x1a')]('\x22'+_0x588fd8[_0xff5f('0x11')](';')+'\x22');}if(_0x56fb11[_0xff5f('0x19')]){handleError(_0x2a1bfd[_0xff5f('0x7a')][_0x31a071],{'code':_0xff5f('0x8b'),'message':_0x56fb11['join']()});}else{fs[_0xff5f('0x8c')](_0x5c2474,_0xb7bf5d['join']()+'\x0a');}_0xb7bf5d=[];}if(!(stats[_0xff5f('0x7b')]%0xc8)){socket['emit'](_0xff5f('0x8d')+_0x29f9ea,stats);stats[_0xff5f('0x59')]=[];}}if(stopped){logger[_0xff5f('0x5b')](_0xff5f('0x8e'));_0x3b174f[_0xff5f('0x8f')]();}}catch(_0x32f8bd){handleError(_0x2a1bfd[_0xff5f('0x7a')][_0x31a071],{'code':'SystemError','message':_0x32f8bd[_0xff5f('0x58')]});logger[_0xff5f('0x57')](_0xff5f('0x90'),_0x32f8bd[_0xff5f('0x58')]);}},'complete':function(){try{var _0x2ba981=[];var _0x298a0d=[];var _0x218998=_0xff5f('0x41');if(_0xa2dd89[_0xff5f('0x91')]&&_0xa2dd89[_0xff5f('0x91')][_0xff5f('0x19')]){_0x218998=_0xff5f('0x92')+_0x29f9ea;_0x2ba981['push'](_0xff5f('0x93')+_0x218998+'\x20LIKE\x20cm_contacts;');}tmp_campaigns=_0xff5f('0x94')+_0x29f9ea;tmp_voice_queues=_0xff5f('0x95')+_0x29f9ea;_0x298a0d[_0xff5f('0x1a')](_0xff5f('0x93')+tmp_campaigns+_0xff5f('0x96'));_0x298a0d[_0xff5f('0x1a')](_0xff5f('0x93')+tmp_voice_queues+_0xff5f('0x96'));BPromise['each'](_0x298a0d,handleTZQuery)[_0xff5f('0x18')](function(_0x715342){updateTzCampaigns(_0xa2dd89[_0xff5f('0x2e')])[_0xff5f('0x18')](function(_0x163444){updateTzVoiceQueues(_0xa2dd89['ListId'])[_0xff5f('0x18')](function(_0x34b2d1){if(hasTZ)_0x3f4ea6=_0x3f4ea6[_0xff5f('0x7f')](_0xff5f('0x69'),'dialTimezone,utcOffset');var _0x476f68=util['format'](_0xff5f('0x97'),_0x5c2474,_0x218998,_0x3f4ea6,_0xa2dd89[_0xff5f('0x2e')],_0xa2dd89[_0xff5f('0x4f')]||null,NOW,NOW);if(_[_0xff5f('0x6a')](_0x433bcb['scheduledat'])){_0x476f68+=_0xff5f('0x98');}_0x2ba981[_0xff5f('0x1a')](_0x476f68);if(_0xa2dd89[_0xff5f('0x91')]&&_0xa2dd89[_0xff5f('0x91')][_0xff5f('0x19')]){_0x2ba981[_0xff5f('0x1a')](insertCmContact(_0xa2dd89[_0xff5f('0x2e')],_0x218998,_0xa2dd89[_0xff5f('0x91')],_0x433bcb));_0x2ba981[_0xff5f('0x1a')]('DROP\x20TABLE\x20'+_0x218998+';');}BPromise[_0xff5f('0x99')](_0x2ba981,handleQuery)[_0xff5f('0x18')](function(_0x2fb5b1){BPromise[_0xff5f('0x1c')]([handleAdditionalPhones()])[_0xff5f('0x18')](function(){_0x2ba981=[];for(var _0x5e96c5=0x0;_0x5e96c5<promisesAdditionalPhones[_0xff5f('0x19')];_0x5e96c5++){if(promisesAdditionalPhones[_0x5e96c5][_0xff5f('0xf')]!='§'){_0x2ba981[_0xff5f('0x1a')](createAdditionalPhone(promisesAdditionalPhones[_0x5e96c5]['contactId'],promisesAdditionalPhones[_0x5e96c5][_0xff5f('0x9a')],promisesAdditionalPhones[_0x5e96c5][_0xff5f('0xf')],promisesAdditionalPhones[_0x5e96c5][_0xff5f('0x9b')]));}}BPromise['all'](_0x2ba981)[_0xff5f('0x18')](function(){_0x2ba981=[];if(hasTZ){_0x2ba981[_0xff5f('0x1a')](insertTzCmHopper(_0xa2dd89['ListId'],_0xff5f('0x66'),_0xff5f('0x65'),_0xff5f('0x9c'),_0x1da2df,tmp_voice_queues));_0x2ba981[_0xff5f('0x1a')](insertTzCmHopperBlack(_0xa2dd89['ListId'],_0xff5f('0x9d'),_0xff5f('0x65'),_0xff5f('0x9c')));_0x2ba981[_0xff5f('0x1a')](insertTzCmHopper(_0xa2dd89[_0xff5f('0x2e')],'campaigns_has_cm_lists',_0xff5f('0x60'),_0xff5f('0x9e'),_0x1da2df,tmp_campaigns));_0x2ba981['push'](insertTzCmHopperBlack(_0xa2dd89[_0xff5f('0x2e')],_0xff5f('0x9f'),_0xff5f('0x60'),_0xff5f('0x9e')));_0x2ba981['push'](insertCmHopperAdditionalPhones(_0xa2dd89[_0xff5f('0x2e')]));}else{_0x2ba981[_0xff5f('0x1a')](insertCmHopper(_0xa2dd89['ListId'],_0xff5f('0x66'),_0xff5f('0x65'),_0xff5f('0x9c'),_0x1da2df));_0x2ba981[_0xff5f('0x1a')](insertCmHopperBlack(_0xa2dd89[_0xff5f('0x2e')],_0xff5f('0x9d'),_0xff5f('0x65'),_0xff5f('0x9c')));_0x2ba981['push'](insertCmHopper(_0xa2dd89[_0xff5f('0x2e')],'campaigns_has_cm_lists',_0xff5f('0x60'),'CampaignId',_0x1da2df));_0x2ba981[_0xff5f('0x1a')](insertCmHopperBlack(_0xa2dd89[_0xff5f('0x2e')],_0xff5f('0x9f'),_0xff5f('0x60'),_0xff5f('0x9e')));_0x2ba981[_0xff5f('0x1a')](insertCmHopperAdditionalPhones(_0xa2dd89[_0xff5f('0x2e')]));}_0x2ba981[_0xff5f('0x1a')](_0xff5f('0xa0')+tmp_campaigns+';');_0x2ba981[_0xff5f('0x1a')]('DROP\x20TABLE\x20'+tmp_voice_queues+';');BPromise[_0xff5f('0x99')](_0x2ba981,handleQuery)[_0xff5f('0x18')](function(_0x4f11f3){stats['finish']=!![];stats[_0xff5f('0xa1')]=_0xa2dd89[_0xff5f('0x91')]&&_0xa2dd89[_0xff5f('0x91')][_0xff5f('0x19')]?results[0x2][_0xff5f('0xa1')]:results[0x0][_0xff5f('0xa1')];socket[_0xff5f('0xa2')](_0xff5f('0x8d')+_0x29f9ea,stats);fs[_0xff5f('0xa3')](_0xb59afc);fs[_0xff5f('0xa3')](_0x5c2474);process[_0xff5f('0xa4')](0x0);})['catch'](function(_0x233ec2){logger[_0xff5f('0x57')](_0x233ec2[_0xff5f('0x58')]);process[_0xff5f('0xa4')](0x1);});});});})[_0xff5f('0x5e')](function(_0x4b6a17){logger[_0xff5f('0x57')](_0x4b6a17[_0xff5f('0x58')]);process[_0xff5f('0xa4')](0x1);});});});});}catch(_0x1fc85d){logger['error'](_0xff5f('0xa5'),_0x1fc85d[_0xff5f('0x58')]);process[_0xff5f('0xa4')](0x1);}},'error':function(_0x43106b,_0x431d5b,_0x15e8b6,_0x4df859){throw new Error(_0x4df859);}});});}function validate(){if(process[_0xff5f('0xa6')]&&process[_0xff5f('0xa6')][_0xff5f('0x19')]<0x4){throw new Error(_0xff5f('0xa7'));}var _0x307507=path[_0xff5f('0x11')](config['root'],_0xff5f('0xa8'),process[_0xff5f('0xa6')][0x2]);if(!fs[_0xff5f('0xa9')](_0x307507)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x5c8596={};try{_0x5c8596=JSON['parse'](process[_0xff5f('0xa6')][0x3]);if(!_0x5c8596[_0xff5f('0x70')]){throw new Error(_0xff5f('0xaa'));}if(!_0x5c8596['binding']['phone']){throw new Error(_0xff5f('0xab'));}if(!_0x5c8596[_0xff5f('0x70')]['firstName']){throw new Error('firstName\x20is\x20mandatory');}var _0x59dede=0x0;if(_0x5c8596[_0xff5f('0x70')]['UserId']){_0x59dede=0x1;}if(!_0x5c8596[_0xff5f('0x2e')]){throw new Error(_0xff5f('0xac'));}}catch(_0x37a96a){throw new Error(_0xff5f('0xad'));}var _0x384184=[];try{_0x384184=_[_0xff5f('0xae')](JSON[_0xff5f('0x78')](process[_0xff5f('0xa6')][0x4]),'id');}catch(_0x463eec){logger[_0xff5f('0x5b')]('No\x20agent\x20available');}main(_0x307507,_0x5c8596,_0x384184,_0x59dede);}validate();process['on'](_0xff5f('0xaf'),handleStop);process['on'](_0xff5f('0xb0'),handleUncaughtException);
\ No newline at end of file
+var _0xe767=['cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','keys',')\x20NOT\x20IN\x20?','deletedAt\x20IS\x20NULL','id\x20IN\x20?','MIN(id)','min_id','group','info','Received\x20SIGINT','error','message','exit','errors','code','sequelize','campaigns.id','campaigns.dialTimezone','campaigns','campaigns_has_cm_lists','spread','voice_queues.dialTimezone','voice_queues','voice_queues_has_cm_lists.CmListId=','query','catch','timezones','dialTimezone','utcOffset','set','offset','main','stringify','send','clone','socket_timestamp','server/files/tmp','.csv','includes','header','ContactItemType','name','_description','writeFileSync','parse','createReadStream','data','find','hasOwnProperty','trim','replace','YYYY-MM-DD\x20HH:mm:ss','isValid','isNaN','isNumber','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','description','rows','emit','Abort\x20parser','abort','duplicates','cm_contacts_','CREATE\x20TABLE\x20','\x20LIKE\x20cm_contacts;','campaigns_','voice_queues_','(id\x20int,dialTimezone\x20varchar(255),offset\x20int);','each','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','CompanyId',',\x20scheduledAt\x20=\x20NOW()','DROP\x20TABLE\x20','contactId','contactTypeId','orderBy','voice_queues_has_cm_lists','voice_queues_has_cm_blacklists','VoiceQueueId','CampaignId','campaigns_has_cm_blacklists','finish','affectedRows','unlink','complete','argv','root','existsSync','file\x20doesn\x27t\x20exists','binding','binding\x20doesn\x27t\x20exists','phone\x20is\x20mandatory','firstName\x20is\x20mandatory','ListId\x20is\x20mandatory','body\x20id\x20mandatory','No\x20agent\x20available','SIGINT','lodash','papaparse','util','bluebird','moment','squel','../../../config/environment','../../../config/logger','redis','defaults','localhost','socket.io-emitter','format','test','field','phone','from','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','join','CmContact','findAll','then','push','all','AdditionalPhones','length','split','isNil','filter','CmContactHasItem','PHONE','inserted','cm_contacts.phone','cm_contacts.scheduledat','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','fromQuery','scheduledat','ListId','createdAt','updatedAt','priority','UserId','recallme','select','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','cm_hopper','\x22always\x22','toString','cm_contacts.id','into','cm_hopper_black','ContactId','fields','ListId\x20=\x20?','cm_contacts.createdAt\x20=\x20?','cm_hopper.id','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','CmHopperId','cm_contacts.id\x20=\x20cm_hopper.ContactId'];(function(_0x3a8dc1,_0x2f03b8){var _0x4b3595=function(_0x1c19e7){while(--_0x1c19e7){_0x3a8dc1['push'](_0x3a8dc1['shift']());}};_0x4b3595(++_0x2f03b8);}(_0xe767,0x11e));var _0x7e76=function(_0x2a2998,_0x10367c){_0x2a2998=_0x2a2998-0x0;var _0x695b58=_0xe767[_0x2a2998];return _0x695b58;};'use strict';var fs=require('fs');var path=require('path');var _=require(_0x7e76('0x0'));var Papa=require(_0x7e76('0x1'));var util=require(_0x7e76('0x2'));var BPromise=require(_0x7e76('0x3'));var moment=require(_0x7e76('0x4'));var squel=require(_0x7e76('0x5'));var Redis=require('ioredis');var db=require('../../../mysqldb')['db'];var config=require(_0x7e76('0x6'));var shared=require('../../../config/environment/shared');var logger=require(_0x7e76('0x7'))('import');config[_0x7e76('0x8')]=_[_0x7e76('0x9')](config[_0x7e76('0x8')],{'host':_0x7e76('0xa'),'port':0x18eb});var socket=require(_0x7e76('0xb'))(new Redis(config[_0x7e76('0x8')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var orderBy=0x0;var stopped=![];var NOW=moment()[_0x7e76('0xc')]('YYYY-MM-DD\x20HH:mm:ss');var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];var tmp_voice_queues;var tmp_campaigns;var tzOffset=0x0;var hasTZ;var NOW=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');function isEmail(_0x572469){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))*$/[_0x7e76('0xd')](_0x572469);}function selectNotIn(_0x2dec6b,_0x7b60e,_0x5aefc7,_0x5229d3,_0x447e89){return squel['select']()[_0x7e76('0xe')](_0x7e76('0xf'))[_0x7e76('0x10')](_0x5229d3)['join'](_0x7b60e,null,_0x7b60e+_0x7e76('0x11')+_0x5229d3+'.'+_0x5aefc7)[_0x7e76('0x12')](_0x5229d3+'.'+_0x5aefc7+_0x7e76('0x13')+_0x2dec6b+'.'+_0x5aefc7)[_0x7e76('0x12')](_0x7b60e+_0x7e76('0x14')+_0x447e89[_0x7e76('0x15')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x4cdde8,_0x4606ca){promisesAdditionalPhones=[];return db[_0x7e76('0x16')][_0x7e76('0x17')]({'raw':!![],'attributes':['id','AdditionalPhones'],'where':{'createdAt':NOW,'AdditionalPhones':{'$ne':null}}})[_0x7e76('0x18')](function(_0x39a406){if(_0x39a406!==null){var _0x354625=[];for(var _0xdd6c33=0x0;_0xdd6c33<_0x39a406['length'];_0xdd6c33++){var _0x2390b4=_0x39a406[_0xdd6c33];_0x354625[_0x7e76('0x19')](insertAdditionalPhones(_0x2390b4));}}Promise[_0x7e76('0x1a')](_0x354625)['then'](function(){_0x4cdde8({'val':0x1});});});});}function insertAdditionalPhones(_0x21d37c){return new Promise(function(_0x329a4d,_0x28d658){var _0x53b4f5=_0x21d37c[_0x7e76('0x1b')];var _0x2d1509=_0x53b4f5['split'](';');var _0x3ea240=[];orderBy=0x0;for(var _0x5d2625=0x0;_0x5d2625<_0x2d1509[_0x7e76('0x1c')];_0x5d2625++){_0x3ea240[_0x7e76('0x19')](splitAdditionalPhone(_0x21d37c['id'],_0x2d1509[_0x5d2625]));}Promise[_0x7e76('0x1a')](_0x3ea240)[_0x7e76('0x18')](function(){_0x329a4d({'val':_0x2d1509[_0x7e76('0x1c')]});});});}function splitAdditionalPhone(_0x2ca063,_0x5e4303){return new Promise(function(_0x241e5b,_0x49b23a){var _0x1b5ca1=_0x5e4303[_0x7e76('0x1d')](':');var _0x2343b0=_0x1b5ca1[0x0];var _0x49644c=_0x1b5ca1[0x1];if(!_[_0x7e76('0x1e')](_0x49644c)){var _0x3178ce=_0x49644c['split']('|');var _0x5b09f2=[];for(var _0x5286ef=0x0;_0x5286ef<_0x3178ce[_0x7e76('0x1c')];_0x5286ef++){if(_0x3178ce[_0x5286ef]!==''){var _0xeb6410=_[_0x7e76('0x1f')](promisesAdditionalPhones,{'contactId':_0x2ca063,'phone':_0x3178ce[_0x5286ef]});if(_0xeb6410[_0x7e76('0x1c')]==0x0){orderBy++;promisesAdditionalPhones[_0x7e76('0x19')]({'contactId':_0x2ca063,'contactTypeId':_0x2343b0,'phone':_0x3178ce[_0x5286ef],'orderBy':orderBy});}}}_0x241e5b({'ok':0x1});}else _0x241e5b({'res':0x0});});}function createAdditionalPhone(_0x553b47,_0x398b57,_0x3ea474,_0x3e5716){var _0x17c249='';var _0x31ab2f='';var _0x920ba9=_0x3ea474[_0x7e76('0x1d')]('§');_0x17c249=_0x920ba9[0x0];if(_0x920ba9['length']==0x2)_0x31ab2f=_0x920ba9[0x1];return new Promise(function(_0x784a94,_0x58b3e1){return db[_0x7e76('0x20')]['findOne']({'where':{'CmContactId':_0x553b47,'item':_0x17c249}})['then'](function(_0x7e631a){if(_0x7e631a){return db[_0x7e76('0x20')]['update']({'ItemTypeId':_0x398b57,'description':_0x31ab2f,'OrderBy':_0x3e5716},{'where':{'CmContactId':_0x553b47,'item':_0x17c249}})[_0x7e76('0x18')](function(_0x596503){_0x784a94({'res':'updated'});});}else{return db[_0x7e76('0x20')]['create']({'CmContactId':_0x553b47,'item':_0x17c249,'description':_0x31ab2f,'ItemTypeId':_0x398b57,'OrderBy':_0x3e5716,'ItemClass':_0x7e76('0x21')})[_0x7e76('0x18')](function(_0x3dbcf0){_0x784a94({'res':_0x7e76('0x22')});});}});});}function insertCmHopper(_0x42bcc1,_0x4ff347,_0x590eba,_0x28d102,_0x58651e){var _0x5389fe=[_0x7e76('0x23'),_0x7e76('0x24'),'cm_contacts.id',_0x7e76('0x25'),_0x4ff347+'.'+_0x28d102,_0x7e76('0x26'),_0x7e76('0x27'),_0x7e76('0x28'),_0x7e76('0x29'),'\x22'+_0x58651e+'\x22'];return squel[_0x7e76('0x2a')]()['into']('cm_hopper')[_0x7e76('0x2b')]([_0x7e76('0xf'),_0x7e76('0x2c'),'ContactId',_0x7e76('0x2d'),_0x28d102,_0x7e76('0x2e'),_0x7e76('0x2f'),_0x7e76('0x30'),_0x7e76('0x31'),_0x7e76('0x32')],squel[_0x7e76('0x33')]()['fields'](_0x5389fe)['from'](_0x4ff347)[_0x7e76('0x15')](_0x7e76('0x34'),null,_0x7e76('0x35')+_0x4ff347+_0x7e76('0x36'))['join'](_0x590eba,null,_0x590eba+'.id\x20=\x20'+_0x4ff347+'.'+_0x28d102)[_0x7e76('0x12')](_0x4ff347+_0x7e76('0x37'),_0x42bcc1)[_0x7e76('0x12')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x7e76('0x12')](_0x7e76('0x38'),selectNotIn(_0x4ff347,_0x590eba,_0x28d102,_0x7e76('0x39'),[_0x7e76('0x3a'),'\x22onlyIfOpen\x22']))[_0x7e76('0x12')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x4ff347,_0x590eba,_0x28d102,_0x7e76('0x39'),[_0x7e76('0x3a')])))[_0x7e76('0x3b')]();}function insertCmHopperBlack(_0xca216e,_0x38faf1,_0x48cd8c,_0x43a3e3){var _0x367a38=[_0x7e76('0x23'),_0x7e76('0x3c'),_0x7e76('0x25'),_0x38faf1+'.'+_0x43a3e3,_0x7e76('0x26'),'cm_contacts.updatedAt'];return squel['insert']()[_0x7e76('0x3d')](_0x7e76('0x3e'))[_0x7e76('0x2b')]([_0x7e76('0xf'),_0x7e76('0x3f'),_0x7e76('0x2d'),_0x43a3e3,_0x7e76('0x2e'),_0x7e76('0x2f')],squel[_0x7e76('0x33')]()[_0x7e76('0x40')](_0x367a38)[_0x7e76('0x10')](_0x38faf1)[_0x7e76('0x15')]('cm_contacts',null,_0x7e76('0x35')+_0x38faf1+_0x7e76('0x36'))[_0x7e76('0x15')](_0x48cd8c,null,_0x48cd8c+_0x7e76('0x11')+_0x38faf1+'.'+_0x43a3e3)[_0x7e76('0x12')](_0x38faf1+'.CmListId\x20=\x20?',_0xca216e)[_0x7e76('0x12')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x7e76('0x12')](_0x7e76('0x38'),squel[_0x7e76('0x33')]()[_0x7e76('0xe')](_0x7e76('0xf'))[_0x7e76('0x10')](_0x7e76('0x3e'))[_0x7e76('0x12')](_0x7e76('0x41'),_0xca216e)[_0x7e76('0x12')](_0x43a3e3+_0x7e76('0x13')+_0x38faf1+'.'+_0x43a3e3)))[_0x7e76('0x3b')]();}function insertTzCmHopper(_0x4e6641,_0x7741d0,_0x99d46a,_0x4515dc,_0x21a812,_0x57364e){var _0x5892e5=[_0x7e76('0x23'),'date_add(cm_contacts.scheduledat,interval\x20'+_0x57364e+'.offset-cm_contacts.utcOffset\x20minute)',_0x7e76('0x3c'),_0x7e76('0x25'),_0x7741d0+'.'+_0x4515dc,_0x7e76('0x26'),_0x7e76('0x27'),_0x7e76('0x28'),_0x7e76('0x29'),'\x22'+_0x21a812+'\x22'];var _0x2160b9=squel[_0x7e76('0x2a')]()[_0x7e76('0x3d')](_0x7e76('0x39'))[_0x7e76('0x2b')]([_0x7e76('0xf'),_0x7e76('0x2c'),_0x7e76('0x3f'),_0x7e76('0x2d'),_0x4515dc,_0x7e76('0x2e'),_0x7e76('0x2f'),_0x7e76('0x30'),'UserId',_0x7e76('0x32')],squel[_0x7e76('0x33')]()['fields'](_0x5892e5)[_0x7e76('0x10')](_0x7741d0)[_0x7e76('0x15')](_0x7e76('0x34'),null,_0x7e76('0x35')+_0x7741d0+_0x7e76('0x36'))[_0x7e76('0x15')](_0x99d46a,null,_0x99d46a+_0x7e76('0x11')+_0x7741d0+'.'+_0x4515dc)[_0x7e76('0x15')](_0x57364e,null,_0x57364e+_0x7e76('0x11')+_0x7741d0+'.'+_0x4515dc)[_0x7e76('0x12')](_0x7741d0+_0x7e76('0x37'),_0x4e6641)[_0x7e76('0x12')](_0x7e76('0x42'),NOW)[_0x7e76('0x12')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x7741d0,_0x99d46a,_0x4515dc,_0x7e76('0x39'),['\x22always\x22','\x22onlyIfOpen\x22']))['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x7741d0,_0x99d46a,_0x4515dc,_0x7e76('0x39'),[_0x7e76('0x3a')])))['toString']();return _0x2160b9;}function insertTzCmHopperBlack(_0x1fc216,_0x41b59c,_0x142e83,_0x55b65e){var _0x12b63e=[_0x7e76('0x23'),_0x7e76('0x3c'),_0x7e76('0x25'),_0x41b59c+'.'+_0x55b65e,_0x7e76('0x26'),_0x7e76('0x27')];return squel[_0x7e76('0x2a')]()[_0x7e76('0x3d')](_0x7e76('0x3e'))[_0x7e76('0x2b')]([_0x7e76('0xf'),_0x7e76('0x3f'),_0x7e76('0x2d'),_0x55b65e,_0x7e76('0x2e'),_0x7e76('0x2f')],squel['select']()[_0x7e76('0x40')](_0x12b63e)['from'](_0x41b59c)[_0x7e76('0x15')]('cm_contacts',null,_0x7e76('0x35')+_0x41b59c+_0x7e76('0x36'))['join'](_0x142e83,null,_0x142e83+_0x7e76('0x11')+_0x41b59c+'.'+_0x55b65e)[_0x7e76('0x12')](_0x41b59c+_0x7e76('0x37'),_0x1fc216)['where'](_0x7e76('0x42'),NOW)[_0x7e76('0x12')](_0x7e76('0x38'),squel[_0x7e76('0x33')]()['field'](_0x7e76('0xf'))[_0x7e76('0x10')](_0x7e76('0x3e'))['where']('ListId\x20=\x20?',_0x1fc216)[_0x7e76('0x12')](_0x55b65e+'\x20=\x20'+_0x41b59c+'.'+_0x55b65e)))['toString']();}function insertCmHopperAdditionalPhones(_0x47096b){var _0x57f72e=[_0x7e76('0x43'),_0x7e76('0x44'),_0x7e76('0x45'),'cm_contact_has_items.createdAt',_0x7e76('0x46')];return squel['insert']()[_0x7e76('0x3d')](_0x7e76('0x47'))['fromQuery']([_0x7e76('0x48'),'phone','OrderBy',_0x7e76('0x2e'),_0x7e76('0x2f')],squel['select']()['fields'](_0x57f72e)['from'](_0x7e76('0x39'))[_0x7e76('0x15')](_0x7e76('0x34'),null,_0x7e76('0x49'))[_0x7e76('0x15')](_0x7e76('0x4a'),null,_0x7e76('0x4b'))[_0x7e76('0x12')](_0x7e76('0x4c'),_0x47096b)[_0x7e76('0x12')]('cm_contacts.createdAt\x20=\x20?',NOW))[_0x7e76('0x3b')]();}function insertCmContact(_0x57ff13,_0x5a345f,_0x276f84,_0x4a2b6a){var _0x3f9640=_[_0x7e76('0x4d')](_[_0x7e76('0x4e')](_0x4a2b6a),[_0x7e76('0x2d'),'CompanyId',_0x7e76('0x2e'),_0x7e76('0x2f')]);return squel['insert']()['into']('cm_contacts')['fromQuery'](_0x3f9640,squel[_0x7e76('0x33')]()[_0x7e76('0x40')](_0x3f9640)[_0x7e76('0x10')](_0x5a345f)[_0x7e76('0x12')]('('+_0x276f84[_0x7e76('0x15')](',')+_0x7e76('0x4f'),squel['select']()[_0x7e76('0x40')](_0x276f84)[_0x7e76('0x10')](_0x7e76('0x34'))[_0x7e76('0x12')](_0x7e76('0x41'),_0x57ff13)[_0x7e76('0x12')](_0x7e76('0x50')))[_0x7e76('0x12')](_0x7e76('0x51'),squel[_0x7e76('0x33')]()[_0x7e76('0xe')](_0x7e76('0x52'),_0x7e76('0x53'))['from'](_0x5a345f)[_0x7e76('0x54')](_0x276f84['join'](','))))[_0x7e76('0x3b')]();}function handleStop(){logger[_0x7e76('0x55')](_0x7e76('0x56'));stopped=!![];}function handleUncaughtException(_0x25b8b9){logger[_0x7e76('0x57')](_0x25b8b9[_0x7e76('0x58')]);process[_0x7e76('0x59')](0x1);}function handleError(_0x2a97b8,_0x32df86){stats[_0x7e76('0x5a')]['push']({'name':_0x32df86[_0x7e76('0x5b')],'message':_0x32df86[_0x7e76('0x58')],'row':_0x2a97b8});}function handleQuery(_0x5790be){logger[_0x7e76('0x55')](_0x5790be);return db[_0x7e76('0x5c')]['query'](_0x5790be)['spread'](function(_0x3c9565){results[_0x7e76('0x19')](_0x3c9565);})['catch'](function(_0x1ad6d0){logger[_0x7e76('0x57')](_0x1ad6d0[_0x7e76('0x58')]);});}function updateTzCampaigns(_0xb6447a){return new Promise(function(_0x3c6be5,_0xbfc9c9){var _0x34cebe=squel[_0x7e76('0x33')]()[_0x7e76('0x40')]([_0x7e76('0x5d'),_0x7e76('0x5e')])['from'](_0x7e76('0x5f'))[_0x7e76('0x15')](_0x7e76('0x60'),null,'campaigns.id\x20=\x20campaigns_has_cm_lists.CampaignId')[_0x7e76('0x12')]('campaigns_has_cm_lists.CmListId='+_0xb6447a);db[_0x7e76('0x5c')]['query'](_0x34cebe[_0x7e76('0x3b')]())[_0x7e76('0x61')](function(_0x73970f){var _0x2b72c0=[];for(var _0x5ce7cc=0x0;_0x5ce7cc<_0x73970f[_0x7e76('0x1c')];_0x5ce7cc++){_0x2b72c0[_0x7e76('0x19')](getTimezoneData(_0x73970f[_0x5ce7cc],tmp_campaigns));}BPromise[_0x7e76('0x1a')](_0x2b72c0)[_0x7e76('0x18')](function(){_0x3c6be5({'val':0x1});});})['catch'](function(_0x1d368e){logger[_0x7e76('0x57')](_0x1d368e[_0x7e76('0x58')]);_0x3c6be5({'val':0x0});});});}function updateTzVoiceQueues(_0x4014c1){return new Promise(function(_0xfe9bc,_0x52ad5c){var _0x3563b2=squel[_0x7e76('0x33')]()[_0x7e76('0x40')](['voice_queues.id',_0x7e76('0x62')])[_0x7e76('0x10')](_0x7e76('0x63'))[_0x7e76('0x15')]('voice_queues_has_cm_lists',null,'voice_queues.id\x20=\x20voice_queues_has_cm_lists.VoiceQueueId')[_0x7e76('0x12')](_0x7e76('0x64')+_0x4014c1);db['sequelize'][_0x7e76('0x65')](_0x3563b2[_0x7e76('0x3b')]())['spread'](function(_0x20276c){var _0x1e5772=[];for(var _0x259249=0x0;_0x259249<_0x20276c[_0x7e76('0x1c')];_0x259249++){_0x1e5772[_0x7e76('0x19')](getTimezoneData(_0x20276c[_0x259249],tmp_voice_queues));}BPromise[_0x7e76('0x1a')](_0x1e5772)[_0x7e76('0x18')](function(){_0xfe9bc({'val':0x1});});})[_0x7e76('0x66')](function(_0x5bd70d){logger[_0x7e76('0x57')](_0x5bd70d[_0x7e76('0x58')]);_0xfe9bc({'val':0x0});});});}function getTimezoneData(_0x2a2a48,_0x25c7e1){return new Promise(function(_0x28e0a7,_0x134e8e){var _0x4adc4b=shared[_0x7e76('0x67')];var _0x19d9a1=_0x4adc4b[_0x2a2a48[_0x7e76('0x68')]];if(_[_0x7e76('0x1e')](_0x19d9a1)){_0x28e0a7({'ret':0x1});}else{var _0x41279e=_0x19d9a1[_0x7e76('0x69')];var _0x32c3e4=squel['insert']()[_0x7e76('0x3d')](_0x25c7e1)[_0x7e76('0x6a')]('id',_0x2a2a48['id'])[_0x7e76('0x6a')](_0x7e76('0x6b'),_0x41279e)[_0x7e76('0x6a')]('dialTimezone',_0x2a2a48[_0x7e76('0x68')])[_0x7e76('0x3b')]();return db['sequelize'][_0x7e76('0x65')](_0x32c3e4)[_0x7e76('0x61')](function(_0xb010c2){_0x28e0a7({'ret':0x1});})[_0x7e76('0x66')](function(_0x2e3fcd){logger[_0x7e76('0x57')](_0x2e3fcd[_0x7e76('0x58')]);_0x134e8e({'ret':0x1});});}});}function handleTZQuery(_0x194a30){logger[_0x7e76('0x55')](_0x194a30);return db[_0x7e76('0x5c')][_0x7e76('0x65')](_0x194a30)['spread'](function(_0x7be35a){})[_0x7e76('0x66')](function(_0x4119e3){logger[_0x7e76('0x57')](_0x4119e3['message']);});}function main(_0x66d331,_0x1ad5af,_0x16c302,_0x1a9834){logger[_0x7e76('0x55')](_0x7e76('0x6c'),_0x66d331,JSON[_0x7e76('0x6d')](_0x1ad5af));process[_0x7e76('0x6e')]('start');var _0x5a6893=_0x1ad5af['binding'];var _0x18c209=_[_0x7e76('0x6f')](_0x5a6893);var _0x3b92d6=_0x1ad5af[_0x7e76('0x70')];var _0x221381=path[_0x7e76('0x15')](config['root'],_0x7e76('0x71'),_0x3b92d6+_0x7e76('0x72'));hasTZ=_[_0x7e76('0x4e')](_0x5a6893)[_0x7e76('0x73')]('dialTimezone');var _0x49857f=_[_0x7e76('0x4e')](_0x5a6893)[_0x7e76('0x15')]();logger[_0x7e76('0x55')](_0x7e76('0x74'),_0x49857f);db[_0x7e76('0x75')][_0x7e76('0x17')]({'raw':!![],'attributes':['id',_0x7e76('0x76')]})[_0x7e76('0x18')](function(_0x3d2bcb){for(var _0x2f858d=0x0;_0x2f858d<_0x3d2bcb[_0x7e76('0x1c')];_0x2f858d++){if(_0x3d2bcb[_0x2f858d]['name']in _0x5a6893){contactItemTypes['push'](_0x3d2bcb[_0x2f858d]);delete _0x18c209[_0x3d2bcb[_0x2f858d][_0x7e76('0x76')]];hasAdditionalPhones=!![];}for(var _0x24ccd0 in _0x5a6893){if(_0x3d2bcb[_0x2f858d][_0x7e76('0x76')]+_0x7e76('0x77')===_0x24ccd0){phoneDescriptions[_0x7e76('0x19')]({'itemTypeId':_0x3d2bcb[_0x2f858d]['id'],'description':_0x24ccd0});delete _0x18c209[_0x24ccd0];}}}if(hasAdditionalPhones)_0x18c209[_0x7e76('0x1b')]='';var _0x5173e9=_['keys'](_0x18c209)[_0x7e76('0x15')]();logger['info']('header',_0x5173e9);fs[_0x7e76('0x78')](_0x221381,_0x5173e9+'\x0a');Papa[_0x7e76('0x79')](fs[_0x7e76('0x7a')](_0x66d331),{'header':!![],'skipEmptyLines':!![],'step':function(_0x5293e6,_0x35c200){try{for(var _0x4d554b=0x0,_0x5d3a7e=[];_0x4d554b<_0x5293e6['data'][_0x7e76('0x1c')];_0x4d554b++){stats['rows']+=0x1;if(_0x5293e6[_0x7e76('0x5a')][_0x4d554b]){handleError(_0x5293e6[_0x7e76('0x7b')][_0x4d554b],_0x5293e6['errors'][_0x4d554b]);}else{var _0x14d976=[];var _0x22ed46=[];var _0x20abbc={};for(var _0x230f1a in _0x5a6893){let _0xce303a=contactItemTypes[_0x7e76('0x7c')](_0x53ec89=>_0x53ec89[_0x7e76('0x76')]===_0x230f1a);let _0x3da4e3=contactItemTypes[_0x7e76('0x7c')](_0x4bd5a6=>_0x4bd5a6[_0x7e76('0x76')]+'_description'===_0x230f1a);if(_['isNil'](_0xce303a)&&_[_0x7e76('0x1e')](_0x3da4e3)){if(_0x5a6893[_0x7e76('0x7d')](_0x230f1a)){if(_0x5293e6['data'][_0x4d554b][_0x5a6893[_0x230f1a]]){var _0x2ed1a5=_[_0x7e76('0x7e')](_0x5293e6[_0x7e76('0x7b')][_0x4d554b][_0x5a6893[_0x230f1a]][_0x7e76('0x7f')](/"/g,'\x27'));switch(_0x230f1a){case'scheduledat':var _0x466396=moment(_0x2ed1a5,_0x7e76('0x80'),!![]);if(_0x466396[_0x7e76('0x81')]()){_0x5d3a7e[_0x7e76('0x19')]('\x22'+_0x2ed1a5+'\x22');}else{_0x14d976[_0x7e76('0x19')]('scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)');}break;case'priority':var _0x3965f3=parseInt(_0x2ed1a5);_0x2ed1a5=_[_0x7e76('0x82')](_0x3965f3)||_0x3965f3<0x0||_0x3965f3>0x4?_0x1a9834?0x3:0x2:_0x3965f3;_0x5d3a7e['push']('\x22'+_0x2ed1a5+'\x22');break;case'UserId':var _0x247401=parseInt(_0x2ed1a5);if(_[_0x7e76('0x83')](_0x247401)&&_[_0x7e76('0x73')](_0x16c302,_0x247401)){_0x5d3a7e[_0x7e76('0x19')]('\x22'+_0x247401+'\x22');}else{_0x14d976[_0x7e76('0x19')](_0x7e76('0x84'));}break;case _0x7e76('0x85'):if(isEmail(_0x2ed1a5)){_0x5d3a7e[_0x7e76('0x19')]('\x22'+_0x2ed1a5+'\x22');}else{_0x14d976[_0x7e76('0x19')](_0x7e76('0x86'));}break;case _0x7e76('0x87'):var _0x44f53c=moment(_0x2ed1a5,'YYYY-MM-DD',!![]);if(_0x44f53c[_0x7e76('0x81')]()){_0x5d3a7e[_0x7e76('0x19')]('\x22'+_0x2ed1a5+'\x22');}else{_0x14d976[_0x7e76('0x19')](_0x7e76('0x88'));}break;case'dialTimezone':var _0x2f5237=shared['timezones'];var _0x468761=_0x2f5237[_0x2ed1a5];if(!_[_0x7e76('0x1e')](_0x468761)){var _0x5e697a=_0x468761['utcOffset'];_0x5d3a7e[_0x7e76('0x19')]('\x22'+_0x2ed1a5+'\x22');_0x5d3a7e[_0x7e76('0x19')]('\x22'+_0x5e697a+'\x22');}break;default:_0x5d3a7e[_0x7e76('0x19')]('\x22'+_0x2ed1a5+'\x22');}}else{switch(_0x230f1a){case _0x7e76('0x89'):case _0x7e76('0xf'):_0x14d976[_0x7e76('0x19')](_0x230f1a+_0x7e76('0x8a'));break;default:_0x5d3a7e[_0x7e76('0x19')]('\x22\x22');}}}}else{var _0x39593c='';if(!_[_0x7e76('0x1e')](_0xce303a)){if(!_0x20abbc[_0x7e76('0x7d')](_0xce303a['id'])){if(!_[_0x7e76('0x1e')](_0x5293e6['data'][_0x4d554b][_0x5a6893[_0x230f1a]])){var _0x2ed1a5=_['trim'](_0x5293e6[_0x7e76('0x7b')][_0x4d554b][_0x5a6893[_0x230f1a]][_0x7e76('0x7f')](/"/g,'\x27'));var _0x1dd075=phoneDescriptions[_0x7e76('0x7c')](_0x260624=>_0x260624['itemTypeId']===_0xce303a['id']);if(!_['isNil'](_0x1dd075)){var _0x2ca0e=_[_0x7e76('0x7e')](_0x5293e6[_0x7e76('0x7b')][_0x4d554b][_0x5a6893[_0x1dd075[_0x7e76('0x8b')]]][_0x7e76('0x7f')](/"/g,'\x27'));if(!_[_0x7e76('0x1e')](_0x2ca0e))_0x2ed1a5=_0x2ed1a5+'§'+_0x2ca0e;}if(_0x39593c=='')_0x39593c=_0x2ed1a5;else _0x39593c+='|'+_0x2ed1a5;}_0x22ed46[_0x7e76('0x19')](_0xce303a['id']+':'+_0x39593c);_0x20abbc[_0xce303a['id']]=0x1;}}}}if(hasAdditionalPhones){_0x5d3a7e[_0x7e76('0x19')]('\x22'+_0x22ed46[_0x7e76('0x15')](';')+'\x22');}if(_0x14d976[_0x7e76('0x1c')]){handleError(_0x5293e6['data'][_0x4d554b],{'code':'SystemRow','message':_0x14d976[_0x7e76('0x15')]()});}else{fs['appendFileSync'](_0x221381,_0x5d3a7e[_0x7e76('0x15')]()+'\x0a');}_0x5d3a7e=[];}if(!(stats[_0x7e76('0x8c')]%0xc8)){socket[_0x7e76('0x8d')]('contact:import:'+_0x3b92d6,stats);stats[_0x7e76('0x5a')]=[];}}if(stopped){logger[_0x7e76('0x55')](_0x7e76('0x8e'));_0x35c200[_0x7e76('0x8f')]();}}catch(_0x28157e){handleError(_0x5293e6['data'][_0x4d554b],{'code':'SystemError','message':_0x28157e[_0x7e76('0x58')]});logger[_0x7e76('0x57')]('step',_0x28157e[_0x7e76('0x58')]);}},'complete':function(){try{var _0x2c26c5=[];var _0x199aa7=[];var _0x2762f4='cm_contacts';if(_0x1ad5af[_0x7e76('0x90')]&&_0x1ad5af[_0x7e76('0x90')]['length']){_0x2762f4=_0x7e76('0x91')+_0x3b92d6;_0x2c26c5['push'](_0x7e76('0x92')+_0x2762f4+_0x7e76('0x93'));}tmp_campaigns=_0x7e76('0x94')+_0x3b92d6;tmp_voice_queues=_0x7e76('0x95')+_0x3b92d6;_0x199aa7[_0x7e76('0x19')](_0x7e76('0x92')+tmp_campaigns+_0x7e76('0x96'));_0x199aa7[_0x7e76('0x19')](_0x7e76('0x92')+tmp_voice_queues+'(id\x20int,dialTimezone\x20varchar(255),offset\x20int);');BPromise[_0x7e76('0x97')](_0x199aa7,handleTZQuery)[_0x7e76('0x18')](function(_0xda206c){updateTzCampaigns(_0x1ad5af[_0x7e76('0x2d')])[_0x7e76('0x18')](function(_0x23190a){updateTzVoiceQueues(_0x1ad5af[_0x7e76('0x2d')])[_0x7e76('0x18')](function(_0x3b88c7){if(hasTZ)_0x5173e9=_0x5173e9[_0x7e76('0x7f')](_0x7e76('0x68'),'dialTimezone,utcOffset');var _0x548dc9=util['format'](_0x7e76('0x98'),_0x221381,_0x2762f4,_0x5173e9,_0x1ad5af['ListId'],_0x1ad5af[_0x7e76('0x99')]||null,NOW,NOW);if(_[_0x7e76('0x1e')](_0x5a6893['scheduledat'])){_0x548dc9+=_0x7e76('0x9a');}_0x2c26c5['push'](_0x548dc9);if(_0x1ad5af[_0x7e76('0x90')]&&_0x1ad5af[_0x7e76('0x90')]['length']){_0x2c26c5[_0x7e76('0x19')](insertCmContact(_0x1ad5af[_0x7e76('0x2d')],_0x2762f4,_0x1ad5af[_0x7e76('0x90')],_0x5a6893));_0x2c26c5[_0x7e76('0x19')](_0x7e76('0x9b')+_0x2762f4+';');}BPromise['each'](_0x2c26c5,handleQuery)[_0x7e76('0x18')](function(_0x4797bb){BPromise['all']([handleAdditionalPhones()])[_0x7e76('0x18')](function(){_0x2c26c5=[];for(var _0x16bdf4=0x0;_0x16bdf4<promisesAdditionalPhones[_0x7e76('0x1c')];_0x16bdf4++){if(promisesAdditionalPhones[_0x16bdf4][_0x7e76('0xf')]!='§'){_0x2c26c5[_0x7e76('0x19')](createAdditionalPhone(promisesAdditionalPhones[_0x16bdf4][_0x7e76('0x9c')],promisesAdditionalPhones[_0x16bdf4][_0x7e76('0x9d')],promisesAdditionalPhones[_0x16bdf4]['phone'],promisesAdditionalPhones[_0x16bdf4][_0x7e76('0x9e')]));}}BPromise[_0x7e76('0x1a')](_0x2c26c5)[_0x7e76('0x18')](function(){_0x2c26c5=[];if(hasTZ){_0x2c26c5[_0x7e76('0x19')](insertTzCmHopper(_0x1ad5af[_0x7e76('0x2d')],_0x7e76('0x9f'),'voice_queues','VoiceQueueId',_0x1a9834,tmp_voice_queues));_0x2c26c5['push'](insertTzCmHopperBlack(_0x1ad5af[_0x7e76('0x2d')],_0x7e76('0xa0'),_0x7e76('0x63'),_0x7e76('0xa1')));_0x2c26c5[_0x7e76('0x19')](insertTzCmHopper(_0x1ad5af['ListId'],_0x7e76('0x60'),'campaigns',_0x7e76('0xa2'),_0x1a9834,tmp_campaigns));_0x2c26c5[_0x7e76('0x19')](insertTzCmHopperBlack(_0x1ad5af[_0x7e76('0x2d')],_0x7e76('0xa3'),_0x7e76('0x5f'),_0x7e76('0xa2')));_0x2c26c5[_0x7e76('0x19')](insertCmHopperAdditionalPhones(_0x1ad5af[_0x7e76('0x2d')]));}else{_0x2c26c5['push'](insertCmHopper(_0x1ad5af[_0x7e76('0x2d')],'voice_queues_has_cm_lists',_0x7e76('0x63'),_0x7e76('0xa1'),_0x1a9834));_0x2c26c5[_0x7e76('0x19')](insertCmHopperBlack(_0x1ad5af[_0x7e76('0x2d')],_0x7e76('0xa0'),'voice_queues',_0x7e76('0xa1')));_0x2c26c5['push'](insertCmHopper(_0x1ad5af[_0x7e76('0x2d')],_0x7e76('0x60'),_0x7e76('0x5f'),'CampaignId',_0x1a9834));_0x2c26c5[_0x7e76('0x19')](insertCmHopperBlack(_0x1ad5af[_0x7e76('0x2d')],'campaigns_has_cm_blacklists',_0x7e76('0x5f'),_0x7e76('0xa2')));_0x2c26c5[_0x7e76('0x19')](insertCmHopperAdditionalPhones(_0x1ad5af[_0x7e76('0x2d')]));}_0x2c26c5['push'](_0x7e76('0x9b')+tmp_campaigns+';');_0x2c26c5['push']('DROP\x20TABLE\x20'+tmp_voice_queues+';');BPromise[_0x7e76('0x97')](_0x2c26c5,handleQuery)[_0x7e76('0x18')](function(_0x2437ae){stats[_0x7e76('0xa4')]=!![];stats['affectedRows']=_0x1ad5af[_0x7e76('0x90')]&&_0x1ad5af[_0x7e76('0x90')][_0x7e76('0x1c')]?results[0x2][_0x7e76('0xa5')]:results[0x0][_0x7e76('0xa5')];socket[_0x7e76('0x8d')]('contact:import:'+_0x3b92d6,stats);fs['unlink'](_0x66d331);fs[_0x7e76('0xa6')](_0x221381);process[_0x7e76('0x59')](0x0);})[_0x7e76('0x66')](function(_0x156bda){logger[_0x7e76('0x57')](_0x156bda[_0x7e76('0x58')]);process[_0x7e76('0x59')](0x1);});});});})[_0x7e76('0x66')](function(_0x6b7541){logger[_0x7e76('0x57')](_0x6b7541[_0x7e76('0x58')]);process[_0x7e76('0x59')](0x1);});});});});}catch(_0x10175d){logger['error'](_0x7e76('0xa7'),_0x10175d[_0x7e76('0x58')]);process[_0x7e76('0x59')](0x1);}},'error':function(_0x1079ec,_0x47abc0,_0x5496b1,_0x1bc6d1){throw new Error(_0x1bc6d1);}});});}function validate(){if(process['argv']&&process[_0x7e76('0xa8')][_0x7e76('0x1c')]<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x1f20dc=path[_0x7e76('0x15')](config[_0x7e76('0xa9')],_0x7e76('0x71'),process['argv'][0x2]);if(!fs[_0x7e76('0xaa')](_0x1f20dc)){throw new Error(_0x7e76('0xab'));}var _0x592c73={};try{_0x592c73=JSON[_0x7e76('0x79')](process[_0x7e76('0xa8')][0x3]);if(!_0x592c73[_0x7e76('0xac')]){throw new Error(_0x7e76('0xad'));}if(!_0x592c73['binding'][_0x7e76('0xf')]){throw new Error(_0x7e76('0xae'));}if(!_0x592c73[_0x7e76('0xac')]['firstName']){throw new Error(_0x7e76('0xaf'));}var _0x1b310a=0x0;if(_0x592c73['binding'][_0x7e76('0x31')]){_0x1b310a=0x1;}if(!_0x592c73[_0x7e76('0x2d')]){throw new Error(_0x7e76('0xb0'));}}catch(_0x24b099){throw new Error(_0x7e76('0xb1'));}var _0x303a4a=[];try{_0x303a4a=_['map'](JSON[_0x7e76('0x79')](process[_0x7e76('0xa8')][0x4]),'id');}catch(_0x11a27a){logger[_0x7e76('0x55')](_0x7e76('0xb2'));}main(_0x1f20dc,_0x592c73,_0x303a4a,_0x1b310a);}validate();process['on'](_0x7e76('0xb3'),handleStop);process['on']('uncaughtException',handleUncaughtException);
\ No newline at end of file
index b163b58..6b8c614 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcc4d=['split','length','then','filter','findOne','CmContactHasItem','update','updated','PHONE','inserted','CmHopper','cm_contacts.phone','cm_contacts.id','cm_contacts.ListId','cm_contacts.createdAt','cm_contacts.priority','cm_contacts.UserId','insert','into','cm_hopper','fromQuery','scheduledat','ContactId','ListId','createdAt','updatedAt','priority','recallme','fields','from','cm_contacts','cm_contacts.ListId\x20=\x20','.CmListId','.CmListId\x20=\x20?','\x22always\x22','toString','cm_contacts.updatedAt','cm_hopper_black','cm_contacts.createdAt\x20=\x20?','cm_contacts.phone\x20NOT\x20IN\x20(?)','select','ListId\x20=\x20?','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','OrderBy','cm_contacts.id\x20=\x20cm_hopper.ContactId','cm_contact_has_items','cm_hopper.ListId\x20=\x20?','concat','keys','CompanyId','min_id','group','info','Received\x20SIGINT','errors','code','spread','send','binding','clone','socket_timestamp','root','server/files/tmp','.csv','ContactItemType','name','header','writeFileSync','parse','createReadStream','data','rows','find','hasOwnProperty','replace','isValid','scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)','UserId','isNumber','includes','agent\x20not\x20exists','email\x20wrong\x20format','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','trim','description','contact:import:','Abort\x20parser','SystemError','step','\x20LIKE\x20cm_contacts;','format','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\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','each','contact','contactId','contactTypeId','orderBy','DROP\x20TABLE\x20','finish','emit','exit','complete','argv','arguments\x20<filename>\x20<parameters>\x20<agents>','existsSync','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','uncaughtException','path','lodash','bluebird','moment','squel','../../../mysqldb','../../../config/environment','../../../config/logger','import','redis','localhost','socket.io-emitter','YYYY-MM-DD\x20HH:mm:ss','cm_contacts_temp_','YYYYMMDDHHmmss','field','phone','join','.id\x20=\x20','where','\x20=\x20','.dialCheckDuplicateType\x20IN\x20(','sequelize','query','isNil','push','all','catch','error','message','AdditionalPhones'];(function(_0x8e1f9f,_0x3c4511){var _0x3b12bb=function(_0x46ef7e){while(--_0x46ef7e){_0x8e1f9f['push'](_0x8e1f9f['shift']());}};_0x3b12bb(++_0x3c4511);}(_0xcc4d,0x103));var _0xdcc4=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0xcc4d[_0x2d7f0e];return _0x110b07;};'use strict';var fs=require('fs');var path=require(_0xdcc4('0x0'));var _=require(_0xdcc4('0x1'));var Papa=require('papaparse');var util=require('util');var BPromise=require(_0xdcc4('0x2'));var moment=require(_0xdcc4('0x3'));var squel=require(_0xdcc4('0x4'));var Redis=require('ioredis');var db=require(_0xdcc4('0x5'))['db'];var config=require(_0xdcc4('0x6'));var logger=require(_0xdcc4('0x7'))(_0xdcc4('0x8'));config[_0xdcc4('0x9')]=_['defaults'](config['redis'],{'host':_0xdcc4('0xa'),'port':0x18eb});var socket=require(_0xdcc4('0xb'))(new Redis(config[_0xdcc4('0x9')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var promisesContact=[];var orderBy=0x0;var updatedRows=0x0;var stopped=![];var NOW=moment()['format'](_0xdcc4('0xc'));var tempTableName=_0xdcc4('0xd')+moment()['format'](_0xdcc4('0xe'));var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x3de22c){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))*$/['test'](_0x3de22c);}function selectNotIn(_0x2e347f,_0x1940b0,_0xf92170,_0x578af7,_0x391317){return squel['select']()[_0xdcc4('0xf')](_0xdcc4('0x10'))['from'](_0x578af7)[_0xdcc4('0x11')](_0x1940b0,null,_0x1940b0+_0xdcc4('0x12')+_0x578af7+'.'+_0xf92170)[_0xdcc4('0x13')](_0x578af7+'.'+_0xf92170+_0xdcc4('0x14')+_0x2e347f+'.'+_0xf92170)['where'](_0x1940b0+_0xdcc4('0x15')+_0x391317[_0xdcc4('0x11')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0x4b11d3,_0x481314){promisesAdditionalPhones=[];promisesContact=[];return db[_0xdcc4('0x16')][_0xdcc4('0x17')]('select\x20*\x20from\x20'+tempTableName)['spread'](function(_0x574603){if(_0x574603!==null){var _0x5df842=[];for(var _0x2f128a=0x0;_0x2f128a<_0x574603['length'];_0x2f128a++){var _0x2bda58=_0x574603[_0x2f128a];if(!_[_0xdcc4('0x18')](_0x2bda58[_0xdcc4('0x10')])){if(!_['isNil'](_0x2bda58['AdditionalPhones']))_0x5df842[_0xdcc4('0x19')](insertAdditionalPhones(_0x2bda58));promisesContact[_0xdcc4('0x19')]({'contact':_0x2bda58});}}}Promise[_0xdcc4('0x1a')](_0x5df842)['then'](function(){_0x4b11d3({'val':0x1});});})[_0xdcc4('0x1b')](function(_0x11f059){logger[_0xdcc4('0x1c')](_0x11f059[_0xdcc4('0x1d')]);});});}function insertAdditionalPhones(_0x5e8a32){return new Promise(function(_0x3e95c3,_0x278a90){var _0x3a37db=_0x5e8a32[_0xdcc4('0x1e')];if(_[_0xdcc4('0x18')](_0x3a37db))_0x278a90({'val':0x0});else{var _0x1425cd=_0x3a37db[_0xdcc4('0x1f')](';');var _0x38a6f0=[];orderBy=0x0;for(var _0xe71eb1=0x0;_0xe71eb1<_0x1425cd[_0xdcc4('0x20')];_0xe71eb1++){_0x38a6f0[_0xdcc4('0x19')](splitAdditionalPhone(_0x5e8a32['id'],_0x1425cd[_0xe71eb1]));}Promise['all'](_0x38a6f0)[_0xdcc4('0x21')](function(){_0x3e95c3({'val':_0x1425cd[_0xdcc4('0x20')]});});}});}function splitAdditionalPhone(_0xf856e0,_0x1f3c32){return new Promise(function(_0x2139c5,_0x4038c7){var _0x17a70f=_0x1f3c32['split'](':');var _0x411e82=_0x17a70f[0x0];var _0x5131cf=_0x17a70f[0x1];if(_0x5131cf!==''){var _0x42df29=_0x5131cf[_0xdcc4('0x1f')]('|');var _0xe1801e=[];for(var _0x5565a2=0x0;_0x5565a2<_0x42df29[_0xdcc4('0x20')];_0x5565a2++){if(_0x42df29[_0x5565a2]!==''){var _0x51852c=_[_0xdcc4('0x22')](promisesAdditionalPhones,{'contactId':_0xf856e0,'phone':_0x42df29[_0x5565a2]});if(_0x51852c[_0xdcc4('0x20')]==0x0){orderBy++;promisesAdditionalPhones['push']({'contactId':_0xf856e0,'contactTypeId':_0x411e82,'phone':_0x42df29[_0x5565a2],'orderBy':orderBy});}}}_0x2139c5({'ok':0x1});}else _0x2139c5({'res':0x0});});}function createAdditionalPhone(_0x5965ba,_0x239696,_0x30c694,_0x3cf72a){var _0x5c3b7c='';var _0x156ce7='';var _0x252e6b=_0x30c694[_0xdcc4('0x1f')]('§');_0x5c3b7c=_0x252e6b[0x0];if(_0x252e6b[_0xdcc4('0x20')]==0x2)_0x156ce7=_0x252e6b[0x1];return new Promise(function(_0x1d0729,_0x1e87ee){return db['CmContactHasItem'][_0xdcc4('0x23')]({'where':{'CmContactId':_0x5965ba,'item':_0x5c3b7c}})[_0xdcc4('0x21')](function(_0x4f27c7){if(_0x4f27c7){return db[_0xdcc4('0x24')][_0xdcc4('0x25')]({'ItemTypeId':_0x239696,'description':_0x156ce7,'OrderBy':_0x3cf72a},{'where':{'CmContactId':_0x5965ba,'item':_0x5c3b7c}})[_0xdcc4('0x21')](function(_0x204a2e){_0x1d0729({'res':_0xdcc4('0x26')});});}else{return db[_0xdcc4('0x24')]['create']({'CmContactId':_0x5965ba,'item':_0x5c3b7c,'ItemTypeId':_0x239696,'description':_0x156ce7,'OrderBy':_0x3cf72a,'ItemClass':_0xdcc4('0x27')})[_0xdcc4('0x21')](function(_0x1adcbb){_0x1d0729({'res':_0xdcc4('0x28')});});}});});}function updateContact(_0x4765cd){return new Promise(function(_0x4eb5eb,_0x57a552){var _0x4ff0ae=_0x4765cd['id'];delete _0x4765cd['id'];return db['CmContact']['update'](_0x4765cd,{'where':{'id':_0x4ff0ae}})[_0xdcc4('0x21')](function(_0x3f772e){updatedRows+=0x1;return db[_0xdcc4('0x29')][_0xdcc4('0x25')]({'phone':_0x4765cd[_0xdcc4('0x10')]},{'where':{'ContactId':_0x4ff0ae}})[_0xdcc4('0x21')](function(_0x2432c8){_0x4eb5eb({'ret':'OK'});});});});}function insertCmHopper(_0x38533a,_0x1976c4,_0x381dd9,_0x3b18b1,_0x2dad6c){var _0x1a9c02=[_0xdcc4('0x2a'),'cm_contacts.scheduledat',_0xdcc4('0x2b'),_0xdcc4('0x2c'),_0x1976c4+'.'+_0x3b18b1,_0xdcc4('0x2d'),'cm_contacts.updatedAt',_0xdcc4('0x2e'),_0xdcc4('0x2f'),'\x22'+_0x2dad6c+'\x22'];return squel[_0xdcc4('0x30')]()[_0xdcc4('0x31')](_0xdcc4('0x32'))[_0xdcc4('0x33')](['phone',_0xdcc4('0x34'),_0xdcc4('0x35'),_0xdcc4('0x36'),_0x3b18b1,_0xdcc4('0x37'),_0xdcc4('0x38'),_0xdcc4('0x39'),'UserId',_0xdcc4('0x3a')],squel['select']()[_0xdcc4('0x3b')](_0x1a9c02)[_0xdcc4('0x3c')](_0x1976c4)[_0xdcc4('0x11')](_0xdcc4('0x3d'),null,_0xdcc4('0x3e')+_0x1976c4+_0xdcc4('0x3f'))[_0xdcc4('0x11')](_0x381dd9,null,_0x381dd9+'.id\x20=\x20'+_0x1976c4+'.'+_0x3b18b1)[_0xdcc4('0x13')](_0x1976c4+_0xdcc4('0x40'),_0x38533a)[_0xdcc4('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW)['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x1976c4,_0x381dd9,_0x3b18b1,_0xdcc4('0x32'),[_0xdcc4('0x41'),'\x22onlyIfOpen\x22']))[_0xdcc4('0x13')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x1976c4,_0x381dd9,_0x3b18b1,_0xdcc4('0x32'),[_0xdcc4('0x41')])))[_0xdcc4('0x42')]();}function insertCmHopperBlack(_0x519506,_0x2c79c7,_0x2b6743,_0x5f2053){var _0x4f0ce4=[_0xdcc4('0x2a'),_0xdcc4('0x2b'),_0xdcc4('0x2c'),_0x2c79c7+'.'+_0x5f2053,_0xdcc4('0x2d'),_0xdcc4('0x43')];return squel[_0xdcc4('0x30')]()[_0xdcc4('0x31')](_0xdcc4('0x44'))[_0xdcc4('0x33')]([_0xdcc4('0x10'),'ContactId',_0xdcc4('0x36'),_0x5f2053,_0xdcc4('0x37'),'updatedAt'],squel['select']()[_0xdcc4('0x3b')](_0x4f0ce4)['from'](_0x2c79c7)['join'](_0xdcc4('0x3d'),null,_0xdcc4('0x3e')+_0x2c79c7+_0xdcc4('0x3f'))[_0xdcc4('0x11')](_0x2b6743,null,_0x2b6743+_0xdcc4('0x12')+_0x2c79c7+'.'+_0x5f2053)[_0xdcc4('0x13')](_0x2c79c7+_0xdcc4('0x40'),_0x519506)[_0xdcc4('0x13')](_0xdcc4('0x45'),NOW)[_0xdcc4('0x13')](_0xdcc4('0x46'),squel[_0xdcc4('0x47')]()[_0xdcc4('0xf')]('phone')[_0xdcc4('0x3c')](_0xdcc4('0x44'))[_0xdcc4('0x13')](_0xdcc4('0x48'),_0x519506)[_0xdcc4('0x13')](_0x5f2053+'\x20=\x20?',_0x2c79c7+'.'+_0x5f2053)))['toString']();}function insertCmHopperAdditionalPhones(_0x17d6ef){var _0x5778f4=['cm_hopper.id','cm_contact_has_items.item',_0xdcc4('0x49'),_0xdcc4('0x4a'),_0xdcc4('0x4b')];return squel[_0xdcc4('0x30')]()[_0xdcc4('0x31')]('cm_hopper_additional_phones')[_0xdcc4('0x33')](['CmHopperId',_0xdcc4('0x10'),_0xdcc4('0x4c'),_0xdcc4('0x37'),_0xdcc4('0x38')],squel[_0xdcc4('0x47')]()['fields'](_0x5778f4)[_0xdcc4('0x3c')]('cm_hopper')[_0xdcc4('0x11')]('cm_contacts',null,_0xdcc4('0x4d'))[_0xdcc4('0x11')](_0xdcc4('0x4e'),null,'cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId')[_0xdcc4('0x13')](_0xdcc4('0x4f'),_0x17d6ef)[_0xdcc4('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW))['toString']();}function insertCmContact(_0x552a2c,_0x42f812,_0xa09578,_0x206af2){var _0x4ea036=_[_0xdcc4('0x50')](_[_0xdcc4('0x51')](_0x206af2),[_0xdcc4('0x36'),_0xdcc4('0x52'),'createdAt',_0xdcc4('0x38')]);return squel[_0xdcc4('0x30')]()[_0xdcc4('0x31')]('cm_contacts')[_0xdcc4('0x33')](_0x4ea036,squel[_0xdcc4('0x47')]()['fields'](_0x4ea036)[_0xdcc4('0x3c')](_0x42f812)[_0xdcc4('0x13')]('('+_0xa09578['join'](',')+')\x20NOT\x20IN\x20?',squel[_0xdcc4('0x47')]()['fields'](_0xa09578)[_0xdcc4('0x3c')](_0xdcc4('0x3d'))['where']('ListId\x20=\x20?',_0x552a2c))[_0xdcc4('0x13')]('id\x20IN\x20?',squel[_0xdcc4('0x47')]()[_0xdcc4('0xf')]('MIN(id)',_0xdcc4('0x53'))[_0xdcc4('0x3c')](_0x42f812)[_0xdcc4('0x54')](_0xa09578[_0xdcc4('0x11')](','))))[_0xdcc4('0x42')]();}function handleStop(){logger[_0xdcc4('0x55')](_0xdcc4('0x56'));stopped=!![];}function handleUncaughtException(_0x2a266a){logger[_0xdcc4('0x1c')](_0x2a266a[_0xdcc4('0x1d')]);process['exit'](0x1);}function handleError(_0x1628a9,_0x257ed9){stats[_0xdcc4('0x57')][_0xdcc4('0x19')]({'name':_0x257ed9[_0xdcc4('0x58')],'message':_0x257ed9[_0xdcc4('0x1d')],'row':_0x1628a9});}function handleQuery(_0x334a22){logger[_0xdcc4('0x55')](_0x334a22);return db[_0xdcc4('0x16')][_0xdcc4('0x17')](_0x334a22)[_0xdcc4('0x59')](function(_0x27d4a9){results['push'](_0x27d4a9);})[_0xdcc4('0x1b')](function(_0x31967e){logger['error'](_0x31967e['message']);});}function main(_0x546677,_0x3a6a22,_0x2581ab,_0x5c121c){logger['info']('main',_0x546677,JSON['stringify'](_0x3a6a22));process[_0xdcc4('0x5a')]('start');var _0x235134=_0x3a6a22[_0xdcc4('0x5b')];var _0x2023ff=_[_0xdcc4('0x5c')](_0x235134);var _0x54651f=_0x3a6a22[_0xdcc4('0x5d')];var _0x5d9d55=path['join'](config[_0xdcc4('0x5e')],_0xdcc4('0x5f'),_0x54651f+_0xdcc4('0x60'));logger[_0xdcc4('0x55')]('body',_0x3a6a22);db[_0xdcc4('0x61')]['findAll']({'raw':!![],'attributes':['id','name']})[_0xdcc4('0x21')](function(_0x15dc70){for(var _0x23bf05=0x0;_0x23bf05<_0x15dc70[_0xdcc4('0x20')];_0x23bf05++){if(_0x15dc70[_0x23bf05][_0xdcc4('0x62')]in _0x235134){contactItemTypes[_0xdcc4('0x19')](_0x15dc70[_0x23bf05]);delete _0x2023ff[_0x15dc70[_0x23bf05][_0xdcc4('0x62')]];hasAdditionalPhones=!![];}for(var _0x219d1d in _0x235134){if(_0x15dc70[_0x23bf05][_0xdcc4('0x62')]+'_description'===_0x219d1d){phoneDescriptions['push']({'itemTypeId':_0x15dc70[_0x23bf05]['id'],'description':_0x219d1d});delete _0x2023ff[_0x219d1d];}}}if(hasAdditionalPhones)_0x2023ff[_0xdcc4('0x1e')]='';var _0x1ff225=_[_0xdcc4('0x51')](_0x2023ff)[_0xdcc4('0x11')]();logger[_0xdcc4('0x55')](_0xdcc4('0x63'),_0x1ff225);fs[_0xdcc4('0x64')](_0x5d9d55,_0x1ff225+'\x0a');Papa[_0xdcc4('0x65')](fs[_0xdcc4('0x66')](_0x546677),{'header':!![],'skipEmptyLines':!![],'step':function(_0xe8c255,_0x1c1d08){try{for(var _0x1c8f8e=0x0,_0x27995b=[];_0x1c8f8e<_0xe8c255[_0xdcc4('0x67')]['length'];_0x1c8f8e++){stats[_0xdcc4('0x68')]+=0x1;if(_0xe8c255['errors'][_0x1c8f8e]){handleError(_0xe8c255[_0xdcc4('0x67')][_0x1c8f8e],_0xe8c255[_0xdcc4('0x57')][_0x1c8f8e]);}else{var _0x436f99=[];var _0xc34488=[];var _0x4f98ae={};for(var _0x148385 in _0x235134){let _0x1dd3ad=contactItemTypes[_0xdcc4('0x69')](_0x4f44e8=>_0x4f44e8[_0xdcc4('0x62')]===_0x148385);let _0x84c61d=contactItemTypes[_0xdcc4('0x69')](_0xf2d5a0=>_0xf2d5a0[_0xdcc4('0x62')]+'_description'===_0x148385);if(_[_0xdcc4('0x18')](_0x1dd3ad)&&_['isNil'](_0x84c61d)){if(_0x235134[_0xdcc4('0x6a')](_0x148385)){if(_0xe8c255[_0xdcc4('0x67')][_0x1c8f8e][_0x235134[_0x148385]]){var _0x3685c9=_['trim'](_0xe8c255['data'][_0x1c8f8e][_0x235134[_0x148385]][_0xdcc4('0x6b')](/"/g,'\x27'));switch(_0x148385){case'scheduledat':var _0x122572=moment(_0x3685c9,'YYYY-MM-DD\x20HH:mm:ss',!![]);if(_0x122572[_0xdcc4('0x6c')]()){_0x27995b[_0xdcc4('0x19')]('\x22'+_0x3685c9+'\x22');}else{_0x436f99[_0xdcc4('0x19')](_0xdcc4('0x6d'));}break;case _0xdcc4('0x39'):var _0x23ecb1=parseInt(_0x3685c9);_0x3685c9=_['isNaN'](_0x23ecb1)||_0x23ecb1<0x0||_0x23ecb1>0x4?_0x5c121c?0x3:0x2:_0x23ecb1;_0x27995b['push']('\x22'+_0x3685c9+'\x22');break;case _0xdcc4('0x6e'):var _0x4c5b56=parseInt(_0x3685c9);if(_[_0xdcc4('0x6f')](_0x4c5b56)&&_[_0xdcc4('0x70')](_0x2581ab,_0x4c5b56)){_0x27995b['push']('\x22'+_0x4c5b56+'\x22');}else{_0x436f99['push'](_0xdcc4('0x71'));}break;case'email':if(isEmail(_0x3685c9)){_0x27995b[_0xdcc4('0x19')]('\x22'+_0x3685c9+'\x22');}else{_0x436f99['push'](_0xdcc4('0x72'));}break;case'dateOfBirth':var _0x5eadc1=moment(_0x3685c9,'YYYY-MM-DD',!![]);if(_0x5eadc1[_0xdcc4('0x6c')]()){_0x27995b[_0xdcc4('0x19')]('\x22'+_0x3685c9+'\x22');}else{_0x436f99['push'](_0xdcc4('0x73'));}break;default:_0x27995b[_0xdcc4('0x19')]('\x22'+_0x3685c9+'\x22');}}else{switch(_0x148385){case _0xdcc4('0x74'):case _0xdcc4('0x10'):_0x436f99[_0xdcc4('0x19')](_0x148385+'\x20not\x20specified');break;default:_0x27995b[_0xdcc4('0x19')]('\x22\x22');}}}}else{var _0x5359dd='';if(!_[_0xdcc4('0x18')](_0x1dd3ad)){if(!_0x4f98ae[_0xdcc4('0x6a')](_0x1dd3ad['id'])){for(var _0x4c57fc=0x0;_0x4c57fc<_0x235134[_0x148385][_0xdcc4('0x20')];_0x4c57fc++){var _0x3685c9=_[_0xdcc4('0x75')](_0xe8c255[_0xdcc4('0x67')][_0x1c8f8e][_0x235134[_0x148385][_0x4c57fc]][_0xdcc4('0x6b')](/"/g,'\x27'));var _0x3a3d1a=phoneDescriptions[_0xdcc4('0x69')](_0x32c452=>_0x32c452['itemTypeId']===_0x1dd3ad['id']);if(!_[_0xdcc4('0x18')](_0x3a3d1a)){var _0x4dcf92=_['trim'](_0xe8c255[_0xdcc4('0x67')][_0x1c8f8e][_0x235134[_0x3a3d1a[_0xdcc4('0x76')]][0x0]]['replace'](/"/g,'\x27'));if(!_[_0xdcc4('0x18')](_0x4dcf92))_0x3685c9=_0x3685c9+'§'+_0x4dcf92;}if(_0x5359dd=='')_0x5359dd=_0x3685c9;else _0x5359dd+='|'+_0x3685c9;}_0xc34488[_0xdcc4('0x19')](_0x1dd3ad['id']+':'+_0x5359dd);_0x4f98ae[_0x1dd3ad['id']]=0x1;}}}}if(hasAdditionalPhones){_0x27995b[_0xdcc4('0x19')]('\x22'+_0xc34488['join'](';')+'\x22');}if(_0x436f99[_0xdcc4('0x20')]){handleError(_0xe8c255[_0xdcc4('0x67')][_0x1c8f8e],{'code':'SystemRow','message':_0x436f99[_0xdcc4('0x11')]()});}else{fs['appendFileSync'](_0x5d9d55,_0x27995b[_0xdcc4('0x11')]()+'\x0a');}_0x27995b=[];}if(!(stats[_0xdcc4('0x68')]%0xc8)){socket['emit'](_0xdcc4('0x77')+_0x54651f,stats);stats['errors']=[];}}if(stopped){logger[_0xdcc4('0x55')](_0xdcc4('0x78'));_0x1c1d08['abort']();}}catch(_0x629b13){handleError(_0xe8c255[_0xdcc4('0x67')][_0x1c8f8e],{'code':_0xdcc4('0x79'),'message':_0x629b13[_0xdcc4('0x1d')]});logger[_0xdcc4('0x1c')](_0xdcc4('0x7a'),_0x629b13[_0xdcc4('0x1d')]);}},'complete':function(){try{var _0x5e733c=[];var _0x44f445=tempTableName;_0x5e733c[_0xdcc4('0x19')]('CREATE\x20TABLE\x20'+_0x44f445+_0xdcc4('0x7b'));logger[_0xdcc4('0x55')]('CIS\x20len',contactItemTypes['length']);var _0x49e146=util[_0xdcc4('0x7c')](_0xdcc4('0x7d'),_0x5d9d55,_0x44f445,_0x1ff225,_0x3a6a22[_0xdcc4('0x36')],_0x3a6a22[_0xdcc4('0x52')]||null,NOW,NOW);if(_[_0xdcc4('0x18')](_0x235134[_0xdcc4('0x34')])){_0x49e146+=_0xdcc4('0x7e');}_0x5e733c['push'](_0x49e146);BPromise[_0xdcc4('0x7f')](_0x5e733c,handleQuery)[_0xdcc4('0x21')](function(_0x48057b){BPromise[_0xdcc4('0x1a')]([handleAdditionalPhones()])[_0xdcc4('0x21')](function(){_0x5e733c=[];for(var _0x2e2dc8=0x0;_0x2e2dc8<promisesContact[_0xdcc4('0x20')];_0x2e2dc8++){_0x5e733c[_0xdcc4('0x19')](updateContact(promisesContact[_0x2e2dc8][_0xdcc4('0x80')]));}BPromise[_0xdcc4('0x1a')](_0x5e733c)[_0xdcc4('0x21')](function(){_0x5e733c=[];for(var _0x3398d6=0x0;_0x3398d6<promisesAdditionalPhones['length'];_0x3398d6++){_0x5e733c[_0xdcc4('0x19')](createAdditionalPhone(promisesAdditionalPhones[_0x3398d6][_0xdcc4('0x81')],promisesAdditionalPhones[_0x3398d6][_0xdcc4('0x82')],promisesAdditionalPhones[_0x3398d6][_0xdcc4('0x10')],promisesAdditionalPhones[_0x3398d6][_0xdcc4('0x83')]));}BPromise['all'](_0x5e733c)[_0xdcc4('0x21')](function(){_0x5e733c=[];_0x5e733c[_0xdcc4('0x19')](insertCmHopperAdditionalPhones(_0x3a6a22[_0xdcc4('0x36')]));_0x5e733c['push'](_0xdcc4('0x84')+_0x44f445+';');BPromise['each'](_0x5e733c,handleQuery)[_0xdcc4('0x21')](function(_0x599944){stats[_0xdcc4('0x85')]=!![];stats['affectedRows']=updatedRows;socket[_0xdcc4('0x86')](_0xdcc4('0x77')+_0x54651f,stats);fs['unlink'](_0x546677);fs['unlink'](_0x5d9d55);process[_0xdcc4('0x87')](0x0);})[_0xdcc4('0x1b')](function(_0x177020){logger[_0xdcc4('0x1c')](_0x177020['message']);process['exit'](0x1);});});});});})[_0xdcc4('0x1b')](function(_0x41d664){logger[_0xdcc4('0x1c')](_0x41d664['message']);process[_0xdcc4('0x87')](0x1);});}catch(_0x55c444){logger['error'](_0xdcc4('0x88'),_0x55c444[_0xdcc4('0x1d')]);process[_0xdcc4('0x87')](0x1);}},'error':function(_0x27c84b,_0x5b8ddd,_0x43b4cf,_0x340926){throw new Error(_0x340926);}});});}function validate(){if(process[_0xdcc4('0x89')]&&process[_0xdcc4('0x89')][_0xdcc4('0x20')]<0x4){throw new Error(_0xdcc4('0x8a'));}var _0x17ed29=path[_0xdcc4('0x11')](config[_0xdcc4('0x5e')],_0xdcc4('0x5f'),process[_0xdcc4('0x89')][0x2]);if(!fs[_0xdcc4('0x8b')](_0x17ed29)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x103991={};try{_0x103991=JSON[_0xdcc4('0x65')](process[_0xdcc4('0x89')][0x3]);if(!_0x103991[_0xdcc4('0x5b')]){throw new Error('binding\x20doesn\x27t\x20exists');}var _0x1a53ac=0x0;if(_0x103991['binding']['UserId']){_0x1a53ac=0x1;}if(!_0x103991[_0xdcc4('0x36')]){throw new Error(_0xdcc4('0x8c'));}}catch(_0x721160){throw new Error(_0xdcc4('0x8d'));}var _0x32edfc=[];try{_0x32edfc=_[_0xdcc4('0x8e')](JSON[_0xdcc4('0x65')](process[_0xdcc4('0x89')][0x4]),'id');}catch(_0x435eab){logger[_0xdcc4('0x55')](_0xdcc4('0x8f'));}main(_0x17ed29,_0x103991,_0x32edfc,_0x1a53ac);}validate();process['on']('SIGINT',handleStop);process['on'](_0xdcc4('0x90'),handleUncaughtException);
\ No newline at end of file
+var _0x4f08=['cm_hopper_black','updatedAt','fields','cm_contacts','cm_contacts.createdAt\x20=\x20?','ListId\x20=\x20?','cm_contact_has_items.item','cm_contact_has_items.OrderBy','cm_contact_has_items.createdAt','cm_contact_has_items.updatedAt','cm_hopper_additional_phones','CmHopperId','OrderBy','cm_hopper','cm_contact_has_items','cm_contacts.id\x20=\x20cm_contact_has_items.CmContactId','cm_hopper.ListId\x20=\x20?','concat','keys','CompanyId','createdAt','id\x20IN\x20?','MIN(id)','min_id','group','Received\x20SIGINT','error','exit','errors','code','info','catch','main','send','clone','socket_timestamp','root','server/files/tmp','body','ContactItemType','name','_description','header','writeFileSync','createReadStream','rows','data','find','hasOwnProperty','trim','replace','isValid','isNaN','isNumber','agent\x20not\x20exists','email','email\x20wrong\x20format','dateOfBirth','YYYY-MM-DD','dateOfBirth\x20wrong\x20format\x20(YYYY-MM-DD)','firstName','\x20not\x20specified','description','SystemRow','appendFileSync','emit','contact:import:','Abort\x20parser','abort','step','CREATE\x20TABLE\x20','CIS\x20len','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\x20ListId\x20=\x20%s,\x20CompanyId\x20=\x20%s,\x20createdAt\x20=\x20\x27%s\x27,\x20updatedAt\x20=\x20\x27%s\x27',',\x20scheduledAt\x20=\x20NOW()','contact','contactTypeId','orderBy','DROP\x20TABLE\x20','each','unlink','complete','argv','existsSync','parse','binding','binding\x20doesn\x27t\x20exists','ListId\x20is\x20mandatory','body\x20id\x20mandatory','map','No\x20agent\x20available','SIGINT','uncaughtException','path','lodash','util','bluebird','squel','ioredis','../../../mysqldb','../../../config/logger','redis','defaults','socket.io-emitter','format','YYYY-MM-DD\x20HH:mm:ss','cm_contacts_temp_','test','select','field','phone','join','where','.dialCheckDuplicateType\x20IN\x20(','sequelize','query','select\x20*\x20from\x20','spread','length','isNil','AdditionalPhones','push','all','message','split','then','filter','CmContactHasItem','findOne','update','updated','create','PHONE','CmContact','cm_contacts.id','cm_contacts.ListId','cm_contacts.updatedAt','cm_contacts.priority','cm_contacts.UserId','insert','into','fromQuery','scheduledat','ContactId','ListId','priority','UserId','from','cm_contacts.ListId\x20=\x20','.CmListId','.id\x20=\x20','.CmListId\x20=\x20?','\x22always\x22','cm_contacts.phone\x20NOT\x20IN\x20(?)','toString','cm_contacts.phone','cm_contacts.createdAt'];(function(_0x22fe4d,_0x241cb1){var _0x18d707=function(_0x16935c){while(--_0x16935c){_0x22fe4d['push'](_0x22fe4d['shift']());}};_0x18d707(++_0x241cb1);}(_0x4f08,0x194));var _0x84f0=function(_0x3d305a,_0x493429){_0x3d305a=_0x3d305a-0x0;var _0x678d77=_0x4f08[_0x3d305a];return _0x678d77;};'use strict';var fs=require('fs');var path=require(_0x84f0('0x0'));var _=require(_0x84f0('0x1'));var Papa=require('papaparse');var util=require(_0x84f0('0x2'));var BPromise=require(_0x84f0('0x3'));var moment=require('moment');var squel=require(_0x84f0('0x4'));var Redis=require(_0x84f0('0x5'));var db=require(_0x84f0('0x6'))['db'];var config=require('../../../config/environment');var logger=require(_0x84f0('0x7'))('import');config[_0x84f0('0x8')]=_[_0x84f0('0x9')](config[_0x84f0('0x8')],{'host':'localhost','port':0x18eb});var socket=require(_0x84f0('0xa'))(new Redis(config[_0x84f0('0x8')]));var stats={'finish':![],'errors':[],'rows':0x0,'affectedRows':0x0};var results=[];var promisesAdditionalPhones=[];var promisesContact=[];var orderBy=0x0;var updatedRows=0x0;var stopped=![];var NOW=moment()[_0x84f0('0xb')](_0x84f0('0xc'));var tempTableName=_0x84f0('0xd')+moment()[_0x84f0('0xb')]('YYYYMMDDHHmmss');var contactItemTypes=[];var phoneDescriptions=[];var hasAdditionalPhones=![];function isEmail(_0x499eb0){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))*$/[_0x84f0('0xe')](_0x499eb0);}function selectNotIn(_0x13067f,_0x3acfaa,_0x38fc07,_0x122f96,_0x3d516b){return squel[_0x84f0('0xf')]()[_0x84f0('0x10')](_0x84f0('0x11'))['from'](_0x122f96)[_0x84f0('0x12')](_0x3acfaa,null,_0x3acfaa+'.id\x20=\x20'+_0x122f96+'.'+_0x38fc07)[_0x84f0('0x13')](_0x122f96+'.'+_0x38fc07+'\x20=\x20'+_0x13067f+'.'+_0x38fc07)[_0x84f0('0x13')](_0x3acfaa+_0x84f0('0x14')+_0x3d516b[_0x84f0('0x12')]()+')');}function handleAdditionalPhones(){return new Promise(function(_0xb077e1,_0x37ae8b){promisesAdditionalPhones=[];promisesContact=[];return db[_0x84f0('0x15')][_0x84f0('0x16')](_0x84f0('0x17')+tempTableName)[_0x84f0('0x18')](function(_0x58f208){if(_0x58f208!==null){var _0xb65839=[];for(var _0x13c851=0x0;_0x13c851<_0x58f208[_0x84f0('0x19')];_0x13c851++){var _0x5d0515=_0x58f208[_0x13c851];if(!_['isNil'](_0x5d0515[_0x84f0('0x11')])){if(!_[_0x84f0('0x1a')](_0x5d0515[_0x84f0('0x1b')]))_0xb65839[_0x84f0('0x1c')](insertAdditionalPhones(_0x5d0515));promisesContact[_0x84f0('0x1c')]({'contact':_0x5d0515});}}}Promise[_0x84f0('0x1d')](_0xb65839)['then'](function(){_0xb077e1({'val':0x1});});})['catch'](function(_0x4f0b28){logger['error'](_0x4f0b28[_0x84f0('0x1e')]);});});}function insertAdditionalPhones(_0x4896d9){return new Promise(function(_0x3353f9,_0x29f979){var _0x444a23=_0x4896d9[_0x84f0('0x1b')];if(_['isNil'](_0x444a23))_0x29f979({'val':0x0});else{var _0x2a7fe7=_0x444a23[_0x84f0('0x1f')](';');var _0x2611cd=[];orderBy=0x0;for(var _0x501665=0x0;_0x501665<_0x2a7fe7['length'];_0x501665++){_0x2611cd[_0x84f0('0x1c')](splitAdditionalPhone(_0x4896d9['id'],_0x2a7fe7[_0x501665]));}Promise[_0x84f0('0x1d')](_0x2611cd)[_0x84f0('0x20')](function(){_0x3353f9({'val':_0x2a7fe7[_0x84f0('0x19')]});});}});}function splitAdditionalPhone(_0x3a5ac2,_0x5e803b){return new Promise(function(_0x923f56,_0x57a067){var _0x489369=_0x5e803b[_0x84f0('0x1f')](':');var _0x329f40=_0x489369[0x0];var _0x45c1a4=_0x489369[0x1];if(_0x45c1a4!==''){var _0x3c9ac9=_0x45c1a4['split']('|');var _0x2d0f32=[];for(var _0xdf332d=0x0;_0xdf332d<_0x3c9ac9[_0x84f0('0x19')];_0xdf332d++){if(_0x3c9ac9[_0xdf332d]!==''){var _0xe67cd1=_[_0x84f0('0x21')](promisesAdditionalPhones,{'contactId':_0x3a5ac2,'phone':_0x3c9ac9[_0xdf332d]});if(_0xe67cd1[_0x84f0('0x19')]==0x0){orderBy++;promisesAdditionalPhones[_0x84f0('0x1c')]({'contactId':_0x3a5ac2,'contactTypeId':_0x329f40,'phone':_0x3c9ac9[_0xdf332d],'orderBy':orderBy});}}}_0x923f56({'ok':0x1});}else _0x923f56({'res':0x0});});}function createAdditionalPhone(_0x4a71b3,_0x1bfc7a,_0x4c1186,_0x27e240){var _0x53424e='';var _0x20aa37='';var _0x4edc8b=_0x4c1186['split']('§');_0x53424e=_0x4edc8b[0x0];if(_0x4edc8b[_0x84f0('0x19')]==0x2)_0x20aa37=_0x4edc8b[0x1];return new Promise(function(_0x4e6274,_0x30e559){return db[_0x84f0('0x22')][_0x84f0('0x23')]({'where':{'CmContactId':_0x4a71b3,'item':_0x53424e}})[_0x84f0('0x20')](function(_0x9e766c){if(_0x9e766c){return db[_0x84f0('0x22')][_0x84f0('0x24')]({'ItemTypeId':_0x1bfc7a,'description':_0x20aa37,'OrderBy':_0x27e240},{'where':{'CmContactId':_0x4a71b3,'item':_0x53424e}})[_0x84f0('0x20')](function(_0xca82a7){_0x4e6274({'res':_0x84f0('0x25')});});}else{return db['CmContactHasItem'][_0x84f0('0x26')]({'CmContactId':_0x4a71b3,'item':_0x53424e,'ItemTypeId':_0x1bfc7a,'description':_0x20aa37,'OrderBy':_0x27e240,'ItemClass':_0x84f0('0x27')})['then'](function(_0x3e0575){_0x4e6274({'res':'inserted'});});}});});}function updateContact(_0x8589f3){return new Promise(function(_0x654422,_0x319ac6){var _0x3101d3=_0x8589f3['id'];delete _0x8589f3['id'];return db[_0x84f0('0x28')][_0x84f0('0x24')](_0x8589f3,{'where':{'id':_0x3101d3}})[_0x84f0('0x20')](function(_0x58f972){updatedRows+=0x1;return db['CmHopper'][_0x84f0('0x24')]({'phone':_0x8589f3[_0x84f0('0x11')]},{'where':{'ContactId':_0x3101d3}})['then'](function(_0x27a95c){_0x654422({'ret':'OK'});});});});}function insertCmHopper(_0x219159,_0x414dc1,_0x2668c1,_0xf89afd,_0xf750a5){var _0x11a182=['cm_contacts.phone','cm_contacts.scheduledat',_0x84f0('0x29'),_0x84f0('0x2a'),_0x414dc1+'.'+_0xf89afd,'cm_contacts.createdAt',_0x84f0('0x2b'),_0x84f0('0x2c'),_0x84f0('0x2d'),'\x22'+_0xf750a5+'\x22'];return squel[_0x84f0('0x2e')]()[_0x84f0('0x2f')]('cm_hopper')[_0x84f0('0x30')]([_0x84f0('0x11'),_0x84f0('0x31'),_0x84f0('0x32'),_0x84f0('0x33'),_0xf89afd,'createdAt','updatedAt',_0x84f0('0x34'),_0x84f0('0x35'),'recallme'],squel[_0x84f0('0xf')]()['fields'](_0x11a182)[_0x84f0('0x36')](_0x414dc1)[_0x84f0('0x12')]('cm_contacts',null,_0x84f0('0x37')+_0x414dc1+_0x84f0('0x38'))[_0x84f0('0x12')](_0x2668c1,null,_0x2668c1+_0x84f0('0x39')+_0x414dc1+'.'+_0xf89afd)['where'](_0x414dc1+_0x84f0('0x3a'),_0x219159)[_0x84f0('0x13')]('cm_contacts.createdAt\x20=\x20?',NOW)[_0x84f0('0x13')]('cm_contacts.phone\x20NOT\x20IN\x20(?)',selectNotIn(_0x414dc1,_0x2668c1,_0xf89afd,'cm_hopper',[_0x84f0('0x3b'),'\x22onlyIfOpen\x22']))[_0x84f0('0x13')](_0x84f0('0x3c'),selectNotIn(_0x414dc1,_0x2668c1,_0xf89afd,'cm_hopper',['\x22always\x22'])))[_0x84f0('0x3d')]();}function insertCmHopperBlack(_0xcd0cf0,_0x4fc8bc,_0x39a7c6,_0x20b87a){var _0x365715=[_0x84f0('0x3e'),_0x84f0('0x29'),_0x84f0('0x2a'),_0x4fc8bc+'.'+_0x20b87a,_0x84f0('0x3f'),'cm_contacts.updatedAt'];return squel[_0x84f0('0x2e')]()[_0x84f0('0x2f')](_0x84f0('0x40'))[_0x84f0('0x30')]([_0x84f0('0x11'),_0x84f0('0x32'),_0x84f0('0x33'),_0x20b87a,'createdAt',_0x84f0('0x41')],squel['select']()[_0x84f0('0x42')](_0x365715)[_0x84f0('0x36')](_0x4fc8bc)[_0x84f0('0x12')](_0x84f0('0x43'),null,_0x84f0('0x37')+_0x4fc8bc+_0x84f0('0x38'))[_0x84f0('0x12')](_0x39a7c6,null,_0x39a7c6+_0x84f0('0x39')+_0x4fc8bc+'.'+_0x20b87a)[_0x84f0('0x13')](_0x4fc8bc+_0x84f0('0x3a'),_0xcd0cf0)[_0x84f0('0x13')](_0x84f0('0x44'),NOW)['where']('cm_contacts.phone\x20NOT\x20IN\x20(?)',squel[_0x84f0('0xf')]()[_0x84f0('0x10')]('phone')['from'](_0x84f0('0x40'))['where'](_0x84f0('0x45'),_0xcd0cf0)[_0x84f0('0x13')](_0x20b87a+'\x20=\x20?',_0x4fc8bc+'.'+_0x20b87a)))[_0x84f0('0x3d')]();}function insertCmHopperAdditionalPhones(_0x7488ed){var _0x1614cb=['cm_hopper.id',_0x84f0('0x46'),_0x84f0('0x47'),_0x84f0('0x48'),_0x84f0('0x49')];return squel[_0x84f0('0x2e')]()[_0x84f0('0x2f')](_0x84f0('0x4a'))['fromQuery']([_0x84f0('0x4b'),'phone',_0x84f0('0x4c'),'createdAt',_0x84f0('0x41')],squel[_0x84f0('0xf')]()['fields'](_0x1614cb)['from'](_0x84f0('0x4d'))[_0x84f0('0x12')](_0x84f0('0x43'),null,'cm_contacts.id\x20=\x20cm_hopper.ContactId')[_0x84f0('0x12')](_0x84f0('0x4e'),null,_0x84f0('0x4f'))[_0x84f0('0x13')](_0x84f0('0x50'),_0x7488ed)[_0x84f0('0x13')](_0x84f0('0x44'),NOW))[_0x84f0('0x3d')]();}function insertCmContact(_0x532ccd,_0x3cb532,_0x55fbf4,_0x2fd92f){var _0x1559cd=_[_0x84f0('0x51')](_[_0x84f0('0x52')](_0x2fd92f),[_0x84f0('0x33'),_0x84f0('0x53'),_0x84f0('0x54'),_0x84f0('0x41')]);return squel['insert']()[_0x84f0('0x2f')]('cm_contacts')['fromQuery'](_0x1559cd,squel[_0x84f0('0xf')]()[_0x84f0('0x42')](_0x1559cd)['from'](_0x3cb532)[_0x84f0('0x13')]('('+_0x55fbf4[_0x84f0('0x12')](',')+')\x20NOT\x20IN\x20?',squel['select']()[_0x84f0('0x42')](_0x55fbf4)[_0x84f0('0x36')]('cm_contacts')['where'](_0x84f0('0x45'),_0x532ccd))[_0x84f0('0x13')](_0x84f0('0x55'),squel['select']()[_0x84f0('0x10')](_0x84f0('0x56'),_0x84f0('0x57'))[_0x84f0('0x36')](_0x3cb532)[_0x84f0('0x58')](_0x55fbf4[_0x84f0('0x12')](','))))[_0x84f0('0x3d')]();}function handleStop(){logger['info'](_0x84f0('0x59'));stopped=!![];}function handleUncaughtException(_0x214be6){logger[_0x84f0('0x5a')](_0x214be6[_0x84f0('0x1e')]);process[_0x84f0('0x5b')](0x1);}function handleError(_0x2d6256,_0xba6f40){stats[_0x84f0('0x5c')]['push']({'name':_0xba6f40[_0x84f0('0x5d')],'message':_0xba6f40['message'],'row':_0x2d6256});}function handleQuery(_0x37877d){logger[_0x84f0('0x5e')](_0x37877d);return db['sequelize']['query'](_0x37877d)['spread'](function(_0xdf2c1e){results['push'](_0xdf2c1e);})[_0x84f0('0x5f')](function(_0x2c4d3c){logger[_0x84f0('0x5a')](_0x2c4d3c[_0x84f0('0x1e')]);});}function main(_0x56de0d,_0x292523,_0x2cda13,_0x52096d){logger[_0x84f0('0x5e')](_0x84f0('0x60'),_0x56de0d,JSON['stringify'](_0x292523));process[_0x84f0('0x61')]('start');var _0x533fc5=_0x292523['binding'];var _0x157e0b=_[_0x84f0('0x62')](_0x533fc5);var _0x554256=_0x292523[_0x84f0('0x63')];var _0x4a2573=path['join'](config[_0x84f0('0x64')],_0x84f0('0x65'),_0x554256+'.csv');logger[_0x84f0('0x5e')](_0x84f0('0x66'),_0x292523);db[_0x84f0('0x67')]['findAll']({'raw':!![],'attributes':['id','name']})['then'](function(_0xe31a51){for(var _0x531cca=0x0;_0x531cca<_0xe31a51[_0x84f0('0x19')];_0x531cca++){if(_0xe31a51[_0x531cca][_0x84f0('0x68')]in _0x533fc5){contactItemTypes[_0x84f0('0x1c')](_0xe31a51[_0x531cca]);delete _0x157e0b[_0xe31a51[_0x531cca][_0x84f0('0x68')]];hasAdditionalPhones=!![];}for(var _0x2a5a40 in _0x533fc5){if(_0xe31a51[_0x531cca][_0x84f0('0x68')]+_0x84f0('0x69')===_0x2a5a40){phoneDescriptions[_0x84f0('0x1c')]({'itemTypeId':_0xe31a51[_0x531cca]['id'],'description':_0x2a5a40});delete _0x157e0b[_0x2a5a40];}}}if(hasAdditionalPhones)_0x157e0b[_0x84f0('0x1b')]='';var _0x5c9297=_[_0x84f0('0x52')](_0x157e0b)[_0x84f0('0x12')]();logger['info'](_0x84f0('0x6a'),_0x5c9297);fs[_0x84f0('0x6b')](_0x4a2573,_0x5c9297+'\x0a');Papa['parse'](fs[_0x84f0('0x6c')](_0x56de0d),{'header':!![],'skipEmptyLines':!![],'step':function(_0x5111db,_0xddb5f){try{for(var _0x33f2ce=0x0,_0x224d92=[];_0x33f2ce<_0x5111db['data'][_0x84f0('0x19')];_0x33f2ce++){stats[_0x84f0('0x6d')]+=0x1;if(_0x5111db[_0x84f0('0x5c')][_0x33f2ce]){handleError(_0x5111db[_0x84f0('0x6e')][_0x33f2ce],_0x5111db[_0x84f0('0x5c')][_0x33f2ce]);}else{var _0x43319b=[];var _0x3accc6=[];var _0x325032={};for(var _0x4183f2 in _0x533fc5){let _0x458f11=contactItemTypes[_0x84f0('0x6f')](_0x33c53f=>_0x33c53f[_0x84f0('0x68')]===_0x4183f2);let _0xc4cb89=contactItemTypes[_0x84f0('0x6f')](_0x48a039=>_0x48a039[_0x84f0('0x68')]+'_description'===_0x4183f2);if(_[_0x84f0('0x1a')](_0x458f11)&&_['isNil'](_0xc4cb89)){if(_0x533fc5[_0x84f0('0x70')](_0x4183f2)){if(_0x5111db['data'][_0x33f2ce][_0x533fc5[_0x4183f2]]){var _0x52ee3f=_[_0x84f0('0x71')](_0x5111db[_0x84f0('0x6e')][_0x33f2ce][_0x533fc5[_0x4183f2]][_0x84f0('0x72')](/"/g,'\x27'));switch(_0x4183f2){case _0x84f0('0x31'):var _0x8f0001=moment(_0x52ee3f,_0x84f0('0xc'),!![]);if(_0x8f0001[_0x84f0('0x73')]()){_0x224d92['push']('\x22'+_0x52ee3f+'\x22');}else{_0x43319b[_0x84f0('0x1c')]('scheduledat\x20wrong\x20format\x20(YYYY-MM-DD\x20HH:mm:ss)');}break;case _0x84f0('0x34'):var _0x22d89=parseInt(_0x52ee3f);_0x52ee3f=_[_0x84f0('0x74')](_0x22d89)||_0x22d89<0x0||_0x22d89>0x4?_0x52096d?0x3:0x2:_0x22d89;_0x224d92['push']('\x22'+_0x52ee3f+'\x22');break;case'UserId':var _0x43fc9c=parseInt(_0x52ee3f);if(_[_0x84f0('0x75')](_0x43fc9c)&&_['includes'](_0x2cda13,_0x43fc9c)){_0x224d92[_0x84f0('0x1c')]('\x22'+_0x43fc9c+'\x22');}else{_0x43319b[_0x84f0('0x1c')](_0x84f0('0x76'));}break;case _0x84f0('0x77'):if(isEmail(_0x52ee3f)){_0x224d92[_0x84f0('0x1c')]('\x22'+_0x52ee3f+'\x22');}else{_0x43319b[_0x84f0('0x1c')](_0x84f0('0x78'));}break;case _0x84f0('0x79'):var _0x58ebee=moment(_0x52ee3f,_0x84f0('0x7a'),!![]);if(_0x58ebee[_0x84f0('0x73')]()){_0x224d92[_0x84f0('0x1c')]('\x22'+_0x52ee3f+'\x22');}else{_0x43319b[_0x84f0('0x1c')](_0x84f0('0x7b'));}break;default:_0x224d92[_0x84f0('0x1c')]('\x22'+_0x52ee3f+'\x22');}}else{switch(_0x4183f2){case _0x84f0('0x7c'):case'phone':_0x43319b[_0x84f0('0x1c')](_0x4183f2+_0x84f0('0x7d'));break;default:_0x224d92[_0x84f0('0x1c')]('\x22\x22');}}}}else{var _0x3b2061='';if(!_[_0x84f0('0x1a')](_0x458f11)){if(!_0x325032[_0x84f0('0x70')](_0x458f11['id'])){for(var _0x22155f=0x0;_0x22155f<_0x533fc5[_0x4183f2][_0x84f0('0x19')];_0x22155f++){var _0x52ee3f=_['trim'](_0x5111db['data'][_0x33f2ce][_0x533fc5[_0x4183f2][_0x22155f]][_0x84f0('0x72')](/"/g,'\x27'));var _0x16748e=phoneDescriptions[_0x84f0('0x6f')](_0x5c5654=>_0x5c5654['itemTypeId']===_0x458f11['id']);if(!_[_0x84f0('0x1a')](_0x16748e)){var _0x3c0459=_[_0x84f0('0x71')](_0x5111db[_0x84f0('0x6e')][_0x33f2ce][_0x533fc5[_0x16748e[_0x84f0('0x7e')]][0x0]][_0x84f0('0x72')](/"/g,'\x27'));if(!_[_0x84f0('0x1a')](_0x3c0459))_0x52ee3f=_0x52ee3f+'§'+_0x3c0459;}if(_0x3b2061=='')_0x3b2061=_0x52ee3f;else _0x3b2061+='|'+_0x52ee3f;}_0x3accc6['push'](_0x458f11['id']+':'+_0x3b2061);_0x325032[_0x458f11['id']]=0x1;}}}}if(hasAdditionalPhones){_0x224d92[_0x84f0('0x1c')]('\x22'+_0x3accc6[_0x84f0('0x12')](';')+'\x22');}if(_0x43319b[_0x84f0('0x19')]){handleError(_0x5111db['data'][_0x33f2ce],{'code':_0x84f0('0x7f'),'message':_0x43319b[_0x84f0('0x12')]()});}else{fs[_0x84f0('0x80')](_0x4a2573,_0x224d92[_0x84f0('0x12')]()+'\x0a');}_0x224d92=[];}if(!(stats[_0x84f0('0x6d')]%0xc8)){socket[_0x84f0('0x81')](_0x84f0('0x82')+_0x554256,stats);stats['errors']=[];}}if(stopped){logger[_0x84f0('0x5e')](_0x84f0('0x83'));_0xddb5f[_0x84f0('0x84')]();}}catch(_0x51712a){handleError(_0x5111db['data'][_0x33f2ce],{'code':'SystemError','message':_0x51712a[_0x84f0('0x1e')]});logger[_0x84f0('0x5a')](_0x84f0('0x85'),_0x51712a[_0x84f0('0x1e')]);}},'complete':function(){try{var _0x4cb6f8=[];var _0x2c2b95=tempTableName;_0x4cb6f8[_0x84f0('0x1c')](_0x84f0('0x86')+_0x2c2b95+'\x20LIKE\x20cm_contacts;');logger['info'](_0x84f0('0x87'),contactItemTypes[_0x84f0('0x19')]);var _0x404694=util[_0x84f0('0xb')](_0x84f0('0x88'),_0x4a2573,_0x2c2b95,_0x5c9297,_0x292523[_0x84f0('0x33')],_0x292523['CompanyId']||null,NOW,NOW);if(_[_0x84f0('0x1a')](_0x533fc5[_0x84f0('0x31')])){_0x404694+=_0x84f0('0x89');}_0x4cb6f8[_0x84f0('0x1c')](_0x404694);BPromise['each'](_0x4cb6f8,handleQuery)[_0x84f0('0x20')](function(_0x3e3506){BPromise['all']([handleAdditionalPhones()])[_0x84f0('0x20')](function(){_0x4cb6f8=[];for(var _0x3beadb=0x0;_0x3beadb<promisesContact[_0x84f0('0x19')];_0x3beadb++){_0x4cb6f8[_0x84f0('0x1c')](updateContact(promisesContact[_0x3beadb][_0x84f0('0x8a')]));}BPromise['all'](_0x4cb6f8)[_0x84f0('0x20')](function(){_0x4cb6f8=[];for(var _0x331b1=0x0;_0x331b1<promisesAdditionalPhones[_0x84f0('0x19')];_0x331b1++){_0x4cb6f8['push'](createAdditionalPhone(promisesAdditionalPhones[_0x331b1]['contactId'],promisesAdditionalPhones[_0x331b1][_0x84f0('0x8b')],promisesAdditionalPhones[_0x331b1]['phone'],promisesAdditionalPhones[_0x331b1][_0x84f0('0x8c')]));}BPromise[_0x84f0('0x1d')](_0x4cb6f8)[_0x84f0('0x20')](function(){_0x4cb6f8=[];_0x4cb6f8[_0x84f0('0x1c')](insertCmHopperAdditionalPhones(_0x292523['ListId']));_0x4cb6f8[_0x84f0('0x1c')](_0x84f0('0x8d')+_0x2c2b95+';');BPromise[_0x84f0('0x8e')](_0x4cb6f8,handleQuery)[_0x84f0('0x20')](function(_0x147895){stats['finish']=!![];stats['affectedRows']=updatedRows;socket[_0x84f0('0x81')](_0x84f0('0x82')+_0x554256,stats);fs['unlink'](_0x56de0d);fs[_0x84f0('0x8f')](_0x4a2573);process['exit'](0x0);})[_0x84f0('0x5f')](function(_0xe16d0c){logger['error'](_0xe16d0c[_0x84f0('0x1e')]);process[_0x84f0('0x5b')](0x1);});});});});})[_0x84f0('0x5f')](function(_0x55c943){logger[_0x84f0('0x5a')](_0x55c943[_0x84f0('0x1e')]);process[_0x84f0('0x5b')](0x1);});}catch(_0x3edb4b){logger[_0x84f0('0x5a')](_0x84f0('0x90'),_0x3edb4b['message']);process[_0x84f0('0x5b')](0x1);}},'error':function(_0x4a7b6e,_0x105141,_0x4f05a6,_0x1787bf){throw new Error(_0x1787bf);}});});}function validate(){if(process[_0x84f0('0x91')]&&process['argv'][_0x84f0('0x19')]<0x4){throw new Error('arguments\x20<filename>\x20<parameters>\x20<agents>');}var _0x38516a=path[_0x84f0('0x12')](config[_0x84f0('0x64')],_0x84f0('0x65'),process[_0x84f0('0x91')][0x2]);if(!fs[_0x84f0('0x92')](_0x38516a)){throw new Error('file\x20doesn\x27t\x20exists');}var _0x16a27b={};try{_0x16a27b=JSON[_0x84f0('0x93')](process['argv'][0x3]);if(!_0x16a27b[_0x84f0('0x94')]){throw new Error(_0x84f0('0x95'));}var _0x36e3ac=0x0;if(_0x16a27b[_0x84f0('0x94')][_0x84f0('0x35')]){_0x36e3ac=0x1;}if(!_0x16a27b[_0x84f0('0x33')]){throw new Error(_0x84f0('0x96'));}}catch(_0x35ee0b){throw new Error(_0x84f0('0x97'));}var _0x3bf04a=[];try{_0x3bf04a=_[_0x84f0('0x98')](JSON['parse'](process['argv'][0x4]),'id');}catch(_0x18ffd7){logger[_0x84f0('0x5e')](_0x84f0('0x99'));}main(_0x38516a,_0x16a27b,_0x3bf04a,_0x36e3ac);}validate();process['on'](_0x84f0('0x9a'),handleStop);process['on'](_0x84f0('0x9b'),handleUncaughtException);
\ No newline at end of file
index a2586cd..b53a4fb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x759d=['calleridname','destexten','Queue','UniqueId','uniqueid','Date','Agent\x20Name','Agent\x20Number','***\x20Time\x20Info\x20***','Agent\x20Ring','agentcalledAt','Agent\x20Connect','agentconnectAt','Agent\x20Complete','agentcompleteAt','Hold\x20Time','holdtime','Talk\x20Time','Called\x20Number','Member\x20Name','membername','starttime','Answer\x20Time','answertime','Complete\x20Time','endtime','duration','Billable\x20Time','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','inbound','variable','queue','push','outbound','Outbound\x20Call','destcalleridnum','voice','***\x20Call\x20Info\x20***','keyValue','Caller\x20Number','Caller\x20Name'];(function(_0x224813,_0x57342f){var _0x12ac8a=function(_0x156239){while(--_0x156239){_0x224813['push'](_0x224813['shift']());}};_0x12ac8a(++_0x57342f);}(_0x759d,0xa4));var _0xd759=function(_0x3d72d1,_0x4bb52c){_0x3d72d1=_0x3d72d1-0x0;var _0x5ef0be=_0x759d[_0x3d72d1];return _0x5ef0be;};'use strict';exports[_0xd759('0x0')]=function(_0x3074b9,_0x34c85e){var _0x4f04d1=[{'type':_0xd759('0x1'),'content':_0xd759('0x2'),'variableName':null}];switch(_0x3074b9['toLowerCase']()){case'voice':switch(_0x34c85e[_0xd759('0x3')]()){case _0xd759('0x4'):_0x4f04d1['push']({'type':_0xd759('0x5'),'content':'','variableName':_0xd759('0x6')});_0x4f04d1[_0xd759('0x7')]({'type':_0xd759('0x5'),'content':'','variableName':'calleridnum'});break;case _0xd759('0x8'):_0x4f04d1[_0xd759('0x7')]({'type':_0xd759('0x1'),'content':_0xd759('0x9'),'variableName':null});_0x4f04d1['push']({'type':_0xd759('0x5'),'content':'','variableName':_0xd759('0xa')});break;}}return _0x4f04d1;};exports['getDescriptions']=function(_0x32c000,_0x36b673){var _0x76fa54=[];switch(_0x32c000[_0xd759('0x3')]()){case _0xd759('0xb'):switch(_0x36b673[_0xd759('0x3')]()){case _0xd759('0x4'):_0x76fa54=[{'type':_0xd759('0x1'),'content':_0xd759('0xc'),'key':null,'keyType':null,'variableName':null},{'type':_0xd759('0xd'),'content':'','key':_0xd759('0xe'),'keyType':_0xd759('0x5'),'variableName':'calleridnum'},{'type':_0xd759('0xd'),'content':'','key':_0xd759('0xf'),'keyType':_0xd759('0x5'),'variableName':_0xd759('0x10')},{'type':_0xd759('0xd'),'content':'','key':'Call\x20To','keyType':_0xd759('0x5'),'variableName':_0xd759('0x11')},{'type':'keyValue','content':'','key':_0xd759('0x12'),'keyType':_0xd759('0x5'),'variableName':_0xd759('0x6')},{'type':_0xd759('0xd'),'content':'','key':_0xd759('0x13'),'keyType':_0xd759('0x5'),'variableName':_0xd759('0x14')},{'type':_0xd759('0xd'),'content':'','key':_0xd759('0x15'),'keyType':_0xd759('0x5'),'variableName':'agentcalledAt'},{'type':'string','content':'***\x20Agent\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0xd759('0xd'),'content':'','key':_0xd759('0x16'),'keyType':_0xd759('0x5'),'variableName':'destcalleridname'},{'type':_0xd759('0xd'),'content':'','key':_0xd759('0x17'),'keyType':'variable','variableName':_0xd759('0xa')},{'type':'string','content':_0xd759('0x18'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0xd759('0x19'),'keyType':_0xd759('0x5'),'variableName':_0xd759('0x1a')},{'type':'keyValue','content':'','key':_0xd759('0x1b'),'keyType':'variable','variableName':_0xd759('0x1c')},{'type':_0xd759('0xd'),'content':'','key':_0xd759('0x1d'),'keyType':_0xd759('0x5'),'variableName':_0xd759('0x1e')},{'type':_0xd759('0xd'),'content':'','key':_0xd759('0x1f'),'keyType':'variable','variableName':_0xd759('0x20')},{'type':_0xd759('0xd'),'content':'','key':_0xd759('0x21'),'keyType':_0xd759('0x5'),'variableName':'talktime'}];break;case'outbound':_0x76fa54=[{'type':_0xd759('0x1'),'content':_0xd759('0xc'),'variableName':null},{'type':_0xd759('0xd'),'content':'','key':_0xd759('0x22'),'keyType':'variable','keyContent':'','variableName':_0xd759('0xa')},{'type':_0xd759('0xd'),'content':'','key':_0xd759('0x23'),'keyType':_0xd759('0x5'),'keyContent':'','variableName':_0xd759('0x24')},{'type':_0xd759('0xd'),'content':'','key':_0xd759('0x13'),'keyType':_0xd759('0x5'),'keyContent':'','variableName':'uniqueid'},{'type':'keyValue','content':'','key':'Date','keyType':_0xd759('0x5'),'keyContent':'','variableName':_0xd759('0x25')},{'type':'string','content':_0xd759('0x18')},{'type':_0xd759('0xd'),'content':'','key':_0xd759('0x26'),'keyType':_0xd759('0x5'),'keyContent':'','variableName':_0xd759('0x27')},{'type':_0xd759('0xd'),'content':'','key':_0xd759('0x28'),'keyType':_0xd759('0x5'),'keyContent':'','variableName':_0xd759('0x29')},{'type':_0xd759('0xd'),'content':'','key':'Duration','keyType':'variable','keyContent':'','variableName':_0xd759('0x2a')},{'type':'keyValue','content':'','key':_0xd759('0x2b'),'keyType':'variable','keyContent':'','variableName':_0xd759('0x2c')}];break;}}return _0x76fa54;};
\ No newline at end of file
+var _0xa7cf=['destcalleridname','Agent\x20Number','agentconnectAt','Agent\x20Complete','agentcompleteAt','talktime','Called\x20Number','Member\x20Name','membername','starttime','***\x20Time\x20Info\x20***','Answer\x20Time','answertime','endtime','Duration','duration','Billable\x20Time','billableseconds','getSubjects','string','[xCALLY\x20Ticket]','toLowerCase','voice','inbound','push','variable','queue','outbound','destcalleridnum','***\x20Call\x20Info\x20***','Caller\x20Number','calleridnum','keyValue','calleridname','Call\x20To','destexten','UniqueId','uniqueid','Date','***\x20Agent\x20Info\x20***','Agent\x20Name'];(function(_0x2147d1,_0x16cc9a){var _0x15216b=function(_0x222c29){while(--_0x222c29){_0x2147d1['push'](_0x2147d1['shift']());}};_0x15216b(++_0x16cc9a);}(_0xa7cf,0xb6));var _0xfa7c=function(_0xc7348b,_0x145880){_0xc7348b=_0xc7348b-0x0;var _0x307cec=_0xa7cf[_0xc7348b];return _0x307cec;};'use strict';exports[_0xfa7c('0x0')]=function(_0xfab3e4,_0x3c1d4d){var _0x5b561e=[{'type':_0xfa7c('0x1'),'content':_0xfa7c('0x2'),'variableName':null}];switch(_0xfab3e4[_0xfa7c('0x3')]()){case _0xfa7c('0x4'):switch(_0x3c1d4d[_0xfa7c('0x3')]()){case _0xfa7c('0x5'):_0x5b561e[_0xfa7c('0x6')]({'type':_0xfa7c('0x7'),'content':'','variableName':_0xfa7c('0x8')});_0x5b561e['push']({'type':_0xfa7c('0x7'),'content':'','variableName':'calleridnum'});break;case _0xfa7c('0x9'):_0x5b561e[_0xfa7c('0x6')]({'type':_0xfa7c('0x1'),'content':'Outbound\x20Call','variableName':null});_0x5b561e[_0xfa7c('0x6')]({'type':_0xfa7c('0x7'),'content':'','variableName':_0xfa7c('0xa')});break;}}return _0x5b561e;};exports['getDescriptions']=function(_0x10a59d,_0x52d4ad){var _0x448ec3=[];switch(_0x10a59d[_0xfa7c('0x3')]()){case _0xfa7c('0x4'):switch(_0x52d4ad[_0xfa7c('0x3')]()){case'inbound':_0x448ec3=[{'type':_0xfa7c('0x1'),'content':_0xfa7c('0xb'),'key':null,'keyType':null,'variableName':null},{'type':'keyValue','content':'','key':_0xfa7c('0xc'),'keyType':_0xfa7c('0x7'),'variableName':_0xfa7c('0xd')},{'type':_0xfa7c('0xe'),'content':'','key':'Caller\x20Name','keyType':_0xfa7c('0x7'),'variableName':_0xfa7c('0xf')},{'type':'keyValue','content':'','key':_0xfa7c('0x10'),'keyType':_0xfa7c('0x7'),'variableName':_0xfa7c('0x11')},{'type':_0xfa7c('0xe'),'content':'','key':'Queue','keyType':_0xfa7c('0x7'),'variableName':_0xfa7c('0x8')},{'type':_0xfa7c('0xe'),'content':'','key':_0xfa7c('0x12'),'keyType':_0xfa7c('0x7'),'variableName':_0xfa7c('0x13')},{'type':_0xfa7c('0xe'),'content':'','key':_0xfa7c('0x14'),'keyType':_0xfa7c('0x7'),'variableName':'agentcalledAt'},{'type':'string','content':_0xfa7c('0x15'),'key':null,'keyType':null,'variableName':null},{'type':_0xfa7c('0xe'),'content':'','key':_0xfa7c('0x16'),'keyType':_0xfa7c('0x7'),'variableName':_0xfa7c('0x17')},{'type':'keyValue','content':'','key':_0xfa7c('0x18'),'keyType':_0xfa7c('0x7'),'variableName':'destcalleridnum'},{'type':_0xfa7c('0x1'),'content':'***\x20Time\x20Info\x20***','key':null,'keyType':null,'variableName':null},{'type':_0xfa7c('0xe'),'content':'','key':'Agent\x20Ring','keyType':_0xfa7c('0x7'),'variableName':'agentcalledAt'},{'type':_0xfa7c('0xe'),'content':'','key':'Agent\x20Connect','keyType':_0xfa7c('0x7'),'variableName':_0xfa7c('0x19')},{'type':_0xfa7c('0xe'),'content':'','key':_0xfa7c('0x1a'),'keyType':_0xfa7c('0x7'),'variableName':_0xfa7c('0x1b')},{'type':_0xfa7c('0xe'),'content':'','key':'Hold\x20Time','keyType':_0xfa7c('0x7'),'variableName':'holdtime'},{'type':_0xfa7c('0xe'),'content':'','key':'Talk\x20Time','keyType':'variable','variableName':_0xfa7c('0x1c')}];break;case _0xfa7c('0x9'):_0x448ec3=[{'type':'string','content':_0xfa7c('0xb'),'variableName':null},{'type':_0xfa7c('0xe'),'content':'','key':_0xfa7c('0x1d'),'keyType':_0xfa7c('0x7'),'keyContent':'','variableName':_0xfa7c('0xa')},{'type':_0xfa7c('0xe'),'content':'','key':_0xfa7c('0x1e'),'keyType':_0xfa7c('0x7'),'keyContent':'','variableName':_0xfa7c('0x1f')},{'type':_0xfa7c('0xe'),'content':'','key':_0xfa7c('0x12'),'keyType':'variable','keyContent':'','variableName':'uniqueid'},{'type':_0xfa7c('0xe'),'content':'','key':_0xfa7c('0x14'),'keyType':_0xfa7c('0x7'),'keyContent':'','variableName':_0xfa7c('0x20')},{'type':_0xfa7c('0x1'),'content':_0xfa7c('0x21')},{'type':_0xfa7c('0xe'),'content':'','key':_0xfa7c('0x22'),'keyType':_0xfa7c('0x7'),'keyContent':'','variableName':_0xfa7c('0x23')},{'type':_0xfa7c('0xe'),'content':'','key':'Complete\x20Time','keyType':_0xfa7c('0x7'),'keyContent':'','variableName':_0xfa7c('0x24')},{'type':'keyValue','content':'','key':_0xfa7c('0x25'),'keyType':'variable','keyContent':'','variableName':_0xfa7c('0x26')},{'type':'keyValue','content':'','key':_0xfa7c('0x27'),'keyType':'variable','keyContent':'','variableName':_0xfa7c('0x28')}];break;}}return _0x448ec3;};
\ No newline at end of file
index 2275e7a..60b550a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x22b0=['clone','body','omit','html','phone','fax','mobile','lodash','openchannel-interactions','../../config/logger','mail-interactions','fax-interactions','chat-interactions','whatsapp-interactions','upperFirst','InteractionId','toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','toUpperCase','name','role','stringify','Interaction','findOne','then','update','info','catch','tracked','user','query'];(function(_0x3c41ef,_0x246467){var _0x6f02eb=function(_0x335b42){while(--_0x335b42){_0x3c41ef['push'](_0x3c41ef['shift']());}};_0x6f02eb(++_0x246467);}(_0x22b0,0xe0));var _0x022b=function(_0x49f03f,_0x280f41){_0x49f03f=_0x49f03f-0x0;var _0x2794c4=_0x22b0[_0x49f03f];return _0x2794c4;};'use strict';var _=require(_0x022b('0x0'));var db=require('../../mysqldb')['db'];var loggers={'openchannel':require('../../config/logger')(_0x022b('0x1')),'mail':require(_0x022b('0x2'))(_0x022b('0x3')),'fax':require(_0x022b('0x2'))(_0x022b('0x4')),'sms':require(_0x022b('0x2'))('sms-interactions'),'chat':require(_0x022b('0x2'))(_0x022b('0x5')),'whatsapp':require(_0x022b('0x2'))(_0x022b('0x6'))};function getInteractionId(_0x4e29ae,_0x40fa4c,_0x9fa617){if(_0x4e29ae&&_0x4e29ae[_[_0x022b('0x7')](_0x9fa617)+_0x022b('0x8')]){return _0x4e29ae[_[_0x022b('0x7')](_0x9fa617)+_0x022b('0x8')];}else if(_0x4e29ae&&_0x4e29ae['id']){return _0x4e29ae['id'];}else if(_0x40fa4c&&_0x40fa4c['id']){return _0x40fa4c['id'];}else{return'unknown';}}function log(_0x59731e,_0x4c7a88,_0x3e02d7,_0x1371b7,_0xdba9a5,_0x51c20b){loggers[_0xdba9a5[_0x022b('0x9')]()][_0x59731e](_0x022b('0xa'),_0x51c20b[_0x022b('0xb')](),_0x4c7a88?_0x4c7a88['id']:null,_0x4c7a88?_0x4c7a88[_0x022b('0xc')]:null,_0x4c7a88?_0x4c7a88[_0x022b('0xd')]:null,getInteractionId(_0x3e02d7,_0x1371b7,_0xdba9a5),_0x3e02d7?JSON[_0x022b('0xe')](_0x3e02d7):'null');}function updateUser(_0x34f334,_0x26052b,_0x420978,_0x452315,_0x27e71d){db[_[_0x022b('0x7')](_0x452315)+_0x022b('0xf')][_0x022b('0x10')]({'where':{'id':getInteractionId(_0x26052b,_0x420978,_0x452315)}})[_0x022b('0x11')](function(_0x436f78){if(_0x436f78){return _0x436f78[_0x022b('0x12')]({'UserId':_0x34f334?_0x34f334['id']:null});}})['then'](function(_0xa25dae){if(_0xa25dae){log(_0x022b('0x13'),_0x34f334,_0x26052b,_0x420978,_0x452315,_0x27e71d);}})[_0x022b('0x14')](function(){log('error',_0x34f334,_0x26052b,_0x420978,_0x452315,_0x27e71d);});}exports[_0x022b('0x15')]=function(_0x3f0b70,_0x4b7030){return function(_0x570017,_0x3e008f,_0x2ec8a3){var _0x8b52a1=_0x570017[_0x022b('0x16')];var _0x417ee4={};var _0xc42853=_0x570017[_0x022b('0x17')];if(_0x417ee4){_0x417ee4=_[_0x022b('0x18')](_0x570017[_0x022b('0x19')]);_0x417ee4=_[_0x022b('0x1a')](_0x417ee4,[_0x022b('0x19'),_0x022b('0x1b'),_0x022b('0x1c'),_0x022b('0x1d'),_0x022b('0x1e')]);}updateUser(_0x8b52a1,_0x417ee4,_0xc42853,_0x3f0b70,_0x4b7030);_0x2ec8a3(null);};};
\ No newline at end of file
+var _0xb221=['toLowerCase','[%s]\x20id=%s\x20name=%s\x20role=%s\x20interaction=%s\x20body=%s','name','role','stringify','null','findOne','update','then','catch','error','tracked','user','query','clone','body','omit','html','phone','fax','mobile','lodash','../../mysqldb','../../config/logger','mail-interactions','fax-interactions','sms-interactions','whatsapp-interactions','upperFirst','InteractionId','unknown'];(function(_0x467836,_0x3032da){var _0x4b4deb=function(_0x28918c){while(--_0x28918c){_0x467836['push'](_0x467836['shift']());}};_0x4b4deb(++_0x3032da);}(_0xb221,0x72));var _0x1b22=function(_0x49588a,_0x5c8e94){_0x49588a=_0x49588a-0x0;var _0xea8733=_0xb221[_0x49588a];return _0xea8733;};'use strict';var _=require(_0x1b22('0x0'));var db=require(_0x1b22('0x1'))['db'];var loggers={'openchannel':require(_0x1b22('0x2'))('openchannel-interactions'),'mail':require('../../config/logger')(_0x1b22('0x3')),'fax':require(_0x1b22('0x2'))(_0x1b22('0x4')),'sms':require(_0x1b22('0x2'))(_0x1b22('0x5')),'chat':require(_0x1b22('0x2'))('chat-interactions'),'whatsapp':require(_0x1b22('0x2'))(_0x1b22('0x6'))};function getInteractionId(_0x30c909,_0x4a551a,_0x5d034a){if(_0x30c909&&_0x30c909[_[_0x1b22('0x7')](_0x5d034a)+_0x1b22('0x8')]){return _0x30c909[_[_0x1b22('0x7')](_0x5d034a)+_0x1b22('0x8')];}else if(_0x30c909&&_0x30c909['id']){return _0x30c909['id'];}else if(_0x4a551a&&_0x4a551a['id']){return _0x4a551a['id'];}else{return _0x1b22('0x9');}}function log(_0x3c8eea,_0x2535a5,_0x408f68,_0xa7c680,_0x2be4ef,_0x22dc17){loggers[_0x2be4ef[_0x1b22('0xa')]()][_0x3c8eea](_0x1b22('0xb'),_0x22dc17['toUpperCase'](),_0x2535a5?_0x2535a5['id']:null,_0x2535a5?_0x2535a5[_0x1b22('0xc')]:null,_0x2535a5?_0x2535a5[_0x1b22('0xd')]:null,getInteractionId(_0x408f68,_0xa7c680,_0x2be4ef),_0x408f68?JSON[_0x1b22('0xe')](_0x408f68):_0x1b22('0xf'));}function updateUser(_0x139f0d,_0x1daf6e,_0x1cbd6d,_0x630dae,_0x5887f8){db[_[_0x1b22('0x7')](_0x630dae)+'Interaction'][_0x1b22('0x10')]({'where':{'id':getInteractionId(_0x1daf6e,_0x1cbd6d,_0x630dae)}})['then'](function(_0xe08fe9){if(_0xe08fe9){return _0xe08fe9[_0x1b22('0x11')]({'UserId':_0x139f0d?_0x139f0d['id']:null});}})[_0x1b22('0x12')](function(_0x358cba){if(_0x358cba){log('info',_0x139f0d,_0x1daf6e,_0x1cbd6d,_0x630dae,_0x5887f8);}})[_0x1b22('0x13')](function(){log(_0x1b22('0x14'),_0x139f0d,_0x1daf6e,_0x1cbd6d,_0x630dae,_0x5887f8);});}exports[_0x1b22('0x15')]=function(_0x4a5179,_0x3157e5){return function(_0x25299c,_0xeef9c7,_0x1a1ab5){var _0x56d263=_0x25299c[_0x1b22('0x16')];var _0x37e032={};var _0x190b2c=_0x25299c[_0x1b22('0x17')];if(_0x37e032){_0x37e032=_[_0x1b22('0x18')](_0x25299c[_0x1b22('0x19')]);_0x37e032=_[_0x1b22('0x1a')](_0x37e032,[_0x1b22('0x19'),_0x1b22('0x1b'),_0x1b22('0x1c'),_0x1b22('0x1d'),_0x1b22('0x1e')]);}updateUser(_0x56d263,_0x37e032,_0x190b2c,_0x4a5179,_0x3157e5);_0x1a1ab5(null);};};
\ No newline at end of file
index 8ba374b..c6cf19b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x05f3=['final','parse','hasOwnProperty','use','License','then','status','json','format','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','User','user','isUserLimit','util','composable-middleware','../../mysqldb','../../config/environment','license','data1','split','createDecipher','base64','utf8'];(function(_0x512c25,_0x3370e3){var _0x17fe8e=function(_0x487b6b){while(--_0x487b6b){_0x512c25['push'](_0x512c25['shift']());}};_0x17fe8e(++_0x3370e3);}(_0x05f3,0xf0));var _0x305f=function(_0x5317b5,_0x4dfd6e){_0x5317b5=_0x5317b5-0x0;var _0x3b7ce2=_0x05f3[_0x5317b5];return _0x3b7ce2;};'use strict';var crypto=require('crypto');var util=require(_0x305f('0x0'));var compose=require(_0x305f('0x1'));var db=require(_0x305f('0x2'))['db'];var config=require(_0x305f('0x3'));function getValueFromLicense(_0x4943ed,_0x5f004d){if(_0x4943ed&&_0x5f004d){if(_0x5f004d['data1']&&_0x5f004d[_0x305f('0x4')]){var _0x1310cc=_0x5f004d[_0x305f('0x5')];var _0x5d7e41=_0x5f004d['license'];var _0x4776ea=_0x1310cc[_0x305f('0x6')]('-')[0x4];var _0x169959=_0x1310cc[_0x305f('0x6')]('-')[0x0];var _0xb1ed32=crypto[_0x305f('0x7')]('aes-256-ctr',util['format']('%s:%s:%s',_0x4776ea,_0x1310cc,_0x169959));var _0xa75618=_0xb1ed32['update'](_0x5d7e41,_0x305f('0x8'),_0x305f('0x9'));_0xa75618+=_0xb1ed32[_0x305f('0xa')](_0x305f('0x9'));var _0x2e5e2c=JSON[_0x305f('0xb')](_0xa75618);return _0x2e5e2c[_0x305f('0xc')](_0x4943ed)?_0x2e5e2c[_0x4943ed]:null;}}return null;}function isLimit(_0x40ed3c,_0x34544e,_0x51c28b,_0x3fbb9c){var _0x4fa2e0=_0x34544e;return compose()[_0x305f('0xd')](function(_0x5bb6db,_0x264dbb,_0x53b283){return db[_0x305f('0xe')]['findOne']({'where':{'id':0x1},'raw':!![]})[_0x305f('0xf')](function(_0x3a0065){var _0x40cdbd=getValueFromLicense(_0x40ed3c,_0x3a0065);return _0x40cdbd?_0x40cdbd:_0x4fa2e0;})['then'](function(_0x112d0d){_0x4fa2e0=_0x112d0d;return _0x51c28b['count'](_0x3fbb9c);})[_0x305f('0xf')](function(_0x5d38b5){if(_0x5d38b5>=_0x4fa2e0){return _0x264dbb[_0x305f('0x10')](0x193)[_0x305f('0x11')]({'message':util[_0x305f('0x12')](_0x305f('0x13'),_0x40ed3c)});}_0x53b283();})[_0x305f('0x14')](function(_0xd226c8){_0x53b283(_0xd226c8);});});}function isUserLimit(){return isLimit(_0x305f('0x15'),0x1,db[_0x305f('0x16')],{'where':{'$or':[{'role':'admin'},{'role':_0x305f('0x17')}]}});}exports[_0x305f('0x18')]=isUserLimit;
\ No newline at end of file
+var _0x23c4=['base64','final','utf8','parse','use','findOne','then','count','status','json','format','Maximum\x20%s\x20limit\x20have\x20been\x20reached','catch','users','User','admin','user','crypto','composable-middleware','data1','license','split','createDecipher','aes-256-ctr','%s:%s:%s','update'];(function(_0x249a3e,_0x36a93a){var _0x4f771c=function(_0x5be32c){while(--_0x5be32c){_0x249a3e['push'](_0x249a3e['shift']());}};_0x4f771c(++_0x36a93a);}(_0x23c4,0x163));var _0x423c=function(_0x8b247d,_0x9401a9){_0x8b247d=_0x8b247d-0x0;var _0x4e10a3=_0x23c4[_0x8b247d];return _0x4e10a3;};'use strict';var crypto=require(_0x423c('0x0'));var util=require('util');var compose=require(_0x423c('0x1'));var db=require('../../mysqldb')['db'];var config=require('../../config/environment');function getValueFromLicense(_0x441399,_0x529192){if(_0x441399&&_0x529192){if(_0x529192[_0x423c('0x2')]&&_0x529192[_0x423c('0x3')]){var _0x22c636=_0x529192[_0x423c('0x2')];var _0xe93090=_0x529192[_0x423c('0x3')];var _0x22fe6a=_0x22c636[_0x423c('0x4')]('-')[0x4];var _0x605578=_0x22c636['split']('-')[0x0];var _0x2e0ecc=crypto[_0x423c('0x5')](_0x423c('0x6'),util['format'](_0x423c('0x7'),_0x22fe6a,_0x22c636,_0x605578));var _0x5e2da7=_0x2e0ecc[_0x423c('0x8')](_0xe93090,_0x423c('0x9'),'utf8');_0x5e2da7+=_0x2e0ecc[_0x423c('0xa')](_0x423c('0xb'));var _0x65b789=JSON[_0x423c('0xc')](_0x5e2da7);return _0x65b789['hasOwnProperty'](_0x441399)?_0x65b789[_0x441399]:null;}}return null;}function isLimit(_0x275115,_0x115969,_0x422e48,_0x458a2d){var _0xd4807f=_0x115969;return compose()[_0x423c('0xd')](function(_0x158cd1,_0x29679a,_0x420f88){return db['License'][_0x423c('0xe')]({'where':{'id':0x1},'raw':!![]})[_0x423c('0xf')](function(_0x2e8098){var _0x3ebe80=getValueFromLicense(_0x275115,_0x2e8098);return _0x3ebe80?_0x3ebe80:_0xd4807f;})[_0x423c('0xf')](function(_0x2640e7){_0xd4807f=_0x2640e7;return _0x422e48[_0x423c('0x10')](_0x458a2d);})[_0x423c('0xf')](function(_0x289ba9){if(_0x289ba9>=_0xd4807f){return _0x29679a[_0x423c('0x11')](0x193)[_0x423c('0x12')]({'message':util[_0x423c('0x13')](_0x423c('0x14'),_0x275115)});}_0x420f88();})[_0x423c('0x15')](function(_0x1c571e){_0x420f88(_0x1c571e);});});}function isUserLimit(){return isLimit(_0x423c('0x16'),0x1,db[_0x423c('0x17')],{'where':{'$or':[{'role':_0x423c('0x18')},{'role':_0x423c('0x19')}]}});}exports['isUserLimit']=isUserLimit;
\ No newline at end of file
index 5520939..455bdaf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x673c=['add','hours','minutes','seconds','moment','parseSearch','sqlOperator','startsWith','[$or]','and','replace','split','slice','forEach','match','indexOf','map','conditions','push','buildExpression','operator','value','includes','$lte','days','format','YYYY-MM-DD','castTo','text','CAST(','\x20AS\x20','$ne','$notIn','field','\x20IS\x20NULL)','$in','IN\x20?','NOT\x20IN\x20?','$eq','=\x20?','$startsWith','LIKE\x20?','$gt','>\x20?','<=\x20?','$gte','BETWEEN\x20?\x20AND\x20?','start','$substring','$between','shift','pop','DATE','utcOffset'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x673c,0x70));var _0xc673=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x673c[_0x3dd15e];return _0x231fd0;};'use strict';var _=require('lodash');var moment=require(_0xc673('0x0'));exports[_0xc673('0x1')]=function(_0x513381){var _0x3b0360={'conditions':[]};_0x3b0360[_0xc673('0x2')]=_[_0xc673('0x3')](_0x513381,_0xc673('0x4'))?'or':_0xc673('0x5');var _0x5e155f=_0x513381[_0xc673('0x6')]('[$and]','')[_0xc673('0x6')](_0xc673('0x4'),'')[_0xc673('0x7')]('||');for(var _0x12ffde=0x0;_0x12ffde<_0x5e155f['length'];_0x12ffde++){var _0x24e034=_0x5e155f[_0x12ffde][_0xc673('0x7')](':=');var _0x4f4af1=_0x24e034[0x0];var _0x1ea6da=_0x24e034[_0xc673('0x8')](0x1);_0x1ea6da[_0xc673('0x9')](function(_0x4197f3){var _0x1034fe=_0x4197f3[_0xc673('0x7')]('[')['shift']();var _0x5ebcc7=_0x4197f3[_0xc673('0xa')](/\[(.*?)\]/g);_0x5ebcc7[_0xc673('0x9')](function(_0xb3fe45){var _0x50e199=_0xb3fe45[_0xc673('0x7')]('[')['filter'](function(_0x53908b){return _0x53908b[_0xc673('0xb')](']')>-0x1;})[_0xc673('0xc')](function(_0x34a6b4){return _0x34a6b4[_0xc673('0x7')](']')[0x0];})[0x0];_0x3b0360[_0xc673('0xd')][_0xc673('0xe')]({'field':_0x4f4af1,'operator':_0x1034fe,'value':_0x50e199});});});}return _0x3b0360;};exports[_0xc673('0xf')]=function(_0x50e359,_0x55d353,_0xf4d918){var _0x8f325c={};if(_0x55d353==='DATE'){if(_0xf4d918[_0xc673('0x10')]==='$eq'){_0xf4d918[_0xc673('0x10')]='$between';_0xf4d918['value']+=','+_0xf4d918[_0xc673('0x11')];}else if(_[_0xc673('0x12')](['$gt',_0xc673('0x13')],_0xf4d918['operator'])){_0xf4d918['value']=moment(_0xf4d918[_0xc673('0x11')])['add'](0x1,_0xc673('0x14'))[_0xc673('0x15')](_0xc673('0x16'));}}if(_0xf4d918[_0xc673('0x17')]){_0x55d353=_0xf4d918[_0xc673('0x17')];_0x8f325c[_0xc673('0x18')]=_0xc673('0x19')+_0x50e359+'.'+_0xf4d918['field']+_0xc673('0x1a')+_0xf4d918[_0xc673('0x17')]+')\x20'+parseOperator(_0xf4d918[_0xc673('0x10')]);}else{_0x8f325c[_0xc673('0x18')]=_0x50e359+'.'+_0xf4d918['field']+'\x20'+parseOperator(_0xf4d918['operator']);}if(_[_0xc673('0x12')]([_0xc673('0x1b'),_0xc673('0x1c')],_0xf4d918['operator']))_0x8f325c[_0xc673('0x18')]='('+_0x8f325c[_0xc673('0x18')]+'\x20OR\x20'+_0x50e359+'.'+_0xf4d918[_0xc673('0x1d')]+_0xc673('0x1e');_0x8f325c[_0xc673('0x11')]=parseValue(_0x55d353,_0xf4d918[_0xc673('0x10')],_0xf4d918[_0xc673('0x11')]);return _0x8f325c;};function parseOperator(_0x118f07){var _0x956d49;switch(_0x118f07){case _0xc673('0x1f'):_0x956d49=_0xc673('0x20');break;case _0xc673('0x1c'):_0x956d49=_0xc673('0x21');break;case _0xc673('0x22'):_0x956d49=_0xc673('0x23');break;case'$ne':_0x956d49='<>\x20?';break;case'$substring':case _0xc673('0x24'):case'$endsWith':_0x956d49=_0xc673('0x25');break;case'$lt':_0x956d49='<\x20?';break;case _0xc673('0x26'):_0x956d49=_0xc673('0x27');break;case _0xc673('0x13'):_0x956d49=_0xc673('0x28');break;case _0xc673('0x29'):_0x956d49='>=\x20?';break;case'$between':_0x956d49=_0xc673('0x2a');break;}return _0x956d49;}function parseValue(_0x393fd4,_0x41c7b2,_0x4d4bb0){var _0x2c8d18={'start':undefined,'end':undefined};switch(_0x41c7b2){case _0xc673('0x1f'):case'$notIn':_0x2c8d18[_0xc673('0x2b')]=_0x4d4bb0[_0xc673('0x7')](',');break;case _0xc673('0x2c'):_0x2c8d18[_0xc673('0x2b')]='%'+_0x4d4bb0+'%';break;case _0xc673('0x24'):_0x2c8d18['start']=_0x4d4bb0+'%';break;case'$endsWith':_0x2c8d18[_0xc673('0x2b')]='%'+_0x4d4bb0;break;case _0xc673('0x2d'):var _0x1c438a=_0x4d4bb0[_0xc673('0x7')](',');var _0x4d4bb0=_0x1c438a[_0xc673('0x2e')]();var _0x3ac512=_0x1c438a[_0xc673('0x2f')]();if(_0x393fd4===_0xc673('0x30')){_0x4d4bb0=moment(_0x4d4bb0)[_0xc673('0x31')](0x0,!![])[_0xc673('0x15')]();_0x3ac512=moment(_0x3ac512)[_0xc673('0x31')](0x0,!![])[_0xc673('0x32')](0x17,_0xc673('0x33'))['add'](0x3b,_0xc673('0x34'))[_0xc673('0x32')](0x3b,_0xc673('0x35'))[_0xc673('0x15')]();}_0x2c8d18={'start':_0x4d4bb0,'end':_0x3ac512};break;default:_0x2c8d18[_0xc673('0x2b')]=_0x4d4bb0;break;}return _0x2c8d18;}
\ No newline at end of file
+var _0x14d6=['filter','indexOf','conditions','operator','value','$lte','add','days','format','castTo','\x20AS\x20','text','field','includes','$ne','$in','IN\x20?','$notIn','=\x20?','<>\x20?','$substring','$startsWith','$endsWith','LIKE\x20?','<\x20?','$gt','>\x20?','$gte','start','$between','pop','DATE','utcOffset','minutes','lodash','moment','parseSearch','startsWith','[$or]','and','replace','split','length','forEach','shift'];(function(_0x4c8ef7,_0x24c4c0){var _0x5b785f=function(_0x32e0e3){while(--_0x32e0e3){_0x4c8ef7['push'](_0x4c8ef7['shift']());}};_0x5b785f(++_0x24c4c0);}(_0x14d6,0x7c));var _0x614d=function(_0x4c23cc,_0x46193e){_0x4c23cc=_0x4c23cc-0x0;var _0x1b1dc2=_0x14d6[_0x4c23cc];return _0x1b1dc2;};'use strict';var _=require(_0x614d('0x0'));var moment=require(_0x614d('0x1'));exports[_0x614d('0x2')]=function(_0x5969a1){var _0x5722e1={'conditions':[]};_0x5722e1['sqlOperator']=_[_0x614d('0x3')](_0x5969a1,_0x614d('0x4'))?'or':_0x614d('0x5');var _0x2e02d8=_0x5969a1[_0x614d('0x6')]('[$and]','')[_0x614d('0x6')](_0x614d('0x4'),'')[_0x614d('0x7')]('||');for(var _0x2b71c9=0x0;_0x2b71c9<_0x2e02d8[_0x614d('0x8')];_0x2b71c9++){var _0x5d906e=_0x2e02d8[_0x2b71c9][_0x614d('0x7')](':=');var _0x1c6077=_0x5d906e[0x0];var _0x157079=_0x5d906e['slice'](0x1);_0x157079[_0x614d('0x9')](function(_0x1fcdbf){var _0xfdaa77=_0x1fcdbf['split']('[')[_0x614d('0xa')]();var _0xbac184=_0x1fcdbf['match'](/\[(.*?)\]/g);_0xbac184[_0x614d('0x9')](function(_0x1bda1f){var _0xf97eaf=_0x1bda1f[_0x614d('0x7')]('[')[_0x614d('0xb')](function(_0x387ead){return _0x387ead[_0x614d('0xc')](']')>-0x1;})['map'](function(_0x2368d2){return _0x2368d2[_0x614d('0x7')](']')[0x0];})[0x0];_0x5722e1[_0x614d('0xd')]['push']({'field':_0x1c6077,'operator':_0xfdaa77,'value':_0xf97eaf});});});}return _0x5722e1;};exports['buildExpression']=function(_0x214ede,_0x302a8c,_0x32aa28){var _0x476d47={};if(_0x302a8c==='DATE'){if(_0x32aa28['operator']==='$eq'){_0x32aa28[_0x614d('0xe')]='$between';_0x32aa28[_0x614d('0xf')]+=','+_0x32aa28[_0x614d('0xf')];}else if(_['includes'](['$gt',_0x614d('0x10')],_0x32aa28[_0x614d('0xe')])){_0x32aa28[_0x614d('0xf')]=moment(_0x32aa28['value'])[_0x614d('0x11')](0x1,_0x614d('0x12'))[_0x614d('0x13')]('YYYY-MM-DD');}}if(_0x32aa28['castTo']){_0x302a8c=_0x32aa28[_0x614d('0x14')];_0x476d47['text']='CAST('+_0x214ede+'.'+_0x32aa28['field']+_0x614d('0x15')+_0x32aa28[_0x614d('0x14')]+')\x20'+parseOperator(_0x32aa28[_0x614d('0xe')]);}else{_0x476d47[_0x614d('0x16')]=_0x214ede+'.'+_0x32aa28[_0x614d('0x17')]+'\x20'+parseOperator(_0x32aa28[_0x614d('0xe')]);}if(_[_0x614d('0x18')]([_0x614d('0x19'),'$notIn'],_0x32aa28[_0x614d('0xe')]))_0x476d47[_0x614d('0x16')]='('+_0x476d47[_0x614d('0x16')]+'\x20OR\x20'+_0x214ede+'.'+_0x32aa28['field']+'\x20IS\x20NULL)';_0x476d47[_0x614d('0xf')]=parseValue(_0x302a8c,_0x32aa28[_0x614d('0xe')],_0x32aa28['value']);return _0x476d47;};function parseOperator(_0x332a50){var _0x321752;switch(_0x332a50){case _0x614d('0x1a'):_0x321752=_0x614d('0x1b');break;case _0x614d('0x1c'):_0x321752='NOT\x20IN\x20?';break;case'$eq':_0x321752=_0x614d('0x1d');break;case'$ne':_0x321752=_0x614d('0x1e');break;case _0x614d('0x1f'):case _0x614d('0x20'):case _0x614d('0x21'):_0x321752=_0x614d('0x22');break;case'$lt':_0x321752=_0x614d('0x23');break;case _0x614d('0x24'):_0x321752=_0x614d('0x25');break;case _0x614d('0x10'):_0x321752='<=\x20?';break;case _0x614d('0x26'):_0x321752='>=\x20?';break;case'$between':_0x321752='BETWEEN\x20?\x20AND\x20?';break;}return _0x321752;}function parseValue(_0x20260e,_0x4ce764,_0x2ed6af){var _0x4d9a39={'start':undefined,'end':undefined};switch(_0x4ce764){case'$in':case _0x614d('0x1c'):_0x4d9a39['start']=_0x2ed6af['split'](',');break;case _0x614d('0x1f'):_0x4d9a39[_0x614d('0x27')]='%'+_0x2ed6af+'%';break;case'$startsWith':_0x4d9a39[_0x614d('0x27')]=_0x2ed6af+'%';break;case'$endsWith':_0x4d9a39['start']='%'+_0x2ed6af;break;case _0x614d('0x28'):var _0x3a081f=_0x2ed6af['split'](',');var _0x2ed6af=_0x3a081f[_0x614d('0xa')]();var _0x39b424=_0x3a081f[_0x614d('0x29')]();if(_0x20260e===_0x614d('0x2a')){_0x2ed6af=moment(_0x2ed6af)[_0x614d('0x2b')](0x0,!![])['format']();_0x39b424=moment(_0x39b424)[_0x614d('0x2b')](0x0,!![])['add'](0x17,'hours')[_0x614d('0x11')](0x3b,_0x614d('0x2c'))['add'](0x3b,'seconds')[_0x614d('0x13')]();}_0x4d9a39={'start':_0x2ed6af,'end':_0x39b424};break;default:_0x4d9a39[_0x614d('0x27')]=_0x2ed6af;break;}return _0x4d9a39;}
\ No newline at end of file
index 928f0b0..4c2876b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xeff8=['^[+]?[0-9]*$','isEmail','getFullTextValue','forEach','replace','push','join','query','$id','filters','intersection','model','attributes','nolimit','order','pick','filter','columns','value','where','merge','VIRTUAL','lower','options','lodash','sequelize','keys','includes','parse','fields','split','isEmpty','find','type','$gte','format','utc','$lte','YYYY-MM-DD','subtract','name','uniqueid','isArray','limit','offset','sort','map','indexOf','cast','col','unsigned','DESC','priority','ASC','omit','length','isObject','isString','unset','hasOwnProperty','match'];(function(_0x1d0499,_0x23e22f){var _0x153fb3=function(_0x40c19c){while(--_0x40c19c){_0x1d0499['push'](_0x1d0499['shift']());}};_0x153fb3(++_0x23e22f);}(_0xeff8,0x186));var _0x8eff=function(_0x122096,_0x60c295){_0x122096=_0x122096-0x0;var _0x3d1966=_0xeff8[_0x122096];return _0x3d1966;};'use strict';var _=require(_0x8eff('0x0'));var sequelize=require(_0x8eff('0x1'));var moment=require('moment');var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x367eaf){var _0x354ff4=['ne'];try{var _0x1e55a0=JSON['parse'](_0x367eaf);var _0x2d7c9c=Object[_0x8eff('0x2')](_0x1e55a0)[0x0];return _0x354ff4[_0x8eff('0x3')](_0x2d7c9c);}catch(_0x2911b1){return![];}}function getOperatorValue(_0x4ac51c){var _0x469641=JSON[_0x8eff('0x4')](_0x4ac51c);var _0x3409bc=Object[_0x8eff('0x2')](_0x469641)[0x0];var _0x491f01=_0x469641[_0x3409bc];return{['$'+_0x3409bc]:_0x491f01};}exports[_0x8eff('0x5')]=function(_0x19557f){var _0x17f22b=null;if(_0x19557f){_0x17f22b=_0x19557f[_0x8eff('0x6')](',');}return _0x17f22b;};exports['filters']=function(_0x56f120,_0x359d62){var _0x430b45={};if(!_[_0x8eff('0x7')](_0x56f120)){_['forOwn'](_0x56f120,function(_0x2a87d2,_0x369b5d){try{if(_0x359d62){var _0x5172a5=_[_0x8eff('0x8')](_0x359d62,{'name':_0x369b5d})||{};if(hasSequelizeOperator(_0x2a87d2)){_0x430b45[_0x369b5d]=getOperatorValue(_0x2a87d2);}else if(_0x5172a5[_0x8eff('0x9')]==='DATE'&&_['isPlainObject'](_0x2a87d2)){var _0x45f280=JSON[_0x8eff('0x4')](_0x2a87d2);var _0xfa12bb={'$gte':moment(moment(_0x45f280[_0x8eff('0xa')])[_0x8eff('0xb')]('YYYY-MM-DD'))[_0x8eff('0xc')]()[_0x8eff('0xb')](),'$lte':moment(moment(_0x45f280[_0x8eff('0xd')])[_0x8eff('0xb')](_0x8eff('0xe')))[_0x8eff('0xc')]()[_0x8eff('0xf')](0x1,'s')[_0x8eff('0xb')]()};_0x430b45[_0x369b5d]=_0xfa12bb;}else if(_0x5172a5[_0x8eff('0x10')]===_0x8eff('0x11')){_0x430b45[_0x369b5d]=_0x2a87d2;}else{_0x430b45[_0x369b5d]=_[_0x8eff('0x12')](_0x2a87d2)?_0x2a87d2:JSON['parse'](_0x2a87d2);}}else{_0x430b45[_0x369b5d]=_[_0x8eff('0x12')](_0x2a87d2)?_0x2a87d2:JSON[_0x8eff('0x4')](_0x2a87d2);}}catch(_0x3cd1dc){_0x430b45[_0x369b5d]=_0x2a87d2[_0x8eff('0x6')](',');}});}return _0x430b45;};exports[_0x8eff('0x13')]=function(_0x3c800b){_0x3c800b=parseInt(_0x3c800b,0xa);if(!_0x3c800b||_0x3c800b<0x0){_0x3c800b=LIMIT_VALUE;}return _0x3c800b;};exports[_0x8eff('0x14')]=function(_0x399d96){_0x399d96=parseInt(_0x399d96,0xa);if(!_0x399d96||_0x399d96<0x0){_0x399d96=0x0;}return _0x399d96;};exports[_0x8eff('0x15')]=function(_0x198ee9){var _0x453c7a,_0x1b65f9=null;if(_0x198ee9){_0x453c7a=_0x198ee9[_0x8eff('0x6')](',');_0x1b65f9=_[_0x8eff('0x16')](_0x453c7a,function(_0xdbb7b5){if(_0xdbb7b5[_0x8eff('0x17')]('-')===0x0){return[_0xdbb7b5==='priority'?sequelize[_0x8eff('0x18')](sequelize[_0x8eff('0x19')]('priority'),_0x8eff('0x1a')):_0xdbb7b5['substr'](0x1),_0x8eff('0x1b')];}else{return[_0xdbb7b5===_0x8eff('0x1c')?sequelize[_0x8eff('0x18')](sequelize[_0x8eff('0x19')](_0x8eff('0x1c')),'unsigned'):_0xdbb7b5,_0x8eff('0x1d')];}});}return _0x1b65f9;};exports[_0x8eff('0x1e')]=function(_0x50784c,_0x15b66f){if(_[_0x8eff('0x7')](_0x50784c)){return _0x50784c;}if(_[_0x8eff('0x12')](_0x50784c)){for(var _0x3b698b=0x0;_0x3b698b<_0x50784c[_0x8eff('0x1f')];_0x3b698b+=0x1){_0x50784c[_0x3b698b]=this[_0x8eff('0x1e')](_0x50784c[_0x3b698b],_0x15b66f);}return _0x50784c;}if(!_[_0x8eff('0x20')](_0x50784c)){return _0x50784c;}if(_[_0x8eff('0x21')](_0x15b66f)){_0x15b66f=[_0x15b66f];}if(!_['isArray'](_0x15b66f)){return _0x50784c;}for(var _0x3e1607=0x0;_0x3e1607<_0x15b66f[_0x8eff('0x1f')];_0x3e1607+=0x1){_[_0x8eff('0x22')](_0x50784c,_0x15b66f[_0x3e1607]);}for(var _0xb88ce9 in _0x50784c){if(_0x50784c[_0x8eff('0x23')](_0xb88ce9)){_0x50784c[_0xb88ce9]=this[_0x8eff('0x1e')](_0x50784c[_0xb88ce9],_0x15b66f);}}return _0x50784c;};exports['isNumeric']=function(_0x4ed3b8){return _0x4ed3b8[_0x8eff('0x24')](RegExp(_0x8eff('0x25')))?!![]:![];};exports[_0x8eff('0x26')]=function(_0x5ce071){return _0x5ce071[_0x8eff('0x24')](/^\S+@\S+$/)?!![]:![];};exports[_0x8eff('0x27')]=function(_0x229e0d){var _0x1da0fa=[];_0x229e0d[_0x8eff('0x6')](/[ ,]+/)[_0x8eff('0x28')](function(_0x141bd7){_0x141bd7=_0x141bd7[_0x8eff('0x29')](/([^:]")"+/g,'$1');_0x141bd7='+'+_0x141bd7+'*';var _0x36a613=/[ `!@#$%^&*()_\-?~]/;if(_0x141bd7[_0x8eff('0x24')](_0x36a613))_0x141bd7='\x22'+_0x141bd7+'\x22';_0x1da0fa[_0x8eff('0x2a')](_0x141bd7);});return _0x1da0fa[_0x8eff('0x2b')]('\x20');};exports['getOptions']=function(_0x2ad4b7,_0x165f8e,_0x115fa4){var _0x7da1fb={},_0x50f211={};if(_0x165f8e[_0x8eff('0x2c')][_0x8eff('0x2d')]){_0x165f8e['query']['id']=_0x165f8e['query'][_0x8eff('0x2d')];delete _0x165f8e[_0x8eff('0x2c')]['$id'];}_0x7da1fb['model']=_['map'](_0x2ad4b7,_0x8eff('0x10'));_0x7da1fb['query']=_[_0x8eff('0x2')](_0x165f8e['query']);_0x7da1fb[_0x8eff('0x2e')]=_[_0x8eff('0x2f')](_0x7da1fb[_0x8eff('0x30')],_0x7da1fb[_0x8eff('0x2c')]);_0x50f211[_0x8eff('0x31')]=_[_0x8eff('0x2f')](_0x7da1fb['model'],this[_0x8eff('0x5')](_0x165f8e['query'][_0x8eff('0x5')]));_0x50f211['attributes']=_0x50f211[_0x8eff('0x31')][_0x8eff('0x1f')]?_0x50f211[_0x8eff('0x31')]:_0x7da1fb[_0x8eff('0x30')];if(!_0x165f8e['query'][_0x8eff('0x23')](_0x8eff('0x32'))){_0x50f211[_0x8eff('0x13')]=this['limit'](_0x165f8e[_0x8eff('0x2c')][_0x8eff('0x13')]);_0x50f211[_0x8eff('0x14')]=this[_0x8eff('0x14')](_0x165f8e[_0x8eff('0x2c')][_0x8eff('0x14')]);}_0x50f211[_0x8eff('0x33')]=this[_0x8eff('0x15')](_0x165f8e[_0x8eff('0x2c')]['sort']);_0x50f211['where']=this[_0x8eff('0x2e')](_[_0x8eff('0x34')](_0x165f8e[_0x8eff('0x2c')],_0x7da1fb[_0x8eff('0x2e')]),_0x2ad4b7);if(_0x165f8e[_0x8eff('0x2c')][_0x8eff('0x35')]){var _0x18b132=_0x2ad4b7;var _0x5acc86=_0x165f8e[_0x8eff('0x2c')][_0x8eff('0x35')];if(typeof _0x5acc86==='object'){_0x18b132=_[_0x8eff('0x35')](_0x2ad4b7,function(_0x1ad6b3){return _[_0x8eff('0x3')](_0x5acc86[_0x8eff('0x36')],_0x1ad6b3[_0x8eff('0x10')]);});_0x5acc86=_0x5acc86[_0x8eff('0x37')];}_0x50f211[_0x8eff('0x38')]=_[_0x8eff('0x39')](_0x50f211[_0x8eff('0x38')],{'$or':_['map'](_0x18b132,function(_0x37f376){if(_0x37f376[_0x8eff('0x9')]!==_0x8eff('0x3a')){if(_0x115fa4){return sequelize[_0x8eff('0x38')](sequelize['fn'](_0x8eff('0x3b'),sequelize['col'](_0x37f376[_0x8eff('0x10')])),{'$like':sequelize['fn']('lower','%'+_0x165f8e[_0x8eff('0x2c')][_0x8eff('0x35')]+'%')});}else{var _0x1e9d99={};_0x1e9d99[_0x37f376[_0x8eff('0x10')]]={'$like':'%'+_0x165f8e['query'][_0x8eff('0x35')]+'%'};return _0x1e9d99;}}})});}_0x50f211=_[_0x8eff('0x39')]({},_0x50f211,_0x165f8e[_0x8eff('0x3c')]);return _0x50f211;};
\ No newline at end of file
+var _0x038b=['isEmpty','length','isObject','isString','unset','isNumeric','match','^[+]?[0-9]*$','getFullTextValue','forEach','replace','push','join','query','$id','intersection','model','attributes','fields','nolimit','limit','order','where','pick','filters','filter','includes','columns','value','merge','lower','options','sequelize','moment','keys','split','forOwn','find','type','DATE','isPlainObject','parse','$gte','format','YYYY-MM-DD','utc','$lte','subtract','name','uniqueid','isArray','offset','sort','map','priority','cast','col','substr','DESC','unsigned','omit'];(function(_0xc010d4,_0x37768a){var _0x1c9a4b=function(_0x74e63a){while(--_0x74e63a){_0xc010d4['push'](_0xc010d4['shift']());}};_0x1c9a4b(++_0x37768a);}(_0x038b,0x114));var _0xb038=function(_0x1a995c,_0xc3fafc){_0x1a995c=_0x1a995c-0x0;var _0x5a41de=_0x038b[_0x1a995c];return _0x5a41de;};'use strict';var _=require('lodash');var sequelize=require(_0xb038('0x0'));var moment=require(_0xb038('0x1'));var LIMIT_VALUE=0xfa;function hasSequelizeOperator(_0x449fef){var _0x5623c3=['ne'];try{var _0x3d7dfe=JSON['parse'](_0x449fef);var _0x23574d=Object[_0xb038('0x2')](_0x3d7dfe)[0x0];return _0x5623c3['includes'](_0x23574d);}catch(_0x3737b5){return![];}}function getOperatorValue(_0x11da3a){var _0x4fe092=JSON['parse'](_0x11da3a);var _0x2e3e64=Object[_0xb038('0x2')](_0x4fe092)[0x0];var _0x1534a9=_0x4fe092[_0x2e3e64];return{['$'+_0x2e3e64]:_0x1534a9};}exports['fields']=function(_0x48a4d7){var _0x462e8f=null;if(_0x48a4d7){_0x462e8f=_0x48a4d7[_0xb038('0x3')](',');}return _0x462e8f;};exports['filters']=function(_0x53bcc0,_0xe3d046){var _0x2d1ae5={};if(!_['isEmpty'](_0x53bcc0)){_[_0xb038('0x4')](_0x53bcc0,function(_0x162ae7,_0x3fc2c1){try{if(_0xe3d046){var _0x3368c1=_[_0xb038('0x5')](_0xe3d046,{'name':_0x3fc2c1})||{};if(hasSequelizeOperator(_0x162ae7)){_0x2d1ae5[_0x3fc2c1]=getOperatorValue(_0x162ae7);}else if(_0x3368c1[_0xb038('0x6')]===_0xb038('0x7')&&_[_0xb038('0x8')](_0x162ae7)){var _0x16e4a3=JSON[_0xb038('0x9')](_0x162ae7);var _0x60f332={'$gte':moment(moment(_0x16e4a3[_0xb038('0xa')])[_0xb038('0xb')](_0xb038('0xc')))[_0xb038('0xd')]()[_0xb038('0xb')](),'$lte':moment(moment(_0x16e4a3[_0xb038('0xe')])['format'](_0xb038('0xc')))[_0xb038('0xd')]()[_0xb038('0xf')](0x1,'s')[_0xb038('0xb')]()};_0x2d1ae5[_0x3fc2c1]=_0x60f332;}else if(_0x3368c1[_0xb038('0x10')]===_0xb038('0x11')){_0x2d1ae5[_0x3fc2c1]=_0x162ae7;}else{_0x2d1ae5[_0x3fc2c1]=_['isArray'](_0x162ae7)?_0x162ae7:JSON[_0xb038('0x9')](_0x162ae7);}}else{_0x2d1ae5[_0x3fc2c1]=_[_0xb038('0x12')](_0x162ae7)?_0x162ae7:JSON[_0xb038('0x9')](_0x162ae7);}}catch(_0x3b095a){_0x2d1ae5[_0x3fc2c1]=_0x162ae7['split'](',');}});}return _0x2d1ae5;};exports['limit']=function(_0x20cea2){_0x20cea2=parseInt(_0x20cea2,0xa);if(!_0x20cea2||_0x20cea2<0x0){_0x20cea2=LIMIT_VALUE;}return _0x20cea2;};exports[_0xb038('0x13')]=function(_0x3e06ef){_0x3e06ef=parseInt(_0x3e06ef,0xa);if(!_0x3e06ef||_0x3e06ef<0x0){_0x3e06ef=0x0;}return _0x3e06ef;};exports[_0xb038('0x14')]=function(_0x4fd2e8){var _0x222b84,_0x42c8ee=null;if(_0x4fd2e8){_0x222b84=_0x4fd2e8[_0xb038('0x3')](',');_0x42c8ee=_[_0xb038('0x15')](_0x222b84,function(_0xc6cd61){if(_0xc6cd61['indexOf']('-')===0x0){return[_0xc6cd61===_0xb038('0x16')?sequelize[_0xb038('0x17')](sequelize[_0xb038('0x18')](_0xb038('0x16')),'unsigned'):_0xc6cd61[_0xb038('0x19')](0x1),_0xb038('0x1a')];}else{return[_0xc6cd61==='priority'?sequelize[_0xb038('0x17')](sequelize[_0xb038('0x18')]('priority'),_0xb038('0x1b')):_0xc6cd61,'ASC'];}});}return _0x42c8ee;};exports[_0xb038('0x1c')]=function(_0x36eb5b,_0x27ff21){if(_[_0xb038('0x1d')](_0x36eb5b)){return _0x36eb5b;}if(_[_0xb038('0x12')](_0x36eb5b)){for(var _0xe4ceda=0x0;_0xe4ceda<_0x36eb5b[_0xb038('0x1e')];_0xe4ceda+=0x1){_0x36eb5b[_0xe4ceda]=this['omit'](_0x36eb5b[_0xe4ceda],_0x27ff21);}return _0x36eb5b;}if(!_[_0xb038('0x1f')](_0x36eb5b)){return _0x36eb5b;}if(_[_0xb038('0x20')](_0x27ff21)){_0x27ff21=[_0x27ff21];}if(!_[_0xb038('0x12')](_0x27ff21)){return _0x36eb5b;}for(var _0x5d18c8=0x0;_0x5d18c8<_0x27ff21[_0xb038('0x1e')];_0x5d18c8+=0x1){_[_0xb038('0x21')](_0x36eb5b,_0x27ff21[_0x5d18c8]);}for(var _0x1fa72d in _0x36eb5b){if(_0x36eb5b['hasOwnProperty'](_0x1fa72d)){_0x36eb5b[_0x1fa72d]=this[_0xb038('0x1c')](_0x36eb5b[_0x1fa72d],_0x27ff21);}}return _0x36eb5b;};exports[_0xb038('0x22')]=function(_0x28a6a9){return _0x28a6a9[_0xb038('0x23')](RegExp(_0xb038('0x24')))?!![]:![];};exports['isEmail']=function(_0x1783d4){return _0x1783d4[_0xb038('0x23')](/^\S+@\S+$/)?!![]:![];};exports[_0xb038('0x25')]=function(_0x3464be){var _0x1abe23=[];_0x3464be[_0xb038('0x3')](/[ ,]+/)[_0xb038('0x26')](function(_0x3695aa){_0x3695aa=_0x3695aa[_0xb038('0x27')](/([^:]")"+/g,'$1');_0x3695aa='+'+_0x3695aa+'*';var _0x22fb2c=/[ `!@#$%^&*()_\-?~]/;if(_0x3695aa[_0xb038('0x23')](_0x22fb2c))_0x3695aa='\x22'+_0x3695aa+'\x22';_0x1abe23[_0xb038('0x28')](_0x3695aa);});return _0x1abe23[_0xb038('0x29')]('\x20');};exports['getOptions']=function(_0x1d807a,_0x598554,_0x908d1f){var _0x13bf20={},_0x495253={};if(_0x598554[_0xb038('0x2a')][_0xb038('0x2b')]){_0x598554[_0xb038('0x2a')]['id']=_0x598554[_0xb038('0x2a')][_0xb038('0x2b')];delete _0x598554[_0xb038('0x2a')][_0xb038('0x2b')];}_0x13bf20['model']=_[_0xb038('0x15')](_0x1d807a,_0xb038('0x10'));_0x13bf20[_0xb038('0x2a')]=_['keys'](_0x598554['query']);_0x13bf20['filters']=_[_0xb038('0x2c')](_0x13bf20[_0xb038('0x2d')],_0x13bf20[_0xb038('0x2a')]);_0x495253[_0xb038('0x2e')]=_[_0xb038('0x2c')](_0x13bf20[_0xb038('0x2d')],this['fields'](_0x598554[_0xb038('0x2a')][_0xb038('0x2f')]));_0x495253[_0xb038('0x2e')]=_0x495253[_0xb038('0x2e')]['length']?_0x495253[_0xb038('0x2e')]:_0x13bf20[_0xb038('0x2d')];if(!_0x598554['query']['hasOwnProperty'](_0xb038('0x30'))){_0x495253[_0xb038('0x31')]=this[_0xb038('0x31')](_0x598554[_0xb038('0x2a')][_0xb038('0x31')]);_0x495253['offset']=this[_0xb038('0x13')](_0x598554[_0xb038('0x2a')][_0xb038('0x13')]);}_0x495253[_0xb038('0x32')]=this['sort'](_0x598554[_0xb038('0x2a')][_0xb038('0x14')]);_0x495253[_0xb038('0x33')]=this['filters'](_[_0xb038('0x34')](_0x598554['query'],_0x13bf20[_0xb038('0x35')]),_0x1d807a);if(_0x598554[_0xb038('0x2a')][_0xb038('0x36')]){var _0x5ce40c=_0x1d807a;var _0x322ab1=_0x598554[_0xb038('0x2a')][_0xb038('0x36')];if(typeof _0x322ab1==='object'){_0x5ce40c=_[_0xb038('0x36')](_0x1d807a,function(_0xa5971a){return _[_0xb038('0x37')](_0x322ab1[_0xb038('0x38')],_0xa5971a['name']);});_0x322ab1=_0x322ab1[_0xb038('0x39')];}_0x495253[_0xb038('0x33')]=_[_0xb038('0x3a')](_0x495253[_0xb038('0x33')],{'$or':_['map'](_0x5ce40c,function(_0x19dc7b){if(_0x19dc7b[_0xb038('0x6')]!=='VIRTUAL'){if(_0x908d1f){return sequelize[_0xb038('0x33')](sequelize['fn'](_0xb038('0x3b'),sequelize[_0xb038('0x18')](_0x19dc7b['name'])),{'$like':sequelize['fn'](_0xb038('0x3b'),'%'+_0x598554[_0xb038('0x2a')]['filter']+'%')});}else{var _0x527eaa={};_0x527eaa[_0x19dc7b[_0xb038('0x10')]]={'$like':'%'+_0x598554[_0xb038('0x2a')][_0xb038('0x36')]+'%'};return _0x527eaa;}}})});}_0x495253=_[_0xb038('0x3a')]({},_0x495253,_0x598554[_0xb038('0x3c')]);return _0x495253;};
\ No newline at end of file
index 5e708c1..c36da87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9957=['root','public','test','join','client','use','json\x20replacer','toISOString','split','static','/server/views','engine','html','ejs','renderFile','view\x20engine','urlencoded','json','50mb','express','method-override','cookie-parser','errorhandler','passport','cors','./environment','default','get','env','production','set','appPath'];(function(_0x16eb11,_0x1a2251){var _0x3ae7ef=function(_0x575a01){while(--_0x575a01){_0x16eb11['push'](_0x16eb11['shift']());}};_0x3ae7ef(++_0x1a2251);}(_0x9957,0x93));var _0x7995=function(_0x1ac595,_0x5d2081){_0x1ac595=_0x1ac595-0x0;var _0x455fff=_0x9957[_0x1ac595];return _0x455fff;};'use strict';var express=require(_0x7995('0x0'));var methodOverride=require(_0x7995('0x1'));var cookieParser=require(_0x7995('0x2'));var errorHandler=require(_0x7995('0x3'));var path=require('path');var passport=require(_0x7995('0x4'));var cors=require(_0x7995('0x5'));var config=require(_0x7995('0x6'));exports[_0x7995('0x7')]=function(_0x576d89){var _0x744bea=_0x576d89[_0x7995('0x8')](_0x7995('0x9'));if(_0x744bea===_0x7995('0xa')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path['join'](config[_0x7995('0xd')],_0x7995('0xe')));}if(_0x744bea==='development'||_0x744bea===_0x7995('0xf')){_0x576d89[_0x7995('0xb')](_0x7995('0xc'),path[_0x7995('0x10')](config[_0x7995('0xd')],_0x7995('0x11')));_0x576d89[_0x7995('0x12')](errorHandler());}_0x576d89['set'](_0x7995('0x13'),function(_0x41c652,_0x581f22){if(this[_0x41c652]instanceof Date){_0x581f22=this[_0x41c652][_0x7995('0x14')]()[_0x7995('0x15')]('.')[0x0]+'Z';}return _0x581f22;});_0x576d89[_0x7995('0x12')](express[_0x7995('0x16')](_0x576d89[_0x7995('0x8')](_0x7995('0xc'))));_0x576d89[_0x7995('0xb')]('views',config['root']+_0x7995('0x17'));_0x576d89[_0x7995('0x18')](_0x7995('0x19'),require(_0x7995('0x1a'))[_0x7995('0x1b')]);_0x576d89[_0x7995('0xb')](_0x7995('0x1c'),_0x7995('0x19'));_0x576d89['use'](express[_0x7995('0x1d')]({'limit':'50mb','extended':!![]}));_0x576d89[_0x7995('0x12')](express[_0x7995('0x1e')]({'limit':_0x7995('0x1f')}));_0x576d89[_0x7995('0x12')](cors());_0x576d89[_0x7995('0x12')](methodOverride());_0x576d89[_0x7995('0x12')](cookieParser());_0x576d89['use'](passport['initialize']());};
\ No newline at end of file
+var _0xa9e0=['get','production','set','appPath','public','join','root','client','use','toISOString','split','static','views','/server/views','engine','html','ejs','urlencoded','50mb','json','initialize','express','method-override','cookie-parser','passport','./environment','default'];(function(_0x54a28a,_0x1ba1fe){var _0x3da1f1=function(_0x7231b5){while(--_0x7231b5){_0x54a28a['push'](_0x54a28a['shift']());}};_0x3da1f1(++_0x1ba1fe);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3054be,_0x1bdc8b){_0x3054be=_0x3054be-0x0;var _0x3df150=_0xa9e0[_0x3054be];return _0x3df150;};'use strict';var express=require(_0x0a9e('0x0'));var methodOverride=require(_0x0a9e('0x1'));var cookieParser=require(_0x0a9e('0x2'));var errorHandler=require('errorhandler');var path=require('path');var passport=require(_0x0a9e('0x3'));var cors=require('cors');var config=require(_0x0a9e('0x4'));exports[_0x0a9e('0x5')]=function(_0x2ab90b){var _0x991246=_0x2ab90b[_0x0a9e('0x6')]('env');if(_0x991246===_0x0a9e('0x7')){_0x2ab90b[_0x0a9e('0x8')](_0x0a9e('0x9'),path['join'](config['root'],_0x0a9e('0xa')));}if(_0x991246==='development'||_0x991246==='test'){_0x2ab90b[_0x0a9e('0x8')](_0x0a9e('0x9'),path[_0x0a9e('0xb')](config[_0x0a9e('0xc')],_0x0a9e('0xd')));_0x2ab90b[_0x0a9e('0xe')](errorHandler());}_0x2ab90b['set']('json\x20replacer',function(_0x527cdd,_0x4cfe67){if(this[_0x527cdd]instanceof Date){_0x4cfe67=this[_0x527cdd][_0x0a9e('0xf')]()[_0x0a9e('0x10')]('.')[0x0]+'Z';}return _0x4cfe67;});_0x2ab90b[_0x0a9e('0xe')](express[_0x0a9e('0x11')](_0x2ab90b[_0x0a9e('0x6')](_0x0a9e('0x9'))));_0x2ab90b['set'](_0x0a9e('0x12'),config[_0x0a9e('0xc')]+_0x0a9e('0x13'));_0x2ab90b[_0x0a9e('0x14')](_0x0a9e('0x15'),require(_0x0a9e('0x16'))['renderFile']);_0x2ab90b[_0x0a9e('0x8')]('view\x20engine',_0x0a9e('0x15'));_0x2ab90b['use'](express[_0x0a9e('0x17')]({'limit':_0x0a9e('0x18'),'extended':!![]}));_0x2ab90b['use'](express[_0x0a9e('0x19')]({'limit':'50mb'}));_0x2ab90b[_0x0a9e('0xe')](cors());_0x2ab90b[_0x0a9e('0xe')](methodOverride());_0x2ab90b[_0x0a9e('0xe')](cookieParser());_0x2ab90b[_0x0a9e('0xe')](passport[_0x0a9e('0x1a')]());};
\ No newline at end of file
index 2a75585..c4959aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4c9=['map','model','update','digest','getUuid','licenseToken','test','win32','utf8','replace','hostname','macAddress','ipAddress','createHash','md5','substring','lodash','crypto','bimedia-machine-uuid','execSync','orderBy','keys','length','filter','family','IPv4','internal','mac','00:00:00:00:00:00','address','getFirstInterface','cpus'];(function(_0x16629d,_0x492375){var _0x56ccee=function(_0xa982b7){while(--_0xa982b7){_0x16629d['push'](_0x16629d['shift']());}};_0x56ccee(++_0x492375);}(_0xc4c9,0x150));var _0x9c4c=function(_0x3c1635,_0x3ee62f){_0x3c1635=_0x3c1635-0x0;var _0x41914b=_0xc4c9[_0x3c1635];return _0x41914b;};'use strict';var _=require(_0x9c4c('0x0'));var os=require('os');var crypto=require(_0x9c4c('0x1'));var machine=require(_0x9c4c('0x2'));var exec=require('child_process')[_0x9c4c('0x3')];var config=require('../environment');function getInterfaces(){var _0x397933=[];var _0x5c2c45=os['networkInterfaces']();var _0x8dbec9=_[_0x9c4c('0x4')](_[_0x9c4c('0x5')](_0x5c2c45));for(var _0x5b6d2b=0x0;_0x5b6d2b<_0x8dbec9[_0x9c4c('0x6')];_0x5b6d2b++){var _0x4f4727=_0x5c2c45[_0x8dbec9[_0x5b6d2b]][_0x9c4c('0x7')](function(_0x340f37){return _0x340f37[_0x9c4c('0x8')]===_0x9c4c('0x9')&&_0x340f37[_0x9c4c('0xa')]===![];});_0x397933=_0x397933['concat'](_0x4f4727);}return _0x397933;}function getFirstInterface(){var _0x4a01ea=_['head'](getInterfaces());return{'macAddress':_0x4a01ea&&_0x4a01ea[_0x9c4c('0xb')]?_0x4a01ea[_0x9c4c('0xb')]:_0x9c4c('0xc'),'ipAddress':_0x4a01ea&&_0x4a01ea[_0x9c4c('0xd')]?_0x4a01ea['address']:'127.0.0.1'};}exports[_0x9c4c('0xe')]=getFirstInterface;function getCPUhash(){var _0x400fb5=_[_0x9c4c('0x4')](os[_0x9c4c('0xf')]()[_0x9c4c('0x10')](function(_0x1de02c){return _0x1de02c[_0x9c4c('0x11')];}))['join'](':');return crypto['createHash']('md5')[_0x9c4c('0x12')](_0x400fb5)[_0x9c4c('0x13')]('hex');}exports[_0x9c4c('0x14')]=function(){var _0x29492b=os['platform']();var _0x15fa54=/[0-9a-f-]{36}/;if(config[_0x9c4c('0x15')]&&_0x15fa54[_0x9c4c('0x16')](config[_0x9c4c('0x15')])){return config[_0x9c4c('0x15')];}else if(_0x29492b===_0x9c4c('0x17')){return exec('dmidecode\x20--string\x20system-uuid',{'encoding':_0x9c4c('0x18')})[_0x9c4c('0x19')]('\x0d\x0a','');}else{var _0x446813=getFirstInterface();var _0xe04530=getCPUhash();var _0x298c0c=_0xe04530+'|'+os[_0x9c4c('0x1a')]()+'|'+_0x446813[_0x9c4c('0x1b')]+'|'+_0x446813[_0x9c4c('0x1c')];var _0x5d4208=crypto[_0x9c4c('0x1d')](_0x9c4c('0x1e'))['update'](_0x298c0c)['digest']('hex');return _0x5d4208['substring'](0x0,0x8)+'-'+_0x5d4208['substring'](0x8,0xc)+'-'+_0x5d4208[_0x9c4c('0x1f')](0xc,0x10)+'-'+_0x5d4208[_0x9c4c('0x1f')](0x10,0x14)+'-'+_0x5d4208[_0x9c4c('0x1f')](0x14);}};
\ No newline at end of file
+var _0x7dc9=['concat','head','mac','00:00:00:00:00:00','address','127.0.0.1','getFirstInterface','cpus','map','model','createHash','md5','update','digest','hex','getUuid','platform','licenseToken','test','dmidecode\x20--string\x20system-uuid','utf8','replace','hostname','macAddress','substring','lodash','crypto','bimedia-machine-uuid','child_process','execSync','../environment','networkInterfaces','orderBy','keys','length','filter','family','IPv4'];(function(_0x18abd2,_0x22d4b3){var _0x1dcad6=function(_0xcc08c4){while(--_0xcc08c4){_0x18abd2['push'](_0x18abd2['shift']());}};_0x1dcad6(++_0x22d4b3);}(_0x7dc9,0x8b));var _0x97dc=function(_0x3f396b,_0x34c4ec){_0x3f396b=_0x3f396b-0x0;var _0xf1b023=_0x7dc9[_0x3f396b];return _0xf1b023;};'use strict';var _=require(_0x97dc('0x0'));var os=require('os');var crypto=require(_0x97dc('0x1'));var machine=require(_0x97dc('0x2'));var exec=require(_0x97dc('0x3'))[_0x97dc('0x4')];var config=require(_0x97dc('0x5'));function getInterfaces(){var _0x5bdd0d=[];var _0xf75c8e=os[_0x97dc('0x6')]();var _0x4e6b6b=_[_0x97dc('0x7')](_[_0x97dc('0x8')](_0xf75c8e));for(var _0x1e3ac2=0x0;_0x1e3ac2<_0x4e6b6b[_0x97dc('0x9')];_0x1e3ac2++){var _0x352ed0=_0xf75c8e[_0x4e6b6b[_0x1e3ac2]][_0x97dc('0xa')](function(_0x4856c9){return _0x4856c9[_0x97dc('0xb')]===_0x97dc('0xc')&&_0x4856c9['internal']===![];});_0x5bdd0d=_0x5bdd0d[_0x97dc('0xd')](_0x352ed0);}return _0x5bdd0d;}function getFirstInterface(){var _0x5516c1=_[_0x97dc('0xe')](getInterfaces());return{'macAddress':_0x5516c1&&_0x5516c1[_0x97dc('0xf')]?_0x5516c1[_0x97dc('0xf')]:_0x97dc('0x10'),'ipAddress':_0x5516c1&&_0x5516c1[_0x97dc('0x11')]?_0x5516c1[_0x97dc('0x11')]:_0x97dc('0x12')};}exports[_0x97dc('0x13')]=getFirstInterface;function getCPUhash(){var _0x2311d1=_[_0x97dc('0x7')](os[_0x97dc('0x14')]()[_0x97dc('0x15')](function(_0x442fe8){return _0x442fe8[_0x97dc('0x16')];}))['join'](':');return crypto[_0x97dc('0x17')](_0x97dc('0x18'))[_0x97dc('0x19')](_0x2311d1)[_0x97dc('0x1a')](_0x97dc('0x1b'));}exports[_0x97dc('0x1c')]=function(){var _0x2590f0=os[_0x97dc('0x1d')]();var _0x5e276d=/[0-9a-f-]{36}/;if(config[_0x97dc('0x1e')]&&_0x5e276d[_0x97dc('0x1f')](config[_0x97dc('0x1e')])){return config[_0x97dc('0x1e')];}else if(_0x2590f0==='win32'){return exec(_0x97dc('0x20'),{'encoding':_0x97dc('0x21')})[_0x97dc('0x22')]('\x0d\x0a','');}else{var _0x145e16=getFirstInterface();var _0x42741f=getCPUhash();var _0x2ffe18=_0x42741f+'|'+os[_0x97dc('0x23')]()+'|'+_0x145e16[_0x97dc('0x24')]+'|'+_0x145e16['ipAddress'];var _0x3dcff8=crypto['createHash'](_0x97dc('0x18'))[_0x97dc('0x19')](_0x2ffe18)[_0x97dc('0x1a')](_0x97dc('0x1b'));return _0x3dcff8[_0x97dc('0x25')](0x0,0x8)+'-'+_0x3dcff8[_0x97dc('0x25')](0x8,0xc)+'-'+_0x3dcff8[_0x97dc('0x25')](0xc,0x10)+'-'+_0x3dcff8['substring'](0x10,0x14)+'-'+_0x3dcff8['substring'](0x14);}};
\ No newline at end of file
index d89fe4b..b365efc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57f3=['Disabled','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','YYYY-MM-DD\x20HH:mm','update','diff','decryptString','error','getUuid','License','findOrCreate','SERVICE\x20LICENSE\x20STARTED\x20%s','default','util','request-promise','bluebird','version','../../mysqldb','../../components/encryptor','../logger','license','https://www.xcallymotion.com','format','%s/api/servers/%s/check?version=%s','exports','then','catch','data2','data1','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED'];(function(_0x568496,_0x565afd){var _0x26c5c1=function(_0x4d251e){while(--_0x4d251e){_0x568496['push'](_0x568496['shift']());}};_0x26c5c1(++_0x565afd);}(_0x57f3,0x178));var _0x357f=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x57f3[_0x17d9e3];return _0x14192d;};'use strict';var util=require(_0x357f('0x0'));var moment=require('moment');var rp=require(_0x357f('0x1'));var BPromise=require(_0x357f('0x2'));var pkginfo=require('pkginfo')(module,_0x357f('0x3'));var db=require(_0x357f('0x4'))['db'];var encryptor=require(_0x357f('0x5'));var hardware=require('./hardware');var logger=require(_0x357f('0x6'))(_0x357f('0x7'));var HOST=_0x357f('0x8');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x68b72a){return new BPromise(function(_0x4e77f1,_0x5a052f){var _0x3af30c=util[_0x357f('0x9')](_0x357f('0xa'),HOST,_0x68b72a,module['exports'][_0x357f('0x3')]);if(oldToken){_0x3af30c=util[_0x357f('0x9')]('%s/api/servers/%s/check?version=%s&oldtoken=%s',HOST,_0x68b72a,module[_0x357f('0xb')][_0x357f('0x3')],oldToken);}var _0x3e197d={'uri':_0x3af30c,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0x3e197d)[_0x357f('0xc')](function(_0x4c914f){_0x4e77f1(_0x4c914f);})[_0x357f('0xd')](function(_0x48116e){_0x5a052f(_0x48116e);});});}function manageLicense(_0x4192a4,_0x275faf){var _0x40156f=_0x275faf['get']({'plain':!![]});if(!isOldTokenSent&&_0x40156f['data1']!==_0x4192a4&&!_0x40156f[_0x357f('0xe')]){oldToken=_0x40156f[_0x357f('0xf')];}httpRequest(_0x4192a4)['then'](function(_0x551f6b){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x551f6b[_0x357f('0x10')]){isOldTokenSent=![];if(!_0x40156f[_0x357f('0x7')]&&_0x40156f[_0x357f('0x7')]!=_0x551f6b['license']||_0x40156f[_0x357f('0x7')]&&_0x40156f[_0x357f('0xe')]){logger[_0x357f('0x11')](_0x357f('0x12'));}if(_0x40156f[_0x357f('0x7')]&&!_0x40156f['data2']&&_0x40156f[_0x357f('0x7')]!=_0x551f6b[_0x357f('0x7')]){logger[_0x357f('0x11')](_0x357f('0x13'));}if(_0x40156f[_0x357f('0x7')]&&!_0x40156f['data2']&&_0x40156f[_0x357f('0x7')]==_0x551f6b[_0x357f('0x7')]){return _0x275faf;}return _0x275faf['update']({'data1':_0x4192a4,'data2':null,'license':_0x551f6b[_0x357f('0x7')]});}else{if(_0x551f6b[_0x357f('0x7')]||_0x40156f[_0x357f('0x7')]){if(!_0x40156f[_0x357f('0xe')]){if(_0x40156f['data1']==_0x4192a4){GRAY_PERIOD_REASON=_0x357f('0x14');logger['info']('THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED');}else{GRAY_PERIOD_REASON='Changed';logger['info'](_0x357f('0x15'),_0x40156f[_0x357f('0xf')],_0x4192a4);}logger[_0x357f('0x11')](_0x357f('0x16'),GRAY_PERIOD_REASON['toUpperCase'](),moment()[_0x357f('0x9')](_0x357f('0x17')));return _0x275faf[_0x357f('0x18')]({'data2':encryptor['encryptString'](moment()[_0x357f('0x9')](_0x357f('0x17')))});}else{if(moment()[_0x357f('0x19')](encryptor[_0x357f('0x1a')](_0x40156f[_0x357f('0xe')]),'days')>DAYS){logger[_0x357f('0x11')]('DEMO\x20START\x20AT\x20%s',moment()[_0x357f('0x9')]('YYYY-MM-DD\x20HH:mm'));isOldTokenSent=![];return _0x275faf[_0x357f('0x18')]({'data1':_0x4192a4,'data2':null,'license':null});}}}else{if(_0x40156f['data1']!=_0x4192a4){logger[_0x357f('0x11')](_0x357f('0x15'),_0x40156f[_0x357f('0xf')],_0x4192a4);return _0x275faf[_0x357f('0x18')]({'data1':_0x4192a4,'data2':null,'license':null});}}}return _0x275faf;})[_0x357f('0xc')](function(_0x52a73d){_0x275faf=_0x52a73d;})[_0x357f('0xd')](function(_0x3505c2){logger[_0x357f('0x1b')](_0x3505c2['message']);})['finally'](function(){setTimeout(function(){manageLicense(hardware['getUuid'](),_0x275faf);},TIME);});}function defaultLicense(){var _0x5e089b=hardware[_0x357f('0x1c')]();if(_0x5e089b){return db[_0x357f('0x1d')][_0x357f('0x1e')]({'where':{'id':0x1},'defaults':{'data1':_0x5e089b}})['spread'](function(_0x5c0dc7,_0x32bb7e){logger[_0x357f('0x11')](_0x357f('0x1f'),_0x5e089b);manageLicense(_0x5e089b,_0x5c0dc7);})[_0x357f('0xd')](function(_0x28f494){logger['error'](_0x28f494['message']);});}}exports[_0x357f('0x20')]=defaultLicense;
\ No newline at end of file
+var _0x0cc1=['../../mysqldb','../../components/encryptor','./hardware','../logger','license','https://www.xcallymotion.com','%s/api/servers/%s/check?version=%s','exports','format','%s/api/servers/%s/check?version=%s&oldtoken=%s','catch','data1','data2','active','info','THE\x20LICENSE\x20HAS\x20BEEN\x20ENABLED','THE\x20LICENSE\x20HAS\x20BEEN\x20UPDATED','update','Disabled','THE\x20LICENSE\x20HAS\x20BEEN\x20DISABLED','NEW\x20UUID\x20DETECTED:\x20FROM\x20%s\x20TO\x20%s','%s\x20-\x20GRAY\x20PERIOD\x20STARTED\x20AT\x20%s','toUpperCase','encryptString','decryptString','days','DEMO\x20START\x20AT\x20%s','YYYY-MM-DD\x20HH:mm','message','finally','getUuid','License','SERVICE\x20LICENSE\x20STARTED\x20%s','default','moment','request-promise','version'];(function(_0x34893a,_0x247282){var _0x186ed1=function(_0x54e8be){while(--_0x54e8be){_0x34893a['push'](_0x34893a['shift']());}};_0x186ed1(++_0x247282);}(_0x0cc1,0x16f));var _0x10cc=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0cc1[_0x3dd15e];return _0x231fd0;};'use strict';var util=require('util');var moment=require(_0x10cc('0x0'));var rp=require(_0x10cc('0x1'));var BPromise=require('bluebird');var pkginfo=require('pkginfo')(module,_0x10cc('0x2'));var db=require(_0x10cc('0x3'))['db'];var encryptor=require(_0x10cc('0x4'));var hardware=require(_0x10cc('0x5'));var logger=require(_0x10cc('0x6'))(_0x10cc('0x7'));var HOST=_0x10cc('0x8');var TIME=0x3c*0x1388;var DAYS=0x7;var GRAY_PERIOD_REASON;var oldToken;var isOldTokenSent=![];function httpRequest(_0x65014f){return new BPromise(function(_0x4e3c80,_0x270b97){var _0x34aac8=util['format'](_0x10cc('0x9'),HOST,_0x65014f,module[_0x10cc('0xa')][_0x10cc('0x2')]);if(oldToken){_0x34aac8=util[_0x10cc('0xb')](_0x10cc('0xc'),HOST,_0x65014f,module[_0x10cc('0xa')][_0x10cc('0x2')],oldToken);}var _0x2b474a={'uri':_0x34aac8,'method':'GET','timeout':0xea60,'json':!![]};return rp(_0x2b474a)['then'](function(_0x3915ef){_0x4e3c80(_0x3915ef);})[_0x10cc('0xd')](function(_0x5a3c44){_0x270b97(_0x5a3c44);});});}function manageLicense(_0xadc38e,_0x1b0851){var _0x4b5340=_0x1b0851['get']({'plain':!![]});if(!isOldTokenSent&&_0x4b5340[_0x10cc('0xe')]!==_0xadc38e&&!_0x4b5340[_0x10cc('0xf')]){oldToken=_0x4b5340['data1'];}httpRequest(_0xadc38e)['then'](function(_0x4f1bc2){if(oldToken){oldToken=undefined;isOldTokenSent=!![];}if(_0x4f1bc2[_0x10cc('0x10')]){isOldTokenSent=![];if(!_0x4b5340['license']&&_0x4b5340['license']!=_0x4f1bc2['license']||_0x4b5340['license']&&_0x4b5340[_0x10cc('0xf')]){logger[_0x10cc('0x11')](_0x10cc('0x12'));}if(_0x4b5340[_0x10cc('0x7')]&&!_0x4b5340['data2']&&_0x4b5340[_0x10cc('0x7')]!=_0x4f1bc2[_0x10cc('0x7')]){logger['info'](_0x10cc('0x13'));}if(_0x4b5340[_0x10cc('0x7')]&&!_0x4b5340[_0x10cc('0xf')]&&_0x4b5340[_0x10cc('0x7')]==_0x4f1bc2[_0x10cc('0x7')]){return _0x1b0851;}return _0x1b0851[_0x10cc('0x14')]({'data1':_0xadc38e,'data2':null,'license':_0x4f1bc2['license']});}else{if(_0x4f1bc2[_0x10cc('0x7')]||_0x4b5340[_0x10cc('0x7')]){if(!_0x4b5340[_0x10cc('0xf')]){if(_0x4b5340[_0x10cc('0xe')]==_0xadc38e){GRAY_PERIOD_REASON=_0x10cc('0x15');logger[_0x10cc('0x11')](_0x10cc('0x16'));}else{GRAY_PERIOD_REASON='Changed';logger[_0x10cc('0x11')](_0x10cc('0x17'),_0x4b5340[_0x10cc('0xe')],_0xadc38e);}logger['info'](_0x10cc('0x18'),GRAY_PERIOD_REASON[_0x10cc('0x19')](),moment()['format']('YYYY-MM-DD\x20HH:mm'));return _0x1b0851[_0x10cc('0x14')]({'data2':encryptor[_0x10cc('0x1a')](moment()['format']('YYYY-MM-DD\x20HH:mm'))});}else{if(moment()['diff'](encryptor[_0x10cc('0x1b')](_0x4b5340[_0x10cc('0xf')]),_0x10cc('0x1c'))>DAYS){logger[_0x10cc('0x11')](_0x10cc('0x1d'),moment()[_0x10cc('0xb')](_0x10cc('0x1e')));isOldTokenSent=![];return _0x1b0851['update']({'data1':_0xadc38e,'data2':null,'license':null});}}}else{if(_0x4b5340[_0x10cc('0xe')]!=_0xadc38e){logger[_0x10cc('0x11')](_0x10cc('0x17'),_0x4b5340['data1'],_0xadc38e);return _0x1b0851[_0x10cc('0x14')]({'data1':_0xadc38e,'data2':null,'license':null});}}}return _0x1b0851;})['then'](function(_0x1e4474){_0x1b0851=_0x1e4474;})[_0x10cc('0xd')](function(_0x447301){logger['error'](_0x447301[_0x10cc('0x1f')]);})[_0x10cc('0x20')](function(){setTimeout(function(){manageLicense(hardware[_0x10cc('0x21')](),_0x1b0851);},TIME);});}function defaultLicense(){var _0x51ebb0=hardware['getUuid']();if(_0x51ebb0){return db[_0x10cc('0x22')]['findOrCreate']({'where':{'id':0x1},'defaults':{'data1':_0x51ebb0}})['spread'](function(_0x52bd44,_0x9b307f){logger[_0x10cc('0x11')](_0x10cc('0x23'),_0x51ebb0);manageLicense(_0x51ebb0,_0x52bd44);})['catch'](function(_0x57985c){logger['error'](_0x57985c[_0x10cc('0x1f')]);});}}exports[_0x10cc('0x24')]=defaultLicense;
\ No newline at end of file
index bb2a853..ce9307d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6679=['uuid','gray','add','grayReason','machineUuid','changed','disabled','message','User','findAll','role','sequelize','COUNT','col','count','admin','telephone','users','telephones','forEach','user','pick','countBy','License\x20limit\x20reached\x20for\x20telephones','exports','moment','bluebird','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','Demo\x20license','Breaking\x20license','getUuid','find','defaults','then','catch','license','isEmpty','data1','data2','split','decryptString','format','%s:%s:%s','parse'];(function(_0x2e752b,_0x5cb17d){var _0x40a0b4=function(_0x11365a){while(--_0x11365a){_0x2e752b['push'](_0x2e752b['shift']());}};_0x40a0b4(++_0x5cb17d);}(_0x6679,0x1b7));var _0x9667=function(_0x55d8c5,_0x10287a){_0x55d8c5=_0x55d8c5-0x0;var _0x225ae5=_0x6679[_0x55d8c5];return _0x225ae5;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x9667('0x0'));var BPromise=require(_0x9667('0x1'));var hardware=require('./hardware');var encryptor=require(_0x9667('0x2'));var db=require(_0x9667('0x3'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0x9667('0x4'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':_0x9667('0x5'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':'2027-01-01T00:00:00.000Z','chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0x9667('0x6'),'machineUuid':hardware[_0x9667('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0x57511d){return new BPromise(function(_0x46f738,_0x5915f4){return db['License'][_0x9667('0x8')](_[_0x9667('0x9')](_0x57511d,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x3fdf4c){return checkLicense(_0x3fdf4c,null);})[_0x9667('0xa')](function(_0x2721d5){_0x46f738(_0x2721d5);return;})[_0x9667('0xb')](function(_0x33d186){_0x5915f4(_0x33d186);});});}function checkLicense(_0x54bf5b,_0x4fa3d5){if(!_0x54bf5b){demoLicense['uuid']=_0x54bf5b['data1'];return demoLicense;}try{var _0x4a2612=_0x4fa3d5||_0x54bf5b[_0x9667('0xc')];if(_[_0x9667('0xd')](_0x4a2612)){throw new Error('License\x20key\x20value\x20not\x20found');}var _0x56836b=_0x54bf5b[_0x9667('0xe')];var _0x49b3ae=_0x54bf5b[_0x9667('0xf')];var _0x1b0d1c=_0x56836b[_0x9667('0x10')]('-')[0x4];var _0x35b58b=_0x56836b[_0x9667('0x10')]('-')[0x0];var _0x43bb18=encryptor[_0x9667('0x11')](_0x4a2612,util[_0x9667('0x12')](_0x9667('0x13'),_0x1b0d1c,_0x56836b,_0x35b58b));var _0x3f61f7=JSON[_0x9667('0x14')](_0x43bb18);_0x3f61f7['demo']=![];_0x3f61f7[_0x9667('0x15')]=_0x56836b;_0x3f61f7['machineUuid']=hardware['getUuid']();if(_0x49b3ae){var _0x4bb9a4=encryptor[_0x9667('0x11')](_0x49b3ae);_0x3f61f7[_0x9667('0x16')]=_0x4bb9a4;_0x3f61f7['deadline']=moment(_0x4bb9a4)[_0x9667('0x17')](0x7,'days')['format']();_0x3f61f7[_0x9667('0x18')]=_0x3f61f7[_0x9667('0x15')]!=_0x3f61f7[_0x9667('0x19')]?_0x9667('0x1a'):_0x9667('0x1b');}return _0x3f61f7;}catch(_0xa17016){breakingLicense[_0x9667('0x15')]=_0x54bf5b[_0x9667('0xe')];breakingLicense['message']=_0xa17016[_0x9667('0x1c')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x517dbd,_0x39f924){getLicense()[_0x9667('0xa')](function(_0x404fc8){return db[_0x9667('0x1d')][_0x9667('0x1e')]({'attributes':[_0x9667('0x1f'),[db[_0x9667('0x20')]['fn'](_0x9667('0x21'),db[_0x9667('0x20')][_0x9667('0x22')](_0x9667('0x1f'))),_0x9667('0x23')]],'group':_0x9667('0x1f'),'where':{'role':{'$or':[_0x9667('0x24'),'user',_0x9667('0x25')]}},'raw':!![]})[_0x9667('0xa')](function(_0x5d10c4){var _0x2ead3d={'user':_0x404fc8[_0x9667('0x26')]||0x0,'telephone':_0x404fc8[_0x9667('0x27')]||0x0};_0x5d10c4[_0x9667('0x28')](function(_0x504e08){var _0x4001d3=_0x504e08['role']===_0x9667('0x24')?_0x9667('0x29'):_0x504e08['role'];_0x2ead3d[_0x4001d3]-=_0x504e08[_0x9667('0x23')];if(_0x2ead3d[_0x4001d3]<0x0)_0x2ead3d[_0x4001d3]=0x0;});_0x517dbd(_0x2ead3d);return;});})[_0x9667('0xb')](function(_0x59720e){_0x39f924(_0x59720e);});});}function checkUserLimits(_0x1cb6f0){return new BPromise(function(_0x2b3eea,_0x2a1f1e){getLimits()[_0x9667('0xa')](function(_0x369d4d){var _0x48ab82=_[_0x9667('0x2a')](_[_0x9667('0x2b')](_0x1cb6f0,'role'),[_0x9667('0x24'),_0x9667('0x29'),_0x9667('0x25')]);var _0x5a307b=(_0x48ab82[_0x9667('0x24')]||0x0)+(_0x48ab82[_0x9667('0x29')]||0x0);var _0x968ea7=_0x48ab82['telephone']||0x0;if(_0x5a307b>_0x369d4d[_0x9667('0x29')])return _0x2a1f1e('License\x20limit\x20reached\x20for\x20users');if(_0x968ea7>_0x369d4d['telephone'])return _0x2a1f1e(_0x9667('0x2c'));return _0x2b3eea();})['catch'](function(_0x14910b){_0x2a1f1e(_0x14910b);});});}module[_0x9667('0x2d')]={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
+var _0xcd4e=['gray','deadline','add','days','grayReason','changed','disabled','message','User','findAll','role','sequelize','col','count','admin','user','telephone','users','telephones','forEach','License\x20limit\x20reached\x20for\x20users','util','moment','bluebird','./hardware','../../components/encryptor','../../mysqldb','2027-01-01T00:00:00.000Z','getUuid','Breaking\x20license','License','then','catch','uuid','data1','license','License\x20key\x20value\x20not\x20found','data2','split','decryptString','format','%s:%s:%s','machineUuid'];(function(_0x579bcf,_0x28ace6){var _0x18040c=function(_0x3f943e){while(--_0x3f943e){_0x579bcf['push'](_0x579bcf['shift']());}};_0x18040c(++_0x28ace6);}(_0xcd4e,0x117));var _0xecd4=function(_0x49703b,_0x50d747){_0x49703b=_0x49703b-0x0;var _0x47e3a8=_0xcd4e[_0x49703b];return _0x47e3a8;};'use strict';var util=require(_0xecd4('0x0'));var _=require('lodash');var moment=require(_0xecd4('0x1'));var BPromise=require(_0xecd4('0x2'));var hardware=require(_0xecd4('0x3'));var encryptor=require(_0xecd4('0x4'));var db=require(_0xecd4('0x5'))['db'];const demoLicense={'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xecd4('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'description':'Demo\x20license','machineUuid':hardware[_0xecd4('0x7')](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};const breakingLicense={'breaking':!![],'demo':!![],'agents':0x2,'telephones':0x0,'users':0x1,'expiration':_0xecd4('0x6'),'chat':![],'mail':![],'fax':![],'messaging':![],'whatsapp':![],'cm':![],'dialer':![],'jscripty':![],'openchannel':![],'callysquare':0x2,'webrtc':![],'jaws':![],'custom':![],'update':![],'description':_0xecd4('0x8'),'machineUuid':hardware['getUuid'](),'virtual':0x0,'voice':!![],'screenrecording':![],'preferred':![],'ai':![]};function getLicense(_0xd514d){return new BPromise(function(_0x13f63f,_0x514ced){return db[_0xecd4('0x9')]['find'](_['defaults'](_0xd514d,{'raw':!![],'where':{'id':0x1}}))['then'](function(_0x15cffa){return checkLicense(_0x15cffa,null);})[_0xecd4('0xa')](function(_0x4757af){_0x13f63f(_0x4757af);return;})[_0xecd4('0xb')](function(_0x478859){_0x514ced(_0x478859);});});}function checkLicense(_0x16a3b1,_0x72caef){if(!_0x16a3b1){demoLicense[_0xecd4('0xc')]=_0x16a3b1[_0xecd4('0xd')];return demoLicense;}try{var _0x267596=_0x72caef||_0x16a3b1[_0xecd4('0xe')];if(_['isEmpty'](_0x267596)){throw new Error(_0xecd4('0xf'));}var _0x29ea43=_0x16a3b1['data1'];var _0x4960ac=_0x16a3b1[_0xecd4('0x10')];var _0xdf868=_0x29ea43[_0xecd4('0x11')]('-')[0x4];var _0x5d9c77=_0x29ea43['split']('-')[0x0];var _0x55fefa=encryptor[_0xecd4('0x12')](_0x267596,util[_0xecd4('0x13')](_0xecd4('0x14'),_0xdf868,_0x29ea43,_0x5d9c77));var _0x3ed2f8=JSON['parse'](_0x55fefa);_0x3ed2f8['demo']=![];_0x3ed2f8[_0xecd4('0xc')]=_0x29ea43;_0x3ed2f8[_0xecd4('0x15')]=hardware[_0xecd4('0x7')]();if(_0x4960ac){var _0x213176=encryptor['decryptString'](_0x4960ac);_0x3ed2f8[_0xecd4('0x16')]=_0x213176;_0x3ed2f8[_0xecd4('0x17')]=moment(_0x213176)[_0xecd4('0x18')](0x7,_0xecd4('0x19'))[_0xecd4('0x13')]();_0x3ed2f8[_0xecd4('0x1a')]=_0x3ed2f8[_0xecd4('0xc')]!=_0x3ed2f8['machineUuid']?_0xecd4('0x1b'):_0xecd4('0x1c');}return _0x3ed2f8;}catch(_0x283b55){breakingLicense[_0xecd4('0xc')]=_0x16a3b1[_0xecd4('0xd')];breakingLicense[_0xecd4('0x1d')]=_0x283b55[_0xecd4('0x1d')];return breakingLicense;}}function getLimits(){return new BPromise(function(_0x3e8a40,_0x590a06){getLicense()[_0xecd4('0xa')](function(_0x591eff){return db[_0xecd4('0x1e')][_0xecd4('0x1f')]({'attributes':[_0xecd4('0x20'),[db[_0xecd4('0x21')]['fn']('COUNT',db[_0xecd4('0x21')][_0xecd4('0x22')](_0xecd4('0x20'))),_0xecd4('0x23')]],'group':_0xecd4('0x20'),'where':{'role':{'$or':[_0xecd4('0x24'),_0xecd4('0x25'),_0xecd4('0x26')]}},'raw':!![]})['then'](function(_0x3491b7){var _0x55447d={'user':_0x591eff[_0xecd4('0x27')]||0x0,'telephone':_0x591eff[_0xecd4('0x28')]||0x0};_0x3491b7[_0xecd4('0x29')](function(_0x339544){var _0x109eaa=_0x339544[_0xecd4('0x20')]===_0xecd4('0x24')?_0xecd4('0x25'):_0x339544['role'];_0x55447d[_0x109eaa]-=_0x339544[_0xecd4('0x23')];if(_0x55447d[_0x109eaa]<0x0)_0x55447d[_0x109eaa]=0x0;});_0x3e8a40(_0x55447d);return;});})[_0xecd4('0xb')](function(_0x4b0848){_0x590a06(_0x4b0848);});});}function checkUserLimits(_0x4d71e1){return new BPromise(function(_0x6d05a,_0x15ecf1){getLimits()[_0xecd4('0xa')](function(_0x2f0294){var _0x45b24e=_['pick'](_['countBy'](_0x4d71e1,_0xecd4('0x20')),[_0xecd4('0x24'),_0xecd4('0x25'),_0xecd4('0x26')]);var _0x4a6b4e=(_0x45b24e[_0xecd4('0x24')]||0x0)+(_0x45b24e[_0xecd4('0x25')]||0x0);var _0x92236=_0x45b24e['telephone']||0x0;if(_0x4a6b4e>_0x2f0294[_0xecd4('0x25')])return _0x15ecf1(_0xecd4('0x2a'));if(_0x92236>_0x2f0294[_0xecd4('0x26')])return _0x15ecf1('License\x20limit\x20reached\x20for\x20telephones');return _0x6d05a();})[_0xecd4('0xb')](function(_0x5be2a6){_0x15ecf1(_0x5be2a6);});});}module['exports']={'checkLicense':checkLicense,'checkUserLimits':checkUserLimits,'getLicense':getLicense};
\ No newline at end of file
index 80b8fca..7ec245a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4325=['app-id','secret','exports','http://localhost:9000'];(function(_0x54f493,_0x385811){var _0x5f2b47=function(_0x2d2323){while(--_0x2d2323){_0x54f493['push'](_0x54f493['shift']());}};_0x5f2b47(++_0x385811);}(_0x4325,0x1da));var _0x5432=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0x4325[_0x3bf83f];return _0x22c4a9;};'use strict';module[_0x5432('0x0')]={'DOMAIN':_0x5432('0x1'),'SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':_0x5432('0x2'),'GOOGLE_SECRET':_0x5432('0x3'),'DEBUG':''};
\ No newline at end of file
+var _0xb016=['exports','http://localhost:9000','secret'];(function(_0x29e64d,_0x294208){var _0x2f8f5c=function(_0x3d192d){while(--_0x3d192d){_0x29e64d['push'](_0x29e64d['shift']());}};_0x2f8f5c(++_0x294208);}(_0xb016,0x159));var _0x6b01=function(_0x4c9b33,_0x40d036){_0x4c9b33=_0x4c9b33-0x0;var _0x2ede77=_0xb016[_0x4c9b33];return _0x2ede77;};'use strict';module[_0x6b01('0x0')]={'DOMAIN':_0x6b01('0x1'),'SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':'app-id','GOOGLE_SECRET':_0x6b01('0x2'),'DEBUG':''};
\ No newline at end of file
index 79f47aa..10a9295 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x39bf=['../utils/loggers'];(function(_0x4fcb03,_0xcde348){var _0x5c42c9=function(_0x3e7960){while(--_0x3e7960){_0x4fcb03['push'](_0x4fcb03['shift']());}};_0x5c42c9(++_0xcde348);}(_0x39bf,0xe3));var _0xf39b=function(_0x8fa5ac,_0x44a99f){_0x8fa5ac=_0x8fa5ac-0x0;var _0x451656=_0x39bf[_0x8fa5ac];return _0x451656;};'use strict';var fileLogger=require(_0xf39b('0x0'))['fileLogger'];module['exports']=fileLogger;
\ No newline at end of file
+var _0x2e1b=['fileLogger','exports','../utils/loggers'];(function(_0xa585bb,_0x5bf404){var _0x3407c6=function(_0x4be12e){while(--_0x4be12e){_0xa585bb['push'](_0xa585bb['shift']());}};_0x3407c6(++_0x5bf404);}(_0x2e1b,0x9b));var _0xb2e1=function(_0x4cef6b,_0x36c75c){_0x4cef6b=_0x4cef6b-0x0;var _0x1b9564=_0x2e1b[_0x4cef6b];return _0x1b9564;};'use strict';var fileLogger=require(_0xb2e1('0x0'))[_0xb2e1('0x1')];module[_0xb2e1('0x2')]=fileLogger;
\ No newline at end of file
index 8102c4e..e72b24e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10ff=['../../services/ami/index.js','agi','email','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js','exports','path','express','join','ami'];(function(_0x19fadd,_0x2757eb){var _0x247641=function(_0x12688c){while(--_0x12688c){_0x19fadd['push'](_0x19fadd['shift']());}};_0x247641(++_0x2757eb);}(_0x10ff,0x134));var _0xf10f=function(_0x42cae2,_0x284ef8){_0x42cae2=_0x42cae2-0x0;var _0x5f256f=_0x10ff[_0x42cae2];return _0x5f256f;};'use strict';var path=require(_0xf10f('0x0'));var os=require('os');var config={'apps':[{'name':_0xf10f('0x1'),'script':path[_0xf10f('0x2')](__dirname,'../../services/express/index.js')},{'name':_0xf10f('0x3'),'script':path[_0xf10f('0x2')](__dirname,_0xf10f('0x4'))},{'name':_0xf10f('0x5'),'script':path['join'](__dirname,'../../services/agi/index.js')},{'name':_0xf10f('0x6'),'script':path[_0xf10f('0x2')](__dirname,'../../services/email/index.js')},{'name':_0xf10f('0x7'),'script':path[_0xf10f('0x2')](__dirname,_0xf10f('0x8'))},{'name':_0xf10f('0x9'),'script':path[_0xf10f('0x2')](__dirname,_0xf10f('0xa'))}]};module[_0xf10f('0xb')]=config;
\ No newline at end of file
+var _0x89cd=['exports','path','../../services/express/index.js','ami','join','../../services/ami/index.js','routing','../../services/routing/index.js','xdr','../../services/xdr/index.js'];(function(_0x5f153e,_0x41dbed){var _0x49d2f0=function(_0x913453){while(--_0x913453){_0x5f153e['push'](_0x5f153e['shift']());}};_0x49d2f0(++_0x41dbed);}(_0x89cd,0x6f));var _0xd89c=function(_0x367ede,_0x834347){_0x367ede=_0x367ede-0x0;var _0x3d0da0=_0x89cd[_0x367ede];return _0x3d0da0;};'use strict';var path=require(_0xd89c('0x0'));var os=require('os');var config={'apps':[{'name':'express','script':path['join'](__dirname,_0xd89c('0x1'))},{'name':_0xd89c('0x2'),'script':path[_0xd89c('0x3')](__dirname,_0xd89c('0x4'))},{'name':'agi','script':path[_0xd89c('0x3')](__dirname,'../../services/agi/index.js')},{'name':'email','script':path[_0xd89c('0x3')](__dirname,'../../services/email/index.js')},{'name':_0xd89c('0x5'),'script':path['join'](__dirname,_0xd89c('0x6'))},{'name':_0xd89c('0x7'),'script':path[_0xd89c('0x3')](__dirname,_0xd89c('0x8'))}]};module[_0xd89c('0x9')]=config;
\ No newline at end of file
index 6e154fa..78c9353 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdd05=['restart','list','describe','delete','dump','saved','pm2','bluebird','./config','connect','start','stop','then','disconnect'];(function(_0x508c10,_0x5a15f0){var _0x3108b5=function(_0x4bccaa){while(--_0x4bccaa){_0x508c10['push'](_0x508c10['shift']());}};_0x3108b5(++_0x5a15f0);}(_0xdd05,0x12c));var _0x5dd0=function(_0x23c77e,_0x110c62){_0x23c77e=_0x23c77e-0x0;var _0x57d2be=_0xdd05[_0x23c77e];return _0x57d2be;};'use strict';var pm2=require(_0x5dd0('0x0'));var BPromise=require(_0x5dd0('0x1'));var config=require(_0x5dd0('0x2'));function connect(){return new BPromise(function(_0x23251d,_0x297fde){return pm2[_0x5dd0('0x3')](function(_0x351355){if(_0x351355){return _0x297fde(_0x351355);}return _0x23251d('connected');});});};exports[_0x5dd0('0x4')]=function(_0x4082cd){return connect()['then'](function(){return new BPromise(function(_0x3ac8f5,_0x58f638){return pm2[_0x5dd0('0x4')](_0x4082cd,function(_0x4cccea,_0x5f481f){if(_0x4cccea){return _0x58f638(_0x4cccea);}pm2['disconnect']();return _0x3ac8f5(_0x5f481f);});});});};exports[_0x5dd0('0x5')]=function(_0x5be0cd){return connect()[_0x5dd0('0x6')](function(){return new BPromise(function(_0x425810,_0x1e7b51){return pm2[_0x5dd0('0x5')](_0x5be0cd,function(_0x49e2d8,_0x23cfde){if(_0x49e2d8){return _0x1e7b51(_0x49e2d8);}pm2[_0x5dd0('0x7')]();return _0x425810(_0x23cfde);});});});};exports[_0x5dd0('0x8')]=function(_0x3c5b4e){return connect()['then'](function(){return new BPromise(function(_0x53a36e,_0x33a081){return pm2['restart'](_0x3c5b4e,function(_0x4f6d15,_0x3136e7){if(_0x4f6d15){return _0x33a081(_0x4f6d15);}pm2['disconnect']();return _0x53a36e(_0x3136e7);});});});};exports[_0x5dd0('0x9')]=function(){return connect()[_0x5dd0('0x6')](function(){return new BPromise(function(_0x4f5594,_0x4b6fd6){return pm2['list'](function(_0x4c0633,_0x6097b){if(_0x4c0633){return _0x4b6fd6(_0x4c0633);}pm2[_0x5dd0('0x7')]();return _0x4f5594(_0x6097b);});});});};exports[_0x5dd0('0xa')]=function(_0x398716){return connect()['then'](function(){return new BPromise(function(_0x4f5954,_0x40b9c8){return pm2['describe'](_0x398716,function(_0x157b47,_0x625975){if(_0x157b47){return _0x40b9c8(_0x157b47);}pm2[_0x5dd0('0x7')]();return _0x4f5954(_0x625975);});});});};exports['delete']=function(_0x1e5be8){return connect()[_0x5dd0('0x6')](function(){return new BPromise(function(_0x2c8288,_0x2cc8cb){return pm2[_0x5dd0('0xb')](_0x1e5be8,function(_0x23efd8,_0x2f8ee4){if(_0x23efd8){return _0x2cc8cb(_0x23efd8);}pm2['disconnect']();return _0x2c8288(_0x2f8ee4);});});});};exports[_0x5dd0('0xc')]=function(){return connect()['then'](function(){return new BPromise(function(_0x5a344c,_0x916ff3){return pm2[_0x5dd0('0xc')](function(_0x3d6d06){if(_0x3d6d06){return _0x916ff3(_0x3d6d06);}return _0x5a344c(_0x5dd0('0xd'));});});});};
\ No newline at end of file
+var _0xce32=['pm2','bluebird','./config','connect','connected','start','then','disconnect','stop','restart','list','describe','delete','dump','saved'];(function(_0x4f96f0,_0x52d284){var _0x185ee5=function(_0x1c4a8c){while(--_0x1c4a8c){_0x4f96f0['push'](_0x4f96f0['shift']());}};_0x185ee5(++_0x52d284);}(_0xce32,0x14a));var _0x2ce3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xce32[_0x3dd15e];return _0x231fd0;};'use strict';var pm2=require(_0x2ce3('0x0'));var BPromise=require(_0x2ce3('0x1'));var config=require(_0x2ce3('0x2'));function connect(){return new BPromise(function(_0x40736d,_0x3cf9ec){return pm2[_0x2ce3('0x3')](function(_0x1a87a5){if(_0x1a87a5){return _0x3cf9ec(_0x1a87a5);}return _0x40736d(_0x2ce3('0x4'));});});};exports[_0x2ce3('0x5')]=function(_0x2b71d8){return connect()[_0x2ce3('0x6')](function(){return new BPromise(function(_0xacc918,_0x4c6e23){return pm2[_0x2ce3('0x5')](_0x2b71d8,function(_0x80d759,_0x6a4f54){if(_0x80d759){return _0x4c6e23(_0x80d759);}pm2[_0x2ce3('0x7')]();return _0xacc918(_0x6a4f54);});});});};exports[_0x2ce3('0x8')]=function(_0x531ddf){return connect()[_0x2ce3('0x6')](function(){return new BPromise(function(_0x218e13,_0x409316){return pm2['stop'](_0x531ddf,function(_0x40696d,_0x2309e2){if(_0x40696d){return _0x409316(_0x40696d);}pm2[_0x2ce3('0x7')]();return _0x218e13(_0x2309e2);});});});};exports[_0x2ce3('0x9')]=function(_0x1df58e){return connect()[_0x2ce3('0x6')](function(){return new BPromise(function(_0x581fbf,_0x496e67){return pm2[_0x2ce3('0x9')](_0x1df58e,function(_0x455fc2,_0x5b5714){if(_0x455fc2){return _0x496e67(_0x455fc2);}pm2[_0x2ce3('0x7')]();return _0x581fbf(_0x5b5714);});});});};exports['list']=function(){return connect()[_0x2ce3('0x6')](function(){return new BPromise(function(_0x5228c2,_0x3c0746){return pm2[_0x2ce3('0xa')](function(_0x2b5c45,_0x557f84){if(_0x2b5c45){return _0x3c0746(_0x2b5c45);}pm2[_0x2ce3('0x7')]();return _0x5228c2(_0x557f84);});});});};exports[_0x2ce3('0xb')]=function(_0xb49924){return connect()[_0x2ce3('0x6')](function(){return new BPromise(function(_0x486f28,_0x132f2e){return pm2[_0x2ce3('0xb')](_0xb49924,function(_0x48fcb7,_0x79ef6f){if(_0x48fcb7){return _0x132f2e(_0x48fcb7);}pm2['disconnect']();return _0x486f28(_0x79ef6f);});});});};exports[_0x2ce3('0xc')]=function(_0x4fc5cf){return connect()[_0x2ce3('0x6')](function(){return new BPromise(function(_0x3e4b66,_0x5f2061){return pm2[_0x2ce3('0xc')](_0x4fc5cf,function(_0x29cdbf,_0x59b3fa){if(_0x29cdbf){return _0x5f2061(_0x29cdbf);}pm2[_0x2ce3('0x7')]();return _0x3e4b66(_0x59b3fa);});});});};exports['dump']=function(){return connect()['then'](function(){return new BPromise(function(_0x1de0dd,_0x5c3fc9){return pm2[_0x2ce3('0xd')](function(_0x2ef213){if(_0x2ef213){return _0x5c3fc9(_0x2ef213);}return _0x1de0dd(_0x2ce3('0xe'));});});});};
\ No newline at end of file
index 2ef095d..56a79ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x730d=['inspect','start','lodash','moment','util','../../config/environment','../../mysqldb','../logger','defaults','redis','socket.io-emitter','Setting','find','chatTimeout','findAll','lastMsgAt','minutes','length','map','info','join','update','system','YYYY-MM-DD\x20HH:mm:ss','[CHAT]\x20Sending\x20updates\x20for\x20interactions:','emit','chatInteraction:update','[CHAT]\x20Error\x20closing\x20interactions'];(function(_0x409a82,_0x25f4b1){var _0x5c3f52=function(_0x10bcb0){while(--_0x10bcb0){_0x409a82['push'](_0x409a82['shift']());}};_0x5c3f52(++_0x25f4b1);}(_0x730d,0x8e));var _0xd730=function(_0x3de8a4,_0x289a5c){_0x3de8a4=_0x3de8a4-0x0;var _0x4635cf=_0x730d[_0x3de8a4];return _0x4635cf;};'use strict';var _=require(_0xd730('0x0'));var moment=require(_0xd730('0x1'));var Redis=require('ioredis');var util=require(_0xd730('0x2'));var config=require(_0xd730('0x3'));var db=require(_0xd730('0x4'))['db'];var logger=require(_0xd730('0x5'))('schedule');config['redis']=_[_0xd730('0x6')](config[_0xd730('0x7')],{'host':'localhost','port':0x18eb});var io=require(_0xd730('0x8'))(new Redis(config[_0xd730('0x7')]));function closeInteractions(){var _0xa198d0=0x0;var _0x4fac19=[];return db[_0xd730('0x9')][_0xd730('0xa')]({'raw':!![],'attributes':['id',_0xd730('0xb')],'where':{'id':0x1}})['then'](function(_0x25adb9){_0xa198d0=_0x25adb9['chatTimeout'];if(_0xa198d0){return db['ChatInteraction'][_0xd730('0xc')]({'raw':!![],'attributes':['id',_0xd730('0xd')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()['subtract'](_0x25adb9['chatTimeout'],_0xd730('0xe'))}}});}else{return[];}})['then'](function(_0x44eb9a){if(_0x44eb9a&&_0x44eb9a[_0xd730('0xf')]){_0x4fac19=_[_0xd730('0x10')](_0x44eb9a||[],'id');logger[_0xd730('0x11')]('[CHAT]\x20Interactions\x20to\x20close:',_0x4fac19[_0xd730('0x12')]());return db['ChatInteraction'][_0xd730('0x13')]({'closeReason':_0xd730('0x14'),'disposition':'timeout','closed':!![],'closedAt':moment()['format'](_0xd730('0x15'))},{'where':{'id':_0x4fac19}});}})['then'](function(){if(_0x4fac19&&_0x4fac19[_0xd730('0xf')]){logger[_0xd730('0x11')](_0xd730('0x16'),_0x4fac19[_0xd730('0x12')]());for(var _0x8450f4=0x0;_0x8450f4<_0x4fac19['length'];_0x8450f4++){io[_0xd730('0x17')](_0xd730('0x18'),{'id':_0x4fac19[_0x8450f4],'closed':!![]});}}})['catch'](function(_0x259934){logger['error'](_0xd730('0x19'),_0x259934?util[_0xd730('0x1a')](_0x259934,{'showHidden':![],'depth':null}):'');});}exports[_0xd730('0x1b')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0xa568=['format','YYYY-MM-DD\x20HH:mm:ss','info','emit','chatInteraction:update','catch','[CHAT]\x20Error\x20closing\x20interactions','start','lodash','moment','ioredis','util','../../mysqldb','../logger','schedule','redis','defaults','find','chatTimeout','then','findAll','lastMsgAt','subtract','length','map','join','ChatInteraction','update'];(function(_0x25b022,_0x394a08){var _0x2e13a5=function(_0xe9495d){while(--_0xe9495d){_0x25b022['push'](_0x25b022['shift']());}};_0x2e13a5(++_0x394a08);}(_0xa568,0x94));var _0x8a56=function(_0x4e676e,_0x2a7c6d){_0x4e676e=_0x4e676e-0x0;var _0x336a3c=_0xa568[_0x4e676e];return _0x336a3c;};'use strict';var _=require(_0x8a56('0x0'));var moment=require(_0x8a56('0x1'));var Redis=require(_0x8a56('0x2'));var util=require(_0x8a56('0x3'));var config=require('../../config/environment');var db=require(_0x8a56('0x4'))['db'];var logger=require(_0x8a56('0x5'))(_0x8a56('0x6'));config[_0x8a56('0x7')]=_[_0x8a56('0x8')](config[_0x8a56('0x7')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x8a56('0x7')]));function closeInteractions(){var _0x43b719=0x0;var _0x34f473=[];return db['Setting'][_0x8a56('0x9')]({'raw':!![],'attributes':['id',_0x8a56('0xa')],'where':{'id':0x1}})[_0x8a56('0xb')](function(_0x4a0ddc){_0x43b719=_0x4a0ddc[_0x8a56('0xa')];if(_0x43b719){return db['ChatInteraction'][_0x8a56('0xc')]({'raw':!![],'attributes':['id',_0x8a56('0xd')],'where':{'closed':![],'lastMsgAt':{'$lt':moment()[_0x8a56('0xe')](_0x4a0ddc[_0x8a56('0xa')],'minutes')}}});}else{return[];}})[_0x8a56('0xb')](function(_0x51b552){if(_0x51b552&&_0x51b552[_0x8a56('0xf')]){_0x34f473=_[_0x8a56('0x10')](_0x51b552||[],'id');logger['info']('[CHAT]\x20Interactions\x20to\x20close:',_0x34f473[_0x8a56('0x11')]());return db[_0x8a56('0x12')][_0x8a56('0x13')]({'closeReason':'system','disposition':'timeout','closed':!![],'closedAt':moment()[_0x8a56('0x14')](_0x8a56('0x15'))},{'where':{'id':_0x34f473}});}})['then'](function(){if(_0x34f473&&_0x34f473['length']){logger[_0x8a56('0x16')]('[CHAT]\x20Sending\x20updates\x20for\x20interactions:',_0x34f473[_0x8a56('0x11')]());for(var _0x5ecfc1=0x0;_0x5ecfc1<_0x34f473[_0x8a56('0xf')];_0x5ecfc1++){io[_0x8a56('0x17')](_0x8a56('0x18'),{'id':_0x34f473[_0x5ecfc1],'closed':!![]});}}})[_0x8a56('0x19')](function(_0x3ab1b3){logger['error'](_0x8a56('0x1a'),_0x3ab1b3?util['inspect'](_0x3ab1b3,{'showHidden':![],'depth':null}):'');});}exports[_0x8a56('0x1b')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index 9e766bc..222315f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0980=['../../api/cloudProvider/cloudProvider.oauth.js','startAllRefreshIntervals','exports'];(function(_0x1d3350,_0x5d687e){var _0x14d3fe=function(_0x3ac3fa){while(--_0x3ac3fa){_0x1d3350['push'](_0x1d3350['shift']());}};_0x14d3fe(++_0x5d687e);}(_0x0980,0x6f));var _0x0098=function(_0x19950b,_0x53d0d7){_0x19950b=_0x19950b-0x0;var _0x3c6b41=_0x0980[_0x19950b];return _0x3c6b41;};'use strict';function start(){var _0x4791ca=require(_0x0098('0x0'));return _0x4791ca[_0x0098('0x1')]();}module[_0x0098('0x2')]={'intervals':{},'start':start};
\ No newline at end of file
+var _0x3e8c=['exports','../../api/cloudProvider/cloudProvider.oauth.js','startAllRefreshIntervals'];(function(_0x3349ac,_0x889beb){var _0x18d071=function(_0x2993d3){while(--_0x2993d3){_0x3349ac['push'](_0x3349ac['shift']());}};_0x18d071(++_0x889beb);}(_0x3e8c,0x73));var _0xc3e8=function(_0x1226f1,_0xc72df7){_0x1226f1=_0x1226f1-0x0;var _0x5b5e79=_0x3e8c[_0x1226f1];return _0x5b5e79;};'use strict';function start(){var _0x1c4403=require(_0xc3e8('0x0'));return _0x1c4403[_0xc3e8('0x1')]();}module[_0xc3e8('0x2')]={'intervals':{},'start':start};
\ No newline at end of file
index 89b4ed6..b559e9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa95d=['Sent','message','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','info','empty\x20file,\x20email\x20not\x20sent','request','SendMail','then','error','email\x20sent','catch','error\x20mail','data','Smtp','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit\x20null\x20or\x20undefined','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','CustomReportId','no\x20report\x20id','MailServerOut','keys','jobs','map','toString','keyBy','difference','intersection','length','stop','deleteJob','toRun','index','resolve','cron','endAt','add','start','exists','stop\x20cron','run','path','moment','cron-job-manager','bluebird','../logger','schedule','../../api/analyticCustomReport/analyticCustomReport.controller','client','http','Try\x20to\x20send\x20a\x20mail\x20to','email','MailAccount','getSmtpOptions','\x22%s\x22\x20<%s>','name','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','subtractUnit','join','../../files/reports','savename','format','%s.%s','basename','extname','existsSync','status','attachments','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','stringify'];(function(_0x545460,_0x54abfc){var _0x30c1af=function(_0x1a811e){while(--_0x1a811e){_0x545460['push'](_0x545460['shift']());}};_0x30c1af(++_0x54abfc);}(_0xa95d,0x1b3));var _0xda95=function(_0x2b9847,_0x5b5294){_0x2b9847=_0x2b9847-0x0;var _0x4e393f=_0xa95d[_0x2b9847];return _0x4e393f;};'use strict';var fs=require('fs');var util=require('util');var path=require(_0xda95('0x0'));var _=require('lodash');var moment=require(_0xda95('0x1'));var CronJobManager=require(_0xda95('0x2'));var jayson=require('jayson/promise');var BPromise=require(_0xda95('0x3'));var logger=require(_0xda95('0x4'))(_0xda95('0x5'));var db=require('../../mysqldb')['db'];var analyticCustomReportController=require(_0xda95('0x6'));var analyticDefaultReportController=require('../../api/analyticDefaultReport/analyticDefaultReport.controller');var client=jayson[_0xda95('0x7')][_0xda95('0x8')]({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x1b34fe,_0x16453e){return function(){logger['info'](_0xda95('0x9'),_0x1b34fe[_0xda95('0xa')]);var _0x23a09c=!![];var _0x402613=_0x1b34fe[_0xda95('0xb')][_0xda95('0xc')]();var _0x439035={'account':_0x402613,'message':{'from':util['format'](_0xda95('0xd'),_0x1b34fe[_0xda95('0xb')][_0xda95('0xe')],_0x1b34fe['MailAccount'][_0xda95('0xa')]||_0x1b34fe[_0xda95('0xb')]['Smtp'][_0xda95('0xf')]),'to':_0x1b34fe[_0xda95('0xa')],'cc':_0x1b34fe['cc'],'bcc':_0x1b34fe[_0xda95('0x10')],'subject':util['format'](_0xda95('0x11'),_0x16453e[_0xda95('0xe')],_0x1b34fe[_0xda95('0x12')],_0x1b34fe[_0xda95('0x13')])}};var _0x3c7d9e=path[_0xda95('0x14')](__dirname,_0xda95('0x15'));var _0x181ed2=_0x16453e[_0xda95('0x16')];var _0x6cadfb=util[_0xda95('0x17')](_0xda95('0x18'),path[_0xda95('0x19')](_0x16453e[_0xda95('0x16')],path[_0xda95('0x1a')](_0x16453e[_0xda95('0x16')])),'zip');var _0x31a24d=path['join'](_0x3c7d9e,_0x181ed2);var _0x24fb76=path[_0xda95('0x14')](_0x3c7d9e,_0x6cadfb);if(fs[_0xda95('0x1b')](_0x31a24d)){_0x16453e[_0xda95('0x1c')]='Sent';_0x439035['message'][_0xda95('0x1d')]=[{'filename':_0x181ed2,'path':_0x31a24d}];_0x439035['message'][_0xda95('0x1e')]=util['format'](_0xda95('0x1f'),JSON[_0xda95('0x20')](_0x16453e,null,0x2));}else if(fs[_0xda95('0x1b')](_0x24fb76)){_0x16453e[_0xda95('0x1c')]=_0xda95('0x21');_0x439035[_0xda95('0x22')]['attachments']=[{'filename':_0x6cadfb,'path':_0x24fb76}];}else{_0x439035[_0xda95('0x22')]['text']=_0xda95('0x23');if(!_0x1b34fe['sendIfEmpty']){_0x23a09c=![];logger[_0xda95('0x24')](_0xda95('0x25'));}}if(_0x23a09c){return client[_0xda95('0x26')](_0xda95('0x27'),_0x439035)[_0xda95('0x28')](function(_0x20b9b4){if(_0x20b9b4[_0xda95('0x29')]){return logger[_0xda95('0x29')]('error\x20mail',JSON[_0xda95('0x20')](_0x20b9b4));}return logger[_0xda95('0x24')](_0xda95('0x2a'));})[_0xda95('0x2b')](function(_0x14850f){return logger[_0xda95('0x29')](_0xda95('0x2c'),JSON[_0xda95('0x20')](_0x14850f));});}};}function handleError(){return function(_0x4ccddd){return logger['error'](JSON[_0xda95('0x20')](_0x4ccddd));};}function handleResult(_0x2f29ff){return function(_0x49c49c){logger[_0xda95('0x24')](_0xda95('0x2d'),JSON['stringify'](_0x49c49c));if(_0x2f29ff[_0xda95('0xb')]&&_0x2f29ff['MailAccount'][_0xda95('0x2e')]&&!_[_0xda95('0x2f')](_0x2f29ff[_0xda95('0xa')])){setTimeout(handleSendEmail(_0x2f29ff,_0x49c49c),0x3c*0x3e8);}};}function handleJob(_0x3e27a8){return function(){try{if(_[_0xda95('0x2f')](_0x3e27a8[_0xda95('0x12')])){return logger[_0xda95('0x24')](_0xda95('0x30'));}if(_[_0xda95('0x2f')](_0x3e27a8['subtractUnit'])){return logger[_0xda95('0x24')](_0xda95('0x31'));}var _0x3e2b5f={'startDate':moment()['subtract'](_0x3e27a8[_0xda95('0x12')],_0x3e27a8['subtractUnit'])[_0xda95('0x17')]('YYYY-MM-DD\x20HH:mm:ss'),'endDate':moment()[_0xda95('0x17')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0xda95('0x32'),'output':_0x3e27a8[_0xda95('0x33')],'name':_0x3e27a8[_0xda95('0xe')]};if(!_['isNil'](_0x3e27a8[_0xda95('0x34')])){logger['info'](_0xda95('0x35'),_0x3e27a8[_0xda95('0x34')]);return analyticDefaultReportController[_0xda95('0x36')]({'id':_0x3e27a8[_0xda95('0x34')]},_0x3e2b5f)['then'](handleResult(_0x3e27a8))[_0xda95('0x2b')](handleError());}if(!_['isNil'](_0x3e27a8['CustomReportId'])){logger[_0xda95('0x24')]('exec\x20custom\x20report\x20id:%s',_0x3e27a8[_0xda95('0x37')]);return analyticCustomReportController[_0xda95('0x36')]({'id':_0x3e27a8[_0xda95('0x37')]},_0x3e2b5f)[_0xda95('0x28')](handleResult(_0x3e27a8))[_0xda95('0x2b')](handleError());}}catch(_0x209afb){logger[_0xda95('0x29')](JSON[_0xda95('0x20')](_0x209afb));}return logger[_0xda95('0x24')](_0xda95('0x38'));};}function getJobs(_0x438334){var _0x6ba455={};if(_0x438334){_0x6ba455['id']=_0x438334;}return db['Schedule']['findAll']({'where':_0x6ba455,'include':[{'model':db[_0xda95('0xb')],'attributes':['id','name',_0xda95('0xa')],'include':[{'model':db[_0xda95('0x39')],'as':_0xda95('0x2e'),'include':[{'model':db['CloudProvider'],'as':'CloudProvider'}]}]}]})['then'](function(_0xb9fe7e){var _0x21b512=_[_0xda95('0x3a')](manager[_0xda95('0x3b')]);var _0x571a32=_[_0xda95('0x3c')](_0xb9fe7e,function(_0x54df5c){return _0x54df5c['id'][_0xda95('0x3d')]();});var _0x23cce2=_[_0xda95('0x3e')](_0xb9fe7e,function(_0x59b225){return _0x59b225['id'][_0xda95('0x3d')]();});var _0x9619a1=_0x438334?_0x571a32:_[_0xda95('0x3f')](_0x571a32,_0x21b512);var _0x49aa19=_[_0xda95('0x40')](_0x571a32,_0x21b512);var _0x3bbe4c=_[_0xda95('0x3f')](_0x21b512,_0x571a32);var _0x4e9df1;var _0x445fb9;for(_0x4e9df1=0x0;_0x4e9df1<_0x3bbe4c[_0xda95('0x41')]&&!_0x438334;_0x4e9df1+=0x1){_0x445fb9=_0x3bbe4c[_0x4e9df1]['toString']();if(manager['exists'](_0x445fb9)){manager[_0xda95('0x42')](_0x445fb9);manager[_0xda95('0x43')](_0x445fb9);logger['info']('delete\x20cron',_0x445fb9);}}logger[_0xda95('0x24')](_0xda95('0x44'),JSON[_0xda95('0x20')](_0x9619a1));for(_0x4e9df1=0x0;_0x4e9df1<_0x9619a1['length'];_0x4e9df1+=0x1){_0x445fb9=_0x9619a1[_0x4e9df1][_0xda95('0x3d')]();logger[_0xda95('0x24')](_0xda95('0x45'),_0x445fb9);if(_0x438334){logger['info']('my\x20id',_0x438334);logger[_0xda95('0x24')](JSON['stringify'](_0x23cce2[_0x445fb9]));BPromise[_0xda95('0x46')]()[_0xda95('0x28')](handleJob(_0x23cce2[_0x445fb9]));logger['info']('run\x20job',_0x23cce2[_0x445fb9]['name'],_0x23cce2[_0x445fb9][_0xda95('0x47')]);}else if(_0x23cce2[_0x445fb9][_0xda95('0x47')]&&_0x23cce2[_0x445fb9]['active']&&moment()['isBetween'](_0x23cce2[_0x445fb9]['startAt'],_0x23cce2[_0x445fb9][_0xda95('0x48')])){manager[_0xda95('0x49')](_0x445fb9,_0x23cce2[_0x445fb9]['cron'],handleJob(_0x23cce2[_0x445fb9]));manager[_0xda95('0x4a')](_0x445fb9);logger[_0xda95('0x24')]('add\x20cron',_0x23cce2[_0x445fb9][_0xda95('0xe')],_0x23cce2[_0x445fb9][_0xda95('0x47')]);}else if(manager[_0xda95('0x4b')](_0x445fb9)){manager[_0xda95('0x42')](_0x445fb9);manager['deleteJob'](_0x445fb9);logger[_0xda95('0x24')](_0xda95('0x4c'),_0x23cce2[_0x445fb9][_0xda95('0xe')],_0x23cce2[_0x445fb9][_0xda95('0x47')]);}}for(_0x4e9df1=0x0,_0x445fb9;_0x4e9df1<_0x49aa19[_0xda95('0x41')]&&!_0x438334;_0x4e9df1+=0x1){_0x445fb9=_0x49aa19[_0x4e9df1][_0xda95('0x3d')]();if(manager[_0xda95('0x4b')](_0x445fb9)){if(_0x23cce2[_0x445fb9][_0xda95('0x47')]&&_0x23cce2[_0x445fb9]['active']&&moment()['isBetween'](_0x23cce2[_0x445fb9]['startAt'],_0x23cce2[_0x445fb9][_0xda95('0x48')])){manager['update'](_0x445fb9,_0x23cce2[_0x445fb9]['cron'],handleJob(_0x23cce2[_0x445fb9]));logger[_0xda95('0x24')]('update\x20cron',_0x23cce2[_0x445fb9]['name'],_0x23cce2[_0x445fb9]['cron']);}else{manager[_0xda95('0x42')](_0x445fb9);manager['deleteJob'](_0x445fb9);logger[_0xda95('0x24')](_0xda95('0x4c'),_0x23cce2[_0x445fb9][_0xda95('0xe')],_0x23cce2[_0x445fb9]['cron']);}}}})[_0xda95('0x2b')](function(_0x174853){logger['error'](JSON[_0xda95('0x20')](_0x174853));});}exports[_0xda95('0x4d')]=function(_0x3ec4da){return getJobs(_0x3ec4da);};exports[_0xda95('0x4a')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
+var _0x5b66=['catch','CustomReportId','no\x20report\x20id','Schedule','CloudProvider','keys','jobs','map','toString','keyBy','difference','exists','stop','deleteJob','delete\x20cron','toRun','length','index','my\x20id','resolve','run\x20job','cron','active','isBetween','start','add\x20cron','startAt','endAt','update','update\x20cron','stop\x20cron','run','util','lodash','moment','jayson/promise','bluebird','../logger','../../mysqldb','../../api/analyticCustomReport/analyticCustomReport.controller','../../api/analyticDefaultReport/analyticDefaultReport.controller','client','info','Try\x20to\x20send\x20a\x20mail\x20to','MailAccount','getSmtpOptions','format','\x22%s\x22\x20<%s>','name','email','user','bcc','Report\x20%s\x20last\x20%s\x20%s','subtractNumber','../../files/reports','%s.%s','basename','extname','savename','zip','join','status','Sent','message','attachments','text','Info\x20report:\x0a%s\x0aPlease\x20see\x20the\x20attachments\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20it.\x0a\x0a','existsSync','Report\x20empty\x0aThis\x20is\x20an\x20automatically\x20generated\x20email\x20–\x20please\x20do\x20not\x20reply\x20to\x20this\x20email.\x0a\x0a','sendIfEmpty','empty\x20file,\x20email\x20not\x20sent','request','SendMail','error','error\x20mail','email\x20sent','stringify','data','Smtp','isNil','subtractNumber\x20null\x20or\x20undefined','subtractUnit','subtractUnit\x20null\x20or\x20undefined','subtract','YYYY-MM-DD\x20HH:mm:ss','scheduled','output','DefaultReportId','exec\x20defaul\x20report\x20id:%s','runReport','then'];(function(_0x35f83e,_0x30ec55){var _0x249b05=function(_0x2c2fcc){while(--_0x2c2fcc){_0x35f83e['push'](_0x35f83e['shift']());}};_0x249b05(++_0x30ec55);}(_0x5b66,0x7b));var _0x65b6=function(_0x58f439,_0x46e76d){_0x58f439=_0x58f439-0x0;var _0x359f1a=_0x5b66[_0x58f439];return _0x359f1a;};'use strict';var fs=require('fs');var util=require(_0x65b6('0x0'));var path=require('path');var _=require(_0x65b6('0x1'));var moment=require(_0x65b6('0x2'));var CronJobManager=require('cron-job-manager');var jayson=require(_0x65b6('0x3'));var BPromise=require(_0x65b6('0x4'));var logger=require(_0x65b6('0x5'))('schedule');var db=require(_0x65b6('0x6'))['db'];var analyticCustomReportController=require(_0x65b6('0x7'));var analyticDefaultReportController=require(_0x65b6('0x8'));var client=jayson[_0x65b6('0x9')]['http']({'port':0x232b});var manager=new CronJobManager();function handleSendEmail(_0x1458ef,_0x2190f7){return function(){logger[_0x65b6('0xa')](_0x65b6('0xb'),_0x1458ef['email']);var _0xf11dca=!![];var _0x40a0bd=_0x1458ef[_0x65b6('0xc')][_0x65b6('0xd')]();var _0x5bef1e={'account':_0x40a0bd,'message':{'from':util[_0x65b6('0xe')](_0x65b6('0xf'),_0x1458ef['MailAccount'][_0x65b6('0x10')],_0x1458ef[_0x65b6('0xc')][_0x65b6('0x11')]||_0x1458ef[_0x65b6('0xc')]['Smtp'][_0x65b6('0x12')]),'to':_0x1458ef[_0x65b6('0x11')],'cc':_0x1458ef['cc'],'bcc':_0x1458ef[_0x65b6('0x13')],'subject':util[_0x65b6('0xe')](_0x65b6('0x14'),_0x2190f7['name'],_0x1458ef[_0x65b6('0x15')],_0x1458ef['subtractUnit'])}};var _0x52b870=path['join'](__dirname,_0x65b6('0x16'));var _0x4b3a8d=_0x2190f7['savename'];var _0x5dce84=util[_0x65b6('0xe')](_0x65b6('0x17'),path[_0x65b6('0x18')](_0x2190f7['savename'],path[_0x65b6('0x19')](_0x2190f7[_0x65b6('0x1a')])),_0x65b6('0x1b'));var _0x457641=path['join'](_0x52b870,_0x4b3a8d);var _0x58d315=path[_0x65b6('0x1c')](_0x52b870,_0x5dce84);if(fs['existsSync'](_0x457641)){_0x2190f7[_0x65b6('0x1d')]=_0x65b6('0x1e');_0x5bef1e[_0x65b6('0x1f')][_0x65b6('0x20')]=[{'filename':_0x4b3a8d,'path':_0x457641}];_0x5bef1e[_0x65b6('0x1f')][_0x65b6('0x21')]=util['format'](_0x65b6('0x22'),JSON['stringify'](_0x2190f7,null,0x2));}else if(fs[_0x65b6('0x23')](_0x58d315)){_0x2190f7[_0x65b6('0x1d')]='Sent';_0x5bef1e[_0x65b6('0x1f')]['attachments']=[{'filename':_0x5dce84,'path':_0x58d315}];}else{_0x5bef1e['message'][_0x65b6('0x21')]=_0x65b6('0x24');if(!_0x1458ef[_0x65b6('0x25')]){_0xf11dca=![];logger[_0x65b6('0xa')](_0x65b6('0x26'));}}if(_0xf11dca){return client[_0x65b6('0x27')](_0x65b6('0x28'),_0x5bef1e)['then'](function(_0x2128d9){if(_0x2128d9[_0x65b6('0x29')]){return logger['error'](_0x65b6('0x2a'),JSON['stringify'](_0x2128d9));}return logger[_0x65b6('0xa')](_0x65b6('0x2b'));})['catch'](function(_0x5a3ea2){return logger[_0x65b6('0x29')]('error\x20mail',JSON[_0x65b6('0x2c')](_0x5a3ea2));});}};}function handleError(){return function(_0x2c0a33){return logger[_0x65b6('0x29')](JSON['stringify'](_0x2c0a33));};}function handleResult(_0xf58405){return function(_0xc1ae0a){logger[_0x65b6('0xa')](_0x65b6('0x2d'),JSON[_0x65b6('0x2c')](_0xc1ae0a));if(_0xf58405['MailAccount']&&_0xf58405[_0x65b6('0xc')][_0x65b6('0x2e')]&&!_[_0x65b6('0x2f')](_0xf58405['email'])){setTimeout(handleSendEmail(_0xf58405,_0xc1ae0a),0x3c*0x3e8);}};}function handleJob(_0x49212f){return function(){try{if(_[_0x65b6('0x2f')](_0x49212f[_0x65b6('0x15')])){return logger[_0x65b6('0xa')](_0x65b6('0x30'));}if(_[_0x65b6('0x2f')](_0x49212f[_0x65b6('0x31')])){return logger[_0x65b6('0xa')](_0x65b6('0x32'));}var _0x4a8c45={'startDate':moment()[_0x65b6('0x33')](_0x49212f[_0x65b6('0x15')],_0x49212f[_0x65b6('0x31')])[_0x65b6('0xe')](_0x65b6('0x34')),'endDate':moment()[_0x65b6('0xe')]('YYYY-MM-DD\x20HH:mm:ss'),'type':_0x65b6('0x35'),'output':_0x49212f[_0x65b6('0x36')],'name':_0x49212f[_0x65b6('0x10')]};if(!_[_0x65b6('0x2f')](_0x49212f[_0x65b6('0x37')])){logger[_0x65b6('0xa')](_0x65b6('0x38'),_0x49212f['DefaultReportId']);return analyticDefaultReportController[_0x65b6('0x39')]({'id':_0x49212f[_0x65b6('0x37')]},_0x4a8c45)[_0x65b6('0x3a')](handleResult(_0x49212f))[_0x65b6('0x3b')](handleError());}if(!_[_0x65b6('0x2f')](_0x49212f[_0x65b6('0x3c')])){logger[_0x65b6('0xa')]('exec\x20custom\x20report\x20id:%s',_0x49212f['CustomReportId']);return analyticCustomReportController[_0x65b6('0x39')]({'id':_0x49212f['CustomReportId']},_0x4a8c45)[_0x65b6('0x3a')](handleResult(_0x49212f))[_0x65b6('0x3b')](handleError());}}catch(_0x455d45){logger[_0x65b6('0x29')](JSON[_0x65b6('0x2c')](_0x455d45));}return logger[_0x65b6('0xa')](_0x65b6('0x3d'));};}function getJobs(_0xfdcf83){var _0x5a8060={};if(_0xfdcf83){_0x5a8060['id']=_0xfdcf83;}return db[_0x65b6('0x3e')]['findAll']({'where':_0x5a8060,'include':[{'model':db[_0x65b6('0xc')],'attributes':['id','name',_0x65b6('0x11')],'include':[{'model':db['MailServerOut'],'as':'Smtp','include':[{'model':db[_0x65b6('0x3f')],'as':_0x65b6('0x3f')}]}]}]})[_0x65b6('0x3a')](function(_0xc80ba0){var _0x4517c6=_[_0x65b6('0x40')](manager[_0x65b6('0x41')]);var _0xb51a25=_[_0x65b6('0x42')](_0xc80ba0,function(_0x5d2239){return _0x5d2239['id'][_0x65b6('0x43')]();});var _0x2ac5f2=_[_0x65b6('0x44')](_0xc80ba0,function(_0x12ec9b){return _0x12ec9b['id'][_0x65b6('0x43')]();});var _0x19f4d5=_0xfdcf83?_0xb51a25:_[_0x65b6('0x45')](_0xb51a25,_0x4517c6);var _0x366b0d=_['intersection'](_0xb51a25,_0x4517c6);var _0x12d9b0=_[_0x65b6('0x45')](_0x4517c6,_0xb51a25);var _0x37ae80;var _0x57f9b8;for(_0x37ae80=0x0;_0x37ae80<_0x12d9b0['length']&&!_0xfdcf83;_0x37ae80+=0x1){_0x57f9b8=_0x12d9b0[_0x37ae80][_0x65b6('0x43')]();if(manager[_0x65b6('0x46')](_0x57f9b8)){manager[_0x65b6('0x47')](_0x57f9b8);manager[_0x65b6('0x48')](_0x57f9b8);logger[_0x65b6('0xa')](_0x65b6('0x49'),_0x57f9b8);}}logger['info'](_0x65b6('0x4a'),JSON[_0x65b6('0x2c')](_0x19f4d5));for(_0x37ae80=0x0;_0x37ae80<_0x19f4d5[_0x65b6('0x4b')];_0x37ae80+=0x1){_0x57f9b8=_0x19f4d5[_0x37ae80][_0x65b6('0x43')]();logger[_0x65b6('0xa')](_0x65b6('0x4c'),_0x57f9b8);if(_0xfdcf83){logger[_0x65b6('0xa')](_0x65b6('0x4d'),_0xfdcf83);logger['info'](JSON[_0x65b6('0x2c')](_0x2ac5f2[_0x57f9b8]));BPromise[_0x65b6('0x4e')]()[_0x65b6('0x3a')](handleJob(_0x2ac5f2[_0x57f9b8]));logger[_0x65b6('0xa')](_0x65b6('0x4f'),_0x2ac5f2[_0x57f9b8][_0x65b6('0x10')],_0x2ac5f2[_0x57f9b8][_0x65b6('0x50')]);}else if(_0x2ac5f2[_0x57f9b8][_0x65b6('0x50')]&&_0x2ac5f2[_0x57f9b8][_0x65b6('0x51')]&&moment()[_0x65b6('0x52')](_0x2ac5f2[_0x57f9b8]['startAt'],_0x2ac5f2[_0x57f9b8]['endAt'])){manager['add'](_0x57f9b8,_0x2ac5f2[_0x57f9b8][_0x65b6('0x50')],handleJob(_0x2ac5f2[_0x57f9b8]));manager[_0x65b6('0x53')](_0x57f9b8);logger[_0x65b6('0xa')](_0x65b6('0x54'),_0x2ac5f2[_0x57f9b8][_0x65b6('0x10')],_0x2ac5f2[_0x57f9b8][_0x65b6('0x50')]);}else if(manager[_0x65b6('0x46')](_0x57f9b8)){manager['stop'](_0x57f9b8);manager[_0x65b6('0x48')](_0x57f9b8);logger[_0x65b6('0xa')]('stop\x20cron',_0x2ac5f2[_0x57f9b8][_0x65b6('0x10')],_0x2ac5f2[_0x57f9b8]['cron']);}}for(_0x37ae80=0x0,_0x57f9b8;_0x37ae80<_0x366b0d['length']&&!_0xfdcf83;_0x37ae80+=0x1){_0x57f9b8=_0x366b0d[_0x37ae80][_0x65b6('0x43')]();if(manager[_0x65b6('0x46')](_0x57f9b8)){if(_0x2ac5f2[_0x57f9b8][_0x65b6('0x50')]&&_0x2ac5f2[_0x57f9b8][_0x65b6('0x51')]&&moment()[_0x65b6('0x52')](_0x2ac5f2[_0x57f9b8][_0x65b6('0x55')],_0x2ac5f2[_0x57f9b8][_0x65b6('0x56')])){manager[_0x65b6('0x57')](_0x57f9b8,_0x2ac5f2[_0x57f9b8][_0x65b6('0x50')],handleJob(_0x2ac5f2[_0x57f9b8]));logger[_0x65b6('0xa')](_0x65b6('0x58'),_0x2ac5f2[_0x57f9b8][_0x65b6('0x10')],_0x2ac5f2[_0x57f9b8][_0x65b6('0x50')]);}else{manager['stop'](_0x57f9b8);manager[_0x65b6('0x48')](_0x57f9b8);logger[_0x65b6('0xa')](_0x65b6('0x59'),_0x2ac5f2[_0x57f9b8][_0x65b6('0x10')],_0x2ac5f2[_0x57f9b8][_0x65b6('0x50')]);}}}})[_0x65b6('0x3b')](function(_0x5d0c76){logger[_0x65b6('0x29')](JSON[_0x65b6('0x2c')](_0x5d0c76));});}exports[_0x65b6('0x5a')]=function(_0x28a590){return getJobs(_0x28a590);};exports[_0x65b6('0x53')]=function(){setInterval(function(){return getJobs();},0x3c*0x3e8);return getJobs();};
\ No newline at end of file
index a29844a..556799d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7292=['TranscriptionJobStatus','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','update','sentiment','sentimentAccountId','language','bucket','Sequelize','ValidationError','Transcript\x20not\x20available','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','sentimentRegion','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Sentiment','SentimentScore','Negative','Neutral','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','FAILED','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','tempSentiment','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','Positive','Mixed','name','SequelizeValidationError','[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','IN_PROGRESS','Setting','Settings\x20not\x20available','transcribe','transcribeAccountId','transcribeRegion','Transcribe\x20not\x20configured','forEach','all','catch','error','inspect','lodash','aws-sdk','request-promise','util','bluebird','../../mysqldb','../../config/logger','TranscribeService','getTranscriptionJob','Comprehend','detectSentiment','substring','info','format','[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)','transcribeName','data1','data2','then','TranscriptionJob','fileText'];(function(_0x3b05b3,_0x381ef8){var _0x4f8256=function(_0x4ada06){while(--_0x4ada06){_0x3b05b3['push'](_0x3b05b3['shift']());}};_0x4f8256(++_0x381ef8);}(_0x7292,0x107));var _0x2729=function(_0x4d8ed9,_0x2ae284){_0x4d8ed9=_0x4d8ed9-0x0;var _0x1e2140=_0x7292[_0x4d8ed9];return _0x1e2140;};var _=require(_0x2729('0x0'));var AWS=require(_0x2729('0x1'));var rp=require(_0x2729('0x2'));var util=require(_0x2729('0x3'));var BPromise=require(_0x2729('0x4'));var db=require(_0x2729('0x5'))['db'];var logger=require(_0x2729('0x6'))('transcribe');function getTranscriptionJob(_0x400b66,_0x45977a,_0x1ca35f,_0x27cfe5){return new Promise(function(_0x26a3dc,_0x176a7c){var _0x3562b9=new AWS[(_0x2729('0x7'))]({'accessKeyId':_0x45977a,'secretAccessKey':_0x400b66,'region':_0x1ca35f});_0x3562b9[_0x2729('0x8')]({'TranscriptionJobName':_0x27cfe5},function(_0x4c0952,_0x5f4f01){if(_0x4c0952){return _0x176a7c(_0x4c0952);}else{return _0x26a3dc(_0x5f4f01);}});});}function sentiment(_0x1ea70b,_0x20d46b,_0x47be81,_0x39fcbf,_0x2562a5){return new Promise(function(_0x412ade,_0x1d3cd9){var _0x13de9a=new AWS[(_0x2729('0x9'))]({'accessKeyId':_0x20d46b,'secretAccessKey':_0x1ea70b,'region':_0x47be81});_0x13de9a[_0x2729('0xa')]({'Text':_0x39fcbf,'LanguageCode':_0x2562a5[_0x2729('0xb')](0x0,0x2)},function(_0x4376e7,_0x4cb389){if(_0x4376e7){return _0x1d3cd9(_0x4376e7);}else{return _0x412ade(_0x4cb389);}});});}function checkTranscribeJob(_0xaa930a,_0x37815a,_0x1449f9){var _0x5ae728;return new BPromise(function(_0x7c59b0,_0x15f590){logger[_0x2729('0xc')](util[_0x2729('0xd')](_0x2729('0xe'),_0xaa930a['id'],_0xaa930a[_0x2729('0xf')]));return getTranscriptionJob(_0x1449f9[_0x2729('0x10')],_0x1449f9[_0x2729('0x11')],_0x37815a['transcribeRegion'],_0xaa930a[_0x2729('0xf')])[_0x2729('0x12')](function(_0x235e71){logger['info'](util[_0x2729('0xd')]('[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s',_0xaa930a['id'],_0xaa930a['transcribeName'],_0x235e71[_0x2729('0x13')]['TranscriptionJobStatus']));if(!_0xaa930a[_0x2729('0x14')]){switch(_0x235e71['TranscriptionJob'][_0x2729('0x15')]){case'COMPLETED':var _0x58f312={'transcribeStatus':_0x235e71[_0x2729('0x13')][_0x2729('0x15')],'fileUri':_0x235e71[_0x2729('0x13')][_0x2729('0x16')][_0x2729('0x17')]};logger[_0x2729('0xc')](util[_0x2729('0xd')](_0x2729('0x18'),_0xaa930a['id']));return rp({'uri':_0x235e71['TranscriptionJob'][_0x2729('0x16')][_0x2729('0x17')],'json':!![]})[_0x2729('0x12')](function(_0x135186){logger['info'](util[_0x2729('0xd')](_0x2729('0x19'),_0xaa930a['id']));if(_0x135186&&_0x135186[_0x2729('0x1a')]&&_0x135186['results']['transcripts']&&_0x135186[_0x2729('0x1a')][_0x2729('0x1b')]['length']){_0x58f312[_0x2729('0x14')]='';for(var _0x72bdd2=0x0;_0x72bdd2<_0x135186[_0x2729('0x1a')][_0x2729('0x1b')][_0x2729('0x1c')];_0x72bdd2++){_0x58f312[_0x2729('0x14')]+=_0x135186[_0x2729('0x1a')][_0x2729('0x1b')][_0x72bdd2]['transcript']+'';}}return _0xaa930a[_0x2729('0x1d')](_0x58f312);})[_0x2729('0x12')](function(){logger['info'](util[_0x2729('0xd')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0xaa930a['id']));if(!_0xaa930a['tempSentiment']){throw new db['Sequelize']['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x37815a[_0x2729('0x1e')]||!_0x37815a[_0x2729('0x1f')]||!_0x37815a['sentimentRegion']||!_0x37815a[_0x2729('0x20')]||!_0x37815a[_0x2729('0x21')]){throw new db[(_0x2729('0x22'))][(_0x2729('0x23'))]('Sentiment\x20Analysis\x20not\x20configured');}if(!_0x58f312[_0x2729('0x14')]){throw new Error(_0x2729('0x24'));}if(_0x37815a[_0x2729('0x1f')]===_0x1449f9['id']){return _0x1449f9;}else{return db['CloudProvider']['findOne']({'where':{'id':_settings[_0x2729('0x1f')]}});}})[_0x2729('0x12')](function(_0x390145){if(!_0x390145){throw new db[(_0x2729('0x22'))]['ValidationError'](_0x2729('0x25'));}if(!_0x390145[_0x2729('0x10')]||!_0x390145['data2']){throw new db[(_0x2729('0x22'))][(_0x2729('0x23'))](_0x2729('0x26'));}_0x5ae728=_0x390145;logger[_0x2729('0xc')](util[_0x2729('0xd')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0xaa930a['id']));return sentiment(_0x5ae728[_0x2729('0x10')],_0x5ae728[_0x2729('0x11')],_0x37815a[_0x2729('0x27')],_0x58f312[_0x2729('0x14')],_0x37815a[_0x2729('0x20')]);})[_0x2729('0x12')](function(_0x4524ac){logger['info'](util[_0x2729('0xd')](_0x2729('0x28'),_0xaa930a['id']));return _0xaa930a['update']({'sentiment':_0x4524ac[_0x2729('0x29')],'sPositive':_0x4524ac['SentimentScore']['Positive'],'sNegative':_0x4524ac[_0x2729('0x2a')][_0x2729('0x2b')],'sMixed':_0x4524ac[_0x2729('0x2a')]['Mixed'],'sNeutral':_0x4524ac[_0x2729('0x2a')][_0x2729('0x2c')]});})['then'](function(){logger[_0x2729('0xc')](util[_0x2729('0xd')](_0x2729('0x2d'),_0xaa930a['id']));_0x7c59b0();});case _0x2729('0x2e'):return _0xaa930a[_0x2729('0x1d')]({'transcribeStatus':_0x2729('0x2e'),'failureReason':_0x235e71['TranscriptionJob']['FailureReason']})[_0x2729('0x12')](function(){logger['info'](util[_0x2729('0xd')]('[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated',_0xaa930a['id']));_0x7c59b0();});default:logger[_0x2729('0xc')](util['format'](_0x2729('0x2f'),_0xaa930a['id']));break;}}else{return BPromise['resolve']()[_0x2729('0x12')](function(){if(!_0xaa930a[_0x2729('0x30')]){throw new db[(_0x2729('0x22'))]['ValidationError']('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x37815a[_0x2729('0x1e')]||!_0x37815a['sentimentAccountId']||!_0x37815a[_0x2729('0x27')]||!_0x37815a['language']||!_0x37815a['bucket']){throw new db[(_0x2729('0x22'))]['ValidationError'](_0x2729('0x31'));}if(!_0xaa930a['fileText']){throw new Error(_0x2729('0x24'));}if(_0x37815a[_0x2729('0x1f')]===_0x1449f9['id']){return _0x1449f9;}else{return db[_0x2729('0x32')][_0x2729('0x33')]({'where':{'id':_settings[_0x2729('0x1f')]}});}})['then'](function(_0x43e0fb){if(!_0x43e0fb){throw new db[(_0x2729('0x22'))]['ValidationError']('Cloud\x20Provider\x20not\x20available');}if(!_0x43e0fb[_0x2729('0x10')]||!_0x43e0fb[_0x2729('0x11')]){throw new db[(_0x2729('0x22'))][(_0x2729('0x23'))](_0x2729('0x26'));}_0x5ae728=_0x43e0fb;logger[_0x2729('0xc')](util[_0x2729('0xd')](_0x2729('0x34'),_0xaa930a['id']));return sentiment(_0x5ae728[_0x2729('0x10')],_0x5ae728[_0x2729('0x11')],_0x37815a[_0x2729('0x27')],_0xaa930a[_0x2729('0x14')],_0x37815a[_0x2729('0x20')]);})[_0x2729('0x12')](function(_0x5ceb88){logger[_0x2729('0xc')](util[_0x2729('0xd')](_0x2729('0x28'),_0xaa930a['id']));return _0xaa930a[_0x2729('0x1d')]({'sentiment':_0x5ceb88['Sentiment'],'sPositive':_0x5ceb88[_0x2729('0x2a')][_0x2729('0x35')],'sNegative':_0x5ceb88[_0x2729('0x2a')]['Negative'],'sMixed':_0x5ceb88['SentimentScore'][_0x2729('0x36')],'sNeutral':_0x5ceb88[_0x2729('0x2a')]['Neutral'],'transcribeStatus':'COMPLETED'});})[_0x2729('0x12')](function(){logger[_0x2729('0xc')](util[_0x2729('0xd')](_0x2729('0x2d'),_0xaa930a['id']));_0x7c59b0();});}})['catch'](function(_0x2d78d2){if(_0x2d78d2){if(!_0x2d78d2[_0x2729('0x37')]||_0x2d78d2['name']!==_0x2729('0x38')){logger['error'](util[_0x2729('0xd')](_0x2729('0x39'),_0xaa930a['id']),util['inspect'](_0x2d78d2,{'showHidden':![],'depth':null}));}}_0x7c59b0();});});}function checkTranscribe(){var _0xced9f6;var _0x4aa8cf;var _0x5d5c9d;return db[_0x2729('0x3a')]['findAll']({'where':{'transcribeStatus':_0x2729('0x3b')}})[_0x2729('0x12')](function(_0x3059fe){if(!_0x3059fe||!_0x3059fe[_0x2729('0x1c')]){throw new db[(_0x2729('0x22'))][(_0x2729('0x23'))]('No\x20transcribe\x20job\x20to\x20check');}_0xced9f6=_0x3059fe;return db[_0x2729('0x3c')]['findOne']({'where':{'id':0x1}});})[_0x2729('0x12')](function(_0x215494){if(!_0x215494){throw new db[(_0x2729('0x22'))]['ValidationError'](_0x2729('0x3d'));}_0x4aa8cf=_0x215494;if(!_0x4aa8cf[_0x2729('0x3e')]||!_0x4aa8cf[_0x2729('0x3f')]||!_0x4aa8cf[_0x2729('0x40')]||!_0x4aa8cf[_0x2729('0x20')]||!_0x4aa8cf[_0x2729('0x21')]){throw new db[(_0x2729('0x22'))]['ValidationError'](_0x2729('0x41'));}return db['CloudProvider'][_0x2729('0x33')]({'where':{'id':_0x4aa8cf['transcribeAccountId']}});})['then'](function(_0x4f7b04){if(!_0x4f7b04){throw new db[(_0x2729('0x22'))][(_0x2729('0x23'))](_0x2729('0x25'));}if(!_0x4f7b04[_0x2729('0x10')]||!_0x4f7b04[_0x2729('0x11')]){throw new db[(_0x2729('0x22'))][(_0x2729('0x23'))](_0x2729('0x26'));}_0x5d5c9d=_0x4f7b04;var _0x598d68=[];_0xced9f6[_0x2729('0x42')](function(_0x2ae039){_0x598d68['push'](checkTranscribeJob(_0x2ae039,_0x4aa8cf,_0x5d5c9d));});return BPromise[_0x2729('0x43')](_0x598d68);})[_0x2729('0x44')](function(_0x327291){if(_0x327291){if(!_0x327291[_0x2729('0x37')]||_0x327291[_0x2729('0x37')]!=='SequelizeValidationError'){logger[_0x2729('0x45')](util[_0x2729('0x46')](_0x327291,{'showHidden':![],'depth':null}));}}});}exports['start']=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
+var _0x36ee=['[RECORDING:%d]\x20Error\x20running\x20Transcribe\x20&\x20Sentiment\x20Analysis','VoiceRecording','findAll','IN_PROGRESS','No\x20transcribe\x20job\x20to\x20check','Setting','transcribeAccountId','Transcribe\x20not\x20configured','all','catch','error','inspect','start','request-promise','bluebird','../../mysqldb','../../config/logger','transcribe','TranscribeService','Comprehend','detectSentiment','substring','format','data1','data2','transcribeRegion','transcribeName','then','info','[RECORDING:%d]\x20Status\x20of\x20transcript\x20job\x20(%s):\x20%s','TranscriptionJobStatus','fileText','TranscriptionJob','Transcript','TranscriptFileUri','[RECORDING:%d]\x20Get\x20transcript','[RECORDING:%d]\x20Transcript\x20downloaded','results','transcripts','length','transcript','update','[RECORDING:%d]\x20Voice\x20Recording\x20entry\x20updated','Sequelize','Sentiment\x20Analysis\x20not\x20requested','sentimentAccountId','ValidationError','Sentiment\x20Analysis\x20not\x20configured','CloudProvider','findOne','Cloud\x20Provider\x20not\x20available','Cloud\x20Provider\x20not\x20configured','[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis','sentimentRegion','Sentiment','SentimentScore','Positive','Mixed','Neutral','FAILED','FailureReason','[RECORDING:%d]\x20Transcript\x20Job\x20status\x20not\x20managed','resolve','tempSentiment','sentiment','language','bucket','Transcript\x20not\x20available','[RECORDING:%d]\x20Sentiment\x20Analysis\x20available','Negative','COMPLETED','name','SequelizeValidationError'];(function(_0x211307,_0x588bbd){var _0xc38a90=function(_0x5b55fa){while(--_0x5b55fa){_0x211307['push'](_0x211307['shift']());}};_0xc38a90(++_0x588bbd);}(_0x36ee,0xe8));var _0xe36e=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x36ee[_0x501510];return _0x1e6ee5;};var _=require('lodash');var AWS=require('aws-sdk');var rp=require(_0xe36e('0x0'));var util=require('util');var BPromise=require(_0xe36e('0x1'));var db=require(_0xe36e('0x2'))['db'];var logger=require(_0xe36e('0x3'))(_0xe36e('0x4'));function getTranscriptionJob(_0x567a84,_0x1118af,_0x29e692,_0x3f29e1){return new Promise(function(_0x25a07d,_0x190404){var _0x21be0b=new AWS[(_0xe36e('0x5'))]({'accessKeyId':_0x1118af,'secretAccessKey':_0x567a84,'region':_0x29e692});_0x21be0b['getTranscriptionJob']({'TranscriptionJobName':_0x3f29e1},function(_0x74b4b7,_0x4aebdd){if(_0x74b4b7){return _0x190404(_0x74b4b7);}else{return _0x25a07d(_0x4aebdd);}});});}function sentiment(_0x2236e9,_0x123c16,_0x46f239,_0x47ce3a,_0xf119e4){return new Promise(function(_0x48981b,_0x2e968d){var _0x2133cf=new AWS[(_0xe36e('0x6'))]({'accessKeyId':_0x123c16,'secretAccessKey':_0x2236e9,'region':_0x46f239});_0x2133cf[_0xe36e('0x7')]({'Text':_0x47ce3a,'LanguageCode':_0xf119e4[_0xe36e('0x8')](0x0,0x2)},function(_0x1f7233,_0x3f6d7f){if(_0x1f7233){return _0x2e968d(_0x1f7233);}else{return _0x48981b(_0x3f6d7f);}});});}function checkTranscribeJob(_0x265473,_0x4fbdb2,_0x32981d){var _0x27841e;return new BPromise(function(_0x23abfb,_0x1fdea2){logger['info'](util[_0xe36e('0x9')]('[RECORDING:%d]\x20Get\x20status\x20for\x20transcript\x20job\x20(%s)',_0x265473['id'],_0x265473['transcribeName']));return getTranscriptionJob(_0x32981d[_0xe36e('0xa')],_0x32981d[_0xe36e('0xb')],_0x4fbdb2[_0xe36e('0xc')],_0x265473[_0xe36e('0xd')])[_0xe36e('0xe')](function(_0x924cd5){logger[_0xe36e('0xf')](util[_0xe36e('0x9')](_0xe36e('0x10'),_0x265473['id'],_0x265473[_0xe36e('0xd')],_0x924cd5['TranscriptionJob'][_0xe36e('0x11')]));if(!_0x265473[_0xe36e('0x12')]){switch(_0x924cd5['TranscriptionJob'][_0xe36e('0x11')]){case'COMPLETED':var _0x471400={'transcribeStatus':_0x924cd5[_0xe36e('0x13')]['TranscriptionJobStatus'],'fileUri':_0x924cd5[_0xe36e('0x13')][_0xe36e('0x14')][_0xe36e('0x15')]};logger['info'](util[_0xe36e('0x9')](_0xe36e('0x16'),_0x265473['id']));return rp({'uri':_0x924cd5[_0xe36e('0x13')][_0xe36e('0x14')][_0xe36e('0x15')],'json':!![]})[_0xe36e('0xe')](function(_0x4f438a){logger[_0xe36e('0xf')](util[_0xe36e('0x9')](_0xe36e('0x17'),_0x265473['id']));if(_0x4f438a&&_0x4f438a[_0xe36e('0x18')]&&_0x4f438a[_0xe36e('0x18')]['transcripts']&&_0x4f438a['results'][_0xe36e('0x19')][_0xe36e('0x1a')]){_0x471400[_0xe36e('0x12')]='';for(var _0xb32195=0x0;_0xb32195<_0x4f438a[_0xe36e('0x18')][_0xe36e('0x19')][_0xe36e('0x1a')];_0xb32195++){_0x471400['fileText']+=_0x4f438a[_0xe36e('0x18')][_0xe36e('0x19')][_0xb32195][_0xe36e('0x1b')]+'';}}return _0x265473[_0xe36e('0x1c')](_0x471400);})['then'](function(){logger[_0xe36e('0xf')](util['format'](_0xe36e('0x1d'),_0x265473['id']));if(!_0x265473['tempSentiment']){throw new db[(_0xe36e('0x1e'))]['ValidationError'](_0xe36e('0x1f'));}if(!_0x4fbdb2['sentiment']||!_0x4fbdb2[_0xe36e('0x20')]||!_0x4fbdb2['sentimentRegion']||!_0x4fbdb2['language']||!_0x4fbdb2['bucket']){throw new db['Sequelize'][(_0xe36e('0x21'))](_0xe36e('0x22'));}if(!_0x471400['fileText']){throw new Error('Transcript\x20not\x20available');}if(_0x4fbdb2[_0xe36e('0x20')]===_0x32981d['id']){return _0x32981d;}else{return db[_0xe36e('0x23')][_0xe36e('0x24')]({'where':{'id':_settings[_0xe36e('0x20')]}});}})[_0xe36e('0xe')](function(_0x4759b4){if(!_0x4759b4){throw new db['Sequelize'][(_0xe36e('0x21'))](_0xe36e('0x25'));}if(!_0x4759b4['data1']||!_0x4759b4[_0xe36e('0xb')]){throw new db[(_0xe36e('0x1e'))][(_0xe36e('0x21'))](_0xe36e('0x26'));}_0x27841e=_0x4759b4;logger[_0xe36e('0xf')](util[_0xe36e('0x9')](_0xe36e('0x27'),_0x265473['id']));return sentiment(_0x27841e[_0xe36e('0xa')],_0x27841e[_0xe36e('0xb')],_0x4fbdb2[_0xe36e('0x28')],_0x471400[_0xe36e('0x12')],_0x4fbdb2['language']);})[_0xe36e('0xe')](function(_0x59231e){logger['info'](util[_0xe36e('0x9')]('[RECORDING:%d]\x20Sentiment\x20Analysis\x20available',_0x265473['id']));return _0x265473[_0xe36e('0x1c')]({'sentiment':_0x59231e[_0xe36e('0x29')],'sPositive':_0x59231e[_0xe36e('0x2a')][_0xe36e('0x2b')],'sNegative':_0x59231e['SentimentScore']['Negative'],'sMixed':_0x59231e[_0xe36e('0x2a')][_0xe36e('0x2c')],'sNeutral':_0x59231e[_0xe36e('0x2a')][_0xe36e('0x2d')]});})['then'](function(){logger[_0xe36e('0xf')](util[_0xe36e('0x9')](_0xe36e('0x1d'),_0x265473['id']));_0x23abfb();});case'FAILED':return _0x265473[_0xe36e('0x1c')]({'transcribeStatus':_0xe36e('0x2e'),'failureReason':_0x924cd5['TranscriptionJob'][_0xe36e('0x2f')]})[_0xe36e('0xe')](function(){logger[_0xe36e('0xf')](util[_0xe36e('0x9')](_0xe36e('0x1d'),_0x265473['id']));_0x23abfb();});default:logger[_0xe36e('0xf')](util[_0xe36e('0x9')](_0xe36e('0x30'),_0x265473['id']));break;}}else{return BPromise[_0xe36e('0x31')]()[_0xe36e('0xe')](function(){if(!_0x265473[_0xe36e('0x32')]){throw new db[(_0xe36e('0x1e'))][(_0xe36e('0x21'))]('Sentiment\x20Analysis\x20not\x20requested');}if(!_0x4fbdb2[_0xe36e('0x33')]||!_0x4fbdb2[_0xe36e('0x20')]||!_0x4fbdb2[_0xe36e('0x28')]||!_0x4fbdb2[_0xe36e('0x34')]||!_0x4fbdb2[_0xe36e('0x35')]){throw new db['Sequelize']['ValidationError'](_0xe36e('0x22'));}if(!_0x265473[_0xe36e('0x12')]){throw new Error(_0xe36e('0x36'));}if(_0x4fbdb2[_0xe36e('0x20')]===_0x32981d['id']){return _0x32981d;}else{return db[_0xe36e('0x23')][_0xe36e('0x24')]({'where':{'id':_settings[_0xe36e('0x20')]}});}})[_0xe36e('0xe')](function(_0x48066c){if(!_0x48066c){throw new db[(_0xe36e('0x1e'))][(_0xe36e('0x21'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x48066c[_0xe36e('0xa')]||!_0x48066c['data2']){throw new db[(_0xe36e('0x1e'))][(_0xe36e('0x21'))](_0xe36e('0x26'));}_0x27841e=_0x48066c;logger[_0xe36e('0xf')](util[_0xe36e('0x9')]('[RECORDING:%d]\x20Requesting\x20sentiment\x20analysis',_0x265473['id']));return sentiment(_0x27841e[_0xe36e('0xa')],_0x27841e[_0xe36e('0xb')],_0x4fbdb2[_0xe36e('0x28')],_0x265473[_0xe36e('0x12')],_0x4fbdb2[_0xe36e('0x34')]);})[_0xe36e('0xe')](function(_0x569809){logger[_0xe36e('0xf')](util[_0xe36e('0x9')](_0xe36e('0x37'),_0x265473['id']));return _0x265473[_0xe36e('0x1c')]({'sentiment':_0x569809[_0xe36e('0x29')],'sPositive':_0x569809['SentimentScore'][_0xe36e('0x2b')],'sNegative':_0x569809[_0xe36e('0x2a')][_0xe36e('0x38')],'sMixed':_0x569809[_0xe36e('0x2a')][_0xe36e('0x2c')],'sNeutral':_0x569809[_0xe36e('0x2a')][_0xe36e('0x2d')],'transcribeStatus':_0xe36e('0x39')});})[_0xe36e('0xe')](function(){logger['info'](util['format'](_0xe36e('0x1d'),_0x265473['id']));_0x23abfb();});}})['catch'](function(_0x1f697f){if(_0x1f697f){if(!_0x1f697f[_0xe36e('0x3a')]||_0x1f697f[_0xe36e('0x3a')]!==_0xe36e('0x3b')){logger['error'](util[_0xe36e('0x9')](_0xe36e('0x3c'),_0x265473['id']),util['inspect'](_0x1f697f,{'showHidden':![],'depth':null}));}}_0x23abfb();});});}function checkTranscribe(){var _0x125e62;var _0x40634a;var _0x2c26e6;return db[_0xe36e('0x3d')][_0xe36e('0x3e')]({'where':{'transcribeStatus':_0xe36e('0x3f')}})[_0xe36e('0xe')](function(_0xaf917c){if(!_0xaf917c||!_0xaf917c[_0xe36e('0x1a')]){throw new db[(_0xe36e('0x1e'))][(_0xe36e('0x21'))](_0xe36e('0x40'));}_0x125e62=_0xaf917c;return db[_0xe36e('0x41')][_0xe36e('0x24')]({'where':{'id':0x1}});})[_0xe36e('0xe')](function(_0x5678d3){if(!_0x5678d3){throw new db[(_0xe36e('0x1e'))]['ValidationError']('Settings\x20not\x20available');}_0x40634a=_0x5678d3;if(!_0x40634a[_0xe36e('0x4')]||!_0x40634a[_0xe36e('0x42')]||!_0x40634a['transcribeRegion']||!_0x40634a[_0xe36e('0x34')]||!_0x40634a[_0xe36e('0x35')]){throw new db[(_0xe36e('0x1e'))][(_0xe36e('0x21'))](_0xe36e('0x43'));}return db[_0xe36e('0x23')][_0xe36e('0x24')]({'where':{'id':_0x40634a[_0xe36e('0x42')]}});})[_0xe36e('0xe')](function(_0x55d190){if(!_0x55d190){throw new db[(_0xe36e('0x1e'))][(_0xe36e('0x21'))]('Cloud\x20Provider\x20not\x20available');}if(!_0x55d190[_0xe36e('0xa')]||!_0x55d190[_0xe36e('0xb')]){throw new db[(_0xe36e('0x1e'))][(_0xe36e('0x21'))](_0xe36e('0x26'));}_0x2c26e6=_0x55d190;var _0x53758e=[];_0x125e62['forEach'](function(_0x56f5b6){_0x53758e['push'](checkTranscribeJob(_0x56f5b6,_0x40634a,_0x2c26e6));});return BPromise[_0xe36e('0x44')](_0x53758e);})[_0xe36e('0x45')](function(_0x283365){if(_0x283365){if(!_0x283365[_0xe36e('0x3a')]||_0x283365[_0xe36e('0x3a')]!==_0xe36e('0x3b')){logger[_0xe36e('0x46')](util[_0xe36e('0x47')](_0x283365,{'showHidden':![],'depth':null}));}}});}exports[_0xe36e('0x48')]=function(){setInterval(function(){return checkTranscribe();},0x3c*0x3e8);return checkTranscribe();};
\ No newline at end of file
index d52944f..dc20f83 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe7c2=['timeout','YYYY-MM-DD\x20HH:mm:ss','then','info','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','whatsappInteraction:update','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','lodash','moment','ioredis','util','../../config/environment','../../mysqldb','../logger','schedule','defaults','redis','localhost','WhatsappInteraction','findAll','lastMsgAt','subtract','hours','length','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system'];(function(_0x3d407c,_0x8127b5){var _0x7d17dc=function(_0xe3f088){while(--_0xe3f088){_0x3d407c['push'](_0x3d407c['shift']());}};_0x7d17dc(++_0x8127b5);}(_0xe7c2,0x114));var _0x2e7c=function(_0xc653a9,_0x3768e0){_0xc653a9=_0xc653a9-0x0;var _0x24fb8b=_0xe7c2[_0xc653a9];return _0x24fb8b;};'use strict';var _=require(_0x2e7c('0x0'));var moment=require(_0x2e7c('0x1'));var Redis=require(_0x2e7c('0x2'));var util=require(_0x2e7c('0x3'));var config=require(_0x2e7c('0x4'));var db=require(_0x2e7c('0x5'))['db'];var logger=require(_0x2e7c('0x6'))(_0x2e7c('0x7'));config['redis']=_[_0x2e7c('0x8')](config[_0x2e7c('0x9')],{'host':_0x2e7c('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2e7c('0x9')]));function closeInteractions(){var _0x3dd1fa=[];return db[_0x2e7c('0xb')][_0x2e7c('0xc')]({'raw':!![],'attributes':['id',_0x2e7c('0xd')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x2e7c('0xe')](0x18,_0x2e7c('0xf'))}}})['then'](function(_0x3f4509){if(_0x3f4509&&_0x3f4509[_0x2e7c('0x10')]){_0x3dd1fa=_['map'](_0x3f4509||[],'id');logger['info'](_0x2e7c('0x11'),_0x3dd1fa[_0x2e7c('0x12')]());return db[_0x2e7c('0xb')][_0x2e7c('0x13')]({'closeReason':_0x2e7c('0x14'),'disposition':_0x2e7c('0x15'),'closed':!![],'closedAt':moment()['format'](_0x2e7c('0x16'))},{'where':{'id':_0x3dd1fa}});}})[_0x2e7c('0x17')](function(){if(_0x3dd1fa&&_0x3dd1fa['length']){logger[_0x2e7c('0x18')](_0x2e7c('0x19'),_0x3dd1fa[_0x2e7c('0x12')]());for(var _0x577bc7=0x0;_0x577bc7<_0x3dd1fa[_0x2e7c('0x10')];_0x577bc7++){io[_0x2e7c('0x1a')](_0x2e7c('0x1b'),{'id':_0x3dd1fa[_0x577bc7],'closed':!![]});}}})[_0x2e7c('0x1c')](function(_0x48505b){logger[_0x2e7c('0x1d')](_0x2e7c('0x1e'),_0x48505b?util[_0x2e7c('0x1f')](_0x48505b,{'showHidden':![],'depth':null}):'');});}exports[_0x2e7c('0x20')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
+var _0x5346=['length','[WHATSAPP]\x20Sending\x20updates\x20for\x20interactions:','emit','catch','error','[WHATSAPP]\x20Error\x20closing\x20interactions','inspect','start','moment','ioredis','util','../../mysqldb','../logger','redis','defaults','localhost','socket.io-emitter','WhatsappInteraction','lastMsgAt','subtract','hours','then','map','info','[WHATSAPP]\x20Interactions\x20to\x20close:','join','update','system','timeout','format'];(function(_0x3c04ef,_0x9d110c){var _0x6a3a69=function(_0x333514){while(--_0x333514){_0x3c04ef['push'](_0x3c04ef['shift']());}};_0x6a3a69(++_0x9d110c);}(_0x5346,0xf8));var _0x6534=function(_0x4a003a,_0x67a85c){_0x4a003a=_0x4a003a-0x0;var _0x4e96d7=_0x5346[_0x4a003a];return _0x4e96d7;};'use strict';var _=require('lodash');var moment=require(_0x6534('0x0'));var Redis=require(_0x6534('0x1'));var util=require(_0x6534('0x2'));var config=require('../../config/environment');var db=require(_0x6534('0x3'))['db'];var logger=require(_0x6534('0x4'))('schedule');config[_0x6534('0x5')]=_[_0x6534('0x6')](config[_0x6534('0x5')],{'host':_0x6534('0x7'),'port':0x18eb});var io=require(_0x6534('0x8'))(new Redis(config[_0x6534('0x5')]));function closeInteractions(){var _0x2bea2e=[];return db[_0x6534('0x9')]['findAll']({'raw':!![],'attributes':['id',_0x6534('0xa')],'where':{'closed':![],'lastMsgDirection':'in','lastMsgAt':{'$lt':moment()[_0x6534('0xb')](0x18,_0x6534('0xc'))}}})[_0x6534('0xd')](function(_0x399642){if(_0x399642&&_0x399642['length']){_0x2bea2e=_[_0x6534('0xe')](_0x399642||[],'id');logger[_0x6534('0xf')](_0x6534('0x10'),_0x2bea2e[_0x6534('0x11')]());return db['WhatsappInteraction'][_0x6534('0x12')]({'closeReason':_0x6534('0x13'),'disposition':_0x6534('0x14'),'closed':!![],'closedAt':moment()[_0x6534('0x15')]('YYYY-MM-DD\x20HH:mm:ss')},{'where':{'id':_0x2bea2e}});}})[_0x6534('0xd')](function(){if(_0x2bea2e&&_0x2bea2e[_0x6534('0x16')]){logger[_0x6534('0xf')](_0x6534('0x17'),_0x2bea2e[_0x6534('0x11')]());for(var _0x29ca3b=0x0;_0x29ca3b<_0x2bea2e[_0x6534('0x16')];_0x29ca3b++){io[_0x6534('0x18')]('whatsappInteraction:update',{'id':_0x2bea2e[_0x29ca3b],'closed':!![]});}}})[_0x6534('0x19')](function(_0x21c930){logger[_0x6534('0x1a')](_0x6534('0x1b'),_0x21c930?util[_0x6534('0x1c')](_0x21c930,{'showHidden':![],'depth':null}):'');});}exports[_0x6534('0x1d')]=function(){setInterval(function(){return closeInteractions();},0x3c*0x3e8);return closeInteractions();};
\ No newline at end of file
index ec12e60..f6f33b4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa637=['now','CmContact','destroy','then','bulkCreate','log','finished\x20populating','CmHopper','hopper1','contacts2','hopper2','catch','../mysqldb','push','Innocenzo','Biondo','innocenzo.biondo','@xcally.com'];(function(_0x159e29,_0x4175a8){var _0x504a4c=function(_0x1e5893){while(--_0x1e5893){_0x159e29['push'](_0x159e29['shift']());}};_0x504a4c(++_0x4175a8);}(_0xa637,0x66));var _0x7a63=function(_0x594698,_0x2f954a){_0x594698=_0x594698-0x0;var _0x2a4524=_0xa637[_0x594698];return _0x2a4524;};'use strict';var util=require('util');var db=require(_0x7a63('0x0'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x7a63('0x1')]({'id':i,'firstName':_0x7a63('0x2')+i,'lastName':_0x7a63('0x3')+i,'phone':0xf879fb460+i,'email':_0x7a63('0x4')+i+_0x7a63('0x5')});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x7a63('0x1')]({'id':i,'active':![],'scheduledat':Date[_0x7a63('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x7a63('0x6')](),'updatedAt':Date['now']()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x7a63('0x1')]({'id':i,'firstName':_0x7a63('0x2')+i,'lastName':_0x7a63('0x3')+i,'phone':0xf879fb460+i,'email':_0x7a63('0x4')+i+_0x7a63('0x5')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x7a63('0x1')]({'id':i,'active':![],'scheduledat':Date[_0x7a63('0x6')](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x7a63('0x6')](),'updatedAt':Date[_0x7a63('0x6')]()});}db[_0x7a63('0x7')][_0x7a63('0x8')]({'where':{}})[_0x7a63('0x9')](function(){return db[_0x7a63('0x7')][_0x7a63('0xa')](contacts);})[_0x7a63('0x9')](function(){console[_0x7a63('0xb')](_0x7a63('0xc'),'contacts1');return db[_0x7a63('0xd')][_0x7a63('0x8')]({'where':{}});})[_0x7a63('0x9')](function(){return db['CmHopper'][_0x7a63('0xa')](hopper);})[_0x7a63('0x9')](function(){console[_0x7a63('0xb')](_0x7a63('0xc'),_0x7a63('0xe'));return db[_0x7a63('0x7')][_0x7a63('0xa')](contacts2);})[_0x7a63('0x9')](function(){console['log'](_0x7a63('0xc'),_0x7a63('0xf'));return db[_0x7a63('0xd')][_0x7a63('0xa')](hopper2);})[_0x7a63('0x9')](function(){console[_0x7a63('0xb')]('finished\x20populating',_0x7a63('0x10'));})[_0x7a63('0x11')](function(_0x1ce2ed){console['log'](_0x1ce2ed);});
\ No newline at end of file
+var _0x6d25=['util','../mysqldb','push','Innocenzo','now','Biondo','innocenzo.biondo','@xcally.com','CmContact','destroy','then','log','finished\x20populating','contacts1','CmHopper','hopper1','bulkCreate','hopper2'];(function(_0x13d07a,_0x41efc3){var _0x5ee0ee=function(_0x4ca94a){while(--_0x4ca94a){_0x13d07a['push'](_0x13d07a['shift']());}};_0x5ee0ee(++_0x41efc3);}(_0x6d25,0xd8));var _0x56d2=function(_0x404df5,_0x4f9684){_0x404df5=_0x404df5-0x0;var _0x26e829=_0x6d25[_0x404df5];return _0x26e829;};'use strict';var util=require(_0x56d2('0x0'));var db=require(_0x56d2('0x1'))['db'];var contacts=[];var hopper=[];var contacts2=[];var hopper2=[];for(var i=0x1;i<=0x4b0;i+=0x1){contacts[_0x56d2('0x2')]({'id':i,'firstName':_0x56d2('0x3')+i,'lastName':'Biondo'+i,'phone':0xf879fb460+i,'email':'innocenzo.biondo'+i+'@xcally.com'});}for(var i=0x1;i<=0x4b0;i+=0x1){hopper[_0x56d2('0x2')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x56d2('0x4')](),'updatedAt':Date[_0x56d2('0x4')]()});}for(var i=0x4b1;i<=0x960;i+=0x1){contacts2[_0x56d2('0x2')]({'id':i,'firstName':_0x56d2('0x3')+i,'lastName':_0x56d2('0x5')+i,'phone':0xf879fb460+i,'email':_0x56d2('0x6')+i+_0x56d2('0x7')});}for(var i=0x4b1;i<=0x960;i+=0x1){hopper2[_0x56d2('0x2')]({'id':i,'active':![],'scheduledat':Date['now'](),'countbusyretry':0x0,'countcongestionretry':0x0,'countnoanswerretry':0x0,'ContactId':i,'ListId':0x1,'UserId':0x1,'VoiceQueueId':0x3fd,'createdAt':Date[_0x56d2('0x4')](),'updatedAt':Date[_0x56d2('0x4')]()});}db[_0x56d2('0x8')][_0x56d2('0x9')]({'where':{}})['then'](function(){return db['CmContact']['bulkCreate'](contacts);})[_0x56d2('0xa')](function(){console[_0x56d2('0xb')](_0x56d2('0xc'),_0x56d2('0xd'));return db[_0x56d2('0xe')][_0x56d2('0x9')]({'where':{}});})[_0x56d2('0xa')](function(){return db['CmHopper']['bulkCreate'](hopper);})[_0x56d2('0xa')](function(){console[_0x56d2('0xb')](_0x56d2('0xc'),_0x56d2('0xf'));return db['CmContact'][_0x56d2('0x10')](contacts2);})[_0x56d2('0xa')](function(){console[_0x56d2('0xb')](_0x56d2('0xc'),'contacts2');return db['CmHopper'][_0x56d2('0x10')](hopper2);})['then'](function(){console[_0x56d2('0xb')](_0x56d2('0xc'),_0x56d2('0x11'));})['catch'](function(_0x1ca260){console[_0x56d2('0xb')](_0x1ca260);});
\ No newline at end of file
index 42323b9..09cf32c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7eae=['../mysqldb','push','format','%s%s','agent','friend','udp','wss','all','ulaw','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','\x22%s\x22\x20<%s>','User','bulkCreate','then','log','add\x20user','catch','util'];(function(_0x20620f,_0x37c815){var _0x593a2f=function(_0x25479a){while(--_0x25479a){_0x20620f['push'](_0x20620f['shift']());}};_0x593a2f(++_0x37c815);}(_0x7eae,0x18b));var _0xe7ea=function(_0x2bf141,_0x31eac7){_0x2bf141=_0x2bf141-0x0;var _0x48277b=_0x7eae[_0x2bf141];return _0x48277b;};'use strict';var util=require(_0xe7ea('0x0'));var db=require(_0xe7ea('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users[_0xe7ea('0x2')]({'name':util[_0xe7ea('0x3')](_0xe7ea('0x4'),_0xe7ea('0x5'),i),'fullname':util['format'](_0xe7ea('0x4'),_0xe7ea('0x5'),i),'email':util[_0xe7ea('0x3')]('%s%s@xcally.com',_0xe7ea('0x5'),i),'role':_0xe7ea('0x5'),'password':'password','internal':0xfa0+i,'type':_0xe7ea('0x6'),'transport':[_0xe7ea('0x7'),'ws',_0xe7ea('0x8')],'disallow':[_0xe7ea('0x9')],'allow':[_0xe7ea('0xa')],'defaultuser':util[_0xe7ea('0x3')](_0xe7ea('0x4'),_0xe7ea('0x5'),i),'encryption':_0xe7ea('0xb'),'avpf':_0xe7ea('0xb'),'force_avp':_0xe7ea('0xb'),'icesupport':_0xe7ea('0xb'),'dtlsenable':_0xe7ea('0xb'),'dtlsverify':'no','dtlscertfile':_0xe7ea('0xc'),'dtlsprivatekey':_0xe7ea('0xd'),'dtlssetup':_0xe7ea('0xe'),'callerid':util[_0xe7ea('0x3')](_0xe7ea('0xf'),util[_0xe7ea('0x3')]('%s%s',_0xe7ea('0x5'),i),0xfa0+i)});}db[_0xe7ea('0x10')][_0xe7ea('0x11')](users)[_0xe7ea('0x12')](function(){console[_0xe7ea('0x13')](_0xe7ea('0x14'));})[_0xe7ea('0x15')](function(_0x6c2bd9){console[_0xe7ea('0x13')](_0x6c2bd9);});
\ No newline at end of file
+var _0x6514=['catch','util','../mysqldb','format','%s%s','agent','password','friend','udp','wss','all','ulaw','yes','/etc/pki/tls/certs/motion.crt','/etc/pki/tls/private/motion.key','actpass','User','bulkCreate','then','log','add\x20user'];(function(_0x50a82d,_0x14303f){var _0x53c737=function(_0x2036fa){while(--_0x2036fa){_0x50a82d['push'](_0x50a82d['shift']());}};_0x53c737(++_0x14303f);}(_0x6514,0xd3));var _0x4651=function(_0x436ba2,_0x5b6037){_0x436ba2=_0x436ba2-0x0;var _0x3b35fc=_0x6514[_0x436ba2];return _0x3b35fc;};'use strict';var util=require(_0x4651('0x0'));var db=require(_0x4651('0x1'))['db'];var users=[];for(var i=0x1;i<=0xc8;i+=0x1){users['push']({'name':util[_0x4651('0x2')](_0x4651('0x3'),'agent',i),'fullname':util[_0x4651('0x2')](_0x4651('0x3'),_0x4651('0x4'),i),'email':util[_0x4651('0x2')]('%s%s@xcally.com',_0x4651('0x4'),i),'role':_0x4651('0x4'),'password':_0x4651('0x5'),'internal':0xfa0+i,'type':_0x4651('0x6'),'transport':[_0x4651('0x7'),'ws',_0x4651('0x8')],'disallow':[_0x4651('0x9')],'allow':[_0x4651('0xa')],'defaultuser':util[_0x4651('0x2')]('%s%s','agent',i),'encryption':'yes','avpf':_0x4651('0xb'),'force_avp':_0x4651('0xb'),'icesupport':'yes','dtlsenable':_0x4651('0xb'),'dtlsverify':'no','dtlscertfile':_0x4651('0xc'),'dtlsprivatekey':_0x4651('0xd'),'dtlssetup':_0x4651('0xe'),'callerid':util[_0x4651('0x2')]('\x22%s\x22\x20<%s>',util[_0x4651('0x2')](_0x4651('0x3'),_0x4651('0x4'),i),0xfa0+i)});}db[_0x4651('0xf')][_0x4651('0x10')](users)[_0x4651('0x11')](function(){console[_0x4651('0x12')](_0x4651('0x13'));})[_0x4651('0x14')](function(_0x39c686){console[_0x4651('0x12')](_0x39c686);});
\ No newline at end of file
index feb938e..5576696 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa46e=['Campaign','user','SmsQueues','WhatsappQueues','WhatsappQueue','Trunk','agent','getVoiceQueues','getFaxQueues','getMailQueues','getOpenchannelQueues','getWhatsappQueues','all','length','voice','fax','sms','openchannel','whatsapp','telephone:%s','trunk:%s','leave','user_has_chat_interactions:remove','MailInteractions','removeMailInteractions','user_has_mail_interactions:remove','removeFaxInteractions','SmsInteractions','emit','user_has_sms_interactions:remove','removeOpenchannelInteractions','user_has_openchannel_interactions:remove','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','catch','log','join','default','connection','address','request','remotePort','SocketIO\x20','nsp','CONNECTED','lodash','util','../mysqldb','./environment','name','User','role','type','ivr','then','VoiceQueues','ChatQueues','FaxQueues','MailQueues','OpenchannelQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','format','Agents','handshake','query','find','userProfileId','ChatInteractions','MailInteraction','FaxInteraction','SmsInteraction','OpenchannelInteraction','OpenchannelInteractions','WhatsappInteraction','WhatsappInteractions','user:%s','admin','voice:inbound','voice:outbound','push','VoiceQueue','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue'];(function(_0x337748,_0x402b05){var _0x3bb03f=function(_0x2fcdf4){while(--_0x2fcdf4){_0x337748['push'](_0x337748['shift']());}};_0x3bb03f(++_0x402b05);}(_0xa46e,0x8a));var _0xea46=function(_0x544099,_0x372b30){_0x544099=_0x544099-0x0;var _0x20ab09=_0xa46e[_0x544099];return _0x20ab09;};'use strict';var _=require(_0xea46('0x0'));var util=require(_0xea46('0x1'));var BPromise=require('bluebird');var db=require(_0xea46('0x2'))['db'];var config=require(_0xea46('0x3'));var queryQueues={'attributes':['id',_0xea46('0x4')],'include':[{'as':'Agents','model':db[_0xea46('0x5')],'attributes':['id','name',_0xea46('0x6')],'raw':!![],'where':{'role':'agent'},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0xea46('0x4')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0xea46('0x4')]};var queryAgents={'raw':!![],'attributes':['id',_0xea46('0x4')],'where':{'role':'agent'}};var queryCampaigns={'raw':!![],'attributes':['id',_0xea46('0x4'),_0xea46('0x7')],'where':{'type':_0xea46('0x8')}};function getAssociatedResources(_0x3db7a2,_0x468322,_0x4cf206){return db['UserProfileSection']['findOne']({'where':{'name':_0x3db7a2,'userProfileId':_0x468322},'raw':!![]})[_0xea46('0x9')](function(_0x45550a){if(_0x45550a){if(_0x45550a['autoAssociation']){switch(_0x3db7a2){case _0xea46('0xa'):case _0xea46('0xb'):case _0xea46('0xc'):case'SmsQueues':case _0xea46('0xd'):case _0xea46('0xe'):case'WhatsappQueues':return db[_0x4cf206][_0xea46('0xf')](queryQueues);case _0xea46('0x10'):return db[_0x4cf206]['findAll'](queryTelephones);case _0xea46('0x11'):return db[_0x4cf206]['findAll'](queryTrunks);case _0xea46('0x12'):return db[_0x4cf206][_0xea46('0xf')](queryCampaigns);}}else{return db[_0xea46('0x13')][_0xea46('0xf')]({'attributes':[_0xea46('0x14')],'where':{'sectionId':_0x45550a['id']},'raw':!![]})[_0xea46('0x9')](function(_0x81ee45){if(_0x81ee45){var _0x20a79c={'where':{'id':_[_0xea46('0x15')](_0x81ee45,'resourceId')},'raw':!![]};switch(_0x4cf206){case _0xea46('0x5'):_0x20a79c[_0xea46('0x16')][_0xea46('0x6')]='telephone';break;case'Campaign':_0x20a79c[_0xea46('0x16')][_0xea46('0x7')]='ivr';break;}return db[_0x4cf206]['findAll'](_0x20a79c);}else{return[];}});}}else{return[];}})[_0xea46('0x9')](function(_0x9b7d04){return _0x9b7d04;});}function joinOrLeaveQueues(_0x4ff93d,_0x40316b,_0x16ae38,_0x1adba1){_0x4ff93d[_0x40316b](util[_0xea46('0x17')]('%s:queue:%s',_0x16ae38,_0x1adba1[_0xea46('0x4')]));if(_0x1adba1['Agents']){for(var _0x515e32=0x0;_0x515e32<_0x1adba1[_0xea46('0x18')]['length'];_0x515e32+=0x1){_0x4ff93d[_0x40316b](util['format']('user:%s',_0x1adba1[_0xea46('0x18')][_0x515e32][_0xea46('0x4')]));}}}function joinOrLeave(_0x3d1850,_0x5beb44,_0x16f8fa){var _0x59b10d;if(_0x3d1850[_0xea46('0x19')][_0xea46('0x1a')]['id']){db['User'][_0xea46('0x1b')]({'attributes':['id','name',_0xea46('0x6'),_0xea46('0x1c')],'where':{'id':_0x3d1850[_0xea46('0x19')]['query']['id']},'include':[{'model':db['ChatInteraction'],'as':_0xea46('0x1d'),'attributes':['id'],'raw':!![]},{'model':db[_0xea46('0x1e')],'as':'MailInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xea46('0x1f')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xea46('0x20')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db[_0xea46('0x21')],'as':_0xea46('0x22'),'attributes':['id'],'raw':!![]},{'model':db[_0xea46('0x23')],'as':_0xea46('0x24'),'attributes':['id'],'raw':!![]}]})[_0xea46('0x9')](function(_0x174345){if(_0x174345){_0x59b10d=_0x174345;_0x3d1850[_0x5beb44](util['format'](_0xea46('0x25'),_0x174345[_0xea46('0x4')]));var _0x200e10=[];switch(_0x174345['role']){case _0xea46('0x26'):_0x3d1850[_0x5beb44](_0xea46('0x27'));_0x3d1850[_0x5beb44](_0xea46('0x28'));if(queryQueues['hasOwnProperty']('include')){delete queryQueues['include'];}_0x200e10[_0xea46('0x29')](db[_0xea46('0x2a')][_0xea46('0xf')](queryQueues));_0x200e10[_0xea46('0x29')](db[_0xea46('0x2b')][_0xea46('0xf')](queryQueues));_0x200e10[_0xea46('0x29')](db[_0xea46('0x2c')][_0xea46('0xf')](queryQueues));_0x200e10[_0xea46('0x29')](db[_0xea46('0x2d')]['findAll'](queryQueues));_0x200e10[_0xea46('0x29')](db[_0xea46('0x2e')][_0xea46('0xf')](queryQueues));_0x200e10[_0xea46('0x29')](db[_0xea46('0x2f')][_0xea46('0xf')](queryQueues));_0x200e10[_0xea46('0x29')](db['WhatsappQueue'][_0xea46('0xf')](queryQueues));_0x200e10[_0xea46('0x29')](db[_0xea46('0x5')][_0xea46('0xf')](queryTelephones));_0x200e10[_0xea46('0x29')](db['Trunk']['findAll'](queryTrunks));_0x200e10[_0xea46('0x29')](db[_0xea46('0x30')]['findAll'](queryCampaigns));_0x200e10[_0xea46('0x29')](db[_0xea46('0x5')][_0xea46('0xf')](queryAgents));break;case _0xea46('0x31'):_0x3d1850[_0x5beb44]('voice:inbound');_0x3d1850[_0x5beb44]('voice:outbound');_0x200e10[_0xea46('0x29')](getAssociatedResources('VoiceQueues',_0x174345[_0xea46('0x1c')],_0xea46('0x2a')));_0x200e10['push'](getAssociatedResources(_0xea46('0xb'),_0x174345[_0xea46('0x1c')],'ChatQueue'));_0x200e10[_0xea46('0x29')](getAssociatedResources(_0xea46('0xc'),_0x174345['userProfileId'],_0xea46('0x2c')));_0x200e10[_0xea46('0x29')](getAssociatedResources(_0xea46('0x32'),_0x174345[_0xea46('0x1c')],'SmsQueue'));_0x200e10[_0xea46('0x29')](getAssociatedResources(_0xea46('0xd'),_0x174345[_0xea46('0x1c')],_0xea46('0x2e')));_0x200e10[_0xea46('0x29')](getAssociatedResources('OpenchannelQueues',_0x174345[_0xea46('0x1c')],_0xea46('0x2f')));_0x200e10['push'](getAssociatedResources(_0xea46('0x33'),_0x174345[_0xea46('0x1c')],_0xea46('0x34')));_0x200e10[_0xea46('0x29')](getAssociatedResources('Telephones',_0x174345[_0xea46('0x1c')],_0xea46('0x5')));_0x200e10[_0xea46('0x29')](getAssociatedResources('Trunks',_0x174345[_0xea46('0x1c')],_0xea46('0x35')));_0x200e10[_0xea46('0x29')](getAssociatedResources(_0xea46('0x12'),_0x174345[_0xea46('0x1c')],_0xea46('0x30')));_0x200e10[_0xea46('0x29')](db[_0xea46('0x5')][_0xea46('0xf')](queryAgents));break;case _0xea46('0x36'):_0x3d1850[_0x5beb44](_0xea46('0x27'));_0x3d1850[_0x5beb44](_0xea46('0x28'));_0x200e10[_0xea46('0x29')](_0x174345[_0xea46('0x37')]({'attributes':['id',_0xea46('0x4')]}));_0x200e10['push'](_0x174345['getChatQueues']({'attributes':['id',_0xea46('0x4')]}));_0x200e10[_0xea46('0x29')](_0x174345[_0xea46('0x38')]({'attributes':['id',_0xea46('0x4')]}));_0x200e10['push'](_0x174345['getSmsQueues']({'attributes':['id','name']}));_0x200e10[_0xea46('0x29')](_0x174345[_0xea46('0x39')]({'attributes':['id','name']}));_0x200e10[_0xea46('0x29')](_0x174345[_0xea46('0x3a')]({'attributes':['id',_0xea46('0x4')]}));_0x200e10[_0xea46('0x29')](_0x174345[_0xea46('0x3b')]({'attributes':['id','name']}));break;}return BPromise[_0xea46('0x3c')](_0x200e10);}})['then'](function(_0x22d9a2){if(_0x22d9a2&&_0x22d9a2[_0xea46('0x3d')]){for(var _0x45ee37=0x0;_0x45ee37<_0x22d9a2[_0xea46('0x3d')];_0x45ee37+=0x1){for(var _0x9c26cf=0x0;_0x9c26cf<_0x22d9a2[_0x45ee37][_0xea46('0x3d')];_0x9c26cf+=0x1){switch(_0x45ee37){case 0x0:joinOrLeaveQueues(_0x3d1850,_0x5beb44,_0xea46('0x3e'),_0x22d9a2[_0x45ee37][_0x9c26cf]);break;case 0x1:joinOrLeaveQueues(_0x3d1850,_0x5beb44,'chat',_0x22d9a2[_0x45ee37][_0x9c26cf]);break;case 0x2:joinOrLeaveQueues(_0x3d1850,_0x5beb44,_0xea46('0x3f'),_0x22d9a2[_0x45ee37][_0x9c26cf]);break;case 0x3:joinOrLeaveQueues(_0x3d1850,_0x5beb44,_0xea46('0x40'),_0x22d9a2[_0x45ee37][_0x9c26cf]);break;case 0x4:joinOrLeaveQueues(_0x3d1850,_0x5beb44,'mail',_0x22d9a2[_0x45ee37][_0x9c26cf]);break;case 0x5:joinOrLeaveQueues(_0x3d1850,_0x5beb44,_0xea46('0x41'),_0x22d9a2[_0x45ee37][_0x9c26cf]);break;case 0x6:joinOrLeaveQueues(_0x3d1850,_0x5beb44,_0xea46('0x42'),_0x22d9a2[_0x45ee37][_0x9c26cf]);break;case 0x7:if(_0x59b10d[_0xea46('0x6')]!=='agent')_0x3d1850[_0x5beb44](util['format'](_0xea46('0x43'),_0x22d9a2[_0x45ee37][_0x9c26cf][_0xea46('0x4')]));break;case 0x8:if(_0x59b10d[_0xea46('0x6')]!==_0xea46('0x36'))_0x3d1850[_0x5beb44](util[_0xea46('0x17')](_0xea46('0x44'),_0x22d9a2[_0x45ee37][_0x9c26cf][_0xea46('0x4')]));break;case 0x9:if(_0x59b10d[_0xea46('0x6')]!==_0xea46('0x36'))_0x3d1850[_0x5beb44](util[_0xea46('0x17')]('campaign:%s:%s',_0x22d9a2[_0x45ee37][_0x9c26cf][_0xea46('0x7')],_0x22d9a2[_0x45ee37][_0x9c26cf]['name']));break;case 0xa:_0x3d1850[_0x5beb44](util[_0xea46('0x17')](_0xea46('0x25'),_0x22d9a2[_0x45ee37][_0x9c26cf][_0xea46('0x4')]));break;}}}}})['then'](function(){if(_0x5beb44===_0xea46('0x45')){var _0x125abb=_[_0xea46('0x15')](_0x59b10d[_0xea46('0x1d')],'id');return _0x59b10d['removeChatInteractions'](_0x125abb)['then'](function(){for(var _0x6584e9=0x0;_0x6584e9<_0x125abb[_0xea46('0x3d')];_0x6584e9+=0x1){_0x16f8fa['emit'](_0xea46('0x46'),{'ChatInteractionId':Number(_0x125abb[_0x6584e9]),'UserId':Number(_0x59b10d['id'])});}});}})['then'](function(){if(_0x5beb44===_0xea46('0x45')){var _0x3830fe=_[_0xea46('0x15')](_0x59b10d[_0xea46('0x47')],'id');return _0x59b10d[_0xea46('0x48')](_0x3830fe)[_0xea46('0x9')](function(){for(var _0x391eae=0x0;_0x391eae<_0x3830fe['length'];_0x391eae+=0x1){_0x16f8fa['emit'](_0xea46('0x49'),{'MailInteractionId':Number(_0x3830fe[_0x391eae]),'UserId':Number(_0x59b10d['id'])});}});}})['then'](function(){if(_0x5beb44===_0xea46('0x45')){var _0x16022f=_[_0xea46('0x15')](_0x59b10d['FaxInteractions'],'id');return _0x59b10d[_0xea46('0x4a')](_0x16022f)['then'](function(){for(var _0xc12018=0x0;_0xc12018<_0x16022f[_0xea46('0x3d')];_0xc12018+=0x1){_0x16f8fa['emit']('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x16022f[_0xc12018]),'UserId':Number(_0x59b10d['id'])});}});}})[_0xea46('0x9')](function(){if(_0x5beb44===_0xea46('0x45')){var _0x3199f2=_['map'](_0x59b10d[_0xea46('0x4b')],'id');return _0x59b10d['removeSmsInteractions'](_0x3199f2)[_0xea46('0x9')](function(){for(var _0x5944ba=0x0;_0x5944ba<_0x3199f2[_0xea46('0x3d')];_0x5944ba+=0x1){_0x16f8fa[_0xea46('0x4c')](_0xea46('0x4d'),{'SmsInteractionId':Number(_0x3199f2[_0x5944ba]),'UserId':Number(_0x59b10d['id'])});}});}})[_0xea46('0x9')](function(){if(_0x5beb44===_0xea46('0x45')){var _0x4c5beb=_[_0xea46('0x15')](_0x59b10d[_0xea46('0x22')],'id');return _0x59b10d[_0xea46('0x4e')](_0x4c5beb)['then'](function(){for(var _0x4e75a7=0x0;_0x4e75a7<_0x4c5beb[_0xea46('0x3d')];_0x4e75a7+=0x1){_0x16f8fa[_0xea46('0x4c')](_0xea46('0x4f'),{'OpenchannelInteractionId':Number(_0x4c5beb[_0x4e75a7]),'UserId':Number(_0x59b10d['id'])});}});}})[_0xea46('0x9')](function(){if(_0x5beb44===_0xea46('0x45')){var _0x175a42=_[_0xea46('0x15')](_0x59b10d[_0xea46('0x24')],'id');return _0x59b10d[_0xea46('0x50')](_0x175a42)[_0xea46('0x9')](function(){for(var _0xa307cf=0x0;_0xa307cf<_0x175a42[_0xea46('0x3d')];_0xa307cf+=0x1){_0x16f8fa[_0xea46('0x4c')](_0xea46('0x51'),{'WhatsappInteractionId':Number(_0x175a42[_0xa307cf]),'UserId':Number(_0x59b10d['id'])});}});}})[_0xea46('0x52')](function(_0x487b4e){_0x3d1850[_0xea46('0x53')](_0x487b4e);});}}function onDisconnect(_0x2c248c,_0x397e98){joinOrLeave(_0x2c248c,_0xea46('0x45'),_0x397e98);}function onConnect(_0x5b353f){joinOrLeave(_0x5b353f,_0xea46('0x54'));}exports[_0xea46('0x55')]=function(_0x5b5142){_0x5b5142['on'](_0xea46('0x56'),function(_0x419f86){_0x419f86['setMaxListeners'](0x0);_0x419f86[_0xea46('0x57')]=_0x419f86[_0xea46('0x58')][_0xea46('0x56')]['remoteAddress']+':'+_0x419f86[_0xea46('0x58')][_0xea46('0x56')][_0xea46('0x59')];_0x419f86['connectedAt']=new Date();_0x419f86['log']=function(_0x587bd3){console[_0xea46('0x53')](_0xea46('0x5a')+_0x419f86[_0xea46('0x5b')][_0xea46('0x4')]+'['+_0x419f86[_0xea46('0x57')]+']',_0x587bd3);};_0x419f86['on']('disconnect',function(){onDisconnect(_0x419f86,_0x5b5142);_0x419f86[_0xea46('0x53')]('DISCONNECTED');});onConnect(_0x419f86);_0x419f86[_0xea46('0x53')](_0xea46('0x5c'));});};
\ No newline at end of file
+var _0x4975=['MailQueues','Campaign','getVoiceQueues','getChatQueues','getFaxQueues','getMailQueues','getOpenchannelQueues','voice','chat','sms','mail','openchannel','telephone:%s','campaign:%s:%s','leave','emit','user_has_chat_interactions:remove','FaxInteractions','SmsInteractions','removeSmsInteractions','OpenchannelInteractions','removeOpenchannelInteractions','WhatsappInteractions','removeWhatsappInteractions','user_has_whatsapp_interactions:remove','log','join','default','connection','request','remoteAddress','remotePort','connectedAt','SocketIO\x20','nsp','address','disconnect','DISCONNECTED','CONNECTED','lodash','bluebird','../mysqldb','./environment','name','Agents','User','role','agent','type','UserProfileSection','findOne','then','autoAssociation','VoiceQueues','ChatQueues','OpenchannelQueues','WhatsappQueues','findAll','Telephones','Trunks','IvrCampaigns','UserProfileResource','resourceId','map','where','ivr','format','%s:queue:%s','length','user:%s','query','find','userProfileId','ChatInteraction','ChatInteractions','MailInteraction','MailInteractions','FaxInteraction','SmsInteraction','WhatsappInteraction','admin','voice:inbound','voice:outbound','push','ChatQueue','FaxQueue','SmsQueue','MailQueue','OpenchannelQueue','WhatsappQueue','Trunk','user','VoiceQueue','FaxQueues','SmsQueues'];(function(_0x58a4fe,_0x11d439){var _0x697de2=function(_0xe38c14){while(--_0xe38c14){_0x58a4fe['push'](_0x58a4fe['shift']());}};_0x697de2(++_0x11d439);}(_0x4975,0x86));var _0x5497=function(_0x1e5fe3,_0x370e9b){_0x1e5fe3=_0x1e5fe3-0x0;var _0x4ce7eb=_0x4975[_0x1e5fe3];return _0x4ce7eb;};'use strict';var _=require(_0x5497('0x0'));var util=require('util');var BPromise=require(_0x5497('0x1'));var db=require(_0x5497('0x2'))['db'];var config=require(_0x5497('0x3'));var queryQueues={'attributes':['id',_0x5497('0x4')],'include':[{'as':_0x5497('0x5'),'model':db[_0x5497('0x6')],'attributes':['id',_0x5497('0x4'),_0x5497('0x7')],'raw':!![],'where':{'role':_0x5497('0x8')},'required':![]}]};var queryTelephones={'raw':!![],'attributes':['id',_0x5497('0x4')],'where':{'role':'telephone'}};var queryTrunks={'raw':!![],'attributes':['id',_0x5497('0x4')]};var queryAgents={'raw':!![],'attributes':['id','name'],'where':{'role':_0x5497('0x8')}};var queryCampaigns={'raw':!![],'attributes':['id',_0x5497('0x4'),_0x5497('0x9')],'where':{'type':'ivr'}};function getAssociatedResources(_0x42af11,_0x49d94b,_0x1f63d8){return db[_0x5497('0xa')][_0x5497('0xb')]({'where':{'name':_0x42af11,'userProfileId':_0x49d94b},'raw':!![]})[_0x5497('0xc')](function(_0x131627){if(_0x131627){if(_0x131627[_0x5497('0xd')]){switch(_0x42af11){case _0x5497('0xe'):case _0x5497('0xf'):case'FaxQueues':case'SmsQueues':case'MailQueues':case _0x5497('0x10'):case _0x5497('0x11'):return db[_0x1f63d8][_0x5497('0x12')](queryQueues);case _0x5497('0x13'):return db[_0x1f63d8][_0x5497('0x12')](queryTelephones);case _0x5497('0x14'):return db[_0x1f63d8][_0x5497('0x12')](queryTrunks);case _0x5497('0x15'):return db[_0x1f63d8][_0x5497('0x12')](queryCampaigns);}}else{return db[_0x5497('0x16')]['findAll']({'attributes':[_0x5497('0x17')],'where':{'sectionId':_0x131627['id']},'raw':!![]})['then'](function(_0x4237a9){if(_0x4237a9){var _0x2bfd8a={'where':{'id':_[_0x5497('0x18')](_0x4237a9,_0x5497('0x17'))},'raw':!![]};switch(_0x1f63d8){case _0x5497('0x6'):_0x2bfd8a[_0x5497('0x19')][_0x5497('0x7')]='telephone';break;case'Campaign':_0x2bfd8a[_0x5497('0x19')][_0x5497('0x9')]=_0x5497('0x1a');break;}return db[_0x1f63d8]['findAll'](_0x2bfd8a);}else{return[];}});}}else{return[];}})[_0x5497('0xc')](function(_0xcbd71d){return _0xcbd71d;});}function joinOrLeaveQueues(_0x18e8a8,_0x43da2c,_0x1b1b43,_0x1f6f18){_0x18e8a8[_0x43da2c](util[_0x5497('0x1b')](_0x5497('0x1c'),_0x1b1b43,_0x1f6f18[_0x5497('0x4')]));if(_0x1f6f18[_0x5497('0x5')]){for(var _0x186065=0x0;_0x186065<_0x1f6f18['Agents'][_0x5497('0x1d')];_0x186065+=0x1){_0x18e8a8[_0x43da2c](util['format'](_0x5497('0x1e'),_0x1f6f18[_0x5497('0x5')][_0x186065][_0x5497('0x4')]));}}}function joinOrLeave(_0x2f587d,_0x35ecd9,_0x3b2fbc){var _0x5018fa;if(_0x2f587d['handshake'][_0x5497('0x1f')]['id']){db[_0x5497('0x6')][_0x5497('0x20')]({'attributes':['id',_0x5497('0x4'),'role',_0x5497('0x21')],'where':{'id':_0x2f587d['handshake'][_0x5497('0x1f')]['id']},'include':[{'model':db[_0x5497('0x22')],'as':_0x5497('0x23'),'attributes':['id'],'raw':!![]},{'model':db[_0x5497('0x24')],'as':_0x5497('0x25'),'attributes':['id'],'raw':!![]},{'model':db[_0x5497('0x26')],'as':'FaxInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x5497('0x27')],'as':'SmsInteractions','attributes':['id'],'raw':!![]},{'model':db['OpenchannelInteraction'],'as':'OpenchannelInteractions','attributes':['id'],'raw':!![]},{'model':db[_0x5497('0x28')],'as':'WhatsappInteractions','attributes':['id'],'raw':!![]}]})['then'](function(_0xc3465){if(_0xc3465){_0x5018fa=_0xc3465;_0x2f587d[_0x35ecd9](util[_0x5497('0x1b')](_0x5497('0x1e'),_0xc3465['name']));var _0x59380f=[];switch(_0xc3465['role']){case _0x5497('0x29'):_0x2f587d[_0x35ecd9](_0x5497('0x2a'));_0x2f587d[_0x35ecd9](_0x5497('0x2b'));if(queryQueues['hasOwnProperty']('include')){delete queryQueues['include'];}_0x59380f[_0x5497('0x2c')](db['VoiceQueue'][_0x5497('0x12')](queryQueues));_0x59380f[_0x5497('0x2c')](db[_0x5497('0x2d')]['findAll'](queryQueues));_0x59380f[_0x5497('0x2c')](db[_0x5497('0x2e')]['findAll'](queryQueues));_0x59380f[_0x5497('0x2c')](db[_0x5497('0x2f')][_0x5497('0x12')](queryQueues));_0x59380f['push'](db[_0x5497('0x30')][_0x5497('0x12')](queryQueues));_0x59380f[_0x5497('0x2c')](db[_0x5497('0x31')][_0x5497('0x12')](queryQueues));_0x59380f['push'](db[_0x5497('0x32')][_0x5497('0x12')](queryQueues));_0x59380f['push'](db[_0x5497('0x6')][_0x5497('0x12')](queryTelephones));_0x59380f[_0x5497('0x2c')](db[_0x5497('0x33')][_0x5497('0x12')](queryTrunks));_0x59380f[_0x5497('0x2c')](db['Campaign'][_0x5497('0x12')](queryCampaigns));_0x59380f['push'](db[_0x5497('0x6')][_0x5497('0x12')](queryAgents));break;case _0x5497('0x34'):_0x2f587d[_0x35ecd9]('voice:inbound');_0x2f587d[_0x35ecd9]('voice:outbound');_0x59380f[_0x5497('0x2c')](getAssociatedResources(_0x5497('0xe'),_0xc3465[_0x5497('0x21')],_0x5497('0x35')));_0x59380f[_0x5497('0x2c')](getAssociatedResources(_0x5497('0xf'),_0xc3465['userProfileId'],_0x5497('0x2d')));_0x59380f[_0x5497('0x2c')](getAssociatedResources(_0x5497('0x36'),_0xc3465[_0x5497('0x21')],_0x5497('0x2e')));_0x59380f[_0x5497('0x2c')](getAssociatedResources(_0x5497('0x37'),_0xc3465[_0x5497('0x21')],_0x5497('0x2f')));_0x59380f['push'](getAssociatedResources(_0x5497('0x38'),_0xc3465[_0x5497('0x21')],_0x5497('0x30')));_0x59380f[_0x5497('0x2c')](getAssociatedResources(_0x5497('0x10'),_0xc3465[_0x5497('0x21')],_0x5497('0x31')));_0x59380f['push'](getAssociatedResources(_0x5497('0x11'),_0xc3465[_0x5497('0x21')],_0x5497('0x32')));_0x59380f[_0x5497('0x2c')](getAssociatedResources(_0x5497('0x13'),_0xc3465[_0x5497('0x21')],_0x5497('0x6')));_0x59380f['push'](getAssociatedResources(_0x5497('0x14'),_0xc3465[_0x5497('0x21')],_0x5497('0x33')));_0x59380f[_0x5497('0x2c')](getAssociatedResources(_0x5497('0x15'),_0xc3465[_0x5497('0x21')],_0x5497('0x39')));_0x59380f[_0x5497('0x2c')](db[_0x5497('0x6')][_0x5497('0x12')](queryAgents));break;case'agent':_0x2f587d[_0x35ecd9](_0x5497('0x2a'));_0x2f587d[_0x35ecd9]('voice:outbound');_0x59380f[_0x5497('0x2c')](_0xc3465[_0x5497('0x3a')]({'attributes':['id',_0x5497('0x4')]}));_0x59380f[_0x5497('0x2c')](_0xc3465[_0x5497('0x3b')]({'attributes':['id','name']}));_0x59380f[_0x5497('0x2c')](_0xc3465[_0x5497('0x3c')]({'attributes':['id','name']}));_0x59380f[_0x5497('0x2c')](_0xc3465['getSmsQueues']({'attributes':['id',_0x5497('0x4')]}));_0x59380f['push'](_0xc3465[_0x5497('0x3d')]({'attributes':['id',_0x5497('0x4')]}));_0x59380f[_0x5497('0x2c')](_0xc3465[_0x5497('0x3e')]({'attributes':['id',_0x5497('0x4')]}));_0x59380f['push'](_0xc3465['getWhatsappQueues']({'attributes':['id','name']}));break;}return BPromise['all'](_0x59380f);}})[_0x5497('0xc')](function(_0x43c430){if(_0x43c430&&_0x43c430[_0x5497('0x1d')]){for(var _0x185512=0x0;_0x185512<_0x43c430[_0x5497('0x1d')];_0x185512+=0x1){for(var _0x33a733=0x0;_0x33a733<_0x43c430[_0x185512][_0x5497('0x1d')];_0x33a733+=0x1){switch(_0x185512){case 0x0:joinOrLeaveQueues(_0x2f587d,_0x35ecd9,_0x5497('0x3f'),_0x43c430[_0x185512][_0x33a733]);break;case 0x1:joinOrLeaveQueues(_0x2f587d,_0x35ecd9,_0x5497('0x40'),_0x43c430[_0x185512][_0x33a733]);break;case 0x2:joinOrLeaveQueues(_0x2f587d,_0x35ecd9,'fax',_0x43c430[_0x185512][_0x33a733]);break;case 0x3:joinOrLeaveQueues(_0x2f587d,_0x35ecd9,_0x5497('0x41'),_0x43c430[_0x185512][_0x33a733]);break;case 0x4:joinOrLeaveQueues(_0x2f587d,_0x35ecd9,_0x5497('0x42'),_0x43c430[_0x185512][_0x33a733]);break;case 0x5:joinOrLeaveQueues(_0x2f587d,_0x35ecd9,_0x5497('0x43'),_0x43c430[_0x185512][_0x33a733]);break;case 0x6:joinOrLeaveQueues(_0x2f587d,_0x35ecd9,'whatsapp',_0x43c430[_0x185512][_0x33a733]);break;case 0x7:if(_0x5018fa[_0x5497('0x7')]!=='agent')_0x2f587d[_0x35ecd9](util[_0x5497('0x1b')](_0x5497('0x44'),_0x43c430[_0x185512][_0x33a733][_0x5497('0x4')]));break;case 0x8:if(_0x5018fa['role']!==_0x5497('0x8'))_0x2f587d[_0x35ecd9](util[_0x5497('0x1b')]('trunk:%s',_0x43c430[_0x185512][_0x33a733][_0x5497('0x4')]));break;case 0x9:if(_0x5018fa['role']!==_0x5497('0x8'))_0x2f587d[_0x35ecd9](util['format'](_0x5497('0x45'),_0x43c430[_0x185512][_0x33a733][_0x5497('0x9')],_0x43c430[_0x185512][_0x33a733][_0x5497('0x4')]));break;case 0xa:_0x2f587d[_0x35ecd9](util[_0x5497('0x1b')](_0x5497('0x1e'),_0x43c430[_0x185512][_0x33a733][_0x5497('0x4')]));break;}}}}})[_0x5497('0xc')](function(){if(_0x35ecd9===_0x5497('0x46')){var _0x52e8ce=_[_0x5497('0x18')](_0x5018fa['ChatInteractions'],'id');return _0x5018fa['removeChatInteractions'](_0x52e8ce)[_0x5497('0xc')](function(){for(var _0xdd2fe5=0x0;_0xdd2fe5<_0x52e8ce['length'];_0xdd2fe5+=0x1){_0x3b2fbc[_0x5497('0x47')](_0x5497('0x48'),{'ChatInteractionId':Number(_0x52e8ce[_0xdd2fe5]),'UserId':Number(_0x5018fa['id'])});}});}})[_0x5497('0xc')](function(){if(_0x35ecd9===_0x5497('0x46')){var _0x4ccf0e=_[_0x5497('0x18')](_0x5018fa['MailInteractions'],'id');return _0x5018fa['removeMailInteractions'](_0x4ccf0e)[_0x5497('0xc')](function(){for(var _0x33dd07=0x0;_0x33dd07<_0x4ccf0e[_0x5497('0x1d')];_0x33dd07+=0x1){_0x3b2fbc['emit']('user_has_mail_interactions:remove',{'MailInteractionId':Number(_0x4ccf0e[_0x33dd07]),'UserId':Number(_0x5018fa['id'])});}});}})[_0x5497('0xc')](function(){if(_0x35ecd9==='leave'){var _0x3e092b=_['map'](_0x5018fa[_0x5497('0x49')],'id');return _0x5018fa['removeFaxInteractions'](_0x3e092b)[_0x5497('0xc')](function(){for(var _0x41138e=0x0;_0x41138e<_0x3e092b['length'];_0x41138e+=0x1){_0x3b2fbc[_0x5497('0x47')]('user_has_fax_interactions:remove',{'FaxInteractionId':Number(_0x3e092b[_0x41138e]),'UserId':Number(_0x5018fa['id'])});}});}})['then'](function(){if(_0x35ecd9===_0x5497('0x46')){var _0x5541b4=_['map'](_0x5018fa[_0x5497('0x4a')],'id');return _0x5018fa[_0x5497('0x4b')](_0x5541b4)[_0x5497('0xc')](function(){for(var _0x28b2a3=0x0;_0x28b2a3<_0x5541b4[_0x5497('0x1d')];_0x28b2a3+=0x1){_0x3b2fbc[_0x5497('0x47')]('user_has_sms_interactions:remove',{'SmsInteractionId':Number(_0x5541b4[_0x28b2a3]),'UserId':Number(_0x5018fa['id'])});}});}})[_0x5497('0xc')](function(){if(_0x35ecd9==='leave'){var _0x4e0d4c=_['map'](_0x5018fa[_0x5497('0x4c')],'id');return _0x5018fa[_0x5497('0x4d')](_0x4e0d4c)[_0x5497('0xc')](function(){for(var _0x544085=0x0;_0x544085<_0x4e0d4c[_0x5497('0x1d')];_0x544085+=0x1){_0x3b2fbc['emit']('user_has_openchannel_interactions:remove',{'OpenchannelInteractionId':Number(_0x4e0d4c[_0x544085]),'UserId':Number(_0x5018fa['id'])});}});}})[_0x5497('0xc')](function(){if(_0x35ecd9===_0x5497('0x46')){var _0x3c54e3=_[_0x5497('0x18')](_0x5018fa[_0x5497('0x4e')],'id');return _0x5018fa[_0x5497('0x4f')](_0x3c54e3)['then'](function(){for(var _0x18b30c=0x0;_0x18b30c<_0x3c54e3[_0x5497('0x1d')];_0x18b30c+=0x1){_0x3b2fbc[_0x5497('0x47')](_0x5497('0x50'),{'WhatsappInteractionId':Number(_0x3c54e3[_0x18b30c]),'UserId':Number(_0x5018fa['id'])});}});}})['catch'](function(_0x179be4){_0x2f587d[_0x5497('0x51')](_0x179be4);});}}function onDisconnect(_0x451a02,_0x5b5298){joinOrLeave(_0x451a02,'leave',_0x5b5298);}function onConnect(_0x31271c){joinOrLeave(_0x31271c,_0x5497('0x52'));}exports[_0x5497('0x53')]=function(_0x542bcf){_0x542bcf['on'](_0x5497('0x54'),function(_0x50a144){_0x50a144['setMaxListeners'](0x0);_0x50a144['address']=_0x50a144[_0x5497('0x55')][_0x5497('0x54')][_0x5497('0x56')]+':'+_0x50a144['request'][_0x5497('0x54')][_0x5497('0x57')];_0x50a144[_0x5497('0x58')]=new Date();_0x50a144[_0x5497('0x51')]=function(_0x4fec68){console[_0x5497('0x51')](_0x5497('0x59')+_0x50a144[_0x5497('0x5a')]['name']+'['+_0x50a144[_0x5497('0x5b')]+']',_0x4fec68);};_0x50a144['on'](_0x5497('0x5c'),function(){onDisconnect(_0x50a144,_0x542bcf);_0x50a144[_0x5497('0x51')](_0x5497('0x5d'));});onConnect(_0x50a144);_0x50a144[_0x5497('0x51')](_0x5497('0x5e'));});};
\ No newline at end of file
index 46feaf2..3aa2b18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x696c=['email','internal','default','length','hasOwnProperty','model','hook','callback','toLowerCase','util','../logger','triggers','client','http','Chat','ChatInteraction','afterCreate','newinteraction','afterUpdate','closedinteraction','newmessage','ChatOfflineMessage','Sms','SmsInteraction','WhatsappInteraction','FaxInteraction','Fax','FaxMessage','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','OpenchannelMessage','request','info','Trigger,\x20%s','EventManager','error','code','catch','get','channel','motionChannel','direction','resolve','ContactId','undefined','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','QueryTypes','SELECT','then','contact','UserId','interface','format','SIP/%s','agent','incomingmessage','outgoingmessage','AfterCreateMessage','event','opened','sequelize','query','name','AfterCreate','changed','closed','substatus','Sequelize','User','find','fullname'];(function(_0xad3fc9,_0x4c83d7){var _0x2c5f30=function(_0x35a9f2){while(--_0x35a9f2){_0xad3fc9['push'](_0xad3fc9['shift']());}};_0x2c5f30(++_0x4c83d7);}(_0x696c,0x17b));var _0xc696=function(_0x439f45,_0x542c73){_0x439f45=_0x439f45-0x0;var _0x6aa2e3=_0x696c[_0x439f45];return _0x6aa2e3;};'use strict';var util=require(_0xc696('0x0'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var logger=require(_0xc696('0x1'))(_0xc696('0x2'));var client=jayson[_0xc696('0x3')][_0xc696('0x4')]({'port':0x232a});var triggers=[{'channel':_0xc696('0x5'),'model':_0xc696('0x6'),'event':_0xc696('0x7'),'condition':_0xc696('0x8'),'callback':afterCreate},{'channel':_0xc696('0x5'),'model':_0xc696('0x6'),'event':_0xc696('0x9'),'condition':_0xc696('0xa'),'callback':afterUpdate},{'channel':'Chat','model':'ChatMessage','event':_0xc696('0x7'),'condition':_0xc696('0xb'),'callback':afterCreateMessage},{'channel':_0xc696('0x5'),'model':_0xc696('0xc'),'event':_0xc696('0x7'),'condition':_0xc696('0xb'),'callback':afterCreateOfflineMessage},{'channel':_0xc696('0xd'),'model':_0xc696('0xe'),'event':_0xc696('0x7'),'condition':_0xc696('0x8'),'callback':afterCreate},{'channel':'Sms','model':_0xc696('0xe'),'event':_0xc696('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':_0xc696('0xd'),'model':'SmsMessage','event':'afterCreate','condition':_0xc696('0xb'),'callback':afterCreateMessage},{'channel':'Whatsapp','model':_0xc696('0xf'),'event':_0xc696('0x7'),'condition':'newinteraction','callback':afterCreate},{'channel':'Whatsapp','model':'WhatsappInteraction','event':_0xc696('0x9'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Whatsapp','model':'WhatsappMessage','event':_0xc696('0x7'),'condition':_0xc696('0xb'),'callback':afterCreateMessage},{'channel':'Fax','model':_0xc696('0x10'),'event':_0xc696('0x7'),'condition':_0xc696('0x8'),'callback':afterCreate},{'channel':'Fax','model':_0xc696('0x10'),'event':_0xc696('0x9'),'condition':_0xc696('0xa'),'callback':afterUpdate},{'channel':_0xc696('0x11'),'model':_0xc696('0x12'),'event':'afterCreate','condition':_0xc696('0xb'),'callback':afterCreateMessage},{'channel':_0xc696('0x13'),'model':_0xc696('0x14'),'event':_0xc696('0x7'),'condition':_0xc696('0x8'),'callback':afterCreate},{'channel':'Mail','model':_0xc696('0x14'),'event':_0xc696('0x9'),'condition':_0xc696('0xa'),'callback':afterUpdate},{'channel':'Mail','model':_0xc696('0x15'),'event':'afterCreate','condition':_0xc696('0xb'),'callback':afterCreateMessage},{'channel':_0xc696('0x16'),'model':'OpenchannelInteraction','event':_0xc696('0x7'),'condition':_0xc696('0x8'),'callback':afterCreate},{'channel':'Openchannel','model':_0xc696('0x17'),'event':_0xc696('0x9'),'condition':_0xc696('0xa'),'callback':afterUpdate},{'channel':_0xc696('0x16'),'model':_0xc696('0x18'),'event':_0xc696('0x7'),'condition':_0xc696('0xb'),'callback':afterCreateMessage}];function request(_0x1aeac7){return client[_0xc696('0x19')]('EventManager',_0x1aeac7)['then'](function(_0x5d84ec){logger[_0xc696('0x1a')](_0xc696('0x1b'),_0xc696('0x1c'),_0x5d84ec);if(_0x5d84ec[_0xc696('0x1d')]){if(_0x5d84ec[_0xc696('0x1d')][_0xc696('0x1e')]===0x1f4){logger[_0xc696('0x1d')](_0xc696('0x1b'),'EventManager',_0x5d84ec[_0xc696('0x1d')]);}}})[_0xc696('0x1f')](function(_0x5f5325){logger[_0xc696('0x1d')](_0xc696('0x1b'),_0xc696('0x1c'),_0x5f5325);});}function afterCreateMessage(_0x2abe65){return function(_0x2c323f){_0x2c323f=_0x2c323f[_0xc696('0x20')]({'plain':!![]});_0x2c323f[_0xc696('0x21')]=_0x2abe65;_0x2c323f[_0xc696('0x22')]=_0x2abe65;_0x2c323f['event']=_0x2c323f[_0xc696('0x23')];Promise[_0xc696('0x24')]()['then'](function(){if(typeof _0x2c323f[_0xc696('0x25')]===_0xc696('0x26'))return null;var _0x4d375d=_0xc696('0x27')+_0x2c323f[_0xc696('0x25')];return db['sequelize']['query'](_0x4d375d,{'type':db['Sequelize'][_0xc696('0x28')][_0xc696('0x29')],'raw':!![]});})[_0xc696('0x2a')](function(_0xd3c29a){if(_0xd3c29a){_0x2c323f[_0xc696('0x2b')]=_0xd3c29a[0x0];}if(typeof _0x2c323f[_0xc696('0x2c')]==='undefined')return;return getAgent(_0x2c323f[_0xc696('0x2c')]);})[_0xc696('0x2a')](function(_0x57aa1b){if(_0x57aa1b){_0x2c323f[_0xc696('0x2d')]=util[_0xc696('0x2e')](_0xc696('0x2f'),_0x57aa1b['name']);_0x2c323f[_0xc696('0x30')]=_0x57aa1b;_0x2c323f[_0xc696('0x21')]=_0x2abe65;return request({'event':_0xc696('0x31'),'message':_0x2c323f});}else{return request({'event':_0xc696('0x32'),'message':_0x2c323f});}})[_0xc696('0x1f')](function(_0x52d28c){logger[_0xc696('0x1d')](_0xc696('0x1b'),_0xc696('0x33'),_0x52d28c);});};}function afterCreateOfflineMessage(_0x9e96a6){return function(_0xaceb7d){_0xaceb7d=_0xaceb7d[_0xc696('0x20')]({'plain':!![]});_0xaceb7d[_0xc696('0x21')]=_0x9e96a6;_0xaceb7d['motionChannel']=_0x9e96a6;_0xaceb7d[_0xc696('0x34')]='offlineMessage';return request({'event':_0xaceb7d[_0xc696('0x34')],'message':_0xaceb7d});};}function afterCreate(_0x356938,_0x230ebf){return function(_0x256356){_0x256356=_0x256356[_0xc696('0x20')]({'plain':!![]});_0x256356[_0xc696('0x21')]=_0x356938;_0x256356['motionChannel']=_0x356938;_0x256356[_0xc696('0x34')]=_0xc696('0x35');Promise[_0xc696('0x24')]()[_0xc696('0x2a')](function(){var _0x21b5e0=_0xc696('0x27')+_0x256356[_0xc696('0x25')];return db[_0xc696('0x36')][_0xc696('0x37')](_0x21b5e0,{'type':db['Sequelize'][_0xc696('0x28')]['SELECT'],'raw':!![]});})[_0xc696('0x2a')](function(_0x34f8d2){if(_0x34f8d2){_0x256356[_0xc696('0x2b')]=_0x34f8d2[0x0];}if(typeof _0x256356['UserId']==='undefined')return;return getAgent(_0x256356[_0xc696('0x2c')]);})[_0xc696('0x2a')](function(_0x3c552e){if(_0x3c552e){_0x256356['interface']=util[_0xc696('0x2e')](_0xc696('0x2f'),_0x3c552e[_0xc696('0x38')]);_0x256356[_0xc696('0x30')]=_0x3c552e;}return request({'event':_0x230ebf,'message':_0x256356});})['catch'](function(_0x1315e6){logger['error'](_0xc696('0x1b'),_0xc696('0x39'),_0x1315e6);});};}function afterUpdate(_0x47e9ab){return function(_0xeaa531){var _0x39249a=_0xeaa531[_0xc696('0x3a')](_0xc696('0x3b'))&&_0xeaa531[_0xc696('0x3b')];var _0x296313=_0xeaa531[_0xc696('0x3a')]('substatus');if(_0x39249a||_0x296313){var _0x34785a=_0x39249a?'closedinteraction':'substatus';var _0xf19876=_0xeaa531[_0xc696('0x20')]({'plain':!![]});_0xf19876[_0xc696('0x21')]=_0x47e9ab;_0xf19876[_0xc696('0x22')]=_0x47e9ab;_0xf19876[_0xc696('0x34')]=_0x39249a?_0xc696('0x3b'):_0xc696('0x3c');var _0x3bfc40=_0xc696('0x27')+_0xf19876[_0xc696('0x25')];return db['sequelize'][_0xc696('0x37')](_0x3bfc40,{'type':db[_0xc696('0x3d')]['QueryTypes'][_0xc696('0x29')],'raw':!![]})[_0xc696('0x2a')](function(_0x4ace21){if(_0x4ace21){_0xf19876[_0xc696('0x2b')]=_0x4ace21[0x0];}if(typeof _0xf19876[_0xc696('0x2c')]==='undefined')return;return getAgent(_0xf19876[_0xc696('0x2c')]);})[_0xc696('0x2a')](function(_0x495b37){if(_0x495b37){_0xf19876['interface']=util[_0xc696('0x2e')](_0xc696('0x2f'),_0x495b37[_0xc696('0x38')]);_0xf19876[_0xc696('0x30')]=_0x495b37;}return request({'event':_0x34785a,'message':_0xf19876});})[_0xc696('0x1f')](function(_0x5991df){logger['error'](_0xc696('0x1b'),'AfterUpdate',_0x5991df);});}};}function getAgent(_0x47bea2){return db[_0xc696('0x3e')][_0xc696('0x3f')]({'where':{'id':_0x47bea2},'attributes':['id','name',_0xc696('0x40'),_0xc696('0x41'),_0xc696('0x42')],'raw':!![]})[_0xc696('0x2a')](function(_0x4ff436){return _0x4ff436;});}exports[_0xc696('0x43')]=function(){for(var _0x34f968=0x0;_0x34f968<triggers[_0xc696('0x44')];_0x34f968+=0x1){if(db[_0xc696('0x45')](triggers[_0x34f968][_0xc696('0x46')])){db[triggers[_0x34f968][_0xc696('0x46')]][_0xc696('0x47')](triggers[_0x34f968][_0xc696('0x34')],triggers[_0x34f968][_0xc696('0x48')](triggers[_0x34f968][_0xc696('0x21')][_0xc696('0x49')](),triggers[_0x34f968]['condition']));}}};
\ No newline at end of file
+var _0x47bd=['afterUpdate','closedinteraction','ChatMessage','afterCreate','ChatOfflineMessage','Sms','SmsInteraction','SmsMessage','Whatsapp','WhatsappInteraction','WhatsappMessage','newmessage','Fax','FaxInteraction','Mail','MailInteraction','MailMessage','Openchannel','OpenchannelInteraction','request','EventManager','then','info','Trigger,\x20%s','error','code','catch','channel','event','resolve','ContactId','undefined','SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20','query','SELECT','contact','UserId','SIP/%s','agent','incomingmessage','outgoingmessage','AfterCreateMessage','get','motionChannel','opened','sequelize','Sequelize','QueryTypes','format','name','AfterCreate','changed','closed','substatus','interface','AfterUpdate','User','internal','default','length','hasOwnProperty','model','callback','toLowerCase','condition','util','../../mysqldb','client','http','ChatInteraction','newinteraction','Chat'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x47bd,0x1f1));var _0xd47b=function(_0x1d6d1b,_0x40f583){_0x1d6d1b=_0x1d6d1b-0x0;var _0x124fa3=_0x47bd[_0x1d6d1b];return _0x124fa3;};'use strict';var util=require(_0xd47b('0x0'));var db=require(_0xd47b('0x1'))['db'];var jayson=require('jayson/promise');var logger=require('../logger')('triggers');var client=jayson[_0xd47b('0x2')][_0xd47b('0x3')]({'port':0x232a});var triggers=[{'channel':'Chat','model':_0xd47b('0x4'),'event':'afterCreate','condition':_0xd47b('0x5'),'callback':afterCreate},{'channel':_0xd47b('0x6'),'model':_0xd47b('0x4'),'event':_0xd47b('0x7'),'condition':_0xd47b('0x8'),'callback':afterUpdate},{'channel':_0xd47b('0x6'),'model':_0xd47b('0x9'),'event':_0xd47b('0xa'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0xd47b('0x6'),'model':_0xd47b('0xb'),'event':_0xd47b('0xa'),'condition':'newmessage','callback':afterCreateOfflineMessage},{'channel':_0xd47b('0xc'),'model':_0xd47b('0xd'),'event':_0xd47b('0xa'),'condition':'newinteraction','callback':afterCreate},{'channel':_0xd47b('0xc'),'model':_0xd47b('0xd'),'event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':_0xd47b('0xc'),'model':_0xd47b('0xe'),'event':_0xd47b('0xa'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0xd47b('0xf'),'model':_0xd47b('0x10'),'event':_0xd47b('0xa'),'condition':_0xd47b('0x5'),'callback':afterCreate},{'channel':_0xd47b('0xf'),'model':_0xd47b('0x10'),'event':_0xd47b('0x7'),'condition':_0xd47b('0x8'),'callback':afterUpdate},{'channel':_0xd47b('0xf'),'model':_0xd47b('0x11'),'event':'afterCreate','condition':_0xd47b('0x12'),'callback':afterCreateMessage},{'channel':_0xd47b('0x13'),'model':_0xd47b('0x14'),'event':_0xd47b('0xa'),'condition':_0xd47b('0x5'),'callback':afterCreate},{'channel':_0xd47b('0x13'),'model':_0xd47b('0x14'),'event':_0xd47b('0x7'),'condition':_0xd47b('0x8'),'callback':afterUpdate},{'channel':_0xd47b('0x13'),'model':'FaxMessage','event':_0xd47b('0xa'),'condition':'newmessage','callback':afterCreateMessage},{'channel':_0xd47b('0x15'),'model':_0xd47b('0x16'),'event':_0xd47b('0xa'),'condition':'newinteraction','callback':afterCreate},{'channel':_0xd47b('0x15'),'model':'MailInteraction','event':'afterUpdate','condition':'closedinteraction','callback':afterUpdate},{'channel':_0xd47b('0x15'),'model':_0xd47b('0x17'),'event':_0xd47b('0xa'),'condition':_0xd47b('0x12'),'callback':afterCreateMessage},{'channel':_0xd47b('0x18'),'model':_0xd47b('0x19'),'event':_0xd47b('0xa'),'condition':'newinteraction','callback':afterCreate},{'channel':_0xd47b('0x18'),'model':_0xd47b('0x19'),'event':_0xd47b('0x7'),'condition':'closedinteraction','callback':afterUpdate},{'channel':'Openchannel','model':'OpenchannelMessage','event':_0xd47b('0xa'),'condition':_0xd47b('0x12'),'callback':afterCreateMessage}];function request(_0x2147a5){return client[_0xd47b('0x1a')](_0xd47b('0x1b'),_0x2147a5)[_0xd47b('0x1c')](function(_0x2bfac6){logger[_0xd47b('0x1d')](_0xd47b('0x1e'),_0xd47b('0x1b'),_0x2bfac6);if(_0x2bfac6[_0xd47b('0x1f')]){if(_0x2bfac6[_0xd47b('0x1f')][_0xd47b('0x20')]===0x1f4){logger[_0xd47b('0x1f')](_0xd47b('0x1e'),_0xd47b('0x1b'),_0x2bfac6['error']);}}})[_0xd47b('0x21')](function(_0x2c98ce){logger[_0xd47b('0x1f')](_0xd47b('0x1e'),'EventManager',_0x2c98ce);});}function afterCreateMessage(_0x35617b){return function(_0xd7afeb){_0xd7afeb=_0xd7afeb['get']({'plain':!![]});_0xd7afeb[_0xd47b('0x22')]=_0x35617b;_0xd7afeb['motionChannel']=_0x35617b;_0xd7afeb[_0xd47b('0x23')]=_0xd7afeb['direction'];Promise[_0xd47b('0x24')]()[_0xd47b('0x1c')](function(){if(typeof _0xd7afeb[_0xd47b('0x25')]===_0xd47b('0x26'))return null;var _0x2dc40b=_0xd47b('0x27')+_0xd7afeb[_0xd47b('0x25')];return db['sequelize'][_0xd47b('0x28')](_0x2dc40b,{'type':db['Sequelize']['QueryTypes'][_0xd47b('0x29')],'raw':!![]});})[_0xd47b('0x1c')](function(_0x16d744){if(_0x16d744){_0xd7afeb[_0xd47b('0x2a')]=_0x16d744[0x0];}if(typeof _0xd7afeb[_0xd47b('0x2b')]===_0xd47b('0x26'))return;return getAgent(_0xd7afeb[_0xd47b('0x2b')]);})[_0xd47b('0x1c')](function(_0x10ae08){if(_0x10ae08){_0xd7afeb['interface']=util['format'](_0xd47b('0x2c'),_0x10ae08['name']);_0xd7afeb[_0xd47b('0x2d')]=_0x10ae08;_0xd7afeb[_0xd47b('0x22')]=_0x35617b;return request({'event':_0xd47b('0x2e'),'message':_0xd7afeb});}else{return request({'event':_0xd47b('0x2f'),'message':_0xd7afeb});}})[_0xd47b('0x21')](function(_0x2c0236){logger[_0xd47b('0x1f')](_0xd47b('0x1e'),_0xd47b('0x30'),_0x2c0236);});};}function afterCreateOfflineMessage(_0x4b833c){return function(_0x41e63b){_0x41e63b=_0x41e63b[_0xd47b('0x31')]({'plain':!![]});_0x41e63b[_0xd47b('0x22')]=_0x4b833c;_0x41e63b['motionChannel']=_0x4b833c;_0x41e63b[_0xd47b('0x23')]='offlineMessage';return request({'event':_0x41e63b['event'],'message':_0x41e63b});};}function afterCreate(_0x52ad58,_0x33edc4){return function(_0x4837e8){_0x4837e8=_0x4837e8[_0xd47b('0x31')]({'plain':!![]});_0x4837e8['channel']=_0x52ad58;_0x4837e8[_0xd47b('0x32')]=_0x52ad58;_0x4837e8[_0xd47b('0x23')]=_0xd47b('0x33');Promise['resolve']()[_0xd47b('0x1c')](function(){var _0x46138f='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0x4837e8[_0xd47b('0x25')];return db[_0xd47b('0x34')][_0xd47b('0x28')](_0x46138f,{'type':db[_0xd47b('0x35')][_0xd47b('0x36')][_0xd47b('0x29')],'raw':!![]});})['then'](function(_0x3ab8ed){if(_0x3ab8ed){_0x4837e8[_0xd47b('0x2a')]=_0x3ab8ed[0x0];}if(typeof _0x4837e8['UserId']===_0xd47b('0x26'))return;return getAgent(_0x4837e8[_0xd47b('0x2b')]);})[_0xd47b('0x1c')](function(_0x3c4a15){if(_0x3c4a15){_0x4837e8['interface']=util[_0xd47b('0x37')](_0xd47b('0x2c'),_0x3c4a15[_0xd47b('0x38')]);_0x4837e8[_0xd47b('0x2d')]=_0x3c4a15;}return request({'event':_0x33edc4,'message':_0x4837e8});})['catch'](function(_0x42bd17){logger['error'](_0xd47b('0x1e'),_0xd47b('0x39'),_0x42bd17);});};}function afterUpdate(_0x491e07){return function(_0x1ab803){var _0x2bbad3=_0x1ab803[_0xd47b('0x3a')](_0xd47b('0x3b'))&&_0x1ab803[_0xd47b('0x3b')];var _0x2041b0=_0x1ab803[_0xd47b('0x3a')](_0xd47b('0x3c'));if(_0x2bbad3||_0x2041b0){var _0x8f3aee=_0x2bbad3?_0xd47b('0x8'):'substatus';var _0xf4b8a6=_0x1ab803[_0xd47b('0x31')]({'plain':!![]});_0xf4b8a6[_0xd47b('0x22')]=_0x491e07;_0xf4b8a6['motionChannel']=_0x491e07;_0xf4b8a6[_0xd47b('0x23')]=_0x2bbad3?_0xd47b('0x3b'):_0xd47b('0x3c');var _0x53a0d8='SELECT\x20*\x20FROM\x20cm_contacts\x20WHERE\x20id\x20=\x20'+_0xf4b8a6['ContactId'];return db['sequelize'][_0xd47b('0x28')](_0x53a0d8,{'type':db['Sequelize'][_0xd47b('0x36')]['SELECT'],'raw':!![]})[_0xd47b('0x1c')](function(_0x221435){if(_0x221435){_0xf4b8a6[_0xd47b('0x2a')]=_0x221435[0x0];}if(typeof _0xf4b8a6[_0xd47b('0x2b')]===_0xd47b('0x26'))return;return getAgent(_0xf4b8a6['UserId']);})[_0xd47b('0x1c')](function(_0x1791cf){if(_0x1791cf){_0xf4b8a6[_0xd47b('0x3d')]=util[_0xd47b('0x37')]('SIP/%s',_0x1791cf[_0xd47b('0x38')]);_0xf4b8a6[_0xd47b('0x2d')]=_0x1791cf;}return request({'event':_0x8f3aee,'message':_0xf4b8a6});})[_0xd47b('0x21')](function(_0x44d820){logger[_0xd47b('0x1f')](_0xd47b('0x1e'),_0xd47b('0x3e'),_0x44d820);});}};}function getAgent(_0x374b63){return db[_0xd47b('0x3f')]['find']({'where':{'id':_0x374b63},'attributes':['id','name','fullname','email',_0xd47b('0x40')],'raw':!![]})['then'](function(_0x5e59ff){return _0x5e59ff;});}exports[_0xd47b('0x41')]=function(){for(var _0x41aa71=0x0;_0x41aa71<triggers[_0xd47b('0x42')];_0x41aa71+=0x1){if(db[_0xd47b('0x43')](triggers[_0x41aa71]['model'])){db[triggers[_0x41aa71][_0xd47b('0x44')]]['hook'](triggers[_0x41aa71][_0xd47b('0x23')],triggers[_0x41aa71][_0xd47b('0x45')](triggers[_0x41aa71][_0xd47b('0x22')][_0xd47b('0x46')](),triggers[_0x41aa71][_0xd47b('0x47')]));}}};
\ No newline at end of file
index 5dd62a5..fe60baa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x99cd=['whatsapp','openchannel','isValidChannel','toLowerCase','blockedAt','updateAttributes','getLicense','role','count','agent','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','bluebird','../mysqldb','voice','mail','fax'];(function(_0xbf171b,_0x21c916){var _0x21ab7e=function(_0x46a03d){while(--_0x46a03d){_0xbf171b['push'](_0xbf171b['shift']());}};_0x21ab7e(++_0x21c916);}(_0x99cd,0x9a));var _0xd99c=function(_0x166b35,_0x3ad006){_0x166b35=_0x166b35-0x0;var _0x5b1cae=_0x99cd[_0x166b35];return _0x5b1cae;};'use strict';var _=require(_0xd99c('0x0'));var BPromise=require(_0xd99c('0x1'));var db=require(_0xd99c('0x2'))['db'];var util=require('./license/util');var channels=[_0xd99c('0x3'),_0xd99c('0x4'),'chat',_0xd99c('0x5'),'sms',_0xd99c('0x6'),_0xd99c('0x7')];exports['getChannels']=function(){return channels;};exports[_0xd99c('0x8')]=function(_0x413416){_0x413416=_0x413416[_0xd99c('0x9')]();return _['includes'](channels,_0x413416);};exports['clearBlockUser']=function(_0xd4bb24,_0x281bfd,_0x58a8a1,_0x629bc6){var _0x9120d={'loginAttempts':_0x281bfd,'blocked':_0x58a8a1};if(!_['isUndefined'](_0x629bc6)){_0x9120d[_0xd99c('0xa')]=_0x629bc6;}return _0xd4bb24[_0xd99c('0xb')](_0x9120d);};exports[_0xd99c('0xc')]=function(_0x3f9af3){return new BPromise(function(_0x1d31c9,_0x5bc5b5){var _0x1199c8=0x0;if(_0x3f9af3[_0xd99c('0xd')]!=='agent'){_0x1d31c9(_0x3f9af3);}db['User'][_0xd99c('0xe')]({'where':{'role':_0xd99c('0xf'),'online':!![],'id':{'$ne':_0x3f9af3['id']}}})[_0xd99c('0x10')](function(_0x397cc0){_0x1199c8=_0x397cc0;return util['getLicense']();})[_0xd99c('0x10')](function(_0x574395){if(_0x574395&&_0x574395[_0xd99c('0x11')]&&_0x1199c8>=_0x574395['agents']){throw Error(_0xd99c('0x12'));}_0x1d31c9(_0x3f9af3);})[_0xd99c('0x13')](function(_0x145f94){_0x5bc5b5(_0x145f94);});});};
\ No newline at end of file
+var _0x25d1=['count','then','agents','Maximum\x20login\x20has\x20been\x20reached','catch','lodash','bluebird','../mysqldb','./license/util','voice','chat','fax','sms','whatsapp','getChannels','isValidChannel','toLowerCase','clearBlockUser','isUndefined','blockedAt','updateAttributes','getLicense','role','agent'];(function(_0x3c1a37,_0x58d56e){var _0x44a11d=function(_0x549247){while(--_0x549247){_0x3c1a37['push'](_0x3c1a37['shift']());}};_0x44a11d(++_0x58d56e);}(_0x25d1,0xf5));var _0x125d=function(_0x314c1d,_0x3fba0c){_0x314c1d=_0x314c1d-0x0;var _0x511529=_0x25d1[_0x314c1d];return _0x511529;};'use strict';var _=require(_0x125d('0x0'));var BPromise=require(_0x125d('0x1'));var db=require(_0x125d('0x2'))['db'];var util=require(_0x125d('0x3'));var channels=[_0x125d('0x4'),'mail',_0x125d('0x5'),_0x125d('0x6'),_0x125d('0x7'),_0x125d('0x8'),'openchannel'];exports[_0x125d('0x9')]=function(){return channels;};exports[_0x125d('0xa')]=function(_0x35cb8e){_0x35cb8e=_0x35cb8e[_0x125d('0xb')]();return _['includes'](channels,_0x35cb8e);};exports[_0x125d('0xc')]=function(_0x57eac6,_0x54001a,_0x34c437,_0x52885e){var _0x4af1c9={'loginAttempts':_0x54001a,'blocked':_0x34c437};if(!_[_0x125d('0xd')](_0x52885e)){_0x4af1c9[_0x125d('0xe')]=_0x52885e;}return _0x57eac6[_0x125d('0xf')](_0x4af1c9);};exports[_0x125d('0x10')]=function(_0x10074b){return new BPromise(function(_0x2afe05,_0x339556){var _0x228c0d=0x0;if(_0x10074b[_0x125d('0x11')]!==_0x125d('0x12')){_0x2afe05(_0x10074b);}db['User'][_0x125d('0x13')]({'where':{'role':'agent','online':!![],'id':{'$ne':_0x10074b['id']}}})[_0x125d('0x14')](function(_0x187967){_0x228c0d=_0x187967;return util[_0x125d('0x10')]();})[_0x125d('0x14')](function(_0xeb02cd){if(_0xeb02cd&&_0xeb02cd[_0x125d('0x15')]&&_0x228c0d>=_0xeb02cd[_0x125d('0x15')]){throw Error(_0x125d('0x16'));}_0x2afe05(_0x10074b);})[_0x125d('0x17')](function(_0x27ddd6){_0x339556(_0x27ddd6);});});};
\ No newline at end of file
diff --git a/server/errors/api.js b/server/errors/api.js
new file mode 100644 (file)
index 0000000..65e3ec1
--- /dev/null
@@ -0,0 +1,18 @@
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: info@xcally.com                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
+// *                                                                       *
+// *************************************************************************
+var _0x54ef=['send','exports','util','../config/logger','api','message','Internal\x20Server\x20Error','name','Error','inherits','Bad\x20Request','Not\x20Found','Forbidden','OutOfInterval','error','stack','status'];(function(_0x277013,_0x33ca2b){var _0x5d6704=function(_0x1d34a9){while(--_0x1d34a9){_0x277013['push'](_0x277013['shift']());}};_0x5d6704(++_0x33ca2b);}(_0x54ef,0x112));var _0xf54e=function(_0x4d43a9,_0x8b9d85){_0x4d43a9=_0x4d43a9-0x0;var _0xf2be61=_0x54ef[_0x4d43a9];return _0xf2be61;};'use strict';var util=require(_0xf54e('0x0'));var logger=require(_0xf54e('0x1'))(_0xf54e('0x2'));var APIError=function(_0x5d180f,_0xd936f7){this[_0xf54e('0x3')]=_0x5d180f||_0xf54e('0x4');this[_0xf54e('0x5')]=_0xd936f7||_0xf54e('0x6');util[_0xf54e('0x7')](APIError,Error);};var APIBadRequestError=function(_0x12d43f){this['message']=_0x12d43f||'Bad\x20Request';this[_0xf54e('0x5')]=_0xf54e('0x8');util[_0xf54e('0x7')](APIBadRequestError,APIError);};var APINotFoundError=function(_0x561870){this[_0xf54e('0x3')]=_0x561870||'Entity\x20not\x20found';this[_0xf54e('0x5')]=_0xf54e('0x9');util['inherits'](APINotFoundError,APIError);};function getStatusCode(_0x26fc3e){switch(_0x26fc3e){case _0xf54e('0x8'):return 0x190;case _0xf54e('0xa'),_0xf54e('0xb'):return 0x193;case'Not\x20Found':return 0x194;default:return 0x1f4;}}function handleError(_0x558502){return function(_0xc939ab){logger[_0xf54e('0xc')](_0xc939ab[_0xf54e('0xd')]);var _0x553759=getStatusCode(_0xc939ab[_0xf54e('0x5')]);if(_0xc939ab['name'])delete _0xc939ab['name'];return _0x558502[_0xf54e('0xe')](_0x553759)[_0xf54e('0xf')](_0xc939ab);};}module[_0xf54e('0x10')]={'APIError':APIError,'APIBadRequestError':APIBadRequestError,'APINotFoundError':APINotFoundError,'handleError':handleError};
\ No newline at end of file
index 141a42a..f345695 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6599=['status','render','404'];(function(_0x4e8c61,_0x7148f8){var _0x1c92df=function(_0x2346b1){while(--_0x2346b1){_0x4e8c61['push'](_0x4e8c61['shift']());}};_0x1c92df(++_0x7148f8);}(_0x6599,0xb0));var _0x9659=function(_0x364b32,_0x4dec35){_0x364b32=_0x364b32-0x0;var _0x3f3ea0=_0x6599[_0x364b32];return _0x3f3ea0;};'use strict';module['exports'][0x194]=function pageNotFound(_0x1b837c,_0x2aa407){var _0x6e313e=_0x9659('0x0');var _0x21a23e=0x194;var _0x4c8ba9={'status':_0x21a23e};_0x2aa407[_0x9659('0x1')](_0x4c8ba9['status']);_0x2aa407[_0x9659('0x2')](_0x6e313e,{},function(_0x4fd132,_0x2acc26){if(_0x4fd132){return _0x2aa407[_0x9659('0x1')](_0x4c8ba9[_0x9659('0x1')])['json'](_0x4c8ba9);}_0x2aa407['send'](_0x2acc26);});};
\ No newline at end of file
+var _0x6d8f=['status','json','send','exports','404'];(function(_0x394a15,_0x1d7dd5){var _0x14f558=function(_0x47ebe3){while(--_0x47ebe3){_0x394a15['push'](_0x394a15['shift']());}};_0x14f558(++_0x1d7dd5);}(_0x6d8f,0xdf));var _0xf6d8=function(_0x3e4303,_0x292fc3){_0x3e4303=_0x3e4303-0x0;var _0x49eec6=_0x6d8f[_0x3e4303];return _0x49eec6;};'use strict';module[_0xf6d8('0x0')][0x194]=function pageNotFound(_0x122591,_0x29d158){var _0x439b77=_0xf6d8('0x1');var _0x29e0a2=0x194;var _0x1710e9={'status':_0x29e0a2};_0x29d158['status'](_0x1710e9[_0xf6d8('0x2')]);_0x29d158['render'](_0x439b77,{},function(_0x437d92,_0x51c428){if(_0x437d92){return _0x29d158[_0xf6d8('0x2')](_0x1710e9[_0xf6d8('0x2')])[_0xf6d8('0x3')](_0x1710e9);}_0x29d158[_0xf6d8('0x4')](_0x51c428);});};
\ No newline at end of file
diff --git a/server/migrations/2.6.3.js b/server/migrations/2.6.3.js
new file mode 100644 (file)
index 0000000..ad3e05e
--- /dev/null
@@ -0,0 +1,187 @@
+'use strict';
+
+var BPromise = require('bluebird');
+var util = require('util');
+
+var logger = require('../config/logger')('migration');
+
+var Sequence = function() {};
+
+Sequence.prototype.enqueue = function(fn) {
+  this.tail = this.tail ? this.tail.finally(fn) : fn();
+};
+
+var Migration = function(queryInterface) {
+  this.queryInterface = queryInterface;
+  this.sequence = new Sequence();
+};
+
+Migration.prototype.changeColumn = function(table, column, type) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface
+      .changeColumn(table, column, type)
+      .then(function() {
+        logger.info('Changed column %s in table %s', column, table);
+      })
+      .catch(function(err) {
+        logger.info(JSON.stringify(err));
+      });
+  });
+};
+
+Migration.prototype.addColumn = function(table, column, type) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface
+      .addColumn(table, column, type)
+      .then(function() {
+        logger.info('Added column %s to %s', column, table);
+      })
+      .catch(function(err) {
+        logger.info(JSON.stringify(err));
+      });
+  });
+};
+
+Migration.prototype.dropTable = function(table) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface
+      .dropTable(table, {
+        force: true,
+      })
+      .then(function() {
+        logger.info('table dropped %s', table);
+      })
+      .catch(function(err) {
+        logger.info(JSON.stringify(err));
+      });
+  });
+};
+
+Migration.prototype.addIndex = function(table, column, indexName) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface
+      .addIndex(table, column, {
+        indexName: indexName,
+      })
+      .then(function() {
+        logger.info('addIndex %s %s %s', table, column.join(','), indexName);
+      })
+      .catch(function(err) {
+        logger.info(JSON.stringify(err));
+      });
+  });
+};
+
+Migration.prototype.removeIndex = function(table, indexName) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface
+      .removeIndex(table, indexName)
+      .then(function() {
+        logger.info('removeIndex %s %s', table, indexName);
+      })
+      .catch(function(err) {
+        logger.info(JSON.stringify(err));
+      });
+  });
+};
+
+Migration.prototype.query = function(sql) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface.sequelize
+      .query(sql)
+      .then(function() {
+        logger.info('query %s', sql);
+      })
+      .catch(function(err) {
+        logger.info(JSON.stringify(err));
+      });
+  });
+};
+
+Migration.prototype.removeColumn = function(table, column) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface
+      .removeColumn(table, column)
+      .then(function() {
+        logger.info('Removed column %s from %s', column, table);
+      })
+      .catch(function(err) {
+        logger.info(
+          util.inspect(err, {
+            showHidden: false,
+            depth: null,
+          })
+        );
+      });
+  });
+};
+
+Migration.prototype.renameColumn = function(table, oldColumn, newColumn) {
+  var _this = this;
+  this.sequence.enqueue(function() {
+    return _this.queryInterface
+      .renameColumn(table, oldColumn, newColumn)
+      .then(function() {
+        logger.info(
+          'Renamed column from %s to %s on %s',
+          oldColumn,
+          newColumn,
+          table
+        );
+      })
+      .catch(function(err) {
+        logger.info(
+          util.inspect(err, {
+            showHidden: false,
+            depth: null,
+          })
+        );
+      });
+  });
+};
+
+Migration.prototype.final = function(resolve) {
+  this.sequence.enqueue(function() {
+    return resolve();
+  });
+};
+
+module.exports = {
+  up: function(queryInterface, Sequelize) {
+    return new BPromise(function(resolve) {
+      var migration = new Migration(queryInterface);
+
+      // START openchannel_interactions
+      migration.addColumn('openchannel_interactions', 'firstMsgDirection', {
+        type: Sequelize.ENUM('in', 'out'),
+        defaultValue: 'in',
+        allowNull: false
+      });
+
+      // Update the firstMsgDirection column with correct value (direction of the first message for each interactions)
+      migration.query("UPDATE openchannel_interactions t1, (SELECT OpenchannelInteractionId, MIN(id) AS messageid, ANY_VALUE(direction) AS direction FROM openchannel_messages WHERE OpenchannelInteractionId IS NOT NULL GROUP BY OpenchannelInteractionId) t2 SET t1.firstMsgDirection = t2.direction WHERE t1.id = t2.OpenchannelInteractionId;");
+      // END openchannel_interactions
+
+      // START SMSACCOUNT
+      migration.changeColumn('sms_accounts', 'type', {
+        type: Sequelize.ENUM('twilio', 'skebby', 'connectel', 'clicksend', 'plivo', 'clickatell', 'csc', 'bandwidth', 'infobip', 'intelepeer')
+      });
+      // END SMSACCOUNT
+
+      // START FINAL
+      migration.final(resolve);
+      // END FINAL
+    });
+  },
+
+  down: function(queryInterface, Sequelize) {
+    // var migration = new Migration(queryInterface);
+  },
+};
\ No newline at end of file
index 83c7585..77d3adb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb08d=['SmsAccountId','SmsInteractionId','sms_interaction_has_tags','team_has_sms_queues','OpenchannelAccountId','OpenchannelQueue','OpenchannelQueueId','openchannel_interaction_has_tags','OpenchannelInteractionId','ChatWebsiteId','ProactiveActions','Agent','Queue','ChatQueueId','Website','chat_interaction_has_tags','user_has_chat_interactions','ChatInteractionId','Attachments','ChatOfflineMessageId','team_has_chat_queues','ChatInternalMessage','ChatGroupId','Members','Contacts','CompanyId','Phones','CmContactId','Company','cm_contact_has_tags','CmHopperAdditionalPhone','AdditionalPhones','CmHopperId','Campaign','CampaignId','AutomationAllId','AutomationAnyId','Actions','ParentId','Intervals','MailApplications','FaxApplications','CustomReportId','whatsapp_interaction_has_tags','ItemType','Hopper','AllConditions','AllCondition','AnyConditions','AnyCondition','TriggerId','Fields','DefaultReportId','MetricId','Configurations','AccountId','Subjects','Descriptions','FieldId','Subject','SubjectId','Description','DescriptionId','VariableId','Field','DeskField','int_desk_configuration_has_tags','ZohoAccount','ZohoConfiguration','ZendeskField','FreshdeskConfiguration','int_freshdesk_configuration_has_tags','Dynamics365Account','Dynamics365Configuration','FromId','ToId','SessionId','ProjectId','VoiceQueues','team_has_openchannel_queues','team_has_whatsapp_queues','VoicePrefixes','SquareProjectId','FromAccount','FromUserId','FromAgent','ToUserId','ToAgent','ToMailQueueId','ToQueue','ToMailAccountId','ToAccount','FromChatWebsiteId','ToChatWebsiteId','ToFaxAccountId','OpenchannelTransferReport','FromOpenchannelAccountId','ToOpenchannelQueueId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','Queues','UserProfileSection','UserProfileSections','UserProfileResource','Resources','sectionId','WhatsappAccountId','WhatsappMessage','WhatsappInteractionId','user_has_whatsapp_interactions','WhatsappTransferReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','WhatsappQueueId','lodash','jstz','determine','defaultsDeep','sequelize','motion2','xcall','mysql','utf8mb4','name','utf8','sequelizeHistory','xC@LL1234','utf8_general_ci','username','password','options','database','import','../api/user/user.model','VoiceChanSpy','../api/voiceChanSpy/voiceChanSpy.model','VoiceContext','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','VoiceQueue','../api/voiceQueue/voiceQueue.model','VoiceRecording','ScreenRecording','../api/screenRecording/screenRecording.model','../api/voiceMail/voiceMail.model','VoiceMailMessage','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','VoiceQueueReport','../api/voiceQueueReport/voiceQueueReport.model','MemberReport','../api/memberReport/memberReport.model','Trunk','../api/trunk/trunk.model','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','UserWhatsappQueue','../api/userWhatsappQueue/userWhatsappQueue.model','MailServerIn','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','../api/mailAccount/mailAccount.model','MailSubstatus','MailInteraction','../api/mailInteraction/mailInteraction.model','../api/mailMessage/mailMessage.model','MailApplication','../api/mailApplication/mailApplication.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','../api/dashboard/dashboard.model','DashboardItem','FaxAccount','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','../api/faxQueue/faxQueue.model','FaxQueueReport','SmsAccount','../api/smsAccount/smsAccount.model','SmsApplication','../api/smsApplication/smsApplication.model','SmsMessage','../api/smsMessage/smsMessage.model','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','../api/openchannelApplication/openchannelApplication.model','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','../api/openchannelQueue/openchannelQueue.model','ChatWebsite','OpenchannelQueueReport','ChatApplication','ChatInteraction','../api/chatInteraction/chatInteraction.model','ChatMessage','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','ChatQueue','../api/chatQueue/chatQueue.model','ChatGroup','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','../api/cmContact/cmContact.model','CmHopper','../api/cmHopper/cmHopper.model','CmHopperBlack','CmHopperFinal','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','Automation','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','Condition','../api/condition/condition.model','Interval','../api/interval/interval.model','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','Schedule','../api/schedule/schedule.model','Sound','../api/sound/sound.model','Tag','../api/tag/tag.model','ContactItemType','../api/contactItemType/contactItemType.model','CmContactHasItem','../api/cmContactHasItem/cmContactHasItem.model','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model','Template','../api/template/template.model','Trigger','Variable','../api/integration/integration.model','IntegrationReport','../api/integrationReport/integrationReport.model','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','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','../api/intSalesforceField/intSalesforceField.model','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','SugarcrmField','DeskAccount','../api/intDeskAccount/intDeskAccount.model','DeskConfiguration','../api/intDeskConfiguration/intDeskConfiguration.model','../api/intDeskField/intDeskField.model','../api/intZohoAccount/intZohoAccount.model','ZohoField','../api/intZohoField/intZohoField.model','ZendeskAccount','../api/intZendeskAccount/intZendeskAccount.model','ZendeskConfiguration','../api/intZendeskConfiguration/intZendeskConfiguration.model','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','../api/intFreshdeskField/intFreshdeskField.model','VtigerAccount','VtigerConfiguration','VtigerField','ServicenowAccount','../api/intServicenowAccount/intServicenowAccount.model','ServicenowConfiguration','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','../api/intDynamics365Account/intDynamics365Account.model','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Integration','Network','../api/network/network.model','ChatQueueReport','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','../api/jscriptyQuestionReport/jscriptyQuestionReport.model','../api/jscriptySessionReport/jscriptySessionReport.model','SmsQueueReport','../api/smsQueueReport/smsQueueReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','Setting','../api/squareOdbc/squareOdbc.model','SquareProject','../api/squareProject/squareProject.model','SquareRecording','../api/squareRecording/squareRecording.model','SquareMessage','Team','../api/team/team.model','License','../api/license/license.model','../api/campaign/campaign.model','Migration','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','../api/plugin/plugin.model','MailTransferReport','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','../api/faxTransferReport/faxTransferReport.model','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','../api/cmList/cmList.model','VoicePrefix','../api/voicePrefix/voicePrefix.model','../api/userProfile/userProfile.model','../api/userProfileResource/userProfileResource.model','UserNotification','../api/userNotification/userNotification.model','WhatsappAccount','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','../api/whatsappMessage/whatsappMessage.model','WhatsappQueueReport','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','../api/user-setting/user-setting.model','User','hasOne','UserId','cascade','hasMany','Recordings','VoiceQueuesRt','Extensions','HopperHistory','SmsInteraction','SmsInteractions','FaxInteractions','MailInteractions','WhatsappInteractions','UserNotifications','belongsTo','UserProfile','userProfileId','belongsToMany','chat_group_has_users','cm_user_has_contacts','CmList','Lists','cm_user_has_lists','user_has_teams','user_has_mail_interactions','ChatInteractions','user_has_fax_interactions','OpenchannelInteractions','user_has_openchannel_interactions','MailQueue','MailQueues','ChatQueues','FaxQueue','FaxQueues','SmsQueues','OpenchannelQueues','WhatsappQueues','ChatWebsites','user_has_chat_websites','FaxAccounts','MailAccounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccounts','user_has_whatsapp_accounts','user_has_square_projects','SpiedAgents','ChanSpyId','Applications','moh_has_sounds','VoiceQueueId','Hoppers','HopperFinals','HopperHistories','HopperBlacks','JscriptySessionReport','JscriptySessions','TrunkId','TrunkBackup','TrunkBackupId','IntervalId','mandatoryDispositionPause','mandatoryDispositionPauseId','voice_queues_has_cm_lists','Teams','TeamVoiceQueue','BlackLists','mailbox','mailboxuser','QueueCalls','uniqueid','Contact','ContactId','MailAccountId','CloudProviderId','restrict','Imap','Smtp','Answers','MailMessage','Interactions','ListId','TemplateId','Agents','user_has_mail_accounts','team_has_mail_queues','Messages','MailInteractionId','Account','Owner','mail_interaction_has_tags','Tags','Users','Interaction','TagId','List','Dashboard','Items','Dispositions','FaxAccountId','Exntensions','FaxMessage','Pause','user_has_fax_accounts','FaxInteractionId','fax_interaction_has_tags','ThroughTags','AttachmentId'];(function(_0x8de54f,_0x271987){var _0x14cba4=function(_0x58ed41){while(--_0x58ed41){_0x8de54f['push'](_0x8de54f['shift']());}};_0x14cba4(++_0x271987);}(_0xb08d,0x75));var _0xdb08=function(_0x2f9395,_0x81628e){_0x2f9395=_0x2f9395-0x0;var _0x8d4096=_0xb08d[_0x2f9395];return _0x8d4096;};'use strict';var config=require('../config/environment');var Sequelize=require('sequelize');var _=require(_0xdb08('0x0'));var jstz=require(_0xdb08('0x1'));var timezone=jstz[_0xdb08('0x2')]();config['sequelize']=_[_0xdb08('0x3')](config[_0xdb08('0x4')],{'database':_0xdb08('0x5'),'username':_0xdb08('0x6'),'password':'xC@LL1234','options':{'host':'127.0.0.1','port':0xcea,'dialect':_0xdb08('0x7'),'dialectOptions':{'charset':_0xdb08('0x8')},'logging':![],'timezone':timezone[_0xdb08('0x9')](),'define':{'charset':_0xdb08('0xa'),'collate':'utf8_general_ci'}}});config[_0xdb08('0xb')]=_[_0xdb08('0x3')](config[_0xdb08('0xb')],{'database':_0xdb08('0x5'),'username':_0xdb08('0x6'),'password':_0xdb08('0xc'),'options':{'host':'127.0.0.1','port':0xcea,'dialect':_0xdb08('0x7'),'dialectOptions':{'charset':_0xdb08('0x8')},'logging':![],'timezone':timezone[_0xdb08('0x9')](),'define':{'charset':_0xdb08('0xa'),'collate':_0xdb08('0xd')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xdb08('0x4')]['database'],config[_0xdb08('0x4')][_0xdb08('0xe')],config['sequelize'][_0xdb08('0xf')],config[_0xdb08('0x4')][_0xdb08('0x10')])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config['sequelizeHistory'][_0xdb08('0x11')],config['sequelizeHistory'][_0xdb08('0xe')],config[_0xdb08('0xb')][_0xdb08('0xf')],config[_0xdb08('0xb')][_0xdb08('0x10')])};db['User']=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x13'));db[_0xdb08('0x14')]=db[_0xdb08('0x4')]['import'](_0xdb08('0x15'));db[_0xdb08('0x16')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/voiceContext/voiceContext.model');db[_0xdb08('0x17')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x18'));db[_0xdb08('0x19')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0x1a'));db[_0xdb08('0x1b')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x1c'));db[_0xdb08('0x1d')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/voiceRecording/voiceRecording.model');db[_0xdb08('0x1e')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x1f'));db['VoiceMail']=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x20'));db[_0xdb08('0x21')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/voiceMailMessage/voiceMailMessage.model');db[_0xdb08('0x22')]=db[_0xdb08('0x4')]['import'](_0xdb08('0x23'));db['VoiceDialReport']=db['sequelize'][_0xdb08('0x12')](_0xdb08('0x24'));db[_0xdb08('0x25')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/voiceAgentReport/voiceAgentReport.model');db[_0xdb08('0x26')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0x27'));db[_0xdb08('0x28')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x29'));db[_0xdb08('0x2a')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x2b'));db['VoiceTransferReport']=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x2c'));db[_0xdb08('0x2d')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/userVoiceQueueRt/userVoiceQueueRt.model');db[_0xdb08('0x2e')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0x2f'));db[_0xdb08('0x30')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x31'));db[_0xdb08('0x32')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/userMailQueue/userMailQueue.model');db[_0xdb08('0x33')]=db['sequelize']['import'](_0xdb08('0x34'));db[_0xdb08('0x35')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x36'));db[_0xdb08('0x37')]=db[_0xdb08('0x4')]['import'](_0xdb08('0x38'));db[_0xdb08('0x39')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x3a'));db[_0xdb08('0x3b')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x3c'));db[_0xdb08('0x3d')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0x3e'));db[_0xdb08('0x3f')]=db[_0xdb08('0x4')]['import'](_0xdb08('0x40'));db['MailQueue']=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/mailQueue/mailQueue.model');db[_0xdb08('0x41')]=db[_0xdb08('0x4')]['import']('../api/mailSubstatus/mailSubstatus.model');db[_0xdb08('0x42')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x43'));db['MailMessage']=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x44'));db[_0xdb08('0x45')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x46'));db[_0xdb08('0x47')]=db[_0xdb08('0x4')]['import'](_0xdb08('0x48'));db['Dashboard']=db['sequelize'][_0xdb08('0x12')](_0xdb08('0x49'));db[_0xdb08('0x4a')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/dashboardItem/dashboardItem.model');db[_0xdb08('0x4b')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0x4c'));db[_0xdb08('0x4d')]=db[_0xdb08('0x4')]['import'](_0xdb08('0x4e'));db[_0xdb08('0x4f')]=db[_0xdb08('0x4')]['import'](_0xdb08('0x50'));db['FaxMessage']=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/faxMessage/faxMessage.model');db['FaxQueue']=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x51'));db[_0xdb08('0x52')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/faxQueueReport/faxQueueReport.model');db[_0xdb08('0x53')]=db[_0xdb08('0x4')]['import'](_0xdb08('0x54'));db[_0xdb08('0x55')]=db[_0xdb08('0x4')]['import'](_0xdb08('0x56'));db['SmsInteraction']=db['sequelize'][_0xdb08('0x12')]('../api/smsInteraction/smsInteraction.model');db[_0xdb08('0x57')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0x58'));db[_0xdb08('0x59')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x5a'));db[_0xdb08('0x5b')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0x5c'));db[_0xdb08('0x5d')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0x5e'));db[_0xdb08('0x5f')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x60'));db[_0xdb08('0x61')]=db[_0xdb08('0x4')]['import'](_0xdb08('0x62'));db['OpenchannelQueue']=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x63'));db[_0xdb08('0x64')]=db['sequelize'][_0xdb08('0x12')]('../api/chatWebsite/chatWebsite.model');db[_0xdb08('0x65')]=db[_0xdb08('0x4')]['import']('../api/openchannelQueueReport/openchannelQueueReport.model');db[_0xdb08('0x66')]=db[_0xdb08('0x4')]['import']('../api/chatApplication/chatApplication.model');db[_0xdb08('0x67')]=db[_0xdb08('0x4')]['import'](_0xdb08('0x68'));db[_0xdb08('0x69')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/chatMessage/chatMessage.model');db[_0xdb08('0x6a')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0x6b'));db[_0xdb08('0x6c')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x6d'));db[_0xdb08('0x6e')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/chatGroup/chatGroup.model');db[_0xdb08('0x6f')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0x70'));db[_0xdb08('0x71')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0x72'));db[_0xdb08('0x73')]=db[_0xdb08('0x4')]['import'](_0xdb08('0x74'));db[_0xdb08('0x75')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x76'));db[_0xdb08('0x77')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/cmHopperBlack/cmHopperBlack.model');db[_0xdb08('0x78')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x79'));db[_0xdb08('0x7a')]=db[_0xdb08('0x4')]['import'](_0xdb08('0x7b'));db[_0xdb08('0x7c')]=db[_0xdb08('0x4')]['import']('../api/reportAgentPreview/reportAgentPreview.model');db[_0xdb08('0x7d')]=db[_0xdb08('0x4')]['import'](_0xdb08('0x7e'));db[_0xdb08('0x7f')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/action/action.model');db[_0xdb08('0x80')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/automation/automation.model');db[_0xdb08('0x81')]=db['sequelize']['import'](_0xdb08('0x82'));db[_0xdb08('0x83')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x84'));db[_0xdb08('0x85')]=db['sequelize']['import'](_0xdb08('0x86'));db[_0xdb08('0x87')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x88'));db['Pause']=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x89'));db[_0xdb08('0x8a')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x8b'));db[_0xdb08('0x8c')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/voiceQueuesLog/voiceQueuesLog.model');db[_0xdb08('0x8d')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x8e'));db[_0xdb08('0x8f')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0x90'));db[_0xdb08('0x91')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x92'));db[_0xdb08('0x93')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x94'));db[_0xdb08('0x95')]=db[_0xdb08('0x4')]['import'](_0xdb08('0x96'));db['CmHopperAdditionalPhone']=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x97'));db[_0xdb08('0x98')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x99'));db[_0xdb08('0x9a')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/trigger/trigger.model');db[_0xdb08('0x9b')]=db[_0xdb08('0x4')]['import']('../api/variable/variable.model');db['Integration']=db['sequelize'][_0xdb08('0x12')](_0xdb08('0x9c'));db[_0xdb08('0x9d')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x9e'));db[_0xdb08('0x9f')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xa0'));db[_0xdb08('0xa1')]=db[_0xdb08('0x4')]['import']('../api/analyticDefaultReport/analyticDefaultReport.model');db[_0xdb08('0xa2')]=db[_0xdb08('0x4')]['import'](_0xdb08('0xa3'));db[_0xdb08('0xa4')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xa5'));db[_0xdb08('0xa6')]=db['sequelize']['import'](_0xdb08('0xa7'));db[_0xdb08('0xa8')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0xa9'));db[_0xdb08('0xaa')]=db['sequelize'][_0xdb08('0x12')]('../api/intSalesforceAccount/intSalesforceAccount.model');db[_0xdb08('0xab')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xac'));db[_0xdb08('0xad')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xae'));db[_0xdb08('0xaf')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xb0'));db[_0xdb08('0xb1')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model');db[_0xdb08('0xb2')]=db[_0xdb08('0x4')]['import']('../api/intSugarcrmField/intSugarcrmField.model');db[_0xdb08('0xb3')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xb4'));db[_0xdb08('0xb5')]=db['sequelize']['import'](_0xdb08('0xb6'));db['DeskField']=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xb7'));db['ZohoAccount']=db['sequelize'][_0xdb08('0x12')](_0xdb08('0xb8'));db['ZohoConfiguration']=db[_0xdb08('0x4')]['import']('../api/intZohoConfiguration/intZohoConfiguration.model');db[_0xdb08('0xb9')]=db[_0xdb08('0x4')]['import'](_0xdb08('0xba'));db[_0xdb08('0xbb')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0xbc'));db[_0xdb08('0xbd')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xbe'));db['ZendeskField']=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xbf'));db[_0xdb08('0xc0')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xc1'));db['FreshdeskConfiguration']=db['sequelize']['import'](_0xdb08('0xc2'));db[_0xdb08('0xc3')]=db[_0xdb08('0x4')]['import'](_0xdb08('0xc4'));db[_0xdb08('0xc5')]=db['sequelize'][_0xdb08('0x12')]('../api/intVtigerAccount/intVtigerAccount.model');db[_0xdb08('0xc6')]=db[_0xdb08('0x4')]['import']('../api/intVtigerConfiguration/intVtigerConfiguration.model');db[_0xdb08('0xc7')]=db[_0xdb08('0x4')]['import']('../api/intVtigerField/intVtigerField.model');db[_0xdb08('0xc8')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xc9'));db[_0xdb08('0xca')]=db['sequelize']['import'](_0xdb08('0xcb'));db[_0xdb08('0xcc')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0xcd'));db['Dynamics365Account']=db[_0xdb08('0x4')]['import'](_0xdb08('0xce'));db['Dynamics365Configuration']=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xcf'));db[_0xdb08('0xd0')]=db[_0xdb08('0x4')]['import'](_0xdb08('0xd1'));db[_0xdb08('0xd2')]=db[_0xdb08('0x4')]['import'](_0xdb08('0xd3'));db[_0xdb08('0xd4')]=db['sequelize']['import']('../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model');db[_0xdb08('0xd5')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xd6'));db[_0xdb08('0xd7')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x9c'));db[_0xdb08('0xd8')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0xd9'));db[_0xdb08('0xda')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/chatQueueReport/chatQueueReport.model');db['ChatInternalMessage']=db['sequelize']['import']('../api/chatInternalMessage/chatInternalMessage.model');db[_0xdb08('0xdb')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0xdc'));db[_0xdb08('0xdd')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xde'));db['JscriptySessionReport']=db['sequelize']['import'](_0xdb08('0xdf'));db[_0xdb08('0xe0')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xe1'));db['SquareReport']=db['sequelize']['import']('../api/squareReport/squareReport.model');db[_0xdb08('0xe2')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xe3'));db[_0xdb08('0xe4')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/jscriptyProject/jscriptyProject.model');db[_0xdb08('0xe5')]=db[_0xdb08('0x4')]['import']('../api/setting/setting.model');db['SquareOdbc']=db['sequelize'][_0xdb08('0x12')](_0xdb08('0xe6'));db[_0xdb08('0xe7')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0xe8'));db[_0xdb08('0xe9')]=db[_0xdb08('0x4')]['import'](_0xdb08('0xea'));db[_0xdb08('0xeb')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/squareMessage/squareMessage.model');db[_0xdb08('0xec')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xed'));db[_0xdb08('0xee')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xef'));db['Campaign']=db['sequelize'][_0xdb08('0x12')](_0xdb08('0xf0'));db[_0xdb08('0xf1')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xf2'));db[_0xdb08('0xf3')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xf4'));db['Plugin']=db['sequelize']['import'](_0xdb08('0xf5'));db[_0xdb08('0xf6')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/mailTransferReport/mailTransferReport.model');db[_0xdb08('0xf7')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0xf8'));db[_0xdb08('0xf9')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xfa'));db['OpenchannelTransferReport']=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xfb'));db[_0xdb08('0xfc')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0xfd'));db['CmList']=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0xfe'));db[_0xdb08('0xff')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x100'));db['UserProfile']=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x101'));db['UserProfileSection']=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/userProfileSection/userProfileSection.model');db['UserProfileResource']=db['sequelize'][_0xdb08('0x12')](_0xdb08('0x102'));db[_0xdb08('0x103')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0x104'));db[_0xdb08('0x105')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x106'));db[_0xdb08('0x107')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0x108'));db[_0xdb08('0x109')]=db['sequelize'][_0xdb08('0x12')](_0xdb08('0x10a'));db['WhatsappMessage']=db['sequelize'][_0xdb08('0x12')](_0xdb08('0x10b'));db[_0xdb08('0x10c')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/whatsappQueueReport/whatsappQueueReport.model');db['WhatsappTransferReport']=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x10d'));db[_0xdb08('0x10e')]=db[_0xdb08('0x4')]['import'](_0xdb08('0x10f'));db[_0xdb08('0x110')]=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x111'));db['TeamVoiceQueue']=db[_0xdb08('0x4')][_0xdb08('0x12')](_0xdb08('0x112'));db[_0xdb08('0x113')]=db[_0xdb08('0x4')][_0xdb08('0x12')]('../api/teamVoicePrefix/teamVoicePrefix.model');db[_0xdb08('0x114')]=db[_0xdb08('0x4')]['import'](_0xdb08('0x115'));db['UserSetting']=db[_0xdb08('0x4')]['import'](_0xdb08('0x116'));db[_0xdb08('0x117')][_0xdb08('0x118')](db['VoiceMail'],{'as':'VoiceMail','onDelete':'cascade','foreignKey':_0xdb08('0x119')});db[_0xdb08('0x117')][_0xdb08('0x118')](db['UserSetting'],{'as':'userSetting','onDelete':_0xdb08('0x11a'),'foreignKey':'UserId'});db[_0xdb08('0x117')][_0xdb08('0x11b')](db['VoiceRecording'],{'as':_0xdb08('0x11c'),'foreignKey':_0xdb08('0x119')});db[_0xdb08('0x117')][_0xdb08('0x11b')](db[_0xdb08('0x2d')],{'as':_0xdb08('0x11d'),'foreignKey':_0xdb08('0x119')});db[_0xdb08('0x117')]['hasMany'](db['VoiceExtension'],{'as':_0xdb08('0x11e'),'onDelete':_0xdb08('0x11a'),'hooks':!![]});db[_0xdb08('0x117')][_0xdb08('0x11b')](db[_0xdb08('0x78')],{'as':'HopperFinals','foreignKey':_0xdb08('0x119')});db[_0xdb08('0x117')][_0xdb08('0x11b')](db[_0xdb08('0x7a')],{'as':_0xdb08('0x11f'),'foreignKey':_0xdb08('0x119')});db[_0xdb08('0x117')]['hasMany'](db['ReportAgentPreview'],{'as':_0xdb08('0x7c'),'foreignKey':'UserId'});db[_0xdb08('0x117')][_0xdb08('0x11b')](db[_0xdb08('0x5f')],{'as':'OpenchannelInteractions','foreignKey':_0xdb08('0x119')});db[_0xdb08('0x117')][_0xdb08('0x11b')](db[_0xdb08('0x67')],{'as':'ChatInteractions','foreignKey':_0xdb08('0x119')});db[_0xdb08('0x117')][_0xdb08('0x11b')](db[_0xdb08('0x120')],{'as':_0xdb08('0x121'),'foreignKey':_0xdb08('0x119')});db['User']['hasMany'](db['FaxInteraction'],{'as':_0xdb08('0x122'),'foreignKey':_0xdb08('0x119')});db[_0xdb08('0x117')][_0xdb08('0x11b')](db[_0xdb08('0x42')],{'as':_0xdb08('0x123'),'foreignKey':_0xdb08('0x119')});db[_0xdb08('0x117')][_0xdb08('0x11b')](db[_0xdb08('0x109')],{'as':_0xdb08('0x124'),'foreignKey':_0xdb08('0x119')});db[_0xdb08('0x117')][_0xdb08('0x11b')](db[_0xdb08('0x103')],{'as':_0xdb08('0x125'),'foreignKey':'SenderId'});db[_0xdb08('0x117')][_0xdb08('0x126')](db['UserProfile'],{'as':_0xdb08('0x127'),'foreignKey':_0xdb08('0x128')});db[_0xdb08('0x117')][_0xdb08('0x129')](db['ChatGroup'],{'as':'Groups','through':_0xdb08('0x12a')});db['User']['belongsToMany'](db[_0xdb08('0x73')],{'as':'Contacts','through':_0xdb08('0x12b')});db[_0xdb08('0x117')][_0xdb08('0x129')](db[_0xdb08('0x12c')],{'as':_0xdb08('0x12d'),'through':_0xdb08('0x12e')});db[_0xdb08('0x117')][_0xdb08('0x129')](db[_0xdb08('0xec')],{'through':_0xdb08('0x12f')});db[_0xdb08('0x117')][_0xdb08('0x129')](db[_0xdb08('0x42')],{'as':_0xdb08('0x123'),'through':_0xdb08('0x130')});db['User'][_0xdb08('0x129')](db['ChatInteraction'],{'as':_0xdb08('0x131'),'through':'user_has_chat_interactions'});db[_0xdb08('0x117')][_0xdb08('0x129')](db['FaxInteraction'],{'as':_0xdb08('0x122'),'through':_0xdb08('0x132')});db['User'][_0xdb08('0x129')](db[_0xdb08('0x120')],{'as':_0xdb08('0x121'),'through':'user_has_sms_interactions'});db[_0xdb08('0x117')][_0xdb08('0x129')](db['OpenchannelInteraction'],{'as':_0xdb08('0x133'),'through':_0xdb08('0x134')});db[_0xdb08('0x117')][_0xdb08('0x129')](db[_0xdb08('0x109')],{'as':_0xdb08('0x124'),'through':'user_has_whatsapp_interactions'});db[_0xdb08('0x117')][_0xdb08('0x129')](db[_0xdb08('0x1b')],{'as':'VoiceQueues','through':_0xdb08('0x2e'),'required':![]});db['User'][_0xdb08('0x129')](db[_0xdb08('0xff')],{'as':'VoicePrefixes','through':_0xdb08('0x114'),'required':![]});db[_0xdb08('0x117')][_0xdb08('0x129')](db[_0xdb08('0x135')],{'as':_0xdb08('0x136'),'through':_0xdb08('0x32'),'required':![]});db[_0xdb08('0x117')]['belongsToMany'](db['ChatQueue'],{'as':_0xdb08('0x137'),'through':'UserChatQueue','required':![],'hooks':!![]});db[_0xdb08('0x117')]['belongsToMany'](db[_0xdb08('0x138')],{'as':_0xdb08('0x139'),'through':_0xdb08('0x33'),'required':![]});db[_0xdb08('0x117')][_0xdb08('0x129')](db[_0xdb08('0x59')],{'as':_0xdb08('0x13a'),'through':_0xdb08('0x35'),'required':![]});db['User'][_0xdb08('0x129')](db['OpenchannelQueue'],{'as':_0xdb08('0x13b'),'through':_0xdb08('0x37'),'required':![]});db[_0xdb08('0x117')][_0xdb08('0x129')](db[_0xdb08('0x10e')],{'as':_0xdb08('0x13c'),'through':_0xdb08('0x39'),'required':![]});db[_0xdb08('0x117')]['belongsToMany'](db[_0xdb08('0x12c')],{'through':'cm_user_has_lists'});db['User'][_0xdb08('0x129')](db['ChatWebsite'],{'as':_0xdb08('0x13d'),'through':_0xdb08('0x13e')});db[_0xdb08('0x117')][_0xdb08('0x129')](db[_0xdb08('0x4b')],{'as':_0xdb08('0x13f'),'through':'user_has_fax_accounts'});db[_0xdb08('0x117')]['belongsToMany'](db['MailAccount'],{'as':_0xdb08('0x140'),'through':'user_has_mail_accounts'});db[_0xdb08('0x117')][_0xdb08('0x129')](db[_0xdb08('0x5b')],{'as':_0xdb08('0x141'),'through':_0xdb08('0x142')});db[_0xdb08('0x117')]['belongsToMany'](db[_0xdb08('0x53')],{'as':_0xdb08('0x143'),'through':_0xdb08('0x144')});db[_0xdb08('0x117')]['belongsToMany'](db[_0xdb08('0x105')],{'as':_0xdb08('0x145'),'through':_0xdb08('0x146')});db[_0xdb08('0x117')][_0xdb08('0x129')](db[_0xdb08('0xe7')],{'as':'SquareProjects','through':_0xdb08('0x147')});db[_0xdb08('0x14')]['hasMany'](db[_0xdb08('0x17')],{'as':_0xdb08('0x148'),'onDelete':'cascade','foreignKey':_0xdb08('0x149')});db[_0xdb08('0x16')][_0xdb08('0x11b')](db['VoiceExtension'],{'onDelete':_0xdb08('0x11a')});db[_0xdb08('0x17')]['hasMany'](db[_0xdb08('0x17')],{'as':_0xdb08('0x14a'),'onDelete':_0xdb08('0x11a')});db['VoiceMusicOnHold'][_0xdb08('0x129')](db[_0xdb08('0x8f')],{'as':'Sounds','through':_0xdb08('0x14b')});db[_0xdb08('0x1b')]['hasMany'](db[_0xdb08('0x2d')],{'as':'Members','foreignKey':_0xdb08('0x14c')});db['VoiceQueue'][_0xdb08('0x11b')](db[_0xdb08('0x75')],{'as':_0xdb08('0x14d'),'foreignKey':_0xdb08('0x14c')});db['VoiceQueue'][_0xdb08('0x11b')](db[_0xdb08('0x78')],{'as':_0xdb08('0x14e'),'foreignKey':_0xdb08('0x14c')});db[_0xdb08('0x1b')][_0xdb08('0x11b')](db[_0xdb08('0x7a')],{'as':_0xdb08('0x14f'),'foreignKey':_0xdb08('0x14c')});db[_0xdb08('0x1b')][_0xdb08('0x11b')](db['ReportAgentPreview'],{'as':_0xdb08('0x7c'),'foreignKey':_0xdb08('0x14c')});db[_0xdb08('0x1b')][_0xdb08('0x11b')](db[_0xdb08('0x77')],{'as':_0xdb08('0x150'),'foreignKey':_0xdb08('0x14c')});db[_0xdb08('0x1b')][_0xdb08('0x11b')](db[_0xdb08('0x151')],{'as':_0xdb08('0x152'),'foreignKey':_0xdb08('0x14c')});db[_0xdb08('0x1b')][_0xdb08('0x126')](db[_0xdb08('0x2a')],{'as':_0xdb08('0x2a'),'foreignKey':_0xdb08('0x153')});db[_0xdb08('0x1b')]['belongsTo'](db[_0xdb08('0x2a')],{'as':_0xdb08('0x154'),'foreignKey':_0xdb08('0x155')});db['VoiceQueue'][_0xdb08('0x126')](db[_0xdb08('0x87')],{'as':_0xdb08('0x87'),'foreignKey':_0xdb08('0x156')});db['VoiceQueue'][_0xdb08('0x126')](db['Pause'],{'as':_0xdb08('0x157'),'foreignKey':_0xdb08('0x158')});db[_0xdb08('0x1b')][_0xdb08('0x129')](db[_0xdb08('0x12c')],{'as':_0xdb08('0x12d'),'through':_0xdb08('0x159')});db['VoiceQueue'][_0xdb08('0x129')](db[_0xdb08('0x117')],{'as':'Agents','through':'UserVoiceQueue'});db[_0xdb08('0x1b')]['belongsToMany'](db[_0xdb08('0xec')],{'as':_0xdb08('0x15a'),'through':_0xdb08('0x15b')});db[_0xdb08('0x1b')]['belongsToMany'](db['CmList'],{'as':_0xdb08('0x15c'),'through':'voice_queues_has_cm_blacklists'});db[_0xdb08('0x1d')][_0xdb08('0x126')](db[_0xdb08('0x117')],{'as':_0xdb08('0x117'),'foreignKey':_0xdb08('0x119')});db[_0xdb08('0x1e')][_0xdb08('0x126')](db[_0xdb08('0x117')],{'as':_0xdb08('0x117'),'foreignKey':'UserId'});db['VoiceMail'][_0xdb08('0x11b')](db[_0xdb08('0x21')],{'as':'Messages','onDelete':'cascade','foreignKey':'mailboxuser','sourceKey':_0xdb08('0x15d')});db[_0xdb08('0x21')][_0xdb08('0x126')](db['VoiceMail'],{'foreignKey':_0xdb08('0x15e'),'targetKey':_0xdb08('0x15d')});db[_0xdb08('0x22')]['hasMany'](db['VoiceQueueReport'],{'as':_0xdb08('0x15f'),'foreignKey':_0xdb08('0x160'),'constraints':![]});db[_0xdb08('0x22')][_0xdb08('0x11b')](db[_0xdb08('0x25')],{'as':'AgentReports','foreignKey':_0xdb08('0x160'),'constraints':![]});db['VoiceCallReport'][_0xdb08('0x126')](db[_0xdb08('0x117')],{'as':_0xdb08('0x117'),'foreignKey':_0xdb08('0x119')});db['VoiceCallReport'][_0xdb08('0x126')](db[_0xdb08('0x73')],{'as':_0xdb08('0x161'),'foreignKey':_0xdb08('0x162')});db[_0xdb08('0x3b')][_0xdb08('0x126')](db[_0xdb08('0x3f')],{'as':_0xdb08('0x3f'),'foreignKey':_0xdb08('0x163')});db[_0xdb08('0x3b')][_0xdb08('0x126')](db[_0xdb08('0x110')],{'as':_0xdb08('0x110'),'foreignKey':_0xdb08('0x164'),'onDelete':_0xdb08('0x165')});db[_0xdb08('0x3d')][_0xdb08('0x126')](db['MailAccount'],{'as':_0xdb08('0x3f'),'foreignKey':_0xdb08('0x163')});db[_0xdb08('0x3d')]['belongsTo'](db[_0xdb08('0x110')],{'as':_0xdb08('0x110'),'foreignKey':_0xdb08('0x164'),'onDelete':_0xdb08('0x165')});db[_0xdb08('0x3f')][_0xdb08('0x118')](db[_0xdb08('0x3b')],{'as':_0xdb08('0x166'),'onDelete':_0xdb08('0x11a')});db[_0xdb08('0x3f')][_0xdb08('0x118')](db[_0xdb08('0x3d')],{'as':_0xdb08('0x167'),'onDelete':'cascade'});db['MailAccount'][_0xdb08('0x11b')](db[_0xdb08('0x83')],{'as':'Dispositions','foreignKey':_0xdb08('0x163'),'onDelete':'cascade'});db[_0xdb08('0x3f')][_0xdb08('0x11b')](db['CannedAnswer'],{'as':_0xdb08('0x168'),'foreignKey':'MailAccountId'});db['MailAccount'][_0xdb08('0x11b')](db[_0xdb08('0x169')],{'as':'Messages','foreignKey':_0xdb08('0x163')});db[_0xdb08('0x3f')][_0xdb08('0x11b')](db[_0xdb08('0x42')],{'as':_0xdb08('0x16a')});db['MailAccount']['hasMany'](db[_0xdb08('0x45')],{'as':_0xdb08('0x14a')});db[_0xdb08('0x3f')][_0xdb08('0x126')](db[_0xdb08('0x12c')],{'as':'List','foreignKey':_0xdb08('0x16b')});db[_0xdb08('0x3f')]['belongsTo'](db['Template'],{'as':_0xdb08('0x98'),'foreignKey':_0xdb08('0x16c')});db[_0xdb08('0x3f')][_0xdb08('0x126')](db['Pause'],{'as':_0xdb08('0x157'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xdb08('0x3f')]['belongsToMany'](db[_0xdb08('0x117')],{'as':_0xdb08('0x16d'),'through':_0xdb08('0x16e')});db[_0xdb08('0x135')][_0xdb08('0x129')](db[_0xdb08('0x117')],{'as':_0xdb08('0x16d'),'through':_0xdb08('0x32')});db[_0xdb08('0x135')][_0xdb08('0x129')](db[_0xdb08('0xec')],{'through':_0xdb08('0x16f'),'as':'Teams'});db[_0xdb08('0x42')][_0xdb08('0x11b')](db[_0xdb08('0x169')],{'as':_0xdb08('0x170'),'onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x171')});db[_0xdb08('0x42')][_0xdb08('0x126')](db[_0xdb08('0x3f')],{'as':_0xdb08('0x172'),'foreignKey':_0xdb08('0x163')});db[_0xdb08('0x42')][_0xdb08('0x126')](db[_0xdb08('0x73')],{'as':_0xdb08('0x161'),'foreignKey':_0xdb08('0x162')});db[_0xdb08('0x42')][_0xdb08('0x126')](db[_0xdb08('0x117')],{'as':_0xdb08('0x173'),'foreignKey':_0xdb08('0x119')});db[_0xdb08('0x42')][_0xdb08('0x129')](db['Tag'],{'through':_0xdb08('0x174'),'as':_0xdb08('0x175')});db[_0xdb08('0x42')][_0xdb08('0x129')](db[_0xdb08('0x91')],{'through':_0xdb08('0x174'),'as':'ThroughTags'});db[_0xdb08('0x42')][_0xdb08('0x129')](db['User'],{'as':_0xdb08('0x176'),'through':_0xdb08('0x130'),'foreignKey':_0xdb08('0x171')});db['MailMessage'][_0xdb08('0x11b')](db[_0xdb08('0xf3')],{'as':'Attachments','onDelete':_0xdb08('0x11a')});db[_0xdb08('0x169')]['belongsTo'](db[_0xdb08('0x117')],{'as':'User'});db['MailMessage'][_0xdb08('0x126')](db[_0xdb08('0x73')],{'onDelete':_0xdb08('0x11a'),'as':_0xdb08('0x161')});db[_0xdb08('0x169')][_0xdb08('0x126')](db[_0xdb08('0x42')],{'as':_0xdb08('0x177'),'foreignKey':_0xdb08('0x171')});db[_0xdb08('0x169')][_0xdb08('0x126')](db[_0xdb08('0x3f')],{'as':'Account','foreignKey':_0xdb08('0x163')});db[_0xdb08('0x169')][_0xdb08('0x126')](db[_0xdb08('0x64')],{'as':_0xdb08('0x64'),'foreignKey':'ChatWebsiteId'});db['MailMessage'][_0xdb08('0x126')](db['ChatOfflineMessage'],{'as':_0xdb08('0x6a'),'foreignKey':'ChatOfflineMessageId'});db[_0xdb08('0x45')][_0xdb08('0x126')](db[_0xdb08('0x117')],{'onDelete':_0xdb08('0x165')});db[_0xdb08('0x45')][_0xdb08('0x126')](db['MailQueue'],{'onDelete':_0xdb08('0x165')});db[_0xdb08('0x45')][_0xdb08('0x126')](db[_0xdb08('0x3f')],{'onDelete':'restrict'});db[_0xdb08('0x45')]['belongsTo'](db['Interval'],{'onDelete':'restrict','foreignKey':_0xdb08('0x156')});db[_0xdb08('0x45')][_0xdb08('0x126')](db[_0xdb08('0x91')],{'onDelete':_0xdb08('0x165'),'foreignKey':_0xdb08('0x178')});db[_0xdb08('0x47')]['belongsTo'](db['MailAccount'],{});db[_0xdb08('0x47')][_0xdb08('0x126')](db['CmList'],{'as':_0xdb08('0x179'),'foreignKey':_0xdb08('0x16b')});db['MailQueueReport'][_0xdb08('0x126')](db[_0xdb08('0x73')],{'as':_0xdb08('0x161'),'foreignKey':'ContactId'});db[_0xdb08('0x47')][_0xdb08('0x126')](db['MailInteraction'],{});db[_0xdb08('0x47')][_0xdb08('0x126')](db[_0xdb08('0x169')],{});db[_0xdb08('0x47')]['belongsTo'](db[_0xdb08('0x117')],{});db['MailQueueReport'][_0xdb08('0x126')](db[_0xdb08('0x135')],{});db[_0xdb08('0x17a')][_0xdb08('0x11b')](db[_0xdb08('0x4a')],{'as':_0xdb08('0x17b'),'onDelete':_0xdb08('0x11a')});db[_0xdb08('0x4b')][_0xdb08('0x11b')](db['Disposition'],{'as':_0xdb08('0x17c'),'foreignKey':'FaxAccountId','onDelete':_0xdb08('0x11a')});db[_0xdb08('0x4b')][_0xdb08('0x11b')](db[_0xdb08('0x81')],{'as':_0xdb08('0x168'),'foreignKey':_0xdb08('0x17d')});db[_0xdb08('0x4b')][_0xdb08('0x11b')](db[_0xdb08('0x4f')],{'as':_0xdb08('0x16a')});db['FaxAccount']['hasMany'](db[_0xdb08('0x4d')],{'as':_0xdb08('0x14a')});db[_0xdb08('0x4b')]['hasMany'](db['VoiceExtension'],{'as':_0xdb08('0x17e'),'onDelete':_0xdb08('0x11a')});db[_0xdb08('0x4b')][_0xdb08('0x11b')](db[_0xdb08('0x17f')],{'as':_0xdb08('0x170')});db['FaxAccount']['belongsTo'](db[_0xdb08('0x2a')],{'as':'Trunk'});db[_0xdb08('0x4b')][_0xdb08('0x126')](db[_0xdb08('0x12c')],{'as':'List','foreignKey':_0xdb08('0x16b')});db[_0xdb08('0x4b')][_0xdb08('0x126')](db[_0xdb08('0x180')],{'as':'mandatoryDispositionPause','foreignKey':_0xdb08('0x158')});db[_0xdb08('0x4b')][_0xdb08('0x129')](db[_0xdb08('0x117')],{'as':'Agents','through':_0xdb08('0x181')});db[_0xdb08('0x4d')][_0xdb08('0x126')](db[_0xdb08('0x117')],{'onDelete':'restrict'});db['FaxApplication'][_0xdb08('0x126')](db[_0xdb08('0x138')],{'onDelete':_0xdb08('0x165')});db[_0xdb08('0x4d')][_0xdb08('0x126')](db[_0xdb08('0x4b')],{'onDelete':_0xdb08('0x165')});db[_0xdb08('0x4d')][_0xdb08('0x126')](db[_0xdb08('0x91')],{'onDelete':_0xdb08('0x165'),'foreignKey':_0xdb08('0x178')});db[_0xdb08('0x4f')][_0xdb08('0x11b')](db['FaxMessage'],{'as':_0xdb08('0x170'),'onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x182')});db[_0xdb08('0x4f')][_0xdb08('0x126')](db[_0xdb08('0x4b')],{'as':_0xdb08('0x172'),'foreignKey':_0xdb08('0x17d')});db['FaxInteraction'][_0xdb08('0x126')](db[_0xdb08('0x73')],{'as':_0xdb08('0x161'),'foreignKey':_0xdb08('0x162')});db[_0xdb08('0x4f')][_0xdb08('0x126')](db['User'],{'as':_0xdb08('0x173'),'foreignKey':_0xdb08('0x119')});db[_0xdb08('0x4f')][_0xdb08('0x129')](db[_0xdb08('0x91')],{'through':_0xdb08('0x183'),'as':_0xdb08('0x175')});db[_0xdb08('0x4f')][_0xdb08('0x129')](db[_0xdb08('0x91')],{'through':_0xdb08('0x183'),'as':_0xdb08('0x184')});db[_0xdb08('0x4f')][_0xdb08('0x129')](db['User'],{'as':_0xdb08('0x176'),'through':_0xdb08('0x132'),'foreignKey':'FaxInteractionId'});db[_0xdb08('0x17f')]['belongsTo'](db[_0xdb08('0x117')],{'onDelete':_0xdb08('0x11a'),'as':_0xdb08('0x117')});db['FaxMessage'][_0xdb08('0x126')](db['FaxInteraction'],{'as':_0xdb08('0x177'),'foreignKey':_0xdb08('0x182')});db['FaxMessage'][_0xdb08('0x126')](db[_0xdb08('0x73')],{'onDelete':_0xdb08('0x11a'),'as':_0xdb08('0x161')});db[_0xdb08('0x17f')]['belongsTo'](db[_0xdb08('0xf3')],{'as':'Attachment','foreignKey':_0xdb08('0x185')});db[_0xdb08('0x17f')][_0xdb08('0x126')](db[_0xdb08('0x4b')],{'as':_0xdb08('0x172'),'foreignKey':_0xdb08('0x17d')});db[_0xdb08('0x138')]['belongsToMany'](db[_0xdb08('0x117')],{'as':_0xdb08('0x16d'),'through':'UserFaxQueue'});db['FaxQueue'][_0xdb08('0x129')](db[_0xdb08('0xec')],{'through':'team_has_fax_queues','as':_0xdb08('0x15a')});db[_0xdb08('0x52')][_0xdb08('0x126')](db[_0xdb08('0x4b')],{});db['FaxQueueReport'][_0xdb08('0x126')](db['CmList'],{'as':_0xdb08('0x179'),'foreignKey':_0xdb08('0x16b')});db[_0xdb08('0x52')]['belongsTo'](db[_0xdb08('0x73')],{'as':_0xdb08('0x161'),'foreignKey':_0xdb08('0x162')});db[_0xdb08('0x52')]['belongsTo'](db[_0xdb08('0x4f')],{});db[_0xdb08('0x52')]['belongsTo'](db[_0xdb08('0x17f')],{});db['FaxQueueReport'][_0xdb08('0x126')](db[_0xdb08('0x117')],{});db[_0xdb08('0x52')][_0xdb08('0x126')](db[_0xdb08('0x138')],{});db[_0xdb08('0x53')][_0xdb08('0x11b')](db[_0xdb08('0x83')],{'as':_0xdb08('0x17c'),'foreignKey':_0xdb08('0x186'),'onDelete':_0xdb08('0x11a')});db['SmsAccount'][_0xdb08('0x11b')](db[_0xdb08('0x81')],{'as':_0xdb08('0x168'),'foreignKey':'SmsAccountId'});db[_0xdb08('0x53')][_0xdb08('0x11b')](db['SmsMessage'],{'as':_0xdb08('0x170'),'foreignKey':_0xdb08('0x186')});db[_0xdb08('0x53')][_0xdb08('0x11b')](db[_0xdb08('0x120')],{'as':_0xdb08('0x16a')});db['SmsAccount'][_0xdb08('0x11b')](db[_0xdb08('0x55')],{'as':_0xdb08('0x14a')});db[_0xdb08('0x53')][_0xdb08('0x126')](db[_0xdb08('0x12c')],{'as':_0xdb08('0x179'),'foreignKey':_0xdb08('0x16b')});db[_0xdb08('0x53')]['belongsTo'](db[_0xdb08('0x180')],{'as':_0xdb08('0x157'),'foreignKey':_0xdb08('0x158')});db[_0xdb08('0x53')]['belongsToMany'](db[_0xdb08('0x117')],{'as':_0xdb08('0x16d'),'through':_0xdb08('0x144')});db[_0xdb08('0x55')][_0xdb08('0x126')](db[_0xdb08('0x117')],{'onDelete':_0xdb08('0x165')});db['SmsApplication'][_0xdb08('0x126')](db['SmsQueue'],{'onDelete':'restrict'});db[_0xdb08('0x55')]['belongsTo'](db[_0xdb08('0x53')],{'onDelete':_0xdb08('0x165')});db[_0xdb08('0x55')][_0xdb08('0x126')](db[_0xdb08('0x87')],{'onDelete':'restrict','foreignKey':'IntervalId'});db[_0xdb08('0x55')][_0xdb08('0x126')](db[_0xdb08('0x91')],{'onDelete':_0xdb08('0x165'),'foreignKey':_0xdb08('0x178')});db[_0xdb08('0x120')][_0xdb08('0x11b')](db[_0xdb08('0x57')],{'as':'Messages','onDelete':'cascade','foreignKey':_0xdb08('0x187')});db[_0xdb08('0x120')][_0xdb08('0x126')](db[_0xdb08('0x53')],{'as':_0xdb08('0x172'),'foreignKey':_0xdb08('0x186')});db['SmsInteraction'][_0xdb08('0x126')](db[_0xdb08('0x73')],{'as':_0xdb08('0x161'),'foreignKey':_0xdb08('0x162')});db[_0xdb08('0x120')][_0xdb08('0x126')](db['User'],{'as':_0xdb08('0x173'),'foreignKey':_0xdb08('0x119')});db[_0xdb08('0x120')][_0xdb08('0x129')](db['Tag'],{'through':_0xdb08('0x188'),'as':_0xdb08('0x175')});db[_0xdb08('0x120')][_0xdb08('0x129')](db['Tag'],{'through':_0xdb08('0x188'),'as':_0xdb08('0x184')});db[_0xdb08('0x120')][_0xdb08('0x129')](db[_0xdb08('0x117')],{'as':_0xdb08('0x176'),'through':'user_has_sms_interactions','foreignKey':_0xdb08('0x187')});db[_0xdb08('0x57')][_0xdb08('0x126')](db[_0xdb08('0x117')],{'as':_0xdb08('0x117')});db['SmsMessage'][_0xdb08('0x126')](db[_0xdb08('0x73')],{'onDelete':_0xdb08('0x11a'),'as':_0xdb08('0x161')});db[_0xdb08('0x57')]['belongsTo'](db[_0xdb08('0x120')],{'onDelete':'cascade','as':'Interaction','foreignKey':_0xdb08('0x187')});db[_0xdb08('0x57')]['belongsTo'](db[_0xdb08('0x53')],{'as':_0xdb08('0x172'),'foreignKey':'SmsAccountId'});db[_0xdb08('0x59')][_0xdb08('0x129')](db[_0xdb08('0x117')],{'as':'Agents','through':_0xdb08('0x35'),'foreignKey':'SmsQueueId'});db['SmsQueue'][_0xdb08('0x129')](db[_0xdb08('0xec')],{'through':_0xdb08('0x189'),'as':_0xdb08('0x15a')});db[_0xdb08('0x5b')][_0xdb08('0x11b')](db[_0xdb08('0x83')],{'as':_0xdb08('0x17c'),'foreignKey':'OpenchannelAccountId','onDelete':_0xdb08('0x11a')});db[_0xdb08('0x5b')][_0xdb08('0x11b')](db[_0xdb08('0x81')],{'as':'Answers','foreignKey':_0xdb08('0x18a')});db[_0xdb08('0x5b')][_0xdb08('0x11b')](db['OpenchannelInteraction'],{'as':'Interactions','foreignKey':_0xdb08('0x18a')});db[_0xdb08('0x5b')]['hasMany'](db['OpenchannelMessage'],{'as':_0xdb08('0x170'),'foreignKey':_0xdb08('0x18a')});db['OpenchannelAccount'][_0xdb08('0x11b')](db[_0xdb08('0x5d')],{'as':_0xdb08('0x14a'),'foreignKey':_0xdb08('0x18a')});db['OpenchannelAccount'][_0xdb08('0x126')](db['CmList'],{'as':_0xdb08('0x179'),'foreignKey':_0xdb08('0x16b')});db[_0xdb08('0x5b')][_0xdb08('0x126')](db[_0xdb08('0x180')],{'as':_0xdb08('0x157'),'foreignKey':_0xdb08('0x158')});db[_0xdb08('0x5b')][_0xdb08('0x129')](db['User'],{'as':_0xdb08('0x16d'),'through':_0xdb08('0x142')});db['OpenchannelApplication'][_0xdb08('0x126')](db[_0xdb08('0x117')],{'onDelete':_0xdb08('0x165')});db['OpenchannelApplication'][_0xdb08('0x126')](db[_0xdb08('0x18b')],{'onDelete':_0xdb08('0x165'),'foreignKey':_0xdb08('0x18c')});db[_0xdb08('0x5d')][_0xdb08('0x126')](db[_0xdb08('0x5b')],{'onDelete':_0xdb08('0x165'),'foreignKey':_0xdb08('0x18a')});db['OpenchannelApplication'][_0xdb08('0x126')](db['Interval'],{'onDelete':_0xdb08('0x165'),'foreignKey':_0xdb08('0x156')});db['OpenchannelApplication']['belongsTo'](db['Tag'],{'onDelete':_0xdb08('0x165'),'foreignKey':_0xdb08('0x178')});db[_0xdb08('0x5f')]['hasMany'](db[_0xdb08('0x61')],{'as':_0xdb08('0x170'),'onDelete':_0xdb08('0x11a'),'foreignKey':'OpenchannelInteractionId'});db[_0xdb08('0x5f')][_0xdb08('0x126')](db['OpenchannelAccount'],{'as':'Account','foreignKey':_0xdb08('0x18a')});db['OpenchannelInteraction']['belongsTo'](db[_0xdb08('0x73')],{'as':_0xdb08('0x161'),'foreignKey':_0xdb08('0x162')});db[_0xdb08('0x5f')]['belongsTo'](db['User'],{'as':_0xdb08('0x173'),'foreignKey':_0xdb08('0x119')});db[_0xdb08('0x5f')]['belongsToMany'](db[_0xdb08('0x91')],{'through':_0xdb08('0x18d'),'as':_0xdb08('0x175')});db[_0xdb08('0x5f')][_0xdb08('0x129')](db[_0xdb08('0x91')],{'through':_0xdb08('0x18d'),'as':_0xdb08('0x184')});db[_0xdb08('0x5f')]['belongsToMany'](db[_0xdb08('0x117')],{'as':_0xdb08('0x176'),'through':_0xdb08('0x134'),'foreignKey':_0xdb08('0x18e')});db[_0xdb08('0x61')]['belongsTo'](db[_0xdb08('0x117')],{'onDelete':_0xdb08('0x11a'),'as':_0xdb08('0x117')});db[_0xdb08('0x61')]['belongsTo'](db[_0xdb08('0x73')],{'onDelete':_0xdb08('0x11a'),'as':'Contact'});db[_0xdb08('0x61')][_0xdb08('0x126')](db[_0xdb08('0x5f')],{'onDelete':_0xdb08('0x11a'),'as':_0xdb08('0x177'),'foreignKey':_0xdb08('0x18e')});db[_0xdb08('0x61')][_0xdb08('0x126')](db['Attachment'],{'as':_0xdb08('0xf3'),'foreignKey':'AttachmentId'});db[_0xdb08('0x61')][_0xdb08('0x126')](db[_0xdb08('0x5b')],{'as':_0xdb08('0x172'),'foreignKey':_0xdb08('0x18a')});db[_0xdb08('0x18b')][_0xdb08('0x129')](db[_0xdb08('0x117')],{'as':_0xdb08('0x16d'),'through':_0xdb08('0x37'),'foreignKey':'OpenchannelQueueId'});db[_0xdb08('0x18b')][_0xdb08('0x129')](db['Team'],{'through':'team_has_openchannel_queues','as':_0xdb08('0x15a')});db[_0xdb08('0x64')][_0xdb08('0x11b')](db['Disposition'],{'as':'Dispositions','foreignKey':_0xdb08('0x18f'),'onDelete':_0xdb08('0x11a')});db['ChatWebsite'][_0xdb08('0x11b')](db['CannedAnswer'],{'as':_0xdb08('0x168'),'foreignKey':_0xdb08('0x18f')});db[_0xdb08('0x64')][_0xdb08('0x11b')](db[_0xdb08('0x6f')],{'as':_0xdb08('0x190')});db[_0xdb08('0x64')]['hasMany'](db[_0xdb08('0x67')],{'as':_0xdb08('0x16a')});db[_0xdb08('0x64')][_0xdb08('0x11b')](db[_0xdb08('0x66')],{'as':_0xdb08('0x14a')});db[_0xdb08('0x64')][_0xdb08('0x11b')](db[_0xdb08('0x69')],{'as':_0xdb08('0x170')});db[_0xdb08('0x64')]['belongsTo'](db[_0xdb08('0x12c')],{'as':_0xdb08('0x179'),'foreignKey':'ListId'});db[_0xdb08('0x64')][_0xdb08('0x126')](db[_0xdb08('0x87')],{'as':_0xdb08('0x87'),'foreignKey':_0xdb08('0x156')});db[_0xdb08('0x64')][_0xdb08('0x126')](db[_0xdb08('0x3f')],{'as':_0xdb08('0x3f'),'foreignKey':_0xdb08('0x163')});db[_0xdb08('0x64')][_0xdb08('0x126')](db[_0xdb08('0x180')],{'as':'mandatoryDispositionPause','foreignKey':_0xdb08('0x158')});db[_0xdb08('0x64')][_0xdb08('0x129')](db['User'],{'as':_0xdb08('0x16d'),'through':'user_has_chat_websites'});db[_0xdb08('0x65')][_0xdb08('0x126')](db['OpenchannelAccount'],{});db[_0xdb08('0x65')]['belongsTo'](db[_0xdb08('0x12c')],{'as':_0xdb08('0x179'),'foreignKey':_0xdb08('0x16b')});db[_0xdb08('0x65')]['belongsTo'](db[_0xdb08('0x73')],{'as':_0xdb08('0x161'),'foreignKey':_0xdb08('0x162')});db[_0xdb08('0x65')][_0xdb08('0x126')](db['OpenchannelInteraction'],{});db[_0xdb08('0x65')][_0xdb08('0x126')](db[_0xdb08('0x61')],{});db[_0xdb08('0x65')][_0xdb08('0x126')](db[_0xdb08('0x117')],{});db['OpenchannelQueueReport'][_0xdb08('0x126')](db[_0xdb08('0x18b')],{});db[_0xdb08('0x66')][_0xdb08('0x126')](db[_0xdb08('0x117')],{'as':_0xdb08('0x191'),'foreignKey':_0xdb08('0x119'),'onDelete':_0xdb08('0x165')});db[_0xdb08('0x66')][_0xdb08('0x126')](db[_0xdb08('0x6c')],{'as':_0xdb08('0x192'),'foreignKey':_0xdb08('0x193'),'onDelete':_0xdb08('0x165')});db[_0xdb08('0x66')][_0xdb08('0x126')](db[_0xdb08('0x64')],{'as':_0xdb08('0x194'),'foreignKey':_0xdb08('0x18f'),'onDelete':_0xdb08('0x165')});db[_0xdb08('0x66')][_0xdb08('0x126')](db[_0xdb08('0x91')],{'onDelete':_0xdb08('0x165'),'foreignKey':_0xdb08('0x178')});db[_0xdb08('0x67')][_0xdb08('0x11b')](db[_0xdb08('0x69')],{'as':_0xdb08('0x170'),'onDelete':_0xdb08('0x11a'),'foreignKey':'ChatInteractionId'});db['ChatInteraction'][_0xdb08('0x126')](db[_0xdb08('0x64')],{'as':'Account','foreignKey':'ChatWebsiteId'});db['ChatInteraction'][_0xdb08('0x126')](db[_0xdb08('0x73')],{'as':_0xdb08('0x161'),'foreignKey':_0xdb08('0x162')});db[_0xdb08('0x67')]['belongsTo'](db[_0xdb08('0x117')],{'as':_0xdb08('0x173'),'foreignKey':'UserId'});db[_0xdb08('0x67')]['belongsToMany'](db[_0xdb08('0x91')],{'through':_0xdb08('0x195'),'as':_0xdb08('0x175')});db[_0xdb08('0x67')][_0xdb08('0x129')](db[_0xdb08('0x91')],{'through':_0xdb08('0x195'),'as':'ThroughTags'});db[_0xdb08('0x67')][_0xdb08('0x129')](db[_0xdb08('0x117')],{'as':_0xdb08('0x176'),'through':_0xdb08('0x196'),'foreignKey':_0xdb08('0x197')});db[_0xdb08('0x69')]['belongsTo'](db[_0xdb08('0x117')],{'onDelete':_0xdb08('0x11a'),'as':_0xdb08('0x117')});db['ChatMessage'][_0xdb08('0x126')](db[_0xdb08('0x73')],{'onDelete':_0xdb08('0x11a'),'as':_0xdb08('0x161'),'foreignKey':_0xdb08('0x162')});db[_0xdb08('0x69')][_0xdb08('0x126')](db['ChatInteraction'],{'onDelete':'cascade','as':_0xdb08('0x177'),'foreignKey':'ChatInteractionId'});db[_0xdb08('0x69')][_0xdb08('0x126')](db[_0xdb08('0xf3')],{'as':_0xdb08('0xf3'),'foreignKey':_0xdb08('0x185')});db[_0xdb08('0x69')][_0xdb08('0x126')](db[_0xdb08('0x64')],{'as':_0xdb08('0x172'),'foreignKey':_0xdb08('0x18f')});db[_0xdb08('0x6a')]['hasMany'](db[_0xdb08('0xf3')],{'as':_0xdb08('0x198'),'foreignKey':_0xdb08('0x199'),'onDelete':_0xdb08('0x11a'),'hooks':!![]});db[_0xdb08('0x6a')][_0xdb08('0x126')](db['CmContact'],{'onDelete':_0xdb08('0x11a'),'as':'Contact','foreignKey':_0xdb08('0x162')});db[_0xdb08('0x6a')][_0xdb08('0x126')](db[_0xdb08('0x64')],{'as':_0xdb08('0x172'),'foreignKey':_0xdb08('0x18f')});db[_0xdb08('0x6c')][_0xdb08('0x129')](db[_0xdb08('0x117')],{'as':_0xdb08('0x16d'),'through':_0xdb08('0x30'),'hooks':!![]});db[_0xdb08('0x6c')]['belongsToMany'](db[_0xdb08('0xec')],{'through':_0xdb08('0x19a'),'as':_0xdb08('0x15a')});db[_0xdb08('0x6e')][_0xdb08('0x11b')](db[_0xdb08('0x19b')],{'as':_0xdb08('0x170'),'foreignKey':_0xdb08('0x19c'),'onDelete':_0xdb08('0x11a')});db[_0xdb08('0x6e')]['belongsToMany'](db[_0xdb08('0x117')],{'as':_0xdb08('0x19d'),'through':_0xdb08('0x12a')});db[_0xdb08('0x6f')][_0xdb08('0x126')](db[_0xdb08('0x64')],{'as':_0xdb08('0x194'),'foreignKey':'ChatWebsiteId'});db['CmCompany'][_0xdb08('0x11b')](db['CmContact'],{'as':_0xdb08('0x19e'),'foreignKey':_0xdb08('0x19f')});db['CmContact']['hasMany'](db[_0xdb08('0x95')],{'as':_0xdb08('0x1a0'),'foreignKey':_0xdb08('0x1a1')});db[_0xdb08('0x73')][_0xdb08('0x11b')](db[_0xdb08('0x75')],{'as':_0xdb08('0x14d'),'foreignKey':_0xdb08('0x162')});db[_0xdb08('0x73')][_0xdb08('0x11b')](db[_0xdb08('0x78')],{'as':'HopperFinals','foreignKey':_0xdb08('0x162')});db[_0xdb08('0x73')][_0xdb08('0x11b')](db[_0xdb08('0x7a')],{'as':_0xdb08('0x14f'),'foreignKey':'ContactId'});db[_0xdb08('0x73')][_0xdb08('0x11b')](db[_0xdb08('0x7c')],{'as':'ReportAgentPreview','foreignKey':_0xdb08('0x162')});db[_0xdb08('0x73')][_0xdb08('0x11b')](db['JscriptySessionReport'],{'as':_0xdb08('0x152'),'foreignKey':_0xdb08('0x162')});db[_0xdb08('0x73')][_0xdb08('0x11b')](db[_0xdb08('0x5f')],{'as':_0xdb08('0x133'),'foreignKey':'ContactId','onDelete':_0xdb08('0x165')});db[_0xdb08('0x73')]['hasMany'](db[_0xdb08('0x67')],{'as':_0xdb08('0x131'),'foreignKey':_0xdb08('0x162'),'onDelete':_0xdb08('0x165')});db[_0xdb08('0x73')][_0xdb08('0x11b')](db[_0xdb08('0x120')],{'as':_0xdb08('0x121'),'foreignKey':'ContactId','onDelete':_0xdb08('0x165')});db[_0xdb08('0x73')][_0xdb08('0x11b')](db[_0xdb08('0x4f')],{'as':'FaxInteractions','foreignKey':_0xdb08('0x162'),'onDelete':'restrict'});db[_0xdb08('0x73')][_0xdb08('0x11b')](db[_0xdb08('0x42')],{'as':_0xdb08('0x123'),'foreignKey':'ContactId','onDelete':_0xdb08('0x165')});db[_0xdb08('0x73')][_0xdb08('0x126')](db[_0xdb08('0x71')],{'as':_0xdb08('0x1a2'),'foreignKey':_0xdb08('0x19f')});db[_0xdb08('0x73')][_0xdb08('0x126')](db['CmList'],{'as':_0xdb08('0x179'),'foreignKey':_0xdb08('0x16b'),'onDelete':_0xdb08('0x11a')});db['CmContact'][_0xdb08('0x129')](db[_0xdb08('0x117')],{'as':_0xdb08('0x176'),'through':'cm_user_has_contacts'});db[_0xdb08('0x73')]['belongsToMany'](db[_0xdb08('0x91')],{'as':_0xdb08('0x175'),'through':_0xdb08('0x1a3')});db[_0xdb08('0x73')]['belongsToMany'](db[_0xdb08('0x91')],{'through':_0xdb08('0x1a3'),'as':_0xdb08('0x184')});db[_0xdb08('0x75')][_0xdb08('0x11b')](db[_0xdb08('0x1a4')],{'as':_0xdb08('0x1a5'),'foreignKey':_0xdb08('0x1a6')});db[_0xdb08('0x75')][_0xdb08('0x126')](db[_0xdb08('0x73')],{'as':_0xdb08('0x161'),'foreignKey':'ContactId','onDelete':'cascade'});db[_0xdb08('0x75')][_0xdb08('0x126')](db['CmList'],{'as':'List','foreignKey':_0xdb08('0x16b'),'onDelete':_0xdb08('0x11a')});db[_0xdb08('0x75')]['belongsTo'](db[_0xdb08('0x117')],{'as':_0xdb08('0x191'),'foreignKey':_0xdb08('0x119')});db[_0xdb08('0x75')][_0xdb08('0x126')](db[_0xdb08('0x1b')],{'as':_0xdb08('0x192'),'foreignKey':_0xdb08('0x14c'),'onDelete':'cascade'});db[_0xdb08('0x75')][_0xdb08('0x126')](db[_0xdb08('0x1a7')],{'as':_0xdb08('0x1a7'),'foreignKey':_0xdb08('0x1a8'),'onDelete':'cascade'});db['CmHopper'][_0xdb08('0x126')](db[_0xdb08('0x117')],{'as':_0xdb08('0x173'),'foreignKey':'OwnerId'});db[_0xdb08('0x77')][_0xdb08('0x126')](db[_0xdb08('0x73')],{'as':'Contact','foreignKey':'ContactId','onDelete':_0xdb08('0x11a')});db[_0xdb08('0x77')]['belongsTo'](db[_0xdb08('0x12c')],{'as':_0xdb08('0x179'),'foreignKey':'ListId','onDelete':_0xdb08('0x11a')});db[_0xdb08('0x77')][_0xdb08('0x126')](db[_0xdb08('0x1b')],{'as':'Queue','foreignKey':'VoiceQueueId','onDelete':_0xdb08('0x11a')});db[_0xdb08('0x77')][_0xdb08('0x126')](db[_0xdb08('0x1a7')],{'as':_0xdb08('0x1a7'),'foreignKey':'CampaignId','onDelete':_0xdb08('0x11a')});db[_0xdb08('0x80')]['hasMany'](db[_0xdb08('0x85')],{'as':{'plural':'All','singular':'OneAll'},'foreignKey':_0xdb08('0x1a9'),'onDelete':_0xdb08('0x11a'),'hooks':!![]});db['Automation'][_0xdb08('0x11b')](db['Condition'],{'as':{'plural':'Any','singular':'OneAny'},'foreignKey':_0xdb08('0x1aa'),'onDelete':'cascade','hooks':!![]});db['Automation'][_0xdb08('0x11b')](db[_0xdb08('0x7f')],{'as':_0xdb08('0x1ab'),'foreignKey':'AutomationId','onDelete':_0xdb08('0x11a'),'hooks':!![]});db[_0xdb08('0x83')][_0xdb08('0x11b')](db[_0xdb08('0x83')],{'as':_0xdb08('0x17c'),'foreignKey':_0xdb08('0x1ac'),'onDelete':'cascade'});db[_0xdb08('0x87')][_0xdb08('0x11b')](db[_0xdb08('0x87')],{'as':_0xdb08('0x1ad'),'foreignKey':_0xdb08('0x156'),'onDelete':_0xdb08('0x11a'),'hooks':!![],'required':![]});db[_0xdb08('0x87')][_0xdb08('0x11b')](db[_0xdb08('0x17')],{'as':'Extensions','foreignKey':_0xdb08('0x156'),'onDelete':'restrict'});db[_0xdb08('0x87')][_0xdb08('0x11b')](db[_0xdb08('0x45')],{'as':_0xdb08('0x1ae'),'foreignKey':_0xdb08('0x156')});db[_0xdb08('0x87')]['hasMany'](db[_0xdb08('0x66')],{'as':'ChatApplications','foreignKey':_0xdb08('0x156')});db[_0xdb08('0x87')][_0xdb08('0x11b')](db[_0xdb08('0x4d')],{'as':_0xdb08('0x1af'),'foreignKey':'IntervalId'});db['Interval'][_0xdb08('0x11b')](db[_0xdb08('0x55')],{'as':'SmsApplications','foreignKey':_0xdb08('0x156')});db[_0xdb08('0x8d')][_0xdb08('0x126')](db[_0xdb08('0x3f')],{});db[_0xdb08('0x8d')][_0xdb08('0x126')](db[_0xdb08('0xa1')],{'foreignKey':'DefaultReportId'});db[_0xdb08('0x8d')][_0xdb08('0x126')](db[_0xdb08('0x9f')],{'foreignKey':_0xdb08('0x1b0')});db[_0xdb08('0x8f')][_0xdb08('0x129')](db['VoiceMusicOnHold'],{'as':'Mohs','through':'moh_has_sounds','onDelete':_0xdb08('0x165')});db[_0xdb08('0x91')]['belongsToMany'](db['CmContact'],{'through':_0xdb08('0x1a3')});db[_0xdb08('0x91')][_0xdb08('0x129')](db[_0xdb08('0x67')],{'through':_0xdb08('0x195')});db[_0xdb08('0x91')][_0xdb08('0x129')](db[_0xdb08('0x42')],{'through':_0xdb08('0x174')});db['Tag']['belongsToMany'](db[_0xdb08('0x120')],{'through':_0xdb08('0x188')});db[_0xdb08('0x91')]['belongsToMany'](db['FaxInteraction'],{'through':_0xdb08('0x183')});db['Tag']['belongsToMany'](db[_0xdb08('0x5f')],{'through':_0xdb08('0x18d')});db[_0xdb08('0x91')]['belongsToMany'](db['WhatsappInteraction'],{'through':_0xdb08('0x1b1')});db['CmContactHasItem'][_0xdb08('0x126')](db[_0xdb08('0x93')],{'as':_0xdb08('0x1b2'),'foreignKey':'ItemTypeId'});db[_0xdb08('0x1a4')][_0xdb08('0x126')](db[_0xdb08('0x75')],{'as':_0xdb08('0x1b3'),'foreignKey':_0xdb08('0x1a6')});db['CmContactHasItem'][_0xdb08('0x126')](db['CmContact'],{'as':_0xdb08('0x161'),'foreignKey':_0xdb08('0x1a1')});db[_0xdb08('0x9a')][_0xdb08('0x11b')](db[_0xdb08('0x85')],{'as':{'plural':_0xdb08('0x1b4'),'singular':_0xdb08('0x1b5')},'foreignKey':'TriggerAllId','onDelete':_0xdb08('0x11a'),'hooks':!![]});db[_0xdb08('0x9a')][_0xdb08('0x11b')](db[_0xdb08('0x85')],{'as':{'plural':_0xdb08('0x1b6'),'singular':_0xdb08('0x1b7')},'foreignKey':'TriggerAnyId','onDelete':_0xdb08('0x11a'),'hooks':!![]});db[_0xdb08('0x9a')]['hasMany'](db[_0xdb08('0x7f')],{'as':_0xdb08('0x1ab'),'foreignKey':_0xdb08('0x1b8'),'onDelete':_0xdb08('0x11a'),'hooks':!![]});db['AnalyticCustomReport'][_0xdb08('0x11b')](db['AnalyticFieldReport'],{'as':_0xdb08('0x1b9'),'onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x1b0'),'hooks':!![]});db['AnalyticDefaultReport'][_0xdb08('0x11b')](db[_0xdb08('0xa6')],{'as':_0xdb08('0x1b9'),'onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x1ba')});db[_0xdb08('0xa4')]['hasMany'](db['AnalyticFieldReport'],{'as':_0xdb08('0x1b9'),'onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x1bb')});db[_0xdb08('0xa6')][_0xdb08('0x126')](db[_0xdb08('0xa4')],{'foreignKey':'MetricId'});db[_0xdb08('0xaa')]['hasMany'](db[_0xdb08('0xab')],{'as':_0xdb08('0x1bc'),'onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x1bd')});db[_0xdb08('0xab')][_0xdb08('0x11b')](db[_0xdb08('0xad')],{'as':_0xdb08('0x1be'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0xdb08('0xab')][_0xdb08('0x11b')](db['SalesforceField'],{'as':_0xdb08('0x1bf'),'onDelete':'cascade','foreignKey':'DescriptionId'});db['SalesforceConfiguration'][_0xdb08('0x11b')](db['SalesforceField'],{'as':_0xdb08('0x1b9'),'onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x1c0')});db[_0xdb08('0xab')][_0xdb08('0x126')](db['SalesforceAccount'],{'as':'Account','foreignKey':_0xdb08('0x1bd')});db[_0xdb08('0xad')][_0xdb08('0x11b')](db[_0xdb08('0xad')],{'as':_0xdb08('0x1c1'),'foreignKey':_0xdb08('0x1c2')});db[_0xdb08('0xad')][_0xdb08('0x11b')](db[_0xdb08('0xad')],{'as':_0xdb08('0x1c3'),'foreignKey':_0xdb08('0x1c4')});db['SalesforceField'][_0xdb08('0x11b')](db[_0xdb08('0xad')],{'as':'Field','foreignKey':'FieldId'});db[_0xdb08('0xad')][_0xdb08('0x126')](db[_0xdb08('0x9b')],{'as':_0xdb08('0x9b'),'foreignKey':_0xdb08('0x1c5')});db[_0xdb08('0xaf')][_0xdb08('0x11b')](db[_0xdb08('0xb1')],{'as':'Configurations','onDelete':'cascade','foreignKey':_0xdb08('0x1bd')});db[_0xdb08('0xb1')]['hasMany'](db['SugarcrmField'],{'as':_0xdb08('0x1be'),'onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x1c2')});db[_0xdb08('0xb1')][_0xdb08('0x11b')](db[_0xdb08('0xb2')],{'as':_0xdb08('0x1bf'),'onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x1c4')});db[_0xdb08('0xb1')]['hasMany'](db[_0xdb08('0xb2')],{'as':'Fields','onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x1c0')});db[_0xdb08('0xb1')]['belongsTo'](db['SugarcrmAccount'],{'as':_0xdb08('0x172'),'foreignKey':'AccountId'});db['SugarcrmField'][_0xdb08('0x11b')](db['SugarcrmField'],{'as':_0xdb08('0x1c1'),'foreignKey':_0xdb08('0x1c2')});db[_0xdb08('0xb2')][_0xdb08('0x11b')](db['SugarcrmField'],{'as':_0xdb08('0x1c3'),'foreignKey':_0xdb08('0x1c4')});db['SugarcrmField']['hasMany'](db['SugarcrmField'],{'as':_0xdb08('0x1c6'),'foreignKey':_0xdb08('0x1c0')});db[_0xdb08('0xb2')][_0xdb08('0x126')](db['Variable'],{'as':_0xdb08('0x9b'),'foreignKey':'VariableId'});db[_0xdb08('0xb3')][_0xdb08('0x11b')](db[_0xdb08('0xb5')],{'as':_0xdb08('0x1bc'),'onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x1bd')});db['DeskConfiguration'][_0xdb08('0x11b')](db['DeskField'],{'as':'Subjects','onDelete':'cascade','foreignKey':_0xdb08('0x1c2')});db['DeskConfiguration']['hasMany'](db[_0xdb08('0x1c7')],{'as':_0xdb08('0x1bf'),'onDelete':'cascade','foreignKey':_0xdb08('0x1c4')});db[_0xdb08('0xb5')][_0xdb08('0x11b')](db[_0xdb08('0x1c7')],{'as':_0xdb08('0x1b9'),'onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x1c0')});db[_0xdb08('0xb5')][_0xdb08('0x126')](db[_0xdb08('0xb3')],{'as':_0xdb08('0x172'),'foreignKey':'AccountId'});db[_0xdb08('0xb5')][_0xdb08('0x129')](db[_0xdb08('0x91')],{'through':_0xdb08('0x1c8')});db[_0xdb08('0x1c7')][_0xdb08('0x11b')](db['DeskField'],{'as':_0xdb08('0x1c1'),'foreignKey':_0xdb08('0x1c2')});db[_0xdb08('0x1c7')][_0xdb08('0x11b')](db[_0xdb08('0x1c7')],{'as':_0xdb08('0x1c3'),'foreignKey':_0xdb08('0x1c4')});db[_0xdb08('0x1c7')]['hasMany'](db[_0xdb08('0x1c7')],{'as':_0xdb08('0x1c6'),'foreignKey':_0xdb08('0x1c0')});db[_0xdb08('0x1c7')][_0xdb08('0x126')](db[_0xdb08('0x9b')],{'as':_0xdb08('0x9b'),'foreignKey':_0xdb08('0x1c5')});db[_0xdb08('0x1c9')][_0xdb08('0x11b')](db[_0xdb08('0x1ca')],{'as':'Configurations','onDelete':_0xdb08('0x11a'),'foreignKey':'AccountId'});db['ZohoConfiguration'][_0xdb08('0x11b')](db['ZohoField'],{'as':_0xdb08('0x1be'),'onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x1c2')});db[_0xdb08('0x1ca')]['hasMany'](db[_0xdb08('0xb9')],{'as':'Descriptions','onDelete':_0xdb08('0x11a'),'foreignKey':'DescriptionId'});db[_0xdb08('0x1ca')]['hasMany'](db[_0xdb08('0xb9')],{'as':_0xdb08('0x1b9'),'onDelete':'cascade','foreignKey':'FieldId'});db[_0xdb08('0x1ca')][_0xdb08('0x126')](db[_0xdb08('0x1c9')],{'as':'Account','foreignKey':_0xdb08('0x1bd')});db[_0xdb08('0xb9')][_0xdb08('0x11b')](db[_0xdb08('0xb9')],{'as':_0xdb08('0x1c1'),'foreignKey':_0xdb08('0x1c2')});db['ZohoField'][_0xdb08('0x11b')](db[_0xdb08('0xb9')],{'as':_0xdb08('0x1c3'),'foreignKey':_0xdb08('0x1c4')});db[_0xdb08('0xb9')][_0xdb08('0x11b')](db[_0xdb08('0xb9')],{'as':'Field','foreignKey':_0xdb08('0x1c0')});db['ZohoField']['belongsTo'](db[_0xdb08('0x9b')],{'as':_0xdb08('0x9b'),'foreignKey':_0xdb08('0x1c5')});db[_0xdb08('0xbb')][_0xdb08('0x11b')](db['ZendeskConfiguration'],{'as':_0xdb08('0x1bc'),'onDelete':'cascade','foreignKey':_0xdb08('0x1bd')});db['ZendeskConfiguration'][_0xdb08('0x11b')](db[_0xdb08('0x1cb')],{'as':_0xdb08('0x1be'),'foreignKey':_0xdb08('0x1c2')});db[_0xdb08('0xbd')][_0xdb08('0x11b')](db[_0xdb08('0x1cb')],{'as':_0xdb08('0x1bf'),'foreignKey':_0xdb08('0x1c4')});db['ZendeskConfiguration'][_0xdb08('0x11b')](db['ZendeskField'],{'as':_0xdb08('0x1b9'),'foreignKey':_0xdb08('0x1c0')});db[_0xdb08('0xbd')][_0xdb08('0x126')](db[_0xdb08('0xbb')],{'as':'Account','foreignKey':'AccountId'});db[_0xdb08('0xbd')][_0xdb08('0x129')](db[_0xdb08('0x91')],{'through':'int_zendesk_configuration_has_tags'});db[_0xdb08('0x1cb')][_0xdb08('0x11b')](db['ZendeskField'],{'as':_0xdb08('0x1c1'),'foreignKey':_0xdb08('0x1c2')});db[_0xdb08('0x1cb')][_0xdb08('0x11b')](db[_0xdb08('0x1cb')],{'as':_0xdb08('0x1c3'),'foreignKey':_0xdb08('0x1c4')});db[_0xdb08('0x1cb')]['hasMany'](db['ZendeskField'],{'as':_0xdb08('0x1c6'),'foreignKey':'FieldId'});db[_0xdb08('0x1cb')][_0xdb08('0x126')](db[_0xdb08('0x9b')],{'as':_0xdb08('0x9b'),'foreignKey':_0xdb08('0x1c5')});db[_0xdb08('0xc0')][_0xdb08('0x11b')](db['FreshdeskConfiguration'],{'as':'Configurations','onDelete':_0xdb08('0x11a'),'foreignKey':'AccountId'});db[_0xdb08('0x1cc')][_0xdb08('0x11b')](db[_0xdb08('0xc3')],{'as':'Subjects','onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x1c2')});db[_0xdb08('0x1cc')][_0xdb08('0x11b')](db[_0xdb08('0xc3')],{'as':_0xdb08('0x1bf'),'onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x1c4')});db[_0xdb08('0x1cc')][_0xdb08('0x11b')](db[_0xdb08('0xc3')],{'as':'Fields','onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x1c0')});db['FreshdeskConfiguration']['belongsTo'](db[_0xdb08('0xc0')],{'as':_0xdb08('0x172'),'foreignKey':_0xdb08('0x1bd')});db['FreshdeskConfiguration'][_0xdb08('0x129')](db[_0xdb08('0x91')],{'through':_0xdb08('0x1cd')});db[_0xdb08('0xc3')][_0xdb08('0x11b')](db[_0xdb08('0xc3')],{'as':_0xdb08('0x1c1'),'foreignKey':_0xdb08('0x1c2')});db[_0xdb08('0xc3')]['hasMany'](db[_0xdb08('0xc3')],{'as':_0xdb08('0x1c3'),'foreignKey':_0xdb08('0x1c4')});db['FreshdeskField'][_0xdb08('0x11b')](db[_0xdb08('0xc3')],{'as':'Field','foreignKey':_0xdb08('0x1c0')});db[_0xdb08('0xc3')][_0xdb08('0x126')](db[_0xdb08('0x9b')],{'as':_0xdb08('0x9b'),'foreignKey':_0xdb08('0x1c5')});db[_0xdb08('0xc5')]['hasMany'](db['VtigerConfiguration'],{'as':_0xdb08('0x1bc'),'onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x1bd')});db['VtigerConfiguration'][_0xdb08('0x11b')](db['VtigerField'],{'as':_0xdb08('0x1be'),'foreignKey':_0xdb08('0x1c2')});db['VtigerConfiguration']['hasMany'](db[_0xdb08('0xc7')],{'as':_0xdb08('0x1bf'),'foreignKey':_0xdb08('0x1c4')});db['VtigerConfiguration'][_0xdb08('0x11b')](db[_0xdb08('0xc7')],{'as':'Fields','foreignKey':'FieldId'});db[_0xdb08('0xc6')][_0xdb08('0x126')](db[_0xdb08('0xc5')],{'as':_0xdb08('0x172'),'foreignKey':_0xdb08('0x1bd')});db['VtigerField'][_0xdb08('0x11b')](db[_0xdb08('0xc7')],{'as':_0xdb08('0x1c1'),'foreignKey':_0xdb08('0x1c2')});db[_0xdb08('0xc7')][_0xdb08('0x11b')](db[_0xdb08('0xc7')],{'as':_0xdb08('0x1c3'),'foreignKey':_0xdb08('0x1c4')});db[_0xdb08('0xc7')][_0xdb08('0x11b')](db[_0xdb08('0xc7')],{'as':_0xdb08('0x1c6'),'foreignKey':'FieldId'});db['VtigerField'][_0xdb08('0x126')](db[_0xdb08('0x9b')],{'as':_0xdb08('0x9b'),'foreignKey':_0xdb08('0x1c5')});db['ServicenowAccount'][_0xdb08('0x11b')](db[_0xdb08('0xca')],{'as':_0xdb08('0x1bc'),'onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x1bd')});db[_0xdb08('0xca')][_0xdb08('0x11b')](db[_0xdb08('0xcc')],{'as':_0xdb08('0x1be'),'foreignKey':_0xdb08('0x1c2')});db['ServicenowConfiguration'][_0xdb08('0x11b')](db[_0xdb08('0xcc')],{'as':_0xdb08('0x1bf'),'foreignKey':'DescriptionId'});db[_0xdb08('0xca')][_0xdb08('0x11b')](db['ServicenowField'],{'as':_0xdb08('0x1b9'),'foreignKey':_0xdb08('0x1c0')});db[_0xdb08('0xca')]['belongsTo'](db['ServicenowAccount'],{'as':_0xdb08('0x172'),'foreignKey':_0xdb08('0x1bd')});db['ServicenowField'][_0xdb08('0x11b')](db['ServicenowField'],{'as':_0xdb08('0x1c1'),'foreignKey':_0xdb08('0x1c2')});db['ServicenowField']['hasMany'](db[_0xdb08('0xcc')],{'as':_0xdb08('0x1c3'),'foreignKey':_0xdb08('0x1c4')});db['ServicenowField'][_0xdb08('0x11b')](db[_0xdb08('0xcc')],{'as':'Field','foreignKey':'FieldId'});db[_0xdb08('0xcc')]['belongsTo'](db['Variable'],{'as':_0xdb08('0x9b'),'foreignKey':_0xdb08('0x1c5')});db[_0xdb08('0x1ce')]['hasMany'](db[_0xdb08('0x1cf')],{'as':_0xdb08('0x1bc'),'onDelete':_0xdb08('0x11a'),'foreignKey':'AccountId'});db[_0xdb08('0x1ce')][_0xdb08('0x126')](db[_0xdb08('0x110')],{'as':_0xdb08('0x110'),'foreignKey':_0xdb08('0x164')});db[_0xdb08('0x1cf')][_0xdb08('0x11b')](db['Dynamics365Field'],{'as':_0xdb08('0x1be'),'onDelete':_0xdb08('0x11a'),'foreignKey':'SubjectId'});db['Dynamics365Configuration'][_0xdb08('0x11b')](db[_0xdb08('0xd0')],{'as':_0xdb08('0x1bf'),'onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x1c4')});db[_0xdb08('0x1cf')][_0xdb08('0x11b')](db[_0xdb08('0xd0')],{'as':_0xdb08('0x1b9'),'onDelete':'cascade','foreignKey':_0xdb08('0x1c0')});db[_0xdb08('0x1cf')][_0xdb08('0x126')](db[_0xdb08('0x1ce')],{'as':'Account','foreignKey':_0xdb08('0x1bd')});db['Dynamics365Field']['hasMany'](db[_0xdb08('0xd0')],{'as':_0xdb08('0x1c1'),'foreignKey':_0xdb08('0x1c2')});db['Dynamics365Field'][_0xdb08('0x11b')](db['Dynamics365Field'],{'as':'Description','foreignKey':'DescriptionId'});db['Dynamics365Field']['hasMany'](db[_0xdb08('0xd0')],{'as':_0xdb08('0x1c6'),'foreignKey':_0xdb08('0x1c0')});db['Dynamics365Field'][_0xdb08('0x126')](db[_0xdb08('0x9b')],{'as':_0xdb08('0x9b'),'foreignKey':'VariableId'});db[_0xdb08('0xd2')][_0xdb08('0x11b')](db[_0xdb08('0xd4')],{'as':_0xdb08('0x1bc'),'onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x1bd')});db['FreshsalesConfiguration']['hasMany'](db[_0xdb08('0xd5')],{'as':'Subjects','foreignKey':_0xdb08('0x1c2')});db[_0xdb08('0xd4')][_0xdb08('0x11b')](db[_0xdb08('0xd5')],{'as':_0xdb08('0x1bf'),'foreignKey':_0xdb08('0x1c4')});db[_0xdb08('0xd4')]['hasMany'](db[_0xdb08('0xd5')],{'as':_0xdb08('0x1b9'),'foreignKey':_0xdb08('0x1c0')});db[_0xdb08('0xd4')][_0xdb08('0x126')](db[_0xdb08('0xd2')],{'as':_0xdb08('0x172'),'foreignKey':_0xdb08('0x1bd')});db['FreshsalesField']['hasMany'](db[_0xdb08('0xd5')],{'as':_0xdb08('0x1c1'),'foreignKey':'SubjectId'});db[_0xdb08('0xd5')][_0xdb08('0x11b')](db['FreshsalesField'],{'as':_0xdb08('0x1c3'),'foreignKey':_0xdb08('0x1c4')});db[_0xdb08('0xd5')][_0xdb08('0x11b')](db[_0xdb08('0xd5')],{'as':_0xdb08('0x1c6'),'foreignKey':'FieldId'});db[_0xdb08('0xd5')][_0xdb08('0x126')](db['Variable'],{'as':_0xdb08('0x9b'),'foreignKey':_0xdb08('0x1c5')});db[_0xdb08('0xda')][_0xdb08('0x126')](db[_0xdb08('0x64')],{});db[_0xdb08('0xda')][_0xdb08('0x126')](db[_0xdb08('0x12c')],{'as':_0xdb08('0x179'),'foreignKey':_0xdb08('0x16b')});db['ChatQueueReport'][_0xdb08('0x126')](db[_0xdb08('0x73')],{'as':_0xdb08('0x161'),'foreignKey':_0xdb08('0x162')});db[_0xdb08('0xda')][_0xdb08('0x126')](db[_0xdb08('0x67')],{});db[_0xdb08('0xda')]['belongsTo'](db['ChatMessage'],{});db[_0xdb08('0xda')]['belongsTo'](db[_0xdb08('0x117')],{});db[_0xdb08('0xda')][_0xdb08('0x126')](db[_0xdb08('0x6c')],{});db['ChatInternalMessage']['belongsTo'](db['User'],{'onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x1d0')});db['ChatInternalMessage']['belongsTo'](db[_0xdb08('0x117')],{'onDelete':'cascade','foreignKey':_0xdb08('0x1d1')});db['JscriptySessionReport'][_0xdb08('0x11b')](db['JscriptyQuestionReport'],{'foreignKey':_0xdb08('0x1d2'),'onDelete':'cascade'});db[_0xdb08('0x151')][_0xdb08('0x11b')](db[_0xdb08('0xdb')],{'foreignKey':_0xdb08('0x1d2'),'onDelete':_0xdb08('0x11a')});db[_0xdb08('0xe0')][_0xdb08('0x126')](db[_0xdb08('0x53')],{});db[_0xdb08('0xe0')]['belongsTo'](db[_0xdb08('0x12c')],{'as':_0xdb08('0x179'),'foreignKey':_0xdb08('0x16b')});db['SmsQueueReport']['belongsTo'](db[_0xdb08('0x73')],{'as':'Contact','foreignKey':_0xdb08('0x162')});db['SmsQueueReport'][_0xdb08('0x126')](db[_0xdb08('0x120')],{});db[_0xdb08('0xe0')][_0xdb08('0x126')](db['SmsMessage'],{});db[_0xdb08('0xe0')][_0xdb08('0x126')](db[_0xdb08('0x117')],{});db[_0xdb08('0xe0')]['belongsTo'](db['SmsQueue'],{});db['JscriptyProject']['hasMany'](db[_0xdb08('0x151')],{'foreignKey':_0xdb08('0x1d3')});db['JscriptyProject'][_0xdb08('0x11b')](db[_0xdb08('0xdd')],{'foreignKey':'ProjectId'});db[_0xdb08('0xe4')][_0xdb08('0x11b')](db[_0xdb08('0xdb')],{'foreignKey':'ProjectId'});db['SquareProject'][_0xdb08('0x129')](db[_0xdb08('0x117')],{'as':_0xdb08('0x176'),'through':_0xdb08('0x147')});db['Team'][_0xdb08('0x129')](db[_0xdb08('0x117')],{'as':'Agents','through':_0xdb08('0x12f')});db[_0xdb08('0xec')][_0xdb08('0x129')](db[_0xdb08('0x1b')],{'through':'TeamVoiceQueue','as':_0xdb08('0x1d4')});db[_0xdb08('0xec')][_0xdb08('0x129')](db[_0xdb08('0x135')],{'through':'team_has_mail_queues','as':_0xdb08('0x136')});db[_0xdb08('0xec')][_0xdb08('0x129')](db[_0xdb08('0x6c')],{'through':_0xdb08('0x19a'),'as':'ChatQueues'});db[_0xdb08('0xec')]['belongsToMany'](db['FaxQueue'],{'through':'team_has_fax_queues','as':_0xdb08('0x139')});db[_0xdb08('0xec')][_0xdb08('0x129')](db[_0xdb08('0x59')],{'through':_0xdb08('0x189'),'as':_0xdb08('0x13a')});db[_0xdb08('0xec')]['belongsToMany'](db[_0xdb08('0x18b')],{'through':_0xdb08('0x1d5'),'as':_0xdb08('0x13b')});db[_0xdb08('0xec')][_0xdb08('0x129')](db[_0xdb08('0x10e')],{'through':_0xdb08('0x1d6'),'as':_0xdb08('0x13c')});db[_0xdb08('0xec')][_0xdb08('0x129')](db['VoicePrefix'],{'through':'TeamVoicePrefix','as':_0xdb08('0x1d7')});db['Campaign'][_0xdb08('0x11b')](db[_0xdb08('0x75')],{'as':_0xdb08('0x14d'),'foreignKey':'CampaignId'});db[_0xdb08('0x1a7')][_0xdb08('0x11b')](db[_0xdb08('0x78')],{'as':_0xdb08('0x14e'),'foreignKey':_0xdb08('0x1a8')});db[_0xdb08('0x1a7')][_0xdb08('0x11b')](db[_0xdb08('0x7a')],{'as':_0xdb08('0x14f'),'foreignKey':'CampaignId'});db[_0xdb08('0x1a7')][_0xdb08('0x11b')](db[_0xdb08('0x77')],{'as':_0xdb08('0x150'),'foreignKey':'CampaignId'});db[_0xdb08('0x1a7')][_0xdb08('0x126')](db[_0xdb08('0x2a')],{'as':_0xdb08('0x2a'),'foreignKey':_0xdb08('0x153')});db[_0xdb08('0x1a7')][_0xdb08('0x126')](db['Trunk'],{'as':_0xdb08('0x154'),'foreignKey':'TrunkBackupId'});db[_0xdb08('0x1a7')][_0xdb08('0x126')](db['Interval'],{'as':'Interval','foreignKey':_0xdb08('0x156')});db[_0xdb08('0x1a7')][_0xdb08('0x126')](db[_0xdb08('0xe7')],{'as':'SquareProject','foreignKey':_0xdb08('0x1d8')});db[_0xdb08('0x1a7')][_0xdb08('0x129')](db[_0xdb08('0x12c')],{'as':_0xdb08('0x12d'),'through':'campaigns_has_cm_lists'});db['Campaign']['belongsToMany'](db[_0xdb08('0x12c')],{'as':_0xdb08('0x15c'),'through':'campaigns_has_cm_blacklists'});db['Attachment'][_0xdb08('0x126')](db[_0xdb08('0x6a')],{'as':_0xdb08('0x6a'),'foreignKey':_0xdb08('0x199')});db[_0xdb08('0xf6')][_0xdb08('0x126')](db[_0xdb08('0x169')],{});db[_0xdb08('0xf6')][_0xdb08('0x126')](db[_0xdb08('0x42')],{});db['MailTransferReport'][_0xdb08('0x126')](db[_0xdb08('0x3f')],{'foreignKey':'FromMailAccountId','as':_0xdb08('0x1d9')});db[_0xdb08('0xf6')]['belongsTo'](db[_0xdb08('0x117')],{'foreignKey':_0xdb08('0x1da'),'as':_0xdb08('0x1db')});db[_0xdb08('0xf6')][_0xdb08('0x126')](db[_0xdb08('0x117')],{'foreignKey':_0xdb08('0x1dc'),'as':_0xdb08('0x1dd')});db[_0xdb08('0xf6')][_0xdb08('0x126')](db[_0xdb08('0x135')],{'foreignKey':_0xdb08('0x1de'),'as':_0xdb08('0x1df')});db[_0xdb08('0xf6')][_0xdb08('0x126')](db[_0xdb08('0x3f')],{'foreignKey':_0xdb08('0x1e0'),'as':_0xdb08('0x1e1')});db[_0xdb08('0xf7')][_0xdb08('0x126')](db[_0xdb08('0x69')],{});db[_0xdb08('0xf7')][_0xdb08('0x126')](db[_0xdb08('0x67')],{});db[_0xdb08('0xf7')][_0xdb08('0x126')](db[_0xdb08('0x64')],{'foreignKey':_0xdb08('0x1e2'),'as':'FromAccount'});db[_0xdb08('0xf7')][_0xdb08('0x126')](db['User'],{'foreignKey':_0xdb08('0x1da'),'as':_0xdb08('0x1db')});db[_0xdb08('0xf7')]['belongsTo'](db['User'],{'foreignKey':_0xdb08('0x1dc'),'as':_0xdb08('0x1dd')});db[_0xdb08('0xf7')]['belongsTo'](db['ChatQueue'],{'foreignKey':'ToChatQueueId','as':_0xdb08('0x1df')});db[_0xdb08('0xf7')][_0xdb08('0x126')](db['ChatWebsite'],{'foreignKey':_0xdb08('0x1e3'),'as':'ToAccount'});db[_0xdb08('0xf9')][_0xdb08('0x126')](db[_0xdb08('0x17f')],{});db[_0xdb08('0xf9')]['belongsTo'](db[_0xdb08('0x4f')],{});db['FaxTransferReport'][_0xdb08('0x126')](db['FaxAccount'],{'foreignKey':'FromFaxAccountId','as':_0xdb08('0x1d9')});db[_0xdb08('0xf9')][_0xdb08('0x126')](db[_0xdb08('0x117')],{'foreignKey':_0xdb08('0x1da'),'as':_0xdb08('0x1db')});db[_0xdb08('0xf9')][_0xdb08('0x126')](db[_0xdb08('0x117')],{'foreignKey':'ToUserId','as':'ToAgent'});db[_0xdb08('0xf9')]['belongsTo'](db['FaxQueue'],{'foreignKey':'ToFaxQueueId','as':'ToQueue'});db['FaxTransferReport'][_0xdb08('0x126')](db[_0xdb08('0x4b')],{'foreignKey':_0xdb08('0x1e4'),'as':_0xdb08('0x1e1')});db['OpenchannelTransferReport']['belongsTo'](db[_0xdb08('0x61')],{});db[_0xdb08('0x1e5')][_0xdb08('0x126')](db[_0xdb08('0x5f')],{});db[_0xdb08('0x1e5')][_0xdb08('0x126')](db[_0xdb08('0x5b')],{'foreignKey':_0xdb08('0x1e6'),'as':_0xdb08('0x1d9')});db[_0xdb08('0x1e5')][_0xdb08('0x126')](db['User'],{'foreignKey':'FromUserId','as':_0xdb08('0x1db')});db[_0xdb08('0x1e5')]['belongsTo'](db[_0xdb08('0x117')],{'foreignKey':_0xdb08('0x1dc'),'as':_0xdb08('0x1dd')});db[_0xdb08('0x1e5')][_0xdb08('0x126')](db[_0xdb08('0x18b')],{'foreignKey':_0xdb08('0x1e7'),'as':_0xdb08('0x1df')});db[_0xdb08('0x1e5')][_0xdb08('0x126')](db[_0xdb08('0x5b')],{'foreignKey':'ToOpenchannelAccountId','as':_0xdb08('0x1e1')});db[_0xdb08('0xfc')][_0xdb08('0x126')](db[_0xdb08('0x57')],{});db[_0xdb08('0xfc')][_0xdb08('0x126')](db[_0xdb08('0x120')],{});db[_0xdb08('0xfc')][_0xdb08('0x126')](db['SmsAccount'],{'foreignKey':_0xdb08('0x1e8'),'as':'FromAccount'});db['SmsTransferReport'][_0xdb08('0x126')](db[_0xdb08('0x117')],{'foreignKey':_0xdb08('0x1da'),'as':_0xdb08('0x1db')});db[_0xdb08('0xfc')][_0xdb08('0x126')](db[_0xdb08('0x117')],{'foreignKey':_0xdb08('0x1dc'),'as':_0xdb08('0x1dd')});db[_0xdb08('0xfc')][_0xdb08('0x126')](db['SmsQueue'],{'foreignKey':_0xdb08('0x1e9'),'as':_0xdb08('0x1df')});db[_0xdb08('0xfc')]['belongsTo'](db[_0xdb08('0x53')],{'foreignKey':_0xdb08('0x1ea'),'as':_0xdb08('0x1e1')});db[_0xdb08('0x12c')]['hasMany'](db['Disposition'],{'as':_0xdb08('0x17c'),'foreignKey':'ListId','onDelete':_0xdb08('0x11a')});db['CmList'][_0xdb08('0x11b')](db[_0xdb08('0x7d')],{'as':_0xdb08('0x1eb'),'foreignKey':_0xdb08('0x16b')});db[_0xdb08('0x12c')][_0xdb08('0x11b')](db[_0xdb08('0x73')],{'as':_0xdb08('0x19e'),'onDelete':'cascade','foreignKey':_0xdb08('0x16b')});db[_0xdb08('0x12c')][_0xdb08('0x11b')](db[_0xdb08('0x78')],{'as':'HopperFinals','foreignKey':'ListId'});db['CmList'][_0xdb08('0x11b')](db[_0xdb08('0x7a')],{'as':_0xdb08('0x11f'),'foreignKey':'ListId'});db[_0xdb08('0x12c')][_0xdb08('0x11b')](db[_0xdb08('0x7c')],{'as':_0xdb08('0x7c'),'foreignKey':_0xdb08('0x16b')});db[_0xdb08('0x12c')][_0xdb08('0x129')](db[_0xdb08('0x1b')],{'as':_0xdb08('0x1ec'),'through':_0xdb08('0x159')});db['CmList']['belongsToMany'](db[_0xdb08('0x117')],{'as':_0xdb08('0x16d'),'through':'cm_user_has_lists'});db[_0xdb08('0xff')]['hasMany'](db[_0xdb08('0x17')],{'as':_0xdb08('0x11e'),'onDelete':_0xdb08('0x11a')});db[_0xdb08('0xff')]['belongsToMany'](db[_0xdb08('0x117')],{'as':_0xdb08('0x16d'),'through':_0xdb08('0x114')});db[_0xdb08('0xff')]['belongsToMany'](db['Team'],{'through':'TeamVoicePrefix','as':_0xdb08('0x15a')});db[_0xdb08('0x127')]['hasMany'](db[_0xdb08('0x117')],{'as':_0xdb08('0x176'),'foreignKey':_0xdb08('0x128')});db[_0xdb08('0x127')][_0xdb08('0x11b')](db[_0xdb08('0x1ed')],{'as':_0xdb08('0x1ee'),'foreignKey':_0xdb08('0x128'),'onDelete':'cascade'});db[_0xdb08('0x1ed')]['hasMany'](db[_0xdb08('0x1ef')],{'as':_0xdb08('0x1f0'),'foreignKey':_0xdb08('0x1f1'),'onDelete':'cascade'});db[_0xdb08('0x105')]['hasMany'](db['Disposition'],{'as':_0xdb08('0x17c'),'foreignKey':_0xdb08('0x1f2'),'onDelete':_0xdb08('0x11a')});db['WhatsappAccount'][_0xdb08('0x11b')](db[_0xdb08('0x81')],{'as':_0xdb08('0x168'),'foreignKey':_0xdb08('0x1f2')});db['WhatsappAccount'][_0xdb08('0x11b')](db[_0xdb08('0x1f3')],{'as':_0xdb08('0x170'),'foreignKey':_0xdb08('0x1f2')});db[_0xdb08('0x105')][_0xdb08('0x11b')](db[_0xdb08('0x109')],{'as':_0xdb08('0x16a')});db[_0xdb08('0x105')][_0xdb08('0x11b')](db[_0xdb08('0x107')],{'as':_0xdb08('0x14a')});db['WhatsappAccount'][_0xdb08('0x126')](db[_0xdb08('0x12c')],{'as':_0xdb08('0x179'),'foreignKey':_0xdb08('0x16b')});db['WhatsappAccount'][_0xdb08('0x126')](db[_0xdb08('0x180')],{'as':_0xdb08('0x157'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xdb08('0x105')][_0xdb08('0x129')](db['User'],{'as':_0xdb08('0x16d'),'through':'user_has_whatsapp_accounts'});db['WhatsappApplication'][_0xdb08('0x126')](db[_0xdb08('0x117')],{'onDelete':_0xdb08('0x165')});db['WhatsappApplication'][_0xdb08('0x126')](db[_0xdb08('0x10e')],{'onDelete':'restrict'});db['WhatsappApplication'][_0xdb08('0x126')](db[_0xdb08('0x105')],{'onDelete':_0xdb08('0x165')});db[_0xdb08('0x107')]['belongsTo'](db[_0xdb08('0x87')],{'onDelete':_0xdb08('0x165'),'foreignKey':_0xdb08('0x156')});db[_0xdb08('0x107')][_0xdb08('0x126')](db[_0xdb08('0x91')],{'onDelete':_0xdb08('0x165'),'foreignKey':_0xdb08('0x178')});db[_0xdb08('0x109')][_0xdb08('0x11b')](db[_0xdb08('0x1f3')],{'as':_0xdb08('0x170'),'onDelete':_0xdb08('0x11a'),'foreignKey':_0xdb08('0x1f4')});db['WhatsappInteraction'][_0xdb08('0x126')](db[_0xdb08('0x105')],{'as':_0xdb08('0x172'),'foreignKey':'WhatsappAccountId'});db[_0xdb08('0x109')][_0xdb08('0x126')](db[_0xdb08('0x73')],{'as':_0xdb08('0x161'),'foreignKey':_0xdb08('0x162')});db['WhatsappInteraction'][_0xdb08('0x126')](db['User'],{'as':_0xdb08('0x173'),'foreignKey':_0xdb08('0x119')});db[_0xdb08('0x109')]['belongsToMany'](db[_0xdb08('0x91')],{'through':_0xdb08('0x1b1'),'as':_0xdb08('0x175')});db[_0xdb08('0x109')][_0xdb08('0x129')](db['Tag'],{'through':_0xdb08('0x1b1'),'as':_0xdb08('0x184')});db['WhatsappInteraction'][_0xdb08('0x129')](db[_0xdb08('0x117')],{'as':_0xdb08('0x176'),'through':_0xdb08('0x1f5'),'foreignKey':'WhatsappInteractionId'});db[_0xdb08('0x1f3')]['belongsTo'](db[_0xdb08('0x117')],{'as':_0xdb08('0x117')});db[_0xdb08('0x1f3')][_0xdb08('0x126')](db[_0xdb08('0x73')],{'onDelete':_0xdb08('0x11a'),'as':_0xdb08('0x161')});db[_0xdb08('0x1f3')][_0xdb08('0x126')](db[_0xdb08('0x109')],{'onDelete':_0xdb08('0x11a'),'as':_0xdb08('0x177'),'foreignKey':_0xdb08('0x1f4')});db[_0xdb08('0x1f3')][_0xdb08('0x126')](db[_0xdb08('0x105')],{'as':'Account','foreignKey':_0xdb08('0x1f2')});db['WhatsappQueueReport'][_0xdb08('0x126')](db[_0xdb08('0x105')],{});db[_0xdb08('0x10c')][_0xdb08('0x126')](db[_0xdb08('0x12c')],{'as':_0xdb08('0x179'),'foreignKey':'ListId'});db[_0xdb08('0x10c')][_0xdb08('0x126')](db[_0xdb08('0x73')],{'as':'Contact','foreignKey':'ContactId'});db[_0xdb08('0x10c')]['belongsTo'](db['WhatsappInteraction'],{});db['WhatsappQueueReport'][_0xdb08('0x126')](db['WhatsappQueue'],{});db['WhatsappQueueReport'][_0xdb08('0x126')](db[_0xdb08('0x1f3')],{});db[_0xdb08('0x10c')][_0xdb08('0x126')](db['User'],{});db[_0xdb08('0x1f6')][_0xdb08('0x126')](db[_0xdb08('0x1f3')],{});db[_0xdb08('0x1f6')][_0xdb08('0x126')](db['WhatsappInteraction'],{});db[_0xdb08('0x1f6')][_0xdb08('0x126')](db[_0xdb08('0x105')],{'foreignKey':_0xdb08('0x1f7'),'as':'FromAccount'});db[_0xdb08('0x1f6')][_0xdb08('0x126')](db[_0xdb08('0x105')],{'foreignKey':_0xdb08('0x1f8'),'as':'ToAccount'});db[_0xdb08('0x1f6')][_0xdb08('0x126')](db[_0xdb08('0x10e')],{'foreignKey':_0xdb08('0x1f9'),'as':_0xdb08('0x1df')});db[_0xdb08('0x1f6')][_0xdb08('0x126')](db[_0xdb08('0x117')],{'foreignKey':_0xdb08('0x1da'),'as':'FromAgent'});db['WhatsappTransferReport'][_0xdb08('0x126')](db[_0xdb08('0x117')],{'foreignKey':_0xdb08('0x1dc'),'as':_0xdb08('0x1dd')});db['WhatsappQueue']['belongsToMany'](db['User'],{'as':_0xdb08('0x16d'),'through':'UserWhatsappQueue','foreignKey':_0xdb08('0x1fa')});db[_0xdb08('0x10e')][_0xdb08('0x129')](db[_0xdb08('0xec')],{'through':_0xdb08('0x1d6'),'as':'Teams'});db['UserSetting'][_0xdb08('0x126')](db[_0xdb08('0x117')],{'as':'user','foreignKey':_0xdb08('0x119'),'onDelete':_0xdb08('0x11a'),'hooks':!![]});db[_0xdb08('0x110')][_0xdb08('0x118')](db[_0xdb08('0x1ce')],{'as':_0xdb08('0x1ce'),'onDelete':'restrict'});db['CloudProvider'][_0xdb08('0x118')](db[_0xdb08('0x3b')],{'as':_0xdb08('0x166'),'onDelete':'restrict'});db[_0xdb08('0x110')][_0xdb08('0x118')](db[_0xdb08('0x3d')],{'as':_0xdb08('0x167'),'onDelete':_0xdb08('0x165')});module['exports']={'db':db,'dbH':dbH};
\ No newline at end of file
+var _0x10ce=['OwnerId','Automation','Condition','All','OneAll','AutomationAllId','Any','AutomationAnyId','Actions','AutomationId','ParentId','Intervals','MailApplications','ChatApplications','FaxApplications','SmsApplications','DefaultReportId','mail_interaction_has_tags','whatsapp_interaction_has_tags','ItemType','ItemTypeId','Hopper','AllCondition','TriggerAllId','AnyConditions','AnyCondition','TriggerAnyId','Fields','CustomReportId','MetricId','SalesforceConfiguration','Configurations','AccountId','Subjects','SubjectId','Descriptions','DescriptionId','Subject','Description','Field','FieldId','VariableId','DeskConfiguration','DeskField','int_desk_configuration_has_tags','ZohoAccount','ZendeskAccount','ZendeskConfiguration','int_zendesk_configuration_has_tags','FreshdeskConfiguration','int_freshdesk_configuration_has_tags','VtigerConfiguration','VtigerField','ServicenowAccount','ServicenowConfiguration','CloudProviderId','FromId','ToId','SessionId','ProjectId','user_has_teams','team_has_mail_queues','team_has_sms_queues','SmsQueues','team_has_whatsapp_queues','CampaignId','SquareProjectId','campaigns_has_cm_blacklists','MailTransferReport','FromMailAccountId','FromUserId','FromAgent','ToMailQueueId','ToQueue','ToMailAccountId','FromChatWebsiteId','ToUserId','ToAgent','ToChatQueueId','ToChatWebsiteId','ToAccount','FromFaxAccountId','FromAccount','ToFaxQueueId','ToFaxAccountId','ToOpenchannelQueueId','ToOpenchannelAccountId','FromSmsAccountId','ToSmsQueueId','ToSmsAccountId','CustomFields','Queues','userProfileId','UserProfileSections','sectionId','WhatsappAccountId','WhatsappMessage','WhatsappInteractionId','WhatsappQueueReport','WhatsappTransferReport','FromWhatsappAccountId','ToWhatsappAccountId','ToQueueId','exports','../config/environment','sequelize','lodash','jstz','determine','defaultsDeep','motion2','xcall','xC@LL1234','127.0.0.1','name','sequelizeHistory','utf8mb4','utf8','utf8_general_ci','database','username','password','options','User','import','../api/user/user.model','VoiceChanSpy','../api/voiceContext/voiceContext.model','VoiceExtension','../api/voiceExtension/voiceExtension.model','VoiceMusicOnHold','../api/voiceMusicOnHold/voiceMusicOnHold.model','../api/voiceQueue/voiceQueue.model','../api/screenRecording/screenRecording.model','VoiceMailMessage','../api/voiceMailMessage/voiceMailMessage.model','VoiceCallReport','../api/voiceCallReport/voiceCallReport.model','VoiceDialReport','../api/voiceDialReport/voiceDialReport.model','VoiceAgentReport','../api/voiceAgentReport/voiceAgentReport.model','VoiceQueueReport','Trunk','VoiceTransferReport','../api/voiceTransferReport/voiceTransferReport.model','UserVoiceQueueRt','../api/userVoiceQueueRt/userVoiceQueueRt.model','UserVoiceQueue','../api/userVoiceQueue/userVoiceQueue.model','UserChatQueue','../api/userChatQueue/userChatQueue.model','UserMailQueue','UserFaxQueue','../api/userFaxQueue/userFaxQueue.model','UserSmsQueue','../api/userSmsQueue/userSmsQueue.model','UserOpenchannelQueue','../api/userOpenchannelQueue/userOpenchannelQueue.model','../api/userWhatsappQueue/userWhatsappQueue.model','../api/mailServerIn/mailServerIn.model','MailServerOut','../api/mailServerOut/mailServerOut.model','MailAccount','MailQueue','../api/mailQueue/mailQueue.model','MailSubstatus','../api/mailSubstatus/mailSubstatus.model','MailInteraction','../api/mailInteraction/mailInteraction.model','../api/mailMessage/mailMessage.model','MailQueueReport','../api/mailQueueReport/mailQueueReport.model','Dashboard','../api/dashboard/dashboard.model','../api/faxAccount/faxAccount.model','FaxApplication','../api/faxApplication/faxApplication.model','FaxInteraction','../api/faxInteraction/faxInteraction.model','FaxMessage','../api/faxMessage/faxMessage.model','FaxQueue','../api/faxQueue/faxQueue.model','../api/faxQueueReport/faxQueueReport.model','SmsAccount','SmsApplication','../api/smsApplication/smsApplication.model','SmsInteraction','SmsMessage','SmsQueue','../api/smsQueue/smsQueue.model','OpenchannelAccount','../api/openchannelAccount/openchannelAccount.model','OpenchannelApplication','OpenchannelInteraction','../api/openchannelInteraction/openchannelInteraction.model','OpenchannelMessage','../api/openchannelMessage/openchannelMessage.model','OpenchannelQueue','ChatWebsite','OpenchannelQueueReport','../api/openchannelQueueReport/openchannelQueueReport.model','ChatApplication','../api/chatApplication/chatApplication.model','ChatInteraction','ChatMessage','ChatOfflineMessage','../api/chatOfflineMessage/chatOfflineMessage.model','../api/chatQueue/chatQueue.model','ChatGroup','ChatProactiveAction','../api/chatProactiveAction/chatProactiveAction.model','CmCompany','../api/cmCompany/cmCompany.model','CmContact','CmHopperBlack','../api/cmHopperBlack/cmHopperBlack.model','../api/cmHopperFinal/cmHopperFinal.model','CmHopperHistory','../api/cmHopperHistory/cmHopperHistory.model','ReportAgentPreview','../api/reportAgentPreview/reportAgentPreview.model','CmCustomField','../api/cmCustomField/cmCustomField.model','Action','../api/automation/automation.model','CannedAnswer','../api/cannedAnswer/cannedAnswer.model','Disposition','../api/disposition/disposition.model','../api/condition/condition.model','Interval','../api/interval/interval.model','Pause','../api/pause/pause.model','Cdr','../api/cdr/cdr.model','VoiceQueuesLog','../api/voiceQueuesLog/voiceQueuesLog.model','Schedule','../api/schedule/schedule.model','Sound','../api/tag/tag.model','ContactItemType','CmContactHasItem','../api/cmContactHasItem/cmContactHasItem.model','Template','Trigger','../api/trigger/trigger.model','Variable','../api/variable/variable.model','Integration','../api/integration/integration.model','IntegrationReport','AnalyticCustomReport','../api/analyticCustomReport/analyticCustomReport.model','AnalyticDefaultReport','../api/analyticDefaultReport/analyticDefaultReport.model','AnalyticExtractedReport','AnalyticMetric','AnalyticFieldReport','../api/analyticFieldReport/analyticFieldReport.model','../api/analyticTreeReport/analyticTreeReport.model','SalesforceAccount','../api/intSalesforceAccount/intSalesforceAccount.model','../api/intSalesforceConfiguration/intSalesforceConfiguration.model','SalesforceField','SugarcrmAccount','../api/intSugarcrmAccount/intSugarcrmAccount.model','SugarcrmConfiguration','../api/intSugarcrmConfiguration/intSugarcrmConfiguration.model','SugarcrmField','DeskAccount','../api/intZohoAccount/intZohoAccount.model','ZohoConfiguration','../api/intZohoConfiguration/intZohoConfiguration.model','ZohoField','../api/intZohoField/intZohoField.model','../api/intZendeskConfiguration/intZendeskConfiguration.model','ZendeskField','../api/intZendeskField/intZendeskField.model','FreshdeskAccount','../api/intFreshdeskAccount/intFreshdeskAccount.model','../api/intFreshdeskConfiguration/intFreshdeskConfiguration.model','FreshdeskField','VtigerAccount','../api/intVtigerAccount/intVtigerAccount.model','../api/intVtigerField/intVtigerField.model','../api/intServicenowConfiguration/intServicenowConfiguration.model','ServicenowField','../api/intServicenowField/intServicenowField.model','Dynamics365Account','../api/intDynamics365Account/intDynamics365Account.model','Dynamics365Configuration','../api/intDynamics365Configuration/intDynamics365Configuration.model','Dynamics365Field','../api/intDynamics365Field/intDynamics365Field.model','FreshsalesAccount','../api/intFreshsalesAccount/intFreshsalesAccount.model','FreshsalesConfiguration','FreshsalesField','../api/intFreshsalesField/intFreshsalesField.model','Network','ChatQueueReport','ChatInternalMessage','JscriptyAnswerReport','../api/jscriptyAnswerReport/jscriptyAnswerReport.model','JscriptyQuestionReport','JscriptySessionReport','SmsQueueReport','SquareReport','../api/squareReport/squareReport.model','SquareDetailsReport','../api/squareReportDetail/squareReportDetail.model','JscriptyProject','../api/jscriptyProject/jscriptyProject.model','Setting','../api/setting/setting.model','../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/campaign/campaign.model','../api/migration/migration.model','Attachment','../api/attachment/attachment.model','Plugin','../api/plugin/plugin.model','../api/mailTransferReport/mailTransferReport.model','ChatTransferReport','../api/chatTransferReport/chatTransferReport.model','FaxTransferReport','OpenchannelTransferReport','../api/openchannelTransferReport/openchannelTransferReport.model','SmsTransferReport','../api/smsTransferReport/smsTransferReport.model','CmList','VoicePrefix','../api/voicePrefix/voicePrefix.model','UserProfile','../api/userProfile/userProfile.model','UserProfileSection','../api/userProfileSection/userProfileSection.model','UserProfileResource','../api/userProfileResource/userProfileResource.model','UserNotification','../api/whatsappAccount/whatsappAccount.model','WhatsappApplication','../api/whatsappApplication/whatsappApplication.model','WhatsappInteraction','../api/whatsappInteraction/whatsappInteraction.model','../api/whatsappMessage/whatsappMessage.model','../api/whatsappQueueReport/whatsappQueueReport.model','../api/whatsappTransferReport/whatsappTransferReport.model','WhatsappQueue','../api/whatsappQueue/whatsappQueue.model','CloudProvider','../api/cloudProvider/cloudProvider.model','TeamVoiceQueue','../api/teamVoiceQueue/teamVoiceQueue.model','TeamVoicePrefix','UserVoicePrefix','../api/userVoicePrefix/userVoicePrefix.model','UserSetting','../api/user-setting/user-setting.model','hasOne','VoiceMail','cascade','UserId','userSetting','hasMany','VoiceRecording','Extensions','CmHopperFinal','HopperFinals','HopperHistory','OpenchannelInteractions','SmsInteractions','FaxInteractions','MailInteractions','SenderId','Groups','chat_group_has_users','belongsToMany','cm_user_has_lists','user_has_mail_interactions','ChatInteractions','user_has_chat_interactions','user_has_fax_interactions','user_has_sms_interactions','WhatsappInteractions','VoiceQueue','VoiceQueues','VoicePrefixes','MailQueues','ChatQueue','ChatQueues','FaxQueues','OpenchannelQueues','WhatsappQueues','UserWhatsappQueue','ChatWebsites','user_has_chat_websites','FaxAccount','user_has_fax_accounts','MailAccounts','user_has_mail_accounts','OpenchannelAccounts','user_has_openchannel_accounts','SmsAccounts','user_has_sms_accounts','WhatsappAccount','WhatsappAccounts','user_has_whatsapp_accounts','SquareProjects','user_has_square_projects','SpiedAgents','VoiceContext','Applications','Sounds','moh_has_sounds','Members','VoiceQueueId','CmHopper','Hoppers','HopperHistories','HopperBlacks','JscriptySessions','belongsTo','TrunkId','TrunkBackup','TrunkBackupId','mandatoryDispositionPause','mandatoryDispositionPauseId','Lists','voice_queues_has_cm_lists','Agents','BlackLists','voice_queues_has_cm_blacklists','ScreenRecording','Messages','mailboxuser','mailbox','QueueCalls','uniqueid','Contact','MailServerIn','MailAccountId','restrict','Imap','Smtp','Dispositions','Answers','MailMessage','Interactions','MailApplication','List','ListId','TemplateId','Teams','MailInteractionId','Account','ContactId','Owner','Tag','Tags','ThroughTags','Users','Attachments','Interaction','ChatWebsiteId','ChatOfflineMessageId','IntervalId','TagId','DashboardItem','FaxAccountId','Exntensions','FaxInteractionId','fax_interaction_has_tags','team_has_fax_queues','FaxQueueReport','SmsAccountId','sms_interaction_has_tags','SmsInteractionId','OpenchannelAccountId','OpenchannelQueueId','OpenchannelInteractionId','openchannel_interaction_has_tags','user_has_openchannel_interactions','AttachmentId','team_has_openchannel_queues','ProactiveActions','Agent','Queue','ChatQueueId','Website','chat_interaction_has_tags','ChatInteractionId','team_has_chat_queues','Contacts','Phones','CmContactId','Company','cm_user_has_contacts','cm_contact_has_tags','CmHopperAdditionalPhone','CmHopperId'];(function(_0xbb091,_0x3fe7ee){var _0x467a04=function(_0x3a978d){while(--_0x3a978d){_0xbb091['push'](_0xbb091['shift']());}};_0x467a04(++_0x3fe7ee);}(_0x10ce,0x68));var _0xe10c=function(_0x33017c,_0xedfa18){_0x33017c=_0x33017c-0x0;var _0xc1538e=_0x10ce[_0x33017c];return _0xc1538e;};'use strict';var config=require(_0xe10c('0x0'));var Sequelize=require(_0xe10c('0x1'));var _=require(_0xe10c('0x2'));var jstz=require(_0xe10c('0x3'));var timezone=jstz[_0xe10c('0x4')]();config['sequelize']=_[_0xe10c('0x5')](config[_0xe10c('0x1')],{'database':_0xe10c('0x6'),'username':_0xe10c('0x7'),'password':_0xe10c('0x8'),'options':{'host':_0xe10c('0x9'),'port':0xcea,'dialect':'mysql','dialectOptions':{'charset':'utf8mb4'},'logging':![],'timezone':timezone[_0xe10c('0xa')](),'define':{'charset':'utf8','collate':'utf8_general_ci'}}});config[_0xe10c('0xb')]=_['defaultsDeep'](config[_0xe10c('0xb')],{'database':_0xe10c('0x6'),'username':_0xe10c('0x7'),'password':'xC@LL1234','options':{'host':'127.0.0.1','port':0xcea,'dialect':'mysql','dialectOptions':{'charset':_0xe10c('0xc')},'logging':![],'timezone':timezone[_0xe10c('0xa')](),'define':{'charset':_0xe10c('0xd'),'collate':_0xe10c('0xe')}}});var db={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xe10c('0x1')][_0xe10c('0xf')],config[_0xe10c('0x1')][_0xe10c('0x10')],config['sequelize'][_0xe10c('0x11')],config['sequelize']['options'])};var dbH={'Sequelize':Sequelize,'sequelize':new Sequelize(config[_0xe10c('0xb')][_0xe10c('0xf')],config[_0xe10c('0xb')][_0xe10c('0x10')],config['sequelizeHistory'][_0xe10c('0x11')],config[_0xe10c('0xb')][_0xe10c('0x12')])};db[_0xe10c('0x13')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x15'));db[_0xe10c('0x16')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/voiceChanSpy/voiceChanSpy.model');db['VoiceContext']=db['sequelize'][_0xe10c('0x14')](_0xe10c('0x17'));db[_0xe10c('0x18')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x19'));db[_0xe10c('0x1a')]=db[_0xe10c('0x1')]['import'](_0xe10c('0x1b'));db['VoiceQueue']=db['sequelize']['import'](_0xe10c('0x1c'));db['VoiceRecording']=db['sequelize'][_0xe10c('0x14')]('../api/voiceRecording/voiceRecording.model');db['ScreenRecording']=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x1d'));db['VoiceMail']=db['sequelize'][_0xe10c('0x14')]('../api/voiceMail/voiceMail.model');db[_0xe10c('0x1e')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x1f'));db[_0xe10c('0x20')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x21'));db[_0xe10c('0x22')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x23'));db[_0xe10c('0x24')]=db[_0xe10c('0x1')]['import'](_0xe10c('0x25'));db[_0xe10c('0x26')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/voiceQueueReport/voiceQueueReport.model');db['MemberReport']=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/memberReport/memberReport.model');db[_0xe10c('0x27')]=db[_0xe10c('0x1')]['import']('../api/trunk/trunk.model');db[_0xe10c('0x28')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x29'));db[_0xe10c('0x2a')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x2b'));db[_0xe10c('0x2c')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x2d'));db[_0xe10c('0x2e')]=db[_0xe10c('0x1')]['import'](_0xe10c('0x2f'));db[_0xe10c('0x30')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/userMailQueue/userMailQueue.model');db[_0xe10c('0x31')]=db[_0xe10c('0x1')]['import'](_0xe10c('0x32'));db[_0xe10c('0x33')]=db[_0xe10c('0x1')]['import'](_0xe10c('0x34'));db[_0xe10c('0x35')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x36'));db['UserWhatsappQueue']=db['sequelize']['import'](_0xe10c('0x37'));db['MailServerIn']=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x38'));db[_0xe10c('0x39')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x3a'));db[_0xe10c('0x3b')]=db['sequelize'][_0xe10c('0x14')]('../api/mailAccount/mailAccount.model');db[_0xe10c('0x3c')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x3d'));db[_0xe10c('0x3e')]=db['sequelize']['import'](_0xe10c('0x3f'));db[_0xe10c('0x40')]=db['sequelize'][_0xe10c('0x14')](_0xe10c('0x41'));db['MailMessage']=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x42'));db['MailApplication']=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/mailApplication/mailApplication.model');db[_0xe10c('0x43')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x44'));db[_0xe10c('0x45')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x46'));db['DashboardItem']=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/dashboardItem/dashboardItem.model');db['FaxAccount']=db[_0xe10c('0x1')]['import'](_0xe10c('0x47'));db[_0xe10c('0x48')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x49'));db[_0xe10c('0x4a')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x4b'));db[_0xe10c('0x4c')]=db[_0xe10c('0x1')]['import'](_0xe10c('0x4d'));db[_0xe10c('0x4e')]=db['sequelize'][_0xe10c('0x14')](_0xe10c('0x4f'));db['FaxQueueReport']=db[_0xe10c('0x1')]['import'](_0xe10c('0x50'));db[_0xe10c('0x51')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/smsAccount/smsAccount.model');db[_0xe10c('0x52')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x53'));db[_0xe10c('0x54')]=db['sequelize'][_0xe10c('0x14')]('../api/smsInteraction/smsInteraction.model');db[_0xe10c('0x55')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/smsMessage/smsMessage.model');db[_0xe10c('0x56')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x57'));db[_0xe10c('0x58')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x59'));db[_0xe10c('0x5a')]=db['sequelize']['import']('../api/openchannelApplication/openchannelApplication.model');db[_0xe10c('0x5b')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x5c'));db[_0xe10c('0x5d')]=db[_0xe10c('0x1')]['import'](_0xe10c('0x5e'));db[_0xe10c('0x5f')]=db['sequelize'][_0xe10c('0x14')]('../api/openchannelQueue/openchannelQueue.model');db[_0xe10c('0x60')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/chatWebsite/chatWebsite.model');db[_0xe10c('0x61')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x62'));db[_0xe10c('0x63')]=db[_0xe10c('0x1')]['import'](_0xe10c('0x64'));db[_0xe10c('0x65')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/chatInteraction/chatInteraction.model');db[_0xe10c('0x66')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/chatMessage/chatMessage.model');db[_0xe10c('0x67')]=db[_0xe10c('0x1')]['import'](_0xe10c('0x68'));db['ChatQueue']=db[_0xe10c('0x1')]['import'](_0xe10c('0x69'));db[_0xe10c('0x6a')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/chatGroup/chatGroup.model');db[_0xe10c('0x6b')]=db['sequelize']['import'](_0xe10c('0x6c'));db[_0xe10c('0x6d')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x6e'));db[_0xe10c('0x6f')]=db[_0xe10c('0x1')]['import']('../api/cmContact/cmContact.model');db['CmHopper']=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/cmHopper/cmHopper.model');db[_0xe10c('0x70')]=db['sequelize'][_0xe10c('0x14')](_0xe10c('0x71'));db['CmHopperFinal']=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x72'));db[_0xe10c('0x73')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x74'));db[_0xe10c('0x75')]=db['sequelize'][_0xe10c('0x14')](_0xe10c('0x76'));db[_0xe10c('0x77')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x78'));db[_0xe10c('0x79')]=db[_0xe10c('0x1')]['import']('../api/action/action.model');db['Automation']=db['sequelize'][_0xe10c('0x14')](_0xe10c('0x7a'));db[_0xe10c('0x7b')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x7c'));db[_0xe10c('0x7d')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x7e'));db['Condition']=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x7f'));db[_0xe10c('0x80')]=db['sequelize'][_0xe10c('0x14')](_0xe10c('0x81'));db[_0xe10c('0x82')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x83'));db[_0xe10c('0x84')]=db['sequelize'][_0xe10c('0x14')](_0xe10c('0x85'));db[_0xe10c('0x86')]=db['sequelize'][_0xe10c('0x14')](_0xe10c('0x87'));db[_0xe10c('0x88')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x89'));db[_0xe10c('0x8a')]=db['sequelize'][_0xe10c('0x14')]('../api/sound/sound.model');db['Tag']=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x8b'));db[_0xe10c('0x8c')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/contactItemType/contactItemType.model');db[_0xe10c('0x8d')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x8e'));db['CmHopperAdditionalPhone']=db['sequelize'][_0xe10c('0x14')]('../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.model');db[_0xe10c('0x8f')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/template/template.model');db[_0xe10c('0x90')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x91'));db[_0xe10c('0x92')]=db[_0xe10c('0x1')]['import'](_0xe10c('0x93'));db[_0xe10c('0x94')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x95'));db[_0xe10c('0x96')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/integrationReport/integrationReport.model');db[_0xe10c('0x97')]=db[_0xe10c('0x1')]['import'](_0xe10c('0x98'));db[_0xe10c('0x99')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x9a'));db[_0xe10c('0x9b')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/analyticExtractedReport/analyticExtractedReport.model');db[_0xe10c('0x9c')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/analyticMetric/analyticMetric.model');db[_0xe10c('0x9d')]=db['sequelize'][_0xe10c('0x14')](_0xe10c('0x9e'));db['AnalyticTreeReport']=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x9f'));db[_0xe10c('0xa0')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xa1'));db['SalesforceConfiguration']=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xa2'));db[_0xe10c('0xa3')]=db['sequelize'][_0xe10c('0x14')]('../api/intSalesforceField/intSalesforceField.model');db[_0xe10c('0xa4')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xa5'));db[_0xe10c('0xa6')]=db['sequelize'][_0xe10c('0x14')](_0xe10c('0xa7'));db[_0xe10c('0xa8')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/intSugarcrmField/intSugarcrmField.model');db[_0xe10c('0xa9')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/intDeskAccount/intDeskAccount.model');db['DeskConfiguration']=db[_0xe10c('0x1')]['import']('../api/intDeskConfiguration/intDeskConfiguration.model');db['DeskField']=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/intDeskField/intDeskField.model');db['ZohoAccount']=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xaa'));db[_0xe10c('0xab')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xac'));db[_0xe10c('0xad')]=db['sequelize'][_0xe10c('0x14')](_0xe10c('0xae'));db['ZendeskAccount']=db[_0xe10c('0x1')]['import']('../api/intZendeskAccount/intZendeskAccount.model');db['ZendeskConfiguration']=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xaf'));db[_0xe10c('0xb0')]=db[_0xe10c('0x1')]['import'](_0xe10c('0xb1'));db[_0xe10c('0xb2')]=db[_0xe10c('0x1')]['import'](_0xe10c('0xb3'));db['FreshdeskConfiguration']=db[_0xe10c('0x1')]['import'](_0xe10c('0xb4'));db[_0xe10c('0xb5')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/intFreshdeskField/intFreshdeskField.model');db[_0xe10c('0xb6')]=db[_0xe10c('0x1')]['import'](_0xe10c('0xb7'));db['VtigerConfiguration']=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/intVtigerConfiguration/intVtigerConfiguration.model');db['VtigerField']=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xb8'));db['ServicenowAccount']=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/intServicenowAccount/intServicenowAccount.model');db['ServicenowConfiguration']=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xb9'));db[_0xe10c('0xba')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xbb'));db[_0xe10c('0xbc')]=db['sequelize'][_0xe10c('0x14')](_0xe10c('0xbd'));db[_0xe10c('0xbe')]=db[_0xe10c('0x1')]['import'](_0xe10c('0xbf'));db[_0xe10c('0xc0')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xc1'));db[_0xe10c('0xc2')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xc3'));db[_0xe10c('0xc4')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/intFreshsalesConfiguration/intFreshsalesConfiguration.model');db[_0xe10c('0xc5')]=db[_0xe10c('0x1')]['import'](_0xe10c('0xc6'));db[_0xe10c('0x94')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/integration/integration.model');db[_0xe10c('0xc7')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/network/network.model');db[_0xe10c('0xc8')]=db['sequelize']['import']('../api/chatQueueReport/chatQueueReport.model');db[_0xe10c('0xc9')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/chatInternalMessage/chatInternalMessage.model');db[_0xe10c('0xca')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xcb'));db[_0xe10c('0xcc')]=db[_0xe10c('0x1')]['import']('../api/jscriptyQuestionReport/jscriptyQuestionReport.model');db[_0xe10c('0xcd')]=db['sequelize']['import']('../api/jscriptySessionReport/jscriptySessionReport.model');db[_0xe10c('0xce')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/smsQueueReport/smsQueueReport.model');db[_0xe10c('0xcf')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xd0'));db[_0xe10c('0xd1')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xd2'));db[_0xe10c('0xd3')]=db['sequelize']['import'](_0xe10c('0xd4'));db[_0xe10c('0xd5')]=db[_0xe10c('0x1')]['import'](_0xe10c('0xd6'));db['SquareOdbc']=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xd7'));db[_0xe10c('0xd8')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xd9'));db[_0xe10c('0xda')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xdb'));db['SquareMessage']=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xdc'));db[_0xe10c('0xdd')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xde'));db[_0xe10c('0xdf')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/license/license.model');db[_0xe10c('0xe0')]=db['sequelize'][_0xe10c('0x14')](_0xe10c('0xe1'));db['Migration']=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xe2'));db[_0xe10c('0xe3')]=db[_0xe10c('0x1')]['import'](_0xe10c('0xe4'));db[_0xe10c('0xe5')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xe6'));db['MailTransferReport']=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xe7'));db[_0xe10c('0xe8')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xe9'));db[_0xe10c('0xea')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/faxTransferReport/faxTransferReport.model');db[_0xe10c('0xeb')]=db['sequelize'][_0xe10c('0x14')](_0xe10c('0xec'));db[_0xe10c('0xed')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xee'));db[_0xe10c('0xef')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/cmList/cmList.model');db[_0xe10c('0xf0')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xf1'));db[_0xe10c('0xf2')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xf3'));db[_0xe10c('0xf4')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xf5'));db[_0xe10c('0xf6')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xf7'));db[_0xe10c('0xf8')]=db[_0xe10c('0x1')][_0xe10c('0x14')]('../api/userNotification/userNotification.model');db['WhatsappAccount']=db['sequelize'][_0xe10c('0x14')](_0xe10c('0xf9'));db[_0xe10c('0xfa')]=db['sequelize']['import'](_0xe10c('0xfb'));db[_0xe10c('0xfc')]=db['sequelize'][_0xe10c('0x14')](_0xe10c('0xfd'));db['WhatsappMessage']=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0xfe'));db['WhatsappQueueReport']=db['sequelize']['import'](_0xe10c('0xff'));db['WhatsappTransferReport']=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x100'));db[_0xe10c('0x101')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x102'));db[_0xe10c('0x103')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x104'));db[_0xe10c('0x105')]=db['sequelize'][_0xe10c('0x14')](_0xe10c('0x106'));db[_0xe10c('0x107')]=db['sequelize'][_0xe10c('0x14')]('../api/teamVoicePrefix/teamVoicePrefix.model');db[_0xe10c('0x108')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x109'));db[_0xe10c('0x10a')]=db[_0xe10c('0x1')][_0xe10c('0x14')](_0xe10c('0x10b'));db[_0xe10c('0x13')][_0xe10c('0x10c')](db[_0xe10c('0x10d')],{'as':_0xe10c('0x10d'),'onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x10f')});db[_0xe10c('0x13')][_0xe10c('0x10c')](db[_0xe10c('0x10a')],{'as':_0xe10c('0x110'),'onDelete':_0xe10c('0x10e'),'foreignKey':'UserId'});db[_0xe10c('0x13')][_0xe10c('0x111')](db[_0xe10c('0x112')],{'as':'Recordings','foreignKey':_0xe10c('0x10f')});db[_0xe10c('0x13')][_0xe10c('0x111')](db[_0xe10c('0x2a')],{'as':'VoiceQueuesRt','foreignKey':_0xe10c('0x10f')});db['User'][_0xe10c('0x111')](db[_0xe10c('0x18')],{'as':_0xe10c('0x113'),'onDelete':_0xe10c('0x10e'),'hooks':!![]});db[_0xe10c('0x13')]['hasMany'](db[_0xe10c('0x114')],{'as':_0xe10c('0x115'),'foreignKey':_0xe10c('0x10f')});db['User']['hasMany'](db['CmHopperHistory'],{'as':_0xe10c('0x116'),'foreignKey':'UserId'});db[_0xe10c('0x13')]['hasMany'](db['ReportAgentPreview'],{'as':_0xe10c('0x75'),'foreignKey':_0xe10c('0x10f')});db[_0xe10c('0x13')][_0xe10c('0x111')](db[_0xe10c('0x5b')],{'as':_0xe10c('0x117'),'foreignKey':_0xe10c('0x10f')});db[_0xe10c('0x13')][_0xe10c('0x111')](db[_0xe10c('0x65')],{'as':'ChatInteractions','foreignKey':_0xe10c('0x10f')});db[_0xe10c('0x13')][_0xe10c('0x111')](db[_0xe10c('0x54')],{'as':_0xe10c('0x118'),'foreignKey':_0xe10c('0x10f')});db[_0xe10c('0x13')][_0xe10c('0x111')](db[_0xe10c('0x4a')],{'as':_0xe10c('0x119'),'foreignKey':_0xe10c('0x10f')});db[_0xe10c('0x13')][_0xe10c('0x111')](db[_0xe10c('0x40')],{'as':_0xe10c('0x11a'),'foreignKey':_0xe10c('0x10f')});db[_0xe10c('0x13')][_0xe10c('0x111')](db[_0xe10c('0xfc')],{'as':'WhatsappInteractions','foreignKey':_0xe10c('0x10f')});db[_0xe10c('0x13')][_0xe10c('0x111')](db[_0xe10c('0xf8')],{'as':'UserNotifications','foreignKey':_0xe10c('0x11b')});db[_0xe10c('0x13')]['belongsTo'](db[_0xe10c('0xf2')],{'as':_0xe10c('0xf2'),'foreignKey':'userProfileId'});db[_0xe10c('0x13')]['belongsToMany'](db[_0xe10c('0x6a')],{'as':_0xe10c('0x11c'),'through':_0xe10c('0x11d')});db[_0xe10c('0x13')][_0xe10c('0x11e')](db[_0xe10c('0x6f')],{'as':'Contacts','through':'cm_user_has_contacts'});db['User'][_0xe10c('0x11e')](db[_0xe10c('0xef')],{'as':'Lists','through':_0xe10c('0x11f')});db[_0xe10c('0x13')][_0xe10c('0x11e')](db['Team'],{'through':'user_has_teams'});db[_0xe10c('0x13')][_0xe10c('0x11e')](db[_0xe10c('0x40')],{'as':_0xe10c('0x11a'),'through':_0xe10c('0x120')});db[_0xe10c('0x13')][_0xe10c('0x11e')](db[_0xe10c('0x65')],{'as':_0xe10c('0x121'),'through':_0xe10c('0x122')});db[_0xe10c('0x13')]['belongsToMany'](db[_0xe10c('0x4a')],{'as':_0xe10c('0x119'),'through':_0xe10c('0x123')});db[_0xe10c('0x13')][_0xe10c('0x11e')](db[_0xe10c('0x54')],{'as':_0xe10c('0x118'),'through':_0xe10c('0x124')});db['User'][_0xe10c('0x11e')](db[_0xe10c('0x5b')],{'as':_0xe10c('0x117'),'through':'user_has_openchannel_interactions'});db[_0xe10c('0x13')]['belongsToMany'](db['WhatsappInteraction'],{'as':_0xe10c('0x125'),'through':'user_has_whatsapp_interactions'});db[_0xe10c('0x13')][_0xe10c('0x11e')](db[_0xe10c('0x126')],{'as':_0xe10c('0x127'),'through':_0xe10c('0x2c'),'required':![]});db[_0xe10c('0x13')]['belongsToMany'](db['VoicePrefix'],{'as':_0xe10c('0x128'),'through':'UserVoicePrefix','required':![]});db[_0xe10c('0x13')][_0xe10c('0x11e')](db[_0xe10c('0x3c')],{'as':_0xe10c('0x129'),'through':_0xe10c('0x30'),'required':![]});db[_0xe10c('0x13')][_0xe10c('0x11e')](db[_0xe10c('0x12a')],{'as':_0xe10c('0x12b'),'through':_0xe10c('0x2e'),'required':![],'hooks':!![]});db['User'][_0xe10c('0x11e')](db[_0xe10c('0x4e')],{'as':_0xe10c('0x12c'),'through':_0xe10c('0x31'),'required':![]});db[_0xe10c('0x13')][_0xe10c('0x11e')](db[_0xe10c('0x56')],{'as':'SmsQueues','through':_0xe10c('0x33'),'required':![]});db[_0xe10c('0x13')]['belongsToMany'](db['OpenchannelQueue'],{'as':_0xe10c('0x12d'),'through':'UserOpenchannelQueue','required':![]});db[_0xe10c('0x13')][_0xe10c('0x11e')](db[_0xe10c('0x101')],{'as':_0xe10c('0x12e'),'through':_0xe10c('0x12f'),'required':![]});db['User'][_0xe10c('0x11e')](db[_0xe10c('0xef')],{'through':_0xe10c('0x11f')});db[_0xe10c('0x13')]['belongsToMany'](db[_0xe10c('0x60')],{'as':_0xe10c('0x130'),'through':_0xe10c('0x131')});db[_0xe10c('0x13')][_0xe10c('0x11e')](db[_0xe10c('0x132')],{'as':'FaxAccounts','through':_0xe10c('0x133')});db[_0xe10c('0x13')][_0xe10c('0x11e')](db[_0xe10c('0x3b')],{'as':_0xe10c('0x134'),'through':_0xe10c('0x135')});db['User'][_0xe10c('0x11e')](db['OpenchannelAccount'],{'as':_0xe10c('0x136'),'through':_0xe10c('0x137')});db[_0xe10c('0x13')]['belongsToMany'](db['SmsAccount'],{'as':_0xe10c('0x138'),'through':_0xe10c('0x139')});db[_0xe10c('0x13')]['belongsToMany'](db[_0xe10c('0x13a')],{'as':_0xe10c('0x13b'),'through':_0xe10c('0x13c')});db[_0xe10c('0x13')]['belongsToMany'](db['SquareProject'],{'as':_0xe10c('0x13d'),'through':_0xe10c('0x13e')});db[_0xe10c('0x16')]['hasMany'](db[_0xe10c('0x18')],{'as':_0xe10c('0x13f'),'onDelete':_0xe10c('0x10e'),'foreignKey':'ChanSpyId'});db[_0xe10c('0x140')]['hasMany'](db[_0xe10c('0x18')],{'onDelete':_0xe10c('0x10e')});db['VoiceExtension'][_0xe10c('0x111')](db[_0xe10c('0x18')],{'as':_0xe10c('0x141'),'onDelete':_0xe10c('0x10e')});db[_0xe10c('0x1a')]['belongsToMany'](db['Sound'],{'as':_0xe10c('0x142'),'through':_0xe10c('0x143')});db[_0xe10c('0x126')][_0xe10c('0x111')](db[_0xe10c('0x2a')],{'as':_0xe10c('0x144'),'foreignKey':_0xe10c('0x145')});db[_0xe10c('0x126')]['hasMany'](db[_0xe10c('0x146')],{'as':_0xe10c('0x147'),'foreignKey':_0xe10c('0x145')});db[_0xe10c('0x126')]['hasMany'](db[_0xe10c('0x114')],{'as':_0xe10c('0x115'),'foreignKey':_0xe10c('0x145')});db['VoiceQueue'][_0xe10c('0x111')](db['CmHopperHistory'],{'as':_0xe10c('0x148'),'foreignKey':'VoiceQueueId'});db[_0xe10c('0x126')]['hasMany'](db[_0xe10c('0x75')],{'as':_0xe10c('0x75'),'foreignKey':_0xe10c('0x145')});db[_0xe10c('0x126')][_0xe10c('0x111')](db[_0xe10c('0x70')],{'as':_0xe10c('0x149'),'foreignKey':'VoiceQueueId'});db['VoiceQueue'][_0xe10c('0x111')](db[_0xe10c('0xcd')],{'as':_0xe10c('0x14a'),'foreignKey':'VoiceQueueId'});db[_0xe10c('0x126')][_0xe10c('0x14b')](db[_0xe10c('0x27')],{'as':_0xe10c('0x27'),'foreignKey':_0xe10c('0x14c')});db[_0xe10c('0x126')]['belongsTo'](db[_0xe10c('0x27')],{'as':_0xe10c('0x14d'),'foreignKey':_0xe10c('0x14e')});db[_0xe10c('0x126')]['belongsTo'](db[_0xe10c('0x80')],{'as':'Interval','foreignKey':'IntervalId'});db['VoiceQueue'][_0xe10c('0x14b')](db[_0xe10c('0x82')],{'as':_0xe10c('0x14f'),'foreignKey':_0xe10c('0x150')});db['VoiceQueue'][_0xe10c('0x11e')](db[_0xe10c('0xef')],{'as':_0xe10c('0x151'),'through':_0xe10c('0x152')});db['VoiceQueue'][_0xe10c('0x11e')](db['User'],{'as':_0xe10c('0x153'),'through':_0xe10c('0x2c')});db[_0xe10c('0x126')][_0xe10c('0x11e')](db['Team'],{'as':'Teams','through':'TeamVoiceQueue'});db['VoiceQueue']['belongsToMany'](db['CmList'],{'as':_0xe10c('0x154'),'through':_0xe10c('0x155')});db['VoiceRecording']['belongsTo'](db[_0xe10c('0x13')],{'as':'User','foreignKey':_0xe10c('0x10f')});db[_0xe10c('0x156')][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'as':_0xe10c('0x13'),'foreignKey':'UserId'});db[_0xe10c('0x10d')][_0xe10c('0x111')](db[_0xe10c('0x1e')],{'as':_0xe10c('0x157'),'onDelete':'cascade','foreignKey':_0xe10c('0x158'),'sourceKey':'mailbox'});db[_0xe10c('0x1e')]['belongsTo'](db[_0xe10c('0x10d')],{'foreignKey':_0xe10c('0x158'),'targetKey':_0xe10c('0x159')});db[_0xe10c('0x20')][_0xe10c('0x111')](db['VoiceQueueReport'],{'as':_0xe10c('0x15a'),'foreignKey':_0xe10c('0x15b'),'constraints':![]});db[_0xe10c('0x20')][_0xe10c('0x111')](db['VoiceAgentReport'],{'as':'AgentReports','foreignKey':_0xe10c('0x15b'),'constraints':![]});db[_0xe10c('0x20')]['belongsTo'](db[_0xe10c('0x13')],{'as':_0xe10c('0x13'),'foreignKey':_0xe10c('0x10f')});db[_0xe10c('0x20')][_0xe10c('0x14b')](db[_0xe10c('0x6f')],{'as':_0xe10c('0x15c'),'foreignKey':'ContactId'});db[_0xe10c('0x15d')][_0xe10c('0x14b')](db['MailAccount'],{'as':'MailAccount','foreignKey':_0xe10c('0x15e')});db['MailServerIn'][_0xe10c('0x14b')](db[_0xe10c('0x103')],{'as':_0xe10c('0x103'),'foreignKey':'CloudProviderId','onDelete':_0xe10c('0x15f')});db[_0xe10c('0x39')][_0xe10c('0x14b')](db[_0xe10c('0x3b')],{'as':'MailAccount','foreignKey':_0xe10c('0x15e')});db[_0xe10c('0x39')]['belongsTo'](db[_0xe10c('0x103')],{'as':_0xe10c('0x103'),'foreignKey':'CloudProviderId','onDelete':'restrict'});db[_0xe10c('0x3b')][_0xe10c('0x10c')](db[_0xe10c('0x15d')],{'as':_0xe10c('0x160'),'onDelete':_0xe10c('0x10e')});db[_0xe10c('0x3b')][_0xe10c('0x10c')](db[_0xe10c('0x39')],{'as':_0xe10c('0x161'),'onDelete':_0xe10c('0x10e')});db[_0xe10c('0x3b')]['hasMany'](db[_0xe10c('0x7d')],{'as':_0xe10c('0x162'),'foreignKey':'MailAccountId','onDelete':_0xe10c('0x10e')});db[_0xe10c('0x3b')][_0xe10c('0x111')](db['CannedAnswer'],{'as':_0xe10c('0x163'),'foreignKey':_0xe10c('0x15e')});db['MailAccount']['hasMany'](db[_0xe10c('0x164')],{'as':'Messages','foreignKey':'MailAccountId'});db[_0xe10c('0x3b')][_0xe10c('0x111')](db[_0xe10c('0x40')],{'as':_0xe10c('0x165')});db[_0xe10c('0x3b')]['hasMany'](db[_0xe10c('0x166')],{'as':_0xe10c('0x141')});db[_0xe10c('0x3b')][_0xe10c('0x14b')](db['CmList'],{'as':_0xe10c('0x167'),'foreignKey':_0xe10c('0x168')});db[_0xe10c('0x3b')][_0xe10c('0x14b')](db['Template'],{'as':_0xe10c('0x8f'),'foreignKey':_0xe10c('0x169')});db[_0xe10c('0x3b')][_0xe10c('0x14b')](db['Pause'],{'as':_0xe10c('0x14f'),'foreignKey':_0xe10c('0x150')});db[_0xe10c('0x3b')][_0xe10c('0x11e')](db[_0xe10c('0x13')],{'as':'Agents','through':'user_has_mail_accounts'});db[_0xe10c('0x3c')]['belongsToMany'](db[_0xe10c('0x13')],{'as':_0xe10c('0x153'),'through':_0xe10c('0x30')});db[_0xe10c('0x3c')][_0xe10c('0x11e')](db['Team'],{'through':'team_has_mail_queues','as':_0xe10c('0x16a')});db['MailInteraction'][_0xe10c('0x111')](db['MailMessage'],{'as':_0xe10c('0x157'),'onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x16b')});db[_0xe10c('0x40')][_0xe10c('0x14b')](db['MailAccount'],{'as':_0xe10c('0x16c'),'foreignKey':_0xe10c('0x15e')});db[_0xe10c('0x40')][_0xe10c('0x14b')](db['CmContact'],{'as':_0xe10c('0x15c'),'foreignKey':_0xe10c('0x16d')});db[_0xe10c('0x40')][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'as':_0xe10c('0x16e'),'foreignKey':_0xe10c('0x10f')});db[_0xe10c('0x40')][_0xe10c('0x11e')](db[_0xe10c('0x16f')],{'through':'mail_interaction_has_tags','as':_0xe10c('0x170')});db['MailInteraction'][_0xe10c('0x11e')](db['Tag'],{'through':'mail_interaction_has_tags','as':_0xe10c('0x171')});db[_0xe10c('0x40')]['belongsToMany'](db[_0xe10c('0x13')],{'as':_0xe10c('0x172'),'through':_0xe10c('0x120'),'foreignKey':_0xe10c('0x16b')});db[_0xe10c('0x164')][_0xe10c('0x111')](db['Attachment'],{'as':_0xe10c('0x173'),'onDelete':'cascade'});db['MailMessage'][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'as':_0xe10c('0x13')});db[_0xe10c('0x164')]['belongsTo'](db[_0xe10c('0x6f')],{'onDelete':_0xe10c('0x10e'),'as':_0xe10c('0x15c')});db[_0xe10c('0x164')][_0xe10c('0x14b')](db['MailInteraction'],{'as':_0xe10c('0x174'),'foreignKey':'MailInteractionId'});db[_0xe10c('0x164')][_0xe10c('0x14b')](db['MailAccount'],{'as':_0xe10c('0x16c'),'foreignKey':_0xe10c('0x15e')});db[_0xe10c('0x164')][_0xe10c('0x14b')](db[_0xe10c('0x60')],{'as':_0xe10c('0x60'),'foreignKey':_0xe10c('0x175')});db[_0xe10c('0x164')][_0xe10c('0x14b')](db[_0xe10c('0x67')],{'as':_0xe10c('0x67'),'foreignKey':_0xe10c('0x176')});db[_0xe10c('0x166')][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'onDelete':_0xe10c('0x15f')});db[_0xe10c('0x166')][_0xe10c('0x14b')](db[_0xe10c('0x3c')],{'onDelete':_0xe10c('0x15f')});db[_0xe10c('0x166')][_0xe10c('0x14b')](db[_0xe10c('0x3b')],{'onDelete':'restrict'});db[_0xe10c('0x166')][_0xe10c('0x14b')](db[_0xe10c('0x80')],{'onDelete':_0xe10c('0x15f'),'foreignKey':_0xe10c('0x177')});db[_0xe10c('0x166')][_0xe10c('0x14b')](db[_0xe10c('0x16f')],{'onDelete':_0xe10c('0x15f'),'foreignKey':_0xe10c('0x178')});db[_0xe10c('0x43')][_0xe10c('0x14b')](db[_0xe10c('0x3b')],{});db[_0xe10c('0x43')]['belongsTo'](db[_0xe10c('0xef')],{'as':_0xe10c('0x167'),'foreignKey':_0xe10c('0x168')});db[_0xe10c('0x43')][_0xe10c('0x14b')](db[_0xe10c('0x6f')],{'as':_0xe10c('0x15c'),'foreignKey':_0xe10c('0x16d')});db[_0xe10c('0x43')]['belongsTo'](db[_0xe10c('0x40')],{});db[_0xe10c('0x43')]['belongsTo'](db[_0xe10c('0x164')],{});db[_0xe10c('0x43')]['belongsTo'](db[_0xe10c('0x13')],{});db[_0xe10c('0x43')]['belongsTo'](db[_0xe10c('0x3c')],{});db['Dashboard'][_0xe10c('0x111')](db[_0xe10c('0x179')],{'as':'Items','onDelete':_0xe10c('0x10e')});db['FaxAccount']['hasMany'](db[_0xe10c('0x7d')],{'as':_0xe10c('0x162'),'foreignKey':_0xe10c('0x17a'),'onDelete':_0xe10c('0x10e')});db[_0xe10c('0x132')][_0xe10c('0x111')](db[_0xe10c('0x7b')],{'as':_0xe10c('0x163'),'foreignKey':_0xe10c('0x17a')});db[_0xe10c('0x132')][_0xe10c('0x111')](db[_0xe10c('0x4a')],{'as':_0xe10c('0x165')});db[_0xe10c('0x132')][_0xe10c('0x111')](db[_0xe10c('0x48')],{'as':_0xe10c('0x141')});db[_0xe10c('0x132')][_0xe10c('0x111')](db[_0xe10c('0x18')],{'as':_0xe10c('0x17b'),'onDelete':_0xe10c('0x10e')});db[_0xe10c('0x132')][_0xe10c('0x111')](db[_0xe10c('0x4c')],{'as':_0xe10c('0x157')});db[_0xe10c('0x132')]['belongsTo'](db['Trunk'],{'as':'Trunk'});db[_0xe10c('0x132')][_0xe10c('0x14b')](db['CmList'],{'as':_0xe10c('0x167'),'foreignKey':_0xe10c('0x168')});db[_0xe10c('0x132')][_0xe10c('0x14b')](db[_0xe10c('0x82')],{'as':_0xe10c('0x14f'),'foreignKey':_0xe10c('0x150')});db[_0xe10c('0x132')]['belongsToMany'](db['User'],{'as':_0xe10c('0x153'),'through':_0xe10c('0x133')});db[_0xe10c('0x48')]['belongsTo'](db[_0xe10c('0x13')],{'onDelete':_0xe10c('0x15f')});db['FaxApplication'][_0xe10c('0x14b')](db[_0xe10c('0x4e')],{'onDelete':_0xe10c('0x15f')});db[_0xe10c('0x48')][_0xe10c('0x14b')](db[_0xe10c('0x132')],{'onDelete':_0xe10c('0x15f')});db[_0xe10c('0x48')]['belongsTo'](db[_0xe10c('0x16f')],{'onDelete':_0xe10c('0x15f'),'foreignKey':'TagId'});db[_0xe10c('0x4a')][_0xe10c('0x111')](db['FaxMessage'],{'as':_0xe10c('0x157'),'onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x17c')});db['FaxInteraction'][_0xe10c('0x14b')](db[_0xe10c('0x132')],{'as':'Account','foreignKey':_0xe10c('0x17a')});db[_0xe10c('0x4a')][_0xe10c('0x14b')](db['CmContact'],{'as':_0xe10c('0x15c'),'foreignKey':'ContactId'});db[_0xe10c('0x4a')][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'as':_0xe10c('0x16e'),'foreignKey':_0xe10c('0x10f')});db['FaxInteraction']['belongsToMany'](db[_0xe10c('0x16f')],{'through':_0xe10c('0x17d'),'as':'Tags'});db[_0xe10c('0x4a')][_0xe10c('0x11e')](db[_0xe10c('0x16f')],{'through':'fax_interaction_has_tags','as':'ThroughTags'});db['FaxInteraction'][_0xe10c('0x11e')](db[_0xe10c('0x13')],{'as':_0xe10c('0x172'),'through':'user_has_fax_interactions','foreignKey':_0xe10c('0x17c')});db[_0xe10c('0x4c')][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'onDelete':_0xe10c('0x10e'),'as':_0xe10c('0x13')});db[_0xe10c('0x4c')][_0xe10c('0x14b')](db[_0xe10c('0x4a')],{'as':_0xe10c('0x174'),'foreignKey':_0xe10c('0x17c')});db[_0xe10c('0x4c')][_0xe10c('0x14b')](db['CmContact'],{'onDelete':_0xe10c('0x10e'),'as':_0xe10c('0x15c')});db[_0xe10c('0x4c')][_0xe10c('0x14b')](db['Attachment'],{'as':_0xe10c('0xe3'),'foreignKey':'AttachmentId'});db['FaxMessage'][_0xe10c('0x14b')](db[_0xe10c('0x132')],{'as':_0xe10c('0x16c'),'foreignKey':_0xe10c('0x17a')});db[_0xe10c('0x4e')][_0xe10c('0x11e')](db[_0xe10c('0x13')],{'as':_0xe10c('0x153'),'through':_0xe10c('0x31')});db[_0xe10c('0x4e')][_0xe10c('0x11e')](db['Team'],{'through':_0xe10c('0x17e'),'as':'Teams'});db[_0xe10c('0x17f')]['belongsTo'](db[_0xe10c('0x132')],{});db[_0xe10c('0x17f')]['belongsTo'](db[_0xe10c('0xef')],{'as':_0xe10c('0x167'),'foreignKey':_0xe10c('0x168')});db[_0xe10c('0x17f')][_0xe10c('0x14b')](db[_0xe10c('0x6f')],{'as':_0xe10c('0x15c'),'foreignKey':'ContactId'});db[_0xe10c('0x17f')]['belongsTo'](db[_0xe10c('0x4a')],{});db[_0xe10c('0x17f')][_0xe10c('0x14b')](db['FaxMessage'],{});db[_0xe10c('0x17f')][_0xe10c('0x14b')](db[_0xe10c('0x13')],{});db[_0xe10c('0x17f')][_0xe10c('0x14b')](db[_0xe10c('0x4e')],{});db['SmsAccount']['hasMany'](db[_0xe10c('0x7d')],{'as':_0xe10c('0x162'),'foreignKey':'SmsAccountId','onDelete':'cascade'});db[_0xe10c('0x51')][_0xe10c('0x111')](db[_0xe10c('0x7b')],{'as':'Answers','foreignKey':_0xe10c('0x180')});db['SmsAccount'][_0xe10c('0x111')](db[_0xe10c('0x55')],{'as':_0xe10c('0x157'),'foreignKey':_0xe10c('0x180')});db[_0xe10c('0x51')][_0xe10c('0x111')](db[_0xe10c('0x54')],{'as':_0xe10c('0x165')});db[_0xe10c('0x51')][_0xe10c('0x111')](db['SmsApplication'],{'as':_0xe10c('0x141')});db[_0xe10c('0x51')][_0xe10c('0x14b')](db[_0xe10c('0xef')],{'as':_0xe10c('0x167'),'foreignKey':'ListId'});db['SmsAccount'][_0xe10c('0x14b')](db['Pause'],{'as':_0xe10c('0x14f'),'foreignKey':_0xe10c('0x150')});db[_0xe10c('0x51')][_0xe10c('0x11e')](db[_0xe10c('0x13')],{'as':_0xe10c('0x153'),'through':_0xe10c('0x139')});db[_0xe10c('0x52')][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'onDelete':'restrict'});db[_0xe10c('0x52')]['belongsTo'](db[_0xe10c('0x56')],{'onDelete':_0xe10c('0x15f')});db[_0xe10c('0x52')][_0xe10c('0x14b')](db[_0xe10c('0x51')],{'onDelete':'restrict'});db[_0xe10c('0x52')][_0xe10c('0x14b')](db[_0xe10c('0x80')],{'onDelete':_0xe10c('0x15f'),'foreignKey':_0xe10c('0x177')});db['SmsApplication']['belongsTo'](db['Tag'],{'onDelete':_0xe10c('0x15f'),'foreignKey':_0xe10c('0x178')});db[_0xe10c('0x54')][_0xe10c('0x111')](db['SmsMessage'],{'as':_0xe10c('0x157'),'onDelete':_0xe10c('0x10e'),'foreignKey':'SmsInteractionId'});db[_0xe10c('0x54')][_0xe10c('0x14b')](db[_0xe10c('0x51')],{'as':_0xe10c('0x16c'),'foreignKey':_0xe10c('0x180')});db[_0xe10c('0x54')][_0xe10c('0x14b')](db[_0xe10c('0x6f')],{'as':'Contact','foreignKey':'ContactId'});db['SmsInteraction'][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'as':'Owner','foreignKey':_0xe10c('0x10f')});db[_0xe10c('0x54')][_0xe10c('0x11e')](db[_0xe10c('0x16f')],{'through':_0xe10c('0x181'),'as':_0xe10c('0x170')});db[_0xe10c('0x54')][_0xe10c('0x11e')](db[_0xe10c('0x16f')],{'through':_0xe10c('0x181'),'as':'ThroughTags'});db[_0xe10c('0x54')][_0xe10c('0x11e')](db[_0xe10c('0x13')],{'as':_0xe10c('0x172'),'through':_0xe10c('0x124'),'foreignKey':_0xe10c('0x182')});db['SmsMessage'][_0xe10c('0x14b')](db['User'],{'as':'User'});db['SmsMessage'][_0xe10c('0x14b')](db[_0xe10c('0x6f')],{'onDelete':'cascade','as':_0xe10c('0x15c')});db['SmsMessage'][_0xe10c('0x14b')](db['SmsInteraction'],{'onDelete':_0xe10c('0x10e'),'as':_0xe10c('0x174'),'foreignKey':_0xe10c('0x182')});db[_0xe10c('0x55')][_0xe10c('0x14b')](db[_0xe10c('0x51')],{'as':_0xe10c('0x16c'),'foreignKey':_0xe10c('0x180')});db[_0xe10c('0x56')][_0xe10c('0x11e')](db[_0xe10c('0x13')],{'as':'Agents','through':_0xe10c('0x33'),'foreignKey':'SmsQueueId'});db[_0xe10c('0x56')][_0xe10c('0x11e')](db[_0xe10c('0xdd')],{'through':'team_has_sms_queues','as':_0xe10c('0x16a')});db[_0xe10c('0x58')]['hasMany'](db[_0xe10c('0x7d')],{'as':_0xe10c('0x162'),'foreignKey':_0xe10c('0x183'),'onDelete':_0xe10c('0x10e')});db[_0xe10c('0x58')]['hasMany'](db[_0xe10c('0x7b')],{'as':'Answers','foreignKey':_0xe10c('0x183')});db[_0xe10c('0x58')][_0xe10c('0x111')](db[_0xe10c('0x5b')],{'as':_0xe10c('0x165'),'foreignKey':'OpenchannelAccountId'});db[_0xe10c('0x58')][_0xe10c('0x111')](db[_0xe10c('0x5d')],{'as':_0xe10c('0x157'),'foreignKey':_0xe10c('0x183')});db['OpenchannelAccount']['hasMany'](db[_0xe10c('0x5a')],{'as':'Applications','foreignKey':_0xe10c('0x183')});db[_0xe10c('0x58')][_0xe10c('0x14b')](db['CmList'],{'as':_0xe10c('0x167'),'foreignKey':'ListId'});db[_0xe10c('0x58')][_0xe10c('0x14b')](db[_0xe10c('0x82')],{'as':_0xe10c('0x14f'),'foreignKey':'mandatoryDispositionPauseId'});db[_0xe10c('0x58')][_0xe10c('0x11e')](db[_0xe10c('0x13')],{'as':_0xe10c('0x153'),'through':_0xe10c('0x137')});db['OpenchannelApplication'][_0xe10c('0x14b')](db['User'],{'onDelete':_0xe10c('0x15f')});db[_0xe10c('0x5a')][_0xe10c('0x14b')](db[_0xe10c('0x5f')],{'onDelete':_0xe10c('0x15f'),'foreignKey':_0xe10c('0x184')});db[_0xe10c('0x5a')][_0xe10c('0x14b')](db[_0xe10c('0x58')],{'onDelete':_0xe10c('0x15f'),'foreignKey':'OpenchannelAccountId'});db[_0xe10c('0x5a')][_0xe10c('0x14b')](db[_0xe10c('0x80')],{'onDelete':_0xe10c('0x15f'),'foreignKey':_0xe10c('0x177')});db[_0xe10c('0x5a')][_0xe10c('0x14b')](db[_0xe10c('0x16f')],{'onDelete':_0xe10c('0x15f'),'foreignKey':'TagId'});db[_0xe10c('0x5b')]['hasMany'](db[_0xe10c('0x5d')],{'as':_0xe10c('0x157'),'onDelete':'cascade','foreignKey':_0xe10c('0x185')});db[_0xe10c('0x5b')][_0xe10c('0x14b')](db['OpenchannelAccount'],{'as':'Account','foreignKey':_0xe10c('0x183')});db[_0xe10c('0x5b')][_0xe10c('0x14b')](db[_0xe10c('0x6f')],{'as':_0xe10c('0x15c'),'foreignKey':'ContactId'});db[_0xe10c('0x5b')][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'as':'Owner','foreignKey':_0xe10c('0x10f')});db[_0xe10c('0x5b')][_0xe10c('0x11e')](db['Tag'],{'through':_0xe10c('0x186'),'as':_0xe10c('0x170')});db['OpenchannelInteraction'][_0xe10c('0x11e')](db[_0xe10c('0x16f')],{'through':'openchannel_interaction_has_tags','as':_0xe10c('0x171')});db[_0xe10c('0x5b')][_0xe10c('0x11e')](db['User'],{'as':'Users','through':_0xe10c('0x187'),'foreignKey':_0xe10c('0x185')});db[_0xe10c('0x5d')][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'onDelete':_0xe10c('0x10e'),'as':_0xe10c('0x13')});db[_0xe10c('0x5d')]['belongsTo'](db[_0xe10c('0x6f')],{'onDelete':_0xe10c('0x10e'),'as':'Contact'});db[_0xe10c('0x5d')][_0xe10c('0x14b')](db[_0xe10c('0x5b')],{'onDelete':'cascade','as':_0xe10c('0x174'),'foreignKey':_0xe10c('0x185')});db['OpenchannelMessage'][_0xe10c('0x14b')](db[_0xe10c('0xe3')],{'as':_0xe10c('0xe3'),'foreignKey':_0xe10c('0x188')});db[_0xe10c('0x5d')][_0xe10c('0x14b')](db[_0xe10c('0x58')],{'as':_0xe10c('0x16c'),'foreignKey':'OpenchannelAccountId'});db[_0xe10c('0x5f')][_0xe10c('0x11e')](db[_0xe10c('0x13')],{'as':_0xe10c('0x153'),'through':_0xe10c('0x35'),'foreignKey':'OpenchannelQueueId'});db[_0xe10c('0x5f')][_0xe10c('0x11e')](db[_0xe10c('0xdd')],{'through':_0xe10c('0x189'),'as':_0xe10c('0x16a')});db[_0xe10c('0x60')][_0xe10c('0x111')](db[_0xe10c('0x7d')],{'as':_0xe10c('0x162'),'foreignKey':_0xe10c('0x175'),'onDelete':'cascade'});db[_0xe10c('0x60')]['hasMany'](db[_0xe10c('0x7b')],{'as':_0xe10c('0x163'),'foreignKey':_0xe10c('0x175')});db[_0xe10c('0x60')]['hasMany'](db[_0xe10c('0x6b')],{'as':_0xe10c('0x18a')});db[_0xe10c('0x60')][_0xe10c('0x111')](db[_0xe10c('0x65')],{'as':_0xe10c('0x165')});db[_0xe10c('0x60')][_0xe10c('0x111')](db[_0xe10c('0x63')],{'as':_0xe10c('0x141')});db[_0xe10c('0x60')]['hasMany'](db[_0xe10c('0x66')],{'as':'Messages'});db[_0xe10c('0x60')][_0xe10c('0x14b')](db[_0xe10c('0xef')],{'as':'List','foreignKey':'ListId'});db[_0xe10c('0x60')]['belongsTo'](db['Interval'],{'as':'Interval','foreignKey':_0xe10c('0x177')});db[_0xe10c('0x60')][_0xe10c('0x14b')](db[_0xe10c('0x3b')],{'as':_0xe10c('0x3b'),'foreignKey':_0xe10c('0x15e')});db['ChatWebsite'][_0xe10c('0x14b')](db[_0xe10c('0x82')],{'as':_0xe10c('0x14f'),'foreignKey':_0xe10c('0x150')});db[_0xe10c('0x60')]['belongsToMany'](db[_0xe10c('0x13')],{'as':_0xe10c('0x153'),'through':_0xe10c('0x131')});db[_0xe10c('0x61')][_0xe10c('0x14b')](db['OpenchannelAccount'],{});db[_0xe10c('0x61')][_0xe10c('0x14b')](db[_0xe10c('0xef')],{'as':'List','foreignKey':_0xe10c('0x168')});db[_0xe10c('0x61')]['belongsTo'](db['CmContact'],{'as':'Contact','foreignKey':'ContactId'});db[_0xe10c('0x61')][_0xe10c('0x14b')](db['OpenchannelInteraction'],{});db['OpenchannelQueueReport'][_0xe10c('0x14b')](db[_0xe10c('0x5d')],{});db['OpenchannelQueueReport'][_0xe10c('0x14b')](db[_0xe10c('0x13')],{});db[_0xe10c('0x61')][_0xe10c('0x14b')](db[_0xe10c('0x5f')],{});db[_0xe10c('0x63')][_0xe10c('0x14b')](db['User'],{'as':_0xe10c('0x18b'),'foreignKey':_0xe10c('0x10f'),'onDelete':_0xe10c('0x15f')});db[_0xe10c('0x63')][_0xe10c('0x14b')](db[_0xe10c('0x12a')],{'as':_0xe10c('0x18c'),'foreignKey':_0xe10c('0x18d'),'onDelete':_0xe10c('0x15f')});db[_0xe10c('0x63')][_0xe10c('0x14b')](db[_0xe10c('0x60')],{'as':_0xe10c('0x18e'),'foreignKey':_0xe10c('0x175'),'onDelete':_0xe10c('0x15f')});db[_0xe10c('0x63')][_0xe10c('0x14b')](db['Tag'],{'onDelete':'restrict','foreignKey':'TagId'});db[_0xe10c('0x65')]['hasMany'](db['ChatMessage'],{'as':'Messages','onDelete':'cascade','foreignKey':'ChatInteractionId'});db['ChatInteraction'][_0xe10c('0x14b')](db[_0xe10c('0x60')],{'as':_0xe10c('0x16c'),'foreignKey':_0xe10c('0x175')});db[_0xe10c('0x65')][_0xe10c('0x14b')](db[_0xe10c('0x6f')],{'as':_0xe10c('0x15c'),'foreignKey':_0xe10c('0x16d')});db[_0xe10c('0x65')][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'as':'Owner','foreignKey':_0xe10c('0x10f')});db[_0xe10c('0x65')][_0xe10c('0x11e')](db['Tag'],{'through':_0xe10c('0x18f'),'as':'Tags'});db['ChatInteraction']['belongsToMany'](db['Tag'],{'through':'chat_interaction_has_tags','as':_0xe10c('0x171')});db[_0xe10c('0x65')]['belongsToMany'](db[_0xe10c('0x13')],{'as':'Users','through':_0xe10c('0x122'),'foreignKey':_0xe10c('0x190')});db['ChatMessage'][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'onDelete':_0xe10c('0x10e'),'as':_0xe10c('0x13')});db[_0xe10c('0x66')][_0xe10c('0x14b')](db[_0xe10c('0x6f')],{'onDelete':'cascade','as':'Contact','foreignKey':'ContactId'});db[_0xe10c('0x66')][_0xe10c('0x14b')](db[_0xe10c('0x65')],{'onDelete':'cascade','as':_0xe10c('0x174'),'foreignKey':'ChatInteractionId'});db[_0xe10c('0x66')][_0xe10c('0x14b')](db[_0xe10c('0xe3')],{'as':'Attachment','foreignKey':_0xe10c('0x188')});db['ChatMessage'][_0xe10c('0x14b')](db[_0xe10c('0x60')],{'as':_0xe10c('0x16c'),'foreignKey':_0xe10c('0x175')});db[_0xe10c('0x67')][_0xe10c('0x111')](db[_0xe10c('0xe3')],{'as':'Attachments','foreignKey':_0xe10c('0x176'),'onDelete':_0xe10c('0x10e'),'hooks':!![]});db[_0xe10c('0x67')][_0xe10c('0x14b')](db['CmContact'],{'onDelete':_0xe10c('0x10e'),'as':'Contact','foreignKey':_0xe10c('0x16d')});db[_0xe10c('0x67')]['belongsTo'](db['ChatWebsite'],{'as':'Account','foreignKey':'ChatWebsiteId'});db['ChatQueue'][_0xe10c('0x11e')](db[_0xe10c('0x13')],{'as':_0xe10c('0x153'),'through':_0xe10c('0x2e'),'hooks':!![]});db['ChatQueue']['belongsToMany'](db[_0xe10c('0xdd')],{'through':_0xe10c('0x191'),'as':_0xe10c('0x16a')});db[_0xe10c('0x6a')]['hasMany'](db[_0xe10c('0xc9')],{'as':_0xe10c('0x157'),'foreignKey':'ChatGroupId','onDelete':'cascade'});db[_0xe10c('0x6a')][_0xe10c('0x11e')](db[_0xe10c('0x13')],{'as':_0xe10c('0x144'),'through':_0xe10c('0x11d')});db[_0xe10c('0x6b')][_0xe10c('0x14b')](db[_0xe10c('0x60')],{'as':_0xe10c('0x18e'),'foreignKey':_0xe10c('0x175')});db[_0xe10c('0x6d')][_0xe10c('0x111')](db[_0xe10c('0x6f')],{'as':_0xe10c('0x192'),'foreignKey':'CompanyId'});db[_0xe10c('0x6f')][_0xe10c('0x111')](db[_0xe10c('0x8d')],{'as':_0xe10c('0x193'),'foreignKey':_0xe10c('0x194')});db[_0xe10c('0x6f')][_0xe10c('0x111')](db[_0xe10c('0x146')],{'as':_0xe10c('0x147'),'foreignKey':'ContactId'});db[_0xe10c('0x6f')][_0xe10c('0x111')](db[_0xe10c('0x114')],{'as':'HopperFinals','foreignKey':_0xe10c('0x16d')});db[_0xe10c('0x6f')][_0xe10c('0x111')](db['CmHopperHistory'],{'as':_0xe10c('0x148'),'foreignKey':_0xe10c('0x16d')});db[_0xe10c('0x6f')]['hasMany'](db[_0xe10c('0x75')],{'as':_0xe10c('0x75'),'foreignKey':_0xe10c('0x16d')});db['CmContact']['hasMany'](db[_0xe10c('0xcd')],{'as':_0xe10c('0x14a'),'foreignKey':_0xe10c('0x16d')});db[_0xe10c('0x6f')][_0xe10c('0x111')](db[_0xe10c('0x5b')],{'as':_0xe10c('0x117'),'foreignKey':_0xe10c('0x16d'),'onDelete':_0xe10c('0x15f')});db[_0xe10c('0x6f')]['hasMany'](db[_0xe10c('0x65')],{'as':'ChatInteractions','foreignKey':_0xe10c('0x16d'),'onDelete':_0xe10c('0x15f')});db[_0xe10c('0x6f')][_0xe10c('0x111')](db[_0xe10c('0x54')],{'as':_0xe10c('0x118'),'foreignKey':_0xe10c('0x16d'),'onDelete':'restrict'});db['CmContact']['hasMany'](db[_0xe10c('0x4a')],{'as':_0xe10c('0x119'),'foreignKey':_0xe10c('0x16d'),'onDelete':_0xe10c('0x15f')});db[_0xe10c('0x6f')][_0xe10c('0x111')](db[_0xe10c('0x40')],{'as':_0xe10c('0x11a'),'foreignKey':'ContactId','onDelete':_0xe10c('0x15f')});db[_0xe10c('0x6f')][_0xe10c('0x14b')](db[_0xe10c('0x6d')],{'as':_0xe10c('0x195'),'foreignKey':'CompanyId'});db['CmContact'][_0xe10c('0x14b')](db[_0xe10c('0xef')],{'as':_0xe10c('0x167'),'foreignKey':_0xe10c('0x168'),'onDelete':'cascade'});db[_0xe10c('0x6f')][_0xe10c('0x11e')](db[_0xe10c('0x13')],{'as':'Users','through':_0xe10c('0x196')});db['CmContact'][_0xe10c('0x11e')](db['Tag'],{'as':_0xe10c('0x170'),'through':'cm_contact_has_tags'});db[_0xe10c('0x6f')][_0xe10c('0x11e')](db[_0xe10c('0x16f')],{'through':_0xe10c('0x197'),'as':_0xe10c('0x171')});db[_0xe10c('0x146')]['hasMany'](db[_0xe10c('0x198')],{'as':'AdditionalPhones','foreignKey':_0xe10c('0x199')});db[_0xe10c('0x146')][_0xe10c('0x14b')](db[_0xe10c('0x6f')],{'as':'Contact','foreignKey':_0xe10c('0x16d'),'onDelete':_0xe10c('0x10e')});db[_0xe10c('0x146')][_0xe10c('0x14b')](db[_0xe10c('0xef')],{'as':_0xe10c('0x167'),'foreignKey':_0xe10c('0x168'),'onDelete':_0xe10c('0x10e')});db[_0xe10c('0x146')]['belongsTo'](db[_0xe10c('0x13')],{'as':_0xe10c('0x18b'),'foreignKey':_0xe10c('0x10f')});db[_0xe10c('0x146')]['belongsTo'](db['VoiceQueue'],{'as':_0xe10c('0x18c'),'foreignKey':_0xe10c('0x145'),'onDelete':_0xe10c('0x10e')});db[_0xe10c('0x146')]['belongsTo'](db['Campaign'],{'as':_0xe10c('0xe0'),'foreignKey':'CampaignId','onDelete':_0xe10c('0x10e')});db[_0xe10c('0x146')][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'as':_0xe10c('0x16e'),'foreignKey':_0xe10c('0x19a')});db[_0xe10c('0x70')][_0xe10c('0x14b')](db[_0xe10c('0x6f')],{'as':_0xe10c('0x15c'),'foreignKey':'ContactId','onDelete':_0xe10c('0x10e')});db[_0xe10c('0x70')][_0xe10c('0x14b')](db[_0xe10c('0xef')],{'as':_0xe10c('0x167'),'foreignKey':'ListId','onDelete':_0xe10c('0x10e')});db['CmHopperBlack']['belongsTo'](db[_0xe10c('0x126')],{'as':'Queue','foreignKey':'VoiceQueueId','onDelete':_0xe10c('0x10e')});db[_0xe10c('0x70')]['belongsTo'](db[_0xe10c('0xe0')],{'as':_0xe10c('0xe0'),'foreignKey':'CampaignId','onDelete':_0xe10c('0x10e')});db[_0xe10c('0x19b')][_0xe10c('0x111')](db[_0xe10c('0x19c')],{'as':{'plural':_0xe10c('0x19d'),'singular':_0xe10c('0x19e')},'foreignKey':_0xe10c('0x19f'),'onDelete':_0xe10c('0x10e'),'hooks':!![]});db[_0xe10c('0x19b')]['hasMany'](db[_0xe10c('0x19c')],{'as':{'plural':_0xe10c('0x1a0'),'singular':'OneAny'},'foreignKey':_0xe10c('0x1a1'),'onDelete':_0xe10c('0x10e'),'hooks':!![]});db[_0xe10c('0x19b')]['hasMany'](db[_0xe10c('0x79')],{'as':_0xe10c('0x1a2'),'foreignKey':_0xe10c('0x1a3'),'onDelete':_0xe10c('0x10e'),'hooks':!![]});db[_0xe10c('0x7d')]['hasMany'](db['Disposition'],{'as':_0xe10c('0x162'),'foreignKey':_0xe10c('0x1a4'),'onDelete':_0xe10c('0x10e')});db['Interval'][_0xe10c('0x111')](db[_0xe10c('0x80')],{'as':_0xe10c('0x1a5'),'foreignKey':_0xe10c('0x177'),'onDelete':_0xe10c('0x10e'),'hooks':!![],'required':![]});db[_0xe10c('0x80')][_0xe10c('0x111')](db[_0xe10c('0x18')],{'as':_0xe10c('0x113'),'foreignKey':_0xe10c('0x177'),'onDelete':_0xe10c('0x15f')});db[_0xe10c('0x80')][_0xe10c('0x111')](db[_0xe10c('0x166')],{'as':_0xe10c('0x1a6'),'foreignKey':'IntervalId'});db[_0xe10c('0x80')][_0xe10c('0x111')](db[_0xe10c('0x63')],{'as':_0xe10c('0x1a7'),'foreignKey':_0xe10c('0x177')});db[_0xe10c('0x80')][_0xe10c('0x111')](db[_0xe10c('0x48')],{'as':_0xe10c('0x1a8'),'foreignKey':_0xe10c('0x177')});db[_0xe10c('0x80')][_0xe10c('0x111')](db[_0xe10c('0x52')],{'as':_0xe10c('0x1a9'),'foreignKey':_0xe10c('0x177')});db[_0xe10c('0x88')]['belongsTo'](db['MailAccount'],{});db[_0xe10c('0x88')]['belongsTo'](db['AnalyticDefaultReport'],{'foreignKey':_0xe10c('0x1aa')});db['Schedule']['belongsTo'](db[_0xe10c('0x97')],{'foreignKey':'CustomReportId'});db[_0xe10c('0x8a')][_0xe10c('0x11e')](db[_0xe10c('0x1a')],{'as':'Mohs','through':'moh_has_sounds','onDelete':_0xe10c('0x15f')});db['Tag'][_0xe10c('0x11e')](db[_0xe10c('0x6f')],{'through':_0xe10c('0x197')});db[_0xe10c('0x16f')][_0xe10c('0x11e')](db[_0xe10c('0x65')],{'through':'chat_interaction_has_tags'});db[_0xe10c('0x16f')][_0xe10c('0x11e')](db[_0xe10c('0x40')],{'through':_0xe10c('0x1ab')});db[_0xe10c('0x16f')][_0xe10c('0x11e')](db[_0xe10c('0x54')],{'through':_0xe10c('0x181')});db['Tag'][_0xe10c('0x11e')](db[_0xe10c('0x4a')],{'through':_0xe10c('0x17d')});db['Tag'][_0xe10c('0x11e')](db[_0xe10c('0x5b')],{'through':_0xe10c('0x186')});db['Tag'][_0xe10c('0x11e')](db[_0xe10c('0xfc')],{'through':_0xe10c('0x1ac')});db[_0xe10c('0x8d')][_0xe10c('0x14b')](db[_0xe10c('0x8c')],{'as':_0xe10c('0x1ad'),'foreignKey':_0xe10c('0x1ae')});db['CmHopperAdditionalPhone'][_0xe10c('0x14b')](db[_0xe10c('0x146')],{'as':_0xe10c('0x1af'),'foreignKey':_0xe10c('0x199')});db[_0xe10c('0x8d')][_0xe10c('0x14b')](db[_0xe10c('0x6f')],{'as':_0xe10c('0x15c'),'foreignKey':_0xe10c('0x194')});db[_0xe10c('0x90')]['hasMany'](db[_0xe10c('0x19c')],{'as':{'plural':'AllConditions','singular':_0xe10c('0x1b0')},'foreignKey':_0xe10c('0x1b1'),'onDelete':'cascade','hooks':!![]});db['Trigger']['hasMany'](db[_0xe10c('0x19c')],{'as':{'plural':_0xe10c('0x1b2'),'singular':_0xe10c('0x1b3')},'foreignKey':_0xe10c('0x1b4'),'onDelete':_0xe10c('0x10e'),'hooks':!![]});db[_0xe10c('0x90')][_0xe10c('0x111')](db[_0xe10c('0x79')],{'as':_0xe10c('0x1a2'),'foreignKey':'TriggerId','onDelete':_0xe10c('0x10e'),'hooks':!![]});db[_0xe10c('0x97')][_0xe10c('0x111')](db['AnalyticFieldReport'],{'as':_0xe10c('0x1b5'),'onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x1b6'),'hooks':!![]});db[_0xe10c('0x99')][_0xe10c('0x111')](db[_0xe10c('0x9d')],{'as':'Fields','onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x1aa')});db['AnalyticMetric'][_0xe10c('0x111')](db[_0xe10c('0x9d')],{'as':'Fields','onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x1b7')});db[_0xe10c('0x9d')][_0xe10c('0x14b')](db['AnalyticMetric'],{'foreignKey':'MetricId'});db[_0xe10c('0xa0')]['hasMany'](db[_0xe10c('0x1b8')],{'as':_0xe10c('0x1b9'),'onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x1ba')});db[_0xe10c('0x1b8')][_0xe10c('0x111')](db[_0xe10c('0xa3')],{'as':_0xe10c('0x1bb'),'onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x1bc')});db[_0xe10c('0x1b8')][_0xe10c('0x111')](db[_0xe10c('0xa3')],{'as':_0xe10c('0x1bd'),'onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x1be')});db['SalesforceConfiguration'][_0xe10c('0x111')](db['SalesforceField'],{'as':_0xe10c('0x1b5'),'onDelete':_0xe10c('0x10e'),'foreignKey':'FieldId'});db['SalesforceConfiguration'][_0xe10c('0x14b')](db['SalesforceAccount'],{'as':'Account','foreignKey':_0xe10c('0x1ba')});db['SalesforceField'][_0xe10c('0x111')](db[_0xe10c('0xa3')],{'as':_0xe10c('0x1bf'),'foreignKey':_0xe10c('0x1bc')});db['SalesforceField']['hasMany'](db['SalesforceField'],{'as':_0xe10c('0x1c0'),'foreignKey':_0xe10c('0x1be')});db['SalesforceField'][_0xe10c('0x111')](db[_0xe10c('0xa3')],{'as':_0xe10c('0x1c1'),'foreignKey':_0xe10c('0x1c2')});db[_0xe10c('0xa3')][_0xe10c('0x14b')](db[_0xe10c('0x92')],{'as':_0xe10c('0x92'),'foreignKey':_0xe10c('0x1c3')});db['SugarcrmAccount'][_0xe10c('0x111')](db[_0xe10c('0xa6')],{'as':_0xe10c('0x1b9'),'onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x1ba')});db[_0xe10c('0xa6')]['hasMany'](db['SugarcrmField'],{'as':_0xe10c('0x1bb'),'onDelete':_0xe10c('0x10e'),'foreignKey':'SubjectId'});db[_0xe10c('0xa6')]['hasMany'](db[_0xe10c('0xa8')],{'as':'Descriptions','onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x1be')});db[_0xe10c('0xa6')][_0xe10c('0x111')](db[_0xe10c('0xa8')],{'as':_0xe10c('0x1b5'),'onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x1c2')});db[_0xe10c('0xa6')]['belongsTo'](db[_0xe10c('0xa4')],{'as':_0xe10c('0x16c'),'foreignKey':_0xe10c('0x1ba')});db['SugarcrmField'][_0xe10c('0x111')](db[_0xe10c('0xa8')],{'as':_0xe10c('0x1bf'),'foreignKey':'SubjectId'});db[_0xe10c('0xa8')][_0xe10c('0x111')](db[_0xe10c('0xa8')],{'as':_0xe10c('0x1c0'),'foreignKey':_0xe10c('0x1be')});db[_0xe10c('0xa8')][_0xe10c('0x111')](db[_0xe10c('0xa8')],{'as':_0xe10c('0x1c1'),'foreignKey':'FieldId'});db['SugarcrmField'][_0xe10c('0x14b')](db[_0xe10c('0x92')],{'as':_0xe10c('0x92'),'foreignKey':'VariableId'});db['DeskAccount'][_0xe10c('0x111')](db[_0xe10c('0x1c4')],{'as':_0xe10c('0x1b9'),'onDelete':_0xe10c('0x10e'),'foreignKey':'AccountId'});db[_0xe10c('0x1c4')][_0xe10c('0x111')](db[_0xe10c('0x1c5')],{'as':_0xe10c('0x1bb'),'onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x1bc')});db[_0xe10c('0x1c4')][_0xe10c('0x111')](db[_0xe10c('0x1c5')],{'as':_0xe10c('0x1bd'),'onDelete':'cascade','foreignKey':_0xe10c('0x1be')});db[_0xe10c('0x1c4')]['hasMany'](db['DeskField'],{'as':_0xe10c('0x1b5'),'onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x1c2')});db[_0xe10c('0x1c4')][_0xe10c('0x14b')](db[_0xe10c('0xa9')],{'as':_0xe10c('0x16c'),'foreignKey':_0xe10c('0x1ba')});db[_0xe10c('0x1c4')][_0xe10c('0x11e')](db[_0xe10c('0x16f')],{'through':_0xe10c('0x1c6')});db[_0xe10c('0x1c5')][_0xe10c('0x111')](db[_0xe10c('0x1c5')],{'as':'Subject','foreignKey':_0xe10c('0x1bc')});db[_0xe10c('0x1c5')]['hasMany'](db[_0xe10c('0x1c5')],{'as':_0xe10c('0x1c0'),'foreignKey':_0xe10c('0x1be')});db[_0xe10c('0x1c5')][_0xe10c('0x111')](db['DeskField'],{'as':_0xe10c('0x1c1'),'foreignKey':'FieldId'});db[_0xe10c('0x1c5')]['belongsTo'](db[_0xe10c('0x92')],{'as':_0xe10c('0x92'),'foreignKey':_0xe10c('0x1c3')});db[_0xe10c('0x1c7')][_0xe10c('0x111')](db[_0xe10c('0xab')],{'as':_0xe10c('0x1b9'),'onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x1ba')});db[_0xe10c('0xab')][_0xe10c('0x111')](db[_0xe10c('0xad')],{'as':'Subjects','onDelete':'cascade','foreignKey':_0xe10c('0x1bc')});db[_0xe10c('0xab')][_0xe10c('0x111')](db[_0xe10c('0xad')],{'as':_0xe10c('0x1bd'),'onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x1be')});db['ZohoConfiguration']['hasMany'](db[_0xe10c('0xad')],{'as':_0xe10c('0x1b5'),'onDelete':'cascade','foreignKey':_0xe10c('0x1c2')});db[_0xe10c('0xab')][_0xe10c('0x14b')](db['ZohoAccount'],{'as':_0xe10c('0x16c'),'foreignKey':_0xe10c('0x1ba')});db[_0xe10c('0xad')][_0xe10c('0x111')](db['ZohoField'],{'as':_0xe10c('0x1bf'),'foreignKey':'SubjectId'});db[_0xe10c('0xad')]['hasMany'](db[_0xe10c('0xad')],{'as':'Description','foreignKey':_0xe10c('0x1be')});db[_0xe10c('0xad')]['hasMany'](db['ZohoField'],{'as':_0xe10c('0x1c1'),'foreignKey':'FieldId'});db[_0xe10c('0xad')][_0xe10c('0x14b')](db[_0xe10c('0x92')],{'as':'Variable','foreignKey':'VariableId'});db[_0xe10c('0x1c8')][_0xe10c('0x111')](db[_0xe10c('0x1c9')],{'as':_0xe10c('0x1b9'),'onDelete':'cascade','foreignKey':_0xe10c('0x1ba')});db['ZendeskConfiguration'][_0xe10c('0x111')](db[_0xe10c('0xb0')],{'as':_0xe10c('0x1bb'),'foreignKey':'SubjectId'});db[_0xe10c('0x1c9')][_0xe10c('0x111')](db[_0xe10c('0xb0')],{'as':'Descriptions','foreignKey':'DescriptionId'});db[_0xe10c('0x1c9')][_0xe10c('0x111')](db['ZendeskField'],{'as':_0xe10c('0x1b5'),'foreignKey':_0xe10c('0x1c2')});db[_0xe10c('0x1c9')][_0xe10c('0x14b')](db[_0xe10c('0x1c8')],{'as':_0xe10c('0x16c'),'foreignKey':_0xe10c('0x1ba')});db['ZendeskConfiguration'][_0xe10c('0x11e')](db[_0xe10c('0x16f')],{'through':_0xe10c('0x1ca')});db[_0xe10c('0xb0')][_0xe10c('0x111')](db[_0xe10c('0xb0')],{'as':_0xe10c('0x1bf'),'foreignKey':_0xe10c('0x1bc')});db[_0xe10c('0xb0')][_0xe10c('0x111')](db[_0xe10c('0xb0')],{'as':_0xe10c('0x1c0'),'foreignKey':'DescriptionId'});db[_0xe10c('0xb0')]['hasMany'](db['ZendeskField'],{'as':_0xe10c('0x1c1'),'foreignKey':_0xe10c('0x1c2')});db[_0xe10c('0xb0')][_0xe10c('0x14b')](db[_0xe10c('0x92')],{'as':_0xe10c('0x92'),'foreignKey':_0xe10c('0x1c3')});db[_0xe10c('0xb2')]['hasMany'](db[_0xe10c('0x1cb')],{'as':_0xe10c('0x1b9'),'onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x1ba')});db[_0xe10c('0x1cb')]['hasMany'](db[_0xe10c('0xb5')],{'as':'Subjects','onDelete':_0xe10c('0x10e'),'foreignKey':'SubjectId'});db[_0xe10c('0x1cb')][_0xe10c('0x111')](db[_0xe10c('0xb5')],{'as':_0xe10c('0x1bd'),'onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x1be')});db[_0xe10c('0x1cb')][_0xe10c('0x111')](db[_0xe10c('0xb5')],{'as':_0xe10c('0x1b5'),'onDelete':_0xe10c('0x10e'),'foreignKey':'FieldId'});db[_0xe10c('0x1cb')][_0xe10c('0x14b')](db[_0xe10c('0xb2')],{'as':_0xe10c('0x16c'),'foreignKey':_0xe10c('0x1ba')});db[_0xe10c('0x1cb')][_0xe10c('0x11e')](db[_0xe10c('0x16f')],{'through':_0xe10c('0x1cc')});db['FreshdeskField'][_0xe10c('0x111')](db[_0xe10c('0xb5')],{'as':'Subject','foreignKey':_0xe10c('0x1bc')});db['FreshdeskField'][_0xe10c('0x111')](db['FreshdeskField'],{'as':'Description','foreignKey':'DescriptionId'});db['FreshdeskField'][_0xe10c('0x111')](db[_0xe10c('0xb5')],{'as':_0xe10c('0x1c1'),'foreignKey':_0xe10c('0x1c2')});db['FreshdeskField'][_0xe10c('0x14b')](db[_0xe10c('0x92')],{'as':_0xe10c('0x92'),'foreignKey':_0xe10c('0x1c3')});db['VtigerAccount']['hasMany'](db[_0xe10c('0x1cd')],{'as':_0xe10c('0x1b9'),'onDelete':_0xe10c('0x10e'),'foreignKey':'AccountId'});db['VtigerConfiguration'][_0xe10c('0x111')](db['VtigerField'],{'as':_0xe10c('0x1bb'),'foreignKey':_0xe10c('0x1bc')});db[_0xe10c('0x1cd')][_0xe10c('0x111')](db[_0xe10c('0x1ce')],{'as':_0xe10c('0x1bd'),'foreignKey':'DescriptionId'});db[_0xe10c('0x1cd')][_0xe10c('0x111')](db[_0xe10c('0x1ce')],{'as':_0xe10c('0x1b5'),'foreignKey':_0xe10c('0x1c2')});db[_0xe10c('0x1cd')][_0xe10c('0x14b')](db[_0xe10c('0xb6')],{'as':'Account','foreignKey':_0xe10c('0x1ba')});db['VtigerField'][_0xe10c('0x111')](db[_0xe10c('0x1ce')],{'as':_0xe10c('0x1bf'),'foreignKey':_0xe10c('0x1bc')});db[_0xe10c('0x1ce')][_0xe10c('0x111')](db[_0xe10c('0x1ce')],{'as':_0xe10c('0x1c0'),'foreignKey':'DescriptionId'});db[_0xe10c('0x1ce')]['hasMany'](db['VtigerField'],{'as':'Field','foreignKey':'FieldId'});db['VtigerField'][_0xe10c('0x14b')](db[_0xe10c('0x92')],{'as':_0xe10c('0x92'),'foreignKey':_0xe10c('0x1c3')});db[_0xe10c('0x1cf')][_0xe10c('0x111')](db[_0xe10c('0x1d0')],{'as':_0xe10c('0x1b9'),'onDelete':'cascade','foreignKey':_0xe10c('0x1ba')});db['ServicenowConfiguration'][_0xe10c('0x111')](db['ServicenowField'],{'as':'Subjects','foreignKey':_0xe10c('0x1bc')});db[_0xe10c('0x1d0')][_0xe10c('0x111')](db[_0xe10c('0xba')],{'as':'Descriptions','foreignKey':'DescriptionId'});db[_0xe10c('0x1d0')]['hasMany'](db['ServicenowField'],{'as':'Fields','foreignKey':'FieldId'});db[_0xe10c('0x1d0')][_0xe10c('0x14b')](db[_0xe10c('0x1cf')],{'as':_0xe10c('0x16c'),'foreignKey':'AccountId'});db['ServicenowField']['hasMany'](db[_0xe10c('0xba')],{'as':_0xe10c('0x1bf'),'foreignKey':_0xe10c('0x1bc')});db[_0xe10c('0xba')][_0xe10c('0x111')](db[_0xe10c('0xba')],{'as':_0xe10c('0x1c0'),'foreignKey':_0xe10c('0x1be')});db['ServicenowField'][_0xe10c('0x111')](db[_0xe10c('0xba')],{'as':'Field','foreignKey':_0xe10c('0x1c2')});db['ServicenowField'][_0xe10c('0x14b')](db[_0xe10c('0x92')],{'as':_0xe10c('0x92'),'foreignKey':_0xe10c('0x1c3')});db[_0xe10c('0xbc')][_0xe10c('0x111')](db['Dynamics365Configuration'],{'as':_0xe10c('0x1b9'),'onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x1ba')});db[_0xe10c('0xbc')][_0xe10c('0x14b')](db[_0xe10c('0x103')],{'as':_0xe10c('0x103'),'foreignKey':_0xe10c('0x1d1')});db[_0xe10c('0xbe')][_0xe10c('0x111')](db[_0xe10c('0xc0')],{'as':_0xe10c('0x1bb'),'onDelete':'cascade','foreignKey':'SubjectId'});db[_0xe10c('0xbe')][_0xe10c('0x111')](db[_0xe10c('0xc0')],{'as':_0xe10c('0x1bd'),'onDelete':_0xe10c('0x10e'),'foreignKey':'DescriptionId'});db[_0xe10c('0xbe')][_0xe10c('0x111')](db['Dynamics365Field'],{'as':'Fields','onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x1c2')});db[_0xe10c('0xbe')][_0xe10c('0x14b')](db[_0xe10c('0xbc')],{'as':'Account','foreignKey':'AccountId'});db[_0xe10c('0xc0')][_0xe10c('0x111')](db['Dynamics365Field'],{'as':'Subject','foreignKey':'SubjectId'});db[_0xe10c('0xc0')][_0xe10c('0x111')](db['Dynamics365Field'],{'as':_0xe10c('0x1c0'),'foreignKey':_0xe10c('0x1be')});db[_0xe10c('0xc0')][_0xe10c('0x111')](db[_0xe10c('0xc0')],{'as':_0xe10c('0x1c1'),'foreignKey':'FieldId'});db[_0xe10c('0xc0')][_0xe10c('0x14b')](db[_0xe10c('0x92')],{'as':_0xe10c('0x92'),'foreignKey':_0xe10c('0x1c3')});db[_0xe10c('0xc2')][_0xe10c('0x111')](db[_0xe10c('0xc4')],{'as':_0xe10c('0x1b9'),'onDelete':'cascade','foreignKey':_0xe10c('0x1ba')});db['FreshsalesConfiguration']['hasMany'](db[_0xe10c('0xc5')],{'as':'Subjects','foreignKey':_0xe10c('0x1bc')});db[_0xe10c('0xc4')][_0xe10c('0x111')](db['FreshsalesField'],{'as':_0xe10c('0x1bd'),'foreignKey':_0xe10c('0x1be')});db[_0xe10c('0xc4')][_0xe10c('0x111')](db[_0xe10c('0xc5')],{'as':_0xe10c('0x1b5'),'foreignKey':_0xe10c('0x1c2')});db[_0xe10c('0xc4')][_0xe10c('0x14b')](db[_0xe10c('0xc2')],{'as':_0xe10c('0x16c'),'foreignKey':'AccountId'});db[_0xe10c('0xc5')][_0xe10c('0x111')](db['FreshsalesField'],{'as':'Subject','foreignKey':_0xe10c('0x1bc')});db[_0xe10c('0xc5')]['hasMany'](db[_0xe10c('0xc5')],{'as':_0xe10c('0x1c0'),'foreignKey':_0xe10c('0x1be')});db['FreshsalesField'][_0xe10c('0x111')](db[_0xe10c('0xc5')],{'as':_0xe10c('0x1c1'),'foreignKey':_0xe10c('0x1c2')});db[_0xe10c('0xc5')][_0xe10c('0x14b')](db['Variable'],{'as':_0xe10c('0x92'),'foreignKey':_0xe10c('0x1c3')});db[_0xe10c('0xc8')][_0xe10c('0x14b')](db[_0xe10c('0x60')],{});db['ChatQueueReport'][_0xe10c('0x14b')](db[_0xe10c('0xef')],{'as':_0xe10c('0x167'),'foreignKey':_0xe10c('0x168')});db[_0xe10c('0xc8')][_0xe10c('0x14b')](db['CmContact'],{'as':_0xe10c('0x15c'),'foreignKey':_0xe10c('0x16d')});db['ChatQueueReport'][_0xe10c('0x14b')](db[_0xe10c('0x65')],{});db[_0xe10c('0xc8')]['belongsTo'](db[_0xe10c('0x66')],{});db[_0xe10c('0xc8')][_0xe10c('0x14b')](db[_0xe10c('0x13')],{});db[_0xe10c('0xc8')][_0xe10c('0x14b')](db[_0xe10c('0x12a')],{});db[_0xe10c('0xc9')][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x1d2')});db[_0xe10c('0xc9')]['belongsTo'](db[_0xe10c('0x13')],{'onDelete':_0xe10c('0x10e'),'foreignKey':_0xe10c('0x1d3')});db[_0xe10c('0xcd')]['hasMany'](db['JscriptyQuestionReport'],{'foreignKey':_0xe10c('0x1d4'),'onDelete':_0xe10c('0x10e')});db[_0xe10c('0xcd')][_0xe10c('0x111')](db[_0xe10c('0xca')],{'foreignKey':_0xe10c('0x1d4'),'onDelete':'cascade'});db['SmsQueueReport'][_0xe10c('0x14b')](db[_0xe10c('0x51')],{});db[_0xe10c('0xce')]['belongsTo'](db[_0xe10c('0xef')],{'as':_0xe10c('0x167'),'foreignKey':_0xe10c('0x168')});db['SmsQueueReport']['belongsTo'](db[_0xe10c('0x6f')],{'as':_0xe10c('0x15c'),'foreignKey':_0xe10c('0x16d')});db[_0xe10c('0xce')][_0xe10c('0x14b')](db[_0xe10c('0x54')],{});db[_0xe10c('0xce')][_0xe10c('0x14b')](db['SmsMessage'],{});db['SmsQueueReport'][_0xe10c('0x14b')](db['User'],{});db[_0xe10c('0xce')]['belongsTo'](db['SmsQueue'],{});db[_0xe10c('0xd3')]['hasMany'](db['JscriptySessionReport'],{'foreignKey':_0xe10c('0x1d5')});db[_0xe10c('0xd3')][_0xe10c('0x111')](db['JscriptyQuestionReport'],{'foreignKey':_0xe10c('0x1d5')});db['JscriptyProject'][_0xe10c('0x111')](db['JscriptyAnswerReport'],{'foreignKey':'ProjectId'});db[_0xe10c('0xd8')][_0xe10c('0x11e')](db[_0xe10c('0x13')],{'as':_0xe10c('0x172'),'through':_0xe10c('0x13e')});db[_0xe10c('0xdd')]['belongsToMany'](db[_0xe10c('0x13')],{'as':_0xe10c('0x153'),'through':_0xe10c('0x1d6')});db['Team'][_0xe10c('0x11e')](db[_0xe10c('0x126')],{'through':_0xe10c('0x105'),'as':_0xe10c('0x127')});db[_0xe10c('0xdd')]['belongsToMany'](db[_0xe10c('0x3c')],{'through':_0xe10c('0x1d7'),'as':_0xe10c('0x129')});db[_0xe10c('0xdd')]['belongsToMany'](db[_0xe10c('0x12a')],{'through':_0xe10c('0x191'),'as':_0xe10c('0x12b')});db[_0xe10c('0xdd')][_0xe10c('0x11e')](db[_0xe10c('0x4e')],{'through':'team_has_fax_queues','as':_0xe10c('0x12c')});db[_0xe10c('0xdd')][_0xe10c('0x11e')](db[_0xe10c('0x56')],{'through':_0xe10c('0x1d8'),'as':_0xe10c('0x1d9')});db['Team'][_0xe10c('0x11e')](db['OpenchannelQueue'],{'through':_0xe10c('0x189'),'as':_0xe10c('0x12d')});db['Team'][_0xe10c('0x11e')](db[_0xe10c('0x101')],{'through':_0xe10c('0x1da'),'as':_0xe10c('0x12e')});db['Team'][_0xe10c('0x11e')](db['VoicePrefix'],{'through':_0xe10c('0x107'),'as':_0xe10c('0x128')});db[_0xe10c('0xe0')][_0xe10c('0x111')](db[_0xe10c('0x146')],{'as':_0xe10c('0x147'),'foreignKey':_0xe10c('0x1db')});db['Campaign'][_0xe10c('0x111')](db[_0xe10c('0x114')],{'as':_0xe10c('0x115'),'foreignKey':_0xe10c('0x1db')});db[_0xe10c('0xe0')]['hasMany'](db[_0xe10c('0x73')],{'as':_0xe10c('0x148'),'foreignKey':_0xe10c('0x1db')});db['Campaign']['hasMany'](db['CmHopperBlack'],{'as':'HopperBlacks','foreignKey':_0xe10c('0x1db')});db[_0xe10c('0xe0')]['belongsTo'](db[_0xe10c('0x27')],{'as':_0xe10c('0x27'),'foreignKey':_0xe10c('0x14c')});db['Campaign'][_0xe10c('0x14b')](db[_0xe10c('0x27')],{'as':_0xe10c('0x14d'),'foreignKey':_0xe10c('0x14e')});db[_0xe10c('0xe0')][_0xe10c('0x14b')](db['Interval'],{'as':_0xe10c('0x80'),'foreignKey':'IntervalId'});db['Campaign'][_0xe10c('0x14b')](db[_0xe10c('0xd8')],{'as':_0xe10c('0xd8'),'foreignKey':_0xe10c('0x1dc')});db[_0xe10c('0xe0')][_0xe10c('0x11e')](db[_0xe10c('0xef')],{'as':_0xe10c('0x151'),'through':'campaigns_has_cm_lists'});db['Campaign']['belongsToMany'](db[_0xe10c('0xef')],{'as':_0xe10c('0x154'),'through':_0xe10c('0x1dd')});db['Attachment'][_0xe10c('0x14b')](db[_0xe10c('0x67')],{'as':_0xe10c('0x67'),'foreignKey':_0xe10c('0x176')});db[_0xe10c('0x1de')][_0xe10c('0x14b')](db[_0xe10c('0x164')],{});db['MailTransferReport'][_0xe10c('0x14b')](db['MailInteraction'],{});db['MailTransferReport']['belongsTo'](db[_0xe10c('0x3b')],{'foreignKey':_0xe10c('0x1df'),'as':'FromAccount'});db[_0xe10c('0x1de')][_0xe10c('0x14b')](db['User'],{'foreignKey':_0xe10c('0x1e0'),'as':_0xe10c('0x1e1')});db[_0xe10c('0x1de')]['belongsTo'](db[_0xe10c('0x13')],{'foreignKey':'ToUserId','as':'ToAgent'});db[_0xe10c('0x1de')]['belongsTo'](db[_0xe10c('0x3c')],{'foreignKey':_0xe10c('0x1e2'),'as':_0xe10c('0x1e3')});db['MailTransferReport'][_0xe10c('0x14b')](db['MailAccount'],{'foreignKey':_0xe10c('0x1e4'),'as':'ToAccount'});db[_0xe10c('0xe8')][_0xe10c('0x14b')](db[_0xe10c('0x66')],{});db[_0xe10c('0xe8')][_0xe10c('0x14b')](db[_0xe10c('0x65')],{});db[_0xe10c('0xe8')][_0xe10c('0x14b')](db[_0xe10c('0x60')],{'foreignKey':_0xe10c('0x1e5'),'as':'FromAccount'});db[_0xe10c('0xe8')][_0xe10c('0x14b')](db['User'],{'foreignKey':'FromUserId','as':_0xe10c('0x1e1')});db[_0xe10c('0xe8')][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'foreignKey':_0xe10c('0x1e6'),'as':_0xe10c('0x1e7')});db['ChatTransferReport'][_0xe10c('0x14b')](db['ChatQueue'],{'foreignKey':_0xe10c('0x1e8'),'as':'ToQueue'});db[_0xe10c('0xe8')]['belongsTo'](db[_0xe10c('0x60')],{'foreignKey':_0xe10c('0x1e9'),'as':_0xe10c('0x1ea')});db[_0xe10c('0xea')][_0xe10c('0x14b')](db[_0xe10c('0x4c')],{});db['FaxTransferReport'][_0xe10c('0x14b')](db[_0xe10c('0x4a')],{});db[_0xe10c('0xea')][_0xe10c('0x14b')](db[_0xe10c('0x132')],{'foreignKey':_0xe10c('0x1eb'),'as':_0xe10c('0x1ec')});db[_0xe10c('0xea')][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'foreignKey':_0xe10c('0x1e0'),'as':_0xe10c('0x1e1')});db[_0xe10c('0xea')][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'foreignKey':'ToUserId','as':_0xe10c('0x1e7')});db[_0xe10c('0xea')]['belongsTo'](db[_0xe10c('0x4e')],{'foreignKey':_0xe10c('0x1ed'),'as':_0xe10c('0x1e3')});db[_0xe10c('0xea')][_0xe10c('0x14b')](db[_0xe10c('0x132')],{'foreignKey':_0xe10c('0x1ee'),'as':_0xe10c('0x1ea')});db[_0xe10c('0xeb')][_0xe10c('0x14b')](db[_0xe10c('0x5d')],{});db[_0xe10c('0xeb')][_0xe10c('0x14b')](db['OpenchannelInteraction'],{});db['OpenchannelTransferReport'][_0xe10c('0x14b')](db[_0xe10c('0x58')],{'foreignKey':'FromOpenchannelAccountId','as':_0xe10c('0x1ec')});db['OpenchannelTransferReport'][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'foreignKey':_0xe10c('0x1e0'),'as':_0xe10c('0x1e1')});db[_0xe10c('0xeb')]['belongsTo'](db[_0xe10c('0x13')],{'foreignKey':_0xe10c('0x1e6'),'as':'ToAgent'});db[_0xe10c('0xeb')][_0xe10c('0x14b')](db[_0xe10c('0x5f')],{'foreignKey':_0xe10c('0x1ef'),'as':'ToQueue'});db[_0xe10c('0xeb')][_0xe10c('0x14b')](db[_0xe10c('0x58')],{'foreignKey':_0xe10c('0x1f0'),'as':_0xe10c('0x1ea')});db['SmsTransferReport'][_0xe10c('0x14b')](db[_0xe10c('0x55')],{});db[_0xe10c('0xed')][_0xe10c('0x14b')](db[_0xe10c('0x54')],{});db[_0xe10c('0xed')][_0xe10c('0x14b')](db[_0xe10c('0x51')],{'foreignKey':_0xe10c('0x1f1'),'as':'FromAccount'});db[_0xe10c('0xed')][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'foreignKey':_0xe10c('0x1e0'),'as':_0xe10c('0x1e1')});db[_0xe10c('0xed')][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'foreignKey':_0xe10c('0x1e6'),'as':_0xe10c('0x1e7')});db['SmsTransferReport'][_0xe10c('0x14b')](db[_0xe10c('0x56')],{'foreignKey':_0xe10c('0x1f2'),'as':_0xe10c('0x1e3')});db[_0xe10c('0xed')][_0xe10c('0x14b')](db[_0xe10c('0x51')],{'foreignKey':_0xe10c('0x1f3'),'as':_0xe10c('0x1ea')});db[_0xe10c('0xef')][_0xe10c('0x111')](db[_0xe10c('0x7d')],{'as':_0xe10c('0x162'),'foreignKey':_0xe10c('0x168'),'onDelete':_0xe10c('0x10e')});db[_0xe10c('0xef')]['hasMany'](db[_0xe10c('0x77')],{'as':_0xe10c('0x1f4'),'foreignKey':'ListId'});db[_0xe10c('0xef')]['hasMany'](db[_0xe10c('0x6f')],{'as':_0xe10c('0x192'),'onDelete':'cascade','foreignKey':_0xe10c('0x168')});db['CmList']['hasMany'](db[_0xe10c('0x114')],{'as':_0xe10c('0x115'),'foreignKey':_0xe10c('0x168')});db[_0xe10c('0xef')][_0xe10c('0x111')](db[_0xe10c('0x73')],{'as':_0xe10c('0x116'),'foreignKey':_0xe10c('0x168')});db['CmList']['hasMany'](db[_0xe10c('0x75')],{'as':_0xe10c('0x75'),'foreignKey':_0xe10c('0x168')});db[_0xe10c('0xef')]['belongsToMany'](db[_0xe10c('0x126')],{'as':_0xe10c('0x1f5'),'through':_0xe10c('0x152')});db[_0xe10c('0xef')][_0xe10c('0x11e')](db[_0xe10c('0x13')],{'as':_0xe10c('0x153'),'through':_0xe10c('0x11f')});db[_0xe10c('0xf0')]['hasMany'](db[_0xe10c('0x18')],{'as':_0xe10c('0x113'),'onDelete':_0xe10c('0x10e')});db[_0xe10c('0xf0')][_0xe10c('0x11e')](db[_0xe10c('0x13')],{'as':'Agents','through':'UserVoicePrefix'});db[_0xe10c('0xf0')][_0xe10c('0x11e')](db[_0xe10c('0xdd')],{'through':_0xe10c('0x107'),'as':'Teams'});db[_0xe10c('0xf2')][_0xe10c('0x111')](db[_0xe10c('0x13')],{'as':_0xe10c('0x172'),'foreignKey':_0xe10c('0x1f6')});db['UserProfile']['hasMany'](db[_0xe10c('0xf4')],{'as':_0xe10c('0x1f7'),'foreignKey':'userProfileId','onDelete':_0xe10c('0x10e')});db[_0xe10c('0xf4')][_0xe10c('0x111')](db[_0xe10c('0xf6')],{'as':'Resources','foreignKey':_0xe10c('0x1f8'),'onDelete':_0xe10c('0x10e')});db[_0xe10c('0x13a')][_0xe10c('0x111')](db[_0xe10c('0x7d')],{'as':_0xe10c('0x162'),'foreignKey':_0xe10c('0x1f9'),'onDelete':_0xe10c('0x10e')});db[_0xe10c('0x13a')]['hasMany'](db[_0xe10c('0x7b')],{'as':_0xe10c('0x163'),'foreignKey':_0xe10c('0x1f9')});db[_0xe10c('0x13a')][_0xe10c('0x111')](db[_0xe10c('0x1fa')],{'as':_0xe10c('0x157'),'foreignKey':_0xe10c('0x1f9')});db[_0xe10c('0x13a')][_0xe10c('0x111')](db[_0xe10c('0xfc')],{'as':_0xe10c('0x165')});db['WhatsappAccount']['hasMany'](db[_0xe10c('0xfa')],{'as':_0xe10c('0x141')});db[_0xe10c('0x13a')][_0xe10c('0x14b')](db['CmList'],{'as':_0xe10c('0x167'),'foreignKey':_0xe10c('0x168')});db['WhatsappAccount'][_0xe10c('0x14b')](db[_0xe10c('0x82')],{'as':'mandatoryDispositionPause','foreignKey':'mandatoryDispositionPauseId'});db['WhatsappAccount'][_0xe10c('0x11e')](db[_0xe10c('0x13')],{'as':_0xe10c('0x153'),'through':_0xe10c('0x13c')});db[_0xe10c('0xfa')][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'onDelete':_0xe10c('0x15f')});db[_0xe10c('0xfa')][_0xe10c('0x14b')](db[_0xe10c('0x101')],{'onDelete':_0xe10c('0x15f')});db[_0xe10c('0xfa')][_0xe10c('0x14b')](db['WhatsappAccount'],{'onDelete':_0xe10c('0x15f')});db[_0xe10c('0xfa')][_0xe10c('0x14b')](db[_0xe10c('0x80')],{'onDelete':_0xe10c('0x15f'),'foreignKey':'IntervalId'});db[_0xe10c('0xfa')][_0xe10c('0x14b')](db[_0xe10c('0x16f')],{'onDelete':'restrict','foreignKey':'TagId'});db[_0xe10c('0xfc')][_0xe10c('0x111')](db[_0xe10c('0x1fa')],{'as':_0xe10c('0x157'),'onDelete':_0xe10c('0x10e'),'foreignKey':'WhatsappInteractionId'});db[_0xe10c('0xfc')][_0xe10c('0x14b')](db[_0xe10c('0x13a')],{'as':'Account','foreignKey':'WhatsappAccountId'});db[_0xe10c('0xfc')][_0xe10c('0x14b')](db[_0xe10c('0x6f')],{'as':_0xe10c('0x15c'),'foreignKey':_0xe10c('0x16d')});db[_0xe10c('0xfc')]['belongsTo'](db[_0xe10c('0x13')],{'as':'Owner','foreignKey':_0xe10c('0x10f')});db[_0xe10c('0xfc')][_0xe10c('0x11e')](db['Tag'],{'through':_0xe10c('0x1ac'),'as':_0xe10c('0x170')});db[_0xe10c('0xfc')][_0xe10c('0x11e')](db[_0xe10c('0x16f')],{'through':_0xe10c('0x1ac'),'as':_0xe10c('0x171')});db['WhatsappInteraction']['belongsToMany'](db['User'],{'as':'Users','through':'user_has_whatsapp_interactions','foreignKey':'WhatsappInteractionId'});db[_0xe10c('0x1fa')]['belongsTo'](db[_0xe10c('0x13')],{'as':_0xe10c('0x13')});db[_0xe10c('0x1fa')][_0xe10c('0x14b')](db[_0xe10c('0x6f')],{'onDelete':_0xe10c('0x10e'),'as':_0xe10c('0x15c')});db[_0xe10c('0x1fa')][_0xe10c('0x14b')](db[_0xe10c('0xfc')],{'onDelete':_0xe10c('0x10e'),'as':_0xe10c('0x174'),'foreignKey':_0xe10c('0x1fb')});db['WhatsappMessage'][_0xe10c('0x14b')](db[_0xe10c('0x13a')],{'as':_0xe10c('0x16c'),'foreignKey':_0xe10c('0x1f9')});db['WhatsappQueueReport'][_0xe10c('0x14b')](db[_0xe10c('0x13a')],{});db['WhatsappQueueReport'][_0xe10c('0x14b')](db[_0xe10c('0xef')],{'as':_0xe10c('0x167'),'foreignKey':_0xe10c('0x168')});db[_0xe10c('0x1fc')][_0xe10c('0x14b')](db[_0xe10c('0x6f')],{'as':_0xe10c('0x15c'),'foreignKey':'ContactId'});db[_0xe10c('0x1fc')]['belongsTo'](db[_0xe10c('0xfc')],{});db[_0xe10c('0x1fc')][_0xe10c('0x14b')](db[_0xe10c('0x101')],{});db['WhatsappQueueReport'][_0xe10c('0x14b')](db[_0xe10c('0x1fa')],{});db[_0xe10c('0x1fc')]['belongsTo'](db[_0xe10c('0x13')],{});db[_0xe10c('0x1fd')][_0xe10c('0x14b')](db[_0xe10c('0x1fa')],{});db[_0xe10c('0x1fd')]['belongsTo'](db[_0xe10c('0xfc')],{});db[_0xe10c('0x1fd')][_0xe10c('0x14b')](db['WhatsappAccount'],{'foreignKey':_0xe10c('0x1fe'),'as':_0xe10c('0x1ec')});db[_0xe10c('0x1fd')]['belongsTo'](db[_0xe10c('0x13a')],{'foreignKey':_0xe10c('0x1ff'),'as':'ToAccount'});db[_0xe10c('0x1fd')][_0xe10c('0x14b')](db[_0xe10c('0x101')],{'foreignKey':_0xe10c('0x200'),'as':_0xe10c('0x1e3')});db[_0xe10c('0x1fd')][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'foreignKey':_0xe10c('0x1e0'),'as':_0xe10c('0x1e1')});db[_0xe10c('0x1fd')][_0xe10c('0x14b')](db[_0xe10c('0x13')],{'foreignKey':_0xe10c('0x1e6'),'as':_0xe10c('0x1e7')});db['WhatsappQueue'][_0xe10c('0x11e')](db[_0xe10c('0x13')],{'as':'Agents','through':_0xe10c('0x12f'),'foreignKey':'WhatsappQueueId'});db[_0xe10c('0x101')]['belongsToMany'](db['Team'],{'through':_0xe10c('0x1da'),'as':'Teams'});db[_0xe10c('0x10a')]['belongsTo'](db[_0xe10c('0x13')],{'as':'user','foreignKey':'UserId','onDelete':_0xe10c('0x10e'),'hooks':!![]});db[_0xe10c('0x103')][_0xe10c('0x10c')](db[_0xe10c('0xbc')],{'as':'Dynamics365Account','onDelete':_0xe10c('0x15f')});db[_0xe10c('0x103')][_0xe10c('0x10c')](db[_0xe10c('0x15d')],{'as':_0xe10c('0x160'),'onDelete':_0xe10c('0x15f')});db[_0xe10c('0x103')][_0xe10c('0x10c')](db['MailServerOut'],{'as':_0xe10c('0x161'),'onDelete':_0xe10c('0x15f')});module[_0xe10c('0x201')]={'db':db,'dbH':dbH};
\ No newline at end of file
index ca57946..8189d5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3db5=['/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','./api/chatMessage','/api/chat/offline_messages','./api/chatOfflineMessage','/api/chat/queues','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','./api/chatProactiveAction','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopper','./api/cmHopperBlack','/api/cm/hopper_final','./api/cmHopperFinal','./api/cmHopperHistory','./api/cmCustomField','/api/actions','/api/automations','./api/automation','/api/canned_answers','./api/cannedAnswer','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/interval','/api/pauses','./api/pause','/api/cdr','./api/cdr','/api/voiceQueuesLog','./api/voiceQueuesLog','/api/schedules','./api/schedule','/api/sounds','/api/contact_item_types','./api/contactItemType','/api/cm_contact_has_items','./api/cmContactHasItem','/api/cm_hopper_additional_phones','./api/cmHopperAdditionalPhone','/api/templates','./api/template','/api/variables','./api/variable','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','/api/analytics/default_reports','/api/analytics/extracted_reports','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','/api/integrations/salesforce/fields','./api/intSalesforceField','/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/intDeskField','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoConfiguration','/api/integrations/zoho/fields','./api/intZohoField','/api/integrations/zendesk/accounts','/api/integrations/zendesk/configurations','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','/api/integrations/freshdesk/fields','/api/integrations/vtiger/configurations','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','/api/integrations/servicenow/fields','./api/intServicenowField','./api/intDynamics365Account','/api/integrations/dynamics365/configurations','/api/integrations/dynamics365/fields','./api/intDynamics365Field','./api/intFreshsalesAccount','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','./api/intFreshsalesField','/api/networks','/api/chat/reports/queue','./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/square/details/reports','./api/squareReportDetail','./api/jscriptyProject','./api/setting','/api/square/odbc','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','/api/teams','./api/team','/api/license','./api/license','/api/migrations','./api/migration','/api/attachments','/api/plugins','./api/plugin','/api/mail/reports/transfer','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/cm/lists','/api/voice/prefixes','./api/voicePrefix','/api/userProfiles','./api/userProfile','/api/userProfile/sections','./api/userProfileSection','/api/userProfile/resources','./api/userNotification','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','/api/whatsapp/interactions','./api/whatsappInteraction','/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/realtime','./api/realtime','/api/user-settings','./api/user-setting','/api/auth/local','./api/authLocal','/api/auth/google','./api/authGoogle','/api/auth/activedirectory','./api/authActiveDirectory','/api/jira','./api/jira','/api/rpc','/api/version','./api/version','/api/system','./api/system','./api/webbar','/api/logs','/apidoc','static','join','root','/www','/demo','3.0.0','/plugins','route','/:url(api|auth|components|app|bower_components|assets)/*','get','resolve','/index.html','./errors','./utils/client-side-logger','setupLoggers','./api/client-side-logs','default','use','/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/voiceRecording','./api/screenRecording','/api/voice/mails','/api/voice/mails/messages','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceDialReport','/api/voice/agents/reports','./api/voiceAgentReport','/api/voice/queues/reports','./api/voiceQueueReport','/api/members/reports','/api/trunks','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/out_servers','./api/mailServerOut','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','/api/dashboards','/api/dashboards/items','./api/dashboardItem','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/queues','./api/faxQueue','./api/smsAccount','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','/api/sms/messages','./api/smsMessage','/api/sms/queues','./api/smsQueue','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelApplication','./api/openchannelInteraction','/api/openchannel/messages','/api/openchannel/queues','./api/openchannelQueue','./api/chatWebsite'];(function(_0x315c01,_0x4316e2){var _0x3891ce=function(_0x43b558){while(--_0x43b558){_0x315c01['push'](_0x315c01['shift']());}};_0x3891ce(++_0x4316e2);}(_0x3db5,0x1cf));var _0x53db=function(_0x4b2436,_0x452299){_0x4b2436=_0x4b2436-0x0;var _0x4f5ab2=_0x3db5[_0x4b2436];return _0x4f5ab2;};'use strict';var path=require('path');var express=require('express');var errors=require(_0x53db('0x0'));var config=require('./config/environment');var setupLoggers=require(_0x53db('0x1'))[_0x53db('0x2')];var clientSideLogs=require(_0x53db('0x3'));exports[_0x53db('0x4')]=function(_0x577140){return setupLoggers(_0x577140)['then'](function(){_0x577140[_0x53db('0x5')](_0x53db('0x6'),require('./api/user'));_0x577140[_0x53db('0x5')](_0x53db('0x7'),require(_0x53db('0x8')));_0x577140['use'](_0x53db('0x9'),require('./api/voiceContext'));_0x577140[_0x53db('0x5')](_0x53db('0xa'),require(_0x53db('0xb')));_0x577140[_0x53db('0x5')](_0x53db('0xc'),require(_0x53db('0xd')));_0x577140[_0x53db('0x5')](_0x53db('0xe'),require(_0x53db('0xf')));_0x577140[_0x53db('0x5')]('/api/voice/recordings',require(_0x53db('0x10')));_0x577140[_0x53db('0x5')]('/api/screen/recordings',require(_0x53db('0x11')));_0x577140[_0x53db('0x5')](_0x53db('0x12'),require('./api/voiceMail'));_0x577140[_0x53db('0x5')](_0x53db('0x13'),require('./api/voiceMailMessage'));_0x577140[_0x53db('0x5')](_0x53db('0x14'),require(_0x53db('0x15')));_0x577140[_0x53db('0x5')](_0x53db('0x16'),require(_0x53db('0x17')));_0x577140['use'](_0x53db('0x18'),require(_0x53db('0x19')));_0x577140['use'](_0x53db('0x1a'),require(_0x53db('0x1b')));_0x577140[_0x53db('0x5')](_0x53db('0x1c'),require('./api/memberReport'));_0x577140[_0x53db('0x5')](_0x53db('0x1d'),require(_0x53db('0x1e')));_0x577140['use'](_0x53db('0x1f'),require(_0x53db('0x20')));_0x577140[_0x53db('0x5')](_0x53db('0x21'),require(_0x53db('0x22')));_0x577140[_0x53db('0x5')]('/api/mail/accounts',require('./api/mailAccount'));_0x577140['use'](_0x53db('0x23'),require(_0x53db('0x24')));_0x577140[_0x53db('0x5')](_0x53db('0x25'),require('./api/mailSubstatus'));_0x577140[_0x53db('0x5')]('/api/mail/interactions',require(_0x53db('0x26')));_0x577140['use'](_0x53db('0x27'),require(_0x53db('0x28')));_0x577140[_0x53db('0x5')](_0x53db('0x29'),require('./api/mailApplication'));_0x577140[_0x53db('0x5')]('/api/mail/reports/queue',require('./api/mailQueueReport'));_0x577140['use'](_0x53db('0x2a'),require('./api/dashboard'));_0x577140[_0x53db('0x5')](_0x53db('0x2b'),require(_0x53db('0x2c')));_0x577140['use']('/api/fax/accounts',require(_0x53db('0x2d')));_0x577140[_0x53db('0x5')](_0x53db('0x2e'),require(_0x53db('0x2f')));_0x577140[_0x53db('0x5')](_0x53db('0x30'),require(_0x53db('0x31')));_0x577140['use']('/api/fax/messages',require('./api/faxMessage'));_0x577140[_0x53db('0x5')](_0x53db('0x32'),require(_0x53db('0x33')));_0x577140[_0x53db('0x5')]('/api/fax/reports/queue',require('./api/faxQueueReport'));_0x577140[_0x53db('0x5')]('/api/sms/accounts',require(_0x53db('0x34')));_0x577140[_0x53db('0x5')](_0x53db('0x35'),require(_0x53db('0x36')));_0x577140['use'](_0x53db('0x37'),require(_0x53db('0x38')));_0x577140[_0x53db('0x5')](_0x53db('0x39'),require(_0x53db('0x3a')));_0x577140[_0x53db('0x5')](_0x53db('0x3b'),require(_0x53db('0x3c')));_0x577140[_0x53db('0x5')]('/api/openchannel/accounts',require(_0x53db('0x3d')));_0x577140[_0x53db('0x5')](_0x53db('0x3e'),require(_0x53db('0x3f')));_0x577140['use']('/api/openchannel/interactions',require(_0x53db('0x40')));_0x577140[_0x53db('0x5')](_0x53db('0x41'),require('./api/openchannelMessage'));_0x577140[_0x53db('0x5')](_0x53db('0x42'),require(_0x53db('0x43')));_0x577140[_0x53db('0x5')]('/api/chat/websites',require(_0x53db('0x44')));_0x577140[_0x53db('0x5')](_0x53db('0x45'),require(_0x53db('0x46')));_0x577140[_0x53db('0x5')](_0x53db('0x47'),require(_0x53db('0x48')));_0x577140[_0x53db('0x5')]('/api/chat/interactions',require('./api/chatInteraction'));_0x577140[_0x53db('0x5')]('/api/chat/messages',require(_0x53db('0x49')));_0x577140['use'](_0x53db('0x4a'),require(_0x53db('0x4b')));_0x577140[_0x53db('0x5')](_0x53db('0x4c'),require('./api/chatQueue'));_0x577140['use'](_0x53db('0x4d'),require(_0x53db('0x4e')));_0x577140[_0x53db('0x5')](_0x53db('0x4f'),require(_0x53db('0x50')));_0x577140['use']('/api/cm/companies',require(_0x53db('0x51')));_0x577140['use'](_0x53db('0x52'),require(_0x53db('0x53')));_0x577140['use'](_0x53db('0x54'),require(_0x53db('0x55')));_0x577140[_0x53db('0x5')]('/api/cm/hopper_black',require(_0x53db('0x56')));_0x577140['use'](_0x53db('0x57'),require(_0x53db('0x58')));_0x577140[_0x53db('0x5')]('/api/cm/hopper_history',require(_0x53db('0x59')));_0x577140[_0x53db('0x5')]('/api/cm/custom_fields',require(_0x53db('0x5a')));_0x577140[_0x53db('0x5')](_0x53db('0x5b'),require('./api/action'));_0x577140['use'](_0x53db('0x5c'),require(_0x53db('0x5d')));_0x577140[_0x53db('0x5')](_0x53db('0x5e'),require(_0x53db('0x5f')));_0x577140[_0x53db('0x5')]('/api/dispositions',require(_0x53db('0x60')));_0x577140[_0x53db('0x5')](_0x53db('0x61'),require(_0x53db('0x62')));_0x577140[_0x53db('0x5')](_0x53db('0x63'),require(_0x53db('0x64')));_0x577140['use'](_0x53db('0x65'),require(_0x53db('0x66')));_0x577140[_0x53db('0x5')](_0x53db('0x67'),require(_0x53db('0x68')));_0x577140[_0x53db('0x5')](_0x53db('0x69'),require(_0x53db('0x6a')));_0x577140['use'](_0x53db('0x6b'),require(_0x53db('0x6c')));_0x577140[_0x53db('0x5')](_0x53db('0x6d'),require('./api/sound'));_0x577140[_0x53db('0x5')]('/api/tags',require('./api/tag'));_0x577140['use'](_0x53db('0x6e'),require(_0x53db('0x6f')));_0x577140[_0x53db('0x5')](_0x53db('0x70'),require(_0x53db('0x71')));_0x577140['use'](_0x53db('0x72'),require(_0x53db('0x73')));_0x577140[_0x53db('0x5')](_0x53db('0x74'),require(_0x53db('0x75')));_0x577140[_0x53db('0x5')]('/api/triggers',require('./api/trigger'));_0x577140[_0x53db('0x5')](_0x53db('0x76'),require(_0x53db('0x77')));_0x577140[_0x53db('0x5')](_0x53db('0x78'),require(_0x53db('0x79')));_0x577140[_0x53db('0x5')](_0x53db('0x7a'),require(_0x53db('0x7b')));_0x577140[_0x53db('0x5')](_0x53db('0x7c'),require('./api/analyticCustomReport'));_0x577140[_0x53db('0x5')](_0x53db('0x7d'),require('./api/analyticDefaultReport'));_0x577140[_0x53db('0x5')](_0x53db('0x7e'),require('./api/analyticExtractedReport'));_0x577140[_0x53db('0x5')]('/api/analytics/metrics',require(_0x53db('0x7f')));_0x577140['use'](_0x53db('0x80'),require(_0x53db('0x81')));_0x577140[_0x53db('0x5')]('/api/analytics/tree_reports',require(_0x53db('0x82')));_0x577140[_0x53db('0x5')](_0x53db('0x83'),require(_0x53db('0x84')));_0x577140[_0x53db('0x5')]('/api/integrations/salesforce/configurations',require('./api/intSalesforceConfiguration'));_0x577140[_0x53db('0x5')](_0x53db('0x85'),require(_0x53db('0x86')));_0x577140[_0x53db('0x5')](_0x53db('0x87'),require(_0x53db('0x88')));_0x577140[_0x53db('0x5')](_0x53db('0x89'),require(_0x53db('0x8a')));_0x577140[_0x53db('0x5')](_0x53db('0x8b'),require(_0x53db('0x8c')));_0x577140['use'](_0x53db('0x8d'),require(_0x53db('0x8e')));_0x577140[_0x53db('0x5')](_0x53db('0x8f'),require(_0x53db('0x90')));_0x577140[_0x53db('0x5')]('/api/integrations/desk/fields',require(_0x53db('0x91')));_0x577140[_0x53db('0x5')]('/api/integrations/zoho/accounts',require(_0x53db('0x92')));_0x577140['use'](_0x53db('0x93'),require(_0x53db('0x94')));_0x577140['use'](_0x53db('0x95'),require(_0x53db('0x96')));_0x577140['use'](_0x53db('0x97'),require('./api/intZendeskAccount'));_0x577140[_0x53db('0x5')](_0x53db('0x98'),require(_0x53db('0x99')));_0x577140[_0x53db('0x5')](_0x53db('0x9a'),require(_0x53db('0x9b')));_0x577140['use'](_0x53db('0x9c'),require(_0x53db('0x9d')));_0x577140[_0x53db('0x5')](_0x53db('0x9e'),require(_0x53db('0x9f')));_0x577140['use'](_0x53db('0xa0'),require('./api/intFreshdeskField'));_0x577140['use']('/api/integrations/vtiger/accounts',require('./api/intVtigerAccount'));_0x577140[_0x53db('0x5')](_0x53db('0xa1'),require(_0x53db('0xa2')));_0x577140[_0x53db('0x5')](_0x53db('0xa3'),require(_0x53db('0xa4')));_0x577140[_0x53db('0x5')](_0x53db('0xa5'),require('./api/intServicenowAccount'));_0x577140[_0x53db('0x5')](_0x53db('0xa6'),require(_0x53db('0xa7')));_0x577140[_0x53db('0x5')](_0x53db('0xa8'),require(_0x53db('0xa9')));_0x577140[_0x53db('0x5')]('/api/integrations/dynamics365/accounts',require(_0x53db('0xaa')));_0x577140[_0x53db('0x5')](_0x53db('0xab'),require('./api/intDynamics365Configuration'));_0x577140[_0x53db('0x5')](_0x53db('0xac'),require(_0x53db('0xad')));_0x577140[_0x53db('0x5')]('/api/integrations/freshsales/accounts',require(_0x53db('0xae')));_0x577140[_0x53db('0x5')]('/api/integrations/freshsales/configurations',require(_0x53db('0xaf')));_0x577140['use'](_0x53db('0xb0'),require(_0x53db('0xb1')));_0x577140[_0x53db('0x5')](_0x53db('0xb2'),require('./api/network'));_0x577140[_0x53db('0x5')](_0x53db('0xb3'),require(_0x53db('0xb4')));_0x577140[_0x53db('0x5')](_0x53db('0xb5'),require(_0x53db('0xb6')));_0x577140[_0x53db('0x5')](_0x53db('0xb7'),require('./api/jscriptyAnswerReport'));_0x577140['use'](_0x53db('0xb8'),require('./api/jscriptyQuestionReport'));_0x577140[_0x53db('0x5')](_0x53db('0xb9'),require('./api/jscriptySessionReport'));_0x577140[_0x53db('0x5')](_0x53db('0xba'),require('./api/smsQueueReport'));_0x577140[_0x53db('0x5')](_0x53db('0xbb'),require('./api/squareReport'));_0x577140[_0x53db('0x5')](_0x53db('0xbc'),require(_0x53db('0xbd')));_0x577140[_0x53db('0x5')]('/api/jscripty/projects',require(_0x53db('0xbe')));_0x577140[_0x53db('0x5')]('/api/settings',require(_0x53db('0xbf')));_0x577140[_0x53db('0x5')](_0x53db('0xc0'),require(_0x53db('0xc1')));_0x577140[_0x53db('0x5')](_0x53db('0xc2'),require(_0x53db('0xc3')));_0x577140[_0x53db('0x5')](_0x53db('0xc4'),require('./api/squareRecording'));_0x577140[_0x53db('0x5')]('/api/square/messages',require('./api/squareMessage'));_0x577140[_0x53db('0x5')](_0x53db('0xc5'),require(_0x53db('0xc6')));_0x577140[_0x53db('0x5')](_0x53db('0xc7'),require(_0x53db('0xc8')));_0x577140[_0x53db('0x5')]('/api/campaigns',require('./api/campaign'));_0x577140[_0x53db('0x5')](_0x53db('0xc9'),require(_0x53db('0xca')));_0x577140[_0x53db('0x5')](_0x53db('0xcb'),require('./api/attachment'));_0x577140[_0x53db('0x5')](_0x53db('0xcc'),require(_0x53db('0xcd')));_0x577140[_0x53db('0x5')](_0x53db('0xce'),require('./api/mailTransferReport'));_0x577140[_0x53db('0x5')](_0x53db('0xcf'),require(_0x53db('0xd0')));_0x577140[_0x53db('0x5')](_0x53db('0xd1'),require(_0x53db('0xd2')));_0x577140[_0x53db('0x5')]('/api/openchannel/reports/transfer',require('./api/openchannelTransferReport'));_0x577140['use']('/api/sms/reports/transfer',require('./api/smsTransferReport'));_0x577140[_0x53db('0x5')](_0x53db('0xd3'),require('./api/cmList'));_0x577140['use'](_0x53db('0xd4'),require(_0x53db('0xd5')));_0x577140[_0x53db('0x5')](_0x53db('0xd6'),require(_0x53db('0xd7')));_0x577140[_0x53db('0x5')](_0x53db('0xd8'),require(_0x53db('0xd9')));_0x577140['use'](_0x53db('0xda'),require('./api/userProfileResource'));_0x577140[_0x53db('0x5')]('/api/userNotifications',require(_0x53db('0xdb')));_0x577140[_0x53db('0x5')](_0x53db('0xdc'),require(_0x53db('0xdd')));_0x577140[_0x53db('0x5')](_0x53db('0xde'),require('./api/whatsappApplication'));_0x577140[_0x53db('0x5')](_0x53db('0xdf'),require(_0x53db('0xe0')));_0x577140[_0x53db('0x5')](_0x53db('0xe1'),require(_0x53db('0xe2')));_0x577140['use'](_0x53db('0xe3'),require(_0x53db('0xe4')));_0x577140['use'](_0x53db('0xe5'),require(_0x53db('0xe6')));_0x577140['use'](_0x53db('0xe7'),require(_0x53db('0xe8')));_0x577140['use'](_0x53db('0xe9'),require('./api/cloudProvider'));_0x577140[_0x53db('0x5')](_0x53db('0xea'),require(_0x53db('0xeb')));_0x577140['use'](_0x53db('0xec'),require(_0x53db('0xed')));_0x577140[_0x53db('0x5')](_0x53db('0xee'),require(_0x53db('0xef')));_0x577140['use'](_0x53db('0xf0'),require(_0x53db('0xf1')));_0x577140[_0x53db('0x5')](_0x53db('0xf2'),require(_0x53db('0xf3')));_0x577140[_0x53db('0x5')](_0x53db('0xf4'),require(_0x53db('0xf5')));_0x577140[_0x53db('0x5')](_0x53db('0xf6'),require('./api/rpc'));_0x577140[_0x53db('0x5')](_0x53db('0xf7'),require(_0x53db('0xf8')));_0x577140[_0x53db('0x5')](_0x53db('0xf9'),require(_0x53db('0xfa')));_0x577140['use']('/api/pm2',require('./api/pm2'));_0x577140[_0x53db('0x5')]('/api/webbar',require(_0x53db('0xfb')));_0x577140[_0x53db('0x5')](_0x53db('0xfc'),clientSideLogs);_0x577140['use'](_0x53db('0xfd'),express[_0x53db('0xfe')](path[_0x53db('0xff')](config[_0x53db('0x100')],_0x53db('0xfd'))));_0x577140['use'](_0x53db('0x101'),express[_0x53db('0xfe')](path[_0x53db('0xff')](config[_0x53db('0x100')],_0x53db('0x101'))));_0x577140['use'](_0x53db('0x102'),express[_0x53db('0xfe')](path[_0x53db('0xff')](config[_0x53db('0x100')],_0x53db('0x102'))));_0x577140[_0x53db('0x5')]('/snippet',express[_0x53db('0xfe')](path[_0x53db('0xff')](config['root'],'snippet',_0x53db('0x103'))));_0x577140[_0x53db('0x5')](_0x53db('0x104'),express['static'](path['join'](config['root'],'/server/files/plugins')));_0x577140[_0x53db('0x105')](_0x53db('0x106'))[_0x53db('0x107')](errors[0x194]);_0x577140[_0x53db('0x105')]('/*')[_0x53db('0x107')](function(_0xc46662,_0x390d7d){_0x390d7d['sendFile'](path[_0x53db('0x108')](_0x577140[_0x53db('0x107')]('appPath')+_0x53db('0x109')));});return _0x577140;});};
\ No newline at end of file
+var _0x7d68=['/api/pauses','/api/cdr','./api/cdr','/api/schedules','./api/schedule','/api/sounds','./api/sound','/api/tags','./api/tag','/api/contact_item_types','./api/contactItemType','./api/cmContactHasItem','/api/cm_hopper_additional_phones','./api/cmHopperAdditionalPhone','./api/template','/api/variables','/api/integrations','./api/integration','/api/integrations/reports','./api/integrationReport','/api/analytics/custom_reports','./api/analyticCustomReport','/api/analytics/default_reports','./api/analyticDefaultReport','/api/analytics/extracted_reports','./api/analyticExtractedReport','./api/analyticMetric','/api/analytics/field_reports','./api/analyticFieldReport','./api/analyticTreeReport','/api/integrations/salesforce/accounts','./api/intSalesforceAccount','./api/intSalesforceConfiguration','/api/integrations/salesforce/fields','./api/intSalesforceField','/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/desk/fields','./api/intDeskField','/api/integrations/zoho/accounts','./api/intZohoAccount','/api/integrations/zoho/configurations','./api/intZohoField','/api/integrations/zendesk/accounts','./api/intZendeskAccount','./api/intZendeskConfiguration','/api/integrations/zendesk/fields','./api/intZendeskField','/api/integrations/freshdesk/accounts','./api/intFreshdeskAccount','/api/integrations/freshdesk/configurations','./api/intFreshdeskConfiguration','./api/intFreshdeskField','/api/integrations/vtiger/accounts','./api/intVtigerAccount','./api/intVtigerConfiguration','/api/integrations/vtiger/fields','./api/intVtigerField','/api/integrations/servicenow/accounts','./api/intServicenowAccount','/api/integrations/servicenow/configurations','./api/intServicenowConfiguration','./api/intServicenowField','/api/integrations/dynamics365/configurations','/api/integrations/dynamics365/fields','./api/intDynamics365Field','/api/integrations/freshsales/accounts','./api/intFreshsalesAccount','/api/integrations/freshsales/configurations','./api/intFreshsalesConfiguration','/api/integrations/freshsales/fields','/api/chat/reports/queue','./api/chatQueueReport','/api/chat/internal/messages','./api/chatInternalMessage','/api/jscripty/answers/reports','./api/jscriptySessionReport','/api/sms/reports/queue','./api/smsQueueReport','/api/square/reports','./api/squareReport','/api/square/details/reports','./api/squareReportDetail','/api/jscripty/projects','./api/jscriptyProject','/api/settings','./api/squareOdbc','/api/square/projects','./api/squareProject','/api/square/recordings','./api/squareRecording','./api/squareMessage','./api/team','./api/license','./api/campaign','/api/migrations','./api/migration','/api/attachments','./api/attachment','/api/plugins','./api/plugin','/api/mail/reports/transfer','./api/mailTransferReport','/api/chat/reports/transfer','./api/chatTransferReport','/api/fax/reports/transfer','./api/faxTransferReport','/api/openchannel/reports/transfer','/api/sms/reports/transfer','./api/smsTransferReport','/api/cm/lists','./api/cmList','/api/voice/prefixes','/api/userProfiles','./api/userProfile','/api/userProfile/resources','/api/userNotifications','/api/whatsapp/accounts','./api/whatsappAccount','/api/whatsapp/applications','./api/whatsappApplication','/api/whatsapp/interactions','./api/whatsappInteraction','/api/whatsapp/messages','./api/whatsappMessage','/api/whatsapp/reports/transfer','./api/whatsappTransferReport','./api/whatsappQueue','/api/cloudProviders','./api/cloudProvider','./api/realtime','/api/user-settings','./api/user-setting','/api/auth/local','./api/authLocal','./api/authGoogle','/api/auth/activedirectory','./api/jira','/api/rpc','./api/rpc','/api/version','/api/pm2','./api/pm2','/api/webbar','./api/webbar','/api/logs','/apidoc','static','join','root','/demo','snippet','3.0.0','route','/:url(api|auth|components|app|bower_components|assets)/*','get','sendFile','resolve','appPath','/index.html','path','express','./errors','./config/environment','./utils/client-side-logger','setupLoggers','./api/client-side-logs','then','use','/api/users','./api/user','/api/voice/chanspy','./api/voiceChanSpy','/api/voice/contexts','./api/voiceContext','/api/voice/extensions','./api/voiceExtension','./api/voiceMusicOnHold','/api/voice/queues','/api/voice/recordings','./api/voiceRecording','/api/screen/recordings','/api/voice/mails','./api/voiceMail','./api/voiceMailMessage','/api/voice/calls/reports','./api/voiceCallReport','/api/voice/dials/reports','./api/voiceAgentReport','./api/memberReport','/api/trunks','./api/trunk','/api/voice/transfers/reports','./api/voiceTransferReport','/api/mail/accounts','./api/mailAccount','/api/mail/queues','./api/mailQueue','/api/mail/substatuses','./api/mailSubstatus','/api/mail/interactions','./api/mailInteraction','/api/mail/messages','./api/mailMessage','/api/mail/applications','./api/mailApplication','./api/mailQueueReport','/api/dashboards','./api/dashboard','/api/dashboards/items','./api/dashboardItem','./api/faxAccount','/api/fax/applications','./api/faxApplication','/api/fax/interactions','./api/faxInteraction','/api/fax/messages','./api/faxQueue','/api/fax/reports/queue','/api/sms/accounts','/api/sms/applications','./api/smsApplication','/api/sms/interactions','./api/smsInteraction','./api/smsMessage','/api/sms/queues','./api/smsQueue','./api/openchannelAccount','/api/openchannel/applications','./api/openchannelInteraction','/api/openchannel/messages','./api/openchannelQueue','/api/chat/websites','/api/openchannel/reports/queue','./api/openchannelQueueReport','/api/chat/applications','./api/chatApplication','/api/chat/interactions','./api/chatInteraction','/api/chat/messages','/api/chat/queues','/api/chat/groups','./api/chatGroup','/api/chat/proactive_actions','/api/cm/companies','./api/cmCompany','/api/cm/contacts','./api/cmContact','/api/cm/hopper','./api/cmHopper','/api/cm/hopper_final','./api/cmHopperFinal','/api/cm/hopper_history','/api/cm/custom_fields','/api/actions','/api/automations','/api/canned_answers','./api/cannedAnswer','./api/disposition','/api/conditions','./api/condition','/api/intervals','./api/interval'];(function(_0x2053ea,_0x1ab2d4){var _0x2232c4=function(_0x4230df){while(--_0x4230df){_0x2053ea['push'](_0x2053ea['shift']());}};_0x2232c4(++_0x1ab2d4);}(_0x7d68,0xa6));var _0x87d6=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x7d68[_0x3dd15e];return _0x231fd0;};'use strict';var path=require(_0x87d6('0x0'));var express=require(_0x87d6('0x1'));var errors=require(_0x87d6('0x2'));var config=require(_0x87d6('0x3'));var setupLoggers=require(_0x87d6('0x4'))[_0x87d6('0x5')];var clientSideLogs=require(_0x87d6('0x6'));exports['default']=function(_0x2d3a39){return setupLoggers(_0x2d3a39)[_0x87d6('0x7')](function(){_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x9'),require(_0x87d6('0xa')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xb'),require(_0x87d6('0xc')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xd'),require(_0x87d6('0xe')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xf'),require(_0x87d6('0x10')));_0x2d3a39['use']('/api/voice/mohs',require(_0x87d6('0x11')));_0x2d3a39['use'](_0x87d6('0x12'),require('./api/voiceQueue'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x13'),require(_0x87d6('0x14')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x15'),require('./api/screenRecording'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x16'),require(_0x87d6('0x17')));_0x2d3a39[_0x87d6('0x8')]('/api/voice/mails/messages',require(_0x87d6('0x18')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x19'),require(_0x87d6('0x1a')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x1b'),require('./api/voiceDialReport'));_0x2d3a39['use']('/api/voice/agents/reports',require(_0x87d6('0x1c')));_0x2d3a39[_0x87d6('0x8')]('/api/voice/queues/reports',require('./api/voiceQueueReport'));_0x2d3a39[_0x87d6('0x8')]('/api/members/reports',require(_0x87d6('0x1d')));_0x2d3a39['use'](_0x87d6('0x1e'),require(_0x87d6('0x1f')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x20'),require(_0x87d6('0x21')));_0x2d3a39[_0x87d6('0x8')]('/api/mail/out_servers',require('./api/mailServerOut'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x22'),require(_0x87d6('0x23')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x24'),require(_0x87d6('0x25')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x26'),require(_0x87d6('0x27')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x28'),require(_0x87d6('0x29')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x2a'),require(_0x87d6('0x2b')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x2c'),require(_0x87d6('0x2d')));_0x2d3a39[_0x87d6('0x8')]('/api/mail/reports/queue',require(_0x87d6('0x2e')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x2f'),require(_0x87d6('0x30')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x31'),require(_0x87d6('0x32')));_0x2d3a39[_0x87d6('0x8')]('/api/fax/accounts',require(_0x87d6('0x33')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x34'),require(_0x87d6('0x35')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x36'),require(_0x87d6('0x37')));_0x2d3a39['use'](_0x87d6('0x38'),require('./api/faxMessage'));_0x2d3a39[_0x87d6('0x8')]('/api/fax/queues',require(_0x87d6('0x39')));_0x2d3a39['use'](_0x87d6('0x3a'),require('./api/faxQueueReport'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x3b'),require('./api/smsAccount'));_0x2d3a39['use'](_0x87d6('0x3c'),require(_0x87d6('0x3d')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x3e'),require(_0x87d6('0x3f')));_0x2d3a39[_0x87d6('0x8')]('/api/sms/messages',require(_0x87d6('0x40')));_0x2d3a39['use'](_0x87d6('0x41'),require(_0x87d6('0x42')));_0x2d3a39[_0x87d6('0x8')]('/api/openchannel/accounts',require(_0x87d6('0x43')));_0x2d3a39['use'](_0x87d6('0x44'),require('./api/openchannelApplication'));_0x2d3a39['use']('/api/openchannel/interactions',require(_0x87d6('0x45')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x46'),require('./api/openchannelMessage'));_0x2d3a39['use']('/api/openchannel/queues',require(_0x87d6('0x47')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x48'),require('./api/chatWebsite'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x49'),require(_0x87d6('0x4a')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x4b'),require(_0x87d6('0x4c')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x4d'),require(_0x87d6('0x4e')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x4f'),require('./api/chatMessage'));_0x2d3a39[_0x87d6('0x8')]('/api/chat/offline_messages',require('./api/chatOfflineMessage'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x50'),require('./api/chatQueue'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x51'),require(_0x87d6('0x52')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x53'),require('./api/chatProactiveAction'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x54'),require(_0x87d6('0x55')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x56'),require(_0x87d6('0x57')));_0x2d3a39['use'](_0x87d6('0x58'),require(_0x87d6('0x59')));_0x2d3a39[_0x87d6('0x8')]('/api/cm/hopper_black',require('./api/cmHopperBlack'));_0x2d3a39['use'](_0x87d6('0x5a'),require(_0x87d6('0x5b')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x5c'),require('./api/cmHopperHistory'));_0x2d3a39['use'](_0x87d6('0x5d'),require('./api/cmCustomField'));_0x2d3a39['use'](_0x87d6('0x5e'),require('./api/action'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x5f'),require('./api/automation'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x60'),require(_0x87d6('0x61')));_0x2d3a39[_0x87d6('0x8')]('/api/dispositions',require(_0x87d6('0x62')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x63'),require(_0x87d6('0x64')));_0x2d3a39['use'](_0x87d6('0x65'),require(_0x87d6('0x66')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x67'),require('./api/pause'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x68'),require(_0x87d6('0x69')));_0x2d3a39[_0x87d6('0x8')]('/api/voiceQueuesLog',require('./api/voiceQueuesLog'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x6a'),require(_0x87d6('0x6b')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x6c'),require(_0x87d6('0x6d')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x6e'),require(_0x87d6('0x6f')));_0x2d3a39['use'](_0x87d6('0x70'),require(_0x87d6('0x71')));_0x2d3a39[_0x87d6('0x8')]('/api/cm_contact_has_items',require(_0x87d6('0x72')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x73'),require(_0x87d6('0x74')));_0x2d3a39[_0x87d6('0x8')]('/api/templates',require(_0x87d6('0x75')));_0x2d3a39['use']('/api/triggers',require('./api/trigger'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x76'),require('./api/variable'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x77'),require(_0x87d6('0x78')));_0x2d3a39['use'](_0x87d6('0x79'),require(_0x87d6('0x7a')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x7b'),require(_0x87d6('0x7c')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x7d'),require(_0x87d6('0x7e')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x7f'),require(_0x87d6('0x80')));_0x2d3a39[_0x87d6('0x8')]('/api/analytics/metrics',require(_0x87d6('0x81')));_0x2d3a39['use'](_0x87d6('0x82'),require(_0x87d6('0x83')));_0x2d3a39['use']('/api/analytics/tree_reports',require(_0x87d6('0x84')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x85'),require(_0x87d6('0x86')));_0x2d3a39[_0x87d6('0x8')]('/api/integrations/salesforce/configurations',require(_0x87d6('0x87')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x88'),require(_0x87d6('0x89')));_0x2d3a39[_0x87d6('0x8')]('/api/integrations/sugarcrm/accounts',require('./api/intSugarcrmAccount'));_0x2d3a39['use'](_0x87d6('0x8a'),require(_0x87d6('0x8b')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x8c'),require(_0x87d6('0x8d')));_0x2d3a39['use'](_0x87d6('0x8e'),require(_0x87d6('0x8f')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x90'),require(_0x87d6('0x91')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x92'),require(_0x87d6('0x93')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x94'),require(_0x87d6('0x95')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x96'),require('./api/intZohoConfiguration'));_0x2d3a39[_0x87d6('0x8')]('/api/integrations/zoho/fields',require(_0x87d6('0x97')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x98'),require(_0x87d6('0x99')));_0x2d3a39[_0x87d6('0x8')]('/api/integrations/zendesk/configurations',require(_0x87d6('0x9a')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x9b'),require(_0x87d6('0x9c')));_0x2d3a39['use'](_0x87d6('0x9d'),require(_0x87d6('0x9e')));_0x2d3a39['use'](_0x87d6('0x9f'),require(_0x87d6('0xa0')));_0x2d3a39[_0x87d6('0x8')]('/api/integrations/freshdesk/fields',require(_0x87d6('0xa1')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xa2'),require(_0x87d6('0xa3')));_0x2d3a39[_0x87d6('0x8')]('/api/integrations/vtiger/configurations',require(_0x87d6('0xa4')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xa5'),require(_0x87d6('0xa6')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xa7'),require(_0x87d6('0xa8')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xa9'),require(_0x87d6('0xaa')));_0x2d3a39[_0x87d6('0x8')]('/api/integrations/servicenow/fields',require(_0x87d6('0xab')));_0x2d3a39[_0x87d6('0x8')]('/api/integrations/dynamics365/accounts',require('./api/intDynamics365Account'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xac'),require('./api/intDynamics365Configuration'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xad'),require(_0x87d6('0xae')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xaf'),require(_0x87d6('0xb0')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xb1'),require(_0x87d6('0xb2')));_0x2d3a39['use'](_0x87d6('0xb3'),require('./api/intFreshsalesField'));_0x2d3a39[_0x87d6('0x8')]('/api/networks',require('./api/network'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xb4'),require(_0x87d6('0xb5')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xb6'),require(_0x87d6('0xb7')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xb8'),require('./api/jscriptyAnswerReport'));_0x2d3a39['use']('/api/jscripty/questions/reports',require('./api/jscriptyQuestionReport'));_0x2d3a39[_0x87d6('0x8')]('/api/jscripty/sessions/reports',require(_0x87d6('0xb9')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xba'),require(_0x87d6('0xbb')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xbc'),require(_0x87d6('0xbd')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xbe'),require(_0x87d6('0xbf')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xc0'),require(_0x87d6('0xc1')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xc2'),require('./api/setting'));_0x2d3a39['use']('/api/square/odbc',require(_0x87d6('0xc3')));_0x2d3a39['use'](_0x87d6('0xc4'),require(_0x87d6('0xc5')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xc6'),require(_0x87d6('0xc7')));_0x2d3a39[_0x87d6('0x8')]('/api/square/messages',require(_0x87d6('0xc8')));_0x2d3a39[_0x87d6('0x8')]('/api/teams',require(_0x87d6('0xc9')));_0x2d3a39['use']('/api/license',require(_0x87d6('0xca')));_0x2d3a39['use']('/api/campaigns',require(_0x87d6('0xcb')));_0x2d3a39['use'](_0x87d6('0xcc'),require(_0x87d6('0xcd')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xce'),require(_0x87d6('0xcf')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xd0'),require(_0x87d6('0xd1')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xd2'),require(_0x87d6('0xd3')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xd4'),require(_0x87d6('0xd5')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xd6'),require(_0x87d6('0xd7')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xd8'),require('./api/openchannelTransferReport'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xd9'),require(_0x87d6('0xda')));_0x2d3a39['use'](_0x87d6('0xdb'),require(_0x87d6('0xdc')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xdd'),require('./api/voicePrefix'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xde'),require(_0x87d6('0xdf')));_0x2d3a39[_0x87d6('0x8')]('/api/userProfile/sections',require('./api/userProfileSection'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xe0'),require('./api/userProfileResource'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xe1'),require('./api/userNotification'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xe2'),require(_0x87d6('0xe3')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xe4'),require(_0x87d6('0xe5')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xe6'),require(_0x87d6('0xe7')));_0x2d3a39['use'](_0x87d6('0xe8'),require(_0x87d6('0xe9')));_0x2d3a39['use']('/api/whatsapp/reports/queue',require('./api/whatsappQueueReport'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xea'),require(_0x87d6('0xeb')));_0x2d3a39[_0x87d6('0x8')]('/api/whatsapp/queues',require(_0x87d6('0xec')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xed'),require(_0x87d6('0xee')));_0x2d3a39[_0x87d6('0x8')]('/api/realtime',require(_0x87d6('0xef')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xf0'),require(_0x87d6('0xf1')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xf2'),require(_0x87d6('0xf3')));_0x2d3a39[_0x87d6('0x8')]('/api/auth/google',require(_0x87d6('0xf4')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xf5'),require('./api/authActiveDirectory'));_0x2d3a39[_0x87d6('0x8')]('/api/jira',require(_0x87d6('0xf6')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xf7'),require(_0x87d6('0xf8')));_0x2d3a39['use'](_0x87d6('0xf9'),require('./api/version'));_0x2d3a39['use']('/api/system',require('./api/system'));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xfa'),require(_0x87d6('0xfb')));_0x2d3a39['use'](_0x87d6('0xfc'),require(_0x87d6('0xfd')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xfe'),clientSideLogs);_0x2d3a39[_0x87d6('0x8')](_0x87d6('0xff'),express[_0x87d6('0x100')](path[_0x87d6('0x101')](config[_0x87d6('0x102')],_0x87d6('0xff'))));_0x2d3a39[_0x87d6('0x8')]('/www',express[_0x87d6('0x100')](path[_0x87d6('0x101')](config[_0x87d6('0x102')],'/www')));_0x2d3a39[_0x87d6('0x8')](_0x87d6('0x103'),express[_0x87d6('0x100')](path[_0x87d6('0x101')](config[_0x87d6('0x102')],_0x87d6('0x103'))));_0x2d3a39[_0x87d6('0x8')]('/snippet',express[_0x87d6('0x100')](path[_0x87d6('0x101')](config['root'],_0x87d6('0x104'),_0x87d6('0x105'))));_0x2d3a39[_0x87d6('0x8')]('/plugins',express[_0x87d6('0x100')](path[_0x87d6('0x101')](config[_0x87d6('0x102')],'/server/files/plugins')));_0x2d3a39[_0x87d6('0x106')](_0x87d6('0x107'))[_0x87d6('0x108')](errors[0x194]);_0x2d3a39[_0x87d6('0x106')]('/*')[_0x87d6('0x108')](function(_0x4cd3f0,_0x7390d6){_0x7390d6[_0x87d6('0x109')](path[_0x87d6('0x10a')](_0x2d3a39['get'](_0x87d6('0x10b'))+_0x87d6('0x10c')));});return _0x2d3a39;});};
\ No newline at end of file
index 2225b9d..25cb835 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf098=['../api/faxAccount/faxAccount.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsMessage/smsMessage.rpc','../api/smsQueue/smsQueue.rpc','../api/openchannelApplication/openchannelApplication.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelMessage/openchannelMessage.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopper/cmHopper.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperFinal/cmHopperFinal.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/sound/sound.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/template/template.rpc','../api/intSalesforceAccount/intSalesforceAccount.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/smsQueueReport/smsQueueReport.rpc','../api/squareReport/squareReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/squareMessage/squareMessage.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','port','localhost','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','RPC\x20listening\x20on\x20','jayson/promise','lodash','../config/environment','listen','merge','../api/user/user.rpc','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.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/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.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'];(function(_0xb2d5cc,_0x23ef9d){var _0x2fd030=function(_0x42db37){while(--_0x42db37){_0xb2d5cc['push'](_0xb2d5cc['shift']());}};_0x2fd030(++_0x23ef9d);}(_0xf098,0x194));var _0x8f09=function(_0x14a74c,_0x70c31){_0x14a74c=_0x14a74c-0x0;var _0xbc41fa=_0xf098[_0x14a74c];return _0xbc41fa;};'use strict';var jayson=require(_0x8f09('0x0'));var _=require(_0x8f09('0x1'));var config=require(_0x8f09('0x2'));exports[_0x8f09('0x3')]=function(){return new Promise(function(_0x4b4275,_0x594391){var _0x121e30={};_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x5')));_0x121e30=_['merge'](_0x121e30,require(_0x8f09('0x6')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x7')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x8')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x9')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0xa')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0xb')));_0x121e30=_['merge'](_0x121e30,require(_0x8f09('0xc')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require('../api/memberReport/memberReport.rpc'));_0x121e30=_['merge'](_0x121e30,require(_0x8f09('0xd')));_0x121e30=_['merge'](_0x121e30,require(_0x8f09('0xe')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0xf')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require('../api/mailServerIn/mailServerIn.rpc'));_0x121e30=_['merge'](_0x121e30,require(_0x8f09('0x10')));_0x121e30=_['merge'](_0x121e30,require(_0x8f09('0x11')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x12')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x13')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x14')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x15')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x16')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require('../api/faxApplication/faxApplication.rpc'));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require('../api/faxInteraction/faxInteraction.rpc'));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x17')));_0x121e30=_['merge'](_0x121e30,require('../api/faxQueue/faxQueue.rpc'));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x18')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x19')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require('../api/smsInteraction/smsInteraction.rpc'));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x1a')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x1b')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x1c')));_0x121e30=_['merge'](_0x121e30,require(_0x8f09('0x1d')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x1e')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x1f')));_0x121e30=_['merge'](_0x121e30,require(_0x8f09('0x20')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x21')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require('../api/chatMessage/chatMessage.rpc'));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x22')));_0x121e30=_['merge'](_0x121e30,require(_0x8f09('0x23')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x24')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x25')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x26')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x27')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x28')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x29')));_0x121e30=_['merge'](_0x121e30,require('../api/pause/pause.rpc'));_0x121e30=_['merge'](_0x121e30,require(_0x8f09('0x2a')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x2b')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x2c')));_0x121e30=_['merge'](_0x121e30,require('../api/trigger/trigger.rpc'));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require('../api/variable/variable.rpc'));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x2d')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x2e')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require('../api/intDeskAccount/intDeskAccount.rpc'));_0x121e30=_['merge'](_0x121e30,require(_0x8f09('0x2f')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x30')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require('../api/intFreshdeskAccount/intFreshdeskAccount.rpc'));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require('../api/intVtigerAccount/intVtigerAccount.rpc'));_0x121e30=_['merge'](_0x121e30,require(_0x8f09('0x31')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require('../api/intDynamics365Account/intDynamics365Account.rpc'));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require('../api/intFreshsalesAccount/intFreshsalesAccount.rpc'));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x32')));_0x121e30=_['merge'](_0x121e30,require(_0x8f09('0x33')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x34')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x35')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x36')));_0x121e30=_['merge'](_0x121e30,require('../api/squareOdbc/squareOdbc.rpc'));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x37')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x38')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x39')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x3a')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x3b')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require('../api/plugin/plugin.rpc'));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x3c')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require('../api/whatsappInteraction/whatsappInteraction.rpc'));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x3d')));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require('../api/whatsappQueueReport/whatsappQueueReport.rpc'));_0x121e30=_[_0x8f09('0x4')](_0x121e30,require(_0x8f09('0x3e')));var _0x13f252=jayson[_0x8f09('0x3f')](_0x121e30)['http']();var _0x5756e7=config['rpc'][_0x8f09('0x40')]||config[_0x8f09('0x40')]+0x1;var _0x2ccb72=config['rpc']['ip']||_0x8f09('0x41');_0x13f252['on']('error',function(_0x2233ef){return _0x594391(_0x2233ef);});_0x13f252[_0x8f09('0x3')](_0x5756e7,_0x2ccb72,function(){console[_0x8f09('0x42')](_0x8f09('0x43'),_0x2ccb72,_0x5756e7);require(_0x8f09('0x44'))[_0x8f09('0x45')]();return _0x4b4275(_0x8f09('0x46')+_0x2ccb72+':'+_0x5756e7);});});};
\ No newline at end of file
+var _0x423b=['../api/smsQueue/smsQueue.rpc','../api/openchannelInteraction/openchannelInteraction.rpc','../api/openchannelQueue/openchannelQueue.rpc','../api/openchannelQueueReport/openchannelQueueReport.rpc','../api/chatInteraction/chatInteraction.rpc','../api/chatMessage/chatMessage.rpc','../api/chatQueue/chatQueue.rpc','../api/cmContact/cmContact.rpc','../api/cmHopperBlack/cmHopperBlack.rpc','../api/cmHopperHistory/cmHopperHistory.rpc','../api/reportAgentPreview/reportAgentPreview.rpc','../api/interval/interval.rpc','../api/pause/pause.rpc','../api/sound/sound.rpc','../api/cmHopperAdditionalPhone/cmHopperAdditionalPhone.rpc','../api/variable/variable.rpc','../api/intSugarcrmAccount/intSugarcrmAccount.rpc','../api/intZohoAccount/intZohoAccount.rpc','../api/intZendeskAccount/intZendeskAccount.rpc','../api/intServicenowAccount/intServicenowAccount.rpc','../api/intDynamics365Account/intDynamics365Account.rpc','../api/intFreshsalesAccount/intFreshsalesAccount.rpc','../api/chatQueueReport/chatQueueReport.rpc','../api/squareReportDetail/squareReportDetail.rpc','../api/setting/setting.rpc','../api/squareOdbc/squareOdbc.rpc','../api/squareProject/squareProject.rpc','../api/squareRecording/squareRecording.rpc','../api/campaign/campaign.rpc','../api/attachment/attachment.rpc','../api/whatsappAccount/whatsappAccount.rpc','../api/whatsappInteraction/whatsappInteraction.rpc','../api/whatsappMessage/whatsappMessage.rpc','../api/whatsappQueueReport/whatsappQueueReport.rpc','../api/whatsappQueue/whatsappQueue.rpc','server','http','port','error','log','Express\x20RPC\x20server\x20listening\x20on\x20%s:%d!','../config/triggers','default','lodash','listen','merge','../api/voiceExtension/voiceExtension.rpc','../api/voiceQueue/voiceQueue.rpc','../api/voiceRecording/voiceRecording.rpc','../api/voiceDialReport/voiceDialReport.rpc','../api/voiceAgentReport/voiceAgentReport.rpc','../api/memberReport/memberReport.rpc','../api/trunk/trunk.rpc','../api/voiceTransferReport/voiceTransferReport.rpc','../api/userVoiceQueueRt/userVoiceQueueRt.rpc','../api/mailAccount/mailAccount.rpc','../api/mailQueueReport/mailQueueReport.rpc','../api/faxApplication/faxApplication.rpc','../api/faxInteraction/faxInteraction.rpc','../api/faxMessage/faxMessage.rpc','../api/faxQueueReport/faxQueueReport.rpc','../api/smsAccount/smsAccount.rpc','../api/smsInteraction/smsInteraction.rpc','../api/smsMessage/smsMessage.rpc'];(function(_0x330f48,_0x23436d){var _0x5d2491=function(_0x5c315e){while(--_0x5c315e){_0x330f48['push'](_0x330f48['shift']());}};_0x5d2491(++_0x23436d);}(_0x423b,0x12b));var _0xb423=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0x423b[_0x2235bf];return _0x4c3a64;};'use strict';var jayson=require('jayson/promise');var _=require(_0xb423('0x0'));var config=require('../config/environment');exports[_0xb423('0x1')]=function(){return new Promise(function(_0x54e396,_0x3dbb0c){var _0x4b4acf={};_0x4b4acf=_['merge'](_0x4b4acf,require('../api/user/user.rpc'));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x3')));_0x4b4acf=_['merge'](_0x4b4acf,require(_0xb423('0x4')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x5')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require('../api/voiceCallReport/voiceCallReport.rpc'));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x6')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x7')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require('../api/voiceQueueReport/voiceQueueReport.rpc'));_0x4b4acf=_['merge'](_0x4b4acf,require(_0xb423('0x8')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x9')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0xa')));_0x4b4acf=_['merge'](_0x4b4acf,require(_0xb423('0xb')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require('../api/mailServerIn/mailServerIn.rpc'));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0xc')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require('../api/mailQueue/mailQueue.rpc'));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require('../api/mailInteraction/mailInteraction.rpc'));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require('../api/mailMessage/mailMessage.rpc'));_0x4b4acf=_['merge'](_0x4b4acf,require('../api/mailApplication/mailApplication.rpc'));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0xd')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require('../api/faxAccount/faxAccount.rpc'));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0xe')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0xf')));_0x4b4acf=_['merge'](_0x4b4acf,require(_0xb423('0x10')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require('../api/faxQueue/faxQueue.rpc'));_0x4b4acf=_['merge'](_0x4b4acf,require(_0xb423('0x11')));_0x4b4acf=_['merge'](_0x4b4acf,require(_0xb423('0x12')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x13')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x14')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x15')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require('../api/openchannelApplication/openchannelApplication.rpc'));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x16')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require('../api/openchannelMessage/openchannelMessage.rpc'));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x17')));_0x4b4acf=_['merge'](_0x4b4acf,require(_0xb423('0x18')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x19')));_0x4b4acf=_['merge'](_0x4b4acf,require(_0xb423('0x1a')));_0x4b4acf=_['merge'](_0x4b4acf,require(_0xb423('0x1b')));_0x4b4acf=_['merge'](_0x4b4acf,require(_0xb423('0x1c')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require('../api/cmHopper/cmHopper.rpc'));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x1d')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require('../api/cmHopperFinal/cmHopperFinal.rpc'));_0x4b4acf=_['merge'](_0x4b4acf,require(_0xb423('0x1e')));_0x4b4acf=_['merge'](_0x4b4acf,require(_0xb423('0x1f')));_0x4b4acf=_['merge'](_0x4b4acf,require(_0xb423('0x20')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x21')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x22')));_0x4b4acf=_['merge'](_0x4b4acf,require(_0xb423('0x23')));_0x4b4acf=_['merge'](_0x4b4acf,require('../api/template/template.rpc'));_0x4b4acf=_['merge'](_0x4b4acf,require('../api/trigger/trigger.rpc'));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x24')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require('../api/intSalesforceAccount/intSalesforceAccount.rpc'));_0x4b4acf=_['merge'](_0x4b4acf,require(_0xb423('0x25')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require('../api/intDeskAccount/intDeskAccount.rpc'));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x26')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x27')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require('../api/intFreshdeskAccount/intFreshdeskAccount.rpc'));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require('../api/intVtigerAccount/intVtigerAccount.rpc'));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x28')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x29')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x2a')));_0x4b4acf=_['merge'](_0x4b4acf,require(_0xb423('0x2b')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require('../api/smsQueueReport/smsQueueReport.rpc'));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require('../api/squareReport/squareReport.rpc'));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x2c')));_0x4b4acf=_['merge'](_0x4b4acf,require(_0xb423('0x2d')));_0x4b4acf=_['merge'](_0x4b4acf,require(_0xb423('0x2e')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x2f')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x30')));_0x4b4acf=_['merge'](_0x4b4acf,require('../api/squareMessage/squareMessage.rpc'));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x31')));_0x4b4acf=_['merge'](_0x4b4acf,require(_0xb423('0x32')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require('../api/plugin/plugin.rpc'));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x33')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x34')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x35')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x36')));_0x4b4acf=_[_0xb423('0x2')](_0x4b4acf,require(_0xb423('0x37')));var _0x17eb60=jayson[_0xb423('0x38')](_0x4b4acf)[_0xb423('0x39')]();var _0x1e1b3c=config['rpc'][_0xb423('0x3a')]||config['port']+0x1;var _0x4a2f76=config['rpc']['ip']||'localhost';_0x17eb60['on'](_0xb423('0x3b'),function(_0x162790){return _0x3dbb0c(_0x162790);});_0x17eb60['listen'](_0x1e1b3c,_0x4a2f76,function(){console[_0xb423('0x3c')](_0xb423('0x3d'),_0x4a2f76,_0x1e1b3c);require(_0xb423('0x3e'))[_0xb423('0x3f')]();return _0x54e396('RPC\x20listening\x20on\x20'+_0x4a2f76+':'+_0x1e1b3c);});});};
\ No newline at end of file
index cde044d..63d74ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x122f=['hangup','substring','520-Invalid','search','520\x20End\x20of\x20proper','no\x20code','result=','indexOf','substr','startsWith','length','match','E_AGI_SOCKET_ERROR','code','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','pipe','command','function','write','prototype','sendRequest','sync','answer','getData','beep','format','noop','NO\x20MESSAGE','VERBOSE\x20\x22%s\x22','exec','isArray','EXEC\x20%s\x20%s','setContext','SET\x20CONTEXT\x20%s','setExtension','setPriority','HANGUP','setVariable','isBoolean','isNumber','toString','replace','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','continueAt','extension','GOTO\x20%s\x20%s\x20%s','getVariable','wav','BEEP','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','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','util','lodash','events','./reply','./error','call','setEncoding','utf8','headers','emit','ready','line','toLowerCase'];(function(_0x52f159,_0x419d8a){var _0x156799=function(_0xf168e8){while(--_0xf168e8){_0x52f159['push'](_0x52f159['shift']());}};_0x156799(++_0x419d8a);}(_0x122f,0xd1));var _0xf122=function(_0x4f256c,_0x5f45bf){_0x4f256c=_0x4f256c-0x0;var _0x4d059d=_0x122f[_0x4f256c];return _0x4d059d;};'use strict';var util=require(_0xf122('0x0'));var _=require(_0xf122('0x1'));var EventEmitter=require(_0xf122('0x2'))['EventEmitter'];var AGIReply=require(_0xf122('0x3'));var AGIError=require(_0xf122('0x4'));function AGIChannel(_0x504d00){var _0x4cd3d5=this,_0x182b6a=new AGIReply(),_0x2a38e7=![],_0x4b39eb={};EventEmitter[_0xf122('0x5')](_0x4cd3d5);_0x504d00[_0xf122('0x6')]('utf8');_0x504d00['setTimeout'](0x8*0x3c*0x3c*0x3e8);_0x182b6a['setEncoding'](_0xf122('0x7'));_0x182b6a['on'](_0xf122('0x8'),function(_0x44f63f){for(var _0x2f1357 in _0x44f63f){_0x4cd3d5[_0x2f1357]=_0x44f63f[_0x2f1357];}_0x4cd3d5[_0xf122('0x9')](_0xf122('0xa'));});_0x182b6a['on'](_0xf122('0xb'),function(_0x4d4bed){if(_0x4d4bed[_0xf122('0xc')]()==_0xf122('0xd')){_0x4cd3d5['emit'](_0xf122('0xd'));return;}if(_0x4d4bed[_0xf122('0xe')](0x0,0xb)==_0xf122('0xf')){_0x2a38e7=!![];}if(_0x2a38e7){_0x4b39eb['rx']+=_0x4d4bed+'\x0a';if(_0x4d4bed[_0xf122('0x10')](_0xf122('0x11'))!=-0x1){_0x2a38e7=![];}}else{_0x4b39eb['rx']=_0x4d4bed;}if(_0x2a38e7){return;}if(typeof _0x4b39eb['cb']=='function'){var _0x22beb1=_0x4b39eb['rx'][_0xf122('0xe')](0x0,0x3),_0x57734f=null,_0x18b368=null;_0x22beb1=parseInt(_0x22beb1);if(isNaN(_0x22beb1)){_0x4b39eb['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0xf122('0x12')});return;}if(_0x22beb1!=0xc8){_0x4b39eb['cb'](null,{'code':_0x22beb1,'result':-0x1,'extra':'KO'});return;}_0x57734f=_0x4b39eb['rx'][_0xf122('0xe')](0x4)['replace'](_0xf122('0x13'),'');if(_0x57734f[_0xf122('0x14')]('\x20')!=-0x1){_0x57734f=_0x57734f[_0xf122('0x15')](0x0,_0x57734f[_0xf122('0x14')]('\x20'));}if(_[_0xf122('0x16')](_0x57734f,'-1')){_0x57734f=parseInt(_0x57734f);}_0x18b368=_0x4b39eb['rx']['split']('\x20');if(_0x18b368[_0xf122('0x17')]==0x3){_0x18b368=_0x18b368[0x2]['substring'](0x1,_0x18b368[0x2][_0xf122('0x17')]-0x1);}else if(_0x18b368['length']>0x3){var _0x134dad=/\((.+)\)/;var _0x5a5b51=_0x4b39eb['rx'][_0xf122('0x18')](_0x134dad);if(_0x5a5b51){_0x18b368=_0x5a5b51[0x1];}else{_0x18b368=null;}}else{_0x18b368=null;}_0x4b39eb['cb'](null,{'code':_0x22beb1,'result':_0x57734f,'extra':_0x18b368});}});_0x504d00['on']('error',function(_0x570304){_0x4cd3d5[_0xf122('0x9')]('error',new AGIError(_0xf122('0x19'),_0x570304[_0xf122('0x1a')]));});_0x504d00['on'](_0xf122('0x1b'),function(){_0x4cd3d5['emit']('close',new AGIError(_0xf122('0x1c')));});_0x504d00['on'](_0xf122('0x1d'),function(){_0x4cd3d5['emit'](_0xf122('0x1d'),new AGIError(_0xf122('0x1e')));_0x504d00['destroy']();});_0x504d00[_0xf122('0x1f')](_0x182b6a);this[_0xf122('0x20')]=function(_0x3b8ddb,_0xe46ae5){var _0x3b8ddb=_0x3b8ddb||'',_0xe46ae5=typeof _0xe46ae5==_0xf122('0x21')?_0xe46ae5:new Function();_0x4b39eb={'tx':_0x3b8ddb,'rx':'','cb':_0xe46ae5};_0x504d00[_0xf122('0x22')](_0x3b8ddb+'\x0a');},this['close']=function(){_0x504d00['destroy']();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel[_0xf122('0x23')][_0xf122('0x24')]=function(_0x51476e){return this[_0xf122('0x20')][_0xf122('0x25')](this,_0x51476e);};AGIChannel[_0xf122('0x23')][_0xf122('0x26')]=function(){return this[_0xf122('0x24')]('ANSWER');};AGIChannel[_0xf122('0x23')][_0xf122('0x27')]=function(_0xd0214e,_0x139205,_0x3a336b){_0xd0214e=_0xd0214e===undefined?_0xf122('0x28'):_0xd0214e;_0x139205=_0x139205===undefined?'5':_0x139205;_0x3a336b=_0x3a336b===undefined?'1':_0x3a336b;return this[_0xf122('0x24')](util[_0xf122('0x29')]('GET\x20DATA\x20\x22%s\x22\x20%s\x20%s',_0xd0214e,_0x139205*0x3e8,_0x3a336b));};AGIChannel[_0xf122('0x23')][_0xf122('0x2a')]=function(_0x3a74ed){_0x3a74ed=_0x3a74ed||_0xf122('0x2b');return this[_0xf122('0x24')](util[_0xf122('0x29')](_0xf122('0x2c'),_0x3a74ed));};AGIChannel[_0xf122('0x23')][_0xf122('0x2d')]=function(_0x2ff4e7,_0x3f38ee){if(_[_0xf122('0x2e')](_0x3f38ee)){return this[_0xf122('0x24')](util[_0xf122('0x29')](_0xf122('0x2f'),_0x2ff4e7,_0x3f38ee['join'](',')));}return this[_0xf122('0x24')](util[_0xf122('0x29')](_0xf122('0x2f'),_0x2ff4e7,_0x3f38ee));};AGIChannel['prototype'][_0xf122('0x30')]=function(_0x35d519){return this[_0xf122('0x24')](util[_0xf122('0x29')](_0xf122('0x31'),_0x35d519));};AGIChannel[_0xf122('0x23')][_0xf122('0x32')]=function(_0x1de947){return this['sendRequest'](util[_0xf122('0x29')]('SET\x20EXTENSION\x20%s',_0x1de947));};AGIChannel[_0xf122('0x23')][_0xf122('0x33')]=function(_0x36cdb5){return this['sendRequest'](util[_0xf122('0x29')]('SET\x20PRIORITY\x20%s',_0x36cdb5));};AGIChannel[_0xf122('0x23')][_0xf122('0xd')]=function(){return this[_0xf122('0x24')](_0xf122('0x34'));};AGIChannel[_0xf122('0x23')][_0xf122('0x35')]=function(_0x4fe1a8,_0x50b334){var _0x74aea2=_[_0xf122('0x36')](_0x50b334)||_[_0xf122('0x37')](_0x50b334)?_0x50b334[_0xf122('0x38')]():_0x50b334;return this[_0xf122('0x24')](util['format']('SET\x20VARIABLE\x20%s\x20\x22%s\x22',_0x4fe1a8,_0x74aea2?_0x74aea2[_0xf122('0x38')]()[_0xf122('0x39')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel['prototype']['sayNumber']=function(_0x496992,_0x287c8c){return this['sendRequest'](util[_0xf122('0x29')]('SAY\x20NUMBER\x20%s\x20%s',_0x496992,_0x287c8c));};AGIChannel[_0xf122('0x23')]['sayDigits']=function(_0x1c3533,_0x27e211){return this['sendRequest'](util[_0xf122('0x29')](_0xf122('0x3a'),_0x1c3533,_0x27e211));};AGIChannel[_0xf122('0x23')][_0xf122('0x3b')]=function(_0x3198ca,_0x691e41){return this[_0xf122('0x24')](util[_0xf122('0x29')]('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x3198ca,_0x691e41));};AGIChannel[_0xf122('0x23')][_0xf122('0x3c')]=function(_0x43d848,_0x50ae92,_0x5c5ec3){_0x50ae92=_0x50ae92||this[_0xf122('0x3d')];_0x5c5ec3=_0x5c5ec3||0x1;this[_0xf122('0x30')](_0x43d848);this[_0xf122('0x32')](_0x50ae92);this['setPriority'](_0x5c5ec3);return this[_0xf122('0x2a')](util['format'](_0xf122('0x3e'),_0x43d848,_0x50ae92,_0x5c5ec3));};AGIChannel[_0xf122('0x23')][_0xf122('0x3f')]=function(_0x5da017){return this[_0xf122('0x24')](util['format']('GET\x20VARIABLE\x20\x22%s\x22',_0x5da017));};AGIChannel['prototype']['recordFile']=function(_0x313dc1,_0x16c25f,_0x5c52e9,_0x40e501,_0x172819,_0x1166cb){_0x16c25f=_0x16c25f||_0xf122('0x40');_0x5c52e9=_0x5c52e9||'';_0x40e501=_0x40e501===undefined?-0x1:_0x40e501==='-1'?-0x1:_0x40e501*0x3e8;_0x172819=_0x172819===undefined?'':'s='+_0x172819;_0x1166cb=_0x1166cb?_0xf122('0x41'):'';return this[_0xf122('0x24')](util[_0xf122('0x29')](_0xf122('0x42'),_0x313dc1,_0x16c25f,_0x5c52e9,_0x40e501,_0x1166cb,_0x172819));};AGIChannel[_0xf122('0x23')][_0xf122('0x43')]=function(_0x504824,_0x385881){_0x385881=_0x385881||'';return this[_0xf122('0x24')](util[_0xf122('0x29')](_0xf122('0x44'),_0x504824,_0x385881));};AGIChannel[_0xf122('0x23')][_0xf122('0x45')]=function(_0x899ab8){return this[_0xf122('0x2d')](_0xf122('0x46'),_0x899ab8);};AGIChannel[_0xf122('0x23')]['wait']=function(_0x562849){return this[_0xf122('0x2d')](_0xf122('0x47'),_0x562849);};AGIChannel[_0xf122('0x23')]['error']=function(_0x2b62c5,_0x818aa){this[_0xf122('0x2a')](util['format'](_0xf122('0x48'),_0x2b62c5['id'],_0x2b62c5[_0xf122('0x49')],_0x818aa));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
+var _0x8a21=['BEEP','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','wait','WAIT','ID:%s\x20-\x20LABEL:\x20%s\x20-\x20MSG:\x20%s','label','util','EventEmitter','./reply','./error','call','setEncoding','utf8','setTimeout','headers','ready','line','toLowerCase','hangup','substring','search','520\x20End\x20of\x20proper','no\x20code','replace','substr','startsWith','length','match','error','code','emit','close','E_AGI_SOCKET_CLOSE','timeout','E_AGI_SOCKET_TIMEOUT','destroy','pipe','command','function','write','prototype','answer','ANSWER','getData','beep','sendRequest','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','setContext','SET\x20CONTEXT\x20%s','SET\x20EXTENSION\x20%s','setPriority','SET\x20PRIORITY\x20%s','HANGUP','setVariable','isNumber','toString','SET\x20VARIABLE\x20%s\x20\x22%s\x22','sayDigits','SAY\x20DIGITS\x20%s\x20%s','sayPhonetic','continueAt','extension','GOTO\x20%s\x20%s\x20%s','getVariable','GET\x20VARIABLE\x20\x22%s\x22','recordFile'];(function(_0x4a40f5,_0x594c1e){var _0x3ab7c7=function(_0x5af860){while(--_0x5af860){_0x4a40f5['push'](_0x4a40f5['shift']());}};_0x3ab7c7(++_0x594c1e);}(_0x8a21,0x1d8));var _0x18a2=function(_0x4eab61,_0x1a6e6d){_0x4eab61=_0x4eab61-0x0;var _0x342426=_0x8a21[_0x4eab61];return _0x342426;};'use strict';var util=require(_0x18a2('0x0'));var _=require('lodash');var EventEmitter=require('events')[_0x18a2('0x1')];var AGIReply=require(_0x18a2('0x2'));var AGIError=require(_0x18a2('0x3'));function AGIChannel(_0x5e5435){var _0x5a8a45=this,_0x42b942=new AGIReply(),_0x23e0d1=![],_0x2afe05={};EventEmitter[_0x18a2('0x4')](_0x5a8a45);_0x5e5435[_0x18a2('0x5')](_0x18a2('0x6'));_0x5e5435[_0x18a2('0x7')](0x8*0x3c*0x3c*0x3e8);_0x42b942[_0x18a2('0x5')]('utf8');_0x42b942['on'](_0x18a2('0x8'),function(_0x2ed80f){for(var _0x29a54d in _0x2ed80f){_0x5a8a45[_0x29a54d]=_0x2ed80f[_0x29a54d];}_0x5a8a45['emit'](_0x18a2('0x9'));});_0x42b942['on'](_0x18a2('0xa'),function(_0x143d14){if(_0x143d14[_0x18a2('0xb')]()==_0x18a2('0xc')){_0x5a8a45['emit'](_0x18a2('0xc'));return;}if(_0x143d14[_0x18a2('0xd')](0x0,0xb)=='520-Invalid'){_0x23e0d1=!![];}if(_0x23e0d1){_0x2afe05['rx']+=_0x143d14+'\x0a';if(_0x143d14[_0x18a2('0xe')](_0x18a2('0xf'))!=-0x1){_0x23e0d1=![];}}else{_0x2afe05['rx']=_0x143d14;}if(_0x23e0d1){return;}if(typeof _0x2afe05['cb']=='function'){var _0x30ee0b=_0x2afe05['rx'][_0x18a2('0xd')](0x0,0x3),_0x27e3af=null,_0x538947=null;_0x30ee0b=parseInt(_0x30ee0b);if(isNaN(_0x30ee0b)){_0x2afe05['cb'](null,{'code':0x1f4,'result':-0x1,'extra':_0x18a2('0x10')});return;}if(_0x30ee0b!=0xc8){_0x2afe05['cb'](null,{'code':_0x30ee0b,'result':-0x1,'extra':'KO'});return;}_0x27e3af=_0x2afe05['rx'][_0x18a2('0xd')](0x4)[_0x18a2('0x11')]('result=','');if(_0x27e3af['indexOf']('\x20')!=-0x1){_0x27e3af=_0x27e3af[_0x18a2('0x12')](0x0,_0x27e3af['indexOf']('\x20'));}if(_[_0x18a2('0x13')](_0x27e3af,'-1')){_0x27e3af=parseInt(_0x27e3af);}_0x538947=_0x2afe05['rx']['split']('\x20');if(_0x538947[_0x18a2('0x14')]==0x3){_0x538947=_0x538947[0x2][_0x18a2('0xd')](0x1,_0x538947[0x2][_0x18a2('0x14')]-0x1);}else if(_0x538947['length']>0x3){var _0x12b11f=/\((.+)\)/;var _0x368a1d=_0x2afe05['rx'][_0x18a2('0x15')](_0x12b11f);if(_0x368a1d){_0x538947=_0x368a1d[0x1];}else{_0x538947=null;}}else{_0x538947=null;}_0x2afe05['cb'](null,{'code':_0x30ee0b,'result':_0x27e3af,'extra':_0x538947});}});_0x5e5435['on'](_0x18a2('0x16'),function(_0x22296a){_0x5a8a45['emit'](_0x18a2('0x16'),new AGIError('E_AGI_SOCKET_ERROR',_0x22296a[_0x18a2('0x17')]));});_0x5e5435['on']('close',function(){_0x5a8a45[_0x18a2('0x18')](_0x18a2('0x19'),new AGIError(_0x18a2('0x1a')));});_0x5e5435['on'](_0x18a2('0x1b'),function(){_0x5a8a45[_0x18a2('0x18')](_0x18a2('0x1b'),new AGIError(_0x18a2('0x1c')));_0x5e5435[_0x18a2('0x1d')]();});_0x5e5435[_0x18a2('0x1e')](_0x42b942);this[_0x18a2('0x1f')]=function(_0x127437,_0x3a063a){var _0x127437=_0x127437||'',_0x3a063a=typeof _0x3a063a==_0x18a2('0x20')?_0x3a063a:new Function();_0x2afe05={'tx':_0x127437,'rx':'','cb':_0x3a063a};_0x5e5435[_0x18a2('0x21')](_0x127437+'\x0a');},this[_0x18a2('0x19')]=function(){_0x5e5435[_0x18a2('0x1d')]();};}util['inherits'](AGIChannel,EventEmitter);AGIChannel['prototype']['sendRequest']=function(_0x2f6484){return this[_0x18a2('0x1f')]['sync'](this,_0x2f6484);};AGIChannel[_0x18a2('0x22')][_0x18a2('0x23')]=function(){return this['sendRequest'](_0x18a2('0x24'));};AGIChannel[_0x18a2('0x22')][_0x18a2('0x25')]=function(_0x3689b6,_0x1928f5,_0x433dad){_0x3689b6=_0x3689b6===undefined?_0x18a2('0x26'):_0x3689b6;_0x1928f5=_0x1928f5===undefined?'5':_0x1928f5;_0x433dad=_0x433dad===undefined?'1':_0x433dad;return this[_0x18a2('0x27')](util[_0x18a2('0x28')](_0x18a2('0x29'),_0x3689b6,_0x1928f5*0x3e8,_0x433dad));};AGIChannel[_0x18a2('0x22')]['noop']=function(_0x43a4f8){_0x43a4f8=_0x43a4f8||_0x18a2('0x2a');return this['sendRequest'](util[_0x18a2('0x28')](_0x18a2('0x2b'),_0x43a4f8));};AGIChannel[_0x18a2('0x22')][_0x18a2('0x2c')]=function(_0x42567c,_0x56b765){if(_[_0x18a2('0x2d')](_0x56b765)){return this[_0x18a2('0x27')](util[_0x18a2('0x28')](_0x18a2('0x2e'),_0x42567c,_0x56b765[_0x18a2('0x2f')](',')));}return this['sendRequest'](util[_0x18a2('0x28')](_0x18a2('0x2e'),_0x42567c,_0x56b765));};AGIChannel[_0x18a2('0x22')][_0x18a2('0x30')]=function(_0x589d46){return this[_0x18a2('0x27')](util[_0x18a2('0x28')](_0x18a2('0x31'),_0x589d46));};AGIChannel[_0x18a2('0x22')]['setExtension']=function(_0x2f3701){return this[_0x18a2('0x27')](util[_0x18a2('0x28')](_0x18a2('0x32'),_0x2f3701));};AGIChannel[_0x18a2('0x22')][_0x18a2('0x33')]=function(_0x547091){return this[_0x18a2('0x27')](util[_0x18a2('0x28')](_0x18a2('0x34'),_0x547091));};AGIChannel[_0x18a2('0x22')][_0x18a2('0xc')]=function(){return this['sendRequest'](_0x18a2('0x35'));};AGIChannel['prototype'][_0x18a2('0x36')]=function(_0x9b20c1,_0x42a851){var _0x3961f5=_['isBoolean'](_0x42a851)||_[_0x18a2('0x37')](_0x42a851)?_0x42a851[_0x18a2('0x38')]():_0x42a851;return this['sendRequest'](util[_0x18a2('0x28')](_0x18a2('0x39'),_0x9b20c1,_0x3961f5?_0x3961f5[_0x18a2('0x38')]()[_0x18a2('0x11')](/(\r\n|\n|\r)/gm,'\x20'):''));};AGIChannel[_0x18a2('0x22')]['sayNumber']=function(_0x6de8a5,_0xc1d57f){return this[_0x18a2('0x27')](util[_0x18a2('0x28')]('SAY\x20NUMBER\x20%s\x20%s',_0x6de8a5,_0xc1d57f));};AGIChannel['prototype'][_0x18a2('0x3a')]=function(_0x5df932,_0x345927){return this[_0x18a2('0x27')](util[_0x18a2('0x28')](_0x18a2('0x3b'),_0x5df932,_0x345927));};AGIChannel[_0x18a2('0x22')][_0x18a2('0x3c')]=function(_0x1124db,_0x4d605a){return this[_0x18a2('0x27')](util[_0x18a2('0x28')]('SAY\x20PHONETIC\x20\x22%s\x22\x20%s',_0x1124db,_0x4d605a));};AGIChannel[_0x18a2('0x22')][_0x18a2('0x3d')]=function(_0x55f902,_0x30d37c,_0x392626){_0x30d37c=_0x30d37c||this[_0x18a2('0x3e')];_0x392626=_0x392626||0x1;this[_0x18a2('0x30')](_0x55f902);this['setExtension'](_0x30d37c);this[_0x18a2('0x33')](_0x392626);return this['noop'](util[_0x18a2('0x28')](_0x18a2('0x3f'),_0x55f902,_0x30d37c,_0x392626));};AGIChannel[_0x18a2('0x22')][_0x18a2('0x40')]=function(_0x3d69b7){return this[_0x18a2('0x27')](util[_0x18a2('0x28')](_0x18a2('0x41'),_0x3d69b7));};AGIChannel[_0x18a2('0x22')][_0x18a2('0x42')]=function(_0x2b9c29,_0x5d242e,_0x5a73c7,_0xa498ee,_0xa6494c,_0x61da06){_0x5d242e=_0x5d242e||'wav';_0x5a73c7=_0x5a73c7||'';_0xa498ee=_0xa498ee===undefined?-0x1:_0xa498ee==='-1'?-0x1:_0xa498ee*0x3e8;_0xa6494c=_0xa6494c===undefined?'':'s='+_0xa6494c;_0x61da06=_0x61da06?_0x18a2('0x43'):'';return this[_0x18a2('0x27')](util[_0x18a2('0x28')](_0x18a2('0x44'),_0x2b9c29,_0x5d242e,_0x5a73c7,_0xa498ee,_0x61da06,_0xa6494c));};AGIChannel[_0x18a2('0x22')][_0x18a2('0x45')]=function(_0x36b5fc,_0x65a197){_0x65a197=_0x65a197||'';return this[_0x18a2('0x27')](util[_0x18a2('0x28')](_0x18a2('0x46'),_0x36b5fc,_0x65a197));};AGIChannel[_0x18a2('0x22')][_0x18a2('0x47')]=function(_0x189928){return this[_0x18a2('0x2c')](_0x18a2('0x48'),_0x189928);};AGIChannel[_0x18a2('0x22')][_0x18a2('0x49')]=function(_0x3157af){return this[_0x18a2('0x2c')](_0x18a2('0x4a'),_0x3157af);};AGIChannel['prototype']['error']=function(_0x5e6111,_0x57eca3){this['noop'](util[_0x18a2('0x28')](_0x18a2('0x4b'),_0x5e6111['id'],_0x5e6111[_0x18a2('0x4c')],_0x57eca3));return{'code':0x1f4,'result':'-1','extra':''};};module['exports']=AGIChannel;
\ No newline at end of file
index 5e23a27..5e68ac1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc806=['Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20timeout.','E_AGI_UNDEFINED','push','format','exports','util','Undefined\x20error.'];(function(_0xc90c7c,_0x21f2ad){var _0x37f391=function(_0x3aa963){while(--_0x3aa963){_0xc90c7c['push'](_0xc90c7c['shift']());}};_0x37f391(++_0x21f2ad);}(_0xc806,0x112));var _0x6c80=function(_0x2c9700,_0x2c6c4d){_0x2c9700=_0x2c9700-0x0;var _0x22f2fa=_0xc806[_0x2c9700];return _0x22f2fa;};'use strict';var util=require(_0x6c80('0x0'));var error={'E_AGI_UNDEFINED':_0x6c80('0x1'),'E_AGI_ARGUMENT_PORT':'Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','E_AGI_SERVER_ERROR':_0x6c80('0x2'),'E_AGI_SERVER_CLOSE':_0x6c80('0x3'),'E_AGI_SERVER_MAXCONNECTION':_0x6c80('0x4'),'E_AGI_SERVER_VOICE_DISABLED':_0x6c80('0x5'),'E_AGI_SOCKET_ERROR':_0x6c80('0x6'),'E_AGI_SOCKET_CLOSE':'Socket\x20closed.','E_AGI_SOCKET_TIMEOUT':_0x6c80('0x7'),'E_AGI_COMMAND_EMPTY':'Empty\x20command.','E_AGI_IVR_AGI_NETWORK_SCRIPT':'Missing\x20\x27ivr.agi_network_script\x27.','E_AGI_IVR_ENTRY':'Missing\x20\x27ivr.entry\x27\x20menu.'};function AGIError(_0x1778c0){var _0x1778c0=_0x1778c0||null,_0x25b7dd=_0x25b7dd||[],_0x5cb22c=0x1,_0x58d6f9='';if(!error[_0x1778c0]){_0x1778c0=_0x6c80('0x8');}_0x25b7dd['push'](error[_0x1778c0]);while(arguments[_0x5cb22c]){_0x25b7dd[_0x6c80('0x9')](arguments[_0x5cb22c]);_0x5cb22c++;}_0x58d6f9=util[_0x6c80('0xa')]['apply'](util,_0x25b7dd);this['message']=_0x58d6f9;this['name']=_0x1778c0;}module[_0x6c80('0xb')]=AGIError;
\ No newline at end of file
+var _0x2e31=['Undefined\x20error.','Server\x20error.\x20Code:\x20%s.','Server\x20closed.','[LICENSE\x20VOICE]\x20Server\x20license\x20voice\x20disabled.','Socket\x20error.\x20Code:\x20%s.','Socket\x20closed.','Empty\x20command.','Missing\x20\x27ivr.agi_network_script\x27.','push','format','apply','message','name','exports','util'];(function(_0x3cf917,_0x571d9b){var _0x2c119f=function(_0x17f14c){while(--_0x17f14c){_0x3cf917['push'](_0x3cf917['shift']());}};_0x2c119f(++_0x571d9b);}(_0x2e31,0x12b));var _0x12e3=function(_0xde5456,_0x5ea047){_0xde5456=_0xde5456-0x0;var _0x5e5579=_0x2e31[_0xde5456];return _0x5e5579;};'use strict';var util=require(_0x12e3('0x0'));var error={'E_AGI_UNDEFINED':_0x12e3('0x1'),'E_AGI_ARGUMENT_PORT':'Argument\x20\x27port\x27\x20missing\x20in\x20function\x20call.','E_AGI_SERVER_ERROR':_0x12e3('0x2'),'E_AGI_SERVER_CLOSE':_0x12e3('0x3'),'E_AGI_SERVER_MAXCONNECTION':'[LICENSE]\x20Server\x20max\x20connection.\x20Count:\x20%s.','E_AGI_SERVER_VOICE_DISABLED':_0x12e3('0x4'),'E_AGI_SOCKET_ERROR':_0x12e3('0x5'),'E_AGI_SOCKET_CLOSE':_0x12e3('0x6'),'E_AGI_SOCKET_TIMEOUT':'Socket\x20timeout.','E_AGI_COMMAND_EMPTY':_0x12e3('0x7'),'E_AGI_IVR_AGI_NETWORK_SCRIPT':_0x12e3('0x8'),'E_AGI_IVR_ENTRY':'Missing\x20\x27ivr.entry\x27\x20menu.'};function AGIError(_0x347d68){var _0x347d68=_0x347d68||null,_0x6e174e=_0x6e174e||[],_0x4c059c=0x1,_0x5e15c0='';if(!error[_0x347d68]){_0x347d68='E_AGI_UNDEFINED';}_0x6e174e[_0x12e3('0x9')](error[_0x347d68]);while(arguments[_0x4c059c]){_0x6e174e[_0x12e3('0x9')](arguments[_0x4c059c]);_0x4c059c++;}_0x5e15c0=util[_0x12e3('0xa')][_0x12e3('0xb')](util,_0x6e174e);this[_0x12e3('0xc')]=_0x5e15c0;this[_0x12e3('0xd')]=_0x347d68;}module[_0x12e3('0xe')]=AGIError;
\ No newline at end of file
diff --git a/server/services/agi/events.js b/server/services/agi/events.js
new file mode 100644 (file)
index 0000000..3b0cac0
--- /dev/null
@@ -0,0 +1,18 @@
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: info@xcally.com                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
+// *                                                                       *
+// *************************************************************************
+var _0xf7cc=['../../config/environment','localhost','redis','subscribe','emit','error','agi','projectUpdate','E_AGI_SERVER_ERROR','exports','lodash','events','EventEmitter','./error'];(function(_0x229358,_0x22394c){var _0x2fd88a=function(_0x335b52){while(--_0x335b52){_0x229358['push'](_0x229358['shift']());}};_0x2fd88a(++_0x22394c);}(_0xf7cc,0x176));var _0xcf7c=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0xf7cc[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0xcf7c('0x0'));var EventEmitter=require(_0xcf7c('0x1'))[_0xcf7c('0x2')];var Redis=require('ioredis');var AGIError=require(_0xcf7c('0x3'));var config=require(_0xcf7c('0x4'));config['redis']=_['defaults'](config['redis'],{'host':_0xcf7c('0x5'),'port':0x18eb});var eventEmitter=new EventEmitter();var sub=new Redis(config[_0xcf7c('0x6')]);sub[_0xcf7c('0x7')]('agi',function(_0x13eb04){if(_0x13eb04)return eventEmitter[_0xcf7c('0x8')](_0xcf7c('0x9'),new AGIError('E_AGI_SERVER_ERROR',_0x13eb04));});sub['on']('message',function(_0xc86c3a,_0x59db2d){if(_0xc86c3a!==_0xcf7c('0xa'))return;try{var _0x43f8ef=JSON['parse'](_0x59db2d);eventEmitter[_0xcf7c('0x8')](_0xcf7c('0xb'),_0x43f8ef);}catch(_0x4b5862){eventEmitter[_0xcf7c('0x8')](_0xcf7c('0x9'),new AGIError(_0xcf7c('0xc'),_0x4b5862));}});module[_0xcf7c('0xd')]={'EventEmitter':eventEmitter};
\ No newline at end of file
index 5515302..169f950 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x899d=['invalid','agicommand','default\x20on\x20switch\x20not\x20found','includes','max\x20retry\x20reach','condition\x20not\x20found','lodash','../../../config/logger','agi','menu','getsecretdigits','vertices','edges','numberOfEdges','prototype','addEdge','size','relations','getVertex','traverseBFS','info','stop\x20traverse','no\x20edge/s\x20available','length','condition','vswitch','default','target'];(function(_0x1d89c3,_0x9c8b86){var _0x308a10=function(_0x295c51){while(--_0x295c51){_0x1d89c3['push'](_0x1d89c3['shift']());}};_0x308a10(++_0x9c8b86);}(_0x899d,0xca));var _0xd899=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x899d[_0x2641f9];return _0x585741;};'use strict';var _=require(_0xd899('0x0'));var logger=require(_0xd899('0x1'))(_0xd899('0x2'));var verticesWithRetry=[_0xd899('0x3'),'getdigits',_0xd899('0x4')];var Graph=function(){this[_0xd899('0x5')]={};this[_0xd899('0x6')]={};this[_0xd899('0x7')]=0x0;};Graph[_0xd899('0x8')]['addVertex']=function(_0x5323af){this[_0xd899('0x5')][_0x5323af['id']]=_0x5323af;this[_0xd899('0x6')][_0x5323af['id']]=[];};Graph[_0xd899('0x8')][_0xd899('0x9')]=function(_0x2e4f7d,_0x29a88c,_0x52660f){this['edges'][_0x2e4f7d]['push']({'target':_0x29a88c,'condition':_0x52660f});this[_0xd899('0x7')]+=0x1;};Graph[_0xd899('0x8')][_0xd899('0xa')]=function(){return _[_0xd899('0xa')](this[_0xd899('0x5')]);};Graph[_0xd899('0x8')][_0xd899('0xb')]=function(){return this['numberOfEdges'];};Graph['prototype'][_0xd899('0xc')]=function(_0x15da6c){return this[_0xd899('0x5')][_0x15da6c];};Graph[_0xd899('0x8')][_0xd899('0xd')]=function(_0x3128c6,_0x58c9d1){if(!this[_0xd899('0x5')][_0x3128c6]){return logger[_0xd899('0xe')]('no\x20vertex\x20found');}var _0x50cbf6=_0x58c9d1(this['vertices'][_0x3128c6]);if(!_0x50cbf6){return logger[_0xd899('0xe')](_0xd899('0xf'));}if(this[_0xd899('0x6')][_0x3128c6]['length']===0x0){return logger['info'](_0xd899('0x10'));}for(var _0x59eea3=0x0,_0x379b09=[],_0x39608b=![];_0x59eea3<this[_0xd899('0x6')][_0x3128c6][_0xd899('0x11')];_0x59eea3+=0x1){if(this[_0xd899('0x6')][_0x3128c6][_0x59eea3][_0xd899('0x12')]){_0x379b09=this[_0xd899('0x6')][_0x3128c6][_0x59eea3][_0xd899('0x12')]['split'](',');for(var _0x199045=0x0;_0x199045<_0x379b09['length'];_0x199045+=0x1){if(this[_0xd899('0x5')][_0x3128c6]['agicommand']===_0xd899('0x13')&&_0x379b09[_0x199045]==='-'){_0x39608b=this[_0xd899('0x6')][_0x3128c6][_0x59eea3]['target'];logger[_0xd899('0xe')](_0xd899('0x14'),_0x379b09[_0x199045],this['edges'][_0x3128c6][_0x59eea3][_0xd899('0x15')]);}else if(this[_0xd899('0x5')][_0x3128c6]['agicommand']===_0xd899('0x3')&&_0x379b09[_0x199045]==='i'){_0x39608b=this[_0xd899('0x6')][_0x3128c6][_0x59eea3]['target'];logger['info'](_0xd899('0x16'),_0x379b09[_0x199045],this[_0xd899('0x6')][_0x3128c6][_0x59eea3][_0xd899('0x15')]);}if(_0x379b09[_0x199045]===_0x50cbf6){return this['traverseBFS'](this[_0xd899('0x6')][_0x3128c6][_0x59eea3]['target'],_0x58c9d1);}}}else{return this[_0xd899('0xd')](this[_0xd899('0x6')][_0x3128c6][_0x59eea3][_0xd899('0x15')],_0x58c9d1);}}if(_0x379b09[_0xd899('0x11')]){if(this[_0xd899('0x5')][_0x3128c6][_0xd899('0x17')]===_0xd899('0x13')){if(_0x39608b){return this['traverseBFS'](_0x39608b,_0x58c9d1);}return logger[_0xd899('0xe')](_0xd899('0x18'));}else if(_[_0xd899('0x19')](verticesWithRetry,this[_0xd899('0x5')][_0x3128c6]['agicommand'])){if(_0x50cbf6==='-'){return logger[_0xd899('0xe')](_0xd899('0x1a'));}if(_0x39608b&&_0x50cbf6!=='t'){return this[_0xd899('0xd')](_0x39608b,_0x58c9d1);}return this['traverseBFS'](_0x3128c6,_0x58c9d1);}return logger[_0xd899('0xe')](_0xd899('0x1b'));}};module['exports']=Graph;
\ No newline at end of file
+var _0x219a=['agi','menu','getdigits','getsecretdigits','vertices','edges','numberOfEdges','prototype','addVertex','addEdge','size','getVertex','traverseBFS','info','stop\x20traverse','length','condition','agicommand','vswitch','target','default\x20on\x20switch\x20not\x20found','includes','condition\x20not\x20found','exports','lodash','../../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x219a,0x184));var _0xa219=function(_0x192811,_0x64f019){_0x192811=_0x192811-0x0;var _0x3b480b=_0x219a[_0x192811];return _0x3b480b;};'use strict';var _=require(_0xa219('0x0'));var logger=require(_0xa219('0x1'))(_0xa219('0x2'));var verticesWithRetry=[_0xa219('0x3'),_0xa219('0x4'),_0xa219('0x5')];var Graph=function(){this[_0xa219('0x6')]={};this[_0xa219('0x7')]={};this[_0xa219('0x8')]=0x0;};Graph[_0xa219('0x9')][_0xa219('0xa')]=function(_0x3c5cc9){this[_0xa219('0x6')][_0x3c5cc9['id']]=_0x3c5cc9;this[_0xa219('0x7')][_0x3c5cc9['id']]=[];};Graph[_0xa219('0x9')][_0xa219('0xb')]=function(_0xf9bf06,_0x46d48c,_0x191ce7){this[_0xa219('0x7')][_0xf9bf06]['push']({'target':_0x46d48c,'condition':_0x191ce7});this[_0xa219('0x8')]+=0x1;};Graph[_0xa219('0x9')]['size']=function(){return _[_0xa219('0xc')](this[_0xa219('0x6')]);};Graph[_0xa219('0x9')]['relations']=function(){return this[_0xa219('0x8')];};Graph['prototype'][_0xa219('0xd')]=function(_0x444412){return this[_0xa219('0x6')][_0x444412];};Graph[_0xa219('0x9')][_0xa219('0xe')]=function(_0xc43cd9,_0x4ce5b8){if(!this[_0xa219('0x6')][_0xc43cd9]){return logger['info']('no\x20vertex\x20found');}var _0x47ba40=_0x4ce5b8(this[_0xa219('0x6')][_0xc43cd9]);if(!_0x47ba40){return logger[_0xa219('0xf')](_0xa219('0x10'));}if(this[_0xa219('0x7')][_0xc43cd9][_0xa219('0x11')]===0x0){return logger[_0xa219('0xf')]('no\x20edge/s\x20available');}for(var _0x510dad=0x0,_0x3108ce=[],_0x595cb7=![];_0x510dad<this[_0xa219('0x7')][_0xc43cd9][_0xa219('0x11')];_0x510dad+=0x1){if(this['edges'][_0xc43cd9][_0x510dad][_0xa219('0x12')]){_0x3108ce=this[_0xa219('0x7')][_0xc43cd9][_0x510dad][_0xa219('0x12')]['split'](',');for(var _0x48da99=0x0;_0x48da99<_0x3108ce[_0xa219('0x11')];_0x48da99+=0x1){if(this[_0xa219('0x6')][_0xc43cd9][_0xa219('0x13')]===_0xa219('0x14')&&_0x3108ce[_0x48da99]==='-'){_0x595cb7=this[_0xa219('0x7')][_0xc43cd9][_0x510dad][_0xa219('0x15')];logger['info']('default',_0x3108ce[_0x48da99],this[_0xa219('0x7')][_0xc43cd9][_0x510dad][_0xa219('0x15')]);}else if(this[_0xa219('0x6')][_0xc43cd9]['agicommand']===_0xa219('0x3')&&_0x3108ce[_0x48da99]==='i'){_0x595cb7=this[_0xa219('0x7')][_0xc43cd9][_0x510dad][_0xa219('0x15')];logger[_0xa219('0xf')]('invalid',_0x3108ce[_0x48da99],this[_0xa219('0x7')][_0xc43cd9][_0x510dad][_0xa219('0x15')]);}if(_0x3108ce[_0x48da99]===_0x47ba40){return this[_0xa219('0xe')](this[_0xa219('0x7')][_0xc43cd9][_0x510dad][_0xa219('0x15')],_0x4ce5b8);}}}else{return this[_0xa219('0xe')](this['edges'][_0xc43cd9][_0x510dad][_0xa219('0x15')],_0x4ce5b8);}}if(_0x3108ce[_0xa219('0x11')]){if(this[_0xa219('0x6')][_0xc43cd9][_0xa219('0x13')]===_0xa219('0x14')){if(_0x595cb7){return this['traverseBFS'](_0x595cb7,_0x4ce5b8);}return logger[_0xa219('0xf')](_0xa219('0x16'));}else if(_[_0xa219('0x17')](verticesWithRetry,this['vertices'][_0xc43cd9][_0xa219('0x13')])){if(_0x47ba40==='-'){return logger[_0xa219('0xf')]('max\x20retry\x20reach');}if(_0x595cb7&&_0x47ba40!=='t'){return this['traverseBFS'](_0x595cb7,_0x4ce5b8);}return this['traverseBFS'](_0xc43cd9,_0x4ce5b8);}return logger[_0xa219('0xf')](_0xa219('0x18'));}};module[_0xa219('0x19')]=Graph;
\ No newline at end of file
index ddaa7bc..d1aac72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2907=['addVertex','omit','hasOwnProperty','length','source','target','addEdge','value','getSquareProject','catch','createSquareReport','then','indexOf','agi_','substring','debug','variables','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','callerid','close','timeout','hangup','sync','production','start','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','traverseBFS','clear','stringify','gotoc','gotoc\x20block\x20stop\x20traverse\x20BFS','context','extension','priority','response','code','result','toString','agicommand\x20not\x20found','stack','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','vertex','[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','getLicense','voice','[LICENSE]\x20CHANNELS:\x20%s','callysquare','[LICENSE]\x20CHANNELS:\x20UNLIMITED','./server','listening','connection','xml2json','lodash','syncho','util','../../config/environment','agi','../../config/license/util','./rpc','./graph','nextTick','error','log','Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!','port','info','format','name','[%s]\x20%s','message','[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','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','dnid','uniqueid','[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','evtHangup','mxGraphModel','root','agicommand','retry','maxRetry'];(function(_0x4b3d6e,_0x3c51c8){var _0x2d7765=function(_0x406417){while(--_0x406417){_0x4b3d6e['push'](_0x4b3d6e['shift']());}};_0x2d7765(++_0x3c51c8);}(_0x2907,0xf3));var _0x7290=function(_0x484e36,_0x4482d8){_0x484e36=_0x484e36-0x0;var _0xafc85d=_0x2907[_0x484e36];return _0xafc85d;};'use strict';var parser=require(_0x7290('0x0'));var _=require(_0x7290('0x1'));var syncho=require(_0x7290('0x2'));var util=require(_0x7290('0x3'));var moment=require('moment');var config=require(_0x7290('0x4'));var logger=require('../../config/logger')(_0x7290('0x5'));var utilLicense=require(_0x7290('0x6'));var rpc=require(_0x7290('0x7'));var mailRpc=require('./mailRpc');var Graph=require(_0x7290('0x8'));var Vertices=require('./vertices');var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;config[_0x7290('0x5')]=_['defaults'](config['agi'],{'ip':'127.0.0.1','port':0x11dd});function connectionHandler(_0x2eba22){process[_0x7290('0x9')](function(){syncho(function(){try{setChannelVariables(_0x2eba22);agiHandler(_0x2eba22);}catch(_0x570ecb){logger[_0x7290('0xa')](_0x570ecb['stack']);}});});}function listeningHandler(){console[_0x7290('0xb')](_0x7290('0xc'),config[_0x7290('0x5')][_0x7290('0xd')]);logger[_0x7290('0xe')](util[_0x7290('0xf')]('[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d',config[_0x7290('0x5')]['ip'],config[_0x7290('0x5')][_0x7290('0xd')]));}function errorHandler(_0x17f9af){if(_0x17f9af&&_0x17f9af[_0x7290('0x10')]&&_0x17f9af['message']){logger[_0x7290('0xa')](util[_0x7290('0xf')](_0x7290('0x11'),_0x17f9af[_0x7290('0x10')],_0x17f9af[_0x7290('0x12')]));}else{logger[_0x7290('0xa')](util[_0x7290('0xf')](_0x7290('0x13'),_0x17f9af['stack']));}}function closeHandler(){logger['info'](util[_0x7290('0xf')](_0x7290('0x14'),this[_0x7290('0x15')],this[_0x7290('0x16')],this['callerid'],this['dnid'],this['uniqueid']));try{createSquareReport(this);}catch(_0x318af1){logger[_0x7290('0xa')](_0x318af1['stack']);}}function timeoutHandler(){logger[_0x7290('0xe')](util[_0x7290('0xf')](_0x7290('0x17'),this[_0x7290('0x15')],this['calleridname'],this['callerid'],this[_0x7290('0x18')],this[_0x7290('0x19')]));}function hangupHandler(){logger[_0x7290('0xe')](util[_0x7290('0xf')](_0x7290('0x1a'),this[_0x7290('0x15')],this[_0x7290('0x16')],this['callerid'],this[_0x7290('0x18')],this['uniqueid']));this[_0x7290('0x1b')]=!![];}function getRoot(_0x1b1fc9){return parser['toJson'](_0x1b1fc9,{'object':!![]})[_0x7290('0x1c')][_0x7290('0x1d')];}function addVertex(_0x3546be,_0x3fc3,_0x3aacdf){_0x3fc3[_0x7290('0x1e')]=_0x3aacdf;if(_0x3fc3['hasOwnProperty'](_0x7290('0x1f'))){_0x3fc3[_0x7290('0x20')]=parseInt(_0x3fc3[_0x7290('0x1f')],0xa);}_0x3546be[_0x7290('0x21')](_[_0x7290('0x22')](_0x3fc3,'mxCell'));}function initGraph(_0x188461,_0x11d751){var _0x16918e=new Graph();for(var _0x472779 in _0x188461){if(_0x188461[_0x7290('0x23')](_0x472779)){if(_['isArray'](_0x188461[_0x472779])){for(var _0x135c83=0x0;_0x135c83<_0x188461[_0x472779][_0x7290('0x24')];_0x135c83+=0x1){addVertex(_0x16918e,_0x188461[_0x472779][_0x135c83],_0x472779);}}else{addVertex(_0x16918e,_0x188461[_0x472779],_0x472779);}}}for(var _0x21e55d=0x0;_0x21e55d<_0x11d751['length'];_0x21e55d+=0x1){if(_0x11d751[_0x21e55d][_0x7290('0x25')]&&_0x11d751[_0x21e55d][_0x7290('0x26')]){_0x16918e[_0x7290('0x27')](_0x11d751[_0x21e55d][_0x7290('0x25')],_0x11d751[_0x21e55d][_0x7290('0x26')],_0x11d751[_0x21e55d][_0x7290('0x28')]);}}return _0x16918e;}function getSquareProject(_0x1f76b1,_0x416d02){rpc[_0x7290('0x29')](_0x1f76b1)['then'](function(_0x152ecc){_0x416d02(null,_0x152ecc);})[_0x7290('0x2a')](function(_0x60be08){_0x416d02(null,_0x60be08);});}function createSquareReport(_0x2ddeeb,_0x13207e){rpc[_0x7290('0x2b')](_0x2ddeeb)[_0x7290('0x2c')](function(_0x50748a){if(_0x13207e){_0x13207e(null,_0x50748a);}})['catch'](function(_0x39e4cb){if(_0x13207e){_0x13207e(null,_0x39e4cb);}});}function setChannelVariables(_0x25fc44){for(var _0xf60254 in _0x25fc44){if(_0x25fc44[_0x7290('0x23')](_0xf60254)){if(_0xf60254[_0x7290('0x2d')](_0x7290('0x2e'))===0x0){_0x25fc44[_0xf60254[_0x7290('0x2f')](0x4)]=_0x25fc44[_0xf60254];delete _0x25fc44[_0xf60254];}}}}function getLogFromObject(_0x408dd2){return util['inspect'](_0x408dd2,{'showHidden':![],'depth':null});}function agiHandler(_0x269a27){var _0x50c78d,_0x20e76b,_0x2159ae,_0x5b0476,_0x224c4a;logger[_0x7290('0x30')](_0x7290('0x31'),JSON['stringify'](_0x269a27,null,0x2));logger[_0x7290('0xe')](util['format'](_0x7290('0x32'),_0x269a27[_0x7290('0x15')],_0x269a27[_0x7290('0x16')],_0x269a27[_0x7290('0x33')],_0x269a27[_0x7290('0x18')],_0x269a27[_0x7290('0x19')]));_0x269a27['on'](_0x7290('0xa'),errorHandler);_0x269a27['on'](_0x7290('0x34'),closeHandler);_0x269a27['on'](_0x7290('0x35'),timeoutHandler);_0x269a27[_0x7290('0x1b')]=![];_0x269a27['on'](_0x7290('0x36'),hangupHandler);var _0x108cfe=getSquareProject[_0x7290('0x37')](null,_0x269a27['arg_1']);if(_0x108cfe){if(_0x108cfe[_0x7290('0x38')]){_0x50c78d=getRoot(_0x108cfe['production']);if(_0x50c78d&&_0x50c78d[_0x7290('0x39')]){logger[_0x7290('0x30')](_0x7290('0x1d'),JSON['stringify'](_0x50c78d,null,0x2));_0x269a27[_0x7290('0x3a')]=moment()[_0x7290('0xf')](_0x7290('0x3b'));_0x20e76b=initGraph(_[_0x7290('0x22')](_0x50c78d,_0x7290('0x3c')),_0x50c78d[_0x7290('0x3c')]);_0x2159ae=new Vertices(_0x269a27,rpc,mailRpc);logger[_0x7290('0xe')](util['format'](_0x7290('0x3d'),_0x269a27[_0x7290('0x15')],_0x269a27[_0x7290('0x16')],_0x269a27[_0x7290('0x33')],_0x269a27[_0x7290('0x18')],_0x269a27['uniqueid']));_0x20e76b[_0x7290('0x3e')](_0x50c78d[_0x7290('0x39')]['id'],function(_0x32a570){try{_0x32a570=_0x2159ae[_0x7290('0x3f')](_0x32a570);logger[_0x7290('0x30')]('vertex',JSON[_0x7290('0x40')](_0x32a570,null,0x2));if(_0x32a570[_0x7290('0x1e')]===_0x7290('0x41')){logger[_0x7290('0xe')](_0x7290('0x42'));_0x269a27['context']=_0x32a570[_0x7290('0x43')]||_0x269a27[_0x7290('0x43')];_0x269a27[_0x7290('0x44')]=_0x32a570[_0x7290('0x44')];_0x269a27[_0x7290('0x45')]=_0x32a570[_0x7290('0x45')]?_0x32a570[_0x7290('0x45')]-0x1:0x1;return null;}else if(_0x32a570&&_0x2159ae[_0x32a570['agicommand']]){_0x224c4a=_0x2159ae[_0x32a570['agicommand']](_0x32a570);logger[_0x7290('0xe')](_0x7290('0x46'),JSON['stringify'](_0x224c4a,null,0x2));if(_0x224c4a&&_0x224c4a[_0x7290('0x47')]===AGI_CODE_SUCCESS&&_0x224c4a[_0x7290('0x48')]!==AGI_RESULT_ERROR&&!_0x269a27[_0x7290('0x1b')]){logger[_0x7290('0x30')](_0x7290('0x46'),getLogFromObject(_0x224c4a));return _['isUndefined'](_0x224c4a['result'])?null:_0x224c4a[_0x7290('0x48')][_0x7290('0x49')]();}else{logger[_0x7290('0xa')](_0x7290('0x46'),getLogFromObject(_0x224c4a));return null;}}else{logger['error'](_0x7290('0x4a'));return null;}}catch(_0x129f8b){logger[_0x7290('0xa')](_0x129f8b[_0x7290('0x4b')]);return null;}});if(_0x50c78d[_0x7290('0x4c')]){logger['info'](util[_0x7290('0xf')](_0x7290('0x4d'),_0x269a27[_0x7290('0x15')],_0x269a27[_0x7290('0x16')],_0x269a27['callerid'],_0x269a27['dnid'],_0x269a27[_0x7290('0x19')]));_0x20e76b[_0x7290('0x3e')](_0x50c78d[_0x7290('0x4c')]['id'],function(_0x902eab){try{_0x902eab=_0x2159ae['clear'](_0x902eab);logger[_0x7290('0x30')](_0x7290('0x4e'),JSON['stringify'](_0x902eab,null,0x2));if(_0x902eab&&_0x2159ae[_0x902eab[_0x7290('0x1e')]]){_0x224c4a=_0x2159ae[_0x902eab[_0x7290('0x1e')]](_0x902eab);if(_0x224c4a){logger[_0x7290('0x30')](_0x7290('0x46'),getLogFromObject(_0x224c4a));return _['isUndefined'](_0x224c4a[_0x7290('0x48')])?null:_0x224c4a[_0x7290('0x48')]['toString']();}else{logger[_0x7290('0xa')](_0x7290('0x46'),getLogFromObject(_0x224c4a));return null;}}else{logger['error'](_0x7290('0x4a'));return null;}}catch(_0x1f2a88){logger[_0x7290('0xa')](_0x1f2a88[_0x7290('0x4b')]);return null;}});}logger['info'](util[_0x7290('0xf')](_0x7290('0x4f'),_0x269a27[_0x7290('0x15')],_0x269a27[_0x7290('0x16')],_0x269a27[_0x7290('0x33')],_0x269a27['dnid'],_0x269a27['uniqueid']));logger[_0x7290('0xe')](util[_0x7290('0xf')](_0x7290('0x50'),_0x269a27['context'],_0x269a27[_0x7290('0x44')],parseInt(_0x269a27[_0x7290('0x45')],0xa)+0x1));_0x269a27[_0x7290('0x51')](_0x269a27[_0x7290('0x43')],_0x269a27[_0x7290('0x44')],parseInt(_0x269a27[_0x7290('0x45')],0xa)+0x1);_0x269a27['close']();}}else{logger['error'](util[_0x7290('0xf')](_0x7290('0x52'),_0x269a27['arg_1']));_0x269a27[_0x7290('0x51')](_0x269a27[_0x7290('0x43')],_0x269a27[_0x7290('0x44')],parseInt(_0x269a27[_0x7290('0x45')],0xa)+0x1);_0x269a27[_0x7290('0x34')]();}}else{logger[_0x7290('0xa')](util[_0x7290('0xf')](_0x7290('0x53'),_0x269a27[_0x7290('0x15')]));_0x269a27[_0x7290('0x51')](_0x269a27[_0x7290('0x43')],_0x269a27[_0x7290('0x44')],parseInt(_0x269a27['priority'],0xa)+0x1);_0x269a27[_0x7290('0x34')]();}}function main(){var _0x305374;return utilLicense[_0x7290('0x54')]()[_0x7290('0x2c')](function(_0x170658){if(_0x170658){if(_0x170658[_0x7290('0x55')]){if(_0x170658['callysquare']&&_0x170658['callysquare']>0x0){logger[_0x7290('0xe')](util[_0x7290('0xf')](_0x7290('0x56'),_0x170658[_0x7290('0x57')]));_0x305374=_0x170658[_0x7290('0x57')];}else{logger[_0x7290('0xe')](_0x7290('0x58'));}}else{logger[_0x7290('0xe')]('[LICENSE]\x20VOICE\x20IS\x20DISABLED');_0x305374=-0x1;}}})[_0x7290('0x2a')](function(_0x30d0ab){logger[_0x7290('0xa')]('[LICENSE]',_0x30d0ab[_0x7290('0x4b')]);})[_0x7290('0x4c')](function(){var _0xf862fe=require(_0x7290('0x59'))(config[_0x7290('0x5')][_0x7290('0xd')],config[_0x7290('0x5')]['ip'],_0x305374);_0xf862fe['on'](_0x7290('0xa'),errorHandler);_0xf862fe['on'](_0x7290('0x5a'),listeningHandler);_0xf862fe['on'](_0x7290('0x5b'),connectionHandler);_0xf862fe['on'](_0x7290('0x34'),closeHandler);});}main();
\ No newline at end of file
+var _0x601e=['debug','variables','stringify','[START]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','find','handleNotFound','production','handleUnpublished','getLicense','voice','callysquare','[LICENSE]\x20CHANNELS:\x20%s','[LICENSE]\x20CHANNELS:\x20UNLIMITED','[LICENSE]\x20VOICE\x20IS\x20DISABLED','getAll','finally','./server','listening','close','syncho','util','../../config/environment','../../config/logger','../../config/license/util','./project','EventEmitter','agi','defaults','projectUpdate','nextTick','error','stack','findIndex','deleted','splice','push','log','port','format','[LISTENING]\x20Cally\x20Square\x20listening\x20%s:%d','name','message','[%s]\x20%s','calleridname','callerid','uniqueid','info','[TIMEOUT]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','arg_1','dnid','evtHangup','createSquareReport','then','catch','indexOf','agi_','substring'];(function(_0x8a938e,_0x1397e6){var _0x22b55f=function(_0x5adfdd){while(--_0x5adfdd){_0x8a938e['push'](_0x8a938e['shift']());}};_0x22b55f(++_0x1397e6);}(_0x601e,0x1db));var _0xe601=function(_0x4ba380,_0x259bee){_0x4ba380=_0x4ba380-0x0;var _0x4b111b=_0x601e[_0x4ba380];return _0x4b111b;};'use strict';var _=require('lodash');var syncho=require(_0xe601('0x0'));var util=require(_0xe601('0x1'));var config=require(_0xe601('0x2'));var logger=require(_0xe601('0x3'))('agi');var utilLicense=require(_0xe601('0x4'));var rpc=require('./rpc');var Project=require(_0xe601('0x5'));var AGIEmitter=require('./events')[_0xe601('0x6')];var projects=[];config[_0xe601('0x7')]=_[_0xe601('0x8')](config[_0xe601('0x7')],{'ip':'127.0.0.1','port':0x11dd});AGIEmitter['on'](_0xe601('0x9'),projectUpdateHandler);function connectionHandler(_0x2e47f9){process[_0xe601('0xa')](function(){syncho(function(){try{setChannelVariables(_0x2e47f9);agiHandler(_0x2e47f9);}catch(_0xa54190){logger[_0xe601('0xb')](_0xa54190[_0xe601('0xc')]);}});});}function projectUpdateHandler(_0x1eca62){try{var _0x24f362=_[_0xe601('0xd')](projects,['id',_0x1eca62['id']]);if(_0x24f362>-0x1){if(_0x1eca62[_0xe601('0xe')]===!![]){projects[_0xe601('0xf')](_0x24f362,0x1);}else{projects[_0x24f362]=_0x1eca62;}}else{projects[_0xe601('0x10')](_0x1eca62);}}catch(_0x5000ac){logger[_0xe601('0xb')](_0x5000ac['stack']);}}function listeningHandler(){console[_0xe601('0x11')]('Cally\x20Square\x20server\x20listening\x20on\x20port\x20%d!',config['agi'][_0xe601('0x12')]);logger['info'](util[_0xe601('0x13')](_0xe601('0x14'),config[_0xe601('0x7')]['ip'],config[_0xe601('0x7')]['port']));}function errorHandler(_0x143514){if(_0x143514&&_0x143514[_0xe601('0x15')]&&_0x143514[_0xe601('0x16')]){logger[_0xe601('0xb')](util[_0xe601('0x13')](_0xe601('0x17'),_0x143514['name'],_0x143514[_0xe601('0x16')]));}else{logger[_0xe601('0xb')](util[_0xe601('0x13')]('[ERROR]\x20%s',_0x143514[_0xe601('0xc')]));}}function closeHandler(){logger['info'](util[_0xe601('0x13')]('[CLOSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this['arg_1'],this[_0xe601('0x18')],this[_0xe601('0x19')],this['dnid'],this[_0xe601('0x1a')]));try{createSquareReport(this);}catch(_0xe0ac73){logger[_0xe601('0xb')](_0xe0ac73['stack']);}}function timeoutHandler(){logger[_0xe601('0x1b')](util[_0xe601('0x13')](_0xe601('0x1c'),this[_0xe601('0x1d')],this[_0xe601('0x18')],this['callerid'],this[_0xe601('0x1e')],this['uniqueid']));}function hangupHandler(){logger[_0xe601('0x1b')](util[_0xe601('0x13')]('[HANGUP]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',this[_0xe601('0x1d')],this['calleridname'],this['callerid'],this['dnid'],this[_0xe601('0x1a')]));this[_0xe601('0x1f')]=!![];}function createSquareReport(_0xea3400,_0x23d509){rpc[_0xe601('0x20')](_0xea3400)[_0xe601('0x21')](function(_0x169248){if(_0x23d509){_0x23d509(null,_0x169248);}})[_0xe601('0x22')](function(_0x235093){if(_0x23d509){_0x23d509(null,_0x235093);}});}function setChannelVariables(_0x2182a8){for(var _0x1199fe in _0x2182a8){if(_0x2182a8['hasOwnProperty'](_0x1199fe)){if(_0x1199fe[_0xe601('0x23')](_0xe601('0x24'))===0x0){_0x2182a8[_0x1199fe[_0xe601('0x25')](0x4)]=_0x2182a8[_0x1199fe];delete _0x2182a8[_0x1199fe];}}}}function agiHandler(_0x5425fa){logger[_0xe601('0x26')](_0xe601('0x27'),JSON[_0xe601('0x28')](_0x5425fa,null,0x2));logger[_0xe601('0x1b')](util[_0xe601('0x13')](_0xe601('0x29'),_0x5425fa[_0xe601('0x1d')],_0x5425fa[_0xe601('0x18')],_0x5425fa[_0xe601('0x19')],_0x5425fa[_0xe601('0x1e')],_0x5425fa[_0xe601('0x1a')]));_0x5425fa['on'](_0xe601('0xb'),errorHandler);_0x5425fa['on']('close',closeHandler);_0x5425fa['on']('timeout',timeoutHandler);_0x5425fa[_0xe601('0x1f')]=![];_0x5425fa['on']('hangup',hangupHandler);var _0x55faa3=_[_0xe601('0x2a')](projects,[_0xe601('0x15'),_0x5425fa[_0xe601('0x1d')]]);if(!_0x55faa3)return Project[_0xe601('0x2b')](_0x5425fa);if(!_0x55faa3[_0xe601('0x2c')])return Project[_0xe601('0x2d')](_0x5425fa);return Project['initialize'](_0x55faa3,_0x5425fa);}function main(){var _0x51e5f8;return utilLicense[_0xe601('0x2e')]()['then'](function(_0x159363){if(!_0x159363)return;if(_0x159363[_0xe601('0x2f')]){if(_0x159363[_0xe601('0x30')]&&_0x159363[_0xe601('0x30')]>0x0){logger['info'](util['format'](_0xe601('0x31'),_0x159363[_0xe601('0x30')]));_0x51e5f8=_0x159363[_0xe601('0x30')];}else{logger[_0xe601('0x1b')](_0xe601('0x32'));}}else{logger[_0xe601('0x1b')](_0xe601('0x33'));_0x51e5f8=-0x1;}})[_0xe601('0x21')](function(){return Project[_0xe601('0x34')]();})[_0xe601('0x21')](function(_0xb392e4){projects=_0xb392e4;return;})['catch'](function(_0x19070a){logger[_0xe601('0xb')]('[LICENSE]',_0x19070a['stack']);})[_0xe601('0x35')](function(){var _0x2193c2=require(_0xe601('0x36'))(config[_0xe601('0x7')][_0xe601('0x12')],config[_0xe601('0x7')]['ip'],_0x51e5f8);_0x2193c2['on'](_0xe601('0xb'),errorHandler);_0x2193c2['on'](_0xe601('0x37'),listeningHandler);_0x2193c2['on']('connection',connectionHandler);_0x2193c2['on'](_0xe601('0x38'),closeHandler);});}main();
\ No newline at end of file
index 24e5481..6b68dbd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x57c4=['bluebird','jayson/promise','http','request','error','result','catch','sendMailMessage','SendMail'];(function(_0x515afd,_0x1a1e91){var _0x536d53=function(_0x1d3a89){while(--_0x1d3a89){_0x515afd['push'](_0x515afd['shift']());}};_0x536d53(++_0x1a1e91);}(_0x57c4,0x1cb));var _0x457c=function(_0x1dc93a,_0x4ef571){_0x1dc93a=_0x1dc93a-0x0;var _0x279266=_0x57c4[_0x1dc93a];return _0x279266;};'use strict';var BPromise=require(_0x457c('0x0'));var jayson=require(_0x457c('0x1'));var client=jayson['client'][_0x457c('0x2')]({'port':0x232b});function request(_0x3dcf20,_0x1177d7){return new BPromise(function(_0x433de1,_0x14c775){return client[_0x457c('0x3')](_0x3dcf20,_0x1177d7)['then'](function(_0x523f32){if(_0x523f32[_0x457c('0x4')]){return _0x14c775(_0x523f32['error']['message']);}else{return _0x433de1(_0x523f32[_0x457c('0x5')]);}})[_0x457c('0x6')](function(_0x1bad72){return _0x14c775(_0x1bad72);});});}exports[_0x457c('0x7')]=function(_0x56e53c,_0x351a9c){return request(_0x457c('0x8'),{'account':_0x56e53c,'message':_0x351a9c});};
\ No newline at end of file
+var _0xa31d=['SendMail','bluebird','jayson/promise','client','http','request','error','message','result','sendMailMessage'];(function(_0xee3c05,_0x5c27c6){var _0x2b2f62=function(_0x1b0591){while(--_0x1b0591){_0xee3c05['push'](_0xee3c05['shift']());}};_0x2b2f62(++_0x5c27c6);}(_0xa31d,0x17d));var _0xda31=function(_0x16a223,_0x31b6e8){_0x16a223=_0x16a223-0x0;var _0x5ded66=_0xa31d[_0x16a223];return _0x5ded66;};'use strict';var BPromise=require(_0xda31('0x0'));var jayson=require(_0xda31('0x1'));var client=jayson[_0xda31('0x2')][_0xda31('0x3')]({'port':0x232b});function request(_0x58fa9d,_0x31ebc5){return new BPromise(function(_0x1e1471,_0x425ecd){return client[_0xda31('0x4')](_0x58fa9d,_0x31ebc5)['then'](function(_0x2a68d5){if(_0x2a68d5['error']){return _0x425ecd(_0x2a68d5[_0xda31('0x5')][_0xda31('0x6')]);}else{return _0x1e1471(_0x2a68d5[_0xda31('0x7')]);}})['catch'](function(_0x5e04c7){return _0x425ecd(_0x5e04c7);});});}exports[_0xda31('0x8')]=function(_0x4c62de,_0x21b1dd){return request(_0xda31('0x9'),{'account':_0x4c62de,'message':_0x21b1dd});};
\ No newline at end of file
diff --git a/server/services/agi/project.js b/server/services/agi/project.js
new file mode 100644 (file)
index 0000000..7b83ac1
--- /dev/null
@@ -0,0 +1,18 @@
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: info@xcally.com                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
+// *                                                                       *
+// *************************************************************************
+var _0xf80a=['uniqueid','traverseBFS','clear','vertex','agicommand','gotoc','info','context','extension','priority','response','code','result','evtHangup','isUndefined','toString','finally','[FINALLY\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s','[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','close','Project\x20%s\x20not\x20found','Project\x20%s\x20not\x20published','lodash','xml2json','../../config/logger','./graph','./vertices','catch','error','Unable\x20to\x20download\x20CallySquare\x20projects','stack','retry','maxRetry','mxCell','hasOwnProperty','isArray','length','addEdge','source','value','toJson','mxGraphModel','root','production','start','debug','stringify','joinAt','YYYY-MM-DD\x20HH:mm:ss','omit','format','arg_1','calleridname','callerid','dnid'];(function(_0x365e54,_0x44be74){var _0x13317a=function(_0x2d917f){while(--_0x2d917f){_0x365e54['push'](_0x365e54['shift']());}};_0x13317a(++_0x44be74);}(_0xf80a,0x8a));var _0xaf80=function(_0x592bbf,_0x592f2a){_0x592bbf=_0x592bbf-0x0;var _0x6b3377=_0xf80a[_0x592bbf];return _0x6b3377;};'use strict';var _=require(_0xaf80('0x0'));var moment=require('moment');var parser=require(_0xaf80('0x1'));var util=require('util');var logger=require(_0xaf80('0x2'))('agi');var rpc=require('./rpc');var mailRpc=require('./mailRpc');var Graph=require(_0xaf80('0x3'));var Vertices=require(_0xaf80('0x4'));var AGI_CODE_SUCCESS=0xc8;var AGI_RESULT_ERROR=-0x1;function getAll(){return rpc['getSquareProjects']()[_0xaf80('0x5')](function(_0x4be301){logger[_0xaf80('0x6')](_0xaf80('0x7'),_0x4be301[_0xaf80('0x8')]);return[];});}function addVertex(_0x27df09,_0x3d2ee8,_0x29f061){_0x3d2ee8['agicommand']=_0x29f061;if(_0x3d2ee8['hasOwnProperty'](_0xaf80('0x9'))){_0x3d2ee8[_0xaf80('0xa')]=parseInt(_0x3d2ee8[_0xaf80('0x9')],0xa);}_0x27df09['addVertex'](_['omit'](_0x3d2ee8,_0xaf80('0xb')));}function initGraph(_0x1b36e0,_0x31ed3e){var _0x29020d=new Graph();for(var _0x15f258 in _0x1b36e0){if(_0x1b36e0[_0xaf80('0xc')](_0x15f258)){if(_[_0xaf80('0xd')](_0x1b36e0[_0x15f258])){for(var _0x2ca8b0=0x0;_0x2ca8b0<_0x1b36e0[_0x15f258][_0xaf80('0xe')];_0x2ca8b0+=0x1){addVertex(_0x29020d,_0x1b36e0[_0x15f258][_0x2ca8b0],_0x15f258);}}else{addVertex(_0x29020d,_0x1b36e0[_0x15f258],_0x15f258);}}}for(var _0x2730f8=0x0;_0x2730f8<_0x31ed3e[_0xaf80('0xe')];_0x2730f8+=0x1){if(_0x31ed3e[_0x2730f8]['source']&&_0x31ed3e[_0x2730f8]['target']){_0x29020d[_0xaf80('0xf')](_0x31ed3e[_0x2730f8][_0xaf80('0x10')],_0x31ed3e[_0x2730f8]['target'],_0x31ed3e[_0x2730f8][_0xaf80('0x11')]);}}return _0x29020d;}function getRoot(_0x5ab053){return parser[_0xaf80('0x12')](_0x5ab053,{'object':!![]})[_0xaf80('0x13')][_0xaf80('0x14')];}function inspect(_0x503a55){return util['inspect'](_0x503a55,{'showHidden':![],'depth':null});}function initialize(_0x28bf71,_0x37f66d){var _0x11536b=getRoot(_0x28bf71[_0xaf80('0x15')]);if(!_0x11536b||!_0x11536b[_0xaf80('0x16')])return;var _0x8ca47,_0x568c37,_0x462b7;logger[_0xaf80('0x17')](_0xaf80('0x14'),JSON[_0xaf80('0x18')](_0x11536b,null,0x2));_0x37f66d[_0xaf80('0x19')]=moment()['format'](_0xaf80('0x1a'));_0x8ca47=initGraph(_[_0xaf80('0x1b')](_0x11536b,_0xaf80('0xb')),_0x11536b['mxCell']);_0x568c37=new Vertices(_0x37f66d,rpc,mailRpc);logger['info'](util[_0xaf80('0x1c')]('[START\x20TRAVERSE]\x20%s\x20project:\x20from\x20\x22%s\x22\x20<%s>\x20to\x20extension\x20%s\x20with\x20uniqueid\x20%s',_0x37f66d[_0xaf80('0x1d')],_0x37f66d[_0xaf80('0x1e')],_0x37f66d[_0xaf80('0x1f')],_0x37f66d[_0xaf80('0x20')],_0x37f66d[_0xaf80('0x21')]));_0x8ca47[_0xaf80('0x22')](_0x11536b[_0xaf80('0x16')]['id'],function(_0x1b057c){try{_0x1b057c=_0x568c37[_0xaf80('0x23')](_0x1b057c);logger[_0xaf80('0x17')](_0xaf80('0x24'),JSON[_0xaf80('0x18')](_0x1b057c,null,0x2));if(_0x1b057c[_0xaf80('0x25')]===_0xaf80('0x26')){logger[_0xaf80('0x27')]('gotoc\x20block\x20stop\x20traverse\x20BFS');_0x37f66d[_0xaf80('0x28')]=_0x1b057c['context']||_0x37f66d[_0xaf80('0x28')];_0x37f66d[_0xaf80('0x29')]=_0x1b057c[_0xaf80('0x29')];_0x37f66d[_0xaf80('0x2a')]=_0x1b057c[_0xaf80('0x2a')]?_0x1b057c[_0xaf80('0x2a')]-0x1:0x1;return null;}else if(_0x1b057c&&_0x568c37[_0x1b057c[_0xaf80('0x25')]]){_0x462b7=_0x568c37[_0x1b057c[_0xaf80('0x25')]](_0x1b057c);logger[_0xaf80('0x27')](_0xaf80('0x2b'),JSON['stringify'](_0x462b7,null,0x2));if(_0x462b7&&_0x462b7[_0xaf80('0x2c')]===AGI_CODE_SUCCESS&&_0x462b7[_0xaf80('0x2d')]!==AGI_RESULT_ERROR&&!_0x37f66d[_0xaf80('0x2e')]){logger[_0xaf80('0x17')](_0xaf80('0x2b'),inspect(_0x462b7));return _[_0xaf80('0x2f')](_0x462b7[_0xaf80('0x2d')])?null:_0x462b7[_0xaf80('0x2d')][_0xaf80('0x30')]();}else{logger[_0xaf80('0x6')](_0xaf80('0x2b'),inspect(_0x462b7));return null;}}else{logger[_0xaf80('0x6')]('agicommand\x20not\x20found');return null;}}catch(_0x4a86ff){logger[_0xaf80('0x6')](_0x4a86ff[_0xaf80('0x8')]);return null;}});if(_0x11536b[_0xaf80('0x31')]){logger[_0xaf80('0x27')](util['format'](_0xaf80('0x32'),_0x37f66d[_0xaf80('0x1d')],_0x37f66d[_0xaf80('0x1e')],_0x37f66d['callerid'],_0x37f66d['dnid'],_0x37f66d[_0xaf80('0x21')]));_0x8ca47[_0xaf80('0x22')](_0x11536b[_0xaf80('0x31')]['id'],function(_0x4c4d00){try{_0x4c4d00=_0x568c37[_0xaf80('0x23')](_0x4c4d00);logger[_0xaf80('0x17')](_0xaf80('0x24'),JSON[_0xaf80('0x18')](_0x4c4d00,null,0x2));if(_0x4c4d00&&_0x568c37[_0x4c4d00['agicommand']]){_0x462b7=_0x568c37[_0x4c4d00['agicommand']](_0x4c4d00);if(_0x462b7){logger[_0xaf80('0x17')](_0xaf80('0x2b'),inspect(_0x462b7));return _[_0xaf80('0x2f')](_0x462b7[_0xaf80('0x2d')])?null:_0x462b7[_0xaf80('0x2d')][_0xaf80('0x30')]();}else{logger[_0xaf80('0x6')]('response',inspect(_0x462b7));return null;}}else{logger[_0xaf80('0x6')]('agicommand\x20not\x20found');return null;}}catch(_0x3282f1){logger[_0xaf80('0x6')](_0x3282f1[_0xaf80('0x8')]);return null;}});}logger[_0xaf80('0x27')](util['format'](_0xaf80('0x33'),_0x37f66d[_0xaf80('0x1d')],_0x37f66d[_0xaf80('0x1e')],_0x37f66d[_0xaf80('0x1f')],_0x37f66d[_0xaf80('0x20')],_0x37f66d[_0xaf80('0x21')]));logger['info'](util[_0xaf80('0x1c')](_0xaf80('0x34'),_0x37f66d[_0xaf80('0x28')],_0x37f66d[_0xaf80('0x29')],parseInt(_0x37f66d[_0xaf80('0x2a')],0xa)+0x1));_0x37f66d[_0xaf80('0x35')](_0x37f66d[_0xaf80('0x28')],_0x37f66d[_0xaf80('0x29')],parseInt(_0x37f66d[_0xaf80('0x2a')],0xa)+0x1);_0x37f66d[_0xaf80('0x36')]();}function handleNotFound(_0x4016cc){logger[_0xaf80('0x6')](util['format'](_0xaf80('0x37'),_0x4016cc[_0xaf80('0x1d')]));_0x4016cc[_0xaf80('0x35')](_0x4016cc[_0xaf80('0x28')],_0x4016cc['extension'],parseInt(_0x4016cc['priority'],0xa)+0x1);_0x4016cc[_0xaf80('0x36')]();}function handleUnpublished(_0x51077a){logger[_0xaf80('0x6')](util[_0xaf80('0x1c')](_0xaf80('0x38'),_0x51077a[_0xaf80('0x1d')]));_0x51077a[_0xaf80('0x35')](_0x51077a[_0xaf80('0x28')],_0x51077a['extension'],parseInt(_0x51077a[_0xaf80('0x2a')],0xa)+0x1);_0x51077a[_0xaf80('0x36')]();}module['exports']={'getAll':getAll,'handleNotFound':handleNotFound,'handleUnpublished':handleUnpublished,'initialize':initialize};
\ No newline at end of file
index 98151cd..97cc4b2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa4c7=['substring','line','util','stream','Transform','call','_localBuffer','_inBody','prototype','_transform','length','split','indexOf','trim','slice','emit'];(function(_0x5d78f0,_0x3784f9){var _0x4d1012=function(_0x23d0ba){while(--_0x23d0ba){_0x5d78f0['push'](_0x5d78f0['shift']());}};_0x4d1012(++_0x3784f9);}(_0xa4c7,0x182));var _0x7a4c=function(_0x44f76b,_0x42b8bb){_0x44f76b=_0x44f76b-0x0;var _0x1c8de1=_0xa4c7[_0x44f76b];return _0x1c8de1;};'use strict';var util=require(_0x7a4c('0x0'));var Transform=require(_0x7a4c('0x1'))[_0x7a4c('0x2')];function AGIReply(_0x1c142a){Transform[_0x7a4c('0x3')](this,_0x1c142a);this[_0x7a4c('0x4')]='';this[_0x7a4c('0x5')]=![];}util['inherits'](AGIReply,Transform);AGIReply[_0x7a4c('0x6')][_0x7a4c('0x7')]=function(_0x27b3bb,_0x21029b,_0x9e9f54){var _0x42d933='\x0a',_0x2d0fdb=['\x0a\x0a','\x0d\x0a\x0d\x0a'],_0x31be5e=-0x1,_0x39e98d=-0x1,_0x2bc0ba='',_0x1ed988=0x0,_0x13d52c='',_0x125d6f='';this[_0x7a4c('0x4')]+=_0x27b3bb['toString']();_0x13d52c=this['_localBuffer'];if(!this[_0x7a4c('0x5')]){_0x1ed988=0x0;while(_0x2d0fdb[_0x1ed988]){while((_0x39e98d=_0x13d52c['indexOf'](_0x2d0fdb[_0x1ed988]))!=-0x1){_0x2bc0ba=_0x2d0fdb[_0x1ed988];_0x125d6f=_0x13d52c['substring'](0x0,_0x39e98d);_0x13d52c=_0x13d52c['substring'](_0x39e98d+_0x2bc0ba[_0x7a4c('0x8')]);var _0x24e616=_0x125d6f[_0x7a4c('0x9')](_0x42d933),_0x3f1a33=0x0,_0x3d4754={},_0x1ba35b='',_0x5a0644='',_0x27291c=-0x1;while(_0x24e616[_0x3f1a33]){_0x27291c=_0x24e616[_0x3f1a33][_0x7a4c('0xa')](':');if(_0x27291c!=-0x1){_0x1ba35b=_0x24e616[_0x3f1a33]['slice'](0x0,_0x27291c)[_0x7a4c('0xb')]();_0x5a0644=_0x24e616[_0x3f1a33][_0x7a4c('0xc')](_0x27291c+0x1)[_0x7a4c('0xb')]();if(_0x1ba35b[_0x7a4c('0x8')]>0x0){_0x3d4754[_0x1ba35b]=_0x5a0644;}}else{}_0x3f1a33++;}this[_0x7a4c('0xd')]('headers',_0x3d4754);this[_0x7a4c('0x5')]=!![];}_0x1ed988++;}this['_localBuffer']=_0x13d52c;}else{while((_0x31be5e=_0x13d52c[_0x7a4c('0xa')](_0x42d933))!=-0x1){_0x125d6f=_0x13d52c[_0x7a4c('0xe')](0x0,_0x31be5e);this[_0x7a4c('0xd')](_0x7a4c('0xf'),_0x125d6f);_0x13d52c=_0x13d52c['substring'](_0x31be5e+_0x42d933[_0x7a4c('0x8')]);}this[_0x7a4c('0x4')]=_0x13d52c;}_0x9e9f54();};module['exports']=AGIReply;
\ No newline at end of file
+var _0x6de9=['line','exports','util','stream','Transform','call','_inBody','inherits','_transform','\x0d\x0a\x0d\x0a','_localBuffer','toString','indexOf','substring','length','split','trim','slice','emit'];(function(_0x25e0f0,_0x107a89){var _0x4b75c2=function(_0x1d7574){while(--_0x1d7574){_0x25e0f0['push'](_0x25e0f0['shift']());}};_0x4b75c2(++_0x107a89);}(_0x6de9,0xe6));var _0x96de=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x6de9[_0x3b380d];return _0x54502b;};'use strict';var util=require(_0x96de('0x0'));var Transform=require(_0x96de('0x1'))[_0x96de('0x2')];function AGIReply(_0x69502){Transform[_0x96de('0x3')](this,_0x69502);this['_localBuffer']='';this[_0x96de('0x4')]=![];}util[_0x96de('0x5')](AGIReply,Transform);AGIReply['prototype'][_0x96de('0x6')]=function(_0x16c148,_0x4b61bc,_0x84f9b0){var _0x24da4e='\x0a',_0x20ed57=['\x0a\x0a',_0x96de('0x7')],_0x46afa4=-0x1,_0x48e213=-0x1,_0x8624be='',_0x14fad5=0x0,_0x272ac3='',_0x57c1b7='';this[_0x96de('0x8')]+=_0x16c148[_0x96de('0x9')]();_0x272ac3=this['_localBuffer'];if(!this['_inBody']){_0x14fad5=0x0;while(_0x20ed57[_0x14fad5]){while((_0x48e213=_0x272ac3[_0x96de('0xa')](_0x20ed57[_0x14fad5]))!=-0x1){_0x8624be=_0x20ed57[_0x14fad5];_0x57c1b7=_0x272ac3[_0x96de('0xb')](0x0,_0x48e213);_0x272ac3=_0x272ac3['substring'](_0x48e213+_0x8624be[_0x96de('0xc')]);var _0x2e82bd=_0x57c1b7[_0x96de('0xd')](_0x24da4e),_0x5c6b7a=0x0,_0x5cf3fe={},_0x402493='',_0x1ca945='',_0x54d1bf=-0x1;while(_0x2e82bd[_0x5c6b7a]){_0x54d1bf=_0x2e82bd[_0x5c6b7a]['indexOf'](':');if(_0x54d1bf!=-0x1){_0x402493=_0x2e82bd[_0x5c6b7a]['slice'](0x0,_0x54d1bf)[_0x96de('0xe')]();_0x1ca945=_0x2e82bd[_0x5c6b7a][_0x96de('0xf')](_0x54d1bf+0x1)[_0x96de('0xe')]();if(_0x402493[_0x96de('0xc')]>0x0){_0x5cf3fe[_0x402493]=_0x1ca945;}}else{}_0x5c6b7a++;}this[_0x96de('0x10')]('headers',_0x5cf3fe);this[_0x96de('0x4')]=!![];}_0x14fad5++;}this[_0x96de('0x8')]=_0x272ac3;}else{while((_0x46afa4=_0x272ac3[_0x96de('0xa')](_0x24da4e))!=-0x1){_0x57c1b7=_0x272ac3[_0x96de('0xb')](0x0,_0x46afa4);this[_0x96de('0x10')](_0x96de('0x11'),_0x57c1b7);_0x272ac3=_0x272ac3[_0x96de('0xb')](_0x46afa4+_0x24da4e[_0x96de('0xc')]);}this[_0x96de('0x8')]=_0x272ac3;}_0x84f9b0();};module[_0x96de('0x12')]=AGIReply;
\ No newline at end of file
index b1223d0..1b55017 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf24=['email','getSquareProjectById','getVoiceQueueById','getVariableById','ShowVariable','getSquareOdbcById','dsn','getUserById','ShowUser','GetContactByPhone','ShowTrunk','getSoundById','save_name','getIntervalById','ShowInterval','getSmsAccountById','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','CreateSquareDetailsReport','createSquareReport','CreateSquareReport','arg_1','arg_2','format','YYYY-MM-DD\x20HH:mm:ss','createSquareRecording','createSquareMessage','CreateSquareMessage','ShowCmHopper','phone','ListId','getPauseById','ShowPause','PauseUser','agentUnpause','UnpauseUser','agentLogout','moment','lodash','jayson/promise','http','request','then','error','message','result','getSquareProjects','GetSquareProjects','name','production','getSquareProject','ShowSquareProject','ShowMailAccount','MailServerOut','CloudProvider'];(function(_0x491dac,_0xb9f415){var _0x3a49a4=function(_0x3be846){while(--_0x3be846){_0x491dac['push'](_0x491dac['shift']());}};_0x3a49a4(++_0xb9f415);}(_0xcf24,0x13e));var _0x4cf2=function(_0xf42054,_0xcc6ad8){_0xf42054=_0xf42054-0x0;var _0x4ae962=_0xcf24[_0xf42054];return _0x4ae962;};'use strict';var BPromise=require('bluebird');var moment=require(_0x4cf2('0x0'));var _=require(_0x4cf2('0x1'));var util=require('util');var jayson=require(_0x4cf2('0x2'));var client=jayson['client'][_0x4cf2('0x3')]({'port':0x2329});function request(_0x108f87,_0x75e441){return new BPromise(function(_0x338423,_0x4aef54){return client[_0x4cf2('0x4')](_0x108f87,_0x75e441)[_0x4cf2('0x5')](function(_0x1658d0){if(_0x1658d0[_0x4cf2('0x6')]){return _0x4aef54(_0x1658d0[_0x4cf2('0x6')][_0x4cf2('0x7')]);}else{return _0x338423(_0x1658d0[_0x4cf2('0x8')]);}})['catch'](function(_0x3cc76f){return _0x4aef54(_0x3cc76f);});});}exports[_0x4cf2('0x9')]=function(){return request(_0x4cf2('0xa'),{'options':{'raw':![],'attributes':['id',_0x4cf2('0xb'),_0x4cf2('0xc')]}});};exports[_0x4cf2('0xd')]=function(_0x747929){return request(_0x4cf2('0xe'),{'options':{'raw':![],'where':{'name':_0x747929},'attributes':[_0x4cf2('0xc')]}});};exports['getMailAccountById']=function(_0x204cde){return request(_0x4cf2('0xf'),{'options':{'raw':![],'where':{'id':_0x204cde},'include':[{'model':_0x4cf2('0x10'),'as':'Smtp','include':[{'model':_0x4cf2('0x11'),'as':_0x4cf2('0x11')}]}],'attributes':['id','name',_0x4cf2('0x12')],'smtp':!![]}});};exports[_0x4cf2('0x13')]=function(_0x4c03f7){return request('ShowSquareProject',{'options':{'where':{'id':_0x4c03f7},'attributes':[_0x4cf2('0xb')]}});};exports[_0x4cf2('0x14')]=function(_0x14995a){return request('ShowVoiceQueue',{'options':{'where':{'id':_0x14995a},'attributes':['name']}});};exports[_0x4cf2('0x15')]=function(_0x29e079){return request(_0x4cf2('0x16'),{'options':{'where':{'id':_0x29e079},'attributes':[_0x4cf2('0xb')]}});};exports[_0x4cf2('0x17')]=function(_0x4d6be2){return request('ShowSquareOdbc',{'options':{'where':{'id':_0x4d6be2},'attributes':[_0x4cf2('0x18')]}});};exports[_0x4cf2('0x19')]=function(_0x2c6d41){return request(_0x4cf2('0x1a'),{'options':{'where':{'id':_0x2c6d41},'attributes':[_0x4cf2('0xb')]}});};exports['getContactByPhone']=function(_0x4c91e2){return request(_0x4cf2('0x1b'),{'options':{'where':{'phone':_0x4c91e2['phone']},'attributes':['id']}});};exports['getTrunkById']=function(_0x503e78){return request(_0x4cf2('0x1c'),{'options':{'where':{'id':_0x503e78},'attributes':[_0x4cf2('0xb')]}});};exports[_0x4cf2('0x1d')]=function(_0x389c04){return request('ShowSound',{'options':{'where':{'id':_0x389c04},'attributes':[_0x4cf2('0x1e')]}});};exports[_0x4cf2('0x1f')]=function(_0x305e76){return request(_0x4cf2('0x20'),{'options':{'raw':![],'where':{'id':_0x305e76},'include':[{'model':'Interval','as':'Intervals'}]}});};exports[_0x4cf2('0x21')]=function(_0x577094){return request('ShowSmsAccount',{'options':{'where':{'id':_0x577094},'attributes':['id',_0x4cf2('0xb')]}});};exports[_0x4cf2('0x22')]=function(_0x365e86){return request(_0x4cf2('0x23'),{'body':_0x365e86});};exports[_0x4cf2('0x24')]=function(_0x9c65da){return request(_0x4cf2('0x25'),{'body':_0x9c65da});};exports[_0x4cf2('0x26')]=function(_0xe60e27){return request(_0x4cf2('0x27'),{'body':_['merge'](_0xe60e27,{'project_name':_0xe60e27[_0x4cf2('0x28')],'prev_project_name':_0xe60e27[_0x4cf2('0x29')]||'','is_subproject':_0xe60e27['arg_2']?!![]:![],'leaveAt':moment()[_0x4cf2('0x2a')](_0x4cf2('0x2b'))})});};exports[_0x4cf2('0x2c')]=function(_0x411628){return request('CreateSquareRecording',{'body':_0x411628});};exports[_0x4cf2('0x2d')]=function(_0x3d6ccf){return request(_0x4cf2('0x2e'),{'body':_0x3d6ccf});};exports['createCmContact']=function(_0x176859){return request(_0x4cf2('0x2f'),{'options':{'raw':![],'where':{'phone':_0x176859[_0x4cf2('0x30')],'ListId':_0x176859[_0x4cf2('0x31')]}}})['then'](function(_0x5d05b){if(_0x5d05b){return _0x5d05b;}return request('CreateCmContact',{'body':_0x176859});});};exports[_0x4cf2('0x32')]=function(_0x2e7431){return request(_0x4cf2('0x33'),{'options':{'where':{'id':_0x2e7431},'attributes':['name']}});};exports['agentLogin']=function(_0xd3342b,_0x135a03){return request('LoginUser',{'body':{'interface':_0x135a03},'options':{'where':_0xd3342b}});};exports['agentPause']=function(_0x26fc3f,_0x464be5,_0x59e9b9){return request(_0x4cf2('0x34'),{'body':{'type':_0x464be5,'uniqueid':_0x59e9b9},'options':{'where':_0x26fc3f}});};exports[_0x4cf2('0x35')]=function(_0x5302db){return request(_0x4cf2('0x36'),{'body':{},'options':{'where':_0x5302db}});};exports[_0x4cf2('0x37')]=function(_0x4601df){return request('LogoutUser',{'body':{},'options':{'where':_0x4601df}});};
\ No newline at end of file
+var _0xacb8=['getContactByPhone','getTrunkById','ShowTrunk','ShowSound','save_name','getIntervalById','ShowInterval','Interval','ShowSmsAccount','createSmsMessage','CreateSmsMessage','createSquareDetailsReport','createSquareReport','CreateSquareReport','arg_1','arg_2','format','createSquareRecording','CreateSquareRecording','createSquareMessage','createCmContact','ShowCmHopper','phone','ListId','CreateCmContact','getPauseById','ShowPause','agentLogin','LoginUser','agentPause','PauseUser','UnpauseUser','LogoutUser','lodash','jayson/promise','client','http','request','then','error','message','catch','getSquareProjects','GetSquareProjects','name','production','ShowSquareProject','getMailAccountById','MailServerOut','Smtp','CloudProvider','email','getSquareProjectById','getVoiceQueueById','ShowVoiceQueue','getVariableById','ShowVariable','getSquareOdbcById','ShowSquareOdbc','dsn','getUserById','ShowUser'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0xacb8,0x119));var _0x8acb=function(_0x1e4a4a,_0x625229){_0x1e4a4a=_0x1e4a4a-0x0;var _0x215c1d=_0xacb8[_0x1e4a4a];return _0x215c1d;};'use strict';var _=require(_0x8acb('0x0'));var moment=require('moment');var jayson=require(_0x8acb('0x1'));var client=jayson[_0x8acb('0x2')][_0x8acb('0x3')]({'port':0x2329});function request(_0x51efb3,_0x34a40a){return new Promise(function(_0x458af4,_0x503147){return client[_0x8acb('0x4')](_0x51efb3,_0x34a40a)[_0x8acb('0x5')](function(_0x441d6a){if(_0x441d6a[_0x8acb('0x6')]){return _0x503147(_0x441d6a[_0x8acb('0x6')][_0x8acb('0x7')]);}else{return _0x458af4(_0x441d6a['result']);}})[_0x8acb('0x8')](function(_0x16e318){return _0x503147(_0x16e318);});});}exports[_0x8acb('0x9')]=function(){return request(_0x8acb('0xa'),{'options':{'raw':![],'attributes':['id',_0x8acb('0xb'),_0x8acb('0xc')]}});};exports['getSquareProject']=function(_0x559dd6){return request(_0x8acb('0xd'),{'options':{'raw':![],'where':{'name':_0x559dd6},'attributes':[_0x8acb('0xc')]}});};exports[_0x8acb('0xe')]=function(_0x2d2f42){return request('ShowMailAccount',{'options':{'raw':![],'where':{'id':_0x2d2f42},'include':[{'model':_0x8acb('0xf'),'as':_0x8acb('0x10'),'include':[{'model':'CloudProvider','as':_0x8acb('0x11')}]}],'attributes':['id',_0x8acb('0xb'),_0x8acb('0x12')],'smtp':!![]}});};exports[_0x8acb('0x13')]=function(_0xda02c1){return request('ShowSquareProject',{'options':{'where':{'id':_0xda02c1},'attributes':[_0x8acb('0xb')]}});};exports[_0x8acb('0x14')]=function(_0x2b0fd4){return request(_0x8acb('0x15'),{'options':{'where':{'id':_0x2b0fd4},'attributes':[_0x8acb('0xb')]}});};exports[_0x8acb('0x16')]=function(_0x580151){return request(_0x8acb('0x17'),{'options':{'where':{'id':_0x580151},'attributes':[_0x8acb('0xb')]}});};exports[_0x8acb('0x18')]=function(_0x924d47){return request(_0x8acb('0x19'),{'options':{'where':{'id':_0x924d47},'attributes':[_0x8acb('0x1a')]}});};exports[_0x8acb('0x1b')]=function(_0x2d0635){return request(_0x8acb('0x1c'),{'options':{'where':{'id':_0x2d0635},'attributes':['name']}});};exports[_0x8acb('0x1d')]=function(_0x49dee5){return request('GetContactByPhone',{'options':{'where':{'phone':_0x49dee5['phone']},'attributes':['id']}});};exports[_0x8acb('0x1e')]=function(_0x4bbf34){return request(_0x8acb('0x1f'),{'options':{'where':{'id':_0x4bbf34},'attributes':[_0x8acb('0xb')]}});};exports['getSoundById']=function(_0x23569f){return request(_0x8acb('0x20'),{'options':{'where':{'id':_0x23569f},'attributes':[_0x8acb('0x21')]}});};exports[_0x8acb('0x22')]=function(_0x242eab){return request(_0x8acb('0x23'),{'options':{'raw':![],'where':{'id':_0x242eab},'include':[{'model':_0x8acb('0x24'),'as':'Intervals'}]}});};exports['getSmsAccountById']=function(_0x316258){return request(_0x8acb('0x25'),{'options':{'where':{'id':_0x316258},'attributes':['id',_0x8acb('0xb')]}});};exports[_0x8acb('0x26')]=function(_0x344bde){return request(_0x8acb('0x27'),{'body':_0x344bde});};exports[_0x8acb('0x28')]=function(_0x5b3e8f){return request('CreateSquareDetailsReport',{'body':_0x5b3e8f});};exports[_0x8acb('0x29')]=function(_0x5de59f){return request(_0x8acb('0x2a'),{'body':_['merge'](_0x5de59f,{'project_name':_0x5de59f[_0x8acb('0x2b')],'prev_project_name':_0x5de59f[_0x8acb('0x2c')]||'','is_subproject':_0x5de59f['arg_2']?!![]:![],'leaveAt':moment()[_0x8acb('0x2d')]('YYYY-MM-DD\x20HH:mm:ss')})});};exports[_0x8acb('0x2e')]=function(_0x25e4ec){return request(_0x8acb('0x2f'),{'body':_0x25e4ec});};exports[_0x8acb('0x30')]=function(_0x14954d){return request('CreateSquareMessage',{'body':_0x14954d});};exports[_0x8acb('0x31')]=function(_0x3e184c){return request(_0x8acb('0x32'),{'options':{'raw':![],'where':{'phone':_0x3e184c[_0x8acb('0x33')],'ListId':_0x3e184c[_0x8acb('0x34')]}}})[_0x8acb('0x5')](function(_0x29be92){if(_0x29be92){return _0x29be92;}return request(_0x8acb('0x35'),{'body':_0x3e184c});});};exports[_0x8acb('0x36')]=function(_0x49346b){return request(_0x8acb('0x37'),{'options':{'where':{'id':_0x49346b},'attributes':[_0x8acb('0xb')]}});};exports[_0x8acb('0x38')]=function(_0x181c9c,_0x63d1cc){return request(_0x8acb('0x39'),{'body':{'interface':_0x63d1cc},'options':{'where':_0x181c9c}});};exports[_0x8acb('0x3a')]=function(_0x2049f9,_0x1703a8,_0x51abc3){return request(_0x8acb('0x3b'),{'body':{'type':_0x1703a8,'uniqueid':_0x51abc3},'options':{'where':_0x2049f9}});};exports['agentUnpause']=function(_0x5a7610){return request(_0x8acb('0x3c'),{'body':{},'options':{'where':_0x5a7610}});};exports['agentLogout']=function(_0x31e868){return request(_0x8acb('0x3d'),{'body':{},'options':{'where':_0x31e868}});};
\ No newline at end of file
index 9fec0ba..06ee553 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf25=['./polly','exports'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0xbf25,0x15e));var _0x5bf2=function(_0x1c2864,_0x45c93e){_0x1c2864=_0x1c2864-0x0;var _0x48a3d5=_0xbf25[_0x1c2864];return _0x48a3d5;};var polly=require(_0x5bf2('0x0'));var lex=require('./lex');module[_0x5bf2('0x1')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0xe829=['./lex','exports'];(function(_0x14de67,_0x395b89){var _0x4f71be=function(_0x14fc7c){while(--_0x14fc7c){_0x14de67['push'](_0x14de67['shift']());}};_0x4f71be(++_0x395b89);}(_0xe829,0xde));var _0x9e82=function(_0x2718c7,_0x5a1636){_0x2718c7=_0x2718c7-0x0;var _0x59d89c=_0xe829[_0x2718c7];return _0x59d89c;};var polly=require('./polly');var lex=require(_0x9e82('0x0'));module[_0x9e82('0x1')]={'polly':polly,'lex':lex};
\ No newline at end of file
index 2432755..0bb67b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x96cc=['./lib/api'];(function(_0x11df8f,_0x46a287){var _0x2b6c3a=function(_0x67efca){while(--_0x67efca){_0x11df8f['push'](_0x11df8f['shift']());}};_0x2b6c3a(++_0x46a287);}(_0x96cc,0x16c));var _0xc96c=function(_0x5b069c,_0x4b88cf){_0x5b069c=_0x5b069c-0x0;var _0x4313aa=_0x96cc[_0x5b069c];return _0x4313aa;};'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 _0x4483=['exports','./lib/api'];(function(_0x2f796e,_0x192466){var _0x57ba97=function(_0x584a24){while(--_0x584a24){_0x2f796e['push'](_0x2f796e['shift']());}};_0x57ba97(++_0x192466);}(_0x4483,0x1a3));var _0x3448=function(_0x319ae1,_0x3b89b1){_0x319ae1=_0x319ae1-0x0;var _0x3e9b6a=_0x4483[_0x319ae1];return _0x3e9b6a;};'use strict';var lex=require(_0x3448('0x0'));module[_0x3448('0x1')]=function(_0x229c0c,_0x481d0c,_0x202d3d,_0x1fe72d,_0x27ef60,_0x3a7178){return lex(_0x229c0c,_0x481d0c,_0x202d3d,_0x1fe72d,_0x27ef60,_0x3a7178);};
\ No newline at end of file
index 023773f..64737c4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['LexRuntime','bluebird','aws-sdk','slots','hasOwnProperty'];(function(_0x2279c4,_0x156302){var _0x223785=function(_0x5d0084){while(--_0x5d0084){_0x2279c4['push'](_0x2279c4['shift']());}};_0x223785(++_0x156302);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4dbaad,_0x730318){_0x4dbaad=_0x4dbaad-0x0;var _0x226c72=_0xa9e0[_0x4dbaad];return _0x226c72;};'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(_0x6f8af6,_0x23a060){var _0x4dc3c3=function(_0x4f077a){while(--_0x4f077a){_0x6f8af6['push'](_0x6f8af6['shift']());}};_0x4dc3c3(++_0x23a060);}(_0xa9e0,0x123));var _0x0a9e=function(_0x2cfb58,_0x3d9412){_0x2cfb58=_0x2cfb58-0x0;var _0xd99951=_0xa9e0[_0x2cfb58];return _0xd99951;};'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 8ee0238..9cd65c9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8962=['exports','./lib/api'];(function(_0x2ccc71,_0x1c458a){var _0x20fa15=function(_0x320e61){while(--_0x320e61){_0x2ccc71['push'](_0x2ccc71['shift']());}};_0x20fa15(++_0x1c458a);}(_0x8962,0x19d));var _0x2896=function(_0x5f4fad,_0x3ac10f){_0x5f4fad=_0x5f4fad-0x0;var _0x54e5fd=_0x8962[_0x5f4fad];return _0x54e5fd;};'use strict';var polly=require(_0x2896('0x0'));module[_0x2896('0x1')]=function(_0x463110,_0x31ddff,_0x424d18,_0x2286f2,_0x5a52b1,_0x22c058,_0x22d137){return polly(_0x463110,_0x31ddff,_0x424d18,_0x2286f2,_0x5a52b1,_0x22c058,_0x22d137);};
\ No newline at end of file
+var _0x935c=['./lib/api'];(function(_0x41bd12,_0x393089){var _0x1f4722=function(_0xd35e61){while(--_0xd35e61){_0x41bd12['push'](_0x41bd12['shift']());}};_0x1f4722(++_0x393089);}(_0x935c,0x1c3));var _0xc935=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0x935c[_0x2c91e9];return _0x13f0ff;};'use strict';var polly=require(_0xc935('0x0'));module['exports']=function(_0x512ccb,_0x57a5a8,_0x5839a2,_0x28ee53,_0x34c2ae,_0x5af301,_0x20bdc2){return polly(_0x512ccb,_0x57a5a8,_0x5839a2,_0x28ee53,_0x34c2ae,_0x5af301,_0x20bdc2);};
\ No newline at end of file
index f066651..b6ed720 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7970=['text','mp3','bluebird','randomstring','aws-sdk','synthesizeSpeech','AudioStream','writeFile','Invalid\x20data\x20response\x20from\x20aws\x20Polly!','exports'];(function(_0x18442a,_0x57143d){var _0x2bb33e=function(_0x358b7f){while(--_0x358b7f){_0x18442a['push'](_0x18442a['shift']());}};_0x2bb33e(++_0x57143d);}(_0x7970,0x1ce));var _0x0797=function(_0xee6851,_0x2d132d){_0xee6851=_0xee6851-0x0;var _0x5b37f4=_0x7970[_0xee6851];return _0x5b37f4;};'use strict';var fs=require('fs');var path=require('path');var BPromise=require(_0x0797('0x0'));var rs=require(_0x0797('0x1'));var AWS=require(_0x0797('0x2'));function pollyResult(_0x50af04,_0x4efbe8,_0x3ae873){return new BPromise(function(_0x5724c4,_0x56ff7b){_0x50af04[_0x0797('0x3')](_0x4efbe8,function(_0x2b5367,_0x2f69cb){if(_0x2b5367){_0x56ff7b(_0x2b5367);}else if(_0x2f69cb){if(_0x2f69cb[_0x0797('0x4')]instanceof Buffer){fs[_0x0797('0x5')](_0x3ae873,_0x2f69cb[_0x0797('0x4')],function(_0xf38561){if(_0xf38561){_0x56ff7b(_0xf38561);}else{_0x5724c4();}});}else{_0x56ff7b(new Error(_0x0797('0x6')));}}else{_0x56ff7b(new Error('No\x20data\x20response\x20from\x20aws\x20Polly!'));}});});}module[_0x0797('0x7')]=function(_0x5df1ad,_0x484f7b,_0x17bdcd,_0x4db319,_0x42131a,_0x3c2c20,_0x1e59e4){var _0xdfed4e=new AWS['Polly']({'accessKeyId':_0x5df1ad,'secretAccessKey':_0x484f7b,'region':_0x17bdcd});var _0x59b9fb={'Text':_0x42131a,'TextType':_0x3c2c20||_0x0797('0x8'),'OutputFormat':_0x0797('0x9'),'VoiceId':_0x4db319};return pollyResult(_0xdfed4e,_0x59b9fb,_0x1e59e4);};
\ No newline at end of file
+var _0x30ab=['Invalid\x20data\x20response\x20from\x20aws\x20Polly!','No\x20data\x20response\x20from\x20aws\x20Polly!','Polly','mp3','randomstring','aws-sdk','synthesizeSpeech','AudioStream'];(function(_0x1d5b09,_0x44b428){var _0x4510b6=function(_0x45bdca){while(--_0x45bdca){_0x1d5b09['push'](_0x1d5b09['shift']());}};_0x4510b6(++_0x44b428);}(_0x30ab,0x174));var _0xb30a=function(_0x2c41e6,_0x370706){_0x2c41e6=_0x2c41e6-0x0;var _0xdde590=_0x30ab[_0x2c41e6];return _0xdde590;};'use strict';var fs=require('fs');var path=require('path');var BPromise=require('bluebird');var rs=require(_0xb30a('0x0'));var AWS=require(_0xb30a('0x1'));function pollyResult(_0x1dcd8e,_0xfd4597,_0x58cc03){return new BPromise(function(_0xca1b,_0x5d042a){_0x1dcd8e[_0xb30a('0x2')](_0xfd4597,function(_0x51defb,_0xa22f8c){if(_0x51defb){_0x5d042a(_0x51defb);}else if(_0xa22f8c){if(_0xa22f8c[_0xb30a('0x3')]instanceof Buffer){fs['writeFile'](_0x58cc03,_0xa22f8c[_0xb30a('0x3')],function(_0x31a84d){if(_0x31a84d){_0x5d042a(_0x31a84d);}else{_0xca1b();}});}else{_0x5d042a(new Error(_0xb30a('0x4')));}}else{_0x5d042a(new Error(_0xb30a('0x5')));}});});}module['exports']=function(_0xf89de3,_0x3296f6,_0x31c902,_0x1b107d,_0xe74e4d,_0x6b9d3c,_0x261258){var _0x113440=new AWS[(_0xb30a('0x6'))]({'accessKeyId':_0xf89de3,'secretAccessKey':_0x3296f6,'region':_0x31c902});var _0x35a8b8={'Text':_0xe74e4d,'TextType':_0x6b9d3c||'text','OutputFormat':_0xb30a('0x7'),'VoiceId':_0x1b107d};return pollyResult(_0x113440,_0x35a8b8,_0x261258);};
\ No newline at end of file
index 7b671e0..a346705 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x714b=['exports','./lib/api'];(function(_0x5fba07,_0x5efa7e){var _0x3533e6=function(_0x316524){while(--_0x316524){_0x5fba07['push'](_0x5fba07['shift']());}};_0x3533e6(++_0x5efa7e);}(_0x714b,0x101));var _0xb714=function(_0x501510,_0x61caa9){_0x501510=_0x501510-0x0;var _0x1e6ee5=_0x714b[_0x501510];return _0x1e6ee5;};'use strict';var asr=require(_0xb714('0x0'));module[_0xb714('0x1')]=function(_0x23ec87,_0x466466,_0x24983d,_0x15a455){return asr(_0x23ec87,_0x466466,_0x24983d);};
\ No newline at end of file
+var _0x534c=['exports'];(function(_0x334700,_0x36a3a5){var _0x2ea70c=function(_0x47b3b5){while(--_0x47b3b5){_0x334700['push'](_0x334700['shift']());}};_0x2ea70c(++_0x36a3a5);}(_0x534c,0x12d));var _0xc534=function(_0x257b0b,_0x2e50e6){_0x257b0b=_0x257b0b-0x0;var _0x58d24c=_0x534c[_0x257b0b];return _0x58d24c;};'use strict';var asr=require('./lib/api');module[_0xc534('0x0')]=function(_0x54d25a,_0x4b9657,_0x5968c6,_0x1c9bc8){return asr(_0x54d25a,_0x4b9657,_0x5968c6);};
\ No newline at end of file
index 07d68a5..9d93553 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd691=['readFileSync','toString','POST','/v1/speech:recognize?key=','LINEAR16','8000','url','bluebird','https://speech.googleapis.com','string','length','filepath\x20should\x20be\x20a\x20string','undefined','lang\x20should\x20be\x20a\x20string'];(function(_0x131585,_0x1abd33){var _0x1fcca2=function(_0x8f165b){while(--_0x8f165b){_0x131585['push'](_0x131585['shift']());}};_0x1fcca2(++_0x1abd33);}(_0xd691,0xe6));var _0x1d69=function(_0x30505b,_0x3b6c06){_0x30505b=_0x30505b-0x0;var _0x4f7466=_0xd691[_0x30505b];return _0x4f7466;};'use strict';var url=require(_0x1d69('0x0'));var BPromise=require(_0x1d69('0x1'));var fs=require('fs');var host=_0x1d69('0x2');module['exports']=function(_0x468419,_0x44899f,_0x32502d){return new BPromise(function(_0x3dc1c9,_0x1fbb5e){var _0x2228be;if(typeof _0x468419!==_0x1d69('0x3')||_0x468419[_0x1d69('0x4')]===0x0){return _0x1fbb5e(_0x1d69('0x5'));}if(typeof _0x44899f!==_0x1d69('0x3')||_0x44899f['length']===0x0){return _0x1fbb5e('key\x20should\x20be\x20a\x20string');}if(typeof _0x32502d!==_0x1d69('0x6')&&(typeof _0x32502d!=='string'||_0x32502d[_0x1d69('0x4')]===0x0)){return _0x1fbb5e(_0x1d69('0x7'));}try{_0x2228be=fs[_0x1d69('0x8')](_0x468419)[_0x1d69('0x9')]('base64');}catch(_0x298c17){return _0x1fbb5e(_0x298c17);}return _0x3dc1c9({'method':_0x1d69('0xa'),'uri':host+_0x1d69('0xb')+_0x44899f,'body':{'config':{'encoding':_0x1d69('0xc'),'sampleRateHertz':_0x1d69('0xd'),'languageCode':_0x32502d},'audio':{'content':_0x2228be}},'json':!![]});});};
\ No newline at end of file
+var _0x58e5=['bluebird','https://speech.googleapis.com','exports','string','filepath\x20should\x20be\x20a\x20string','length','key\x20should\x20be\x20a\x20string','toString','base64','POST','/v1/speech:recognize?key=','LINEAR16','8000','url'];(function(_0x5ca07b,_0x1ae60b){var _0x31456c=function(_0x312da0){while(--_0x312da0){_0x5ca07b['push'](_0x5ca07b['shift']());}};_0x31456c(++_0x1ae60b);}(_0x58e5,0xd1));var _0x558e=function(_0x5a95fa,_0x4a2fc9){_0x5a95fa=_0x5a95fa-0x0;var _0x1a61b8=_0x58e5[_0x5a95fa];return _0x1a61b8;};'use strict';var url=require(_0x558e('0x0'));var BPromise=require(_0x558e('0x1'));var fs=require('fs');var host=_0x558e('0x2');module[_0x558e('0x3')]=function(_0x1bd46a,_0x319e46,_0x49a1b7){return new BPromise(function(_0x2f18ee,_0x550dd2){var _0x4959f0;if(typeof _0x1bd46a!==_0x558e('0x4')||_0x1bd46a['length']===0x0){return _0x550dd2(_0x558e('0x5'));}if(typeof _0x319e46!=='string'||_0x319e46[_0x558e('0x6')]===0x0){return _0x550dd2(_0x558e('0x7'));}if(typeof _0x49a1b7!=='undefined'&&(typeof _0x49a1b7!=='string'||_0x49a1b7['length']===0x0)){return _0x550dd2('lang\x20should\x20be\x20a\x20string');}try{_0x4959f0=fs['readFileSync'](_0x1bd46a)[_0x558e('0x8')](_0x558e('0x9'));}catch(_0x5d1e17){return _0x550dd2(_0x5d1e17);}return _0x2f18ee({'method':_0x558e('0xa'),'uri':host+_0x558e('0xb')+_0x319e46,'body':{'config':{'encoding':_0x558e('0xc'),'sampleRateHertz':_0x558e('0xd'),'languageCode':_0x49a1b7},'audio':{'content':_0x4959f0}},'json':!![]});});};
\ No newline at end of file
index cbfa2a4..fed7256 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3924=['exports','./asr'];(function(_0x4c61dc,_0x3b8f62){var _0x83fb6e=function(_0x197e0e){while(--_0x197e0e){_0x4c61dc['push'](_0x4c61dc['shift']());}};_0x83fb6e(++_0x3b8f62);}(_0x3924,0x1c7));var _0x4392=function(_0x99f8c4,_0x4a00b4){_0x99f8c4=_0x99f8c4-0x0;var _0x9f73b7=_0x3924[_0x99f8c4];return _0x9f73b7;};var asr=require(_0x4392('0x0'));module[_0x4392('0x1')]={'asr':asr};
\ No newline at end of file
+var _0xbc5f=['exports','./asr'];(function(_0x5ace77,_0x1f1597){var _0x12eb16=function(_0x40f987){while(--_0x40f987){_0x5ace77['push'](_0x5ace77['shift']());}};_0x12eb16(++_0x1f1597);}(_0xbc5f,0x175));var _0xfbc5=function(_0x37d0af,_0x24d92a){_0x37d0af=_0x37d0af-0x0;var _0x55abb8=_0xbc5f[_0x37d0af];return _0x55abb8;};var asr=require(_0xfbc5('0x0'));module[_0xfbc5('0x1')]={'asr':asr};
\ No newline at end of file
index 3035bcf..68e50b8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff55=['google-tts-api','url','parse','./google','./tilde','../../../config/logger','agi','https://api.ispeech.org/api/rest','https:','host','get','statusCode','error','request\x20to\x20','\x20failed,\x20status\x20code\x20=\x20','statusMessage','createWriteStream','finish','info','finish\x20download\x20file','close','download\x20error','end','protocol','data','wav','error\x20convert','finish\x20to\x20convert','start','resolve','generate','.wav','writeFileSync','base64','then','unlink','777','split','readFileSync','googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','MP3','text:synthesize','POST','tmp','.mp3','from','writeFile','chmodSync','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','application/x-www-form-urlencoded','f.req=','stringify','jQ1olc','null','generic','slice','parse\x20response\x20failed:\x0a','length','text\x20length\x20limit\x20reached','\x22\x20might\x20not\x20exist','googleASR','asr','uri','results','map','alternatives','transcript','join','confidence','googleASR\x20transcription','googleASR\x20confidence','[%s]\x20%s:%s','name','message','googleDialogflow','textRequest','source','result','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','status','metadata','endConversation','isFallbackIntent','SessionsClient','detectIntent','allRequiredParamsPresent','queryResult','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','displayName','isFallback','languageCode','queryText','responseId','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','polly','awsLex','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','freeform=3','sestekNDA','text','channelData','CustomAction','CustomActionData','AudioFromTts','Data','apiai-promise','bluebird','dialogflow','http','https','md5','path','request-promise','randomstring','sox'];(function(_0xd83f3e,_0x3c909e){var _0x3afffc=function(_0x105730){while(--_0x105730){_0xd83f3e['push'](_0xd83f3e['shift']());}};_0x3afffc(++_0x3c909e);}(_0xff55,0x80));var _0x5ff5=function(_0x946f5,_0x8071bf){_0x946f5=_0x946f5-0x0;var _0x553d87=_0xff55[_0x946f5];return _0x553d87;};'use strict';var apiai=require(_0x5ff5('0x0'));var BPromise=require(_0x5ff5('0x1'));var dialogflow=require(_0x5ff5('0x2'));var fs=require('fs');var http=require(_0x5ff5('0x3'));var https=require(_0x5ff5('0x4'));var md5=require(_0x5ff5('0x5'));var path=require(_0x5ff5('0x6'));var querystring=require('querystring');var rp=require(_0x5ff5('0x7'));var rs=require(_0x5ff5('0x8'));var sox=require(_0x5ff5('0x9'));var tts=require(_0x5ff5('0xa'));var urlParse=require(_0x5ff5('0xb'))[_0x5ff5('0xc')];var util=require('util');var aws=require('./aws');var google=require(_0x5ff5('0xd'));var sestek=require('./sestek');var tilde=require(_0x5ff5('0xe'));var logger=require(_0x5ff5('0xf'))(_0x5ff5('0x10'));var ISPEECH_API=_0x5ff5('0x11');function downloadFile(_0x156096,_0x5da32b){return new BPromise(function(_0x4e3779,_0x1cf4be){var _0x33ed8d=urlParse(_0x156096);var _0x5e6200=_0x33ed8d['protocol']===_0x5ff5('0x12')?https:http;var _0x341c0c={'host':_0x33ed8d[_0x5ff5('0x13')],'path':_0x33ed8d[_0x5ff5('0x6')],'headers':{'user-agent':'WHAT_EVER'}};_0x5e6200[_0x5ff5('0x14')](_0x341c0c,function(_0x5a40c6){if(_0x5a40c6[_0x5ff5('0x15')]!==0xc8){logger[_0x5ff5('0x16')](_0x5ff5('0x17')+_0x156096+_0x5ff5('0x18')+_0x5a40c6['statusCode']+'\x20('+_0x5a40c6[_0x5ff5('0x19')]+')');_0x1cf4be(new Error(_0x5ff5('0x17')+_0x156096+_0x5ff5('0x18')+_0x5a40c6[_0x5ff5('0x15')]+'\x20('+_0x5a40c6[_0x5ff5('0x19')]+')'));return;}var _0x3df795=fs[_0x5ff5('0x1a')](_0x5da32b);_0x3df795['on'](_0x5ff5('0x1b'),function(){logger[_0x5ff5('0x1c')](_0x5ff5('0x1d'));_0x3df795[_0x5ff5('0x1e')](_0x4e3779);});_0x3df795['on'](_0x5ff5('0x16'),function(_0x38d0b9){fs['unlink'](_0x5da32b);logger['error'](_0x5ff5('0x1f'),_0x38d0b9);_0x1cf4be(_0x38d0b9);});_0x5a40c6['pipe'](_0x3df795);})['on']('error',function(_0x3e91c4){logger[_0x5ff5('0x16')](_0x3e91c4);_0x1cf4be(_0x3e91c4);})[_0x5ff5('0x20')]();});}function uploadFile(_0x2828b7){return new BPromise(function(_0x591265,_0x1ff04c){var _0x476cdd=urlParse(_0x2828b7);var _0x2934e1=_0x476cdd[_0x5ff5('0x21')]==='https:'?https:http;var _0x2d2f82={'host':_0x476cdd[_0x5ff5('0x13')],'path':_0x476cdd[_0x5ff5('0x6')],'headers':{'user-agent':'WHAT_EVER'}};_0x2934e1[_0x5ff5('0x14')](_0x2d2f82,function(_0x1ad9d9){if(_0x1ad9d9[_0x5ff5('0x15')]!==0xc8){_0x1ff04c(new Error(_0x5ff5('0x17')+_0x2828b7+_0x5ff5('0x18')+_0x1ad9d9[_0x5ff5('0x15')]+'\x20('+_0x1ad9d9[_0x5ff5('0x19')]+')'));return;}var _0x1ac843='';_0x1ad9d9['on'](_0x5ff5('0x22'),function(_0x391747){_0x1ac843+=_0x391747;});_0x1ad9d9['on'](_0x5ff5('0x20'),function(){_0x591265(_0x1ac843);});})['on'](_0x5ff5('0x16'),function(_0x3f3198){_0x1ff04c(_0x3f3198);})[_0x5ff5('0x20')]();});}function convertFile(_0x3256f5,_0x2757bb){return new BPromise(function(_0xceed6b,_0x5b1c25){var _0x3d5140=sox['transcode'](_0x3256f5,_0x2757bb,{'sampleRate':0x1f40,'format':_0x5ff5('0x23'),'channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x3d5140['on'](_0x5ff5('0x16'),function(_0x16f910){logger['error'](_0x5ff5('0x24'),_0x16f910);_0x5b1c25(_0x16f910);});_0x3d5140['on']('end',function(){logger[_0x5ff5('0x1c')](_0x5ff5('0x25'));_0xceed6b();});_0x3d5140[_0x5ff5('0x26')]();});}function base64Decode(_0x3571f6,_0x418a70){var _0x40dbfa=path[_0x5ff5('0x27')](__dirname,'tmp',rs[_0x5ff5('0x28')](0x4)+_0x5ff5('0x29'));fs[_0x5ff5('0x2a')](_0x40dbfa,_0x3571f6,_0x5ff5('0x2b'));return convertFile(_0x40dbfa,_0x418a70)[_0x5ff5('0x2c')](function(){try{fs[_0x5ff5('0x2d')](_0x40dbfa);fs['chmodSync'](_0x418a70,_0x5ff5('0x2e'));}catch(_0x11a6ec){logger[_0x5ff5('0x16')](_0x11a6ec);}return _0x418a70[_0x5ff5('0x2f')]('.')[0x0];});}function base64Encode(_0x37e2b4){var _0x5084bc=fs[_0x5ff5('0x30')](_0x37e2b4);return new Buffer(_0x5084bc)['toString'](_0x5ff5('0x2b'));}exports[_0x5ff5('0x31')]=function(_0x512755,_0x347a09,_0x30eae9,_0x1d436d,_0x541987,_0x1e0ca2){var _0x3ea4da,_0x21df2b;var _0x3015db=_0x5ff5('0x32');var _0x28a613=_0x5ff5('0x33')+_0x512755;var _0x5edde6={};if(_0x347a09===_0x5ff5('0x34')){_0x5edde6[_0x5ff5('0x35')]={'ssml':_0x30eae9};}else{_0x5edde6[_0x5ff5('0x35')]={'text':_0x30eae9};};_0x5edde6[_0x5ff5('0x36')]={'languageCode':_0x1d436d,'ssmlGender':_0x541987};_0x5edde6['audioConfig']={'audioEncoding':_0x5ff5('0x37'),'sampleRateHertz':0x1f40};var _0x2b34f4={'url':_0x3015db+_0x5ff5('0x38')+_0x28a613,'method':_0x5ff5('0x39'),'json':!![],'body':_0x5edde6};return rp(_0x2b34f4)[_0x5ff5('0x2c')](function(_0x2e47e3){return new BPromise(function(_0x1393ec,_0x27b2fa){_0x3ea4da=path['resolve'](__dirname,_0x5ff5('0x3a'),rs[_0x5ff5('0x28')](0x4)+_0x5ff5('0x3b'));var _0x243f1f=Buffer[_0x5ff5('0x3c')](_0x2e47e3['audioContent'],_0x5ff5('0x2b'));return fs[_0x5ff5('0x3d')](_0x3ea4da,_0x243f1f,function(_0x5739d1){_0x27b2fa(_0x5739d1);},function(_0x4dc1f8){fs[_0x5ff5('0x3e')](_0x3ea4da,_0x5ff5('0x2e'));_0x1393ec(_0x4dc1f8);});});})[_0x5ff5('0x2c')](function(_0x322188){_0x21df2b=path[_0x5ff5('0x27')](__dirname,_0x5ff5('0x3a'),rs[_0x5ff5('0x28')](0x4)+_0x5ff5('0x29'));return convertFile(_0x3ea4da,_0x21df2b);})[_0x5ff5('0x2c')](function(){try{fs[_0x5ff5('0x2d')](_0x3ea4da);fs[_0x5ff5('0x3e')](_0x21df2b,_0x5ff5('0x2e'));}catch(_0x125e3d){logger[_0x5ff5('0x16')](_0x125e3d);}logger['info'](_0x5ff5('0x3f'),_0x21df2b['split']('.')[0x0]);return _0x21df2b[_0x5ff5('0x2f')]('.')[0x0];});};exports[_0x5ff5('0x40')]=function(_0x31353e,_0x39a024){var _0x4b672c=_0x5ff5('0x41');var _0xb83ced,_0x41778a;var _0x2a25f3;var _0x22f593={'encoding':'utf8','method':_0x5ff5('0x39'),'timeout':0x2710,'url':_0x4b672c,'headers':{'Content-Type':_0x5ff5('0x42')},'body':_0x5ff5('0x43')+encodeURIComponent(JSON[_0x5ff5('0x44')]([[[_0x5ff5('0x45'),JSON[_0x5ff5('0x44')]([_0x31353e,_0x39a024||'en',![],_0x5ff5('0x46')]),null,_0x5ff5('0x47')]]]))};return rp(_0x22f593)['then'](function(_0x1149cb){try{_0x2a25f3=eval(_0x1149cb[_0x5ff5('0x48')](0x5))[0x0][0x2];}catch(_0xb145c8){throw new Error(_0x5ff5('0x49')+_0x1149cb[_0x5ff5('0x22')]);}if(!_0x2a25f3){if(_0x31353e[_0x5ff5('0x4a')]>0xc8){throw new Error(_0x5ff5('0x4b'));}else{throw new Error('lang\x20\x22'+_0x39a024+_0x5ff5('0x4c'));}}try{_0x2a25f3=eval(_0x2a25f3)[0x0];}catch(_0x2ecbe4){throw new Error('parse\x20response\x20failed:\x0a'+res[_0x5ff5('0x22')]);}const _0xb260b8=_0x2a25f3;_0xb83ced=path['resolve'](__dirname,_0x5ff5('0x3a'),rs[_0x5ff5('0x28')](0x4)+_0x5ff5('0x3b'));fs[_0x5ff5('0x2a')](_0xb83ced,_0x2a25f3,{'encoding':'base64'});_0x41778a=path[_0x5ff5('0x27')](__dirname,'tmp',rs['generate'](0x4)+_0x5ff5('0x29'));return convertFile(_0xb83ced,_0x41778a);})[_0x5ff5('0x2c')](function(){try{fs[_0x5ff5('0x2d')](_0xb83ced);fs[_0x5ff5('0x3e')](_0x41778a,'777');}catch(_0x5582dd){logger[_0x5ff5('0x16')](_0x5582dd);}logger['info']('goggleTTS\x20path',_0x41778a['split']('.')[0x0]);return _0x41778a[_0x5ff5('0x2f')]('.')[0x0];});};exports[_0x5ff5('0x4d')]=function(_0x45a4c4,_0x145448,_0x16ac48){return google[_0x5ff5('0x4e')](_0x45a4c4,_0x145448,_0x16ac48)['then'](function(_0x5c0a34){logger['info'](_0x5c0a34[_0x5ff5('0x4f')]);return rp(_0x5c0a34);})[_0x5ff5('0x2c')](function(_0x5df724){var _0xaf4a96='';var _0x2fa355=0x0;try{fs['unlink'](_0x45a4c4);}catch(_0x80d9f7){logger[_0x5ff5('0x16')](_0x80d9f7);}if(_0x5df724&&_0x5df724['results']){_0xaf4a96=_0x5df724[_0x5ff5('0x50')][_0x5ff5('0x51')](function(_0x44522){return _0x44522&&_0x44522[_0x5ff5('0x52')][0x0]&&_0x44522['alternatives'][0x0][_0x5ff5('0x53')]?_0x44522[_0x5ff5('0x52')][0x0]['transcript']:'';})[_0x5ff5('0x54')]('\x0a');_0x2fa355=_0x5df724[_0x5ff5('0x50')][_0x5ff5('0x51')](function(_0x32319a){return _0x32319a&&_0x32319a[_0x5ff5('0x52')][0x0]&&_0x32319a[_0x5ff5('0x52')][0x0]['confidence']?_0x32319a[_0x5ff5('0x52')][0x0][_0x5ff5('0x55')]:0x0;})[_0x5ff5('0x54')]('\x0a');}logger[_0x5ff5('0x1c')](_0x5ff5('0x56'),_0xaf4a96);logger[_0x5ff5('0x1c')](_0x5ff5('0x57'),_0x2fa355);return{'transcript':_0xaf4a96,'confidence':_0x2fa355};})['catch'](function(_0x322bf6){logger[_0x5ff5('0x16')](_0x5ff5('0x58'),_0x322bf6['statusCode'],_0x322bf6[_0x5ff5('0x59')],_0x322bf6[_0x5ff5('0x5a')]);});};exports[_0x5ff5('0x5b')]=function(_0x68b4d7,_0x5160a5,_0x232056,_0x251f49){var _0x1156e4=apiai(_0x5160a5,{'language':_0x251f49||'en'});return _0x1156e4[_0x5ff5('0x5c')](_0x232056,{'sessionId':md5(_0x68b4d7)})['then'](function(_0x5983cb){logger[_0x5ff5('0x1c')](JSON[_0x5ff5('0x44')](_0x5983cb));return{'source':_0x5983cb['result'][_0x5ff5('0x5d')],'resolvedQuery':_0x5983cb[_0x5ff5('0x5e')][_0x5ff5('0x5f')],'action':_0x5983cb['result'][_0x5ff5('0x60')],'actionIncomplete':_0x5983cb[_0x5ff5('0x5e')][_0x5ff5('0x61')],'speech':_0x5983cb['result'][_0x5ff5('0x62')][_0x5ff5('0x63')],'score':_0x5983cb['result'][_0x5ff5('0x64')],'statusCode':_0x5983cb[_0x5ff5('0x65')]['code'],'endConversation':_0x5983cb['result'][_0x5ff5('0x66')][_0x5ff5('0x67')]||![],'isFallbackIntent':_0x5983cb['result'][_0x5ff5('0x66')][_0x5ff5('0x68')]};});};exports['googleDialogflowV2']=function(_0x2ab2dd,_0x7d6f69,_0x546cf6,_0x47e547,_0x43a270,_0x5661d6){var _0x2a761b=_0x47e547['replace'](/\\n/g,'\x0a');var _0x28d6a3={'credentials':{'private_key':_0x2a761b,'client_email':_0x546cf6}};var _0x422dc4=new dialogflow[(_0x5ff5('0x69'))](_0x28d6a3);var _0x2b4c4e=_0x422dc4['sessionPath'](_0x7d6f69,md5(_0x2ab2dd));var _0xfd5daa={'session':_0x2b4c4e,'queryInput':{'text':{'text':_0x43a270,'languageCode':_0x5661d6}}};return _0x422dc4[_0x5ff5('0x6a')](_0xfd5daa)[_0x5ff5('0x2c')](function(_0x503a27){if(_0x503a27&&_0x503a27[_0x5ff5('0x4a')]){logger[_0x5ff5('0x1c')]('Dialogflow\x20V2\x20response:',JSON[_0x5ff5('0x44')](_0x503a27));var _0x1523c6=_0x503a27[0x0];if(_0x1523c6){var _0x6dd057={'action':_0x1523c6['queryResult']['action'],'allRequiredParamsPresent':_0x1523c6['queryResult'][_0x5ff5('0x6b')],'endConversation':_0x1523c6[_0x5ff5('0x6c')]['diagnosticInfo']&&_0x1523c6[_0x5ff5('0x6c')][_0x5ff5('0x6d')][_0x5ff5('0x6e')]?_0x1523c6[_0x5ff5('0x6c')][_0x5ff5('0x6d')][_0x5ff5('0x6e')][_0x5ff5('0x6f')][_0x5ff5('0x70')]:![],'fulfillmentText':_0x1523c6[_0x5ff5('0x6c')][_0x5ff5('0x71')],'intentName':_0x1523c6[_0x5ff5('0x6c')][_0x5ff5('0x72')]['name'],'intentDisplayName':_0x1523c6['queryResult'][_0x5ff5('0x72')][_0x5ff5('0x73')],'isFallbackIntent':_0x1523c6[_0x5ff5('0x6c')][_0x5ff5('0x72')][_0x5ff5('0x74')],'languageCode':_0x1523c6[_0x5ff5('0x6c')][_0x5ff5('0x75')],'queryText':_0x1523c6[_0x5ff5('0x6c')][_0x5ff5('0x76')],'responseId':_0x1523c6[_0x5ff5('0x77')],'score':_0x1523c6[_0x5ff5('0x6c')]['intentDetectionConfidence'],'speech':_0x1523c6[_0x5ff5('0x6c')][_0x5ff5('0x71')],'providerResponse':JSON[_0x5ff5('0x44')](_0x503a27)};return _0x6dd057;}}});};exports['tildeASR']=function(_0x4500e3,_0x69cfc2,_0x392500,_0x44f03a){return tilde['asr'](_0x4500e3,_0x69cfc2,_0x392500,_0x44f03a)[_0x5ff5('0x2c')](function(_0x14384d){try{fs[_0x5ff5('0x2d')](_0x4500e3);}catch(_0x5b9526){logger[_0x5ff5('0x16')](_0x5b9526);}logger['info'](_0x5ff5('0x78'),_0x14384d[_0x5ff5('0x53')]);logger['info'](_0x5ff5('0x79'),_0x14384d[_0x5ff5('0x55')]);return _0x14384d;});};exports['awsPolly']=function(_0x5e0329,_0x13b740,_0x1664cf,_0x4b401a,_0x42f019,_0x2393e9){var _0xd568f8=path['resolve'](__dirname,_0x5ff5('0x3a'),rs['generate'](0x4)+'.mp3');var _0x259676;return aws[_0x5ff5('0x7a')](_0x5e0329,_0x13b740,_0x1664cf,_0x4b401a,_0x42f019,_0x2393e9,_0xd568f8)[_0x5ff5('0x2c')](function(){_0x259676=path[_0x5ff5('0x27')](__dirname,_0x5ff5('0x3a'),rs['generate'](0x4)+_0x5ff5('0x29'));return convertFile(_0xd568f8,_0x259676);})[_0x5ff5('0x2c')](function(){try{fs[_0x5ff5('0x2d')](_0xd568f8);fs[_0x5ff5('0x3e')](_0x259676,_0x5ff5('0x2e'));}catch(_0x1b7f94){logger[_0x5ff5('0x16')](_0x1b7f94);}return _0x259676[_0x5ff5('0x2f')]('.')[0x0];});};exports[_0x5ff5('0x7b')]=function(_0x2fcaa2,_0x5dd0f3,_0x3099ae,_0x41ab52,_0x22ff40,_0x364d94){return aws[_0x5ff5('0x7c')](_0x2fcaa2,_0x5dd0f3,_0x3099ae,_0x41ab52,_0x22ff40,_0x364d94)[_0x5ff5('0x2c')](function(_0x1c18c2){logger[_0x5ff5('0x1c')](JSON['stringify'](_0x1c18c2));return _0x1c18c2;});};exports[_0x5ff5('0x7d')]=function(_0x31d184,_0x1f65e2,_0x476357,_0xaa23dc){var _0xe70712=util[_0x5ff5('0x7e')](_0x5ff5('0x7f'),ISPEECH_API,_0x31d184,encodeURIComponent(_0x1f65e2),_0x476357,_0xaa23dc);var _0x5a2030=path[_0x5ff5('0x27')](__dirname,'tmp',rs[_0x5ff5('0x28')](0x4)+_0x5ff5('0x3b'));var _0x421ab6;return downloadFile(_0xe70712,_0x5a2030)[_0x5ff5('0x2c')](function(){_0x421ab6=path[_0x5ff5('0x27')](__dirname,_0x5ff5('0x3a'),rs[_0x5ff5('0x28')](0x4)+_0x5ff5('0x29'));return convertFile(_0x5a2030,_0x421ab6);})[_0x5ff5('0x2c')](function(){try{fs[_0x5ff5('0x2d')](_0x5a2030);fs['chmodSync'](_0x421ab6,_0x5ff5('0x2e'));}catch(_0x193baa){logger[_0x5ff5('0x16')](_0x193baa);}return _0x421ab6['split']('.')[0x0];});};exports[_0x5ff5('0x80')]=function(_0x39e9e9,_0x22d71e,_0x4934dd,_0x9acc81){var _0x2e87ee=util[_0x5ff5('0x7e')](_0x5ff5('0x81'),ISPEECH_API,_0x22d71e,_0x4934dd,base64Encode(_0x39e9e9),_0x9acc81?util['format']('model=%s',encodeURIComponent(_0x9acc81)):_0x5ff5('0x82'));return uploadFile(_0x2e87ee)[_0x5ff5('0x2c')](function(_0x4de03f){return querystring['parse'](_0x4de03f);});};exports[_0x5ff5('0x83')]=function(_0x1af0b3,_0x365077){return sestek['nda'](_0x1af0b3,_0x365077)[_0x5ff5('0x2c')](function(_0x4e5ca4){logger['info'](JSON['stringify'](_0x4e5ca4));var _0x162621={'speech':_0x4e5ca4[_0x5ff5('0x84')],'action':_0x4e5ca4[_0x5ff5('0x85')]?_0x4e5ca4['channelData'][_0x5ff5('0x86')]:undefined,'actiondata':_0x4e5ca4[_0x5ff5('0x85')]?_0x4e5ca4[_0x5ff5('0x85')][_0x5ff5('0x87')]:undefined};if(_0x4e5ca4[_0x5ff5('0x85')]&&_0x4e5ca4['channelData'][_0x5ff5('0x88')]){return base64Decode(_0x4e5ca4[_0x5ff5('0x85')][_0x5ff5('0x88')][_0x5ff5('0x89')],path[_0x5ff5('0x27')](__dirname,_0x5ff5('0x3a'),rs[_0x5ff5('0x28')](0x4)+'.wav'))[_0x5ff5('0x2c')](function(_0x5c2a9d){_0x162621['audiofile']=_0x5c2a9d;return _0x162621;});}return _0x162621;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
+var _0x4a1d=['googleCloudTTS','https://texttospeech.googleapis.com/v1/','?key=','ssml','input','voice','audioConfig','MP3','POST','.mp3','from','writeFile','777','resolve','googleCloudTTS\x20path','googleTTS','https://translate.google.com/_/TranslateWebserverUi/data/batchexecute','utf8','f.req=','jQ1olc','stringify','generic','slice','parse\x20response\x20failed:\x0a','text\x20length\x20limit\x20reached','lang\x20\x22','data','googleASR','results','map','alternatives','transcript','join','confidence','googleASR\x20confidence','[%s]\x20%s:%s','name','message','result','source','resolvedQuery','action','actionIncomplete','fulfillment','speech','score','status','metadata','endConversation','googleDialogflowV2','replace','sessionPath','detectIntent','length','Dialogflow\x20V2\x20response:','queryResult','allRequiredParamsPresent','diagnosticInfo','fields','end_conversation','boolValue','fulfillmentText','intent','isFallback','languageCode','queryText','responseId','intentDetectionConfidence','Tilde\x20ASR\x20transcription','Tilde\x20ASR\x20confidence','awsPolly','polly','awsLex','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','sestekNDA','nda','text','channelData','AudioFromTts','Data','audiofile','apiai-promise','bluebird','dialogflow','http','https','md5','path','querystring','randomstring','google-tts-api','url','parse','util','./aws','./google','./sestek','./tilde','https://api.ispeech.org/api/rest','protocol','https:','WHAT_EVER','get','statusCode','error','request\x20to\x20','statusMessage','\x20failed,\x20status\x20code\x20=\x20','createWriteStream','finish','finish\x20download\x20file','close','unlink','pipe','end','host','transcode','error\x20convert','info','finish\x20to\x20convert','start','tmp','generate','.wav','writeFileSync','base64','then','chmodSync','split','readFileSync','toString'];(function(_0x259017,_0x205b14){var _0x325a15=function(_0x4aaf33){while(--_0x4aaf33){_0x259017['push'](_0x259017['shift']());}};_0x325a15(++_0x205b14);}(_0x4a1d,0xe2));var _0xd4a1=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x4a1d[_0x21a9d9];return _0x46adce;};'use strict';var apiai=require(_0xd4a1('0x0'));var BPromise=require(_0xd4a1('0x1'));var dialogflow=require(_0xd4a1('0x2'));var fs=require('fs');var http=require(_0xd4a1('0x3'));var https=require(_0xd4a1('0x4'));var md5=require(_0xd4a1('0x5'));var path=require(_0xd4a1('0x6'));var querystring=require(_0xd4a1('0x7'));var rp=require('request-promise');var rs=require(_0xd4a1('0x8'));var sox=require('sox');var tts=require(_0xd4a1('0x9'));var urlParse=require(_0xd4a1('0xa'))[_0xd4a1('0xb')];var util=require(_0xd4a1('0xc'));var aws=require(_0xd4a1('0xd'));var google=require(_0xd4a1('0xe'));var sestek=require(_0xd4a1('0xf'));var tilde=require(_0xd4a1('0x10'));var logger=require('../../../config/logger')('agi');var ISPEECH_API=_0xd4a1('0x11');function downloadFile(_0x345ee7,_0x5f3e62){return new BPromise(function(_0x4a05e8,_0x3dc15e){var _0x2d5aeb=urlParse(_0x345ee7);var _0x230206=_0x2d5aeb[_0xd4a1('0x12')]===_0xd4a1('0x13')?https:http;var _0x553990={'host':_0x2d5aeb['host'],'path':_0x2d5aeb[_0xd4a1('0x6')],'headers':{'user-agent':_0xd4a1('0x14')}};_0x230206[_0xd4a1('0x15')](_0x553990,function(_0x2147e1){if(_0x2147e1[_0xd4a1('0x16')]!==0xc8){logger[_0xd4a1('0x17')](_0xd4a1('0x18')+_0x345ee7+'\x20failed,\x20status\x20code\x20=\x20'+_0x2147e1[_0xd4a1('0x16')]+'\x20('+_0x2147e1[_0xd4a1('0x19')]+')');_0x3dc15e(new Error(_0xd4a1('0x18')+_0x345ee7+_0xd4a1('0x1a')+_0x2147e1[_0xd4a1('0x16')]+'\x20('+_0x2147e1['statusMessage']+')'));return;}var _0x265484=fs[_0xd4a1('0x1b')](_0x5f3e62);_0x265484['on'](_0xd4a1('0x1c'),function(){logger['info'](_0xd4a1('0x1d'));_0x265484[_0xd4a1('0x1e')](_0x4a05e8);});_0x265484['on']('error',function(_0x5018b3){fs[_0xd4a1('0x1f')](_0x5f3e62);logger['error']('download\x20error',_0x5018b3);_0x3dc15e(_0x5018b3);});_0x2147e1[_0xd4a1('0x20')](_0x265484);})['on'](_0xd4a1('0x17'),function(_0x41016e){logger[_0xd4a1('0x17')](_0x41016e);_0x3dc15e(_0x41016e);})[_0xd4a1('0x21')]();});}function uploadFile(_0x355150){return new BPromise(function(_0x4e197f,_0x439315){var _0x152faf=urlParse(_0x355150);var _0x23cdd0=_0x152faf['protocol']===_0xd4a1('0x13')?https:http;var _0x484d75={'host':_0x152faf[_0xd4a1('0x22')],'path':_0x152faf[_0xd4a1('0x6')],'headers':{'user-agent':'WHAT_EVER'}};_0x23cdd0[_0xd4a1('0x15')](_0x484d75,function(_0x188052){if(_0x188052['statusCode']!==0xc8){_0x439315(new Error(_0xd4a1('0x18')+_0x355150+_0xd4a1('0x1a')+_0x188052[_0xd4a1('0x16')]+'\x20('+_0x188052[_0xd4a1('0x19')]+')'));return;}var _0x3a0068='';_0x188052['on']('data',function(_0xa64488){_0x3a0068+=_0xa64488;});_0x188052['on'](_0xd4a1('0x21'),function(){_0x4e197f(_0x3a0068);});})['on']('error',function(_0x25d0d8){_0x439315(_0x25d0d8);})[_0xd4a1('0x21')]();});}function convertFile(_0x4ae587,_0x438172){return new BPromise(function(_0x57e30f,_0x43ea16){var _0x4a818e=sox[_0xd4a1('0x23')](_0x4ae587,_0x438172,{'sampleRate':0x1f40,'format':'wav','channelCount':0x1,'bitRate':0xc0*0x400,'compressionQuality':0x5});_0x4a818e['on']('error',function(_0x2941b5){logger[_0xd4a1('0x17')](_0xd4a1('0x24'),_0x2941b5);_0x43ea16(_0x2941b5);});_0x4a818e['on'](_0xd4a1('0x21'),function(){logger[_0xd4a1('0x25')](_0xd4a1('0x26'));_0x57e30f();});_0x4a818e[_0xd4a1('0x27')]();});}function base64Decode(_0x4dddc6,_0xc667a7){var _0x2b72f9=path['resolve'](__dirname,_0xd4a1('0x28'),rs[_0xd4a1('0x29')](0x4)+_0xd4a1('0x2a'));fs[_0xd4a1('0x2b')](_0x2b72f9,_0x4dddc6,_0xd4a1('0x2c'));return convertFile(_0x2b72f9,_0xc667a7)[_0xd4a1('0x2d')](function(){try{fs[_0xd4a1('0x1f')](_0x2b72f9);fs[_0xd4a1('0x2e')](_0xc667a7,'777');}catch(_0x2155e3){logger['error'](_0x2155e3);}return _0xc667a7[_0xd4a1('0x2f')]('.')[0x0];});}function base64Encode(_0x567c8e){var _0xa86ef0=fs[_0xd4a1('0x30')](_0x567c8e);return new Buffer(_0xa86ef0)[_0xd4a1('0x31')](_0xd4a1('0x2c'));}exports[_0xd4a1('0x32')]=function(_0x2437f3,_0x158047,_0x591262,_0x3c4792,_0x268d14,_0x30bb97){var _0x3a8ffe,_0x1e3332;var _0x4680ef=_0xd4a1('0x33');var _0x307dce=_0xd4a1('0x34')+_0x2437f3;var _0x3f6cad={};if(_0x158047===_0xd4a1('0x35')){_0x3f6cad[_0xd4a1('0x36')]={'ssml':_0x591262};}else{_0x3f6cad['input']={'text':_0x591262};};_0x3f6cad[_0xd4a1('0x37')]={'languageCode':_0x3c4792,'ssmlGender':_0x268d14};_0x3f6cad[_0xd4a1('0x38')]={'audioEncoding':_0xd4a1('0x39'),'sampleRateHertz':0x1f40};var _0x1b1612={'url':_0x4680ef+'text:synthesize'+_0x307dce,'method':_0xd4a1('0x3a'),'json':!![],'body':_0x3f6cad};return rp(_0x1b1612)[_0xd4a1('0x2d')](function(_0x224bfb){return new BPromise(function(_0x32e9ad,_0x343268){_0x3a8ffe=path['resolve'](__dirname,'tmp',rs[_0xd4a1('0x29')](0x4)+_0xd4a1('0x3b'));var _0x789416=Buffer[_0xd4a1('0x3c')](_0x224bfb['audioContent'],'base64');return fs[_0xd4a1('0x3d')](_0x3a8ffe,_0x789416,function(_0x3254ab){_0x343268(_0x3254ab);},function(_0x583178){fs['chmodSync'](_0x3a8ffe,_0xd4a1('0x3e'));_0x32e9ad(_0x583178);});});})[_0xd4a1('0x2d')](function(_0x207fe7){_0x1e3332=path[_0xd4a1('0x3f')](__dirname,'tmp',rs[_0xd4a1('0x29')](0x4)+'.wav');return convertFile(_0x3a8ffe,_0x1e3332);})[_0xd4a1('0x2d')](function(){try{fs['unlink'](_0x3a8ffe);fs[_0xd4a1('0x2e')](_0x1e3332,'777');}catch(_0x2151d8){logger[_0xd4a1('0x17')](_0x2151d8);}logger[_0xd4a1('0x25')](_0xd4a1('0x40'),_0x1e3332[_0xd4a1('0x2f')]('.')[0x0]);return _0x1e3332[_0xd4a1('0x2f')]('.')[0x0];});};exports[_0xd4a1('0x41')]=function(_0x581f00,_0x120896){var _0x31e673=_0xd4a1('0x42');var _0x130e3c,_0x4c2e8a;var _0x5adeb0;var _0x5c1345={'encoding':_0xd4a1('0x43'),'method':'POST','timeout':0x2710,'url':_0x31e673,'headers':{'Content-Type':'application/x-www-form-urlencoded'},'body':_0xd4a1('0x44')+encodeURIComponent(JSON['stringify']([[[_0xd4a1('0x45'),JSON[_0xd4a1('0x46')]([_0x581f00,_0x120896||'en',![],'null']),null,_0xd4a1('0x47')]]]))};return rp(_0x5c1345)[_0xd4a1('0x2d')](function(_0x5ce803){try{_0x5adeb0=eval(_0x5ce803[_0xd4a1('0x48')](0x5))[0x0][0x2];}catch(_0x5b2139){throw new Error(_0xd4a1('0x49')+_0x5ce803['data']);}if(!_0x5adeb0){if(_0x581f00['length']>0xc8){throw new Error(_0xd4a1('0x4a'));}else{throw new Error(_0xd4a1('0x4b')+_0x120896+'\x22\x20might\x20not\x20exist');}}try{_0x5adeb0=eval(_0x5adeb0)[0x0];}catch(_0x26f1f7){throw new Error(_0xd4a1('0x49')+res[_0xd4a1('0x4c')]);}const _0x2de902=_0x5adeb0;_0x130e3c=path[_0xd4a1('0x3f')](__dirname,_0xd4a1('0x28'),rs[_0xd4a1('0x29')](0x4)+_0xd4a1('0x3b'));fs['writeFileSync'](_0x130e3c,_0x5adeb0,{'encoding':'base64'});_0x4c2e8a=path['resolve'](__dirname,_0xd4a1('0x28'),rs[_0xd4a1('0x29')](0x4)+_0xd4a1('0x2a'));return convertFile(_0x130e3c,_0x4c2e8a);})['then'](function(){try{fs[_0xd4a1('0x1f')](_0x130e3c);fs['chmodSync'](_0x4c2e8a,_0xd4a1('0x3e'));}catch(_0x4a39a3){logger[_0xd4a1('0x17')](_0x4a39a3);}logger['info']('goggleTTS\x20path',_0x4c2e8a[_0xd4a1('0x2f')]('.')[0x0]);return _0x4c2e8a['split']('.')[0x0];});};exports[_0xd4a1('0x4d')]=function(_0x5418a8,_0x99d6ef,_0x15e392){return google['asr'](_0x5418a8,_0x99d6ef,_0x15e392)[_0xd4a1('0x2d')](function(_0x505cbf){logger[_0xd4a1('0x25')](_0x505cbf['uri']);return rp(_0x505cbf);})[_0xd4a1('0x2d')](function(_0x4e7489){var _0x34069b='';var _0x190390=0x0;try{fs[_0xd4a1('0x1f')](_0x5418a8);}catch(_0x296b55){logger['error'](_0x296b55);}if(_0x4e7489&&_0x4e7489[_0xd4a1('0x4e')]){_0x34069b=_0x4e7489[_0xd4a1('0x4e')][_0xd4a1('0x4f')](function(_0x1dc4e5){return _0x1dc4e5&&_0x1dc4e5[_0xd4a1('0x50')][0x0]&&_0x1dc4e5[_0xd4a1('0x50')][0x0][_0xd4a1('0x51')]?_0x1dc4e5[_0xd4a1('0x50')][0x0]['transcript']:'';})[_0xd4a1('0x52')]('\x0a');_0x190390=_0x4e7489[_0xd4a1('0x4e')][_0xd4a1('0x4f')](function(_0x211ce3){return _0x211ce3&&_0x211ce3['alternatives'][0x0]&&_0x211ce3[_0xd4a1('0x50')][0x0]['confidence']?_0x211ce3[_0xd4a1('0x50')][0x0][_0xd4a1('0x53')]:0x0;})[_0xd4a1('0x52')]('\x0a');}logger[_0xd4a1('0x25')]('googleASR\x20transcription',_0x34069b);logger[_0xd4a1('0x25')](_0xd4a1('0x54'),_0x190390);return{'transcript':_0x34069b,'confidence':_0x190390};})['catch'](function(_0x587da2){logger['error'](_0xd4a1('0x55'),_0x587da2[_0xd4a1('0x16')],_0x587da2[_0xd4a1('0x56')],_0x587da2[_0xd4a1('0x57')]);});};exports['googleDialogflow']=function(_0x118c44,_0x2e59d1,_0x4e49bc,_0x18c57b){var _0x5060fa=apiai(_0x2e59d1,{'language':_0x18c57b||'en'});return _0x5060fa['textRequest'](_0x4e49bc,{'sessionId':md5(_0x118c44)})[_0xd4a1('0x2d')](function(_0x46afc1){logger[_0xd4a1('0x25')](JSON[_0xd4a1('0x46')](_0x46afc1));return{'source':_0x46afc1[_0xd4a1('0x58')][_0xd4a1('0x59')],'resolvedQuery':_0x46afc1[_0xd4a1('0x58')][_0xd4a1('0x5a')],'action':_0x46afc1['result'][_0xd4a1('0x5b')],'actionIncomplete':_0x46afc1[_0xd4a1('0x58')][_0xd4a1('0x5c')],'speech':_0x46afc1[_0xd4a1('0x58')][_0xd4a1('0x5d')][_0xd4a1('0x5e')],'score':_0x46afc1[_0xd4a1('0x58')][_0xd4a1('0x5f')],'statusCode':_0x46afc1[_0xd4a1('0x60')]['code'],'endConversation':_0x46afc1[_0xd4a1('0x58')][_0xd4a1('0x61')][_0xd4a1('0x62')]||![],'isFallbackIntent':_0x46afc1[_0xd4a1('0x58')]['metadata']['isFallbackIntent']};});};exports[_0xd4a1('0x63')]=function(_0x4c9ac8,_0x20d5c5,_0xf9c542,_0x4ada6c,_0x387f9f,_0x1ceeff){var _0x19784f=_0x4ada6c[_0xd4a1('0x64')](/\\n/g,'\x0a');var _0x446aed={'credentials':{'private_key':_0x19784f,'client_email':_0xf9c542}};var _0x4aee1f=new dialogflow['SessionsClient'](_0x446aed);var _0x5db4fb=_0x4aee1f[_0xd4a1('0x65')](_0x20d5c5,md5(_0x4c9ac8));var _0x1c9467={'session':_0x5db4fb,'queryInput':{'text':{'text':_0x387f9f,'languageCode':_0x1ceeff}}};return _0x4aee1f[_0xd4a1('0x66')](_0x1c9467)['then'](function(_0x27e81a){if(_0x27e81a&&_0x27e81a[_0xd4a1('0x67')]){logger[_0xd4a1('0x25')](_0xd4a1('0x68'),JSON[_0xd4a1('0x46')](_0x27e81a));var _0x3976a1=_0x27e81a[0x0];if(_0x3976a1){var _0x1f74e6={'action':_0x3976a1[_0xd4a1('0x69')][_0xd4a1('0x5b')],'allRequiredParamsPresent':_0x3976a1['queryResult'][_0xd4a1('0x6a')],'endConversation':_0x3976a1['queryResult']['diagnosticInfo']&&_0x3976a1['queryResult'][_0xd4a1('0x6b')][_0xd4a1('0x6c')]?_0x3976a1['queryResult'][_0xd4a1('0x6b')][_0xd4a1('0x6c')][_0xd4a1('0x6d')][_0xd4a1('0x6e')]:![],'fulfillmentText':_0x3976a1[_0xd4a1('0x69')][_0xd4a1('0x6f')],'intentName':_0x3976a1[_0xd4a1('0x69')]['intent']['name'],'intentDisplayName':_0x3976a1[_0xd4a1('0x69')][_0xd4a1('0x70')]['displayName'],'isFallbackIntent':_0x3976a1['queryResult'][_0xd4a1('0x70')][_0xd4a1('0x71')],'languageCode':_0x3976a1[_0xd4a1('0x69')][_0xd4a1('0x72')],'queryText':_0x3976a1[_0xd4a1('0x69')][_0xd4a1('0x73')],'responseId':_0x3976a1[_0xd4a1('0x74')],'score':_0x3976a1['queryResult'][_0xd4a1('0x75')],'speech':_0x3976a1['queryResult'][_0xd4a1('0x6f')],'providerResponse':JSON[_0xd4a1('0x46')](_0x27e81a)};return _0x1f74e6;}}});};exports['tildeASR']=function(_0x22dd35,_0x172add,_0x39d50c,_0x3bf13d){return tilde['asr'](_0x22dd35,_0x172add,_0x39d50c,_0x3bf13d)['then'](function(_0x58ace6){try{fs[_0xd4a1('0x1f')](_0x22dd35);}catch(_0x50006d){logger[_0xd4a1('0x17')](_0x50006d);}logger[_0xd4a1('0x25')](_0xd4a1('0x76'),_0x58ace6['transcript']);logger[_0xd4a1('0x25')](_0xd4a1('0x77'),_0x58ace6[_0xd4a1('0x53')]);return _0x58ace6;});};exports[_0xd4a1('0x78')]=function(_0x3b39a6,_0x16d3fe,_0x1fa2ff,_0x4bf395,_0x52e064,_0x3d4c17){var _0x3a8603=path[_0xd4a1('0x3f')](__dirname,'tmp',rs['generate'](0x4)+'.mp3');var _0x3c9aa7;return aws[_0xd4a1('0x79')](_0x3b39a6,_0x16d3fe,_0x1fa2ff,_0x4bf395,_0x52e064,_0x3d4c17,_0x3a8603)['then'](function(){_0x3c9aa7=path[_0xd4a1('0x3f')](__dirname,_0xd4a1('0x28'),rs[_0xd4a1('0x29')](0x4)+_0xd4a1('0x2a'));return convertFile(_0x3a8603,_0x3c9aa7);})['then'](function(){try{fs[_0xd4a1('0x1f')](_0x3a8603);fs[_0xd4a1('0x2e')](_0x3c9aa7,_0xd4a1('0x3e'));}catch(_0x37b81c){logger['error'](_0x37b81c);}return _0x3c9aa7['split']('.')[0x0];});};exports[_0xd4a1('0x7a')]=function(_0x33fa87,_0x2c0098,_0x1372c3,_0x5366bf,_0x1c47a5,_0x10e1dd){return aws[_0xd4a1('0x7b')](_0x33fa87,_0x2c0098,_0x1372c3,_0x5366bf,_0x1c47a5,_0x10e1dd)[_0xd4a1('0x2d')](function(_0x260eab){logger['info'](JSON[_0xd4a1('0x46')](_0x260eab));return _0x260eab;});};exports[_0xd4a1('0x7c')]=function(_0x3697fc,_0x27d3e6,_0x34535b,_0x353eb9){var _0x5a6953=util[_0xd4a1('0x7d')](_0xd4a1('0x7e'),ISPEECH_API,_0x3697fc,encodeURIComponent(_0x27d3e6),_0x34535b,_0x353eb9);var _0x14e0b6=path[_0xd4a1('0x3f')](__dirname,_0xd4a1('0x28'),rs[_0xd4a1('0x29')](0x4)+_0xd4a1('0x3b'));var _0x33a29a;return downloadFile(_0x5a6953,_0x14e0b6)[_0xd4a1('0x2d')](function(){_0x33a29a=path[_0xd4a1('0x3f')](__dirname,_0xd4a1('0x28'),rs[_0xd4a1('0x29')](0x4)+_0xd4a1('0x2a'));return convertFile(_0x14e0b6,_0x33a29a);})[_0xd4a1('0x2d')](function(){try{fs[_0xd4a1('0x1f')](_0x14e0b6);fs[_0xd4a1('0x2e')](_0x33a29a,_0xd4a1('0x3e'));}catch(_0x1ff0fb){logger[_0xd4a1('0x17')](_0x1ff0fb);}return _0x33a29a[_0xd4a1('0x2f')]('.')[0x0];});};exports[_0xd4a1('0x7f')]=function(_0x493a66,_0x48ccef,_0x252040,_0x6845d2){var _0x270f8f=util[_0xd4a1('0x7d')](_0xd4a1('0x80'),ISPEECH_API,_0x48ccef,_0x252040,base64Encode(_0x493a66),_0x6845d2?util['format'](_0xd4a1('0x81'),encodeURIComponent(_0x6845d2)):_0xd4a1('0x82'));return uploadFile(_0x270f8f)[_0xd4a1('0x2d')](function(_0x292e74){return querystring[_0xd4a1('0xb')](_0x292e74);});};exports[_0xd4a1('0x83')]=function(_0x358b14,_0x1a8dd4){return sestek[_0xd4a1('0x84')](_0x358b14,_0x1a8dd4)[_0xd4a1('0x2d')](function(_0x40c678){logger[_0xd4a1('0x25')](JSON[_0xd4a1('0x46')](_0x40c678));var _0x2305c4={'speech':_0x40c678[_0xd4a1('0x85')],'action':_0x40c678[_0xd4a1('0x86')]?_0x40c678[_0xd4a1('0x86')]['CustomAction']:undefined,'actiondata':_0x40c678[_0xd4a1('0x86')]?_0x40c678[_0xd4a1('0x86')]['CustomActionData']:undefined};if(_0x40c678['channelData']&&_0x40c678['channelData'][_0xd4a1('0x87')]){return base64Decode(_0x40c678['channelData']['AudioFromTts'][_0xd4a1('0x88')],path[_0xd4a1('0x3f')](__dirname,_0xd4a1('0x28'),rs[_0xd4a1('0x29')](0x4)+_0xd4a1('0x2a')))[_0xd4a1('0x2d')](function(_0x2b5078){_0x2305c4[_0xd4a1('0x89')]=_0x2b5078;return _0x2305c4;});}return _0x2305c4;});};exports['dirName']=function(){return __dirname;};
\ No newline at end of file
index 68fee7f..f6a6b3f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdee=['./nda','exports'];(function(_0x596698,_0x12e79a){var _0x2175eb=function(_0x23c217){while(--_0x23c217){_0x596698['push'](_0x596698['shift']());}};_0x2175eb(++_0x12e79a);}(_0xbdee,0x19e));var _0xebde=function(_0x2c856c,_0x1eeaa6){_0x2c856c=_0x2c856c-0x0;var _0xa9d840=_0xbdee[_0x2c856c];return _0xa9d840;};var nda=require(_0xebde('0x0'));module[_0xebde('0x1')]={'nda':nda};
\ No newline at end of file
+var _0x0f0c=['./nda','exports'];(function(_0x125d72,_0x4f4eae){var _0x29ecaa=function(_0x560225){while(--_0x560225){_0x125d72['push'](_0x125d72['shift']());}};_0x29ecaa(++_0x4f4eae);}(_0x0f0c,0x132));var _0xc0f0=function(_0x517869,_0x1f383b){_0x517869=_0x517869-0x0;var _0x2e6dd7=_0x0f0c[_0x517869];return _0x2e6dd7;};var nda=require(_0xc0f0('0x0'));module[_0xc0f0('0x1')]={'nda':nda};
\ No newline at end of file
index 4b1cefc..b1b1f54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6b1=['calleridname','dnid','extension','text','access_token','project','body','ProjectName','channelData','AudioOutputSettings','audio/wav','custom_action','custom_action_data','info','stringify','request-promise','../../../../../config/logger','exports','resolve','ndauth_url','/token','password','POST','ndassistant_url','/api/NaturalDialogAssistant/v1/Run','Nda','uniqueid','callerid'];(function(_0x4d8325,_0x57600d){var _0x21656b=function(_0x15bba4){while(--_0x15bba4){_0x4d8325['push'](_0x4d8325['shift']());}};_0x21656b(++_0x57600d);}(_0xb6b1,0x17b));var _0x1b6b=function(_0x1d87fc,_0x1e5321){_0x1d87fc=_0x1d87fc-0x0;var _0x492b56=_0xb6b1[_0x1d87fc];return _0x492b56;};'use strict';var rp=require(_0x1b6b('0x0'));var url=require('url');var logger=require(_0x1b6b('0x1'))('agi');module[_0x1b6b('0x2')]=function(_0x29651a,_0x59b931){var _0x3f12e2={'method':'POST','uri':url[_0x1b6b('0x3')](_0x59b931[_0x1b6b('0x4')],_0x1b6b('0x5')),'form':{'grant_type':_0x1b6b('0x6'),'username':_0x59b931['username'],'password':_0x59b931[_0x1b6b('0x6')]},'json':!![]};return rp(_0x3f12e2)['then'](function(_0xae4115){var _0x5042f7={'method':_0x1b6b('0x7'),'uri':url[_0x1b6b('0x3')](_0x59b931[_0x1b6b('0x8')],_0x1b6b('0x9')),'body':{'type':_0x59b931['ndaactivity_type']||'message','channelId':_0x1b6b('0xa'),'conversation':{'id':_0x29651a[_0x1b6b('0xb')]},'from':{'id':_0x29651a[_0x1b6b('0xc')],'name':_0x29651a[_0x1b6b('0xd')]},'recipient':{'id':_0x29651a[_0x1b6b('0xe')],'name':_0x29651a[_0x1b6b('0xf')]},'text':_0x59b931[_0x1b6b('0x10')],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0xae4115[_0x1b6b('0x11')]},'json':!![]};if(_0x59b931[_0x1b6b('0x12')]){_0x5042f7[_0x1b6b('0x13')]['channelData'][_0x1b6b('0x14')]=_0x59b931['project'];}if(_0x59b931['ndagenerate_audio']=='1'){_0x5042f7[_0x1b6b('0x13')][_0x1b6b('0x15')][_0x1b6b('0x16')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x1b6b('0x17')};}if(_0x59b931[_0x1b6b('0x18')]){_0x5042f7[_0x1b6b('0x13')][_0x1b6b('0x15')]['CustomAction']=_0x59b931[_0x1b6b('0x18')];if(_0x59b931[_0x1b6b('0x19')]){_0x5042f7[_0x1b6b('0x13')][_0x1b6b('0x15')]['CustomActionData']=_0x59b931[_0x1b6b('0x19')];}}logger[_0x1b6b('0x1a')](JSON[_0x1b6b('0x1b')](_0x5042f7));return rp(_0x5042f7);});};
\ No newline at end of file
+var _0x65b3=['text','project','body','channelData','AudioOutputSettings','audio/wav','custom_action','CustomAction','custom_action_data','CustomActionData','info','stringify','request-promise','url','../../../../../config/logger','agi','exports','POST','resolve','/token','password','username','then','/api/NaturalDialogAssistant/v1/Run','ndaactivity_type','message','Nda','uniqueid','calleridname','dnid','extension'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x65b3,0xc6));var _0x365b=function(_0x5b1c50,_0x56e694){_0x5b1c50=_0x5b1c50-0x0;var _0x2d379b=_0x65b3[_0x5b1c50];return _0x2d379b;};'use strict';var rp=require(_0x365b('0x0'));var url=require(_0x365b('0x1'));var logger=require(_0x365b('0x2'))(_0x365b('0x3'));module[_0x365b('0x4')]=function(_0x86c875,_0x4b0b05){var _0x46fcf2={'method':_0x365b('0x5'),'uri':url[_0x365b('0x6')](_0x4b0b05['ndauth_url'],_0x365b('0x7')),'form':{'grant_type':_0x365b('0x8'),'username':_0x4b0b05[_0x365b('0x9')],'password':_0x4b0b05['password']},'json':!![]};return rp(_0x46fcf2)[_0x365b('0xa')](function(_0xe6670a){var _0x2ed50a={'method':_0x365b('0x5'),'uri':url[_0x365b('0x6')](_0x4b0b05['ndassistant_url'],_0x365b('0xb')),'body':{'type':_0x4b0b05[_0x365b('0xc')]||_0x365b('0xd'),'channelId':_0x365b('0xe'),'conversation':{'id':_0x86c875[_0x365b('0xf')]},'from':{'id':_0x86c875['callerid'],'name':_0x86c875[_0x365b('0x10')]},'recipient':{'id':_0x86c875[_0x365b('0x11')],'name':_0x86c875[_0x365b('0x12')]},'text':_0x4b0b05[_0x365b('0x13')],'channelData':{}},'headers':{'Authorization':'Bearer\x20'+_0xe6670a['access_token']},'json':!![]};if(_0x4b0b05[_0x365b('0x14')]){_0x2ed50a[_0x365b('0x15')][_0x365b('0x16')]['ProjectName']=_0x4b0b05[_0x365b('0x14')];}if(_0x4b0b05['ndagenerate_audio']=='1'){_0x2ed50a[_0x365b('0x15')][_0x365b('0x16')][_0x365b('0x17')]={'Generate':!![],'PutInStructuredPart':![],'ExpectedFormat':_0x365b('0x18')};}if(_0x4b0b05[_0x365b('0x19')]){_0x2ed50a[_0x365b('0x15')][_0x365b('0x16')][_0x365b('0x1a')]=_0x4b0b05[_0x365b('0x19')];if(_0x4b0b05[_0x365b('0x1b')]){_0x2ed50a[_0x365b('0x15')][_0x365b('0x16')][_0x365b('0x1c')]=_0x4b0b05[_0x365b('0x1b')];}}logger[_0x365b('0x1d')](JSON[_0x365b('0x1e')](_0x2ed50a));return rp(_0x2ed50a);});};
\ No newline at end of file
index c5874b8..a7e0e1e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x720e=['./lib/api','exports'];(function(_0x17a81a,_0x4092d8){var _0x4af0b5=function(_0x3d7785){while(--_0x3d7785){_0x17a81a['push'](_0x17a81a['shift']());}};_0x4af0b5(++_0x4092d8);}(_0x720e,0xec));var _0xe720=function(_0x5f5497,_0x50803a){_0x5f5497=_0x5f5497-0x0;var _0x10e943=_0x720e[_0x5f5497];return _0x10e943;};'use strict';var asr=require(_0xe720('0x0'));module[_0xe720('0x1')]=function(_0x17a358,_0xff9f46,_0x2c7967,_0x543a46){return asr(_0x17a358,_0xff9f46,_0x2c7967,_0x543a46);};
\ No newline at end of file
+var _0x96b8=['exports','./lib/api'];(function(_0x3be793,_0x592814){var _0x41b54f=function(_0xed1820){while(--_0xed1820){_0x3be793['push'](_0x3be793['shift']());}};_0x41b54f(++_0x592814);}(_0x96b8,0x1b9));var _0x896b=function(_0x313105,_0x448a5d){_0x313105=_0x313105-0x0;var _0x3c2d10=_0x96b8[_0x313105];return _0x3c2d10;};'use strict';var asr=require(_0x896b('0x0'));module[_0x896b('0x1')]=function(_0x41f8b3,_0x12929a,_0x806037,_0x5c520){return asr(_0x41f8b3,_0x12929a,_0x806037,_0x5c520);};
\ No newline at end of file
index 250434b..b448693 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf1ef=['message','bluebird','lodash','moment','../../../../../../config/logger','agi','exports','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','digest','Open\x20Tilde\x20ASR\x20socket','unix','send','createReadStream','close','EOS','error','Tilde\x20ASR\x20send\x20error','stringify','parse','status','result','final','hypotheses','transcript','likelihood','Success.','terminate','info','Not\x20available.\x20Max\x20load\x20limit\x20reached.','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','isNil','isObject','open'];(function(_0x4854d6,_0x2f1264){var _0x3885c0=function(_0x4d564d){while(--_0x4d564d){_0x4854d6['push'](_0x4854d6['shift']());}};_0x3885c0(++_0x2f1264);}(_0xf1ef,0x141));var _0xff1e=function(_0x39e3b7,_0x14e80d){_0x39e3b7=_0x39e3b7-0x0;var _0xf02968=_0xf1ef[_0x39e3b7];return _0xf02968;};'use strict';var BPromise=require(_0xff1e('0x0'));var _=require(_0xff1e('0x1'));var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xff1e('0x2'));var crypto=require('crypto');var logger=require(_0xff1e('0x3'))(_0xff1e('0x4'));module[_0xff1e('0x5')]=function(_0x50a5fd,_0x20751d,_0x431472,_0x291e5b){return new BPromise(function(_0x5377c6,_0x123fa3){logger['info'](_0xff1e('0x6'),_0x291e5b||_0xff1e('0x7'));var _0x408616=new WebSocket(_0x291e5b||_0xff1e('0x7'),{'perMessageDeflate':![]});var _0x22394d='';var _0x48a7fd='0';var _0x42642d='1';var _0x5766cf=_0xff1e('0x8');function _0x5668d5(_0x1434d9){var _0x4e96cd=crypto[_0xff1e('0x9')](_0xff1e('0xa'));_0x4e96cd['update'](_0x1434d9);return _0x4e96cd[_0xff1e('0xb')]('hex');}function _0xa562b6(){try{logger['info'](_0xff1e('0xc'));var _0x8c26e5=moment()[_0xff1e('0xd')]();var _0x2617f2=_0x5668d5(_0x8c26e5+_0x20751d+_0x431472);_0x408616[_0xff1e('0xe')](JSON['stringify']({'appID':_0x20751d,'timestamp':_0x8c26e5,'appKey':_0x2617f2}));var _0x467fc8=fs[_0xff1e('0xf')](_0x50a5fd);_0x467fc8['on']('data',function(_0x476d2c){_0x408616['send'](_0x476d2c);});_0x467fc8['on'](_0xff1e('0x10'),function(){_0x408616[_0xff1e('0xe')](_0xff1e('0x11'));});}catch(_0x19cd6c){logger[_0xff1e('0x12')](_0xff1e('0x13'),JSON[_0xff1e('0x14')](_0x19cd6c));_0x408616['terminate']();}}function _0x1019ef(_0x8d926d){try{if(_0x8d926d){var _0x3e883d=JSON[_0xff1e('0x15')](_0x8d926d);switch(_0x3e883d[_0xff1e('0x16')]){case 0x0:if(_0x3e883d['result']){if(_0x3e883d[_0xff1e('0x17')][_0xff1e('0x18')]){logger['info']('Tilde\x20ASR\x20hypoteses',JSON[_0xff1e('0x14')](_0x3e883d[_0xff1e('0x17')][_0xff1e('0x19')]));_0x22394d=_0x3e883d[_0xff1e('0x17')][_0xff1e('0x19')][0x0][_0xff1e('0x1a')];_0x48a7fd=_0x3e883d[_0xff1e('0x17')][_0xff1e('0x19')][0x0][_0xff1e('0x1b')];_0x42642d='0';_0x5766cf=_0xff1e('0x1c');_0x408616[_0xff1e('0x1d')]();}}break;case 0x1:logger[_0xff1e('0x1e')]('No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech');_0x42642d='1';_0x5766cf='No\x20speech.\x20Sent\x20when\x20the\x20incoming\x20audio\x20contains\x20a\x20large\x20portion\x20of\x20silence\x20or\x20non-speech';break;case 0x2:logger[_0xff1e('0x1e')]('Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.');_0x42642d='2';_0x5766cf='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger[_0xff1e('0x1e')](_0xff1e('0x1f'));_0x42642d='9';_0x5766cf='Not\x20available.\x20Max\x20load\x20limit\x20reached.';break;case 0xa:logger[_0xff1e('0x1e')]('Authentication\x20failed.');_0x42642d='10';_0x5766cf='Authentication\x20failed.';break;case 0xb:logger[_0xff1e('0x1e')](_0xff1e('0x20'));_0x42642d='11';_0x5766cf=_0xff1e('0x20');}}}catch(_0x4532fb){logger[_0xff1e('0x12')](_0xff1e('0x21'),JSON[_0xff1e('0x14')](_0x4532fb));_0x408616[_0xff1e('0x1d')]();}}function _0x1e9127(){logger['info'](_0xff1e('0x22'));_0x5377c6({'transcript':_0x22394d,'confidence':_0x48a7fd,'status':_0x42642d,'status_message':_0x5766cf});}function _0x24c2fc(_0x4ba49f){logger['error'](_0xff1e('0x23'));if(!_[_0xff1e('0x24')](_0x4ba49f)){logger[_0xff1e('0x12')](_[_0xff1e('0x25')](_0x4ba49f)?JSON['stringify'](_0x4ba49f):_0x4ba49f);}}_0x408616['on'](_0xff1e('0x26'),_0xa562b6);_0x408616['on'](_0xff1e('0x27'),_0x1019ef);_0x408616['on'](_0xff1e('0x10'),_0x1e9127);_0x408616['on'](_0xff1e('0x12'),_0x24c2fc);});};
\ No newline at end of file
+var _0x26fa=['hex','Open\x20Tilde\x20ASR\x20socket','send','stringify','createReadStream','data','close','EOS','error','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','isNil','isObject','open','message','moment','crypto','../../../../../../config/logger','agi','info','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','update','digest'];(function(_0x59c184,_0x531770){var _0x36ce7e=function(_0x5b90ec){while(--_0x5b90ec){_0x59c184['push'](_0x59c184['shift']());}};_0x36ce7e(++_0x531770);}(_0x26fa,0xb9));var _0xa26f=function(_0x317f9e,_0x45cc66){_0x317f9e=_0x317f9e-0x0;var _0xf1e6d5=_0x26fa[_0x317f9e];return _0xf1e6d5;};'use strict';var BPromise=require('bluebird');var _=require('lodash');var fs=require('fs');var WebSocket=require('ws');var moment=require(_0xa26f('0x0'));var crypto=require(_0xa26f('0x1'));var logger=require(_0xa26f('0x2'))(_0xa26f('0x3'));module['exports']=function(_0x1a0c03,_0x5869eb,_0xd596c5,_0x2a8161){return new BPromise(function(_0x3c4903,_0x309d85){logger[_0xa26f('0x4')]('Tilde\x20URI',_0x2a8161||_0xa26f('0x5'));var _0x44a74d=new WebSocket(_0x2a8161||_0xa26f('0x5'),{'perMessageDeflate':![]});var _0x30778a='';var _0x5b6453='0';var _0x2db86d='1';var _0x304e84=_0xa26f('0x6');function _0x1a165a(_0x544349){var _0x3910e8=crypto[_0xa26f('0x7')]('sha1');_0x3910e8[_0xa26f('0x8')](_0x544349);return _0x3910e8[_0xa26f('0x9')](_0xa26f('0xa'));}function _0x282a7c(){try{logger[_0xa26f('0x4')](_0xa26f('0xb'));var _0x3f8127=moment()['unix']();var _0x31fb47=_0x1a165a(_0x3f8127+_0x5869eb+_0xd596c5);_0x44a74d[_0xa26f('0xc')](JSON[_0xa26f('0xd')]({'appID':_0x5869eb,'timestamp':_0x3f8127,'appKey':_0x31fb47}));var _0x551f15=fs[_0xa26f('0xe')](_0x1a0c03);_0x551f15['on'](_0xa26f('0xf'),function(_0x169873){_0x44a74d[_0xa26f('0xc')](_0x169873);});_0x551f15['on'](_0xa26f('0x10'),function(){_0x44a74d[_0xa26f('0xc')](_0xa26f('0x11'));});}catch(_0x59f528){logger[_0xa26f('0x12')]('Tilde\x20ASR\x20send\x20error',JSON[_0xa26f('0xd')](_0x59f528));_0x44a74d['terminate']();}}function _0x5250f1(_0x40fbaf){try{if(_0x40fbaf){var _0x4531f0=JSON['parse'](_0x40fbaf);switch(_0x4531f0[_0xa26f('0x13')]){case 0x0:if(_0x4531f0[_0xa26f('0x14')]){if(_0x4531f0[_0xa26f('0x14')][_0xa26f('0x15')]){logger[_0xa26f('0x4')](_0xa26f('0x16'),JSON[_0xa26f('0xd')](_0x4531f0['result']['hypotheses']));_0x30778a=_0x4531f0[_0xa26f('0x14')][_0xa26f('0x17')][0x0][_0xa26f('0x18')];_0x5b6453=_0x4531f0[_0xa26f('0x14')][_0xa26f('0x17')][0x0][_0xa26f('0x19')];_0x2db86d='0';_0x304e84=_0xa26f('0x1a');_0x44a74d[_0xa26f('0x1b')]();}}break;case 0x1:logger[_0xa26f('0x4')](_0xa26f('0x6'));_0x2db86d='1';_0x304e84=_0xa26f('0x6');break;case 0x2:logger[_0xa26f('0x4')](_0xa26f('0x1c'));_0x2db86d='2';_0x304e84='Aborted.\x20Recognition\x20was\x20aborted\x20for\x20some\x20reason.';break;case 0x9:logger['info'](_0xa26f('0x1d'));_0x2db86d='9';_0x304e84=_0xa26f('0x1d');break;case 0xa:logger[_0xa26f('0x4')](_0xa26f('0x1e'));_0x2db86d='10';_0x304e84=_0xa26f('0x1e');break;case 0xb:logger[_0xa26f('0x4')]('All\x20recognition\x20workers\x20are\x20currently\x20in\x20use\x20and\x20real-time\x20recognition\x20is\x20not\x20possible.');_0x2db86d='11';_0x304e84=_0xa26f('0x1f');}}}catch(_0x2af7c8){logger['error'](_0xa26f('0x20'),JSON[_0xa26f('0xd')](_0x2af7c8));_0x44a74d['terminate']();}}function _0x2e5bf5(){logger[_0xa26f('0x4')](_0xa26f('0x21'));_0x3c4903({'transcript':_0x30778a,'confidence':_0x5b6453,'status':_0x2db86d,'status_message':_0x304e84});}function _0x168a67(_0x2e1370){logger[_0xa26f('0x12')](_0xa26f('0x22'));if(!_[_0xa26f('0x23')](_0x2e1370)){logger[_0xa26f('0x12')](_[_0xa26f('0x24')](_0x2e1370)?JSON[_0xa26f('0xd')](_0x2e1370):_0x2e1370);}}_0x44a74d['on'](_0xa26f('0x25'),_0x282a7c);_0x44a74d['on'](_0xa26f('0x26'),_0x5250f1);_0x44a74d['on']('close',_0x2e5bf5);_0x44a74d['on']('error',_0x168a67);});};
\ No newline at end of file
index 3922bdc..24280b3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc4b1=['./asr','exports'];(function(_0x511c73,_0x56695b){var _0x4813cc=function(_0x377b3a){while(--_0x377b3a){_0x511c73['push'](_0x511c73['shift']());}};_0x4813cc(++_0x56695b);}(_0xc4b1,0x136));var _0x1c4b=function(_0x9df060,_0x253d33){_0x9df060=_0x9df060-0x0;var _0x338dfe=_0xc4b1[_0x9df060];return _0x338dfe;};var asr=require(_0x1c4b('0x0'));module[_0x1c4b('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x61b9=['./asr','exports'];(function(_0x2f7aa6,_0x2072e5){var _0x18d006=function(_0x21f07b){while(--_0x21f07b){_0x2f7aa6['push'](_0x2f7aa6['shift']());}};_0x18d006(++_0x2072e5);}(_0x61b9,0x1ec));var _0x961b=function(_0x2fff83,_0x29d5fe){_0x2fff83=_0x2fff83-0x0;var _0xa2a722=_0x61b9[_0x2fff83];return _0xa2a722;};var asr=require(_0x961b('0x0'));module[_0x961b('0x1')]={'asr':asr};
\ No newline at end of file
index 0764fef..90c0e76 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x82ae=['listening','emit','E_AGI_SERVER_ERROR','E_AGI_SERVER_VOICE_DISABLED','E_AGI_SERVER_MAXCONNECTION','destroy','ready','connection','code','close','E_AGI_SERVER_CLOSE','nextTick','inherits','exports','util','net','events','EventEmitter','./error','127.0.0.1','error','createServer'];(function(_0x3eed36,_0x2611ba){var _0xf90070=function(_0x192047){while(--_0x192047){_0x3eed36['push'](_0x3eed36['shift']());}};_0xf90070(++_0x2611ba);}(_0x82ae,0x92));var _0xe82a=function(_0x4b673d,_0x387dc6){_0x4b673d=_0x4b673d-0x0;var _0x175654=_0x82ae[_0x4b673d];return _0x175654;};'use strict';var util=require(_0xe82a('0x0'));var net=require(_0xe82a('0x1'));var EventEmitter=require(_0xe82a('0x2'))[_0xe82a('0x3')];var AGIError=require(_0xe82a('0x4'));var AGIChannel=require('./channel');var AGIServer=function(_0x5ec1c6,_0x173bac,_0x11533a){var _0x399972=this,_0x5ec1c6=_0x5ec1c6||0x11dd,_0x173bac=_0x173bac||_0xe82a('0x5'),_0x59e588=null,_0x51a7dc=0x0;EventEmitter['call'](_0x399972);function _0x429002(){if(!_0x5ec1c6){_0x399972['emit'](_0xe82a('0x6'),new AGIError('E_AGI_ARGUMENT_PORT'));return![];}_0x59e588=net[_0xe82a('0x7')]();_0x59e588['listen'](_0x5ec1c6,_0x173bac);_0x59e588['on'](_0xe82a('0x8'),function(){_0x399972[_0xe82a('0x9')]('listening');});_0x59e588['on']('connection',function(_0x2117c3){_0x59e588['getConnections'](function(_0x3fb404,_0xb08ee0){if(_0x3fb404){_0x399972[_0xe82a('0x9')](_0xe82a('0x6'),new AGIError(_0xe82a('0xa'),_0x3fb404));}else if(_0x11533a&&_0x11533a<0x0){_0x399972[_0xe82a('0x9')](_0xe82a('0x6'),new AGIError(_0xe82a('0xb')));_0x2117c3['destroy']();}else if(_0x11533a&&_0x11533a>0x0&&_0x11533a<_0xb08ee0){_0x51a7dc+=0x1;_0x399972[_0xe82a('0x9')](_0xe82a('0x6'),new AGIError(_0xe82a('0xc'),_0x51a7dc));_0x2117c3[_0xe82a('0xd')]();}else{var _0x31fee6=new AGIChannel(_0x2117c3);_0x31fee6['on'](_0xe82a('0xe'),function(){_0x399972[_0xe82a('0x9')](_0xe82a('0xf'),_0x31fee6);});}});});_0x59e588['on']('error',function(_0x522d8d){_0x399972[_0xe82a('0x9')]('error',new AGIError('E_AGI_SERVER_ERROR',_0x522d8d[_0xe82a('0x10')]));});_0x59e588['on'](_0xe82a('0x11'),function(){_0x399972[_0xe82a('0x9')](_0xe82a('0x11'),new AGIError(_0xe82a('0x12')));});}process[_0xe82a('0x13')](function(){_0x429002();});};util[_0xe82a('0x14')](AGIServer,EventEmitter);module[_0xe82a('0x15')]=function(_0x4dc8b3,_0x47fc06,_0x1814bb){return new AGIServer(_0x4dc8b3,_0x47fc06,_0x1814bb);};
\ No newline at end of file
+var _0x9c44=['./error','./channel','127.0.0.1','call','emit','error','createServer','listen','listening','getConnections','destroy','E_AGI_SERVER_MAXCONNECTION','ready','connection','E_AGI_SERVER_ERROR','code','close','E_AGI_SERVER_CLOSE','nextTick','events','EventEmitter'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9c44,0x178));var _0x49c4=function(_0x2b7764,_0x2606f1){_0x2b7764=_0x2b7764-0x0;var _0x848dcb=_0x9c44[_0x2b7764];return _0x848dcb;};'use strict';var util=require('util');var net=require('net');var EventEmitter=require(_0x49c4('0x0'))[_0x49c4('0x1')];var AGIError=require(_0x49c4('0x2'));var AGIChannel=require(_0x49c4('0x3'));var AGIServer=function(_0x455700,_0x2ad237,_0x4e0313){var _0x4941f1=this;var _0x41a183=null;var _0x57effd=0x0;if(!_0x455700)_0x455700=0x11dd;if(!_0x2ad237)_0x2ad237=_0x49c4('0x4');EventEmitter[_0x49c4('0x5')](_0x4941f1);function _0x69bc41(){if(!_0x455700){_0x4941f1[_0x49c4('0x6')](_0x49c4('0x7'),new AGIError('E_AGI_ARGUMENT_PORT'));return![];}_0x41a183=net[_0x49c4('0x8')]();_0x41a183[_0x49c4('0x9')](_0x455700,_0x2ad237);_0x41a183['on'](_0x49c4('0xa'),function(){_0x4941f1[_0x49c4('0x6')]('listening');});_0x41a183['on']('connection',function(_0x451ea6){_0x41a183[_0x49c4('0xb')](function(_0x58cad7,_0xb611a1){if(_0x58cad7){_0x4941f1[_0x49c4('0x6')]('error',new AGIError('E_AGI_SERVER_ERROR',_0x58cad7));}else if(_0x4e0313&&_0x4e0313<0x0){_0x4941f1[_0x49c4('0x6')](_0x49c4('0x7'),new AGIError('E_AGI_SERVER_VOICE_DISABLED'));_0x451ea6[_0x49c4('0xc')]();}else if(_0x4e0313&&_0x4e0313>0x0&&_0x4e0313<_0xb611a1){_0x57effd+=0x1;_0x4941f1[_0x49c4('0x6')]('error',new AGIError(_0x49c4('0xd'),_0x57effd));_0x451ea6[_0x49c4('0xc')]();}else{var _0x21f15a=new AGIChannel(_0x451ea6);_0x21f15a['on'](_0x49c4('0xe'),function(){_0x4941f1[_0x49c4('0x6')](_0x49c4('0xf'),_0x21f15a);});}});});_0x41a183['on'](_0x49c4('0x7'),function(_0x3de397){_0x4941f1['emit'](_0x49c4('0x7'),new AGIError(_0x49c4('0x10'),_0x3de397[_0x49c4('0x11')]));});_0x41a183['on'](_0x49c4('0x12'),function(){_0x4941f1[_0x49c4('0x6')]('close',new AGIError(_0x49c4('0x13')));});}process[_0x49c4('0x14')](function(){_0x69bc41();});};util['inherits'](AGIServer,EventEmitter);module['exports']=function(_0x3c782d,_0x2f82d5,_0x3addb2){return new AGIServer(_0x3c782d,_0x2f82d5,_0x3addb2);};
\ No newline at end of file
index 6593da3..56df877 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd20=['client_email','private_key','dialogflowV2_language','sestekNDA','ispeechTTS','key','ispeech_tts_language','speed','ispeechASR','ispeech_asr_language','isConfigured','model','awsPolly','aws_access_key_id','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','clone','replaceObjectAllVariables','hasOwnProperty','isPlainObject','recursiveNodeIndex','isArray','length','replaceAllVariables','saveRestApiResult','%s.%s','setVariable','split','extra','result','retry','maxRetry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','noop','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','getAndSetVariable','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','MRCP_RECOG_TRANSCRIPT','RECOG_INSTANCE()','MRCP_RECOG_INSTANCE','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','command','args','Enter\x20in\x20ANSWER\x20(%s)\x20block','Wait\x20%s\x20seconds\x20before\x20answer','wait','list_id','no\x20list\x20selected','delay','add','callback_priority','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','no\x20text\x20configured','Executed\x20command\x20MRCPSynth\x20%s','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','LUMENVOX_ASR_CONFIDENCE','LUMENVOX_ASR_TRANSCRIPT','LUMENVOX_ASR_INSTANCE','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','odbc_id','no\x20database\x20selected','variable_id','no\x20variable\x20selected\x20for\x20the\x20result','no\x20variable\x20found','forEach','keys','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','dial','Enter\x20in\x20DIAL\x20(%s)\x20block','no\x20user\x20selected','sip_id','no\x20user\x20found','DIAL','SIP/%s','opts','url','Executed\x20command\x20%s','dialogflow','Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block','createSquareMessage','out','Dialogflow\x20Result\x20%s','speech','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20anguage\x20configured','Trying\x20DialogflowV2:\x20%s','providerResponse','DIALOGFLOW_%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','ndauth_url','no\x20ndauth\x20url\x20configured','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','SESTEK_NDA_%s','audiofile','Sestek\x20NDA\x20%s\x20file\x20created','streamFile','unlink','.wav','SestekNDA\x20is\x20unreachable','end','Enter\x20in\x20END\x20(%s)\x20block','ext_dial','Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block','trunk_id','no\x20trunk\x20found','trunk_name','no\x20trunk\x20selected','SIP/%s/%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','file_id','no\x20file\x20audio\x20found','maxdigit','test','mindigit','hiddendigitsnum','first','substr','goal','Enter\x20in\x20GOAL\x20(%s)\x20block','goalname','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','no\x20valid\x20credentials\x20configured','Trying\x20aws\x20Polly\x20%s','awslex','Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block','no\x20bot\x20name\x20configured','bot','Trying\x20Amazon\x20Lex:\x20%s','isString','AWS_LEX_%s','Amazon\x20Lex\x20ready\x20for\x20fulfillment','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','no\x20key\x20configured','wav','%s/recordings/%s','NOBEEP','intKey','google\x20%s\x20file\x20created','GOOGLE_ASR_%s','GoogleASR\x20Result\x20%s','Enter\x20in\x20TILDEASR\x20(%s)\x20block','no\x20appid\x20configured','no\x20appsecret\x20configured','generate','recordFile','tilde\x20%s\x20file\x20created','TILDE_ASR_%s','TildeASR\x20Result\x20%s','Enter\x20in\x20GOTO\x20(%s)\x20block','Enter\x20in\x20GOTOIF\x20(%s)\x20block','condition','no\x20condition\x20configured','true','false','EVAL\x20CONDITION\x20%s\x20%s','gotoiftime','interval_id','IFTIME\x20%s\x20%s','hangup','ispeechasr','beep','ispeech\x20%s\x20file\x20created','ISPEECH_ASR_%s','IspeechASR\x20Result\x20%s','ispeechtts','login','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','success','AGENT\x20%s\x20NOT\x20FOUND\x20BY','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','failure','math','operation','math\x20%s','menu','no\x20file\x20audio\x20selected','response','digit','Enter\x20in\x20NOOP\x20(%s)\x20block','output','getPause','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\x20found','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','gosub','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','no\x20url\x20configured','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','%s_STATUS_MESSAGE','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','Enter\x20in\x20SAYDIGITS\x20(%s)\x20block','sayDigits','digits','saynumber','number','sayphonetic','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','account_id','no\x20mail\x20account\x20found','\x22%s\x22\x20<%s>','email','Smtp','user','bcc','template_id','debug','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','smtpOptions','Mail\x20message\x20added\x20to\x20outgoing\x20process','SENDFAX\x20block\x20not\x20implemented','Enter\x20in\x20SENDSMS\x20(%s)\x20block','sms_account_id','no\x20sms\x20account\x20configured','getSmsAccount','no\x20sms\x20account\x20found','Trying\x20SendSMS\x20with\x20account\x20%s','createSmsMessage','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','answer','yes','Answer','Skipped\x20Answer','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','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','host','127.0.0.1','AGI','Enter\x20in\x20SYSTEM\x20(%s)\x20block','Enter\x20in\x20Google\x20Cloud\x20TTS\x20(%s)\x20block','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\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','replaceAll','join','exports','util','odbc','randomstring','moment','mustache','request-promise','agi','../../config/environment','../../config/environment/shared','/var/opt/motion2/server/files','rawHeaders','getdigits','getsecretdigits','mailRpc','prototype','getVariable','getVariableById','name','getVoiceQueue','rpc','getSquareProject','getSquareProjectById','catch','getSquareOdbc','getSquareOdbcById','then','getUser','getUserById','getTrunk','getTrunkById','getSound','getSoundById','save_name','getMailAccount','sendMailMessage','getIntervals','IntervalId','interval','map','Intervals','format','%s/sounds/converted/%s','getQueryOdbc','open','error','Error\x20getting\x20ODBC\x20connection\x20%s','info','ODBC\x20connection\x20successfully','query','Error\x20executing\x20query\x20%s','Query\x20executed\x20correctly\x20%s','close','Error\x20closing\x20connection\x20to\x20odbc\x20%s','createSquareDetailsReport','channel','uniqueid','label','agicommand','arg_1','callerid','createSquareRecording','context','extension','accountcode','file','createCmContact','isEmpty','isNil','random','lastName','phone','scheduledAt','callback','Callback\x20scheduled\x20at\x20','toString','getPauseById','agent','agentPause','agentUnpause','agentLogout','agentLogin','internal','%s/%s@from-sip/n','LOCAL','shellCommand','exec','replace','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','MALE','audioEncoding','googleTTS','google_tts_language','restAPI','method','timeout','includes','POST','PUT','toUpperCase','rawBody','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','stringify','body','statusCode','statusMessage','message','500\x20-\x20Internal\x20Server\x20Error','options','googleDialogflow','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id'];(function(_0x501125,_0x216fc0){var _0xd041a2=function(_0x48a56c){while(--_0x48a56c){_0x501125['push'](_0x501125['shift']());}};_0xd041a2(++_0x216fc0);}(_0xbd20,0x14a));var _0x0bd2=function(_0x46c9a5,_0x1cb9e7){_0x46c9a5=_0x46c9a5-0x0;var _0x5e3eec=_0xbd20[_0x46c9a5];return _0x5e3eec;};'use strict';var fs=require('fs');var util=require(_0x0bd2('0x0'));var _=require('lodash');var sh=require('shelljs');var odbc=require(_0x0bd2('0x1'))();var rs=require(_0x0bd2('0x2'));var moment=require(_0x0bd2('0x3'));var Mustache=require(_0x0bd2('0x4'));var rp=require(_0x0bd2('0x5'));var logger=require('../../config/logger')(_0x0bd2('0x6'));var config=require(_0x0bd2('0x7'));var shared=require(_0x0bd2('0x8'));var scripts=require('./scripts');var FILES_PATH=_0x0bd2('0x9');var recursiveMapAttributes=[_0x0bd2('0xa'),'rawBody'];var verticesWithRetry=['menu',_0x0bd2('0xb'),_0x0bd2('0xc')];var AGIVertices=function(_0x3d1092,_0xefa2ed,_0x473068){this['channel']=_0x3d1092;this['rpc']=_0xefa2ed;this[_0x0bd2('0xd')]=_0x473068;};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0xf')]=function(_0x47218e,_0x336dca){this['rpc'][_0x0bd2('0x10')](_0x47218e)['then'](function(_0x196a05){_0x336dca(null,_0x196a05?_0x196a05[_0x0bd2('0x11')]:![]);})['catch'](function(_0x5f0205){_0x336dca(_0x5f0205);});};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x12')]=function(_0x2f2245,_0x2cf837){this[_0x0bd2('0x13')]['getVoiceQueueById'](_0x2f2245)['then'](function(_0x15ac74){_0x2cf837(null,_0x15ac74?_0x15ac74[_0x0bd2('0x11')]:![]);})['catch'](function(_0x283f31){_0x2cf837(_0x283f31);});};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x14')]=function(_0x6502ea,_0x3baf2e){this[_0x0bd2('0x13')][_0x0bd2('0x15')](_0x6502ea)['then'](function(_0x56902d){_0x3baf2e(null,_0x56902d?_0x56902d[_0x0bd2('0x11')]:![]);})[_0x0bd2('0x16')](function(_0x452a9b){_0x3baf2e(_0x452a9b);});};AGIVertices['prototype'][_0x0bd2('0x17')]=function(_0x48e632,_0x34a093){this['rpc'][_0x0bd2('0x18')](_0x48e632)[_0x0bd2('0x19')](function(_0x3b3c87){_0x34a093(null,_0x3b3c87?_0x3b3c87['dsn']:![]);})[_0x0bd2('0x16')](function(_0x21bb2c){_0x34a093(_0x21bb2c);});};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x1a')]=function(_0xff78ae,_0x5cdac7){this[_0x0bd2('0x13')][_0x0bd2('0x1b')](_0xff78ae)[_0x0bd2('0x19')](function(_0x6d2f5e){_0x5cdac7(null,_0x6d2f5e?_0x6d2f5e[_0x0bd2('0x11')]:![]);})[_0x0bd2('0x16')](function(_0xe47fb){_0x5cdac7(_0xe47fb);});};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x1c')]=function(_0x272d93,_0x2beb76){this[_0x0bd2('0x13')][_0x0bd2('0x1d')](_0x272d93)[_0x0bd2('0x19')](function(_0x1b4c9e){_0x2beb76(null,_0x1b4c9e?_0x1b4c9e[_0x0bd2('0x11')]:![]);})[_0x0bd2('0x16')](function(_0x5f0514){_0x2beb76(_0x5f0514);});};AGIVertices['prototype'][_0x0bd2('0x1e')]=function(_0x33d9e7,_0x3bdefc){var _0x8098b9=this;this[_0x0bd2('0x13')][_0x0bd2('0x1f')](_0x33d9e7)['then'](function(_0x459bd6){_0x3bdefc(null,_0x459bd6?_0x8098b9['getSoundPath'](_0x459bd6[_0x0bd2('0x20')]):![]);})['catch'](function(_0x94a33b){_0x3bdefc(_0x94a33b);});};AGIVertices['prototype'][_0x0bd2('0x21')]=function(_0x2c7196,_0x5bdbf5){this[_0x0bd2('0x13')]['getMailAccountById'](_0x2c7196)['then'](function(_0xe6b5c0){_0x5bdbf5(null,_0xe6b5c0?_0xe6b5c0:![]);})[_0x0bd2('0x16')](function(_0x132d7d){_0x5bdbf5(_0x132d7d);});};AGIVertices['prototype'][_0x0bd2('0x22')]=function(_0x472414,_0x4a323f,_0x1d692f){this[_0x0bd2('0xd')][_0x0bd2('0x22')](_0x472414,_0x4a323f)['then'](function(){_0x1d692f(null);})[_0x0bd2('0x16')](function(_0x4138f2){_0x1d692f(_0x4138f2);});};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x23')]=function(_0xab85d4,_0x546ff3){this[_0x0bd2('0x13')]['getIntervalById'](_0xab85d4)[_0x0bd2('0x19')](function(_0x344cff){if(_0x344cff){if(_0x344cff[_0x0bd2('0x24')]){_0x546ff3(null,[_0x344cff[_0x0bd2('0x25')]]);}else{_0x546ff3(null,_[_0x0bd2('0x26')](_0x344cff[_0x0bd2('0x27')],'interval'));}}else{_0x546ff3(null,![]);}})[_0x0bd2('0x16')](function(_0x469399){_0x546ff3(_0x469399);});};AGIVertices[_0x0bd2('0xe')]['getSoundPath']=function(_0x515e68){return util[_0x0bd2('0x28')](_0x0bd2('0x29'),FILES_PATH,_0x515e68);};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x2a')]=function(_0x4de750,_0x4e5061,_0x142ce3){odbc[_0x0bd2('0x2b')](_0x4de750,function(_0x499d9e){if(_0x499d9e){logger[_0x0bd2('0x2c')](_0x0bd2('0x2d'),_0x499d9e);_0x142ce3(_0x499d9e);}else{logger[_0x0bd2('0x2e')](_0x0bd2('0x2f'));odbc[_0x0bd2('0x30')](_0x4e5061,function(_0x17c378,_0x4e5924){if(_0x17c378){logger[_0x0bd2('0x2e')](_0x0bd2('0x31'),_0x4e5061);_0x142ce3(_0x17c378);}else{logger[_0x0bd2('0x2e')](_0x0bd2('0x32'),_0x4e5061);odbc[_0x0bd2('0x33')](function(_0x373135){if(_0x373135){logger[_0x0bd2('0x2c')](_0x0bd2('0x34'),_0x373135);}_0x142ce3(null,_0x4e5924);});}});}});};AGIVertices[_0x0bd2('0xe')]['getSmsAccount']=function(_0x44a7e9,_0x545c53){this[_0x0bd2('0x13')]['getSmsAccountById'](_0x44a7e9)[_0x0bd2('0x19')](function(_0x39fb7a){_0x545c53(null,_0x39fb7a?_0x39fb7a:![]);})[_0x0bd2('0x16')](function(_0x5a074a){_0x545c53(_0x5a074a);});};AGIVertices[_0x0bd2('0xe')]['createSmsMessage']=function(_0x133ba5,_0x1e9663){this[_0x0bd2('0x13')]['createSmsMessage'](_0x133ba5)['then'](function(_0x552ece){_0x1e9663(null,_0x552ece);})[_0x0bd2('0x16')](function(_0x543bb5){_0x1e9663(_0x543bb5);});};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x35')]=function(_0x385dec,_0x27c0d6,_0x3af9c1){this[_0x0bd2('0x13')][_0x0bd2('0x35')]({'uniqueid':this[_0x0bd2('0x36')][_0x0bd2('0x37')],'node':_0x385dec[_0x0bd2('0x38')],'application':_0x385dec[_0x0bd2('0x39')],'data':_0x27c0d6||null,'project_name':this[_0x0bd2('0x36')][_0x0bd2('0x3a')],'callerid':this[_0x0bd2('0x36')][_0x0bd2('0x3b')]})[_0x0bd2('0x19')](function(_0x2466e6){if(_0x3af9c1){_0x3af9c1(null,_0x2466e6);}})[_0x0bd2('0x16')](function(_0x7a8643){if(_0x3af9c1){_0x3af9c1(_0x7a8643);}});};AGIVertices[_0x0bd2('0xe')]['createSquareRecording']=function(_0x2c5b50,_0x26233a,_0x4b1180,_0x4fef17){this['rpc'][_0x0bd2('0x3c')]({'uniqueid':this[_0x0bd2('0x36')][_0x0bd2('0x37')],'callerid':this[_0x0bd2('0x36')][_0x0bd2('0x3b')],'calleridname':this[_0x0bd2('0x36')]['calleridname'],'context':this[_0x0bd2('0x36')][_0x0bd2('0x3d')],'extension':this[_0x0bd2('0x36')][_0x0bd2('0x3e')],'priority':this['channel']['priority'],'accountcode':this[_0x0bd2('0x36')][_0x0bd2('0x3f')],'dnid':this[_0x0bd2('0x36')]['dnid'],'projectName':this[_0x0bd2('0x36')][_0x0bd2('0x3a')],'saveName':_0x26233a,'filename':_0x2c5b50[_0x0bd2('0x40')]||_0x26233a,'savePath':_0x4b1180})['then'](function(_0x3bd3d2){_0x4fef17(null,_0x3bd3d2);})[_0x0bd2('0x16')](function(_0x286cb4){_0x4fef17(_0x286cb4);});};AGIVertices[_0x0bd2('0xe')]['createSquareMessage']=function(_0x5debdd,_0xf0077f,_0x40a36a,_0x572b8e,_0x545a79){this[_0x0bd2('0x13')]['createSquareMessage']({'uniqueid':this['channel'][_0x0bd2('0x37')],'body':_0x5debdd,'direction':_0xf0077f,'providerName':_0x40a36a,'providerResponse':_0x572b8e})[_0x0bd2('0x19')](function(_0x6a468b){if(_0x545a79){_0x545a79(null,_0x6a468b);}})[_0x0bd2('0x16')](function(_0x32f00e){if(_0x545a79){_0x545a79(_0x32f00e);}});};AGIVertices['prototype'][_0x0bd2('0x41')]=function(_0x1ecc80,_0x4b8a8e){this[_0x0bd2('0x13')][_0x0bd2('0x41')]({'firstName':_[_0x0bd2('0x42')](_0x1ecc80[_0x0bd2('0x11')])||_[_0x0bd2('0x43')](_0x1ecc80[_0x0bd2('0x11')])?'callback_'+Math[_0x0bd2('0x44')]():_0x1ecc80[_0x0bd2('0x11')],'lastName':_[_0x0bd2('0x42')](_0x1ecc80['lastName'])||_[_0x0bd2('0x43')](_0x1ecc80['lastName'])?null:_0x1ecc80[_0x0bd2('0x45')],'phone':_0x1ecc80[_0x0bd2('0x46')],'ListId':_0x1ecc80['list_id'],'scheduledat':_0x1ecc80[_0x0bd2('0x47')],'callbackUniqueid':this[_0x0bd2('0x36')]['uniqueid'],'tags':_0x0bd2('0x48'),'description':_0x0bd2('0x49')+_0x1ecc80['scheduledAt'][_0x0bd2('0x4a')](),'priority':_0x1ecc80['callback_priority']})[_0x0bd2('0x19')](function(_0xc88a97){_0x4b8a8e(null,_0xc88a97);})[_0x0bd2('0x16')](function(_0x190b71){_0x4b8a8e(_0x190b71);});};AGIVertices[_0x0bd2('0xe')]['getPause']=function(_0x58dae3,_0xad4469){this[_0x0bd2('0x13')][_0x0bd2('0x4b')](_0x58dae3)['then'](function(_0x1a45a1){_0xad4469(null,_0x1a45a1?_0x1a45a1['name']:![]);})[_0x0bd2('0x16')](function(_0x5b7fb6){_0xad4469(_0x5b7fb6);});};AGIVertices[_0x0bd2('0xe')]['agentPause']=function(_0xee7c7f,_0x38010c,_0xfde99b){var _0x12434e={'role':_0x0bd2('0x4c')};_0x12434e[_0xee7c7f]=this[_0x0bd2('0x36')][_0x0bd2('0x3b')];this[_0x0bd2('0x13')][_0x0bd2('0x4d')](_0x12434e,_0x38010c,this[_0x0bd2('0x36')][_0x0bd2('0x37')])['then'](function(_0x42ae73){_0xfde99b(null,_['isNil'](_0x42ae73)?![]:!![]);})['catch'](function(_0x6b063){logger[_0x0bd2('0x2c')](_0x6b063);_0xfde99b(null,![]);});};AGIVertices[_0x0bd2('0xe')]['agentUnpause']=function(_0x21fb71,_0x5b45d2){var _0x31c724={'role':'agent'};_0x31c724[_0x21fb71]=this[_0x0bd2('0x36')][_0x0bd2('0x3b')];this[_0x0bd2('0x13')][_0x0bd2('0x4e')](_0x31c724)[_0x0bd2('0x19')](function(_0x5fe1d5){_0x5b45d2(null,_[_0x0bd2('0x43')](_0x5fe1d5)?![]:!![]);})[_0x0bd2('0x16')](function(_0x364841){logger[_0x0bd2('0x2c')](_0x364841);_0x5b45d2(null,![]);});};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x4f')]=function(_0x5d6b70,_0x261e1c){var _0x26061f={'role':_0x0bd2('0x4c')};_0x26061f[_0x5d6b70]=this[_0x0bd2('0x36')][_0x0bd2('0x3b')];this['rpc']['agentLogout'](_0x26061f)[_0x0bd2('0x19')](function(_0x34e19c){_0x261e1c(null,_['isNil'](_0x34e19c)?![]:!![]);})['catch'](function(_0x5f1e99){logger['error'](_0x5f1e99);_0x261e1c(null,![]);});};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x50')]=function(_0x5641df,_0x1a060d){var _0x2a1ada={'role':_0x0bd2('0x4c')};_0x2a1ada[_0x5641df]=this[_0x0bd2('0x36')][_0x0bd2('0x3b')];var _0x4e9d40=_0x5641df!=_0x0bd2('0x51')?util[_0x0bd2('0x28')](_0x0bd2('0x52'),_0x0bd2('0x53'),this['channel']['callerid']):undefined;this[_0x0bd2('0x13')]['agentLogin'](_0x2a1ada,_0x4e9d40)['then'](function(_0x855cce){_0x1a060d(null,_[_0x0bd2('0x43')](_0x855cce)?![]:!![]);})[_0x0bd2('0x16')](function(_0x464742){logger['error'](_0x464742);_0x1a060d(null,![]);});};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x54')]=function(_0xe12967,_0x391be9){sh[_0x0bd2('0x55')](_['trim'](_0xe12967),function(_0x3dcd62,_0x2048fc){var _0x48f49a=_0x2048fc[_0x0bd2('0x56')](/(\r\n|\n|\r)/gm,'');_0x391be9(null,_0x48f49a);});};AGIVertices[_0x0bd2('0xe')]['googleCloudTTS']=function(_0x33e6e9,_0x22210b){scripts[_0x0bd2('0x57')](_0x33e6e9[_0x0bd2('0x58')],_0x33e6e9[_0x0bd2('0x59')]||'text',_0x33e6e9[_0x0bd2('0x5a')],_0x33e6e9[_0x0bd2('0x5b')]||_0x0bd2('0x5c'),_0x33e6e9[_0x0bd2('0x5d')]||_0x0bd2('0x5e'),_0x33e6e9[_0x0bd2('0x5f')]||'MP3')[_0x0bd2('0x19')](function(_0x36e3a3){_0x22210b(null,_0x36e3a3);})[_0x0bd2('0x16')](function(_0x48604e){_0x22210b(_0x48604e);});};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x60')]=function(_0x4ac5fa,_0x204408){scripts[_0x0bd2('0x60')](_0x4ac5fa[_0x0bd2('0x5a')],_0x4ac5fa[_0x0bd2('0x61')]||'en',0x1)['then'](function(_0x20a317){_0x204408(null,_0x20a317);})[_0x0bd2('0x16')](function(_0x19d5e0){_0x204408(_0x19d5e0);});};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x62')]=function(_0x528c8a,_0x5b47f6){var _0x455979={'uri':_0x528c8a['url'],'method':_0x528c8a[_0x0bd2('0x63')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x528c8a[_0x0bd2('0x64')])==='number'&&parseInt(_0x528c8a[_0x0bd2('0x64')])>=0x1?parseInt(_0x528c8a[_0x0bd2('0x64')])*0x3e8:0x5*0x3e8};if(_[_0x0bd2('0x65')]([_0x0bd2('0x66'),_0x0bd2('0x67')],_0x455979[_0x0bd2('0x63')][_0x0bd2('0x68')]())){try{_0x455979['body']=_0x528c8a[_0x0bd2('0x69')]?JSON[_0x0bd2('0x6a')](_0x528c8a[_0x0bd2('0x69')]):{};}catch(_0x10b8ed){logger[_0x0bd2('0x2c')](_0x0bd2('0x6b'),_0x10b8ed);}}try{_0x455979[_0x0bd2('0x6c')]=_0x528c8a[_0x0bd2('0xa')]?JSON[_0x0bd2('0x6a')](_0x528c8a[_0x0bd2('0xa')]):{};}catch(_0x136526){logger[_0x0bd2('0x2c')](_0x0bd2('0x6d'),_0x136526);}if(_0x528c8a['computedVariables']){try{var _0x2508b4=require(_0x528c8a[_0x0bd2('0x6e')])[_0x0bd2('0x6f')](this,_0x455979);_0x455979[_0x0bd2('0x70')]=Mustache[_0x0bd2('0x71')](_0x528c8a['url'],_0x2508b4,{},['$$','$$']);if(_0x455979[_0x0bd2('0x6c')]){_0x455979[_0x0bd2('0x6c')]=JSON[_0x0bd2('0x6a')](Mustache[_0x0bd2('0x71')](JSON[_0x0bd2('0x72')](_0x455979[_0x0bd2('0x6c')]),_0x2508b4,{},['$$','$$']));}if(_0x455979[_0x0bd2('0x73')]){_0x455979[_0x0bd2('0x73')]=JSON[_0x0bd2('0x6a')](Mustache[_0x0bd2('0x71')](JSON[_0x0bd2('0x72')](_0x455979[_0x0bd2('0x73')]),_0x2508b4,{},['$$','$$']));}}catch(_0x5eea13){logger[_0x0bd2('0x2c')]('An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function',_0x5eea13);}}rp(_0x455979)[_0x0bd2('0x19')](function(_0x53f604){var _0x455618={'statusCode':_0x53f604[_0x0bd2('0x74')]||0xc8,'statusMessage':_0x53f604[_0x0bd2('0x75')]||'OK','headers':_0x53f604[_0x0bd2('0x6c')]||{},'body':_0x53f604[_0x0bd2('0x73')]||{}};_0x5b47f6(null,_0x455618);})['catch'](function(_0x4c6110){var _0x4b1a67={'statusCode':_0x4c6110[_0x0bd2('0x74')]||0x1f4,'statusMessage':_0x4c6110[_0x0bd2('0x76')]||_0x0bd2('0x77'),'headers':_0x4c6110[_0x0bd2('0x78')]['headers']||{},'body':_0x4c6110['options'][_0x0bd2('0x73')]||{}};_0x5b47f6(null,_0x4b1a67);});};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x79')]=function(_0x9ba74d,_0x317393){scripts[_0x0bd2('0x79')](this['channel'][_0x0bd2('0x37')],_0x9ba74d['key'],_0x9ba74d[_0x0bd2('0x5a')],_0x9ba74d[_0x0bd2('0x7a')]||'en')[_0x0bd2('0x19')](function(_0x453f63){_0x317393(null,_0x453f63);})['catch'](function(_0x3f92f7){_0x317393(_0x3f92f7);});};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x7b')]=function(_0x253292,_0x518e09){scripts[_0x0bd2('0x7b')](this[_0x0bd2('0x36')][_0x0bd2('0x37')],_0x253292[_0x0bd2('0x7c')],_0x253292[_0x0bd2('0x7d')],_0x253292[_0x0bd2('0x7e')],_0x253292[_0x0bd2('0x5a')],_0x253292[_0x0bd2('0x7f')]||'en')['then'](function(_0xea262){_0x518e09(null,_0xea262);})[_0x0bd2('0x16')](function(_0x5e2121){_0x518e09(_0x5e2121);});};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x80')]=function(_0x37eab7,_0x3ebddb){scripts[_0x0bd2('0x80')](this['channel'],_0x37eab7)[_0x0bd2('0x19')](function(_0x324981){_0x3ebddb(null,_0x324981);})[_0x0bd2('0x16')](function(_0x6ed81f){_0x3ebddb(_0x6ed81f);});};AGIVertices['prototype'][_0x0bd2('0x81')]=function(_0x1a0e37,_0xb4d066){scripts[_0x0bd2('0x81')](_0x1a0e37[_0x0bd2('0x82')],_0x1a0e37[_0x0bd2('0x5a')],_0x1a0e37[_0x0bd2('0x83')]||_0x0bd2('0x5c'),_0x1a0e37[_0x0bd2('0x84')])[_0x0bd2('0x19')](function(_0x52ce9d){_0xb4d066(null,_0x52ce9d);})[_0x0bd2('0x16')](function(_0x4455b5){_0xb4d066(_0x4455b5);});};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x85')]=function(_0x39033b,_0x560bf8,_0x973f4){scripts[_0x0bd2('0x85')](_0x560bf8,_0x39033b['key'],_0x39033b[_0x0bd2('0x86')]||_0x0bd2('0x5c'),this[_0x0bd2('0x87')](_0x39033b[_0x0bd2('0x88')])?_0x39033b[_0x0bd2('0x88')]:undefined)[_0x0bd2('0x19')](function(_0x7c0050){_0x973f4(null,_0x7c0050);})[_0x0bd2('0x16')](function(_0x373755){_0x973f4(_0x373755);});};AGIVertices['prototype']['awsPolly']=function(_0x5cd209,_0x1016a4){scripts[_0x0bd2('0x89')](_0x5cd209[_0x0bd2('0x8a')],_0x5cd209[_0x0bd2('0x8b')],_0x5cd209[_0x0bd2('0x8c')],_0x5cd209[_0x0bd2('0x8d')]||_0x0bd2('0x8e'),_0x5cd209[_0x0bd2('0x5a')],_0x5cd209[_0x0bd2('0x8f')]||'text')[_0x0bd2('0x19')](function(_0x56d82b){_0x1016a4(null,_0x56d82b);})['catch'](function(_0x5ad40f){_0x1016a4(_0x5ad40f);});};AGIVertices['prototype'][_0x0bd2('0x90')]=function(_0x27be7a,_0x58ba77){scripts[_0x0bd2('0x90')](this[_0x0bd2('0x36')]['uniqueid'],_0x27be7a[_0x0bd2('0x8a')],_0x27be7a[_0x0bd2('0x8b')],_0x27be7a[_0x0bd2('0x91')],_0x27be7a[_0x0bd2('0x5a')],_0x27be7a[_0x0bd2('0x92')])[_0x0bd2('0x19')](function(_0x5d830f){_0x58ba77(null,_0x5d830f);})[_0x0bd2('0x16')](function(_0x1498aa){_0x58ba77(_0x1498aa);});};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x93')]=function(_0x3e4e36,_0x24e9b8,_0x2857f4){scripts[_0x0bd2('0x93')](_0x24e9b8,_0x3e4e36['key'],_0x3e4e36[_0x0bd2('0x94')]||_0x0bd2('0x5c'))[_0x0bd2('0x19')](function(_0x477b1b){_0x2857f4(null,_0x477b1b);})[_0x0bd2('0x16')](function(_0x2eb3d6){_0x2857f4(_0x2eb3d6);});};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x95')]=function(_0x5114b6,_0x5e0406,_0x29d267){scripts[_0x0bd2('0x95')](_0x5e0406,_0x5114b6[_0x0bd2('0x96')],_0x5114b6[_0x0bd2('0x97')],_0x5114b6[_0x0bd2('0x70')])[_0x0bd2('0x19')](function(_0x597820){_0x29d267(null,_0x597820);})[_0x0bd2('0x16')](function(_0xf504fc){_0x29d267(_0xf504fc);});};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x98')]=function(_0xedb4f7){var _0x49f982=_[_0x0bd2('0x65')](verticesWithRetry,_0xedb4f7[_0x0bd2('0x39')])?_0xedb4f7:_[_0x0bd2('0x99')](_0xedb4f7);for(var _0xcb8296 in _0x49f982){if(_0x49f982['hasOwnProperty'](_0xcb8296)){if(_0x49f982[_0xcb8296]&&_['isString'](_0x49f982[_0xcb8296])){if(_[_0x0bd2('0x65')](recursiveMapAttributes,_0xcb8296)){_0x49f982[_0xcb8296]=this[_0x0bd2('0x9a')](_0x49f982[_0xcb8296]);}else{_0x49f982[_0xcb8296]=this['replaceAllVariables'](_0x49f982[_0xcb8296]);}}}}return _0x49f982;};AGIVertices[_0x0bd2('0xe')]['recursiveNodeIndex']=function(_0x1b5ab4){for(var _0x3aba45 in _0x1b5ab4){if(_0x1b5ab4[_0x0bd2('0x9b')](_0x3aba45)){if(_[_0x0bd2('0x9c')](_0x1b5ab4[_0x3aba45])){this[_0x0bd2('0x9d')](_0x1b5ab4[_0x3aba45]);}else if(_[_0x0bd2('0x9e')](_0x1b5ab4[_0x3aba45])){for(var _0x3eabad=0x0;_0x3eabad<_0x1b5ab4[_0x3aba45][_0x0bd2('0x9f')];_0x3eabad++){this[_0x0bd2('0x9d')](_0x1b5ab4[_0x3aba45][_0x3eabad]);}}else if(_['isString'](_0x1b5ab4[_0x3aba45])){_0x1b5ab4[_0x3aba45]=this[_0x0bd2('0xa0')](_0x1b5ab4[_0x3aba45]);}}}};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0xa1')]=function(_0x1a42cf,_0x447d4d){for(var _0x4edf87 in _0x1a42cf){if(_0x1a42cf[_0x0bd2('0x9b')](_0x4edf87)){if(_[_0x0bd2('0x9c')](_0x1a42cf[_0x4edf87])){if(!_[_0x0bd2('0x42')](_0x1a42cf[_0x4edf87])){this[_0x0bd2('0xa1')](_0x1a42cf[_0x4edf87],util[_0x0bd2('0x28')](_0x0bd2('0xa2'),_0x447d4d,_0x4edf87));}}else if(_[_0x0bd2('0x9e')](_0x1a42cf[_0x4edf87])){for(var _0x2fee87=0x0;_0x2fee87<_0x1a42cf[_0x4edf87][_0x0bd2('0x9f')];_0x2fee87++){this[_0x0bd2('0xa1')](_0x1a42cf[_0x4edf87][_0x2fee87],util[_0x0bd2('0x28')]('%s.%s',_0x447d4d,_0x4edf87+'['+_0x2fee87+']'));}}else{if(!_[_0x0bd2('0x43')](_0x1a42cf[_0x4edf87])){this[_0x0bd2('0x36')][_0x0bd2('0xa3')](util[_0x0bd2('0x28')](_0x0bd2('0xa2'),_0x447d4d,_0x4edf87),_0x1a42cf[_0x4edf87]);}}}}};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x9a')]=function(_0x1e2fda){try{var _0x5c009f=JSON[_0x0bd2('0x6a')](_0x1e2fda);this[_0x0bd2('0x9d')](_0x5c009f);return JSON['stringify'](_0x5c009f);}catch(_0x389701){return this[_0x0bd2('0xa0')](_0x1e2fda);}};AGIVertices['prototype'][_0x0bd2('0xa0')]=function(_0x30cf91){var _0x2fd26c=_0x30cf91[_0x0bd2('0xa4')]('{');for(var _0x1841d4=0x1;_0x1841d4<_0x2fd26c[_0x0bd2('0x9f')];_0x1841d4+=0x1){var _0x470506=_0x2fd26c[_0x1841d4][_0x0bd2('0xa4')]('}');if(_0x470506[_0x0bd2('0x9f')]>0x1){_0x30cf91=_0x30cf91['replaceAll']('{'+_0x470506[0x0]+'}',this[_0x0bd2('0x36')]['getVariable'](_0x470506[0x0])[_0x0bd2('0xa5')]||_0x470506[0x0]);}}if(_0x2fd26c[_0x0bd2('0x9f')]===0x1){return _0x30cf91['toString']();}return this[_0x0bd2('0xa0')](_0x30cf91);};AGIVertices[_0x0bd2('0xe')]['getAndSetVariable']=function(_0x612369,_0x16d1c0){var _0x5889d1=this['channel'][_0x0bd2('0xf')](_0x612369);if(_0x5889d1[_0x0bd2('0xa6')]===-0x1){return _0x5889d1;}logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')]('The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s',_0x16d1c0,_0x5889d1['extra']));return this['channel']['setVariable'](_0x16d1c0,_0x5889d1[_0x0bd2('0xa5')]);};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x87')]=function(_0x4b2f8b){return _0x4b2f8b&&_0x4b2f8b!=='0'&&_0x4b2f8b!=='-1'&&_0x4b2f8b!=='';};AGIVertices['prototype']['maxRetry']=function(_0x10cfae){this[_0x0bd2('0x35')][_0x0bd2('0x6f')](this,_0x10cfae,'-');_0x10cfae[_0x0bd2('0xa7')]=_0x10cfae[_0x0bd2('0xa8')];return{'code':0xc8,'result':'-'};};AGIVertices['prototype'][_0x0bd2('0xa9')]=function(_0x26746d){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0xaa'),_0x26746d[_0x0bd2('0x38')]));if(!this['isConfigured'](_0x26746d['text'])){return this['channel'][_0x0bd2('0xab')]('no\x20text\x20configured');}var _0x22fa0b='\x22'+_0x26746d[_0x0bd2('0x5a')]+'\x22';if(this[_0x0bd2('0x87')](_0x26746d[_0x0bd2('0x78')])){_0x22fa0b+=','+_0x26746d[_0x0bd2('0x78')];}var _0x26d457=this[_0x0bd2('0x36')][_0x0bd2('0x55')]('MRCPSynth',_0x22fa0b);if(_0x26d457[_0x0bd2('0xa6')]===-0x1){return _0x26d457;}return this['channel'][_0x0bd2('0xab')](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0x22fa0b));};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0xac')]=function(_0x52c02a){logger['info'](util['format'](_0x0bd2('0xad'),_0x52c02a[_0x0bd2('0x38')]));if(!this[_0x0bd2('0x87')](_0x52c02a[_0x0bd2('0xae')])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0xaf'));}var _0x407ae1=_0x52c02a[_0x0bd2('0xae')];if(this[_0x0bd2('0x87')](_0x52c02a['options'])){_0x407ae1+=','+_0x52c02a['options'];}var _0x29a5e2=this[_0x0bd2('0x36')][_0x0bd2('0x55')](_0x0bd2('0xb0'),_0x407ae1);if(_0x29a5e2[_0x0bd2('0xa6')]===-0x1){return _0x29a5e2;}var _0x122993=this[_0x0bd2('0xb1')](_0x0bd2('0xb2'),_0x0bd2('0xb3'));if(_0x122993['result']===-0x1){return _0x122993;}var _0x3954f3=this[_0x0bd2('0xb1')](_0x0bd2('0xb4'),_0x0bd2('0xb5'));if(_0x3954f3[_0x0bd2('0xa6')]===-0x1){return _0x3954f3;}var _0x439e6f=this[_0x0bd2('0xb1')](_0x0bd2('0xb6'),_0x0bd2('0xb7'));if(_0x439e6f[_0x0bd2('0xa6')]===-0x1){return _0x439e6f;}return this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')](_0x0bd2('0xb8'),_0x407ae1));};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x6')]=function(_0x16aa3a){logger['info'](util[_0x0bd2('0x28')](_0x0bd2('0xb9'),_0x16aa3a[_0x0bd2('0x38')]));return this[_0x0bd2('0x36')][_0x0bd2('0x6')]([_0x16aa3a[_0x0bd2('0xba')],_0x16aa3a[_0x0bd2('0xbb')]]);};AGIVertices[_0x0bd2('0xe')]['answer']=function(_0x5774f1){logger['info'](util[_0x0bd2('0x28')](_0x0bd2('0xbc'),_0x5774f1[_0x0bd2('0x38')]));if(this['isConfigured'](_0x5774f1[_0x0bd2('0x64')])){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0xbd'),_0x5774f1[_0x0bd2('0x64')]));var _0x4b743f=this['channel'][_0x0bd2('0xbe')](_0x5774f1[_0x0bd2('0x64')]);if(_0x4b743f[_0x0bd2('0xa6')]===-0x1){return _0x4b743f;}}return this[_0x0bd2('0x36')]['answer']();};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x48')]=function(_0x216840){logger[_0x0bd2('0x2e')](util['format']('Enter\x20in\x20CALLBACK\x20(%s)\x20block',_0x216840[_0x0bd2('0x38')]));if(!this['isConfigured'](_0x216840[_0x0bd2('0xbf')])){return this[_0x0bd2('0x36')]['error'](_0x216840,_0x0bd2('0xc0'));}_0x216840['scheduledAt']=moment();if(this[_0x0bd2('0x87')](_0x216840[_0x0bd2('0xc1')])){_0x216840[_0x0bd2('0x47')]=moment()[_0x0bd2('0xc2')](_0x216840[_0x0bd2('0xc1')],'minutes');}if(!this[_0x0bd2('0x87')](_0x216840['callback_priority'])){_0x216840[_0x0bd2('0xc3')]=0x2;}this[_0x0bd2('0x41')][_0x0bd2('0x6f')](this,_0x216840);return this['channel'][_0x0bd2('0xab')](util[_0x0bd2('0x28')](_0x0bd2('0xc4'),_0x216840[_0x0bd2('0x46')],_0x216840[_0x0bd2('0xbf')],_0x216840[_0x0bd2('0x47')]));};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0xc5')]=function(_0x43ea1b){logger['info'](util['format'](_0x0bd2('0xc6'),_0x43ea1b['label']));var _0x2a85af=this[_0x0bd2('0x36')]['exec'](_0x43ea1b['application'],_0x43ea1b['options']);if(_0x2a85af[_0x0bd2('0xa6')]===-0x1){return _0x2a85af;}return this['channel'][_0x0bd2('0xab')](util['format']('Executed\x20command\x20%s\x20%s',_0x43ea1b[_0x0bd2('0xc7')],_0x43ea1b[_0x0bd2('0x78')]));};AGIVertices[_0x0bd2('0xe')]['lumenvoxtts']=function(_0x339eb5){logger[_0x0bd2('0x2e')](util['format'](_0x0bd2('0xc8'),_0x339eb5[_0x0bd2('0x38')]));if(!this[_0x0bd2('0x87')](_0x339eb5[_0x0bd2('0x5a')])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0xc9'));}var _0x1794f9='\x22'+_0x339eb5['text']+'\x22';if(this['isConfigured'](_0x339eb5['options'])){_0x1794f9+=','+_0x339eb5['options'];}var _0x346561=this[_0x0bd2('0x36')][_0x0bd2('0x55')]('MRCPSynth',_0x1794f9);if(_0x346561[_0x0bd2('0xa6')]===-0x1){return _0x346561;}return this[_0x0bd2('0x36')]['noop'](util['format'](_0x0bd2('0xca'),_0x1794f9));};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0xcb')]=function(_0xadd86c){logger['info'](util[_0x0bd2('0x28')](_0x0bd2('0xcc'),_0xadd86c[_0x0bd2('0x38')]));if(!this['isConfigured'](_0xadd86c[_0x0bd2('0x5a')])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')]('no\x20text\x20configured');}var _0x156563='\x22'+_0xadd86c[_0x0bd2('0x5a')]+'\x22';if(this[_0x0bd2('0x87')](_0xadd86c[_0x0bd2('0x78')])){_0x156563+=','+_0xadd86c[_0x0bd2('0x78')];}var _0x2b3cbe=this[_0x0bd2('0x36')][_0x0bd2('0x55')]('MRCPSynth',_0x156563);if(_0x2b3cbe[_0x0bd2('0xa6')]===-0x1){return _0x2b3cbe;}return this[_0x0bd2('0x36')]['noop'](util[_0x0bd2('0x28')](_0x0bd2('0xca'),_0x156563));};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0xcd')]=function(_0x54cb96){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0xce'),_0x54cb96['label']));if(!this['isConfigured'](_0x54cb96['grammar'])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')]('no\x20grammar\x20configured');}var _0xf2b026=_0x54cb96[_0x0bd2('0xae')];if(this['isConfigured'](_0x54cb96[_0x0bd2('0x78')])){_0xf2b026+=','+_0x54cb96['options'];}var _0x51452d=this['channel']['exec']('MRCPRecog',_0xf2b026);if(_0x51452d['result']===-0x1){return _0x51452d;}var _0x5c7ccb=this[_0x0bd2('0xb1')](_0x0bd2('0xb2'),_0x0bd2('0xcf'));if(_0x5c7ccb['result']===-0x1){return _0x5c7ccb;}var _0x37ba14=this['getAndSetVariable']('RECOG_INPUT()',_0x0bd2('0xd0'));if(_0x37ba14['result']===-0x1){return _0x37ba14;}var _0x51858c=this['getAndSetVariable'](_0x0bd2('0xb6'),_0x0bd2('0xd1'));if(_0x51858c[_0x0bd2('0xa6')]===-0x1){return _0x51858c;}return this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')]('Executed\x20command\x20MRCPRecog\x20%s',_0xf2b026));};AGIVertices[_0x0bd2('0xe')]['sestekasr']=function(_0x3c5af8){logger['info'](util[_0x0bd2('0x28')]('Enter\x20in\x20SESTEKASR\x20(%s)\x20block',_0x3c5af8['label']));if(!this[_0x0bd2('0x87')](_0x3c5af8[_0x0bd2('0xae')])){return this[_0x0bd2('0x36')]['noop']('no\x20grammar\x20configured');}var _0x1e00f7=_0x3c5af8[_0x0bd2('0xae')];if(this['isConfigured'](_0x3c5af8[_0x0bd2('0x78')])){_0x1e00f7+=','+_0x3c5af8[_0x0bd2('0x78')];}var _0x274eab=this[_0x0bd2('0x36')][_0x0bd2('0x55')]('MRCPRecog',_0x1e00f7);if(_0x274eab[_0x0bd2('0xa6')]===-0x1){return _0x274eab;}var _0x209331=this[_0x0bd2('0xb1')]('RECOG_CONFIDENCE()',_0x0bd2('0xd2'));if(_0x209331[_0x0bd2('0xa6')]===-0x1){return _0x209331;}var _0x2ed672=this[_0x0bd2('0xb1')](_0x0bd2('0xb4'),_0x0bd2('0xd3'));if(_0x2ed672[_0x0bd2('0xa6')]===-0x1){return _0x2ed672;}var _0x4ad2f7=this['getAndSetVariable'](_0x0bd2('0xb6'),_0x0bd2('0xd4'));if(_0x4ad2f7['result']===-0x1){return _0x4ad2f7;}return this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')]('Executed\x20command\x20MRCPRecog\x20%s',_0x1e00f7));};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0xd5')]=function(_0x3a20af){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')]('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x3a20af[_0x0bd2('0x38')]));if(!this[_0x0bd2('0x87')](_0x3a20af[_0x0bd2('0xd6')])){return this['channel'][_0x0bd2('0x2c')](_0x3a20af,_0x0bd2('0xd7'));}var _0x45ca47=this[_0x0bd2('0x17')]['sync'](this,_0x3a20af[_0x0bd2('0xd6')]);if(!_0x45ca47){return this['channel'][_0x0bd2('0x2c')](_0x3a20af,'no\x20odbc\x20database\x20found');}if(!this[_0x0bd2('0x87')](_0x3a20af['query'])){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x3a20af,'no\x20query\x20configured');}var _0x49b288=_0x3a20af[_0x0bd2('0x30')][_0x0bd2('0x56')](/(\r\n|\n|\r)/gm,'\x20');this['channel'][_0x0bd2('0xab')](util[_0x0bd2('0x28')]('query:\x20%s',_0x49b288));var _0x309494=this[_0x0bd2('0x2a')][_0x0bd2('0x6f')](this,_0x45ca47,_0x49b288);this[_0x0bd2('0x35')][_0x0bd2('0x6f')](this,_0x3a20af,_0x49b288);if(!this['isConfigured'](_0x3a20af[_0x0bd2('0xd8')])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0xd9'));}var _0x18268a=this[_0x0bd2('0xf')]['sync'](this,_0x3a20af[_0x0bd2('0xd8')]);if(!_0x18268a){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x3a20af,_0x0bd2('0xda'));}var _0x48ddbd=this;_0x309494[_0x0bd2('0xdb')](function(_0x4c1bd4,_0x31a5de){Object[_0x0bd2('0xdc')](_0x4c1bd4)[_0x0bd2('0xdb')](function(_0x592465){_0x48ddbd[_0x0bd2('0x36')][_0x0bd2('0xa3')](util[_0x0bd2('0x28')](_0x0bd2('0xdd'),_0x18268a,_0x31a5de,_0x592465),_0x4c1bd4[_0x592465]);});});this[_0x0bd2('0x36')][_0x0bd2('0xa3')](util['format'](_0x0bd2('0xde'),_0x18268a),_0x309494['length']);return this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')](_0x0bd2('0xdf'),_0x18268a));};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0xe0')]=function(_0x2b611a){logger['debug'](util[_0x0bd2('0x28')](_0x0bd2('0xe1'),_0x2b611a[_0x0bd2('0x38')]));if(!this['isConfigured'](_0x2b611a['sip_id'])){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x2b611a,_0x0bd2('0xe2'));}var _0x4c21a8=this[_0x0bd2('0x1a')][_0x0bd2('0x6f')](this,_0x2b611a[_0x0bd2('0xe3')]);if(!_0x4c21a8){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x2b611a,_0x0bd2('0xe4'));}var _0x5c1fb6=this[_0x0bd2('0x36')][_0x0bd2('0x55')](_0x0bd2('0xe5'),[util[_0x0bd2('0x28')](_0x0bd2('0xe6'),_0x4c21a8),_0x2b611a['timeout'],_0x2b611a[_0x0bd2('0xe7')],_0x2b611a[_0x0bd2('0xe8')]]);if(_0x5c1fb6[_0x0bd2('0xa6')]===-0x1){return _0x5c1fb6;}return this['channel'][_0x0bd2('0xab')](util['format'](_0x0bd2('0xe9'),_0x0bd2('0xe5')));};AGIVertices['prototype'][_0x0bd2('0xea')]=function(_0x31c764){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0xeb'),_0x31c764[_0x0bd2('0x38')]));if(!this[_0x0bd2('0x87')](_0x31c764['key'])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')]('no\x20key\x20configured');}if(!this[_0x0bd2('0x87')](_0x31c764['text'])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')]('no\x20text\x20configured');}this['channel']['bot']=!![];this['createSquareDetailsReport'](_0x31c764);this[_0x0bd2('0xec')](_0x31c764[_0x0bd2('0x5a')],'in','','');this[_0x0bd2('0x36')][_0x0bd2('0xab')](util['format']('Trying\x20Dialogflow:\x20%s',_0x31c764[_0x0bd2('0x5a')]));var _0x520fa7=this['googleDialogflow'][_0x0bd2('0x6f')](this,_0x31c764);if(_0x520fa7){for(var _0x1f3d8a in _0x520fa7){if(_0x520fa7['hasOwnProperty'](_0x1f3d8a)){this[_0x0bd2('0x36')][_0x0bd2('0xa3')](util['format']('DIALOGFLOW_%s',_0x1f3d8a[_0x0bd2('0x68')]()),_0x520fa7[_0x1f3d8a]);}}this[_0x0bd2('0xec')](_0x520fa7['speech'],_0x0bd2('0xed'),_0x0bd2('0xea'),'');return this[_0x0bd2('0x36')][_0x0bd2('0xab')](util['format'](_0x0bd2('0xee'),_0x520fa7[_0x0bd2('0xef')]));}return this[_0x0bd2('0x36')]['error'](_0x31c764,_0x0bd2('0xf0'));};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0xf1')]=function(_0x30be79){logger['info'](util['format'](_0x0bd2('0xf2'),_0x30be79[_0x0bd2('0x38')]));if(!this['isConfigured'](_0x30be79[_0x0bd2('0x7c')])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0xf3'));}if(!this[_0x0bd2('0x87')](_0x30be79[_0x0bd2('0x7d')])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')]('no\x20client_email\x20configured');}if(!this[_0x0bd2('0x87')](_0x30be79[_0x0bd2('0x7e')])){return this['channel']['noop']('no\x20private_key\x20configured');}if(!this[_0x0bd2('0x87')](_0x30be79[_0x0bd2('0x7f')])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0xf4'));}if(!this[_0x0bd2('0x87')](_0x30be79[_0x0bd2('0x5a')])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')]('no\x20text\x20configured');}this[_0x0bd2('0x36')]['bot']=!![];this['createSquareDetailsReport'](_0x30be79);this[_0x0bd2('0xec')](_0x30be79[_0x0bd2('0x5a')],'in','','');this[_0x0bd2('0x36')]['noop'](util['format'](_0x0bd2('0xf5'),_0x30be79[_0x0bd2('0x5a')]));var _0x314060=this[_0x0bd2('0x7b')][_0x0bd2('0x6f')](this,_0x30be79);if(_0x314060){for(var _0x3842f9 in _0x314060){if(_0x314060[_0x0bd2('0x9b')](_0x3842f9)){if(_0x3842f9!==_0x0bd2('0xf6')){this['channel'][_0x0bd2('0xa3')](util[_0x0bd2('0x28')](_0x0bd2('0xf7'),_0x3842f9[_0x0bd2('0x68')]()),_0x314060[_0x3842f9]);}}}this[_0x0bd2('0xec')](_0x314060[_0x0bd2('0xef')],'out',_0x0bd2('0xf1'),_0x314060[_0x0bd2('0xf6')]);return this[_0x0bd2('0x36')]['noop'](util['format']('DialogflowV2\x20Result\x20%s',_0x314060['speech']));}return this['channel']['error'](_0x30be79,_0x0bd2('0xf8'));};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0xf9')]=function(_0x692056){logger[_0x0bd2('0x2e')](util['format'](_0x0bd2('0xfa'),_0x692056[_0x0bd2('0x38')]));if(!this[_0x0bd2('0x87')](_0x692056[_0x0bd2('0xfb')])){return this['channel'][_0x0bd2('0xab')](_0x0bd2('0xfc'));}if(!this[_0x0bd2('0x87')](_0x692056['username'])){return this['channel'][_0x0bd2('0xab')](_0x0bd2('0xfd'));}if(!this[_0x0bd2('0x87')](_0x692056[_0x0bd2('0xfe')])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0xff'));}if(!this[_0x0bd2('0x87')](_0x692056[_0x0bd2('0x100')])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')]('no\x20text\x20configured');}this[_0x0bd2('0x36')]['bot']=!![];this[_0x0bd2('0x35')](_0x692056);this[_0x0bd2('0xec')](_0x692056['text'],'in','','');this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')]('Trying\x20SestekNDA:\x20%s',_0x692056['text']));var _0x2d6a22=this[_0x0bd2('0x80')]['sync'](this,_0x692056);if(_0x2d6a22){for(var _0xd0ef08 in _0x2d6a22){if(_0x2d6a22['hasOwnProperty'](_0xd0ef08)){this['channel'][_0x0bd2('0xa3')](util[_0x0bd2('0x28')](_0x0bd2('0x101'),_0xd0ef08[_0x0bd2('0x68')]()),_0x2d6a22[_0xd0ef08]);}}this[_0x0bd2('0xec')](_0x2d6a22[_0x0bd2('0xef')],_0x0bd2('0xed'),_0x0bd2('0xf9'),'');if(_0x2d6a22[_0x0bd2('0x102')]){this[_0x0bd2('0x36')][_0x0bd2('0xab')](util['format'](_0x0bd2('0x103'),_0x2d6a22['audiofile']));var _0x4871eb=this[_0x0bd2('0x36')][_0x0bd2('0x104')](_0x2d6a22[_0x0bd2('0x102')]);try{fs[_0x0bd2('0x105')](_0x2d6a22[_0x0bd2('0x102')]+_0x0bd2('0x106'));}catch(_0x38dd48){logger[_0x0bd2('0x2c')](_0x38dd48);}return _0x4871eb;}else{return this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')]('SestekNDA\x20Result\x20%s',_0x2d6a22[_0x0bd2('0xef')]));}}return this['channel'][_0x0bd2('0x2c')](_0x692056,_0x0bd2('0x107'));};AGIVertices['prototype'][_0x0bd2('0x108')]=function(_0x113cdb){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x109'),_0x113cdb[_0x0bd2('0x38')]));return this[_0x0bd2('0x36')][_0x0bd2('0xab')]('end');};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x10a')]=function(_0x419397){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x10b'),_0x419397['label']));var _0x2ff088='';if(_0x419397['trunk_id']){if(!this[_0x0bd2('0x87')](_0x419397['trunk_id'])){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x419397,'no\x20trunk\x20selected');}else{var _0x46851f=parseInt(_0x419397[_0x0bd2('0x10c')],0xa);if(isNaN(_0x46851f)){_0x2ff088=_0x419397[_0x0bd2('0x10c')];}else{_0x2ff088=this['getTrunk']['sync'](this,_0x419397[_0x0bd2('0x10c')]);if(!_0x2ff088){return this[_0x0bd2('0x36')]['error'](_0x419397,_0x0bd2('0x10d'));}}}}else if(_0x419397[_0x0bd2('0x10e')]){_0x2ff088=_0x419397['trunk_name'];}else{return this['channel'][_0x0bd2('0x2c')](_0x419397,_0x0bd2('0x10f'));}var _0x1c6e16=this[_0x0bd2('0x36')][_0x0bd2('0x55')](_0x0bd2('0xe5'),[util[_0x0bd2('0x28')](_0x0bd2('0x110'),_0x2ff088,_0x419397[_0x0bd2('0x46')]),_0x419397[_0x0bd2('0x64')],_0x419397['opts'],_0x419397[_0x0bd2('0xe8')]]);if(_0x1c6e16[_0x0bd2('0xa6')]===-0x1){return _0x1c6e16;}return this[_0x0bd2('0x36')]['noop'](util[_0x0bd2('0x28')](_0x0bd2('0xe9'),'DIAL'));};AGIVertices['prototype'][_0x0bd2('0x111')]=function(_0x536ebc){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x112'),_0x536ebc[_0x0bd2('0x38')]));return this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0x111'));};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0xb')]=function(_0x2a590a){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x113'),_0x2a590a['label']));if(_0x2a590a[_0x0bd2('0xa7')]===0x0){return this[_0x0bd2('0xa8')](_0x2a590a);}_0x2a590a[_0x0bd2('0xa7')]-=0x1;if(!this[_0x0bd2('0x87')](_0x2a590a['file_id'])){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x2a590a,'no\x20file\x20audio\x20selected');}var _0x429aba=this['getSound'][_0x0bd2('0x6f')](this,_0x2a590a[_0x0bd2('0x114')]);if(!_0x429aba){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x2a590a,_0x0bd2('0x115'));}if(!this[_0x0bd2('0x87')](_0x2a590a['variable_id'])){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x0bd2('0xd9'));}var _0x482ac7=this[_0x0bd2('0x36')]['getData'](_0x429aba,_0x2a590a['response'],_0x2a590a[_0x0bd2('0x116')]);var _0x429f36=_0x482ac7[_0x0bd2('0xa6')]?_0x482ac7[_0x0bd2('0xa6')]['toString']():'';logger[_0x0bd2('0x2e')](_0x0bd2('0x117'),JSON['stringify'](_0x482ac7));if(_0x482ac7[_0x0bd2('0xa6')]===-0x1){this[_0x0bd2('0x35')]['sync'](this,_0x2a590a,_0x429f36);return _0x482ac7;}else if(_0x482ac7[_0x0bd2('0xa5')]===_0x0bd2('0x64')){_0x482ac7[_0x0bd2('0xa6')]=_0x429f36[_0x0bd2('0x9f')]>=parseInt(_0x2a590a[_0x0bd2('0x118')])?'x':'i';}else{_0x482ac7[_0x0bd2('0xa6')]=_0x429f36[_0x0bd2('0x9f')]>=parseInt(_0x2a590a[_0x0bd2('0x118')])&&_0x429f36[_0x0bd2('0x9f')]<=parseInt(_0x2a590a[_0x0bd2('0x116')])?'x':'i';}var _0x10f7b6=this[_0x0bd2('0xf')][_0x0bd2('0x6f')](this,_0x2a590a['variable_id']);if(!_0x10f7b6){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x2a590a,'no\x20variable\x20found');}this[_0x0bd2('0x36')][_0x0bd2('0xa3')](_0x10f7b6,_0x429f36);if(this[_0x0bd2('0x87')](_0x2a590a[_0x0bd2('0x119')])){var _0x3c2ce7=parseInt(_0x2a590a[_0x0bd2('0x119')],0xa);var _0x1fc15e=rs['generate']({'charset':'*','length':_0x3c2ce7});var _0x404055=_0x429f36[_0x0bd2('0x9f')];if(_0x404055>0x0){if(_0x404055>_0x3c2ce7){this[_0x0bd2('0x35')][_0x0bd2('0x6f')](this,_0x2a590a,_0x2a590a['hiddendigitspos']===_0x0bd2('0x11a')?_0x1fc15e+_0x429f36[_0x0bd2('0x11b')](_0x3c2ce7):_0x429f36[_0x0bd2('0x11b')](0x0,_0x404055-_0x3c2ce7)+_0x1fc15e);}else{this[_0x0bd2('0x35')][_0x0bd2('0x6f')](this,_0x2a590a,rs['generate']({'charset':'*','length':_0x404055}));}}else{this[_0x0bd2('0x35')][_0x0bd2('0x6f')](this,_0x2a590a,'');}}else{this[_0x0bd2('0x35')][_0x0bd2('0x6f')](this,_0x2a590a,_0x429f36);}return _0x482ac7;};AGIVertices['prototype'][_0x0bd2('0xc')]=function(_0x5b0614){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')]('Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block',_0x5b0614['label']));return this[_0x0bd2('0xb')](_0x5b0614);};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x11c')]=function(_0x1afa7f){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x11d'),_0x1afa7f['label']));this[_0x0bd2('0x35')]['sync'](this,_0x1afa7f,_0x1afa7f[_0x0bd2('0x11e')]);return this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')]('GOAL\x20%s',_0x1afa7f[_0x0bd2('0x11e')]));};AGIVertices['prototype'][_0x0bd2('0x11f')]=function(_0x3aaf5d){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x120'),_0x3aaf5d[_0x0bd2('0x38')]));if(!this[_0x0bd2('0x87')](_0x3aaf5d[_0x0bd2('0x8a')])||!this[_0x0bd2('0x87')](_0x3aaf5d[_0x0bd2('0x8b')])){return this[_0x0bd2('0x36')]['noop'](_0x0bd2('0x121'));}if(!this[_0x0bd2('0x87')](_0x3aaf5d[_0x0bd2('0x5a')])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0xc9'));}this[_0x0bd2('0x36')]['noop'](util[_0x0bd2('0x28')](_0x0bd2('0x122'),_0x3aaf5d[_0x0bd2('0x5a')]));var _0x128085=this[_0x0bd2('0x89')][_0x0bd2('0x6f')](this,_0x3aaf5d);if(_0x128085){this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')]('aws\x20Polly\x20%s\x20file\x20created',_0x128085));var _0x3927de=this[_0x0bd2('0x36')]['streamFile'](_0x128085);try{fs[_0x0bd2('0x105')](_0x128085+_0x0bd2('0x106'));}catch(_0x1488fa){logger['error'](_0x1488fa);}return _0x3927de;}return this[_0x0bd2('0x36')]['error'](_0x3aaf5d,'aws\x20Polly\x20is\x20unreachable');};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x123')]=function(_0x36cdaa){logger['info'](util[_0x0bd2('0x28')](_0x0bd2('0x124'),_0x36cdaa[_0x0bd2('0x38')]));if(!this[_0x0bd2('0x87')](_0x36cdaa[_0x0bd2('0x8a')])||!this[_0x0bd2('0x87')](_0x36cdaa[_0x0bd2('0x8b')])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0x121'));}if(!this[_0x0bd2('0x87')](_0x36cdaa[_0x0bd2('0x92')])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0x125'));}if(!this['isConfigured'](_0x36cdaa[_0x0bd2('0x5a')])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0xc9'));}this['channel'][_0x0bd2('0x126')]=!![];this[_0x0bd2('0x35')](_0x36cdaa);this[_0x0bd2('0xec')](_0x36cdaa[_0x0bd2('0x5a')],'in','','');this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')](_0x0bd2('0x127'),_0x36cdaa[_0x0bd2('0x5a')]));var _0x4004cf=this[_0x0bd2('0x90')][_0x0bd2('0x6f')](this,_0x36cdaa);if(_0x4004cf){for(var _0x4a0550 in _0x4004cf){if(_0x4004cf[_0x0bd2('0x9b')](_0x4a0550)&&_[_0x0bd2('0x128')](_0x4004cf[_0x4a0550])){this[_0x0bd2('0x36')]['setVariable'](util[_0x0bd2('0x28')](_0x0bd2('0x129'),_0x4a0550[_0x0bd2('0x68')]()),_0x4004cf[_0x4a0550]);}}if(_[_0x0bd2('0x43')](_0x4004cf[_0x0bd2('0x76')])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0x12a'));}else{this[_0x0bd2('0xec')](_0x4004cf[_0x0bd2('0x76')],'out','amazonlex','');return this[_0x0bd2('0x36')]['noop'](util['format'](_0x0bd2('0x12b'),_0x4004cf[_0x0bd2('0x76')]));}}return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x36cdaa,_0x0bd2('0x12c'));};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x12d')]=function(_0x168d53){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x12e'),_0x168d53['label'],_0x168d53[_0x0bd2('0x64')]));if(!this['isConfigured'](_0x168d53[_0x0bd2('0x82')])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0x12f'));}var _0x38b255=_0x0bd2('0x130');var _0x1001cd=util[_0x0bd2('0x28')](_0x0bd2('0x131'),FILES_PATH,rs['generate'](0x4));var _0x50bfe9=util[_0x0bd2('0x28')]('%s.%s',_0x1001cd,_0x38b255);var _0x79b43b=!![];if(_0x168d53['beep']===_0x0bd2('0x132')){_0x79b43b=![];}var _0x25998c=this[_0x0bd2('0x36')]['recordFile'](_0x1001cd,_0x38b255,_0x168d53[_0x0bd2('0x133')],_0x168d53[_0x0bd2('0x64')],undefined,_0x79b43b);if(_0x25998c['result']!==-0x1){this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')](_0x0bd2('0x134'),_0x50bfe9));var _0x85c3a5=this[_0x0bd2('0x93')][_0x0bd2('0x6f')](this,_0x168d53,_0x50bfe9);if(_0x85c3a5){for(var _0xd44872 in _0x85c3a5){if(_0x85c3a5[_0x0bd2('0x9b')](_0xd44872)){this['channel']['setVariable'](util[_0x0bd2('0x28')](_0x0bd2('0x135'),_0xd44872[_0x0bd2('0x68')]()),_0x85c3a5[_0xd44872]);}}return this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')](_0x0bd2('0x136'),JSON[_0x0bd2('0x72')](_0x85c3a5)));}}return _0x25998c;};AGIVertices['prototype']['tildeasr']=function(_0x78f110){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x137'),_0x78f110[_0x0bd2('0x38')]));if(!this['isConfigured'](_0x78f110['appid'])){return this[_0x0bd2('0x36')]['noop'](_0x0bd2('0x138'));}if(!this[_0x0bd2('0x87')](_0x78f110[_0x0bd2('0x97')])){return this[_0x0bd2('0x36')]['noop'](_0x0bd2('0x139'));}var _0xb0a648=_0x0bd2('0x130');var _0x4f8ce8=util[_0x0bd2('0x28')](_0x0bd2('0x131'),FILES_PATH,rs[_0x0bd2('0x13a')](0x4));var _0x2ae8d3=util[_0x0bd2('0x28')](_0x0bd2('0xa2'),_0x4f8ce8,_0xb0a648);var _0x1b0996=!![];if(_0x78f110['beep']===_0x0bd2('0x132')){_0x1b0996=![];}var _0x239a57=this['channel'][_0x0bd2('0x13b')](_0x4f8ce8,_0xb0a648,_0x78f110['intKey'],_0x78f110[_0x0bd2('0x64')],undefined,_0x1b0996);if(_0x239a57['result']!==-0x1){this[_0x0bd2('0x36')]['noop'](util[_0x0bd2('0x28')](_0x0bd2('0x13c'),_0x2ae8d3));var _0x2b104b=this[_0x0bd2('0x95')][_0x0bd2('0x6f')](this,_0x78f110,_0x2ae8d3);if(_0x2b104b){for(var _0x3ce98f in _0x2b104b){if(_0x2b104b[_0x0bd2('0x9b')](_0x3ce98f)){this[_0x0bd2('0x36')][_0x0bd2('0xa3')](util[_0x0bd2('0x28')](_0x0bd2('0x13d'),_0x3ce98f['toUpperCase']()),_0x2b104b[_0x3ce98f]);}}return this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')](_0x0bd2('0x13e'),JSON[_0x0bd2('0x72')](_0x2b104b)));}}return _0x239a57;};AGIVertices[_0x0bd2('0xe')]['gotoc']=function(_0x572d0b){logger[_0x0bd2('0x2e')](util['format'](_0x0bd2('0x13f'),_0x572d0b['label']));return this[_0x0bd2('0x36')]['continueAt'](_0x572d0b[_0x0bd2('0x3d')],_0x572d0b[_0x0bd2('0x3e')],_0x572d0b['priority']);};AGIVertices[_0x0bd2('0xe')]['gotoif']=function(_0x625a78){logger['info'](util[_0x0bd2('0x28')](_0x0bd2('0x140'),_0x625a78[_0x0bd2('0x38')]));if(!this[_0x0bd2('0x87')](_0x625a78[_0x0bd2('0x141')])){return this[_0x0bd2('0x36')]['error'](_0x625a78,_0x0bd2('0x142'));}try{var _0x5cc1c2=eval(_0x625a78[_0x0bd2('0x141')])?_0x0bd2('0x143'):_0x0bd2('0x144');this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')](_0x0bd2('0x145'),_0x625a78[_0x0bd2('0x141')],_0x5cc1c2));return{'code':0xc8,'result':_0x5cc1c2};}catch(_0x5531f2){return{'code':0xc8,'result':_0x0bd2('0x144')};}};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x146')]=function(_0x2d3574){logger['info'](util[_0x0bd2('0x28')]('Enter\x20in\x20GOTOIFTIME\x20(%s)\x20block',_0x2d3574[_0x0bd2('0x38')]));if(!this[_0x0bd2('0x87')](_0x2d3574[_0x0bd2('0x147')])){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x2d3574,'no\x20interval\x20configured');}var _0x40a2d6=this[_0x0bd2('0x23')][_0x0bd2('0x6f')](this,_0x2d3574[_0x0bd2('0x147')]);if(!_0x40a2d6){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x2d3574,'no\x20intervals\x20found');}for(var _0x37e262=0x0;_0x37e262<_0x40a2d6[_0x0bd2('0x9f')];_0x37e262+=0x1){var _0x1290aa=this[_0x0bd2('0x36')]['getVariable'](util[_0x0bd2('0x28')]('IFTIME(%s?true:false)',_0x40a2d6[_0x37e262]));if(_0x1290aa[_0x0bd2('0xa6')]===-0x1){return _0x1290aa;}logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x148'),_0x40a2d6[_0x37e262],_0x1290aa[_0x0bd2('0xa5')]));if(_0x1290aa['extra']===_0x0bd2('0x143')){logger[_0x0bd2('0x2e')](util['format'](_0x0bd2('0x148'),_0x40a2d6[_0x37e262],'true'));this[_0x0bd2('0x36')]['noop'](util['format'](_0x0bd2('0x148'),_0x40a2d6[_0x37e262],'true'));return{'code':0xc8,'result':_0x0bd2('0x143')};}else{logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')]('IFTIME\x20%s\x20%s',_0x40a2d6[_0x37e262],_0x0bd2('0x144')));this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')](_0x0bd2('0x148'),_0x40a2d6[_0x37e262],_0x0bd2('0x144')));}}return{'code':0xc8,'result':_0x0bd2('0x144')};};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x149')]=function(_0x376971){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')]('Enter\x20in\x20HANGUP\x20(%s)\x20block',_0x376971[_0x0bd2('0x38')]));return this['channel'][_0x0bd2('0x149')]();};AGIVertices['prototype'][_0x0bd2('0x14a')]=function(_0x3d4fba){logger[_0x0bd2('0x2e')](util['format']('Enter\x20in\x20ISPEECHASR\x20(%s)\x20block',_0x3d4fba[_0x0bd2('0x38')]));if(!this[_0x0bd2('0x87')](_0x3d4fba[_0x0bd2('0x82')])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0x12f'));}var _0x2e1003=_0x0bd2('0x130');var _0x1e98de=util[_0x0bd2('0x28')](_0x0bd2('0x131'),FILES_PATH,rs[_0x0bd2('0x13a')](0x4));var _0x5e8e37=util[_0x0bd2('0x28')](_0x0bd2('0xa2'),_0x1e98de,_0x2e1003);var _0xba9d47=!![];if(_0x3d4fba[_0x0bd2('0x14b')]==='NOBEEP'){_0xba9d47=![];}var _0x282dd2=this['channel'][_0x0bd2('0x13b')](_0x1e98de,_0x2e1003,_0x3d4fba['intKey'],_0x3d4fba['timeout'],undefined,_0xba9d47);if(_0x282dd2[_0x0bd2('0xa6')]!==-0x1){this[_0x0bd2('0x36')][_0x0bd2('0xab')](util['format'](_0x0bd2('0x14c'),_0x5e8e37));var _0x59b0e8=this[_0x0bd2('0x85')]['sync'](this,_0x3d4fba,_0x5e8e37);if(_0x59b0e8){for(var _0x1b9f33 in _0x59b0e8){if(_0x59b0e8[_0x0bd2('0x9b')](_0x1b9f33)){this[_0x0bd2('0x36')][_0x0bd2('0xa3')](util[_0x0bd2('0x28')](_0x0bd2('0x14d'),_0x1b9f33[_0x0bd2('0x68')]()),_0x59b0e8[_0x1b9f33]);}}return this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')](_0x0bd2('0x14e'),JSON[_0x0bd2('0x72')](_0x59b0e8)));}}return _0x282dd2;};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x14f')]=function(_0x564f50){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')]('Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block',_0x564f50['label']));if(!this['isConfigured'](_0x564f50[_0x0bd2('0x82')])){return this['channel']['noop'](_0x0bd2('0x12f'));}if(!this['isConfigured'](_0x564f50['text'])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')]('no\x20text\x20configured');}this[_0x0bd2('0x36')][_0x0bd2('0xab')](util['format']('Trying\x20ispeech\x20TTS\x20%s',_0x564f50['text']));var _0x42f508=this[_0x0bd2('0x81')][_0x0bd2('0x6f')](this,_0x564f50);if(_0x42f508){this['channel'][_0x0bd2('0xab')](util[_0x0bd2('0x28')](_0x0bd2('0x14c'),_0x42f508));var _0x50477d=this[_0x0bd2('0x36')][_0x0bd2('0x104')](_0x42f508,_0x564f50[_0x0bd2('0x133')]);try{fs['unlink'](_0x42f508+_0x0bd2('0x106'));}catch(_0x431fbe){logger[_0x0bd2('0x2c')](_0x431fbe);}return _0x50477d;}return this[_0x0bd2('0x36')]['error'](_0x564f50,'ispeech\x20TTS\x20is\x20unreachable');};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x150')]=function(_0x335aa9){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')]('Enter\x20in\x20LOGIN\x20(%s)\x20block',_0x335aa9['label']));if(!this[_0x0bd2('0x87')](_0x335aa9[_0x0bd2('0x151')])){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x335aa9,_0x0bd2('0x152'));}logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x153'),this['channel'][_0x0bd2('0x3b')],_0x335aa9['findBy']));var _0x2a1a74=this[_0x0bd2('0x50')]['sync'](this,_0x335aa9[_0x0bd2('0x151')]);if(_0x2a1a74){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x154'),this[_0x0bd2('0x36')][_0x0bd2('0x3b')],_0x335aa9[_0x0bd2('0x151')]));this['channel']['noop'](util[_0x0bd2('0x28')](_0x0bd2('0x154'),this[_0x0bd2('0x36')][_0x0bd2('0x3b')],_0x335aa9['findBy']));return{'code':0xc8,'result':_0x0bd2('0x155')};}else{logger[_0x0bd2('0x2e')](util['format'](_0x0bd2('0x156'),this[_0x0bd2('0x36')][_0x0bd2('0x3b')],_0x335aa9['findBy']));this[_0x0bd2('0x36')][_0x0bd2('0xab')](util['format'](_0x0bd2('0x156'),this[_0x0bd2('0x36')][_0x0bd2('0x3b')],_0x335aa9[_0x0bd2('0x151')]));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype'][_0x0bd2('0x157')]=function(_0x1f3dad){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x158'),_0x1f3dad[_0x0bd2('0x38')]));if(!this['isConfigured'](_0x1f3dad['findBy'])){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x1f3dad,_0x0bd2('0x152'));}logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x153'),this[_0x0bd2('0x36')][_0x0bd2('0x3b')],_0x1f3dad['findBy']));var _0x3f3f77=this[_0x0bd2('0x4f')][_0x0bd2('0x6f')](this,_0x1f3dad[_0x0bd2('0x151')]);if(_0x3f3f77){logger['info'](util[_0x0bd2('0x28')](_0x0bd2('0x154'),this[_0x0bd2('0x36')][_0x0bd2('0x3b')],_0x1f3dad['findBy']));this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')](_0x0bd2('0x154'),this['channel'][_0x0bd2('0x3b')],_0x1f3dad[_0x0bd2('0x151')]));return{'code':0xc8,'result':_0x0bd2('0x155')};}else{logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x156'),this[_0x0bd2('0x36')][_0x0bd2('0x3b')],_0x1f3dad[_0x0bd2('0x151')]));this['channel'][_0x0bd2('0xab')](util[_0x0bd2('0x28')](_0x0bd2('0x156'),this[_0x0bd2('0x36')]['callerid'],_0x1f3dad[_0x0bd2('0x151')]));return{'code':0xc8,'result':_0x0bd2('0x159')};}};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x15a')]=function(_0x35de15){logger[_0x0bd2('0x2e')](util['format']('Enter\x20in\x20MATH\x20(%s)\x20block',_0x35de15[_0x0bd2('0x38')]));if(!this[_0x0bd2('0x87')](_0x35de15[_0x0bd2('0x15b')])){return this[_0x0bd2('0x36')]['error'](_0x35de15,'no\x20operation\x20configured');}this[_0x0bd2('0x36')]['noop'](util[_0x0bd2('0x28')](_0x0bd2('0x15c'),_0x35de15[_0x0bd2('0x15b')]));var _0x5e89bb=eval(_0x35de15[_0x0bd2('0x15b')]);if(!this['isConfigured'](_0x35de15[_0x0bd2('0xd8')])){return this['channel'][_0x0bd2('0xab')](_0x0bd2('0xd9'));}var _0x44fd72=this[_0x0bd2('0xf')][_0x0bd2('0x6f')](this,_0x35de15[_0x0bd2('0xd8')]);if(!_0x44fd72){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x35de15,_0x0bd2('0xda'));}if(_[_0x0bd2('0x9e')](_0x5e89bb)){var _0x566c4b=this;_0x5e89bb[_0x0bd2('0xdb')](function(_0x10322a,_0x58c0db){_0x566c4b[_0x0bd2('0x36')]['setVariable'](util['format']('%s[%s]',_0x44fd72,_0x58c0db),_0x10322a);});return this['channel'][_0x0bd2('0xab')](util[_0x0bd2('0x28')]('variable\x20%s[key]\x20set',_0x44fd72));}else{return this[_0x0bd2('0x36')][_0x0bd2('0xa3')](_0x44fd72,_0x5e89bb);}};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x15d')]=function(_0x3fbd36){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')]('Enter\x20in\x20MENU\x20(%s)\x20block',_0x3fbd36['label']));if(_0x3fbd36['retry']===0x0){return this[_0x0bd2('0xa8')](_0x3fbd36);}_0x3fbd36[_0x0bd2('0xa7')]-=0x1;if(!this[_0x0bd2('0x87')](_0x3fbd36[_0x0bd2('0x114')])){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x3fbd36,_0x0bd2('0x15e'));}var _0x38c3e8=this[_0x0bd2('0x1e')]['sync'](this,_0x3fbd36[_0x0bd2('0x114')]);if(!_0x38c3e8){return this[_0x0bd2('0x36')]['error'](_0x3fbd36,_0x0bd2('0x115'));}var _0x4899c9=this[_0x0bd2('0x36')]['getData'](_0x38c3e8,_0x3fbd36[_0x0bd2('0x15f')],_0x3fbd36[_0x0bd2('0x160')]);var _0x26a387=_0x4899c9['result'];if(_0x4899c9[_0x0bd2('0xa6')]===-0x1){this[_0x0bd2('0x35')]['sync'](this,_0x3fbd36,'-1');return _0x4899c9;}else if(_0x4899c9[_0x0bd2('0xa5')]===_0x0bd2('0x64')){_0x4899c9[_0x0bd2('0xa6')]=_0x4899c9['result'][_0x0bd2('0x9f')]>0x0?_0x4899c9['result']:'t';}else if(_[_0x0bd2('0x42')](_0x4899c9['result'])){_0x4899c9['result']='#';_0x26a387='#';}if(!this[_0x0bd2('0x87')](_0x3fbd36[_0x0bd2('0xd8')])){this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0xd9'));}else{var _0x32f7f3=this['getVariable'][_0x0bd2('0x6f')](this,_0x3fbd36['variable_id']);if(!_0x32f7f3){return this[_0x0bd2('0x36')]['error'](_0x3fbd36,'no\x20variable\x20found');}this[_0x0bd2('0x36')]['setVariable'](_0x32f7f3,_0x26a387);}this[_0x0bd2('0x35')][_0x0bd2('0x6f')](this,_0x3fbd36,_0x26a387);return _0x4899c9;};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0xab')]=function(_0x56023e){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x161'),_0x56023e[_0x0bd2('0x38')]));return this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x56023e[_0x0bd2('0x162')]||_0x56023e[_0x0bd2('0x38')]);};AGIVertices[_0x0bd2('0xe')]['pause']=function(_0x358d97){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')]('Enter\x20in\x20PAUSE\x20(%s)\x20block',_0x358d97[_0x0bd2('0x38')]));if(!this['isConfigured'](_0x358d97[_0x0bd2('0x151')])){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x358d97,_0x0bd2('0x152'));}logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x153'),this[_0x0bd2('0x36')][_0x0bd2('0x3b')],_0x358d97[_0x0bd2('0x151')]));var _0x3c31f1=this[_0x0bd2('0x163')][_0x0bd2('0x6f')](this,_0x358d97[_0x0bd2('0x164')]);var _0x462a77=this['agentPause'][_0x0bd2('0x6f')](this,_0x358d97[_0x0bd2('0x151')],_0x3c31f1);if(_0x462a77){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x154'),this[_0x0bd2('0x36')][_0x0bd2('0x3b')],_0x358d97[_0x0bd2('0x151')]));this[_0x0bd2('0x36')]['noop'](util[_0x0bd2('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x0bd2('0x36')][_0x0bd2('0x3b')],_0x358d97[_0x0bd2('0x151')]));return{'code':0xc8,'result':_0x0bd2('0x155')};}else{logger['info'](util[_0x0bd2('0x28')](_0x0bd2('0x156'),this[_0x0bd2('0x36')][_0x0bd2('0x3b')],_0x358d97[_0x0bd2('0x151')]));this[_0x0bd2('0x36')]['noop'](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x0bd2('0x36')]['callerid'],_0x358d97[_0x0bd2('0x151')]));return{'code':0xc8,'result':_0x0bd2('0x159')};}};AGIVertices[_0x0bd2('0xe')]['playback']=function(_0x279512){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x165'),_0x279512[_0x0bd2('0x38')]));if(!this[_0x0bd2('0x87')](_0x279512[_0x0bd2('0x114')])){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x279512,'no\x20file\x20audio\x20selected');}var _0x2a5684=this['getSound']['sync'](this,_0x279512['file_id']);if(!_0x2a5684){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x279512,'no\x20file\x20audio\x20found');}var _0x4f7e37=this[_0x0bd2('0x36')]['exec'](_0x0bd2('0x166'),[_0x2a5684,_0x279512[_0x0bd2('0xe7')]]);if(_0x4f7e37[_0x0bd2('0xa6')]===-0x1){return _0x4f7e37;}return this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')](_0x0bd2('0x167'),'PLAYBACK',_0x2a5684));};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x168')]=function(_0x454536){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x169'),_0x454536['label']));if(!this[_0x0bd2('0x87')](_0x454536[_0x0bd2('0x16a')])){return this[_0x0bd2('0x36')]['error'](_0x454536,'no\x20queue\x20selected');}var _0x3049ea='';var _0x56495e=parseInt(_0x454536[_0x0bd2('0x16a')],0xa);if(isNaN(_0x56495e)){_0x3049ea=_0x454536[_0x0bd2('0x16a')];}else{_0x3049ea=this[_0x0bd2('0x12')][_0x0bd2('0x6f')](this,_0x454536[_0x0bd2('0x16a')]);if(!_0x3049ea){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x454536,_0x0bd2('0x16b'));}}var _0x26128f='';if(this['isConfigured'](_0x454536[_0x0bd2('0x114')])){var _0x186787=this[_0x0bd2('0x1e')][_0x0bd2('0x6f')](this,_0x454536[_0x0bd2('0x114')]);if(_0x186787){_0x26128f=_0x186787;}}this['createSquareDetailsReport'][_0x0bd2('0x6f')](this,_0x454536,_0x3049ea);if(_0x454536['opts'][_0x0bd2('0x16c')]('x')<0x0){_0x454536[_0x0bd2('0xe7')]+='x';}if(_0x454536[_0x0bd2('0xe7')][_0x0bd2('0x16c')]('X')<0x0){_0x454536[_0x0bd2('0xe7')]+='X';}this[_0x0bd2('0x36')][_0x0bd2('0xa3')](_0x0bd2('0x16d'),_0x3049ea?_0x3049ea[_0x0bd2('0x16e')]():'');var _0x41b5ff=this[_0x0bd2('0x36')][_0x0bd2('0x55')](_0x0bd2('0x16f'),[_0x3049ea,_0x454536['opts'],_0x454536['url'],_0x26128f,_0x454536['timeout'],_0x454536[_0x0bd2('0x6')],_0x454536['macro'],_0x454536[_0x0bd2('0x170')],'',_0x454536[_0x0bd2('0x171')]]);if(_0x41b5ff[_0x0bd2('0xa6')]===-0x1){return _0x41b5ff;}return this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')](_0x0bd2('0x167'),_0x0bd2('0x16f'),_0x3049ea));};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x172')]=function(_0x16b15f){logger['info'](util[_0x0bd2('0x28')](_0x0bd2('0x173'),_0x16b15f[_0x0bd2('0x38')]));var _0x3dda6d=_0x16b15f[_0x0bd2('0x174')]||_0x0bd2('0x130');var _0x1fb9bb=util[_0x0bd2('0x28')](_0x0bd2('0x175'),this['channel'][_0x0bd2('0x37')],rs[_0x0bd2('0x13a')](0x5));var _0x3df3e9=util[_0x0bd2('0x28')](_0x0bd2('0x176'),FILES_PATH,_0x1fb9bb,_0x3dda6d);var _0x314427=util[_0x0bd2('0x28')](_0x0bd2('0x131'),FILES_PATH,_0x1fb9bb);this['createSquareRecording'][_0x0bd2('0x6f')](this,_0x16b15f,_0x1fb9bb,_0x3df3e9);this[_0x0bd2('0x36')][_0x0bd2('0xa3')]('RECORDING_SAVENAME',_0x1fb9bb);logger[_0x0bd2('0x2e')](_0x0bd2('0x177'),_0x314427,_0x3dda6d,_0x16b15f[_0x0bd2('0x178')],_0x16b15f[_0x0bd2('0x64')]);return this[_0x0bd2('0x36')][_0x0bd2('0x13b')](_0x314427,_0x3dda6d,_0x16b15f[_0x0bd2('0x178')],_0x16b15f[_0x0bd2('0x64')],undefined,!![]);};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x179')]=function(_0x2bf65a){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')]('Enter\x20in\x20RESTAPI\x20(%s)\x20block',_0x2bf65a[_0x0bd2('0x38')]));if(!this[_0x0bd2('0x87')](_0x2bf65a[_0x0bd2('0xe8')])){return this['channel'][_0x0bd2('0xab')](_0x0bd2('0x17a'));}var _0x45aa02=this[_0x0bd2('0x62')][_0x0bd2('0x6f')](this,_0x2bf65a);logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x17b'),util[_0x0bd2('0x17c')](_0x45aa02,{'showHidden':![],'depth':null})));if(!this[_0x0bd2('0x87')](_0x2bf65a[_0x0bd2('0xd8')])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0x17d'));}var _0x7b14=this[_0x0bd2('0xf')][_0x0bd2('0x6f')](this,_0x2bf65a['variable_id']);if(!_0x7b14){return this[_0x0bd2('0x36')]['error'](_0x2bf65a,_0x0bd2('0xda'));}this[_0x0bd2('0x36')][_0x0bd2('0xa3')](util['format'](_0x0bd2('0x17e'),_0x7b14),_0x45aa02[_0x0bd2('0x74')]?_0x45aa02[_0x0bd2('0x74')]:'200');this[_0x0bd2('0x36')][_0x0bd2('0xa3')](util['format'](_0x0bd2('0x17f'),_0x7b14),_0x45aa02[_0x0bd2('0x75')]?_0x45aa02[_0x0bd2('0x75')]:'OK');if(_0x45aa02['body']){try{this[_0x0bd2('0xa1')](_0x45aa02[_0x0bd2('0x73')],_0x7b14);}catch(_0x28c7ea){logger[_0x0bd2('0x2c')](util['format'](_0x0bd2('0x180'),_0x7b14));}}return this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')](_0x0bd2('0xdf'),_0x7b14));};AGIVertices[_0x0bd2('0xe')]['saydigits']=function(_0x4d54ba){logger[_0x0bd2('0x2e')](util['format'](_0x0bd2('0x181'),_0x4d54ba['label']));return this[_0x0bd2('0x36')][_0x0bd2('0x182')](_0x4d54ba[_0x0bd2('0x183')][_0x0bd2('0x56')](/\s+/g,''),_0x4d54ba[_0x0bd2('0x178')]);};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x184')]=function(_0x4223f2){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')]('Enter\x20in\x20SAYNUMBER\x20(%s)\x20block',_0x4223f2[_0x0bd2('0x38')]));return this[_0x0bd2('0x36')]['sayNumber'](_0x4223f2[_0x0bd2('0x185')][_0x0bd2('0x56')](/\s+/g,''),_0x4223f2[_0x0bd2('0x178')]);};AGIVertices['prototype'][_0x0bd2('0x186')]=function(_0x26fd1a){logger['info'](util[_0x0bd2('0x28')](_0x0bd2('0x187'),_0x26fd1a[_0x0bd2('0x38')]));return this[_0x0bd2('0x36')][_0x0bd2('0x188')](_0x26fd1a[_0x0bd2('0x5a')],_0x26fd1a[_0x0bd2('0x178')]);};AGIVertices['prototype'][_0x0bd2('0x189')]=function(_0x5a4f07){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x18a'),_0x5a4f07[_0x0bd2('0x38')]));if(!this[_0x0bd2('0x87')](_0x5a4f07[_0x0bd2('0x18b')])){return this[_0x0bd2('0x36')]['noop']('no\x20mail\x20account\x20configured');}var _0x385371=this[_0x0bd2('0x21')]['sync'](this,_0x5a4f07['account_id']);if(!_0x385371||!_0x385371['Smtp']){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x5a4f07,_0x0bd2('0x18c'));}var _0x516ae0={'from':util['format'](_0x0bd2('0x18d'),_0x385371[_0x0bd2('0x11')],_0x385371[_0x0bd2('0x18e')]||_0x385371[_0x0bd2('0x18f')][_0x0bd2('0x190')]),'to':_0x5a4f07['to']||'','cc':_0x5a4f07['cc']||'','bcc':_0x5a4f07[_0x0bd2('0x191')]||'','subject':_0x5a4f07['subject'],'html':_0x5a4f07[_0x0bd2('0x5a')],'text':_0x5a4f07['text']};if(this[_0x0bd2('0x87')](_0x5a4f07[_0x0bd2('0x192')])){}logger[_0x0bd2('0x193')](_0x0bd2('0x194'),JSON[_0x0bd2('0x72')](_0x516ae0));this['createSquareDetailsReport'][_0x0bd2('0x6f')](this,_0x5a4f07,_0x5a4f07[_0x0bd2('0x18b')]);this['channel'][_0x0bd2('0xab')](util['format'](_0x0bd2('0x195'),_0x385371[_0x0bd2('0x11')]));this[_0x0bd2('0x22')]['sync'](this,_0x385371[_0x0bd2('0x196')],_0x516ae0);return this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0x197'));};AGIVertices[_0x0bd2('0xe')]['sendFax']=function(_0x5e3b8e){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')]('Enter\x20in\x20SENDFAX\x20(%s)\x20block',_0x5e3b8e[_0x0bd2('0x38')]));return this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0x198'));};AGIVertices[_0x0bd2('0xe')]['sendSMS']=function(_0x201408){logger['info'](util['format'](_0x0bd2('0x199'),_0x201408[_0x0bd2('0x38')]));if(!this[_0x0bd2('0x87')](_0x201408[_0x0bd2('0x19a')])){return this['channel'][_0x0bd2('0xab')](_0x0bd2('0x19b'));}var _0x2390c9=this[_0x0bd2('0x19c')][_0x0bd2('0x6f')](this,_0x201408[_0x0bd2('0x19a')]);if(!_0x2390c9){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x201408,_0x0bd2('0x19d'));}var _0x58cb5b={'body':_0x201408['sms_text'],'phone':_0x201408['to']||'','SmsAccountId':_0x2390c9['id']};logger[_0x0bd2('0x193')]('sendSMS\x20message',JSON[_0x0bd2('0x72')](_0x58cb5b));this[_0x0bd2('0x35')][_0x0bd2('0x6f')](this,_0x201408,_0x201408[_0x0bd2('0x19a')]);this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')](_0x0bd2('0x19e'),_0x2390c9[_0x0bd2('0x11')]));this[_0x0bd2('0x19f')][_0x0bd2('0x6f')](this,_0x58cb5b);return this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0x1a0'));};AGIVertices['prototype'][_0x0bd2('0x1a1')]=function(_0x3382dc){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x1a2'),_0x3382dc['label']));if(!this[_0x0bd2('0x87')](_0x3382dc[_0x0bd2('0xd8')])){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x3382dc,_0x0bd2('0x1a3'));}var _0x4a7f29=this[_0x0bd2('0xf')][_0x0bd2('0x6f')](this,_0x3382dc[_0x0bd2('0xd8')]);if(!_0x4a7f29){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x3382dc,_0x0bd2('0xda'));}return this[_0x0bd2('0x36')][_0x0bd2('0xa3')](_0x4a7f29,_0x3382dc[_0x0bd2('0x1a4')]);};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x1a5')]=function(_0x72caad){logger['info'](util[_0x0bd2('0x28')](_0x0bd2('0x1a6'),_0x72caad[_0x0bd2('0x38')]));this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0x1a7'));if(_0x72caad[_0x0bd2('0x1a8')]===_0x0bd2('0x1a9')){this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0x1aa'));return this[_0x0bd2('0x36')]['answer']();}return this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0x1ab'));};AGIVertices[_0x0bd2('0xe')]['subproject']=function(_0x93300b){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x1ac'),_0x93300b[_0x0bd2('0x38')]));if(!this[_0x0bd2('0x87')](_0x93300b[_0x0bd2('0x1ad')])){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x93300b,_0x0bd2('0x1ae'));}var _0x5db75f=this[_0x0bd2('0x14')][_0x0bd2('0x6f')](this,_0x93300b[_0x0bd2('0x1ad')]);if(!this['isConfigured'](_0x5db75f)){return this[_0x0bd2('0x36')]['error'](_0x93300b,util['format'](_0x0bd2('0x1af'),_0x93300b[_0x0bd2('0x1ad')]));}if(_0x5db75f===this[_0x0bd2('0x36')][_0x0bd2('0x3a')]){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x93300b,_0x0bd2('0x1b0'));}this['createSquareDetailsReport'][_0x0bd2('0x6f')](this,_0x93300b,_0x5db75f);var _0x2bf235=this[_0x0bd2('0x36')][_0x0bd2('0x55')]('AGI',util[_0x0bd2('0x28')](_0x0bd2('0x1b1'),config['agi'][_0x0bd2('0x1b2')]||_0x0bd2('0x1b3'),_0x5db75f,this[_0x0bd2('0x36')][_0x0bd2('0x3a')]));if(_0x2bf235[_0x0bd2('0xa6')]===-0x1){return _0x2bf235;}return this['channel'][_0x0bd2('0xab')](util[_0x0bd2('0x28')](_0x0bd2('0x167'),_0x0bd2('0x1b4'),_0x5db75f));};AGIVertices['prototype']['system']=function(_0x379d3c){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x1b5'),_0x379d3c[_0x0bd2('0x38')]));var _0x1e417f=this[_0x0bd2('0x54')][_0x0bd2('0x6f')](this,_0x379d3c[_0x0bd2('0xba')]);this[_0x0bd2('0x35')][_0x0bd2('0x6f')](this,_0x379d3c,_0x379d3c[_0x0bd2('0xba')]);if(this[_0x0bd2('0x87')](_0x379d3c[_0x0bd2('0xd8')])){var _0x594404=this[_0x0bd2('0xf')][_0x0bd2('0x6f')](this,_0x379d3c[_0x0bd2('0xd8')]);if(_0x594404){this[_0x0bd2('0x36')][_0x0bd2('0xa3')](_0x594404,_0x1e417f);return this['channel']['noop'](util[_0x0bd2('0x28')]('sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s',_0x379d3c[_0x0bd2('0xba')],_0x594404));}}return this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')]('sh\x20command:\x20%s\x20result\x20no\x20stored',_0x379d3c['command']));};AGIVertices[_0x0bd2('0xe')]['google_cloud_tts']=function(_0xb7bdd9){logger['info'](util['format'](_0x0bd2('0x1b6'),_0xb7bdd9[_0x0bd2('0x38')]));_0xb7bdd9[_0x0bd2('0x5a')]=_0xb7bdd9[_0x0bd2('0x5a')][_0x0bd2('0x56')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0xb7bdd9['apiKey'])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')]('no\x20apiKey\x20configured');}if(!this[_0x0bd2('0x87')](_0xb7bdd9[_0x0bd2('0x5a')])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')]('no\x20text\x20configured');}this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')](_0x0bd2('0x1b7'),_0xb7bdd9['text']));var _0x1b3299=this[_0x0bd2('0x57')][_0x0bd2('0x6f')](this,_0xb7bdd9);if(_0x1b3299){this[_0x0bd2('0x36')]['noop'](util['format'](_0x0bd2('0x1b8'),_0x1b3299));var _0x56b737=this[_0x0bd2('0x36')][_0x0bd2('0x104')](_0x1b3299);try{fs[_0x0bd2('0x105')](_0x1b3299+'.wav');}catch(_0x4ee6ff){logger['error'](_0x4ee6ff);}return _0x56b737;}return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0xb7bdd9,_0x0bd2('0x1b9'));};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x1ba')]=function(_0x308eef){logger['info'](util[_0x0bd2('0x28')](_0x0bd2('0x1bb'),_0x308eef[_0x0bd2('0x38')]));_0x308eef['text']=_0x308eef[_0x0bd2('0x5a')]['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x0bd2('0x87')](_0x308eef['text'])){return this[_0x0bd2('0x36')][_0x0bd2('0xab')](_0x0bd2('0xc9'));}this[_0x0bd2('0x36')][_0x0bd2('0xab')](util['format']('Trying\x20Google\x20TTS\x20%s',_0x308eef[_0x0bd2('0x5a')]));var _0x4b2d91=this['googleTTS'][_0x0bd2('0x6f')](this,_0x308eef);if(_0x4b2d91){this['channel']['noop'](util[_0x0bd2('0x28')](_0x0bd2('0x1bc'),_0x4b2d91));var _0x9fa870=this[_0x0bd2('0x36')][_0x0bd2('0x104')](_0x4b2d91);try{fs[_0x0bd2('0x105')](_0x4b2d91+_0x0bd2('0x106'));}catch(_0x221b4f){logger['error'](_0x221b4f);}return _0x9fa870;}return this['channel']['error'](_0x308eef,_0x0bd2('0x1bd'));};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x1be')]=function(_0xd7898d){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')]('Enter\x20in\x20UNPAUSE\x20(%s)\x20block',_0xd7898d[_0x0bd2('0x38')]));if(!this[_0x0bd2('0x87')](_0xd7898d['findBy'])){return this[_0x0bd2('0x36')]['error'](_0xd7898d,_0x0bd2('0x152'));}logger['info'](util['format'](_0x0bd2('0x153'),this[_0x0bd2('0x36')][_0x0bd2('0x3b')],_0xd7898d['findBy']));var _0xcc289a=this['agentUnpause'][_0x0bd2('0x6f')](this,_0xd7898d[_0x0bd2('0x151')]);if(_0xcc289a){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')]('AGENT\x20%s\x20FOUND\x20BY',this[_0x0bd2('0x36')][_0x0bd2('0x3b')],_0xd7898d[_0x0bd2('0x151')]));this[_0x0bd2('0x36')]['noop'](util[_0x0bd2('0x28')](_0x0bd2('0x154'),this['channel'][_0x0bd2('0x3b')],_0xd7898d[_0x0bd2('0x151')]));return{'code':0xc8,'result':_0x0bd2('0x155')};}else{logger['info'](util[_0x0bd2('0x28')](_0x0bd2('0x156'),this['channel']['callerid'],_0xd7898d[_0x0bd2('0x151')]));this[_0x0bd2('0x36')][_0x0bd2('0xab')](util[_0x0bd2('0x28')](_0x0bd2('0x156'),this['channel']['callerid'],_0xd7898d[_0x0bd2('0x151')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x0bd2('0xe')]['voicemail']=function(_0x1d8a25){logger['info'](util['format'](_0x0bd2('0x1bf'),_0x1d8a25[_0x0bd2('0x38')]));var _0x5f38f8=this[_0x0bd2('0x36')][_0x0bd2('0x55')](_0x0bd2('0x1c0'),[_0x1d8a25[_0x0bd2('0x1c1')],_0x1d8a25['options']]);if(_0x5f38f8[_0x0bd2('0xa6')]===-0x1){return _0x5f38f8;}return this['channel'][_0x0bd2('0xab')](util[_0x0bd2('0x28')]('Executed\x20command\x20%s\x20%s','VOICEMAIL',_0x1d8a25[_0x0bd2('0x1c1')]));};AGIVertices[_0x0bd2('0xe')][_0x0bd2('0x1c2')]=function(_0x43fff0){logger[_0x0bd2('0x2e')](util[_0x0bd2('0x28')](_0x0bd2('0x1c3'),_0x43fff0['label']));if(!this[_0x0bd2('0x87')](_0x43fff0[_0x0bd2('0xd8')])){return this['channel'][_0x0bd2('0x2c')](_0x43fff0,_0x0bd2('0x1a3'));}var _0x7c25a8=this[_0x0bd2('0xf')][_0x0bd2('0x6f')](this,_0x43fff0[_0x0bd2('0xd8')]);if(!_0x7c25a8){return this[_0x0bd2('0x36')][_0x0bd2('0x2c')](_0x43fff0,'no\x20variable\x20found');}var _0x1672b8=this[_0x0bd2('0x36')][_0x0bd2('0xf')](_0x7c25a8);return{'code':0xc8,'result':_0x1672b8['extra']?_0x1672b8['extra']:'-'};};String['prototype'][_0x0bd2('0x1c4')]=function(_0x197b6b,_0xba1454){return this[_0x0bd2('0xa4')](_0x197b6b)[_0x0bd2('0x1c5')](_0xba1454);};module[_0x0bd2('0x1c6')]=AGIVertices;
\ No newline at end of file
+var _0xb458=['no\x20trunk\x20found','trunk_name','SIP/%s/%s','Executed\x20command\x20%s','finally','Enter\x20in\x20FINALLY\x20(%s)\x20block','Enter\x20in\x20GETDIGITS\x20(%s)\x20block','retry','file_id','no\x20file\x20audio\x20selected','no\x20file\x20audio\x20found','maxdigit','mindigit','hiddendigitsnum','generate','hiddendigitspos','first','substr','getsecretdigits','Enter\x20in\x20GETSECRETDIGITS\x20(%s)\x20block','goal','GOAL\x20%s','goalname','awspolly','[AGI]\x20Enter\x20in\x20AWSPOLLY\x20(%s)\x20block','Trying\x20aws\x20Polly\x20%s','aws\x20Polly\x20%s\x20file\x20created','aws\x20Polly\x20is\x20unreachable','awslex','aws_secret_access_key','no\x20valid\x20credentials\x20configured','no\x20bot\x20name\x20configured','Trying\x20Amazon\x20Lex:\x20%s','AWS_LEX_%s','Amazon\x20Lex\x20Result\x20%s','Amazon\x20Lex\x20is\x20unreachable','googleasr','Enter\x20in\x20GOOGLEASR\x20(%s)\x20block\x20%s','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','appsecret','no\x20appsecret\x20configured','wav','%s/recordings/%s','tilde\x20%s\x20file\x20created','TildeASR\x20Result\x20%s','gotoc','continueAt','priority','gotoif','condition','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','Enter\x20in\x20HANGUP\x20(%s)\x20block','hangup','Enter\x20in\x20ISPEECHASR\x20(%s)\x20block','Enter\x20in\x20ISPEECHTTS\x20(%s)\x20block','Trying\x20ispeech\x20TTS\x20%s','ispeech\x20%s\x20file\x20created','ispeech\x20TTS\x20is\x20unreachable','login','Enter\x20in\x20LOGIN\x20(%s)\x20block','findBy','no\x20find\x20by\x20configured','FIND\x20AGENT\x20%s\x20BY\x20%s','AGENT\x20%s\x20FOUND\x20BY','AGENT\x20%s\x20NOT\x20FOUND\x20BY','failure','logout','Enter\x20in\x20LOGOUT\x20(%s)\x20block','success','math','operation','no\x20operation\x20configured','math\x20%s','%s[%s]','Enter\x20in\x20MENU\x20(%s)\x20block','getData','response','Enter\x20in\x20NOOP\x20(%s)\x20block','output','Enter\x20in\x20PAUSE\x20(%s)\x20block','pause_id','playback','Enter\x20in\x20PLAYBACK\x20(%s)\x20block','Executed\x20command\x20%s\x20%s','PLAYBACK','queue','Enter\x20in\x20QUEUE\x20(%s)\x20block','queue_id','indexOf','XMCS-QUEUE','toLowerCase','QUEUE','gosub','position','record','Enter\x20in\x20RECORD\x20(%s)\x20block','recordingFormat','%s_%s','%s/recordings/%s.%s','Recording\x20%s\x20%s\x20%s\x20%s','escape_digits','restapi','no\x20url\x20configured','restAPI','Response:','inspect','no\x20variable\x20selected\x20for\x20the\x20response','%s_STATUS_CODE','200','Unable\x20to\x20set\x20result\x20in\x20variable\x20%s','saydigits','digits','saynumber','Enter\x20in\x20SAYNUMBER\x20(%s)\x20block','sayNumber','Enter\x20in\x20SAYPHONETIC\x20(%s)\x20block','sayPhonetic','sendMail','Enter\x20in\x20SENDMAIL\x20(%s)\x20block','no\x20mail\x20account\x20configured','account_id','Smtp','\x22%s\x22\x20<%s>','email','user','bcc','subject','sendMail\x20message','Trying\x20SendMail\x20with\x20account\x20%s','smtpOptions','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','sms_text','Trying\x20SendSMS\x20with\x20account\x20%s','Sms\x20message\x20added\x20to\x20outgoing\x20process','set','Enter\x20in\x20SET\x20(%s)\x20block','no\x20variable\x20selected','variable_value','start','Enter\x20in\x20START\x20(%s)\x20block','START\x20CALLY\x20SQUARE','yes','Answer','Skipped\x20Answer','subproject','Enter\x20in\x20SUBPROJECT\x20(%s)\x20block','project_id','no\x20subproject\x20selected','no\x20subproject\x20found\x20with\x20id\x20%d','project\x20in\x20subproject\x20must\x20be\x20different\x20from\x20the\x20called\x20project','AGI','host','127.0.0.1','system','Enter\x20in\x20SYSTEM\x20(%s)\x20block','command','sh\x20command:\x20%s\x20result\x20on\x20variable:\x20%s','sh\x20command:\x20%s\x20result\x20no\x20stored','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','Trying\x20Google\x20TTS\x20%s','Google\x20TTS\x20%s\x20file\x20created','Google\x20TTS\x20is\x20unreachable','unpause','Enter\x20in\x20UNPAUSE\x20(%s)\x20block','Enter\x20in\x20VOICEMAIL\x20(%s)\x20block','VOICEMAIL','mailbox','vswitch','Enter\x20in\x20SWITCH\x20(%s)\x20block','split','join','util','lodash','shelljs','odbc','moment','mustache','request-promise','../../config/logger','agi','../../config/environment','../../config/environment/shared','./scripts','/var/opt/motion2/server/files','rawHeaders','rawBody','menu','getdigits','channel','rpc','mailRpc','getVariable','getVariableById','then','prototype','getVoiceQueue','getVoiceQueueById','name','catch','getSquareProject','getSquareProjectById','getSquareOdbcById','dsn','getUser','getUserById','getTrunk','getSound','getSoundPath','save_name','getMailAccount','getMailAccountById','sendMailMessage','getIntervals','getIntervalById','IntervalId','interval','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','close','error','Error\x20closing\x20connection\x20to\x20odbc\x20%s','getSmsAccount','getSmsAccountById','createSmsMessage','createSquareDetailsReport','uniqueid','label','arg_1','callerid','createSquareRecording','calleridname','context','extension','accountcode','dnid','file','createSquareMessage','createCmContact','isNil','callback_','random','lastName','phone','list_id','scheduledAt','Callback\x20scheduled\x20at\x20','getPause','getPauseById','agentPause','agent','agentUnpause','agentLogout','agentLogin','LOCAL','shellCommand','googleCloudTTS','apiKey','google_cloud_tts_text_type','text','languageCode','en-US','ssmlGender','MALE','googleTTS','google_tts_language','url','method','timeout','number','includes','POST','PUT','toUpperCase','body','parse','headers','An\x20incorrect\x20formatted\x20json\x20headers\x20has\x20been\x20passed\x20to\x20the\x20function','computedVariables','sync','uri','render','stringify','statusMessage','statusCode','message','options','googleDialogflow','key','dialogflow_language','googleDialogflowV2','dialogflowV2_project_id','private_key','sestekNDA','ispeechTTS','ispeech_tts_language','speed','ispeechASR','isConfigured','model','awsPolly','aws_access_key_id','aws_polly_region','aws_polly_voice','Amy','aws_text_type','awsLex','aws_lex_region','aws_bot_name','googleASR','google_asr_language','tildeASR','appid','clear','clone','isString','replaceAllVariables','recursiveNodeIndex','hasOwnProperty','isPlainObject','isArray','saveRestApiResult','isEmpty','%s.%s','setVariable','replaceObjectAllVariables','length','replaceAll','extra','toString','getAndSetVariable','result','The\x20\x22%s\x22\x20variable\x20value\x20is:\x20%s','maxRetry','mrcpsynth','Enter\x20in\x20MRCPSynth\x20(%s)\x20block','no\x20text\x20configured','exec','noop','mrcprecog','Enter\x20in\x20MRCPRecog\x20(%s)\x20block','grammar','no\x20grammar\x20configured','MRCPRecog','RECOG_CONFIDENCE()','MRCP_RECOG_CONFIDENCE','RECOG_INPUT()','RECOG_INSTANCE()','Executed\x20command\x20MRCPRecog\x20%s','Enter\x20in\x20AGI\x20(%s)\x20block','args','answer','Enter\x20in\x20ANSWER\x20(%s)\x20block','callback','Enter\x20in\x20CALLBACK\x20(%s)\x20block','no\x20list\x20selected','delay','add','minutes','callback_priority','CALLBACK\x20added\x20phone:\x20%s\x20on\x20list:\x20%s\x20at\x20%s','custom_app','Enter\x20in\x20CUSTOM\x20APP\x20(%s)\x20block','application','lumenvoxtts','Enter\x20in\x20LUMENVOXTTS\x20(%s)\x20block','MRCPSynth','Executed\x20command\x20MRCPSynth\x20%s','sestektts','Enter\x20in\x20SESTEKTTS\x20(%s)\x20block','lumenvoxasr','Enter\x20in\x20LUMENVOXASR\x20(%s)\x20block','LUMENVOX_ASR_TRANSCRIPT','sestekasr','Enter\x20in\x20SESTEKASR\x20(%s)\x20block','SESTEK_ASR_CONFIDENCE','SESTEK_ASR_TRANSCRIPT','SESTEK_ASR_INSTANCE','database','odbc_id','no\x20database\x20selected','getSquareOdbc','no\x20odbc\x20database\x20found','no\x20query\x20configured','replace','no\x20variable\x20selected\x20for\x20the\x20result','variable_id','no\x20variable\x20found','keys','forEach','%s[%s][%s]','%s_ROWS_COUNT','variable\x20%s\x20set','debug','sip_id','no\x20user\x20selected','no\x20user\x20found','SIP/%s','opts','DIAL','dialogflow','no\x20key\x20configured','bot','Trying\x20Dialogflow:\x20%s','DIALOGFLOW_%s','speech','out','Dialogflow\x20Result\x20%s','Dialogflow\x20is\x20unreachable','dialogflowV2','Enter\x20in\x20DIALOGFLOW\x20V2\x20(%s)\x20block','no\x20project_id\x20configured','no\x20client_email\x20configured','no\x20private_key\x20configured','dialogflowV2_language','providerResponse','DialogflowV2\x20Result\x20%s','DialogflowV2\x20is\x20unreachable','sesteknda','Enter\x20in\x20SESTEKNDA\x20(%s)\x20block','no\x20ndauth\x20url\x20configured','no\x20username\x20configured','password','no\x20password\x20configured','ndassistant_url','Trying\x20SestekNDA:\x20%s','SESTEK_NDA_%s','audiofile','streamFile','unlink','.wav','SestekNDA\x20Result\x20%s','SestekNDA\x20is\x20unreachable','end','trunk_id','no\x20trunk\x20selected'];(function(_0x6c993a,_0x5ea3ab){var _0x27f547=function(_0x22df20){while(--_0x22df20){_0x6c993a['push'](_0x6c993a['shift']());}};_0x27f547(++_0x5ea3ab);}(_0xb458,0xca));var _0x8b45=function(_0x574395,_0x8aa7df){_0x574395=_0x574395-0x0;var _0xa2e7fa=_0xb458[_0x574395];return _0xa2e7fa;};'use strict';var fs=require('fs');var util=require(_0x8b45('0x0'));var _=require(_0x8b45('0x1'));var sh=require(_0x8b45('0x2'));var odbc=require(_0x8b45('0x3'))();var rs=require('randomstring');var moment=require(_0x8b45('0x4'));var Mustache=require(_0x8b45('0x5'));var rp=require(_0x8b45('0x6'));var logger=require(_0x8b45('0x7'))(_0x8b45('0x8'));var config=require(_0x8b45('0x9'));var shared=require(_0x8b45('0xa'));var scripts=require(_0x8b45('0xb'));var FILES_PATH=_0x8b45('0xc');var recursiveMapAttributes=[_0x8b45('0xd'),_0x8b45('0xe')];var verticesWithRetry=[_0x8b45('0xf'),_0x8b45('0x10'),'getsecretdigits'];var AGIVertices=function(_0x122b6d,_0x4c1403,_0x4a1617){this[_0x8b45('0x11')]=_0x122b6d;this[_0x8b45('0x12')]=_0x4c1403;this[_0x8b45('0x13')]=_0x4a1617;};AGIVertices['prototype'][_0x8b45('0x14')]=function(_0x58b28c,_0x290585){this[_0x8b45('0x12')][_0x8b45('0x15')](_0x58b28c)[_0x8b45('0x16')](function(_0x2d9102){_0x290585(null,_0x2d9102?_0x2d9102['name']:![]);})['catch'](function(_0x46a6c4){_0x290585(_0x46a6c4);});};AGIVertices[_0x8b45('0x17')][_0x8b45('0x18')]=function(_0x157149,_0x3b7c99){this[_0x8b45('0x12')][_0x8b45('0x19')](_0x157149)[_0x8b45('0x16')](function(_0x2fb210){_0x3b7c99(null,_0x2fb210?_0x2fb210[_0x8b45('0x1a')]:![]);})[_0x8b45('0x1b')](function(_0x153495){_0x3b7c99(_0x153495);});};AGIVertices[_0x8b45('0x17')][_0x8b45('0x1c')]=function(_0x3ce169,_0x59547e){this['rpc'][_0x8b45('0x1d')](_0x3ce169)[_0x8b45('0x16')](function(_0xfb84af){_0x59547e(null,_0xfb84af?_0xfb84af[_0x8b45('0x1a')]:![]);})[_0x8b45('0x1b')](function(_0x4cf9e5){_0x59547e(_0x4cf9e5);});};AGIVertices[_0x8b45('0x17')]['getSquareOdbc']=function(_0x219c94,_0x4bb625){this[_0x8b45('0x12')][_0x8b45('0x1e')](_0x219c94)[_0x8b45('0x16')](function(_0x51fe21){_0x4bb625(null,_0x51fe21?_0x51fe21[_0x8b45('0x1f')]:![]);})[_0x8b45('0x1b')](function(_0x48f46a){_0x4bb625(_0x48f46a);});};AGIVertices[_0x8b45('0x17')][_0x8b45('0x20')]=function(_0x2319c6,_0x4e57a9){this[_0x8b45('0x12')][_0x8b45('0x21')](_0x2319c6)[_0x8b45('0x16')](function(_0x557f5b){_0x4e57a9(null,_0x557f5b?_0x557f5b[_0x8b45('0x1a')]:![]);})['catch'](function(_0x5cd08a){_0x4e57a9(_0x5cd08a);});};AGIVertices[_0x8b45('0x17')][_0x8b45('0x22')]=function(_0xbc5c09,_0x1c38a3){this[_0x8b45('0x12')]['getTrunkById'](_0xbc5c09)[_0x8b45('0x16')](function(_0x120b37){_0x1c38a3(null,_0x120b37?_0x120b37['name']:![]);})['catch'](function(_0x5919e2){_0x1c38a3(_0x5919e2);});};AGIVertices[_0x8b45('0x17')][_0x8b45('0x23')]=function(_0x5b9862,_0x4ca445){var _0x5394ff=this;this['rpc']['getSoundById'](_0x5b9862)[_0x8b45('0x16')](function(_0x53a363){_0x4ca445(null,_0x53a363?_0x5394ff[_0x8b45('0x24')](_0x53a363[_0x8b45('0x25')]):![]);})[_0x8b45('0x1b')](function(_0x33dbb4){_0x4ca445(_0x33dbb4);});};AGIVertices['prototype'][_0x8b45('0x26')]=function(_0x556ce3,_0x5b8f40){this[_0x8b45('0x12')][_0x8b45('0x27')](_0x556ce3)[_0x8b45('0x16')](function(_0x461f6a){_0x5b8f40(null,_0x461f6a?_0x461f6a:![]);})[_0x8b45('0x1b')](function(_0xac8b1b){_0x5b8f40(_0xac8b1b);});};AGIVertices[_0x8b45('0x17')][_0x8b45('0x28')]=function(_0x46ec18,_0x3cbe18,_0x2e9a82){this[_0x8b45('0x13')][_0x8b45('0x28')](_0x46ec18,_0x3cbe18)[_0x8b45('0x16')](function(){_0x2e9a82(null);})[_0x8b45('0x1b')](function(_0xd2b907){_0x2e9a82(_0xd2b907);});};AGIVertices['prototype'][_0x8b45('0x29')]=function(_0x1f6df6,_0x4ecd9b){this[_0x8b45('0x12')][_0x8b45('0x2a')](_0x1f6df6)[_0x8b45('0x16')](function(_0x5e5701){if(_0x5e5701){if(_0x5e5701[_0x8b45('0x2b')]){_0x4ecd9b(null,[_0x5e5701[_0x8b45('0x2c')]]);}else{_0x4ecd9b(null,_['map'](_0x5e5701[_0x8b45('0x2d')],'interval'));}}else{_0x4ecd9b(null,![]);}})[_0x8b45('0x1b')](function(_0x5407c6){_0x4ecd9b(_0x5407c6);});};AGIVertices['prototype']['getSoundPath']=function(_0x4722a2){return util[_0x8b45('0x2e')](_0x8b45('0x2f'),FILES_PATH,_0x4722a2);};AGIVertices[_0x8b45('0x17')][_0x8b45('0x30')]=function(_0x1355d4,_0x533394,_0x1d9a50){odbc[_0x8b45('0x31')](_0x1355d4,function(_0x5c4a5d){if(_0x5c4a5d){logger['error'](_0x8b45('0x32'),_0x5c4a5d);_0x1d9a50(_0x5c4a5d);}else{logger[_0x8b45('0x33')](_0x8b45('0x34'));odbc[_0x8b45('0x35')](_0x533394,function(_0x3fd7e9,_0x4f32e3){if(_0x3fd7e9){logger['info'](_0x8b45('0x36'),_0x533394);_0x1d9a50(_0x3fd7e9);}else{logger['info'](_0x8b45('0x37'),_0x533394);odbc[_0x8b45('0x38')](function(_0x4bf950){if(_0x4bf950){logger[_0x8b45('0x39')](_0x8b45('0x3a'),_0x4bf950);}_0x1d9a50(null,_0x4f32e3);});}});}});};AGIVertices['prototype'][_0x8b45('0x3b')]=function(_0x49fdeb,_0x3834a6){this['rpc'][_0x8b45('0x3c')](_0x49fdeb)[_0x8b45('0x16')](function(_0x2fa196){_0x3834a6(null,_0x2fa196?_0x2fa196:![]);})[_0x8b45('0x1b')](function(_0x2dc570){_0x3834a6(_0x2dc570);});};AGIVertices[_0x8b45('0x17')][_0x8b45('0x3d')]=function(_0x22d07f,_0x676391){this[_0x8b45('0x12')][_0x8b45('0x3d')](_0x22d07f)[_0x8b45('0x16')](function(_0x2a1b9d){_0x676391(null,_0x2a1b9d);})[_0x8b45('0x1b')](function(_0x587b00){_0x676391(_0x587b00);});};AGIVertices[_0x8b45('0x17')][_0x8b45('0x3e')]=function(_0x330118,_0x46450a,_0x1b0191){this[_0x8b45('0x12')][_0x8b45('0x3e')]({'uniqueid':this[_0x8b45('0x11')][_0x8b45('0x3f')],'node':_0x330118[_0x8b45('0x40')],'application':_0x330118['agicommand'],'data':_0x46450a||null,'project_name':this[_0x8b45('0x11')][_0x8b45('0x41')],'callerid':this[_0x8b45('0x11')][_0x8b45('0x42')]})['then'](function(_0x38fb3f){if(_0x1b0191){_0x1b0191(null,_0x38fb3f);}})[_0x8b45('0x1b')](function(_0x441cdb){if(_0x1b0191){_0x1b0191(_0x441cdb);}});};AGIVertices[_0x8b45('0x17')][_0x8b45('0x43')]=function(_0x18cc74,_0x300566,_0x2db3a2,_0x5aa7c7){this[_0x8b45('0x12')][_0x8b45('0x43')]({'uniqueid':this[_0x8b45('0x11')][_0x8b45('0x3f')],'callerid':this[_0x8b45('0x11')][_0x8b45('0x42')],'calleridname':this[_0x8b45('0x11')][_0x8b45('0x44')],'context':this['channel'][_0x8b45('0x45')],'extension':this[_0x8b45('0x11')][_0x8b45('0x46')],'priority':this[_0x8b45('0x11')]['priority'],'accountcode':this['channel'][_0x8b45('0x47')],'dnid':this[_0x8b45('0x11')][_0x8b45('0x48')],'projectName':this['channel'][_0x8b45('0x41')],'saveName':_0x300566,'filename':_0x18cc74[_0x8b45('0x49')]||_0x300566,'savePath':_0x2db3a2})[_0x8b45('0x16')](function(_0x1216f5){_0x5aa7c7(null,_0x1216f5);})[_0x8b45('0x1b')](function(_0x2edc95){_0x5aa7c7(_0x2edc95);});};AGIVertices[_0x8b45('0x17')]['createSquareMessage']=function(_0x713b18,_0x3f01f7,_0x46aa61,_0x16ff19,_0x321223){this[_0x8b45('0x12')][_0x8b45('0x4a')]({'uniqueid':this[_0x8b45('0x11')][_0x8b45('0x3f')],'body':_0x713b18,'direction':_0x3f01f7,'providerName':_0x46aa61,'providerResponse':_0x16ff19})[_0x8b45('0x16')](function(_0x3eb663){if(_0x321223){_0x321223(null,_0x3eb663);}})[_0x8b45('0x1b')](function(_0x35399a){if(_0x321223){_0x321223(_0x35399a);}});};AGIVertices[_0x8b45('0x17')][_0x8b45('0x4b')]=function(_0x48275b,_0x3d5f7b){this[_0x8b45('0x12')][_0x8b45('0x4b')]({'firstName':_['isEmpty'](_0x48275b[_0x8b45('0x1a')])||_[_0x8b45('0x4c')](_0x48275b[_0x8b45('0x1a')])?_0x8b45('0x4d')+Math[_0x8b45('0x4e')]():_0x48275b[_0x8b45('0x1a')],'lastName':_['isEmpty'](_0x48275b[_0x8b45('0x4f')])||_['isNil'](_0x48275b['lastName'])?null:_0x48275b[_0x8b45('0x4f')],'phone':_0x48275b[_0x8b45('0x50')],'ListId':_0x48275b[_0x8b45('0x51')],'scheduledat':_0x48275b[_0x8b45('0x52')],'callbackUniqueid':this['channel'][_0x8b45('0x3f')],'tags':'callback','description':_0x8b45('0x53')+_0x48275b[_0x8b45('0x52')]['toString'](),'priority':_0x48275b['callback_priority']})[_0x8b45('0x16')](function(_0x50f334){_0x3d5f7b(null,_0x50f334);})['catch'](function(_0x440357){_0x3d5f7b(_0x440357);});};AGIVertices[_0x8b45('0x17')][_0x8b45('0x54')]=function(_0x56b10e,_0x3754f2){this['rpc'][_0x8b45('0x55')](_0x56b10e)[_0x8b45('0x16')](function(_0x624e90){_0x3754f2(null,_0x624e90?_0x624e90[_0x8b45('0x1a')]:![]);})['catch'](function(_0x36363c){_0x3754f2(_0x36363c);});};AGIVertices['prototype'][_0x8b45('0x56')]=function(_0x3e4354,_0x2a0186,_0x374c6a){var _0x52251e={'role':_0x8b45('0x57')};_0x52251e[_0x3e4354]=this[_0x8b45('0x11')][_0x8b45('0x42')];this[_0x8b45('0x12')][_0x8b45('0x56')](_0x52251e,_0x2a0186,this[_0x8b45('0x11')][_0x8b45('0x3f')])[_0x8b45('0x16')](function(_0x416066){_0x374c6a(null,_['isNil'](_0x416066)?![]:!![]);})['catch'](function(_0x4ba5b3){logger['error'](_0x4ba5b3);_0x374c6a(null,![]);});};AGIVertices[_0x8b45('0x17')]['agentUnpause']=function(_0x3044b8,_0x2f3737){var _0x31539e={'role':'agent'};_0x31539e[_0x3044b8]=this[_0x8b45('0x11')][_0x8b45('0x42')];this[_0x8b45('0x12')][_0x8b45('0x58')](_0x31539e)[_0x8b45('0x16')](function(_0xccfe63){_0x2f3737(null,_[_0x8b45('0x4c')](_0xccfe63)?![]:!![]);})[_0x8b45('0x1b')](function(_0x35b442){logger['error'](_0x35b442);_0x2f3737(null,![]);});};AGIVertices[_0x8b45('0x17')][_0x8b45('0x59')]=function(_0x44e818,_0x1fac17){var _0x181537={'role':_0x8b45('0x57')};_0x181537[_0x44e818]=this[_0x8b45('0x11')][_0x8b45('0x42')];this[_0x8b45('0x12')][_0x8b45('0x59')](_0x181537)[_0x8b45('0x16')](function(_0x32f117){_0x1fac17(null,_['isNil'](_0x32f117)?![]:!![]);})[_0x8b45('0x1b')](function(_0x5b29c5){logger['error'](_0x5b29c5);_0x1fac17(null,![]);});};AGIVertices['prototype'][_0x8b45('0x5a')]=function(_0x1267bf,_0x105436){var _0x1ac5ed={'role':'agent'};_0x1ac5ed[_0x1267bf]=this[_0x8b45('0x11')][_0x8b45('0x42')];var _0x34a565=_0x1267bf!='internal'?util[_0x8b45('0x2e')]('%s/%s@from-sip/n',_0x8b45('0x5b'),this[_0x8b45('0x11')]['callerid']):undefined;this[_0x8b45('0x12')]['agentLogin'](_0x1ac5ed,_0x34a565)[_0x8b45('0x16')](function(_0x518fb0){_0x105436(null,_['isNil'](_0x518fb0)?![]:!![]);})[_0x8b45('0x1b')](function(_0x51737c){logger[_0x8b45('0x39')](_0x51737c);_0x105436(null,![]);});};AGIVertices[_0x8b45('0x17')][_0x8b45('0x5c')]=function(_0x37f816,_0x5d6efb){sh['exec'](_['trim'](_0x37f816),function(_0x386f34,_0x29d8bb){var _0x5a5dd0=_0x29d8bb['replace'](/(\r\n|\n|\r)/gm,'');_0x5d6efb(null,_0x5a5dd0);});};AGIVertices[_0x8b45('0x17')][_0x8b45('0x5d')]=function(_0x438b6c,_0x4a3f16){scripts[_0x8b45('0x5d')](_0x438b6c[_0x8b45('0x5e')],_0x438b6c[_0x8b45('0x5f')]||_0x8b45('0x60'),_0x438b6c['text'],_0x438b6c[_0x8b45('0x61')]||_0x8b45('0x62'),_0x438b6c[_0x8b45('0x63')]||_0x8b45('0x64'),_0x438b6c['audioEncoding']||'MP3')[_0x8b45('0x16')](function(_0x331a5e){_0x4a3f16(null,_0x331a5e);})[_0x8b45('0x1b')](function(_0x303a0e){_0x4a3f16(_0x303a0e);});};AGIVertices[_0x8b45('0x17')][_0x8b45('0x65')]=function(_0x1e2723,_0xe95bcf){scripts[_0x8b45('0x65')](_0x1e2723[_0x8b45('0x60')],_0x1e2723[_0x8b45('0x66')]||'en',0x1)[_0x8b45('0x16')](function(_0x1c6740){_0xe95bcf(null,_0x1c6740);})[_0x8b45('0x1b')](function(_0x38ac37){_0xe95bcf(_0x38ac37);});};AGIVertices['prototype']['restAPI']=function(_0x129571,_0xacb186){var _0x219524={'uri':_0x129571[_0x8b45('0x67')],'method':_0x129571[_0x8b45('0x68')],'json':!![],'resolveWithFullResponse':!![],'strictSSL':![],'timeout':typeof parseInt(_0x129571[_0x8b45('0x69')])===_0x8b45('0x6a')&&parseInt(_0x129571[_0x8b45('0x69')])>=0x1?parseInt(_0x129571[_0x8b45('0x69')])*0x3e8:0x5*0x3e8};if(_[_0x8b45('0x6b')]([_0x8b45('0x6c'),_0x8b45('0x6d')],_0x219524[_0x8b45('0x68')][_0x8b45('0x6e')]())){try{_0x219524[_0x8b45('0x6f')]=_0x129571[_0x8b45('0xe')]?JSON[_0x8b45('0x70')](_0x129571[_0x8b45('0xe')]):{};}catch(_0x19a313){logger[_0x8b45('0x39')]('An\x20incorrect\x20formatted\x20json\x20body\x20has\x20been\x20passed\x20to\x20the\x20function',_0x19a313);}}try{_0x219524[_0x8b45('0x71')]=_0x129571[_0x8b45('0xd')]?JSON[_0x8b45('0x70')](_0x129571[_0x8b45('0xd')]):{};}catch(_0x40baf9){logger[_0x8b45('0x39')](_0x8b45('0x72'),_0x40baf9);}if(_0x129571[_0x8b45('0x73')]){try{var _0x292ada=require(_0x129571['computedVariables'])[_0x8b45('0x74')](this,_0x219524);_0x219524[_0x8b45('0x75')]=Mustache[_0x8b45('0x76')](_0x129571[_0x8b45('0x67')],_0x292ada,{},['$$','$$']);if(_0x219524['headers']){_0x219524[_0x8b45('0x71')]=JSON[_0x8b45('0x70')](Mustache[_0x8b45('0x76')](JSON['stringify'](_0x219524[_0x8b45('0x71')]),_0x292ada,{},['$$','$$']));}if(_0x219524[_0x8b45('0x6f')]){_0x219524[_0x8b45('0x6f')]=JSON[_0x8b45('0x70')](Mustache['render'](JSON[_0x8b45('0x77')](_0x219524[_0x8b45('0x6f')]),_0x292ada,{},['$$','$$']));}}catch(_0xf467df){logger[_0x8b45('0x39')]('An\x20incorrect\x20formatted\x20json\x20has\x20been\x20passed\x20to\x20the\x20function',_0xf467df);}}rp(_0x219524)['then'](function(_0x1d4e14){var _0x3aa212={'statusCode':_0x1d4e14['statusCode']||0xc8,'statusMessage':_0x1d4e14[_0x8b45('0x78')]||'OK','headers':_0x1d4e14[_0x8b45('0x71')]||{},'body':_0x1d4e14[_0x8b45('0x6f')]||{}};_0xacb186(null,_0x3aa212);})[_0x8b45('0x1b')](function(_0x10d6e8){var _0x455153={'statusCode':_0x10d6e8[_0x8b45('0x79')]||0x1f4,'statusMessage':_0x10d6e8[_0x8b45('0x7a')]||'500\x20-\x20Internal\x20Server\x20Error','headers':_0x10d6e8['options']['headers']||{},'body':_0x10d6e8[_0x8b45('0x7b')][_0x8b45('0x6f')]||{}};_0xacb186(null,_0x455153);});};AGIVertices[_0x8b45('0x17')]['googleDialogflow']=function(_0x119da2,_0x494584){scripts[_0x8b45('0x7c')](this[_0x8b45('0x11')][_0x8b45('0x3f')],_0x119da2[_0x8b45('0x7d')],_0x119da2[_0x8b45('0x60')],_0x119da2[_0x8b45('0x7e')]||'en')['then'](function(_0xaf27eb){_0x494584(null,_0xaf27eb);})[_0x8b45('0x1b')](function(_0x116958){_0x494584(_0x116958);});};AGIVertices[_0x8b45('0x17')]['googleDialogflowV2']=function(_0x4501c0,_0x18e3b3){scripts[_0x8b45('0x7f')](this[_0x8b45('0x11')][_0x8b45('0x3f')],_0x4501c0[_0x8b45('0x80')],_0x4501c0['client_email'],_0x4501c0[_0x8b45('0x81')],_0x4501c0[_0x8b45('0x60')],_0x4501c0['dialogflowV2_language']||'en')[_0x8b45('0x16')](function(_0x5d9367){_0x18e3b3(null,_0x5d9367);})[_0x8b45('0x1b')](function(_0x41f86a){_0x18e3b3(_0x41f86a);});};AGIVertices[_0x8b45('0x17')][_0x8b45('0x82')]=function(_0x24a39c,_0x5de680){scripts[_0x8b45('0x82')](this[_0x8b45('0x11')],_0x24a39c)[_0x8b45('0x16')](function(_0x79495){_0x5de680(null,_0x79495);})[_0x8b45('0x1b')](function(_0xb9ca47){_0x5de680(_0xb9ca47);});};AGIVertices[_0x8b45('0x17')]['ispeechTTS']=function(_0x21f9cd,_0x2e4927){scripts[_0x8b45('0x83')](_0x21f9cd[_0x8b45('0x7d')],_0x21f9cd[_0x8b45('0x60')],_0x21f9cd[_0x8b45('0x84')]||_0x8b45('0x62'),_0x21f9cd[_0x8b45('0x85')])[_0x8b45('0x16')](function(_0x259f36){_0x2e4927(null,_0x259f36);})[_0x8b45('0x1b')](function(_0x1f3ee8){_0x2e4927(_0x1f3ee8);});};AGIVertices[_0x8b45('0x17')][_0x8b45('0x86')]=function(_0x2d4232,_0x46a232,_0xefd798){scripts[_0x8b45('0x86')](_0x46a232,_0x2d4232[_0x8b45('0x7d')],_0x2d4232['ispeech_asr_language']||_0x8b45('0x62'),this[_0x8b45('0x87')](_0x2d4232[_0x8b45('0x88')])?_0x2d4232[_0x8b45('0x88')]:undefined)[_0x8b45('0x16')](function(_0x2e12f6){_0xefd798(null,_0x2e12f6);})['catch'](function(_0x2c1d33){_0xefd798(_0x2c1d33);});};AGIVertices[_0x8b45('0x17')]['awsPolly']=function(_0x322312,_0x4f18cd){scripts[_0x8b45('0x89')](_0x322312[_0x8b45('0x8a')],_0x322312['aws_secret_access_key'],_0x322312[_0x8b45('0x8b')],_0x322312[_0x8b45('0x8c')]||_0x8b45('0x8d'),_0x322312[_0x8b45('0x60')],_0x322312[_0x8b45('0x8e')]||_0x8b45('0x60'))['then'](function(_0x2a79a9){_0x4f18cd(null,_0x2a79a9);})['catch'](function(_0x301f60){_0x4f18cd(_0x301f60);});};AGIVertices[_0x8b45('0x17')][_0x8b45('0x8f')]=function(_0xee3f9a,_0x4fa795){scripts[_0x8b45('0x8f')](this[_0x8b45('0x11')][_0x8b45('0x3f')],_0xee3f9a[_0x8b45('0x8a')],_0xee3f9a['aws_secret_access_key'],_0xee3f9a[_0x8b45('0x90')],_0xee3f9a['text'],_0xee3f9a[_0x8b45('0x91')])['then'](function(_0x15189e){_0x4fa795(null,_0x15189e);})['catch'](function(_0x407e8d){_0x4fa795(_0x407e8d);});};AGIVertices[_0x8b45('0x17')][_0x8b45('0x92')]=function(_0x45df26,_0x308976,_0x555ecf){scripts[_0x8b45('0x92')](_0x308976,_0x45df26['key'],_0x45df26[_0x8b45('0x93')]||_0x8b45('0x62'))[_0x8b45('0x16')](function(_0x44db67){_0x555ecf(null,_0x44db67);})[_0x8b45('0x1b')](function(_0x2d2a69){_0x555ecf(_0x2d2a69);});};AGIVertices[_0x8b45('0x17')][_0x8b45('0x94')]=function(_0x4fb54d,_0x52c8fc,_0x19dcac){scripts[_0x8b45('0x94')](_0x52c8fc,_0x4fb54d[_0x8b45('0x95')],_0x4fb54d['appsecret'],_0x4fb54d[_0x8b45('0x75')])[_0x8b45('0x16')](function(_0x5ab640){_0x19dcac(null,_0x5ab640);})[_0x8b45('0x1b')](function(_0x161619){_0x19dcac(_0x161619);});};AGIVertices[_0x8b45('0x17')][_0x8b45('0x96')]=function(_0x20a9c2){var _0x35ad39=_[_0x8b45('0x6b')](verticesWithRetry,_0x20a9c2['agicommand'])?_0x20a9c2:_[_0x8b45('0x97')](_0x20a9c2);for(var _0x28aef5 in _0x35ad39){if(_0x35ad39['hasOwnProperty'](_0x28aef5)){if(_0x35ad39[_0x28aef5]&&_[_0x8b45('0x98')](_0x35ad39[_0x28aef5])){if(_[_0x8b45('0x6b')](recursiveMapAttributes,_0x28aef5)){_0x35ad39[_0x28aef5]=this['replaceObjectAllVariables'](_0x35ad39[_0x28aef5]);}else{_0x35ad39[_0x28aef5]=this[_0x8b45('0x99')](_0x35ad39[_0x28aef5]);}}}}return _0x35ad39;};AGIVertices[_0x8b45('0x17')][_0x8b45('0x9a')]=function(_0x5f2642){for(var _0x4005ec in _0x5f2642){if(_0x5f2642[_0x8b45('0x9b')](_0x4005ec)){if(_[_0x8b45('0x9c')](_0x5f2642[_0x4005ec])){this[_0x8b45('0x9a')](_0x5f2642[_0x4005ec]);}else if(_[_0x8b45('0x9d')](_0x5f2642[_0x4005ec])){for(var _0x4d9f87=0x0;_0x4d9f87<_0x5f2642[_0x4005ec]['length'];_0x4d9f87++){this['recursiveNodeIndex'](_0x5f2642[_0x4005ec][_0x4d9f87]);}}else if(_[_0x8b45('0x98')](_0x5f2642[_0x4005ec])){_0x5f2642[_0x4005ec]=this['replaceAllVariables'](_0x5f2642[_0x4005ec]);}}}};AGIVertices['prototype'][_0x8b45('0x9e')]=function(_0x218643,_0x5253f7){for(var _0x22d1e1 in _0x218643){if(_0x218643[_0x8b45('0x9b')](_0x22d1e1)){if(_[_0x8b45('0x9c')](_0x218643[_0x22d1e1])){if(!_[_0x8b45('0x9f')](_0x218643[_0x22d1e1])){this['saveRestApiResult'](_0x218643[_0x22d1e1],util[_0x8b45('0x2e')](_0x8b45('0xa0'),_0x5253f7,_0x22d1e1));}}else if(_[_0x8b45('0x9d')](_0x218643[_0x22d1e1])){for(var _0x3036f4=0x0;_0x3036f4<_0x218643[_0x22d1e1]['length'];_0x3036f4++){this['saveRestApiResult'](_0x218643[_0x22d1e1][_0x3036f4],util[_0x8b45('0x2e')]('%s.%s',_0x5253f7,_0x22d1e1+'['+_0x3036f4+']'));}}else{if(!_[_0x8b45('0x4c')](_0x218643[_0x22d1e1])){this[_0x8b45('0x11')][_0x8b45('0xa1')](util[_0x8b45('0x2e')](_0x8b45('0xa0'),_0x5253f7,_0x22d1e1),_0x218643[_0x22d1e1]);}}}}};AGIVertices[_0x8b45('0x17')][_0x8b45('0xa2')]=function(_0x512305){try{var _0x242424=JSON[_0x8b45('0x70')](_0x512305);this['recursiveNodeIndex'](_0x242424);return JSON[_0x8b45('0x77')](_0x242424);}catch(_0x55b640){return this['replaceAllVariables'](_0x512305);}};AGIVertices[_0x8b45('0x17')]['replaceAllVariables']=function(_0x174676){var _0x404186=_0x174676['split']('{');for(var _0x284d2f=0x1;_0x284d2f<_0x404186[_0x8b45('0xa3')];_0x284d2f+=0x1){var _0x58fa49=_0x404186[_0x284d2f]['split']('}');if(_0x58fa49[_0x8b45('0xa3')]>0x1){_0x174676=_0x174676[_0x8b45('0xa4')]('{'+_0x58fa49[0x0]+'}',this[_0x8b45('0x11')][_0x8b45('0x14')](_0x58fa49[0x0])[_0x8b45('0xa5')]||_0x58fa49[0x0]);}}if(_0x404186[_0x8b45('0xa3')]===0x1){return _0x174676[_0x8b45('0xa6')]();}return this[_0x8b45('0x99')](_0x174676);};AGIVertices[_0x8b45('0x17')][_0x8b45('0xa7')]=function(_0x117405,_0x32c5cc){var _0x5bd85f=this[_0x8b45('0x11')][_0x8b45('0x14')](_0x117405);if(_0x5bd85f[_0x8b45('0xa8')]===-0x1){return _0x5bd85f;}logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0xa9'),_0x32c5cc,_0x5bd85f[_0x8b45('0xa5')]));return this[_0x8b45('0x11')][_0x8b45('0xa1')](_0x32c5cc,_0x5bd85f[_0x8b45('0xa5')]);};AGIVertices[_0x8b45('0x17')][_0x8b45('0x87')]=function(_0x4566b7){return _0x4566b7&&_0x4566b7!=='0'&&_0x4566b7!=='-1'&&_0x4566b7!=='';};AGIVertices['prototype'][_0x8b45('0xaa')]=function(_0x391306){this[_0x8b45('0x3e')]['sync'](this,_0x391306,'-');_0x391306['retry']=_0x391306['maxRetry'];return{'code':0xc8,'result':'-'};};AGIVertices[_0x8b45('0x17')][_0x8b45('0xab')]=function(_0x4e8bc0){logger['info'](util[_0x8b45('0x2e')](_0x8b45('0xac'),_0x4e8bc0[_0x8b45('0x40')]));if(!this[_0x8b45('0x87')](_0x4e8bc0[_0x8b45('0x60')])){return this[_0x8b45('0x11')]['noop'](_0x8b45('0xad'));}var _0xf70172='\x22'+_0x4e8bc0['text']+'\x22';if(this[_0x8b45('0x87')](_0x4e8bc0[_0x8b45('0x7b')])){_0xf70172+=','+_0x4e8bc0[_0x8b45('0x7b')];}var _0x3fb010=this[_0x8b45('0x11')][_0x8b45('0xae')]('MRCPSynth',_0xf70172);if(_0x3fb010['result']===-0x1){return _0x3fb010;}return this[_0x8b45('0x11')][_0x8b45('0xaf')](util['format']('Executed\x20command\x20MRCPSynth\x20%s',_0xf70172));};AGIVertices[_0x8b45('0x17')][_0x8b45('0xb0')]=function(_0x3fa2a7){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0xb1'),_0x3fa2a7['label']));if(!this[_0x8b45('0x87')](_0x3fa2a7[_0x8b45('0xb2')])){return this['channel'][_0x8b45('0xaf')](_0x8b45('0xb3'));}var _0x96bcf=_0x3fa2a7[_0x8b45('0xb2')];if(this[_0x8b45('0x87')](_0x3fa2a7[_0x8b45('0x7b')])){_0x96bcf+=','+_0x3fa2a7[_0x8b45('0x7b')];}var _0x32fdec=this[_0x8b45('0x11')]['exec'](_0x8b45('0xb4'),_0x96bcf);if(_0x32fdec[_0x8b45('0xa8')]===-0x1){return _0x32fdec;}var _0x5e2c7c=this[_0x8b45('0xa7')](_0x8b45('0xb5'),_0x8b45('0xb6'));if(_0x5e2c7c[_0x8b45('0xa8')]===-0x1){return _0x5e2c7c;}var _0x5653b2=this[_0x8b45('0xa7')](_0x8b45('0xb7'),'MRCP_RECOG_TRANSCRIPT');if(_0x5653b2[_0x8b45('0xa8')]===-0x1){return _0x5653b2;}var _0x404d34=this[_0x8b45('0xa7')](_0x8b45('0xb8'),'MRCP_RECOG_INSTANCE');if(_0x404d34[_0x8b45('0xa8')]===-0x1){return _0x404d34;}return this[_0x8b45('0x11')]['noop'](util[_0x8b45('0x2e')](_0x8b45('0xb9'),_0x96bcf));};AGIVertices[_0x8b45('0x17')]['agi']=function(_0x1abc67){logger['info'](util[_0x8b45('0x2e')](_0x8b45('0xba'),_0x1abc67[_0x8b45('0x40')]));return this[_0x8b45('0x11')][_0x8b45('0x8')]([_0x1abc67['command'],_0x1abc67[_0x8b45('0xbb')]]);};AGIVertices[_0x8b45('0x17')][_0x8b45('0xbc')]=function(_0x37006d){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0xbd'),_0x37006d[_0x8b45('0x40')]));if(this['isConfigured'](_0x37006d[_0x8b45('0x69')])){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')]('Wait\x20%s\x20seconds\x20before\x20answer',_0x37006d[_0x8b45('0x69')]));var _0x1fcc5a=this[_0x8b45('0x11')]['wait'](_0x37006d[_0x8b45('0x69')]);if(_0x1fcc5a[_0x8b45('0xa8')]===-0x1){return _0x1fcc5a;}}return this[_0x8b45('0x11')][_0x8b45('0xbc')]();};AGIVertices[_0x8b45('0x17')][_0x8b45('0xbe')]=function(_0x4e4490){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0xbf'),_0x4e4490[_0x8b45('0x40')]));if(!this['isConfigured'](_0x4e4490[_0x8b45('0x51')])){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x4e4490,_0x8b45('0xc0'));}_0x4e4490[_0x8b45('0x52')]=moment();if(this[_0x8b45('0x87')](_0x4e4490[_0x8b45('0xc1')])){_0x4e4490['scheduledAt']=moment()[_0x8b45('0xc2')](_0x4e4490[_0x8b45('0xc1')],_0x8b45('0xc3'));}if(!this['isConfigured'](_0x4e4490[_0x8b45('0xc4')])){_0x4e4490[_0x8b45('0xc4')]=0x2;}this['createCmContact'][_0x8b45('0x74')](this,_0x4e4490);return this[_0x8b45('0x11')][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0xc5'),_0x4e4490[_0x8b45('0x50')],_0x4e4490[_0x8b45('0x51')],_0x4e4490[_0x8b45('0x52')]));};AGIVertices[_0x8b45('0x17')][_0x8b45('0xc6')]=function(_0x3b6a7e){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0xc7'),_0x3b6a7e[_0x8b45('0x40')]));var _0x5d4b63=this[_0x8b45('0x11')][_0x8b45('0xae')](_0x3b6a7e[_0x8b45('0xc8')],_0x3b6a7e[_0x8b45('0x7b')]);if(_0x5d4b63[_0x8b45('0xa8')]===-0x1){return _0x5d4b63;}return this[_0x8b45('0x11')][_0x8b45('0xaf')](util[_0x8b45('0x2e')]('Executed\x20command\x20%s\x20%s',_0x3b6a7e['application'],_0x3b6a7e[_0x8b45('0x7b')]));};AGIVertices[_0x8b45('0x17')][_0x8b45('0xc9')]=function(_0x2d1f55){logger[_0x8b45('0x33')](util['format'](_0x8b45('0xca'),_0x2d1f55[_0x8b45('0x40')]));if(!this[_0x8b45('0x87')](_0x2d1f55['text'])){return this['channel'][_0x8b45('0xaf')]('no\x20text\x20configured');}var _0x44571d='\x22'+_0x2d1f55[_0x8b45('0x60')]+'\x22';if(this[_0x8b45('0x87')](_0x2d1f55[_0x8b45('0x7b')])){_0x44571d+=','+_0x2d1f55[_0x8b45('0x7b')];}var _0x2ffe71=this[_0x8b45('0x11')][_0x8b45('0xae')](_0x8b45('0xcb'),_0x44571d);if(_0x2ffe71[_0x8b45('0xa8')]===-0x1){return _0x2ffe71;}return this[_0x8b45('0x11')][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0xcc'),_0x44571d));};AGIVertices[_0x8b45('0x17')][_0x8b45('0xcd')]=function(_0x49be62){logger['info'](util[_0x8b45('0x2e')](_0x8b45('0xce'),_0x49be62['label']));if(!this[_0x8b45('0x87')](_0x49be62[_0x8b45('0x60')])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0xad'));}var _0x513f66='\x22'+_0x49be62[_0x8b45('0x60')]+'\x22';if(this[_0x8b45('0x87')](_0x49be62[_0x8b45('0x7b')])){_0x513f66+=','+_0x49be62[_0x8b45('0x7b')];}var _0x322ef3=this['channel']['exec'](_0x8b45('0xcb'),_0x513f66);if(_0x322ef3[_0x8b45('0xa8')]===-0x1){return _0x322ef3;}return this['channel'][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0xcc'),_0x513f66));};AGIVertices[_0x8b45('0x17')][_0x8b45('0xcf')]=function(_0x5f2c1b){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0xd0'),_0x5f2c1b[_0x8b45('0x40')]));if(!this['isConfigured'](_0x5f2c1b[_0x8b45('0xb2')])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0xb3'));}var _0x28e8fa=_0x5f2c1b['grammar'];if(this[_0x8b45('0x87')](_0x5f2c1b[_0x8b45('0x7b')])){_0x28e8fa+=','+_0x5f2c1b[_0x8b45('0x7b')];}var _0x5720ad=this[_0x8b45('0x11')][_0x8b45('0xae')](_0x8b45('0xb4'),_0x28e8fa);if(_0x5720ad[_0x8b45('0xa8')]===-0x1){return _0x5720ad;}var _0x270ce5=this[_0x8b45('0xa7')](_0x8b45('0xb5'),'LUMENVOX_ASR_CONFIDENCE');if(_0x270ce5[_0x8b45('0xa8')]===-0x1){return _0x270ce5;}var _0x5d5276=this[_0x8b45('0xa7')](_0x8b45('0xb7'),_0x8b45('0xd1'));if(_0x5d5276[_0x8b45('0xa8')]===-0x1){return _0x5d5276;}var _0x2e22c0=this[_0x8b45('0xa7')]('RECOG_INSTANCE()','LUMENVOX_ASR_INSTANCE');if(_0x2e22c0['result']===-0x1){return _0x2e22c0;}return this[_0x8b45('0x11')]['noop'](util['format'](_0x8b45('0xb9'),_0x28e8fa));};AGIVertices[_0x8b45('0x17')][_0x8b45('0xd2')]=function(_0x570ea1){logger['info'](util[_0x8b45('0x2e')](_0x8b45('0xd3'),_0x570ea1[_0x8b45('0x40')]));if(!this[_0x8b45('0x87')](_0x570ea1[_0x8b45('0xb2')])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0xb3'));}var _0x4fe9c7=_0x570ea1[_0x8b45('0xb2')];if(this['isConfigured'](_0x570ea1[_0x8b45('0x7b')])){_0x4fe9c7+=','+_0x570ea1['options'];}var _0xcd3069=this['channel'][_0x8b45('0xae')]('MRCPRecog',_0x4fe9c7);if(_0xcd3069[_0x8b45('0xa8')]===-0x1){return _0xcd3069;}var _0x1106d6=this['getAndSetVariable']('RECOG_CONFIDENCE()',_0x8b45('0xd4'));if(_0x1106d6[_0x8b45('0xa8')]===-0x1){return _0x1106d6;}var _0x4d9c5d=this[_0x8b45('0xa7')](_0x8b45('0xb7'),_0x8b45('0xd5'));if(_0x4d9c5d[_0x8b45('0xa8')]===-0x1){return _0x4d9c5d;}var _0x3d0941=this['getAndSetVariable'](_0x8b45('0xb8'),_0x8b45('0xd6'));if(_0x3d0941[_0x8b45('0xa8')]===-0x1){return _0x3d0941;}return this[_0x8b45('0x11')][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0xb9'),_0x4fe9c7));};AGIVertices['prototype'][_0x8b45('0xd7')]=function(_0x41d20e){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')]('Enter\x20in\x20DATABASE\x20(%s)\x20block',_0x41d20e[_0x8b45('0x40')]));if(!this[_0x8b45('0x87')](_0x41d20e[_0x8b45('0xd8')])){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x41d20e,_0x8b45('0xd9'));}var _0x57803d=this[_0x8b45('0xda')]['sync'](this,_0x41d20e[_0x8b45('0xd8')]);if(!_0x57803d){return this[_0x8b45('0x11')]['error'](_0x41d20e,_0x8b45('0xdb'));}if(!this['isConfigured'](_0x41d20e[_0x8b45('0x35')])){return this['channel'][_0x8b45('0x39')](_0x41d20e,_0x8b45('0xdc'));}var _0x29ad1f=_0x41d20e[_0x8b45('0x35')][_0x8b45('0xdd')](/(\r\n|\n|\r)/gm,'\x20');this[_0x8b45('0x11')]['noop'](util[_0x8b45('0x2e')]('query:\x20%s',_0x29ad1f));var _0x584939=this[_0x8b45('0x30')][_0x8b45('0x74')](this,_0x57803d,_0x29ad1f);this[_0x8b45('0x3e')][_0x8b45('0x74')](this,_0x41d20e,_0x29ad1f);if(!this['isConfigured'](_0x41d20e['variable_id'])){return this['channel']['noop'](_0x8b45('0xde'));}var _0xf1196c=this[_0x8b45('0x14')][_0x8b45('0x74')](this,_0x41d20e[_0x8b45('0xdf')]);if(!_0xf1196c){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x41d20e,_0x8b45('0xe0'));}var _0x11bd2a=this;_0x584939['forEach'](function(_0x4e19ff,_0x5743bc){Object[_0x8b45('0xe1')](_0x4e19ff)[_0x8b45('0xe2')](function(_0x389086){_0x11bd2a[_0x8b45('0x11')]['setVariable'](util['format'](_0x8b45('0xe3'),_0xf1196c,_0x5743bc,_0x389086),_0x4e19ff[_0x389086]);});});this['channel'][_0x8b45('0xa1')](util[_0x8b45('0x2e')](_0x8b45('0xe4'),_0xf1196c),_0x584939[_0x8b45('0xa3')]);return this[_0x8b45('0x11')]['noop'](util[_0x8b45('0x2e')](_0x8b45('0xe5'),_0xf1196c));};AGIVertices[_0x8b45('0x17')]['dial']=function(_0x11d03e){logger[_0x8b45('0xe6')](util[_0x8b45('0x2e')]('Enter\x20in\x20DIAL\x20(%s)\x20block',_0x11d03e[_0x8b45('0x40')]));if(!this['isConfigured'](_0x11d03e[_0x8b45('0xe7')])){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x11d03e,_0x8b45('0xe8'));}var _0x482083=this[_0x8b45('0x20')][_0x8b45('0x74')](this,_0x11d03e[_0x8b45('0xe7')]);if(!_0x482083){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x11d03e,_0x8b45('0xe9'));}var _0x55b93d=this[_0x8b45('0x11')][_0x8b45('0xae')]('DIAL',[util[_0x8b45('0x2e')](_0x8b45('0xea'),_0x482083),_0x11d03e[_0x8b45('0x69')],_0x11d03e[_0x8b45('0xeb')],_0x11d03e[_0x8b45('0x67')]]);if(_0x55b93d[_0x8b45('0xa8')]===-0x1){return _0x55b93d;}return this[_0x8b45('0x11')][_0x8b45('0xaf')](util['format']('Executed\x20command\x20%s',_0x8b45('0xec')));};AGIVertices['prototype'][_0x8b45('0xed')]=function(_0x1ea257){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')]('Enter\x20in\x20DIALOGFLOW\x20(%s)\x20block',_0x1ea257[_0x8b45('0x40')]));if(!this['isConfigured'](_0x1ea257[_0x8b45('0x7d')])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0xee'));}if(!this[_0x8b45('0x87')](_0x1ea257[_0x8b45('0x60')])){return this[_0x8b45('0x11')][_0x8b45('0xaf')]('no\x20text\x20configured');}this[_0x8b45('0x11')][_0x8b45('0xef')]=!![];this[_0x8b45('0x3e')](_0x1ea257);this[_0x8b45('0x4a')](_0x1ea257['text'],'in','','');this[_0x8b45('0x11')][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0xf0'),_0x1ea257[_0x8b45('0x60')]));var _0xbfaaa0=this[_0x8b45('0x7c')][_0x8b45('0x74')](this,_0x1ea257);if(_0xbfaaa0){for(var _0x2b1ccb in _0xbfaaa0){if(_0xbfaaa0[_0x8b45('0x9b')](_0x2b1ccb)){this[_0x8b45('0x11')][_0x8b45('0xa1')](util[_0x8b45('0x2e')](_0x8b45('0xf1'),_0x2b1ccb['toUpperCase']()),_0xbfaaa0[_0x2b1ccb]);}}this[_0x8b45('0x4a')](_0xbfaaa0[_0x8b45('0xf2')],_0x8b45('0xf3'),'dialogflow','');return this[_0x8b45('0x11')][_0x8b45('0xaf')](util['format'](_0x8b45('0xf4'),_0xbfaaa0[_0x8b45('0xf2')]));}return this['channel'][_0x8b45('0x39')](_0x1ea257,_0x8b45('0xf5'));};AGIVertices[_0x8b45('0x17')][_0x8b45('0xf6')]=function(_0xec1bb5){logger[_0x8b45('0x33')](util['format'](_0x8b45('0xf7'),_0xec1bb5['label']));if(!this['isConfigured'](_0xec1bb5[_0x8b45('0x80')])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0xf8'));}if(!this['isConfigured'](_0xec1bb5['client_email'])){return this[_0x8b45('0x11')]['noop'](_0x8b45('0xf9'));}if(!this['isConfigured'](_0xec1bb5[_0x8b45('0x81')])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0xfa'));}if(!this[_0x8b45('0x87')](_0xec1bb5[_0x8b45('0xfb')])){return this[_0x8b45('0x11')][_0x8b45('0xaf')]('no\x20anguage\x20configured');}if(!this['isConfigured'](_0xec1bb5[_0x8b45('0x60')])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0xad'));}this[_0x8b45('0x11')][_0x8b45('0xef')]=!![];this[_0x8b45('0x3e')](_0xec1bb5);this[_0x8b45('0x4a')](_0xec1bb5[_0x8b45('0x60')],'in','','');this[_0x8b45('0x11')]['noop'](util['format']('Trying\x20DialogflowV2:\x20%s',_0xec1bb5['text']));var _0x463d7f=this['googleDialogflowV2'][_0x8b45('0x74')](this,_0xec1bb5);if(_0x463d7f){for(var _0x3aafb1 in _0x463d7f){if(_0x463d7f[_0x8b45('0x9b')](_0x3aafb1)){if(_0x3aafb1!==_0x8b45('0xfc')){this[_0x8b45('0x11')][_0x8b45('0xa1')](util['format'](_0x8b45('0xf1'),_0x3aafb1[_0x8b45('0x6e')]()),_0x463d7f[_0x3aafb1]);}}}this[_0x8b45('0x4a')](_0x463d7f[_0x8b45('0xf2')],_0x8b45('0xf3'),_0x8b45('0xf6'),_0x463d7f[_0x8b45('0xfc')]);return this['channel'][_0x8b45('0xaf')](util['format'](_0x8b45('0xfd'),_0x463d7f[_0x8b45('0xf2')]));}return this[_0x8b45('0x11')][_0x8b45('0x39')](_0xec1bb5,_0x8b45('0xfe'));};AGIVertices[_0x8b45('0x17')][_0x8b45('0xff')]=function(_0x40c5eb){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x100'),_0x40c5eb[_0x8b45('0x40')]));if(!this[_0x8b45('0x87')](_0x40c5eb['ndauth_url'])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0x101'));}if(!this[_0x8b45('0x87')](_0x40c5eb['username'])){return this['channel'][_0x8b45('0xaf')](_0x8b45('0x102'));}if(!this[_0x8b45('0x87')](_0x40c5eb[_0x8b45('0x103')])){return this[_0x8b45('0x11')]['noop'](_0x8b45('0x104'));}if(!this[_0x8b45('0x87')](_0x40c5eb[_0x8b45('0x105')])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0xad'));}this[_0x8b45('0x11')][_0x8b45('0xef')]=!![];this[_0x8b45('0x3e')](_0x40c5eb);this[_0x8b45('0x4a')](_0x40c5eb['text'],'in','','');this[_0x8b45('0x11')][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0x106'),_0x40c5eb[_0x8b45('0x60')]));var _0x22524a=this[_0x8b45('0x82')][_0x8b45('0x74')](this,_0x40c5eb);if(_0x22524a){for(var _0x23f16d in _0x22524a){if(_0x22524a[_0x8b45('0x9b')](_0x23f16d)){this['channel']['setVariable'](util[_0x8b45('0x2e')](_0x8b45('0x107'),_0x23f16d['toUpperCase']()),_0x22524a[_0x23f16d]);}}this['createSquareMessage'](_0x22524a[_0x8b45('0xf2')],_0x8b45('0xf3'),_0x8b45('0xff'),'');if(_0x22524a[_0x8b45('0x108')]){this[_0x8b45('0x11')]['noop'](util[_0x8b45('0x2e')]('Sestek\x20NDA\x20%s\x20file\x20created',_0x22524a[_0x8b45('0x108')]));var _0x8d062d=this[_0x8b45('0x11')][_0x8b45('0x109')](_0x22524a[_0x8b45('0x108')]);try{fs[_0x8b45('0x10a')](_0x22524a[_0x8b45('0x108')]+_0x8b45('0x10b'));}catch(_0x31e5f1){logger[_0x8b45('0x39')](_0x31e5f1);}return _0x8d062d;}else{return this[_0x8b45('0x11')][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0x10c'),_0x22524a[_0x8b45('0xf2')]));}}return this['channel'][_0x8b45('0x39')](_0x40c5eb,_0x8b45('0x10d'));};AGIVertices[_0x8b45('0x17')][_0x8b45('0x10e')]=function(_0x11a0c6){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')]('Enter\x20in\x20END\x20(%s)\x20block',_0x11a0c6[_0x8b45('0x40')]));return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0x10e'));};AGIVertices[_0x8b45('0x17')]['ext_dial']=function(_0x2b24a1){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')]('Enter\x20in\x20EXTERNAL\x20DIAL\x20(%s)\x20block',_0x2b24a1[_0x8b45('0x40')]));var _0x126c68='';if(_0x2b24a1[_0x8b45('0x10f')]){if(!this[_0x8b45('0x87')](_0x2b24a1[_0x8b45('0x10f')])){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x2b24a1,_0x8b45('0x110'));}else{var _0x99904d=parseInt(_0x2b24a1[_0x8b45('0x10f')],0xa);if(isNaN(_0x99904d)){_0x126c68=_0x2b24a1[_0x8b45('0x10f')];}else{_0x126c68=this[_0x8b45('0x22')][_0x8b45('0x74')](this,_0x2b24a1[_0x8b45('0x10f')]);if(!_0x126c68){return this['channel'][_0x8b45('0x39')](_0x2b24a1,_0x8b45('0x111'));}}}}else if(_0x2b24a1[_0x8b45('0x112')]){_0x126c68=_0x2b24a1['trunk_name'];}else{return this[_0x8b45('0x11')]['error'](_0x2b24a1,_0x8b45('0x110'));}var _0x21b975=this[_0x8b45('0x11')][_0x8b45('0xae')]('DIAL',[util[_0x8b45('0x2e')](_0x8b45('0x113'),_0x126c68,_0x2b24a1['phone']),_0x2b24a1['timeout'],_0x2b24a1['opts'],_0x2b24a1[_0x8b45('0x67')]]);if(_0x21b975[_0x8b45('0xa8')]===-0x1){return _0x21b975;}return this['channel'][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0x114'),_0x8b45('0xec')));};AGIVertices[_0x8b45('0x17')][_0x8b45('0x115')]=function(_0x401d63){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x116'),_0x401d63[_0x8b45('0x40')]));return this['channel'][_0x8b45('0xaf')](_0x8b45('0x115'));};AGIVertices['prototype']['getdigits']=function(_0x50aded){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x117'),_0x50aded[_0x8b45('0x40')]));if(_0x50aded[_0x8b45('0x118')]===0x0){return this[_0x8b45('0xaa')](_0x50aded);}_0x50aded[_0x8b45('0x118')]-=0x1;if(!this[_0x8b45('0x87')](_0x50aded[_0x8b45('0x119')])){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x50aded,_0x8b45('0x11a'));}var _0x34fece=this['getSound'][_0x8b45('0x74')](this,_0x50aded[_0x8b45('0x119')]);if(!_0x34fece){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x50aded,_0x8b45('0x11b'));}if(!this[_0x8b45('0x87')](_0x50aded[_0x8b45('0xdf')])){return this['channel'][_0x8b45('0x39')](_0x8b45('0xde'));}var _0x19c12f=this[_0x8b45('0x11')]['getData'](_0x34fece,_0x50aded['response'],_0x50aded[_0x8b45('0x11c')]);var _0xe50548=_0x19c12f[_0x8b45('0xa8')]?_0x19c12f[_0x8b45('0xa8')][_0x8b45('0xa6')]():'';logger[_0x8b45('0x33')]('test',JSON[_0x8b45('0x77')](_0x19c12f));if(_0x19c12f[_0x8b45('0xa8')]===-0x1){this[_0x8b45('0x3e')][_0x8b45('0x74')](this,_0x50aded,_0xe50548);return _0x19c12f;}else if(_0x19c12f[_0x8b45('0xa5')]===_0x8b45('0x69')){_0x19c12f[_0x8b45('0xa8')]=_0xe50548[_0x8b45('0xa3')]>=parseInt(_0x50aded[_0x8b45('0x11d')])?'x':'i';}else{_0x19c12f[_0x8b45('0xa8')]=_0xe50548[_0x8b45('0xa3')]>=parseInt(_0x50aded[_0x8b45('0x11d')])&&_0xe50548[_0x8b45('0xa3')]<=parseInt(_0x50aded[_0x8b45('0x11c')])?'x':'i';}var _0x5bab0c=this[_0x8b45('0x14')]['sync'](this,_0x50aded[_0x8b45('0xdf')]);if(!_0x5bab0c){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x50aded,'no\x20variable\x20found');}this[_0x8b45('0x11')][_0x8b45('0xa1')](_0x5bab0c,_0xe50548);if(this[_0x8b45('0x87')](_0x50aded[_0x8b45('0x11e')])){var _0x39b479=parseInt(_0x50aded['hiddendigitsnum'],0xa);var _0xc84229=rs[_0x8b45('0x11f')]({'charset':'*','length':_0x39b479});var _0x46281d=_0xe50548[_0x8b45('0xa3')];if(_0x46281d>0x0){if(_0x46281d>_0x39b479){this[_0x8b45('0x3e')][_0x8b45('0x74')](this,_0x50aded,_0x50aded[_0x8b45('0x120')]===_0x8b45('0x121')?_0xc84229+_0xe50548[_0x8b45('0x122')](_0x39b479):_0xe50548[_0x8b45('0x122')](0x0,_0x46281d-_0x39b479)+_0xc84229);}else{this[_0x8b45('0x3e')][_0x8b45('0x74')](this,_0x50aded,rs[_0x8b45('0x11f')]({'charset':'*','length':_0x46281d}));}}else{this['createSquareDetailsReport']['sync'](this,_0x50aded,'');}}else{this['createSquareDetailsReport'][_0x8b45('0x74')](this,_0x50aded,_0xe50548);}return _0x19c12f;};AGIVertices['prototype'][_0x8b45('0x123')]=function(_0x50994c){logger['info'](util[_0x8b45('0x2e')](_0x8b45('0x124'),_0x50994c[_0x8b45('0x40')]));return this['getdigits'](_0x50994c);};AGIVertices['prototype'][_0x8b45('0x125')]=function(_0x9b35e){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')]('Enter\x20in\x20GOAL\x20(%s)\x20block',_0x9b35e[_0x8b45('0x40')]));this['createSquareDetailsReport'][_0x8b45('0x74')](this,_0x9b35e,_0x9b35e['goalname']);return this[_0x8b45('0x11')][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0x126'),_0x9b35e[_0x8b45('0x127')]));};AGIVertices[_0x8b45('0x17')][_0x8b45('0x128')]=function(_0x391094){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x129'),_0x391094[_0x8b45('0x40')]));if(!this['isConfigured'](_0x391094[_0x8b45('0x8a')])||!this[_0x8b45('0x87')](_0x391094['aws_secret_access_key'])){return this[_0x8b45('0x11')][_0x8b45('0xaf')]('no\x20valid\x20credentials\x20configured');}if(!this[_0x8b45('0x87')](_0x391094['text'])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0xad'));}this[_0x8b45('0x11')][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0x12a'),_0x391094[_0x8b45('0x60')]));var _0x21643e=this[_0x8b45('0x89')]['sync'](this,_0x391094);if(_0x21643e){this[_0x8b45('0x11')]['noop'](util[_0x8b45('0x2e')](_0x8b45('0x12b'),_0x21643e));var _0x506155=this[_0x8b45('0x11')][_0x8b45('0x109')](_0x21643e);try{fs['unlink'](_0x21643e+'.wav');}catch(_0x2b79a0){logger[_0x8b45('0x39')](_0x2b79a0);}return _0x506155;}return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x391094,_0x8b45('0x12c'));};AGIVertices[_0x8b45('0x17')][_0x8b45('0x12d')]=function(_0x19871e){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')]('Enter\x20in\x20Amazon\x20Lex\x20(%s)\x20block',_0x19871e['label']));if(!this[_0x8b45('0x87')](_0x19871e[_0x8b45('0x8a')])||!this[_0x8b45('0x87')](_0x19871e[_0x8b45('0x12e')])){return this['channel'][_0x8b45('0xaf')](_0x8b45('0x12f'));}if(!this['isConfigured'](_0x19871e[_0x8b45('0x91')])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0x130'));}if(!this[_0x8b45('0x87')](_0x19871e[_0x8b45('0x60')])){return this['channel'][_0x8b45('0xaf')](_0x8b45('0xad'));}this[_0x8b45('0x11')][_0x8b45('0xef')]=!![];this[_0x8b45('0x3e')](_0x19871e);this[_0x8b45('0x4a')](_0x19871e['text'],'in','','');this[_0x8b45('0x11')][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0x131'),_0x19871e[_0x8b45('0x60')]));var _0x19abec=this[_0x8b45('0x8f')][_0x8b45('0x74')](this,_0x19871e);if(_0x19abec){for(var _0x2dfc73 in _0x19abec){if(_0x19abec['hasOwnProperty'](_0x2dfc73)&&_[_0x8b45('0x98')](_0x19abec[_0x2dfc73])){this[_0x8b45('0x11')][_0x8b45('0xa1')](util[_0x8b45('0x2e')](_0x8b45('0x132'),_0x2dfc73[_0x8b45('0x6e')]()),_0x19abec[_0x2dfc73]);}}if(_[_0x8b45('0x4c')](_0x19abec[_0x8b45('0x7a')])){return this['channel']['noop']('Amazon\x20Lex\x20ready\x20for\x20fulfillment');}else{this[_0x8b45('0x4a')](_0x19abec[_0x8b45('0x7a')],_0x8b45('0xf3'),'amazonlex','');return this[_0x8b45('0x11')][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0x133'),_0x19abec['message']));}}return this[_0x8b45('0x11')]['error'](_0x19871e,_0x8b45('0x134'));};AGIVertices['prototype'][_0x8b45('0x135')]=function(_0x21e648){logger['info'](util[_0x8b45('0x2e')](_0x8b45('0x136'),_0x21e648['label'],_0x21e648[_0x8b45('0x69')]));if(!this[_0x8b45('0x87')](_0x21e648[_0x8b45('0x7d')])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0xee'));}var _0x5577b3='wav';var _0x59b2e4=util[_0x8b45('0x2e')]('%s/recordings/%s',FILES_PATH,rs[_0x8b45('0x11f')](0x4));var _0x31e8de=util[_0x8b45('0x2e')]('%s.%s',_0x59b2e4,_0x5577b3);var _0x49914d=!![];if(_0x21e648[_0x8b45('0x137')]===_0x8b45('0x138')){_0x49914d=![];}var _0x3cf630=this[_0x8b45('0x11')][_0x8b45('0x139')](_0x59b2e4,_0x5577b3,_0x21e648[_0x8b45('0x13a')],_0x21e648['timeout'],undefined,_0x49914d);if(_0x3cf630[_0x8b45('0xa8')]!==-0x1){this[_0x8b45('0x11')][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0x13b'),_0x31e8de));var _0x54a8f1=this[_0x8b45('0x92')]['sync'](this,_0x21e648,_0x31e8de);if(_0x54a8f1){for(var _0x4c2bb8 in _0x54a8f1){if(_0x54a8f1[_0x8b45('0x9b')](_0x4c2bb8)){this[_0x8b45('0x11')]['setVariable'](util[_0x8b45('0x2e')](_0x8b45('0x13c'),_0x4c2bb8[_0x8b45('0x6e')]()),_0x54a8f1[_0x4c2bb8]);}}return this[_0x8b45('0x11')][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0x13d'),JSON[_0x8b45('0x77')](_0x54a8f1)));}}return _0x3cf630;};AGIVertices['prototype'][_0x8b45('0x13e')]=function(_0x529eaf){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x13f'),_0x529eaf[_0x8b45('0x40')]));if(!this['isConfigured'](_0x529eaf[_0x8b45('0x95')])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0x140'));}if(!this[_0x8b45('0x87')](_0x529eaf[_0x8b45('0x141')])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0x142'));}var _0x691804=_0x8b45('0x143');var _0x25564d=util[_0x8b45('0x2e')](_0x8b45('0x144'),FILES_PATH,rs[_0x8b45('0x11f')](0x4));var _0x114666=util[_0x8b45('0x2e')](_0x8b45('0xa0'),_0x25564d,_0x691804);var _0xe149e5=!![];if(_0x529eaf[_0x8b45('0x137')]==='NOBEEP'){_0xe149e5=![];}var _0x4724b6=this[_0x8b45('0x11')][_0x8b45('0x139')](_0x25564d,_0x691804,_0x529eaf['intKey'],_0x529eaf['timeout'],undefined,_0xe149e5);if(_0x4724b6[_0x8b45('0xa8')]!==-0x1){this[_0x8b45('0x11')][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0x145'),_0x114666));var _0x56100c=this[_0x8b45('0x94')][_0x8b45('0x74')](this,_0x529eaf,_0x114666);if(_0x56100c){for(var _0xfe49f2 in _0x56100c){if(_0x56100c['hasOwnProperty'](_0xfe49f2)){this[_0x8b45('0x11')][_0x8b45('0xa1')](util[_0x8b45('0x2e')]('TILDE_ASR_%s',_0xfe49f2[_0x8b45('0x6e')]()),_0x56100c[_0xfe49f2]);}}return this[_0x8b45('0x11')]['noop'](util[_0x8b45('0x2e')](_0x8b45('0x146'),JSON[_0x8b45('0x77')](_0x56100c)));}}return _0x4724b6;};AGIVertices[_0x8b45('0x17')][_0x8b45('0x147')]=function(_0x16335e){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')]('Enter\x20in\x20GOTO\x20(%s)\x20block',_0x16335e[_0x8b45('0x40')]));return this['channel'][_0x8b45('0x148')](_0x16335e['context'],_0x16335e['extension'],_0x16335e[_0x8b45('0x149')]);};AGIVertices[_0x8b45('0x17')][_0x8b45('0x14a')]=function(_0x4a1957){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')]('Enter\x20in\x20GOTOIF\x20(%s)\x20block',_0x4a1957['label']));if(!this[_0x8b45('0x87')](_0x4a1957[_0x8b45('0x14b')])){return this[_0x8b45('0x11')]['error'](_0x4a1957,'no\x20condition\x20configured');}try{var _0x1e4b28=eval(_0x4a1957['condition'])?_0x8b45('0x14c'):_0x8b45('0x14d');this[_0x8b45('0x11')]['noop'](util[_0x8b45('0x2e')](_0x8b45('0x14e'),_0x4a1957[_0x8b45('0x14b')],_0x1e4b28));return{'code':0xc8,'result':_0x1e4b28};}catch(_0x3eaa44){return{'code':0xc8,'result':'false'};}};AGIVertices[_0x8b45('0x17')][_0x8b45('0x14f')]=function(_0x54fe01){logger['info'](util['format'](_0x8b45('0x150'),_0x54fe01[_0x8b45('0x40')]));if(!this[_0x8b45('0x87')](_0x54fe01['interval_id'])){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x54fe01,'no\x20interval\x20configured');}var _0x18f327=this['getIntervals'][_0x8b45('0x74')](this,_0x54fe01[_0x8b45('0x151')]);if(!_0x18f327){return this[_0x8b45('0x11')]['error'](_0x54fe01,_0x8b45('0x152'));}for(var _0x11f9f1=0x0;_0x11f9f1<_0x18f327[_0x8b45('0xa3')];_0x11f9f1+=0x1){var _0x57d4b2=this[_0x8b45('0x11')][_0x8b45('0x14')](util[_0x8b45('0x2e')](_0x8b45('0x153'),_0x18f327[_0x11f9f1]));if(_0x57d4b2['result']===-0x1){return _0x57d4b2;}logger['info'](util[_0x8b45('0x2e')](_0x8b45('0x154'),_0x18f327[_0x11f9f1],_0x57d4b2['extra']));if(_0x57d4b2[_0x8b45('0xa5')]===_0x8b45('0x14c')){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x154'),_0x18f327[_0x11f9f1],'true'));this[_0x8b45('0x11')]['noop'](util[_0x8b45('0x2e')](_0x8b45('0x154'),_0x18f327[_0x11f9f1],_0x8b45('0x14c')));return{'code':0xc8,'result':_0x8b45('0x14c')};}else{logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x154'),_0x18f327[_0x11f9f1],'false'));this[_0x8b45('0x11')][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0x154'),_0x18f327[_0x11f9f1],'false'));}}return{'code':0xc8,'result':_0x8b45('0x14d')};};AGIVertices['prototype']['hangup']=function(_0x55196f){logger['info'](util[_0x8b45('0x2e')](_0x8b45('0x155'),_0x55196f['label']));return this[_0x8b45('0x11')][_0x8b45('0x156')]();};AGIVertices[_0x8b45('0x17')]['ispeechasr']=function(_0x536a24){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x157'),_0x536a24['label']));if(!this[_0x8b45('0x87')](_0x536a24['key'])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0xee'));}var _0x12f43b=_0x8b45('0x143');var _0x3c6b26=util[_0x8b45('0x2e')](_0x8b45('0x144'),FILES_PATH,rs[_0x8b45('0x11f')](0x4));var _0x4ec69a=util[_0x8b45('0x2e')](_0x8b45('0xa0'),_0x3c6b26,_0x12f43b);var _0x14addc=!![];if(_0x536a24['beep']===_0x8b45('0x138')){_0x14addc=![];}var _0x4077c5=this['channel'][_0x8b45('0x139')](_0x3c6b26,_0x12f43b,_0x536a24[_0x8b45('0x13a')],_0x536a24[_0x8b45('0x69')],undefined,_0x14addc);if(_0x4077c5[_0x8b45('0xa8')]!==-0x1){this[_0x8b45('0x11')]['noop'](util['format']('ispeech\x20%s\x20file\x20created',_0x4ec69a));var _0x13958c=this[_0x8b45('0x86')][_0x8b45('0x74')](this,_0x536a24,_0x4ec69a);if(_0x13958c){for(var _0x13d1c3 in _0x13958c){if(_0x13958c[_0x8b45('0x9b')](_0x13d1c3)){this['channel'][_0x8b45('0xa1')](util['format']('ISPEECH_ASR_%s',_0x13d1c3['toUpperCase']()),_0x13958c[_0x13d1c3]);}}return this[_0x8b45('0x11')][_0x8b45('0xaf')](util['format']('IspeechASR\x20Result\x20%s',JSON[_0x8b45('0x77')](_0x13958c)));}}return _0x4077c5;};AGIVertices[_0x8b45('0x17')]['ispeechtts']=function(_0x2ed6d9){logger['info'](util[_0x8b45('0x2e')](_0x8b45('0x158'),_0x2ed6d9[_0x8b45('0x40')]));if(!this[_0x8b45('0x87')](_0x2ed6d9['key'])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0xee'));}if(!this[_0x8b45('0x87')](_0x2ed6d9[_0x8b45('0x60')])){return this[_0x8b45('0x11')][_0x8b45('0xaf')]('no\x20text\x20configured');}this['channel']['noop'](util[_0x8b45('0x2e')](_0x8b45('0x159'),_0x2ed6d9[_0x8b45('0x60')]));var _0x40a648=this['ispeechTTS'][_0x8b45('0x74')](this,_0x2ed6d9);if(_0x40a648){this[_0x8b45('0x11')]['noop'](util[_0x8b45('0x2e')](_0x8b45('0x15a'),_0x40a648));var _0x1e93b3=this[_0x8b45('0x11')][_0x8b45('0x109')](_0x40a648,_0x2ed6d9[_0x8b45('0x13a')]);try{fs['unlink'](_0x40a648+_0x8b45('0x10b'));}catch(_0x15d260){logger[_0x8b45('0x39')](_0x15d260);}return _0x1e93b3;}return this['channel']['error'](_0x2ed6d9,_0x8b45('0x15b'));};AGIVertices[_0x8b45('0x17')][_0x8b45('0x15c')]=function(_0x309687){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x15d'),_0x309687[_0x8b45('0x40')]));if(!this[_0x8b45('0x87')](_0x309687[_0x8b45('0x15e')])){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x309687,_0x8b45('0x15f'));}logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x160'),this[_0x8b45('0x11')][_0x8b45('0x42')],_0x309687['findBy']));var _0x18f6da=this['agentLogin']['sync'](this,_0x309687[_0x8b45('0x15e')]);if(_0x18f6da){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x161'),this[_0x8b45('0x11')][_0x8b45('0x42')],_0x309687[_0x8b45('0x15e')]));this[_0x8b45('0x11')][_0x8b45('0xaf')](util['format'](_0x8b45('0x161'),this[_0x8b45('0x11')]['callerid'],_0x309687[_0x8b45('0x15e')]));return{'code':0xc8,'result':'success'};}else{logger['info'](util[_0x8b45('0x2e')](_0x8b45('0x162'),this[_0x8b45('0x11')][_0x8b45('0x42')],_0x309687[_0x8b45('0x15e')]));this[_0x8b45('0x11')][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0x162'),this[_0x8b45('0x11')][_0x8b45('0x42')],_0x309687[_0x8b45('0x15e')]));return{'code':0xc8,'result':_0x8b45('0x163')};}};AGIVertices[_0x8b45('0x17')][_0x8b45('0x164')]=function(_0x2152ff){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x165'),_0x2152ff[_0x8b45('0x40')]));if(!this[_0x8b45('0x87')](_0x2152ff[_0x8b45('0x15e')])){return this['channel'][_0x8b45('0x39')](_0x2152ff,_0x8b45('0x15f'));}logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x160'),this[_0x8b45('0x11')][_0x8b45('0x42')],_0x2152ff['findBy']));var _0x446af5=this[_0x8b45('0x59')][_0x8b45('0x74')](this,_0x2152ff[_0x8b45('0x15e')]);if(_0x446af5){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0x8b45('0x42')],_0x2152ff[_0x8b45('0x15e')]));this[_0x8b45('0x11')][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0x161'),this[_0x8b45('0x11')][_0x8b45('0x42')],_0x2152ff['findBy']));return{'code':0xc8,'result':_0x8b45('0x166')};}else{logger[_0x8b45('0x33')](util['format'](_0x8b45('0x162'),this[_0x8b45('0x11')][_0x8b45('0x42')],_0x2152ff[_0x8b45('0x15e')]));this[_0x8b45('0x11')]['noop'](util[_0x8b45('0x2e')](_0x8b45('0x162'),this[_0x8b45('0x11')]['callerid'],_0x2152ff[_0x8b45('0x15e')]));return{'code':0xc8,'result':_0x8b45('0x163')};}};AGIVertices[_0x8b45('0x17')][_0x8b45('0x167')]=function(_0x2aec11){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')]('Enter\x20in\x20MATH\x20(%s)\x20block',_0x2aec11['label']));if(!this[_0x8b45('0x87')](_0x2aec11[_0x8b45('0x168')])){return this[_0x8b45('0x11')]['error'](_0x2aec11,_0x8b45('0x169'));}this['channel']['noop'](util[_0x8b45('0x2e')](_0x8b45('0x16a'),_0x2aec11[_0x8b45('0x168')]));var _0x3c67bd=eval(_0x2aec11[_0x8b45('0x168')]);if(!this['isConfigured'](_0x2aec11[_0x8b45('0xdf')])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0xde'));}var _0x36e94c=this['getVariable']['sync'](this,_0x2aec11[_0x8b45('0xdf')]);if(!_0x36e94c){return this[_0x8b45('0x11')]['error'](_0x2aec11,_0x8b45('0xe0'));}if(_['isArray'](_0x3c67bd)){var _0x1ae55a=this;_0x3c67bd[_0x8b45('0xe2')](function(_0x3d4098,_0x1e85a3){_0x1ae55a['channel'][_0x8b45('0xa1')](util[_0x8b45('0x2e')](_0x8b45('0x16b'),_0x36e94c,_0x1e85a3),_0x3d4098);});return this['channel'][_0x8b45('0xaf')](util[_0x8b45('0x2e')]('variable\x20%s[key]\x20set',_0x36e94c));}else{return this['channel'][_0x8b45('0xa1')](_0x36e94c,_0x3c67bd);}};AGIVertices[_0x8b45('0x17')]['menu']=function(_0x2b7c6d){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x16c'),_0x2b7c6d[_0x8b45('0x40')]));if(_0x2b7c6d['retry']===0x0){return this['maxRetry'](_0x2b7c6d);}_0x2b7c6d[_0x8b45('0x118')]-=0x1;if(!this['isConfigured'](_0x2b7c6d[_0x8b45('0x119')])){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x2b7c6d,_0x8b45('0x11a'));}var _0x274eae=this['getSound'][_0x8b45('0x74')](this,_0x2b7c6d[_0x8b45('0x119')]);if(!_0x274eae){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x2b7c6d,_0x8b45('0x11b'));}var _0x19b592=this['channel'][_0x8b45('0x16d')](_0x274eae,_0x2b7c6d[_0x8b45('0x16e')],_0x2b7c6d['digit']);var _0x860fcc=_0x19b592['result'];if(_0x19b592['result']===-0x1){this[_0x8b45('0x3e')][_0x8b45('0x74')](this,_0x2b7c6d,'-1');return _0x19b592;}else if(_0x19b592[_0x8b45('0xa5')]===_0x8b45('0x69')){_0x19b592[_0x8b45('0xa8')]=_0x19b592[_0x8b45('0xa8')]['length']>0x0?_0x19b592[_0x8b45('0xa8')]:'t';}else if(_[_0x8b45('0x9f')](_0x19b592[_0x8b45('0xa8')])){_0x19b592[_0x8b45('0xa8')]='#';_0x860fcc='#';}if(!this['isConfigured'](_0x2b7c6d[_0x8b45('0xdf')])){this['channel']['noop'](_0x8b45('0xde'));}else{var _0x4798a0=this[_0x8b45('0x14')][_0x8b45('0x74')](this,_0x2b7c6d[_0x8b45('0xdf')]);if(!_0x4798a0){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x2b7c6d,'no\x20variable\x20found');}this[_0x8b45('0x11')][_0x8b45('0xa1')](_0x4798a0,_0x860fcc);}this[_0x8b45('0x3e')]['sync'](this,_0x2b7c6d,_0x860fcc);return _0x19b592;};AGIVertices[_0x8b45('0x17')][_0x8b45('0xaf')]=function(_0x369f1a){logger['info'](util['format'](_0x8b45('0x16f'),_0x369f1a[_0x8b45('0x40')]));return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x369f1a[_0x8b45('0x170')]||_0x369f1a[_0x8b45('0x40')]);};AGIVertices['prototype']['pause']=function(_0x472a38){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x171'),_0x472a38[_0x8b45('0x40')]));if(!this['isConfigured'](_0x472a38['findBy'])){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x472a38,_0x8b45('0x15f'));}logger['info'](util[_0x8b45('0x2e')](_0x8b45('0x160'),this[_0x8b45('0x11')][_0x8b45('0x42')],_0x472a38[_0x8b45('0x15e')]));var _0x992477=this[_0x8b45('0x54')][_0x8b45('0x74')](this,_0x472a38[_0x8b45('0x172')]);var _0x540d60=this['agentPause'][_0x8b45('0x74')](this,_0x472a38[_0x8b45('0x15e')],_0x992477);if(_0x540d60){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')]('AGENT\x20%s\x20FOUND\x20BY',this['channel'][_0x8b45('0x42')],_0x472a38['findBy']));this[_0x8b45('0x11')][_0x8b45('0xaf')](util['format'](_0x8b45('0x161'),this[_0x8b45('0x11')][_0x8b45('0x42')],_0x472a38[_0x8b45('0x15e')]));return{'code':0xc8,'result':'success'};}else{logger[_0x8b45('0x33')](util['format'](_0x8b45('0x162'),this[_0x8b45('0x11')][_0x8b45('0x42')],_0x472a38[_0x8b45('0x15e')]));this[_0x8b45('0x11')][_0x8b45('0xaf')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x8b45('0x11')][_0x8b45('0x42')],_0x472a38['findBy']));return{'code':0xc8,'result':'failure'};}};AGIVertices['prototype'][_0x8b45('0x173')]=function(_0x35a226){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x174'),_0x35a226['label']));if(!this[_0x8b45('0x87')](_0x35a226[_0x8b45('0x119')])){return this['channel']['error'](_0x35a226,'no\x20file\x20audio\x20selected');}var _0x375f71=this[_0x8b45('0x23')]['sync'](this,_0x35a226[_0x8b45('0x119')]);if(!_0x375f71){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x35a226,_0x8b45('0x11b'));}var _0x470cf1=this['channel'][_0x8b45('0xae')]('PLAYBACK',[_0x375f71,_0x35a226[_0x8b45('0xeb')]]);if(_0x470cf1[_0x8b45('0xa8')]===-0x1){return _0x470cf1;}return this[_0x8b45('0x11')][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0x175'),_0x8b45('0x176'),_0x375f71));};AGIVertices[_0x8b45('0x17')][_0x8b45('0x177')]=function(_0x244412){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x178'),_0x244412[_0x8b45('0x40')]));if(!this[_0x8b45('0x87')](_0x244412[_0x8b45('0x179')])){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x244412,'no\x20queue\x20selected');}var _0x21b9cf='';var _0x49a88c=parseInt(_0x244412[_0x8b45('0x179')],0xa);if(isNaN(_0x49a88c)){_0x21b9cf=_0x244412['queue_id'];}else{_0x21b9cf=this[_0x8b45('0x18')][_0x8b45('0x74')](this,_0x244412['queue_id']);if(!_0x21b9cf){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x244412,'no\x20queue\x20found');}}var _0x311d3d='';if(this[_0x8b45('0x87')](_0x244412[_0x8b45('0x119')])){var _0x3d333e=this[_0x8b45('0x23')][_0x8b45('0x74')](this,_0x244412[_0x8b45('0x119')]);if(_0x3d333e){_0x311d3d=_0x3d333e;}}this[_0x8b45('0x3e')][_0x8b45('0x74')](this,_0x244412,_0x21b9cf);if(_0x244412[_0x8b45('0xeb')][_0x8b45('0x17a')]('x')<0x0){_0x244412[_0x8b45('0xeb')]+='x';}if(_0x244412[_0x8b45('0xeb')][_0x8b45('0x17a')]('X')<0x0){_0x244412[_0x8b45('0xeb')]+='X';}this[_0x8b45('0x11')][_0x8b45('0xa1')](_0x8b45('0x17b'),_0x21b9cf?_0x21b9cf[_0x8b45('0x17c')]():'');var _0x98a2e2=this[_0x8b45('0x11')][_0x8b45('0xae')](_0x8b45('0x17d'),[_0x21b9cf,_0x244412[_0x8b45('0xeb')],_0x244412[_0x8b45('0x67')],_0x311d3d,_0x244412[_0x8b45('0x69')],_0x244412[_0x8b45('0x8')],_0x244412['macro'],_0x244412[_0x8b45('0x17e')],'',_0x244412[_0x8b45('0x17f')]]);if(_0x98a2e2['result']===-0x1){return _0x98a2e2;}return this[_0x8b45('0x11')][_0x8b45('0xaf')](util['format'](_0x8b45('0x175'),'QUEUE',_0x21b9cf));};AGIVertices[_0x8b45('0x17')][_0x8b45('0x180')]=function(_0x4d4958){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x181'),_0x4d4958[_0x8b45('0x40')]));var _0x31a59c=_0x4d4958[_0x8b45('0x182')]||'wav';var _0x477c53=util['format'](_0x8b45('0x183'),this[_0x8b45('0x11')][_0x8b45('0x3f')],rs[_0x8b45('0x11f')](0x5));var _0x4fa1ee=util[_0x8b45('0x2e')](_0x8b45('0x184'),FILES_PATH,_0x477c53,_0x31a59c);var _0x3469c0=util[_0x8b45('0x2e')]('%s/recordings/%s',FILES_PATH,_0x477c53);this[_0x8b45('0x43')][_0x8b45('0x74')](this,_0x4d4958,_0x477c53,_0x4fa1ee);this['channel'][_0x8b45('0xa1')]('RECORDING_SAVENAME',_0x477c53);logger[_0x8b45('0x33')](_0x8b45('0x185'),_0x3469c0,_0x31a59c,_0x4d4958[_0x8b45('0x186')],_0x4d4958['timeout']);return this[_0x8b45('0x11')][_0x8b45('0x139')](_0x3469c0,_0x31a59c,_0x4d4958[_0x8b45('0x186')],_0x4d4958['timeout'],undefined,!![]);};AGIVertices['prototype'][_0x8b45('0x187')]=function(_0x4d5c87){logger['info'](util[_0x8b45('0x2e')]('Enter\x20in\x20RESTAPI\x20(%s)\x20block',_0x4d5c87[_0x8b45('0x40')]));if(!this['isConfigured'](_0x4d5c87[_0x8b45('0x67')])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0x188'));}var _0x58544e=this[_0x8b45('0x189')][_0x8b45('0x74')](this,_0x4d5c87);logger[_0x8b45('0x33')](util['format'](_0x8b45('0x18a'),util[_0x8b45('0x18b')](_0x58544e,{'showHidden':![],'depth':null})));if(!this[_0x8b45('0x87')](_0x4d5c87['variable_id'])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0x18c'));}var _0x2daa8f=this[_0x8b45('0x14')][_0x8b45('0x74')](this,_0x4d5c87[_0x8b45('0xdf')]);if(!_0x2daa8f){return this[_0x8b45('0x11')]['error'](_0x4d5c87,_0x8b45('0xe0'));}this[_0x8b45('0x11')][_0x8b45('0xa1')](util[_0x8b45('0x2e')](_0x8b45('0x18d'),_0x2daa8f),_0x58544e[_0x8b45('0x79')]?_0x58544e[_0x8b45('0x79')]:_0x8b45('0x18e'));this['channel']['setVariable'](util[_0x8b45('0x2e')]('%s_STATUS_MESSAGE',_0x2daa8f),_0x58544e[_0x8b45('0x78')]?_0x58544e['statusMessage']:'OK');if(_0x58544e[_0x8b45('0x6f')]){try{this[_0x8b45('0x9e')](_0x58544e[_0x8b45('0x6f')],_0x2daa8f);}catch(_0x1bad35){logger[_0x8b45('0x39')](util[_0x8b45('0x2e')](_0x8b45('0x18f'),_0x2daa8f));}}return this['channel'][_0x8b45('0xaf')](util[_0x8b45('0x2e')]('variable\x20%s\x20set',_0x2daa8f));};AGIVertices[_0x8b45('0x17')][_0x8b45('0x190')]=function(_0x561f23){logger[_0x8b45('0x33')](util['format']('Enter\x20in\x20SAYDIGITS\x20(%s)\x20block',_0x561f23[_0x8b45('0x40')]));return this['channel']['sayDigits'](_0x561f23[_0x8b45('0x191')][_0x8b45('0xdd')](/\s+/g,''),_0x561f23[_0x8b45('0x186')]);};AGIVertices[_0x8b45('0x17')][_0x8b45('0x192')]=function(_0x5e0110){logger[_0x8b45('0x33')](util['format'](_0x8b45('0x193'),_0x5e0110[_0x8b45('0x40')]));return this[_0x8b45('0x11')][_0x8b45('0x194')](_0x5e0110['number'][_0x8b45('0xdd')](/\s+/g,''),_0x5e0110['escape_digits']);};AGIVertices['prototype']['sayphonetic']=function(_0x485edf){logger['info'](util['format'](_0x8b45('0x195'),_0x485edf[_0x8b45('0x40')]));return this[_0x8b45('0x11')][_0x8b45('0x196')](_0x485edf[_0x8b45('0x60')],_0x485edf[_0x8b45('0x186')]);};AGIVertices['prototype'][_0x8b45('0x197')]=function(_0x457204){logger[_0x8b45('0x33')](util['format'](_0x8b45('0x198'),_0x457204[_0x8b45('0x40')]));if(!this[_0x8b45('0x87')](_0x457204['account_id'])){return this[_0x8b45('0x11')]['noop'](_0x8b45('0x199'));}var _0x26af11=this['getMailAccount'][_0x8b45('0x74')](this,_0x457204[_0x8b45('0x19a')]);if(!_0x26af11||!_0x26af11[_0x8b45('0x19b')]){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x457204,'no\x20mail\x20account\x20found');}var _0x329c39={'from':util['format'](_0x8b45('0x19c'),_0x26af11[_0x8b45('0x1a')],_0x26af11[_0x8b45('0x19d')]||_0x26af11[_0x8b45('0x19b')][_0x8b45('0x19e')]),'to':_0x457204['to']||'','cc':_0x457204['cc']||'','bcc':_0x457204[_0x8b45('0x19f')]||'','subject':_0x457204[_0x8b45('0x1a0')],'html':_0x457204['text'],'text':_0x457204[_0x8b45('0x60')]};if(this[_0x8b45('0x87')](_0x457204['template_id'])){}logger[_0x8b45('0xe6')](_0x8b45('0x1a1'),JSON[_0x8b45('0x77')](_0x329c39));this[_0x8b45('0x3e')][_0x8b45('0x74')](this,_0x457204,_0x457204[_0x8b45('0x19a')]);this['channel']['noop'](util['format'](_0x8b45('0x1a2'),_0x26af11[_0x8b45('0x1a')]));this[_0x8b45('0x28')]['sync'](this,_0x26af11[_0x8b45('0x1a3')],_0x329c39);return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0x1a4'));};AGIVertices[_0x8b45('0x17')][_0x8b45('0x1a5')]=function(_0x5f2ea4){logger[_0x8b45('0x33')](util['format'](_0x8b45('0x1a6'),_0x5f2ea4[_0x8b45('0x40')]));return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0x1a7'));};AGIVertices[_0x8b45('0x17')][_0x8b45('0x1a8')]=function(_0xe98da3){logger['info'](util[_0x8b45('0x2e')](_0x8b45('0x1a9'),_0xe98da3[_0x8b45('0x40')]));if(!this['isConfigured'](_0xe98da3[_0x8b45('0x1aa')])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0x1ab'));}var _0x1f2f21=this['getSmsAccount'][_0x8b45('0x74')](this,_0xe98da3[_0x8b45('0x1aa')]);if(!_0x1f2f21){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0xe98da3,'no\x20sms\x20account\x20found');}var _0x33781d={'body':_0xe98da3[_0x8b45('0x1ac')],'phone':_0xe98da3['to']||'','SmsAccountId':_0x1f2f21['id']};logger[_0x8b45('0xe6')]('sendSMS\x20message',JSON[_0x8b45('0x77')](_0x33781d));this['createSquareDetailsReport'][_0x8b45('0x74')](this,_0xe98da3,_0xe98da3[_0x8b45('0x1aa')]);this['channel'][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0x1ad'),_0x1f2f21[_0x8b45('0x1a')]));this['createSmsMessage'][_0x8b45('0x74')](this,_0x33781d);return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0x1ae'));};AGIVertices[_0x8b45('0x17')][_0x8b45('0x1af')]=function(_0x5a076e){logger[_0x8b45('0x33')](util['format'](_0x8b45('0x1b0'),_0x5a076e[_0x8b45('0x40')]));if(!this[_0x8b45('0x87')](_0x5a076e[_0x8b45('0xdf')])){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x5a076e,_0x8b45('0x1b1'));}var _0x3fbff6=this[_0x8b45('0x14')][_0x8b45('0x74')](this,_0x5a076e[_0x8b45('0xdf')]);if(!_0x3fbff6){return this['channel']['error'](_0x5a076e,_0x8b45('0xe0'));}return this['channel'][_0x8b45('0xa1')](_0x3fbff6,_0x5a076e[_0x8b45('0x1b2')]);};AGIVertices[_0x8b45('0x17')][_0x8b45('0x1b3')]=function(_0x188e4b){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x1b4'),_0x188e4b[_0x8b45('0x40')]));this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0x1b5'));if(_0x188e4b['answer']===_0x8b45('0x1b6')){this['channel']['noop'](_0x8b45('0x1b7'));return this[_0x8b45('0x11')][_0x8b45('0xbc')]();}return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0x1b8'));};AGIVertices['prototype'][_0x8b45('0x1b9')]=function(_0x371b50){logger['info'](util[_0x8b45('0x2e')](_0x8b45('0x1ba'),_0x371b50[_0x8b45('0x40')]));if(!this[_0x8b45('0x87')](_0x371b50[_0x8b45('0x1bb')])){return this[_0x8b45('0x11')]['error'](_0x371b50,_0x8b45('0x1bc'));}var _0x3bba20=this[_0x8b45('0x1c')][_0x8b45('0x74')](this,_0x371b50[_0x8b45('0x1bb')]);if(!this[_0x8b45('0x87')](_0x3bba20)){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x371b50,util['format'](_0x8b45('0x1bd'),_0x371b50[_0x8b45('0x1bb')]));}if(_0x3bba20===this[_0x8b45('0x11')][_0x8b45('0x41')]){return this[_0x8b45('0x11')]['error'](_0x371b50,_0x8b45('0x1be'));}this[_0x8b45('0x3e')][_0x8b45('0x74')](this,_0x371b50,_0x3bba20);var _0x1c7a71=this[_0x8b45('0x11')][_0x8b45('0xae')](_0x8b45('0x1bf'),util[_0x8b45('0x2e')]('agi://%s/square,\x22%s\x22,\x22%s\x22',config[_0x8b45('0x8')][_0x8b45('0x1c0')]||_0x8b45('0x1c1'),_0x3bba20,this[_0x8b45('0x11')][_0x8b45('0x41')]));if(_0x1c7a71[_0x8b45('0xa8')]===-0x1){return _0x1c7a71;}return this[_0x8b45('0x11')][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0x175'),_0x8b45('0x1bf'),_0x3bba20));};AGIVertices[_0x8b45('0x17')][_0x8b45('0x1c2')]=function(_0x16cdad){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x1c3'),_0x16cdad[_0x8b45('0x40')]));var _0x89da5f=this[_0x8b45('0x5c')]['sync'](this,_0x16cdad[_0x8b45('0x1c4')]);this[_0x8b45('0x3e')]['sync'](this,_0x16cdad,_0x16cdad[_0x8b45('0x1c4')]);if(this[_0x8b45('0x87')](_0x16cdad[_0x8b45('0xdf')])){var _0x59288c=this[_0x8b45('0x14')][_0x8b45('0x74')](this,_0x16cdad[_0x8b45('0xdf')]);if(_0x59288c){this[_0x8b45('0x11')][_0x8b45('0xa1')](_0x59288c,_0x89da5f);return this[_0x8b45('0x11')][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0x1c5'),_0x16cdad[_0x8b45('0x1c4')],_0x59288c));}}return this['channel'][_0x8b45('0xaf')](util['format'](_0x8b45('0x1c6'),_0x16cdad[_0x8b45('0x1c4')]));};AGIVertices['prototype'][_0x8b45('0x1c7')]=function(_0x3f65d0){logger['info'](util[_0x8b45('0x2e')](_0x8b45('0x1c8'),_0x3f65d0[_0x8b45('0x40')]));_0x3f65d0[_0x8b45('0x60')]=_0x3f65d0[_0x8b45('0x60')]['replace'](/(\r\n|\n|\r)/gm,'\x20');if(!this[_0x8b45('0x87')](_0x3f65d0['apiKey'])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0x1c9'));}if(!this[_0x8b45('0x87')](_0x3f65d0[_0x8b45('0x60')])){return this[_0x8b45('0x11')][_0x8b45('0xaf')]('no\x20text\x20configured');}this[_0x8b45('0x11')][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0x1ca'),_0x3f65d0['text']));var _0x354b37=this[_0x8b45('0x5d')][_0x8b45('0x74')](this,_0x3f65d0);if(_0x354b37){this['channel'][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0x1cb'),_0x354b37));var _0x258bbf=this[_0x8b45('0x11')]['streamFile'](_0x354b37);try{fs[_0x8b45('0x10a')](_0x354b37+_0x8b45('0x10b'));}catch(_0xce8c0b){logger[_0x8b45('0x39')](_0xce8c0b);}return _0x258bbf;}return this['channel'][_0x8b45('0x39')](_0x3f65d0,_0x8b45('0x1cc'));};AGIVertices[_0x8b45('0x17')][_0x8b45('0x1cd')]=function(_0x155465){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x1ce'),_0x155465[_0x8b45('0x40')]));_0x155465[_0x8b45('0x60')]=_0x155465[_0x8b45('0x60')][_0x8b45('0xdd')](/(\r\n|\n|\r)/gm,'\x20');if(!this['isConfigured'](_0x155465[_0x8b45('0x60')])){return this[_0x8b45('0x11')][_0x8b45('0xaf')](_0x8b45('0xad'));}this['channel'][_0x8b45('0xaf')](util[_0x8b45('0x2e')](_0x8b45('0x1cf'),_0x155465[_0x8b45('0x60')]));var _0xd514e1=this[_0x8b45('0x65')]['sync'](this,_0x155465);if(_0xd514e1){this[_0x8b45('0x11')][_0x8b45('0xaf')](util['format'](_0x8b45('0x1d0'),_0xd514e1));var _0x27736a=this[_0x8b45('0x11')]['streamFile'](_0xd514e1);try{fs[_0x8b45('0x10a')](_0xd514e1+_0x8b45('0x10b'));}catch(_0x14d4dd){logger['error'](_0x14d4dd);}return _0x27736a;}return this['channel'][_0x8b45('0x39')](_0x155465,_0x8b45('0x1d1'));};AGIVertices['prototype'][_0x8b45('0x1d2')]=function(_0x57d91c){logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x1d3'),_0x57d91c[_0x8b45('0x40')]));if(!this[_0x8b45('0x87')](_0x57d91c[_0x8b45('0x15e')])){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x57d91c,_0x8b45('0x15f'));}logger['info'](util[_0x8b45('0x2e')](_0x8b45('0x160'),this['channel']['callerid'],_0x57d91c[_0x8b45('0x15e')]));var _0x160e77=this[_0x8b45('0x58')][_0x8b45('0x74')](this,_0x57d91c['findBy']);if(_0x160e77){logger[_0x8b45('0x33')](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x8b45('0x11')][_0x8b45('0x42')],_0x57d91c[_0x8b45('0x15e')]));this[_0x8b45('0x11')]['noop'](util['format']('AGENT\x20%s\x20FOUND\x20BY',this[_0x8b45('0x11')]['callerid'],_0x57d91c[_0x8b45('0x15e')]));return{'code':0xc8,'result':_0x8b45('0x166')};}else{logger[_0x8b45('0x33')](util[_0x8b45('0x2e')](_0x8b45('0x162'),this[_0x8b45('0x11')]['callerid'],_0x57d91c[_0x8b45('0x15e')]));this[_0x8b45('0x11')]['noop'](util[_0x8b45('0x2e')]('AGENT\x20%s\x20NOT\x20FOUND\x20BY',this[_0x8b45('0x11')][_0x8b45('0x42')],_0x57d91c[_0x8b45('0x15e')]));return{'code':0xc8,'result':'failure'};}};AGIVertices[_0x8b45('0x17')]['voicemail']=function(_0x54db58){logger[_0x8b45('0x33')](util['format'](_0x8b45('0x1d4'),_0x54db58[_0x8b45('0x40')]));var _0x4edbee=this[_0x8b45('0x11')][_0x8b45('0xae')](_0x8b45('0x1d5'),[_0x54db58['mailbox'],_0x54db58[_0x8b45('0x7b')]]);if(_0x4edbee[_0x8b45('0xa8')]===-0x1){return _0x4edbee;}return this['channel']['noop'](util[_0x8b45('0x2e')](_0x8b45('0x175'),_0x8b45('0x1d5'),_0x54db58[_0x8b45('0x1d6')]));};AGIVertices[_0x8b45('0x17')][_0x8b45('0x1d7')]=function(_0x2e948a){logger[_0x8b45('0x33')](util['format'](_0x8b45('0x1d8'),_0x2e948a[_0x8b45('0x40')]));if(!this[_0x8b45('0x87')](_0x2e948a[_0x8b45('0xdf')])){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x2e948a,_0x8b45('0x1b1'));}var _0x3fb583=this[_0x8b45('0x14')]['sync'](this,_0x2e948a[_0x8b45('0xdf')]);if(!_0x3fb583){return this[_0x8b45('0x11')][_0x8b45('0x39')](_0x2e948a,_0x8b45('0xe0'));}var _0x4baaf3=this[_0x8b45('0x11')]['getVariable'](_0x3fb583);return{'code':0xc8,'result':_0x4baaf3[_0x8b45('0xa5')]?_0x4baaf3[_0x8b45('0xa5')]:'-'};};String['prototype'][_0x8b45('0xa4')]=function(_0x28f3bc,_0x1e74cc){return this[_0x8b45('0x1d9')](_0x28f3bc)[_0x8b45('0x1da')](_0x1e74cc);};module['exports']=AGIVertices;
\ No newline at end of file
index f7af704..7e8c53e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb060=['voiceQueues','agents','timers','channels','agentconnect','syncAgentConnect','syncHangupRequest','bind','hangup','syncHangup','syncAgentRingNoAnswer','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','milliseconds','diff','seconds','startAcw','interface','queue','ACW','mandatoryDispositionPause','name','Action','QueuePause','then','getAgent','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timer','stopAcw','format','YYYY-MM-DD\x20HH:mm:ss','uniqueid','updateAcw','update','[%s][UPDATE][ACWTIME:%s]','catch','error','[%s][UPDATE][ERRORS:%s]','prototype','[%s][TIMER][STOP][AGENT:%s]','saveUnpause','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','message','acw','mandatoryDisposition','syncAgentConnectPreview','[ACW][syncAgentConnectPreview]\x20%s','linkedid','isUndefined','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[%s][HANGUPATTENDEDTRANSFER:LINKEDID]','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','[ACW][syncAttendedTransfer]\x20%s','[%s][BLINDTRANSFER:UNIQUEID]','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','savePause','Auto-Pause','[ACW][syncAgentRingNoAnswer]\x20%s','exports','lodash','../../../config/logger','../rpc/voiceAgentReport'];(function(_0x1336d8,_0x2b18f5){var _0x4ea882=function(_0x388e0e){while(--_0x388e0e){_0x1336d8['push'](_0x1336d8['shift']());}};_0x4ea882(++_0x2b18f5);}(_0xb060,0xf0));var _0x0b06=function(_0x4c7f2f,_0x45f484){_0x4c7f2f=_0x4c7f2f-0x0;var _0x44f8a6=_0xb060[_0x4c7f2f];return _0x44f8a6;};'use strict';var util=require('util');var _=require(_0x0b06('0x0'));var moment=require('moment');var ami=require('../ami');var logger=require(_0x0b06('0x1'))('acw');var RpcUser=require('../rpc/user');var RpcVoiceAgentReport=require(_0x0b06('0x2'));function Acw(_0x5b2e91){this[_0x0b06('0x3')]=_0x5b2e91['voiceQueues'];this[_0x0b06('0x4')]=_0x5b2e91[_0x0b06('0x4')];this[_0x0b06('0x5')]=_0x5b2e91['timers'];this[_0x0b06('0x6')]={};ami['on'](_0x0b06('0x7'),this[_0x0b06('0x8')]['bind'](this));ami['on']('hanguprequest',this[_0x0b06('0x9')][_0x0b06('0xa')](this));ami['on'](_0x0b06('0xb'),this[_0x0b06('0xc')][_0x0b06('0xa')](this));ami['on']('agentringnoanswer',this[_0x0b06('0xd')][_0x0b06('0xa')](this));ami['on'](_0x0b06('0xe'),this[_0x0b06('0xf')]['bind'](this));ami['on']('blindtransfer',this[_0x0b06('0x10')]['bind'](this));ami['on']('custom:agentConnectPreview',this['syncAgentConnectPreview'][_0x0b06('0xa')](this));}function getDiff(_0x30b282){var _0x33eee0=moment()[_0x0b06('0x11')](0x0);var _0x2cc152=moment(_0x30b282)[_0x0b06('0x11')](0x0);return _0x33eee0[_0x0b06('0x12')](_0x2cc152,_0x0b06('0x13'));}Acw['prototype'][_0x0b06('0x14')]=function(_0x3647f9){try{var _0x2b788a=this;var _0x5aa0f6=this[_0x0b06('0x6')][_0x3647f9][_0x0b06('0x15')];var _0x5f3ee4=this[_0x0b06('0x6')][_0x3647f9][_0x0b06('0x16')];var _0x164555=this[_0x0b06('0x3')][_0x5f3ee4];var _0x5c966d=![];var _0x44e2c4=_0x0b06('0x17');if(_0x164555['mandatoryDisposition']){if(_0x164555['mandatoryDispositionPause']['name']){_0x5c966d=!![];_0x44e2c4=_0x164555[_0x0b06('0x18')][_0x0b06('0x19')];}}ami[_0x0b06('0x1a')]({'action':_0x0b06('0x1b'),'interface':_0x5aa0f6,'paused':!![],'reason':_0x44e2c4})[_0x0b06('0x1c')](function(_0x44ba87){if(_0x2b788a['agents'][_0x5aa0f6]){return RpcUser[_0x0b06('0x1d')](_0x2b788a[_0x0b06('0x4')][_0x5aa0f6]['id'])[_0x0b06('0x1c')](function(_0xdf7cb6){if(_0xdf7cb6&&!_0xdf7cb6[_0x0b06('0x1e')]){logger[_0x0b06('0x1f')](_0x0b06('0x20'),_0x3647f9,_0x5aa0f6,_0x5f3ee4);var _0x509c25=_0x2b788a[_0x0b06('0x6')][_0x3647f9][_0x0b06('0x21')]&&_0x2b788a[_0x0b06('0x6')][_0x3647f9][_0x0b06('0x22')]?_0x2b788a['channels'][_0x3647f9]['destlinkedid']:_0x3647f9;return RpcUser['savePause'](_0x2b788a[_0x0b06('0x4')][_0x5aa0f6],_0x44e2c4,_0x509c25)[_0x0b06('0x1c')](function(_0x4fdd0b){if(!_0x5c966d){_0x2b788a['timers'][_0x5aa0f6]={};logger[_0x0b06('0x1f')](_0x0b06('0x23'),_0x3647f9,_0x2b788a[_0x0b06('0x3')][_0x5f3ee4][_0x0b06('0x24')],_0x5aa0f6,_0x5f3ee4);_0x2b788a[_0x0b06('0x5')][_0x5aa0f6][_0x0b06('0x25')]=setTimeout(_0x2b788a[_0x0b06('0x26')][_0x0b06('0xa')](_0x2b788a,_0x5aa0f6),_0x2b788a[_0x0b06('0x3')][_0x5f3ee4]['acwTimeout']*0x3e8);_0x2b788a[_0x0b06('0x5')][_0x5aa0f6]['lastPauseAt']=moment()[_0x0b06('0x27')](_0x0b06('0x28'));_0x2b788a[_0x0b06('0x5')][_0x5aa0f6][_0x0b06('0x29')]=_0x3647f9;_0x2b788a['timers'][_0x5aa0f6][_0x0b06('0x16')]=_0x5f3ee4;_0x2b788a[_0x0b06('0x5')][_0x5aa0f6][_0x0b06('0x2a')]=function(){var _0x20fda1=getDiff(_0x2b788a[_0x0b06('0x5')][_0x5aa0f6]['lastPauseAt']);clearTimeout(_0x2b788a[_0x0b06('0x5')][_0x5aa0f6][_0x0b06('0x25')]);_0x2b788a['timers'][_0x5aa0f6][_0x0b06('0x25')]=![];RpcVoiceAgentReport[_0x0b06('0x2b')]({'acwtime':_0x20fda1},_0x2b788a[_0x0b06('0x5')][_0x5aa0f6]['uniqueid'],_0x5aa0f6)[_0x0b06('0x1c')](function(_0x38d7b5){logger[_0x0b06('0x1f')](_0x0b06('0x2c'),_0x3647f9,_0x20fda1,_0x38d7b5);})[_0x0b06('0x2d')](function(_0x63aa58){logger[_0x0b06('0x2e')](_0x0b06('0x2f'),_0x3647f9,_0x63aa58);});delete _0x2b788a[_0x0b06('0x5')][_0x5aa0f6];};}});}else{logger[_0x0b06('0x1f')]('[%s][INPAUSE][AGENT:%s][QUEUE:%s]',_0x3647f9,_0x5aa0f6,_0x5f3ee4);}});}})['catch'](function(_0x3e5b8a){logger[_0x0b06('0x2e')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x3647f9,_0x2b788a['voiceQueues'][_0x5f3ee4][_0x0b06('0x24')],_0x5aa0f6,_0x5f3ee4);})['finally'](function(){delete _0x2b788a['channels'][_0x3647f9];});}catch(_0x263893){logger[_0x0b06('0x2e')]('[ACW][START]\x20%s',_0x263893['message']);}};Acw[_0x0b06('0x30')][_0x0b06('0x26')]=function(_0x5013cb){try{var _0x597a9c=this;if(_0x597a9c[_0x0b06('0x5')][_0x5013cb]){_0x597a9c[_0x0b06('0x5')][_0x5013cb][_0x0b06('0x25')]=![];var _0x36e20c=_0x597a9c['timers'][_0x5013cb]['uniqueid'];var _0x1f0b62=_0x597a9c['timers'][_0x5013cb][_0x0b06('0x16')];var _0x5bd518=_0x597a9c[_0x0b06('0x3')][_0x1f0b62][_0x0b06('0x24')];logger['info'](_0x0b06('0x31'),_0x36e20c,_0x5013cb);RpcUser[_0x0b06('0x32')](this[_0x0b06('0x4')][_0x5013cb]);RpcVoiceAgentReport[_0x0b06('0x2b')]({'acwtime':_0x5bd518,'agentacw':!![]},_0x36e20c,_0x5013cb)['then'](function(_0x3ce066){logger[_0x0b06('0x1f')](_0x0b06('0x2c'),_0x36e20c,_0x5bd518,_0x3ce066);})[_0x0b06('0x2d')](function(_0x5972a8){logger[_0x0b06('0x2e')](_0x0b06('0x2f'),_0x36e20c,_0x5972a8);});}else{logger[_0x0b06('0x2e')]('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x5013cb);if(_0x597a9c[_0x0b06('0x5')]){logger[_0x0b06('0x1f')](_0x0b06('0x33'),JSON[_0x0b06('0x34')](_0x597a9c[_0x0b06('0x5')]));}}}catch(_0xe0fe38){logger[_0x0b06('0x2e')](_0x0b06('0x35'),_0xe0fe38[_0x0b06('0x36')]);}};Acw[_0x0b06('0x30')][_0x0b06('0x8')]=function(_0x10e8e0){try{if(this['voiceQueues'][_0x10e8e0[_0x0b06('0x16')]]&&(this['voiceQueues'][_0x10e8e0[_0x0b06('0x16')]][_0x0b06('0x37')]||this[_0x0b06('0x3')][_0x10e8e0[_0x0b06('0x16')]][_0x0b06('0x38')])){if(this[_0x0b06('0x4')][_0x10e8e0['interface']]){this[_0x0b06('0x6')][_0x10e8e0['uniqueid']]={'queue':_0x10e8e0[_0x0b06('0x16')],'interface':_0x10e8e0[_0x0b06('0x15')],'destlinkedid':_0x10e8e0[_0x0b06('0x22')]};}}}catch(_0x18385b){logger[_0x0b06('0x2e')]('[ACW][syncAgentConnect]\x20%s',_0x18385b['message']);}};Acw[_0x0b06('0x30')][_0x0b06('0x39')]=function(_0x39bfc1){try{if(this[_0x0b06('0x3')][_0x39bfc1[_0x0b06('0x16')]]&&(this[_0x0b06('0x3')][_0x39bfc1[_0x0b06('0x16')]]['acw']||this['voiceQueues'][_0x39bfc1['queue']]['mandatoryDisposition'])){if(this[_0x0b06('0x4')][_0x39bfc1[_0x0b06('0x15')]]){this[_0x0b06('0x6')][_0x39bfc1['uniqueid']]={'queue':_0x39bfc1[_0x0b06('0x16')],'interface':_0x39bfc1[_0x0b06('0x15')]};}}}catch(_0x26a23f){logger[_0x0b06('0x2e')](_0x0b06('0x3a'),_0x26a23f[_0x0b06('0x36')]);}};Acw[_0x0b06('0x30')][_0x0b06('0x9')]=function(_0x5f30bf){try{if(this['channels'][_0x5f30bf['uniqueid']]&&_['isUndefined'](this[_0x0b06('0x6')][_0x5f30bf[_0x0b06('0x29')]][_0x0b06('0x21')])){logger[_0x0b06('0x1f')]('[%s][HANGUP:UNIQUEID]',_0x5f30bf[_0x0b06('0x29')]);this[_0x0b06('0x14')](_0x5f30bf['uniqueid']);}else if(this[_0x0b06('0x6')][_0x5f30bf[_0x0b06('0x3b')]]&&_[_0x0b06('0x3c')](this[_0x0b06('0x6')][_0x5f30bf['linkedid']][_0x0b06('0x21')])){logger[_0x0b06('0x1f')]('[%s][HANGUP:LINKEDID]',_0x5f30bf['linkedid']);this['startAcw'](_0x5f30bf[_0x0b06('0x3b')]);}}catch(_0x4f56cf){logger[_0x0b06('0x2e')](_0x0b06('0x3d'),_0x4f56cf[_0x0b06('0x36')]);}};Acw[_0x0b06('0x30')][_0x0b06('0xc')]=function(_0x3cf4be){try{if(this['channels'][_0x3cf4be[_0x0b06('0x29')]]&&this[_0x0b06('0x6')][_0x3cf4be[_0x0b06('0x29')]][_0x0b06('0x21')]){logger[_0x0b06('0x1f')](_0x0b06('0x3e'),_0x3cf4be[_0x0b06('0x29')]);this[_0x0b06('0x14')](_0x3cf4be[_0x0b06('0x29')]);}else if(this[_0x0b06('0x6')][_0x3cf4be['linkedid']]&&this[_0x0b06('0x6')][_0x3cf4be[_0x0b06('0x3b')]][_0x0b06('0x21')]){logger[_0x0b06('0x1f')](_0x0b06('0x3f'),_0x3cf4be[_0x0b06('0x3b')]);this['startAcw'](_0x3cf4be['linkedid']);}}catch(_0x1dceae){logger[_0x0b06('0x2e')]('[ACW][syncHangup]\x20%s',_0x1dceae['message']);}};Acw['prototype'][_0x0b06('0xf')]=function(_0x2defbb){try{if(!_[_0x0b06('0x40')](this[_0x0b06('0x6')][_0x2defbb['transfereeuniqueid']])){this[_0x0b06('0x14')](_0x2defbb[_0x0b06('0x41')]);if(this['channels'][_0x2defbb[_0x0b06('0x42')]]){this[_0x0b06('0x6')][_0x2defbb[_0x0b06('0x42')]]['attended']=!![];this[_0x0b06('0x6')][_0x2defbb[_0x0b06('0x43')]]=this[_0x0b06('0x6')][_0x2defbb[_0x0b06('0x42')]];delete this[_0x0b06('0x6')][_0x2defbb[_0x0b06('0x42')]];}}else if(!_['isNil'](this[_0x0b06('0x6')][_0x2defbb[_0x0b06('0x43')]])){this[_0x0b06('0x14')](_0x2defbb[_0x0b06('0x43')]);if(this[_0x0b06('0x6')][_0x2defbb[_0x0b06('0x44')]]){this[_0x0b06('0x6')][_0x2defbb[_0x0b06('0x44')]][_0x0b06('0x21')]=!![];this[_0x0b06('0x6')][_0x2defbb[_0x0b06('0x41')]]=this['channels'][_0x2defbb[_0x0b06('0x44')]];delete this[_0x0b06('0x6')][_0x2defbb[_0x0b06('0x44')]];}}}catch(_0x2e0c7b){logger[_0x0b06('0x2e')](_0x0b06('0x45'),_0x2e0c7b[_0x0b06('0x36')]);}};Acw[_0x0b06('0x30')]['syncBlindTransfer']=function(_0x2c1cf6){try{if(this[_0x0b06('0x6')][_0x2c1cf6['transfereruniqueid']]){logger[_0x0b06('0x1f')](_0x0b06('0x46'),JSON[_0x0b06('0x34')](_0x2c1cf6[_0x0b06('0x47')]));this['startAcw'](_0x2c1cf6[_0x0b06('0x47')]);}else if(this[_0x0b06('0x6')][_0x2c1cf6[_0x0b06('0x48')]]){logger[_0x0b06('0x1f')](_0x0b06('0x49'),JSON[_0x0b06('0x34')](_0x2c1cf6['transfererlinkedid']));this[_0x0b06('0x14')](_0x2c1cf6[_0x0b06('0x48')]);}}catch(_0x14ccb1){logger[_0x0b06('0x2e')](_0x0b06('0x4a'),_0x14ccb1['message']);}};Acw['prototype'][_0x0b06('0xd')]=function(_0x2fc127){try{if(this['voiceQueues'][_0x2fc127[_0x0b06('0x16')]]&&this[_0x0b06('0x3')][_0x2fc127[_0x0b06('0x16')]][_0x0b06('0x4b')]==='all'){if(this['agents'][_0x2fc127[_0x0b06('0x15')]]){logger['info'](_0x0b06('0x4c'),_0x2fc127['uniqueid'],_0x2fc127['interface'],_0x2fc127[_0x0b06('0x16')]);return RpcUser[_0x0b06('0x4d')](this['agents'][_0x2fc127[_0x0b06('0x15')]],_0x0b06('0x4e'),_0x2fc127[_0x0b06('0x29')]);}}}catch(_0x27ed8e){logger[_0x0b06('0x2e')](_0x0b06('0x4f'),_0x27ed8e[_0x0b06('0x36')]);}};module[_0x0b06('0x50')]=Acw;
\ No newline at end of file
+var _0x65a3=['isUndefined','linkedid','[%s][HANGUP:LINKEDID]','[ACW][syncHangupRequest]\x20%s','[%s][HANGUPATTENDEDTRANSFER:UNIQUEID]','[ACW][syncHangup]\x20%s','syncAttendedTransfer','isNil','transfereeuniqueid','secondtransfereruniqueid','transfertargetuniqueid','origtransfereruniqueid','transfereruniqueid','transfererlinkedid','[%s][BLINDTRANSFER:LINKEDID]','[ACW][syncBlindTransfer]\x20%s','autopause','all','[%s][AUTOPAUSE][AGENT:%s][QUEUE:%]','Auto-Pause','exports','lodash','moment','../ami','acw','../rpc/user','../rpc/voiceAgentReport','voiceQueues','channels','syncAgentConnect','bind','syncHangupRequest','syncHangup','syncAgentRingNoAnswer','attendedtransfer','blindtransfer','syncBlindTransfer','milliseconds','diff','seconds','prototype','startAcw','interface','queue','ACW','mandatoryDispositionPause','name','Action','QueuePause','then','voicePause','info','[%s][START][AGENT:%s][QUEUE:%s]','attended','destlinkedid','savePause','agents','[%s][TIMER:%s][AGENT:%s][QUEUE:%s]','acwTimeout','timers','timer','stopAcw','lastPauseAt','format','YYYY-MM-DD\x20HH:mm:ss','updateAcw','update','uniqueid','catch','[%s][UPDATE][ERRORS:%s]','[%s][INPAUSE][AGENT:%s][QUEUE:%s]','error','finally','[ACW][START]\x20%s','message','[%s][TIMER][STOP][AGENT:%s]','[ACW][TIMERS]','stringify','[ACW][STOP]\x20%s','mandatoryDisposition','[ACW][syncAgentConnect]\x20%s','[ACW][syncAgentConnectPreview]\x20%s'];(function(_0x101735,_0x4810bf){var _0x1177ea=function(_0x4ea288){while(--_0x4ea288){_0x101735['push'](_0x101735['shift']());}};_0x1177ea(++_0x4810bf);}(_0x65a3,0x1af));var _0x365a=function(_0x55b95d,_0x2f9d7a){_0x55b95d=_0x55b95d-0x0;var _0x257852=_0x65a3[_0x55b95d];return _0x257852;};'use strict';var util=require('util');var _=require(_0x365a('0x0'));var moment=require(_0x365a('0x1'));var ami=require(_0x365a('0x2'));var logger=require('../../../config/logger')(_0x365a('0x3'));var RpcUser=require(_0x365a('0x4'));var RpcVoiceAgentReport=require(_0x365a('0x5'));function Acw(_0xdd370c){this[_0x365a('0x6')]=_0xdd370c[_0x365a('0x6')];this['agents']=_0xdd370c['agents'];this['timers']=_0xdd370c['timers'];this[_0x365a('0x7')]={};ami['on']('agentconnect',this[_0x365a('0x8')][_0x365a('0x9')](this));ami['on']('hanguprequest',this[_0x365a('0xa')][_0x365a('0x9')](this));ami['on']('hangup',this[_0x365a('0xb')][_0x365a('0x9')](this));ami['on']('agentringnoanswer',this[_0x365a('0xc')][_0x365a('0x9')](this));ami['on'](_0x365a('0xd'),this['syncAttendedTransfer'][_0x365a('0x9')](this));ami['on'](_0x365a('0xe'),this[_0x365a('0xf')][_0x365a('0x9')](this));ami['on']('custom:agentConnectPreview',this['syncAgentConnectPreview'][_0x365a('0x9')](this));}function getDiff(_0x1b1e23){var _0x294b38=moment()[_0x365a('0x10')](0x0);var _0x56630e=moment(_0x1b1e23)[_0x365a('0x10')](0x0);return _0x294b38[_0x365a('0x11')](_0x56630e,_0x365a('0x12'));}Acw[_0x365a('0x13')][_0x365a('0x14')]=function(_0x28e4c7){try{var _0x5026b4=this;var _0x4e45da=this[_0x365a('0x7')][_0x28e4c7][_0x365a('0x15')];var _0x28946c=this[_0x365a('0x7')][_0x28e4c7][_0x365a('0x16')];var _0x351ee0=this[_0x365a('0x6')][_0x28946c];var _0x1b707f=![];var _0x4dbca6=_0x365a('0x17');if(_0x351ee0['mandatoryDisposition']){if(_0x351ee0[_0x365a('0x18')][_0x365a('0x19')]){_0x1b707f=!![];_0x4dbca6=_0x351ee0[_0x365a('0x18')][_0x365a('0x19')];}}ami[_0x365a('0x1a')]({'action':_0x365a('0x1b'),'interface':_0x4e45da,'paused':!![],'reason':_0x4dbca6})[_0x365a('0x1c')](function(_0x5c09ce){if(_0x5026b4['agents'][_0x4e45da]){return RpcUser['getAgent'](_0x5026b4['agents'][_0x4e45da]['id'])[_0x365a('0x1c')](function(_0x3646a4){if(_0x3646a4&&!_0x3646a4[_0x365a('0x1d')]){logger[_0x365a('0x1e')](_0x365a('0x1f'),_0x28e4c7,_0x4e45da,_0x28946c);var _0x566c85=_0x5026b4[_0x365a('0x7')][_0x28e4c7][_0x365a('0x20')]&&_0x5026b4['channels'][_0x28e4c7][_0x365a('0x21')]?_0x5026b4[_0x365a('0x7')][_0x28e4c7][_0x365a('0x21')]:_0x28e4c7;return RpcUser[_0x365a('0x22')](_0x5026b4[_0x365a('0x23')][_0x4e45da],_0x4dbca6,_0x566c85)['then'](function(_0x2a0743){if(!_0x1b707f){_0x5026b4['timers'][_0x4e45da]={};logger[_0x365a('0x1e')](_0x365a('0x24'),_0x28e4c7,_0x5026b4[_0x365a('0x6')][_0x28946c][_0x365a('0x25')],_0x4e45da,_0x28946c);_0x5026b4[_0x365a('0x26')][_0x4e45da][_0x365a('0x27')]=setTimeout(_0x5026b4[_0x365a('0x28')]['bind'](_0x5026b4,_0x4e45da),_0x5026b4[_0x365a('0x6')][_0x28946c][_0x365a('0x25')]*0x3e8);_0x5026b4[_0x365a('0x26')][_0x4e45da][_0x365a('0x29')]=moment()[_0x365a('0x2a')](_0x365a('0x2b'));_0x5026b4[_0x365a('0x26')][_0x4e45da]['uniqueid']=_0x28e4c7;_0x5026b4[_0x365a('0x26')][_0x4e45da]['queue']=_0x28946c;_0x5026b4['timers'][_0x4e45da][_0x365a('0x2c')]=function(){var _0x2db55f=getDiff(_0x5026b4[_0x365a('0x26')][_0x4e45da]['lastPauseAt']);clearTimeout(_0x5026b4[_0x365a('0x26')][_0x4e45da][_0x365a('0x27')]);_0x5026b4[_0x365a('0x26')][_0x4e45da][_0x365a('0x27')]=![];RpcVoiceAgentReport[_0x365a('0x2d')]({'acwtime':_0x2db55f},_0x5026b4[_0x365a('0x26')][_0x4e45da][_0x365a('0x2e')],_0x4e45da)[_0x365a('0x1c')](function(_0x4dba15){logger[_0x365a('0x1e')]('[%s][UPDATE][ACWTIME:%s]',_0x28e4c7,_0x2db55f,_0x4dba15);})[_0x365a('0x2f')](function(_0x254be1){logger['error'](_0x365a('0x30'),_0x28e4c7,_0x254be1);});delete _0x5026b4[_0x365a('0x26')][_0x4e45da];};}});}else{logger[_0x365a('0x1e')](_0x365a('0x31'),_0x28e4c7,_0x4e45da,_0x28946c);}});}})['catch'](function(_0x17f2d0){logger[_0x365a('0x32')]('[%s][TIMER:%s][AGENT:%s][QUEUE:%s]',_0x28e4c7,_0x5026b4['voiceQueues'][_0x28946c][_0x365a('0x25')],_0x4e45da,_0x28946c);})[_0x365a('0x33')](function(){delete _0x5026b4[_0x365a('0x7')][_0x28e4c7];});}catch(_0x5131f1){logger[_0x365a('0x32')](_0x365a('0x34'),_0x5131f1[_0x365a('0x35')]);}};Acw[_0x365a('0x13')]['stopAcw']=function(_0x44d64b){try{var _0x266566=this;if(_0x266566[_0x365a('0x26')][_0x44d64b]){_0x266566[_0x365a('0x26')][_0x44d64b][_0x365a('0x27')]=![];var _0x24191a=_0x266566['timers'][_0x44d64b]['uniqueid'];var _0x36a3cb=_0x266566['timers'][_0x44d64b]['queue'];var _0x535276=_0x266566[_0x365a('0x6')][_0x36a3cb]['acwTimeout'];logger[_0x365a('0x1e')](_0x365a('0x36'),_0x24191a,_0x44d64b);RpcUser['saveUnpause'](this[_0x365a('0x23')][_0x44d64b]);RpcVoiceAgentReport[_0x365a('0x2d')]({'acwtime':_0x535276,'agentacw':!![]},_0x24191a,_0x44d64b)[_0x365a('0x1c')](function(_0x15ec7d){logger[_0x365a('0x1e')]('[%s][UPDATE][ACWTIME:%s]',_0x24191a,_0x535276,_0x15ec7d);})[_0x365a('0x2f')](function(_0x383c52){logger[_0x365a('0x32')](_0x365a('0x30'),_0x24191a,_0x383c52);});}else{logger['error']('[ACW][STOP]\x20Interface\x20%s\x20doesn\x27t\x20have\x20timer',_0x44d64b);if(_0x266566['timers']){logger[_0x365a('0x1e')](_0x365a('0x37'),JSON[_0x365a('0x38')](_0x266566[_0x365a('0x26')]));}}}catch(_0x413006){logger[_0x365a('0x32')](_0x365a('0x39'),_0x413006[_0x365a('0x35')]);}};Acw[_0x365a('0x13')]['syncAgentConnect']=function(_0x4d39c5){try{if(this[_0x365a('0x6')][_0x4d39c5[_0x365a('0x16')]]&&(this[_0x365a('0x6')][_0x4d39c5[_0x365a('0x16')]]['acw']||this[_0x365a('0x6')][_0x4d39c5[_0x365a('0x16')]][_0x365a('0x3a')])){if(this[_0x365a('0x23')][_0x4d39c5['interface']]){this['channels'][_0x4d39c5['uniqueid']]={'queue':_0x4d39c5['queue'],'interface':_0x4d39c5[_0x365a('0x15')],'destlinkedid':_0x4d39c5[_0x365a('0x21')]};}}}catch(_0x120327){logger[_0x365a('0x32')](_0x365a('0x3b'),_0x120327[_0x365a('0x35')]);}};Acw[_0x365a('0x13')]['syncAgentConnectPreview']=function(_0x4c981c){try{if(this[_0x365a('0x6')][_0x4c981c[_0x365a('0x16')]]&&(this[_0x365a('0x6')][_0x4c981c['queue']][_0x365a('0x3')]||this[_0x365a('0x6')][_0x4c981c['queue']][_0x365a('0x3a')])){if(this[_0x365a('0x23')][_0x4c981c[_0x365a('0x15')]]){this[_0x365a('0x7')][_0x4c981c[_0x365a('0x2e')]]={'queue':_0x4c981c[_0x365a('0x16')],'interface':_0x4c981c[_0x365a('0x15')]};}}}catch(_0x4b8d5d){logger[_0x365a('0x32')](_0x365a('0x3c'),_0x4b8d5d['message']);}};Acw[_0x365a('0x13')][_0x365a('0xa')]=function(_0x2af508){try{if(this['channels'][_0x2af508[_0x365a('0x2e')]]&&_[_0x365a('0x3d')](this[_0x365a('0x7')][_0x2af508[_0x365a('0x2e')]][_0x365a('0x20')])){logger['info']('[%s][HANGUP:UNIQUEID]',_0x2af508[_0x365a('0x2e')]);this[_0x365a('0x14')](_0x2af508[_0x365a('0x2e')]);}else if(this[_0x365a('0x7')][_0x2af508['linkedid']]&&_['isUndefined'](this[_0x365a('0x7')][_0x2af508[_0x365a('0x3e')]][_0x365a('0x20')])){logger[_0x365a('0x1e')](_0x365a('0x3f'),_0x2af508[_0x365a('0x3e')]);this[_0x365a('0x14')](_0x2af508[_0x365a('0x3e')]);}}catch(_0x7b239c){logger[_0x365a('0x32')](_0x365a('0x40'),_0x7b239c['message']);}};Acw['prototype'][_0x365a('0xb')]=function(_0x37f2a2){try{if(this[_0x365a('0x7')][_0x37f2a2['uniqueid']]&&this[_0x365a('0x7')][_0x37f2a2['uniqueid']][_0x365a('0x20')]){logger[_0x365a('0x1e')](_0x365a('0x41'),_0x37f2a2['uniqueid']);this[_0x365a('0x14')](_0x37f2a2[_0x365a('0x2e')]);}else if(this['channels'][_0x37f2a2[_0x365a('0x3e')]]&&this[_0x365a('0x7')][_0x37f2a2[_0x365a('0x3e')]][_0x365a('0x20')]){logger['info']('[%s][HANGUPATTENDEDTRANSFER:LINKEDID]',_0x37f2a2[_0x365a('0x3e')]);this[_0x365a('0x14')](_0x37f2a2[_0x365a('0x3e')]);}}catch(_0x184cda){logger[_0x365a('0x32')](_0x365a('0x42'),_0x184cda[_0x365a('0x35')]);}};Acw[_0x365a('0x13')][_0x365a('0x43')]=function(_0x1ba6fe){try{if(!_[_0x365a('0x44')](this[_0x365a('0x7')][_0x1ba6fe[_0x365a('0x45')]])){this[_0x365a('0x14')](_0x1ba6fe['transfereeuniqueid']);if(this[_0x365a('0x7')][_0x1ba6fe[_0x365a('0x46')]]){this['channels'][_0x1ba6fe[_0x365a('0x46')]][_0x365a('0x20')]=!![];this[_0x365a('0x7')][_0x1ba6fe[_0x365a('0x47')]]=this[_0x365a('0x7')][_0x1ba6fe[_0x365a('0x46')]];delete this[_0x365a('0x7')][_0x1ba6fe[_0x365a('0x46')]];}}else if(!_['isNil'](this[_0x365a('0x7')][_0x1ba6fe['transfertargetuniqueid']])){this[_0x365a('0x14')](_0x1ba6fe[_0x365a('0x47')]);if(this[_0x365a('0x7')][_0x1ba6fe[_0x365a('0x48')]]){this['channels'][_0x1ba6fe[_0x365a('0x48')]][_0x365a('0x20')]=!![];this[_0x365a('0x7')][_0x1ba6fe[_0x365a('0x45')]]=this['channels'][_0x1ba6fe[_0x365a('0x48')]];delete this[_0x365a('0x7')][_0x1ba6fe['origtransfereruniqueid']];}}}catch(_0x53fe2b){logger[_0x365a('0x32')]('[ACW][syncAttendedTransfer]\x20%s',_0x53fe2b['message']);}};Acw[_0x365a('0x13')]['syncBlindTransfer']=function(_0x44831){try{if(this[_0x365a('0x7')][_0x44831[_0x365a('0x49')]]){logger[_0x365a('0x1e')]('[%s][BLINDTRANSFER:UNIQUEID]',JSON['stringify'](_0x44831['transfereruniqueid']));this[_0x365a('0x14')](_0x44831['transfereruniqueid']);}else if(this['channels'][_0x44831[_0x365a('0x4a')]]){logger[_0x365a('0x1e')](_0x365a('0x4b'),JSON[_0x365a('0x38')](_0x44831[_0x365a('0x4a')]));this[_0x365a('0x14')](_0x44831[_0x365a('0x4a')]);}}catch(_0x17e041){logger[_0x365a('0x32')](_0x365a('0x4c'),_0x17e041['message']);}};Acw['prototype'][_0x365a('0xc')]=function(_0x5a47eb){try{if(this['voiceQueues'][_0x5a47eb['queue']]&&this['voiceQueues'][_0x5a47eb[_0x365a('0x16')]][_0x365a('0x4d')]===_0x365a('0x4e')){if(this[_0x365a('0x23')][_0x5a47eb[_0x365a('0x15')]]){logger[_0x365a('0x1e')](_0x365a('0x4f'),_0x5a47eb[_0x365a('0x2e')],_0x5a47eb[_0x365a('0x15')],_0x5a47eb[_0x365a('0x16')]);return RpcUser[_0x365a('0x22')](this[_0x365a('0x23')][_0x5a47eb[_0x365a('0x15')]],_0x365a('0x50'),_0x5a47eb['uniqueid']);}}}catch(_0x1266ec){logger[_0x365a('0x32')]('[ACW][syncAgentRingNoAnswer]\x20%s',_0x1266ec['message']);}};module[_0x365a('0x51')]=Acw;
\ No newline at end of file
index 498ae71..6ef5282 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0713=['Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s','inspect','format','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','actionSipShowRegistry','actionDeviceStateList','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','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\x20\x22%s\x22\x20to\x20%s:%s','then','catch','[ami.js][fullybooted]','exports','moment','util','lodash','../../config/logger','ami','asterisk','port','username','password','keepConnected','Action','promisify','action','error'];(function(_0x99ff94,_0x47a1b1){var _0x1b5bc0=function(_0x25821f){while(--_0x25821f){_0x99ff94['push'](_0x99ff94['shift']());}};_0x1b5bc0(++_0x47a1b1);}(_0x0713,0x1ba));var _0x3071=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x0713[_0x3dd15e];return _0x231fd0;};'use strict';var Manager=require('asterisk-manager');var BPromise=require('bluebird');var moment=require(_0x3071('0x0'));var util=require(_0x3071('0x1'));var _=require(_0x3071('0x2'));var logger=require(_0x3071('0x3'))(_0x3071('0x4'));var config=require('../../config/environment');var ami=new Manager(config[_0x3071('0x5')][_0x3071('0x6')],config[_0x3071('0x5')]['ip'],config[_0x3071('0x5')][_0x3071('0x7')],config[_0x3071('0x5')][_0x3071('0x8')],!![]);ami[_0x3071('0x9')]();ami[_0x3071('0xa')]=BPromise[_0x3071('0xb')](ami[_0x3071('0xc')]);function error(_0x2fce7a){logger[_0x3071('0xd')](util['format'](_0x3071('0xe'),config[_0x3071('0x5')][_0x3071('0x7')],config[_0x3071('0x5')]['ip'],config[_0x3071('0x5')]['port'],util[_0x3071('0xf')](_0x2fce7a,![],null)));}function close(){logger[_0x3071('0xd')](util[_0x3071('0x10')](_0x3071('0x11'),config[_0x3071('0x5')]['username'],config['asterisk']['ip'],config[_0x3071('0x5')]['port']));}ami[_0x3071('0x12')]=function(){return function(){return ami[_0x3071('0xa')]({'action':'sipshowregistry'});};};ami[_0x3071('0x13')]=function(){return function(){return ami['Action']({'action':_0x3071('0x14')});};};ami[_0x3071('0x15')]=function(){return function(){return ami[_0x3071('0xa')]({'action':_0x3071('0x16')});};};ami[_0x3071('0x17')]=function(){return function(){return ami[_0x3071('0xa')]({'action':_0x3071('0x18')});};};ami[_0x3071('0x19')]=function(){return function(){return ami[_0x3071('0xa')]({'action':_0x3071('0x1a')});};};function connect(_0x5f3c22){logger[_0x3071('0x1b')](util[_0x3071('0x10')](_0x3071('0x1c'),config[_0x3071('0x5')][_0x3071('0x7')],config[_0x3071('0x5')]['ip'],config[_0x3071('0x5')][_0x3071('0x6')]));ami['once'](_0x3071('0xd'),error);ami[_0x3071('0x1d')](_0x3071('0x1e'),close);}ami['on']('connect',connect);ami['on'](_0x3071('0x1f'),function(_0x5cd80d){logger[_0x3071('0x1b')](util[_0x3071('0x10')](_0x3071('0x20'),config[_0x3071('0x5')][_0x3071('0x7')],config[_0x3071('0x5')]['ip'],config[_0x3071('0x5')][_0x3071('0x6')],util['inspect'](_0x5cd80d,![],null)));});ami['on']('fullybooted',function(_0x2ce48a){logger[_0x3071('0x1b')](util[_0x3071('0x10')](_0x3071('0x21'),config[_0x3071('0x5')][_0x3071('0x7')],config[_0x3071('0x5')]['ip'],config[_0x3071('0x5')][_0x3071('0x6')]));return BPromise['resolve']()[_0x3071('0x22')](ami[_0x3071('0x12')]())[_0x3071('0x22')](ami['actionDeviceStateList']())[_0x3071('0x22')](ami[_0x3071('0x15')]())[_0x3071('0x22')](ami[_0x3071('0x17')]())[_0x3071('0x22')](ami[_0x3071('0x19')]())[_0x3071('0x23')](function(_0x3921a1){logger[_0x3071('0xd')](_0x3071('0x24'),util[_0x3071('0xf')](_0x3921a1,{'showHidden':![],'depth':null}));});});ami['once']('error',error);ami[_0x3071('0x1d')](_0x3071('0x1e'),close);module[_0x3071('0x25')]=ami;
\ No newline at end of file
+var _0x2032=['exports','bluebird','moment','util','../../config/logger','ami','asterisk','port','username','password','keepConnected','Action','promisify','action','format','error','Manager\x20\x22%s\x22\x20closed\x20to\x20%s:%s','devicestatelist','actionSipPeerStatus','sippeerstatus','actionQueueSummary','queuesummary','actionCoreShowChannels','info','Manager\x20\x22%s\x22\x20logged\x20on\x20to\x20%s:%s','once','close','connect','Shutdown\x20\x22%s\x22\x20to\x20%s:%s\x20with:\x0a%s','Fullybooted\x20\x22%s\x22\x20to\x20%s:%s','resolve','then','actionSipShowRegistry','actionDeviceStateList','catch','inspect'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0x2032,0xd9));var _0x2203=function(_0x2312a7,_0x38cced){_0x2312a7=_0x2312a7-0x0;var _0x48ce44=_0x2032[_0x2312a7];return _0x48ce44;};'use strict';var Manager=require('asterisk-manager');var BPromise=require(_0x2203('0x0'));var moment=require(_0x2203('0x1'));var util=require(_0x2203('0x2'));var _=require('lodash');var logger=require(_0x2203('0x3'))(_0x2203('0x4'));var config=require('../../config/environment');var ami=new Manager(config[_0x2203('0x5')][_0x2203('0x6')],config[_0x2203('0x5')]['ip'],config[_0x2203('0x5')][_0x2203('0x7')],config[_0x2203('0x5')][_0x2203('0x8')],!![]);ami[_0x2203('0x9')]();ami[_0x2203('0xa')]=BPromise[_0x2203('0xb')](ami[_0x2203('0xc')]);function error(_0x5ecf9e){logger['error'](util[_0x2203('0xd')]('Manager\x20\x22%s\x22\x20error\x20to\x20%s:%s\x20with:\x0a%s',config[_0x2203('0x5')][_0x2203('0x7')],config[_0x2203('0x5')]['ip'],config['asterisk'][_0x2203('0x6')],util['inspect'](_0x5ecf9e,![],null)));}function close(){logger[_0x2203('0xe')](util['format'](_0x2203('0xf'),config[_0x2203('0x5')]['username'],config['asterisk']['ip'],config['asterisk']['port']));}ami['actionSipShowRegistry']=function(){return function(){return ami[_0x2203('0xa')]({'action':'sipshowregistry'});};};ami['actionDeviceStateList']=function(){return function(){return ami[_0x2203('0xa')]({'action':_0x2203('0x10')});};};ami[_0x2203('0x11')]=function(){return function(){return ami[_0x2203('0xa')]({'action':_0x2203('0x12')});};};ami[_0x2203('0x13')]=function(){return function(){return ami[_0x2203('0xa')]({'action':_0x2203('0x14')});};};ami[_0x2203('0x15')]=function(){return function(){return ami[_0x2203('0xa')]({'action':'coreshowchannels'});};};function connect(_0x280eda){logger[_0x2203('0x16')](util['format'](_0x2203('0x17'),config[_0x2203('0x5')]['username'],config[_0x2203('0x5')]['ip'],config['asterisk'][_0x2203('0x6')]));ami[_0x2203('0x18')](_0x2203('0xe'),error);ami[_0x2203('0x18')](_0x2203('0x19'),close);}ami['on'](_0x2203('0x1a'),connect);ami['on']('shutdown',function(_0x13d3f7){logger['info'](util['format'](_0x2203('0x1b'),config['asterisk'][_0x2203('0x7')],config[_0x2203('0x5')]['ip'],config['asterisk'][_0x2203('0x6')],util['inspect'](_0x13d3f7,![],null)));});ami['on']('fullybooted',function(_0x226374){logger[_0x2203('0x16')](util[_0x2203('0xd')](_0x2203('0x1c'),config[_0x2203('0x5')][_0x2203('0x7')],config[_0x2203('0x5')]['ip'],config[_0x2203('0x5')]['port']));return BPromise[_0x2203('0x1d')]()[_0x2203('0x1e')](ami[_0x2203('0x1f')]())['then'](ami[_0x2203('0x20')]())[_0x2203('0x1e')](ami['actionSipPeerStatus']())[_0x2203('0x1e')](ami[_0x2203('0x13')]())[_0x2203('0x1e')](ami[_0x2203('0x15')]())[_0x2203('0x21')](function(_0x1df508){logger[_0x2203('0xe')]('[ami.js][fullybooted]',util[_0x2203('0x22')](_0x1df508,{'showHidden':![],'depth':null}));});});ami[_0x2203('0x18')](_0x2203('0xe'),error);ami[_0x2203('0x18')]('close',close);module[_0x2203('0x23')]=ami;
\ No newline at end of file
index 2b7e25e..956ad01 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf4eb=['rpc','error','message','result','exports','jayson/promise','http','request','then','debug','memberReport'];(function(_0x1d227e,_0x361094){var _0x7ccf13=function(_0x56c91d){while(--_0x56c91d){_0x1d227e['push'](_0x1d227e['shift']());}};_0x7ccf13(++_0x361094);}(_0xf4eb,0xec));var _0xbf4e=function(_0x320c52,_0x140632){_0x320c52=_0x320c52-0x0;var _0x3f2ec8=_0xf4eb[_0x320c52];return _0x3f2ec8;};'use strict';var jayson=require(_0xbf4e('0x0'));var BPromise=require('bluebird');var logger=require('../../config/logger')('ami');var client=jayson['client'][_0xbf4e('0x1')]({'port':0x2329});client['Request']=function(_0x4e7fa7,_0x2e3070){return new BPromise(function(_0x1c7606,_0x32d1d7){return client[_0xbf4e('0x2')](_0x4e7fa7,_0x2e3070)[_0xbf4e('0x3')](function(_0x2fcfed){logger[_0xbf4e('0x4')]('rpc',_0xbf4e('0x5'),_0x4e7fa7,_0x2e3070,_0x2fcfed);if(_0x2fcfed['error']){logger['error'](_0xbf4e('0x6'),_0xbf4e('0x5'),_0x4e7fa7,_0x2fcfed[_0xbf4e('0x7')][_0xbf4e('0x8')],_0x2e3070);return _0x32d1d7(_0x2fcfed[_0xbf4e('0x7')][_0xbf4e('0x8')]);}else{return _0x1c7606(_0x2fcfed[_0xbf4e('0x9')]);}})['catch'](function(_0x4d9a07){logger[_0xbf4e('0x7')]('rpc',_0xbf4e('0x5'),_0x4e7fa7,_0x4d9a07,_0x2e3070);return _0x32d1d7(_0x4d9a07);});});};module[_0xbf4e('0xa')]=client;
\ No newline at end of file
+var _0xcb91=['request','debug','memberReport','error','rpc','message','result','catch','exports','../../config/logger','ami','client','http'];(function(_0x3b5250,_0x7a0b2c){var _0xc844a1=function(_0x2fbc98){while(--_0x2fbc98){_0x3b5250['push'](_0x3b5250['shift']());}};_0xc844a1(++_0x7a0b2c);}(_0xcb91,0x1a9));var _0x1cb9=function(_0x4f5108,_0x46a54b){_0x4f5108=_0x4f5108-0x0;var _0x2d56ca=_0xcb91[_0x4f5108];return _0x2d56ca;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0x1cb9('0x0'))(_0x1cb9('0x1'));var client=jayson[_0x1cb9('0x2')][_0x1cb9('0x3')]({'port':0x2329});client['Request']=function(_0x8c392f,_0x2c17b8){return new BPromise(function(_0x545a34,_0x13d5fd){return client[_0x1cb9('0x4')](_0x8c392f,_0x2c17b8)['then'](function(_0x226b69){logger[_0x1cb9('0x5')]('rpc',_0x1cb9('0x6'),_0x8c392f,_0x2c17b8,_0x226b69);if(_0x226b69[_0x1cb9('0x7')]){logger['error'](_0x1cb9('0x8'),'memberReport',_0x8c392f,_0x226b69['error'][_0x1cb9('0x9')],_0x2c17b8);return _0x13d5fd(_0x226b69[_0x1cb9('0x7')][_0x1cb9('0x9')]);}else{return _0x545a34(_0x226b69[_0x1cb9('0xa')]);}})[_0x1cb9('0xb')](function(_0x50ce71){logger[_0x1cb9('0x7')](_0x1cb9('0x8'),_0x1cb9('0x6'),_0x8c392f,_0x50ce71,_0x2c17b8);return _0x13d5fd(_0x50ce71);});});};module[_0x1cb9('0xc')]=client;
\ No newline at end of file
index 385e47e..badbbe7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x742c=['ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','firstName','format','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','prototype','\x22%s\x22\x20<%s>','number','substring','getQueue','exports','util','lodash','moment','isNil','string','voiceQueue','uniqueid','name','Contact','lastName','queue','active','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry'];(function(_0x40d7fe,_0x7e9eda){var _0x198c42=function(_0x13bf32){while(--_0x13bf32){_0x40d7fe['push'](_0x40d7fe['shift']());}};_0x198c42(++_0x7e9eda);}(_0x742c,0x92));var _0xc742=function(_0x557f5f,_0x31d8e7){_0x557f5f=_0x557f5f-0x0;var _0x196eba=_0x742c[_0x557f5f];return _0x196eba;};'use strict';var util=require(_0xc742('0x0'));var _=require(_0xc742('0x1'));var moment=require(_0xc742('0x2'));function checkNameSurname(_0x4bf6ff,_0x31cf81,_0x3842db){var _0x46c06f='';if(!_['isNil'](_0x31cf81)&&'string'===typeof _0x31cf81){_0x46c06f+=_0x31cf81;}if(!_[_0xc742('0x3')](_0x3842db)&&_0xc742('0x4')===typeof _0x3842db){_0x46c06f+='\x20'+_0x3842db;}if(_0x46c06f!==''){return _0x46c06f;}return _0x4bf6ff;}function Action(_0x4a9ac9,_0x5e5e96,_0x57b9ad){this[_0xc742('0x5')]=_0x4a9ac9;this[_0xc742('0x6')]=_0x57b9ad||undefined;this[_0xc742('0x7')]=checkNameSurname(_0x5e5e96[_0xc742('0x8')]['phone'],_0x5e5e96[_0xc742('0x8')]['firstName'],_0x5e5e96[_0xc742('0x8')][_0xc742('0x9')]);this['number']=_0x5e5e96['phone'];this[_0xc742('0xa')]=_0x4a9ac9['name'];this[_0xc742('0xb')]=_0x5e5e96[_0xc742('0xb')]||![];this['type']=_0x4a9ac9['type'];this[_0xc742('0xc')]=_0x4a9ac9[_0xc742('0xc')]||0x3;this['scheduledat']=_0x5e5e96[_0xc742('0xd')];this[_0xc742('0xe')]=_0x5e5e96[_0xc742('0xe')];this[_0xc742('0xf')]=_0x5e5e96[_0xc742('0xf')];this[_0xc742('0x10')]=_0x5e5e96[_0xc742('0x10')];this[_0xc742('0x11')]=_0x5e5e96[_0xc742('0x11')];this['countdropretry']=_0x5e5e96[_0xc742('0x12')];this['countabandonedretry']=_0x5e5e96[_0xc742('0x13')];this[_0xc742('0x14')]=_0x5e5e96[_0xc742('0x14')];this[_0xc742('0x15')]=_0x5e5e96['countagentrejectretry'];this[_0xc742('0x16')]=_0x5e5e96['ContactId'];this[_0xc742('0x17')]=_0x5e5e96['ListId'];this[_0xc742('0x18')]=_0x5e5e96[_0xc742('0x18')];this[_0xc742('0x19')]=_0x5e5e96['VoiceQueueId'];this[_0xc742('0x1a')]=_0x5e5e96[_0xc742('0x1a')];this[_0xc742('0x1b')]=_0x5e5e96['id'];this[_0xc742('0x1c')]=_0x5e5e96[_0xc742('0x8')][_0xc742('0x1d')]||'';this['starttime']=moment()[_0xc742('0x1e')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xc742('0x1f')]=_0x5e5e96[_0xc742('0x1f')];this[_0xc742('0x20')]=_0x5e5e96[_0xc742('0x20')];this[_0xc742('0x21')]=_0x5e5e96['callbackat'];this['recallme']=_0x5e5e96[_0xc742('0x22')];this[_0xc742('0x23')]='';this['originatecalleridname']='';}Action[_0xc742('0x24')]['getCaller']=function(){return util[_0xc742('0x1e')](_0xc742('0x25'),this[_0xc742('0x7')],this['voiceQueue']['dialCutDigit']>0x0?this[_0xc742('0x26')][_0xc742('0x27')](this[_0xc742('0x5')]['dialCutDigit']):this['number']);};Action[_0xc742('0x24')][_0xc742('0x28')]=function(){return this[_0xc742('0xa')];};module[_0xc742('0x29')]=Action;
\ No newline at end of file
+var _0x54f0=['phone','firstName','lastName','number','name','active','type','dialQueueTimeout','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','ContactId','ListId','UserId','VoiceQueueId','CampaignId','idHopper','ContactFirstName','starttime','format','YYYY-MM-DD\x20HH:mm:ss','callback','callbackuniqueid','callbackat','recallme','originatecalleridnum','originatecalleridname','getCaller','\x22%s\x22\x20<%s>','dialCutDigit','substring','prototype','getQueue','queue','util','lodash','moment','isNil','voiceQueue','uniqueid','Contact'];(function(_0x2729b0,_0x4fd119){var _0x176a9c=function(_0x4c47e4){while(--_0x4c47e4){_0x2729b0['push'](_0x2729b0['shift']());}};_0x176a9c(++_0x4fd119);}(_0x54f0,0x1a0));var _0x054f=function(_0x1ad0b1,_0x1fb76e){_0x1ad0b1=_0x1ad0b1-0x0;var _0x32811c=_0x54f0[_0x1ad0b1];return _0x32811c;};'use strict';var util=require(_0x054f('0x0'));var _=require(_0x054f('0x1'));var moment=require(_0x054f('0x2'));function checkNameSurname(_0x2beaa7,_0x453a16,_0x658175){var _0x523590='';if(!_[_0x054f('0x3')](_0x453a16)&&'string'===typeof _0x453a16){_0x523590+=_0x453a16;}if(!_['isNil'](_0x658175)&&'string'===typeof _0x658175){_0x523590+='\x20'+_0x658175;}if(_0x523590!==''){return _0x523590;}return _0x2beaa7;}function Action(_0x85918b,_0x1b73fe,_0x2030fd){this[_0x054f('0x4')]=_0x85918b;this[_0x054f('0x5')]=_0x2030fd||undefined;this['name']=checkNameSurname(_0x1b73fe[_0x054f('0x6')][_0x054f('0x7')],_0x1b73fe[_0x054f('0x6')][_0x054f('0x8')],_0x1b73fe[_0x054f('0x6')][_0x054f('0x9')]);this[_0x054f('0xa')]=_0x1b73fe[_0x054f('0x7')];this['queue']=_0x85918b[_0x054f('0xb')];this[_0x054f('0xc')]=_0x1b73fe['active']||![];this[_0x054f('0xd')]=_0x85918b['type'];this[_0x054f('0xe')]=_0x85918b[_0x054f('0xe')]||0x3;this[_0x054f('0xf')]=_0x1b73fe[_0x054f('0xf')];this[_0x054f('0x10')]=_0x1b73fe['countbusyretry'];this[_0x054f('0x11')]=_0x1b73fe[_0x054f('0x11')];this[_0x054f('0x12')]=_0x1b73fe['countnoanswerretry'];this[_0x054f('0x13')]=_0x1b73fe['countnosuchnumberretry'];this[_0x054f('0x14')]=_0x1b73fe[_0x054f('0x14')];this['countabandonedretry']=_0x1b73fe[_0x054f('0x15')];this[_0x054f('0x16')]=_0x1b73fe[_0x054f('0x16')];this[_0x054f('0x17')]=_0x1b73fe['countagentrejectretry'];this[_0x054f('0x18')]=_0x1b73fe[_0x054f('0x18')];this[_0x054f('0x19')]=_0x1b73fe['ListId'];this[_0x054f('0x1a')]=_0x1b73fe[_0x054f('0x1a')];this[_0x054f('0x1b')]=_0x1b73fe[_0x054f('0x1b')];this[_0x054f('0x1c')]=_0x1b73fe['CampaignId'];this[_0x054f('0x1d')]=_0x1b73fe['id'];this[_0x054f('0x1e')]=_0x1b73fe[_0x054f('0x6')]['firstName']||'';this[_0x054f('0x1f')]=moment()[_0x054f('0x20')](_0x054f('0x21'));this['callback']=_0x1b73fe[_0x054f('0x22')];this[_0x054f('0x23')]=_0x1b73fe[_0x054f('0x23')];this[_0x054f('0x24')]=_0x1b73fe['callbackat'];this['recallme']=_0x1b73fe[_0x054f('0x25')];this[_0x054f('0x26')]='';this[_0x054f('0x27')]='';}Action['prototype'][_0x054f('0x28')]=function(){return util[_0x054f('0x20')](_0x054f('0x29'),this[_0x054f('0xb')],this[_0x054f('0x4')][_0x054f('0x2a')]>0x0?this['number'][_0x054f('0x2b')](this['voiceQueue'][_0x054f('0x2a')]):this[_0x054f('0xa')]);};Action[_0x054f('0x2c')][_0x054f('0x2d')]=function(){return this[_0x054f('0x2e')];};module['exports']=Action;
\ No newline at end of file
diff --git a/server/services/ami/dialer/additionalPhone.js b/server/services/ami/dialer/additionalPhone.js
deleted file mode 100644 (file)
index 36a18b0..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-// *************************************************************************
-// *                                                                       *
-// * xCALLY Motion -  The Omnichannel Contact Center                       *
-// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * Email: info@xcally.com                                                *
-// * Website: https://www.xcally.com                                       *
-// *                                                                       *
-// *************************************************************************
-// *                                                                       *
-// * The SOFTWARE PRODUCT is protected by copyright laws and international *
-// * copyright treaties, as well as other intellectual property laws and   *
-// * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
-// *                                                                       *
-// *************************************************************************
-var _0xdf92=['holdtime','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','seconds','uniqueid','scheduledat','type','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','calleridname','calleridnum','number','starttime','responsetime','endtime'];(function(_0x561e73,_0x13a224){var _0x2dc60d=function(_0xe87c37){while(--_0xe87c37){_0x561e73['push'](_0x561e73['shift']());}};_0x2dc60d(++_0x13a224);}(_0xdf92,0x108));var _0x2df9=function(_0x195cd5,_0x5cb95e){_0x195cd5=_0x195cd5-0x0;var _0x460f74=_0xdf92[_0x195cd5];return _0x460f74;};'use strict';var util=require(_0x2df9('0x0'));var _=require(_0x2df9('0x1'));var moment=require(_0x2df9('0x2'));function getSeconds(_0x46a2d6,_0x3a8586){var _0x43a668=moment(_0x46a2d6)['milliseconds'](0x0);var _0xd0ceee=moment(_0x3a8586)[_0x2df9('0x3')](0x0);return _0x43a668['diff'](_0xd0ceee,_0x2df9('0x4'));}function AdditionalPhone(_0x2aba41){this[_0x2df9('0x5')]=_0x2aba41[_0x2df9('0x5')];this[_0x2df9('0x6')]=_0x2aba41['scheduledat']||undefined;this[_0x2df9('0x7')]=_0x2aba41[_0x2df9('0x7')];this['campaigntype']=_0x2aba41[_0x2df9('0x7')]===_0x2df9('0x8')?_0x2df9('0x9'):_0x2aba41['type'];this[_0x2df9('0xa')]=_0x2aba41[_0x2df9('0xa')];this[_0x2df9('0xb')]=_0x2aba41[_0x2df9('0xb')];this['countnoanswerretry']=_0x2aba41[_0x2df9('0xc')];this['countglobal']=_0x2aba41[_0x2df9('0xa')]+_0x2aba41[_0x2df9('0xb')]+_0x2aba41[_0x2df9('0xc')]+_0x2aba41[_0x2df9('0xd')]+_0x2aba41['countdropretry']+_0x2aba41[_0x2df9('0xe')]+_0x2aba41[_0x2df9('0xf')]+_0x2aba41[_0x2df9('0x10')];this[_0x2df9('0xd')]=_0x2aba41[_0x2df9('0xd')];this[_0x2df9('0x11')]=_0x2aba41[_0x2df9('0x11')];this[_0x2df9('0xe')]=_0x2aba41[_0x2df9('0xe')];this[_0x2df9('0xf')]=_0x2aba41['countmachineretry'];this[_0x2df9('0x10')]=_0x2aba41[_0x2df9('0x10')];this[_0x2df9('0x9')]=_0x2aba41[_0x2df9('0x9')];this[_0x2df9('0x12')]=_0x2aba41['name'];this[_0x2df9('0x13')]=_0x2aba41[_0x2df9('0x14')];this[_0x2df9('0x15')]=_0x2aba41[_0x2df9('0x15')];this[_0x2df9('0x16')]=_0x2aba41[_0x2df9('0x16')];this[_0x2df9('0x17')]=_0x2aba41[_0x2df9('0x16')];this['ringtime']=getSeconds(_0x2aba41[_0x2df9('0x16')],_0x2aba41[_0x2df9('0x15')]);this[_0x2df9('0x18')]=0x0;this['talktime']=0x0;this['callback']=_0x2aba41['callback'];this[_0x2df9('0x19')]=_0x2aba41[_0x2df9('0x19')];this[_0x2df9('0x1a')]=_0x2aba41[_0x2df9('0x1a')];this[_0x2df9('0x1b')]=_0x2aba41[_0x2df9('0x1b')];this[_0x2df9('0x1c')]=_0x2aba41[_0x2df9('0x1c')];this[_0x2df9('0x1d')]=_0x2aba41[_0x2df9('0x1d')];this[_0x2df9('0x1e')]=_0x2aba41[_0x2df9('0x1e')];this[_0x2df9('0x1f')]=_0x2aba41['VoiceQueueId'];this['CampaignId']=_0x2aba41[_0x2df9('0x20')];this['originatecalleridnum']=_0x2aba41[_0x2df9('0x21')]||'';this[_0x2df9('0x22')]=_0x2aba41[_0x2df9('0x22')]||'';}module[_0x2df9('0x23')]=History;
\ No newline at end of file
index da03fc5..5d63a3a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1799=['queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','answertime','endtime','holdtime','talktime','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','statedesc','Answer','scheduledat','type'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1799,0x161));var _0x9179=function(_0x157688,_0x1f8309){_0x157688=_0x157688-0x0;var _0x40f2d0=_0x1799[_0x157688];return _0x40f2d0;};'use strict';var util=require(_0x9179('0x0'));var _=require('lodash');var moment=require(_0x9179('0x1'));function getSeconds(_0x2df632,_0x12b848){var _0x3585c4=moment(_0x2df632)[_0x9179('0x2')](0x0);var _0x3eded6=moment(_0x12b848)[_0x9179('0x2')](0x0);return _0x3585c4['diff'](_0x3eded6,'seconds');}function AgentComplete(_0x3131d8,_0x152a78){this['state']=0x4;this[_0x9179('0x3')]=_0x9179('0x4');this[_0x9179('0x5')]=_0x3131d8[_0x9179('0x5')];this[_0x9179('0x6')]=_0x3131d8[_0x9179('0x6')];this['campaigntype']=_0x3131d8[_0x9179('0x6')]==='outbound'?_0x9179('0x7'):_0x3131d8[_0x9179('0x6')];this[_0x9179('0x8')]=_0x3131d8[_0x9179('0x8')];this['countcongestionretry']=_0x3131d8[_0x9179('0x9')];this[_0x9179('0xa')]=_0x3131d8['countnoanswerretry'];this['countglobal']=_0x3131d8[_0x9179('0x8')]+_0x3131d8['countcongestionretry']+_0x3131d8[_0x9179('0xa')]+_0x3131d8[_0x9179('0xb')]+_0x3131d8[_0x9179('0xc')]+_0x3131d8[_0x9179('0xd')]+_0x3131d8[_0x9179('0xe')]+_0x3131d8[_0x9179('0xf')];this[_0x9179('0xb')]=_0x3131d8[_0x9179('0xb')];this[_0x9179('0xc')]=_0x3131d8['countdropretry'];this[_0x9179('0xd')]=_0x3131d8['countabandonedretry'];this[_0x9179('0xe')]=_0x3131d8[_0x9179('0xe')];this[_0x9179('0xf')]=_0x3131d8[_0x9179('0xf')];this[_0x9179('0x10')]=_0x152a78[_0x9179('0x10')];this[_0x9179('0x11')]=_0x3131d8[_0x9179('0x12')];this[_0x9179('0x13')]=_0x3131d8[_0x9179('0x14')];this['starttime']=_0x3131d8[_0x9179('0x15')];this[_0x9179('0x16')]=_0x3131d8[_0x9179('0x16')];this[_0x9179('0x17')]=_0x3131d8[_0x9179('0x17')];this[_0x9179('0x18')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this['ringtime']=getSeconds(_0x3131d8['responsetime'],_0x3131d8[_0x9179('0x15')]);this[_0x9179('0x19')]=getSeconds(_0x3131d8[_0x9179('0x17')],_0x3131d8[_0x9179('0x16')]);this[_0x9179('0x1a')]=getSeconds(this[_0x9179('0x18')],_0x3131d8[_0x9179('0x17')]);this[_0x9179('0x7')]=_0x152a78[_0x9179('0x7')];this['membername']=_0x152a78['membername'];this['reason']=_0x152a78[_0x9179('0x1b')];this[_0x9179('0x1c')]=_0x3131d8[_0x9179('0x1c')];this[_0x9179('0x1d')]=_0x3131d8[_0x9179('0x1d')];this['callbackat']=_0x3131d8[_0x9179('0x1e')];this[_0x9179('0x1f')]=_0x3131d8['recallme'];this['ContactId']=_0x3131d8[_0x9179('0x20')];this['ListId']=_0x3131d8[_0x9179('0x21')];this[_0x9179('0x22')]=_0x3131d8['UserId'];this[_0x9179('0x23')]=_0x3131d8[_0x9179('0x23')];this[_0x9179('0x24')]=_0x3131d8[_0x9179('0x24')];this[_0x9179('0x25')]=_0x3131d8[_0x9179('0x25')]||'';this['originatecalleridname']=_0x3131d8[_0x9179('0x26')]||'';}module[_0x9179('0x27')]=AgentComplete;
\ No newline at end of file
+var _0xeb82=['countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countabandonedretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countdropretry','uniqueid','name','calleridnum','number','starttime','responsetime','answertime','format','YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','talktime','endtime','membername','reason','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','util','lodash','moment','milliseconds','statedesc','Answer','scheduledat','type','campaigntype','outbound','queue'];(function(_0x1cf560,_0x17aa27){var _0x418eb5=function(_0x58e138){while(--_0x58e138){_0x1cf560['push'](_0x1cf560['shift']());}};_0x418eb5(++_0x17aa27);}(_0xeb82,0xdb));var _0x2eb8=function(_0x5bdf69,_0x30770a){_0x5bdf69=_0x5bdf69-0x0;var _0x19b8e0=_0xeb82[_0x5bdf69];return _0x19b8e0;};'use strict';var util=require(_0x2eb8('0x0'));var _=require(_0x2eb8('0x1'));var moment=require(_0x2eb8('0x2'));function getSeconds(_0x2cdc2e,_0x5a77d3){var _0x4b7f12=moment(_0x2cdc2e)[_0x2eb8('0x3')](0x0);var _0x4066c8=moment(_0x5a77d3)[_0x2eb8('0x3')](0x0);return _0x4b7f12['diff'](_0x4066c8,'seconds');}function AgentComplete(_0x234e9c,_0x5dfed0){this['state']=0x4;this[_0x2eb8('0x4')]=_0x2eb8('0x5');this[_0x2eb8('0x6')]=_0x234e9c[_0x2eb8('0x6')];this['type']=_0x234e9c[_0x2eb8('0x7')];this[_0x2eb8('0x8')]=_0x234e9c['type']===_0x2eb8('0x9')?_0x2eb8('0xa'):_0x234e9c[_0x2eb8('0x7')];this['countbusyretry']=_0x234e9c[_0x2eb8('0xb')];this[_0x2eb8('0xc')]=_0x234e9c[_0x2eb8('0xc')];this[_0x2eb8('0xd')]=_0x234e9c[_0x2eb8('0xd')];this[_0x2eb8('0xe')]=_0x234e9c[_0x2eb8('0xb')]+_0x234e9c[_0x2eb8('0xc')]+_0x234e9c[_0x2eb8('0xd')]+_0x234e9c['countnosuchnumberretry']+_0x234e9c['countdropretry']+_0x234e9c[_0x2eb8('0xf')]+_0x234e9c[_0x2eb8('0x10')]+_0x234e9c[_0x2eb8('0x11')];this[_0x2eb8('0x12')]=_0x234e9c[_0x2eb8('0x12')];this[_0x2eb8('0x13')]=_0x234e9c[_0x2eb8('0x13')];this[_0x2eb8('0xf')]=_0x234e9c[_0x2eb8('0xf')];this[_0x2eb8('0x10')]=_0x234e9c[_0x2eb8('0x10')];this['countagentrejectretry']=_0x234e9c[_0x2eb8('0x11')];this[_0x2eb8('0x14')]=_0x5dfed0['uniqueid'];this['calleridname']=_0x234e9c[_0x2eb8('0x15')];this[_0x2eb8('0x16')]=_0x234e9c[_0x2eb8('0x17')];this[_0x2eb8('0x18')]=_0x234e9c[_0x2eb8('0x18')];this[_0x2eb8('0x19')]=_0x234e9c['responsetime'];this['answertime']=_0x234e9c[_0x2eb8('0x1a')];this['endtime']=moment()[_0x2eb8('0x1b')](_0x2eb8('0x1c'));this[_0x2eb8('0x1d')]=getSeconds(_0x234e9c[_0x2eb8('0x19')],_0x234e9c['starttime']);this[_0x2eb8('0x1e')]=getSeconds(_0x234e9c[_0x2eb8('0x1a')],_0x234e9c[_0x2eb8('0x19')]);this[_0x2eb8('0x1f')]=getSeconds(this[_0x2eb8('0x20')],_0x234e9c['answertime']);this[_0x2eb8('0xa')]=_0x5dfed0[_0x2eb8('0xa')];this['membername']=_0x5dfed0[_0x2eb8('0x21')];this[_0x2eb8('0x22')]=_0x5dfed0['reason'];this[_0x2eb8('0x23')]=_0x234e9c[_0x2eb8('0x23')];this['callbackuniqueid']=_0x234e9c[_0x2eb8('0x24')];this[_0x2eb8('0x25')]=_0x234e9c['callbackat'];this[_0x2eb8('0x26')]=_0x234e9c[_0x2eb8('0x26')];this[_0x2eb8('0x27')]=_0x234e9c[_0x2eb8('0x27')];this[_0x2eb8('0x28')]=_0x234e9c[_0x2eb8('0x28')];this['UserId']=_0x234e9c[_0x2eb8('0x29')];this[_0x2eb8('0x2a')]=_0x234e9c[_0x2eb8('0x2a')];this[_0x2eb8('0x2b')]=_0x234e9c[_0x2eb8('0x2b')];this[_0x2eb8('0x2c')]=_0x234e9c['originatecalleridnum']||'';this[_0x2eb8('0x2d')]=_0x234e9c[_0x2eb8('0x2d')]||'';}module['exports']=AgentComplete;
\ No newline at end of file
index cb1a156..f074a71 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4944=['CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','seconds','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','talktime','callback','callbackuniqueid','callbackat','ListId','UserId','VoiceQueueId'];(function(_0x369963,_0x3a6819){var _0x3a1ad8=function(_0x3dd765){while(--_0x3dd765){_0x369963['push'](_0x369963['shift']());}};_0x3a1ad8(++_0x3a6819);}(_0x4944,0x6d));var _0x4494=function(_0x217a68,_0x5b79fd){_0x217a68=_0x217a68-0x0;var _0x284b43=_0x4944[_0x217a68];return _0x284b43;};'use strict';var util=require(_0x4494('0x0'));var _=require('lodash');var moment=require(_0x4494('0x1'));function getSeconds(_0x39932f,_0x2578d3){var _0x138f00=moment(_0x39932f)[_0x4494('0x2')](0x0);var _0x5074d9=moment(_0x2578d3)[_0x4494('0x2')](0x0);return _0x138f00['diff'](_0x5074d9,_0x4494('0x3'));}function Final(_0x1c2a03){this[_0x4494('0x4')]=_0x1c2a03[_0x4494('0x4')];this[_0x4494('0x5')]=_0x1c2a03[_0x4494('0x5')];this[_0x4494('0x6')]=_0x1c2a03[_0x4494('0x6')];this[_0x4494('0x7')]=_0x1c2a03['type']===_0x4494('0x8')?_0x4494('0x9'):_0x1c2a03[_0x4494('0x6')];this[_0x4494('0xa')]=_0x1c2a03['countbusyretry'];this['countcongestionretry']=_0x1c2a03[_0x4494('0xb')];this[_0x4494('0xc')]=_0x1c2a03[_0x4494('0xc')];this['countglobal']=_0x1c2a03['countbusyretry']+_0x1c2a03[_0x4494('0xb')]+_0x1c2a03[_0x4494('0xc')]+_0x1c2a03[_0x4494('0xd')]+_0x1c2a03[_0x4494('0xe')]+_0x1c2a03[_0x4494('0xf')]+_0x1c2a03[_0x4494('0x10')]+_0x1c2a03['countagentrejectretry'];this[_0x4494('0xd')]=_0x1c2a03[_0x4494('0xd')];this[_0x4494('0xe')]=_0x1c2a03[_0x4494('0xe')];this[_0x4494('0xf')]=_0x1c2a03[_0x4494('0xf')];this[_0x4494('0x10')]=_0x1c2a03['countmachineretry'];this[_0x4494('0x11')]=_0x1c2a03['countagentrejectretry'];this['queue']=_0x1c2a03[_0x4494('0x9')];this[_0x4494('0x12')]=_0x1c2a03['calleridname'];this['calleridnum']=_0x1c2a03[_0x4494('0x13')];this['starttime']=_0x1c2a03[_0x4494('0x14')];this[_0x4494('0x15')]=_0x1c2a03['responsetime'];this[_0x4494('0x16')]=_0x1c2a03['responsetime'];this[_0x4494('0x17')]=_0x1c2a03[_0x4494('0x17')]||0x0;this['holdtime']=_0x1c2a03['holdtime']||0x0;this[_0x4494('0x18')]=_0x1c2a03[_0x4494('0x18')]||0x0;this[_0x4494('0x19')]=_0x1c2a03[_0x4494('0x19')];this[_0x4494('0x1a')]=_0x1c2a03[_0x4494('0x1a')];this[_0x4494('0x1b')]=_0x1c2a03[_0x4494('0x1b')];this['recallme']=_0x1c2a03['recallme'];this['ContactId']=_0x1c2a03['ContactId'];this[_0x4494('0x1c')]=_0x1c2a03[_0x4494('0x1c')];this[_0x4494('0x1d')]=_0x1c2a03[_0x4494('0x1d')];this['VoiceQueueId']=_0x1c2a03[_0x4494('0x1e')];this[_0x4494('0x1f')]=_0x1c2a03['CampaignId'];this[_0x4494('0x20')]=_0x1c2a03[_0x4494('0x20')]||'';this[_0x4494('0x21')]=_0x1c2a03['originatecalleridname']||'';}module[_0x4494('0x22')]=Final;
\ No newline at end of file
+var _0x86f4=['scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countabandonedretry','countagentrejectretry','calleridname','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','moment','milliseconds','diff','uniqueid'];(function(_0x8ab4be,_0x1912a6){var _0x427fc5=function(_0x4b8b6d){while(--_0x4b8b6d){_0x8ab4be['push'](_0x8ab4be['shift']());}};_0x427fc5(++_0x1912a6);}(_0x86f4,0x18a));var _0x486f=function(_0x15f380,_0x33465e){_0x15f380=_0x15f380-0x0;var _0x1ed280=_0x86f4[_0x15f380];return _0x1ed280;};'use strict';var util=require(_0x486f('0x0'));var _=require(_0x486f('0x1'));var moment=require(_0x486f('0x2'));function getSeconds(_0xb55dcb,_0x3e0b4f){var _0x10339c=moment(_0xb55dcb)[_0x486f('0x3')](0x0);var _0x53305d=moment(_0x3e0b4f)[_0x486f('0x3')](0x0);return _0x10339c[_0x486f('0x4')](_0x53305d,'seconds');}function Final(_0xe32536){this[_0x486f('0x5')]=_0xe32536[_0x486f('0x5')];this[_0x486f('0x6')]=_0xe32536[_0x486f('0x6')];this[_0x486f('0x7')]=_0xe32536['type'];this[_0x486f('0x8')]=_0xe32536[_0x486f('0x7')]===_0x486f('0x9')?_0x486f('0xa'):_0xe32536[_0x486f('0x7')];this[_0x486f('0xb')]=_0xe32536[_0x486f('0xb')];this[_0x486f('0xc')]=_0xe32536[_0x486f('0xc')];this[_0x486f('0xd')]=_0xe32536[_0x486f('0xd')];this[_0x486f('0xe')]=_0xe32536[_0x486f('0xb')]+_0xe32536[_0x486f('0xc')]+_0xe32536[_0x486f('0xd')]+_0xe32536[_0x486f('0xf')]+_0xe32536[_0x486f('0x10')]+_0xe32536['countabandonedretry']+_0xe32536[_0x486f('0x11')]+_0xe32536['countagentrejectretry'];this[_0x486f('0xf')]=_0xe32536[_0x486f('0xf')];this[_0x486f('0x10')]=_0xe32536['countdropretry'];this['countabandonedretry']=_0xe32536[_0x486f('0x12')];this[_0x486f('0x11')]=_0xe32536['countmachineretry'];this[_0x486f('0x13')]=_0xe32536[_0x486f('0x13')];this[_0x486f('0xa')]=_0xe32536['queue'];this['calleridname']=_0xe32536[_0x486f('0x14')];this[_0x486f('0x15')]=_0xe32536[_0x486f('0x15')];this[_0x486f('0x16')]=_0xe32536['starttime'];this['responsetime']=_0xe32536[_0x486f('0x17')];this[_0x486f('0x18')]=_0xe32536[_0x486f('0x17')];this[_0x486f('0x19')]=_0xe32536[_0x486f('0x19')]||0x0;this[_0x486f('0x1a')]=_0xe32536[_0x486f('0x1a')]||0x0;this[_0x486f('0x1b')]=_0xe32536[_0x486f('0x1b')]||0x0;this[_0x486f('0x1c')]=_0xe32536[_0x486f('0x1c')];this[_0x486f('0x1d')]=_0xe32536[_0x486f('0x1d')];this[_0x486f('0x1e')]=_0xe32536[_0x486f('0x1e')];this[_0x486f('0x1f')]=_0xe32536['recallme'];this[_0x486f('0x20')]=_0xe32536[_0x486f('0x20')];this[_0x486f('0x21')]=_0xe32536[_0x486f('0x21')];this[_0x486f('0x22')]=_0xe32536[_0x486f('0x22')];this[_0x486f('0x23')]=_0xe32536[_0x486f('0x23')];this[_0x486f('0x24')]=_0xe32536[_0x486f('0x24')];this[_0x486f('0x25')]=_0xe32536[_0x486f('0x25')]||'';this[_0x486f('0x26')]=_0xe32536[_0x486f('0x26')]||'';}module[_0x486f('0x27')]=Final;
\ No newline at end of file
index 3a33f91..d8b8d51 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x71ab=['callbackat','ContactId','ListId','VoiceQueueId','CampaignId','exports','util','lodash','moment','milliseconds','diff','seconds','statedesc','Answer','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countdropretry','countmachineretry','countagentrejectretry','countnosuchnumberretry','countabandonedretry','uniqueid','calleridname','name','calleridnum','starttime','responsetime','format','ringtime','holdtime','talktime','endtime','membername','reason','cause-txt','callback','callbackuniqueid'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x71ab,0x192));var _0xb71a=function(_0x138adb,_0x193fee){_0x138adb=_0x138adb-0x0;var _0x1b27f2=_0x71ab[_0x138adb];return _0x1b27f2;};'use strict';var util=require(_0xb71a('0x0'));var _=require(_0xb71a('0x1'));var moment=require(_0xb71a('0x2'));function getSeconds(_0x46db7a,_0x120d98){var _0x3def70=moment(_0x46db7a)['milliseconds'](0x0);var _0x5d6626=moment(_0x120d98)[_0xb71a('0x3')](0x0);return _0x3def70[_0xb71a('0x4')](_0x5d6626,_0xb71a('0x5'));}function Hangup(_0x40ec09,_0x84decb){this['state']=0x4;this[_0xb71a('0x6')]=_0xb71a('0x7');this[_0xb71a('0x8')]=_0x40ec09['scheduledat'];this[_0xb71a('0x9')]=_0x40ec09[_0xb71a('0x9')];this[_0xb71a('0xa')]=_0x40ec09[_0xb71a('0x9')]===_0xb71a('0xb')?_0xb71a('0xc'):_0x40ec09[_0xb71a('0x9')];this[_0xb71a('0xd')]=_0x40ec09[_0xb71a('0xd')];this[_0xb71a('0xe')]=_0x40ec09[_0xb71a('0xe')];this[_0xb71a('0xf')]=_0x40ec09[_0xb71a('0xf')];this[_0xb71a('0x10')]=_0x40ec09[_0xb71a('0xd')]+_0x40ec09['countcongestionretry']+_0x40ec09['countnoanswerretry']+_0x40ec09['countnosuchnumberretry']+_0x40ec09[_0xb71a('0x11')]+_0x40ec09['countabandonedretry']+_0x40ec09[_0xb71a('0x12')]+_0x40ec09[_0xb71a('0x13')];this[_0xb71a('0x14')]=_0x40ec09[_0xb71a('0x14')];this[_0xb71a('0x11')]=_0x40ec09[_0xb71a('0x11')];this['countabandonedretry']=_0x40ec09[_0xb71a('0x15')];this[_0xb71a('0x12')]=_0x40ec09[_0xb71a('0x12')];this[_0xb71a('0x13')]=_0x40ec09[_0xb71a('0x13')];this[_0xb71a('0x16')]=_0x84decb['uniqueid'];this[_0xb71a('0x17')]=_0x40ec09[_0xb71a('0x18')];this[_0xb71a('0x19')]=_0x40ec09['number'];this['starttime']=_0x40ec09[_0xb71a('0x1a')];this[_0xb71a('0x1b')]=_0x40ec09[_0xb71a('0x1b')];this['endtime']=moment()[_0xb71a('0x1c')]('YYYY-MM-DD\x20HH:mm:ss');this[_0xb71a('0x1d')]=getSeconds(_0x40ec09[_0xb71a('0x1b')],_0x40ec09[_0xb71a('0x1a')]);this[_0xb71a('0x1e')]=0x0;this[_0xb71a('0x1f')]=getSeconds(this[_0xb71a('0x20')],_0x40ec09[_0xb71a('0x1b')]);this[_0xb71a('0xc')]=_0x40ec09[_0xb71a('0xc')];this[_0xb71a('0x21')]='IVR';this[_0xb71a('0x22')]=_0x84decb[_0xb71a('0x23')];this[_0xb71a('0x24')]=_0x40ec09[_0xb71a('0x24')];this[_0xb71a('0x25')]=_0x40ec09[_0xb71a('0x25')];this['callbackat']=_0x40ec09[_0xb71a('0x26')];this['recallme']=_0x40ec09['recallme'];this[_0xb71a('0x27')]=_0x40ec09['ContactId'];this[_0xb71a('0x28')]=_0x40ec09[_0xb71a('0x28')];this['UserId']=_0x40ec09['UserId'];this[_0xb71a('0x29')]=_0x40ec09['VoiceQueueId'];this[_0xb71a('0x2a')]=_0x40ec09[_0xb71a('0x2a')];}module[_0xb71a('0x2b')]=Hangup;
\ No newline at end of file
+var _0x8f66=['YYYY-MM-DD\x20HH:mm:ss','ringtime','holdtime','endtime','queue','IVR','cause-txt','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','VoiceQueueId','CampaignId','exports','util','lodash','moment','milliseconds','diff','seconds','state','statedesc','Answer','scheduledat','type','campaigntype','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','format'];(function(_0x40049f,_0x44c269){var _0x89a3c0=function(_0x50c6ca){while(--_0x50c6ca){_0x40049f['push'](_0x40049f['shift']());}};_0x89a3c0(++_0x44c269);}(_0x8f66,0xf1));var _0x68f6=function(_0x16b55f,_0x301c6c){_0x16b55f=_0x16b55f-0x0;var _0x391c2f=_0x8f66[_0x16b55f];return _0x391c2f;};'use strict';var util=require(_0x68f6('0x0'));var _=require(_0x68f6('0x1'));var moment=require(_0x68f6('0x2'));function getSeconds(_0x8c1afc,_0x5bc616){var _0x3bcaa2=moment(_0x8c1afc)[_0x68f6('0x3')](0x0);var _0x2fba5d=moment(_0x5bc616)[_0x68f6('0x3')](0x0);return _0x3bcaa2[_0x68f6('0x4')](_0x2fba5d,_0x68f6('0x5'));}function Hangup(_0x87fc75,_0x11b122){this[_0x68f6('0x6')]=0x4;this[_0x68f6('0x7')]=_0x68f6('0x8');this[_0x68f6('0x9')]=_0x87fc75[_0x68f6('0x9')];this['type']=_0x87fc75[_0x68f6('0xa')];this[_0x68f6('0xb')]=_0x87fc75['type']==='outbound'?'queue':_0x87fc75['type'];this[_0x68f6('0xc')]=_0x87fc75[_0x68f6('0xc')];this[_0x68f6('0xd')]=_0x87fc75[_0x68f6('0xd')];this[_0x68f6('0xe')]=_0x87fc75[_0x68f6('0xe')];this[_0x68f6('0xf')]=_0x87fc75[_0x68f6('0xc')]+_0x87fc75[_0x68f6('0xd')]+_0x87fc75[_0x68f6('0xe')]+_0x87fc75[_0x68f6('0x10')]+_0x87fc75[_0x68f6('0x11')]+_0x87fc75[_0x68f6('0x12')]+_0x87fc75[_0x68f6('0x13')]+_0x87fc75[_0x68f6('0x14')];this[_0x68f6('0x10')]=_0x87fc75['countnosuchnumberretry'];this[_0x68f6('0x11')]=_0x87fc75[_0x68f6('0x11')];this[_0x68f6('0x12')]=_0x87fc75[_0x68f6('0x12')];this[_0x68f6('0x13')]=_0x87fc75['countmachineretry'];this[_0x68f6('0x14')]=_0x87fc75['countagentrejectretry'];this['uniqueid']=_0x11b122[_0x68f6('0x15')];this[_0x68f6('0x16')]=_0x87fc75[_0x68f6('0x17')];this[_0x68f6('0x18')]=_0x87fc75[_0x68f6('0x19')];this[_0x68f6('0x1a')]=_0x87fc75[_0x68f6('0x1a')];this[_0x68f6('0x1b')]=_0x87fc75['responsetime'];this['endtime']=moment()[_0x68f6('0x1c')](_0x68f6('0x1d'));this[_0x68f6('0x1e')]=getSeconds(_0x87fc75[_0x68f6('0x1b')],_0x87fc75['starttime']);this[_0x68f6('0x1f')]=0x0;this['talktime']=getSeconds(this[_0x68f6('0x20')],_0x87fc75['responsetime']);this['queue']=_0x87fc75[_0x68f6('0x21')];this['membername']=_0x68f6('0x22');this['reason']=_0x11b122[_0x68f6('0x23')];this['callback']=_0x87fc75[_0x68f6('0x24')];this[_0x68f6('0x25')]=_0x87fc75[_0x68f6('0x25')];this[_0x68f6('0x26')]=_0x87fc75[_0x68f6('0x26')];this[_0x68f6('0x27')]=_0x87fc75[_0x68f6('0x27')];this[_0x68f6('0x28')]=_0x87fc75['ContactId'];this[_0x68f6('0x29')]=_0x87fc75['ListId'];this['UserId']=_0x87fc75['UserId'];this[_0x68f6('0x2a')]=_0x87fc75['VoiceQueueId'];this[_0x68f6('0x2b')]=_0x87fc75[_0x68f6('0x2b')];}module[_0x68f6('0x2c')]=Hangup;
\ No newline at end of file
index 297714b..ae5caf5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5a61=['responsetime','endtime','ringtime','holdtime','talktime','callback','callbackuniqueid','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','milliseconds','diff','uniqueid','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry','countmachineretry','countabandonedretry','countagentrejectretry','calleridname','number','starttime'];(function(_0x2da3b9,_0x43f25e){var _0x759774=function(_0x514354){while(--_0x514354){_0x2da3b9['push'](_0x2da3b9['shift']());}};_0x759774(++_0x43f25e);}(_0x5a61,0x1f1));var _0x15a6=function(_0x582d3f,_0x4ec860){_0x582d3f=_0x582d3f-0x0;var _0x4f3c88=_0x5a61[_0x582d3f];return _0x4f3c88;};'use strict';var util=require(_0x15a6('0x0'));var _=require('lodash');var moment=require('moment');function getSeconds(_0x51de51,_0x16f05e){var _0x460ca3=moment(_0x51de51)[_0x15a6('0x1')](0x0);var _0x76c2f1=moment(_0x16f05e)[_0x15a6('0x1')](0x0);return _0x460ca3[_0x15a6('0x2')](_0x76c2f1,'seconds');}function History(_0x1bcc15){this[_0x15a6('0x3')]=_0x1bcc15[_0x15a6('0x3')];this[_0x15a6('0x4')]=_0x1bcc15[_0x15a6('0x4')]||undefined;this[_0x15a6('0x5')]=_0x1bcc15['type'];this[_0x15a6('0x6')]=_0x1bcc15['type']===_0x15a6('0x7')?_0x15a6('0x8'):_0x1bcc15['type'];this[_0x15a6('0x9')]=_0x1bcc15[_0x15a6('0x9')];this[_0x15a6('0xa')]=_0x1bcc15[_0x15a6('0xa')];this[_0x15a6('0xb')]=_0x1bcc15[_0x15a6('0xb')];this[_0x15a6('0xc')]=_0x1bcc15[_0x15a6('0x9')]+_0x1bcc15['countcongestionretry']+_0x1bcc15[_0x15a6('0xb')]+_0x1bcc15[_0x15a6('0xd')]+_0x1bcc15[_0x15a6('0xe')]+_0x1bcc15['countabandonedretry']+_0x1bcc15[_0x15a6('0xf')]+_0x1bcc15['countagentrejectretry'];this[_0x15a6('0xd')]=_0x1bcc15[_0x15a6('0xd')];this[_0x15a6('0xe')]=_0x1bcc15['countdropretry'];this[_0x15a6('0x10')]=_0x1bcc15[_0x15a6('0x10')];this['countmachineretry']=_0x1bcc15[_0x15a6('0xf')];this['countagentrejectretry']=_0x1bcc15[_0x15a6('0x11')];this[_0x15a6('0x8')]=_0x1bcc15[_0x15a6('0x8')];this[_0x15a6('0x12')]=_0x1bcc15['name'];this['calleridnum']=_0x1bcc15[_0x15a6('0x13')];this[_0x15a6('0x14')]=_0x1bcc15[_0x15a6('0x14')];this[_0x15a6('0x15')]=_0x1bcc15[_0x15a6('0x15')];this[_0x15a6('0x16')]=_0x1bcc15[_0x15a6('0x15')];this[_0x15a6('0x17')]=getSeconds(_0x1bcc15[_0x15a6('0x15')],_0x1bcc15[_0x15a6('0x14')]);this[_0x15a6('0x18')]=0x0;this[_0x15a6('0x19')]=0x0;this[_0x15a6('0x1a')]=_0x1bcc15[_0x15a6('0x1a')];this['callbackuniqueid']=_0x1bcc15[_0x15a6('0x1b')];this['callbackat']=_0x1bcc15['callbackat'];this[_0x15a6('0x1c')]=_0x1bcc15[_0x15a6('0x1c')];this[_0x15a6('0x1d')]=_0x1bcc15['ContactId'];this[_0x15a6('0x1e')]=_0x1bcc15[_0x15a6('0x1e')];this[_0x15a6('0x1f')]=_0x1bcc15[_0x15a6('0x1f')];this[_0x15a6('0x20')]=_0x1bcc15[_0x15a6('0x20')];this[_0x15a6('0x21')]=_0x1bcc15[_0x15a6('0x21')];this[_0x15a6('0x22')]=_0x1bcc15[_0x15a6('0x22')]||'';this[_0x15a6('0x23')]=_0x1bcc15[_0x15a6('0x23')]||'';}module[_0x15a6('0x24')]=History;
\ No newline at end of file
+var _0xa468=['outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','name','calleridnum','starttime','responsetime','endtime','ringtime','holdtime','talktime','callback','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','moment','milliseconds','diff','uniqueid','scheduledat','type','campaigntype'];(function(_0xc00a41,_0x100f65){var _0x20eb37=function(_0x3034c9){while(--_0x3034c9){_0xc00a41['push'](_0xc00a41['shift']());}};_0x20eb37(++_0x100f65);}(_0xa468,0x1e3));var _0x8a46=function(_0x3bf83f,_0x181cac){_0x3bf83f=_0x3bf83f-0x0;var _0x22c4a9=_0xa468[_0x3bf83f];return _0x22c4a9;};'use strict';var util=require('util');var _=require('lodash');var moment=require(_0x8a46('0x0'));function getSeconds(_0x84c24e,_0x536838){var _0x10ee91=moment(_0x84c24e)[_0x8a46('0x1')](0x0);var _0x177fe7=moment(_0x536838)[_0x8a46('0x1')](0x0);return _0x10ee91[_0x8a46('0x2')](_0x177fe7,'seconds');}function History(_0x5b629b){this[_0x8a46('0x3')]=_0x5b629b['uniqueid'];this[_0x8a46('0x4')]=_0x5b629b['scheduledat']||undefined;this[_0x8a46('0x5')]=_0x5b629b[_0x8a46('0x5')];this[_0x8a46('0x6')]=_0x5b629b['type']===_0x8a46('0x7')?_0x8a46('0x8'):_0x5b629b[_0x8a46('0x5')];this[_0x8a46('0x9')]=_0x5b629b[_0x8a46('0x9')];this[_0x8a46('0xa')]=_0x5b629b[_0x8a46('0xa')];this[_0x8a46('0xb')]=_0x5b629b[_0x8a46('0xb')];this['countglobal']=_0x5b629b[_0x8a46('0x9')]+_0x5b629b['countcongestionretry']+_0x5b629b['countnoanswerretry']+_0x5b629b[_0x8a46('0xc')]+_0x5b629b['countdropretry']+_0x5b629b[_0x8a46('0xd')]+_0x5b629b[_0x8a46('0xe')]+_0x5b629b[_0x8a46('0xf')];this[_0x8a46('0xc')]=_0x5b629b[_0x8a46('0xc')];this[_0x8a46('0x10')]=_0x5b629b['countdropretry'];this[_0x8a46('0xd')]=_0x5b629b[_0x8a46('0xd')];this[_0x8a46('0xe')]=_0x5b629b[_0x8a46('0xe')];this[_0x8a46('0xf')]=_0x5b629b[_0x8a46('0xf')];this[_0x8a46('0x8')]=_0x5b629b[_0x8a46('0x8')];this['calleridname']=_0x5b629b[_0x8a46('0x11')];this[_0x8a46('0x12')]=_0x5b629b['number'];this[_0x8a46('0x13')]=_0x5b629b[_0x8a46('0x13')];this[_0x8a46('0x14')]=_0x5b629b[_0x8a46('0x14')];this[_0x8a46('0x15')]=_0x5b629b[_0x8a46('0x14')];this[_0x8a46('0x16')]=getSeconds(_0x5b629b[_0x8a46('0x14')],_0x5b629b[_0x8a46('0x13')]);this[_0x8a46('0x17')]=0x0;this[_0x8a46('0x18')]=0x0;this[_0x8a46('0x19')]=_0x5b629b[_0x8a46('0x19')];this['callbackuniqueid']=_0x5b629b['callbackuniqueid'];this[_0x8a46('0x1a')]=_0x5b629b[_0x8a46('0x1a')];this[_0x8a46('0x1b')]=_0x5b629b['recallme'];this[_0x8a46('0x1c')]=_0x5b629b[_0x8a46('0x1c')];this[_0x8a46('0x1d')]=_0x5b629b['ListId'];this[_0x8a46('0x1e')]=_0x5b629b[_0x8a46('0x1e')];this[_0x8a46('0x1f')]=_0x5b629b['VoiceQueueId'];this[_0x8a46('0x20')]=_0x5b629b['CampaignId'];this[_0x8a46('0x21')]=_0x5b629b[_0x8a46('0x21')]||'';this[_0x8a46('0x22')]=_0x5b629b['originatecalleridname']||'';}module['exports']=History;
\ No newline at end of file
index 6e67a65..20d1b57 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x55ae=['[unlock3][syncQueueStatusComplete]','syncCampaigns','checkIsTrunkReachable','\x20trunk\x20is\x20not\x20reachable','checkIfTime','ifTime','Failure','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','timezones','\x20Timezone\x20unknow\x20','isArray','command','iftime\x20%s,%s','interval','indexOf','true','content','all','INTERVAL_IS_OVERTIME','Global:\x20','Timezone:\x20','power','handlePower','dialPowerLevel','Queue','method\x20not\x20recognized','handlePreviewRecallNotifications','Agent','user:%s','user:dialPreviewRecallReminder','dialTimezone','checkIfTimeIntervals','[syncQueueSummary]','dialPreviewRecallmeReminder','checkPreviewRecallReminder','dialGlobalInterval','[syncCampaigns]','\x5cw{0,','pow','replace','match','voiceQueue\x20is\x20undefine','phone','originate','contact\x20is\x20undefine','getCaller','NONE','\x22agi://%s/square,%s\x22','\x22%s,%s%s,,,%s\x22','dialQueueOptions','dialAgiAfterHangupAgent','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','dialAMDTotalAnalysisTime','XMD-AMDMINWORDLENGTH','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','XMD-VOICEQUEUEID','Contact','tags','createdAt','%s%s','XMD-','toUpper','callerid','TrunkBackup','XMD-ORIGINATECALLERIDNAME','originatecalleridname','XMD-ORIGINATECALLERIDNUM','SIP/%s/%s%s','trim','dialCutDigit','from-sip','outboundOriginateFailureCallsDay','[originateError]:\x20%s','OriginateError','[originate][error]','originate\x20action\x20Error','syncOriginateResponse','getQueue','response','[callProgressDetecting]\x20','checkRetriveMax','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyRetryFrequency','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialDropMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','callProgressDetecting','object','[callProgressDetecting]','NoSuchNumber','custom:agentnosuchnumber','nosuchnumber','dialNoSuchNumberMaxRetry','reason\x200\x20no\x20such\x20number....','outboundNoAnswerCallsDay','NoAnswer','custom:agentnoanswer','noanswer','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','custom:agentbusy','busy','[syncAgentComplete][createHistory][5]','dialBusyMaxRetry','reason\x205\x20busy','Congestion','custom:agentcongestion','reason\x208\x20congestion','outboundAbandonedCallsDay','[syncAgentComplete][createHistory][11]','reason\x2011\x20abandoned','outboundRejectCallsDay','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','Global','Success','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','predictiveIntervalMaxThreshold','round','predictiveIntervalMinThreshold','floor','[startMethodPredictive][StartProgressive]','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','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(','abandonmentRate','agentBusyFactor','Unknown\x20Predictive','[getDataPredictive]','getDataPredictiveOld','[CatchErlangB]','outboundQueuePauses','predictiveIntervalHitRate','busyFactor','check\x20failure','one\x20call\x20every:','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','UserId','recallme','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','queuestatus','[unlockOriginate][syncQueueStatusComplete]','actionOriginate','scheduledat','dialRecallMeTimeout','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RECALLINQUEUE','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','BLACKLIST','Blacklist','[Originate][historyBlacklist]','inBlackList','dialOrderByScheduledAt','RUNNING','ivrTotalCallsDays','[actionOriginate]\x20','loggerHandler','dialLimitQueue','not_inuse','Contact.phone','[getContactDialer2]','tryOriginatePredictive','[countReScheduled]\x20','[actionOriginatePredictive]\x20','--------\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]','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','[busyFactor]','m\x20=\x20','Umin\x20=\x20','exports','bluebird','uuid','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','booked','predictive','../ami','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperFinal','../rpc/cmHopperAdditionalPhone','./action','./history','./final','./agentComplete','./queueCallerAbandon','./hangup','env','XCALLY_IP_AGI','127.0.0.1','rrmemory','prototype','enqueue','tail','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','contactsId','optionPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','syncAgentConnect','bind','queuecallerabandon','syncQueueCallerAbandon','syncAgentComplete','syncQueueSummary','hangup','syncHangup','newexten','syncNewExten','varset','syncVarSet','queuemember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','then','previewRecallmeReminderInterval','message','AGENTS_NOT_LOGGED','name','\x20AGENTS\x20NOT\x20LOGGED','NOT_ACTIVE','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','\x20INTERVAL_IS_NULL','Intervals','isEmpty','Error','stringify','milliseconds','diff','emit','type','strategy','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','total','unmanaged','abandoned','waiting','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangBusyFactor','startPredictive','Trunk','voice:queue:%s','ivr','campaign:ivr:%s','campaign:save','-----\x20Stats\x20Predictive\x20---','info','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','predictiveIntervalDroppedCallsTimeout','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:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','isUndefined','Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','One\x20call\x20every:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','erlangAbandonmentRate','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','merge','seconds','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','outbound','string','\x22%s\x22\x20<%s>','format','error','inspect','stack','undefined','[decremetOriginate]\x20object\x20originated\x20is\x20negative','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','contactsRescheduled','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','sendMessageOneNotActive','talking','[syncQueueSummary]\x20Campaign\x20Queue:\x20','is\x20not\x20active','IS_DISACTIVED','is\x20disactive','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','statedesc','starttime','clearZombieChannels','uniqueId','[actions]','isNil','Action','status','channel','catch','No\x20such\x20channel','updateOriginated','queue','[Dialer][checkChannel]','[Dialer][checkChannel][ivr]','countReScheduled','resolve','checkIsBlackList','[checkIsBlackList]\x20','verifyAdditionalPhones','[verifyAdditionalPhone]\x20','swapAdditionalPhones','[swapAdditionalPhone]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','[averageHandleTime]\x20','rescheduleContact','[rescheduleContact]\x20','unlockContact','[unlockContact]\x20','getContactDialer','temp','[getContactDialer]\x20','getContactDialerIvr','[getContactDialerIvr]\x20','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','[moveContactManagedDialer]\x20','createHistory','[createHistory]\x20','[updateOriginated]\x20is\x20null\x20or\x20undefined','emptyContact','notFound','saveInDb','pick','VoiceQueueId','CampaignId','[emptyContact][createHistory]','isSuccess','isTrunkReachable','active','SIP/%s','reachable','unmonitored','uniqueid','variable','amdstatus','xcally-motion-dialer','dialAMDActive','value','HANGUP','state','membername','AMD','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','Machine','[syncAgentComplete][createHistory][0]','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','dialGlobalMaxRetry','stateGlobal','reason19\x20machine....','dialMachineMaxRetry','createStateFinal','reason\x2019\x20machine....','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','ContactId','ListId','HangupInAMD','[syncHangupInAMDIvr][createHistory]','[syncHangupInAMDIvr]','MACHINE','countglobal','countbusyretry','countdropretry','add','[rescheduleContact][Machine]','[syncHangupIvr][createHistory]','[syncHangupIvr]','AnswerAGI','AGI','dialQueueProject','cause-txt','Unknow','reason','agent','[syncAgentComplete][createHistory]','answertime','queueCallerAbandonCreateState','droptime','responsetime','dialQueueTimeout','Drop','dropreason','TIMEOUT','agiafterat','dialQueueProject2','dialDropRetryFrequency','callAdditionalPhoneAfterMin','additional','[rescheduleContact][Drop]','endtime','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','CALLEREXIT','dialAbandonedRetryFrequency','voiceQueue','dialAbandonedMaxRetry','syncQueueMember','actionid','roundrobin','locked','paused','stateinterface','push','queueStatusComplete','[unlockQueueStatus][undefined]','run','idHopper','[Catch][Preview][syncQueueStatusComplete]','finally','[unlock][syncQueueStatusComplete]','_rr','length','unlockRR','[booked][RR]','contactAgent-idHopper:\x20','[booked][RR][finaly]','Agent:\x20','[booked][unlock]','[booked][unlock2]','[unlock2][syncQueueStatusComplete]','[booked][unlock3]'];(function(_0x217d9a,_0xf7ab1a){var _0x2f5b8a=function(_0x569865){while(--_0x569865){_0x217d9a['push'](_0x217d9a['shift']());}};_0x2f5b8a(++_0xf7ab1a);}(_0x55ae,0xde));var _0xe55a=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x55ae[_0x20a584];return _0x4b41a8;};'use strict';var util=require('util');var _=require('lodash');var BPromise=require(_0xe55a('0x0'));var uuid=require(_0xe55a('0x1'));var moment=require('moment');var rr=require('rr');var md5=require(_0xe55a('0x2'));var Redis=require(_0xe55a('0x3'));var ut=require(_0xe55a('0x4'));var config=require(_0xe55a('0x5'));var logger=require(_0xe55a('0x6'))('dialer');var loggerBooked=require('../../../config/logger')(_0xe55a('0x7'));var loggerPredictive=require(_0xe55a('0x6'))(_0xe55a('0x8'));var loggerPredictiveCalls=require(_0xe55a('0x6'))('predictiveCalls');var loggerSyncQueueSummary=require(_0xe55a('0x6'))('syncQueueSummary');var ami=require(_0xe55a('0x9'));config[_0xe55a('0xa')]=_[_0xe55a('0xb')](config[_0xe55a('0xa')],{'host':_0xe55a('0xc'),'port':0x18eb});var io=require(_0xe55a('0xd'))(new Redis(config[_0xe55a('0xa')]));var cmHopper=require(_0xe55a('0xe'));var cmHopperHistory=require(_0xe55a('0xf'));var cmHopperFinal=require(_0xe55a('0x10'));var cmHopperAdditionalPhone=require(_0xe55a('0x11'));var cmHopperBlack=require('../rpc/cmHopperBlack');var voiceQueueRt=require('../rpc/voiceQueueRt');var RpcSetting=require('../rpc/setting');var Action=require(_0xe55a('0x12'));var History=require(_0xe55a('0x13'));var Final=require(_0xe55a('0x14'));var AgentComplete=require(_0xe55a('0x15'));var QueueCallerAbandon=require(_0xe55a('0x16'));var Hangup=require(_0xe55a('0x17'));var ipAgi=process[_0xe55a('0x18')][_0xe55a('0x19')]||_0xe55a('0x1a');var strategy={'rrmemory':_0xe55a('0x1b'),'roundrobin':'roundrobin'};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence[_0xe55a('0x1c')][_0xe55a('0x1d')]=function(_0x230562){this[_0xe55a('0x1e')]=this[_0xe55a('0x1e')]?this[_0xe55a('0x1e')]['finally'](_0x230562):_0x230562();};function Dialer(_0x8db4df,_0x2834e8){this[_0xe55a('0x1f')]=new Sequence();this[_0xe55a('0x20')]=_0x2834e8;this[_0xe55a('0x21')]=_0x8db4df[_0xe55a('0x21')];this[_0xe55a('0x22')]=_0x8db4df[_0xe55a('0x22')];this[_0xe55a('0x23')]=_0x8db4df[_0xe55a('0x23')];this[_0xe55a('0x24')]=_0x8db4df[_0xe55a('0x24')];this['maxNumberOriginate']=config[_0xe55a('0x25')]||0x2;this[_0xe55a('0x26')]={};this[_0xe55a('0x27')]={};this[_0xe55a('0x28')]={};this['uniqueId']={};this[_0xe55a('0x29')]={};this['startPredictive']={};this[_0xe55a('0x2a')]={};this[_0xe55a('0x2b')]={};this[_0xe55a('0x2c')]={};this[_0xe55a('0x2d')]={};ami['on'](_0xe55a('0x2e'),this[_0xe55a('0x2f')][_0xe55a('0x30')](this));ami['on'](_0xe55a('0x31'),this[_0xe55a('0x32')][_0xe55a('0x30')](this));ami['on']('originateresponse',this['syncOriginateResponse']['bind'](this));ami['on']('agentcomplete',this[_0xe55a('0x33')][_0xe55a('0x30')](this));ami['on']('custom:queuesummary',this[_0xe55a('0x34')][_0xe55a('0x30')](this));ami['on'](_0xe55a('0x35'),this[_0xe55a('0x36')][_0xe55a('0x30')](this));ami['on'](_0xe55a('0x37'),this[_0xe55a('0x38')][_0xe55a('0x30')](this));ami['on'](_0xe55a('0x39'),this[_0xe55a('0x3a')][_0xe55a('0x30')](this));ami['on'](_0xe55a('0x3b'),this['syncQueueMember'][_0xe55a('0x30')](this));ami['on'](_0xe55a('0x3c'),this[_0xe55a('0x3d')]['bind'](this));this[_0xe55a('0x3e')]();this[_0xe55a('0x3f')]();RpcSetting['getSettings']()[_0xe55a('0x40')](function(_0x58c5eb){previewRecallmeReminderInterval=_0x58c5eb[_0xe55a('0x41')];});}function isNotNull(_0x13f4c2){return _0x13f4c2!==null&&!_['isUndefined'](_0x13f4c2);}function checkIsLoggedIn(_0x135a13,_0x4526f5){return function(){if(_0x4526f5<=0x0){_0x135a13[_0xe55a('0x42')]=_0xe55a('0x43');throw _0x135a13[_0xe55a('0x44')]+_0xe55a('0x45');}};}function isActive(_0x3c8d6c){return _0x3c8d6c;}function checkIsActive(_0x42e14b,_0x45b5cd){return function(){if(!isActive(_0x45b5cd)){_0x42e14b[_0xe55a('0x42')]=_0xe55a('0x46');throw _0x42e14b['name']+_0xe55a('0x47');}};}function checkInterval(_0x4e393c){return function(){if(!isNotNull(_0x4e393c[_0xe55a('0x48')])){_0x4e393c[_0xe55a('0x42')]=_0xe55a('0x49');throw _0x4e393c[_0xe55a('0x44')]+_0xe55a('0x4a');}if(!isNotNull(_0x4e393c[_0xe55a('0x48')][_0xe55a('0x4b')])){_0x4e393c[_0xe55a('0x42')]=_0xe55a('0x49');throw _0x4e393c[_0xe55a('0x44')]+_0xe55a('0x4a');}if(!isNotNull(_[_0xe55a('0x4c')](_0x4e393c['Interval']['Intervals']))){_0x4e393c[_0xe55a('0x42')]=_0xe55a('0x49');throw _0x4e393c[_0xe55a('0x44')]+_0xe55a('0x4a');}};}function msgResponse(_0x2b9780,_0x23f024,_0x591ff2){return{'action':_0x2b9780,'response':_0x23f024,'message':_0x591ff2,'stack':_0x591ff2};}function myreject(_0x250b60){return function(_0x3d49f2){return _0x250b60(msgResponse('[ifTime][Action]',_0xe55a('0x4d'),JSON[_0xe55a('0x4e')](_0x3d49f2)));};}function getSeconds(_0x3dfff7,_0x3a3f4b){var _0x2f54c7=moment(_0x3dfff7)['milliseconds'](0x0);var _0x45ae8d=moment(_0x3a3f4b)[_0xe55a('0x4f')](0x0);return _0x2f54c7[_0xe55a('0x50')](_0x45ae8d,'seconds');}function emit(_0x32e58e,_0x18b8ba,_0x384be2){io['to'](_0x32e58e)[_0xe55a('0x51')](_0x18b8ba,_0x384be2);}function emitVoiceQueueSummary(_0x46e469){if(_0x46e469[_0xe55a('0x52')]==='outbound'){var _0x3ca221={'id':_0x46e469['id'],'name':_0x46e469[_0xe55a('0x44')],'strategy':_0x46e469[_0xe55a('0x53')],'answered':_0x46e469['answered'],'available':_0x46e469[_0xe55a('0x54')],'loggedIn':_0x46e469[_0xe55a('0x55')],'pTalking':_0x46e469[_0xe55a('0x56')],'sumBillable':_0x46e469[_0xe55a('0x57')],'sumDuration':_0x46e469[_0xe55a('0x58')],'sumHoldTime':_0x46e469[_0xe55a('0x59')]||0x0,'talking':_0x46e469['talking'],'total':_0x46e469[_0xe55a('0x5a')],'type':_0x46e469[_0xe55a('0x52')],'unmanaged':_0x46e469[_0xe55a('0x5b')],'abandoned':_0x46e469[_0xe55a('0x5c')],'waiting':_0x46e469[_0xe55a('0x5d')],'loggedInDb':_0x46e469[_0xe55a('0x5e')],'dialActive':_0x46e469[_0xe55a('0x5f')],'dialMethod':_0x46e469[_0xe55a('0x60')],'dialOriginateCallerIdName':_0x46e469[_0xe55a('0x61')],'dialOriginateCallerIdNumber':_0x46e469[_0xe55a('0x62')],'dialOriginateTimeout':_0x46e469[_0xe55a('0x63')],'dialPrefix':_0x46e469[_0xe55a('0x64')],'outboundAnswerAgiCallsDay':_0x46e469[_0xe55a('0x65')],'outboundAnswerCallsDay':_0x46e469[_0xe55a('0x66')],'outboundBlacklistCallsDay':_0x46e469[_0xe55a('0x67')],'outboundBusyCallsDay':_0x46e469['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0x46e469[_0xe55a('0x68')],'outboundDropCallsDayACS':_0x46e469[_0xe55a('0x69')],'outboundDropCallsDayCallersExit':_0x46e469[_0xe55a('0x6a')],'outboundDropCallsDayTimeout':_0x46e469[_0xe55a('0x6b')],'outboundNoAnswerCallsDay':_0x46e469['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x46e469[_0xe55a('0x6c')],'outboundOriginateFailureCallsDay':_0x46e469['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0x46e469['outboundReCallsDay'],'outboundRejectCallsDay':_0x46e469['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0x46e469[_0xe55a('0x6d')],'predictiveIntervalAnsweredCalls':_0x46e469[_0xe55a('0x6e')],'predictiveIntervalAvgHoldtime':_0x46e469[_0xe55a('0x6f')],'predictiveIntervalAvgTalktime':_0x46e469[_0xe55a('0x70')],'predictiveIntervalDroppedCallsCallersExit':_0x46e469[_0xe55a('0x71')],'predictiveIntervalDroppedCallsTimeout':_0x46e469['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0x46e469[_0xe55a('0x72')],'predictiveIntervalErlangCallsDroppedCalls':_0x46e469[_0xe55a('0x73')],'predictiveIntervalHitRate':_0x46e469['predictiveIntervalHitRate'],'predictiveIntervalMultiplicativeFactor':_0x46e469[_0xe55a('0x74')],'predictiveIntervalPauses':_0x46e469[_0xe55a('0x75')],'predictiveIntervalAvailable':_0x46e469[_0xe55a('0x76')],'predictiveIntervalTotalCalls':_0x46e469[_0xe55a('0x77')],'message':_0x46e469['message'],'originated':_0x46e469[_0xe55a('0x78')],'erlangCalls':_0x46e469[_0xe55a('0x79')],'erlangCallToSecond':_0x46e469[_0xe55a('0x7a')],'erlangAbandonmentRate':_0x46e469['erlangAbandonmentRate'],'erlangBusyFactor':_0x46e469[_0xe55a('0x7b')],'startPredictive':_0x46e469[_0xe55a('0x7c')],'startProgressive':_0x46e469['startProgressive']};if(_0x46e469[_0xe55a('0x7d')]){_0x3ca221[_0xe55a('0x7d')]={'id':_0x46e469['Trunk']['id'],'name':_0x46e469[_0xe55a('0x7d')][_0xe55a('0x44')],'active':_0x46e469[_0xe55a('0x7d')]['active'],'callerid':_0x46e469['Trunk']['callerid']};}if(_0x46e469[_0xe55a('0x48')]){_0x3ca221[_0xe55a('0x48')]={'id':_0x46e469[_0xe55a('0x48')]['id'],'name':_0x46e469[_0xe55a('0x48')]['name']};}var _0x25431e=md5(JSON['stringify'](_0x3ca221));if(_0x46e469['md5']!==_0x25431e){_0x46e469[_0xe55a('0x2')]=_0x25431e;emit(util['format'](_0xe55a('0x7e'),_0x3ca221[_0xe55a('0x44')]),'voice_queue:save',_0x3ca221);}}}function emitCampaignSummary(_0x57acb3){if(_0x57acb3['type']===_0xe55a('0x7f')){emit(util['format'](_0xe55a('0x80'),_0x57acb3['name']),_0xe55a('0x81'),_0x57acb3);}}function checkGetDataPredictive(_0x1bb611){if(isNotNull(_0x1bb611)&&!_[_0xe55a('0x4c')](_0x1bb611)){loggerPredictive['info'](_0xe55a('0x82'));loggerPredictive[_0xe55a('0x83')]('Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x1bb611[_0xe55a('0x77')]);loggerPredictive[_0xe55a('0x83')](_0xe55a('0x84'),_0x1bb611['predictiveIntervalAnsweredCalls']);loggerPredictive['info'](_0xe55a('0x85'),_0x1bb611[_0xe55a('0x86')]);loggerPredictive['info'](_0xe55a('0x87'),_0x1bb611['predictiveIntervalDroppedCallsCallersExit']);loggerPredictive[_0xe55a('0x83')](_0xe55a('0x88'),_0x1bb611[_0xe55a('0x6f')]);loggerPredictive[_0xe55a('0x83')](_0xe55a('0x89'),_0x1bb611['predictiveIntervalAvgTalktime']);loggerPredictive[_0xe55a('0x83')](_0xe55a('0x8a'));if(_0x1bb611[_0xe55a('0x77')]>0x0){if(!_['isUndefined'](_0x1bb611[_0xe55a('0x70')])&&_0x1bb611[_0xe55a('0x70')]>0x0){return!![];}loggerPredictive[_0xe55a('0x83')](_0xe55a('0x8b'));if(!_[_0xe55a('0x8c')](_0x1bb611['predictiveIntervalAvgHoldtime'])&&_0x1bb611['predictiveIntervalAvgHoldtime']>0x0){return!![];}loggerPredictive[_0xe55a('0x83')](_0xe55a('0x8d'));}else{loggerPredictive[_0xe55a('0x83')](_0xe55a('0x8e'));}}else{loggerPredictive['info'](_0xe55a('0x8f'));}return![];}function mergeDataErlangB(_0x68eaaa){return function(_0x51d6ab){loggerPredictive[_0xe55a('0x83')]('---------\x20ErlangB\x20---------');loggerPredictive['info']('Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x51d6ab['erlangCalls']);loggerPredictive[_0xe55a('0x83')](_0xe55a('0x90'),_0x51d6ab['erlangCallToSecond']);loggerPredictive[_0xe55a('0x83')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x51d6ab[_0xe55a('0x91')]);loggerPredictive[_0xe55a('0x83')](_0xe55a('0x92'),_0x51d6ab['erlangBusyFactor']);loggerPredictive[_0xe55a('0x83')]('Drop\x20Rate:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x51d6ab[_0xe55a('0x91')]);loggerPredictive[_0xe55a('0x83')](_0xe55a('0x8a'));_[_0xe55a('0x93')](_0x68eaaa,_0x51d6ab);};}function getDiff(_0x47c1ff){var _0x4b99dd=moment()[_0xe55a('0x4f')](0x0);var _0x1d7154=moment(_0x47c1ff)[_0xe55a('0x4f')](0x0);return _0x4b99dd['diff'](_0x1d7154,_0xe55a('0x94'));}function ifInterval(_0x7f0db6,_0x465fb4){if(_[_0xe55a('0x8c')](_0x465fb4)){return![];}return getDiff(_0x465fb4)<_0x7f0db6*0x3c;}function freeVariablesPredictive(_0x34b1d3){if(isNotNull(_0x34b1d3)){if(!_[_0xe55a('0x8c')](_0x34b1d3[_0xe55a('0x2a')])){_0x34b1d3[_0xe55a('0x2a')]=undefined;loggerPredictive[_0xe55a('0x83')](_0x34b1d3['name'],'clearing\x20variable\x20start\x20progressive');}if(!_[_0xe55a('0x8c')](_0x34b1d3['startPredictive'])){_0x34b1d3[_0xe55a('0x7c')]=undefined;loggerPredictive[_0xe55a('0x83')](_0x34b1d3['name'],_0xe55a('0x95'));}if(!_['isUndefined'](_0x34b1d3[_0xe55a('0x96')])){clearInterval(_0x34b1d3[_0xe55a('0x96')]);_0x34b1d3['handlePredictive']=undefined;loggerPredictive[_0xe55a('0x83')](_0x34b1d3[_0xe55a('0x44')],_0xe55a('0x97'));}}}function erlangb(_0x1ae275,_0x5b6b43){if(_0x5b6b43===0x0){return 0x0;}var _0x4c7b34=0x1;for(var _0x3e9ef1=0x1;_0x3e9ef1<=_0x5b6b43;_0x3e9ef1+=0x1){_0x4c7b34=0x1+_0x4c7b34*_0x3e9ef1/_0x1ae275;}return 0x1/_0x4c7b34;}function isVoiceQueueOutbound(_0x1c30f0){return _0x1c30f0===_0xe55a('0x98');}function isNotPreview(_0x354dbe){return _0x354dbe!=='preview';}function isCampaignIvr(_0x5e42d0){return _0x5e42d0===_0xe55a('0x7f');}function getCallerId(_0x22a7f7,_0x568905,_0x408e43){if(!_[_0xe55a('0x8c')](_0x408e43)&&typeof _0x408e43===_0xe55a('0x99')&&!_['isEmpty'](_0x408e43)){if(!_[_0xe55a('0x8c')](_0x568905)&&typeof _0x568905===_0xe55a('0x99')&&!_[_0xe55a('0x4c')](_0x568905)){return util['format'](_0xe55a('0x9a'),_0x568905,_0x408e43);}return util[_0xe55a('0x9b')](_0xe55a('0x9a'),_0x408e43,_0x408e43);}if(!_[_0xe55a('0x8c')](_0x22a7f7)&&typeof _0x22a7f7==='string'&&!_[_0xe55a('0x4c')](_0x22a7f7)){return _0x22a7f7;}return'\x22\x22\x20<>';}function loggerCatchQueueSummary(_0x568fb4,_0x100dac){return function(_0xc59d7d){freeVariablesPredictive(_0x100dac);emitVoiceQueueSummary(_0x100dac);emitCampaignSummary(_0x100dac);loggerSyncQueueSummary[_0xe55a('0x9c')](_0x568fb4,util[_0xe55a('0x9d')](_0xc59d7d,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x3b9d6b,_0xe4c02d){return function(_0x4af75e){loggerPredictive[_0xe55a('0x9c')](_0xe4c02d[_0xe55a('0x44')],_0x3b9d6b);loggerPredictive['error'](_0x4af75e[_0xe55a('0x9e')]);freeVariablesPredictive(_0xe4c02d);};}function loggerCatch(_0x312c15){return function(_0x4dc7ab){logger[_0xe55a('0x9c')](_0x312c15,util['inspect'](_0x4dc7ab,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0x416fd7){return _0x416fd7&&!_['isUndefined'](_0x416fd7)&&_0x416fd7['length']>0x0;}function decremetOriginate(_0x3d5d0d){if(!_[_0xe55a('0x8c')](_0x3d5d0d)&&_0x3d5d0d!==null){if(typeof _0x3d5d0d[_0xe55a('0x78')]!==_0xe55a('0x9f')){if(_0x3d5d0d[_0xe55a('0x78')]>0x0){_0x3d5d0d[_0xe55a('0x78')]-=0x1;}else{logger[_0xe55a('0x9c')](_0xe55a('0xa0'));}}}else{logger['error']('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0x10b7d8,_0x1c1087,_0x4a9839){if(_0x1c1087>_0x4a9839){for(var _0x36774a=0x0;_0x36774a<_0x1c1087-_0x4a9839;_0x36774a+=0x1){decremetOriginate(_0x10b7d8);}}}function loggerGetContactDialer(_0x171805,_0x17fbfd,_0x4fa10a){return function(_0x11cc8c){checkContactLowerLimitOriginate(_0x17fbfd,_0x4fa10a,0x0);logger[_0xe55a('0x9c')](_0x171805,util[_0xe55a('0x9d')](_0x11cc8c,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x3709f0){return function(_0x13a82c){if(isNotNull(_0x13a82c)&&isNotNull(_0x13a82c[0x0])){if(_0x13a82c[0x0]['contactsRescheduled']>0x0){_0x3709f0[_0xe55a('0x42')]=_0xe55a('0xa1');logger['info'](_0xe55a('0xa2')+_0x3709f0['name'],_0x13a82c[0x0][_0xe55a('0xa3')],'contacts');}else{_0x3709f0[_0xe55a('0x42')]=_0xe55a('0xa4');logger[_0xe55a('0x83')](_0xe55a('0xa5')+_0x3709f0[_0xe55a('0x44')]);}}};}function notSendMessagesQueue(_0x2ab391){if(_0x2ab391[_0xe55a('0xa6')]){freeVariablesPredictive(_0x2ab391);if(_0x2ab391[_0xe55a('0x78')]===0x0&&_0x2ab391[_0xe55a('0xa7')]===0x0&&_0x2ab391[_0xe55a('0x5d')]===0x0&&(_0x2ab391['pTalking']||0x0)===0x0){_0x2ab391[_0xe55a('0xa6')]=![];_0x2ab391['available']=0x0;_0x2ab391[_0xe55a('0x42')]=_0xe55a('0x46');loggerSyncQueueSummary[_0xe55a('0x9c')](_0xe55a('0xa8'),_0x2ab391[_0xe55a('0x44')],_0xe55a('0xa9'));}else{_0x2ab391['message']=_0xe55a('0xaa');loggerSyncQueueSummary['error'](_0xe55a('0xa8'),_0x2ab391[_0xe55a('0x44')],_0xe55a('0xab'));}emitVoiceQueueSummary(_0x2ab391);}}function notSendMessagesCampaign(_0x2ecf51){if(_0x2ecf51[_0xe55a('0xa6')]){if(_0x2ecf51[_0xe55a('0x78')]===0x0){_0x2ecf51[_0xe55a('0xa6')]=![];_0x2ecf51[_0xe55a('0x42')]='NOT_ACTIVE';loggerSyncQueueSummary[_0xe55a('0x9c')](_0xe55a('0xac'),_0x2ecf51[_0xe55a('0x44')],_0xe55a('0xa9'));}else{_0x2ecf51[_0xe55a('0x42')]=_0xe55a('0xaa');loggerSyncQueueSummary[_0xe55a('0x9c')](_0xe55a('0xac'),_0x2ecf51[_0xe55a('0x44')],'is\x20disactive');}emitCampaignSummary(_0x2ecf51);}}function createObjHistory(_0x53a0b4,_0x231f0d,_0x50d72b,_0x3dd411,_0x48bd73){_0x53a0b4['message']=_0x50d72b;var _0x200fd3=new Action(_0x53a0b4,_0x231f0d);var _0x2f5b2e=new History(_0x200fd3);_0x2f5b2e['state']=_0x3dd411;_0x2f5b2e[_0xe55a('0xad')]=_0x48bd73;_0x2f5b2e['endtime']=_0x200fd3[_0xe55a('0xae')];return _0x2f5b2e;}Dialer[_0xe55a('0x1c')]['loopClearZombieChannels']=function(){var _0x1bfa78=this;setInterval(function(){_0x1bfa78[_0xe55a('0xaf')](_0x1bfa78[_0xe55a('0xb0')],'[uniqueid]');_0x1bfa78[_0xe55a('0xaf')](_0x1bfa78[_0xe55a('0x27')],_0xe55a('0xb1'));},0x32c8);};Dialer[_0xe55a('0x1c')][_0xe55a('0xaf')]=function(_0x82dba7,_0x123048){var _0x27d16b=this;for(var _0x216553 in _0x82dba7){if(typeof _0x82dba7[_0x216553]!==_0xe55a('0x9f')){this[_0xe55a('0x1f')][_0xe55a('0x1d')](function(){if(!_[_0xe55a('0xb2')](_0x82dba7[_0x216553])){return ami[_0xe55a('0xb3')]({'action':_0xe55a('0xb4'),'channel':_0x82dba7[_0x216553][_0xe55a('0xb5')]})[_0xe55a('0xb6')](function(_0x3f1dff){if(_0x3f1dff[_0xe55a('0x42')]===_0xe55a('0xb7')){setTimeout(function(){if(_0x82dba7[_0x216553]&&_0x82dba7[_0x216553][_0xe55a('0x52')]!=='ivr'){_0x27d16b[_0xe55a('0xb8')](_0x27d16b[_0xe55a('0x21')][_0x82dba7[_0x216553][_0xe55a('0xb9')]]);logger[_0xe55a('0x9c')](_0xe55a('0xba'),_0x123048,_0x216553,_0x82dba7[_0x216553][_0xe55a('0xb9')]);delete _0x82dba7[_0x216553];}if(_0x82dba7[_0x216553]&&_0x82dba7[_0x216553][_0xe55a('0x52')]==='ivr'){_0x27d16b[_0xe55a('0xb8')](_0x27d16b[_0xe55a('0x22')][_0x82dba7[_0x216553]['queue']]);logger['error'](_0xe55a('0xbb'),_0x123048,_0x216553,_0x82dba7[_0x216553][_0xe55a('0xb9')]);delete _0x82dba7[_0x216553];}},0x2328);}});}});}}};Dialer['prototype'][_0xe55a('0xbc')]=function(_0x1c838){return BPromise[_0xe55a('0xbd')]()['then'](cmHopper[_0xe55a('0xbc')](_0x1c838))[_0xe55a('0xb6')](loggerCatch('[countReScheduled]\x20'));};Dialer[_0xe55a('0x1c')][_0xe55a('0xbe')]=function(_0x31d4f1){return BPromise['resolve']()[_0xe55a('0x40')](cmHopperBlack[_0xe55a('0xbe')](_0x31d4f1))['catch'](loggerCatch(_0xe55a('0xbf')));};Dialer[_0xe55a('0x1c')][_0xe55a('0xc0')]=function(_0x5b598d,_0x591276,_0x40106){return BPromise[_0xe55a('0xbd')]()[_0xe55a('0x40')](cmHopperAdditionalPhone[_0xe55a('0xc0')](_0x5b598d,_0x591276,_0x40106))['catch'](loggerCatch(_0xe55a('0xc1')));};Dialer[_0xe55a('0x1c')][_0xe55a('0xc2')]=function(_0x19ef81,_0x3ec03b,_0x5b447a){return BPromise['resolve']()[_0xe55a('0x40')](cmHopperAdditionalPhone[_0xe55a('0xc2')](_0x19ef81,_0x3ec03b,_0x5b447a))['catch'](loggerCatch(_0xe55a('0xc3')));};Dialer[_0xe55a('0x1c')][_0xe55a('0xc4')]=function(_0x4b2099){return BPromise['resolve']()[_0xe55a('0x40')](cmHopperBlack[_0xe55a('0xc4')](_0x4b2099))[_0xe55a('0xb6')](loggerCatch(_0xe55a('0xc5')));};Dialer[_0xe55a('0x1c')][_0xe55a('0xc6')]=function(_0x3f7db1){return BPromise[_0xe55a('0xbd')]()[_0xe55a('0x40')](cmHopperHistory['avgHandleTime'](_0x3f7db1))[_0xe55a('0xb6')](loggerCatch(_0xe55a('0xc7')));};Dialer['prototype']['rescheduleContact']=function(_0x28250c){return BPromise['resolve']()['then'](cmHopper[_0xe55a('0xc8')](_0x28250c))[_0xe55a('0xb6')](loggerCatch(_0xe55a('0xc9')));};Dialer[_0xe55a('0x1c')][_0xe55a('0xca')]=function(_0x3ccdbf,_0xf40fef,_0x409544){return BPromise[_0xe55a('0xbd')]()[_0xe55a('0x40')](cmHopper[_0xe55a('0xca')](_0x3ccdbf,_0xf40fef,_0x409544))[_0xe55a('0xb6')](loggerCatch(_0xe55a('0xcb')));};Dialer[_0xe55a('0x1c')][_0xe55a('0xcc')]=function(_0x3a24ab,_0x2f03a1,_0x17f31c,_0x1e49db,_0x21dd8d){return BPromise['resolve']()[_0xe55a('0x40')](cmHopper['getContactDialer'](_0x3a24ab,_0x2f03a1,_0x17f31c,_0x1e49db))[_0xe55a('0xb6')](function(_0x50dd65){_0x21dd8d[_0xe55a('0xcd')]-=_0x17f31c;_0x21dd8d['temp']=_0x21dd8d[_0xe55a('0xcd')]>0x0?_0x21dd8d[_0xe55a('0xcd')]:0x0;loggerCatch(_0xe55a('0xce'))(_0x50dd65);});};Dialer[_0xe55a('0x1c')][_0xe55a('0xcf')]=function(_0x599e50,_0x310811,_0x4c48eb,_0x450cd0){return BPromise[_0xe55a('0xbd')]()['then'](cmHopper[_0xe55a('0xcf')](_0x599e50,_0x310811,_0x4c48eb))['catch'](function(_0x19e292){_0x450cd0['temp']-=_0x310811;_0x450cd0[_0xe55a('0xcd')]=_0x450cd0[_0xe55a('0xcd')]>0x0?_0x450cd0[_0xe55a('0xcd')]:0x0;loggerCatch(_0xe55a('0xd0'))(_0x19e292);});};Dialer[_0xe55a('0x1c')]['getVoiceQueueRtPauses']=function(_0xc4087d){return BPromise['resolve']()[_0xe55a('0x40')](voiceQueueRt[_0xe55a('0xd1')](_0xc4087d))[_0xe55a('0xb6')](loggerCatch(_0xe55a('0xd2')));};Dialer['prototype']['moveContactManagedDialer']=function(_0x12c1ae){return BPromise[_0xe55a('0xbd')]()['then'](cmHopper[_0xe55a('0xd3')](_0x12c1ae))['catch'](loggerCatch(_0xe55a('0xd4')));};Dialer[_0xe55a('0x1c')][_0xe55a('0xd5')]=function(_0x3b946c){return BPromise['resolve']()[_0xe55a('0x40')](cmHopperHistory['createHistory'](_0x3b946c))['catch'](loggerCatch(_0xe55a('0xd6')));};Dialer[_0xe55a('0x1c')][_0xe55a('0xb8')]=function(_0x8ba0f2){if(!_['isUndefined'](_0x8ba0f2)&&_0x8ba0f2!==null){if(typeof _0x8ba0f2['originated']!=='undefined'){if(_0x8ba0f2[_0xe55a('0x78')]>0x0){_0x8ba0f2[_0xe55a('0x78')]-=0x1;}else{logger[_0xe55a('0x9c')]('[updateOriginated]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0xe55a('0x9c')](_0xe55a('0xd7'));}};Dialer[_0xe55a('0x1c')]['loggerHandler']=function(_0x1ed6a5,_0x5dc732){var _0x79f296=this;return function(_0x2565be){_0x79f296[_0xe55a('0xb8')](_0x5dc732);logger[_0xe55a('0x9c')](_0x1ed6a5,util[_0xe55a('0x9d')](_0x2565be,{'showHidden':![],'depth':null}));};};Dialer[_0xe55a('0x1c')][_0xe55a('0xd8')]=function(_0x1fd017,_0x33a552,_0x359715){var _0x641e91={'state':0x19,'statedesc':_0xe55a('0xd9')};this[_0xe55a('0xb8')](_0x33a552);this[_0xe55a('0xda')](_['merge'](_0x641e91,_[_0xe55a('0xdb')](_0x359715,['ContactId','ListId','UserId',_0xe55a('0xdc'),_0xe55a('0xdd')])),_0xe55a('0xde'),'[emptyContact]');logger[_0xe55a('0x9c')](_0x1fd017);};Dialer['prototype'][_0xe55a('0xdf')]=function(_0x36f436){return _0x36f436==='Success';};Dialer['prototype'][_0xe55a('0xe0')]=function(_0x218d58){return!_['isUndefined'](_0x218d58)&&_0x218d58&&!_[_0xe55a('0x8c')](_0x218d58[_0xe55a('0x44')])&&!_[_0xe55a('0x8c')](_0x218d58[_0xe55a('0xe1')])&&_0x218d58[_0xe55a('0xe1')]&&(this[_0xe55a('0x24')][util[_0xe55a('0x9b')](_0xe55a('0xe2'),_0x218d58[_0xe55a('0x44')])]['status']===_0xe55a('0xe3')||this[_0xe55a('0x24')][util['format']('SIP/%s',_0x218d58[_0xe55a('0x44')])][_0xe55a('0xb4')]===_0xe55a('0xe4'));};Dialer[_0xe55a('0x1c')]['saveInDb']=function(_0x4ea267,_0x400527,_0x4c19c9){this[_0xe55a('0xd5')](_0x4ea267)[_0xe55a('0xb6')](loggerCatch(_0x400527));this[_0xe55a('0xd3')](_0x4ea267)[_0xe55a('0xb6')](loggerCatch(_0x4c19c9));};Dialer['prototype'][_0xe55a('0x3a')]=function(_0x2812ad){var _0x4c52f2=this['uniqueId'][_0x2812ad[_0xe55a('0xe5')]];var _0x2eb641;if(!_[_0xe55a('0xb2')](_0x2812ad)&&!_[_0xe55a('0xb2')](_0x2812ad['variable'])&&!_[_0xe55a('0xb2')](_0x2812ad[_0xe55a('0xe6')][_0xe55a('0xe7')])&&_0x2812ad['exten']===_0xe55a('0xe8')&&_0x4c52f2){if(_0x4c52f2[_0xe55a('0x52')]!==_0xe55a('0x7f')&&this[_0xe55a('0x21')][_0x4c52f2[_0xe55a('0xb9')]][_0xe55a('0xe9')]&&_0x2812ad[_0xe55a('0xea')]===_0xe55a('0xeb')){delete this[_0xe55a('0xb0')][_0x2812ad[_0xe55a('0xe5')]];this[_0xe55a('0xb8')](this['voiceQueues'][_0x4c52f2['queue']]);this[_0xe55a('0x21')][_0x4c52f2['queue']]['outboundAnswerCallsDay']+=0x1;this[_0xe55a('0x21')][_0x4c52f2[_0xe55a('0xb9')]]['outboundAnswerAgiCallsDay']+=0x1;_0x2eb641=new Hangup(_0x4c52f2,_0x2812ad);_0x2eb641[_0xe55a('0xec')]=0x12;_0x2eb641[_0xe55a('0xad')]='HangupInAMD';_0x2eb641[_0xe55a('0xed')]=_0xe55a('0xee');ami[_0xe55a('0x51')](_0xe55a('0xef'),ut[_0xe55a('0xf0')](_0x2eb641,_0xe55a('0xf1')));this[_0xe55a('0xda')](_0x2eb641,_0xe55a('0xf2'),_0xe55a('0xf3'));}if(_0x4c52f2[_0xe55a('0x52')]!==_0xe55a('0x7f')&&this[_0xe55a('0x21')][_0x4c52f2[_0xe55a('0xb9')]]['dialAMDActive']&&_0x2812ad[_0xe55a('0xea')]==='MACHINE'){var _0x3b3926=this;return new BPromise(function(_0x2f4db6,_0x17a559){delete _0x3b3926[_0xe55a('0xb0')][_0x2812ad[_0xe55a('0xe5')]];_0x3b3926[_0xe55a('0xb8')](_0x3b3926[_0xe55a('0x21')][_0x4c52f2[_0xe55a('0xb9')]]);_0x3b3926[_0xe55a('0x21')][_0x4c52f2[_0xe55a('0xb9')]]['outboundAnswerCallsDay']+=0x1;_0x3b3926[_0xe55a('0x21')][_0x4c52f2[_0xe55a('0xb9')]]['outboundAnswerAgiCallsDay']+=0x1;var _0x42f85e=_0x3b3926[_0xe55a('0x21')][_0x4c52f2[_0xe55a('0xb9')]];var _0x46a5c8=new Hangup(_0x4c52f2,_0x2812ad);_0x46a5c8[_0xe55a('0xec')]=0x13;_0x46a5c8[_0xe55a('0xad')]=_0xe55a('0xf4');_0x46a5c8['membername']='AMD';_0x46a5c8['countmachineretry']+=0x1;_0x46a5c8['countglobal']+=0x1;_0x46a5c8['amd']=!![];ami[_0xe55a('0x51')]('custom:amd',ut[_0xe55a('0xf0')](_0x46a5c8,_0xe55a('0xf1')));_0x3b3926[_0xe55a('0xd5')](_0x46a5c8)['catch'](loggerCatch(_0xe55a('0xf5')));if(_0x46a5c8['countbusyretry']+_0x46a5c8[_0xe55a('0xf6')]+_0x46a5c8[_0xe55a('0xf7')]+_0x46a5c8[_0xe55a('0xf8')]+_0x46a5c8['countdropretry']+_0x46a5c8[_0xe55a('0xf9')]+_0x46a5c8[_0xe55a('0xfa')]+_0x46a5c8[_0xe55a('0xfb')]>=_0x42f85e[_0xe55a('0xfc')]){_0x3b3926[_0xe55a('0xfd')](_0x46a5c8,_0x2f4db6,_0x17a559,_0xe55a('0xfe'));}else{if(_0x46a5c8[_0xe55a('0xfa')]>=_0x42f85e[_0xe55a('0xff')]){_0x3b3926[_0xe55a('0x100')](_0x46a5c8,_0x2f4db6,_0x17a559,_0xe55a('0x101'));}else{_0x3b3926['rescheduleContact']({'active':![],'countmachineretry':_0x46a5c8[_0xe55a('0xfa')],'scheduledat':moment()['add'](_0x42f85e[_0xe55a('0x102')],_0xe55a('0x103'))[_0xe55a('0x9b')](_0xe55a('0x104')),'ContactId':_0x46a5c8[_0xe55a('0x105')],'ListId':_0x46a5c8[_0xe55a('0x106')],'VoiceQueueId':_0x46a5c8[_0xe55a('0xdc')]||undefined,'CampaignId':_0x46a5c8[_0xe55a('0xdd')]||undefined})[_0xe55a('0xb6')](loggerCatch('[rescheduleContact][Machine]'));_0x2f4db6({'reschedule':0x1});}}});}if(_0x4c52f2[_0xe55a('0x52')]==='ivr'&&this[_0xe55a('0x22')][_0x4c52f2[_0xe55a('0xb9')]][_0xe55a('0xe9')]&&_0x2812ad[_0xe55a('0xea')]===_0xe55a('0xeb')){delete this[_0xe55a('0xb0')][_0x2812ad[_0xe55a('0xe5')]];this[_0xe55a('0xb8')](this[_0xe55a('0x22')][_0x4c52f2['queue']]);_0x2eb641=new Hangup(_0x4c52f2,_0x2812ad);_0x2eb641[_0xe55a('0xec')]=0x12;_0x2eb641[_0xe55a('0xad')]=_0xe55a('0x107');_0x2eb641[_0xe55a('0xed')]=_0xe55a('0xee');ami[_0xe55a('0x51')](_0xe55a('0xef'),ut['buildObj'](_0x2eb641,_0xe55a('0xf1')));this[_0xe55a('0xda')](_0x2eb641,_0xe55a('0x108'),_0xe55a('0x109'));}if(_0x4c52f2[_0xe55a('0x52')]==='ivr'&&this['campaigns'][_0x4c52f2[_0xe55a('0xb9')]]['dialAMDActive']&&_0x2812ad[_0xe55a('0xea')]===_0xe55a('0x10a')){var _0x3b3926=this;return new BPromise(function(_0xab5439,_0x176f6e){delete _0x3b3926['uniqueId'][_0x2812ad[_0xe55a('0xe5')]];_0x3b3926[_0xe55a('0xb8')](_0x3b3926['campaigns'][_0x4c52f2[_0xe55a('0xb9')]]);_0x3b3926[_0xe55a('0x22')][_0x4c52f2[_0xe55a('0xb9')]]['outboundAnswerCallsDay']+=0x1;_0x3b3926[_0xe55a('0x22')][_0x4c52f2[_0xe55a('0xb9')]][_0xe55a('0x65')]+=0x1;var _0x2c20b5=_0x3b3926[_0xe55a('0x22')][_0x4c52f2[_0xe55a('0xb9')]];var _0x10d5fb=new Hangup(_0x4c52f2,_0x2812ad);_0x10d5fb[_0xe55a('0xec')]=0x13;_0x10d5fb['statedesc']=_0xe55a('0xf4');_0x10d5fb[_0xe55a('0xed')]='AMD';_0x10d5fb['countmachineretry']+=0x1;_0x10d5fb[_0xe55a('0x10b')]+=0x1;_0x10d5fb['amd']=!![];ami['emit'](_0xe55a('0xef'),ut['buildObj'](_0x10d5fb,'amd'));_0x3b3926[_0xe55a('0xd5')](_0x10d5fb)[_0xe55a('0xb6')](loggerCatch('[syncAgentComplete][createHistory][0]'));if(_0x10d5fb[_0xe55a('0x10c')]+_0x10d5fb[_0xe55a('0xf6')]+_0x10d5fb[_0xe55a('0xf7')]+_0x10d5fb['countnosuchnumberretry']+_0x10d5fb[_0xe55a('0x10d')]+_0x10d5fb[_0xe55a('0xf9')]+_0x10d5fb[_0xe55a('0xfa')]+_0x10d5fb[_0xe55a('0xfb')]>=_0x2c20b5[_0xe55a('0xfc')]){_0x3b3926[_0xe55a('0xfd')](_0x10d5fb,_0xab5439,_0x176f6e,_0xe55a('0xfe'));}else{if(_0x10d5fb[_0xe55a('0xfa')]>=_0x2c20b5['dialMachineMaxRetry']){_0x3b3926[_0xe55a('0x100')](_0x10d5fb,_0xab5439,_0x176f6e,_0xe55a('0x101'));}else{_0x3b3926[_0xe55a('0xc8')]({'active':![],'countmachineretry':_0x10d5fb[_0xe55a('0xfa')],'scheduledat':moment()[_0xe55a('0x10e')](_0x2c20b5[_0xe55a('0x102')],'minutes')['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x10d5fb['ContactId'],'ListId':_0x10d5fb[_0xe55a('0x106')],'VoiceQueueId':_0x10d5fb[_0xe55a('0xdc')]||undefined,'CampaignId':_0x10d5fb[_0xe55a('0xdd')]||undefined})[_0xe55a('0xb6')](loggerCatch(_0xe55a('0x10f')));_0xab5439({'reschedule':0x1});}}});}}};Dialer['prototype'][_0xe55a('0x36')]=function(_0x344018){var _0x596271=this['uniqueId'][_0x344018['uniqueid']];var _0x2ae271=this;var _0x5b8374;if(_0x596271&&_0x596271['type']===_0xe55a('0x7f')){delete this[_0xe55a('0xb0')][_0x344018[_0xe55a('0xe5')]];this[_0xe55a('0xb8')](this['campaigns'][_0x596271[_0xe55a('0xb9')]]);this['campaigns'][_0x596271[_0xe55a('0xb9')]]['ivrAnswerCallsDay']+=0x1;_0x5b8374=new Hangup(_0x596271,_0x344018);this[_0xe55a('0xd5')](_0x5b8374)[_0xe55a('0xb6')](loggerCatch(_0xe55a('0x110')));this[_0xe55a('0xd3')](_0x5b8374)['catch'](loggerCatch(_0xe55a('0x111')));}if(_0x596271&&_0x596271[_0xe55a('0x52')]!=='ivr'&&isNotNull(this[_0xe55a('0x21')][_0x596271['queue']]['dialQueueProject'])){delete this[_0xe55a('0xb0')][_0x344018[_0xe55a('0xe5')]];this[_0xe55a('0xb8')](this['voiceQueues'][_0x596271['queue']]);this['voiceQueues'][_0x596271['queue']][_0xe55a('0x66')]+=0x1;this['voiceQueues'][_0x596271[_0xe55a('0xb9')]][_0xe55a('0x65')]+=0x1;_0x5b8374=new Hangup(_0x596271,_0x344018);_0x5b8374[_0xe55a('0xec')]=0x10;_0x5b8374[_0xe55a('0xad')]=_0xe55a('0x112');_0x5b8374[_0xe55a('0xed')]=_0xe55a('0x113');this[_0xe55a('0xd5')](_0x5b8374)[_0xe55a('0xb6')](loggerCatch(_0xe55a('0x110')));this['moveContactManagedDialer'](_0x5b8374)[_0xe55a('0xb6')](loggerCatch(_0xe55a('0x111')));}if(_0x596271&&_0x596271[_0xe55a('0x52')]!==_0xe55a('0x7f')&&!isNotNull(this['voiceQueues'][_0x596271[_0xe55a('0xb9')]][_0xe55a('0x114')])){delete this[_0xe55a('0xb0')][_0x344018[_0xe55a('0xe5')]];this[_0xe55a('0xb8')](this[_0xe55a('0x21')][_0x596271[_0xe55a('0xb9')]]);this['voiceQueues'][_0x596271['queue']][_0xe55a('0x6d')]+=0x1;_0x5b8374=new Hangup(_0x596271,_0x344018);_0x5b8374['state']=0xc;_0x5b8374[_0xe55a('0xad')]=_0x344018[_0xe55a('0x115')];_0x5b8374[_0xe55a('0xed')]=_0xe55a('0x116');this[_0xe55a('0xd5')](_0x5b8374)[_0xe55a('0xb6')](loggerCatch('[syncHangupIvr][createHistory]'));this[_0xe55a('0xd3')](_0x5b8374)[_0xe55a('0xb6')](loggerCatch('[syncHangupIvr]'));}};Dialer['prototype']['syncAgentComplete']=function(_0xa91f54){var _0x35e5d5=this['uniqueId'][_0xa91f54['uniqueid']];var _0x44a53f=this;if(this[_0xe55a('0x21')][_0xa91f54[_0xe55a('0xb9')]]){if(_0x35e5d5&&_0x35e5d5[_0xe55a('0x52')]!==_0xe55a('0x7f')){delete this['uniqueId'][_0xa91f54[_0xe55a('0xe5')]];this['voiceQueues'][_0xa91f54[_0xe55a('0xb9')]]['outboundAnswerCallsDay']+=0x1;var _0x5333c7=new AgentComplete(_0x35e5d5,_0xa91f54);if(_0xa91f54[_0xe55a('0x117')]===_0xe55a('0x118')){_0x5333c7['agiafterat']=this['voiceQueues'][_0xa91f54[_0xe55a('0xb9')]]['dialQueueProject2']&&this['voiceQueues'][_0xa91f54[_0xe55a('0xb9')]]['dialAgiAfterHangupAgent']?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined;}this[_0xe55a('0xd5')](_0x5333c7)['catch'](loggerCatch(_0xe55a('0x119')));this[_0xe55a('0xd3')](_0x5333c7)[_0xe55a('0xb6')](loggerCatch('[syncAgentComplete]'));}}};Dialer[_0xe55a('0x1c')][_0xe55a('0x2f')]=function(_0x31e933){if(this[_0xe55a('0x21')][_0x31e933['queue']]){if(this[_0xe55a('0xb0')][_0x31e933['uniqueid']]&&this[_0xe55a('0xb0')][_0x31e933[_0xe55a('0xe5')]]['type']!=='ivr'){this[_0xe55a('0xb8')](this['voiceQueues'][_0x31e933[_0xe55a('0xb9')]]);this[_0xe55a('0xb0')][_0x31e933['uniqueid']][_0xe55a('0x11a')]=moment()[_0xe55a('0x9b')](_0xe55a('0x104'));}}};Dialer[_0xe55a('0x1c')][_0xe55a('0x11b')]=function(_0x134f48,_0x45510f){this[_0xe55a('0xd5')](_0x134f48)[_0xe55a('0xb6')](loggerCatch('[syncAgentComplete][createHistory]'));if(_0x45510f==0x0){this[_0xe55a('0xd3')](_0x134f48)[_0xe55a('0xb6')](loggerCatch('[syncQueueCallerAbandon]\x20[Drop]'));}};Dialer[_0xe55a('0x1c')][_0xe55a('0x32')]=function(_0x1b9908){var _0x16d2a2=this[_0xe55a('0xb0')][_0x1b9908[_0xe55a('0xe5')]];var _0x5f5603=this;var _0x3003cf=![];var _0x3e6866;var _0x35a8ba;if(this['voiceQueues'][_0x1b9908['queue']]){if(_0x16d2a2&&_0x16d2a2['type']!==_0xe55a('0x7f')){delete this['uniqueId'][_0x1b9908[_0xe55a('0xe5')]];this[_0xe55a('0xb8')](this[_0xe55a('0x21')][_0x1b9908[_0xe55a('0xb9')]]);_0x16d2a2[_0xe55a('0x11c')]=moment()[_0xe55a('0x9b')]('YYYY-MM-DD\x20HH:mm:ss');var _0x5448c3=new QueueCallerAbandon(_0x16d2a2,_0x1b9908);if(getSeconds(_0x16d2a2['droptime'],_0x16d2a2[_0xe55a('0x11d')])>=_0x16d2a2[_0xe55a('0x11e')]){this['voiceQueues'][_0x1b9908[_0xe55a('0xb9')]][_0xe55a('0x86')]+=0x1;this[_0xe55a('0x21')][_0x1b9908['queue']][_0xe55a('0x6b')]+=0x1;this[_0xe55a('0x21')][_0x1b9908[_0xe55a('0xb9')]][_0xe55a('0x73')]+=0x1;_0x5448c3['state']=0xa;_0x5448c3[_0xe55a('0xad')]=_0xe55a('0x11f');_0x5448c3[_0xe55a('0x120')]=_0xe55a('0x121');_0x5448c3[_0xe55a('0x122')]=this[_0xe55a('0x21')][_0x1b9908['queue']][_0xe55a('0x123')]?moment()[_0xe55a('0x9b')](_0xe55a('0x104')):undefined;_0x5448c3[_0xe55a('0x10d')]+=0x1;_0x5448c3[_0xe55a('0x10b')]+=0x1;_0x3e6866=this[_0xe55a('0x21')][_0x1b9908[_0xe55a('0xb9')]][_0xe55a('0x124')];_0x35a8ba=this['voiceQueues'][_0x1b9908[_0xe55a('0xb9')]][_0xe55a('0x125')];_0x5f5603[_0xe55a('0xc0')](_0x5448c3,_0x5448c3[_0xe55a('0xec')],_0x16d2a2['voiceQueue'])[_0xe55a('0x40')](function(_0x39e30b){_0x3003cf=_0x39e30b['additional']==0x1;if(_0x5448c3[_0xe55a('0x10d')]>=_0x5f5603[_0xe55a('0x21')][_0x1b9908[_0xe55a('0xb9')]]['dialDropMaxRetry']){_0x5f5603[_0xe55a('0x11b')](_0x5448c3,_0x39e30b[_0xe55a('0x126')]);}else{_0x5f5603[_0xe55a('0xc8')]({'active':![],'countdropretry':_0x5448c3[_0xe55a('0x10d')],'scheduledat':moment()[_0xe55a('0x10e')](_0x5f5603[_0xe55a('0x21')][_0x1b9908[_0xe55a('0xb9')]][_0xe55a('0x124')],'minutes')[_0xe55a('0x9b')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x16d2a2['ContactId'],'ListId':_0x16d2a2[_0xe55a('0x106')],'VoiceQueueId':_0x16d2a2[_0xe55a('0xdc')]||undefined,'CampaignId':_0x16d2a2[_0xe55a('0xdd')]||undefined})[_0xe55a('0xb6')](loggerCatch(_0xe55a('0x127')));var _0x206685=new History(_0x5448c3);_0x206685[_0xe55a('0xec')]=0xa;_0x206685['statedesc']='Drop';_0x206685[_0xe55a('0xae')]=moment()[_0xe55a('0x9b')](_0xe55a('0x104'));_0x206685[_0xe55a('0x128')]=_0x206685[_0xe55a('0xae')];_0x206685[_0xe55a('0x129')]=_0x5448c3[_0xe55a('0x129')];_0x206685[_0xe55a('0x12a')]=_0x5448c3[_0xe55a('0x12a')];_0x5f5603[_0xe55a('0xd5')](_0x206685)[_0xe55a('0xb6')](loggerCatch(_0xe55a('0x12b')));}})[_0xe55a('0x40')](function(_0x51845d){if(_0x3003cf)_0x5f5603['swapAdditionalPhones'](_0x5448c3,_0x3e6866,_0x35a8ba)[_0xe55a('0x40')](function(_0x1ab3bd){return 0x1;});});}else{this[_0xe55a('0x21')][_0x1b9908[_0xe55a('0xb9')]][_0xe55a('0x71')]+=0x1;this['voiceQueues'][_0x1b9908[_0xe55a('0xb9')]]['outboundDropCallsDayCallersExit']+=0x1;_0x5448c3[_0xe55a('0xec')]=0xb;_0x5448c3[_0xe55a('0xad')]=_0xe55a('0x12c');_0x5448c3[_0xe55a('0x120')]=_0xe55a('0x12d');_0x5448c3[_0xe55a('0xf9')]+=0x1;_0x5448c3[_0xe55a('0x10b')]+=0x1;_0x3e6866=this[_0xe55a('0x21')][_0x1b9908[_0xe55a('0xb9')]][_0xe55a('0x12e')];_0x35a8ba=this['voiceQueues'][_0x1b9908['queue']][_0xe55a('0x125')];_0x5f5603[_0xe55a('0xc0')](_0x5448c3,_0x5448c3[_0xe55a('0xec')],_0x16d2a2[_0xe55a('0x12f')])['then'](function(_0x2b0673){if(_0x5448c3[_0xe55a('0xf9')]>=_0x5f5603[_0xe55a('0x21')][_0x1b9908[_0xe55a('0xb9')]][_0xe55a('0x130')]){_0x5f5603[_0xe55a('0x11b')](_0x5448c3,_0x2b0673[_0xe55a('0x126')]);}else{_0x5f5603['rescheduleContact']({'active':![],'countabandonedretry':_0x5448c3['countabandonedretry'],'scheduledat':moment()[_0xe55a('0x10e')](_0x5f5603[_0xe55a('0x21')][_0x1b9908[_0xe55a('0xb9')]][_0xe55a('0x12e')],_0xe55a('0x103'))[_0xe55a('0x9b')](_0xe55a('0x104')),'ContactId':_0x16d2a2[_0xe55a('0x105')],'ListId':_0x16d2a2['ListId'],'VoiceQueueId':_0x16d2a2[_0xe55a('0xdc')]||undefined,'CampaignId':_0x16d2a2[_0xe55a('0xdd')]||undefined})[_0xe55a('0xb6')](loggerCatch('[rescheduleContact][Abandoned]'));var _0x24fae3=new History(_0x5448c3);_0x24fae3[_0xe55a('0xec')]=0xb;_0x24fae3[_0xe55a('0xad')]=_0xe55a('0x12c');_0x24fae3[_0xe55a('0xae')]=moment()['format'](_0xe55a('0x104'));_0x24fae3[_0xe55a('0x128')]=_0x24fae3[_0xe55a('0xae')];_0x24fae3[_0xe55a('0x129')]=_0x5448c3[_0xe55a('0x129')];_0x24fae3[_0xe55a('0x12a')]=_0x5448c3[_0xe55a('0x12a')];_0x5f5603[_0xe55a('0xd5')](_0x24fae3)[_0xe55a('0xb6')](loggerCatch('[syncAgentComplete][createHistory][11]'));}})['then'](function(_0x529df){if(_0x3003cf)_0x5f5603[_0xe55a('0xc2')](_0x5448c3,_0x3e6866,_0x35a8ba)[_0xe55a('0x40')](function(_0x50f035){return 0x1;});});}}}};Dialer[_0xe55a('0x1c')][_0xe55a('0x38')]=function(_0x159fd7){if(this[_0xe55a('0x27')][_0x159fd7[_0xe55a('0xe5')]]){this[_0xe55a('0x27')][_0x159fd7[_0xe55a('0xe5')]][_0xe55a('0xb5')]=_0x159fd7[_0xe55a('0xb5')];}if(this['uniqueId'][_0x159fd7[_0xe55a('0xe5')]]){this[_0xe55a('0xb0')][_0x159fd7[_0xe55a('0xe5')]][_0xe55a('0xb5')]=_0x159fd7[_0xe55a('0xb5')];}};Dialer[_0xe55a('0x1c')][_0xe55a('0x131')]=function(_0x42b0fe){if(strategy[this['voiceQueues'][this[_0xe55a('0x27')][_0x42b0fe[_0xe55a('0x132')]][_0xe55a('0xb9')]][_0xe55a('0x53')]]===_0xe55a('0x133')){if(this['actions'][_0x42b0fe[_0xe55a('0x132')]]&&_[_0xe55a('0xb2')](this[_0xe55a('0x27')][_0x42b0fe['actionid']][_0xe55a('0x134')])&&_0x42b0fe[_0xe55a('0xb4')]==='1'&&_0x42b0fe[_0xe55a('0x135')]==='0'){if(this['agents'][_0x42b0fe[_0xe55a('0x136')]]){if(!this[_0xe55a('0x23')][_0x42b0fe['stateinterface']][_0xe55a('0x134')]){this[_0xe55a('0x23')][_0x42b0fe[_0xe55a('0x136')]][_0xe55a('0x134')]=!![];this['actions'][_0x42b0fe[_0xe55a('0x132')]][_0xe55a('0x134')]=!![];this[_0xe55a('0x27')][_0x42b0fe['actionid']][_0xe55a('0x136')]=_0x42b0fe[_0xe55a('0x136')];}}}}else if((strategy[this['voiceQueues'][this[_0xe55a('0x27')][_0x42b0fe[_0xe55a('0x132')]][_0xe55a('0xb9')]][_0xe55a('0x53')]]||_0xe55a('0x1b'))===_0xe55a('0x1b')){if(this[_0xe55a('0x27')][_0x42b0fe['actionid']]){if(this[_0xe55a('0x23')][_0x42b0fe['stateinterface']]){this[_0xe55a('0x27')][_0x42b0fe['actionid']]['stateinterface']=_0x42b0fe[_0xe55a('0x136')];if(_[_0xe55a('0xb2')](this['queueBooked'][this[_0xe55a('0x27')][_0x42b0fe[_0xe55a('0x132')]][_0xe55a('0xb9')]])){this[_0xe55a('0x2c')][this[_0xe55a('0x27')][_0x42b0fe[_0xe55a('0x132')]][_0xe55a('0xb9')]]=[];}this['queueBooked'][this[_0xe55a('0x27')][_0x42b0fe[_0xe55a('0x132')]]['queue']][_0xe55a('0x137')](_[_0xe55a('0x93')](_['pick'](this[_0xe55a('0x27')][_0x42b0fe[_0xe55a('0x132')]],['idHopper','stateinterface']),{'status':_0x42b0fe[_0xe55a('0xb4')],'paused':_0x42b0fe['paused']}));}}}};function unlockQueueStatus(_0x1f8205,_0x5ed8a1){setTimeout(function(){if(_['isUndefined'](_0x1f8205[_0xe55a('0x138')])){loggerBooked[_0xe55a('0x9c')](_0xe55a('0x139'),_0x5ed8a1);}_0x1f8205[_0xe55a('0x138')]=!![];loggerBooked['info']('[booked][unlockQueueStatus]',_0x5ed8a1,JSON[_0xe55a('0x4e')](_[_0xe55a('0xdb')](_0x1f8205,[_0xe55a('0x44'),_0xe55a('0x138')])));},0x1f3);}Dialer[_0xe55a('0x1c')]['syncQueueStatusComplete']=function(_0x2c4a21){var _0x4d929c=this;var _0x321972=_0x4d929c[_0xe55a('0x21')][_0x4d929c[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0xb9')]];if(strategy[this['voiceQueues'][this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0xb9')]]['strategy']]===_0xe55a('0x133')){if(this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]]&&this[_0xe55a('0x27')][_0x2c4a21['actionid']][_0xe55a('0x136')]){this[_0xe55a('0x20')][_0xe55a('0x13a')](this[_0xe55a('0x27')][_0x2c4a21['actionid']][_0xe55a('0x13b')],this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0x136')])[_0xe55a('0xb6')](function(_0x21dc50){logger['error'](_0xe55a('0x13c'),util[_0xe55a('0x9d')](_0x21dc50,{'showHidden':![],'depth':null}));})[_0xe55a('0x13d')](function(){_0x4d929c[_0xe55a('0xb8')](_0x4d929c['voiceQueues'][_0x4d929c['actions'][_0x2c4a21[_0xe55a('0x132')]]['queue']]);_0x4d929c[_0xe55a('0x23')][_0x4d929c['actions'][_0x2c4a21['actionid']][_0xe55a('0x136')]]['locked']=![];delete _0x4d929c[_0xe55a('0x27')][_0x2c4a21['actionid']];unlockQueueStatus(_0x321972);});}else{this[_0xe55a('0xb8')](this[_0xe55a('0x21')][this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0xb9')]]);this['rescheduleContact']({'active':![],'ContactId':this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0x105')],'ListId':this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0x106')],'VoiceQueueId':this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0xdc')]||undefined,'CampaignId':this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0xdd')]||undefined})[_0xe55a('0xb6')](loggerCatch(_0xe55a('0x13e')));delete this['actions'][_0x2c4a21['actionid']];unlockQueueStatus(_0x321972);}}else if((strategy[this[_0xe55a('0x21')][this[_0xe55a('0x27')][_0x2c4a21['actionid']][_0xe55a('0xb9')]][_0xe55a('0x53')]]||_0xe55a('0x1b'))===_0xe55a('0x1b')){var _0x48ef25;if(this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]]&&!_[_0xe55a('0x4c')](this['queueBooked'][this['actions'][_0x2c4a21[_0xe55a('0x132')]]['queue']])){if(this[_0xe55a('0x2d')][_0x4d929c[_0xe55a('0x27')][_0x2c4a21['actionid']][_0xe55a('0xb9')]]){this[_0xe55a('0x2d')][_0x4d929c[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]]['queue']]=this['queueBookedRR'][this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0xb9')]]?this[_0xe55a('0x2d')][this['actions'][_0x2c4a21['actionid']][_0xe55a('0xb9')]]:this[_0xe55a('0x2c')][this['actions'][_0x2c4a21['actionid']]['queue']]?this['queueBooked'][this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0xb9')]]['_rr']||0x0:0x0;}this[_0xe55a('0x2c')][this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0xb9')]][_0xe55a('0x13f')]=this[_0xe55a('0x2d')][this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0xb9')]];for(var _0x30d6e5=0x0;_0x30d6e5<this[_0xe55a('0x2c')][this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0xb9')]][_0xe55a('0x140')];_0x30d6e5+=0x1){_0x48ef25=rr(this[_0xe55a('0x2c')][this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0xb9')]]);this[_0xe55a('0x2d')][_0x4d929c[_0xe55a('0x27')][_0x2c4a21['actionid']][_0xe55a('0xb9')]]=this[_0xe55a('0x2c')][this[_0xe55a('0x27')][_0x2c4a21['actionid']]['queue']][_0xe55a('0x13f')];if(_0x48ef25[_0xe55a('0xb4')]==='1'&&_0x48ef25[_0xe55a('0x135')]==='0'){break;}}if(!_['isNil'](_0x48ef25)){this[_0xe55a('0x23')][_0x48ef25['stateinterface']]['unlockRR']=_[_0xe55a('0x8c')](this['agents'][_0x48ef25[_0xe55a('0x136')]]['unlockRR'])?!![]:this['agents'][_0x48ef25['stateinterface']][_0xe55a('0x141')];}loggerBooked['info'](_0xe55a('0x142'),_0x2c4a21[_0xe55a('0x132')],'Agent:\x20',JSON[_0xe55a('0x4e')](_[_0xe55a('0xdb')](this['agents'][_0x48ef25['stateinterface']],[_0xe55a('0x44'),_0xe55a('0x141')])),_0xe55a('0x143'),JSON[_0xe55a('0x4e')](_0x48ef25[_0xe55a('0x13b')]));if(!_[_0xe55a('0xb2')](_0x48ef25)&&_0x48ef25[_0xe55a('0xb4')]==='1'&&_0x48ef25['paused']==='0'&&this[_0xe55a('0x23')][_0x48ef25['stateinterface']]['unlockRR']){this[_0xe55a('0x23')][_0x48ef25[_0xe55a('0x136')]][_0xe55a('0x141')]=![];this[_0xe55a('0x2c')][_0x4d929c['actions'][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0xb9')]]=[];this[_0xe55a('0x20')][_0xe55a('0x13a')](_0x48ef25['idHopper'],_0x48ef25[_0xe55a('0x136')])['catch'](function(_0x186510){logger['error']('[Catch][Preview][syncQueueStatusComplete]',util['inspect'](_0x186510,{'showHidden':![],'depth':null}));})['finally'](function(){_0x4d929c['updateOriginated'](_0x4d929c[_0xe55a('0x21')][_0x4d929c[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0xb9')]]);setTimeout(function(){_0x4d929c[_0xe55a('0x23')][_0x48ef25[_0xe55a('0x136')]][_0xe55a('0x141')]=!![];loggerBooked[_0xe55a('0x83')](_0xe55a('0x144'),_0x2c4a21[_0xe55a('0x132')],_0xe55a('0x145'),JSON[_0xe55a('0x4e')](_['pick'](_0x4d929c['agents'][_0x48ef25[_0xe55a('0x136')]],[_0xe55a('0x44'),_0xe55a('0x141')])),_0xe55a('0x143'),JSON[_0xe55a('0x4e')](_0x48ef25[_0xe55a('0x13b')]));},0xc7);delete _0x4d929c[_0xe55a('0x27')][_0x2c4a21['actionid']];unlockQueueStatus(_0x321972,_0x2c4a21[_0xe55a('0x132')]);});}else{loggerBooked['info'](_0xe55a('0x146'));this[_0xe55a('0xb8')](this[_0xe55a('0x21')][this['actions'][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0xb9')]]);this[_0xe55a('0xc8')]({'active':![],'ContactId':this[_0xe55a('0x27')][_0x2c4a21['actionid']][_0xe55a('0x105')],'ListId':this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0x106')],'VoiceQueueId':this['actions'][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0xdc')]||undefined,'CampaignId':this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]]['CampaignId']||undefined})[_0xe55a('0xb6')](loggerCatch(_0xe55a('0x13e')));delete this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]];unlockQueueStatus(_0x321972);}}else{loggerBooked[_0xe55a('0x83')](_0xe55a('0x147'));this[_0xe55a('0xb8')](this[_0xe55a('0x21')][this[_0xe55a('0x27')][_0x2c4a21['actionid']][_0xe55a('0xb9')]]);this[_0xe55a('0xc8')]({'active':![],'ContactId':this['actions'][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0x105')],'ListId':this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0x106')],'VoiceQueueId':this['actions'][_0x2c4a21[_0xe55a('0x132')]]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x2c4a21[_0xe55a('0x132')]]['CampaignId']||undefined})['catch'](loggerCatch(_0xe55a('0x148')));delete this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]];unlockQueueStatus(_0x321972);}}else{loggerBooked[_0xe55a('0x83')](_0xe55a('0x149'));this[_0xe55a('0xb8')](this[_0xe55a('0x21')][this[_0xe55a('0x27')][_0x2c4a21['actionid']][_0xe55a('0xb9')]]);this[_0xe55a('0xc8')]({'active':![],'ContactId':this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]]['ContactId'],'ListId':this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]][_0xe55a('0x106')],'VoiceQueueId':this[_0xe55a('0x27')][_0x2c4a21['actionid']][_0xe55a('0xdc')]||undefined,'CampaignId':this[_0xe55a('0x27')][_0x2c4a21['actionid']][_0xe55a('0xdd')]||undefined})[_0xe55a('0xb6')](loggerCatch(_0xe55a('0x14a')));delete this[_0xe55a('0x27')][_0x2c4a21[_0xe55a('0x132')]];unlockQueueStatus(_0x321972);}};Dialer[_0xe55a('0x1c')][_0xe55a('0x3e')]=function(){var _0x99d987=this;return BPromise['resolve']()[_0xe55a('0x40')](cmHopper['resetActiveCalls']({}))[_0xe55a('0x40')](function(){setInterval(function(){_0x99d987[_0xe55a('0x14b')]();},0x3e8);});};Dialer['prototype'][_0xe55a('0x14c')]=function(_0x1ba81b){var _0x41af19=this;return function(){if(!_0x41af19['isTrunkReachable'](_0x1ba81b[_0xe55a('0x7d')])){if(!_0x41af19[_0xe55a('0xe0')](_0x1ba81b['TrunkBackup'])){_0x1ba81b[_0xe55a('0x42')]='TRUNK_IS_NOT_REACHABLE';throw _0x1ba81b['name']+_0xe55a('0x14d');}}};};Dialer[_0xe55a('0x1c')][_0xe55a('0x14e')]=function(_0xf99ebc,_0x2de242,_0x31b389,_0x5e5ce5){var _0xec1cf8=this;return function(){var _0xd35a8b=!![];return _0xec1cf8['ifTime'](_0xf99ebc,_0x2de242,_0x31b389,_0x5e5ce5,_0xd35a8b);};};Dialer[_0xe55a('0x1c')]['checkIfTimeIntervals']=function(_0x36651d,_0x352ef4,_0x1d2cf4,_0x53c4ea){var _0x32d6c4=this;return function(){var _0x1e1c51=![];return _0x32d6c4[_0xe55a('0x14f')](_0x36651d['Intervals'],_0x352ef4,_0x1d2cf4,_0x53c4ea,_0x1e1c51);};};Dialer[_0xe55a('0x1c')]['ifTime']=function(_0xfe71b7,_0x40612b,_0x872c85,_0x48e3e5,_0x38f375){var _0x550ad1=[];return new BPromise(function(_0x58104b,_0x2fdfca){if(!isNotNull(_0xfe71b7)){_0x48e3e5[_0xe55a('0x42')]='INTERVAL_IS_NULL';return _0x2fdfca(msgResponse('ifTime',_0xe55a('0x150'),_0x872c85+'\x20Intervals\x20is\x20null\x20'));}if(_[_0xe55a('0x4c')](_0xfe71b7)){_0x48e3e5[_0xe55a('0x42')]=_0xe55a('0x151');return _0x2fdfca(msgResponse(_0xe55a('0x14f'),_0xe55a('0x150'),_0x872c85+_0xe55a('0x152')));}if(_0x40612b&&_[_0xe55a('0x8c')](config[_0xe55a('0x153')][_0x40612b])){_0x48e3e5[_0xe55a('0x42')]='TIMEZONE_UNKNOW';return _0x2fdfca(msgResponse('ifTime',_0xe55a('0x150'),_0x872c85+_0xe55a('0x154')+_0x40612b));}if(_[_0xe55a('0x155')](_0xfe71b7)){for(var _0x2fee2b=0x0;_0x2fee2b<_0xfe71b7[_0xe55a('0x140')];_0x2fee2b+=0x1){_0x550ad1[_0xe55a('0x137')](ami[_0xe55a('0xb3')]({'action':_0xe55a('0x156'),'command':util[_0xe55a('0x9b')](_0xe55a('0x157'),_0xfe71b7[_0x2fee2b][_0xe55a('0x158')],!_[_0xe55a('0x8c')](config['timezones'][_0x40612b])?_0x40612b:'')})[_0xe55a('0x40')](function(_0x1fa0a1){return _0x1fa0a1['content'][_0xe55a('0x159')](_0xe55a('0x15a'))>=0x0;})['catch'](myreject(_0x2fdfca)));}}else{_0x550ad1['push'](ami[_0xe55a('0xb3')]({'action':_0xe55a('0x156'),'command':util[_0xe55a('0x9b')](_0xe55a('0x157'),_0xfe71b7,!_[_0xe55a('0x8c')](config[_0xe55a('0x153')][_0x40612b])?_0x40612b:'')})[_0xe55a('0x40')](function(_0xdc0b7b){return _0xdc0b7b[_0xe55a('0x15b')][_0xe55a('0x159')](_0xe55a('0x15a'))>=0x0;})[_0xe55a('0xb6')](myreject(_0x2fdfca)));}BPromise[_0xe55a('0x15c')](_0x550ad1)[_0xe55a('0x40')](function(_0x440c41){var _0x54bd41=_['some'](_0x440c41);if(_0x54bd41){return _0x58104b(_0x54bd41);}else{_0x48e3e5[_0xe55a('0x42')]=_0x38f375?'GLOBAL_INTERVAL_IS_OVERTIME':_0xe55a('0x15d');return _0x2fdfca(msgResponse('[ifTime][promiseAll]','Failure',_0xe55a('0x15e')+_0x38f375+'\x20'+_0x872c85+'\x20Interval\x20is\x20overtime:\x20'+util['inspect'](_0xfe71b7,{'showHidden':![],'depth':null})+_0xe55a('0x15f')+_0x40612b));}})['catch'](function(_0x4b8452){return _0x2fdfca(msgResponse(_0xe55a('0x14f'),_0xe55a('0x150'),JSON[_0xe55a('0x4e')](_0x4b8452)));});});};Dialer[_0xe55a('0x1c')]['checkDialMethod']=function(_0x581153){var _0x4aa383=this;return function(){switch(_0x581153[_0xe55a('0x60')]){case'progressive':freeVariablesPredictive(_0x581153);_0x4aa383['handlePower'](_0x581153,0x1);break;case _0xe55a('0x160'):freeVariablesPredictive(_0x581153);_0x4aa383[_0xe55a('0x161')](_0x581153,_0x581153[_0xe55a('0x162')]);break;case _0xe55a('0x8'):_0x4aa383['predictive'](_0x581153);break;case _0xe55a('0x7'):freeVariablesPredictive(_0x581153);_0x4aa383[_0xe55a('0x161')](_0x581153,0x1);break;default:freeVariablesPredictive(_0x581153);logger['error'](_0xe55a('0x163'),_0x581153[_0xe55a('0x44')],_0xe55a('0x164'));}};};Dialer[_0xe55a('0x1c')]['checkPreviewRecallReminder']=function(_0x5f3998){return BPromise[_0xe55a('0xbd')]()['then'](cmHopper[_0xe55a('0x165')](_0x5f3998['id'],previewRecallmeReminderInterval))[_0xe55a('0x40')](function(_0xdcbe90){for(var _0x1d3381=0x0;_0x1d3381<_0xdcbe90['length'];_0x1d3381++){var _0x5e273e=_0xdcbe90[_0x1d3381][_0xe55a('0x166')][_0xe55a('0x44')];if(_0x5e273e)io['to'](util[_0xe55a('0x9b')](_0xe55a('0x167'),_0x5e273e))['emit'](_0xe55a('0x168'),{'hopper':_0xdcbe90[_0x1d3381]});}})['catch'](function(_0x296fd7){});};Dialer[_0xe55a('0x1c')]['launchHandleIvr']=function(_0x235493){var _0xeaedab=this;return function(){_0xeaedab['handleIvr'](_0x235493);};};Dialer[_0xe55a('0x1c')]['syncQueueSummary']=function(_0x1fd021){var _0x13fa4c=this;if(isNotPreview(_0x1fd021[_0xe55a('0x60')])){if(isVoiceQueueOutbound(_0x1fd021[_0xe55a('0x52')])&&isActive(_0x1fd021[_0xe55a('0x5f')])){_0x1fd021['sendMessageOneNotActive']=!![];BPromise['resolve']()[_0xe55a('0x40')](checkIsLoggedIn(_0x1fd021,_0x1fd021[_0xe55a('0x55')]))[_0xe55a('0x40')](checkIsActive(_0x1fd021,_0x1fd021[_0xe55a('0x5f')]))[_0xe55a('0x40')](checkInterval(_0x1fd021))[_0xe55a('0x40')](_0x13fa4c[_0xe55a('0x14c')](_0x1fd021))[_0xe55a('0x40')](_0x13fa4c['checkIfTime'](_0x1fd021['dialGlobalInterval'],_0x1fd021[_0xe55a('0x169')],_0x1fd021[_0xe55a('0x44')],_0x1fd021))[_0xe55a('0x40')](_0x13fa4c[_0xe55a('0x16a')](_0x1fd021[_0xe55a('0x48')],_0x1fd021[_0xe55a('0x169')],_0x1fd021[_0xe55a('0x44')],_0x1fd021))[_0xe55a('0x40')](_0x13fa4c['checkDialMethod'](_0x1fd021))[_0xe55a('0xb6')](loggerCatchQueueSummary(_0xe55a('0x16b'),_0x1fd021));}else{notSendMessagesQueue(_0x1fd021);}}else{freeVariablesPredictive(_0x1fd021);if(_0x1fd021[_0xe55a('0x16c')]){_0x13fa4c[_0xe55a('0x16d')](_0x1fd021);}}};Dialer[_0xe55a('0x1c')]['syncCampaigns']=function(){var _0x417242=this;var _0x296d6c;for(var _0x1d3692 in this['campaigns']){if(typeof this[_0xe55a('0x22')][_0x1d3692]!==_0xe55a('0x9f')){_0x296d6c=this[_0xe55a('0x22')][_0x1d3692];if(isCampaignIvr(_0x296d6c[_0xe55a('0x52')])&&isActive(_0x296d6c[_0xe55a('0xe1')])){_0x296d6c[_0xe55a('0xa6')]=!![];BPromise[_0xe55a('0xbd')]()['then'](checkIsActive(_0x296d6c,_0x296d6c[_0xe55a('0xe1')]))['then'](checkInterval(_0x296d6c))[_0xe55a('0x40')](_0x417242[_0xe55a('0x14c')](_0x296d6c))['then'](_0x417242[_0xe55a('0x14e')](_0x296d6c[_0xe55a('0x16e')],_0x296d6c[_0xe55a('0x169')],_0x296d6c[_0xe55a('0x44')],_0x296d6c))[_0xe55a('0x40')](_0x417242[_0xe55a('0x16a')](_0x296d6c[_0xe55a('0x48')],_0x296d6c['dialTimezone'],_0x296d6c[_0xe55a('0x44')],_0x296d6c))[_0xe55a('0x40')](_0x417242['launchHandleIvr'](_0x296d6c))[_0xe55a('0xb6')](loggerCatchQueueSummary(_0xe55a('0x16f'),_0x296d6c));}else{notSendMessagesCampaign(_0x296d6c);}}}};function getCallerIdRandom(_0x452d22,_0x5a6a32){var _0x592ad5;var _0x4a2e53;var _0x11e274;if(_0x5a6a32<=0x0){_0x5a6a32=0x1;}_0x592ad5=new RegExp(_0xe55a('0x170')+_0x5a6a32+'}$');_0x4a2e53=Math[_0xe55a('0x171')](0xa,_0x5a6a32-0x1);_0x11e274=Math[_0xe55a('0x171')](0xa,_0x5a6a32)-0x1;return util[_0xe55a('0x9b')]('%s',_[_0xe55a('0x172')](_0x452d22,_0x592ad5,_['random'](_0x4a2e53,_0x11e274)));}function extractCalleridName(_0x4e818a){var _0x1f57e7=_0x4e818a[_0xe55a('0x173')](/"(.*?)"/);return _0x1f57e7?_0x1f57e7[0x1]:_0x4e818a;}function extractCalleridNumber(_0x4a0d3c){var _0x139595=_0x4a0d3c['match'](/<(.*?)>/);return _0x139595?_0x139595[0x1]:_0x4a0d3c;}Dialer[_0xe55a('0x1c')]['actionOriginate']=function(_0x53b1bf,_0x23887e){var _0x2aa676=this;var _0x4e27fe=uuid['v4']();this['actions'][_0x4e27fe]=new Action(_0x53b1bf,_0x23887e,_0x4e27fe);return new BPromise(function(_0x18ccda,_0x182713){if(_['isUndefined'](_0x53b1bf)&&typeof _0x53b1bf!=='object'){return _0x182713(msgResponse('originate',_0xe55a('0x150'),_0xe55a('0x174')));}if(_[_0xe55a('0x8c')](_0x23887e[_0xe55a('0x175')])||_0x23887e[_0xe55a('0x175')]===null){return _0x182713(msgResponse(_0xe55a('0x176'),_0xe55a('0x150'),_0xe55a('0x177')));}var _0x3d6e05={'XMD-CALLERID':_0x2aa676['actions'][_0x4e27fe][_0xe55a('0x178')](),'XMD-AGI':_0x53b1bf[_0xe55a('0x114')]?util[_0xe55a('0x9b')]('\x22agi://%s/square,%s\x22',ipAgi,_0x53b1bf['dialQueueProject']):_0xe55a('0x179'),'XMD-AGIAFTER':_0x53b1bf['dialQueueProject2']?util['format'](_0xe55a('0x17a'),ipAgi,_0x53b1bf[_0xe55a('0x123')]):'NONE','XMD-QUEUE':_0x53b1bf[_0xe55a('0x52')]==='outbound'?util[_0xe55a('0x9b')](_0xe55a('0x17b'),_0x53b1bf[_0xe55a('0x44')],_0x53b1bf[_0xe55a('0x17c')]||'',_0x53b1bf[_0xe55a('0x17d')]?'c':'',_0x53b1bf[_0xe55a('0x11e')]||0x3):_0xe55a('0x179'),'XMD-CONTACTID':_0x23887e[_0xe55a('0x105')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x2aa676[_0xe55a('0x27')][_0x4e27fe][_0xe55a('0x178')](),'XMD-AMD':_0x53b1bf[_0xe55a('0xe9')]?_0xe55a('0x17e'):'NONE','XMD-DESTINATION':_0xe55a('0xe8')};if(_0x53b1bf[_0xe55a('0xe9')]){_0x3d6e05[_0xe55a('0x17f')]=_0x53b1bf[_0xe55a('0x180')]||0x9c4;_0x3d6e05['XMD-AMDGREETING']=_0x53b1bf[_0xe55a('0x181')]||0x5dc;_0x3d6e05['XMD-AMDAFTERGREETINGSILENCE']=_0x53b1bf[_0xe55a('0x182')]||0x320;_0x3d6e05[_0xe55a('0x183')]=_0x53b1bf[_0xe55a('0x184')]||0x1388;_0x3d6e05[_0xe55a('0x185')]=_0x53b1bf['dialAMDMinWordLength']||0x64;_0x3d6e05[_0xe55a('0x186')]=_0x53b1bf[_0xe55a('0x187')]||0x32;_0x3d6e05[_0xe55a('0x188')]=_0x53b1bf[_0xe55a('0x189')]||0x3;_0x3d6e05['XMD-AMDSILENCETHRESHOLD']=_0x53b1bf[_0xe55a('0x18a')]||0x100;_0x3d6e05['XMD-AMDMAXIMUMWORDLENGTH']=_0x53b1bf['dialAMDMaximumWordLength']||0x1388;}if(_0x53b1bf[_0xe55a('0x52')]===_0xe55a('0x98')){_0x3d6e05[_0xe55a('0x18b')]=_0x23887e[_0xe55a('0xdc')];}else{_0x3d6e05['XMD-CAMPAIGNID']=_0x23887e[_0xe55a('0xdd')];}for(var _0x371bb3 in _0x23887e[_0xe55a('0x18c')]){if(typeof _0x23887e[_0xe55a('0x18c')][_0x371bb3]!==_0xe55a('0x9f')){if(isNotNull(_0x23887e[_0xe55a('0x18c')][_0x371bb3])&&_0x371bb3!=='id'&&_0x371bb3!==_0xe55a('0x18d')&&_0x371bb3!==_0xe55a('0x18e')&&_0x371bb3!=='updatedAt'){_0x3d6e05[util[_0xe55a('0x9b')](_0xe55a('0x18f'),_0xe55a('0x190'),_[_0xe55a('0x191')](_0x371bb3))]=_0x23887e['Contact'][_0x371bb3];}}}var _0x2e9083=_0x2aa676[_0xe55a('0xe0')](_0x53b1bf[_0xe55a('0x7d')])?getCallerId(_0x53b1bf[_0xe55a('0x7d')]['callerid'],_0x53b1bf[_0xe55a('0x61')],_0x53b1bf['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x53b1bf[_0xe55a('0x62')],_0x53b1bf['dialRandomLastDigitCallerIdNumber']):_0x53b1bf[_0xe55a('0x62')]):getCallerId(_[_0xe55a('0xb2')](_0x53b1bf['TrunkBackup'])?_0x53b1bf[_0xe55a('0x7d')][_0xe55a('0x192')]:_0x53b1bf[_0xe55a('0x193')][_0xe55a('0x192')],_0x53b1bf['dialOriginateCallerIdName'],_0x53b1bf['dialRandomLastDigitCallerIdNumber']>0x0?getCallerIdRandom(_0x53b1bf[_0xe55a('0x62')],_0x53b1bf['dialRandomLastDigitCallerIdNumber']):_0x53b1bf[_0xe55a('0x62')]);if(_0x2e9083){_0x3d6e05[_0xe55a('0x194')]=_0x2aa676[_0xe55a('0x27')][_0x4e27fe][_0xe55a('0x195')]=extractCalleridName(_0x2e9083);_0x3d6e05[_0xe55a('0x196')]=_0x23887e[_0xe55a('0x175')];}return ami[_0xe55a('0xb3')]({'actionid':_0x4e27fe,'action':'originate','channel':_0x2aa676[_0xe55a('0xe0')](_0x53b1bf[_0xe55a('0x7d')])?util[_0xe55a('0x9b')](_0xe55a('0x197'),_0x53b1bf['Trunk'][_0xe55a('0x44')],isNotNull(_0x53b1bf['dialPrefix'])?_0x53b1bf['dialPrefix'][_0xe55a('0x198')]()||'':'',_0x53b1bf[_0xe55a('0x199')]>0x0?_0x23887e[_0xe55a('0x175')]['substring'](_0x53b1bf[_0xe55a('0x199')]):_0x23887e[_0xe55a('0x175')]):util[_0xe55a('0x9b')]('SIP/%s/%s%s',_[_0xe55a('0xb2')](_0x53b1bf['TrunkBackup'])?_0x53b1bf['Trunk'][_0xe55a('0x44')]:_0x53b1bf[_0xe55a('0x193')][_0xe55a('0x44')],isNotNull(_0x53b1bf[_0xe55a('0x64')])?_0x53b1bf[_0xe55a('0x64')]['trim']()||'':'',_0x53b1bf[_0xe55a('0x199')]>0x0?_0x23887e[_0xe55a('0x175')]['substring'](_0x53b1bf[_0xe55a('0x199')]):_0x23887e[_0xe55a('0x175')]),'callerid':_0x2e9083,'Exten':_0xe55a('0xe8'),'Context':_0xe55a('0x19a'),'Priority':'1','variable':_0x3d6e05,'timeout':(_0x53b1bf['dialOriginateTimeout']||0x1e)*0x3e8,'async':!![],'channelid':_0x4e27fe})[_0xe55a('0x40')](function(_0x3a514b){return _0x18ccda(_0x3a514b);})['catch'](function(_0x4e49b4){_0x53b1bf[_0xe55a('0x19b')]+=0x1;var _0x12ade6=new History(_0x2aa676[_0xe55a('0x27')][_0x4e27fe]);logger[_0xe55a('0x9c')](util[_0xe55a('0x9b')](_0xe55a('0x19c'),JSON[_0xe55a('0x4e')](_0x4e49b4)));_0x12ade6[_0xe55a('0xec')]=0xe;_0x12ade6[_0xe55a('0xad')]=_0xe55a('0x19d');_0x12ade6['starttime']=moment()[_0xe55a('0x9b')]('YYYY-MM-DD\x20HH:mm:ss');_0x12ade6[_0xe55a('0x128')]=_0x12ade6[_0xe55a('0xae')];_0x2aa676[_0xe55a('0xd5')](_0x12ade6)[_0xe55a('0xb6')](loggerCatch('[originate][error]'));_0x2aa676['moveContactManagedDialer'](_0x12ade6)[_0xe55a('0xb6')](loggerCatch(_0xe55a('0x19e')))[_0xe55a('0x13d')](function(){delete _0x2aa676[_0xe55a('0x27')][_0x4e27fe];return _0x182713(msgResponse(_0xe55a('0x176'),_0xe55a('0x4d'),_0xe55a('0x19f')));});});});};Dialer['prototype'][_0xe55a('0x1a0')]=function(_0x2e7925){var _0x256ef5=this['actions'][_0x2e7925[_0xe55a('0x132')]];if(_0x256ef5){delete this[_0xe55a('0x27')][_0x2e7925['actionid']];_0x256ef5[_0xe55a('0x11d')]=moment()[_0xe55a('0x9b')](_0xe55a('0x104'));var _0x3a1923=_0x256ef5['type']==='ivr'?this[_0xe55a('0x22')][_0x256ef5[_0xe55a('0xb9')]]:this[_0xe55a('0x21')][_0x256ef5[_0xe55a('0x1a1')]()];if(!this['isSuccess'](_0x2e7925[_0xe55a('0x1a2')])){this[_0xe55a('0xb8')](_0x3a1923);return this['callProgressDetecting'](_0x256ef5,_0x3a1923,_0x2e7925)[_0xe55a('0xb6')](loggerCatch(_0xe55a('0x1a3')));}this[_0xe55a('0xb0')][_0x2e7925[_0xe55a('0xe5')]]=_0x256ef5;}};Dialer[_0xe55a('0x1c')][_0xe55a('0x1a4')]=function(_0x3eb26d,_0x427570,_0x266c45){var _0x5a412e=new History(_0x427570);if(_0x5a412e[_0xe55a('0x10c')]+_0x5a412e[_0xe55a('0xf6')]+_0x5a412e[_0xe55a('0xf7')]+_0x5a412e[_0xe55a('0xf8')]+_0x5a412e[_0xe55a('0x10d')]+_0x5a412e[_0xe55a('0xf9')]+_0x5a412e[_0xe55a('0xfa')]+_0x5a412e[_0xe55a('0xfb')]>=_0x266c45[_0xe55a('0xfc')]-0x1){return!![];}switch(_0x3eb26d){case 0x3:if(_0x5a412e[_0xe55a('0xf7')]>=_0x266c45[_0xe55a('0x1a5')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countnoanswerretry':_0x5a412e['countnoanswerretry']+=0x1,'scheduledat':moment()[_0xe55a('0x10e')](_0x266c45[_0xe55a('0x1a6')],_0xe55a('0x103'))[_0xe55a('0x9b')](_0xe55a('0x104')),'ContactId':_0x5a412e[_0xe55a('0x105')],'ListId':_0x5a412e[_0xe55a('0x106')],'VoiceQueueId':_0x5a412e[_0xe55a('0xdc')]||undefined,'CampaignId':_0x5a412e['CampaignId']||undefined})['catch'](loggerCatch(_0xe55a('0x1a7')));break;case 0x5:if(_0x5a412e[_0xe55a('0x10c')]>=_0x266c45['dialBusyMaxRetry']-0x1){return!![];}this[_0xe55a('0xc8')]({'active':![],'countbusyretry':_0x5a412e[_0xe55a('0x10c')]+=0x1,'scheduledat':moment()[_0xe55a('0x10e')](_0x266c45[_0xe55a('0x1a8')],_0xe55a('0x103'))[_0xe55a('0x9b')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x5a412e[_0xe55a('0x105')],'ListId':_0x5a412e[_0xe55a('0x106')],'VoiceQueueId':_0x5a412e[_0xe55a('0xdc')]||undefined,'CampaignId':_0x5a412e[_0xe55a('0xdd')]||undefined})[_0xe55a('0xb6')](loggerCatch('[rescheduleContact]\x20[Busy]'));break;case 0x8:if(_0x5a412e['countcongestionretry']>=_0x266c45[_0xe55a('0x1a9')]-0x1){return!![];}this[_0xe55a('0xc8')]({'active':![],'countcongestionretry':_0x5a412e[_0xe55a('0xf6')]+=0x1,'scheduledat':moment()['add'](_0x266c45[_0xe55a('0x1aa')],'minutes')['format'](_0xe55a('0x104')),'ContactId':_0x5a412e[_0xe55a('0x105')],'ListId':_0x5a412e['ListId'],'VoiceQueueId':_0x5a412e[_0xe55a('0xdc')]||undefined,'CampaignId':_0x5a412e[_0xe55a('0xdd')]||undefined})['catch'](loggerCatch('[rescheduleContact]\x20[Congestion]'));break;case 0x0:if(_0x5a412e[_0xe55a('0xf8')]>=_0x266c45['dialNoSuchNumberMaxRetry']-0x1){return!![];}else{this['rescheduleContact']({'active':![],'countnosuchnumberretry':_0x5a412e[_0xe55a('0xf8')]+=0x1,'scheduledat':moment()[_0xe55a('0x10e')](_0x266c45[_0xe55a('0x1ab')],'minutes')[_0xe55a('0x9b')](_0xe55a('0x104')),'ContactId':_0x5a412e[_0xe55a('0x105')],'ListId':_0x5a412e[_0xe55a('0x106')],'VoiceQueueId':_0x5a412e['VoiceQueueId']||undefined,'CampaignId':_0x5a412e['CampaignId']||undefined})[_0xe55a('0xb6')](loggerCatch(_0xe55a('0x1ac')));}break;case 0xa:if(_0x5a412e['countdropretry']>=_0x266c45[_0xe55a('0x1ad')]-0x1){return!![];}this[_0xe55a('0xc8')]({'active':![],'countdropretry':_0x5a412e[_0xe55a('0x10d')]+=0x1,'scheduledat':moment()[_0xe55a('0x10e')](_0x266c45['dialDropRetryFrequency'],_0xe55a('0x103'))[_0xe55a('0x9b')](_0xe55a('0x104')),'ContactId':_0x5a412e[_0xe55a('0x105')],'ListId':_0x5a412e[_0xe55a('0x106')],'VoiceQueueId':_0x5a412e['VoiceQueueId']||undefined,'CampaignId':_0x5a412e[_0xe55a('0xdd')]||undefined})[_0xe55a('0xb6')](loggerCatch(_0xe55a('0x127')));break;case 0xb:if(_0x5a412e[_0xe55a('0xf9')]>=_0x266c45['dialAbandonedMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x5a412e[_0xe55a('0xf9')]+=0x1,'scheduledat':moment()[_0xe55a('0x10e')](_0x266c45[_0xe55a('0x12e')],_0xe55a('0x103'))['format'](_0xe55a('0x104')),'ContactId':_0x5a412e[_0xe55a('0x105')],'ListId':_0x5a412e[_0xe55a('0x106')],'VoiceQueueId':_0x5a412e[_0xe55a('0xdc')]||undefined,'CampaignId':_0x5a412e[_0xe55a('0xdd')]||undefined})[_0xe55a('0xb6')](loggerCatch('[rescheduleContact][Abandoned]'));break;case 0x13:if(_0x5a412e['countmachineretry']>=_0x266c45[_0xe55a('0xff')]-0x1){return!![];}this[_0xe55a('0xc8')]({'active':![],'countmachineretry':_0x5a412e[_0xe55a('0xfa')]+=0x1,'scheduledat':moment()['add'](_0x266c45[_0xe55a('0x102')],_0xe55a('0x103'))['format'](_0xe55a('0x104')),'ContactId':_0x5a412e[_0xe55a('0x105')],'ListId':_0x5a412e[_0xe55a('0x106')],'VoiceQueueId':_0x5a412e['VoiceQueueId']||undefined,'CampaignId':_0x5a412e[_0xe55a('0xdd')]||undefined})['catch'](loggerCatch(_0xe55a('0x10f')));break;case 0x14:if(_0x5a412e[_0xe55a('0xfb')]>=_0x266c45[_0xe55a('0x1ae')]-0x1){return!![];}this[_0xe55a('0xc8')]({'active':![],'countagentrejectretry':_0x5a412e[_0xe55a('0xfb')]+=0x1,'scheduledat':moment()[_0xe55a('0x10e')](_0x266c45[_0xe55a('0x1af')],_0xe55a('0x103'))[_0xe55a('0x9b')](_0xe55a('0x104')),'ContactId':_0x5a412e[_0xe55a('0x105')],'ListId':_0x5a412e[_0xe55a('0x106')],'VoiceQueueId':_0x5a412e[_0xe55a('0xdc')]||undefined,'CampaignId':_0x5a412e[_0xe55a('0xdd')]||undefined})[_0xe55a('0xb6')](loggerCatch(_0xe55a('0x1b0')));break;default:return!![];}};Dialer[_0xe55a('0x1c')][_0xe55a('0x1b1')]=function(_0x51ae8a,_0x152130,_0x2b3113){var _0xb0cd9f=this;var _0x27dfa7=new History(_0x51ae8a);var _0x1e1b85=![];var _0x53f87b;var _0x3b9d04;return new BPromise(function(_0x2a4599,_0x3a0d14){if(_[_0xe55a('0x8c')](_0x152130)&&typeof _0x152130!==_0xe55a('0x1b2')){return _0x3a0d14(msgResponse(_0xe55a('0x1b3'),_0xe55a('0x150'),'entity\x20is\x20undefine'));}if(_[_0xe55a('0x8c')](_0x2b3113)&&typeof _0x2b3113!=='object'){return _0x3a0d14(msgResponse(_0xe55a('0x1b3'),'Failure','evt\x20is\x20undefine'));}_0xb0cd9f['verifyAdditionalPhones'](_0x27dfa7,_0x2b3113['reason'],_0x152130)[_0xe55a('0x40')](function(_0x11ee70){if(_0x11ee70['additional']==0x1)_0x1e1b85=!![];switch(_0x2b3113['reason']){case'0':_0x152130[_0xe55a('0x6c')]+=0x1;_0x27dfa7[_0xe55a('0xec')]=0x0;_0x27dfa7[_0xe55a('0xad')]=_0xe55a('0x1b4');_0x27dfa7[_0xe55a('0xf8')]+=0x1;_0x27dfa7[_0xe55a('0x10b')]+=0x1;ami['emit'](_0xe55a('0x1b5'),ut[_0xe55a('0xf0')](_0x51ae8a,_0xe55a('0x1b6')));_0x53f87b=_0x152130['dialNoSuchNumberRetryFrequency'];_0x3b9d04=_0x152130[_0xe55a('0x125')];_0xb0cd9f[_0xe55a('0xd5')](_0x27dfa7)[_0xe55a('0xb6')](loggerCatch(_0xe55a('0xf5')));if(_0xb0cd9f[_0xe55a('0x1a4')](0x0,_0x51ae8a,_0x152130)&&!_0x1e1b85){if(_0x27dfa7[_0xe55a('0xf8')]>=_0x152130[_0xe55a('0x1b7')]){_0xb0cd9f['createStateFinal'](_0x27dfa7,_0x2a4599,_0x3a0d14,_0xe55a('0x1b8'));}else{_0xb0cd9f['stateGlobal'](_0x27dfa7,_0x2a4599,_0x3a0d14,_0xe55a('0x1b8'));}}break;case'3':_0x152130[_0xe55a('0x1b9')]+=0x1;_0x27dfa7[_0xe55a('0xec')]=0x3;_0x27dfa7[_0xe55a('0xad')]=_0xe55a('0x1ba');_0x27dfa7[_0xe55a('0xf7')]+=0x1;_0x27dfa7[_0xe55a('0x10b')]+=0x1;ami[_0xe55a('0x51')](_0xe55a('0x1bb'),ut[_0xe55a('0xf0')](_0x51ae8a,_0xe55a('0x1bc')));_0x53f87b=_0x152130[_0xe55a('0x1a6')];_0x3b9d04=_0x152130[_0xe55a('0x125')];_0xb0cd9f[_0xe55a('0xd5')](_0x27dfa7)[_0xe55a('0xb6')](loggerCatch('[syncAgentComplete][createHistory][3]'));if(_0xb0cd9f[_0xe55a('0x1a4')](0x3,_0x51ae8a,_0x152130)&&!_0x1e1b85){if(_0x27dfa7['countnoanswerretry']>=_0x152130[_0xe55a('0x1a5')]){_0xb0cd9f['createStateFinal'](_0x27dfa7,_0x2a4599,_0x3a0d14,_0xe55a('0x1bd'));}else{_0xb0cd9f[_0xe55a('0xfd')](_0x27dfa7,_0x2a4599,_0x3a0d14,_0xe55a('0x1bd'));}}break;case'5':_0x152130[_0xe55a('0x1be')]+=0x1;_0x27dfa7[_0xe55a('0xec')]=0x5;_0x27dfa7[_0xe55a('0xad')]=_0xe55a('0x1bf');_0x27dfa7[_0xe55a('0x10c')]+=0x1;_0x27dfa7[_0xe55a('0x10b')]+=0x1;ami[_0xe55a('0x51')](_0xe55a('0x1c0'),ut['buildObj'](_0x51ae8a,_0xe55a('0x1c1')));_0x53f87b=_0x152130[_0xe55a('0x1a8')];_0x3b9d04=_0x152130[_0xe55a('0x125')];_0xb0cd9f[_0xe55a('0xd5')](_0x27dfa7)[_0xe55a('0xb6')](loggerCatch(_0xe55a('0x1c2')));if(_0xb0cd9f[_0xe55a('0x1a4')](0x5,_0x51ae8a,_0x152130)&&!_0x1e1b85){if(_0x27dfa7['countbusyretry']>=_0x152130[_0xe55a('0x1c3')]){_0xb0cd9f[_0xe55a('0x100')](_0x27dfa7,_0x2a4599,_0x3a0d14,_0xe55a('0x1c4'));}else{_0xb0cd9f[_0xe55a('0xfd')](_0x27dfa7,_0x2a4599,_0x3a0d14,_0xe55a('0x1c4'));}}break;case'8':_0x152130[_0xe55a('0x68')]+=0x1;_0x27dfa7['state']=0x8;_0x27dfa7[_0xe55a('0xad')]=_0xe55a('0x1c5');_0x27dfa7[_0xe55a('0xf6')]+=0x1;_0x27dfa7['countglobal']+=0x1;_0x53f87b=_0x152130[_0xe55a('0x1aa')];_0x3b9d04=_0x152130[_0xe55a('0x125')];ami[_0xe55a('0x51')](_0xe55a('0x1c6'),ut[_0xe55a('0xf0')](_0x51ae8a,'congestion'));_0xb0cd9f['createHistory'](_0x27dfa7)[_0xe55a('0xb6')](loggerCatch('[syncAgentComplete][createHistory][8]'));if(_0xb0cd9f[_0xe55a('0x1a4')](0x8,_0x51ae8a,_0x152130)&&!_0x1e1b85){if(_0x27dfa7['countcongestionretry']>=_0x152130[_0xe55a('0x1a9')]){_0xb0cd9f[_0xe55a('0x100')](_0x27dfa7,_0x2a4599,_0x3a0d14,_0xe55a('0x1c7'));}else{_0xb0cd9f['stateGlobal'](_0x27dfa7,_0x2a4599,_0x3a0d14,_0xe55a('0x1c7'));}}break;case'11':_0x152130[_0xe55a('0x1c8')]+=0x1;_0x27dfa7[_0xe55a('0xec')]=0xb;_0x27dfa7[_0xe55a('0xad')]='Abandoned';_0x27dfa7['countabandonedretry']+=0x1;_0x27dfa7[_0xe55a('0x10b')]+=0x1;_0x53f87b=_0x152130[_0xe55a('0x12e')];_0x3b9d04=_0x152130[_0xe55a('0x125')];_0xb0cd9f[_0xe55a('0xd5')](_0x27dfa7)['catch'](loggerCatch(_0xe55a('0x1c9')));if(_0xb0cd9f[_0xe55a('0x1a4')](0xb,_0x51ae8a,_0x152130)&&!_0x1e1b85){if(_0x27dfa7[_0xe55a('0xf9')]>=_0x152130[_0xe55a('0x130')]){_0xb0cd9f[_0xe55a('0x100')](_0x27dfa7,_0x2a4599,_0x3a0d14,_0xe55a('0x1ca'));}else{_0xb0cd9f[_0xe55a('0xfd')](_0x27dfa7,_0x2a4599,_0x3a0d14,_0xe55a('0x1ca'));}}break;case'20':_0x152130[_0xe55a('0x1cb')]+=0x1;_0x27dfa7['state']=0x14;_0x27dfa7[_0xe55a('0xad')]='AgentReject';_0x27dfa7[_0xe55a('0xfb')]+=0x1;_0x27dfa7['countglobal']+=0x1;_0x53f87b=_0x152130[_0xe55a('0x1af')];_0x3b9d04=_0x152130[_0xe55a('0x125')];ami[_0xe55a('0x51')](_0xe55a('0x1cc'),ut[_0xe55a('0xf0')](_0x51ae8a,_0xe55a('0x1cd')));_0xb0cd9f[_0xe55a('0xd5')](_0x27dfa7)[_0xe55a('0xb6')](loggerCatch(_0xe55a('0x1ce')));if(_0xb0cd9f[_0xe55a('0x1a4')](0x14,_0x51ae8a,_0x152130)&&!_0x1e1b85){if(_0x27dfa7['countagentrejectretry']>=_0x152130[_0xe55a('0x1ae')]){_0xb0cd9f['createStateFinal'](_0x27dfa7,_0x2a4599,_0x3a0d14,'reason\x2020\x20agentreject');}else{_0xb0cd9f[_0xe55a('0xfd')](_0x27dfa7,_0x2a4599,_0x3a0d14,_0xe55a('0x1cf'));}}break;default:_0x152130[_0xe55a('0x6d')]+=0x1;_0x27dfa7[_0xe55a('0xec')]=0xc;_0x27dfa7[_0xe55a('0xad')]=_0x2b3113['reason'];_0x53f87b=_0x152130['dialAgentRejectRetryFrequency'];_0x3b9d04=_0x152130[_0xe55a('0x125')];_0xb0cd9f[_0xe55a('0xd5')](_0x27dfa7)[_0xe55a('0xb6')](loggerCatch(_0xe55a('0x1d0')));if(_0xb0cd9f[_0xe55a('0x1a4')](_0x2b3113[_0xe55a('0x117')],_0x51ae8a,_0x152130)&&!_0x1e1b85){if(_0x27dfa7[_0xe55a('0x10c')]+_0x27dfa7['countcongestionretry']+_0x27dfa7[_0xe55a('0xf7')]+_0x27dfa7[_0xe55a('0xf8')]+_0x27dfa7[_0xe55a('0x10d')]+_0x27dfa7[_0xe55a('0xf9')]+_0x27dfa7['countmachineretry']+_0x27dfa7[_0xe55a('0xfb')]>=_0x152130[_0xe55a('0xfc')]){_0xb0cd9f[_0xe55a('0xfd')](_0x27dfa7,_0x2a4599,_0x3a0d14,_0x2b3113['reason']);}else{_0xb0cd9f[_0xe55a('0x100')](_0x27dfa7,_0x2a4599,_0x3a0d14,_0x2b3113['reason']);}}}})[_0xe55a('0x40')](function(_0x50cbcf){if(_0x1e1b85){_0xb0cd9f[_0xe55a('0xc2')](_0x27dfa7,_0x53f87b,_0x3b9d04)[_0xe55a('0x40')](function(_0x2ed03c){return _0x2a4599(0x1);});}});});};Dialer[_0xe55a('0x1c')][_0xe55a('0xfd')]=function(_0xf6fdd8,_0x298c13,_0x45bc81,_0x470142){var _0x3028ad=new Final(_0xf6fdd8);_0x3028ad['state']=0xf;_0x3028ad[_0xe55a('0xad')]=_0xe55a('0x1d1');this[_0xe55a('0x100')](_0x3028ad,_0x298c13,_0x45bc81,_0x470142);};Dialer['prototype'][_0xe55a('0x100')]=function(_0x59fd88,_0x941b9e,_0xd1ca55,_0x472f40){this[_0xe55a('0xd3')](_0x59fd88)['then'](function(){return _0x941b9e(msgResponse(_0xe55a('0x1b3'),_0xe55a('0x1d2'),_0x472f40));})[_0xe55a('0xb6')](function(){return _0xd1ca55(msgResponse(_0xe55a('0x1d3'),_0xe55a('0x150'),_0xe55a('0x1d4')));});};Dialer[_0xe55a('0x1c')][_0xe55a('0x8')]=function(_0x5dcd85){var _0x175cc8=_0x5dcd85[_0xe55a('0x1d5')]/0x64;var _0x2041e8=_0x5dcd85['outboundDropCallsDayTimeout']/(_0x5dcd85['outboundDropCallsDayTimeout']+_0x5dcd85[_0xe55a('0x66')]);var _0x15ce66=Math['round'](_0x5dcd85[_0xe55a('0x76')]*(_0x5dcd85[_0xe55a('0x1d6')]/0x64));var _0x4ccb6b=Math[_0xe55a('0x1d7')](_0x5dcd85[_0xe55a('0x76')]*(_0x5dcd85[_0xe55a('0x1d8')]/0x64));var _0x1599f8=_0x5dcd85[_0xe55a('0x54')]+_0x5dcd85[_0xe55a('0xa7')];var _0x559956=Math[_0xe55a('0x1d9')](_0x5dcd85['erlangCalls']*_0x5dcd85['erlangAbandonmentRate']*_0x5dcd85['predictiveIntervalHitRate']*_0x5dcd85[_0xe55a('0x74')]);if(_[_0xe55a('0x8c')](_0x5dcd85[_0xe55a('0x2a')])){if(!_[_0xe55a('0x8c')](_0x5dcd85[_0xe55a('0x7c')])){_0x5dcd85['startPredictive']=undefined;loggerPredictive['error'](_0xe55a('0x1da'),'check\x20predictive\x20is\x20not\x20undefine');}if(!_[_0xe55a('0x8c')](_0x5dcd85['handlePredictive'])){loggerPredictive[_0xe55a('0x9c')]('[startMethodPredictive][StartProgressive]',_0xe55a('0x1db'));clearInterval(_0x5dcd85[_0xe55a('0x96')]);_0x5dcd85[_0xe55a('0x96')]=undefined;}_0x5dcd85['startProgressive']=moment()[_0xe55a('0x9b')](_0xe55a('0x104'));loggerPredictive[_0xe55a('0x83')](_0x5dcd85[_0xe55a('0x44')],_0xe55a('0x1dc'),_0x5dcd85['startProgressive']);this['handlePower'](_0x5dcd85,0x1);}else if(ifInterval(_0x5dcd85[_0xe55a('0x1dd')],_0x5dcd85[_0xe55a('0x2a')])){this[_0xe55a('0x161')](_0x5dcd85,0x1);loggerPredictiveCalls['info'](_0xe55a('0x1de'),_0x5dcd85[_0xe55a('0x2a')],_0x5dcd85[_0xe55a('0x44')]);_0x5dcd85[_0xe55a('0x79')]=0x0;_0x5dcd85[_0xe55a('0x73')]=0x0;}else if(_0x175cc8<_0x2041e8&&_0x5dcd85[_0xe55a('0x1df')]===_0xe55a('0x1e0')){freeVariablesPredictive(_0x5dcd85);loggerPredictive['info'](_0xe55a('0x1e1'),_0xe55a('0x1e2'),_0x2041e8,_0xe55a('0x2a'),_0x5dcd85['name']);}else if(_0x559956<_0x5dcd85[_0xe55a('0x73')]&&_0x5dcd85[_0xe55a('0x1df')]===_0xe55a('0x1e0')){freeVariablesPredictive(_0x5dcd85);loggerPredictive[_0xe55a('0x83')]('[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20',_0x559956,_0xe55a('0x1e3'),_0x5dcd85[_0xe55a('0x73')],_0xe55a('0x2a'),_0x5dcd85['name']);}else if(!ifInterval(_0x5dcd85[_0xe55a('0x1dd')],_0x5dcd85[_0xe55a('0x2a')])&&_[_0xe55a('0x8c')](_0x5dcd85[_0xe55a('0x7c')])&&!_[_0xe55a('0x8c')](_0x5dcd85[_0xe55a('0x2a')])){_0x5dcd85['startPredictive']=moment()[_0xe55a('0x9b')](_0xe55a('0x104'));loggerPredictive[_0xe55a('0x83')](_0x5dcd85[_0xe55a('0x44')],_0xe55a('0x1e4'),_0x5dcd85[_0xe55a('0x7c')]);this[_0xe55a('0xc6')](_0x5dcd85[_0xe55a('0x1dd')])[_0xe55a('0x40')](this[_0xe55a('0x1e5')](_0x5dcd85))[_0xe55a('0x40')](mergeDataErlangB(_0x5dcd85))['then'](this[_0xe55a('0x1e6')](_0x5dcd85))[_0xe55a('0xb6')](loggerCatchPredictive(_0xe55a('0x1e7'),_0x5dcd85));}else if(!ifInterval(_0x5dcd85[_0xe55a('0x1dd')],_0x5dcd85['startPredictive'])){_0x5dcd85['predictiveIntervalErlangCallsDroppedCalls']=0x0;_0x5dcd85[_0xe55a('0x7c')]=moment()[_0xe55a('0x9b')](_0xe55a('0x104'));loggerPredictive[_0xe55a('0x83')](_0x5dcd85['name'],_0xe55a('0x1e8'),_0x5dcd85[_0xe55a('0x7c')]);clearInterval(_0x5dcd85['handlePredictive']);_0x5dcd85[_0xe55a('0x96')]=undefined;this[_0xe55a('0xc6')](_0x5dcd85[_0xe55a('0x1dd')])[_0xe55a('0x40')](this['getDataPredictive'](_0x5dcd85))[_0xe55a('0x40')](mergeDataErlangB(_0x5dcd85))['then'](this['startMethodPredictive'](_0x5dcd85))[_0xe55a('0xb6')](loggerCatchPredictive(_0xe55a('0x1e9'),_0x5dcd85));}else if(_0x5dcd85[_0xe55a('0x76')]&&_0x1599f8<_0x5dcd85[_0xe55a('0x76')]-_0x4ccb6b){freeVariablesPredictive(_0x5dcd85);loggerPredictive[_0xe55a('0x83')](_0x5dcd85[_0xe55a('0x44')],_0xe55a('0x1ea'),_0x1599f8,')\x20are\x20less\x20than\x20threshold\x20(',_0x5dcd85[_0xe55a('0x76')],'-',_0x4ccb6b,'=',_0x5dcd85[_0xe55a('0x76')]-_0x4ccb6b,')');}else if(_0x5dcd85['predictiveIntervalAvailable']&&_0x1599f8>_0x5dcd85[_0xe55a('0x76')]+_0x15ce66){freeVariablesPredictive(_0x5dcd85);loggerPredictive[_0xe55a('0x83')](_0x5dcd85['name'],_0xe55a('0x1ea'),_0x1599f8,')\x20are\x20more\x20than\x20threshold\x20(',_0x5dcd85['predictiveIntervalAvailable'],'+',_0x15ce66,'=',_0x5dcd85['predictiveIntervalAvailable']+_0x15ce66,')');}};Dialer[_0xe55a('0x1c')][_0xe55a('0x1e5')]=function(_0x593670){var _0x4a0236=this;return function(_0x34fae2){return new BPromise(function(_0x229cdc,_0x2886e){_[_0xe55a('0x93')](_0x593670,_0x34fae2[0x0]);if(checkGetDataPredictive(_0x34fae2[0x0])){var _0x57caae=_0x593670['predictiveIntervalAvailable']=_0x593670[_0xe55a('0xa7')]+_0x593670[_0xe55a('0x54')];var _0x372884=_0x593670['dialPredictiveInterval']*0x3c;var _0x54084a=_0x34fae2[0x0][_0xe55a('0x70')]+_0x34fae2[0x0][_0xe55a('0x6f')];var _0x3fb5f0=(_0x34fae2[0x0]['predictiveIntervalAnsweredCalls']+_0x34fae2[0x0][_0xe55a('0x86')]+_0x34fae2[0x0][_0xe55a('0x71')])/_0x34fae2[0x0][_0xe55a('0x77')];_0x593670['predictiveIntervalHitRate']=_0x3fb5f0>0x0?_0x3fb5f0:0x1;switch(_0x593670[_0xe55a('0x1df')]){case _0xe55a('0x1e0'):var _0x59d32d=_0x593670[_0xe55a('0x1d5')]/0x64;return _0x4a0236[_0xe55a('0x1eb')](_0x57caae,_0x372884,_0x54084a,_0x3fb5f0,_0x59d32d)[_0xe55a('0x40')](function(_0x53c11f){return _0x229cdc(_0x53c11f);});case _0xe55a('0x1ec'):var _0x44ff41=_0x593670['dialPredictiveOptimizationPercentage']/0x64;return _0x4a0236['busyFactor'](_0x57caae,_0x372884,_0x54084a,_0x3fb5f0,_0x44ff41)[_0xe55a('0x40')](function(_0x22b47d){return _0x229cdc(_0x22b47d);});default:return _0x2886e(msgResponse('[getDataPredictive]','Failure',_0xe55a('0x1ed')));}}else{return _0x2886e(msgResponse(_0xe55a('0x1ee'),_0xe55a('0x150'),'check\x20failure'));}});};};Dialer[_0xe55a('0x1c')][_0xe55a('0x1ef')]=function(_0x1748c6){var _0xe5001f=this;return function(_0x3eaafc){return new BPromise(function(_0x1d6e75,_0x11bec4){_['merge'](_0x1748c6,_0x3eaafc[0x0]);if(checkGetDataPredictive(_0x3eaafc[0x0])){loggerPredictive['info'](JSON[_0xe55a('0x4e')](_0x3eaafc[0x0]));if(_0x1748c6[_0xe55a('0x1df')]==='dropRate'){return _0xe5001f['getVoiceQueueRtPauses'](_0x1748c6['id'])['then'](function(_0x34b8ab){var _0x324c1a=_0x1748c6[_0xe55a('0x55')]-_0x34b8ab[0x0]['outboundQueuePauses'];var _0x5069a1=_0x1748c6['dialPredictiveInterval']*0x3c;var _0x3f4a2b=_0x3eaafc[0x0]['predictiveIntervalAvgTalktime']+_0x3eaafc[0x0][_0xe55a('0x6f')];var _0x332b20=(_0x3eaafc[0x0][_0xe55a('0x6e')]+_0x3eaafc[0x0][_0xe55a('0x86')]+_0x3eaafc[0x0][_0xe55a('0x71')])/_0x3eaafc[0x0]['predictiveIntervalTotalCalls'];var _0x50e6a9=_0x1748c6[_0xe55a('0x1d5')]/0x64;_0x1748c6[_0xe55a('0x75')]=_0x34b8ab[0x0]['outboundQueuePauses']||0x0;_0x1748c6['predictiveIntervalHitRate']=_0x332b20>0x0?_0x332b20:0x1;return _0xe5001f['abandonmentRate'](_0x324c1a,_0x5069a1,_0x3f4a2b,_0x332b20,_0x50e6a9);})[_0xe55a('0x40')](function(_0x561456){return _0x1d6e75(_0x561456);})[_0xe55a('0xb6')](function(_0x5314cd){return _0x11bec4(msgResponse(_0xe55a('0x1f0'),'Failure',JSON[_0xe55a('0x4e')](_0x5314cd)));});}if(_0x1748c6[_0xe55a('0x1df')]==='agentBusyFactor'){return _0xe5001f['getVoiceQueueRtPauses'](_0x1748c6['id'])[_0xe55a('0x40')](function(_0x1f4e6a){var _0x248573=_0x1748c6[_0xe55a('0x55')]-_0x1f4e6a[0x0]['outboundQueuePauses'];var _0x5a0c47=_0x1748c6[_0xe55a('0x1dd')]*0x3c;var _0x305121=_0x3eaafc[0x0][_0xe55a('0x70')]+_0x3eaafc[0x0][_0xe55a('0x6f')];var _0x233a07=(_0x3eaafc[0x0][_0xe55a('0x6e')]+_0x3eaafc[0x0][_0xe55a('0x86')]+_0x3eaafc[0x0][_0xe55a('0x71')])/_0x3eaafc[0x0][_0xe55a('0x77')];var _0x77eb78=_0x1748c6['dialPredictiveOptimizationPercentage']/0x64;_0x1748c6['predictiveIntervalPauses']=_0x1f4e6a[0x0][_0xe55a('0x1f1')]||0x0;_0x1748c6[_0xe55a('0x1f2')]=_0x233a07>0x0?_0x233a07:0x1;return _0xe5001f[_0xe55a('0x1f3')](_0x248573,_0x5a0c47,_0x305121,_0x233a07,_0x77eb78);})['then'](function(_0x16291c){return _0x1d6e75(_0x16291c);})['catch'](function(_0x8e7c28){return _0x11bec4(msgResponse(_0xe55a('0x1f0'),'Failure',JSON[_0xe55a('0x4e')](_0x8e7c28)));});}}else{return _0x11bec4(msgResponse(_0xe55a('0x1ee'),_0xe55a('0x150'),_0xe55a('0x1f4')));}});};};Dialer['prototype']['startMethodPredictive']=function(_0x38854b){var _0x3b3896=this;return function(){var _0x1bdcbe=0x0;var _0x5e5303=Math[_0xe55a('0x1d9')](_0x38854b['erlangCallToSecond']*0x3e8);if(_0x5e5303>0x0){_0x5e5303=_0x5e5303<0x64?0x64:_0x5e5303;loggerPredictive[_0xe55a('0x83')](_0x38854b[_0xe55a('0x44')],_0xe55a('0x1f5'),_0x5e5303,_0xe55a('0x4f'));_0x38854b['handlePredictive']=setInterval(function(){_0x3b3896['handlePredictive'](_0x38854b);loggerPredictiveCalls[_0xe55a('0x83')](_0xe55a('0x1f6'),_0x1bdcbe+=0x1);},_0x5e5303);}else{loggerPredictive[_0xe55a('0x83')](_0x38854b[_0xe55a('0x44')],_0xe55a('0x1f7'));}};};Dialer[_0xe55a('0x1c')][_0xe55a('0x1f8')]=function(_0x2b3c4c,_0x41604b){var _0x29e9b0=this;return function(_0x212055){if(_[_0xe55a('0x4c')](_0x212055)){if(_[_0xe55a('0xb2')](_0x41604b[_0xe55a('0x1f9')])||!_0x41604b[_0xe55a('0x1fa')]){if(_0x2b3c4c['dialMethod']===_0xe55a('0x7')){_0x2b3c4c[_0xe55a('0x138')]=_[_0xe55a('0x8c')](_0x2b3c4c['queueStatusComplete'])?!![]:_0x2b3c4c[_0xe55a('0x138')];var _0x2c4066=uuid['v4']();_0x29e9b0[_0xe55a('0x27')][_0x2c4066]=new Action(_0x2b3c4c,_0x41604b,_0x2c4066);loggerBooked[_0xe55a('0x83')](_0xe55a('0x1fb'),_0x2c4066,_0xe55a('0x1fc'),JSON['stringify'](_0x2b3c4c['queueStatusComplete']),_0xe55a('0x1fd'),_0x2b3c4c[_0xe55a('0x44')]);if(_0x2b3c4c['queueStatusComplete']){_0x2b3c4c[_0xe55a('0x138')]=![];_0x29e9b0['queueBooked'][_0x29e9b0[_0xe55a('0x27')][_0x2c4066][_0xe55a('0xb9')]]=[];ami[_0xe55a('0xb3')]({'actionid':_0x2c4066,'action':_0xe55a('0x1fe'),'queue':_0x2b3c4c[_0xe55a('0x44')]})[_0xe55a('0xb6')](function(){_0x29e9b0[_0xe55a('0xb8')](_0x2b3c4c);_0x29e9b0['rescheduleContact']({'active':![],'ContactId':_0x29e9b0[_0xe55a('0x27')][_0x2c4066][_0xe55a('0x105')],'ListId':_0x29e9b0['actions'][_0x2c4066][_0xe55a('0x106')],'VoiceQueueId':_0x29e9b0[_0xe55a('0x27')][_0x2c4066][_0xe55a('0xdc')]||undefined,'CampaignId':_0x29e9b0[_0xe55a('0x27')][_0x2c4066][_0xe55a('0xdd')]||undefined})[_0xe55a('0xb6')](loggerCatch('[unlockOriginate][syncQueueStatusComplete]'));delete _0x29e9b0['actions'][_0x2c4066];});}else{loggerBooked['info']('[booked][checkContactBlack][else]',JSON[_0xe55a('0x4e')](_0x2b3c4c[_0xe55a('0x138')]),'Queue:\x20',_0x2b3c4c[_0xe55a('0x44')]);_0x29e9b0[_0xe55a('0xb8')](_0x2b3c4c);_0x29e9b0['rescheduleContact']({'active':![],'ContactId':_0x29e9b0[_0xe55a('0x27')][_0x2c4066][_0xe55a('0x105')],'ListId':_0x29e9b0[_0xe55a('0x27')][_0x2c4066][_0xe55a('0x106')],'VoiceQueueId':_0x29e9b0[_0xe55a('0x27')][_0x2c4066]['VoiceQueueId']||undefined,'CampaignId':_0x29e9b0['actions'][_0x2c4066][_0xe55a('0xdd')]||undefined})[_0xe55a('0xb6')](loggerCatch(_0xe55a('0x1ff')));delete _0x29e9b0[_0xe55a('0x27')][_0x2c4066];}}else{return _0x29e9b0[_0xe55a('0x200')](_0x2b3c4c,_0x41604b);}}else{if(getDiff(_0x41604b[_0xe55a('0x201')])<_0x2b3c4c[_0xe55a('0x202')]*0x3c){if(_0x41604b[_0xe55a('0x166')]&&!_0x41604b['Agent']['voicePause']){_0x29e9b0[_0xe55a('0x20')][_0xe55a('0x13a')](_0x41604b['id'])[_0xe55a('0x13d')](function(){_0x29e9b0[_0xe55a('0xb8')](_0x2b3c4c);});}else{_0x29e9b0[_0xe55a('0xca')]({'active':![]},_0x41604b['id'],0x1)['finally'](function(){_0x29e9b0[_0xe55a('0xb8')](_0x2b3c4c);});}}else{_0x2b3c4c['outboundReCallsDay']+=0x1;_0x29e9b0[_0xe55a('0xb8')](_0x2b3c4c);if(_0x2b3c4c[_0xe55a('0x203')]){_0x29e9b0[_0xe55a('0xc8')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x41604b[_0xe55a('0x105')],'ListId':_0x41604b[_0xe55a('0x106')],'VoiceQueueId':_0x41604b[_0xe55a('0xdc')]||undefined,'CampaignId':_0x41604b['CampaignId']||undefined})[_0xe55a('0xb6')](loggerCatch(_0xe55a('0x204')));_0x29e9b0[_0xe55a('0xd5')](createObjHistory(_0x2b3c4c,_0x41604b,_0xe55a('0x205'),0x17,_0xe55a('0x206')))[_0xe55a('0xb6')](loggerCatch(_0xe55a('0x207')));}else{_0x29e9b0[_0xe55a('0xda')](createObjHistory(_0x2b3c4c,_0x41604b,_0xe55a('0x208'),0x16,_0xe55a('0x209')),'[Originate][HistoryRecallClose][historyCatch]','[Originate][HistoryRecallClose]');}}}}else{_0x2b3c4c[_0xe55a('0x67')]+=0x1;_0x29e9b0[_0xe55a('0xda')](createObjHistory(_0x2b3c4c,_0x41604b,_0xe55a('0x20a'),0xd,_0xe55a('0x20b')),_0xe55a('0x20c'),'[Originate][MoveBlacklist]');throw _0xe55a('0x20d');}};};Dialer[_0xe55a('0x1c')]['handleIvr']=function(_0xfea05b){var _0x2cfc35=this;var _0x1a62b3=_0xfea05b['limitCalls']-_0xfea05b['originated']-_0xfea05b[_0xe55a('0xcd')];emitCampaignSummary(_0xfea05b);if(_0x1a62b3>0x0){if(_0x1a62b3>this['maxNumberOriginate']){_0x1a62b3=this[_0xe55a('0x25')];}_0xfea05b['temp']+=_0x1a62b3;this[_0xe55a('0xcf')](_0xfea05b['id'],_0x1a62b3,_0xfea05b[_0xe55a('0x20e')],_0xfea05b)[_0xe55a('0x40')](function(_0x485ad4){_0xfea05b[_0xe55a('0xcd')]-=_0x1a62b3;_0xfea05b['temp']=_0xfea05b[_0xe55a('0xcd')]>0x0?_0xfea05b[_0xe55a('0xcd')]:0x0;if(!checkContactEmpty(_0x485ad4)){_0xfea05b[_0xe55a('0x42')]='AVAILABLE_CONTACTS_FINISHED';logger[_0xe55a('0x83')]('[getContactCampaign2][Empty]'+_0xfea05b['name']);}else{_0xfea05b[_0xe55a('0x78')]+=_0x485ad4[_0xe55a('0x140')];_0xfea05b['message']=_0xe55a('0x20f');for(var _0x5bdc23=0x0;_0x5bdc23<_0x485ad4[_0xe55a('0x140')];_0x5bdc23+=0x1){_0xfea05b[_0xe55a('0x210')]+=0x1;if(_[_0xe55a('0xb2')](_0x485ad4[_0x5bdc23])||_[_0xe55a('0xb2')](_0x485ad4[_0x5bdc23]['Contact'])||_[_0xe55a('0xb2')](_0x485ad4[_0x5bdc23][_0xe55a('0x175')])){_0x2cfc35[_0xe55a('0xd8')](_0xe55a('0x211'),_0xfea05b,_0x485ad4[_0x5bdc23]);}else{_0x2cfc35['checkIsBlackListIvr'](_[_0xe55a('0xdb')](_0x485ad4[_0x5bdc23],[_0xe55a('0xdd'),'Contact.phone']))[_0xe55a('0x40')](_0x2cfc35[_0xe55a('0x1f8')](_0xfea05b,_0x485ad4[_0x5bdc23]))[_0xe55a('0xb6')](_0x2cfc35[_0xe55a('0x212')]('[actionOriginateIvr]\x20',_0xfea05b));}}}})[_0xe55a('0xb6')](loggerGetContactDialer('[getContactCampaign2]',_0xfea05b,_0x1a62b3));}};Dialer[_0xe55a('0x1c')]['handlePower']=function(_0x539a48,_0x2d2b4f){var _0x9cfdad=this;var _0x2a05c4=[];var _0x1d9aaf=_0x2d2b4f>=0x1?_0x2d2b4f:0x1;if(_0x539a48[_0xe55a('0x60')]==='booked'){_0x1d9aaf=0x1;}var _0x4cbd4e=Math[_0xe55a('0x1d9')](_0x539a48[_0xe55a('0x54')]*_0x1d9aaf)-_0x539a48[_0xe55a('0x78')]-_0x539a48['temp'];emitVoiceQueueSummary(_0x539a48);if(_0x539a48[_0xe55a('0x213')]>0x0){var _0x43247e=_0x539a48['dialLimitQueue']-_0x539a48[_0xe55a('0x78')]-_0x539a48[_0xe55a('0xa7')]-_0x539a48[_0xe55a('0xcd')]-_0x539a48[_0xe55a('0x56')];if(_0x4cbd4e>_0x43247e){_0x4cbd4e=_0x43247e;}}if(_0x4cbd4e>0x0){if(_0x539a48[_0xe55a('0x60')]===_0xe55a('0x7')){_0x4cbd4e=0x1;}if(_0x4cbd4e>this['maxNumberOriginate']){_0x4cbd4e=this['maxNumberOriginate'];}_0x539a48[_0xe55a('0xcd')]+=_0x4cbd4e;for(var _0x3cc717 in this[_0xe55a('0x23')]){if(typeof this[_0xe55a('0x23')][_0x3cc717]!==_0xe55a('0x9f')){if(this[_0xe55a('0x23')][_0x3cc717][_0xe55a('0xec')]===_0xe55a('0x214')&&this['agents'][_0x3cc717][_0xe55a('0xb4')]===_0xe55a('0xe3')){_0x2a05c4[_0xe55a('0x137')](this[_0xe55a('0x23')][_0x3cc717]['id']);}}}this['getContactDialer'](_0x539a48['id'],_0x2a05c4,_0x4cbd4e,_0x539a48[_0xe55a('0x20e')],_0x539a48)['then'](function(_0x492810){_0x539a48[_0xe55a('0xcd')]-=_0x4cbd4e;_0x539a48['temp']=_0x539a48[_0xe55a('0xcd')]>0x0?_0x539a48['temp']:0x0;if(!checkContactEmpty(_0x492810)){_0x9cfdad[_0xe55a('0xbc')](_0x539a48)['then'](sendMessageReschedule(_0x539a48))[_0xe55a('0xb6')](loggerCatch('[countReScheduled]\x20'));}else{_0x539a48[_0xe55a('0x78')]+=_0x492810[_0xe55a('0x140')];_0x539a48[_0xe55a('0x42')]=_0x539a48['dialMethod']===_0xe55a('0x7')?_0xe55a('0x17e'):_0xe55a('0x20f');for(var _0x16e6df=0x0;_0x16e6df<_0x492810['length'];_0x16e6df+=0x1){if(_[_0xe55a('0xb2')](_0x492810[_0x16e6df])||_[_0xe55a('0xb2')](_0x492810[_0x16e6df][_0xe55a('0x18c')])||_[_0xe55a('0xb2')](_0x492810[_0x16e6df][_0xe55a('0x175')])){_0x9cfdad[_0xe55a('0xd8')](_0xe55a('0x211'),_0x539a48,_0x492810[_0x16e6df]);}else{_0x9cfdad[_0xe55a('0xbe')](_['pick'](_0x492810[_0x16e6df],[_0xe55a('0xdc'),_0xe55a('0x215')]))['then'](_0x9cfdad[_0xe55a('0x1f8')](_0x539a48,_0x492810[_0x16e6df]))[_0xe55a('0xb6')](_0x9cfdad[_0xe55a('0x212')]('[actionOriginate]\x20',_0x539a48));}}}})[_0xe55a('0xb6')](loggerGetContactDialer(_0xe55a('0x216'),_0x539a48,_0x4cbd4e));}};Dialer[_0xe55a('0x1c')][_0xe55a('0x96')]=function(_0x1d1b26){if(_0x1d1b26[_0xe55a('0x213')]>0x0){var _0x5aeb19=_0x1d1b26[_0xe55a('0x213')]-_0x1d1b26[_0xe55a('0x78')]-_0x1d1b26['talking'];if(_0x5aeb19>0x0){this[_0xe55a('0x217')](_0x1d1b26);}else{loggerPredictiveCalls['info']('[handlePredictive][limitChannel]');}}else{this[_0xe55a('0x217')](_0x1d1b26);}};Dialer['prototype'][_0xe55a('0x217')]=function(_0x542768){var _0x323fa0=this;var _0x334aa9=[];_0x542768[_0xe55a('0x78')]+=0x1;for(var _0x2f82b0 in this['agents']){if(typeof this['agents'][_0x2f82b0]!==_0xe55a('0x9f')){if(this[_0xe55a('0x23')][_0x2f82b0]['state']===_0xe55a('0x214')&&this[_0xe55a('0x23')][_0x2f82b0]['status']===_0xe55a('0xe3')){_0x334aa9[_0xe55a('0x137')](this['agents'][_0x2f82b0]['id']);}}}this['getContactDialer'](_0x542768['id'],_0x334aa9,0x1,_0x542768[_0xe55a('0x20e')],_0x542768)[_0xe55a('0x40')](function(_0x1eb2c2){if(!checkContactEmpty(_0x1eb2c2)){checkContactLowerLimitOriginate(_0x542768,0x1,0x0);_0x323fa0['countReScheduled'](_0x542768)[_0xe55a('0x40')](sendMessageReschedule(_0x542768))['catch'](loggerCatch(_0xe55a('0x218')));}else{_0x542768[_0xe55a('0x42')]=_0xe55a('0x20f');if(_[_0xe55a('0xb2')](_0x1eb2c2[0x0])||_['isNil'](_0x1eb2c2[0x0][_0xe55a('0x18c')])||_[_0xe55a('0xb2')](_0x1eb2c2[0x0]['phone'])){_0x323fa0[_0xe55a('0xd8')](_0xe55a('0x211'),_0x542768,_0x1eb2c2[0x0]);}else{_0x323fa0[_0xe55a('0xbe')](_[_0xe55a('0xdb')](_0x1eb2c2[0x0],['VoiceQueueId',_0xe55a('0x215')]))['then'](_0x323fa0['checkContactBlack'](_0x542768,_0x1eb2c2[0x0]))[_0xe55a('0xb6')](_0x323fa0[_0xe55a('0x212')](_0xe55a('0x219'),_0x542768));}}})[_0xe55a('0xb6')](loggerGetContactDialer('[getContactDialerPredictive]',_0x542768,0x1));emitVoiceQueueSummary(_0x542768);};Dialer[_0xe55a('0x1c')]['abandonmentRate']=function(_0x3635dc,_0x1ddefd,_0x17a29c,_0x31617d,_0x354ac3,_0x4d8614){loggerPredictive['info'](_0xe55a('0x21a'));loggerPredictive[_0xe55a('0x83')](_0xe55a('0x21b'),_0x3635dc);loggerPredictive[_0xe55a('0x83')](_0xe55a('0x21c'),_0x1ddefd);loggerPredictive[_0xe55a('0x83')](_0xe55a('0x21d'),_0x17a29c);loggerPredictive[_0xe55a('0x83')]('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',_0x31617d);loggerPredictive['info']('Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x354ac3);loggerPredictive[_0xe55a('0x83')](_0xe55a('0x8a'));return new BPromise(function(_0x1c1e69,_0x6699c0){if(_0x3635dc<=0x0||isNaN(_0x3635dc)){return _0x6699c0(msgResponse(_0xe55a('0x21e'),_0xe55a('0x4d'),'m\x20=\x20'+_0x3635dc));}if(_0x17a29c<=0x0||isNaN(_0x17a29c)){return _0x6699c0(msgResponse(_0xe55a('0x21e'),_0xe55a('0x4d'),_0xe55a('0x21f')+_0x17a29c));}if(_0x31617d<=0x0||isNaN(_0x31617d)){return _0x6699c0(msgResponse(_0xe55a('0x21e'),_0xe55a('0x4d'),_0xe55a('0x220')+_0x31617d));}if(_0x1ddefd<=0x0||isNaN(_0x1ddefd)){return _0x6699c0(msgResponse(_0xe55a('0x21e'),_0xe55a('0x4d'),_0xe55a('0x221')+_0x1ddefd));}if(_0x354ac3<=0x0||isNaN(_0x354ac3)){return _0x6699c0(msgResponse(_0xe55a('0x21e'),'Error',_0xe55a('0x222')+_0x354ac3));}_0x4d8614=_0x4d8614||0x0;var _0x4ccb99=0x1/_0x17a29c;var _0x30afef=0x0;var _0xc41b0a=0x0;var _0x517b3b=0x0;var _0x14e604=0x0;for(var _0x100b34=0x0;_0x517b3b<_0x354ac3;_0x100b34+=0x1){_0xc41b0a=_0x100b34/_0x1ddefd;_0x30afef=(_0x31617d*_0xc41b0a+_0x4d8614)/_0x4ccb99;_0x517b3b=erlangb(_0x30afef,_0x3635dc);_0x14e604=_0x30afef/_0x3635dc*(0x1-erlangb(_0x30afef,_0x3635dc));}return _0x1c1e69({'erlangCalls':_0x100b34,'erlangCallToSecond':_0x1ddefd/_0x100b34,'erlangAbandonmentRate':_0x517b3b,'erlangBusyFactor':_0x14e604});});};Dialer[_0xe55a('0x1c')][_0xe55a('0x1f3')]=function(_0x4365cb,_0x20a705,_0x490cc1,_0x5cb32c,_0x454f27,_0x17fda5){loggerPredictive['info']('----\x20Agent\x20Busy\x20Factor\x20----');loggerPredictive['info']('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',_0x4365cb);loggerPredictive[_0xe55a('0x83')](_0xe55a('0x21c'),_0x20a705);loggerPredictive[_0xe55a('0x83')](_0xe55a('0x21d'),_0x490cc1);loggerPredictive[_0xe55a('0x83')](_0xe55a('0x223'),_0x5cb32c);loggerPredictive[_0xe55a('0x83')]('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x454f27);loggerPredictive['info'](_0xe55a('0x8a'));return new BPromise(function(_0xff189e,_0x21bf44){if(_0x4365cb<=0x0||isNaN(_0x4365cb)){return _0x21bf44(msgResponse(_0xe55a('0x224'),'Error',_0xe55a('0x225')+_0x4365cb));}if(_0x490cc1<=0x0||isNaN(_0x490cc1)){return _0x21bf44(msgResponse(_0xe55a('0x224'),_0xe55a('0x4d'),'Ts\x20=\x20'+_0x490cc1));}if(_0x5cb32c<=0x0||isNaN(_0x5cb32c)){return _0x21bf44(msgResponse(_0xe55a('0x224'),_0xe55a('0x4d'),_0xe55a('0x220')+_0x5cb32c));}if(_0x20a705<=0x0||isNaN(_0x20a705)){return _0x21bf44(msgResponse(_0xe55a('0x224'),_0xe55a('0x4d'),'interval\x20=\x20'+_0x20a705));}if(_0x454f27<=0x0||isNaN(_0x454f27)){return _0x21bf44(msgResponse(_0xe55a('0x224'),_0xe55a('0x4d'),_0xe55a('0x226')+_0x454f27));}_0x17fda5=_0x17fda5||0x0;var _0xd07a4=0x1/_0x490cc1;var _0x9023ac=0x0;var _0x27e11a=0x0;var _0x522f98=0x0;var _0x56f3d0=0x0;for(var _0x1b5967=0x0;_0x56f3d0<_0x454f27;_0x1b5967+=0x1){_0x27e11a=_0x1b5967/_0x20a705;_0x9023ac=(_0x5cb32c*_0x27e11a+_0x17fda5)/_0xd07a4;_0x522f98=erlangb(_0x9023ac,_0x4365cb);_0x56f3d0=_0x9023ac/_0x4365cb*(0x1-erlangb(_0x9023ac,_0x4365cb));}return _0xff189e({'erlangCalls':_0x1b5967,'erlangCallToSecond':_0x20a705/_0x1b5967,'erlangAbandonmentRate':_0x522f98,'erlangBusyFactor':_0x56f3d0});});};module[_0xe55a('0x227')]=Dialer;
\ No newline at end of file
+var _0xa68c=['is\x20disactive','state','starttime','prototype','clearZombieChannels','uniqueId','[uniqueid]','[actions]','Action','channel','catch','No\x20such\x20channel','updateOriginated','[Dialer][checkChannel]','queue','[Dialer][checkChannel][ivr]','countReScheduled','resolve','then','[countReScheduled]\x20','checkIsBlackList','[checkIsBlackList]\x20','verifyAdditionalPhones','[verifyAdditionalPhone]\x20','swapAdditionalPhones','[swapAdditionalPhone]\x20','checkIsBlackListIvr','[checkIsBlackListIvr]\x20','averageHandleTime','avgHandleTime','rescheduleContact','[rescheduleContact]\x20','unlockContact','getContactDialer','temp','getContactDialerIvr','getVoiceQueueRtPauses','[getVoiceQueueRtPauses]\x20','moveContactManagedDialer','createHistory','[createHistory]\x20','[updateOriginated]\x20is\x20null\x20or\x20undefined','loggerHandler','emptyContact','notFound','saveInDb','merge','pick','ContactId','ListId','UserId','VoiceQueueId','[emptyContact]','isSuccess','Success','isTrunkReachable','SIP/%s','status','reachable','unmonitored','syncVarSet','isNil','variable','amdstatus','exten','xcally-motion-dialer','dialAMDActive','value','HANGUP','uniqueid','HangupInAMD','membername','AMD','custom:amd','buildObj','amd','[syncHangupInAMD][createHistory]','[syncHangupInAMD]','MACHINE','statedesc','Machine','countglobal','[syncAgentComplete][createHistory][0]','countbusyretry','countcongestionretry','countnoanswerretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','countagentrejectretry','reason19\x20machine....','createStateFinal','reason\x2019\x20machine....','add','dialMachineRetryFrequency','minutes','YYYY-MM-DD\x20HH:mm:ss','CampaignId','[rescheduleContact][Machine]','[syncHangupInAMDIvr]','dialGlobalMaxRetry','stateGlobal','dialMachineMaxRetry','ivrAnswerCallsDay','[syncHangupIvr][createHistory]','[syncHangupIvr]','AnswerAGI','AGI','dialQueueProject','cause-txt','syncAgentComplete','reason','agent','dialQueueProject2','dialAgiAfterHangupAgent','[syncAgentComplete][createHistory]','[syncAgentComplete]','answertime','[syncQueueCallerAbandon]\x20[Drop]','droptime','responsetime','dialQueueTimeout','predictiveIntervalDroppedCallsTimeout','Drop','TIMEOUT','agiafterat','dialDropRetryFrequency','callAdditionalPhoneAfterMin','voiceQueue','additional','queueCallerAbandonCreateState','[rescheduleContact][Drop]','calleridname','calleridnum','[syncAgentComplete][createHistory][10]','Abandoned','dropreason','CALLEREXIT','dialAbandonedMaxRetry','[rescheduleContact][Abandoned]','[syncAgentComplete][createHistory][11]','syncQueueMember','actionid','locked','stateinterface','push','queueStatusComplete','[unlockQueueStatus][undefined]','idHopper','[Catch][Preview][syncQueueStatusComplete]','[unlock][syncQueueStatusComplete]','_rr','paused','unlockRR','[booked][RR]','Agent:\x20','run','[unlock2][syncQueueStatusComplete]','[booked][unlock3]','[unlock3][syncQueueStatusComplete]','resetActiveCalls','syncCampaigns','checkIsTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ifTime','checkIfTimeIntervals','Failure','\x20Intervals\x20is\x20null\x20','INTERVAL_IS_EMPTY','\x20Intervals\x20is\x20empty\x20','timezones','TIMEZONE_UNKNOW','\x20Timezone\x20unknow\x20','isArray','command','iftime\x20%s,%s','interval','indexOf','true','content','all','INTERVAL_IS_OVERTIME','Global:\x20','\x20Interval\x20is\x20overtime:\x20','progressive','handlePower','power','dialPowerLevel','booked','Queue','method\x20not\x20recognized','dialGlobalInterval','dialTimezone','checkDialMethod','[syncQueueSummary]','syncQueueSummaryComplete','throttle','dialPreviewRecallmeReminder','filter','online','Agent','user:%s','checkPreviewRecallReminder','checkIfTime','launchHandleIvr','[syncCampaigns]','\x5cw{0,','pow','replace','random','actionOriginate','object','originate','phone','getCaller','\x22agi://%s/square,%s\x22','NONE','\x22%s,%s%s,,,%s\x22','dialQueueOptions','dialer','ACTIVE','XMD-AMDINITIALSILENCE','dialAMDInitialSilence','XMD-AMDAFTERGREETINGSILENCE','dialAMDAfterGreetingSilence','XMD-AMDTOTALANALYSISTIME','XMD-AMDMINWORDLENGTH','dialAMDMinWordLength','XMD-AMDBETWEENWORDSSILENCE','dialAMDBetweenWordsSilence','XMD-AMDMAXIMUMNUMBEROFWORDS','dialAMDMaximumNumberOfWords','XMD-AMDMAXIMUMWORDLENGTH','dialAMDMaximumWordLength','XMD-VOICEQUEUEID','Contact','tags','createdAt','updatedAt','%s%s','XMD-','toUpper','callerid','dialRandomLastDigitCallerIdNumber','XMD-ORIGINATECALLERIDNAME','originatecalleridname','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','substring','from-sip','outboundOriginateFailureCallsDay','[originateError]:\x20%s','OriginateError','endtime','[originate][error]','Error','originate\x20action\x20Error','syncOriginateResponse','getQueue','response','callProgressDetecting','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','[rescheduleContact][NoAnswer]','dialBusyMaxRetry','dialBusyRetryFrequency','[rescheduleContact]\x20[Busy]','dialCongestionMaxRetry','[rescheduleContact]\x20[Congestion]','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','[rescheduleContact][NoSuchNumber]','dialDropMaxRetry','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','[rescheduleContact][AgentReject]','[callProgressDetecting]','NoSuchNumber','checkRetriveMax','reason\x200\x20no\x20such\x20number....','NoAnswer','custom:agentnoanswer','[syncAgentComplete][createHistory][3]','reason\x203\x20ringing\x20no\x20answer','outboundBusyCallsDay','Busy','custom:agentbusy','[syncAgentComplete][createHistory][5]','reason\x205\x20busy','Congestion','dialCongestionRetryFrequency','custom:agentcongestion','[syncAgentComplete][createHistory][8]','reason\x208\x20congestion','outboundAbandonedCallsDay','dialAbandonedRetryFrequency','reason\x2011\x20abandoned','outboundRejectCallsDay','AgentReject','custom:agentreject','agentreject','[syncAgentComplete][createHistory][20]','reason\x2020\x20agentreject','[syncAgentComplete][createHistory][?]','[moveContactManagedDialer][0]','contact\x20not\x20moved','dialPredictiveOptimizationPercentage','round','predictiveIntervalMinThreshold','floor','predictiveIntervalMultiplicativeFactor','[startMethodPredictive][StartProgressive]','check\x20predictive\x20is\x20not\x20undefine','check\x20handlePredictive\x20is\x20not\x20undefine','collection\x20data\x20in\x20progressive\x20at','dialPredictiveInterval','[startMethodPredictive][StartProgressive][Loop]','dialPredictiveOptimization','dropRate','[stopMethodPredictive][ReStartProgressive][ExceededDropDay]','Dropped\x20calls\x20day','[stopMethodPredictive][ReStartProgressive][ExceededDropInterval]','Max\x20Drop\x20','Drop\x20in\x20this\x20interval','started\x20in\x20predictive\x20at','startMethodPredictive','Predictive\x20after\x20first\x20interval','recalculate\x20predictive\x20at','getDataPredictive','switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',')\x20are\x20more\x20than\x20threshold\x20(','abandonmentRate','busyFactor','[getDataPredictive]','Unknown\x20Predictive','getDataPredictiveOld','outboundQueuePauses','[CatchErlangB]','agentBusyFactor','check\x20failure','[handlePredictive]','fail\x20to\x20scheduled\x20calls','checkContactBlack','[booked][checkContactBlack]','queueStatusComplete:\x20','Queue:\x20','[unlockOriginate][syncQueueStatusComplete]','[booked][checkContactBlack][else]','scheduledat','dialRecallMeTimeout','voicePause','dialRecallInQueue','[rescheduleContact][dialRecallInQueue]','RecallInQueue','[Originate][HistoryDialRecallInQueue][historyCatch]','RECALLFAILEDTIMEOUT','RecallFailedTimeout','[Originate][HistoryRecallClose][historyCatch]','BLACKLIST','[Originate][MoveBlacklist]','inBlackList','limitCalls','dialOrderByScheduledAt','[getContactCampaign2][Empty]','RUNNING','[actionOriginateIvr]\x20','[getContactCampaign2]','dialLimitQueue','pTalking','not_inuse','[actionOriginate]\x20','Contact.phone','[getContactDialer2]','tryOriginatePredictive','[handlePredictive][limitChannel]','[getContactDialerPredictive]','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','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','m\x20=\x20','[abandonmentRate]','Ts\x20=\x20','p\x20=\x20','interval\x20=\x20','----\x20Agent\x20Busy\x20Factor\x20----','[busyFactor]','util','lodash','bluebird','uuid','moment','md5','ioredis','../preview/util/util','../../../config/environment/','../../../config/logger','predictive','predictiveCalls','syncQueueSummary','../ami','redis','defaults','localhost','socket.io-emitter','../rpc/cmHopperFinal','../rpc/cmHopperAdditionalPhone','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/setting','./action','./final','./agentComplete','./queueCallerAbandon','env','127.0.0.1','rrmemory','enqueue','tail','finally','sequence','preview','voiceQueues','campaigns','agents','trunks','maxNumberOriginate','channels','actions','startPredictive','startProgressive','ivrOriginated','queueBooked','queueBookedRR','agentconnect','syncAgentConnect','queuecallerabandon','syncQueueCallerAbandon','bind','custom:queuesummarycomplete','hangup','syncHangup','newexten','syncNewExten','varset','queuemember','queuestatuscomplete','syncQueueStatusComplete','loopCampaigns','loopClearZombieChannels','getSettings','previewRecallmeReminderInterval','isUndefined','message','\x20AGENTS\x20NOT\x20LOGGED','\x20NOT\x20Active','Interval','INTERVAL_IS_NULL','name','\x20INTERVAL_IS_NULL','Intervals','isEmpty','[ifTime][Action]','stringify','milliseconds','diff','emit','type','strategy','available','loggedIn','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','loggedInDb','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundReCallsDay','outboundUnknownCallsDay','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalAvailable','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','Trunk','active','voice_queue:save','ivr','format','campaign:ivr:%s','campaign:save','info','-----\x20Stats\x20Predictive\x20---','predictiveIntervalTotalCalls','Answered\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','predictiveIntervalAnsweredCalls','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:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20','Avg\x20Talk\x20Time\x20is\x20not\x20enough\x20for\x20predictive','Total\x20Calls\x20are\x20not\x20enough\x20for\x20predictive','History\x20information\x20are\x20empty','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','Agent\x20Busy\x20Factor:\x20\x20\x20\x20\x20\x20\x20\x20\x20','---------------------------','clearing\x20variable\x20start\x20progressive','clearing\x20variable\x20start\x20predictive','handlePredictive','clearing\x20variable\x20handle\x20predictive','outbound','string','debug','inspect','stack','length','originated','undefined','error','[decremetOriginate]\x20object\x20originated\x20is\x20negative','contactsRescheduled','RESCHEDULED_CONTACTS','[getContactDialer2][ReScheduled]','AVAILABLE_CONTACTS_FINISHED','[getContactDialer2][Empty]','sendMessageOneNotActive','waiting','NOT_ACTIVE','[syncQueueSummary]\x20Campaign\x20Queue:\x20','[syncQueueSummary]\x20Campaign\x20Ivr:\x20','is\x20not\x20active','IS_DISACTIVED'];(function(_0x1b92d7,_0x30b5cb){var _0x330dae=function(_0x28da4a){while(--_0x28da4a){_0x1b92d7['push'](_0x1b92d7['shift']());}};_0x330dae(++_0x30b5cb);}(_0xa68c,0x187));var _0xca68=function(_0x2b10c6,_0x185590){_0x2b10c6=_0x2b10c6-0x0;var _0x3789d2=_0xa68c[_0x2b10c6];return _0x3789d2;};'use strict';var util=require(_0xca68('0x0'));var _=require(_0xca68('0x1'));var BPromise=require(_0xca68('0x2'));var uuid=require(_0xca68('0x3'));var moment=require(_0xca68('0x4'));var rr=require('rr');var md5=require(_0xca68('0x5'));var Redis=require(_0xca68('0x6'));var ut=require(_0xca68('0x7'));var config=require(_0xca68('0x8'));var logger=require('../../../config/logger')('dialer');var loggerBooked=require(_0xca68('0x9'))('booked');var loggerPredictive=require(_0xca68('0x9'))(_0xca68('0xa'));var loggerPredictiveCalls=require(_0xca68('0x9'))(_0xca68('0xb'));var loggerSyncQueueSummary=require(_0xca68('0x9'))(_0xca68('0xc'));var ami=require(_0xca68('0xd'));config[_0xca68('0xe')]=_[_0xca68('0xf')](config[_0xca68('0xe')],{'host':_0xca68('0x10'),'port':0x18eb});var io=require(_0xca68('0x11'))(new Redis(config[_0xca68('0xe')]));var cmHopper=require('../rpc/cmHopper');var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperFinal=require(_0xca68('0x12'));var cmHopperAdditionalPhone=require(_0xca68('0x13'));var cmHopperBlack=require(_0xca68('0x14'));var voiceQueueRt=require(_0xca68('0x15'));var RpcSetting=require(_0xca68('0x16'));var Action=require(_0xca68('0x17'));var History=require('./history');var Final=require(_0xca68('0x18'));var AgentComplete=require(_0xca68('0x19'));var QueueCallerAbandon=require(_0xca68('0x1a'));var Hangup=require('./hangup');var ipAgi=process[_0xca68('0x1b')]['XCALLY_IP_AGI']||_0xca68('0x1c');var strategy={'rrmemory':_0xca68('0x1d'),'roundrobin':'roundrobin'};var previewRecallmeReminderInterval=0x1;var Sequence=function(){};Sequence['prototype'][_0xca68('0x1e')]=function(_0x252712){this[_0xca68('0x1f')]=this[_0xca68('0x1f')]?this[_0xca68('0x1f')][_0xca68('0x20')](_0x252712):_0x252712();};function Dialer(_0x44a9dc,_0x3fda43){this[_0xca68('0x21')]=new Sequence();this[_0xca68('0x22')]=_0x3fda43;this[_0xca68('0x23')]=_0x44a9dc[_0xca68('0x23')];this[_0xca68('0x24')]=_0x44a9dc[_0xca68('0x24')];this[_0xca68('0x25')]=_0x44a9dc[_0xca68('0x25')];this['trunks']=_0x44a9dc[_0xca68('0x26')];this['maxNumberOriginate']=config[_0xca68('0x27')]||0x2;this[_0xca68('0x28')]={};this[_0xca68('0x29')]={};this['contactsId']={};this['uniqueId']={};this['optionPredictive']={};this[_0xca68('0x2a')]={};this[_0xca68('0x2b')]={};this[_0xca68('0x2c')]={};this[_0xca68('0x2d')]={};this[_0xca68('0x2e')]={};ami['on'](_0xca68('0x2f'),this[_0xca68('0x30')]['bind'](this));ami['on'](_0xca68('0x31'),this[_0xca68('0x32')][_0xca68('0x33')](this));ami['on']('originateresponse',this['syncOriginateResponse'][_0xca68('0x33')](this));ami['on']('agentcomplete',this['syncAgentComplete'][_0xca68('0x33')](this));ami['on']('custom:queuesummary',this[_0xca68('0xc')][_0xca68('0x33')](this));ami['on'](_0xca68('0x34'),this['syncQueueSummaryComplete'][_0xca68('0x33')](this));ami['on'](_0xca68('0x35'),this[_0xca68('0x36')][_0xca68('0x33')](this));ami['on'](_0xca68('0x37'),this[_0xca68('0x38')][_0xca68('0x33')](this));ami['on'](_0xca68('0x39'),this['syncVarSet']['bind'](this));ami['on'](_0xca68('0x3a'),this['syncQueueMember'][_0xca68('0x33')](this));ami['on'](_0xca68('0x3b'),this[_0xca68('0x3c')][_0xca68('0x33')](this));this[_0xca68('0x3d')]();this[_0xca68('0x3e')]();RpcSetting[_0xca68('0x3f')]()['then'](function(_0xb32707){previewRecallmeReminderInterval=_0xb32707[_0xca68('0x40')];});}function isNotNull(_0x264e34){return _0x264e34!==null&&!_[_0xca68('0x41')](_0x264e34);}function checkIsLoggedIn(_0x42fc47,_0x1383dc){return function(){if(_0x1383dc<=0x0){_0x42fc47[_0xca68('0x42')]='AGENTS_NOT_LOGGED';throw _0x42fc47['name']+_0xca68('0x43');}};}function isActive(_0x3cdbd3){return _0x3cdbd3;}function checkIsActive(_0x5233d7,_0xc4012c){return function(){if(!isActive(_0xc4012c)){_0x5233d7[_0xca68('0x42')]='NOT_ACTIVE';throw _0x5233d7['name']+_0xca68('0x44');}};}function checkInterval(_0x415246){return function(){if(!isNotNull(_0x415246[_0xca68('0x45')])){_0x415246[_0xca68('0x42')]=_0xca68('0x46');throw _0x415246[_0xca68('0x47')]+_0xca68('0x48');}if(!isNotNull(_0x415246[_0xca68('0x45')][_0xca68('0x49')])){_0x415246[_0xca68('0x42')]=_0xca68('0x46');throw _0x415246['name']+_0xca68('0x48');}if(!isNotNull(_[_0xca68('0x4a')](_0x415246[_0xca68('0x45')][_0xca68('0x49')]))){_0x415246[_0xca68('0x42')]=_0xca68('0x46');throw _0x415246['name']+_0xca68('0x48');}};}function msgResponse(_0x66c053,_0x489e99,_0x56ac2d){return{'action':_0x66c053,'response':_0x489e99,'message':_0x56ac2d,'stack':_0x56ac2d};}function myreject(_0x532807){return function(_0x2bde21){return _0x532807(msgResponse(_0xca68('0x4b'),'Error',JSON[_0xca68('0x4c')](_0x2bde21)));};}function getSeconds(_0x3d3333,_0x70e5ad){var _0x1a8cd9=moment(_0x3d3333)[_0xca68('0x4d')](0x0);var _0x4ab21e=moment(_0x70e5ad)[_0xca68('0x4d')](0x0);return _0x1a8cd9[_0xca68('0x4e')](_0x4ab21e,'seconds');}function emit(_0x1f5f89,_0x1ef265,_0x3fd9dd){io['to'](_0x1f5f89)[_0xca68('0x4f')](_0x1ef265,_0x3fd9dd);}function emitVoiceQueueSummary(_0xc49648){if(_0xc49648[_0xca68('0x50')]==='outbound'){var _0x4ba804={'id':_0xc49648['id'],'name':_0xc49648['name'],'strategy':_0xc49648[_0xca68('0x51')],'answered':_0xc49648['answered'],'available':_0xc49648[_0xca68('0x52')],'loggedIn':_0xc49648[_0xca68('0x53')],'pTalking':_0xc49648['pTalking'],'sumBillable':_0xc49648[_0xca68('0x54')],'sumDuration':_0xc49648[_0xca68('0x55')],'sumHoldTime':_0xc49648[_0xca68('0x56')]||0x0,'talking':_0xc49648[_0xca68('0x57')],'total':_0xc49648[_0xca68('0x58')],'type':_0xc49648[_0xca68('0x50')],'unmanaged':_0xc49648[_0xca68('0x59')],'abandoned':_0xc49648['abandoned'],'waiting':_0xc49648['waiting'],'loggedInDb':_0xc49648[_0xca68('0x5a')],'dialActive':_0xc49648[_0xca68('0x5b')],'dialMethod':_0xc49648[_0xca68('0x5c')],'dialOriginateCallerIdName':_0xc49648[_0xca68('0x5d')],'dialOriginateCallerIdNumber':_0xc49648[_0xca68('0x5e')],'dialOriginateTimeout':_0xc49648[_0xca68('0x5f')],'dialPrefix':_0xc49648['dialPrefix'],'outboundAnswerAgiCallsDay':_0xc49648[_0xca68('0x60')],'outboundAnswerCallsDay':_0xc49648[_0xca68('0x61')],'outboundBlacklistCallsDay':_0xc49648[_0xca68('0x62')],'outboundBusyCallsDay':_0xc49648['outboundBusyCallsDay'],'outboundCongestionCallsDay':_0xc49648[_0xca68('0x63')],'outboundDropCallsDayACS':_0xc49648[_0xca68('0x64')],'outboundDropCallsDayCallersExit':_0xc49648[_0xca68('0x65')],'outboundDropCallsDayTimeout':_0xc49648[_0xca68('0x66')],'outboundNoAnswerCallsDay':_0xc49648[_0xca68('0x67')],'outboundNoSuchCallsDay':_0xc49648[_0xca68('0x68')],'outboundOriginateFailureCallsDay':_0xc49648['outboundOriginateFailureCallsDay'],'outboundReCallsDay':_0xc49648[_0xca68('0x69')],'outboundRejectCallsDay':_0xc49648['outboundRejectCallsDay'],'outboundUnknownCallsDay':_0xc49648[_0xca68('0x6a')],'predictiveIntervalAnsweredCalls':_0xc49648['predictiveIntervalAnsweredCalls'],'predictiveIntervalAvgHoldtime':_0xc49648[_0xca68('0x6b')],'predictiveIntervalAvgTalktime':_0xc49648[_0xca68('0x6c')],'predictiveIntervalDroppedCallsCallersExit':_0xc49648[_0xca68('0x6d')],'predictiveIntervalDroppedCallsTimeout':_0xc49648['predictiveIntervalDroppedCallsTimeout'],'predictiveIntervalErlangCalls':_0xc49648[_0xca68('0x6e')],'predictiveIntervalErlangCallsDroppedCalls':_0xc49648[_0xca68('0x6f')],'predictiveIntervalHitRate':_0xc49648[_0xca68('0x70')],'predictiveIntervalMultiplicativeFactor':_0xc49648['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0xc49648[_0xca68('0x71')],'predictiveIntervalAvailable':_0xc49648[_0xca68('0x72')],'predictiveIntervalTotalCalls':_0xc49648['predictiveIntervalTotalCalls'],'message':_0xc49648['message'],'originated':_0xc49648['originated'],'erlangCalls':_0xc49648['erlangCalls'],'erlangCallToSecond':_0xc49648[_0xca68('0x73')],'erlangAbandonmentRate':_0xc49648[_0xca68('0x74')],'erlangBusyFactor':_0xc49648[_0xca68('0x75')],'startPredictive':_0xc49648['startPredictive'],'startProgressive':_0xc49648['startProgressive']};if(_0xc49648[_0xca68('0x76')]){_0x4ba804[_0xca68('0x76')]={'id':_0xc49648[_0xca68('0x76')]['id'],'name':_0xc49648[_0xca68('0x76')][_0xca68('0x47')],'active':_0xc49648[_0xca68('0x76')][_0xca68('0x77')],'callerid':_0xc49648[_0xca68('0x76')]['callerid']};}if(_0xc49648['Interval']){_0x4ba804[_0xca68('0x45')]={'id':_0xc49648[_0xca68('0x45')]['id'],'name':_0xc49648['Interval']['name']};}var _0x1a5860=md5(JSON['stringify'](_0x4ba804));if(_0xc49648[_0xca68('0x5')]!==_0x1a5860){_0xc49648[_0xca68('0x5')]=_0x1a5860;emit(util['format']('voice:queue:%s',_0x4ba804['name']),_0xca68('0x78'),_0x4ba804);}}}function emitCampaignSummary(_0x1b44ff){if(_0x1b44ff['type']===_0xca68('0x79')){emit(util[_0xca68('0x7a')](_0xca68('0x7b'),_0x1b44ff[_0xca68('0x47')]),_0xca68('0x7c'),_0x1b44ff);}}function checkGetDataPredictive(_0x414c62){if(isNotNull(_0x414c62)&&!_[_0xca68('0x4a')](_0x414c62)){loggerPredictive[_0xca68('0x7d')](_0xca68('0x7e'));loggerPredictive[_0xca68('0x7d')]('Total\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x414c62[_0xca68('0x7f')]);loggerPredictive[_0xca68('0x7d')](_0xca68('0x80'),_0x414c62[_0xca68('0x81')]);loggerPredictive[_0xca68('0x7d')](_0xca68('0x82'),_0x414c62['predictiveIntervalDroppedCallsTimeout']);loggerPredictive[_0xca68('0x7d')](_0xca68('0x83'),_0x414c62[_0xca68('0x6d')]);loggerPredictive[_0xca68('0x7d')](_0xca68('0x84'),_0x414c62[_0xca68('0x6b')]);loggerPredictive['info'](_0xca68('0x85'),_0x414c62[_0xca68('0x6c')]);loggerPredictive['info']('---------------------------');if(_0x414c62[_0xca68('0x7f')]>0x0){if(!_[_0xca68('0x41')](_0x414c62['predictiveIntervalAvgTalktime'])&&_0x414c62[_0xca68('0x6c')]>0x0){return!![];}loggerPredictive[_0xca68('0x7d')](_0xca68('0x86'));if(!_['isUndefined'](_0x414c62['predictiveIntervalAvgHoldtime'])&&_0x414c62[_0xca68('0x6b')]>0x0){return!![];}loggerPredictive[_0xca68('0x7d')]('Avg\x20Hold\x20Time\x20is\x20not\x20enough\x20for\x20predictive');}else{loggerPredictive[_0xca68('0x7d')](_0xca68('0x87'));}}else{loggerPredictive[_0xca68('0x7d')](_0xca68('0x88'));}return![];}function mergeDataErlangB(_0x4854f2){return function(_0x556bfe){loggerPredictive[_0xca68('0x7d')]('---------\x20ErlangB\x20---------');loggerPredictive['info']('Scheduled\x20Calls:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x556bfe[_0xca68('0x89')]);loggerPredictive[_0xca68('0x7d')](_0xca68('0x8a'),_0x556bfe[_0xca68('0x73')]);loggerPredictive[_0xca68('0x7d')](_0xca68('0x8b'),_0x556bfe[_0xca68('0x74')]);loggerPredictive['info'](_0xca68('0x8c'),_0x556bfe['erlangBusyFactor']);loggerPredictive[_0xca68('0x7d')](_0xca68('0x8b'),_0x556bfe[_0xca68('0x74')]);loggerPredictive[_0xca68('0x7d')](_0xca68('0x8d'));_['merge'](_0x4854f2,_0x556bfe);};}function getDiff(_0x4f1de4){var _0x52df6d=moment()[_0xca68('0x4d')](0x0);var _0x1c9cc2=moment(_0x4f1de4)[_0xca68('0x4d')](0x0);return _0x52df6d['diff'](_0x1c9cc2,'seconds');}function ifInterval(_0x28197f,_0x6edd4c){if(_[_0xca68('0x41')](_0x6edd4c)){return![];}return getDiff(_0x6edd4c)<_0x28197f*0x3c;}function freeVariablesPredictive(_0x29afac){if(isNotNull(_0x29afac)){if(!_[_0xca68('0x41')](_0x29afac['startProgressive'])){_0x29afac[_0xca68('0x2b')]=undefined;loggerPredictive[_0xca68('0x7d')](_0x29afac[_0xca68('0x47')],_0xca68('0x8e'));}if(!_[_0xca68('0x41')](_0x29afac[_0xca68('0x2a')])){_0x29afac[_0xca68('0x2a')]=undefined;loggerPredictive[_0xca68('0x7d')](_0x29afac[_0xca68('0x47')],_0xca68('0x8f'));}if(!_['isUndefined'](_0x29afac[_0xca68('0x90')])){clearInterval(_0x29afac[_0xca68('0x90')]);_0x29afac[_0xca68('0x90')]=undefined;loggerPredictive['info'](_0x29afac[_0xca68('0x47')],_0xca68('0x91'));}}}function erlangb(_0x263916,_0x3145f6){if(_0x3145f6===0x0){return 0x0;}var _0x4a5797=0x1;for(var _0x43ce19=0x1;_0x43ce19<=_0x3145f6;_0x43ce19+=0x1){_0x4a5797=0x1+_0x4a5797*_0x43ce19/_0x263916;}return 0x1/_0x4a5797;}function isVoiceQueueOutbound(_0x2e9eaa){return _0x2e9eaa===_0xca68('0x92');}function isNotPreview(_0x410928){return _0x410928!=='preview';}function isCampaignIvr(_0x16bf98){return _0x16bf98===_0xca68('0x79');}function getCallerId(_0x34d9a0,_0x210ffc,_0x5e39a5){if(!_[_0xca68('0x41')](_0x5e39a5)&&typeof _0x5e39a5===_0xca68('0x93')&&!_['isEmpty'](_0x5e39a5)){if(!_['isUndefined'](_0x210ffc)&&typeof _0x210ffc===_0xca68('0x93')&&!_[_0xca68('0x4a')](_0x210ffc)){return util[_0xca68('0x7a')]('\x22%s\x22\x20<%s>',_0x210ffc,_0x5e39a5);}return util[_0xca68('0x7a')]('\x22%s\x22\x20<%s>',_0x5e39a5,_0x5e39a5);}if(!_[_0xca68('0x41')](_0x34d9a0)&&typeof _0x34d9a0===_0xca68('0x93')&&!_['isEmpty'](_0x34d9a0)){return _0x34d9a0;}return'\x22\x22\x20<>';}function loggerCatchQueueSummary(_0x379f61,_0x2066a4){return function(_0x5a32ed){freeVariablesPredictive(_0x2066a4);emitVoiceQueueSummary(_0x2066a4);emitCampaignSummary(_0x2066a4);loggerSyncQueueSummary[_0xca68('0x94')](_0x379f61,util[_0xca68('0x95')](_0x5a32ed,{'showHidden':![],'depth':null}));};}function loggerCatchPredictive(_0x645396,_0x27f8d9){return function(_0x200803){loggerPredictive['error'](_0x27f8d9['name'],_0x645396);loggerPredictive['error'](_0x200803[_0xca68('0x96')]);freeVariablesPredictive(_0x27f8d9);};}function loggerCatch(_0x30a0ee){return function(_0x2390b3){logger['error'](_0x30a0ee,util['inspect'](_0x2390b3,{'showHidden':![],'depth':null}));};}function checkContactEmpty(_0xc2fc36){return _0xc2fc36&&!_['isUndefined'](_0xc2fc36)&&_0xc2fc36[_0xca68('0x97')]>0x0;}function decremetOriginate(_0x92799c){if(!_[_0xca68('0x41')](_0x92799c)&&_0x92799c!==null){if(typeof _0x92799c[_0xca68('0x98')]!==_0xca68('0x99')){if(_0x92799c[_0xca68('0x98')]>0x0){_0x92799c[_0xca68('0x98')]-=0x1;}else{logger[_0xca68('0x9a')](_0xca68('0x9b'));}}}else{logger[_0xca68('0x9a')]('[decremetOriginate]\x20is\x20null\x20or\x20undefined');}}function checkContactLowerLimitOriginate(_0x5311bb,_0x12770c,_0x47d071){if(_0x12770c>_0x47d071){for(var _0x36ad60=0x0;_0x36ad60<_0x12770c-_0x47d071;_0x36ad60+=0x1){decremetOriginate(_0x5311bb);}}}function loggerGetContactDialer(_0x1e4797,_0x5a9ee6,_0x1eb407){return function(_0x11b6cb){checkContactLowerLimitOriginate(_0x5a9ee6,_0x1eb407,0x0);logger[_0xca68('0x9a')](_0x1e4797,util['inspect'](_0x11b6cb,{'showHidden':![],'depth':null}));};}function sendMessageReschedule(_0x452566){return function(_0x2d605f){if(isNotNull(_0x2d605f)&&isNotNull(_0x2d605f[0x0])){if(_0x2d605f[0x0][_0xca68('0x9c')]>0x0){_0x452566[_0xca68('0x42')]=_0xca68('0x9d');logger['info'](_0xca68('0x9e')+_0x452566[_0xca68('0x47')],_0x2d605f[0x0]['contactsRescheduled'],'contacts');}else{_0x452566[_0xca68('0x42')]=_0xca68('0x9f');logger[_0xca68('0x7d')](_0xca68('0xa0')+_0x452566[_0xca68('0x47')]);}}};}function notSendMessagesQueue(_0x2b4679){if(_0x2b4679[_0xca68('0xa1')]){freeVariablesPredictive(_0x2b4679);if(_0x2b4679[_0xca68('0x98')]===0x0&&_0x2b4679['talking']===0x0&&_0x2b4679[_0xca68('0xa2')]===0x0&&(_0x2b4679['pTalking']||0x0)===0x0){_0x2b4679[_0xca68('0xa1')]=![];_0x2b4679[_0xca68('0x52')]=0x0;_0x2b4679['message']=_0xca68('0xa3');loggerSyncQueueSummary[_0xca68('0x94')]('[syncQueueSummary]\x20Campaign\x20Queue:\x20',_0x2b4679[_0xca68('0x47')],'is\x20not\x20active');}else{_0x2b4679[_0xca68('0x42')]='IS_DISACTIVED';loggerSyncQueueSummary['debug'](_0xca68('0xa4'),_0x2b4679['name'],'is\x20disactive');}emitVoiceQueueSummary(_0x2b4679);}}function notSendMessagesCampaign(_0x498db3){if(_0x498db3[_0xca68('0xa1')]){if(_0x498db3[_0xca68('0x98')]===0x0){_0x498db3[_0xca68('0xa1')]=![];_0x498db3['message']=_0xca68('0xa3');loggerSyncQueueSummary[_0xca68('0x94')](_0xca68('0xa5'),_0x498db3['name'],_0xca68('0xa6'));}else{_0x498db3['message']=_0xca68('0xa7');loggerSyncQueueSummary[_0xca68('0x94')]('[syncQueueSummary]\x20Campaign\x20Ivr:\x20',_0x498db3[_0xca68('0x47')],_0xca68('0xa8'));}emitCampaignSummary(_0x498db3);}}function createObjHistory(_0x286781,_0x1756ed,_0x47f2fb,_0x5d2d90,_0x2618db){_0x286781['message']=_0x47f2fb;var _0x18ef3c=new Action(_0x286781,_0x1756ed);var _0x386bab=new History(_0x18ef3c);_0x386bab[_0xca68('0xa9')]=_0x5d2d90;_0x386bab['statedesc']=_0x2618db;_0x386bab['endtime']=_0x18ef3c[_0xca68('0xaa')];return _0x386bab;}Dialer[_0xca68('0xab')]['loopClearZombieChannels']=function(){var _0x2365a0=this;setInterval(function(){_0x2365a0[_0xca68('0xac')](_0x2365a0[_0xca68('0xad')],_0xca68('0xae'));_0x2365a0[_0xca68('0xac')](_0x2365a0['actions'],_0xca68('0xaf'));},0x32c8);};Dialer[_0xca68('0xab')][_0xca68('0xac')]=function(_0x3c5993,_0x53c59d){var _0x3283e1=this;for(var _0x36d37e in _0x3c5993){if(typeof _0x3c5993[_0x36d37e]!==_0xca68('0x99')){this[_0xca68('0x21')][_0xca68('0x1e')](function(){if(!_['isNil'](_0x3c5993[_0x36d37e])){return ami[_0xca68('0xb0')]({'action':'status','channel':_0x3c5993[_0x36d37e][_0xca68('0xb1')]})[_0xca68('0xb2')](function(_0xc53e1d){if(_0xc53e1d[_0xca68('0x42')]===_0xca68('0xb3')){setTimeout(function(){if(_0x3c5993[_0x36d37e]&&_0x3c5993[_0x36d37e][_0xca68('0x50')]!==_0xca68('0x79')){_0x3283e1[_0xca68('0xb4')](_0x3283e1[_0xca68('0x23')][_0x3c5993[_0x36d37e]['queue']]);logger[_0xca68('0x9a')](_0xca68('0xb5'),_0x53c59d,_0x36d37e,_0x3c5993[_0x36d37e][_0xca68('0xb6')]);delete _0x3c5993[_0x36d37e];}if(_0x3c5993[_0x36d37e]&&_0x3c5993[_0x36d37e][_0xca68('0x50')]===_0xca68('0x79')){_0x3283e1['updateOriginated'](_0x3283e1[_0xca68('0x24')][_0x3c5993[_0x36d37e]['queue']]);logger['error'](_0xca68('0xb7'),_0x53c59d,_0x36d37e,_0x3c5993[_0x36d37e][_0xca68('0xb6')]);delete _0x3c5993[_0x36d37e];}},0x2328);}});}});}}};Dialer[_0xca68('0xab')][_0xca68('0xb8')]=function(_0x51f7b0){return BPromise[_0xca68('0xb9')]()[_0xca68('0xba')](cmHopper[_0xca68('0xb8')](_0x51f7b0))[_0xca68('0xb2')](loggerCatch(_0xca68('0xbb')));};Dialer[_0xca68('0xab')]['checkIsBlackList']=function(_0x5ce460){return BPromise['resolve']()['then'](cmHopperBlack[_0xca68('0xbc')](_0x5ce460))[_0xca68('0xb2')](loggerCatch(_0xca68('0xbd')));};Dialer[_0xca68('0xab')][_0xca68('0xbe')]=function(_0x20d5eb,_0x564721,_0x5d79f2){return BPromise[_0xca68('0xb9')]()[_0xca68('0xba')](cmHopperAdditionalPhone[_0xca68('0xbe')](_0x20d5eb,_0x564721,_0x5d79f2))[_0xca68('0xb2')](loggerCatch(_0xca68('0xbf')));};Dialer[_0xca68('0xab')][_0xca68('0xc0')]=function(_0x214654,_0x4efcef,_0x1d1619){return BPromise[_0xca68('0xb9')]()['then'](cmHopperAdditionalPhone[_0xca68('0xc0')](_0x214654,_0x4efcef,_0x1d1619))['catch'](loggerCatch(_0xca68('0xc1')));};Dialer['prototype']['checkIsBlackListIvr']=function(_0x51a1ce){return BPromise[_0xca68('0xb9')]()[_0xca68('0xba')](cmHopperBlack[_0xca68('0xc2')](_0x51a1ce))['catch'](loggerCatch(_0xca68('0xc3')));};Dialer[_0xca68('0xab')][_0xca68('0xc4')]=function(_0x748ae){return BPromise['resolve']()['then'](cmHopperHistory[_0xca68('0xc5')](_0x748ae))['catch'](loggerCatch('[averageHandleTime]\x20'));};Dialer[_0xca68('0xab')][_0xca68('0xc6')]=function(_0x75cd55){return BPromise['resolve']()['then'](cmHopper[_0xca68('0xc6')](_0x75cd55))[_0xca68('0xb2')](loggerCatch(_0xca68('0xc7')));};Dialer[_0xca68('0xab')][_0xca68('0xc8')]=function(_0x5ef1dc,_0x1cadcb,_0x400ee3){return BPromise[_0xca68('0xb9')]()['then'](cmHopper[_0xca68('0xc8')](_0x5ef1dc,_0x1cadcb,_0x400ee3))[_0xca68('0xb2')](loggerCatch('[unlockContact]\x20'));};Dialer[_0xca68('0xab')][_0xca68('0xc9')]=function(_0x320fee,_0x28757e,_0x56b291,_0x147f4c,_0x274038){return BPromise[_0xca68('0xb9')]()['then'](cmHopper[_0xca68('0xc9')](_0x320fee,_0x28757e,_0x56b291,_0x147f4c))['catch'](function(_0x228fbf){_0x274038[_0xca68('0xca')]-=_0x56b291;_0x274038[_0xca68('0xca')]=_0x274038['temp']>0x0?_0x274038[_0xca68('0xca')]:0x0;loggerCatch('[getContactDialer]\x20')(_0x228fbf);});};Dialer['prototype'][_0xca68('0xcb')]=function(_0x538cb2,_0x25fca0,_0x3e1056,_0x1f4501){return BPromise[_0xca68('0xb9')]()['then'](cmHopper['getContactDialerIvr'](_0x538cb2,_0x25fca0,_0x3e1056))[_0xca68('0xb2')](function(_0x432ece){_0x1f4501['temp']-=_0x25fca0;_0x1f4501[_0xca68('0xca')]=_0x1f4501[_0xca68('0xca')]>0x0?_0x1f4501[_0xca68('0xca')]:0x0;loggerCatch('[getContactDialerIvr]\x20')(_0x432ece);});};Dialer[_0xca68('0xab')][_0xca68('0xcc')]=function(_0x408e3b){return BPromise[_0xca68('0xb9')]()[_0xca68('0xba')](voiceQueueRt[_0xca68('0xcc')](_0x408e3b))[_0xca68('0xb2')](loggerCatch(_0xca68('0xcd')));};Dialer[_0xca68('0xab')][_0xca68('0xce')]=function(_0x2df7f0){return BPromise[_0xca68('0xb9')]()['then'](cmHopper[_0xca68('0xce')](_0x2df7f0))['catch'](loggerCatch('[moveContactManagedDialer]\x20'));};Dialer['prototype'][_0xca68('0xcf')]=function(_0x15ae56){return BPromise['resolve']()[_0xca68('0xba')](cmHopperHistory[_0xca68('0xcf')](_0x15ae56))[_0xca68('0xb2')](loggerCatch(_0xca68('0xd0')));};Dialer['prototype']['updateOriginated']=function(_0x4bdb95){if(!_[_0xca68('0x41')](_0x4bdb95)&&_0x4bdb95!==null){if(typeof _0x4bdb95[_0xca68('0x98')]!==_0xca68('0x99')){if(_0x4bdb95[_0xca68('0x98')]>0x0){_0x4bdb95[_0xca68('0x98')]-=0x1;}else{logger[_0xca68('0x9a')]('[updateOriginated]\x20object\x20originated\x20is\x20negative');}}}else{logger[_0xca68('0x9a')](_0xca68('0xd1'));}};Dialer[_0xca68('0xab')][_0xca68('0xd2')]=function(_0x16d5df,_0x19f783){var _0x5c8f7f=this;return function(_0x522a6f){_0x5c8f7f[_0xca68('0xb4')](_0x19f783);logger[_0xca68('0x9a')](_0x16d5df,util[_0xca68('0x95')](_0x522a6f,{'showHidden':![],'depth':null}));};};Dialer[_0xca68('0xab')][_0xca68('0xd3')]=function(_0x4af6ef,_0x484a3e,_0x1d7944){var _0x4e1991={'state':0x19,'statedesc':_0xca68('0xd4')};this[_0xca68('0xb4')](_0x484a3e);this[_0xca68('0xd5')](_[_0xca68('0xd6')](_0x4e1991,_[_0xca68('0xd7')](_0x1d7944,[_0xca68('0xd8'),_0xca68('0xd9'),_0xca68('0xda'),_0xca68('0xdb'),'CampaignId'])),'[emptyContact][createHistory]',_0xca68('0xdc'));logger[_0xca68('0x9a')](_0x4af6ef);};Dialer[_0xca68('0xab')][_0xca68('0xdd')]=function(_0x5577ba){return _0x5577ba===_0xca68('0xde');};Dialer[_0xca68('0xab')][_0xca68('0xdf')]=function(_0x2f0b37){return!_[_0xca68('0x41')](_0x2f0b37)&&_0x2f0b37&&!_[_0xca68('0x41')](_0x2f0b37[_0xca68('0x47')])&&!_['isUndefined'](_0x2f0b37[_0xca68('0x77')])&&_0x2f0b37[_0xca68('0x77')]&&(this[_0xca68('0x26')][util[_0xca68('0x7a')](_0xca68('0xe0'),_0x2f0b37['name'])][_0xca68('0xe1')]===_0xca68('0xe2')||this[_0xca68('0x26')][util['format']('SIP/%s',_0x2f0b37['name'])][_0xca68('0xe1')]===_0xca68('0xe3'));};Dialer['prototype']['saveInDb']=function(_0x2e0969,_0x4b0eb6,_0x846be3){this[_0xca68('0xcf')](_0x2e0969)['catch'](loggerCatch(_0x4b0eb6));this[_0xca68('0xce')](_0x2e0969)['catch'](loggerCatch(_0x846be3));};Dialer[_0xca68('0xab')][_0xca68('0xe4')]=function(_0x45b896){var _0x4cafaa=this[_0xca68('0xad')][_0x45b896['uniqueid']];var _0x319645;if(!_[_0xca68('0xe5')](_0x45b896)&&!_[_0xca68('0xe5')](_0x45b896['variable'])&&!_[_0xca68('0xe5')](_0x45b896[_0xca68('0xe6')][_0xca68('0xe7')])&&_0x45b896[_0xca68('0xe8')]===_0xca68('0xe9')&&_0x4cafaa){if(_0x4cafaa['type']!==_0xca68('0x79')&&this[_0xca68('0x23')][_0x4cafaa['queue']][_0xca68('0xea')]&&_0x45b896[_0xca68('0xeb')]===_0xca68('0xec')){delete this[_0xca68('0xad')][_0x45b896[_0xca68('0xed')]];this['updateOriginated'](this[_0xca68('0x23')][_0x4cafaa['queue']]);this[_0xca68('0x23')][_0x4cafaa['queue']][_0xca68('0x61')]+=0x1;this[_0xca68('0x23')][_0x4cafaa['queue']][_0xca68('0x60')]+=0x1;_0x319645=new Hangup(_0x4cafaa,_0x45b896);_0x319645[_0xca68('0xa9')]=0x12;_0x319645['statedesc']=_0xca68('0xee');_0x319645[_0xca68('0xef')]=_0xca68('0xf0');ami['emit'](_0xca68('0xf1'),ut[_0xca68('0xf2')](_0x319645,_0xca68('0xf3')));this[_0xca68('0xd5')](_0x319645,_0xca68('0xf4'),_0xca68('0xf5'));}if(_0x4cafaa['type']!=='ivr'&&this['voiceQueues'][_0x4cafaa[_0xca68('0xb6')]]['dialAMDActive']&&_0x45b896[_0xca68('0xeb')]===_0xca68('0xf6')){var _0x220af1=this;return new BPromise(function(_0xfcee85,_0x26a817){delete _0x220af1[_0xca68('0xad')][_0x45b896[_0xca68('0xed')]];_0x220af1[_0xca68('0xb4')](_0x220af1[_0xca68('0x23')][_0x4cafaa[_0xca68('0xb6')]]);_0x220af1['voiceQueues'][_0x4cafaa[_0xca68('0xb6')]][_0xca68('0x61')]+=0x1;_0x220af1[_0xca68('0x23')][_0x4cafaa[_0xca68('0xb6')]][_0xca68('0x60')]+=0x1;var _0x4ce524=_0x220af1[_0xca68('0x23')][_0x4cafaa[_0xca68('0xb6')]];var _0x487e63=new Hangup(_0x4cafaa,_0x45b896);_0x487e63[_0xca68('0xa9')]=0x13;_0x487e63[_0xca68('0xf7')]=_0xca68('0xf8');_0x487e63[_0xca68('0xef')]=_0xca68('0xf0');_0x487e63['countmachineretry']+=0x1;_0x487e63[_0xca68('0xf9')]+=0x1;_0x487e63['amd']=!![];ami[_0xca68('0x4f')](_0xca68('0xf1'),ut[_0xca68('0xf2')](_0x487e63,_0xca68('0xf3')));_0x220af1[_0xca68('0xcf')](_0x487e63)[_0xca68('0xb2')](loggerCatch(_0xca68('0xfa')));if(_0x487e63[_0xca68('0xfb')]+_0x487e63[_0xca68('0xfc')]+_0x487e63[_0xca68('0xfd')]+_0x487e63[_0xca68('0xfe')]+_0x487e63[_0xca68('0xff')]+_0x487e63[_0xca68('0x100')]+_0x487e63[_0xca68('0x101')]+_0x487e63[_0xca68('0x102')]>=_0x4ce524['dialGlobalMaxRetry']){_0x220af1['stateGlobal'](_0x487e63,_0xfcee85,_0x26a817,_0xca68('0x103'));}else{if(_0x487e63['countmachineretry']>=_0x4ce524['dialMachineMaxRetry']){_0x220af1[_0xca68('0x104')](_0x487e63,_0xfcee85,_0x26a817,_0xca68('0x105'));}else{_0x220af1[_0xca68('0xc6')]({'active':![],'countmachineretry':_0x487e63[_0xca68('0x101')],'scheduledat':moment()[_0xca68('0x106')](_0x4ce524[_0xca68('0x107')],_0xca68('0x108'))['format'](_0xca68('0x109')),'ContactId':_0x487e63[_0xca68('0xd8')],'ListId':_0x487e63[_0xca68('0xd9')],'VoiceQueueId':_0x487e63[_0xca68('0xdb')]||undefined,'CampaignId':_0x487e63[_0xca68('0x10a')]||undefined})[_0xca68('0xb2')](loggerCatch(_0xca68('0x10b')));_0xfcee85({'reschedule':0x1});}}});}if(_0x4cafaa[_0xca68('0x50')]===_0xca68('0x79')&&this[_0xca68('0x24')][_0x4cafaa[_0xca68('0xb6')]]['dialAMDActive']&&_0x45b896[_0xca68('0xeb')]===_0xca68('0xec')){delete this[_0xca68('0xad')][_0x45b896['uniqueid']];this[_0xca68('0xb4')](this[_0xca68('0x24')][_0x4cafaa[_0xca68('0xb6')]]);_0x319645=new Hangup(_0x4cafaa,_0x45b896);_0x319645[_0xca68('0xa9')]=0x12;_0x319645[_0xca68('0xf7')]=_0xca68('0xee');_0x319645[_0xca68('0xef')]=_0xca68('0xf0');ami[_0xca68('0x4f')]('custom:amd',ut[_0xca68('0xf2')](_0x319645,_0xca68('0xf3')));this[_0xca68('0xd5')](_0x319645,'[syncHangupInAMDIvr][createHistory]',_0xca68('0x10c'));}if(_0x4cafaa['type']===_0xca68('0x79')&&this[_0xca68('0x24')][_0x4cafaa['queue']][_0xca68('0xea')]&&_0x45b896[_0xca68('0xeb')]===_0xca68('0xf6')){var _0x220af1=this;return new BPromise(function(_0x5a55e1,_0x32dbba){delete _0x220af1[_0xca68('0xad')][_0x45b896[_0xca68('0xed')]];_0x220af1[_0xca68('0xb4')](_0x220af1['campaigns'][_0x4cafaa[_0xca68('0xb6')]]);_0x220af1[_0xca68('0x24')][_0x4cafaa['queue']][_0xca68('0x61')]+=0x1;_0x220af1[_0xca68('0x24')][_0x4cafaa[_0xca68('0xb6')]]['outboundAnswerAgiCallsDay']+=0x1;var _0x3056f5=_0x220af1[_0xca68('0x24')][_0x4cafaa['queue']];var _0x53939b=new Hangup(_0x4cafaa,_0x45b896);_0x53939b[_0xca68('0xa9')]=0x13;_0x53939b['statedesc']=_0xca68('0xf8');_0x53939b['membername']='AMD';_0x53939b[_0xca68('0x101')]+=0x1;_0x53939b[_0xca68('0xf9')]+=0x1;_0x53939b['amd']=!![];ami[_0xca68('0x4f')]('custom:amd',ut[_0xca68('0xf2')](_0x53939b,_0xca68('0xf3')));_0x220af1[_0xca68('0xcf')](_0x53939b)['catch'](loggerCatch(_0xca68('0xfa')));if(_0x53939b[_0xca68('0xfb')]+_0x53939b[_0xca68('0xfc')]+_0x53939b['countnoanswerretry']+_0x53939b['countnosuchnumberretry']+_0x53939b[_0xca68('0xff')]+_0x53939b[_0xca68('0x100')]+_0x53939b[_0xca68('0x101')]+_0x53939b['countagentrejectretry']>=_0x3056f5[_0xca68('0x10d')]){_0x220af1[_0xca68('0x10e')](_0x53939b,_0x5a55e1,_0x32dbba,_0xca68('0x103'));}else{if(_0x53939b[_0xca68('0x101')]>=_0x3056f5[_0xca68('0x10f')]){_0x220af1[_0xca68('0x104')](_0x53939b,_0x5a55e1,_0x32dbba,_0xca68('0x105'));}else{_0x220af1[_0xca68('0xc6')]({'active':![],'countmachineretry':_0x53939b[_0xca68('0x101')],'scheduledat':moment()['add'](_0x3056f5[_0xca68('0x107')],'minutes')['format'](_0xca68('0x109')),'ContactId':_0x53939b[_0xca68('0xd8')],'ListId':_0x53939b[_0xca68('0xd9')],'VoiceQueueId':_0x53939b['VoiceQueueId']||undefined,'CampaignId':_0x53939b['CampaignId']||undefined})['catch'](loggerCatch(_0xca68('0x10b')));_0x5a55e1({'reschedule':0x1});}}});}}};Dialer[_0xca68('0xab')]['syncHangup']=function(_0x1ac179){var _0x44d73d=this['uniqueId'][_0x1ac179[_0xca68('0xed')]];var _0x20b3ed=this;var _0x5a2cf0;if(_0x44d73d&&_0x44d73d[_0xca68('0x50')]==='ivr'){delete this[_0xca68('0xad')][_0x1ac179[_0xca68('0xed')]];this['updateOriginated'](this['campaigns'][_0x44d73d[_0xca68('0xb6')]]);this[_0xca68('0x24')][_0x44d73d[_0xca68('0xb6')]][_0xca68('0x110')]+=0x1;_0x5a2cf0=new Hangup(_0x44d73d,_0x1ac179);this[_0xca68('0xcf')](_0x5a2cf0)[_0xca68('0xb2')](loggerCatch(_0xca68('0x111')));this[_0xca68('0xce')](_0x5a2cf0)[_0xca68('0xb2')](loggerCatch(_0xca68('0x112')));}if(_0x44d73d&&_0x44d73d[_0xca68('0x50')]!==_0xca68('0x79')&&isNotNull(this[_0xca68('0x23')][_0x44d73d[_0xca68('0xb6')]]['dialQueueProject'])){delete this[_0xca68('0xad')][_0x1ac179[_0xca68('0xed')]];this[_0xca68('0xb4')](this['voiceQueues'][_0x44d73d[_0xca68('0xb6')]]);this[_0xca68('0x23')][_0x44d73d[_0xca68('0xb6')]][_0xca68('0x61')]+=0x1;this[_0xca68('0x23')][_0x44d73d[_0xca68('0xb6')]][_0xca68('0x60')]+=0x1;_0x5a2cf0=new Hangup(_0x44d73d,_0x1ac179);_0x5a2cf0[_0xca68('0xa9')]=0x10;_0x5a2cf0['statedesc']=_0xca68('0x113');_0x5a2cf0['membername']=_0xca68('0x114');this['createHistory'](_0x5a2cf0)['catch'](loggerCatch(_0xca68('0x111')));this[_0xca68('0xce')](_0x5a2cf0)[_0xca68('0xb2')](loggerCatch(_0xca68('0x112')));}if(_0x44d73d&&_0x44d73d[_0xca68('0x50')]!==_0xca68('0x79')&&!isNotNull(this[_0xca68('0x23')][_0x44d73d['queue']][_0xca68('0x115')])){delete this[_0xca68('0xad')][_0x1ac179[_0xca68('0xed')]];this[_0xca68('0xb4')](this[_0xca68('0x23')][_0x44d73d[_0xca68('0xb6')]]);this[_0xca68('0x23')][_0x44d73d[_0xca68('0xb6')]][_0xca68('0x6a')]+=0x1;_0x5a2cf0=new Hangup(_0x44d73d,_0x1ac179);_0x5a2cf0[_0xca68('0xa9')]=0xc;_0x5a2cf0[_0xca68('0xf7')]=_0x1ac179[_0xca68('0x116')];_0x5a2cf0[_0xca68('0xef')]='Unknow';this[_0xca68('0xcf')](_0x5a2cf0)[_0xca68('0xb2')](loggerCatch(_0xca68('0x111')));this[_0xca68('0xce')](_0x5a2cf0)['catch'](loggerCatch(_0xca68('0x112')));}};Dialer[_0xca68('0xab')][_0xca68('0x117')]=function(_0xbbd68){var _0x4f8556=this[_0xca68('0xad')][_0xbbd68['uniqueid']];var _0x4884d9=this;if(this[_0xca68('0x23')][_0xbbd68[_0xca68('0xb6')]]){if(_0x4f8556&&_0x4f8556[_0xca68('0x50')]!==_0xca68('0x79')){delete this['uniqueId'][_0xbbd68[_0xca68('0xed')]];this[_0xca68('0x23')][_0xbbd68[_0xca68('0xb6')]]['outboundAnswerCallsDay']+=0x1;var _0x4f27e8=new AgentComplete(_0x4f8556,_0xbbd68);if(_0xbbd68[_0xca68('0x118')]===_0xca68('0x119')){_0x4f27e8['agiafterat']=this[_0xca68('0x23')][_0xbbd68[_0xca68('0xb6')]][_0xca68('0x11a')]&&this[_0xca68('0x23')][_0xbbd68[_0xca68('0xb6')]][_0xca68('0x11b')]?moment()['format']('YYYY-MM-DD\x20HH:mm:ss'):undefined;}this[_0xca68('0xcf')](_0x4f27e8)[_0xca68('0xb2')](loggerCatch(_0xca68('0x11c')));this[_0xca68('0xce')](_0x4f27e8)[_0xca68('0xb2')](loggerCatch(_0xca68('0x11d')));}}};Dialer[_0xca68('0xab')][_0xca68('0x30')]=function(_0xdc584){if(this['voiceQueues'][_0xdc584[_0xca68('0xb6')]]){if(this[_0xca68('0xad')][_0xdc584[_0xca68('0xed')]]&&this[_0xca68('0xad')][_0xdc584[_0xca68('0xed')]][_0xca68('0x50')]!==_0xca68('0x79')){this['updateOriginated'](this[_0xca68('0x23')][_0xdc584[_0xca68('0xb6')]]);this[_0xca68('0xad')][_0xdc584[_0xca68('0xed')]][_0xca68('0x11e')]=moment()[_0xca68('0x7a')]('YYYY-MM-DD\x20HH:mm:ss');}}};Dialer['prototype']['queueCallerAbandonCreateState']=function(_0x37bb31,_0x2894ff){this[_0xca68('0xcf')](_0x37bb31)[_0xca68('0xb2')](loggerCatch('[syncAgentComplete][createHistory]'));if(_0x2894ff==0x0){this[_0xca68('0xce')](_0x37bb31)['catch'](loggerCatch(_0xca68('0x11f')));}};Dialer['prototype'][_0xca68('0x32')]=function(_0x53f0da){var _0x35a25f=this[_0xca68('0xad')][_0x53f0da[_0xca68('0xed')]];var _0x1c9838=this;var _0x4c0121=![];var _0x44c340;var _0x52a800;if(this['voiceQueues'][_0x53f0da[_0xca68('0xb6')]]){if(_0x35a25f&&_0x35a25f[_0xca68('0x50')]!==_0xca68('0x79')){delete this[_0xca68('0xad')][_0x53f0da['uniqueid']];this[_0xca68('0xb4')](this[_0xca68('0x23')][_0x53f0da[_0xca68('0xb6')]]);_0x35a25f[_0xca68('0x120')]=moment()[_0xca68('0x7a')](_0xca68('0x109'));var _0x134017=new QueueCallerAbandon(_0x35a25f,_0x53f0da);if(getSeconds(_0x35a25f[_0xca68('0x120')],_0x35a25f[_0xca68('0x121')])>=_0x35a25f[_0xca68('0x122')]){this['voiceQueues'][_0x53f0da['queue']][_0xca68('0x123')]+=0x1;this['voiceQueues'][_0x53f0da[_0xca68('0xb6')]][_0xca68('0x66')]+=0x1;this[_0xca68('0x23')][_0x53f0da[_0xca68('0xb6')]][_0xca68('0x6f')]+=0x1;_0x134017[_0xca68('0xa9')]=0xa;_0x134017[_0xca68('0xf7')]=_0xca68('0x124');_0x134017['dropreason']=_0xca68('0x125');_0x134017[_0xca68('0x126')]=this[_0xca68('0x23')][_0x53f0da[_0xca68('0xb6')]]['dialQueueProject2']?moment()[_0xca68('0x7a')](_0xca68('0x109')):undefined;_0x134017[_0xca68('0xff')]+=0x1;_0x134017['countglobal']+=0x1;_0x44c340=this['voiceQueues'][_0x53f0da[_0xca68('0xb6')]][_0xca68('0x127')];_0x52a800=this[_0xca68('0x23')][_0x53f0da['queue']][_0xca68('0x128')];_0x1c9838[_0xca68('0xbe')](_0x134017,_0x134017[_0xca68('0xa9')],_0x35a25f[_0xca68('0x129')])[_0xca68('0xba')](function(_0x4ba8ed){_0x4c0121=_0x4ba8ed[_0xca68('0x12a')]==0x1;if(_0x134017['countdropretry']>=_0x1c9838[_0xca68('0x23')][_0x53f0da[_0xca68('0xb6')]]['dialDropMaxRetry']){_0x1c9838[_0xca68('0x12b')](_0x134017,_0x4ba8ed[_0xca68('0x12a')]);}else{_0x1c9838['rescheduleContact']({'active':![],'countdropretry':_0x134017[_0xca68('0xff')],'scheduledat':moment()[_0xca68('0x106')](_0x1c9838[_0xca68('0x23')][_0x53f0da[_0xca68('0xb6')]][_0xca68('0x127')],'minutes')[_0xca68('0x7a')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x35a25f[_0xca68('0xd8')],'ListId':_0x35a25f[_0xca68('0xd9')],'VoiceQueueId':_0x35a25f[_0xca68('0xdb')]||undefined,'CampaignId':_0x35a25f[_0xca68('0x10a')]||undefined})['catch'](loggerCatch(_0xca68('0x12c')));var _0x28e8dd=new History(_0x134017);_0x28e8dd['state']=0xa;_0x28e8dd[_0xca68('0xf7')]='Drop';_0x28e8dd[_0xca68('0xaa')]=moment()['format'](_0xca68('0x109'));_0x28e8dd['endtime']=_0x28e8dd[_0xca68('0xaa')];_0x28e8dd[_0xca68('0x12d')]=_0x134017[_0xca68('0x12d')];_0x28e8dd['calleridnum']=_0x134017[_0xca68('0x12e')];_0x1c9838[_0xca68('0xcf')](_0x28e8dd)[_0xca68('0xb2')](loggerCatch(_0xca68('0x12f')));}})[_0xca68('0xba')](function(_0x15f3a1){if(_0x4c0121)_0x1c9838['swapAdditionalPhones'](_0x134017,_0x44c340,_0x52a800)[_0xca68('0xba')](function(_0x473534){return 0x1;});});}else{this[_0xca68('0x23')][_0x53f0da['queue']][_0xca68('0x6d')]+=0x1;this[_0xca68('0x23')][_0x53f0da[_0xca68('0xb6')]]['outboundDropCallsDayCallersExit']+=0x1;_0x134017[_0xca68('0xa9')]=0xb;_0x134017[_0xca68('0xf7')]=_0xca68('0x130');_0x134017[_0xca68('0x131')]=_0xca68('0x132');_0x134017[_0xca68('0x100')]+=0x1;_0x134017[_0xca68('0xf9')]+=0x1;_0x44c340=this[_0xca68('0x23')][_0x53f0da[_0xca68('0xb6')]]['dialAbandonedRetryFrequency'];_0x52a800=this['voiceQueues'][_0x53f0da[_0xca68('0xb6')]]['callAdditionalPhoneAfterMin'];_0x1c9838[_0xca68('0xbe')](_0x134017,_0x134017[_0xca68('0xa9')],_0x35a25f[_0xca68('0x129')])[_0xca68('0xba')](function(_0x2f9812){if(_0x134017[_0xca68('0x100')]>=_0x1c9838['voiceQueues'][_0x53f0da['queue']][_0xca68('0x133')]){_0x1c9838['queueCallerAbandonCreateState'](_0x134017,_0x2f9812[_0xca68('0x12a')]);}else{_0x1c9838['rescheduleContact']({'active':![],'countabandonedretry':_0x134017['countabandonedretry'],'scheduledat':moment()[_0xca68('0x106')](_0x1c9838[_0xca68('0x23')][_0x53f0da[_0xca68('0xb6')]]['dialAbandonedRetryFrequency'],_0xca68('0x108'))[_0xca68('0x7a')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x35a25f['ContactId'],'ListId':_0x35a25f['ListId'],'VoiceQueueId':_0x35a25f[_0xca68('0xdb')]||undefined,'CampaignId':_0x35a25f[_0xca68('0x10a')]||undefined})[_0xca68('0xb2')](loggerCatch(_0xca68('0x134')));var _0x1f4d01=new History(_0x134017);_0x1f4d01[_0xca68('0xa9')]=0xb;_0x1f4d01[_0xca68('0xf7')]=_0xca68('0x130');_0x1f4d01['starttime']=moment()['format'](_0xca68('0x109'));_0x1f4d01['endtime']=_0x1f4d01['starttime'];_0x1f4d01[_0xca68('0x12d')]=_0x134017[_0xca68('0x12d')];_0x1f4d01[_0xca68('0x12e')]=_0x134017[_0xca68('0x12e')];_0x1c9838[_0xca68('0xcf')](_0x1f4d01)['catch'](loggerCatch(_0xca68('0x135')));}})[_0xca68('0xba')](function(_0x49483b){if(_0x4c0121)_0x1c9838[_0xca68('0xc0')](_0x134017,_0x44c340,_0x52a800)[_0xca68('0xba')](function(_0x5be9f8){return 0x1;});});}}}};Dialer[_0xca68('0xab')]['syncNewExten']=function(_0xe7babf){if(this['actions'][_0xe7babf[_0xca68('0xed')]]){this[_0xca68('0x29')][_0xe7babf['uniqueid']][_0xca68('0xb1')]=_0xe7babf['channel'];}if(this[_0xca68('0xad')][_0xe7babf['uniqueid']]){this[_0xca68('0xad')][_0xe7babf[_0xca68('0xed')]]['channel']=_0xe7babf['channel'];}};Dialer['prototype'][_0xca68('0x136')]=function(_0x96ae68){if(strategy[this[_0xca68('0x23')][this[_0xca68('0x29')][_0x96ae68['actionid']][_0xca68('0xb6')]][_0xca68('0x51')]]==='roundrobin'){if(this[_0xca68('0x29')][_0x96ae68['actionid']]&&_[_0xca68('0xe5')](this[_0xca68('0x29')][_0x96ae68[_0xca68('0x137')]][_0xca68('0x138')])&&_0x96ae68[_0xca68('0xe1')]==='1'&&_0x96ae68['paused']==='0'){if(this[_0xca68('0x25')][_0x96ae68[_0xca68('0x139')]]){if(!this['agents'][_0x96ae68[_0xca68('0x139')]][_0xca68('0x138')]){this[_0xca68('0x25')][_0x96ae68[_0xca68('0x139')]][_0xca68('0x138')]=!![];this[_0xca68('0x29')][_0x96ae68[_0xca68('0x137')]][_0xca68('0x138')]=!![];this[_0xca68('0x29')][_0x96ae68[_0xca68('0x137')]][_0xca68('0x139')]=_0x96ae68[_0xca68('0x139')];}}}}else if((strategy[this[_0xca68('0x23')][this[_0xca68('0x29')][_0x96ae68[_0xca68('0x137')]][_0xca68('0xb6')]][_0xca68('0x51')]]||_0xca68('0x1d'))===_0xca68('0x1d')){if(this['actions'][_0x96ae68[_0xca68('0x137')]]){if(this[_0xca68('0x25')][_0x96ae68['stateinterface']]){this[_0xca68('0x29')][_0x96ae68['actionid']][_0xca68('0x139')]=_0x96ae68[_0xca68('0x139')];if(_[_0xca68('0xe5')](this[_0xca68('0x2d')][this['actions'][_0x96ae68[_0xca68('0x137')]]['queue']])){this[_0xca68('0x2d')][this[_0xca68('0x29')][_0x96ae68[_0xca68('0x137')]]['queue']]=[];}this['queueBooked'][this[_0xca68('0x29')][_0x96ae68[_0xca68('0x137')]][_0xca68('0xb6')]][_0xca68('0x13a')](_[_0xca68('0xd6')](_['pick'](this[_0xca68('0x29')][_0x96ae68['actionid']],['idHopper','stateinterface']),{'status':_0x96ae68[_0xca68('0xe1')],'paused':_0x96ae68['paused']}));}}}};function unlockQueueStatus(_0x206492,_0x2b7cf4){setTimeout(function(){if(_[_0xca68('0x41')](_0x206492[_0xca68('0x13b')])){loggerBooked[_0xca68('0x9a')](_0xca68('0x13c'),_0x2b7cf4);}_0x206492['queueStatusComplete']=!![];loggerBooked[_0xca68('0x7d')]('[booked][unlockQueueStatus]',_0x2b7cf4,JSON[_0xca68('0x4c')](_[_0xca68('0xd7')](_0x206492,['name',_0xca68('0x13b')])));},0x1f3);}Dialer[_0xca68('0xab')][_0xca68('0x3c')]=function(_0x2788d2){var _0x349787=this;var _0x525b80=_0x349787['voiceQueues'][_0x349787['actions'][_0x2788d2[_0xca68('0x137')]][_0xca68('0xb6')]];if(strategy[this[_0xca68('0x23')][this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]][_0xca68('0xb6')]][_0xca68('0x51')]]==='roundrobin'){if(this['actions'][_0x2788d2[_0xca68('0x137')]]&&this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]][_0xca68('0x139')]){this[_0xca68('0x22')]['run'](this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]][_0xca68('0x13d')],this['actions'][_0x2788d2['actionid']]['stateinterface'])[_0xca68('0xb2')](function(_0x2100a3){logger[_0xca68('0x9a')](_0xca68('0x13e'),util['inspect'](_0x2100a3,{'showHidden':![],'depth':null}));})[_0xca68('0x20')](function(){_0x349787[_0xca68('0xb4')](_0x349787[_0xca68('0x23')][_0x349787[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]][_0xca68('0xb6')]]);_0x349787[_0xca68('0x25')][_0x349787[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]][_0xca68('0x139')]]['locked']=![];delete _0x349787[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]];unlockQueueStatus(_0x525b80);});}else{this[_0xca68('0xb4')](this['voiceQueues'][this['actions'][_0x2788d2[_0xca68('0x137')]]['queue']]);this[_0xca68('0xc6')]({'active':![],'ContactId':this[_0xca68('0x29')][_0x2788d2['actionid']][_0xca68('0xd8')],'ListId':this[_0xca68('0x29')][_0x2788d2['actionid']][_0xca68('0xd9')],'VoiceQueueId':this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]]['VoiceQueueId']||undefined,'CampaignId':this['actions'][_0x2788d2['actionid']][_0xca68('0x10a')]||undefined})[_0xca68('0xb2')](loggerCatch(_0xca68('0x13f')));delete this['actions'][_0x2788d2['actionid']];unlockQueueStatus(_0x525b80);}}else if((strategy[this[_0xca68('0x23')][this[_0xca68('0x29')][_0x2788d2['actionid']][_0xca68('0xb6')]]['strategy']]||_0xca68('0x1d'))===_0xca68('0x1d')){var _0x5aaea8;if(this['actions'][_0x2788d2[_0xca68('0x137')]]&&!_[_0xca68('0x4a')](this['queueBooked'][this['actions'][_0x2788d2[_0xca68('0x137')]]['queue']])){if(this['queueBookedRR'][_0x349787[_0xca68('0x29')][_0x2788d2['actionid']][_0xca68('0xb6')]]){this[_0xca68('0x2e')][_0x349787[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]][_0xca68('0xb6')]]=this['queueBookedRR'][this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]][_0xca68('0xb6')]]?this[_0xca68('0x2e')][this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]]['queue']]:this[_0xca68('0x2d')][this['actions'][_0x2788d2[_0xca68('0x137')]][_0xca68('0xb6')]]?this[_0xca68('0x2d')][this[_0xca68('0x29')][_0x2788d2['actionid']][_0xca68('0xb6')]][_0xca68('0x140')]||0x0:0x0;}this[_0xca68('0x2d')][this[_0xca68('0x29')][_0x2788d2['actionid']][_0xca68('0xb6')]][_0xca68('0x140')]=this[_0xca68('0x2e')][this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]][_0xca68('0xb6')]];for(var _0x34d20d=0x0;_0x34d20d<this[_0xca68('0x2d')][this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]][_0xca68('0xb6')]][_0xca68('0x97')];_0x34d20d+=0x1){_0x5aaea8=rr(this['queueBooked'][this[_0xca68('0x29')][_0x2788d2['actionid']]['queue']]);this['queueBookedRR'][_0x349787[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]]['queue']]=this[_0xca68('0x2d')][this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]][_0xca68('0xb6')]][_0xca68('0x140')];if(_0x5aaea8['status']==='1'&&_0x5aaea8[_0xca68('0x141')]==='0'){break;}}if(!_[_0xca68('0xe5')](_0x5aaea8)){this[_0xca68('0x25')][_0x5aaea8['stateinterface']][_0xca68('0x142')]=_[_0xca68('0x41')](this[_0xca68('0x25')][_0x5aaea8[_0xca68('0x139')]]['unlockRR'])?!![]:this[_0xca68('0x25')][_0x5aaea8['stateinterface']][_0xca68('0x142')];}loggerBooked['info'](_0xca68('0x143'),_0x2788d2[_0xca68('0x137')],_0xca68('0x144'),JSON[_0xca68('0x4c')](_['pick'](this[_0xca68('0x25')][_0x5aaea8[_0xca68('0x139')]],['name',_0xca68('0x142')])),'contactAgent-idHopper:\x20',JSON[_0xca68('0x4c')](_0x5aaea8['idHopper']));if(!_[_0xca68('0xe5')](_0x5aaea8)&&_0x5aaea8[_0xca68('0xe1')]==='1'&&_0x5aaea8[_0xca68('0x141')]==='0'&&this[_0xca68('0x25')][_0x5aaea8[_0xca68('0x139')]][_0xca68('0x142')]){this[_0xca68('0x25')][_0x5aaea8[_0xca68('0x139')]][_0xca68('0x142')]=![];this['queueBooked'][_0x349787[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]][_0xca68('0xb6')]]=[];this[_0xca68('0x22')][_0xca68('0x145')](_0x5aaea8[_0xca68('0x13d')],_0x5aaea8[_0xca68('0x139')])[_0xca68('0xb2')](function(_0x47d7f2){logger[_0xca68('0x9a')]('[Catch][Preview][syncQueueStatusComplete]',util[_0xca68('0x95')](_0x47d7f2,{'showHidden':![],'depth':null}));})[_0xca68('0x20')](function(){_0x349787[_0xca68('0xb4')](_0x349787[_0xca68('0x23')][_0x349787[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]][_0xca68('0xb6')]]);setTimeout(function(){_0x349787['agents'][_0x5aaea8[_0xca68('0x139')]][_0xca68('0x142')]=!![];loggerBooked[_0xca68('0x7d')]('[booked][RR][finaly]',_0x2788d2['actionid'],_0xca68('0x144'),JSON[_0xca68('0x4c')](_['pick'](_0x349787['agents'][_0x5aaea8[_0xca68('0x139')]],['name',_0xca68('0x142')])),'contactAgent-idHopper:\x20',JSON[_0xca68('0x4c')](_0x5aaea8[_0xca68('0x13d')]));},0xc7);delete _0x349787[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]];unlockQueueStatus(_0x525b80,_0x2788d2[_0xca68('0x137')]);});}else{loggerBooked['info']('[booked][unlock]');this['updateOriginated'](this[_0xca68('0x23')][this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]][_0xca68('0xb6')]]);this[_0xca68('0xc6')]({'active':![],'ContactId':this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]][_0xca68('0xd8')],'ListId':this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]][_0xca68('0xd9')],'VoiceQueueId':this[_0xca68('0x29')][_0x2788d2['actionid']][_0xca68('0xdb')]||undefined,'CampaignId':this[_0xca68('0x29')][_0x2788d2['actionid']][_0xca68('0x10a')]||undefined})[_0xca68('0xb2')](loggerCatch('[unlock][syncQueueStatusComplete]'));delete this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]];unlockQueueStatus(_0x525b80);}}else{loggerBooked[_0xca68('0x7d')]('[booked][unlock2]');this[_0xca68('0xb4')](this[_0xca68('0x23')][this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]]['queue']]);this[_0xca68('0xc6')]({'active':![],'ContactId':this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]][_0xca68('0xd8')],'ListId':this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]][_0xca68('0xd9')],'VoiceQueueId':this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]]['VoiceQueueId']||undefined,'CampaignId':this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]][_0xca68('0x10a')]||undefined})['catch'](loggerCatch(_0xca68('0x146')));delete this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]];unlockQueueStatus(_0x525b80);}}else{loggerBooked[_0xca68('0x7d')](_0xca68('0x147'));this['updateOriginated'](this[_0xca68('0x23')][this['actions'][_0x2788d2[_0xca68('0x137')]]['queue']]);this[_0xca68('0xc6')]({'active':![],'ContactId':this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]][_0xca68('0xd8')],'ListId':this['actions'][_0x2788d2[_0xca68('0x137')]][_0xca68('0xd9')],'VoiceQueueId':this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]][_0xca68('0xdb')]||undefined,'CampaignId':this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]][_0xca68('0x10a')]||undefined})[_0xca68('0xb2')](loggerCatch(_0xca68('0x148')));delete this[_0xca68('0x29')][_0x2788d2[_0xca68('0x137')]];unlockQueueStatus(_0x525b80);}};Dialer[_0xca68('0xab')][_0xca68('0x3d')]=function(){var _0x82f99f=this;return BPromise[_0xca68('0xb9')]()['then'](cmHopper[_0xca68('0x149')]({}))[_0xca68('0xba')](function(){setInterval(function(){_0x82f99f[_0xca68('0x14a')]();},0x3e8);});};Dialer[_0xca68('0xab')][_0xca68('0x14b')]=function(_0x5610d8){var _0x578672=this;return function(){if(!_0x578672[_0xca68('0xdf')](_0x5610d8[_0xca68('0x76')])){if(!_0x578672[_0xca68('0xdf')](_0x5610d8[_0xca68('0x14c')])){_0x5610d8[_0xca68('0x42')]=_0xca68('0x14d');throw _0x5610d8[_0xca68('0x47')]+'\x20trunk\x20is\x20not\x20reachable';}}};};Dialer['prototype']['checkIfTime']=function(_0x9dd3ae,_0x18dd8c,_0x282a77,_0x2d09de){var _0x4970a7=this;return function(){var _0x146445=!![];return _0x4970a7[_0xca68('0x14e')](_0x9dd3ae,_0x18dd8c,_0x282a77,_0x2d09de,_0x146445);};};Dialer[_0xca68('0xab')][_0xca68('0x14f')]=function(_0x3311c6,_0x373b34,_0x27ad8b,_0xba729d){var _0x13a306=this;return function(){var _0x56de19=![];return _0x13a306[_0xca68('0x14e')](_0x3311c6[_0xca68('0x49')],_0x373b34,_0x27ad8b,_0xba729d,_0x56de19);};};Dialer[_0xca68('0xab')]['ifTime']=function(_0x24aaa7,_0x195be7,_0x4c8750,_0x5d2cdc,_0xf767be){var _0x337b6b=[];return new BPromise(function(_0x2a9f30,_0x5e928f){if(!isNotNull(_0x24aaa7)){_0x5d2cdc['message']='INTERVAL_IS_NULL';return _0x5e928f(msgResponse('ifTime',_0xca68('0x150'),_0x4c8750+_0xca68('0x151')));}if(_[_0xca68('0x4a')](_0x24aaa7)){_0x5d2cdc['message']=_0xca68('0x152');return _0x5e928f(msgResponse('ifTime',_0xca68('0x150'),_0x4c8750+_0xca68('0x153')));}if(_0x195be7&&_['isUndefined'](config[_0xca68('0x154')][_0x195be7])){_0x5d2cdc[_0xca68('0x42')]=_0xca68('0x155');return _0x5e928f(msgResponse(_0xca68('0x14e'),_0xca68('0x150'),_0x4c8750+_0xca68('0x156')+_0x195be7));}if(_[_0xca68('0x157')](_0x24aaa7)){for(var _0x4a4a6a=0x0;_0x4a4a6a<_0x24aaa7[_0xca68('0x97')];_0x4a4a6a+=0x1){_0x337b6b[_0xca68('0x13a')](ami['Action']({'action':_0xca68('0x158'),'command':util[_0xca68('0x7a')](_0xca68('0x159'),_0x24aaa7[_0x4a4a6a][_0xca68('0x15a')],!_[_0xca68('0x41')](config[_0xca68('0x154')][_0x195be7])?_0x195be7:'')})[_0xca68('0xba')](function(_0x1e4d8f){return _0x1e4d8f['content'][_0xca68('0x15b')](_0xca68('0x15c'))>=0x0;})[_0xca68('0xb2')](myreject(_0x5e928f)));}}else{_0x337b6b[_0xca68('0x13a')](ami['Action']({'action':_0xca68('0x158'),'command':util[_0xca68('0x7a')](_0xca68('0x159'),_0x24aaa7,!_['isUndefined'](config[_0xca68('0x154')][_0x195be7])?_0x195be7:'')})[_0xca68('0xba')](function(_0x9a923){return _0x9a923[_0xca68('0x15d')][_0xca68('0x15b')](_0xca68('0x15c'))>=0x0;})[_0xca68('0xb2')](myreject(_0x5e928f)));}BPromise[_0xca68('0x15e')](_0x337b6b)['then'](function(_0x410a84){var _0x511b00=_['some'](_0x410a84);if(_0x511b00){return _0x2a9f30(_0x511b00);}else{_0x5d2cdc[_0xca68('0x42')]=_0xf767be?'GLOBAL_INTERVAL_IS_OVERTIME':_0xca68('0x15f');return _0x5e928f(msgResponse('[ifTime][promiseAll]',_0xca68('0x150'),_0xca68('0x160')+_0xf767be+'\x20'+_0x4c8750+_0xca68('0x161')+util['inspect'](_0x24aaa7,{'showHidden':![],'depth':null})+'Timezone:\x20'+_0x195be7));}})[_0xca68('0xb2')](function(_0x2e2755){return _0x5e928f(msgResponse(_0xca68('0x14e'),_0xca68('0x150'),JSON[_0xca68('0x4c')](_0x2e2755)));});});};Dialer[_0xca68('0xab')]['checkDialMethod']=function(_0x1c595e){var _0x108fe9=this;return function(){switch(_0x1c595e['dialMethod']){case _0xca68('0x162'):freeVariablesPredictive(_0x1c595e);_0x108fe9[_0xca68('0x163')](_0x1c595e,0x1);break;case _0xca68('0x164'):freeVariablesPredictive(_0x1c595e);_0x108fe9['handlePower'](_0x1c595e,_0x1c595e[_0xca68('0x165')]);break;case _0xca68('0xa'):_0x108fe9['predictive'](_0x1c595e);break;case _0xca68('0x166'):freeVariablesPredictive(_0x1c595e);_0x108fe9[_0xca68('0x163')](_0x1c595e,0x1);break;default:freeVariablesPredictive(_0x1c595e);logger[_0xca68('0x9a')](_0xca68('0x167'),_0x1c595e[_0xca68('0x47')],_0xca68('0x168'));}};};Dialer[_0xca68('0xab')]['launchHandleIvr']=function(_0x3e2e7d){var _0x3f728b=this;return function(){_0x3f728b['handleIvr'](_0x3e2e7d);};};Dialer[_0xca68('0xab')][_0xca68('0xc')]=function(_0x59ecce){var _0x427775=this;if(isNotPreview(_0x59ecce[_0xca68('0x5c')])){if(isVoiceQueueOutbound(_0x59ecce[_0xca68('0x50')])&&isActive(_0x59ecce[_0xca68('0x5b')])){_0x59ecce['sendMessageOneNotActive']=!![];BPromise[_0xca68('0xb9')]()[_0xca68('0xba')](checkIsLoggedIn(_0x59ecce,_0x59ecce['loggedIn']))[_0xca68('0xba')](checkIsActive(_0x59ecce,_0x59ecce[_0xca68('0x5b')]))['then'](checkInterval(_0x59ecce))[_0xca68('0xba')](_0x427775[_0xca68('0x14b')](_0x59ecce))[_0xca68('0xba')](_0x427775['checkIfTime'](_0x59ecce[_0xca68('0x169')],_0x59ecce[_0xca68('0x16a')],_0x59ecce[_0xca68('0x47')],_0x59ecce))[_0xca68('0xba')](_0x427775[_0xca68('0x14f')](_0x59ecce['Interval'],_0x59ecce[_0xca68('0x16a')],_0x59ecce['name'],_0x59ecce))[_0xca68('0xba')](_0x427775[_0xca68('0x16b')](_0x59ecce))[_0xca68('0xb2')](loggerCatchQueueSummary(_0xca68('0x16c'),_0x59ecce));}else{notSendMessagesQueue(_0x59ecce);}}else{freeVariablesPredictive(_0x59ecce);}};Dialer[_0xca68('0xab')][_0xca68('0x16d')]=_[_0xca68('0x16e')](function(){var _0x4c2a8f=_['filter'](this['voiceQueues'],function(_0x565d0e){return _0x565d0e[_0xca68('0x16f')];});var _0x3dae71=_[_0xca68('0x170')](this[_0xca68('0x25')],function(_0xc999c){return _0xc999c[_0xca68('0x171')]&&_0xc999c['status']===_0xca68('0xe2');});if(_0x4c2a8f[_0xca68('0x97')]>0x0&&_0x3dae71['length']>0x0){return BPromise[_0xca68('0xb9')]()[_0xca68('0xba')](cmHopper['handlePreviewRecallNotifications'](_['map'](_0x4c2a8f,'id'),previewRecallmeReminderInterval,_['map'](_0x3dae71,'id')))['then'](function(_0x4fdae4){for(var _0x3c5b88=0x0;_0x3c5b88<_0x4fdae4[_0xca68('0x97')];_0x3c5b88++){var _0xb77034=_0x4fdae4[_0x3c5b88][_0xca68('0x172')][_0xca68('0x47')];if(_0xb77034)io['to'](util[_0xca68('0x7a')](_0xca68('0x173'),_0xb77034))['emit']('user:dialPreviewRecallReminder',{'hopper':_0x4fdae4[_0x3c5b88]});}})['catch'](function(_0x361e99){logger[_0xca68('0x9a')](_0xca68('0x174'),_0x361e99);});}},0x3c*0x3e8,{'leading':!![]});Dialer[_0xca68('0xab')][_0xca68('0x14a')]=function(){var _0x16e606=this;var _0x110465;for(var _0x40191c in this['campaigns']){if(typeof this[_0xca68('0x24')][_0x40191c]!==_0xca68('0x99')){_0x110465=this['campaigns'][_0x40191c];if(isCampaignIvr(_0x110465[_0xca68('0x50')])&&isActive(_0x110465['active'])){_0x110465[_0xca68('0xa1')]=!![];BPromise['resolve']()[_0xca68('0xba')](checkIsActive(_0x110465,_0x110465['active']))[_0xca68('0xba')](checkInterval(_0x110465))[_0xca68('0xba')](_0x16e606[_0xca68('0x14b')](_0x110465))[_0xca68('0xba')](_0x16e606[_0xca68('0x175')](_0x110465[_0xca68('0x169')],_0x110465[_0xca68('0x16a')],_0x110465[_0xca68('0x47')],_0x110465))[_0xca68('0xba')](_0x16e606[_0xca68('0x14f')](_0x110465['Interval'],_0x110465['dialTimezone'],_0x110465['name'],_0x110465))[_0xca68('0xba')](_0x16e606[_0xca68('0x176')](_0x110465))[_0xca68('0xb2')](loggerCatchQueueSummary(_0xca68('0x177'),_0x110465));}else{notSendMessagesCampaign(_0x110465);}}}};function getCallerIdRandom(_0x21658b,_0xc2f0ad){var _0x59c763;var _0x133f52;var _0x3727ee;if(_0xc2f0ad<=0x0){_0xc2f0ad=0x1;}_0x59c763=new RegExp(_0xca68('0x178')+_0xc2f0ad+'}$');_0x133f52=Math[_0xca68('0x179')](0xa,_0xc2f0ad-0x1);_0x3727ee=Math[_0xca68('0x179')](0xa,_0xc2f0ad)-0x1;return util[_0xca68('0x7a')]('%s',_[_0xca68('0x17a')](_0x21658b,_0x59c763,_[_0xca68('0x17b')](_0x133f52,_0x3727ee)));}function extractCalleridName(_0x5e74d2){var _0x1f8612=_0x5e74d2['match'](/"(.*?)"/);return _0x1f8612?_0x1f8612[0x1]:_0x5e74d2;}function extractCalleridNumber(_0x4598fa){var _0x2dd669=_0x4598fa['match'](/<(.*?)>/);return _0x2dd669?_0x2dd669[0x1]:_0x4598fa;}Dialer['prototype'][_0xca68('0x17c')]=function(_0x22edcb,_0x441a4a){var _0x48d5f5=this;var _0x5092de=uuid['v4']();this[_0xca68('0x29')][_0x5092de]=new Action(_0x22edcb,_0x441a4a,_0x5092de);return new BPromise(function(_0x1dad2d,_0x2aaec9){if(_[_0xca68('0x41')](_0x22edcb)&&typeof _0x22edcb!==_0xca68('0x17d')){return _0x2aaec9(msgResponse(_0xca68('0x17e'),_0xca68('0x150'),'voiceQueue\x20is\x20undefine'));}if(_[_0xca68('0x41')](_0x441a4a[_0xca68('0x17f')])||_0x441a4a[_0xca68('0x17f')]===null){return _0x2aaec9(msgResponse(_0xca68('0x17e'),_0xca68('0x150'),'contact\x20is\x20undefine'));}var _0xc1193e={'XMD-CALLERID':_0x48d5f5[_0xca68('0x29')][_0x5092de][_0xca68('0x180')](),'XMD-AGI':_0x22edcb['dialQueueProject']?util[_0xca68('0x7a')](_0xca68('0x181'),ipAgi,_0x22edcb[_0xca68('0x115')]):_0xca68('0x182'),'XMD-AGIAFTER':_0x22edcb['dialQueueProject2']?util[_0xca68('0x7a')]('\x22agi://%s/square,%s\x22',ipAgi,_0x22edcb[_0xca68('0x11a')]):_0xca68('0x182'),'XMD-QUEUE':_0x22edcb[_0xca68('0x50')]===_0xca68('0x92')?util['format'](_0xca68('0x183'),_0x22edcb[_0xca68('0x47')],_0x22edcb[_0xca68('0x184')]||'',_0x22edcb[_0xca68('0x11b')]?'c':'',_0x22edcb[_0xca68('0x122')]||0x3):'NONE','XMD-CONTACTID':_0x441a4a['ContactId'],'XMD-CDRTYPE':_0xca68('0x185'),'CALLERID(all)':_0x48d5f5[_0xca68('0x29')][_0x5092de][_0xca68('0x180')](),'XMD-AMD':_0x22edcb[_0xca68('0xea')]?_0xca68('0x186'):'NONE','XMD-DESTINATION':_0xca68('0xe9')};if(_0x22edcb[_0xca68('0xea')]){_0xc1193e[_0xca68('0x187')]=_0x22edcb[_0xca68('0x188')]||0x9c4;_0xc1193e['XMD-AMDGREETING']=_0x22edcb['dialAMDGreeting']||0x5dc;_0xc1193e[_0xca68('0x189')]=_0x22edcb[_0xca68('0x18a')]||0x320;_0xc1193e[_0xca68('0x18b')]=_0x22edcb['dialAMDTotalAnalysisTime']||0x1388;_0xc1193e[_0xca68('0x18c')]=_0x22edcb[_0xca68('0x18d')]||0x64;_0xc1193e[_0xca68('0x18e')]=_0x22edcb[_0xca68('0x18f')]||0x32;_0xc1193e[_0xca68('0x190')]=_0x22edcb[_0xca68('0x191')]||0x3;_0xc1193e['XMD-AMDSILENCETHRESHOLD']=_0x22edcb['dialAMDSilenceThreshold']||0x100;_0xc1193e[_0xca68('0x192')]=_0x22edcb[_0xca68('0x193')]||0x1388;}if(_0x22edcb[_0xca68('0x50')]===_0xca68('0x92')){_0xc1193e[_0xca68('0x194')]=_0x441a4a[_0xca68('0xdb')];}else{_0xc1193e['XMD-CAMPAIGNID']=_0x441a4a[_0xca68('0x10a')];}for(var _0x146ef8 in _0x441a4a[_0xca68('0x195')]){if(typeof _0x441a4a[_0xca68('0x195')][_0x146ef8]!==_0xca68('0x99')){if(isNotNull(_0x441a4a[_0xca68('0x195')][_0x146ef8])&&_0x146ef8!=='id'&&_0x146ef8!==_0xca68('0x196')&&_0x146ef8!==_0xca68('0x197')&&_0x146ef8!==_0xca68('0x198')){_0xc1193e[util['format'](_0xca68('0x199'),_0xca68('0x19a'),_[_0xca68('0x19b')](_0x146ef8))]=_0x441a4a[_0xca68('0x195')][_0x146ef8];}}}var _0xda3b72=_0x48d5f5['isTrunkReachable'](_0x22edcb[_0xca68('0x76')])?getCallerId(_0x22edcb['Trunk'][_0xca68('0x19c')],_0x22edcb['dialOriginateCallerIdName'],_0x22edcb[_0xca68('0x19d')]>0x0?getCallerIdRandom(_0x22edcb[_0xca68('0x5e')],_0x22edcb['dialRandomLastDigitCallerIdNumber']):_0x22edcb[_0xca68('0x5e')]):getCallerId(_[_0xca68('0xe5')](_0x22edcb['TrunkBackup'])?_0x22edcb[_0xca68('0x76')][_0xca68('0x19c')]:_0x22edcb[_0xca68('0x14c')][_0xca68('0x19c')],_0x22edcb[_0xca68('0x5d')],_0x22edcb[_0xca68('0x19d')]>0x0?getCallerIdRandom(_0x22edcb[_0xca68('0x5e')],_0x22edcb['dialRandomLastDigitCallerIdNumber']):_0x22edcb[_0xca68('0x5e')]);if(_0xda3b72){_0xc1193e[_0xca68('0x19e')]=_0x48d5f5[_0xca68('0x29')][_0x5092de][_0xca68('0x19f')]=extractCalleridName(_0xda3b72);_0xc1193e['XMD-ORIGINATECALLERIDNUM']=_0x441a4a[_0xca68('0x17f')];}return ami[_0xca68('0xb0')]({'actionid':_0x5092de,'action':_0xca68('0x17e'),'channel':_0x48d5f5['isTrunkReachable'](_0x22edcb['Trunk'])?util[_0xca68('0x7a')](_0xca68('0x1a0'),_0x22edcb[_0xca68('0x76')]['name'],isNotNull(_0x22edcb[_0xca68('0x1a1')])?_0x22edcb[_0xca68('0x1a1')][_0xca68('0x1a2')]()||'':'',_0x22edcb[_0xca68('0x1a3')]>0x0?_0x441a4a[_0xca68('0x17f')][_0xca68('0x1a4')](_0x22edcb[_0xca68('0x1a3')]):_0x441a4a[_0xca68('0x17f')]):util[_0xca68('0x7a')](_0xca68('0x1a0'),_['isNil'](_0x22edcb[_0xca68('0x14c')])?_0x22edcb['Trunk']['name']:_0x22edcb[_0xca68('0x14c')][_0xca68('0x47')],isNotNull(_0x22edcb['dialPrefix'])?_0x22edcb['dialPrefix'][_0xca68('0x1a2')]()||'':'',_0x22edcb[_0xca68('0x1a3')]>0x0?_0x441a4a[_0xca68('0x17f')][_0xca68('0x1a4')](_0x22edcb[_0xca68('0x1a3')]):_0x441a4a[_0xca68('0x17f')]),'callerid':_0xda3b72,'Exten':'xcally-motion-dialer','Context':_0xca68('0x1a5'),'Priority':'1','variable':_0xc1193e,'timeout':(_0x22edcb[_0xca68('0x5f')]||0x1e)*0x3e8,'async':!![],'channelid':_0x5092de})[_0xca68('0xba')](function(_0x46f36c){return _0x1dad2d(_0x46f36c);})['catch'](function(_0x573af1){_0x22edcb[_0xca68('0x1a6')]+=0x1;var _0x2aabd1=new History(_0x48d5f5[_0xca68('0x29')][_0x5092de]);logger['error'](util[_0xca68('0x7a')](_0xca68('0x1a7'),JSON[_0xca68('0x4c')](_0x573af1)));_0x2aabd1[_0xca68('0xa9')]=0xe;_0x2aabd1[_0xca68('0xf7')]=_0xca68('0x1a8');_0x2aabd1['starttime']=moment()[_0xca68('0x7a')](_0xca68('0x109'));_0x2aabd1[_0xca68('0x1a9')]=_0x2aabd1[_0xca68('0xaa')];_0x48d5f5['createHistory'](_0x2aabd1)[_0xca68('0xb2')](loggerCatch(_0xca68('0x1aa')));_0x48d5f5['moveContactManagedDialer'](_0x2aabd1)['catch'](loggerCatch('[originate][error]'))['finally'](function(){delete _0x48d5f5['actions'][_0x5092de];return _0x2aaec9(msgResponse(_0xca68('0x17e'),_0xca68('0x1ab'),_0xca68('0x1ac')));});});});};Dialer['prototype'][_0xca68('0x1ad')]=function(_0x442178){var _0x5dc2ea=this[_0xca68('0x29')][_0x442178[_0xca68('0x137')]];if(_0x5dc2ea){delete this[_0xca68('0x29')][_0x442178[_0xca68('0x137')]];_0x5dc2ea[_0xca68('0x121')]=moment()[_0xca68('0x7a')](_0xca68('0x109'));var _0x36df25=_0x5dc2ea[_0xca68('0x50')]===_0xca68('0x79')?this[_0xca68('0x24')][_0x5dc2ea[_0xca68('0xb6')]]:this[_0xca68('0x23')][_0x5dc2ea[_0xca68('0x1ae')]()];if(!this[_0xca68('0xdd')](_0x442178[_0xca68('0x1af')])){this[_0xca68('0xb4')](_0x36df25);return this[_0xca68('0x1b0')](_0x5dc2ea,_0x36df25,_0x442178)[_0xca68('0xb2')](loggerCatch('[callProgressDetecting]\x20'));}this[_0xca68('0xad')][_0x442178[_0xca68('0xed')]]=_0x5dc2ea;}};Dialer['prototype']['checkRetriveMax']=function(_0x31804c,_0x4c756c,_0x1152cf){var _0x44e497=new History(_0x4c756c);if(_0x44e497[_0xca68('0xfb')]+_0x44e497['countcongestionretry']+_0x44e497[_0xca68('0xfd')]+_0x44e497[_0xca68('0xfe')]+_0x44e497[_0xca68('0xff')]+_0x44e497[_0xca68('0x100')]+_0x44e497[_0xca68('0x101')]+_0x44e497[_0xca68('0x102')]>=_0x1152cf[_0xca68('0x10d')]-0x1){return!![];}switch(_0x31804c){case 0x3:if(_0x44e497['countnoanswerretry']>=_0x1152cf[_0xca68('0x1b1')]-0x1){return!![];}this[_0xca68('0xc6')]({'active':![],'countnoanswerretry':_0x44e497[_0xca68('0xfd')]+=0x1,'scheduledat':moment()[_0xca68('0x106')](_0x1152cf[_0xca68('0x1b2')],_0xca68('0x108'))[_0xca68('0x7a')](_0xca68('0x109')),'ContactId':_0x44e497[_0xca68('0xd8')],'ListId':_0x44e497['ListId'],'VoiceQueueId':_0x44e497[_0xca68('0xdb')]||undefined,'CampaignId':_0x44e497[_0xca68('0x10a')]||undefined})[_0xca68('0xb2')](loggerCatch(_0xca68('0x1b3')));break;case 0x5:if(_0x44e497['countbusyretry']>=_0x1152cf[_0xca68('0x1b4')]-0x1){return!![];}this[_0xca68('0xc6')]({'active':![],'countbusyretry':_0x44e497[_0xca68('0xfb')]+=0x1,'scheduledat':moment()['add'](_0x1152cf[_0xca68('0x1b5')],_0xca68('0x108'))[_0xca68('0x7a')](_0xca68('0x109')),'ContactId':_0x44e497[_0xca68('0xd8')],'ListId':_0x44e497[_0xca68('0xd9')],'VoiceQueueId':_0x44e497[_0xca68('0xdb')]||undefined,'CampaignId':_0x44e497['CampaignId']||undefined})[_0xca68('0xb2')](loggerCatch(_0xca68('0x1b6')));break;case 0x8:if(_0x44e497[_0xca68('0xfc')]>=_0x1152cf[_0xca68('0x1b7')]-0x1){return!![];}this[_0xca68('0xc6')]({'active':![],'countcongestionretry':_0x44e497['countcongestionretry']+=0x1,'scheduledat':moment()['add'](_0x1152cf['dialCongestionRetryFrequency'],'minutes')['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x44e497[_0xca68('0xd8')],'ListId':_0x44e497[_0xca68('0xd9')],'VoiceQueueId':_0x44e497[_0xca68('0xdb')]||undefined,'CampaignId':_0x44e497[_0xca68('0x10a')]||undefined})['catch'](loggerCatch(_0xca68('0x1b8')));break;case 0x0:if(_0x44e497[_0xca68('0xfe')]>=_0x1152cf[_0xca68('0x1b9')]-0x1){return!![];}else{this['rescheduleContact']({'active':![],'countnosuchnumberretry':_0x44e497[_0xca68('0xfe')]+=0x1,'scheduledat':moment()[_0xca68('0x106')](_0x1152cf[_0xca68('0x1ba')],'minutes')[_0xca68('0x7a')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x44e497[_0xca68('0xd8')],'ListId':_0x44e497[_0xca68('0xd9')],'VoiceQueueId':_0x44e497['VoiceQueueId']||undefined,'CampaignId':_0x44e497['CampaignId']||undefined})['catch'](loggerCatch(_0xca68('0x1bb')));}break;case 0xa:if(_0x44e497[_0xca68('0xff')]>=_0x1152cf[_0xca68('0x1bc')]-0x1){return!![];}this[_0xca68('0xc6')]({'active':![],'countdropretry':_0x44e497['countdropretry']+=0x1,'scheduledat':moment()[_0xca68('0x106')](_0x1152cf[_0xca68('0x127')],_0xca68('0x108'))['format'](_0xca68('0x109')),'ContactId':_0x44e497['ContactId'],'ListId':_0x44e497[_0xca68('0xd9')],'VoiceQueueId':_0x44e497['VoiceQueueId']||undefined,'CampaignId':_0x44e497[_0xca68('0x10a')]||undefined})[_0xca68('0xb2')](loggerCatch(_0xca68('0x12c')));break;case 0xb:if(_0x44e497[_0xca68('0x100')]>=_0x1152cf[_0xca68('0x133')]-0x1){return!![];}this['rescheduleContact']({'active':![],'countabandonedretry':_0x44e497['countabandonedretry']+=0x1,'scheduledat':moment()[_0xca68('0x106')](_0x1152cf['dialAbandonedRetryFrequency'],_0xca68('0x108'))[_0xca68('0x7a')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x44e497[_0xca68('0xd8')],'ListId':_0x44e497[_0xca68('0xd9')],'VoiceQueueId':_0x44e497[_0xca68('0xdb')]||undefined,'CampaignId':_0x44e497[_0xca68('0x10a')]||undefined})[_0xca68('0xb2')](loggerCatch(_0xca68('0x134')));break;case 0x13:if(_0x44e497[_0xca68('0x101')]>=_0x1152cf['dialMachineMaxRetry']-0x1){return!![];}this['rescheduleContact']({'active':![],'countmachineretry':_0x44e497['countmachineretry']+=0x1,'scheduledat':moment()[_0xca68('0x106')](_0x1152cf[_0xca68('0x107')],_0xca68('0x108'))['format'](_0xca68('0x109')),'ContactId':_0x44e497[_0xca68('0xd8')],'ListId':_0x44e497[_0xca68('0xd9')],'VoiceQueueId':_0x44e497[_0xca68('0xdb')]||undefined,'CampaignId':_0x44e497[_0xca68('0x10a')]||undefined})[_0xca68('0xb2')](loggerCatch(_0xca68('0x10b')));break;case 0x14:if(_0x44e497[_0xca68('0x102')]>=_0x1152cf[_0xca68('0x1bd')]-0x1){return!![];}this[_0xca68('0xc6')]({'active':![],'countagentrejectretry':_0x44e497[_0xca68('0x102')]+=0x1,'scheduledat':moment()[_0xca68('0x106')](_0x1152cf[_0xca68('0x1be')],_0xca68('0x108'))[_0xca68('0x7a')](_0xca68('0x109')),'ContactId':_0x44e497[_0xca68('0xd8')],'ListId':_0x44e497[_0xca68('0xd9')],'VoiceQueueId':_0x44e497[_0xca68('0xdb')]||undefined,'CampaignId':_0x44e497[_0xca68('0x10a')]||undefined})[_0xca68('0xb2')](loggerCatch(_0xca68('0x1bf')));break;default:return!![];}};Dialer[_0xca68('0xab')][_0xca68('0x1b0')]=function(_0x402899,_0x34abe3,_0x537b75){var _0x25fca3=this;var _0x815271=new History(_0x402899);var _0x107273=![];var _0x2b720a;var _0x2f3851;return new BPromise(function(_0x43f215,_0x2c92e8){if(_[_0xca68('0x41')](_0x34abe3)&&typeof _0x34abe3!==_0xca68('0x17d')){return _0x2c92e8(msgResponse(_0xca68('0x1c0'),_0xca68('0x150'),'entity\x20is\x20undefine'));}if(_[_0xca68('0x41')](_0x537b75)&&typeof _0x537b75!==_0xca68('0x17d')){return _0x2c92e8(msgResponse(_0xca68('0x1c0'),'Failure','evt\x20is\x20undefine'));}_0x25fca3[_0xca68('0xbe')](_0x815271,_0x537b75[_0xca68('0x118')],_0x34abe3)[_0xca68('0xba')](function(_0xf4f8ec){if(_0xf4f8ec[_0xca68('0x12a')]==0x1)_0x107273=!![];switch(_0x537b75[_0xca68('0x118')]){case'0':_0x34abe3[_0xca68('0x68')]+=0x1;_0x815271[_0xca68('0xa9')]=0x0;_0x815271[_0xca68('0xf7')]=_0xca68('0x1c1');_0x815271['countnosuchnumberretry']+=0x1;_0x815271[_0xca68('0xf9')]+=0x1;ami[_0xca68('0x4f')]('custom:agentnosuchnumber',ut[_0xca68('0xf2')](_0x402899,'nosuchnumber'));_0x2b720a=_0x34abe3[_0xca68('0x1ba')];_0x2f3851=_0x34abe3[_0xca68('0x128')];_0x25fca3[_0xca68('0xcf')](_0x815271)[_0xca68('0xb2')](loggerCatch(_0xca68('0xfa')));if(_0x25fca3[_0xca68('0x1c2')](0x0,_0x402899,_0x34abe3)&&!_0x107273){if(_0x815271[_0xca68('0xfe')]>=_0x34abe3[_0xca68('0x1b9')]){_0x25fca3['createStateFinal'](_0x815271,_0x43f215,_0x2c92e8,_0xca68('0x1c3'));}else{_0x25fca3[_0xca68('0x10e')](_0x815271,_0x43f215,_0x2c92e8,'reason\x200\x20no\x20such\x20number....');}}break;case'3':_0x34abe3['outboundNoAnswerCallsDay']+=0x1;_0x815271['state']=0x3;_0x815271['statedesc']=_0xca68('0x1c4');_0x815271[_0xca68('0xfd')]+=0x1;_0x815271['countglobal']+=0x1;ami[_0xca68('0x4f')](_0xca68('0x1c5'),ut['buildObj'](_0x402899,'noanswer'));_0x2b720a=_0x34abe3['dialNoAnswerRetryFrequency'];_0x2f3851=_0x34abe3[_0xca68('0x128')];_0x25fca3[_0xca68('0xcf')](_0x815271)[_0xca68('0xb2')](loggerCatch(_0xca68('0x1c6')));if(_0x25fca3[_0xca68('0x1c2')](0x3,_0x402899,_0x34abe3)&&!_0x107273){if(_0x815271['countnoanswerretry']>=_0x34abe3[_0xca68('0x1b1')]){_0x25fca3[_0xca68('0x104')](_0x815271,_0x43f215,_0x2c92e8,_0xca68('0x1c7'));}else{_0x25fca3[_0xca68('0x10e')](_0x815271,_0x43f215,_0x2c92e8,_0xca68('0x1c7'));}}break;case'5':_0x34abe3[_0xca68('0x1c8')]+=0x1;_0x815271['state']=0x5;_0x815271['statedesc']=_0xca68('0x1c9');_0x815271[_0xca68('0xfb')]+=0x1;_0x815271[_0xca68('0xf9')]+=0x1;ami['emit'](_0xca68('0x1ca'),ut['buildObj'](_0x402899,'busy'));_0x2b720a=_0x34abe3['dialBusyRetryFrequency'];_0x2f3851=_0x34abe3[_0xca68('0x128')];_0x25fca3[_0xca68('0xcf')](_0x815271)[_0xca68('0xb2')](loggerCatch(_0xca68('0x1cb')));if(_0x25fca3[_0xca68('0x1c2')](0x5,_0x402899,_0x34abe3)&&!_0x107273){if(_0x815271[_0xca68('0xfb')]>=_0x34abe3['dialBusyMaxRetry']){_0x25fca3[_0xca68('0x104')](_0x815271,_0x43f215,_0x2c92e8,_0xca68('0x1cc'));}else{_0x25fca3[_0xca68('0x10e')](_0x815271,_0x43f215,_0x2c92e8,'reason\x205\x20busy');}}break;case'8':_0x34abe3['outboundCongestionCallsDay']+=0x1;_0x815271[_0xca68('0xa9')]=0x8;_0x815271[_0xca68('0xf7')]=_0xca68('0x1cd');_0x815271[_0xca68('0xfc')]+=0x1;_0x815271[_0xca68('0xf9')]+=0x1;_0x2b720a=_0x34abe3[_0xca68('0x1ce')];_0x2f3851=_0x34abe3[_0xca68('0x128')];ami[_0xca68('0x4f')](_0xca68('0x1cf'),ut[_0xca68('0xf2')](_0x402899,'congestion'));_0x25fca3['createHistory'](_0x815271)[_0xca68('0xb2')](loggerCatch(_0xca68('0x1d0')));if(_0x25fca3[_0xca68('0x1c2')](0x8,_0x402899,_0x34abe3)&&!_0x107273){if(_0x815271[_0xca68('0xfc')]>=_0x34abe3[_0xca68('0x1b7')]){_0x25fca3['createStateFinal'](_0x815271,_0x43f215,_0x2c92e8,_0xca68('0x1d1'));}else{_0x25fca3[_0xca68('0x10e')](_0x815271,_0x43f215,_0x2c92e8,_0xca68('0x1d1'));}}break;case'11':_0x34abe3[_0xca68('0x1d2')]+=0x1;_0x815271[_0xca68('0xa9')]=0xb;_0x815271[_0xca68('0xf7')]=_0xca68('0x130');_0x815271[_0xca68('0x100')]+=0x1;_0x815271[_0xca68('0xf9')]+=0x1;_0x2b720a=_0x34abe3[_0xca68('0x1d3')];_0x2f3851=_0x34abe3[_0xca68('0x128')];_0x25fca3['createHistory'](_0x815271)[_0xca68('0xb2')](loggerCatch('[syncAgentComplete][createHistory][11]'));if(_0x25fca3['checkRetriveMax'](0xb,_0x402899,_0x34abe3)&&!_0x107273){if(_0x815271[_0xca68('0x100')]>=_0x34abe3['dialAbandonedMaxRetry']){_0x25fca3[_0xca68('0x104')](_0x815271,_0x43f215,_0x2c92e8,'reason\x2011\x20abandoned');}else{_0x25fca3[_0xca68('0x10e')](_0x815271,_0x43f215,_0x2c92e8,_0xca68('0x1d4'));}}break;case'20':_0x34abe3[_0xca68('0x1d5')]+=0x1;_0x815271[_0xca68('0xa9')]=0x14;_0x815271['statedesc']=_0xca68('0x1d6');_0x815271[_0xca68('0x102')]+=0x1;_0x815271['countglobal']+=0x1;_0x2b720a=_0x34abe3[_0xca68('0x1be')];_0x2f3851=_0x34abe3[_0xca68('0x128')];ami[_0xca68('0x4f')](_0xca68('0x1d7'),ut[_0xca68('0xf2')](_0x402899,_0xca68('0x1d8')));_0x25fca3['createHistory'](_0x815271)[_0xca68('0xb2')](loggerCatch(_0xca68('0x1d9')));if(_0x25fca3[_0xca68('0x1c2')](0x14,_0x402899,_0x34abe3)&&!_0x107273){if(_0x815271[_0xca68('0x102')]>=_0x34abe3[_0xca68('0x1bd')]){_0x25fca3[_0xca68('0x104')](_0x815271,_0x43f215,_0x2c92e8,_0xca68('0x1da'));}else{_0x25fca3[_0xca68('0x10e')](_0x815271,_0x43f215,_0x2c92e8,'reason\x2020\x20agentreject');}}break;default:_0x34abe3[_0xca68('0x6a')]+=0x1;_0x815271[_0xca68('0xa9')]=0xc;_0x815271[_0xca68('0xf7')]=_0x537b75[_0xca68('0x118')];_0x2b720a=_0x34abe3[_0xca68('0x1be')];_0x2f3851=_0x34abe3[_0xca68('0x128')];_0x25fca3[_0xca68('0xcf')](_0x815271)[_0xca68('0xb2')](loggerCatch(_0xca68('0x1db')));if(_0x25fca3[_0xca68('0x1c2')](_0x537b75[_0xca68('0x118')],_0x402899,_0x34abe3)&&!_0x107273){if(_0x815271[_0xca68('0xfb')]+_0x815271[_0xca68('0xfc')]+_0x815271[_0xca68('0xfd')]+_0x815271[_0xca68('0xfe')]+_0x815271[_0xca68('0xff')]+_0x815271[_0xca68('0x100')]+_0x815271[_0xca68('0x101')]+_0x815271[_0xca68('0x102')]>=_0x34abe3[_0xca68('0x10d')]){_0x25fca3[_0xca68('0x10e')](_0x815271,_0x43f215,_0x2c92e8,_0x537b75['reason']);}else{_0x25fca3[_0xca68('0x104')](_0x815271,_0x43f215,_0x2c92e8,_0x537b75[_0xca68('0x118')]);}}}})[_0xca68('0xba')](function(_0x267e02){if(_0x107273){_0x25fca3['swapAdditionalPhones'](_0x815271,_0x2b720a,_0x2f3851)[_0xca68('0xba')](function(_0x4f4403){return _0x43f215(0x1);});}});});};Dialer[_0xca68('0xab')][_0xca68('0x10e')]=function(_0x50e030,_0x54f369,_0x41a4ab,_0x7894b2){var _0x3e1998=new Final(_0x50e030);_0x3e1998[_0xca68('0xa9')]=0xf;_0x3e1998[_0xca68('0xf7')]='Global';this[_0xca68('0x104')](_0x3e1998,_0x54f369,_0x41a4ab,_0x7894b2);};Dialer['prototype'][_0xca68('0x104')]=function(_0x3c1045,_0xa65137,_0x3db416,_0x5ddc98){this[_0xca68('0xce')](_0x3c1045)[_0xca68('0xba')](function(){return _0xa65137(msgResponse(_0xca68('0x1c0'),_0xca68('0xde'),_0x5ddc98));})[_0xca68('0xb2')](function(){return _0x3db416(msgResponse(_0xca68('0x1dc'),_0xca68('0x150'),_0xca68('0x1dd')));});};Dialer['prototype']['predictive']=function(_0x5ab2db){var _0x10f9cb=_0x5ab2db[_0xca68('0x1de')]/0x64;var _0x58776f=_0x5ab2db[_0xca68('0x66')]/(_0x5ab2db[_0xca68('0x66')]+_0x5ab2db[_0xca68('0x61')]);var _0x308a58=Math[_0xca68('0x1df')](_0x5ab2db[_0xca68('0x72')]*(_0x5ab2db['predictiveIntervalMaxThreshold']/0x64));var _0x44ac65=Math[_0xca68('0x1df')](_0x5ab2db['predictiveIntervalAvailable']*(_0x5ab2db[_0xca68('0x1e0')]/0x64));var _0x4804b0=_0x5ab2db[_0xca68('0x52')]+_0x5ab2db[_0xca68('0x57')];var _0x3a22e4=Math[_0xca68('0x1e1')](_0x5ab2db[_0xca68('0x89')]*_0x5ab2db['erlangAbandonmentRate']*_0x5ab2db[_0xca68('0x70')]*_0x5ab2db[_0xca68('0x1e2')]);if(_[_0xca68('0x41')](_0x5ab2db['startProgressive'])){if(!_[_0xca68('0x41')](_0x5ab2db[_0xca68('0x2a')])){_0x5ab2db['startPredictive']=undefined;loggerPredictive[_0xca68('0x9a')](_0xca68('0x1e3'),_0xca68('0x1e4'));}if(!_['isUndefined'](_0x5ab2db[_0xca68('0x90')])){loggerPredictive[_0xca68('0x9a')](_0xca68('0x1e3'),_0xca68('0x1e5'));clearInterval(_0x5ab2db['handlePredictive']);_0x5ab2db['handlePredictive']=undefined;}_0x5ab2db[_0xca68('0x2b')]=moment()[_0xca68('0x7a')]('YYYY-MM-DD\x20HH:mm:ss');loggerPredictive['info'](_0x5ab2db['name'],_0xca68('0x1e6'),_0x5ab2db['startProgressive']);this[_0xca68('0x163')](_0x5ab2db,0x1);}else if(ifInterval(_0x5ab2db[_0xca68('0x1e7')],_0x5ab2db['startProgressive'])){this[_0xca68('0x163')](_0x5ab2db,0x1);loggerPredictiveCalls['info'](_0xca68('0x1e8'),_0x5ab2db[_0xca68('0x2b')],_0x5ab2db[_0xca68('0x47')]);_0x5ab2db[_0xca68('0x89')]=0x0;_0x5ab2db['predictiveIntervalErlangCallsDroppedCalls']=0x0;}else if(_0x10f9cb<_0x58776f&&_0x5ab2db[_0xca68('0x1e9')]===_0xca68('0x1ea')){freeVariablesPredictive(_0x5ab2db);loggerPredictive[_0xca68('0x7d')](_0xca68('0x1eb'),_0xca68('0x1ec'),_0x58776f,'startProgressive',_0x5ab2db['name']);}else if(_0x3a22e4<_0x5ab2db['predictiveIntervalErlangCallsDroppedCalls']&&_0x5ab2db[_0xca68('0x1e9')]===_0xca68('0x1ea')){freeVariablesPredictive(_0x5ab2db);loggerPredictive[_0xca68('0x7d')](_0xca68('0x1ed'),_0xca68('0x1ee'),_0x3a22e4,_0xca68('0x1ef'),_0x5ab2db[_0xca68('0x6f')],_0xca68('0x2b'),_0x5ab2db[_0xca68('0x47')]);}else if(!ifInterval(_0x5ab2db[_0xca68('0x1e7')],_0x5ab2db[_0xca68('0x2b')])&&_[_0xca68('0x41')](_0x5ab2db[_0xca68('0x2a')])&&!_[_0xca68('0x41')](_0x5ab2db[_0xca68('0x2b')])){_0x5ab2db['startPredictive']=moment()['format'](_0xca68('0x109'));loggerPredictive[_0xca68('0x7d')](_0x5ab2db[_0xca68('0x47')],_0xca68('0x1f0'),_0x5ab2db['startPredictive']);this[_0xca68('0xc4')](_0x5ab2db['dialPredictiveInterval'])[_0xca68('0xba')](this['getDataPredictive'](_0x5ab2db))[_0xca68('0xba')](mergeDataErlangB(_0x5ab2db))[_0xca68('0xba')](this[_0xca68('0x1f1')](_0x5ab2db))[_0xca68('0xb2')](loggerCatchPredictive(_0xca68('0x1f2'),_0x5ab2db));}else if(!ifInterval(_0x5ab2db[_0xca68('0x1e7')],_0x5ab2db[_0xca68('0x2a')])){_0x5ab2db[_0xca68('0x6f')]=0x0;_0x5ab2db[_0xca68('0x2a')]=moment()[_0xca68('0x7a')](_0xca68('0x109'));loggerPredictive[_0xca68('0x7d')](_0x5ab2db['name'],_0xca68('0x1f3'),_0x5ab2db[_0xca68('0x2a')]);clearInterval(_0x5ab2db[_0xca68('0x90')]);_0x5ab2db[_0xca68('0x90')]=undefined;this[_0xca68('0xc4')](_0x5ab2db[_0xca68('0x1e7')])['then'](this[_0xca68('0x1f4')](_0x5ab2db))['then'](mergeDataErlangB(_0x5ab2db))['then'](this[_0xca68('0x1f1')](_0x5ab2db))[_0xca68('0xb2')](loggerCatchPredictive('Predictive\x20for\x20every\x20interval',_0x5ab2db));}else if(_0x5ab2db[_0xca68('0x72')]&&_0x4804b0<_0x5ab2db[_0xca68('0x72')]-_0x44ac65){freeVariablesPredictive(_0x5ab2db);loggerPredictive['info'](_0x5ab2db[_0xca68('0x47')],'switch\x20in\x20progressive\x20because\x20available\x20agents\x20(',_0x4804b0,')\x20are\x20less\x20than\x20threshold\x20(',_0x5ab2db['predictiveIntervalAvailable'],'-',_0x44ac65,'=',_0x5ab2db[_0xca68('0x72')]-_0x44ac65,')');}else if(_0x5ab2db[_0xca68('0x72')]&&_0x4804b0>_0x5ab2db['predictiveIntervalAvailable']+_0x308a58){freeVariablesPredictive(_0x5ab2db);loggerPredictive[_0xca68('0x7d')](_0x5ab2db[_0xca68('0x47')],_0xca68('0x1f5'),_0x4804b0,_0xca68('0x1f6'),_0x5ab2db[_0xca68('0x72')],'+',_0x308a58,'=',_0x5ab2db[_0xca68('0x72')]+_0x308a58,')');}};Dialer['prototype'][_0xca68('0x1f4')]=function(_0x2f775e){var _0x494210=this;return function(_0x112832){return new BPromise(function(_0x2e38e7,_0x294220){_[_0xca68('0xd6')](_0x2f775e,_0x112832[0x0]);if(checkGetDataPredictive(_0x112832[0x0])){var _0x36ca64=_0x2f775e['predictiveIntervalAvailable']=_0x2f775e[_0xca68('0x57')]+_0x2f775e[_0xca68('0x52')];var _0x44be76=_0x2f775e[_0xca68('0x1e7')]*0x3c;var _0xf447d5=_0x112832[0x0][_0xca68('0x6c')]+_0x112832[0x0][_0xca68('0x6b')];var _0x543e13=(_0x112832[0x0][_0xca68('0x81')]+_0x112832[0x0][_0xca68('0x123')]+_0x112832[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x112832[0x0]['predictiveIntervalTotalCalls'];_0x2f775e[_0xca68('0x70')]=_0x543e13>0x0?_0x543e13:0x1;switch(_0x2f775e['dialPredictiveOptimization']){case'dropRate':var _0x5164b5=_0x2f775e['dialPredictiveOptimizationPercentage']/0x64;return _0x494210[_0xca68('0x1f7')](_0x36ca64,_0x44be76,_0xf447d5,_0x543e13,_0x5164b5)['then'](function(_0x49d515){return _0x2e38e7(_0x49d515);});case'agentBusyFactor':var _0x44a17=_0x2f775e[_0xca68('0x1de')]/0x64;return _0x494210[_0xca68('0x1f8')](_0x36ca64,_0x44be76,_0xf447d5,_0x543e13,_0x44a17)[_0xca68('0xba')](function(_0x97eda3){return _0x2e38e7(_0x97eda3);});default:return _0x294220(msgResponse(_0xca68('0x1f9'),_0xca68('0x150'),_0xca68('0x1fa')));}}else{return _0x294220(msgResponse('[getDataPredictive]','Failure','check\x20failure'));}});};};Dialer[_0xca68('0xab')][_0xca68('0x1fb')]=function(_0x4e20d5){var _0x572b3c=this;return function(_0x471ed4){return new BPromise(function(_0x1b9981,_0x60ae4b){_[_0xca68('0xd6')](_0x4e20d5,_0x471ed4[0x0]);if(checkGetDataPredictive(_0x471ed4[0x0])){loggerPredictive[_0xca68('0x7d')](JSON[_0xca68('0x4c')](_0x471ed4[0x0]));if(_0x4e20d5[_0xca68('0x1e9')]==='dropRate'){return _0x572b3c[_0xca68('0xcc')](_0x4e20d5['id'])[_0xca68('0xba')](function(_0x479131){var _0x2a4164=_0x4e20d5[_0xca68('0x53')]-_0x479131[0x0][_0xca68('0x1fc')];var _0x2b4ce6=_0x4e20d5[_0xca68('0x1e7')]*0x3c;var _0x2dcaf8=_0x471ed4[0x0]['predictiveIntervalAvgTalktime']+_0x471ed4[0x0]['predictiveIntervalAvgHoldtime'];var _0x589201=(_0x471ed4[0x0][_0xca68('0x81')]+_0x471ed4[0x0][_0xca68('0x123')]+_0x471ed4[0x0]['predictiveIntervalDroppedCallsCallersExit'])/_0x471ed4[0x0]['predictiveIntervalTotalCalls'];var _0x4c3b16=_0x4e20d5[_0xca68('0x1de')]/0x64;_0x4e20d5[_0xca68('0x71')]=_0x479131[0x0][_0xca68('0x1fc')]||0x0;_0x4e20d5['predictiveIntervalHitRate']=_0x589201>0x0?_0x589201:0x1;return _0x572b3c[_0xca68('0x1f7')](_0x2a4164,_0x2b4ce6,_0x2dcaf8,_0x589201,_0x4c3b16);})['then'](function(_0x48f392){return _0x1b9981(_0x48f392);})[_0xca68('0xb2')](function(_0x489953){return _0x60ae4b(msgResponse(_0xca68('0x1fd'),_0xca68('0x150'),JSON[_0xca68('0x4c')](_0x489953)));});}if(_0x4e20d5[_0xca68('0x1e9')]===_0xca68('0x1fe')){return _0x572b3c[_0xca68('0xcc')](_0x4e20d5['id'])['then'](function(_0x394414){var _0x2c25e2=_0x4e20d5[_0xca68('0x53')]-_0x394414[0x0]['outboundQueuePauses'];var _0x3082e0=_0x4e20d5[_0xca68('0x1e7')]*0x3c;var _0x200081=_0x471ed4[0x0][_0xca68('0x6c')]+_0x471ed4[0x0][_0xca68('0x6b')];var _0x177f1b=(_0x471ed4[0x0][_0xca68('0x81')]+_0x471ed4[0x0][_0xca68('0x123')]+_0x471ed4[0x0][_0xca68('0x6d')])/_0x471ed4[0x0][_0xca68('0x7f')];var _0x3937b9=_0x4e20d5[_0xca68('0x1de')]/0x64;_0x4e20d5['predictiveIntervalPauses']=_0x394414[0x0][_0xca68('0x1fc')]||0x0;_0x4e20d5['predictiveIntervalHitRate']=_0x177f1b>0x0?_0x177f1b:0x1;return _0x572b3c[_0xca68('0x1f8')](_0x2c25e2,_0x3082e0,_0x200081,_0x177f1b,_0x3937b9);})['then'](function(_0x199eb0){return _0x1b9981(_0x199eb0);})[_0xca68('0xb2')](function(_0xa6fb14){return _0x60ae4b(msgResponse(_0xca68('0x1fd'),'Failure',JSON[_0xca68('0x4c')](_0xa6fb14)));});}}else{return _0x60ae4b(msgResponse(_0xca68('0x1f9'),_0xca68('0x150'),_0xca68('0x1ff')));}});};};Dialer['prototype'][_0xca68('0x1f1')]=function(_0x33819d){var _0x4cbc30=this;return function(){var _0x32a9f9=0x0;var _0x5bdfc0=Math[_0xca68('0x1e1')](_0x33819d['erlangCallToSecond']*0x3e8);if(_0x5bdfc0>0x0){_0x5bdfc0=_0x5bdfc0<0x64?0x64:_0x5bdfc0;loggerPredictive['info'](_0x33819d[_0xca68('0x47')],'one\x20call\x20every:',_0x5bdfc0,_0xca68('0x4d'));_0x33819d[_0xca68('0x90')]=setInterval(function(){_0x4cbc30[_0xca68('0x90')](_0x33819d);loggerPredictiveCalls[_0xca68('0x7d')](_0xca68('0x200'),_0x32a9f9+=0x1);},_0x5bdfc0);}else{loggerPredictive[_0xca68('0x7d')](_0x33819d[_0xca68('0x47')],_0xca68('0x201'));}};};Dialer['prototype'][_0xca68('0x202')]=function(_0x15cdcc,_0x57f266){var _0x4ef27f=this;return function(_0x2d95f6){if(_[_0xca68('0x4a')](_0x2d95f6)){if(_[_0xca68('0xe5')](_0x57f266['UserId'])||!_0x57f266['recallme']){if(_0x15cdcc[_0xca68('0x5c')]==='booked'){_0x15cdcc[_0xca68('0x13b')]=_[_0xca68('0x41')](_0x15cdcc[_0xca68('0x13b')])?!![]:_0x15cdcc[_0xca68('0x13b')];var _0x1cfd3f=uuid['v4']();_0x4ef27f[_0xca68('0x29')][_0x1cfd3f]=new Action(_0x15cdcc,_0x57f266,_0x1cfd3f);loggerBooked['info'](_0xca68('0x203'),_0x1cfd3f,_0xca68('0x204'),JSON[_0xca68('0x4c')](_0x15cdcc[_0xca68('0x13b')]),_0xca68('0x205'),_0x15cdcc[_0xca68('0x47')]);if(_0x15cdcc[_0xca68('0x13b')]){_0x15cdcc[_0xca68('0x13b')]=![];_0x4ef27f[_0xca68('0x2d')][_0x4ef27f[_0xca68('0x29')][_0x1cfd3f][_0xca68('0xb6')]]=[];ami[_0xca68('0xb0')]({'actionid':_0x1cfd3f,'action':'queuestatus','queue':_0x15cdcc[_0xca68('0x47')]})['catch'](function(){_0x4ef27f[_0xca68('0xb4')](_0x15cdcc);_0x4ef27f[_0xca68('0xc6')]({'active':![],'ContactId':_0x4ef27f[_0xca68('0x29')][_0x1cfd3f][_0xca68('0xd8')],'ListId':_0x4ef27f[_0xca68('0x29')][_0x1cfd3f]['ListId'],'VoiceQueueId':_0x4ef27f['actions'][_0x1cfd3f]['VoiceQueueId']||undefined,'CampaignId':_0x4ef27f[_0xca68('0x29')][_0x1cfd3f][_0xca68('0x10a')]||undefined})[_0xca68('0xb2')](loggerCatch(_0xca68('0x206')));delete _0x4ef27f['actions'][_0x1cfd3f];});}else{loggerBooked[_0xca68('0x7d')](_0xca68('0x207'),JSON[_0xca68('0x4c')](_0x15cdcc['queueStatusComplete']),_0xca68('0x205'),_0x15cdcc['name']);_0x4ef27f[_0xca68('0xb4')](_0x15cdcc);_0x4ef27f['rescheduleContact']({'active':![],'ContactId':_0x4ef27f['actions'][_0x1cfd3f][_0xca68('0xd8')],'ListId':_0x4ef27f['actions'][_0x1cfd3f]['ListId'],'VoiceQueueId':_0x4ef27f[_0xca68('0x29')][_0x1cfd3f]['VoiceQueueId']||undefined,'CampaignId':_0x4ef27f[_0xca68('0x29')][_0x1cfd3f][_0xca68('0x10a')]||undefined})[_0xca68('0xb2')](loggerCatch(_0xca68('0x206')));delete _0x4ef27f[_0xca68('0x29')][_0x1cfd3f];}}else{return _0x4ef27f['actionOriginate'](_0x15cdcc,_0x57f266);}}else{if(getDiff(_0x57f266[_0xca68('0x208')])<_0x15cdcc[_0xca68('0x209')]*0x3c){if(_0x57f266[_0xca68('0x172')]&&!_0x57f266[_0xca68('0x172')][_0xca68('0x20a')]){_0x4ef27f[_0xca68('0x22')][_0xca68('0x145')](_0x57f266['id'])[_0xca68('0x20')](function(){_0x4ef27f[_0xca68('0xb4')](_0x15cdcc);});}else{_0x4ef27f[_0xca68('0xc8')]({'active':![]},_0x57f266['id'],0x1)[_0xca68('0x20')](function(){_0x4ef27f['updateOriginated'](_0x15cdcc);});}}else{_0x15cdcc['outboundReCallsDay']+=0x1;_0x4ef27f[_0xca68('0xb4')](_0x15cdcc);if(_0x15cdcc[_0xca68('0x20b')]){_0x4ef27f[_0xca68('0xc6')]({'active':![],'recallme':![],'UserId':null,'ContactId':_0x57f266[_0xca68('0xd8')],'ListId':_0x57f266[_0xca68('0xd9')],'VoiceQueueId':_0x57f266[_0xca68('0xdb')]||undefined,'CampaignId':_0x57f266[_0xca68('0x10a')]||undefined})[_0xca68('0xb2')](loggerCatch(_0xca68('0x20c')));_0x4ef27f[_0xca68('0xcf')](createObjHistory(_0x15cdcc,_0x57f266,'RECALLINQUEUE',0x17,_0xca68('0x20d')))['catch'](loggerCatch(_0xca68('0x20e')));}else{_0x4ef27f[_0xca68('0xd5')](createObjHistory(_0x15cdcc,_0x57f266,_0xca68('0x20f'),0x16,_0xca68('0x210')),_0xca68('0x211'),'[Originate][HistoryRecallClose]');}}}}else{_0x15cdcc[_0xca68('0x62')]+=0x1;_0x4ef27f['saveInDb'](createObjHistory(_0x15cdcc,_0x57f266,_0xca68('0x212'),0xd,'Blacklist'),'[Originate][historyBlacklist]',_0xca68('0x213'));throw _0xca68('0x214');}};};Dialer[_0xca68('0xab')]['handleIvr']=function(_0x9d8771){var _0x4fce75=this;var _0x24c142=_0x9d8771[_0xca68('0x215')]-_0x9d8771[_0xca68('0x98')]-_0x9d8771['temp'];emitCampaignSummary(_0x9d8771);if(_0x24c142>0x0){if(_0x24c142>this[_0xca68('0x27')]){_0x24c142=this[_0xca68('0x27')];}_0x9d8771[_0xca68('0xca')]+=_0x24c142;this['getContactDialerIvr'](_0x9d8771['id'],_0x24c142,_0x9d8771[_0xca68('0x216')],_0x9d8771)[_0xca68('0xba')](function(_0x3cbb8c){_0x9d8771[_0xca68('0xca')]-=_0x24c142;_0x9d8771[_0xca68('0xca')]=_0x9d8771[_0xca68('0xca')]>0x0?_0x9d8771[_0xca68('0xca')]:0x0;if(!checkContactEmpty(_0x3cbb8c)){_0x9d8771[_0xca68('0x42')]=_0xca68('0x9f');logger[_0xca68('0x7d')](_0xca68('0x217')+_0x9d8771[_0xca68('0x47')]);}else{_0x9d8771[_0xca68('0x98')]+=_0x3cbb8c[_0xca68('0x97')];_0x9d8771[_0xca68('0x42')]=_0xca68('0x218');for(var _0x5395da=0x0;_0x5395da<_0x3cbb8c[_0xca68('0x97')];_0x5395da+=0x1){_0x9d8771['ivrTotalCallsDays']+=0x1;if(_[_0xca68('0xe5')](_0x3cbb8c[_0x5395da])||_[_0xca68('0xe5')](_0x3cbb8c[_0x5395da]['Contact'])||_[_0xca68('0xe5')](_0x3cbb8c[_0x5395da][_0xca68('0x17f')])){_0x4fce75[_0xca68('0xd3')]('[actionOriginate]\x20',_0x9d8771,_0x3cbb8c[_0x5395da]);}else{_0x4fce75[_0xca68('0xc2')](_['pick'](_0x3cbb8c[_0x5395da],[_0xca68('0x10a'),'Contact.phone']))[_0xca68('0xba')](_0x4fce75[_0xca68('0x202')](_0x9d8771,_0x3cbb8c[_0x5395da]))['catch'](_0x4fce75['loggerHandler'](_0xca68('0x219'),_0x9d8771));}}}})[_0xca68('0xb2')](loggerGetContactDialer(_0xca68('0x21a'),_0x9d8771,_0x24c142));}};Dialer[_0xca68('0xab')][_0xca68('0x163')]=function(_0x517f52,_0x1f8c4b){var _0x4b9a21=this;var _0x48a951=[];var _0x3bdc6b=_0x1f8c4b>=0x1?_0x1f8c4b:0x1;if(_0x517f52[_0xca68('0x5c')]==='booked'){_0x3bdc6b=0x1;}var _0x34f809=Math['floor'](_0x517f52[_0xca68('0x52')]*_0x3bdc6b)-_0x517f52[_0xca68('0x98')]-_0x517f52[_0xca68('0xca')];emitVoiceQueueSummary(_0x517f52);if(_0x517f52[_0xca68('0x21b')]>0x0){var _0x5bab72=_0x517f52['dialLimitQueue']-_0x517f52[_0xca68('0x98')]-_0x517f52['talking']-_0x517f52[_0xca68('0xca')]-_0x517f52[_0xca68('0x21c')];if(_0x34f809>_0x5bab72){_0x34f809=_0x5bab72;}}if(_0x34f809>0x0){if(_0x517f52[_0xca68('0x5c')]===_0xca68('0x166')){_0x34f809=0x1;}if(_0x34f809>this[_0xca68('0x27')]){_0x34f809=this['maxNumberOriginate'];}_0x517f52['temp']+=_0x34f809;for(var _0x411072 in this[_0xca68('0x25')]){if(typeof this[_0xca68('0x25')][_0x411072]!==_0xca68('0x99')){if(this[_0xca68('0x25')][_0x411072][_0xca68('0xa9')]===_0xca68('0x21d')&&this[_0xca68('0x25')][_0x411072][_0xca68('0xe1')]===_0xca68('0xe2')){_0x48a951[_0xca68('0x13a')](this[_0xca68('0x25')][_0x411072]['id']);}}}this[_0xca68('0xc9')](_0x517f52['id'],_0x48a951,_0x34f809,_0x517f52[_0xca68('0x216')],_0x517f52)[_0xca68('0xba')](function(_0x3af5e7){_0x517f52[_0xca68('0xca')]-=_0x34f809;_0x517f52['temp']=_0x517f52[_0xca68('0xca')]>0x0?_0x517f52[_0xca68('0xca')]:0x0;if(!checkContactEmpty(_0x3af5e7)){_0x4b9a21['countReScheduled'](_0x517f52)[_0xca68('0xba')](sendMessageReschedule(_0x517f52))[_0xca68('0xb2')](loggerCatch(_0xca68('0xbb')));}else{_0x517f52[_0xca68('0x98')]+=_0x3af5e7[_0xca68('0x97')];_0x517f52[_0xca68('0x42')]=_0x517f52[_0xca68('0x5c')]===_0xca68('0x166')?_0xca68('0x186'):_0xca68('0x218');for(var _0x5c9031=0x0;_0x5c9031<_0x3af5e7['length'];_0x5c9031+=0x1){if(_[_0xca68('0xe5')](_0x3af5e7[_0x5c9031])||_[_0xca68('0xe5')](_0x3af5e7[_0x5c9031][_0xca68('0x195')])||_[_0xca68('0xe5')](_0x3af5e7[_0x5c9031][_0xca68('0x17f')])){_0x4b9a21['emptyContact'](_0xca68('0x21e'),_0x517f52,_0x3af5e7[_0x5c9031]);}else{_0x4b9a21[_0xca68('0xbc')](_['pick'](_0x3af5e7[_0x5c9031],[_0xca68('0xdb'),_0xca68('0x21f')]))[_0xca68('0xba')](_0x4b9a21[_0xca68('0x202')](_0x517f52,_0x3af5e7[_0x5c9031]))[_0xca68('0xb2')](_0x4b9a21[_0xca68('0xd2')]('[actionOriginate]\x20',_0x517f52));}}}})[_0xca68('0xb2')](loggerGetContactDialer(_0xca68('0x220'),_0x517f52,_0x34f809));}};Dialer['prototype'][_0xca68('0x90')]=function(_0x7a9df2){if(_0x7a9df2[_0xca68('0x21b')]>0x0){var _0x34352b=_0x7a9df2[_0xca68('0x21b')]-_0x7a9df2[_0xca68('0x98')]-_0x7a9df2[_0xca68('0x57')];if(_0x34352b>0x0){this[_0xca68('0x221')](_0x7a9df2);}else{loggerPredictiveCalls[_0xca68('0x7d')](_0xca68('0x222'));}}else{this[_0xca68('0x221')](_0x7a9df2);}};Dialer[_0xca68('0xab')][_0xca68('0x221')]=function(_0x3d5385){var _0x131f57=this;var _0x15ca8b=[];_0x3d5385['originated']+=0x1;for(var _0x47fd8e in this['agents']){if(typeof this[_0xca68('0x25')][_0x47fd8e]!==_0xca68('0x99')){if(this[_0xca68('0x25')][_0x47fd8e][_0xca68('0xa9')]==='not_inuse'&&this[_0xca68('0x25')][_0x47fd8e][_0xca68('0xe1')]===_0xca68('0xe2')){_0x15ca8b[_0xca68('0x13a')](this[_0xca68('0x25')][_0x47fd8e]['id']);}}}this['getContactDialer'](_0x3d5385['id'],_0x15ca8b,0x1,_0x3d5385[_0xca68('0x216')],_0x3d5385)[_0xca68('0xba')](function(_0xeac7e6){if(!checkContactEmpty(_0xeac7e6)){checkContactLowerLimitOriginate(_0x3d5385,0x1,0x0);_0x131f57[_0xca68('0xb8')](_0x3d5385)[_0xca68('0xba')](sendMessageReschedule(_0x3d5385))[_0xca68('0xb2')](loggerCatch(_0xca68('0xbb')));}else{_0x3d5385['message']=_0xca68('0x218');if(_[_0xca68('0xe5')](_0xeac7e6[0x0])||_['isNil'](_0xeac7e6[0x0]['Contact'])||_['isNil'](_0xeac7e6[0x0][_0xca68('0x17f')])){_0x131f57['emptyContact'](_0xca68('0x21e'),_0x3d5385,_0xeac7e6[0x0]);}else{_0x131f57[_0xca68('0xbc')](_['pick'](_0xeac7e6[0x0],[_0xca68('0xdb'),_0xca68('0x21f')]))['then'](_0x131f57['checkContactBlack'](_0x3d5385,_0xeac7e6[0x0]))['catch'](_0x131f57['loggerHandler']('[actionOriginatePredictive]\x20',_0x3d5385));}}})[_0xca68('0xb2')](loggerGetContactDialer(_0xca68('0x223'),_0x3d5385,0x1));emitVoiceQueueSummary(_0x3d5385);};Dialer[_0xca68('0xab')][_0xca68('0x1f7')]=function(_0x455dba,_0x2de173,_0x398a3d,_0x6ec690,_0x5f29ec,_0x5da864){loggerPredictive['info']('--------\x20Drop\x20Rate\x20--------');loggerPredictive[_0xca68('0x7d')](_0xca68('0x224'),_0x455dba);loggerPredictive[_0xca68('0x7d')](_0xca68('0x225'),_0x2de173);loggerPredictive[_0xca68('0x7d')](_0xca68('0x226'),_0x398a3d);loggerPredictive[_0xca68('0x7d')](_0xca68('0x227'),_0x6ec690);loggerPredictive[_0xca68('0x7d')]('Amax:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5f29ec);loggerPredictive['info'](_0xca68('0x8d'));return new BPromise(function(_0xe85a65,_0x13c679){if(_0x455dba<=0x0||isNaN(_0x455dba)){return _0x13c679(msgResponse('[abandonmentRate]','Error',_0xca68('0x228')+_0x455dba));}if(_0x398a3d<=0x0||isNaN(_0x398a3d)){return _0x13c679(msgResponse(_0xca68('0x229'),'Error',_0xca68('0x22a')+_0x398a3d));}if(_0x6ec690<=0x0||isNaN(_0x6ec690)){return _0x13c679(msgResponse(_0xca68('0x229'),'Error',_0xca68('0x22b')+_0x6ec690));}if(_0x2de173<=0x0||isNaN(_0x2de173)){return _0x13c679(msgResponse(_0xca68('0x229'),_0xca68('0x1ab'),_0xca68('0x22c')+_0x2de173));}if(_0x5f29ec<=0x0||isNaN(_0x5f29ec)){return _0x13c679(msgResponse('[abandonmentRate]',_0xca68('0x1ab'),'Amax\x20=\x20'+_0x5f29ec));}_0x5da864=_0x5da864||0x0;var _0x3f7b7b=0x1/_0x398a3d;var _0x1978b5=0x0;var _0x194074=0x0;var _0x5e5f8c=0x0;var _0x359820=0x0;for(var _0x1c5ef2=0x0;_0x5e5f8c<_0x5f29ec;_0x1c5ef2+=0x1){_0x194074=_0x1c5ef2/_0x2de173;_0x1978b5=(_0x6ec690*_0x194074+_0x5da864)/_0x3f7b7b;_0x5e5f8c=erlangb(_0x1978b5,_0x455dba);_0x359820=_0x1978b5/_0x455dba*(0x1-erlangb(_0x1978b5,_0x455dba));}return _0xe85a65({'erlangCalls':_0x1c5ef2,'erlangCallToSecond':_0x2de173/_0x1c5ef2,'erlangAbandonmentRate':_0x5e5f8c,'erlangBusyFactor':_0x359820});});};Dialer[_0xca68('0xab')][_0xca68('0x1f8')]=function(_0x19777d,_0x5c4eec,_0x33ea42,_0x3eb86c,_0x55051e,_0x16edbd){loggerPredictive['info'](_0xca68('0x22d'));loggerPredictive[_0xca68('0x7d')](_0xca68('0x224'),_0x19777d);loggerPredictive[_0xca68('0x7d')]('Interval:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x5c4eec);loggerPredictive['info']('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',_0x33ea42);loggerPredictive[_0xca68('0x7d')](_0xca68('0x227'),_0x3eb86c);loggerPredictive['info']('Umin:\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20',_0x55051e);loggerPredictive[_0xca68('0x7d')](_0xca68('0x8d'));return new BPromise(function(_0x4b8d74,_0x12a36b){if(_0x19777d<=0x0||isNaN(_0x19777d)){return _0x12a36b(msgResponse(_0xca68('0x22e'),_0xca68('0x1ab'),_0xca68('0x228')+_0x19777d));}if(_0x33ea42<=0x0||isNaN(_0x33ea42)){return _0x12a36b(msgResponse(_0xca68('0x22e'),_0xca68('0x1ab'),_0xca68('0x22a')+_0x33ea42));}if(_0x3eb86c<=0x0||isNaN(_0x3eb86c)){return _0x12a36b(msgResponse(_0xca68('0x22e'),'Error',_0xca68('0x22b')+_0x3eb86c));}if(_0x5c4eec<=0x0||isNaN(_0x5c4eec)){return _0x12a36b(msgResponse('[busyFactor]',_0xca68('0x1ab'),'interval\x20=\x20'+_0x5c4eec));}if(_0x55051e<=0x0||isNaN(_0x55051e)){return _0x12a36b(msgResponse(_0xca68('0x22e'),_0xca68('0x1ab'),'Umin\x20=\x20'+_0x55051e));}_0x16edbd=_0x16edbd||0x0;var _0x19981f=0x1/_0x33ea42;var _0x11a35b=0x0;var _0x40dd4c=0x0;var _0x13ae7f=0x0;var _0x1c845a=0x0;for(var _0x821166=0x0;_0x1c845a<_0x55051e;_0x821166+=0x1){_0x40dd4c=_0x821166/_0x5c4eec;_0x11a35b=(_0x3eb86c*_0x40dd4c+_0x16edbd)/_0x19981f;_0x13ae7f=erlangb(_0x11a35b,_0x19777d);_0x1c845a=_0x11a35b/_0x19777d*(0x1-erlangb(_0x11a35b,_0x19777d));}return _0x4b8d74({'erlangCalls':_0x821166,'erlangCallToSecond':_0x5c4eec/_0x821166,'erlangAbandonmentRate':_0x13ae7f,'erlangBusyFactor':_0x1c845a});});};module['exports']=Dialer;
\ No newline at end of file
index 6e76444..85c92f7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe04a=['countagentrejectretry','countabandonedretry','countmachineretry','uniqueid','calleridname','name','calleridnum','number','starttime','responsetime','droptime','endtime','holdtime','talktime','membername','connectedlinename','reason','callback','callbackuniqueid','callbackat','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','moment','milliseconds','diff','scheduledat','type','campaigntype','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countdropretry'];(function(_0x576a39,_0x5f3ed8){var _0x3f17cd=function(_0x555c9a){while(--_0x555c9a){_0x576a39['push'](_0x576a39['shift']());}};_0x3f17cd(++_0x5f3ed8);}(_0xe04a,0x196));var _0xae04=function(_0x481e3b,_0x44ce4b){_0x481e3b=_0x481e3b-0x0;var _0x307c95=_0xe04a[_0x481e3b];return _0x307c95;};'use strict';var util=require(_0xae04('0x0'));var _=require('lodash');var moment=require(_0xae04('0x1'));function getSeconds(_0x5bc7d6,_0x5df71c){var _0x50e723=moment(_0x5bc7d6)[_0xae04('0x2')](0x0);var _0x494172=moment(_0x5df71c)[_0xae04('0x2')](0x0);return _0x50e723[_0xae04('0x3')](_0x494172,'seconds');}function QueueCallerAbandon(_0x728e3f,_0x3a1170){this[_0xae04('0x4')]=_0x728e3f[_0xae04('0x4')];this[_0xae04('0x5')]=_0x728e3f[_0xae04('0x5')];this[_0xae04('0x6')]=_0x728e3f[_0xae04('0x5')]==='outbound'?_0xae04('0x7'):_0x728e3f[_0xae04('0x5')];this[_0xae04('0x8')]=_0x728e3f[_0xae04('0x8')];this[_0xae04('0x9')]=_0x728e3f[_0xae04('0x9')];this[_0xae04('0xa')]=_0x728e3f['countnoanswerretry'];this[_0xae04('0xb')]=_0x728e3f['countbusyretry']+_0x728e3f[_0xae04('0x9')]+_0x728e3f[_0xae04('0xa')]+_0x728e3f[_0xae04('0xc')]+_0x728e3f[_0xae04('0xd')]+_0x728e3f['countabandonedretry']+_0x728e3f['countmachineretry']+_0x728e3f[_0xae04('0xe')];this[_0xae04('0xc')]=_0x728e3f[_0xae04('0xc')];this['countdropretry']=_0x728e3f[_0xae04('0xd')];this[_0xae04('0xf')]=_0x728e3f['countabandonedretry'];this[_0xae04('0x10')]=_0x728e3f['countmachineretry'];this['countagentrejectretry']=_0x728e3f[_0xae04('0xe')];this[_0xae04('0x11')]=_0x3a1170[_0xae04('0x11')];this[_0xae04('0x12')]=_0x728e3f[_0xae04('0x13')];this[_0xae04('0x14')]=_0x728e3f[_0xae04('0x15')];this[_0xae04('0x16')]=_0x728e3f[_0xae04('0x16')];this[_0xae04('0x17')]=_0x728e3f['responsetime'];this[_0xae04('0x18')]=_0x728e3f[_0xae04('0x18')];this[_0xae04('0x19')]=this[_0xae04('0x18')];this['ringtime']=getSeconds(_0x728e3f[_0xae04('0x17')],_0x728e3f[_0xae04('0x16')]);this[_0xae04('0x1a')]=getSeconds(this[_0xae04('0x18')],_0x728e3f[_0xae04('0x17')]);this[_0xae04('0x1b')]=0x0;this[_0xae04('0x7')]=_0x3a1170[_0xae04('0x7')];this[_0xae04('0x1c')]=_0x3a1170[_0xae04('0x1d')];this['reason']=_0x3a1170[_0xae04('0x1e')];this[_0xae04('0x1f')]=_0x728e3f[_0xae04('0x1f')];this[_0xae04('0x20')]=_0x728e3f[_0xae04('0x20')];this['callbackat']=_0x728e3f[_0xae04('0x21')];this['recallme']=_0x728e3f['recallme'];this[_0xae04('0x22')]=_0x728e3f[_0xae04('0x22')];this['ListId']=_0x728e3f[_0xae04('0x23')];this['UserId']=_0x728e3f[_0xae04('0x24')];this[_0xae04('0x25')]=_0x728e3f[_0xae04('0x25')];this[_0xae04('0x26')]=_0x728e3f[_0xae04('0x26')];this[_0xae04('0x27')]=_0x728e3f[_0xae04('0x27')]||'';this[_0xae04('0x28')]=_0x728e3f[_0xae04('0x28')]||'';}module[_0xae04('0x29')]=QueueCallerAbandon;
\ No newline at end of file
+var _0x780c=['callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','CampaignId','originatecalleridnum','originatecalleridname','exports','util','lodash','diff','seconds','scheduledat','type','campaigntype','outbound','queue','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countdropretry','countagentrejectretry','uniqueid','calleridname','name','number','starttime','responsetime','droptime','endtime','ringtime','talktime','membername','connectedlinename','reason','callbackuniqueid'];(function(_0x246b48,_0x35a292){var _0x3ba4d8=function(_0x4aed5d){while(--_0x4aed5d){_0x246b48['push'](_0x246b48['shift']());}};_0x3ba4d8(++_0x35a292);}(_0x780c,0x15a));var _0xc780=function(_0x207811,_0x3420a6){_0x207811=_0x207811-0x0;var _0x170d56=_0x780c[_0x207811];return _0x170d56;};'use strict';var util=require(_0xc780('0x0'));var _=require(_0xc780('0x1'));var moment=require('moment');function getSeconds(_0x51901f,_0x5cdf3b){var _0x5efe82=moment(_0x51901f)['milliseconds'](0x0);var _0x129f3b=moment(_0x5cdf3b)['milliseconds'](0x0);return _0x5efe82[_0xc780('0x2')](_0x129f3b,_0xc780('0x3'));}function QueueCallerAbandon(_0x19f50e,_0x1d39fb){this[_0xc780('0x4')]=_0x19f50e[_0xc780('0x4')];this[_0xc780('0x5')]=_0x19f50e[_0xc780('0x5')];this[_0xc780('0x6')]=_0x19f50e[_0xc780('0x5')]===_0xc780('0x7')?_0xc780('0x8'):_0x19f50e[_0xc780('0x5')];this[_0xc780('0x9')]=_0x19f50e[_0xc780('0x9')];this[_0xc780('0xa')]=_0x19f50e[_0xc780('0xa')];this['countnoanswerretry']=_0x19f50e[_0xc780('0xb')];this[_0xc780('0xc')]=_0x19f50e[_0xc780('0x9')]+_0x19f50e['countcongestionretry']+_0x19f50e[_0xc780('0xb')]+_0x19f50e[_0xc780('0xd')]+_0x19f50e['countdropretry']+_0x19f50e[_0xc780('0xe')]+_0x19f50e[_0xc780('0xf')]+_0x19f50e['countagentrejectretry'];this[_0xc780('0xd')]=_0x19f50e['countnosuchnumberretry'];this['countdropretry']=_0x19f50e[_0xc780('0x10')];this['countabandonedretry']=_0x19f50e['countabandonedretry'];this['countmachineretry']=_0x19f50e[_0xc780('0xf')];this[_0xc780('0x11')]=_0x19f50e[_0xc780('0x11')];this[_0xc780('0x12')]=_0x1d39fb[_0xc780('0x12')];this[_0xc780('0x13')]=_0x19f50e[_0xc780('0x14')];this['calleridnum']=_0x19f50e[_0xc780('0x15')];this[_0xc780('0x16')]=_0x19f50e[_0xc780('0x16')];this['responsetime']=_0x19f50e[_0xc780('0x17')];this['droptime']=_0x19f50e[_0xc780('0x18')];this[_0xc780('0x19')]=this[_0xc780('0x18')];this[_0xc780('0x1a')]=getSeconds(_0x19f50e[_0xc780('0x17')],_0x19f50e['starttime']);this['holdtime']=getSeconds(this[_0xc780('0x18')],_0x19f50e[_0xc780('0x17')]);this[_0xc780('0x1b')]=0x0;this[_0xc780('0x8')]=_0x1d39fb['queue'];this[_0xc780('0x1c')]=_0x1d39fb[_0xc780('0x1d')];this[_0xc780('0x1e')]=_0x1d39fb['reason'];this['callback']=_0x19f50e['callback'];this[_0xc780('0x1f')]=_0x19f50e['callbackuniqueid'];this[_0xc780('0x20')]=_0x19f50e[_0xc780('0x20')];this[_0xc780('0x21')]=_0x19f50e[_0xc780('0x21')];this['ContactId']=_0x19f50e[_0xc780('0x22')];this['ListId']=_0x19f50e[_0xc780('0x23')];this[_0xc780('0x24')]=_0x19f50e[_0xc780('0x24')];this[_0xc780('0x25')]=_0x19f50e[_0xc780('0x25')];this[_0xc780('0x26')]=_0x19f50e['CampaignId'];this[_0xc780('0x27')]=_0x19f50e[_0xc780('0x27')]||'';this[_0xc780('0x28')]=_0x19f50e[_0xc780('0x28')]||'';}module[_0xc780('0x29')]=QueueCallerAbandon;
\ No newline at end of file
index c65039f..f5b3932 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(_0x3251f7,_0x43d28c){var _0x13c104=function(_0x989028){while(--_0x989028){_0x3251f7['push'](_0x3251f7['shift']());}};_0x13c104(++_0x43d28c);}(_0xa9e0,0x123));var _0x0a9e=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'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(_0x58f2c3,_0xa1e451){var _0x18916d=function(_0x5e493c){while(--_0x5e493c){_0x58f2c3['push'](_0x58f2c3['shift']());}};_0x18916d(++_0xa1e451);}(_0xa9e0,0x123));var _0x0a9e=function(_0xea8947,_0x1b573d){_0xea8947=_0xea8947-0x0;var _0x2455e9=_0xa9e0[_0xea8947];return _0x2455e9;};'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 53d5c00..aa008fd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xcf66=['bluebird','moment','path','../../../config/logger','fax','./rpcDb','./channel','./util/util','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','channels','faxAccounts','actions','syncNewchannel','bind','varset','syncVarSet','newexten','syncNewExten','faxstatus','syncFaxStatus','receivefax','hangup','originateresponse','syncOriginateResponse','prototype','context','from-voip-provider','hasOwnProperty','exten','localstationid','uniqueid','channel','name','info','\x20syncNewchannel\x20','variable','value','channelstate','channelstatedesc','operation','status','filename','\x20syncFaxStatus\x20','syncReceiveFax','remotestationid','pagestransferred','resolution','transferrate','calleridnum','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','create','.pdf','application/pdf','then','notify','\x20notify\x20','stringify','catch','error','\x20receiveFax\x20','pick','response','reason','AttachmentId','SENDING\x20FAILED\x20','[Fax][Message][Error][Updated]','logger','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','update','[Fax][Message][NoUpdate1]','[Fax][Message][NoUpdate2]','syncHangup','\x20hangup\x20sendFile\x20','\x20hangup\x20faxRiceive\x20','SUCCESS','SENDING\x20FAILED:\x20','faxstatusstring','SENDING\x20FAILED','send','FaxAccountId','[Fax][execOriginate][success]','message','Fax\x20received','Fax\x20failed','checkAfterSend','checkTrunk','isValid','Trunk\x20Reachable','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','parse','execute','%s/%s.tif','XMF-PATH','Action','execOriginate','addVariables','ext','isTrunkReachable','isNil','SIP/%s','trunks','format','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20work]','Trunk\x20not\x20working','[Fax][checkTrunk][Empty\x20Fax]','[Fax][checkTrunk][Empty\x20path]','Empty\x20path','util','lodash'];(function(_0x2cf2e9,_0xd58ea1){var _0xd3670d=function(_0x272868){while(--_0x272868){_0x2cf2e9['push'](_0x2cf2e9['shift']());}};_0xd3670d(++_0xd58ea1);}(_0xcf66,0x71));var _0x6cf6=function(_0x1b6050,_0x24aa91){_0x1b6050=_0x1b6050-0x0;var _0x215378=_0xcf66[_0x1b6050];return _0x215378;};'use strict';var util=require(_0x6cf6('0x0'));var _=require(_0x6cf6('0x1'));var BPromise=require(_0x6cf6('0x2'));var uuid=require('uuid');var moment=require(_0x6cf6('0x3'));var path=require(_0x6cf6('0x4'));var tiff2pdf=require('tiff2pdf');var gs=require('./util/gs');var logger=require(_0x6cf6('0x5'))(_0x6cf6('0x6'));var ami=require('../ami');var rpcDb=require(_0x6cf6('0x7'));var Channel=require(_0x6cf6('0x8'));var ut=require(_0x6cf6('0x9'));var Action=require('./action');var faxAccount=require(_0x6cf6('0xa'));var attachment=require(_0x6cf6('0xb'));var faxMessage=require(_0x6cf6('0xc'));function Fax(_0x748c93){this[_0x6cf6('0xd')]={};this[_0x6cf6('0xe')]=_0x748c93['faxAccounts'];this['trunks']=_0x748c93['trunks'];this[_0x6cf6('0xf')]={};ami['on']('newchannel',this[_0x6cf6('0x10')][_0x6cf6('0x11')](this));ami['on'](_0x6cf6('0x12'),this[_0x6cf6('0x13')]['bind'](this));ami['on']('newstate',this['syncNewState'][_0x6cf6('0x11')](this));ami['on'](_0x6cf6('0x14'),this[_0x6cf6('0x15')][_0x6cf6('0x11')](this));ami['on'](_0x6cf6('0x16'),this[_0x6cf6('0x17')]['bind'](this));ami['on'](_0x6cf6('0x18'),this['syncReceiveFax'][_0x6cf6('0x11')](this));ami['on'](_0x6cf6('0x19'),this['syncHangup'][_0x6cf6('0x11')](this));ami['on'](_0x6cf6('0x1a'),this[_0x6cf6('0x1b')][_0x6cf6('0x11')](this));}Fax[_0x6cf6('0x1c')][_0x6cf6('0x10')]=function(_0x10b430){if(_0x10b430[_0x6cf6('0x1d')]===_0x6cf6('0x1e')){for(var _0x2ca2b1 in this['faxAccounts']){if(this[_0x6cf6('0xe')][_0x6cf6('0x1f')](_0x2ca2b1)){if(_0x10b430[_0x6cf6('0x20')]===this['faxAccounts'][_0x2ca2b1][_0x6cf6('0x21')]){this[_0x6cf6('0xd')][_0x10b430[_0x6cf6('0x22')]]={};this[_0x6cf6('0xd')][_0x10b430[_0x6cf6('0x22')]][_0x6cf6('0x23')]=_0x10b430[_0x6cf6('0x23')];this['channels'][_0x10b430[_0x6cf6('0x22')]]['id']=this[_0x6cf6('0xe')][_0x2ca2b1]['id'];this[_0x6cf6('0xd')][_0x10b430[_0x6cf6('0x22')]][_0x6cf6('0x24')]=this[_0x6cf6('0xe')][_0x2ca2b1][_0x6cf6('0x24')];logger[_0x6cf6('0x25')](_0x10b430['uniqueid'],'\x20syncNewchannel\x20');}}}}if(this[_0x6cf6('0xf')][_0x10b430['uniqueid']]){this[_0x6cf6('0xd')][_0x10b430[_0x6cf6('0x22')]]={};this[_0x6cf6('0xd')][_0x10b430[_0x6cf6('0x22')]][_0x6cf6('0x23')]=_0x10b430[_0x6cf6('0x23')];logger[_0x6cf6('0x25')](_0x10b430['uniqueid'],_0x6cf6('0x26'));}};Fax[_0x6cf6('0x1c')][_0x6cf6('0x13')]=function(_0x558405){if(this[_0x6cf6('0xd')][_0x558405[_0x6cf6('0x22')]]){for(var _0x2224db in _0x558405[_0x6cf6('0x27')]){if(_0x558405['variable']['hasOwnProperty'](_0x2224db)){this[_0x6cf6('0xd')][_0x558405[_0x6cf6('0x22')]][_0x2224db]=_0x558405[_0x6cf6('0x28')];}}}};Fax[_0x6cf6('0x1c')]['syncNewState']=function(_0x2afc06){if(this['channels'][_0x2afc06['uniqueid']]){this['channels'][_0x2afc06[_0x6cf6('0x22')]][_0x6cf6('0x29')]=_0x2afc06[_0x6cf6('0x29')];this[_0x6cf6('0xd')][_0x2afc06[_0x6cf6('0x22')]]['channelstatedesc']=_0x2afc06[_0x6cf6('0x2a')];}};Fax[_0x6cf6('0x1c')][_0x6cf6('0x15')]=function(_0x535b28){if(this[_0x6cf6('0xd')][_0x535b28[_0x6cf6('0x22')]]){for(var _0xfcb0e5 in _0x535b28[_0x6cf6('0x27')]){if(_0x535b28[_0x6cf6('0x27')][_0x6cf6('0x1f')](_0xfcb0e5)){this[_0x6cf6('0xd')][_0x535b28[_0x6cf6('0x22')]][_0xfcb0e5]=_0x535b28[_0x6cf6('0x28')];}}}};Fax[_0x6cf6('0x1c')][_0x6cf6('0x17')]=function(_0x1151ac){if(this[_0x6cf6('0xd')][_0x1151ac[_0x6cf6('0x22')]]){this[_0x6cf6('0xd')][_0x1151ac[_0x6cf6('0x22')]][_0x6cf6('0x2b')]=_0x1151ac[_0x6cf6('0x2b')];this['channels'][_0x1151ac[_0x6cf6('0x22')]][_0x6cf6('0x2c')]=_0x1151ac[_0x6cf6('0x2c')];this[_0x6cf6('0xd')][_0x1151ac[_0x6cf6('0x22')]][_0x6cf6('0x21')]=_0x1151ac[_0x6cf6('0x21')];this[_0x6cf6('0xd')][_0x1151ac[_0x6cf6('0x22')]][_0x6cf6('0x2d')]=_0x1151ac[_0x6cf6('0x2d')];logger['info'](_0x1151ac[_0x6cf6('0x22')],_0x6cf6('0x2e'));}};Fax[_0x6cf6('0x1c')][_0x6cf6('0x2f')]=function(_0x31c822){var _0xe329e3=this;if(this[_0x6cf6('0xd')][_0x31c822[_0x6cf6('0x22')]]){var _0x3a962a=this['channels'][_0x31c822[_0x6cf6('0x22')]]['id'];this[_0x6cf6('0xd')][_0x31c822[_0x6cf6('0x22')]][_0x6cf6('0x30')]=_0x31c822[_0x6cf6('0x30')];this[_0x6cf6('0xd')][_0x31c822[_0x6cf6('0x22')]][_0x6cf6('0x31')]=_0x31c822[_0x6cf6('0x31')];this['channels'][_0x31c822[_0x6cf6('0x22')]]['localstationid']=_0x31c822[_0x6cf6('0x21')];this[_0x6cf6('0xd')][_0x31c822[_0x6cf6('0x22')]][_0x6cf6('0x32')]=_0x31c822[_0x6cf6('0x32')];this[_0x6cf6('0xd')][_0x31c822[_0x6cf6('0x22')]][_0x6cf6('0x33')]=_0x31c822['transferrate'];this[_0x6cf6('0xd')][_0x31c822[_0x6cf6('0x22')]]['filename']=_0x31c822[_0x6cf6('0x2d')];this[_0x6cf6('0xd')][_0x31c822[_0x6cf6('0x22')]]['calleridnum']=_0x31c822[_0x6cf6('0x34')];if(this[_0x6cf6('0xd')][_0x31c822['uniqueid']][_0x6cf6('0x31')]>0x0){tiff2pdf(_0x31c822[_0x6cf6('0x2d')],_0x6cf6('0x35'),function(_0x1aa357){logger[_0x6cf6('0x25')](_0x31c822[_0x6cf6('0x22')],_0x6cf6('0x36'),_0x1aa357['message']);attachment[_0x6cf6('0x37')]({'name':path['parse'](_0x31c822[_0x6cf6('0x2d')])[_0x6cf6('0x24')],'basename':path['parse'](_0x31c822[_0x6cf6('0x2d')])[_0x6cf6('0x24')]+_0x6cf6('0x38'),'type':_0x6cf6('0x39')})[_0x6cf6('0x3a')](function(_0x4eb930){faxAccount[_0x6cf6('0x3b')](_0x3a962a,{'from':_0x31c822[_0x6cf6('0x34')],'mapKey':_0x6cf6('0x6'),'body':path['parse'](_0x31c822[_0x6cf6('0x2d')])[_0x6cf6('0x24')]+_0x6cf6('0x38'),'AttachmentId':_0x4eb930['id']})['catch'](function(_0x2b4ac5){logger['error'](_0x31c822['uniqueid'],_0x6cf6('0x3c'),JSON[_0x6cf6('0x3d')](_0x2b4ac5));});})[_0x6cf6('0x3e')](function(_0xf123fb){logger[_0x6cf6('0x3f')](_0x31c822[_0x6cf6('0x22')],_0x6cf6('0x40'),JSON[_0x6cf6('0x3d')](_0xf123fb));});});}logger[_0x6cf6('0x25')](_0x31c822[_0x6cf6('0x22')],_0x6cf6('0x40'));}};Fax[_0x6cf6('0x1c')][_0x6cf6('0x1b')]=function(_0x4c8ada){if(this[_0x6cf6('0xf')][_0x4c8ada[_0x6cf6('0x22')]]){_['merge'](this['channels'][_0x4c8ada[_0x6cf6('0x22')]],_[_0x6cf6('0x41')](_0x4c8ada,[_0x6cf6('0x42'),_0x6cf6('0x43')]));}};function updateStatus(_0x459ca3){if(_0x459ca3[_0x6cf6('0x44')]){faxMessage['update'](_0x459ca3[_0x6cf6('0x44')],{'failMessage':_0x6cf6('0x45')})[_0x6cf6('0x3a')](function(_0x52122b){ut['logger'](_0x6cf6('0x46'),_0x52122b);})[_0x6cf6('0x3e')](function(_0x303189){ut[_0x6cf6('0x47')](_0x6cf6('0x48'),_0x303189);});}else{ut[_0x6cf6('0x47')](_0x6cf6('0x49'));}}Fax[_0x6cf6('0x1c')][_0x6cf6('0x4a')]=function(_0x10df16,_0x4bb37e,_0x217072){var _0x2fc115=this;var _0x34165c={};if(_0x4bb37e){_0x34165c={'read':_0x4bb37e};}else{_0x34165c={'failMessage':_0x217072};}if(this[_0x6cf6('0xf')][_0x10df16][_0x6cf6('0x44')]){faxMessage[_0x6cf6('0x4b')](this[_0x6cf6('0xf')][_0x10df16][_0x6cf6('0x44')],_0x34165c)[_0x6cf6('0x3a')](function(_0x330919){ut[_0x6cf6('0x47')]('[Fax][Message][Updated]',_0x330919);})[_0x6cf6('0x3e')](function(_0x4ec56b){ut[_0x6cf6('0x47')](_0x6cf6('0x4c'),_0x4ec56b);})['finally'](function(){delete _0x2fc115[_0x6cf6('0xd')][_0x10df16];delete _0x2fc115[_0x6cf6('0xf')][_0x10df16];});}else{ut[_0x6cf6('0x47')](_0x6cf6('0x4d'));delete this[_0x6cf6('0xd')][_0x10df16];delete this[_0x6cf6('0xf')][_0x10df16];}};Fax['prototype'][_0x6cf6('0x4e')]=function(_0x167356){var _0x160c7f=this;if(this['channels'][_0x167356['uniqueid']]){if(this[_0x6cf6('0xf')][_0x167356[_0x6cf6('0x22')]]){this['channels'][_0x167356[_0x6cf6('0x22')]]['id']=this[_0x6cf6('0xf')][_0x167356[_0x6cf6('0x22')]]['id'];this[_0x6cf6('0xd')][_0x167356[_0x6cf6('0x22')]]['name']=this[_0x6cf6('0xf')][_0x167356[_0x6cf6('0x22')]]['name'];}logger['info'](_0x167356[_0x6cf6('0x22')],this[_0x6cf6('0xf')][_0x167356[_0x6cf6('0x22')]]?_0x6cf6('0x4f'):_0x6cf6('0x50'),JSON['stringify'](this['channels'][_0x167356[_0x6cf6('0x22')]]));if(this[_0x6cf6('0xf')][_0x167356[_0x6cf6('0x22')]]){if(this[_0x6cf6('0xd')][_0x167356[_0x6cf6('0x22')]]['faxpages']>0x0&&this['channels'][_0x167356['uniqueid']][_0x6cf6('0x16')]===_0x6cf6('0x51')){this[_0x6cf6('0x4a')](_0x167356[_0x6cf6('0x22')],!![]);}else{this['updateStatus'](_0x167356[_0x6cf6('0x22')],![],this['channels'][_0x167356[_0x6cf6('0x22')]]['faxstatusstring']?_0x6cf6('0x52')+this[_0x6cf6('0xd')][_0x167356[_0x6cf6('0x22')]][_0x6cf6('0x53')]:_0x6cf6('0x54'));}}}};Fax['prototype'][_0x6cf6('0x55')]=function(_0x5bc1cb){var _0x4498cd=this;return new BPromise(function(_0x5e1f79,_0x4363f7){_0x4498cd['execOriginate'](_0x5bc1cb,_0x4498cd[_0x6cf6('0xe')][_0x5bc1cb[_0x6cf6('0x56')]])['then'](function(_0x3b4cb){ut[_0x6cf6('0x47')](_0x6cf6('0x57'),_0x3b4cb);_0x5e1f79(ut[_0x6cf6('0x58')](_0x6cf6('0x59')));})[_0x6cf6('0x3e')](function(_0x3d57c3){ut['logger']('[Fax][execOriginate][failure]',_0x3d57c3);updateStatus(_0x5bc1cb);_0x4363f7(ut[_0x6cf6('0x58')](_0x6cf6('0x5a')));});});};Fax['prototype'][_0x6cf6('0x5b')]=function(_0x565efc){var _0x581e78=this;return new BPromise(function(_0x13787c,_0x4d1275){var _0x57da10=_0x581e78[_0x6cf6('0x5c')](_0x581e78[_0x6cf6('0xe')][_0x565efc[_0x6cf6('0x56')]]['Trunk'],_0x565efc);if(_0x57da10[_0x6cf6('0x5d')]){_0x13787c(ut['message'](_0x6cf6('0x5e')));}else{_0x4d1275(ut[_0x6cf6('0x58')](_0x57da10['message']));}});};function originate(_0x37b457,_0xe2db1d,_0x1f5e5a){return new BPromise(function(_0x421819,_0xa36ee1){if(_0x1f5e5a){var _0x40ea5e=util['format'](_0x6cf6('0x5f'),path[_0x6cf6('0x60')](_0x37b457[_0x6cf6('0x4')])[_0x6cf6('0x24')],_0x37b457[_0x6cf6('0x4')]);gs[_0x6cf6('0x61')](_0x40ea5e)['then'](function(){_0x37b457['path']=util['format'](_0x6cf6('0x62'),path['parse'](_0x37b457[_0x6cf6('0x4')])['dir'],path[_0x6cf6('0x60')](_0x37b457[_0x6cf6('0x4')])['name']);_0xe2db1d[_0x6cf6('0x63')]=_0x37b457[_0x6cf6('0x4')];ut[_0x6cf6('0x47')]('Convert\x20pdf\x20to\x20tif','');ami[_0x6cf6('0x64')](ut['variablesAction'](_0x37b457,_0xe2db1d))[_0x6cf6('0x3a')](function(_0x4077f1){_0x421819(_0x4077f1);})[_0x6cf6('0x3e')](function(_0x308076){_0xa36ee1(_0x308076);});})[_0x6cf6('0x3e')](function(_0x3336f9){_0xa36ee1(_0x3336f9);});}else{ami[_0x6cf6('0x64')](ut['variablesAction'](_0x37b457,_0xe2db1d))[_0x6cf6('0x3a')](function(_0x5d7d29){_0x421819(_0x5d7d29);})[_0x6cf6('0x3e')](function(_0xdb7124){_0xa36ee1(_0xdb7124);});}});}Fax[_0x6cf6('0x1c')][_0x6cf6('0x65')]=function(_0x49e006,_0x4ab759){var _0x280ac0=this;return new BPromise(function(_0x25b9af,_0x1a0c49){var _0x3060d=uuid['v4']();var _0x1a65f0=ut[_0x6cf6('0x66')](_0x49e006,_0x4ab759);_0x280ac0['actions'][_0x3060d]=new Action(_0x3060d,_0x4ab759,_0x49e006);var _0x517c8e=_0x280ac0[_0x6cf6('0xf')][_0x3060d];if(path['parse'](_0x49e006[_0x6cf6('0x4')])[_0x6cf6('0x67')]===_0x6cf6('0x38')){originate(_0x517c8e,_0x1a65f0,!![])[_0x6cf6('0x3a')](function(_0x5801be){_0x25b9af(_0x5801be);})[_0x6cf6('0x3e')](function(_0x4c5f0d){_0x1a0c49(_0x4c5f0d);});}else{originate(_0x517c8e,_0x1a65f0,![])[_0x6cf6('0x3a')](function(_0x2080f3){_0x25b9af(_0x2080f3);})[_0x6cf6('0x3e')](function(_0x51fe69){_0x1a0c49(_0x51fe69);});}});};Fax[_0x6cf6('0x1c')][_0x6cf6('0x68')]=function(_0x37fa59){return!_['isNil'](_0x37fa59)&&!_[_0x6cf6('0x69')](_0x37fa59[_0x6cf6('0x24')])&&!_[_0x6cf6('0x69')](_0x37fa59['active'])&&_0x37fa59['active']&&!_[_0x6cf6('0x69')](this['trunks'][util['format'](_0x6cf6('0x6a'),_0x37fa59[_0x6cf6('0x24')])])&&!_[_0x6cf6('0x69')](this[_0x6cf6('0x6b')][util[_0x6cf6('0x6c')](_0x6cf6('0x6a'),_0x37fa59[_0x6cf6('0x24')])][_0x6cf6('0x2c')])&&(this[_0x6cf6('0x6b')][util['format'](_0x6cf6('0x6a'),_0x37fa59[_0x6cf6('0x24')])][_0x6cf6('0x2c')]==='reachable'||this['trunks'][util[_0x6cf6('0x6c')](_0x6cf6('0x6a'),_0x37fa59[_0x6cf6('0x24')])][_0x6cf6('0x2c')]===_0x6cf6('0x6d'));};Fax[_0x6cf6('0x1c')]['checkTrunk']=function(_0x347cb2,_0x17f730){if(!this[_0x6cf6('0x68')](_0x347cb2)){ut[_0x6cf6('0x47')](_0x6cf6('0x6e'),_[_0x6cf6('0x69')](_0x347cb2)?'':_0x347cb2[_0x6cf6('0x24')]+'\x20Trunk\x20is\x20not\x20active');return{'isValid':![],'message':_0x6cf6('0x6f')};}if(_[_0x6cf6('0x69')](_0x17f730['fax'])){ut[_0x6cf6('0x47')](_0x6cf6('0x70'),JSON[_0x6cf6('0x3d')](_0x17f730));return{'isValid':![],'message':'Empty\x20Fax'};}if(_[_0x6cf6('0x69')](_0x17f730[_0x6cf6('0x4')])){ut[_0x6cf6('0x47')](_0x6cf6('0x71'),JSON[_0x6cf6('0x3d')](_0x17f730));return{'isValid':![],'message':_0x6cf6('0x72')};}return{'isValid':!![],'message':'Is\x20Valid'};};module['exports']=Fax;
\ No newline at end of file
+var _0xea77=['Empty\x20path','Is\x20Valid','util','uuid','moment','path','tiff2pdf','./util/gs','fax','../ami','./rpcDb','./channel','./util/util','./action','../rpc/faxAccount','../rpc/attachment','../rpc/faxMessage','faxAccounts','trunks','actions','newchannel','syncNewchannel','bind','varset','syncVarSet','newstate','syncNewState','syncNewExten','faxstatus','syncFaxStatus','syncReceiveFax','hangup','syncHangup','originateresponse','syncOriginateResponse','prototype','context','hasOwnProperty','exten','localstationid','channels','uniqueid','channel','name','info','\x20syncNewchannel\x20','variable','value','channelstate','channelstatedesc','operation','status','filename','remotestationid','resolution','transferrate','calleridnum','pagestransferred','/var/opt/motion2/server/files/attachments/','\x20result\x20conversion\x20file\x20','message','create','parse','.pdf','application/pdf','then','\x20notify\x20','catch','error','\x20receiveFax\x20','stringify','merge','pick','reason','AttachmentId','update','SENDING\x20FAILED\x20','logger','[Fax][Message][Error][Updated]','[Fax][Message][Error][NoUpdate1]','[Fax][Message][Error][NoUpdate2]','updateStatus','finally','\x20hangup\x20sendFile\x20','faxpages','SUCCESS','SENDING\x20FAILED:\x20','faxstatusstring','SENDING\x20FAILED','send','FaxAccountId','[Fax][execOriginate][success]','Fax\x20received','[Fax][execOriginate][failure]','Fax\x20failed','checkAfterSend','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','execute','dir','Convert\x20pdf\x20to\x20tif','Action','variablesAction','execOriginate','ext','isTrunkReachable','isNil','active','SIP/%s','unmonitored','[Fax][checkTrunk][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20is\x20not\x20active','Trunk\x20not\x20working\x20correctly','[Fax][checkTrunk][Empty\x20Fax]','Empty\x20Fax'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xea77,0x164));var _0x7ea7=function(_0x5082ed,_0x350d1e){_0x5082ed=_0x5082ed-0x0;var _0x75c4d6=_0xea77[_0x5082ed];return _0x75c4d6;};'use strict';var util=require(_0x7ea7('0x0'));var _=require('lodash');var BPromise=require('bluebird');var uuid=require(_0x7ea7('0x1'));var moment=require(_0x7ea7('0x2'));var path=require(_0x7ea7('0x3'));var tiff2pdf=require(_0x7ea7('0x4'));var gs=require(_0x7ea7('0x5'));var logger=require('../../../config/logger')(_0x7ea7('0x6'));var ami=require(_0x7ea7('0x7'));var rpcDb=require(_0x7ea7('0x8'));var Channel=require(_0x7ea7('0x9'));var ut=require(_0x7ea7('0xa'));var Action=require(_0x7ea7('0xb'));var faxAccount=require(_0x7ea7('0xc'));var attachment=require(_0x7ea7('0xd'));var faxMessage=require(_0x7ea7('0xe'));function Fax(_0x2958f9){this['channels']={};this[_0x7ea7('0xf')]=_0x2958f9[_0x7ea7('0xf')];this[_0x7ea7('0x10')]=_0x2958f9['trunks'];this[_0x7ea7('0x11')]={};ami['on'](_0x7ea7('0x12'),this[_0x7ea7('0x13')][_0x7ea7('0x14')](this));ami['on'](_0x7ea7('0x15'),this[_0x7ea7('0x16')][_0x7ea7('0x14')](this));ami['on'](_0x7ea7('0x17'),this[_0x7ea7('0x18')][_0x7ea7('0x14')](this));ami['on']('newexten',this[_0x7ea7('0x19')][_0x7ea7('0x14')](this));ami['on'](_0x7ea7('0x1a'),this[_0x7ea7('0x1b')][_0x7ea7('0x14')](this));ami['on']('receivefax',this[_0x7ea7('0x1c')][_0x7ea7('0x14')](this));ami['on'](_0x7ea7('0x1d'),this[_0x7ea7('0x1e')][_0x7ea7('0x14')](this));ami['on'](_0x7ea7('0x1f'),this[_0x7ea7('0x20')]['bind'](this));}Fax[_0x7ea7('0x21')]['syncNewchannel']=function(_0x34bcd3){if(_0x34bcd3[_0x7ea7('0x22')]==='from-voip-provider'){for(var _0x58a9a3 in this[_0x7ea7('0xf')]){if(this[_0x7ea7('0xf')][_0x7ea7('0x23')](_0x58a9a3)){if(_0x34bcd3[_0x7ea7('0x24')]===this[_0x7ea7('0xf')][_0x58a9a3][_0x7ea7('0x25')]){this[_0x7ea7('0x26')][_0x34bcd3[_0x7ea7('0x27')]]={};this[_0x7ea7('0x26')][_0x34bcd3[_0x7ea7('0x27')]][_0x7ea7('0x28')]=_0x34bcd3[_0x7ea7('0x28')];this['channels'][_0x34bcd3[_0x7ea7('0x27')]]['id']=this['faxAccounts'][_0x58a9a3]['id'];this[_0x7ea7('0x26')][_0x34bcd3[_0x7ea7('0x27')]][_0x7ea7('0x29')]=this[_0x7ea7('0xf')][_0x58a9a3]['name'];logger[_0x7ea7('0x2a')](_0x34bcd3[_0x7ea7('0x27')],_0x7ea7('0x2b'));}}}}if(this[_0x7ea7('0x11')][_0x34bcd3[_0x7ea7('0x27')]]){this[_0x7ea7('0x26')][_0x34bcd3[_0x7ea7('0x27')]]={};this['channels'][_0x34bcd3[_0x7ea7('0x27')]][_0x7ea7('0x28')]=_0x34bcd3[_0x7ea7('0x28')];logger['info'](_0x34bcd3['uniqueid'],_0x7ea7('0x2b'));}};Fax['prototype']['syncVarSet']=function(_0x19f945){if(this[_0x7ea7('0x26')][_0x19f945[_0x7ea7('0x27')]]){for(var _0x1076e7 in _0x19f945[_0x7ea7('0x2c')]){if(_0x19f945[_0x7ea7('0x2c')][_0x7ea7('0x23')](_0x1076e7)){this[_0x7ea7('0x26')][_0x19f945[_0x7ea7('0x27')]][_0x1076e7]=_0x19f945[_0x7ea7('0x2d')];}}}};Fax['prototype'][_0x7ea7('0x18')]=function(_0x26c53f){if(this[_0x7ea7('0x26')][_0x26c53f['uniqueid']]){this[_0x7ea7('0x26')][_0x26c53f[_0x7ea7('0x27')]][_0x7ea7('0x2e')]=_0x26c53f[_0x7ea7('0x2e')];this[_0x7ea7('0x26')][_0x26c53f[_0x7ea7('0x27')]][_0x7ea7('0x2f')]=_0x26c53f[_0x7ea7('0x2f')];}};Fax[_0x7ea7('0x21')][_0x7ea7('0x19')]=function(_0x3abe14){if(this['channels'][_0x3abe14['uniqueid']]){for(var _0x205007 in _0x3abe14['variable']){if(_0x3abe14[_0x7ea7('0x2c')]['hasOwnProperty'](_0x205007)){this[_0x7ea7('0x26')][_0x3abe14[_0x7ea7('0x27')]][_0x205007]=_0x3abe14[_0x7ea7('0x2d')];}}}};Fax['prototype'][_0x7ea7('0x1b')]=function(_0x582cf2){if(this[_0x7ea7('0x26')][_0x582cf2[_0x7ea7('0x27')]]){this['channels'][_0x582cf2[_0x7ea7('0x27')]][_0x7ea7('0x30')]=_0x582cf2[_0x7ea7('0x30')];this[_0x7ea7('0x26')][_0x582cf2[_0x7ea7('0x27')]][_0x7ea7('0x31')]=_0x582cf2['status'];this[_0x7ea7('0x26')][_0x582cf2['uniqueid']][_0x7ea7('0x25')]=_0x582cf2['localstationid'];this[_0x7ea7('0x26')][_0x582cf2[_0x7ea7('0x27')]][_0x7ea7('0x32')]=_0x582cf2[_0x7ea7('0x32')];logger['info'](_0x582cf2[_0x7ea7('0x27')],'\x20syncFaxStatus\x20');}};Fax['prototype'][_0x7ea7('0x1c')]=function(_0x295b47){var _0x681b3c=this;if(this[_0x7ea7('0x26')][_0x295b47['uniqueid']]){var _0x34aea5=this[_0x7ea7('0x26')][_0x295b47[_0x7ea7('0x27')]]['id'];this[_0x7ea7('0x26')][_0x295b47[_0x7ea7('0x27')]][_0x7ea7('0x33')]=_0x295b47[_0x7ea7('0x33')];this['channels'][_0x295b47[_0x7ea7('0x27')]]['pagestransferred']=_0x295b47['pagestransferred'];this[_0x7ea7('0x26')][_0x295b47[_0x7ea7('0x27')]][_0x7ea7('0x25')]=_0x295b47[_0x7ea7('0x25')];this[_0x7ea7('0x26')][_0x295b47[_0x7ea7('0x27')]][_0x7ea7('0x34')]=_0x295b47[_0x7ea7('0x34')];this[_0x7ea7('0x26')][_0x295b47['uniqueid']][_0x7ea7('0x35')]=_0x295b47[_0x7ea7('0x35')];this[_0x7ea7('0x26')][_0x295b47[_0x7ea7('0x27')]][_0x7ea7('0x32')]=_0x295b47[_0x7ea7('0x32')];this[_0x7ea7('0x26')][_0x295b47[_0x7ea7('0x27')]][_0x7ea7('0x36')]=_0x295b47['calleridnum'];if(this[_0x7ea7('0x26')][_0x295b47[_0x7ea7('0x27')]][_0x7ea7('0x37')]>0x0){tiff2pdf(_0x295b47[_0x7ea7('0x32')],_0x7ea7('0x38'),function(_0x57c8c4){logger[_0x7ea7('0x2a')](_0x295b47[_0x7ea7('0x27')],_0x7ea7('0x39'),_0x57c8c4[_0x7ea7('0x3a')]);attachment[_0x7ea7('0x3b')]({'name':path[_0x7ea7('0x3c')](_0x295b47[_0x7ea7('0x32')])[_0x7ea7('0x29')],'basename':path[_0x7ea7('0x3c')](_0x295b47[_0x7ea7('0x32')])[_0x7ea7('0x29')]+_0x7ea7('0x3d'),'type':_0x7ea7('0x3e')})[_0x7ea7('0x3f')](function(_0x32e5d7){faxAccount['notify'](_0x34aea5,{'from':_0x295b47[_0x7ea7('0x36')],'mapKey':'fax','body':path[_0x7ea7('0x3c')](_0x295b47[_0x7ea7('0x32')])['name']+'.pdf','AttachmentId':_0x32e5d7['id']})['catch'](function(_0x55d895){logger['error'](_0x295b47[_0x7ea7('0x27')],_0x7ea7('0x40'),JSON['stringify'](_0x55d895));});})[_0x7ea7('0x41')](function(_0x2a998b){logger[_0x7ea7('0x42')](_0x295b47['uniqueid'],_0x7ea7('0x43'),JSON[_0x7ea7('0x44')](_0x2a998b));});});}logger['info'](_0x295b47['uniqueid'],_0x7ea7('0x43'));}};Fax[_0x7ea7('0x21')][_0x7ea7('0x20')]=function(_0x9530f){if(this[_0x7ea7('0x11')][_0x9530f['uniqueid']]){_[_0x7ea7('0x45')](this[_0x7ea7('0x26')][_0x9530f['uniqueid']],_[_0x7ea7('0x46')](_0x9530f,['response',_0x7ea7('0x47')]));}};function updateStatus(_0x2d1330){if(_0x2d1330[_0x7ea7('0x48')]){faxMessage[_0x7ea7('0x49')](_0x2d1330[_0x7ea7('0x48')],{'failMessage':_0x7ea7('0x4a')})[_0x7ea7('0x3f')](function(_0x10708d){ut[_0x7ea7('0x4b')](_0x7ea7('0x4c'),_0x10708d);})['catch'](function(_0x10c6f6){ut[_0x7ea7('0x4b')](_0x7ea7('0x4d'),_0x10c6f6);});}else{ut['logger'](_0x7ea7('0x4e'));}}Fax[_0x7ea7('0x21')][_0x7ea7('0x4f')]=function(_0x425826,_0x32c2d1,_0x428740){var _0x308d1c=this;var _0x4b43e9={};if(_0x32c2d1){_0x4b43e9={'read':_0x32c2d1};}else{_0x4b43e9={'failMessage':_0x428740};}if(this[_0x7ea7('0x11')][_0x425826][_0x7ea7('0x48')]){faxMessage[_0x7ea7('0x49')](this[_0x7ea7('0x11')][_0x425826]['AttachmentId'],_0x4b43e9)[_0x7ea7('0x3f')](function(_0x12405a){ut[_0x7ea7('0x4b')]('[Fax][Message][Updated]',_0x12405a);})[_0x7ea7('0x41')](function(_0x5e957b){ut['logger']('[Fax][Message][NoUpdate1]',_0x5e957b);})[_0x7ea7('0x50')](function(){delete _0x308d1c[_0x7ea7('0x26')][_0x425826];delete _0x308d1c[_0x7ea7('0x11')][_0x425826];});}else{ut['logger']('[Fax][Message][NoUpdate2]');delete this[_0x7ea7('0x26')][_0x425826];delete this[_0x7ea7('0x11')][_0x425826];}};Fax[_0x7ea7('0x21')][_0x7ea7('0x1e')]=function(_0x21dac3){var _0x5acf40=this;if(this[_0x7ea7('0x26')][_0x21dac3[_0x7ea7('0x27')]]){if(this[_0x7ea7('0x11')][_0x21dac3[_0x7ea7('0x27')]]){this[_0x7ea7('0x26')][_0x21dac3['uniqueid']]['id']=this[_0x7ea7('0x11')][_0x21dac3[_0x7ea7('0x27')]]['id'];this[_0x7ea7('0x26')][_0x21dac3[_0x7ea7('0x27')]][_0x7ea7('0x29')]=this['actions'][_0x21dac3[_0x7ea7('0x27')]][_0x7ea7('0x29')];}logger[_0x7ea7('0x2a')](_0x21dac3[_0x7ea7('0x27')],this[_0x7ea7('0x11')][_0x21dac3[_0x7ea7('0x27')]]?_0x7ea7('0x51'):'\x20hangup\x20faxRiceive\x20',JSON[_0x7ea7('0x44')](this[_0x7ea7('0x26')][_0x21dac3[_0x7ea7('0x27')]]));if(this[_0x7ea7('0x11')][_0x21dac3['uniqueid']]){if(this['channels'][_0x21dac3[_0x7ea7('0x27')]][_0x7ea7('0x52')]>0x0&&this[_0x7ea7('0x26')][_0x21dac3[_0x7ea7('0x27')]][_0x7ea7('0x1a')]===_0x7ea7('0x53')){this['updateStatus'](_0x21dac3[_0x7ea7('0x27')],!![]);}else{this[_0x7ea7('0x4f')](_0x21dac3['uniqueid'],![],this['channels'][_0x21dac3[_0x7ea7('0x27')]]['faxstatusstring']?_0x7ea7('0x54')+this[_0x7ea7('0x26')][_0x21dac3[_0x7ea7('0x27')]][_0x7ea7('0x55')]:_0x7ea7('0x56'));}}}};Fax[_0x7ea7('0x21')][_0x7ea7('0x57')]=function(_0x562603){var _0x1c9082=this;return new BPromise(function(_0x5bf4f1,_0x4a1e62){_0x1c9082['execOriginate'](_0x562603,_0x1c9082['faxAccounts'][_0x562603[_0x7ea7('0x58')]])[_0x7ea7('0x3f')](function(_0x16fb01){ut[_0x7ea7('0x4b')](_0x7ea7('0x59'),_0x16fb01);_0x5bf4f1(ut[_0x7ea7('0x3a')](_0x7ea7('0x5a')));})[_0x7ea7('0x41')](function(_0x3bfde4){ut['logger'](_0x7ea7('0x5b'),_0x3bfde4);updateStatus(_0x562603);_0x4a1e62(ut[_0x7ea7('0x3a')](_0x7ea7('0x5c')));});});};Fax[_0x7ea7('0x21')][_0x7ea7('0x5d')]=function(_0x110dd2){var _0x13b960=this;return new BPromise(function(_0x34d718,_0x368055){var _0x4c1c30=_0x13b960['checkTrunk'](_0x13b960['faxAccounts'][_0x110dd2[_0x7ea7('0x58')]][_0x7ea7('0x5e')],_0x110dd2);if(_0x4c1c30[_0x7ea7('0x5f')]){_0x34d718(ut[_0x7ea7('0x3a')](_0x7ea7('0x60')));}else{_0x368055(ut[_0x7ea7('0x3a')](_0x4c1c30[_0x7ea7('0x3a')]));}});};function originate(_0x411e05,_0x144b71,_0x24c318){return new BPromise(function(_0xc66ea8,_0x58ac2e){if(_0x24c318){var _0x270bec=util[_0x7ea7('0x61')](_0x7ea7('0x62'),path[_0x7ea7('0x3c')](_0x411e05[_0x7ea7('0x3')])['name'],_0x411e05[_0x7ea7('0x3')]);gs[_0x7ea7('0x63')](_0x270bec)[_0x7ea7('0x3f')](function(){_0x411e05['path']=util['format']('%s/%s.tif',path[_0x7ea7('0x3c')](_0x411e05['path'])[_0x7ea7('0x64')],path[_0x7ea7('0x3c')](_0x411e05[_0x7ea7('0x3')])[_0x7ea7('0x29')]);_0x144b71['XMF-PATH']=_0x411e05[_0x7ea7('0x3')];ut['logger'](_0x7ea7('0x65'),'');ami[_0x7ea7('0x66')](ut[_0x7ea7('0x67')](_0x411e05,_0x144b71))['then'](function(_0x25e5f2){_0xc66ea8(_0x25e5f2);})['catch'](function(_0x102760){_0x58ac2e(_0x102760);});})[_0x7ea7('0x41')](function(_0xed8970){_0x58ac2e(_0xed8970);});}else{ami['Action'](ut[_0x7ea7('0x67')](_0x411e05,_0x144b71))['then'](function(_0x2696f2){_0xc66ea8(_0x2696f2);})[_0x7ea7('0x41')](function(_0x579589){_0x58ac2e(_0x579589);});}});}Fax[_0x7ea7('0x21')][_0x7ea7('0x68')]=function(_0x2183d0,_0x3eea7b){var _0x1d1f16=this;return new BPromise(function(_0x3bdcd3,_0x1b99e0){var _0x30642c=uuid['v4']();var _0x2d48d3=ut['addVariables'](_0x2183d0,_0x3eea7b);_0x1d1f16[_0x7ea7('0x11')][_0x30642c]=new Action(_0x30642c,_0x3eea7b,_0x2183d0);var _0x16196f=_0x1d1f16[_0x7ea7('0x11')][_0x30642c];if(path[_0x7ea7('0x3c')](_0x2183d0[_0x7ea7('0x3')])[_0x7ea7('0x69')]==='.pdf'){originate(_0x16196f,_0x2d48d3,!![])[_0x7ea7('0x3f')](function(_0x3041fa){_0x3bdcd3(_0x3041fa);})[_0x7ea7('0x41')](function(_0x4dc102){_0x1b99e0(_0x4dc102);});}else{originate(_0x16196f,_0x2d48d3,![])['then'](function(_0x258469){_0x3bdcd3(_0x258469);})[_0x7ea7('0x41')](function(_0x3c5825){_0x1b99e0(_0x3c5825);});}});};Fax[_0x7ea7('0x21')][_0x7ea7('0x6a')]=function(_0x34063b){return!_[_0x7ea7('0x6b')](_0x34063b)&&!_[_0x7ea7('0x6b')](_0x34063b['name'])&&!_[_0x7ea7('0x6b')](_0x34063b[_0x7ea7('0x6c')])&&_0x34063b['active']&&!_[_0x7ea7('0x6b')](this[_0x7ea7('0x10')][util[_0x7ea7('0x61')](_0x7ea7('0x6d'),_0x34063b[_0x7ea7('0x29')])])&&!_[_0x7ea7('0x6b')](this[_0x7ea7('0x10')][util['format'](_0x7ea7('0x6d'),_0x34063b[_0x7ea7('0x29')])][_0x7ea7('0x31')])&&(this[_0x7ea7('0x10')][util[_0x7ea7('0x61')](_0x7ea7('0x6d'),_0x34063b['name'])][_0x7ea7('0x31')]==='reachable'||this[_0x7ea7('0x10')][util['format'](_0x7ea7('0x6d'),_0x34063b['name'])][_0x7ea7('0x31')]===_0x7ea7('0x6e'));};Fax[_0x7ea7('0x21')]['checkTrunk']=function(_0x356516,_0x4bc789){if(!this[_0x7ea7('0x6a')](_0x356516)){ut['logger'](_0x7ea7('0x6f'),_[_0x7ea7('0x6b')](_0x356516)?'':_0x356516['name']+_0x7ea7('0x70'));return{'isValid':![],'message':_0x7ea7('0x71')};}if(_[_0x7ea7('0x6b')](_0x4bc789[_0x7ea7('0x6')])){ut[_0x7ea7('0x4b')](_0x7ea7('0x72'),JSON['stringify'](_0x4bc789));return{'isValid':![],'message':_0x7ea7('0x73')};}if(_[_0x7ea7('0x6b')](_0x4bc789['path'])){ut[_0x7ea7('0x4b')]('[Fax][checkTrunk][Empty\x20path]',JSON[_0x7ea7('0x44')](_0x4bc789));return{'isValid':![],'message':_0x7ea7('0x74')};}return{'isValid':!![],'message':_0x7ea7('0x75')};};module['exports']=Fax;
\ No newline at end of file
index 4b62a8e..355e95d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x399f=['then','catch','[Notify]\x20','../../../config/logger','lodash','error','notify'];(function(_0x439410,_0x425a4f){var _0x21003d=function(_0x1927c8){while(--_0x1927c8){_0x439410['push'](_0x439410['shift']());}};_0x21003d(++_0x425a4f);}(_0x399f,0x1ae));var _0xf399=function(_0x5cd65a,_0x3f299c){_0x5cd65a=_0x5cd65a-0x0;var _0x3acd3e=_0x399f[_0x5cd65a];return _0x3acd3e;};'use strict';var util=require('util');var BPromise=require('bluebird');var logger=require(_0xf399('0x0'))('preview');var _=require(_0xf399('0x1'));var faxAccount=require('../rpc/faxAccount');function loggerCatch(_0x2576a6){return function(_0x5bd8b3){logger[_0xf399('0x2')](_0x2576a6,util['inspect'](_0x5bd8b3,{'showHidden':![],'depth':null}));};}exports[_0xf399('0x3')]=function(_0x2dd53a,_0x39d20a){return BPromise['resolve']()[_0xf399('0x4')](faxAccount[_0xf399('0x3')](_0x2dd53a,_0x39d20a))[_0xf399('0x5')](loggerCatch(_0xf399('0x6')));};
\ No newline at end of file
+var _0x53b4=['inspect','notify','resolve','then','catch','[Notify]\x20','util','preview','../rpc/faxAccount','error'];(function(_0x4ac5f4,_0x34ec96){var _0x1258ca=function(_0x3782ca){while(--_0x3782ca){_0x4ac5f4['push'](_0x4ac5f4['shift']());}};_0x1258ca(++_0x34ec96);}(_0x53b4,0x6a));var _0x453b=function(_0x1ce919,_0x1bbb96){_0x1ce919=_0x1ce919-0x0;var _0x34ec94=_0x53b4[_0x1ce919];return _0x34ec94;};'use strict';var util=require(_0x453b('0x0'));var BPromise=require('bluebird');var logger=require('../../../config/logger')(_0x453b('0x1'));var _=require('lodash');var faxAccount=require(_0x453b('0x2'));function loggerCatch(_0x33c2b3){return function(_0x99583b){logger[_0x453b('0x3')](_0x33c2b3,util[_0x453b('0x4')](_0x99583b,{'showHidden':![],'depth':null}));};}exports[_0x453b('0x5')]=function(_0x1c5484,_0x59adc1){return BPromise[_0x453b('0x6')]()[_0x453b('0x7')](faxAccount[_0x453b('0x5')](_0x1c5484,_0x59adc1))[_0x453b('0x8')](loggerCatch(_0x453b('0x9')));};
\ No newline at end of file
index 47b9030..1550bb8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5845=['bluebird','child_process','exec','Exec\x20gs','info','\x20Error\x20:','inspect','util','fax'];(function(_0x16503d,_0x474907){var _0x4f4a14=function(_0x1edc60){while(--_0x1edc60){_0x16503d['push'](_0x16503d['shift']());}};_0x4f4a14(++_0x474907);}(_0x5845,0x1c9));var _0x5584=function(_0xb8bb0b,_0x260f84){_0xb8bb0b=_0xb8bb0b-0x0;var _0x10d532=_0x5845[_0xb8bb0b];return _0x10d532;};'use strict';var util=require(_0x5584('0x0'));var logger=require('../../../../config/logger')(_0x5584('0x1'));var BPromise=require(_0x5584('0x2'));var exec=require(_0x5584('0x3'))[_0x5584('0x4')];exports['execute']=function(_0x551704){return new BPromise(function(_0x1579ab,_0x15e8e8){exec(_0x551704,function(_0x506318,_0x324aab,_0x636cf8){logger['info'](_0x5584('0x5'),_0x324aab);if(_0x506318){logger[_0x5584('0x6')]('Exec\x20gs',_0x5584('0x7'),util[_0x5584('0x8')](_0x506318,{'showHidden':![],'depth':null}),_0x324aab,_0x636cf8);_0x15e8e8(_0x506318);}_0x1579ab(_0x324aab);});});};
\ No newline at end of file
+var _0xcd49=['fax','bluebird','execute','info','Exec\x20gs','\x20Error\x20:','inspect','util','../../../../config/logger'];(function(_0xe557a2,_0x32a80a){var _0x4710d5=function(_0x76eb4){while(--_0x76eb4){_0xe557a2['push'](_0xe557a2['shift']());}};_0x4710d5(++_0x32a80a);}(_0xcd49,0x115));var _0x9cd4=function(_0x593d89,_0x45145f){_0x593d89=_0x593d89-0x0;var _0x4aa403=_0xcd49[_0x593d89];return _0x4aa403;};'use strict';var util=require(_0x9cd4('0x0'));var logger=require(_0x9cd4('0x1'))(_0x9cd4('0x2'));var BPromise=require(_0x9cd4('0x3'));var exec=require('child_process')['exec'];exports[_0x9cd4('0x4')]=function(_0x537eea){return new BPromise(function(_0x23b67c,_0x2d9459){exec(_0x537eea,function(_0x2d3f50,_0x2e0c2e,_0xc8b1c8){logger['info']('Exec\x20gs',_0x2e0c2e);if(_0x2d3f50){logger[_0x9cd4('0x5')](_0x9cd4('0x6'),_0x9cd4('0x7'),util[_0x9cd4('0x8')](_0x2d3f50,{'showHidden':![],'depth':null}),_0x2e0c2e,_0xc8b1c8);_0x2d9459(_0x2d3f50);}_0x23b67c(_0x2e0c2e);});});};
\ No newline at end of file
index 900537d..22d05e9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8eb1=['modem','gateway','faxdetect','t38timeout','localstationid','path','variablesAction','uniqueid','originate','channel','xcally-motion-fax','from-sip','\x22%s\x22\x20<%s>','util','lodash','../../../../config/logger','fax','info','inspect','addVariables','headerinfo','minrate','maxrate','format','\x22%s\x22'];(function(_0x2ad81d,_0x36aeec){var _0x1454ac=function(_0x5a7341){while(--_0x5a7341){_0x2ad81d['push'](_0x2ad81d['shift']());}};_0x1454ac(++_0x36aeec);}(_0x8eb1,0xd5));var _0x18eb=function(_0x535a30,_0x25351f){_0x535a30=_0x535a30-0x0;var _0x2fccd7=_0x8eb1[_0x535a30];return _0x2fccd7;};'use strict';var util=require(_0x18eb('0x0'));var _=require(_0x18eb('0x1'));var moment=require('moment');var logger=require(_0x18eb('0x2'))(_0x18eb('0x3'));exports['message']=function(_0x35463f){return{'message':_0x35463f};};exports['logger']=function(_0x3f9362,_0xf2d574){logger[_0x18eb('0x4')](_0x3f9362,util[_0x18eb('0x5')](_0xf2d574,{'showHidden':![],'depth':null}));};exports[_0x18eb('0x6')]=function(_0x56388f,_0x4d8f87){var _0x172778={'XMF-ECM':_0x4d8f87['ecm'],'XMF-HEADERINFO':_0x4d8f87[_0x18eb('0x7')],'XMF-MINRATE':_0x4d8f87[_0x18eb('0x8')],'XMF-MAXRATE':_0x4d8f87[_0x18eb('0x9')],'XMF-MODEM':util[_0x18eb('0xa')](_0x18eb('0xb'),_0x4d8f87[_0x18eb('0xc')]),'XMF-GATEWAY':_0x4d8f87[_0x18eb('0xd')],'XMF-FAXDETECT':_0x4d8f87[_0x18eb('0xe')],'XMF-T38TIMEOUT':_0x4d8f87[_0x18eb('0xf')],'XMF-LOCALSTATIONID':_0x4d8f87[_0x18eb('0x10')],'XMF-PATH':_0x56388f[_0x18eb('0x11')]};return _0x172778;};exports[_0x18eb('0x12')]=function(_0x5e4081,_0x430119){return{'actionid':_0x5e4081[_0x18eb('0x13')],'action':_0x18eb('0x14'),'channel':_0x5e4081[_0x18eb('0x15')],'Exten':_0x18eb('0x16'),'Context':_0x18eb('0x17'),'Priority':'1','callerid':util['format'](_0x18eb('0x18'),_0x5e4081[_0x18eb('0x7')]?_0x5e4081[_0x18eb('0x7')]:'',_0x5e4081['localstationid']),'variable':_0x430119,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x5e4081[_0x18eb('0x13')]};};
\ No newline at end of file
+var _0xb7d4=['faxdetect','t38timeout','localstationid','path','uniqueid','originate','channel','xcally-motion-fax','from-sip','headerinfo','util','moment','../../../../config/logger','fax','message','logger','info','inspect','addVariables','ecm','minrate','format','modem','gateway'];(function(_0x2fb0e9,_0x4f5af2){var _0x3689bf=function(_0x1febe3){while(--_0x1febe3){_0x2fb0e9['push'](_0x2fb0e9['shift']());}};_0x3689bf(++_0x4f5af2);}(_0xb7d4,0x1ea));var _0x4b7d=function(_0x2112d4,_0x3c863c){_0x2112d4=_0x2112d4-0x0;var _0x434972=_0xb7d4[_0x2112d4];return _0x434972;};'use strict';var util=require(_0x4b7d('0x0'));var _=require('lodash');var moment=require(_0x4b7d('0x1'));var logger=require(_0x4b7d('0x2'))(_0x4b7d('0x3'));exports[_0x4b7d('0x4')]=function(_0x26f1a6){return{'message':_0x26f1a6};};exports[_0x4b7d('0x5')]=function(_0x56d6e2,_0xdb2f29){logger[_0x4b7d('0x6')](_0x56d6e2,util[_0x4b7d('0x7')](_0xdb2f29,{'showHidden':![],'depth':null}));};exports[_0x4b7d('0x8')]=function(_0x402421,_0x1f258e){var _0x5378c1={'XMF-ECM':_0x1f258e[_0x4b7d('0x9')],'XMF-HEADERINFO':_0x1f258e['headerinfo'],'XMF-MINRATE':_0x1f258e[_0x4b7d('0xa')],'XMF-MAXRATE':_0x1f258e['maxrate'],'XMF-MODEM':util[_0x4b7d('0xb')]('\x22%s\x22',_0x1f258e[_0x4b7d('0xc')]),'XMF-GATEWAY':_0x1f258e[_0x4b7d('0xd')],'XMF-FAXDETECT':_0x1f258e[_0x4b7d('0xe')],'XMF-T38TIMEOUT':_0x1f258e[_0x4b7d('0xf')],'XMF-LOCALSTATIONID':_0x1f258e[_0x4b7d('0x10')],'XMF-PATH':_0x402421[_0x4b7d('0x11')]};return _0x5378c1;};exports['variablesAction']=function(_0x286333,_0x2f8139){return{'actionid':_0x286333[_0x4b7d('0x12')],'action':_0x4b7d('0x13'),'channel':_0x286333[_0x4b7d('0x14')],'Exten':_0x4b7d('0x15'),'Context':_0x4b7d('0x16'),'Priority':'1','callerid':util[_0x4b7d('0xb')]('\x22%s\x22\x20<%s>',_0x286333[_0x4b7d('0x17')]?_0x286333[_0x4b7d('0x17')]:'',_0x286333[_0x4b7d('0x10')]),'variable':_0x2f8139,'timeout':0x1e*0x3e8,'async':!![],'channelid':_0x286333['uniqueid']};};
\ No newline at end of file
index 64db372..28adab5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d97=['getDynamics365Accounts','initDynamics365Accounts','initCampaigns','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','resolve','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','initVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports','catch','error','[index.js][initParams]','listen','sync','[index.js][main]','inspect','bluebird','./server','./report','./acw','./dialer','./preview','./rpc/user','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/template','./rpc/voiceExtension','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/freshsales','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','../../config/logger','ami','get','hour','then','getAgents','initAgents','getTelephones','initTelephones','getTrunks','initTrunks','getVoiceQueues','initVoiceQueues','getTriggers','initTriggers','getTemplates','initTemplates','getZendeskAccounts','initZendeskAccounts','getSalesforceAccounts','getSugarcrmAccounts','initSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','getZohoAccounts','getVtigerAccounts','initVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x1d97,0xf7));var _0x71d9=function(_0x56af4c,_0x48b567){_0x56af4c=_0x56af4c-0x0;var _0xe9b8e=_0x1d97[_0x56af4c];return _0xe9b8e;};'use strict';var BPromise=require(_0x71d9('0x0'));var util=require('util');var moment=require('moment');var server=require(_0x71d9('0x1'));var Realtime=require('./realtime');var Report=require(_0x71d9('0x2'));var Acw=require(_0x71d9('0x3'));var Trigger=require('./trigger');var Dialer=require(_0x71d9('0x4'));var Preview=require(_0x71d9('0x5'));var Fax=require('./fax');var user=require(_0x71d9('0x6'));var voiceQueue=require(_0x71d9('0x7'));var voiceQueueReport=require(_0x71d9('0x8'));var voiceCallReport=require(_0x71d9('0x9'));var trunk=require('./rpc/trunk');var trigger=require('./rpc/trigger');var template=require(_0x71d9('0xa'));var cmHopperHistory=require('./rpc/cmHopperHistory');var campaign=require('./rpc/campaign');var voiceExtension=require(_0x71d9('0xb'));var faxAccount=require(_0x71d9('0xc'));var zendesk=require(_0x71d9('0xd'));var salesforce=require(_0x71d9('0xe'));var sugarcrm=require(_0x71d9('0xf'));var freshdesk=require('./rpc/integrations/freshdesk');var desk=require(_0x71d9('0x10'));var zoho=require(_0x71d9('0x11'));var vtiger=require(_0x71d9('0x12'));var freshsales=require(_0x71d9('0x13'));var servicenow=require(_0x71d9('0x14'));var dynamics365=require(_0x71d9('0x15'));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(_0x71d9('0x16'))(_0x71d9('0x17'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()[_0x71d9('0x18')](_0x71d9('0x19'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0x71d9('0x18')](_0x71d9('0x19'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise['resolve']()[_0x71d9('0x1a')](user[_0x71d9('0x1b')]())[_0x71d9('0x1a')](realtime[_0x71d9('0x1c')]())[_0x71d9('0x1a')](user[_0x71d9('0x1d')]())[_0x71d9('0x1a')](realtime[_0x71d9('0x1e')]())[_0x71d9('0x1a')](trunk[_0x71d9('0x1f')]())[_0x71d9('0x1a')](realtime[_0x71d9('0x20')]())[_0x71d9('0x1a')](voiceQueue[_0x71d9('0x21')]())['then'](realtime[_0x71d9('0x22')]())[_0x71d9('0x1a')](trigger[_0x71d9('0x23')]())[_0x71d9('0x1a')](realtime[_0x71d9('0x24')]())[_0x71d9('0x1a')](template[_0x71d9('0x25')]())[_0x71d9('0x1a')](realtime[_0x71d9('0x26')]())[_0x71d9('0x1a')](zendesk[_0x71d9('0x27')]())[_0x71d9('0x1a')](realtime[_0x71d9('0x28')]())[_0x71d9('0x1a')](salesforce[_0x71d9('0x29')]())[_0x71d9('0x1a')](realtime['initSalesforceAccounts']())[_0x71d9('0x1a')](sugarcrm[_0x71d9('0x2a')]())[_0x71d9('0x1a')](realtime[_0x71d9('0x2b')]())['then'](freshdesk[_0x71d9('0x2c')]())[_0x71d9('0x1a')](realtime[_0x71d9('0x2d')]())[_0x71d9('0x1a')](desk[_0x71d9('0x2e')]())[_0x71d9('0x1a')](realtime['initDeskAccounts']())['then'](zoho[_0x71d9('0x2f')]())[_0x71d9('0x1a')](realtime['initZohoAccounts']())[_0x71d9('0x1a')](vtiger[_0x71d9('0x30')]())[_0x71d9('0x1a')](realtime[_0x71d9('0x31')]())[_0x71d9('0x1a')](freshsales[_0x71d9('0x32')]())[_0x71d9('0x1a')](realtime[_0x71d9('0x33')]())[_0x71d9('0x1a')](servicenow[_0x71d9('0x34')]())[_0x71d9('0x1a')](realtime['initServicenowAccounts']())[_0x71d9('0x1a')](dynamics365[_0x71d9('0x35')]())['then'](realtime[_0x71d9('0x36')]())[_0x71d9('0x1a')](campaign['getCampaigns']())[_0x71d9('0x1a')](realtime[_0x71d9('0x37')]())[_0x71d9('0x1a')](voiceExtension[_0x71d9('0x38')]())[_0x71d9('0x1a')](realtime[_0x71d9('0x39')]())[_0x71d9('0x1a')](faxAccount[_0x71d9('0x3a')]())['then'](realtime['initFaxAccounts']())[_0x71d9('0x1a')](function(){return realtime;});}function initParams(){return BPromise[_0x71d9('0x3b')]()[_0x71d9('0x1a')](voiceQueueReport[_0x71d9('0x3c')]())[_0x71d9('0x1a')](realtime[_0x71d9('0x3d')]())[_0x71d9('0x1a')](cmHopperHistory[_0x71d9('0x3e')]())['then'](realtime[_0x71d9('0x3f')]())[_0x71d9('0x1a')](cmHopperHistory[_0x71d9('0x40')]())['then'](realtime[_0x71d9('0x41')]())[_0x71d9('0x1a')](voiceCallReport[_0x71d9('0x42')]())['then'](realtime[_0x71d9('0x43')]())[_0x71d9('0x44')](function(_0xd79055){logger[_0x71d9('0x45')](_0x71d9('0x46'),util['inspect'](_0xd79055,{'showHidden':![],'depth':null}));});}function main(){return server[_0x71d9('0x47')](realtime,preview,fax)[_0x71d9('0x1a')](function(_0xb00c5e){return initRealtime();})[_0x71d9('0x1a')](function(){return initParams();})[_0x71d9('0x1a')](function(){report[_0x71d9('0x48')]();setInterval(initRealtime,0x1388);})[_0x71d9('0x44')](function(_0x166941){logger[_0x71d9('0x45')](_0x71d9('0x49'),util[_0x71d9('0x4a')](_0x166941,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
+var _0x231f=['catch','error','inspect','listen','sync','[index.js][main]','bluebird','util','moment','./server','./realtime','./report','./acw','./dialer','./preview','./rpc/voiceQueue','./rpc/voiceQueueReport','./rpc/voiceCallReport','./rpc/trunk','./rpc/trigger','./rpc/template','./rpc/campaign','./rpc/faxAccount','./rpc/integrations/zendesk','./rpc/integrations/salesforce','./rpc/integrations/sugarcrm','./rpc/integrations/freshdesk','./rpc/integrations/desk','./rpc/integrations/zoho','./rpc/integrations/vtiger','./rpc/integrations/servicenow','./rpc/integrations/dynamics365','ami','hour','get','then','getAgents','initAgents','getTelephones','initTelephones','getTrunks','initTrunks','initVoiceQueues','getTriggers','getTemplates','initTemplates','initZendeskAccounts','getSalesforceAccounts','initSalesforceAccounts','getSugarcrmAccounts','getFreshdeskAccounts','initFreshdeskAccounts','getDeskAccounts','initDeskAccounts','getZohoAccounts','initZohoAccounts','getVtigerAccounts','getFreshsalesAccounts','initFreshsalesAccounts','getServicenowAccounts','getDynamics365Accounts','initDynamics365Accounts','getVoiceExtensions','initVoiceExtensions','getFaxAccounts','initFaxAccounts','resolve','getVoiceQueueReports','initVoiceQueueReports','getVoiceQueueHopperHistory','getCampaignHopperHistory','initCampaignHopperHistory','getVoiceCallReports','initVoiceCallReports'];(function(_0x20c182,_0x8fdcd4){var _0x347a4d=function(_0x576a80){while(--_0x576a80){_0x20c182['push'](_0x20c182['shift']());}};_0x347a4d(++_0x8fdcd4);}(_0x231f,0x12e));var _0xf231=function(_0x4c09d8,_0x396187){_0x4c09d8=_0x4c09d8-0x0;var _0x408de9=_0x231f[_0x4c09d8];return _0x408de9;};'use strict';var BPromise=require(_0xf231('0x0'));var util=require(_0xf231('0x1'));var moment=require(_0xf231('0x2'));var server=require(_0xf231('0x3'));var Realtime=require(_0xf231('0x4'));var Report=require(_0xf231('0x5'));var Acw=require(_0xf231('0x6'));var Trigger=require('./trigger');var Dialer=require(_0xf231('0x7'));var Preview=require(_0xf231('0x8'));var Fax=require('./fax');var user=require('./rpc/user');var voiceQueue=require(_0xf231('0x9'));var voiceQueueReport=require(_0xf231('0xa'));var voiceCallReport=require(_0xf231('0xb'));var trunk=require(_0xf231('0xc'));var trigger=require(_0xf231('0xd'));var template=require(_0xf231('0xe'));var cmHopperHistory=require('./rpc/cmHopperHistory');var campaign=require(_0xf231('0xf'));var voiceExtension=require('./rpc/voiceExtension');var faxAccount=require(_0xf231('0x10'));var zendesk=require(_0xf231('0x11'));var salesforce=require(_0xf231('0x12'));var sugarcrm=require(_0xf231('0x13'));var freshdesk=require(_0xf231('0x14'));var desk=require(_0xf231('0x15'));var zoho=require(_0xf231('0x16'));var vtiger=require(_0xf231('0x17'));var freshsales=require('./rpc/integrations/freshsales');var servicenow=require(_0xf231('0x18'));var dynamics365=require(_0xf231('0x19'));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('../../config/logger')(_0xf231('0x1a'));var isTrue=!![];var initP=!![];function ifMidnight(){if(moment()['get'](_0xf231('0x1b'))===0x0&&initP){initP=![];isTrue=!![];initParams();}if(moment()[_0xf231('0x1c')](_0xf231('0x1b'))===0x1&&isTrue){isTrue=![];initP=!![];}}function initRealtime(){ifMidnight();return BPromise['resolve']()[_0xf231('0x1d')](user[_0xf231('0x1e')]())['then'](realtime[_0xf231('0x1f')]())[_0xf231('0x1d')](user[_0xf231('0x20')]())[_0xf231('0x1d')](realtime[_0xf231('0x21')]())[_0xf231('0x1d')](trunk[_0xf231('0x22')]())['then'](realtime[_0xf231('0x23')]())[_0xf231('0x1d')](voiceQueue['getVoiceQueues']())[_0xf231('0x1d')](realtime[_0xf231('0x24')]())[_0xf231('0x1d')](trigger[_0xf231('0x25')]())[_0xf231('0x1d')](realtime['initTriggers']())[_0xf231('0x1d')](template[_0xf231('0x26')]())[_0xf231('0x1d')](realtime[_0xf231('0x27')]())[_0xf231('0x1d')](zendesk['getZendeskAccounts']())['then'](realtime[_0xf231('0x28')]())[_0xf231('0x1d')](salesforce[_0xf231('0x29')]())[_0xf231('0x1d')](realtime[_0xf231('0x2a')]())[_0xf231('0x1d')](sugarcrm[_0xf231('0x2b')]())['then'](realtime['initSugarcrmAccounts']())['then'](freshdesk[_0xf231('0x2c')]())[_0xf231('0x1d')](realtime[_0xf231('0x2d')]())[_0xf231('0x1d')](desk[_0xf231('0x2e')]())['then'](realtime[_0xf231('0x2f')]())['then'](zoho[_0xf231('0x30')]())[_0xf231('0x1d')](realtime[_0xf231('0x31')]())[_0xf231('0x1d')](vtiger[_0xf231('0x32')]())['then'](realtime['initVtigerAccounts']())[_0xf231('0x1d')](freshsales[_0xf231('0x33')]())[_0xf231('0x1d')](realtime[_0xf231('0x34')]())[_0xf231('0x1d')](servicenow[_0xf231('0x35')]())['then'](realtime['initServicenowAccounts']())[_0xf231('0x1d')](dynamics365[_0xf231('0x36')]())['then'](realtime[_0xf231('0x37')]())[_0xf231('0x1d')](campaign['getCampaigns']())[_0xf231('0x1d')](realtime['initCampaigns']())['then'](voiceExtension[_0xf231('0x38')]())[_0xf231('0x1d')](realtime[_0xf231('0x39')]())[_0xf231('0x1d')](faxAccount[_0xf231('0x3a')]())[_0xf231('0x1d')](realtime[_0xf231('0x3b')]())[_0xf231('0x1d')](function(){return realtime;});}function initParams(){return BPromise[_0xf231('0x3c')]()[_0xf231('0x1d')](voiceQueueReport[_0xf231('0x3d')]())['then'](realtime[_0xf231('0x3e')]())[_0xf231('0x1d')](cmHopperHistory[_0xf231('0x3f')]())[_0xf231('0x1d')](realtime['initVoiceQueueHopperHistory']())['then'](cmHopperHistory[_0xf231('0x40')]())[_0xf231('0x1d')](realtime[_0xf231('0x41')]())['then'](voiceCallReport[_0xf231('0x42')]())[_0xf231('0x1d')](realtime[_0xf231('0x43')]())[_0xf231('0x44')](function(_0x588690){logger[_0xf231('0x45')]('[index.js][initParams]',util[_0xf231('0x46')](_0x588690,{'showHidden':![],'depth':null}));});}function main(){return server[_0xf231('0x47')](realtime,preview,fax)['then'](function(_0x559aca){return initRealtime();})[_0xf231('0x1d')](function(){return initParams();})['then'](function(){report[_0xf231('0x48')]();setInterval(initRealtime,0x1388);})[_0xf231('0x44')](function(_0x1a887c){logger['error'](_0xf231('0x49'),util[_0xf231('0x46')](_0x1a887c,{'showHidden':![],'depth':null}));});}main();
\ No newline at end of file
index 8df654b..1a607a2 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(_0x4bba24,_0x5d3de2){var _0x358f3f=function(_0x4a0aba){while(--_0x4a0aba){_0x4bba24['push'](_0x4bba24['shift']());}};_0x358f3f(++_0x5d3de2);}(_0xe706,0xa3));var _0x6e70=function(_0x50c96f,_0x2ee009){_0x50c96f=_0x50c96f-0x0;var _0x38fcf2=_0xe706[_0x50c96f];return _0x38fcf2;};'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 _0x9c44=['phone','mobile','online','voiceStatus','voiceStatusTime','voiceStatusCallerIdNumber','onhold','local','prototype','updateStatusRealtime','toLowerCase','not_inuse','idle','inuse','talking','statePause','stateTime','address','voiceStatusQueue','stringify','format','user:%s','emit','user:presence','exports','moment','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','name','email','accountcode','fullname','state','status','unknown'];(function(_0x5d19f8,_0x56a7bb){var _0x42e896=function(_0x15d7c6){while(--_0x15d7c6){_0x5d19f8['push'](_0x5d19f8['shift']());}};_0x42e896(++_0x56a7bb);}(_0x9c44,0x178));var _0x49c4=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0x9c44[_0x2d7f0e];return _0x110b07;};'use strict';var _=require('lodash');var util=require('util');var moment=require(_0x49c4('0x0'));var md5=require(_0x49c4('0x1'));var Redis=require(_0x49c4('0x2'));var config=require(_0x49c4('0x3'));config[_0x49c4('0x4')]=_[_0x49c4('0x5')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x49c4('0x6'))(new Redis(config['redis']));function Agent(_0xc1278f){this['id']=_0xc1278f['id']||0x0;this[_0x49c4('0x7')]=_0xc1278f[_0x49c4('0x7')]||'';this[_0x49c4('0x8')]=_0xc1278f[_0x49c4('0x8')]||'';this['accountcode']=_0xc1278f[_0x49c4('0x9')]||'';this[_0x49c4('0xa')]=_0xc1278f[_0x49c4('0xa')]||'';this[_0x49c4('0xb')]='unknown';this['stateTime']=0x0;this[_0x49c4('0xc')]=_0x49c4('0xd');this['address']='';this[_0x49c4('0xe')]='';this[_0x49c4('0xf')]='';this['interface']='';this['online']=_0xc1278f[_0x49c4('0x10')]||![];this[_0x49c4('0x11')]='unknown';this[_0x49c4('0x12')]=0x0;this[_0x49c4('0x13')]='';this['voiceStatusQueue']='';this[_0x49c4('0x14')]=![];this[_0x49c4('0x15')]=![];this[_0x49c4('0x1')]='';}Agent[_0x49c4('0x16')][_0x49c4('0x17')]=function(_0x18211c){var _0x75ea8;if(_0x18211c&&_0x18211c[_0x49c4('0xb')]){_0x75ea8=_0x18211c['state'][_0x49c4('0x18')]();switch(_0x75ea8){case _0x49c4('0x19'):_0x75ea8=_0x49c4('0x1a');break;case _0x49c4('0x1b'):_0x75ea8=_0x49c4('0x1c');break;}}if(_0x75ea8&&this['voiceStatus']!==_0x75ea8||_0x18211c[_0x49c4('0x1d')]){this[_0x49c4('0x12')]=_['toNumber'](moment()['format']('x'));}if(_0x75ea8){this[_0x49c4('0x11')]=_0x75ea8;}var _0x2f82d5={'id':this['id'],'name':this[_0x49c4('0x7')],'email':this['email'],'accountcode':this[_0x49c4('0x9')],'fullname':this['fullname'],'state':this[_0x49c4('0xb')],'stateTime':this[_0x49c4('0x1e')],'status':this[_0x49c4('0xc')],'address':this[_0x49c4('0x1f')],'online':this[_0x49c4('0x10')],'voiceStatus':this[_0x49c4('0x11')],'voiceStatusTime':this[_0x49c4('0x12')],'voiceStatusCallerIdNumber':this[_0x49c4('0x13')],'voiceStatusQueue':this[_0x49c4('0x20')],'interface':this['interface'],'onhold':this['onhold']};var _0x57f502=md5(JSON[_0x49c4('0x21')](_0x2f82d5));if(this['md5']!==_0x57f502){this['md5']=_0x57f502;io['to'](util[_0x49c4('0x22')](_0x49c4('0x23'),_0x2f82d5[_0x49c4('0x7')]))[_0x49c4('0x24')]('user:save',_0x2f82d5);io['emit'](_0x49c4('0x25'),_0x2f82d5);}};module[_0x49c4('0x26')]=Agent;
\ No newline at end of file
index dcd86bf..d93f7cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb458=['dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialOrderByScheduledAt','DESC','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','TrunkBackup','Trunk','Interval','SquareProject','dialQueueProject','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','name','type','originated','ivrAnswerCallsDay','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialTimezone','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency'];(function(_0x526046,_0x154040){var _0x5b92a2=function(_0x1e92af){while(--_0x1e92af){_0x526046['push'](_0x526046['shift']());}};_0x5b92a2(++_0x154040);}(_0xb458,0x1a6));var _0x8b45=function(_0x113011,_0x415042){_0x113011=_0x113011-0x0;var _0x2be14c=_0xb458[_0x113011];return _0x2be14c;};'use strict';function Campaign(_0x1a741f){this['id']=_0x1a741f['id']||0x0;this[_0x8b45('0x0')]=_0x1a741f['name']||'';this[_0x8b45('0x1')]=_0x1a741f[_0x8b45('0x1')]||'campaign';this[_0x8b45('0x2')]=0x0;this['temp']=0x0;this[_0x8b45('0x3')]=0x0;this[_0x8b45('0x4')]=0x0;this[_0x8b45('0x5')]='';this[_0x8b45('0x6')]=!![];this['active']=_0x1a741f[_0x8b45('0x7')];this[_0x8b45('0x8')]=_0x1a741f[_0x8b45('0x8')];this['dialTimezone']=_0x1a741f[_0x8b45('0x9')]||null;this[_0x8b45('0xa')]=_0x1a741f[_0x8b45('0xa')]?_0x1a741f[_0x8b45('0xa')]:null;this[_0x8b45('0xb')]=_0x1a741f['dialOriginateCallerIdName'];this['dialOriginateCallerIdNumber']=_0x1a741f[_0x8b45('0xc')];this[_0x8b45('0xd')]=_0x1a741f[_0x8b45('0xd')]||0x1e;this[_0x8b45('0xe')]=_0x1a741f[_0x8b45('0xe')];this[_0x8b45('0xf')]=_0x1a741f[_0x8b45('0xf')];this[_0x8b45('0x10')]=_0x1a741f[_0x8b45('0x10')];this[_0x8b45('0x11')]=_0x1a741f[_0x8b45('0x11')];this[_0x8b45('0x12')]=_0x1a741f[_0x8b45('0x12')];this[_0x8b45('0x13')]=_0x1a741f[_0x8b45('0x13')];this[_0x8b45('0x14')]=_0x1a741f[_0x8b45('0x14')];this[_0x8b45('0x15')]=_0x1a741f['dialNoSuchNumberMaxRetry']||0x3;this[_0x8b45('0x16')]=_0x1a741f[_0x8b45('0x16')]||0x96;this[_0x8b45('0x17')]=_0x1a741f['dialDropMaxRetry']||0x3;this[_0x8b45('0x18')]=_0x1a741f[_0x8b45('0x18')]||0x96;this[_0x8b45('0x19')]=_0x1a741f[_0x8b45('0x19')]||0x3;this['dialAbandonedRetryFrequency']=_0x1a741f['dialAbandonedRetryFrequency']||0x96;this[_0x8b45('0x1a')]=_0x1a741f['dialMachineMaxRetry']||0x3;this[_0x8b45('0x1b')]=_0x1a741f[_0x8b45('0x1b')]||0x96;this['dialAgentRejectMaxRetry']=_0x1a741f[_0x8b45('0x1c')]||0x3;this['dialAgentRejectRetryFrequency']=_0x1a741f[_0x8b45('0x1d')]||0x96;this['dialOrderByScheduledAt']=_0x1a741f[_0x8b45('0x1e')]||_0x8b45('0x1f');this[_0x8b45('0x20')]=_0x1a741f['dialPrefix']||undefined;this[_0x8b45('0x21')]=_0x1a741f[_0x8b45('0x21')]||undefined;this[_0x8b45('0x22')]=_0x1a741f[_0x8b45('0x22')]||undefined;this['TrunkBackup']=_0x1a741f[_0x8b45('0x23')]?_0x1a741f[_0x8b45('0x23')]:undefined;this[_0x8b45('0x24')]=_0x1a741f[_0x8b45('0x24')]?_0x1a741f[_0x8b45('0x24')]:undefined;this[_0x8b45('0x25')]=_0x1a741f[_0x8b45('0x25')]?_0x1a741f[_0x8b45('0x25')]:undefined;this[_0x8b45('0x26')]=_0x1a741f['SquareProject']?_0x1a741f[_0x8b45('0x26')]:undefined;this[_0x8b45('0x27')]=_0x1a741f[_0x8b45('0x26')]?_0x1a741f[_0x8b45('0x26')]['name']:undefined;this[_0x8b45('0x28')]=_0x1a741f['dialAMDActive']||![];this['dialAMDInitialSilence']=_0x1a741f[_0x8b45('0x29')];this[_0x8b45('0x2a')]=_0x1a741f[_0x8b45('0x2a')];this[_0x8b45('0x2b')]=_0x1a741f[_0x8b45('0x2b')];this[_0x8b45('0x2c')]=_0x1a741f[_0x8b45('0x2c')];this[_0x8b45('0x2d')]=_0x1a741f[_0x8b45('0x2d')];this[_0x8b45('0x2e')]=_0x1a741f[_0x8b45('0x2e')];this[_0x8b45('0x2f')]=_0x1a741f[_0x8b45('0x2f')];this[_0x8b45('0x30')]=_0x1a741f['dialAMDSilenceThreshold'];this[_0x8b45('0x31')]=_0x1a741f[_0x8b45('0x31')];}module['exports']=Campaign;
\ No newline at end of file
+var _0x7ae6=['dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','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','ivrAnswerCallsDay','ivrTotalCallsDays','message','sendMessageOneNotActive','active','limitCalls','dialGlobalInterval','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry'];(function(_0x4e6938,_0xe1cef8){var _0x56c09b=function(_0xcd8401){while(--_0xcd8401){_0x4e6938['push'](_0x4e6938['shift']());}};_0x56c09b(++_0xe1cef8);}(_0x7ae6,0xe4));var _0x67ae=function(_0x361229,_0x486e2c){_0x361229=_0x361229-0x0;var _0x533963=_0x7ae6[_0x361229];return _0x533963;};'use strict';function Campaign(_0x521e70){this['id']=_0x521e70['id']||0x0;this[_0x67ae('0x0')]=_0x521e70[_0x67ae('0x0')]||'';this[_0x67ae('0x1')]=_0x521e70['type']||'campaign';this[_0x67ae('0x2')]=0x0;this['temp']=0x0;this[_0x67ae('0x3')]=0x0;this[_0x67ae('0x4')]=0x0;this[_0x67ae('0x5')]='';this[_0x67ae('0x6')]=!![];this[_0x67ae('0x7')]=_0x521e70[_0x67ae('0x7')];this[_0x67ae('0x8')]=_0x521e70['limitCalls'];this['dialTimezone']=_0x521e70['dialTimezone']||null;this['dialGlobalInterval']=_0x521e70[_0x67ae('0x9')]?_0x521e70[_0x67ae('0x9')]:null;this[_0x67ae('0xa')]=_0x521e70[_0x67ae('0xa')];this[_0x67ae('0xb')]=_0x521e70[_0x67ae('0xb')];this['dialOriginateTimeout']=_0x521e70['dialOriginateTimeout']||0x1e;this['dialCongestionMaxRetry']=_0x521e70[_0x67ae('0xc')];this[_0x67ae('0xd')]=_0x521e70[_0x67ae('0xd')];this[_0x67ae('0xe')]=_0x521e70[_0x67ae('0xe')];this['dialBusyRetryFrequency']=_0x521e70[_0x67ae('0xf')];this['dialNoAnswerMaxRetry']=_0x521e70[_0x67ae('0x10')];this['dialNoAnswerRetryFrequency']=_0x521e70[_0x67ae('0x11')];this[_0x67ae('0x12')]=_0x521e70[_0x67ae('0x12')];this['dialNoSuchNumberMaxRetry']=_0x521e70[_0x67ae('0x13')]||0x3;this[_0x67ae('0x14')]=_0x521e70[_0x67ae('0x14')]||0x96;this[_0x67ae('0x15')]=_0x521e70[_0x67ae('0x15')]||0x3;this[_0x67ae('0x16')]=_0x521e70['dialDropRetryFrequency']||0x96;this['dialAbandonedMaxRetry']=_0x521e70[_0x67ae('0x17')]||0x3;this[_0x67ae('0x18')]=_0x521e70[_0x67ae('0x18')]||0x96;this[_0x67ae('0x19')]=_0x521e70[_0x67ae('0x19')]||0x3;this[_0x67ae('0x1a')]=_0x521e70[_0x67ae('0x1a')]||0x96;this['dialAgentRejectMaxRetry']=_0x521e70[_0x67ae('0x1b')]||0x3;this[_0x67ae('0x1c')]=_0x521e70['dialAgentRejectRetryFrequency']||0x96;this[_0x67ae('0x1d')]=_0x521e70[_0x67ae('0x1d')]||_0x67ae('0x1e');this[_0x67ae('0x1f')]=_0x521e70[_0x67ae('0x1f')]||undefined;this[_0x67ae('0x20')]=_0x521e70[_0x67ae('0x20')]||undefined;this[_0x67ae('0x21')]=_0x521e70[_0x67ae('0x21')]||undefined;this[_0x67ae('0x22')]=_0x521e70[_0x67ae('0x22')]?_0x521e70[_0x67ae('0x22')]:undefined;this[_0x67ae('0x23')]=_0x521e70[_0x67ae('0x23')]?_0x521e70['Trunk']:undefined;this[_0x67ae('0x24')]=_0x521e70[_0x67ae('0x24')]?_0x521e70['Interval']:undefined;this[_0x67ae('0x25')]=_0x521e70[_0x67ae('0x25')]?_0x521e70['SquareProject']:undefined;this[_0x67ae('0x26')]=_0x521e70['SquareProject']?_0x521e70[_0x67ae('0x25')][_0x67ae('0x0')]:undefined;this[_0x67ae('0x27')]=_0x521e70[_0x67ae('0x27')]||![];this[_0x67ae('0x28')]=_0x521e70[_0x67ae('0x28')];this[_0x67ae('0x29')]=_0x521e70['dialAMDGreeting'];this[_0x67ae('0x2a')]=_0x521e70[_0x67ae('0x2a')];this[_0x67ae('0x2b')]=_0x521e70[_0x67ae('0x2b')];this[_0x67ae('0x2c')]=_0x521e70['dialAMDMinWordLength'];this[_0x67ae('0x2d')]=_0x521e70['dialAMDBetweenWordsSilence'];this[_0x67ae('0x2e')]=_0x521e70[_0x67ae('0x2e')];this['dialAMDSilenceThreshold']=_0x521e70[_0x67ae('0x2f')];this[_0x67ae('0x30')]=_0x521e70[_0x67ae('0x30')];}module[_0x67ae('0x31')]=Campaign;
\ No newline at end of file
index a2e466e..7bdc94d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb158=['tag','disposition','monitor','monitorFilename','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','exports','starttime','channel','calleridnum','connectedlinenum','connectedlinename','accountcode','context','linkedid','exten','answered','answertime','endtime','abandoned','lastapplication','lastdata','duration','billableseconds','holdtime'];(function(_0x37476c,_0x41e45d){var _0x4d4168=function(_0x3ebe01){while(--_0x3ebe01){_0x37476c['push'](_0x37476c['shift']());}};_0x4d4168(++_0x41e45d);}(_0xb158,0xfc));var _0x8b15=function(_0x46aff0,_0x122890){_0x46aff0=_0x46aff0-0x0;var _0x9d78cf=_0xb158[_0x46aff0];return _0x9d78cf;};'use strict';function Channel(){this[_0x8b15('0x0')]=null;this[_0x8b15('0x1')]='';this['destinationchannel']='';this[_0x8b15('0x2')]=0x0;this['calleridname']='';this[_0x8b15('0x3')]=undefined;this[_0x8b15('0x4')]=undefined;this[_0x8b15('0x5')]=0x0;this[_0x8b15('0x6')]='';this['uniqueid']=0x0;this[_0x8b15('0x7')]=0x0;this[_0x8b15('0x8')]=0x0;this[_0x8b15('0x9')]=![];this[_0x8b15('0xa')]=null;this[_0x8b15('0xb')]=null;this['unmanaged']=![];this[_0x8b15('0xc')]=![];this[_0x8b15('0xd')]='';this[_0x8b15('0xe')]='';this[_0x8b15('0xf')]=0x0;this[_0x8b15('0x10')]=0x0;this[_0x8b15('0x11')]=0x0;this['type']=null;this[_0x8b15('0x12')]=null;this[_0x8b15('0x13')]=null;this[_0x8b15('0x14')]=![];this[_0x8b15('0x15')]=null;this['queue']=null;this['monitors']=[];this[_0x8b15('0x16')]=undefined;this[_0x8b15('0x17')]=undefined;this[_0x8b15('0x18')]=undefined;this[_0x8b15('0x19')]=0x0;}module[_0x8b15('0x1a')]=Channel;
\ No newline at end of file
+var _0x1c45=['calleridnum','calleridname','connectedlinenum','connectedlinename','accountcode','linkedid','exten','answered','answertime','endtime','unmanaged','abandoned','lastapplication','lastdata','holdtime','type','tag','disposition','monitor','monitorFilename','monitors','transfercalleridnum','transferconnectedlinenum','transferType','mohtime','exports','starttime','channel','destinationchannel'];(function(_0xf92126,_0x4a08fc){var _0x5d157a=function(_0x28781d){while(--_0x28781d){_0xf92126['push'](_0xf92126['shift']());}};_0x5d157a(++_0x4a08fc);}(_0x1c45,0x1b0));var _0x51c4=function(_0x502c7d,_0x2f1285){_0x502c7d=_0x502c7d-0x0;var _0x30b7ed=_0x1c45[_0x502c7d];return _0x30b7ed;};'use strict';function Channel(){this[_0x51c4('0x0')]=null;this[_0x51c4('0x1')]='';this[_0x51c4('0x2')]='';this[_0x51c4('0x3')]=0x0;this[_0x51c4('0x4')]='';this[_0x51c4('0x5')]=undefined;this[_0x51c4('0x6')]=undefined;this[_0x51c4('0x7')]=0x0;this['context']='';this['uniqueid']=0x0;this[_0x51c4('0x8')]=0x0;this[_0x51c4('0x9')]=0x0;this[_0x51c4('0xa')]=![];this[_0x51c4('0xb')]=null;this[_0x51c4('0xc')]=null;this[_0x51c4('0xd')]=![];this[_0x51c4('0xe')]=![];this[_0x51c4('0xf')]='';this[_0x51c4('0x10')]='';this['duration']=0x0;this['billableseconds']=0x0;this[_0x51c4('0x11')]=0x0;this[_0x51c4('0x12')]=null;this[_0x51c4('0x13')]=null;this[_0x51c4('0x14')]=null;this[_0x51c4('0x15')]=![];this[_0x51c4('0x16')]=null;this['queue']=null;this[_0x51c4('0x17')]=[];this[_0x51c4('0x18')]=undefined;this[_0x51c4('0x19')]=undefined;this[_0x51c4('0x1a')]=undefined;this[_0x51c4('0x1b')]=0x0;}module[_0x51c4('0x1c')]=Channel;
\ No newline at end of file
index 0413a44..ea3d5ef 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9efe=['authType','password','consumerKey','consumerSecret','token','tokenSecret','type','serverUrl','Configurations','name','username','remoteUri'];(function(_0x3305de,_0x16582f){var _0x3b5a84=function(_0x57d7e1){while(--_0x57d7e1){_0x3305de['push'](_0x3305de['shift']());}};_0x3b5a84(++_0x16582f);}(_0x9efe,0x1a1));var _0xe9ef=function(_0x3b4b1d,_0x15029e){_0x3b4b1d=_0x3b4b1d-0x0;var _0x488c36=_0x9efe[_0x3b4b1d];return _0x488c36;};'use strict';function DeskAccount(_0x1e9324){this['id']=_0x1e9324['id']||0x0;this[_0xe9ef('0x0')]=_0x1e9324[_0xe9ef('0x0')]||'';this[_0xe9ef('0x1')]=_0x1e9324[_0xe9ef('0x1')]||'';this['remoteUri']=_0x1e9324[_0xe9ef('0x2')]||'';this[_0xe9ef('0x3')]=_0x1e9324['authType']||'';this[_0xe9ef('0x4')]=_0x1e9324['password']||'';this[_0xe9ef('0x5')]=_0x1e9324['consumerKey']||'';this[_0xe9ef('0x6')]=_0x1e9324['consumerSecret']||'';this[_0xe9ef('0x7')]=_0x1e9324[_0xe9ef('0x7')]||'';this[_0xe9ef('0x8')]=_0x1e9324[_0xe9ef('0x8')]||'';this[_0xe9ef('0x9')]=_0x1e9324[_0xe9ef('0x9')]||'';this[_0xe9ef('0xa')]=_0x1e9324[_0xe9ef('0xa')]||'';this[_0xe9ef('0xb')]=_0x1e9324[_0xe9ef('0xb')]||{};}module['exports']=DeskAccount;
\ No newline at end of file
+var _0x3ee8=['type','serverUrl','Configurations','exports','name','username','remoteUri','authType','password','consumerKey','consumerSecret','token','tokenSecret'];(function(_0x290d26,_0x56e6ca){var _0x2f16b9=function(_0x51f8bc){while(--_0x51f8bc){_0x290d26['push'](_0x290d26['shift']());}};_0x2f16b9(++_0x56e6ca);}(_0x3ee8,0x86));var _0x83ee=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3ee8[_0x3dd15e];return _0x231fd0;};'use strict';function DeskAccount(_0x52aac6){this['id']=_0x52aac6['id']||0x0;this[_0x83ee('0x0')]=_0x52aac6[_0x83ee('0x0')]||'';this[_0x83ee('0x1')]=_0x52aac6[_0x83ee('0x1')]||'';this[_0x83ee('0x2')]=_0x52aac6['remoteUri']||'';this[_0x83ee('0x3')]=_0x52aac6[_0x83ee('0x3')]||'';this[_0x83ee('0x4')]=_0x52aac6[_0x83ee('0x4')]||'';this[_0x83ee('0x5')]=_0x52aac6['consumerKey']||'';this[_0x83ee('0x6')]=_0x52aac6['consumerSecret']||'';this[_0x83ee('0x7')]=_0x52aac6[_0x83ee('0x7')]||'';this[_0x83ee('0x8')]=_0x52aac6[_0x83ee('0x8')]||'';this['type']=_0x52aac6[_0x83ee('0x9')]||'';this[_0x83ee('0xa')]=_0x52aac6[_0x83ee('0xa')]||'';this[_0x83ee('0xb')]=_0x52aac6[_0x83ee('0xb')]||{};}module[_0x83ee('0xc')]=DeskAccount;
\ No newline at end of file
index f171d27..a928692 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x77ea=['Configurations','CloudProvider','exports','password','remoteUri','tenantId','clientId','clientSecret','serverUrl','modernAuthentication'];(function(_0x4e1464,_0x113b31){var _0x31971d=function(_0x40252f){while(--_0x40252f){_0x4e1464['push'](_0x4e1464['shift']());}};_0x31971d(++_0x113b31);}(_0x77ea,0x1ed));var _0xa77e=function(_0x32f6ab,_0xaf84f7){_0x32f6ab=_0x32f6ab-0x0;var _0x161d0d=_0x77ea[_0x32f6ab];return _0x161d0d;};'use strict';function Dynamics365Account(_0x48d049){this['id']=_0x48d049['id']||0x0;this['name']=_0x48d049['name']||'';this['username']=_0x48d049['username']||'';this[_0xa77e('0x0')]=_0x48d049[_0xa77e('0x0')]||'';this['remoteUri']=_0x48d049[_0xa77e('0x1')]||'';this[_0xa77e('0x2')]=_0x48d049[_0xa77e('0x2')]||'';this[_0xa77e('0x3')]=_0x48d049[_0xa77e('0x3')]||'';this[_0xa77e('0x4')]=_0x48d049[_0xa77e('0x4')]||{};this[_0xa77e('0x5')]=_0x48d049[_0xa77e('0x5')]||'';this['modernAuthentication']=_0x48d049[_0xa77e('0x6')]||![];this[_0xa77e('0x7')]=_0x48d049[_0xa77e('0x7')]||{};this[_0xa77e('0x8')]=_0x48d049[_0xa77e('0x8')]||{};}module[_0xa77e('0x9')]=Dynamics365Account;
\ No newline at end of file
+var _0x8c5b=['modernAuthentication','Configurations','CloudProvider','exports','name','username','password','remoteUri','tenantId','clientId','clientSecret','serverUrl'];(function(_0x2080a3,_0x48acfa){var _0x8d7d17=function(_0x2dbc06){while(--_0x2dbc06){_0x2080a3['push'](_0x2080a3['shift']());}};_0x8d7d17(++_0x48acfa);}(_0x8c5b,0xe8));var _0xb8c5=function(_0x4ef77b,_0x6a3df){_0x4ef77b=_0x4ef77b-0x0;var _0x58d1a6=_0x8c5b[_0x4ef77b];return _0x58d1a6;};'use strict';function Dynamics365Account(_0x391de4){this['id']=_0x391de4['id']||0x0;this[_0xb8c5('0x0')]=_0x391de4[_0xb8c5('0x0')]||'';this[_0xb8c5('0x1')]=_0x391de4[_0xb8c5('0x1')]||'';this[_0xb8c5('0x2')]=_0x391de4[_0xb8c5('0x2')]||'';this[_0xb8c5('0x3')]=_0x391de4[_0xb8c5('0x3')]||'';this[_0xb8c5('0x4')]=_0x391de4['tenantId']||'';this[_0xb8c5('0x5')]=_0x391de4[_0xb8c5('0x5')]||'';this['clientSecret']=_0x391de4[_0xb8c5('0x6')]||{};this[_0xb8c5('0x7')]=_0x391de4[_0xb8c5('0x7')]||'';this[_0xb8c5('0x8')]=_0x391de4[_0xb8c5('0x8')]||![];this[_0xb8c5('0x9')]=_0x391de4['Configurations']||{};this['CloudProvider']=_0x391de4[_0xb8c5('0xa')]||{};}module[_0xb8c5('0xb')]=Dynamics365Account;
\ No newline at end of file
index 92e4478..5fbc76c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4d23=['key','name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','v17,v27,v29','gateway','faxdetect','t38timeout','tech','Trunk','ListId'];(function(_0x2641f9,_0x26715f){var _0x585741=function(_0x2d1462){while(--_0x2d1462){_0x2641f9['push'](_0x2641f9['shift']());}};_0x585741(++_0x26715f);}(_0x4d23,0x91));var _0x34d2=function(_0x3d03f8,_0x51134e){_0x3d03f8=_0x3d03f8-0x0;var _0x9c9a8c=_0x4d23[_0x3d03f8];return _0x9c9a8c;};'use strict';function FaxAccount(_0x4d8090){this['id']=_0x4d8090['id']||0x0;this[_0x34d2('0x0')]=_0x4d8090[_0x34d2('0x0')]||'';this[_0x34d2('0x1')]=_0x4d8090[_0x34d2('0x1')];this[_0x34d2('0x2')]=_0x4d8090[_0x34d2('0x2')];this[_0x34d2('0x3')]=_0x4d8090['headerinfo'];this[_0x34d2('0x4')]=_0x4d8090[_0x34d2('0x4')];this['minrate']=_0x4d8090[_0x34d2('0x5')]||0x960;this[_0x34d2('0x6')]=_0x4d8090[_0x34d2('0x6')]||0x3840;this['modem']=_0x4d8090[_0x34d2('0x7')]||_0x34d2('0x8');this[_0x34d2('0x9')]=_0x4d8090[_0x34d2('0x9')]||'no';this[_0x34d2('0xa')]=_0x4d8090[_0x34d2('0xa')]||'no';this[_0x34d2('0xb')]=_0x4d8090[_0x34d2('0xb')]||0x1388;this['tech']=_0x4d8090[_0x34d2('0xc')]||'SIP';this['Trunk']=_0x4d8090[_0x34d2('0xd')]?_0x4d8090[_0x34d2('0xd')]:undefined;this[_0x34d2('0xe')]=_0x4d8090['ListId'];this['key']=_0x4d8090[_0x34d2('0xf')];}module['exports']=FaxAccount;
\ No newline at end of file
+var _0x5e22=['name','description','ecm','headerinfo','localstationid','minrate','maxrate','modem','gateway','faxdetect','t38timeout','tech','SIP','Trunk','ListId','key','exports'];(function(_0x1cc16d,_0x1a975e){var _0x2e100b=function(_0x37491b){while(--_0x37491b){_0x1cc16d['push'](_0x1cc16d['shift']());}};_0x2e100b(++_0x1a975e);}(_0x5e22,0x132));var _0x25e2=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x5e22[_0x321bb2];return _0x9c12ed;};'use strict';function FaxAccount(_0x4ec174){this['id']=_0x4ec174['id']||0x0;this[_0x25e2('0x0')]=_0x4ec174['name']||'';this[_0x25e2('0x1')]=_0x4ec174[_0x25e2('0x1')];this[_0x25e2('0x2')]=_0x4ec174['ecm'];this[_0x25e2('0x3')]=_0x4ec174[_0x25e2('0x3')];this[_0x25e2('0x4')]=_0x4ec174[_0x25e2('0x4')];this[_0x25e2('0x5')]=_0x4ec174[_0x25e2('0x5')]||0x960;this[_0x25e2('0x6')]=_0x4ec174[_0x25e2('0x6')]||0x3840;this[_0x25e2('0x7')]=_0x4ec174['modem']||'v17,v27,v29';this[_0x25e2('0x8')]=_0x4ec174[_0x25e2('0x8')]||'no';this[_0x25e2('0x9')]=_0x4ec174[_0x25e2('0x9')]||'no';this[_0x25e2('0xa')]=_0x4ec174[_0x25e2('0xa')]||0x1388;this[_0x25e2('0xb')]=_0x4ec174['tech']||_0x25e2('0xc');this[_0x25e2('0xd')]=_0x4ec174['Trunk']?_0x4ec174[_0x25e2('0xd')]:undefined;this['ListId']=_0x4ec174[_0x25e2('0xe')];this[_0x25e2('0xf')]=_0x4ec174['key'];}module[_0x25e2('0x10')]=FaxAccount;
\ No newline at end of file
index 1de17c6..8af3973 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf431=['exports','name','username','apiKey','token','remoteUri','serverUrl','Configurations'];(function(_0x41e2af,_0x3662f8){var _0x41df19=function(_0x3b307e){while(--_0x3b307e){_0x41e2af['push'](_0x41e2af['shift']());}};_0x41df19(++_0x3662f8);}(_0xf431,0x179));var _0x1f43=function(_0x250514,_0x389eda){_0x250514=_0x250514-0x0;var _0x59c25b=_0xf431[_0x250514];return _0x59c25b;};'use strict';function FreshdeskAccount(_0x3fe655){this['id']=_0x3fe655['id']||0x0;this[_0x1f43('0x0')]=_0x3fe655[_0x1f43('0x0')]||'';this['username']=_0x3fe655[_0x1f43('0x1')]||'';this[_0x1f43('0x2')]=_0x3fe655[_0x1f43('0x3')]||'';this[_0x1f43('0x4')]=_0x3fe655[_0x1f43('0x4')]||'';this[_0x1f43('0x5')]=_0x3fe655[_0x1f43('0x5')]||'';this[_0x1f43('0x6')]=_0x3fe655['Configurations']||{};}module[_0x1f43('0x7')]=FreshdeskAccount;
\ No newline at end of file
+var _0xed9b=['name','username','token','remoteUri','Configurations','exports'];(function(_0x41c6d9,_0x3a7302){var _0x4f6657=function(_0x43fbd7){while(--_0x43fbd7){_0x41c6d9['push'](_0x41c6d9['shift']());}};_0x4f6657(++_0x3a7302);}(_0xed9b,0x9c));var _0xbed9=function(_0x46a671,_0x758e9a){_0x46a671=_0x46a671-0x0;var _0x526d75=_0xed9b[_0x46a671];return _0x526d75;};'use strict';function FreshdeskAccount(_0x200699){this['id']=_0x200699['id']||0x0;this[_0xbed9('0x0')]=_0x200699['name']||'';this[_0xbed9('0x1')]=_0x200699[_0xbed9('0x1')]||'';this['apiKey']=_0x200699[_0xbed9('0x2')]||'';this[_0xbed9('0x3')]=_0x200699[_0xbed9('0x3')]||'';this['serverUrl']=_0x200699['serverUrl']||'';this[_0xbed9('0x4')]=_0x200699[_0xbed9('0x4')]||{};}module[_0xbed9('0x5')]=FreshdeskAccount;
\ No newline at end of file
index 84d81a2..ef7ec8d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x00e0=['username','token','Configurations','name'];(function(_0x1be37e,_0x49f737){var _0x4899ca=function(_0x5d2759){while(--_0x5d2759){_0x1be37e['push'](_0x1be37e['shift']());}};_0x4899ca(++_0x49f737);}(_0x00e0,0x1e3));var _0x000e=function(_0x336da1,_0xd138ff){_0x336da1=_0x336da1-0x0;var _0x320382=_0x00e0[_0x336da1];return _0x320382;};'use strict';function FreshsalesAccount(_0x5eac6d){this['id']=_0x5eac6d['id']||0x0;this[_0x000e('0x0')]=_0x5eac6d[_0x000e('0x0')]||'';this['username']=_0x5eac6d[_0x000e('0x1')]||'';this['apiKey']=_0x5eac6d[_0x000e('0x2')]||'';this['remoteUri']=_0x5eac6d['remoteUri']||'';this['serverUrl']=_0x5eac6d['serverUrl']||'';this[_0x000e('0x3')]=_0x5eac6d[_0x000e('0x3')]||{};}module['exports']=FreshsalesAccount;
\ No newline at end of file
+var _0x448a=['serverUrl','Configurations','exports','name','username','remoteUri'];(function(_0x2f45ea,_0x15c656){var _0x485a84=function(_0x4a1fe3){while(--_0x4a1fe3){_0x2f45ea['push'](_0x2f45ea['shift']());}};_0x485a84(++_0x15c656);}(_0x448a,0x1ef));var _0xa448=function(_0x464759,_0x3f6560){_0x464759=_0x464759-0x0;var _0x47ef45=_0x448a[_0x464759];return _0x47ef45;};'use strict';function FreshsalesAccount(_0x526c52){this['id']=_0x526c52['id']||0x0;this[_0xa448('0x0')]=_0x526c52[_0xa448('0x0')]||'';this['username']=_0x526c52[_0xa448('0x1')]||'';this['apiKey']=_0x526c52['token']||'';this[_0xa448('0x2')]=_0x526c52[_0xa448('0x2')]||'';this['serverUrl']=_0x526c52[_0xa448('0x3')]||'';this[_0xa448('0x4')]=_0x526c52[_0xa448('0x4')]||{};}module[_0xa448('0x5')]=FreshsalesAccount;
\ No newline at end of file
index 608bd74..fb5933c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0051=['connectedlinename','context','exten','priority','assigned','lastAssignedTo','motionChannel','voice','mohtime','exports','type','uniqueid','calleridnum','calleridname','queuecallerjoinAt','queuecallerleaveAt','count','queuecallerabandon','queuecallerabandonAt','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt','originalposition','channel','connectedlinenum'];(function(_0x282c6f,_0x1f1b9c){var _0x158ce4=function(_0x1580d6){while(--_0x1580d6){_0x282c6f['push'](_0x282c6f['shift']());}};_0x158ce4(++_0x1f1b9c);}(_0x0051,0x1c4));var _0x1005=function(_0x13af04,_0x34696c){_0x13af04=_0x13af04-0x0;var _0xd04e49=_0x0051[_0x13af04];return _0xd04e49;};'use strict';function QueueReport(){this[_0x1005('0x0')]='inbound';this[_0x1005('0x1')]='';this[_0x1005('0x2')]='';this[_0x1005('0x3')]='';this['queue']='';this[_0x1005('0x4')]=null;this[_0x1005('0x5')]=null;this['position']=0x1;this[_0x1005('0x6')]=0x1;this[_0x1005('0x7')]=![];this[_0x1005('0x8')]=null;this[_0x1005('0x9')]=![];this[_0x1005('0xa')]=null;this[_0x1005('0xb')]=![];this[_0x1005('0xc')]=null;this[_0x1005('0xd')]=0x1;this[_0x1005('0xe')]='';this[_0x1005('0xf')]='';this[_0x1005('0x10')]='';this['accountcode']='';this[_0x1005('0x11')]='';this[_0x1005('0x12')]='';this[_0x1005('0x13')]='';this['holdtime']=0x0;this[_0x1005('0x14')]=![];this[_0x1005('0x15')]='';this[_0x1005('0x16')]=_0x1005('0x17');this[_0x1005('0x18')]=0x0;this['variables']={};}module[_0x1005('0x19')]=QueueReport;
\ No newline at end of file
+var _0x94f7=['channel','connectedlinenum','connectedlinename','context','exten','priority','assigned','lastAssignedTo','motionChannel','voice','mohtime','variables','exports','inbound','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','queuecallerleaveAt','count','queuecallercomplete','queuecallercompleteAt','queuecallerexit','queuecallerexitAt'];(function(_0x38358d,_0x480c6c){var _0x14e79d=function(_0x484e90){while(--_0x484e90){_0x38358d['push'](_0x38358d['shift']());}};_0x14e79d(++_0x480c6c);}(_0x94f7,0x139));var _0x794f=function(_0x321ad2,_0x5e3540){_0x321ad2=_0x321ad2-0x0;var _0x2a72d9=_0x94f7[_0x321ad2];return _0x2a72d9;};'use strict';function QueueReport(){this['type']=_0x794f('0x0');this[_0x794f('0x1')]='';this[_0x794f('0x2')]='';this[_0x794f('0x3')]='';this[_0x794f('0x4')]='';this[_0x794f('0x5')]=null;this[_0x794f('0x6')]=null;this['position']=0x1;this[_0x794f('0x7')]=0x1;this['queuecallerabandon']=![];this['queuecallerabandonAt']=null;this[_0x794f('0x8')]=![];this[_0x794f('0x9')]=null;this[_0x794f('0xa')]=![];this[_0x794f('0xb')]=null;this['originalposition']=0x1;this[_0x794f('0xc')]='';this[_0x794f('0xd')]='';this[_0x794f('0xe')]='';this['accountcode']='';this[_0x794f('0xf')]='';this[_0x794f('0x10')]='';this[_0x794f('0x11')]='';this['holdtime']=0x0;this[_0x794f('0x12')]=![];this[_0x794f('0x13')]='';this[_0x794f('0x14')]=_0x794f('0x15');this[_0x794f('0x16')]=0x0;this[_0x794f('0x17')]={};}module[_0x794f('0x18')]=QueueReport;
\ No newline at end of file
index 34ecb01..fab7434 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd472=['Configurations','name','username','remoteUri','password','clientId','clientSecret','securityToken','type','serverUrl'];(function(_0x1d8a5d,_0x59a110){var _0x54d59f=function(_0x54ce10){while(--_0x54ce10){_0x1d8a5d['push'](_0x1d8a5d['shift']());}};_0x54d59f(++_0x59a110);}(_0xd472,0x1eb));var _0x2d47=function(_0x1f48a3,_0x55064d){_0x1f48a3=_0x1f48a3-0x0;var _0x14cf41=_0xd472[_0x1f48a3];return _0x14cf41;};'use strict';function SalesforceAccount(_0x53c5bf){this['id']=_0x53c5bf['id']||0x0;this[_0x2d47('0x0')]=_0x53c5bf[_0x2d47('0x0')]||'';this['username']=_0x53c5bf[_0x2d47('0x1')]||'';this[_0x2d47('0x2')]=_0x53c5bf[_0x2d47('0x2')]||'';this[_0x2d47('0x3')]=_0x53c5bf[_0x2d47('0x3')]||'';this[_0x2d47('0x4')]=_0x53c5bf['clientId']||'';this['clientSecret']=_0x53c5bf[_0x2d47('0x5')]||'';this[_0x2d47('0x6')]=_0x53c5bf[_0x2d47('0x6')]||'';this[_0x2d47('0x7')]=_0x53c5bf[_0x2d47('0x7')]||'integrationTab';this[_0x2d47('0x8')]=_0x53c5bf[_0x2d47('0x8')]||'';this[_0x2d47('0x9')]=_0x53c5bf['Configurations']||{};}module['exports']=SalesforceAccount;
\ No newline at end of file
+var _0x4cdc=['clientSecret','securityToken','type','integrationTab','serverUrl','Configurations','name','username','remoteUri','password','clientId'];(function(_0x1053ce,_0x19467d){var _0x1e381d=function(_0x549d59){while(--_0x549d59){_0x1053ce['push'](_0x1053ce['shift']());}};_0x1e381d(++_0x19467d);}(_0x4cdc,0x13a));var _0xc4cd=function(_0x26a5b0,_0x467fab){_0x26a5b0=_0x26a5b0-0x0;var _0x34e9e9=_0x4cdc[_0x26a5b0];return _0x34e9e9;};'use strict';function SalesforceAccount(_0xe1aa59){this['id']=_0xe1aa59['id']||0x0;this[_0xc4cd('0x0')]=_0xe1aa59['name']||'';this['username']=_0xe1aa59[_0xc4cd('0x1')]||'';this[_0xc4cd('0x2')]=_0xe1aa59['remoteUri']||'';this[_0xc4cd('0x3')]=_0xe1aa59[_0xc4cd('0x3')]||'';this[_0xc4cd('0x4')]=_0xe1aa59[_0xc4cd('0x4')]||'';this[_0xc4cd('0x5')]=_0xe1aa59[_0xc4cd('0x5')]||'';this[_0xc4cd('0x6')]=_0xe1aa59[_0xc4cd('0x6')]||'';this[_0xc4cd('0x7')]=_0xe1aa59['type']||_0xc4cd('0x8');this[_0xc4cd('0x9')]=_0xe1aa59['serverUrl']||'';this[_0xc4cd('0xa')]=_0xe1aa59[_0xc4cd('0xa')]||{};}module['exports']=SalesforceAccount;
\ No newline at end of file
index c8df8ec..abc0950 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa3c6=['remoteUri','serverUrl','Configurations','exports','name','username','password'];(function(_0xc973f8,_0x1759ec){var _0x5cd9d5=function(_0x582522){while(--_0x582522){_0xc973f8['push'](_0xc973f8['shift']());}};_0x5cd9d5(++_0x1759ec);}(_0xa3c6,0x177));var _0x6a3c=function(_0x2e8c7e,_0x28648a){_0x2e8c7e=_0x2e8c7e-0x0;var _0x48fded=_0xa3c6[_0x2e8c7e];return _0x48fded;};'use strict';function ServicenowAccount(_0x1031fa){this['id']=_0x1031fa['id']||0x0;this[_0x6a3c('0x0')]=_0x1031fa[_0x6a3c('0x0')]||'';this[_0x6a3c('0x1')]=_0x1031fa[_0x6a3c('0x1')]||'';this[_0x6a3c('0x2')]=_0x1031fa[_0x6a3c('0x2')]||'';this[_0x6a3c('0x3')]=_0x1031fa[_0x6a3c('0x3')]||'';this[_0x6a3c('0x4')]=_0x1031fa['serverUrl']||'';this[_0x6a3c('0x5')]=_0x1031fa[_0x6a3c('0x5')]||{};}module[_0x6a3c('0x6')]=ServicenowAccount;
\ No newline at end of file
+var _0xc81e=['serverUrl','Configurations','name','username','remoteUri'];(function(_0x5b644e,_0x2e5e07){var _0x49c6bf=function(_0x3032d9){while(--_0x3032d9){_0x5b644e['push'](_0x5b644e['shift']());}};_0x49c6bf(++_0x2e5e07);}(_0xc81e,0x15b));var _0xec81=function(_0x5bd4f6,_0xf4e45c){_0x5bd4f6=_0x5bd4f6-0x0;var _0x33a165=_0xc81e[_0x5bd4f6];return _0x33a165;};'use strict';function ServicenowAccount(_0x44c1d2){this['id']=_0x44c1d2['id']||0x0;this[_0xec81('0x0')]=_0x44c1d2['name']||'';this[_0xec81('0x1')]=_0x44c1d2[_0xec81('0x1')]||'';this['password']=_0x44c1d2['password']||'';this[_0xec81('0x2')]=_0x44c1d2[_0xec81('0x2')]||'';this[_0xec81('0x3')]=_0x44c1d2['serverUrl']||'';this['Configurations']=_0x44c1d2[_0xec81('0x4')]||{};}module['exports']=ServicenowAccount;
\ No newline at end of file
index fca2055..f74fd4b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c96=['remoteUri','serverUrl','Configurations','name','username','password'];(function(_0x17ba8d,_0x2c6dab){var _0x1e4c89=function(_0x34b4cc){while(--_0x34b4cc){_0x17ba8d['push'](_0x17ba8d['shift']());}};_0x1e4c89(++_0x2c6dab);}(_0x2c96,0x153));var _0x62c9=function(_0x55cad3,_0x3cdb87){_0x55cad3=_0x55cad3-0x0;var _0xf46300=_0x2c96[_0x55cad3];return _0xf46300;};'use strict';function SugarcrmAccount(_0x19d1af){this['id']=_0x19d1af['id']||0x0;this['name']=_0x19d1af[_0x62c9('0x0')]||'';this[_0x62c9('0x1')]=_0x19d1af['username']||'';this[_0x62c9('0x2')]=_0x19d1af[_0x62c9('0x2')]||'';this[_0x62c9('0x3')]=_0x19d1af['remoteUri']||'';this[_0x62c9('0x4')]=_0x19d1af['serverUrl']||'';this[_0x62c9('0x5')]=_0x19d1af[_0x62c9('0x5')]||{};}module['exports']=SugarcrmAccount;
\ No newline at end of file
+var _0x1f51=['remoteUri','serverUrl','Configurations','name','password'];(function(_0x4a93bb,_0x495404){var _0x208468=function(_0x1d82b7){while(--_0x1d82b7){_0x4a93bb['push'](_0x4a93bb['shift']());}};_0x208468(++_0x495404);}(_0x1f51,0xb2));var _0x11f5=function(_0x354e7a,_0x4e4dc0){_0x354e7a=_0x354e7a-0x0;var _0x17b550=_0x1f51[_0x354e7a];return _0x17b550;};'use strict';function SugarcrmAccount(_0x3e32fa){this['id']=_0x3e32fa['id']||0x0;this['name']=_0x3e32fa[_0x11f5('0x0')]||'';this['username']=_0x3e32fa['username']||'';this[_0x11f5('0x1')]=_0x3e32fa['password']||'';this[_0x11f5('0x2')]=_0x3e32fa[_0x11f5('0x2')]||'';this[_0x11f5('0x3')]=_0x3e32fa[_0x11f5('0x3')]||'';this[_0x11f5('0x4')]=_0x3e32fa[_0x11f5('0x4')]||{};}module['exports']=SugarcrmAccount;
\ No newline at end of file
index 7e3f5d6..c4c808e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c71=['state','unknown','stateTime','address','exports','name','accountcode'];(function(_0x3657ee,_0x2a541a){var _0x48c756=function(_0x55b287){while(--_0x55b287){_0x3657ee['push'](_0x3657ee['shift']());}};_0x48c756(++_0x2a541a);}(_0x4c71,0x12b));var _0x14c7=function(_0xfae23b,_0x2be4ba){_0xfae23b=_0xfae23b-0x0;var _0x200640=_0x4c71[_0xfae23b];return _0x200640;};'use strict';function Telephone(_0x2b292c){this['id']=_0x2b292c['id']||0x0;this[_0x14c7('0x0')]=_0x2b292c['name']||'';this[_0x14c7('0x1')]=_0x2b292c[_0x14c7('0x1')]||'';this[_0x14c7('0x2')]=_0x14c7('0x3');this[_0x14c7('0x4')]=0x0;this['status']=_0x14c7('0x3');this[_0x14c7('0x5')]='';}module[_0x14c7('0x6')]=Telephone;
\ No newline at end of file
+var _0x8e93=['status','name','accountcode','unknown','stateTime'];(function(_0x3c51af,_0x1991ce){var _0xeb10d9=function(_0xa91e64){while(--_0xa91e64){_0x3c51af['push'](_0x3c51af['shift']());}};_0xeb10d9(++_0x1991ce);}(_0x8e93,0xba));var _0x38e9=function(_0x4561be,_0x474483){_0x4561be=_0x4561be-0x0;var _0x5a4b74=_0x8e93[_0x4561be];return _0x5a4b74;};'use strict';function Telephone(_0x28ce98){this['id']=_0x28ce98['id']||0x0;this[_0x38e9('0x0')]=_0x28ce98[_0x38e9('0x0')]||'';this[_0x38e9('0x1')]=_0x28ce98[_0x38e9('0x1')]||'';this['state']=_0x38e9('0x2');this[_0x38e9('0x3')]=0x0;this[_0x38e9('0x4')]='unknown';this['address']='';}module['exports']=Telephone;
\ No newline at end of file
index b031730..de9ac24 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['exports','name'];(function(_0x4b57d5,_0x190adf){var _0x32d5c4=function(_0x106a9a){while(--_0x106a9a){_0x4b57d5['push'](_0x4b57d5['shift']());}};_0x32d5c4(++_0x190adf);}(_0xa9e0,0x123));var _0x0a9e=function(_0x139a3c,_0x4fc883){_0x139a3c=_0x139a3c-0x0;var _0x2b375b=_0xa9e0[_0x139a3c];return _0x2b375b;};'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(_0xf11a7a,_0x36fcfe){var _0x4d5c8b=function(_0x30e53e){while(--_0x30e53e){_0xf11a7a['push'](_0xf11a7a['shift']());}};_0x4d5c8b(++_0x36fcfe);}(_0xb10b,0x12a));var _0xbb10=function(_0x21ba22,_0x38908f){_0x21ba22=_0x21ba22-0x0;var _0x997b34=_0xb10b[_0x21ba22];return _0x997b34;};'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 2e12ae7..52d7a13 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0b0e=['channel','voice','status','AllConditions','AnyConditions','Actions','exports','name'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x0b0e,0x187));var _0xe0b0=function(_0x1ec65c,_0x354923){_0x1ec65c=_0x1ec65c-0x0;var _0x5249c2=_0x0b0e[_0x1ec65c];return _0x5249c2;};'use strict';function Trigger(_0x29cd1e){this['id']=_0x29cd1e['id']||0x0;this['name']=_0x29cd1e[_0xe0b0('0x0')]||'';this['channel']=_0x29cd1e[_0xe0b0('0x1')]||_0xe0b0('0x2');this[_0xe0b0('0x3')]=_0x29cd1e[_0xe0b0('0x3')]||![];this[_0xe0b0('0x4')]=_0x29cd1e[_0xe0b0('0x4')]||[];this[_0xe0b0('0x5')]=_0x29cd1e[_0xe0b0('0x5')]||[];this[_0xe0b0('0x6')]=_0x29cd1e[_0xe0b0('0x6')]||[];}module[_0xe0b0('0x7')]=Trigger;
\ No newline at end of file
+var _0xda2d=['channel','voice','AllConditions','AnyConditions','Actions','exports','name'];(function(_0x2556fb,_0x4440af){var _0x2a86b2=function(_0x9097a){while(--_0x9097a){_0x2556fb['push'](_0x2556fb['shift']());}};_0x2a86b2(++_0x4440af);}(_0xda2d,0x102));var _0xdda2=function(_0x368a29,_0x449097){_0x368a29=_0x368a29-0x0;var _0x298a64=_0xda2d[_0x368a29];return _0x298a64;};'use strict';function Trigger(_0x2625ed){this['id']=_0x2625ed['id']||0x0;this[_0xdda2('0x0')]=_0x2625ed[_0xdda2('0x0')]||'';this[_0xdda2('0x1')]=_0x2625ed[_0xdda2('0x1')]||_0xdda2('0x2');this['status']=_0x2625ed['status']||![];this['AllConditions']=_0x2625ed[_0xdda2('0x3')]||[];this[_0xdda2('0x4')]=_0x2625ed[_0xdda2('0x4')]||[];this[_0xdda2('0x5')]=_0x2625ed[_0xdda2('0x5')]||[];}module[_0xdda2('0x6')]=Trigger;
\ No newline at end of file
index e367e78..434bd11 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x739b=['registrationtime','address','defaultuser','exports','active','name','unknown','stateTime','status','registry','split','host','port','domainport','refresh','stateRegistry'];(function(_0x3101cb,_0x17b725){var _0x3f573f=function(_0x3311a2){while(--_0x3311a2){_0x3101cb['push'](_0x3101cb['shift']());}};_0x3f573f(++_0x17b725);}(_0x739b,0x124));var _0xb739=function(_0x4af79a,_0x364919){_0x4af79a=_0x4af79a-0x0;var _0x300673=_0x739b[_0x4af79a];return _0x300673;};'use strict';function Trunk(_0x286db8){this['id']=_0x286db8['id']||0x0;this[_0xb739('0x0')]=_0x286db8['active']||![];this[_0xb739('0x1')]=_0x286db8[_0xb739('0x1')]||'';this['state']=_0xb739('0x2');this[_0xb739('0x3')]=0x0;this[_0xb739('0x4')]=_0xb739('0x2');this[_0xb739('0x5')]=_0x286db8['registry']&&_0x286db8[_0xb739('0x5')]['indexOf'](':')?_0x286db8['registry'][_0xb739('0x6')](':')[0x0]:'';this[_0xb739('0x7')]='';this[_0xb739('0x8')]='';this['domain']='';this[_0xb739('0x9')]='';this[_0xb739('0xa')]='';this[_0xb739('0xb')]=_0xb739('0x2');this[_0xb739('0xc')]='';this[_0xb739('0xd')]='';this[_0xb739('0xe')]=_0x286db8[_0xb739('0xe')]||'';}module[_0xb739('0xf')]=Trunk;
\ No newline at end of file
+var _0x3a28=['name','state','status','unknown','registry','indexOf','split','host','port','domain','domainport','refresh','stateRegistry','registrationtime','defaultuser','exports','active'];(function(_0x1fac7f,_0x51e63d){var _0x1b332f=function(_0x2853bd){while(--_0x2853bd){_0x1fac7f['push'](_0x1fac7f['shift']());}};_0x1b332f(++_0x51e63d);}(_0x3a28,0x10f));var _0x83a2=function(_0x422905,_0x3bce3a){_0x422905=_0x422905-0x0;var _0x33dc6c=_0x3a28[_0x422905];return _0x33dc6c;};'use strict';function Trunk(_0x47ec0b){this['id']=_0x47ec0b['id']||0x0;this[_0x83a2('0x0')]=_0x47ec0b[_0x83a2('0x0')]||![];this[_0x83a2('0x1')]=_0x47ec0b[_0x83a2('0x1')]||'';this[_0x83a2('0x2')]='unknown';this['stateTime']=0x0;this[_0x83a2('0x3')]=_0x83a2('0x4');this[_0x83a2('0x5')]=_0x47ec0b[_0x83a2('0x5')]&&_0x47ec0b['registry'][_0x83a2('0x6')](':')?_0x47ec0b[_0x83a2('0x5')][_0x83a2('0x7')](':')[0x0]:'';this[_0x83a2('0x8')]='';this[_0x83a2('0x9')]='';this[_0x83a2('0xa')]='';this[_0x83a2('0xb')]='';this[_0x83a2('0xc')]='';this[_0x83a2('0xd')]=_0x83a2('0x4');this[_0x83a2('0xe')]='';this['address']='';this[_0x83a2('0xf')]=_0x47ec0b[_0x83a2('0xf')]||'';}module[_0x83a2('0x10')]=Trunk;
\ No newline at end of file
index 9b03b68..abb53cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3aab=['mandatoryDisposition','exten','recordingFormat'];(function(_0x31991b,_0xaf75d2){var _0x307304=function(_0x2f36c5){while(--_0x2f36c5){_0x31991b['push'](_0x31991b['shift']());}};_0x307304(++_0xaf75d2);}(_0x3aab,0x64));var _0xb3aa=function(_0x1bbbe8,_0x32babf){_0x1bbbe8=_0x1bbbe8-0x0;var _0x22f3ea=_0x3aab[_0x1bbbe8];return _0x22f3ea;};'use strict';function voiceExtension(_0x1677dc){this['id']=_0x1677dc['id']||0x0;this[_0xb3aa('0x0')]=_0x1677dc['exten']||'';this['recordingFormat']=_0x1677dc[_0xb3aa('0x1')]||'none';this[_0xb3aa('0x2')]=_0x1677dc[_0xb3aa('0x2')]||![];}module['exports']=voiceExtension;
\ No newline at end of file
+var _0xb2a8=['mandatoryDisposition','exports','exten','recordingFormat','none'];(function(_0x122ef9,_0x451d2a){var _0x42fba0=function(_0x17c9d3){while(--_0x17c9d3){_0x122ef9['push'](_0x122ef9['shift']());}};_0x42fba0(++_0x451d2a);}(_0xb2a8,0x75));var _0x8b2a=function(_0x3b16e1,_0x3bda3e){_0x3b16e1=_0x3b16e1-0x0;var _0x311d1b=_0xb2a8[_0x3b16e1];return _0x311d1b;};'use strict';function voiceExtension(_0x375208){this['id']=_0x375208['id']||0x0;this['exten']=_0x375208[_0x8b2a('0x0')]||'';this[_0x8b2a('0x1')]=_0x375208['recordingFormat']||_0x8b2a('0x2');this[_0x8b2a('0x3')]=_0x375208[_0x8b2a('0x3')]||![];}module[_0x8b2a('0x4')]=voiceExtension;
\ No newline at end of file
index 50ccf12..e8da7b5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa391=['Interval','dialOrderByScheduledAt','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','dialAMDActive','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerCallsDay','outboundAnswerAgiCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundBlacklistCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundDropCallsDayACS','outboundReCallsDay','outboundAbandonedDay','startProgressive','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCallsDroppedCalls','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','not_inuse','busy','invalid','unavailable','ringinuse','onhold','wav','wav49','gsm','rrmemory','roundrobin','name','monitor_format','waiting','talking','sumDuration','sumHoldTime','sumBillable','abandoned','loggedIn','available','acw','acwTimeout','autopause','sendMessageOneNotActive','message','originated','temp','dialTimezone','dialActive','dialMethod','dialLimitChannel','dialLimitQueue','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','tTxX','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix'];(function(_0x39685d,_0x6a2bb0){var _0x60179f=function(_0x2656d0){while(--_0x2656d0){_0x39685d['push'](_0x39685d['shift']());}};_0x60179f(++_0x6a2bb0);}(_0xa391,0xb0));var _0x1a39=function(_0x2235bf,_0x3a06a7){_0x2235bf=_0x2235bf-0x0;var _0x4c3a64=_0xa391[_0x2235bf];return _0x4c3a64;};'use strict';var statusDesc=[_0x1a39('0x0'),_0x1a39('0x1'),'inuse',_0x1a39('0x2'),_0x1a39('0x3'),_0x1a39('0x4'),'ringing',_0x1a39('0x5'),_0x1a39('0x6')];var monitorFormat={'wav':_0x1a39('0x7'),'wav49':_0x1a39('0x8'),'gsm':_0x1a39('0x9')};var strategy={'rrmemory':_0x1a39('0xa'),'roundrobin':_0x1a39('0xb')};function VoiceQueue(_0x25d4dd){this['id']=_0x25d4dd['id']||0x0;this[_0x1a39('0xc')]=_0x25d4dd[_0x1a39('0xc')]||'';this[_0x1a39('0xd')]=_0x25d4dd[_0x1a39('0xd')]||'';this['type']=_0x25d4dd['type']||'inbound';this[_0x1a39('0xe')]=0x0;this[_0x1a39('0xf')]=0x0;this['total']=0x0;this['answered']=0x0;this[_0x1a39('0x10')]=0x0;this[_0x1a39('0x11')]=0x0;this[_0x1a39('0x12')]=0x0;this['unmanaged']=0x0;this[_0x1a39('0x13')]=0x0;this[_0x1a39('0x14')]=0x0;this[_0x1a39('0x15')]=0x0;this['acw']=_0x25d4dd[_0x1a39('0x16')]||![];this[_0x1a39('0x17')]=_0x25d4dd[_0x1a39('0x17')]||0xa;this[_0x1a39('0x18')]=_0x25d4dd[_0x1a39('0x18')]||'no';this[_0x1a39('0x19')]=!![];this[_0x1a39('0x1a')]='';this[_0x1a39('0x1b')]=0x0;this[_0x1a39('0x1c')]=0x0;this[_0x1a39('0x1d')]=_0x25d4dd['dialTimezone']||null;this['dialGlobalInterval']=_0x25d4dd['dialGlobalInterval']?_0x25d4dd['dialGlobalInterval']:null;this[_0x1a39('0x1e')]=_0x25d4dd['dialActive'];this[_0x1a39('0x1f')]=_0x25d4dd[_0x1a39('0x1f')]||'progressive';this[_0x1a39('0x20')]=_0x25d4dd[_0x1a39('0x20')]||0x0;this['dialLimitQueue']=_0x25d4dd[_0x1a39('0x21')]||0x0;this['dialPowerLevel']=_0x25d4dd['dialPowerLevel']||0x1;this[_0x1a39('0x22')]=_0x25d4dd[_0x1a39('0x22')]||_0x1a39('0x23');this['dialPredictiveOptimizationPercentage']=_0x25d4dd[_0x1a39('0x24')]||0.03;this[_0x1a39('0x25')]=_0x25d4dd[_0x1a39('0x25')]||0x258;this['dialOriginateCallerIdName']=_0x25d4dd[_0x1a39('0x26')]||_0x1a39('0x27');this['dialOriginateCallerIdNumber']=_0x25d4dd[_0x1a39('0x28')]||'anonymous';this[_0x1a39('0x29')]=_0x25d4dd[_0x1a39('0x29')]||0x1e;this[_0x1a39('0x2a')]=_0x25d4dd[_0x1a39('0x2a')]||_0x1a39('0x2b');this[_0x1a39('0x2c')]=_0x25d4dd[_0x1a39('0x2c')]||0x3;this[_0x1a39('0x2d')]=_0x25d4dd[_0x1a39('0x2d')]||undefined;this[_0x1a39('0x2e')]=_0x25d4dd[_0x1a39('0x2e')]||0x3;this[_0x1a39('0x2f')]=_0x25d4dd[_0x1a39('0x2f')]||0x96;this[_0x1a39('0x30')]=_0x25d4dd[_0x1a39('0x30')]||0x3;this[_0x1a39('0x31')]=_0x25d4dd[_0x1a39('0x31')]||0x96;this[_0x1a39('0x32')]=_0x25d4dd[_0x1a39('0x32')]||0x3;this[_0x1a39('0x33')]=_0x25d4dd[_0x1a39('0x33')]||0x96;this['dialNoSuchNumberMaxRetry']=_0x25d4dd[_0x1a39('0x34')]||0x3;this[_0x1a39('0x35')]=_0x25d4dd[_0x1a39('0x35')]||0x96;this[_0x1a39('0x36')]=_0x25d4dd[_0x1a39('0x36')]||0x3;this[_0x1a39('0x37')]=_0x25d4dd['dialDropRetryFrequency']||0x96;this[_0x1a39('0x38')]=_0x25d4dd[_0x1a39('0x38')]||0x3;this['dialAbandonedRetryFrequency']=_0x25d4dd['dialAbandonedRetryFrequency']||0x96;this[_0x1a39('0x39')]=_0x25d4dd[_0x1a39('0x39')]||0x3;this[_0x1a39('0x3a')]=_0x25d4dd[_0x1a39('0x3a')]||0x96;this[_0x1a39('0x3b')]=_0x25d4dd[_0x1a39('0x3b')]||0x3;this[_0x1a39('0x3c')]=_0x25d4dd[_0x1a39('0x3c')]||0x96;this[_0x1a39('0x3d')]=_0x25d4dd['callAdditionalPhoneAfterMin']||0x3;this[_0x1a39('0x3e')]=_0x25d4dd[_0x1a39('0x3e')]||0x4;this['Trunk']=_0x25d4dd[_0x1a39('0x3f')]?_0x25d4dd[_0x1a39('0x3f')]:undefined;this['TrunkBackup']=_0x25d4dd[_0x1a39('0x40')]?_0x25d4dd[_0x1a39('0x40')]:undefined;this[_0x1a39('0x41')]=_0x25d4dd[_0x1a39('0x41')]||undefined;this[_0x1a39('0x42')]=_0x25d4dd[_0x1a39('0x42')]?_0x25d4dd['Interval']:undefined;this[_0x1a39('0x43')]=_0x25d4dd[_0x1a39('0x43')]||'DESC';this[_0x1a39('0x44')]=_0x25d4dd[_0x1a39('0x44')]||undefined;this[_0x1a39('0x45')]=_0x25d4dd[_0x1a39('0x45')]||undefined;this['strategy']=strategy[_0x25d4dd[_0x1a39('0x46')]]||_0x1a39('0xa');this['queueStatusComplete']=!![];this[_0x1a39('0x47')]=_0x25d4dd[_0x1a39('0x47')]||![];this[_0x1a39('0x48')]=_0x25d4dd[_0x1a39('0x48')];this['dialAMDGreeting']=_0x25d4dd['dialAMDGreeting'];this[_0x1a39('0x49')]=_0x25d4dd[_0x1a39('0x49')];this[_0x1a39('0x4a')]=_0x25d4dd[_0x1a39('0x4a')];this['dialAMDMinWordLength']=_0x25d4dd[_0x1a39('0x4b')];this[_0x1a39('0x4c')]=_0x25d4dd[_0x1a39('0x4c')];this[_0x1a39('0x4d')]=_0x25d4dd[_0x1a39('0x4d')];this[_0x1a39('0x4e')]=_0x25d4dd[_0x1a39('0x4e')];this[_0x1a39('0x4f')]=_0x25d4dd['dialAMDMaximumWordLength'];this[_0x1a39('0x50')]=0x0;this[_0x1a39('0x51')]=0x0;this[_0x1a39('0x52')]=_0x25d4dd['timeout'];this[_0x1a39('0x53')]=0x0;this[_0x1a39('0x54')]=0x0;this['outboundNoAnswerCallsDay']=0x0;this[_0x1a39('0x55')]=0x0;this[_0x1a39('0x56')]=0x0;this[_0x1a39('0x57')]=0x0;this[_0x1a39('0x58')]=0x0;this[_0x1a39('0x59')]=0x0;this['outboundOriginateFailureCallsDay']=0x0;this[_0x1a39('0x5a')]=0x0;this[_0x1a39('0x5b')]=0x0;this[_0x1a39('0x5c')]=0x0;this[_0x1a39('0x5d')]=0x0;this[_0x1a39('0x5e')]=0x0;this[_0x1a39('0x5f')]=undefined;this[_0x1a39('0x60')]=undefined;this[_0x1a39('0x61')]=undefined;this[_0x1a39('0x62')]=1.05;this['predictiveIntervalTotalCalls']=0x0;this[_0x1a39('0x63')]=0x0;this[_0x1a39('0x64')]=0x0;this['predictiveIntervalDroppedCallsTimeout']=0x0;this[_0x1a39('0x65')]=0x0;this[_0x1a39('0x66')]=0x0;this[_0x1a39('0x67')]=0x0;this['predictiveIntervalAvailable']=0x0;this['predictiveIntervalMaxThreshold']=_0x25d4dd[_0x1a39('0x68')]||0x14;this[_0x1a39('0x69')]=_0x25d4dd[_0x1a39('0x68')]||0xa;this['predictiveIntervalErlangCalls']=0x0;this[_0x1a39('0x6a')]=0x0;this['predictiveIntervalHitRate']=0x1;this[_0x1a39('0x6b')]=0x0;this[_0x1a39('0x6c')]=0x0;this[_0x1a39('0x6d')]=0x0;this[_0x1a39('0x6e')]=0x0;this[_0x1a39('0x6f')]=_0x25d4dd[_0x1a39('0x6f')]||0x1e;this[_0x1a39('0x70')]=_0x25d4dd['dialRecallInQueue']||![];this[_0x1a39('0x71')]=!!_0x25d4dd['dialPreviewAutoRecallMe']||![];this['dialPreviewRecallmeReminder']=!!_0x25d4dd[_0x1a39('0x72')]||![];this['dialQueueProject2']=_0x25d4dd[_0x1a39('0x73')]||undefined;this[_0x1a39('0x74')]=_0x25d4dd[_0x1a39('0x74')]||![];this[_0x1a39('0x75')]=_0x25d4dd['dialAgiAfterHangupAgent']||![];this[_0x1a39('0xd')]=monitorFormat[_0x25d4dd[_0x1a39('0xd')]]?monitorFormat[_0x25d4dd[_0x1a39('0xd')]]:undefined;this[_0x1a39('0x76')]=_0x25d4dd['mandatoryDisposition']||![];this['mandatoryDispositionPause']=_0x25d4dd[_0x1a39('0x77')]?_0x25d4dd[_0x1a39('0x77')]:undefined;}module[_0x1a39('0x78')]=VoiceQueue;
\ No newline at end of file
+var _0x516a=['dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','Trunk','TrunkBackup','dialPrefix','Interval','dialOrderByScheduledAt','DESC','dialRandomLastDigitCallerIdNumber','dialCutDigit','strategy','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','outboundRejectCallsDay','pTalking','timeout','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundDropCallsDayTimeout','outboundAbandonedDay','startPredictive','handlePredictive','predictiveIntervalMultiplicativeFactor','predictiveIntervalTotalCalls','predictiveIntervalAnsweredCalls','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalMaxThreshold','dialPredictiveIntervalMaxThreshold','predictiveIntervalMinThreshold','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','dialRecallMeTimeout','dialRecallInQueue','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','dialQueueProject2','dialAgiAfterHangupClient','dialAgiAfterHangupAgent','mandatoryDisposition','mandatoryDispositionPause','exports','unknown','inuse','busy','invalid','unavailable','ringing','ringinuse','onhold','wav','wav49','rrmemory','roundrobin','name','monitor_format','type','inbound','talking','total','answered','sumDuration','sumHoldTime','sumBillable','abandoned','loggedIn','acw','acwTimeout','autopause','sendMessageOneNotActive','message','dialTimezone','dialGlobalInterval','dialActive','dialMethod','progressive','dialLimitChannel','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dropRate','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','anonymous','dialOriginateCallerIdNumber','dialOriginateTimeout','dialQueueOptions','dialQueueTimeout','dialQueueProject','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency'];(function(_0x414743,_0x2e6d87){var _0x39d57d=function(_0xb932fa){while(--_0xb932fa){_0x414743['push'](_0x414743['shift']());}};_0x39d57d(++_0x2e6d87);}(_0x516a,0x1bb));var _0xa516=function(_0xfd09c2,_0x96032f){_0xfd09c2=_0xfd09c2-0x0;var _0x12142f=_0x516a[_0xfd09c2];return _0x12142f;};'use strict';var statusDesc=[_0xa516('0x0'),'not_inuse',_0xa516('0x1'),_0xa516('0x2'),_0xa516('0x3'),_0xa516('0x4'),_0xa516('0x5'),_0xa516('0x6'),_0xa516('0x7')];var monitorFormat={'wav':_0xa516('0x8'),'wav49':_0xa516('0x9'),'gsm':'gsm'};var strategy={'rrmemory':_0xa516('0xa'),'roundrobin':_0xa516('0xb')};function VoiceQueue(_0x630a53){this['id']=_0x630a53['id']||0x0;this['name']=_0x630a53[_0xa516('0xc')]||'';this[_0xa516('0xd')]=_0x630a53[_0xa516('0xd')]||'';this[_0xa516('0xe')]=_0x630a53[_0xa516('0xe')]||_0xa516('0xf');this['waiting']=0x0;this[_0xa516('0x10')]=0x0;this[_0xa516('0x11')]=0x0;this[_0xa516('0x12')]=0x0;this[_0xa516('0x13')]=0x0;this[_0xa516('0x14')]=0x0;this[_0xa516('0x15')]=0x0;this['unmanaged']=0x0;this[_0xa516('0x16')]=0x0;this[_0xa516('0x17')]=0x0;this['available']=0x0;this[_0xa516('0x18')]=_0x630a53['acw']||![];this[_0xa516('0x19')]=_0x630a53['acwTimeout']||0xa;this[_0xa516('0x1a')]=_0x630a53[_0xa516('0x1a')]||'no';this[_0xa516('0x1b')]=!![];this[_0xa516('0x1c')]='';this['originated']=0x0;this['temp']=0x0;this[_0xa516('0x1d')]=_0x630a53[_0xa516('0x1d')]||null;this[_0xa516('0x1e')]=_0x630a53[_0xa516('0x1e')]?_0x630a53[_0xa516('0x1e')]:null;this[_0xa516('0x1f')]=_0x630a53[_0xa516('0x1f')];this[_0xa516('0x20')]=_0x630a53[_0xa516('0x20')]||_0xa516('0x21');this[_0xa516('0x22')]=_0x630a53[_0xa516('0x22')]||0x0;this['dialLimitQueue']=_0x630a53[_0xa516('0x23')]||0x0;this[_0xa516('0x24')]=_0x630a53[_0xa516('0x24')]||0x1;this[_0xa516('0x25')]=_0x630a53['dialPredictiveOptimization']||_0xa516('0x26');this['dialPredictiveOptimizationPercentage']=_0x630a53[_0xa516('0x27')]||0.03;this[_0xa516('0x28')]=_0x630a53[_0xa516('0x28')]||0x258;this['dialOriginateCallerIdName']=_0x630a53[_0xa516('0x29')]||_0xa516('0x2a');this[_0xa516('0x2b')]=_0x630a53[_0xa516('0x2b')]||_0xa516('0x2a');this[_0xa516('0x2c')]=_0x630a53[_0xa516('0x2c')]||0x1e;this['dialQueueOptions']=_0x630a53[_0xa516('0x2d')]||'tTxX';this[_0xa516('0x2e')]=_0x630a53[_0xa516('0x2e')]||0x3;this[_0xa516('0x2f')]=_0x630a53[_0xa516('0x2f')]||undefined;this[_0xa516('0x30')]=_0x630a53['dialCongestionMaxRetry']||0x3;this[_0xa516('0x31')]=_0x630a53[_0xa516('0x31')]||0x96;this[_0xa516('0x32')]=_0x630a53['dialBusyMaxRetry']||0x3;this[_0xa516('0x33')]=_0x630a53[_0xa516('0x33')]||0x96;this[_0xa516('0x34')]=_0x630a53[_0xa516('0x34')]||0x3;this[_0xa516('0x35')]=_0x630a53[_0xa516('0x35')]||0x96;this[_0xa516('0x36')]=_0x630a53[_0xa516('0x36')]||0x3;this[_0xa516('0x37')]=_0x630a53[_0xa516('0x37')]||0x96;this['dialDropMaxRetry']=_0x630a53[_0xa516('0x38')]||0x3;this[_0xa516('0x39')]=_0x630a53[_0xa516('0x39')]||0x96;this['dialAbandonedMaxRetry']=_0x630a53['dialAbandonedMaxRetry']||0x3;this['dialAbandonedRetryFrequency']=_0x630a53[_0xa516('0x3a')]||0x96;this[_0xa516('0x3b')]=_0x630a53['dialMachineMaxRetry']||0x3;this['dialMachineRetryFrequency']=_0x630a53[_0xa516('0x3c')]||0x96;this[_0xa516('0x3d')]=_0x630a53['dialAgentRejectMaxRetry']||0x3;this[_0xa516('0x3e')]=_0x630a53['dialAgentRejectRetryFrequency']||0x96;this['callAdditionalPhoneAfterMin']=_0x630a53[_0xa516('0x3f')]||0x3;this[_0xa516('0x40')]=_0x630a53[_0xa516('0x40')]||0x4;this[_0xa516('0x41')]=_0x630a53['Trunk']?_0x630a53[_0xa516('0x41')]:undefined;this[_0xa516('0x42')]=_0x630a53[_0xa516('0x42')]?_0x630a53[_0xa516('0x42')]:undefined;this[_0xa516('0x43')]=_0x630a53[_0xa516('0x43')]||undefined;this[_0xa516('0x44')]=_0x630a53['Interval']?_0x630a53['Interval']:undefined;this['dialOrderByScheduledAt']=_0x630a53[_0xa516('0x45')]||_0xa516('0x46');this[_0xa516('0x47')]=_0x630a53[_0xa516('0x47')]||undefined;this[_0xa516('0x48')]=_0x630a53[_0xa516('0x48')]||undefined;this['strategy']=strategy[_0x630a53[_0xa516('0x49')]]||'rrmemory';this['queueStatusComplete']=!![];this[_0xa516('0x4a')]=_0x630a53[_0xa516('0x4a')]||![];this[_0xa516('0x4b')]=_0x630a53[_0xa516('0x4b')];this[_0xa516('0x4c')]=_0x630a53['dialAMDGreeting'];this[_0xa516('0x4d')]=_0x630a53['dialAMDAfterGreetingSilence'];this[_0xa516('0x4e')]=_0x630a53[_0xa516('0x4e')];this[_0xa516('0x4f')]=_0x630a53[_0xa516('0x4f')];this[_0xa516('0x50')]=_0x630a53[_0xa516('0x50')];this[_0xa516('0x51')]=_0x630a53['dialAMDMaximumNumberOfWords'];this['dialAMDSilenceThreshold']=_0x630a53[_0xa516('0x52')];this[_0xa516('0x53')]=_0x630a53[_0xa516('0x53')];this[_0xa516('0x54')]=0x0;this[_0xa516('0x55')]=0x0;this[_0xa516('0x56')]=_0x630a53[_0xa516('0x56')];this['outboundAnswerCallsDay']=0x0;this[_0xa516('0x57')]=0x0;this[_0xa516('0x58')]=0x0;this['outboundBusyCallsDay']=0x0;this[_0xa516('0x59')]=0x0;this[_0xa516('0x5a')]=0x0;this['outboundUnknownCallsDay']=0x0;this[_0xa516('0x5b')]=0x0;this[_0xa516('0x5c')]=0x0;this['outboundDropCallsDayCallersExit']=0x0;this[_0xa516('0x5d')]=0x0;this['outboundDropCallsDayACS']=0x0;this['outboundReCallsDay']=0x0;this[_0xa516('0x5e')]=0x0;this['startProgressive']=undefined;this[_0xa516('0x5f')]=undefined;this[_0xa516('0x60')]=undefined;this[_0xa516('0x61')]=1.05;this[_0xa516('0x62')]=0x0;this[_0xa516('0x63')]=0x0;this[_0xa516('0x64')]=0x0;this[_0xa516('0x65')]=0x0;this[_0xa516('0x66')]=0x0;this[_0xa516('0x67')]=0x0;this[_0xa516('0x68')]=0x0;this[_0xa516('0x69')]=0x0;this[_0xa516('0x6a')]=_0x630a53[_0xa516('0x6b')]||0x14;this[_0xa516('0x6c')]=_0x630a53[_0xa516('0x6b')]||0xa;this[_0xa516('0x6d')]=0x0;this[_0xa516('0x6e')]=0x0;this[_0xa516('0x6f')]=0x1;this[_0xa516('0x70')]=0x0;this[_0xa516('0x71')]=0x0;this[_0xa516('0x72')]=0x0;this[_0xa516('0x73')]=0x0;this[_0xa516('0x74')]=_0x630a53[_0xa516('0x74')]||0x1e;this[_0xa516('0x75')]=_0x630a53['dialRecallInQueue']||![];this[_0xa516('0x76')]=!!_0x630a53[_0xa516('0x76')]||![];this['dialPreviewRecallmeReminder']=!!_0x630a53[_0xa516('0x77')]||![];this['dialQueueProject2']=_0x630a53[_0xa516('0x78')]||undefined;this[_0xa516('0x79')]=_0x630a53[_0xa516('0x79')]||![];this[_0xa516('0x7a')]=_0x630a53['dialAgiAfterHangupAgent']||![];this[_0xa516('0xd')]=monitorFormat[_0x630a53[_0xa516('0xd')]]?monitorFormat[_0x630a53['monitor_format']]:undefined;this[_0xa516('0x7b')]=_0x630a53['mandatoryDisposition']||![];this[_0xa516('0x7c')]=_0x630a53[_0xa516('0x7c')]?_0x630a53['mandatoryDispositionPause']:undefined;}module[_0xa516('0x7d')]=VoiceQueue;
\ No newline at end of file
index 4110271..9af47ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58a1=['remoteUri','serverUrl','Configurations','exports','name','username','accessKey'];(function(_0x4565bf,_0x5ad9d6){var _0x5610ba=function(_0x170988){while(--_0x170988){_0x4565bf['push'](_0x4565bf['shift']());}};_0x5610ba(++_0x5ad9d6);}(_0x58a1,0x90));var _0x158a=function(_0x774a25,_0x46f547){_0x774a25=_0x774a25-0x0;var _0x3dc2fd=_0x58a1[_0x774a25];return _0x3dc2fd;};'use strict';function VtigerAccount(_0x122952){this['id']=_0x122952['id']||0x0;this[_0x158a('0x0')]=_0x122952[_0x158a('0x0')]||'';this[_0x158a('0x1')]=_0x122952['username']||'';this[_0x158a('0x2')]=_0x122952[_0x158a('0x2')]||'';this[_0x158a('0x3')]=_0x122952[_0x158a('0x3')]||'';this[_0x158a('0x4')]=_0x122952['serverUrl']||'';this[_0x158a('0x5')]=_0x122952['Configurations']||{};}module[_0x158a('0x6')]=VtigerAccount;
\ No newline at end of file
+var _0xf5bc=['serverUrl','Configurations','exports','name','accessKey','remoteUri'];(function(_0x5d09d9,_0x181abf){var _0x7ce182=function(_0x369277){while(--_0x369277){_0x5d09d9['push'](_0x5d09d9['shift']());}};_0x7ce182(++_0x181abf);}(_0xf5bc,0xb1));var _0xcf5b=function(_0x167cc1,_0x56ef5a){_0x167cc1=_0x167cc1-0x0;var _0x10bc4b=_0xf5bc[_0x167cc1];return _0x10bc4b;};'use strict';function VtigerAccount(_0x55a868){this['id']=_0x55a868['id']||0x0;this[_0xcf5b('0x0')]=_0x55a868['name']||'';this['username']=_0x55a868['username']||'';this[_0xcf5b('0x1')]=_0x55a868['accessKey']||'';this[_0xcf5b('0x2')]=_0x55a868[_0xcf5b('0x2')]||'';this['serverUrl']=_0x55a868[_0xcf5b('0x3')]||'';this[_0xcf5b('0x4')]=_0x55a868['Configurations']||{};}module[_0xcf5b('0x5')]=VtigerAccount;
\ No newline at end of file
index a1c250f..160acb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f03=['name','username','token','remoteUri','authType','type','integrationTab','serverUrl','Configurations','exports'];(function(_0x453e38,_0x48864b){var _0x75894e=function(_0x1af443){while(--_0x1af443){_0x453e38['push'](_0x453e38['shift']());}};_0x75894e(++_0x48864b);}(_0x4f03,0x64));var _0x34f0=function(_0x879e31,_0x139d02){_0x879e31=_0x879e31-0x0;var _0x3467e8=_0x4f03[_0x879e31];return _0x3467e8;};'use strict';function ZendeskAccount(_0x556a78){this['id']=_0x556a78['id']||0x0;this['name']=_0x556a78[_0x34f0('0x0')]||'';this[_0x34f0('0x1')]=_0x556a78[_0x34f0('0x1')]||'';this['password']=_0x556a78['password']||'';this[_0x34f0('0x2')]=_0x556a78[_0x34f0('0x2')]||'';this[_0x34f0('0x3')]=_0x556a78[_0x34f0('0x3')]||'';this['authType']=_0x556a78[_0x34f0('0x4')]||'';this[_0x34f0('0x5')]=_0x556a78[_0x34f0('0x5')]||_0x34f0('0x6');this['serverUrl']=_0x556a78[_0x34f0('0x7')]||'';this[_0x34f0('0x8')]=_0x556a78['Configurations']||{};}module[_0x34f0('0x9')]=ZendeskAccount;
\ No newline at end of file
+var _0x6fd6=['authType','type','integrationTab','serverUrl','Configurations','exports','name','username','password','remoteUri'];(function(_0x106e7c,_0x4e7435){var _0x35e1e2=function(_0x320ae4){while(--_0x320ae4){_0x106e7c['push'](_0x106e7c['shift']());}};_0x35e1e2(++_0x4e7435);}(_0x6fd6,0x196));var _0x66fd=function(_0x3d09f7,_0x54e37b){_0x3d09f7=_0x3d09f7-0x0;var _0x577966=_0x6fd6[_0x3d09f7];return _0x577966;};'use strict';function ZendeskAccount(_0x290636){this['id']=_0x290636['id']||0x0;this[_0x66fd('0x0')]=_0x290636[_0x66fd('0x0')]||'';this[_0x66fd('0x1')]=_0x290636[_0x66fd('0x1')]||'';this[_0x66fd('0x2')]=_0x290636[_0x66fd('0x2')]||'';this['token']=_0x290636['token']||'';this[_0x66fd('0x3')]=_0x290636['remoteUri']||'';this[_0x66fd('0x4')]=_0x290636[_0x66fd('0x4')]||'';this['type']=_0x290636[_0x66fd('0x5')]||_0x66fd('0x6');this[_0x66fd('0x7')]=_0x290636[_0x66fd('0x7')]||'';this[_0x66fd('0x8')]=_0x290636['Configurations']||{};}module[_0x66fd('0x9')]=ZendeskAccount;
\ No newline at end of file
index 9c9da75..6644f06 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2cf7=['exports','name','description','host','clientId','clientSecret','serverUrl','code','refreshToken','Configurations'];(function(_0x2d0cbe,_0x27f915){var _0x49011a=function(_0x1743ad){while(--_0x1743ad){_0x2d0cbe['push'](_0x2d0cbe['shift']());}};_0x49011a(++_0x27f915);}(_0x2cf7,0x1b9));var _0x72cf=function(_0x5c2a2b,_0x22c94e){_0x5c2a2b=_0x5c2a2b-0x0;var _0x19921f=_0x2cf7[_0x5c2a2b];return _0x19921f;};'use strict';function ZohoAccount(_0x145a1a){this['id']=_0x145a1a['id']||0x0;this[_0x72cf('0x0')]=_0x145a1a[_0x72cf('0x0')]||'';this[_0x72cf('0x1')]=_0x145a1a['description']||'';this[_0x72cf('0x2')]=_0x145a1a[_0x72cf('0x2')]||'';this['zone']=_0x145a1a['zone']||'';this[_0x72cf('0x3')]=_0x145a1a['clientId']||'';this[_0x72cf('0x4')]=_0x145a1a[_0x72cf('0x4')]||'';this[_0x72cf('0x5')]=_0x145a1a[_0x72cf('0x5')]||'';this[_0x72cf('0x6')]=_0x145a1a[_0x72cf('0x6')]||'';this[_0x72cf('0x7')]=_0x145a1a[_0x72cf('0x7')]||'';this[_0x72cf('0x8')]=_0x145a1a['Configurations']||{};}module[_0x72cf('0x9')]=ZohoAccount;
\ No newline at end of file
+var _0xaf93=['clientSecret','serverUrl','code','refreshToken','Configurations','name','description','host','zone','clientId'];(function(_0xf5d71c,_0x2613a6){var _0x5af672=function(_0x191f52){while(--_0x191f52){_0xf5d71c['push'](_0xf5d71c['shift']());}};_0x5af672(++_0x2613a6);}(_0xaf93,0x109));var _0x3af9=function(_0x40be9d,_0x9294ce){_0x40be9d=_0x40be9d-0x0;var _0x4fb656=_0xaf93[_0x40be9d];return _0x4fb656;};'use strict';function ZohoAccount(_0x4fb68e){this['id']=_0x4fb68e['id']||0x0;this['name']=_0x4fb68e[_0x3af9('0x0')]||'';this[_0x3af9('0x1')]=_0x4fb68e[_0x3af9('0x1')]||'';this['host']=_0x4fb68e[_0x3af9('0x2')]||'';this[_0x3af9('0x3')]=_0x4fb68e[_0x3af9('0x3')]||'';this['clientId']=_0x4fb68e[_0x3af9('0x4')]||'';this[_0x3af9('0x5')]=_0x4fb68e[_0x3af9('0x5')]||'';this['serverUrl']=_0x4fb68e[_0x3af9('0x6')]||'';this[_0x3af9('0x7')]=_0x4fb68e[_0x3af9('0x7')]||'';this[_0x3af9('0x8')]=_0x4fb68e['refreshToken']||'';this[_0x3af9('0x9')]=_0x4fb68e['Configurations']||{};}module['exports']=ZohoAccount;
\ No newline at end of file
index 184fd08..ec71ac5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x63a5=['number','exports','util','lodash','moment','isNil','string','queue','name','type','campaigntype','dialAnswer','membername','Agent','channelAgent','SIP/%s','calleridname','Contact','phone','lastName','active','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','countdropretry','countabandonedretry','countmachineretry','callback','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','originatecalleridname','prototype','getCaller','format','\x22%s\x22\x20<%s>'];(function(_0x57b2ee,_0xc6c9b4){var _0x59fda9=function(_0x2c32f3){while(--_0x2c32f3){_0x57b2ee['push'](_0x57b2ee['shift']());}};_0x59fda9(++_0xc6c9b4);}(_0x63a5,0x18e));var _0x563a=function(_0x5c2e3e,_0x26ecd3){_0x5c2e3e=_0x5c2e3e-0x0;var _0x53f64a=_0x63a5[_0x5c2e3e];return _0x53f64a;};'use strict';var util=require(_0x563a('0x0'));var _=require(_0x563a('0x1'));var moment=require(_0x563a('0x2'));function checkNameSurname(_0x58625e,_0x30e9d5,_0x493973){var _0x922339='';if(!_[_0x563a('0x3')](_0x30e9d5)&&_0x563a('0x4')===typeof _0x30e9d5){_0x922339+=_0x30e9d5;}if(!_[_0x563a('0x3')](_0x493973)&&'string'===typeof _0x493973){_0x922339+='\x20'+_0x493973;}if(_0x922339!==''){return _0x922339;}return _0x58625e;}function Action(_0x4cc9e5,_0x1fdcb0,_0x5a6458,_0x2662f7,_0x4f89b4){this['uniqueid']=_0x5a6458||undefined;this['idContact']=_0x4cc9e5['id'];this[_0x563a('0x5')]=_0x1fdcb0[_0x563a('0x6')];this[_0x563a('0x7')]=_0x1fdcb0[_0x563a('0x7')];this[_0x563a('0x8')]=_0x563a('0x5');this[_0x563a('0x9')]=![];this[_0x563a('0xa')]=_[_0x563a('0x3')](_0x4cc9e5[_0x563a('0xb')])?undefined:_0x4cc9e5[_0x563a('0xb')][_0x563a('0x6')];this[_0x563a('0xc')]=this[_0x563a('0xa')]?util['format'](_0x563a('0xd'),this[_0x563a('0xa')]):_0x2662f7||undefined;this[_0x563a('0xe')]=checkNameSurname(_0x4cc9e5[_0x563a('0xf')][_0x563a('0x10')],_0x4cc9e5[_0x563a('0xf')]['firstName'],_0x4cc9e5[_0x563a('0xf')][_0x563a('0x11')]);this[_0x563a('0x12')]=_0x4cc9e5[_0x563a('0x12')]||![];this['calleridnum']=_0x4cc9e5['phone'];this[_0x563a('0x13')]=_0x4cc9e5[_0x563a('0x13')];this['countbusyretry']=_0x4cc9e5[_0x563a('0x14')]||0x0;this[_0x563a('0x15')]=_0x4cc9e5[_0x563a('0x15')]||0x0;this[_0x563a('0x16')]=_0x4cc9e5['countnoanswerretry']||0x0;this['countglobal']=(_0x4cc9e5[_0x563a('0x14')]||0x0)+(_0x4cc9e5[_0x563a('0x15')]||0x0)+(_0x4cc9e5[_0x563a('0x16')]||0x0)+(_0x4cc9e5['countnosuchnumberretry']||0x0)+(_0x4cc9e5['countdropretry']||0x0)+(_0x4cc9e5['countabandonedretry']||0x0)+(_0x4cc9e5['countmachineretry']||0x0)+(_0x4cc9e5[_0x563a('0x17')]||0x0);this[_0x563a('0x18')]=_0x4cc9e5[_0x563a('0x18')]||0x0;this[_0x563a('0x19')]=_0x4cc9e5['countdropretry']||0x0;this['countabandonedretry']=_0x4cc9e5[_0x563a('0x1a')]||0x0;this[_0x563a('0x1b')]=_0x4cc9e5[_0x563a('0x1b')]||0x0;this[_0x563a('0x17')]=_0x4cc9e5[_0x563a('0x17')]||0x0;this[_0x563a('0x1c')]=_0x4cc9e5[_0x563a('0x1c')];this[_0x563a('0x1d')]=_0x4cc9e5['callbackuniqueid'];this[_0x563a('0x1e')]=_0x4cc9e5['callbackat'];this[_0x563a('0x1f')]=_0x4cc9e5[_0x563a('0x1f')];this[_0x563a('0x20')]=_0x4cc9e5[_0x563a('0x20')];this[_0x563a('0x21')]=_0x4cc9e5[_0x563a('0x21')];this[_0x563a('0x22')]=_[_0x563a('0x3')](_0x4cc9e5['Agent'])?_0x4cc9e5[_0x563a('0x22')]:_0x4cc9e5[_0x563a('0xb')]['id'];this[_0x563a('0x23')]=_0x4cc9e5[_0x563a('0x23')];this[_0x563a('0x24')]='';this[_0x563a('0x25')]='';}Action[_0x563a('0x26')][_0x563a('0x27')]=function(){return util[_0x563a('0x28')](_0x563a('0x29'),this[_0x563a('0xe')],this[_0x563a('0x2a')]);};module[_0x563a('0x2b')]=Action;
\ No newline at end of file
+var _0x583c=['calleridname','Contact','phone','firstName','active','calleridnum','scheduledat','countbusyretry','countcongestionretry','countnoanswerretry','countglobal','countnosuchnumberretry','countabandonedretry','countmachineretry','countagentrejectretry','countdropretry','callbackuniqueid','callbackat','recallme','ContactId','ListId','UserId','VoiceQueueId','originatecalleridnum','prototype','getCaller','\x22%s\x22\x20<%s>','number','exports','util','lodash','moment','isNil','string','idContact','queue','type','campaigntype','dialAnswer','Agent','name','channelAgent','format','SIP/%s','membername'];(function(_0x1e8ba4,_0x38fe06){var _0x4a2de3=function(_0x42fcca){while(--_0x42fcca){_0x1e8ba4['push'](_0x1e8ba4['shift']());}};_0x4a2de3(++_0x38fe06);}(_0x583c,0x12b));var _0xc583=function(_0x299784,_0xb0918f){_0x299784=_0x299784-0x0;var _0x5ab008=_0x583c[_0x299784];return _0x5ab008;};'use strict';var util=require(_0xc583('0x0'));var _=require(_0xc583('0x1'));var moment=require(_0xc583('0x2'));function checkNameSurname(_0x30ca4e,_0x4e742d,_0x38c7b5){var _0x23e62a='';if(!_['isNil'](_0x4e742d)&&'string'===typeof _0x4e742d){_0x23e62a+=_0x4e742d;}if(!_[_0xc583('0x3')](_0x38c7b5)&&_0xc583('0x4')===typeof _0x38c7b5){_0x23e62a+='\x20'+_0x38c7b5;}if(_0x23e62a!==''){return _0x23e62a;}return _0x30ca4e;}function Action(_0x5b7292,_0xd3a750,_0x365ed6,_0x2719df,_0x1dd37c){this['uniqueid']=_0x365ed6||undefined;this[_0xc583('0x5')]=_0x5b7292['id'];this[_0xc583('0x6')]=_0xd3a750['name'];this[_0xc583('0x7')]=_0xd3a750[_0xc583('0x7')];this[_0xc583('0x8')]=_0xc583('0x6');this[_0xc583('0x9')]=![];this['membername']=_[_0xc583('0x3')](_0x5b7292[_0xc583('0xa')])?undefined:_0x5b7292['Agent'][_0xc583('0xb')];this[_0xc583('0xc')]=this['membername']?util[_0xc583('0xd')](_0xc583('0xe'),this[_0xc583('0xf')]):_0x2719df||undefined;this[_0xc583('0x10')]=checkNameSurname(_0x5b7292[_0xc583('0x11')][_0xc583('0x12')],_0x5b7292[_0xc583('0x11')][_0xc583('0x13')],_0x5b7292[_0xc583('0x11')]['lastName']);this[_0xc583('0x14')]=_0x5b7292['active']||![];this[_0xc583('0x15')]=_0x5b7292[_0xc583('0x12')];this['scheduledat']=_0x5b7292[_0xc583('0x16')];this[_0xc583('0x17')]=_0x5b7292['countbusyretry']||0x0;this[_0xc583('0x18')]=_0x5b7292[_0xc583('0x18')]||0x0;this['countnoanswerretry']=_0x5b7292[_0xc583('0x19')]||0x0;this[_0xc583('0x1a')]=(_0x5b7292[_0xc583('0x17')]||0x0)+(_0x5b7292[_0xc583('0x18')]||0x0)+(_0x5b7292['countnoanswerretry']||0x0)+(_0x5b7292[_0xc583('0x1b')]||0x0)+(_0x5b7292['countdropretry']||0x0)+(_0x5b7292[_0xc583('0x1c')]||0x0)+(_0x5b7292[_0xc583('0x1d')]||0x0)+(_0x5b7292[_0xc583('0x1e')]||0x0);this[_0xc583('0x1b')]=_0x5b7292[_0xc583('0x1b')]||0x0;this[_0xc583('0x1f')]=_0x5b7292[_0xc583('0x1f')]||0x0;this[_0xc583('0x1c')]=_0x5b7292[_0xc583('0x1c')]||0x0;this[_0xc583('0x1d')]=_0x5b7292[_0xc583('0x1d')]||0x0;this[_0xc583('0x1e')]=_0x5b7292[_0xc583('0x1e')]||0x0;this['callback']=_0x5b7292['callback'];this[_0xc583('0x20')]=_0x5b7292[_0xc583('0x20')];this[_0xc583('0x21')]=_0x5b7292['callbackat'];this[_0xc583('0x22')]=_0x5b7292[_0xc583('0x22')];this[_0xc583('0x23')]=_0x5b7292[_0xc583('0x23')];this[_0xc583('0x24')]=_0x5b7292['ListId'];this['UserId']=_[_0xc583('0x3')](_0x5b7292['Agent'])?_0x5b7292[_0xc583('0x25')]:_0x5b7292[_0xc583('0xa')]['id'];this[_0xc583('0x26')]=_0x5b7292[_0xc583('0x26')];this[_0xc583('0x27')]='';this['originatecalleridname']='';}Action[_0xc583('0x28')][_0xc583('0x29')]=function(){return util['format'](_0xc583('0x2a'),this['calleridname'],this[_0xc583('0x2b')]);};module[_0xc583('0x2c')]=Action;
\ No newline at end of file
index f91f361..cb51507 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalPauses','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','stringify','voice:queue:%s','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','format','emit','voice_queue_presence:remove','sendMessageOneNotActive','paused','NOT_ACTIVE','logger','\x20is\x20not\x20active','[CampaignPreview]\x20Campaign\x20Queue:\x20','syncCampaigns','hasOwnProperty','dialMethod','booked','clearZombieChannels','type','outbound','setMessage','dialPreviewAutoRecallMe','recallMe','clearZombieChannel','isNil','Queue','queue','originated:\x20','pTalking:\x20','dialAnswer','pick','contactId','UserId','ListId','Action','catch','No\x20such\x20channel','updateOriginated','decrementTalkink','[clearZombieChannel]','loggerError','size','getContactRecallMe','then','length','getDiff','scheduledat','Agent','voicePause','run','logger2','disableContact','starttime','logCustomer','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','createCustomerFinal','[HistoryRecallClose]','[getContactRecallMe]','IsNotLoggedIn','AGENTS_NOT_LOGGED','isActive','isTrunkReachable','TrunkBackup','TRUNK_IS_NOT_REACHABLE','ACTIVE','callProgressDetectingCustomer','countglobal','totalGlobal','custom:agentnosuchnumber','nosuchnumber','[callProgressDetectingCustomer][logNoSuch]','verifyAdditionalPhones','callAdditionalPhoneAfterMin','dialGlobalMaxRetry','cloneAction','Global','[callProgressDetectingCustomer][logNoSuchGlobal]','countnosuchnumberretry','rescheduleContact','unlockAgent','activeContact','linkedid','actioncountonusuch','idContact','incrementPreviewCounters','swapAdditionalPhones','ANSWER','YYYY-MM-DD\x20HH:mm:ss','responsetime','answertime','[syncHangup][talking][increment]','uniqueid','\x20Queue','buildObj','connect','acw','custom:agentConnectPreview','buildAcw','complete','[16]','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','crateCustomerReportQueue','talktime','BUSY','dialBusyRetryFrequency','busy','[callProgressDetectingCustomer][logBusy]','additional','countbusyretry','dialBusyMaxRetry','scheduledAt','NOANSWER','outboundNoAnswerCallsDay','NoAnswer','dialNoAnswerRetryFrequency','custom:agentnoanswer','noanswer','[callProgressDetectingCustomer][logNoAnswer]','[callProgressDetectingCustomer][logNoAnswerGlobal]','countnoanswerretry','dialNoAnswerMaxRetry','CONGESTION','countcongestionretry','dialCongestionRetryFrequency','congestion','[callProgressDetectingCustomer][logCongestion]','[callProgressDetectingCustomer][logCongestionGlobal]','dialCongestionMaxRetry','CANCEL','countagentrejectretry','dialAgentRejectRetryFrequency','agentreject','AgentReject','[callProgressDetectingCustomer][logAgentReject]','dialAgentRejectMaxRetry','ABANDONED','countabandonedretry','[callProgressDetectingCustomer][logAbandoned]','countabandonedetry','outboundUnknownCallsDay','countmachineretry','cause-txt','dialstatus','[callProgressDetectingCustomer][hangupInAMD]','custom:amd','amd','[callProgressDetectingCustomer][machine]','[default]','[Dialer][decrementTalkink][no\x20Hangup][Preview]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','destlinkedid','callProgressDetectingAgent','isUndefined','reason','logAgent','NoSuchNumber','createAgentHistory','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logBusy]','Congestion','[callProgressDetectingAgent][logCongestion]','AnswerAGI','[callProgressDetectingAgent][logAnswerAGI]','[callProgressDetectingAgent]','resolve','[swapAdditionalPhone]\x20','[incrementPreviewCounters]\x20','VoiceQueueId','Contact\x20is\x20undefined','lookAgent','isEmpty','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','custom:agentcalled','called','[Preview][execCall][failure]','Call\x20failed','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','status','SIP/%s','execRun','recallme','validateContact','isValid','phone','checkInBlack','[Preview][checkIsBlackList]','[Preview][getContactPreview]','Call\x20unsuccessful','[Preview][validateContact][Empty\x20Contact]','Empty\x20Contact','[Preview][validateContact][Empty\x20Campaign]','Empty\x20Campaign','[Preview][validateContact][Trunk\x20not\x20work]','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','\x20Trunk\x20Backup\x20is\x20not\x20active','Trunk\x20not\x20work','[Preview][validateContact][Campaign\x20Active]','\x20Not\x20Active','Is\x20Valid','execCall','SIP/%s/%s%s','dialPrefix','trim','dialCutDigit','substring','getCallerId','dialRandomLastDigitCallerIdNumber','getCallerIdRandom','dialOriginateCallerIdNumber','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','toLowerVariables','variablesAction','OriginateError','[originateFailure][logOriginateFailure]','syncNewExten','channel','actionid','logLookAgent','clone','isFailure','response','unlockContact','custom:agentringnoanswer','rejected','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','statedesc','dialQueueProject','transfer','[syncHangup][talking][transfer]','[syncHangup][talking][cause]','destuniqueid','addVariable','variables','filterKey','keys','value','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','exports','util','lodash','bluebird','md5','../../../config/environment','../../../config/logger','preview','actionPreview','./rpcDb','../rpc/cmHopperAdditionalPhone','./action','defaults','socket.io-emitter','redis','prototype','enqueue','tail','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','hangup','syncHangupRequest','dialend','syncDialEnd','newexten','varset','syncVarSet','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','name','strategy','answered','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','abandoned','waiting','loggedInDb','dialActive','dialOriginateCallerIdName','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS'];(function(_0x2e2681,_0x4089c1){var _0x368a64=function(_0x267262){while(--_0x267262){_0x2e2681['push'](_0x2e2681['shift']());}};_0x368a64(++_0x4089c1);}(_0xa9e0,0x123));var _0x0a9e=function(_0x49ca18,_0x5e6d05){_0x49ca18=_0x49ca18-0x0;var _0x145d54=_0xa9e0[_0x49ca18];return _0x145d54;};'use strict';var util=require(_0x0a9e('0x0'));var _=require(_0x0a9e('0x1'));var BPromise=require(_0x0a9e('0x2'));var uuid=require('uuid');var moment=require('moment');var md5=require(_0x0a9e('0x3'));var Redis=require('ioredis');var config=require(_0x0a9e('0x4'));var logger=require(_0x0a9e('0x5'))(_0x0a9e('0x6'));var loggerAction=require(_0x0a9e('0x5'))(_0x0a9e('0x7'));var ami=require('../ami');var rpcDb=require(_0x0a9e('0x8'));var cmHopperAdditionalPhone=require(_0x0a9e('0x9'));var Action=require(_0x0a9e('0xa'));var ut=require('./util/util');config['redis']=_[_0x0a9e('0xb')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x0a9e('0xc'))(new Redis(config[_0x0a9e('0xd')]));var Sequence=function(){};Sequence[_0x0a9e('0xe')][_0x0a9e('0xf')]=function(_0xfeb75b){this[_0x0a9e('0x10')]=this['tail']?this['tail']['finally'](_0xfeb75b):_0xfeb75b();};function Preview(_0x4cfe67){this[_0x0a9e('0x11')]=new Sequence();this[_0x0a9e('0x12')]=_0x4cfe67[_0x0a9e('0x13')];this[_0x0a9e('0x14')]=_0x4cfe67[_0x0a9e('0x14')];this[_0x0a9e('0x15')]={};this['agents']=_0x4cfe67[_0x0a9e('0x16')];this[_0x0a9e('0x17')]=0x0;ami['on'](_0x0a9e('0x18'),this[_0x0a9e('0x19')][_0x0a9e('0x1a')](this));ami['on'](_0x0a9e('0x1b'),this['syncHangup'][_0x0a9e('0x1a')](this));ami['on']('hanguprequest',this[_0x0a9e('0x1c')]['bind'](this));ami['on'](_0x0a9e('0x1d'),this[_0x0a9e('0x1e')]['bind'](this));ami['on'](_0x0a9e('0x1f'),this['syncNewExten'][_0x0a9e('0x1a')](this));ami['on'](_0x0a9e('0x20'),this[_0x0a9e('0x21')][_0x0a9e('0x1a')](this));ami['on'](_0x0a9e('0x22'),this[_0x0a9e('0x23')][_0x0a9e('0x1a')](this));ami['on'](_0x0a9e('0x24'),this[_0x0a9e('0x25')][_0x0a9e('0x1a')](this));this[_0x0a9e('0x26')](this[_0x0a9e('0x12')]);}function emit(_0x4bb1e3,_0x2c3407,_0x155cce){io['to'](_0x4bb1e3)['emit'](_0x2c3407,_0x155cce);}function emitCampaignPreview(_0x20f109){if(_0x20f109['type']==='outbound'){var _0x3a02e1={'id':_0x20f109['id'],'name':_0x20f109[_0x0a9e('0x27')],'strategy':_0x20f109[_0x0a9e('0x28')],'answered':_0x20f109[_0x0a9e('0x29')],'available':_0x20f109['available'],'loggedIn':_0x20f109[_0x0a9e('0x2a')],'pTalking':_0x20f109[_0x0a9e('0x2b')],'sumBillable':_0x20f109[_0x0a9e('0x2c')],'sumDuration':_0x20f109[_0x0a9e('0x2d')],'sumHoldTime':_0x20f109[_0x0a9e('0x2e')]||0x0,'talking':_0x20f109[_0x0a9e('0x2f')],'total':_0x20f109[_0x0a9e('0x30')],'type':_0x20f109['type'],'unmanaged':_0x20f109['unmanaged'],'abandoned':_0x20f109[_0x0a9e('0x31')],'waiting':_0x20f109[_0x0a9e('0x32')],'loggedInDb':_0x20f109[_0x0a9e('0x33')],'dialActive':_0x20f109[_0x0a9e('0x34')],'dialMethod':_0x20f109['dialMethod'],'dialOriginateCallerIdName':_0x20f109[_0x0a9e('0x35')],'dialOriginateCallerIdNumber':_0x20f109['dialOriginateCallerIdNumber'],'dialOriginateTimeout':_0x20f109[_0x0a9e('0x36')],'dialPrefix':_0x20f109['dialPrefix'],'outboundAnswerAgiCallsDay':_0x20f109[_0x0a9e('0x37')],'outboundAnswerCallsDay':_0x20f109[_0x0a9e('0x38')],'outboundBlacklistCallsDay':_0x20f109[_0x0a9e('0x39')],'outboundBusyCallsDay':_0x20f109[_0x0a9e('0x3a')],'outboundCongestionCallsDay':_0x20f109[_0x0a9e('0x3b')],'outboundDropCallsDayACS':_0x20f109[_0x0a9e('0x3c')],'outboundDropCallsDayCallersExit':_0x20f109[_0x0a9e('0x3d')],'outboundDropCallsDayTimeout':_0x20f109[_0x0a9e('0x3e')],'outboundNoAnswerCallsDay':_0x20f109['outboundNoAnswerCallsDay'],'outboundNoSuchCallsDay':_0x20f109[_0x0a9e('0x3f')],'outboundOriginateFailureCallsDay':_0x20f109[_0x0a9e('0x40')],'outboundReCallsDay':_0x20f109[_0x0a9e('0x41')],'outboundRejectCallsDay':_0x20f109[_0x0a9e('0x42')],'outboundUnknownCallsDay':_0x20f109['outboundUnknownCallsDay'],'outboundAbandonedCallsDay':_0x20f109[_0x0a9e('0x43')],'predictiveIntervalAnsweredCalls':_0x20f109[_0x0a9e('0x44')],'predictiveIntervalAvgHoldtime':_0x20f109[_0x0a9e('0x45')],'predictiveIntervalAvgTalktime':_0x20f109[_0x0a9e('0x46')],'predictiveIntervalDroppedCallsCallersExit':_0x20f109[_0x0a9e('0x47')],'predictiveIntervalDroppedCallsTimeout':_0x20f109[_0x0a9e('0x48')],'predictiveIntervalErlangCalls':_0x20f109[_0x0a9e('0x49')],'predictiveIntervalErlangCallsDroppedCalls':_0x20f109[_0x0a9e('0x4a')],'predictiveIntervalHitRate':_0x20f109[_0x0a9e('0x4b')],'predictiveIntervalMultiplicativeFactor':_0x20f109['predictiveIntervalMultiplicativeFactor'],'predictiveIntervalPauses':_0x20f109[_0x0a9e('0x4c')],'predictiveIntervalAvailable':_0x20f109['predictiveIntervalAvailable'],'predictiveIntervalTotalCalls':_0x20f109[_0x0a9e('0x4d')],'message':_0x20f109[_0x0a9e('0x4e')],'originated':_0x20f109[_0x0a9e('0x4f')],'erlangCalls':_0x20f109[_0x0a9e('0x50')],'erlangCallToSecond':_0x20f109[_0x0a9e('0x51')],'erlangAbandonmentRate':_0x20f109['erlangAbandonmentRate'],'erlangBusyFactor':_0x20f109[_0x0a9e('0x52')],'startPredictive':_0x20f109[_0x0a9e('0x53')],'startProgressive':_0x20f109[_0x0a9e('0x54')]};if(_0x20f109[_0x0a9e('0x55')]){_0x3a02e1[_0x0a9e('0x55')]={'id':_0x20f109[_0x0a9e('0x55')]['id'],'name':_0x20f109[_0x0a9e('0x55')][_0x0a9e('0x27')],'active':_0x20f109['Trunk'][_0x0a9e('0x56')],'callerid':_0x20f109['Trunk'][_0x0a9e('0x57')]};}if(_0x20f109[_0x0a9e('0x58')]){_0x3a02e1[_0x0a9e('0x58')]={'id':_0x20f109[_0x0a9e('0x58')]['id'],'name':_0x20f109['Interval'][_0x0a9e('0x27')]};}var _0xd1836d=md5(JSON[_0x0a9e('0x59')](_0x3a02e1));if(_0x20f109[_0x0a9e('0x3')]!==_0xd1836d){_0x20f109['md5']=_0xd1836d;emit(util['format'](_0x0a9e('0x5a'),_0x3a02e1['name']),_0x0a9e('0x5b'),_0x3a02e1);}}}function emitVoiceQueueChannelRemove(_0x3d9717){logger[_0x0a9e('0x5c')](_0x0a9e('0x5d'),JSON['stringify'](_0x3d9717));emit(util[_0x0a9e('0x5e')](_0x0a9e('0x5a'),_0x3d9717[_0x0a9e('0x27')]),'voice_queue_channel:remove',_0x3d9717);io[_0x0a9e('0x5f')](_0x0a9e('0x60'),_0x3d9717);}function notSendMessagesQueue(_0x289467){if(_0x289467['sendMessageOneNotActive']){if(_0x289467['originated']===0x0&&_0x289467[_0x0a9e('0x2b')]===0x0){_0x289467[_0x0a9e('0x61')]=![];_0x289467['available']=0x0;_0x289467[_0x0a9e('0x62')]=0x0;_0x289467[_0x0a9e('0x4e')]=_0x0a9e('0x63');ut[_0x0a9e('0x64')]('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x289467['name']+_0x0a9e('0x65'));}else{_0x289467[_0x0a9e('0x4e')]='IS_DISACTIVED';ut[_0x0a9e('0x64')](_0x0a9e('0x66'),_0x289467[_0x0a9e('0x27')]+'\x20is\x20disactive');}emitCampaignPreview(_0x289467);}}Preview[_0x0a9e('0xe')][_0x0a9e('0x26')]=function(){var _0x274e8e=this;setInterval(function(){_0x274e8e[_0x0a9e('0x67')]();},0x7cf);};Preview[_0x0a9e('0xe')][_0x0a9e('0x67')]=function(){var _0x2881b3=this[_0x0a9e('0x12')];this[_0x0a9e('0x17')]+=0x1;for(var _0x3da2cd in _0x2881b3){if(_0x2881b3[_0x0a9e('0x68')](_0x3da2cd)&&(_0x2881b3[_0x3da2cd][_0x0a9e('0x69')]===_0x0a9e('0x6')||_0x2881b3[_0x3da2cd][_0x0a9e('0x69')]===_0x0a9e('0x6a'))&&_0x2881b3[_0x3da2cd]['type']==='outbound'){if(this[_0x0a9e('0x17')]>0x7){this[_0x0a9e('0x17')]=0x0;this[_0x0a9e('0x6b')]();}}if(_0x2881b3[_0x0a9e('0x68')](_0x3da2cd)&&_0x2881b3[_0x3da2cd][_0x0a9e('0x69')]===_0x0a9e('0x6')&&_0x2881b3[_0x3da2cd][_0x0a9e('0x6c')]===_0x0a9e('0x6d')){if(_0x2881b3[_0x3da2cd][_0x0a9e('0x34')]){this[_0x0a9e('0x6e')](_0x2881b3[_0x3da2cd]);if(_0x2881b3[_0x3da2cd][_0x0a9e('0x6f')])this[_0x0a9e('0x70')](_0x2881b3[_0x3da2cd]);}else{notSendMessagesQueue(_0x2881b3[_0x3da2cd]);}}}};Preview['prototype'][_0x0a9e('0x71')]=function(_0x138b8b){var _0xdd268f=this;this[_0x0a9e('0x11')][_0x0a9e('0xf')](function(){if(!_[_0x0a9e('0x72')](_0xdd268f[_0x0a9e('0x15')][_0x138b8b])){loggerAction[_0x0a9e('0x5c')]('[clearZombieChannels][talking]',_0x138b8b,_0x0a9e('0x73'),_0xdd268f['actions'][_0x138b8b][_0x0a9e('0x74')],_0x0a9e('0x75'),JSON[_0x0a9e('0x59')](_0xdd268f['campaignsPreview'][_0xdd268f[_0x0a9e('0x15')][_0x138b8b][_0x0a9e('0x74')]][_0x0a9e('0x4f')]),_0x0a9e('0x76'),JSON[_0x0a9e('0x59')](_0xdd268f[_0x0a9e('0x12')][_0xdd268f[_0x0a9e('0x15')][_0x138b8b]['queue']][_0x0a9e('0x2b')]),JSON[_0x0a9e('0x59')](_0xdd268f[_0x0a9e('0x15')][_0x138b8b][_0x0a9e('0x77')]),JSON[_0x0a9e('0x59')](_[_0x0a9e('0x78')](_0xdd268f[_0x0a9e('0x15')][_0x138b8b],[_0x0a9e('0x79'),_0x0a9e('0x7a'),'VoiceQueueId',_0x0a9e('0x7b')])));return ami[_0x0a9e('0x7c')]({'action':'status','channel':_0xdd268f['actions'][_0x138b8b]['channel']})[_0x0a9e('0x7d')](function(_0x4317e3){if(_0x4317e3[_0x0a9e('0x4e')]===_0x0a9e('0x7e')){setTimeout(function(){if(_0xdd268f[_0x0a9e('0x15')][_0x138b8b]){ut[_0x0a9e('0x7f')](_0xdd268f[_0x0a9e('0x12')][_0xdd268f[_0x0a9e('0x15')][_0x138b8b]['queue']],'[clearZombieChannel]');if(_0xdd268f['actions'][_0x138b8b][_0x0a9e('0x77')]===!![]){ut[_0x0a9e('0x80')](_0xdd268f[_0x0a9e('0x12')][_0xdd268f['actions'][_0x138b8b][_0x0a9e('0x74')]],_0x0a9e('0x81'));ut['loggerError']('[Dialer][checkChannel][pTalking][Preview]'+_0x138b8b,_0xdd268f[_0x0a9e('0x15')][_0x138b8b]['queue']);}ut[_0x0a9e('0x82')]('[Dialer][checkChannel][Preview]'+_0x138b8b,_0xdd268f[_0x0a9e('0x15')][_0x138b8b][_0x0a9e('0x74')]);delete _0xdd268f[_0x0a9e('0x15')][_0x138b8b];}},0x2328);}});}});};Preview['prototype'][_0x0a9e('0x6b')]=function(){var _0x1bf38a=this;loggerAction['info']('[action]',_[_0x0a9e('0x83')](this[_0x0a9e('0x15')]));for(var _0x49c095 in this[_0x0a9e('0x15')]){if(_0x1bf38a['actions'][_0x0a9e('0x68')](_0x49c095)){_0x1bf38a['clearZombieChannel'](_0x49c095);}}};Preview[_0x0a9e('0xe')]['recallMe']=function(_0x5da27d){var _0x5df0ad=this;rpcDb[_0x0a9e('0x84')](_0x5da27d['id'],ut['agentReadyId'](this[_0x0a9e('0x16')]))[_0x0a9e('0x85')](function(_0x3cfd00){if(!_[_0x0a9e('0x72')](_0x3cfd00)){for(var _0x232830=0x0;_0x232830<_0x3cfd00[_0x0a9e('0x86')];_0x232830+=0x1){if(ut[_0x0a9e('0x87')](_0x3cfd00[_0x232830][_0x0a9e('0x88')])<_0x5da27d['dialRecallMeTimeout']*0x3c){if(_0x3cfd00[_0x232830][_0x0a9e('0x89')]&&!_0x3cfd00[_0x232830][_0x0a9e('0x89')][_0x0a9e('0x8a')]){_0x5df0ad[_0x0a9e('0x8b')](_0x3cfd00[_0x232830]['id'])[_0x0a9e('0x85')](ut[_0x0a9e('0x8c')]('[RecallMe]'))[_0x0a9e('0x7d')](ut[_0x0a9e('0x8c')]('[RecallMe]'));}else{rpcDb[_0x0a9e('0x8d')](_0x3cfd00[_0x232830]['id']);}}else{var _0x5cc8fb=new Action(_0x3cfd00[_0x232830],_0x5da27d);_0x5cc8fb[_0x0a9e('0x8e')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');_0x5da27d['outboundReCallsDay']+=0x1;ut[_0x0a9e('0x8f')](_0x5cc8fb,0x17,'RecallInQueue');if(_0x5da27d[_0x0a9e('0x90')]){rpcDb[_0x0a9e('0x91')](ut[_0x0a9e('0x92')](_0x3cfd00[_0x232830]));rpcDb[_0x0a9e('0x93')](_0x5cc8fb,_0x0a9e('0x94'));}else{ut[_0x0a9e('0x8f')](_0x5cc8fb,0x16,'RecallFailedTimeout');rpcDb[_0x0a9e('0x93')](_0x5cc8fb,'[HistoryRecallClose]');rpcDb[_0x0a9e('0x95')](_0x5cc8fb,_0x0a9e('0x96'));}}}}})[_0x0a9e('0x7d')](ut['logger2'](_0x0a9e('0x97')));};Preview[_0x0a9e('0xe')][_0x0a9e('0x6e')]=function(_0x32e134){_0x32e134['sendMessageOneNotActive']=!![];if(ut[_0x0a9e('0x98')](_0x32e134[_0x0a9e('0x2a')])){_0x32e134['message']=_0x0a9e('0x99');}else if(!ut[_0x0a9e('0x9a')](_0x32e134[_0x0a9e('0x34')])){_0x32e134[_0x0a9e('0x4e')]=_0x0a9e('0x63');}else if(!this['isTrunkReachable'](_0x32e134[_0x0a9e('0x55')])){if(!this[_0x0a9e('0x9b')](_0x32e134[_0x0a9e('0x9c')])){_0x32e134['message']=_0x0a9e('0x9d');}else{_0x32e134['message']='ACTIVE';}}else{_0x32e134[_0x0a9e('0x4e')]=_0x0a9e('0x9e');}emitCampaignPreview(_0x32e134);};Preview[_0x0a9e('0xe')][_0x0a9e('0x9f')]=function(_0x186f39,_0xc8c264,_0x387489){var _0x54a37d=this;var _0x2d7205=this[_0x0a9e('0x15')][_0xc8c264];var _0x2e89b7=this[_0x0a9e('0x12')][_0x2d7205[_0x0a9e('0x74')]];var _0x2b8192;var _0x320898=![];var _0x412a72=0x2;var _0x2a28c0=0x3;if(_0x2e89b7){switch(_0x387489){case'1':_0x2e89b7[_0x0a9e('0x3f')]+=0x1;_0x2d7205['countnosuchnumberretry']+=0x1;_0x2d7205[_0x0a9e('0xa0')]=ut[_0x0a9e('0xa1')](_0x2d7205);ut[_0x0a9e('0x8f')](_0x2d7205,0x0,'NoSuchNumber');ami[_0x0a9e('0x5f')](_0x0a9e('0xa2'),ut['buildObj'](_0x2d7205,_0x0a9e('0xa3')));rpcDb[_0x0a9e('0x93')](_0x2d7205,_0x0a9e('0xa4'));_0x54a37d[_0x0a9e('0xa5')](_0x2d7205,'0',_0x2e89b7)[_0x0a9e('0x85')](function(_0x4a43a8){_0x320898=_0x4a43a8['additional']==0x1;_0x412a72=_0x2e89b7['dialNoSuchNumberRetryFrequency'];_0x2a28c0=_0x2e89b7[_0x0a9e('0xa6')];if(!_0x320898){if(ut[_0x0a9e('0xa1')](_0x2d7205)>=_0x2e89b7[_0x0a9e('0xa7')]){_0x2b8192=ut[_0x0a9e('0xa8')](_0x2d7205,0xf,_0x0a9e('0xa9'));rpcDb[_0x0a9e('0x95')](_0x2b8192,_0x0a9e('0xaa'));}else{if(_0x2d7205[_0x0a9e('0xab')]>=_0x2e89b7['dialNoSuchNumberMaxRetry']){rpcDb[_0x0a9e('0x95')](_0x2d7205,_0x0a9e('0xaa'));}else{rpcDb[_0x0a9e('0xac')](ut['scheduledAt'](_0x2d7205,_0x0a9e('0xab'),_0x2e89b7['dialNoSuchNumberRetryFrequency']),_0x2d7205[_0x0a9e('0xad')],_0x2d7205[_0x0a9e('0xae')]);}}delete this['actions'][_0x186f39[_0x0a9e('0xaf')]];}else{_0x2d7205[_0x0a9e('0xab')]++;logger[_0x0a9e('0x5c')](_0x0a9e('0xb0'),_0x2d7205['countnosuchnumberretry']);logger[_0x0a9e('0x5c')]('id',_0x2d7205[_0x0a9e('0xb1')]);_0x54a37d[_0x0a9e('0xb2')]({'id':_0x2d7205[_0x0a9e('0xb1')],'field':{'countnosuchnumberretry':_0x2d7205['countnosuchnumberretry']}})[_0x0a9e('0x85')](function(){_0x54a37d[_0x0a9e('0xb3')](_0x2d7205,_0x412a72,_0x2a28c0)[_0x0a9e('0x85')](function(){});});}});break;case _0x0a9e('0xb4'):var _0x4abc8f=moment()[_0x0a9e('0x5e')](_0x0a9e('0xb5'));_0x2d7205[_0x0a9e('0xb6')]=_0x4abc8f;_0x2d7205[_0x0a9e('0xb7')]=_0x4abc8f;_0x2d7205[_0x0a9e('0x77')]=!![];_0x2e89b7[_0x0a9e('0x2b')]+=0x1;logger[_0x0a9e('0x5c')](_0x0a9e('0xb8'),_0x2d7205[_0x0a9e('0xb9')],_0x0a9e('0xba'),_0x2e89b7[_0x0a9e('0x27')],_0x0a9e('0x76'),_0x2e89b7[_0x0a9e('0x2b')]);ami[_0x0a9e('0x5f')]('custom:agentconnect',ut[_0x0a9e('0xbb')](_0x2d7205,_0x0a9e('0xbc'),this[_0x0a9e('0x12')][_0x2d7205['queue']]));if(_0x2e89b7[_0x0a9e('0xbd')]){ami[_0x0a9e('0x5f')](_0x0a9e('0xbe'),ut[_0x0a9e('0xbf')](_0x2d7205));}break;case'16':ami['emit']('custom:agentcomplete',ut[_0x0a9e('0xbb')](_0x2d7205,_0x0a9e('0xc0'),this['campaignsPreview'][_0x2d7205[_0x0a9e('0x74')]]));emitVoiceQueueChannelRemove(ut['buildObj'](_0x2d7205,_0x0a9e('0xc0')));_0x2e89b7[_0x0a9e('0x38')]+=0x1;_0x2e89b7['total']+=0x1;_0x2e89b7[_0x0a9e('0x29')]+=0x1;ut[_0x0a9e('0x80')](_0x2e89b7,_0x0a9e('0xc1'));_0x2d7205[_0x0a9e('0xa0')]=ut[_0x0a9e('0xa1')](_0x2d7205);ut[_0x0a9e('0x8f')](_0x2d7205,0x4,_0x0a9e('0xc2'));rpcDb['createCustomerHistory'](_0x2d7205,_0x0a9e('0xc3'));rpcDb[_0x0a9e('0x95')](_0x2d7205,_0x0a9e('0xc4'));rpcDb[_0x0a9e('0xc5')](_0x2d7205);_0x2e89b7['sumDuration']+=_0x2d7205[_0x0a9e('0xc6')];_0x2e89b7[_0x0a9e('0x2c')]+=_0x2d7205['talktime'];logger[_0x0a9e('0x5c')]('[syncHangup][talking][decrement]',_0x2d7205[_0x0a9e('0xb9')],_0x0a9e('0xba'),_0x2e89b7[_0x0a9e('0x27')],_0x0a9e('0x76'),_0x2e89b7['pTalking']);delete this['actions'][_0x186f39[_0x0a9e('0xaf')]];break;case _0x0a9e('0xc7'):_0x2e89b7[_0x0a9e('0x3a')]+=0x1;_0x2d7205['countbusyretry']+=0x1;_0x2d7205[_0x0a9e('0xa0')]=ut[_0x0a9e('0xa1')](_0x2d7205);ut['logCustomer'](_0x2d7205,0x5,'Busy');_0x412a72=_0x2e89b7[_0x0a9e('0xc8')];_0x2a28c0=_0x2e89b7['callAdditionalPhoneAfterMin'];ami['emit']('custom:agentbusy',ut[_0x0a9e('0xbb')](_0x2d7205,_0x0a9e('0xc9')));rpcDb[_0x0a9e('0x93')](_0x2d7205,_0x0a9e('0xca'));_0x54a37d[_0x0a9e('0xa5')](_0x2d7205,'5',_0x2e89b7)[_0x0a9e('0x85')](function(_0x5a8854){_0x320898=_0x5a8854[_0x0a9e('0xcb')]==0x1;if(!_0x320898){if(ut['totalGlobal'](_0x2d7205)>=_0x2e89b7[_0x0a9e('0xa7')]){_0x2b8192=ut[_0x0a9e('0xa8')](_0x2d7205,0xf,_0x0a9e('0xa9'));rpcDb[_0x0a9e('0x95')](_0x2b8192,'[callProgressDetectingCustomer][logBusyGlobal]');}else{if(_0x2d7205[_0x0a9e('0xcc')]>=_0x2e89b7[_0x0a9e('0xcd')]){rpcDb[_0x0a9e('0x95')](_0x2d7205,'[callProgressDetectingCustomer][logBusy]');}else{rpcDb[_0x0a9e('0xac')](ut[_0x0a9e('0xce')](_0x2d7205,_0x0a9e('0xcc'),_0x2e89b7[_0x0a9e('0xc8')]),_0x2d7205[_0x0a9e('0xad')],_0x2d7205[_0x0a9e('0xae')]);}}}else{_0x2d7205[_0x0a9e('0xcc')]++;_0x54a37d[_0x0a9e('0xb2')]({'id':_0x2d7205['idContact'],'field':{'countbusyretry':_0x2d7205[_0x0a9e('0xcc')]}})[_0x0a9e('0x85')](function(){_0x54a37d['swapAdditionalPhones'](_0x2d7205,_0x412a72,_0x2a28c0)[_0x0a9e('0x85')](function(){});});}});break;case _0x0a9e('0xcf'):_0x2e89b7[_0x0a9e('0xd0')]+=0x1;_0x2d7205['countnoanswerretry']+=0x1;_0x2d7205[_0x0a9e('0xa0')]=ut['totalGlobal'](_0x2d7205);ut[_0x0a9e('0x8f')](_0x2d7205,0x3,_0x0a9e('0xd1'));_0x412a72=_0x2e89b7[_0x0a9e('0xd2')];_0x2a28c0=_0x2e89b7[_0x0a9e('0xa6')];ami[_0x0a9e('0x5f')](_0x0a9e('0xd3'),ut[_0x0a9e('0xbb')](_0x2d7205,_0x0a9e('0xd4')));rpcDb['createCustomerHistory'](_0x2d7205,_0x0a9e('0xd5'));_0x54a37d[_0x0a9e('0xa5')](_0x2d7205,'3',_0x2e89b7)[_0x0a9e('0x85')](function(_0x30ef6e){_0x320898=_0x30ef6e[_0x0a9e('0xcb')]==0x1;if(!_0x320898){if(ut[_0x0a9e('0xa1')](_0x2d7205)>=_0x2e89b7[_0x0a9e('0xa7')]){_0x2b8192=ut[_0x0a9e('0xa8')](_0x2d7205,0xf,_0x0a9e('0xa9'));rpcDb[_0x0a9e('0x95')](_0x2b8192,_0x0a9e('0xd6'));}else{if(_0x2d7205[_0x0a9e('0xd7')]>=_0x2e89b7[_0x0a9e('0xd8')]){rpcDb['createCustomerFinal'](_0x2d7205,_0x0a9e('0xd5'));}else{rpcDb[_0x0a9e('0xac')](ut[_0x0a9e('0xce')](_0x2d7205,_0x0a9e('0xd7'),_0x2e89b7[_0x0a9e('0xd2')]),_0x2d7205['unlockAgent'],_0x2d7205[_0x0a9e('0xae')]);}}}else{_0x2d7205[_0x0a9e('0xd7')]++;_0x54a37d['incrementPreviewCounters']({'id':_0x2d7205[_0x0a9e('0xb1')],'field':{'countnoanswerretry':_0x2d7205['countnoanswerretry']}})[_0x0a9e('0x85')](function(){_0x54a37d[_0x0a9e('0xb3')](_0x2d7205,_0x412a72,_0x2a28c0)[_0x0a9e('0x85')](function(){});});}});break;case _0x0a9e('0xd9'):_0x2e89b7['outboundCongestionCallsDay']+=0x1;_0x2d7205[_0x0a9e('0xda')]+=0x1;_0x2d7205['countglobal']=ut[_0x0a9e('0xa1')](_0x2d7205);ut[_0x0a9e('0x8f')](_0x2d7205,0x8,'Congestion');_0x412a72=_0x2e89b7[_0x0a9e('0xdb')];_0x2a28c0=_0x2e89b7[_0x0a9e('0xa6')];ami[_0x0a9e('0x5f')]('custom:agentcongestion',ut['buildObj'](_0x2d7205,_0x0a9e('0xdc')));rpcDb[_0x0a9e('0x93')](_0x2d7205,_0x0a9e('0xdd'));_0x54a37d[_0x0a9e('0xa5')](_0x2d7205,'8',_0x2e89b7)[_0x0a9e('0x85')](function(_0x2450a8){_0x320898=_0x2450a8[_0x0a9e('0xcb')]==0x1;if(!_0x320898){if(ut[_0x0a9e('0xa1')](_0x2d7205)>=_0x2e89b7[_0x0a9e('0xa7')]){_0x2b8192=ut['cloneAction'](_0x2d7205,0xf,_0x0a9e('0xa9'));rpcDb['createCustomerFinal'](_0x2b8192,_0x0a9e('0xde'));}else{if(_0x2d7205[_0x0a9e('0xda')]>=_0x2e89b7[_0x0a9e('0xdf')]){rpcDb[_0x0a9e('0x95')](_0x2d7205,_0x0a9e('0xdd'));}else{rpcDb['rescheduleContact'](ut[_0x0a9e('0xce')](_0x2d7205,_0x0a9e('0xda'),_0x2e89b7[_0x0a9e('0xc8')]),_0x2d7205[_0x0a9e('0xad')],_0x2d7205[_0x0a9e('0xae')]);}}}else{_0x2d7205['countcongestionretry']++;_0x54a37d['incrementPreviewCounters']({'id':_0x2d7205[_0x0a9e('0xb1')],'field':{'countcongestionretry':_0x2d7205['countcongestionretry']}})[_0x0a9e('0x85')](function(){_0x54a37d[_0x0a9e('0xb3')](_0x2d7205,_0x412a72,_0x2a28c0)[_0x0a9e('0x85')](function(){});});}});break;case _0x0a9e('0xe0'):_0x2e89b7[_0x0a9e('0x42')]+=0x1;_0x2d7205[_0x0a9e('0xe1')]+=0x1;_0x2d7205['countglobal']=ut['totalGlobal'](_0x2d7205);ut[_0x0a9e('0x8f')](_0x2d7205,0x14,'AgentReject');_0x412a72=_0x2e89b7[_0x0a9e('0xe2')];_0x2a28c0=_0x2e89b7['callAdditionalPhoneAfterMin'];ami[_0x0a9e('0x5f')]('custom:agentreject',ut['buildObj'](_0x2d7205,_0x0a9e('0xe3')));rpcDb[_0x0a9e('0x93')](_0x2d7205,'[syncHangupRequest][logAgentReject]');_0x54a37d[_0x0a9e('0xa5')](_0x2d7205,'20',_0x2e89b7)[_0x0a9e('0x85')](function(_0x15c6b9){_0x320898=_0x15c6b9[_0x0a9e('0xcb')]==0x1;if(!_0x320898){if(ut[_0x0a9e('0xa1')](_0x2d7205)>=_0x2e89b7['dialGlobalMaxRetry']){_0x2b8192=ut['cloneAction'](_0x2d7205,0x14,_0x0a9e('0xe4'));rpcDb[_0x0a9e('0x95')](_0x2b8192,_0x0a9e('0xe5'));}else{if(_0x2d7205[_0x0a9e('0xe1')]>=_0x2e89b7[_0x0a9e('0xe6')]){rpcDb['createCustomerFinal'](_0x2d7205,_0x0a9e('0xe5'));}else{rpcDb[_0x0a9e('0xac')](ut['scheduledAt'](_0x2d7205,_0x0a9e('0xe1'),_0x2e89b7[_0x0a9e('0xe2')]),_0x2d7205[_0x0a9e('0xad')],_0x2d7205[_0x0a9e('0xae')]);}}}else{_0x2d7205[_0x0a9e('0xd7')]++;_0x54a37d[_0x0a9e('0xb2')]({'id':_0x2d7205[_0x0a9e('0xb1')],'field':{'countnoanswerretry':_0x2d7205[_0x0a9e('0xd7')]}})[_0x0a9e('0x85')](function(){_0x54a37d[_0x0a9e('0xb3')](_0x2d7205,_0x412a72,_0x2a28c0)['then'](function(){});});}});break;case _0x0a9e('0xe7'):_0x2e89b7[_0x0a9e('0x43')]+=0x1;_0x2d7205[_0x0a9e('0xe8')]+=0x1;_0x2d7205[_0x0a9e('0xa0')]=ut[_0x0a9e('0xa1')](_0x2d7205);ut['logCustomer'](_0x2d7205,0xb,'Abandoned');rpcDb[_0x0a9e('0x93')](_0x2d7205,_0x0a9e('0xe9'));_0x54a37d[_0x0a9e('0xa5')](_0x2d7205,'11',_0x2e89b7)[_0x0a9e('0x85')](function(_0x34f7b5){_0x320898=_0x34f7b5['additional']==0x1;if(!_0x320898){if(ut[_0x0a9e('0xa1')](_0x2d7205)>=_0x2e89b7[_0x0a9e('0xa7')]){_0x2b8192=ut[_0x0a9e('0xa8')](_0x2d7205,0xf,'Global');rpcDb[_0x0a9e('0x95')](_0x2b8192,'[callProgressDetectingCustomer][logAbandoned]');}else{if(_0x2d7205[_0x0a9e('0xea')]>=_0x2e89b7['dialAbandonedMaxRety']){rpcDb[_0x0a9e('0x95')](_0x2d7205,_0x0a9e('0xe9'));}else{rpcDb[_0x0a9e('0xac')](ut['scheduledAt'](_0x2d7205,_0x0a9e('0xe8'),_0x2e89b7['dialAbandonedRetryFrequency']),_0x2d7205[_0x0a9e('0xad')],_0x2d7205[_0x0a9e('0xae')]);}}}else{_0x2d7205[_0x0a9e('0xd7')]++;_0x54a37d[_0x0a9e('0xb2')]({'id':_0x2d7205[_0x0a9e('0xb1')],'field':{'countnoanswerretry':_0x2d7205[_0x0a9e('0xd7')]}})[_0x0a9e('0x85')](function(){_0x54a37d[_0x0a9e('0xb3')](_0x2d7205,_0x412a72,_0x2a28c0)[_0x0a9e('0x85')](function(){});});}});break;case'18':_0x2e89b7[_0x0a9e('0xeb')]+=0x1;_0x2d7205[_0x0a9e('0xec')]+=0x1;_0x2d7205[_0x0a9e('0xa0')]=ut[_0x0a9e('0xa1')](_0x2d7205);ut[_0x0a9e('0x8f')](_0x2d7205,0x12,_0x186f39[_0x0a9e('0xed')]||_0x186f39[_0x0a9e('0xee')]);ami['emit']('custom:amd',ut[_0x0a9e('0xbb')](_0x2d7205,'amd'));rpcDb[_0x0a9e('0x93')](_0x2d7205,_0x0a9e('0xef'));_0x54a37d['verifyAdditionalPhones'](_0x2d7205,'18',_0x2e89b7)[_0x0a9e('0x85')](function(_0xe2b083){_0x320898=_0xe2b083[_0x0a9e('0xcb')]==0x1;if(!_0x320898){if(ut[_0x0a9e('0xa1')](_0x2d7205)>=_0x2e89b7['dialGlobalMaxRetry']){_0x2b8192=ut[_0x0a9e('0xa8')](_0x2d7205,0x12,_0x0a9e('0xa9'));rpcDb[_0x0a9e('0x95')](_0x2b8192,_0x0a9e('0xef'));}else{rpcDb['createCustomerFinal'](_0x2d7205,_0x0a9e('0xef'));}}else{_0x2d7205[_0x0a9e('0xd7')]++;_0x54a37d[_0x0a9e('0xb2')]({'id':_0x2d7205['idContact'],'field':{'countnoanswerretry':_0x2d7205[_0x0a9e('0xd7')]}})[_0x0a9e('0x85')](function(){_0x54a37d[_0x0a9e('0xb3')](_0x2d7205,_0x412a72,_0x2a28c0)['then'](function(){});});}});delete this[_0x0a9e('0x15')][_0x186f39[_0x0a9e('0xaf')]];break;case'19':_0x2e89b7[_0x0a9e('0xeb')]+=0x1;_0x2d7205[_0x0a9e('0xa0')]=ut[_0x0a9e('0xa1')](_0x2d7205);ut['logCustomer'](_0x2d7205,0x13,_0x186f39[_0x0a9e('0xed')]||_0x186f39[_0x0a9e('0xee')]);ami['emit'](_0x0a9e('0xf0'),ut[_0x0a9e('0xbb')](_0x2d7205,_0x0a9e('0xf1')));rpcDb['createCustomerHistory'](_0x2d7205,'[callProgressDetectingCustomer][machine]');_0x54a37d['verifyAdditionalPhones'](_0x2d7205,'18',_0x2e89b7)[_0x0a9e('0x85')](function(_0x4a70ce){_0x320898=_0x4a70ce['additional']==0x1;if(!_0x320898){if(ut[_0x0a9e('0xa1')](_0x2d7205)>=_0x2e89b7[_0x0a9e('0xa7')]){_0x2b8192=ut[_0x0a9e('0xa8')](_0x2d7205,0xf,'Global');rpcDb[_0x0a9e('0x95')](_0x2b8192,_0x0a9e('0xf2'));}else{rpcDb[_0x0a9e('0x95')](_0x2d7205,_0x0a9e('0xf2'));}}else{_0x2d7205[_0x0a9e('0xd7')]++;_0x54a37d[_0x0a9e('0xb2')]({'id':_0x2d7205[_0x0a9e('0xb1')],'field':{'countnoanswerretry':_0x2d7205[_0x0a9e('0xd7')]}})[_0x0a9e('0x85')](function(){_0x54a37d['swapAdditionalPhones'](_0x2d7205,_0x412a72,_0x2a28c0)[_0x0a9e('0x85')](function(){});});}});delete this['actions'][_0x186f39[_0x0a9e('0xaf')]];break;default:if(_0x2d7205[_0x0a9e('0x77')]){ut[_0x0a9e('0x80')](_0x2e89b7,_0x0a9e('0xf3'));ut[_0x0a9e('0x82')](_0x0a9e('0xf4')+_0x2e89b7['name'],_0x186f39);}_0x2e89b7[_0x0a9e('0xeb')]+=0x1;_0x2d7205[_0x0a9e('0xa0')]=ut[_0x0a9e('0xa1')](_0x2d7205);ut[_0x0a9e('0x8f')](_0x2d7205,0xc,_0x186f39['cause-txt']||_0x186f39[_0x0a9e('0xee')]);_0x412a72=_0x2e89b7[_0x0a9e('0xe2')];_0x2a28c0=_0x2e89b7[_0x0a9e('0xa6')];rpcDb[_0x0a9e('0x93')](_0x2d7205,_0x0a9e('0xf5'));_0x54a37d[_0x0a9e('0xa5')](_0x2d7205,'20',_0x2e89b7)[_0x0a9e('0x85')](function(_0x25931e){_0x320898=_0x25931e[_0x0a9e('0xcb')]==0x1;if(!_0x320898){if(ut[_0x0a9e('0xa1')](_0x2d7205)>=_0x2e89b7['dialGlobalMaxRetry']){_0x2b8192=ut[_0x0a9e('0xa8')](_0x2d7205,0xf,_0x0a9e('0xa9'));rpcDb[_0x0a9e('0x95')](_0x2b8192,_0x0a9e('0xf6'));}else{rpcDb[_0x0a9e('0x95')](_0x2d7205,_0x0a9e('0xf6'));}delete this[_0x0a9e('0x15')][_0x186f39[_0x0a9e('0xaf')]];}else{_0x54a37d['swapAdditionalPhones'](_0x2d7205,_0x412a72,_0x2a28c0)[_0x0a9e('0x85')](function(_0xd2391){});}});}if(!(_0x2d7205[_0x0a9e('0x77')]&&_0x387489==='16')){ut['updateOriginated'](_0x2e89b7,_0x0a9e('0xf7'));logger[_0x0a9e('0x5c')](_0x0a9e('0xf8'),_0x2d7205[_0x0a9e('0xb9')],_0x0a9e('0xba'),_0x2e89b7[_0x0a9e('0x27')],_0x0a9e('0x75'),_0x2e89b7[_0x0a9e('0x4f')]);}if(_0x387489!==_0x0a9e('0xb4')){delete this[_0x0a9e('0x15')][_0x186f39['linkedid']];delete this[_0x0a9e('0x15')][_0x186f39[_0x0a9e('0xf9')]];}}};Preview[_0x0a9e('0xe')][_0x0a9e('0xfa')]=function(_0x2b624e,_0x3942fd,_0x5cb48d){if(_[_0x0a9e('0xfb')](_0x3942fd)&&'object'!==typeof _0x3942fd){return;}if(_['isUndefined'](_0x5cb48d)&&'object'!==typeof _0x5cb48d){return;}switch(_0x5cb48d[_0x0a9e('0xfc')]){case'0':ut[_0x0a9e('0xfd')](_0x2b624e,0x0,_0x0a9e('0xfe'));rpcDb[_0x0a9e('0xff')](_0x2b624e,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut[_0x0a9e('0xfd')](_0x2b624e,0x3,_0x0a9e('0xd1'));rpcDb[_0x0a9e('0xff')](_0x2b624e,_0x0a9e('0x100'));break;case'5':ut[_0x0a9e('0xfd')](_0x2b624e,0x5,'Busy');rpcDb['createAgentHistory'](_0x2b624e,_0x0a9e('0x101'));break;case'8':ut[_0x0a9e('0xfd')](_0x2b624e,0x8,_0x0a9e('0x102'));rpcDb['createAgentHistory'](_0x2b624e,_0x0a9e('0x103'));break;case'22':ut[_0x0a9e('0xfd')](_0x2b624e,0x16,_0x0a9e('0x104'));rpcDb['createAgentHistory'](_0x2b624e,_0x0a9e('0x105'));break;default:ut[_0x0a9e('0xfd')](_0x2b624e,0xc,_0x5cb48d[_0x0a9e('0xfc')]);rpcDb['createAgentHistory'](_0x2b624e,_0x0a9e('0x103'));}ut[_0x0a9e('0x7f')](_0x3942fd,_0x0a9e('0x106'));logger['info']('[originated][decrement][callProgressDetectingAgent]',_0x2b624e['uniqueid'],_0x0a9e('0xba'),_0x3942fd[_0x0a9e('0x27')],_0x0a9e('0x75'),_0x3942fd[_0x0a9e('0x4f')]);delete this['actions'][_0x2b624e[_0x0a9e('0xb9')]];};Preview['prototype'][_0x0a9e('0xa5')]=function(_0x2ff2ab,_0x242f23,_0x57f673){return BPromise[_0x0a9e('0x107')]()[_0x0a9e('0x85')](cmHopperAdditionalPhone[_0x0a9e('0xa5')](_0x2ff2ab,_0x242f23,_0x57f673))['catch'](logger[_0x0a9e('0x5c')]('[verifyAdditionalPhone]\x20'));};Preview[_0x0a9e('0xe')]['swapAdditionalPhones']=function(_0x41b90a,_0x57b7d4,_0xb14971){return BPromise[_0x0a9e('0x107')]()[_0x0a9e('0x85')](cmHopperAdditionalPhone[_0x0a9e('0xb3')](_0x41b90a,_0x57b7d4,_0xb14971))[_0x0a9e('0x7d')](logger[_0x0a9e('0x5c')](_0x0a9e('0x108')));};Preview['prototype'][_0x0a9e('0xb2')]=function(_0x1c9ea2){return BPromise['resolve']()[_0x0a9e('0x85')](cmHopperAdditionalPhone[_0x0a9e('0xb2')](_0x1c9ea2))['catch'](logger[_0x0a9e('0x5c')](_0x0a9e('0x109')));};Preview[_0x0a9e('0xe')]['checkInBlack']=function(_0x3766d7,_0xf49ed4,_0xdeb5e4,_0x3f0d64,_0x2003bc){var _0x29fdfe=this;return new BPromise(function(_0x3ba897,_0x74d9b8){if(_[_0x0a9e('0x72')](_0xf49ed4)||_[_0x0a9e('0x72')](_0xf49ed4['Contact'])||_[_0x0a9e('0x72')](_0xf49ed4['phone'])||_[_0x0a9e('0x72')](_0xf49ed4[_0x0a9e('0x10a')])){_0x74d9b8(ut[_0x0a9e('0x4e')](_0x0a9e('0x10b'),_0x3f0d64,_0x2003bc));return;}var _0x5d577b=uuid['v4']();var _0x2d45db=_0x29fdfe['campaignsPreview'][_0xf49ed4[_0x0a9e('0x73')][_0x0a9e('0x27')]];var _0x2977a7=_0xdeb5e4?_0x29fdfe['agents'][_0xdeb5e4]['id']:undefined;_0x29fdfe[_0x0a9e('0x15')][_0x5d577b]=new Action(_0xf49ed4,_0x2d45db,_0x5d577b,_0xdeb5e4,_0x2977a7);var _0x402544=_0x29fdfe[_0x0a9e('0x15')][_0x5d577b];_0x402544[_0x0a9e('0xad')]=_0x3f0d64;_0x402544[_0x0a9e('0xae')]=_0x2003bc;_0x402544[_0x0a9e('0x10c')]=_0xdeb5e4;if(_[_0x0a9e('0x10d')](_0x3766d7)){_0x29fdfe['execCall'](_0x402544,_0x2d45db,_0xf49ed4,_0xdeb5e4)[_0x0a9e('0x85')](function(_0x228c10){logger[_0x0a9e('0x5c')](_0x0a9e('0x10e'),_0x0a9e('0x10f')+_0x402544[_0x0a9e('0x74')]+_0x0a9e('0x110')+_0x402544['idContact'],JSON['stringify'](_0x228c10));ami[_0x0a9e('0x5f')](_0x0a9e('0x111'),ut[_0x0a9e('0xbb')](_0x402544,_0x0a9e('0x112'),_0x29fdfe[_0x0a9e('0x12')][_0x402544[_0x0a9e('0x74')]]));_0x3ba897(ut[_0x0a9e('0x4e')]('Calling'));})[_0x0a9e('0x7d')](function(_0x1d7fc4){ut[_0x0a9e('0x64')](_0x0a9e('0x113'),_0x1d7fc4);_0x74d9b8(ut[_0x0a9e('0x4e')](_0x0a9e('0x114'),_0x3f0d64,_0x2003bc));});}else{_0x2d45db[_0x0a9e('0x39')]+=0x1;ut['logBlacklist'](_0x402544);rpcDb[_0x0a9e('0x115')](_0x402544,_0x0a9e('0x116'));delete _0x29fdfe[_0x0a9e('0x15')][_0x5d577b];_0x74d9b8(ut['message'](_0x0a9e('0x117'),_0x3f0d64,_0x2003bc));}});};Preview[_0x0a9e('0xe')][_0x0a9e('0x9b')]=function(_0x292f02){return!_['isNil'](_0x292f02)&&!_[_0x0a9e('0x72')](_0x292f02[_0x0a9e('0x27')])&&!_[_0x0a9e('0x72')](_0x292f02[_0x0a9e('0x56')])&&_0x292f02[_0x0a9e('0x56')]&&!_[_0x0a9e('0x72')](this[_0x0a9e('0x14')][util[_0x0a9e('0x5e')]('SIP/%s',_0x292f02[_0x0a9e('0x27')])])&&!_[_0x0a9e('0x72')](this[_0x0a9e('0x14')][util[_0x0a9e('0x5e')]('SIP/%s',_0x292f02['name'])][_0x0a9e('0x118')])&&(this[_0x0a9e('0x14')][util[_0x0a9e('0x5e')]('SIP/%s',_0x292f02[_0x0a9e('0x27')])][_0x0a9e('0x118')]==='reachable'||this[_0x0a9e('0x14')][util['format'](_0x0a9e('0x119'),_0x292f02['name'])]['status']==='unmonitored');};Preview[_0x0a9e('0xe')][_0x0a9e('0x8b')]=function(_0x19f800,_0x20007e){var _0x7d59a9=this;return new BPromise(function(_0xe17af8,_0x48fbef){_0x7d59a9[_0x0a9e('0x11a')](_0x19f800,_0x20007e)[_0x0a9e('0x85')](function(_0x1713a7){_0xe17af8(_[_0x0a9e('0x78')](_0x1713a7,[_0x0a9e('0x4e')]));})[_0x0a9e('0x7d')](function(_0x31c937){if(_0x31c937['unlock']){rpcDb['unlockContact'](_0x19f800);}if(_0x31c937[_0x0a9e('0x56')]){rpcDb['disableContact'](_0x19f800);}_0x48fbef(_[_0x0a9e('0x78')](_0x31c937,[_0x0a9e('0x4e')]));});});};Preview[_0x0a9e('0xe')][_0x0a9e('0x11a')]=function(_0x37a448,_0x383dd8){var _0x594f25=this;return new BPromise(function(_0x4716d1,_0x59b872){var _0x50e32a,_0x504403;rpcDb['getContactPreview'](_0x37a448)[_0x0a9e('0x85')](function(_0x5dc978){if(!_['isNil'](_0x5dc978[0x0])){_0x504403=_0x5dc978[0x0][_0x0a9e('0x11b')]?![]:!![];_0x50e32a=_0x5dc978[0x0]['recallme']?!![]:![];_0x50e32a=_0x383dd8?!![]:_0x50e32a;}var _0x24470a=_0x594f25[_0x0a9e('0x11c')](_0x5dc978);if(_0x24470a[_0x0a9e('0x11d')]){rpcDb['checkIsBlackList'](_[_0x0a9e('0x78')](_0x5dc978[0x0],[_0x0a9e('0x10a'),_0x0a9e('0x11e')]))['then'](function(_0x5236c9){_0x594f25[_0x0a9e('0x11f')](_0x5236c9,_0x5dc978[0x0],_0x383dd8,_0x504403,_0x50e32a)[_0x0a9e('0x85')](function(_0x89d2cb){_0x4716d1(_0x89d2cb);})[_0x0a9e('0x7d')](function(_0x3b0db2){_0x59b872(_0x3b0db2);});})[_0x0a9e('0x7d')](function(_0x247a6c){ut[_0x0a9e('0x64')](_0x0a9e('0x120'),_0x247a6c);_0x59b872(ut[_0x0a9e('0x4e')]('Call\x20unsuccessful',_0x504403,_0x50e32a));});}else{_0x59b872(ut['message'](_0x24470a['message'],_0x504403,_0x50e32a));}})[_0x0a9e('0x7d')](function(_0x19dcc2){ut[_0x0a9e('0x64')](_0x0a9e('0x121'),_0x19dcc2);_0x59b872(ut[_0x0a9e('0x4e')](_0x0a9e('0x122'),![],!![]));});});};Preview[_0x0a9e('0xe')][_0x0a9e('0x11c')]=function(_0x5d74e9){if(_['isNil'](_0x5d74e9)||_[_0x0a9e('0x10d')](_0x5d74e9)||!_[_0x0a9e('0x72')](_0x5d74e9[0x0]['Agent'])&&_[_0x0a9e('0x72')](_0x5d74e9[0x0][_0x0a9e('0x89')][_0x0a9e('0x27')])){ut[_0x0a9e('0x64')](_0x0a9e('0x123'),_0x5d74e9);return{'isValid':![],'message':_0x0a9e('0x124')};}var _0x167196=this[_0x0a9e('0x12')][_0x5d74e9[0x0][_0x0a9e('0x73')][_0x0a9e('0x27')]];_0x167196[_0x0a9e('0x4e')]=_0x0a9e('0x9e');if(_['isNil'](_0x167196)){ut[_0x0a9e('0x64')](_0x0a9e('0x125'),_0x167196);return{'isValid':![],'message':_0x0a9e('0x126')};}if(!this[_0x0a9e('0x9b')](_0x167196[_0x0a9e('0x55')])){ut[_0x0a9e('0x64')](_0x0a9e('0x127'),_0x0a9e('0x128')+_0x167196[_0x0a9e('0x27')]+_0x0a9e('0x129'));if(!this[_0x0a9e('0x9b')](_0x167196[_0x0a9e('0x9c')])){ut['logger']('[Preview][validateContact][Trunk\x20not\x20work]',_0x167196[_0x0a9e('0x27')]+_0x0a9e('0x12a'));return{'isValid':![],'message':_0x0a9e('0x12b')};}}if(!ut[_0x0a9e('0x9a')](_0x167196[_0x0a9e('0x34')])){ut[_0x0a9e('0x64')](_0x0a9e('0x12c'),_0x167196['name']+_0x0a9e('0x12d'));return{'isValid':![],'message':'campaign\x20Name:\x20'+_0x167196[_0x0a9e('0x27')]+_0x0a9e('0x12d')};}return{'isValid':!![],'message':_0x0a9e('0x12e')};};Preview[_0x0a9e('0xe')][_0x0a9e('0x12f')]=function(_0x358f74,_0x465003,_0x261eca,_0xa7a754){var _0x32a199=this;return new BPromise(function(_0x39d367,_0x8231e5){var _0x43111e=_0x358f74[_0x0a9e('0xb9')];var _0x3c8a9a=_0x32a199[_0x0a9e('0x9b')](_0x465003['Trunk'])?util['format'](_0x0a9e('0x130'),_0x465003[_0x0a9e('0x55')]['name'],_['isNil'](_0x465003[_0x0a9e('0x131')])?'':_0x465003[_0x0a9e('0x131')][_0x0a9e('0x132')]()||'',_0x465003['dialCutDigit']>0x0?_0x261eca[_0x0a9e('0x11e')]['substring'](_0x465003[_0x0a9e('0x133')]):_0x261eca['phone']):util[_0x0a9e('0x5e')]('SIP/%s/%s%s',_[_0x0a9e('0x72')](_0x465003[_0x0a9e('0x9c')])?_0x465003[_0x0a9e('0x55')]['name']:_0x465003[_0x0a9e('0x9c')]['name'],_['isNil'](_0x465003[_0x0a9e('0x131')])?'':_0x465003[_0x0a9e('0x131')][_0x0a9e('0x132')]()||'',_0x465003[_0x0a9e('0x133')]>0x0?_0x261eca[_0x0a9e('0x11e')][_0x0a9e('0x134')](_0x465003[_0x0a9e('0x133')]):_0x261eca[_0x0a9e('0x11e')]);var _0x1a3143=_0x32a199[_0x0a9e('0x9b')](_0x465003[_0x0a9e('0x55')])?ut[_0x0a9e('0x135')](_0x465003[_0x0a9e('0x55')][_0x0a9e('0x57')],_0x465003[_0x0a9e('0x35')],_0x465003[_0x0a9e('0x136')]>0x0?ut[_0x0a9e('0x137')](_0x465003[_0x0a9e('0x138')],_0x465003[_0x0a9e('0x136')]):_0x465003['dialOriginateCallerIdNumber']):ut[_0x0a9e('0x135')](_[_0x0a9e('0x72')](_0x465003[_0x0a9e('0x9c')])?_0x465003[_0x0a9e('0x55')]['callerid']:_0x465003['TrunkBackup']['callerid'],_0x465003[_0x0a9e('0x35')],_0x465003['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0x0a9e('0x137')](_0x465003[_0x0a9e('0x138')],_0x465003[_0x0a9e('0x136')]):_0x465003[_0x0a9e('0x138')]);if(_0x1a3143){_0x358f74[_0x0a9e('0x139')]=ut[_0x0a9e('0x13a')](_0x1a3143);_0x358f74[_0x0a9e('0x13b')]=ut[_0x0a9e('0x13c')](_0x1a3143);}var _0x2154d8=ut[_0x0a9e('0x13d')](_0x465003,_0x261eca,_0x3c8a9a,_0x1a3143,_0x43111e,_0x358f74);_['merge'](_0x358f74,ut[_0x0a9e('0x13e')](_0x2154d8));_0x358f74['starttime']=moment()[_0x0a9e('0x5e')]('YYYY-MM-DD\x20HH:mm:ss');ami[_0x0a9e('0x7c')](ut[_0x0a9e('0x13f')](_0x358f74,_0x465003,_0x2154d8,_0x358f74[_0x0a9e('0xae')],_0xa7a754))['then'](function(_0x920ad8){_0x465003[_0x0a9e('0x4f')]+=0x1;logger['info']('[originated][increment]',_0x43111e,_0x0a9e('0xba'),_0x465003[_0x0a9e('0x27')],_0x0a9e('0x75'),_0x465003['originated']);_0x39d367(_0x920ad8);})['catch'](function(_0x4869c1){ut[_0x0a9e('0xfd')](_0x358f74,0xe,_0x0a9e('0x140'));rpcDb[_0x0a9e('0xff')](_0x358f74,_0x0a9e('0x141'));_0x8231e5(_0x4869c1);});});};Preview[_0x0a9e('0xe')][_0x0a9e('0x142')]=function(_0x183b9b){if(this[_0x0a9e('0x15')][_0x183b9b[_0x0a9e('0xaf')]]){this[_0x0a9e('0x15')][_0x183b9b[_0x0a9e('0xaf')]][_0x0a9e('0x143')]=_0x183b9b[_0x0a9e('0x143')];}};Preview[_0x0a9e('0xe')][_0x0a9e('0x19')]=function(_0x1a74c4){var _0x94e69b=this;var _0x320367=this['actions'][_0x1a74c4[_0x0a9e('0x144')]];if(_0x320367){if(_0x320367[_0x0a9e('0x10c')]&&this[_0x0a9e('0x16')][_0x320367[_0x0a9e('0x10c')]]){ut[_0x0a9e('0x145')](_0x320367,this[_0x0a9e('0x16')][_0x320367['lookAgent']][_0x0a9e('0x27')],this[_0x0a9e('0x16')][_0x320367[_0x0a9e('0x10c')]]['id']);}var _0x1109de=_[_0x0a9e('0x146')](_0x320367);_0x1109de[_0x0a9e('0xb6')]=moment()[_0x0a9e('0x5e')](_0x0a9e('0xb5'));var _0x4175a6=_0x94e69b['campaignsPreview'][_0x320367['queue']];if(ut[_0x0a9e('0x147')](_0x1a74c4[_0x0a9e('0x148')])){if(_0x320367['unlockAgent']){rpcDb[_0x0a9e('0x149')](_0x320367[_0x0a9e('0xb1')]);}if(_0x320367['activeContact']){rpcDb[_0x0a9e('0x8d')](_0x320367['idContact']);}ami[_0x0a9e('0x5f')](_0x0a9e('0x14a'),ut['buildObj'](_0x320367,_0x0a9e('0x14b'),this[_0x0a9e('0x12')][_0x320367['queue']]));this[_0x0a9e('0xfa')](_0x1109de,_0x4175a6,_0x1a74c4);}else{_0x320367[_0x0a9e('0x8e')]=moment()['format'](_0x0a9e('0xb5'));ut[_0x0a9e('0xfd')](_0x1109de,0x4,_0x0a9e('0xc2'));rpcDb[_0x0a9e('0xff')](_0x1109de,_0x0a9e('0x14c'));}}};Preview[_0x0a9e('0xe')]['syncHangup']=function(_0x1e5b09){var _0x36dc4f=this;var _0x51e697=this[_0x0a9e('0x15')][_0x1e5b09[_0x0a9e('0xaf')]];var _0x22c390;if(_0x51e697){_0x22c390=this[_0x0a9e('0x12')][_0x51e697[_0x0a9e('0x74')]];logger[_0x0a9e('0x5c')](_0x0a9e('0x14d'),_0x1e5b09['linkedid'],'\x20Queue',_0x22c390['name'],'pTalking:\x20',_0x22c390['pTalking']);}if(this[_0x0a9e('0x15')][_0x1e5b09[_0x0a9e('0xaf')]]&&_0x1e5b09['linkedid']!==_0x1e5b09['uniqueid']){if(_0x1e5b09[_0x0a9e('0x14e')]==='16'&&this['actions'][_0x1e5b09[_0x0a9e('0xaf')]][_0x0a9e('0x77')]){this[_0x0a9e('0x9f')](_0x1e5b09,_0x1e5b09[_0x0a9e('0xaf')],_0x1e5b09[_0x0a9e('0x14e')]);}else if(this[_0x0a9e('0x15')][_0x1e5b09['linkedid']][_0x0a9e('0x77')]){logger[_0x0a9e('0x5c')]('[syncHangup][talking][cause]',_0x1e5b09[_0x0a9e('0xaf')],_0x1e5b09[_0x0a9e('0x14e')],_0x0a9e('0xba'),_0x22c390[_0x0a9e('0x27')],_0x0a9e('0x76'),_0x22c390[_0x0a9e('0x2b')]);this[_0x0a9e('0x9f')](_0x1e5b09,_0x1e5b09['linkedid'],_0x1e5b09[_0x0a9e('0x14e')]);}}else if(_0x51e697&&_['isNil'](_0x51e697[_0x0a9e('0x14f')])&&_0x22c390[_0x0a9e('0x150')]&&_0x1e5b09['linkedid']===_0x1e5b09[_0x0a9e('0xb9')]&&_[_0x0a9e('0x72')](_0x1e5b09['reason'])&&_0x1e5b09[_0x0a9e('0x14e')]==='16'&&_0x1e5b09['channelstate']==='6'&&_[_0x0a9e('0xfb')](_0x51e697[_0x0a9e('0x151')])){if(_0x51e697['unlockAgent']){rpcDb[_0x0a9e('0x149')](_0x51e697['idContact']);}if(_0x51e697[_0x0a9e('0xae')]){rpcDb[_0x0a9e('0x8d')](_0x51e697[_0x0a9e('0xb1')]);}_0x1e5b09[_0x0a9e('0xfc')]='22';this[_0x0a9e('0xfa')](_0x51e697,_0x22c390,_0x1e5b09);}else if(_0x51e697&&_0x51e697[_0x0a9e('0x151')]){if(_0x1e5b09[_0x0a9e('0x14e')]==='16'&&this['actions'][_0x1e5b09[_0x0a9e('0xaf')]][_0x0a9e('0x77')]){logger[_0x0a9e('0x5c')](_0x0a9e('0x152'),_0x1e5b09[_0x0a9e('0xaf')],_0x1e5b09['cause'],_0x0a9e('0xba'),_0x22c390['name'],'pTalking:\x20',_0x22c390[_0x0a9e('0x2b')]);this['callProgressDetectingCustomer'](_0x1e5b09,_0x1e5b09[_0x0a9e('0xaf')],_0x1e5b09[_0x0a9e('0x14e')]);}else if(this['actions'][_0x1e5b09[_0x0a9e('0xaf')]][_0x0a9e('0x77')]){logger[_0x0a9e('0x5c')](_0x0a9e('0x153'),_0x1e5b09[_0x0a9e('0xaf')],_0x1e5b09[_0x0a9e('0x14e')],_0x0a9e('0xba'),_0x22c390[_0x0a9e('0x27')],_0x0a9e('0x76'),_0x22c390['pTalking']);this[_0x0a9e('0x9f')](_0x1e5b09,_0x1e5b09[_0x0a9e('0xaf')],_0x1e5b09[_0x0a9e('0x14e')]);}}};Preview[_0x0a9e('0xe')]['syncDialEnd']=function(_0x38d95a){if(this[_0x0a9e('0x15')][_0x38d95a[_0x0a9e('0xf9')]]&&_0x38d95a['destlinkedid']!==_0x38d95a[_0x0a9e('0x154')]){this[_0x0a9e('0x9f')](_0x38d95a,_0x38d95a[_0x0a9e('0xf9')],_0x38d95a['dialstatus']);}};Preview[_0x0a9e('0xe')]['syncHangupRequest']=function(_0x2394f2){if(this[_0x0a9e('0x15')][_0x2394f2[_0x0a9e('0xaf')]]&&_0x2394f2[_0x0a9e('0xaf')]!==_0x2394f2[_0x0a9e('0xb9')]&&!this[_0x0a9e('0x15')][_0x2394f2[_0x0a9e('0xaf')]]['dialAnswer']){if(_0x2394f2[_0x0a9e('0x14e')]==='1'){this[_0x0a9e('0x9f')](_0x2394f2,_0x2394f2[_0x0a9e('0xaf')],_0x2394f2[_0x0a9e('0x14e')]);}}};Preview[_0x0a9e('0xe')][_0x0a9e('0x155')]=function(_0x3a4def,_0x2670f5,_0x2310ca){if(this[_0x0a9e('0x15')][_0x3a4def]){if(_[_0x0a9e('0x72')](this[_0x0a9e('0x15')][_0x3a4def][_0x0a9e('0x156')])){this[_0x0a9e('0x15')][_0x3a4def][_0x0a9e('0x156')]={};}this[_0x0a9e('0x15')][_0x3a4def][_0x0a9e('0x156')][_0x2670f5]=_0x2310ca;}};Preview[_0x0a9e('0xe')][_0x0a9e('0x21')]=function(_0x611e46){try{if(!_[_0x0a9e('0x72')](_0x611e46)){if(ut[_0x0a9e('0x157')](_[_0x0a9e('0x158')](_0x611e46['variable'])[0x0])){this[_0x0a9e('0x155')](_0x611e46[_0x0a9e('0xb9')],_[_0x0a9e('0x158')](_0x611e46['variable'])[0x0],_0x611e46[_0x0a9e('0x159')]);}}}catch(_0x4c925e){logger[_0x0a9e('0x15a')](_0x0a9e('0x15b'),util[_0x0a9e('0x15c')](_0x4c925e,{'showHidden':![],'depth':null}));}};Preview[_0x0a9e('0xe')][_0x0a9e('0x23')]=function(_0xb09ef6){if(_0xb09ef6){if(this[_0x0a9e('0x15')][_0xb09ef6[_0x0a9e('0x15d')]]){this['actions'][_0xb09ef6[_0x0a9e('0x15d')]][_0x0a9e('0x151')]=!![];}}};Preview['prototype'][_0x0a9e('0x25')]=function(_0x2db8fe){if(_0x2db8fe){if(this[_0x0a9e('0x15')][_0x2db8fe['transfererlinkedid']]){this[_0x0a9e('0x15')][_0x2db8fe[_0x0a9e('0x15e')]][_0x0a9e('0x151')]=!![];}}};module[_0x0a9e('0x15f')]=Preview;
\ No newline at end of file
+var _0x31f0=['totalGlobal','dialGlobalMaxRetry','createCustomerFinal','[callProgressDetectingCustomer][logNoSuchGlobal]','rescheduleContact','unlockAgent','activeContact','actioncountonusuch','idContact','swapAdditionalPhones','ANSWER','answertime','[syncHangup][talking][increment]','uniqueid','custom:agentconnect','connect','acw','complete','total','answered','[16]','countglobal','Answer','[callProgressDetectingCustomer][logAnswer]','[callProgressDetectingCustomer][logAnswerGlobal]','talktime','[syncHangup][talking][decrement]','\x20Queue','linkedid','BUSY','countbusyretry','Busy','dialBusyRetryFrequency','custom:agentbusy','busy','[callProgressDetectingCustomer][logBusy]','cloneAction','Global','[callProgressDetectingCustomer][logBusyGlobal]','scheduledAt','incrementPreviewCounters','NOANSWER','countnoanswerretry','dialNoAnswerRetryFrequency','custom:agentnoanswer','noanswer','verifyAdditionalPhones','[callProgressDetectingCustomer][logNoAnswerGlobal]','dialNoAnswerMaxRetry','[callProgressDetectingCustomer][logNoAnswer]','countcongestionretry','Congestion','dialCongestionRetryFrequency','custom:agentcongestion','congestion','[callProgressDetectingCustomer][logCongestion]','dialCongestionMaxRetry','CANCEL','AgentReject','dialAgentRejectRetryFrequency','custom:agentreject','agentreject','[syncHangupRequest][logAgentReject]','[callProgressDetectingCustomer][logAgentReject]','countagentrejectretry','countabandonedretry','Abandoned','[callProgressDetectingCustomer][logAbandoned]','dialAbandonedRetryFrequency','cause-txt','dialstatus','[callProgressDetectingCustomer][hangupInAMD]','custom:amd','[callProgressDetectingCustomer][machine]','[default]','[callProgressDetectingCustomer][logUnknown]','[callProgressDetectingCustomer][logUnknownGlobal]','[callProgressDetectingCustomer]','[originated][decrement][callProgressDetectingCustomer]','callProgressDetectingAgent','isUndefined','object','reason','logAgent','NoSuchNumber','createAgentHistory','NoAnswer','[callProgressDetectingAgent][logNoAnswer]','[callProgressDetectingAgent][logCongestion]','AnswerAGI','updateOriginated','[callProgressDetectingAgent]','[originated][decrement][callProgressDetectingAgent]','resolve','[swapAdditionalPhone]\x20','[incrementPreviewCounters]\x20','checkInBlack','isNil','Contact','phone','Contact\x20is\x20undefined','isEmpty','execCall','[Preview][execCall][success]','Queue:\x20','\x20IdHopper:\x20','custom:agentcalled','called','[Preview][execCall][failure]','logBlacklist','createHistory','[Blacklist][error]','Contact\x20in\x20black\x20List','SIP/%s','status','reachable','unmonitored','execRun','pick','unlock','getContactPreview','recallme','validateContact','checkIsBlackList','[Preview][getContactPreview]','Call\x20unsuccessful','Empty\x20Contact','Empty\x20Campaign','campaign\x20Name:\x20','\x20Trunk\x20is\x20not\x20active','[Preview][validateContact][Trunk\x20not\x20working\x20correctly]','\x20Trunk\x20Backup\x20is\x20not\x20active','isActive','\x20Not\x20Active','Is\x20Valid','SIP/%s/%s%s','dialPrefix','substring','dialCutDigit','trim','getCallerId','callerid','getCallerIdRandom','dialRandomLastDigitCallerIdNumber','originatecalleridname','extractCalleridName','originatecalleridnum','extractCalleridNumber','addVariables','merge','toLowerVariables','variablesAction','[originated][increment]','OriginateError','logLookAgent','lookAgent','clone','responsetime','isFailure','response','unlockContact','custom:agentringnoanswer','rejected','starttime','[callProgressDetectingAgent][logAnswer]','[syncHangup][talking]','cause','callProgressDetectingCustomer','[syncHangup][talking][cause]','dialQueueProject','channelstate','transfer','destlinkedid','addVariable','variables','filterKey','variable','error','[syncVarSet][Preview]','inspect','transfertargetlinkedid','transfererlinkedid','exports','util','bluebird','moment','md5','ioredis','../../../config/environment','preview','../../../config/logger','../rpc/cmHopperAdditionalPhone','./util/util','redis','defaults','socket.io-emitter','prototype','enqueue','tail','sequence','campaignsPreview','voiceQueues','trunks','actions','agents','clockClearZombieChannels','originateresponse','syncOriginateResponse','bind','hanguprequest','syncHangupRequest','syncDialEnd','syncNewExten','varset','syncVarSet','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopCampaigns','emit','outbound','name','loggedIn','pTalking','sumBillable','sumDuration','talking','type','unmanaged','abandoned','loggedInDb','dialActive','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','outboundAbandonedCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','message','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','startPredictive','startProgressive','Trunk','active','Interval','voice_queue:save','info','[DEBUG]\x20Emit\x20voice_queue_channel:remove\x20event','stringify','format','voice_queue_channel:remove','voice_queue_presence:remove','sendMessageOneNotActive','available','paused','NOT_ACTIVE','logger','\x20is\x20not\x20active','DEACTIVATED','[CampaignPreview]\x20Campaign\x20Queue:\x20','\x20is\x20deactivated','hasOwnProperty','dialMethod','booked','clearZombieChannels','setMessage','dialPreviewAutoRecallMe','recallMe','clearZombieChannel','[clearZombieChannels][talking]','Queue','originated:\x20','queue','pTalking:\x20','dialAnswer','VoiceQueueId','Action','channel','[clearZombieChannel]','decrementTalkink','loggerError','[Dialer][checkChannel][Preview]','[action]','getContactRecallMe','agentReadyId','then','length','getDiff','dialRecallMeTimeout','Agent','voicePause','run','logger2','disableContact','YYYY-MM-DD\x20HH:mm:ss','logCustomer','RecallInQueue','dialRecallInQueue','rescheduleContactInQueue','createBody','createCustomerHistory','[HistoryDialRecallInQueue][historyCatch]','RecallFailedTimeout','[HistoryRecallClose]','catch','IsNotLoggedIn','isTrunkReachable','TrunkBackup','ACTIVE','countnosuchnumberretry','custom:agentnosuchnumber','buildObj','[callProgressDetectingCustomer][logNoSuch]','additional','dialNoSuchNumberRetryFrequency','callAdditionalPhoneAfterMin'];(function(_0x322224,_0xaf619e){var _0x5a6505=function(_0x4c185c){while(--_0x4c185c){_0x322224['push'](_0x322224['shift']());}};_0x5a6505(++_0xaf619e);}(_0x31f0,0xb7));var _0x031f=function(_0x203fc6,_0x2d4440){_0x203fc6=_0x203fc6-0x0;var _0x6fd982=_0x31f0[_0x203fc6];return _0x6fd982;};'use strict';var util=require(_0x031f('0x0'));var _=require('lodash');var BPromise=require(_0x031f('0x1'));var uuid=require('uuid');var moment=require(_0x031f('0x2'));var md5=require(_0x031f('0x3'));var Redis=require(_0x031f('0x4'));var config=require(_0x031f('0x5'));var logger=require('../../../config/logger')(_0x031f('0x6'));var loggerAction=require(_0x031f('0x7'))('actionPreview');var ami=require('../ami');var rpcDb=require('./rpcDb');var cmHopperAdditionalPhone=require(_0x031f('0x8'));var Action=require('./action');var ut=require(_0x031f('0x9'));config[_0x031f('0xa')]=_[_0x031f('0xb')](config[_0x031f('0xa')],{'host':'localhost','port':0x18eb});var io=require(_0x031f('0xc'))(new Redis(config[_0x031f('0xa')]));var Sequence=function(){};Sequence[_0x031f('0xd')][_0x031f('0xe')]=function(_0x3dd729){this[_0x031f('0xf')]=this[_0x031f('0xf')]?this[_0x031f('0xf')]['finally'](_0x3dd729):_0x3dd729();};function Preview(_0x5c3657){this[_0x031f('0x10')]=new Sequence();this[_0x031f('0x11')]=_0x5c3657[_0x031f('0x12')];this[_0x031f('0x13')]=_0x5c3657[_0x031f('0x13')];this[_0x031f('0x14')]={};this['agents']=_0x5c3657[_0x031f('0x15')];this[_0x031f('0x16')]=0x0;ami['on'](_0x031f('0x17'),this[_0x031f('0x18')][_0x031f('0x19')](this));ami['on']('hangup',this['syncHangup'][_0x031f('0x19')](this));ami['on'](_0x031f('0x1a'),this[_0x031f('0x1b')][_0x031f('0x19')](this));ami['on']('dialend',this[_0x031f('0x1c')][_0x031f('0x19')](this));ami['on']('newexten',this[_0x031f('0x1d')]['bind'](this));ami['on'](_0x031f('0x1e'),this[_0x031f('0x1f')][_0x031f('0x19')](this));ami['on'](_0x031f('0x20'),this[_0x031f('0x21')][_0x031f('0x19')](this));ami['on'](_0x031f('0x22'),this[_0x031f('0x23')][_0x031f('0x19')](this));this[_0x031f('0x24')](this[_0x031f('0x11')]);}function emit(_0x48a76e,_0xf72793,_0x33926c){io['to'](_0x48a76e)[_0x031f('0x25')](_0xf72793,_0x33926c);}function emitCampaignPreview(_0x4d6706){if(_0x4d6706['type']===_0x031f('0x26')){var _0x4d0f92={'id':_0x4d6706['id'],'name':_0x4d6706[_0x031f('0x27')],'strategy':_0x4d6706['strategy'],'answered':_0x4d6706['answered'],'available':_0x4d6706['available'],'loggedIn':_0x4d6706[_0x031f('0x28')],'pTalking':_0x4d6706[_0x031f('0x29')],'sumBillable':_0x4d6706[_0x031f('0x2a')],'sumDuration':_0x4d6706[_0x031f('0x2b')],'sumHoldTime':_0x4d6706['sumHoldTime']||0x0,'talking':_0x4d6706[_0x031f('0x2c')],'total':_0x4d6706['total'],'type':_0x4d6706[_0x031f('0x2d')],'unmanaged':_0x4d6706[_0x031f('0x2e')],'abandoned':_0x4d6706[_0x031f('0x2f')],'waiting':_0x4d6706['waiting'],'loggedInDb':_0x4d6706[_0x031f('0x30')],'dialActive':_0x4d6706[_0x031f('0x31')],'dialMethod':_0x4d6706['dialMethod'],'dialOriginateCallerIdName':_0x4d6706[_0x031f('0x32')],'dialOriginateCallerIdNumber':_0x4d6706[_0x031f('0x33')],'dialOriginateTimeout':_0x4d6706[_0x031f('0x34')],'dialPrefix':_0x4d6706['dialPrefix'],'outboundAnswerAgiCallsDay':_0x4d6706[_0x031f('0x35')],'outboundAnswerCallsDay':_0x4d6706[_0x031f('0x36')],'outboundBlacklistCallsDay':_0x4d6706[_0x031f('0x37')],'outboundBusyCallsDay':_0x4d6706[_0x031f('0x38')],'outboundCongestionCallsDay':_0x4d6706[_0x031f('0x39')],'outboundDropCallsDayACS':_0x4d6706[_0x031f('0x3a')],'outboundDropCallsDayCallersExit':_0x4d6706['outboundDropCallsDayCallersExit'],'outboundDropCallsDayTimeout':_0x4d6706[_0x031f('0x3b')],'outboundNoAnswerCallsDay':_0x4d6706[_0x031f('0x3c')],'outboundNoSuchCallsDay':_0x4d6706[_0x031f('0x3d')],'outboundOriginateFailureCallsDay':_0x4d6706[_0x031f('0x3e')],'outboundReCallsDay':_0x4d6706[_0x031f('0x3f')],'outboundRejectCallsDay':_0x4d6706[_0x031f('0x40')],'outboundUnknownCallsDay':_0x4d6706[_0x031f('0x41')],'outboundAbandonedCallsDay':_0x4d6706[_0x031f('0x42')],'predictiveIntervalAnsweredCalls':_0x4d6706[_0x031f('0x43')],'predictiveIntervalAvgHoldtime':_0x4d6706[_0x031f('0x44')],'predictiveIntervalAvgTalktime':_0x4d6706[_0x031f('0x45')],'predictiveIntervalDroppedCallsCallersExit':_0x4d6706['predictiveIntervalDroppedCallsCallersExit'],'predictiveIntervalDroppedCallsTimeout':_0x4d6706[_0x031f('0x46')],'predictiveIntervalErlangCalls':_0x4d6706[_0x031f('0x47')],'predictiveIntervalErlangCallsDroppedCalls':_0x4d6706[_0x031f('0x48')],'predictiveIntervalHitRate':_0x4d6706[_0x031f('0x49')],'predictiveIntervalMultiplicativeFactor':_0x4d6706[_0x031f('0x4a')],'predictiveIntervalPauses':_0x4d6706[_0x031f('0x4b')],'predictiveIntervalAvailable':_0x4d6706[_0x031f('0x4c')],'predictiveIntervalTotalCalls':_0x4d6706[_0x031f('0x4d')],'message':_0x4d6706[_0x031f('0x4e')],'originated':_0x4d6706[_0x031f('0x4f')],'erlangCalls':_0x4d6706[_0x031f('0x50')],'erlangCallToSecond':_0x4d6706[_0x031f('0x51')],'erlangAbandonmentRate':_0x4d6706[_0x031f('0x52')],'erlangBusyFactor':_0x4d6706['erlangBusyFactor'],'startPredictive':_0x4d6706[_0x031f('0x53')],'startProgressive':_0x4d6706[_0x031f('0x54')]};if(_0x4d6706['Trunk']){_0x4d0f92[_0x031f('0x55')]={'id':_0x4d6706[_0x031f('0x55')]['id'],'name':_0x4d6706['Trunk'][_0x031f('0x27')],'active':_0x4d6706[_0x031f('0x55')][_0x031f('0x56')],'callerid':_0x4d6706[_0x031f('0x55')]['callerid']};}if(_0x4d6706['Interval']){_0x4d0f92[_0x031f('0x57')]={'id':_0x4d6706['Interval']['id'],'name':_0x4d6706[_0x031f('0x57')][_0x031f('0x27')]};}var _0x43ef89=md5(JSON['stringify'](_0x4d0f92));if(_0x4d6706['md5']!==_0x43ef89){_0x4d6706[_0x031f('0x3')]=_0x43ef89;emit(util['format']('voice:queue:%s',_0x4d0f92[_0x031f('0x27')]),_0x031f('0x58'),_0x4d0f92);}}}function emitVoiceQueueChannelRemove(_0x2c6e13){logger[_0x031f('0x59')](_0x031f('0x5a'),JSON[_0x031f('0x5b')](_0x2c6e13));emit(util[_0x031f('0x5c')]('voice:queue:%s',_0x2c6e13[_0x031f('0x27')]),_0x031f('0x5d'),_0x2c6e13);io[_0x031f('0x25')](_0x031f('0x5e'),_0x2c6e13);}function notSendMessagesQueue(_0x58daa2){if(_0x58daa2[_0x031f('0x5f')]){if(_0x58daa2[_0x031f('0x4f')]===0x0&&_0x58daa2[_0x031f('0x29')]===0x0){_0x58daa2['sendMessageOneNotActive']=![];_0x58daa2[_0x031f('0x60')]=0x0;_0x58daa2[_0x031f('0x61')]=0x0;_0x58daa2['message']=_0x031f('0x62');ut[_0x031f('0x63')]('[CampaignPreview]\x20Campaign\x20Queue:\x20',_0x58daa2['name']+_0x031f('0x64'));}else{_0x58daa2[_0x031f('0x4e')]=_0x031f('0x65');ut[_0x031f('0x63')](_0x031f('0x66'),_0x58daa2[_0x031f('0x27')]+_0x031f('0x67'));}emitCampaignPreview(_0x58daa2);}}Preview['prototype'][_0x031f('0x24')]=function(){var _0xe71615=this;setInterval(function(){_0xe71615['syncCampaigns']();},0x7cf);};Preview[_0x031f('0xd')]['syncCampaigns']=function(){var _0x456a98=this[_0x031f('0x11')];this['clockClearZombieChannels']+=0x1;for(var _0x1b9b2e in _0x456a98){if(_0x456a98[_0x031f('0x68')](_0x1b9b2e)&&(_0x456a98[_0x1b9b2e][_0x031f('0x69')]==='preview'||_0x456a98[_0x1b9b2e][_0x031f('0x69')]===_0x031f('0x6a'))&&_0x456a98[_0x1b9b2e][_0x031f('0x2d')]===_0x031f('0x26')){if(this[_0x031f('0x16')]>0x7){this[_0x031f('0x16')]=0x0;this[_0x031f('0x6b')]();}}if(_0x456a98[_0x031f('0x68')](_0x1b9b2e)&&_0x456a98[_0x1b9b2e][_0x031f('0x69')]==='preview'&&_0x456a98[_0x1b9b2e][_0x031f('0x2d')]===_0x031f('0x26')){if(_0x456a98[_0x1b9b2e][_0x031f('0x31')]){this[_0x031f('0x6c')](_0x456a98[_0x1b9b2e]);if(_0x456a98[_0x1b9b2e][_0x031f('0x6d')])this[_0x031f('0x6e')](_0x456a98[_0x1b9b2e]);}else{notSendMessagesQueue(_0x456a98[_0x1b9b2e]);}}}};Preview[_0x031f('0xd')][_0x031f('0x6f')]=function(_0x3411f1){var _0x5f033b=this;this[_0x031f('0x10')]['enqueue'](function(){if(!_['isNil'](_0x5f033b[_0x031f('0x14')][_0x3411f1])){loggerAction[_0x031f('0x59')](_0x031f('0x70'),_0x3411f1,_0x031f('0x71'),_0x5f033b[_0x031f('0x14')][_0x3411f1]['queue'],_0x031f('0x72'),JSON[_0x031f('0x5b')](_0x5f033b[_0x031f('0x11')][_0x5f033b['actions'][_0x3411f1][_0x031f('0x73')]][_0x031f('0x4f')]),_0x031f('0x74'),JSON[_0x031f('0x5b')](_0x5f033b[_0x031f('0x11')][_0x5f033b[_0x031f('0x14')][_0x3411f1]['queue']]['pTalking']),JSON[_0x031f('0x5b')](_0x5f033b['actions'][_0x3411f1][_0x031f('0x75')]),JSON[_0x031f('0x5b')](_['pick'](_0x5f033b[_0x031f('0x14')][_0x3411f1],['contactId','UserId',_0x031f('0x76'),'ListId'])));return ami[_0x031f('0x77')]({'action':'status','channel':_0x5f033b[_0x031f('0x14')][_0x3411f1][_0x031f('0x78')]})['catch'](function(_0x3a9fea){if(_0x3a9fea[_0x031f('0x4e')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x5f033b[_0x031f('0x14')][_0x3411f1]){ut['updateOriginated'](_0x5f033b[_0x031f('0x11')][_0x5f033b['actions'][_0x3411f1][_0x031f('0x73')]],_0x031f('0x79'));if(_0x5f033b[_0x031f('0x14')][_0x3411f1][_0x031f('0x75')]===!![]){ut[_0x031f('0x7a')](_0x5f033b['campaignsPreview'][_0x5f033b[_0x031f('0x14')][_0x3411f1]['queue']],_0x031f('0x79'));ut[_0x031f('0x7b')]('[Dialer][checkChannel][pTalking][Preview]'+_0x3411f1,_0x5f033b[_0x031f('0x14')][_0x3411f1][_0x031f('0x73')]);}ut['loggerError'](_0x031f('0x7c')+_0x3411f1,_0x5f033b[_0x031f('0x14')][_0x3411f1][_0x031f('0x73')]);delete _0x5f033b['actions'][_0x3411f1];}},0x2328);}});}});};Preview[_0x031f('0xd')]['clearZombieChannels']=function(){var _0x254604=this;loggerAction['info'](_0x031f('0x7d'),_['size'](this[_0x031f('0x14')]));for(var _0x27b869 in this['actions']){if(_0x254604['actions'][_0x031f('0x68')](_0x27b869)){_0x254604[_0x031f('0x6f')](_0x27b869);}}};Preview['prototype'][_0x031f('0x6e')]=function(_0xb44c73){var _0x255003=this;rpcDb[_0x031f('0x7e')](_0xb44c73['id'],ut[_0x031f('0x7f')](this[_0x031f('0x15')]))[_0x031f('0x80')](function(_0x405398){if(!_['isNil'](_0x405398)){for(var _0xe452c2=0x0;_0xe452c2<_0x405398[_0x031f('0x81')];_0xe452c2+=0x1){if(ut[_0x031f('0x82')](_0x405398[_0xe452c2]['scheduledat'])<_0xb44c73[_0x031f('0x83')]*0x3c){if(_0x405398[_0xe452c2][_0x031f('0x84')]&&!_0x405398[_0xe452c2]['Agent'][_0x031f('0x85')]){_0x255003[_0x031f('0x86')](_0x405398[_0xe452c2]['id'])[_0x031f('0x80')](ut[_0x031f('0x87')]('[RecallMe]'))['catch'](ut['logger2']('[RecallMe]'));}else{rpcDb[_0x031f('0x88')](_0x405398[_0xe452c2]['id']);}}else{var _0xcf8b7=new Action(_0x405398[_0xe452c2],_0xb44c73);_0xcf8b7['starttime']=moment()[_0x031f('0x5c')](_0x031f('0x89'));_0xb44c73['outboundReCallsDay']+=0x1;ut[_0x031f('0x8a')](_0xcf8b7,0x17,_0x031f('0x8b'));if(_0xb44c73[_0x031f('0x8c')]){rpcDb[_0x031f('0x8d')](ut[_0x031f('0x8e')](_0x405398[_0xe452c2]));rpcDb[_0x031f('0x8f')](_0xcf8b7,_0x031f('0x90'));}else{ut[_0x031f('0x8a')](_0xcf8b7,0x16,_0x031f('0x91'));rpcDb['createCustomerHistory'](_0xcf8b7,_0x031f('0x92'));rpcDb['createCustomerFinal'](_0xcf8b7,_0x031f('0x92'));}}}}})[_0x031f('0x93')](ut[_0x031f('0x87')]('[getContactRecallMe]'));};Preview['prototype'][_0x031f('0x6c')]=function(_0x46af33){_0x46af33[_0x031f('0x5f')]=!![];if(ut[_0x031f('0x94')](_0x46af33['loggedIn'])){_0x46af33[_0x031f('0x4e')]='AGENTS_NOT_LOGGED';}else if(!ut['isActive'](_0x46af33[_0x031f('0x31')])){_0x46af33['message']='NOT_ACTIVE';}else if(!this[_0x031f('0x95')](_0x46af33[_0x031f('0x55')])){if(!this[_0x031f('0x95')](_0x46af33[_0x031f('0x96')])){_0x46af33[_0x031f('0x4e')]='TRUNK_IS_NOT_REACHABLE';}else{_0x46af33['message']=_0x031f('0x97');}}else{_0x46af33['message']=_0x031f('0x97');}emitCampaignPreview(_0x46af33);};Preview[_0x031f('0xd')]['callProgressDetectingCustomer']=function(_0x144011,_0xee136c,_0x439095){var _0x30cb01=this;var _0x14fd99=this[_0x031f('0x14')][_0xee136c];var _0x5bea08=this['campaignsPreview'][_0x14fd99[_0x031f('0x73')]];var _0x232b62;var _0x1bc4de=![];var _0x1d973d=0x2;var _0x6d85c8=0x3;if(_0x5bea08){switch(_0x439095){case'1':_0x5bea08[_0x031f('0x3d')]+=0x1;_0x14fd99[_0x031f('0x98')]+=0x1;_0x14fd99['countglobal']=ut['totalGlobal'](_0x14fd99);ut['logCustomer'](_0x14fd99,0x0,'NoSuchNumber');ami[_0x031f('0x25')](_0x031f('0x99'),ut[_0x031f('0x9a')](_0x14fd99,'nosuchnumber'));rpcDb[_0x031f('0x8f')](_0x14fd99,_0x031f('0x9b'));_0x30cb01['verifyAdditionalPhones'](_0x14fd99,'0',_0x5bea08)[_0x031f('0x80')](function(_0x2c15f4){_0x1bc4de=_0x2c15f4[_0x031f('0x9c')]==0x1;_0x1d973d=_0x5bea08[_0x031f('0x9d')];_0x6d85c8=_0x5bea08[_0x031f('0x9e')];if(!_0x1bc4de){if(ut[_0x031f('0x9f')](_0x14fd99)>=_0x5bea08[_0x031f('0xa0')]){_0x232b62=ut['cloneAction'](_0x14fd99,0xf,'Global');rpcDb[_0x031f('0xa1')](_0x232b62,'[callProgressDetectingCustomer][logNoSuchGlobal]');}else{if(_0x14fd99[_0x031f('0x98')]>=_0x5bea08['dialNoSuchNumberMaxRetry']){rpcDb[_0x031f('0xa1')](_0x14fd99,_0x031f('0xa2'));}else{rpcDb[_0x031f('0xa3')](ut['scheduledAt'](_0x14fd99,_0x031f('0x98'),_0x5bea08['dialNoSuchNumberRetryFrequency']),_0x14fd99[_0x031f('0xa4')],_0x14fd99[_0x031f('0xa5')]);}}delete this[_0x031f('0x14')][_0x144011['linkedid']];}else{_0x14fd99[_0x031f('0x98')]++;logger[_0x031f('0x59')](_0x031f('0xa6'),_0x14fd99[_0x031f('0x98')]);logger[_0x031f('0x59')]('id',_0x14fd99['idContact']);_0x30cb01['incrementPreviewCounters']({'id':_0x14fd99[_0x031f('0xa7')],'field':{'countnosuchnumberretry':_0x14fd99[_0x031f('0x98')]}})['then'](function(){_0x30cb01[_0x031f('0xa8')](_0x14fd99,_0x1d973d,_0x6d85c8)['then'](function(){});});}});break;case _0x031f('0xa9'):var _0x58d820=moment()[_0x031f('0x5c')](_0x031f('0x89'));_0x14fd99['responsetime']=_0x58d820;_0x14fd99[_0x031f('0xaa')]=_0x58d820;_0x14fd99[_0x031f('0x75')]=!![];_0x5bea08[_0x031f('0x29')]+=0x1;logger['info'](_0x031f('0xab'),_0x14fd99[_0x031f('0xac')],'\x20Queue',_0x5bea08[_0x031f('0x27')],_0x031f('0x74'),_0x5bea08[_0x031f('0x29')]);ami[_0x031f('0x25')](_0x031f('0xad'),ut[_0x031f('0x9a')](_0x14fd99,_0x031f('0xae'),this['campaignsPreview'][_0x14fd99[_0x031f('0x73')]]));if(_0x5bea08[_0x031f('0xaf')]){ami[_0x031f('0x25')]('custom:agentConnectPreview',ut['buildAcw'](_0x14fd99));}break;case'16':ami[_0x031f('0x25')]('custom:agentcomplete',ut['buildObj'](_0x14fd99,_0x031f('0xb0'),this[_0x031f('0x11')][_0x14fd99[_0x031f('0x73')]]));emitVoiceQueueChannelRemove(ut[_0x031f('0x9a')](_0x14fd99,_0x031f('0xb0')));_0x5bea08[_0x031f('0x36')]+=0x1;_0x5bea08[_0x031f('0xb1')]+=0x1;_0x5bea08[_0x031f('0xb2')]+=0x1;ut[_0x031f('0x7a')](_0x5bea08,_0x031f('0xb3'));_0x14fd99[_0x031f('0xb4')]=ut['totalGlobal'](_0x14fd99);ut[_0x031f('0x8a')](_0x14fd99,0x4,_0x031f('0xb5'));rpcDb[_0x031f('0x8f')](_0x14fd99,_0x031f('0xb6'));rpcDb['createCustomerFinal'](_0x14fd99,_0x031f('0xb7'));rpcDb['crateCustomerReportQueue'](_0x14fd99);_0x5bea08['sumDuration']+=_0x14fd99[_0x031f('0xb8')];_0x5bea08[_0x031f('0x2a')]+=_0x14fd99['talktime'];logger['info'](_0x031f('0xb9'),_0x14fd99[_0x031f('0xac')],_0x031f('0xba'),_0x5bea08[_0x031f('0x27')],_0x031f('0x74'),_0x5bea08[_0x031f('0x29')]);delete this['actions'][_0x144011[_0x031f('0xbb')]];break;case _0x031f('0xbc'):_0x5bea08['outboundBusyCallsDay']+=0x1;_0x14fd99[_0x031f('0xbd')]+=0x1;_0x14fd99[_0x031f('0xb4')]=ut[_0x031f('0x9f')](_0x14fd99);ut[_0x031f('0x8a')](_0x14fd99,0x5,_0x031f('0xbe'));_0x1d973d=_0x5bea08[_0x031f('0xbf')];_0x6d85c8=_0x5bea08[_0x031f('0x9e')];ami['emit'](_0x031f('0xc0'),ut['buildObj'](_0x14fd99,_0x031f('0xc1')));rpcDb[_0x031f('0x8f')](_0x14fd99,_0x031f('0xc2'));_0x30cb01['verifyAdditionalPhones'](_0x14fd99,'5',_0x5bea08)['then'](function(_0x51aa16){_0x1bc4de=_0x51aa16[_0x031f('0x9c')]==0x1;if(!_0x1bc4de){if(ut[_0x031f('0x9f')](_0x14fd99)>=_0x5bea08[_0x031f('0xa0')]){_0x232b62=ut[_0x031f('0xc3')](_0x14fd99,0xf,_0x031f('0xc4'));rpcDb[_0x031f('0xa1')](_0x232b62,_0x031f('0xc5'));}else{if(_0x14fd99['countbusyretry']>=_0x5bea08['dialBusyMaxRetry']){rpcDb[_0x031f('0xa1')](_0x14fd99,_0x031f('0xc2'));}else{rpcDb['rescheduleContact'](ut[_0x031f('0xc6')](_0x14fd99,'countbusyretry',_0x5bea08[_0x031f('0xbf')]),_0x14fd99[_0x031f('0xa4')],_0x14fd99['activeContact']);}}}else{_0x14fd99[_0x031f('0xbd')]++;_0x30cb01[_0x031f('0xc7')]({'id':_0x14fd99['idContact'],'field':{'countbusyretry':_0x14fd99[_0x031f('0xbd')]}})[_0x031f('0x80')](function(){_0x30cb01[_0x031f('0xa8')](_0x14fd99,_0x1d973d,_0x6d85c8)['then'](function(){});});}});break;case _0x031f('0xc8'):_0x5bea08[_0x031f('0x3c')]+=0x1;_0x14fd99[_0x031f('0xc9')]+=0x1;_0x14fd99[_0x031f('0xb4')]=ut[_0x031f('0x9f')](_0x14fd99);ut[_0x031f('0x8a')](_0x14fd99,0x3,'NoAnswer');_0x1d973d=_0x5bea08[_0x031f('0xca')];_0x6d85c8=_0x5bea08[_0x031f('0x9e')];ami[_0x031f('0x25')](_0x031f('0xcb'),ut['buildObj'](_0x14fd99,_0x031f('0xcc')));rpcDb[_0x031f('0x8f')](_0x14fd99,'[callProgressDetectingCustomer][logNoAnswer]');_0x30cb01[_0x031f('0xcd')](_0x14fd99,'3',_0x5bea08)[_0x031f('0x80')](function(_0x3139fe){_0x1bc4de=_0x3139fe[_0x031f('0x9c')]==0x1;if(!_0x1bc4de){if(ut[_0x031f('0x9f')](_0x14fd99)>=_0x5bea08[_0x031f('0xa0')]){_0x232b62=ut[_0x031f('0xc3')](_0x14fd99,0xf,_0x031f('0xc4'));rpcDb[_0x031f('0xa1')](_0x232b62,_0x031f('0xce'));}else{if(_0x14fd99[_0x031f('0xc9')]>=_0x5bea08[_0x031f('0xcf')]){rpcDb[_0x031f('0xa1')](_0x14fd99,_0x031f('0xd0'));}else{rpcDb[_0x031f('0xa3')](ut['scheduledAt'](_0x14fd99,_0x031f('0xc9'),_0x5bea08[_0x031f('0xca')]),_0x14fd99[_0x031f('0xa4')],_0x14fd99[_0x031f('0xa5')]);}}}else{_0x14fd99[_0x031f('0xc9')]++;_0x30cb01[_0x031f('0xc7')]({'id':_0x14fd99['idContact'],'field':{'countnoanswerretry':_0x14fd99['countnoanswerretry']}})['then'](function(){_0x30cb01[_0x031f('0xa8')](_0x14fd99,_0x1d973d,_0x6d85c8)[_0x031f('0x80')](function(){});});}});break;case'CONGESTION':_0x5bea08[_0x031f('0x39')]+=0x1;_0x14fd99[_0x031f('0xd1')]+=0x1;_0x14fd99[_0x031f('0xb4')]=ut[_0x031f('0x9f')](_0x14fd99);ut['logCustomer'](_0x14fd99,0x8,_0x031f('0xd2'));_0x1d973d=_0x5bea08[_0x031f('0xd3')];_0x6d85c8=_0x5bea08[_0x031f('0x9e')];ami[_0x031f('0x25')](_0x031f('0xd4'),ut[_0x031f('0x9a')](_0x14fd99,_0x031f('0xd5')));rpcDb[_0x031f('0x8f')](_0x14fd99,_0x031f('0xd6'));_0x30cb01[_0x031f('0xcd')](_0x14fd99,'8',_0x5bea08)[_0x031f('0x80')](function(_0x3eec5b){_0x1bc4de=_0x3eec5b['additional']==0x1;if(!_0x1bc4de){if(ut[_0x031f('0x9f')](_0x14fd99)>=_0x5bea08[_0x031f('0xa0')]){_0x232b62=ut['cloneAction'](_0x14fd99,0xf,_0x031f('0xc4'));rpcDb[_0x031f('0xa1')](_0x232b62,'[callProgressDetectingCustomer][logCongestionGlobal]');}else{if(_0x14fd99[_0x031f('0xd1')]>=_0x5bea08[_0x031f('0xd7')]){rpcDb[_0x031f('0xa1')](_0x14fd99,_0x031f('0xd6'));}else{rpcDb[_0x031f('0xa3')](ut[_0x031f('0xc6')](_0x14fd99,_0x031f('0xd1'),_0x5bea08[_0x031f('0xbf')]),_0x14fd99[_0x031f('0xa4')],_0x14fd99['activeContact']);}}}else{_0x14fd99[_0x031f('0xd1')]++;_0x30cb01[_0x031f('0xc7')]({'id':_0x14fd99[_0x031f('0xa7')],'field':{'countcongestionretry':_0x14fd99['countcongestionretry']}})['then'](function(){_0x30cb01[_0x031f('0xa8')](_0x14fd99,_0x1d973d,_0x6d85c8)['then'](function(){});});}});break;case _0x031f('0xd8'):_0x5bea08[_0x031f('0x40')]+=0x1;_0x14fd99['countagentrejectretry']+=0x1;_0x14fd99[_0x031f('0xb4')]=ut[_0x031f('0x9f')](_0x14fd99);ut[_0x031f('0x8a')](_0x14fd99,0x14,_0x031f('0xd9'));_0x1d973d=_0x5bea08[_0x031f('0xda')];_0x6d85c8=_0x5bea08[_0x031f('0x9e')];ami[_0x031f('0x25')](_0x031f('0xdb'),ut[_0x031f('0x9a')](_0x14fd99,_0x031f('0xdc')));rpcDb[_0x031f('0x8f')](_0x14fd99,_0x031f('0xdd'));_0x30cb01[_0x031f('0xcd')](_0x14fd99,'20',_0x5bea08)['then'](function(_0x563c1c){_0x1bc4de=_0x563c1c[_0x031f('0x9c')]==0x1;if(!_0x1bc4de){if(ut['totalGlobal'](_0x14fd99)>=_0x5bea08[_0x031f('0xa0')]){_0x232b62=ut[_0x031f('0xc3')](_0x14fd99,0x14,_0x031f('0xd9'));rpcDb['createCustomerFinal'](_0x232b62,_0x031f('0xde'));}else{if(_0x14fd99[_0x031f('0xdf')]>=_0x5bea08['dialAgentRejectMaxRetry']){rpcDb[_0x031f('0xa1')](_0x14fd99,_0x031f('0xde'));}else{rpcDb[_0x031f('0xa3')](ut[_0x031f('0xc6')](_0x14fd99,_0x031f('0xdf'),_0x5bea08[_0x031f('0xda')]),_0x14fd99[_0x031f('0xa4')],_0x14fd99['activeContact']);}}}else{_0x14fd99[_0x031f('0xc9')]++;_0x30cb01[_0x031f('0xc7')]({'id':_0x14fd99[_0x031f('0xa7')],'field':{'countnoanswerretry':_0x14fd99[_0x031f('0xc9')]}})['then'](function(){_0x30cb01['swapAdditionalPhones'](_0x14fd99,_0x1d973d,_0x6d85c8)[_0x031f('0x80')](function(){});});}});break;case'ABANDONED':_0x5bea08['outboundAbandonedCallsDay']+=0x1;_0x14fd99[_0x031f('0xe0')]+=0x1;_0x14fd99['countglobal']=ut['totalGlobal'](_0x14fd99);ut[_0x031f('0x8a')](_0x14fd99,0xb,_0x031f('0xe1'));rpcDb[_0x031f('0x8f')](_0x14fd99,_0x031f('0xe2'));_0x30cb01[_0x031f('0xcd')](_0x14fd99,'11',_0x5bea08)[_0x031f('0x80')](function(_0x5f10af){_0x1bc4de=_0x5f10af[_0x031f('0x9c')]==0x1;if(!_0x1bc4de){if(ut[_0x031f('0x9f')](_0x14fd99)>=_0x5bea08['dialGlobalMaxRetry']){_0x232b62=ut[_0x031f('0xc3')](_0x14fd99,0xf,_0x031f('0xc4'));rpcDb[_0x031f('0xa1')](_0x232b62,_0x031f('0xe2'));}else{if(_0x14fd99['countabandonedetry']>=_0x5bea08['dialAbandonedMaxRety']){rpcDb['createCustomerFinal'](_0x14fd99,_0x031f('0xe2'));}else{rpcDb[_0x031f('0xa3')](ut[_0x031f('0xc6')](_0x14fd99,_0x031f('0xe0'),_0x5bea08[_0x031f('0xe3')]),_0x14fd99[_0x031f('0xa4')],_0x14fd99[_0x031f('0xa5')]);}}}else{_0x14fd99[_0x031f('0xc9')]++;_0x30cb01[_0x031f('0xc7')]({'id':_0x14fd99['idContact'],'field':{'countnoanswerretry':_0x14fd99[_0x031f('0xc9')]}})[_0x031f('0x80')](function(){_0x30cb01[_0x031f('0xa8')](_0x14fd99,_0x1d973d,_0x6d85c8)[_0x031f('0x80')](function(){});});}});break;case'18':_0x5bea08[_0x031f('0x41')]+=0x1;_0x14fd99['countmachineretry']+=0x1;_0x14fd99['countglobal']=ut['totalGlobal'](_0x14fd99);ut[_0x031f('0x8a')](_0x14fd99,0x12,_0x144011[_0x031f('0xe4')]||_0x144011[_0x031f('0xe5')]);ami[_0x031f('0x25')]('custom:amd',ut[_0x031f('0x9a')](_0x14fd99,'amd'));rpcDb[_0x031f('0x8f')](_0x14fd99,_0x031f('0xe6'));_0x30cb01[_0x031f('0xcd')](_0x14fd99,'18',_0x5bea08)[_0x031f('0x80')](function(_0x25b295){_0x1bc4de=_0x25b295['additional']==0x1;if(!_0x1bc4de){if(ut[_0x031f('0x9f')](_0x14fd99)>=_0x5bea08[_0x031f('0xa0')]){_0x232b62=ut[_0x031f('0xc3')](_0x14fd99,0x12,_0x031f('0xc4'));rpcDb['createCustomerFinal'](_0x232b62,_0x031f('0xe6'));}else{rpcDb[_0x031f('0xa1')](_0x14fd99,'[callProgressDetectingCustomer][hangupInAMD]');}}else{_0x14fd99[_0x031f('0xc9')]++;_0x30cb01['incrementPreviewCounters']({'id':_0x14fd99[_0x031f('0xa7')],'field':{'countnoanswerretry':_0x14fd99[_0x031f('0xc9')]}})[_0x031f('0x80')](function(){_0x30cb01[_0x031f('0xa8')](_0x14fd99,_0x1d973d,_0x6d85c8)[_0x031f('0x80')](function(){});});}});delete this['actions'][_0x144011[_0x031f('0xbb')]];break;case'19':_0x5bea08['outboundUnknownCallsDay']+=0x1;_0x14fd99[_0x031f('0xb4')]=ut[_0x031f('0x9f')](_0x14fd99);ut['logCustomer'](_0x14fd99,0x13,_0x144011[_0x031f('0xe4')]||_0x144011[_0x031f('0xe5')]);ami[_0x031f('0x25')](_0x031f('0xe7'),ut[_0x031f('0x9a')](_0x14fd99,'amd'));rpcDb['createCustomerHistory'](_0x14fd99,'[callProgressDetectingCustomer][machine]');_0x30cb01[_0x031f('0xcd')](_0x14fd99,'18',_0x5bea08)['then'](function(_0x420de3){_0x1bc4de=_0x420de3[_0x031f('0x9c')]==0x1;if(!_0x1bc4de){if(ut[_0x031f('0x9f')](_0x14fd99)>=_0x5bea08[_0x031f('0xa0')]){_0x232b62=ut[_0x031f('0xc3')](_0x14fd99,0xf,'Global');rpcDb[_0x031f('0xa1')](_0x232b62,'[callProgressDetectingCustomer][machine]');}else{rpcDb[_0x031f('0xa1')](_0x14fd99,_0x031f('0xe8'));}}else{_0x14fd99[_0x031f('0xc9')]++;_0x30cb01['incrementPreviewCounters']({'id':_0x14fd99[_0x031f('0xa7')],'field':{'countnoanswerretry':_0x14fd99[_0x031f('0xc9')]}})[_0x031f('0x80')](function(){_0x30cb01[_0x031f('0xa8')](_0x14fd99,_0x1d973d,_0x6d85c8)['then'](function(){});});}});delete this[_0x031f('0x14')][_0x144011[_0x031f('0xbb')]];break;default:if(_0x14fd99[_0x031f('0x75')]){ut[_0x031f('0x7a')](_0x5bea08,_0x031f('0xe9'));ut[_0x031f('0x7b')]('[Dialer][decrementTalkink][no\x20Hangup][Preview]'+_0x5bea08[_0x031f('0x27')],_0x144011);}_0x5bea08[_0x031f('0x41')]+=0x1;_0x14fd99[_0x031f('0xb4')]=ut[_0x031f('0x9f')](_0x14fd99);ut[_0x031f('0x8a')](_0x14fd99,0xc,_0x144011[_0x031f('0xe4')]||_0x144011[_0x031f('0xe5')]);_0x1d973d=_0x5bea08['dialAgentRejectRetryFrequency'];_0x6d85c8=_0x5bea08[_0x031f('0x9e')];rpcDb[_0x031f('0x8f')](_0x14fd99,_0x031f('0xea'));_0x30cb01[_0x031f('0xcd')](_0x14fd99,'20',_0x5bea08)[_0x031f('0x80')](function(_0x5769f6){_0x1bc4de=_0x5769f6[_0x031f('0x9c')]==0x1;if(!_0x1bc4de){if(ut[_0x031f('0x9f')](_0x14fd99)>=_0x5bea08[_0x031f('0xa0')]){_0x232b62=ut[_0x031f('0xc3')](_0x14fd99,0xf,_0x031f('0xc4'));rpcDb['createCustomerFinal'](_0x232b62,_0x031f('0xeb'));}else{rpcDb[_0x031f('0xa1')](_0x14fd99,_0x031f('0xeb'));}delete this[_0x031f('0x14')][_0x144011[_0x031f('0xbb')]];}else{_0x30cb01['swapAdditionalPhones'](_0x14fd99,_0x1d973d,_0x6d85c8)['then'](function(_0x380f9a){});}});}if(!(_0x14fd99[_0x031f('0x75')]&&_0x439095==='16')){ut['updateOriginated'](_0x5bea08,_0x031f('0xec'));logger['info'](_0x031f('0xed'),_0x14fd99[_0x031f('0xac')],_0x031f('0xba'),_0x5bea08[_0x031f('0x27')],'originated:\x20',_0x5bea08['originated']);}if(_0x439095!==_0x031f('0xa9')){delete this[_0x031f('0x14')][_0x144011[_0x031f('0xbb')]];delete this[_0x031f('0x14')][_0x144011['destlinkedid']];}}};Preview[_0x031f('0xd')][_0x031f('0xee')]=function(_0x2af6ef,_0x4b5226,_0xe20656){if(_[_0x031f('0xef')](_0x4b5226)&&_0x031f('0xf0')!==typeof _0x4b5226){return;}if(_['isUndefined'](_0xe20656)&&_0x031f('0xf0')!==typeof _0xe20656){return;}switch(_0xe20656[_0x031f('0xf1')]){case'0':ut[_0x031f('0xf2')](_0x2af6ef,0x0,_0x031f('0xf3'));rpcDb[_0x031f('0xf4')](_0x2af6ef,'[callProgressDetectingAgent][logNoSuch]');break;case'3':ut[_0x031f('0xf2')](_0x2af6ef,0x3,_0x031f('0xf5'));rpcDb[_0x031f('0xf4')](_0x2af6ef,_0x031f('0xf6'));break;case'5':ut[_0x031f('0xf2')](_0x2af6ef,0x5,_0x031f('0xbe'));rpcDb['createAgentHistory'](_0x2af6ef,'[callProgressDetectingAgent][logBusy]');break;case'8':ut[_0x031f('0xf2')](_0x2af6ef,0x8,_0x031f('0xd2'));rpcDb[_0x031f('0xf4')](_0x2af6ef,_0x031f('0xf7'));break;case'22':ut[_0x031f('0xf2')](_0x2af6ef,0x16,_0x031f('0xf8'));rpcDb[_0x031f('0xf4')](_0x2af6ef,'[callProgressDetectingAgent][logAnswerAGI]');break;default:ut[_0x031f('0xf2')](_0x2af6ef,0xc,_0xe20656[_0x031f('0xf1')]);rpcDb[_0x031f('0xf4')](_0x2af6ef,_0x031f('0xf7'));}ut[_0x031f('0xf9')](_0x4b5226,_0x031f('0xfa'));logger[_0x031f('0x59')](_0x031f('0xfb'),_0x2af6ef['uniqueid'],_0x031f('0xba'),_0x4b5226[_0x031f('0x27')],'originated:\x20',_0x4b5226[_0x031f('0x4f')]);delete this[_0x031f('0x14')][_0x2af6ef[_0x031f('0xac')]];};Preview[_0x031f('0xd')][_0x031f('0xcd')]=function(_0x5776a3,_0x3abf03,_0x24529a){return BPromise[_0x031f('0xfc')]()[_0x031f('0x80')](cmHopperAdditionalPhone['verifyAdditionalPhones'](_0x5776a3,_0x3abf03,_0x24529a))['catch'](logger['info']('[verifyAdditionalPhone]\x20'));};Preview[_0x031f('0xd')]['swapAdditionalPhones']=function(_0x2fdecc,_0x4c6a76,_0x5e3808){return BPromise[_0x031f('0xfc')]()[_0x031f('0x80')](cmHopperAdditionalPhone[_0x031f('0xa8')](_0x2fdecc,_0x4c6a76,_0x5e3808))[_0x031f('0x93')](logger[_0x031f('0x59')](_0x031f('0xfd')));};Preview['prototype'][_0x031f('0xc7')]=function(_0x1583f9){return BPromise[_0x031f('0xfc')]()[_0x031f('0x80')](cmHopperAdditionalPhone[_0x031f('0xc7')](_0x1583f9))['catch'](logger[_0x031f('0x59')](_0x031f('0xfe')));};Preview[_0x031f('0xd')][_0x031f('0xff')]=function(_0x18e5c6,_0x2d8a83,_0x1e0b9f,_0x23f968,_0x20bd74){var _0x275dbb=this;return new BPromise(function(_0x1c4905,_0x59df88){if(_[_0x031f('0x100')](_0x2d8a83)||_['isNil'](_0x2d8a83[_0x031f('0x101')])||_['isNil'](_0x2d8a83[_0x031f('0x102')])||_[_0x031f('0x100')](_0x2d8a83['VoiceQueueId'])){_0x59df88(ut[_0x031f('0x4e')](_0x031f('0x103'),_0x23f968,_0x20bd74));return;}var _0x538211=uuid['v4']();var _0x5f320b=_0x275dbb[_0x031f('0x11')][_0x2d8a83[_0x031f('0x71')][_0x031f('0x27')]];var _0x194c6a=_0x1e0b9f?_0x275dbb[_0x031f('0x15')][_0x1e0b9f]['id']:undefined;_0x275dbb['actions'][_0x538211]=new Action(_0x2d8a83,_0x5f320b,_0x538211,_0x1e0b9f,_0x194c6a);var _0x206bcd=_0x275dbb[_0x031f('0x14')][_0x538211];_0x206bcd['unlockAgent']=_0x23f968;_0x206bcd['activeContact']=_0x20bd74;_0x206bcd['lookAgent']=_0x1e0b9f;if(_[_0x031f('0x104')](_0x18e5c6)){_0x275dbb[_0x031f('0x105')](_0x206bcd,_0x5f320b,_0x2d8a83,_0x1e0b9f)[_0x031f('0x80')](function(_0x31a6cf){logger[_0x031f('0x59')](_0x031f('0x106'),_0x031f('0x107')+_0x206bcd[_0x031f('0x73')]+_0x031f('0x108')+_0x206bcd[_0x031f('0xa7')],JSON[_0x031f('0x5b')](_0x31a6cf));ami[_0x031f('0x25')](_0x031f('0x109'),ut['buildObj'](_0x206bcd,_0x031f('0x10a'),_0x275dbb[_0x031f('0x11')][_0x206bcd[_0x031f('0x73')]]));_0x1c4905(ut[_0x031f('0x4e')]('Calling'));})['catch'](function(_0x538697){ut[_0x031f('0x63')](_0x031f('0x10b'),_0x538697);_0x59df88(ut[_0x031f('0x4e')]('Call\x20failed',_0x23f968,_0x20bd74));});}else{_0x5f320b[_0x031f('0x37')]+=0x1;ut[_0x031f('0x10c')](_0x206bcd);rpcDb[_0x031f('0x10d')](_0x206bcd,_0x031f('0x10e'));delete _0x275dbb[_0x031f('0x14')][_0x538211];_0x59df88(ut[_0x031f('0x4e')](_0x031f('0x10f'),_0x23f968,_0x20bd74));}});};Preview[_0x031f('0xd')][_0x031f('0x95')]=function(_0x1df426){return!_[_0x031f('0x100')](_0x1df426)&&!_['isNil'](_0x1df426[_0x031f('0x27')])&&!_['isNil'](_0x1df426['active'])&&_0x1df426['active']&&!_[_0x031f('0x100')](this[_0x031f('0x13')][util[_0x031f('0x5c')](_0x031f('0x110'),_0x1df426[_0x031f('0x27')])])&&!_['isNil'](this['trunks'][util[_0x031f('0x5c')](_0x031f('0x110'),_0x1df426[_0x031f('0x27')])][_0x031f('0x111')])&&(this[_0x031f('0x13')][util[_0x031f('0x5c')]('SIP/%s',_0x1df426[_0x031f('0x27')])]['status']===_0x031f('0x112')||this[_0x031f('0x13')][util['format']('SIP/%s',_0x1df426[_0x031f('0x27')])][_0x031f('0x111')]===_0x031f('0x113'));};Preview[_0x031f('0xd')][_0x031f('0x86')]=function(_0x41c07d,_0x182d38){var _0x132ff6=this;return new BPromise(function(_0x38555e,_0x246b70){_0x132ff6[_0x031f('0x114')](_0x41c07d,_0x182d38)[_0x031f('0x80')](function(_0x22e7a0){_0x38555e(_[_0x031f('0x115')](_0x22e7a0,[_0x031f('0x4e')]));})[_0x031f('0x93')](function(_0x5f411e){if(_0x5f411e[_0x031f('0x116')]){rpcDb['unlockContact'](_0x41c07d);}if(_0x5f411e[_0x031f('0x56')]){rpcDb['disableContact'](_0x41c07d);}_0x246b70(_[_0x031f('0x115')](_0x5f411e,[_0x031f('0x4e')]));});});};Preview['prototype'][_0x031f('0x114')]=function(_0x3075fb,_0x320945){var _0x4ab43d=this;return new BPromise(function(_0x2178b5,_0x26e802){var _0x4d1e45,_0xb29553;rpcDb[_0x031f('0x117')](_0x3075fb)['then'](function(_0x3d49ea){if(!_[_0x031f('0x100')](_0x3d49ea[0x0])){_0xb29553=_0x3d49ea[0x0][_0x031f('0x118')]?![]:!![];_0x4d1e45=_0x3d49ea[0x0][_0x031f('0x118')]?!![]:![];_0x4d1e45=_0x320945?!![]:_0x4d1e45;}var _0x6b50e7=_0x4ab43d[_0x031f('0x119')](_0x3d49ea);if(_0x6b50e7['isValid']){rpcDb[_0x031f('0x11a')](_['pick'](_0x3d49ea[0x0],['VoiceQueueId',_0x031f('0x102')]))[_0x031f('0x80')](function(_0x1af1d9){_0x4ab43d[_0x031f('0xff')](_0x1af1d9,_0x3d49ea[0x0],_0x320945,_0xb29553,_0x4d1e45)[_0x031f('0x80')](function(_0x46d57a){_0x2178b5(_0x46d57a);})[_0x031f('0x93')](function(_0x49fe3e){_0x26e802(_0x49fe3e);});})[_0x031f('0x93')](function(_0x910fe8){ut[_0x031f('0x63')]('[Preview][checkIsBlackList]',_0x910fe8);_0x26e802(ut[_0x031f('0x4e')]('Call\x20unsuccessful',_0xb29553,_0x4d1e45));});}else{_0x26e802(ut['message'](_0x6b50e7[_0x031f('0x4e')],_0xb29553,_0x4d1e45));}})[_0x031f('0x93')](function(_0x2725d9){ut[_0x031f('0x63')](_0x031f('0x11b'),_0x2725d9);_0x26e802(ut[_0x031f('0x4e')](_0x031f('0x11c'),![],!![]));});});};Preview[_0x031f('0xd')]['validateContact']=function(_0xa32900){if(_[_0x031f('0x100')](_0xa32900)||_[_0x031f('0x104')](_0xa32900)||!_[_0x031f('0x100')](_0xa32900[0x0]['Agent'])&&_[_0x031f('0x100')](_0xa32900[0x0][_0x031f('0x84')][_0x031f('0x27')])){ut['logger']('[Preview][validateContact][Empty\x20Contact]',_0xa32900);return{'isValid':![],'message':_0x031f('0x11d')};}var _0x3fbc01=this[_0x031f('0x11')][_0xa32900[0x0][_0x031f('0x71')][_0x031f('0x27')]];_0x3fbc01[_0x031f('0x4e')]=_0x031f('0x97');if(_[_0x031f('0x100')](_0x3fbc01)){ut[_0x031f('0x63')]('[Preview][validateContact][Empty\x20Campaign]',_0x3fbc01);return{'isValid':![],'message':_0x031f('0x11e')};}if(!this[_0x031f('0x95')](_0x3fbc01[_0x031f('0x55')])){ut[_0x031f('0x63')]('[Preview][validateContact][Trunk\x20not\x20working\x20correctly]',_0x031f('0x11f')+_0x3fbc01[_0x031f('0x27')]+_0x031f('0x120'));if(!this[_0x031f('0x95')](_0x3fbc01[_0x031f('0x96')])){ut[_0x031f('0x63')](_0x031f('0x121'),_0x3fbc01['name']+_0x031f('0x122'));return{'isValid':![],'message':'Trunk\x20not\x20working\x20correctly'};}}if(!ut[_0x031f('0x123')](_0x3fbc01['dialActive'])){ut[_0x031f('0x63')]('[Preview][validateContact][Campaign\x20Active]',_0x3fbc01[_0x031f('0x27')]+_0x031f('0x124'));return{'isValid':![],'message':_0x031f('0x11f')+_0x3fbc01['name']+_0x031f('0x124')};}return{'isValid':!![],'message':_0x031f('0x125')};};Preview[_0x031f('0xd')][_0x031f('0x105')]=function(_0x3978bb,_0x149831,_0x3af6e3,_0x1d86e8){var _0x41ebb4=this;return new BPromise(function(_0x5e36ec,_0x2ad5fe){var _0x40a4c7=_0x3978bb[_0x031f('0xac')];var _0x11fd2f=_0x41ebb4[_0x031f('0x95')](_0x149831[_0x031f('0x55')])?util[_0x031f('0x5c')](_0x031f('0x126'),_0x149831['Trunk']['name'],_[_0x031f('0x100')](_0x149831['dialPrefix'])?'':_0x149831[_0x031f('0x127')]['trim']()||'',_0x149831['dialCutDigit']>0x0?_0x3af6e3[_0x031f('0x102')][_0x031f('0x128')](_0x149831[_0x031f('0x129')]):_0x3af6e3[_0x031f('0x102')]):util[_0x031f('0x5c')]('SIP/%s/%s%s',_[_0x031f('0x100')](_0x149831['TrunkBackup'])?_0x149831[_0x031f('0x55')]['name']:_0x149831['TrunkBackup'][_0x031f('0x27')],_[_0x031f('0x100')](_0x149831[_0x031f('0x127')])?'':_0x149831[_0x031f('0x127')][_0x031f('0x12a')]()||'',_0x149831['dialCutDigit']>0x0?_0x3af6e3['phone']['substring'](_0x149831[_0x031f('0x129')]):_0x3af6e3['phone']);var _0x3e4d54=_0x41ebb4[_0x031f('0x95')](_0x149831['Trunk'])?ut[_0x031f('0x12b')](_0x149831[_0x031f('0x55')][_0x031f('0x12c')],_0x149831['dialOriginateCallerIdName'],_0x149831['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0x031f('0x12d')](_0x149831[_0x031f('0x33')],_0x149831[_0x031f('0x12e')]):_0x149831['dialOriginateCallerIdNumber']):ut['getCallerId'](_[_0x031f('0x100')](_0x149831['TrunkBackup'])?_0x149831['Trunk'][_0x031f('0x12c')]:_0x149831[_0x031f('0x96')][_0x031f('0x12c')],_0x149831['dialOriginateCallerIdName'],_0x149831['dialRandomLastDigitCallerIdNumber']>0x0?ut[_0x031f('0x12d')](_0x149831[_0x031f('0x33')],_0x149831[_0x031f('0x12e')]):_0x149831[_0x031f('0x33')]);if(_0x3e4d54){_0x3978bb[_0x031f('0x12f')]=ut[_0x031f('0x130')](_0x3e4d54);_0x3978bb[_0x031f('0x131')]=ut[_0x031f('0x132')](_0x3e4d54);}var _0x5c0dcd=ut[_0x031f('0x133')](_0x149831,_0x3af6e3,_0x11fd2f,_0x3e4d54,_0x40a4c7,_0x3978bb);_[_0x031f('0x134')](_0x3978bb,ut[_0x031f('0x135')](_0x5c0dcd));_0x3978bb['starttime']=moment()[_0x031f('0x5c')]('YYYY-MM-DD\x20HH:mm:ss');ami[_0x031f('0x77')](ut[_0x031f('0x136')](_0x3978bb,_0x149831,_0x5c0dcd,_0x3978bb[_0x031f('0xa5')],_0x1d86e8))[_0x031f('0x80')](function(_0xec37e){_0x149831[_0x031f('0x4f')]+=0x1;logger['info'](_0x031f('0x137'),_0x40a4c7,_0x031f('0xba'),_0x149831[_0x031f('0x27')],'originated:\x20',_0x149831[_0x031f('0x4f')]);_0x5e36ec(_0xec37e);})[_0x031f('0x93')](function(_0x596b59){ut[_0x031f('0xf2')](_0x3978bb,0xe,_0x031f('0x138'));rpcDb[_0x031f('0xf4')](_0x3978bb,'[originateFailure][logOriginateFailure]');_0x2ad5fe(_0x596b59);});});};Preview['prototype'][_0x031f('0x1d')]=function(_0x3bdbb3){if(this[_0x031f('0x14')][_0x3bdbb3[_0x031f('0xbb')]]){this[_0x031f('0x14')][_0x3bdbb3[_0x031f('0xbb')]][_0x031f('0x78')]=_0x3bdbb3[_0x031f('0x78')];}};Preview[_0x031f('0xd')]['syncOriginateResponse']=function(_0x322e44){var _0x117fc2=this;var _0x4fcf6=this[_0x031f('0x14')][_0x322e44['actionid']];if(_0x4fcf6){if(_0x4fcf6['lookAgent']&&this[_0x031f('0x15')][_0x4fcf6['lookAgent']]){ut[_0x031f('0x139')](_0x4fcf6,this[_0x031f('0x15')][_0x4fcf6['lookAgent']][_0x031f('0x27')],this[_0x031f('0x15')][_0x4fcf6[_0x031f('0x13a')]]['id']);}var _0x4c97ad=_[_0x031f('0x13b')](_0x4fcf6);_0x4c97ad[_0x031f('0x13c')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');var _0x4d3f33=_0x117fc2[_0x031f('0x11')][_0x4fcf6[_0x031f('0x73')]];if(ut[_0x031f('0x13d')](_0x322e44[_0x031f('0x13e')])){if(_0x4fcf6[_0x031f('0xa4')]){rpcDb[_0x031f('0x13f')](_0x4fcf6[_0x031f('0xa7')]);}if(_0x4fcf6['activeContact']){rpcDb[_0x031f('0x88')](_0x4fcf6['idContact']);}ami[_0x031f('0x25')](_0x031f('0x140'),ut['buildObj'](_0x4fcf6,_0x031f('0x141'),this[_0x031f('0x11')][_0x4fcf6[_0x031f('0x73')]]));this[_0x031f('0xee')](_0x4c97ad,_0x4d3f33,_0x322e44);}else{_0x4fcf6[_0x031f('0x142')]=moment()[_0x031f('0x5c')](_0x031f('0x89'));ut[_0x031f('0xf2')](_0x4c97ad,0x4,'Answer');rpcDb[_0x031f('0xf4')](_0x4c97ad,_0x031f('0x143'));}}};Preview[_0x031f('0xd')]['syncHangup']=function(_0x4bc4fa){var _0xa65f3f=this;var _0x4ec17a=this[_0x031f('0x14')][_0x4bc4fa['linkedid']];var _0x5b832d;if(_0x4ec17a){_0x5b832d=this['campaignsPreview'][_0x4ec17a[_0x031f('0x73')]];logger[_0x031f('0x59')](_0x031f('0x144'),_0x4bc4fa[_0x031f('0xbb')],_0x031f('0xba'),_0x5b832d[_0x031f('0x27')],'pTalking:\x20',_0x5b832d[_0x031f('0x29')]);}if(this['actions'][_0x4bc4fa['linkedid']]&&_0x4bc4fa['linkedid']!==_0x4bc4fa[_0x031f('0xac')]){if(_0x4bc4fa[_0x031f('0x145')]==='16'&&this[_0x031f('0x14')][_0x4bc4fa[_0x031f('0xbb')]][_0x031f('0x75')]){this[_0x031f('0x146')](_0x4bc4fa,_0x4bc4fa[_0x031f('0xbb')],_0x4bc4fa[_0x031f('0x145')]);}else if(this[_0x031f('0x14')][_0x4bc4fa[_0x031f('0xbb')]]['dialAnswer']){logger[_0x031f('0x59')](_0x031f('0x147'),_0x4bc4fa[_0x031f('0xbb')],_0x4bc4fa[_0x031f('0x145')],'\x20Queue',_0x5b832d[_0x031f('0x27')],'pTalking:\x20',_0x5b832d[_0x031f('0x29')]);this[_0x031f('0x146')](_0x4bc4fa,_0x4bc4fa[_0x031f('0xbb')],_0x4bc4fa['cause']);}}else if(_0x4ec17a&&_[_0x031f('0x100')](_0x4ec17a['statedesc'])&&_0x5b832d[_0x031f('0x148')]&&_0x4bc4fa[_0x031f('0xbb')]===_0x4bc4fa[_0x031f('0xac')]&&_[_0x031f('0x100')](_0x4bc4fa[_0x031f('0xf1')])&&_0x4bc4fa['cause']==='16'&&_0x4bc4fa[_0x031f('0x149')]==='6'&&_[_0x031f('0xef')](_0x4ec17a['transfer'])){if(_0x4ec17a['unlockAgent']){rpcDb['unlockContact'](_0x4ec17a[_0x031f('0xa7')]);}if(_0x4ec17a[_0x031f('0xa5')]){rpcDb[_0x031f('0x88')](_0x4ec17a[_0x031f('0xa7')]);}_0x4bc4fa[_0x031f('0xf1')]='22';this[_0x031f('0xee')](_0x4ec17a,_0x5b832d,_0x4bc4fa);}else if(_0x4ec17a&&_0x4ec17a[_0x031f('0x14a')]){if(_0x4bc4fa['cause']==='16'&&this[_0x031f('0x14')][_0x4bc4fa[_0x031f('0xbb')]][_0x031f('0x75')]){logger[_0x031f('0x59')]('[syncHangup][talking][transfer]',_0x4bc4fa[_0x031f('0xbb')],_0x4bc4fa[_0x031f('0x145')],_0x031f('0xba'),_0x5b832d['name'],_0x031f('0x74'),_0x5b832d['pTalking']);this[_0x031f('0x146')](_0x4bc4fa,_0x4bc4fa[_0x031f('0xbb')],_0x4bc4fa[_0x031f('0x145')]);}else if(this[_0x031f('0x14')][_0x4bc4fa[_0x031f('0xbb')]][_0x031f('0x75')]){logger[_0x031f('0x59')](_0x031f('0x147'),_0x4bc4fa[_0x031f('0xbb')],_0x4bc4fa[_0x031f('0x145')],_0x031f('0xba'),_0x5b832d[_0x031f('0x27')],_0x031f('0x74'),_0x5b832d['pTalking']);this[_0x031f('0x146')](_0x4bc4fa,_0x4bc4fa[_0x031f('0xbb')],_0x4bc4fa['cause']);}}};Preview[_0x031f('0xd')][_0x031f('0x1c')]=function(_0x4d1330){if(this[_0x031f('0x14')][_0x4d1330[_0x031f('0x14b')]]&&_0x4d1330['destlinkedid']!==_0x4d1330['destuniqueid']){this[_0x031f('0x146')](_0x4d1330,_0x4d1330['destlinkedid'],_0x4d1330[_0x031f('0xe5')]);}};Preview['prototype'][_0x031f('0x1b')]=function(_0x34f035){if(this[_0x031f('0x14')][_0x34f035['linkedid']]&&_0x34f035['linkedid']!==_0x34f035[_0x031f('0xac')]&&!this[_0x031f('0x14')][_0x34f035[_0x031f('0xbb')]]['dialAnswer']){if(_0x34f035[_0x031f('0x145')]==='1'){this[_0x031f('0x146')](_0x34f035,_0x34f035['linkedid'],_0x34f035['cause']);}}};Preview[_0x031f('0xd')][_0x031f('0x14c')]=function(_0x40770c,_0x10c71c,_0x69999b){if(this['actions'][_0x40770c]){if(_['isNil'](this[_0x031f('0x14')][_0x40770c][_0x031f('0x14d')])){this['actions'][_0x40770c][_0x031f('0x14d')]={};}this[_0x031f('0x14')][_0x40770c]['variables'][_0x10c71c]=_0x69999b;}};Preview[_0x031f('0xd')][_0x031f('0x1f')]=function(_0x4ac1c6){try{if(!_[_0x031f('0x100')](_0x4ac1c6)){if(ut[_0x031f('0x14e')](_['keys'](_0x4ac1c6[_0x031f('0x14f')])[0x0])){this[_0x031f('0x14c')](_0x4ac1c6[_0x031f('0xac')],_['keys'](_0x4ac1c6[_0x031f('0x14f')])[0x0],_0x4ac1c6['value']);}}}catch(_0x7362fa){logger[_0x031f('0x150')](_0x031f('0x151'),util[_0x031f('0x152')](_0x7362fa,{'showHidden':![],'depth':null}));}};Preview[_0x031f('0xd')][_0x031f('0x21')]=function(_0x597358){if(_0x597358){if(this[_0x031f('0x14')][_0x597358[_0x031f('0x153')]]){this[_0x031f('0x14')][_0x597358[_0x031f('0x153')]][_0x031f('0x14a')]=!![];}}};Preview['prototype'][_0x031f('0x23')]=function(_0x491908){if(_0x491908){if(this[_0x031f('0x14')][_0x491908[_0x031f('0x154')]]){this[_0x031f('0x14')][_0x491908[_0x031f('0x154')]][_0x031f('0x14a')]=!![];}}};module[_0x031f('0x155')]=Preview;
\ No newline at end of file
index 258a3eb..dc9daab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf95e=['inspect','resolve','catch','[createHistory]\x20','createHistory','then','moveContactManagedDialer','[moveContactManagedDialer]\x20','checkIsBlackList','getContactPreview','[getContactPreview]\x20','createAgentHistory','createCustomerFinal','rescheduleContact','UserId','active','[rescheduleContact]\x20','countReScheduled','[countReScheduled]\x20','unlockContact','[unlockContact]\x20','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt','answertime','queuecallercompleteAt','endtime','connectedlinename','membername','context','from-sip','exten','xcally-motion-preview','assigned','lastAssignedTo','queuecallerexitreason','COMPLETED','[voiceQueueReport]\x20','getContactRecallMe','[GetContactRecallMe]\x20','rescheduleContactInQueue','util','../../../config/logger','preview','lodash','../rpc/cmHopper','../rpc/cmHopperHistory','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport'];(function(_0x509c83,_0x511882){var _0x534626=function(_0x9d21cf){while(--_0x9d21cf){_0x509c83['push'](_0x509c83['shift']());}};_0x534626(++_0x511882);}(_0xf95e,0x1a6));var _0xef95=function(_0x313490,_0x38999e){_0x313490=_0x313490-0x0;var _0x526f6b=_0xf95e[_0x313490];return _0x526f6b;};'use strict';var util=require(_0xef95('0x0'));var BPromise=require('bluebird');var logger=require(_0xef95('0x1'))(_0xef95('0x2'));var _=require(_0xef95('0x3'));var cmHopper=require(_0xef95('0x4'));var cmHopperFinal=require('../rpc/cmHopperFinal');var cmHopperHistory=require(_0xef95('0x5'));var cmHopperBlack=require(_0xef95('0x6'));var voiceQueueRt=require(_0xef95('0x7'));var agentReportPreview=require(_0xef95('0x8'));var voiceQueueReport=require(_0xef95('0x9'));function loggerCatch(_0x58c751){return function(_0x1fe0be){logger['error'](_0x58c751,util[_0xef95('0xa')](_0x1fe0be,{'showHidden':![],'depth':null}));};}function create(_0x4d23e5){return BPromise[_0xef95('0xb')]()['then'](cmHopperHistory['createHistory'](_0x4d23e5))[_0xef95('0xc')](loggerCatch(_0xef95('0xd')));}function createAgent(_0x1746cd){return BPromise['resolve']()['then'](agentReportPreview[_0xef95('0xe')](_0x1746cd))['catch'](loggerCatch(_0xef95('0xd')));}function moveContact(_0x1aa957){return BPromise[_0xef95('0xb')]()[_0xef95('0xf')](cmHopper[_0xef95('0x10')](_0x1aa957,!![]))[_0xef95('0xc')](loggerCatch(_0xef95('0x11')));}exports[_0xef95('0x12')]=function(_0xa5eef){return BPromise[_0xef95('0xb')]()['then'](cmHopperBlack[_0xef95('0x12')](_0xa5eef))['catch'](loggerCatch('[checkIsBlackList]\x20'));};exports[_0xef95('0x13')]=function(_0x493af9){return BPromise[_0xef95('0xb')]()[_0xef95('0xf')](cmHopper[_0xef95('0x13')](_0x493af9))[_0xef95('0xc')](loggerCatch(_0xef95('0x14')));};exports['createHistory']=function(_0x525eb2,_0x9a32ee){create(_0x525eb2)['catch'](loggerCatch(_0x9a32ee));moveContact(_0x525eb2)['catch'](loggerCatch(_0x9a32ee));};exports[_0xef95('0x15')]=function(_0x40938e,_0x1d6328){createAgent(_0x40938e)[_0xef95('0xc')](loggerCatch(_0x1d6328));};exports['createCustomerHistory']=function(_0x4bd4f6,_0x17faa0){create(_0x4bd4f6)[_0xef95('0xc')](loggerCatch(_0x17faa0));};exports[_0xef95('0x16')]=function(_0x1574c3,_0x3521cf){moveContact(_0x1574c3)['catch'](loggerCatch(_0x3521cf));};exports[_0xef95('0x17')]=function(_0x436952,_0x536c46,_0x4d4945){if(_0x536c46){_0x436952[_0xef95('0x18')]=null;}if(_0x4d4945){_0x436952[_0xef95('0x19')]=![];}return BPromise[_0xef95('0xb')]()[_0xef95('0xf')](cmHopper[_0xef95('0x17')](_0x436952))['catch'](loggerCatch(_0xef95('0x1a')));};exports[_0xef95('0x1b')]=function(_0x50cdc0){return BPromise[_0xef95('0xb')]()[_0xef95('0xf')](cmHopper[_0xef95('0x1b')](_0x50cdc0))[_0xef95('0xc')](loggerCatch(_0xef95('0x1c')));};exports[_0xef95('0x1d')]=function(_0x37aa0f){return BPromise['resolve']()['then'](cmHopper[_0xef95('0x1d')]({'UserId':null},_0x37aa0f,0x1))[_0xef95('0xc')](loggerCatch(_0xef95('0x1e')));};exports['disableContact']=function(_0x15b2e2){return BPromise[_0xef95('0xb')]()['then'](cmHopper[_0xef95('0x1d')]({'active':![]},_0x15b2e2,0x1))[_0xef95('0xc')](loggerCatch('[activeContact]\x20'));};exports['crateCustomerReportQueue']=function(_0x2cd099){var _0x23ab19={};_0x23ab19[_0xef95('0x1f')]=_0x2cd099[_0xef95('0x1f')];_0x23ab19[_0xef95('0x20')]=_0x2cd099['uniqueid'];_0x23ab19[_0xef95('0x21')]=_0x2cd099['calleridnum'];_0x23ab19['calleridname']=_0x2cd099[_0xef95('0x22')];_0x23ab19[_0xef95('0x23')]=_0x2cd099[_0xef95('0x23')];_0x23ab19[_0xef95('0x24')]=_0x2cd099[_0xef95('0x25')];_0x23ab19['queuecallerleaveAt']=_0x2cd099[_0xef95('0x25')];_0x23ab19['queuecallercomplete']=0x1;_0x23ab19[_0xef95('0x26')]=_0x2cd099[_0xef95('0x27')];_0x23ab19[_0xef95('0x28')]=_0x2cd099[_0xef95('0x29')];_0x23ab19[_0xef95('0x2a')]=_0xef95('0x2b');_0x23ab19[_0xef95('0x2c')]=_0xef95('0x2d');_0x23ab19['holdtime']=0x0;_0x23ab19[_0xef95('0x2e')]=0x1;_0x23ab19[_0xef95('0x2f')]=_0x2cd099['membername'];_0x23ab19[_0xef95('0x30')]=_0xef95('0x31');return BPromise[_0xef95('0xb')]()['then'](voiceQueueReport['create'](_0x23ab19))['catch'](loggerCatch(_0xef95('0x32')));};exports[_0xef95('0x33')]=function(_0x475a81,_0x41a5aa){return BPromise[_0xef95('0xb')]()[_0xef95('0xf')](cmHopper[_0xef95('0x33')](_0x475a81,_0x41a5aa))[_0xef95('0xc')](loggerCatch(_0xef95('0x34')));};exports[_0xef95('0x35')]=function(_0x506c94){return BPromise['resolve']()[_0xef95('0xf')](cmHopper['rescheduleContact'](_0x506c94,!![],!![]))[_0xef95('0xc')](loggerCatch('[rescheduleContactInQueue]\x20'));};
\ No newline at end of file
+var _0xaeb9=['queuecallerleaveAt','answertime','queuecallercomplete','queuecallercompleteAt','membername','from-sip','exten','xcally-motion-preview','assigned','COMPLETED','create','getContactRecallMe','rescheduleContactInQueue','rescheduleContact','[rescheduleContactInQueue]\x20','../../../config/logger','lodash','../rpc/cmHopper','../rpc/cmHopperFinal','../rpc/cmHopperBlack','../rpc/voiceQueueRt','../rpc/agentReportPreview','../rpc/voiceQueueReport','error','inspect','resolve','createHistory','catch','then','[createHistory]\x20','checkIsBlackList','[checkIsBlackList]\x20','getContactPreview','createAgentHistory','createCustomerHistory','createCustomerFinal','UserId','active','[rescheduleContact]\x20','countReScheduled','unlockContact','[unlockContact]\x20','disableContact','crateCustomerReportQueue','type','uniqueid','calleridnum','calleridname','queue','queuecallerjoinAt'];(function(_0x43d701,_0x4bb2e9){var _0x2ec4c6=function(_0x4d9765){while(--_0x4d9765){_0x43d701['push'](_0x43d701['shift']());}};_0x2ec4c6(++_0x4bb2e9);}(_0xaeb9,0xd7));var _0x9aeb=function(_0x5f0452,_0x1773dd){_0x5f0452=_0x5f0452-0x0;var _0x34d12f=_0xaeb9[_0x5f0452];return _0x34d12f;};'use strict';var util=require('util');var BPromise=require('bluebird');var logger=require(_0x9aeb('0x0'))('preview');var _=require(_0x9aeb('0x1'));var cmHopper=require(_0x9aeb('0x2'));var cmHopperFinal=require(_0x9aeb('0x3'));var cmHopperHistory=require('../rpc/cmHopperHistory');var cmHopperBlack=require(_0x9aeb('0x4'));var voiceQueueRt=require(_0x9aeb('0x5'));var agentReportPreview=require(_0x9aeb('0x6'));var voiceQueueReport=require(_0x9aeb('0x7'));function loggerCatch(_0x56de9d){return function(_0x5b9224){logger[_0x9aeb('0x8')](_0x56de9d,util[_0x9aeb('0x9')](_0x5b9224,{'showHidden':![],'depth':null}));};}function create(_0x3f1c4d){return BPromise[_0x9aeb('0xa')]()['then'](cmHopperHistory[_0x9aeb('0xb')](_0x3f1c4d))[_0x9aeb('0xc')](loggerCatch('[createHistory]\x20'));}function createAgent(_0x132bb2){return BPromise[_0x9aeb('0xa')]()[_0x9aeb('0xd')](agentReportPreview[_0x9aeb('0xb')](_0x132bb2))[_0x9aeb('0xc')](loggerCatch(_0x9aeb('0xe')));}function moveContact(_0x528e89){return BPromise[_0x9aeb('0xa')]()[_0x9aeb('0xd')](cmHopper['moveContactManagedDialer'](_0x528e89,!![]))['catch'](loggerCatch('[moveContactManagedDialer]\x20'));}exports[_0x9aeb('0xf')]=function(_0x207a6c){return BPromise['resolve']()['then'](cmHopperBlack[_0x9aeb('0xf')](_0x207a6c))[_0x9aeb('0xc')](loggerCatch(_0x9aeb('0x10')));};exports['getContactPreview']=function(_0x8d5d24){return BPromise[_0x9aeb('0xa')]()[_0x9aeb('0xd')](cmHopper[_0x9aeb('0x11')](_0x8d5d24))[_0x9aeb('0xc')](loggerCatch('[getContactPreview]\x20'));};exports['createHistory']=function(_0x8ae179,_0xc5befb){create(_0x8ae179)['catch'](loggerCatch(_0xc5befb));moveContact(_0x8ae179)[_0x9aeb('0xc')](loggerCatch(_0xc5befb));};exports[_0x9aeb('0x12')]=function(_0x22fb94,_0x212c58){createAgent(_0x22fb94)[_0x9aeb('0xc')](loggerCatch(_0x212c58));};exports[_0x9aeb('0x13')]=function(_0x1e5342,_0x580dad){create(_0x1e5342)[_0x9aeb('0xc')](loggerCatch(_0x580dad));};exports[_0x9aeb('0x14')]=function(_0x518465,_0x3c0263){moveContact(_0x518465)[_0x9aeb('0xc')](loggerCatch(_0x3c0263));};exports['rescheduleContact']=function(_0x3d16cb,_0x5e64de,_0x2957b4){if(_0x5e64de){_0x3d16cb[_0x9aeb('0x15')]=null;}if(_0x2957b4){_0x3d16cb[_0x9aeb('0x16')]=![];}return BPromise[_0x9aeb('0xa')]()['then'](cmHopper['rescheduleContact'](_0x3d16cb))[_0x9aeb('0xc')](loggerCatch(_0x9aeb('0x17')));};exports[_0x9aeb('0x18')]=function(_0x357f33){return BPromise['resolve']()[_0x9aeb('0xd')](cmHopper['countReScheduled'](_0x357f33))[_0x9aeb('0xc')](loggerCatch('[countReScheduled]\x20'));};exports['unlockContact']=function(_0x183970){return BPromise[_0x9aeb('0xa')]()[_0x9aeb('0xd')](cmHopper[_0x9aeb('0x19')]({'UserId':null},_0x183970,0x1))['catch'](loggerCatch(_0x9aeb('0x1a')));};exports[_0x9aeb('0x1b')]=function(_0x2c77d2){return BPromise[_0x9aeb('0xa')]()[_0x9aeb('0xd')](cmHopper['unlockContact']({'active':![]},_0x2c77d2,0x1))[_0x9aeb('0xc')](loggerCatch('[activeContact]\x20'));};exports[_0x9aeb('0x1c')]=function(_0x4e8c8c){var _0xe23e87={};_0xe23e87['type']=_0x4e8c8c[_0x9aeb('0x1d')];_0xe23e87[_0x9aeb('0x1e')]=_0x4e8c8c['uniqueid'];_0xe23e87[_0x9aeb('0x1f')]=_0x4e8c8c['calleridnum'];_0xe23e87[_0x9aeb('0x20')]=_0x4e8c8c[_0x9aeb('0x20')];_0xe23e87[_0x9aeb('0x21')]=_0x4e8c8c['queue'];_0xe23e87[_0x9aeb('0x22')]=_0x4e8c8c['answertime'];_0xe23e87[_0x9aeb('0x23')]=_0x4e8c8c[_0x9aeb('0x24')];_0xe23e87[_0x9aeb('0x25')]=0x1;_0xe23e87[_0x9aeb('0x26')]=_0x4e8c8c['endtime'];_0xe23e87['connectedlinename']=_0x4e8c8c[_0x9aeb('0x27')];_0xe23e87['context']=_0x9aeb('0x28');_0xe23e87[_0x9aeb('0x29')]=_0x9aeb('0x2a');_0xe23e87['holdtime']=0x0;_0xe23e87[_0x9aeb('0x2b')]=0x1;_0xe23e87['lastAssignedTo']=_0x4e8c8c[_0x9aeb('0x27')];_0xe23e87['queuecallerexitreason']=_0x9aeb('0x2c');return BPromise[_0x9aeb('0xa')]()[_0x9aeb('0xd')](voiceQueueReport[_0x9aeb('0x2d')](_0xe23e87))[_0x9aeb('0xc')](loggerCatch('[voiceQueueReport]\x20'));};exports[_0x9aeb('0x2e')]=function(_0x3d1dc5,_0x443e4a){return BPromise[_0x9aeb('0xa')]()['then'](cmHopper[_0x9aeb('0x2e')](_0x3d1dc5,_0x443e4a))[_0x9aeb('0xc')](loggerCatch('[GetContactRecallMe]\x20'));};exports[_0x9aeb('0x2f')]=function(_0x33a9de){return BPromise[_0x9aeb('0xa')]()['then'](cmHopper[_0x9aeb('0x30')](_0x33a9de,!![],!![]))[_0x9aeb('0xc')](loggerCatch(_0x9aeb('0x31')));};
\ No newline at end of file
index f9abb99..54d8bd3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2be=['dialAnswer','calleridname','countnoanswerretry','countglobal','callback','callbackuniqueid','sipcallid','xmd-voicequeueid','xmd-queue','xmd-listid','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqosrttbridged','rtpaudioqos','rtpaudioqoslossbridged','rtpaudioqosrtt','bridgepeer','bridgepvtcallid','getCallerIdRandom','\x5cw{0,','pow','replace','random','extractCalleridName','match','extractCalleridNumber','util','lodash','moment','../../../../config/logger','preview','env','XCALLY_IP_AGI','127.0.0.1','milliseconds','diff','seconds','error','logger','info','loggerError','logger2','inspect','message','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','addVariables','Queue','name','calleridnum','ContactId','VoiceQueueId','dialOriginateTimeout','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialPreviewUrl','\x22agi://%s/square,%s\x22','NONE','originatecalleridnum','originatecalleridname','xcally-motion-preview','Call-Type:\x20PREVIEW','_XCALLY_MIXMONITOR_UNIQUEID','Contact','hasOwnProperty','isNil','tags','createdAt','%s%s','toUpper','toLowerVariables','toLower','updateOriginated','originated','YYYY-MM-DD\x20HH:mm:ss','state','Blacklist','starttime','responsetime','logAgent','statedesc','ringtime','logLookAgent','membername','UserId','logCustomer','endtime','talktime','answertime','isFailure','Failure','variablesAction','RECALL','BOOKED','uniqueid','originate','timeout','totalGlobal','countbusyretry','countcongestionretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone','Global','active','scheduledat','add','minutes','ListId','decrementTalkink','pTalking','[decrementTalkink]\x20is\x20null\x20or\x20undefined','IsNotLoggedIn','buildObj','lastevent','queue','interface','channelAgent','motionChannel','voice','mandatoryDisposition','buildAcw','agentReadyId','not_inuse','status','push','createBody','CampaignId','filterKey','type','campaigntype'];(function(_0x1b3564,_0x16c919){var _0x504069=function(_0x9322b6){while(--_0x9322b6){_0x1b3564['push'](_0x1b3564['shift']());}};_0x504069(++_0x16c919);}(_0xf2be,0x149));var _0xef2b=function(_0x54e866,_0x8b24f1){_0x54e866=_0x54e866-0x0;var _0x4c34ac=_0xf2be[_0x54e866];return _0x4c34ac;};'use strict';var util=require(_0xef2b('0x0'));var _=require(_0xef2b('0x1'));var moment=require(_0xef2b('0x2'));var logger=require(_0xef2b('0x3'))(_0xef2b('0x4'));var ipAgi=process[_0xef2b('0x5')][_0xef2b('0x6')]||_0xef2b('0x7');function getSeconds(_0x4a571a,_0x1fb08a){var _0x330ab9=moment(_0x4a571a)[_0xef2b('0x8')](0x0);var _0x335ae6=moment(_0x1fb08a)[_0xef2b('0x8')](0x0);return _0x330ab9[_0xef2b('0x9')](_0x335ae6,_0xef2b('0xa'));}exports['loggerCatch']=function(_0x58f2ce){return function(_0x47ad46){logger[_0xef2b('0xb')](_0x58f2ce,util['inspect'](_0x47ad46,{'showHidden':![],'depth':null}));};};exports[_0xef2b('0xc')]=function(_0x1ed3d5,_0x273163){logger[_0xef2b('0xd')](_0x1ed3d5,util['inspect'](_0x273163,{'showHidden':![],'depth':null}));};exports[_0xef2b('0xe')]=function(_0x150316,_0xf2be79){logger[_0xef2b('0xb')](_0x150316,util['inspect'](_0xf2be79,{'showHidden':![],'depth':null}));};exports[_0xef2b('0xf')]=function(_0x1fe531){return function(_0x4c6f12){logger[_0xef2b('0xd')](_0x1fe531,util[_0xef2b('0x10')](_0x4c6f12,{'showHidden':![],'depth':null}));};};exports[_0xef2b('0x11')]=function(_0x1f9859,_0x4dd61e,_0x5a7fcf){return{'message':_0x1f9859,'unlock':_0x4dd61e,'active':_0x5a7fcf};};exports['getCallerId']=function(_0x465ca9,_0x221ac0,_0x2842e6){if(!_[_0xef2b('0x12')](_0x2842e6)&&_0xef2b('0x13')===typeof _0x2842e6&&!_['isEmpty'](_0x2842e6)){if(!_[_0xef2b('0x12')](_0x221ac0)&&'string'===typeof _0x221ac0&&!_[_0xef2b('0x14')](_0x221ac0)){return util[_0xef2b('0x15')](_0xef2b('0x16'),_0x221ac0,_0x2842e6);}return util[_0xef2b('0x15')]('\x22%s\x22\x20<%s>',_0x2842e6,_0x2842e6);}if(!_[_0xef2b('0x12')](_0x465ca9)&&'string'===typeof _0x465ca9&&!_[_0xef2b('0x14')](_0x465ca9)){return _0x465ca9;}return _0xef2b('0x17');};exports[_0xef2b('0x18')]=function(_0x3ee7d5){if(_['isNil'](_0x3ee7d5)){return![];}return _0x3ee7d5;};exports[_0xef2b('0x19')]=function(_0x498469,_0x10c825,_0x217e6c,_0x5e6f09,_0xc36be9,_0x25c3a5){var _0x498a42={'XMD-QUEUE':_0x10c825[_0xef2b('0x1a')]?_0x10c825[_0xef2b('0x1a')][_0xef2b('0x1b')]:'','XMD-CALLERID':_0x5e6f09,'XMD-CALLERID-PREVIEW':_0x25c3a5?util[_0xef2b('0x15')]('\x22%s\x22\x20<%s>',_0x25c3a5['calleridname'],_0x25c3a5[_0xef2b('0x1c')]):_0x5e6f09,'XMD-DIALID':_0xc36be9,'XMD-CONTACTID':_0x10c825[_0xef2b('0x1d')],'XMD-CDRTYPE':'dialer','CALLERID(all)':_0x5e6f09,'XMD-VOICEQUEUEID':_0x10c825[_0xef2b('0x1e')],'XMD-DIALCHANNEL':_0x217e6c,'XMD-DIALTIMEOUT':_0x498469[_0xef2b('0x1f')]||0x1e,'XMD-DIALOPTIONS':util[_0xef2b('0x15')]('\x22rtTxX%s%s\x22',_0x498469[_0xef2b('0x20')]?'g':'',_[_0xef2b('0x14')](_0x498469[_0xef2b('0x21')])?'':_0xef2b('0x22')),'XMD-DIALURL':_0x498469[_0xef2b('0x23')]||'','XMD-AGI':_0x498469['dialQueueProject']?util[_0xef2b('0x15')](_0xef2b('0x24'),ipAgi,_0x498469['dialQueueProject']):_0xef2b('0x25'),'XMD-AGIAFTER':_0x498469[_0xef2b('0x20')]?util[_0xef2b('0x15')](_0xef2b('0x24'),ipAgi,_0x498469[_0xef2b('0x20')]):'NONE','XMD-ORIGINATECALLERIDNUM':_0x25c3a5?_0x25c3a5[_0xef2b('0x26')]:'','XMD-ORIGINATECALLERIDNAME':_0x25c3a5?_0x25c3a5[_0xef2b('0x27')]:'','XMD-DESTINATION':_0xef2b('0x28'),'SIPADDHEADER':_0xef2b('0x29')};if(!_['isEmpty'](_0x498469[_0xef2b('0x21')])){_0x498a42[util[_0xef2b('0x15')]('%s','_XCALLY_MIXMONITOR_FORMAT')]=_0x498469['monitor_format'];_0x498a42[util['format']('%s',_0xef2b('0x2a'))]=_0xc36be9;}if(_0x10c825&&_0x10c825[_0xef2b('0x2b')]){for(var _0x2eb806 in _0x10c825['Contact']){if(_0x10c825[_0xef2b('0x2b')][_0xef2b('0x2c')](_0x2eb806)){if(!_[_0xef2b('0x2d')](_0x10c825['Contact'][_0x2eb806])&&_0x2eb806!=='id'&&_0x2eb806!==_0xef2b('0x2e')&&_0x2eb806!==_0xef2b('0x2f')&&_0x2eb806!=='updatedAt'){_0x498a42[util[_0xef2b('0x15')](_0xef2b('0x30'),'XMD-',_[_0xef2b('0x31')](_0x2eb806))]=_0x10c825[_0xef2b('0x2b')][_0x2eb806];}}}}return _0x498a42;};exports[_0xef2b('0x32')]=function(_0x2e2532){var _0x34179f={};for(var _0x3276ed in _0x2e2532){if(_0x2e2532[_0xef2b('0x2c')](_0x3276ed)){_0x34179f[util[_0xef2b('0x15')]('%s',_[_0xef2b('0x33')](_0x3276ed))]=_0x2e2532[_0x3276ed];}}return{'variables':_0x34179f};};exports[_0xef2b('0x34')]=function(_0x4e7dfb,_0x3adb8d){if(!_[_0xef2b('0x2d')](_0x4e7dfb)){if(_0x4e7dfb[_0xef2b('0x2c')]('originated')){if(_0x4e7dfb[_0xef2b('0x35')]>0x0){_0x4e7dfb[_0xef2b('0x35')]-=0x1;}else{logger[_0xef2b('0xb')]('[updateOriginated]\x20object\x20originated\x20is\x20negative',_0x3adb8d);}}}else{logger[_0xef2b('0xb')]('[updateOriginated]\x20is\x20null\x20or\x20undefined',_0x3adb8d);}};exports['logBlacklist']=function(_0x5da7ae){var _0x55940d=moment()[_0xef2b('0x15')](_0xef2b('0x36'));_0x5da7ae[_0xef2b('0x37')]=0xd;_0x5da7ae['statedesc']=_0xef2b('0x38');_0x5da7ae[_0xef2b('0x39')]=_0x55940d;_0x5da7ae[_0xef2b('0x3a')]=_0x55940d;_0x5da7ae['endtime']=_0x55940d;};exports[_0xef2b('0x3b')]=function(_0xf54c79,_0x4369ea,_0x1d840f){var _0x77bb8=moment()[_0xef2b('0x15')](_0xef2b('0x36'));_0xf54c79[_0xef2b('0x37')]=_0x4369ea;_0xf54c79[_0xef2b('0x3c')]=_0x1d840f;_0xf54c79[_0xef2b('0x3a')]=_0x77bb8;_0xf54c79[_0xef2b('0x3d')]=getSeconds(_0xf54c79['responsetime'],_0xf54c79[_0xef2b('0x39')]);};exports[_0xef2b('0x3e')]=function(_0xd0bca4,_0x210d95,_0x5887f5){_0xd0bca4[_0xef2b('0x3f')]=_0x210d95;_0xd0bca4[_0xef2b('0x40')]=_0x5887f5;};exports[_0xef2b('0x41')]=function(_0x30fb35,_0xdd9df6,_0x53d849){var _0x44c868=moment()[_0xef2b('0x15')](_0xef2b('0x36'));_0x30fb35[_0xef2b('0x37')]=_0xdd9df6;_0x30fb35['statedesc']=_0x53d849;_0x30fb35[_0xef2b('0x3a')]=_0x30fb35[_0xef2b('0x3a')]?_0x30fb35[_0xef2b('0x3a')]:_0x44c868;_0x30fb35[_0xef2b('0x42')]=_0x30fb35[_0xef2b('0x42')]?_0x30fb35[_0xef2b('0x42')]:_0x44c868;_0x30fb35['ringtime']=getSeconds(_0x30fb35[_0xef2b('0x3a')]||0x0,_0x30fb35[_0xef2b('0x39')]||0x0);_0x30fb35[_0xef2b('0x43')]=_0x30fb35['answertime']?getSeconds(_0x30fb35[_0xef2b('0x42')],_0x30fb35[_0xef2b('0x44')]):0x0;};exports[_0xef2b('0x45')]=function(_0x2f51e8){return _0x2f51e8===_0xef2b('0x46');};exports[_0xef2b('0x47')]=function(_0x2072ce,_0x2a7835,_0x2a056d,_0x59913d,_0x4544ab){var _0x2e76b8=_0x59913d?_0xef2b('0x48'):_0x2072ce['calleridname'];_0x2e76b8=_0x4544ab?_0xef2b('0x49'):_0x2e76b8;return{'actionid':_0x2072ce[_0xef2b('0x4a')],'action':_0xef2b('0x4b'),'channel':_0x2072ce['channelAgent'],'callerid':util[_0xef2b('0x15')](_0xef2b('0x16'),_0x2e76b8,_0x2072ce[_0xef2b('0x1c')]),'Exten':_0xef2b('0x28'),'Context':'from-sip','Priority':'1','variable':_0x2a056d,'timeout':(_0x2a7835[_0xef2b('0x4c')]||0x1e)*0x3e8,'async':!![],'channelid':_0x2072ce['uniqueid']};};exports[_0xef2b('0x4d')]=function(_0x17fd1d){return _0x17fd1d[_0xef2b('0x4e')]+_0x17fd1d[_0xef2b('0x4f')]+_0x17fd1d['countnoanswerretry']+_0x17fd1d[_0xef2b('0x50')]+_0x17fd1d[_0xef2b('0x51')];};exports[_0xef2b('0x52')]=function(_0xf87eb6){var _0x72daf5=_[_0xef2b('0x53')](_0xf87eb6);_0x72daf5[_0xef2b('0x37')]=0xf;_0x72daf5[_0xef2b('0x3c')]=_0xef2b('0x54');return _0x72daf5;};exports['scheduledAt']=function(_0x2bd371,_0x28853e,_0x55e857){var _0x4c981f={};_0x4c981f[_0x28853e]=_0x2bd371[_0x28853e];_0x4c981f[_0xef2b('0x55')]=![];_0x4c981f[_0xef2b('0x56')]=moment()[_0xef2b('0x57')](_0x55e857,_0xef2b('0x58'))[_0xef2b('0x15')](_0xef2b('0x36'));_0x4c981f[_0xef2b('0x1d')]=_0x2bd371['ContactId'];_0x4c981f[_0xef2b('0x59')]=_0x2bd371[_0xef2b('0x59')];_0x4c981f['VoiceQueueId']=_0x2bd371[_0xef2b('0x1e')]||undefined;return _0x4c981f;};exports[_0xef2b('0x5a')]=function(_0x19b49c,_0x4fde0d){if(!_[_0xef2b('0x2d')](_0x19b49c)){if(_0x19b49c[_0xef2b('0x5b')]>0x0){_0x19b49c[_0xef2b('0x5b')]-=0x1;}else{logger['error'](_0x4fde0d,'[decrementTalkink]\x20object\x20talking\x20is\x20negative');}}else{logger[_0xef2b('0xb')](_0x4fde0d,_0xef2b('0x5c'));}};exports[_0xef2b('0x5d')]=function(_0x30a2fc){if(_0x30a2fc<=0x0){return!![];}return![];};exports[_0xef2b('0x5e')]=function(_0x40b370,_0x133a54,_0x4a9f5d){_0x40b370[_0xef2b('0x5f')]=_0x133a54;_0x40b370[_0xef2b('0x1b')]=_0x40b370[_0xef2b('0x60')];_0x40b370[_0xef2b('0x61')]=_0x40b370[_0xef2b('0x62')];_0x40b370[_0xef2b('0x63')]=_0xef2b('0x64');if(_0x4a9f5d){_0x40b370[_0xef2b('0x65')]=_0x4a9f5d[_0xef2b('0x65')];}return _0x40b370;};exports[_0xef2b('0x66')]=function(_0x5aaeac){var _0x58b243={};_0x58b243['queue']=_0x5aaeac[_0xef2b('0x60')];_0x58b243[_0xef2b('0x61')]=_0x5aaeac[_0xef2b('0x62')];_0x58b243['uniqueid']=_0x5aaeac[_0xef2b('0x4a')];return _0x58b243;};exports[_0xef2b('0x67')]=function(_0x446cba){var _0x29bf4b=[];for(var _0x179af8 in _0x446cba){if(_0x446cba[_0xef2b('0x2c')](_0x179af8)){if(!_[_0xef2b('0x2d')](_0x446cba[_0x179af8])&&_0x446cba[_0x179af8][_0xef2b('0x37')]===_0xef2b('0x68')&&_0x446cba[_0x179af8][_0xef2b('0x69')]==='reachable'){_0x29bf4b[_0xef2b('0x6a')](_0x446cba[_0x179af8]['id']);}}}return _0x29bf4b;};exports['getDiff']=function(_0x3193c3){var _0xf5e747=moment()[_0xef2b('0x8')](0x0);var _0xf58b32=moment(_0x3193c3)[_0xef2b('0x8')](0x0);return _0xf5e747[_0xef2b('0x9')](_0xf58b32,_0xef2b('0xa'));};exports[_0xef2b('0x6b')]=function(_0x200856){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x200856['ContactId'],'ListId':_0x200856[_0xef2b('0x59')],'VoiceQueueId':_0x200856['VoiceQueueId']||undefined,'CampaignId':_0x200856[_0xef2b('0x6c')]||undefined};};exports[_0xef2b('0x6d')]=function(_0x5848e2){if(_0x5848e2==='uniqueid'||_0x5848e2==='idContact'||_0x5848e2===_0xef2b('0x60')||_0x5848e2===_0xef2b('0x6e')||_0x5848e2===_0xef2b('0x6f')||_0x5848e2===_0xef2b('0x70')||_0x5848e2===_0xef2b('0x3f')||_0x5848e2===_0xef2b('0x62')||_0x5848e2===_0xef2b('0x71')||_0x5848e2===_0xef2b('0x55')||_0x5848e2===_0xef2b('0x1c')||_0x5848e2===_0xef2b('0x56')||_0x5848e2===_0xef2b('0x4e')||_0x5848e2===_0xef2b('0x4f')||_0x5848e2===_0xef2b('0x72')||_0x5848e2===_0xef2b('0x73')||_0x5848e2===_0xef2b('0x74')||_0x5848e2===_0xef2b('0x75')||_0x5848e2==='callbackat'||_0x5848e2==='recallme'||_0x5848e2===_0xef2b('0x1d')||_0x5848e2===_0xef2b('0x59')||_0x5848e2===_0xef2b('0x40')||_0x5848e2===_0xef2b('0x1e')||_0x5848e2===_0xef2b('0x76')||_0x5848e2===_0xef2b('0x77')||_0x5848e2===_0xef2b('0x78')||_0x5848e2==='xmd-phone'||_0x5848e2===_0xef2b('0x79')||_0x5848e2==='xmd-dialurl'||_0x5848e2==='xmd-dialtimeout'||_0x5848e2===_0xef2b('0x7a')||_0x5848e2===_0xef2b('0x7b')||_0x5848e2===_0xef2b('0x7c')||_0x5848e2===_0xef2b('0x7d')||_0x5848e2===_0xef2b('0x7e')||_0x5848e2===_0xef2b('0x7f')||_0x5848e2===_0xef2b('0x80')||_0x5848e2===_0xef2b('0x81')||_0x5848e2==='rtpaudioqos'||_0x5848e2===_0xef2b('0x82')||_0x5848e2==='rtpaudioqosjitter'||_0x5848e2===_0xef2b('0x83')||_0x5848e2===_0xef2b('0x84')||_0x5848e2==='rtpaudioqoslossbridged'||_0x5848e2==='rtpaudioqosrtt'||_0x5848e2===_0xef2b('0x85')||_0x5848e2===_0xef2b('0x86')||_0x5848e2===_0xef2b('0x82')||_0x5848e2==='rtpaudioqosjitter'||_0x5848e2===_0xef2b('0x83')||_0x5848e2===_0xef2b('0x84')||_0x5848e2===_0xef2b('0x87')||_0x5848e2===_0xef2b('0x88')||_0x5848e2==='rtpaudioqosrttbridged'||_0x5848e2===_0xef2b('0x89')||_0x5848e2===_0xef2b('0x8a')||_0x5848e2===_0xef2b('0x37')||_0x5848e2==='statedesc'){return![];}return!![];};exports[_0xef2b('0x8b')]=function(_0x20748c,_0x5e8e40){var _0x2d3181,_0x56bad3,_0x5434d2;if(_0x5e8e40<=0x0){_0x5e8e40=0x1;}_0x2d3181=new RegExp(_0xef2b('0x8c')+_0x5e8e40+'}$');_0x56bad3=Math[_0xef2b('0x8d')](0xa,_0x5e8e40-0x1);_0x5434d2=Math[_0xef2b('0x8d')](0xa,_0x5e8e40)-0x1;return util[_0xef2b('0x15')]('%s',_[_0xef2b('0x8e')](_0x20748c,_0x2d3181,_[_0xef2b('0x8f')](_0x56bad3,_0x5434d2)));};exports[_0xef2b('0x90')]=function(_0x362a9a){var _0x329ad7=_0x362a9a[_0xef2b('0x91')](/"(.*?)"/);return _0x329ad7?_0x329ad7[0x1]:_0x362a9a;};exports[_0xef2b('0x92')]=function(_0x5166c6){var _0xf78178=_0x5166c6[_0xef2b('0x91')](/<(.*?)>/);return _0xf78178?_0xf78178[0x1]:_0x5166c6;};
\ No newline at end of file
+var _0xfb69=['push','getDiff','CampaignId','filterKey','idContact','type','campaigntype','dialAnswer','calleridnum','callback','callbackuniqueid','callbackat','UserId','sipcallid','xmd-voicequeueid','xmd-queue','xmd-listid','xmd-dialtimeout','xmd-dialoptions','xmd-dialid','xmd-dialchannel','xmd-contactid','xmd-cdrtype','xmd-callerid','xmd-agiafter','xmd-agi','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','rtpaudioqos','bridgepeer','bridgepvtcallid','\x5cw{0,','pow','replace','random','extractCalleridName','match','extractCalleridNumber','util','lodash','../../../../config/logger','preview','env','127.0.0.1','milliseconds','diff','seconds','error','inspect','info','loggerError','logger2','message','isUndefined','string','isEmpty','format','\x22%s\x22\x20<%s>','\x22\x22\x20<>','isActive','addVariables','Queue','name','ContactId','dialer','VoiceQueueId','dialOriginateTimeout','\x22rtTxX%s%s\x22','dialQueueProject2','monitor_format','U(xcally-mixmonitor-context)','dialQueueProject','\x22agi://%s/square,%s\x22','NONE','originatecalleridname','xcally-motion-preview','_XCALLY_MIXMONITOR_FORMAT','_XCALLY_MIXMONITOR_UNIQUEID','Contact','createdAt','updatedAt','XMD-','toUpper','toLowerVariables','hasOwnProperty','toLower','isNil','originated','[updateOriginated]\x20is\x20null\x20or\x20undefined','logBlacklist','YYYY-MM-DD\x20HH:mm:ss','state','Blacklist','starttime','endtime','logAgent','responsetime','ringtime','logLookAgent','membername','logCustomer','statedesc','talktime','answertime','isFailure','Failure','variablesAction','RECALL','calleridname','originate','timeout','uniqueid','totalGlobal','countbusyretry','countcongestionretry','countnoanswerretry','countagentrejectretry','countnosuchnumberretry','cloneAction','clone','active','scheduledat','minutes','ListId','decrementTalkink','[decrementTalkink]\x20object\x20talking\x20is\x20negative','IsNotLoggedIn','buildObj','interface','channelAgent','motionChannel','voice','mandatoryDisposition','buildAcw','queue','agentReadyId','not_inuse','status','reachable'];(function(_0x5e2489,_0x2fd8be){var _0xa87596=function(_0x3b348d){while(--_0x3b348d){_0x5e2489['push'](_0x5e2489['shift']());}};_0xa87596(++_0x2fd8be);}(_0xfb69,0x148));var _0x9fb6=function(_0x14b58c,_0x5b5b5a){_0x14b58c=_0x14b58c-0x0;var _0x2cf014=_0xfb69[_0x14b58c];return _0x2cf014;};'use strict';var util=require(_0x9fb6('0x0'));var _=require(_0x9fb6('0x1'));var moment=require('moment');var logger=require(_0x9fb6('0x2'))(_0x9fb6('0x3'));var ipAgi=process[_0x9fb6('0x4')]['XCALLY_IP_AGI']||_0x9fb6('0x5');function getSeconds(_0x2a1024,_0x91f655){var _0x2f5ada=moment(_0x2a1024)['milliseconds'](0x0);var _0x3a033f=moment(_0x91f655)[_0x9fb6('0x6')](0x0);return _0x2f5ada[_0x9fb6('0x7')](_0x3a033f,_0x9fb6('0x8'));}exports['loggerCatch']=function(_0x23ab3c){return function(_0x2e23da){logger[_0x9fb6('0x9')](_0x23ab3c,util[_0x9fb6('0xa')](_0x2e23da,{'showHidden':![],'depth':null}));};};exports['logger']=function(_0x369731,_0x1ca80f){logger[_0x9fb6('0xb')](_0x369731,util[_0x9fb6('0xa')](_0x1ca80f,{'showHidden':![],'depth':null}));};exports[_0x9fb6('0xc')]=function(_0xbb7644,_0x4ccf82){logger['error'](_0xbb7644,util['inspect'](_0x4ccf82,{'showHidden':![],'depth':null}));};exports[_0x9fb6('0xd')]=function(_0x8c9e96){return function(_0x222d87){logger['info'](_0x8c9e96,util[_0x9fb6('0xa')](_0x222d87,{'showHidden':![],'depth':null}));};};exports[_0x9fb6('0xe')]=function(_0xe406ea,_0x5e0239,_0x32b044){return{'message':_0xe406ea,'unlock':_0x5e0239,'active':_0x32b044};};exports['getCallerId']=function(_0x578e85,_0x464bad,_0x280d19){if(!_[_0x9fb6('0xf')](_0x280d19)&&_0x9fb6('0x10')===typeof _0x280d19&&!_[_0x9fb6('0x11')](_0x280d19)){if(!_['isUndefined'](_0x464bad)&&_0x9fb6('0x10')===typeof _0x464bad&&!_[_0x9fb6('0x11')](_0x464bad)){return util[_0x9fb6('0x12')](_0x9fb6('0x13'),_0x464bad,_0x280d19);}return util[_0x9fb6('0x12')](_0x9fb6('0x13'),_0x280d19,_0x280d19);}if(!_[_0x9fb6('0xf')](_0x578e85)&&_0x9fb6('0x10')===typeof _0x578e85&&!_['isEmpty'](_0x578e85)){return _0x578e85;}return _0x9fb6('0x14');};exports[_0x9fb6('0x15')]=function(_0x2d3b33){if(_['isNil'](_0x2d3b33)){return![];}return _0x2d3b33;};exports[_0x9fb6('0x16')]=function(_0x1a0d1a,_0x14e68e,_0xb2940c,_0x1a50e0,_0x37fb7a,_0x303ea3){var _0x43d6de={'XMD-QUEUE':_0x14e68e[_0x9fb6('0x17')]?_0x14e68e['Queue'][_0x9fb6('0x18')]:'','XMD-CALLERID':_0x1a50e0,'XMD-CALLERID-PREVIEW':_0x303ea3?util[_0x9fb6('0x12')](_0x9fb6('0x13'),_0x303ea3['calleridname'],_0x303ea3['calleridnum']):_0x1a50e0,'XMD-DIALID':_0x37fb7a,'XMD-CONTACTID':_0x14e68e[_0x9fb6('0x19')],'XMD-CDRTYPE':_0x9fb6('0x1a'),'CALLERID(all)':_0x1a50e0,'XMD-VOICEQUEUEID':_0x14e68e[_0x9fb6('0x1b')],'XMD-DIALCHANNEL':_0xb2940c,'XMD-DIALTIMEOUT':_0x1a0d1a[_0x9fb6('0x1c')]||0x1e,'XMD-DIALOPTIONS':util[_0x9fb6('0x12')](_0x9fb6('0x1d'),_0x1a0d1a[_0x9fb6('0x1e')]?'g':'',_[_0x9fb6('0x11')](_0x1a0d1a[_0x9fb6('0x1f')])?'':_0x9fb6('0x20')),'XMD-DIALURL':_0x1a0d1a['dialPreviewUrl']||'','XMD-AGI':_0x1a0d1a[_0x9fb6('0x21')]?util[_0x9fb6('0x12')](_0x9fb6('0x22'),ipAgi,_0x1a0d1a[_0x9fb6('0x21')]):_0x9fb6('0x23'),'XMD-AGIAFTER':_0x1a0d1a['dialQueueProject2']?util[_0x9fb6('0x12')]('\x22agi://%s/square,%s\x22',ipAgi,_0x1a0d1a[_0x9fb6('0x1e')]):'NONE','XMD-ORIGINATECALLERIDNUM':_0x303ea3?_0x303ea3['originatecalleridnum']:'','XMD-ORIGINATECALLERIDNAME':_0x303ea3?_0x303ea3[_0x9fb6('0x24')]:'','XMD-DESTINATION':_0x9fb6('0x25'),'SIPADDHEADER':'Call-Type:\x20PREVIEW'};if(!_[_0x9fb6('0x11')](_0x1a0d1a['monitor_format'])){_0x43d6de[util[_0x9fb6('0x12')]('%s',_0x9fb6('0x26'))]=_0x1a0d1a[_0x9fb6('0x1f')];_0x43d6de[util['format']('%s',_0x9fb6('0x27'))]=_0x37fb7a;}if(_0x14e68e&&_0x14e68e[_0x9fb6('0x28')]){for(var _0x36956e in _0x14e68e[_0x9fb6('0x28')]){if(_0x14e68e[_0x9fb6('0x28')]['hasOwnProperty'](_0x36956e)){if(!_['isNil'](_0x14e68e[_0x9fb6('0x28')][_0x36956e])&&_0x36956e!=='id'&&_0x36956e!=='tags'&&_0x36956e!==_0x9fb6('0x29')&&_0x36956e!==_0x9fb6('0x2a')){_0x43d6de[util[_0x9fb6('0x12')]('%s%s',_0x9fb6('0x2b'),_[_0x9fb6('0x2c')](_0x36956e))]=_0x14e68e['Contact'][_0x36956e];}}}}return _0x43d6de;};exports[_0x9fb6('0x2d')]=function(_0x41a50c){var _0xd19d01={};for(var _0x2e8cc5 in _0x41a50c){if(_0x41a50c[_0x9fb6('0x2e')](_0x2e8cc5)){_0xd19d01[util[_0x9fb6('0x12')]('%s',_[_0x9fb6('0x2f')](_0x2e8cc5))]=_0x41a50c[_0x2e8cc5];}}return{'variables':_0xd19d01};};exports['updateOriginated']=function(_0x50c57c,_0x14d2b8){if(!_[_0x9fb6('0x30')](_0x50c57c)){if(_0x50c57c['hasOwnProperty'](_0x9fb6('0x31'))){if(_0x50c57c[_0x9fb6('0x31')]>0x0){_0x50c57c[_0x9fb6('0x31')]-=0x1;}else{logger[_0x9fb6('0x9')]('[updateOriginated]\x20object\x20originated\x20is\x20negative',_0x14d2b8);}}}else{logger[_0x9fb6('0x9')](_0x9fb6('0x32'),_0x14d2b8);}};exports[_0x9fb6('0x33')]=function(_0xb9d580){var _0x29a83b=moment()[_0x9fb6('0x12')](_0x9fb6('0x34'));_0xb9d580[_0x9fb6('0x35')]=0xd;_0xb9d580['statedesc']=_0x9fb6('0x36');_0xb9d580[_0x9fb6('0x37')]=_0x29a83b;_0xb9d580['responsetime']=_0x29a83b;_0xb9d580[_0x9fb6('0x38')]=_0x29a83b;};exports[_0x9fb6('0x39')]=function(_0x7b6632,_0x3b1f1a,_0x36b68f){var _0x49d3e8=moment()[_0x9fb6('0x12')](_0x9fb6('0x34'));_0x7b6632[_0x9fb6('0x35')]=_0x3b1f1a;_0x7b6632['statedesc']=_0x36b68f;_0x7b6632[_0x9fb6('0x3a')]=_0x49d3e8;_0x7b6632[_0x9fb6('0x3b')]=getSeconds(_0x7b6632[_0x9fb6('0x3a')],_0x7b6632[_0x9fb6('0x37')]);};exports[_0x9fb6('0x3c')]=function(_0x9aab25,_0x4e0970,_0x17af3a){_0x9aab25[_0x9fb6('0x3d')]=_0x4e0970;_0x9aab25['UserId']=_0x17af3a;};exports[_0x9fb6('0x3e')]=function(_0x52bfe3,_0x35fa1b,_0x44b272){var _0x4eb6ee=moment()[_0x9fb6('0x12')]('YYYY-MM-DD\x20HH:mm:ss');_0x52bfe3['state']=_0x35fa1b;_0x52bfe3[_0x9fb6('0x3f')]=_0x44b272;_0x52bfe3['responsetime']=_0x52bfe3[_0x9fb6('0x3a')]?_0x52bfe3[_0x9fb6('0x3a')]:_0x4eb6ee;_0x52bfe3[_0x9fb6('0x38')]=_0x52bfe3[_0x9fb6('0x38')]?_0x52bfe3[_0x9fb6('0x38')]:_0x4eb6ee;_0x52bfe3[_0x9fb6('0x3b')]=getSeconds(_0x52bfe3[_0x9fb6('0x3a')]||0x0,_0x52bfe3[_0x9fb6('0x37')]||0x0);_0x52bfe3[_0x9fb6('0x40')]=_0x52bfe3[_0x9fb6('0x41')]?getSeconds(_0x52bfe3[_0x9fb6('0x38')],_0x52bfe3[_0x9fb6('0x41')]):0x0;};exports[_0x9fb6('0x42')]=function(_0x47214f){return _0x47214f===_0x9fb6('0x43');};exports[_0x9fb6('0x44')]=function(_0x170f20,_0x55823c,_0x214a45,_0x46b556,_0x3f6ae5){var _0x2eb594=_0x46b556?_0x9fb6('0x45'):_0x170f20[_0x9fb6('0x46')];_0x2eb594=_0x3f6ae5?'BOOKED':_0x2eb594;return{'actionid':_0x170f20['uniqueid'],'action':_0x9fb6('0x47'),'channel':_0x170f20['channelAgent'],'callerid':util[_0x9fb6('0x12')]('\x22%s\x22\x20<%s>',_0x2eb594,_0x170f20['calleridnum']),'Exten':_0x9fb6('0x25'),'Context':'from-sip','Priority':'1','variable':_0x214a45,'timeout':(_0x55823c[_0x9fb6('0x48')]||0x1e)*0x3e8,'async':!![],'channelid':_0x170f20[_0x9fb6('0x49')]};};exports[_0x9fb6('0x4a')]=function(_0x1c6e04){return _0x1c6e04[_0x9fb6('0x4b')]+_0x1c6e04[_0x9fb6('0x4c')]+_0x1c6e04[_0x9fb6('0x4d')]+_0x1c6e04[_0x9fb6('0x4e')]+_0x1c6e04[_0x9fb6('0x4f')];};exports[_0x9fb6('0x50')]=function(_0x3a661d){var _0x1ed6ae=_[_0x9fb6('0x51')](_0x3a661d);_0x1ed6ae[_0x9fb6('0x35')]=0xf;_0x1ed6ae['statedesc']='Global';return _0x1ed6ae;};exports['scheduledAt']=function(_0x26b59d,_0x4b8526,_0x4165cd){var _0xfabf54={};_0xfabf54[_0x4b8526]=_0x26b59d[_0x4b8526];_0xfabf54[_0x9fb6('0x52')]=![];_0xfabf54[_0x9fb6('0x53')]=moment()['add'](_0x4165cd,_0x9fb6('0x54'))['format'](_0x9fb6('0x34'));_0xfabf54[_0x9fb6('0x19')]=_0x26b59d[_0x9fb6('0x19')];_0xfabf54[_0x9fb6('0x55')]=_0x26b59d[_0x9fb6('0x55')];_0xfabf54['VoiceQueueId']=_0x26b59d['VoiceQueueId']||undefined;return _0xfabf54;};exports[_0x9fb6('0x56')]=function(_0x3e17a6,_0x57c0bc){if(!_[_0x9fb6('0x30')](_0x3e17a6)){if(_0x3e17a6['pTalking']>0x0){_0x3e17a6['pTalking']-=0x1;}else{logger[_0x9fb6('0x9')](_0x57c0bc,_0x9fb6('0x57'));}}else{logger[_0x9fb6('0x9')](_0x57c0bc,'[decrementTalkink]\x20is\x20null\x20or\x20undefined');}};exports[_0x9fb6('0x58')]=function(_0x5c564c){if(_0x5c564c<=0x0){return!![];}return![];};exports[_0x9fb6('0x59')]=function(_0x3be141,_0x215098,_0x100b8a){_0x3be141['lastevent']=_0x215098;_0x3be141[_0x9fb6('0x18')]=_0x3be141['queue'];_0x3be141[_0x9fb6('0x5a')]=_0x3be141[_0x9fb6('0x5b')];_0x3be141[_0x9fb6('0x5c')]=_0x9fb6('0x5d');if(_0x100b8a){_0x3be141[_0x9fb6('0x5e')]=_0x100b8a[_0x9fb6('0x5e')];}return _0x3be141;};exports[_0x9fb6('0x5f')]=function(_0x279e6b){var _0x47e747={};_0x47e747[_0x9fb6('0x60')]=_0x279e6b[_0x9fb6('0x60')];_0x47e747[_0x9fb6('0x5a')]=_0x279e6b[_0x9fb6('0x5b')];_0x47e747[_0x9fb6('0x49')]=_0x279e6b['uniqueid'];return _0x47e747;};exports[_0x9fb6('0x61')]=function(_0xc62186){var _0x114e06=[];for(var _0x5ce5f2 in _0xc62186){if(_0xc62186[_0x9fb6('0x2e')](_0x5ce5f2)){if(!_[_0x9fb6('0x30')](_0xc62186[_0x5ce5f2])&&_0xc62186[_0x5ce5f2][_0x9fb6('0x35')]===_0x9fb6('0x62')&&_0xc62186[_0x5ce5f2][_0x9fb6('0x63')]===_0x9fb6('0x64')){_0x114e06[_0x9fb6('0x65')](_0xc62186[_0x5ce5f2]['id']);}}}return _0x114e06;};exports[_0x9fb6('0x66')]=function(_0x32675){var _0x3e3e54=moment()[_0x9fb6('0x6')](0x0);var _0x1b4f6f=moment(_0x32675)[_0x9fb6('0x6')](0x0);return _0x3e3e54['diff'](_0x1b4f6f,'seconds');};exports['createBody']=function(_0x425731){return{'active':![],'recallme':![],'UserId':null,'ContactId':_0x425731[_0x9fb6('0x19')],'ListId':_0x425731['ListId'],'VoiceQueueId':_0x425731['VoiceQueueId']||undefined,'CampaignId':_0x425731[_0x9fb6('0x67')]||undefined};};exports[_0x9fb6('0x68')]=function(_0x264ae9){if(_0x264ae9==='uniqueid'||_0x264ae9===_0x9fb6('0x69')||_0x264ae9===_0x9fb6('0x60')||_0x264ae9===_0x9fb6('0x6a')||_0x264ae9===_0x9fb6('0x6b')||_0x264ae9===_0x9fb6('0x6c')||_0x264ae9===_0x9fb6('0x3d')||_0x264ae9===_0x9fb6('0x5b')||_0x264ae9===_0x9fb6('0x46')||_0x264ae9===_0x9fb6('0x52')||_0x264ae9===_0x9fb6('0x6d')||_0x264ae9==='scheduledat'||_0x264ae9===_0x9fb6('0x4b')||_0x264ae9===_0x9fb6('0x4c')||_0x264ae9===_0x9fb6('0x4d')||_0x264ae9==='countglobal'||_0x264ae9===_0x9fb6('0x6e')||_0x264ae9===_0x9fb6('0x6f')||_0x264ae9===_0x9fb6('0x70')||_0x264ae9==='recallme'||_0x264ae9===_0x9fb6('0x19')||_0x264ae9===_0x9fb6('0x55')||_0x264ae9===_0x9fb6('0x71')||_0x264ae9===_0x9fb6('0x1b')||_0x264ae9===_0x9fb6('0x72')||_0x264ae9===_0x9fb6('0x73')||_0x264ae9===_0x9fb6('0x74')||_0x264ae9==='xmd-phone'||_0x264ae9===_0x9fb6('0x75')||_0x264ae9==='xmd-dialurl'||_0x264ae9===_0x9fb6('0x76')||_0x264ae9===_0x9fb6('0x77')||_0x264ae9===_0x9fb6('0x78')||_0x264ae9===_0x9fb6('0x79')||_0x264ae9===_0x9fb6('0x7a')||_0x264ae9===_0x9fb6('0x7b')||_0x264ae9===_0x9fb6('0x7c')||_0x264ae9===_0x9fb6('0x7d')||_0x264ae9===_0x9fb6('0x7e')||_0x264ae9==='rtpaudioqos'||_0x264ae9===_0x9fb6('0x7f')||_0x264ae9===_0x9fb6('0x80')||_0x264ae9===_0x9fb6('0x81')||_0x264ae9===_0x9fb6('0x82')||_0x264ae9===_0x9fb6('0x83')||_0x264ae9==='rtpaudioqosrtt'||_0x264ae9===_0x9fb6('0x84')||_0x264ae9===_0x9fb6('0x85')||_0x264ae9===_0x9fb6('0x7f')||_0x264ae9===_0x9fb6('0x80')||_0x264ae9===_0x9fb6('0x81')||_0x264ae9===_0x9fb6('0x82')||_0x264ae9===_0x9fb6('0x83')||_0x264ae9==='rtpaudioqosrtt'||_0x264ae9===_0x9fb6('0x84')||_0x264ae9===_0x9fb6('0x86')||_0x264ae9===_0x9fb6('0x87')||_0x264ae9===_0x9fb6('0x35')||_0x264ae9===_0x9fb6('0x3f')){return![];}return!![];};exports['getCallerIdRandom']=function(_0x3ada22,_0x54d13b){var _0xa19a77,_0x65d541,_0x139d52;if(_0x54d13b<=0x0){_0x54d13b=0x1;}_0xa19a77=new RegExp(_0x9fb6('0x88')+_0x54d13b+'}$');_0x65d541=Math[_0x9fb6('0x89')](0xa,_0x54d13b-0x1);_0x139d52=Math[_0x9fb6('0x89')](0xa,_0x54d13b)-0x1;return util[_0x9fb6('0x12')]('%s',_[_0x9fb6('0x8a')](_0x3ada22,_0xa19a77,_[_0x9fb6('0x8b')](_0x65d541,_0x139d52)));};exports[_0x9fb6('0x8c')]=function(_0x437626){var _0x3d283a=_0x437626[_0x9fb6('0x8d')](/"(.*?)"/);return _0x3d283a?_0x3d283a[0x1]:_0x437626;};exports[_0x9fb6('0x8e')]=function(_0x5b9e57){var _0x50bc76=_0x5b9e57['match'](/<(.*?)>/);return _0x50bc76?_0x50bc76[0x1]:_0x5b9e57;};
\ No newline at end of file
index 1af60eb..256ce32 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6718=['reload','voicequeuechannel','voicequeuechannelhangup','voicequeuechannelredirect','string','boolean','queueremove','queuepause'];(function(_0xf54b6e,_0x21f273){var _0x1fb36e=function(_0x39e4fb){while(--_0x39e4fb){_0xf54b6e['push'](_0xf54b6e['shift']());}};_0x1fb36e(++_0x21f273);}(_0x6718,0x174));var _0x8671=function(_0x6148ee,_0x4d2fca){_0x6148ee=_0x6148ee-0x0;var _0x5afc74=_0x6718[_0x6148ee];return _0x5afc74;};'use strict';exports['queueadd']={'queue':{'type':_0x8671('0x0'),'required':!![]},'interface':{'type':_0x8671('0x0'),'required':!![]},'membername':{'type':_0x8671('0x0'),'required':!![]},'penalty':{'type':'number','required':![]},'paused':{'type':_0x8671('0x1'),'required':![]}};exports[_0x8671('0x2')]={'queue':{'type':_0x8671('0x0'),'required':!![]},'interface':{'type':_0x8671('0x0'),'required':!![]}};exports[_0x8671('0x3')]={'interface':{'type':_0x8671('0x0'),'required':!![]},'paused':{'type':'boolean'},'reason':{'type':_0x8671('0x0'),'required':![]}};exports[_0x8671('0x4')]={'module':{'type':_0x8671('0x0'),'required':![]}};exports[_0x8671('0x5')]={'uniqueid':{'type':_0x8671('0x0'),'required':!![]}};exports['voicechannel']={'uniqueid':{'type':'string','required':!![]},'filename':{'type':_0x8671('0x0')},'format':{'type':_0x8671('0x0')},'mixmonitorid':{'type':_0x8671('0x0')}};exports[_0x8671('0x6')]={'uniqueid':{'type':'string','required':!![]}};exports[_0x8671('0x7')]={'uniqueid':{'type':_0x8671('0x0'),'required':!![]},'exten':{'type':_0x8671('0x0'),'required':!![]},'context':{'type':_0x8671('0x0')}};
\ No newline at end of file
+var _0x6b5a=['voicequeuechannelhangup','string','number','boolean','queueremove','queuepause','reload','voicechannel'];(function(_0x46698a,_0x8de1e4){var _0x356db0=function(_0x19e83c){while(--_0x19e83c){_0x46698a['push'](_0x46698a['shift']());}};_0x356db0(++_0x8de1e4);}(_0x6b5a,0x111));var _0xa6b5=function(_0x4ee564,_0x1f345d){_0x4ee564=_0x4ee564-0x0;var _0x273d0e=_0x6b5a[_0x4ee564];return _0x273d0e;};'use strict';exports['queueadd']={'queue':{'type':_0xa6b5('0x0'),'required':!![]},'interface':{'type':_0xa6b5('0x0'),'required':!![]},'membername':{'type':_0xa6b5('0x0'),'required':!![]},'penalty':{'type':_0xa6b5('0x1'),'required':![]},'paused':{'type':_0xa6b5('0x2'),'required':![]}};exports[_0xa6b5('0x3')]={'queue':{'type':_0xa6b5('0x0'),'required':!![]},'interface':{'type':_0xa6b5('0x0'),'required':!![]}};exports[_0xa6b5('0x4')]={'interface':{'type':_0xa6b5('0x0'),'required':!![]},'paused':{'type':'boolean'},'reason':{'type':_0xa6b5('0x0'),'required':![]}};exports[_0xa6b5('0x5')]={'module':{'type':_0xa6b5('0x0'),'required':![]}};exports['voicequeuechannel']={'uniqueid':{'type':_0xa6b5('0x0'),'required':!![]}};exports[_0xa6b5('0x6')]={'uniqueid':{'type':_0xa6b5('0x0'),'required':!![]},'filename':{'type':'string'},'format':{'type':_0xa6b5('0x0')},'mixmonitorid':{'type':_0xa6b5('0x0')}};exports[_0xa6b5('0x7')]={'uniqueid':{'type':_0xa6b5('0x0'),'required':!![]}};exports['voicequeuechannelredirect']={'uniqueid':{'type':_0xa6b5('0x0'),'required':!![]},'exten':{'type':'string','required':!![]},'context':{'type':_0xa6b5('0x0')}};
\ No newline at end of file
index 7cbeb2b..bda7f27 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb0f0=['sumHoldTime','sumDuration','sumBillable','ivrTotalCallsDays','ivrAnswerCallsDay','isEmpty','abandoned','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerAgiCallsDay','prototype','mergeFromDatabase','initAgents','length','interface','agents','isUndefined','trunks','initVoiceQueues','initTriggers','initTemplates','initZendeskAccounts','initSalesforceAccounts','initZohoAccounts','initDeskAccounts','sugarcrmAccounts','initVtigerAccounts','vtigerAccounts','initServicenowAccounts','initDynamics365Accounts','dynamics365Accounts','initVoiceQueueHopperHistory','merge','initVoiceQueueReports','groupBy','queue','unmanaged','queuecallerabandon','queuecallerleaveAt','diff','queuecallerjoinAt','seconds','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','queuecallercomplete','initVoiceCallReports','disposition','ANSWERED','duration','billableseconds','initCampaigns','SquareProject','initVoiceExtensions','voiceExtensions','initCampaignHopperHistory','initFaxAccounts','exports','util','moment','../model/agent','../model/telephone','../model/trunk','../model/trigger','../model/campaign','../model/voiceExtension','../model/zendeskAccount','../model/deskAccount','../model/vtigerAccount','../model/servicenowAccount','../model/freshsalesAccount','../model/faxAccount','telephones','voiceQueues','triggers','campaigns','templates','outbound','channels','timers','settings','zendeskAccounts','salesforceAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','servicenowAccounts','freshsalesAccounts','faxAccounts','mapKeys','SIP/%s','name','isNil','format','hasOwnProperty','total','answered'];(function(_0x1fb6f6,_0x569df9){var _0x42d788=function(_0x312745){while(--_0x312745){_0x1fb6f6['push'](_0x1fb6f6['shift']());}};_0x42d788(++_0x569df9);}(_0xb0f0,0x1e1));var _0x0b0f=function(_0x2d7f0e,_0x3e6fbd){_0x2d7f0e=_0x2d7f0e-0x0;var _0x110b07=_0xb0f0[_0x2d7f0e];return _0x110b07;};'use strict';var BPromise=require('bluebird');var util=require(_0x0b0f('0x0'));var _=require('lodash');var moment=require(_0x0b0f('0x1'));var Agent=require(_0x0b0f('0x2'));var Telephone=require(_0x0b0f('0x3'));var Trunk=require(_0x0b0f('0x4'));var VoiceQueue=require('../model/voiceQueue');var Trigger=require(_0x0b0f('0x5'));var Template=require('../model/template');var Campaign=require(_0x0b0f('0x6'));var VoiceExtension=require(_0x0b0f('0x7'));var ZendeskAccount=require(_0x0b0f('0x8'));var SalesforceAccount=require('../model/salesforceAccount');var FreshdeskAccount=require('../model/freshdeskAccount');var SugarcrmAccount=require('../model/sugarcrmAccount');var ZohoAccount=require('../model/zohoAccount');var DeskAccount=require(_0x0b0f('0x9'));var VtigerAccount=require(_0x0b0f('0xa'));var ServicenowAccount=require(_0x0b0f('0xb'));var Dynamics365Account=require('../model/dynamics365Account');var FreshsalesAccount=require(_0x0b0f('0xc'));var FaxAccount=require(_0x0b0f('0xd'));var Realtime=function(){this['agents']={};this[_0x0b0f('0xe')]={};this['trunks']={};this[_0x0b0f('0xf')]={};this[_0x0b0f('0x10')]={};this[_0x0b0f('0x11')]={};this[_0x0b0f('0x12')]={};this[_0x0b0f('0x13')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this['voiceExtensions']={};this[_0x0b0f('0x14')]={};this['queueChannels']={};this['outboundChannels']={};this[_0x0b0f('0x15')]={};this[_0x0b0f('0x16')]={};this[_0x0b0f('0x17')]={};this[_0x0b0f('0x18')]={};this['sugarcrmAccounts']={};this[_0x0b0f('0x19')]={};this[_0x0b0f('0x1a')]={};this[_0x0b0f('0x1b')]={};this['vtigerAccounts']={};this[_0x0b0f('0x1c')]={};this['dynamics365Accounts']={};this[_0x0b0f('0x1d')]={};this[_0x0b0f('0x1e')]={};};function freeIsNotKey(_0x2aa4a7,_0x3d8d0e,_0x1e575e){var _0x3901f7=_[_0x0b0f('0x1f')](_0x2aa4a7,function(_0x341bcf,_0x3cd61){return _0x341bcf[_0x1e575e];});for(var _0x598431 in _0x3d8d0e){if(_0x3d8d0e['hasOwnProperty'](_0x598431)){if(!_0x3901f7[_0x598431]){delete _0x3d8d0e[_0x598431];}}}}function freeIsNotKeySip(_0x37fe1d,_0x528456){var _0x1e04c2=_['mapKeys'](_0x37fe1d,function(_0x1b13c2,_0x416c85){return util['format'](_0x0b0f('0x20'),_0x1b13c2[_0x0b0f('0x21')]);});for(var _0x5248e0 in _0x528456){if(_0x528456['hasOwnProperty'](_0x5248e0)){if(!_0x1e04c2[_0x5248e0]){delete _0x528456[_0x5248e0];}}}}function freeIsNotKeyAgent(_0x45f92d,_0x5c0bd9){var _0x5dadf9=_['mapKeys'](_0x45f92d,function(_0x16f801,_0x375d5a){var _0x1ac508=_[_0x0b0f('0x22')](_0x16f801['interface'])?util[_0x0b0f('0x23')]('SIP/%s',_0x16f801[_0x0b0f('0x21')]):_0x16f801['interface'];return _0x1ac508;});for(var _0x275cbe in _0x5c0bd9){if(_0x5c0bd9[_0x0b0f('0x24')](_0x275cbe)){if(!_0x5dadf9[_0x275cbe]){delete _0x5c0bd9[_0x275cbe];}}}}function clearVoiceCallReports(_0x3a5308){_0x3a5308[_0x0b0f('0x25')]=0x0;_0x3a5308[_0x0b0f('0x26')]=0x0;_0x3a5308[_0x0b0f('0x27')]=0x0;_0x3a5308[_0x0b0f('0x28')]=0x0;_0x3a5308[_0x0b0f('0x29')]=0x0;}function clearCampaigns(_0x26f10e){if(!_['isEmpty'](_0x26f10e)){for(var _0x331114 in _0x26f10e){if(_0x26f10e['hasOwnProperty'](_0x331114)){_0x26f10e[_0x331114][_0x0b0f('0x2a')]=0x0;_0x26f10e[_0x331114][_0x0b0f('0x2b')]=0x0;}}}}function clearVoiceQueues(_0x365f2b){if(!_[_0x0b0f('0x2c')](_0x365f2b)){for(var _0x595c77 in _0x365f2b){if(_0x365f2b[_0x0b0f('0x24')](_0x595c77)){_0x365f2b[_0x595c77]['total']=0x0;_0x365f2b[_0x595c77]['answered']=0x0;_0x365f2b[_0x595c77]['unmanaged']=0x0;_0x365f2b[_0x595c77][_0x0b0f('0x2d')]=0x0;_0x365f2b[_0x595c77][_0x0b0f('0x27')]=0x0;_0x365f2b[_0x595c77][_0x0b0f('0x28')]=0x0;_0x365f2b[_0x595c77][_0x0b0f('0x29')]=0x0;_0x365f2b[_0x595c77]['outboundAnswerAgiCallsDay']=0x0;_0x365f2b[_0x595c77][_0x0b0f('0x2e')]=0x0;_0x365f2b[_0x595c77]['outboundBusyCallsDay']=0x0;_0x365f2b[_0x595c77]['outboundCongestionCallsDay']=0x0;_0x365f2b[_0x595c77][_0x0b0f('0x2f')]=0x0;_0x365f2b[_0x595c77][_0x0b0f('0x30')]=0x0;_0x365f2b[_0x595c77][_0x0b0f('0x31')]=0x0;_0x365f2b[_0x595c77][_0x0b0f('0x32')]=0x0;_0x365f2b[_0x595c77][_0x0b0f('0x33')]=0x0;_0x365f2b[_0x595c77][_0x0b0f('0x34')]=0x0;_0x365f2b[_0x595c77][_0x0b0f('0x35')]=0x0;_0x365f2b[_0x595c77][_0x0b0f('0x36')]=0x0;_0x365f2b[_0x595c77][_0x0b0f('0x37')]=0x0;_0x365f2b[_0x595c77]['outboundAnswerCallsDay']=0x0;_0x365f2b[_0x595c77]['queueStatusComplete']=!![];}}}}Realtime[_0x0b0f('0x38')][_0x0b0f('0x39')]=function(_0xd0e75e,_0x520c7e){for(var _0xc205d5 in _0x520c7e){if(_0xd0e75e[_0x0b0f('0x24')](_0xc205d5)){_0xd0e75e[_0xc205d5]=_0x520c7e[_0xc205d5];}}};Realtime[_0x0b0f('0x38')][_0x0b0f('0x3a')]=function(){var _0x584c1d=this;return function(_0x278384){if(_0x278384){freeIsNotKeyAgent(_0x278384,_0x584c1d['agents']);for(var _0x498b1d=0x0,_0x42b1dc={},_0x18e9ef={};_0x498b1d<_0x278384[_0x0b0f('0x3b')];_0x498b1d+=0x1){_0x42b1dc=_0x278384[_0x498b1d];var _0x26df95=_[_0x0b0f('0x22')](_0x42b1dc['interface'])?util[_0x0b0f('0x23')]('SIP/%s',_0x42b1dc[_0x0b0f('0x21')]):_0x42b1dc[_0x0b0f('0x3c')];if(_['isUndefined'](_0x584c1d[_0x0b0f('0x3d')][_0x26df95])){_0x584c1d[_0x0b0f('0x3d')][_0x26df95]=new Agent(_0x42b1dc);}else{_0x584c1d[_0x0b0f('0x39')](_0x584c1d['agents'][_0x26df95],_0x42b1dc);}}}return _0x584c1d[_0x0b0f('0x3d')];};};Realtime[_0x0b0f('0x38')]['initTelephones']=function(){var _0x481766=this;return function(_0x5e5c92){if(_0x5e5c92){freeIsNotKeySip(_0x5e5c92,_0x481766['telephones']);for(var _0x57740b=0x0,_0x1ed18f={},_0x557c14={};_0x57740b<_0x5e5c92[_0x0b0f('0x3b')];_0x57740b+=0x1){_0x1ed18f=_0x5e5c92[_0x57740b];if(_[_0x0b0f('0x3e')](_0x481766[_0x0b0f('0xe')][util[_0x0b0f('0x23')]('SIP/%s',_0x1ed18f['name'])])){_0x481766[_0x0b0f('0xe')][util['format'](_0x0b0f('0x20'),_0x1ed18f[_0x0b0f('0x21')])]=new Telephone(_0x1ed18f);}else{_0x481766[_0x0b0f('0x39')](_0x481766['telephones'][util[_0x0b0f('0x23')](_0x0b0f('0x20'),_0x1ed18f[_0x0b0f('0x21')])],_0x1ed18f);}}}return _0x481766['telephones'];};};Realtime[_0x0b0f('0x38')]['initTrunks']=function(){var _0x509ffb=this;return function(_0x1b86ed){if(_0x1b86ed){freeIsNotKeySip(_0x1b86ed,_0x509ffb[_0x0b0f('0x3f')]);for(var _0xde5c90=0x0,_0x4bd2e8={},_0x11d235={};_0xde5c90<_0x1b86ed[_0x0b0f('0x3b')];_0xde5c90+=0x1){_0x4bd2e8=_0x1b86ed[_0xde5c90];if(_[_0x0b0f('0x3e')](_0x509ffb[_0x0b0f('0x3f')][util[_0x0b0f('0x23')](_0x0b0f('0x20'),_0x4bd2e8[_0x0b0f('0x21')])])){_0x509ffb['trunks'][util[_0x0b0f('0x23')](_0x0b0f('0x20'),_0x4bd2e8[_0x0b0f('0x21')])]=new Trunk(_0x4bd2e8);}else{_0x509ffb[_0x0b0f('0x39')](_0x509ffb[_0x0b0f('0x3f')][util[_0x0b0f('0x23')]('SIP/%s',_0x4bd2e8[_0x0b0f('0x21')])],_0x4bd2e8);}}}return _0x509ffb[_0x0b0f('0x3f')];};};Realtime[_0x0b0f('0x38')][_0x0b0f('0x40')]=function(){var _0x5a9c5f=this;return function(_0x4f131e){if(_0x4f131e){freeIsNotKey(_0x4f131e,_0x5a9c5f['voiceQueues'],_0x0b0f('0x21'));for(var _0xf7461a=0x0,_0x17974c={},_0x5d2959={};_0xf7461a<_0x4f131e[_0x0b0f('0x3b')];_0xf7461a+=0x1){_0x17974c=_0x4f131e[_0xf7461a];if(_['isUndefined'](_0x5a9c5f[_0x0b0f('0xf')][_0x17974c['name']])){_0x5a9c5f['voiceQueues'][_0x17974c[_0x0b0f('0x21')]]=new VoiceQueue(_0x17974c);}else{_0x5a9c5f[_0x0b0f('0x39')](_0x5a9c5f[_0x0b0f('0xf')][_0x17974c[_0x0b0f('0x21')]],_0x17974c);}}}return _0x5a9c5f[_0x0b0f('0xf')];};};Realtime[_0x0b0f('0x38')][_0x0b0f('0x41')]=function(){var _0x49787b=this;return function(_0x22fb24){if(_0x22fb24){freeIsNotKey(_0x22fb24,_0x49787b[_0x0b0f('0x10')],'id');for(var _0x78109f=0x0,_0xf4f043={},_0x1b57b5={};_0x78109f<_0x22fb24[_0x0b0f('0x3b')];_0x78109f+=0x1){_0xf4f043=_0x22fb24[_0x78109f];if(_[_0x0b0f('0x3e')](_0x49787b['triggers'][_0xf4f043['id']])){_0x49787b[_0x0b0f('0x10')][_0xf4f043['id']]=new Trigger(_0xf4f043);}else{_0x49787b[_0x0b0f('0x39')](_0x49787b[_0x0b0f('0x10')][_0xf4f043['id']],_0xf4f043);}}}return _0x49787b[_0x0b0f('0x10')];};};Realtime['prototype'][_0x0b0f('0x42')]=function(){var _0x46e1e1=this;return function(_0x832145){if(_0x832145){freeIsNotKey(_0x832145,_0x46e1e1[_0x0b0f('0x12')],'id');for(var _0x375169=0x0,_0x3b947e={},_0xf22482={};_0x375169<_0x832145[_0x0b0f('0x3b')];_0x375169+=0x1){_0x3b947e=_0x832145[_0x375169];if(_['isUndefined'](_0x46e1e1[_0x0b0f('0x12')][_0x3b947e['id']])){_0x46e1e1['templates'][_0x3b947e['id']]=new Template(_0x3b947e);}else{_0x46e1e1[_0x0b0f('0x39')](_0x46e1e1[_0x0b0f('0x12')][_0x3b947e['id']],_0x3b947e);}}}return _0x46e1e1[_0x0b0f('0x12')];};};Realtime[_0x0b0f('0x38')][_0x0b0f('0x43')]=function(){var _0x2677d6=this;return function(_0x55829f){if(_0x55829f){freeIsNotKey(_0x55829f,_0x2677d6[_0x0b0f('0x17')],'id');for(var _0x260905=0x0,_0x5a3a14={},_0x3f687d={};_0x260905<_0x55829f[_0x0b0f('0x3b')];_0x260905+=0x1){_0x5a3a14=_0x55829f[_0x260905];if(_[_0x0b0f('0x3e')](_0x2677d6[_0x0b0f('0x17')][_0x5a3a14['id']])){_0x2677d6[_0x0b0f('0x17')][_0x5a3a14['id']]=new ZendeskAccount(_0x5a3a14);}else{_0x2677d6[_0x0b0f('0x39')](_0x2677d6[_0x0b0f('0x17')][_0x5a3a14['id']],_0x5a3a14);}}}return _0x2677d6[_0x0b0f('0x17')];};};Realtime[_0x0b0f('0x38')][_0x0b0f('0x44')]=function(){var _0x5d8072=this;return function(_0x15fdc6){if(_0x15fdc6){freeIsNotKey(_0x15fdc6,_0x5d8072[_0x0b0f('0x18')],'id');for(var _0x281bd2=0x0,_0x109b58={},_0x65361c={};_0x281bd2<_0x15fdc6['length'];_0x281bd2+=0x1){_0x109b58=_0x15fdc6[_0x281bd2];if(_[_0x0b0f('0x3e')](_0x5d8072[_0x0b0f('0x18')][_0x109b58['id']])){_0x5d8072[_0x0b0f('0x18')][_0x109b58['id']]=new SalesforceAccount(_0x109b58);}else{_0x5d8072['mergeFromDatabase'](_0x5d8072[_0x0b0f('0x18')][_0x109b58['id']],_0x109b58);}}}return _0x5d8072[_0x0b0f('0x18')];};};Realtime[_0x0b0f('0x38')]['initFreshdeskAccounts']=function(){var _0x49640d=this;return function(_0xac7e08){if(_0xac7e08){freeIsNotKey(_0xac7e08,_0x49640d['freshdeskAccounts'],'id');for(var _0x1d56c2=0x0,_0x4855e7={},_0x42143e={};_0x1d56c2<_0xac7e08['length'];_0x1d56c2+=0x1){_0x4855e7=_0xac7e08[_0x1d56c2];if(_[_0x0b0f('0x3e')](_0x49640d[_0x0b0f('0x19')][_0x4855e7['id']])){_0x49640d[_0x0b0f('0x19')][_0x4855e7['id']]=new FreshdeskAccount(_0x4855e7);}else{_0x49640d['mergeFromDatabase'](_0x49640d[_0x0b0f('0x19')][_0x4855e7['id']],_0x4855e7);}}}return _0x49640d[_0x0b0f('0x19')];};};Realtime[_0x0b0f('0x38')][_0x0b0f('0x45')]=function(){var _0x45827a=this;return function(_0x554759){if(_0x554759){freeIsNotKey(_0x554759,_0x45827a[_0x0b0f('0x1a')],'id');for(var _0x170541=0x0,_0x889648={},_0x547098={};_0x170541<_0x554759[_0x0b0f('0x3b')];_0x170541+=0x1){_0x889648=_0x554759[_0x170541];if(_['isUndefined'](_0x45827a['zohoAccounts'][_0x889648['id']])){_0x45827a[_0x0b0f('0x1a')][_0x889648['id']]=new ZohoAccount(_0x889648);}else{_0x45827a['mergeFromDatabase'](_0x45827a[_0x0b0f('0x1a')][_0x889648['id']],_0x889648);}}}return _0x45827a['zohoAccounts'];};};Realtime[_0x0b0f('0x38')][_0x0b0f('0x46')]=function(){var _0x4f3743=this;return function(_0x554047){if(_0x554047){freeIsNotKey(_0x554047,_0x4f3743[_0x0b0f('0x1b')],'id');for(var _0x2e3274=0x0,_0xf9ae42={},_0x35cee9={};_0x2e3274<_0x554047[_0x0b0f('0x3b')];_0x2e3274+=0x1){_0xf9ae42=_0x554047[_0x2e3274];if(_[_0x0b0f('0x3e')](_0x4f3743[_0x0b0f('0x1b')][_0xf9ae42['id']])){_0x4f3743['deskAccounts'][_0xf9ae42['id']]=new DeskAccount(_0xf9ae42);}else{_0x4f3743[_0x0b0f('0x39')](_0x4f3743[_0x0b0f('0x1b')][_0xf9ae42['id']],_0xf9ae42);}}}return _0x4f3743[_0x0b0f('0x1b')];};};Realtime['prototype']['initSugarcrmAccounts']=function(){var _0x739d89=this;return function(_0x46c662){if(_0x46c662){freeIsNotKey(_0x46c662,_0x739d89['sugarcrmAccounts'],'id');for(var _0x1167ca=0x0,_0x2931b8={},_0x2552fc={};_0x1167ca<_0x46c662['length'];_0x1167ca+=0x1){_0x2931b8=_0x46c662[_0x1167ca];if(_[_0x0b0f('0x3e')](_0x739d89[_0x0b0f('0x47')][_0x2931b8['id']])){_0x739d89[_0x0b0f('0x47')][_0x2931b8['id']]=new SugarcrmAccount(_0x2931b8);}else{_0x739d89['mergeFromDatabase'](_0x739d89[_0x0b0f('0x47')][_0x2931b8['id']],_0x2931b8);}}}return _0x739d89[_0x0b0f('0x47')];};};Realtime['prototype'][_0x0b0f('0x48')]=function(){var _0x3deda8=this;return function(_0x221add){if(_0x221add){freeIsNotKey(_0x221add,_0x3deda8[_0x0b0f('0x49')],'id');for(var _0x3f06c2=0x0,_0x252e27={},_0x92b19f={};_0x3f06c2<_0x221add[_0x0b0f('0x3b')];_0x3f06c2+=0x1){_0x252e27=_0x221add[_0x3f06c2];if(_[_0x0b0f('0x3e')](_0x3deda8['vtigerAccounts'][_0x252e27['id']])){_0x3deda8['vtigerAccounts'][_0x252e27['id']]=new VtigerAccount(_0x252e27);}else{_0x3deda8[_0x0b0f('0x39')](_0x3deda8[_0x0b0f('0x49')][_0x252e27['id']],_0x252e27);}}}return _0x3deda8['vtigerAccounts'];};};Realtime[_0x0b0f('0x38')][_0x0b0f('0x4a')]=function(){var _0x2eb34b=this;return function(_0x341f03){if(_0x341f03){freeIsNotKey(_0x341f03,_0x2eb34b['servicenowAccounts'],'id');for(var _0x554c07=0x0,_0x1eae76={},_0x2a8941={};_0x554c07<_0x341f03['length'];_0x554c07+=0x1){_0x1eae76=_0x341f03[_0x554c07];if(_[_0x0b0f('0x3e')](_0x2eb34b[_0x0b0f('0x1c')][_0x1eae76['id']])){_0x2eb34b[_0x0b0f('0x1c')][_0x1eae76['id']]=new ServicenowAccount(_0x1eae76);}else{_0x2eb34b[_0x0b0f('0x39')](_0x2eb34b[_0x0b0f('0x1c')][_0x1eae76['id']],_0x1eae76);}}}return _0x2eb34b[_0x0b0f('0x1c')];};};Realtime[_0x0b0f('0x38')][_0x0b0f('0x4b')]=function(){var _0x4948e7=this;return function(_0x146e9a){if(_0x146e9a){freeIsNotKey(_0x146e9a,_0x4948e7['dynamics365Accounts'],'id');for(var _0x3be915=0x0,_0x58f549={},_0x6b43db={};_0x3be915<_0x146e9a[_0x0b0f('0x3b')];_0x3be915+=0x1){_0x58f549=_0x146e9a[_0x3be915];if(_[_0x0b0f('0x3e')](_0x4948e7[_0x0b0f('0x4c')][_0x58f549['id']])){_0x4948e7[_0x0b0f('0x4c')][_0x58f549['id']]=new Dynamics365Account(_0x58f549);}else{_0x4948e7[_0x0b0f('0x39')](_0x4948e7[_0x0b0f('0x4c')][_0x58f549['id']],_0x58f549);}}}return _0x4948e7[_0x0b0f('0x4c')];};};Realtime[_0x0b0f('0x38')]['initFreshsalesAccounts']=function(){var _0x8e8ef1=this;return function(_0x50c396){if(_0x50c396){freeIsNotKey(_0x50c396,_0x8e8ef1[_0x0b0f('0x1d')],'id');for(var _0x5770cc=0x0,_0x4876f1={},_0x505e5c={};_0x5770cc<_0x50c396[_0x0b0f('0x3b')];_0x5770cc+=0x1){_0x4876f1=_0x50c396[_0x5770cc];if(_[_0x0b0f('0x3e')](_0x8e8ef1[_0x0b0f('0x1d')][_0x4876f1['id']])){_0x8e8ef1['freshsalesAccounts'][_0x4876f1['id']]=new FreshsalesAccount(_0x4876f1);}else{_0x8e8ef1[_0x0b0f('0x39')](_0x8e8ef1[_0x0b0f('0x1d')][_0x4876f1['id']],_0x4876f1);}}}return _0x8e8ef1[_0x0b0f('0x1d')];};};Realtime[_0x0b0f('0x38')][_0x0b0f('0x4d')]=function(){var _0x57a3bf=this;return function(_0x5d41e7){for(var _0x182c23=0x0;_0x182c23<_0x5d41e7[_0x0b0f('0x3b')];_0x182c23+=0x1){_[_0x0b0f('0x4e')](_0x57a3bf['voiceQueues'][_0x5d41e7[_0x182c23][_0x0b0f('0x21')]],_0x5d41e7[_0x182c23]);}return _0x57a3bf[_0x0b0f('0xf')];};};Realtime['prototype'][_0x0b0f('0x4f')]=function(){var _0x471845=this;return function(_0x5d2f09){clearVoiceQueues(_0x471845[_0x0b0f('0xf')]);if(_0x5d2f09){_0x5d2f09=_[_0x0b0f('0x50')](_0x5d2f09,'uniqueid');for(var _0x305e8d in _0x5d2f09){if(_0x5d2f09['hasOwnProperty'](_0x305e8d)){var _0x4f16dd={};for(var _0x3ce3e2=0x0;_0x3ce3e2<_0x5d2f09[_0x305e8d][_0x0b0f('0x3b')];_0x3ce3e2+=0x1){var _0x2e0626=_0x5d2f09[_0x305e8d][_0x3ce3e2][_0x0b0f('0x51')];if(_0x471845[_0x0b0f('0xf')][_0x2e0626]){if(_0x5d2f09[_0x305e8d][_0x3ce3e2]['queuecallerexit']){_0x471845[_0x0b0f('0xf')][_0x2e0626][_0x0b0f('0x52')]+=0x1;}if(_0x5d2f09[_0x305e8d][_0x3ce3e2][_0x0b0f('0x53')]){_0x471845['voiceQueues'][_0x2e0626][_0x0b0f('0x2d')]+=0x1;}_0x471845[_0x0b0f('0xf')][_0x2e0626][_0x0b0f('0x27')]+=moment(_0x5d2f09[_0x305e8d][_0x3ce3e2][_0x0b0f('0x54')])[_0x0b0f('0x55')](moment(_0x5d2f09[_0x305e8d][_0x3ce3e2][_0x0b0f('0x56')]),_0x0b0f('0x57'))||0x0;if(_0x3ce3e2===_0x5d2f09[_0x305e8d][_0x0b0f('0x3b')]-0x1){_0x471845[_0x0b0f('0xf')][_0x2e0626][_0x0b0f('0x28')]+=moment(_0x5d2f09[_0x305e8d][_0x3ce3e2][_0x0b0f('0x58')]||_0x5d2f09[_0x305e8d][_0x3ce3e2][_0x0b0f('0x59')]||_0x5d2f09[_0x305e8d][_0x3ce3e2][_0x0b0f('0x5a')])[_0x0b0f('0x55')](moment(_0x5d2f09[_0x305e8d][_0x3ce3e2][_0x0b0f('0x56')]),_0x0b0f('0x57'))||0x0;_0x471845[_0x0b0f('0xf')][_0x2e0626][_0x0b0f('0x25')]+=0x1;if(_0x5d2f09[_0x305e8d][_0x3ce3e2][_0x0b0f('0x5b')]){_0x471845[_0x0b0f('0xf')][_0x2e0626]['answered']+=0x1;_0x471845[_0x0b0f('0xf')][_0x2e0626][_0x0b0f('0x29')]+=moment(_0x5d2f09[_0x305e8d][_0x3ce3e2][_0x0b0f('0x58')])[_0x0b0f('0x55')](moment(_0x5d2f09[_0x305e8d][_0x3ce3e2][_0x0b0f('0x54')]),'seconds')||0x0;}}else{_0x471845[_0x0b0f('0xf')][_0x2e0626][_0x0b0f('0x28')]+=_0x471845[_0x0b0f('0xf')][_0x2e0626][_0x0b0f('0x27')]||0x0;}}}}}}return _0x471845[_0x0b0f('0xf')];};};Realtime[_0x0b0f('0x38')][_0x0b0f('0x5c')]=function(){var _0x41e801=this;return function(_0x4cffe9){clearVoiceCallReports(_0x41e801['outbound']);if(_0x4cffe9){for(var _0xa461ea=0x0;_0xa461ea<_0x4cffe9[_0x0b0f('0x3b')];_0xa461ea+=0x1){_0x41e801[_0x0b0f('0x13')][_0x0b0f('0x25')]+=0x1;_0x41e801[_0x0b0f('0x13')]['sumDuration']+=_0x4cffe9[_0xa461ea]['duration'];if(_0x4cffe9[_0xa461ea][_0x0b0f('0x5d')]===_0x0b0f('0x5e')){_0x41e801[_0x0b0f('0x13')]['answered']+=0x1;_0x41e801[_0x0b0f('0x13')]['sumHoldTime']+=_0x4cffe9[_0xa461ea][_0x0b0f('0x5f')]-_0x4cffe9[_0xa461ea][_0x0b0f('0x60')]||0x0;_0x41e801[_0x0b0f('0x13')][_0x0b0f('0x29')]+=_0x4cffe9[_0xa461ea][_0x0b0f('0x60')];}}}return _0x41e801['outbound'];};};Realtime['prototype'][_0x0b0f('0x61')]=function(){var _0x3dfc44=this;return function(_0x5f5ac2){if(_0x5f5ac2){freeIsNotKey(_0x5f5ac2,_0x3dfc44[_0x0b0f('0x11')],_0x0b0f('0x21'));for(var _0x4a9a6c=0x0,_0x576883={};_0x4a9a6c<_0x5f5ac2[_0x0b0f('0x3b')];_0x4a9a6c+=0x1){_0x576883=_0x5f5ac2[_0x4a9a6c];if(_['isUndefined'](_0x3dfc44[_0x0b0f('0x11')][_0x576883[_0x0b0f('0x21')]])){_0x3dfc44[_0x0b0f('0x11')][_0x576883['name']]=new Campaign(_0x576883);}else{_0x3dfc44[_0x0b0f('0x39')](_0x3dfc44['campaigns'][_0x576883['name']],_0x576883);_0x3dfc44[_0x0b0f('0x11')][_0x576883[_0x0b0f('0x21')]]['dialQueueProject']=_0x576883[_0x0b0f('0x62')]?_0x576883['SquareProject']['name']:undefined;}}}return _0x3dfc44['campaigns'];};};Realtime[_0x0b0f('0x38')][_0x0b0f('0x63')]=function(){var _0x51656d=this;return function(_0x9b876d){if(_0x9b876d){freeIsNotKey(_0x9b876d,_0x51656d['voiceExtensions'],'id');for(var _0x2ad27f=0x0,_0x44817b={};_0x2ad27f<_0x9b876d['length'];_0x2ad27f+=0x1){_0x44817b=_0x9b876d[_0x2ad27f];if(_['isUndefined'](_0x51656d[_0x0b0f('0x64')][_0x44817b['id']])){_0x51656d['voiceExtensions'][_0x44817b['id']]=new VoiceExtension(_0x44817b);}else{_0x51656d[_0x0b0f('0x39')](_0x51656d[_0x0b0f('0x64')][_0x44817b['id']],_0x44817b);}}}return _0x51656d['voiceExtensions'];};};Realtime[_0x0b0f('0x38')][_0x0b0f('0x65')]=function(){var _0x41bd02=this;return function(_0x5ec613){clearCampaigns(_0x41bd02[_0x0b0f('0x11')]);for(var _0x5a74dc=0x0;_0x5a74dc<_0x5ec613[_0x0b0f('0x3b')];_0x5a74dc+=0x1){_['merge'](_0x41bd02[_0x0b0f('0x11')][_0x5ec613[_0x5a74dc][_0x0b0f('0x21')]],_0x5ec613[_0x5a74dc]);}return _0x41bd02['campaigns'];};};Realtime[_0x0b0f('0x38')][_0x0b0f('0x66')]=function(){var _0x1290cb=this;return function(_0x3a39cd){if(_0x3a39cd){freeIsNotKey(_0x3a39cd,_0x1290cb[_0x0b0f('0x1e')],'id');for(var _0x1cd4fc=0x0,_0x30013f={},_0xc68706={};_0x1cd4fc<_0x3a39cd['length'];_0x1cd4fc+=0x1){_0x30013f=_0x3a39cd[_0x1cd4fc];if(_[_0x0b0f('0x3e')](_0x1290cb[_0x0b0f('0x1e')][_0x30013f['id']])){_0x1290cb['faxAccounts'][_0x30013f['id']]=new FaxAccount(_0x30013f);}else{_0x1290cb['mergeFromDatabase'](_0x1290cb[_0x0b0f('0x1e')][_0x30013f['id']],_0x30013f);}}}return _0x1290cb[_0x0b0f('0x1e')];};};module[_0x0b0f('0x67')]=Realtime;
\ No newline at end of file
+var _0xb0b9=['freshsalesAccounts','mapKeys','SIP/%s','name','hasOwnProperty','isNil','format','total','sumDuration','sumBillable','isEmpty','ivrTotalCallsDays','ivrAnswerCallsDay','answered','unmanaged','abandoned','outboundAnswerAgiCallsDay','outboundNoAnswerCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundNoSuchCallsDay','outboundUnknownCallsDay','outboundDropCallsDayTimeout','outboundDropCallsDayCallersExit','outboundBlacklistCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundReCallsDay','outboundAnswerCallsDay','queueStatusComplete','agents','interface','isUndefined','mergeFromDatabase','prototype','length','initTrunks','voiceQueues','initZendeskAccounts','initFreshdeskAccounts','initVtigerAccounts','initServicenowAccounts','servicenowAccounts','initDynamics365Accounts','merge','initVoiceQueueReports','groupBy','uniqueid','queue','queuecallerexit','queuecallerabandon','sumHoldTime','diff','queuecallerjoinAt','queuecallercompleteAt','queuecallerabandonAt','queuecallerexitAt','seconds','queuecallercomplete','queuecallerleaveAt','initVoiceCallReports','duration','billableseconds','initCampaigns','dialQueueProject','SquareProject','initFaxAccounts','faxAccounts','exports','bluebird','lodash','moment','../model/agent','../model/telephone','../model/trigger','../model/template','../model/zendeskAccount','../model/salesforceAccount','../model/freshdeskAccount','../model/sugarcrmAccount','../model/zohoAccount','../model/vtigerAccount','../model/servicenowAccount','../model/dynamics365Account','../model/faxAccount','telephones','trunks','triggers','campaigns','templates','outbound','voiceExtensions','channels','queueChannels','timers','settings','zendeskAccounts','salesforceAccounts','sugarcrmAccounts','freshdeskAccounts','zohoAccounts','deskAccounts','vtigerAccounts','dynamics365Accounts'];(function(_0x188edb,_0x19fed6){var _0x669a3d=function(_0x40b5d9){while(--_0x40b5d9){_0x188edb['push'](_0x188edb['shift']());}};_0x669a3d(++_0x19fed6);}(_0xb0b9,0x115));var _0x9b0b=function(_0x4b672c,_0x5492e8){_0x4b672c=_0x4b672c-0x0;var _0x30fd6d=_0xb0b9[_0x4b672c];return _0x30fd6d;};'use strict';var BPromise=require(_0x9b0b('0x0'));var util=require('util');var _=require(_0x9b0b('0x1'));var moment=require(_0x9b0b('0x2'));var Agent=require(_0x9b0b('0x3'));var Telephone=require(_0x9b0b('0x4'));var Trunk=require('../model/trunk');var VoiceQueue=require('../model/voiceQueue');var Trigger=require(_0x9b0b('0x5'));var Template=require(_0x9b0b('0x6'));var Campaign=require('../model/campaign');var VoiceExtension=require('../model/voiceExtension');var ZendeskAccount=require(_0x9b0b('0x7'));var SalesforceAccount=require(_0x9b0b('0x8'));var FreshdeskAccount=require(_0x9b0b('0x9'));var SugarcrmAccount=require(_0x9b0b('0xa'));var ZohoAccount=require(_0x9b0b('0xb'));var DeskAccount=require('../model/deskAccount');var VtigerAccount=require(_0x9b0b('0xc'));var ServicenowAccount=require(_0x9b0b('0xd'));var Dynamics365Account=require(_0x9b0b('0xe'));var FreshsalesAccount=require('../model/freshsalesAccount');var FaxAccount=require(_0x9b0b('0xf'));var Realtime=function(){this['agents']={};this[_0x9b0b('0x10')]={};this[_0x9b0b('0x11')]={};this['voiceQueues']={};this[_0x9b0b('0x12')]={};this[_0x9b0b('0x13')]={};this[_0x9b0b('0x14')]={};this[_0x9b0b('0x15')]={'total':0x0,'answered':0x0,'sumHoldTime':0x0,'sumDuration':0x0,'sumBillable':0x0};this[_0x9b0b('0x16')]={};this[_0x9b0b('0x17')]={};this[_0x9b0b('0x18')]={};this['outboundChannels']={};this[_0x9b0b('0x19')]={};this[_0x9b0b('0x1a')]={};this[_0x9b0b('0x1b')]={};this[_0x9b0b('0x1c')]={};this[_0x9b0b('0x1d')]={};this[_0x9b0b('0x1e')]={};this[_0x9b0b('0x1f')]={};this[_0x9b0b('0x20')]={};this[_0x9b0b('0x21')]={};this['servicenowAccounts']={};this[_0x9b0b('0x22')]={};this[_0x9b0b('0x23')]={};this['faxAccounts']={};};function freeIsNotKey(_0x48d8f3,_0x1d64a5,_0x5eb90d){var _0x492f2e=_[_0x9b0b('0x24')](_0x48d8f3,function(_0x3c8f8e,_0x5c84a7){return _0x3c8f8e[_0x5eb90d];});for(var _0x52323a in _0x1d64a5){if(_0x1d64a5['hasOwnProperty'](_0x52323a)){if(!_0x492f2e[_0x52323a]){delete _0x1d64a5[_0x52323a];}}}}function freeIsNotKeySip(_0x2f49fb,_0x502a5c){var _0x325dad=_[_0x9b0b('0x24')](_0x2f49fb,function(_0x4727e0,_0x331338){return util['format'](_0x9b0b('0x25'),_0x4727e0[_0x9b0b('0x26')]);});for(var _0x2b3646 in _0x502a5c){if(_0x502a5c[_0x9b0b('0x27')](_0x2b3646)){if(!_0x325dad[_0x2b3646]){delete _0x502a5c[_0x2b3646];}}}}function freeIsNotKeyAgent(_0x4b82cd,_0x5ba39f){var _0xe68f18=_[_0x9b0b('0x24')](_0x4b82cd,function(_0x12e0eb,_0x8c596b){var _0x4ec44e=_[_0x9b0b('0x28')](_0x12e0eb['interface'])?util[_0x9b0b('0x29')](_0x9b0b('0x25'),_0x12e0eb[_0x9b0b('0x26')]):_0x12e0eb['interface'];return _0x4ec44e;});for(var _0x314176 in _0x5ba39f){if(_0x5ba39f[_0x9b0b('0x27')](_0x314176)){if(!_0xe68f18[_0x314176]){delete _0x5ba39f[_0x314176];}}}}function clearVoiceCallReports(_0x2dc827){_0x2dc827[_0x9b0b('0x2a')]=0x0;_0x2dc827['answered']=0x0;_0x2dc827['sumHoldTime']=0x0;_0x2dc827[_0x9b0b('0x2b')]=0x0;_0x2dc827[_0x9b0b('0x2c')]=0x0;}function clearCampaigns(_0x15b2ee){if(!_[_0x9b0b('0x2d')](_0x15b2ee)){for(var _0x5d1246 in _0x15b2ee){if(_0x15b2ee[_0x9b0b('0x27')](_0x5d1246)){_0x15b2ee[_0x5d1246][_0x9b0b('0x2e')]=0x0;_0x15b2ee[_0x5d1246][_0x9b0b('0x2f')]=0x0;}}}}function clearVoiceQueues(_0x3da70f){if(!_[_0x9b0b('0x2d')](_0x3da70f)){for(var _0xe9e4bb in _0x3da70f){if(_0x3da70f[_0x9b0b('0x27')](_0xe9e4bb)){_0x3da70f[_0xe9e4bb]['total']=0x0;_0x3da70f[_0xe9e4bb][_0x9b0b('0x30')]=0x0;_0x3da70f[_0xe9e4bb][_0x9b0b('0x31')]=0x0;_0x3da70f[_0xe9e4bb][_0x9b0b('0x32')]=0x0;_0x3da70f[_0xe9e4bb]['sumHoldTime']=0x0;_0x3da70f[_0xe9e4bb][_0x9b0b('0x2b')]=0x0;_0x3da70f[_0xe9e4bb][_0x9b0b('0x2c')]=0x0;_0x3da70f[_0xe9e4bb][_0x9b0b('0x33')]=0x0;_0x3da70f[_0xe9e4bb][_0x9b0b('0x34')]=0x0;_0x3da70f[_0xe9e4bb][_0x9b0b('0x35')]=0x0;_0x3da70f[_0xe9e4bb][_0x9b0b('0x36')]=0x0;_0x3da70f[_0xe9e4bb][_0x9b0b('0x37')]=0x0;_0x3da70f[_0xe9e4bb][_0x9b0b('0x38')]=0x0;_0x3da70f[_0xe9e4bb][_0x9b0b('0x39')]=0x0;_0x3da70f[_0xe9e4bb][_0x9b0b('0x3a')]=0x0;_0x3da70f[_0xe9e4bb][_0x9b0b('0x3b')]=0x0;_0x3da70f[_0xe9e4bb][_0x9b0b('0x3c')]=0x0;_0x3da70f[_0xe9e4bb][_0x9b0b('0x3d')]=0x0;_0x3da70f[_0xe9e4bb][_0x9b0b('0x3e')]=0x0;_0x3da70f[_0xe9e4bb][_0x9b0b('0x33')]=0x0;_0x3da70f[_0xe9e4bb][_0x9b0b('0x3f')]=0x0;_0x3da70f[_0xe9e4bb][_0x9b0b('0x40')]=!![];}}}}Realtime['prototype']['mergeFromDatabase']=function(_0x396d08,_0x8052e9){for(var _0x181882 in _0x8052e9){if(_0x396d08['hasOwnProperty'](_0x181882)){_0x396d08[_0x181882]=_0x8052e9[_0x181882];}}};Realtime['prototype']['initAgents']=function(){var _0x8954f2=this;return function(_0x5ea50c){if(_0x5ea50c){freeIsNotKeyAgent(_0x5ea50c,_0x8954f2[_0x9b0b('0x41')]);for(var _0x3f0f3f=0x0,_0x31ec2d={},_0x4a2a1e={};_0x3f0f3f<_0x5ea50c['length'];_0x3f0f3f+=0x1){_0x31ec2d=_0x5ea50c[_0x3f0f3f];var _0xd48f8b=_[_0x9b0b('0x28')](_0x31ec2d['interface'])?util[_0x9b0b('0x29')]('SIP/%s',_0x31ec2d[_0x9b0b('0x26')]):_0x31ec2d[_0x9b0b('0x42')];if(_[_0x9b0b('0x43')](_0x8954f2[_0x9b0b('0x41')][_0xd48f8b])){_0x8954f2[_0x9b0b('0x41')][_0xd48f8b]=new Agent(_0x31ec2d);}else{_0x8954f2[_0x9b0b('0x44')](_0x8954f2['agents'][_0xd48f8b],_0x31ec2d);}}}return _0x8954f2[_0x9b0b('0x41')];};};Realtime[_0x9b0b('0x45')]['initTelephones']=function(){var _0x65572=this;return function(_0x2e454c){if(_0x2e454c){freeIsNotKeySip(_0x2e454c,_0x65572['telephones']);for(var _0x2674d8=0x0,_0x504850={},_0x17e450={};_0x2674d8<_0x2e454c[_0x9b0b('0x46')];_0x2674d8+=0x1){_0x504850=_0x2e454c[_0x2674d8];if(_[_0x9b0b('0x43')](_0x65572['telephones'][util[_0x9b0b('0x29')]('SIP/%s',_0x504850[_0x9b0b('0x26')])])){_0x65572[_0x9b0b('0x10')][util[_0x9b0b('0x29')]('SIP/%s',_0x504850[_0x9b0b('0x26')])]=new Telephone(_0x504850);}else{_0x65572[_0x9b0b('0x44')](_0x65572[_0x9b0b('0x10')][util[_0x9b0b('0x29')](_0x9b0b('0x25'),_0x504850[_0x9b0b('0x26')])],_0x504850);}}}return _0x65572[_0x9b0b('0x10')];};};Realtime[_0x9b0b('0x45')][_0x9b0b('0x47')]=function(){var _0xc67dab=this;return function(_0x1ad0fc){if(_0x1ad0fc){freeIsNotKeySip(_0x1ad0fc,_0xc67dab[_0x9b0b('0x11')]);for(var _0x1506f7=0x0,_0x24ba31={},_0xcdade4={};_0x1506f7<_0x1ad0fc[_0x9b0b('0x46')];_0x1506f7+=0x1){_0x24ba31=_0x1ad0fc[_0x1506f7];if(_[_0x9b0b('0x43')](_0xc67dab[_0x9b0b('0x11')][util[_0x9b0b('0x29')](_0x9b0b('0x25'),_0x24ba31['name'])])){_0xc67dab[_0x9b0b('0x11')][util[_0x9b0b('0x29')](_0x9b0b('0x25'),_0x24ba31[_0x9b0b('0x26')])]=new Trunk(_0x24ba31);}else{_0xc67dab[_0x9b0b('0x44')](_0xc67dab[_0x9b0b('0x11')][util[_0x9b0b('0x29')](_0x9b0b('0x25'),_0x24ba31[_0x9b0b('0x26')])],_0x24ba31);}}}return _0xc67dab[_0x9b0b('0x11')];};};Realtime[_0x9b0b('0x45')]['initVoiceQueues']=function(){var _0x50118d=this;return function(_0x53eda4){if(_0x53eda4){freeIsNotKey(_0x53eda4,_0x50118d[_0x9b0b('0x48')],_0x9b0b('0x26'));for(var _0x131d1d=0x0,_0x4da067={},_0x4507fc={};_0x131d1d<_0x53eda4[_0x9b0b('0x46')];_0x131d1d+=0x1){_0x4da067=_0x53eda4[_0x131d1d];if(_['isUndefined'](_0x50118d[_0x9b0b('0x48')][_0x4da067['name']])){_0x50118d[_0x9b0b('0x48')][_0x4da067['name']]=new VoiceQueue(_0x4da067);}else{_0x50118d[_0x9b0b('0x44')](_0x50118d[_0x9b0b('0x48')][_0x4da067['name']],_0x4da067);}}}return _0x50118d['voiceQueues'];};};Realtime['prototype']['initTriggers']=function(){var _0x23efef=this;return function(_0x34c381){if(_0x34c381){freeIsNotKey(_0x34c381,_0x23efef[_0x9b0b('0x12')],'id');for(var _0x18fbe2=0x0,_0x130632={},_0x39d164={};_0x18fbe2<_0x34c381[_0x9b0b('0x46')];_0x18fbe2+=0x1){_0x130632=_0x34c381[_0x18fbe2];if(_[_0x9b0b('0x43')](_0x23efef[_0x9b0b('0x12')][_0x130632['id']])){_0x23efef[_0x9b0b('0x12')][_0x130632['id']]=new Trigger(_0x130632);}else{_0x23efef[_0x9b0b('0x44')](_0x23efef[_0x9b0b('0x12')][_0x130632['id']],_0x130632);}}}return _0x23efef[_0x9b0b('0x12')];};};Realtime[_0x9b0b('0x45')]['initTemplates']=function(){var _0x522a11=this;return function(_0x2c43ca){if(_0x2c43ca){freeIsNotKey(_0x2c43ca,_0x522a11[_0x9b0b('0x14')],'id');for(var _0x8c2789=0x0,_0x563b7f={},_0x4cbdea={};_0x8c2789<_0x2c43ca['length'];_0x8c2789+=0x1){_0x563b7f=_0x2c43ca[_0x8c2789];if(_[_0x9b0b('0x43')](_0x522a11[_0x9b0b('0x14')][_0x563b7f['id']])){_0x522a11['templates'][_0x563b7f['id']]=new Template(_0x563b7f);}else{_0x522a11['mergeFromDatabase'](_0x522a11['templates'][_0x563b7f['id']],_0x563b7f);}}}return _0x522a11['templates'];};};Realtime[_0x9b0b('0x45')][_0x9b0b('0x49')]=function(){var _0x3aecb9=this;return function(_0x10329a){if(_0x10329a){freeIsNotKey(_0x10329a,_0x3aecb9[_0x9b0b('0x1b')],'id');for(var _0x6435da=0x0,_0x4b5d1d={},_0x43b987={};_0x6435da<_0x10329a[_0x9b0b('0x46')];_0x6435da+=0x1){_0x4b5d1d=_0x10329a[_0x6435da];if(_[_0x9b0b('0x43')](_0x3aecb9['zendeskAccounts'][_0x4b5d1d['id']])){_0x3aecb9['zendeskAccounts'][_0x4b5d1d['id']]=new ZendeskAccount(_0x4b5d1d);}else{_0x3aecb9[_0x9b0b('0x44')](_0x3aecb9['zendeskAccounts'][_0x4b5d1d['id']],_0x4b5d1d);}}}return _0x3aecb9['zendeskAccounts'];};};Realtime[_0x9b0b('0x45')]['initSalesforceAccounts']=function(){var _0x47d96f=this;return function(_0x19be20){if(_0x19be20){freeIsNotKey(_0x19be20,_0x47d96f[_0x9b0b('0x1c')],'id');for(var _0x267a39=0x0,_0x2313a3={},_0x1850ec={};_0x267a39<_0x19be20['length'];_0x267a39+=0x1){_0x2313a3=_0x19be20[_0x267a39];if(_[_0x9b0b('0x43')](_0x47d96f[_0x9b0b('0x1c')][_0x2313a3['id']])){_0x47d96f[_0x9b0b('0x1c')][_0x2313a3['id']]=new SalesforceAccount(_0x2313a3);}else{_0x47d96f[_0x9b0b('0x44')](_0x47d96f[_0x9b0b('0x1c')][_0x2313a3['id']],_0x2313a3);}}}return _0x47d96f[_0x9b0b('0x1c')];};};Realtime[_0x9b0b('0x45')][_0x9b0b('0x4a')]=function(){var _0x48ebe3=this;return function(_0x2bcde6){if(_0x2bcde6){freeIsNotKey(_0x2bcde6,_0x48ebe3[_0x9b0b('0x1e')],'id');for(var _0x359963=0x0,_0x4c985e={},_0x3a25c6={};_0x359963<_0x2bcde6['length'];_0x359963+=0x1){_0x4c985e=_0x2bcde6[_0x359963];if(_[_0x9b0b('0x43')](_0x48ebe3[_0x9b0b('0x1e')][_0x4c985e['id']])){_0x48ebe3[_0x9b0b('0x1e')][_0x4c985e['id']]=new FreshdeskAccount(_0x4c985e);}else{_0x48ebe3['mergeFromDatabase'](_0x48ebe3[_0x9b0b('0x1e')][_0x4c985e['id']],_0x4c985e);}}}return _0x48ebe3[_0x9b0b('0x1e')];};};Realtime[_0x9b0b('0x45')]['initZohoAccounts']=function(){var _0x75519b=this;return function(_0x3bee5b){if(_0x3bee5b){freeIsNotKey(_0x3bee5b,_0x75519b['zohoAccounts'],'id');for(var _0xa5ebab=0x0,_0x1c72d0={},_0x3f614e={};_0xa5ebab<_0x3bee5b['length'];_0xa5ebab+=0x1){_0x1c72d0=_0x3bee5b[_0xa5ebab];if(_[_0x9b0b('0x43')](_0x75519b[_0x9b0b('0x1f')][_0x1c72d0['id']])){_0x75519b[_0x9b0b('0x1f')][_0x1c72d0['id']]=new ZohoAccount(_0x1c72d0);}else{_0x75519b[_0x9b0b('0x44')](_0x75519b['zohoAccounts'][_0x1c72d0['id']],_0x1c72d0);}}}return _0x75519b[_0x9b0b('0x1f')];};};Realtime[_0x9b0b('0x45')]['initDeskAccounts']=function(){var _0x5857eb=this;return function(_0x3293e0){if(_0x3293e0){freeIsNotKey(_0x3293e0,_0x5857eb[_0x9b0b('0x20')],'id');for(var _0xa73edf=0x0,_0x3d5693={},_0x2c93e7={};_0xa73edf<_0x3293e0[_0x9b0b('0x46')];_0xa73edf+=0x1){_0x3d5693=_0x3293e0[_0xa73edf];if(_[_0x9b0b('0x43')](_0x5857eb[_0x9b0b('0x20')][_0x3d5693['id']])){_0x5857eb[_0x9b0b('0x20')][_0x3d5693['id']]=new DeskAccount(_0x3d5693);}else{_0x5857eb[_0x9b0b('0x44')](_0x5857eb[_0x9b0b('0x20')][_0x3d5693['id']],_0x3d5693);}}}return _0x5857eb[_0x9b0b('0x20')];};};Realtime['prototype']['initSugarcrmAccounts']=function(){var _0x30bbd6=this;return function(_0x49cc69){if(_0x49cc69){freeIsNotKey(_0x49cc69,_0x30bbd6[_0x9b0b('0x1d')],'id');for(var _0x35326d=0x0,_0x5cfcbe={},_0x2d81c9={};_0x35326d<_0x49cc69[_0x9b0b('0x46')];_0x35326d+=0x1){_0x5cfcbe=_0x49cc69[_0x35326d];if(_[_0x9b0b('0x43')](_0x30bbd6[_0x9b0b('0x1d')][_0x5cfcbe['id']])){_0x30bbd6[_0x9b0b('0x1d')][_0x5cfcbe['id']]=new SugarcrmAccount(_0x5cfcbe);}else{_0x30bbd6['mergeFromDatabase'](_0x30bbd6[_0x9b0b('0x1d')][_0x5cfcbe['id']],_0x5cfcbe);}}}return _0x30bbd6[_0x9b0b('0x1d')];};};Realtime['prototype'][_0x9b0b('0x4b')]=function(){var _0x235376=this;return function(_0x3e219d){if(_0x3e219d){freeIsNotKey(_0x3e219d,_0x235376['vtigerAccounts'],'id');for(var _0x9bc0ef=0x0,_0x357fcc={},_0x47b5b9={};_0x9bc0ef<_0x3e219d[_0x9b0b('0x46')];_0x9bc0ef+=0x1){_0x357fcc=_0x3e219d[_0x9bc0ef];if(_['isUndefined'](_0x235376[_0x9b0b('0x21')][_0x357fcc['id']])){_0x235376[_0x9b0b('0x21')][_0x357fcc['id']]=new VtigerAccount(_0x357fcc);}else{_0x235376[_0x9b0b('0x44')](_0x235376[_0x9b0b('0x21')][_0x357fcc['id']],_0x357fcc);}}}return _0x235376['vtigerAccounts'];};};Realtime[_0x9b0b('0x45')][_0x9b0b('0x4c')]=function(){var _0x5b1bb0=this;return function(_0x2ee749){if(_0x2ee749){freeIsNotKey(_0x2ee749,_0x5b1bb0[_0x9b0b('0x4d')],'id');for(var _0x2710b4=0x0,_0x48a50a={},_0x2be02e={};_0x2710b4<_0x2ee749[_0x9b0b('0x46')];_0x2710b4+=0x1){_0x48a50a=_0x2ee749[_0x2710b4];if(_[_0x9b0b('0x43')](_0x5b1bb0[_0x9b0b('0x4d')][_0x48a50a['id']])){_0x5b1bb0[_0x9b0b('0x4d')][_0x48a50a['id']]=new ServicenowAccount(_0x48a50a);}else{_0x5b1bb0['mergeFromDatabase'](_0x5b1bb0[_0x9b0b('0x4d')][_0x48a50a['id']],_0x48a50a);}}}return _0x5b1bb0[_0x9b0b('0x4d')];};};Realtime['prototype'][_0x9b0b('0x4e')]=function(){var _0x3390dd=this;return function(_0x1658bf){if(_0x1658bf){freeIsNotKey(_0x1658bf,_0x3390dd[_0x9b0b('0x22')],'id');for(var _0xb1c18f=0x0,_0x476e77={},_0x1e6bb9={};_0xb1c18f<_0x1658bf[_0x9b0b('0x46')];_0xb1c18f+=0x1){_0x476e77=_0x1658bf[_0xb1c18f];if(_['isUndefined'](_0x3390dd['dynamics365Accounts'][_0x476e77['id']])){_0x3390dd['dynamics365Accounts'][_0x476e77['id']]=new Dynamics365Account(_0x476e77);}else{_0x3390dd[_0x9b0b('0x44')](_0x3390dd['dynamics365Accounts'][_0x476e77['id']],_0x476e77);}}}return _0x3390dd[_0x9b0b('0x22')];};};Realtime[_0x9b0b('0x45')]['initFreshsalesAccounts']=function(){var _0x1fb4cf=this;return function(_0x2a5b0b){if(_0x2a5b0b){freeIsNotKey(_0x2a5b0b,_0x1fb4cf[_0x9b0b('0x23')],'id');for(var _0x177bd1=0x0,_0x479832={},_0x3d08ad={};_0x177bd1<_0x2a5b0b[_0x9b0b('0x46')];_0x177bd1+=0x1){_0x479832=_0x2a5b0b[_0x177bd1];if(_['isUndefined'](_0x1fb4cf[_0x9b0b('0x23')][_0x479832['id']])){_0x1fb4cf['freshsalesAccounts'][_0x479832['id']]=new FreshsalesAccount(_0x479832);}else{_0x1fb4cf[_0x9b0b('0x44')](_0x1fb4cf[_0x9b0b('0x23')][_0x479832['id']],_0x479832);}}}return _0x1fb4cf['freshsalesAccounts'];};};Realtime['prototype']['initVoiceQueueHopperHistory']=function(){var _0x1d890c=this;return function(_0x485a5e){for(var _0x246731=0x0;_0x246731<_0x485a5e[_0x9b0b('0x46')];_0x246731+=0x1){_[_0x9b0b('0x4f')](_0x1d890c[_0x9b0b('0x48')][_0x485a5e[_0x246731]['name']],_0x485a5e[_0x246731]);}return _0x1d890c[_0x9b0b('0x48')];};};Realtime[_0x9b0b('0x45')][_0x9b0b('0x50')]=function(){var _0x2816a2=this;return function(_0x4fde8b){clearVoiceQueues(_0x2816a2[_0x9b0b('0x48')]);if(_0x4fde8b){_0x4fde8b=_[_0x9b0b('0x51')](_0x4fde8b,_0x9b0b('0x52'));for(var _0x1363e2 in _0x4fde8b){if(_0x4fde8b[_0x9b0b('0x27')](_0x1363e2)){var _0x356559={};for(var _0x210986=0x0;_0x210986<_0x4fde8b[_0x1363e2][_0x9b0b('0x46')];_0x210986+=0x1){var _0x50fdda=_0x4fde8b[_0x1363e2][_0x210986][_0x9b0b('0x53')];if(_0x2816a2['voiceQueues'][_0x50fdda]){if(_0x4fde8b[_0x1363e2][_0x210986][_0x9b0b('0x54')]){_0x2816a2[_0x9b0b('0x48')][_0x50fdda]['unmanaged']+=0x1;}if(_0x4fde8b[_0x1363e2][_0x210986][_0x9b0b('0x55')]){_0x2816a2[_0x9b0b('0x48')][_0x50fdda]['abandoned']+=0x1;}_0x2816a2[_0x9b0b('0x48')][_0x50fdda][_0x9b0b('0x56')]+=moment(_0x4fde8b[_0x1363e2][_0x210986]['queuecallerleaveAt'])[_0x9b0b('0x57')](moment(_0x4fde8b[_0x1363e2][_0x210986][_0x9b0b('0x58')]),'seconds')||0x0;if(_0x210986===_0x4fde8b[_0x1363e2]['length']-0x1){_0x2816a2[_0x9b0b('0x48')][_0x50fdda]['sumDuration']+=moment(_0x4fde8b[_0x1363e2][_0x210986][_0x9b0b('0x59')]||_0x4fde8b[_0x1363e2][_0x210986][_0x9b0b('0x5a')]||_0x4fde8b[_0x1363e2][_0x210986][_0x9b0b('0x5b')])[_0x9b0b('0x57')](moment(_0x4fde8b[_0x1363e2][_0x210986][_0x9b0b('0x58')]),_0x9b0b('0x5c'))||0x0;_0x2816a2[_0x9b0b('0x48')][_0x50fdda][_0x9b0b('0x2a')]+=0x1;if(_0x4fde8b[_0x1363e2][_0x210986][_0x9b0b('0x5d')]){_0x2816a2[_0x9b0b('0x48')][_0x50fdda][_0x9b0b('0x30')]+=0x1;_0x2816a2[_0x9b0b('0x48')][_0x50fdda][_0x9b0b('0x2c')]+=moment(_0x4fde8b[_0x1363e2][_0x210986][_0x9b0b('0x59')])[_0x9b0b('0x57')](moment(_0x4fde8b[_0x1363e2][_0x210986][_0x9b0b('0x5e')]),_0x9b0b('0x5c'))||0x0;}}else{_0x2816a2[_0x9b0b('0x48')][_0x50fdda][_0x9b0b('0x2b')]+=_0x2816a2['voiceQueues'][_0x50fdda][_0x9b0b('0x56')]||0x0;}}}}}}return _0x2816a2[_0x9b0b('0x48')];};};Realtime[_0x9b0b('0x45')][_0x9b0b('0x5f')]=function(){var _0x5e77c4=this;return function(_0x4cac7a){clearVoiceCallReports(_0x5e77c4['outbound']);if(_0x4cac7a){for(var _0x5d77dc=0x0;_0x5d77dc<_0x4cac7a[_0x9b0b('0x46')];_0x5d77dc+=0x1){_0x5e77c4['outbound'][_0x9b0b('0x2a')]+=0x1;_0x5e77c4[_0x9b0b('0x15')][_0x9b0b('0x2b')]+=_0x4cac7a[_0x5d77dc]['duration'];if(_0x4cac7a[_0x5d77dc]['disposition']==='ANSWERED'){_0x5e77c4['outbound'][_0x9b0b('0x30')]+=0x1;_0x5e77c4[_0x9b0b('0x15')][_0x9b0b('0x56')]+=_0x4cac7a[_0x5d77dc][_0x9b0b('0x60')]-_0x4cac7a[_0x5d77dc]['billableseconds']||0x0;_0x5e77c4[_0x9b0b('0x15')][_0x9b0b('0x2c')]+=_0x4cac7a[_0x5d77dc][_0x9b0b('0x61')];}}}return _0x5e77c4['outbound'];};};Realtime[_0x9b0b('0x45')][_0x9b0b('0x62')]=function(){var _0x19b75f=this;return function(_0x1c9d88){if(_0x1c9d88){freeIsNotKey(_0x1c9d88,_0x19b75f[_0x9b0b('0x13')],'name');for(var _0x5c048f=0x0,_0x35f776={};_0x5c048f<_0x1c9d88[_0x9b0b('0x46')];_0x5c048f+=0x1){_0x35f776=_0x1c9d88[_0x5c048f];if(_[_0x9b0b('0x43')](_0x19b75f[_0x9b0b('0x13')][_0x35f776[_0x9b0b('0x26')]])){_0x19b75f['campaigns'][_0x35f776[_0x9b0b('0x26')]]=new Campaign(_0x35f776);}else{_0x19b75f[_0x9b0b('0x44')](_0x19b75f['campaigns'][_0x35f776[_0x9b0b('0x26')]],_0x35f776);_0x19b75f[_0x9b0b('0x13')][_0x35f776[_0x9b0b('0x26')]][_0x9b0b('0x63')]=_0x35f776[_0x9b0b('0x64')]?_0x35f776[_0x9b0b('0x64')]['name']:undefined;}}}return _0x19b75f[_0x9b0b('0x13')];};};Realtime[_0x9b0b('0x45')]['initVoiceExtensions']=function(){var _0x58e695=this;return function(_0x76faf9){if(_0x76faf9){freeIsNotKey(_0x76faf9,_0x58e695['voiceExtensions'],'id');for(var _0x20d3cb=0x0,_0x5c35a2={};_0x20d3cb<_0x76faf9['length'];_0x20d3cb+=0x1){_0x5c35a2=_0x76faf9[_0x20d3cb];if(_[_0x9b0b('0x43')](_0x58e695['voiceExtensions'][_0x5c35a2['id']])){_0x58e695[_0x9b0b('0x16')][_0x5c35a2['id']]=new VoiceExtension(_0x5c35a2);}else{_0x58e695[_0x9b0b('0x44')](_0x58e695[_0x9b0b('0x16')][_0x5c35a2['id']],_0x5c35a2);}}}return _0x58e695[_0x9b0b('0x16')];};};Realtime[_0x9b0b('0x45')]['initCampaignHopperHistory']=function(){var _0xe9d106=this;return function(_0x4917c2){clearCampaigns(_0xe9d106['campaigns']);for(var _0x3438fe=0x0;_0x3438fe<_0x4917c2[_0x9b0b('0x46')];_0x3438fe+=0x1){_[_0x9b0b('0x4f')](_0xe9d106[_0x9b0b('0x13')][_0x4917c2[_0x3438fe]['name']],_0x4917c2[_0x3438fe]);}return _0xe9d106[_0x9b0b('0x13')];};};Realtime[_0x9b0b('0x45')][_0x9b0b('0x65')]=function(){var _0x6ea783=this;return function(_0x2a34f1){if(_0x2a34f1){freeIsNotKey(_0x2a34f1,_0x6ea783[_0x9b0b('0x66')],'id');for(var _0x2e0b19=0x0,_0x1a1478={},_0x3b9685={};_0x2e0b19<_0x2a34f1[_0x9b0b('0x46')];_0x2e0b19+=0x1){_0x1a1478=_0x2a34f1[_0x2e0b19];if(_[_0x9b0b('0x43')](_0x6ea783[_0x9b0b('0x66')][_0x1a1478['id']])){_0x6ea783['faxAccounts'][_0x1a1478['id']]=new FaxAccount(_0x1a1478);}else{_0x6ea783[_0x9b0b('0x44')](_0x6ea783[_0x9b0b('0x66')][_0x1a1478['id']],_0x1a1478);}}}return _0x6ea783[_0x9b0b('0x66')];};};module[_0x9b0b('0x67')]=Realtime;
\ No newline at end of file
index a819e1d..c58c935 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0783=['membername','monitors','monitorFilename','filename','createdAt','connectedlinename','voiceAgentReport','isArray','forEach','Local','mobile','phone','substring','indexOf','transfererlinkedid','exports','lodash','util','../../../config/environment','../rpc/voiceCallReport','../rpc/voiceDialReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceAgentReport','./voiceDialReport','./userReport','agents','telephones','prototype','sync','realtime','xdr','disabled','custom:voiceQueueReport','voiceQueueReport','custom:voiceCallReport','voiceCallReport','bind','custom:voiceAgentReport','custom:voiceDialReport','voiceDialReport','attendedtransfer','attendedTransfer','findAgent','accountcode','name','isNil','find','interface','SIP/%s','length','connectedlinenum','assigned','lastAssignedTo','format','queuecallercomplete','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','match','getAgentByInternal','keys','channel','split','calleridnum','outbound','destination','exten','type','dialer','lastapplication','queue','lastdata','context','from-voip-provider','callerid','from-sip','xcally-motion-preview','calleridpreview','originatecalleridnum','destinationchannel','ANSWERED','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','transfereelinkedid','uniqueid','blindTransfer','getCallType','UserId'];(function(_0x54a8c2,_0x5c966e){var _0x5c9e02=function(_0x305912){while(--_0x305912){_0x54a8c2['push'](_0x54a8c2['shift']());}};_0x5c9e02(++_0x5c966e);}(_0x0783,0xd2));var _0x3078=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0783[_0x321bb2];return _0x9c12ed;};'use strict';var _=require(_0x3078('0x0'));var moment=require('moment');var util=require(_0x3078('0x1'));var config=require(_0x3078('0x2'));var ami=require('../ami');var RpcVoiceAgentReport=require('../rpc/voiceAgentReport');var RpcVoiceCallReport=require(_0x3078('0x3'));var RpcVoiceDialReport=require(_0x3078('0x4'));var RpcMemberReport=require(_0x3078('0x5'));var RpcVoiceQueueReport=require(_0x3078('0x6'));var RpcVoiceRecording=require(_0x3078('0x7'));var RpcVoiceTransferReport=require(_0x3078('0x8'));var VoiceQueueReport=require(_0x3078('0x9'));var VoiceCallReport=require(_0x3078('0xa'));var VoiceAgentReport=require(_0x3078('0xb'));var VoiceDialReport=require(_0x3078('0xc'));var UserReport=require(_0x3078('0xd'));function Report(_0x803402){this['realtime']=_0x803402;this[_0x3078('0xe')]=_0x803402['agents'];this[_0x3078('0xf')]=_0x803402[_0x3078('0xf')];}Report[_0x3078('0x10')][_0x3078('0x11')]=function(_0x55d8de){var _0x3ced4a=new VoiceQueueReport(this[_0x3078('0x12')]);var _0x3482fb=new VoiceAgentReport(this[_0x3078('0x12')]);var _0x2994de=new VoiceDialReport(this['realtime']);var _0x326c83=new VoiceCallReport(this[_0x3078('0x12')]);var _0x2ee873=new UserReport(this[_0x3078('0x12')]);if(config[_0x3078('0x13')]&&config[_0x3078('0x13')][_0x3078('0x14')]){ami['on'](_0x3078('0x15'),this[_0x3078('0x16')]['bind'](this));ami['on'](_0x3078('0x17'),this[_0x3078('0x18')][_0x3078('0x19')](this));ami['on'](_0x3078('0x1a'),this['voiceAgentReport'][_0x3078('0x19')](this));ami['on'](_0x3078('0x1b'),this[_0x3078('0x1c')][_0x3078('0x19')](this));ami['on']('blindtransfer',this['blindTransfer'][_0x3078('0x19')](this));ami['on'](_0x3078('0x1d'),this[_0x3078('0x1e')][_0x3078('0x19')](this));}};Report[_0x3078('0x10')][_0x3078('0x1f')]=function(_0x2c442a){var _0x5f5d42;_0x5f5d42=_['find'](this['agents'],function(_0xaff4c7){return _0xaff4c7[_0x3078('0x20')]==_0x2c442a||_0xaff4c7[_0x3078('0x21')]==_0x2c442a;});if(_[_0x3078('0x22')](_0x5f5d42)){var _0x50ddeb=_[_0x3078('0x23')](this['telephones'],function(_0xa58d76){return _0xa58d76[_0x3078('0x20')]==_0x2c442a||_0xa58d76[_0x3078('0x21')]==_0x2c442a;});if(_0x50ddeb){_0x5f5d42=_[_0x3078('0x23')](this[_0x3078('0xe')],function(_0x3b5577){return _0x3b5577[_0x3078('0x24')]==util['format'](_0x3078('0x25'),_0x50ddeb['name']);});}}return _0x5f5d42;};Report[_0x3078('0x10')][_0x3078('0x16')]=function(_0x32e2ee){for(var _0x4ca71c=0x0;_0x4ca71c<_0x32e2ee[_0x3078('0x26')];_0x4ca71c+=0x1){var _0x5ebeb5=this[_0x3078('0x1f')](_0x32e2ee[_0x4ca71c][_0x3078('0x27')]);if(_0x5ebeb5){_0x32e2ee[_0x4ca71c][_0x3078('0x20')]=_0x5ebeb5['accountcode'];_0x32e2ee[_0x4ca71c][_0x3078('0x28')]=!![];_0x32e2ee[_0x4ca71c][_0x3078('0x29')]=_0x5ebeb5['name'];_0x32e2ee[_0x4ca71c][_0x3078('0x24')]=_[_0x3078('0x22')](_0x5ebeb5[_0x3078('0x24')])?util[_0x3078('0x2a')]('SIP/%s',_0x5ebeb5['name']):_0x5ebeb5['interface'];if(_0x32e2ee[_0x4ca71c][_0x3078('0x2b')]){_0x32e2ee[_0x4ca71c][_0x3078('0x2c')]=moment()[_0x3078('0x2a')](_0x3078('0x2d'));}if(_0x32e2ee[_0x4ca71c][_0x3078('0x2e')]){_0x32e2ee[_0x4ca71c][_0x3078('0x2f')]=moment()[_0x3078('0x2a')]('YYYY-MM-DD\x20HH:mm:ss');}RpcMemberReport[_0x3078('0x16')](_0x32e2ee[_0x4ca71c]);}RpcVoiceQueueReport[_0x3078('0x30')](_0x32e2ee[_0x4ca71c]);}};function extractCalleridNumber(_0x59f5a0){var _0x5f242c=_0x59f5a0[_0x3078('0x31')](/<(.*?)>/);return _0x5f242c?_0x5f242c[0x1]:_0x59f5a0;}Report[_0x3078('0x10')][_0x3078('0x32')]=function(_0x47ccf9){for(var _0x5ed416=0x0;_0x5ed416<Object[_0x3078('0x33')](this[_0x3078('0xe')])[_0x3078('0x26')];_0x5ed416++){var _0x488add=Object['keys'](this[_0x3078('0xe')])[_0x5ed416];var _0xcb6b17=this[_0x3078('0xe')][_0x488add];if(_0xcb6b17[_0x3078('0x20')]===Number(_0x47ccf9))return _0xcb6b17;}return null;};Report[_0x3078('0x10')]['getCallType']=function(_0x27f4fa){var _0x572590=_0x27f4fa[_0x3078('0x34')][_0x3078('0x35')]('-')[0x0];var _0x5d2e85=this[_0x3078('0xe')][_0x572590];if(!_0x5d2e85)_0x5d2e85=this['getAgentByInternal'](_0x27f4fa[_0x3078('0x36')]);return!_0x5d2e85?_0x3078('0x37'):'internal';};Report[_0x3078('0x10')]['voiceCallReport']=function(_0x449b27){_0x449b27[_0x3078('0x38')]=_0x449b27[_0x3078('0x38')]||_0x449b27[_0x3078('0x39')];if(_0x449b27[_0x3078('0x3a')]==_0x3078('0x3b')){_0x449b27[_0x3078('0x3c')]=_0x3078('0x3d');_0x449b27[_0x3078('0x3e')]=_0x449b27[_0x3078('0x3d')];if(_0x449b27[_0x3078('0x3f')]==_0x3078('0x40')){_0x449b27['accountcode']='';_0x449b27[_0x3078('0x38')]=extractCalleridNumber(_0x449b27[_0x3078('0x41')]);}else if(_0x449b27[_0x3078('0x3f')]==_0x3078('0x42')){if(_0x449b27['destination']==_0x3078('0x43')){_0x449b27['destination']=extractCalleridNumber(_0x449b27[_0x3078('0x44')]);_0x449b27[_0x3078('0x36')]=_0x449b27[_0x3078('0x45')];_0x449b27[_0x3078('0x46')]=[_0x449b27[_0x3078('0x34')],_0x449b27[_0x3078('0x34')]=_0x449b27['destinationchannel']][0x0];_0x449b27[_0x3078('0x41')]=_0x449b27['calleridpreview'];}else{_0x449b27['destination']=_0x449b27[_0x3078('0x36')];_0x449b27['calleridnum']=_0x449b27['originatecalleridnum'];if(_0x449b27['disposition']==_0x3078('0x47')){_0x449b27[_0x3078('0x20')]=_0x449b27[_0x3078('0x27')];}else{_0x449b27[_0x3078('0x20')]='';}}}}else{_0x449b27[_0x3078('0x41')]=util['format'](_0x3078('0x48'),_0x449b27[_0x3078('0x49')],_0x449b27[_0x3078('0x36')]);}if(RpcVoiceTransferReport[_0x3078('0x4a')][_0x449b27[_0x3078('0x4b')]]){var _0x369f75=RpcVoiceTransferReport[_0x3078('0x4a')][_0x449b27['linkedid']];_0x369f75[_0x3078('0x4c')]=_0x449b27[_0x3078('0x4d')];RpcVoiceTransferReport[_0x3078('0x4e')](_0x369f75);delete RpcVoiceTransferReport[_0x3078('0x4a')][_0x449b27[_0x3078('0x4b')]];}if(_['isNil'](_0x449b27['type'])){_0x449b27[_0x3078('0x3a')]=this[_0x3078('0x4f')](_0x449b27);}if(_['isNil'](_0x449b27[_0x3078('0x50')])){var _0x628e90=_0x449b27['channel'][_0x3078('0x35')]('-')[0x0];var _0x1af1dc=this[_0x3078('0xe')][_0x628e90];if(!_0x1af1dc)_0x1af1dc=this['getAgentByInternal'](_0x449b27[_0x3078('0x20')]);if(_0x1af1dc){_0x449b27['UserId']=_0x1af1dc['id'];_0x449b27[_0x3078('0x51')]=_0x1af1dc[_0x3078('0x21')];}}RpcVoiceCallReport[_0x3078('0x30')](_0x449b27);if(_0x449b27['monitor']){for(var _0x46d653=0x0;_0x46d653<_0x449b27[_0x3078('0x52')][_0x3078('0x26')];_0x46d653+=0x1){_0x449b27[_0x3078('0x53')]=_0x449b27['monitors'][_0x46d653][_0x3078('0x54')];_0x449b27[_0x3078('0x55')]=_0x449b27[_0x3078('0x52')][_0x46d653][_0x3078('0x55')];if(_0x449b27['exten']==_0x3078('0x43')){_0x449b27[_0x3078('0x36')]=_0x449b27[_0x3078('0x27')];_0x449b27[_0x3078('0x49')]=_0x449b27['connectedlinename'];_0x449b27[_0x3078('0x27')]=_0x449b27[_0x3078('0x20')];_0x449b27[_0x3078('0x56')]=_0x449b27[_0x3078('0x51')];_0x449b27[_0x3078('0x39')]=_0x449b27[_0x3078('0x45')];}else if(_0x449b27['exten']=='xcally-motion-dialer'){_0x449b27['calleridnum']=_0x449b27[_0x3078('0x38')];_0x449b27['exten']=_0x449b27['originatecalleridnum'];}RpcVoiceRecording[_0x3078('0x30')](_0x449b27);}}};Report['prototype'][_0x3078('0x57')]=function(_0xe42454){if(_[_0x3078('0x58')](_0xe42454)){_0xe42454[_0x3078('0x59')](function(_0x24b0ee){RpcVoiceAgentReport['create'](_0x24b0ee);});}else{RpcVoiceAgentReport[_0x3078('0x30')](_0xe42454);}};Report[_0x3078('0x10')][_0x3078('0x1c')]=function(_0x2f2c88){RpcVoiceDialReport[_0x3078('0x30')](_0x2f2c88);var _0x1f5eeb;var _0x495f13;var _0x2ff64a=_0x2f2c88[_0x3078('0x34')];if(_['startsWith'](_0x2ff64a,_0x3078('0x5a'))){_0x495f13=_0x2ff64a['substring'](_0x2ff64a['indexOf']('/')+0x1,_0x2ff64a['indexOf']('@'));_0x1f5eeb=_[_0x3078('0x23')](this['agents'],function(_0x188cac){return _0x188cac[_0x3078('0x5b')]==_0x495f13||_0x188cac[_0x3078('0x5c')]==_0x495f13||_0x188cac[_0x3078('0x20')]==_0x495f13;});}else{_0x495f13=_0x2ff64a[_0x3078('0x5d')](_0x2ff64a[_0x3078('0x5e')]('/')+0x1,_0x2ff64a['lastIndexOf']('-'));_0x1f5eeb=this[_0x3078('0x1f')](_0x495f13);}if(_0x1f5eeb){_0x2f2c88[_0x3078('0x24')]=_['isNil'](_0x1f5eeb[_0x3078('0x24')])?util['format']('SIP/%s',_0x1f5eeb[_0x3078('0x21')]):_0x1f5eeb['interface'];_0x2f2c88['membername']=_0x1f5eeb[_0x3078('0x21')];_0x2f2c88[_0x3078('0x20')]=_0x1f5eeb[_0x3078('0x20')];RpcMemberReport[_0x3078('0x1c')](_0x2f2c88);}};Report['prototype'][_0x3078('0x4e')]=function(_0x490d28){RpcVoiceTransferReport[_0x3078('0x4a')][_0x490d28[_0x3078('0x5f')]]=_0x490d28;};Report[_0x3078('0x10')][_0x3078('0x1e')]=function(_0x4ac700){RpcVoiceTransferReport[_0x3078('0x1e')](_0x4ac700);};module[_0x3078('0x60')]=Report;
\ No newline at end of file
+var _0x9d56=['xcally-motion-preview','calleridpreview','originatecalleridnum','destinationchannel','disposition','ANSWERED','connectedlinenum','\x22%s\x22\x20<%s>','calleridname','transfers','linkedid','UserId','membername','monitorFilename','monitors','filename','createdAt','connectedlinename','xcally-motion-dialer','voiceAgentReport','isArray','forEach','voiceDialReport','startsWith','Local','substring','indexOf','mobile','transfererlinkedid','exports','lodash','moment','util','../../../config/environment','../rpc/voiceAgentReport','../rpc/voiceCallReport','../rpc/memberReport','../rpc/voiceQueueReport','../rpc/voiceRecording','../rpc/voiceTransferReport','./voiceQueueReport','./voiceCallReport','./voiceDialReport','realtime','agents','telephones','prototype','sync','xdr','custom:voiceQueueReport','voiceQueueReport','bind','custom:voiceCallReport','custom:voiceAgentReport','custom:voiceDialReport','blindtransfer','blindTransfer','attendedtransfer','attendedTransfer','findAgent','find','name','isNil','interface','format','SIP/%s','assigned','lastAssignedTo','queuecallercompleteAt','YYYY-MM-DD\x20HH:mm:ss','queuecallerexit','queuecallerexitAt','create','match','getAgentByInternal','keys','length','accountcode','getCallType','channel','split','calleridnum','outbound','internal','voiceCallReport','destination','exten','type','dialer','lastapplication','queue','lastdata','context','from-voip-provider','callerid','from-sip'];(function(_0x25701b,_0x2a6976){var _0x3a8a2c=function(_0x1a5e78){while(--_0x1a5e78){_0x25701b['push'](_0x25701b['shift']());}};_0x3a8a2c(++_0x2a6976);}(_0x9d56,0x19e));var _0x69d5=function(_0x4431ed,_0x73588b){_0x4431ed=_0x4431ed-0x0;var _0x5ea3a3=_0x9d56[_0x4431ed];return _0x5ea3a3;};'use strict';var _=require(_0x69d5('0x0'));var moment=require(_0x69d5('0x1'));var util=require(_0x69d5('0x2'));var config=require(_0x69d5('0x3'));var ami=require('../ami');var RpcVoiceAgentReport=require(_0x69d5('0x4'));var RpcVoiceCallReport=require(_0x69d5('0x5'));var RpcVoiceDialReport=require('../rpc/voiceDialReport');var RpcMemberReport=require(_0x69d5('0x6'));var RpcVoiceQueueReport=require(_0x69d5('0x7'));var RpcVoiceRecording=require(_0x69d5('0x8'));var RpcVoiceTransferReport=require(_0x69d5('0x9'));var VoiceQueueReport=require(_0x69d5('0xa'));var VoiceCallReport=require(_0x69d5('0xb'));var VoiceAgentReport=require('./voiceAgentReport');var VoiceDialReport=require(_0x69d5('0xc'));var UserReport=require('./userReport');function Report(_0x447eff){this[_0x69d5('0xd')]=_0x447eff;this[_0x69d5('0xe')]=_0x447eff[_0x69d5('0xe')];this[_0x69d5('0xf')]=_0x447eff[_0x69d5('0xf')];}Report[_0x69d5('0x10')][_0x69d5('0x11')]=function(_0x1f9fb3){var _0x341175=new VoiceQueueReport(this[_0x69d5('0xd')]);var _0x5e71f0=new VoiceAgentReport(this[_0x69d5('0xd')]);var _0x454d1c=new VoiceDialReport(this[_0x69d5('0xd')]);var _0x177cc8=new VoiceCallReport(this[_0x69d5('0xd')]);var _0x1dc08f=new UserReport(this[_0x69d5('0xd')]);if(config[_0x69d5('0x12')]&&config[_0x69d5('0x12')]['disabled']){ami['on'](_0x69d5('0x13'),this[_0x69d5('0x14')][_0x69d5('0x15')](this));ami['on'](_0x69d5('0x16'),this['voiceCallReport'][_0x69d5('0x15')](this));ami['on'](_0x69d5('0x17'),this['voiceAgentReport'][_0x69d5('0x15')](this));ami['on'](_0x69d5('0x18'),this['voiceDialReport']['bind'](this));ami['on'](_0x69d5('0x19'),this[_0x69d5('0x1a')][_0x69d5('0x15')](this));ami['on'](_0x69d5('0x1b'),this[_0x69d5('0x1c')][_0x69d5('0x15')](this));}};Report[_0x69d5('0x10')][_0x69d5('0x1d')]=function(_0x50ca4a){var _0x4b4bbc;_0x4b4bbc=_[_0x69d5('0x1e')](this['agents'],function(_0x89bd08){return _0x89bd08['accountcode']==_0x50ca4a||_0x89bd08[_0x69d5('0x1f')]==_0x50ca4a;});if(_[_0x69d5('0x20')](_0x4b4bbc)){var _0x12a7cb=_[_0x69d5('0x1e')](this[_0x69d5('0xf')],function(_0x8b2d0b){return _0x8b2d0b['accountcode']==_0x50ca4a||_0x8b2d0b[_0x69d5('0x1f')]==_0x50ca4a;});if(_0x12a7cb){_0x4b4bbc=_['find'](this[_0x69d5('0xe')],function(_0x26c688){return _0x26c688[_0x69d5('0x21')]==util[_0x69d5('0x22')](_0x69d5('0x23'),_0x12a7cb[_0x69d5('0x1f')]);});}}return _0x4b4bbc;};Report['prototype'][_0x69d5('0x14')]=function(_0x6ca8a9){for(var _0x124992=0x0;_0x124992<_0x6ca8a9['length'];_0x124992+=0x1){var _0x36ebbb=this[_0x69d5('0x1d')](_0x6ca8a9[_0x124992]['connectedlinenum']);if(_0x36ebbb){_0x6ca8a9[_0x124992]['accountcode']=_0x36ebbb['accountcode'];_0x6ca8a9[_0x124992][_0x69d5('0x24')]=!![];_0x6ca8a9[_0x124992][_0x69d5('0x25')]=_0x36ebbb[_0x69d5('0x1f')];_0x6ca8a9[_0x124992][_0x69d5('0x21')]=_['isNil'](_0x36ebbb[_0x69d5('0x21')])?util[_0x69d5('0x22')](_0x69d5('0x23'),_0x36ebbb[_0x69d5('0x1f')]):_0x36ebbb[_0x69d5('0x21')];if(_0x6ca8a9[_0x124992]['queuecallercomplete']){_0x6ca8a9[_0x124992][_0x69d5('0x26')]=moment()[_0x69d5('0x22')](_0x69d5('0x27'));}if(_0x6ca8a9[_0x124992][_0x69d5('0x28')]){_0x6ca8a9[_0x124992][_0x69d5('0x29')]=moment()[_0x69d5('0x22')](_0x69d5('0x27'));}RpcMemberReport[_0x69d5('0x14')](_0x6ca8a9[_0x124992]);}RpcVoiceQueueReport[_0x69d5('0x2a')](_0x6ca8a9[_0x124992]);}};function extractCalleridNumber(_0x2c39e9){var _0x474d59=_0x2c39e9[_0x69d5('0x2b')](/<(.*?)>/);return _0x474d59?_0x474d59[0x1]:_0x2c39e9;}Report[_0x69d5('0x10')][_0x69d5('0x2c')]=function(_0x3ab0d8){for(var _0x5920fa=0x0;_0x5920fa<Object[_0x69d5('0x2d')](this['agents'])[_0x69d5('0x2e')];_0x5920fa++){var _0x4ada9a=Object['keys'](this[_0x69d5('0xe')])[_0x5920fa];var _0x3ddf3e=this[_0x69d5('0xe')][_0x4ada9a];if(_0x3ddf3e[_0x69d5('0x2f')]===Number(_0x3ab0d8))return _0x3ddf3e;}return null;};Report[_0x69d5('0x10')][_0x69d5('0x30')]=function(_0x491899){var _0x59c14f=_0x491899[_0x69d5('0x31')][_0x69d5('0x32')]('-')[0x0];var _0x3c3bfa=this[_0x69d5('0xe')][_0x59c14f];if(!_0x3c3bfa)_0x3c3bfa=this[_0x69d5('0x2c')](_0x491899[_0x69d5('0x33')]);return!_0x3c3bfa?_0x69d5('0x34'):_0x69d5('0x35');};Report[_0x69d5('0x10')][_0x69d5('0x36')]=function(_0x5c1b91){_0x5c1b91[_0x69d5('0x37')]=_0x5c1b91[_0x69d5('0x37')]||_0x5c1b91[_0x69d5('0x38')];if(_0x5c1b91[_0x69d5('0x39')]==_0x69d5('0x3a')){_0x5c1b91[_0x69d5('0x3b')]=_0x69d5('0x3c');_0x5c1b91[_0x69d5('0x3d')]=_0x5c1b91[_0x69d5('0x3c')];if(_0x5c1b91[_0x69d5('0x3e')]==_0x69d5('0x3f')){_0x5c1b91[_0x69d5('0x2f')]='';_0x5c1b91[_0x69d5('0x37')]=extractCalleridNumber(_0x5c1b91[_0x69d5('0x40')]);}else if(_0x5c1b91[_0x69d5('0x3e')]==_0x69d5('0x41')){if(_0x5c1b91['destination']==_0x69d5('0x42')){_0x5c1b91[_0x69d5('0x37')]=extractCalleridNumber(_0x5c1b91[_0x69d5('0x43')]);_0x5c1b91[_0x69d5('0x33')]=_0x5c1b91[_0x69d5('0x44')];_0x5c1b91['destinationchannel']=[_0x5c1b91[_0x69d5('0x31')],_0x5c1b91[_0x69d5('0x31')]=_0x5c1b91[_0x69d5('0x45')]][0x0];_0x5c1b91['callerid']=_0x5c1b91[_0x69d5('0x43')];}else{_0x5c1b91[_0x69d5('0x37')]=_0x5c1b91[_0x69d5('0x33')];_0x5c1b91[_0x69d5('0x33')]=_0x5c1b91[_0x69d5('0x44')];if(_0x5c1b91[_0x69d5('0x46')]==_0x69d5('0x47')){_0x5c1b91['accountcode']=_0x5c1b91[_0x69d5('0x48')];}else{_0x5c1b91[_0x69d5('0x2f')]='';}}}}else{_0x5c1b91[_0x69d5('0x40')]=util[_0x69d5('0x22')](_0x69d5('0x49'),_0x5c1b91[_0x69d5('0x4a')],_0x5c1b91[_0x69d5('0x33')]);}if(RpcVoiceTransferReport[_0x69d5('0x4b')][_0x5c1b91[_0x69d5('0x4c')]]){var _0x15d29d=RpcVoiceTransferReport[_0x69d5('0x4b')][_0x5c1b91[_0x69d5('0x4c')]];_0x15d29d['transfereelinkedid']=_0x5c1b91['uniqueid'];RpcVoiceTransferReport['blindTransfer'](_0x15d29d);delete RpcVoiceTransferReport[_0x69d5('0x4b')][_0x5c1b91[_0x69d5('0x4c')]];}if(_[_0x69d5('0x20')](_0x5c1b91[_0x69d5('0x39')])){_0x5c1b91[_0x69d5('0x39')]=this['getCallType'](_0x5c1b91);}if(_[_0x69d5('0x20')](_0x5c1b91[_0x69d5('0x4d')])){var _0x1dbccf=_0x5c1b91[_0x69d5('0x31')][_0x69d5('0x32')]('-')[0x0];var _0x17b21f=this[_0x69d5('0xe')][_0x1dbccf];if(!_0x17b21f)_0x17b21f=this['getAgentByInternal'](_0x5c1b91[_0x69d5('0x2f')]);if(_0x17b21f){_0x5c1b91['UserId']=_0x17b21f['id'];_0x5c1b91[_0x69d5('0x4e')]=_0x17b21f[_0x69d5('0x1f')];}}RpcVoiceCallReport[_0x69d5('0x2a')](_0x5c1b91);if(_0x5c1b91['monitor']){for(var _0x4e1954=0x0;_0x4e1954<_0x5c1b91['monitors']['length'];_0x4e1954+=0x1){_0x5c1b91[_0x69d5('0x4f')]=_0x5c1b91[_0x69d5('0x50')][_0x4e1954][_0x69d5('0x51')];_0x5c1b91[_0x69d5('0x52')]=_0x5c1b91[_0x69d5('0x50')][_0x4e1954][_0x69d5('0x52')];if(_0x5c1b91[_0x69d5('0x38')]==_0x69d5('0x42')){_0x5c1b91[_0x69d5('0x33')]=_0x5c1b91[_0x69d5('0x48')];_0x5c1b91['calleridname']=_0x5c1b91['connectedlinename'];_0x5c1b91[_0x69d5('0x48')]=_0x5c1b91['accountcode'];_0x5c1b91[_0x69d5('0x53')]=_0x5c1b91[_0x69d5('0x4e')];_0x5c1b91['exten']=_0x5c1b91[_0x69d5('0x44')];}else if(_0x5c1b91[_0x69d5('0x38')]==_0x69d5('0x54')){_0x5c1b91[_0x69d5('0x33')]=_0x5c1b91['destination'];_0x5c1b91[_0x69d5('0x38')]=_0x5c1b91[_0x69d5('0x44')];}RpcVoiceRecording[_0x69d5('0x2a')](_0x5c1b91);}}};Report[_0x69d5('0x10')][_0x69d5('0x55')]=function(_0x2c6fa1){if(_[_0x69d5('0x56')](_0x2c6fa1)){_0x2c6fa1[_0x69d5('0x57')](function(_0xa9440){RpcVoiceAgentReport['create'](_0xa9440);});}else{RpcVoiceAgentReport[_0x69d5('0x2a')](_0x2c6fa1);}};Report['prototype'][_0x69d5('0x58')]=function(_0x4317f6){RpcVoiceDialReport['create'](_0x4317f6);var _0x3aee0b;var _0x4fd268;var _0x3e988c=_0x4317f6[_0x69d5('0x31')];if(_[_0x69d5('0x59')](_0x3e988c,_0x69d5('0x5a'))){_0x4fd268=_0x3e988c[_0x69d5('0x5b')](_0x3e988c[_0x69d5('0x5c')]('/')+0x1,_0x3e988c['indexOf']('@'));_0x3aee0b=_[_0x69d5('0x1e')](this[_0x69d5('0xe')],function(_0x12d8b4){return _0x12d8b4[_0x69d5('0x5d')]==_0x4fd268||_0x12d8b4['phone']==_0x4fd268||_0x12d8b4[_0x69d5('0x2f')]==_0x4fd268;});}else{_0x4fd268=_0x3e988c[_0x69d5('0x5b')](_0x3e988c[_0x69d5('0x5c')]('/')+0x1,_0x3e988c['lastIndexOf']('-'));_0x3aee0b=this[_0x69d5('0x1d')](_0x4fd268);}if(_0x3aee0b){_0x4317f6[_0x69d5('0x21')]=_['isNil'](_0x3aee0b['interface'])?util['format']('SIP/%s',_0x3aee0b[_0x69d5('0x1f')]):_0x3aee0b[_0x69d5('0x21')];_0x4317f6['membername']=_0x3aee0b['name'];_0x4317f6[_0x69d5('0x2f')]=_0x3aee0b['accountcode'];RpcMemberReport['voiceDialReport'](_0x4317f6);}};Report[_0x69d5('0x10')]['blindTransfer']=function(_0x1b815c){RpcVoiceTransferReport[_0x69d5('0x4b')][_0x1b815c[_0x69d5('0x5e')]]=_0x1b815c;};Report['prototype'][_0x69d5('0x1c')]=function(_0x28ddec){RpcVoiceTransferReport[_0x69d5('0x1c')](_0x28ddec);};module[_0x69d5('0x5f')]=Report;
\ No newline at end of file
index 6dd60ae..c6e985d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5bd2=['debug','[userReport][devicestatechange]','agents','local','toLowerCase','inuse','stateTime','toNumber','updateStatusRealtime','[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:','telephone:%s','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','trunk:%s','trunk:save','indexOf','mobile','phone','accountcode','[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s','address','[userReport][peerstatus]','peer','registered','status','[userReport][peerstatus]\x20sending\x20trunk:save\x20event:','exports','util','ioredis','bluebird','../../../config/environment','../../../config/logger','redis','defaults','socket.io-emitter','trunks','telephones','registryentry','syncRegistry','bind','devicestatechange','syncDeviceState','peerstatus','syncPeerStatus','syncRealtimeShow','resolve','actionSipShowRegistry','catch','[userReport][sipshowregistry]','inspect','then','error','[userReport][devicestatelist]','actionSipPeerStatus','prototype','isUndefined','emit','isNotNull','info','[userReport][registry]\x20registry:%s\x20state:%s','state','find','username','stateRegistry','omit','event','actionid','format','name','[userReport][registry]','[userReport][devicestatechange]\x20device:%s\x20state:%s','device'];(function(_0x419b8f,_0x3f1172){var _0x2f277c=function(_0x5674ce){while(--_0x5674ce){_0x419b8f['push'](_0x419b8f['shift']());}};_0x2f277c(++_0x3f1172);}(_0x5bd2,0xa8));var _0x25bd=function(_0x1ad304,_0x3f121a){_0x1ad304=_0x1ad304-0x0;var _0x47547f=_0x5bd2[_0x1ad304];return _0x47547f;};'use strict';var _=require('lodash');var moment=require('moment');var util=require(_0x25bd('0x0'));var Redis=require(_0x25bd('0x1'));var BPromise=require(_0x25bd('0x2'));var config=require(_0x25bd('0x3'));var logger=require(_0x25bd('0x4'))('ami');var ami=require('../ami');config[_0x25bd('0x5')]=_[_0x25bd('0x6')](config[_0x25bd('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x25bd('0x7'))(new Redis(config[_0x25bd('0x5')]));function UserReport(_0x22f6b0){this[_0x25bd('0x8')]=_0x22f6b0['trunks'];this['agents']=_0x22f6b0['agents'];this[_0x25bd('0x9')]=_0x22f6b0[_0x25bd('0x9')];ami['on'](_0x25bd('0xa'),this[_0x25bd('0xb')][_0x25bd('0xc')](this));ami['on']('registry',this['syncRegistry'][_0x25bd('0xc')](this));ami['on'](_0x25bd('0xd'),this[_0x25bd('0xe')][_0x25bd('0xc')](this));ami['on'](_0x25bd('0xf'),this[_0x25bd('0x10')][_0x25bd('0xc')](this));return this[_0x25bd('0x11')]();}function showSipRegistrations(){Promise[_0x25bd('0x12')]()['then'](ami[_0x25bd('0x13')]())[_0x25bd('0x14')](function(_0x1e8d59){logger['error'](_0x25bd('0x15'),util[_0x25bd('0x16')](_0x1e8d59,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x25bd('0x12')]()[_0x25bd('0x17')](ami['actionDeviceStateList']())[_0x25bd('0x14')](function(_0x3aa5f8){logger[_0x25bd('0x18')](_0x25bd('0x19'),util[_0x25bd('0x16')](_0x3aa5f8,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0x25bd('0x17')](ami[_0x25bd('0x1a')]())[_0x25bd('0x14')](function(_0x53bb0f){logger['error']('[userReport][sippeerstatus]',util[_0x25bd('0x16')](_0x53bb0f,{'showHidden':![],'depth':null}));});}UserReport['prototype']['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0x25bd('0x12')]()[_0x25bd('0x17')](showSipRegistrations())[_0x25bd('0x17')](listDeviceStates())[_0x25bd('0x17')](showPeersStatus());},0x32c8);};UserReport[_0x25bd('0x1b')]['isNotNull']=function(_0x144f43){return _0x144f43!==null&&!_[_0x25bd('0x1c')](_0x144f43);};UserReport[_0x25bd('0x1b')][_0x25bd('0x1d')]=function(_0x357e5a,_0x521fc4,_0xb36eb9){io['to'](_0x357e5a)[_0x25bd('0x1d')](_0x521fc4,_0xb36eb9);};UserReport[_0x25bd('0x1b')][_0x25bd('0xb')]=function(_0x2bf8c2){try{if(this[_0x25bd('0x1e')](_0x2bf8c2)){logger[_0x25bd('0x1f')](_0x25bd('0x20'),_0x2bf8c2['username'],_0x2bf8c2[_0x25bd('0x21')]);logger['debug']('[userReport][registry]',util[_0x25bd('0x16')](_0x2bf8c2,{'showHidden':![],'depth':null}));var _0x5bcf60=_[_0x25bd('0x22')](this[_0x25bd('0x8')],{'defaultuser':_0x2bf8c2[_0x25bd('0x23')]});if(_0x5bcf60){_0x2bf8c2[_0x25bd('0x24')]=_0x2bf8c2[_0x25bd('0x21')];_['merge'](_0x5bcf60,_[_0x25bd('0x25')](_0x2bf8c2,[_0x25bd('0x26'),_0x25bd('0x27'),_0x25bd('0x23'),_0x25bd('0x21')]));logger['debug']('[userReport][registry]\x20sending\x20trunk:save\x20event:',util[_0x25bd('0x16')](_0x5bcf60,{'showHidden':![],'depth':null}));this[_0x25bd('0x1d')](util[_0x25bd('0x28')]('trunk:%s',_0x5bcf60[_0x25bd('0x29')]),'trunk:save',_0x5bcf60);}}}catch(_0x5e0530){logger[_0x25bd('0x18')](_0x25bd('0x2a'),util[_0x25bd('0x16')](_0x5e0530,{'showHidden':![],'depth':null}));}};UserReport[_0x25bd('0x1b')][_0x25bd('0xe')]=function(_0x40f08d){try{if(this[_0x25bd('0x1e')](_0x40f08d)){logger[_0x25bd('0x1f')](_0x25bd('0x2b'),_0x40f08d[_0x25bd('0x2c')],_0x40f08d[_0x25bd('0x21')]);logger[_0x25bd('0x2d')](_0x25bd('0x2e'),util['inspect'](_0x40f08d,{'showHidden':![],'depth':null}));if(this[_0x25bd('0x2f')][_0x40f08d['device']]){if(!this[_0x25bd('0x2f')][_0x40f08d[_0x25bd('0x2c')]][_0x25bd('0x30')]||_0x40f08d[_0x25bd('0x21')][_0x25bd('0x31')]()==_0x25bd('0x32')){this[_0x25bd('0x2f')][_0x40f08d['device']][_0x25bd('0x30')]=![];if(this[_0x25bd('0x2f')][_0x40f08d[_0x25bd('0x2c')]][_0x25bd('0x21')]!==_0x40f08d[_0x25bd('0x21')]['toLowerCase']()){this['agents'][_0x40f08d[_0x25bd('0x2c')]][_0x25bd('0x33')]=_[_0x25bd('0x34')](moment()['format']('x'));}this[_0x25bd('0x2f')][_0x40f08d[_0x25bd('0x2c')]]['state']=_0x40f08d[_0x25bd('0x21')][_0x25bd('0x31')]();this[_0x25bd('0x2f')][_0x40f08d[_0x25bd('0x2c')]][_0x25bd('0x35')](_0x40f08d);}}else if(this[_0x25bd('0x9')][_0x40f08d[_0x25bd('0x2c')]]){if(this['telephones'][_0x40f08d[_0x25bd('0x2c')]][_0x25bd('0x21')]!==_0x40f08d['state'][_0x25bd('0x31')]()){this[_0x25bd('0x9')][_0x40f08d[_0x25bd('0x2c')]]['stateTime']=_[_0x25bd('0x34')](moment()['format']('x'));}this[_0x25bd('0x9')][_0x40f08d[_0x25bd('0x2c')]]['state']=_0x40f08d['state'][_0x25bd('0x31')]();logger[_0x25bd('0x2d')](_0x25bd('0x36'),util[_0x25bd('0x16')](this[_0x25bd('0x9')][_0x40f08d[_0x25bd('0x2c')]],{'showHidden':![],'depth':null}));this[_0x25bd('0x1d')](util[_0x25bd('0x28')](_0x25bd('0x37'),this[_0x25bd('0x9')][_0x40f08d[_0x25bd('0x2c')]][_0x25bd('0x29')]),'telephone:save',this['telephones'][_0x40f08d[_0x25bd('0x2c')]]);}else if(this['trunks'][_0x40f08d[_0x25bd('0x2c')]]){if(this[_0x25bd('0x8')][_0x40f08d[_0x25bd('0x2c')]][_0x25bd('0x21')]!==_0x40f08d[_0x25bd('0x21')][_0x25bd('0x31')]()){this[_0x25bd('0x8')][_0x40f08d[_0x25bd('0x2c')]][_0x25bd('0x33')]=_[_0x25bd('0x34')](moment()[_0x25bd('0x28')]('x'));}this['trunks'][_0x40f08d['device']][_0x25bd('0x21')]=_0x40f08d[_0x25bd('0x21')][_0x25bd('0x31')]();logger['debug'](_0x25bd('0x38'),util[_0x25bd('0x16')](this[_0x25bd('0x8')][_0x40f08d[_0x25bd('0x2c')]],{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x25bd('0x39'),this[_0x25bd('0x8')][_0x40f08d[_0x25bd('0x2c')]][_0x25bd('0x29')]),_0x25bd('0x3a'),this[_0x25bd('0x8')][_0x40f08d[_0x25bd('0x2c')]]);}else if(_['startsWith'](_0x40f08d['device'],'Local')){var _0xbfe389=_0x40f08d[_0x25bd('0x2c')];var _0x30499b=_0xbfe389['substring'](_0xbfe389[_0x25bd('0x3b')]('/')+0x1,_0xbfe389['indexOf']('@'));var _0x56db48=_[_0x25bd('0x22')](this['agents'],function(_0x174132){return _0x174132[_0x25bd('0x3c')]==_0x30499b||_0x174132[_0x25bd('0x3d')]==_0x30499b||_0x174132[_0x25bd('0x3e')]==_0x30499b;});if(_0x56db48){if(_0x56db48[_0x25bd('0x21')]!==_0x40f08d[_0x25bd('0x21')][_0x25bd('0x31')]()){_0x56db48[_0x25bd('0x33')]=_[_0x25bd('0x34')](moment()[_0x25bd('0x28')]('x'));}_0x56db48[_0x25bd('0x21')]=_0x40f08d['state'][_0x25bd('0x31')]();_0x56db48[_0x25bd('0x30')]=!![];_0x56db48['updateStatusRealtime'](_0x40f08d);}}}}catch(_0x41c9e3){logger[_0x25bd('0x18')](_0x25bd('0x2e'),util[_0x25bd('0x16')](_0x41c9e3,{'showHidden':![],'depth':null}));}};UserReport[_0x25bd('0x1b')][_0x25bd('0x10')]=function(_0x3f0da8){try{if(this['isNotNull'](_0x3f0da8)&&this[_0x25bd('0x1e')](_0x3f0da8[_0x25bd('0xf')])){logger[_0x25bd('0x1f')](_0x25bd('0x3f'),_0x3f0da8['peer'],_0x3f0da8[_0x25bd('0x40')],_0x3f0da8[_0x25bd('0xf')]);logger[_0x25bd('0x2d')](_0x25bd('0x41'),util[_0x25bd('0x16')](_0x3f0da8,{'showHidden':![],'depth':null}));if(this[_0x25bd('0x2f')][_0x3f0da8['peer']]){if(!this['agents'][_0x3f0da8[_0x25bd('0x42')]][_0x25bd('0x30')]||_0x3f0da8[_0x25bd('0xf')][_0x25bd('0x31')]()==_0x25bd('0x43')){this[_0x25bd('0x2f')][_0x3f0da8[_0x25bd('0x42')]][_0x25bd('0x30')]=![];this[_0x25bd('0x2f')][_0x3f0da8[_0x25bd('0x42')]]['status']=_0x3f0da8[_0x25bd('0xf')]['toLowerCase']();this[_0x25bd('0x2f')][_0x3f0da8[_0x25bd('0x42')]]['address']=_0x3f0da8[_0x25bd('0x40')];this[_0x25bd('0x2f')][_0x3f0da8['peer']][_0x25bd('0x35')](_0x3f0da8);}}else if(this['telephones'][_0x3f0da8[_0x25bd('0x42')]]){this[_0x25bd('0x9')][_0x3f0da8[_0x25bd('0x42')]][_0x25bd('0x44')]=_0x3f0da8[_0x25bd('0xf')]['toLowerCase']();this[_0x25bd('0x9')][_0x3f0da8[_0x25bd('0x42')]][_0x25bd('0x40')]=_0x3f0da8[_0x25bd('0x40')];logger[_0x25bd('0x2d')]('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0x25bd('0x16')](this[_0x25bd('0x9')][_0x3f0da8[_0x25bd('0x42')]],{'showHidden':![],'depth':null}));this[_0x25bd('0x1d')](util[_0x25bd('0x28')]('telephone:%s',this[_0x25bd('0x9')][_0x3f0da8[_0x25bd('0x42')]][_0x25bd('0x29')]),'telephone:save',this['telephones'][_0x3f0da8[_0x25bd('0x42')]]);}else if(this['trunks'][_0x3f0da8['peer']]){this['trunks'][_0x3f0da8[_0x25bd('0x42')]][_0x25bd('0x44')]=_0x3f0da8['peerstatus'][_0x25bd('0x31')]();this['trunks'][_0x3f0da8[_0x25bd('0x42')]][_0x25bd('0x40')]=_0x3f0da8['address'];logger['debug'](_0x25bd('0x45'),util['inspect'](this[_0x25bd('0x8')][_0x3f0da8['peer']],{'showHidden':![],'depth':null}));this[_0x25bd('0x1d')](util[_0x25bd('0x28')](_0x25bd('0x39'),this['trunks'][_0x3f0da8[_0x25bd('0x42')]]['name']),_0x25bd('0x3a'),this[_0x25bd('0x8')][_0x3f0da8[_0x25bd('0x42')]]);}}}catch(_0x59e3db){logger[_0x25bd('0x18')](_0x25bd('0x41'),util[_0x25bd('0x16')](_0x59e3db,{'showHidden':![],'depth':null}));}};module[_0x25bd('0x46')]=UserReport;
\ No newline at end of file
+var _0xc8e8=['bind','registry','devicestatechange','syncDeviceState','syncPeerStatus','syncRealtimeShow','resolve','then','actionSipShowRegistry','catch','error','[userReport][sipshowregistry]','inspect','actionDeviceStateList','[userReport][devicestatelist]','actionSipPeerStatus','[userReport][sippeerstatus]','prototype','isNotNull','emit','info','[userReport][registry]\x20registry:%s\x20state:%s','username','state','debug','[userReport][registry]','find','stateRegistry','merge','omit','event','actionid','[userReport][registry]\x20sending\x20trunk:save\x20event:','format','trunk:%s','name','trunk:save','[userReport][devicestatechange]\x20device:%s\x20state:%s','device','[userReport][devicestatechange]','toLowerCase','inuse','local','updateStatusRealtime','stateTime','telephone:%s','telephone:save','[userReport][devicestatechange]\x20sending\x20trunk:save\x20event:','Local','substring','indexOf','mobile','phone','accountcode','toNumber','peerstatus','address','peer','registered','status','[userReport][peerstatus]','moment','util','ioredis','bluebird','../../../config/environment','../../../config/logger','ami','../ami','redis','defaults','localhost','socket.io-emitter','trunks','agents','telephones','registryentry','syncRegistry'];(function(_0x1ed2c6,_0x2db6b8){var _0x588bdc=function(_0x2687d7){while(--_0x2687d7){_0x1ed2c6['push'](_0x1ed2c6['shift']());}};_0x588bdc(++_0x2db6b8);}(_0xc8e8,0x1c3));var _0x8c8e=function(_0x5c5c52,_0x36d085){_0x5c5c52=_0x5c5c52-0x0;var _0x4229ff=_0xc8e8[_0x5c5c52];return _0x4229ff;};'use strict';var _=require('lodash');var moment=require(_0x8c8e('0x0'));var util=require(_0x8c8e('0x1'));var Redis=require(_0x8c8e('0x2'));var BPromise=require(_0x8c8e('0x3'));var config=require(_0x8c8e('0x4'));var logger=require(_0x8c8e('0x5'))(_0x8c8e('0x6'));var ami=require(_0x8c8e('0x7'));config[_0x8c8e('0x8')]=_[_0x8c8e('0x9')](config[_0x8c8e('0x8')],{'host':_0x8c8e('0xa'),'port':0x18eb});var io=require(_0x8c8e('0xb'))(new Redis(config['redis']));function UserReport(_0x1740f2){this[_0x8c8e('0xc')]=_0x1740f2[_0x8c8e('0xc')];this['agents']=_0x1740f2[_0x8c8e('0xd')];this[_0x8c8e('0xe')]=_0x1740f2[_0x8c8e('0xe')];ami['on'](_0x8c8e('0xf'),this[_0x8c8e('0x10')][_0x8c8e('0x11')](this));ami['on'](_0x8c8e('0x12'),this[_0x8c8e('0x10')]['bind'](this));ami['on'](_0x8c8e('0x13'),this[_0x8c8e('0x14')][_0x8c8e('0x11')](this));ami['on']('peerstatus',this[_0x8c8e('0x15')]['bind'](this));return this[_0x8c8e('0x16')]();}function showSipRegistrations(){Promise[_0x8c8e('0x17')]()[_0x8c8e('0x18')](ami[_0x8c8e('0x19')]())[_0x8c8e('0x1a')](function(_0x32458a){logger[_0x8c8e('0x1b')](_0x8c8e('0x1c'),util[_0x8c8e('0x1d')](_0x32458a,{'showHidden':![],'depth':null}));});}function listDeviceStates(){Promise[_0x8c8e('0x17')]()['then'](ami[_0x8c8e('0x1e')]())[_0x8c8e('0x1a')](function(_0x5396bc){logger[_0x8c8e('0x1b')](_0x8c8e('0x1f'),util[_0x8c8e('0x1d')](_0x5396bc,{'showHidden':![],'depth':null}));});}function showPeersStatus(){Promise['resolve']()[_0x8c8e('0x18')](ami[_0x8c8e('0x20')]())['catch'](function(_0x24f5ce){logger[_0x8c8e('0x1b')](_0x8c8e('0x21'),util[_0x8c8e('0x1d')](_0x24f5ce,{'showHidden':![],'depth':null}));});}UserReport[_0x8c8e('0x22')]['syncRealtimeShow']=function(){setInterval(function(){BPromise[_0x8c8e('0x17')]()[_0x8c8e('0x18')](showSipRegistrations())[_0x8c8e('0x18')](listDeviceStates())['then'](showPeersStatus());},0x32c8);};UserReport['prototype'][_0x8c8e('0x23')]=function(_0x2fad4d){return _0x2fad4d!==null&&!_['isUndefined'](_0x2fad4d);};UserReport['prototype'][_0x8c8e('0x24')]=function(_0x4b62cf,_0x5a5aef,_0x5d1107){io['to'](_0x4b62cf)['emit'](_0x5a5aef,_0x5d1107);};UserReport[_0x8c8e('0x22')]['syncRegistry']=function(_0x4d2708){try{if(this['isNotNull'](_0x4d2708)){logger[_0x8c8e('0x25')](_0x8c8e('0x26'),_0x4d2708[_0x8c8e('0x27')],_0x4d2708[_0x8c8e('0x28')]);logger[_0x8c8e('0x29')](_0x8c8e('0x2a'),util[_0x8c8e('0x1d')](_0x4d2708,{'showHidden':![],'depth':null}));var _0x5964d4=_[_0x8c8e('0x2b')](this[_0x8c8e('0xc')],{'defaultuser':_0x4d2708[_0x8c8e('0x27')]});if(_0x5964d4){_0x4d2708[_0x8c8e('0x2c')]=_0x4d2708[_0x8c8e('0x28')];_[_0x8c8e('0x2d')](_0x5964d4,_[_0x8c8e('0x2e')](_0x4d2708,[_0x8c8e('0x2f'),_0x8c8e('0x30'),_0x8c8e('0x27'),_0x8c8e('0x28')]));logger[_0x8c8e('0x29')](_0x8c8e('0x31'),util['inspect'](_0x5964d4,{'showHidden':![],'depth':null}));this[_0x8c8e('0x24')](util[_0x8c8e('0x32')](_0x8c8e('0x33'),_0x5964d4[_0x8c8e('0x34')]),_0x8c8e('0x35'),_0x5964d4);}}}catch(_0x3f1315){logger['error']('[userReport][registry]',util[_0x8c8e('0x1d')](_0x3f1315,{'showHidden':![],'depth':null}));}};UserReport['prototype'][_0x8c8e('0x14')]=function(_0x2ad912){try{if(this[_0x8c8e('0x23')](_0x2ad912)){logger[_0x8c8e('0x25')](_0x8c8e('0x36'),_0x2ad912[_0x8c8e('0x37')],_0x2ad912[_0x8c8e('0x28')]);logger[_0x8c8e('0x29')](_0x8c8e('0x38'),util[_0x8c8e('0x1d')](_0x2ad912,{'showHidden':![],'depth':null}));if(this[_0x8c8e('0xd')][_0x2ad912[_0x8c8e('0x37')]]){if(!this[_0x8c8e('0xd')][_0x2ad912[_0x8c8e('0x37')]]['local']||_0x2ad912[_0x8c8e('0x28')][_0x8c8e('0x39')]()==_0x8c8e('0x3a')){this[_0x8c8e('0xd')][_0x2ad912['device']][_0x8c8e('0x3b')]=![];if(this['agents'][_0x2ad912[_0x8c8e('0x37')]][_0x8c8e('0x28')]!==_0x2ad912[_0x8c8e('0x28')][_0x8c8e('0x39')]()){this[_0x8c8e('0xd')][_0x2ad912[_0x8c8e('0x37')]]['stateTime']=_['toNumber'](moment()[_0x8c8e('0x32')]('x'));}this[_0x8c8e('0xd')][_0x2ad912['device']][_0x8c8e('0x28')]=_0x2ad912['state']['toLowerCase']();this[_0x8c8e('0xd')][_0x2ad912[_0x8c8e('0x37')]][_0x8c8e('0x3c')](_0x2ad912);}}else if(this[_0x8c8e('0xe')][_0x2ad912['device']]){if(this['telephones'][_0x2ad912['device']][_0x8c8e('0x28')]!==_0x2ad912[_0x8c8e('0x28')][_0x8c8e('0x39')]()){this['telephones'][_0x2ad912[_0x8c8e('0x37')]][_0x8c8e('0x3d')]=_['toNumber'](moment()[_0x8c8e('0x32')]('x'));}this[_0x8c8e('0xe')][_0x2ad912[_0x8c8e('0x37')]][_0x8c8e('0x28')]=_0x2ad912[_0x8c8e('0x28')][_0x8c8e('0x39')]();logger['debug']('[userReport][devicestatechange]\x20sending\x20telephone:save\x20event:',util[_0x8c8e('0x1d')](this[_0x8c8e('0xe')][_0x2ad912[_0x8c8e('0x37')]],{'showHidden':![],'depth':null}));this[_0x8c8e('0x24')](util[_0x8c8e('0x32')](_0x8c8e('0x3e'),this[_0x8c8e('0xe')][_0x2ad912[_0x8c8e('0x37')]][_0x8c8e('0x34')]),_0x8c8e('0x3f'),this[_0x8c8e('0xe')][_0x2ad912[_0x8c8e('0x37')]]);}else if(this[_0x8c8e('0xc')][_0x2ad912[_0x8c8e('0x37')]]){if(this[_0x8c8e('0xc')][_0x2ad912['device']][_0x8c8e('0x28')]!==_0x2ad912[_0x8c8e('0x28')][_0x8c8e('0x39')]()){this[_0x8c8e('0xc')][_0x2ad912[_0x8c8e('0x37')]]['stateTime']=_['toNumber'](moment()[_0x8c8e('0x32')]('x'));}this[_0x8c8e('0xc')][_0x2ad912['device']]['state']=_0x2ad912[_0x8c8e('0x28')][_0x8c8e('0x39')]();logger[_0x8c8e('0x29')](_0x8c8e('0x40'),util['inspect'](this['trunks'][_0x2ad912[_0x8c8e('0x37')]],{'showHidden':![],'depth':null}));this[_0x8c8e('0x24')](util['format'](_0x8c8e('0x33'),this[_0x8c8e('0xc')][_0x2ad912[_0x8c8e('0x37')]][_0x8c8e('0x34')]),_0x8c8e('0x35'),this['trunks'][_0x2ad912[_0x8c8e('0x37')]]);}else if(_['startsWith'](_0x2ad912[_0x8c8e('0x37')],_0x8c8e('0x41'))){var _0x12dab6=_0x2ad912['device'];var _0x12d6d2=_0x12dab6[_0x8c8e('0x42')](_0x12dab6[_0x8c8e('0x43')]('/')+0x1,_0x12dab6['indexOf']('@'));var _0x303225=_['find'](this[_0x8c8e('0xd')],function(_0x105c63){return _0x105c63[_0x8c8e('0x44')]==_0x12d6d2||_0x105c63[_0x8c8e('0x45')]==_0x12d6d2||_0x105c63[_0x8c8e('0x46')]==_0x12d6d2;});if(_0x303225){if(_0x303225['state']!==_0x2ad912[_0x8c8e('0x28')][_0x8c8e('0x39')]()){_0x303225['stateTime']=_[_0x8c8e('0x47')](moment()[_0x8c8e('0x32')]('x'));}_0x303225[_0x8c8e('0x28')]=_0x2ad912[_0x8c8e('0x28')][_0x8c8e('0x39')]();_0x303225[_0x8c8e('0x3b')]=!![];_0x303225[_0x8c8e('0x3c')](_0x2ad912);}}}}catch(_0x58eea5){logger[_0x8c8e('0x1b')](_0x8c8e('0x38'),util[_0x8c8e('0x1d')](_0x58eea5,{'showHidden':![],'depth':null}));}};UserReport[_0x8c8e('0x22')][_0x8c8e('0x15')]=function(_0x482175){try{if(this['isNotNull'](_0x482175)&&this[_0x8c8e('0x23')](_0x482175[_0x8c8e('0x48')])){logger[_0x8c8e('0x25')]('[userReport][peerstatus]\x20peer:%s\x20address:%s\x20status:%s',_0x482175['peer'],_0x482175[_0x8c8e('0x49')],_0x482175[_0x8c8e('0x48')]);logger[_0x8c8e('0x29')]('[userReport][peerstatus]',util[_0x8c8e('0x1d')](_0x482175,{'showHidden':![],'depth':null}));if(this['agents'][_0x482175['peer']]){if(!this['agents'][_0x482175[_0x8c8e('0x4a')]][_0x8c8e('0x3b')]||_0x482175[_0x8c8e('0x48')][_0x8c8e('0x39')]()==_0x8c8e('0x4b')){this[_0x8c8e('0xd')][_0x482175[_0x8c8e('0x4a')]][_0x8c8e('0x3b')]=![];this[_0x8c8e('0xd')][_0x482175['peer']][_0x8c8e('0x4c')]=_0x482175['peerstatus'][_0x8c8e('0x39')]();this[_0x8c8e('0xd')][_0x482175[_0x8c8e('0x4a')]][_0x8c8e('0x49')]=_0x482175[_0x8c8e('0x49')];this[_0x8c8e('0xd')][_0x482175[_0x8c8e('0x4a')]][_0x8c8e('0x3c')](_0x482175);}}else if(this[_0x8c8e('0xe')][_0x482175[_0x8c8e('0x4a')]]){this[_0x8c8e('0xe')][_0x482175['peer']][_0x8c8e('0x4c')]=_0x482175[_0x8c8e('0x48')]['toLowerCase']();this[_0x8c8e('0xe')][_0x482175[_0x8c8e('0x4a')]][_0x8c8e('0x49')]=_0x482175[_0x8c8e('0x49')];logger['debug']('[userReport][peerstatus]\x20sending\x20telephone:save\x20event:',util[_0x8c8e('0x1d')](this[_0x8c8e('0xe')][_0x482175[_0x8c8e('0x4a')]],{'showHidden':![],'depth':null}));this[_0x8c8e('0x24')](util[_0x8c8e('0x32')](_0x8c8e('0x3e'),this['telephones'][_0x482175[_0x8c8e('0x4a')]][_0x8c8e('0x34')]),_0x8c8e('0x3f'),this[_0x8c8e('0xe')][_0x482175[_0x8c8e('0x4a')]]);}else if(this['trunks'][_0x482175[_0x8c8e('0x4a')]]){this[_0x8c8e('0xc')][_0x482175[_0x8c8e('0x4a')]][_0x8c8e('0x4c')]=_0x482175[_0x8c8e('0x48')][_0x8c8e('0x39')]();this['trunks'][_0x482175['peer']][_0x8c8e('0x49')]=_0x482175[_0x8c8e('0x49')];logger[_0x8c8e('0x29')]('[userReport][peerstatus]\x20sending\x20trunk:save\x20event:',util[_0x8c8e('0x1d')](this['trunks'][_0x482175[_0x8c8e('0x4a')]],{'showHidden':![],'depth':null}));this['emit'](util[_0x8c8e('0x32')](_0x8c8e('0x33'),this['trunks'][_0x482175[_0x8c8e('0x4a')]]['name']),'trunk:save',this[_0x8c8e('0xc')][_0x482175['peer']]);}}}catch(_0x218df2){logger[_0x8c8e('0x1b')](_0x8c8e('0x4d'),util[_0x8c8e('0x1d')](_0x218df2,{'showHidden':![],'depth':null}));}};module['exports']=UserReport;
\ No newline at end of file
index 71a6ec5..bb249ac 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4062=['[%s][voiceAgentReport][hangup]','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20event:','complete','diff','[%s][voiceAgentReport][blindtransfer]','channel','substring','lastIndexOf','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','[%s][voiceAgentReport][musiconholdstart]','[%s][voiceAgentReport][musiconholdstop]\x20event:','onhold','[%s][voiceAgentReport][musiconholdstop]','exports','lodash','moment','util','ioredis','../../../config/environment','ami','../ami','redis','defaults','localhost','channels','voiceChannels','voiceQueues','agents','variables','agentcalled','syncAgentCalled','bind','syncAgentConnect','agentringnoanswer','syncAgentRingNoAnswer','syncQueueCallerAbandon','agentcomplete','syncAgentComplete','varset','syncVarSet','hangup','syncHangup','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','syncBlindTransfer','prototype','emit','isUndefined','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','destuniqueid','[%s][voiceAgentReport][agentcalled]\x20event:','uniqueid','inspect','format','YYYY-MM-DD\x20HH:mm:ss','called','queue','mandatoryDisposition','voice','merge','event','privilege','custom:agentcalled','interface','calleridnum','debug','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','user:%s','user:called','[%s][voiceAgentReport][agentcalled]','isNotNull','[%s][voiceAgentReport][agentconnect]\x20event:','hasOwnProperty','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','membername','user:agentconnect','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','answered_elsewhere','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','error','[%s][voiceAgentReport][agentconnect]','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','custom:agentringnoanswer','[%s][voiceAgentReport][agentringnoanswer]','[%s][voiceAgentReport][queuecallerabandon]\x20event:','abandoned','custom:agentqueuecallerabandon','[%s][voiceAgentReport][agentcomplete]\x20event:','transfer','agent','talktime','acw','acwTimeout','[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','user:agentcomplete','[%s][voiceAgentReport][agentcomplete]','keys','variable','value','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','agentcompleteAt','[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:','values','custom:voiceAgentReport'];(function(_0x583998,_0x49c395){var _0x39780b=function(_0x260d57){while(--_0x260d57){_0x583998['push'](_0x583998['shift']());}};_0x39780b(++_0x49c395);}(_0x4062,0x1d9));var _0x2406=function(_0x1d7695,_0x516a29){_0x1d7695=_0x1d7695-0x0;var _0x1d8397=_0x4062[_0x1d7695];return _0x1d8397;};'use strict';var _=require(_0x2406('0x0'));var moment=require(_0x2406('0x1'));var util=require(_0x2406('0x2'));var Redis=require(_0x2406('0x3'));var config=require(_0x2406('0x4'));var logger=require('../../../config/logger')(_0x2406('0x5'));var ami=require(_0x2406('0x6'));config[_0x2406('0x7')]=_[_0x2406('0x8')](config[_0x2406('0x7')],{'host':_0x2406('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2406('0x7')]));function VoiceAgentReport(_0x3a079a){this[_0x2406('0xa')]={};this[_0x2406('0xb')]=_0x3a079a['channels'];this['voiceQueues']=_0x3a079a[_0x2406('0xc')];this[_0x2406('0xd')]=_0x3a079a[_0x2406('0xd')];this[_0x2406('0xe')]={};ami['on'](_0x2406('0xf'),this[_0x2406('0x10')][_0x2406('0x11')](this));ami['on']('agentconnect',this[_0x2406('0x12')][_0x2406('0x11')](this));ami['on'](_0x2406('0x13'),this[_0x2406('0x14')]['bind'](this));ami['on']('queuecallerabandon',this[_0x2406('0x15')]['bind'](this));ami['on'](_0x2406('0x16'),this[_0x2406('0x17')]['bind'](this));ami['on'](_0x2406('0x18'),this[_0x2406('0x19')][_0x2406('0x11')](this));ami['on'](_0x2406('0x1a'),this[_0x2406('0x1b')]['bind'](this));ami['on'](_0x2406('0x1c'),this[_0x2406('0x1d')]['bind'](this));ami['on'](_0x2406('0x1e'),this[_0x2406('0x1f')][_0x2406('0x11')](this));ami['on'](_0x2406('0x20'),this[_0x2406('0x21')][_0x2406('0x11')](this));ami['on']('blindtransfer',this[_0x2406('0x22')][_0x2406('0x11')](this));}VoiceAgentReport[_0x2406('0x23')][_0x2406('0x24')]=function(_0xc24b69,_0x562af7,_0x273c18){io['to'](_0xc24b69)['emit'](_0x562af7,_0x273c18);};VoiceAgentReport[_0x2406('0x23')]['isNotNull']=function(_0x1cd5df){return _0x1cd5df!==null&&!_[_0x2406('0x25')](_0x1cd5df);};VoiceAgentReport['prototype'][_0x2406('0x10')]=function(_0x47a51e){try{if(this['isNotNull'](_0x47a51e)){logger[_0x2406('0x26')](_0x2406('0x27'),_0x47a51e['uniqueid'],_0x47a51e['membername'],_0x47a51e[_0x2406('0x28')]);logger['debug'](_0x2406('0x29'),_0x47a51e[_0x2406('0x2a')],util[_0x2406('0x2b')](_0x47a51e,{'showHidden':![],'depth':null}));if(_[_0x2406('0x25')](this['channels'][_0x47a51e['uniqueid']])){this['channels'][_0x47a51e[_0x2406('0x2a')]]={};}if(_['isUndefined'](this[_0x2406('0xa')][_0x47a51e[_0x2406('0x2a')]][_0x47a51e[_0x2406('0x28')]])){this[_0x2406('0xa')][_0x47a51e[_0x2406('0x2a')]][_0x47a51e[_0x2406('0x28')]]={'agentcalledAt':moment()[_0x2406('0x2c')](_0x2406('0x2d')),'lastevent':_0x2406('0x2e'),'mandatoryDisposition':this[_0x2406('0xc')][_0x47a51e['queue']]?this[_0x2406('0xc')][_0x47a51e[_0x2406('0x2f')]][_0x2406('0x30')]||![]:![],'type':this[_0x2406('0xc')][_0x47a51e['queue']]?this[_0x2406('0xc')][_0x47a51e['queue']]['type']||'inbound':'inbound','variables':this[_0x2406('0xe')][_0x47a51e[_0x2406('0x2a')]],'motionChannel':_0x2406('0x31')};}_[_0x2406('0x32')](this[_0x2406('0xa')][_0x47a51e[_0x2406('0x2a')]][_0x47a51e[_0x2406('0x28')]],_['omit'](_0x47a51e,[_0x2406('0x33'),_0x2406('0x34')]));logger['debug']('[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:',_0x47a51e[_0x2406('0x2a')],util[_0x2406('0x2b')](this[_0x2406('0xa')][_0x47a51e[_0x2406('0x2a')]][_0x47a51e[_0x2406('0x28')]],{'showHidden':![],'depth':null}));ami[_0x2406('0x24')](_0x2406('0x35'),this[_0x2406('0xa')][_0x47a51e[_0x2406('0x2a')]][_0x47a51e[_0x2406('0x28')]]);var _0x4c6ba8={'id':this['agents'][_0x47a51e[_0x2406('0x36')]]['id'],'calleridnum':this[_0x2406('0xa')][_0x47a51e['uniqueid']][_0x47a51e['destuniqueid']][_0x2406('0x37')],'queue':this[_0x2406('0xa')][_0x47a51e[_0x2406('0x2a')]][_0x47a51e[_0x2406('0x28')]][_0x2406('0x2f')],'variables':this[_0x2406('0xa')][_0x47a51e[_0x2406('0x2a')]][_0x47a51e[_0x2406('0x28')]][_0x2406('0xe')]};logger[_0x2406('0x38')](_0x2406('0x39'),_0x47a51e[_0x2406('0x2a')],util[_0x2406('0x2b')](_0x4c6ba8,{'showHidden':![],'depth':null}));this['emit'](util[_0x2406('0x2c')](_0x2406('0x3a'),_0x47a51e['membername']),_0x2406('0x3b'),_0x4c6ba8);}}catch(_0x2a894b){logger['error'](_0x2406('0x3c'),_0x47a51e['uniqueid'],util[_0x2406('0x2b')](_0x2a894b,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2406('0x23')][_0x2406('0x12')]=function(_0x3680a5){try{if(this[_0x2406('0x3d')](_0x3680a5)){if(this[_0x2406('0xa')][_0x3680a5[_0x2406('0x2a')]]){logger[_0x2406('0x38')](_0x2406('0x3e'),_0x3680a5[_0x2406('0x2a')],util[_0x2406('0x2b')](_0x3680a5,{'showHidden':![],'depth':null}));for(var _0x145224 in this[_0x2406('0xa')][_0x3680a5[_0x2406('0x2a')]]){if(this['channels'][_0x3680a5[_0x2406('0x2a')]][_0x2406('0x3f')](_0x145224)){if(_0x3680a5[_0x2406('0x28')]===_0x145224){logger[_0x2406('0x26')]('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x3680a5[_0x2406('0x2a')],_0x3680a5['membername'],_0x3680a5['destuniqueid']);this[_0x2406('0xa')][_0x3680a5[_0x2406('0x2a')]][_0x145224][_0x2406('0x40')]=moment()[_0x2406('0x2c')](_0x2406('0x2d'));this[_0x2406('0xa')][_0x3680a5[_0x2406('0x2a')]][_0x145224][_0x2406('0x41')]=_0x3680a5['connectedlinename'];this[_0x2406('0xa')][_0x3680a5['uniqueid']][_0x145224][_0x2406('0x42')]=_0x3680a5['connectedlinenum'];this[_0x2406('0xa')][_0x3680a5[_0x2406('0x2a')]][_0x145224][_0x2406('0x43')]=_0x3680a5[_0x2406('0x43')];this[_0x2406('0xa')][_0x3680a5['uniqueid']][_0x145224]['destchannelstatedesc']=_0x3680a5[_0x2406('0x44')];this[_0x2406('0xa')][_0x3680a5['uniqueid']][_0x145224][_0x2406('0x45')]=_0x3680a5[_0x2406('0x45')];this[_0x2406('0xa')][_0x3680a5[_0x2406('0x2a')]][_0x145224][_0x2406('0x46')]='connect';if(this[_0x2406('0xb')][this['channels'][_0x3680a5[_0x2406('0x2a')]][_0x145224][_0x2406('0x2a')]]){var _0x5c26c8=this[_0x2406('0xb')][this[_0x2406('0xa')][_0x3680a5[_0x2406('0x2a')]][_0x145224]['uniqueid']]['routealias'];this[_0x2406('0xa')][_0x3680a5['uniqueid']][_0x145224]['routealias']=_0x5c26c8;_0x3680a5['routealias']=_0x5c26c8;}_[_0x2406('0x32')](this[_0x2406('0xd')][_0x3680a5['interface']],_['pick'](_0x3680a5,[_0x2406('0x2f'),_0x2406('0x47'),'routealias']));logger[_0x2406('0x38')](_0x2406('0x48'),_0x3680a5[_0x2406('0x2a')],util['inspect'](this[_0x2406('0xa')][_0x3680a5[_0x2406('0x2a')]][_0x3680a5[_0x2406('0x28')]],{'showHidden':![],'depth':null}));ami[_0x2406('0x24')]('custom:agentconnect',this['channels'][_0x3680a5[_0x2406('0x2a')]][_0x3680a5[_0x2406('0x28')]]);logger[_0x2406('0x38')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:',_0x3680a5[_0x2406('0x2a')],util[_0x2406('0x2b')](this[_0x2406('0xa')][_0x3680a5[_0x2406('0x2a')]][_0x3680a5[_0x2406('0x28')]],{'showHidden':![],'depth':null}));this[_0x2406('0x24')](util[_0x2406('0x2c')](_0x2406('0x3a'),_0x3680a5[_0x2406('0x49')]),_0x2406('0x4a'),this[_0x2406('0xa')][_0x3680a5[_0x2406('0x2a')]][_0x3680a5[_0x2406('0x28')]]);}else if(!this[_0x2406('0xa')][_0x3680a5[_0x2406('0x2a')]][_0x145224][_0x2406('0x13')]&&!this[_0x2406('0xa')][_0x3680a5[_0x2406('0x2a')]][_0x145224]['agentcomplete']){logger[_0x2406('0x26')]('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x3680a5[_0x2406('0x2a')],this[_0x2406('0xa')][_0x3680a5[_0x2406('0x2a')]][_0x145224][_0x2406('0x49')],_0x145224);this[_0x2406('0xa')][_0x3680a5[_0x2406('0x2a')]][_0x145224][_0x2406('0x13')]=!![];this['channels'][_0x3680a5['uniqueid']][_0x145224][_0x2406('0x4b')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x2406('0xa')][_0x3680a5[_0x2406('0x2a')]][_0x145224][_0x2406('0x4c')]=_0x3680a5[_0x2406('0x28')];this[_0x2406('0xa')][_0x3680a5[_0x2406('0x2a')]][_0x145224][_0x2406('0x4d')]=_0x3680a5[_0x2406('0x49')];this[_0x2406('0xa')][_0x3680a5[_0x2406('0x2a')]][_0x145224][_0x2406('0x46')]=_0x2406('0x4e');this[_0x2406('0xa')][_0x3680a5[_0x2406('0x2a')]][_0x145224][_0x2406('0x4f')]=_0x2406('0x4e');logger[_0x2406('0x38')](_0x2406('0x50'),_0x3680a5[_0x2406('0x2a')],util['inspect'](this[_0x2406('0xa')][_0x3680a5[_0x2406('0x2a')]][_0x145224],{'showHidden':![],'depth':null}));ami[_0x2406('0x24')](_0x2406('0x51'),this['channels'][_0x3680a5[_0x2406('0x2a')]][_0x145224]);}}}}}}catch(_0x2c9d77){logger[_0x2406('0x52')](_0x2406('0x53'),_0x3680a5[_0x2406('0x2a')],util[_0x2406('0x2b')](_0x2c9d77,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2406('0x23')]['syncAgentRingNoAnswer']=function(_0x5737cc){try{if(this[_0x2406('0x3d')](_0x5737cc)){logger[_0x2406('0x38')]('[%s][voiceAgentReport][agentringnoanswer]\x20event:',_0x5737cc['uniqueid'],util[_0x2406('0x2b')](_0x5737cc,{'showHidden':![],'depth':null}));if(this[_0x2406('0xa')][_0x5737cc[_0x2406('0x2a')]]&&this['channels'][_0x5737cc['uniqueid']][_0x5737cc['destuniqueid']]){logger[_0x2406('0x26')](_0x2406('0x54'),_0x5737cc[_0x2406('0x2a')],_0x5737cc[_0x2406('0x49')],_0x5737cc[_0x2406('0x28')]);this['channels'][_0x5737cc[_0x2406('0x2a')]][_0x5737cc[_0x2406('0x28')]][_0x2406('0x13')]=!![];this['channels'][_0x5737cc['uniqueid']][_0x5737cc[_0x2406('0x28')]][_0x2406('0x4b')]=moment()[_0x2406('0x2c')](_0x2406('0x2d'));this[_0x2406('0xa')][_0x5737cc[_0x2406('0x2a')]][_0x5737cc[_0x2406('0x28')]][_0x2406('0x46')]=_0x2406('0x55');this[_0x2406('0xa')][_0x5737cc['uniqueid']][_0x5737cc[_0x2406('0x28')]]['reason']='rejected';logger['debug'](_0x2406('0x56'),_0x5737cc[_0x2406('0x2a')],util[_0x2406('0x2b')](this[_0x2406('0xa')][_0x5737cc[_0x2406('0x2a')]][_0x5737cc[_0x2406('0x28')]],{'showHidden':![],'depth':null}));ami[_0x2406('0x24')](_0x2406('0x57'),this[_0x2406('0xa')][_0x5737cc[_0x2406('0x2a')]][_0x5737cc[_0x2406('0x28')]]);}}}catch(_0x22547c){logger[_0x2406('0x52')](_0x2406('0x58'),_0x5737cc[_0x2406('0x2a')],util['inspect'](_0x22547c,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2406('0x23')][_0x2406('0x15')]=function(_0x2e32f7){try{if(this[_0x2406('0x3d')](_0x2e32f7)){logger[_0x2406('0x38')](_0x2406('0x59'),_0x2e32f7[_0x2406('0x2a')],util[_0x2406('0x2b')](_0x2e32f7,{'showHidden':![],'depth':null}));if(this[_0x2406('0xa')][_0x2e32f7['uniqueid']]){for(var _0x522b3a in this[_0x2406('0xa')][_0x2e32f7[_0x2406('0x2a')]]){if(this['channels'][_0x2e32f7[_0x2406('0x2a')]][_0x2406('0x3f')](_0x522b3a)&&!this['channels'][_0x2e32f7[_0x2406('0x2a')]][_0x522b3a][_0x2406('0x13')]&&!this[_0x2406('0xa')][_0x2e32f7['uniqueid']][_0x522b3a][_0x2406('0x16')]){logger[_0x2406('0x26')]('[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x2e32f7['uniqueid'],this['channels'][_0x2e32f7[_0x2406('0x2a')]][_0x522b3a]['membername'],_0x522b3a);this[_0x2406('0xa')][_0x2e32f7[_0x2406('0x2a')]][_0x522b3a][_0x2406('0x13')]=!![];this[_0x2406('0xa')][_0x2e32f7[_0x2406('0x2a')]][_0x522b3a][_0x2406('0x4b')]=moment()[_0x2406('0x2c')]('YYYY-MM-DD\x20HH:mm:ss');this[_0x2406('0xa')][_0x2e32f7[_0x2406('0x2a')]][_0x522b3a][_0x2406('0x46')]='abandoned';this[_0x2406('0xa')][_0x2e32f7[_0x2406('0x2a')]][_0x522b3a]['reason']=_0x2406('0x5a');logger[_0x2406('0x38')]('[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:',_0x2e32f7[_0x2406('0x2a')],util[_0x2406('0x2b')](this[_0x2406('0xa')][_0x2e32f7[_0x2406('0x2a')]][_0x522b3a],{'showHidden':![],'depth':null}));ami[_0x2406('0x24')](_0x2406('0x5b'),this[_0x2406('0xa')][_0x2e32f7['uniqueid']][_0x522b3a]);}}}}}catch(_0x3054db){logger[_0x2406('0x52')]('[%s][voiceAgentReport][queuecallerabandon]',_0x2e32f7[_0x2406('0x2a')],util[_0x2406('0x2b')](_0x3054db,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncAgentComplete']=function(_0x523aa7){try{if(this['isNotNull'](_0x523aa7)){logger[_0x2406('0x38')](_0x2406('0x5c'),_0x523aa7[_0x2406('0x2a')],util[_0x2406('0x2b')](_0x523aa7,{'showHidden':![],'depth':null}));if(this['channels'][_0x523aa7[_0x2406('0x2a')]]){for(var _0x3a2a11 in this['channels'][_0x523aa7['uniqueid']]){if(this[_0x2406('0xa')][_0x523aa7[_0x2406('0x2a')]][_0x2406('0x3f')](_0x3a2a11)){if(this['channels'][_0x523aa7[_0x2406('0x2a')]][_0x3a2a11][_0x2406('0x40')]&&!this[_0x2406('0xa')][_0x523aa7[_0x2406('0x2a')]][_0x3a2a11][_0x2406('0x16')]){logger[_0x2406('0x26')]('[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x523aa7[_0x2406('0x2a')],this[_0x2406('0xa')][_0x523aa7[_0x2406('0x2a')]][_0x3a2a11][_0x2406('0x49')],_0x3a2a11);this[_0x2406('0xa')][_0x523aa7[_0x2406('0x2a')]][_0x3a2a11][_0x2406('0x16')]=!![];this[_0x2406('0xa')][_0x523aa7[_0x2406('0x2a')]][_0x3a2a11]['agentcompleteAt']=moment()[_0x2406('0x2c')](_0x2406('0x2d'));this[_0x2406('0xa')][_0x523aa7['uniqueid']][_0x3a2a11][_0x2406('0x46')]='complete';this['channels'][_0x523aa7[_0x2406('0x2a')]][_0x3a2a11][_0x2406('0x4f')]=_0x523aa7[_0x2406('0x4f')]==_0x2406('0x5d')?_0x2406('0x5e'):_0x523aa7[_0x2406('0x4f')];this[_0x2406('0xa')][_0x523aa7['uniqueid']][_0x3a2a11][_0x2406('0x5f')]=_0x523aa7[_0x2406('0x5f')];if(this['voiceQueues'][_0x523aa7[_0x2406('0x2f')]]&&this['voiceQueues'][_0x523aa7[_0x2406('0x2f')]][_0x2406('0x60')]){this['channels'][_0x523aa7['uniqueid']][_0x3a2a11]['acwtime']=this['voiceQueues'][_0x523aa7['queue']][_0x2406('0x61')];this[_0x2406('0xa')][_0x523aa7[_0x2406('0x2a')]][_0x3a2a11]['agentacw']=!![];}this[_0x2406('0xd')][_0x523aa7[_0x2406('0x36')]]=_['omit'](this[_0x2406('0xd')][_0x523aa7[_0x2406('0x36')]],[_0x2406('0x2f'),_0x2406('0x47')]);logger[_0x2406('0x38')](_0x2406('0x62'),_0x523aa7[_0x2406('0x2a')],util[_0x2406('0x2b')](this[_0x2406('0xa')][_0x523aa7[_0x2406('0x2a')]][_0x3a2a11],{'showHidden':![],'depth':null}));ami[_0x2406('0x24')](_0x2406('0x63'),this[_0x2406('0xa')][_0x523aa7['uniqueid']][_0x3a2a11]);logger[_0x2406('0x38')](_0x2406('0x64'),_0x523aa7[_0x2406('0x2a')],util[_0x2406('0x2b')]({'id':this['agents'][_0x523aa7[_0x2406('0x36')]]['id'],'destaccountcode':_0x523aa7[_0x2406('0x65')]},{'showHidden':![],'depth':null}));this['emit'](util[_0x2406('0x2c')](_0x2406('0x3a'),_0x523aa7[_0x2406('0x49')]),_0x2406('0x66'),{'id':this['agents'][_0x523aa7[_0x2406('0x36')]]['id'],'destaccountcode':_0x523aa7[_0x2406('0x65')]});}}}}}}catch(_0x2d9883){logger['error'](_0x2406('0x67'),_0x523aa7[_0x2406('0x2a')],util['inspect'](_0x2d9883,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x2406('0x19')]=function(_0x396d66){try{if(this[_0x2406('0x3d')](_0x396d66)){logger['debug']('[%s][voiceAgentReport][varset]\x20event:',_0x396d66[_0x2406('0x2a')],util[_0x2406('0x2b')](_0x396d66,{'showHidden':![],'depth':null}));this['addVariable'](_0x396d66[_0x2406('0x2a')],_[_0x2406('0x68')](_0x396d66[_0x2406('0x69')])[0x0],_0x396d66[_0x2406('0x6a')]);if(this['channels'][_0x396d66[_0x2406('0x2a')]]){for(var _0x44d5db in this[_0x2406('0xa')][_0x396d66['uniqueid']]){if(this['channels'][_0x396d66[_0x2406('0x2a')]][_0x2406('0x3f')](_0x44d5db)){logger[_0x2406('0x26')]('[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s',_0x396d66[_0x2406('0x2a')],_0x44d5db,_[_0x2406('0x68')](_0x396d66[_0x2406('0x69')])[0x0],_0x396d66[_0x2406('0x6a')]);if(_['isUndefined'](this['channels'][_0x396d66['uniqueid']][_0x44d5db][_0x2406('0xe')])){this['channels'][_0x396d66[_0x2406('0x2a')]][_0x44d5db][_0x2406('0xe')]={};}this['channels'][_0x396d66[_0x2406('0x2a')]][_0x44d5db]['variables']=this[_0x2406('0xe')][_0x396d66['uniqueid']];}}}}}catch(_0x278d22){logger[_0x2406('0x52')]('[%s][voiceAgentReport][varset]',_0x396d66['uniqueid'],util[_0x2406('0x2b')](_0x278d22,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x2406('0x6b')]=function(_0x645852,_0x1d0394,_0x42031d){var _0x5325cd=[_0x2406('0x6c'),_0x2406('0x6d'),_0x2406('0x6e'),'rtpaudioqosjitterbridged',_0x2406('0x6f'),_0x2406('0x70'),'rtpaudioqosrtt',_0x2406('0x71'),_0x2406('0x72'),'sipuri',_0x2406('0x73'),_0x2406('0x74'),_0x2406('0x75'),_0x2406('0x76'),_0x2406('0x77'),_0x2406('0x78'),_0x2406('0x49'),_0x2406('0x79'),_0x2406('0x7a')];if(!_[_0x2406('0x7b')](_0x1d0394)&&!_[_0x2406('0x7c')](_0x5325cd,_0x1d0394)){if(_[_0x2406('0x25')](this[_0x2406('0xe')][_0x645852])){this[_0x2406('0xe')][_0x645852]={};}this[_0x2406('0xe')][_0x645852][_0x1d0394]=_0x42031d;}};VoiceAgentReport['prototype']['syncHangup']=function(_0x80a0d4){try{if(this[_0x2406('0x3d')](_0x80a0d4)){logger[_0x2406('0x38')](_0x2406('0x7d'),_0x80a0d4[_0x2406('0x2a')],util['inspect'](_0x80a0d4,{'showHidden':![],'depth':null}));if(this['channels'][_0x80a0d4[_0x2406('0x2a')]]){for(var _0x20c9e0 in this['channels'][_0x80a0d4[_0x2406('0x2a')]]){if(this['channels'][_0x80a0d4[_0x2406('0x2a')]][_0x2406('0x3f')](_0x20c9e0)){if(this[_0x2406('0xa')][_0x80a0d4[_0x2406('0x2a')]][_0x20c9e0][_0x2406('0x4f')]==_0x2406('0x5d')&&this['channels'][_0x80a0d4['uniqueid']][_0x20c9e0]['agentcomplete']){logger[_0x2406('0x26')](_0x2406('0x7e'),_0x80a0d4['uniqueid'],_0x20c9e0);this['channels'][_0x80a0d4[_0x2406('0x2a')]][_0x20c9e0][_0x2406('0x7f')]=moment()['format'](_0x2406('0x2d'));}}}logger['debug'](_0x2406('0x80'),_0x80a0d4[_0x2406('0x2a')],util[_0x2406('0x2b')](_[_0x2406('0x81')](this[_0x2406('0xa')][_0x80a0d4[_0x2406('0x2a')]]),{'showHidden':![],'depth':null}));ami[_0x2406('0x24')](_0x2406('0x82'),_[_0x2406('0x81')](this[_0x2406('0xa')][_0x80a0d4[_0x2406('0x2a')]]));delete this[_0x2406('0xa')][_0x80a0d4['uniqueid']];}if(this['variables'][_0x80a0d4[_0x2406('0x2a')]]){delete this[_0x2406('0xe')][_0x80a0d4[_0x2406('0x2a')]];}}}catch(_0x15e0b3){logger[_0x2406('0x52')](_0x2406('0x83'),_0x80a0d4[_0x2406('0x2a')],util['inspect'](_0x15e0b3,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2406('0x23')][_0x2406('0x21')]=function(_0x2d9817){try{if(this['isNotNull'](_0x2d9817)){logger[_0x2406('0x38')](_0x2406('0x84'),_0x2d9817['uniqueid'],util[_0x2406('0x2b')](_0x2d9817,{'showHidden':![],'depth':null}));if(this[_0x2406('0xa')][_0x2d9817[_0x2406('0x85')]]){for(var _0x53c0a5 in this[_0x2406('0xa')][_0x2d9817[_0x2406('0x85')]]){if(this[_0x2406('0xa')][_0x2d9817[_0x2406('0x85')]]['hasOwnProperty'](_0x53c0a5)){if(_0x2d9817[_0x2406('0x86')]===_0x53c0a5){logger['info'](_0x2406('0x87'),_0x2d9817[_0x2406('0x2a')],this[_0x2406('0xa')][_0x2d9817[_0x2406('0x85')]][_0x53c0a5][_0x2406('0x49')],_0x53c0a5);var _0x2b59e8=moment();this['channels'][_0x2d9817[_0x2406('0x85')]][_0x53c0a5][_0x2406('0x16')]=!![];this['channels'][_0x2d9817[_0x2406('0x85')]][_0x53c0a5]['agentcompleteAt']=moment()[_0x2406('0x2c')](_0x2406('0x2d'));this[_0x2406('0xa')][_0x2d9817[_0x2406('0x85')]][_0x53c0a5][_0x2406('0x46')]='complete';this[_0x2406('0xa')][_0x2d9817[_0x2406('0x85')]][_0x53c0a5][_0x2406('0x4f')]=_0x2406('0x5d');this[_0x2406('0xa')][_0x2d9817[_0x2406('0x85')]][_0x53c0a5][_0x2406('0x5f')]=_0x2b59e8['diff'](this[_0x2406('0xa')][_0x2d9817[_0x2406('0x85')]][_0x53c0a5][_0x2406('0x40')],_0x2406('0x88'));}}}}if(this[_0x2406('0xa')][_0x2d9817[_0x2406('0x89')]]){var _0x5a35c7=this[_0x2406('0xa')][_0x2d9817[_0x2406('0x89')]];this[_0x2406('0xa')][_0x2d9817[_0x2406('0x89')]]=this['channels'][_0x2d9817['transfereeuniqueid']];this['channels'][_0x2d9817['transfereeuniqueid']]=_0x5a35c7;}}}catch(_0x2d5094){logger[_0x2406('0x52')]('[%s][voiceAgentReport][attendedtransfer]',_0x2d9817[_0x2406('0x2a')],util[_0x2406('0x2b')](_0x2d5094,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2406('0x23')][_0x2406('0x22')]=function(_0x49671e){try{if(this[_0x2406('0x3d')](_0x49671e)){logger[_0x2406('0x38')](_0x2406('0x8a'),_0x49671e['uniqueid'],util[_0x2406('0x2b')](_0x49671e,{'showHidden':![],'depth':null}));if(this['channels'][_0x49671e[_0x2406('0x85')]]){for(var _0x29fb43 in this[_0x2406('0xa')][_0x49671e['transfereeuniqueid']]){if(this[_0x2406('0xa')][_0x49671e[_0x2406('0x85')]]['hasOwnProperty'](_0x29fb43)){if(_0x49671e['transfereruniqueid']===_0x29fb43){logger[_0x2406('0x26')]('[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x49671e['uniqueid'],this['channels'][_0x49671e[_0x2406('0x85')]][_0x29fb43][_0x2406('0x49')],_0x29fb43);var _0x5c582e=moment();this[_0x2406('0xa')][_0x49671e[_0x2406('0x85')]][_0x29fb43][_0x2406('0x16')]=!![];this[_0x2406('0xa')][_0x49671e[_0x2406('0x85')]][_0x29fb43][_0x2406('0x7f')]=_0x5c582e;this[_0x2406('0xa')][_0x49671e[_0x2406('0x85')]][_0x29fb43]['lastevent']=_0x2406('0x8b');this[_0x2406('0xa')][_0x49671e[_0x2406('0x85')]][_0x29fb43]['reason']=_0x2406('0x5d');this['channels'][_0x49671e[_0x2406('0x85')]][_0x29fb43][_0x2406('0x5f')]=_0x5c582e[_0x2406('0x8c')](this['channels'][_0x49671e['transfereeuniqueid']][_0x29fb43]['agentconnectAt'],_0x2406('0x88'));}}}}}}catch(_0x18f205){logger[_0x2406('0x52')](_0x2406('0x8d'),_0x49671e['uniqueid'],util[_0x2406('0x2b')](_0x18f205,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype']['syncMusicOnHoldStart']=function(_0x5acb8b){var _0x2b0f02='';try{if(this[_0x2406('0x3d')](_0x5acb8b)){logger[_0x2406('0x38')]('[%s][voiceAgentReport][musiconholdstart]\x20event:',_0x5acb8b[_0x2406('0x2a')],util[_0x2406('0x2b')](_0x5acb8b,{'showHidden':![],'depth':null}));if(_0x5acb8b[_0x2406('0x8e')]){_0x2b0f02=_0x5acb8b[_0x2406('0x8e')][_0x2406('0x8f')](0x0,_0x5acb8b['channel'][_0x2406('0x90')]('-'));if(this[_0x2406('0xd')][_0x2b0f02]){logger[_0x2406('0x26')](_0x2406('0x91'),_0x5acb8b['uniqueid'],_0x2b0f02);this[_0x2406('0xd')][_0x2b0f02]['onhold']=!![];}}}}catch(_0x1d0e0e){logger[_0x2406('0x52')](_0x2406('0x92'),_0x5acb8b['uniqueid'],util['inspect'](_0x1d0e0e,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2406('0x23')][_0x2406('0x1f')]=function(_0x5ad1c7){var _0x496f10='';try{if(this['isNotNull'](_0x5ad1c7)){logger['debug'](_0x2406('0x93'),_0x5ad1c7[_0x2406('0x2a')],util[_0x2406('0x2b')](_0x5ad1c7,{'showHidden':![],'depth':null}));if(_0x5ad1c7['channel']){_0x496f10=_0x5ad1c7[_0x2406('0x8e')][_0x2406('0x8f')](0x0,_0x5ad1c7[_0x2406('0x8e')]['lastIndexOf']('-'));if(this[_0x2406('0xd')][_0x496f10]){logger[_0x2406('0x26')]('[%s][voiceAgentReport][musiconholdstop]\x20interface:%s',_0x5ad1c7['uniqueid'],_0x496f10);this['agents'][_0x496f10][_0x2406('0x94')]=![];}}}}catch(_0x1a39c5){logger[_0x2406('0x52')](_0x2406('0x95'),_0x5ad1c7[_0x2406('0x2a')],util['inspect'](_0x1a39c5,{'showHidden':![],'depth':null}));}};module[_0x2406('0x96')]=VoiceAgentReport;
\ No newline at end of file
+var _0xa742=['sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberinterface','memberlastcall','memberrealtime','isNil','includes','[%s][voiceAgentReport][hangup]\x20event:','[%s][voiceAgentReport][hangup]\x20destuniqueid:%s','values','[%s][voiceAgentReport][attendedtransfer]\x20event:','transfereeuniqueid','origtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','complete','seconds','secondtransfereruniqueid','[%s][voiceAgentReport][attendedtransfer]','[%s][voiceAgentReport][blindtransfer]\x20event:','transfereruniqueid','[%s][voiceAgentReport][blindtransfer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diff','[%s][voiceAgentReport][blindtransfer]','[%s][voiceAgentReport][musiconholdstart]\x20event:','substring','[%s][voiceAgentReport][musiconholdstart]\x20interface:%s','onhold','[%s][voiceAgentReport][musiconholdstart]','syncMusicOnHoldStop','[%s][voiceAgentReport][musiconholdstop]\x20event:','channel','lastIndexOf','[%s][voiceAgentReport][musiconholdstop]\x20interface:%s','[%s][voiceAgentReport][musiconholdstop]','exports','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','redis','defaults','localhost','socket.io-emitter','channels','voiceQueues','agents','agentcalled','syncAgentCalled','bind','agentconnect','syncAgentConnect','agentringnoanswer','syncAgentRingNoAnswer','queuecallerabandon','syncQueueCallerAbandon','agentcomplete','varset','syncVarSet','hangup','syncHangup','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','prototype','emit','isNotNull','isUndefined','info','[%s][voiceAgentReport][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','uniqueid','destuniqueid','debug','format','YYYY-MM-DD\x20HH:mm:ss','queue','mandatoryDisposition','inbound','variables','voice','merge','omit','event','privilege','inspect','interface','calleridnum','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:called\x20event:','membername','user:called','error','[%s][voiceAgentReport][agentcalled]','hasOwnProperty','agentconnectAt','connectedlinename','connectedlinenum','destchannelstate','destchannelstatedesc','holdtime','lastevent','voiceChannels','routealias','destconnectedlinenum','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentconnect\x20event:','custom:agentconnect','[%s][voiceAgentReport][agentcalled]\x20sending\x20user:agentconnect\x20event:','user:%s','user:agentconnect','agentringnoanswerAt','answeredelsewheredestinationuniqueid','answeredelsewheremembername','reason','[%s][voiceAgentReport][agentconnect]\x20sending\x20agentansweredelsewhere\x20event:','custom:agentansweredelsewhere','[%s][voiceAgentReport][agentringnoanswer]\x20event:','[%s][voiceAgentReport][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:rejected','rejected','[%s][voiceAgentReport][agentringnoanswer]\x20sending\x20agentringnoanswer\x20event:','abandoned','custom:agentqueuecallerabandon','[%s][voiceAgentReport][queuecallerabandon]','syncAgentComplete','[%s][voiceAgentReport][agentcomplete]\x20event:','[%s][voiceAgentReport][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','agentcompleteAt','transfer','agent','talktime','acw','acwtime','custom:agentcomplete','[%s][voiceAgentReport][agentcomplete]\x20sending\x20user:agentcomplete\x20event:','destaccountcode','[%s][voiceAgentReport][agentcomplete]','[%s][voiceAgentReport][varset]\x20event:','addVariable','keys','variable','value','[%s][voiceAgentReport][varset]\x20destuniqueid:%s\x20variable:%s\x20value:%s','[%s][voiceAgentReport][varset]','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrtt','rtpaudioqosrttbridged'];(function(_0x2dae4d,_0x4b7af6){var _0x3800af=function(_0x4ed5e4){while(--_0x4ed5e4){_0x2dae4d['push'](_0x2dae4d['shift']());}};_0x3800af(++_0x4b7af6);}(_0xa742,0x15e));var _0x2a74=function(_0x350a58,_0x40e6ce){_0x350a58=_0x350a58-0x0;var _0x26ebb1=_0xa742[_0x350a58];return _0x26ebb1;};'use strict';var _=require('lodash');var moment=require(_0x2a74('0x0'));var util=require(_0x2a74('0x1'));var Redis=require(_0x2a74('0x2'));var config=require(_0x2a74('0x3'));var logger=require(_0x2a74('0x4'))(_0x2a74('0x5'));var ami=require('../ami');config[_0x2a74('0x6')]=_[_0x2a74('0x7')](config[_0x2a74('0x6')],{'host':_0x2a74('0x8'),'port':0x18eb});var io=require(_0x2a74('0x9'))(new Redis(config[_0x2a74('0x6')]));function VoiceAgentReport(_0x549a34){this[_0x2a74('0xa')]={};this['voiceChannels']=_0x549a34['channels'];this[_0x2a74('0xb')]=_0x549a34[_0x2a74('0xb')];this[_0x2a74('0xc')]=_0x549a34[_0x2a74('0xc')];this['variables']={};ami['on'](_0x2a74('0xd'),this[_0x2a74('0xe')][_0x2a74('0xf')](this));ami['on'](_0x2a74('0x10'),this[_0x2a74('0x11')]['bind'](this));ami['on'](_0x2a74('0x12'),this[_0x2a74('0x13')]['bind'](this));ami['on'](_0x2a74('0x14'),this[_0x2a74('0x15')][_0x2a74('0xf')](this));ami['on'](_0x2a74('0x16'),this['syncAgentComplete'][_0x2a74('0xf')](this));ami['on'](_0x2a74('0x17'),this[_0x2a74('0x18')][_0x2a74('0xf')](this));ami['on'](_0x2a74('0x19'),this[_0x2a74('0x1a')]['bind'](this));ami['on'](_0x2a74('0x1b'),this[_0x2a74('0x1c')][_0x2a74('0xf')](this));ami['on'](_0x2a74('0x1d'),this['syncMusicOnHoldStop'][_0x2a74('0xf')](this));ami['on'](_0x2a74('0x1e'),this[_0x2a74('0x1f')][_0x2a74('0xf')](this));ami['on'](_0x2a74('0x20'),this[_0x2a74('0x21')][_0x2a74('0xf')](this));}VoiceAgentReport[_0x2a74('0x22')]['emit']=function(_0x578b28,_0x49188a,_0x523687){io['to'](_0x578b28)[_0x2a74('0x23')](_0x49188a,_0x523687);};VoiceAgentReport[_0x2a74('0x22')][_0x2a74('0x24')]=function(_0x58b161){return _0x58b161!==null&&!_[_0x2a74('0x25')](_0x58b161);};VoiceAgentReport[_0x2a74('0x22')][_0x2a74('0xe')]=function(_0x300ca4){try{if(this['isNotNull'](_0x300ca4)){logger[_0x2a74('0x26')](_0x2a74('0x27'),_0x300ca4[_0x2a74('0x28')],_0x300ca4['membername'],_0x300ca4[_0x2a74('0x29')]);logger[_0x2a74('0x2a')]('[%s][voiceAgentReport][agentcalled]\x20event:',_0x300ca4[_0x2a74('0x28')],util['inspect'](_0x300ca4,{'showHidden':![],'depth':null}));if(_['isUndefined'](this[_0x2a74('0xa')][_0x300ca4[_0x2a74('0x28')]])){this[_0x2a74('0xa')][_0x300ca4[_0x2a74('0x28')]]={};}if(_[_0x2a74('0x25')](this[_0x2a74('0xa')][_0x300ca4[_0x2a74('0x28')]][_0x300ca4['destuniqueid']])){this['channels'][_0x300ca4[_0x2a74('0x28')]][_0x300ca4[_0x2a74('0x29')]]={'agentcalledAt':moment()[_0x2a74('0x2b')](_0x2a74('0x2c')),'lastevent':'called','mandatoryDisposition':this[_0x2a74('0xb')][_0x300ca4[_0x2a74('0x2d')]]?this['voiceQueues'][_0x300ca4['queue']][_0x2a74('0x2e')]||![]:![],'type':this[_0x2a74('0xb')][_0x300ca4[_0x2a74('0x2d')]]?this['voiceQueues'][_0x300ca4[_0x2a74('0x2d')]]['type']||'inbound':_0x2a74('0x2f'),'variables':this[_0x2a74('0x30')][_0x300ca4[_0x2a74('0x28')]],'motionChannel':_0x2a74('0x31')};}_[_0x2a74('0x32')](this['channels'][_0x300ca4[_0x2a74('0x28')]][_0x300ca4[_0x2a74('0x29')]],_[_0x2a74('0x33')](_0x300ca4,[_0x2a74('0x34'),_0x2a74('0x35')]));logger[_0x2a74('0x2a')]('[%s][voiceAgentReport][agentcalled]\x20sending\x20agentcalled\x20event:',_0x300ca4[_0x2a74('0x28')],util[_0x2a74('0x36')](this[_0x2a74('0xa')][_0x300ca4[_0x2a74('0x28')]][_0x300ca4[_0x2a74('0x29')]],{'showHidden':![],'depth':null}));ami[_0x2a74('0x23')]('custom:agentcalled',this[_0x2a74('0xa')][_0x300ca4[_0x2a74('0x28')]][_0x300ca4[_0x2a74('0x29')]]);var _0x258eff={'id':this[_0x2a74('0xc')][_0x300ca4[_0x2a74('0x37')]]['id'],'calleridnum':this['channels'][_0x300ca4[_0x2a74('0x28')]][_0x300ca4[_0x2a74('0x29')]][_0x2a74('0x38')],'queue':this[_0x2a74('0xa')][_0x300ca4[_0x2a74('0x28')]][_0x300ca4['destuniqueid']][_0x2a74('0x2d')],'variables':this[_0x2a74('0xa')][_0x300ca4[_0x2a74('0x28')]][_0x300ca4['destuniqueid']]['variables']};logger['debug'](_0x2a74('0x39'),_0x300ca4[_0x2a74('0x28')],util[_0x2a74('0x36')](_0x258eff,{'showHidden':![],'depth':null}));this[_0x2a74('0x23')](util[_0x2a74('0x2b')]('user:%s',_0x300ca4[_0x2a74('0x3a')]),_0x2a74('0x3b'),_0x258eff);}}catch(_0x3f9023){logger[_0x2a74('0x3c')](_0x2a74('0x3d'),_0x300ca4[_0x2a74('0x28')],util[_0x2a74('0x36')](_0x3f9023,{'showHidden':![],'depth':null}));}};VoiceAgentReport['prototype'][_0x2a74('0x11')]=function(_0x327f87){try{if(this[_0x2a74('0x24')](_0x327f87)){if(this['channels'][_0x327f87[_0x2a74('0x28')]]){logger[_0x2a74('0x2a')]('[%s][voiceAgentReport][agentconnect]\x20event:',_0x327f87['uniqueid'],util['inspect'](_0x327f87,{'showHidden':![],'depth':null}));for(var _0x408b20 in this[_0x2a74('0xa')][_0x327f87[_0x2a74('0x28')]]){if(this[_0x2a74('0xa')][_0x327f87[_0x2a74('0x28')]][_0x2a74('0x3e')](_0x408b20)){if(_0x327f87[_0x2a74('0x29')]===_0x408b20){logger['info']('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x327f87['uniqueid'],_0x327f87['membername'],_0x327f87[_0x2a74('0x29')]);this[_0x2a74('0xa')][_0x327f87[_0x2a74('0x28')]][_0x408b20][_0x2a74('0x3f')]=moment()['format'](_0x2a74('0x2c'));this[_0x2a74('0xa')][_0x327f87[_0x2a74('0x28')]][_0x408b20][_0x2a74('0x40')]=_0x327f87[_0x2a74('0x40')];this[_0x2a74('0xa')][_0x327f87[_0x2a74('0x28')]][_0x408b20][_0x2a74('0x41')]=_0x327f87[_0x2a74('0x41')];this[_0x2a74('0xa')][_0x327f87[_0x2a74('0x28')]][_0x408b20][_0x2a74('0x42')]=_0x327f87[_0x2a74('0x42')];this[_0x2a74('0xa')][_0x327f87[_0x2a74('0x28')]][_0x408b20][_0x2a74('0x43')]=_0x327f87[_0x2a74('0x43')];this[_0x2a74('0xa')][_0x327f87[_0x2a74('0x28')]][_0x408b20][_0x2a74('0x44')]=_0x327f87[_0x2a74('0x44')];this[_0x2a74('0xa')][_0x327f87['uniqueid']][_0x408b20][_0x2a74('0x45')]='connect';if(this['voiceChannels'][this[_0x2a74('0xa')][_0x327f87['uniqueid']][_0x408b20]['uniqueid']]){var _0x3ecd04=this[_0x2a74('0x46')][this['channels'][_0x327f87[_0x2a74('0x28')]][_0x408b20]['uniqueid']][_0x2a74('0x47')];this[_0x2a74('0xa')][_0x327f87[_0x2a74('0x28')]][_0x408b20]['routealias']=_0x3ecd04;_0x327f87[_0x2a74('0x47')]=_0x3ecd04;}_['merge'](this['agents'][_0x327f87[_0x2a74('0x37')]],_['pick'](_0x327f87,[_0x2a74('0x2d'),_0x2a74('0x48'),_0x2a74('0x47')]));logger['debug'](_0x2a74('0x49'),_0x327f87[_0x2a74('0x28')],util['inspect'](this[_0x2a74('0xa')][_0x327f87['uniqueid']][_0x327f87[_0x2a74('0x29')]],{'showHidden':![],'depth':null}));ami[_0x2a74('0x23')](_0x2a74('0x4a'),this['channels'][_0x327f87[_0x2a74('0x28')]][_0x327f87[_0x2a74('0x29')]]);logger[_0x2a74('0x2a')](_0x2a74('0x4b'),_0x327f87[_0x2a74('0x28')],util[_0x2a74('0x36')](this[_0x2a74('0xa')][_0x327f87['uniqueid']][_0x327f87[_0x2a74('0x29')]],{'showHidden':![],'depth':null}));this[_0x2a74('0x23')](util[_0x2a74('0x2b')](_0x2a74('0x4c'),_0x327f87[_0x2a74('0x3a')]),_0x2a74('0x4d'),this['channels'][_0x327f87[_0x2a74('0x28')]][_0x327f87[_0x2a74('0x29')]]);}else if(!this['channels'][_0x327f87[_0x2a74('0x28')]][_0x408b20]['agentringnoanswer']&&!this[_0x2a74('0xa')][_0x327f87['uniqueid']][_0x408b20]['agentcomplete']){logger[_0x2a74('0x26')]('[%s][voiceAgentReport][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:answered_elsewhere',_0x327f87[_0x2a74('0x28')],this['channels'][_0x327f87[_0x2a74('0x28')]][_0x408b20]['membername'],_0x408b20);this[_0x2a74('0xa')][_0x327f87[_0x2a74('0x28')]][_0x408b20][_0x2a74('0x12')]=!![];this[_0x2a74('0xa')][_0x327f87['uniqueid']][_0x408b20][_0x2a74('0x4e')]=moment()[_0x2a74('0x2b')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x327f87[_0x2a74('0x28')]][_0x408b20][_0x2a74('0x4f')]=_0x327f87[_0x2a74('0x29')];this[_0x2a74('0xa')][_0x327f87['uniqueid']][_0x408b20][_0x2a74('0x50')]=_0x327f87['membername'];this['channels'][_0x327f87[_0x2a74('0x28')]][_0x408b20][_0x2a74('0x45')]='answered_elsewhere';this['channels'][_0x327f87['uniqueid']][_0x408b20][_0x2a74('0x51')]='answered_elsewhere';logger[_0x2a74('0x2a')](_0x2a74('0x52'),_0x327f87['uniqueid'],util[_0x2a74('0x36')](this[_0x2a74('0xa')][_0x327f87[_0x2a74('0x28')]][_0x408b20],{'showHidden':![],'depth':null}));ami['emit'](_0x2a74('0x53'),this[_0x2a74('0xa')][_0x327f87['uniqueid']][_0x408b20]);}}}}}}catch(_0x339a34){logger['error']('[%s][voiceAgentReport][agentconnect]',_0x327f87[_0x2a74('0x28')],util['inspect'](_0x339a34,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2a74('0x22')][_0x2a74('0x13')]=function(_0x533e81){try{if(this[_0x2a74('0x24')](_0x533e81)){logger[_0x2a74('0x2a')](_0x2a74('0x54'),_0x533e81[_0x2a74('0x28')],util[_0x2a74('0x36')](_0x533e81,{'showHidden':![],'depth':null}));if(this[_0x2a74('0xa')][_0x533e81[_0x2a74('0x28')]]&&this[_0x2a74('0xa')][_0x533e81[_0x2a74('0x28')]][_0x533e81[_0x2a74('0x29')]]){logger[_0x2a74('0x26')](_0x2a74('0x55'),_0x533e81[_0x2a74('0x28')],_0x533e81[_0x2a74('0x3a')],_0x533e81[_0x2a74('0x29')]);this['channels'][_0x533e81[_0x2a74('0x28')]][_0x533e81[_0x2a74('0x29')]][_0x2a74('0x12')]=!![];this[_0x2a74('0xa')][_0x533e81[_0x2a74('0x28')]][_0x533e81[_0x2a74('0x29')]][_0x2a74('0x4e')]=moment()[_0x2a74('0x2b')](_0x2a74('0x2c'));this[_0x2a74('0xa')][_0x533e81['uniqueid']][_0x533e81[_0x2a74('0x29')]][_0x2a74('0x45')]=_0x2a74('0x56');this[_0x2a74('0xa')][_0x533e81[_0x2a74('0x28')]][_0x533e81['destuniqueid']]['reason']=_0x2a74('0x56');logger['debug'](_0x2a74('0x57'),_0x533e81[_0x2a74('0x28')],util['inspect'](this['channels'][_0x533e81[_0x2a74('0x28')]][_0x533e81['destuniqueid']],{'showHidden':![],'depth':null}));ami['emit']('custom:agentringnoanswer',this[_0x2a74('0xa')][_0x533e81[_0x2a74('0x28')]][_0x533e81[_0x2a74('0x29')]]);}}}catch(_0x21e979){logger[_0x2a74('0x3c')]('[%s][voiceAgentReport][agentringnoanswer]',_0x533e81['uniqueid'],util[_0x2a74('0x36')](_0x21e979,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2a74('0x22')][_0x2a74('0x15')]=function(_0xc9d875){try{if(this[_0x2a74('0x24')](_0xc9d875)){logger['debug']('[%s][voiceAgentReport][queuecallerabandon]\x20event:',_0xc9d875[_0x2a74('0x28')],util[_0x2a74('0x36')](_0xc9d875,{'showHidden':![],'depth':null}));if(this[_0x2a74('0xa')][_0xc9d875['uniqueid']]){for(var _0x368f6b in this[_0x2a74('0xa')][_0xc9d875[_0x2a74('0x28')]]){if(this[_0x2a74('0xa')][_0xc9d875['uniqueid']][_0x2a74('0x3e')](_0x368f6b)&&!this[_0x2a74('0xa')][_0xc9d875[_0x2a74('0x28')]][_0x368f6b]['agentringnoanswer']&&!this[_0x2a74('0xa')][_0xc9d875[_0x2a74('0x28')]][_0x368f6b][_0x2a74('0x16')]){logger[_0x2a74('0x26')]('[%s][voiceAgentReport][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0xc9d875['uniqueid'],this['channels'][_0xc9d875[_0x2a74('0x28')]][_0x368f6b]['membername'],_0x368f6b);this[_0x2a74('0xa')][_0xc9d875[_0x2a74('0x28')]][_0x368f6b]['agentringnoanswer']=!![];this[_0x2a74('0xa')][_0xc9d875[_0x2a74('0x28')]][_0x368f6b]['agentringnoanswerAt']=moment()[_0x2a74('0x2b')](_0x2a74('0x2c'));this[_0x2a74('0xa')][_0xc9d875['uniqueid']][_0x368f6b][_0x2a74('0x45')]=_0x2a74('0x58');this['channels'][_0xc9d875[_0x2a74('0x28')]][_0x368f6b][_0x2a74('0x51')]=_0x2a74('0x58');logger[_0x2a74('0x2a')]('[%s][voiceAgentReport][queuecallerabandon]\x20sending\x20agentqueuecallerabandon\x20event:',_0xc9d875[_0x2a74('0x28')],util[_0x2a74('0x36')](this[_0x2a74('0xa')][_0xc9d875['uniqueid']][_0x368f6b],{'showHidden':![],'depth':null}));ami[_0x2a74('0x23')](_0x2a74('0x59'),this[_0x2a74('0xa')][_0xc9d875[_0x2a74('0x28')]][_0x368f6b]);}}}}}catch(_0x1426bb){logger[_0x2a74('0x3c')](_0x2a74('0x5a'),_0xc9d875[_0x2a74('0x28')],util[_0x2a74('0x36')](_0x1426bb,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2a74('0x22')][_0x2a74('0x5b')]=function(_0x5e69b8){try{if(this[_0x2a74('0x24')](_0x5e69b8)){logger[_0x2a74('0x2a')](_0x2a74('0x5c'),_0x5e69b8[_0x2a74('0x28')],util['inspect'](_0x5e69b8,{'showHidden':![],'depth':null}));if(this[_0x2a74('0xa')][_0x5e69b8[_0x2a74('0x28')]]){for(var _0x2915ff in this['channels'][_0x5e69b8['uniqueid']]){if(this[_0x2a74('0xa')][_0x5e69b8[_0x2a74('0x28')]][_0x2a74('0x3e')](_0x2915ff)){if(this[_0x2a74('0xa')][_0x5e69b8['uniqueid']][_0x2915ff][_0x2a74('0x3f')]&&!this[_0x2a74('0xa')][_0x5e69b8[_0x2a74('0x28')]][_0x2915ff][_0x2a74('0x16')]){logger[_0x2a74('0x26')](_0x2a74('0x5d'),_0x5e69b8[_0x2a74('0x28')],this[_0x2a74('0xa')][_0x5e69b8[_0x2a74('0x28')]][_0x2915ff][_0x2a74('0x3a')],_0x2915ff);this['channels'][_0x5e69b8[_0x2a74('0x28')]][_0x2915ff][_0x2a74('0x16')]=!![];this['channels'][_0x5e69b8[_0x2a74('0x28')]][_0x2915ff][_0x2a74('0x5e')]=moment()[_0x2a74('0x2b')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x5e69b8[_0x2a74('0x28')]][_0x2915ff][_0x2a74('0x45')]='complete';this[_0x2a74('0xa')][_0x5e69b8[_0x2a74('0x28')]][_0x2915ff]['reason']=_0x5e69b8[_0x2a74('0x51')]==_0x2a74('0x5f')?_0x2a74('0x60'):_0x5e69b8[_0x2a74('0x51')];this[_0x2a74('0xa')][_0x5e69b8['uniqueid']][_0x2915ff][_0x2a74('0x61')]=_0x5e69b8[_0x2a74('0x61')];if(this['voiceQueues'][_0x5e69b8[_0x2a74('0x2d')]]&&this['voiceQueues'][_0x5e69b8[_0x2a74('0x2d')]][_0x2a74('0x62')]){this['channels'][_0x5e69b8[_0x2a74('0x28')]][_0x2915ff][_0x2a74('0x63')]=this[_0x2a74('0xb')][_0x5e69b8['queue']]['acwTimeout'];this['channels'][_0x5e69b8['uniqueid']][_0x2915ff]['agentacw']=!![];}this['agents'][_0x5e69b8[_0x2a74('0x37')]]=_[_0x2a74('0x33')](this[_0x2a74('0xc')][_0x5e69b8[_0x2a74('0x37')]],[_0x2a74('0x2d'),_0x2a74('0x48')]);logger[_0x2a74('0x2a')]('[%s][voiceAgentReport][agentcomplete]\x20sending\x20agentcomplete\x20event:',_0x5e69b8[_0x2a74('0x28')],util['inspect'](this[_0x2a74('0xa')][_0x5e69b8[_0x2a74('0x28')]][_0x2915ff],{'showHidden':![],'depth':null}));ami[_0x2a74('0x23')](_0x2a74('0x64'),this[_0x2a74('0xa')][_0x5e69b8[_0x2a74('0x28')]][_0x2915ff]);logger[_0x2a74('0x2a')](_0x2a74('0x65'),_0x5e69b8[_0x2a74('0x28')],util['inspect']({'id':this[_0x2a74('0xc')][_0x5e69b8[_0x2a74('0x37')]]['id'],'destaccountcode':_0x5e69b8[_0x2a74('0x66')]},{'showHidden':![],'depth':null}));this['emit'](util['format'](_0x2a74('0x4c'),_0x5e69b8[_0x2a74('0x3a')]),'user:agentcomplete',{'id':this[_0x2a74('0xc')][_0x5e69b8[_0x2a74('0x37')]]['id'],'destaccountcode':_0x5e69b8['destaccountcode']});}}}}}}catch(_0x1a2dce){logger[_0x2a74('0x3c')](_0x2a74('0x67'),_0x5e69b8[_0x2a74('0x28')],util['inspect'](_0x1a2dce,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2a74('0x22')][_0x2a74('0x18')]=function(_0x4cef02){try{if(this[_0x2a74('0x24')](_0x4cef02)){logger[_0x2a74('0x2a')](_0x2a74('0x68'),_0x4cef02[_0x2a74('0x28')],util[_0x2a74('0x36')](_0x4cef02,{'showHidden':![],'depth':null}));this[_0x2a74('0x69')](_0x4cef02[_0x2a74('0x28')],_[_0x2a74('0x6a')](_0x4cef02[_0x2a74('0x6b')])[0x0],_0x4cef02[_0x2a74('0x6c')]);if(this['channels'][_0x4cef02[_0x2a74('0x28')]]){for(var _0x4eeb49 in this['channels'][_0x4cef02['uniqueid']]){if(this[_0x2a74('0xa')][_0x4cef02[_0x2a74('0x28')]][_0x2a74('0x3e')](_0x4eeb49)){logger[_0x2a74('0x26')](_0x2a74('0x6d'),_0x4cef02[_0x2a74('0x28')],_0x4eeb49,_[_0x2a74('0x6a')](_0x4cef02[_0x2a74('0x6b')])[0x0],_0x4cef02[_0x2a74('0x6c')]);if(_[_0x2a74('0x25')](this[_0x2a74('0xa')][_0x4cef02[_0x2a74('0x28')]][_0x4eeb49][_0x2a74('0x30')])){this['channels'][_0x4cef02[_0x2a74('0x28')]][_0x4eeb49][_0x2a74('0x30')]={};}this[_0x2a74('0xa')][_0x4cef02['uniqueid']][_0x4eeb49][_0x2a74('0x30')]=this[_0x2a74('0x30')][_0x4cef02['uniqueid']];}}}}}catch(_0x8972a0){logger[_0x2a74('0x3c')](_0x2a74('0x6e'),_0x4cef02[_0x2a74('0x28')],util[_0x2a74('0x36')](_0x8972a0,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2a74('0x22')][_0x2a74('0x69')]=function(_0x22ea5c,_0xcb90ef,_0x415c17){var _0x232c0e=['rtpaudioqos',_0x2a74('0x6f'),_0x2a74('0x70'),_0x2a74('0x71'),_0x2a74('0x72'),_0x2a74('0x73'),_0x2a74('0x74'),_0x2a74('0x75'),'sipcallid',_0x2a74('0x76'),_0x2a74('0x77'),_0x2a74('0x78'),_0x2a74('0x79'),_0x2a74('0x7a'),_0x2a74('0x7b'),_0x2a74('0x7c'),_0x2a74('0x3a'),'memberpenalty',_0x2a74('0x7d')];if(!_[_0x2a74('0x7e')](_0xcb90ef)&&!_[_0x2a74('0x7f')](_0x232c0e,_0xcb90ef)){if(_[_0x2a74('0x25')](this['variables'][_0x22ea5c])){this[_0x2a74('0x30')][_0x22ea5c]={};}this[_0x2a74('0x30')][_0x22ea5c][_0xcb90ef]=_0x415c17;}};VoiceAgentReport[_0x2a74('0x22')][_0x2a74('0x1a')]=function(_0x45b984){try{if(this[_0x2a74('0x24')](_0x45b984)){logger[_0x2a74('0x2a')](_0x2a74('0x80'),_0x45b984[_0x2a74('0x28')],util['inspect'](_0x45b984,{'showHidden':![],'depth':null}));if(this['channels'][_0x45b984[_0x2a74('0x28')]]){for(var _0x22e1be in this['channels'][_0x45b984[_0x2a74('0x28')]]){if(this[_0x2a74('0xa')][_0x45b984[_0x2a74('0x28')]][_0x2a74('0x3e')](_0x22e1be)){if(this[_0x2a74('0xa')][_0x45b984[_0x2a74('0x28')]][_0x22e1be][_0x2a74('0x51')]==_0x2a74('0x5f')&&this[_0x2a74('0xa')][_0x45b984['uniqueid']][_0x22e1be][_0x2a74('0x16')]){logger[_0x2a74('0x26')](_0x2a74('0x81'),_0x45b984[_0x2a74('0x28')],_0x22e1be);this[_0x2a74('0xa')][_0x45b984[_0x2a74('0x28')]][_0x22e1be][_0x2a74('0x5e')]=moment()[_0x2a74('0x2b')]('YYYY-MM-DD\x20HH:mm:ss');}}}logger['debug']('[%s][voiceAgentReport][hangup]\x20sending\x20voiceAgentReport\x20event:',_0x45b984[_0x2a74('0x28')],util['inspect'](_[_0x2a74('0x82')](this[_0x2a74('0xa')][_0x45b984[_0x2a74('0x28')]]),{'showHidden':![],'depth':null}));ami[_0x2a74('0x23')]('custom:voiceAgentReport',_[_0x2a74('0x82')](this[_0x2a74('0xa')][_0x45b984[_0x2a74('0x28')]]));delete this[_0x2a74('0xa')][_0x45b984[_0x2a74('0x28')]];}if(this[_0x2a74('0x30')][_0x45b984[_0x2a74('0x28')]]){delete this['variables'][_0x45b984[_0x2a74('0x28')]];}}}catch(_0x420127){logger[_0x2a74('0x3c')]('[%s][voiceAgentReport][hangup]',_0x45b984[_0x2a74('0x28')],util[_0x2a74('0x36')](_0x420127,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2a74('0x22')][_0x2a74('0x1f')]=function(_0xc1a82e){try{if(this['isNotNull'](_0xc1a82e)){logger[_0x2a74('0x2a')](_0x2a74('0x83'),_0xc1a82e[_0x2a74('0x28')],util['inspect'](_0xc1a82e,{'showHidden':![],'depth':null}));if(this[_0x2a74('0xa')][_0xc1a82e['transfereeuniqueid']]){for(var _0x5b52dd in this[_0x2a74('0xa')][_0xc1a82e[_0x2a74('0x84')]]){if(this['channels'][_0xc1a82e['transfereeuniqueid']][_0x2a74('0x3e')](_0x5b52dd)){if(_0xc1a82e[_0x2a74('0x85')]===_0x5b52dd){logger[_0x2a74('0x26')](_0x2a74('0x86'),_0xc1a82e[_0x2a74('0x28')],this[_0x2a74('0xa')][_0xc1a82e[_0x2a74('0x84')]][_0x5b52dd]['membername'],_0x5b52dd);var _0x38e1b8=moment();this[_0x2a74('0xa')][_0xc1a82e[_0x2a74('0x84')]][_0x5b52dd][_0x2a74('0x16')]=!![];this[_0x2a74('0xa')][_0xc1a82e[_0x2a74('0x84')]][_0x5b52dd][_0x2a74('0x5e')]=moment()[_0x2a74('0x2b')](_0x2a74('0x2c'));this[_0x2a74('0xa')][_0xc1a82e[_0x2a74('0x84')]][_0x5b52dd][_0x2a74('0x45')]=_0x2a74('0x87');this[_0x2a74('0xa')][_0xc1a82e[_0x2a74('0x84')]][_0x5b52dd][_0x2a74('0x51')]='transfer';this[_0x2a74('0xa')][_0xc1a82e[_0x2a74('0x84')]][_0x5b52dd][_0x2a74('0x61')]=_0x38e1b8['diff'](this['channels'][_0xc1a82e[_0x2a74('0x84')]][_0x5b52dd][_0x2a74('0x3f')],_0x2a74('0x88'));}}}}if(this[_0x2a74('0xa')][_0xc1a82e['secondtransfereruniqueid']]){var _0x208536=this[_0x2a74('0xa')][_0xc1a82e['secondtransfereruniqueid']];this[_0x2a74('0xa')][_0xc1a82e[_0x2a74('0x89')]]=this[_0x2a74('0xa')][_0xc1a82e['transfereeuniqueid']];this[_0x2a74('0xa')][_0xc1a82e[_0x2a74('0x84')]]=_0x208536;}}}catch(_0x427343){logger['error'](_0x2a74('0x8a'),_0xc1a82e[_0x2a74('0x28')],util['inspect'](_0x427343,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2a74('0x22')][_0x2a74('0x21')]=function(_0x5ac739){try{if(this[_0x2a74('0x24')](_0x5ac739)){logger['debug'](_0x2a74('0x8b'),_0x5ac739[_0x2a74('0x28')],util[_0x2a74('0x36')](_0x5ac739,{'showHidden':![],'depth':null}));if(this[_0x2a74('0xa')][_0x5ac739[_0x2a74('0x84')]]){for(var _0x345d01 in this[_0x2a74('0xa')][_0x5ac739['transfereeuniqueid']]){if(this['channels'][_0x5ac739[_0x2a74('0x84')]][_0x2a74('0x3e')](_0x345d01)){if(_0x5ac739[_0x2a74('0x8c')]===_0x345d01){logger[_0x2a74('0x26')](_0x2a74('0x8d'),_0x5ac739[_0x2a74('0x28')],this[_0x2a74('0xa')][_0x5ac739[_0x2a74('0x84')]][_0x345d01][_0x2a74('0x3a')],_0x345d01);var _0x3372bd=moment();this[_0x2a74('0xa')][_0x5ac739['transfereeuniqueid']][_0x345d01][_0x2a74('0x16')]=!![];this[_0x2a74('0xa')][_0x5ac739[_0x2a74('0x84')]][_0x345d01][_0x2a74('0x5e')]=_0x3372bd;this[_0x2a74('0xa')][_0x5ac739[_0x2a74('0x84')]][_0x345d01]['lastevent']=_0x2a74('0x87');this[_0x2a74('0xa')][_0x5ac739[_0x2a74('0x84')]][_0x345d01]['reason']=_0x2a74('0x5f');this[_0x2a74('0xa')][_0x5ac739[_0x2a74('0x84')]][_0x345d01][_0x2a74('0x61')]=_0x3372bd[_0x2a74('0x8e')](this['channels'][_0x5ac739[_0x2a74('0x84')]][_0x345d01][_0x2a74('0x3f')],_0x2a74('0x88'));}}}}}}catch(_0x53e996){logger[_0x2a74('0x3c')](_0x2a74('0x8f'),_0x5ac739['uniqueid'],util['inspect'](_0x53e996,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2a74('0x22')][_0x2a74('0x1c')]=function(_0x3d17ea){var _0x69068b='';try{if(this[_0x2a74('0x24')](_0x3d17ea)){logger[_0x2a74('0x2a')](_0x2a74('0x90'),_0x3d17ea['uniqueid'],util[_0x2a74('0x36')](_0x3d17ea,{'showHidden':![],'depth':null}));if(_0x3d17ea['channel']){_0x69068b=_0x3d17ea['channel'][_0x2a74('0x91')](0x0,_0x3d17ea['channel']['lastIndexOf']('-'));if(this[_0x2a74('0xc')][_0x69068b]){logger[_0x2a74('0x26')](_0x2a74('0x92'),_0x3d17ea[_0x2a74('0x28')],_0x69068b);this[_0x2a74('0xc')][_0x69068b][_0x2a74('0x93')]=!![];}}}}catch(_0x3fb2b9){logger[_0x2a74('0x3c')](_0x2a74('0x94'),_0x3d17ea['uniqueid'],util[_0x2a74('0x36')](_0x3fb2b9,{'showHidden':![],'depth':null}));}};VoiceAgentReport[_0x2a74('0x22')][_0x2a74('0x95')]=function(_0x6da5b3){var _0x393436='';try{if(this[_0x2a74('0x24')](_0x6da5b3)){logger['debug'](_0x2a74('0x96'),_0x6da5b3['uniqueid'],util[_0x2a74('0x36')](_0x6da5b3,{'showHidden':![],'depth':null}));if(_0x6da5b3[_0x2a74('0x97')]){_0x393436=_0x6da5b3['channel'][_0x2a74('0x91')](0x0,_0x6da5b3[_0x2a74('0x97')][_0x2a74('0x98')]('-'));if(this['agents'][_0x393436]){logger[_0x2a74('0x26')](_0x2a74('0x99'),_0x6da5b3[_0x2a74('0x28')],_0x393436);this['agents'][_0x393436][_0x2a74('0x93')]=![];}}}}catch(_0xac7dfc){logger[_0x2a74('0x3c')](_0x2a74('0x9a'),_0x6da5b3['uniqueid'],util[_0x2a74('0x36')](_0xac7dfc,{'showHidden':![],'depth':null}));}};module[_0x2a74('0x9b')]=VoiceAgentReport;
\ No newline at end of file
index 31f6b27..08f4a72 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc368=['toNumber','channelstate','isUndefined','destconnectedlinenum','[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:','name','application','toLowerCase','applicationdata','appdata','CDR(routeAlias)','duration','subtract','YYYY-MM-DD\x20HH:mm:ss','disposition','includes','lastapplication','lastdata','startsWith','cdr(','match','type','isNil','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','calleridname','[%s][voiceCallReport][newstate]\x20event:','answered','answertime','holdtime','diff','seconds','connectedlinename','destinationchannel','UserId','membername','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][newstate]','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','monitor','.wav49','.WAV','monitorFilename','find','monitors','rec','[%s][voiceCallReport][mixMonitorFilename]','[%s][voiceCallReport][varset]\x20event:','variable','[%s][voiceCallReport][varset]\x20variable:mixmonitor_filename\x20value:%s','syncMixMonitorFilename','xmd-phone','[%s][voiceCallReport][varset]\x20variable:xmd-phone\x20value:%s','value','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','[%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','calleridpreview','[%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','endtime','billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','transferType','undefined','getSettings','then','stopRecordingOnTransfer','resolve','Action','catch','BlindTransfer','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','[%s][voiceCallReport][hangup]','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','routeid','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','BLIND','transfereruniqueid','transfererchannel','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s','[%s][voiceCallReport][musiconholdstart]','[%s][voiceCallReport][musiconholdstop]\x20event:','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','mohtime','[%s][voiceCallReport][musiconholdstop]','exports','moment','path','ioredis','../../../config/environment','../../../config/logger','ami','../model/channel','../rpc/setting','set','queue','playback','voicemail','NO\x20ANSWER','FAILED','BUSY','redis','defaults','localhost','socket.io-emitter','channels','agents','blindTransfers','coreshowchannel','bind','syncNewExten','newchannel','syncNewChannel','newstate','syncNewState','varset','hangup','syncHangup','newcallerid','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','error','[voiceCallReport][coreshowchannels]','inspect','prototype','isNotNull','emit','syncNewCallerId','info','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','calleridnum','debug','uniqueid','merge','pick','keys','context','from-sip','channel','split','exten','xcally-motion-preview','connectedlinenum','format','user:%s','user:agentconnect','accountcode','[%s][voiceCallReport][newcallerid]','[%s][voiceCallReport][newchannel]\x20event:','OutgoingSpoolFailed','linkedid','[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s','starttime'];(function(_0x225915,_0x2eaa2f){var _0x3b8d10=function(_0x4c9dd5){while(--_0x4c9dd5){_0x225915['push'](_0x225915['shift']());}};_0x3b8d10(++_0x2eaa2f);}(_0xc368,0x7b));var _0x8c36=function(_0x409972,_0x38eb30){_0x409972=_0x409972-0x0;var _0x223193=_0xc368[_0x409972];return _0x223193;};'use strict';var _=require('lodash');var moment=require(_0x8c36('0x0'));var util=require('util');var path=require(_0x8c36('0x1'));var Redis=require(_0x8c36('0x2'));var config=require(_0x8c36('0x3'));var logger=require(_0x8c36('0x4'))(_0x8c36('0x5'));var ami=require('../ami');var Channel=require(_0x8c36('0x6'));var RpcSetting=require(_0x8c36('0x7'));var applications=[_0x8c36('0x8'),_0x8c36('0x9'),'agi','dial',_0x8c36('0xa'),_0x8c36('0xb')];var dispositions=[_0x8c36('0xc'),_0x8c36('0xd'),_0x8c36('0xd'),_0x8c36('0xc'),'NO\x20ANSWER','NO\x20ANSWER','ANSWERED',_0x8c36('0xe'),_0x8c36('0xd'),'FAILED',_0x8c36('0xd')];config[_0x8c36('0xf')]=_[_0x8c36('0x10')](config[_0x8c36('0xf')],{'host':_0x8c36('0x11'),'port':0x18eb});var io=require(_0x8c36('0x12'))(new Redis(config[_0x8c36('0xf')]));function VoiceCallReport(_0x23eb71){this[_0x8c36('0x13')]=_0x23eb71[_0x8c36('0x13')];this[_0x8c36('0x14')]=_0x23eb71[_0x8c36('0x14')];this[_0x8c36('0x15')]={};ami['on'](_0x8c36('0x16'),this['syncNewExten'][_0x8c36('0x17')](this));ami['on']('newexten',this[_0x8c36('0x18')][_0x8c36('0x17')](this));ami['on'](_0x8c36('0x19'),this[_0x8c36('0x1a')][_0x8c36('0x17')](this));ami['on'](_0x8c36('0x1b'),this[_0x8c36('0x1c')][_0x8c36('0x17')](this));ami['on'](_0x8c36('0x1d'),this['syncVarSet'][_0x8c36('0x17')](this));ami['on'](_0x8c36('0x1e'),this[_0x8c36('0x1f')][_0x8c36('0x17')](this));ami['on'](_0x8c36('0x20'),this['syncNewCallerId'][_0x8c36('0x17')](this));ami['on'](_0x8c36('0x21'),this[_0x8c36('0x22')][_0x8c36('0x17')](this));ami['on'](_0x8c36('0x23'),this[_0x8c36('0x24')][_0x8c36('0x17')](this));ami['on'](_0x8c36('0x25'),this[_0x8c36('0x26')][_0x8c36('0x17')](this));ami['on'](_0x8c36('0x27'),this[_0x8c36('0x28')][_0x8c36('0x17')](this));try{logger['info']('[voiceCallReport][coreshowchannels]\x20started');ami['actionCoreShowChannels']();}catch(_0x55b844){logger[_0x8c36('0x29')](_0x8c36('0x2a'),util[_0x8c36('0x2b')](_0x55b844,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0x8c36('0x2c')][_0x8c36('0x2d')]=function(_0x27c0df){return _0x27c0df!==null&&!_['isUndefined'](_0x27c0df);};VoiceCallReport[_0x8c36('0x2c')]['emit']=function(_0x40b66f,_0x52b90c,_0x10613e){io['to'](_0x40b66f)[_0x8c36('0x2e')](_0x52b90c,_0x10613e);};VoiceCallReport[_0x8c36('0x2c')][_0x8c36('0x2f')]=function(_0x50aa48){try{if(this['isNotNull'](_0x50aa48)){logger[_0x8c36('0x30')](_0x8c36('0x31'),_0x50aa48['uniqueid'],_0x50aa48['calleridname'],_0x50aa48[_0x8c36('0x32')]);logger[_0x8c36('0x33')]('[%s][voiceCallReport][newcallerid]\x20event:',_0x50aa48[_0x8c36('0x34')],util[_0x8c36('0x2b')](_0x50aa48,{'showHidden':![],'depth':null}));if(_0x50aa48[_0x8c36('0x34')]===_0x50aa48['linkedid']){if(!_['isUndefined'](this[_0x8c36('0x13')][_0x50aa48[_0x8c36('0x34')]])){_[_0x8c36('0x35')](this[_0x8c36('0x13')][_0x50aa48[_0x8c36('0x34')]],_[_0x8c36('0x36')](_0x50aa48,_[_0x8c36('0x37')](this[_0x8c36('0x13')][_0x50aa48[_0x8c36('0x34')]])));}}if(_0x50aa48[_0x8c36('0x38')]===_0x8c36('0x39')){if(this[_0x8c36('0x14')][_0x50aa48[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]]){if(_0x50aa48[_0x8c36('0x3c')]==_0x8c36('0x3d')){this[_0x8c36('0x14')][_0x50aa48['channel']['split']('-')[0x0]]['destconnectedlinenum']=_0x50aa48[_0x8c36('0x3e')];this[_0x8c36('0x2e')](util[_0x8c36('0x3f')](_0x8c36('0x40'),this[_0x8c36('0x14')][_0x50aa48[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]]['name']),_0x8c36('0x41'),{'destaccountcode':this['agents'][_0x50aa48[_0x8c36('0x3a')]['split']('-')[0x0]][_0x8c36('0x42')],'destconnectedlinenum':_0x50aa48[_0x8c36('0x3e')]});}}}}}catch(_0x54d796){logger['error'](_0x8c36('0x43'),_0x50aa48[_0x8c36('0x34')],util[_0x8c36('0x2b')](_0x54d796,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x8c36('0x2c')][_0x8c36('0x1a')]=function(_0x12421b){try{if(this[_0x8c36('0x2d')](_0x12421b)){logger[_0x8c36('0x33')](_0x8c36('0x44'),_0x12421b[_0x8c36('0x34')],util[_0x8c36('0x2b')](_0x12421b,{'showHidden':![],'depth':null}));if(this[_0x8c36('0x13')][_0x12421b[_0x8c36('0x34')]])return;if(_0x12421b[_0x8c36('0x3a')]===_0x8c36('0x45'))return;if(_0x12421b[_0x8c36('0x34')]!==_0x12421b[_0x8c36('0x46')]&&!this['blindTransfers'][_0x12421b[_0x8c36('0x46')]])return;logger['info'](_0x8c36('0x47'),_0x12421b[_0x8c36('0x34')],_0x12421b[_0x8c36('0x38')],_0x12421b[_0x8c36('0x3c')]);this['channels'][_0x12421b['uniqueid']]=new Channel();this[_0x8c36('0x13')][_0x12421b[_0x8c36('0x34')]][_0x8c36('0x48')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x8c36('0x13')][_0x12421b['uniqueid']]['disposition']=dispositions[_[_0x8c36('0x49')](_0x12421b[_0x8c36('0x4a')])];_[_0x8c36('0x35')](this[_0x8c36('0x13')][_0x12421b[_0x8c36('0x34')]],_[_0x8c36('0x36')](_0x12421b,_[_0x8c36('0x37')](this[_0x8c36('0x13')][_0x12421b[_0x8c36('0x34')]])));if(_0x12421b[_0x8c36('0x38')]==='from-sip'){if(this[_0x8c36('0x14')][_0x12421b[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]]){if(_[_0x8c36('0x4b')](this[_0x8c36('0x14')][_0x12421b['channel'][_0x8c36('0x3b')]('-')[0x0]][_0x8c36('0x4c')])){this[_0x8c36('0x14')][_0x12421b[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]][_0x8c36('0x4c')]=_0x12421b['exten'];logger[_0x8c36('0x33')](_0x8c36('0x4d'),_0x12421b[_0x8c36('0x34')],util[_0x8c36('0x2b')]({'id':this[_0x8c36('0x14')][_0x12421b[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x12421b[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]][_0x8c36('0x42')],'destconnectedlinenum':_0x12421b[_0x8c36('0x3c')]},{'showHidden':![],'depth':null}));this[_0x8c36('0x2e')](util[_0x8c36('0x3f')](_0x8c36('0x40'),this[_0x8c36('0x14')][_0x12421b[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]][_0x8c36('0x4e')]),_0x8c36('0x41'),{'id':this['agents'][_0x12421b['channel'][_0x8c36('0x3b')]('-')[0x0]]['id'],'destaccountcode':this[_0x8c36('0x14')][_0x12421b[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x12421b[_0x8c36('0x3c')]});}}}}}catch(_0x2671a3){logger['error']('[%s][voiceCallReport][newchannel]',_0x12421b['uniqueid'],util[_0x8c36('0x2b')](_0x2671a3,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x8c36('0x2c')][_0x8c36('0x18')]=function(_0x197d11){try{if(this[_0x8c36('0x2d')](_0x197d11)){logger[_0x8c36('0x33')]('[%s][voiceCallReport][newexten]\x20event:',_0x197d11[_0x8c36('0x34')],util[_0x8c36('0x2b')](_0x197d11,{'showHidden':![],'depth':null}));if(_0x197d11[_0x8c36('0x3a')]===_0x8c36('0x45')||_0x197d11['exten']==='h')return;if(_0x197d11['uniqueid']===_0x197d11['linkedid']||this[_0x8c36('0x15')][_0x197d11[_0x8c36('0x46')]]){_0x197d11[_0x8c36('0x4f')]=_0x197d11[_0x8c36('0x4f')][_0x8c36('0x50')]();_0x197d11[_0x8c36('0x51')]=_0x197d11[_0x8c36('0x52')]||_0x197d11[_0x8c36('0x51')];if(_0x197d11[_0x8c36('0x52')]&&!_0x197d11['appdata']['startsWith'](_0x8c36('0x53'))&&_0x197d11['application']!=='queue'){_0x197d11[_0x8c36('0x51')]=_0x197d11['applicationdata'][_0x8c36('0x50')]();}logger[_0x8c36('0x30')]('[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s',_0x197d11[_0x8c36('0x34')],_0x197d11['application'],_0x197d11[_0x8c36('0x51')]);if(_[_0x8c36('0x4b')](this[_0x8c36('0x13')][_0x197d11['uniqueid']])){this[_0x8c36('0x13')][_0x197d11[_0x8c36('0x34')]]=new Channel();this[_0x8c36('0x13')][_0x197d11[_0x8c36('0x34')]][_0x8c36('0x48')]=_0x197d11[_0x8c36('0x54')]?moment()[_0x8c36('0x55')](moment[_0x8c36('0x54')](_0x197d11[_0x8c36('0x54')])['seconds'](),'seconds')['format'](_0x8c36('0x56')):moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x8c36('0x13')][_0x197d11[_0x8c36('0x34')]][_0x8c36('0x57')]=_0x8c36('0xc');}_[_0x8c36('0x35')](this['channels'][_0x197d11['uniqueid']],_['pick'](_0x197d11,_[_0x8c36('0x37')](this[_0x8c36('0x13')][_0x197d11['uniqueid']])));if(_[_0x8c36('0x58')](applications,_0x197d11[_0x8c36('0x4f')])){this[_0x8c36('0x13')][_0x197d11[_0x8c36('0x34')]][_0x8c36('0x59')]=_0x197d11[_0x8c36('0x4f')];this[_0x8c36('0x13')][_0x197d11[_0x8c36('0x34')]][_0x8c36('0x5a')]=_0x197d11['applicationdata'];if(_0x197d11['application']==='set'&&_[_0x8c36('0x5b')](_0x197d11[_0x8c36('0x51')][_0x8c36('0x50')](),_0x8c36('0x5c'))){var _0x3bd235=_0x197d11[_0x8c36('0x51')]['split']('=');var _0x55d2c7=_0x3bd235[0x0]['toLowerCase']()[_0x8c36('0x5d')](/cdr\((.*)\)/);if(_0x55d2c7){if(_0x55d2c7[0x1]===_0x8c36('0x5e')&&!_[_0x8c36('0x5f')](this['channels'][_0x197d11[_0x8c36('0x34')]][_0x55d2c7[0x1]]))return;this['channels'][_0x197d11[_0x8c36('0x34')]][_0x55d2c7[0x1]]=_0x3bd235[0x1];}}else if(_0x197d11[_0x8c36('0x4f')]===_0x8c36('0x9')){this[_0x8c36('0x13')][_0x197d11[_0x8c36('0x34')]]['queue']=_0x197d11[_0x8c36('0x51')]['split'](',')[0x0];}}}}}catch(_0x39ab18){logger[_0x8c36('0x29')]('[%s][voiceCallReport][newexten]',_0x197d11[_0x8c36('0x34')],util[_0x8c36('0x2b')](_0x39ab18,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x8c36('0x2c')]['syncNewState']=function(_0x244634){try{if(this[_0x8c36('0x2d')](_0x244634)){logger[_0x8c36('0x30')](_0x8c36('0x60'),_0x244634['uniqueid'],_0x244634[_0x8c36('0x46')],_0x244634[_0x8c36('0x61')],_0x244634['calleridnum']);logger[_0x8c36('0x33')](_0x8c36('0x62'),_0x244634[_0x8c36('0x34')],util['inspect'](_0x244634,{'showHidden':![],'depth':null}));if(_0x244634[_0x8c36('0x4a')]!=='6')return;if(_0x244634[_0x8c36('0x34')]!==_0x244634['linkedid']){var _0x2f851f=moment();if(this[_0x8c36('0x13')][_0x244634[_0x8c36('0x46')]]){if(!this[_0x8c36('0x13')][_0x244634['linkedid']][_0x8c36('0x63')]){this['channels'][_0x244634[_0x8c36('0x46')]][_0x8c36('0x63')]=!![];this['channels'][_0x244634[_0x8c36('0x46')]][_0x8c36('0x64')]=_0x2f851f[_0x8c36('0x3f')](_0x8c36('0x56'));if(this[_0x8c36('0x13')][_0x244634[_0x8c36('0x46')]][_0x8c36('0x48')]){this[_0x8c36('0x13')][_0x244634['linkedid']][_0x8c36('0x65')]=_0x2f851f[_0x8c36('0x66')](this[_0x8c36('0x13')][_0x244634['linkedid']][_0x8c36('0x48')],_0x8c36('0x67'));}}this[_0x8c36('0x13')][_0x244634[_0x8c36('0x46')]][_0x8c36('0x46')]=_0x244634['uniqueid'];if(_0x244634[_0x8c36('0x32')]!==_0x8c36('0x3d')){this[_0x8c36('0x13')][_0x244634['linkedid']][_0x8c36('0x3e')]=_0x244634[_0x8c36('0x32')];}this[_0x8c36('0x13')][_0x244634[_0x8c36('0x46')]][_0x8c36('0x68')]=_0x244634['calleridname'];this[_0x8c36('0x13')][_0x244634[_0x8c36('0x46')]][_0x8c36('0x69')]=_0x244634['channel'];this[_0x8c36('0x13')][_0x244634[_0x8c36('0x46')]][_0x8c36('0x57')]=dispositions[_[_0x8c36('0x49')](_0x244634[_0x8c36('0x4a')])];if(this[_0x8c36('0x14')][_0x244634[_0x8c36('0x3a')]['split']('-')[0x0]]){this['channels'][_0x244634['linkedid']][_0x8c36('0x6a')]=this[_0x8c36('0x14')][_0x244634[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]]['id'];this[_0x8c36('0x13')][_0x244634[_0x8c36('0x46')]][_0x8c36('0x6b')]=this[_0x8c36('0x14')][_0x244634[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]][_0x8c36('0x4e')];}}if(this[_0x8c36('0x13')][_0x244634[_0x8c36('0x34')]]){if(!this[_0x8c36('0x13')][_0x244634[_0x8c36('0x34')]][_0x8c36('0x63')]){this[_0x8c36('0x13')][_0x244634[_0x8c36('0x34')]]['answered']=!![];this[_0x8c36('0x13')][_0x244634['uniqueid']]['answertime']=_0x2f851f[_0x8c36('0x3f')]('YYYY-MM-DD\x20HH:mm:ss');if(this[_0x8c36('0x13')][_0x244634[_0x8c36('0x34')]][_0x8c36('0x48')]){this[_0x8c36('0x13')][_0x244634[_0x8c36('0x34')]][_0x8c36('0x65')]=_0x2f851f[_0x8c36('0x66')](this['channels'][_0x244634['uniqueid']][_0x8c36('0x48')],_0x8c36('0x67'));}}if(_0x244634['calleridnum']!==_0x8c36('0x3d')){this[_0x8c36('0x13')][_0x244634[_0x8c36('0x34')]][_0x8c36('0x3e')]=_0x244634['calleridnum'];}this[_0x8c36('0x13')][_0x244634[_0x8c36('0x34')]][_0x8c36('0x68')]=_0x244634[_0x8c36('0x61')];this[_0x8c36('0x13')][_0x244634[_0x8c36('0x34')]]['destinationchannel']=_0x244634[_0x8c36('0x3a')];this[_0x8c36('0x13')][_0x244634[_0x8c36('0x34')]][_0x8c36('0x57')]=dispositions[_[_0x8c36('0x49')](_0x244634[_0x8c36('0x4a')])];}}else{if(this[_0x8c36('0x13')][_0x244634[_0x8c36('0x34')]]){if(this[_0x8c36('0x14')][_0x244634[_0x8c36('0x3a')]['split']('-')[0x0]]){this['channels'][_0x244634[_0x8c36('0x34')]]['UserId']=this['agents'][_0x244634[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]]['id'];this['channels'][_0x244634[_0x8c36('0x34')]][_0x8c36('0x6b')]=this[_0x8c36('0x14')][_0x244634[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]][_0x8c36('0x4e')];}}}if(_0x244634['context']==='from-sip'){if(this[_0x8c36('0x14')][_0x244634[_0x8c36('0x3a')]['split']('-')[0x0]]){this[_0x8c36('0x14')][_0x244634[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]][_0x8c36('0x4c')]=_0x244634[_0x8c36('0x3c')];var _0x2e8c17,_0x5523c8;if(this[_0x8c36('0x13')][_0x244634[_0x8c36('0x34')]]){_0x2e8c17=this[_0x8c36('0x13')][_0x244634[_0x8c36('0x34')]][_0x8c36('0x6c')];_0x5523c8=this[_0x8c36('0x13')][_0x244634['uniqueid']]['queue'];}else if(this[_0x8c36('0x13')][_0x244634[_0x8c36('0x46')]]){_0x2e8c17=this[_0x8c36('0x13')][_0x244634[_0x8c36('0x46')]][_0x8c36('0x6c')];_0x5523c8=this['channels'][_0x244634['linkedid']][_0x8c36('0x9')];}logger[_0x8c36('0x33')](_0x8c36('0x6d'),_0x244634['uniqueid'],util[_0x8c36('0x2b')]({'id':this[_0x8c36('0x14')][_0x244634[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]]['id'],'destaccountcode':this[_0x8c36('0x14')][_0x244634[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]][_0x8c36('0x42')],'destconnectedlinenum':_0x244634[_0x8c36('0x3c')],'routealias':_0x2e8c17,'queue':_0x5523c8||undefined},{'showHidden':![],'depth':null}));this[_0x8c36('0x2e')](util[_0x8c36('0x3f')](_0x8c36('0x40'),this['agents'][_0x244634[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]]['name']),'user:agentconnect',{'id':this[_0x8c36('0x14')][_0x244634[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this['agents'][_0x244634[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]][_0x8c36('0x42')],'destconnectedlinenum':_0x244634[_0x8c36('0x3c')],'routealias':_0x2e8c17,'queue':_0x5523c8||undefined});}}}}catch(_0x5bd7f4){logger[_0x8c36('0x29')](_0x8c36('0x6e'),_0x244634['uniqueid'],util[_0x8c36('0x2b')](_0x5bd7f4,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x8c36('0x2c')]['syncMixMonitorFilename']=function(_0x413519,_0x35ce4a){try{if(this[_0x8c36('0x13')][_0x413519]){logger[_0x8c36('0x30')](_0x8c36('0x6f'),_0x413519,_0x35ce4a);this[_0x8c36('0x13')][_0x413519][_0x8c36('0x70')]=!![];if(_['endsWith'](_0x35ce4a,'.wav49')){_0x35ce4a=_0x35ce4a['replace'](_0x8c36('0x71'),_0x8c36('0x72'));}this[_0x8c36('0x13')][_0x413519][_0x8c36('0x73')]=_0x35ce4a;var _0x1cfbc3=_[_0x8c36('0x74')](this['channels'][_0x413519][_0x8c36('0x75')],{'filename':_0x35ce4a});if(_[_0x8c36('0x5f')](_0x1cfbc3)){this[_0x8c36('0x13')][_0x413519][_0x8c36('0x75')]['push']({'filename':_0x35ce4a,'createdAt':moment()['format'](_0x8c36('0x56')),'mixmonitorid':'','status':_0x8c36('0x76')});}}}catch(_0xa18211){logger['error'](_0x8c36('0x77'),_0x413519,util[_0x8c36('0x2b')](_0xa18211,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x8c36('0x2c')]['syncVarSet']=function(_0x21e27b){try{if(this['isNotNull'](_0x21e27b)){logger[_0x8c36('0x33')](_0x8c36('0x78'),_0x21e27b['uniqueid'],util[_0x8c36('0x2b')](_0x21e27b,{'showHidden':![],'depth':null}));if(this[_0x8c36('0x13')][_0x21e27b[_0x8c36('0x34')]]&&_0x21e27b[_0x8c36('0x3a')]!=_0x8c36('0x45')){if(this[_0x8c36('0x2d')](_0x21e27b[_0x8c36('0x79')])){if(this[_0x8c36('0x2d')](_0x21e27b['variable']['mixmonitor_filename'])){logger[_0x8c36('0x30')](_0x8c36('0x7a'),_0x21e27b[_0x8c36('0x34')],_0x21e27b['value']);this[_0x8c36('0x7b')](_0x21e27b[_0x8c36('0x34')],_0x21e27b['value']);}else if(this['isNotNull'](_0x21e27b[_0x8c36('0x79')][_0x8c36('0x7c')])){logger['info'](_0x8c36('0x7d'),_0x21e27b[_0x8c36('0x34')],_0x21e27b[_0x8c36('0x7e')]);this[_0x8c36('0x13')][_0x21e27b['uniqueid']][_0x8c36('0x32')]=_0x21e27b[_0x8c36('0x7e')];}else if(this[_0x8c36('0x2d')](_0x21e27b[_0x8c36('0x79')]['xmd-callerid'])){logger[_0x8c36('0x30')](_0x8c36('0x7f'),_0x21e27b[_0x8c36('0x34')],_0x21e27b[_0x8c36('0x7e')]);this[_0x8c36('0x13')][_0x21e27b['uniqueid']][_0x8c36('0x80')]=_0x21e27b[_0x8c36('0x7e')];}else if(this[_0x8c36('0x2d')](_0x21e27b['variable'][_0x8c36('0x81')])){logger[_0x8c36('0x30')](_0x8c36('0x82'),_0x21e27b['uniqueid'],_0x21e27b['value']);this['channels'][_0x21e27b['uniqueid']][_0x8c36('0x5e')]=_0x21e27b['value'];}else if(this['isNotNull'](_0x21e27b[_0x8c36('0x79')]['xmd-queue'])){logger[_0x8c36('0x30')](_0x8c36('0x83'),_0x21e27b[_0x8c36('0x34')],_0x21e27b[_0x8c36('0x7e')]['split'](',')[0x0]);this[_0x8c36('0x13')][_0x21e27b[_0x8c36('0x34')]][_0x8c36('0x9')]=_0x21e27b['value'][_0x8c36('0x3b')](',')[0x0];}else if(this[_0x8c36('0x2d')](_0x21e27b[_0x8c36('0x79')][_0x8c36('0x84')])){logger[_0x8c36('0x30')](_0x8c36('0x85'),_0x21e27b[_0x8c36('0x34')],_0x21e27b['value']);this[_0x8c36('0x13')][_0x21e27b[_0x8c36('0x34')]][_0x8c36('0x86')]=_0x21e27b[_0x8c36('0x7e')];}else if(this[_0x8c36('0x2d')](_0x21e27b[_0x8c36('0x79')][_0x8c36('0x87')])){logger[_0x8c36('0x30')](_0x8c36('0x88'),_0x21e27b[_0x8c36('0x34')],_0x21e27b[_0x8c36('0x7e')]);this[_0x8c36('0x13')][_0x21e27b['uniqueid']]['destination']=_0x21e27b[_0x8c36('0x7e')];}else if(this[_0x8c36('0x2d')](_0x21e27b[_0x8c36('0x79')][_0x8c36('0x89')])){logger[_0x8c36('0x30')](_0x8c36('0x8a'),_0x21e27b[_0x8c36('0x34')],_0x21e27b['value']);this['channels'][_0x21e27b['uniqueid']][_0x8c36('0x8b')]=_0x21e27b[_0x8c36('0x7e')];}else if(this[_0x8c36('0x2d')](_0x21e27b[_0x8c36('0x79')]['xmcs-queue'])){logger[_0x8c36('0x30')](_0x8c36('0x8c'),_0x21e27b[_0x8c36('0x34')],_0x21e27b[_0x8c36('0x7e')]);this[_0x8c36('0x13')][_0x21e27b[_0x8c36('0x34')]][_0x8c36('0x9')]=_0x21e27b['value'];}else if(this[_0x8c36('0x2d')](_0x21e27b[_0x8c36('0x79')][_0x8c36('0x8d')])){logger[_0x8c36('0x30')](_0x8c36('0x8e'),_0x21e27b[_0x8c36('0x34')],_0x21e27b[_0x8c36('0x7e')]);this[_0x8c36('0x13')][_0x21e27b['uniqueid']][_0x8c36('0x8f')]=_0x21e27b[_0x8c36('0x7e')];}}}else if(this[_0x8c36('0x2d')](_0x21e27b[_0x8c36('0x79')][_0x8c36('0x90')])){if(_0x21e27b['value']){var _0x678a12=path[_0x8c36('0x91')](_0x21e27b[_0x8c36('0x7e')])[_0x8c36('0x4e')];logger[_0x8c36('0x30')](_0x8c36('0x7a'),_0x678a12,_0x21e27b[_0x8c36('0x7e')]);this[_0x8c36('0x7b')](_0x678a12,_0x21e27b['value']);}}else if(this[_0x8c36('0x13')][_0x21e27b['linkedid']]){if(this['isNotNull'](_0x21e27b['variable'])){if(this[_0x8c36('0x2d')](_0x21e27b[_0x8c36('0x79')][_0x8c36('0x8d')])){logger['info'](_0x8c36('0x8e'),_0x21e27b[_0x8c36('0x46')],_0x21e27b[_0x8c36('0x7e')]);this['channels'][_0x21e27b['linkedid']][_0x8c36('0x92')]=_0x21e27b['value'];}}}}}catch(_0xc8e46e){logger[_0x8c36('0x29')](_0x8c36('0x93'),_0x21e27b['uniqueid'],util[_0x8c36('0x2b')](_0xc8e46e,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x8c36('0x2c')][_0x8c36('0x1f')]=function(_0x5144f1){try{if(this[_0x8c36('0x2d')](_0x5144f1)){logger[_0x8c36('0x33')](_0x8c36('0x94'),_0x5144f1[_0x8c36('0x34')],util[_0x8c36('0x2b')](_0x5144f1,{'showHidden':![],'depth':null}));if(this[_0x8c36('0x15')][_0x5144f1['linkedid']]){if(this[_0x8c36('0x13')][this[_0x8c36('0x15')][_0x5144f1[_0x8c36('0x46')]][_0x8c36('0x46')]]){this[_0x8c36('0x13')][this['blindTransfers'][_0x5144f1['linkedid']]['linkedid']]['uniqueid']=_0x5144f1[_0x8c36('0x34')];this['channels'][this[_0x8c36('0x15')][_0x5144f1[_0x8c36('0x46')]][_0x8c36('0x46')]]['answered']=this[_0x8c36('0x13')][_0x5144f1['uniqueid']][_0x8c36('0x63')];this[_0x8c36('0x13')][this[_0x8c36('0x15')][_0x5144f1[_0x8c36('0x46')]][_0x8c36('0x46')]][_0x8c36('0x64')]=this[_0x8c36('0x13')][_0x5144f1[_0x8c36('0x34')]]['answertime'];this[_0x8c36('0x13')][this['blindTransfers'][_0x5144f1[_0x8c36('0x46')]]['linkedid']]['destinationchannel']=this['channels'][this[_0x8c36('0x15')][_0x5144f1['linkedid']][_0x8c36('0x46')]]['channel'];this[_0x8c36('0x13')][this[_0x8c36('0x15')][_0x5144f1[_0x8c36('0x46')]][_0x8c36('0x46')]][_0x8c36('0x57')]=this[_0x8c36('0x13')][_0x5144f1[_0x8c36('0x34')]]['disposition'];this['channels'][_0x5144f1[_0x8c36('0x34')]]=this[_0x8c36('0x13')][this[_0x8c36('0x15')][_0x5144f1[_0x8c36('0x46')]][_0x8c36('0x46')]];delete this['channels'][this['blindTransfers'][_0x5144f1[_0x8c36('0x46')]]['linkedid']];}else if(this[_0x8c36('0x13')][this[_0x8c36('0x15')][_0x5144f1[_0x8c36('0x46')]][_0x8c36('0x34')]]){this['channels'][this[_0x8c36('0x15')][_0x5144f1[_0x8c36('0x46')]][_0x8c36('0x34')]][_0x8c36('0x34')]=[this[_0x8c36('0x13')][this['blindTransfers'][_0x5144f1[_0x8c36('0x46')]][_0x8c36('0x34')]]['linkedid'],this[_0x8c36('0x13')][this[_0x8c36('0x15')][_0x5144f1[_0x8c36('0x46')]][_0x8c36('0x34')]][_0x8c36('0x46')]=this[_0x8c36('0x13')][this[_0x8c36('0x15')][_0x5144f1[_0x8c36('0x46')]][_0x8c36('0x34')]][_0x8c36('0x34')]][0x0];this[_0x8c36('0x13')][this[_0x8c36('0x15')][_0x5144f1[_0x8c36('0x46')]]['uniqueid']]['answered']=this['channels'][_0x5144f1['uniqueid']][_0x8c36('0x63')];this[_0x8c36('0x13')][this[_0x8c36('0x15')][_0x5144f1['linkedid']][_0x8c36('0x34')]][_0x8c36('0x64')]=this[_0x8c36('0x13')][_0x5144f1['uniqueid']][_0x8c36('0x64')];this[_0x8c36('0x13')][this[_0x8c36('0x15')][_0x5144f1[_0x8c36('0x46')]][_0x8c36('0x34')]][_0x8c36('0x69')]=this['channels'][this[_0x8c36('0x15')][_0x5144f1[_0x8c36('0x46')]]['uniqueid']][_0x8c36('0x3a')];this[_0x8c36('0x13')][this[_0x8c36('0x15')][_0x5144f1[_0x8c36('0x46')]][_0x8c36('0x34')]][_0x8c36('0x57')]=this[_0x8c36('0x13')][_0x5144f1['uniqueid']][_0x8c36('0x57')];this[_0x8c36('0x13')][_0x5144f1['uniqueid']]=this[_0x8c36('0x13')][this['blindTransfers'][_0x5144f1[_0x8c36('0x46')]][_0x8c36('0x34')]];delete this[_0x8c36('0x13')][this[_0x8c36('0x15')][_0x5144f1[_0x8c36('0x46')]][_0x8c36('0x34')]];}}if(this[_0x8c36('0x13')][_0x5144f1[_0x8c36('0x34')]]){logger[_0x8c36('0x30')](_0x8c36('0x95'),_0x5144f1[_0x8c36('0x34')],_0x5144f1['cause-txt']);var _0x583a27=moment();this[_0x8c36('0x13')][_0x5144f1[_0x8c36('0x34')]][_0x8c36('0x96')]=_0x583a27['format'](_0x8c36('0x56'));this[_0x8c36('0x13')][_0x5144f1['uniqueid']][_0x8c36('0x54')]=_0x583a27['diff'](this[_0x8c36('0x13')][_0x5144f1['uniqueid']][_0x8c36('0x48')],_0x8c36('0x67'));if(this['channels'][_0x5144f1[_0x8c36('0x34')]][_0x8c36('0x63')]){this[_0x8c36('0x13')][_0x5144f1[_0x8c36('0x34')]][_0x8c36('0x97')]=_0x583a27[_0x8c36('0x66')](this['channels'][_0x5144f1[_0x8c36('0x34')]]['answertime'],_0x8c36('0x67'));this['channels'][_0x5144f1[_0x8c36('0x34')]][_0x8c36('0x65')]=this['channels'][_0x5144f1[_0x8c36('0x34')]]['duration']-this[_0x8c36('0x13')][_0x5144f1[_0x8c36('0x34')]]['billableseconds'];}if(_0x5144f1[_0x8c36('0x38')]===_0x8c36('0x39')){if(this[_0x8c36('0x14')][_0x5144f1[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]]){this[_0x8c36('0x14')][_0x5144f1[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]]=_[_0x8c36('0x98')](this[_0x8c36('0x14')][_0x5144f1[_0x8c36('0x3a')]['split']('-')[0x0]],['destconnectedlinenum']);logger[_0x8c36('0x33')](_0x8c36('0x99'),_0x5144f1[_0x8c36('0x34')],util[_0x8c36('0x2b')]({'id':this['agents'][_0x5144f1[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]]['id'],'destaccountcode':this['agents'][_0x5144f1[_0x8c36('0x3a')]['split']('-')[0x0]][_0x8c36('0x42')]},{'showHidden':![],'depth':null}));this[_0x8c36('0x2e')](util[_0x8c36('0x3f')](_0x8c36('0x40'),this['agents'][_0x5144f1[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]][_0x8c36('0x4e')]),_0x8c36('0x9a'),{'id':this[_0x8c36('0x14')][_0x5144f1[_0x8c36('0x3a')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0x8c36('0x14')][_0x5144f1[_0x8c36('0x3a')][_0x8c36('0x3b')]('-')[0x0]]['accountcode']});for(var _0x3fe1f7=0x0;_0x3fe1f7<Object[_0x8c36('0x37')](this['agents'])[_0x8c36('0x9b')];_0x3fe1f7++){var _0x3c1d83=Object[_0x8c36('0x37')](this['agents'])[_0x3fe1f7];var _0x491e5d=this[_0x8c36('0x14')][_0x3c1d83];if(_0x491e5d[_0x8c36('0x42')]===Number(_0x5144f1[_0x8c36('0x3e')])){this[_0x8c36('0x2e')](util[_0x8c36('0x3f')]('user:%s',_0x491e5d[_0x8c36('0x4e')]),_0x8c36('0x9a'),{'id':_0x491e5d['id'],'destaccountcode':_0x491e5d[_0x8c36('0x42')],'transfer':this['channels'][_0x5144f1[_0x8c36('0x34')]][_0x8c36('0x9c')]});break;}}}}var _0x4df13e=this;Promise['resolve']()['then'](function(){var _0x4db7af=_0x4df13e[_0x8c36('0x13')][_0x5144f1['uniqueid']];if(typeof _0x4db7af[_0x8c36('0x9c')]===_0x8c36('0x9d'))return;if(_['isEmpty'](_0x4db7af[_0x8c36('0x75')]))return;return RpcSetting[_0x8c36('0x9e')]()[_0x8c36('0x9f')](function(_0x18274b){if(!_0x18274b[_0x8c36('0xa0')])return;return Promise[_0x8c36('0xa1')]()['then'](function(){return ami[_0x8c36('0xa2')]({'action':'StopMixMonitor','channel':_0x4db7af['channel']})[_0x8c36('0xa3')](function(){});})[_0x8c36('0x9f')](function(){return ami[_0x8c36('0xa2')]({'action':'StopMixMonitor','channel':_0x4db7af[_0x8c36('0x69')]})[_0x8c36('0xa3')](function(){})['finally'](function(){var _0x4b07f9=_0x4df13e['agents'][_0x4db7af[_0x8c36('0x69')][_0x8c36('0x3b')]('-')[0x0]];if(!_0x4b07f9)return;io[_0x8c36('0x2e')]('webbar:stopmonitors',{'agentId':_0x4b07f9['id'],'uniqueid':_0x4db7af[_0x8c36('0x34')]});});});});})[_0x8c36('0x9f')](function(){if(_0x5144f1['event']===_0x8c36('0xa4')){_0x4df13e[_0x8c36('0x15')][_0x5144f1[_0x8c36('0x34')]]=_0x5144f1;}else{if(_0x4df13e['channels'][_0x5144f1[_0x8c36('0x34')]][_0x8c36('0x5e')]===_0x8c36('0xa5')&&_0x4df13e['blindTransfers'][_0x5144f1[_0x8c36('0x34')]]){_0x4df13e['channels'][_0x5144f1['uniqueid']][_0x8c36('0x34')]=[_0x4df13e['channels'][_0x5144f1['uniqueid']][_0x8c36('0x46')],_0x4df13e['channels'][_0x5144f1['uniqueid']][_0x8c36('0x46')]=_0x4df13e[_0x8c36('0x13')][_0x5144f1[_0x8c36('0x34')]][_0x8c36('0x34')]][0x0];delete _0x4df13e['blindTransfers'][_0x5144f1[_0x8c36('0x34')]];}}logger[_0x8c36('0x33')](_0x8c36('0xa6'),_0x5144f1['uniqueid'],util[_0x8c36('0x2b')](_0x4df13e[_0x8c36('0x13')][_0x5144f1[_0x8c36('0x34')]],{'showHidden':![],'depth':null}));ami[_0x8c36('0x2e')]('custom:voiceCallReport',_0x4df13e['channels'][_0x5144f1[_0x8c36('0x34')]]);delete _0x4df13e[_0x8c36('0x13')][_0x5144f1['uniqueid']];});}}}catch(_0x2dc83c){logger['error'](_0x8c36('0xa7'),_0x5144f1[_0x8c36('0x34')],util[_0x8c36('0x2b')](_0x2dc83c,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0x8c36('0x22')]=function(_0x361a8c){try{if(this[_0x8c36('0x2d')](_0x361a8c)){logger[_0x8c36('0x30')]('[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s',_0x361a8c['uniqueid'],_0x361a8c[_0x8c36('0xa8')],_0x361a8c[_0x8c36('0xa9')]);logger[_0x8c36('0x33')](_0x8c36('0xaa'),_0x361a8c[_0x8c36('0x34')],util['inspect'](_0x361a8c,{'showHidden':![],'depth':null}));var _0x23f1eb;if(this[_0x8c36('0x13')][_0x361a8c[_0x8c36('0xab')]]){this[_0x8c36('0x13')][_0x361a8c[_0x8c36('0xab')]][_0x8c36('0xac')]=_0x361a8c[_0x8c36('0xa8')];this[_0x8c36('0x13')][_0x361a8c['transfereeuniqueid']][_0x8c36('0xad')]=_0x361a8c[_0x8c36('0xa9')];if(this[_0x8c36('0x13')][_0x361a8c[_0x8c36('0xae')]]){_0x23f1eb=this[_0x8c36('0x13')][_0x361a8c[_0x8c36('0xae')]];this[_0x8c36('0x13')][_0x361a8c[_0x8c36('0xae')]]=this[_0x8c36('0x13')][_0x361a8c['transfereeuniqueid']];this[_0x8c36('0x13')][_0x361a8c[_0x8c36('0xab')]]=_0x23f1eb;}this[_0x8c36('0x13')][_0x361a8c[_0x8c36('0xae')]][_0x8c36('0x9c')]=_0x8c36('0xaf');}else if(this[_0x8c36('0x13')][_0x361a8c['transfertargetuniqueid']]){this[_0x8c36('0x13')][_0x361a8c['transfertargetuniqueid']]['transfercalleridnum']=_0x361a8c[_0x8c36('0xa8')];this[_0x8c36('0x13')][_0x361a8c[_0x8c36('0xb0')]][_0x8c36('0xad')]=_0x361a8c['transfertargetcalleridnum'];if(this[_0x8c36('0x13')][_0x361a8c[_0x8c36('0xb1')]]){_0x23f1eb=this[_0x8c36('0x13')][_0x361a8c[_0x8c36('0xb1')]];this[_0x8c36('0x13')][_0x361a8c['origtransfereruniqueid']]=this[_0x8c36('0x13')][_0x361a8c[_0x8c36('0xb0')]];this[_0x8c36('0x13')][_0x361a8c[_0x8c36('0xb0')]]=_0x23f1eb;}this[_0x8c36('0x13')][_0x361a8c['transfertargetuniqueid']][_0x8c36('0x9c')]='ATTENDED';}if((this[_0x8c36('0x13')][_0x361a8c[_0x8c36('0xb1')]]||this[_0x8c36('0x13')][_0x361a8c[_0x8c36('0xb2')]])&&this[_0x8c36('0x13')][_0x361a8c[_0x8c36('0xae')]]){var _0x5885d3=_['some']([this['channels'][_0x361a8c['origtransfereruniqueid']],this['channels'][_0x361a8c[_0x8c36('0xb2')]],this['channels'][_0x361a8c[_0x8c36('0xae')]]],function(_0x21aba9){return _0x21aba9&&_0x21aba9[_0x8c36('0x5e')]===_0x8c36('0xa5')&&_0x21aba9[_0x8c36('0xb3')];});if(_0x5885d3){if(this['channels'][_0x361a8c['origtransfereruniqueid']])this[_0x8c36('0x13')][_0x361a8c[_0x8c36('0xb1')]][_0x8c36('0x9c')]=_0x8c36('0xaf');if(this[_0x8c36('0x13')][_0x361a8c[_0x8c36('0xb2')]])this[_0x8c36('0x13')][_0x361a8c[_0x8c36('0xb2')]][_0x8c36('0x9c')]=_0x8c36('0xaf');this[_0x8c36('0x13')][_0x361a8c[_0x8c36('0xae')]][_0x8c36('0x9c')]=_0x8c36('0xaf');}}}}catch(_0xac1e8f){logger[_0x8c36('0x29')]('[%s][voiceCallReport][attendedtransfer]',_0x361a8c[_0x8c36('0x34')],util[_0x8c36('0x2b')](_0xac1e8f,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x8c36('0x2c')]['syncBlindTransfer']=function(_0x171f05){try{if(this[_0x8c36('0x2d')](_0x171f05)){logger['info'](_0x8c36('0xb4'),_0x171f05['uniqueid'],_0x171f05[_0x8c36('0xb5')],_0x171f05[_0x8c36('0xb6')]);logger[_0x8c36('0x33')]('[%s][voiceCallReport][blindtransfer]\x20event:',_0x171f05['uniqueid'],util[_0x8c36('0x2b')](_0x171f05,{'showHidden':![],'depth':null}));if(this[_0x8c36('0x13')][_0x171f05[_0x8c36('0xab')]]){this[_0x8c36('0x13')][_0x171f05[_0x8c36('0xab')]][_0x8c36('0xac')]=_0x171f05[_0x8c36('0xb5')];this['channels'][_0x171f05[_0x8c36('0xab')]][_0x8c36('0xad')]=_0x171f05[_0x8c36('0xb6')];this['channels'][_0x171f05[_0x8c36('0xab')]][_0x8c36('0x9c')]=_0x8c36('0xb7');this[_0x8c36('0x1f')]({'event':_0x8c36('0xa4'),'uniqueid':_0x171f05[_0x8c36('0xab')],'linkedid':_0x171f05[_0x8c36('0xb8')],'context':_0x171f05[_0x8c36('0x38')],'channel':_0x171f05[_0x8c36('0xb9')]});}else{this[_0x8c36('0x13')][_0x171f05[_0x8c36('0xb8')]][_0x8c36('0x9c')]=_0x8c36('0xb7');this[_0x8c36('0x1f')]({'event':_0x8c36('0xa4'),'uniqueid':_0x171f05['transfereruniqueid'],'linkedid':_0x171f05['transfereeuniqueid'],'context':_0x171f05[_0x8c36('0x38')],'channel':_0x171f05[_0x8c36('0xb9')]});}}}catch(_0x318b9d){logger['error'](_0x8c36('0xba'),_0x171f05[_0x8c36('0x34')],util[_0x8c36('0x2b')](_0x318b9d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x8c36('0x2c')][_0x8c36('0x26')]=function(_0x1fb234){try{if(this[_0x8c36('0x2d')](_0x1fb234)){logger[_0x8c36('0x33')](_0x8c36('0xbb'),_0x1fb234['uniqueid'],util[_0x8c36('0x2b')](_0x1fb234,{'showHidden':![],'depth':null}));if(this[_0x8c36('0x13')][_0x1fb234[_0x8c36('0x34')]]){if(!_[_0x8c36('0x5f')](this[_0x8c36('0x13')][_0x1fb234[_0x8c36('0x34')]]['answertime'])){this[_0x8c36('0x13')][_0x1fb234[_0x8c36('0x34')]][_0x8c36('0xbc')]=moment()[_0x8c36('0x3f')]('YYYY-MM-DD\x20HH:mm:ss');logger['info'](_0x8c36('0xbd'),_0x1fb234[_0x8c36('0x34')],this[_0x8c36('0x13')][_0x1fb234['uniqueid']][_0x8c36('0xbc')]);}}}}catch(_0x2bd60d){logger[_0x8c36('0x29')](_0x8c36('0xbe'),_0x1fb234[_0x8c36('0x34')],util['inspect'](_0x2bd60d,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0x8c36('0x2c')][_0x8c36('0x28')]=function(_0x19aee2){try{if(this['isNotNull'](_0x19aee2)){logger[_0x8c36('0x33')](_0x8c36('0xbf'),_0x19aee2[_0x8c36('0x34')],util[_0x8c36('0x2b')](_0x19aee2,{'showHidden':![],'depth':null}));if(this[_0x8c36('0x13')][_0x19aee2['uniqueid']]){if(!_[_0x8c36('0x5f')](this[_0x8c36('0x13')][_0x19aee2['uniqueid']][_0x8c36('0xbc')])){this['channels'][_0x19aee2[_0x8c36('0x34')]]['mohtime']+=moment()['milliseconds'](0x0)[_0x8c36('0x66')](this[_0x8c36('0x13')][_0x19aee2[_0x8c36('0x34')]]['mohstarttime'],_0x8c36('0x67'));logger['info'](_0x8c36('0xc0'),_0x19aee2[_0x8c36('0x34')],this[_0x8c36('0x13')][_0x19aee2[_0x8c36('0x34')]][_0x8c36('0xc1')]);delete this['channels'][_0x19aee2[_0x8c36('0x34')]]['mohstarttime'];}}}}catch(_0x3c011e){logger['error'](_0x8c36('0xc2'),_0x19aee2[_0x8c36('0x34')],util[_0x8c36('0x2b')](_0x3c011e,{'showHidden':![],'depth':null}));}};module[_0x8c36('0xc3')]=VoiceCallReport;
\ No newline at end of file
+var _0x984b=['billableseconds','omit','[%s][voiceCallReport][hangup]\x20sending\x20user:agentcomplete\x20event:','user:agentcomplete','length','transferType','then','isEmpty','getSettings','stopRecordingOnTransfer','resolve','StopMixMonitor','catch','Action','finally','webbar:stopmonitors','event','outbound','[%s][voiceCallReport][hangup]\x20sending\x20hangup\x20event:','custom:voiceCallReport','[%s][voiceCallReport][attendedtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','origtransferercalleridnum','transfertargetcalleridnum','[%s][voiceCallReport][attendedtransfer]\x20event:','transfereeuniqueid','transfercalleridnum','transferconnectedlinenum','secondtransfereruniqueid','ATTENDED','transfertargetuniqueid','origtransfereruniqueid','origtransfererlinkedid','routeid','[%s][voiceCallReport][attendedtransfer]','[%s][voiceCallReport][blindtransfer]\x20transfercalleridnum:%s\x20transferconnectedlinenum:%s','transfereecalleridnum','extension','[%s][voiceCallReport][blindtransfer]\x20event:','BlindTransfer','transfereruniqueid','[%s][voiceCallReport][blindtransfer]','[%s][voiceCallReport][musiconholdstart]\x20event:','mohstarttime','[%s][voiceCallReport][musiconholdstop]\x20event:','mohtime','milliseconds','[%s][voiceCallReport][musiconholdstop]\x20mohtime:%s','[%s][voiceCallReport][musiconholdstop]','path','ioredis','../../../config/environment','../ami','../model/channel','queue','agi','playback','voicemail','FAILED','NO\x20ANSWER','ANSWERED','BUSY','redis','defaults','localhost','channels','agents','blindTransfers','syncNewExten','bind','syncNewChannel','newstate','syncNewState','varset','hangup','syncHangup','newcallerid','syncNewCallerId','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','syncMusicOnHoldStart','syncMusicOnHoldStop','info','[voiceCallReport][coreshowchannels]\x20started','actionCoreShowChannels','error','inspect','prototype','isNotNull','isUndefined','emit','[%s][voiceCallReport][newcallerid]\x20calleridname:%s\x20calleridnum:%s','calleridname','calleridnum','debug','uniqueid','linkedid','merge','pick','keys','channel','split','exten','destconnectedlinenum','connectedlinenum','user:%s','name','user:agentconnect','[%s][voiceCallReport][newcallerid]','OutgoingSpoolFailed','context','starttime','format','YYYY-MM-DD\x20HH:mm:ss','disposition','toNumber','channelstate','from-sip','accountcode','[%s][voiceCallReport][newchannel]','[%s][voiceCallReport][newexten]\x20event:','application','applicationdata','appdata','startsWith','CDR(routeAlias)','toLowerCase','[%s][voiceCallReport][newexten]\x20application:%s\x20appdata:%s','subtract','duration','seconds','includes','lastapplication','lastdata','cdr(','match','isNil','[%s][voiceCallReport][newexten]','[%s][voiceCallReport][newstate]\x20linkedid:%s\x20calleridname:%s\x20calleridnum:%s','[%s][voiceCallReport][newstate]\x20event:','answered','holdtime','diff','UserId','membername','xcally-motion-preview','destinationchannel','routealias','[%s][voiceCallReport][newstate]\x20sending\x20user:agentconnect\x20event:','[%s][voiceCallReport][mixMonitorFilename]\x20monitorFilename:%s','endsWith','.wav49','monitorFilename','find','monitors','push','rec','[%s][voiceCallReport][mixMonitorFilename]','[%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','xmd-callerid','[%s][voiceCallReport][varset]\x20variable:xmd-callerid\x20value:%s','callerid','xmd-cdrtype','[%s][voiceCallReport][varset]\x20variable:xmd-cdrtype\x20value:%s','type','[%s][voiceCallReport][varset]\x20variable:xmd-queue\x20value:%s','xmd-destination','[%s][voiceCallReport][varset]\x20variable:xmd-destination\x20value:%s','destination','xmd-callerid-preview','[%s][voiceCallReport][varset]\x20variable:xmd-callerid-preview\x20value:%s','calleridpreview','xmcs-queue','[%s][voiceCallReport][varset]\x20variable:xmcs-queue\x20value:%s','sipcallid','[%s][voiceCallReport][varset]\x20variable:sipcallid\x20value:%s','parse','syncMixMonitorFilename','sipcalllinkedid','[%s][voiceCallReport][varset]','[%s][voiceCallReport][hangup]\x20event:','answertime','cause-txt'];(function(_0x404a53,_0x9c5cf0){var _0x2b5a55=function(_0x1a0570){while(--_0x1a0570){_0x404a53['push'](_0x404a53['shift']());}};_0x2b5a55(++_0x9c5cf0);}(_0x984b,0xee));var _0xb984=function(_0x3b29c1,_0x50e7d8){_0x3b29c1=_0x3b29c1-0x0;var _0x4fe3bd=_0x984b[_0x3b29c1];return _0x4fe3bd;};'use strict';var _=require('lodash');var moment=require('moment');var util=require('util');var path=require(_0xb984('0x0'));var Redis=require(_0xb984('0x1'));var config=require(_0xb984('0x2'));var logger=require('../../../config/logger')('ami');var ami=require(_0xb984('0x3'));var Channel=require(_0xb984('0x4'));var RpcSetting=require('../rpc/setting');var applications=['set',_0xb984('0x5'),_0xb984('0x6'),'dial',_0xb984('0x7'),_0xb984('0x8')];var dispositions=['NO\x20ANSWER',_0xb984('0x9'),'FAILED',_0xb984('0xa'),_0xb984('0xa'),_0xb984('0xa'),_0xb984('0xb'),_0xb984('0xc'),_0xb984('0x9'),_0xb984('0x9'),_0xb984('0x9')];config[_0xb984('0xd')]=_[_0xb984('0xe')](config[_0xb984('0xd')],{'host':_0xb984('0xf'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb984('0xd')]));function VoiceCallReport(_0x4b9c75){this[_0xb984('0x10')]=_0x4b9c75[_0xb984('0x10')];this['agents']=_0x4b9c75[_0xb984('0x11')];this[_0xb984('0x12')]={};ami['on']('coreshowchannel',this[_0xb984('0x13')][_0xb984('0x14')](this));ami['on']('newexten',this[_0xb984('0x13')][_0xb984('0x14')](this));ami['on']('newchannel',this[_0xb984('0x15')]['bind'](this));ami['on'](_0xb984('0x16'),this[_0xb984('0x17')][_0xb984('0x14')](this));ami['on'](_0xb984('0x18'),this['syncVarSet'][_0xb984('0x14')](this));ami['on'](_0xb984('0x19'),this[_0xb984('0x1a')][_0xb984('0x14')](this));ami['on'](_0xb984('0x1b'),this[_0xb984('0x1c')]['bind'](this));ami['on'](_0xb984('0x1d'),this[_0xb984('0x1e')][_0xb984('0x14')](this));ami['on'](_0xb984('0x1f'),this[_0xb984('0x20')][_0xb984('0x14')](this));ami['on']('musiconholdstart',this[_0xb984('0x21')][_0xb984('0x14')](this));ami['on']('musiconholdstop',this[_0xb984('0x22')][_0xb984('0x14')](this));try{logger[_0xb984('0x23')](_0xb984('0x24'));ami[_0xb984('0x25')]();}catch(_0x286033){logger[_0xb984('0x26')]('[voiceCallReport][coreshowchannels]',util[_0xb984('0x27')](_0x286033,{'showHidden':![],'depth':null}));}}VoiceCallReport[_0xb984('0x28')][_0xb984('0x29')]=function(_0x5d4d38){return _0x5d4d38!==null&&!_[_0xb984('0x2a')](_0x5d4d38);};VoiceCallReport[_0xb984('0x28')][_0xb984('0x2b')]=function(_0x2d0450,_0x1f7b62,_0x24b278){io['to'](_0x2d0450)[_0xb984('0x2b')](_0x1f7b62,_0x24b278);};VoiceCallReport[_0xb984('0x28')]['syncNewCallerId']=function(_0x249d47){try{if(this[_0xb984('0x29')](_0x249d47)){logger[_0xb984('0x23')](_0xb984('0x2c'),_0x249d47['uniqueid'],_0x249d47[_0xb984('0x2d')],_0x249d47[_0xb984('0x2e')]);logger[_0xb984('0x2f')]('[%s][voiceCallReport][newcallerid]\x20event:',_0x249d47[_0xb984('0x30')],util[_0xb984('0x27')](_0x249d47,{'showHidden':![],'depth':null}));if(_0x249d47[_0xb984('0x30')]===_0x249d47[_0xb984('0x31')]){if(!_['isUndefined'](this['channels'][_0x249d47['uniqueid']])){_[_0xb984('0x32')](this[_0xb984('0x10')][_0x249d47['uniqueid']],_[_0xb984('0x33')](_0x249d47,_[_0xb984('0x34')](this[_0xb984('0x10')][_0x249d47[_0xb984('0x30')]])));}}if(_0x249d47['context']==='from-sip'){if(this[_0xb984('0x11')][_0x249d47[_0xb984('0x35')][_0xb984('0x36')]('-')[0x0]]){if(_0x249d47[_0xb984('0x37')]=='xcally-motion-preview'){this[_0xb984('0x11')][_0x249d47[_0xb984('0x35')][_0xb984('0x36')]('-')[0x0]][_0xb984('0x38')]=_0x249d47[_0xb984('0x39')];this[_0xb984('0x2b')](util['format'](_0xb984('0x3a'),this[_0xb984('0x11')][_0x249d47[_0xb984('0x35')][_0xb984('0x36')]('-')[0x0]][_0xb984('0x3b')]),_0xb984('0x3c'),{'destaccountcode':this['agents'][_0x249d47[_0xb984('0x35')][_0xb984('0x36')]('-')[0x0]]['accountcode'],'destconnectedlinenum':_0x249d47['connectedlinenum']});}}}}}catch(_0x13a950){logger['error'](_0xb984('0x3d'),_0x249d47[_0xb984('0x30')],util['inspect'](_0x13a950,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb984('0x28')]['syncNewChannel']=function(_0x3cfc94){try{if(this['isNotNull'](_0x3cfc94)){logger[_0xb984('0x2f')]('[%s][voiceCallReport][newchannel]\x20event:',_0x3cfc94['uniqueid'],util[_0xb984('0x27')](_0x3cfc94,{'showHidden':![],'depth':null}));if(this[_0xb984('0x10')][_0x3cfc94['uniqueid']])return;if(_0x3cfc94[_0xb984('0x35')]===_0xb984('0x3e'))return;if(_0x3cfc94['uniqueid']!==_0x3cfc94[_0xb984('0x31')]&&!this[_0xb984('0x12')][_0x3cfc94[_0xb984('0x31')]])return;logger[_0xb984('0x23')]('[%s][voiceCallReport][newchannel]\x20context:%s\x20exten:%s',_0x3cfc94[_0xb984('0x30')],_0x3cfc94[_0xb984('0x3f')],_0x3cfc94[_0xb984('0x37')]);this[_0xb984('0x10')][_0x3cfc94[_0xb984('0x30')]]=new Channel();this[_0xb984('0x10')][_0x3cfc94[_0xb984('0x30')]][_0xb984('0x40')]=moment()[_0xb984('0x41')](_0xb984('0x42'));this['channels'][_0x3cfc94[_0xb984('0x30')]][_0xb984('0x43')]=dispositions[_[_0xb984('0x44')](_0x3cfc94[_0xb984('0x45')])];_[_0xb984('0x32')](this[_0xb984('0x10')][_0x3cfc94[_0xb984('0x30')]],_[_0xb984('0x33')](_0x3cfc94,_['keys'](this['channels'][_0x3cfc94[_0xb984('0x30')]])));if(_0x3cfc94['context']===_0xb984('0x46')){if(this[_0xb984('0x11')][_0x3cfc94[_0xb984('0x35')][_0xb984('0x36')]('-')[0x0]]){if(_['isUndefined'](this[_0xb984('0x11')][_0x3cfc94[_0xb984('0x35')]['split']('-')[0x0]][_0xb984('0x38')])){this[_0xb984('0x11')][_0x3cfc94[_0xb984('0x35')][_0xb984('0x36')]('-')[0x0]][_0xb984('0x38')]=_0x3cfc94[_0xb984('0x37')];logger[_0xb984('0x2f')]('[%s][voiceCallReport][newchannel]\x20sending\x20user:agentconnect\x20event:',_0x3cfc94[_0xb984('0x30')],util[_0xb984('0x27')]({'id':this['agents'][_0x3cfc94['channel'][_0xb984('0x36')]('-')[0x0]]['id'],'destaccountcode':this[_0xb984('0x11')][_0x3cfc94[_0xb984('0x35')][_0xb984('0x36')]('-')[0x0]][_0xb984('0x47')],'destconnectedlinenum':_0x3cfc94['exten']},{'showHidden':![],'depth':null}));this[_0xb984('0x2b')](util[_0xb984('0x41')](_0xb984('0x3a'),this[_0xb984('0x11')][_0x3cfc94[_0xb984('0x35')][_0xb984('0x36')]('-')[0x0]][_0xb984('0x3b')]),_0xb984('0x3c'),{'id':this[_0xb984('0x11')][_0x3cfc94[_0xb984('0x35')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0xb984('0x11')][_0x3cfc94[_0xb984('0x35')]['split']('-')[0x0]][_0xb984('0x47')],'destconnectedlinenum':_0x3cfc94[_0xb984('0x37')]});}}}}}catch(_0x3c6e79){logger[_0xb984('0x26')](_0xb984('0x48'),_0x3cfc94[_0xb984('0x30')],util[_0xb984('0x27')](_0x3c6e79,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb984('0x28')][_0xb984('0x13')]=function(_0x7aa9a1){try{if(this['isNotNull'](_0x7aa9a1)){logger[_0xb984('0x2f')](_0xb984('0x49'),_0x7aa9a1[_0xb984('0x30')],util[_0xb984('0x27')](_0x7aa9a1,{'showHidden':![],'depth':null}));if(_0x7aa9a1[_0xb984('0x35')]===_0xb984('0x3e')||_0x7aa9a1[_0xb984('0x37')]==='h')return;if(_0x7aa9a1[_0xb984('0x30')]===_0x7aa9a1[_0xb984('0x31')]||this['blindTransfers'][_0x7aa9a1[_0xb984('0x31')]]){_0x7aa9a1[_0xb984('0x4a')]=_0x7aa9a1[_0xb984('0x4a')]['toLowerCase']();_0x7aa9a1[_0xb984('0x4b')]=_0x7aa9a1[_0xb984('0x4c')]||_0x7aa9a1['applicationdata'];if(_0x7aa9a1[_0xb984('0x4c')]&&!_0x7aa9a1['appdata'][_0xb984('0x4d')](_0xb984('0x4e'))&&_0x7aa9a1['application']!==_0xb984('0x5')){_0x7aa9a1[_0xb984('0x4b')]=_0x7aa9a1[_0xb984('0x4b')][_0xb984('0x4f')]();}logger[_0xb984('0x23')](_0xb984('0x50'),_0x7aa9a1['uniqueid'],_0x7aa9a1[_0xb984('0x4a')],_0x7aa9a1['applicationdata']);if(_[_0xb984('0x2a')](this[_0xb984('0x10')][_0x7aa9a1[_0xb984('0x30')]])){this['channels'][_0x7aa9a1['uniqueid']]=new Channel();this[_0xb984('0x10')][_0x7aa9a1[_0xb984('0x30')]]['starttime']=_0x7aa9a1['duration']?moment()[_0xb984('0x51')](moment[_0xb984('0x52')](_0x7aa9a1[_0xb984('0x52')])[_0xb984('0x53')](),_0xb984('0x53'))[_0xb984('0x41')]('YYYY-MM-DD\x20HH:mm:ss'):moment()['format'](_0xb984('0x42'));this[_0xb984('0x10')][_0x7aa9a1['uniqueid']][_0xb984('0x43')]=_0xb984('0xa');}_[_0xb984('0x32')](this[_0xb984('0x10')][_0x7aa9a1['uniqueid']],_['pick'](_0x7aa9a1,_[_0xb984('0x34')](this[_0xb984('0x10')][_0x7aa9a1[_0xb984('0x30')]])));if(_[_0xb984('0x54')](applications,_0x7aa9a1[_0xb984('0x4a')])){this[_0xb984('0x10')][_0x7aa9a1['uniqueid']][_0xb984('0x55')]=_0x7aa9a1[_0xb984('0x4a')];this[_0xb984('0x10')][_0x7aa9a1[_0xb984('0x30')]][_0xb984('0x56')]=_0x7aa9a1[_0xb984('0x4b')];if(_0x7aa9a1['application']==='set'&&_['startsWith'](_0x7aa9a1[_0xb984('0x4b')][_0xb984('0x4f')](),_0xb984('0x57'))){var _0x475d49=_0x7aa9a1[_0xb984('0x4b')]['split']('=');var _0x434bca=_0x475d49[0x0][_0xb984('0x4f')]()[_0xb984('0x58')](/cdr\((.*)\)/);if(_0x434bca){if(_0x434bca[0x1]==='type'&&!_[_0xb984('0x59')](this[_0xb984('0x10')][_0x7aa9a1['uniqueid']][_0x434bca[0x1]]))return;this['channels'][_0x7aa9a1[_0xb984('0x30')]][_0x434bca[0x1]]=_0x475d49[0x1];}}else if(_0x7aa9a1['application']==='queue'){this[_0xb984('0x10')][_0x7aa9a1['uniqueid']][_0xb984('0x5')]=_0x7aa9a1[_0xb984('0x4b')][_0xb984('0x36')](',')[0x0];}}}}}catch(_0x146f71){logger[_0xb984('0x26')](_0xb984('0x5a'),_0x7aa9a1[_0xb984('0x30')],util[_0xb984('0x27')](_0x146f71,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb984('0x28')][_0xb984('0x17')]=function(_0x742a0f){try{if(this[_0xb984('0x29')](_0x742a0f)){logger['info'](_0xb984('0x5b'),_0x742a0f[_0xb984('0x30')],_0x742a0f[_0xb984('0x31')],_0x742a0f['calleridname'],_0x742a0f['calleridnum']);logger[_0xb984('0x2f')](_0xb984('0x5c'),_0x742a0f[_0xb984('0x30')],util['inspect'](_0x742a0f,{'showHidden':![],'depth':null}));if(_0x742a0f[_0xb984('0x45')]!=='6')return;if(_0x742a0f[_0xb984('0x30')]!==_0x742a0f[_0xb984('0x31')]){var _0x3508cb=moment();if(this[_0xb984('0x10')][_0x742a0f[_0xb984('0x31')]]){if(!this[_0xb984('0x10')][_0x742a0f[_0xb984('0x31')]][_0xb984('0x5d')]){this[_0xb984('0x10')][_0x742a0f[_0xb984('0x31')]][_0xb984('0x5d')]=!![];this[_0xb984('0x10')][_0x742a0f[_0xb984('0x31')]]['answertime']=_0x3508cb[_0xb984('0x41')]('YYYY-MM-DD\x20HH:mm:ss');if(this[_0xb984('0x10')][_0x742a0f['linkedid']][_0xb984('0x40')]){this[_0xb984('0x10')][_0x742a0f[_0xb984('0x31')]][_0xb984('0x5e')]=_0x3508cb[_0xb984('0x5f')](this[_0xb984('0x10')][_0x742a0f[_0xb984('0x31')]][_0xb984('0x40')],_0xb984('0x53'));}}this[_0xb984('0x10')][_0x742a0f[_0xb984('0x31')]][_0xb984('0x31')]=_0x742a0f[_0xb984('0x30')];if(_0x742a0f['calleridnum']!=='xcally-motion-preview'){this[_0xb984('0x10')][_0x742a0f[_0xb984('0x31')]][_0xb984('0x39')]=_0x742a0f['calleridnum'];}this[_0xb984('0x10')][_0x742a0f[_0xb984('0x31')]]['connectedlinename']=_0x742a0f['calleridname'];this['channels'][_0x742a0f[_0xb984('0x31')]]['destinationchannel']=_0x742a0f['channel'];this['channels'][_0x742a0f[_0xb984('0x31')]][_0xb984('0x43')]=dispositions[_[_0xb984('0x44')](_0x742a0f[_0xb984('0x45')])];if(this['agents'][_0x742a0f['channel'][_0xb984('0x36')]('-')[0x0]]){this[_0xb984('0x10')][_0x742a0f[_0xb984('0x31')]][_0xb984('0x60')]=this[_0xb984('0x11')][_0x742a0f['channel'][_0xb984('0x36')]('-')[0x0]]['id'];this[_0xb984('0x10')][_0x742a0f[_0xb984('0x31')]][_0xb984('0x61')]=this[_0xb984('0x11')][_0x742a0f[_0xb984('0x35')]['split']('-')[0x0]][_0xb984('0x3b')];}}if(this['channels'][_0x742a0f[_0xb984('0x30')]]){if(!this[_0xb984('0x10')][_0x742a0f[_0xb984('0x30')]][_0xb984('0x5d')]){this[_0xb984('0x10')][_0x742a0f['uniqueid']][_0xb984('0x5d')]=!![];this[_0xb984('0x10')][_0x742a0f[_0xb984('0x30')]]['answertime']=_0x3508cb[_0xb984('0x41')](_0xb984('0x42'));if(this[_0xb984('0x10')][_0x742a0f[_0xb984('0x30')]][_0xb984('0x40')]){this['channels'][_0x742a0f['uniqueid']][_0xb984('0x5e')]=_0x3508cb[_0xb984('0x5f')](this[_0xb984('0x10')][_0x742a0f[_0xb984('0x30')]]['starttime'],_0xb984('0x53'));}}if(_0x742a0f[_0xb984('0x2e')]!==_0xb984('0x62')){this[_0xb984('0x10')][_0x742a0f['uniqueid']][_0xb984('0x39')]=_0x742a0f[_0xb984('0x2e')];}this[_0xb984('0x10')][_0x742a0f[_0xb984('0x30')]]['connectedlinename']=_0x742a0f[_0xb984('0x2d')];this[_0xb984('0x10')][_0x742a0f[_0xb984('0x30')]][_0xb984('0x63')]=_0x742a0f[_0xb984('0x35')];this[_0xb984('0x10')][_0x742a0f[_0xb984('0x30')]][_0xb984('0x43')]=dispositions[_[_0xb984('0x44')](_0x742a0f[_0xb984('0x45')])];}}else{if(this[_0xb984('0x10')][_0x742a0f['uniqueid']]){if(this[_0xb984('0x11')][_0x742a0f[_0xb984('0x35')][_0xb984('0x36')]('-')[0x0]]){this[_0xb984('0x10')][_0x742a0f[_0xb984('0x30')]][_0xb984('0x60')]=this['agents'][_0x742a0f[_0xb984('0x35')][_0xb984('0x36')]('-')[0x0]]['id'];this[_0xb984('0x10')][_0x742a0f[_0xb984('0x30')]]['membername']=this[_0xb984('0x11')][_0x742a0f[_0xb984('0x35')]['split']('-')[0x0]][_0xb984('0x3b')];}}}if(_0x742a0f['context']==='from-sip'){if(this[_0xb984('0x11')][_0x742a0f[_0xb984('0x35')][_0xb984('0x36')]('-')[0x0]]){this[_0xb984('0x11')][_0x742a0f[_0xb984('0x35')][_0xb984('0x36')]('-')[0x0]][_0xb984('0x38')]=_0x742a0f[_0xb984('0x37')];var _0x421bc2,_0x54ae45;if(this['channels'][_0x742a0f[_0xb984('0x30')]]){_0x421bc2=this[_0xb984('0x10')][_0x742a0f[_0xb984('0x30')]][_0xb984('0x64')];_0x54ae45=this['channels'][_0x742a0f[_0xb984('0x30')]][_0xb984('0x5')];}else if(this[_0xb984('0x10')][_0x742a0f[_0xb984('0x31')]]){_0x421bc2=this[_0xb984('0x10')][_0x742a0f[_0xb984('0x31')]]['routealias'];_0x54ae45=this[_0xb984('0x10')][_0x742a0f['linkedid']][_0xb984('0x5')];}logger['debug'](_0xb984('0x65'),_0x742a0f['uniqueid'],util['inspect']({'id':this[_0xb984('0x11')][_0x742a0f[_0xb984('0x35')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0xb984('0x11')][_0x742a0f[_0xb984('0x35')][_0xb984('0x36')]('-')[0x0]][_0xb984('0x47')],'destconnectedlinenum':_0x742a0f[_0xb984('0x37')],'routealias':_0x421bc2,'queue':_0x54ae45||undefined},{'showHidden':![],'depth':null}));this['emit'](util['format'](_0xb984('0x3a'),this[_0xb984('0x11')][_0x742a0f['channel'][_0xb984('0x36')]('-')[0x0]][_0xb984('0x3b')]),_0xb984('0x3c'),{'id':this['agents'][_0x742a0f[_0xb984('0x35')]['split']('-')[0x0]]['id'],'agentconnected':!![],'destaccountcode':this[_0xb984('0x11')][_0x742a0f[_0xb984('0x35')]['split']('-')[0x0]][_0xb984('0x47')],'destconnectedlinenum':_0x742a0f[_0xb984('0x37')],'routealias':_0x421bc2,'queue':_0x54ae45||undefined});}}}}catch(_0x328025){logger[_0xb984('0x26')]('[%s][voiceCallReport][newstate]',_0x742a0f['uniqueid'],util['inspect'](_0x328025,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype']['syncMixMonitorFilename']=function(_0x3b47b0,_0x431b44){try{if(this[_0xb984('0x10')][_0x3b47b0]){logger[_0xb984('0x23')](_0xb984('0x66'),_0x3b47b0,_0x431b44);this[_0xb984('0x10')][_0x3b47b0]['monitor']=!![];if(_[_0xb984('0x67')](_0x431b44,'.wav49')){_0x431b44=_0x431b44['replace'](_0xb984('0x68'),'.WAV');}this[_0xb984('0x10')][_0x3b47b0][_0xb984('0x69')]=_0x431b44;var _0x57279b=_[_0xb984('0x6a')](this[_0xb984('0x10')][_0x3b47b0][_0xb984('0x6b')],{'filename':_0x431b44});if(_[_0xb984('0x59')](_0x57279b)){this[_0xb984('0x10')][_0x3b47b0][_0xb984('0x6b')][_0xb984('0x6c')]({'filename':_0x431b44,'createdAt':moment()[_0xb984('0x41')](_0xb984('0x42')),'mixmonitorid':'','status':_0xb984('0x6d')});}}}catch(_0x19052a){logger[_0xb984('0x26')](_0xb984('0x6e'),_0x3b47b0,util['inspect'](_0x19052a,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb984('0x28')]['syncVarSet']=function(_0x242d4b){try{if(this['isNotNull'](_0x242d4b)){logger[_0xb984('0x2f')](_0xb984('0x6f'),_0x242d4b[_0xb984('0x30')],util[_0xb984('0x27')](_0x242d4b,{'showHidden':![],'depth':null}));if(this[_0xb984('0x10')][_0x242d4b[_0xb984('0x30')]]&&_0x242d4b[_0xb984('0x35')]!='OutgoingSpoolFailed'){if(this[_0xb984('0x29')](_0x242d4b[_0xb984('0x70')])){if(this[_0xb984('0x29')](_0x242d4b[_0xb984('0x70')][_0xb984('0x71')])){logger[_0xb984('0x23')](_0xb984('0x72'),_0x242d4b[_0xb984('0x30')],_0x242d4b[_0xb984('0x73')]);this['syncMixMonitorFilename'](_0x242d4b[_0xb984('0x30')],_0x242d4b[_0xb984('0x73')]);}else if(this[_0xb984('0x29')](_0x242d4b[_0xb984('0x70')][_0xb984('0x74')])){logger[_0xb984('0x23')](_0xb984('0x75'),_0x242d4b[_0xb984('0x30')],_0x242d4b[_0xb984('0x73')]);this[_0xb984('0x10')][_0x242d4b['uniqueid']][_0xb984('0x2e')]=_0x242d4b['value'];}else if(this[_0xb984('0x29')](_0x242d4b[_0xb984('0x70')][_0xb984('0x76')])){logger[_0xb984('0x23')](_0xb984('0x77'),_0x242d4b['uniqueid'],_0x242d4b[_0xb984('0x73')]);this[_0xb984('0x10')][_0x242d4b['uniqueid']][_0xb984('0x78')]=_0x242d4b[_0xb984('0x73')];}else if(this[_0xb984('0x29')](_0x242d4b['variable'][_0xb984('0x79')])){logger[_0xb984('0x23')](_0xb984('0x7a'),_0x242d4b[_0xb984('0x30')],_0x242d4b[_0xb984('0x73')]);this[_0xb984('0x10')][_0x242d4b[_0xb984('0x30')]][_0xb984('0x7b')]=_0x242d4b[_0xb984('0x73')];}else if(this[_0xb984('0x29')](_0x242d4b['variable']['xmd-queue'])){logger['info'](_0xb984('0x7c'),_0x242d4b[_0xb984('0x30')],_0x242d4b[_0xb984('0x73')][_0xb984('0x36')](',')[0x0]);this['channels'][_0x242d4b['uniqueid']]['queue']=_0x242d4b[_0xb984('0x73')][_0xb984('0x36')](',')[0x0];}else if(this['isNotNull'](_0x242d4b[_0xb984('0x70')]['xmd-originatecalleridnum'])){logger[_0xb984('0x23')]('[%s][voiceCallReport][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x242d4b[_0xb984('0x30')],_0x242d4b['value']);this[_0xb984('0x10')][_0x242d4b[_0xb984('0x30')]]['originatecalleridnum']=_0x242d4b[_0xb984('0x73')];}else if(this['isNotNull'](_0x242d4b[_0xb984('0x70')][_0xb984('0x7d')])){logger[_0xb984('0x23')](_0xb984('0x7e'),_0x242d4b['uniqueid'],_0x242d4b[_0xb984('0x73')]);this['channels'][_0x242d4b[_0xb984('0x30')]][_0xb984('0x7f')]=_0x242d4b[_0xb984('0x73')];}else if(this[_0xb984('0x29')](_0x242d4b[_0xb984('0x70')][_0xb984('0x80')])){logger['info'](_0xb984('0x81'),_0x242d4b[_0xb984('0x30')],_0x242d4b[_0xb984('0x73')]);this['channels'][_0x242d4b[_0xb984('0x30')]][_0xb984('0x82')]=_0x242d4b[_0xb984('0x73')];}else if(this['isNotNull'](_0x242d4b[_0xb984('0x70')][_0xb984('0x83')])){logger[_0xb984('0x23')](_0xb984('0x84'),_0x242d4b[_0xb984('0x30')],_0x242d4b[_0xb984('0x73')]);this[_0xb984('0x10')][_0x242d4b[_0xb984('0x30')]][_0xb984('0x5')]=_0x242d4b['value'];}else if(this[_0xb984('0x29')](_0x242d4b[_0xb984('0x70')][_0xb984('0x85')])){logger[_0xb984('0x23')](_0xb984('0x86'),_0x242d4b[_0xb984('0x30')],_0x242d4b['value']);this['channels'][_0x242d4b['uniqueid']]['sipcalluniqueid']=_0x242d4b['value'];}}}else if(this[_0xb984('0x29')](_0x242d4b[_0xb984('0x70')][_0xb984('0x71')])){if(_0x242d4b[_0xb984('0x73')]){var _0x3a223b=path[_0xb984('0x87')](_0x242d4b[_0xb984('0x73')])[_0xb984('0x3b')];logger[_0xb984('0x23')](_0xb984('0x72'),_0x3a223b,_0x242d4b[_0xb984('0x73')]);this[_0xb984('0x88')](_0x3a223b,_0x242d4b[_0xb984('0x73')]);}}else if(this[_0xb984('0x10')][_0x242d4b[_0xb984('0x31')]]){if(this[_0xb984('0x29')](_0x242d4b[_0xb984('0x70')])){if(this[_0xb984('0x29')](_0x242d4b[_0xb984('0x70')][_0xb984('0x85')])){logger['info'](_0xb984('0x86'),_0x242d4b[_0xb984('0x31')],_0x242d4b['value']);this[_0xb984('0x10')][_0x242d4b[_0xb984('0x31')]][_0xb984('0x89')]=_0x242d4b[_0xb984('0x73')];}}}}}catch(_0x2f395c){logger[_0xb984('0x26')](_0xb984('0x8a'),_0x242d4b[_0xb984('0x30')],util[_0xb984('0x27')](_0x2f395c,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb984('0x28')][_0xb984('0x1a')]=function(_0x1c534d){try{if(this[_0xb984('0x29')](_0x1c534d)){logger[_0xb984('0x2f')](_0xb984('0x8b'),_0x1c534d[_0xb984('0x30')],util[_0xb984('0x27')](_0x1c534d,{'showHidden':![],'depth':null}));if(this[_0xb984('0x12')][_0x1c534d[_0xb984('0x31')]]){if(this[_0xb984('0x10')][this[_0xb984('0x12')][_0x1c534d['linkedid']][_0xb984('0x31')]]){this['channels'][this['blindTransfers'][_0x1c534d[_0xb984('0x31')]][_0xb984('0x31')]][_0xb984('0x30')]=_0x1c534d['uniqueid'];this[_0xb984('0x10')][this[_0xb984('0x12')][_0x1c534d[_0xb984('0x31')]][_0xb984('0x31')]]['answered']=this[_0xb984('0x10')][_0x1c534d[_0xb984('0x30')]][_0xb984('0x5d')];this[_0xb984('0x10')][this['blindTransfers'][_0x1c534d[_0xb984('0x31')]]['linkedid']]['answertime']=this[_0xb984('0x10')][_0x1c534d[_0xb984('0x30')]]['answertime'];this[_0xb984('0x10')][this[_0xb984('0x12')][_0x1c534d[_0xb984('0x31')]][_0xb984('0x31')]][_0xb984('0x63')]=this['channels'][this['blindTransfers'][_0x1c534d['linkedid']]['linkedid']][_0xb984('0x35')];this[_0xb984('0x10')][this[_0xb984('0x12')][_0x1c534d[_0xb984('0x31')]][_0xb984('0x31')]][_0xb984('0x43')]=this[_0xb984('0x10')][_0x1c534d[_0xb984('0x30')]]['disposition'];this[_0xb984('0x10')][_0x1c534d[_0xb984('0x30')]]=this[_0xb984('0x10')][this['blindTransfers'][_0x1c534d[_0xb984('0x31')]][_0xb984('0x31')]];delete this[_0xb984('0x10')][this[_0xb984('0x12')][_0x1c534d['linkedid']][_0xb984('0x31')]];}else if(this[_0xb984('0x10')][this['blindTransfers'][_0x1c534d[_0xb984('0x31')]]['uniqueid']]){this[_0xb984('0x10')][this[_0xb984('0x12')][_0x1c534d[_0xb984('0x31')]][_0xb984('0x30')]][_0xb984('0x30')]=[this[_0xb984('0x10')][this[_0xb984('0x12')][_0x1c534d[_0xb984('0x31')]][_0xb984('0x30')]]['linkedid'],this[_0xb984('0x10')][this[_0xb984('0x12')][_0x1c534d[_0xb984('0x31')]][_0xb984('0x30')]]['linkedid']=this[_0xb984('0x10')][this['blindTransfers'][_0x1c534d[_0xb984('0x31')]][_0xb984('0x30')]]['uniqueid']][0x0];this[_0xb984('0x10')][this[_0xb984('0x12')][_0x1c534d[_0xb984('0x31')]][_0xb984('0x30')]][_0xb984('0x5d')]=this[_0xb984('0x10')][_0x1c534d[_0xb984('0x30')]][_0xb984('0x5d')];this[_0xb984('0x10')][this[_0xb984('0x12')][_0x1c534d[_0xb984('0x31')]]['uniqueid']][_0xb984('0x8c')]=this[_0xb984('0x10')][_0x1c534d[_0xb984('0x30')]][_0xb984('0x8c')];this[_0xb984('0x10')][this[_0xb984('0x12')][_0x1c534d[_0xb984('0x31')]]['uniqueid']]['destinationchannel']=this[_0xb984('0x10')][this[_0xb984('0x12')][_0x1c534d[_0xb984('0x31')]][_0xb984('0x30')]][_0xb984('0x35')];this[_0xb984('0x10')][this['blindTransfers'][_0x1c534d[_0xb984('0x31')]][_0xb984('0x30')]][_0xb984('0x43')]=this[_0xb984('0x10')][_0x1c534d[_0xb984('0x30')]][_0xb984('0x43')];this['channels'][_0x1c534d['uniqueid']]=this[_0xb984('0x10')][this[_0xb984('0x12')][_0x1c534d[_0xb984('0x31')]][_0xb984('0x30')]];delete this[_0xb984('0x10')][this[_0xb984('0x12')][_0x1c534d[_0xb984('0x31')]][_0xb984('0x30')]];}}if(this[_0xb984('0x10')][_0x1c534d[_0xb984('0x30')]]){logger['info']('[%s][voiceCallReport][hangup]\x20reason:%s',_0x1c534d['uniqueid'],_0x1c534d[_0xb984('0x8d')]);var _0x215f60=moment();this[_0xb984('0x10')][_0x1c534d['uniqueid']]['endtime']=_0x215f60[_0xb984('0x41')]('YYYY-MM-DD\x20HH:mm:ss');this['channels'][_0x1c534d[_0xb984('0x30')]][_0xb984('0x52')]=_0x215f60[_0xb984('0x5f')](this['channels'][_0x1c534d['uniqueid']][_0xb984('0x40')],_0xb984('0x53'));if(this[_0xb984('0x10')][_0x1c534d['uniqueid']][_0xb984('0x5d')]){this[_0xb984('0x10')][_0x1c534d[_0xb984('0x30')]][_0xb984('0x8e')]=_0x215f60[_0xb984('0x5f')](this[_0xb984('0x10')][_0x1c534d['uniqueid']][_0xb984('0x8c')],_0xb984('0x53'));this[_0xb984('0x10')][_0x1c534d[_0xb984('0x30')]][_0xb984('0x5e')]=this[_0xb984('0x10')][_0x1c534d[_0xb984('0x30')]]['duration']-this[_0xb984('0x10')][_0x1c534d[_0xb984('0x30')]][_0xb984('0x8e')];}if(_0x1c534d[_0xb984('0x3f')]==='from-sip'){if(this['agents'][_0x1c534d[_0xb984('0x35')]['split']('-')[0x0]]){this[_0xb984('0x11')][_0x1c534d[_0xb984('0x35')]['split']('-')[0x0]]=_[_0xb984('0x8f')](this['agents'][_0x1c534d[_0xb984('0x35')]['split']('-')[0x0]],['destconnectedlinenum']);logger['debug'](_0xb984('0x90'),_0x1c534d[_0xb984('0x30')],util[_0xb984('0x27')]({'id':this['agents'][_0x1c534d[_0xb984('0x35')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0xb984('0x11')][_0x1c534d[_0xb984('0x35')][_0xb984('0x36')]('-')[0x0]]['accountcode']},{'showHidden':![],'depth':null}));this[_0xb984('0x2b')](util[_0xb984('0x41')](_0xb984('0x3a'),this[_0xb984('0x11')][_0x1c534d[_0xb984('0x35')][_0xb984('0x36')]('-')[0x0]][_0xb984('0x3b')]),_0xb984('0x91'),{'id':this['agents'][_0x1c534d[_0xb984('0x35')]['split']('-')[0x0]]['id'],'destaccountcode':this[_0xb984('0x11')][_0x1c534d[_0xb984('0x35')][_0xb984('0x36')]('-')[0x0]][_0xb984('0x47')]});for(var _0x53f71d=0x0;_0x53f71d<Object[_0xb984('0x34')](this['agents'])[_0xb984('0x92')];_0x53f71d++){var _0x148af1=Object['keys'](this[_0xb984('0x11')])[_0x53f71d];var _0x5cf032=this[_0xb984('0x11')][_0x148af1];if(_0x5cf032[_0xb984('0x47')]===Number(_0x1c534d[_0xb984('0x39')])){this[_0xb984('0x2b')](util[_0xb984('0x41')](_0xb984('0x3a'),_0x5cf032[_0xb984('0x3b')]),_0xb984('0x91'),{'id':_0x5cf032['id'],'destaccountcode':_0x5cf032[_0xb984('0x47')],'transfer':this[_0xb984('0x10')][_0x1c534d[_0xb984('0x30')]][_0xb984('0x93')]});break;}}}}var _0x121c2d=this;Promise['resolve']()[_0xb984('0x94')](function(){var _0x4cb4f4=_0x121c2d[_0xb984('0x10')][_0x1c534d[_0xb984('0x30')]];if(typeof _0x4cb4f4['transferType']==='undefined')return;if(_[_0xb984('0x95')](_0x4cb4f4[_0xb984('0x6b')]))return;return RpcSetting[_0xb984('0x96')]()[_0xb984('0x94')](function(_0x4a2b32){if(!_0x4a2b32[_0xb984('0x97')])return;return Promise[_0xb984('0x98')]()[_0xb984('0x94')](function(){return ami['Action']({'action':_0xb984('0x99'),'channel':_0x4cb4f4[_0xb984('0x35')]})[_0xb984('0x9a')](function(){});})[_0xb984('0x94')](function(){return ami[_0xb984('0x9b')]({'action':'StopMixMonitor','channel':_0x4cb4f4[_0xb984('0x63')]})[_0xb984('0x9a')](function(){})[_0xb984('0x9c')](function(){var _0x112c21=_0x121c2d[_0xb984('0x11')][_0x4cb4f4[_0xb984('0x63')][_0xb984('0x36')]('-')[0x0]];if(!_0x112c21)return;io[_0xb984('0x2b')](_0xb984('0x9d'),{'agentId':_0x112c21['id'],'uniqueid':_0x4cb4f4['uniqueid']});});});});})[_0xb984('0x94')](function(){if(_0x1c534d[_0xb984('0x9e')]==='BlindTransfer'){_0x121c2d[_0xb984('0x12')][_0x1c534d['uniqueid']]=_0x1c534d;}else{if(_0x121c2d['channels'][_0x1c534d[_0xb984('0x30')]][_0xb984('0x7b')]===_0xb984('0x9f')&&_0x121c2d[_0xb984('0x12')][_0x1c534d[_0xb984('0x30')]]){_0x121c2d[_0xb984('0x10')][_0x1c534d['uniqueid']][_0xb984('0x30')]=[_0x121c2d['channels'][_0x1c534d[_0xb984('0x30')]][_0xb984('0x31')],_0x121c2d[_0xb984('0x10')][_0x1c534d[_0xb984('0x30')]][_0xb984('0x31')]=_0x121c2d[_0xb984('0x10')][_0x1c534d[_0xb984('0x30')]][_0xb984('0x30')]][0x0];delete _0x121c2d['blindTransfers'][_0x1c534d[_0xb984('0x30')]];}}logger[_0xb984('0x2f')](_0xb984('0xa0'),_0x1c534d['uniqueid'],util[_0xb984('0x27')](_0x121c2d['channels'][_0x1c534d[_0xb984('0x30')]],{'showHidden':![],'depth':null}));ami[_0xb984('0x2b')](_0xb984('0xa1'),_0x121c2d['channels'][_0x1c534d['uniqueid']]);delete _0x121c2d[_0xb984('0x10')][_0x1c534d['uniqueid']];});}}}catch(_0x3b633b){logger[_0xb984('0x26')]('[%s][voiceCallReport][hangup]',_0x1c534d[_0xb984('0x30')],util[_0xb984('0x27')](_0x3b633b,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb984('0x28')][_0xb984('0x1e')]=function(_0x391988){try{if(this[_0xb984('0x29')](_0x391988)){logger[_0xb984('0x23')](_0xb984('0xa2'),_0x391988['uniqueid'],_0x391988[_0xb984('0xa3')],_0x391988[_0xb984('0xa4')]);logger[_0xb984('0x2f')](_0xb984('0xa5'),_0x391988[_0xb984('0x30')],util[_0xb984('0x27')](_0x391988,{'showHidden':![],'depth':null}));var _0x29b815;if(this[_0xb984('0x10')][_0x391988[_0xb984('0xa6')]]){this[_0xb984('0x10')][_0x391988[_0xb984('0xa6')]][_0xb984('0xa7')]=_0x391988[_0xb984('0xa3')];this[_0xb984('0x10')][_0x391988['transfereeuniqueid']][_0xb984('0xa8')]=_0x391988['transfertargetcalleridnum'];if(this[_0xb984('0x10')][_0x391988[_0xb984('0xa9')]]){_0x29b815=this[_0xb984('0x10')][_0x391988[_0xb984('0xa9')]];this[_0xb984('0x10')][_0x391988['secondtransfereruniqueid']]=this[_0xb984('0x10')][_0x391988['transfereeuniqueid']];this[_0xb984('0x10')][_0x391988[_0xb984('0xa6')]]=_0x29b815;}this['channels'][_0x391988[_0xb984('0xa9')]][_0xb984('0x93')]=_0xb984('0xaa');}else if(this[_0xb984('0x10')][_0x391988[_0xb984('0xab')]]){this[_0xb984('0x10')][_0x391988[_0xb984('0xab')]]['transfercalleridnum']=_0x391988['origtransferercalleridnum'];this['channels'][_0x391988['transfertargetuniqueid']][_0xb984('0xa8')]=_0x391988['transfertargetcalleridnum'];if(this['channels'][_0x391988[_0xb984('0xac')]]){_0x29b815=this[_0xb984('0x10')][_0x391988[_0xb984('0xac')]];this[_0xb984('0x10')][_0x391988[_0xb984('0xac')]]=this[_0xb984('0x10')][_0x391988[_0xb984('0xab')]];this[_0xb984('0x10')][_0x391988['transfertargetuniqueid']]=_0x29b815;}this['channels'][_0x391988[_0xb984('0xab')]][_0xb984('0x93')]=_0xb984('0xaa');}if((this[_0xb984('0x10')][_0x391988['origtransfereruniqueid']]||this[_0xb984('0x10')][_0x391988[_0xb984('0xad')]])&&this[_0xb984('0x10')][_0x391988[_0xb984('0xa9')]]){var _0x1e468a=_['some']([this[_0xb984('0x10')][_0x391988[_0xb984('0xac')]],this[_0xb984('0x10')][_0x391988[_0xb984('0xad')]],this['channels'][_0x391988[_0xb984('0xa9')]]],function(_0x327159){return _0x327159&&_0x327159['type']===_0xb984('0x9f')&&_0x327159[_0xb984('0xae')];});if(_0x1e468a){if(this[_0xb984('0x10')][_0x391988['origtransfereruniqueid']])this['channels'][_0x391988[_0xb984('0xac')]]['transferType']=_0xb984('0xaa');if(this[_0xb984('0x10')][_0x391988[_0xb984('0xad')]])this[_0xb984('0x10')][_0x391988[_0xb984('0xad')]][_0xb984('0x93')]='ATTENDED';this['channels'][_0x391988[_0xb984('0xa9')]][_0xb984('0x93')]=_0xb984('0xaa');}}}}catch(_0x181710){logger[_0xb984('0x26')](_0xb984('0xaf'),_0x391988['uniqueid'],util[_0xb984('0x27')](_0x181710,{'showHidden':![],'depth':null}));}};VoiceCallReport['prototype'][_0xb984('0x20')]=function(_0x306787){try{if(this[_0xb984('0x29')](_0x306787)){logger[_0xb984('0x23')](_0xb984('0xb0'),_0x306787[_0xb984('0x30')],_0x306787[_0xb984('0xb1')],_0x306787[_0xb984('0xb2')]);logger[_0xb984('0x2f')](_0xb984('0xb3'),_0x306787[_0xb984('0x30')],util['inspect'](_0x306787,{'showHidden':![],'depth':null}));if(this[_0xb984('0x10')][_0x306787['transfereeuniqueid']]){this[_0xb984('0x10')][_0x306787[_0xb984('0xa6')]][_0xb984('0xa7')]=_0x306787[_0xb984('0xb1')];this[_0xb984('0x10')][_0x306787[_0xb984('0xa6')]][_0xb984('0xa8')]=_0x306787['extension'];this['channels'][_0x306787[_0xb984('0xa6')]]['transferType']='BLIND';this[_0xb984('0x1a')]({'event':_0xb984('0xb4'),'uniqueid':_0x306787[_0xb984('0xa6')],'linkedid':_0x306787[_0xb984('0xb5')],'context':_0x306787[_0xb984('0x3f')],'channel':_0x306787['transfererchannel']});}else{this[_0xb984('0x10')][_0x306787[_0xb984('0xb5')]]['transferType']='BLIND';this[_0xb984('0x1a')]({'event':_0xb984('0xb4'),'uniqueid':_0x306787[_0xb984('0xb5')],'linkedid':_0x306787[_0xb984('0xa6')],'context':_0x306787['context'],'channel':_0x306787['transfererchannel']});}}}catch(_0x58f76c){logger[_0xb984('0x26')](_0xb984('0xb6'),_0x306787['uniqueid'],util[_0xb984('0x27')](_0x58f76c,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb984('0x28')][_0xb984('0x21')]=function(_0x42e48f){try{if(this[_0xb984('0x29')](_0x42e48f)){logger[_0xb984('0x2f')](_0xb984('0xb7'),_0x42e48f[_0xb984('0x30')],util[_0xb984('0x27')](_0x42e48f,{'showHidden':![],'depth':null}));if(this[_0xb984('0x10')][_0x42e48f['uniqueid']]){if(!_[_0xb984('0x59')](this[_0xb984('0x10')][_0x42e48f['uniqueid']][_0xb984('0x8c')])){this[_0xb984('0x10')][_0x42e48f[_0xb984('0x30')]]['mohstarttime']=moment()[_0xb984('0x41')](_0xb984('0x42'));logger[_0xb984('0x23')]('[%s][voiceCallReport][musiconholdstart]\x20mohstarttime:%s',_0x42e48f[_0xb984('0x30')],this[_0xb984('0x10')][_0x42e48f[_0xb984('0x30')]][_0xb984('0xb8')]);}}}}catch(_0x454b07){logger['error']('[%s][voiceCallReport][musiconholdstart]',_0x42e48f[_0xb984('0x30')],util[_0xb984('0x27')](_0x454b07,{'showHidden':![],'depth':null}));}};VoiceCallReport[_0xb984('0x28')][_0xb984('0x22')]=function(_0x2bde5a){try{if(this[_0xb984('0x29')](_0x2bde5a)){logger['debug'](_0xb984('0xb9'),_0x2bde5a[_0xb984('0x30')],util[_0xb984('0x27')](_0x2bde5a,{'showHidden':![],'depth':null}));if(this[_0xb984('0x10')][_0x2bde5a[_0xb984('0x30')]]){if(!_['isNil'](this[_0xb984('0x10')][_0x2bde5a[_0xb984('0x30')]][_0xb984('0xb8')])){this[_0xb984('0x10')][_0x2bde5a[_0xb984('0x30')]][_0xb984('0xba')]+=moment()[_0xb984('0xbb')](0x0)[_0xb984('0x5f')](this[_0xb984('0x10')][_0x2bde5a[_0xb984('0x30')]][_0xb984('0xb8')],_0xb984('0x53'));logger[_0xb984('0x23')](_0xb984('0xbc'),_0x2bde5a[_0xb984('0x30')],this[_0xb984('0x10')][_0x2bde5a[_0xb984('0x30')]][_0xb984('0xba')]);delete this['channels'][_0x2bde5a[_0xb984('0x30')]]['mohstarttime'];}}}}catch(_0x1d5392){logger[_0xb984('0x26')](_0xb984('0xbd'),_0x2bde5a[_0xb984('0x30')],util['inspect'](_0x1d5392,{'showHidden':![],'depth':null}));}};module['exports']=VoiceCallReport;
\ No newline at end of file
index af4a14d..d27be0c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2eb2=['rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberlastcall','memberpenalty','memberrealtime','isNil','includes','syncHangup','[%s][voiceDialReport][hangup]\x20event:','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','starttime','seconds','lastevent','complete','total','answered','holdtime','billableseconds','sumHoldTime','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','[%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:','toLowerCase','set','applicationdata','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','application','split','match','exports','moment','util','ioredis','../../../config/environment','../../../config/logger','ami','redis','localhost','socket.io-emitter','channels','outboundChannels','outbound','applications','variables','dialbegin','syncDialBegin','dialend','varset','bind','hangup','prototype','isNotNull','isUndefined','[%s][voiceDialReport][dialbegin]\x20event:','uniqueid','format','YYYY-MM-DD\x20HH:mm:ss','called','substring','channel','lastIndexOf','privilege','info','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','debug','[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:','merge','emit','voice:outbound','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','inspect','custom:dialbegin','error','syncDialEnd','[%s][voiceDialReport][dialend]\x20event:','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','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]','syncVarSet','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','variable','value','outboundrouteid','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','rtpaudioqos','rtpaudioqosbridged'];(function(_0x28953a,_0x262ebe){var _0x19e2c6=function(_0x426953){while(--_0x426953){_0x28953a['push'](_0x28953a['shift']());}};_0x19e2c6(++_0x262ebe);}(_0x2eb2,0x19f));var _0x22eb=function(_0x110c3d,_0x12ee06){_0x110c3d=_0x110c3d-0x0;var _0x226d67=_0x2eb2[_0x110c3d];return _0x226d67;};'use strict';var _=require('lodash');var moment=require(_0x22eb('0x0'));var util=require(_0x22eb('0x1'));var Redis=require(_0x22eb('0x2'));var config=require(_0x22eb('0x3'));var logger=require(_0x22eb('0x4'))(_0x22eb('0x5'));var ami=require('../ami');config[_0x22eb('0x6')]=_['defaults'](config['redis'],{'host':_0x22eb('0x7'),'port':0x18eb});var io=require(_0x22eb('0x8'))(new Redis(config[_0x22eb('0x6')]));function VoiceDialReport(_0x2a9850){this[_0x22eb('0x9')]=_0x2a9850[_0x22eb('0xa')];this[_0x22eb('0xb')]=_0x2a9850[_0x22eb('0xb')];this[_0x22eb('0xc')]={};this[_0x22eb('0xd')]={};ami['on'](_0x22eb('0xe'),this[_0x22eb('0xf')]['bind'](this));ami['on'](_0x22eb('0x10'),this['syncDialEnd']['bind'](this));ami['on'](_0x22eb('0x11'),this['syncVarSet'][_0x22eb('0x12')](this));ami['on'](_0x22eb('0x13'),this['syncHangup']['bind'](this));}VoiceDialReport[_0x22eb('0x14')][_0x22eb('0x15')]=function(_0x128d43){return _0x128d43!==null&&!_[_0x22eb('0x16')](_0x128d43);};VoiceDialReport[_0x22eb('0x14')]['emit']=function(_0x350ade,_0x53f14e,_0x1f5089){io['to'](_0x350ade)['emit'](_0x53f14e,_0x1f5089);};VoiceDialReport[_0x22eb('0x14')][_0x22eb('0xf')]=function(_0x53abbf){try{if(this['isNotNull'](_0x53abbf)){logger['debug'](_0x22eb('0x17'),_0x53abbf['uniqueid'],util['inspect'](_0x53abbf,{'showHidden':![],'depth':null}));if(this[_0x22eb('0x9')][_0x53abbf['uniqueid']]){_['merge'](this[_0x22eb('0x9')][_0x53abbf[_0x22eb('0x18')]],{'starttime':moment()[_0x22eb('0x19')](_0x22eb('0x1a')),'lastevent':_0x22eb('0x1b'),'interface':_0x53abbf['channel'][_0x22eb('0x1c')](0x0,_0x53abbf[_0x22eb('0x1d')][_0x22eb('0x1e')]('-')),'membername':_0x53abbf[_0x22eb('0x1d')][_0x22eb('0x1c')](_0x53abbf['channel'][_0x22eb('0x1e')]('/')+0x1,_0x53abbf[_0x22eb('0x1d')][_0x22eb('0x1e')]('-'))},_['omit'](_0x53abbf,['event',_0x22eb('0x1f')]));logger[_0x22eb('0x20')](_0x22eb('0x21'),_0x53abbf[_0x22eb('0x18')],this[_0x22eb('0x9')][_0x53abbf[_0x22eb('0x18')]][_0x22eb('0x22')],this['channels'][_0x53abbf[_0x22eb('0x18')]][_0x22eb('0x23')]);logger[_0x22eb('0x24')](_0x22eb('0x25'),_0x53abbf[_0x22eb('0x18')],util['inspect'](this[_0x22eb('0x9')][_0x53abbf[_0x22eb('0x18')]],{'showHidden':![],'depth':null}));if(this[_0x22eb('0xc')][_0x53abbf['uniqueid']])_[_0x22eb('0x26')](this[_0x22eb('0x9')][_0x53abbf['uniqueid']],this[_0x22eb('0xc')][_0x53abbf[_0x22eb('0x18')]]);this[_0x22eb('0x27')](_0x22eb('0x28'),_0x22eb('0x29'),this['channels'][_0x53abbf['uniqueid']]);logger[_0x22eb('0x24')](_0x22eb('0x2a'),_0x53abbf[_0x22eb('0x18')],util[_0x22eb('0x2b')](this[_0x22eb('0x9')][_0x53abbf[_0x22eb('0x18')]],{'showHidden':![],'depth':null}));ami[_0x22eb('0x27')](_0x22eb('0x2c'),this[_0x22eb('0x9')][_0x53abbf[_0x22eb('0x18')]]);}}}catch(_0x24e9dc){logger[_0x22eb('0x2d')]('[%s][voiceDialReport][dialbegin]',_0x53abbf[_0x22eb('0x18')],util['inspect'](_0x24e9dc,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x22eb('0x14')][_0x22eb('0x2e')]=function(_0xd564a9){try{if(this[_0x22eb('0x15')](_0xd564a9)){logger[_0x22eb('0x24')](_0x22eb('0x2f'),_0xd564a9[_0x22eb('0x18')],util[_0x22eb('0x2b')](_0xd564a9,{'showHidden':![],'depth':null}));if(this[_0x22eb('0x9')][_0xd564a9[_0x22eb('0x18')]]){this['channels'][_0xd564a9['uniqueid']][_0x22eb('0x30')]=_0xd564a9['dialstatus'];if(_0xd564a9['dialstatus']===_0x22eb('0x31')){this[_0x22eb('0x9')][_0xd564a9[_0x22eb('0x18')]][_0x22eb('0x32')]=_0xd564a9[_0x22eb('0x32')];this[_0x22eb('0x9')][_0xd564a9[_0x22eb('0x18')]][_0x22eb('0x33')]=_0xd564a9[_0x22eb('0x33')];this[_0x22eb('0x9')][_0xd564a9['uniqueid']][_0x22eb('0x34')]=moment()['format']('YYYY-MM-DD\x20HH:mm:ss');this[_0x22eb('0x9')][_0xd564a9[_0x22eb('0x18')]]['lastevent']=_0x22eb('0x35');logger[_0x22eb('0x20')](_0x22eb('0x36'),_0xd564a9[_0x22eb('0x18')],_0xd564a9[_0x22eb('0x1d')]['substring'](_0xd564a9[_0x22eb('0x1d')][_0x22eb('0x1e')]('/')+0x1,_0xd564a9['channel'][_0x22eb('0x1e')]('-')));logger[_0x22eb('0x24')](_0x22eb('0x37'),_0xd564a9[_0x22eb('0x18')],util[_0x22eb('0x2b')](this['channels'][_0xd564a9['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x22eb('0x27')](_0x22eb('0x38'),this['channels'][_0xd564a9[_0x22eb('0x18')]]);}logger[_0x22eb('0x24')](_0x22eb('0x39'),_0xd564a9['uniqueid'],util[_0x22eb('0x2b')](this[_0x22eb('0x9')][_0xd564a9[_0x22eb('0x18')]],{'showHidden':![],'depth':null}));this[_0x22eb('0x27')](_0x22eb('0x28'),_0x22eb('0x29'),this['channels'][_0xd564a9[_0x22eb('0x18')]]);}}}catch(_0x3d2d1d){logger['error'](_0x22eb('0x3a'),_0xd564a9[_0x22eb('0x18')],util[_0x22eb('0x2b')](_0x3d2d1d,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x22eb('0x14')][_0x22eb('0x3b')]=function(_0x3e8974){try{if(this[_0x22eb('0x15')](_0x3e8974)){logger[_0x22eb('0x24')](_0x22eb('0x3c'),_0x3e8974[_0x22eb('0x18')],util[_0x22eb('0x2b')](_0x3e8974,{'showHidden':![],'depth':null}));this[_0x22eb('0x3d')](_0x3e8974[_0x22eb('0x18')],_[_0x22eb('0x3e')](_0x3e8974[_0x22eb('0x3f')])[0x0],_0x3e8974[_0x22eb('0x40')]);if(this[_0x22eb('0x15')](_0x3e8974[_0x22eb('0x3f')])&&this['isNotNull'](_0x3e8974[_0x22eb('0x3f')][_0x22eb('0x41')])){if(_['isUndefined'](this[_0x22eb('0x9')][_0x3e8974[_0x22eb('0x18')]])){this['channels'][_0x3e8974['uniqueid']]={'routeId':_0x3e8974['value'],'variables':this[_0x22eb('0xd')][_0x3e8974[_0x22eb('0x18')]],'motionChannel':'voice'};logger['info'](_0x22eb('0x42'),_0x3e8974[_0x22eb('0x18')],_0x3e8974[_0x22eb('0x3f')][_0x22eb('0x41')],_[_0x22eb('0x3e')](_0x3e8974[_0x22eb('0x3f')])[0x0],_0x3e8974[_0x22eb('0x40')]);logger[_0x22eb('0x24')]('[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:',_0x3e8974['uniqueid'],util[_0x22eb('0x2b')](this['channels'][_0x3e8974[_0x22eb('0x18')]],{'showHidden':![],'depth':null}));this['emit'](_0x22eb('0x28'),'voice_outbound_channel:save',this['channels'][_0x3e8974['uniqueid']]);}}}}catch(_0x517784){logger[_0x22eb('0x2d')]('[%s][voiceDialReport][varset]',_0x3e8974[_0x22eb('0x18')],util[_0x22eb('0x2b')](_0x517784,{'showHidden':![],'depth':null}));}};VoiceDialReport['prototype'][_0x22eb('0x3d')]=function(_0x5df756,_0x109fc7,_0x9c490b){var _0x1df219=[_0x22eb('0x43'),_0x22eb('0x44'),_0x22eb('0x45'),_0x22eb('0x46'),_0x22eb('0x47'),_0x22eb('0x48'),'rtpaudioqosrtt',_0x22eb('0x49'),_0x22eb('0x4a'),'sipuri',_0x22eb('0x4b'),_0x22eb('0x4c'),_0x22eb('0x4d'),_0x22eb('0x4e'),'memberinterface',_0x22eb('0x4f'),_0x22eb('0x22'),_0x22eb('0x50'),_0x22eb('0x51')];if(!_[_0x22eb('0x52')](_0x109fc7)&&!_[_0x22eb('0x53')](_0x1df219,_0x109fc7)){if(_['isUndefined'](this[_0x22eb('0xd')][_0x5df756])){this['variables'][_0x5df756]={};}this[_0x22eb('0xd')][_0x5df756][_0x109fc7]=_0x9c490b;}};VoiceDialReport['prototype'][_0x22eb('0x54')]=function(_0x254b53){try{if(this[_0x22eb('0x15')](_0x254b53)){logger[_0x22eb('0x24')](_0x22eb('0x55'),_0x254b53['uniqueid'],util['inspect'](_0x254b53,{'showHidden':![],'depth':null}));if(this[_0x22eb('0x9')][_0x254b53[_0x22eb('0x18')]]){logger['info'](_0x22eb('0x56'),_0x254b53[_0x22eb('0x18')],_0x254b53[_0x22eb('0x57')]);this[_0x22eb('0x9')][_0x254b53[_0x22eb('0x18')]][_0x22eb('0x58')]=moment()[_0x22eb('0x19')](_0x22eb('0x1a'));this[_0x22eb('0x9')][_0x254b53[_0x22eb('0x18')]][_0x22eb('0x59')]=moment(this['channels'][_0x254b53[_0x22eb('0x18')]][_0x22eb('0x58')])[_0x22eb('0x5a')](this[_0x22eb('0x9')][_0x254b53[_0x22eb('0x18')]][_0x22eb('0x5b')],_0x22eb('0x5c'));this[_0x22eb('0x9')][_0x254b53[_0x22eb('0x18')]][_0x22eb('0x5d')]=_0x22eb('0x5e');this[_0x22eb('0xb')][_0x22eb('0x5f')]+=0x1;if(this[_0x22eb('0x9')][_0x254b53['uniqueid']]['answertime']){this[_0x22eb('0xb')][_0x22eb('0x60')]+=0x1;this[_0x22eb('0x9')][_0x254b53[_0x22eb('0x18')]][_0x22eb('0x61')]=moment(this['channels'][_0x254b53[_0x22eb('0x18')]][_0x22eb('0x34')])['diff'](this['channels'][_0x254b53[_0x22eb('0x18')]][_0x22eb('0x5b')],_0x22eb('0x5c'));this[_0x22eb('0x9')][_0x254b53[_0x22eb('0x18')]][_0x22eb('0x62')]=moment(this[_0x22eb('0x9')][_0x254b53[_0x22eb('0x18')]][_0x22eb('0x58')])[_0x22eb('0x5a')](this[_0x22eb('0x9')][_0x254b53[_0x22eb('0x18')]][_0x22eb('0x34')],_0x22eb('0x5c'));this['outbound'][_0x22eb('0x63')]+=this[_0x22eb('0x9')][_0x254b53[_0x22eb('0x18')]]['holdtime']||0x0;this[_0x22eb('0xb')]['sumBillable']+=this[_0x22eb('0x9')][_0x254b53['uniqueid']][_0x22eb('0x62')];}this[_0x22eb('0xb')]['sumDuration']+=this[_0x22eb('0x9')][_0x254b53[_0x22eb('0x18')]]['duration'];logger['debug'](_0x22eb('0x64'),_0x254b53[_0x22eb('0x18')],util[_0x22eb('0x2b')](this[_0x22eb('0x9')][_0x254b53[_0x22eb('0x18')]],{'showHidden':![],'depth':null}));ami[_0x22eb('0x27')]('custom:voiceDialReport',this[_0x22eb('0x9')][_0x254b53['uniqueid']]);logger['debug'](_0x22eb('0x65'),_0x254b53[_0x22eb('0x18')],util[_0x22eb('0x2b')](this[_0x22eb('0x9')][_0x254b53[_0x22eb('0x18')]],{'showHidden':![],'depth':null}));ami[_0x22eb('0x27')](_0x22eb('0x66'),this[_0x22eb('0x9')][_0x254b53['uniqueid']]);logger['debug'](_0x22eb('0x67'),_0x254b53[_0x22eb('0x18')],util['inspect'](this[_0x22eb('0x9')][_0x254b53[_0x22eb('0x18')]],{'showHidden':![],'depth':null}));this[_0x22eb('0x27')](_0x22eb('0x28'),_0x22eb('0x68'),this[_0x22eb('0xb')]);logger['info'](_0x22eb('0x69'),JSON[_0x22eb('0x6a')](this[_0x22eb('0x9')][_0x254b53['uniqueid']]));logger['debug'](_0x22eb('0x6b'),_0x254b53[_0x22eb('0x18')],util[_0x22eb('0x2b')](this['channels'][_0x254b53[_0x22eb('0x18')]],{'showHidden':![],'depth':null}));this['emit'](_0x22eb('0x28'),_0x22eb('0x6c'),this[_0x22eb('0x9')][_0x254b53[_0x22eb('0x18')]]);delete this['channels'][_0x254b53[_0x22eb('0x18')]];}else if(this[_0x22eb('0x9')][_0x254b53[_0x22eb('0x6d')]]){this[_0x22eb('0x9')][_0x254b53[_0x22eb('0x6d')]][_0x22eb('0x18')]=this[_0x22eb('0x9')][_0x254b53[_0x22eb('0x6d')]][_0x22eb('0x6e')];}if(this[_0x22eb('0xd')][_0x254b53[_0x22eb('0x18')]]){delete this['variables'][_0x254b53[_0x22eb('0x18')]];}}}catch(_0x3d8abf){logger['error']('[%s][voiceDialReport][hangup]',_0x254b53['uniqueid'],util[_0x22eb('0x2b')](_0x3d8abf,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x22eb('0x14')]['syncNewExten']=function(_0x10726f){try{if(this[_0x22eb('0x15')](_0x10726f)){logger[_0x22eb('0x24')](_0x22eb('0x6f'),_0x10726f[_0x22eb('0x18')],util['inspect'](_0x10726f,{'showHidden':![],'depth':null}));if(_0x10726f['application'][_0x22eb('0x70')]()===_0x22eb('0x71')){_0x10726f[_0x22eb('0x72')]=(_0x10726f['appdata']||_0x10726f['applicationdata'])[_0x22eb('0x70')]();if(_['startsWith'](_0x10726f['applicationdata'],_0x22eb('0x73'))){if(_[_0x22eb('0x16')](this['applications'][_0x10726f['uniqueid']]))this[_0x22eb('0xc')][_0x10726f[_0x22eb('0x18')]]={};logger['info'](_0x22eb('0x74'),_0x10726f[_0x22eb('0x18')],_0x10726f[_0x22eb('0x75')],_0x10726f['applicationdata']);var _0x464f4f=_0x10726f[_0x22eb('0x72')][_0x22eb('0x76')]('=');var _0x2a0c73=_0x464f4f[0x0][_0x22eb('0x77')](/cdr\((.*)\)/);if(_0x2a0c73)this['applications'][_0x10726f[_0x22eb('0x18')]][_0x2a0c73[0x1]]=_0x464f4f[0x1];}}}}catch(_0x2ecc24){logger[_0x22eb('0x2d')]('[%s][voiceDialReport][newexten]',_0x10726f['uniqueid'],util[_0x22eb('0x2b')](_0x2ecc24,{'showHidden':![],'depth':null}));}};module[_0x22eb('0x78')]=VoiceDialReport;
\ No newline at end of file
+var _0xda19=['called','channel','substring','lastIndexOf','omit','event','[%s][voiceDialReport][dialbegin]\x20agent:%s\x20interface:%s\x20lastevent:called','membername','interface','applications','voice_outbound_channel:save','[%s][voiceDialReport][dialbegin]\x20sending\x20dialbegin\x20event:','custom:dialbegin','[%s][voiceDialReport][dialbegin]','dialstatus','ANSWER','connectedlinenum','connectedlinename','answertime','format','YYYY-MM-DD\x20HH:mm:ss','lastevent','info','[%s][voiceDialReport][dialend]\x20sending\x20dialconnect\x20event:','[%s][voiceDialReport][dialend]\x20sending\x20voice_outbound_channel:save\x20event:','error','[%s][voiceDialReport][dialend]','[%s][voiceDialReport][varset]\x20event:','addVariable','keys','value','variable','variables','voice','[%s][voiceDialReport][varset]\x20outboundrouteid:%s\x20variable:%s\x20value:%s','outboundrouteid','voice:outbound','[%s][voiceDialReport][varset]','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','memberdynamic','memberinterface','memberlastcall','memberpenalty','memberrealtime','isNil','includes','syncHangup','[%s][voiceDialReport][hangup]\x20reason:%s\x20lasteevent:complete','cause-txt','endtime','duration','diff','starttime','seconds','complete','total','answered','holdtime','billableseconds','sumHoldTime','sumBillable','[%s][voiceDialReport][hangup]\x20sending\x20voiceDialReport\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20dialend\x20event:','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound:save\x20event:','voice_outbound:save','[DEBUG]\x20Emit\x20voice_outbound_channel:remove\x20event','[%s][voiceDialReport][hangup]\x20sending\x20voice_outbound_channel:remove\x20event:','voice_outbound_channel:remove','linkedid','destuniqueid','[%s][voiceDialReport][hangup]','syncNewExten','[%s][voiceDialReport][newexten]\x20event:','application','toLowerCase','set','appdata','applicationdata','startsWith','cdr(','[%s][voiceDialReport][newexten]\x20application:%s\x20appdata:%s','split','[%s][voiceDialReport][newexten]','exports','moment','util','../../../config/environment','ami','redis','defaults','localhost','socket.io-emitter','channels','outboundChannels','outbound','dialbegin','bind','dialend','syncDialEnd','varset','syncVarSet','isNotNull','isUndefined','prototype','emit','syncDialBegin','debug','[%s][voiceDialReport][dialbegin]\x20event:','inspect','uniqueid','merge'];(function(_0x473478,_0x2d6ca5){var _0x2edfda=function(_0x78a7a3){while(--_0x78a7a3){_0x473478['push'](_0x473478['shift']());}};_0x2edfda(++_0x2d6ca5);}(_0xda19,0xd5));var _0x9da1=function(_0x5ceab3,_0x2dc762){_0x5ceab3=_0x5ceab3-0x0;var _0x5c4c40=_0xda19[_0x5ceab3];return _0x5c4c40;};'use strict';var _=require('lodash');var moment=require(_0x9da1('0x0'));var util=require(_0x9da1('0x1'));var Redis=require('ioredis');var config=require(_0x9da1('0x2'));var logger=require('../../../config/logger')(_0x9da1('0x3'));var ami=require('../ami');config[_0x9da1('0x4')]=_[_0x9da1('0x5')](config[_0x9da1('0x4')],{'host':_0x9da1('0x6'),'port':0x18eb});var io=require(_0x9da1('0x7'))(new Redis(config[_0x9da1('0x4')]));function VoiceDialReport(_0x23e4f7){this[_0x9da1('0x8')]=_0x23e4f7[_0x9da1('0x9')];this[_0x9da1('0xa')]=_0x23e4f7['outbound'];this['applications']={};this['variables']={};ami['on'](_0x9da1('0xb'),this['syncDialBegin'][_0x9da1('0xc')](this));ami['on'](_0x9da1('0xd'),this[_0x9da1('0xe')][_0x9da1('0xc')](this));ami['on'](_0x9da1('0xf'),this[_0x9da1('0x10')][_0x9da1('0xc')](this));ami['on']('hangup',this['syncHangup'][_0x9da1('0xc')](this));}VoiceDialReport['prototype'][_0x9da1('0x11')]=function(_0x1d93f8){return _0x1d93f8!==null&&!_[_0x9da1('0x12')](_0x1d93f8);};VoiceDialReport[_0x9da1('0x13')]['emit']=function(_0x2837e3,_0x535a13,_0x4d17e1){io['to'](_0x2837e3)[_0x9da1('0x14')](_0x535a13,_0x4d17e1);};VoiceDialReport['prototype'][_0x9da1('0x15')]=function(_0x43c093){try{if(this[_0x9da1('0x11')](_0x43c093)){logger[_0x9da1('0x16')](_0x9da1('0x17'),_0x43c093['uniqueid'],util[_0x9da1('0x18')](_0x43c093,{'showHidden':![],'depth':null}));if(this[_0x9da1('0x8')][_0x43c093[_0x9da1('0x19')]]){_[_0x9da1('0x1a')](this[_0x9da1('0x8')][_0x43c093[_0x9da1('0x19')]],{'starttime':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'lastevent':_0x9da1('0x1b'),'interface':_0x43c093[_0x9da1('0x1c')][_0x9da1('0x1d')](0x0,_0x43c093[_0x9da1('0x1c')][_0x9da1('0x1e')]('-')),'membername':_0x43c093[_0x9da1('0x1c')][_0x9da1('0x1d')](_0x43c093['channel'][_0x9da1('0x1e')]('/')+0x1,_0x43c093[_0x9da1('0x1c')][_0x9da1('0x1e')]('-'))},_[_0x9da1('0x1f')](_0x43c093,[_0x9da1('0x20'),'privilege']));logger['info'](_0x9da1('0x21'),_0x43c093[_0x9da1('0x19')],this[_0x9da1('0x8')][_0x43c093[_0x9da1('0x19')]][_0x9da1('0x22')],this[_0x9da1('0x8')][_0x43c093['uniqueid']][_0x9da1('0x23')]);logger[_0x9da1('0x16')]('[%s][voiceDialReport][dialbegin]\x20sending\x20voice_outbound_channel:save\x20event:',_0x43c093[_0x9da1('0x19')],util[_0x9da1('0x18')](this['channels'][_0x43c093[_0x9da1('0x19')]],{'showHidden':![],'depth':null}));if(this[_0x9da1('0x24')][_0x43c093['uniqueid']])_[_0x9da1('0x1a')](this[_0x9da1('0x8')][_0x43c093['uniqueid']],this['applications'][_0x43c093[_0x9da1('0x19')]]);this[_0x9da1('0x14')]('voice:outbound',_0x9da1('0x25'),this['channels'][_0x43c093['uniqueid']]);logger['debug'](_0x9da1('0x26'),_0x43c093[_0x9da1('0x19')],util[_0x9da1('0x18')](this[_0x9da1('0x8')][_0x43c093[_0x9da1('0x19')]],{'showHidden':![],'depth':null}));ami['emit'](_0x9da1('0x27'),this['channels'][_0x43c093[_0x9da1('0x19')]]);}}}catch(_0x235ced){logger['error'](_0x9da1('0x28'),_0x43c093[_0x9da1('0x19')],util['inspect'](_0x235ced,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9da1('0x13')][_0x9da1('0xe')]=function(_0x1802e0){try{if(this[_0x9da1('0x11')](_0x1802e0)){logger['debug']('[%s][voiceDialReport][dialend]\x20event:',_0x1802e0[_0x9da1('0x19')],util[_0x9da1('0x18')](_0x1802e0,{'showHidden':![],'depth':null}));if(this[_0x9da1('0x8')][_0x1802e0[_0x9da1('0x19')]]){this[_0x9da1('0x8')][_0x1802e0['uniqueid']][_0x9da1('0x29')]=_0x1802e0[_0x9da1('0x29')];if(_0x1802e0[_0x9da1('0x29')]===_0x9da1('0x2a')){this[_0x9da1('0x8')][_0x1802e0[_0x9da1('0x19')]]['connectedlinenum']=_0x1802e0[_0x9da1('0x2b')];this['channels'][_0x1802e0['uniqueid']][_0x9da1('0x2c')]=_0x1802e0['connectedlinename'];this[_0x9da1('0x8')][_0x1802e0[_0x9da1('0x19')]][_0x9da1('0x2d')]=moment()[_0x9da1('0x2e')](_0x9da1('0x2f'));this[_0x9da1('0x8')][_0x1802e0[_0x9da1('0x19')]][_0x9da1('0x30')]='connect';logger[_0x9da1('0x31')]('[%s][voiceDialReport][dialend]\x20agent:%s\x20lastevent:connect',_0x1802e0[_0x9da1('0x19')],_0x1802e0['channel']['substring'](_0x1802e0[_0x9da1('0x1c')]['lastIndexOf']('/')+0x1,_0x1802e0[_0x9da1('0x1c')][_0x9da1('0x1e')]('-')));logger['debug'](_0x9da1('0x32'),_0x1802e0[_0x9da1('0x19')],util[_0x9da1('0x18')](this[_0x9da1('0x8')][_0x1802e0['uniqueid']],{'showHidden':![],'depth':null}));ami[_0x9da1('0x14')]('custom:dialconnect',this[_0x9da1('0x8')][_0x1802e0['uniqueid']]);}logger[_0x9da1('0x16')](_0x9da1('0x33'),_0x1802e0['uniqueid'],util[_0x9da1('0x18')](this[_0x9da1('0x8')][_0x1802e0[_0x9da1('0x19')]],{'showHidden':![],'depth':null}));this['emit']('voice:outbound','voice_outbound_channel:save',this[_0x9da1('0x8')][_0x1802e0['uniqueid']]);}}}catch(_0x5b215c){logger[_0x9da1('0x34')](_0x9da1('0x35'),_0x1802e0[_0x9da1('0x19')],util['inspect'](_0x5b215c,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9da1('0x13')][_0x9da1('0x10')]=function(_0x25851b){try{if(this[_0x9da1('0x11')](_0x25851b)){logger[_0x9da1('0x16')](_0x9da1('0x36'),_0x25851b[_0x9da1('0x19')],util['inspect'](_0x25851b,{'showHidden':![],'depth':null}));this[_0x9da1('0x37')](_0x25851b['uniqueid'],_[_0x9da1('0x38')](_0x25851b['variable'])[0x0],_0x25851b[_0x9da1('0x39')]);if(this[_0x9da1('0x11')](_0x25851b['variable'])&&this[_0x9da1('0x11')](_0x25851b[_0x9da1('0x3a')]['outboundrouteid'])){if(_[_0x9da1('0x12')](this['channels'][_0x25851b[_0x9da1('0x19')]])){this[_0x9da1('0x8')][_0x25851b['uniqueid']]={'routeId':_0x25851b['value'],'variables':this[_0x9da1('0x3b')][_0x25851b[_0x9da1('0x19')]],'motionChannel':_0x9da1('0x3c')};logger[_0x9da1('0x31')](_0x9da1('0x3d'),_0x25851b[_0x9da1('0x19')],_0x25851b[_0x9da1('0x3a')][_0x9da1('0x3e')],_['keys'](_0x25851b[_0x9da1('0x3a')])[0x0],_0x25851b[_0x9da1('0x39')]);logger[_0x9da1('0x16')]('[%s][voiceDialReport][varset]\x20sending\x20voice_outbound_channel:save\x20event:',_0x25851b[_0x9da1('0x19')],util[_0x9da1('0x18')](this[_0x9da1('0x8')][_0x25851b['uniqueid']],{'showHidden':![],'depth':null}));this[_0x9da1('0x14')](_0x9da1('0x3f'),_0x9da1('0x25'),this['channels'][_0x25851b[_0x9da1('0x19')]]);}}}}catch(_0x4d3909){logger['error'](_0x9da1('0x40'),_0x25851b[_0x9da1('0x19')],util['inspect'](_0x4d3909,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9da1('0x13')][_0x9da1('0x37')]=function(_0x47d685,_0x31a2b6,_0x36f2e2){var _0x1984f7=[_0x9da1('0x41'),_0x9da1('0x42'),_0x9da1('0x43'),_0x9da1('0x44'),_0x9da1('0x45'),_0x9da1('0x46'),'rtpaudioqosrtt',_0x9da1('0x47'),_0x9da1('0x48'),_0x9da1('0x49'),_0x9da1('0x4a'),'bridgepvtcallid','membercalls',_0x9da1('0x4b'),_0x9da1('0x4c'),_0x9da1('0x4d'),_0x9da1('0x22'),_0x9da1('0x4e'),_0x9da1('0x4f')];if(!_[_0x9da1('0x50')](_0x31a2b6)&&!_[_0x9da1('0x51')](_0x1984f7,_0x31a2b6)){if(_[_0x9da1('0x12')](this[_0x9da1('0x3b')][_0x47d685])){this[_0x9da1('0x3b')][_0x47d685]={};}this[_0x9da1('0x3b')][_0x47d685][_0x31a2b6]=_0x36f2e2;}};VoiceDialReport[_0x9da1('0x13')][_0x9da1('0x52')]=function(_0x4c99e8){try{if(this[_0x9da1('0x11')](_0x4c99e8)){logger[_0x9da1('0x16')]('[%s][voiceDialReport][hangup]\x20event:',_0x4c99e8[_0x9da1('0x19')],util['inspect'](_0x4c99e8,{'showHidden':![],'depth':null}));if(this[_0x9da1('0x8')][_0x4c99e8['uniqueid']]){logger[_0x9da1('0x31')](_0x9da1('0x53'),_0x4c99e8[_0x9da1('0x19')],_0x4c99e8[_0x9da1('0x54')]);this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x55')]=moment()[_0x9da1('0x2e')](_0x9da1('0x2f'));this[_0x9da1('0x8')][_0x4c99e8['uniqueid']][_0x9da1('0x56')]=moment(this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x55')])[_0x9da1('0x57')](this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x58')],_0x9da1('0x59'));this[_0x9da1('0x8')][_0x4c99e8['uniqueid']][_0x9da1('0x30')]=_0x9da1('0x5a');this['outbound'][_0x9da1('0x5b')]+=0x1;if(this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x2d')]){this[_0x9da1('0xa')][_0x9da1('0x5c')]+=0x1;this[_0x9da1('0x8')][_0x4c99e8['uniqueid']][_0x9da1('0x5d')]=moment(this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x2d')])['diff'](this[_0x9da1('0x8')][_0x4c99e8['uniqueid']][_0x9da1('0x58')],_0x9da1('0x59'));this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x5e')]=moment(this[_0x9da1('0x8')][_0x4c99e8['uniqueid']]['endtime'])[_0x9da1('0x57')](this['channels'][_0x4c99e8['uniqueid']]['answertime'],_0x9da1('0x59'));this['outbound'][_0x9da1('0x5f')]+=this['channels'][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x5d')]||0x0;this['outbound'][_0x9da1('0x60')]+=this[_0x9da1('0x8')][_0x4c99e8['uniqueid']][_0x9da1('0x5e')];}this[_0x9da1('0xa')]['sumDuration']+=this['channels'][_0x4c99e8[_0x9da1('0x19')]][_0x9da1('0x56')];logger[_0x9da1('0x16')](_0x9da1('0x61'),_0x4c99e8[_0x9da1('0x19')],util[_0x9da1('0x18')](this['channels'][_0x4c99e8[_0x9da1('0x19')]],{'showHidden':![],'depth':null}));ami['emit']('custom:voiceDialReport',this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]]);logger[_0x9da1('0x16')](_0x9da1('0x62'),_0x4c99e8[_0x9da1('0x19')],util[_0x9da1('0x18')](this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]],{'showHidden':![],'depth':null}));ami[_0x9da1('0x14')]('custom:dialend',this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]]);logger[_0x9da1('0x16')](_0x9da1('0x63'),_0x4c99e8[_0x9da1('0x19')],util['inspect'](this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]],{'showHidden':![],'depth':null}));this[_0x9da1('0x14')](_0x9da1('0x3f'),_0x9da1('0x64'),this[_0x9da1('0xa')]);logger['info'](_0x9da1('0x65'),JSON['stringify'](this[_0x9da1('0x8')][_0x4c99e8['uniqueid']]));logger[_0x9da1('0x16')](_0x9da1('0x66'),_0x4c99e8[_0x9da1('0x19')],util[_0x9da1('0x18')](this['channels'][_0x4c99e8['uniqueid']],{'showHidden':![],'depth':null}));this['emit'](_0x9da1('0x3f'),_0x9da1('0x67'),this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x19')]]);delete this['channels'][_0x4c99e8['uniqueid']];}else if(this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x68')]]){this[_0x9da1('0x8')][_0x4c99e8['linkedid']]['uniqueid']=this[_0x9da1('0x8')][_0x4c99e8[_0x9da1('0x68')]][_0x9da1('0x69')];}if(this['variables'][_0x4c99e8['uniqueid']]){delete this[_0x9da1('0x3b')][_0x4c99e8[_0x9da1('0x19')]];}}}catch(_0x27c9a0){logger[_0x9da1('0x34')](_0x9da1('0x6a'),_0x4c99e8['uniqueid'],util[_0x9da1('0x18')](_0x27c9a0,{'showHidden':![],'depth':null}));}};VoiceDialReport[_0x9da1('0x13')][_0x9da1('0x6b')]=function(_0x1f0369){try{if(this['isNotNull'](_0x1f0369)){logger[_0x9da1('0x16')](_0x9da1('0x6c'),_0x1f0369[_0x9da1('0x19')],util['inspect'](_0x1f0369,{'showHidden':![],'depth':null}));if(_0x1f0369[_0x9da1('0x6d')][_0x9da1('0x6e')]()===_0x9da1('0x6f')){_0x1f0369['applicationdata']=(_0x1f0369[_0x9da1('0x70')]||_0x1f0369[_0x9da1('0x71')])['toLowerCase']();if(_[_0x9da1('0x72')](_0x1f0369['applicationdata'],_0x9da1('0x73'))){if(_['isUndefined'](this[_0x9da1('0x24')][_0x1f0369[_0x9da1('0x19')]]))this[_0x9da1('0x24')][_0x1f0369[_0x9da1('0x19')]]={};logger[_0x9da1('0x31')](_0x9da1('0x74'),_0x1f0369[_0x9da1('0x19')],_0x1f0369[_0x9da1('0x6d')],_0x1f0369[_0x9da1('0x71')]);var _0x457b45=_0x1f0369[_0x9da1('0x71')][_0x9da1('0x75')]('=');var _0x21119f=_0x457b45[0x0]['match'](/cdr\((.*)\)/);if(_0x21119f)this[_0x9da1('0x24')][_0x1f0369[_0x9da1('0x19')]][_0x21119f[0x1]]=_0x457b45[0x1];}}}}catch(_0x27cec6){logger[_0x9da1('0x34')](_0x9da1('0x76'),_0x1f0369['uniqueid'],util[_0x9da1('0x18')](_0x27cec6,{'showHidden':![],'depth':null}));}};module[_0x9da1('0x77')]=VoiceDialReport;
\ No newline at end of file
index 84e7df2..1e7620b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xff39=['syncMusicOnHoldStart','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','isEmpty','hasOwnProperty','originated','talking','unlockRR','clearZombieChannels','switch','sequence','isNil','Action','catch','message','inspect','error','[%s][voiceQueueReport][checkQueueReport]','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emitVoiceQueueChannelRemove','clearqueuereport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','name','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','queuecallerexitreason','ATTENDEDTRANSFER','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','type','strategy','available','loggedIn','sumBillable','sumDuration','total','unmanaged','abandoned','waiting','Trunk','active','callerid','Interval','stringify','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','voice_queue:save','isUndefined','queues','[voiceQueueReport][queues]','queuesummary','isNotNull','[voiceQueueReport][queuesummary]\x20event:','queue','countBy','toNumber','callers','loggedin','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','[voiceQueueReport][queuesummary]','[voiceQueueReport][queuesummarycomplete]\x20event:','inbound','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','info','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','keys','push','[%s][voiceQueueReport][queuecallerjoin]','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercomplete','queuecallercompleteAt','holdtime','originalposition','queuecallerabandon','ABANDONED','lastAssignedTo','[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s','[%s][voiceQueueReport][queuecallerleave]','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','[%s][voiceQueueReport][agentconnect]','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','queuecallerabandonAt','assigned','membername','queuecallerexit','transfer','reason','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','channel','local/','linkedid','queuecallerexitAt','queuecallerjoinAt','add','seconds','FORWARDTRANSFER','transfertype','FORWARD','transferexten','destexten','transferuniqueid','toUpperCase','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s','[%s][voiceQueueReport][agentcomplete]','value','variable','queuestatus','CONTINUE','TIMEOUT','lastevent','timeout','queuecallerleaveAt','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','custom:timeout','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]','addVariable','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitter','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipcallid','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberdynamic','memberlastcall','memberpenalty','memberrealtime','includes','syncHangup','length','sumHoldTime','diff','answered','milliseconds','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','cause-txt','[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:','custom:voiceQueueReport','[%s][voiceQueueReport][attendedtransfer]','transfereeuniqueid','secondtransfereruniqueid','ATTENDED','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','[%s][voiceQueueReport][blindtransfer]','BLINDTRANSFER','[%s][voiceQueueReport][blindTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','BlindTransfer','transfererchannel','[%s][voiceQueueReport][musiconholdstart]','[%s][voiceQueueReport][musiconholdstart]\x20mohstarttime:%s','mohstarttime','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][musiconholdstop]\x20mohtime:%s','mohtime','[%s][voiceQueueReport][newexten]\x20event:','application','set','appdata','CDR(routeAlias)','applicationdata','toLowerCase','startsWith','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','split','match','exports','lodash','moment','util','md5','../../../config/environment','../../../config/logger','ami','../model/queueReport','redis','defaults','socket.io-emitter','prototype','enqueue','tail','finally','queueReports','agents','channels','queueChannels','voiceQueues','flagQueueSummary','campaigns','variables','syncQueueSummary','bind','queuesummarycomplete','syncQueueSummaryComplete','queuecallerjoin','syncQueueCallerJoin','syncQueueCallerAbandon','queuecallerleave','syncQueueCallerLeave','agentcomplete','syncAgentComplete','syncAgentConnect','varset','syncVarSet','hangup','fullybooted','syncFullyBooted'];(function(_0x4ac59c,_0x5304a4){var _0x4c00cc=function(_0x11b1c6){while(--_0x11b1c6){_0x4ac59c['push'](_0x4ac59c['shift']());}};_0x4c00cc(++_0x5304a4);}(_0xff39,0xcb));var _0x9ff3=function(_0x4d9f63,_0x115c88){_0x4d9f63=_0x4d9f63-0x0;var _0xa6dcfe=_0xff39[_0x4d9f63];return _0xa6dcfe;};'use strict';var _=require(_0x9ff3('0x0'));var moment=require(_0x9ff3('0x1'));var util=require(_0x9ff3('0x2'));var md5=require(_0x9ff3('0x3'));var Redis=require('ioredis');var config=require(_0x9ff3('0x4'));var logger=require(_0x9ff3('0x5'))(_0x9ff3('0x6'));var ami=require('../ami');var QueueReport=require(_0x9ff3('0x7'));config[_0x9ff3('0x8')]=_[_0x9ff3('0x9')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x9ff3('0xa'))(new Redis(config[_0x9ff3('0x8')]));var Sequence=function(){};Sequence[_0x9ff3('0xb')][_0x9ff3('0xc')]=function(_0x3e7b81){this[_0x9ff3('0xd')]=this[_0x9ff3('0xd')]?this[_0x9ff3('0xd')][_0x9ff3('0xe')](_0x3e7b81):_0x3e7b81();};function VoiceQueueReport(_0x52e02e){this['sequence']=new Sequence();this[_0x9ff3('0xf')]={};this[_0x9ff3('0x10')]=_0x52e02e[_0x9ff3('0x10')];this[_0x9ff3('0x11')]=_0x52e02e[_0x9ff3('0x12')];this[_0x9ff3('0x13')]=_0x52e02e[_0x9ff3('0x13')];this[_0x9ff3('0x14')]=!![];this[_0x9ff3('0x15')]=_0x52e02e[_0x9ff3('0x15')];this[_0x9ff3('0x16')]={};ami['on']('queuesummary',this[_0x9ff3('0x17')][_0x9ff3('0x18')](this));ami['on'](_0x9ff3('0x19'),this[_0x9ff3('0x1a')][_0x9ff3('0x18')](this));ami['on'](_0x9ff3('0x1b'),this[_0x9ff3('0x1c')][_0x9ff3('0x18')](this));ami['on']('queuecallerabandon',this[_0x9ff3('0x1d')]['bind'](this));ami['on'](_0x9ff3('0x1e'),this[_0x9ff3('0x1f')]['bind'](this));ami['on'](_0x9ff3('0x20'),this[_0x9ff3('0x21')][_0x9ff3('0x18')](this));ami['on']('agentconnect',this[_0x9ff3('0x22')]['bind'](this));ami['on'](_0x9ff3('0x23'),this[_0x9ff3('0x24')][_0x9ff3('0x18')](this));ami['on'](_0x9ff3('0x25'),this['syncHangup'][_0x9ff3('0x18')](this));ami['on'](_0x9ff3('0x26'),this[_0x9ff3('0x27')][_0x9ff3('0x18')](this));ami['on']('musiconholdstart',this[_0x9ff3('0x28')][_0x9ff3('0x18')](this));ami['on']('musiconholdstop',this['syncMusicOnHoldStop'][_0x9ff3('0x18')](this));ami['on'](_0x9ff3('0x29'),this[_0x9ff3('0x2a')][_0x9ff3('0x18')](this));ami['on'](_0x9ff3('0x2b'),this[_0x9ff3('0x2c')][_0x9ff3('0x18')](this));this[_0x9ff3('0x2d')]();this['loopQueueShow']();}function clearChannels(_0x3abf03){if(!_[_0x9ff3('0x2e')](_0x3abf03)){for(var _0x16c28a in _0x3abf03){if(_0x3abf03[_0x9ff3('0x2f')](_0x16c28a)){delete _0x3abf03[_0x16c28a];}}}}function clearCampaigns(_0x1d5c53){if(!_[_0x9ff3('0x2e')](_0x1d5c53)){for(var _0x597304 in _0x1d5c53){if(_0x1d5c53[_0x9ff3('0x2f')](_0x597304)){_0x1d5c53[_0x597304][_0x9ff3('0x30')]=0x0;}}}}function clearVoiceQueues(_0x42fc4d){if(!_['isEmpty'](_0x42fc4d)){for(var _0x56bee1 in _0x42fc4d){if(_0x42fc4d['hasOwnProperty'](_0x56bee1)){_0x42fc4d[_0x56bee1][_0x9ff3('0x30')]=0x0;_0x42fc4d[_0x56bee1][_0x9ff3('0x31')]=0x0;_0x42fc4d[_0x56bee1]['pTalking']=0x0;_0x42fc4d[_0x56bee1]['waiting']=0x0;_0x42fc4d[_0x56bee1]['queueStatusComplete']=!![];}}}}function clearAgentBooked(_0x227bbb){if(!_[_0x9ff3('0x2e')](_0x227bbb)){for(var _0x39032f in _0x227bbb){if(_0x227bbb['hasOwnProperty'](_0x39032f)){_0x227bbb[_0x39032f][_0x9ff3('0x32')]=!![];}}}}VoiceQueueReport[_0x9ff3('0xb')][_0x9ff3('0x33')]=function(){var _0x2219af=this;for(var _0x73f27e in this['channels']){if(this[_0x9ff3('0x11')][_0x9ff3('0x2f')](_0x73f27e)&&!this[_0x9ff3('0x11')][_0x73f27e][_0x9ff3('0x34')]){this[_0x9ff3('0x35')][_0x9ff3('0xc')](function(){if(!_[_0x9ff3('0x36')](_0x2219af[_0x9ff3('0x11')][_0x73f27e])){return ami[_0x9ff3('0x37')]({'action':'status','channel':_0x2219af[_0x9ff3('0x11')][_0x73f27e]['channel']})[_0x9ff3('0x38')](function(_0x300a49){if(_0x300a49[_0x9ff3('0x39')]==='No\x20such\x20channel'){setTimeout(function(){if(_0x2219af[_0x9ff3('0x11')][_0x73f27e]){delete _0x2219af[_0x9ff3('0x11')][_0x73f27e];logger['error']('[%s][voiceQueueReport][checkChannel]',_0x73f27e,util[_0x9ff3('0x3a')](_0x300a49,{'showHidden':![],'depth':null}));}if(_0x2219af[_0x9ff3('0xf')][_0x73f27e]){delete _0x2219af[_0x9ff3('0xf')][_0x73f27e];logger[_0x9ff3('0x3b')](_0x9ff3('0x3c'),_0x73f27e,util[_0x9ff3('0x3a')](_0x300a49,{'showHidden':![],'depth':null}));}if(_0x2219af[_0x9ff3('0x16')][_0x73f27e]){delete _0x2219af[_0x9ff3('0x16')][_0x73f27e];logger['error'](_0x9ff3('0x3d'),_0x73f27e,util[_0x9ff3('0x3a')](_0x300a49,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport[_0x9ff3('0xb')][_0x9ff3('0x27')]=function(){logger['error'](_0x9ff3('0x3e'));clearChannels(this[_0x9ff3('0x11')]);this[_0x9ff3('0x3f')](this[_0x9ff3('0xf')]);clearAgentBooked(this[_0x9ff3('0x10')]);clearVoiceQueues(this[_0x9ff3('0x13')]);clearCampaigns(this[_0x9ff3('0x15')]);};VoiceQueueReport[_0x9ff3('0xb')]['clearQueueReport']=function(_0x32bcb4){var _0x2841f4=this;if(!_[_0x9ff3('0x2e')](_0x32bcb4)){for(var _0x11b3bd in _0x32bcb4){if(_0x32bcb4[_0x9ff3('0x2f')](_0x11b3bd)){_0x2841f4[_0x9ff3('0x40')](_0x32bcb4[_0x11b3bd],_0x9ff3('0x41'));delete _0x32bcb4[_0x11b3bd];}}}};VoiceQueueReport[_0x9ff3('0xb')][_0x9ff3('0x42')]=function(_0x3bc5e0,_0x174645,_0x431692){io['to'](_0x3bc5e0)[_0x9ff3('0x42')](_0x174645,_0x431692);};VoiceQueueReport[_0x9ff3('0xb')][_0x9ff3('0x43')]=function(_0x5e93d4,_0x4a1043){logger[_0x9ff3('0x44')](_0x9ff3('0x45')+_0x4a1043+_0x9ff3('0x46'),_0x5e93d4[_0x9ff3('0x47')],util['inspect'](_0x5e93d4,{'showHidden':![],'depth':null}));this[_0x9ff3('0x42')](util[_0x9ff3('0x48')](_0x9ff3('0x49'),_0x5e93d4[_0x9ff3('0x4a')]),_0x9ff3('0x4b'),_0x5e93d4);io['emit'](_0x9ff3('0x4c'),_0x5e93d4);};VoiceQueueReport[_0x9ff3('0xb')]['emitVoiceQueueChannelRemove']=function(_0x5bd28a,_0x51209e){logger[_0x9ff3('0x44')](_0x9ff3('0x45')+_0x51209e+_0x9ff3('0x4d'),_0x5bd28a[_0x9ff3('0x47')],util[_0x9ff3('0x3a')](_0x5bd28a,{'showHidden':![],'depth':null}));if(_0x5bd28a[_0x9ff3('0x4e')]===_0x9ff3('0x4f'))return;this[_0x9ff3('0x42')](util[_0x9ff3('0x48')]('voice:queue:%s',_0x5bd28a[_0x9ff3('0x4a')]),_0x9ff3('0x50'),_0x5bd28a);io[_0x9ff3('0x42')](_0x9ff3('0x51'),_0x5bd28a);};VoiceQueueReport[_0x9ff3('0xb')][_0x9ff3('0x52')]=function(_0x493bbd,_0x203150){if(_0x493bbd[_0x9ff3('0x53')]==='inbound'){var _0x5ccef7={'id':_0x493bbd['id'],'name':_0x493bbd[_0x9ff3('0x4a')],'strategy':_0x493bbd[_0x9ff3('0x54')],'answered':_0x493bbd['answered'],'available':_0x493bbd[_0x9ff3('0x55')],'loggedIn':_0x493bbd[_0x9ff3('0x56')],'pTalking':_0x493bbd['pTalking'],'sumBillable':_0x493bbd[_0x9ff3('0x57')],'sumDuration':_0x493bbd[_0x9ff3('0x58')],'sumHoldTime':_0x493bbd['sumHoldTime']||0x0,'talking':_0x493bbd[_0x9ff3('0x31')],'total':_0x493bbd[_0x9ff3('0x59')],'type':_0x493bbd[_0x9ff3('0x53')],'unmanaged':_0x493bbd[_0x9ff3('0x5a')],'abandoned':_0x493bbd[_0x9ff3('0x5b')],'waiting':_0x493bbd[_0x9ff3('0x5c')]};if(_0x493bbd[_0x9ff3('0x5d')]){_0x5ccef7[_0x9ff3('0x5d')]={'id':_0x493bbd[_0x9ff3('0x5d')]['id'],'name':_0x493bbd['Trunk'][_0x9ff3('0x4a')],'active':_0x493bbd['Trunk'][_0x9ff3('0x5e')],'callerid':_0x493bbd['Trunk'][_0x9ff3('0x5f')]};}if(_0x493bbd[_0x9ff3('0x60')]){_0x5ccef7[_0x9ff3('0x60')]={'id':_0x493bbd[_0x9ff3('0x60')]['id'],'name':_0x493bbd[_0x9ff3('0x60')]['name']};}var _0x9a56ed=md5(JSON[_0x9ff3('0x61')](_0x5ccef7));if(_0x493bbd[_0x9ff3('0x3')]!==_0x9a56ed){_0x493bbd['md5']=_0x9a56ed;logger[_0x9ff3('0x44')](_0x9ff3('0x62')+_0x203150+_0x9ff3('0x63'),util[_0x9ff3('0x3a')](_0x5ccef7,{'showHidden':![],'depth':null}));this[_0x9ff3('0x42')](util['format'](_0x9ff3('0x49'),_0x5ccef7[_0x9ff3('0x4a')]),_0x9ff3('0x64'),_0x5ccef7);}}};VoiceQueueReport[_0x9ff3('0xb')]['isNotNull']=function(_0x4bb1f8){return _0x4bb1f8!==null&&!_[_0x9ff3('0x65')](_0x4bb1f8);};VoiceQueueReport[_0x9ff3('0xb')]['loopQueueShow']=function(){var _0x31428b=this;setInterval(function(){_0x31428b['clearZombieChannels']();ami[_0x9ff3('0x37')]({'action':_0x9ff3('0x66')})[_0x9ff3('0x38')](function(_0x52faa4){logger[_0x9ff3('0x3b')](_0x9ff3('0x67'),util[_0x9ff3('0x3a')](_0x52faa4,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x9ff3('0xb')][_0x9ff3('0x2d')]=function(){var _0x1bb867=this;setInterval(function(){if(_0x1bb867[_0x9ff3('0x14')]){return ami[_0x9ff3('0x37')]({'action':_0x9ff3('0x68')})['then'](function(){_0x1bb867['flagQueueSummary']=![];})[_0x9ff3('0x38')](function(_0x228656){logger[_0x9ff3('0x3b')]('[voiceQueueReport][queuesummary]',util[_0x9ff3('0x3a')](_0x228656,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x9ff3('0xb')][_0x9ff3('0x17')]=function(_0x34e8cd){try{if(this[_0x9ff3('0x69')](_0x34e8cd)&&this[_0x9ff3('0x69')](_0x34e8cd['queue'])){logger['debug'](_0x9ff3('0x6a'),util[_0x9ff3('0x3a')](_0x34e8cd,{'showHidden':![],'depth':null}));if(this[_0x9ff3('0x13')][_0x34e8cd['queue']]){logger['info']('[voiceQueueReport][queuesummary]\x20name:%s',_0x34e8cd[_0x9ff3('0x6b')]);var _0x318d1f=_[_0x9ff3('0x6c')](this[_0x9ff3('0x11')],_0x9ff3('0x6b'))[_0x34e8cd[_0x9ff3('0x6b')]]||0x0;var _0xb25ec4=_0x318d1f-_0x34e8cd['callers'];if(this['voiceQueues'][_0x34e8cd[_0x9ff3('0x6b')]][_0x9ff3('0x5c')]!==_[_0x9ff3('0x6d')](_0x34e8cd[_0x9ff3('0x6e')])||this[_0x9ff3('0x13')][_0x34e8cd['queue']][_0x9ff3('0x56')]!==_[_0x9ff3('0x6d')](_0x34e8cd[_0x9ff3('0x6f')])||this[_0x9ff3('0x13')][_0x34e8cd['queue']][_0x9ff3('0x55')]!==_[_0x9ff3('0x6d')](_0x34e8cd['available'])||this[_0x9ff3('0x13')][_0x34e8cd[_0x9ff3('0x6b')]][_0x9ff3('0x31')]!==_0xb25ec4){this[_0x9ff3('0x13')][_0x34e8cd[_0x9ff3('0x6b')]][_0x9ff3('0x5c')]=_[_0x9ff3('0x6d')](_0x34e8cd['callers']);this['voiceQueues'][_0x34e8cd[_0x9ff3('0x6b')]][_0x9ff3('0x56')]=_[_0x9ff3('0x6d')](_0x34e8cd[_0x9ff3('0x6f')]);this[_0x9ff3('0x13')][_0x34e8cd['queue']][_0x9ff3('0x55')]=_[_0x9ff3('0x6d')](_0x34e8cd['available']);this[_0x9ff3('0x13')][_0x34e8cd[_0x9ff3('0x6b')]][_0x9ff3('0x31')]=_0xb25ec4>0x0?_0xb25ec4:0x0;this[_0x9ff3('0x13')][_0x34e8cd[_0x9ff3('0x6b')]][_0x9ff3('0x31')]=this[_0x9ff3('0x13')][_0x34e8cd[_0x9ff3('0x6b')]]['talking']>_[_0x9ff3('0x6d')](_0x34e8cd[_0x9ff3('0x6f')])?_['toNumber'](_0x34e8cd['loggedin']):this['voiceQueues'][_0x34e8cd[_0x9ff3('0x6b')]][_0x9ff3('0x31')];this['emitVoiceQueueSummary'](this[_0x9ff3('0x13')][_0x34e8cd['queue']],'queuesummary');}logger[_0x9ff3('0x44')](_0x9ff3('0x70'),util['inspect'](this['voiceQueues'][_0x34e8cd[_0x9ff3('0x6b')]],{'showHidden':![],'depth':null}));ami[_0x9ff3('0x42')](_0x9ff3('0x71'),this[_0x9ff3('0x13')][_0x34e8cd[_0x9ff3('0x6b')]]);}}}catch(_0x3eeba6){logger[_0x9ff3('0x3b')](_0x9ff3('0x72'),util[_0x9ff3('0x3a')](_0x3eeba6,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9ff3('0xb')][_0x9ff3('0x1a')]=function(_0x252fa8){logger['debug'](_0x9ff3('0x73'),util['inspect'](_0x252fa8,{'showHidden':![],'depth':null}));this['flagQueueSummary']=!![];};VoiceQueueReport['prototype']['syncQueueCallerJoin']=function(_0x2c180b){try{if(this['isNotNull'](_0x2c180b)){logger[_0x9ff3('0x44')]('[%s][voiceQueueReport][queuecallerjoin]',_0x2c180b['uniqueid'],util[_0x9ff3('0x3a')](_0x2c180b,{'showHidden':![],'depth':null}));if(_[_0x9ff3('0x65')](this[_0x9ff3('0xf')][_0x2c180b[_0x9ff3('0x47')]]))this[_0x9ff3('0xf')][_0x2c180b[_0x9ff3('0x47')]]=[];if(_[_0x9ff3('0x65')](this['channels'][_0x2c180b[_0x9ff3('0x47')]]))this[_0x9ff3('0x11')][_0x2c180b[_0x9ff3('0x47')]]={};var _0x523f6a=new QueueReport();_0x523f6a[_0x9ff3('0x4a')]=_0x2c180b[_0x9ff3('0x6b')];_0x523f6a[_0x9ff3('0x53')]=this[_0x9ff3('0x13')][_0x523f6a[_0x9ff3('0x4a')]]&&this[_0x9ff3('0x13')][_0x523f6a[_0x9ff3('0x4a')]]['type']?this[_0x9ff3('0x13')][_0x523f6a[_0x9ff3('0x4a')]][_0x9ff3('0x53')]||_0x9ff3('0x74'):'inbound';_0x523f6a[_0x9ff3('0x6b')]=_0x2c180b[_0x9ff3('0x6b')];_0x523f6a['queuecallerjoinAt']=moment()[_0x9ff3('0x48')](_0x9ff3('0x75'));_0x523f6a[_0x9ff3('0x76')]=_0x2c180b['position'];_0x523f6a[_0x9ff3('0x77')]=_0x2c180b[_0x9ff3('0x77')];_0x523f6a[_0x9ff3('0x47')]=_0x2c180b[_0x9ff3('0x47')];_0x523f6a['routealias']=this['channels'][_0x2c180b[_0x9ff3('0x47')]][_0x9ff3('0x78')];logger[_0x9ff3('0x79')](_0x9ff3('0x7a'),_0x523f6a[_0x9ff3('0x4a')],_0x523f6a[_0x9ff3('0x53')]);_[_0x9ff3('0x7b')](_0x523f6a,_[_0x9ff3('0x7c')](_0x2c180b,_[_0x9ff3('0x7d')](_0x523f6a)));this['queueReports'][_0x2c180b['uniqueid']][_0x9ff3('0x7e')](_0x523f6a);this['channels'][_0x2c180b['uniqueid']]=_0x523f6a;this[_0x9ff3('0x43')](_0x523f6a,'queuecallerjoin');}}catch(_0x3197ee){logger[_0x9ff3('0x3b')](_0x9ff3('0x7f'),_0x2c180b[_0x9ff3('0x47')],util[_0x9ff3('0x3a')](_0x3197ee,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x9ff3('0x1d')]=function(_0x5e6a87){try{if(this[_0x9ff3('0x69')](_0x5e6a87)){logger['debug'](_0x9ff3('0x80'),_0x5e6a87[_0x9ff3('0x47')],util[_0x9ff3('0x3a')](_0x5e6a87,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x5e6a87[_0x9ff3('0x47')]]){var _0x22bf35=_[_0x9ff3('0x81')](this[_0x9ff3('0xf')][_0x5e6a87[_0x9ff3('0x47')]]);_0x22bf35[_0x9ff3('0x82')]=![];_0x22bf35[_0x9ff3('0x83')]=null;_0x22bf35[_0x9ff3('0x84')]=_0x5e6a87[_0x9ff3('0x84')];_0x22bf35[_0x9ff3('0x85')]=_0x5e6a87['originalposition'];_0x22bf35[_0x9ff3('0x86')]=!![];_0x22bf35['queuecallerabandonAt']=moment()[_0x9ff3('0x48')](_0x9ff3('0x75'));_0x22bf35[_0x9ff3('0x4e')]=_0x9ff3('0x87');_0x22bf35[_0x9ff3('0x88')]=null;logger[_0x9ff3('0x79')](_0x9ff3('0x89'),_0x22bf35[_0x9ff3('0x4a')],_0x22bf35['type']);this[_0x9ff3('0x11')][_0x5e6a87[_0x9ff3('0x47')]]=_0x22bf35;this[_0x9ff3('0x40')](_0x22bf35,'queuecallerabandon');}}}catch(_0x13556c){logger[_0x9ff3('0x3b')](_0x9ff3('0x80'),_0x5e6a87['uniqueid'],util[_0x9ff3('0x3a')](_0x13556c,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9ff3('0xb')][_0x9ff3('0x1f')]=function(_0x3f1ea3){try{if(this[_0x9ff3('0x69')](_0x3f1ea3)){logger[_0x9ff3('0x44')](_0x9ff3('0x8a'),_0x3f1ea3[_0x9ff3('0x47')],util[_0x9ff3('0x3a')](_0x3f1ea3,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x3f1ea3[_0x9ff3('0x47')]]){var _0x388c1f=_[_0x9ff3('0x81')](this['queueReports'][_0x3f1ea3[_0x9ff3('0x47')]]);_0x388c1f['queuecallerleaveAt']=moment()[_0x9ff3('0x48')]('YYYY-MM-DD\x20HH:mm:ss');_0x388c1f[_0x9ff3('0x8b')]=_0x3f1ea3[_0x9ff3('0x8b')];_0x388c1f[_0x9ff3('0x8c')]=_0x3f1ea3[_0x9ff3('0x8c')];logger[_0x9ff3('0x79')](_0x9ff3('0x8d'),_0x388c1f[_0x9ff3('0x4a')],_0x388c1f[_0x9ff3('0x53')],_0x3f1ea3['connectedlinenum'],_0x3f1ea3['connectedlinename']);this[_0x9ff3('0x11')][_0x3f1ea3['uniqueid']]=_0x388c1f;this['emitVoiceQueueChannelSave'](_0x388c1f,_0x9ff3('0x1e'));}}}catch(_0x9dc51f){logger[_0x9ff3('0x3b')](_0x9ff3('0x8a'),_0x3f1ea3['uniqueid'],util[_0x9ff3('0x3a')](_0x9dc51f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9ff3('0xb')]['syncAgentConnect']=function(_0x35a6a7){try{if(this['isNotNull'](_0x35a6a7)){logger[_0x9ff3('0x44')](_0x9ff3('0x8e'),_0x35a6a7['uniqueid'],util[_0x9ff3('0x3a')](_0x35a6a7,{'showHidden':![],'depth':null}));if(this[_0x9ff3('0xf')][_0x35a6a7['uniqueid']]){var _0xc673e9=_['last'](this[_0x9ff3('0xf')][_0x35a6a7[_0x9ff3('0x47')]]);_0xc673e9[_0x9ff3('0x82')]=!![];_0xc673e9[_0x9ff3('0x4e')]=_0x9ff3('0x8f');logger['info'](_0x9ff3('0x90'),_0xc673e9[_0x9ff3('0x4a')],_0xc673e9['type']);}}}catch(_0x454795){logger[_0x9ff3('0x3b')](_0x9ff3('0x8e'),_0x35a6a7[_0x9ff3('0x47')],util[_0x9ff3('0x3a')](_0x454795,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9ff3('0xb')]['syncAgentComplete']=function(_0x22e618){try{if(this[_0x9ff3('0x69')](_0x22e618)){logger[_0x9ff3('0x44')]('[%s][voiceQueueReport][agentcomplete]',_0x22e618[_0x9ff3('0x47')],util[_0x9ff3('0x3a')](_0x22e618,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x22e618[_0x9ff3('0x47')]]){var _0x217d1b=_[_0x9ff3('0x81')](this['queueReports'][_0x22e618[_0x9ff3('0x47')]]);_0x217d1b['queuecallerabandon']=![];_0x217d1b[_0x9ff3('0x91')]=null;_0x217d1b[_0x9ff3('0x92')]=!![];_0x217d1b[_0x9ff3('0x88')]=_0x22e618[_0x9ff3('0x93')];_0x217d1b['holdtime']=_0x22e618[_0x9ff3('0x84')];_0x217d1b[_0x9ff3('0x82')]=!![];_0x217d1b[_0x9ff3('0x94')]=![];_0x217d1b['queuecallerexitAt']=null;if(!_0x217d1b[_0x9ff3('0x95')]){if(_0x22e618[_0x9ff3('0x96')]==_0x9ff3('0x95')){_0x217d1b[_0x9ff3('0x4e')]=_0x9ff3('0x97');logger['info'](_0x9ff3('0x98'),_0x217d1b[_0x9ff3('0x4a')],_0x217d1b[_0x9ff3('0x53')]);}else{if(_['startsWith'](_0x22e618[_0x9ff3('0x99')]['toLowerCase'](),_0x9ff3('0x9a'))){if(this[_0x9ff3('0xf')][_0x22e618[_0x9ff3('0x9b')]]){var _0x177061=_[_0x9ff3('0x81')](this[_0x9ff3('0xf')][_0x22e618[_0x9ff3('0x9b')]]);_0x177061[_0x9ff3('0x82')]=![];_0x177061[_0x9ff3('0x94')]=!![];_0x177061[_0x9ff3('0x9c')]=moment(_0x217d1b[_0x9ff3('0x9d')])[_0x9ff3('0x9e')](_0x22e618[_0x9ff3('0x84')],_0x9ff3('0x9f'))[_0x9ff3('0x48')](_0x9ff3('0x75'));_0x177061[_0x9ff3('0x4e')]=_0x9ff3('0xa0');_0x177061[_0x9ff3('0x95')]=!![];_0x177061[_0x9ff3('0xa1')]=_0x9ff3('0xa2');_0x177061[_0x9ff3('0xa3')]=_0x22e618[_0x9ff3('0xa4')];_0x177061[_0x9ff3('0xa5')]=_0x22e618[_0x9ff3('0x47')];logger[_0x9ff3('0x79')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER',_0x177061[_0x9ff3('0x4a')],_0x177061[_0x9ff3('0x53')]);var _0x24f53d=this[_0x9ff3('0xf')][_0x22e618[_0x9ff3('0x9b')]];this[_0x9ff3('0xf')][_0x22e618[_0x9ff3('0x9b')]]=this[_0x9ff3('0xf')][_0x22e618[_0x9ff3('0x47')]];this['queueReports'][_0x22e618['uniqueid']]=_0x24f53d;}}else{_0x217d1b[_0x9ff3('0x4e')]='COMPLETEDBY'+_0x22e618[_0x9ff3('0x96')][_0x9ff3('0xa6')]();logger[_0x9ff3('0x79')](_0x9ff3('0xa7'),_0x217d1b[_0x9ff3('0x4a')],_0x217d1b[_0x9ff3('0x53')],_0x217d1b[_0x9ff3('0x4e')]);}}}this[_0x9ff3('0x11')][_0x22e618['uniqueid']]=_0x217d1b;this[_0x9ff3('0x40')](_0x217d1b,'agentcomplete');}}}catch(_0xaa345){logger[_0x9ff3('0x3b')](_0x9ff3('0xa8'),_0x22e618[_0x9ff3('0x47')],util[_0x9ff3('0x3a')](_0xaa345,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x9ff3('0x24')]=function(_0x58b966){try{if(this[_0x9ff3('0x69')](_0x58b966)){logger[_0x9ff3('0x44')]('[%s][voiceQueueReport][varset]',_0x58b966[_0x9ff3('0x47')],util[_0x9ff3('0x3a')](_0x58b966,{'showHidden':![],'depth':null}));this['addVariable'](_0x58b966['uniqueid'],_[_0x9ff3('0x7d')](_0x58b966['variable'])[0x0],_0x58b966[_0x9ff3('0xa9')]);if(this[_0x9ff3('0xf')][_0x58b966[_0x9ff3('0x47')]]){var _0x1f1663=_[_0x9ff3('0x81')](this['queueReports'][_0x58b966[_0x9ff3('0x47')]]);if(_0x1f1663){if(this[_0x9ff3('0x69')](_0x58b966[_0x9ff3('0xaa')])&&this['isNotNull'](_0x58b966[_0x9ff3('0xaa')][_0x9ff3('0xab')])){switch(_0x58b966[_0x9ff3('0xa9')]){case _0x9ff3('0xac'):_0x1f1663[_0x9ff3('0x94')]=![];_0x1f1663[_0x9ff3('0x9c')]=null;break;case _0x9ff3('0xad'):_0x1f1663[_0x9ff3('0xae')]=_0x9ff3('0xaf');_0x1f1663['queuecallerexit']=!![];_0x1f1663[_0x9ff3('0x9c')]=moment()[_0x9ff3('0x48')](_0x9ff3('0x75'));_0x1f1663[_0x9ff3('0xb0')]=moment()[_0x9ff3('0x48')](_0x9ff3('0x75'));logger[_0x9ff3('0x44')](_0x9ff3('0xb1'),_0x58b966[_0x9ff3('0x47')],util[_0x9ff3('0x3a')](_0x1f1663,{'showHidden':![],'depth':null}));ami['emit'](_0x9ff3('0xb2'),_0x1f1663);break;default:_0x1f1663[_0x9ff3('0x94')]=!![];_0x1f1663[_0x9ff3('0x9c')]=moment()[_0x9ff3('0x48')](_0x9ff3('0x75'));_0x1f1663[_0x9ff3('0xb0')]=moment()[_0x9ff3('0x48')](_0x9ff3('0x75'));}_0x1f1663[_0x9ff3('0x86')]=![];_0x1f1663[_0x9ff3('0x91')]=null;_0x1f1663[_0x9ff3('0x4e')]=_0x58b966[_0x9ff3('0xa9')];this[_0x9ff3('0x11')][_0x58b966[_0x9ff3('0x47')]]=_0x1f1663;this[_0x9ff3('0x40')](_0x1f1663,'varset');}else if(this['isNotNull'](_0x58b966[_0x9ff3('0xaa')])&&this[_0x9ff3('0x69')](_0x58b966[_0x9ff3('0xaa')][_0x9ff3('0xb3')])){if(!_0x1f1663['queuecallerabandon']){_0x1f1663[_0x9ff3('0x94')]=!![];_0x1f1663[_0x9ff3('0x9c')]=moment()[_0x9ff3('0x48')]('YYYY-MM-DD\x20HH:mm:ss');_0x1f1663['queuecallerexitreason']=_0x9ff3('0xb4');_0x1f1663[_0x9ff3('0xb0')]=moment()[_0x9ff3('0x48')](_0x9ff3('0x75'));this[_0x9ff3('0x11')][_0x58b966[_0x9ff3('0x47')]]=_0x1f1663;}}logger[_0x9ff3('0x79')]('[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s',_0x58b966[_0x9ff3('0x47')],_0x1f1663[_0x9ff3('0x4a')],_0x1f1663[_0x9ff3('0x53')],_[_0x9ff3('0x7d')](_0x58b966['variable'])[0x0],_0x58b966['value']);_0x1f1663[_0x9ff3('0x16')]=this['variables'][_0x58b966['uniqueid']];}}}}catch(_0x183228){logger[_0x9ff3('0x3b')](_0x9ff3('0xb5'),_0x58b966[_0x9ff3('0x47')],util[_0x9ff3('0x3a')](_0x183228,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9ff3('0xb')][_0x9ff3('0xb6')]=function(_0x3896c7,_0x228422,_0x1da6ca){var _0x1975d1=[_0x9ff3('0xb7'),_0x9ff3('0xb8'),_0x9ff3('0xb9'),_0x9ff3('0xba'),_0x9ff3('0xbb'),_0x9ff3('0xbc'),'rtpaudioqosrtt',_0x9ff3('0xbd'),_0x9ff3('0xbe'),_0x9ff3('0xbf'),_0x9ff3('0xc0'),_0x9ff3('0xc1'),_0x9ff3('0xc2'),_0x9ff3('0xc3'),'memberinterface',_0x9ff3('0xc4'),_0x9ff3('0x93'),_0x9ff3('0xc5'),_0x9ff3('0xc6')];if(!_[_0x9ff3('0x36')](_0x228422)&&!_[_0x9ff3('0xc7')](_0x1975d1,_0x228422)){if(_[_0x9ff3('0x65')](this['variables'][_0x3896c7])){this[_0x9ff3('0x16')][_0x3896c7]={};}this[_0x9ff3('0x16')][_0x3896c7][_0x228422]=_0x1da6ca;}};VoiceQueueReport[_0x9ff3('0xb')][_0x9ff3('0xc8')]=function(_0x1c7f46){try{if(this[_0x9ff3('0x69')](_0x1c7f46)){logger[_0x9ff3('0x44')]('[%s][voiceQueueReport][hangup]',_0x1c7f46[_0x9ff3('0x47')],util[_0x9ff3('0x3a')](_0x1c7f46,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x1c7f46[_0x9ff3('0x47')]]){for(var _0x2ba2bd=0x0,_0x4f8958={};_0x2ba2bd<this[_0x9ff3('0xf')][_0x1c7f46[_0x9ff3('0x47')]][_0x9ff3('0xc9')];_0x2ba2bd+=0x1){_0x4f8958=this[_0x9ff3('0xf')][_0x1c7f46[_0x9ff3('0x47')]][_0x2ba2bd];if(this['voiceQueues'][_0x4f8958[_0x9ff3('0x6b')]]){if(_0x4f8958[_0x9ff3('0x94')]&&_0x4f8958[_0x9ff3('0x95')]!=!![]){this['voiceQueues'][_0x4f8958[_0x9ff3('0x6b')]][_0x9ff3('0x5a')]+=0x1;}if(_0x4f8958[_0x9ff3('0x86')]){this[_0x9ff3('0x13')][_0x4f8958['queue']][_0x9ff3('0x5b')]+=0x1;}this['voiceQueues'][_0x4f8958[_0x9ff3('0x6b')]][_0x9ff3('0xca')]+=moment(_0x4f8958[_0x9ff3('0xb0')])[_0x9ff3('0xcb')](_0x4f8958[_0x9ff3('0x9d')],_0x9ff3('0x9f'))||0x0;if(_0x2ba2bd===this['queueReports'][_0x1c7f46[_0x9ff3('0x47')]]['length']-0x1){this[_0x9ff3('0x13')][_0x4f8958[_0x9ff3('0x6b')]][_0x9ff3('0x58')]+=moment()['milliseconds'](0x0)['diff'](_0x4f8958[_0x9ff3('0x9d')],'seconds');this[_0x9ff3('0x13')][_0x4f8958['queue']][_0x9ff3('0x59')]+=0x1;if(_0x4f8958['queuecallercomplete']){this[_0x9ff3('0x13')][_0x4f8958[_0x9ff3('0x6b')]][_0x9ff3('0xcc')]+=0x1;this[_0x9ff3('0x13')][_0x4f8958[_0x9ff3('0x6b')]][_0x9ff3('0x57')]+=moment()[_0x9ff3('0xcd')](0x0)[_0x9ff3('0xcb')](_0x4f8958[_0x9ff3('0xb0')],'seconds');_0x4f8958[_0x9ff3('0x83')]=moment()[_0x9ff3('0x48')](_0x9ff3('0x75'));_0x4f8958[_0x9ff3('0x94')]=![];_0x4f8958[_0x9ff3('0x9c')]=null;}if(_0x4f8958[_0x9ff3('0x94')]&&_0x4f8958[_0x9ff3('0x95')]!=!![]){_0x4f8958[_0x9ff3('0xae')]=_0x9ff3('0x5a');logger['debug']('[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:',_0x1c7f46[_0x9ff3('0x47')],util[_0x9ff3('0x3a')](_0x4f8958,{'showHidden':![],'depth':null}));ami[_0x9ff3('0x42')](_0x9ff3('0xce'),_0x4f8958);}if(_0x4f8958[_0x9ff3('0x86')]){_0x4f8958[_0x9ff3('0xae')]=_0x9ff3('0x5b');logger[_0x9ff3('0x44')](_0x9ff3('0xcf'),_0x1c7f46[_0x9ff3('0x47')],util['inspect'](_0x4f8958,{'showHidden':![],'depth':null}));ami['emit'](_0x9ff3('0xd0'),_0x4f8958);}}else{this[_0x9ff3('0x13')][_0x4f8958['queue']][_0x9ff3('0x58')]+=this[_0x9ff3('0x13')][_0x4f8958[_0x9ff3('0x6b')]][_0x9ff3('0xca')];}logger[_0x9ff3('0x79')]('[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s',_0x1c7f46[_0x9ff3('0x47')],_0x4f8958[_0x9ff3('0x4a')],_0x4f8958['type'],_0x1c7f46[_0x9ff3('0xd1')]);this[_0x9ff3('0x11')][_0x1c7f46[_0x9ff3('0x47')]]=_0x4f8958;this[_0x9ff3('0x40')](_0x4f8958,_0x9ff3('0x25'));this[_0x9ff3('0x52')](this[_0x9ff3('0x13')][_0x4f8958['queue']],_0x9ff3('0x25'));}}logger['debug'](_0x9ff3('0xd2'),_0x1c7f46[_0x9ff3('0x47')],util['inspect'](this[_0x9ff3('0xf')][_0x1c7f46[_0x9ff3('0x47')]],{'showHidden':![],'depth':null}));ami[_0x9ff3('0x42')](_0x9ff3('0xd3'),this[_0x9ff3('0xf')][_0x1c7f46[_0x9ff3('0x47')]]);if(_0x4f8958['queuecallerexitreason']===_0x9ff3('0x4f'))return;delete this[_0x9ff3('0xf')][_0x1c7f46[_0x9ff3('0x47')]];delete this[_0x9ff3('0x11')][_0x1c7f46[_0x9ff3('0x47')]];}if(this[_0x9ff3('0x16')][_0x1c7f46[_0x9ff3('0x47')]]){delete this['variables'][_0x1c7f46[_0x9ff3('0x47')]];}}}catch(_0x2f828b){logger[_0x9ff3('0x3b')]('[%s][voiceQueueReport][hangup]',_0x1c7f46[_0x9ff3('0x47')],util[_0x9ff3('0x3a')](_0x2f828b,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9ff3('0xb')]['syncAttendedTransfer']=function(_0x54ecf6){try{if(this[_0x9ff3('0x69')](_0x54ecf6)){logger['debug'](_0x9ff3('0xd4'),_0x54ecf6['uniqueid'],util[_0x9ff3('0x3a')](_0x54ecf6,{'showHidden':![],'depth':null}));var _0x52d5ab;var _0x1c42ba;var _0x115db2;if(this[_0x9ff3('0xf')][_0x54ecf6[_0x9ff3('0xd5')]]){_0x52d5ab=_[_0x9ff3('0x81')](this[_0x9ff3('0xf')][_0x54ecf6[_0x9ff3('0xd5')]]);_0x52d5ab[_0x9ff3('0xa3')]=_0x54ecf6['secondtransfererexten'];_0x52d5ab['transferuniqueid']=_0x54ecf6[_0x9ff3('0xd6')];_0x52d5ab[_0x9ff3('0x4e')]=_0x9ff3('0x4f');_0x52d5ab[_0x9ff3('0x95')]=!![];_0x52d5ab[_0x9ff3('0xa1')]=_0x9ff3('0xd7');if(this['queueReports'][_0x54ecf6[_0x9ff3('0xd6')]]){_0x115db2=this[_0x9ff3('0xf')][_0x54ecf6[_0x9ff3('0xd6')]];this[_0x9ff3('0xf')][_0x54ecf6[_0x9ff3('0xd6')]]=this[_0x9ff3('0xf')][_0x54ecf6['transfereeuniqueid']];this[_0x9ff3('0xf')][_0x54ecf6[_0x9ff3('0xd5')]]=_0x115db2;_0x1c42ba=_[_0x9ff3('0x81')](this[_0x9ff3('0xf')][_0x54ecf6[_0x9ff3('0xd5')]]);_0x1c42ba[_0x9ff3('0x34')]=!![];}logger[_0x9ff3('0x79')](_0x9ff3('0xd8'),_0x54ecf6[_0x9ff3('0x47')],_0x52d5ab[_0x9ff3('0x4a')],_0x52d5ab[_0x9ff3('0x53')],_0x52d5ab[_0x9ff3('0xa3')],_0x52d5ab[_0x9ff3('0xa5')]);}else if(this[_0x9ff3('0xf')][_0x54ecf6[_0x9ff3('0xd9')]]){_0x52d5ab=_[_0x9ff3('0x81')](this[_0x9ff3('0xf')][_0x54ecf6[_0x9ff3('0xd9')]]);_0x52d5ab[_0x9ff3('0xa3')]=_0x54ecf6[_0x9ff3('0xda')];_0x52d5ab[_0x9ff3('0xa5')]=_0x54ecf6[_0x9ff3('0xdb')];_0x52d5ab[_0x9ff3('0x4e')]='ATTENDEDTRANSFER';_0x52d5ab[_0x9ff3('0x95')]=!![];_0x52d5ab[_0x9ff3('0xa1')]=_0x9ff3('0xd7');if(this[_0x9ff3('0xf')][_0x54ecf6[_0x9ff3('0xdb')]]){_0x115db2=this['queueReports'][_0x54ecf6[_0x9ff3('0xdb')]];this['queueReports'][_0x54ecf6['origtransfereruniqueid']]=this[_0x9ff3('0xf')][_0x54ecf6[_0x9ff3('0xd9')]];this[_0x9ff3('0xf')][_0x54ecf6[_0x9ff3('0xd9')]]=_0x115db2;_0x1c42ba=_['last'](this[_0x9ff3('0xf')][_0x54ecf6[_0x9ff3('0xd9')]]);_0x1c42ba[_0x9ff3('0x34')]=!![];}logger[_0x9ff3('0x79')](_0x9ff3('0xd8'),_0x54ecf6[_0x9ff3('0x47')],_0x52d5ab[_0x9ff3('0x4a')],_0x52d5ab['type'],_0x52d5ab['transferexten'],_0x52d5ab[_0x9ff3('0xa5')]);}else if(this[_0x9ff3('0xf')][_0x54ecf6[_0x9ff3('0xdb')]]){_0x52d5ab=_['last'](this[_0x9ff3('0xf')][_0x54ecf6['origtransfereruniqueid']]);_0x52d5ab[_0x9ff3('0xa3')]=_0x54ecf6[_0x9ff3('0xda')];_0x52d5ab[_0x9ff3('0xa5')]=_0x54ecf6[_0x9ff3('0xdb')];_0x52d5ab['queuecallerexitreason']=_0x9ff3('0x4f');_0x52d5ab['transfer']=!![];_0x52d5ab['transfertype']=_0x9ff3('0xd7');}else if(this[_0x9ff3('0xf')][_0x54ecf6[_0x9ff3('0xd6')]]){_0x52d5ab=_[_0x9ff3('0x81')](this[_0x9ff3('0xf')][_0x54ecf6['secondtransfereruniqueid']]);_0x52d5ab[_0x9ff3('0xa3')]=_0x54ecf6['secondtransfererexten'];_0x52d5ab[_0x9ff3('0xa5')]=_0x54ecf6['secondtransfereruniqueid'];_0x52d5ab[_0x9ff3('0x4e')]='ATTENDEDTRANSFER';_0x52d5ab[_0x9ff3('0x95')]=!![];_0x52d5ab[_0x9ff3('0xa1')]=_0x9ff3('0xd7');}}}catch(_0xdc2453){logger[_0x9ff3('0x3b')](_0x9ff3('0xd4'),_0x54ecf6[_0x9ff3('0x47')],util[_0x9ff3('0x3a')](_0xdc2453,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9ff3('0xb')][_0x9ff3('0x2c')]=function(_0x42ddd0){try{if(this[_0x9ff3('0x69')](_0x42ddd0)){logger[_0x9ff3('0x44')](_0x9ff3('0xdc'),_0x42ddd0[_0x9ff3('0x47')],util[_0x9ff3('0x3a')](_0x42ddd0,{'showHidden':![],'depth':null}));if(this[_0x9ff3('0xf')][_0x42ddd0['transfereeuniqueid']]){var _0x3651d3=_[_0x9ff3('0x81')](this[_0x9ff3('0xf')][_0x42ddd0['transfereeuniqueid']]);_0x3651d3['queuecallerexitreason']=_0x9ff3('0xdd');_0x3651d3[_0x9ff3('0x95')]=!![];_0x3651d3[_0x9ff3('0xa1')]='BLIND';_0x3651d3[_0x9ff3('0xa3')]=_0x42ddd0['extension'];_0x3651d3[_0x9ff3('0xa5')]=_0x42ddd0[_0x9ff3('0xd5')];logger[_0x9ff3('0x79')](_0x9ff3('0xde'),_0x42ddd0[_0x9ff3('0x47')],_0x3651d3[_0x9ff3('0x4a')],_0x3651d3[_0x9ff3('0x53')],_0x3651d3['transferexten'],_0x3651d3[_0x9ff3('0xa5')]);this[_0x9ff3('0xc8')]({'event':_0x9ff3('0xdf'),'uniqueid':_0x42ddd0[_0x9ff3('0xd5')],'context':_0x42ddd0['context'],'channel':_0x42ddd0[_0x9ff3('0xe0')]});}}}catch(_0x3d998d){logger['error']('[%s][voiceQueueReport][blindtransfer]',_0x42ddd0[_0x9ff3('0x47')],util[_0x9ff3('0x3a')](_0x3d998d,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncMusicOnHoldStart']=function(_0x533d0e){try{if(this[_0x9ff3('0x69')](_0x533d0e)){logger[_0x9ff3('0x44')](_0x9ff3('0xe1'),_0x533d0e['uniqueid'],util[_0x9ff3('0x3a')](_0x533d0e,{'showHidden':![],'depth':null}));if(this[_0x9ff3('0xf')][_0x533d0e[_0x9ff3('0x47')]]){var _0x4a5cc4=_[_0x9ff3('0x81')](this[_0x9ff3('0xf')][_0x533d0e[_0x9ff3('0x47')]]);if(!_[_0x9ff3('0x36')](_0x4a5cc4[_0x9ff3('0xb0')])){_0x4a5cc4['mohstarttime']=moment()[_0x9ff3('0x48')](_0x9ff3('0x75'));logger[_0x9ff3('0x79')](_0x9ff3('0xe2'),_0x533d0e[_0x9ff3('0x47')],_0x4a5cc4[_0x9ff3('0xe3')]);}}}}catch(_0x552175){logger[_0x9ff3('0x3b')](_0x9ff3('0xe1'),_0x533d0e['uniqueid'],util['inspect'](_0x552175,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9ff3('0xb')]['syncMusicOnHoldStop']=function(_0x450a57){try{if(this[_0x9ff3('0x69')](_0x450a57)){logger['debug'](_0x9ff3('0xe4'),_0x450a57[_0x9ff3('0x47')],util[_0x9ff3('0x3a')](_0x450a57,{'showHidden':![],'depth':null}));if(this[_0x9ff3('0xf')][_0x450a57['uniqueid']]){var _0x10bd7a=_[_0x9ff3('0x81')](this[_0x9ff3('0xf')][_0x450a57[_0x9ff3('0x47')]]);if(!_[_0x9ff3('0x36')](_0x10bd7a[_0x9ff3('0xe3')])){_0x10bd7a['mohtime']+=moment()['milliseconds'](0x0)[_0x9ff3('0xcb')](_0x10bd7a[_0x9ff3('0xe3')],'seconds');logger['info'](_0x9ff3('0xe5'),_0x450a57[_0x9ff3('0x47')],_0x10bd7a[_0x9ff3('0xe6')]);delete _0x10bd7a['mohstarttime'];}}}}catch(_0x1861e1){logger[_0x9ff3('0x3b')](_0x9ff3('0xe4'),_0x450a57[_0x9ff3('0x47')],util[_0x9ff3('0x3a')](_0x1861e1,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x9ff3('0xb')]['syncNewExten']=function(_0x24a719){try{if(this[_0x9ff3('0x69')](_0x24a719)){logger[_0x9ff3('0x44')](_0x9ff3('0xe7'),_0x24a719[_0x9ff3('0x47')],util[_0x9ff3('0x3a')](_0x24a719,{'showHidden':![],'depth':null}));if(_0x24a719[_0x9ff3('0xe8')]['toLowerCase']()===_0x9ff3('0xe9')){_0x24a719['applicationdata']=_0x24a719[_0x9ff3('0xea')]&&_0x24a719[_0x9ff3('0xea')]['startsWith'](_0x9ff3('0xeb'))?_0x24a719['appdata']:(_0x24a719[_0x9ff3('0xea')]||_0x24a719[_0x9ff3('0xec')])[_0x9ff3('0xed')]();if(_[_0x9ff3('0xee')](_0x24a719[_0x9ff3('0xec')][_0x9ff3('0xed')](),'cdr(')){logger['info'](_0x9ff3('0xef'),_0x24a719['uniqueid'],_0x24a719[_0x9ff3('0xe8')],_0x24a719[_0x9ff3('0xec')]);if(_['isUndefined'](this[_0x9ff3('0x11')][_0x24a719[_0x9ff3('0x47')]]))this[_0x9ff3('0x11')][_0x24a719[_0x9ff3('0x47')]]={};var _0x2a627f=_0x24a719[_0x9ff3('0xec')][_0x9ff3('0xf0')]('=');var _0x2bfbf8=_0x2a627f[0x0][_0x9ff3('0xed')]()[_0x9ff3('0xf1')](/cdr\((.*)\)/);if(_0x2bfbf8)this[_0x9ff3('0x11')][_0x24a719[_0x9ff3('0x47')]][_0x2bfbf8[0x1]]=_0x2a627f[0x1];}}}}catch(_0x46cbae){logger['error']('[%s][voiceQueueReport][newexten]',_0x24a719[_0x9ff3('0x47')],util[_0x9ff3('0x3a')](_0x46cbae,{'showHidden':![],'depth':null}));}};module[_0x9ff3('0xf2')]=VoiceQueueReport;
\ No newline at end of file
+var _0xee17=['redis','localhost','socket.io-emitter','prototype','enqueue','tail','finally','sequence','queueReports','agents','channels','queueChannels','voiceQueues','campaigns','queuesummary','syncQueueSummary','bind','queuecallerjoin','syncQueueCallerJoin','syncQueueCallerLeave','syncAgentComplete','agentconnect','syncAgentConnect','varset','syncVarSet','hangup','fullybooted','syncFullyBooted','musiconholdstart','syncMusicOnHoldStart','musiconholdstop','syncMusicOnHoldStop','attendedtransfer','syncAttendedTransfer','blindtransfer','syncBlindTransfer','loopQueueSummary','loopQueueShow','hasOwnProperty','isEmpty','originated','pTalking','waiting','queueStatusComplete','unlockRR','clearZombieChannels','switch','isNil','status','channel','catch','message','No\x20such\x20channel','inspect','error','[%s][voiceQueueReport][checkQueueReport]','variables','[%s][voiceQueueReport][checkVariables]','[FullyBooted]\x20clear\x20realtime','clearQueueReport','emit','emitVoiceQueueChannelSave','debug','[%s][voiceQueueReport][',']\x20sending\x20voice_queue_channel:save\x20event:','uniqueid','format','voice:queue:%s','voice_queue_channel:save','voice_queue_presence:save',']\x20sending\x20voice_queue_channel:remove\x20event:','ATTENDEDTRANSFER','name','voice_queue_channel:remove','voice_queue_presence:remove','emitVoiceQueueSummary','type','inbound','loggedIn','sumBillable','sumHoldTime','total','unmanaged','abandoned','Trunk','active','callerid','Interval','[voiceQueueReport][',']\x20sending\x20voice_queue:save\x20event:','isNotNull','isUndefined','Action','queues','[voiceQueueReport][queues]','flagQueueSummary','[voiceQueueReport][queuesummary]','queue','info','[voiceQueueReport][queuesummary]\x20name:%s','callers','toNumber','loggedin','available','talking','[voiceQueueReport][queuesummary]\x20sending\x20queuesummary\x20event:','custom:queuesummary','syncQueueSummaryComplete','[voiceQueueReport][queuesummarycomplete]\x20event:','custom:queuesummarycomplete','[%s][voiceQueueReport][queuecallerjoin]','YYYY-MM-DD\x20HH:mm:ss','position','count','routealias','[voiceQueueReport][queuecallerjoin]\x20name:%s\x20type:%s','merge','pick','push','[%s][voiceQueueReport][queuecallerabandon]','last','queuecallercompleteAt','holdtime','queuecallerabandon','queuecallerabandonAt','queuecallerexitreason','ABANDONED','lastAssignedTo','emitVoiceQueueChannelRemove','[%s][voiceQueueReport][queuecallerleave]','queuecallerleaveAt','connectedlinenum','connectedlinename','[voiceQueueReport][queuecallerleave]\x20name:%s\x20type:%s\x20connectedlinenum:%s\x20connectedlinename:%s','queuecallerleave','COMPLETEDBYAGENT','[voiceQueueReport][agentconnect]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETEDBYAGENT','[%s][voiceQueueReport][agentcomplete]','assigned','membername','queuecallercomplete','queuecallerexit','queuecallerexitAt','transfer','COMPLETED','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:COMPLETED','startsWith','toLowerCase','local/','linkedid','queuecallerjoinAt','add','seconds','FORWARDTRANSFER','transfertype','FORWARD','transferexten','transferuniqueid','[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:FORWARDTRANSFER','COMPLETEDBY','reason','agentcomplete','[%s][voiceQueueReport][varset]','addVariable','variable','queuestatus','value','CONTINUE','timeout','[%s][voiceQueueReport][varset]\x20sending\x20timeout\x20event:','queueposition','EXITWITHKEY','[%s][voiceQueueReport][varset]\x20name:%s\x20type:%s\x20variable:%s\x20value:%s','keys','rtpaudioqos','rtpaudioqosbridged','rtpaudioqosjitterbridged','rtpaudioqosloss','rtpaudioqoslossbridged','rtpaudioqosrttbridged','sipuri','bridgepeer','bridgepvtcallid','membercalls','memberinterface','memberlastcall','memberpenalty','memberrealtime','includes','handleHangup','diff','length','sumDuration','answered','milliseconds','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerunmanaged\x20event:','custom:queuecallerunmanaged','[%s][voiceQueueReport][hangup]\x20sending\x20queuecallerabandon\x20event:','custom:queuecallerabandon','[%s][voiceQueueReport][hangup]\x20name:%s\x20type:%s\x20reason:%s','custom:voiceQueueReport','syncHangup','[%s][voiceQueueReport][hangup]','cause','cause-txt','transfereeuniqueid','secondtransfererexten','secondtransfereruniqueid','[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s','transfertargetuniqueid','origtransfererexten','origtransfereruniqueid','ATTENDED','transferid','[%s][voiceQueueReport][attendedtransfer]','[%s][voiceQueueReport][blindtransfer]','BLIND','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]\x20mohtime:%s','mohtime','[%s][voiceQueueReport][musiconholdstop]','[%s][voiceQueueReport][newexten]\x20event:','set','applicationdata','appdata','CDR(routeAlias)','cdr(','[%s][voiceQueueReport][newexten]\x20application:%s\x20appdata:%s','application','split','exports','lodash','moment','util','md5','ioredis','ami','../ami','../model/queueReport'];(function(_0x585546,_0x5970df){var _0x3ec139=function(_0x230e8b){while(--_0x230e8b){_0x585546['push'](_0x585546['shift']());}};_0x3ec139(++_0x5970df);}(_0xee17,0x1e2));var _0x7ee1=function(_0x2ec389,_0x4a07ac){_0x2ec389=_0x2ec389-0x0;var _0x235fa5=_0xee17[_0x2ec389];return _0x235fa5;};'use strict';var _=require(_0x7ee1('0x0'));var moment=require(_0x7ee1('0x1'));var util=require(_0x7ee1('0x2'));var md5=require(_0x7ee1('0x3'));var Redis=require(_0x7ee1('0x4'));var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x7ee1('0x5'));var ami=require(_0x7ee1('0x6'));var QueueReport=require(_0x7ee1('0x7'));config[_0x7ee1('0x8')]=_['defaults'](config['redis'],{'host':_0x7ee1('0x9'),'port':0x18eb});var io=require(_0x7ee1('0xa'))(new Redis(config['redis']));var Sequence=function(){};Sequence[_0x7ee1('0xb')][_0x7ee1('0xc')]=function(_0x4a5a1c){this[_0x7ee1('0xd')]=this[_0x7ee1('0xd')]?this[_0x7ee1('0xd')][_0x7ee1('0xe')](_0x4a5a1c):_0x4a5a1c();};function VoiceQueueReport(_0x16573f){this[_0x7ee1('0xf')]=new Sequence();this[_0x7ee1('0x10')]={};this[_0x7ee1('0x11')]=_0x16573f[_0x7ee1('0x11')];this[_0x7ee1('0x12')]=_0x16573f[_0x7ee1('0x13')];this[_0x7ee1('0x14')]=_0x16573f[_0x7ee1('0x14')];this['flagQueueSummary']=!![];this[_0x7ee1('0x15')]=_0x16573f[_0x7ee1('0x15')];this['variables']={};ami['on'](_0x7ee1('0x16'),this[_0x7ee1('0x17')][_0x7ee1('0x18')](this));ami['on']('queuesummarycomplete',this['syncQueueSummaryComplete'][_0x7ee1('0x18')](this));ami['on'](_0x7ee1('0x19'),this[_0x7ee1('0x1a')][_0x7ee1('0x18')](this));ami['on']('queuecallerabandon',this['syncQueueCallerAbandon'][_0x7ee1('0x18')](this));ami['on']('queuecallerleave',this[_0x7ee1('0x1b')][_0x7ee1('0x18')](this));ami['on']('agentcomplete',this[_0x7ee1('0x1c')][_0x7ee1('0x18')](this));ami['on'](_0x7ee1('0x1d'),this[_0x7ee1('0x1e')][_0x7ee1('0x18')](this));ami['on'](_0x7ee1('0x1f'),this[_0x7ee1('0x20')][_0x7ee1('0x18')](this));ami['on'](_0x7ee1('0x21'),this['syncHangup'][_0x7ee1('0x18')](this));ami['on'](_0x7ee1('0x22'),this[_0x7ee1('0x23')]['bind'](this));ami['on'](_0x7ee1('0x24'),this[_0x7ee1('0x25')][_0x7ee1('0x18')](this));ami['on'](_0x7ee1('0x26'),this[_0x7ee1('0x27')][_0x7ee1('0x18')](this));ami['on'](_0x7ee1('0x28'),this[_0x7ee1('0x29')]['bind'](this));ami['on'](_0x7ee1('0x2a'),this[_0x7ee1('0x2b')]['bind'](this));this[_0x7ee1('0x2c')]();this[_0x7ee1('0x2d')]();}function clearChannels(_0x47d477){if(!_['isEmpty'](_0x47d477)){for(var _0x5562e0 in _0x47d477){if(_0x47d477[_0x7ee1('0x2e')](_0x5562e0)){delete _0x47d477[_0x5562e0];}}}}function clearCampaigns(_0x488af2){if(!_[_0x7ee1('0x2f')](_0x488af2)){for(var _0x5842ef in _0x488af2){if(_0x488af2[_0x7ee1('0x2e')](_0x5842ef)){_0x488af2[_0x5842ef][_0x7ee1('0x30')]=0x0;}}}}function clearVoiceQueues(_0x1b1796){if(!_[_0x7ee1('0x2f')](_0x1b1796)){for(var _0x3dcb39 in _0x1b1796){if(_0x1b1796['hasOwnProperty'](_0x3dcb39)){_0x1b1796[_0x3dcb39][_0x7ee1('0x30')]=0x0;_0x1b1796[_0x3dcb39]['talking']=0x0;_0x1b1796[_0x3dcb39][_0x7ee1('0x31')]=0x0;_0x1b1796[_0x3dcb39][_0x7ee1('0x32')]=0x0;_0x1b1796[_0x3dcb39][_0x7ee1('0x33')]=!![];}}}}function clearAgentBooked(_0x48473a){if(!_[_0x7ee1('0x2f')](_0x48473a)){for(var _0x54b81b in _0x48473a){if(_0x48473a[_0x7ee1('0x2e')](_0x54b81b)){_0x48473a[_0x54b81b][_0x7ee1('0x34')]=!![];}}}}VoiceQueueReport['prototype'][_0x7ee1('0x35')]=function(){var _0x3af8b5=this;for(var _0x13cc48 in this['channels']){if(this[_0x7ee1('0x12')][_0x7ee1('0x2e')](_0x13cc48)&&!this[_0x7ee1('0x12')][_0x13cc48][_0x7ee1('0x36')]){this[_0x7ee1('0xf')][_0x7ee1('0xc')](function(){if(!_[_0x7ee1('0x37')](_0x3af8b5[_0x7ee1('0x12')][_0x13cc48])){return ami['Action']({'action':_0x7ee1('0x38'),'channel':_0x3af8b5[_0x7ee1('0x12')][_0x13cc48][_0x7ee1('0x39')]})[_0x7ee1('0x3a')](function(_0x31f1cb){if(_0x31f1cb[_0x7ee1('0x3b')]===_0x7ee1('0x3c')){setTimeout(function(){if(_0x3af8b5['channels'][_0x13cc48]){delete _0x3af8b5['channels'][_0x13cc48];logger['error']('[%s][voiceQueueReport][checkChannel]',_0x13cc48,util[_0x7ee1('0x3d')](_0x31f1cb,{'showHidden':![],'depth':null}));}if(_0x3af8b5[_0x7ee1('0x10')][_0x13cc48]){delete _0x3af8b5[_0x7ee1('0x10')][_0x13cc48];logger[_0x7ee1('0x3e')](_0x7ee1('0x3f'),_0x13cc48,util[_0x7ee1('0x3d')](_0x31f1cb,{'showHidden':![],'depth':null}));}if(_0x3af8b5[_0x7ee1('0x40')][_0x13cc48]){delete _0x3af8b5[_0x7ee1('0x40')][_0x13cc48];logger[_0x7ee1('0x3e')](_0x7ee1('0x41'),_0x13cc48,util[_0x7ee1('0x3d')](_0x31f1cb,{'showHidden':![],'depth':null}));}},0x1f40);}});}});}}};VoiceQueueReport['prototype']['syncFullyBooted']=function(){logger[_0x7ee1('0x3e')](_0x7ee1('0x42'));clearChannels(this['channels']);this[_0x7ee1('0x43')](this[_0x7ee1('0x10')]);clearAgentBooked(this[_0x7ee1('0x11')]);clearVoiceQueues(this[_0x7ee1('0x14')]);clearCampaigns(this['campaigns']);};VoiceQueueReport['prototype'][_0x7ee1('0x43')]=function(_0x524576){var _0x345594=this;if(!_[_0x7ee1('0x2f')](_0x524576)){for(var _0x12c463 in _0x524576){if(_0x524576[_0x7ee1('0x2e')](_0x12c463)){_0x345594['emitVoiceQueueChannelRemove'](_0x524576[_0x12c463],'clearqueuereport');delete _0x524576[_0x12c463];}}}};VoiceQueueReport[_0x7ee1('0xb')][_0x7ee1('0x44')]=function(_0x5f2e28,_0x57d87b,_0x29b3c0){io['to'](_0x5f2e28)['emit'](_0x57d87b,_0x29b3c0);};VoiceQueueReport[_0x7ee1('0xb')][_0x7ee1('0x45')]=function(_0x2b4660,_0x5df878){logger[_0x7ee1('0x46')](_0x7ee1('0x47')+_0x5df878+_0x7ee1('0x48'),_0x2b4660[_0x7ee1('0x49')],util[_0x7ee1('0x3d')](_0x2b4660,{'showHidden':![],'depth':null}));this[_0x7ee1('0x44')](util[_0x7ee1('0x4a')](_0x7ee1('0x4b'),_0x2b4660['name']),_0x7ee1('0x4c'),_0x2b4660);io['emit'](_0x7ee1('0x4d'),_0x2b4660);};VoiceQueueReport[_0x7ee1('0xb')]['emitVoiceQueueChannelRemove']=function(_0x3f30ea,_0x21a802){logger[_0x7ee1('0x46')](_0x7ee1('0x47')+_0x21a802+_0x7ee1('0x4e'),_0x3f30ea[_0x7ee1('0x49')],util[_0x7ee1('0x3d')](_0x3f30ea,{'showHidden':![],'depth':null}));if(_0x3f30ea['queuecallerexitreason']===_0x7ee1('0x4f'))return;this[_0x7ee1('0x44')](util[_0x7ee1('0x4a')]('voice:queue:%s',_0x3f30ea[_0x7ee1('0x50')]),_0x7ee1('0x51'),_0x3f30ea);io['emit'](_0x7ee1('0x52'),_0x3f30ea);};VoiceQueueReport[_0x7ee1('0xb')][_0x7ee1('0x53')]=function(_0x14c464,_0x1a3c16){if(_0x14c464[_0x7ee1('0x54')]===_0x7ee1('0x55')){var _0x20abc3={'id':_0x14c464['id'],'name':_0x14c464[_0x7ee1('0x50')],'strategy':_0x14c464['strategy'],'answered':_0x14c464['answered'],'available':_0x14c464['available'],'loggedIn':_0x14c464[_0x7ee1('0x56')],'pTalking':_0x14c464['pTalking'],'sumBillable':_0x14c464[_0x7ee1('0x57')],'sumDuration':_0x14c464['sumDuration'],'sumHoldTime':_0x14c464[_0x7ee1('0x58')]||0x0,'talking':_0x14c464['talking'],'total':_0x14c464[_0x7ee1('0x59')],'type':_0x14c464[_0x7ee1('0x54')],'unmanaged':_0x14c464[_0x7ee1('0x5a')],'abandoned':_0x14c464[_0x7ee1('0x5b')],'waiting':_0x14c464['waiting']};if(_0x14c464['Trunk']){_0x20abc3['Trunk']={'id':_0x14c464[_0x7ee1('0x5c')]['id'],'name':_0x14c464[_0x7ee1('0x5c')][_0x7ee1('0x50')],'active':_0x14c464[_0x7ee1('0x5c')][_0x7ee1('0x5d')],'callerid':_0x14c464[_0x7ee1('0x5c')][_0x7ee1('0x5e')]};}if(_0x14c464[_0x7ee1('0x5f')]){_0x20abc3[_0x7ee1('0x5f')]={'id':_0x14c464[_0x7ee1('0x5f')]['id'],'name':_0x14c464[_0x7ee1('0x5f')][_0x7ee1('0x50')]};}var _0x11e323=md5(JSON['stringify'](_0x20abc3));if(_0x14c464[_0x7ee1('0x3')]!==_0x11e323){_0x14c464['md5']=_0x11e323;logger[_0x7ee1('0x46')](_0x7ee1('0x60')+_0x1a3c16+_0x7ee1('0x61'),util[_0x7ee1('0x3d')](_0x20abc3,{'showHidden':![],'depth':null}));this['emit'](util[_0x7ee1('0x4a')](_0x7ee1('0x4b'),_0x20abc3[_0x7ee1('0x50')]),'voice_queue:save',_0x20abc3);}}};VoiceQueueReport[_0x7ee1('0xb')][_0x7ee1('0x62')]=function(_0x503c27){return _0x503c27!==null&&!_[_0x7ee1('0x63')](_0x503c27);};VoiceQueueReport['prototype'][_0x7ee1('0x2d')]=function(){var _0x52eaf7=this;setInterval(function(){_0x52eaf7['clearZombieChannels']();ami[_0x7ee1('0x64')]({'action':_0x7ee1('0x65')})[_0x7ee1('0x3a')](function(_0x23c626){logger[_0x7ee1('0x3e')](_0x7ee1('0x66'),util[_0x7ee1('0x3d')](_0x23c626,{'showHidden':![],'depth':null}));});},0x2710);};VoiceQueueReport[_0x7ee1('0xb')][_0x7ee1('0x2c')]=function(){var _0x3459bb=this;setInterval(function(){if(_0x3459bb[_0x7ee1('0x67')]){return ami[_0x7ee1('0x64')]({'action':_0x7ee1('0x16')})['then'](function(){_0x3459bb['flagQueueSummary']=![];})[_0x7ee1('0x3a')](function(_0x59164c){logger[_0x7ee1('0x3e')](_0x7ee1('0x68'),util[_0x7ee1('0x3d')](_0x59164c,{'showHidden':![],'depth':null}));});}},0x3e8);};VoiceQueueReport[_0x7ee1('0xb')][_0x7ee1('0x17')]=function(_0x5aee66){try{if(this[_0x7ee1('0x62')](_0x5aee66)&&this[_0x7ee1('0x62')](_0x5aee66[_0x7ee1('0x69')])){logger['debug']('[voiceQueueReport][queuesummary]\x20event:',util[_0x7ee1('0x3d')](_0x5aee66,{'showHidden':![],'depth':null}));if(this[_0x7ee1('0x14')][_0x5aee66[_0x7ee1('0x69')]]){logger[_0x7ee1('0x6a')](_0x7ee1('0x6b'),_0x5aee66[_0x7ee1('0x69')]);var _0x48719a=_['countBy'](this[_0x7ee1('0x12')],_0x7ee1('0x69'))[_0x5aee66['queue']]||0x0;var _0x1b6276=_0x48719a-_0x5aee66[_0x7ee1('0x6c')];if(this[_0x7ee1('0x14')][_0x5aee66[_0x7ee1('0x69')]][_0x7ee1('0x32')]!==_['toNumber'](_0x5aee66[_0x7ee1('0x6c')])||this[_0x7ee1('0x14')][_0x5aee66[_0x7ee1('0x69')]][_0x7ee1('0x56')]!==_[_0x7ee1('0x6d')](_0x5aee66[_0x7ee1('0x6e')])||this[_0x7ee1('0x14')][_0x5aee66[_0x7ee1('0x69')]]['available']!==_['toNumber'](_0x5aee66[_0x7ee1('0x6f')])||this[_0x7ee1('0x14')][_0x5aee66[_0x7ee1('0x69')]]['talking']!==_0x1b6276){this['voiceQueues'][_0x5aee66[_0x7ee1('0x69')]][_0x7ee1('0x32')]=_['toNumber'](_0x5aee66['callers']);this[_0x7ee1('0x14')][_0x5aee66[_0x7ee1('0x69')]][_0x7ee1('0x56')]=_['toNumber'](_0x5aee66['loggedin']);this[_0x7ee1('0x14')][_0x5aee66[_0x7ee1('0x69')]][_0x7ee1('0x6f')]=_[_0x7ee1('0x6d')](_0x5aee66['available']);this[_0x7ee1('0x14')][_0x5aee66[_0x7ee1('0x69')]]['talking']=_0x1b6276>0x0?_0x1b6276:0x0;this[_0x7ee1('0x14')][_0x5aee66[_0x7ee1('0x69')]][_0x7ee1('0x70')]=this['voiceQueues'][_0x5aee66[_0x7ee1('0x69')]]['talking']>_[_0x7ee1('0x6d')](_0x5aee66[_0x7ee1('0x6e')])?_[_0x7ee1('0x6d')](_0x5aee66[_0x7ee1('0x6e')]):this['voiceQueues'][_0x5aee66[_0x7ee1('0x69')]][_0x7ee1('0x70')];this['emitVoiceQueueSummary'](this['voiceQueues'][_0x5aee66[_0x7ee1('0x69')]],_0x7ee1('0x16'));}logger['debug'](_0x7ee1('0x71'),util[_0x7ee1('0x3d')](this[_0x7ee1('0x14')][_0x5aee66[_0x7ee1('0x69')]],{'showHidden':![],'depth':null}));ami[_0x7ee1('0x44')](_0x7ee1('0x72'),this[_0x7ee1('0x14')][_0x5aee66[_0x7ee1('0x69')]]);}}}catch(_0x135f7f){logger['error'](_0x7ee1('0x68'),util['inspect'](_0x135f7f,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7ee1('0xb')][_0x7ee1('0x73')]=function(_0xe0195d){logger['debug'](_0x7ee1('0x74'),util[_0x7ee1('0x3d')](_0xe0195d,{'showHidden':![],'depth':null}));ami[_0x7ee1('0x44')](_0x7ee1('0x75'),{});this['flagQueueSummary']=!![];};VoiceQueueReport[_0x7ee1('0xb')]['syncQueueCallerJoin']=function(_0x3ee906){try{if(this[_0x7ee1('0x62')](_0x3ee906)){logger['debug'](_0x7ee1('0x76'),_0x3ee906[_0x7ee1('0x49')],util[_0x7ee1('0x3d')](_0x3ee906,{'showHidden':![],'depth':null}));if(_[_0x7ee1('0x63')](this[_0x7ee1('0x10')][_0x3ee906[_0x7ee1('0x49')]]))this['queueReports'][_0x3ee906[_0x7ee1('0x49')]]=[];if(_['isUndefined'](this['channels'][_0x3ee906[_0x7ee1('0x49')]]))this[_0x7ee1('0x12')][_0x3ee906[_0x7ee1('0x49')]]={};var _0x469786=new QueueReport();_0x469786[_0x7ee1('0x50')]=_0x3ee906[_0x7ee1('0x69')];_0x469786['type']=this[_0x7ee1('0x14')][_0x469786[_0x7ee1('0x50')]]&&this[_0x7ee1('0x14')][_0x469786[_0x7ee1('0x50')]][_0x7ee1('0x54')]?this[_0x7ee1('0x14')][_0x469786[_0x7ee1('0x50')]][_0x7ee1('0x54')]||_0x7ee1('0x55'):'inbound';_0x469786[_0x7ee1('0x69')]=_0x3ee906[_0x7ee1('0x69')];_0x469786['queuecallerjoinAt']=moment()[_0x7ee1('0x4a')](_0x7ee1('0x77'));_0x469786[_0x7ee1('0x78')]=_0x3ee906[_0x7ee1('0x78')];_0x469786[_0x7ee1('0x79')]=_0x3ee906[_0x7ee1('0x79')];_0x469786[_0x7ee1('0x49')]=_0x3ee906[_0x7ee1('0x49')];_0x469786[_0x7ee1('0x7a')]=this[_0x7ee1('0x12')][_0x3ee906[_0x7ee1('0x49')]][_0x7ee1('0x7a')];logger[_0x7ee1('0x6a')](_0x7ee1('0x7b'),_0x469786[_0x7ee1('0x50')],_0x469786[_0x7ee1('0x54')]);_[_0x7ee1('0x7c')](_0x469786,_[_0x7ee1('0x7d')](_0x3ee906,_['keys'](_0x469786)));this['queueReports'][_0x3ee906[_0x7ee1('0x49')]][_0x7ee1('0x7e')](_0x469786);this[_0x7ee1('0x12')][_0x3ee906[_0x7ee1('0x49')]]=_0x469786;this[_0x7ee1('0x45')](_0x469786,'queuecallerjoin');}}catch(_0x4931f3){logger[_0x7ee1('0x3e')](_0x7ee1('0x76'),_0x3ee906[_0x7ee1('0x49')],util[_0x7ee1('0x3d')](_0x4931f3,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncQueueCallerAbandon']=function(_0x1c1d50){try{if(this[_0x7ee1('0x62')](_0x1c1d50)){logger['debug'](_0x7ee1('0x7f'),_0x1c1d50[_0x7ee1('0x49')],util['inspect'](_0x1c1d50,{'showHidden':![],'depth':null}));if(this[_0x7ee1('0x10')][_0x1c1d50[_0x7ee1('0x49')]]){var _0x9f358=_[_0x7ee1('0x80')](this['queueReports'][_0x1c1d50['uniqueid']]);_0x9f358['queuecallercomplete']=![];_0x9f358[_0x7ee1('0x81')]=null;_0x9f358['holdtime']=_0x1c1d50[_0x7ee1('0x82')];_0x9f358['originalposition']=_0x1c1d50['originalposition'];_0x9f358[_0x7ee1('0x83')]=!![];_0x9f358[_0x7ee1('0x84')]=moment()[_0x7ee1('0x4a')](_0x7ee1('0x77'));_0x9f358[_0x7ee1('0x85')]=_0x7ee1('0x86');_0x9f358[_0x7ee1('0x87')]=null;logger[_0x7ee1('0x6a')]('[voiceQueueReport][queuecallerabandon]\x20name:%s\x20type:%s',_0x9f358['name'],_0x9f358[_0x7ee1('0x54')]);this[_0x7ee1('0x12')][_0x1c1d50[_0x7ee1('0x49')]]=_0x9f358;this[_0x7ee1('0x88')](_0x9f358,_0x7ee1('0x83'));}}}catch(_0x3916b1){logger[_0x7ee1('0x3e')](_0x7ee1('0x7f'),_0x1c1d50['uniqueid'],util[_0x7ee1('0x3d')](_0x3916b1,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7ee1('0xb')][_0x7ee1('0x1b')]=function(_0x53454d){try{if(this['isNotNull'](_0x53454d)){logger[_0x7ee1('0x46')](_0x7ee1('0x89'),_0x53454d[_0x7ee1('0x49')],util[_0x7ee1('0x3d')](_0x53454d,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x53454d['uniqueid']]){var _0x44a54b=_['last'](this['queueReports'][_0x53454d['uniqueid']]);_0x44a54b[_0x7ee1('0x8a')]=moment()[_0x7ee1('0x4a')](_0x7ee1('0x77'));_0x44a54b[_0x7ee1('0x8b')]=_0x53454d[_0x7ee1('0x8b')];_0x44a54b[_0x7ee1('0x8c')]=_0x53454d[_0x7ee1('0x8c')];logger[_0x7ee1('0x6a')](_0x7ee1('0x8d'),_0x44a54b[_0x7ee1('0x50')],_0x44a54b['type'],_0x53454d['connectedlinenum'],_0x53454d[_0x7ee1('0x8c')]);this[_0x7ee1('0x12')][_0x53454d[_0x7ee1('0x49')]]=_0x44a54b;this[_0x7ee1('0x45')](_0x44a54b,_0x7ee1('0x8e'));}}}catch(_0x5ed065){logger['error']('[%s][voiceQueueReport][queuecallerleave]',_0x53454d[_0x7ee1('0x49')],util[_0x7ee1('0x3d')](_0x5ed065,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x7ee1('0x1e')]=function(_0x5a98dc){try{if(this[_0x7ee1('0x62')](_0x5a98dc)){logger[_0x7ee1('0x46')]('[%s][voiceQueueReport][agentconnect]',_0x5a98dc[_0x7ee1('0x49')],util['inspect'](_0x5a98dc,{'showHidden':![],'depth':null}));if(this[_0x7ee1('0x10')][_0x5a98dc['uniqueid']]){var _0x3f770f=_[_0x7ee1('0x80')](this[_0x7ee1('0x10')][_0x5a98dc[_0x7ee1('0x49')]]);_0x3f770f['queuecallercomplete']=!![];_0x3f770f[_0x7ee1('0x85')]=_0x7ee1('0x8f');logger['info'](_0x7ee1('0x90'),_0x3f770f[_0x7ee1('0x50')],_0x3f770f[_0x7ee1('0x54')]);}}}catch(_0x54e289){logger[_0x7ee1('0x3e')]('[%s][voiceQueueReport][agentconnect]',_0x5a98dc[_0x7ee1('0x49')],util[_0x7ee1('0x3d')](_0x54e289,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7ee1('0xb')][_0x7ee1('0x1c')]=function(_0x59c2cb){try{if(this[_0x7ee1('0x62')](_0x59c2cb)){logger[_0x7ee1('0x46')](_0x7ee1('0x91'),_0x59c2cb[_0x7ee1('0x49')],util[_0x7ee1('0x3d')](_0x59c2cb,{'showHidden':![],'depth':null}));if(this[_0x7ee1('0x10')][_0x59c2cb[_0x7ee1('0x49')]]){var _0x38a05e=_['last'](this[_0x7ee1('0x10')][_0x59c2cb[_0x7ee1('0x49')]]);_0x38a05e[_0x7ee1('0x83')]=![];_0x38a05e['queuecallerabandonAt']=null;_0x38a05e[_0x7ee1('0x92')]=!![];_0x38a05e[_0x7ee1('0x87')]=_0x59c2cb[_0x7ee1('0x93')];_0x38a05e['holdtime']=_0x59c2cb[_0x7ee1('0x82')];_0x38a05e[_0x7ee1('0x94')]=!![];_0x38a05e[_0x7ee1('0x95')]=![];_0x38a05e[_0x7ee1('0x96')]=null;if(!_0x38a05e[_0x7ee1('0x97')]){if(_0x59c2cb['reason']=='transfer'){_0x38a05e[_0x7ee1('0x85')]=_0x7ee1('0x98');logger[_0x7ee1('0x6a')](_0x7ee1('0x99'),_0x38a05e[_0x7ee1('0x50')],_0x38a05e[_0x7ee1('0x54')]);}else{if(_[_0x7ee1('0x9a')](_0x59c2cb[_0x7ee1('0x39')][_0x7ee1('0x9b')](),_0x7ee1('0x9c'))){if(this[_0x7ee1('0x10')][_0x59c2cb[_0x7ee1('0x9d')]]){var _0x59f6c0=_[_0x7ee1('0x80')](this['queueReports'][_0x59c2cb['linkedid']]);_0x59f6c0[_0x7ee1('0x94')]=![];_0x59f6c0['queuecallerexit']=!![];_0x59f6c0['queuecallerexitAt']=moment(_0x38a05e[_0x7ee1('0x9e')])[_0x7ee1('0x9f')](_0x59c2cb[_0x7ee1('0x82')],_0x7ee1('0xa0'))['format'](_0x7ee1('0x77'));_0x59f6c0[_0x7ee1('0x85')]=_0x7ee1('0xa1');_0x59f6c0['transfer']=!![];_0x59f6c0[_0x7ee1('0xa2')]=_0x7ee1('0xa3');_0x59f6c0[_0x7ee1('0xa4')]=_0x59c2cb['destexten'];_0x59f6c0[_0x7ee1('0xa5')]=_0x59c2cb[_0x7ee1('0x49')];logger[_0x7ee1('0x6a')](_0x7ee1('0xa6'),_0x59f6c0[_0x7ee1('0x50')],_0x59f6c0[_0x7ee1('0x54')]);var _0x397b5b=this[_0x7ee1('0x10')][_0x59c2cb[_0x7ee1('0x9d')]];this[_0x7ee1('0x10')][_0x59c2cb[_0x7ee1('0x9d')]]=this[_0x7ee1('0x10')][_0x59c2cb[_0x7ee1('0x49')]];this['queueReports'][_0x59c2cb[_0x7ee1('0x49')]]=_0x397b5b;}}else{_0x38a05e[_0x7ee1('0x85')]=_0x7ee1('0xa7')+_0x59c2cb[_0x7ee1('0xa8')]['toUpperCase']();logger[_0x7ee1('0x6a')]('[voiceQueueReport][agentcomplete]\x20name:%s\x20type:%s\x20queuecallerexitreason:%s',_0x38a05e['name'],_0x38a05e[_0x7ee1('0x54')],_0x38a05e[_0x7ee1('0x85')]);}}}this[_0x7ee1('0x12')][_0x59c2cb[_0x7ee1('0x49')]]=_0x38a05e;this['emitVoiceQueueChannelRemove'](_0x38a05e,_0x7ee1('0xa9'));}}}catch(_0x4d1484){logger['error'](_0x7ee1('0x91'),_0x59c2cb['uniqueid'],util['inspect'](_0x4d1484,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x7ee1('0x20')]=function(_0x7fab17){try{if(this[_0x7ee1('0x62')](_0x7fab17)){logger[_0x7ee1('0x46')](_0x7ee1('0xaa'),_0x7fab17[_0x7ee1('0x49')],util['inspect'](_0x7fab17,{'showHidden':![],'depth':null}));this[_0x7ee1('0xab')](_0x7fab17[_0x7ee1('0x49')],_['keys'](_0x7fab17[_0x7ee1('0xac')])[0x0],_0x7fab17['value']);if(this[_0x7ee1('0x10')][_0x7fab17[_0x7ee1('0x49')]]){var _0x3d9a35=_[_0x7ee1('0x80')](this[_0x7ee1('0x10')][_0x7fab17['uniqueid']]);if(_0x3d9a35){if(this[_0x7ee1('0x62')](_0x7fab17[_0x7ee1('0xac')])&&this['isNotNull'](_0x7fab17[_0x7ee1('0xac')][_0x7ee1('0xad')])){switch(_0x7fab17[_0x7ee1('0xae')]){case _0x7ee1('0xaf'):_0x3d9a35[_0x7ee1('0x95')]=![];_0x3d9a35['queuecallerexitAt']=null;break;case'TIMEOUT':_0x3d9a35['lastevent']=_0x7ee1('0xb0');_0x3d9a35[_0x7ee1('0x95')]=!![];_0x3d9a35['queuecallerexitAt']=moment()['format'](_0x7ee1('0x77'));_0x3d9a35[_0x7ee1('0x8a')]=moment()[_0x7ee1('0x4a')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x7ee1('0x46')](_0x7ee1('0xb1'),_0x7fab17['uniqueid'],util[_0x7ee1('0x3d')](_0x3d9a35,{'showHidden':![],'depth':null}));ami['emit']('custom:timeout',_0x3d9a35);break;default:_0x3d9a35[_0x7ee1('0x95')]=!![];_0x3d9a35['queuecallerexitAt']=moment()['format'](_0x7ee1('0x77'));_0x3d9a35[_0x7ee1('0x8a')]=moment()[_0x7ee1('0x4a')](_0x7ee1('0x77'));}_0x3d9a35[_0x7ee1('0x83')]=![];_0x3d9a35[_0x7ee1('0x84')]=null;_0x3d9a35[_0x7ee1('0x85')]=_0x7fab17[_0x7ee1('0xae')];this[_0x7ee1('0x12')][_0x7fab17[_0x7ee1('0x49')]]=_0x3d9a35;this[_0x7ee1('0x88')](_0x3d9a35,_0x7ee1('0x1f'));}else if(this['isNotNull'](_0x7fab17[_0x7ee1('0xac')])&&this['isNotNull'](_0x7fab17[_0x7ee1('0xac')][_0x7ee1('0xb2')])){if(!_0x3d9a35['queuecallerabandon']){_0x3d9a35[_0x7ee1('0x95')]=!![];_0x3d9a35[_0x7ee1('0x96')]=moment()[_0x7ee1('0x4a')]('YYYY-MM-DD\x20HH:mm:ss');_0x3d9a35[_0x7ee1('0x85')]=_0x7ee1('0xb3');_0x3d9a35[_0x7ee1('0x8a')]=moment()[_0x7ee1('0x4a')](_0x7ee1('0x77'));this[_0x7ee1('0x12')][_0x7fab17['uniqueid']]=_0x3d9a35;}}logger[_0x7ee1('0x6a')](_0x7ee1('0xb4'),_0x7fab17[_0x7ee1('0x49')],_0x3d9a35[_0x7ee1('0x50')],_0x3d9a35['type'],_[_0x7ee1('0xb5')](_0x7fab17[_0x7ee1('0xac')])[0x0],_0x7fab17[_0x7ee1('0xae')]);_0x3d9a35['variables']=this[_0x7ee1('0x40')][_0x7fab17[_0x7ee1('0x49')]];}}}}catch(_0x14e246){logger[_0x7ee1('0x3e')](_0x7ee1('0xaa'),_0x7fab17[_0x7ee1('0x49')],util['inspect'](_0x14e246,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7ee1('0xb')][_0x7ee1('0xab')]=function(_0x14dff4,_0x429658,_0x2a94bd){var _0x493fda=[_0x7ee1('0xb6'),_0x7ee1('0xb7'),'rtpaudioqosjitter',_0x7ee1('0xb8'),_0x7ee1('0xb9'),_0x7ee1('0xba'),'rtpaudioqosrtt',_0x7ee1('0xbb'),'sipcallid',_0x7ee1('0xbc'),_0x7ee1('0xbd'),_0x7ee1('0xbe'),_0x7ee1('0xbf'),'memberdynamic',_0x7ee1('0xc0'),_0x7ee1('0xc1'),_0x7ee1('0x93'),_0x7ee1('0xc2'),_0x7ee1('0xc3')];if(!_[_0x7ee1('0x37')](_0x429658)&&!_[_0x7ee1('0xc4')](_0x493fda,_0x429658)){if(_[_0x7ee1('0x63')](this[_0x7ee1('0x40')][_0x14dff4])){this[_0x7ee1('0x40')][_0x14dff4]={};}this[_0x7ee1('0x40')][_0x14dff4][_0x429658]=_0x2a94bd;}};VoiceQueueReport[_0x7ee1('0xb')][_0x7ee1('0xc5')]=function(_0x13146f,_0x1c7d28,_0x2148e4){var _0x2f5528={};for(var _0x328c73=0x0;_0x328c73<this[_0x7ee1('0x10')][_0x13146f]['length'];_0x328c73+=0x1){_0x2f5528=this['queueReports'][_0x13146f][_0x328c73];if(this[_0x7ee1('0x14')][_0x2f5528['queue']]){if(_0x2f5528['queuecallerexit']&&_0x2f5528['transfer']!=!![]){this[_0x7ee1('0x14')][_0x2f5528[_0x7ee1('0x69')]]['unmanaged']+=0x1;}if(_0x2f5528['queuecallerabandon']){this[_0x7ee1('0x14')][_0x2f5528[_0x7ee1('0x69')]][_0x7ee1('0x5b')]+=0x1;}this[_0x7ee1('0x14')][_0x2f5528[_0x7ee1('0x69')]][_0x7ee1('0x58')]+=moment(_0x2f5528[_0x7ee1('0x8a')])[_0x7ee1('0xc6')](_0x2f5528[_0x7ee1('0x9e')],'seconds')||0x0;if(_0x328c73===this[_0x7ee1('0x10')][_0x13146f][_0x7ee1('0xc7')]-0x1){this[_0x7ee1('0x14')][_0x2f5528[_0x7ee1('0x69')]][_0x7ee1('0xc8')]+=moment()['milliseconds'](0x0)[_0x7ee1('0xc6')](_0x2f5528[_0x7ee1('0x9e')],_0x7ee1('0xa0'));this[_0x7ee1('0x14')][_0x2f5528[_0x7ee1('0x69')]][_0x7ee1('0x59')]+=0x1;if(_0x2f5528[_0x7ee1('0x94')]){this['voiceQueues'][_0x2f5528[_0x7ee1('0x69')]][_0x7ee1('0xc9')]+=0x1;this[_0x7ee1('0x14')][_0x2f5528['queue']]['sumBillable']+=moment()[_0x7ee1('0xca')](0x0)['diff'](_0x2f5528[_0x7ee1('0x8a')],_0x7ee1('0xa0'));_0x2f5528[_0x7ee1('0x81')]=moment()['format'](_0x7ee1('0x77'));_0x2f5528[_0x7ee1('0x95')]=![];_0x2f5528['queuecallerexitAt']=null;}if(_0x2f5528[_0x7ee1('0x95')]&&_0x2f5528[_0x7ee1('0x97')]!=!![]){_0x2f5528['lastevent']=_0x7ee1('0x5a');logger[_0x7ee1('0x46')](_0x7ee1('0xcb'),_0x13146f,util[_0x7ee1('0x3d')](_0x2f5528,{'showHidden':![],'depth':null}));ami[_0x7ee1('0x44')](_0x7ee1('0xcc'),_0x2f5528);}if(_0x2f5528['queuecallerabandon']){_0x2f5528['lastevent']=_0x7ee1('0x5b');logger['debug'](_0x7ee1('0xcd'),_0x13146f,util['inspect'](_0x2f5528,{'showHidden':![],'depth':null}));ami[_0x7ee1('0x44')](_0x7ee1('0xce'),_0x2f5528);}}else{this['voiceQueues'][_0x2f5528[_0x7ee1('0x69')]]['sumDuration']+=this['voiceQueues'][_0x2f5528[_0x7ee1('0x69')]][_0x7ee1('0x58')];}logger[_0x7ee1('0x6a')](_0x7ee1('0xcf'),_0x13146f,_0x2f5528[_0x7ee1('0x50')],_0x2f5528['type'],_0x1c7d28);if(_0x2148e4&&_0x2f5528[_0x7ee1('0x85')]===_0x7ee1('0x4f')){_0x2f5528['queuecallerexitreason']=_0x7ee1('0x8f');}this[_0x7ee1('0x12')][_0x13146f]=_0x2f5528;this[_0x7ee1('0x88')](_0x2f5528,_0x7ee1('0x21'));this[_0x7ee1('0x53')](this[_0x7ee1('0x14')][_0x2f5528['queue']],_0x7ee1('0x21'));}}logger[_0x7ee1('0x46')]('[%s][voiceQueueReport][hangup]\x20sending\x20voiceQueueReport\x20event:',_0x13146f,util[_0x7ee1('0x3d')](this['queueReports'][_0x13146f],{'showHidden':![],'depth':null}));ami[_0x7ee1('0x44')](_0x7ee1('0xd0'),this[_0x7ee1('0x10')][_0x13146f]);if(_0x2f5528[_0x7ee1('0x85')]===_0x7ee1('0x4f'))return;delete this[_0x7ee1('0x10')][_0x13146f];delete this[_0x7ee1('0x12')][_0x13146f];if(this[_0x7ee1('0x40')][_0x13146f]){delete this['variables'][_0x13146f];}};VoiceQueueReport['prototype'][_0x7ee1('0xd1')]=function(_0x25af6b){try{if(this[_0x7ee1('0x62')](_0x25af6b)){logger['debug'](_0x7ee1('0xd2'),_0x25af6b['uniqueid'],util[_0x7ee1('0x3d')](_0x25af6b,{'showHidden':![],'depth':null}));if(this[_0x7ee1('0x10')][_0x25af6b[_0x7ee1('0x49')]]){return this[_0x7ee1('0xc5')](_0x25af6b['uniqueid'],_0x25af6b['cause-txt']);}if(this['queueReports'][_0x25af6b[_0x7ee1('0x9d')]]){if(_0x25af6b[_0x7ee1('0xd3')]==='21'){return;}return this['handleHangup'](_0x25af6b['linkedid'],_0x25af6b[_0x7ee1('0xd4')],!![]);}var _0x17b1de=Object[_0x7ee1('0xb5')](this[_0x7ee1('0x10')]);for(var _0x460f6a=0x0;_0x460f6a<_0x17b1de[_0x7ee1('0xc7')];_0x460f6a++){var _0x5f0695=_['last'](this[_0x7ee1('0x10')][_0x17b1de[_0x460f6a]]);if(_0x5f0695&&_0x5f0695['transferid']===_0x25af6b[_0x7ee1('0x49')]){return this[_0x7ee1('0xc5')](_0x5f0695[_0x7ee1('0x49')],_0x25af6b[_0x7ee1('0xd4')],!![]);}}}}catch(_0x2a5764){logger[_0x7ee1('0x3e')](_0x7ee1('0xd2'),_0x25af6b['uniqueid'],util[_0x7ee1('0x3d')](_0x2a5764,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7ee1('0xb')]['syncAttendedTransfer']=function(_0x476c69){try{if(this[_0x7ee1('0x62')](_0x476c69)){logger[_0x7ee1('0x46')]('[%s][voiceQueueReport][attendedtransfer]',_0x476c69[_0x7ee1('0x49')],util[_0x7ee1('0x3d')](_0x476c69,{'showHidden':![],'depth':null}));var _0x84a1fb;var _0x4c08dd;var _0xf50cfd;if(this[_0x7ee1('0x10')][_0x476c69[_0x7ee1('0xd5')]]){_0x84a1fb=_[_0x7ee1('0x80')](this[_0x7ee1('0x10')][_0x476c69['transfereeuniqueid']]);_0x84a1fb[_0x7ee1('0xa4')]=_0x476c69[_0x7ee1('0xd6')];_0x84a1fb[_0x7ee1('0xa5')]=_0x476c69[_0x7ee1('0xd7')];_0x84a1fb[_0x7ee1('0x85')]=_0x7ee1('0x4f');_0x84a1fb[_0x7ee1('0x97')]=!![];_0x84a1fb['transfertype']='ATTENDED';if(this[_0x7ee1('0x10')][_0x476c69[_0x7ee1('0xd7')]]){_0xf50cfd=this[_0x7ee1('0x10')][_0x476c69[_0x7ee1('0xd7')]];this[_0x7ee1('0x10')][_0x476c69[_0x7ee1('0xd7')]]=this[_0x7ee1('0x10')][_0x476c69[_0x7ee1('0xd5')]];this[_0x7ee1('0x10')][_0x476c69[_0x7ee1('0xd5')]]=_0xf50cfd;_0x4c08dd=_[_0x7ee1('0x80')](this[_0x7ee1('0x10')][_0x476c69[_0x7ee1('0xd5')]]);_0x4c08dd[_0x7ee1('0x36')]=!![];}logger[_0x7ee1('0x6a')](_0x7ee1('0xd8'),_0x476c69[_0x7ee1('0x49')],_0x84a1fb[_0x7ee1('0x50')],_0x84a1fb[_0x7ee1('0x54')],_0x84a1fb[_0x7ee1('0xa4')],_0x84a1fb[_0x7ee1('0xa5')]);}else if(this[_0x7ee1('0x10')][_0x476c69[_0x7ee1('0xd9')]]){_0x84a1fb=_[_0x7ee1('0x80')](this['queueReports'][_0x476c69[_0x7ee1('0xd9')]]);_0x84a1fb[_0x7ee1('0xa4')]=_0x476c69[_0x7ee1('0xda')];_0x84a1fb[_0x7ee1('0xa5')]=_0x476c69[_0x7ee1('0xdb')];_0x84a1fb['queuecallerexitreason']=_0x7ee1('0x4f');_0x84a1fb['transfer']=!![];_0x84a1fb['transfertype']='ATTENDED';if(this['queueReports'][_0x476c69[_0x7ee1('0xdb')]]){_0xf50cfd=this[_0x7ee1('0x10')][_0x476c69[_0x7ee1('0xdb')]];this[_0x7ee1('0x10')][_0x476c69[_0x7ee1('0xdb')]]=this['queueReports'][_0x476c69[_0x7ee1('0xd9')]];this[_0x7ee1('0x10')][_0x476c69[_0x7ee1('0xd9')]]=_0xf50cfd;_0x4c08dd=_[_0x7ee1('0x80')](this['queueReports'][_0x476c69[_0x7ee1('0xd9')]]);_0x4c08dd[_0x7ee1('0x36')]=!![];}logger[_0x7ee1('0x6a')]('[%s][voiceQueueReport][attendedTransfer]\x20name:%s\x20type:%s\x20transferexten:%s\x20transferuniqueid:%s',_0x476c69['uniqueid'],_0x84a1fb[_0x7ee1('0x50')],_0x84a1fb[_0x7ee1('0x54')],_0x84a1fb[_0x7ee1('0xa4')],_0x84a1fb[_0x7ee1('0xa5')]);}else if(this['queueReports'][_0x476c69[_0x7ee1('0xdb')]]){_0x84a1fb=_[_0x7ee1('0x80')](this[_0x7ee1('0x10')][_0x476c69[_0x7ee1('0xdb')]]);_0x84a1fb['transferexten']=_0x476c69[_0x7ee1('0xda')];_0x84a1fb[_0x7ee1('0xa5')]=_0x476c69[_0x7ee1('0xdb')];_0x84a1fb['queuecallerexitreason']=_0x7ee1('0x4f');_0x84a1fb[_0x7ee1('0x97')]=!![];_0x84a1fb['transfertype']=_0x7ee1('0xdc');_0x84a1fb[_0x7ee1('0x36')]=!![];_0x84a1fb[_0x7ee1('0xdd')]=_0x476c69[_0x7ee1('0xd5')];}else if(this['queueReports'][_0x476c69[_0x7ee1('0xd7')]]){_0x84a1fb=_[_0x7ee1('0x80')](this[_0x7ee1('0x10')][_0x476c69[_0x7ee1('0xd7')]]);_0x84a1fb['transferexten']=_0x476c69['secondtransfererexten'];_0x84a1fb[_0x7ee1('0xa5')]=_0x476c69['secondtransfereruniqueid'];_0x84a1fb[_0x7ee1('0x85')]=_0x7ee1('0x4f');_0x84a1fb[_0x7ee1('0x97')]=!![];_0x84a1fb[_0x7ee1('0xa2')]=_0x7ee1('0xdc');_0x84a1fb[_0x7ee1('0x36')]=!![];_0x84a1fb[_0x7ee1('0xdd')]=_0x476c69[_0x7ee1('0xd9')];}}}catch(_0x79b8d){logger[_0x7ee1('0x3e')](_0x7ee1('0xde'),_0x476c69[_0x7ee1('0x49')],util['inspect'](_0x79b8d,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype'][_0x7ee1('0x2b')]=function(_0x860dbc){try{if(this['isNotNull'](_0x860dbc)){logger[_0x7ee1('0x46')](_0x7ee1('0xdf'),_0x860dbc[_0x7ee1('0x49')],util['inspect'](_0x860dbc,{'showHidden':![],'depth':null}));if(this[_0x7ee1('0x10')][_0x860dbc[_0x7ee1('0xd5')]]){var _0x156347=_[_0x7ee1('0x80')](this[_0x7ee1('0x10')][_0x860dbc['transfereeuniqueid']]);_0x156347[_0x7ee1('0x85')]='BLINDTRANSFER';_0x156347[_0x7ee1('0x97')]=!![];_0x156347[_0x7ee1('0xa2')]=_0x7ee1('0xe0');_0x156347['transferexten']=_0x860dbc[_0x7ee1('0xe1')];_0x156347['transferuniqueid']=_0x860dbc[_0x7ee1('0xd5')];logger[_0x7ee1('0x6a')](_0x7ee1('0xe2'),_0x860dbc[_0x7ee1('0x49')],_0x156347[_0x7ee1('0x50')],_0x156347[_0x7ee1('0x54')],_0x156347[_0x7ee1('0xa4')],_0x156347[_0x7ee1('0xa5')]);this[_0x7ee1('0xd1')]({'event':_0x7ee1('0xe3'),'uniqueid':_0x860dbc[_0x7ee1('0xd5')],'context':_0x860dbc['context'],'channel':_0x860dbc[_0x7ee1('0xe4')]});}}}catch(_0xc3d70){logger[_0x7ee1('0x3e')](_0x7ee1('0xdf'),_0x860dbc[_0x7ee1('0x49')],util[_0x7ee1('0x3d')](_0xc3d70,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7ee1('0xb')][_0x7ee1('0x25')]=function(_0x25843a){try{if(this[_0x7ee1('0x62')](_0x25843a)){logger[_0x7ee1('0x46')](_0x7ee1('0xe5'),_0x25843a[_0x7ee1('0x49')],util[_0x7ee1('0x3d')](_0x25843a,{'showHidden':![],'depth':null}));if(this[_0x7ee1('0x10')][_0x25843a[_0x7ee1('0x49')]]){var _0x5b906e=_[_0x7ee1('0x80')](this[_0x7ee1('0x10')][_0x25843a['uniqueid']]);if(!_[_0x7ee1('0x37')](_0x5b906e[_0x7ee1('0x8a')])){_0x5b906e[_0x7ee1('0xe6')]=moment()[_0x7ee1('0x4a')]('YYYY-MM-DD\x20HH:mm:ss');logger[_0x7ee1('0x6a')](_0x7ee1('0xe7'),_0x25843a['uniqueid'],_0x5b906e['mohstarttime']);}}}}catch(_0x4084b0){logger[_0x7ee1('0x3e')]('[%s][voiceQueueReport][musiconholdstart]',_0x25843a[_0x7ee1('0x49')],util[_0x7ee1('0x3d')](_0x4084b0,{'showHidden':![],'depth':null}));}};VoiceQueueReport[_0x7ee1('0xb')][_0x7ee1('0x27')]=function(_0x2f693d){try{if(this['isNotNull'](_0x2f693d)){logger['debug']('[%s][voiceQueueReport][musiconholdstop]',_0x2f693d[_0x7ee1('0x49')],util['inspect'](_0x2f693d,{'showHidden':![],'depth':null}));if(this['queueReports'][_0x2f693d['uniqueid']]){var _0x37e75b=_['last'](this[_0x7ee1('0x10')][_0x2f693d[_0x7ee1('0x49')]]);if(!_[_0x7ee1('0x37')](_0x37e75b['mohstarttime'])){_0x37e75b['mohtime']+=moment()[_0x7ee1('0xca')](0x0)[_0x7ee1('0xc6')](_0x37e75b[_0x7ee1('0xe6')],'seconds');logger[_0x7ee1('0x6a')](_0x7ee1('0xe8'),_0x2f693d['uniqueid'],_0x37e75b[_0x7ee1('0xe9')]);delete _0x37e75b['mohstarttime'];}}}}catch(_0x2e00){logger[_0x7ee1('0x3e')](_0x7ee1('0xea'),_0x2f693d[_0x7ee1('0x49')],util['inspect'](_0x2e00,{'showHidden':![],'depth':null}));}};VoiceQueueReport['prototype']['syncNewExten']=function(_0x3cbd16){try{if(this[_0x7ee1('0x62')](_0x3cbd16)){logger[_0x7ee1('0x46')](_0x7ee1('0xeb'),_0x3cbd16[_0x7ee1('0x49')],util[_0x7ee1('0x3d')](_0x3cbd16,{'showHidden':![],'depth':null}));if(_0x3cbd16['application']['toLowerCase']()===_0x7ee1('0xec')){_0x3cbd16[_0x7ee1('0xed')]=_0x3cbd16[_0x7ee1('0xee')]&&_0x3cbd16[_0x7ee1('0xee')][_0x7ee1('0x9a')](_0x7ee1('0xef'))?_0x3cbd16[_0x7ee1('0xee')]:(_0x3cbd16['appdata']||_0x3cbd16[_0x7ee1('0xed')])[_0x7ee1('0x9b')]();if(_[_0x7ee1('0x9a')](_0x3cbd16['applicationdata'][_0x7ee1('0x9b')](),_0x7ee1('0xf0'))){logger[_0x7ee1('0x6a')](_0x7ee1('0xf1'),_0x3cbd16[_0x7ee1('0x49')],_0x3cbd16[_0x7ee1('0xf2')],_0x3cbd16[_0x7ee1('0xed')]);if(_[_0x7ee1('0x63')](this[_0x7ee1('0x12')][_0x3cbd16[_0x7ee1('0x49')]]))this[_0x7ee1('0x12')][_0x3cbd16[_0x7ee1('0x49')]]={};var _0xd4f851=_0x3cbd16['applicationdata'][_0x7ee1('0xf3')]('=');var _0x164fc5=_0xd4f851[0x0][_0x7ee1('0x9b')]()['match'](/cdr\((.*)\)/);if(_0x164fc5)this[_0x7ee1('0x12')][_0x3cbd16[_0x7ee1('0x49')]][_0x164fc5[0x1]]=_0xd4f851[0x1];}}}}catch(_0x4806bb){logger[_0x7ee1('0x3e')]('[%s][voiceQueueReport][newexten]',_0x3cbd16[_0x7ee1('0x49')],util[_0x7ee1('0x3d')](_0x4806bb,{'showHidden':![],'depth':null}));}};module[_0x7ee1('0xf4')]=VoiceQueueReport;
\ No newline at end of file
index 26f892a..cc774b7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x65f4=['campaign','queue','CreateReportAgentPreview','createHistory'];(function(_0xbc2c20,_0x3acb1f){var _0x5d2470=function(_0x32ec95){while(--_0x32ec95){_0xbc2c20['push'](_0xbc2c20['shift']());}};_0x5d2470(++_0x3acb1f);}(_0x65f4,0xaf));var _0x465f=function(_0x354845,_0xd16fb4){_0x354845=_0x354845-0x0;var _0x15bd44=_0x65f4[_0x354845];return _0x15bd44;};'use strict';var client=require('../client');exports[_0x465f('0x0')]=function(_0x422efb){return function(){_0x422efb[_0x465f('0x1')]=_0x422efb[_0x465f('0x2')];return client['Request'](_0x465f('0x3'),{'body':_0x422efb,'log':_0x465f('0x3')});};};
\ No newline at end of file
+var _0xf326=['../client','createHistory','campaign','queue','CreateReportAgentPreview'];(function(_0x420d8d,_0x78b67f){var _0x4865d7=function(_0x2965df){while(--_0x2965df){_0x420d8d['push'](_0x420d8d['shift']());}};_0x4865d7(++_0x78b67f);}(_0xf326,0x118));var _0x6f32=function(_0x2646f6,_0x287adf){_0x2646f6=_0x2646f6-0x0;var _0x577237=_0xf326[_0x2646f6];return _0x577237;};'use strict';var client=require(_0x6f32('0x0'));exports[_0x6f32('0x1')]=function(_0x36679c){return function(){_0x36679c[_0x6f32('0x2')]=_0x36679c[_0x6f32('0x3')];return client['Request'](_0x6f32('0x4'),{'body':_0x36679c,'log':_0x6f32('0x4')});};};
\ No newline at end of file
index abe46fb..fab09e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf2c3=['CreateAttachment','create'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf2c3,0x75));var _0x3f2c=function(_0x1a8bbe,_0x3b4f19){_0x1a8bbe=_0x1a8bbe-0x0;var _0x2647a9=_0xf2c3[_0x1a8bbe];return _0x2647a9;};'use strict';var client=require('../client');exports[_0x3f2c('0x0')]=function(_0xd72e42){return client['Request'](_0x3f2c('0x1'),{'body':_0xd72e42,'log':'CreateAttachment'});};
\ No newline at end of file
+var _0xfbb5=['Request','CreateAttachment','../client','create'];(function(_0x32d553,_0x12f5e8){var _0x1707a4=function(_0x13f463){while(--_0x13f463){_0x32d553['push'](_0x32d553['shift']());}};_0x1707a4(++_0x12f5e8);}(_0xfbb5,0xc6));var _0x5fbb=function(_0x2872e8,_0x5b4613){_0x2872e8=_0x2872e8-0x0;var _0x3ca55e=_0xfbb5[_0x2872e8];return _0x3ca55e;};'use strict';var client=require(_0x5fbb('0x0'));exports[_0x5fbb('0x1')]=function(_0x2e21d7){return client[_0x5fbb('0x2')](_0x5fbb('0x3'),{'body':_0x2e21d7,'log':_0x5fbb('0x3')});};
\ No newline at end of file
index 768de7d..ffe8006 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdb28=['dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','name','callerid','Interval','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','type','active','limitCalls','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectRetryFrequency','dialTimezone','dialAMDActive','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','dialOrderByScheduledAt'];(function(_0x55c8a6,_0x4d936c){var _0x42fb2e=function(_0x4a14fd){while(--_0x4a14fd){_0x55c8a6['push'](_0x55c8a6['shift']());}};_0x42fb2e(++_0x4d936c);}(_0xdb28,0x106));var _0x8db2=function(_0x1cfaa9,_0x323591){_0x1cfaa9=_0x1cfaa9-0x0;var _0x5a43d5=_0xdb28[_0x1cfaa9];return _0x5a43d5;};'use strict';var client=require(_0x8db2('0x0'));exports[_0x8db2('0x1')]=function(){return function(){return client[_0x8db2('0x2')](_0x8db2('0x3'),{'options':{'raw':![],'attributes':['id','name',_0x8db2('0x4'),_0x8db2('0x5'),_0x8db2('0x6'),_0x8db2('0x7'),_0x8db2('0x8'),'dialOriginateTimeout',_0x8db2('0x9'),_0x8db2('0xa'),'dialBusyMaxRetry','dialBusyRetryFrequency',_0x8db2('0xb'),_0x8db2('0xc'),_0x8db2('0xd'),_0x8db2('0xe'),_0x8db2('0xf'),_0x8db2('0x10'),_0x8db2('0x11'),'dialAbandonedMaxRetry',_0x8db2('0x12'),_0x8db2('0x13'),_0x8db2('0x14'),'dialAgentRejectMaxRetry',_0x8db2('0x15'),_0x8db2('0x16'),'dialGlobalInterval',_0x8db2('0x17'),_0x8db2('0x18'),_0x8db2('0x19'),_0x8db2('0x1a'),_0x8db2('0x1b'),'dialAMDMinWordLength','dialAMDBetweenWordsSilence',_0x8db2('0x1c'),_0x8db2('0x1d'),_0x8db2('0x1e'),_0x8db2('0x1f'),_0x8db2('0x20'),_0x8db2('0x21'),_0x8db2('0x22')],'include':[{'model':_0x8db2('0x23'),'as':_0x8db2('0x23'),'attributes':['id',_0x8db2('0x24'),'callerid',_0x8db2('0x5')]},{'model':_0x8db2('0x23'),'as':'TrunkBackup','attributes':['id',_0x8db2('0x24'),_0x8db2('0x25'),_0x8db2('0x5')]},{'model':_0x8db2('0x26'),'as':_0x8db2('0x26'),'attributes':['id',_0x8db2('0x24')],'include':[{'model':'Interval','as':'Intervals','attributes':['id',_0x8db2('0x24'),_0x8db2('0x27')]}]},{'model':_0x8db2('0x28'),'as':_0x8db2('0x28'),'attributes':['id','name']}]},'log':_0x8db2('0x29')});};};
\ No newline at end of file
+var _0x2ef3=['dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialDropRetryFrequency','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialTimezone','dialGlobalInterval','dialAMDInitialSilence','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumWordLength','dialPrefix','dialRandomLastDigitCallerIdNumber','dialCutDigit','Trunk','active','TrunkBackup','Interval','Intervals','interval','SquareProject','getCampaign','../client','getCampaigns','Request','GetCampaign','name','type','limitCalls','dialOriginateCallerIdName','dialOriginateTimeout','dialCongestionMaxRetry','dialBusyRetryFrequency','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry'];(function(_0x202d24,_0x5e8641){var _0x2b3a8e=function(_0x4c7c4a){while(--_0x4c7c4a){_0x202d24['push'](_0x202d24['shift']());}};_0x2b3a8e(++_0x5e8641);}(_0x2ef3,0xba));var _0x32ef=function(_0x3b2a0f,_0x5f1c65){_0x3b2a0f=_0x3b2a0f-0x0;var _0x72b56=_0x2ef3[_0x3b2a0f];return _0x72b56;};'use strict';var client=require(_0x32ef('0x0'));exports[_0x32ef('0x1')]=function(){return function(){return client[_0x32ef('0x2')](_0x32ef('0x3'),{'options':{'raw':![],'attributes':['id',_0x32ef('0x4'),_0x32ef('0x5'),'active',_0x32ef('0x6'),_0x32ef('0x7'),'dialOriginateCallerIdNumber',_0x32ef('0x8'),_0x32ef('0x9'),'dialCongestionRetryFrequency','dialBusyMaxRetry',_0x32ef('0xa'),_0x32ef('0xb'),_0x32ef('0xc'),_0x32ef('0xd'),_0x32ef('0xe'),_0x32ef('0xf'),_0x32ef('0x10'),_0x32ef('0x11'),_0x32ef('0x12'),_0x32ef('0x13'),'dialMachineMaxRetry','dialMachineRetryFrequency',_0x32ef('0x14'),_0x32ef('0x15'),_0x32ef('0x16'),_0x32ef('0x17'),'dialAMDActive',_0x32ef('0x18'),'dialAMDGreeting',_0x32ef('0x19'),'dialAMDTotalAnalysisTime',_0x32ef('0x1a'),_0x32ef('0x1b'),'dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold',_0x32ef('0x1c'),'dialOrderByScheduledAt',_0x32ef('0x1d'),_0x32ef('0x1e'),_0x32ef('0x1f')],'include':[{'model':_0x32ef('0x20'),'as':'Trunk','attributes':['id','name','callerid',_0x32ef('0x21')]},{'model':_0x32ef('0x20'),'as':_0x32ef('0x22'),'attributes':['id','name','callerid',_0x32ef('0x21')]},{'model':_0x32ef('0x23'),'as':_0x32ef('0x23'),'attributes':['id','name'],'include':[{'model':_0x32ef('0x23'),'as':_0x32ef('0x24'),'attributes':['id','name',_0x32ef('0x25')]}]},{'model':_0x32ef('0x26'),'as':_0x32ef('0x26'),'attributes':['id',_0x32ef('0x4')]}]},'log':_0x32ef('0x27')});};};
\ No newline at end of file
index e63ceed..738a501 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdf74=['getContacts','GetCmContact','createContact','Request','CreateCmContact'];(function(_0x1f8d0f,_0x321666){var _0x54c30f=function(_0x1ecccd){while(--_0x1ecccd){_0x1f8d0f['push'](_0x1f8d0f['shift']());}};_0x54c30f(++_0x321666);}(_0xdf74,0xe3));var _0x4df7=function(_0x417105,_0xc16b3f){_0x417105=_0x417105-0x0;var _0x168fd9=_0xdf74[_0x417105];return _0x168fd9;};'use strict';var client=require('../client');exports[_0x4df7('0x0')]=function(_0x2929f1){return function(){return client[_0x4df7('0x1')](_0x4df7('0x2'),{'body':_0x2929f1,'log':'CreateCmContact'});};};exports[_0x4df7('0x3')]=function(_0x5d332c){return function(){return client[_0x4df7('0x1')](_0x4df7('0x4'),{'options':_0x5d332c,'log':_0x4df7('0x4')});};};
\ No newline at end of file
+var _0x2f54=['CreateCmContact','getContacts','Request','GetCmContact','../client','createContact'];(function(_0x59459c,_0x580b04){var _0x51cd6a=function(_0x2cb050){while(--_0x2cb050){_0x59459c['push'](_0x59459c['shift']());}};_0x51cd6a(++_0x580b04);}(_0x2f54,0x14e));var _0x42f5=function(_0x45c5f9,_0x1ad8c9){_0x45c5f9=_0x45c5f9-0x0;var _0x22cc60=_0x2f54[_0x45c5f9];return _0x22cc60;};'use strict';var client=require(_0x42f5('0x0'));exports[_0x42f5('0x1')]=function(_0x290518){return function(){return client['Request'](_0x42f5('0x2'),{'body':_0x290518,'log':_0x42f5('0x2')});};};exports[_0x42f5('0x3')]=function(_0x2cdc33){return function(){return client[_0x42f5('0x4')](_0x42f5('0x5'),{'options':_0x2cdc33,'log':_0x42f5('0x5')});};};
\ No newline at end of file
index 9464182..382d620 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf222=['CmHopperHandlePreviewRecallNotifications','../client','moment','lodash','getContacts','Request','GetCmHopper','CmContact','getCmHopper','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','ContactId','ListId','VoiceQueueId','CampaignId','DestroyCmHopper','getContactDialer','GetContactDialer','priority','DESC','scheduledat','ASC','GetContactDialerIvr','moveContactManagedDialer','campaign','queue','MoveContactManagedDialer','countReScheduled','GetCmHopperPreview','User','Agent','name','VoiceQueue','unlockContact','getContactRecallMe','GetContactRecallMe','Contact','voicePause','resetActiveCalls','ResetActiveCalls','handlePreviewRecallNotifications'];(function(_0x4b369d,_0x265eb8){var _0x571a98=function(_0x56341a){while(--_0x56341a){_0x4b369d['push'](_0x4b369d['shift']());}};_0x571a98(++_0x265eb8);}(_0xf222,0x1da));var _0x2f22=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf222[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0x2f22('0x0'));var moment=require(_0x2f22('0x1'));var _=require(_0x2f22('0x2'));exports[_0x2f22('0x3')]=function(_0x4e23bc,_0x5a198c){return function(){return client[_0x2f22('0x4')](_0x2f22('0x5'),{'options':{'where':{'VoiceQueueId':_0x4e23bc},'include':[{'model':_0x2f22('0x6'),'as':'Contact'}],'limit':_0x5a198c,'raw':![]},'log':_0x2f22('0x7')});};};exports['updateContacts']=function(_0x4f3f7a,_0x35a01c,_0x99cd34){return function(){return client['Request'](_0x2f22('0x8'),{'body':_0x4f3f7a,'options':{'where':{'VoiceQueueId':_0x35a01c,'scheduledat':{'$lte':moment()[_0x2f22('0x9')](_0x2f22('0xa'))}},'limit':_0x99cd34},'log':_0x2f22('0x8')});};};exports[_0x2f22('0xb')]=function(_0x103d9f){return function(){return client[_0x2f22('0x4')]('UpdateCmHopper',{'body':_0x103d9f,'options':{'where':{'ContactId':_0x103d9f[_0x2f22('0xc')],'ListId':_0x103d9f[_0x2f22('0xd')],'VoiceQueueId':_0x103d9f[_0x2f22('0xe')],'CampaignId':_0x103d9f[_0x2f22('0xf')]}},'log':_0x2f22('0xb')});};};exports['destroyContact']=function(_0x25c6b8,_0x585a52,_0x5d7532){return function(){return client['Request'](_0x2f22('0x10'),{'options':{'where':{'VoiceQueueId':_0x25c6b8,'ListId':_0x585a52,'ContactId':_0x5d7532}},'log':'DestroyCmHopper'});};};exports[_0x2f22('0x11')]=function(_0xb8a9,_0x38f24c,_0xce8ac1,_0xab4a91){return function(){return client[_0x2f22('0x4')](_0x2f22('0x12'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0xb8a9,'active':![],'scheduledat':{'$lte':moment()[_0x2f22('0x9')](_0x2f22('0xa'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x38f24c}}]},'order':[[_0x2f22('0x13'),_0x2f22('0x14')],[_0x2f22('0x15'),_0xab4a91],['id',_0x2f22('0x16')]],'raw':!![],'limit':_0xce8ac1},'log':_0x2f22('0x12')});};};exports['getContactDialerIvr']=function(_0x255f83,_0x4aaae2,_0x5bf9bd){return function(){return client['Request'](_0x2f22('0x12'),{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x255f83,'active':![],'scheduledat':{'$lte':moment()[_0x2f22('0x9')]('YYYY-MM-DD\x20HH:mm:ss')}},'include':[{'model':_0x2f22('0x6'),'as':'Contact'}],'order':[[_0x2f22('0x13'),'DESC'],[_0x2f22('0x15'),_0x5bf9bd],['id',_0x2f22('0x16')]],'raw':!![],'limit':_0x4aaae2},'log':_0x2f22('0x17')});};};exports[_0x2f22('0x18')]=function(_0x2cb946,_0x12d407){return function(){_0x2cb946[_0x2f22('0x19')]=_0x2cb946[_0x2f22('0x1a')];return client[_0x2f22('0x4')](_0x2f22('0x1b'),{'body':_0x2cb946,'options':{'where':{'ContactId':_0x2cb946[_0x2f22('0xc')],'ListId':_0x2cb946[_0x2f22('0xd')],'VoiceQueueId':_0x2cb946[_0x2f22('0xe')],'CampaignId':_0x2cb946[_0x2f22('0xf')],'active':_0x12d407?undefined:!![]}},'log':_0x2f22('0x1b')});};};exports[_0x2f22('0x1c')]=function(_0x49681c){return function(){return client[_0x2f22('0x4')]('CountReScheduled',{'options':{'where':{'VoiceQueueId':_0x49681c['id']?_0x49681c['id']||null:null}},'log':'countReScheduled'});};};exports['getContactPreview']=function(_0x4316c3){return function(){return client[_0x2f22('0x4')](_0x2f22('0x1d'),{'options':{'where':{'id':_0x4316c3},'include':[{'model':_0x2f22('0x6'),'as':'Contact'},{'model':_0x2f22('0x1e'),'as':_0x2f22('0x1f'),'attributes':['id',_0x2f22('0x20')]},{'model':_0x2f22('0x21'),'as':'Queue','attributes':['id',_0x2f22('0x20')]}],'raw':!![]},'log':'getCmHopper'});};};exports[_0x2f22('0x22')]=function(_0x61043f,_0x4a0dc2,_0x2ee7e0){return function(){return client['Request'](_0x2f22('0x8'),{'body':_0x61043f,'options':{'where':{'id':_0x4a0dc2},'limit':_0x2ee7e0},'log':_0x2f22('0x8')});};};exports[_0x2f22('0x23')]=function(_0x3ca6a0,_0x265a7b){return function(){return client[_0x2f22('0x4')](_0x2f22('0x24'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x3ca6a0,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x2f22('0x9')](_0x2f22('0xa'))},'UserId':{'$in':_0x265a7b}},'order':[[_0x2f22('0x13'),'DESC'],[_0x2f22('0x15'),_0x2f22('0x14')],['id',_0x2f22('0x16')]],'include':[{'model':_0x2f22('0x6'),'as':_0x2f22('0x25')},{'model':'User','as':_0x2f22('0x1f'),'attributes':['id',_0x2f22('0x20'),_0x2f22('0x26')]}],'group':'db.CmHopper.UserId','raw':!![]},'log':'GetContactDialer'});};};exports[_0x2f22('0x27')]=function(_0x336c2b){return function(){return client[_0x2f22('0x4')](_0x2f22('0x28'),{'body':_0x336c2b,'options':{},'log':_0x2f22('0x28')});};};exports[_0x2f22('0x29')]=function(_0x5614c4,_0x325eb5){return function(){return client[_0x2f22('0x4')](_0x2f22('0x2a'),{'body':{'where':{'voiceQueueId':_0x5614c4,'interval':_0x325eb5}},'log':_0x2f22('0x29')});};};
\ No newline at end of file
+var _0x1e22=['updateContacts','UpdateCmHopper','format','YYYY-MM-DD\x20HH:mm:ss','rescheduleContact','VoiceQueueId','CampaignId','destroyContact','DestroyCmHopper','getContactDialer','DESC','ASC','GetContactDialer','priority','scheduledat','GetContactDialerIvr','moveContactManagedDialer','campaign','MoveContactManagedDialer','ListId','countReScheduled','CountReScheduled','getContactPreview','User','VoiceQueue','Queue','name','getCmHopper','unlockContact','getContactRecallMe','GetContactRecallMe','Agent','voicePause','resetActiveCalls','ResetActiveCalls','handlePreviewRecallNotifications','CmHopperHandlePreviewRecallNotifications','../client','moment','Request','CmContact','Contact'];(function(_0x91c9b9,_0x1f41ab){var _0x5e6b9d=function(_0x89f9a1){while(--_0x89f9a1){_0x91c9b9['push'](_0x91c9b9['shift']());}};_0x5e6b9d(++_0x1f41ab);}(_0x1e22,0x19f));var _0x21e2=function(_0x15e6fe,_0x1a5c39){_0x15e6fe=_0x15e6fe-0x0;var _0x34894d=_0x1e22[_0x15e6fe];return _0x34894d;};'use strict';var client=require(_0x21e2('0x0'));var moment=require(_0x21e2('0x1'));exports['getContacts']=function(_0xbaf239,_0x1dafe9){return function(){return client[_0x21e2('0x2')]('GetCmHopper',{'options':{'where':{'VoiceQueueId':_0xbaf239},'include':[{'model':_0x21e2('0x3'),'as':_0x21e2('0x4')}],'limit':_0x1dafe9,'raw':![]},'log':'getCmHopper'});};};exports[_0x21e2('0x5')]=function(_0x3d237c,_0x409a8f,_0x80a296){return function(){return client['Request'](_0x21e2('0x6'),{'body':_0x3d237c,'options':{'where':{'VoiceQueueId':_0x409a8f,'scheduledat':{'$lte':moment()[_0x21e2('0x7')](_0x21e2('0x8'))}},'limit':_0x80a296},'log':_0x21e2('0x6')});};};exports[_0x21e2('0x9')]=function(_0x1546f7){return function(){return client[_0x21e2('0x2')](_0x21e2('0x6'),{'body':_0x1546f7,'options':{'where':{'ContactId':_0x1546f7['ContactId'],'ListId':_0x1546f7['ListId'],'VoiceQueueId':_0x1546f7[_0x21e2('0xa')],'CampaignId':_0x1546f7[_0x21e2('0xb')]}},'log':_0x21e2('0x9')});};};exports[_0x21e2('0xc')]=function(_0x44d8a7,_0x364f97,_0x48f9bc){return function(){return client[_0x21e2('0x2')]('DestroyCmHopper',{'options':{'where':{'VoiceQueueId':_0x44d8a7,'ListId':_0x364f97,'ContactId':_0x48f9bc}},'log':_0x21e2('0xd')});};};exports[_0x21e2('0xe')]=function(_0xb251a9,_0x176062,_0x4a3bdc,_0xde8848){return function(){return client[_0x21e2('0x2')]('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0xb251a9,'active':![],'scheduledat':{'$lte':moment()[_0x21e2('0x7')](_0x21e2('0x8'))},'$or':[{'UserId':null},{'UserId':{'$in':_0x176062}}]},'order':[['priority',_0x21e2('0xf')],['scheduledat',_0xde8848],['id',_0x21e2('0x10')]],'raw':!![],'limit':_0x4a3bdc},'log':_0x21e2('0x11')});};};exports['getContactDialerIvr']=function(_0x6cb0ed,_0x4e79be,_0xfe4a7a){return function(){return client['Request']('GetContactDialer',{'body':{'active':!![]},'options':{'where':{'CampaignId':_0x6cb0ed,'active':![],'scheduledat':{'$lte':moment()['format'](_0x21e2('0x8'))}},'include':[{'model':'CmContact','as':_0x21e2('0x4')}],'order':[[_0x21e2('0x12'),_0x21e2('0xf')],[_0x21e2('0x13'),_0xfe4a7a],['id',_0x21e2('0x10')]],'raw':!![],'limit':_0x4e79be},'log':_0x21e2('0x14')});};};exports[_0x21e2('0x15')]=function(_0x3aff96,_0x1252e0){return function(){_0x3aff96[_0x21e2('0x16')]=_0x3aff96['queue'];return client[_0x21e2('0x2')](_0x21e2('0x17'),{'body':_0x3aff96,'options':{'where':{'ContactId':_0x3aff96['ContactId'],'ListId':_0x3aff96[_0x21e2('0x18')],'VoiceQueueId':_0x3aff96[_0x21e2('0xa')],'CampaignId':_0x3aff96[_0x21e2('0xb')],'active':_0x1252e0?undefined:!![]}},'log':_0x21e2('0x17')});};};exports[_0x21e2('0x19')]=function(_0x4e8c05){return function(){return client[_0x21e2('0x2')](_0x21e2('0x1a'),{'options':{'where':{'VoiceQueueId':_0x4e8c05['id']?_0x4e8c05['id']||null:null}},'log':'countReScheduled'});};};exports[_0x21e2('0x1b')]=function(_0x52005c){return function(){return client[_0x21e2('0x2')]('GetCmHopperPreview',{'options':{'where':{'id':_0x52005c},'include':[{'model':_0x21e2('0x3'),'as':_0x21e2('0x4')},{'model':_0x21e2('0x1c'),'as':'Agent','attributes':['id','name']},{'model':_0x21e2('0x1d'),'as':_0x21e2('0x1e'),'attributes':['id',_0x21e2('0x1f')]}],'raw':!![]},'log':_0x21e2('0x20')});};};exports[_0x21e2('0x21')]=function(_0x326871,_0x1ffc74,_0x446681){return function(){return client['Request'](_0x21e2('0x6'),{'body':_0x326871,'options':{'where':{'id':_0x1ffc74},'limit':_0x446681},'log':_0x21e2('0x6')});};};exports[_0x21e2('0x22')]=function(_0x5bb1d7,_0x262216){return function(){return client[_0x21e2('0x2')](_0x21e2('0x23'),{'body':{'active':!![]},'options':{'where':{'VoiceQueueId':_0x5bb1d7,'active':![],'recallme':!![],'scheduledat':{'$lte':moment()[_0x21e2('0x7')](_0x21e2('0x8'))},'UserId':{'$in':_0x262216}},'order':[[_0x21e2('0x12'),_0x21e2('0xf')],[_0x21e2('0x13'),'DESC'],['id',_0x21e2('0x10')]],'include':[{'model':_0x21e2('0x3'),'as':_0x21e2('0x4')},{'model':_0x21e2('0x1c'),'as':_0x21e2('0x24'),'attributes':['id','name',_0x21e2('0x25')]}],'group':'db.CmHopper.UserId','raw':!![]},'log':_0x21e2('0x11')});};};exports[_0x21e2('0x26')]=function(_0x1fd56f){return function(){return client[_0x21e2('0x2')](_0x21e2('0x27'),{'body':_0x1fd56f,'options':{},'log':_0x21e2('0x27')});};};exports[_0x21e2('0x28')]=function(_0x476292,_0x33f727,_0x39798f){return function(){return client[_0x21e2('0x2')](_0x21e2('0x29'),{'body':{'where':{'voiceQueueIds':_0x476292,'interval':_0x33f727,'availableAgentsIds':_0x39798f}},'log':_0x21e2('0x28')});};};
\ No newline at end of file
index 98209d5..0349fb9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3455=['IncrementPreviewCounters','verifyAdditionalPhones','Request','VerifyAdditionalPhones','swapAdditionalPhones','incrementPreviewCounters'];(function(_0x5d06ad,_0x319f57){var _0x5cfd1b=function(_0x4c2bfc){while(--_0x4c2bfc){_0x5d06ad['push'](_0x5d06ad['shift']());}};_0x5cfd1b(++_0x319f57);}(_0x3455,0x16f));var _0x5345=function(_0x5209ef,_0x3a4592){_0x5209ef=_0x5209ef-0x0;var _0x63f75f=_0x3455[_0x5209ef];return _0x63f75f;};'use strict';var client=require('../client');var moment=require('moment');exports[_0x5345('0x0')]=function(_0x4bc347,_0x1acc62,_0x16e19d){return function(){return client[_0x5345('0x1')](_0x5345('0x2'),{'body':_0x4bc347,'reason':_0x1acc62,'entity':_0x16e19d,'log':_0x5345('0x2')});};};exports[_0x5345('0x3')]=function(_0x4dc824,_0x3f9055,_0x654b20){return function(){return client[_0x5345('0x1')]('SwapAdditionalPhones',{'body':_0x4dc824,'duration':_0x3f9055,'waitTime':_0x654b20,'log':'SwapAdditionalPhones'});};};exports[_0x5345('0x4')]=function(_0x205661){return function(){return client[_0x5345('0x1')]('IncrementPreviewCounters',{'body':_0x205661,'log':_0x5345('0x5')});};};
\ No newline at end of file
+var _0x3684=['VerifyAdditionalPhones','SwapAdditionalPhones','incrementPreviewCounters','IncrementPreviewCounters','../client','moment','verifyAdditionalPhones','Request'];(function(_0x56b878,_0x4be9aa){var _0x32b9ec=function(_0x1511ea){while(--_0x1511ea){_0x56b878['push'](_0x56b878['shift']());}};_0x32b9ec(++_0x4be9aa);}(_0x3684,0x1d4));var _0x4368=function(_0x2d332e,_0x550c3d){_0x2d332e=_0x2d332e-0x0;var _0x3d0236=_0x3684[_0x2d332e];return _0x3d0236;};'use strict';var client=require(_0x4368('0x0'));var moment=require(_0x4368('0x1'));exports[_0x4368('0x2')]=function(_0x564c37,_0x5d2d80,_0x5e034d){return function(){return client[_0x4368('0x3')](_0x4368('0x4'),{'body':_0x564c37,'reason':_0x5d2d80,'entity':_0x5e034d,'log':'VerifyAdditionalPhones'});};};exports['swapAdditionalPhones']=function(_0x44e3f9,_0x3ad549,_0x23ecb7){return function(){return client[_0x4368('0x3')](_0x4368('0x5'),{'body':_0x44e3f9,'duration':_0x3ad549,'waitTime':_0x23ecb7,'log':_0x4368('0x5')});};};exports[_0x4368('0x6')]=function(_0x286da8){return function(){return client[_0x4368('0x3')]('IncrementPreviewCounters',{'body':_0x286da8,'log':_0x4368('0x7')});};};
\ No newline at end of file
index cfa777b..0fc0237 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x10f6=['checkIsBlackListIvr','CampaignId','phone','GetCmHopperBlackIvr','../client','checkIsBlackList','Request','VoiceQueueId','GetCmHopperBlack'];(function(_0x49979c,_0x4c0fc0){var _0x30cb05=function(_0x2b6104){while(--_0x2b6104){_0x49979c['push'](_0x49979c['shift']());}};_0x30cb05(++_0x4c0fc0);}(_0x10f6,0xd3));var _0x610f=function(_0x1c07fc,_0x1c252a){_0x1c07fc=_0x1c07fc-0x0;var _0x4765a3=_0x10f6[_0x1c07fc];return _0x4765a3;};'use strict';var client=require(_0x610f('0x0'));exports[_0x610f('0x1')]=function(_0x281bd2){return function(){return client[_0x610f('0x2')]('GetCmHopperBlack',{'options':{'where':{'VoiceQueueId':_0x281bd2[_0x610f('0x3')],'phone':_0x281bd2['phone']},'raw':![]},'log':_0x610f('0x4')});};};exports[_0x610f('0x5')]=function(_0x3899c4){return function(){return client['Request'](_0x610f('0x4'),{'options':{'where':{'CampaignId':_0x3899c4[_0x610f('0x6')],'phone':_0x3899c4[_0x610f('0x7')]},'raw':![]},'log':_0x610f('0x8')});};};
\ No newline at end of file
+var _0xbeb6=['CampaignId','GetCmHopperBlackIvr','../client','checkIsBlackList','Request','GetCmHopperBlack','VoiceQueueId','phone','checkIsBlackListIvr'];(function(_0x52f9cc,_0x46c2ef){var _0x38e801=function(_0x1f4881){while(--_0x1f4881){_0x52f9cc['push'](_0x52f9cc['shift']());}};_0x38e801(++_0x46c2ef);}(_0xbeb6,0x92));var _0x6beb=function(_0x1340f2,_0x56588b){_0x1340f2=_0x1340f2-0x0;var _0x1b4be5=_0xbeb6[_0x1340f2];return _0x1b4be5;};'use strict';var client=require(_0x6beb('0x0'));exports[_0x6beb('0x1')]=function(_0x8c5efb){return function(){return client[_0x6beb('0x2')](_0x6beb('0x3'),{'options':{'where':{'VoiceQueueId':_0x8c5efb[_0x6beb('0x4')],'phone':_0x8c5efb[_0x6beb('0x5')]},'raw':![]},'log':'GetCmHopperBlack'});};};exports[_0x6beb('0x6')]=function(_0x4d1600){return function(){return client[_0x6beb('0x2')](_0x6beb('0x3'),{'options':{'where':{'CampaignId':_0x4d1600[_0x6beb('0x7')],'phone':_0x4d1600[_0x6beb('0x5')]},'raw':![]},'log':_0x6beb('0x8')});};};
\ No newline at end of file
index 6828619..b2a3eae 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb50d=['../client','createContact','CreateCmHopperFinal'];(function(_0x1ca4c3,_0x554126){var _0x4426a6=function(_0x11e9b0){while(--_0x11e9b0){_0x1ca4c3['push'](_0x1ca4c3['shift']());}};_0x4426a6(++_0x554126);}(_0xb50d,0x9c));var _0xdb50=function(_0x59128b,_0x219d34){_0x59128b=_0x59128b-0x0;var _0x1bad63=_0xb50d[_0x59128b];return _0x1bad63;};'use strict';var client=require(_0xdb50('0x0'));exports[_0xdb50('0x1')]=function(_0x1b6ec4){return function(){_0x1b6ec4['campaign']=_0x1b6ec4['queue'];return client['Request'](_0xdb50('0x2'),{'body':_0x1b6ec4,'log':_0xdb50('0x2')});};};
\ No newline at end of file
+var _0x7ede=['queue','CreateCmHopperFinal','createContact'];(function(_0x4ce106,_0x34eb5e){var _0x1a8042=function(_0x4ce437){while(--_0x4ce437){_0x4ce106['push'](_0x4ce106['shift']());}};_0x1a8042(++_0x34eb5e);}(_0x7ede,0xf8));var _0xe7ed=function(_0x1573ea,_0x434f02){_0x1573ea=_0x1573ea-0x0;var _0x51c0e2=_0x7ede[_0x1573ea];return _0x51c0e2;};'use strict';var client=require('../client');exports[_0xe7ed('0x0')]=function(_0x4fb326){return function(){_0x4fb326['campaign']=_0x4fb326[_0xe7ed('0x1')];return client['Request'](_0xe7ed('0x2'),{'body':_0x4fb326,'log':_0xe7ed('0x2')});};};
\ No newline at end of file
index 3069c86..7f9d1d3 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf468=['CreateCmHopperHistory','AvgHandleTime','subtract','minutes','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','endOf','day','queue','getCampaignHopperHistory','GetCampaignHopperHistory','ivr','../client','moment','Request'];(function(_0x35aeb5,_0x4e8855){var _0x18fcec=function(_0x2f81a5){while(--_0x2f81a5){_0x35aeb5['push'](_0x35aeb5['shift']());}};_0x18fcec(++_0x4e8855);}(_0xf468,0x1c5));var _0x8f46=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0xf468[_0x14add3];return _0x4a174f;};'use strict';var client=require(_0x8f46('0x0'));var moment=require(_0x8f46('0x1'));exports['createHistory']=function(_0x3f6804){return function(){_0x3f6804['campaign']=_0x3f6804['queue'];return client[_0x8f46('0x2')](_0x8f46('0x3'),{'body':_0x3f6804,'log':_0x8f46('0x3')});};};exports['avgHandleTime']=function(_0x2fe23c){return function(){return client[_0x8f46('0x2')](_0x8f46('0x4'),{'options':{'where':{'endtime':{'$between':[moment()[_0x8f46('0x5')](_0x2fe23c,_0x8f46('0x6'))[_0x8f46('0x7')](_0x8f46('0x8')),moment()[_0x8f46('0x7')](_0x8f46('0x8'))]}},'raw':![]},'log':_0x8f46('0x9')});};};exports[_0x8f46('0xa')]=function(_0x592147){return function(){return client[_0x8f46('0x2')](_0x8f46('0xb'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x8f46('0xc')]('day')[_0x8f46('0x7')](_0x8f46('0x8')),moment()[_0x8f46('0xd')](_0x8f46('0xe'))[_0x8f46('0x7')](_0x8f46('0x8'))]},'campaigntype':_0x8f46('0xf')},'raw':![]},'log':_0x8f46('0xb')});};};exports[_0x8f46('0x10')]=function(_0x4abdf4){return function(){return client[_0x8f46('0x2')](_0x8f46('0x11'),{'options':{'where':{'createdAt':{'$between':[moment()[_0x8f46('0xc')]('day')['format'](_0x8f46('0x8')),moment()[_0x8f46('0xd')](_0x8f46('0xe'))['format'](_0x8f46('0x8'))]},'campaigntype':_0x8f46('0x12')},'raw':![]},'log':_0x8f46('0x11')});};};
\ No newline at end of file
+var _0x72fb=['avgHandleTime','AvgHandleTime','subtract','format','YYYY-MM-DD\x20HH:mm:ss','GetCmHopperHistory','getVoiceQueueHopperHistory','GetVoiceQueueHopperHistory','startOf','endOf','day','getCampaignHopperHistory','GetCampaignHopperHistory','ivr','../client','moment','createHistory','campaign','queue','Request','CreateCmHopperHistory'];(function(_0x3b5250,_0x7a0b2c){var _0xc844a1=function(_0x2fbc98){while(--_0x2fbc98){_0x3b5250['push'](_0x3b5250['shift']());}};_0xc844a1(++_0x7a0b2c);}(_0x72fb,0x15e));var _0xb72f=function(_0x597e38,_0x551ac2){_0x597e38=_0x597e38-0x0;var _0x5305d2=_0x72fb[_0x597e38];return _0x5305d2;};'use strict';var client=require(_0xb72f('0x0'));var moment=require(_0xb72f('0x1'));exports[_0xb72f('0x2')]=function(_0x51c775){return function(){_0x51c775[_0xb72f('0x3')]=_0x51c775[_0xb72f('0x4')];return client[_0xb72f('0x5')](_0xb72f('0x6'),{'body':_0x51c775,'log':_0xb72f('0x6')});};};exports[_0xb72f('0x7')]=function(_0x559c5a){return function(){return client[_0xb72f('0x5')](_0xb72f('0x8'),{'options':{'where':{'endtime':{'$between':[moment()[_0xb72f('0x9')](_0x559c5a,'minutes')[_0xb72f('0xa')](_0xb72f('0xb')),moment()[_0xb72f('0xa')](_0xb72f('0xb'))]}},'raw':![]},'log':_0xb72f('0xc')});};};exports[_0xb72f('0xd')]=function(_0x274618){return function(){return client[_0xb72f('0x5')](_0xb72f('0xe'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xb72f('0xf')]('day')[_0xb72f('0xa')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xb72f('0x10')](_0xb72f('0x11'))['format'](_0xb72f('0xb'))]},'campaigntype':_0xb72f('0x4')},'raw':![]},'log':'GetVoiceQueueHopperHistory'});};};exports[_0xb72f('0x12')]=function(_0x16f164){return function(){return client[_0xb72f('0x5')](_0xb72f('0x13'),{'options':{'where':{'createdAt':{'$between':[moment()[_0xb72f('0xf')](_0xb72f('0x11'))[_0xb72f('0xa')]('YYYY-MM-DD\x20HH:mm:ss'),moment()[_0xb72f('0x10')](_0xb72f('0x11'))[_0xb72f('0xa')](_0xb72f('0xb'))]},'campaigntype':_0xb72f('0x14')},'raw':![]},'log':_0xb72f('0x13')});};};
\ No newline at end of file
index 5cd9d6e..e24457f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6b47=['gateway','t38timeout','tech','TrunkId','ListId','key','Trunk','callerid','active','getFaxAccount','notify','Request','NotifyFaxAccount','getFaxAccounts','GetFaxAccount','name','description','ecm','localstationid','minrate','maxrate','modem'];(function(_0x33d7c2,_0x957161){var _0x51d316=function(_0x2843c7){while(--_0x2843c7){_0x33d7c2['push'](_0x33d7c2['shift']());}};_0x51d316(++_0x957161);}(_0x6b47,0xe9));var _0x76b4=function(_0xd70515,_0x50cfb3){_0xd70515=_0xd70515-0x0;var _0x1e9a3a=_0x6b47[_0xd70515];return _0x1e9a3a;};'use strict';var client=require('../client');exports[_0x76b4('0x0')]=function(){return function(){return client['Request'](_0x76b4('0x1'),{'options':{'raw':![],'attributes':['id',_0x76b4('0x2'),_0x76b4('0x3'),_0x76b4('0x4'),'headerinfo',_0x76b4('0x5'),_0x76b4('0x6'),_0x76b4('0x7'),_0x76b4('0x8'),_0x76b4('0x9'),'faxdetect',_0x76b4('0xa'),_0x76b4('0xb'),_0x76b4('0xc'),_0x76b4('0xd'),_0x76b4('0xe')],'include':[{'model':_0x76b4('0xf'),'as':_0x76b4('0xf'),'attributes':['id',_0x76b4('0x2'),_0x76b4('0x10'),_0x76b4('0x11')]}]},'log':_0x76b4('0x12')});};};exports[_0x76b4('0x13')]=function(_0xc95c50,_0x4d8823){return client[_0x76b4('0x14')](_0x76b4('0x15'),{'account':{'id':_0xc95c50},'body':_0x4d8823,'log':'NotifyFaxAccount'});};
\ No newline at end of file
+var _0xc04a=['ecm','localstationid','minrate','maxrate','modem','TrunkId','ListId','key','Trunk','callerid','active','getFaxAccount','NotifyFaxAccount','../client','Request','name','description'];(function(_0x1f6448,_0x32e816){var _0x2abfe2=function(_0x59adfc){while(--_0x59adfc){_0x1f6448['push'](_0x1f6448['shift']());}};_0x2abfe2(++_0x32e816);}(_0xc04a,0x12e));var _0xac04=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xc04a[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0xac04('0x0'));exports['getFaxAccounts']=function(){return function(){return client[_0xac04('0x1')]('GetFaxAccount',{'options':{'raw':![],'attributes':['id',_0xac04('0x2'),_0xac04('0x3'),_0xac04('0x4'),'headerinfo',_0xac04('0x5'),_0xac04('0x6'),_0xac04('0x7'),_0xac04('0x8'),'gateway','faxdetect','t38timeout','tech',_0xac04('0x9'),_0xac04('0xa'),_0xac04('0xb')],'include':[{'model':_0xac04('0xc'),'as':_0xac04('0xc'),'attributes':['id',_0xac04('0x2'),_0xac04('0xd'),_0xac04('0xe')]}]},'log':_0xac04('0xf')});};};exports['notify']=function(_0x2fc7f5,_0x4f4b4b){return client[_0xac04('0x1')](_0xac04('0x10'),{'account':{'id':_0x2fc7f5},'body':_0x4f4b4b,'log':_0xac04('0x10')});};
\ No newline at end of file
index 91d1cb0..e444c97 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf7c2=['Request','UpdateFaxMessage','update'];(function(_0x543a45,_0x46ae0b){var _0x54094a=function(_0x580bb4){while(--_0x580bb4){_0x543a45['push'](_0x543a45['shift']());}};_0x54094a(++_0x46ae0b);}(_0xf7c2,0x83));var _0x2f7c=function(_0xeb00db,_0x93329a){_0xeb00db=_0xeb00db-0x0;var _0x14a163=_0xf7c2[_0xeb00db];return _0x14a163;};'use strict';var client=require('../client');exports[_0x2f7c('0x0')]=function(_0x424956,_0xf092a9){return client[_0x2f7c('0x1')](_0x2f7c('0x2'),{'body':_0xf092a9,'options':{'where':{'AttachmentId':_0x424956}},'log':_0x2f7c('0x2')});};
\ No newline at end of file
+var _0x4889=['UpdateFaxMessage','update'];(function(_0x1fd675,_0x165dfe){var _0x16b554=function(_0x5761ff){while(--_0x5761ff){_0x1fd675['push'](_0x1fd675['shift']());}};_0x16b554(++_0x165dfe);}(_0x4889,0xdf));var _0x9488=function(_0x59547f,_0x1fe1da){_0x59547f=_0x59547f-0x0;var _0x2448d4=_0x4889[_0x59547f];return _0x2448d4;};'use strict';var client=require('../client');exports[_0x9488('0x0')]=function(_0x5c96c4,_0x1d3ac8){return client['Request']('UpdateFaxMessage',{'body':_0x1d3ac8,'options':{'where':{'AttachmentId':_0x5c96c4}},'log':_0x9488('0x1')});};
\ No newline at end of file
index c5c0194..dc24daa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9eb6=['authType','type','DeskConfiguration','Configurations','content','variableName','Variable','Descriptions','key','keyContent','DeskField','nameField','customField','Tags','getDeskAccounts','Request','GetDeskAccount','name','description','username'];(function(_0x111650,_0x2ded4b){var _0x40fdc6=function(_0x123046){while(--_0x123046){_0x111650['push'](_0x111650['shift']());}};_0x40fdc6(++_0x2ded4b);}(_0x9eb6,0xea));var _0x69eb=function(_0x16b9ed,_0x56517a){_0x16b9ed=_0x16b9ed-0x0;var _0x66b1f8=_0x9eb6[_0x16b9ed];return _0x66b1f8;};'use strict';var client=require('../../client');exports[_0x69eb('0x0')]=function(){return function(_0x26e01c){return client[_0x69eb('0x1')](_0x69eb('0x2'),{'options':{'raw':![],'attributes':['id',_0x69eb('0x3'),_0x69eb('0x4'),_0x69eb('0x5'),'password','remoteUri',_0x69eb('0x6'),_0x69eb('0x7'),'serverUrl'],'include':[{'model':_0x69eb('0x8'),'as':_0x69eb('0x9'),'attributes':['id',_0x69eb('0x3')],'include':[{'model':'DeskField','as':'Subjects','attributes':['id','type',_0x69eb('0xa'),_0x69eb('0xb')],'include':[{'model':_0x69eb('0xc'),'as':'Variable','attributes':['id',_0x69eb('0x3')]}]},{'model':'DeskField','as':_0x69eb('0xd'),'attributes':['id',_0x69eb('0x7'),_0x69eb('0xa'),_0x69eb('0xe'),'keyType',_0x69eb('0xf'),'variableName'],'include':[{'model':_0x69eb('0xc'),'as':_0x69eb('0xc'),'attributes':['id',_0x69eb('0x3')]}]},{'model':_0x69eb('0x10'),'as':'Fields','attributes':['id',_0x69eb('0x7'),_0x69eb('0xa'),'idField',_0x69eb('0x11'),_0x69eb('0x12'),_0x69eb('0xb')],'include':[{'model':_0x69eb('0xc'),'as':'Variable','attributes':['id',_0x69eb('0x3')]}]},{'model':'Tag','as':_0x69eb('0x13'),'attributes':['id',_0x69eb('0x3')]}]}]},'log':_0x69eb('0x2')});};};
\ No newline at end of file
+var _0xafe1=['Request','GetDeskAccount','name','description','username','password','remoteUri','authType','serverUrl','Configurations','DeskField','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','nameField','Tag','Tags'];(function(_0x4a0751,_0x2c3345){var _0xcd05db=function(_0x2afd02){while(--_0x2afd02){_0x4a0751['push'](_0x4a0751['shift']());}};_0xcd05db(++_0x2c3345);}(_0xafe1,0xaf));var _0x1afe=function(_0x78c305,_0x2e3398){_0x78c305=_0x78c305-0x0;var _0xf31647=_0xafe1[_0x78c305];return _0xf31647;};'use strict';var client=require('../../client');exports['getDeskAccounts']=function(){return function(_0x35e5ce){return client[_0x1afe('0x0')](_0x1afe('0x1'),{'options':{'raw':![],'attributes':['id',_0x1afe('0x2'),_0x1afe('0x3'),_0x1afe('0x4'),_0x1afe('0x5'),_0x1afe('0x6'),_0x1afe('0x7'),'type',_0x1afe('0x8')],'include':[{'model':'DeskConfiguration','as':_0x1afe('0x9'),'attributes':['id','name'],'include':[{'model':_0x1afe('0xa'),'as':_0x1afe('0xb'),'attributes':['id',_0x1afe('0xc'),_0x1afe('0xd'),_0x1afe('0xe')],'include':[{'model':_0x1afe('0xf'),'as':_0x1afe('0xf'),'attributes':['id','name']}]},{'model':_0x1afe('0xa'),'as':_0x1afe('0x10'),'attributes':['id',_0x1afe('0xc'),'content',_0x1afe('0x11'),_0x1afe('0x12'),_0x1afe('0x13'),_0x1afe('0xe')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x1afe('0x2')]}]},{'model':_0x1afe('0xa'),'as':_0x1afe('0x14'),'attributes':['id',_0x1afe('0xc'),_0x1afe('0xd'),_0x1afe('0x15'),_0x1afe('0x16'),'customField','variableName'],'include':[{'model':_0x1afe('0xf'),'as':_0x1afe('0xf'),'attributes':['id',_0x1afe('0x2')]}]},{'model':_0x1afe('0x17'),'as':_0x1afe('0x18'),'attributes':['id','name']}]}]},'log':_0x1afe('0x1')});};};
\ No newline at end of file
index 4bab0aa..494b664 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1c6f=['additionalSearchContact','type','variableName','Variable','Dynamics365Field','content','key','keyType','keyContent','Fields','idField','nameField','customField','CloudProvider','data2','data5','data7','../../client','Request','GetDynamics365Account','username','password','remoteUri','tenantId','clientId','serverUrl','Dynamics365Configuration','name','ticketType'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x1c6f,0x150));var _0xf1c6=function(_0x2cae32,_0x4b5966){_0x2cae32=_0x2cae32-0x0;var _0x3b51f3=_0x1c6f[_0x2cae32];return _0x3b51f3;};'use strict';var client=require(_0xf1c6('0x0'));exports['getDynamics365Accounts']=function(){return function(_0x397891){return client[_0xf1c6('0x1')](_0xf1c6('0x2'),{'options':{'raw':![],'attributes':['id','name',_0xf1c6('0x3'),_0xf1c6('0x4'),_0xf1c6('0x5'),_0xf1c6('0x6'),_0xf1c6('0x7'),'clientSecret',_0xf1c6('0x8'),'description','modernAuthentication'],'include':[{'model':_0xf1c6('0x9'),'as':'Configurations','attributes':['id',_0xf1c6('0xa'),_0xf1c6('0xb'),'moduleCreate',_0xf1c6('0xc')],'include':[{'model':'Dynamics365Field','as':'Subjects','attributes':['id',_0xf1c6('0xd'),'content',_0xf1c6('0xe')],'include':[{'model':_0xf1c6('0xf'),'as':'Variable','attributes':['id','name']}]},{'model':_0xf1c6('0x10'),'as':'Descriptions','attributes':['id',_0xf1c6('0xd'),_0xf1c6('0x11'),_0xf1c6('0x12'),_0xf1c6('0x13'),_0xf1c6('0x14'),_0xf1c6('0xe')],'include':[{'model':_0xf1c6('0xf'),'as':_0xf1c6('0xf'),'attributes':['id',_0xf1c6('0xa')]}]},{'model':'Dynamics365Field','as':_0xf1c6('0x15'),'attributes':['id',_0xf1c6('0xd'),_0xf1c6('0x11'),_0xf1c6('0x16'),_0xf1c6('0x17'),_0xf1c6('0x18'),_0xf1c6('0xe')],'include':[{'model':_0xf1c6('0xf'),'as':_0xf1c6('0xf'),'attributes':['id','name']}]}]},{'model':'CloudProvider','as':_0xf1c6('0x19'),'attributes':['id',_0xf1c6('0x1a'),_0xf1c6('0x1b'),_0xf1c6('0x1c')]}]},'log':'GetDynamics365Account'});};};
\ No newline at end of file
+var _0xa107=['idField','nameField','CloudProvider','data2','data5','../../client','getDynamics365Accounts','Request','GetDynamics365Account','name','remoteUri','tenantId','clientSecret','serverUrl','description','Dynamics365Configuration','ticketType','Dynamics365Field','content','variableName','Variable','type','key','keyType','keyContent','Fields'];(function(_0x5aa0ae,_0x42aa78){var _0x59c12b=function(_0x361107){while(--_0x361107){_0x5aa0ae['push'](_0x5aa0ae['shift']());}};_0x59c12b(++_0x42aa78);}(_0xa107,0x13d));var _0x7a10=function(_0x1831d0,_0x53c926){_0x1831d0=_0x1831d0-0x0;var _0x1c4060=_0xa107[_0x1831d0];return _0x1c4060;};'use strict';var client=require(_0x7a10('0x0'));exports[_0x7a10('0x1')]=function(){return function(_0x5e5232){return client[_0x7a10('0x2')](_0x7a10('0x3'),{'options':{'raw':![],'attributes':['id',_0x7a10('0x4'),'username','password',_0x7a10('0x5'),_0x7a10('0x6'),'clientId',_0x7a10('0x7'),_0x7a10('0x8'),_0x7a10('0x9'),'modernAuthentication'],'include':[{'model':_0x7a10('0xa'),'as':'Configurations','attributes':['id',_0x7a10('0x4'),_0x7a10('0xb'),'moduleCreate','additionalSearchContact'],'include':[{'model':_0x7a10('0xc'),'as':'Subjects','attributes':['id','type',_0x7a10('0xd'),_0x7a10('0xe')],'include':[{'model':_0x7a10('0xf'),'as':_0x7a10('0xf'),'attributes':['id',_0x7a10('0x4')]}]},{'model':_0x7a10('0xc'),'as':'Descriptions','attributes':['id',_0x7a10('0x10'),_0x7a10('0xd'),_0x7a10('0x11'),_0x7a10('0x12'),_0x7a10('0x13'),_0x7a10('0xe')],'include':[{'model':_0x7a10('0xf'),'as':_0x7a10('0xf'),'attributes':['id',_0x7a10('0x4')]}]},{'model':_0x7a10('0xc'),'as':_0x7a10('0x14'),'attributes':['id','type',_0x7a10('0xd'),_0x7a10('0x15'),_0x7a10('0x16'),'customField',_0x7a10('0xe')],'include':[{'model':_0x7a10('0xf'),'as':_0x7a10('0xf'),'attributes':['id',_0x7a10('0x4')]}]}]},{'model':_0x7a10('0x17'),'as':_0x7a10('0x17'),'attributes':['id',_0x7a10('0x18'),_0x7a10('0x19'),'data7']}]},'log':_0x7a10('0x3')});};};
\ No newline at end of file
index 31d6f48..c923384 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x112a=['idField','nameField','../../client','getFreshdeskAccounts','Request','GetFreshdeskAccount','name','username','apiKey','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','Tag','FreshdeskField','Subjects','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields'];(function(_0x1bc5b7,_0x3c81b9){var _0x981305=function(_0xbf75b0){while(--_0xbf75b0){_0x1bc5b7['push'](_0x1bc5b7['shift']());}};_0x981305(++_0x3c81b9);}(_0x112a,0x115));var _0xa112=function(_0x34e158,_0xeb215a){_0x34e158=_0x34e158-0x0;var _0x2b2773=_0x112a[_0x34e158];return _0x2b2773;};'use strict';var client=require(_0xa112('0x0'));exports[_0xa112('0x1')]=function(){return function(_0xe30bf4){return client[_0xa112('0x2')](_0xa112('0x3'),{'options':{'raw':![],'attributes':['id',_0xa112('0x4'),_0xa112('0x5'),_0xa112('0x6'),_0xa112('0x7'),_0xa112('0x8')],'include':[{'model':_0xa112('0x9'),'as':_0xa112('0xa'),'attributes':['id',_0xa112('0x4')],'include':[{'model':_0xa112('0xb'),'attributes':['id',_0xa112('0x4')]},{'model':_0xa112('0xc'),'as':_0xa112('0xd'),'attributes':['id',_0xa112('0xe'),_0xa112('0xf'),_0xa112('0x10')],'include':[{'model':_0xa112('0x11'),'as':_0xa112('0x11'),'attributes':['id',_0xa112('0x4')]}]},{'model':'FreshdeskField','as':_0xa112('0x12'),'attributes':['id','type',_0xa112('0xf'),_0xa112('0x13'),_0xa112('0x14'),_0xa112('0x15'),_0xa112('0x10')],'include':[{'model':_0xa112('0x11'),'as':_0xa112('0x11'),'attributes':['id',_0xa112('0x4')]}]},{'model':_0xa112('0xc'),'as':_0xa112('0x16'),'attributes':['id',_0xa112('0xe'),_0xa112('0xf'),_0xa112('0x17'),_0xa112('0x18'),'customField',_0xa112('0x10')],'include':[{'model':_0xa112('0x11'),'as':_0xa112('0x11'),'attributes':['id',_0xa112('0x4')]}]}]}]},'log':_0xa112('0x3')});};};
\ No newline at end of file
+var _0x95c5=['apiKey','remoteUri','serverUrl','FreshdeskConfiguration','Configurations','FreshdeskField','Subjects','type','content','variableName','Variable','key','keyContent','Fields','idField','nameField','customField','../../client','getFreshdeskAccounts','Request','GetFreshdeskAccount','name','username'];(function(_0x5c73e2,_0x47aa7a){var _0x4e7cbd=function(_0x568fdb){while(--_0x568fdb){_0x5c73e2['push'](_0x5c73e2['shift']());}};_0x4e7cbd(++_0x47aa7a);}(_0x95c5,0x153));var _0x595c=function(_0x2c96f6,_0x877207){_0x2c96f6=_0x2c96f6-0x0;var _0x6d4808=_0x95c5[_0x2c96f6];return _0x6d4808;};'use strict';var client=require(_0x595c('0x0'));exports[_0x595c('0x1')]=function(){return function(_0x4c7d81){return client[_0x595c('0x2')](_0x595c('0x3'),{'options':{'raw':![],'attributes':['id',_0x595c('0x4'),_0x595c('0x5'),_0x595c('0x6'),_0x595c('0x7'),_0x595c('0x8')],'include':[{'model':_0x595c('0x9'),'as':_0x595c('0xa'),'attributes':['id',_0x595c('0x4')],'include':[{'model':'Tag','attributes':['id','name']},{'model':_0x595c('0xb'),'as':_0x595c('0xc'),'attributes':['id',_0x595c('0xd'),_0x595c('0xe'),_0x595c('0xf')],'include':[{'model':_0x595c('0x10'),'as':_0x595c('0x10'),'attributes':['id',_0x595c('0x4')]}]},{'model':_0x595c('0xb'),'as':'Descriptions','attributes':['id',_0x595c('0xd'),_0x595c('0xe'),_0x595c('0x11'),'keyType',_0x595c('0x12'),_0x595c('0xf')],'include':[{'model':_0x595c('0x10'),'as':_0x595c('0x10'),'attributes':['id',_0x595c('0x4')]}]},{'model':_0x595c('0xb'),'as':_0x595c('0x13'),'attributes':['id',_0x595c('0xd'),_0x595c('0xe'),_0x595c('0x14'),_0x595c('0x15'),_0x595c('0x16'),_0x595c('0xf')],'include':[{'model':_0x595c('0x10'),'as':'Variable','attributes':['id',_0x595c('0x4')]}]}]}]},'log':_0x595c('0x3')});};};
\ No newline at end of file
index 64730ac..659d1a5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d58=['username','remoteUri','serverUrl','Configurations','FreshsalesField','Subjects','content','variableName','Variable','Descriptions','type','keyContent','GetFreshsalesccount','name'];(function(_0x2e2ea3,_0x142fc6){var _0x3487f0=function(_0x501ceb){while(--_0x501ceb){_0x2e2ea3['push'](_0x2e2ea3['shift']());}};_0x3487f0(++_0x142fc6);}(_0x5d58,0x187));var _0x85d5=function(_0x10a2e6,_0x573d72){_0x10a2e6=_0x10a2e6-0x0;var _0x1aaac1=_0x5d58[_0x10a2e6];return _0x1aaac1;};'use strict';var client=require('../../client');exports['getFreshsalesAccounts']=function(){return function(_0x5e2da7){return client['Request']('GetFreshsalesAccount',{'options':{'raw':![],'attributes':['id',_0x85d5('0x0'),_0x85d5('0x1'),'apiKey',_0x85d5('0x2'),_0x85d5('0x3')],'include':[{'model':'FreshsalesConfiguration','as':_0x85d5('0x4'),'attributes':['id',_0x85d5('0x0')],'include':[{'model':_0x85d5('0x5'),'as':_0x85d5('0x6'),'attributes':['id','type',_0x85d5('0x7'),_0x85d5('0x8')],'include':[{'model':'Variable','as':_0x85d5('0x9'),'attributes':['id','name']}]},{'model':_0x85d5('0x5'),'as':_0x85d5('0xa'),'attributes':['id',_0x85d5('0xb'),'content','key','keyType',_0x85d5('0xc'),_0x85d5('0x8')],'include':[{'model':_0x85d5('0x9'),'as':_0x85d5('0x9'),'attributes':['id',_0x85d5('0x0')]}]}]}]},'log':_0x85d5('0xd')});};};
\ No newline at end of file
+var _0x31f0=['keyType','keyContent','GetFreshsalesccount','../../client','GetFreshsalesAccount','name','username','apiKey','serverUrl','FreshsalesConfiguration','Subjects','content','variableName','Variable','FreshsalesField','Descriptions','type','key'];(function(_0x33502a,_0x5aa8d9){var _0x2f3101=function(_0x4aa35c){while(--_0x4aa35c){_0x33502a['push'](_0x33502a['shift']());}};_0x2f3101(++_0x5aa8d9);}(_0x31f0,0xb7));var _0x031f=function(_0x3baf6d,_0x3babf2){_0x3baf6d=_0x3baf6d-0x0;var _0xc674cf=_0x31f0[_0x3baf6d];return _0xc674cf;};'use strict';var client=require(_0x031f('0x0'));exports['getFreshsalesAccounts']=function(){return function(_0xc4ca54){return client['Request'](_0x031f('0x1'),{'options':{'raw':![],'attributes':['id',_0x031f('0x2'),_0x031f('0x3'),_0x031f('0x4'),'remoteUri',_0x031f('0x5')],'include':[{'model':_0x031f('0x6'),'as':'Configurations','attributes':['id','name'],'include':[{'model':'FreshsalesField','as':_0x031f('0x7'),'attributes':['id','type',_0x031f('0x8'),_0x031f('0x9')],'include':[{'model':_0x031f('0xa'),'as':_0x031f('0xa'),'attributes':['id','name']}]},{'model':_0x031f('0xb'),'as':_0x031f('0xc'),'attributes':['id',_0x031f('0xd'),_0x031f('0x8'),_0x031f('0xe'),_0x031f('0xf'),_0x031f('0x10'),_0x031f('0x9')],'include':[{'model':'Variable','as':_0x031f('0xa'),'attributes':['id',_0x031f('0x2')]}]}]}]},'log':_0x031f('0x11')});};};
\ No newline at end of file
index 486fcc5..651dfee 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9a4d=['additionalSearchContact','additionalSearchLead','Subjects','Variable','SalesforceField','Fields','GetSalesforceAccount','../../client','getSalesforceAccounts','Request','password','remoteUri','clientId','clientSecret','securityToken','type','SalesforceConfiguration','Configurations','name','moduleSearch','moduleCreate','leadId','additionalSearchAccount'];(function(_0x539ec0,_0x3d12fa){var _0x1ca469=function(_0x54d6a4){while(--_0x54d6a4){_0x539ec0['push'](_0x539ec0['shift']());}};_0x1ca469(++_0x3d12fa);}(_0x9a4d,0xa8));var _0xd9a4=function(_0xa73aa,_0x4e1e22){_0xa73aa=_0xa73aa-0x0;var _0x2e8881=_0x9a4d[_0xa73aa];return _0x2e8881;};'use strict';var client=require(_0xd9a4('0x0'));exports[_0xd9a4('0x1')]=function(){return function(_0x668e5b){return client[_0xd9a4('0x2')]('GetSalesforceAccount',{'options':{'raw':![],'attributes':['id','name','username',_0xd9a4('0x3'),_0xd9a4('0x4'),_0xd9a4('0x5'),_0xd9a4('0x6'),_0xd9a4('0x7'),'serverUrl',_0xd9a4('0x8')],'include':[{'model':_0xd9a4('0x9'),'as':_0xd9a4('0xa'),'attributes':['id',_0xd9a4('0xb'),_0xd9a4('0xc'),_0xd9a4('0xd'),'ticketType',_0xd9a4('0xe'),_0xd9a4('0xf'),_0xd9a4('0x10'),_0xd9a4('0x11')],'include':[{'model':'SalesforceField','as':_0xd9a4('0x12'),'include':[{'model':_0xd9a4('0x13'),'as':_0xd9a4('0x13'),'attributes':['id',_0xd9a4('0xb')]}]},{'model':_0xd9a4('0x14'),'as':'Descriptions','include':[{'model':_0xd9a4('0x13'),'as':_0xd9a4('0x13'),'attributes':['id',_0xd9a4('0xb')]}]},{'model':'SalesforceField','as':_0xd9a4('0x15'),'include':[{'model':_0xd9a4('0x13'),'as':_0xd9a4('0x13'),'attributes':['id',_0xd9a4('0xb')]}]}]}]},'log':_0xd9a4('0x16')});};};
\ No newline at end of file
+var _0x0d90=['securityToken','serverUrl','SalesforceConfiguration','Configurations','moduleCreate','ticketType','additionalSearchAccount','additionalSearchContact','additionalSearchLead','SalesforceField','Subjects','Variable','Descriptions','../../client','getSalesforceAccounts','GetSalesforceAccount','name','username','remoteUri','clientId','clientSecret'];(function(_0x2dad04,_0x1f256a){var _0x339692=function(_0x5884cb){while(--_0x5884cb){_0x2dad04['push'](_0x2dad04['shift']());}};_0x339692(++_0x1f256a);}(_0x0d90,0xa0));var _0x00d9=function(_0x1f5dea,_0x46bacc){_0x1f5dea=_0x1f5dea-0x0;var _0x5c5fce=_0x0d90[_0x1f5dea];return _0x5c5fce;};'use strict';var client=require(_0x00d9('0x0'));exports[_0x00d9('0x1')]=function(){return function(_0x2c86ce){return client['Request'](_0x00d9('0x2'),{'options':{'raw':![],'attributes':['id',_0x00d9('0x3'),_0x00d9('0x4'),'password',_0x00d9('0x5'),_0x00d9('0x6'),_0x00d9('0x7'),_0x00d9('0x8'),_0x00d9('0x9'),'type'],'include':[{'model':_0x00d9('0xa'),'as':_0x00d9('0xb'),'attributes':['id',_0x00d9('0x3'),'moduleSearch',_0x00d9('0xc'),_0x00d9('0xd'),'leadId',_0x00d9('0xe'),_0x00d9('0xf'),_0x00d9('0x10')],'include':[{'model':_0x00d9('0x11'),'as':_0x00d9('0x12'),'include':[{'model':'Variable','as':_0x00d9('0x13'),'attributes':['id',_0x00d9('0x3')]}]},{'model':_0x00d9('0x11'),'as':_0x00d9('0x14'),'include':[{'model':_0x00d9('0x13'),'as':_0x00d9('0x13'),'attributes':['id',_0x00d9('0x3')]}]},{'model':_0x00d9('0x11'),'as':'Fields','include':[{'model':'Variable','as':'Variable','attributes':['id',_0x00d9('0x3')]}]}]}]},'log':_0x00d9('0x2')});};};
\ No newline at end of file
index 8465ce3..fed304d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x524e=['name','description','username','password','email','remoteUri','serverUrl','Configurations','ServicenowField','type','content','variableName','Variable','Descriptions','key','keyType','keyContent','Fields','idField','nameField','Request','GetServicenowAccount'];(function(_0x3947c9,_0x4d6c97){var _0x2e7871=function(_0x1236cc){while(--_0x1236cc){_0x3947c9['push'](_0x3947c9['shift']());}};_0x2e7871(++_0x4d6c97);}(_0x524e,0x15e));var _0xe524=function(_0x4b0a08,_0x3dbc5a){_0x4b0a08=_0x4b0a08-0x0;var _0x178e0c=_0x524e[_0x4b0a08];return _0x178e0c;};'use strict';var client=require('../../client');exports['getServicenowAccounts']=function(){return function(_0x353d8a){return client[_0xe524('0x0')](_0xe524('0x1'),{'options':{'raw':![],'attributes':['id',_0xe524('0x2'),_0xe524('0x3'),_0xe524('0x4'),_0xe524('0x5'),_0xe524('0x6'),_0xe524('0x7'),_0xe524('0x8')],'include':[{'model':'ServicenowConfiguration','as':_0xe524('0x9'),'attributes':['id',_0xe524('0x2')],'include':[{'model':_0xe524('0xa'),'as':'Subjects','attributes':['id',_0xe524('0xb'),_0xe524('0xc'),_0xe524('0xd')],'include':[{'model':_0xe524('0xe'),'as':_0xe524('0xe'),'attributes':['id',_0xe524('0x2')]}]},{'model':_0xe524('0xa'),'as':_0xe524('0xf'),'attributes':['id',_0xe524('0xb'),_0xe524('0xc'),_0xe524('0x10'),_0xe524('0x11'),_0xe524('0x12'),_0xe524('0xd')],'include':[{'model':_0xe524('0xe'),'as':_0xe524('0xe'),'attributes':['id','name']}]},{'model':'ServicenowField','as':_0xe524('0x13'),'attributes':['id',_0xe524('0xb'),_0xe524('0xc'),_0xe524('0x14'),_0xe524('0x15'),'customField',_0xe524('0xd')],'include':[{'model':'Variable','as':_0xe524('0xe'),'attributes':['id',_0xe524('0x2')]}]}]}]},'log':'GetServicenowkAccount'});};};
\ No newline at end of file
+var _0x57ca=['type','variableName','Variable','Descriptions','content','key','keyContent','Fields','nameField','customField','GetServicenowkAccount','getServicenowAccounts','GetServicenowAccount','name','description','username','password','remoteUri','serverUrl','ServicenowConfiguration','Configurations','ServicenowField','Subjects'];(function(_0x37c22c,_0x28a70d){var _0x119d79=function(_0x243a13){while(--_0x243a13){_0x37c22c['push'](_0x37c22c['shift']());}};_0x119d79(++_0x28a70d);}(_0x57ca,0x108));var _0xa57c=function(_0xe1494c,_0x59e3c1){_0xe1494c=_0xe1494c-0x0;var _0xf44665=_0x57ca[_0xe1494c];return _0xf44665;};'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'),'email',_0xa57c('0x6'),_0xa57c('0x7')],'include':[{'model':_0xa57c('0x8'),'as':_0xa57c('0x9'),'attributes':['id',_0xa57c('0x2')],'include':[{'model':_0xa57c('0xa'),'as':_0xa57c('0xb'),'attributes':['id',_0xa57c('0xc'),'content',_0xa57c('0xd')],'include':[{'model':'Variable','as':_0xa57c('0xe'),'attributes':['id',_0xa57c('0x2')]}]},{'model':'ServicenowField','as':_0xa57c('0xf'),'attributes':['id','type',_0xa57c('0x10'),_0xa57c('0x11'),'keyType',_0xa57c('0x12'),'variableName'],'include':[{'model':_0xa57c('0xe'),'as':_0xa57c('0xe'),'attributes':['id',_0xa57c('0x2')]}]},{'model':_0xa57c('0xa'),'as':_0xa57c('0x13'),'attributes':['id','type',_0xa57c('0x10'),'idField',_0xa57c('0x14'),_0xa57c('0x15'),_0xa57c('0xd')],'include':[{'model':_0xa57c('0xe'),'as':_0xa57c('0xe'),'attributes':['id',_0xa57c('0x2')]}]}]}]},'log':_0xa57c('0x16')});};};
\ No newline at end of file
index ea8cb60..5a10f87 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0295=['remoteUri','serverUrl','SugarcrmConfiguration','Configurations','name','SugarcrmField','Subjects','Variable','Descriptions','content','key','keyType','variableName','Fields','customField','GetSugarcrmAccount','../../client','Request','username','password'];(function(_0x3a1ff5,_0x310094){var _0x41bdd7=function(_0x1094d6){while(--_0x1094d6){_0x3a1ff5['push'](_0x3a1ff5['shift']());}};_0x41bdd7(++_0x310094);}(_0x0295,0x1f0));var _0x5029=function(_0x3a4061,_0x57aa2a){_0x3a4061=_0x3a4061-0x0;var _0x51814c=_0x0295[_0x3a4061];return _0x51814c;};'use strict';var client=require(_0x5029('0x0'));exports['getSugarcrmAccounts']=function(){return function(_0x5e71d0){return client[_0x5029('0x1')]('GetSugarcrmAccount',{'options':{'raw':![],'attributes':['id','name',_0x5029('0x2'),_0x5029('0x3'),_0x5029('0x4'),_0x5029('0x5')],'include':[{'model':_0x5029('0x6'),'as':_0x5029('0x7'),'attributes':['id',_0x5029('0x8')],'include':[{'model':_0x5029('0x9'),'as':_0x5029('0xa'),'attributes':['id','type','content','variableName'],'include':[{'model':_0x5029('0xb'),'as':'Variable','attributes':['id',_0x5029('0x8')]}]},{'model':'SugarcrmField','as':_0x5029('0xc'),'attributes':['id','type',_0x5029('0xd'),_0x5029('0xe'),_0x5029('0xf'),'keyContent',_0x5029('0x10')],'include':[{'model':_0x5029('0xb'),'as':_0x5029('0xb'),'attributes':['id','name']}]},{'model':_0x5029('0x9'),'as':_0x5029('0x11'),'attributes':['id','type','content','idField','nameField',_0x5029('0x12'),_0x5029('0x10')],'include':[{'model':_0x5029('0xb'),'as':_0x5029('0xb'),'attributes':['id',_0x5029('0x8')]}]}]}]},'log':_0x5029('0x13')});};};
\ No newline at end of file
+var _0x2ef3=['SugarcrmField','Descriptions','keyType','keyContent','Fields','idField','../../client','getSugarcrmAccounts','Request','GetSugarcrmAccount','name','password','remoteUri','SugarcrmConfiguration','Configurations','Subjects','type','content','variableName','Variable'];(function(_0x1d2c59,_0x11984d){var _0x434555=function(_0x538569){while(--_0x538569){_0x1d2c59['push'](_0x1d2c59['shift']());}};_0x434555(++_0x11984d);}(_0x2ef3,0xba));var _0x32ef=function(_0x3434f2,_0x167f43){_0x3434f2=_0x3434f2-0x0;var _0x4267fa=_0x2ef3[_0x3434f2];return _0x4267fa;};'use strict';var client=require(_0x32ef('0x0'));exports[_0x32ef('0x1')]=function(){return function(_0x47513a){return client[_0x32ef('0x2')](_0x32ef('0x3'),{'options':{'raw':![],'attributes':['id',_0x32ef('0x4'),'username',_0x32ef('0x5'),_0x32ef('0x6'),'serverUrl'],'include':[{'model':_0x32ef('0x7'),'as':_0x32ef('0x8'),'attributes':['id','name'],'include':[{'model':'SugarcrmField','as':_0x32ef('0x9'),'attributes':['id',_0x32ef('0xa'),_0x32ef('0xb'),_0x32ef('0xc')],'include':[{'model':_0x32ef('0xd'),'as':_0x32ef('0xd'),'attributes':['id',_0x32ef('0x4')]}]},{'model':_0x32ef('0xe'),'as':_0x32ef('0xf'),'attributes':['id',_0x32ef('0xa'),'content','key',_0x32ef('0x10'),_0x32ef('0x11'),_0x32ef('0xc')],'include':[{'model':_0x32ef('0xd'),'as':'Variable','attributes':['id',_0x32ef('0x4')]}]},{'model':'SugarcrmField','as':_0x32ef('0x12'),'attributes':['id','type',_0x32ef('0xb'),_0x32ef('0x13'),'nameField','customField',_0x32ef('0xc')],'include':[{'model':'Variable','as':_0x32ef('0xd'),'attributes':['id',_0x32ef('0x4')]}]}]}]},'log':_0x32ef('0x3')});};};
\ No newline at end of file
index 20b6e5d..41a5db5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x58e4=['key','keyType','keyContent','Fields','idField','nameField','customField','../../client','Request','GetVtigerAccount','description','username','accessKey','remoteUri','serverUrl','VtigerConfiguration','Configurations','name','VtigerField','Subjects','type','content','variableName','Variable'];(function(_0x296754,_0x5befe9){var _0x1d9f1d=function(_0x3f033e){while(--_0x3f033e){_0x296754['push'](_0x296754['shift']());}};_0x1d9f1d(++_0x5befe9);}(_0x58e4,0x157));var _0x458e=function(_0x3d4e7b,_0x18868d){_0x3d4e7b=_0x3d4e7b-0x0;var _0x490999=_0x58e4[_0x3d4e7b];return _0x490999;};'use strict';var client=require(_0x458e('0x0'));exports['getVtigerAccounts']=function(){return function(_0x5e0880){return client[_0x458e('0x1')](_0x458e('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x458e('0x3'),_0x458e('0x4'),_0x458e('0x5'),_0x458e('0x6'),_0x458e('0x7')],'include':[{'model':_0x458e('0x8'),'as':_0x458e('0x9'),'attributes':['id',_0x458e('0xa')],'include':[{'model':_0x458e('0xb'),'as':_0x458e('0xc'),'attributes':['id',_0x458e('0xd'),_0x458e('0xe'),_0x458e('0xf')],'include':[{'model':_0x458e('0x10'),'as':_0x458e('0x10'),'attributes':['id',_0x458e('0xa')]}]},{'model':_0x458e('0xb'),'as':'Descriptions','attributes':['id',_0x458e('0xd'),_0x458e('0xe'),_0x458e('0x11'),_0x458e('0x12'),_0x458e('0x13'),_0x458e('0xf')],'include':[{'model':'Variable','as':_0x458e('0x10'),'attributes':['id',_0x458e('0xa')]}]},{'model':_0x458e('0xb'),'as':_0x458e('0x14'),'attributes':['id','type',_0x458e('0xe'),_0x458e('0x15'),_0x458e('0x16'),_0x458e('0x17'),_0x458e('0xf')],'include':[{'model':_0x458e('0x10'),'as':_0x458e('0x10'),'attributes':['id',_0x458e('0xa')]}]}]}]},'log':_0x458e('0x2')});};};
\ No newline at end of file
+var _0x73a0=['Subjects','type','Variable','VtigerField','content','key','keyContent','nameField','customField','variableName','../../client','getVtigerAccounts','Request','GetVtigerAccount','username','accessKey','remoteUri','serverUrl','VtigerConfiguration','Configurations','name'];(function(_0x1a5cd7,_0x3811e9){var _0x399402=function(_0x2b388c){while(--_0x2b388c){_0x1a5cd7['push'](_0x1a5cd7['shift']());}};_0x399402(++_0x3811e9);}(_0x73a0,0x130));var _0x073a=function(_0x487df3,_0x601b4d){_0x487df3=_0x487df3-0x0;var _0x22269c=_0x73a0[_0x487df3];return _0x22269c;};'use strict';var client=require(_0x073a('0x0'));exports[_0x073a('0x1')]=function(){return function(_0x38a1c){return client[_0x073a('0x2')](_0x073a('0x3'),{'options':{'raw':![],'attributes':['id','name','description',_0x073a('0x4'),_0x073a('0x5'),_0x073a('0x6'),_0x073a('0x7')],'include':[{'model':_0x073a('0x8'),'as':_0x073a('0x9'),'attributes':['id',_0x073a('0xa')],'include':[{'model':'VtigerField','as':_0x073a('0xb'),'attributes':['id',_0x073a('0xc'),'content','variableName'],'include':[{'model':_0x073a('0xd'),'as':_0x073a('0xd'),'attributes':['id',_0x073a('0xa')]}]},{'model':_0x073a('0xe'),'as':'Descriptions','attributes':['id',_0x073a('0xc'),_0x073a('0xf'),_0x073a('0x10'),'keyType',_0x073a('0x11'),'variableName'],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0x073a('0xa')]}]},{'model':_0x073a('0xe'),'as':'Fields','attributes':['id',_0x073a('0xc'),_0x073a('0xf'),'idField',_0x073a('0x12'),_0x073a('0x13'),_0x073a('0x14')],'include':[{'model':'Variable','as':_0x073a('0xd'),'attributes':['id',_0x073a('0xa')]}]}]}]},'log':_0x073a('0x3')});};};
\ No newline at end of file
index d553691..bc634fe 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4fce=['username','password','token','remoteUri','serverUrl','type','ZendeskConfiguration','Tag','ZendeskField','Subjects','content','variableName','key','keyType','keyContent','Variable','Fields','idField','nameField','customField','../../client','getZendeskAccounts','GetZendeskAccount','name'];(function(_0x46a671,_0x758e9a){var _0x526d75=function(_0xde3640){while(--_0xde3640){_0x46a671['push'](_0x46a671['shift']());}};_0x526d75(++_0x758e9a);}(_0x4fce,0x74));var _0xe4fc=function(_0x1785cb,_0x39a964){_0x1785cb=_0x1785cb-0x0;var _0x3bba22=_0x4fce[_0x1785cb];return _0x3bba22;};'use strict';var client=require(_0xe4fc('0x0'));exports[_0xe4fc('0x1')]=function(){return function(_0x31ae5c){return client['Request'](_0xe4fc('0x2'),{'options':{'raw':![],'attributes':['id',_0xe4fc('0x3'),_0xe4fc('0x4'),_0xe4fc('0x5'),_0xe4fc('0x6'),_0xe4fc('0x7'),'authType',_0xe4fc('0x8'),_0xe4fc('0x9')],'include':[{'model':_0xe4fc('0xa'),'as':'Configurations','attributes':['id',_0xe4fc('0x3')],'include':[{'model':_0xe4fc('0xb'),'attributes':['id','name']},{'model':_0xe4fc('0xc'),'as':_0xe4fc('0xd'),'attributes':['id',_0xe4fc('0x9'),_0xe4fc('0xe'),_0xe4fc('0xf')],'include':[{'model':'Variable','as':'Variable','attributes':['id',_0xe4fc('0x3')]}]},{'model':_0xe4fc('0xc'),'as':'Descriptions','attributes':['id','type',_0xe4fc('0xe'),_0xe4fc('0x10'),_0xe4fc('0x11'),_0xe4fc('0x12'),_0xe4fc('0xf')],'include':[{'model':_0xe4fc('0x13'),'as':'Variable','attributes':['id',_0xe4fc('0x3')]}]},{'model':'ZendeskField','as':_0xe4fc('0x14'),'attributes':['id',_0xe4fc('0x9'),_0xe4fc('0xe'),_0xe4fc('0x15'),_0xe4fc('0x16'),_0xe4fc('0x17'),_0xe4fc('0xf')],'include':[{'model':_0xe4fc('0x13'),'as':_0xe4fc('0x13'),'attributes':['id',_0xe4fc('0x3')]}]}]}]},'log':_0xe4fc('0x2')});};};
\ No newline at end of file
+var _0xd4b2=['authType','serverUrl','type','ZendeskConfiguration','Configurations','Tag','ZendeskField','variableName','Variable','Descriptions','key','keyType','keyContent','nameField','Request','GetZendeskAccount','name','username','password','token','remoteUri'];(function(_0x3ef2d5,_0x423d46){var _0x2fefb2=function(_0x54f82f){while(--_0x54f82f){_0x3ef2d5['push'](_0x3ef2d5['shift']());}};_0x2fefb2(++_0x423d46);}(_0xd4b2,0x77));var _0x2d4b=function(_0x58f65e,_0x467d61){_0x58f65e=_0x58f65e-0x0;var _0x35684b=_0xd4b2[_0x58f65e];return _0x35684b;};'use strict';var client=require('../../client');exports['getZendeskAccounts']=function(){return function(_0x4113a3){return client[_0x2d4b('0x0')](_0x2d4b('0x1'),{'options':{'raw':![],'attributes':['id',_0x2d4b('0x2'),_0x2d4b('0x3'),_0x2d4b('0x4'),_0x2d4b('0x5'),_0x2d4b('0x6'),_0x2d4b('0x7'),_0x2d4b('0x8'),_0x2d4b('0x9')],'include':[{'model':_0x2d4b('0xa'),'as':_0x2d4b('0xb'),'attributes':['id',_0x2d4b('0x2')],'include':[{'model':_0x2d4b('0xc'),'attributes':['id',_0x2d4b('0x2')]},{'model':_0x2d4b('0xd'),'as':'Subjects','attributes':['id',_0x2d4b('0x9'),'content',_0x2d4b('0xe')],'include':[{'model':_0x2d4b('0xf'),'as':_0x2d4b('0xf'),'attributes':['id',_0x2d4b('0x2')]}]},{'model':'ZendeskField','as':_0x2d4b('0x10'),'attributes':['id','type','content',_0x2d4b('0x11'),_0x2d4b('0x12'),_0x2d4b('0x13'),_0x2d4b('0xe')],'include':[{'model':'Variable','as':'Variable','attributes':['id','name']}]},{'model':_0x2d4b('0xd'),'as':'Fields','attributes':['id','type','content','idField',_0x2d4b('0x14'),'customField',_0x2d4b('0xe')],'include':[{'model':_0x2d4b('0xf'),'as':_0x2d4b('0xf'),'attributes':['id',_0x2d4b('0x2')]}]}]}]},'log':_0x2d4b('0x1')});};};
\ No newline at end of file
index 053dea1..6e9eb59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x59d6=['clientId','serverUrl','code','refreshToken','ZohoConfiguration','Configurations','moduleSearch','ZohoField','Subjects','content','variableName','Variable','Descriptions','type','keyType','keyContent','Fields','idField','nameField','customField','../../client','getZohoAccounts','Request','GetZohoAccount','name','host'];(function(_0x43e4b3,_0x1444de){var _0x10c655=function(_0x56c01d){while(--_0x56c01d){_0x43e4b3['push'](_0x43e4b3['shift']());}};_0x10c655(++_0x1444de);}(_0x59d6,0x1e8));var _0x659d=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0x59d6[_0x4cf98e];return _0x1623ac;};'use strict';var client=require(_0x659d('0x0'));exports[_0x659d('0x1')]=function(){return function(_0x476320){return client[_0x659d('0x2')](_0x659d('0x3'),{'options':{'raw':![],'attributes':['id',_0x659d('0x4'),'description',_0x659d('0x5'),'zone',_0x659d('0x6'),'clientSecret',_0x659d('0x7'),_0x659d('0x8'),_0x659d('0x9')],'include':[{'model':_0x659d('0xa'),'as':_0x659d('0xb'),'attributes':['id',_0x659d('0x4'),'moduleCreate',_0x659d('0xc'),'description'],'include':[{'model':_0x659d('0xd'),'as':_0x659d('0xe'),'attributes':['id','type',_0x659d('0xf'),_0x659d('0x10')],'include':[{'model':_0x659d('0x11'),'as':'Variable','attributes':['id',_0x659d('0x4')]}]},{'model':_0x659d('0xd'),'as':_0x659d('0x12'),'attributes':['id',_0x659d('0x13'),_0x659d('0xf'),'key',_0x659d('0x14'),_0x659d('0x15'),_0x659d('0x10')],'include':[{'model':'Variable','as':_0x659d('0x11'),'attributes':['id',_0x659d('0x4')]}]},{'model':'ZohoField','as':_0x659d('0x16'),'attributes':['id',_0x659d('0x13'),'content',_0x659d('0x17'),_0x659d('0x18'),_0x659d('0x19'),_0x659d('0x10')],'include':[{'model':_0x659d('0x11'),'as':_0x659d('0x11'),'attributes':['id','name']}]}]}]},'log':'GetZohoAccount'});};};
\ No newline at end of file
+var _0x0a9e=['variableName','Variable','key','keyContent','Fields','nameField','../../client','getZohoAccounts','Request','GetZohoAccount','name','description','host','zone','clientId','code','moduleSearch','ZohoField','Subjects','type','content'];(function(_0x177387,_0x55add0){var _0xf3b2cc=function(_0x24e352){while(--_0x24e352){_0x177387['push'](_0x177387['shift']());}};_0xf3b2cc(++_0x55add0);}(_0x0a9e,0xed));var _0xe0a9=function(_0x4148ec,_0x166226){_0x4148ec=_0x4148ec-0x0;var _0x233c87=_0x0a9e[_0x4148ec];return _0x233c87;};'use strict';var client=require(_0xe0a9('0x0'));exports[_0xe0a9('0x1')]=function(){return function(_0x593f00){return client[_0xe0a9('0x2')](_0xe0a9('0x3'),{'options':{'raw':![],'attributes':['id',_0xe0a9('0x4'),_0xe0a9('0x5'),_0xe0a9('0x6'),_0xe0a9('0x7'),_0xe0a9('0x8'),'clientSecret','serverUrl',_0xe0a9('0x9'),'refreshToken'],'include':[{'model':'ZohoConfiguration','as':'Configurations','attributes':['id',_0xe0a9('0x4'),'moduleCreate',_0xe0a9('0xa'),_0xe0a9('0x5')],'include':[{'model':_0xe0a9('0xb'),'as':_0xe0a9('0xc'),'attributes':['id',_0xe0a9('0xd'),_0xe0a9('0xe'),_0xe0a9('0xf')],'include':[{'model':_0xe0a9('0x10'),'as':'Variable','attributes':['id',_0xe0a9('0x4')]}]},{'model':_0xe0a9('0xb'),'as':'Descriptions','attributes':['id',_0xe0a9('0xd'),_0xe0a9('0xe'),_0xe0a9('0x11'),'keyType',_0xe0a9('0x12'),_0xe0a9('0xf')],'include':[{'model':_0xe0a9('0x10'),'as':_0xe0a9('0x10'),'attributes':['id','name']}]},{'model':_0xe0a9('0xb'),'as':_0xe0a9('0x13'),'attributes':['id',_0xe0a9('0xd'),_0xe0a9('0xe'),'idField',_0xe0a9('0x14'),'customField',_0xe0a9('0xf')],'include':[{'model':_0xe0a9('0x10'),'as':_0xe0a9('0x10'),'attributes':['id',_0xe0a9('0x4')]}]}]}]},'log':_0xe0a9('0x3')});};};
\ No newline at end of file
index da535f0..a7f23cc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x129a=['moment','util','voiceQueueReport','voice','lastAssignedTo','isNil','interface','format','SIP/%s','TALKING','queuecallerleaveAt','diff','seconds','inbound','calleridnum','exten','agent','accountcode','toNumber','uniqueid','CreateMemberReport','voiceDialReport','Request','membername','endtime','starttime','dialstring'];(function(_0x1631d3,_0x577800){var _0x1ae1b4=function(_0xf427b3){while(--_0xf427b3){_0x1631d3['push'](_0x1631d3['shift']());}};_0x1ae1b4(++_0x577800);}(_0x129a,0x10e));var _0xa129=function(_0x82b6a0,_0x441d41){_0x82b6a0=_0x82b6a0-0x0;var _0xe78ca9=_0x129a[_0x82b6a0];return _0xe78ca9;};'use strict';var moment=require(_0xa129('0x0'));var _=require('lodash');var util=require(_0xa129('0x1'));var client=require('../client');exports[_0xa129('0x2')]=function(_0x1ae0a6){var _0x30c55e=_0x1ae0a6['queuecallercompleteAt']||_0x1ae0a6['queuecallerexitAt'];return client['Request']('CreateMemberReport',{'body':{'channel':_0xa129('0x3'),'membername':_0x1ae0a6[_0xa129('0x4')],'interface':_[_0xa129('0x5')](_0x1ae0a6[_0xa129('0x6')])?util[_0xa129('0x7')](_0xa129('0x8'),_0x1ae0a6[_0xa129('0x4')]):_0x1ae0a6[_0xa129('0x6')],'type':_0xa129('0x9'),'enterAt':_0x1ae0a6[_0xa129('0xa')],'exitAt':_0x30c55e,'duration':moment(_0x30c55e)[_0xa129('0xb')](_0x1ae0a6['queuecallerleaveAt'],_0xa129('0xc')),'data1':_0xa129('0xd'),'data2':_0x1ae0a6[_0xa129('0xe')],'data3':_0x1ae0a6[_0xa129('0xf')],'data4':null,'data5':_0x1ae0a6['queue'],'role':_0xa129('0x10'),'internal':_0x1ae0a6[_0xa129('0x11')]?_[_0xa129('0x12')](_0x1ae0a6['accountcode']):undefined,'uniqueid':_0x1ae0a6[_0xa129('0x13')]},'log':_0xa129('0x14')});};exports[_0xa129('0x15')]=function(_0x5d448a){return client[_0xa129('0x16')](_0xa129('0x14'),{'body':{'channel':'voice','membername':_0x5d448a[_0xa129('0x17')],'interface':_0x5d448a[_0xa129('0x6')],'type':_0xa129('0x9'),'enterAt':_0x5d448a['starttime'],'exitAt':_0x5d448a[_0xa129('0x18')],'duration':moment(_0x5d448a['endtime'])[_0xa129('0xb')](_0x5d448a[_0xa129('0x19')],'seconds')>=0x0?moment(_0x5d448a['endtime'])[_0xa129('0xb')](_0x5d448a[_0xa129('0x19')],'seconds'):null,'data1':'outbound','data2':_0x5d448a['accountcode'],'data3':_0x5d448a['exten'],'data4':_0x5d448a[_0xa129('0x1a')]||null,'role':_0xa129('0x10'),'internal':_0x5d448a[_0xa129('0x11')]?_['toNumber'](_0x5d448a['accountcode']):undefined,'uniqueid':_0x5d448a[_0xa129('0x13')]},'log':_0xa129('0x14')});};
\ No newline at end of file
+var _0x534a=['TALKING','queuecallerleaveAt','diff','seconds','inbound','calleridnum','exten','queue','agent','accountcode','toNumber','CreateMemberReport','voiceDialReport','membername','starttime','endtime','outbound','uniqueid','moment','lodash','util','../client','voiceQueueReport','queuecallercompleteAt','queuecallerexitAt','Request','voice','interface'];(function(_0x28b7ab,_0x16a764){var _0x56791b=function(_0x25d20d){while(--_0x25d20d){_0x28b7ab['push'](_0x28b7ab['shift']());}};_0x56791b(++_0x16a764);}(_0x534a,0x1d2));var _0xa534=function(_0x2aac92,_0x399a96){_0x2aac92=_0x2aac92-0x0;var _0x427e08=_0x534a[_0x2aac92];return _0x427e08;};'use strict';var moment=require(_0xa534('0x0'));var _=require(_0xa534('0x1'));var util=require(_0xa534('0x2'));var client=require(_0xa534('0x3'));exports[_0xa534('0x4')]=function(_0x5cb97e){var _0x491fdd=_0x5cb97e[_0xa534('0x5')]||_0x5cb97e[_0xa534('0x6')];return client[_0xa534('0x7')]('CreateMemberReport',{'body':{'channel':_0xa534('0x8'),'membername':_0x5cb97e['lastAssignedTo'],'interface':_['isNil'](_0x5cb97e[_0xa534('0x9')])?util['format']('SIP/%s',_0x5cb97e['lastAssignedTo']):_0x5cb97e[_0xa534('0x9')],'type':_0xa534('0xa'),'enterAt':_0x5cb97e[_0xa534('0xb')],'exitAt':_0x491fdd,'duration':moment(_0x491fdd)[_0xa534('0xc')](_0x5cb97e[_0xa534('0xb')],_0xa534('0xd')),'data1':_0xa534('0xe'),'data2':_0x5cb97e[_0xa534('0xf')],'data3':_0x5cb97e[_0xa534('0x10')],'data4':null,'data5':_0x5cb97e[_0xa534('0x11')],'role':_0xa534('0x12'),'internal':_0x5cb97e[_0xa534('0x13')]?_[_0xa534('0x14')](_0x5cb97e[_0xa534('0x13')]):undefined,'uniqueid':_0x5cb97e['uniqueid']},'log':_0xa534('0x15')});};exports[_0xa534('0x16')]=function(_0x45ed12){return client['Request'](_0xa534('0x15'),{'body':{'channel':_0xa534('0x8'),'membername':_0x45ed12[_0xa534('0x17')],'interface':_0x45ed12[_0xa534('0x9')],'type':_0xa534('0xa'),'enterAt':_0x45ed12[_0xa534('0x18')],'exitAt':_0x45ed12[_0xa534('0x19')],'duration':moment(_0x45ed12[_0xa534('0x19')])[_0xa534('0xc')](_0x45ed12[_0xa534('0x18')],_0xa534('0xd'))>=0x0?moment(_0x45ed12['endtime'])[_0xa534('0xc')](_0x45ed12[_0xa534('0x18')],_0xa534('0xd')):null,'data1':_0xa534('0x1a'),'data2':_0x45ed12[_0xa534('0x13')],'data3':_0x45ed12[_0xa534('0x10')],'data4':_0x45ed12['dialstring']||null,'role':'agent','internal':_0x45ed12[_0xa534('0x13')]?_['toNumber'](_0x45ed12['accountcode']):undefined,'uniqueid':_0x45ed12[_0xa534('0x1b')]},'log':'CreateMemberReport'});};
\ No newline at end of file
index 62e1695..b4d5893 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x13eb=['ShowSetting','stopRecordingOnTransfer','GetSettings','../client','getSettings'];(function(_0x15a1ae,_0x47fbaf){var _0x40e139=function(_0x53f584){while(--_0x53f584){_0x15a1ae['push'](_0x15a1ae['shift']());}};_0x40e139(++_0x47fbaf);}(_0x13eb,0x8f));var _0xb13e=function(_0x22a8c4,_0x51c09a){_0x22a8c4=_0x22a8c4-0x0;var _0x104c6d=_0x13eb[_0x22a8c4];return _0x104c6d;};'use strict';var client=require(_0xb13e('0x0'));exports[_0xb13e('0x1')]=function(){return client['Request'](_0xb13e('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xb13e('0x3'),'previewRecallmeReminderInterval']},'log':_0xb13e('0x4')});};
\ No newline at end of file
+var _0xfa4d=['../client','getSettings','ShowSetting'];(function(_0xe64cd,_0x4f5d71){var _0x551930=function(_0x46c8be){while(--_0x46c8be){_0xe64cd['push'](_0xe64cd['shift']());}};_0x551930(++_0x4f5d71);}(_0xfa4d,0x90));var _0xdfa4=function(_0x177d9c,_0x19f118){_0x177d9c=_0x177d9c-0x0;var _0x440084=_0xfa4d[_0x177d9c];return _0x440084;};'use strict';var client=require(_0xdfa4('0x0'));exports[_0xdfa4('0x1')]=function(){return client['Request'](_0xdfa4('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':['stopRecordingOnTransfer','previewRecallmeReminderInterval']},'log':'GetSettings'});};
\ No newline at end of file
index cae74c0..a4d895a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5d37=['Request','GetTemplate','html','../client','getTemplates'];(function(_0x5a87b6,_0x5d66cc){var _0x2e606e=function(_0x5cbbb0){while(--_0x5cbbb0){_0x5a87b6['push'](_0x5a87b6['shift']());}};_0x2e606e(++_0x5d66cc);}(_0x5d37,0x1f2));var _0x75d3=function(_0x1dc3d9,_0x39a17a){_0x1dc3d9=_0x1dc3d9-0x0;var _0x3189d2=_0x5d37[_0x1dc3d9];return _0x3189d2;};'use strict';var client=require(_0x75d3('0x0'));exports[_0x75d3('0x1')]=function(_0x506ea8){return function(_0x180f1e){return client[_0x75d3('0x2')](_0x75d3('0x3'),{'options':{'raw':!![],'attributes':['id','name',_0x75d3('0x4')]},'log':_0x75d3('0x3')});};};
\ No newline at end of file
+var _0xcc21=['getTemplates','GetTemplate'];(function(_0x2b6f8e,_0x462289){var _0x158411=function(_0x57f317){while(--_0x57f317){_0x2b6f8e['push'](_0x2b6f8e['shift']());}};_0x158411(++_0x462289);}(_0xcc21,0xb8));var _0x1cc2=function(_0x3b2be3,_0x3e602d){_0x3b2be3=_0x3b2be3-0x0;var _0x511b35=_0xcc21[_0x3b2be3];return _0x511b35;};'use strict';var client=require('../client');exports[_0x1cc2('0x0')]=function(_0x58c569){return function(_0x8484c5){return client['Request'](_0x1cc2('0x1'),{'options':{'raw':!![],'attributes':['id','name','html']},'log':'GetTemplate'});};};
\ No newline at end of file
index 5cd52be..344152e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0f9d=['../client','getTriggers','Request','GetTrigger','name','channel','status','Condition','field','operator','AnyConditions','value','Action','Actions','action','data2','data4','data5','data7'];(function(_0x47dce8,_0x2f7c94){var _0x3910f0=function(_0x4629ed){while(--_0x4629ed){_0x47dce8['push'](_0x47dce8['shift']());}};_0x3910f0(++_0x2f7c94);}(_0x0f9d,0x10a));var _0xd0f9=function(_0xdbe2de,_0x3bdc5a){_0xdbe2de=_0xdbe2de-0x0;var _0x2facd7=_0x0f9d[_0xdbe2de];return _0x2facd7;};'use strict';var client=require(_0xd0f9('0x0'));exports[_0xd0f9('0x1')]=function(_0x418959){return function(_0x455b02){return client[_0xd0f9('0x2')](_0xd0f9('0x3'),{'options':{'raw':![],'attributes':['id',_0xd0f9('0x4'),_0xd0f9('0x5'),_0xd0f9('0x6')],'include':[{'model':_0xd0f9('0x7'),'as':'AllConditions','attributes':['id',_0xd0f9('0x8'),_0xd0f9('0x9'),'value']},{'model':_0xd0f9('0x7'),'as':_0xd0f9('0xa'),'attributes':['id',_0xd0f9('0x8'),_0xd0f9('0x9'),_0xd0f9('0xb')]},{'model':_0xd0f9('0xc'),'as':_0xd0f9('0xd'),'attributes':['id',_0xd0f9('0xe'),'data1',_0xd0f9('0xf'),'data3',_0xd0f9('0x10'),_0xd0f9('0x11'),'data6',_0xd0f9('0x12')]}]},'log':_0xd0f9('0x3')});};};
\ No newline at end of file
+var _0xf0c9=['data4','data5','data6','data7','../client','getTriggers','Request','GetTrigger','name','Condition','AllConditions','field','operator','value','Action','Actions','data1','data2','data3'];(function(_0x59a71f,_0x2040ab){var _0x2af71d=function(_0x2d611e){while(--_0x2d611e){_0x59a71f['push'](_0x59a71f['shift']());}};_0x2af71d(++_0x2040ab);}(_0xf0c9,0x89));var _0x9f0c=function(_0x110f2a,_0x28e5a4){_0x110f2a=_0x110f2a-0x0;var _0x447730=_0xf0c9[_0x110f2a];return _0x447730;};'use strict';var client=require(_0x9f0c('0x0'));exports[_0x9f0c('0x1')]=function(_0x212daf){return function(_0x5a6412){return client[_0x9f0c('0x2')](_0x9f0c('0x3'),{'options':{'raw':![],'attributes':['id',_0x9f0c('0x4'),'channel','status'],'include':[{'model':_0x9f0c('0x5'),'as':_0x9f0c('0x6'),'attributes':['id',_0x9f0c('0x7'),_0x9f0c('0x8'),_0x9f0c('0x9')]},{'model':_0x9f0c('0x5'),'as':'AnyConditions','attributes':['id',_0x9f0c('0x7'),'operator',_0x9f0c('0x9')]},{'model':_0x9f0c('0xa'),'as':_0x9f0c('0xb'),'attributes':['id','action',_0x9f0c('0xc'),_0x9f0c('0xd'),_0x9f0c('0xe'),_0x9f0c('0xf'),_0x9f0c('0x10'),_0x9f0c('0x11'),_0x9f0c('0x12')]}]},'log':_0x9f0c('0x3')});};};
\ No newline at end of file
index 597c90b..ff3a4c7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ce1=['registry','defaultuser','../client','getTrunks','Request','GetTrunk','name'];(function(_0x1b7ca0,_0x4c4ca2){var _0x4ffc13=function(_0x5ed7e9){while(--_0x5ed7e9){_0x1b7ca0['push'](_0x1b7ca0['shift']());}};_0x4ffc13(++_0x4c4ca2);}(_0x8ce1,0x183));var _0x18ce=function(_0x5c3da1,_0x2e7547){_0x5c3da1=_0x5c3da1-0x0;var _0x3da109=_0x8ce1[_0x5c3da1];return _0x3da109;};'use strict';var client=require(_0x18ce('0x0'));exports[_0x18ce('0x1')]=function(_0x22d350){return function(_0x1ba15f){return client[_0x18ce('0x2')](_0x18ce('0x3'),{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0x18ce('0x4'),_0x18ce('0x5'),_0x18ce('0x6')]},'log':_0x18ce('0x3')});};};
\ No newline at end of file
+var _0xd8eb=['name','registry','defaultuser','GetTrunk','../client','getTrunks','Request'];(function(_0x53f964,_0x3b52b8){var _0x17be6c=function(_0x25a732){while(--_0x25a732){_0x53f964['push'](_0x53f964['shift']());}};_0x17be6c(++_0x3b52b8);}(_0xd8eb,0x66));var _0xbd8e=function(_0x122096,_0x60c295){_0x122096=_0x122096-0x0;var _0x3d1966=_0xd8eb[_0x122096];return _0x3d1966;};'use strict';var client=require(_0xbd8e('0x0'));exports[_0xbd8e('0x1')]=function(_0x56d701){return function(_0x23449b){return client[_0xbd8e('0x2')]('GetTrunk',{'options':{'raw':!![],'where':{'active':0x1},'attributes':['id',_0xbd8e('0x3'),_0xbd8e('0x4'),_0xbd8e('0x5')]},'log':_0xbd8e('0x6')});};};
\ No newline at end of file
index 7b992b1..261ceff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['internal','savePause','PauseUser','saveUnpause','UnpauseUser','ShowUser','getAgent','../client','getAgents','Request','agent','name','email','accountcode','fullname','online','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','GetUser','telephone'];(function(_0x2f5ac5,_0x1ee939){var _0x37c9a8=function(_0x15031f){while(--_0x15031f){_0x2f5ac5['push'](_0x2f5ac5['shift']());}};_0x37c9a8(++_0x1ee939);}(_0xe706,0xa3));var _0x6e70=function(_0x5c8827,_0x5bc5d7){_0x5c8827=_0x5c8827-0x0;var _0x50ffd5=_0xe706[_0x5c8827];return _0x50ffd5;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':_0x6e70('0x3')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x5'),_0x6e70('0x6'),_0x6e70('0x7'),_0x6e70('0x8'),_0x6e70('0x9'),_0x6e70('0xa'),_0x6e70('0xb'),_0x6e70('0xc'),_0x6e70('0xd'),_0x6e70('0xe'),_0x6e70('0xf')]},'log':_0x6e70('0x1')});};};exports[_0x6e70('0x10')]=function(){return function(){return client[_0x6e70('0x2')](_0x6e70('0x11'),{'options':{'raw':!![],'where':{'role':_0x6e70('0x12')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x6'),_0x6e70('0x13')]},'log':_0x6e70('0x10')});};};exports[_0x6e70('0x14')]=function(_0x4600f9,_0x5b3d07,_0x47f6b2){return client[_0x6e70('0x2')](_0x6e70('0x15'),{'body':{'type':_0x5b3d07,'uniqueid':_0x47f6b2},'options':{'where':{'id':_0x4600f9['id']}},'log':_0x6e70('0x14')});};exports[_0x6e70('0x16')]=function(_0x3b38f3){return client[_0x6e70('0x2')](_0x6e70('0x17'),{'body':{},'options':{'where':{'id':_0x3b38f3['id']}},'log':_0x6e70('0x14')});};exports['getAgent']=function(_0x52737e){return client['Request'](_0x6e70('0x18'),{'options':{'raw':![],'where':{'role':'agent','id':_0x52737e},'attributes':['id','name',_0x6e70('0x5'),_0x6e70('0x6'),'fullname',_0x6e70('0x8'),'lastLoginAt',_0x6e70('0xa'),_0x6e70('0xb'),'voicePause','interface']},'log':_0x6e70('0x19')});};
\ No newline at end of file
+var _0xe706=['internal','savePause','PauseUser','saveUnpause','UnpauseUser','ShowUser','getAgent','../client','getAgents','Request','agent','name','email','accountcode','fullname','online','lastLoginAt','pauseType','lastPauseAt','voicePause','phone','mobile','interface','getTelephones','GetUser','telephone'];(function(_0x501510,_0x61caa9){var _0x1e6ee5=function(_0x32845b){while(--_0x32845b){_0x501510['push'](_0x501510['shift']());}};_0x1e6ee5(++_0x61caa9);}(_0xe706,0xa3));var _0x6e70=function(_0x2f831f,_0x412036){_0x2f831f=_0x2f831f-0x0;var _0x245a02=_0xe706[_0x2f831f];return _0x245a02;};'use strict';var client=require(_0x6e70('0x0'));exports[_0x6e70('0x1')]=function(){return function(){return client[_0x6e70('0x2')]('GetUser',{'options':{'raw':![],'where':{'role':_0x6e70('0x3')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x5'),_0x6e70('0x6'),_0x6e70('0x7'),_0x6e70('0x8'),_0x6e70('0x9'),_0x6e70('0xa'),_0x6e70('0xb'),_0x6e70('0xc'),_0x6e70('0xd'),_0x6e70('0xe'),_0x6e70('0xf')]},'log':_0x6e70('0x1')});};};exports[_0x6e70('0x10')]=function(){return function(){return client[_0x6e70('0x2')](_0x6e70('0x11'),{'options':{'raw':!![],'where':{'role':_0x6e70('0x12')},'attributes':['id',_0x6e70('0x4'),_0x6e70('0x6'),_0x6e70('0x13')]},'log':_0x6e70('0x10')});};};exports[_0x6e70('0x14')]=function(_0x4600f9,_0x5b3d07,_0x47f6b2){return client[_0x6e70('0x2')](_0x6e70('0x15'),{'body':{'type':_0x5b3d07,'uniqueid':_0x47f6b2},'options':{'where':{'id':_0x4600f9['id']}},'log':_0x6e70('0x14')});};exports[_0x6e70('0x16')]=function(_0x3b38f3){return client[_0x6e70('0x2')](_0x6e70('0x17'),{'body':{},'options':{'where':{'id':_0x3b38f3['id']}},'log':_0x6e70('0x14')});};exports['getAgent']=function(_0x52737e){return client['Request'](_0x6e70('0x18'),{'options':{'raw':![],'where':{'role':'agent','id':_0x52737e},'attributes':['id','name',_0x6e70('0x5'),_0x6e70('0x6'),'fullname',_0x6e70('0x8'),'lastLoginAt',_0x6e70('0xa'),_0x6e70('0xb'),'voicePause','interface']},'log':_0x6e70('0x19')});};
\ No newline at end of file
index 9ef5052..1e857ad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7b2e=['Request','CreateVoiceAgentReport','UpdateVoiceAgentReport'];(function(_0x1fb5c2,_0x386a80){var _0x931579=function(_0x2dffb4){while(--_0x2dffb4){_0x1fb5c2['push'](_0x1fb5c2['shift']());}};_0x931579(++_0x386a80);}(_0x7b2e,0xc9));var _0xe7b2=function(_0x1688f6,_0x9ab079){_0x1688f6=_0x1688f6-0x0;var _0x144c86=_0x7b2e[_0x1688f6];return _0x144c86;};'use strict';var client=require('../client');exports['create']=function(_0x501c04){return client[_0xe7b2('0x0')](_0xe7b2('0x1'),{'body':_0x501c04,'log':_0xe7b2('0x1')});};exports['update']=function(_0x3d977c,_0x170068,_0x1afb3a){return client[_0xe7b2('0x0')]('UpdateVoiceAgentReport',{'body':_0x3d977c,'options':{'where':{'uniqueid':_0x170068,'interface':_0x1afb3a,'agentcomplete':!![]}},'log':_0xe7b2('0x2')});};
\ No newline at end of file
+var _0xd22b=['Request','update'];(function(_0x6eb833,_0x2bb5e5){var _0xdfc38c=function(_0x13c4a4){while(--_0x13c4a4){_0x6eb833['push'](_0x6eb833['shift']());}};_0xdfc38c(++_0x2bb5e5);}(_0xd22b,0x1c8));var _0xbd22=function(_0x277421,_0x356987){_0x277421=_0x277421-0x0;var _0x534fc3=_0xd22b[_0x277421];return _0x534fc3;};'use strict';var client=require('../client');exports['create']=function(_0x49c3d2){return client[_0xbd22('0x0')]('CreateVoiceAgentReport',{'body':_0x49c3d2,'log':'CreateVoiceAgentReport'});};exports[_0xbd22('0x1')]=function(_0x341a9d,_0xefd3b9,_0x164389){return client[_0xbd22('0x0')]('UpdateVoiceAgentReport',{'body':_0x341a9d,'options':{'where':{'uniqueid':_0xefd3b9,'interface':_0x164389,'agentcomplete':!![]}},'log':'UpdateVoiceAgentReport'});};
\ No newline at end of file
index aa56e1a..17facb0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1884=['util','../client','Request','context','callerid','DOCUMENTATION','CreateVoiceCallReport','startOf','day','format','YYYY-MM-DD\x20HH:mm:ss','endOf','type','disposition','duration','billableseconds','GetVoiceCallReports','moment'];(function(_0x1f4b53,_0x13772a){var _0x444ca6=function(_0x4a5907){while(--_0x4a5907){_0x1f4b53['push'](_0x1f4b53['shift']());}};_0x444ca6(++_0x13772a);}(_0x1884,0x11f));var _0x4188=function(_0x125286,_0x5c7d57){_0x125286=_0x125286-0x0;var _0x132553=_0x1884[_0x125286];return _0x132553;};'use strict';var moment=require(_0x4188('0x0'));var util=require(_0x4188('0x1'));var _=require('lodash');var client=require(_0x4188('0x2'));exports['create']=function(_0x2a8881){return client[_0x4188('0x3')]('CreateVoiceCallReport',{'body':_['merge'](_0x2a8881,{'source':_0x2a8881['calleridnum'],'destinationcontext':_0x2a8881[_0x4188('0x4')],'callerid':_0x2a8881[_0x4188('0x5')],'amaflags':_0x4188('0x6')}),'log':_0x4188('0x7')});};exports['getVoiceCallReports']=function(){return function(){return client['Request']('GetVoiceCallReport',{'options':{'where':{'type':['outbound'],'createdAt':{'$between':[moment()[_0x4188('0x8')](_0x4188('0x9'))[_0x4188('0xa')](_0x4188('0xb')),moment()[_0x4188('0xc')](_0x4188('0x9'))[_0x4188('0xa')]('YYYY-MM-DD\x20HH:mm:ss')]}},'attributes':[_0x4188('0xd'),_0x4188('0xe'),_0x4188('0xf'),_0x4188('0x10')]},'log':_0x4188('0x11')});};};
\ No newline at end of file
+var _0xd52a=['format','YYYY-MM-DD\x20HH:mm:ss','type','disposition','duration','billableseconds','GetVoiceCallReports','moment','util','lodash','../client','create','Request','merge','calleridnum','context','callerid','DOCUMENTATION','CreateVoiceCallReport','getVoiceCallReports','outbound','day'];(function(_0x5d6600,_0x9a9e9b){var _0x3c85cc=function(_0x4bb7fa){while(--_0x4bb7fa){_0x5d6600['push'](_0x5d6600['shift']());}};_0x3c85cc(++_0x9a9e9b);}(_0xd52a,0x75));var _0xad52=function(_0x16fd8d,_0x5bf705){_0x16fd8d=_0x16fd8d-0x0;var _0x195bc5=_0xd52a[_0x16fd8d];return _0x195bc5;};'use strict';var moment=require(_0xad52('0x0'));var util=require(_0xad52('0x1'));var _=require(_0xad52('0x2'));var client=require(_0xad52('0x3'));exports[_0xad52('0x4')]=function(_0x4fe277){return client[_0xad52('0x5')]('CreateVoiceCallReport',{'body':_[_0xad52('0x6')](_0x4fe277,{'source':_0x4fe277[_0xad52('0x7')],'destinationcontext':_0x4fe277[_0xad52('0x8')],'callerid':_0x4fe277[_0xad52('0x9')],'amaflags':_0xad52('0xa')}),'log':_0xad52('0xb')});};exports[_0xad52('0xc')]=function(){return function(){return client[_0xad52('0x5')]('GetVoiceCallReport',{'options':{'where':{'type':[_0xad52('0xd')],'createdAt':{'$between':[moment()['startOf'](_0xad52('0xe'))[_0xad52('0xf')](_0xad52('0x10')),moment()['endOf'](_0xad52('0xe'))[_0xad52('0xf')](_0xad52('0x10'))]}},'attributes':[_0xad52('0x11'),_0xad52('0x12'),_0xad52('0x13'),_0xad52('0x14')]},'log':_0xad52('0x15')});};};
\ No newline at end of file
index 7ffab5d..72aa7b6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0aff=['create','Request','CreateVoiceDialReport'];(function(_0x136dac,_0x487822){var _0x3a698d=function(_0x5b8d63){while(--_0x5b8d63){_0x136dac['push'](_0x136dac['shift']());}};_0x3a698d(++_0x487822);}(_0x0aff,0xf9));var _0xf0af=function(_0x48e1ec,_0x35f468){_0x48e1ec=_0x48e1ec-0x0;var _0x3b33eb=_0x0aff[_0x48e1ec];return _0x3b33eb;};'use strict';var client=require('../client');exports[_0xf0af('0x0')]=function(_0xb992b8){return client[_0xf0af('0x1')](_0xf0af('0x2'),{'body':_0xb992b8,'log':'CreateVoiceDialReport'});};
\ No newline at end of file
+var _0x4a0a=['CreateVoiceDialReport','../client','Request'];(function(_0x3665e3,_0x519b5f){var _0xf5b729=function(_0x954f2c){while(--_0x954f2c){_0x3665e3['push'](_0x3665e3['shift']());}};_0xf5b729(++_0x519b5f);}(_0x4a0a,0x10c));var _0xa4a0=function(_0x21a9d9,_0x4d5ac8){_0x21a9d9=_0x21a9d9-0x0;var _0x46adce=_0x4a0a[_0x21a9d9];return _0x46adce;};'use strict';var client=require(_0xa4a0('0x0'));exports['create']=function(_0x315b17){return client[_0xa4a0('0x1')]('CreateVoiceDialReport',{'body':_0x315b17,'log':_0xa4a0('0x2')});};
\ No newline at end of file
index 40684f6..01e90a7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf194=['../client','getVoiceExtensions','Request','GetVoiceExtension','recordingFormat'];(function(_0x24a158,_0x51d27c){var _0x4febef=function(_0x354513){while(--_0x354513){_0x24a158['push'](_0x24a158['shift']());}};_0x4febef(++_0x51d27c);}(_0xf194,0x91));var _0x4f19=function(_0x215155,_0x286d9e){_0x215155=_0x215155-0x0;var _0x24d961=_0xf194[_0x215155];return _0x24d961;};'use strict';var client=require(_0x4f19('0x0'));exports[_0x4f19('0x1')]=function(){return function(){return client[_0x4f19('0x2')](_0x4f19('0x3'),{'options':{'raw':!![],'attributes':['id','exten',_0x4f19('0x4')],'where':{'VoiceExtensionId':null}},'log':'getVoiceExtensions'});};};
\ No newline at end of file
+var _0x49e9=['recordingFormat','../client','getVoiceExtensions','GetVoiceExtension','exten'];(function(_0x4b9dc9,_0x14b3a2){var _0x57b302=function(_0x4f99ff){while(--_0x4f99ff){_0x4b9dc9['push'](_0x4b9dc9['shift']());}};_0x57b302(++_0x14b3a2);}(_0x49e9,0x10f));var _0x949e=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0x49e9[_0x20a584];return _0x4b41a8;};'use strict';var client=require(_0x949e('0x0'));exports[_0x949e('0x1')]=function(){return function(){return client['Request'](_0x949e('0x2'),{'options':{'raw':!![],'attributes':['id',_0x949e('0x3'),_0x949e('0x4')],'where':{'VoiceExtensionId':null}},'log':'getVoiceExtensions'});};};
\ No newline at end of file
index 29a773d..a5b8357 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1ce7=['mandatoryDispositionPause','TrunkBackup','Interval','Intervals','interval','../client','getVoiceQueues','name','acw','acwTimeout','monitor_format','type','dialActive','dialMethod','dialPowerLevel','dialPredictiveOptimizationPercentage','dialPredictiveInterval','dialOriginateCallerIdName','dialOriginateTimeout','dialCongestionMaxRetry','dialCongestionRetryFrequency','dialBusyMaxRetry','dialBusyRetryFrequency','dialNoAnswerRetryFrequency','dialGlobalInterval','dialCheckDuplicateType','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','timeout','dialRecallMeTimeout','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialNoSuchNumberRetryFrequency','dialDropMaxRetry','dialAbandonedMaxRetry','dialAbandonedRetryFrequency','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','dialPreviewAutoRecallMe','callAdditionalPhoneAfterMin','Trunk','callerid','active','Pause'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1ce7,0x161));var _0x71ce=function(_0x64aff8,_0x106082){_0x64aff8=_0x64aff8-0x0;var _0x5488a3=_0x1ce7[_0x64aff8];return _0x5488a3;};'use strict';var client=require(_0x71ce('0x0'));exports[_0x71ce('0x1')]=function(){return function(){return client['Request']('GetVoiceQueue',{'options':{'raw':![],'attributes':['id',_0x71ce('0x2'),_0x71ce('0x3'),_0x71ce('0x4'),'autopause',_0x71ce('0x5'),_0x71ce('0x6'),_0x71ce('0x7'),_0x71ce('0x8'),'dialLimitChannel','dialLimitQueue',_0x71ce('0x9'),'dialPredictiveOptimization',_0x71ce('0xa'),_0x71ce('0xb'),_0x71ce('0xc'),'dialOriginateCallerIdNumber',_0x71ce('0xd'),'dialQueueOptions','dialQueueTimeout','dialQueueProject',_0x71ce('0xe'),_0x71ce('0xf'),_0x71ce('0x10'),_0x71ce('0x11'),'dialNoAnswerMaxRetry',_0x71ce('0x12'),'dialGlobalMaxRetry','dialTimezone',_0x71ce('0x13'),'dialPrefix',_0x71ce('0x14'),'dialAMDActive',_0x71ce('0x15'),_0x71ce('0x16'),_0x71ce('0x17'),'dialAMDTotalAnalysisTime',_0x71ce('0x18'),_0x71ce('0x19'),_0x71ce('0x1a'),_0x71ce('0x1b'),'dialAMDMaximumWordLength',_0x71ce('0x1c'),_0x71ce('0x1d'),'dialRecallInQueue',_0x71ce('0x1e'),_0x71ce('0x1f'),_0x71ce('0x20'),_0x71ce('0x21'),_0x71ce('0x5'),_0x71ce('0x22'),_0x71ce('0x23'),_0x71ce('0x24'),'dialNoSuchNumberMaxRetry',_0x71ce('0x25'),_0x71ce('0x26'),'dialDropRetryFrequency',_0x71ce('0x27'),_0x71ce('0x28'),_0x71ce('0x29'),_0x71ce('0x2a'),_0x71ce('0x2b'),_0x71ce('0x2c'),'mandatoryDisposition',_0x71ce('0x2d'),_0x71ce('0x2e'),_0x71ce('0x2f'),'dialPreviewRecallmeReminder',_0x71ce('0x30')],'include':[{'model':_0x71ce('0x31'),'as':_0x71ce('0x31'),'attributes':['id',_0x71ce('0x2'),_0x71ce('0x32'),_0x71ce('0x33')]},{'model':_0x71ce('0x34'),'as':_0x71ce('0x35'),'attributes':['id',_0x71ce('0x2')]},{'model':_0x71ce('0x31'),'as':_0x71ce('0x36'),'attributes':['id','name',_0x71ce('0x32'),_0x71ce('0x33')]},{'model':_0x71ce('0x37'),'as':_0x71ce('0x37'),'attributes':['id',_0x71ce('0x2')],'include':[{'model':_0x71ce('0x37'),'as':_0x71ce('0x38'),'attributes':['id',_0x71ce('0x2'),_0x71ce('0x39')]}]}]},'log':_0x71ce('0x1')});};};
\ No newline at end of file
+var _0xd0e8=['acwTimeout','autopause','type','dialActive','dialMethod','dialLimitQueue','dialPowerLevel','dialPredictiveOptimization','dialOriginateCallerIdName','dialOriginateTimeout','dialQueueOptions','dialQueueProject','dialCongestionRetryFrequency','dialBusyMaxRetry','dialNoAnswerMaxRetry','dialNoAnswerRetryFrequency','dialGlobalMaxRetry','dialGlobalInterval','dialPrefix','dialCheckDuplicateType','dialAMDInitialSilence','dialAMDGreeting','dialAMDAfterGreetingSilence','dialAMDTotalAnalysisTime','dialAMDMinWordLength','dialAMDBetweenWordsSilence','dialAMDMaximumNumberOfWords','dialAMDSilenceThreshold','dialAMDMaximumWordLength','timeout','dialRecallMeTimeout','dialRecallInQueue','dialOrderByScheduledAt','dialAgiAfterHangupAgent','dialAgiAfterHangupClient','dialQueueProject2','strategy','dialRandomLastDigitCallerIdNumber','dialCutDigit','dialDropMaxRetry','dialAbandonedMaxRetry','dialMachineMaxRetry','dialMachineRetryFrequency','dialAgentRejectMaxRetry','dialAgentRejectRetryFrequency','mandatoryDisposition','dialPredictiveIntervalMaxThreshold','dialPredictiveIntervalMinThreshold','dialPreviewAutoRecallMe','dialPreviewRecallmeReminder','callAdditionalPhoneAfterMin','Trunk','callerid','active','Pause','mandatoryDispositionPause','TrunkBackup','Interval','Intervals','interval','../client','getVoiceQueues','name'];(function(_0x839ba5,_0x1c4d54){var _0x5babda=function(_0x271a69){while(--_0x271a69){_0x839ba5['push'](_0x839ba5['shift']());}};_0x5babda(++_0x1c4d54);}(_0xd0e8,0xf9));var _0x8d0e=function(_0x3a9691,_0x1beba6){_0x3a9691=_0x3a9691-0x0;var _0x390803=_0xd0e8[_0x3a9691];return _0x390803;};'use strict';var client=require(_0x8d0e('0x0'));exports[_0x8d0e('0x1')]=function(){return function(){return client['Request']('GetVoiceQueue',{'options':{'raw':![],'attributes':['id',_0x8d0e('0x2'),'acw',_0x8d0e('0x3'),_0x8d0e('0x4'),'monitor_format',_0x8d0e('0x5'),_0x8d0e('0x6'),_0x8d0e('0x7'),'dialLimitChannel',_0x8d0e('0x8'),_0x8d0e('0x9'),_0x8d0e('0xa'),'dialPredictiveOptimizationPercentage','dialPredictiveInterval',_0x8d0e('0xb'),'dialOriginateCallerIdNumber',_0x8d0e('0xc'),_0x8d0e('0xd'),'dialQueueTimeout',_0x8d0e('0xe'),'dialCongestionMaxRetry',_0x8d0e('0xf'),_0x8d0e('0x10'),'dialBusyRetryFrequency',_0x8d0e('0x11'),_0x8d0e('0x12'),_0x8d0e('0x13'),'dialTimezone',_0x8d0e('0x14'),_0x8d0e('0x15'),_0x8d0e('0x16'),'dialAMDActive',_0x8d0e('0x17'),_0x8d0e('0x18'),_0x8d0e('0x19'),_0x8d0e('0x1a'),_0x8d0e('0x1b'),_0x8d0e('0x1c'),_0x8d0e('0x1d'),_0x8d0e('0x1e'),_0x8d0e('0x1f'),_0x8d0e('0x20'),_0x8d0e('0x21'),_0x8d0e('0x22'),_0x8d0e('0x23'),_0x8d0e('0x24'),_0x8d0e('0x25'),_0x8d0e('0x26'),'monitor_format',_0x8d0e('0x27'),_0x8d0e('0x28'),_0x8d0e('0x29'),'dialNoSuchNumberMaxRetry','dialNoSuchNumberRetryFrequency',_0x8d0e('0x2a'),'dialDropRetryFrequency',_0x8d0e('0x2b'),'dialAbandonedRetryFrequency',_0x8d0e('0x2c'),_0x8d0e('0x2d'),_0x8d0e('0x2e'),_0x8d0e('0x2f'),_0x8d0e('0x30'),_0x8d0e('0x31'),_0x8d0e('0x32'),_0x8d0e('0x33'),_0x8d0e('0x34'),_0x8d0e('0x35')],'include':[{'model':'Trunk','as':_0x8d0e('0x36'),'attributes':['id',_0x8d0e('0x2'),_0x8d0e('0x37'),_0x8d0e('0x38')]},{'model':_0x8d0e('0x39'),'as':_0x8d0e('0x3a'),'attributes':['id',_0x8d0e('0x2')]},{'model':_0x8d0e('0x36'),'as':_0x8d0e('0x3b'),'attributes':['id',_0x8d0e('0x2'),'callerid','active']},{'model':_0x8d0e('0x3c'),'as':'Interval','attributes':['id',_0x8d0e('0x2')],'include':[{'model':_0x8d0e('0x3c'),'as':_0x8d0e('0x3d'),'attributes':['id',_0x8d0e('0x2'),_0x8d0e('0x3e')]}]}]},'log':_0x8d0e('0x1')});};};
\ No newline at end of file
index 50f6f40..9794d03 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(_0x439f53,_0x5711e6){var _0x5c1863=function(_0x32f39b){while(--_0x32f39b){_0x439f53['push'](_0x439f53['shift']());}};_0x5c1863(++_0x5711e6);}(_0xa9e0,0x123));var _0x0a9e=function(_0x40ac5e,_0x2de228){_0x40ac5e=_0x40ac5e-0x0;var _0x2839d6=_0xa9e0[_0x40ac5e];return _0x2839d6;};'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(_0x28a6dd,_0x14a3a2){var _0x2ca40a=function(_0x5098c0){while(--_0x5098c0){_0x28a6dd['push'](_0x28a6dd['shift']());}};_0x2ca40a(++_0x14a3a2);}(_0xa9e0,0x123));var _0x0a9e=function(_0x481bf7,_0x437f69){_0x481bf7=_0x481bf7-0x0;var _0x461787=_0xa9e0[_0x481bf7];return _0x461787;};'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 3000e38..80bcf54 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbdae=['getVoiceQueueRtPauses','GetVoiceQueueRtPauses'];(function(_0x1cfa0d,_0x4391f2){var _0xe33279=function(_0x3ce7c1){while(--_0x3ce7c1){_0x1cfa0d['push'](_0x1cfa0d['shift']());}};_0xe33279(++_0x4391f2);}(_0xbdae,0x14c));var _0xebda=function(_0xe79f1b,_0x40cbb3){_0xe79f1b=_0xe79f1b-0x0;var _0x3a735b=_0xbdae[_0xe79f1b];return _0x3a735b;};'use strict';var client=require('../client');exports[_0xebda('0x0')]=function(_0x185dfa){return function(){return client['Request'](_0xebda('0x1'),{'options':{'where':{'VoiceQueueId':_0x185dfa,'paused':!![]},'raw':!![]},'log':_0xebda('0x0')});};};
\ No newline at end of file
+var _0x957d=['GetVoiceQueueRtPauses','getVoiceQueueRtPauses'];(function(_0x194808,_0x596785){var _0x2c1b61=function(_0x441f69){while(--_0x441f69){_0x194808['push'](_0x194808['shift']());}};_0x2c1b61(++_0x596785);}(_0x957d,0xe9));var _0xd957=function(_0x1422b2,_0xb90f6f){_0x1422b2=_0x1422b2-0x0;var _0x559ecf=_0x957d[_0x1422b2];return _0x559ecf;};'use strict';var client=require('../client');exports[_0xd957('0x0')]=function(_0x56376d){return function(){return client['Request'](_0xd957('0x1'),{'options':{'where':{'VoiceQueueId':_0x56376d,'paused':!![]},'raw':!![]},'log':_0xd957('0x0')});};};
\ No newline at end of file
index 338284e..4c8240b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['create','Request','CreateVoiceRecording','monitorFilename','lodash','../client'];(function(_0x1f34df,_0x5a54c8){var _0x5c12c4=function(_0x30d4df){while(--_0x30d4df){_0x1f34df['push'](_0x1f34df['shift']());}};_0x5c12c4(++_0x5a54c8);}(_0x7a54,0x106));var _0x47a5=function(_0x1e926a,_0x29c26a){_0x1e926a=_0x1e926a-0x0;var _0x18e28f=_0x7a54[_0x1e926a];return _0x18e28f;};'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
+var _0x9957=['CreateVoiceRecording','merge','monitorFilename','lodash','../client','create'];(function(_0x14133d,_0x4deba9){var _0x4e88e8=function(_0x48fdc5){while(--_0x48fdc5){_0x14133d['push'](_0x14133d['shift']());}};_0x4e88e8(++_0x4deba9);}(_0x9957,0x93));var _0x7995=function(_0x3947c9,_0x4d6c97){_0x3947c9=_0x3947c9-0x0;var _0x2e7871=_0x9957[_0x3947c9];return _0x2e7871;};'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
index b18a70b..bfe4dd9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6890=['blindTransfer','Request','CreateVoiceTransferReport','result','transfererchannel','transfererconnectedlinenum','transfererconnectedlinename','transfereraccountcode','transferercontext','transfererexten','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode','transfereecontext','transfereeexten','transfereelinkedid','isexternal','extension','blind','origtransfererchannel','origtransferercalleridname','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransfereraccountcode','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetcalleridname','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','origtransferercontext','origtransfererexten','attended','../client','transfers'];(function(_0x22c08b,_0x5ef5f0){var _0x439d18=function(_0x1c757f){while(--_0x1c757f){_0x22c08b['push'](_0x22c08b['shift']());}};_0x439d18(++_0x5ef5f0);}(_0x6890,0xe8));var _0x0689=function(_0x3382f0,_0x195362){_0x3382f0=_0x3382f0-0x0;var _0x4ebe5a=_0x6890[_0x3382f0];return _0x4ebe5a;};'use strict';var client=require(_0x0689('0x0'));exports[_0x0689('0x1')]={};exports[_0x0689('0x2')]=function(_0x2c0d8b){return client[_0x0689('0x3')](_0x0689('0x4'),{'body':{'result':_0x2c0d8b[_0x0689('0x5')],'transfererchannel':_0x2c0d8b[_0x0689('0x6')],'transferercalleridnum':_0x2c0d8b['transferercalleridnum'],'transferercalleridname':_0x2c0d8b['transferercalleridname'],'transfererconnectedlinenum':_0x2c0d8b[_0x0689('0x7')],'transfererconnectedlinename':_0x2c0d8b[_0x0689('0x8')],'transfereraccountcode':_0x2c0d8b[_0x0689('0x9')],'transferercontext':_0x2c0d8b[_0x0689('0xa')],'transfererexten':_0x2c0d8b[_0x0689('0xb')],'transfererlinkedid':_0x2c0d8b['transfererlinkedid'],'transfereechannel':_0x2c0d8b['transfereechannel'],'transfereecalleridnum':_0x2c0d8b['transfereecalleridnum'],'transfereecalleridname':_0x2c0d8b[_0x0689('0xc')],'transfereeconnectedlinenum':_0x2c0d8b[_0x0689('0xd')],'transfereeconnectedlinename':_0x2c0d8b[_0x0689('0xe')],'transfereeaccountcode':_0x2c0d8b[_0x0689('0xf')],'transfereecontext':_0x2c0d8b[_0x0689('0x10')],'transfereeexten':_0x2c0d8b[_0x0689('0x11')],'transfereelinkedid':_0x2c0d8b[_0x0689('0x12')],'isexternal':_0x2c0d8b[_0x0689('0x13')],'context':_0x2c0d8b['context'],'extension':_0x2c0d8b[_0x0689('0x14')],'type':_0x0689('0x15')},'log':_0x0689('0x4')});};exports['attendedTransfer']=function(_0x399d9e){return client[_0x0689('0x3')]('CreateVoiceTransferReport',{'body':{'result':_0x399d9e[_0x0689('0x5')],'transfererchannel':_0x399d9e[_0x0689('0x16')],'transferercalleridnum':_0x399d9e['origtransferercalleridnum'],'transferercalleridname':_0x399d9e[_0x0689('0x17')],'transfererconnectedlinenum':_0x399d9e[_0x0689('0x18')],'transfererconnectedlinename':_0x399d9e[_0x0689('0x19')],'transfereraccountcode':_0x399d9e[_0x0689('0x1a')],'transferercontext':_0x399d9e['secondtransferercontext'],'transfererexten':_0x399d9e['secondtransfererexten'],'transfererlinkedid':_0x399d9e[_0x0689('0x1b')],'transfereechannel':_0x399d9e[_0x0689('0x1c')],'transfereecalleridnum':_0x399d9e[_0x0689('0x1d')],'transfereecalleridname':_0x399d9e[_0x0689('0x1e')],'transfereeconnectedlinenum':_0x399d9e['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x399d9e[_0x0689('0x1f')],'transfereeaccountcode':_0x399d9e[_0x0689('0x20')],'transfereecontext':_0x399d9e[_0x0689('0x21')],'transfereeexten':_0x399d9e[_0x0689('0x22')],'transfereelinkedid':_0x399d9e[_0x0689('0x23')],'isexternal':_0x399d9e['isexternal'],'context':_0x399d9e[_0x0689('0x24')],'extension':_0x399d9e[_0x0689('0x25')],'type':_0x0689('0x26')},'log':_0x0689('0x4')});};
\ No newline at end of file
+var _0x6225=['transfereeexten','isexternal','context','extension','blind','attendedTransfer','origtransfererchannel','origtransferercalleridnum','origtransferercalleridname','secondtransfererconnectedlinename','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','transfertargetchannel','transfertargetcalleridnum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','origtransferercontext','origtransfererexten','attended','../client','transfers','CreateVoiceTransferReport','result','transfererchannel','transferercalleridnum','transfererconnectedlinenum','transfererconnectedlinename','transfererexten','transfererlinkedid','transfereechannel','transfereecalleridnum','transfereecalleridname','transfereeconnectedlinenum','transfereeconnectedlinename','transfereeaccountcode'];(function(_0x1895b7,_0x21fbc7){var _0x1aecdc=function(_0x44682a){while(--_0x44682a){_0x1895b7['push'](_0x1895b7['shift']());}};_0x1aecdc(++_0x21fbc7);}(_0x6225,0x14f));var _0x5622=function(_0x3e4a0c,_0x49faa6){_0x3e4a0c=_0x3e4a0c-0x0;var _0x5dbebf=_0x6225[_0x3e4a0c];return _0x5dbebf;};'use strict';var client=require(_0x5622('0x0'));exports[_0x5622('0x1')]={};exports['blindTransfer']=function(_0xa9d9e){return client['Request'](_0x5622('0x2'),{'body':{'result':_0xa9d9e[_0x5622('0x3')],'transfererchannel':_0xa9d9e[_0x5622('0x4')],'transferercalleridnum':_0xa9d9e[_0x5622('0x5')],'transferercalleridname':_0xa9d9e['transferercalleridname'],'transfererconnectedlinenum':_0xa9d9e[_0x5622('0x6')],'transfererconnectedlinename':_0xa9d9e[_0x5622('0x7')],'transfereraccountcode':_0xa9d9e['transfereraccountcode'],'transferercontext':_0xa9d9e['transferercontext'],'transfererexten':_0xa9d9e[_0x5622('0x8')],'transfererlinkedid':_0xa9d9e[_0x5622('0x9')],'transfereechannel':_0xa9d9e[_0x5622('0xa')],'transfereecalleridnum':_0xa9d9e[_0x5622('0xb')],'transfereecalleridname':_0xa9d9e[_0x5622('0xc')],'transfereeconnectedlinenum':_0xa9d9e[_0x5622('0xd')],'transfereeconnectedlinename':_0xa9d9e[_0x5622('0xe')],'transfereeaccountcode':_0xa9d9e[_0x5622('0xf')],'transfereecontext':_0xa9d9e['transfereecontext'],'transfereeexten':_0xa9d9e[_0x5622('0x10')],'transfereelinkedid':_0xa9d9e['transfereelinkedid'],'isexternal':_0xa9d9e[_0x5622('0x11')],'context':_0xa9d9e[_0x5622('0x12')],'extension':_0xa9d9e[_0x5622('0x13')],'type':_0x5622('0x14')},'log':_0x5622('0x2')});};exports[_0x5622('0x15')]=function(_0x1a0f31){return client['Request'](_0x5622('0x2'),{'body':{'result':_0x1a0f31['result'],'transfererchannel':_0x1a0f31[_0x5622('0x16')],'transferercalleridnum':_0x1a0f31[_0x5622('0x17')],'transferercalleridname':_0x1a0f31[_0x5622('0x18')],'transfererconnectedlinenum':_0x1a0f31['secondtransfererconnectedlinenum'],'transfererconnectedlinename':_0x1a0f31[_0x5622('0x19')],'transfereraccountcode':_0x1a0f31[_0x5622('0x1a')],'transferercontext':_0x1a0f31[_0x5622('0x1b')],'transfererexten':_0x1a0f31[_0x5622('0x1c')],'transfererlinkedid':_0x1a0f31[_0x5622('0x1d')],'transfereechannel':_0x1a0f31[_0x5622('0x1e')],'transfereecalleridnum':_0x1a0f31[_0x5622('0x1f')],'transfereecalleridname':_0x1a0f31['transfertargetcalleridname'],'transfereeconnectedlinenum':_0x1a0f31['transfertargetconnectedlinenum'],'transfereeconnectedlinename':_0x1a0f31[_0x5622('0x20')],'transfereeaccountcode':_0x1a0f31[_0x5622('0x21')],'transfereecontext':_0x1a0f31[_0x5622('0x22')],'transfereeexten':_0x1a0f31[_0x5622('0x23')],'transfereelinkedid':_0x1a0f31['transfertargetlinkedid'],'isexternal':_0x1a0f31[_0x5622('0x11')],'context':_0x1a0f31[_0x5622('0x24')],'extension':_0x1a0f31[_0x5622('0x25')],'type':_0x5622('0x26')},'log':_0x5622('0x2')});};
\ No newline at end of file
index 9d9bf4a..1746944 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf06c=['originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','active','callerid','Interval','push','find','omit','undefined','values','channels','length','voicechannel','map','uniqueid','channel','format','wav','monitors','/var/spool/asterisk/monitor/','toLowerCase','YYYY-MM-DD\x20HH:mm:ss','mixmonitorid','rec','MixMonitor\x20Success','Channel\x20doesn\x27t\x20exist','resolve','StopMixMonitor','destinationchannel','%s.%s','filename','StopMixMonitor\x20Success','queueChannels','voicequeuechannel','Hangup','voicequeuechannelredirect','Redirect','context','trunks','campaigns','run','event','Event\x20name\x20mandatory','emit','custom:','faxAccounts','send','checkAfterSend','http','listen','127.0.0.1','log','RPC\x20listening\x20on\x20port:','lodash','util','jayson/promise','validate','bluebird','../../../config/environment','../properties','../ami','%s/%s','SIP','name','timers','agents','updateStatusRealtime','pause','QueuePause','isConnected','error','asterisk','username','ami\x20disconnected','keys','module','action','Action','then','catch','message','join','command','Command','content','voiceQueues','hasOwnProperty','answered','available','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','unmanaged','waiting','loggedInDb','type','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayACS','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoAnswerCallsDay','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundReCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalDroppedCallsTimeout','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls'];(function(_0x4ca4e5,_0xc07818){var _0x21b963=function(_0x332d72){while(--_0x332d72){_0x4ca4e5['push'](_0x4ca4e5['shift']());}};_0x21b963(++_0xc07818);}(_0xf06c,0xc7));var _0xcf06=function(_0x5dd939,_0x1c3153){_0x5dd939=_0x5dd939-0x0;var _0x28a96a=_0xf06c[_0x5dd939];return _0x28a96a;};'use strict';var _=require(_0xcf06('0x0'));var util=require(_0xcf06('0x1'));var jayson=require(_0xcf06('0x2'));var schema=require(_0xcf06('0x3'));var BPromise=require(_0xcf06('0x4'));var moment=require('moment');var config=require(_0xcf06('0x5'));var properties=require(_0xcf06('0x6'));var ami=require(_0xcf06('0x7'));exports['listen']=function(_0x171d05,_0x33e492,_0x3de2dc){return new BPromise(function(_0x4e6799,_0x22ac40){var _0x5d1aa0={'QueuePause':function(_0x2723ad){return new Promise(function(_0x48ed0c,_0x4dd606){var _0x4b9c65=util['format'](_0xcf06('0x8'),_0xcf06('0x9'),_0x2723ad[_0xcf06('0xa')]);if(_0x171d05['timers']&&_0x171d05['timers'][_0x4b9c65]&&_0x171d05[_0xcf06('0xb')][_0x4b9c65]['timer']){_0x171d05[_0xcf06('0xb')][_0x4b9c65]['updateAcw']();}if(_0x171d05[_0xcf06('0xc')][_0x4b9c65]){_0x171d05['agents'][_0x4b9c65][_0xcf06('0xd')]({'statePause':_0x2723ad[_0xcf06('0xe')]?!![]:![]});}_0x48ed0c({'code':0xc8,'message':_0xcf06('0xf')});});},'Reload':function(_0x3dc669){var _0x4e7a57=this;return new Promise(function(_0x4e62aa,_0x46ab38){if(ami[_0xcf06('0x10')]()==![]){return _0x46ab38(_0x4e7a57[_0xcf06('0x11')](0x1f4,[config[_0xcf06('0x12')]['ip'],config['asterisk'][_0xcf06('0x13')],_0xcf06('0x14')]['join']('\x20')));}_0x3dc669=_['pick'](_0x3dc669,_[_0xcf06('0x15')](properties[_0xcf06('0x16')]));_0x3dc669[_0xcf06('0x17')]='Reload';return ami[_0xcf06('0x18')](_0x3dc669)[_0xcf06('0x19')](function(_0x323928){_0x4e62aa({'code':0xc8,'message':_0x323928['message']});})[_0xcf06('0x1a')](function(_0x2a5ef5){_0x46ab38(_0x4e7a57[_0xcf06('0x11')](0x1f5,_0x2a5ef5[_0xcf06('0x1b')]));});});},'Command':function(_0x9117a9){var _0x48886d=this;return new Promise(function(_0x471b39,_0x1be1e3){if(ami[_0xcf06('0x10')]()==![]){return _0x1be1e3(_0x48886d['error'](0x1f4,[config[_0xcf06('0x12')]['ip'],config[_0xcf06('0x12')]['username'],_0xcf06('0x14')][_0xcf06('0x1c')]('\x20')));}_0x9117a9=_['pick'](_0x9117a9,_0xcf06('0x1d'));_0x9117a9[_0xcf06('0x17')]=_0xcf06('0x1e');return ami[_0xcf06('0x18')](_0x9117a9)[_0xcf06('0x19')](function(_0x13fa04){_0x471b39({'code':0xc8,'message':_0x13fa04[_0xcf06('0x1f')]});})[_0xcf06('0x1a')](function(_0xb039dd){_0x1be1e3(_0x48886d[_0xcf06('0x11')](0x1f5,_0xb039dd[_0xcf06('0x1b')]));});});},'VoiceQueues':function(_0x3c212f){return new Promise(function(_0x5ac08b,_0x58840a){var _0x87440=[];for(var _0x27beb7 in _0x171d05[_0xcf06('0x20')]){if(_0x171d05[_0xcf06('0x20')][_0xcf06('0x21')](_0x27beb7)){var _0x6c3dcf=_0x171d05['voiceQueues'][_0x27beb7];var _0x4da27a={'id':_0x6c3dcf['id'],'name':_0x6c3dcf[_0xcf06('0xa')],'strategy':_0x6c3dcf['strategy'],'answered':_0x6c3dcf[_0xcf06('0x22')],'available':_0x6c3dcf[_0xcf06('0x23')],'loggedIn':_0x6c3dcf[_0xcf06('0x24')],'pTalking':_0x6c3dcf[_0xcf06('0x25')],'sumBillable':_0x6c3dcf[_0xcf06('0x26')],'sumDuration':_0x6c3dcf[_0xcf06('0x27')],'sumHoldTime':_0x6c3dcf[_0xcf06('0x28')]||0x0,'talking':_0x6c3dcf[_0xcf06('0x29')],'total':_0x6c3dcf[_0xcf06('0x2a')],'type':_0x6c3dcf['type'],'unmanaged':_0x6c3dcf[_0xcf06('0x2b')],'abandoned':_0x6c3dcf['abandoned'],'waiting':_0x6c3dcf[_0xcf06('0x2c')],'loggedInDb':_0x6c3dcf[_0xcf06('0x2d')]};if(_0x6c3dcf[_0xcf06('0x2e')]===_0xcf06('0x2f')){_0x4da27a[_0xcf06('0x30')]=_0x6c3dcf[_0xcf06('0x30')];_0x4da27a['dialMethod']=_0x6c3dcf[_0xcf06('0x31')];_0x4da27a[_0xcf06('0x32')]=_0x6c3dcf[_0xcf06('0x32')];_0x4da27a[_0xcf06('0x33')]=_0x6c3dcf[_0xcf06('0x33')];_0x4da27a[_0xcf06('0x34')]=_0x6c3dcf[_0xcf06('0x34')];_0x4da27a[_0xcf06('0x35')]=_0x6c3dcf[_0xcf06('0x35')];_0x4da27a[_0xcf06('0x36')]=_0x6c3dcf['temp'];_0x4da27a[_0xcf06('0x37')]=_0x6c3dcf[_0xcf06('0x37')];_0x4da27a[_0xcf06('0x38')]=_0x6c3dcf[_0xcf06('0x38')];_0x4da27a[_0xcf06('0x39')]=_0x6c3dcf[_0xcf06('0x39')];_0x4da27a[_0xcf06('0x3a')]=_0x6c3dcf[_0xcf06('0x3a')];_0x4da27a[_0xcf06('0x3b')]=_0x6c3dcf[_0xcf06('0x3b')];_0x4da27a[_0xcf06('0x3c')]=_0x6c3dcf['outboundDropCallsDayACS'];_0x4da27a[_0xcf06('0x3d')]=_0x6c3dcf[_0xcf06('0x3d')];_0x4da27a['outboundDropCallsDayTimeout']=_0x6c3dcf[_0xcf06('0x3e')];_0x4da27a['outboundNoAnswerCallsDay']=_0x6c3dcf[_0xcf06('0x3f')];_0x4da27a[_0xcf06('0x40')]=_0x6c3dcf[_0xcf06('0x40')];_0x4da27a[_0xcf06('0x41')]=_0x6c3dcf['outboundOriginateFailureCallsDay'];_0x4da27a[_0xcf06('0x42')]=_0x6c3dcf[_0xcf06('0x42')];_0x4da27a[_0xcf06('0x43')]=_0x6c3dcf[_0xcf06('0x43')];_0x4da27a[_0xcf06('0x44')]=_0x6c3dcf['outboundUnknownCallsDay'];_0x4da27a[_0xcf06('0x45')]=_0x6c3dcf[_0xcf06('0x45')];_0x4da27a[_0xcf06('0x46')]=_0x6c3dcf[_0xcf06('0x46')];_0x4da27a[_0xcf06('0x47')]=_0x6c3dcf[_0xcf06('0x47')];_0x4da27a[_0xcf06('0x48')]=_0x6c3dcf[_0xcf06('0x48')];_0x4da27a[_0xcf06('0x49')]=_0x6c3dcf[_0xcf06('0x49')];_0x4da27a[_0xcf06('0x4a')]=_0x6c3dcf[_0xcf06('0x4a')];_0x4da27a[_0xcf06('0x4b')]=_0x6c3dcf[_0xcf06('0x4b')];_0x4da27a[_0xcf06('0x4c')]=_0x6c3dcf[_0xcf06('0x4c')];_0x4da27a[_0xcf06('0x4d')]=_0x6c3dcf['predictiveIntervalMultiplicativeFactor'];_0x4da27a[_0xcf06('0x4e')]=_0x6c3dcf['predictiveIntervalPauses'];_0x4da27a[_0xcf06('0x4f')]=_0x6c3dcf[_0xcf06('0x4f')];_0x4da27a[_0xcf06('0x50')]=_0x6c3dcf['predictiveIntervalTotalCalls'];_0x4da27a[_0xcf06('0x1b')]=_0x6c3dcf[_0xcf06('0x1b')];_0x4da27a[_0xcf06('0x51')]=_0x6c3dcf[_0xcf06('0x51')];_0x4da27a[_0xcf06('0x52')]=_0x6c3dcf['erlangCalls'];_0x4da27a['erlangCallToSecond']=_0x6c3dcf[_0xcf06('0x53')];_0x4da27a['erlangAbandonmentRate']=_0x6c3dcf[_0xcf06('0x54')];_0x4da27a[_0xcf06('0x55')]=_0x6c3dcf[_0xcf06('0x55')];_0x4da27a[_0xcf06('0x56')]=_0x6c3dcf['startPredictive'];_0x4da27a[_0xcf06('0x57')]=_0x6c3dcf[_0xcf06('0x57')];}if(_0x6c3dcf[_0xcf06('0x58')]){_0x4da27a['Trunk']={'id':_0x6c3dcf[_0xcf06('0x58')]['id'],'name':_0x6c3dcf['Trunk'][_0xcf06('0xa')],'active':_0x6c3dcf['Trunk'][_0xcf06('0x59')],'callerid':_0x6c3dcf['Trunk'][_0xcf06('0x5a')]};}if(_0x6c3dcf[_0xcf06('0x5b')]){_0x4da27a[_0xcf06('0x5b')]={'id':_0x6c3dcf['Interval']['id'],'name':_0x6c3dcf[_0xcf06('0x5b')][_0xcf06('0xa')]};}_0x87440[_0xcf06('0x5c')](_0x4da27a);}}_0x5ac08b({'count':_0x87440['length'],'rows':_0x87440});});},'UpdateVoiceQueue':function(_0x150555){return new Promise(function(_0x5c6e94,_0x290a52){var _0x3d4594=_[_0xcf06('0x5d')](_0x171d05[_0xcf06('0x20')],{'id':parseInt(_0x150555['id'])});var _0x599ff5=_[_0xcf06('0x5e')](_0x150555,['id']);if(_0x3d4594){for(var _0x2dc5d8 in _0x599ff5){if(typeof _0x599ff5[_0x2dc5d8]!==_0xcf06('0x5f')&&typeof _0x3d4594[_0x2dc5d8]!=='undefined'){_0x3d4594[_0x2dc5d8]=_0x599ff5[_0x2dc5d8];}}_0x5c6e94(_0x3d4594);}else{_0x290a52();}});},'VoiceChannels':function(_0x151b5a){return new Promise(function(_0x3724f8,_0x4a51d9){var _0xc392e=_[_0xcf06('0x60')](_0x171d05[_0xcf06('0x61')]);_0x3724f8({'count':_0xc392e[_0xcf06('0x62')],'rows':_0xc392e});});},'VoiceChannelMixMonitor':function(_0x3b63cf){var _0x4e49ca=this;return new Promise(function(_0xdb7e9a,_0x5563d3){if(ami[_0xcf06('0x10')]()==![]){return _0x5563d3(_0x4e49ca[_0xcf06('0x11')](0x1f4,[config[_0xcf06('0x12')]['ip'],config['asterisk'][_0xcf06('0x13')],'ami\x20disconnected'][_0xcf06('0x1c')]('\x20')));}var _0x41d80a=schema(properties[_0xcf06('0x63')])[_0xcf06('0x3')](_0x3b63cf);if(_0x41d80a[_0xcf06('0x62')]>0x0){return _0x5563d3(_0x4e49ca['error'](0x1f4,_[_0xcf06('0x64')](_0x41d80a,'message')[_0xcf06('0x1c')](',\x20')));}var _0xa79649=_[_0xcf06('0x5d')](_0x171d05[_0xcf06('0x61')],{'uniqueid':_0x3b63cf[_0xcf06('0x65')]});if(_0xa79649&&_0xa79649[_0xcf06('0x66')]){var _0x4825cf=util[_0xcf06('0x67')]('%s.%s',_0x3b63cf['filename']||_0x3b63cf['uniqueid'],_0x3b63cf[_0xcf06('0x67')]||_0xcf06('0x68'));return ami[_0xcf06('0x18')]({'action':'MixMonitor','channel':_0xa79649['channel'],'file':_0x4825cf,'options':'ai(mixmonitorid)'})['then'](function(_0x58fca5){var _0x3db6a4=_[_0xcf06('0x5d')](_0xa79649[_0xcf06('0x69')],{'filename':_0xcf06('0x6a')+_0x4825cf[_0xcf06('0x6b')]()});if(_['isNil'](_0x3db6a4)){_0xa79649[_0xcf06('0x69')][_0xcf06('0x5c')]({'filename':_0xcf06('0x6a')+_0x4825cf['toLowerCase'](),'createdAt':moment()['format'](_0xcf06('0x6c')),'mixmonitorid':_0x58fca5[_0xcf06('0x6d')],'status':_0xcf06('0x6e')});}else{_0x3db6a4[_0xcf06('0x6d')]=_0x58fca5[_0xcf06('0x6d')];_0x3db6a4['status']=_0xcf06('0x6e');}_0xdb7e9a({'code':0xc8,'message':[_0x3b63cf['uniqueid'],_0xcf06('0x6f'),_0x58fca5[_0xcf06('0x6d')]][_0xcf06('0x1c')]('\x20'),'mixmonitorid':_0x58fca5[_0xcf06('0x6d')]});})[_0xcf06('0x1a')](function(_0xf34a47){_0x5563d3(_0x4e49ca[_0xcf06('0x11')](0x1f5,[_0x3b63cf[_0xcf06('0x65')],_0xf34a47[_0xcf06('0x1b')][_0xcf06('0x6b')]()]['join']('\x20')));});}else{return _0x5563d3(_0x4e49ca[_0xcf06('0x11')](0x1f5,_0xcf06('0x70')));}});},'VoiceChannelStopMixMonitor':function(_0x18064c){var _0x505c7d=this;return new Promise(function(_0x2591a0,_0x63f53f){if(ami['isConnected']()==![]){return _0x63f53f(_0x505c7d[_0xcf06('0x11')](0x1f4,[config['asterisk']['ip'],config[_0xcf06('0x12')][_0xcf06('0x13')],_0xcf06('0x14')][_0xcf06('0x1c')]('\x20')));}var _0x312d2b=schema(properties[_0xcf06('0x63')])[_0xcf06('0x3')](_0x18064c);if(_0x312d2b[_0xcf06('0x62')]>0x0){return _0x63f53f(_0x505c7d[_0xcf06('0x11')](0x1f4,_[_0xcf06('0x64')](_0x312d2b,_0xcf06('0x1b'))[_0xcf06('0x1c')](',\x20')));}var _0x26c6ba=_['find'](_0x171d05[_0xcf06('0x61')],{'uniqueid':_0x18064c[_0xcf06('0x65')]});if(_0x26c6ba){return BPromise[_0xcf06('0x71')]()[_0xcf06('0x19')](function(){if(_0x26c6ba[_0xcf06('0x66')]){return ami['Action']({'action':_0xcf06('0x72'),'channel':_0x26c6ba[_0xcf06('0x66')],'mixmonitorid':_0x18064c[_0xcf06('0x6d')]})[_0xcf06('0x1a')](function(_0x4cf734){});}})[_0xcf06('0x19')](function(){if(_0x26c6ba[_0xcf06('0x73')]){return ami[_0xcf06('0x18')]({'action':_0xcf06('0x72'),'channel':_0x26c6ba[_0xcf06('0x73')],'mixmonitorid':_0x18064c[_0xcf06('0x6d')]})[_0xcf06('0x1a')](function(_0x3f5d16){});}})['then'](function(_0x1ad767){var _0x4a15b0=_[_0xcf06('0x5d')](_0x26c6ba[_0xcf06('0x69')],{'mixmonitorid':_0x18064c['mixmonitorid']});if(_0x4a15b0){_0x4a15b0['status']='stop';}})[_0xcf06('0x19')](function(){var _0x38ef8f=util[_0xcf06('0x67')](_0xcf06('0x74'),_0x18064c[_0xcf06('0x75')]||_0x18064c['uniqueid'],_0x18064c[_0xcf06('0x67')]||_0xcf06('0x68'));var _0x54e4ad=_['find'](_0x26c6ba['monitors'],{'filename':_0xcf06('0x6a')+_0x38ef8f[_0xcf06('0x6b')]()});if(_0x54e4ad){_0x54e4ad['status']='stop';}})[_0xcf06('0x19')](function(){_0x2591a0({'code':0xc8,'message':[_0x18064c['uniqueid'],_0xcf06('0x76')][_0xcf06('0x1c')]('\x20')});})[_0xcf06('0x1a')](function(_0x1ba5b6){_0x63f53f(_0x505c7d[_0xcf06('0x11')](0x1f5,[_0x18064c['uniqueid'],_0x1ba5b6[_0xcf06('0x1b')]['toLowerCase']()][_0xcf06('0x1c')]('\x20')));});}else{return _0x63f53f(_0x505c7d[_0xcf06('0x11')](0x1f5,_0xcf06('0x70')));}});},'VoiceQueuesChannels':function(_0x54df7f){return new Promise(function(_0x281491,_0x285332){var _0x4d01d6=_[_0xcf06('0x60')](_0x171d05[_0xcf06('0x77')]);_0x281491({'count':_0x4d01d6[_0xcf06('0x62')],'rows':_0x4d01d6});});},'VoiceQueuesChannel':function(_0x4879ca){var _0xe94046=this;return new Promise(function(_0x552e24,_0x17c28a){var _0x458338=schema(properties[_0xcf06('0x78')])[_0xcf06('0x3')](_0x4879ca);if(_0x458338['length']>0x0){return _0x17c28a(_0xe94046['error'](0x1f4,_[_0xcf06('0x64')](_0x458338,_0xcf06('0x1b'))[_0xcf06('0x1c')](',\x20')));}var _0x5d189c=_[_0xcf06('0x5d')](_0x171d05['queueChannels'],{'uniqueid':_0x4879ca[_0xcf06('0x65')]});if(_0x5d189c){_0x552e24(_0x5d189c);}else{return _0x17c28a(_0xe94046['error'](0x1f5,_0xcf06('0x70')));}});},'VoiceQueuesChannelHangup':function(_0x37df61){var _0x501ae7=this;return new Promise(function(_0x3042aa,_0x446c52){if(ami[_0xcf06('0x10')]()==![]){return _0x446c52(_0x501ae7[_0xcf06('0x11')](0x1f4,[config['asterisk']['ip'],config[_0xcf06('0x12')][_0xcf06('0x13')],_0xcf06('0x14')][_0xcf06('0x1c')]('\x20')));}var _0x18fd2e=schema(properties['voicequeuechannelhangup'])[_0xcf06('0x3')](_0x37df61);if(_0x18fd2e[_0xcf06('0x62')]>0x0){return _0x446c52(_0x501ae7[_0xcf06('0x11')](0x1f4,_[_0xcf06('0x64')](_0x18fd2e,_0xcf06('0x1b'))[_0xcf06('0x1c')](',\x20')));}var _0x248e25=_['find'](_0x171d05[_0xcf06('0x77')],{'uniqueid':_0x37df61['uniqueid']});if(_0x248e25&&_0x248e25[_0xcf06('0x66')]){return ami[_0xcf06('0x18')]({'action':_0xcf06('0x79'),'channel':_0x248e25[_0xcf06('0x66')]})[_0xcf06('0x19')](function(_0x21864a){_0x3042aa({'code':0xc8,'message':[_0x37df61[_0xcf06('0x65')],_0x21864a[_0xcf06('0x1b')]['toLowerCase']()][_0xcf06('0x1c')]('\x20')});})[_0xcf06('0x1a')](function(_0x3707d4){_0x446c52(_0x501ae7[_0xcf06('0x11')](0x1f5,[_0x37df61[_0xcf06('0x65')],_0x3707d4[_0xcf06('0x1b')][_0xcf06('0x6b')]()][_0xcf06('0x1c')]('\x20')));});}else{return _0x446c52(_0x501ae7[_0xcf06('0x11')](0x1f5,_0xcf06('0x70')));}});},'VoiceQueuesChannelRedirect':function(_0x56cc4f){var _0x48c5e5=this;return new Promise(function(_0x528647,_0x10e311){if(ami[_0xcf06('0x10')]()==![]){return _0x10e311(_0x48c5e5[_0xcf06('0x11')](0x1f4,[config[_0xcf06('0x12')]['ip'],config['asterisk'][_0xcf06('0x13')],_0xcf06('0x14')][_0xcf06('0x1c')]('\x20')));}var _0x396719=schema(properties[_0xcf06('0x7a')])[_0xcf06('0x3')](_0x56cc4f);if(_0x396719[_0xcf06('0x62')]>0x0){return _0x10e311(_0x48c5e5[_0xcf06('0x11')](0x1f4,_[_0xcf06('0x64')](_0x396719,_0xcf06('0x1b'))[_0xcf06('0x1c')](',\x20')));}var _0x24e5f1=_[_0xcf06('0x5d')](_0x171d05[_0xcf06('0x77')],{'uniqueid':_0x56cc4f[_0xcf06('0x65')]});if(_0x24e5f1&&_0x24e5f1[_0xcf06('0x66')]){return ami[_0xcf06('0x18')]({'action':_0xcf06('0x7b'),'channel':_0x24e5f1['channel'],'exten':_0x56cc4f['exten'],'context':_0x56cc4f[_0xcf06('0x7c')]||_0x24e5f1['context'],'priority':0x1})[_0xcf06('0x19')](function(_0x1a8e29){_0x528647({'code':0xc8,'message':[_0x56cc4f['uniqueid'],_0x1a8e29['message'][_0xcf06('0x6b')]()][_0xcf06('0x1c')]('\x20')});})['catch'](function(_0x6c50f6){_0x10e311(_0x48c5e5[_0xcf06('0x11')](0x1f5,[_0x56cc4f['uniqueid'],_0x6c50f6[_0xcf06('0x1b')][_0xcf06('0x6b')]()][_0xcf06('0x1c')]('\x20')));});}else{return _0x10e311(_0x48c5e5[_0xcf06('0x11')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'Agents':function(_0x566a5f){return new Promise(function(_0x1d6bd2,_0x1b5636){var _0x45df58=_[_0xcf06('0x60')](_0x171d05[_0xcf06('0xc')]);_0x1d6bd2({'count':_0x45df58[_0xcf06('0x62')],'rows':_0x45df58});});},'Telephones':function(_0x526819){return new Promise(function(_0x19d9db,_0x2bff40){var _0x3329bd=_[_0xcf06('0x60')](_0x171d05['telephones']);_0x19d9db({'count':_0x3329bd[_0xcf06('0x62')],'rows':_0x3329bd});});},'Trunks':function(_0x4abde1){return new Promise(function(_0x2ebccf,_0x4cc799){var _0x394bcc=_[_0xcf06('0x60')](_0x171d05[_0xcf06('0x7d')]);_0x2ebccf({'count':_0x394bcc[_0xcf06('0x62')],'rows':_0x394bcc});});},'OutboundChannels':function(_0x36991e){return new Promise(function(_0x27092e,_0x4ace91){var _0x112ffb=_[_0xcf06('0x60')](_0x171d05['outboundChannels']);_0x27092e({'count':_0x112ffb['length'],'rows':_0x112ffb});});},'Outbound':function(_0x49515d){return new Promise(function(_0x32a462,_0x25192c){_0x32a462(_0x171d05[_0xcf06('0x2f')]);});},'Campaigns':function(_0xe241f5){return new Promise(function(_0x57df35,_0x222b5a){var _0x129d9b=_[_0xcf06('0x60')](_0x171d05[_0xcf06('0x7e')]);_0x57df35({'count':_0x129d9b['length'],'rows':_0x129d9b});});},'VoiceQueuesPreview':function(_0x172b7e){var _0x578b00=this;return new Promise(function(_0x10867f,_0x33b90c){_0x33e492[_0xcf06('0x7f')](_0x172b7e['id'])['then'](function(_0xd4bc5b){_0x10867f({'code':0xc8,'message':_0xd4bc5b[_0xcf06('0x1b')]});})[_0xcf06('0x1a')](function(_0x4c0c98){_0x33b90c(_0x578b00[_0xcf06('0x11')](0x1f4,_0x4c0c98['message']));});});},'EventManager':function(_0x1115d0){var _0x474e87=this;return new Promise(function(_0x1fa6e2,_0x55ebea){if(!_0x1115d0[_0xcf06('0x80')]){return _0x55ebea(_0x474e87[_0xcf06('0x11')](0x1f4,_0xcf06('0x81')));}ami[_0xcf06('0x82')](_0xcf06('0x83')+_0x1115d0[_0xcf06('0x80')],_0x1115d0['message']);_0x1fa6e2({'code':0xc8,'message':_0x1115d0});});},'FaxAccounts':function(_0x6698d0){return new Promise(function(_0x3dbb76,_0x284a7c){var _0xa1c138=_['values'](_0x171d05[_0xcf06('0x84')]);_0x3dbb76({'count':_0xa1c138[_0xcf06('0x62')],'rows':_0xa1c138});});},'SendFax':function(_0x4b24db){var _0x15963b=this;return new Promise(function(_0x7a313a,_0x248670){_0x3de2dc[_0xcf06('0x85')](_0x4b24db)[_0xcf06('0x19')](function(_0x3cf9fe){_0x7a313a({'code':0xc8,'message':_0x3cf9fe[_0xcf06('0x1b')]});})[_0xcf06('0x1a')](function(_0x1db795){_0x248670(_0x15963b[_0xcf06('0x11')](0x1f4,_0x1db795[_0xcf06('0x1b')]));});});},'CheckAfterSend':function(_0x1da4ec){var _0x2f9387=this;return new Promise(function(_0x69f797,_0x3c279f){_0x3de2dc[_0xcf06('0x86')](_0x1da4ec)['then'](function(_0x408786){_0x69f797({'code':0xc8,'message':_0x408786[_0xcf06('0x1b')]});})[_0xcf06('0x1a')](function(_0x419fee){_0x3c279f(_0x2f9387[_0xcf06('0x11')](0x1f4,_0x419fee[_0xcf06('0x1b')]));});});}};var _0x594b5a=jayson['server'](_0x5d1aa0)[_0xcf06('0x87')]();_0x594b5a['on'](_0xcf06('0x11'),function(_0x278ade){return _0x22ac40(_0x278ade);});_0x594b5a[_0xcf06('0x88')](0x232a,_0xcf06('0x89'),function(){console[_0xcf06('0x8a')]('AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232a);return _0x4e6799(_0xcf06('0x8b')+0x232a);});});};
\ No newline at end of file
+var _0x50e5=['undefined','values','channels','length','join','voicechannel','map','channel','wav','MixMonitor','ai(mixmonitorid)','/var/spool/asterisk/monitor/','isNil','mixmonitorid','rec','MixMonitor\x20Success','toLowerCase','Channel\x20doesn\x27t\x20exist','uniqueid','StopMixMonitor','destinationchannel','status','stop','%s.%s','filename','monitors','StopMixMonitor\x20Success','queueChannels','voicequeuechannelhangup','Hangup','Redirect','exten','context','telephones','trunks','campaigns','run','event','Event\x20name\x20mandatory','emit','send','checkAfterSend','http','log','AMI\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','lodash','util','validate','bluebird','moment','../../../config/environment','../properties','../ami','listen','format','%s/%s','name','timers','timer','updateAcw','agents','updateStatusRealtime','QueuePause','isConnected','error','asterisk','ami\x20disconnected','pick','action','Reload','message','username','command','Action','then','content','catch','voiceQueues','hasOwnProperty','strategy','answered','loggedIn','pTalking','sumBillable','sumDuration','sumHoldTime','talking','total','type','unmanaged','abandoned','waiting','loggedInDb','outbound','dialActive','dialMethod','dialOriginateCallerIdName','dialOriginateCallerIdNumber','dialOriginateTimeout','dialPrefix','temp','outboundAnswerAgiCallsDay','outboundAnswerCallsDay','outboundBlacklistCallsDay','outboundBusyCallsDay','outboundCongestionCallsDay','outboundDropCallsDayCallersExit','outboundDropCallsDayTimeout','outboundNoSuchCallsDay','outboundOriginateFailureCallsDay','outboundRejectCallsDay','outboundUnknownCallsDay','predictiveIntervalAnsweredCalls','predictiveIntervalAvgHoldtime','predictiveIntervalAvgTalktime','predictiveIntervalDroppedCallsCallersExit','predictiveIntervalErlangCalls','predictiveIntervalErlangCallsDroppedCalls','predictiveIntervalHitRate','predictiveIntervalMultiplicativeFactor','predictiveIntervalPauses','predictiveIntervalAvailable','predictiveIntervalTotalCalls','originated','erlangCalls','erlangCallToSecond','erlangAbandonmentRate','erlangBusyFactor','startPredictive','startProgressive','Trunk','callerid','Interval','push','find','omit'];(function(_0x577789,_0x24b8e8){var _0x403787=function(_0x4eca9a){while(--_0x4eca9a){_0x577789['push'](_0x577789['shift']());}};_0x403787(++_0x24b8e8);}(_0x50e5,0xb7));var _0x550e=function(_0x4d809e,_0x4d20a0){_0x4d809e=_0x4d809e-0x0;var _0x1dace9=_0x50e5[_0x4d809e];return _0x1dace9;};'use strict';var _=require(_0x550e('0x0'));var util=require(_0x550e('0x1'));var jayson=require('jayson/promise');var schema=require(_0x550e('0x2'));var BPromise=require(_0x550e('0x3'));var moment=require(_0x550e('0x4'));var config=require(_0x550e('0x5'));var properties=require(_0x550e('0x6'));var ami=require(_0x550e('0x7'));exports[_0x550e('0x8')]=function(_0xafede5,_0x19981b,_0x3d8c9b){return new BPromise(function(_0x863e3b,_0x41a221){var _0x4f3357={'QueuePause':function(_0x27ae27){return new Promise(function(_0x20707a,_0x51318e){var _0xebedae=util[_0x550e('0x9')](_0x550e('0xa'),'SIP',_0x27ae27[_0x550e('0xb')]);if(_0xafede5['timers']&&_0xafede5['timers'][_0xebedae]&&_0xafede5[_0x550e('0xc')][_0xebedae][_0x550e('0xd')]){_0xafede5['timers'][_0xebedae][_0x550e('0xe')]();}if(_0xafede5[_0x550e('0xf')][_0xebedae]){_0xafede5[_0x550e('0xf')][_0xebedae][_0x550e('0x10')]({'statePause':_0x27ae27['pause']?!![]:![]});}_0x20707a({'code':0xc8,'message':_0x550e('0x11')});});},'Reload':function(_0x57214a){var _0x2dc276=this;return new Promise(function(_0x4f5255,_0x3a9028){if(ami[_0x550e('0x12')]()==![]){return _0x3a9028(_0x2dc276[_0x550e('0x13')](0x1f4,[config[_0x550e('0x14')]['ip'],config[_0x550e('0x14')]['username'],_0x550e('0x15')]['join']('\x20')));}_0x57214a=_[_0x550e('0x16')](_0x57214a,_['keys'](properties['module']));_0x57214a[_0x550e('0x17')]=_0x550e('0x18');return ami['Action'](_0x57214a)['then'](function(_0x4e450c){_0x4f5255({'code':0xc8,'message':_0x4e450c[_0x550e('0x19')]});})['catch'](function(_0x580c6f){_0x3a9028(_0x2dc276[_0x550e('0x13')](0x1f5,_0x580c6f[_0x550e('0x19')]));});});},'Command':function(_0x6c7178){var _0x846ad=this;return new Promise(function(_0x1ff0e9,_0x29f2db){if(ami[_0x550e('0x12')]()==![]){return _0x29f2db(_0x846ad[_0x550e('0x13')](0x1f4,[config[_0x550e('0x14')]['ip'],config['asterisk'][_0x550e('0x1a')],_0x550e('0x15')]['join']('\x20')));}_0x6c7178=_['pick'](_0x6c7178,_0x550e('0x1b'));_0x6c7178[_0x550e('0x17')]='Command';return ami[_0x550e('0x1c')](_0x6c7178)[_0x550e('0x1d')](function(_0x1762c3){_0x1ff0e9({'code':0xc8,'message':_0x1762c3[_0x550e('0x1e')]});})[_0x550e('0x1f')](function(_0x3bbca3){_0x29f2db(_0x846ad['error'](0x1f5,_0x3bbca3[_0x550e('0x19')]));});});},'VoiceQueues':function(_0x205e3a){return new Promise(function(_0x45d972,_0x2d10f3){var _0x403391=[];for(var _0xc94de2 in _0xafede5[_0x550e('0x20')]){if(_0xafede5[_0x550e('0x20')][_0x550e('0x21')](_0xc94de2)){var _0x136beb=_0xafede5[_0x550e('0x20')][_0xc94de2];var _0x362d21={'id':_0x136beb['id'],'name':_0x136beb['name'],'strategy':_0x136beb[_0x550e('0x22')],'answered':_0x136beb[_0x550e('0x23')],'available':_0x136beb['available'],'loggedIn':_0x136beb[_0x550e('0x24')],'pTalking':_0x136beb[_0x550e('0x25')],'sumBillable':_0x136beb[_0x550e('0x26')],'sumDuration':_0x136beb[_0x550e('0x27')],'sumHoldTime':_0x136beb[_0x550e('0x28')]||0x0,'talking':_0x136beb[_0x550e('0x29')],'total':_0x136beb[_0x550e('0x2a')],'type':_0x136beb[_0x550e('0x2b')],'unmanaged':_0x136beb[_0x550e('0x2c')],'abandoned':_0x136beb[_0x550e('0x2d')],'waiting':_0x136beb[_0x550e('0x2e')],'loggedInDb':_0x136beb[_0x550e('0x2f')]};if(_0x136beb[_0x550e('0x2b')]===_0x550e('0x30')){_0x362d21['dialActive']=_0x136beb[_0x550e('0x31')];_0x362d21[_0x550e('0x32')]=_0x136beb['dialMethod'];_0x362d21[_0x550e('0x33')]=_0x136beb[_0x550e('0x33')];_0x362d21['dialOriginateCallerIdNumber']=_0x136beb[_0x550e('0x34')];_0x362d21[_0x550e('0x35')]=_0x136beb[_0x550e('0x35')];_0x362d21[_0x550e('0x36')]=_0x136beb[_0x550e('0x36')];_0x362d21[_0x550e('0x37')]=_0x136beb[_0x550e('0x37')];_0x362d21[_0x550e('0x38')]=_0x136beb['outboundAnswerAgiCallsDay'];_0x362d21[_0x550e('0x39')]=_0x136beb['outboundAnswerCallsDay'];_0x362d21[_0x550e('0x3a')]=_0x136beb[_0x550e('0x3a')];_0x362d21['outboundBusyCallsDay']=_0x136beb[_0x550e('0x3b')];_0x362d21[_0x550e('0x3c')]=_0x136beb['outboundCongestionCallsDay'];_0x362d21['outboundDropCallsDayACS']=_0x136beb['outboundDropCallsDayACS'];_0x362d21['outboundDropCallsDayCallersExit']=_0x136beb[_0x550e('0x3d')];_0x362d21[_0x550e('0x3e')]=_0x136beb[_0x550e('0x3e')];_0x362d21['outboundNoAnswerCallsDay']=_0x136beb['outboundNoAnswerCallsDay'];_0x362d21['outboundNoSuchCallsDay']=_0x136beb[_0x550e('0x3f')];_0x362d21[_0x550e('0x40')]=_0x136beb['outboundOriginateFailureCallsDay'];_0x362d21['outboundReCallsDay']=_0x136beb['outboundReCallsDay'];_0x362d21[_0x550e('0x41')]=_0x136beb[_0x550e('0x41')];_0x362d21[_0x550e('0x42')]=_0x136beb['outboundUnknownCallsDay'];_0x362d21['predictiveIntervalAnsweredCalls']=_0x136beb[_0x550e('0x43')];_0x362d21[_0x550e('0x44')]=_0x136beb[_0x550e('0x44')];_0x362d21[_0x550e('0x45')]=_0x136beb['predictiveIntervalAvgTalktime'];_0x362d21[_0x550e('0x46')]=_0x136beb[_0x550e('0x46')];_0x362d21['predictiveIntervalDroppedCallsTimeout']=_0x136beb['predictiveIntervalDroppedCallsTimeout'];_0x362d21[_0x550e('0x47')]=_0x136beb[_0x550e('0x47')];_0x362d21[_0x550e('0x48')]=_0x136beb[_0x550e('0x48')];_0x362d21['predictiveIntervalHitRate']=_0x136beb[_0x550e('0x49')];_0x362d21[_0x550e('0x4a')]=_0x136beb[_0x550e('0x4a')];_0x362d21[_0x550e('0x4b')]=_0x136beb['predictiveIntervalPauses'];_0x362d21[_0x550e('0x4c')]=_0x136beb[_0x550e('0x4c')];_0x362d21[_0x550e('0x4d')]=_0x136beb[_0x550e('0x4d')];_0x362d21[_0x550e('0x19')]=_0x136beb[_0x550e('0x19')];_0x362d21['originated']=_0x136beb[_0x550e('0x4e')];_0x362d21[_0x550e('0x4f')]=_0x136beb[_0x550e('0x4f')];_0x362d21[_0x550e('0x50')]=_0x136beb[_0x550e('0x50')];_0x362d21['erlangAbandonmentRate']=_0x136beb[_0x550e('0x51')];_0x362d21[_0x550e('0x52')]=_0x136beb['erlangBusyFactor'];_0x362d21[_0x550e('0x53')]=_0x136beb[_0x550e('0x53')];_0x362d21[_0x550e('0x54')]=_0x136beb['startProgressive'];}if(_0x136beb['Trunk']){_0x362d21[_0x550e('0x55')]={'id':_0x136beb[_0x550e('0x55')]['id'],'name':_0x136beb['Trunk'][_0x550e('0xb')],'active':_0x136beb[_0x550e('0x55')]['active'],'callerid':_0x136beb[_0x550e('0x55')][_0x550e('0x56')]};}if(_0x136beb[_0x550e('0x57')]){_0x362d21[_0x550e('0x57')]={'id':_0x136beb[_0x550e('0x57')]['id'],'name':_0x136beb[_0x550e('0x57')]['name']};}_0x403391[_0x550e('0x58')](_0x362d21);}}_0x45d972({'count':_0x403391['length'],'rows':_0x403391});});},'UpdateVoiceQueue':function(_0x25b713){return new Promise(function(_0x273e85,_0x4e0782){var _0x1c9d04=_[_0x550e('0x59')](_0xafede5[_0x550e('0x20')],{'id':parseInt(_0x25b713['id'])});var _0x302e79=_[_0x550e('0x5a')](_0x25b713,['id']);if(_0x1c9d04){for(var _0x35881f in _0x302e79){if(typeof _0x302e79[_0x35881f]!=='undefined'&&typeof _0x1c9d04[_0x35881f]!==_0x550e('0x5b')){_0x1c9d04[_0x35881f]=_0x302e79[_0x35881f];}}_0x273e85(_0x1c9d04);}else{_0x4e0782();}});},'VoiceChannels':function(_0x30f708){return new Promise(function(_0x471a31,_0x444c23){var _0x5a9ef5=_[_0x550e('0x5c')](_0xafede5[_0x550e('0x5d')]);_0x471a31({'count':_0x5a9ef5[_0x550e('0x5e')],'rows':_0x5a9ef5});});},'VoiceChannelMixMonitor':function(_0x23b505){var _0x416b9f=this;return new Promise(function(_0x343d4b,_0x1de7d5){if(ami[_0x550e('0x12')]()==![]){return _0x1de7d5(_0x416b9f[_0x550e('0x13')](0x1f4,[config[_0x550e('0x14')]['ip'],config[_0x550e('0x14')][_0x550e('0x1a')],_0x550e('0x15')][_0x550e('0x5f')]('\x20')));}var _0x203b32=schema(properties[_0x550e('0x60')])[_0x550e('0x2')](_0x23b505);if(_0x203b32['length']>0x0){return _0x1de7d5(_0x416b9f[_0x550e('0x13')](0x1f4,_[_0x550e('0x61')](_0x203b32,_0x550e('0x19'))[_0x550e('0x5f')](',\x20')));}var _0x3c47b2=_[_0x550e('0x59')](_0xafede5[_0x550e('0x5d')],{'uniqueid':_0x23b505['uniqueid']});if(_0x3c47b2&&_0x3c47b2[_0x550e('0x62')]){var _0x3fe6ff=util[_0x550e('0x9')]('%s.%s',_0x23b505['filename']||_0x23b505['uniqueid'],_0x23b505[_0x550e('0x9')]||_0x550e('0x63'));return ami[_0x550e('0x1c')]({'action':_0x550e('0x64'),'channel':_0x3c47b2[_0x550e('0x62')],'file':_0x3fe6ff,'options':_0x550e('0x65')})['then'](function(_0x7203cb){var _0x3e9283=_[_0x550e('0x59')](_0x3c47b2['monitors'],{'filename':_0x550e('0x66')+_0x3fe6ff['toLowerCase']()});if(_[_0x550e('0x67')](_0x3e9283)){_0x3c47b2['monitors'][_0x550e('0x58')]({'filename':_0x550e('0x66')+_0x3fe6ff['toLowerCase'](),'createdAt':moment()[_0x550e('0x9')]('YYYY-MM-DD\x20HH:mm:ss'),'mixmonitorid':_0x7203cb[_0x550e('0x68')],'status':'rec'});}else{_0x3e9283[_0x550e('0x68')]=_0x7203cb[_0x550e('0x68')];_0x3e9283['status']=_0x550e('0x69');}_0x343d4b({'code':0xc8,'message':[_0x23b505['uniqueid'],_0x550e('0x6a'),_0x7203cb[_0x550e('0x68')]][_0x550e('0x5f')]('\x20'),'mixmonitorid':_0x7203cb[_0x550e('0x68')]});})['catch'](function(_0x49f15e){_0x1de7d5(_0x416b9f[_0x550e('0x13')](0x1f5,[_0x23b505['uniqueid'],_0x49f15e['message'][_0x550e('0x6b')]()][_0x550e('0x5f')]('\x20')));});}else{return _0x1de7d5(_0x416b9f[_0x550e('0x13')](0x1f5,_0x550e('0x6c')));}});},'VoiceChannelStopMixMonitor':function(_0x46b54e){var _0x44b6a9=this;return new Promise(function(_0x47cd94,_0x223c85){if(ami[_0x550e('0x12')]()==![]){return _0x223c85(_0x44b6a9[_0x550e('0x13')](0x1f4,[config[_0x550e('0x14')]['ip'],config[_0x550e('0x14')][_0x550e('0x1a')],_0x550e('0x15')][_0x550e('0x5f')]('\x20')));}var _0x27ddf5=schema(properties['voicechannel'])[_0x550e('0x2')](_0x46b54e);if(_0x27ddf5[_0x550e('0x5e')]>0x0){return _0x223c85(_0x44b6a9[_0x550e('0x13')](0x1f4,_[_0x550e('0x61')](_0x27ddf5,_0x550e('0x19'))[_0x550e('0x5f')](',\x20')));}var _0x2aeccd=_[_0x550e('0x59')](_0xafede5[_0x550e('0x5d')],{'uniqueid':_0x46b54e[_0x550e('0x6d')]});if(_0x2aeccd){return BPromise['resolve']()[_0x550e('0x1d')](function(){if(_0x2aeccd[_0x550e('0x62')]){return ami[_0x550e('0x1c')]({'action':_0x550e('0x6e'),'channel':_0x2aeccd[_0x550e('0x62')],'mixmonitorid':_0x46b54e[_0x550e('0x68')]})[_0x550e('0x1f')](function(_0x4b710e){});}})['then'](function(){if(_0x2aeccd['destinationchannel']){return ami[_0x550e('0x1c')]({'action':_0x550e('0x6e'),'channel':_0x2aeccd[_0x550e('0x6f')],'mixmonitorid':_0x46b54e[_0x550e('0x68')]})[_0x550e('0x1f')](function(_0x1e577e){});}})['then'](function(_0x3d87cc){var _0x3a0051=_['find'](_0x2aeccd['monitors'],{'mixmonitorid':_0x46b54e[_0x550e('0x68')]});if(_0x3a0051){_0x3a0051[_0x550e('0x70')]=_0x550e('0x71');}})[_0x550e('0x1d')](function(){var _0x107b0d=util[_0x550e('0x9')](_0x550e('0x72'),_0x46b54e[_0x550e('0x73')]||_0x46b54e['uniqueid'],_0x46b54e[_0x550e('0x9')]||_0x550e('0x63'));var _0x47fd41=_[_0x550e('0x59')](_0x2aeccd[_0x550e('0x74')],{'filename':_0x550e('0x66')+_0x107b0d[_0x550e('0x6b')]()});if(_0x47fd41){_0x47fd41[_0x550e('0x70')]=_0x550e('0x71');}})[_0x550e('0x1d')](function(){_0x47cd94({'code':0xc8,'message':[_0x46b54e['uniqueid'],_0x550e('0x75')][_0x550e('0x5f')]('\x20')});})[_0x550e('0x1f')](function(_0x1bb74d){_0x223c85(_0x44b6a9[_0x550e('0x13')](0x1f5,[_0x46b54e['uniqueid'],_0x1bb74d[_0x550e('0x19')][_0x550e('0x6b')]()]['join']('\x20')));});}else{return _0x223c85(_0x44b6a9[_0x550e('0x13')](0x1f5,_0x550e('0x6c')));}});},'VoiceQueuesChannels':function(_0x55fda6){return new Promise(function(_0x242e9d,_0x46547c){var _0x11f541=_[_0x550e('0x5c')](_0xafede5['queueChannels']);_0x242e9d({'count':_0x11f541[_0x550e('0x5e')],'rows':_0x11f541});});},'VoiceQueuesChannel':function(_0x5b827d){var _0x7c773d=this;return new Promise(function(_0x5fdf09,_0x4f80e1){var _0x2bd09f=schema(properties['voicequeuechannel'])[_0x550e('0x2')](_0x5b827d);if(_0x2bd09f['length']>0x0){return _0x4f80e1(_0x7c773d[_0x550e('0x13')](0x1f4,_[_0x550e('0x61')](_0x2bd09f,_0x550e('0x19'))[_0x550e('0x5f')](',\x20')));}var _0x23fd6f=_[_0x550e('0x59')](_0xafede5[_0x550e('0x76')],{'uniqueid':_0x5b827d[_0x550e('0x6d')]});if(_0x23fd6f){_0x5fdf09(_0x23fd6f);}else{return _0x4f80e1(_0x7c773d[_0x550e('0x13')](0x1f5,_0x550e('0x6c')));}});},'VoiceQueuesChannelHangup':function(_0x3e1b16){var _0x413efe=this;return new Promise(function(_0x3069cd,_0x21a285){if(ami[_0x550e('0x12')]()==![]){return _0x21a285(_0x413efe[_0x550e('0x13')](0x1f4,[config['asterisk']['ip'],config[_0x550e('0x14')][_0x550e('0x1a')],'ami\x20disconnected'][_0x550e('0x5f')]('\x20')));}var _0x52ec61=schema(properties[_0x550e('0x77')])[_0x550e('0x2')](_0x3e1b16);if(_0x52ec61[_0x550e('0x5e')]>0x0){return _0x21a285(_0x413efe[_0x550e('0x13')](0x1f4,_[_0x550e('0x61')](_0x52ec61,_0x550e('0x19'))['join'](',\x20')));}var _0xa3f5ac=_['find'](_0xafede5['queueChannels'],{'uniqueid':_0x3e1b16[_0x550e('0x6d')]});if(_0xa3f5ac&&_0xa3f5ac['channel']){return ami[_0x550e('0x1c')]({'action':_0x550e('0x78'),'channel':_0xa3f5ac['channel']})['then'](function(_0x116ad8){_0x3069cd({'code':0xc8,'message':[_0x3e1b16[_0x550e('0x6d')],_0x116ad8['message']['toLowerCase']()]['join']('\x20')});})[_0x550e('0x1f')](function(_0x12ce61){_0x21a285(_0x413efe['error'](0x1f5,[_0x3e1b16[_0x550e('0x6d')],_0x12ce61[_0x550e('0x19')][_0x550e('0x6b')]()]['join']('\x20')));});}else{return _0x21a285(_0x413efe[_0x550e('0x13')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'VoiceQueuesChannelRedirect':function(_0x57af5c){var _0x2ee058=this;return new Promise(function(_0x530f90,_0x270534){if(ami[_0x550e('0x12')]()==![]){return _0x270534(_0x2ee058['error'](0x1f4,[config[_0x550e('0x14')]['ip'],config[_0x550e('0x14')][_0x550e('0x1a')],_0x550e('0x15')][_0x550e('0x5f')]('\x20')));}var _0x5c7385=schema(properties['voicequeuechannelredirect'])[_0x550e('0x2')](_0x57af5c);if(_0x5c7385[_0x550e('0x5e')]>0x0){return _0x270534(_0x2ee058[_0x550e('0x13')](0x1f4,_[_0x550e('0x61')](_0x5c7385,'message')['join'](',\x20')));}var _0x2dcb43=_[_0x550e('0x59')](_0xafede5[_0x550e('0x76')],{'uniqueid':_0x57af5c[_0x550e('0x6d')]});if(_0x2dcb43&&_0x2dcb43[_0x550e('0x62')]){return ami[_0x550e('0x1c')]({'action':_0x550e('0x79'),'channel':_0x2dcb43[_0x550e('0x62')],'exten':_0x57af5c[_0x550e('0x7a')],'context':_0x57af5c[_0x550e('0x7b')]||_0x2dcb43['context'],'priority':0x1})[_0x550e('0x1d')](function(_0x3fd531){_0x530f90({'code':0xc8,'message':[_0x57af5c['uniqueid'],_0x3fd531[_0x550e('0x19')][_0x550e('0x6b')]()][_0x550e('0x5f')]('\x20')});})[_0x550e('0x1f')](function(_0x3ab5b5){_0x270534(_0x2ee058['error'](0x1f5,[_0x57af5c[_0x550e('0x6d')],_0x3ab5b5[_0x550e('0x19')][_0x550e('0x6b')]()]['join']('\x20')));});}else{return _0x270534(_0x2ee058[_0x550e('0x13')](0x1f5,'Channel\x20doesn\x27t\x20exist'));}});},'Agents':function(_0x205f49){return new Promise(function(_0x1c8200,_0x4259af){var _0x2ae26b=_['values'](_0xafede5[_0x550e('0xf')]);_0x1c8200({'count':_0x2ae26b['length'],'rows':_0x2ae26b});});},'Telephones':function(_0x32900c){return new Promise(function(_0x3b1f09,_0x58e484){var _0x175e87=_['values'](_0xafede5[_0x550e('0x7c')]);_0x3b1f09({'count':_0x175e87['length'],'rows':_0x175e87});});},'Trunks':function(_0x533f90){return new Promise(function(_0x509633,_0xf898e6){var _0x68bde7=_[_0x550e('0x5c')](_0xafede5[_0x550e('0x7d')]);_0x509633({'count':_0x68bde7[_0x550e('0x5e')],'rows':_0x68bde7});});},'OutboundChannels':function(_0xa53bc4){return new Promise(function(_0x172d1d,_0x1dc872){var _0x35b90b=_[_0x550e('0x5c')](_0xafede5['outboundChannels']);_0x172d1d({'count':_0x35b90b[_0x550e('0x5e')],'rows':_0x35b90b});});},'Outbound':function(_0xa1f3cc){return new Promise(function(_0x10963a,_0x4a0cfd){_0x10963a(_0xafede5['outbound']);});},'Campaigns':function(_0x351fd3){return new Promise(function(_0xb0271c,_0x9b420c){var _0x256afd=_[_0x550e('0x5c')](_0xafede5[_0x550e('0x7e')]);_0xb0271c({'count':_0x256afd['length'],'rows':_0x256afd});});},'VoiceQueuesPreview':function(_0x41d1ed){var _0x5588ff=this;return new Promise(function(_0x31d74c,_0x5dda77){_0x19981b[_0x550e('0x7f')](_0x41d1ed['id'])[_0x550e('0x1d')](function(_0x5a663c){_0x31d74c({'code':0xc8,'message':_0x5a663c[_0x550e('0x19')]});})[_0x550e('0x1f')](function(_0x430b6a){_0x5dda77(_0x5588ff[_0x550e('0x13')](0x1f4,_0x430b6a[_0x550e('0x19')]));});});},'EventManager':function(_0x1df9bb){var _0x107f59=this;return new Promise(function(_0x5333c6,_0x86156c){if(!_0x1df9bb[_0x550e('0x80')]){return _0x86156c(_0x107f59[_0x550e('0x13')](0x1f4,_0x550e('0x81')));}ami[_0x550e('0x82')]('custom:'+_0x1df9bb['event'],_0x1df9bb[_0x550e('0x19')]);_0x5333c6({'code':0xc8,'message':_0x1df9bb});});},'FaxAccounts':function(_0x44b0b4){return new Promise(function(_0x17eca3,_0x56a61b){var _0xc37f4d=_[_0x550e('0x5c')](_0xafede5['faxAccounts']);_0x17eca3({'count':_0xc37f4d[_0x550e('0x5e')],'rows':_0xc37f4d});});},'SendFax':function(_0x3ce38b){var _0x306f1d=this;return new Promise(function(_0xd7edd2,_0x2e809d){_0x3d8c9b[_0x550e('0x83')](_0x3ce38b)[_0x550e('0x1d')](function(_0x219730){_0xd7edd2({'code':0xc8,'message':_0x219730[_0x550e('0x19')]});})[_0x550e('0x1f')](function(_0x18f023){_0x2e809d(_0x306f1d[_0x550e('0x13')](0x1f4,_0x18f023[_0x550e('0x19')]));});});},'CheckAfterSend':function(_0x32d32f){var _0x5b2f6b=this;return new Promise(function(_0x1f83c5,_0x25db90){_0x3d8c9b[_0x550e('0x84')](_0x32d32f)[_0x550e('0x1d')](function(_0x473837){_0x1f83c5({'code':0xc8,'message':_0x473837[_0x550e('0x19')]});})[_0x550e('0x1f')](function(_0x55bfc8){_0x25db90(_0x5b2f6b['error'](0x1f4,_0x55bfc8[_0x550e('0x19')]));});});}};var _0xe16193=jayson['server'](_0x4f3357)[_0x550e('0x85')]();_0xe16193['on']('error',function(_0x5d95e5){return _0x41a221(_0x5d95e5);});_0xe16193[_0x550e('0x8')](0x232a,'127.0.0.1',function(){console[_0x550e('0x86')](_0x550e('0x87'),0x232a);return _0x863e3b(_0x550e('0x88')+0x232a);});});};
\ No newline at end of file
index 8e49c2e..3480983 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa914=['uniqueid','data4','[CM][%s][%s]\x20Autocreate\x20enabled','calleridname','<unknown>','destcalleridname','Unknown','createContact','push','[CM][%s][%s]\x20Contact\x20created:%s','[CM][%s][%s]\x20Autocreate\x20disabled','format','name','trigger:%s','action','merge','length','bluebird','ioredis','util','../../../../config/environment','../../../../config/logger','trigger','../../rpc/cmContact','redis','defaults','socket.io-emitter','info','[CM][%s][%s]','stringify','emit','exec','data1','data2','isNil','data5','xmd-contactid','data3','split','$or','map','routeId','destcalleridnum','calleridnum','firstName','lastName','phone','createdAt','scheduledAt','updatedAt','resolve','then','getContacts','isEmpty','[CM][%s][%s]\x20Contact\x20found:%s','join','[CM][%s][%s]\x20Contact\x20not\x20found'];(function(_0x5d80de,_0x2cf15d){var _0x1c7556=function(_0x5bd806){while(--_0x5bd806){_0x5d80de['push'](_0x5d80de['shift']());}};_0x1c7556(++_0x2cf15d);}(_0xa914,0x83));var _0x4a91=function(_0x1aa88f,_0x3b186f){_0x1aa88f=_0x1aa88f-0x0;var _0x3e0b82=_0xa914[_0x1aa88f];return _0x3e0b82;};'use strict';var _=require('lodash');var BPromise=require(_0x4a91('0x0'));var Redis=require(_0x4a91('0x1'));var util=require(_0x4a91('0x2'));var config=require(_0x4a91('0x3'));var logger=require(_0x4a91('0x4'))(_0x4a91('0x5'));var cmContactRpc=require(_0x4a91('0x6'));config[_0x4a91('0x7')]=_[_0x4a91('0x8')](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0x4a91('0x9'))(new Redis(config['redis']));function emit(_0x358001,_0x5e230e,_0x5c5ec2,_0x109a98,_0x2033bc){logger[_0x4a91('0xa')](_0x4a91('0xb'),_0x358001,_0x5e230e['id'],_0x5c5ec2,_0x109a98,JSON[_0x4a91('0xc')](_0x2033bc));io['to'](_0x5c5ec2)[_0x4a91('0xd')](_0x109a98,_0x2033bc);}exports[_0x4a91('0xe')]=function(_0x2fd087,_0x535116,_0x13f806,_0xa21714){var _0x1db064,_0x4daa4d;var _0x246e6b={};var _0x4c97cc;var _0x53d17d=Number(_0x13f806[_0x4a91('0xf')]);var _0x22da39=_0x13f806[_0x4a91('0x10')]?Boolean(Number(_0x13f806['data2'])):![];var _0x5262a0;var _0x4838a5=![];if(!_[_0x4a91('0x11')](_0x13f806['data5'])){if(_0x13f806[_0x4a91('0x12')]=='1')_0x4838a5=!![];}if(!_0x4838a5){if(_0xa21714[_0x4a91('0x13')]){_0x246e6b['id']=_0xa21714[_0x4a91('0x13')];}}if(!_0x246e6b['id']){_0x246e6b['ListId']=_0x53d17d;_0x5262a0=_0x13f806[_0x4a91('0x14')]&&_0x13f806[_0x4a91('0x14')]!=='0'?_0x13f806[_0x4a91('0x14')][_0x4a91('0x15')](','):['phone'];_0x246e6b[_0x4a91('0x16')]=_[_0x4a91('0x17')](_0x5262a0,function(_0x66e667){var _0xe0bf4a={};_0xe0bf4a[_0x66e667]=_0xa21714[_0x4a91('0x18')]?_0xa21714[_0x4a91('0x19')]:_0xa21714[_0x4a91('0x1a')];return _0xe0bf4a;});_0x4c97cc=_0xa21714[_0x4a91('0x18')]?_0xa21714['destcalleridnum']:_0xa21714[_0x4a91('0x1a')];}var _0x3ef1e3=['id',_0x4a91('0x1b'),_0x4a91('0x1c'),_0x4a91('0x1d'),'mobile','fax','ListId',_0x4a91('0x1e'),_0x4a91('0x1f'),_0x4a91('0x20')];var _0xcec6a6=_['union'](_0x3ef1e3,_0x5262a0);BPromise[_0x4a91('0x21')]()[_0x4a91('0x22')](cmContactRpc[_0x4a91('0x23')]({'attributes':_0xcec6a6,'where':_0x246e6b,'phone':_0x4c97cc}))[_0x4a91('0x22')](function(_0x34dbbb){_0x4daa4d=_0x34dbbb;if(!_[_0x4a91('0x24')](_0x4daa4d)){if(_0x4daa4d['length']===0x1){_0x1db064=_0x4daa4d[0x0];logger[_0x4a91('0xa')](_0x4a91('0x25'),_0xa21714['uniqueid'],_0x535116['id'],_0x1db064['id']);}else{logger['info']('[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]',_0xa21714['uniqueid'],_0x535116['id'],_['map'](_0x4daa4d,'id')[_0x4a91('0x26')](','));}return;}else{logger[_0x4a91('0xa')](_0x4a91('0x27'),_0xa21714[_0x4a91('0x28')],_0x535116['id']);var _0x1df1ca={'ListId':_0x53d17d};var _0x296ddb=_0x13f806[_0x4a91('0x29')]&&_0x13f806[_0x4a91('0x29')]!=='0'?_0x13f806[_0x4a91('0x29')]:_0x4a91('0x1d');if(_0x22da39){logger[_0x4a91('0xa')](_0x4a91('0x2a'),_0xa21714[_0x4a91('0x28')],_0x535116['id']);_0x1df1ca[_0x296ddb]=_['isNil'](_0xa21714[_0x4a91('0x18')])?_0xa21714[_0x4a91('0x1a')]:_0xa21714[_0x4a91('0x19')];if(_[_0x4a91('0x11')](_0xa21714['routeId'])){_0x1df1ca['firstName']=_0xa21714[_0x4a91('0x2b')]&&_0xa21714['calleridname']!==_0x4a91('0x2c')?_0xa21714[_0x4a91('0x2b')]:'Unknown';}else{_0x1df1ca[_0x4a91('0x1b')]=_0xa21714[_0x4a91('0x2d')]&&_0xa21714['destcalleridname']!=='<unknown>'?_0xa21714[_0x4a91('0x2d')]:_0x4a91('0x2e');}return BPromise['resolve']()[_0x4a91('0x22')](cmContactRpc[_0x4a91('0x2f')](_0x1df1ca))[_0x4a91('0x22')](function(_0x2d7e29){_0x1db064=_0x2d7e29;_0x4daa4d[_0x4a91('0x30')](_0x2d7e29);if(_0x1db064){logger[_0x4a91('0xa')](_0x4a91('0x31'),_0xa21714[_0x4a91('0x28')],_0x535116['id'],_0x1db064['id']);}return;});}else{logger[_0x4a91('0xa')](_0x4a91('0x32'),_0xa21714['uniqueid'],_0x535116['id']);_0x1df1ca[_0x296ddb]=_['isNil'](_0xa21714[_0x4a91('0x18')])?_0xa21714[_0x4a91('0x1a')]:_0xa21714[_0x4a91('0x19')];if(_[_0x4a91('0x11')](_0xa21714[_0x4a91('0x18')])){_0x1df1ca['firstName']=_0xa21714[_0x4a91('0x2b')]&&_0xa21714[_0x4a91('0x2b')]!==_0x4a91('0x2c')?_0xa21714[_0x4a91('0x2b')]:_0x4a91('0x2e');}else{_0x1df1ca[_0x4a91('0x1b')]=_0xa21714[_0x4a91('0x2d')]&&_0xa21714[_0x4a91('0x2d')]!=='<unknown>'?_0xa21714['destcalleridname']:_0x4a91('0x2e');}_0x1db064=_0x1df1ca;_0x4daa4d[_0x4a91('0x30')](_0x1df1ca);return;}}})[_0x4a91('0x22')](function(){if(_0x2fd087){emit(_0xa21714[_0x4a91('0x28')],_0x535116,util[_0x4a91('0x33')]('user:%s',_0x2fd087[_0x4a91('0x34')]),util['format'](_0x4a91('0x35'),_0x13f806[_0x4a91('0x36')]['toLowerCase']()),{'evt':_[_0x4a91('0x37')](_0xa21714,{'autoCreate':_0x22da39}),'contact':_0x1db064===undefined?{}:_0x1db064,'contacts':_0x4daa4d[_0x4a91('0x38')]===0x0?undefined:_0x4daa4d});}});};
\ No newline at end of file
+var _0x689f=['lastName','mobile','fax','createdAt','scheduledAt','updatedAt','union','resolve','then','[CM][%s][%s]\x20Contact\x20found:%s','uniqueid','[CM][%s][%s]\x20Multiple\x20contacts\x20found:[%s]','[CM][%s][%s]\x20Contact\x20not\x20found','data4','calleridname','Unknown','destcalleridname','<unknown>','createContact','push','[CM][%s][%s]\x20Autocreate\x20disabled','format','name','trigger:%s','action','toLowerCase','merge','util','../../../../config/environment','../../rpc/cmContact','defaults','localhost','socket.io-emitter','redis','info','stringify','emit','exec','data1','data2','isNil','data5','xmd-contactid','ListId','data3','phone','map','destcalleridnum','calleridnum','routeId','firstName'];(function(_0x27363f,_0x2fd3b1){var _0x1547e9=function(_0x49d612){while(--_0x49d612){_0x27363f['push'](_0x27363f['shift']());}};_0x1547e9(++_0x2fd3b1);}(_0x689f,0x81));var _0xf689=function(_0x54454a,_0x5f31c9){_0x54454a=_0x54454a-0x0;var _0x47049d=_0x689f[_0x54454a];return _0x47049d;};'use strict';var _=require('lodash');var BPromise=require('bluebird');var Redis=require('ioredis');var util=require(_0xf689('0x0'));var config=require(_0xf689('0x1'));var logger=require('../../../../config/logger')('trigger');var cmContactRpc=require(_0xf689('0x2'));config['redis']=_[_0xf689('0x3')](config['redis'],{'host':_0xf689('0x4'),'port':0x18eb});var io=require(_0xf689('0x5'))(new Redis(config[_0xf689('0x6')]));function emit(_0x53cf63,_0x410c91,_0x3d2db9,_0x58dce7,_0x98edba){logger[_0xf689('0x7')]('[CM][%s][%s]',_0x53cf63,_0x410c91['id'],_0x3d2db9,_0x58dce7,JSON[_0xf689('0x8')](_0x98edba));io['to'](_0x3d2db9)[_0xf689('0x9')](_0x58dce7,_0x98edba);}exports[_0xf689('0xa')]=function(_0x1c96df,_0xb2b314,_0x106636,_0x1ea588){var _0x5615db,_0x1e742f;var _0x161d88={};var _0xae2dfd;var _0x352a6b=Number(_0x106636[_0xf689('0xb')]);var _0x462bf7=_0x106636[_0xf689('0xc')]?Boolean(Number(_0x106636[_0xf689('0xc')])):![];var _0x239dbb;var _0x5a1568=![];if(!_[_0xf689('0xd')](_0x106636[_0xf689('0xe')])){if(_0x106636[_0xf689('0xe')]=='1')_0x5a1568=!![];}if(!_0x5a1568){if(_0x1ea588[_0xf689('0xf')]){_0x161d88['id']=_0x1ea588['xmd-contactid'];}}if(!_0x161d88['id']){_0x161d88[_0xf689('0x10')]=_0x352a6b;_0x239dbb=_0x106636[_0xf689('0x11')]&&_0x106636[_0xf689('0x11')]!=='0'?_0x106636[_0xf689('0x11')]['split'](','):[_0xf689('0x12')];_0x161d88['$or']=_[_0xf689('0x13')](_0x239dbb,function(_0x2960c7){var _0x4d8ca0={};_0x4d8ca0[_0x2960c7]=_0x1ea588['routeId']?_0x1ea588[_0xf689('0x14')]:_0x1ea588[_0xf689('0x15')];return _0x4d8ca0;});_0xae2dfd=_0x1ea588[_0xf689('0x16')]?_0x1ea588[_0xf689('0x14')]:_0x1ea588['calleridnum'];}var _0x678a5a=['id',_0xf689('0x17'),_0xf689('0x18'),_0xf689('0x12'),_0xf689('0x19'),_0xf689('0x1a'),'ListId',_0xf689('0x1b'),_0xf689('0x1c'),_0xf689('0x1d')];var _0x41d937=_[_0xf689('0x1e')](_0x678a5a,_0x239dbb);BPromise[_0xf689('0x1f')]()[_0xf689('0x20')](cmContactRpc['getContacts']({'attributes':_0x41d937,'where':_0x161d88,'phone':_0xae2dfd}))[_0xf689('0x20')](function(_0x5a3058){_0x1e742f=_0x5a3058;if(!_['isEmpty'](_0x1e742f)){if(_0x1e742f['length']===0x1){_0x5615db=_0x1e742f[0x0];logger['info'](_0xf689('0x21'),_0x1ea588[_0xf689('0x22')],_0xb2b314['id'],_0x5615db['id']);}else{logger['info'](_0xf689('0x23'),_0x1ea588[_0xf689('0x22')],_0xb2b314['id'],_[_0xf689('0x13')](_0x1e742f,'id')['join'](','));}return;}else{logger[_0xf689('0x7')](_0xf689('0x24'),_0x1ea588[_0xf689('0x22')],_0xb2b314['id']);var _0x413ea8={'ListId':_0x352a6b};var _0xe9865=_0x106636[_0xf689('0x25')]&&_0x106636[_0xf689('0x25')]!=='0'?_0x106636[_0xf689('0x25')]:_0xf689('0x12');if(_0x462bf7){logger[_0xf689('0x7')]('[CM][%s][%s]\x20Autocreate\x20enabled',_0x1ea588[_0xf689('0x22')],_0xb2b314['id']);_0x413ea8[_0xe9865]=_[_0xf689('0xd')](_0x1ea588['routeId'])?_0x1ea588['calleridnum']:_0x1ea588[_0xf689('0x14')];if(_[_0xf689('0xd')](_0x1ea588[_0xf689('0x16')])){_0x413ea8['firstName']=_0x1ea588[_0xf689('0x26')]&&_0x1ea588['calleridname']!=='<unknown>'?_0x1ea588['calleridname']:_0xf689('0x27');}else{_0x413ea8['firstName']=_0x1ea588[_0xf689('0x28')]&&_0x1ea588[_0xf689('0x28')]!==_0xf689('0x29')?_0x1ea588[_0xf689('0x28')]:_0xf689('0x27');}return BPromise[_0xf689('0x1f')]()[_0xf689('0x20')](cmContactRpc[_0xf689('0x2a')](_0x413ea8))['then'](function(_0x4ed669){_0x5615db=_0x4ed669;_0x1e742f[_0xf689('0x2b')](_0x4ed669);if(_0x5615db){logger['info']('[CM][%s][%s]\x20Contact\x20created:%s',_0x1ea588[_0xf689('0x22')],_0xb2b314['id'],_0x5615db['id']);}return;});}else{logger['info'](_0xf689('0x2c'),_0x1ea588['uniqueid'],_0xb2b314['id']);_0x413ea8[_0xe9865]=_[_0xf689('0xd')](_0x1ea588['routeId'])?_0x1ea588['calleridnum']:_0x1ea588[_0xf689('0x14')];if(_[_0xf689('0xd')](_0x1ea588[_0xf689('0x16')])){_0x413ea8[_0xf689('0x17')]=_0x1ea588['calleridname']&&_0x1ea588[_0xf689('0x26')]!==_0xf689('0x29')?_0x1ea588['calleridname']:_0xf689('0x27');}else{_0x413ea8[_0xf689('0x17')]=_0x1ea588[_0xf689('0x28')]&&_0x1ea588['destcalleridname']!==_0xf689('0x29')?_0x1ea588[_0xf689('0x28')]:_0xf689('0x27');}_0x5615db=_0x413ea8;_0x1e742f[_0xf689('0x2b')](_0x413ea8);return;}}})['then'](function(){if(_0x1c96df){emit(_0x1ea588['uniqueid'],_0xb2b314,util[_0xf689('0x2d')]('user:%s',_0x1c96df[_0xf689('0x2e')]),util[_0xf689('0x2d')](_0xf689('0x2f'),_0x106636[_0xf689('0x30')][_0xf689('0x31')]()),{'evt':_[_0xf689('0x32')](_0x1ea588,{'autoCreate':_0x462bf7}),'contact':_0x5615db===undefined?{}:_0x5615db,'contacts':_0x1e742f['length']===0x0?undefined:_0x1e742f});}});};
\ No newline at end of file
index b6e41e3..5aa95bd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x251b=['custom:amd','custom:queuecallerabandon','custom:timeout','custom:dialconnect','syncAgentDial','custom:dialend','custom:incomingmessage','custom:outgoingmessage','custom:rejectmessage','custom:offlineMessage','emit','info','stringify','prototype','clone','motionChannel','undefined','interface','checkTriggers','status','checkTrigger','merge','variables','length','action','toLowerCase','contactmanager','motionbar','browser','data1','TemplateId','data2','render','template\x20not\x20found','uri','buildUri','isNil','data3','location','uriLocation','data4','windowWidth','data5','data6','winApplication','winArguments','format','user:%s','name','trigger:%s:%s','trigger:%s','exec','integration','queue','routeId','urlforward','parse','query','search','replace','AllConditions','every','checkConditions','channel','AnyConditions','some','field','chat','ChatWebsiteId','upperFirst','AccountId','operator','value','interaction','message','event','agent','membername','lastevent','substatus','equals','exports','util','url','mustache','ioredis','./urlforward','./integration','./cmContact','./script','../../../config/environment','../../../config/logger','trigger','../ami','redis','defaults','localhost','socket.io-emitter','winapp','triggers','agents','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','custom:agentconnect','syncCustomEvent','bind','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentnoanswer','custom:agentcongestion'];(function(_0x51a60c,_0x42faf4){var _0xfb2fb4=function(_0x9de452){while(--_0x9de452){_0x51a60c['push'](_0x51a60c['shift']());}};_0xfb2fb4(++_0x42faf4);}(_0x251b,0xcc));var _0xb251=function(_0x18afca,_0x4219d9){_0x18afca=_0x18afca-0x0;var _0x11603f=_0x251b[_0x18afca];return _0x11603f;};'use strict';var util=require(_0xb251('0x0'));var _=require('lodash');var url=require(_0xb251('0x1'));var Mustache=require(_0xb251('0x2'));var Redis=require(_0xb251('0x3'));var urlforward=require(_0xb251('0x4'));var integration=require(_0xb251('0x5'));var cmContact=require(_0xb251('0x6'));var script=require(_0xb251('0x7'));var config=require(_0xb251('0x8'));var logger=require(_0xb251('0x9'))(_0xb251('0xa'));var ami=require(_0xb251('0xb'));config[_0xb251('0xc')]=_[_0xb251('0xd')](config[_0xb251('0xc')],{'host':_0xb251('0xe'),'port':0x18eb});var io=require(_0xb251('0xf'))(new Redis(config[_0xb251('0xc')]));var operators={'equals':function(_0x300d4f,_0x14a4b8){return _0x300d4f==_0x14a4b8;},'not_equals':function(_0x413aab,_0x3cf82f){return _0x413aab!=_0x3cf82f;}};var barAndWebActions=['popup','url',_0xb251('0x10')];function Trigger(_0x357a98){this[_0xb251('0x11')]=_0x357a98[_0xb251('0x11')];this[_0xb251('0x12')]=_0x357a98[_0xb251('0x12')];this[_0xb251('0x13')]=_0x357a98[_0xb251('0x13')];this[_0xb251('0x14')]=_0x357a98[_0xb251('0x14')];this[_0xb251('0x15')]=_0x357a98['voiceExtensions'];this[_0xb251('0x16')]=_0x357a98['zendeskAccounts'];this[_0xb251('0x17')]=_0x357a98[_0xb251('0x17')];this[_0xb251('0x18')]=_0x357a98[_0xb251('0x18')];this['sugarcrmAccounts']=_0x357a98[_0xb251('0x19')];this[_0xb251('0x1a')]=_0x357a98[_0xb251('0x1a')];this[_0xb251('0x1b')]=_0x357a98[_0xb251('0x1b')];this[_0xb251('0x1c')]=_0x357a98[_0xb251('0x1c')];this[_0xb251('0x1d')]=_0x357a98[_0xb251('0x1d')];this[_0xb251('0x1e')]=_0x357a98[_0xb251('0x1e')];this[_0xb251('0x1f')]=_0x357a98['freshsalesAccounts'];this['accounts']={'zendesk':this[_0xb251('0x16')],'salesforce':this['salesforceAccounts'],'freshdesk':this[_0xb251('0x17')],'sugarcrm':this[_0xb251('0x19')],'zoho':this[_0xb251('0x1a')],'desk':this[_0xb251('0x1b')],'vtiger':this[_0xb251('0x1c')],'dynamics365':this['dynamics365Accounts'],'freshsales':this['freshsalesAccounts'],'servicenow':this[_0xb251('0x1d')]};ami['on']('custom:agentcalled',this['syncCustomEvent']['bind'](this));ami['on'](_0xb251('0x20'),this[_0xb251('0x21')][_0xb251('0x22')](this));ami['on'](_0xb251('0x23'),this[_0xb251('0x21')][_0xb251('0x22')](this));ami['on'](_0xb251('0x24'),this[_0xb251('0x21')][_0xb251('0x22')](this));ami['on'](_0xb251('0x25'),this[_0xb251('0x21')][_0xb251('0x22')](this));ami['on'](_0xb251('0x26'),this[_0xb251('0x21')]['bind'](this));ami['on']('custom:agentbusy',this[_0xb251('0x21')][_0xb251('0x22')](this));ami['on'](_0xb251('0x27'),this[_0xb251('0x21')][_0xb251('0x22')](this));ami['on']('custom:agentreject',this[_0xb251('0x21')][_0xb251('0x22')](this));ami['on'](_0xb251('0x28'),this['syncCustomEvent'][_0xb251('0x22')](this));ami['on'](_0xb251('0x29'),this['syncCustomEvent']['bind'](this));ami['on'](_0xb251('0x2a'),this[_0xb251('0x21')]['bind'](this));ami['on']('custom:dialbegin',this['syncAgentDial'][_0xb251('0x22')](this));ami['on'](_0xb251('0x2b'),this[_0xb251('0x2c')][_0xb251('0x22')](this));ami['on'](_0xb251('0x2d'),this['syncAgentDial'][_0xb251('0x22')](this));ami['on']('custom:newinteraction',this[_0xb251('0x21')][_0xb251('0x22')](this));ami['on']('custom:closedinteraction',this[_0xb251('0x21')]['bind'](this));ami['on']('custom:substatus',this[_0xb251('0x21')][_0xb251('0x22')](this));ami['on'](_0xb251('0x2e'),this[_0xb251('0x21')][_0xb251('0x22')](this));ami['on'](_0xb251('0x2f'),this[_0xb251('0x21')][_0xb251('0x22')](this));ami['on']('custom:acceptmessage',this[_0xb251('0x21')][_0xb251('0x22')](this));ami['on'](_0xb251('0x30'),this['syncCustomEvent'][_0xb251('0x22')](this));ami['on'](_0xb251('0x31'),this[_0xb251('0x21')][_0xb251('0x22')](this));}Trigger['prototype'][_0xb251('0x32')]=function(_0x5b5371,_0x3dc893,_0x11c07f){logger[_0xb251('0x33')](_0x5b5371,_0x3dc893,JSON[_0xb251('0x34')](_0x11c07f));io['to'](_0x5b5371)['emit'](_0x3dc893,_0x11c07f);};Trigger[_0xb251('0x35')][_0xb251('0x21')]=function(_0x392f31){var _0x5da377=_[_0xb251('0x36')](_0x392f31);if(typeof _0x5da377[_0xb251('0x37')]===_0xb251('0x38')){_0x5da377[_0xb251('0x37')]='voice';}this['checkTriggers'](_0x5da377);};Trigger[_0xb251('0x35')][_0xb251('0x2c')]=function(_0x57c97c){if(this['agents'][_0x57c97c[_0xb251('0x39')]]){this[_0xb251('0x21')](_0x57c97c);}};Trigger[_0xb251('0x35')][_0xb251('0x3a')]=function(_0x3ec1bf){var _0x41af0f;for(var _0x21fa94 in this[_0xb251('0x11')]){if(this[_0xb251('0x11')]['hasOwnProperty'](_0x21fa94)){if(this[_0xb251('0x11')][_0x21fa94][_0xb251('0x3b')]){_0x41af0f=this[_0xb251('0x3c')](this[_0xb251('0x11')][_0x21fa94],_0x3ec1bf);if(_0x41af0f){_[_0xb251('0x3d')](_0x3ec1bf,_0x3ec1bf[_0xb251('0x3e')]);for(var _0x5c6fb4=0x0,_0x3a7ea7,_0x13cb39,_0x10478d;_0x5c6fb4<this[_0xb251('0x11')][_0x21fa94]['Actions'][_0xb251('0x3f')];_0x5c6fb4+=0x1){_0x3a7ea7=this[_0xb251('0x11')][_0x21fa94]['Actions'][_0x5c6fb4];if(this[_0xb251('0x12')][_0x3ec1bf[_0xb251('0x39')]]){switch(_0x3a7ea7[_0xb251('0x40')][_0xb251('0x41')]()){case _0xb251('0x42'):break;case _0xb251('0x43'):case _0xb251('0x44'):var _0x10cef1={};switch(barAndWebActions[_0x3a7ea7[_0xb251('0x45')]]){case'popup':_0x10cef1[_0xb251('0x46')]=_0x3a7ea7[_0xb251('0x47')];_0x10cef1['html']=this[_0xb251('0x14')][_0x3a7ea7[_0xb251('0x47')]]?Mustache[_0xb251('0x48')](this[_0xb251('0x14')][_0x3a7ea7[_0xb251('0x47')]]['html'],_0x3ec1bf):_0xb251('0x49');break;case _0xb251('0x1'):_0x10cef1[_0xb251('0x4a')]=this[_0xb251('0x4b')](_0x3a7ea7[_0xb251('0x47')],_0x3ec1bf,_[_0xb251('0x4c')](_0x3a7ea7[_0xb251('0x4d')])?!![]:parseInt(_0x3a7ea7[_0xb251('0x4d')],0xa));if(_[_0xb251('0x4c')](_0x3a7ea7['data4'])){_0x10cef1[_0xb251('0x4e')]='0';}else{_0x10cef1[_0xb251('0x4f')]=_0x3a7ea7[_0xb251('0x50')];_0x10cef1[_0xb251('0x51')]=_[_0xb251('0x4c')](_0x3a7ea7[_0xb251('0x52')])?'800':_0x3a7ea7[_0xb251('0x52')];_0x10cef1['windowHeight']=_[_0xb251('0x4c')](_0x3a7ea7[_0xb251('0x53')])?'600':_0x3a7ea7[_0xb251('0x53')];}break;case'winapp':_0x10cef1[_0xb251('0x54')]=_0x3a7ea7[_0xb251('0x47')]?Mustache[_0xb251('0x48')](_0x3a7ea7[_0xb251('0x47')],_0x3ec1bf):'';_0x10cef1[_0xb251('0x55')]=_0x3a7ea7[_0xb251('0x4d')]?Mustache[_0xb251('0x48')](_0x3a7ea7[_0xb251('0x4d')],_0x3ec1bf):'';break;}this[_0xb251('0x32')](util[_0xb251('0x56')](_0xb251('0x57'),this['agents'][_0x3ec1bf[_0xb251('0x39')]][_0xb251('0x58')]),util[_0xb251('0x56')](_0xb251('0x59'),_0x3a7ea7[_0xb251('0x40')][_0xb251('0x41')](),barAndWebActions[_0x3a7ea7[_0xb251('0x45')]]),_[_0xb251('0x3d')](_0x10cef1,_0x3ec1bf));break;case'jscripty':this[_0xb251('0x32')](util[_0xb251('0x56')](_0xb251('0x57'),this[_0xb251('0x12')][_0x3ec1bf['interface']][_0xb251('0x58')]),util['format'](_0xb251('0x5a'),_0x3a7ea7[_0xb251('0x40')][_0xb251('0x41')]()),_['merge']({'ProjectId':parseInt(_0x3a7ea7[_0xb251('0x45')],0xa)},_0x3ec1bf));break;default:this[_0xb251('0x32')](util[_0xb251('0x56')](_0xb251('0x57'),this['agents'][_0x3ec1bf[_0xb251('0x39')]][_0xb251('0x58')]),util['format'](_0xb251('0x5a'),_0x3a7ea7[_0xb251('0x40')]['toLowerCase']()),_[_0xb251('0x3d')]({},_0x3a7ea7,_0x3ec1bf));}}switch(_0x3a7ea7[_0xb251('0x40')][_0xb251('0x41')]()){case _0xb251('0x42'):cmContact[_0xb251('0x5b')](this[_0xb251('0x12')][_0x3ec1bf['interface']],this[_0xb251('0x11')][_0x21fa94],_0x3a7ea7,_0x3ec1bf);break;case _0xb251('0x5c'):integration['exec'](_0x3a7ea7,_0x3ec1bf,this['accounts'],this[_0xb251('0x12')][_0x3ec1bf['interface']],this[_0xb251('0x13')][_0x3ec1bf[_0xb251('0x5d')]],this[_0xb251('0x15')][_0x3ec1bf[_0xb251('0x5e')]]);break;case _0xb251('0x5f'):urlforward[_0xb251('0x5b')](_0x3a7ea7,_0x3ec1bf);break;case'script':script['exec'](_0x3a7ea7,_0x3ec1bf);break;}}}}}}};Trigger[_0xb251('0x35')]['buildUri']=function(_0x45403c,_0x18a984,_0x4bcdc9){var _0x4fbf54=url[_0xb251('0x60')](Mustache[_0xb251('0x48')](_0x45403c,_0x18a984),!![]);if(_0x4bcdc9){_['merge'](_0x4fbf54[_0xb251('0x61')],_0x18a984);}delete _0x4fbf54[_0xb251('0x62')];var _0x4ebf16=url[_0xb251('0x56')](_0x4fbf54);_0x4ebf16=_0x4ebf16[_0xb251('0x63')](/\/\?/g,'?');return _0x4ebf16;};Trigger[_0xb251('0x35')][_0xb251('0x3c')]=function(_0x534611,_0x41beb9){var _0x34149a=!![];var _0x4d0d34=!![];var _0x4e05ff=![];if(_0x534611['channel']===_0x41beb9[_0xb251('0x37')]){_0x4e05ff=!![];}if(_0x534611[_0xb251('0x64')][_0xb251('0x3f')]){_0x34149a=_[_0xb251('0x65')](_0x534611[_0xb251('0x64')],this[_0xb251('0x66')](_0x41beb9,_0x534611[_0xb251('0x67')]));}if(_0x534611[_0xb251('0x68')]['length']){_0x4d0d34=_[_0xb251('0x69')](_0x534611[_0xb251('0x68')],this['checkConditions'](_0x41beb9,_0x534611[_0xb251('0x67')]));}return _0x4e05ff&&_0x34149a&&_0x4d0d34;};Trigger[_0xb251('0x35')][_0xb251('0x66')]=function(_0x199231,_0x1a0c3d){return function(_0x3041dc){switch(_0x3041dc[_0xb251('0x6a')]){case'account':if(_0x199231['channel']===_0x1a0c3d){if(_0x1a0c3d===_0xb251('0x6b')){return _0x199231[_0xb251('0x6c')]?operators[_0x3041dc['operator']](Number(_0x3041dc['value']),_0x199231[_0xb251('0x6c')]):![];}else{return _0x199231[_[_0xb251('0x6d')](_0x1a0c3d)+_0xb251('0x6e')]?operators[_0x3041dc[_0xb251('0x6f')]](Number(_0x3041dc[_0xb251('0x70')]),_0x199231[_[_0xb251('0x6d')](_0x1a0c3d)+_0xb251('0x6e')]):![];}}break;case _0xb251('0x71'):case _0xb251('0x72'):if(_0x199231['channel']===_0x1a0c3d){return _0x199231[_0xb251('0x73')]?operators[_0x3041dc[_0xb251('0x6f')]](_0x3041dc[_0xb251('0x70')],_0x199231['event']):![];}break;case _0xb251('0x5d'):return _0x199231[_0xb251('0x5d')]?operators[_0x3041dc['operator']](_0x3041dc[_0xb251('0x70')],_0x199231[_0xb251('0x5d')]):![];case _0xb251('0x74'):return _0x199231[_0xb251('0x75')]?operators[_0x3041dc[_0xb251('0x6f')]](_0x3041dc[_0xb251('0x70')],_0x199231[_0xb251('0x75')]):![];case _0xb251('0x76'):return _0x199231[_0xb251('0x76')]?operators[_0x3041dc[_0xb251('0x6f')]](_0x3041dc[_0xb251('0x70')],_0x199231[_0xb251('0x76')]):![];case _0xb251('0x5e'):return _0x199231[_0xb251('0x5e')]?operators[_0x3041dc['operator']](_0x3041dc[_0xb251('0x70')],_0x199231[_0xb251('0x5e')]):![];case'mailSubstatus':if(_0x3041dc[_0xb251('0x70')]==='null')_0x3041dc[_0xb251('0x70')]=null;return typeof _0x199231[_0xb251('0x77')]!==_0xb251('0x38')?operators[_0x3041dc[_0xb251('0x6f')]](_0x3041dc['value'],_0x199231[_0xb251('0x77')]):![];case'offlineMessage':if(_0x199231[_0xb251('0x67')]===_0x1a0c3d){return _0x3041dc['value']==='created'&&_0x3041dc[_0xb251('0x6f')]===_0xb251('0x78')?!![]:![];}break;}return![];};};module[_0xb251('0x79')]=Trigger;
\ No newline at end of file
+var _0xf0f1=['channel','AnyConditions','some','field','account','chat','ChatWebsiteId','operator','value','upperFirst','AccountId','message','event','queue','membername','lastevent','mailSubstatus','null','substatus','offlineMessage','created','exports','lodash','url','mustache','./integration','./script','../../../config/logger','trigger','../ami','defaults','redis','localhost','socket.io-emitter','popup','triggers','voiceQueues','templates','voiceExtensions','zendeskAccounts','freshdeskAccounts','salesforceAccounts','sugarcrmAccounts','zohoAccounts','deskAccounts','vtigerAccounts','servicenowAccounts','dynamics365Accounts','freshsalesAccounts','custom:agentcalled','syncCustomEvent','bind','custom:agentconnect','custom:agentringnoanswer','custom:agentcomplete','custom:agentnosuchnumber','custom:agentbusy','custom:agentcongestion','custom:agentreject','custom:queuecallerabandon','custom:timeout','custom:dialbegin','custom:dialconnect','syncAgentDial','custom:newinteraction','custom:closedinteraction','custom:substatus','custom:incomingmessage','custom:offlineMessage','prototype','emit','info','stringify','clone','motionChannel','undefined','voice','checkTriggers','hasOwnProperty','status','checkTrigger','merge','Actions','agents','interface','action','toLowerCase','contactmanager','motionbar','browser','data1','TemplateId','data2','html','template\x20not\x20found','uri','buildUri','data3','isNil','location','uriLocation','data4','data5','800','windowHeight','data6','600','winapp','winApplication','render','winArguments','format','user:%s','name','trigger:%s:%s','jscripty','exec','integration','routeId','script','search','AllConditions','length','every','checkConditions'];(function(_0x38c9bf,_0x17fa64){var _0x352873=function(_0xb2b3e5){while(--_0xb2b3e5){_0x38c9bf['push'](_0x38c9bf['shift']());}};_0x352873(++_0x17fa64);}(_0xf0f1,0x110));var _0x1f0f=function(_0x261522,_0x1adc1f){_0x261522=_0x261522-0x0;var _0x98a25a=_0xf0f1[_0x261522];return _0x98a25a;};'use strict';var util=require('util');var _=require(_0x1f0f('0x0'));var url=require(_0x1f0f('0x1'));var Mustache=require(_0x1f0f('0x2'));var Redis=require('ioredis');var urlforward=require('./urlforward');var integration=require(_0x1f0f('0x3'));var cmContact=require('./cmContact');var script=require(_0x1f0f('0x4'));var config=require('../../../config/environment');var logger=require(_0x1f0f('0x5'))(_0x1f0f('0x6'));var ami=require(_0x1f0f('0x7'));config['redis']=_[_0x1f0f('0x8')](config[_0x1f0f('0x9')],{'host':_0x1f0f('0xa'),'port':0x18eb});var io=require(_0x1f0f('0xb'))(new Redis(config[_0x1f0f('0x9')]));var operators={'equals':function(_0x424300,_0x3a8f03){return _0x424300==_0x3a8f03;},'not_equals':function(_0x4ed5fb,_0x54cd2c){return _0x4ed5fb!=_0x54cd2c;}};var barAndWebActions=[_0x1f0f('0xc'),_0x1f0f('0x1'),'winapp'];function Trigger(_0x5f6eb8){this[_0x1f0f('0xd')]=_0x5f6eb8[_0x1f0f('0xd')];this['agents']=_0x5f6eb8['agents'];this[_0x1f0f('0xe')]=_0x5f6eb8['voiceQueues'];this[_0x1f0f('0xf')]=_0x5f6eb8[_0x1f0f('0xf')];this[_0x1f0f('0x10')]=_0x5f6eb8[_0x1f0f('0x10')];this[_0x1f0f('0x11')]=_0x5f6eb8[_0x1f0f('0x11')];this[_0x1f0f('0x12')]=_0x5f6eb8[_0x1f0f('0x12')];this[_0x1f0f('0x13')]=_0x5f6eb8[_0x1f0f('0x13')];this[_0x1f0f('0x14')]=_0x5f6eb8[_0x1f0f('0x14')];this[_0x1f0f('0x15')]=_0x5f6eb8[_0x1f0f('0x15')];this[_0x1f0f('0x16')]=_0x5f6eb8['deskAccounts'];this[_0x1f0f('0x17')]=_0x5f6eb8[_0x1f0f('0x17')];this[_0x1f0f('0x18')]=_0x5f6eb8[_0x1f0f('0x18')];this[_0x1f0f('0x19')]=_0x5f6eb8[_0x1f0f('0x19')];this[_0x1f0f('0x1a')]=_0x5f6eb8[_0x1f0f('0x1a')];this['accounts']={'zendesk':this['zendeskAccounts'],'salesforce':this[_0x1f0f('0x13')],'freshdesk':this[_0x1f0f('0x12')],'sugarcrm':this['sugarcrmAccounts'],'zoho':this['zohoAccounts'],'desk':this[_0x1f0f('0x16')],'vtiger':this[_0x1f0f('0x17')],'dynamics365':this[_0x1f0f('0x19')],'freshsales':this['freshsalesAccounts'],'servicenow':this[_0x1f0f('0x18')]};ami['on'](_0x1f0f('0x1b'),this[_0x1f0f('0x1c')][_0x1f0f('0x1d')](this));ami['on'](_0x1f0f('0x1e'),this[_0x1f0f('0x1c')][_0x1f0f('0x1d')](this));ami['on'](_0x1f0f('0x1f'),this[_0x1f0f('0x1c')][_0x1f0f('0x1d')](this));ami['on'](_0x1f0f('0x20'),this[_0x1f0f('0x1c')]['bind'](this));ami['on'](_0x1f0f('0x21'),this[_0x1f0f('0x1c')][_0x1f0f('0x1d')](this));ami['on']('custom:agentnoanswer',this[_0x1f0f('0x1c')][_0x1f0f('0x1d')](this));ami['on'](_0x1f0f('0x22'),this[_0x1f0f('0x1c')][_0x1f0f('0x1d')](this));ami['on'](_0x1f0f('0x23'),this[_0x1f0f('0x1c')][_0x1f0f('0x1d')](this));ami['on'](_0x1f0f('0x24'),this[_0x1f0f('0x1c')][_0x1f0f('0x1d')](this));ami['on']('custom:amd',this[_0x1f0f('0x1c')][_0x1f0f('0x1d')](this));ami['on'](_0x1f0f('0x25'),this[_0x1f0f('0x1c')][_0x1f0f('0x1d')](this));ami['on'](_0x1f0f('0x26'),this[_0x1f0f('0x1c')][_0x1f0f('0x1d')](this));ami['on'](_0x1f0f('0x27'),this['syncAgentDial'][_0x1f0f('0x1d')](this));ami['on'](_0x1f0f('0x28'),this[_0x1f0f('0x29')][_0x1f0f('0x1d')](this));ami['on']('custom:dialend',this[_0x1f0f('0x29')][_0x1f0f('0x1d')](this));ami['on'](_0x1f0f('0x2a'),this[_0x1f0f('0x1c')][_0x1f0f('0x1d')](this));ami['on'](_0x1f0f('0x2b'),this['syncCustomEvent'][_0x1f0f('0x1d')](this));ami['on'](_0x1f0f('0x2c'),this[_0x1f0f('0x1c')][_0x1f0f('0x1d')](this));ami['on'](_0x1f0f('0x2d'),this['syncCustomEvent'][_0x1f0f('0x1d')](this));ami['on']('custom:outgoingmessage',this[_0x1f0f('0x1c')][_0x1f0f('0x1d')](this));ami['on']('custom:acceptmessage',this['syncCustomEvent']['bind'](this));ami['on']('custom:rejectmessage',this[_0x1f0f('0x1c')][_0x1f0f('0x1d')](this));ami['on'](_0x1f0f('0x2e'),this[_0x1f0f('0x1c')]['bind'](this));}Trigger[_0x1f0f('0x2f')][_0x1f0f('0x30')]=function(_0x3a4786,_0x90730,_0x4a222a){logger[_0x1f0f('0x31')](_0x3a4786,_0x90730,JSON[_0x1f0f('0x32')](_0x4a222a));io['to'](_0x3a4786)[_0x1f0f('0x30')](_0x90730,_0x4a222a);};Trigger[_0x1f0f('0x2f')][_0x1f0f('0x1c')]=function(_0x1d4498){var _0x1ba968=_[_0x1f0f('0x33')](_0x1d4498);if(typeof _0x1ba968[_0x1f0f('0x34')]===_0x1f0f('0x35')){_0x1ba968['motionChannel']=_0x1f0f('0x36');}this[_0x1f0f('0x37')](_0x1ba968);};Trigger['prototype'][_0x1f0f('0x29')]=function(_0x423ef0){if(this['agents'][_0x423ef0['interface']]){this[_0x1f0f('0x1c')](_0x423ef0);}};Trigger[_0x1f0f('0x2f')]['checkTriggers']=function(_0x330386){var _0x14f7a1;for(var _0x3d0fe8 in this[_0x1f0f('0xd')]){if(this['triggers'][_0x1f0f('0x38')](_0x3d0fe8)){if(this[_0x1f0f('0xd')][_0x3d0fe8][_0x1f0f('0x39')]){_0x14f7a1=this[_0x1f0f('0x3a')](this[_0x1f0f('0xd')][_0x3d0fe8],_0x330386);if(_0x14f7a1){_[_0x1f0f('0x3b')](_0x330386,_0x330386['variables']);for(var _0x5ce751=0x0,_0x5d2fc5,_0x1509d3,_0x48efc8;_0x5ce751<this[_0x1f0f('0xd')][_0x3d0fe8][_0x1f0f('0x3c')]['length'];_0x5ce751+=0x1){_0x5d2fc5=this[_0x1f0f('0xd')][_0x3d0fe8]['Actions'][_0x5ce751];if(this[_0x1f0f('0x3d')][_0x330386[_0x1f0f('0x3e')]]){switch(_0x5d2fc5[_0x1f0f('0x3f')][_0x1f0f('0x40')]()){case _0x1f0f('0x41'):break;case _0x1f0f('0x42'):case _0x1f0f('0x43'):var _0x2383ba={};switch(barAndWebActions[_0x5d2fc5[_0x1f0f('0x44')]]){case'popup':_0x2383ba[_0x1f0f('0x45')]=_0x5d2fc5[_0x1f0f('0x46')];_0x2383ba[_0x1f0f('0x47')]=this[_0x1f0f('0xf')][_0x5d2fc5[_0x1f0f('0x46')]]?Mustache['render'](this['templates'][_0x5d2fc5['data2']]['html'],_0x330386):_0x1f0f('0x48');break;case'url':_0x2383ba[_0x1f0f('0x49')]=this[_0x1f0f('0x4a')](_0x5d2fc5[_0x1f0f('0x46')],_0x330386,_['isNil'](_0x5d2fc5[_0x1f0f('0x4b')])?!![]:parseInt(_0x5d2fc5[_0x1f0f('0x4b')],0xa));if(_[_0x1f0f('0x4c')](_0x5d2fc5['data4'])){_0x2383ba[_0x1f0f('0x4d')]='0';}else{_0x2383ba[_0x1f0f('0x4e')]=_0x5d2fc5[_0x1f0f('0x4f')];_0x2383ba['windowWidth']=_[_0x1f0f('0x4c')](_0x5d2fc5[_0x1f0f('0x50')])?_0x1f0f('0x51'):_0x5d2fc5[_0x1f0f('0x50')];_0x2383ba[_0x1f0f('0x52')]=_[_0x1f0f('0x4c')](_0x5d2fc5[_0x1f0f('0x53')])?_0x1f0f('0x54'):_0x5d2fc5[_0x1f0f('0x53')];}break;case _0x1f0f('0x55'):_0x2383ba[_0x1f0f('0x56')]=_0x5d2fc5[_0x1f0f('0x46')]?Mustache[_0x1f0f('0x57')](_0x5d2fc5[_0x1f0f('0x46')],_0x330386):'';_0x2383ba[_0x1f0f('0x58')]=_0x5d2fc5[_0x1f0f('0x4b')]?Mustache['render'](_0x5d2fc5['data3'],_0x330386):'';break;}this[_0x1f0f('0x30')](util[_0x1f0f('0x59')](_0x1f0f('0x5a'),this[_0x1f0f('0x3d')][_0x330386[_0x1f0f('0x3e')]][_0x1f0f('0x5b')]),util[_0x1f0f('0x59')](_0x1f0f('0x5c'),_0x5d2fc5[_0x1f0f('0x3f')][_0x1f0f('0x40')](),barAndWebActions[_0x5d2fc5[_0x1f0f('0x44')]]),_[_0x1f0f('0x3b')](_0x2383ba,_0x330386));break;case _0x1f0f('0x5d'):this[_0x1f0f('0x30')](util[_0x1f0f('0x59')](_0x1f0f('0x5a'),this[_0x1f0f('0x3d')][_0x330386['interface']][_0x1f0f('0x5b')]),util['format']('trigger:%s',_0x5d2fc5['action'][_0x1f0f('0x40')]()),_[_0x1f0f('0x3b')]({'ProjectId':parseInt(_0x5d2fc5[_0x1f0f('0x44')],0xa)},_0x330386));break;default:this[_0x1f0f('0x30')](util[_0x1f0f('0x59')](_0x1f0f('0x5a'),this[_0x1f0f('0x3d')][_0x330386[_0x1f0f('0x3e')]][_0x1f0f('0x5b')]),util['format']('trigger:%s',_0x5d2fc5[_0x1f0f('0x3f')][_0x1f0f('0x40')]()),_[_0x1f0f('0x3b')]({},_0x5d2fc5,_0x330386));}}switch(_0x5d2fc5[_0x1f0f('0x3f')][_0x1f0f('0x40')]()){case'contactmanager':cmContact[_0x1f0f('0x5e')](this[_0x1f0f('0x3d')][_0x330386[_0x1f0f('0x3e')]],this[_0x1f0f('0xd')][_0x3d0fe8],_0x5d2fc5,_0x330386);break;case _0x1f0f('0x5f'):integration[_0x1f0f('0x5e')](_0x5d2fc5,_0x330386,this['accounts'],this[_0x1f0f('0x3d')][_0x330386['interface']],this[_0x1f0f('0xe')][_0x330386['queue']],this[_0x1f0f('0x10')][_0x330386[_0x1f0f('0x60')]]);break;case'urlforward':urlforward[_0x1f0f('0x5e')](_0x5d2fc5,_0x330386);break;case _0x1f0f('0x61'):script[_0x1f0f('0x5e')](_0x5d2fc5,_0x330386);break;}}}}}}};Trigger[_0x1f0f('0x2f')][_0x1f0f('0x4a')]=function(_0x4afb01,_0x4b0e91,_0x10b0f0){var _0x2c916b=url['parse'](Mustache['render'](_0x4afb01,_0x4b0e91),!![]);if(_0x10b0f0){_[_0x1f0f('0x3b')](_0x2c916b['query'],_0x4b0e91);}delete _0x2c916b[_0x1f0f('0x62')];var _0x7b7d60=url[_0x1f0f('0x59')](_0x2c916b);_0x7b7d60=_0x7b7d60['replace'](/\/\?/g,'?');return _0x7b7d60;};Trigger[_0x1f0f('0x2f')]['checkTrigger']=function(_0x4defd3,_0x59f621){var _0x4a1cc4=!![];var _0x47db67=!![];var _0x4746ab=![];if(_0x4defd3['channel']===_0x59f621[_0x1f0f('0x34')]){_0x4746ab=!![];}if(_0x4defd3[_0x1f0f('0x63')][_0x1f0f('0x64')]){_0x4a1cc4=_[_0x1f0f('0x65')](_0x4defd3[_0x1f0f('0x63')],this[_0x1f0f('0x66')](_0x59f621,_0x4defd3[_0x1f0f('0x67')]));}if(_0x4defd3[_0x1f0f('0x68')][_0x1f0f('0x64')]){_0x47db67=_[_0x1f0f('0x69')](_0x4defd3[_0x1f0f('0x68')],this[_0x1f0f('0x66')](_0x59f621,_0x4defd3['channel']));}return _0x4746ab&&_0x4a1cc4&&_0x47db67;};Trigger[_0x1f0f('0x2f')][_0x1f0f('0x66')]=function(_0x5a0592,_0x4db96e){return function(_0x33042a){switch(_0x33042a[_0x1f0f('0x6a')]){case _0x1f0f('0x6b'):if(_0x5a0592['channel']===_0x4db96e){if(_0x4db96e===_0x1f0f('0x6c')){return _0x5a0592[_0x1f0f('0x6d')]?operators[_0x33042a[_0x1f0f('0x6e')]](Number(_0x33042a[_0x1f0f('0x6f')]),_0x5a0592[_0x1f0f('0x6d')]):![];}else{return _0x5a0592[_[_0x1f0f('0x70')](_0x4db96e)+'AccountId']?operators[_0x33042a[_0x1f0f('0x6e')]](Number(_0x33042a[_0x1f0f('0x6f')]),_0x5a0592[_[_0x1f0f('0x70')](_0x4db96e)+_0x1f0f('0x71')]):![];}}break;case'interaction':case _0x1f0f('0x72'):if(_0x5a0592['channel']===_0x4db96e){return _0x5a0592['event']?operators[_0x33042a['operator']](_0x33042a[_0x1f0f('0x6f')],_0x5a0592[_0x1f0f('0x73')]):![];}break;case _0x1f0f('0x74'):return _0x5a0592[_0x1f0f('0x74')]?operators[_0x33042a[_0x1f0f('0x6e')]](_0x33042a[_0x1f0f('0x6f')],_0x5a0592[_0x1f0f('0x74')]):![];case'agent':return _0x5a0592[_0x1f0f('0x75')]?operators[_0x33042a[_0x1f0f('0x6e')]](_0x33042a[_0x1f0f('0x6f')],_0x5a0592[_0x1f0f('0x75')]):![];case _0x1f0f('0x76'):return _0x5a0592[_0x1f0f('0x76')]?operators[_0x33042a['operator']](_0x33042a[_0x1f0f('0x6f')],_0x5a0592[_0x1f0f('0x76')]):![];case _0x1f0f('0x60'):return _0x5a0592[_0x1f0f('0x60')]?operators[_0x33042a[_0x1f0f('0x6e')]](_0x33042a['value'],_0x5a0592['routeId']):![];case _0x1f0f('0x77'):if(_0x33042a[_0x1f0f('0x6f')]===_0x1f0f('0x78'))_0x33042a['value']=null;return typeof _0x5a0592[_0x1f0f('0x79')]!=='undefined'?operators[_0x33042a[_0x1f0f('0x6e')]](_0x33042a['value'],_0x5a0592[_0x1f0f('0x79')]):![];case _0x1f0f('0x7a'):if(_0x5a0592[_0x1f0f('0x67')]===_0x4db96e){return _0x33042a[_0x1f0f('0x6f')]===_0x1f0f('0x7b')&&_0x33042a[_0x1f0f('0x6e')]==='equals'?!![]:![];}break;}return![];};};module[_0x1f0f('0x7c')]=Trigger;
\ No newline at end of file
index c33bce9..72c5e68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x814b=['calleridname','toUpperCase','lodash','request-promise','md5','util','ioredis','./util','../../../../config/logger','desk','redis','defaults','localhost','emit','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','%s/users','then','total_entries','find','_embedded','entries','Agent\x20found!','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','remoteUri','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','debug','[HTTP]','%s:%s','authType','token','username','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','work','map','length','string','nameField','toLowerCase','content','picklist','idField','customField','custom_fields','type','variableName','customVariable','Variable','name','priority','merge','getString','Subjects','xCALLY','CTI','concat','Tags','Descriptions','/api/v2/users/%d','user','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','Authorization','email','The\x20User\x20ID\x20is:','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','https://xcally.desk.com/web/agent/case/%d','catch','error','stringify','recordingFormat','none','[OUTBOUND]','destcalleridnum','Displaying\x20ticket\x20to\x20agent...','unmanaged','lastevent'];(function(_0x29c51d,_0xa4d8ff){var _0x4555c4=function(_0x196cc9){while(--_0x196cc9){_0x29c51d['push'](_0x29c51d['shift']());}};_0x4555c4(++_0xa4d8ff);}(_0x814b,0x1a2));var _0xb814=function(_0x1314d4,_0xb0b16d){_0x1314d4=_0x1314d4-0x0;var _0x584ba5=_0x814b[_0x1314d4];return _0x584ba5;};'use strict';var _=require(_0xb814('0x0'));var rp=require(_0xb814('0x1'));var md5=require(_0xb814('0x2'));var util=require(_0xb814('0x3'));var Redis=require(_0xb814('0x4'));var intUtil=require(_0xb814('0x5'));var config=require('../../../../config/environment');var logger=require(_0xb814('0x6'))(_0xb814('0x7'));config[_0xb814('0x8')]=_[_0xb814('0x9')](config[_0xb814('0x8')],{'host':_0xb814('0xa'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xb814('0x8')]));function emit(_0x2e6272,_0x5c8539,_0x271af9){io['to'](_0x2e6272)[_0xb814('0xb')](_0x5c8539,_0x271af9);}var headers={'Content-Type':_0xb814('0xc'),'Accept':_0xb814('0xc')};function getUser(_0x1fea33,_0x21d4a5){if(intUtil[_0xb814('0xd')](_0x21d4a5)===!![]){logger[_0xb814('0xe')](_0xb814('0xf'),_0x21d4a5);return request({'uri':util[_0xb814('0x10')](_0xb814('0x11'),_0x1fea33['remoteUri'])})[_0xb814('0x12')](function(_0x56278f){if(_0x56278f[_0xb814('0x13')]){return _[_0xb814('0x14')](_0x56278f[_0xb814('0x15')][_0xb814('0x16')],{'email':_0x21d4a5});}})[_0xb814('0x12')](function(_0x3bde14){if(_0x3bde14){logger[_0xb814('0xe')](_0xb814('0x17'));return _0x3bde14;}else{logger[_0xb814('0xe')](_0xb814('0x18'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}});}else{logger[_0xb814('0xe')](_0xb814('0x1b'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x19'),_0x1fea33[_0xb814('0x1a')])});}}function request(_0x125ce2){logger[_0xb814('0x1c')](_0xb814('0x1d'),JSON['stringify'](_0x125ce2));return rp(_[_0xb814('0x9')](_0x125ce2,{'method':'GET','headers':headers,'json':!![]}));}function getAuth(_0x270598){var _0xfac75b;if(_0x270598['authType']==='basic'){_0xfac75b=util['format'](_0xb814('0x1e'),_0x270598['username'],_0x270598['password']);}else if(_0x270598[_0xb814('0x1f')]===_0xb814('0x20')){_0xfac75b=util[_0xb814('0x10')]('%s/token:%s',_0x270598[_0xb814('0x21')],_0x270598['token']);}return util[_0xb814('0x10')](_0xb814('0x22'),new Buffer(_0xfac75b)[_0xb814('0x23')](_0xb814('0x24')));}function getEndUser(_0x27352e,_0x2bd039,_0x1f5d40){logger['info'](_0xb814('0x25'),_0x1f5d40);return request({'uri':util['format'](_0xb814('0x26'),_0x27352e[_0xb814('0x1a')]),'qs':{'phone':_0x1f5d40}})[_0xb814('0x12')](function(_0x208927){if(_0x208927[_0xb814('0x13')]){logger[_0xb814('0xe')](_0xb814('0x27'));return _0x208927['_embedded'][_0xb814('0x16')][0x0];}else{logger[_0xb814('0xe')](_0xb814('0x28'));return request({'uri':util[_0xb814('0x10')](_0xb814('0x29'),_0x27352e[_0xb814('0x1a')]),'method':_0xb814('0x2a'),'body':{'first_name':_0x2bd039,'title':_0x2bd039,'phone_numbers':[{'type':_0xb814('0x2b'),'value':_0x1f5d40}]}});}});}function getTags(_0x5a6291,_0x271aa8){var _0x328a08=[];if(_0x5a6291&&_0x5a6291['length']>0x0){_0x328a08=_[_0xb814('0x2c')](_0x5a6291,_0x271aa8);}return _0x328a08;}function getCustomFields(_0x37d24d,_0x530744){var _0x499f22=[];var _0x20577b={'custom_fields':{}};if(_0x37d24d[_0xb814('0x2d')]>0x0){_['forEach'](_0x37d24d,function(_0x338a28){if(_['includes']([_0xb814('0x2e'),'picklist'],_0x338a28['type'])&&_0x338a28[_0xb814('0x2f')]&&!_0x338a28['customField']){_0x20577b[_0x338a28[_0xb814('0x2f')][_0xb814('0x30')]()]=_0x338a28[_0xb814('0x31')]['toString']();}else if(_['includes']([_0xb814('0x2e'),_0xb814('0x32')],_0x338a28['type'])&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x338a28[_0xb814('0x31')][_0xb814('0x23')]();}else if(_0x338a28[_0xb814('0x36')]==='variable'&&_0x338a28[_0xb814('0x37')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28[_0xb814('0x34')]){_0x530744[_0x338a28[_0xb814('0x37')]]&&(_0x20577b[_0xb814('0x35')][_0x338a28['idField']]=_0x530744[_0x338a28[_0xb814('0x37')]]['toString']());}else if(_0x338a28[_0xb814('0x36')]===_0xb814('0x38')&&_0x338a28[_0xb814('0x39')]&&_0x338a28['Variable'][_0xb814('0x3a')]&&_0x338a28[_0xb814('0x33')]&&_0x338a28['customField']){_0x530744[_0x338a28[_0xb814('0x39')][_0xb814('0x3a')][_0xb814('0x30')]()]&&(_0x20577b[_0xb814('0x35')][_0x338a28[_0xb814('0x33')]]=_0x530744[_0x338a28[_0xb814('0x39')]['name'][_0xb814('0x30')]()]['toString']());}});}if(_0x20577b[_0xb814('0x3b')]){_0x20577b['priority']=Number(_0x20577b[_0xb814('0x3b')]);}return _0x20577b;}function getTicket(_0x4b9233,_0x2f8a2e,_0x26675a,_0x54a7fb,_0x4d308a){logger['info']('Creating\x20new\x20ticket...');var _0x17549e=_[_0xb814('0x3c')]({'subject':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x3e')],_0x4d308a,'\x20'),'type':'phone','status':'new','labels':[_0xb814('0x3f'),'Motion',_0xb814('0x40')][_0xb814('0x41')](getTags(_0x54a7fb[_0xb814('0x42')],_0xb814('0x3a'))),'description':intUtil[_0xb814('0x3d')](_0x54a7fb[_0xb814('0x43')],_0x4d308a,'\x0a'),'_links':{'assigned_user':{'href':util[_0xb814('0x10')](_0xb814('0x44'),_0x2f8a2e['id']),'class':_0xb814('0x45')}},'message':{'direction':'in','body':intUtil['getString'](_0x54a7fb['Descriptions'],_0x4d308a,'\x0a')}},getCustomFields(_0x54a7fb['Fields'],_0x4d308a));return request({'uri':util[_0xb814('0x10')]('%s/customers/%d/cases',_0x4b9233[_0xb814('0x1a')],_0x26675a['id']),'method':'POST','body':_0x17549e});}exports[_0xb814('0x46')]=function(_0x44ff56,_0x9ef639,_0x2e97cc,_0x4fae23,_0x30fc57,_0x15f01a){var _0x2b23c7,_0x22cf27;_0x15f01a[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x15f01a['remoteUri']);_0x15f01a[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x15f01a[_0xb814('0x48')]);if(_0x30fc57&&_0x30fc57[_0xb814('0x49')]){logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x4b'));_0x9ef639['recordingURL']=util['format'](_0xb814('0x4c'),_0x15f01a[_0xb814('0x48')],_0x9ef639[_0xb814('0x4d')],md5(_0x9ef639[_0xb814('0x4d')]));}else{_0x9ef639[_0xb814('0x4e')]='';}headers[_0xb814('0x4f')]=getAuth(_0x15f01a);return getUser(_0x15f01a,_0x4fae23[_0xb814('0x50')])[_0xb814('0x12')](function(_0x2eb9b6){_0x2b23c7=_0x2eb9b6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x2b23c7['id']);return getEndUser(_0x15f01a,_0x9ef639['calleridname'],_0x9ef639[_0xb814('0x52')]);})[_0xb814('0x12')](function(_0x4a76bb){_0x22cf27=_0x4a76bb;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x22cf27['id']);return getTicket(_0x15f01a,_0x2b23c7,_0x22cf27,_0x2e97cc,_0x9ef639);})[_0xb814('0x12')](function(_0x37866f){if(_0x37866f){logger[_0xb814('0xe')](_0xb814('0x53'));logger[_0xb814('0xe')](_0xb814('0x54'),_0x37866f['id']);switch(_0x15f01a[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),'Displaying\x20ticket\x20to\x20agent...');emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0x37866f['id']});break;case _0xb814('0x58'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util['format'](_0xb814('0x56'),_0x4fae23[_0xb814('0x3a')]),_0xb814('0x5a'),{'uri':util['format'](_0xb814('0x5b'),_0x37866f['id'])});break;default:logger['error'](_0xb814('0x4a'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x3cf8f8){console['error'](_0x3cf8f8);logger[_0xb814('0x5d')](_0xb814('0x4a'),JSON[_0xb814('0x5e')](_0x3cf8f8));});};exports['outbound']=function(_0x3da050,_0x5f0e58,_0x13bdcf,_0x158893,_0x4aed78,_0x39952d,_0x4a3f84){var _0x539be7,_0x3b9709;_0x39952d[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x39952d['remoteUri']);_0x39952d[_0xb814('0x48')]=intUtil['stripTrailingSlash'](_0x39952d[_0xb814('0x48')]);if(_0x4a3f84&&_0x4a3f84[_0xb814('0x5f')]&&_0x4a3f84['recordingFormat']!==_0xb814('0x60')){logger['info'](_0xb814('0x61'),_0xb814('0x4b'));_0x5f0e58[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x39952d[_0xb814('0x48')],_0x5f0e58[_0xb814('0x4d')],md5(_0x5f0e58[_0xb814('0x4d')]));}headers['Authorization']=getAuth(_0x39952d);return getUser(_0x39952d,_0x158893[_0xb814('0x50')])[_0xb814('0x12')](function(_0x5d71d5){_0x539be7=_0x5d71d5;logger[_0xb814('0xe')](_0xb814('0x51'),_0x539be7['id']);return getEndUser(_0x39952d,_0x5f0e58['destcalleridname'],_0x5f0e58[_0xb814('0x62')]);})['then'](function(_0x48362c){_0x3b9709=_0x48362c;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x3b9709['id']);return getTicket(_0x39952d,_0x539be7,_0x3b9709,_0x13bdcf,_0x5f0e58);})[_0xb814('0x12')](function(_0xd1cd8b){if(_0xd1cd8b){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')]('The\x20Ticket\x20ID\x20is:',_0xd1cd8b['id']);switch(_0x39952d[_0xb814('0x36')]){case _0xb814('0x55'):logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x63'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),_0xb814('0x57'),{'recordId':_0xd1cd8b['id']});break;case'newTab':logger[_0xb814('0xe')](_0xb814('0x4a'),_0xb814('0x59'));emit(util[_0xb814('0x10')](_0xb814('0x56'),_0x158893[_0xb814('0x3a')]),'trigger:browser:url',{'uri':util[_0xb814('0x10')]('%s/agent/tickets/%s',_0x39952d[_0xb814('0x1a')],_0xd1cd8b['id'])});break;default:logger[_0xb814('0x5d')](_0xb814('0x61'),'Desk\x20account\x20type\x20not\x20recognized');}}})[_0xb814('0x5c')](function(_0x579351){logger[_0xb814('0x5d')]('[OUTBOUND]',JSON[_0xb814('0x5e')](_0x579351));});};exports[_0xb814('0x64')]=function(_0xa03cd2,_0x1b024f,_0x3377d4,_0x167d82,_0x143518,_0x4d44e3){var _0x44088d,_0x51ca51;_0x4d44e3[_0xb814('0x1a')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x1a')]);_0x4d44e3[_0xb814('0x48')]=intUtil[_0xb814('0x47')](_0x4d44e3[_0xb814('0x48')]);if(_0x143518&&_0x143518['monitor_format']){logger[_0xb814('0xe')]('['+_0x1b024f[_0xb814('0x65')]['toUpperCase']()+']',_0xb814('0x4b'));_0x1b024f[_0xb814('0x4e')]=util[_0xb814('0x10')](_0xb814('0x4c'),_0x4d44e3[_0xb814('0x48')],_0x1b024f['uniqueid'],md5(_0x1b024f[_0xb814('0x4d')]));}else{_0x1b024f['recordingURL']='';}headers[_0xb814('0x4f')]=getAuth(_0x4d44e3);return getUser(_0x4d44e3)[_0xb814('0x12')](function(_0x2645f6){_0x44088d=_0x2645f6;logger[_0xb814('0xe')](_0xb814('0x51'),_0x44088d['id']);return getEndUser(_0x4d44e3,_0x1b024f[_0xb814('0x66')],_0x1b024f['calleridnum']);})['then'](function(_0x5d064b){_0x51ca51=_0x5d064b;logger[_0xb814('0xe')]('The\x20Enduser\x20ID\x20is:',_0x51ca51['id']);return getTicket(_0x4d44e3,_0x44088d,_0x51ca51,_0x3377d4,_0x1b024f);})[_0xb814('0x12')](function(_0x1d3954){if(_0x1d3954){logger[_0xb814('0xe')]('Ticket\x20created!');logger[_0xb814('0xe')](_0xb814('0x54'),_0x1d3954['id']);}})[_0xb814('0x5c')](function(_0x5aabbe){logger[_0xb814('0x5d')]('['+_0x1b024f[_0xb814('0x65')][_0xb814('0x67')]()+']',JSON[_0xb814('0x5e')](_0x5aabbe));});};
\ No newline at end of file
+var _0x9957=['Motion','CTI','concat','Tags','/api/v2/users/%d','Descriptions','%s/customers/%d/cases','serverUrl','stripTrailingSlash','[QUEUE]','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','Displaying\x20ticket\x20to\x20agent...','user:%s','trigger:desk:display','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','trigger:browser:url','Desk\x20account\x20type\x20not\x20recognized','error','recordingFormat','none','[OUTBOUND]','Recording\x20is\x20enabled!','integrationTab','newTab','%s/agent/tickets/%s','catch','unmanaged','monitor_format','lastevent','The\x20Ticket\x20ID\x20is:','toUpperCase','lodash','request-promise','md5','util','./util','../../../../config/environment','../../../../config/logger','desk','defaults','redis','localhost','socket.io-emitter','emit','application/json','validateEmail','info','Getting\x20agent\x20with\x20email','format','remoteUri','then','total_entries','find','_embedded','entries','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','%s/users/me','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','[HTTP]','stringify','GET','password','authType','token','Basic\x20%s','toString','base64','Searching\x20enduser\x20with\x20phone','%s/customers/search','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/customers','POST','work','map','includes','string','picklist','type','nameField','customField','content','idField','custom_fields','variable','variableName','customVariable','name','Variable','toLowerCase','priority','Creating\x20new\x20ticket...','merge','getString','Subjects','phone','new','xCALLY'];(function(_0x1cf502,_0x504927){var _0x4bf703=function(_0x4dfec1){while(--_0x4dfec1){_0x1cf502['push'](_0x1cf502['shift']());}};_0x4bf703(++_0x504927);}(_0x9957,0x93));var _0x7995=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x9957[_0x3b380d];return _0x54502b;};'use strict';var _=require(_0x7995('0x0'));var rp=require(_0x7995('0x1'));var md5=require(_0x7995('0x2'));var util=require(_0x7995('0x3'));var Redis=require('ioredis');var intUtil=require(_0x7995('0x4'));var config=require(_0x7995('0x5'));var logger=require(_0x7995('0x6'))(_0x7995('0x7'));config['redis']=_[_0x7995('0x8')](config[_0x7995('0x9')],{'host':_0x7995('0xa'),'port':0x18eb});var io=require(_0x7995('0xb'))(new Redis(config[_0x7995('0x9')]));function emit(_0x326741,_0x4996ca,_0x465276){io['to'](_0x326741)[_0x7995('0xc')](_0x4996ca,_0x465276);}var headers={'Content-Type':'application/json','Accept':_0x7995('0xd')};function getUser(_0x3116fb,_0x18c8a3){if(intUtil[_0x7995('0xe')](_0x18c8a3)===!![]){logger[_0x7995('0xf')](_0x7995('0x10'),_0x18c8a3);return request({'uri':util[_0x7995('0x11')]('%s/users',_0x3116fb[_0x7995('0x12')])})[_0x7995('0x13')](function(_0x581f22){if(_0x581f22[_0x7995('0x14')]){return _[_0x7995('0x15')](_0x581f22[_0x7995('0x16')][_0x7995('0x17')],{'email':_0x18c8a3});}})[_0x7995('0x13')](function(_0x23999f){if(_0x23999f){logger[_0x7995('0xf')]('Agent\x20found!');return _0x23999f;}else{logger['info'](_0x7995('0x18'));return request({'uri':util[_0x7995('0x11')](_0x7995('0x19'),_0x3116fb[_0x7995('0x12')])});}});}else{logger[_0x7995('0xf')](_0x7995('0x1a'));return request({'uri':util[_0x7995('0x11')](_0x7995('0x19'),_0x3116fb['remoteUri'])});}}function request(_0x2eeacc){logger['debug'](_0x7995('0x1b'),JSON[_0x7995('0x1c')](_0x2eeacc));return rp(_[_0x7995('0x8')](_0x2eeacc,{'method':_0x7995('0x1d'),'headers':headers,'json':!![]}));}function getAuth(_0x1e1415){var _0x37a7d4;if(_0x1e1415['authType']==='basic'){_0x37a7d4=util[_0x7995('0x11')]('%s:%s',_0x1e1415['username'],_0x1e1415[_0x7995('0x1e')]);}else if(_0x1e1415[_0x7995('0x1f')]==='token'){_0x37a7d4=util[_0x7995('0x11')]('%s/token:%s',_0x1e1415['username'],_0x1e1415[_0x7995('0x20')]);}return util[_0x7995('0x11')](_0x7995('0x21'),new Buffer(_0x37a7d4)[_0x7995('0x22')](_0x7995('0x23')));}function getEndUser(_0x1c278a,_0x5d40ae,_0x32a09a){logger[_0x7995('0xf')](_0x7995('0x24'),_0x32a09a);return request({'uri':util[_0x7995('0x11')](_0x7995('0x25'),_0x1c278a[_0x7995('0x12')]),'qs':{'phone':_0x32a09a}})[_0x7995('0x13')](function(_0x472195){if(_0x472195['total_entries']){logger[_0x7995('0xf')](_0x7995('0x26'));return _0x472195[_0x7995('0x16')][_0x7995('0x17')][0x0];}else{logger[_0x7995('0xf')](_0x7995('0x27'));return request({'uri':util['format'](_0x7995('0x28'),_0x1c278a['remoteUri']),'method':_0x7995('0x29'),'body':{'first_name':_0x5d40ae,'title':_0x5d40ae,'phone_numbers':[{'type':_0x7995('0x2a'),'value':_0x32a09a}]}});}});}function getTags(_0xf16cc2,_0x132a42){var _0x11c1eb=[];if(_0xf16cc2&&_0xf16cc2['length']>0x0){_0x11c1eb=_[_0x7995('0x2b')](_0xf16cc2,_0x132a42);}return _0x11c1eb;}function getCustomFields(_0x514445,_0x456a28){var _0x3250e0=[];var _0x4253e5={'custom_fields':{}};if(_0x514445['length']>0x0){_['forEach'](_0x514445,function(_0x48e573){if(_[_0x7995('0x2c')]([_0x7995('0x2d'),_0x7995('0x2e')],_0x48e573[_0x7995('0x2f')])&&_0x48e573[_0x7995('0x30')]&&!_0x48e573[_0x7995('0x31')]){_0x4253e5[_0x48e573['nameField']['toLowerCase']()]=_0x48e573[_0x7995('0x32')]['toString']();}else if(_[_0x7995('0x2c')]([_0x7995('0x2d'),_0x7995('0x2e')],_0x48e573[_0x7995('0x2f')])&&_0x48e573[_0x7995('0x33')]&&_0x48e573['customField']){_0x4253e5[_0x7995('0x34')][_0x48e573[_0x7995('0x33')]]=_0x48e573['content']['toString']();}else if(_0x48e573['type']===_0x7995('0x35')&&_0x48e573[_0x7995('0x36')]&&_0x48e573['idField']&&_0x48e573[_0x7995('0x31')]){_0x456a28[_0x48e573['variableName']]&&(_0x4253e5[_0x7995('0x34')][_0x48e573[_0x7995('0x33')]]=_0x456a28[_0x48e573[_0x7995('0x36')]]['toString']());}else if(_0x48e573['type']===_0x7995('0x37')&&_0x48e573['Variable']&&_0x48e573['Variable'][_0x7995('0x38')]&&_0x48e573[_0x7995('0x33')]&&_0x48e573['customField']){_0x456a28[_0x48e573[_0x7995('0x39')][_0x7995('0x38')][_0x7995('0x3a')]()]&&(_0x4253e5[_0x7995('0x34')][_0x48e573[_0x7995('0x33')]]=_0x456a28[_0x48e573['Variable'][_0x7995('0x38')][_0x7995('0x3a')]()][_0x7995('0x22')]());}});}if(_0x4253e5[_0x7995('0x3b')]){_0x4253e5['priority']=Number(_0x4253e5[_0x7995('0x3b')]);}return _0x4253e5;}function getTicket(_0x235df7,_0x3eb04f,_0xe5ea43,_0x1f5bee,_0x1035dc){logger['info'](_0x7995('0x3c'));var _0x3be298=_[_0x7995('0x3d')]({'subject':intUtil[_0x7995('0x3e')](_0x1f5bee[_0x7995('0x3f')],_0x1035dc,'\x20'),'type':_0x7995('0x40'),'status':_0x7995('0x41'),'labels':[_0x7995('0x42'),_0x7995('0x43'),_0x7995('0x44')][_0x7995('0x45')](getTags(_0x1f5bee[_0x7995('0x46')],_0x7995('0x38'))),'description':intUtil['getString'](_0x1f5bee['Descriptions'],_0x1035dc,'\x0a'),'_links':{'assigned_user':{'href':util[_0x7995('0x11')](_0x7995('0x47'),_0x3eb04f['id']),'class':'user'}},'message':{'direction':'in','body':intUtil['getString'](_0x1f5bee[_0x7995('0x48')],_0x1035dc,'\x0a')}},getCustomFields(_0x1f5bee['Fields'],_0x1035dc));return request({'uri':util['format'](_0x7995('0x49'),_0x235df7[_0x7995('0x12')],_0xe5ea43['id']),'method':_0x7995('0x29'),'body':_0x3be298});}exports['queue']=function(_0x46ac4f,_0x5e85b9,_0x3993b5,_0x5a8881,_0x493066,_0x39c5b8){var _0x403f54,_0xc04e5;_0x39c5b8[_0x7995('0x12')]=intUtil['stripTrailingSlash'](_0x39c5b8[_0x7995('0x12')]);_0x39c5b8[_0x7995('0x4a')]=intUtil[_0x7995('0x4b')](_0x39c5b8[_0x7995('0x4a')]);if(_0x493066&&_0x493066['monitor_format']){logger['info'](_0x7995('0x4c'),'Recording\x20is\x20enabled!');_0x5e85b9[_0x7995('0x4d')]=util['format'](_0x7995('0x4e'),_0x39c5b8['serverUrl'],_0x5e85b9[_0x7995('0x4f')],md5(_0x5e85b9[_0x7995('0x4f')]));}else{_0x5e85b9['recordingURL']='';}headers[_0x7995('0x50')]=getAuth(_0x39c5b8);return getUser(_0x39c5b8,_0x5a8881[_0x7995('0x51')])[_0x7995('0x13')](function(_0xb70a51){_0x403f54=_0xb70a51;logger['info'](_0x7995('0x52'),_0x403f54['id']);return getEndUser(_0x39c5b8,_0x5e85b9[_0x7995('0x53')],_0x5e85b9[_0x7995('0x54')]);})['then'](function(_0xe228a5){_0xc04e5=_0xe228a5;logger[_0x7995('0xf')](_0x7995('0x55'),_0xc04e5['id']);return getTicket(_0x39c5b8,_0x403f54,_0xc04e5,_0x3993b5,_0x5e85b9);})[_0x7995('0x13')](function(_0x255313){if(_0x255313){logger['info'](_0x7995('0x56'));logger[_0x7995('0xf')]('The\x20Ticket\x20ID\x20is:',_0x255313['id']);switch(_0x39c5b8[_0x7995('0x2f')]){case'integrationTab':logger[_0x7995('0xf')](_0x7995('0x4c'),_0x7995('0x57'));emit(util[_0x7995('0x11')](_0x7995('0x58'),_0x5a8881[_0x7995('0x38')]),_0x7995('0x59'),{'recordId':_0x255313['id']});break;case'newTab':logger[_0x7995('0xf')](_0x7995('0x4c'),_0x7995('0x5a'));emit(util['format'](_0x7995('0x58'),_0x5a8881[_0x7995('0x38')]),_0x7995('0x5b'),{'uri':util['format']('https://xcally.desk.com/web/agent/case/%d',_0x255313['id'])});break;default:logger['error'](_0x7995('0x4c'),_0x7995('0x5c'));}}})['catch'](function(_0x1cd85){console[_0x7995('0x5d')](_0x1cd85);logger[_0x7995('0x5d')](_0x7995('0x4c'),JSON[_0x7995('0x1c')](_0x1cd85));});};exports['outbound']=function(_0x29ee32,_0x4ab09f,_0x14fe7f,_0x33c801,_0x206d2a,_0x50c7b5,_0x5e1f34){var _0x54e2b1,_0x563f8e;_0x50c7b5[_0x7995('0x12')]=intUtil[_0x7995('0x4b')](_0x50c7b5[_0x7995('0x12')]);_0x50c7b5[_0x7995('0x4a')]=intUtil[_0x7995('0x4b')](_0x50c7b5[_0x7995('0x4a')]);if(_0x5e1f34&&_0x5e1f34[_0x7995('0x5e')]&&_0x5e1f34[_0x7995('0x5e')]!==_0x7995('0x5f')){logger[_0x7995('0xf')](_0x7995('0x60'),_0x7995('0x61'));_0x4ab09f[_0x7995('0x4d')]=util[_0x7995('0x11')](_0x7995('0x4e'),_0x50c7b5[_0x7995('0x4a')],_0x4ab09f[_0x7995('0x4f')],md5(_0x4ab09f[_0x7995('0x4f')]));}headers[_0x7995('0x50')]=getAuth(_0x50c7b5);return getUser(_0x50c7b5,_0x33c801['email'])[_0x7995('0x13')](function(_0x630737){_0x54e2b1=_0x630737;logger[_0x7995('0xf')](_0x7995('0x52'),_0x54e2b1['id']);return getEndUser(_0x50c7b5,_0x4ab09f['destcalleridname'],_0x4ab09f['destcalleridnum']);})[_0x7995('0x13')](function(_0x197b52){_0x563f8e=_0x197b52;logger[_0x7995('0xf')](_0x7995('0x55'),_0x563f8e['id']);return getTicket(_0x50c7b5,_0x54e2b1,_0x563f8e,_0x14fe7f,_0x4ab09f);})['then'](function(_0x13cd7b){if(_0x13cd7b){logger[_0x7995('0xf')](_0x7995('0x56'));logger[_0x7995('0xf')]('The\x20Ticket\x20ID\x20is:',_0x13cd7b['id']);switch(_0x50c7b5['type']){case _0x7995('0x62'):logger[_0x7995('0xf')](_0x7995('0x4c'),_0x7995('0x57'));emit(util[_0x7995('0x11')](_0x7995('0x58'),_0x33c801[_0x7995('0x38')]),_0x7995('0x59'),{'recordId':_0x13cd7b['id']});break;case _0x7995('0x63'):logger['info'](_0x7995('0x4c'),_0x7995('0x5a'));emit(util[_0x7995('0x11')](_0x7995('0x58'),_0x33c801['name']),'trigger:browser:url',{'uri':util[_0x7995('0x11')](_0x7995('0x64'),_0x50c7b5['remoteUri'],_0x13cd7b['id'])});break;default:logger[_0x7995('0x5d')](_0x7995('0x60'),_0x7995('0x5c'));}}})[_0x7995('0x65')](function(_0x32cb04){logger['error'](_0x7995('0x60'),JSON['stringify'](_0x32cb04));});};exports[_0x7995('0x66')]=function(_0xe31dcb,_0x1722e2,_0x25b534,_0x4388c1,_0xeb8920,_0x2b3c1d){var _0x44372a,_0x10f012;_0x2b3c1d[_0x7995('0x12')]=intUtil[_0x7995('0x4b')](_0x2b3c1d[_0x7995('0x12')]);_0x2b3c1d['serverUrl']=intUtil[_0x7995('0x4b')](_0x2b3c1d[_0x7995('0x4a')]);if(_0xeb8920&&_0xeb8920[_0x7995('0x67')]){logger[_0x7995('0xf')]('['+_0x1722e2[_0x7995('0x68')]['toUpperCase']()+']','Recording\x20is\x20enabled!');_0x1722e2[_0x7995('0x4d')]=util[_0x7995('0x11')](_0x7995('0x4e'),_0x2b3c1d[_0x7995('0x4a')],_0x1722e2['uniqueid'],md5(_0x1722e2[_0x7995('0x4f')]));}else{_0x1722e2['recordingURL']='';}headers['Authorization']=getAuth(_0x2b3c1d);return getUser(_0x2b3c1d)[_0x7995('0x13')](function(_0x36d27d){_0x44372a=_0x36d27d;logger[_0x7995('0xf')](_0x7995('0x52'),_0x44372a['id']);return getEndUser(_0x2b3c1d,_0x1722e2[_0x7995('0x53')],_0x1722e2[_0x7995('0x54')]);})[_0x7995('0x13')](function(_0x13dc73){_0x10f012=_0x13dc73;logger[_0x7995('0xf')](_0x7995('0x55'),_0x10f012['id']);return getTicket(_0x2b3c1d,_0x44372a,_0x10f012,_0x25b534,_0x1722e2);})['then'](function(_0x2dc1f7){if(_0x2dc1f7){logger[_0x7995('0xf')](_0x7995('0x56'));logger['info'](_0x7995('0x69'),_0x2dc1f7['id']);}})[_0x7995('0x65')](function(_0x705f0){logger[_0x7995('0x5d')]('['+_0x1722e2[_0x7995('0x68')][_0x7995('0x6a')]()+']',JSON[_0x7995('0x1c')](_0x705f0));});};
\ No newline at end of file
index 1eb6e44..3c86863 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2f4e=['none','[OUTBOUND]','Recording\x20is\x20enabled!',']\x20The\x20User\x20email\x20is:','additionalSearchContact',']\x20The\x20Enduser\x20phone\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Call\x20direction:\x20%s','name','error','lodash','request-promise','./util','ioredis','../../../../config/logger','dynamics365','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','modernAuthentication','remoteUri','CloudProvider','data7','tenantId','data5','POST','clientId','username','password','clientSecret','access_token','toUpperCase','message','then','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','validateEmail','email','userEmail','length','internalemailaddress',']\x20Agent\x20found\x20','userId','systemuserid','info','catch','outbound','destcalleridnum','calleridnum','contacts','/systemusers(','body','headers','odata-entityid','substring','lastIndexOf','enduserId','telephone1','contacts?$select=','&$filter=','\x20eq\x20\x27','%2b','contactid','nothing',']\x20Enduser\x20created!','forEach','string','picklist','type','nameField','customField','idField','toLowerCase','indexOf','content','ticketType','incident','assign','getString','Subjects','/contacts(','Fields','phonecall','callDirection','queue','phonecalls','Descriptions','ticketId','format','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','recordingURL','recordingFormat'];(function(_0x233cab,_0x37a3d7){var _0x1ef6fb=function(_0x344265){while(--_0x344265){_0x233cab['push'](_0x233cab['shift']());}};_0x1ef6fb(++_0x37a3d7);}(_0x2f4e,0xe0));var _0xe2f4=function(_0x2734e2,_0x3c6770){_0x2734e2=_0x2734e2-0x0;var _0x5ef86a=_0x2f4e[_0x2734e2];return _0x5ef86a;};'use strict';var _=require(_0xe2f4('0x0'));var rp=require(_0xe2f4('0x1'));var util=require('util');var intUtil=require(_0xe2f4('0x2'));var md5=require('md5');var Redis=require(_0xe2f4('0x3'));var logger=require(_0xe2f4('0x4'))(_0xe2f4('0x5'));var config=require(_0xe2f4('0x6'));config[_0xe2f4('0x7')]=_[_0xe2f4('0x8')](config[_0xe2f4('0x7')],{'host':_0xe2f4('0x9'),'port':0x18eb});var io=require(_0xe2f4('0xa'))(new Redis(config[_0xe2f4('0x7')]));function getAuthToken(_0x2ea38b,_0x514c1c,_0x478f03){if(_0x2ea38b[_0xe2f4('0xb')]){_0x2ea38b[_0xe2f4('0xc')]=_0x2ea38b[_0xe2f4('0xd')][_0xe2f4('0xe')];_0x2ea38b[_0xe2f4('0xf')]=_0x2ea38b[_0xe2f4('0xd')]['data2'];return Promise['resolve'](_0x2ea38b[_0xe2f4('0xd')][_0xe2f4('0x10')]);}var _0x4e4899={'method':_0xe2f4('0x11'),'uri':_0x514c1c,'form':{'client_id':_0x2ea38b[_0xe2f4('0x12')],'resource':_0x2ea38b['remoteUri'],'username':_0x2ea38b[_0xe2f4('0x13')],'password':_0x2ea38b[_0xe2f4('0x14')],'grant_type':'password','client_secret':_0x2ea38b[_0xe2f4('0x15')]},'json':!![]};return rp(_0x4e4899)['then'](function(_0x4adebc){return _0x4adebc[_0xe2f4('0x16')];})['catch'](function(_0x27a0a0){logger['error']('['+[_0x478f03[_0xe2f4('0x17')]()]+']\x20Wrong\x20credentials!');return _0x27a0a0[_0xe2f4('0x18')];});}function getUser(_0x246f22,_0x3dae42,_0x3e10b3,_0x520108,_0x1f8762,_0x5c8f86){return new Promise(function(_0x757c04,_0x59cdca){return getAuthToken(_0x3dae42,_0x520108,_0x5c8f86)[_0xe2f4('0x19')](function(_0x39ece3){var _0x33003e={'method':_0xe2f4('0x1a'),'uri':_0x1f8762+_0xe2f4('0x1b'),'headers':{'Authorization':_0xe2f4('0x1c')+_0x39ece3,'OData-Version':_0xe2f4('0x1d')},'json':!![]};return rp(_0x33003e);})['then'](function(_0x42f418){var _0x4926c9=_0x42f418[_0xe2f4('0x1e')];var _0x5b8fd5=![];var _0x43f5af=null;if(!_[_0xe2f4('0x1f')](_0x3e10b3)){if(intUtil[_0xe2f4('0x20')](_0x3e10b3[_0xe2f4('0x21')])){_0x246f22[_0xe2f4('0x22')]=_0x3e10b3[_0xe2f4('0x21')];for(_0x43f5af=0x0;_0x43f5af<_0x4926c9[_0xe2f4('0x23')];_0x43f5af++){if(_0x4926c9[_0x43f5af][_0xe2f4('0x24')]===_0x3e10b3[_0xe2f4('0x21')]&&!_0x4926c9[_0x43f5af]['isdisabled']){_0x5b8fd5=!![];logger['info']('['+[_0x5c8f86['toUpperCase']()]+_0xe2f4('0x25')+_0x4926c9[_0x43f5af]['systemuserid']+'!');_0x246f22[_0xe2f4('0x26')]=_0x4926c9[_0x43f5af][_0xe2f4('0x27')];}}}}if(!_0x5b8fd5){logger[_0xe2f4('0x28')]('['+[_0x5c8f86[_0xe2f4('0x17')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x246f22[_0xe2f4('0x22')]=_0x3dae42[_0xe2f4('0x13')];for(_0x43f5af=0x0;_0x43f5af<_0x4926c9['length'];_0x43f5af++){if(_0x4926c9[_0x43f5af]['internalemailaddress']===_0x3dae42[_0xe2f4('0x13')]){_0x246f22[_0xe2f4('0x26')]=_0x4926c9[_0x43f5af][_0xe2f4('0x27')];}}}_0x757c04(_0x246f22);})[_0xe2f4('0x29')](function(_0x203337){_0x59cdca(_0x203337[_0xe2f4('0x18')]);});});}function createEndUser(_0x53848e,_0x9d9237,_0x55d470,_0x3a86e2,_0x45e842,_0x4433da,_0x2bc27e){return new Promise(function(_0x5f3295,_0x483852){return getAuthToken(_0x9d9237,_0x55d470,_0x4433da)[_0xe2f4('0x19')](function(_0xa27bc0){var _0x5c0f29=_0x4433da['toLowerCase']()===_0xe2f4('0x2a')?_0x45e842[_0xe2f4('0x2b')]:_0x45e842[_0xe2f4('0x2c')];var _0x46055b={'method':_0xe2f4('0x11'),'uri':_0x3a86e2+_0xe2f4('0x2d'),'body':{'fullname':_0x5c0f29,'firstname':_0x5c0f29,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0xe2f4('0x2e')+_0x53848e['userId']+')'},'headers':{'Authorization':_0xe2f4('0x1c')+_0xa27bc0,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};_0x46055b[_0xe2f4('0x2f')][_0x2bc27e]=_0x5c0f29;return rp(_0x46055b);})[_0xe2f4('0x19')](function(_0x2f8283){var _0x4ffaca=_0x2f8283[_0xe2f4('0x30')][_0xe2f4('0x31')];var _0x15df0a=_0x4ffaca[_0xe2f4('0x32')](_0x4ffaca['lastIndexOf']('(')+0x1,_0x4ffaca[_0xe2f4('0x33')](')'));_0x53848e[_0xe2f4('0x34')]=_0x15df0a;_0x5f3295(_0x53848e);})[_0xe2f4('0x29')](function(_0x474fb2){_0x483852(_0x474fb2[_0xe2f4('0x18')]);});});}function getEndUser(_0x324d47,_0x50a5d2,_0xf0b4fe,_0x3daa0a,_0x3d84bc,_0x2d3f45,_0xe9bc1e,_0x35df01){var _0x1a726a=_0x2d3f45['toLowerCase']()===_0xe2f4('0x2a')?_0x3d84bc[_0xe2f4('0x2b')]:_0x3d84bc['calleridnum'];return getAuthToken(_0x50a5d2,_0xf0b4fe,_0x2d3f45)[_0xe2f4('0x19')](function(_0x30d900){_0x35df01=_0x35df01?_0x35df01:_0xe2f4('0x35');var _0x475bb5={'method':_0xe2f4('0x1a'),'uri':_0x3daa0a+_0xe2f4('0x36')+_0x35df01+_0xe2f4('0x37')+_0x35df01+_0xe2f4('0x38')+_0x1a726a['replace']('+',_0xe2f4('0x39'))+'\x27','headers':{'Authorization':'Bearer\x20'+_0x30d900,'If-None-Match':null,'OData-Version':'4.0'},'json':!![]};return rp(_0x475bb5);})['then'](function(_0x360ce9){var _0x4400bf=![];if(!_0x360ce9)return _0x4400bf;var _0x4dd812=_0x360ce9[_0xe2f4('0x1e')];for(var _0x4aed29=0x0;_0x4aed29<_0x4dd812['length'];_0x4aed29++){if(_0x4dd812[_0x4aed29][_0x35df01]===_0x1a726a){_0x4400bf=!![];_0x324d47[_0xe2f4('0x34')]=_0x4dd812[_0x4aed29][_0xe2f4('0x3a')];}}return _0x4400bf;})[_0xe2f4('0x19')](function(_0x4f959e){if(_0x4f959e)return _0x324d47;if(_0xe9bc1e===_0xe2f4('0x3b')){logger[_0xe2f4('0x28')]('['+[_0x2d3f45['toUpperCase']()]+']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing');return _0x324d47;}return createEndUser(_0x324d47,_0x50a5d2,_0xf0b4fe,_0x3daa0a,_0x3d84bc,_0x2d3f45,_0x35df01)[_0xe2f4('0x19')](function(_0x3af526){logger[_0xe2f4('0x28')]('['+[_0x2d3f45['toUpperCase']()]+_0xe2f4('0x3c'),_0x3af526[_0xe2f4('0x34')]);return _0x3af526;});});}function getCustomFields(_0x21f65f,_0x43a3cd,_0x372ab5){var _0x1f0c94={};if(_0x21f65f[_0xe2f4('0x23')]>0x0){_[_0xe2f4('0x3d')](_0x21f65f,function(_0x480f68){if(_['includes']([_0xe2f4('0x3e'),_0xe2f4('0x3f')],_0x480f68[_0xe2f4('0x40')])&&_0x480f68[_0xe2f4('0x41')]&&!_0x480f68[_0xe2f4('0x42')]){var _0x947d06=_0x480f68[_0xe2f4('0x43')][_0xe2f4('0x44')]();var _0x33f548=_0x947d06[_0xe2f4('0x32')](0x0,_0x947d06[_0xe2f4('0x45')]('_'));var _0x2ef45e=_0x947d06[_0xe2f4('0x32')](_0x947d06[_0xe2f4('0x45')]('_')+0x1);if(_0x33f548===_0x372ab5){_0x1f0c94[_0x2ef45e]=_0x480f68[_0xe2f4('0x46')];}}});}return _0x1f0c94;}function getTicket(_0xb2185a,_0x1d1526,_0x374b86,_0xa86407,_0x543c57,_0x40ace1,_0x398dab){return new Promise(function(_0x5b2230,_0x35a317){var _0x262c43;return getAuthToken(_0x1d1526,_0x374b86,_0x398dab)['then'](function(_0x271f34){if(_0x40ace1[_0xe2f4('0x47')]===_0xe2f4('0x48')){_0x262c43={'method':_0xe2f4('0x11'),'uri':_0xa86407+'incidents','body':Object[_0xe2f4('0x49')]({},{'title':intUtil[_0xe2f4('0x4a')](_0x40ace1[_0xe2f4('0x4b')],_0x543c57,'\x20'),'description':intUtil[_0xe2f4('0x4a')](_0x40ace1['Descriptions'],_0x543c57,'\x0a'),'customerid_contact@odata.bind':_0xb2185a[_0xe2f4('0x34')]?_0xe2f4('0x4c')+_0xb2185a['enduserId']+')':undefined,'ownerid@odata.bind':'/systemusers('+_0xb2185a[_0xe2f4('0x26')]+')','caseorigincode':'1'},getCustomFields(_0x40ace1[_0xe2f4('0x4d')],_0x543c57,_0x40ace1[_0xe2f4('0x47')])),'headers':{'Authorization':_0xe2f4('0x1c')+_0x271f34,'OData-Version':'4.0'},'json':!![],'resolveWithFullResponse':!![]};}if(_0x40ace1[_0xe2f4('0x47')]===_0xe2f4('0x4e')){var _0x4567de=_0xb2185a[_0xe2f4('0x34')]?[{'partyid_systemuser@odata.bind':_0xe2f4('0x2e')+_0xb2185a[_0xe2f4('0x26')]+')','participationtypemask':_0xb2185a['callDirection']==='queue'?0x2:0x1},{'partyid_contact@odata.bind':_0xe2f4('0x4c')+_0xb2185a['enduserId']+')','participationtypemask':_0xb2185a[_0xe2f4('0x4f')]==='queue'?0x1:0x2}]:[{'partyid_systemuser@odata.bind':'/systemusers('+_0xb2185a[_0xe2f4('0x26')]+')','participationtypemask':_0xb2185a[_0xe2f4('0x4f')]===_0xe2f4('0x50')?0x2:0x1}];_0x262c43={'method':'POST','uri':_0xa86407+_0xe2f4('0x51'),'body':Object[_0xe2f4('0x49')]({},{'subject':intUtil[_0xe2f4('0x4a')](_0x40ace1['Subjects'],_0x543c57,'\x20'),'phonenumber':String(_0x543c57[_0xe2f4('0x2c')]),'description':intUtil[_0xe2f4('0x4a')](_0x40ace1[_0xe2f4('0x52')],_0x543c57,'\x0a'),'regardingobjectid_contact@odata.bind':_0xb2185a[_0xe2f4('0x34')]?_0xe2f4('0x4c')+_0xb2185a[_0xe2f4('0x34')]+')':undefined,'ownerid@odata.bind':_0xe2f4('0x2e')+_0xb2185a[_0xe2f4('0x26')]+')','directioncode':_0xb2185a[_0xe2f4('0x4f')]===_0xe2f4('0x50')?![]:!![],'phonecall_activity_parties':_0x4567de},getCustomFields(_0x40ace1[_0xe2f4('0x4d')],_0x543c57,_0x40ace1[_0xe2f4('0x47')])),'headers':{'Authorization':'Bearer\x20'+_0x271f34,'OData-Version':_0xe2f4('0x1d')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x262c43);})[_0xe2f4('0x19')](function(_0x5b92bf){var _0x1db9de=_0x5b92bf['headers'][_0xe2f4('0x31')];var _0x33f6bb=_0x1db9de[_0xe2f4('0x32')](_0x1db9de[_0xe2f4('0x33')]('(')+0x1,_0x1db9de[_0xe2f4('0x33')](')'));_0xb2185a[_0xe2f4('0x53')]=_0x33f6bb;_0x5b2230(_0xb2185a);})[_0xe2f4('0x29')](function(_0x3fa3a0){_0x35a317(_0x3fa3a0[_0xe2f4('0x18')]);});});}function emit(_0x23f89e,_0x2a2094,_0x57489a,_0xec6f61){var _0x4aa3d0={'uri':util[_0xe2f4('0x54')]('%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s',_0x23f89e,_0x57489a,_0xec6f61)};io['to'](util[_0xe2f4('0x54')](_0xe2f4('0x55'),_0x2a2094))[_0xe2f4('0x56')](_0xe2f4('0x57'),_0x4aa3d0);}exports['cs']=function(_0x2a3e9b,_0x1dd5d0,_0x68c49d,_0x8c1813,_0x14762d,_0x5a32b7,_0x53aaae,_0x5b1cc7){var _0x5eefe3={};_0x5a32b7['remoteUri']=_0x5a32b7[_0xe2f4('0xb')]?intUtil[_0xe2f4('0x58')](_0x5a32b7['CloudProvider']['data7']):intUtil[_0xe2f4('0x58')](_0x5a32b7[_0xe2f4('0xc')]);_0x5a32b7[_0xe2f4('0x59')]=intUtil[_0xe2f4('0x58')](_0x5a32b7[_0xe2f4('0x59')]);_0x5eefe3[_0xe2f4('0x4f')]=_0x5b1cc7===_0xe2f4('0x50')||_0x5b1cc7===_0xe2f4('0x5a')?_0xe2f4('0x50'):_0xe2f4('0x2a');var _0x363f86=_0x5a32b7[_0xe2f4('0xb')]?util['format']('%s/api/data/v9.0/',_0x5a32b7['CloudProvider']['data7']):util[_0xe2f4('0x54')]('%s/api/data/v9.0/',_0x5a32b7['remoteUri']);var _0x5bcfc6=util['format'](_0xe2f4('0x5b'),_0x5a32b7[_0xe2f4('0xf')]);var _0x5de431=util[_0xe2f4('0x54')](_0xe2f4('0x5c'),_0x5a32b7[_0xe2f4('0x59')],_0x1dd5d0[_0xe2f4('0x5d')],md5(_0x1dd5d0['uniqueid']));if(_0x14762d&&_0x14762d[_0xe2f4('0x5e')]){logger[_0xe2f4('0x28')]('[QUEUE]','Recording\x20is\x20enabled!');_0x1dd5d0[_0xe2f4('0x5f')]=_0x5de431;}else if(_0x53aaae&&_0x53aaae['recordingFormat']&&_0x53aaae[_0xe2f4('0x60')]!==_0xe2f4('0x61')){logger[_0xe2f4('0x28')](_0xe2f4('0x62'),_0xe2f4('0x63'));_0x1dd5d0[_0xe2f4('0x5f')]=_0x5de431;}else{_0x1dd5d0[_0xe2f4('0x5f')]='';}return getUser(_0x5eefe3,_0x5a32b7,_0x8c1813,_0x5bcfc6,_0x363f86,_0x5b1cc7)[_0xe2f4('0x19')](function(_0x2f4019){logger[_0xe2f4('0x28')]('['+_0x5b1cc7['toUpperCase']()+']\x20The\x20User\x20ID\x20is:',_0x2f4019['userId']);logger['info']('['+_0x5b1cc7[_0xe2f4('0x17')]()+_0xe2f4('0x64'),_0x2f4019[_0xe2f4('0x22')]);return getEndUser(_0x2f4019,_0x5a32b7,_0x5bcfc6,_0x363f86,_0x1dd5d0,_0x5b1cc7,_0x68c49d['moduleCreate'],_0x68c49d[_0xe2f4('0x65')]);})['then'](function(_0x33754c){logger[_0xe2f4('0x28')]('['+_0x5b1cc7[_0xe2f4('0x17')]()+']\x20The\x20Enduser\x20ID\x20is:',_0x33754c['enduserId']);logger[_0xe2f4('0x28')]('['+_0x5b1cc7['toUpperCase']()+_0xe2f4('0x66'),_0x1dd5d0['calleridnum']);return getTicket(_0x33754c,_0x5a32b7,_0x5bcfc6,_0x363f86,_0x1dd5d0,_0x68c49d,_0x5b1cc7);})[_0xe2f4('0x19')](function(_0x3803a4){logger['info'](util[_0xe2f4('0x54')]('['+_0x5b1cc7['toUpperCase']()+_0xe2f4('0x67'),_0x68c49d[_0xe2f4('0x47')],_0x3803a4['ticketId']));logger['info'](util['format']('['+_0x5b1cc7[_0xe2f4('0x17')]()+_0xe2f4('0x68'),_0x5b1cc7));if(_0x5b1cc7!==_0xe2f4('0x5a')){logger[_0xe2f4('0x28')]('['+_0x5b1cc7[_0xe2f4('0x17')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x5a32b7[_0xe2f4('0xc')],_0x8c1813[_0xe2f4('0x69')],_0x68c49d[_0xe2f4('0x47')],_0x3803a4[_0xe2f4('0x53')]);}})[_0xe2f4('0x29')](function(_0x5ecafd){logger[_0xe2f4('0x6a')]('['+_0x5b1cc7[_0xe2f4('0x17')]()+']\x20Error\x20running\x20Dynamics365\x20integration',_0x5ecafd[_0xe2f4('0x18')]);});};
\ No newline at end of file
+var _0x6a44=['telephone1','contacts?$select=','\x20eq\x20\x27','replace','contactid',']\x20Enduser\x20NOT\x20Created\x20-\x20ModuleCreate\x20=\x20Nothing',']\x20Enduser\x20created!','picklist','type','idField','substring','indexOf','content','ticketType','incident','incidents','getString','Descriptions','enduserId','/contacts(','Fields','phonecall','callDirection','queue','phonecalls','assign','Subjects','ticketId','%s/main.aspx?pagetype=entityrecord&etn=%s&id=%s','user:%s','emit','trigger:browser:url','stripTrailingSlash','serverUrl','unmanaged','format','%s/api/data/v9.0/','https://login.microsoftonline.com/%s/oauth2/token','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','moduleCreate',']\x20The\x20Enduser\x20ID\x20is:',']\x20The\x20%s\x20ID\x20is:\x20%s',']\x20Error\x20running\x20Dynamics365\x20integration','lodash','request-promise','util','./util','md5','../../../../config/logger','dynamics365','../../../../config/environment','redis','localhost','socket.io-emitter','modernAuthentication','CloudProvider','data7','tenantId','data2','resolve','data5','POST','remoteUri','username','clientSecret','then','access_token','catch','error','toUpperCase','message','GET','systemusers?$select=internalemailaddress,isdisabled,systemuserid','Bearer\x20','4.0','value','isNil','email','userEmail','length','internalemailaddress','isdisabled','info',']\x20Agent\x20found\x20','systemuserid','userId','toLowerCase','outbound','destcalleridnum','calleridnum','/systemusers(','body','headers','odata-entityid','lastIndexOf'];(function(_0x6465b0,_0x45653a){var _0x4884fe=function(_0x427085){while(--_0x427085){_0x6465b0['push'](_0x6465b0['shift']());}};_0x4884fe(++_0x45653a);}(_0x6a44,0x160));var _0x46a4=function(_0x3bcad1,_0x4f2abd){_0x3bcad1=_0x3bcad1-0x0;var _0x3f4b37=_0x6a44[_0x3bcad1];return _0x3f4b37;};'use strict';var _=require(_0x46a4('0x0'));var rp=require(_0x46a4('0x1'));var util=require(_0x46a4('0x2'));var intUtil=require(_0x46a4('0x3'));var md5=require(_0x46a4('0x4'));var Redis=require('ioredis');var logger=require(_0x46a4('0x5'))(_0x46a4('0x6'));var config=require(_0x46a4('0x7'));config[_0x46a4('0x8')]=_['defaults'](config['redis'],{'host':_0x46a4('0x9'),'port':0x18eb});var io=require(_0x46a4('0xa'))(new Redis(config[_0x46a4('0x8')]));function getAuthToken(_0x492468,_0x593d81,_0x3e67bb){if(_0x492468[_0x46a4('0xb')]){_0x492468['remoteUri']=_0x492468[_0x46a4('0xc')][_0x46a4('0xd')];_0x492468[_0x46a4('0xe')]=_0x492468[_0x46a4('0xc')][_0x46a4('0xf')];return Promise[_0x46a4('0x10')](_0x492468[_0x46a4('0xc')][_0x46a4('0x11')]);}var _0x4ad591={'method':_0x46a4('0x12'),'uri':_0x593d81,'form':{'client_id':_0x492468['clientId'],'resource':_0x492468[_0x46a4('0x13')],'username':_0x492468[_0x46a4('0x14')],'password':_0x492468['password'],'grant_type':'password','client_secret':_0x492468[_0x46a4('0x15')]},'json':!![]};return rp(_0x4ad591)[_0x46a4('0x16')](function(_0x5167a1){return _0x5167a1[_0x46a4('0x17')];})[_0x46a4('0x18')](function(_0x83bdd6){logger[_0x46a4('0x19')]('['+[_0x3e67bb[_0x46a4('0x1a')]()]+']\x20Wrong\x20credentials!');return _0x83bdd6[_0x46a4('0x1b')];});}function getUser(_0x5abe4c,_0x3574c9,_0x1bd041,_0x4fbeb0,_0x3dbaad,_0x4ce98c){return new Promise(function(_0x17d1bf,_0x25e52b){return getAuthToken(_0x3574c9,_0x4fbeb0,_0x4ce98c)[_0x46a4('0x16')](function(_0x312d86){var _0x51a2ef={'method':_0x46a4('0x1c'),'uri':_0x3dbaad+_0x46a4('0x1d'),'headers':{'Authorization':_0x46a4('0x1e')+_0x312d86,'OData-Version':_0x46a4('0x1f')},'json':!![]};return rp(_0x51a2ef);})[_0x46a4('0x16')](function(_0x4e5b1a){var _0x4ff915=_0x4e5b1a[_0x46a4('0x20')];var _0x44818c=![];var _0x55d9d9=null;if(!_[_0x46a4('0x21')](_0x1bd041)){if(intUtil['validateEmail'](_0x1bd041[_0x46a4('0x22')])){_0x5abe4c[_0x46a4('0x23')]=_0x1bd041['email'];for(_0x55d9d9=0x0;_0x55d9d9<_0x4ff915[_0x46a4('0x24')];_0x55d9d9++){if(_0x4ff915[_0x55d9d9][_0x46a4('0x25')]===_0x1bd041['email']&&!_0x4ff915[_0x55d9d9][_0x46a4('0x26')]){_0x44818c=!![];logger[_0x46a4('0x27')]('['+[_0x4ce98c[_0x46a4('0x1a')]()]+_0x46a4('0x28')+_0x4ff915[_0x55d9d9][_0x46a4('0x29')]+'!');_0x5abe4c[_0x46a4('0x2a')]=_0x4ff915[_0x55d9d9][_0x46a4('0x29')];}}}}if(!_0x44818c){logger[_0x46a4('0x27')]('['+[_0x4ce98c[_0x46a4('0x1a')]()]+']\x20Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');_0x5abe4c[_0x46a4('0x23')]=_0x3574c9[_0x46a4('0x14')];for(_0x55d9d9=0x0;_0x55d9d9<_0x4ff915[_0x46a4('0x24')];_0x55d9d9++){if(_0x4ff915[_0x55d9d9][_0x46a4('0x25')]===_0x3574c9[_0x46a4('0x14')]){_0x5abe4c[_0x46a4('0x2a')]=_0x4ff915[_0x55d9d9][_0x46a4('0x29')];}}}_0x17d1bf(_0x5abe4c);})[_0x46a4('0x18')](function(_0x5a0292){_0x25e52b(_0x5a0292[_0x46a4('0x1b')]);});});}function createEndUser(_0x2a6658,_0x164362,_0x1fc272,_0x3de4ba,_0x5f3728,_0x20acae,_0x17f0af){return new Promise(function(_0x16ad2b,_0x9004c2){return getAuthToken(_0x164362,_0x1fc272,_0x20acae)[_0x46a4('0x16')](function(_0x35eb33){var _0x47f0dd=_0x20acae[_0x46a4('0x2b')]()===_0x46a4('0x2c')?_0x5f3728[_0x46a4('0x2d')]:_0x5f3728[_0x46a4('0x2e')];var _0x256e4c={'method':_0x46a4('0x12'),'uri':_0x3de4ba+'contacts','body':{'fullname':_0x47f0dd,'firstname':_0x47f0dd,'lastname':'_','mobilephone':null,'address1_telephone1':null,'ownerid@odata.bind':_0x46a4('0x2f')+_0x2a6658['userId']+')'},'headers':{'Authorization':_0x46a4('0x1e')+_0x35eb33,'OData-Version':_0x46a4('0x1f')},'json':!![],'resolveWithFullResponse':!![]};_0x256e4c[_0x46a4('0x30')][_0x17f0af]=_0x47f0dd;return rp(_0x256e4c);})[_0x46a4('0x16')](function(_0x146ce2){var _0x3a2658=_0x146ce2[_0x46a4('0x31')][_0x46a4('0x32')];var _0x48ef74=_0x3a2658['substring'](_0x3a2658['lastIndexOf']('(')+0x1,_0x3a2658[_0x46a4('0x33')](')'));_0x2a6658['enduserId']=_0x48ef74;_0x16ad2b(_0x2a6658);})[_0x46a4('0x18')](function(_0x597550){_0x9004c2(_0x597550['message']);});});}function getEndUser(_0x2f2775,_0x28d2ab,_0x29279f,_0x4b8e03,_0x3b54ec,_0x204b51,_0x5c3b11,_0x3d249b){var _0x44205f=_0x204b51[_0x46a4('0x2b')]()===_0x46a4('0x2c')?_0x3b54ec[_0x46a4('0x2d')]:_0x3b54ec[_0x46a4('0x2e')];return getAuthToken(_0x28d2ab,_0x29279f,_0x204b51)[_0x46a4('0x16')](function(_0x3f3dee){_0x3d249b=_0x3d249b?_0x3d249b:_0x46a4('0x34');var _0x245e18={'method':_0x46a4('0x1c'),'uri':_0x4b8e03+_0x46a4('0x35')+_0x3d249b+'&$filter='+_0x3d249b+_0x46a4('0x36')+_0x44205f[_0x46a4('0x37')]('+','%2b')+'\x27','headers':{'Authorization':_0x46a4('0x1e')+_0x3f3dee,'If-None-Match':null,'OData-Version':_0x46a4('0x1f')},'json':!![]};return rp(_0x245e18);})[_0x46a4('0x16')](function(_0x494b12){var _0x302423=![];if(!_0x494b12)return _0x302423;var _0x11b6fa=_0x494b12[_0x46a4('0x20')];for(var _0xba3214=0x0;_0xba3214<_0x11b6fa['length'];_0xba3214++){if(_0x11b6fa[_0xba3214][_0x3d249b]===_0x44205f){_0x302423=!![];_0x2f2775['enduserId']=_0x11b6fa[_0xba3214][_0x46a4('0x38')];}}return _0x302423;})[_0x46a4('0x16')](function(_0xa72d22){if(_0xa72d22)return _0x2f2775;if(_0x5c3b11==='nothing'){logger[_0x46a4('0x27')]('['+[_0x204b51[_0x46a4('0x1a')]()]+_0x46a4('0x39'));return _0x2f2775;}return createEndUser(_0x2f2775,_0x28d2ab,_0x29279f,_0x4b8e03,_0x3b54ec,_0x204b51,_0x3d249b)[_0x46a4('0x16')](function(_0x490f32){logger[_0x46a4('0x27')]('['+[_0x204b51[_0x46a4('0x1a')]()]+_0x46a4('0x3a'),_0x490f32['enduserId']);return _0x490f32;});});}function getCustomFields(_0x1891cf,_0x198c50,_0x1fe03c){var _0x524b55={};if(_0x1891cf[_0x46a4('0x24')]>0x0){_['forEach'](_0x1891cf,function(_0x44d8ae){if(_['includes'](['string',_0x46a4('0x3b')],_0x44d8ae[_0x46a4('0x3c')])&&_0x44d8ae['nameField']&&!_0x44d8ae['customField']){var _0x4f22a6=_0x44d8ae[_0x46a4('0x3d')][_0x46a4('0x2b')]();var _0x4285cf=_0x4f22a6[_0x46a4('0x3e')](0x0,_0x4f22a6[_0x46a4('0x3f')]('_'));var _0x204f23=_0x4f22a6[_0x46a4('0x3e')](_0x4f22a6[_0x46a4('0x3f')]('_')+0x1);if(_0x4285cf===_0x1fe03c){_0x524b55[_0x204f23]=_0x44d8ae[_0x46a4('0x40')];}}});}return _0x524b55;}function getTicket(_0x2ef1f8,_0x21e3f,_0x5d0c8f,_0x1d27c9,_0xd97f1a,_0x8f12b0,_0x3bafba){return new Promise(function(_0x487961,_0x6fd6fd){var _0x358b79;return getAuthToken(_0x21e3f,_0x5d0c8f,_0x3bafba)[_0x46a4('0x16')](function(_0x1e0738){if(_0x8f12b0[_0x46a4('0x41')]===_0x46a4('0x42')){_0x358b79={'method':_0x46a4('0x12'),'uri':_0x1d27c9+_0x46a4('0x43'),'body':Object['assign']({},{'title':intUtil[_0x46a4('0x44')](_0x8f12b0['Subjects'],_0xd97f1a,'\x20'),'description':intUtil[_0x46a4('0x44')](_0x8f12b0[_0x46a4('0x45')],_0xd97f1a,'\x0a'),'customerid_contact@odata.bind':_0x2ef1f8[_0x46a4('0x46')]?_0x46a4('0x47')+_0x2ef1f8['enduserId']+')':undefined,'ownerid@odata.bind':_0x46a4('0x2f')+_0x2ef1f8[_0x46a4('0x2a')]+')','caseorigincode':'1'},getCustomFields(_0x8f12b0[_0x46a4('0x48')],_0xd97f1a,_0x8f12b0[_0x46a4('0x41')])),'headers':{'Authorization':_0x46a4('0x1e')+_0x1e0738,'OData-Version':_0x46a4('0x1f')},'json':!![],'resolveWithFullResponse':!![]};}if(_0x8f12b0[_0x46a4('0x41')]===_0x46a4('0x49')){var _0x6d3632=_0x2ef1f8[_0x46a4('0x46')]?[{'partyid_systemuser@odata.bind':_0x46a4('0x2f')+_0x2ef1f8[_0x46a4('0x2a')]+')','participationtypemask':_0x2ef1f8[_0x46a4('0x4a')]===_0x46a4('0x4b')?0x2:0x1},{'partyid_contact@odata.bind':_0x46a4('0x47')+_0x2ef1f8[_0x46a4('0x46')]+')','participationtypemask':_0x2ef1f8['callDirection']===_0x46a4('0x4b')?0x1:0x2}]:[{'partyid_systemuser@odata.bind':_0x46a4('0x2f')+_0x2ef1f8[_0x46a4('0x2a')]+')','participationtypemask':_0x2ef1f8[_0x46a4('0x4a')]===_0x46a4('0x4b')?0x2:0x1}];_0x358b79={'method':_0x46a4('0x12'),'uri':_0x1d27c9+_0x46a4('0x4c'),'body':Object[_0x46a4('0x4d')]({},{'subject':intUtil['getString'](_0x8f12b0[_0x46a4('0x4e')],_0xd97f1a,'\x20'),'phonenumber':String(_0xd97f1a[_0x46a4('0x2e')]),'description':intUtil[_0x46a4('0x44')](_0x8f12b0['Descriptions'],_0xd97f1a,'\x0a'),'regardingobjectid_contact@odata.bind':_0x2ef1f8['enduserId']?_0x46a4('0x47')+_0x2ef1f8[_0x46a4('0x46')]+')':undefined,'ownerid@odata.bind':_0x46a4('0x2f')+_0x2ef1f8['userId']+')','directioncode':_0x2ef1f8['callDirection']==='queue'?![]:!![],'phonecall_activity_parties':_0x6d3632},getCustomFields(_0x8f12b0[_0x46a4('0x48')],_0xd97f1a,_0x8f12b0['ticketType'])),'headers':{'Authorization':_0x46a4('0x1e')+_0x1e0738,'OData-Version':_0x46a4('0x1f')},'json':!![],'resolveWithFullResponse':!![]};}return rp(_0x358b79);})[_0x46a4('0x16')](function(_0x1fe5e8){var _0x265f06=_0x1fe5e8['headers']['odata-entityid'];var _0x491df3=_0x265f06[_0x46a4('0x3e')](_0x265f06['lastIndexOf']('(')+0x1,_0x265f06[_0x46a4('0x33')](')'));_0x2ef1f8[_0x46a4('0x4f')]=_0x491df3;_0x487961(_0x2ef1f8);})[_0x46a4('0x18')](function(_0x4bec74){_0x6fd6fd(_0x4bec74[_0x46a4('0x1b')]);});});}function emit(_0x1491bd,_0x216722,_0x5c2dfe,_0x5cd511){var _0x4b8c1b={'uri':util['format'](_0x46a4('0x50'),_0x1491bd,_0x5c2dfe,_0x5cd511)};io['to'](util['format'](_0x46a4('0x51'),_0x216722))[_0x46a4('0x52')](_0x46a4('0x53'),_0x4b8c1b);}exports['cs']=function(_0x591e84,_0x292afb,_0x2a6397,_0xad2221,_0x89be22,_0x36b806,_0x37731b,_0x33e3b0){var _0x2912fd={};_0x36b806['remoteUri']=_0x36b806['modernAuthentication']?intUtil[_0x46a4('0x54')](_0x36b806[_0x46a4('0xc')][_0x46a4('0xd')]):intUtil['stripTrailingSlash'](_0x36b806[_0x46a4('0x13')]);_0x36b806[_0x46a4('0x55')]=intUtil[_0x46a4('0x54')](_0x36b806[_0x46a4('0x55')]);_0x2912fd['callDirection']=_0x33e3b0==='queue'||_0x33e3b0===_0x46a4('0x56')?_0x46a4('0x4b'):_0x46a4('0x2c');var _0x353216=_0x36b806[_0x46a4('0xb')]?util[_0x46a4('0x57')](_0x46a4('0x58'),_0x36b806[_0x46a4('0xc')][_0x46a4('0xd')]):util[_0x46a4('0x57')](_0x46a4('0x58'),_0x36b806['remoteUri']);var _0x5dbce1=util['format'](_0x46a4('0x59'),_0x36b806[_0x46a4('0xe')]);var _0x5cb8bf=util[_0x46a4('0x57')](_0x46a4('0x5a'),_0x36b806['serverUrl'],_0x292afb[_0x46a4('0x5b')],md5(_0x292afb['uniqueid']));if(_0x89be22&&_0x89be22['monitor_format']){logger['info']('[QUEUE]',_0x46a4('0x5c'));_0x292afb[_0x46a4('0x5d')]=_0x5cb8bf;}else if(_0x37731b&&_0x37731b['recordingFormat']&&_0x37731b[_0x46a4('0x5e')]!==_0x46a4('0x5f')){logger[_0x46a4('0x27')](_0x46a4('0x60'),_0x46a4('0x5c'));_0x292afb[_0x46a4('0x5d')]=_0x5cb8bf;}else{_0x292afb['recordingURL']='';}return getUser(_0x2912fd,_0x36b806,_0xad2221,_0x5dbce1,_0x353216,_0x33e3b0)[_0x46a4('0x16')](function(_0x58f70f){logger['info']('['+_0x33e3b0['toUpperCase']()+']\x20The\x20User\x20ID\x20is:',_0x58f70f[_0x46a4('0x2a')]);logger['info']('['+_0x33e3b0[_0x46a4('0x1a')]()+']\x20The\x20User\x20email\x20is:',_0x58f70f[_0x46a4('0x23')]);return getEndUser(_0x58f70f,_0x36b806,_0x5dbce1,_0x353216,_0x292afb,_0x33e3b0,_0x2a6397[_0x46a4('0x61')],_0x2a6397['additionalSearchContact']);})[_0x46a4('0x16')](function(_0x29aace){logger[_0x46a4('0x27')]('['+_0x33e3b0[_0x46a4('0x1a')]()+_0x46a4('0x62'),_0x29aace['enduserId']);logger[_0x46a4('0x27')]('['+_0x33e3b0[_0x46a4('0x1a')]()+']\x20The\x20Enduser\x20phone\x20is:',_0x292afb[_0x46a4('0x2e')]);return getTicket(_0x29aace,_0x36b806,_0x5dbce1,_0x353216,_0x292afb,_0x2a6397,_0x33e3b0);})[_0x46a4('0x16')](function(_0x3c7b91){logger[_0x46a4('0x27')](util[_0x46a4('0x57')]('['+_0x33e3b0[_0x46a4('0x1a')]()+_0x46a4('0x63'),_0x2a6397[_0x46a4('0x41')],_0x3c7b91[_0x46a4('0x4f')]));logger[_0x46a4('0x27')](util['format']('['+_0x33e3b0[_0x46a4('0x1a')]()+']\x20Call\x20direction:\x20%s',_0x33e3b0));if(_0x33e3b0!==_0x46a4('0x56')){logger['info']('['+_0x33e3b0[_0x46a4('0x1a')]()+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x36b806['remoteUri'],_0xad2221['name'],_0x2a6397[_0x46a4('0x41')],_0x3c7b91['ticketId']);}})[_0x46a4('0x18')](function(_0x44426a){logger[_0x46a4('0x19')]('['+_0x33e3b0[_0x46a4('0x1a')]()+_0x46a4('0x64'),_0x44426a[_0x46a4('0x1b')]);});};
\ No newline at end of file
index b8181c9..a7db8df 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2b7a=['Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','The\x20Enduser\x20ID\x20is:','Ticket\x20created!','trigger:browser:url','%s/helpdesk/tickets/%d','error','[QUEUE]','recordingFormat','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','catch','unmanaged','monitor_format','toUpperCase','lastevent','request-promise','md5','util','./util','../../../../config/environment','freshdesk','redis','defaults','application/json','emit','info','Creating\x20new\x20ticket...','merge','calleridname','calleridnum','getString','Subjects','Descriptions','<br>','Tags','name','Fields','mapValues','keyBy','custom_fields','value','format','remoteUri','validateEmail','then','length','Agent\x20found!','find','contact','email','%s/api/v2/agents/me','Admin\x20account\x20selected.','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','POST','Enduser\x20created.','Basic\x20%s','toString','base64','debug','[HTTP]','stringify','GET','forEach','includes','type','nameField','content','picklist','idField','customField','push','variable','variableName','customVariable','Variable','toLowerCase','stripTrailingSlash','serverUrl'];(function(_0x2b64ab,_0x37f9de){var _0xd292c8=function(_0x51ca85){while(--_0x51ca85){_0x2b64ab['push'](_0x2b64ab['shift']());}};_0xd292c8(++_0x37f9de);}(_0x2b7a,0x70));var _0xa2b7=function(_0x45f15d,_0x53bece){_0x45f15d=_0x45f15d-0x0;var _0x143267=_0x2b7a[_0x45f15d];return _0x143267;};'use strict';var _=require('lodash');var rp=require(_0xa2b7('0x0'));var md5=require(_0xa2b7('0x1'));var util=require(_0xa2b7('0x2'));var Redis=require('ioredis');var intUtil=require(_0xa2b7('0x3'));var config=require(_0xa2b7('0x4'));var logger=require('../../../../config/logger')(_0xa2b7('0x5'));config[_0xa2b7('0x6')]=_[_0xa2b7('0x7')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xa2b7('0x6')]));var headers={'Content-Type':_0xa2b7('0x8'),'Accept':_0xa2b7('0x8')};function emit(_0x1cb79c,_0x286dcc,_0x309b3e){io['to'](_0x1cb79c)[_0xa2b7('0x9')](_0x286dcc,_0x309b3e);}function getTicket(_0x50894f,_0x46e921,_0x45bffc,_0x5cc18f,_0x1782ad){logger[_0xa2b7('0xa')](_0xa2b7('0xb'));var _0x595832=_[_0xa2b7('0xc')]({'responder_id':_0x46e921['id'],'requester_id':_0x45bffc['id'],'name':util['format']('Caller\x20-\x20%s',_0x1782ad[_0xa2b7('0xd')]),'phone':_0x1782ad[_0xa2b7('0xe')],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xa2b7('0xf')](_0x5cc18f[_0xa2b7('0x10')],_0x1782ad,'\x20'),'description':intUtil['getString'](_0x5cc18f[_0xa2b7('0x11')],_0x1782ad,_0xa2b7('0x12')),'tags':getTags(_0x5cc18f[_0xa2b7('0x13')],_0xa2b7('0x14'))},getCustomFields(_0x5cc18f[_0xa2b7('0x15')],_0x1782ad));_0x595832['custom_fields']=_[_0xa2b7('0x16')](_[_0xa2b7('0x17')](_0x595832[_0xa2b7('0x18')],'id'),_0xa2b7('0x19'));return request({'uri':util[_0xa2b7('0x1a')]('%s/api/v2/tickets',_0x50894f[_0xa2b7('0x1b')]),'method':'POST','body':_0x595832})['then'](function(_0x5dc2bc){logger['info']('Ticket\x20created!');return _0x5dc2bc;});}function getUser(_0x3f61c0,_0x4bd2d3){if(intUtil[_0xa2b7('0x1c')](_0x4bd2d3)){return request({'uri':util[_0xa2b7('0x1a')]('%s/api/v2/agents',_0x3f61c0[_0xa2b7('0x1b')]),'qs':{'email':_0x4bd2d3}})[_0xa2b7('0x1d')](function(_0x368b9a){if(_0x368b9a[_0xa2b7('0x1e')]){logger[_0xa2b7('0xa')](_0xa2b7('0x1f'));return _[_0xa2b7('0x20')](_0x368b9a,function(_0x352d23){return _0x352d23[_0xa2b7('0x21')][_0xa2b7('0x22')]===_0x4bd2d3;});}else{logger[_0xa2b7('0xa')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util[_0xa2b7('0x1a')](_0xa2b7('0x23'),_0x3f61c0['remoteUri'])})[_0xa2b7('0x1d')](function(_0x774199){logger['info'](_0xa2b7('0x24'));return _0x774199;});}});}else{logger['info'](_0xa2b7('0x25'));return request({'uri':util[_0xa2b7('0x1a')]('%s/api/v2/agents/me',_0x3f61c0[_0xa2b7('0x1b')])})[_0xa2b7('0x1d')](function(_0x2b4e82){logger[_0xa2b7('0xa')](_0xa2b7('0x24'));return _0x2b4e82;});}}function getEndUser(_0x517698,_0x576ca2,_0x15afee){logger[_0xa2b7('0xa')](_0xa2b7('0x26'),_0x15afee);return request({'uri':util[_0xa2b7('0x1a')](_0xa2b7('0x27'),_0x517698[_0xa2b7('0x1b')]),'qs':{'phone':_0x15afee}})[_0xa2b7('0x1d')](function(_0xbaf3fe){if(_0xbaf3fe[_0xa2b7('0x1e')]){logger[_0xa2b7('0xa')](_0xa2b7('0x28'));return _[_0xa2b7('0x20')](_0xbaf3fe,{'phone':_0x15afee});}else{logger[_0xa2b7('0xa')]('Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!');return request({'uri':util[_0xa2b7('0x1a')](_0xa2b7('0x27'),_0x517698[_0xa2b7('0x1b')]),'method':_0xa2b7('0x29'),'body':{'name':_0x576ca2,'phone':_0x15afee}})[_0xa2b7('0x1d')](function(_0x52ce73){logger[_0xa2b7('0xa')](_0xa2b7('0x2a'));return _0x52ce73;});}});}function getAuth(_0x1dff34){return util[_0xa2b7('0x1a')](_0xa2b7('0x2b'),new Buffer(_0x1dff34['apiKey']+':X')[_0xa2b7('0x2c')](_0xa2b7('0x2d')));}function request(_0x5aa5bc){logger[_0xa2b7('0x2e')](_0xa2b7('0x2f'),JSON[_0xa2b7('0x30')](_0x5aa5bc));return rp(_[_0xa2b7('0x7')](_0x5aa5bc,{'method':_0xa2b7('0x31'),'headers':headers,'json':!![]}));}function getTags(_0x47f4a8,_0x516778){var _0x35c544=[];if(_0x47f4a8&&_0x47f4a8[_0xa2b7('0x1e')]>0x0){_0x35c544=_['map'](_0x47f4a8,_0x516778);}return _0x35c544;}function getCustomFields(_0x311b6b,_0x213248){var _0x560fe4=[];var _0x1d80e8={'custom_fields':[]};if(_0x311b6b[_0xa2b7('0x1e')]>0x0){_[_0xa2b7('0x32')](_0x311b6b,function(_0x2c54e3){if(_[_0xa2b7('0x33')](['string','picklist'],_0x2c54e3[_0xa2b7('0x34')])&&_0x2c54e3[_0xa2b7('0x35')]&&!_0x2c54e3['customField']){_0x1d80e8[_0x2c54e3[_0xa2b7('0x35')]['toLowerCase']()]=_0x2c54e3[_0xa2b7('0x36')]['toString']();}else if(_[_0xa2b7('0x33')](['string',_0xa2b7('0x37')],_0x2c54e3[_0xa2b7('0x34')])&&_0x2c54e3[_0xa2b7('0x38')]&&_0x2c54e3[_0xa2b7('0x39')]){_0x1d80e8[_0xa2b7('0x18')][_0xa2b7('0x3a')]({'id':_0x2c54e3['idField'],'value':_0x2c54e3[_0xa2b7('0x36')]['toString']()});}else if(_0x2c54e3[_0xa2b7('0x34')]===_0xa2b7('0x3b')&&_0x2c54e3[_0xa2b7('0x3c')]&&_0x2c54e3['idField']&&_0x2c54e3[_0xa2b7('0x39')]){_0x213248[_0x2c54e3[_0xa2b7('0x3c')]]&&_0x1d80e8['custom_fields']['push']({'id':_0x2c54e3[_0xa2b7('0x38')],'value':_0x213248[_0x2c54e3[_0xa2b7('0x3c')]][_0xa2b7('0x2c')]()});}else if(_0x2c54e3['type']===_0xa2b7('0x3d')&&_0x2c54e3[_0xa2b7('0x3e')]&&_0x2c54e3[_0xa2b7('0x3e')][_0xa2b7('0x14')]&&_0x2c54e3['idField']&&_0x2c54e3[_0xa2b7('0x39')]){_0x213248[_0x2c54e3[_0xa2b7('0x3e')]['name'][_0xa2b7('0x3f')]()]&&_0x1d80e8[_0xa2b7('0x18')][_0xa2b7('0x3a')]({'id':_0x2c54e3['idField'],'value':_0x213248[_0x2c54e3[_0xa2b7('0x3e')][_0xa2b7('0x14')][_0xa2b7('0x3f')]()][_0xa2b7('0x2c')]()});}});}return _0x1d80e8;}exports['queue']=function(_0x2abb0f,_0xfd6da4,_0x1c6fe3,_0x27409b,_0x6bb333,_0xd9047a){var _0x395ed8,_0x3d8f3a;_0xd9047a[_0xa2b7('0x1b')]=intUtil[_0xa2b7('0x40')](_0xd9047a[_0xa2b7('0x1b')]);_0xd9047a[_0xa2b7('0x41')]=intUtil[_0xa2b7('0x40')](_0xd9047a[_0xa2b7('0x41')]);if(_0x6bb333&&_0x6bb333['monitor_format']){logger[_0xa2b7('0xa')]('[QUEUE]',_0xa2b7('0x42'));_0xfd6da4[_0xa2b7('0x43')]=util[_0xa2b7('0x1a')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0xd9047a[_0xa2b7('0x41')],_0xfd6da4[_0xa2b7('0x44')],md5(_0xfd6da4['uniqueid']));}else{_0xfd6da4[_0xa2b7('0x43')]='';}headers[_0xa2b7('0x45')]=getAuth(_0xd9047a);return getUser(_0xd9047a,_0x27409b[_0xa2b7('0x22')])[_0xa2b7('0x1d')](function(_0x48a899){_0x395ed8=_0x48a899;logger[_0xa2b7('0xa')]('The\x20User\x20ID\x20is:',_0x395ed8['id']);return getEndUser(_0xd9047a,_0xfd6da4['calleridname'],_0xfd6da4[_0xa2b7('0xe')]);})['then'](function(_0x4ad040){_0x3d8f3a=_0x4ad040;logger[_0xa2b7('0xa')](_0xa2b7('0x46'),_0x3d8f3a['id']);return getTicket(_0xd9047a,_0x395ed8,_0x3d8f3a,_0x1c6fe3,_0xfd6da4);})['then'](function(_0x5918ce){if(_0x5918ce&&_0x5918ce['id']){logger['info'](_0xa2b7('0x47'));logger[_0xa2b7('0xa')]('The\x20Ticket\x20ID\x20is:',_0x5918ce['id']);logger[_0xa2b7('0xa')]('[QUEUE]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xa2b7('0x1a')]('user:%s',_0x27409b[_0xa2b7('0x14')]),_0xa2b7('0x48'),{'uri':util[_0xa2b7('0x1a')](_0xa2b7('0x49'),_0xd9047a[_0xa2b7('0x1b')],_0x5918ce['id'])});}})['catch'](function(_0x4284e1){logger[_0xa2b7('0x4a')](_0xa2b7('0x4b'),JSON[_0xa2b7('0x30')](_0x4284e1));});};exports['outbound']=function(_0x307c3c,_0x1068c7,_0x4abcaa,_0x21c91b,_0x5f0834,_0x69825e,_0x2856cb){var _0x232568,_0x1dc792;_0x69825e[_0xa2b7('0x1b')]=intUtil[_0xa2b7('0x40')](_0x69825e[_0xa2b7('0x1b')]);_0x69825e[_0xa2b7('0x41')]=intUtil['stripTrailingSlash'](_0x69825e[_0xa2b7('0x41')]);if(_0x2856cb&&_0x2856cb['recordingFormat']&&_0x2856cb[_0xa2b7('0x4c')]!=='none'){logger[_0xa2b7('0xa')](_0xa2b7('0x4d'),_0xa2b7('0x42'));_0x1068c7[_0xa2b7('0x43')]=util[_0xa2b7('0x1a')](_0xa2b7('0x4e'),_0x69825e[_0xa2b7('0x41')],_0x1068c7[_0xa2b7('0x44')],md5(_0x1068c7['uniqueid']));}headers[_0xa2b7('0x45')]=getAuth(_0x69825e);return getUser(_0x69825e,_0x21c91b['email'])['then'](function(_0x528411){_0x232568=_0x528411;logger[_0xa2b7('0xa')](_0xa2b7('0x4f'),_0x232568['id']);return getEndUser(_0x69825e,_0x1068c7[_0xa2b7('0x50')],_0x1068c7[_0xa2b7('0x51')]);})['then'](function(_0x208f0e){_0x1dc792=_0x208f0e;logger['info']('The\x20Enduser\x20ID\x20is:',_0x1dc792['id']);return getTicket(_0x69825e,_0x232568,_0x1dc792,_0x4abcaa,_0x1068c7);})['then'](function(_0xc4be3d){if(_0xc4be3d&&_0xc4be3d['id']){logger['info'](_0xa2b7('0x47'));logger[_0xa2b7('0xa')](_0xa2b7('0x52'),_0xc4be3d['id']);logger['info'](_0xa2b7('0x4d'),_0xa2b7('0x53'));emit(util[_0xa2b7('0x1a')]('user:%s',_0x21c91b[_0xa2b7('0x14')]),_0xa2b7('0x48'),{'uri':util[_0xa2b7('0x1a')]('%s/helpdesk/tickets/%d',_0x69825e['remoteUri'],_0xc4be3d['id'])});}})[_0xa2b7('0x54')](function(_0x110dfa){logger[_0xa2b7('0x4a')](_0xa2b7('0x4d'),JSON['stringify'](_0x110dfa));});};exports[_0xa2b7('0x55')]=function(_0x1fe7b1,_0x380129,_0x418320,_0x40989e,_0xf94950,_0x3bc1be){var _0x226cf7,_0x14f92e;_0x3bc1be[_0xa2b7('0x1b')]=intUtil[_0xa2b7('0x40')](_0x3bc1be[_0xa2b7('0x1b')]);_0x3bc1be[_0xa2b7('0x41')]=intUtil[_0xa2b7('0x40')](_0x3bc1be['serverUrl']);if(_0xf94950&&_0xf94950[_0xa2b7('0x56')]){logger['info']('['+_0x380129['lastevent'][_0xa2b7('0x57')]()+']',_0xa2b7('0x42'));_0x380129[_0xa2b7('0x43')]=util[_0xa2b7('0x1a')](_0xa2b7('0x4e'),_0x3bc1be[_0xa2b7('0x41')],_0x380129[_0xa2b7('0x44')],md5(_0x380129['uniqueid']));}else{_0x380129['recordingURL']='';}headers[_0xa2b7('0x45')]=getAuth(_0x3bc1be);return getUser(_0x3bc1be,'')[_0xa2b7('0x1d')](function(_0x26fa41){_0x226cf7=_0x26fa41;logger[_0xa2b7('0xa')](_0xa2b7('0x4f'),_0x226cf7['id']);return getEndUser(_0x3bc1be,_0x380129['calleridname'],_0x380129['calleridnum']);})[_0xa2b7('0x1d')](function(_0x52cf17){_0x14f92e=_0x52cf17;logger[_0xa2b7('0xa')](_0xa2b7('0x46'),_0x14f92e['id']);return getTicket(_0x3bc1be,_0x226cf7,_0x14f92e,_0x418320,_0x380129);})[_0xa2b7('0x1d')](function(_0x5b32bd){if(_0x5b32bd){logger[_0xa2b7('0xa')](_0xa2b7('0x47'));logger[_0xa2b7('0xa')](_0xa2b7('0x52'),_0x5b32bd['id']);}})[_0xa2b7('0x54')](function(_0x2ba4f9){logger[_0xa2b7('0x4a')]('['+_0x380129[_0xa2b7('0x58')][_0xa2b7('0x57')]()+']',JSON['stringify'](_0x2ba4f9));});};
\ No newline at end of file
+var _0x38fe=['uniqueid','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/helpdesk/tickets/%d','catch','error','[QUEUE]','recordingFormat','none','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','Authorization','destcalleridname','destcalleridnum','[OUTBOUND]','unmanaged','lastevent','The\x20User\x20ID\x20is:','toUpperCase','lodash','request-promise','md5','ioredis','./util','../../../../config/environment','../../../../config/logger','freshdesk','redis','socket.io-emitter','application/json','emit','Creating\x20new\x20ticket...','format','Caller\x20-\x20%s','calleridname','getString','Subjects','Descriptions','Tags','name','Fields','custom_fields','mapValues','keyBy','remoteUri','then','info','Ticket\x20created!','validateEmail','length','Agent\x20found!','find','contact','email','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Invalid\x20email\x20format,\x20using\x20the\x20admin\x20account!','Admin\x20account\x20selected.','Searching\x20enduser\x20with\x20phone','%s/api/v2/contacts','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','POST','apiKey','base64','[HTTP]','stringify','defaults','GET','map','forEach','includes','picklist','type','nameField','customField','toLowerCase','toString','string','push','idField','content','variable','variableName','customVariable','Variable','queue','stripTrailingSlash','serverUrl','recordingURL'];(function(_0x4e676e,_0x2a7c6d){var _0x336a3c=function(_0x4767c4){while(--_0x4767c4){_0x4e676e['push'](_0x4e676e['shift']());}};_0x336a3c(++_0x2a7c6d);}(_0x38fe,0xd1));var _0xe38f=function(_0x3236b0,_0x4d219a){_0x3236b0=_0x3236b0-0x0;var _0x57d608=_0x38fe[_0x3236b0];return _0x57d608;};'use strict';var _=require(_0xe38f('0x0'));var rp=require(_0xe38f('0x1'));var md5=require(_0xe38f('0x2'));var util=require('util');var Redis=require(_0xe38f('0x3'));var intUtil=require(_0xe38f('0x4'));var config=require(_0xe38f('0x5'));var logger=require(_0xe38f('0x6'))(_0xe38f('0x7'));config[_0xe38f('0x8')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var io=require(_0xe38f('0x9'))(new Redis(config[_0xe38f('0x8')]));var headers={'Content-Type':_0xe38f('0xa'),'Accept':_0xe38f('0xa')};function emit(_0x4c1211,_0x203948,_0x573e26){io['to'](_0x4c1211)[_0xe38f('0xb')](_0x203948,_0x573e26);}function getTicket(_0x421414,_0x109c53,_0x3dea73,_0xfc625,_0xa5c94a){logger['info'](_0xe38f('0xc'));var _0x504dd2=_['merge']({'responder_id':_0x109c53['id'],'requester_id':_0x3dea73['id'],'name':util[_0xe38f('0xd')](_0xe38f('0xe'),_0xa5c94a[_0xe38f('0xf')]),'phone':_0xa5c94a['calleridnum'],'source':0x3,'priority':0x1,'status':0x2,'subject':intUtil[_0xe38f('0x10')](_0xfc625[_0xe38f('0x11')],_0xa5c94a,'\x20'),'description':intUtil[_0xe38f('0x10')](_0xfc625[_0xe38f('0x12')],_0xa5c94a,'<br>'),'tags':getTags(_0xfc625[_0xe38f('0x13')],_0xe38f('0x14'))},getCustomFields(_0xfc625[_0xe38f('0x15')],_0xa5c94a));_0x504dd2[_0xe38f('0x16')]=_[_0xe38f('0x17')](_[_0xe38f('0x18')](_0x504dd2[_0xe38f('0x16')],'id'),'value');return request({'uri':util[_0xe38f('0xd')]('%s/api/v2/tickets',_0x421414[_0xe38f('0x19')]),'method':'POST','body':_0x504dd2})[_0xe38f('0x1a')](function(_0xad62a4){logger[_0xe38f('0x1b')](_0xe38f('0x1c'));return _0xad62a4;});}function getUser(_0x13d383,_0x5825eb){if(intUtil[_0xe38f('0x1d')](_0x5825eb)){return request({'uri':util[_0xe38f('0xd')]('%s/api/v2/agents',_0x13d383[_0xe38f('0x19')]),'qs':{'email':_0x5825eb}})[_0xe38f('0x1a')](function(_0x349efb){if(_0x349efb[_0xe38f('0x1e')]){logger[_0xe38f('0x1b')](_0xe38f('0x1f'));return _[_0xe38f('0x20')](_0x349efb,function(_0x2ffdb3){return _0x2ffdb3[_0xe38f('0x21')][_0xe38f('0x22')]===_0x5825eb;});}else{logger[_0xe38f('0x1b')](_0xe38f('0x23'));return request({'uri':util[_0xe38f('0xd')]('%s/api/v2/agents/me',_0x13d383['remoteUri'])})[_0xe38f('0x1a')](function(_0xa32d14){logger['info']('Admin\x20account\x20selected.');return _0xa32d14;});}});}else{logger[_0xe38f('0x1b')](_0xe38f('0x24'));return request({'uri':util[_0xe38f('0xd')]('%s/api/v2/agents/me',_0x13d383[_0xe38f('0x19')])})['then'](function(_0x47e459){logger['info'](_0xe38f('0x25'));return _0x47e459;});}}function getEndUser(_0x23a15e,_0x46e68f,_0x423896){logger[_0xe38f('0x1b')](_0xe38f('0x26'),_0x423896);return request({'uri':util[_0xe38f('0xd')](_0xe38f('0x27'),_0x23a15e[_0xe38f('0x19')]),'qs':{'phone':_0x423896}})[_0xe38f('0x1a')](function(_0x384aff){if(_0x384aff[_0xe38f('0x1e')]){logger[_0xe38f('0x1b')](_0xe38f('0x28'));return _[_0xe38f('0x20')](_0x384aff,{'phone':_0x423896});}else{logger[_0xe38f('0x1b')](_0xe38f('0x29'));return request({'uri':util[_0xe38f('0xd')](_0xe38f('0x27'),_0x23a15e[_0xe38f('0x19')]),'method':_0xe38f('0x2a'),'body':{'name':_0x46e68f,'phone':_0x423896}})[_0xe38f('0x1a')](function(_0x1ff869){logger['info']('Enduser\x20created.');return _0x1ff869;});}});}function getAuth(_0x2bfddf){return util[_0xe38f('0xd')]('Basic\x20%s',new Buffer(_0x2bfddf[_0xe38f('0x2b')]+':X')['toString'](_0xe38f('0x2c')));}function request(_0x230619){logger['debug'](_0xe38f('0x2d'),JSON[_0xe38f('0x2e')](_0x230619));return rp(_[_0xe38f('0x2f')](_0x230619,{'method':_0xe38f('0x30'),'headers':headers,'json':!![]}));}function getTags(_0x271967,_0x45d61a){var _0x448d43=[];if(_0x271967&&_0x271967[_0xe38f('0x1e')]>0x0){_0x448d43=_[_0xe38f('0x31')](_0x271967,_0x45d61a);}return _0x448d43;}function getCustomFields(_0x2aadc6,_0x240078){var _0x35d6fa=[];var _0x4660b6={'custom_fields':[]};if(_0x2aadc6[_0xe38f('0x1e')]>0x0){_[_0xe38f('0x32')](_0x2aadc6,function(_0x51b342){if(_[_0xe38f('0x33')](['string',_0xe38f('0x34')],_0x51b342[_0xe38f('0x35')])&&_0x51b342[_0xe38f('0x36')]&&!_0x51b342[_0xe38f('0x37')]){_0x4660b6[_0x51b342[_0xe38f('0x36')][_0xe38f('0x38')]()]=_0x51b342['content'][_0xe38f('0x39')]();}else if(_[_0xe38f('0x33')]([_0xe38f('0x3a'),_0xe38f('0x34')],_0x51b342[_0xe38f('0x35')])&&_0x51b342['idField']&&_0x51b342[_0xe38f('0x37')]){_0x4660b6[_0xe38f('0x16')][_0xe38f('0x3b')]({'id':_0x51b342[_0xe38f('0x3c')],'value':_0x51b342[_0xe38f('0x3d')][_0xe38f('0x39')]()});}else if(_0x51b342[_0xe38f('0x35')]===_0xe38f('0x3e')&&_0x51b342[_0xe38f('0x3f')]&&_0x51b342[_0xe38f('0x3c')]&&_0x51b342[_0xe38f('0x37')]){_0x240078[_0x51b342[_0xe38f('0x3f')]]&&_0x4660b6[_0xe38f('0x16')]['push']({'id':_0x51b342[_0xe38f('0x3c')],'value':_0x240078[_0x51b342['variableName']]['toString']()});}else if(_0x51b342['type']===_0xe38f('0x40')&&_0x51b342[_0xe38f('0x41')]&&_0x51b342[_0xe38f('0x41')]['name']&&_0x51b342[_0xe38f('0x3c')]&&_0x51b342[_0xe38f('0x37')]){_0x240078[_0x51b342[_0xe38f('0x41')][_0xe38f('0x14')]['toLowerCase']()]&&_0x4660b6[_0xe38f('0x16')][_0xe38f('0x3b')]({'id':_0x51b342['idField'],'value':_0x240078[_0x51b342[_0xe38f('0x41')][_0xe38f('0x14')][_0xe38f('0x38')]()][_0xe38f('0x39')]()});}});}return _0x4660b6;}exports[_0xe38f('0x42')]=function(_0x268bf0,_0x2d589f,_0x1e2a62,_0xc0fa20,_0x473dd9,_0x3667ed){var _0x491510,_0x3a9ec8;_0x3667ed[_0xe38f('0x19')]=intUtil[_0xe38f('0x43')](_0x3667ed[_0xe38f('0x19')]);_0x3667ed[_0xe38f('0x44')]=intUtil[_0xe38f('0x43')](_0x3667ed[_0xe38f('0x44')]);if(_0x473dd9&&_0x473dd9['monitor_format']){logger[_0xe38f('0x1b')]('[QUEUE]','Recording\x20is\x20enabled!');_0x2d589f[_0xe38f('0x45')]=util[_0xe38f('0xd')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x3667ed['serverUrl'],_0x2d589f[_0xe38f('0x46')],md5(_0x2d589f['uniqueid']));}else{_0x2d589f[_0xe38f('0x45')]='';}headers['Authorization']=getAuth(_0x3667ed);return getUser(_0x3667ed,_0xc0fa20[_0xe38f('0x22')])['then'](function(_0x24063c){_0x491510=_0x24063c;logger[_0xe38f('0x1b')]('The\x20User\x20ID\x20is:',_0x491510['id']);return getEndUser(_0x3667ed,_0x2d589f[_0xe38f('0xf')],_0x2d589f[_0xe38f('0x47')]);})[_0xe38f('0x1a')](function(_0x2596d0){_0x3a9ec8=_0x2596d0;logger[_0xe38f('0x1b')](_0xe38f('0x48'),_0x3a9ec8['id']);return getTicket(_0x3667ed,_0x491510,_0x3a9ec8,_0x1e2a62,_0x2d589f);})['then'](function(_0x299b84){if(_0x299b84&&_0x299b84['id']){logger[_0xe38f('0x1b')](_0xe38f('0x1c'));logger[_0xe38f('0x1b')](_0xe38f('0x49'),_0x299b84['id']);logger[_0xe38f('0x1b')]('[QUEUE]',_0xe38f('0x4a'));emit(util['format'](_0xe38f('0x4b'),_0xc0fa20['name']),_0xe38f('0x4c'),{'uri':util[_0xe38f('0xd')](_0xe38f('0x4d'),_0x3667ed['remoteUri'],_0x299b84['id'])});}})[_0xe38f('0x4e')](function(_0x4266c1){logger[_0xe38f('0x4f')](_0xe38f('0x50'),JSON[_0xe38f('0x2e')](_0x4266c1));});};exports['outbound']=function(_0x1d7249,_0x88ee6f,_0x2f19f7,_0x4cb2e7,_0x44271d,_0x2a793e,_0x38202d){var _0x38fc5b,_0x55f66f;_0x2a793e[_0xe38f('0x19')]=intUtil[_0xe38f('0x43')](_0x2a793e[_0xe38f('0x19')]);_0x2a793e[_0xe38f('0x44')]=intUtil[_0xe38f('0x43')](_0x2a793e[_0xe38f('0x44')]);if(_0x38202d&&_0x38202d[_0xe38f('0x51')]&&_0x38202d[_0xe38f('0x51')]!==_0xe38f('0x52')){logger[_0xe38f('0x1b')]('[OUTBOUND]',_0xe38f('0x53'));_0x88ee6f[_0xe38f('0x45')]=util[_0xe38f('0xd')](_0xe38f('0x54'),_0x2a793e['serverUrl'],_0x88ee6f[_0xe38f('0x46')],md5(_0x88ee6f[_0xe38f('0x46')]));}headers[_0xe38f('0x55')]=getAuth(_0x2a793e);return getUser(_0x2a793e,_0x4cb2e7[_0xe38f('0x22')])[_0xe38f('0x1a')](function(_0x2ff8ea){_0x38fc5b=_0x2ff8ea;logger['info']('The\x20User\x20ID\x20is:',_0x38fc5b['id']);return getEndUser(_0x2a793e,_0x88ee6f[_0xe38f('0x56')],_0x88ee6f[_0xe38f('0x57')]);})['then'](function(_0x393bfa){_0x55f66f=_0x393bfa;logger[_0xe38f('0x1b')](_0xe38f('0x48'),_0x55f66f['id']);return getTicket(_0x2a793e,_0x38fc5b,_0x55f66f,_0x2f19f7,_0x88ee6f);})['then'](function(_0x138884){if(_0x138884&&_0x138884['id']){logger[_0xe38f('0x1b')](_0xe38f('0x1c'));logger[_0xe38f('0x1b')](_0xe38f('0x49'),_0x138884['id']);logger[_0xe38f('0x1b')](_0xe38f('0x58'),_0xe38f('0x4a'));emit(util[_0xe38f('0xd')](_0xe38f('0x4b'),_0x4cb2e7[_0xe38f('0x14')]),'trigger:browser:url',{'uri':util[_0xe38f('0xd')](_0xe38f('0x4d'),_0x2a793e['remoteUri'],_0x138884['id'])});}})['catch'](function(_0x7ba972){logger[_0xe38f('0x4f')]('[OUTBOUND]',JSON[_0xe38f('0x2e')](_0x7ba972));});};exports[_0xe38f('0x59')]=function(_0x147d6a,_0x3f485a,_0x1321c7,_0x582a08,_0x3c9897,_0xa9aab){var _0x3838fe,_0x53a51b;_0xa9aab['remoteUri']=intUtil[_0xe38f('0x43')](_0xa9aab[_0xe38f('0x19')]);_0xa9aab['serverUrl']=intUtil[_0xe38f('0x43')](_0xa9aab[_0xe38f('0x44')]);if(_0x3c9897&&_0x3c9897['monitor_format']){logger[_0xe38f('0x1b')]('['+_0x3f485a[_0xe38f('0x5a')]['toUpperCase']()+']',_0xe38f('0x53'));_0x3f485a[_0xe38f('0x45')]=util[_0xe38f('0xd')](_0xe38f('0x54'),_0xa9aab['serverUrl'],_0x3f485a['uniqueid'],md5(_0x3f485a[_0xe38f('0x46')]));}else{_0x3f485a[_0xe38f('0x45')]='';}headers['Authorization']=getAuth(_0xa9aab);return getUser(_0xa9aab,'')[_0xe38f('0x1a')](function(_0x1345b3){_0x3838fe=_0x1345b3;logger['info'](_0xe38f('0x5b'),_0x3838fe['id']);return getEndUser(_0xa9aab,_0x3f485a[_0xe38f('0xf')],_0x3f485a['calleridnum']);})['then'](function(_0x3e2ee5){_0x53a51b=_0x3e2ee5;logger[_0xe38f('0x1b')]('The\x20Enduser\x20ID\x20is:',_0x53a51b['id']);return getTicket(_0xa9aab,_0x3838fe,_0x53a51b,_0x1321c7,_0x3f485a);})[_0xe38f('0x1a')](function(_0x506720){if(_0x506720){logger['info'](_0xe38f('0x1c'));logger[_0xe38f('0x1b')](_0xe38f('0x49'),_0x506720['id']);}})[_0xe38f('0x4e')](function(_0x2432ba){logger[_0xe38f('0x4f')]('['+_0x3f485a[_0xe38f('0x5a')][_0xe38f('0x5c')]()+']',JSON[_0xe38f('0x2e')](_0x2432ba));});};
\ No newline at end of file
index b5fca1e..4dd1c8c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7e46=['format','Searching\x20contact\x20with\x20phone\x20%s','mobile_number','contactNumber','endUserId','Contact\x20found\x20mobile_number:','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','contact','Creating\x20new\x20task','/api/tasks','getString','Subjects','Contact','ticketId','task','Task\x20created:','/contacts/','emit','trigger:browser:url','Token\x20token=','apiKey','remoteUri','stripTrailingSlash','serverUrl','username','toLowerCase','outbound','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','Displaying\x20task\x20in\x20a\x20new\x20tab...','name',']\x20Error\x20running\x20Freshsales\x20integration','inspect','lodash','request-promise','util','ioredis','../../../../config/environment','../../../../config/logger','defaults','redis','localhost','socket.io-emitter','GET','info','Getting\x20admin\x20information','then','length','email','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','toUpperCase','message','/api/selector/owners','headers','Getting\x20user\x20list','users','userEmail','agentEmail','userId','User\x20found:','Admin\x20selected','adminEmail','error','/api/lookup?q=','&f=','&entities=contact'];(function(_0x112d68,_0x297f0e){var _0x1c12d8=function(_0x4a4be5){while(--_0x4a4be5){_0x112d68['push'](_0x112d68['shift']());}};_0x1c12d8(++_0x297f0e);}(_0x7e46,0xde));var _0x67e4=function(_0x3c1d5a,_0x28de68){_0x3c1d5a=_0x3c1d5a-0x0;var _0xc58a6b=_0x7e46[_0x3c1d5a];return _0xc58a6b;};'use strict';var _=require(_0x67e4('0x0'));var rp=require(_0x67e4('0x1'));var md5=require('md5');var util=require(_0x67e4('0x2'));var moment=require('moment');var Promise=require('bluebird');var Redis=require(_0x67e4('0x3'));var intUtil=require('./util');var config=require(_0x67e4('0x4'));var logger=require(_0x67e4('0x5'))('freshsales');config['redis']=_[_0x67e4('0x6')](config[_0x67e4('0x7')],{'host':_0x67e4('0x8'),'port':0x18eb});var io=require(_0x67e4('0x9'))(new Redis(config[_0x67e4('0x7')]));function getAdminId(_0x14194d,_0x194151,_0x1552df,_0x37477a){return new Promise(function(_0x2d6c96,_0x394d1b){var _0x50a7c8=![];var _0x189b4b={'method':_0x67e4('0xa'),'uri':_0x37477a+'/api/selector/owners','json':!![]};_0x189b4b['headers']=_0x1552df;logger[_0x67e4('0xb')](_0x67e4('0xc'));return rp(_0x189b4b)[_0x67e4('0xd')](function(_0x4fe1fc){if(_0x4fe1fc){var _0x519b48=_0x4fe1fc['users'];var _0x19fa92=null;for(_0x19fa92=0x0;_0x19fa92<_0x519b48[_0x67e4('0xe')];_0x19fa92++){if(_0x519b48[_0x19fa92][_0x67e4('0xf')]===_0x14194d['adminEmail']){_0x14194d[_0x67e4('0x10')]=_0x519b48[_0x19fa92]['id'];_0x50a7c8=!![];}}if(_0x50a7c8){logger['info'](_0x67e4('0x11'),_0x14194d['adminId']);_0x2d6c96(_0x14194d);}else{_0x394d1b({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x394d1b({'statusCode':0x194,'message':_0x67e4('0x12')});}})[_0x67e4('0x13')](function(_0x511b89){logger['error']('['+[_0x194151[_0x67e4('0x14')]()]+']',_0x511b89[_0x67e4('0x15')]);_0x394d1b(_0x511b89);});});}function getUser(_0x2cc69e,_0x5b962c,_0x4e970a){return function(_0x1b589b){return new Promise(function(_0x1c2077,_0x10cee4){var _0x490fa6={'method':_0x67e4('0xa'),'uri':_0x4e970a+_0x67e4('0x16'),'json':!![]};_0x490fa6[_0x67e4('0x17')]=_0x5b962c;logger[_0x67e4('0xb')](_0x67e4('0x18'));return rp(_0x490fa6)['then'](function(_0x385c32){if(_0x385c32){var _0x3b6d16=_0x385c32[_0x67e4('0x19')];var _0x5d0de9=![];var _0xf3a74b=null;if(_0x1b589b['agentEmail']!==null){logger[_0x67e4('0xb')]('Getting\x20user\x20with\x20email',_0x1b589b['agentEmail']);_0x1b589b[_0x67e4('0x1a')]=_0x1b589b[_0x67e4('0x1b')];for(_0xf3a74b=0x0;_0xf3a74b<_0x3b6d16['length'];_0xf3a74b++){if(_0x3b6d16[_0xf3a74b][_0x67e4('0xf')]===_0x1b589b['agentEmail']){_0x5d0de9=!![];_0x1b589b[_0x67e4('0x1c')]=_0x3b6d16[_0xf3a74b]['id'];logger[_0x67e4('0xb')](_0x67e4('0x1d'),_0x1b589b[_0x67e4('0x1c')]);}}}if(!_0x5d0de9){logger[_0x67e4('0xb')](_0x67e4('0x1e'));_0x1b589b[_0x67e4('0x1a')]=_0x1b589b[_0x67e4('0x1f')];_0x1b589b['userId']=_0x1b589b[_0x67e4('0x10')];_0x5d0de9=!![];}if(_0x5d0de9){_0x1c2077(_0x1b589b);}else{_0x10cee4({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}}else{_0x10cee4({'statusCode':0x194,'message':_0x67e4('0x12')});}})[_0x67e4('0x13')](function(_0x301664){logger[_0x67e4('0x20')]('['+[_0x2cc69e[_0x67e4('0x14')]()]+']',_0x301664[_0x67e4('0x15')]);_0x10cee4(_0x301664);});});};}function searchContact(_0x1f3224,_0xeb1ccb,_0x5badad,_0x234056){return new Promise(function(_0x31efef,_0x4941e7){var _0xf6df50={'method':'GET','headers':_0xeb1ccb,'uri':_0x1f3224+_0x67e4('0x21')+_0x234056+_0x67e4('0x22')+_0x5badad+_0x67e4('0x23'),'json':!![]};rp(_0xf6df50)[_0x67e4('0xd')](function(_0x1b5131){var _0xfd9771=_['find'](_0x1b5131['contacts']['contacts'],[_0x5badad,_0x234056]);_0x31efef(_0xfd9771);})[_0x67e4('0x13')](function(_0x2dcb36){_0x4941e7(_0x2dcb36);});});}function getEndUser(_0x51a224,_0x170554,_0x30ea83){return function(_0x219f57){return new Promise(function(_0x1bd528,_0x3e92b0){logger['info'](util[_0x67e4('0x24')](_0x67e4('0x25'),_0x219f57['contactNumber']));searchContact(_0x30ea83,_0x170554,_0x67e4('0x26'),_0x219f57[_0x67e4('0x27')])[_0x67e4('0xd')](function(_0x34c042){if(_0x34c042){_0x219f57[_0x67e4('0x28')]=_0x34c042['id'];logger['info'](_0x67e4('0x29'),_0x219f57[_0x67e4('0x28')]);return _0x1bd528(_0x219f57);}searchContact(_0x30ea83,_0x170554,_0x67e4('0x2a'),_0x219f57[_0x67e4('0x27')])[_0x67e4('0xd')](function(_0x2ed366){if(_0x2ed366){_0x219f57[_0x67e4('0x28')]=_0x2ed366['id'];logger['info'](_0x67e4('0x2b'),_0x219f57[_0x67e4('0x28')]);return _0x1bd528(_0x219f57);}createEndUser(_0x219f57,_0x51a224,_0x170554,_0x30ea83)[_0x67e4('0xd')](function(_0x1528a5){logger[_0x67e4('0xb')](_0x67e4('0x2c'),_0x1528a5[_0x67e4('0x28')]);return _0x1bd528(_0x1528a5);});});})[_0x67e4('0x13')](function(_0x5e2f0f){_0x3e92b0(_0x5e2f0f);});});};}function createEndUser(_0x66a21e,_0x4e4d55,_0x5b8048,_0x4106ab){return new Promise(function(_0xf35a89,_0x2dec42){var _0x1c06d2=moment();var _0x599a99={'method':_0x67e4('0x2d'),'uri':_0x4106ab+'/api/contacts','body':{'contact':{'last_name':_0x66a21e[_0x67e4('0x27')],'work_number':_0x66a21e['contactNumber'],'mobile_number':_0x66a21e[_0x67e4('0x27')],'owner_id':_0x66a21e['userId'],'created_at':_0x1c06d2['format'](_0x67e4('0x2e'))}},'json':!![]};_0x599a99[_0x67e4('0x17')]=_0x5b8048;logger['info'](_0x67e4('0x2f'));return rp(_0x599a99)[_0x67e4('0xd')](function(_0x1d2ba8){_0x66a21e[_0x67e4('0x28')]=_0x1d2ba8[_0x67e4('0x30')]['id'];_0xf35a89(_0x66a21e);})[_0x67e4('0x13')](function(_0x1eaffd){logger[_0x67e4('0x20')]('['+[_0x4e4d55[_0x67e4('0x14')]()]+']',_0x1eaffd['message']);_0x2dec42(_0x1eaffd[_0x67e4('0x15')]);});});}function getTicket(_0x2ff369,_0x13a5a8,_0x4888c1,_0x3200ca,_0x5330c1){return function(_0x127eb4){logger['info'](_0x67e4('0x31'));return new Promise(function(_0x353a4e,_0x4229c6){var _0x3ceb7b=moment();var _0x4a1a6a={'method':_0x67e4('0x2d'),'uri':_0x4888c1+_0x67e4('0x32'),'body':{'title':intUtil[_0x67e4('0x33')](_0x3200ca[_0x67e4('0x34')],_0x5330c1,'\x20'),'description':intUtil[_0x67e4('0x33')](_0x3200ca['Descriptions'],_0x5330c1,'\x0a'),'owner_id':_0x127eb4[_0x67e4('0x1c')],'creater_id':_0x127eb4[_0x67e4('0x10')],'targetable_id':_0x127eb4[_0x67e4('0x28')],'targetable_type':_0x67e4('0x35'),'created_at':_0x3ceb7b[_0x67e4('0x24')](_0x67e4('0x2e')),'due_date':_0x3ceb7b['add'](0x1e,'m')[_0x67e4('0x24')](_0x67e4('0x2e'))},'json':!![]};_0x4a1a6a[_0x67e4('0x17')]=_0x13a5a8;return rp(_0x4a1a6a)[_0x67e4('0xd')](function(_0x53b5d3){_0x127eb4[_0x67e4('0x36')]=_0x53b5d3[_0x67e4('0x37')]['id'];logger['info'](_0x67e4('0x38'),_0x127eb4[_0x67e4('0x36')]);_0x353a4e(_0x127eb4);})['catch'](function(_0x46e43a){logger[_0x67e4('0x20')]('['+[_0x2ff369[_0x67e4('0x14')]()]+']',_0x46e43a[_0x67e4('0x15')]);_0x4229c6(_0x46e43a[_0x67e4('0x15')]);});});};}function emit(_0x264c38,_0x3629db,_0x1c2702){var _0x5eb164={'uri':_0x264c38+_0x67e4('0x39')+_0x1c2702};io['to'](util[_0x67e4('0x24')]('user:%s',_0x3629db))[_0x67e4('0x3a')](_0x67e4('0x3b'),_0x5eb164);}exports['cs']=function(_0x3011ee,_0x405fae,_0x143532,_0x84f1f7,_0x29e41d,_0x10d7db,_0x466a3a,_0x2178f1){var _0x17864b={};var _0xca2a29={'Authorization':_0x67e4('0x3c')+_0x10d7db[_0x67e4('0x3d')]};_0x10d7db[_0x67e4('0x3e')]=intUtil[_0x67e4('0x3f')](_0x10d7db[_0x67e4('0x3e')]);_0x10d7db[_0x67e4('0x40')]=intUtil[_0x67e4('0x3f')](_0x10d7db[_0x67e4('0x40')]);var _0x585e30=_0x10d7db[_0x67e4('0x3e')];_0x17864b[_0x67e4('0x1f')]=_0x10d7db[_0x67e4('0x41')];_0x17864b[_0x67e4('0x27')]=_0x2178f1[_0x67e4('0x42')]()===_0x67e4('0x43')?_0x405fae['destcalleridnum']:_0x405fae[_0x67e4('0x44')];_0x17864b[_0x67e4('0x45')]=_0x2178f1===_0x67e4('0x46')||_0x2178f1===_0x67e4('0x47')?_0x67e4('0x46'):_0x67e4('0x43');if(_0x84f1f7){_0x17864b['agentEmail']=_0x84f1f7[_0x67e4('0xf')];}var _0x4608b8=util[_0x67e4('0x24')](_0x67e4('0x48'),_0x10d7db['serverUrl'],_0x405fae[_0x67e4('0x49')],md5(_0x405fae[_0x67e4('0x49')]));if(_0x29e41d&&_0x29e41d[_0x67e4('0x4a')]){logger[_0x67e4('0xb')](_0x67e4('0x4b'),_0x67e4('0x4c'));_0x405fae[_0x67e4('0x4d')]=_0x4608b8;}else if(_0x466a3a&&_0x466a3a[_0x67e4('0x4e')]&&_0x466a3a['recordingFormat']!==_0x67e4('0x4f')){logger['info'](_0x67e4('0x50'),_0x67e4('0x4c'));_0x405fae['recordingURL']=_0x4608b8;}else{_0x405fae[_0x67e4('0x4d')]='';}return getAdminId(_0x17864b,_0x2178f1,_0xca2a29,_0x585e30)['then'](getUser(_0x2178f1,_0xca2a29,_0x585e30))[_0x67e4('0xd')](getEndUser(_0x2178f1,_0xca2a29,_0x585e30))[_0x67e4('0xd')](getTicket(_0x2178f1,_0xca2a29,_0x585e30,_0x143532,_0x405fae))['then'](function(_0x2856a7){logger['info'](util[_0x67e4('0x24')](_0x67e4('0x51'),_0x2856a7[_0x67e4('0x36')]));if(_0x2178f1!==_0x67e4('0x47')){logger[_0x67e4('0xb')]('['+[_0x2178f1[_0x67e4('0x14')]()]+']',_0x67e4('0x52'));emit(_0x585e30,_0x84f1f7[_0x67e4('0x53')],_0x2856a7[_0x67e4('0x28')]);}})[_0x67e4('0x13')](function(_0x159030){logger[_0x67e4('0x20')]('['+[_0x2178f1[_0x67e4('0x14')]()]+_0x67e4('0x54'),util[_0x67e4('0x55')](_0x159030,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x4322=['mobile_number','endUserId','work_number','Contact\x20found\x20work_number:','Contact\x20created:','POST','format','YYYY-MM-DDTHH:mm:ss','Contact\x20not\x20found,\x20creating\x20a\x20new\x20contact','Creating\x20new\x20task','/api/tasks','getString','Subjects','add','ticketId','/contacts/','emit','trigger:browser:url','Token\x20token=','stripTrailingSlash','serverUrl','remoteUri','adminEmail','username','toLowerCase','outbound','destcalleridnum','calleridnum','callDirection','queue','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','[OUTBOUND]','The\x20ticket\x20ID\x20is:\x20%s','unmanaged','Displaying\x20task\x20in\x20a\x20new\x20tab...','name','lodash','request-promise','md5','util','moment','bluebird','../../../../config/environment','../../../../config/logger','freshsales','redis','defaults','socket.io-emitter','headers','info','then','email','adminId','Admin\x20found:','Requested\x20Resource\x20not\x20Found','catch','error','toUpperCase','message','GET','/api/selector/owners','Getting\x20user\x20list','users','agentEmail','Getting\x20user\x20with\x20email','length','userId','User\x20found:','Admin\x20selected','userEmail','&f=','find','contacts','Searching\x20contact\x20with\x20phone\x20%s','contactNumber'];(function(_0x41d3cd,_0x139b35){var _0x5741a1=function(_0x3b9ca6){while(--_0x3b9ca6){_0x41d3cd['push'](_0x41d3cd['shift']());}};_0x5741a1(++_0x139b35);}(_0x4322,0x7b));var _0x2432=function(_0x36f7d3,_0x3ebecf){_0x36f7d3=_0x36f7d3-0x0;var _0x26e9c9=_0x4322[_0x36f7d3];return _0x26e9c9;};'use strict';var _=require(_0x2432('0x0'));var rp=require(_0x2432('0x1'));var md5=require(_0x2432('0x2'));var util=require(_0x2432('0x3'));var moment=require(_0x2432('0x4'));var Promise=require(_0x2432('0x5'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x2432('0x6'));var logger=require(_0x2432('0x7'))(_0x2432('0x8'));config[_0x2432('0x9')]=_[_0x2432('0xa')](config[_0x2432('0x9')],{'host':'localhost','port':0x18eb});var io=require(_0x2432('0xb'))(new Redis(config['redis']));function getAdminId(_0x150a54,_0x48eec2,_0xdf58bf,_0x52acf3){return new Promise(function(_0x2ab63e,_0x10263f){var _0x3aa9a8=![];var _0x19dce7={'method':'GET','uri':_0x52acf3+'/api/selector/owners','json':!![]};_0x19dce7[_0x2432('0xc')]=_0xdf58bf;logger[_0x2432('0xd')]('Getting\x20admin\x20information');return rp(_0x19dce7)[_0x2432('0xe')](function(_0x1652f5){if(_0x1652f5){var _0x35bc82=_0x1652f5['users'];var _0xfc1cd7=null;for(_0xfc1cd7=0x0;_0xfc1cd7<_0x35bc82['length'];_0xfc1cd7++){if(_0x35bc82[_0xfc1cd7][_0x2432('0xf')]===_0x150a54['adminEmail']){_0x150a54[_0x2432('0x10')]=_0x35bc82[_0xfc1cd7]['id'];_0x3aa9a8=!![];}}if(_0x3aa9a8){logger[_0x2432('0xd')](_0x2432('0x11'),_0x150a54[_0x2432('0x10')]);_0x2ab63e(_0x150a54);}else{_0x10263f({'statusCode':0x194,'message':_0x2432('0x12')});}}else{_0x10263f({'statusCode':0x194,'message':_0x2432('0x12')});}})[_0x2432('0x13')](function(_0x5b4765){logger[_0x2432('0x14')]('['+[_0x48eec2[_0x2432('0x15')]()]+']',_0x5b4765[_0x2432('0x16')]);_0x10263f(_0x5b4765);});});}function getUser(_0x704dff,_0x4ceca1,_0x3ba89c){return function(_0x16022b){return new Promise(function(_0x3029b9,_0x31e25b){var _0x282eac={'method':_0x2432('0x17'),'uri':_0x3ba89c+_0x2432('0x18'),'json':!![]};_0x282eac[_0x2432('0xc')]=_0x4ceca1;logger[_0x2432('0xd')](_0x2432('0x19'));return rp(_0x282eac)[_0x2432('0xe')](function(_0x1a79eb){if(_0x1a79eb){var _0x1f56c8=_0x1a79eb[_0x2432('0x1a')];var _0x71ee6f=![];var _0x3b46eb=null;if(_0x16022b[_0x2432('0x1b')]!==null){logger[_0x2432('0xd')](_0x2432('0x1c'),_0x16022b[_0x2432('0x1b')]);_0x16022b['userEmail']=_0x16022b['agentEmail'];for(_0x3b46eb=0x0;_0x3b46eb<_0x1f56c8[_0x2432('0x1d')];_0x3b46eb++){if(_0x1f56c8[_0x3b46eb][_0x2432('0xf')]===_0x16022b[_0x2432('0x1b')]){_0x71ee6f=!![];_0x16022b[_0x2432('0x1e')]=_0x1f56c8[_0x3b46eb]['id'];logger[_0x2432('0xd')](_0x2432('0x1f'),_0x16022b[_0x2432('0x1e')]);}}}if(!_0x71ee6f){logger[_0x2432('0xd')](_0x2432('0x20'));_0x16022b[_0x2432('0x21')]=_0x16022b['adminEmail'];_0x16022b[_0x2432('0x1e')]=_0x16022b[_0x2432('0x10')];_0x71ee6f=!![];}if(_0x71ee6f){_0x3029b9(_0x16022b);}else{_0x31e25b({'statusCode':0x194,'message':_0x2432('0x12')});}}else{_0x31e25b({'statusCode':0x194,'message':'Requested\x20Resource\x20not\x20Found'});}})[_0x2432('0x13')](function(_0xd99690){logger[_0x2432('0x14')]('['+[_0x704dff[_0x2432('0x15')]()]+']',_0xd99690[_0x2432('0x16')]);_0x31e25b(_0xd99690);});});};}function searchContact(_0x476aed,_0x30f58e,_0x2a25b4,_0x53a642){return new Promise(function(_0x27d52e,_0x42e2bc){var _0x21a02b={'method':_0x2432('0x17'),'headers':_0x30f58e,'uri':_0x476aed+'/api/lookup?q='+_0x53a642+_0x2432('0x22')+_0x2a25b4+'&entities=contact','json':!![]};rp(_0x21a02b)[_0x2432('0xe')](function(_0x10718d){var _0x131e97=_[_0x2432('0x23')](_0x10718d['contacts'][_0x2432('0x24')],[_0x2a25b4,_0x53a642]);_0x27d52e(_0x131e97);})[_0x2432('0x13')](function(_0x1f88e6){_0x42e2bc(_0x1f88e6);});});}function getEndUser(_0x44f89d,_0x4ab017,_0xa42c0){return function(_0x37d3ab){return new Promise(function(_0xfc7087,_0x10f79b){logger['info'](util['format'](_0x2432('0x25'),_0x37d3ab[_0x2432('0x26')]));searchContact(_0xa42c0,_0x4ab017,_0x2432('0x27'),_0x37d3ab[_0x2432('0x26')])[_0x2432('0xe')](function(_0x302454){if(_0x302454){_0x37d3ab[_0x2432('0x28')]=_0x302454['id'];logger[_0x2432('0xd')]('Contact\x20found\x20mobile_number:',_0x37d3ab['endUserId']);return _0xfc7087(_0x37d3ab);}searchContact(_0xa42c0,_0x4ab017,_0x2432('0x29'),_0x37d3ab[_0x2432('0x26')])[_0x2432('0xe')](function(_0x2f5c91){if(_0x2f5c91){_0x37d3ab['endUserId']=_0x2f5c91['id'];logger[_0x2432('0xd')](_0x2432('0x2a'),_0x37d3ab['endUserId']);return _0xfc7087(_0x37d3ab);}createEndUser(_0x37d3ab,_0x44f89d,_0x4ab017,_0xa42c0)[_0x2432('0xe')](function(_0x51cad8){logger[_0x2432('0xd')](_0x2432('0x2b'),_0x51cad8[_0x2432('0x28')]);return _0xfc7087(_0x51cad8);});});})[_0x2432('0x13')](function(_0x112aac){_0x10f79b(_0x112aac);});});};}function createEndUser(_0x51a2b5,_0x3130da,_0x190edc,_0x6173e5){return new Promise(function(_0x338361,_0x2e3a7b){var _0x1d63d7=moment();var _0x2f6417={'method':_0x2432('0x2c'),'uri':_0x6173e5+'/api/contacts','body':{'contact':{'last_name':_0x51a2b5[_0x2432('0x26')],'work_number':_0x51a2b5[_0x2432('0x26')],'mobile_number':_0x51a2b5[_0x2432('0x26')],'owner_id':_0x51a2b5[_0x2432('0x1e')],'created_at':_0x1d63d7[_0x2432('0x2d')](_0x2432('0x2e'))}},'json':!![]};_0x2f6417[_0x2432('0xc')]=_0x190edc;logger[_0x2432('0xd')](_0x2432('0x2f'));return rp(_0x2f6417)[_0x2432('0xe')](function(_0x4c3d69){_0x51a2b5[_0x2432('0x28')]=_0x4c3d69['contact']['id'];_0x338361(_0x51a2b5);})[_0x2432('0x13')](function(_0x1153af){logger[_0x2432('0x14')]('['+[_0x3130da[_0x2432('0x15')]()]+']',_0x1153af[_0x2432('0x16')]);_0x2e3a7b(_0x1153af[_0x2432('0x16')]);});});}function getTicket(_0x1b2c46,_0xd4546e,_0x400640,_0x456bdf,_0x1d5bcb){return function(_0x27fcf4){logger[_0x2432('0xd')](_0x2432('0x30'));return new Promise(function(_0x3730e9,_0x45279a){var _0x3ce4f0=moment();var _0x50f9d4={'method':'POST','uri':_0x400640+_0x2432('0x31'),'body':{'title':intUtil[_0x2432('0x32')](_0x456bdf[_0x2432('0x33')],_0x1d5bcb,'\x20'),'description':intUtil[_0x2432('0x32')](_0x456bdf['Descriptions'],_0x1d5bcb,'\x0a'),'owner_id':_0x27fcf4[_0x2432('0x1e')],'creater_id':_0x27fcf4[_0x2432('0x10')],'targetable_id':_0x27fcf4[_0x2432('0x28')],'targetable_type':'Contact','created_at':_0x3ce4f0[_0x2432('0x2d')](_0x2432('0x2e')),'due_date':_0x3ce4f0[_0x2432('0x34')](0x1e,'m')['format'](_0x2432('0x2e'))},'json':!![]};_0x50f9d4[_0x2432('0xc')]=_0xd4546e;return rp(_0x50f9d4)[_0x2432('0xe')](function(_0x227504){_0x27fcf4['ticketId']=_0x227504['task']['id'];logger['info']('Task\x20created:',_0x27fcf4[_0x2432('0x35')]);_0x3730e9(_0x27fcf4);})['catch'](function(_0x54e173){logger[_0x2432('0x14')]('['+[_0x1b2c46[_0x2432('0x15')]()]+']',_0x54e173[_0x2432('0x16')]);_0x45279a(_0x54e173['message']);});});};}function emit(_0x3b3991,_0x337644,_0x3e3321){var _0x262680={'uri':_0x3b3991+_0x2432('0x36')+_0x3e3321};io['to'](util[_0x2432('0x2d')]('user:%s',_0x337644))[_0x2432('0x37')](_0x2432('0x38'),_0x262680);}exports['cs']=function(_0x546e59,_0x5a390a,_0xc77e52,_0xaf3867,_0x5c9eb3,_0x321603,_0x2ed88d,_0x46a6cf){var _0x5e594d={};var _0x530cdd={'Authorization':_0x2432('0x39')+_0x321603['apiKey']};_0x321603['remoteUri']=intUtil[_0x2432('0x3a')](_0x321603['remoteUri']);_0x321603[_0x2432('0x3b')]=intUtil[_0x2432('0x3a')](_0x321603[_0x2432('0x3b')]);var _0x38a37d=_0x321603[_0x2432('0x3c')];_0x5e594d[_0x2432('0x3d')]=_0x321603[_0x2432('0x3e')];_0x5e594d[_0x2432('0x26')]=_0x46a6cf[_0x2432('0x3f')]()===_0x2432('0x40')?_0x5a390a[_0x2432('0x41')]:_0x5a390a[_0x2432('0x42')];_0x5e594d[_0x2432('0x43')]=_0x46a6cf===_0x2432('0x44')||_0x46a6cf==='unmanaged'?_0x2432('0x44'):'outbound';if(_0xaf3867){_0x5e594d['agentEmail']=_0xaf3867[_0x2432('0xf')];}var _0x53351b=util[_0x2432('0x2d')](_0x2432('0x45'),_0x321603['serverUrl'],_0x5a390a[_0x2432('0x46')],md5(_0x5a390a['uniqueid']));if(_0x5c9eb3&&_0x5c9eb3[_0x2432('0x47')]){logger[_0x2432('0xd')](_0x2432('0x48'),_0x2432('0x49'));_0x5a390a[_0x2432('0x4a')]=_0x53351b;}else if(_0x2ed88d&&_0x2ed88d[_0x2432('0x4b')]&&_0x2ed88d['recordingFormat']!=='none'){logger[_0x2432('0xd')](_0x2432('0x4c'),_0x2432('0x49'));_0x5a390a[_0x2432('0x4a')]=_0x53351b;}else{_0x5a390a[_0x2432('0x4a')]='';}return getAdminId(_0x5e594d,_0x46a6cf,_0x530cdd,_0x38a37d)['then'](getUser(_0x46a6cf,_0x530cdd,_0x38a37d))[_0x2432('0xe')](getEndUser(_0x46a6cf,_0x530cdd,_0x38a37d))[_0x2432('0xe')](getTicket(_0x46a6cf,_0x530cdd,_0x38a37d,_0xc77e52,_0x5a390a))['then'](function(_0x223111){logger[_0x2432('0xd')](util[_0x2432('0x2d')](_0x2432('0x4d'),_0x223111['ticketId']));if(_0x46a6cf!==_0x2432('0x4e')){logger['info']('['+[_0x46a6cf['toUpperCase']()]+']',_0x2432('0x4f'));emit(_0x38a37d,_0xaf3867[_0x2432('0x50')],_0x223111['endUserId']);}})[_0x2432('0x13')](function(_0x3b2782){logger[_0x2432('0x14')]('['+[_0x46a6cf['toUpperCase']()]+']\x20Error\x20running\x20Freshsales\x20integration',util['inspect'](_0x3b2782,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 06222e1..7b713aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe280=['vtiger','dynamics365','freshsales','includes','data1','toLowerCase','find','Configurations','data3','queue','routeId','outbound','log','EVENT\x20UNKNOWN','unmanaged','zoho','servicenow','unknown\x20integration','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','../../../../config/logger','%s\x20account\x20#%s\x20not\x20found','data2','lodash','util','./zendesk','./salesforce','./freshdesk','./zoho','./desk','./vtiger','./dynamics365','./freshsales','zendesk','salesforce','sugarcrm','freshdesk','desk'];(function(_0xd5241c,_0x5d8d00){var _0x1344bc=function(_0xb6f16){while(--_0xb6f16){_0xd5241c['push'](_0xd5241c['shift']());}};_0x1344bc(++_0x5d8d00);}(_0xe280,0x109));var _0x0e28=function(_0x1fc122,_0x5e2c17){_0x1fc122=_0x1fc122-0x0;var _0xa2cb13=_0xe280[_0x1fc122];return _0xa2cb13;};'use strict';var _=require(_0x0e28('0x0'));var util=require(_0x0e28('0x1'));var zendesk=require(_0x0e28('0x2'));var salesforce=require(_0x0e28('0x3'));var sugarcrm=require('./sugarcrm');var freshdesk=require(_0x0e28('0x4'));var zoho=require(_0x0e28('0x5'));var desk=require(_0x0e28('0x6'));var vtiger=require(_0x0e28('0x7'));var servicenow=require('./servicenow');var dynamics365=require(_0x0e28('0x8'));var freshsales=require(_0x0e28('0x9'));var integrations=[_0x0e28('0xa'),_0x0e28('0xb'),_0x0e28('0xc'),_0x0e28('0xd'),'zoho',_0x0e28('0xe'),_0x0e28('0xf'),_0x0e28('0x10'),_0x0e28('0x11'),'servicenow'];exports['exec']=function(_0x208c02,_0x18436a,_0xaa0991,_0xf7876a,_0x509180,_0x34803d){if(_0xaa0991){if(_[_0x0e28('0x12')](integrations,_0x208c02[_0x0e28('0x13')][_0x0e28('0x14')]())){try{var _0x291882=null;var _0x47fbcd='';var _0x451153=_0xaa0991[_0x208c02[_0x0e28('0x13')][_0x0e28('0x14')]()];if(_0x451153){var _0x566fa8=_0x451153[_0x208c02['data2']];if(_0x566fa8){var _0x2bcb96=_[_0x0e28('0x15')](_0x566fa8[_0x0e28('0x16')],{'id':parseInt(_0x208c02[_0x0e28('0x17')],0xa)});if(_0x2bcb96){if(_0xf7876a){if(_0x509180&&_0x18436a[_0x0e28('0x18')]){_0x47fbcd=_0x0e28('0x18');}else if(_0x18436a[_0x0e28('0x19')]){_0x47fbcd=_0x0e28('0x1a');}else{console[_0x0e28('0x1b')](_0x0e28('0x1c'),_0x18436a);}}else{_0x47fbcd=_0x0e28('0x1d');}switch(_0x208c02[_0x0e28('0x13')]['toLowerCase']()){case _0x0e28('0xa'):zendesk[_0x47fbcd](_0x208c02,_0x18436a,_0x2bcb96,_0xf7876a,_0x509180,_0x566fa8,_0x34803d);break;case _0x0e28('0xb'):salesforce[_0x47fbcd](_0x208c02,_0x18436a,_0x2bcb96,_0xf7876a,_0x509180,_0x566fa8,_0x34803d);break;case'sugarcrm':sugarcrm[_0x47fbcd](_0x208c02,_0x18436a,_0x2bcb96,_0xf7876a,_0x509180,_0x566fa8,_0x34803d);break;case _0x0e28('0xd'):freshdesk[_0x47fbcd](_0x208c02,_0x18436a,_0x2bcb96,_0xf7876a,_0x509180,_0x566fa8,_0x34803d);break;case _0x0e28('0x1e'):zoho[_0x47fbcd](_0x208c02,_0x18436a,_0x2bcb96,_0xf7876a,_0x509180,_0x566fa8,_0x34803d);break;case _0x0e28('0xe'):desk[_0x47fbcd](_0x208c02,_0x18436a,_0x2bcb96,_0xf7876a,_0x509180,_0x566fa8,_0x34803d);break;case _0x0e28('0xf'):vtiger[_0x47fbcd](_0x208c02,_0x18436a,_0x2bcb96,_0xf7876a,_0x509180,_0x566fa8,_0x34803d);break;case _0x0e28('0x11'):freshsales['cs'](_0x208c02,_0x18436a,_0x2bcb96,_0xf7876a,_0x509180,_0x566fa8,_0x34803d,_0x47fbcd);break;case _0x0e28('0x1f'):servicenow['cs'](_0x208c02,_0x18436a,_0x2bcb96,_0xf7876a,_0x509180,_0x566fa8,_0x34803d,_0x47fbcd);break;case'dynamics365':dynamics365['cs'](_0x208c02,_0x18436a,_0x2bcb96,_0xf7876a,_0x509180,_0x566fa8,_0x34803d,_0x47fbcd);break;default:console[_0x0e28('0x1b')](_0x0e28('0x20'));}}else{_0x291882=require('../../../../config/logger')(_0x208c02[_0x0e28('0x13')][_0x0e28('0x14')]());_0x291882[_0x0e28('0x21')](_0x0e28('0x22'),util[_0x0e28('0x23')](_0x0e28('0x24'),_0x208c02[_0x0e28('0x13')][_0x0e28('0x14')](),_0x208c02[_0x0e28('0x17')]));}}else{_0x291882=require(_0x0e28('0x25'))(_0x208c02[_0x0e28('0x13')]['toLowerCase']());_0x291882[_0x0e28('0x21')]('[EXEC]',util['format'](_0x0e28('0x26'),_0x208c02[_0x0e28('0x13')][_0x0e28('0x14')](),_0x208c02[_0x0e28('0x27')]));}}else{}}catch(_0x28cd8b){console[_0x0e28('0x21')](_0x28cd8b);}}}};
\ No newline at end of file
+var _0xd6ba=['unmanaged','log','unknown\x20integration','error','[EXEC]','format','%s\x20configuration\x20#%s\x20not\x20found','../../../../config/logger','lodash','./zendesk','./salesforce','./sugarcrm','./freshdesk','./vtiger','./dynamics365','zendesk','salesforce','sugarcrm','freshdesk','zoho','desk','vtiger','dynamics365','freshsales','servicenow','exec','includes','data1','toLowerCase','data2','find','Configurations','data3','queue','outbound'];(function(_0x32440b,_0x587344){var _0x3cf440=function(_0x8cfc90){while(--_0x8cfc90){_0x32440b['push'](_0x32440b['shift']());}};_0x3cf440(++_0x587344);}(_0xd6ba,0x1f2));var _0xad6b=function(_0x5ce4ba,_0x2794d){_0x5ce4ba=_0x5ce4ba-0x0;var _0x3a1adb=_0xd6ba[_0x5ce4ba];return _0x3a1adb;};'use strict';var _=require(_0xad6b('0x0'));var util=require('util');var zendesk=require(_0xad6b('0x1'));var salesforce=require(_0xad6b('0x2'));var sugarcrm=require(_0xad6b('0x3'));var freshdesk=require(_0xad6b('0x4'));var zoho=require('./zoho');var desk=require('./desk');var vtiger=require(_0xad6b('0x5'));var servicenow=require('./servicenow');var dynamics365=require(_0xad6b('0x6'));var freshsales=require('./freshsales');var integrations=[_0xad6b('0x7'),_0xad6b('0x8'),_0xad6b('0x9'),_0xad6b('0xa'),_0xad6b('0xb'),_0xad6b('0xc'),_0xad6b('0xd'),_0xad6b('0xe'),_0xad6b('0xf'),_0xad6b('0x10')];exports[_0xad6b('0x11')]=function(_0x4d197d,_0x9fd74e,_0x1e4827,_0x4b65e6,_0x383888,_0xa8bc3e){if(_0x1e4827){if(_[_0xad6b('0x12')](integrations,_0x4d197d[_0xad6b('0x13')][_0xad6b('0x14')]())){try{var _0x3b0361=null;var _0x8d4295='';var _0x2b505a=_0x1e4827[_0x4d197d['data1'][_0xad6b('0x14')]()];if(_0x2b505a){var _0x19c9ec=_0x2b505a[_0x4d197d[_0xad6b('0x15')]];if(_0x19c9ec){var _0x18844e=_[_0xad6b('0x16')](_0x19c9ec[_0xad6b('0x17')],{'id':parseInt(_0x4d197d[_0xad6b('0x18')],0xa)});if(_0x18844e){if(_0x4b65e6){if(_0x383888&&_0x9fd74e[_0xad6b('0x19')]){_0x8d4295='queue';}else if(_0x9fd74e['routeId']){_0x8d4295=_0xad6b('0x1a');}else{console['log']('EVENT\x20UNKNOWN',_0x9fd74e);}}else{_0x8d4295=_0xad6b('0x1b');}switch(_0x4d197d['data1'][_0xad6b('0x14')]()){case _0xad6b('0x7'):zendesk[_0x8d4295](_0x4d197d,_0x9fd74e,_0x18844e,_0x4b65e6,_0x383888,_0x19c9ec,_0xa8bc3e);break;case _0xad6b('0x8'):salesforce[_0x8d4295](_0x4d197d,_0x9fd74e,_0x18844e,_0x4b65e6,_0x383888,_0x19c9ec,_0xa8bc3e);break;case _0xad6b('0x9'):sugarcrm[_0x8d4295](_0x4d197d,_0x9fd74e,_0x18844e,_0x4b65e6,_0x383888,_0x19c9ec,_0xa8bc3e);break;case'freshdesk':freshdesk[_0x8d4295](_0x4d197d,_0x9fd74e,_0x18844e,_0x4b65e6,_0x383888,_0x19c9ec,_0xa8bc3e);break;case'zoho':zoho[_0x8d4295](_0x4d197d,_0x9fd74e,_0x18844e,_0x4b65e6,_0x383888,_0x19c9ec,_0xa8bc3e);break;case _0xad6b('0xc'):desk[_0x8d4295](_0x4d197d,_0x9fd74e,_0x18844e,_0x4b65e6,_0x383888,_0x19c9ec,_0xa8bc3e);break;case _0xad6b('0xd'):vtiger[_0x8d4295](_0x4d197d,_0x9fd74e,_0x18844e,_0x4b65e6,_0x383888,_0x19c9ec,_0xa8bc3e);break;case _0xad6b('0xf'):freshsales['cs'](_0x4d197d,_0x9fd74e,_0x18844e,_0x4b65e6,_0x383888,_0x19c9ec,_0xa8bc3e,_0x8d4295);break;case _0xad6b('0x10'):servicenow['cs'](_0x4d197d,_0x9fd74e,_0x18844e,_0x4b65e6,_0x383888,_0x19c9ec,_0xa8bc3e,_0x8d4295);break;case _0xad6b('0xe'):dynamics365['cs'](_0x4d197d,_0x9fd74e,_0x18844e,_0x4b65e6,_0x383888,_0x19c9ec,_0xa8bc3e,_0x8d4295);break;default:console[_0xad6b('0x1c')](_0xad6b('0x1d'));}}else{_0x3b0361=require('../../../../config/logger')(_0x4d197d['data1'][_0xad6b('0x14')]());_0x3b0361[_0xad6b('0x1e')](_0xad6b('0x1f'),util[_0xad6b('0x20')](_0xad6b('0x21'),_0x4d197d[_0xad6b('0x13')][_0xad6b('0x14')](),_0x4d197d[_0xad6b('0x18')]));}}else{_0x3b0361=require(_0xad6b('0x22'))(_0x4d197d[_0xad6b('0x13')]['toLowerCase']());_0x3b0361['error'](_0xad6b('0x1f'),util['format']('%s\x20account\x20#%s\x20not\x20found',_0x4d197d[_0xad6b('0x13')][_0xad6b('0x14')](),_0x4d197d['data2']));}}else{}}catch(_0xe2a266){console[_0xad6b('0x1e')](_0xe2a266);}}}};
\ No newline at end of file
index b98f389..5f35422 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf31a=['picklist','idField','content','variable','variableName','toString','customVariable','Variable','name','password','concat','securityToken','Connection','remoteUri','https://login.salesforce.com','clientId','clientSecret','login','username','Connection\x20established.','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','email','Fields','[QUEUE]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','integrationTab','newTab','user:%s','trigger:browser:url','error','outbound','recordingFormat','none','destcalleridname','destcalleridnum','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','trigger:salesforce:display','%s/%s/e','instanceUrl','[OUTBOUND]','Salesforce\x20account\x20type\x20not\x20recognized','lastevent','calleridname','calleridnum','toUpperCase',']\x20Ticket\x20%s\x20created.','catch','lodash','request-promise','moment','bluebird','md5','jsforce','util','ioredis','./util','../../../../config/environment','../../../../config/logger','salesforce','redis','emit','assign','getString','Descriptions','Task','ActivityDate','IsReminderSet','IsRecurrence','endUserType','contact','lead','WhoId','account','WhatId','ContactId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','ticketType','isNil','validateEmail','User','find','execute','then','length','Agent\x20%s\x20found.','resolve','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','identity','user_id','display_name','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','Contact','additionalSearchLead','$or','account_contact_lead','additionalSearchAccount','Account','Lead','first','Name','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.','<unknown>','format','LastName','Caller\x20-\x20%s','Company','upperFirst','create','forEach','includes'];(function(_0x1505e5,_0x5cc291){var _0x5b1dcd=function(_0x18bfe5){while(--_0x18bfe5){_0x1505e5['push'](_0x1505e5['shift']());}};_0x5b1dcd(++_0x5cc291);}(_0xf31a,0x1c3));var _0xaf31=function(_0x4c12ec,_0x2e9103){_0x4c12ec=_0x4c12ec-0x0;var _0x3ae42c=_0xf31a[_0x4c12ec];return _0x3ae42c;};'use strict';var _=require(_0xaf31('0x0'));var rp=require(_0xaf31('0x1'));var moment=require(_0xaf31('0x2'));var BPromise=require(_0xaf31('0x3'));var md5=require(_0xaf31('0x4'));var jsforce=require(_0xaf31('0x5'));var util=require(_0xaf31('0x6'));var Redis=require(_0xaf31('0x7'));var intUtil=require(_0xaf31('0x8'));var config=require(_0xaf31('0x9'));var logger=require(_0xaf31('0xa'))(_0xaf31('0xb'));config[_0xaf31('0xc')]=_['defaults'](config[_0xaf31('0xc')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xaf31('0xc')]));function emit(_0x4958b9,_0x3c3228,_0x23d516){io['to'](_0x4958b9)[_0xaf31('0xd')](_0x3c3228,_0x23d516);}function getTicket(_0x2477f0,_0x122a1a,_0x21cd20,_0x588d78,_0x1fcc8f,_0x230cfd,_0xf14f8c,_0x148b30){var _0x4d74fa=Object[_0xaf31('0xe')]({},{'OwnerId':_0x122a1a['id'],'Subject':intUtil[_0xaf31('0xf')](_0x588d78['Subjects'],_0x1fcc8f,'\x20'),'Description':intUtil[_0xaf31('0xf')](_0x588d78[_0xaf31('0x10')],_0x1fcc8f,'\x0a')},getCustomFields(_0x230cfd,_0x1fcc8f));if(_0x21cd20){if(_0x588d78['ticketType']===_0xaf31('0x11')){_0x4d74fa[_0xaf31('0x12')]=moment['utc']();_0x4d74fa[_0xaf31('0x13')]=![];_0x4d74fa[_0xaf31('0x14')]=![];if(_0x21cd20[_0xaf31('0x15')]===_0xaf31('0x16')||_0x21cd20['endUserType']===_0xaf31('0x17')){_0x4d74fa[_0xaf31('0x18')]=_0x21cd20['id'];}else if(_0x21cd20[_0xaf31('0x15')]===_0xaf31('0x19')){_0x4d74fa[_0xaf31('0x1a')]=_0x21cd20['id'];}}else if(_0x588d78['ticketType']==='Case'){if(_0x21cd20[_0xaf31('0x15')]==='contact'){_0x4d74fa[_0xaf31('0x1b')]=_0x21cd20['id'];}else if(_0x21cd20[_0xaf31('0x15')]===_0xaf31('0x19')){_0x4d74fa['AccountId']=_0x21cd20['id'];}else if(_0x21cd20[_0xaf31('0x15')]===_0xaf31('0x17')&&_0x588d78[_0xaf31('0x1c')]){_0x4d74fa[_0x588d78[_0xaf31('0x1c')]]=_0x21cd20['id'];}else{logger[_0xaf31('0x1d')](_0xaf31('0x1e'));}}}return _0xf14f8c[_0xaf31('0x1f')](_0x588d78[_0xaf31('0x20')])['create'](_0x4d74fa);}function getUser(_0xaed90f,_0x486bfa,_0x5cb321){if(!_[_0xaf31('0x21')](_0x486bfa)&&intUtil[_0xaf31('0x22')](_0x486bfa)){var _0xd07aaf={'Email':_0x486bfa};var _0x1b94b3={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0x5cb321[_0xaf31('0x1f')](_0xaf31('0x23'))[_0xaf31('0x24')](_0xd07aaf,_0x1b94b3)[_0xaf31('0x25')]()[_0xaf31('0x26')](function(_0x1fdf79){if(_0x1fdf79[_0xaf31('0x27')]){var _0x1935f0=_[_0xaf31('0x24')](_0x1fdf79,function(_0x24c3a5){return _0x24c3a5['Email']===_0x486bfa;});if(_0x1935f0){logger[_0xaf31('0x1d')](_0xaf31('0x28'),_0x486bfa);return BPromise[_0xaf31('0x29')]({'id':_0x1935f0['Id'],'name':_0x1935f0['Name']});}}else{logger[_0xaf31('0x1d')](_0xaf31('0x2a'),_0x486bfa);return _0x5cb321[_0xaf31('0x2b')]()[_0xaf31('0x26')](function(_0x2cd87a){return BPromise['resolve']({'id':_0x2cd87a[_0xaf31('0x2c')],'name':_0x2cd87a[_0xaf31('0x2d')]});});}});}else{logger['info'](_0xaf31('0x2a'),_0x486bfa);return _0x5cb321[_0xaf31('0x2b')]()[_0xaf31('0x26')](function(_0x3ac727){return BPromise[_0xaf31('0x29')]({'id':_0x3ac727[_0xaf31('0x2c')],'name':_0x3ac727[_0xaf31('0x2d')]});});}}function getEndUser(_0x5b4e79,_0x73adb9,_0x57b5f3,_0x1de1ba,_0x2b01b9){var _0x2591b4={'$or':{'Phone':_0x1de1ba}};var _0x3b2a5c={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0xaf31('0x29')]()[_0xaf31('0x26')](function(){logger[_0xaf31('0x1d')]('Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.',_0x1de1ba,_0x73adb9[_0xaf31('0x2e')]);switch(_0x73adb9[_0xaf31('0x2e')]){case _0xaf31('0x2f'):var _0x4b04c0=_[_0xaf31('0x30')](_0x2591b4);if(_0x73adb9[_0xaf31('0x31')]){var _0x28023e={};_0x28023e[_0x73adb9[_0xaf31('0x31')]]=_0x1de1ba;_[_0xaf31('0x32')](_0x4b04c0['$or'],_0x28023e);}return _0x2b01b9['sobject'](_0xaf31('0x33'))[_0xaf31('0x24')](_0x4b04c0,_0x3b2a5c)[_0xaf31('0x25')]()[_0xaf31('0x26')](function(_0x38f427){if(_0x38f427&&_0x38f427[_0xaf31('0x27')]){return _0x38f427;}else{var _0x30bd70=_[_0xaf31('0x30')](_0x2591b4);if(_0x73adb9['additionalSearchLead']){var _0x8ba8b={};_0x8ba8b[_0x73adb9[_0xaf31('0x34')]]=_0x1de1ba;_[_0xaf31('0x32')](_0x30bd70[_0xaf31('0x35')],_0x8ba8b);}return _0x2b01b9[_0xaf31('0x1f')]('Lead')[_0xaf31('0x24')](_0x30bd70,_0x3b2a5c);}});case _0xaf31('0x36'):var _0x28f62a=_[_0xaf31('0x30')](_0x2591b4);if(_0x73adb9[_0xaf31('0x37')]){var _0x28023e={};_0x28023e[_0x73adb9[_0xaf31('0x37')]]=_0x1de1ba;_[_0xaf31('0x32')](_0x28f62a['$or'],_0x28023e);}return _0x2b01b9[_0xaf31('0x1f')](_0xaf31('0x38'))['find'](_0x28f62a,_0x3b2a5c)['execute']()[_0xaf31('0x26')](function(_0xccfd59){if(_0xccfd59&&_0xccfd59[_0xaf31('0x27')]){return _0xccfd59;}else{var _0x34d960=_[_0xaf31('0x30')](_0x2591b4);if(_0x73adb9['additionalSearchContact']){var _0x5aa7b2={};_0x5aa7b2[_0x73adb9['additionalSearchContact']]=_0x1de1ba;_[_0xaf31('0x32')](_0x34d960[_0xaf31('0x35')],_0x5aa7b2);}return _0x2b01b9[_0xaf31('0x1f')](_0xaf31('0x33'))[_0xaf31('0x24')](_0x34d960,_0x3b2a5c)[_0xaf31('0x26')](function(_0x2280c6){if(_0x2280c6&&_0x2280c6['length']){return _0x2280c6;}else{var _0x2571a7=_[_0xaf31('0x30')](_0x2591b4);if(_0x73adb9[_0xaf31('0x34')]){var _0x238367={};_0x238367[_0x73adb9[_0xaf31('0x34')]]=_0x1de1ba;_[_0xaf31('0x32')](_0x2571a7[_0xaf31('0x35')],_0x238367);}return _0x2b01b9[_0xaf31('0x1f')](_0xaf31('0x39'))['find'](_0x2571a7,_0x3b2a5c);}});}});case _0xaf31('0x16'):var _0x4b04c0=_[_0xaf31('0x30')](_0x2591b4);if(_0x73adb9['additionalSearchContact']){var _0x28023e={};_0x28023e[_0x73adb9[_0xaf31('0x31')]]=_0x1de1ba;_[_0xaf31('0x32')](_0x4b04c0[_0xaf31('0x35')],_0x28023e);}return _0x2b01b9[_0xaf31('0x1f')](_0xaf31('0x33'))['find'](_0x4b04c0,_0x3b2a5c)[_0xaf31('0x25')]();case _0xaf31('0x17'):var _0x355287=_[_0xaf31('0x30')](_0x2591b4);if(_0x73adb9[_0xaf31('0x34')]){var _0x28023e={};_0x28023e[_0x73adb9[_0xaf31('0x34')]]=_0x1de1ba;_[_0xaf31('0x32')](_0x355287['$or'],_0x28023e);}return _0x2b01b9[_0xaf31('0x1f')](_0xaf31('0x39'))[_0xaf31('0x24')](_0x355287,_0x3b2a5c);case _0xaf31('0x19'):var _0x28f62a=_[_0xaf31('0x30')](_0x2591b4);if(_0x73adb9['additionalSearchAccount']){var _0x28023e={};_0x28023e[_0x73adb9[_0xaf31('0x37')]]=_0x1de1ba;_[_0xaf31('0x32')](_0x28f62a[_0xaf31('0x35')],_0x28023e);}return _0x2b01b9[_0xaf31('0x1f')]('Account')[_0xaf31('0x24')](_0x28f62a,_0x3b2a5c);default:return null;}})[_0xaf31('0x26')](function(_0x6cbeb5){if(_0x6cbeb5&&_0x6cbeb5[_0xaf31('0x27')]){var _0x5d75cd=_[_0xaf31('0x3a')](_0x6cbeb5);if(_0x5d75cd){return BPromise[_0xaf31('0x29')]({'id':_0x5d75cd['Id'],'name':_0x5d75cd[_0xaf31('0x3b')],'phone':_0x5d75cd[_0xaf31('0x3c')],'endUserType':_0x5d75cd[_0xaf31('0x3d')][_0xaf31('0x3e')][_0xaf31('0x3f')]()});}}})[_0xaf31('0x26')](function(_0xf0a6e3){if(_0xf0a6e3){logger['info'](_0xaf31('0x40'),_0xf0a6e3['endUserType'],_0x1de1ba);return BPromise[_0xaf31('0x29')](_0xf0a6e3);}else{logger[_0xaf31('0x1d')](_0xaf31('0x41'),_0x1de1ba);var _0x4fb1d4={'Phone':_0x1de1ba};if(_0x73adb9[_0xaf31('0x42')]){if(_0x73adb9[_0xaf31('0x42')]===_0xaf31('0x16')){logger[_0xaf31('0x1d')](_0xaf31('0x43'),_0x1de1ba,_0x73adb9['moduleCreate']);_0x4fb1d4['LastName']=_0x57b5f3!==_0xaf31('0x44')?_0x57b5f3:util[_0xaf31('0x45')]('Caller\x20-\x20%s',_0x1de1ba);}else if(_0x73adb9[_0xaf31('0x42')]===_0xaf31('0x17')){logger[_0xaf31('0x1d')](_0xaf31('0x43'),_0x1de1ba,_0x73adb9[_0xaf31('0x42')]);_0x4fb1d4[_0xaf31('0x46')]=_0x57b5f3!==_0xaf31('0x44')?_0x57b5f3:util[_0xaf31('0x45')](_0xaf31('0x47'),_0x1de1ba);_0x4fb1d4[_0xaf31('0x48')]='No\x20Company';}else if(_0x73adb9[_0xaf31('0x42')]==='account'){logger['info'](_0xaf31('0x43'),_0x1de1ba,_0x73adb9[_0xaf31('0x42')]);_0x4fb1d4['Name']=_0x57b5f3!==_0xaf31('0x44')?_0x57b5f3:util[_0xaf31('0x45')](_0xaf31('0x47'),_0x1de1ba);}else{return null;}}return _0x2b01b9['sobject'](_[_0xaf31('0x49')](_0x73adb9[_0xaf31('0x42')]))[_0xaf31('0x4a')](_0x4fb1d4)[_0xaf31('0x26')](function(_0x251c9e){return BPromise[_0xaf31('0x29')]({'id':_0x251c9e['id'],'endUserType':_0x73adb9[_0xaf31('0x42')]});});}});}function getCustomFields(_0x4a0381,_0x1763fa){var _0x28a09e={};if(_0x4a0381['length']>0x0){_[_0xaf31('0x4b')](_0x4a0381,function(_0x3f2f3a){if(_[_0xaf31('0x4c')](['string',_0xaf31('0x4d')],_0x3f2f3a['type'])&&_0x3f2f3a['idField']){_0x28a09e[_0x3f2f3a[_0xaf31('0x4e')]]=_0x3f2f3a[_0xaf31('0x4f')]['toString']();}else if(_0x3f2f3a['type']===_0xaf31('0x50')&&_0x3f2f3a[_0xaf31('0x51')]&&_0x3f2f3a[_0xaf31('0x4e')]){_0x1763fa[_0x3f2f3a['variableName']]&&(_0x28a09e[_0x3f2f3a[_0xaf31('0x4e')]]=_0x1763fa[_0x3f2f3a['variableName']][_0xaf31('0x52')]());}else if(_0x3f2f3a[_0xaf31('0x3e')]===_0xaf31('0x53')&&_0x3f2f3a[_0xaf31('0x54')]&&_0x3f2f3a[_0xaf31('0x54')][_0xaf31('0x55')]&&_0x3f2f3a[_0xaf31('0x4e')]){_0x1763fa[_0x3f2f3a[_0xaf31('0x54')][_0xaf31('0x55')]['toLowerCase']()]&&(_0x28a09e[_0x3f2f3a[_0xaf31('0x4e')]]=_0x1763fa[_0x3f2f3a['Variable'][_0xaf31('0x55')][_0xaf31('0x3f')]()]['toString']());}});}return _0x28a09e;}function getConnection(_0x309482){var _0xdb09b5=_0x309482[_0xaf31('0x56')][_0xaf31('0x57')](_0x309482[_0xaf31('0x58')]);var _0x3b1600=new jsforce[(_0xaf31('0x59'))]({'oauth2':{'loginUrl':_0x309482[_0xaf31('0x5a')]||_0xaf31('0x5b'),'clientId':_0x309482[_0xaf31('0x5c')],'clientSecret':_0x309482[_0xaf31('0x5d')]}});return _0x3b1600[_0xaf31('0x5e')](_0x309482[_0xaf31('0x5f')],_0xdb09b5)[_0xaf31('0x26')](function(){logger[_0xaf31('0x1d')](_0xaf31('0x60'));return _0x3b1600;});}exports[_0xaf31('0x61')]=function(_0x437352,_0xaf03b8,_0x1111d8,_0x2bf225,_0xe86a53,_0x55526a){var _0xe6ba84,_0x2837f9,_0x9e7796,_0x181e61;_0x55526a[_0xaf31('0x62')]=intUtil['stripTrailingSlash'](_0x55526a[_0xaf31('0x62')]);_0x55526a[_0xaf31('0x5a')]=intUtil[_0xaf31('0x63')](_0x55526a['remoteUri']);if(_0xe86a53&&_0xe86a53[_0xaf31('0x64')]){logger['info'](_0xaf31('0x65'),_0xaf31('0x66'));_0xaf03b8[_0xaf31('0x67')]=util[_0xaf31('0x45')](_0xaf31('0x68'),_0x55526a['serverUrl'],_0xaf03b8[_0xaf31('0x69')],md5(_0xaf03b8[_0xaf31('0x69')]));}else{_0xaf03b8['recordingURL']='';}return getConnection(_0x55526a)[_0xaf31('0x26')](function(_0x315bb6){_0x181e61=_0x315bb6;return getUser(_0x55526a,_0x2bf225[_0xaf31('0x6a')],_0x181e61);})['then'](function(_0x430b41){_0xe6ba84=_0x430b41;return getEndUser(_0x55526a,_0x1111d8,_0xaf03b8['calleridname'],_0xaf03b8['calleridnum'],_0x181e61);})[_0xaf31('0x26')](function(_0xb21445){_0x2837f9=_0xb21445;return getTicket(_0x55526a,_0xe6ba84,_0x2837f9,_0x1111d8,_0xaf03b8,_0x1111d8[_0xaf31('0x6b')],_0x181e61,'queue');})[_0xaf31('0x26')](function(_0x147857){_0x9e7796=_0x147857;logger[_0xaf31('0x1d')]('[QUEUE]\x20Ticket\x20%s\x20created',_0x9e7796['id']);logger[_0xaf31('0x1d')](_0xaf31('0x6c'),_0x9e7796['id'],_0x2bf225[_0xaf31('0x55')],_0x55526a[_0xaf31('0x3e')]);switch(_0x55526a['type']){case _0xaf31('0x6d'):emit(util[_0xaf31('0x45')]('user:%s',_0x2bf225['name']),'trigger:salesforce:display',{'recordId':_0x9e7796['id']});break;case _0xaf31('0x6e'):emit(util[_0xaf31('0x45')](_0xaf31('0x6f'),_0x2bf225[_0xaf31('0x55')]),_0xaf31('0x70'),{'uri':util['format']('%s/%s/e',_0x181e61['instanceUrl'],_0x9e7796['id'])});break;default:logger[_0xaf31('0x71')]('[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.');}})['catch'](function(_0x19b006){logger['error']('[QUEUE]',_0x19b006);});};exports[_0xaf31('0x72')]=function(_0x40c73e,_0x1add74,_0x29bf59,_0xa0f14f,_0x129c71,_0xe4eec5,_0x17e265){var _0x2e6da7,_0x4d40ee,_0x17a3fd,_0x3e8f04;_0xe4eec5[_0xaf31('0x62')]=intUtil['stripTrailingSlash'](_0xe4eec5[_0xaf31('0x62')]);_0xe4eec5['remoteUri']=intUtil['stripTrailingSlash'](_0xe4eec5[_0xaf31('0x5a')]);if(_0x17e265&&_0x17e265[_0xaf31('0x73')]&&_0x17e265[_0xaf31('0x73')]!==_0xaf31('0x74')){logger[_0xaf31('0x1d')]('[OUTBOUND]',_0xaf31('0x66'));_0x1add74[_0xaf31('0x67')]=util[_0xaf31('0x45')](_0xaf31('0x68'),_0xe4eec5['serverUrl'],_0x1add74['uniqueid'],md5(_0x1add74[_0xaf31('0x69')]));}return getConnection(_0xe4eec5)[_0xaf31('0x26')](function(_0x64e423){_0x3e8f04=_0x64e423;return getUser(_0xe4eec5,_0xa0f14f[_0xaf31('0x6a')],_0x3e8f04);})[_0xaf31('0x26')](function(_0x1c4cd0){_0x2e6da7=_0x1c4cd0;return getEndUser(_0xe4eec5,_0x29bf59,_0x1add74[_0xaf31('0x75')],_0x1add74[_0xaf31('0x76')],_0x3e8f04);})[_0xaf31('0x26')](function(_0xeab0f5){_0x4d40ee=_0xeab0f5;return getTicket(_0xe4eec5,_0x2e6da7,_0x4d40ee,_0x29bf59,_0x1add74,_0x29bf59[_0xaf31('0x6b')],_0x3e8f04,'outbound');})[_0xaf31('0x26')](function(_0x41bef8){_0x17a3fd=_0x41bef8;logger[_0xaf31('0x1d')](_0xaf31('0x77'),_0x17a3fd['id']);logger[_0xaf31('0x1d')](_0xaf31('0x78'),_0x17a3fd['id'],_0xa0f14f['name'],_0xe4eec5[_0xaf31('0x3e')]);switch(_0xe4eec5[_0xaf31('0x3e')]){case _0xaf31('0x6d'):emit(util['format'](_0xaf31('0x6f'),_0xa0f14f[_0xaf31('0x55')]),_0xaf31('0x79'),{'recordId':_0x17a3fd['id']});break;case _0xaf31('0x6e'):emit(util[_0xaf31('0x45')]('user:%s',_0xa0f14f[_0xaf31('0x55')]),_0xaf31('0x70'),{'uri':util[_0xaf31('0x45')](_0xaf31('0x7a'),_0x3e8f04[_0xaf31('0x7b')],_0x17a3fd['id'])});break;default:logger[_0xaf31('0x71')](_0xaf31('0x7c'),_0xaf31('0x7d'));}})['catch'](function(_0x5a8c60){logger[_0xaf31('0x71')](_0xaf31('0x7c'),_0x5a8c60);});};exports['unmanaged']=function(_0x25b4ef,_0x309ad8,_0x31b6b4,_0x5c1661,_0x497a28,_0x2c5f5a){var _0x11842c,_0x42ec81,_0xfd0998,_0x56425e;_0x2c5f5a[_0xaf31('0x62')]=intUtil[_0xaf31('0x63')](_0x2c5f5a[_0xaf31('0x62')]);_0x2c5f5a[_0xaf31('0x5a')]=intUtil[_0xaf31('0x63')](_0x2c5f5a[_0xaf31('0x5a')]);if(_0x497a28&&_0x497a28[_0xaf31('0x64')]){logger[_0xaf31('0x1d')]('['+_0x309ad8[_0xaf31('0x7e')]['toUpperCase']()+']',_0xaf31('0x66'));_0x309ad8[_0xaf31('0x67')]=util['format']('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2c5f5a['serverUrl'],_0x309ad8[_0xaf31('0x69')],md5(_0x309ad8[_0xaf31('0x69')]));}else{_0x309ad8[_0xaf31('0x67')]='';}return getConnection(_0x2c5f5a)[_0xaf31('0x26')](function(_0x59572f){_0x56425e=_0x59572f;if(!_[_0xaf31('0x21')](_0x5c1661)){return getUser(_0x2c5f5a,_0x5c1661[_0xaf31('0x55')],_0x56425e);}else{return getUser(_0x2c5f5a,null,_0x56425e);}})[_0xaf31('0x26')](function(_0x299900){_0x11842c=_0x299900;return getEndUser(_0x2c5f5a,_0x31b6b4,_0x309ad8[_0xaf31('0x7f')],_0x309ad8[_0xaf31('0x80')],_0x56425e);})[_0xaf31('0x26')](function(_0x236de6){_0x42ec81=_0x236de6;return getTicket(_0x2c5f5a,_0x11842c,_0x42ec81,_0x31b6b4,_0x309ad8,_0x31b6b4['Fields'],_0x56425e);})[_0xaf31('0x26')](function(_0x5c0303){_0xfd0998=_0x5c0303;logger['info']('['+_0x309ad8[_0xaf31('0x7e')][_0xaf31('0x81')]()+_0xaf31('0x82'),_0xfd0998['id']);logger['info']('['+_0x309ad8['lastevent'][_0xaf31('0x81')]()+']\x20Integration\x20account\x20type\x20%s.',_0x2c5f5a[_0xaf31('0x3e')]);})[_0xaf31('0x83')](function(_0x515bf7){logger[_0xaf31('0x71')]('['+_0x309ad8['lastevent'][_0xaf31('0x81')]()+']',_0x515bf7);});};
\ No newline at end of file
+var _0xcbc7=['redis','defaults','socket.io-emitter','emit','getString','Subjects','Descriptions','Task','ActivityDate','IsReminderSet','IsRecurrence','endUserType','contact','lead','WhoId','account','WhatId','ticketType','Case','ContactId','AccountId','leadId','info','Association\x20between\x20Case\x20and\x20Lead\x20skipped','sobject','create','isNil','validateEmail','find','execute','Email','Agent\x20%s\x20found.','resolve','identity','then','user_id','display_name','Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.','Searching\x20enduser\x20with\x20phone\x20%s.\x20Serching\x20method\x20used\x20%s.','moduleSearch','contact_lead','cloneDeep','additionalSearchContact','merge','$or','Contact','length','additionalSearchLead','Lead','account_contact_lead','additionalSearchAccount','Account','first','Phone','attributes','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.','<unknown>','format','Caller\x20-\x20%s','LastName','No\x20Company','upperFirst','includes','string','type','idField','toString','variableName','customVariable','name','Variable','securityToken','remoteUri','https://login.salesforce.com','clientId','username','queue','serverUrl','stripTrailingSlash','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','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','instanceUrl','error','[QUEUE]\x20Salesforce\x20account\x20type\x20not\x20recognized.','catch','recordingFormat','none','destcalleridnum','Fields','outbound','[OUTBOUND]\x20Ticket\x20%s\x20created.','[OUTBOUND]\x20Displaying\x20ticket\x20%s\x20to\x20agent\x20%s.\x20Integration\x20account\x20type\x20%s.','trigger:browser:url','[OUTBOUND]','Salesforce\x20account\x20type\x20not\x20recognized','unmanaged','lastevent','toUpperCase',']\x20Integration\x20account\x20type\x20%s.','lodash','request-promise','moment','bluebird','md5','jsforce','util','ioredis','../../../../config/environment','../../../../config/logger','salesforce'];(function(_0x2bfd4f,_0x1bbf2c){var _0x341849=function(_0x4c246e){while(--_0x4c246e){_0x2bfd4f['push'](_0x2bfd4f['shift']());}};_0x341849(++_0x1bbf2c);}(_0xcbc7,0xf1));var _0x7cbc=function(_0x293023,_0x4ac622){_0x293023=_0x293023-0x0;var _0x49751d=_0xcbc7[_0x293023];return _0x49751d;};'use strict';var _=require(_0x7cbc('0x0'));var rp=require(_0x7cbc('0x1'));var moment=require(_0x7cbc('0x2'));var BPromise=require(_0x7cbc('0x3'));var md5=require(_0x7cbc('0x4'));var jsforce=require(_0x7cbc('0x5'));var util=require(_0x7cbc('0x6'));var Redis=require(_0x7cbc('0x7'));var intUtil=require('./util');var config=require(_0x7cbc('0x8'));var logger=require(_0x7cbc('0x9'))(_0x7cbc('0xa'));config[_0x7cbc('0xb')]=_[_0x7cbc('0xc')](config[_0x7cbc('0xb')],{'host':'localhost','port':0x18eb});var io=require(_0x7cbc('0xd'))(new Redis(config[_0x7cbc('0xb')]));function emit(_0x410873,_0x55f27e,_0x262a26){io['to'](_0x410873)[_0x7cbc('0xe')](_0x55f27e,_0x262a26);}function getTicket(_0xbf7549,_0x1112d5,_0x3a0198,_0x436384,_0x216fb2,_0x10e541,_0x39ebdb,_0x122031){var _0x204fff=Object['assign']({},{'OwnerId':_0x1112d5['id'],'Subject':intUtil[_0x7cbc('0xf')](_0x436384[_0x7cbc('0x10')],_0x216fb2,'\x20'),'Description':intUtil['getString'](_0x436384[_0x7cbc('0x11')],_0x216fb2,'\x0a')},getCustomFields(_0x10e541,_0x216fb2));if(_0x3a0198){if(_0x436384['ticketType']===_0x7cbc('0x12')){_0x204fff[_0x7cbc('0x13')]=moment['utc']();_0x204fff[_0x7cbc('0x14')]=![];_0x204fff[_0x7cbc('0x15')]=![];if(_0x3a0198[_0x7cbc('0x16')]===_0x7cbc('0x17')||_0x3a0198['endUserType']===_0x7cbc('0x18')){_0x204fff[_0x7cbc('0x19')]=_0x3a0198['id'];}else if(_0x3a0198[_0x7cbc('0x16')]===_0x7cbc('0x1a')){_0x204fff[_0x7cbc('0x1b')]=_0x3a0198['id'];}}else if(_0x436384[_0x7cbc('0x1c')]===_0x7cbc('0x1d')){if(_0x3a0198[_0x7cbc('0x16')]==='contact'){_0x204fff[_0x7cbc('0x1e')]=_0x3a0198['id'];}else if(_0x3a0198[_0x7cbc('0x16')]===_0x7cbc('0x1a')){_0x204fff[_0x7cbc('0x1f')]=_0x3a0198['id'];}else if(_0x3a0198[_0x7cbc('0x16')]===_0x7cbc('0x18')&&_0x436384[_0x7cbc('0x20')]){_0x204fff[_0x436384[_0x7cbc('0x20')]]=_0x3a0198['id'];}else{logger[_0x7cbc('0x21')](_0x7cbc('0x22'));}}}return _0x39ebdb[_0x7cbc('0x23')](_0x436384[_0x7cbc('0x1c')])[_0x7cbc('0x24')](_0x204fff);}function getUser(_0x78f2f5,_0x53cf39,_0xb99859){if(!_[_0x7cbc('0x25')](_0x53cf39)&&intUtil[_0x7cbc('0x26')](_0x53cf39)){var _0x1e010f={'Email':_0x53cf39};var _0x122ce6={'Id':!![],'Username':!![],'Name':!![],'Email':!![]};return _0xb99859[_0x7cbc('0x23')]('User')[_0x7cbc('0x27')](_0x1e010f,_0x122ce6)[_0x7cbc('0x28')]()['then'](function(_0x50a85a){if(_0x50a85a['length']){var _0x4d2b98=_[_0x7cbc('0x27')](_0x50a85a,function(_0x57b467){return _0x57b467[_0x7cbc('0x29')]===_0x53cf39;});if(_0x4d2b98){logger[_0x7cbc('0x21')](_0x7cbc('0x2a'),_0x53cf39);return BPromise[_0x7cbc('0x2b')]({'id':_0x4d2b98['Id'],'name':_0x4d2b98['Name']});}}else{logger['info']('Agent\x20%s\x20not\x20found.\x20Switch\x20to\x20the\x20admin\x20account.',_0x53cf39);return _0xb99859[_0x7cbc('0x2c')]()[_0x7cbc('0x2d')](function(_0x320183){return BPromise[_0x7cbc('0x2b')]({'id':_0x320183[_0x7cbc('0x2e')],'name':_0x320183[_0x7cbc('0x2f')]});});}});}else{logger[_0x7cbc('0x21')](_0x7cbc('0x30'),_0x53cf39);return _0xb99859[_0x7cbc('0x2c')]()[_0x7cbc('0x2d')](function(_0x39e99d){return BPromise['resolve']({'id':_0x39e99d[_0x7cbc('0x2e')],'name':_0x39e99d[_0x7cbc('0x2f')]});});}}function getEndUser(_0x4c8230,_0x3c1653,_0x11b54c,_0x38b868,_0x386975){var _0x57dfb3={'$or':{'Phone':_0x38b868}};var _0x4a2ced={'Id':!![],'Name':!![],'Phone':!![]};return BPromise[_0x7cbc('0x2b')]()['then'](function(){logger['info'](_0x7cbc('0x31'),_0x38b868,_0x3c1653[_0x7cbc('0x32')]);switch(_0x3c1653[_0x7cbc('0x32')]){case _0x7cbc('0x33'):var _0x54febe=_[_0x7cbc('0x34')](_0x57dfb3);if(_0x3c1653['additionalSearchContact']){var _0x57f39e={};_0x57f39e[_0x3c1653[_0x7cbc('0x35')]]=_0x38b868;_[_0x7cbc('0x36')](_0x54febe[_0x7cbc('0x37')],_0x57f39e);}return _0x386975[_0x7cbc('0x23')](_0x7cbc('0x38'))['find'](_0x54febe,_0x4a2ced)[_0x7cbc('0x28')]()[_0x7cbc('0x2d')](function(_0x261208){if(_0x261208&&_0x261208[_0x7cbc('0x39')]){return _0x261208;}else{var _0x1c43cb=_[_0x7cbc('0x34')](_0x57dfb3);if(_0x3c1653[_0x7cbc('0x3a')]){var _0x5dbd7f={};_0x5dbd7f[_0x3c1653[_0x7cbc('0x3a')]]=_0x38b868;_[_0x7cbc('0x36')](_0x1c43cb[_0x7cbc('0x37')],_0x5dbd7f);}return _0x386975[_0x7cbc('0x23')](_0x7cbc('0x3b'))[_0x7cbc('0x27')](_0x1c43cb,_0x4a2ced);}});case _0x7cbc('0x3c'):var _0x31f9f4=_[_0x7cbc('0x34')](_0x57dfb3);if(_0x3c1653['additionalSearchAccount']){var _0x57f39e={};_0x57f39e[_0x3c1653[_0x7cbc('0x3d')]]=_0x38b868;_[_0x7cbc('0x36')](_0x31f9f4[_0x7cbc('0x37')],_0x57f39e);}return _0x386975[_0x7cbc('0x23')](_0x7cbc('0x3e'))['find'](_0x31f9f4,_0x4a2ced)[_0x7cbc('0x28')]()['then'](function(_0x35aa6b){if(_0x35aa6b&&_0x35aa6b['length']){return _0x35aa6b;}else{var _0x2d3d95=_['cloneDeep'](_0x57dfb3);if(_0x3c1653['additionalSearchContact']){var _0x27942f={};_0x27942f[_0x3c1653[_0x7cbc('0x35')]]=_0x38b868;_['merge'](_0x2d3d95[_0x7cbc('0x37')],_0x27942f);}return _0x386975[_0x7cbc('0x23')](_0x7cbc('0x38'))[_0x7cbc('0x27')](_0x2d3d95,_0x4a2ced)[_0x7cbc('0x2d')](function(_0x4f2cf0){if(_0x4f2cf0&&_0x4f2cf0[_0x7cbc('0x39')]){return _0x4f2cf0;}else{var _0x332dac=_[_0x7cbc('0x34')](_0x57dfb3);if(_0x3c1653[_0x7cbc('0x3a')]){var _0x940aa4={};_0x940aa4[_0x3c1653[_0x7cbc('0x3a')]]=_0x38b868;_[_0x7cbc('0x36')](_0x332dac[_0x7cbc('0x37')],_0x940aa4);}return _0x386975[_0x7cbc('0x23')]('Lead')[_0x7cbc('0x27')](_0x332dac,_0x4a2ced);}});}});case _0x7cbc('0x17'):var _0x54febe=_[_0x7cbc('0x34')](_0x57dfb3);if(_0x3c1653['additionalSearchContact']){var _0x57f39e={};_0x57f39e[_0x3c1653[_0x7cbc('0x35')]]=_0x38b868;_[_0x7cbc('0x36')](_0x54febe[_0x7cbc('0x37')],_0x57f39e);}return _0x386975[_0x7cbc('0x23')](_0x7cbc('0x38'))[_0x7cbc('0x27')](_0x54febe,_0x4a2ced)[_0x7cbc('0x28')]();case'lead':var _0x4d7a28=_[_0x7cbc('0x34')](_0x57dfb3);if(_0x3c1653[_0x7cbc('0x3a')]){var _0x57f39e={};_0x57f39e[_0x3c1653[_0x7cbc('0x3a')]]=_0x38b868;_[_0x7cbc('0x36')](_0x4d7a28[_0x7cbc('0x37')],_0x57f39e);}return _0x386975[_0x7cbc('0x23')](_0x7cbc('0x3b'))['find'](_0x4d7a28,_0x4a2ced);case _0x7cbc('0x1a'):var _0x31f9f4=_[_0x7cbc('0x34')](_0x57dfb3);if(_0x3c1653[_0x7cbc('0x3d')]){var _0x57f39e={};_0x57f39e[_0x3c1653[_0x7cbc('0x3d')]]=_0x38b868;_[_0x7cbc('0x36')](_0x31f9f4[_0x7cbc('0x37')],_0x57f39e);}return _0x386975[_0x7cbc('0x23')]('Account')[_0x7cbc('0x27')](_0x31f9f4,_0x4a2ced);default:return null;}})[_0x7cbc('0x2d')](function(_0x3ceda4){if(_0x3ceda4&&_0x3ceda4['length']){var _0x47f47e=_[_0x7cbc('0x3f')](_0x3ceda4);if(_0x47f47e){return BPromise[_0x7cbc('0x2b')]({'id':_0x47f47e['Id'],'name':_0x47f47e['Name'],'phone':_0x47f47e[_0x7cbc('0x40')],'endUserType':_0x47f47e[_0x7cbc('0x41')]['type'][_0x7cbc('0x42')]()});}}})['then'](function(_0x58dec5){if(_0x58dec5){logger[_0x7cbc('0x21')](_0x7cbc('0x43'),_0x58dec5[_0x7cbc('0x16')],_0x38b868);return BPromise[_0x7cbc('0x2b')](_0x58dec5);}else{logger['info'](_0x7cbc('0x44'),_0x38b868);var _0x1f154d={'Phone':_0x38b868};if(_0x3c1653[_0x7cbc('0x45')]){if(_0x3c1653['moduleCreate']===_0x7cbc('0x17')){logger[_0x7cbc('0x21')](_0x7cbc('0x46'),_0x38b868,_0x3c1653[_0x7cbc('0x45')]);_0x1f154d['LastName']=_0x11b54c!==_0x7cbc('0x47')?_0x11b54c:util[_0x7cbc('0x48')](_0x7cbc('0x49'),_0x38b868);}else if(_0x3c1653[_0x7cbc('0x45')]===_0x7cbc('0x18')){logger['info']('Enduser\x20with\x20phone\x20%s.\x20Creating\x20method\x20used\x20%s.',_0x38b868,_0x3c1653['moduleCreate']);_0x1f154d[_0x7cbc('0x4a')]=_0x11b54c!==_0x7cbc('0x47')?_0x11b54c:util[_0x7cbc('0x48')](_0x7cbc('0x49'),_0x38b868);_0x1f154d['Company']=_0x7cbc('0x4b');}else if(_0x3c1653[_0x7cbc('0x45')]===_0x7cbc('0x1a')){logger['info'](_0x7cbc('0x46'),_0x38b868,_0x3c1653[_0x7cbc('0x45')]);_0x1f154d['Name']=_0x11b54c!==_0x7cbc('0x47')?_0x11b54c:util[_0x7cbc('0x48')](_0x7cbc('0x49'),_0x38b868);}else{return null;}}return _0x386975[_0x7cbc('0x23')](_[_0x7cbc('0x4c')](_0x3c1653['moduleCreate']))[_0x7cbc('0x24')](_0x1f154d)[_0x7cbc('0x2d')](function(_0x3fa959){return BPromise[_0x7cbc('0x2b')]({'id':_0x3fa959['id'],'endUserType':_0x3c1653[_0x7cbc('0x45')]});});}});}function getCustomFields(_0x57ac12,_0x13efd4){var _0x331466={};if(_0x57ac12[_0x7cbc('0x39')]>0x0){_['forEach'](_0x57ac12,function(_0x409d50){if(_[_0x7cbc('0x4d')]([_0x7cbc('0x4e'),'picklist'],_0x409d50[_0x7cbc('0x4f')])&&_0x409d50[_0x7cbc('0x50')]){_0x331466[_0x409d50[_0x7cbc('0x50')]]=_0x409d50['content'][_0x7cbc('0x51')]();}else if(_0x409d50[_0x7cbc('0x4f')]==='variable'&&_0x409d50['variableName']&&_0x409d50['idField']){_0x13efd4[_0x409d50['variableName']]&&(_0x331466[_0x409d50[_0x7cbc('0x50')]]=_0x13efd4[_0x409d50[_0x7cbc('0x52')]]['toString']());}else if(_0x409d50['type']===_0x7cbc('0x53')&&_0x409d50['Variable']&&_0x409d50['Variable'][_0x7cbc('0x54')]&&_0x409d50[_0x7cbc('0x50')]){_0x13efd4[_0x409d50[_0x7cbc('0x55')][_0x7cbc('0x54')][_0x7cbc('0x42')]()]&&(_0x331466[_0x409d50[_0x7cbc('0x50')]]=_0x13efd4[_0x409d50[_0x7cbc('0x55')][_0x7cbc('0x54')][_0x7cbc('0x42')]()]['toString']());}});}return _0x331466;}function getConnection(_0x108077){var _0x11973a=_0x108077['password']['concat'](_0x108077[_0x7cbc('0x56')]);var _0x109bfb=new jsforce['Connection']({'oauth2':{'loginUrl':_0x108077[_0x7cbc('0x57')]||_0x7cbc('0x58'),'clientId':_0x108077[_0x7cbc('0x59')],'clientSecret':_0x108077['clientSecret']}});return _0x109bfb['login'](_0x108077[_0x7cbc('0x5a')],_0x11973a)[_0x7cbc('0x2d')](function(){logger['info']('Connection\x20established.');return _0x109bfb;});}exports[_0x7cbc('0x5b')]=function(_0x413769,_0x5712da,_0x5b6d7b,_0x3fbb21,_0x50e802,_0x304adc){var _0x11806d,_0x15b893,_0x485b1d,_0x5c6144;_0x304adc[_0x7cbc('0x5c')]=intUtil['stripTrailingSlash'](_0x304adc[_0x7cbc('0x5c')]);_0x304adc[_0x7cbc('0x57')]=intUtil[_0x7cbc('0x5d')](_0x304adc[_0x7cbc('0x57')]);if(_0x50e802&&_0x50e802[_0x7cbc('0x5e')]){logger[_0x7cbc('0x21')](_0x7cbc('0x5f'),_0x7cbc('0x60'));_0x5712da[_0x7cbc('0x61')]=util[_0x7cbc('0x48')](_0x7cbc('0x62'),_0x304adc[_0x7cbc('0x5c')],_0x5712da[_0x7cbc('0x63')],md5(_0x5712da['uniqueid']));}else{_0x5712da[_0x7cbc('0x61')]='';}return getConnection(_0x304adc)[_0x7cbc('0x2d')](function(_0x11cef1){_0x5c6144=_0x11cef1;return getUser(_0x304adc,_0x3fbb21['email'],_0x5c6144);})[_0x7cbc('0x2d')](function(_0x42d18f){_0x11806d=_0x42d18f;return getEndUser(_0x304adc,_0x5b6d7b,_0x5712da[_0x7cbc('0x64')],_0x5712da[_0x7cbc('0x65')],_0x5c6144);})[_0x7cbc('0x2d')](function(_0x1dc62f){_0x15b893=_0x1dc62f;return getTicket(_0x304adc,_0x11806d,_0x15b893,_0x5b6d7b,_0x5712da,_0x5b6d7b['Fields'],_0x5c6144,_0x7cbc('0x5b'));})[_0x7cbc('0x2d')](function(_0x500669){_0x485b1d=_0x500669;logger[_0x7cbc('0x21')](_0x7cbc('0x66'),_0x485b1d['id']);logger[_0x7cbc('0x21')](_0x7cbc('0x67'),_0x485b1d['id'],_0x3fbb21[_0x7cbc('0x54')],_0x304adc[_0x7cbc('0x4f')]);switch(_0x304adc[_0x7cbc('0x4f')]){case _0x7cbc('0x68'):emit(util[_0x7cbc('0x48')](_0x7cbc('0x69'),_0x3fbb21[_0x7cbc('0x54')]),_0x7cbc('0x6a'),{'recordId':_0x485b1d['id']});break;case _0x7cbc('0x6b'):emit(util[_0x7cbc('0x48')](_0x7cbc('0x69'),_0x3fbb21[_0x7cbc('0x54')]),'trigger:browser:url',{'uri':util[_0x7cbc('0x48')]('%s/%s/e',_0x5c6144[_0x7cbc('0x6c')],_0x485b1d['id'])});break;default:logger[_0x7cbc('0x6d')](_0x7cbc('0x6e'));}})[_0x7cbc('0x6f')](function(_0x3d2fce){logger[_0x7cbc('0x6d')](_0x7cbc('0x5f'),_0x3d2fce);});};exports['outbound']=function(_0x4da098,_0x541630,_0xecea25,_0x3ebec9,_0x3f9f14,_0x552b20,_0x1f6311){var _0x24d51b,_0xfb75de,_0x3cd2b7,_0x30d104;_0x552b20[_0x7cbc('0x5c')]=intUtil[_0x7cbc('0x5d')](_0x552b20[_0x7cbc('0x5c')]);_0x552b20[_0x7cbc('0x57')]=intUtil[_0x7cbc('0x5d')](_0x552b20[_0x7cbc('0x57')]);if(_0x1f6311&&_0x1f6311[_0x7cbc('0x70')]&&_0x1f6311[_0x7cbc('0x70')]!==_0x7cbc('0x71')){logger['info']('[OUTBOUND]',_0x7cbc('0x60'));_0x541630[_0x7cbc('0x61')]=util[_0x7cbc('0x48')](_0x7cbc('0x62'),_0x552b20['serverUrl'],_0x541630[_0x7cbc('0x63')],md5(_0x541630[_0x7cbc('0x63')]));}return getConnection(_0x552b20)[_0x7cbc('0x2d')](function(_0x21678f){_0x30d104=_0x21678f;return getUser(_0x552b20,_0x3ebec9['email'],_0x30d104);})[_0x7cbc('0x2d')](function(_0x68218c){_0x24d51b=_0x68218c;return getEndUser(_0x552b20,_0xecea25,_0x541630['destcalleridname'],_0x541630[_0x7cbc('0x72')],_0x30d104);})['then'](function(_0x349e82){_0xfb75de=_0x349e82;return getTicket(_0x552b20,_0x24d51b,_0xfb75de,_0xecea25,_0x541630,_0xecea25[_0x7cbc('0x73')],_0x30d104,_0x7cbc('0x74'));})[_0x7cbc('0x2d')](function(_0x5ebd97){_0x3cd2b7=_0x5ebd97;logger[_0x7cbc('0x21')](_0x7cbc('0x75'),_0x3cd2b7['id']);logger[_0x7cbc('0x21')](_0x7cbc('0x76'),_0x3cd2b7['id'],_0x3ebec9['name'],_0x552b20[_0x7cbc('0x4f')]);switch(_0x552b20[_0x7cbc('0x4f')]){case _0x7cbc('0x68'):emit(util[_0x7cbc('0x48')]('user:%s',_0x3ebec9[_0x7cbc('0x54')]),_0x7cbc('0x6a'),{'recordId':_0x3cd2b7['id']});break;case _0x7cbc('0x6b'):emit(util['format']('user:%s',_0x3ebec9[_0x7cbc('0x54')]),_0x7cbc('0x77'),{'uri':util[_0x7cbc('0x48')]('%s/%s/e',_0x30d104[_0x7cbc('0x6c')],_0x3cd2b7['id'])});break;default:logger[_0x7cbc('0x6d')](_0x7cbc('0x78'),_0x7cbc('0x79'));}})[_0x7cbc('0x6f')](function(_0x5e9ebb){logger[_0x7cbc('0x6d')](_0x7cbc('0x78'),_0x5e9ebb);});};exports[_0x7cbc('0x7a')]=function(_0x5cfe36,_0x4a8ec2,_0x57345f,_0x5c6dca,_0x2924b2,_0x485bcb){var _0xe518cd,_0x31558d,_0x46194f,_0x29ba35;_0x485bcb['serverUrl']=intUtil[_0x7cbc('0x5d')](_0x485bcb[_0x7cbc('0x5c')]);_0x485bcb['remoteUri']=intUtil[_0x7cbc('0x5d')](_0x485bcb[_0x7cbc('0x57')]);if(_0x2924b2&&_0x2924b2[_0x7cbc('0x5e')]){logger['info']('['+_0x4a8ec2[_0x7cbc('0x7b')][_0x7cbc('0x7c')]()+']',_0x7cbc('0x60'));_0x4a8ec2[_0x7cbc('0x61')]=util[_0x7cbc('0x48')](_0x7cbc('0x62'),_0x485bcb[_0x7cbc('0x5c')],_0x4a8ec2[_0x7cbc('0x63')],md5(_0x4a8ec2[_0x7cbc('0x63')]));}else{_0x4a8ec2[_0x7cbc('0x61')]='';}return getConnection(_0x485bcb)['then'](function(_0x253872){_0x29ba35=_0x253872;if(!_['isNil'](_0x5c6dca)){return getUser(_0x485bcb,_0x5c6dca[_0x7cbc('0x54')],_0x29ba35);}else{return getUser(_0x485bcb,null,_0x29ba35);}})[_0x7cbc('0x2d')](function(_0x4d402d){_0xe518cd=_0x4d402d;return getEndUser(_0x485bcb,_0x57345f,_0x4a8ec2[_0x7cbc('0x64')],_0x4a8ec2[_0x7cbc('0x65')],_0x29ba35);})[_0x7cbc('0x2d')](function(_0x2ba7e7){_0x31558d=_0x2ba7e7;return getTicket(_0x485bcb,_0xe518cd,_0x31558d,_0x57345f,_0x4a8ec2,_0x57345f[_0x7cbc('0x73')],_0x29ba35);})[_0x7cbc('0x2d')](function(_0x474431){_0x46194f=_0x474431;logger[_0x7cbc('0x21')]('['+_0x4a8ec2[_0x7cbc('0x7b')]['toUpperCase']()+']\x20Ticket\x20%s\x20created.',_0x46194f['id']);logger[_0x7cbc('0x21')]('['+_0x4a8ec2[_0x7cbc('0x7b')]['toUpperCase']()+_0x7cbc('0x7d'),_0x485bcb['type']);})[_0x7cbc('0x6f')](function(_0x518ad8){logger[_0x7cbc('0x6d')]('['+_0x4a8ec2['lastevent'][_0x7cbc('0x7c')]()+']',_0x518ad8);});};
\ No newline at end of file
index b7dbf1e..411d3bc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8cb1=['adminEmail','],\x20getUser\x20crm',']\x20using\x20admin\x20profile','endUserNumber','user','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','includes','string','picklist','type','nameField','customField','toLowerCase','content','toString','idField','variable','variableName','customVariable','Variable',']\x20getTicket\x20input\x20crm','POST','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','incident','ticketId','Incident\x20-\x20','forEach','push','all','Tags','name','%26sysparm_record_list%3Dactive%253Dtrue','/nav_to.do?uri=incident.do?sys_id%3D','user:%s','emit','trigger:browser:url','username','sysparm_display_value=true','remoteUri','serverUrl','stripTrailingSlash','format','%s/api/now/table/','isNil','email','outbound','destcalleridnum','callDirection','queue','unmanaged','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','Displaying\x20call\x20in\x20a\x20new\x20tab...',']\x20Error\x20running\x20ServiceNow\x20integration','bluebird','util','md5','ioredis','./util','../../../../config/environment','redis','defaults','localhost','socket.io-emitter','GET','sys_user?sysparm_query=user_name%3Dadmin','then','result','length','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','validateEmail','sys_user?sysparm_query=email%3D','userEmail','info','],\x20getUser\x20rp\x20obj','],\x20getUser\x20entity','active','true','sys_id','userId','adminId'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0x8cb1,0xaf));var _0x18cb=function(_0x12171a,_0x3ace15){_0x12171a=_0x12171a-0x0;var _0x5a3f25=_0x8cb1[_0x12171a];return _0x5a3f25;};'use strict';var _=require('lodash');var Promise=require(_0x18cb('0x0'));var rp=require('request-promise');var util=require(_0x18cb('0x1'));var md5=require(_0x18cb('0x2'));var Redis=require(_0x18cb('0x3'));var intUtil=require(_0x18cb('0x4'));var config=require(_0x18cb('0x5'));var logger=require('../../../../config/logger')('servicenow');config[_0x18cb('0x6')]=_[_0x18cb('0x7')](config[_0x18cb('0x6')],{'host':_0x18cb('0x8'),'port':0x18eb});var io=require(_0x18cb('0x9'))(new Redis(config['redis']));function getAdminUser(_0x521626,_0x369daf,_0x228118,_0x1993a4,_0x5b0a9c,_0x20a5f9){return new Promise(function(_0x4a4897,_0x20cccf){var _0x12ac4d={'method':_0x18cb('0xa'),'uri':_0x1993a4+_0x18cb('0xb')+'&'+_0x5b0a9c+'&'+_0x20a5f9,'auth':_0x369daf,'json':!![]};return rp(_0x12ac4d)[_0x18cb('0xc')](function(_0x2d9c4c){if(_0x2d9c4c[_0x18cb('0xd')][_0x18cb('0xe')]>0x0){_0x228118['adminId']=_0x2d9c4c[_0x18cb('0xd')][0x0]['sys_id'];}logger['info']('['+[_0x521626[_0x18cb('0xf')]()]+_0x18cb('0x10'),_0x228118);_0x4a4897(_0x228118);})[_0x18cb('0x11')](function(_0x5794d1){logger[_0x18cb('0x12')]('['+[_0x521626['toUpperCase']()]+']',_0x5794d1['message']);_0x20cccf(_0x5794d1[_0x18cb('0x13')]);});});}function getUser(_0x49e603,_0x2957e8,_0xc3ed1a,_0x42ede4,_0x1caf40){return function(_0x4d9657){logger['info']('['+[_0x49e603[_0x18cb('0xf')]()]+'],\x20getUser\x20input\x20crm',_0x4d9657);return new Promise(function(_0x111c7a,_0x1c260){if(intUtil[_0x18cb('0x14')](_0x4d9657['userEmail'])){var _0x4b7ab9={'method':_0x18cb('0xa'),'uri':_0xc3ed1a+_0x18cb('0x15')+_0x4d9657[_0x18cb('0x16')]+'&'+_0x42ede4+'&'+_0x1caf40,'auth':_0x2957e8,'json':!![]};logger[_0x18cb('0x17')]('['+[_0x49e603[_0x18cb('0xf')]()]+_0x18cb('0x18'),_0x4b7ab9);return rp(_0x4b7ab9)[_0x18cb('0xc')](function(_0x2153e6){logger[_0x18cb('0x17')]('['+[_0x49e603[_0x18cb('0xf')]()]+_0x18cb('0x19'),_0x2153e6);if(_0x2153e6[_0x18cb('0xd')][_0x18cb('0xe')]>0x0&&String(_0x2153e6['result'][0x0][_0x18cb('0x1a')])===_0x18cb('0x1b')){_0x4d9657['userId']=_0x2153e6['result'][0x0][_0x18cb('0x1c')];}else{_0x4d9657[_0x18cb('0x1d')]=_0x4d9657[_0x18cb('0x1e')];_0x4d9657[_0x18cb('0x16')]=_0x4d9657[_0x18cb('0x1f')];}logger[_0x18cb('0x17')]('['+[_0x49e603[_0x18cb('0xf')]()]+_0x18cb('0x20'),_0x4d9657);_0x111c7a(_0x4d9657);})[_0x18cb('0x11')](function(_0xc9447){logger[_0x18cb('0x12')]('['+[_0x49e603['toUpperCase']()]+']',_0xc9447[_0x18cb('0x13')]);_0x1c260(_0xc9447[_0x18cb('0x13')]);});}else{logger['info']('['+[_0x49e603[_0x18cb('0xf')]()]+_0x18cb('0x21'));_0x4d9657[_0x18cb('0x1d')]=_0x4d9657[_0x18cb('0x1e')];_0x4d9657[_0x18cb('0x16')]=_0x4d9657['adminEmail'];_0x111c7a(_0x4d9657);}});};}function createEndUser(_0x4f2bf7,_0x4d3867,_0x8f1ecb,_0x1ea0c5,_0x541749){logger['info']('['+[_0x4f2bf7[_0x18cb('0xf')]()]+'],\x20createEndUser\x20input\x20crm',_0x8f1ecb);return new Promise(function(_0x54217e,_0x4e0b7b){var _0xd14e0e={'method':'POST','uri':_0x1ea0c5+'sys_user?'+_0x541749,'body':{'user_name':_0x8f1ecb[_0x18cb('0x22')],'roles':_0x18cb('0x23'),'first_name':_0x8f1ecb[_0x18cb('0x22')],'active':'true','date_format':'System','phone':_0x8f1ecb[_0x18cb('0x22')]},'auth':_0x4d3867,'json':!![]};return rp(_0xd14e0e)[_0x18cb('0xc')](function(_0x1c3aea){logger[_0x18cb('0x17')]('['+[_0x4f2bf7[_0x18cb('0xf')]()]+_0x18cb('0x24'),_0x1c3aea['result']);_0x8f1ecb[_0x18cb('0x25')]=_0x1c3aea[_0x18cb('0xd')][_0x18cb('0x1c')];_0x54217e(_0x8f1ecb);})['catch'](function(_0x2b6ed7){logger[_0x18cb('0x12')]('['+[_0x4f2bf7[_0x18cb('0xf')]()]+']',_0x2b6ed7[_0x18cb('0x13')]);_0x4e0b7b(_0x2b6ed7[_0x18cb('0x13')]);});});}function getEndUser(_0x49d63b,_0x53815e,_0x200253,_0x54f3c3,_0x228b4d){return function(_0x2fb06d){logger[_0x18cb('0x17')]('['+[_0x49d63b[_0x18cb('0xf')]()]+_0x18cb('0x26'),_0x2fb06d);return new Promise(function(_0x3e430b,_0x15a4fc){var _0x2998ed={'method':'GET','uri':_0x200253+'sys_user?sysparm_query=phone%3D'+_0x2fb06d['endUserNumber']+'&'+_0x54f3c3+'&'+_0x228b4d,'auth':_0x53815e,'json':!![]};return rp(_0x2998ed)['then'](function(_0x1a5999){if(_0x1a5999[_0x18cb('0xd')][_0x18cb('0xe')]>0x0){_0x2fb06d[_0x18cb('0x25')]=_0x1a5999['result'][0x0][_0x18cb('0x1c')];logger[_0x18cb('0x17')]('['+[_0x49d63b[_0x18cb('0xf')]()]+_0x18cb('0x27'),_0x2fb06d);_0x3e430b(_0x2fb06d);}else{return createEndUser(_0x49d63b,_0x53815e,_0x2fb06d,_0x200253,_0x54f3c3)[_0x18cb('0xc')](function(_0x12cbca){logger[_0x18cb('0x17')]('['+[_0x49d63b['toUpperCase']()]+_0x18cb('0x28'),_0x12cbca);_0x3e430b(_0x12cbca);});}})[_0x18cb('0x11')](function(_0x409351){logger[_0x18cb('0x12')]('['+[_0x49d63b[_0x18cb('0xf')]()]+']',_0x409351[_0x18cb('0x13')]);_0x15a4fc(_0x409351[_0x18cb('0x13')]);});});};}function getCustomFields(_0x3f9526,_0x4f53c4){var _0x55f326={};if(_0x3f9526['length']>0x0){_['forEach'](_0x3f9526,function(_0x3c172f){if(_[_0x18cb('0x29')]([_0x18cb('0x2a'),_0x18cb('0x2b')],_0x3c172f[_0x18cb('0x2c')])&&_0x3c172f[_0x18cb('0x2d')]&&!_0x3c172f[_0x18cb('0x2e')]){_0x55f326[_0x3c172f[_0x18cb('0x2d')][_0x18cb('0x2f')]()]=_0x3c172f[_0x18cb('0x30')][_0x18cb('0x31')]();}else if(_[_0x18cb('0x29')]([_0x18cb('0x2a'),_0x18cb('0x2b')],_0x3c172f['type'])&&_0x3c172f[_0x18cb('0x32')]&&_0x3c172f[_0x18cb('0x2e')]){_0x55f326[_0x3c172f[_0x18cb('0x32')][_0x18cb('0x2f')]()]=_0x3c172f[_0x18cb('0x30')]['toString']();}else if(_0x3c172f[_0x18cb('0x2c')]===_0x18cb('0x33')&&_0x3c172f[_0x18cb('0x34')]&&_0x3c172f['idField']&&_0x3c172f[_0x18cb('0x2e')]){_0x55f326[_0x3c172f['idField'][_0x18cb('0x2f')]()]=_0x4f53c4[_0x3c172f[_0x18cb('0x34')]][_0x18cb('0x31')]();}else if(_0x3c172f['type']===_0x18cb('0x35')&&_0x3c172f['Variable']&&_0x3c172f[_0x18cb('0x36')]['name']&&_0x3c172f[_0x18cb('0x32')]&&_0x3c172f[_0x18cb('0x2e')]){_0x55f326[_0x3c172f['idField'][_0x18cb('0x2f')]()]=_0x4f53c4[_0x3c172f[_0x18cb('0x36')]['name']['toLowerCase']()][_0x18cb('0x31')]();}});}return _0x55f326;}function getTicket(_0x3add5a,_0x47a2e2,_0x2ee60a,_0x174b90,_0x1b2aed,_0x574456){return function(_0x311944){logger['info']('['+[_0x3add5a[_0x18cb('0xf')]()]+_0x18cb('0x37'),_0x311944);return new Promise(function(_0x2911f9,_0x4893d7){var _0x4edaa4=_0x3add5a[_0x18cb('0x2f')]()==='outbound'?_0x311944[_0x18cb('0x1d')]:_0x311944['endUserId'];var _0x201aa7={'method':_0x18cb('0x38'),'uri':_0x2ee60a+'incident'+'?'+_0x574456,'body':Object['assign']({},{'active':_0x18cb('0x1b'),'caller_id':_0x4edaa4,'assigned_to':_0x311944[_0x18cb('0x1d')],'short_description':intUtil[_0x18cb('0x39')](_0x174b90[_0x18cb('0x3a')],_0x1b2aed,'\x20'),'description':intUtil[_0x18cb('0x39')](_0x174b90[_0x18cb('0x3b')],_0x1b2aed,'\x0a')},getCustomFields(_0x174b90[_0x18cb('0x3c')],_0x1b2aed)),'auth':_0x47a2e2,'json':!![]};return rp(_0x201aa7)[_0x18cb('0xc')](function(_0x2c247f){logger['info']('['+[_0x3add5a[_0x18cb('0xf')]()]+_0x18cb('0x3d'),_0x2c247f[_0x18cb('0xd')]);_0x311944['ticketId']=_0x2c247f[_0x18cb('0xd')][_0x18cb('0x1c')];_0x311944[_0x18cb('0x3e')]=_0x2c247f[_0x18cb('0xd')][_0x18cb('0x3f')];logger[_0x18cb('0x17')]('['+[_0x3add5a[_0x18cb('0xf')]()]+_0x18cb('0x40'),_0x311944);_0x2911f9(_0x311944);})[_0x18cb('0x11')](function(_0x161874){logger['error']('['+[_0x3add5a[_0x18cb('0xf')]()]+']',_0x161874[_0x18cb('0x13')]);_0x4893d7(_0x161874[_0x18cb('0x13')]);});});};}function createRemoteTag(_0x1d69da,_0x367485,_0x594412,_0x456610){return new Promise(function(_0x4bfa84,_0x2e0b7d){var _0x222059={'method':_0x18cb('0x38'),'uri':_0x594412+_0x18cb('0x41')+'?'+_0x456610,'body':{'short_description':_0x1d69da,'global':!![],'active':!![],'name':_0x1d69da},'auth':_0x367485,'json':!![]};return rp(_0x222059)['then'](function(_0x10e53b){var _0x414ecf=_0x10e53b['result'][_0x18cb('0x1c')];_0x4bfa84(_0x414ecf);});});}function getRemoteTag(_0x23bbd1,_0x28df42,_0x3a8d2f,_0x1f5d81,_0x6c3845){return new Promise(function(_0x4496ae,_0x3b7fca){var _0x262019={'method':_0x18cb('0xa'),'uri':_0x3a8d2f+'label'+_0x18cb('0x42')+_0x23bbd1+'&'+_0x1f5d81,'auth':_0x28df42,'json':!![]};return rp(_0x262019)['then'](function(_0x331044){if(_0x331044['result'][_0x18cb('0xe')]>0x0){var _0x2c88b3=_0x331044[_0x18cb('0xd')][0x0][_0x18cb('0x1c')];_0x4496ae(_0x2c88b3);}else{return createRemoteTag(_0x23bbd1,_0x28df42,_0x3a8d2f,_0x1f5d81)[_0x18cb('0xc')](function(_0x10d5c4){_0x4496ae(_0x10d5c4);});}});});}function assignTagToIncident(_0x43f0a4,_0x56440b,_0x397aa0,_0x1277ff,_0x5614bf){return new Promise(function(_0xb7de44,_0x332561){var _0x27e74c={'method':_0x18cb('0x38'),'uri':_0x397aa0+'label_entry'+'?'+_0x5614bf,'body':{'label':_0x43f0a4,'table':_0x18cb('0x43'),'id_type':'Incident','table_key':_0x1277ff[_0x18cb('0x44')],'title':_0x18cb('0x45')+_0x1277ff[_0x18cb('0x3e')],'id_display':_0x1277ff[_0x18cb('0x3e')]},'auth':_0x56440b,'json':!![]};return rp(_0x27e74c)[_0x18cb('0xc')](function(_0x350257){_0xb7de44();})['catch'](function(){_0xb7de44();});});}function manageTags(_0x50fd94,_0x217a8c,_0x3e232c,_0x42d99a,_0x4cf1f6,_0x60e0f2,_0xffc1f5){return new Promise(function(_0x1c474e,_0x48128b){var _0x1d5739=[];_0x217a8c[_0x18cb('0x46')](function(_0x1ff277){_0x1d5739[_0x18cb('0x47')](getRemoteTag(_0x1ff277,_0x3e232c,_0x42d99a,_0x60e0f2,_0xffc1f5));});return Promise[_0x18cb('0x48')](_0x1d5739)[_0x18cb('0xc')](function(_0x35d59c){if(_0x35d59c[_0x18cb('0xe')]){logger[_0x18cb('0x17')]('['+[_0x50fd94['toUpperCase']()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x35d59c);var _0x19e705=[];_0x35d59c['forEach'](function(_0x3156de){_0x19e705[_0x18cb('0x47')](assignTagToIncident(_0x3156de,_0x3e232c,_0x42d99a,_0x4cf1f6,_0x60e0f2));});return Promise[_0x18cb('0x48')](_0x19e705)['then'](function(){_0x1c474e();})[_0x18cb('0x11')](function(){_0x1c474e();});}else{_0x1c474e();}});});}function getTags(_0x21d202,_0x51359c,_0x641350,_0x38d5a3,_0x2969a5,_0xbeda68){return function(_0x26905c){return new Promise(function(_0x27d310,_0x481ee3){var _0x378b29=[];var _0x2d3cb3=_0x38d5a3[_0x18cb('0x49')];if(_0x2d3cb3&&_0x2d3cb3[_0x18cb('0xe')]>0x0){_0x378b29=_['map'](_0x2d3cb3,_0x18cb('0x4a'));}if(_0x378b29[_0x18cb('0xe')]>0x0){return manageTags(_0x21d202,_0x378b29,_0x51359c,_0x641350,_0x26905c,_0x2969a5,_0xbeda68)[_0x18cb('0xc')](function(){_0x27d310(_0x26905c);});}else{_0x27d310(_0x26905c);}});};}function emit(_0x148e1a,_0x1f8ed1,_0x10bc75){var _0x4a9de9='%26sysparm_record_target%3Dincident'+'%26sysparm_record_row%3D1%26sysparm_record_rows%3D39'+_0x18cb('0x4b')+'%255EORDERBYDESCnumber';var _0x3eaccb={'uri':_0x148e1a+_0x18cb('0x4c')+_0x10bc75+_0x4a9de9};io['to'](util['format'](_0x18cb('0x4d'),_0x1f8ed1))[_0x18cb('0x4e')](_0x18cb('0x4f'),_0x3eaccb);}exports['cs']=function(_0xaab09b,_0x5c22f8,_0x468071,_0x57ff35,_0x21edcd,_0x5c6caa,_0x2a599c,_0x3c125a){var _0x3a0c46={};var _0x36d53c={'user':_0x5c6caa[_0x18cb('0x50')],'pass':_0x5c6caa['password']};var _0x1d2013='sysparm_limit=1';var _0xad1471=_0x18cb('0x51');_0x5c6caa[_0x18cb('0x52')]=intUtil['stripTrailingSlash'](_0x5c6caa['remoteUri']);_0x5c6caa[_0x18cb('0x53')]=intUtil[_0x18cb('0x54')](_0x5c6caa[_0x18cb('0x53')]);var _0x42a379=util[_0x18cb('0x55')](_0x18cb('0x56'),_0x5c6caa[_0x18cb('0x52')]);_0x3a0c46[_0x18cb('0x16')]=!_[_0x18cb('0x57')](_0x57ff35)?_0x57ff35['email']:null;_0x3a0c46[_0x18cb('0x1f')]=_0x5c6caa[_0x18cb('0x58')];_0x3a0c46[_0x18cb('0x22')]=_0x3c125a[_0x18cb('0x2f')]()===_0x18cb('0x59')?_0x5c22f8[_0x18cb('0x5a')]:_0x5c22f8['calleridnum'];_0x3a0c46[_0x18cb('0x5b')]=_0x3c125a===_0x18cb('0x5c')||_0x3c125a===_0x18cb('0x5d')?_0x18cb('0x5c'):_0x18cb('0x59');var _0x200b3c=util[_0x18cb('0x55')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5c6caa[_0x18cb('0x53')],_0x5c22f8['uniqueid'],md5(_0x5c22f8['uniqueid']));if(_0x21edcd&&_0x21edcd[_0x18cb('0x5e')]){logger['info'](_0x18cb('0x5f'),_0x18cb('0x60'));_0x5c22f8[_0x18cb('0x61')]=_0x200b3c;}else if(_0x2a599c&&_0x2a599c[_0x18cb('0x62')]&&_0x2a599c[_0x18cb('0x62')]!==_0x18cb('0x63')){logger[_0x18cb('0x17')](_0x18cb('0x64'),'Recording\x20is\x20enabled!');_0x5c22f8[_0x18cb('0x61')]=_0x200b3c;}else{_0x5c22f8['recordingURL']='';}return getAdminUser(_0x3c125a,_0x36d53c,_0x3a0c46,_0x42a379,_0xad1471,_0x1d2013)['then'](getUser(_0x3c125a,_0x36d53c,_0x42a379,_0xad1471,_0x1d2013))[_0x18cb('0xc')](getEndUser(_0x3c125a,_0x36d53c,_0x42a379,_0xad1471,_0x1d2013))['then'](getTicket(_0x3c125a,_0x36d53c,_0x42a379,_0x468071,_0x5c22f8,_0xad1471))[_0x18cb('0xc')](function(_0x1f0240){logger[_0x18cb('0x17')](util[_0x18cb('0x55')]('The\x20ticket\x20ID\x20is:\x20%s',_0x1f0240[_0x18cb('0x44')]));logger[_0x18cb('0x17')](util[_0x18cb('0x55')]('call\x20direction:\x20%s',_0x3c125a));if(_0x3c125a!=='unmanaged'){logger['info']('['+[_0x3c125a[_0x18cb('0xf')]()]+']',_0x18cb('0x65'));emit(_0x5c6caa[_0x18cb('0x52')],_0x57ff35[_0x18cb('0x4a')],_0x1f0240[_0x18cb('0x44')]);}})[_0x18cb('0x11')](function(_0x55d0e2){logger['error']('['+[_0x3c125a[_0x18cb('0xf')]()]+_0x18cb('0x66'),util['inspect'](_0x55d0e2,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0xf332=['servicenow','defaults','redis','localhost','GET','then','result','length','adminId','sys_id','info','toUpperCase','],\x20getAdminUser\x20crm','catch','error','message','],\x20getUser\x20input\x20crm','validateEmail','userEmail','sys_user?sysparm_query=email%3D','],\x20getUser\x20entity','active','userId',']\x20using\x20admin\x20profile','adminEmail','],\x20createEndUser\x20input\x20crm','POST','sys_user?','endUserNumber','user','System','],\x20EndUser\x20schema','endUserId','],\x20getEndUser\x20input\x20crm','sys_user?sysparm_query=phone%3D','],\x20getEndUser\x20crm','],\x20createEndUser\x20crm','forEach','includes','string','picklist','type','nameField','customField','toLowerCase','content','toString','idField','variable','variableName','customVariable','Variable','name',']\x20getTicket\x20input\x20crm','outbound','incident','assign','true','getString','Subjects','Descriptions','Fields',']\x20POST\x20incident\x20entity\x20schema','ticketId','ticketNumber','number',']\x20getTicket\x20crm','label','?sysparm_query=name%3D','Incident\x20-\x20','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','user:%s','emit','trigger:browser:url','password','sysparm_limit=1','sysparm_display_value=true','stripTrailingSlash','remoteUri','serverUrl','isNil','email','destcalleridnum','calleridnum','callDirection','queue','unmanaged','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','recordingFormat','none','[OUTBOUND]','call\x20direction:\x20%s',']\x20Error\x20running\x20ServiceNow\x20integration','inspect','lodash','bluebird','request-promise','util','ioredis','./util','../../../../config/environment','../../../../config/logger'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xf332,0x6a));var _0x2f33=function(_0x4b977e,_0x1e25dc){_0x4b977e=_0x4b977e-0x0;var _0x96a540=_0xf332[_0x4b977e];return _0x96a540;};'use strict';var _=require(_0x2f33('0x0'));var Promise=require(_0x2f33('0x1'));var rp=require(_0x2f33('0x2'));var util=require(_0x2f33('0x3'));var md5=require('md5');var Redis=require(_0x2f33('0x4'));var intUtil=require(_0x2f33('0x5'));var config=require(_0x2f33('0x6'));var logger=require(_0x2f33('0x7'))(_0x2f33('0x8'));config['redis']=_[_0x2f33('0x9')](config[_0x2f33('0xa')],{'host':_0x2f33('0xb'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0x2f33('0xa')]));function getAdminUser(_0x15dce8,_0x285f67,_0x4fab61,_0x290249,_0x224b3b,_0x47f1a9){return new Promise(function(_0x22606f,_0x2da274){var _0x140870={'method':_0x2f33('0xc'),'uri':_0x290249+'sys_user?sysparm_query=user_name%3Dadmin'+'&'+_0x224b3b+'&'+_0x47f1a9,'auth':_0x285f67,'json':!![]};return rp(_0x140870)[_0x2f33('0xd')](function(_0x33cf05){if(_0x33cf05[_0x2f33('0xe')][_0x2f33('0xf')]>0x0){_0x4fab61[_0x2f33('0x10')]=_0x33cf05[_0x2f33('0xe')][0x0][_0x2f33('0x11')];}logger[_0x2f33('0x12')]('['+[_0x15dce8[_0x2f33('0x13')]()]+_0x2f33('0x14'),_0x4fab61);_0x22606f(_0x4fab61);})[_0x2f33('0x15')](function(_0x1915bf){logger[_0x2f33('0x16')]('['+[_0x15dce8[_0x2f33('0x13')]()]+']',_0x1915bf['message']);_0x2da274(_0x1915bf[_0x2f33('0x17')]);});});}function getUser(_0xc52d2d,_0x242d2f,_0x4a338b,_0x5b7462,_0x35292f){return function(_0x30bd5d){logger['info']('['+[_0xc52d2d[_0x2f33('0x13')]()]+_0x2f33('0x18'),_0x30bd5d);return new Promise(function(_0x44fc69,_0x3dde32){if(intUtil[_0x2f33('0x19')](_0x30bd5d[_0x2f33('0x1a')])){var _0x157458={'method':_0x2f33('0xc'),'uri':_0x4a338b+_0x2f33('0x1b')+_0x30bd5d['userEmail']+'&'+_0x5b7462+'&'+_0x35292f,'auth':_0x242d2f,'json':!![]};logger[_0x2f33('0x12')]('['+[_0xc52d2d[_0x2f33('0x13')]()]+'],\x20getUser\x20rp\x20obj',_0x157458);return rp(_0x157458)[_0x2f33('0xd')](function(_0x300706){logger[_0x2f33('0x12')]('['+[_0xc52d2d[_0x2f33('0x13')]()]+_0x2f33('0x1c'),_0x300706);if(_0x300706['result']['length']>0x0&&String(_0x300706['result'][0x0][_0x2f33('0x1d')])==='true'){_0x30bd5d[_0x2f33('0x1e')]=_0x300706[_0x2f33('0xe')][0x0][_0x2f33('0x11')];}else{_0x30bd5d[_0x2f33('0x1e')]=_0x30bd5d[_0x2f33('0x10')];_0x30bd5d[_0x2f33('0x1a')]=_0x30bd5d['adminEmail'];}logger[_0x2f33('0x12')]('['+[_0xc52d2d[_0x2f33('0x13')]()]+'],\x20getUser\x20crm',_0x30bd5d);_0x44fc69(_0x30bd5d);})[_0x2f33('0x15')](function(_0x349fed){logger[_0x2f33('0x16')]('['+[_0xc52d2d['toUpperCase']()]+']',_0x349fed['message']);_0x3dde32(_0x349fed[_0x2f33('0x17')]);});}else{logger['info']('['+[_0xc52d2d['toUpperCase']()]+_0x2f33('0x1f'));_0x30bd5d[_0x2f33('0x1e')]=_0x30bd5d[_0x2f33('0x10')];_0x30bd5d[_0x2f33('0x1a')]=_0x30bd5d[_0x2f33('0x20')];_0x44fc69(_0x30bd5d);}});};}function createEndUser(_0x1e0414,_0x2f5527,_0x2b3d8c,_0x3055ed,_0x2fc5ca){logger['info']('['+[_0x1e0414[_0x2f33('0x13')]()]+_0x2f33('0x21'),_0x2b3d8c);return new Promise(function(_0x18e5c3,_0xdb0856){var _0x1b417b={'method':_0x2f33('0x22'),'uri':_0x3055ed+_0x2f33('0x23')+_0x2fc5ca,'body':{'user_name':_0x2b3d8c[_0x2f33('0x24')],'roles':_0x2f33('0x25'),'first_name':_0x2b3d8c[_0x2f33('0x24')],'active':'true','date_format':_0x2f33('0x26'),'phone':_0x2b3d8c[_0x2f33('0x24')]},'auth':_0x2f5527,'json':!![]};return rp(_0x1b417b)[_0x2f33('0xd')](function(_0x35d845){logger[_0x2f33('0x12')]('['+[_0x1e0414[_0x2f33('0x13')]()]+_0x2f33('0x27'),_0x35d845[_0x2f33('0xe')]);_0x2b3d8c[_0x2f33('0x28')]=_0x35d845[_0x2f33('0xe')][_0x2f33('0x11')];_0x18e5c3(_0x2b3d8c);})[_0x2f33('0x15')](function(_0x11afa8){logger['error']('['+[_0x1e0414[_0x2f33('0x13')]()]+']',_0x11afa8['message']);_0xdb0856(_0x11afa8[_0x2f33('0x17')]);});});}function getEndUser(_0x5a6c03,_0x5e53eb,_0x54c322,_0x21b03c,_0x35855f){return function(_0x4eba31){logger[_0x2f33('0x12')]('['+[_0x5a6c03[_0x2f33('0x13')]()]+_0x2f33('0x29'),_0x4eba31);return new Promise(function(_0x18bc23,_0x2143e5){var _0x16962a={'method':_0x2f33('0xc'),'uri':_0x54c322+_0x2f33('0x2a')+_0x4eba31['endUserNumber']+'&'+_0x21b03c+'&'+_0x35855f,'auth':_0x5e53eb,'json':!![]};return rp(_0x16962a)[_0x2f33('0xd')](function(_0x1dd5e4){if(_0x1dd5e4[_0x2f33('0xe')]['length']>0x0){_0x4eba31[_0x2f33('0x28')]=_0x1dd5e4['result'][0x0]['sys_id'];logger['info']('['+[_0x5a6c03[_0x2f33('0x13')]()]+_0x2f33('0x2b'),_0x4eba31);_0x18bc23(_0x4eba31);}else{return createEndUser(_0x5a6c03,_0x5e53eb,_0x4eba31,_0x54c322,_0x21b03c)['then'](function(_0x425669){logger[_0x2f33('0x12')]('['+[_0x5a6c03['toUpperCase']()]+_0x2f33('0x2c'),_0x425669);_0x18bc23(_0x425669);});}})[_0x2f33('0x15')](function(_0x559ac8){logger[_0x2f33('0x16')]('['+[_0x5a6c03[_0x2f33('0x13')]()]+']',_0x559ac8[_0x2f33('0x17')]);_0x2143e5(_0x559ac8[_0x2f33('0x17')]);});});};}function getCustomFields(_0x534e54,_0x28ad28){var _0xd0c220={};if(_0x534e54[_0x2f33('0xf')]>0x0){_[_0x2f33('0x2d')](_0x534e54,function(_0x46480d){if(_[_0x2f33('0x2e')]([_0x2f33('0x2f'),_0x2f33('0x30')],_0x46480d[_0x2f33('0x31')])&&_0x46480d[_0x2f33('0x32')]&&!_0x46480d[_0x2f33('0x33')]){_0xd0c220[_0x46480d[_0x2f33('0x32')][_0x2f33('0x34')]()]=_0x46480d[_0x2f33('0x35')][_0x2f33('0x36')]();}else if(_['includes']([_0x2f33('0x2f'),_0x2f33('0x30')],_0x46480d[_0x2f33('0x31')])&&_0x46480d[_0x2f33('0x37')]&&_0x46480d[_0x2f33('0x33')]){_0xd0c220[_0x46480d[_0x2f33('0x37')]['toLowerCase']()]=_0x46480d[_0x2f33('0x35')][_0x2f33('0x36')]();}else if(_0x46480d[_0x2f33('0x31')]===_0x2f33('0x38')&&_0x46480d[_0x2f33('0x39')]&&_0x46480d[_0x2f33('0x37')]&&_0x46480d[_0x2f33('0x33')]){_0xd0c220[_0x46480d[_0x2f33('0x37')][_0x2f33('0x34')]()]=_0x28ad28[_0x46480d[_0x2f33('0x39')]][_0x2f33('0x36')]();}else if(_0x46480d['type']===_0x2f33('0x3a')&&_0x46480d[_0x2f33('0x3b')]&&_0x46480d[_0x2f33('0x3b')][_0x2f33('0x3c')]&&_0x46480d['idField']&&_0x46480d['customField']){_0xd0c220[_0x46480d['idField'][_0x2f33('0x34')]()]=_0x28ad28[_0x46480d['Variable'][_0x2f33('0x3c')][_0x2f33('0x34')]()][_0x2f33('0x36')]();}});}return _0xd0c220;}function getTicket(_0x127bb9,_0x2df41c,_0xf2e91a,_0x5973a2,_0x1c0b27,_0x3096ef){return function(_0x1881b3){logger['info']('['+[_0x127bb9[_0x2f33('0x13')]()]+_0x2f33('0x3d'),_0x1881b3);return new Promise(function(_0x35de77,_0x1bab39){var _0x1dfe30=_0x127bb9['toLowerCase']()===_0x2f33('0x3e')?_0x1881b3['userId']:_0x1881b3[_0x2f33('0x28')];var _0x395ed1={'method':_0x2f33('0x22'),'uri':_0xf2e91a+_0x2f33('0x3f')+'?'+_0x3096ef,'body':Object[_0x2f33('0x40')]({},{'active':_0x2f33('0x41'),'caller_id':_0x1dfe30,'assigned_to':_0x1881b3['userId'],'short_description':intUtil[_0x2f33('0x42')](_0x5973a2[_0x2f33('0x43')],_0x1c0b27,'\x20'),'description':intUtil[_0x2f33('0x42')](_0x5973a2[_0x2f33('0x44')],_0x1c0b27,'\x0a')},getCustomFields(_0x5973a2[_0x2f33('0x45')],_0x1c0b27)),'auth':_0x2df41c,'json':!![]};return rp(_0x395ed1)[_0x2f33('0xd')](function(_0x41e476){logger[_0x2f33('0x12')]('['+[_0x127bb9[_0x2f33('0x13')]()]+_0x2f33('0x46'),_0x41e476['result']);_0x1881b3[_0x2f33('0x47')]=_0x41e476[_0x2f33('0xe')][_0x2f33('0x11')];_0x1881b3[_0x2f33('0x48')]=_0x41e476[_0x2f33('0xe')][_0x2f33('0x49')];logger[_0x2f33('0x12')]('['+[_0x127bb9['toUpperCase']()]+_0x2f33('0x4a'),_0x1881b3);_0x35de77(_0x1881b3);})['catch'](function(_0xd530){logger[_0x2f33('0x16')]('['+[_0x127bb9[_0x2f33('0x13')]()]+']',_0xd530[_0x2f33('0x17')]);_0x1bab39(_0xd530[_0x2f33('0x17')]);});});};}function createRemoteTag(_0x100861,_0x187bfd,_0x7f575f,_0x25781d){return new Promise(function(_0x3e369e,_0x138e39){var _0x23f73e={'method':_0x2f33('0x22'),'uri':_0x7f575f+_0x2f33('0x4b')+'?'+_0x25781d,'body':{'short_description':_0x100861,'global':!![],'active':!![],'name':_0x100861},'auth':_0x187bfd,'json':!![]};return rp(_0x23f73e)[_0x2f33('0xd')](function(_0x4f21df){var _0x28433e=_0x4f21df[_0x2f33('0xe')]['sys_id'];_0x3e369e(_0x28433e);});});}function getRemoteTag(_0x413c88,_0x3333af,_0x4ec27f,_0x3e7b3d,_0x4c786d){return new Promise(function(_0xc5442e,_0x191897){var _0x45bcfa={'method':'GET','uri':_0x4ec27f+_0x2f33('0x4b')+_0x2f33('0x4c')+_0x413c88+'&'+_0x3e7b3d,'auth':_0x3333af,'json':!![]};return rp(_0x45bcfa)[_0x2f33('0xd')](function(_0x530532){if(_0x530532['result'][_0x2f33('0xf')]>0x0){var _0x5e12be=_0x530532[_0x2f33('0xe')][0x0][_0x2f33('0x11')];_0xc5442e(_0x5e12be);}else{return createRemoteTag(_0x413c88,_0x3333af,_0x4ec27f,_0x3e7b3d)[_0x2f33('0xd')](function(_0x1b6568){_0xc5442e(_0x1b6568);});}});});}function assignTagToIncident(_0x5ab6ed,_0x30f2ea,_0x33aec6,_0x244474,_0x405b7a){return new Promise(function(_0x4bf347,_0x4c4d4f){var _0xc106b={'method':'POST','uri':_0x33aec6+'label_entry'+'?'+_0x405b7a,'body':{'label':_0x5ab6ed,'table':_0x2f33('0x3f'),'id_type':'Incident','table_key':_0x244474[_0x2f33('0x47')],'title':_0x2f33('0x4d')+_0x244474[_0x2f33('0x48')],'id_display':_0x244474['ticketNumber']},'auth':_0x30f2ea,'json':!![]};return rp(_0xc106b)['then'](function(_0x4746eb){_0x4bf347();})[_0x2f33('0x15')](function(){_0x4bf347();});});}function manageTags(_0x4006d9,_0x1df263,_0x3ee9f2,_0x109fc8,_0x450f23,_0x4b2369,_0x37e325){return new Promise(function(_0xd5c5bf,_0x189440){var _0x2e6468=[];_0x1df263[_0x2f33('0x2d')](function(_0x15e0db){_0x2e6468[_0x2f33('0x4e')](getRemoteTag(_0x15e0db,_0x3ee9f2,_0x109fc8,_0x4b2369,_0x37e325));});return Promise[_0x2f33('0x4f')](_0x2e6468)['then'](function(_0x132d37){if(_0x132d37[_0x2f33('0xf')]){logger[_0x2f33('0x12')]('['+[_0x4006d9['toUpperCase']()]+']\x20arrayPromises:\x20IDs\x20in\x20table\x20label',_0x132d37);var _0x4a8bc0=[];_0x132d37['forEach'](function(_0x40490f){_0x4a8bc0[_0x2f33('0x4e')](assignTagToIncident(_0x40490f,_0x3ee9f2,_0x109fc8,_0x450f23,_0x4b2369));});return Promise['all'](_0x4a8bc0)[_0x2f33('0xd')](function(){_0xd5c5bf();})[_0x2f33('0x15')](function(){_0xd5c5bf();});}else{_0xd5c5bf();}});});}function getTags(_0x4bce06,_0x49d3de,_0x40d5df,_0x44686d,_0x3f5769,_0x266545){return function(_0x2db8bf){return new Promise(function(_0x463b88,_0x5ee8ad){var _0x46176c=[];var _0x52c252=_0x44686d[_0x2f33('0x50')];if(_0x52c252&&_0x52c252[_0x2f33('0xf')]>0x0){_0x46176c=_[_0x2f33('0x51')](_0x52c252,'name');}if(_0x46176c[_0x2f33('0xf')]>0x0){return manageTags(_0x4bce06,_0x46176c,_0x49d3de,_0x40d5df,_0x2db8bf,_0x3f5769,_0x266545)[_0x2f33('0xd')](function(){_0x463b88(_0x2db8bf);});}else{_0x463b88(_0x2db8bf);}});};}function emit(_0x1258bd,_0x2518a6,_0x4d2b8f){var _0x8129c6='%26sysparm_record_target%3Dincident'+_0x2f33('0x52')+_0x2f33('0x53')+_0x2f33('0x54');var _0x27c48c={'uri':_0x1258bd+_0x2f33('0x55')+_0x4d2b8f+_0x8129c6};io['to'](util[_0x2f33('0x56')](_0x2f33('0x57'),_0x2518a6))[_0x2f33('0x58')](_0x2f33('0x59'),_0x27c48c);}exports['cs']=function(_0x140e03,_0x59ae63,_0x84e539,_0x5ef7b8,_0x18786d,_0x2c39ca,_0x5c4b4e,_0x2579a4){var _0x322428={};var _0x5d0077={'user':_0x2c39ca['username'],'pass':_0x2c39ca[_0x2f33('0x5a')]};var _0x272dd8=_0x2f33('0x5b');var _0x5eb218=_0x2f33('0x5c');_0x2c39ca['remoteUri']=intUtil[_0x2f33('0x5d')](_0x2c39ca[_0x2f33('0x5e')]);_0x2c39ca[_0x2f33('0x5f')]=intUtil[_0x2f33('0x5d')](_0x2c39ca[_0x2f33('0x5f')]);var _0xffea0a=util[_0x2f33('0x56')]('%s/api/now/table/',_0x2c39ca['remoteUri']);_0x322428[_0x2f33('0x1a')]=!_[_0x2f33('0x60')](_0x5ef7b8)?_0x5ef7b8[_0x2f33('0x61')]:null;_0x322428[_0x2f33('0x20')]=_0x2c39ca[_0x2f33('0x61')];_0x322428[_0x2f33('0x24')]=_0x2579a4[_0x2f33('0x34')]()===_0x2f33('0x3e')?_0x59ae63[_0x2f33('0x62')]:_0x59ae63[_0x2f33('0x63')];_0x322428[_0x2f33('0x64')]=_0x2579a4===_0x2f33('0x65')||_0x2579a4===_0x2f33('0x66')?_0x2f33('0x65'):'outbound';var _0x2a999e=util['format'](_0x2f33('0x67'),_0x2c39ca[_0x2f33('0x5f')],_0x59ae63[_0x2f33('0x68')],md5(_0x59ae63[_0x2f33('0x68')]));if(_0x18786d&&_0x18786d['monitor_format']){logger[_0x2f33('0x12')](_0x2f33('0x69'),_0x2f33('0x6a'));_0x59ae63[_0x2f33('0x6b')]=_0x2a999e;}else if(_0x5c4b4e&&_0x5c4b4e[_0x2f33('0x6c')]&&_0x5c4b4e[_0x2f33('0x6c')]!==_0x2f33('0x6d')){logger[_0x2f33('0x12')](_0x2f33('0x6e'),_0x2f33('0x6a'));_0x59ae63[_0x2f33('0x6b')]=_0x2a999e;}else{_0x59ae63[_0x2f33('0x6b')]='';}return getAdminUser(_0x2579a4,_0x5d0077,_0x322428,_0xffea0a,_0x5eb218,_0x272dd8)['then'](getUser(_0x2579a4,_0x5d0077,_0xffea0a,_0x5eb218,_0x272dd8))[_0x2f33('0xd')](getEndUser(_0x2579a4,_0x5d0077,_0xffea0a,_0x5eb218,_0x272dd8))[_0x2f33('0xd')](getTicket(_0x2579a4,_0x5d0077,_0xffea0a,_0x84e539,_0x59ae63,_0x5eb218))[_0x2f33('0xd')](function(_0x314e40){logger[_0x2f33('0x12')](util['format']('The\x20ticket\x20ID\x20is:\x20%s',_0x314e40[_0x2f33('0x47')]));logger[_0x2f33('0x12')](util[_0x2f33('0x56')](_0x2f33('0x6f'),_0x2579a4));if(_0x2579a4!==_0x2f33('0x66')){logger['info']('['+[_0x2579a4['toUpperCase']()]+']','Displaying\x20call\x20in\x20a\x20new\x20tab...');emit(_0x2c39ca[_0x2f33('0x5e')],_0x5ef7b8[_0x2f33('0x3c')],_0x314e40[_0x2f33('0x47')]);}})[_0x2f33('0x15')](function(_0x52b62a){logger[_0x2f33('0x16')]('['+[_0x2579a4[_0x2f33('0x13')]()]+_0x2f33('0x70'),util[_0x2f33('0x71')](_0x52b62a,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 84b3bd9..13a095d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc210=['set_entry','JSON','stringify','Calls','format','Basic\x20%s','toString','base64','get_server_info','isNil','Getting\x20agent\x20with\x20name','get_entry_list','Employees','INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200','user_name','entry_list','find','name_value_list','value','resolve','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','user_id','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','Caller\x20-\x20%s','then','Enduser\x20created.','debug','[HTTP]','merge','map','string','nameField','customField','content','type','customVariable','Variable','toLowerCase','username','password','PLAIN','xCALLY\x20Motion\x20integration','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','stripTrailingSlash','serverUrl','uri','%s/service/v4_1/rest.php','remoteUri','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','The\x20User\x20ID\x20is:','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','Fields','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','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','catch','error','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','destcalleridname','Outbound','user:%s','trigger:browser:url','unmanaged','monitor_format','lastevent','toUpperCase','Inbound','Ticket\x20created!','lodash','request-promise','md5','util','ioredis','./util','sugarcrm','redis','defaults','localhost','socket.io-emitter','POST','emit','info','name','getString','Subjects','assigned_user_id','created_by','description','Descriptions','date_start','toISOString','slice','replace','duration_hours','duration_minutes','parent_id','parent_type','Contacts','parent_name','direction','length','forEach','variableName','push','idField'];(function(_0x3cdfed,_0x1dfdad){var _0x107f66=function(_0x545fe8){while(--_0x545fe8){_0x3cdfed['push'](_0x3cdfed['shift']());}};_0x107f66(++_0x1dfdad);}(_0xc210,0x155));var _0x0c21=function(_0x467cb1,_0x1fca21){_0x467cb1=_0x467cb1-0x0;var _0x584cd1=_0xc210[_0x467cb1];return _0x584cd1;};'use strict';var _=require(_0x0c21('0x0'));var rp=require(_0x0c21('0x1'));var BPromise=require('bluebird');var md5=require(_0x0c21('0x2'));var util=require(_0x0c21('0x3'));var Redis=require(_0x0c21('0x4'));var intUtil=require(_0x0c21('0x5'));var config=require('../../../../config/environment');var logger=require('../../../../config/logger')(_0x0c21('0x6'));config[_0x0c21('0x7')]=_[_0x0c21('0x8')](config[_0x0c21('0x7')],{'host':_0x0c21('0x9'),'port':0x18eb});var io=require(_0x0c21('0xa'))(new Redis(config['redis']));var def={'method':_0x0c21('0xb'),'json':!![]};function emit(_0x667b0e,_0x4c7b8a,_0x3ba7e1){io['to'](_0x667b0e)[_0x0c21('0xc')](_0x4c7b8a,_0x3ba7e1);}function getTicket(_0x24d306,_0x61303e,_0xc46967,_0x3dd658,_0xa61697,_0x94715d,_0x4ab845,_0x13f356){logger[_0x0c21('0xd')]('Creating\x20new\x20ticket...');var _0x531b56=new Date();var _0x510217=[{'name':_0x0c21('0xe'),'value':intUtil[_0x0c21('0xf')](_0x3dd658[_0x0c21('0x10')],_0xa61697,'\x20')},{'name':_0x0c21('0x11'),'value':_0x61303e['id']},{'name':_0x0c21('0x12'),'value':_0x61303e['id']},{'name':_0x0c21('0x13'),'value':intUtil['getString'](_0x3dd658[_0x0c21('0x14')],_0xa61697,'\x0a')},{'name':_0x0c21('0x15'),'value':_0x531b56[_0x0c21('0x16')]()[_0x0c21('0x17')](0x0,0x13)[_0x0c21('0x18')]('T','\x20')},{'name':_0x0c21('0x19'),'value':'0'},{'name':_0x0c21('0x1a'),'value':'15'},{'name':_0x0c21('0x1b'),'value':_0xc46967['id']},{'name':_0x0c21('0x1c'),'value':_0x0c21('0x1d')},{'name':_0x0c21('0x1e'),'value':_0xc46967[_0x0c21('0xe')]},{'name':_0x0c21('0x1f'),'value':_0x13f356}];if(_0x94715d[_0x0c21('0x20')]){_[_0x0c21('0x21')](_0x94715d,function(_0x581a70){if(_0xa61697[_0x581a70[_0x0c21('0x22')]]){_0x510217[_0x0c21('0x23')]({'name':_0x581a70[_0x0c21('0x24')],'value':_0xa61697[_0x581a70[_0x0c21('0x22')]]});}});}return request({'form':{'method':_0x0c21('0x25'),'input_type':_0x0c21('0x26'),'response_type':'JSON','rest_data':JSON[_0x0c21('0x27')]({'session':_0x4ab845['id'],'module_name':_0x0c21('0x28'),'name_value_list':_0x510217})}});}function getAuth(_0x2a5622){return util[_0x0c21('0x29')](_0x0c21('0x2a'),new Buffer(_0x2a5622['apiKey']+':X')[_0x0c21('0x2b')](_0x0c21('0x2c')));}function getServerInfo(_0x52760a){return request({'form':{'method':_0x0c21('0x2d'),'input_type':'JSON','response_type':_0x0c21('0x26'),'rest_data':JSON['stringify']({'session':_0x52760a['id']})}});}function getUser(_0x15021d,_0x719416,_0x38a528){if(!_[_0x0c21('0x2e')](_0x719416)){logger[_0x0c21('0xd')](_0x0c21('0x2f'),_0x719416);return request({'form':{'method':_0x0c21('0x30'),'input_type':_0x0c21('0x26'),'response_type':_0x0c21('0x26'),'rest_data':JSON[_0x0c21('0x27')]({'session':_0x38a528['id'],'module_name':_0x0c21('0x31'),'query':util['format'](_0x0c21('0x32'),_0x719416),'order_by':'','offset':'0','select_fields':['id','name',_0x0c21('0x33')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x54d124){if(_0x54d124[_0x0c21('0x34')][_0x0c21('0x20')]){var _0x496e20=_[_0x0c21('0x35')](_0x54d124[_0x0c21('0x34')],function(_0x2fdb41){return _0x2fdb41[_0x0c21('0x36')]['user_name'][_0x0c21('0x37')]===_0x719416;});if(_0x496e20){logger['info']('Agent\x20found!');return BPromise[_0x0c21('0x38')]({'id':_0x496e20['name_value_list']['id']['value'],'name':_0x496e20[_0x0c21('0x36')][_0x0c21('0xe')][_0x0c21('0x37')]});}}logger[_0x0c21('0xd')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return BPromise[_0x0c21('0x38')]({'id':_0x38a528[_0x0c21('0x36')]['user_id'][_0x0c21('0x37')],'name':_0x38a528[_0x0c21('0x36')][_0x0c21('0x33')][_0x0c21('0x37')]});});}else{logger[_0x0c21('0xd')](_0x0c21('0x39'));return BPromise[_0x0c21('0x38')]({'id':_0x38a528[_0x0c21('0x36')][_0x0c21('0x3a')]['value'],'name':_0x38a528[_0x0c21('0x36')][_0x0c21('0x33')][_0x0c21('0x37')]});}}function getEndUser(_0x5682c3,_0x4722c8,_0xac7950,_0x4d6e88){logger[_0x0c21('0xd')]('Searching\x20enduser\x20with\x20phone',_0xac7950);return request({'form':{'method':_0x0c21('0x30'),'input_type':_0x0c21('0x26'),'response_type':_0x0c21('0x26'),'rest_data':JSON[_0x0c21('0x27')]({'session':_0x4d6e88['id'],'module_name':_0x0c21('0x1d'),'query':util[_0x0c21('0x29')](_0x0c21('0x3b'),_0xac7950),'order_by':'','offset':'0','select_fields':['id',_0x0c21('0xe'),'phone_home'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x5ab7bf){if(_0x5ab7bf[_0x0c21('0x34')][_0x0c21('0x20')]){var _0x29e897=_[_0x0c21('0x35')](_0x5ab7bf[_0x0c21('0x34')],function(_0x33470d){return _0x33470d[_0x0c21('0x36')][_0x0c21('0x3c')][_0x0c21('0x37')]===_0xac7950;});if(_0x29e897){logger[_0x0c21('0xd')](_0x0c21('0x3d'));return BPromise['resolve']({'id':_0x29e897[_0x0c21('0x36')]['id']['value'],'name':_0x29e897[_0x0c21('0x36')][_0x0c21('0xe')][_0x0c21('0x37')],'phone':_0x29e897[_0x0c21('0x36')][_0x0c21('0x3c')][_0x0c21('0x37')]});}}else{logger[_0x0c21('0xd')](_0x0c21('0x3e'));return request({'form':{'method':_0x0c21('0x25'),'input_type':_0x0c21('0x26'),'response_type':'JSON','rest_data':JSON[_0x0c21('0x27')]({'session':_0x4d6e88['id'],'module_name':_0x0c21('0x1d'),'name_value_list':[{'name':_0x0c21('0x3f'),'value':_0x4722c8!=='<unknown>'?_0x4722c8:util[_0x0c21('0x29')](_0x0c21('0x40'),_0xac7950)},{'name':_0x0c21('0x3c'),'value':_0xac7950}]})}})[_0x0c21('0x41')](function(_0x29eff5){logger['info'](_0x0c21('0x42'));return BPromise[_0x0c21('0x38')]({'id':_0x29eff5['id'],'name':_0x29eff5['entry_list'][_0x0c21('0x3f')][_0x0c21('0x37')],'phone':_0x29eff5[_0x0c21('0x34')][_0x0c21('0x3c')]['value']});});}});}function request(_0x3b4a23){logger[_0x0c21('0x43')](_0x0c21('0x44'),JSON[_0x0c21('0x27')](_0x3b4a23));return rp(_[_0x0c21('0x45')](def,_0x3b4a23));}function getTags(_0x5e10ab,_0x15e337){var _0x4dcf4c=[];if(_0x5e10ab&&_0x5e10ab[_0x0c21('0x20')]>0x0){_0x4dcf4c=_[_0x0c21('0x46')](_0x5e10ab,_0x15e337);}return _0x4dcf4c;}function getCustomFields(_0x2ebf0e,_0x5740db){var _0x112da1=[];var _0x310c2e={'custom_fields':[]};if(_0x2ebf0e[_0x0c21('0x20')]>0x0){_['forEach'](_0x2ebf0e,function(_0x40f120){if(_0x40f120['type']===_0x0c21('0x47')&&_0x40f120[_0x0c21('0x48')]&&!_0x40f120[_0x0c21('0x49')]){_0x310c2e[_0x40f120[_0x0c21('0x48')]['toLowerCase']()]=_0x40f120[_0x0c21('0x4a')][_0x0c21('0x2b')]();}else if(_0x40f120[_0x0c21('0x4b')]===_0x0c21('0x47')&&_0x40f120[_0x0c21('0x24')]&&_0x40f120[_0x0c21('0x49')]){_0x310c2e['custom_fields'][_0x0c21('0x23')]({'id':_0x40f120['idField'],'value':_0x40f120[_0x0c21('0x4a')]['toString']()});}else if(_0x40f120['type']==='variable'&&_0x40f120[_0x0c21('0x22')]&&_0x40f120['idField']&&_0x40f120[_0x0c21('0x49')]){_0x5740db[_0x40f120['variableName']]&&_0x310c2e['custom_fields'][_0x0c21('0x23')]({'id':_0x40f120[_0x0c21('0x24')],'value':_0x5740db[_0x40f120['variableName']][_0x0c21('0x2b')]()});}else if(_0x40f120[_0x0c21('0x4b')]===_0x0c21('0x4c')&&_0x40f120['Variable']&&_0x40f120[_0x0c21('0x4d')][_0x0c21('0xe')]&&_0x40f120[_0x0c21('0x24')]&&_0x40f120[_0x0c21('0x49')]){_0x5740db[_0x40f120[_0x0c21('0x4d')][_0x0c21('0xe')][_0x0c21('0x4e')]()]&&_0x310c2e['custom_fields']['push']({'id':_0x40f120[_0x0c21('0x24')],'value':_0x5740db[_0x40f120[_0x0c21('0x4d')][_0x0c21('0xe')][_0x0c21('0x4e')]()][_0x0c21('0x2b')]()});}});}return _0x310c2e;}function getConnection(_0x56fb0b){return request({'method':'POST','form':{'method':'login','input_type':_0x0c21('0x26'),'response_type':'JSON','rest_data':JSON[_0x0c21('0x27')]({'user_auth':{'user_name':_0x56fb0b[_0x0c21('0x4f')],'password':_0x56fb0b[_0x0c21('0x50')],'encryption':_0x0c21('0x51')},'application':_0x0c21('0x52')})}})['then'](function(_0x1466a4){var _0x329cc3=_0x1466a4;if(_0x329cc3['id']){def[_0x0c21('0x53')]=_0x329cc3['id'];return BPromise['resolve'](_0x329cc3);}else{throw new Error(util['format'](_0x0c21('0x54'),_0x56fb0b['id']));}});}function setRelationship(_0x446794,_0xc3d0e8,_0x32b1ba,_0x510e10){return request({'form':{'method':_0x0c21('0x55'),'input_type':_0x0c21('0x26'),'response_type':_0x0c21('0x26'),'rest_data':JSON[_0x0c21('0x27')]({'session':_0x446794['id'],'module_name':_0x0c21('0x28'),'module_id':_0x32b1ba['id'],'link_field_name':_0x510e10,'related_ids':[_0xc3d0e8['id']],'name_value_list':[],'delete':0x0})}});}exports[_0x0c21('0x56')]=function(_0x1ecf27,_0x52e5e6,_0x57740b,_0x128517,_0x4190a4,_0x58f477){var _0x1116f4,_0x116467,_0x515f9f,_0x4e7c73;_0x58f477['remoteUri']=intUtil[_0x0c21('0x57')](_0x58f477['remoteUri']);_0x58f477[_0x0c21('0x58')]=intUtil['stripTrailingSlash'](_0x58f477[_0x0c21('0x58')]);def[_0x0c21('0x59')]=util['format'](_0x0c21('0x5a'),_0x58f477[_0x0c21('0x5b')]);if(_0x4190a4&&_0x4190a4['monitor_format']){logger['info'](_0x0c21('0x5c'),_0x0c21('0x5d'));_0x52e5e6[_0x0c21('0x5e')]=util[_0x0c21('0x29')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x58f477[_0x0c21('0x58')],_0x52e5e6[_0x0c21('0x5f')],md5(_0x52e5e6[_0x0c21('0x5f')]));}else{_0x52e5e6['recordingURL']='';}return getConnection(_0x58f477)[_0x0c21('0x41')](function(_0x471e27){_0x4e7c73=_0x471e27;return getUser(_0x58f477,_0x128517['name'],_0x4e7c73);})[_0x0c21('0x41')](function(_0x2faf47){_0x1116f4=_0x2faf47;logger['info'](_0x0c21('0x60'),_0x1116f4['id']);return getEndUser(_0x58f477,_0x52e5e6[_0x0c21('0x61')],_0x52e5e6[_0x0c21('0x62')],_0x4e7c73);})[_0x0c21('0x41')](function(_0x2ad288){_0x116467=_0x2ad288;logger[_0x0c21('0xd')](_0x0c21('0x63'),_0x116467['id']);return getTicket(_0x58f477,_0x1116f4,_0x116467,_0x57740b,_0x52e5e6,_0x57740b[_0x0c21('0x64')],_0x4e7c73,'Inbound');})['then'](function(_0x186f44){_0x515f9f=_0x186f44;logger[_0x0c21('0xd')]('Ticket\x20created!');logger[_0x0c21('0xd')](_0x0c21('0x65'),_0x515f9f['id']);return setRelationship(_0x4e7c73,_0x1116f4,_0x515f9f,_0x0c21('0x66'));})[_0x0c21('0x41')](function(){return setRelationship(_0x4e7c73,_0x116467,_0x515f9f,_0x0c21('0x67'));})['then'](function(){return getServerInfo(_0x4e7c73);})[_0x0c21('0x41')](function(_0x59aa27){var _0x166685=parseInt(_0x59aa27[_0x0c21('0x68')][_0x0c21('0x69')](0x0));var _0x3f3bda=util[_0x0c21('0x29')](_0x0c21('0x6a'),_0x58f477['remoteUri'],_0x515f9f['id']);if(_0x166685>0x6){_0x3f3bda=util[_0x0c21('0x29')](_0x0c21('0x6b'),_0x58f477[_0x0c21('0x5b')],_0x515f9f['id']);}logger[_0x0c21('0xd')](_0x0c21('0x5c'),_0x0c21('0x6c'));emit(util[_0x0c21('0x29')]('user:%s',_0x128517['name']),'trigger:browser:url',{'uri':_0x3f3bda});})[_0x0c21('0x6d')](function(_0x27aee7){logger[_0x0c21('0x6e')](_0x0c21('0x5c'),JSON[_0x0c21('0x27')](_0x27aee7));});};exports[_0x0c21('0x6f')]=function(_0x169115,_0x2b74fd,_0x388d8e,_0xe9833a,_0x4626ab,_0x4e5d54,_0x1e2c04){var _0x316e54,_0x4b6248,_0x50db9f,_0x2b8085;_0x4e5d54[_0x0c21('0x5b')]=intUtil[_0x0c21('0x57')](_0x4e5d54[_0x0c21('0x5b')]);_0x4e5d54[_0x0c21('0x58')]=intUtil['stripTrailingSlash'](_0x4e5d54[_0x0c21('0x58')]);def[_0x0c21('0x59')]=util[_0x0c21('0x29')](_0x0c21('0x5a'),_0x4e5d54['remoteUri']);if(_0x1e2c04&&_0x1e2c04[_0x0c21('0x70')]&&_0x1e2c04['recordingFormat']!==_0x0c21('0x71')){logger[_0x0c21('0xd')](_0x0c21('0x72'),_0x0c21('0x5d'));_0x2b74fd[_0x0c21('0x5e')]=util['format'](_0x0c21('0x73'),_0x4e5d54['serverUrl'],_0x2b74fd['uniqueid'],md5(_0x2b74fd['uniqueid']));}return getConnection(_0x4e5d54)[_0x0c21('0x41')](function(_0x36c8a2){_0x2b8085=_0x36c8a2;return getUser(_0x4e5d54,_0xe9833a[_0x0c21('0xe')],_0x2b8085);})[_0x0c21('0x41')](function(_0x2c6319){_0x316e54=_0x2c6319;logger[_0x0c21('0xd')](_0x0c21('0x60'),_0x316e54['id']);return getEndUser(_0x4e5d54,_0x2b74fd[_0x0c21('0x74')],_0x2b74fd['destcalleridnum'],_0x2b8085);})[_0x0c21('0x41')](function(_0x3ee36d){_0x4b6248=_0x3ee36d;logger[_0x0c21('0xd')](_0x0c21('0x63'),_0x4b6248['id']);return getTicket(_0x4e5d54,_0x316e54,_0x4b6248,_0x388d8e,_0x2b74fd,_0x388d8e[_0x0c21('0x64')],_0x2b8085,_0x0c21('0x75'));})[_0x0c21('0x41')](function(_0x10b9cd){_0x50db9f=_0x10b9cd;logger[_0x0c21('0xd')]('Ticket\x20created!');logger[_0x0c21('0xd')](_0x0c21('0x65'),_0x50db9f['id']);return setRelationship(_0x2b8085,_0x316e54,_0x50db9f,'users');})['then'](function(){return setRelationship(_0x2b8085,_0x4b6248,_0x50db9f,_0x0c21('0x67'));})[_0x0c21('0x41')](function(){return getServerInfo(_0x2b8085);})[_0x0c21('0x41')](function(_0x457b18){var _0x43c49e=parseInt(_0x457b18[_0x0c21('0x68')][_0x0c21('0x69')](0x0));var _0x3cbefc=util[_0x0c21('0x29')]('%s/index.php?action=ajaxui#ajaxUILoc=index.php%3Fmodule%3DCalls%26action%3DEditView%26record%3D%s',_0x4e5d54[_0x0c21('0x5b')],_0x50db9f['id']);if(_0x43c49e>0x6){_0x3cbefc=util[_0x0c21('0x29')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x4e5d54[_0x0c21('0x5b')],_0x50db9f['id']);}logger[_0x0c21('0xd')]('[OUTBOUND]',_0x0c21('0x6c'));emit(util[_0x0c21('0x29')](_0x0c21('0x76'),_0xe9833a[_0x0c21('0xe')]),_0x0c21('0x77'),{'uri':_0x3cbefc});})[_0x0c21('0x6d')](function(_0x239c8b){logger[_0x0c21('0x6e')](_0x0c21('0x72'),JSON[_0x0c21('0x27')](_0x239c8b));});};exports[_0x0c21('0x78')]=function(_0x4451cc,_0x2c8723,_0x569bba,_0x387598,_0x5ad363,_0x15a256){var _0x378596,_0x2acd6a,_0x4c480d,_0x2ccd4a;_0x15a256[_0x0c21('0x5b')]=intUtil[_0x0c21('0x57')](_0x15a256[_0x0c21('0x5b')]);_0x15a256[_0x0c21('0x58')]=intUtil[_0x0c21('0x57')](_0x15a256[_0x0c21('0x58')]);def['uri']=util['format'](_0x0c21('0x5a'),_0x15a256[_0x0c21('0x5b')]);if(_0x5ad363&&_0x5ad363[_0x0c21('0x79')]){logger[_0x0c21('0xd')]('['+_0x2c8723[_0x0c21('0x7a')][_0x0c21('0x7b')]()+']','Recording\x20is\x20enabled!');_0x2c8723[_0x0c21('0x5e')]=util[_0x0c21('0x29')](_0x0c21('0x73'),_0x15a256[_0x0c21('0x58')],_0x2c8723[_0x0c21('0x5f')],md5(_0x2c8723[_0x0c21('0x5f')]));}else{_0x2c8723[_0x0c21('0x5e')]='';}return getConnection(_0x15a256)[_0x0c21('0x41')](function(_0x26311f){_0x2ccd4a=_0x26311f;if(!_[_0x0c21('0x2e')](_0x387598)){return getUser(_0x15a256,_0x387598[_0x0c21('0xe')],_0x2ccd4a);}else{return getUser(_0x15a256,null,_0x2ccd4a);}})['then'](function(_0x88a9dd){_0x378596=_0x88a9dd;logger['info'](_0x0c21('0x60'),_0x378596['id']);return getEndUser(_0x15a256,_0x2c8723[_0x0c21('0x61')],_0x2c8723[_0x0c21('0x62')],_0x2ccd4a);})[_0x0c21('0x41')](function(_0x51bfdc){_0x2acd6a=_0x51bfdc;logger[_0x0c21('0xd')]('The\x20Enduser\x20ID\x20is:',_0x2acd6a['id']);return getTicket(_0x15a256,_0x378596,_0x2acd6a,_0x569bba,_0x2c8723,_0x569bba[_0x0c21('0x64')],_0x2ccd4a,_0x0c21('0x7c'));})[_0x0c21('0x41')](function(_0x31b55c){_0x4c480d=_0x31b55c;logger[_0x0c21('0xd')](_0x0c21('0x7d'));logger['info'](_0x0c21('0x65'),_0x4c480d['id']);return setRelationship(_0x2ccd4a,_0x378596,_0x4c480d,_0x0c21('0x66'));})[_0x0c21('0x41')](function(){return setRelationship(_0x2ccd4a,_0x2acd6a,_0x4c480d,_0x0c21('0x67'));})['then'](function(){return getServerInfo(_0x2ccd4a);})[_0x0c21('0x6d')](function(_0x38abac){logger['error']('['+_0x2c8723[_0x0c21('0x7a')]['toUpperCase']()+']',JSON[_0x0c21('0x27')](_0x38abac));});};
\ No newline at end of file
+var _0x1b4a=['Caller\x20-\x20%s','Enduser\x20created.','[HTTP]','merge','map','type','nameField','customField','toLowerCase','string','custom_fields','content','variable','customVariable','Variable','login','username','password','PLAIN','sessionID','Account\x20%d\x20is\x20not\x20valid','set_relationship','queue','remoteUri','serverUrl','stripTrailingSlash','uri','monitor_format','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','recordingURL','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','Fields','Inbound','Ticket\x20created!','contacts','version','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','trigger:browser:url','catch','error','outbound','%s/service/v4_1/rest.php','recordingFormat','none','[OUTBOUND]','destcalleridname','destcalleridnum','Outbound','The\x20Ticket\x20ID\x20is:','users','%s/#bwc/index.php?module=Calls&action=EditView&record=%s','lastevent','toUpperCase','Recording\x20is\x20enabled!','bluebird','md5','util','ioredis','./util','../../../../config/environment','sugarcrm','redis','localhost','socket.io-emitter','POST','info','Creating\x20new\x20ticket...','name','getString','Subjects','assigned_user_id','created_by','description','date_start','slice','replace','duration_hours','parent_id','parent_type','parent_name','direction','length','forEach','variableName','push','idField','set_entry','JSON','stringify','Calls','format','apiKey','toString','base64','get_server_info','isNil','Getting\x20agent\x20with\x20name','Employees','entry_list','find','name_value_list','user_name','value','Agent\x20found!','resolve','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','user_id','Agent\x20not\x20available,\x20using\x20the\x20admin\x20account!','contacts.phone_home\x20=\x20\x22%s\x22','phone_home','then','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','first_name','<unknown>'];(function(_0x5d74c6,_0x1b92df){var _0x20bd4a=function(_0x32b6f2){while(--_0x32b6f2){_0x5d74c6['push'](_0x5d74c6['shift']());}};_0x20bd4a(++_0x1b92df);}(_0x1b4a,0x1ab));var _0xa1b4=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x1b4a[_0x14add3];return _0x4a174f;};'use strict';var _=require('lodash');var rp=require('request-promise');var BPromise=require(_0xa1b4('0x0'));var md5=require(_0xa1b4('0x1'));var util=require(_0xa1b4('0x2'));var Redis=require(_0xa1b4('0x3'));var intUtil=require(_0xa1b4('0x4'));var config=require(_0xa1b4('0x5'));var logger=require('../../../../config/logger')(_0xa1b4('0x6'));config[_0xa1b4('0x7')]=_['defaults'](config[_0xa1b4('0x7')],{'host':_0xa1b4('0x8'),'port':0x18eb});var io=require(_0xa1b4('0x9'))(new Redis(config[_0xa1b4('0x7')]));var def={'method':_0xa1b4('0xa'),'json':!![]};function emit(_0x38fcbe,_0x56e0b3,_0xbbdc7d){io['to'](_0x38fcbe)['emit'](_0x56e0b3,_0xbbdc7d);}function getTicket(_0x25e144,_0x228ec7,_0x4cfe3a,_0x516f99,_0x361eb5,_0x4d636c,_0x471b0e,_0x2105de){logger[_0xa1b4('0xb')](_0xa1b4('0xc'));var _0x34dc01=new Date();var _0x2bf9bc=[{'name':_0xa1b4('0xd'),'value':intUtil[_0xa1b4('0xe')](_0x516f99[_0xa1b4('0xf')],_0x361eb5,'\x20')},{'name':_0xa1b4('0x10'),'value':_0x228ec7['id']},{'name':_0xa1b4('0x11'),'value':_0x228ec7['id']},{'name':_0xa1b4('0x12'),'value':intUtil[_0xa1b4('0xe')](_0x516f99['Descriptions'],_0x361eb5,'\x0a')},{'name':_0xa1b4('0x13'),'value':_0x34dc01['toISOString']()[_0xa1b4('0x14')](0x0,0x13)[_0xa1b4('0x15')]('T','\x20')},{'name':_0xa1b4('0x16'),'value':'0'},{'name':'duration_minutes','value':'15'},{'name':_0xa1b4('0x17'),'value':_0x4cfe3a['id']},{'name':_0xa1b4('0x18'),'value':'Contacts'},{'name':_0xa1b4('0x19'),'value':_0x4cfe3a[_0xa1b4('0xd')]},{'name':_0xa1b4('0x1a'),'value':_0x2105de}];if(_0x4d636c[_0xa1b4('0x1b')]){_[_0xa1b4('0x1c')](_0x4d636c,function(_0x2be919){if(_0x361eb5[_0x2be919[_0xa1b4('0x1d')]]){_0x2bf9bc[_0xa1b4('0x1e')]({'name':_0x2be919[_0xa1b4('0x1f')],'value':_0x361eb5[_0x2be919['variableName']]});}});}return request({'form':{'method':_0xa1b4('0x20'),'input_type':_0xa1b4('0x21'),'response_type':_0xa1b4('0x21'),'rest_data':JSON[_0xa1b4('0x22')]({'session':_0x471b0e['id'],'module_name':_0xa1b4('0x23'),'name_value_list':_0x2bf9bc})}});}function getAuth(_0x435169){return util[_0xa1b4('0x24')]('Basic\x20%s',new Buffer(_0x435169[_0xa1b4('0x25')]+':X')[_0xa1b4('0x26')](_0xa1b4('0x27')));}function getServerInfo(_0x493277){return request({'form':{'method':_0xa1b4('0x28'),'input_type':_0xa1b4('0x21'),'response_type':_0xa1b4('0x21'),'rest_data':JSON[_0xa1b4('0x22')]({'session':_0x493277['id']})}});}function getUser(_0x2e3ee0,_0x6890c9,_0x578c67){if(!_[_0xa1b4('0x29')](_0x6890c9)){logger[_0xa1b4('0xb')](_0xa1b4('0x2a'),_0x6890c9);return request({'form':{'method':'get_entry_list','input_type':_0xa1b4('0x21'),'response_type':_0xa1b4('0x21'),'rest_data':JSON[_0xa1b4('0x22')]({'session':_0x578c67['id'],'module_name':_0xa1b4('0x2b'),'query':util[_0xa1b4('0x24')]('INSTR\x20(\x20users.user_name,\x20\x22%s\x22)\x20>\x200',_0x6890c9),'order_by':'','offset':'0','select_fields':['id','name','user_name'],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})['then'](function(_0x572854){if(_0x572854[_0xa1b4('0x2c')]['length']){var _0x1eeb53=_[_0xa1b4('0x2d')](_0x572854[_0xa1b4('0x2c')],function(_0x444cfc){return _0x444cfc[_0xa1b4('0x2e')][_0xa1b4('0x2f')][_0xa1b4('0x30')]===_0x6890c9;});if(_0x1eeb53){logger[_0xa1b4('0xb')](_0xa1b4('0x31'));return BPromise[_0xa1b4('0x32')]({'id':_0x1eeb53[_0xa1b4('0x2e')]['id'][_0xa1b4('0x30')],'name':_0x1eeb53[_0xa1b4('0x2e')][_0xa1b4('0xd')]['value']});}}logger['info'](_0xa1b4('0x33'));return BPromise[_0xa1b4('0x32')]({'id':_0x578c67[_0xa1b4('0x2e')][_0xa1b4('0x34')][_0xa1b4('0x30')],'name':_0x578c67[_0xa1b4('0x2e')][_0xa1b4('0x2f')][_0xa1b4('0x30')]});});}else{logger[_0xa1b4('0xb')](_0xa1b4('0x35'));return BPromise[_0xa1b4('0x32')]({'id':_0x578c67[_0xa1b4('0x2e')][_0xa1b4('0x34')][_0xa1b4('0x30')],'name':_0x578c67[_0xa1b4('0x2e')][_0xa1b4('0x2f')][_0xa1b4('0x30')]});}}function getEndUser(_0x22ccb0,_0x3e2d6c,_0x13a62a,_0x5d3a64){logger[_0xa1b4('0xb')]('Searching\x20enduser\x20with\x20phone',_0x13a62a);return request({'form':{'method':'get_entry_list','input_type':_0xa1b4('0x21'),'response_type':_0xa1b4('0x21'),'rest_data':JSON[_0xa1b4('0x22')]({'session':_0x5d3a64['id'],'module_name':'Contacts','query':util['format'](_0xa1b4('0x36'),_0x13a62a),'order_by':'','offset':'0','select_fields':['id',_0xa1b4('0xd'),_0xa1b4('0x37')],'link_name_to_fields_array':[],'max_results':-0x1,'deleted':'0'})}})[_0xa1b4('0x38')](function(_0x2ccf2b){if(_0x2ccf2b[_0xa1b4('0x2c')][_0xa1b4('0x1b')]){var _0x1dbd7e=_[_0xa1b4('0x2d')](_0x2ccf2b[_0xa1b4('0x2c')],function(_0x251664){return _0x251664[_0xa1b4('0x2e')]['phone_home'][_0xa1b4('0x30')]===_0x13a62a;});if(_0x1dbd7e){logger[_0xa1b4('0xb')](_0xa1b4('0x39'));return BPromise['resolve']({'id':_0x1dbd7e[_0xa1b4('0x2e')]['id'][_0xa1b4('0x30')],'name':_0x1dbd7e[_0xa1b4('0x2e')]['name'][_0xa1b4('0x30')],'phone':_0x1dbd7e['name_value_list'][_0xa1b4('0x37')][_0xa1b4('0x30')]});}}else{logger[_0xa1b4('0xb')](_0xa1b4('0x3a'));return request({'form':{'method':_0xa1b4('0x20'),'input_type':_0xa1b4('0x21'),'response_type':_0xa1b4('0x21'),'rest_data':JSON['stringify']({'session':_0x5d3a64['id'],'module_name':'Contacts','name_value_list':[{'name':_0xa1b4('0x3b'),'value':_0x3e2d6c!==_0xa1b4('0x3c')?_0x3e2d6c:util[_0xa1b4('0x24')](_0xa1b4('0x3d'),_0x13a62a)},{'name':_0xa1b4('0x37'),'value':_0x13a62a}]})}})['then'](function(_0x58e310){logger[_0xa1b4('0xb')](_0xa1b4('0x3e'));return BPromise[_0xa1b4('0x32')]({'id':_0x58e310['id'],'name':_0x58e310[_0xa1b4('0x2c')]['first_name']['value'],'phone':_0x58e310['entry_list'][_0xa1b4('0x37')][_0xa1b4('0x30')]});});}});}function request(_0x5ea69e){logger['debug'](_0xa1b4('0x3f'),JSON[_0xa1b4('0x22')](_0x5ea69e));return rp(_[_0xa1b4('0x40')](def,_0x5ea69e));}function getTags(_0xc2df11,_0xb8181d){var _0x24a024=[];if(_0xc2df11&&_0xc2df11['length']>0x0){_0x24a024=_[_0xa1b4('0x41')](_0xc2df11,_0xb8181d);}return _0x24a024;}function getCustomFields(_0x566200,_0x4332a4){var _0x32fdc5=[];var _0x36e5e4={'custom_fields':[]};if(_0x566200[_0xa1b4('0x1b')]>0x0){_[_0xa1b4('0x1c')](_0x566200,function(_0x1f7001){if(_0x1f7001[_0xa1b4('0x42')]==='string'&&_0x1f7001[_0xa1b4('0x43')]&&!_0x1f7001[_0xa1b4('0x44')]){_0x36e5e4[_0x1f7001[_0xa1b4('0x43')][_0xa1b4('0x45')]()]=_0x1f7001['content']['toString']();}else if(_0x1f7001[_0xa1b4('0x42')]===_0xa1b4('0x46')&&_0x1f7001[_0xa1b4('0x1f')]&&_0x1f7001[_0xa1b4('0x44')]){_0x36e5e4[_0xa1b4('0x47')][_0xa1b4('0x1e')]({'id':_0x1f7001['idField'],'value':_0x1f7001[_0xa1b4('0x48')][_0xa1b4('0x26')]()});}else if(_0x1f7001[_0xa1b4('0x42')]===_0xa1b4('0x49')&&_0x1f7001['variableName']&&_0x1f7001[_0xa1b4('0x1f')]&&_0x1f7001[_0xa1b4('0x44')]){_0x4332a4[_0x1f7001[_0xa1b4('0x1d')]]&&_0x36e5e4[_0xa1b4('0x47')]['push']({'id':_0x1f7001[_0xa1b4('0x1f')],'value':_0x4332a4[_0x1f7001[_0xa1b4('0x1d')]][_0xa1b4('0x26')]()});}else if(_0x1f7001[_0xa1b4('0x42')]===_0xa1b4('0x4a')&&_0x1f7001['Variable']&&_0x1f7001[_0xa1b4('0x4b')][_0xa1b4('0xd')]&&_0x1f7001[_0xa1b4('0x1f')]&&_0x1f7001[_0xa1b4('0x44')]){_0x4332a4[_0x1f7001['Variable'][_0xa1b4('0xd')][_0xa1b4('0x45')]()]&&_0x36e5e4[_0xa1b4('0x47')][_0xa1b4('0x1e')]({'id':_0x1f7001['idField'],'value':_0x4332a4[_0x1f7001[_0xa1b4('0x4b')]['name'][_0xa1b4('0x45')]()][_0xa1b4('0x26')]()});}});}return _0x36e5e4;}function getConnection(_0x272c93){return request({'method':_0xa1b4('0xa'),'form':{'method':_0xa1b4('0x4c'),'input_type':'JSON','response_type':_0xa1b4('0x21'),'rest_data':JSON[_0xa1b4('0x22')]({'user_auth':{'user_name':_0x272c93[_0xa1b4('0x4d')],'password':_0x272c93[_0xa1b4('0x4e')],'encryption':_0xa1b4('0x4f')},'application':'xCALLY\x20Motion\x20integration'})}})[_0xa1b4('0x38')](function(_0x2576e8){var _0x18fca9=_0x2576e8;if(_0x18fca9['id']){def[_0xa1b4('0x50')]=_0x18fca9['id'];return BPromise[_0xa1b4('0x32')](_0x18fca9);}else{throw new Error(util[_0xa1b4('0x24')](_0xa1b4('0x51'),_0x272c93['id']));}});}function setRelationship(_0x28bfe6,_0x11e0bf,_0x39a009,_0x2eb44a){return request({'form':{'method':_0xa1b4('0x52'),'input_type':'JSON','response_type':_0xa1b4('0x21'),'rest_data':JSON[_0xa1b4('0x22')]({'session':_0x28bfe6['id'],'module_name':_0xa1b4('0x23'),'module_id':_0x39a009['id'],'link_field_name':_0x2eb44a,'related_ids':[_0x11e0bf['id']],'name_value_list':[],'delete':0x0})}});}exports[_0xa1b4('0x53')]=function(_0x1c2a14,_0x56fad3,_0x56d02,_0x47b8d3,_0x78f723,_0x84be41){var _0x571568,_0xa7debb,_0x3c1d43,_0xdae815;_0x84be41[_0xa1b4('0x54')]=intUtil['stripTrailingSlash'](_0x84be41[_0xa1b4('0x54')]);_0x84be41[_0xa1b4('0x55')]=intUtil[_0xa1b4('0x56')](_0x84be41[_0xa1b4('0x55')]);def[_0xa1b4('0x57')]=util[_0xa1b4('0x24')]('%s/service/v4_1/rest.php',_0x84be41[_0xa1b4('0x54')]);if(_0x78f723&&_0x78f723[_0xa1b4('0x58')]){logger[_0xa1b4('0xb')]('[QUEUE]','Recording\x20is\x20enabled!');_0x56fad3['recordingURL']=util[_0xa1b4('0x24')](_0xa1b4('0x59'),_0x84be41[_0xa1b4('0x55')],_0x56fad3[_0xa1b4('0x5a')],md5(_0x56fad3[_0xa1b4('0x5a')]));}else{_0x56fad3[_0xa1b4('0x5b')]='';}return getConnection(_0x84be41)[_0xa1b4('0x38')](function(_0x105f05){_0xdae815=_0x105f05;return getUser(_0x84be41,_0x47b8d3['name'],_0xdae815);})['then'](function(_0x51ae2c){_0x571568=_0x51ae2c;logger[_0xa1b4('0xb')](_0xa1b4('0x5c'),_0x571568['id']);return getEndUser(_0x84be41,_0x56fad3[_0xa1b4('0x5d')],_0x56fad3['calleridnum'],_0xdae815);})['then'](function(_0x42f9fd){_0xa7debb=_0x42f9fd;logger[_0xa1b4('0xb')](_0xa1b4('0x5e'),_0xa7debb['id']);return getTicket(_0x84be41,_0x571568,_0xa7debb,_0x56d02,_0x56fad3,_0x56d02[_0xa1b4('0x5f')],_0xdae815,_0xa1b4('0x60'));})[_0xa1b4('0x38')](function(_0x1e1afe){_0x3c1d43=_0x1e1afe;logger[_0xa1b4('0xb')](_0xa1b4('0x61'));logger[_0xa1b4('0xb')]('The\x20Ticket\x20ID\x20is:',_0x3c1d43['id']);return setRelationship(_0xdae815,_0x571568,_0x3c1d43,'users');})[_0xa1b4('0x38')](function(){return setRelationship(_0xdae815,_0xa7debb,_0x3c1d43,_0xa1b4('0x62'));})['then'](function(){return getServerInfo(_0xdae815);})[_0xa1b4('0x38')](function(_0x149721){var _0x23e6b4=parseInt(_0x149721[_0xa1b4('0x63')][_0xa1b4('0x64')](0x0));var _0x56ed65=util['format'](_0xa1b4('0x65'),_0x84be41[_0xa1b4('0x54')],_0x3c1d43['id']);if(_0x23e6b4>0x6){_0x56ed65=util[_0xa1b4('0x24')]('%s/#bwc/index.php?module=Calls&action=EditView&record=%s',_0x84be41['remoteUri'],_0x3c1d43['id']);}logger['info'](_0xa1b4('0x66'),_0xa1b4('0x67'));emit(util[_0xa1b4('0x24')](_0xa1b4('0x68'),_0x47b8d3[_0xa1b4('0xd')]),_0xa1b4('0x69'),{'uri':_0x56ed65});})[_0xa1b4('0x6a')](function(_0x55deea){logger[_0xa1b4('0x6b')](_0xa1b4('0x66'),JSON['stringify'](_0x55deea));});};exports[_0xa1b4('0x6c')]=function(_0x2488bc,_0x414b95,_0x58311b,_0x2735e6,_0x5603f8,_0x46cd8f,_0x3e76f8){var _0x4418ad,_0x517593,_0x38a7dd,_0x112164;_0x46cd8f[_0xa1b4('0x54')]=intUtil[_0xa1b4('0x56')](_0x46cd8f['remoteUri']);_0x46cd8f[_0xa1b4('0x55')]=intUtil[_0xa1b4('0x56')](_0x46cd8f[_0xa1b4('0x55')]);def[_0xa1b4('0x57')]=util['format'](_0xa1b4('0x6d'),_0x46cd8f['remoteUri']);if(_0x3e76f8&&_0x3e76f8[_0xa1b4('0x6e')]&&_0x3e76f8['recordingFormat']!==_0xa1b4('0x6f')){logger[_0xa1b4('0xb')](_0xa1b4('0x70'),'Recording\x20is\x20enabled!');_0x414b95[_0xa1b4('0x5b')]=util[_0xa1b4('0x24')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x46cd8f[_0xa1b4('0x55')],_0x414b95[_0xa1b4('0x5a')],md5(_0x414b95[_0xa1b4('0x5a')]));}return getConnection(_0x46cd8f)[_0xa1b4('0x38')](function(_0xff7e60){_0x112164=_0xff7e60;return getUser(_0x46cd8f,_0x2735e6['name'],_0x112164);})[_0xa1b4('0x38')](function(_0x3c2c52){_0x4418ad=_0x3c2c52;logger[_0xa1b4('0xb')](_0xa1b4('0x5c'),_0x4418ad['id']);return getEndUser(_0x46cd8f,_0x414b95[_0xa1b4('0x71')],_0x414b95[_0xa1b4('0x72')],_0x112164);})['then'](function(_0x1744b4){_0x517593=_0x1744b4;logger[_0xa1b4('0xb')](_0xa1b4('0x5e'),_0x517593['id']);return getTicket(_0x46cd8f,_0x4418ad,_0x517593,_0x58311b,_0x414b95,_0x58311b[_0xa1b4('0x5f')],_0x112164,_0xa1b4('0x73'));})[_0xa1b4('0x38')](function(_0x109953){_0x38a7dd=_0x109953;logger[_0xa1b4('0xb')](_0xa1b4('0x61'));logger[_0xa1b4('0xb')](_0xa1b4('0x74'),_0x38a7dd['id']);return setRelationship(_0x112164,_0x4418ad,_0x38a7dd,_0xa1b4('0x75'));})[_0xa1b4('0x38')](function(){return setRelationship(_0x112164,_0x517593,_0x38a7dd,_0xa1b4('0x62'));})[_0xa1b4('0x38')](function(){return getServerInfo(_0x112164);})[_0xa1b4('0x38')](function(_0x53a080){var _0x5c5ff7=parseInt(_0x53a080[_0xa1b4('0x63')][_0xa1b4('0x64')](0x0));var _0x143a1d=util[_0xa1b4('0x24')](_0xa1b4('0x65'),_0x46cd8f['remoteUri'],_0x38a7dd['id']);if(_0x5c5ff7>0x6){_0x143a1d=util[_0xa1b4('0x24')](_0xa1b4('0x76'),_0x46cd8f[_0xa1b4('0x54')],_0x38a7dd['id']);}logger[_0xa1b4('0xb')](_0xa1b4('0x70'),_0xa1b4('0x67'));emit(util['format']('user:%s',_0x2735e6[_0xa1b4('0xd')]),'trigger:browser:url',{'uri':_0x143a1d});})['catch'](function(_0x8dd3cd){logger['error']('[OUTBOUND]',JSON[_0xa1b4('0x22')](_0x8dd3cd));});};exports['unmanaged']=function(_0x5e3f11,_0x47af09,_0x5a9934,_0xc15857,_0x401019,_0x2d928d){var _0x3ea5c5,_0x2efed9,_0x1f488b,_0x52080e;_0x2d928d[_0xa1b4('0x54')]=intUtil[_0xa1b4('0x56')](_0x2d928d[_0xa1b4('0x54')]);_0x2d928d[_0xa1b4('0x55')]=intUtil[_0xa1b4('0x56')](_0x2d928d['serverUrl']);def[_0xa1b4('0x57')]=util[_0xa1b4('0x24')]('%s/service/v4_1/rest.php',_0x2d928d[_0xa1b4('0x54')]);if(_0x401019&&_0x401019[_0xa1b4('0x58')]){logger[_0xa1b4('0xb')]('['+_0x47af09[_0xa1b4('0x77')][_0xa1b4('0x78')]()+']',_0xa1b4('0x79'));_0x47af09[_0xa1b4('0x5b')]=util[_0xa1b4('0x24')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x2d928d[_0xa1b4('0x55')],_0x47af09[_0xa1b4('0x5a')],md5(_0x47af09['uniqueid']));}else{_0x47af09[_0xa1b4('0x5b')]='';}return getConnection(_0x2d928d)[_0xa1b4('0x38')](function(_0x3fcabf){_0x52080e=_0x3fcabf;if(!_['isNil'](_0xc15857)){return getUser(_0x2d928d,_0xc15857[_0xa1b4('0xd')],_0x52080e);}else{return getUser(_0x2d928d,null,_0x52080e);}})[_0xa1b4('0x38')](function(_0x3b1641){_0x3ea5c5=_0x3b1641;logger[_0xa1b4('0xb')](_0xa1b4('0x5c'),_0x3ea5c5['id']);return getEndUser(_0x2d928d,_0x47af09[_0xa1b4('0x5d')],_0x47af09['calleridnum'],_0x52080e);})[_0xa1b4('0x38')](function(_0x54ca0f){_0x2efed9=_0x54ca0f;logger['info'](_0xa1b4('0x5e'),_0x2efed9['id']);return getTicket(_0x2d928d,_0x3ea5c5,_0x2efed9,_0x5a9934,_0x47af09,_0x5a9934[_0xa1b4('0x5f')],_0x52080e,_0xa1b4('0x60'));})['then'](function(_0x13e573){_0x1f488b=_0x13e573;logger[_0xa1b4('0xb')](_0xa1b4('0x61'));logger[_0xa1b4('0xb')](_0xa1b4('0x74'),_0x1f488b['id']);return setRelationship(_0x52080e,_0x3ea5c5,_0x1f488b,_0xa1b4('0x75'));})[_0xa1b4('0x38')](function(){return setRelationship(_0x52080e,_0x2efed9,_0x1f488b,_0xa1b4('0x62'));})[_0xa1b4('0x38')](function(){return getServerInfo(_0x52080e);})['catch'](function(_0x281f85){logger[_0xa1b4('0x6b')]('['+_0x47af09[_0xa1b4('0x77')][_0xa1b4('0x78')]()+']',JSON['stringify'](_0x281f85));});};
\ No newline at end of file
index 8cfc8e0..a75da9a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ad8=['format','%s:\x20%s','keyContent','stripTrailingSlash','slice','substring','lastIndexOf','test','util','sortBy','length','push','content','type','variable','variableName','toString','customVariable','Variable','name','toLowerCase','keyValue','keyType','key'];(function(_0xdae953,_0x5c6c70){var _0x9d358e=function(_0x18cc95){while(--_0x18cc95){_0xdae953['push'](_0xdae953['shift']());}};_0x9d358e(++_0x5c6c70);}(_0x7ad8,0x170));var _0x87ad=function(_0x2e3dfc,_0x454d6c){_0x2e3dfc=_0x2e3dfc-0x0;var _0x4b1245=_0x7ad8[_0x2e3dfc];return _0x4b1245;};'use strict';var _=require('lodash');var util=require(_0x87ad('0x0'));exports['getString']=function(_0x3571ff,_0x5ef61f,_0xaf84e6){var _0x3ee677=[];if(_0x3571ff['length']>0x0){var _0x6b7711=_[_0x87ad('0x1')](_0x3571ff,['id']);for(var _0x1b84b0=0x0;_0x1b84b0<_0x6b7711[_0x87ad('0x2')];_0x1b84b0++){var _0x1d2ec8=_0x6b7711[_0x1b84b0];if(_0x1d2ec8['type']==='string'){_0x3ee677[_0x87ad('0x3')](_0x1d2ec8[_0x87ad('0x4')]);}else if(_0x1d2ec8[_0x87ad('0x5')]===_0x87ad('0x6')&&_0x1d2ec8['variableName']){_0x5ef61f[_0x1d2ec8[_0x87ad('0x7')]]&&_0x3ee677[_0x87ad('0x3')](_0x5ef61f[_0x1d2ec8[_0x87ad('0x7')]][_0x87ad('0x8')]());}else if(_0x1d2ec8[_0x87ad('0x5')]===_0x87ad('0x9')&&_0x1d2ec8[_0x87ad('0xa')]&&_0x1d2ec8[_0x87ad('0xa')][_0x87ad('0xb')]){_0x5ef61f[_0x1d2ec8[_0x87ad('0xa')][_0x87ad('0xb')][_0x87ad('0xc')]()]&&_0x3ee677[_0x87ad('0x3')](_0x5ef61f[_0x1d2ec8[_0x87ad('0xa')][_0x87ad('0xb')][_0x87ad('0xc')]()][_0x87ad('0x8')]());}else if(_0x1d2ec8['type']===_0x87ad('0xd')){if(_0x1d2ec8[_0x87ad('0xe')]==='string'&&_0x1d2ec8[_0x87ad('0xf')]){_0x3ee677[_0x87ad('0x3')](util[_0x87ad('0x10')](_0x87ad('0x11'),_0x1d2ec8['key'],_0x1d2ec8[_0x87ad('0x12')]));}else if(_0x1d2ec8[_0x87ad('0xe')]===_0x87ad('0x6')&&_0x1d2ec8[_0x87ad('0x7')]&&_0x1d2ec8['key']){_0x5ef61f[_0x1d2ec8[_0x87ad('0x7')]]&&_0x3ee677[_0x87ad('0x3')](util[_0x87ad('0x10')](_0x87ad('0x11'),_0x1d2ec8[_0x87ad('0xf')],_0x5ef61f[_0x1d2ec8[_0x87ad('0x7')]]));}else if(_0x1d2ec8[_0x87ad('0xe')]===_0x87ad('0x9')&&_0x1d2ec8[_0x87ad('0xa')]&&_0x1d2ec8[_0x87ad('0xa')][_0x87ad('0xb')]&&_0x1d2ec8[_0x87ad('0xf')]){_0x5ef61f[_0x1d2ec8[_0x87ad('0xa')][_0x87ad('0xb')][_0x87ad('0xc')]()]&&_0x3ee677[_0x87ad('0x3')](util[_0x87ad('0x10')](_0x87ad('0x11'),_0x1d2ec8[_0x87ad('0xf')],_0x5ef61f[_0x1d2ec8[_0x87ad('0xa')][_0x87ad('0xb')][_0x87ad('0xc')]()]));}}}}return _0x3ee677['join'](_0xaf84e6);};exports[_0x87ad('0x13')]=function(_0x5d8127){var _0x4bcbf6=_0x5d8127[_0x87ad('0x14')](-0x1);if(_0x4bcbf6==='/'){_0x5d8127=_0x5d8127[_0x87ad('0x15')](0x0,_0x5d8127[_0x87ad('0x16')](_0x4bcbf6));}return _0x5d8127;};exports['validateEmail']=function(_0x20205f){if(!_['isNil'](_0x20205f)&&_0x20205f!==''){var _0x1228df=/^(([^<>()\[\]\\.,;:\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 _0x1228df[_0x87ad('0x17')](String(_0x20205f)['toLowerCase']());}else{return![];}};
\ No newline at end of file
+var _0xe17a=['toString','Variable','name','toLowerCase','keyValue','keyType','key','format','%s:\x20%s','keyContent','join','slice','substring','lastIndexOf','validateEmail','isNil','test','lodash','util','getString','length','type','string','push','variable','variableName'];(function(_0x89cb3a,_0x385fd1){var _0x407cf1=function(_0x61fa77){while(--_0x61fa77){_0x89cb3a['push'](_0x89cb3a['shift']());}};_0x407cf1(++_0x385fd1);}(_0xe17a,0x79));var _0xae17=function(_0x2141a5,_0x4a660d){_0x2141a5=_0x2141a5-0x0;var _0x340111=_0xe17a[_0x2141a5];return _0x340111;};'use strict';var _=require(_0xae17('0x0'));var util=require(_0xae17('0x1'));exports[_0xae17('0x2')]=function(_0x1faf49,_0xc9e034,_0x14dd45){var _0x22afb=[];if(_0x1faf49[_0xae17('0x3')]>0x0){var _0x20f5ec=_['sortBy'](_0x1faf49,['id']);for(var _0x1a22ef=0x0;_0x1a22ef<_0x20f5ec[_0xae17('0x3')];_0x1a22ef++){var _0xb18792=_0x20f5ec[_0x1a22ef];if(_0xb18792[_0xae17('0x4')]===_0xae17('0x5')){_0x22afb[_0xae17('0x6')](_0xb18792['content']);}else if(_0xb18792[_0xae17('0x4')]===_0xae17('0x7')&&_0xb18792[_0xae17('0x8')]){_0xc9e034[_0xb18792[_0xae17('0x8')]]&&_0x22afb[_0xae17('0x6')](_0xc9e034[_0xb18792[_0xae17('0x8')]][_0xae17('0x9')]());}else if(_0xb18792[_0xae17('0x4')]==='customVariable'&&_0xb18792[_0xae17('0xa')]&&_0xb18792[_0xae17('0xa')]['name']){_0xc9e034[_0xb18792[_0xae17('0xa')][_0xae17('0xb')][_0xae17('0xc')]()]&&_0x22afb[_0xae17('0x6')](_0xc9e034[_0xb18792[_0xae17('0xa')]['name'][_0xae17('0xc')]()][_0xae17('0x9')]());}else if(_0xb18792[_0xae17('0x4')]===_0xae17('0xd')){if(_0xb18792[_0xae17('0xe')]===_0xae17('0x5')&&_0xb18792[_0xae17('0xf')]){_0x22afb[_0xae17('0x6')](util[_0xae17('0x10')](_0xae17('0x11'),_0xb18792[_0xae17('0xf')],_0xb18792[_0xae17('0x12')]));}else if(_0xb18792[_0xae17('0xe')]===_0xae17('0x7')&&_0xb18792[_0xae17('0x8')]&&_0xb18792[_0xae17('0xf')]){_0xc9e034[_0xb18792['variableName']]&&_0x22afb[_0xae17('0x6')](util[_0xae17('0x10')]('%s:\x20%s',_0xb18792['key'],_0xc9e034[_0xb18792['variableName']]));}else if(_0xb18792[_0xae17('0xe')]==='customVariable'&&_0xb18792[_0xae17('0xa')]&&_0xb18792[_0xae17('0xa')]['name']&&_0xb18792['key']){_0xc9e034[_0xb18792[_0xae17('0xa')][_0xae17('0xb')]['toLowerCase']()]&&_0x22afb[_0xae17('0x6')](util['format'](_0xae17('0x11'),_0xb18792[_0xae17('0xf')],_0xc9e034[_0xb18792[_0xae17('0xa')]['name']['toLowerCase']()]));}}}}return _0x22afb[_0xae17('0x13')](_0x14dd45);};exports['stripTrailingSlash']=function(_0x2d6a6d){var _0x3106fc=_0x2d6a6d[_0xae17('0x14')](-0x1);if(_0x3106fc==='/'){_0x2d6a6d=_0x2d6a6d[_0xae17('0x15')](0x0,_0x2d6a6d[_0xae17('0x16')](_0x3106fc));}return _0x2d6a6d;};exports[_0xae17('0x17')]=function(_0x250048){if(!_[_0xae17('0x18')](_0x250048)&&_0x250048!==''){var _0x5c81b1=/^(([^<>()\[\]\\.,;:\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 _0x5c81b1[_0xae17('0x19')](String(_0x250048)[_0xae17('0xc')]());}else{return![];}};
\ No newline at end of file
index 7917dc7..fb33590 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(_0x53ccf2,_0x13cb67){var _0x5a2964=function(_0x3b0514){while(--_0x3b0514){_0x53ccf2['push'](_0x53ccf2['shift']());}};_0x5a2964(++_0x13cb67);}(_0xa9e0,0x123));var _0x0a9e=function(_0x4e1d03,_0x786f3a){_0x4e1d03=_0x4e1d03-0x0;var _0x362d4b=_0xa9e0[_0x4e1d03];return _0x362d4b;};'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(_0x1b7f17,_0x4d650b){var _0x4baa48=function(_0x5d6578){while(--_0x5d6578){_0x1b7f17['push'](_0x1b7f17['shift']());}};_0x4baa48(++_0x4d650b);}(_0x34e8,0x12c));var _0x834e=function(_0x484220,_0x125f09){_0x484220=_0x484220-0x0;var _0x2ee218=_0x34e8[_0x484220];return _0x2ee218;};'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 1ffcc03..240dd1b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d0d=['token','Basic\x20%s','toString','base64','[HTTP]','stringify','forEach','type','nameField','content','includes','string','idField','customField','custom_fields','push','variable','variableName','customVariable','Variable','name','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','recordingURL','uniqueid','Authorization','calleridname','calleridnum','The\x20Enduser\x20ID\x20is:','The\x20Ticket\x20ID\x20is:','integrationTab','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','%s/agent/tickets/%s','/api/v2','Zendesk\x20account\x20type\x20not\x20recognized','catch','[QUEUE]\x20Error\x20running\x20Zendesk\x20integration','inspect','outbound','recordingFormat','none','[OUTBOUND]','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','The\x20User\x20ID\x20is:','destcalleridname','destcalleridnum','error','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','unmanaged','lastevent','toUpperCase','\x20Error\x20running\x20Zendesk\x20integration','lodash','md5','util','ioredis','./util','../../../../config/environment','zendesk','defaults','localhost','redis','emit','application/json','info','Creating\x20new\x20ticket...','format','%s/tickets.json','remoteUri','POST','merge','getString','Subjects','Descriptions','then','ticket','validateEmail','Getting\x20agent\x20with\x20email','type:user\x20role:agent\x20email:%s','find','results','agent','%s/users/me.json','Admin\x20account\x20selected.','user','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!','Searching\x20enduser\x20with\x20phone','%s/search.json','type:user\x20role:end-user\x20phone:%s','length','filter','first','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','end-user','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','%s/token:%s'];(function(_0x23aa78,_0x25179c){var _0x5a81be=function(_0x47bb3f){while(--_0x47bb3f){_0x23aa78['push'](_0x23aa78['shift']());}};_0x5a81be(++_0x25179c);}(_0x1d0d,0x18a));var _0xd1d0=function(_0x189dc6,_0x1a9eea){_0x189dc6=_0x189dc6-0x0;var _0x1b8ac6=_0x1d0d[_0x189dc6];return _0x1b8ac6;};'use strict';var _=require(_0xd1d0('0x0'));var rp=require('request-promise');var md5=require(_0xd1d0('0x1'));var util=require(_0xd1d0('0x2'));var Redis=require(_0xd1d0('0x3'));var intUtil=require(_0xd1d0('0x4'));var config=require(_0xd1d0('0x5'));var logger=require('../../../../config/logger')(_0xd1d0('0x6'));config['redis']=_[_0xd1d0('0x7')](config['redis'],{'host':_0xd1d0('0x8'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xd1d0('0x9')]));function emit(_0x4a2ac7,_0x23fa62,_0x22989c){io['to'](_0x4a2ac7)[_0xd1d0('0xa')](_0x23fa62,_0x22989c);}var headers={'Content-Type':'application/json','Accept':_0xd1d0('0xb')};function getTicket(_0x269a15,_0x307f25,_0x5b0fa4,_0x176b19,_0x54192d){logger[_0xd1d0('0xc')](_0xd1d0('0xd'));return request({'uri':util[_0xd1d0('0xe')](_0xd1d0('0xf'),_0x269a15[_0xd1d0('0x10')]),'method':_0xd1d0('0x11'),'body':{'ticket':_[_0xd1d0('0x12')]({'requester_id':_0x5b0fa4['id'],'submitter_id':_0x307f25?_0x307f25['id']:undefined,'assignee_id':_0x307f25?_0x307f25['id']:undefined,'tags':getTags(_0x176b19['Tags'],'name'),'subject':intUtil[_0xd1d0('0x13')](_0x176b19[_0xd1d0('0x14')],_0x54192d,'\x20'),'description':intUtil[_0xd1d0('0x13')](_0x176b19[_0xd1d0('0x15')],_0x54192d,'\x0a'),'comment':{'public':![],'body':intUtil['getString'](_0x176b19[_0xd1d0('0x15')],_0x54192d,'\x0a')}},getCustomFields(_0x176b19['Fields'],_0x54192d))}})[_0xd1d0('0x16')](function(_0x14e0ed){logger[_0xd1d0('0xc')]('Ticket\x20created!');return _0x14e0ed[_0xd1d0('0x17')];});}function getUser(_0x4af4e5,_0x3e26f2){if(intUtil[_0xd1d0('0x18')](_0x3e26f2)){logger[_0xd1d0('0xc')](_0xd1d0('0x19'),_0x3e26f2);return request({'uri':util[_0xd1d0('0xe')]('%s/search.json',_0x4af4e5['remoteUri']),'qs':{'query':util[_0xd1d0('0xe')](_0xd1d0('0x1a'),_0x3e26f2)}})[_0xd1d0('0x16')](function(_0x522b15){if(_0x522b15['count']){logger[_0xd1d0('0xc')]('Agent\x20found!');return _[_0xd1d0('0x1b')](_0x522b15[_0xd1d0('0x1c')],{'email':_0x3e26f2,'role':_0xd1d0('0x1d')});}else{logger[_0xd1d0('0xc')]('Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!');return request({'uri':util['format'](_0xd1d0('0x1e'),_0x4af4e5[_0xd1d0('0x10')])})[_0xd1d0('0x16')](function(_0x19c584){logger[_0xd1d0('0xc')](_0xd1d0('0x1f'));return _0x19c584[_0xd1d0('0x20')];});}});}else{logger['info'](_0xd1d0('0x21'));return request({'uri':util['format'](_0xd1d0('0x1e'),_0x4af4e5[_0xd1d0('0x10')])})[_0xd1d0('0x16')](function(_0x79bfbf){logger['info']('Admin\x20account\x20selected.');return _0x79bfbf[_0xd1d0('0x20')];});}}function getEndUser(_0x5b98c3,_0x288a97,_0x530cd4){logger[_0xd1d0('0xc')](_0xd1d0('0x22'),_0x530cd4);return request({'uri':util['format'](_0xd1d0('0x23'),_0x5b98c3[_0xd1d0('0x10')]),'qs':{'query':util['format'](_0xd1d0('0x24'),_0x530cd4)}})[_0xd1d0('0x16')](function(_0xe6a537){var _0x1332c5;if(_0xe6a537[_0xd1d0('0x1c')][_0xd1d0('0x25')]){_0xe6a537['results']=_[_0xd1d0('0x26')](_0xe6a537[_0xd1d0('0x1c')],{'suspended':![],'role':'end-user'});if(_0xe6a537[_0xd1d0('0x1c')][_0xd1d0('0x25')]){_0x1332c5=_[_0xd1d0('0x27')](_0xe6a537[_0xd1d0('0x1c')]);}}if(_0x1332c5){logger[_0xd1d0('0xc')]('Enduser\x20found!');return _0x1332c5;}else{logger[_0xd1d0('0xc')](_0xd1d0('0x28'));return request({'uri':util['format'](_0xd1d0('0x29'),_0x5b98c3['remoteUri']),'method':_0xd1d0('0x11'),'body':{'user':{'role':_0xd1d0('0x2a'),'name':util['format'](_0xd1d0('0x2b'),_0x288a97||_0x530cd4),'phone':_0x530cd4}}})['then'](function(_0x3504be){logger[_0xd1d0('0xc')](_0xd1d0('0x2c'));return _0x3504be[_0xd1d0('0x20')];});}});}function getAuth(_0x1856dd){var _0xc3f38d;if(_0x1856dd[_0xd1d0('0x2d')]===_0xd1d0('0x2e')){_0xc3f38d=util['format'](_0xd1d0('0x2f'),_0x1856dd[_0xd1d0('0x30')],_0x1856dd['password']);}else if(_0x1856dd['authType']==='token'){_0xc3f38d=util['format'](_0xd1d0('0x31'),_0x1856dd[_0xd1d0('0x30')],_0x1856dd[_0xd1d0('0x32')]);}return util[_0xd1d0('0xe')](_0xd1d0('0x33'),new Buffer(_0xc3f38d)[_0xd1d0('0x34')](_0xd1d0('0x35')));}function request(_0x42b420){logger['debug'](_0xd1d0('0x36'),JSON[_0xd1d0('0x37')](_0x42b420));return rp(_[_0xd1d0('0x7')](_0x42b420,{'method':'GET','headers':headers,'json':!![]}));}function getTags(_0x2c49ef,_0x3b1e3){var _0x4b73f8=[];if(_0x2c49ef&&_0x2c49ef[_0xd1d0('0x25')]>0x0){_0x4b73f8=_['map'](_0x2c49ef,_0x3b1e3);}return _0x4b73f8;}function getCustomFields(_0x33aa2f,_0xf9133f){var _0x2487ed=[];var _0x44dab2={'custom_fields':[]};if(_0x33aa2f[_0xd1d0('0x25')]>0x0){_[_0xd1d0('0x38')](_0x33aa2f,function(_0x559ce5){if(_['includes'](['string','picklist'],_0x559ce5[_0xd1d0('0x39')])&&_0x559ce5[_0xd1d0('0x3a')]&&!_0x559ce5['customField']){_0x44dab2[_0x559ce5[_0xd1d0('0x3a')]['toLowerCase']()]=_0x559ce5[_0xd1d0('0x3b')][_0xd1d0('0x34')]();}else if(_[_0xd1d0('0x3c')]([_0xd1d0('0x3d'),'picklist'],_0x559ce5['type'])&&_0x559ce5[_0xd1d0('0x3e')]&&_0x559ce5[_0xd1d0('0x3f')]){_0x44dab2[_0xd1d0('0x40')][_0xd1d0('0x41')]({'id':_0x559ce5[_0xd1d0('0x3e')],'value':_0x559ce5[_0xd1d0('0x3b')][_0xd1d0('0x34')]()});}else if(_0x559ce5[_0xd1d0('0x39')]===_0xd1d0('0x42')&&_0x559ce5[_0xd1d0('0x43')]&&_0x559ce5[_0xd1d0('0x3e')]&&_0x559ce5[_0xd1d0('0x3f')]){_0xf9133f[_0x559ce5['variableName']]&&_0x44dab2[_0xd1d0('0x40')]['push']({'id':_0x559ce5[_0xd1d0('0x3e')],'value':_0xf9133f[_0x559ce5[_0xd1d0('0x43')]][_0xd1d0('0x34')]()});}else if(_0x559ce5['type']===_0xd1d0('0x44')&&_0x559ce5[_0xd1d0('0x45')]&&_0x559ce5[_0xd1d0('0x45')]['name']&&_0x559ce5[_0xd1d0('0x3e')]&&_0x559ce5[_0xd1d0('0x3f')]){_0xf9133f[_0x559ce5[_0xd1d0('0x45')][_0xd1d0('0x46')]['toLowerCase']()]&&_0x44dab2[_0xd1d0('0x40')][_0xd1d0('0x41')]({'id':_0x559ce5[_0xd1d0('0x3e')],'value':_0xf9133f[_0x559ce5['Variable'][_0xd1d0('0x46')]['toLowerCase']()][_0xd1d0('0x34')]()});}});}return _0x44dab2;}exports[_0xd1d0('0x47')]=function(_0x3abe88,_0x18e2e4,_0x3e79e1,_0x53d611,_0x4f3662,_0x5cda47){var _0x3b9726,_0x49c2bb;_0x5cda47[_0xd1d0('0x10')]=intUtil[_0xd1d0('0x48')](_0x5cda47[_0xd1d0('0x10')]);_0x5cda47[_0xd1d0('0x49')]=intUtil[_0xd1d0('0x48')](_0x5cda47['serverUrl']);if(_0x4f3662&&_0x4f3662[_0xd1d0('0x4a')]){logger['info'](_0xd1d0('0x4b'),_0xd1d0('0x4c'));_0x18e2e4[_0xd1d0('0x4d')]=util[_0xd1d0('0xe')]('%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s',_0x5cda47['serverUrl'],_0x18e2e4[_0xd1d0('0x4e')],md5(_0x18e2e4[_0xd1d0('0x4e')]));}else{_0x18e2e4[_0xd1d0('0x4d')]='';}headers[_0xd1d0('0x4f')]=getAuth(_0x5cda47);return getUser(_0x5cda47,_0x53d611['email'])['then'](function(_0x3c0046){_0x3b9726=_0x3c0046;logger['info']('The\x20User\x20ID\x20is:',_0x3b9726['id']);return getEndUser(_0x5cda47,_0x18e2e4[_0xd1d0('0x50')],_0x18e2e4[_0xd1d0('0x51')]);})['then'](function(_0x133973){_0x49c2bb=_0x133973;logger[_0xd1d0('0xc')](_0xd1d0('0x52'),_0x49c2bb['id']);return getTicket(_0x5cda47,_0x3b9726,_0x49c2bb,_0x3e79e1,_0x18e2e4);})[_0xd1d0('0x16')](function(_0x49e120){if(_0x49e120){logger[_0xd1d0('0xc')](_0xd1d0('0x53'),_0x49e120['id']);switch(_0x5cda47[_0xd1d0('0x39')]){case _0xd1d0('0x54'):logger[_0xd1d0('0xc')]('[QUEUE]',_0xd1d0('0x55'));return request({'uri':util[_0xd1d0('0xe')](_0xd1d0('0x56'),_0x5cda47[_0xd1d0('0x10')],_0x3b9726['id'],_0x49e120['id']),'method':_0xd1d0('0x11')});case _0xd1d0('0x57'):logger[_0xd1d0('0xc')](_0xd1d0('0x4b'),_0xd1d0('0x58'));emit(util[_0xd1d0('0xe')](_0xd1d0('0x59'),_0x53d611['name']),_0xd1d0('0x5a'),{'uri':util[_0xd1d0('0xe')](_0xd1d0('0x5b'),_0x5cda47[_0xd1d0('0x10')]['replace'](_0xd1d0('0x5c'),''),_0x49e120['id'])});break;default:logger['error']('[QUEUE]',_0xd1d0('0x5d'));}}})[_0xd1d0('0x5e')](function(_0x567c66){logger['error'](_0xd1d0('0x5f'),util[_0xd1d0('0x60')](_0x567c66,{'showHidden':!![],'depth':null}));});};exports[_0xd1d0('0x61')]=function(_0x55e026,_0x1e70d5,_0x131bd0,_0x2a9d00,_0x4a947d,_0x378a0f,_0x3427b1){var _0x472613,_0x32ed4a;_0x378a0f[_0xd1d0('0x10')]=intUtil[_0xd1d0('0x48')](_0x378a0f['remoteUri']);_0x378a0f[_0xd1d0('0x49')]=intUtil[_0xd1d0('0x48')](_0x378a0f[_0xd1d0('0x49')]);if(_0x3427b1&&_0x3427b1[_0xd1d0('0x62')]&&_0x3427b1[_0xd1d0('0x62')]!==_0xd1d0('0x63')){logger[_0xd1d0('0xc')](_0xd1d0('0x64'),_0xd1d0('0x4c'));_0x1e70d5[_0xd1d0('0x4d')]=util['format'](_0xd1d0('0x65'),_0x378a0f[_0xd1d0('0x49')],_0x1e70d5[_0xd1d0('0x4e')],md5(_0x1e70d5[_0xd1d0('0x4e')]));}headers[_0xd1d0('0x4f')]=getAuth(_0x378a0f);return getUser(_0x378a0f,_0x2a9d00['email'])[_0xd1d0('0x16')](function(_0x140e86){_0x472613=_0x140e86;logger['info'](_0xd1d0('0x66'),_0x472613['id']);return getEndUser(_0x378a0f,_0x1e70d5[_0xd1d0('0x67')],_0x1e70d5[_0xd1d0('0x68')]);})[_0xd1d0('0x16')](function(_0x4ff9d9){_0x32ed4a=_0x4ff9d9;logger[_0xd1d0('0xc')](_0xd1d0('0x52'),_0x32ed4a['id']);return getTicket(_0x378a0f,_0x472613,_0x32ed4a,_0x131bd0,_0x1e70d5);})[_0xd1d0('0x16')](function(_0x5c24a6){if(_0x5c24a6){logger['info']('The\x20Ticket\x20ID\x20is:',_0x5c24a6['id']);switch(_0x378a0f['type']){case _0xd1d0('0x54'):logger[_0xd1d0('0xc')](_0xd1d0('0x64'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util[_0xd1d0('0xe')](_0xd1d0('0x56'),_0x378a0f[_0xd1d0('0x10')],_0x472613['id'],_0x5c24a6['id']),'method':_0xd1d0('0x11')});case'newTab':logger['info']('[OUTBOUND]','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0xd1d0('0xe')](_0xd1d0('0x59'),_0x2a9d00[_0xd1d0('0x46')]),_0xd1d0('0x5a'),{'uri':util[_0xd1d0('0xe')](_0xd1d0('0x5b'),_0x378a0f['remoteUri']['replace'](_0xd1d0('0x5c'),''),_0x5c24a6['id'])});break;default:logger[_0xd1d0('0x69')]('[OUTBOUND]',_0xd1d0('0x5d'));}}})[_0xd1d0('0x5e')](function(_0x389886){logger[_0xd1d0('0x69')](_0xd1d0('0x6a'),util[_0xd1d0('0x60')](_0x389886,{'showHidden':!![],'depth':null}));});};exports[_0xd1d0('0x6b')]=function(_0x1a633f,_0x5cb6b7,_0x45c0fb,_0x169ee4,_0xcfdef2,_0x1230ff){var _0x45d9e0,_0x5b34e5;_0x1230ff['remoteUri']=intUtil[_0xd1d0('0x48')](_0x1230ff['remoteUri']);_0x1230ff[_0xd1d0('0x49')]=intUtil['stripTrailingSlash'](_0x1230ff[_0xd1d0('0x49')]);if(_0xcfdef2&&_0xcfdef2['monitor_format']){logger[_0xd1d0('0xc')]('['+_0x5cb6b7[_0xd1d0('0x6c')][_0xd1d0('0x6d')]()+']',_0xd1d0('0x4c'));_0x5cb6b7['recordingURL']=util[_0xd1d0('0xe')](_0xd1d0('0x65'),_0x1230ff[_0xd1d0('0x49')],_0x5cb6b7['uniqueid'],md5(_0x5cb6b7[_0xd1d0('0x4e')]));}else{_0x5cb6b7[_0xd1d0('0x4d')]='';}headers[_0xd1d0('0x4f')]=getAuth(_0x1230ff);return getUser(_0x1230ff)[_0xd1d0('0x16')](function(_0x4f6a05){_0x45d9e0=_0x4f6a05;logger[_0xd1d0('0xc')](_0xd1d0('0x66'),_0x45d9e0['id']);return getEndUser(_0x1230ff,_0x5cb6b7[_0xd1d0('0x50')],_0x5cb6b7[_0xd1d0('0x51')]);})['then'](function(_0x2e3e65){_0x5b34e5=_0x2e3e65;logger[_0xd1d0('0xc')](_0xd1d0('0x52'),_0x5b34e5['id']);return getTicket(_0x1230ff,_0x45d9e0,_0x5b34e5,_0x45c0fb,_0x5cb6b7);})[_0xd1d0('0x16')](function(_0x303348){if(_0x303348){logger[_0xd1d0('0xc')](_0xd1d0('0x53'),_0x303348['id']);}})[_0xd1d0('0x5e')](function(_0x3d0e80){logger['error']('['+_0x5cb6b7[_0xd1d0('0x6c')]['toUpperCase']()+']'+_0xd1d0('0x6e'),util[_0xd1d0('0x60')](_0x3d0e80,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
+var _0x4305=['Admin\x20account\x20selected.','%s/users/me.json','Searching\x20enduser\x20with\x20phone','type:user\x20role:end-user\x20phone:%s','results','length','filter','end-user','first','Enduser\x20found!','Enduser\x20not\x20found,\x20creating\x20a\x20new\x20enduser!','%s/users.json','POST','Caller\x20-\x20%s','Enduser\x20created.','authType','password','%s:%s','username','token','%s/token:%s','Basic\x20%s','debug','[HTTP]','stringify','defaults','GET','map','forEach','string','type','nameField','customField','toLowerCase','content','toString','includes','picklist','idField','custom_fields','push','variable','variableName','Variable','name','queue','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','Recording\x20is\x20enabled!','%s/api/voice/recordings/%s/downloads?type=uniqueid&token=%s','uniqueid','Authorization','email','The\x20User\x20ID\x20is:','calleridname','The\x20Enduser\x20ID\x20is:','integrationTab','newTab','Displaying\x20ticket\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','replace','error','Zendesk\x20account\x20type\x20not\x20recognized','catch','inspect','outbound','recordingFormat','none','[OUTBOUND]','recordingURL','destcalleridnum','Displaying\x20ticket\x20to\x20agent...','%s/channels/voice/agents/%d/tickets/%d/display.json','[OUTBOUND]\x20Error\x20running\x20Zendesk\x20integration','lastevent','toUpperCase','calleridnum','The\x20Ticket\x20ID\x20is:','\x20Error\x20running\x20Zendesk\x20integration','lodash','request-promise','md5','util','../../../../config/environment','../../../../config/logger','redis','localhost','socket.io-emitter','emit','application/json','info','Creating\x20new\x20ticket...','remoteUri','Tags','getString','Descriptions','then','ticket','validateEmail','format','%s/search.json','type:user\x20role:agent\x20email:%s','find','agent','Agent\x20not\x20found,\x20using\x20the\x20admin\x20account!'];(function(_0x5e38be,_0x36cc86){var _0xa4f17b=function(_0x5dc7b7){while(--_0x5dc7b7){_0x5e38be['push'](_0x5e38be['shift']());}};_0xa4f17b(++_0x36cc86);}(_0x4305,0xbc));var _0x5430=function(_0x526074,_0x5e5d09){_0x526074=_0x526074-0x0;var _0x83c6c8=_0x4305[_0x526074];return _0x83c6c8;};'use strict';var _=require(_0x5430('0x0'));var rp=require(_0x5430('0x1'));var md5=require(_0x5430('0x2'));var util=require(_0x5430('0x3'));var Redis=require('ioredis');var intUtil=require('./util');var config=require(_0x5430('0x4'));var logger=require(_0x5430('0x5'))('zendesk');config[_0x5430('0x6')]=_['defaults'](config[_0x5430('0x6')],{'host':_0x5430('0x7'),'port':0x18eb});var io=require(_0x5430('0x8'))(new Redis(config[_0x5430('0x6')]));function emit(_0x3d2de0,_0x5f1111,_0x333a97){io['to'](_0x3d2de0)[_0x5430('0x9')](_0x5f1111,_0x333a97);}var headers={'Content-Type':_0x5430('0xa'),'Accept':_0x5430('0xa')};function getTicket(_0x5a9685,_0x205ae1,_0x4f8235,_0x1465af,_0x37431f){logger[_0x5430('0xb')](_0x5430('0xc'));return request({'uri':util['format']('%s/tickets.json',_0x5a9685[_0x5430('0xd')]),'method':'POST','body':{'ticket':_['merge']({'requester_id':_0x4f8235['id'],'submitter_id':_0x205ae1?_0x205ae1['id']:undefined,'assignee_id':_0x205ae1?_0x205ae1['id']:undefined,'tags':getTags(_0x1465af[_0x5430('0xe')],'name'),'subject':intUtil[_0x5430('0xf')](_0x1465af['Subjects'],_0x37431f,'\x20'),'description':intUtil['getString'](_0x1465af['Descriptions'],_0x37431f,'\x0a'),'comment':{'public':![],'body':intUtil[_0x5430('0xf')](_0x1465af[_0x5430('0x10')],_0x37431f,'\x0a')}},getCustomFields(_0x1465af['Fields'],_0x37431f))}})[_0x5430('0x11')](function(_0x9f5145){logger[_0x5430('0xb')]('Ticket\x20created!');return _0x9f5145[_0x5430('0x12')];});}function getUser(_0x503f72,_0x2eb986){if(intUtil[_0x5430('0x13')](_0x2eb986)){logger[_0x5430('0xb')]('Getting\x20agent\x20with\x20email',_0x2eb986);return request({'uri':util[_0x5430('0x14')](_0x5430('0x15'),_0x503f72[_0x5430('0xd')]),'qs':{'query':util[_0x5430('0x14')](_0x5430('0x16'),_0x2eb986)}})[_0x5430('0x11')](function(_0x3659f){if(_0x3659f['count']){logger[_0x5430('0xb')]('Agent\x20found!');return _[_0x5430('0x17')](_0x3659f['results'],{'email':_0x2eb986,'role':_0x5430('0x18')});}else{logger[_0x5430('0xb')](_0x5430('0x19'));return request({'uri':util[_0x5430('0x14')]('%s/users/me.json',_0x503f72[_0x5430('0xd')])})[_0x5430('0x11')](function(_0x2ff678){logger[_0x5430('0xb')](_0x5430('0x1a'));return _0x2ff678['user'];});}});}else{logger[_0x5430('0xb')](_0x5430('0x19'));return request({'uri':util[_0x5430('0x14')](_0x5430('0x1b'),_0x503f72['remoteUri'])})[_0x5430('0x11')](function(_0x1399d0){logger[_0x5430('0xb')](_0x5430('0x1a'));return _0x1399d0['user'];});}}function getEndUser(_0x2912e3,_0x473ab6,_0x36c9c6){logger[_0x5430('0xb')](_0x5430('0x1c'),_0x36c9c6);return request({'uri':util[_0x5430('0x14')]('%s/search.json',_0x2912e3['remoteUri']),'qs':{'query':util['format'](_0x5430('0x1d'),_0x36c9c6)}})[_0x5430('0x11')](function(_0x181b36){var _0x12c728;if(_0x181b36[_0x5430('0x1e')][_0x5430('0x1f')]){_0x181b36[_0x5430('0x1e')]=_[_0x5430('0x20')](_0x181b36[_0x5430('0x1e')],{'suspended':![],'role':_0x5430('0x21')});if(_0x181b36[_0x5430('0x1e')][_0x5430('0x1f')]){_0x12c728=_[_0x5430('0x22')](_0x181b36[_0x5430('0x1e')]);}}if(_0x12c728){logger[_0x5430('0xb')](_0x5430('0x23'));return _0x12c728;}else{logger[_0x5430('0xb')](_0x5430('0x24'));return request({'uri':util[_0x5430('0x14')](_0x5430('0x25'),_0x2912e3[_0x5430('0xd')]),'method':_0x5430('0x26'),'body':{'user':{'role':'end-user','name':util[_0x5430('0x14')](_0x5430('0x27'),_0x473ab6||_0x36c9c6),'phone':_0x36c9c6}}})['then'](function(_0x31b908){logger['info'](_0x5430('0x28'));return _0x31b908['user'];});}});}function getAuth(_0x82aa90){var _0x2ba467;if(_0x82aa90[_0x5430('0x29')]===_0x5430('0x2a')){_0x2ba467=util['format'](_0x5430('0x2b'),_0x82aa90[_0x5430('0x2c')],_0x82aa90['password']);}else if(_0x82aa90[_0x5430('0x29')]===_0x5430('0x2d')){_0x2ba467=util['format'](_0x5430('0x2e'),_0x82aa90[_0x5430('0x2c')],_0x82aa90[_0x5430('0x2d')]);}return util[_0x5430('0x14')](_0x5430('0x2f'),new Buffer(_0x2ba467)['toString']('base64'));}function request(_0x1d582a){logger[_0x5430('0x30')](_0x5430('0x31'),JSON[_0x5430('0x32')](_0x1d582a));return rp(_[_0x5430('0x33')](_0x1d582a,{'method':_0x5430('0x34'),'headers':headers,'json':!![]}));}function getTags(_0x4cd76b,_0x5d9d62){var _0x1021cf=[];if(_0x4cd76b&&_0x4cd76b[_0x5430('0x1f')]>0x0){_0x1021cf=_[_0x5430('0x35')](_0x4cd76b,_0x5d9d62);}return _0x1021cf;}function getCustomFields(_0x2a4ff0,_0x2ef61f){var _0xc9c005=[];var _0x39874a={'custom_fields':[]};if(_0x2a4ff0[_0x5430('0x1f')]>0x0){_[_0x5430('0x36')](_0x2a4ff0,function(_0x564451){if(_['includes']([_0x5430('0x37'),'picklist'],_0x564451[_0x5430('0x38')])&&_0x564451[_0x5430('0x39')]&&!_0x564451[_0x5430('0x3a')]){_0x39874a[_0x564451[_0x5430('0x39')][_0x5430('0x3b')]()]=_0x564451[_0x5430('0x3c')][_0x5430('0x3d')]();}else if(_[_0x5430('0x3e')]([_0x5430('0x37'),_0x5430('0x3f')],_0x564451[_0x5430('0x38')])&&_0x564451[_0x5430('0x40')]&&_0x564451[_0x5430('0x3a')]){_0x39874a[_0x5430('0x41')][_0x5430('0x42')]({'id':_0x564451['idField'],'value':_0x564451[_0x5430('0x3c')]['toString']()});}else if(_0x564451[_0x5430('0x38')]===_0x5430('0x43')&&_0x564451[_0x5430('0x44')]&&_0x564451[_0x5430('0x40')]&&_0x564451[_0x5430('0x3a')]){_0x2ef61f[_0x564451[_0x5430('0x44')]]&&_0x39874a['custom_fields'][_0x5430('0x42')]({'id':_0x564451[_0x5430('0x40')],'value':_0x2ef61f[_0x564451[_0x5430('0x44')]]['toString']()});}else if(_0x564451[_0x5430('0x38')]==='customVariable'&&_0x564451[_0x5430('0x45')]&&_0x564451['Variable'][_0x5430('0x46')]&&_0x564451[_0x5430('0x40')]&&_0x564451['customField']){_0x2ef61f[_0x564451[_0x5430('0x45')][_0x5430('0x46')][_0x5430('0x3b')]()]&&_0x39874a[_0x5430('0x41')]['push']({'id':_0x564451['idField'],'value':_0x2ef61f[_0x564451['Variable'][_0x5430('0x46')][_0x5430('0x3b')]()][_0x5430('0x3d')]()});}});}return _0x39874a;}exports[_0x5430('0x47')]=function(_0x2d2cac,_0x162bcd,_0x1b71fc,_0x38fe16,_0xe48c4f,_0x3f4bc7){var _0x401a6a,_0x5c018d;_0x3f4bc7[_0x5430('0xd')]=intUtil[_0x5430('0x48')](_0x3f4bc7[_0x5430('0xd')]);_0x3f4bc7['serverUrl']=intUtil[_0x5430('0x48')](_0x3f4bc7[_0x5430('0x49')]);if(_0xe48c4f&&_0xe48c4f[_0x5430('0x4a')]){logger[_0x5430('0xb')](_0x5430('0x4b'),_0x5430('0x4c'));_0x162bcd['recordingURL']=util[_0x5430('0x14')](_0x5430('0x4d'),_0x3f4bc7[_0x5430('0x49')],_0x162bcd[_0x5430('0x4e')],md5(_0x162bcd['uniqueid']));}else{_0x162bcd['recordingURL']='';}headers[_0x5430('0x4f')]=getAuth(_0x3f4bc7);return getUser(_0x3f4bc7,_0x38fe16[_0x5430('0x50')])[_0x5430('0x11')](function(_0x5c18bf){_0x401a6a=_0x5c18bf;logger[_0x5430('0xb')](_0x5430('0x51'),_0x401a6a['id']);return getEndUser(_0x3f4bc7,_0x162bcd[_0x5430('0x52')],_0x162bcd['calleridnum']);})[_0x5430('0x11')](function(_0x273f52){_0x5c018d=_0x273f52;logger[_0x5430('0xb')](_0x5430('0x53'),_0x5c018d['id']);return getTicket(_0x3f4bc7,_0x401a6a,_0x5c018d,_0x1b71fc,_0x162bcd);})[_0x5430('0x11')](function(_0x5b2354){if(_0x5b2354){logger['info']('The\x20Ticket\x20ID\x20is:',_0x5b2354['id']);switch(_0x3f4bc7[_0x5430('0x38')]){case _0x5430('0x54'):logger[_0x5430('0xb')](_0x5430('0x4b'),'Displaying\x20ticket\x20to\x20agent...');return request({'uri':util['format']('%s/channels/voice/agents/%d/tickets/%d/display.json',_0x3f4bc7[_0x5430('0xd')],_0x401a6a['id'],_0x5b2354['id']),'method':_0x5430('0x26')});case _0x5430('0x55'):logger[_0x5430('0xb')](_0x5430('0x4b'),_0x5430('0x56'));emit(util[_0x5430('0x14')](_0x5430('0x57'),_0x38fe16[_0x5430('0x46')]),'trigger:browser:url',{'uri':util[_0x5430('0x14')]('%s/agent/tickets/%s',_0x3f4bc7[_0x5430('0xd')][_0x5430('0x58')]('/api/v2',''),_0x5b2354['id'])});break;default:logger[_0x5430('0x59')](_0x5430('0x4b'),_0x5430('0x5a'));}}})[_0x5430('0x5b')](function(_0x27e7b7){logger[_0x5430('0x59')]('[QUEUE]\x20Error\x20running\x20Zendesk\x20integration',util[_0x5430('0x5c')](_0x27e7b7,{'showHidden':!![],'depth':null}));});};exports[_0x5430('0x5d')]=function(_0x3885a2,_0x150d0c,_0x4e33b4,_0x48e83c,_0x3eec7c,_0x1fd01e,_0x59cc64){var _0x5dfb00,_0x3b1358;_0x1fd01e[_0x5430('0xd')]=intUtil[_0x5430('0x48')](_0x1fd01e['remoteUri']);_0x1fd01e['serverUrl']=intUtil[_0x5430('0x48')](_0x1fd01e['serverUrl']);if(_0x59cc64&&_0x59cc64[_0x5430('0x5e')]&&_0x59cc64[_0x5430('0x5e')]!==_0x5430('0x5f')){logger[_0x5430('0xb')](_0x5430('0x60'),'Recording\x20is\x20enabled!');_0x150d0c[_0x5430('0x61')]=util[_0x5430('0x14')](_0x5430('0x4d'),_0x1fd01e['serverUrl'],_0x150d0c[_0x5430('0x4e')],md5(_0x150d0c[_0x5430('0x4e')]));}headers[_0x5430('0x4f')]=getAuth(_0x1fd01e);return getUser(_0x1fd01e,_0x48e83c[_0x5430('0x50')])[_0x5430('0x11')](function(_0x4df006){_0x5dfb00=_0x4df006;logger[_0x5430('0xb')]('The\x20User\x20ID\x20is:',_0x5dfb00['id']);return getEndUser(_0x1fd01e,_0x150d0c['destcalleridname'],_0x150d0c[_0x5430('0x62')]);})[_0x5430('0x11')](function(_0x4b2aad){_0x3b1358=_0x4b2aad;logger[_0x5430('0xb')](_0x5430('0x53'),_0x3b1358['id']);return getTicket(_0x1fd01e,_0x5dfb00,_0x3b1358,_0x4e33b4,_0x150d0c);})[_0x5430('0x11')](function(_0x2ce816){if(_0x2ce816){logger[_0x5430('0xb')]('The\x20Ticket\x20ID\x20is:',_0x2ce816['id']);switch(_0x1fd01e[_0x5430('0x38')]){case'integrationTab':logger[_0x5430('0xb')](_0x5430('0x60'),_0x5430('0x63'));return request({'uri':util[_0x5430('0x14')](_0x5430('0x64'),_0x1fd01e['remoteUri'],_0x5dfb00['id'],_0x2ce816['id']),'method':_0x5430('0x26')});case _0x5430('0x55'):logger[_0x5430('0xb')]('[OUTBOUND]',_0x5430('0x56'));emit(util[_0x5430('0x14')]('user:%s',_0x48e83c[_0x5430('0x46')]),'trigger:browser:url',{'uri':util['format']('%s/agent/tickets/%s',_0x1fd01e[_0x5430('0xd')][_0x5430('0x58')]('/api/v2',''),_0x2ce816['id'])});break;default:logger[_0x5430('0x59')]('[OUTBOUND]',_0x5430('0x5a'));}}})['catch'](function(_0x58177b){logger[_0x5430('0x59')](_0x5430('0x65'),util[_0x5430('0x5c')](_0x58177b,{'showHidden':!![],'depth':null}));});};exports['unmanaged']=function(_0x174411,_0x50b410,_0x1f6829,_0x589ed0,_0x5a8af9,_0x4f9963){var _0x29347a,_0x1f2a51;_0x4f9963['remoteUri']=intUtil[_0x5430('0x48')](_0x4f9963[_0x5430('0xd')]);_0x4f9963[_0x5430('0x49')]=intUtil['stripTrailingSlash'](_0x4f9963[_0x5430('0x49')]);if(_0x5a8af9&&_0x5a8af9['monitor_format']){logger['info']('['+_0x50b410[_0x5430('0x66')][_0x5430('0x67')]()+']','Recording\x20is\x20enabled!');_0x50b410[_0x5430('0x61')]=util[_0x5430('0x14')](_0x5430('0x4d'),_0x4f9963[_0x5430('0x49')],_0x50b410[_0x5430('0x4e')],md5(_0x50b410['uniqueid']));}else{_0x50b410[_0x5430('0x61')]='';}headers[_0x5430('0x4f')]=getAuth(_0x4f9963);return getUser(_0x4f9963)[_0x5430('0x11')](function(_0x2dbe6c){_0x29347a=_0x2dbe6c;logger['info'](_0x5430('0x51'),_0x29347a['id']);return getEndUser(_0x4f9963,_0x50b410[_0x5430('0x52')],_0x50b410[_0x5430('0x68')]);})[_0x5430('0x11')](function(_0x527bef){_0x1f2a51=_0x527bef;logger[_0x5430('0xb')](_0x5430('0x53'),_0x1f2a51['id']);return getTicket(_0x4f9963,_0x29347a,_0x1f2a51,_0x1f6829,_0x50b410);})['then'](function(_0x1dc058){if(_0x1dc058){logger[_0x5430('0xb')](_0x5430('0x69'),_0x1dc058['id']);}})[_0x5430('0x5b')](function(_0x5d02ca){logger[_0x5430('0x59')]('['+_0x50b410[_0x5430('0x66')][_0x5430('0x67')]()+']'+_0x5430('0x6a'),util['inspect'](_0x5d02ca,{'showHidden':!![],'depth':null}));});};
\ No newline at end of file
index 31706b6..81fdb4a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa477=['lead','Creating\x20new\x20call...','Owner','administrator','Subjects','Description','getString','Descriptions','Contacts','Who_Id','Full_Name','First_Name','Last_Name','What_Id','$se_module','talktime','Call_Duration','mm:ss','answertime','endtime','utc','starttime','YYYY-MM-DDTHH:mm:ss','lastevent','Call_Result','Called','complete','connect','Answered','rejected','Rejected','abandoned','timeout','Timeout','Call_Start_Time','agentcalledAt','Call_Type','Inbound','merge','Fields','/crm/v2/Calls','Call\x20created!','details','stack','err','queue','host','stripTrailingSlash','serverUrl','[QUEUE]','Recording\x20is\x20enabled!','/downloads?type=uniqueid&token=','uniqueid','recordingURL','zoho.eu','The\x20User\x20ID\x20is:','calleridname','calleridnum','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','outbound','recordingFormat','[OUTBOUND]','/api/voice/recordings/','com','destcalleridname','destcalleridnum','The\x20Call\x20ID\x20is:','unmanaged','monitor_format','toUpperCase','lodash','request-promise','util','./util','moment','ioredis','bluebird','../../../../config/environment','../../../../config/logger','redis','defaults','emit','debug','[HTTP]','stringify','length','forEach','includes','picklist','type','idField','content','toString','variable','variableName','customVariable','name','Variable','toLowerCase','indexOf','split','isNil','access_token','isBefore','expires_in','zone','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','POST','/oauth/v2/token','clientId','clientSecret','then','add','catch','error','info','Search\x20user','GET','format','https://www.zohoapis.%s/crm/v2/users','ActiveUsers','Zoho-oauthtoken\x20','users','isArrayLikeObject','findIndex','email','Using\x20the\x20admin\x20account!','profile','Administrator','user','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','https://www.zohoapis.','/crm/v2/','startCase','role','first_name','last_name','code','SUCCESS','moduleCreate','log','contact_lead','uri','/crm/v2/Contacts/search?criteria=((Phone:equals:','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing'];(function(_0x13e01c,_0x4422c6){var _0x31c757=function(_0x180ef4){while(--_0x180ef4){_0x13e01c['push'](_0x13e01c['shift']());}};_0x31c757(++_0x4422c6);}(_0xa477,0xe6));var _0x7a47=function(_0x432682,_0x253044){_0x432682=_0x432682-0x0;var _0x463d05=_0xa477[_0x432682];return _0x463d05;};'use strict';var _=require(_0x7a47('0x0'));var rp=require(_0x7a47('0x1'));var md5=require('md5');var util=require(_0x7a47('0x2'));var intUtil=require(_0x7a47('0x3'));var moment=require(_0x7a47('0x4'));var Redis=require(_0x7a47('0x5'));var BPromise=require(_0x7a47('0x6'));var config=require(_0x7a47('0x7'));var logger=require(_0x7a47('0x8'))('zoho');config[_0x7a47('0x9')]=_[_0x7a47('0xa')](config[_0x7a47('0x9')],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function emit(_0x4276ed,_0x49db4c,_0x2dc504){io['to'](_0x4276ed)[_0x7a47('0xb')](_0x49db4c,_0x2dc504);}function request(_0x52eb49){logger[_0x7a47('0xc')](_0x7a47('0xd'),JSON[_0x7a47('0xe')](_0x52eb49));return rp(_0x52eb49);}function getCustomFields(_0x2a1419,_0x1d442f){var _0x494c3e={};if(_0x2a1419[_0x7a47('0xf')]>0x0){_[_0x7a47('0x10')](_0x2a1419,function(_0x37d749){if(_[_0x7a47('0x11')](['string',_0x7a47('0x12')],_0x37d749[_0x7a47('0x13')])&&_0x37d749[_0x7a47('0x14')]){_0x494c3e[_0x37d749[_0x7a47('0x14')]]=_0x37d749[_0x7a47('0x15')][_0x7a47('0x16')]();}else if(_0x37d749[_0x7a47('0x13')]===_0x7a47('0x17')&&_0x37d749['variableName']&&_0x37d749[_0x7a47('0x14')]&&_0x1d442f[_0x37d749[_0x7a47('0x18')]]){_0x494c3e[_0x37d749[_0x7a47('0x14')]]=_0x1d442f[_0x37d749[_0x7a47('0x18')]]['toString']();}else if(_0x37d749[_0x7a47('0x13')]===_0x7a47('0x19')&&_0x37d749['Variable']&&_0x37d749['Variable'][_0x7a47('0x1a')]&&_0x37d749[_0x7a47('0x14')]&&_0x1d442f[_0x37d749[_0x7a47('0x1b')]['name'][_0x7a47('0x1c')]()]){_0x494c3e[_0x37d749['idField']]=_0x1d442f[_0x37d749[_0x7a47('0x1b')][_0x7a47('0x1a')][_0x7a47('0x1c')]()][_0x7a47('0x16')]();}});}return _0x494c3e;}function getName(_0x160d28){if(_0x160d28[_0x7a47('0x1d')]('\x20')>0x0){var _0x3e7cc7=_0x160d28[_0x7a47('0x1e')](/ (.+)/);if(_0x3e7cc7[0x1]){return _0x3e7cc7;}}return[_0x160d28,_0x160d28];}var accountsTokens={};function getAccessToken(_0x46e58d){return new Promise(function(_0x500204,_0x192b20){if(!_[_0x7a47('0x1f')](accountsTokens[_0x46e58d['id']])&&!_[_0x7a47('0x1f')](accountsTokens[_0x46e58d['id']][_0x7a47('0x20')])){if(moment()[_0x7a47('0x21')](accountsTokens[_0x46e58d['id']][_0x7a47('0x22')])){_0x500204(accountsTokens[_0x46e58d['id']][_0x7a47('0x20')]);}}var _0x267ef6;switch(_0x46e58d[_0x7a47('0x23')]){case'US':_0x267ef6=_0x7a47('0x24');break;case'AU':_0x267ef6=_0x7a47('0x25');break;case'EU':_0x267ef6=_0x7a47('0x26');break;case'IN':_0x267ef6='https://accounts.zoho.in';break;case'CN':_0x267ef6='https://accounts.zoho.com.cn';break;default:_0x267ef6=_0x7a47('0x26');break;}var _0x2c2c43={'method':_0x7a47('0x27'),'uri':_0x267ef6+_0x7a47('0x28'),'qs':{'refresh_token':_0x46e58d['refreshToken'],'client_id':_0x46e58d[_0x7a47('0x29')],'client_secret':_0x46e58d[_0x7a47('0x2a')],'grant_type':'refresh_token'},'json':!![]};return rp(_0x2c2c43)[_0x7a47('0x2b')](function(_0x324a85){accountsTokens[_0x46e58d['id']]={'access_token':_0x324a85[_0x7a47('0x20')],'expires_in':moment()[_0x7a47('0x2c')](_0x324a85[_0x7a47('0x22')],'seconds')};_0x500204(_0x324a85[_0x7a47('0x20')]);})[_0x7a47('0x2d')](function(_0xfd4c1a){logger[_0x7a47('0x2e')]('Failing\x20creating\x20the\x20access_token',_0xfd4c1a['stack']);_0x192b20(_0xfd4c1a);});});}function getUser(_0x5d4b9c,_0x56a3ff,_0x4551aa,_0x437486){logger[_0x7a47('0x2f')](_0x7a47('0x30'));return request({'method':_0x7a47('0x31'),'uri':util[_0x7a47('0x32')](_0x7a47('0x33'),_0x56a3ff),'qs':{'type':_0x7a47('0x34')},'headers':{'Authorization':_0x7a47('0x35')+_0x5d4b9c},'json':!![]})[_0x7a47('0x2b')](function(_0x372960){if(_0x372960[_0x7a47('0x36')]){var _0x51d0ad=-0x1;if(_[_0x7a47('0x37')](_0x372960[_0x7a47('0x36')])){if(!_[_0x7a47('0x1f')](_0x437486)){_0x51d0ad=_[_0x7a47('0x38')](_0x372960[_0x7a47('0x36')],function(_0x4b40b8){return _0x4b40b8[_0x7a47('0x39')]===_0x437486;});}if(_0x51d0ad>=0x0){logger[_0x7a47('0x2f')]('Agent\x20found!');}else{logger['info'](_0x7a47('0x3a'));_0x51d0ad=_['findIndex'](_0x372960[_0x7a47('0x36')],function(_0x2e2c7e){return _0x2e2c7e[_0x7a47('0x3b')][_0x7a47('0x1a')]===_0x7a47('0x3c');});}return _0x372960[_0x7a47('0x36')][_0x51d0ad];}else{if(_0x372960[_0x7a47('0x3d')][_0x7a47('0x3b')][_0x7a47('0x1a')]===_0x7a47('0x3c')){logger[_0x7a47('0x2f')]('Using\x20the\x20admin\x20account!');user=_0x372960[_0x7a47('0x3d')];return user;}else{logger['error'](_0x7a47('0x3e'),JSON[_0x7a47('0xe')](_0x372960));throw new Error(_0x7a47('0x3f')+JSON[_0x7a47('0xe')](_0x372960));}}}else{logger[_0x7a47('0x2e')](_0x7a47('0x3e'),JSON['stringify'](_0x372960));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0x7a47('0xe')](_0x372960));}})[_0x7a47('0x2d')](function(_0x4ce193){console['error'](_0x4ce193);});}function getZohoUser(_0x250a6f,_0xbb4c2c){return new BPromise(function(_0x160e1c,_0x4ef8bd){request(_0x250a6f)[_0x7a47('0x2b')](function(_0x42cb51){var _0x558034=null;if(_0x42cb51){_0x558034=_0x42cb51[_0x7a47('0x40')][0x0];_0x558034[_0x7a47('0x41')]=_0xbb4c2c;}_0x160e1c(_0x558034);})[_0x7a47('0x2d')](function(_0x617232){_0x4ef8bd(_0x617232);});});}function createEndUser(_0x458430,_0x1df688,_0x2a3319,_0x41fe24,_0x343dab,_0x3c0230){var _0x2a3319=getName(_0x2a3319);return request({'method':_0x7a47('0x27'),'uri':_0x7a47('0x42')+_0x1df688+_0x7a47('0x43')+_[_0x7a47('0x44')](_0x3c0230['moduleCreate'])+'s','body':{'data':[{'Last_Name':_0x2a3319[0x1],'First_Name':_0x2a3319[0x0],'Phone':_0x41fe24,'Owner':{'name':!_[_0x7a47('0x1f')](_0x343dab[_0x7a47('0x45')][_0x7a47('0x1a')])?_0x343dab[_0x7a47('0x45')]['name']:!_[_0x7a47('0x1f')](_0x343dab[_0x7a47('0x46')])?_0x343dab[_0x7a47('0x46')]+'\x20'+_0x343dab[_0x7a47('0x47')]:_0x343dab['last_name'],'id':_0x343dab['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x458430},'json':!![]})[_0x7a47('0x2b')](function(_0x898ad5){if(_0x898ad5&&_0x898ad5[_0x7a47('0x40')][0x0][_0x7a47('0x48')]===_0x7a47('0x49')){var _0x3209cc=_0x898ad5[_0x7a47('0x40')][0x0]['details'];_0x3209cc['enduserType']=_[_0x7a47('0x44')](_0x3c0230[_0x7a47('0x4a')])+'s';return _0x3209cc;}logger[_0x7a47('0x2e')](_0x7a47('0x3e'),JSON[_0x7a47('0xe')](data));throw new Error('Error:\x20'+JSON['stringify'](data));})['catch'](function(_0x4235c6){console[_0x7a47('0x4b')]('CREATE\x20ERROR',_0x4235c6);});}function getEndUser(_0x5ef770,_0x1221e7,_0x30d434,_0x2b134f,_0x26fd04,_0x227ed0,_0xe35dfe){var _0x1276e6={'method':_0x7a47('0x31'),'uri':'','headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x5ef770},'json':!![]};switch(_0xe35dfe['moduleSearch']){case _0x7a47('0x4c'):_0x1276e6[_0x7a47('0x4d')]=_0x7a47('0x42')+_0x1221e7+_0x7a47('0x4e')+_0x26fd04+'))';return getZohoUser(_0x1276e6,'Contacts')[_0x7a47('0x2b')](function(_0x1191ca){if(_0x1191ca)return _0x1191ca;_0x1276e6[_0x7a47('0x4d')]='https://www.zohoapis.'+_0x1221e7+_0x7a47('0x4f')+_0x26fd04+'))';return getZohoUser(_0x1276e6,_0x7a47('0x50'))[_0x7a47('0x2b')](function(_0x4cecfc){if(_0x4cecfc)return _0x4cecfc;if(_0xe35dfe[_0x7a47('0x4a')]!=_0x7a47('0x51')){return createEndUser(_0x5ef770,_0x1221e7,_0x2b134f,_0x26fd04,_0x227ed0,_0xe35dfe);}else{return{};}});});break;case'contact':_0x1276e6[_0x7a47('0x4d')]=_0x7a47('0x42')+_0x1221e7+'/crm/v2/Contacts/search?criteria=((Phone:equals:'+_0x26fd04+'))';return getZohoUser(_0x1276e6,'Contacts')['then'](function(_0x29d390){if(_0x29d390)return _0x29d390;if(_0xe35dfe[_0x7a47('0x4a')]!=_0x7a47('0x51')){return createEndUser(_0x5ef770,_0x1221e7,_0x2b134f,_0x26fd04,_0x227ed0,_0xe35dfe);}else{return{};}});break;case _0x7a47('0x52'):_0x1276e6[_0x7a47('0x4d')]=_0x7a47('0x42')+_0x1221e7+'/crm/v2/Leads/search?criteria=((Phone:equals:'+_0x26fd04+'))';return getZohoUser(_0x1276e6,_0x7a47('0x50'))['then'](function(_0x41d9e5){if(_0x41d9e5)return _0x41d9e5;if(_0xe35dfe[_0x7a47('0x4a')]!=_0x7a47('0x51')){return createEndUser(_0x5ef770,_0x1221e7,_0x2b134f,_0x26fd04,_0x227ed0,_0xe35dfe);}else{return{};}});break;}}function getCall(_0x259ee7,_0x2958d0,_0x15de61,_0x460adc,_0x9d0605,_0x597314,_0x378d8c,_0x5f4845){logger[_0x7a47('0x2f')](_0x7a47('0x53'));var _0x18d230={};_0x18d230[_0x7a47('0x54')]={'name':!_['isNil'](_0x460adc[_0x7a47('0x45')]['name'])&&!_[_0x7a47('0x1f')](_0x460adc['profile'][_0x7a47('0x1a')])&&_0x460adc[_0x7a47('0x3b')][_0x7a47('0x1a')]===_0x7a47('0x55')?_0x460adc['role'][_0x7a47('0x1a')]:!_['isNil'](_0x460adc[_0x7a47('0x46')])?_0x460adc['first_name']+'\x20'+_0x460adc[_0x7a47('0x47')]:_0x460adc['last_name'],'id':_0x460adc['id']};_0x18d230['Subject']=intUtil['getString'](_0x597314[_0x7a47('0x56')],_0x378d8c,'\x20');_0x18d230[_0x7a47('0x57')]=intUtil[_0x7a47('0x58')](_0x597314[_0x7a47('0x59')],_0x378d8c,'\x0a');if(_0x9d0605['enduserType']===_0x7a47('0x5a')){_0x18d230[_0x7a47('0x5b')]={'name':!_[_0x7a47('0x1f')](_0x9d0605[_0x7a47('0x5c')])?_0x9d0605[_0x7a47('0x5c')]:!_[_0x7a47('0x1f')](_0x9d0605['First_Name'])?_0x9d0605[_0x7a47('0x5d')]+'\x20'+_0x9d0605[_0x7a47('0x5e')]:_0x9d0605[_0x7a47('0x5e')],'id':_0x9d0605['id']};}if(_0x9d0605[_0x7a47('0x41')]==='Leads'){_0x18d230[_0x7a47('0x5f')]={'name':!_[_0x7a47('0x1f')](_0x9d0605[_0x7a47('0x5c')])?_0x9d0605['Full_Name']:!_['isNil'](_0x9d0605[_0x7a47('0x5d')])?_0x9d0605[_0x7a47('0x5d')]+'\x20'+_0x9d0605[_0x7a47('0x5e')]:_0x9d0605[_0x7a47('0x5e')],'id':_0x9d0605['id']};_0x18d230[_0x7a47('0x60')]=_[_0x7a47('0x44')](_0x9d0605[_0x7a47('0x41')]);}if(_0x378d8c[_0x7a47('0x61')]){_0x18d230[_0x7a47('0x62')]=moment['utc'](parseInt(_0x378d8c[_0x7a47('0x61')])*0x3e8)[_0x7a47('0x32')](_0x7a47('0x63'));}else if(_0x378d8c[_0x7a47('0x64')]&&_0x378d8c[_0x7a47('0x65')]){_0x18d230[_0x7a47('0x62')]=moment[_0x7a47('0x66')](moment(_0x378d8c['endtime'],'YYYY-MM-DDTHH:mm:ss')['diff'](moment(_0x378d8c[_0x7a47('0x67')],_0x7a47('0x68'))))[_0x7a47('0x32')]('mm:ss');}switch(_0x378d8c[_0x7a47('0x69')]){case'called':_0x18d230[_0x7a47('0x6a')]=_0x7a47('0x6b');break;case _0x7a47('0x6c'):case _0x7a47('0x6d'):_0x18d230['Call_Result']=_0x7a47('0x6e');break;case _0x7a47('0x6f'):_0x18d230['Call_Result']=_0x7a47('0x70');break;case _0x7a47('0x71'):_0x18d230[_0x7a47('0x6a')]='Abandoned';break;case _0x7a47('0x72'):_0x18d230[_0x7a47('0x6a')]=_0x7a47('0x73');default:}_0x18d230[_0x7a47('0x74')]=(_0x5f4845==='outbound'?moment(_0x378d8c[_0x7a47('0x67')])['format']('YYYY-MM-DDTHH:mm:ss'):moment(_0x378d8c[_0x7a47('0x75')])[_0x7a47('0x32')](_0x7a47('0x68')))||moment()[_0x7a47('0x32')]('YYYY-MM-DDTHH:mm:ss');_0x18d230[_0x7a47('0x76')]=_0x5f4845||_0x7a47('0x77');_0x18d230=_[_0x7a47('0x78')](_0x18d230,getCustomFields(_0x597314[_0x7a47('0x79')],_0x378d8c));return request({'method':_0x7a47('0x27'),'uri':_0x7a47('0x42')+_0x2958d0+_0x7a47('0x7a'),'headers':{'Authorization':_0x7a47('0x35')+_0x259ee7},'body':{'data':[_0x18d230]},'json':!![]})[_0x7a47('0x2b')](function(_0x3eb141){if(_0x3eb141&&_0x3eb141[_0x7a47('0x40')][0x0][_0x7a47('0x48')]==='SUCCESS'){logger['info'](_0x7a47('0x7b'));return{'id':_0x3eb141[_0x7a47('0x40')][0x0][_0x7a47('0x7c')]['id']};}})['catch'](function(_0x4b3926){logger[_0x7a47('0x2f')]('err',_0x4b3926[_0x7a47('0x7d')]);console['log'](_0x7a47('0x7e'),_0x4b3926);});}exports[_0x7a47('0x7f')]=function(_0x44da5e,_0x59d8ff,_0x36eff6,_0x386b58,_0xc619f2,_0x165851){var _0x527140,_0x21e1ab,_0x1dc29f;_0x165851[_0x7a47('0x80')]=intUtil[_0x7a47('0x81')](_0x165851[_0x7a47('0x80')]);_0x165851['serverUrl']=intUtil[_0x7a47('0x81')](_0x165851[_0x7a47('0x82')]);if(_0xc619f2&&_0xc619f2['monitor_format']){logger[_0x7a47('0x2f')](_0x7a47('0x83'),_0x7a47('0x84'));_0x59d8ff['recordingURL']=_0x165851[_0x7a47('0x82')]+'/api/voice/recordings/'+_0x59d8ff['uniqueid']+_0x7a47('0x85')+md5(_0x59d8ff[_0x7a47('0x86')]);}else{_0x59d8ff[_0x7a47('0x87')]='';}var _0x4a6a60=_0x165851[_0x7a47('0x80')]===_0x7a47('0x88')?'eu':'com';return getAccessToken(_0x165851)[_0x7a47('0x2b')](function(_0x4d27f5){_0x1dc29f=_0x4d27f5;return getUser(_0x1dc29f,_0x4a6a60,_0x165851,_0x386b58['email']);})[_0x7a47('0x2b')](function(_0x377a83){_0x527140=_0x377a83;logger[_0x7a47('0x2f')](_0x7a47('0x89'),_0x527140['id']);return getEndUser(_0x1dc29f,_0x4a6a60,_0x165851,_0x59d8ff[_0x7a47('0x8a')],_0x59d8ff[_0x7a47('0x8b')],_0x527140,_0x36eff6);})['then'](function(_0x356385){_0x21e1ab=_0x356385;return getCall(_0x1dc29f,_0x4a6a60,_0x165851,_0x527140,_0x21e1ab,_0x36eff6,_0x59d8ff,'Inbound');})[_0x7a47('0x2b')](function(_0x3d65cb){if(_0x3d65cb){logger[_0x7a47('0x2f')]('The\x20Call\x20ID\x20is:',_0x3d65cb['id']);logger[_0x7a47('0x2f')](_0x7a47('0x83'),_0x7a47('0x8c'));emit(util[_0x7a47('0x32')](_0x7a47('0x8d'),_0x386b58[_0x7a47('0x1a')]),_0x7a47('0x8e'),{'uri':_0x7a47('0x8f')+_0x165851[_0x7a47('0x80')]+_0x7a47('0x90')+_0x3d65cb['id']});}})[_0x7a47('0x2d')](function(_0x2d702d){logger[_0x7a47('0x2e')](_0x7a47('0x83'),JSON[_0x7a47('0xe')](_0x2d702d));});};exports[_0x7a47('0x91')]=function(_0x9d456,_0x201f0b,_0x2ddc52,_0x17985e,_0x56c5d6,_0x505e45,_0x3ed1d1){var _0x4f5e0b,_0x20f301,_0x458969;_0x505e45[_0x7a47('0x80')]=intUtil[_0x7a47('0x81')](_0x505e45[_0x7a47('0x80')]);_0x505e45[_0x7a47('0x82')]=intUtil[_0x7a47('0x81')](_0x505e45[_0x7a47('0x82')]);if(_0x3ed1d1&&_0x3ed1d1[_0x7a47('0x92')]&&_0x3ed1d1[_0x7a47('0x92')]!=='none'){logger[_0x7a47('0x2f')](_0x7a47('0x93'),'Recording\x20is\x20enabled!');_0x201f0b[_0x7a47('0x87')]=_0x505e45[_0x7a47('0x82')]+_0x7a47('0x94')+_0x201f0b[_0x7a47('0x86')]+_0x7a47('0x85')+md5(_0x201f0b[_0x7a47('0x86')]);}var _0xb03b19=_0x505e45[_0x7a47('0x80')]===_0x7a47('0x88')?'eu':_0x7a47('0x95');return getAccessToken(_0x505e45)[_0x7a47('0x2b')](function(_0x8546aa){_0x458969=_0x8546aa;return getUser(_0x458969,_0xb03b19,_0x505e45,_0x17985e[_0x7a47('0x39')]);})[_0x7a47('0x2b')](function(_0x311e2c){_0x4f5e0b=_0x311e2c;logger[_0x7a47('0x2f')]('The\x20User\x20ID\x20is:',_0x4f5e0b['id']);return getEndUser(_0x458969,_0xb03b19,_0x505e45,_0x201f0b[_0x7a47('0x96')],_0x201f0b[_0x7a47('0x97')],_0x4f5e0b,_0x2ddc52);})[_0x7a47('0x2b')](function(_0x5f0786){_0x20f301=_0x5f0786;return getCall(_0x458969,_0xb03b19,_0x505e45,_0x4f5e0b,_0x20f301,_0x2ddc52,_0x201f0b,'Outbound');})[_0x7a47('0x2b')](function(_0x109125){if(_0x109125){logger['info'](_0x7a47('0x98'),_0x109125['id']);logger[_0x7a47('0x2f')](_0x7a47('0x93'),'Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...');emit(util[_0x7a47('0x32')](_0x7a47('0x8d'),_0x17985e[_0x7a47('0x1a')]),_0x7a47('0x8e'),{'uri':_0x7a47('0x8f')+_0x505e45[_0x7a47('0x80')]+_0x7a47('0x90')+_0x109125['id']});}})[_0x7a47('0x2d')](function(_0x171b4c){logger[_0x7a47('0x2e')]('[OUTBOUND]',JSON['stringify'](_0x171b4c));});};exports[_0x7a47('0x99')]=function(_0x302a0d,_0x12c5d3,_0x34dfc8,_0x4c0800,_0x283794,_0x49eb2c){var _0x2f2ade,_0x320bb9,_0x477f7b;_0x49eb2c[_0x7a47('0x80')]=intUtil['stripTrailingSlash'](_0x49eb2c[_0x7a47('0x80')]);_0x49eb2c[_0x7a47('0x82')]=intUtil[_0x7a47('0x81')](_0x49eb2c[_0x7a47('0x82')]);if(_0x283794&&_0x283794[_0x7a47('0x9a')]){logger[_0x7a47('0x2f')]('['+_0x12c5d3[_0x7a47('0x69')][_0x7a47('0x9b')]()+']','Recording\x20is\x20enabled!');_0x12c5d3['recordingURL']=_0x49eb2c[_0x7a47('0x82')]+_0x7a47('0x94')+_0x12c5d3[_0x7a47('0x86')]+_0x7a47('0x85')+md5(_0x12c5d3[_0x7a47('0x86')]);}else{_0x12c5d3[_0x7a47('0x87')]='';}var _0x3536c7=_0x49eb2c[_0x7a47('0x80')]===_0x7a47('0x88')?'eu':_0x7a47('0x95');return getAccessToken(_0x49eb2c)[_0x7a47('0x2b')](function(_0x4db6de){_0x477f7b=_0x4db6de;return getUser(_0x477f7b,_0x3536c7,_0x49eb2c);})[_0x7a47('0x2b')](function(_0x3b5925){_0x2f2ade=_0x3b5925;logger[_0x7a47('0x2f')](_0x7a47('0x89'),_0x2f2ade['id']);return getEndUser(_0x477f7b,_0x3536c7,_0x49eb2c,_0x12c5d3[_0x7a47('0x8a')],_0x12c5d3[_0x7a47('0x8b')],_0x2f2ade,_0x34dfc8);})['then'](function(_0x30477b){_0x320bb9=_0x30477b;return getCall(_0x477f7b,_0x3536c7,_0x49eb2c,_0x2f2ade,_0x320bb9,_0x34dfc8,_0x12c5d3,_0x7a47('0x77'));})[_0x7a47('0x2b')](function(_0x1a6f97){if(_0x1a6f97){logger[_0x7a47('0x2f')]('The\x20Call\x20ID\x20is:',_0x1a6f97['id']);}})[_0x7a47('0x2d')](function(_0x4a0e36){logger[_0x7a47('0x2e')]('['+_0x12c5d3[_0x7a47('0x69')]['toUpperCase']()+']',JSON[_0x7a47('0xe')](_0x4a0e36));});};
\ No newline at end of file
+var _0x1c63=['stringify','length','includes','picklist','type','idField','content','toString','variable','variableName','customVariable','Variable','name','toLowerCase','indexOf','split','access_token','isBefore','expires_in','https://accounts.zoho.com','https://accounts.zoho.com.au','https://accounts.zoho.eu','https://accounts.zoho.in','https://accounts.zoho.com.cn','/oauth/v2/token','clientId','refresh_token','seconds','catch','stack','info','Search\x20user','format','Zoho-oauthtoken\x20','then','users','isNil','Using\x20the\x20admin\x20account!','findIndex','profile','Administrator','user','error','The\x20failing\x20result\x20is','Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20','data','enduserType','POST','startCase','moduleCreate','role','first_name','last_name','code','details','Error:\x20','log','CREATE\x20ERROR','GET','moduleSearch','contact_lead','https://www.zohoapis.','/crm/v2/Contacts/search?criteria=((Phone:equals:','Contacts','/crm/v2/Leads/search?criteria=((Phone:equals:','Leads','nothing','contact','uri','lead','Creating\x20new\x20call...','Subject','getString','Description','Descriptions','Who_Id','Full_Name','First_Name','Last_Name','What_Id','$se_module','talktime','utc','mm:ss','answertime','endtime','Call_Duration','YYYY-MM-DDTHH:mm:ss','diff','complete','Call_Result','Answered','rejected','abandoned','Abandoned','timeout','Timeout','Call_Start_Time','starttime','agentcalledAt','Call_Type','Inbound','merge','Fields','/crm/v2/Calls','SUCCESS','Call\x20created!','err','queue','host','stripTrailingSlash','serverUrl','monitor_format','[QUEUE]','recordingURL','/api/voice/recordings/','uniqueid','/downloads?type=uniqueid&token=','zoho.eu','com','email','The\x20User\x20ID\x20is:','calleridnum','The\x20Call\x20ID\x20is:','Displaying\x20call\x20to\x20agent\x20in\x20a\x20new\x20tab...','user:%s','trigger:browser:url','https://crm.','/crm/EntityInfo.do?module=Calls&id=','recordingFormat','none','Recording\x20is\x20enabled!','destcalleridnum','Outbound','[OUTBOUND]','lastevent','calleridname','toUpperCase','lodash','request-promise','md5','util','moment','ioredis','bluebird','../../../../config/environment','../../../../config/logger','zoho','redis','localhost','socket.io-emitter','emit','debug','[HTTP]'];(function(_0x77a0c1,_0x400923){var _0x1db8b8=function(_0x10d393){while(--_0x10d393){_0x77a0c1['push'](_0x77a0c1['shift']());}};_0x1db8b8(++_0x400923);}(_0x1c63,0x124));var _0x31c6=function(_0x1be448,_0x1fb778){_0x1be448=_0x1be448-0x0;var _0x39a54d=_0x1c63[_0x1be448];return _0x39a54d;};'use strict';var _=require(_0x31c6('0x0'));var rp=require(_0x31c6('0x1'));var md5=require(_0x31c6('0x2'));var util=require(_0x31c6('0x3'));var intUtil=require('./util');var moment=require(_0x31c6('0x4'));var Redis=require(_0x31c6('0x5'));var BPromise=require(_0x31c6('0x6'));var config=require(_0x31c6('0x7'));var logger=require(_0x31c6('0x8'))(_0x31c6('0x9'));config[_0x31c6('0xa')]=_['defaults'](config[_0x31c6('0xa')],{'host':_0x31c6('0xb'),'port':0x18eb});var io=require(_0x31c6('0xc'))(new Redis(config['redis']));function emit(_0x2307c8,_0x40b7d8,_0x4f56cf){io['to'](_0x2307c8)[_0x31c6('0xd')](_0x40b7d8,_0x4f56cf);}function request(_0x4d354c){logger[_0x31c6('0xe')](_0x31c6('0xf'),JSON[_0x31c6('0x10')](_0x4d354c));return rp(_0x4d354c);}function getCustomFields(_0x152b18,_0x46a744){var _0x2d2902={};if(_0x152b18[_0x31c6('0x11')]>0x0){_['forEach'](_0x152b18,function(_0x4dd66e){if(_[_0x31c6('0x12')](['string',_0x31c6('0x13')],_0x4dd66e[_0x31c6('0x14')])&&_0x4dd66e[_0x31c6('0x15')]){_0x2d2902[_0x4dd66e['idField']]=_0x4dd66e[_0x31c6('0x16')][_0x31c6('0x17')]();}else if(_0x4dd66e[_0x31c6('0x14')]===_0x31c6('0x18')&&_0x4dd66e[_0x31c6('0x19')]&&_0x4dd66e['idField']&&_0x46a744[_0x4dd66e[_0x31c6('0x19')]]){_0x2d2902[_0x4dd66e['idField']]=_0x46a744[_0x4dd66e[_0x31c6('0x19')]][_0x31c6('0x17')]();}else if(_0x4dd66e['type']===_0x31c6('0x1a')&&_0x4dd66e['Variable']&&_0x4dd66e[_0x31c6('0x1b')][_0x31c6('0x1c')]&&_0x4dd66e[_0x31c6('0x15')]&&_0x46a744[_0x4dd66e[_0x31c6('0x1b')][_0x31c6('0x1c')][_0x31c6('0x1d')]()]){_0x2d2902[_0x4dd66e['idField']]=_0x46a744[_0x4dd66e[_0x31c6('0x1b')][_0x31c6('0x1c')][_0x31c6('0x1d')]()][_0x31c6('0x17')]();}});}return _0x2d2902;}function getName(_0x5f0fcc){if(_0x5f0fcc[_0x31c6('0x1e')]('\x20')>0x0){var _0x188e3a=_0x5f0fcc[_0x31c6('0x1f')](/ (.+)/);if(_0x188e3a[0x1]){return _0x188e3a;}}return[_0x5f0fcc,_0x5f0fcc];}var accountsTokens={};function getAccessToken(_0x21ebc4){return new Promise(function(_0x5e5c5e,_0xe8ec42){if(!_['isNil'](accountsTokens[_0x21ebc4['id']])&&!_['isNil'](accountsTokens[_0x21ebc4['id']][_0x31c6('0x20')])){if(moment()[_0x31c6('0x21')](accountsTokens[_0x21ebc4['id']][_0x31c6('0x22')])){_0x5e5c5e(accountsTokens[_0x21ebc4['id']]['access_token']);}}var _0x7d03a4;switch(_0x21ebc4['zone']){case'US':_0x7d03a4=_0x31c6('0x23');break;case'AU':_0x7d03a4=_0x31c6('0x24');break;case'EU':_0x7d03a4=_0x31c6('0x25');break;case'IN':_0x7d03a4=_0x31c6('0x26');break;case'CN':_0x7d03a4=_0x31c6('0x27');break;default:_0x7d03a4=_0x31c6('0x25');break;}var _0x1fce94={'method':'POST','uri':_0x7d03a4+_0x31c6('0x28'),'qs':{'refresh_token':_0x21ebc4['refreshToken'],'client_id':_0x21ebc4[_0x31c6('0x29')],'client_secret':_0x21ebc4['clientSecret'],'grant_type':_0x31c6('0x2a')},'json':!![]};return rp(_0x1fce94)['then'](function(_0x170de8){accountsTokens[_0x21ebc4['id']]={'access_token':_0x170de8[_0x31c6('0x20')],'expires_in':moment()['add'](_0x170de8[_0x31c6('0x22')],_0x31c6('0x2b'))};_0x5e5c5e(_0x170de8[_0x31c6('0x20')]);})[_0x31c6('0x2c')](function(_0x2e7e29){logger['error']('Failing\x20creating\x20the\x20access_token',_0x2e7e29[_0x31c6('0x2d')]);_0xe8ec42(_0x2e7e29);});});}function getUser(_0x1d9487,_0x435bfc,_0x5c02ad,_0x229171){logger[_0x31c6('0x2e')](_0x31c6('0x2f'));return request({'method':'GET','uri':util[_0x31c6('0x30')]('https://www.zohoapis.%s/crm/v2/users',_0x435bfc),'qs':{'type':'ActiveUsers'},'headers':{'Authorization':_0x31c6('0x31')+_0x1d9487},'json':!![]})[_0x31c6('0x32')](function(_0x2598fb){if(_0x2598fb[_0x31c6('0x33')]){var _0xf1b2ef=-0x1;if(_['isArrayLikeObject'](_0x2598fb[_0x31c6('0x33')])){if(!_[_0x31c6('0x34')](_0x229171)){_0xf1b2ef=_['findIndex'](_0x2598fb['users'],function(_0x3811e7){return _0x3811e7['email']===_0x229171;});}if(_0xf1b2ef>=0x0){logger[_0x31c6('0x2e')]('Agent\x20found!');}else{logger['info'](_0x31c6('0x35'));_0xf1b2ef=_[_0x31c6('0x36')](_0x2598fb[_0x31c6('0x33')],function(_0x3a34ea){return _0x3a34ea[_0x31c6('0x37')][_0x31c6('0x1c')]===_0x31c6('0x38');});}return _0x2598fb[_0x31c6('0x33')][_0xf1b2ef];}else{if(_0x2598fb[_0x31c6('0x39')][_0x31c6('0x37')][_0x31c6('0x1c')]===_0x31c6('0x38')){logger[_0x31c6('0x2e')](_0x31c6('0x35'));user=_0x2598fb[_0x31c6('0x39')];return user;}else{logger[_0x31c6('0x3a')](_0x31c6('0x3b'),JSON[_0x31c6('0x10')](_0x2598fb));throw new Error('Unable\x20to\x20retrieve\x20zoho\x20account\x20users:\x20'+JSON[_0x31c6('0x10')](_0x2598fb));}}}else{logger[_0x31c6('0x3a')](_0x31c6('0x3b'),JSON['stringify'](_0x2598fb));throw new Error(_0x31c6('0x3c')+JSON[_0x31c6('0x10')](_0x2598fb));}})[_0x31c6('0x2c')](function(_0x16bb10){console['error'](_0x16bb10);});}function getZohoUser(_0x4fa196,_0x3bf9bb){return new BPromise(function(_0x71b5d4,_0x2b0219){request(_0x4fa196)[_0x31c6('0x32')](function(_0xf7d984){var _0x1955c8=null;if(_0xf7d984){_0x1955c8=_0xf7d984[_0x31c6('0x3d')][0x0];_0x1955c8[_0x31c6('0x3e')]=_0x3bf9bb;}_0x71b5d4(_0x1955c8);})[_0x31c6('0x2c')](function(_0x1f2684){_0x2b0219(_0x1f2684);});});}function createEndUser(_0x5b36dd,_0xe21859,_0x4c24ba,_0x3be55f,_0xd5de87,_0x5d5fa4){var _0x4c24ba=getName(_0x4c24ba);return request({'method':_0x31c6('0x3f'),'uri':'https://www.zohoapis.'+_0xe21859+'/crm/v2/'+_[_0x31c6('0x40')](_0x5d5fa4[_0x31c6('0x41')])+'s','body':{'data':[{'Last_Name':_0x4c24ba[0x1],'First_Name':_0x4c24ba[0x0],'Phone':_0x3be55f,'Owner':{'name':!_[_0x31c6('0x34')](_0xd5de87[_0x31c6('0x42')][_0x31c6('0x1c')])?_0xd5de87[_0x31c6('0x42')][_0x31c6('0x1c')]:!_[_0x31c6('0x34')](_0xd5de87[_0x31c6('0x43')])?_0xd5de87[_0x31c6('0x43')]+'\x20'+_0xd5de87[_0x31c6('0x44')]:_0xd5de87[_0x31c6('0x44')],'id':_0xd5de87['id']}}]},'headers':{'Authorization':'Zoho-oauthtoken\x20'+_0x5b36dd},'json':!![]})[_0x31c6('0x32')](function(_0x38053d){if(_0x38053d&&_0x38053d[_0x31c6('0x3d')][0x0][_0x31c6('0x45')]==='SUCCESS'){var _0x5bebe8=_0x38053d[_0x31c6('0x3d')][0x0][_0x31c6('0x46')];_0x5bebe8[_0x31c6('0x3e')]=_[_0x31c6('0x40')](_0x5d5fa4[_0x31c6('0x41')])+'s';return _0x5bebe8;}logger[_0x31c6('0x3a')](_0x31c6('0x3b'),JSON[_0x31c6('0x10')](data));throw new Error(_0x31c6('0x47')+JSON[_0x31c6('0x10')](data));})['catch'](function(_0x499f0b){console[_0x31c6('0x48')](_0x31c6('0x49'),_0x499f0b);});}function getEndUser(_0x4879bb,_0x289daa,_0x4f94ca,_0x217679,_0x4a2dff,_0x5c46ad,_0x190482){var _0x113219={'method':_0x31c6('0x4a'),'uri':'','headers':{'Authorization':_0x31c6('0x31')+_0x4879bb},'json':!![]};switch(_0x190482[_0x31c6('0x4b')]){case _0x31c6('0x4c'):_0x113219['uri']=_0x31c6('0x4d')+_0x289daa+_0x31c6('0x4e')+_0x4a2dff+'))';return getZohoUser(_0x113219,_0x31c6('0x4f'))[_0x31c6('0x32')](function(_0x4fdd57){if(_0x4fdd57)return _0x4fdd57;_0x113219['uri']='https://www.zohoapis.'+_0x289daa+_0x31c6('0x50')+_0x4a2dff+'))';return getZohoUser(_0x113219,_0x31c6('0x51'))[_0x31c6('0x32')](function(_0xf264ad){if(_0xf264ad)return _0xf264ad;if(_0x190482[_0x31c6('0x41')]!=_0x31c6('0x52')){return createEndUser(_0x4879bb,_0x289daa,_0x217679,_0x4a2dff,_0x5c46ad,_0x190482);}else{return{};}});});break;case _0x31c6('0x53'):_0x113219[_0x31c6('0x54')]='https://www.zohoapis.'+_0x289daa+_0x31c6('0x4e')+_0x4a2dff+'))';return getZohoUser(_0x113219,_0x31c6('0x4f'))['then'](function(_0x3b7beb){if(_0x3b7beb)return _0x3b7beb;if(_0x190482[_0x31c6('0x41')]!=_0x31c6('0x52')){return createEndUser(_0x4879bb,_0x289daa,_0x217679,_0x4a2dff,_0x5c46ad,_0x190482);}else{return{};}});break;case _0x31c6('0x55'):_0x113219['uri']=_0x31c6('0x4d')+_0x289daa+_0x31c6('0x50')+_0x4a2dff+'))';return getZohoUser(_0x113219,_0x31c6('0x51'))['then'](function(_0x19e0fe){if(_0x19e0fe)return _0x19e0fe;if(_0x190482[_0x31c6('0x41')]!=_0x31c6('0x52')){return createEndUser(_0x4879bb,_0x289daa,_0x217679,_0x4a2dff,_0x5c46ad,_0x190482);}else{return{};}});break;}}function getCall(_0x32f20d,_0x39c60e,_0x37c0f5,_0x58e00a,_0x3f46b0,_0x1c48d7,_0x474c5e,_0x58b66b){logger[_0x31c6('0x2e')](_0x31c6('0x56'));var _0xa35d89={};_0xa35d89['Owner']={'name':!_[_0x31c6('0x34')](_0x58e00a[_0x31c6('0x42')][_0x31c6('0x1c')])&&!_[_0x31c6('0x34')](_0x58e00a[_0x31c6('0x37')]['name'])&&_0x58e00a[_0x31c6('0x37')][_0x31c6('0x1c')]==='administrator'?_0x58e00a[_0x31c6('0x42')][_0x31c6('0x1c')]:!_[_0x31c6('0x34')](_0x58e00a[_0x31c6('0x43')])?_0x58e00a[_0x31c6('0x43')]+'\x20'+_0x58e00a[_0x31c6('0x44')]:_0x58e00a[_0x31c6('0x44')],'id':_0x58e00a['id']};_0xa35d89[_0x31c6('0x57')]=intUtil[_0x31c6('0x58')](_0x1c48d7['Subjects'],_0x474c5e,'\x20');_0xa35d89[_0x31c6('0x59')]=intUtil[_0x31c6('0x58')](_0x1c48d7[_0x31c6('0x5a')],_0x474c5e,'\x0a');if(_0x3f46b0['enduserType']==='Contacts'){_0xa35d89[_0x31c6('0x5b')]={'name':!_['isNil'](_0x3f46b0[_0x31c6('0x5c')])?_0x3f46b0[_0x31c6('0x5c')]:!_[_0x31c6('0x34')](_0x3f46b0[_0x31c6('0x5d')])?_0x3f46b0[_0x31c6('0x5d')]+'\x20'+_0x3f46b0[_0x31c6('0x5e')]:_0x3f46b0[_0x31c6('0x5e')],'id':_0x3f46b0['id']};}if(_0x3f46b0[_0x31c6('0x3e')]===_0x31c6('0x51')){_0xa35d89[_0x31c6('0x5f')]={'name':!_['isNil'](_0x3f46b0['Full_Name'])?_0x3f46b0[_0x31c6('0x5c')]:!_[_0x31c6('0x34')](_0x3f46b0[_0x31c6('0x5d')])?_0x3f46b0[_0x31c6('0x5d')]+'\x20'+_0x3f46b0['Last_Name']:_0x3f46b0[_0x31c6('0x5e')],'id':_0x3f46b0['id']};_0xa35d89[_0x31c6('0x60')]=_[_0x31c6('0x40')](_0x3f46b0[_0x31c6('0x3e')]);}if(_0x474c5e[_0x31c6('0x61')]){_0xa35d89['Call_Duration']=moment[_0x31c6('0x62')](parseInt(_0x474c5e[_0x31c6('0x61')])*0x3e8)[_0x31c6('0x30')](_0x31c6('0x63'));}else if(_0x474c5e[_0x31c6('0x64')]&&_0x474c5e[_0x31c6('0x65')]){_0xa35d89[_0x31c6('0x66')]=moment['utc'](moment(_0x474c5e[_0x31c6('0x65')],_0x31c6('0x67'))[_0x31c6('0x68')](moment(_0x474c5e['starttime'],'YYYY-MM-DDTHH:mm:ss')))['format'](_0x31c6('0x63'));}switch(_0x474c5e['lastevent']){case'called':_0xa35d89['Call_Result']='Called';break;case _0x31c6('0x69'):case'connect':_0xa35d89[_0x31c6('0x6a')]=_0x31c6('0x6b');break;case _0x31c6('0x6c'):_0xa35d89[_0x31c6('0x6a')]='Rejected';break;case _0x31c6('0x6d'):_0xa35d89[_0x31c6('0x6a')]=_0x31c6('0x6e');break;case _0x31c6('0x6f'):_0xa35d89[_0x31c6('0x6a')]=_0x31c6('0x70');default:}_0xa35d89[_0x31c6('0x71')]=(_0x58b66b==='outbound'?moment(_0x474c5e[_0x31c6('0x72')])[_0x31c6('0x30')](_0x31c6('0x67')):moment(_0x474c5e[_0x31c6('0x73')])[_0x31c6('0x30')](_0x31c6('0x67')))||moment()[_0x31c6('0x30')]('YYYY-MM-DDTHH:mm:ss');_0xa35d89[_0x31c6('0x74')]=_0x58b66b||_0x31c6('0x75');_0xa35d89=_[_0x31c6('0x76')](_0xa35d89,getCustomFields(_0x1c48d7[_0x31c6('0x77')],_0x474c5e));return request({'method':'POST','uri':_0x31c6('0x4d')+_0x39c60e+_0x31c6('0x78'),'headers':{'Authorization':_0x31c6('0x31')+_0x32f20d},'body':{'data':[_0xa35d89]},'json':!![]})[_0x31c6('0x32')](function(_0x223e76){if(_0x223e76&&_0x223e76[_0x31c6('0x3d')][0x0][_0x31c6('0x45')]===_0x31c6('0x79')){logger[_0x31c6('0x2e')](_0x31c6('0x7a'));return{'id':_0x223e76[_0x31c6('0x3d')][0x0][_0x31c6('0x46')]['id']};}})['catch'](function(_0x520707){logger[_0x31c6('0x2e')](_0x31c6('0x7b'),_0x520707[_0x31c6('0x2d')]);console[_0x31c6('0x48')](_0x31c6('0x7b'),_0x520707);});}exports[_0x31c6('0x7c')]=function(_0x40b77d,_0x265c64,_0xf6c718,_0x5e38e6,_0x541b3c,_0x21d28e){var _0x5b7e23,_0xd4978c,_0x454bf2;_0x21d28e[_0x31c6('0x7d')]=intUtil[_0x31c6('0x7e')](_0x21d28e[_0x31c6('0x7d')]);_0x21d28e[_0x31c6('0x7f')]=intUtil[_0x31c6('0x7e')](_0x21d28e[_0x31c6('0x7f')]);if(_0x541b3c&&_0x541b3c[_0x31c6('0x80')]){logger[_0x31c6('0x2e')](_0x31c6('0x81'),'Recording\x20is\x20enabled!');_0x265c64[_0x31c6('0x82')]=_0x21d28e[_0x31c6('0x7f')]+_0x31c6('0x83')+_0x265c64[_0x31c6('0x84')]+_0x31c6('0x85')+md5(_0x265c64[_0x31c6('0x84')]);}else{_0x265c64['recordingURL']='';}var _0x3bdd5d=_0x21d28e[_0x31c6('0x7d')]===_0x31c6('0x86')?'eu':_0x31c6('0x87');return getAccessToken(_0x21d28e)[_0x31c6('0x32')](function(_0x2d6bb1){_0x454bf2=_0x2d6bb1;return getUser(_0x454bf2,_0x3bdd5d,_0x21d28e,_0x5e38e6[_0x31c6('0x88')]);})[_0x31c6('0x32')](function(_0x4207ae){_0x5b7e23=_0x4207ae;logger[_0x31c6('0x2e')](_0x31c6('0x89'),_0x5b7e23['id']);return getEndUser(_0x454bf2,_0x3bdd5d,_0x21d28e,_0x265c64['calleridname'],_0x265c64[_0x31c6('0x8a')],_0x5b7e23,_0xf6c718);})[_0x31c6('0x32')](function(_0x15ca08){_0xd4978c=_0x15ca08;return getCall(_0x454bf2,_0x3bdd5d,_0x21d28e,_0x5b7e23,_0xd4978c,_0xf6c718,_0x265c64,_0x31c6('0x75'));})[_0x31c6('0x32')](function(_0x384c77){if(_0x384c77){logger[_0x31c6('0x2e')](_0x31c6('0x8b'),_0x384c77['id']);logger[_0x31c6('0x2e')](_0x31c6('0x81'),_0x31c6('0x8c'));emit(util['format'](_0x31c6('0x8d'),_0x5e38e6[_0x31c6('0x1c')]),_0x31c6('0x8e'),{'uri':_0x31c6('0x8f')+_0x21d28e[_0x31c6('0x7d')]+_0x31c6('0x90')+_0x384c77['id']});}})[_0x31c6('0x2c')](function(_0x5c5928){logger[_0x31c6('0x3a')](_0x31c6('0x81'),JSON['stringify'](_0x5c5928));});};exports['outbound']=function(_0x356841,_0x4d4dec,_0x97ce31,_0x37d5b2,_0x48fec4,_0x28d468,_0x16eb2e){var _0x560cfd,_0xf40f1b,_0x50a8b3;_0x28d468[_0x31c6('0x7d')]=intUtil['stripTrailingSlash'](_0x28d468[_0x31c6('0x7d')]);_0x28d468[_0x31c6('0x7f')]=intUtil[_0x31c6('0x7e')](_0x28d468[_0x31c6('0x7f')]);if(_0x16eb2e&&_0x16eb2e[_0x31c6('0x91')]&&_0x16eb2e[_0x31c6('0x91')]!==_0x31c6('0x92')){logger[_0x31c6('0x2e')]('[OUTBOUND]',_0x31c6('0x93'));_0x4d4dec[_0x31c6('0x82')]=_0x28d468[_0x31c6('0x7f')]+_0x31c6('0x83')+_0x4d4dec[_0x31c6('0x84')]+_0x31c6('0x85')+md5(_0x4d4dec[_0x31c6('0x84')]);}var _0x5314cb=_0x28d468[_0x31c6('0x7d')]===_0x31c6('0x86')?'eu':_0x31c6('0x87');return getAccessToken(_0x28d468)[_0x31c6('0x32')](function(_0x8f4ff){_0x50a8b3=_0x8f4ff;return getUser(_0x50a8b3,_0x5314cb,_0x28d468,_0x37d5b2[_0x31c6('0x88')]);})[_0x31c6('0x32')](function(_0x78adc5){_0x560cfd=_0x78adc5;logger[_0x31c6('0x2e')](_0x31c6('0x89'),_0x560cfd['id']);return getEndUser(_0x50a8b3,_0x5314cb,_0x28d468,_0x4d4dec['destcalleridname'],_0x4d4dec[_0x31c6('0x94')],_0x560cfd,_0x97ce31);})[_0x31c6('0x32')](function(_0x3648c8){_0xf40f1b=_0x3648c8;return getCall(_0x50a8b3,_0x5314cb,_0x28d468,_0x560cfd,_0xf40f1b,_0x97ce31,_0x4d4dec,_0x31c6('0x95'));})[_0x31c6('0x32')](function(_0x3e88a2){if(_0x3e88a2){logger[_0x31c6('0x2e')](_0x31c6('0x8b'),_0x3e88a2['id']);logger[_0x31c6('0x2e')](_0x31c6('0x96'),_0x31c6('0x8c'));emit(util[_0x31c6('0x30')](_0x31c6('0x8d'),_0x37d5b2[_0x31c6('0x1c')]),_0x31c6('0x8e'),{'uri':_0x31c6('0x8f')+_0x28d468['host']+_0x31c6('0x90')+_0x3e88a2['id']});}})[_0x31c6('0x2c')](function(_0xba9af7){logger[_0x31c6('0x3a')](_0x31c6('0x96'),JSON['stringify'](_0xba9af7));});};exports['unmanaged']=function(_0x4a0621,_0x2de15f,_0x4dba22,_0x30c4d4,_0x2739d3,_0x9a66bc){var _0x385bae,_0x1cc575,_0x8c0373;_0x9a66bc[_0x31c6('0x7d')]=intUtil[_0x31c6('0x7e')](_0x9a66bc[_0x31c6('0x7d')]);_0x9a66bc['serverUrl']=intUtil[_0x31c6('0x7e')](_0x9a66bc[_0x31c6('0x7f')]);if(_0x2739d3&&_0x2739d3[_0x31c6('0x80')]){logger[_0x31c6('0x2e')]('['+_0x2de15f[_0x31c6('0x97')]['toUpperCase']()+']',_0x31c6('0x93'));_0x2de15f[_0x31c6('0x82')]=_0x9a66bc[_0x31c6('0x7f')]+_0x31c6('0x83')+_0x2de15f['uniqueid']+_0x31c6('0x85')+md5(_0x2de15f[_0x31c6('0x84')]);}else{_0x2de15f[_0x31c6('0x82')]='';}var _0x31073e=_0x9a66bc[_0x31c6('0x7d')]===_0x31c6('0x86')?'eu':_0x31c6('0x87');return getAccessToken(_0x9a66bc)[_0x31c6('0x32')](function(_0x54a585){_0x8c0373=_0x54a585;return getUser(_0x8c0373,_0x31073e,_0x9a66bc);})[_0x31c6('0x32')](function(_0x194025){_0x385bae=_0x194025;logger['info'](_0x31c6('0x89'),_0x385bae['id']);return getEndUser(_0x8c0373,_0x31073e,_0x9a66bc,_0x2de15f[_0x31c6('0x98')],_0x2de15f[_0x31c6('0x8a')],_0x385bae,_0x4dba22);})[_0x31c6('0x32')](function(_0x4f2e6d){_0x1cc575=_0x4f2e6d;return getCall(_0x8c0373,_0x31073e,_0x9a66bc,_0x385bae,_0x1cc575,_0x4dba22,_0x2de15f,_0x31c6('0x75'));})['then'](function(_0xaa2d32){if(_0xaa2d32){logger[_0x31c6('0x2e')]('The\x20Call\x20ID\x20is:',_0xaa2d32['id']);}})[_0x31c6('0x2c')](function(_0x439585){logger[_0x31c6('0x3a')]('['+_0x2de15f[_0x31c6('0x97')][_0x31c6('0x99')]()+']',JSON[_0x31c6('0x10')](_0x439585));});};
\ No newline at end of file
index 879fa2c..b1a3b38 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7fc0=['data3','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','shelljs','mustache','../../../../config/logger','trigger','exec','data2','Script'];(function(_0x263c17,_0x25b45b){var _0xebabe8=function(_0x3263ac){while(--_0x3263ac){_0x263c17['push'](_0x263c17['shift']());}};_0xebabe8(++_0x25b45b);}(_0x7fc0,0xf4));var _0x07fc=function(_0x4c432d,_0x435c91){_0x4c432d=_0x4c432d-0x0;var _0x4213b0=_0x7fc0[_0x4c432d];return _0x4213b0;};'use strict';var util=require(_0x07fc('0x0'));var sh=require(_0x07fc('0x1'));var Mustache=require(_0x07fc('0x2'));var logger=require(_0x07fc('0x3'))(_0x07fc('0x4'));exports[_0x07fc('0x5')]=function(_0x3a7233,_0x16d654){var _0xc817a1=_0x3a7233[_0x07fc('0x6')]?_0x3a7233[_0x07fc('0x6')]:_0x07fc('0x7');var _0x2243d7=_0x3a7233[_0x07fc('0x8')]?Mustache['render'](_0x3a7233[_0x07fc('0x8')],_0x16d654):_0x16d654;sh['exec'](_0x2243d7,function(_0x8ebce6,_0x54b4a1,_0x58dafa){if(_0x8ebce6!==0x0){logger[_0x07fc('0x9')](util[_0x07fc('0xa')](_0x07fc('0xb'),_0xc817a1,_0x2243d7,_0x8ebce6,_0x58dafa));}else{logger[_0x07fc('0xc')](util['format'](_0x07fc('0xd'),_0xc817a1,_0x2243d7,_0x54b4a1));}});};
\ No newline at end of file
+var _0x9bd6=['data3','render','error','format','%s\x20\x27%s\x27\x20failed\x20with\x20code\x20%d\x20and\x20error:\x20%s','info','%s\x20\x27%s\x27\x20succeeded\x20with\x20output:\x20%s','util','mustache','../../../../config/logger','trigger','exec','data2','Script'];(function(_0x2fb064,_0x4fffa0){var _0x1a3f36=function(_0x2a086b){while(--_0x2a086b){_0x2fb064['push'](_0x2fb064['shift']());}};_0x1a3f36(++_0x4fffa0);}(_0x9bd6,0xbd));var _0x69bd=function(_0x2f1643,_0x1fdce2){_0x2f1643=_0x2f1643-0x0;var _0x3b8b36=_0x9bd6[_0x2f1643];return _0x3b8b36;};'use strict';var util=require(_0x69bd('0x0'));var sh=require('shelljs');var Mustache=require(_0x69bd('0x1'));var logger=require(_0x69bd('0x2'))(_0x69bd('0x3'));exports[_0x69bd('0x4')]=function(_0x58c2ec,_0x22206f){var _0xfee1ae=_0x58c2ec['data2']?_0x58c2ec[_0x69bd('0x5')]:_0x69bd('0x6');var _0x464a51=_0x58c2ec[_0x69bd('0x7')]?Mustache[_0x69bd('0x8')](_0x58c2ec['data3'],_0x22206f):_0x22206f;sh[_0x69bd('0x4')](_0x464a51,function(_0x140114,_0xe67787,_0xaf9eb0){if(_0x140114!==0x0){logger[_0x69bd('0x9')](util[_0x69bd('0xa')](_0x69bd('0xb'),_0xfee1ae,_0x464a51,_0x140114,_0xaf9eb0));}else{logger[_0x69bd('0xc')](util['format'](_0x69bd('0xd'),_0xfee1ae,_0x464a51,_0xe67787));}});};
\ No newline at end of file
index e64ef4f..f3fa7d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf6e1=[',\x20request\x20body:\x20','object','info','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','catch','%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s','name','message','util','lodash','mustache','trigger','data1','toUpperCase','render','data5','number','headers','data6','parse','error','stack','GET','POST','PUT','data7','body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format','body','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','data2','then','isNil'];(function(_0x58b085,_0x13e96d){var _0x37d2c2=function(_0xeb40fa){while(--_0xeb40fa){_0x58b085['push'](_0x58b085['shift']());}};_0x37d2c2(++_0x13e96d);}(_0xf6e1,0x119));var _0x1f6e=function(_0x4988d1,_0x11ce15){_0x4988d1=_0x4988d1-0x0;var _0x6640a7=_0xf6e1[_0x4988d1];return _0x6640a7;};'use strict';var rp=require('request-promise');var util=require(_0x1f6e('0x0'));var _=require(_0x1f6e('0x1'));var Mustache=require(_0x1f6e('0x2'));var logger=require('../../../../config/logger')(_0x1f6e('0x3'));exports['exec']=function(_0x42d0da,_0x239a48){var _0x3cec63,_0x42a92b;var _0x278d1c={'method':_0x42d0da[_0x1f6e('0x4')][_0x1f6e('0x5')](),'uri':Mustache[_0x1f6e('0x6')](_0x42d0da['data2'],_0x239a48),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x42d0da[_0x1f6e('0x7')])===_0x1f6e('0x8')&&parseInt(_0x42d0da[_0x1f6e('0x7')])>=0x1&&parseInt(_0x42d0da[_0x1f6e('0x7')])<=0xa?parseInt(_0x42d0da[_0x1f6e('0x7')])*0x3e8:0x5*0x3e8};try{_0x278d1c[_0x1f6e('0x9')]=_0x42d0da[_0x1f6e('0xa')]?JSON[_0x1f6e('0xb')](Mustache[_0x1f6e('0x6')](_0x42d0da['data6'],_0x239a48)):{};}catch(_0x11604b){logger[_0x1f6e('0xc')](_0x11604b[_0x1f6e('0xd')]);}switch(_0x42d0da[_0x1f6e('0x4')][_0x1f6e('0x5')]()){case _0x1f6e('0xe'):case'DELETE':_0x3cec63=null;_0x278d1c['qs']=_0x239a48;break;case _0x1f6e('0xf'):case _0x1f6e('0x10'):if(_0x42d0da[_0x1f6e('0x11')]){try{_0x3cec63=JSON['parse'](Mustache[_0x1f6e('0x6')](_0x42d0da[_0x1f6e('0x11')],_0x239a48));_0x278d1c['body']=_0x3cec63;}catch(_0x2abb69){logger[_0x1f6e('0xc')](_0x2abb69[_0x1f6e('0xd')]);logger['error'](_0x1f6e('0x12'));}}else{_0x3cec63=_0x239a48;_0x278d1c[_0x1f6e('0x13')]=_0x3cec63;}break;}logger['info'](util[_0x1f6e('0x14')](_0x1f6e('0x15'),_0x42d0da[_0x1f6e('0x4')],_0x42d0da[_0x1f6e('0x16')],JSON['stringify'](_0x278d1c)));rp(_0x278d1c)[_0x1f6e('0x17')](function(_0x4e94bd){_0x3cec63=!_[_0x1f6e('0x18')](_0x3cec63)?_0x1f6e('0x19')+_0x3cec63:'';_0x42a92b=typeof _0x4e94bd[_0x1f6e('0x13')]===_0x1f6e('0x1a')?JSON['stringify'](_0x4e94bd[_0x1f6e('0x13')]):_0x4e94bd['body'];logger[_0x1f6e('0x1b')](util['format'](_0x1f6e('0x1c'),_0x42d0da['data1'],_0x42d0da['data2'],_0x4e94bd[_0x1f6e('0x1d')],_0x42a92b));})[_0x1f6e('0x1e')](function(_0x2a2e99){logger[_0x1f6e('0xc')](util[_0x1f6e('0x14')](_0x1f6e('0x1f'),_0x42d0da[_0x1f6e('0x4')],_0x42d0da['data2'],_0x2a2e99[_0x1f6e('0x1d')],_0x2a2e99[_0x1f6e('0x20')],_0x2a2e99[_0x1f6e('0x21')]));});};
\ No newline at end of file
+var _0x7d5b=['PUT','data7','body','error','info','format','%s\x20%s\x20sending\x20request\x20with\x20following\x20options:\x20%s','stringify','then','isNil',',\x20request\x20body:\x20','object','%s\x20%s\x20succeeded\x20with\x20status:\x20%d\x20and\x20response:\x20%s','statusCode','message','request-promise','util','mustache','../../../../config/logger','trigger','exec','data1','toUpperCase','data2','number','data5','data6','parse','render','stack','GET','DELETE','POST'];(function(_0x3126b6,_0x450061){var _0x116531=function(_0x4db330){while(--_0x4db330){_0x3126b6['push'](_0x3126b6['shift']());}};_0x116531(++_0x450061);}(_0x7d5b,0x72));var _0xb7d5=function(_0x24f31b,_0x44b8f3){_0x24f31b=_0x24f31b-0x0;var _0x488401=_0x7d5b[_0x24f31b];return _0x488401;};'use strict';var rp=require(_0xb7d5('0x0'));var util=require(_0xb7d5('0x1'));var _=require('lodash');var Mustache=require(_0xb7d5('0x2'));var logger=require(_0xb7d5('0x3'))(_0xb7d5('0x4'));exports[_0xb7d5('0x5')]=function(_0x50a3b3,_0x4336dc){var _0x3149e5,_0x1c5ab3;var _0x3f7ebd={'method':_0x50a3b3[_0xb7d5('0x6')][_0xb7d5('0x7')](),'uri':Mustache['render'](_0x50a3b3[_0xb7d5('0x8')],_0x4336dc),'json':!![],'resolveWithFullResponse':!![],'timeout':typeof parseInt(_0x50a3b3['data5'])===_0xb7d5('0x9')&&parseInt(_0x50a3b3[_0xb7d5('0xa')])>=0x1&&parseInt(_0x50a3b3[_0xb7d5('0xa')])<=0xa?parseInt(_0x50a3b3[_0xb7d5('0xa')])*0x3e8:0x5*0x3e8};try{_0x3f7ebd['headers']=_0x50a3b3[_0xb7d5('0xb')]?JSON[_0xb7d5('0xc')](Mustache[_0xb7d5('0xd')](_0x50a3b3[_0xb7d5('0xb')],_0x4336dc)):{};}catch(_0x163ba9){logger['error'](_0x163ba9[_0xb7d5('0xe')]);}switch(_0x50a3b3[_0xb7d5('0x6')][_0xb7d5('0x7')]()){case _0xb7d5('0xf'):case _0xb7d5('0x10'):_0x3149e5=null;_0x3f7ebd['qs']=_0x4336dc;break;case _0xb7d5('0x11'):case _0xb7d5('0x12'):if(_0x50a3b3[_0xb7d5('0x13')]){try{_0x3149e5=JSON[_0xb7d5('0xc')](Mustache[_0xb7d5('0xd')](_0x50a3b3[_0xb7d5('0x13')],_0x4336dc));_0x3f7ebd[_0xb7d5('0x14')]=_0x3149e5;}catch(_0x2e43da){logger[_0xb7d5('0x15')](_0x2e43da[_0xb7d5('0xe')]);logger[_0xb7d5('0x15')]('body\x20has\x20been\x20passed\x20to\x20URLforward\x20in\x20a\x20wrong\x20format');}}else{_0x3149e5=_0x4336dc;_0x3f7ebd['body']=_0x3149e5;}break;}logger[_0xb7d5('0x16')](util[_0xb7d5('0x17')](_0xb7d5('0x18'),_0x50a3b3['data1'],_0x50a3b3[_0xb7d5('0x8')],JSON[_0xb7d5('0x19')](_0x3f7ebd)));rp(_0x3f7ebd)[_0xb7d5('0x1a')](function(_0x5d1aef){_0x3149e5=!_[_0xb7d5('0x1b')](_0x3149e5)?_0xb7d5('0x1c')+_0x3149e5:'';_0x1c5ab3=typeof _0x5d1aef[_0xb7d5('0x14')]===_0xb7d5('0x1d')?JSON[_0xb7d5('0x19')](_0x5d1aef[_0xb7d5('0x14')]):_0x5d1aef[_0xb7d5('0x14')];logger[_0xb7d5('0x16')](util[_0xb7d5('0x17')](_0xb7d5('0x1e'),_0x50a3b3[_0xb7d5('0x6')],_0x50a3b3[_0xb7d5('0x8')],_0x5d1aef[_0xb7d5('0x1f')],_0x1c5ab3));})['catch'](function(_0xa0748){logger[_0xb7d5('0x15')](util[_0xb7d5('0x17')]('%s\x20%s\x20failed\x20with\x20status:\x20%d\x20and\x20error:\x20%s\x20%s',_0x50a3b3['data1'],_0x50a3b3[_0xb7d5('0x8')],_0xa0748[_0xb7d5('0x1f')],_0xa0748['name'],_0xa0748[_0xb7d5('0x20')]));});};
\ No newline at end of file
index 2f42702..a412593 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0c74=['catch','exports','jayson/promise','bluebird','client','http','Request','then','debug','rpc','error','routing','message','result'];(function(_0x137e79,_0x1ad5da){var _0x4998e3=function(_0xae0e77){while(--_0xae0e77){_0x137e79['push'](_0x137e79['shift']());}};_0x4998e3(++_0x1ad5da);}(_0x0c74,0x72));var _0x40c7=function(_0x29caf3,_0x88a317){_0x29caf3=_0x29caf3-0x0;var _0x3dc931=_0x0c74[_0x29caf3];return _0x3dc931;};'use strict';var jayson=require(_0x40c7('0x0'));var BPromise=require(_0x40c7('0x1'));var logger=require('../../config/logger')('routing');var client=jayson[_0x40c7('0x2')][_0x40c7('0x3')]({'port':0x2329});client[_0x40c7('0x4')]=function(_0x151c5e,_0x2d60b2){return new BPromise(function(_0x298987,_0x66cacf){return client['request'](_0x151c5e,_0x2d60b2)[_0x40c7('0x5')](function(_0x599d37){logger[_0x40c7('0x6')](_0x40c7('0x7'),'routing',_0x151c5e,_0x2d60b2,_0x599d37);if(_0x599d37['error']){logger[_0x40c7('0x8')](_0x40c7('0x7'),_0x40c7('0x9'),_0x151c5e,_0x599d37['error'][_0x40c7('0xa')],_0x2d60b2);return _0x66cacf(_0x599d37['error']['message']);}else{return _0x298987(_0x599d37[_0x40c7('0xb')]);}})[_0x40c7('0xc')](function(_0x4b171a){logger[_0x40c7('0x8')](_0x40c7('0x7'),_0x40c7('0x9'),_0x151c5e,_0x4b171a,_0x2d60b2);return _0x66cacf(_0x4b171a);});});};module[_0x40c7('0xd')]=client;
\ No newline at end of file
+var _0x1710=['bluebird','../../config/logger','routing','client','Request','request','debug','error','rpc','message','result','catch','jayson/promise'];(function(_0x93cb67,_0x43daf6){var _0x429ad0=function(_0x33d6a0){while(--_0x33d6a0){_0x93cb67['push'](_0x93cb67['shift']());}};_0x429ad0(++_0x43daf6);}(_0x1710,0x1c6));var _0x0171=function(_0x12e6f7,_0x2f3566){_0x12e6f7=_0x12e6f7-0x0;var _0x56891b=_0x1710[_0x12e6f7];return _0x56891b;};'use strict';var jayson=require(_0x0171('0x0'));var BPromise=require(_0x0171('0x1'));var logger=require(_0x0171('0x2'))(_0x0171('0x3'));var client=jayson[_0x0171('0x4')]['http']({'port':0x2329});client[_0x0171('0x5')]=function(_0x24de80,_0x4b1403){return new BPromise(function(_0x5edf31,_0x147b3f){return client[_0x0171('0x6')](_0x24de80,_0x4b1403)['then'](function(_0xf114b5){logger[_0x0171('0x7')]('rpc','routing',_0x24de80,_0x4b1403,_0xf114b5);if(_0xf114b5[_0x0171('0x8')]){logger[_0x0171('0x8')](_0x0171('0x9'),_0x0171('0x3'),_0x24de80,_0xf114b5[_0x0171('0x8')][_0x0171('0xa')],_0x4b1403);return _0x147b3f(_0xf114b5[_0x0171('0x8')][_0x0171('0xa')]);}else{return _0x5edf31(_0xf114b5[_0x0171('0xb')]);}})[_0x0171('0xc')](function(_0x3da45d){logger['error'](_0x0171('0x9'),_0x0171('0x3'),_0x24de80,_0x3da45d,_0x4b1403);return _0x147b3f(_0x3da45d);});});};module['exports']=client;
\ No newline at end of file
index 39c831b..0d1e5e6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd13f=['initMailAccounts','mailAccounts','getSettings','catch','error','./server','./realtime','./lib/email','./rpc/mailAccount','./rpc/setting','../../config/logger','email','resolve','then','getMailAccounts'];(function(_0x5d821b,_0x51af51){var _0x94b98d=function(_0x2613a4){while(--_0x2613a4){_0x5d821b['push'](_0x5d821b['shift']());}};_0x94b98d(++_0x51af51);}(_0xd13f,0x7d));var _0xfd13=function(_0x5d43da,_0x13cfaa){_0x5d43da=_0x5d43da-0x0;var _0xc7b2=_0xd13f[_0x5d43da];return _0xc7b2;};'use strict';var server=require(_0xfd13('0x0'));var Realtime=require(_0xfd13('0x1'));var EmailChannel=require(_0xfd13('0x2'));var mailAccount=require(_0xfd13('0x3'));var setting=require(_0xfd13('0x4'));var logger=require(_0xfd13('0x5'))(_0xfd13('0x6'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0xfd13('0x7')]()[_0xfd13('0x8')](mailAccount[_0xfd13('0x9')]())[_0xfd13('0x8')](realtime[_0xfd13('0xa')]())[_0xfd13('0x8')](function(){email['refresh'](realtime[_0xfd13('0xb')]);return realtime;});}function main(){return server['listen'](realtime,email)[_0xfd13('0x8')](function(){return initRealtime();})[_0xfd13('0x8')](function(){return setting[_0xfd13('0xc')]();})[_0xfd13('0x8')](function(_0x3d6d85){return setInterval(initRealtime,_0x3d6d85['loginMailFrequency']*0x3e8);})[_0xfd13('0xd')](function(_0x4408f5){logger[_0xfd13('0xe')]('Email\x20service\x20initialization',_0x4408f5);});}main();
\ No newline at end of file
+var _0x5120=['mailAccounts','listen','getSettings','loginMailFrequency','catch','error','./server','./realtime','./rpc/mailAccount','./rpc/setting','../../config/logger','email','resolve','then','getMailAccounts','initMailAccounts','refresh'];(function(_0x417fbb,_0x300917){var _0x18ab13=function(_0xf005a7){while(--_0xf005a7){_0x417fbb['push'](_0x417fbb['shift']());}};_0x18ab13(++_0x300917);}(_0x5120,0x8e));var _0x0512=function(_0x2a8cb7,_0x314d29){_0x2a8cb7=_0x2a8cb7-0x0;var _0x183a1f=_0x5120[_0x2a8cb7];return _0x183a1f;};'use strict';var server=require(_0x0512('0x0'));var Realtime=require(_0x0512('0x1'));var EmailChannel=require('./lib/email');var mailAccount=require(_0x0512('0x2'));var setting=require(_0x0512('0x3'));var logger=require(_0x0512('0x4'))(_0x0512('0x5'));var realtime=new Realtime();var email=new EmailChannel(realtime);function initRealtime(){return Promise[_0x0512('0x6')]()[_0x0512('0x7')](mailAccount[_0x0512('0x8')]())[_0x0512('0x7')](realtime[_0x0512('0x9')]())[_0x0512('0x7')](function(){email[_0x0512('0xa')](realtime[_0x0512('0xb')]);return realtime;});}function main(){return server[_0x0512('0xc')](realtime,email)[_0x0512('0x7')](function(){return initRealtime();})[_0x0512('0x7')](function(){return setting[_0x0512('0xd')]();})[_0x0512('0x7')](function(_0x36cccf){return setInterval(initRealtime,_0x36cccf[_0x0512('0xe')]*0x3e8);})[_0x0512('0xf')](function(_0x3d780e){logger[_0x0512('0x10')]('Email\x20service\x20initialization',_0x3d780e);});}main();
\ No newline at end of file
index 2306d94..ae77125 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93d5=['from','notify','then','Mail\x20accepted\x20from\x20routing','catch','Mail\x20not\x20accepted\x20from\x20routing\x20%s','stringify','handleImapError','sendMail','send','verifySmtp','Smtp','lastSync','verify','verified','exports','lodash','bluebird','md5','email','redis','defaults','localhost','socket.io-emitter','./imap','./smtp','../rpc/mailAccount','info','start\x20email\x20channel','mailAccounts','imapAccounts','smtp','prototype','emit','name','active','Imap','status','messageStatus','isNil','hasOwnProperty','provider','custom','service','box','bind','handleImapEmail','end','handleImapEnd','error','disabled','handleImapBox','connected','messages','total','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','lastName'];(function(_0x75e666,_0x365f63){var _0x421ea9=function(_0x25079c){while(--_0x25079c){_0x75e666['push'](_0x75e666['shift']());}};_0x421ea9(++_0x365f63);}(_0x93d5,0x1d8));var _0x593d=function(_0x239e45,_0x550cbc){_0x239e45=_0x239e45-0x0;var _0x9309d3=_0x93d5[_0x239e45];return _0x9309d3;};'use strict';var _=require(_0x593d('0x0'));var moment=require('moment');var BPromise=require(_0x593d('0x1'));var md5=require(_0x593d('0x2'));var Redis=require('ioredis');var config=require('../../../config/environment');var logger=require('../../../config/logger')(_0x593d('0x3'));config[_0x593d('0x4')]=_[_0x593d('0x5')](config[_0x593d('0x4')],{'host':_0x593d('0x6'),'port':0x18eb});var io=require(_0x593d('0x7'))(new Redis(config[_0x593d('0x4')]));var EmailImap=require(_0x593d('0x8'));var EmailSmtp=require(_0x593d('0x9'));var mailAccount=require(_0x593d('0xa'));var md5Accounts={};function EmailChannel(_0x1203c3){logger[_0x593d('0xb')](_0x593d('0xc'));this[_0x593d('0xd')]=_0x1203c3[_0x593d('0xd')];this[_0x593d('0xe')]={};this[_0x593d('0xf')]=new EmailSmtp();}EmailChannel[_0x593d('0x10')][_0x593d('0x11')]=function(_0xe4fb9c){var _0x294cb7=this[_0x593d('0xd')][_0xe4fb9c];var _0x247012={'id':_0x294cb7['id'],'name':_0x294cb7[_0x593d('0x12')],'key':_0x294cb7['key'],'active':_0x294cb7[_0x593d('0x13')],'Imap':{'status':_0x294cb7[_0x593d('0x14')][_0x593d('0x15')],'messageStatus':_0x294cb7['Imap'][_0x593d('0x16')],'total':_0x294cb7[_0x593d('0x14')]['total']}};if(_[_0x593d('0x17')](md5Accounts[_0xe4fb9c])){md5Accounts[_0xe4fb9c]={};}var _0x2506e6=md5(JSON['stringify'](_0x247012));if(md5Accounts[_0xe4fb9c]['md5']!==_0x2506e6){md5Accounts[_0xe4fb9c][_0x593d('0x2')]=_0x2506e6;io['emit']('mailAccount:update',_0x247012);}};EmailChannel[_0x593d('0x10')]['refresh']=function(_0x12a8a6){for(var _0x32b276 in _0x12a8a6){if(_0x12a8a6[_0x593d('0x18')](_0x32b276)){if(_0x12a8a6[_0x32b276][_0x593d('0x14')]&&_0x12a8a6[_0x32b276]['active']){var _0xcce52f=_0x12a8a6[_0x32b276]['Imap'];if(!_0xcce52f['service']&&_0x12a8a6[_0x32b276][_0x593d('0x19')]!==_0x593d('0x1a'))_0xcce52f[_0x593d('0x1b')]=_0x12a8a6[_0x32b276]['provider'];if(!this[_0x593d('0xe')]['hasOwnProperty'](_0xcce52f['id'])){this[_0x593d('0xe')][_0xcce52f['id']]=new EmailImap(_0xcce52f,_0x12a8a6[_0x32b276][_0x593d('0x3')]);this['imapAccounts'][_0xcce52f['id']]['on'](_0x593d('0x1c'),this['handleImapBox'][_0x593d('0x1d')](this,_0x32b276));this['imapAccounts'][_0xcce52f['id']]['on'](_0x593d('0x3'),this[_0x593d('0x1e')][_0x593d('0x1d')](this,_0x32b276));this[_0x593d('0xe')][_0xcce52f['id']]['on'](_0x593d('0x1f'),this[_0x593d('0x20')][_0x593d('0x1d')](this,_0x32b276));this['imapAccounts'][_0xcce52f['id']]['on'](_0x593d('0x21'),this['handleImapError']['bind'](this,_0x32b276));}}else{if(_[_0x593d('0x17')](this['mailAccounts'][_0x32b276][_0x593d('0x14')])){this[_0x593d('0xd')][_0x32b276][_0x593d('0x14')]={};}this['mailAccounts'][_0x32b276][_0x593d('0x14')][_0x593d('0x15')]=_0x593d('0x22');this['mailAccounts'][_0x32b276][_0x593d('0x14')][_0x593d('0x16')]='';this[_0x593d('0x11')](_0x32b276);}}}};EmailChannel[_0x593d('0x10')][_0x593d('0x23')]=function(_0x46d9d4,_0x50dd0c){if(this[_0x593d('0xd')][_0x46d9d4]){this[_0x593d('0xd')][_0x46d9d4][_0x593d('0x14')]['status']=_0x593d('0x24');this[_0x593d('0xd')][_0x46d9d4][_0x593d('0x14')]['messageStatus']=_0x50dd0c[_0x593d('0x12')];if(_0x50dd0c[_0x593d('0x25')]){this[_0x593d('0xd')][_0x46d9d4]['Imap'][_0x593d('0x26')]=_0x50dd0c['messages'][_0x593d('0x26')];}return this[_0x593d('0x11')](_0x46d9d4);}};EmailChannel[_0x593d('0x10')]['handleImapEmail']=function(_0x144ee4,_0x362f5e){logger['info'](_0x593d('0x27'),_0x362f5e['firstName'],_0x362f5e[_0x593d('0x28')],_0x362f5e[_0x593d('0x29')],_0x144ee4);if(this[_0x593d('0xd')][_0x144ee4]){return mailAccount[_0x593d('0x2a')](_0x144ee4,_0x362f5e)[_0x593d('0x2b')](function(_0xc6b0d6){if(_0xc6b0d6){logger[_0x593d('0xb')](_0x593d('0x2c'));}})[_0x593d('0x2d')](function(_0x38657f){logger[_0x593d('0x21')](_0x593d('0x2e'),JSON[_0x593d('0x2f')](_0x38657f));});}};EmailChannel[_0x593d('0x10')][_0x593d('0x20')]=function(_0x147d77){if(this[_0x593d('0xd')][_0x147d77]&&this[_0x593d('0xd')][_0x147d77][_0x593d('0x14')]){if(this['imapAccounts'][this[_0x593d('0xd')][_0x147d77][_0x593d('0x14')]['id']]){delete this['imapAccounts'][this['mailAccounts'][_0x147d77][_0x593d('0x14')]['id']];}this[_0x593d('0xd')][_0x147d77][_0x593d('0x14')]['lastSync']=moment();this[_0x593d('0x11')](_0x147d77);}};EmailChannel[_0x593d('0x10')][_0x593d('0x30')]=function(_0x40e1a1,_0x50de9c){if(this[_0x593d('0xd')][_0x40e1a1]){this[_0x593d('0xd')][_0x40e1a1][_0x593d('0x14')][_0x593d('0x15')]=_0x593d('0x21');this[_0x593d('0xd')][_0x40e1a1]['Imap'][_0x593d('0x16')]=_0x50de9c;return this[_0x593d('0x11')](_0x40e1a1);}};EmailChannel[_0x593d('0x10')][_0x593d('0x31')]=function(_0x39f185,_0x2de437){return this['smtp'][_0x593d('0x32')](_0x39f185,_0x2de437);};EmailChannel[_0x593d('0x10')][_0x593d('0x33')]=function(_0x3c13e3){var _0x1ebd75=this;if(this['mailAccounts'][_0x3c13e3['id']]){if(_['isNil'](this[_0x593d('0xd')][_0x3c13e3['id']]['Smtp'])){this[_0x593d('0xd')][_0x3c13e3['id']][_0x593d('0x34')]={};}this['mailAccounts'][_0x3c13e3['id']][_0x593d('0x34')][_0x593d('0x35')]=moment();return new BPromise(function(_0x447e29,_0x14f38c){return _0x1ebd75[_0x593d('0xf')][_0x593d('0x36')](_0x3c13e3)['then'](function(_0x26743f){_0x1ebd75[_0x593d('0xd')][_0x3c13e3['id']]['Smtp'][_0x593d('0x15')]=_0x593d('0x37');_0x1ebd75[_0x593d('0xd')][_0x3c13e3['id']][_0x593d('0x34')][_0x593d('0x16')]='';_0x1ebd75[_0x593d('0x11')](_0x3c13e3['id']);_0x447e29(_0x26743f);})[_0x593d('0x2d')](function(_0x11af60){_0x1ebd75['mailAccounts'][_0x3c13e3['id']][_0x593d('0x34')]['status']=_0x593d('0x21');_0x1ebd75[_0x593d('0xd')][_0x3c13e3['id']][_0x593d('0x34')][_0x593d('0x16')]=_0x11af60;_0x1ebd75[_0x593d('0x11')](_0x3c13e3['id']);_0x14f38c(_0x11af60);});});}return this['smtp'][_0x593d('0x36')](_0x3c13e3);};module[_0x593d('0x38')]=EmailChannel;
\ No newline at end of file
+var _0xd3b7=['end','handleImapEnd','error','handleImapError','disabled','messageStatus','connected','messages','New\x20email\x20from\x20%s\x20%s\x20%s\x20to\x20%s','firstName','lastName','notify','then','Mail\x20accepted\x20from\x20routing','Mail\x20not\x20accepted\x20from\x20routing\x20%s','sendMail','send','Smtp','lastSync','verify','verified','exports','lodash','moment','ioredis','../../../config/logger','email','redis','defaults','localhost','socket.io-emitter','./smtp','../rpc/mailAccount','info','mailAccounts','imapAccounts','smtp','prototype','emit','name','key','active','Imap','status','total','isNil','stringify','md5','mailAccount:update','refresh','hasOwnProperty','service','provider','handleImapBox','bind','handleImapEmail'];(function(_0x5aca71,_0x583dfa){var _0x375f79=function(_0x3b2d5e){while(--_0x3b2d5e){_0x5aca71['push'](_0x5aca71['shift']());}};_0x375f79(++_0x583dfa);}(_0xd3b7,0x166));var _0x7d3b=function(_0x3432a8,_0x1f76f5){_0x3432a8=_0x3432a8-0x0;var _0x20c0ec=_0xd3b7[_0x3432a8];return _0x20c0ec;};'use strict';var _=require(_0x7d3b('0x0'));var moment=require(_0x7d3b('0x1'));var BPromise=require('bluebird');var md5=require('md5');var Redis=require(_0x7d3b('0x2'));var config=require('../../../config/environment');var logger=require(_0x7d3b('0x3'))(_0x7d3b('0x4'));config[_0x7d3b('0x5')]=_[_0x7d3b('0x6')](config['redis'],{'host':_0x7d3b('0x7'),'port':0x18eb});var io=require(_0x7d3b('0x8'))(new Redis(config[_0x7d3b('0x5')]));var EmailImap=require('./imap');var EmailSmtp=require(_0x7d3b('0x9'));var mailAccount=require(_0x7d3b('0xa'));var md5Accounts={};function EmailChannel(_0x283671){logger[_0x7d3b('0xb')]('start\x20email\x20channel');this[_0x7d3b('0xc')]=_0x283671[_0x7d3b('0xc')];this[_0x7d3b('0xd')]={};this[_0x7d3b('0xe')]=new EmailSmtp();}EmailChannel[_0x7d3b('0xf')][_0x7d3b('0x10')]=function(_0x578c08){var _0x173bf9=this['mailAccounts'][_0x578c08];var _0x24eb7d={'id':_0x173bf9['id'],'name':_0x173bf9[_0x7d3b('0x11')],'key':_0x173bf9[_0x7d3b('0x12')],'active':_0x173bf9[_0x7d3b('0x13')],'Imap':{'status':_0x173bf9[_0x7d3b('0x14')][_0x7d3b('0x15')],'messageStatus':_0x173bf9[_0x7d3b('0x14')]['messageStatus'],'total':_0x173bf9[_0x7d3b('0x14')][_0x7d3b('0x16')]}};if(_[_0x7d3b('0x17')](md5Accounts[_0x578c08])){md5Accounts[_0x578c08]={};}var _0x17beeb=md5(JSON[_0x7d3b('0x18')](_0x24eb7d));if(md5Accounts[_0x578c08][_0x7d3b('0x19')]!==_0x17beeb){md5Accounts[_0x578c08]['md5']=_0x17beeb;io[_0x7d3b('0x10')](_0x7d3b('0x1a'),_0x24eb7d);}};EmailChannel['prototype'][_0x7d3b('0x1b')]=function(_0x3924f0){for(var _0x145e14 in _0x3924f0){if(_0x3924f0[_0x7d3b('0x1c')](_0x145e14)){if(_0x3924f0[_0x145e14]['Imap']&&_0x3924f0[_0x145e14][_0x7d3b('0x13')]){var _0x2287dd=_0x3924f0[_0x145e14][_0x7d3b('0x14')];if(!_0x2287dd[_0x7d3b('0x1d')]&&_0x3924f0[_0x145e14][_0x7d3b('0x1e')]!=='custom')_0x2287dd['service']=_0x3924f0[_0x145e14][_0x7d3b('0x1e')];if(!this['imapAccounts'][_0x7d3b('0x1c')](_0x2287dd['id'])){this[_0x7d3b('0xd')][_0x2287dd['id']]=new EmailImap(_0x2287dd,_0x3924f0[_0x145e14][_0x7d3b('0x4')]);this[_0x7d3b('0xd')][_0x2287dd['id']]['on']('box',this[_0x7d3b('0x1f')][_0x7d3b('0x20')](this,_0x145e14));this['imapAccounts'][_0x2287dd['id']]['on'](_0x7d3b('0x4'),this[_0x7d3b('0x21')][_0x7d3b('0x20')](this,_0x145e14));this[_0x7d3b('0xd')][_0x2287dd['id']]['on'](_0x7d3b('0x22'),this[_0x7d3b('0x23')][_0x7d3b('0x20')](this,_0x145e14));this[_0x7d3b('0xd')][_0x2287dd['id']]['on'](_0x7d3b('0x24'),this[_0x7d3b('0x25')]['bind'](this,_0x145e14));}}else{if(_[_0x7d3b('0x17')](this[_0x7d3b('0xc')][_0x145e14][_0x7d3b('0x14')])){this[_0x7d3b('0xc')][_0x145e14]['Imap']={};}this[_0x7d3b('0xc')][_0x145e14]['Imap']['status']=_0x7d3b('0x26');this['mailAccounts'][_0x145e14][_0x7d3b('0x14')][_0x7d3b('0x27')]='';this[_0x7d3b('0x10')](_0x145e14);}}}};EmailChannel[_0x7d3b('0xf')][_0x7d3b('0x1f')]=function(_0x27a52b,_0x47468a){if(this[_0x7d3b('0xc')][_0x27a52b]){this[_0x7d3b('0xc')][_0x27a52b][_0x7d3b('0x14')][_0x7d3b('0x15')]=_0x7d3b('0x28');this[_0x7d3b('0xc')][_0x27a52b][_0x7d3b('0x14')][_0x7d3b('0x27')]=_0x47468a[_0x7d3b('0x11')];if(_0x47468a[_0x7d3b('0x29')]){this[_0x7d3b('0xc')][_0x27a52b]['Imap']['total']=_0x47468a[_0x7d3b('0x29')][_0x7d3b('0x16')];}return this[_0x7d3b('0x10')](_0x27a52b);}};EmailChannel[_0x7d3b('0xf')][_0x7d3b('0x21')]=function(_0x279950,_0x59444e){logger[_0x7d3b('0xb')](_0x7d3b('0x2a'),_0x59444e[_0x7d3b('0x2b')],_0x59444e[_0x7d3b('0x2c')],_0x59444e['from'],_0x279950);if(this[_0x7d3b('0xc')][_0x279950]){return mailAccount[_0x7d3b('0x2d')](_0x279950,_0x59444e)[_0x7d3b('0x2e')](function(_0x70313){if(_0x70313){logger[_0x7d3b('0xb')](_0x7d3b('0x2f'));}})['catch'](function(_0x5780ab){logger['error'](_0x7d3b('0x30'),JSON['stringify'](_0x5780ab));});}};EmailChannel[_0x7d3b('0xf')][_0x7d3b('0x23')]=function(_0x936e01){if(this[_0x7d3b('0xc')][_0x936e01]&&this[_0x7d3b('0xc')][_0x936e01][_0x7d3b('0x14')]){if(this['imapAccounts'][this['mailAccounts'][_0x936e01]['Imap']['id']]){delete this[_0x7d3b('0xd')][this[_0x7d3b('0xc')][_0x936e01][_0x7d3b('0x14')]['id']];}this[_0x7d3b('0xc')][_0x936e01][_0x7d3b('0x14')]['lastSync']=moment();this[_0x7d3b('0x10')](_0x936e01);}};EmailChannel[_0x7d3b('0xf')][_0x7d3b('0x25')]=function(_0x1d97e1,_0x365238){if(this[_0x7d3b('0xc')][_0x1d97e1]){this[_0x7d3b('0xc')][_0x1d97e1][_0x7d3b('0x14')][_0x7d3b('0x15')]=_0x7d3b('0x24');this[_0x7d3b('0xc')][_0x1d97e1][_0x7d3b('0x14')][_0x7d3b('0x27')]=_0x365238;return this[_0x7d3b('0x10')](_0x1d97e1);}};EmailChannel[_0x7d3b('0xf')][_0x7d3b('0x31')]=function(_0xf47d56,_0x3f3f7e){return this['smtp'][_0x7d3b('0x32')](_0xf47d56,_0x3f3f7e);};EmailChannel[_0x7d3b('0xf')]['verifySmtp']=function(_0x5bb37){var _0x30b0d9=this;if(this['mailAccounts'][_0x5bb37['id']]){if(_['isNil'](this[_0x7d3b('0xc')][_0x5bb37['id']][_0x7d3b('0x33')])){this['mailAccounts'][_0x5bb37['id']][_0x7d3b('0x33')]={};}this[_0x7d3b('0xc')][_0x5bb37['id']]['Smtp'][_0x7d3b('0x34')]=moment();return new BPromise(function(_0x5ea6b7,_0x48420c){return _0x30b0d9[_0x7d3b('0xe')][_0x7d3b('0x35')](_0x5bb37)['then'](function(_0x5cf1a5){_0x30b0d9[_0x7d3b('0xc')][_0x5bb37['id']][_0x7d3b('0x33')][_0x7d3b('0x15')]=_0x7d3b('0x36');_0x30b0d9['mailAccounts'][_0x5bb37['id']]['Smtp']['messageStatus']='';_0x30b0d9[_0x7d3b('0x10')](_0x5bb37['id']);_0x5ea6b7(_0x5cf1a5);})['catch'](function(_0x327d7c){_0x30b0d9['mailAccounts'][_0x5bb37['id']]['Smtp'][_0x7d3b('0x15')]=_0x7d3b('0x24');_0x30b0d9['mailAccounts'][_0x5bb37['id']][_0x7d3b('0x33')][_0x7d3b('0x27')]=_0x327d7c;_0x30b0d9[_0x7d3b('0x10')](_0x5bb37['id']);_0x48420c(_0x327d7c);});});}return this[_0x7d3b('0xe')][_0x7d3b('0x35')](_0x5bb37);};module[_0x7d3b('0x37')]=EmailChannel;
\ No newline at end of file
index f6a4c88..3942784 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4bd3=['body','handleMessageBody','attributes','handleMessageAttributes','handleSimpleParser','handleMessageEnd','parser','handleEnd','stringify','textCode','upperFirst','exports','lodash','imap','mailparser','events','EventEmitter','./utils','email','mailbox','INBOX','getAccount','account','once','ready','bind','end','connect','inherits','prototype','connTimeout','service','user','anonymous@xcally.com','modernAuthentication','xoauth2','generateXOAuth2Token','CloudProvider','data5','password','authentication','host','port','tls','autotls','openBox','handleOpenBox','handleError','emit','readUnseen','handleCloseBox','search','UNSEEN','handleReadUnseen','fetch','error','handleFetchError','handleFetchEnd','closeBox','handleFetchMessage'];(function(_0x5ca41a,_0x79b402){var _0x2ae67f=function(_0x8e089d){while(--_0x8e089d){_0x5ca41a['push'](_0x5ca41a['shift']());}};_0x2ae67f(++_0x79b402);}(_0x4bd3,0x174));var _0x34bd=function(_0x4a9308,_0x2f0b1b){_0x4a9308=_0x4a9308-0x0;var _0x83052f=_0x4bd3[_0x4a9308];return _0x83052f;};'use strict';var _=require(_0x34bd('0x0'));var util=require('util');var Imap=require(_0x34bd('0x1'));var simpleParser=require(_0x34bd('0x2'))['simpleParser'];var Iconv=require('iconv')['Iconv'];var EventEmitter=require(_0x34bd('0x3'))[_0x34bd('0x4')];var utils=require(_0x34bd('0x5'));var logger=require('../../../config/logger')(_0x34bd('0x6'));function EmailImap(_0x2a15a2,_0x5c2a7a){this[_0x34bd('0x7')]=_0x34bd('0x8');this['account']=this[_0x34bd('0x9')](_0x2a15a2,_0x5c2a7a);this[_0x34bd('0x1')]=new Imap(this[_0x34bd('0xa')]);this[_0x34bd('0x1')][_0x34bd('0xb')](_0x34bd('0xc'),this['handleReady'][_0x34bd('0xd')](this));this[_0x34bd('0x1')][_0x34bd('0xb')](_0x34bd('0xe'),this['handleEnd']['bind'](this));this[_0x34bd('0x1')]['on']('error',this['handleError'][_0x34bd('0xd')](this));this[_0x34bd('0x1')][_0x34bd('0xf')]();}util[_0x34bd('0x10')](EmailImap,EventEmitter);EmailImap[_0x34bd('0x11')][_0x34bd('0x9')]=function(_0x4134ee,_0x236f6b){var _0xf6d2f2={'connTimeout':_0x4134ee['connTimeout']?_0x4134ee[_0x34bd('0x12')]*0x3e8:0x2710,'authTimeout':_0x4134ee['authTimeout']?_0x4134ee['authTimeout']*0x3e8:0x1388};if(_0x4134ee[_0x34bd('0x13')]){_0xf6d2f2[_0x34bd('0x14')]=_0x4134ee[_0x34bd('0x14')];_0xf6d2f2[_0x34bd('0x6')]=_0x236f6b||_0x4134ee[_0x34bd('0x14')]||_0x34bd('0x15');if(_0x4134ee[_0x34bd('0x16')]){_0xf6d2f2[_0x34bd('0x17')]=utils[_0x34bd('0x18')](_0x4134ee[_0x34bd('0x19')][_0x34bd('0x1a')],_0x4134ee['user']);}else{_0xf6d2f2[_0x34bd('0x1b')]=_0x4134ee[_0x34bd('0x1b')];}}else{if(_0x4134ee[_0x34bd('0x1c')]){_0xf6d2f2[_0x34bd('0x14')]=_0x4134ee[_0x34bd('0x14')];_0xf6d2f2[_0x34bd('0x1b')]=_0x4134ee[_0x34bd('0x1b')];}}_0xf6d2f2[_0x34bd('0x1d')]=_0x4134ee[_0x34bd('0x1d')];_0xf6d2f2['port']=_0x4134ee[_0x34bd('0x1e')]||0x3e1;if(_0x4134ee[_0x34bd('0x1f')]){_0xf6d2f2[_0x34bd('0x1f')]=!![];}else{_0xf6d2f2[_0x34bd('0x1f')]=![];_0xf6d2f2[_0x34bd('0x20')]='required';}return _0xf6d2f2;};EmailImap['prototype']['handleReady']=function(){this['imap'][_0x34bd('0x21')](this['mailbox'],![],this[_0x34bd('0x22')][_0x34bd('0xd')](this));};EmailImap[_0x34bd('0x11')]['handleOpenBox']=function(_0x41bffd,_0x14479a){if(_0x41bffd){this[_0x34bd('0x23')](_0x41bffd,!![]);}else{this[_0x34bd('0x24')]('box',_0x14479a);this[_0x34bd('0x25')]();}};EmailImap[_0x34bd('0x11')][_0x34bd('0x26')]=function(_0x3e4dc3){if(_0x3e4dc3){this['handleError'](_0x3e4dc3,!![]);}else{this[_0x34bd('0x1')][_0x34bd('0xe')]();}};EmailImap['prototype'][_0x34bd('0x25')]=function(){this[_0x34bd('0x1')][_0x34bd('0x27')]([_0x34bd('0x28')],this[_0x34bd('0x29')][_0x34bd('0xd')](this));};EmailImap[_0x34bd('0x11')]['handleReadUnseen']=function(_0x43b92d,_0x4156f5){if(_0x43b92d){this['handleError'](_0x43b92d,!![]);}else{if(_0x4156f5['length']){try{var _0x38bdba=this[_0x34bd('0x1')][_0x34bd('0x2a')](_0x4156f5,{'bodies':'','markSeen':!![]});_0x38bdba['on']('message',this['handleFetchMessage'][_0x34bd('0xd')](this));_0x38bdba[_0x34bd('0xb')](_0x34bd('0x2b'),this[_0x34bd('0x2c')]['bind'](this));_0x38bdba[_0x34bd('0xb')](_0x34bd('0xe'),this[_0x34bd('0x2d')][_0x34bd('0xd')](this));}catch(_0x2ef58f){logger[_0x34bd('0x2b')](_0x2ef58f);}}else{this['imap'][_0x34bd('0x2e')](!![],this['handleCloseBox'][_0x34bd('0xd')](this));}}};EmailImap[_0x34bd('0x11')][_0x34bd('0x2f')]=function(_0x4e9e70){_0x4e9e70['on'](_0x34bd('0x30'),this[_0x34bd('0x31')]['bind'](this));_0x4e9e70[_0x34bd('0xb')](_0x34bd('0x32'),this[_0x34bd('0x33')]['bind'](this));_0x4e9e70[_0x34bd('0xb')](_0x34bd('0xe'),this['handleMessageEnd'][_0x34bd('0xd')](this));};EmailImap[_0x34bd('0x11')][_0x34bd('0x31')]=function(_0x243f6c){simpleParser(_0x243f6c,{'Iconv':Iconv},this[_0x34bd('0x34')][_0x34bd('0xd')](this));};EmailImap['prototype']['handleMessageAttributes']=function(){};EmailImap['prototype'][_0x34bd('0x35')]=function(){};EmailImap[_0x34bd('0x11')]['handleSimpleParser']=function(_0x5b5f86,_0x13d2f0){if(_0x5b5f86){logger['error'](_0x5b5f86);}else{var _0x597a82=this;utils[_0x34bd('0x36')](this[_0x34bd('0xa')],_0x13d2f0,function(_0xa61859){_0x597a82[_0x34bd('0x24')](_0x34bd('0x6'),_0xa61859);});}};EmailImap['prototype']['handleFetchEnd']=function(){this[_0x34bd('0x1')]['closeBox'](!![],this[_0x34bd('0x26')][_0x34bd('0xd')](this));};EmailImap[_0x34bd('0x11')][_0x34bd('0x2c')]=function(_0x1ddb39){this['handleError'](_0x1ddb39);this[_0x34bd('0x1')][_0x34bd('0x2e')](!![],this[_0x34bd('0x26')][_0x34bd('0xd')](this));};EmailImap['prototype'][_0x34bd('0x37')]=function(){this['emit'](_0x34bd('0xe'));};EmailImap[_0x34bd('0x11')]['handleError']=function(_0x279765,_0x4cf516){logger[_0x34bd('0x2b')](_0x34bd('0x23'),this[_0x34bd('0xa')][_0x34bd('0x6')],JSON[_0x34bd('0x38')](_0x279765));var _0xb0f197='';if(_0x279765){if(_0x279765[_0x34bd('0x39')]){_0xb0f197=_0x279765['textCode'];}else{for(var _0x4986bb in _0x279765){if(_0x279765['hasOwnProperty'](_0x4986bb)){_0xb0f197+=_[_0x34bd('0x3a')](_0x4986bb)+':\x20'+_0x279765[_0x4986bb]+'\x0a';}}}}if(_0x4cf516){this[_0x34bd('0x1')][_0x34bd('0xe')]();}else{this[_0x34bd('0x24')]('error',_0xb0f197);this[_0x34bd('0x24')](_0x34bd('0xe'));}};module[_0x34bd('0x3b')]=EmailImap;
\ No newline at end of file
+var _0x27a0=['xoauth2','generateXOAuth2Token','CloudProvider','password','port','tls','required','openBox','handleOpenBox','readUnseen','handleCloseBox','handleReadUnseen','length','fetch','handleFetchMessage','handleFetchError','closeBox','body','handleMessageBody','attributes','handleMessageAttributes','handleSimpleParser','handleMessageEnd','parser','emit','handleFetchEnd','stringify','textCode','upperFirst','util','imap','mailparser','simpleParser','iconv','../../../config/logger','email','mailbox','INBOX','getAccount','account','once','ready','handleReady','end','handleEnd','bind','error','handleError','connect','prototype','authTimeout','service','user','modernAuthentication'];(function(_0x496f2c,_0x333179){var _0x242388=function(_0x13f0a4){while(--_0x13f0a4){_0x496f2c['push'](_0x496f2c['shift']());}};_0x242388(++_0x333179);}(_0x27a0,0xbf));var _0x027a=function(_0x342158,_0x7326aa){_0x342158=_0x342158-0x0;var _0xe9f5e1=_0x27a0[_0x342158];return _0xe9f5e1;};'use strict';var _=require('lodash');var util=require(_0x027a('0x0'));var Imap=require(_0x027a('0x1'));var simpleParser=require(_0x027a('0x2'))[_0x027a('0x3')];var Iconv=require(_0x027a('0x4'))['Iconv'];var EventEmitter=require('events')['EventEmitter'];var utils=require('./utils');var logger=require(_0x027a('0x5'))(_0x027a('0x6'));function EmailImap(_0x137b09,_0x639bec){this[_0x027a('0x7')]=_0x027a('0x8');this['account']=this[_0x027a('0x9')](_0x137b09,_0x639bec);this[_0x027a('0x1')]=new Imap(this[_0x027a('0xa')]);this['imap'][_0x027a('0xb')](_0x027a('0xc'),this[_0x027a('0xd')]['bind'](this));this[_0x027a('0x1')][_0x027a('0xb')](_0x027a('0xe'),this[_0x027a('0xf')][_0x027a('0x10')](this));this[_0x027a('0x1')]['on'](_0x027a('0x11'),this[_0x027a('0x12')][_0x027a('0x10')](this));this[_0x027a('0x1')][_0x027a('0x13')]();}util['inherits'](EmailImap,EventEmitter);EmailImap[_0x027a('0x14')][_0x027a('0x9')]=function(_0x2d27f8,_0x21da53){var _0x40fec0={'connTimeout':_0x2d27f8['connTimeout']?_0x2d27f8['connTimeout']*0x3e8:0x2710,'authTimeout':_0x2d27f8[_0x027a('0x15')]?_0x2d27f8['authTimeout']*0x3e8:0x1388};if(_0x2d27f8[_0x027a('0x16')]){_0x40fec0['user']=_0x2d27f8[_0x027a('0x17')];_0x40fec0['email']=_0x21da53||_0x2d27f8['user']||'anonymous@xcally.com';if(_0x2d27f8[_0x027a('0x18')]){_0x40fec0[_0x027a('0x19')]=utils[_0x027a('0x1a')](_0x2d27f8[_0x027a('0x1b')]['data5'],_0x2d27f8[_0x027a('0x17')]);}else{_0x40fec0[_0x027a('0x1c')]=_0x2d27f8['password'];}}else{if(_0x2d27f8['authentication']){_0x40fec0[_0x027a('0x17')]=_0x2d27f8['user'];_0x40fec0[_0x027a('0x1c')]=_0x2d27f8['password'];}}_0x40fec0['host']=_0x2d27f8['host'];_0x40fec0['port']=_0x2d27f8[_0x027a('0x1d')]||0x3e1;if(_0x2d27f8[_0x027a('0x1e')]){_0x40fec0[_0x027a('0x1e')]=!![];}else{_0x40fec0[_0x027a('0x1e')]=![];_0x40fec0['autotls']=_0x027a('0x1f');}return _0x40fec0;};EmailImap[_0x027a('0x14')][_0x027a('0xd')]=function(){this[_0x027a('0x1')][_0x027a('0x20')](this[_0x027a('0x7')],![],this['handleOpenBox'][_0x027a('0x10')](this));};EmailImap['prototype'][_0x027a('0x21')]=function(_0x2e97c5,_0x1b1a13){if(_0x2e97c5){this[_0x027a('0x12')](_0x2e97c5,!![]);}else{this['emit']('box',_0x1b1a13);this[_0x027a('0x22')]();}};EmailImap[_0x027a('0x14')][_0x027a('0x23')]=function(_0x129d5f){if(_0x129d5f){this['handleError'](_0x129d5f,!![]);}else{this[_0x027a('0x1')]['end']();}};EmailImap[_0x027a('0x14')]['readUnseen']=function(){this[_0x027a('0x1')]['search'](['UNSEEN'],this[_0x027a('0x24')]['bind'](this));};EmailImap['prototype'][_0x027a('0x24')]=function(_0x52ca99,_0xb4241d){if(_0x52ca99){this['handleError'](_0x52ca99,!![]);}else{if(_0xb4241d[_0x027a('0x25')]){try{var _0xc99acc=this['imap'][_0x027a('0x26')](_0xb4241d,{'bodies':'','markSeen':!![]});_0xc99acc['on']('message',this[_0x027a('0x27')][_0x027a('0x10')](this));_0xc99acc[_0x027a('0xb')](_0x027a('0x11'),this[_0x027a('0x28')][_0x027a('0x10')](this));_0xc99acc['once'](_0x027a('0xe'),this['handleFetchEnd'][_0x027a('0x10')](this));}catch(_0x55d8c5){logger[_0x027a('0x11')](_0x55d8c5);}}else{this[_0x027a('0x1')][_0x027a('0x29')](!![],this[_0x027a('0x23')][_0x027a('0x10')](this));}}};EmailImap['prototype'][_0x027a('0x27')]=function(_0x26e716){_0x26e716['on'](_0x027a('0x2a'),this[_0x027a('0x2b')][_0x027a('0x10')](this));_0x26e716[_0x027a('0xb')](_0x027a('0x2c'),this[_0x027a('0x2d')][_0x027a('0x10')](this));_0x26e716[_0x027a('0xb')](_0x027a('0xe'),this['handleMessageEnd'][_0x027a('0x10')](this));};EmailImap[_0x027a('0x14')][_0x027a('0x2b')]=function(_0x32c36e){simpleParser(_0x32c36e,{'Iconv':Iconv},this[_0x027a('0x2e')][_0x027a('0x10')](this));};EmailImap[_0x027a('0x14')]['handleMessageAttributes']=function(){};EmailImap[_0x027a('0x14')][_0x027a('0x2f')]=function(){};EmailImap[_0x027a('0x14')]['handleSimpleParser']=function(_0x22f96b,_0x5b7602){if(_0x22f96b){logger[_0x027a('0x11')](_0x22f96b);}else{var _0x1e833f=this;utils[_0x027a('0x30')](this['account'],_0x5b7602,function(_0x4f5140){_0x1e833f[_0x027a('0x31')](_0x027a('0x6'),_0x4f5140);});}};EmailImap['prototype'][_0x027a('0x32')]=function(){this[_0x027a('0x1')][_0x027a('0x29')](!![],this[_0x027a('0x23')][_0x027a('0x10')](this));};EmailImap[_0x027a('0x14')][_0x027a('0x28')]=function(_0x1866b9){this[_0x027a('0x12')](_0x1866b9);this[_0x027a('0x1')][_0x027a('0x29')](!![],this[_0x027a('0x23')][_0x027a('0x10')](this));};EmailImap[_0x027a('0x14')][_0x027a('0xf')]=function(){this[_0x027a('0x31')](_0x027a('0xe'));};EmailImap['prototype'][_0x027a('0x12')]=function(_0x2c1d88,_0x200474){logger[_0x027a('0x11')](_0x027a('0x12'),this[_0x027a('0xa')]['email'],JSON[_0x027a('0x33')](_0x2c1d88));var _0x3d0bb1='';if(_0x2c1d88){if(_0x2c1d88['textCode']){_0x3d0bb1=_0x2c1d88[_0x027a('0x34')];}else{for(var _0x5a5d5a in _0x2c1d88){if(_0x2c1d88['hasOwnProperty'](_0x5a5d5a)){_0x3d0bb1+=_[_0x027a('0x35')](_0x5a5d5a)+':\x20'+_0x2c1d88[_0x5a5d5a]+'\x0a';}}}}if(_0x200474){this['imap'][_0x027a('0xe')]();}else{this[_0x027a('0x31')](_0x027a('0x11'),_0x3d0bb1);this[_0x027a('0x31')](_0x027a('0xe'));}};module['exports']=EmailImap;
\ No newline at end of file
index 4f90fb1..5fcb8cf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x0121=['toString','verify','nodemailer','prototype','send','createTransport','use','compile','sendMail'];(function(_0x396b7a,_0x1edac5){var _0x3ee7eb=function(_0x1010cb){while(--_0x1010cb){_0x396b7a['push'](_0x396b7a['shift']());}};_0x3ee7eb(++_0x1edac5);}(_0x0121,0x1c4));var _0x1012=function(_0xbc540d,_0x1fa8c9){_0xbc540d=_0xbc540d-0x0;var _0x3c8ef6=_0x0121[_0xbc540d];return _0x3c8ef6;};'use strict';var nodemailer=require(_0x1012('0x0'));var inlineBase64=require('nodemailer-plugin-inline-base64');function EmailSmtp(){}EmailSmtp[_0x1012('0x1')][_0x1012('0x2')]=function(_0x5115ae,_0x49c0cb){return new Promise(function(_0x30a4cb,_0x1202b8){var _0x373096=nodemailer[_0x1012('0x3')](_0x5115ae);_0x373096[_0x1012('0x4')](_0x1012('0x5'),inlineBase64());_0x373096[_0x1012('0x6')](_0x49c0cb,function(_0x4c10d0,_0x2598c8){if(_0x4c10d0){_0x1202b8(_0x4c10d0[_0x1012('0x7')]());}else{_0x30a4cb(_0x2598c8);}});});};EmailSmtp[_0x1012('0x1')][_0x1012('0x8')]=function(_0x463c59){return new Promise(function(_0x385923,_0x127743){var _0x1b0eb0=nodemailer[_0x1012('0x3')](_0x463c59);_0x1b0eb0[_0x1012('0x8')](function(_0x5870db,_0x497f29){if(_0x5870db){_0x127743(_0x5870db['toString']());}else{if(_0x497f29){_0x385923(_0x497f29);}else{_0x127743('Not\x20verifired');}}});});};module['exports']=EmailSmtp;
\ No newline at end of file
+var _0x3f64=['Not\x20verifired','exports','nodemailer','nodemailer-plugin-inline-base64','prototype','send','createTransport','use','compile','toString','verify'];(function(_0x45c221,_0x238d88){var _0x1febd7=function(_0x5b0ce2){while(--_0x5b0ce2){_0x45c221['push'](_0x45c221['shift']());}};_0x1febd7(++_0x238d88);}(_0x3f64,0x115));var _0x43f6=function(_0x1a6589,_0x18e486){_0x1a6589=_0x1a6589-0x0;var _0x275976=_0x3f64[_0x1a6589];return _0x275976;};'use strict';var nodemailer=require(_0x43f6('0x0'));var inlineBase64=require(_0x43f6('0x1'));function EmailSmtp(){}EmailSmtp[_0x43f6('0x2')][_0x43f6('0x3')]=function(_0x19cf06,_0x30912e){return new Promise(function(_0x51be82,_0x4bb286){var _0x1a962a=nodemailer[_0x43f6('0x4')](_0x19cf06);_0x1a962a[_0x43f6('0x5')](_0x43f6('0x6'),inlineBase64());_0x1a962a['sendMail'](_0x30912e,function(_0x4e8f68,_0x194ab4){if(_0x4e8f68){_0x4bb286(_0x4e8f68[_0x43f6('0x7')]());}else{_0x51be82(_0x194ab4);}});});};EmailSmtp[_0x43f6('0x2')]['verify']=function(_0x4b188c){return new Promise(function(_0x19c483,_0x232873){var _0x4e8320=nodemailer['createTransport'](_0x4b188c);_0x4e8320[_0x43f6('0x8')](function(_0x52ac66,_0x2e5f75){if(_0x52ac66){_0x232873(_0x52ac66['toString']());}else{if(_0x2e5f75){_0x19c483(_0x2e5f75);}else{_0x232873(_0x43f6('0x9'));}}});});};module[_0x43f6('0xa')]=EmailSmtp;
\ No newline at end of file
index 0cf3478..98b89cd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3425=['split','join','Anonymous','length','isEmpty','@xcally.com','html','replace','includes','<img','attachments','push','filename','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','body','textAsHtml','<a\x20target=\x22_blank\x22\x20','message','originTo','email','originCc','bcc','attach','type','attachment','format','%s-%s','now','server/files/attachments/','writeFileSync','content','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','isAutoreply','parser','from','subject','messageId','inReplyTo','date','filter','application/ms-tnef','Email\x20message\x20%s\x20is\x20in\x20TNEF\x20format:\x20message\x20content\x20will\x20be\x20converted\x20by\x20the\x20system','parseBuffer','first','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','generateXOAuth2Token','user=','auth=Bearer\x20','toString','base64','lodash','moment','path','util','node-tnef','../../../config/logger','value','address','anonymous','generate','head','name','indexOf'];(function(_0x21a9d9,_0x4d5ac8){var _0x46adce=function(_0xfdd336){while(--_0xfdd336){_0x21a9d9['push'](_0x21a9d9['shift']());}};_0x46adce(++_0x4d5ac8);}(_0x3425,0x1b5));var _0x5342=function(_0xf57145,_0x5cd603){_0xf57145=_0xf57145-0x0;var _0x3358b1=_0x3425[_0xf57145];return _0x3358b1;};'use strict';var _=require(_0x5342('0x0'));var moment=require(_0x5342('0x1'));var random=require('randomstring');var fs=require('fs');var path=require(_0x5342('0x2'));var util=require(_0x5342('0x3'));var tnef=require(_0x5342('0x4'));var logger=require(_0x5342('0x5'))('email');var config=require('../../../config/environment');function getAddress(_0xfa2faf){var _0x2e47cc=_['head'](_0xfa2faf[_0x5342('0x6')]);return _0x2e47cc&&_0x2e47cc[_0x5342('0x7')]?_0x2e47cc[_0x5342('0x7')]:_0x5342('0x8')+random[_0x5342('0x9')](0x6)+'@xcally.com';}function getFirstName(_0x7a008a){var _0x5a2b3d=_[_0x5342('0xa')](_0x7a008a[_0x5342('0x6')]);if(_0x5a2b3d&&_0x5a2b3d['name']){if(_0x5a2b3d['name']==_0x5a2b3d[_0x5342('0x7')]){return _0x5a2b3d[_0x5342('0xb')]['substring'](0x0,_0x5a2b3d[_0x5342('0xb')][_0x5342('0xc')]('@'));}var _0x52779b=_0x5a2b3d['name'][_0x5342('0xd')](/\s+/);return _0x52779b['length']>0x1?_0x52779b['slice'](0x0,-0x1)[_0x5342('0xe')]('\x20'):_0x5a2b3d[_0x5342('0xb')];}return _0x5342('0xf');}function getLastName(_0x463ce2){var _0x330267=_[_0x5342('0xa')](_0x463ce2['value']);if(_0x330267&&_0x330267[_0x5342('0xb')]){var _0x43a962=_0x330267[_0x5342('0xb')][_0x5342('0xd')](/\s+/);return _0x43a962[_0x5342('0x10')]>0x1?_0x43a962['pop']():'';}return'';}function getMails(_0x35437e,_0x211226){var _0x3b34dc='';for(var _0x36dc88=0x0;_0x36dc88<_0x211226[_0x5342('0x6')][_0x5342('0x10')];_0x36dc88+=0x1){if(_0x211226[_0x5342('0x6')][_0x36dc88]['address']!==_0x35437e){if(!_[_0x5342('0x11')](_0x3b34dc)){_0x3b34dc+=',';}_0x3b34dc+=_0x211226[_0x5342('0x6')][_0x36dc88]['name']||_0x211226[_0x5342('0x6')][_0x36dc88][_0x5342('0x7')]||'';_0x3b34dc+='\x20<';_0x3b34dc+=_0x211226[_0x5342('0x6')][_0x36dc88][_0x5342('0x7')]?_0x211226['value'][_0x36dc88]['address']:'anonymous'+random[_0x5342('0x9')](0x6)+_0x5342('0x12');_0x3b34dc+='>';}}return _0x3b34dc;}function parseEmail(_0x35676a,_0x291625,_0x3fcff9){if(_0x291625['html']){var _0x2e6037=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x2e6037['test'](_0x291625[_0x5342('0x13')])){_0x291625['html']=_0x291625[_0x5342('0x13')][_0x5342('0x14')](_0x2e6037,'');}if(_0x291625[_0x5342('0x13')][_0x5342('0x15')](_0x5342('0x16'))){var _0x557e79=[];_0x291625[_0x5342('0x17')]['forEach'](_0x343291=>{_0x557e79[_0x5342('0x18')](_0x343291[_0x5342('0x19')]);});var _0x4a4d8e=/<img.*? _SRC(.*?)[^>]+>/g;var _0x48177c=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x545329=_0x291625[_0x5342('0x13')][_0x5342('0x14')](_0x48177c,_0x5342('0x1a'));var _0x36cef3=_0x545329[_0x5342('0x14')](_0x4a4d8e,_0x5342('0x1b'));for(let _0x135c6e=0x0;_0x135c6e<_0x557e79[_0x5342('0x10')];_0x135c6e++){var _0x270e2d=_0x36cef3[_0x5342('0x14')]('_IMG',_0x5342('0x1c')+_0x557e79[_0x135c6e]+_0x5342('0x1d'));_0x36cef3=_0x270e2d;}_0x291625['html']=_0x36cef3;}_0x3fcff9[_0x5342('0x1e')]=_0x291625['html'];}else{_0x3fcff9[_0x5342('0x1e')]=_0x291625[_0x5342('0x1f')];}if(_0x3fcff9[_0x5342('0x1e')]){_0x3fcff9['body']=_0x3fcff9['body'][_0x5342('0x14')](/<a\s+/gi,_0x5342('0x20'));}if(_0x291625['to']){_0x3fcff9[_0x5342('0x21')][_0x5342('0x22')]=getMails(null,_0x291625['to']);var _0x5786dd=getMails(_0x35676a[_0x5342('0x23')],_0x291625['to']);if(!_[_0x5342('0x11')](_0x5786dd)){_0x3fcff9['message']['cc']+=_0x5786dd;}}if(_0x291625['cc']){_0x3fcff9[_0x5342('0x21')][_0x5342('0x24')]=getMails(null,_0x291625['cc']);var _0xcf003=getMails(_0x35676a[_0x5342('0x23')],_0x291625['cc']);if(!_[_0x5342('0x11')](_0xcf003)){if(!_[_0x5342('0x11')](_0x3fcff9[_0x5342('0x21')]['cc'])){_0x3fcff9[_0x5342('0x21')]['cc']+=',';}_0x3fcff9[_0x5342('0x21')]['cc']+=_0xcf003;}}if(!_['includes'](_0x3fcff9[_0x5342('0x21')][_0x5342('0x22')],_0x35676a[_0x5342('0x23')])&&!_[_0x5342('0x15')](_0x3fcff9['message']['originCc'],_0x35676a[_0x5342('0x23')])){_0x3fcff9[_0x5342('0x21')][_0x5342('0x25')]=_0x35676a[_0x5342('0x23')];}if(_0x291625[_0x5342('0x17')]&&_0x291625[_0x5342('0x17')][_0x5342('0x10')]){_0x3fcff9[_0x5342('0x21')][_0x5342('0x26')]=_0x291625['attachments'][_0x5342('0x10')];for(var _0x4fa9ed=0x0,_0x4788ad,_0x1a5a36,_0x4e7a21;_0x4fa9ed<_0x291625[_0x5342('0x17')]['length'];_0x4fa9ed+=0x1){if(_0x291625[_0x5342('0x17')][_0x4fa9ed][_0x5342('0x27')]===_0x5342('0x28')){_0x4e7a21=_0x291625[_0x5342('0x17')][_0x4fa9ed]['filename']||'attachment-'+_0x4fa9ed;_0x4788ad=util[_0x5342('0x29')](_0x5342('0x2a'),Date[_0x5342('0x2b')](),_0x4e7a21);_0x1a5a36=path[_0x5342('0xe')](config['root'],_0x5342('0x2c'),_0x4788ad);fs[_0x5342('0x2d')](_0x1a5a36,_0x291625['attachments'][_0x4fa9ed][_0x5342('0x2e')]);_0x3fcff9[_0x5342('0x21')][_0x5342('0x17')][_0x5342('0x18')]({'name':_0x4e7a21,'basename':_0x4788ad,'type':_0x291625[_0x5342('0x17')][_0x4fa9ed][_0x5342('0x2f')],'filepath':_0x1a5a36});}}}if(_0x291625[_0x5342('0x30')]&&_0x291625['headerLines']['length']>0x0){var _0x217b3e=[_0x5342('0x31'),_0x5342('0x32'),_0x5342('0x33')];for(var _0x21649e=0x0;_0x21649e<_0x291625['headerLines'][_0x5342('0x10')];_0x21649e++){var _0x599132=_['indexOf'](_0x217b3e,_0x291625[_0x5342('0x30')][_0x21649e][_0x5342('0x34')]);if(_0x599132>=0x0){_0x3fcff9[_0x5342('0x35')]=!![];}}}return _0x3fcff9;}exports[_0x5342('0x36')]=function(_0x218550,_0x2c3f28,_0x22ea68){var _0x4746ec={'from':getAddress(_0x2c3f28['from']),'firstName':getFirstName(_0x2c3f28['from']),'lastName':getLastName(_0x2c3f28[_0x5342('0x37')]),'mapKey':'email','message':{'from':getMails(_0x218550[_0x5342('0x23')],_0x2c3f28['from']),'to':_0x218550['email'],'cc':'','subject':_0x2c3f28[_0x5342('0x38')]||'','messageId':_0x2c3f28[_0x5342('0x39')],'inReplyTo':_0x2c3f28[_0x5342('0x3a')],'sentAt':moment(_0x2c3f28[_0x5342('0x3b')])[_0x5342('0x29')]('YYYY-MM-DD\x20HH:mm:ss'),'attach':![],'attachments':[]}};if(!_0x2c3f28[_0x5342('0x13')]&&!_0x2c3f28['textAsHtml']){var _0x1a59c9=_[_0x5342('0x3c')](_0x2c3f28[_0x5342('0x17')],{'contentType':_0x5342('0x3d')});if(_0x1a59c9[_0x5342('0x10')]){logger['info'](util[_0x5342('0x29')](_0x5342('0x3e'),_0x2c3f28[_0x5342('0x39')]));tnef[_0x5342('0x3f')](_[_0x5342('0x40')](_0x1a59c9)[_0x5342('0x2e')],function(_0x29134c,_0x2417e9){if(_0x2417e9){_0x2c3f28[_0x5342('0x13')]=_0x2417e9[_0x5342('0x41')]||_0x5342('0x42');if(_0x2417e9['Attachments']){for(var _0x23c036=0x0;_0x23c036<_0x2417e9[_0x5342('0x43')][_0x5342('0x10')];_0x23c036++){var _0x4f92a0=_0x2417e9[_0x5342('0x43')][_0x23c036];_0x4746ec[_0x5342('0x21')][_0x5342('0x17')][_0x5342('0x18')]({'filename':_0x4f92a0[_0x5342('0x44')],'content':Buffer[_0x5342('0x37')](_0x4f92a0[_0x5342('0x45')])});}}}_0x22ea68(parseEmail(_0x218550,_0x2c3f28,_0x4746ec));});}else{_0x2c3f28['html']=_0x5342('0x42');_0x22ea68(parseEmail(_0x218550,_0x2c3f28,_0x4746ec));}}else{_0x22ea68(parseEmail(_0x218550,_0x2c3f28,_0x4746ec));}};exports[_0x5342('0x46')]=function(_0x5da43d,_0x415a35){var _0xe202c0=[_0x5342('0x47')+(_0x415a35||''),_0x5342('0x48')+_0x5da43d,'',''];return Buffer[_0x5342('0x37')](_0xe202c0[_0x5342('0xe')]('\ 1'),'utf-8')[_0x5342('0x49')](_0x5342('0x4a'));};
\ No newline at end of file
+var _0x7b22=['indexOf','split','length','slice','join','Anonymous','test','html','replace','includes','attachments','push','filename','_SRC','_IMG','<span\x20style=font-weight:bold>\x20[Attachment:\x20','\x20]</span>','textAsHtml','body','<a\x20target=\x22_blank\x22\x20','message','originTo','isEmpty','originCc','attach','attachment','attachment-','format','%s-%s','writeFileSync','contentType','headerLines','Auto-Submitted:\x20auto-replied','X-Auto-Response-Suppress:\x20All','Precedence:\x20auto_reply','line','isAutoreply','from','messageId','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','BodyHTML','<p>Empty\x20message</p>','Attachments','Title','Data','generateXOAuth2Token','user=','auth=Bearer\x20','utf-8','toString','base64','lodash','moment','randomstring','path','util','node-tnef','email','../../../config/environment','head','value','address','anonymous','generate','@xcally.com','name'];(function(_0x170395,_0x4297d3){var _0x54aef0=function(_0x39ce41){while(--_0x39ce41){_0x170395['push'](_0x170395['shift']());}};_0x54aef0(++_0x4297d3);}(_0x7b22,0x1e9));var _0x27b2=function(_0x1b964a,_0x40fdc2){_0x1b964a=_0x1b964a-0x0;var _0x2559fa=_0x7b22[_0x1b964a];return _0x2559fa;};'use strict';var _=require(_0x27b2('0x0'));var moment=require(_0x27b2('0x1'));var random=require(_0x27b2('0x2'));var fs=require('fs');var path=require(_0x27b2('0x3'));var util=require(_0x27b2('0x4'));var tnef=require(_0x27b2('0x5'));var logger=require('../../../config/logger')(_0x27b2('0x6'));var config=require(_0x27b2('0x7'));function getAddress(_0x47b1fd){var _0x40d60c=_[_0x27b2('0x8')](_0x47b1fd[_0x27b2('0x9')]);return _0x40d60c&&_0x40d60c[_0x27b2('0xa')]?_0x40d60c[_0x27b2('0xa')]:_0x27b2('0xb')+random[_0x27b2('0xc')](0x6)+_0x27b2('0xd');}function getFirstName(_0x232c9a){var _0x494035=_[_0x27b2('0x8')](_0x232c9a['value']);if(_0x494035&&_0x494035['name']){if(_0x494035[_0x27b2('0xe')]==_0x494035[_0x27b2('0xa')]){return _0x494035['name']['substring'](0x0,_0x494035[_0x27b2('0xe')][_0x27b2('0xf')]('@'));}var _0x317f18=_0x494035[_0x27b2('0xe')][_0x27b2('0x10')](/\s+/);return _0x317f18[_0x27b2('0x11')]>0x1?_0x317f18[_0x27b2('0x12')](0x0,-0x1)[_0x27b2('0x13')]('\x20'):_0x494035[_0x27b2('0xe')];}return _0x27b2('0x14');}function getLastName(_0x327a23){var _0xaf5a2d=_[_0x27b2('0x8')](_0x327a23[_0x27b2('0x9')]);if(_0xaf5a2d&&_0xaf5a2d['name']){var _0x3946ec=_0xaf5a2d[_0x27b2('0xe')][_0x27b2('0x10')](/\s+/);return _0x3946ec[_0x27b2('0x11')]>0x1?_0x3946ec['pop']():'';}return'';}function getMails(_0x5bbd35,_0x114ad0){var _0x4215ca='';for(var _0x5f0b0f=0x0;_0x5f0b0f<_0x114ad0[_0x27b2('0x9')][_0x27b2('0x11')];_0x5f0b0f+=0x1){if(_0x114ad0[_0x27b2('0x9')][_0x5f0b0f]['address']!==_0x5bbd35){if(!_['isEmpty'](_0x4215ca)){_0x4215ca+=',';}_0x4215ca+=_0x114ad0[_0x27b2('0x9')][_0x5f0b0f]['name']||_0x114ad0[_0x27b2('0x9')][_0x5f0b0f][_0x27b2('0xa')]||'';_0x4215ca+='\x20<';_0x4215ca+=_0x114ad0[_0x27b2('0x9')][_0x5f0b0f][_0x27b2('0xa')]?_0x114ad0[_0x27b2('0x9')][_0x5f0b0f]['address']:_0x27b2('0xb')+random[_0x27b2('0xc')](0x6)+'@xcally.com';_0x4215ca+='>';}}return _0x4215ca;}function parseEmail(_0x40ef9c,_0x14d10a,_0x1e8f8f){if(_0x14d10a['html']){var _0x1cda71=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi;while(_0x1cda71[_0x27b2('0x15')](_0x14d10a[_0x27b2('0x16')])){_0x14d10a['html']=_0x14d10a[_0x27b2('0x16')][_0x27b2('0x17')](_0x1cda71,'');}if(_0x14d10a[_0x27b2('0x16')][_0x27b2('0x18')]('<img')){var _0x5f46d4=[];_0x14d10a[_0x27b2('0x19')]['forEach'](_0x2bb317=>{_0x5f46d4[_0x27b2('0x1a')](_0x2bb317[_0x27b2('0x1b')]);});var _0x3042a4=/<img.*? _SRC(.*?)[^>]+>/g;var _0x1f0c13=/src="data:image\/([a-zA-Z]*);base64,([^"]*)"/g;var _0x6d1dbc=_0x14d10a[_0x27b2('0x16')][_0x27b2('0x17')](_0x1f0c13,_0x27b2('0x1c'));var _0x922429=_0x6d1dbc[_0x27b2('0x17')](_0x3042a4,_0x27b2('0x1d'));for(let _0x47a751=0x0;_0x47a751<_0x5f46d4[_0x27b2('0x11')];_0x47a751++){var _0x4389c1=_0x922429[_0x27b2('0x17')](_0x27b2('0x1d'),_0x27b2('0x1e')+_0x5f46d4[_0x47a751]+_0x27b2('0x1f'));_0x922429=_0x4389c1;}_0x14d10a[_0x27b2('0x16')]=_0x922429;}_0x1e8f8f['body']=_0x14d10a[_0x27b2('0x16')];}else{_0x1e8f8f['body']=_0x14d10a[_0x27b2('0x20')];}if(_0x1e8f8f[_0x27b2('0x21')]){_0x1e8f8f[_0x27b2('0x21')]=_0x1e8f8f[_0x27b2('0x21')]['replace'](/<a\s+/gi,_0x27b2('0x22'));}if(_0x14d10a['to']){_0x1e8f8f[_0x27b2('0x23')][_0x27b2('0x24')]=getMails(null,_0x14d10a['to']);var _0xed3b6a=getMails(_0x40ef9c['email'],_0x14d10a['to']);if(!_[_0x27b2('0x25')](_0xed3b6a)){_0x1e8f8f['message']['cc']+=_0xed3b6a;}}if(_0x14d10a['cc']){_0x1e8f8f['message'][_0x27b2('0x26')]=getMails(null,_0x14d10a['cc']);var _0x2b6cfd=getMails(_0x40ef9c[_0x27b2('0x6')],_0x14d10a['cc']);if(!_['isEmpty'](_0x2b6cfd)){if(!_['isEmpty'](_0x1e8f8f['message']['cc'])){_0x1e8f8f[_0x27b2('0x23')]['cc']+=',';}_0x1e8f8f[_0x27b2('0x23')]['cc']+=_0x2b6cfd;}}if(!_[_0x27b2('0x18')](_0x1e8f8f['message'][_0x27b2('0x24')],_0x40ef9c['email'])&&!_[_0x27b2('0x18')](_0x1e8f8f['message'][_0x27b2('0x26')],_0x40ef9c[_0x27b2('0x6')])){_0x1e8f8f[_0x27b2('0x23')]['bcc']=_0x40ef9c[_0x27b2('0x6')];}if(_0x14d10a[_0x27b2('0x19')]&&_0x14d10a[_0x27b2('0x19')][_0x27b2('0x11')]){_0x1e8f8f[_0x27b2('0x23')][_0x27b2('0x27')]=_0x14d10a['attachments']['length'];for(var _0x49ac97=0x0,_0x243bf9,_0x54c65a,_0x3156f4;_0x49ac97<_0x14d10a[_0x27b2('0x19')][_0x27b2('0x11')];_0x49ac97+=0x1){if(_0x14d10a[_0x27b2('0x19')][_0x49ac97]['type']===_0x27b2('0x28')){_0x3156f4=_0x14d10a['attachments'][_0x49ac97]['filename']||_0x27b2('0x29')+_0x49ac97;_0x243bf9=util[_0x27b2('0x2a')](_0x27b2('0x2b'),Date['now'](),_0x3156f4);_0x54c65a=path[_0x27b2('0x13')](config['root'],'server/files/attachments/',_0x243bf9);fs[_0x27b2('0x2c')](_0x54c65a,_0x14d10a[_0x27b2('0x19')][_0x49ac97]['content']);_0x1e8f8f['message'][_0x27b2('0x19')][_0x27b2('0x1a')]({'name':_0x3156f4,'basename':_0x243bf9,'type':_0x14d10a['attachments'][_0x49ac97][_0x27b2('0x2d')],'filepath':_0x54c65a});}}}if(_0x14d10a[_0x27b2('0x2e')]&&_0x14d10a[_0x27b2('0x2e')][_0x27b2('0x11')]>0x0){var _0x256fee=[_0x27b2('0x2f'),_0x27b2('0x30'),_0x27b2('0x31')];for(var _0x48df71=0x0;_0x48df71<_0x14d10a[_0x27b2('0x2e')][_0x27b2('0x11')];_0x48df71++){var _0x2693ee=_[_0x27b2('0xf')](_0x256fee,_0x14d10a['headerLines'][_0x48df71][_0x27b2('0x32')]);if(_0x2693ee>=0x0){_0x1e8f8f[_0x27b2('0x33')]=!![];}}}return _0x1e8f8f;}exports['parser']=function(_0x4e5c9e,_0x3935e0,_0x5ddebd){var _0xac1a5c={'from':getAddress(_0x3935e0[_0x27b2('0x34')]),'firstName':getFirstName(_0x3935e0[_0x27b2('0x34')]),'lastName':getLastName(_0x3935e0[_0x27b2('0x34')]),'mapKey':_0x27b2('0x6'),'message':{'from':getMails(_0x4e5c9e[_0x27b2('0x6')],_0x3935e0['from']),'to':_0x4e5c9e['email'],'cc':'','subject':_0x3935e0['subject']||'','messageId':_0x3935e0[_0x27b2('0x35')],'inReplyTo':_0x3935e0['inReplyTo'],'sentAt':moment(_0x3935e0[_0x27b2('0x36')])[_0x27b2('0x2a')](_0x27b2('0x37')),'attach':![],'attachments':[]}};if(!_0x3935e0[_0x27b2('0x16')]&&!_0x3935e0[_0x27b2('0x20')]){var _0x116381=_[_0x27b2('0x38')](_0x3935e0[_0x27b2('0x19')],{'contentType':_0x27b2('0x39')});if(_0x116381[_0x27b2('0x11')]){logger[_0x27b2('0x3a')](util[_0x27b2('0x2a')](_0x27b2('0x3b'),_0x3935e0[_0x27b2('0x35')]));tnef[_0x27b2('0x3c')](_['first'](_0x116381)['content'],function(_0x49f238,_0x1df211){if(_0x1df211){_0x3935e0[_0x27b2('0x16')]=_0x1df211[_0x27b2('0x3d')]||_0x27b2('0x3e');if(_0x1df211[_0x27b2('0x3f')]){for(var _0x5d80f8=0x0;_0x5d80f8<_0x1df211[_0x27b2('0x3f')][_0x27b2('0x11')];_0x5d80f8++){var _0x141c42=_0x1df211[_0x27b2('0x3f')][_0x5d80f8];_0xac1a5c[_0x27b2('0x23')][_0x27b2('0x19')][_0x27b2('0x1a')]({'filename':_0x141c42[_0x27b2('0x40')],'content':Buffer[_0x27b2('0x34')](_0x141c42[_0x27b2('0x41')])});}}}_0x5ddebd(parseEmail(_0x4e5c9e,_0x3935e0,_0xac1a5c));});}else{_0x3935e0[_0x27b2('0x16')]=_0x27b2('0x3e');_0x5ddebd(parseEmail(_0x4e5c9e,_0x3935e0,_0xac1a5c));}}else{_0x5ddebd(parseEmail(_0x4e5c9e,_0x3935e0,_0xac1a5c));}};exports[_0x27b2('0x42')]=function(_0x8bc12a,_0x1572a7){var _0xb177c8=[_0x27b2('0x43')+(_0x1572a7||''),_0x27b2('0x44')+_0x8bc12a,'',''];return Buffer[_0x27b2('0x34')](_0xb177c8['join']('\ 1'),_0x27b2('0x45'))[_0x27b2('0x46')](_0x27b2('0x47'));};
\ No newline at end of file
index d0739bb..baa767a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x60f1=['key','SERV','active','Imap','Smtp','lodash','name','Service'];(function(_0x31a2a6,_0x5f1c20){var _0x575a3e=function(_0x147651){while(--_0x147651){_0x31a2a6['push'](_0x31a2a6['shift']());}};_0x575a3e(++_0x5f1c20);}(_0x60f1,0x15d));var _0x160f=function(_0x5a2660,_0x52e389){_0x5a2660=_0x5a2660-0x0;var _0x542d3b=_0x60f1[_0x5a2660];return _0x542d3b;};'use strict';var _=require(_0x160f('0x0'));function MailAccount(_0xb5b2c1){this['id']=_0xb5b2c1['id']||0x0;this[_0x160f('0x1')]=_0xb5b2c1['name']||_0x160f('0x2');this[_0x160f('0x3')]=_0xb5b2c1[_0x160f('0x3')]||_0x160f('0x4');this[_0x160f('0x5')]=_0xb5b2c1[_0x160f('0x5')]||![];this[_0x160f('0x6')]=_0xb5b2c1[_0x160f('0x6')]||[];this['Smtp']=_0xb5b2c1[_0x160f('0x7')]||[];}module['exports']=MailAccount;
\ No newline at end of file
+var _0xb18a=['active','Imap','Smtp','exports','lodash','name','Service','key'];(function(_0x426a5d,_0x483c2d){var _0x454d3a=function(_0x12ea00){while(--_0x12ea00){_0x426a5d['push'](_0x426a5d['shift']());}};_0x454d3a(++_0x483c2d);}(_0xb18a,0x11c));var _0xab18=function(_0x125ff8,_0x41925f){_0x125ff8=_0x125ff8-0x0;var _0x2d9ef=_0xb18a[_0x125ff8];return _0x2d9ef;};'use strict';var _=require(_0xab18('0x0'));function MailAccount(_0x6d1310){this['id']=_0x6d1310['id']||0x0;this['name']=_0x6d1310[_0xab18('0x1')]||_0xab18('0x2');this[_0xab18('0x3')]=_0x6d1310[_0xab18('0x3')]||'SERV';this[_0xab18('0x4')]=_0x6d1310[_0xab18('0x4')]||![];this[_0xab18('0x5')]=_0x6d1310[_0xab18('0x5')]||[];this['Smtp']=_0x6d1310[_0xab18('0x6')]||[];}module[_0xab18('0x7')]=MailAccount;
\ No newline at end of file
index b13021c..58ee93a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34fc=['prototype','mailAccounts','length','isUndefined','merge','exports','lodash','../model/mailAccount','mapKeys','mergeFromDatabase','hasOwnProperty'];(function(_0x1b9530,_0x55b410){var _0x571515=function(_0x3e5f8e){while(--_0x3e5f8e){_0x1b9530['push'](_0x1b9530['shift']());}};_0x571515(++_0x55b410);}(_0x34fc,0x10e));var _0xc34f=function(_0x1fe769,_0x1f926b){_0x1fe769=_0x1fe769-0x0;var _0x225448=_0x34fc[_0x1fe769];return _0x225448;};'use strict';var _=require(_0xc34f('0x0'));var MailAccount=require(_0xc34f('0x1'));var Realtime=function(){this['mailAccounts']={};};function freeIsNotKey(_0xec9014,_0x53a2c8,_0x443a11){var _0x15e93c=_[_0xc34f('0x2')](_0xec9014,function(_0x58b18d,_0x5befbb){return _0x58b18d[_0x443a11];});for(var _0x4b1f25 in _0x53a2c8){if(_0x53a2c8['hasOwnProperty'](_0x4b1f25)){if(!_0x15e93c[_0x4b1f25]){delete _0x53a2c8[_0x4b1f25];}}}}Realtime['prototype'][_0xc34f('0x3')]=function(_0x2d2038,_0x17a1dc){for(var _0x535cb3 in _0x17a1dc){if(_0x2d2038[_0xc34f('0x4')](_0x535cb3)){_0x2d2038[_0x535cb3]=_0x17a1dc[_0x535cb3];}}};Realtime[_0xc34f('0x5')]['initMailAccounts']=function(){var _0x461544=this;return function(_0x587ecb){if(_0x587ecb){freeIsNotKey(_0x587ecb,_0x461544[_0xc34f('0x6')],'id');for(var _0x429279=0x0,_0x2fcbf3={},_0x161bf2={};_0x429279<_0x587ecb[_0xc34f('0x7')];_0x429279+=0x1){_0x2fcbf3=_0x587ecb[_0x429279];if(_[_0xc34f('0x8')](_0x461544[_0xc34f('0x6')][_0x2fcbf3['id']])){_0x461544['mailAccounts'][_0x2fcbf3['id']]=new MailAccount(_0x2fcbf3);}else{_[_0xc34f('0x9')](_0x461544['mailAccounts'][_0x2fcbf3['id']],_0x2fcbf3);}}}return _0x461544[_0xc34f('0x6')];};};module[_0xc34f('0xa')]=Realtime;
\ No newline at end of file
+var _0xc017=['exports','lodash','../model/mailAccount','mailAccounts','mapKeys','mergeFromDatabase','hasOwnProperty','prototype','isUndefined','merge'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc017,0x119));var _0x7c01=function(_0xafb8e6,_0x4b3a6b){_0xafb8e6=_0xafb8e6-0x0;var _0x36eec3=_0xc017[_0xafb8e6];return _0x36eec3;};'use strict';var _=require(_0x7c01('0x0'));var MailAccount=require(_0x7c01('0x1'));var Realtime=function(){this[_0x7c01('0x2')]={};};function freeIsNotKey(_0x28b2ee,_0x3d096f,_0x22b4b4){var _0x4c9a95=_[_0x7c01('0x3')](_0x28b2ee,function(_0x3ab361,_0x3b517c){return _0x3ab361[_0x22b4b4];});for(var _0xc911eb in _0x3d096f){if(_0x3d096f['hasOwnProperty'](_0xc911eb)){if(!_0x4c9a95[_0xc911eb]){delete _0x3d096f[_0xc911eb];}}}}Realtime['prototype'][_0x7c01('0x4')]=function(_0x1960f9,_0x104a38){for(var _0x4a11ae in _0x104a38){if(_0x1960f9[_0x7c01('0x5')](_0x4a11ae)){_0x1960f9[_0x4a11ae]=_0x104a38[_0x4a11ae];}}};Realtime[_0x7c01('0x6')]['initMailAccounts']=function(){var _0x3939e2=this;return function(_0x35ede8){if(_0x35ede8){freeIsNotKey(_0x35ede8,_0x3939e2[_0x7c01('0x2')],'id');for(var _0x115686=0x0,_0x4ba2f0={},_0x10e23e={};_0x115686<_0x35ede8['length'];_0x115686+=0x1){_0x4ba2f0=_0x35ede8[_0x115686];if(_[_0x7c01('0x7')](_0x3939e2['mailAccounts'][_0x4ba2f0['id']])){_0x3939e2[_0x7c01('0x2')][_0x4ba2f0['id']]=new MailAccount(_0x4ba2f0);}else{_[_0x7c01('0x8')](_0x3939e2[_0x7c01('0x2')][_0x4ba2f0['id']],_0x4ba2f0);}}}return _0x3939e2[_0x7c01('0x2')];};};module[_0x7c01('0x9')]=Realtime;
\ No newline at end of file
index 5b835f0..5d61695 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa992=['GetMailAccount','provider','service','email','active','key','ListId','TemplateId','MailServerIn','Imap','CloudProvider','type','data5','MailServerOut','Smtp','name','notify','NotifyMailAccount','../client','getMailAccounts','Request'];(function(_0x167cc1,_0x56ef5a){var _0x10bc4b=function(_0xd6a255){while(--_0xd6a255){_0x167cc1['push'](_0x167cc1['shift']());}};_0x10bc4b(++_0x56ef5a);}(_0xa992,0x18c));var _0x2a99=function(_0x3db6dd,_0x450556){_0x3db6dd=_0x3db6dd-0x0;var _0x4a3c70=_0xa992[_0x3db6dd];return _0x4a3c70;};'use strict';var client=require(_0x2a99('0x0'));exports[_0x2a99('0x1')]=function(){return function(){return client[_0x2a99('0x2')](_0x2a99('0x3'),{'options':{'attributes':['id','name',_0x2a99('0x4'),_0x2a99('0x5'),_0x2a99('0x6'),_0x2a99('0x7'),_0x2a99('0x8'),_0x2a99('0x9'),_0x2a99('0xa')],'raw':![],'include':[{'model':_0x2a99('0xb'),'as':_0x2a99('0xc'),'include':[{'model':_0x2a99('0xd'),'attributes':['id','name',_0x2a99('0x5'),_0x2a99('0xe'),_0x2a99('0xf')],'as':_0x2a99('0xd')}]},{'model':_0x2a99('0x10'),'as':_0x2a99('0x11'),'include':[{'model':_0x2a99('0xd'),'attributes':['id',_0x2a99('0x12'),_0x2a99('0x5'),_0x2a99('0xe'),_0x2a99('0xf')],'as':'CloudProvider'}]}]},'log':'getMailAccount'});};};exports[_0x2a99('0x13')]=function(_0x3a2457,_0x108682){return client[_0x2a99('0x2')](_0x2a99('0x14'),{'account':{'id':_0x3a2457},'body':_0x108682,'log':_0x2a99('0x14')});};
\ No newline at end of file
+var _0x8be8=['service','email','active','ListId','MailServerIn','CloudProvider','type','data5','Smtp','getMailAccount','notify','NotifyMailAccount','../client','getMailAccounts','Request','GetMailAccount','name','provider'];(function(_0x379b2f,_0xb8ab79){var _0x294bde=function(_0x46a376){while(--_0x46a376){_0x379b2f['push'](_0x379b2f['shift']());}};_0x294bde(++_0xb8ab79);}(_0x8be8,0xf6));var _0x88be=function(_0x1b4dd5,_0x3eec03){_0x1b4dd5=_0x1b4dd5-0x0;var _0x31aeb6=_0x8be8[_0x1b4dd5];return _0x31aeb6;};'use strict';var client=require(_0x88be('0x0'));exports[_0x88be('0x1')]=function(){return function(){return client[_0x88be('0x2')](_0x88be('0x3'),{'options':{'attributes':['id',_0x88be('0x4'),_0x88be('0x5'),_0x88be('0x6'),_0x88be('0x7'),_0x88be('0x8'),'key',_0x88be('0x9'),'TemplateId'],'raw':![],'include':[{'model':_0x88be('0xa'),'as':'Imap','include':[{'model':_0x88be('0xb'),'attributes':['id',_0x88be('0x4'),_0x88be('0x6'),_0x88be('0xc'),_0x88be('0xd')],'as':_0x88be('0xb')}]},{'model':'MailServerOut','as':_0x88be('0xe'),'include':[{'model':'CloudProvider','attributes':['id',_0x88be('0x4'),_0x88be('0x6'),_0x88be('0xc'),'data5'],'as':_0x88be('0xb')}]}]},'log':_0x88be('0xf')});};};exports[_0x88be('0x10')]=function(_0x56d207,_0x2154c6){return client['Request'](_0x88be('0x11'),{'account':{'id':_0x56d207},'body':_0x2154c6,'log':'NotifyMailAccount'});};
\ No newline at end of file
index 020c7fb..383fd5b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xacaf=['Request','ShowSetting','loginMailFrequency','../client','getSettings'];(function(_0x3b05ff,_0x386d69){var _0x155a3b=function(_0x3dd606){while(--_0x3dd606){_0x3b05ff['push'](_0x3b05ff['shift']());}};_0x155a3b(++_0x386d69);}(_0xacaf,0x85));var _0xfaca=function(_0x435044,_0x36ab8e){_0x435044=_0x435044-0x0;var _0x33d4c6=_0xacaf[_0x435044];return _0x33d4c6;};'use strict';var client=require(_0xfaca('0x0'));exports[_0xfaca('0x1')]=function(){return client[_0xfaca('0x2')](_0xfaca('0x3'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0xfaca('0x4')]},'log':'GetSettings'});};
\ No newline at end of file
+var _0xc6f8=['ShowSetting','loginMailFrequency','GetSettings','getSettings','Request'];(function(_0x20a584,_0xe384a5){var _0x4b41a8=function(_0x2127c6){while(--_0x2127c6){_0x20a584['push'](_0x20a584['shift']());}};_0x4b41a8(++_0xe384a5);}(_0xc6f8,0x1cf));var _0x8c6f=function(_0x5b231d,_0x476bf7){_0x5b231d=_0x5b231d-0x0;var _0x3aa6a0=_0xc6f8[_0x5b231d];return _0x3aa6a0;};'use strict';var client=require('../client');exports[_0x8c6f('0x0')]=function(){return client[_0x8c6f('0x1')](_0x8c6f('0x2'),{'options':{'raw':!![],'where':{'id':0x1},'attributes':[_0x8c6f('0x3')]},'log':_0x8c6f('0x4')});};
\ No newline at end of file
index 57eab4c..6fa370c 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(_0x2c91e9,_0x2fb965){var _0x13f0ff=function(_0xb39edf){while(--_0xb39edf){_0x2c91e9['push'](_0x2c91e9['shift']());}};_0x13f0ff(++_0x2fb965);}(_0xa9e0,0x123));var _0x0a9e=function(_0x25bea7,_0x49ab45){_0x25bea7=_0x25bea7-0x0;var _0x175952=_0xa9e0[_0x25bea7];return _0x175952;};'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(_0x4a9fb1,_0x273043){var _0x348672=function(_0x142b69){while(--_0x142b69){_0x4a9fb1['push'](_0x4a9fb1['shift']());}};_0x348672(++_0x273043);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5037ab,_0x43209e){_0x5037ab=_0x5037ab-0x0;var _0x512adb=_0xa9e0[_0x5037ab];return _0x512adb;};'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 0534fa5..ce7f4e2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe392=['../../routes','log','Express\x20server\x20listening\x20on\x20port\x20%d!','lodash','express','sticky-session','ioredis','../../config/environment','timeout','listen','port','socket.io','websocket','polling','redis','defaults','localhost','adapter','socket.io-redis','default','../../config/socketio'];(function(_0x14add3,_0x13ce8d){var _0x4a174f=function(_0x2b3ed7){while(--_0x2b3ed7){_0x14add3['push'](_0x14add3['shift']());}};_0x4a174f(++_0x13ce8d);}(_0xe392,0x114));var _0x2e39=function(_0x3f78cb,_0x5981cc){_0x3f78cb=_0x3f78cb-0x0;var _0x33d903=_0xe392[_0x3f78cb];return _0x33d903;};'use strict';var _=require(_0x2e39('0x0'));var http=require('http');var express=require(_0x2e39('0x1'));var sticky=require(_0x2e39('0x2'));var Redis=require(_0x2e39('0x3'));var config=require(_0x2e39('0x4'));var app=express();var server=http['createServer'](app);server[_0x2e39('0x5')]=0xdbba0;if(sticky[_0x2e39('0x6')](server,config[_0x2e39('0x7')])){var socketio=require(_0x2e39('0x8'))(server,{'transports':[_0x2e39('0x9'),_0x2e39('0xa')]});config[_0x2e39('0xb')]=_[_0x2e39('0xc')](config[_0x2e39('0xb')],{'host':_0x2e39('0xd'),'port':0x18eb});socketio[_0x2e39('0xe')](require(_0x2e39('0xf'))({'pubClient':new Redis(config[_0x2e39('0xb')]),'subClient':new Redis(config['redis'])}));require('../../config/triggers')[_0x2e39('0x10')]();require(_0x2e39('0x11'))[_0x2e39('0x10')](socketio);require('../../config/express')[_0x2e39('0x10')](app);require(_0x2e39('0x12'))[_0x2e39('0x10')](app);}else{server['once']('listening',function(){console[_0x2e39('0x13')](_0x2e39('0x14'),config[_0x2e39('0x7')]);});}exports=module['exports']=app;
\ No newline at end of file
+var _0xfaae=['default','../../routes','once','listening','log','exports','lodash','http','express','ioredis','../../config/environment','timeout','port','websocket','polling','redis','defaults','localhost','adapter','socket.io-redis','../../config/triggers','../../config/socketio'];(function(_0xe9adfd,_0x454c5e){var _0x20b886=function(_0x445c76){while(--_0x445c76){_0xe9adfd['push'](_0xe9adfd['shift']());}};_0x20b886(++_0x454c5e);}(_0xfaae,0x17c));var _0xefaa=function(_0x805eed,_0x5233ab){_0x805eed=_0x805eed-0x0;var _0x10757a=_0xfaae[_0x805eed];return _0x10757a;};'use strict';var _=require(_0xefaa('0x0'));var http=require(_0xefaa('0x1'));var express=require(_0xefaa('0x2'));var sticky=require('sticky-session');var Redis=require(_0xefaa('0x3'));var config=require(_0xefaa('0x4'));var app=express();var server=http['createServer'](app);server[_0xefaa('0x5')]=0xdbba0;if(sticky['listen'](server,config[_0xefaa('0x6')])){var socketio=require('socket.io')(server,{'transports':[_0xefaa('0x7'),_0xefaa('0x8')]});config[_0xefaa('0x9')]=_[_0xefaa('0xa')](config[_0xefaa('0x9')],{'host':_0xefaa('0xb'),'port':0x18eb});socketio[_0xefaa('0xc')](require(_0xefaa('0xd'))({'pubClient':new Redis(config[_0xefaa('0x9')]),'subClient':new Redis(config[_0xefaa('0x9')])}));require(_0xefaa('0xe'))['default']();require(_0xefaa('0xf'))['default'](socketio);require('../../config/express')[_0xefaa('0x10')](app);require(_0xefaa('0x11'))[_0xefaa('0x10')](app);}else{server[_0xefaa('0x12')](_0xefaa('0x13'),function(){console[_0xefaa('0x14')]('Express\x20server\x20listening\x20on\x20port\x20%d!',config[_0xefaa('0x6')]);});}exports=module[_0xefaa('0x15')]=app;
\ No newline at end of file
index 7b429b5..668f671 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5931=['http','Request','request','then','debug','rpc','error','message','exports','jayson/promise','../../config/logger','routing'];(function(_0x30f20c,_0x1016dc){var _0xab0dea=function(_0x4a593b){while(--_0x4a593b){_0x30f20c['push'](_0x30f20c['shift']());}};_0xab0dea(++_0x1016dc);}(_0x5931,0x159));var _0x1593=function(_0x2f45ea,_0x15c656){_0x2f45ea=_0x2f45ea-0x0;var _0x485a84=_0x5931[_0x2f45ea];return _0x485a84;};'use strict';var jayson=require(_0x1593('0x0'));var BPromise=require('bluebird');var logger=require(_0x1593('0x1'))(_0x1593('0x2'));var client=jayson['client'][_0x1593('0x3')]({'port':0x2329});client[_0x1593('0x4')]=function(_0x55df1a,_0x4b04b5){return new BPromise(function(_0x3191ba,_0xdb231b){return client[_0x1593('0x5')](_0x55df1a,_0x4b04b5)[_0x1593('0x6')](function(_0x30c5bc){logger[_0x1593('0x7')](_0x1593('0x8'),_0x1593('0x2'),_0x55df1a,_0x4b04b5,_0x30c5bc);if(_0x30c5bc[_0x1593('0x9')]){logger[_0x1593('0x9')](_0x1593('0x8'),_0x1593('0x2'),_0x55df1a,_0x30c5bc['error'][_0x1593('0xa')],_0x4b04b5);return _0xdb231b(_0x30c5bc[_0x1593('0x9')][_0x1593('0xa')]);}else{return _0x3191ba(_0x30c5bc['result']);}})['catch'](function(_0x5071c8){logger[_0x1593('0x9')](_0x1593('0x8'),_0x1593('0x2'),_0x55df1a,_0x5071c8,_0x4b04b5);return _0xdb231b(_0x5071c8);});});};module[_0x1593('0xb')]=client;
\ No newline at end of file
+var _0x8f7a=['message','exports','../../config/logger','client','request','then','debug','rpc','routing','error'];(function(_0x2109cd,_0x9ae774){var _0x287c46=function(_0x11f9da){while(--_0x11f9da){_0x2109cd['push'](_0x2109cd['shift']());}};_0x287c46(++_0x9ae774);}(_0x8f7a,0x192));var _0xa8f7=function(_0x1c0b34,_0x425ab7){_0x1c0b34=_0x1c0b34-0x0;var _0x148223=_0x8f7a[_0x1c0b34];return _0x148223;};'use strict';var jayson=require('jayson/promise');var BPromise=require('bluebird');var logger=require(_0xa8f7('0x0'))('routing');var client=jayson[_0xa8f7('0x1')]['http']({'port':0x2329});client['Request']=function(_0x1da962,_0xead9c){return new BPromise(function(_0x4ca2ff,_0x3d3737){return client[_0xa8f7('0x2')](_0x1da962,_0xead9c)[_0xa8f7('0x3')](function(_0x9bf7f5){logger[_0xa8f7('0x4')](_0xa8f7('0x5'),_0xa8f7('0x6'),_0x1da962,_0xead9c,_0x9bf7f5);if(_0x9bf7f5[_0xa8f7('0x7')]){logger[_0xa8f7('0x7')]('rpc',_0xa8f7('0x6'),_0x1da962,_0x9bf7f5['error'][_0xa8f7('0x8')],_0xead9c);return _0x3d3737(_0x9bf7f5[_0xa8f7('0x7')][_0xa8f7('0x8')]);}else{return _0x4ca2ff(_0x9bf7f5['result']);}})['catch'](function(_0x2205b5){logger[_0xa8f7('0x7')](_0xa8f7('0x5'),'routing',_0x1da962,_0x2205b5,_0xead9c);return _0x3d3737(_0x2205b5);});});};module[_0xa8f7('0x9')]=client;
\ No newline at end of file
index bea39aa..015023e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4f38=['./rpc/whatsappQueue','resolve','then','getAgents','initAgents','getIntervals','initIntervals','initOpenchannelQueues','getChatQueues','initChatQueues','getSmsQueues','initSmsQueues','getMailQueues','initMailQueues','getFaxQueues','getWhatsappQueues','listen','catch','./server','./realtime','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue','./rpc/smsQueue','./rpc/mailQueue','./rpc/faxQueue'];(function(_0x3aef49,_0x5022a4){var _0x299bb9=function(_0x57a8c4){while(--_0x57a8c4){_0x3aef49['push'](_0x3aef49['shift']());}};_0x299bb9(++_0x5022a4);}(_0x4f38,0x13b));var _0x84f3=function(_0x2757e1,_0x3a920d){_0x2757e1=_0x2757e1-0x0;var _0x1a8b5e=_0x4f38[_0x2757e1];return _0x1a8b5e;};'use strict';var BPromise=require('bluebird');var server=require(_0x84f3('0x0'));var Realtime=require(_0x84f3('0x1'));var user=require(_0x84f3('0x2'));var interval=require(_0x84f3('0x3'));var openchannelQueue=require(_0x84f3('0x4'));var chatQueue=require(_0x84f3('0x5'));var smsQueue=require(_0x84f3('0x6'));var mailQueue=require(_0x84f3('0x7'));var faxQueue=require(_0x84f3('0x8'));var whatsappQueue=require(_0x84f3('0x9'));var realtime=new Realtime();function initRealtime(){return BPromise[_0x84f3('0xa')]()[_0x84f3('0xb')](user[_0x84f3('0xc')]())[_0x84f3('0xb')](realtime[_0x84f3('0xd')]())[_0x84f3('0xb')](interval[_0x84f3('0xe')]())[_0x84f3('0xb')](realtime[_0x84f3('0xf')]())[_0x84f3('0xb')](openchannelQueue['getOpenchannelQueues']())[_0x84f3('0xb')](realtime[_0x84f3('0x10')]())['then'](chatQueue[_0x84f3('0x11')]())[_0x84f3('0xb')](realtime[_0x84f3('0x12')]())['then'](smsQueue[_0x84f3('0x13')]())[_0x84f3('0xb')](realtime[_0x84f3('0x14')]())[_0x84f3('0xb')](mailQueue[_0x84f3('0x15')]())[_0x84f3('0xb')](realtime[_0x84f3('0x16')]())[_0x84f3('0xb')](faxQueue[_0x84f3('0x17')]())[_0x84f3('0xb')](realtime['initFaxQueues']())[_0x84f3('0xb')](whatsappQueue[_0x84f3('0x18')]())['then'](realtime['initWhatsappQueues']())[_0x84f3('0xb')](function(){return realtime;});}function main(){return server[_0x84f3('0x19')](realtime)[_0x84f3('0xb')](function(_0x247ef6){return initRealtime();})[_0x84f3('0xb')](function(_0x4a9049){return setInterval(initRealtime,0x1388);})[_0x84f3('0x1a')](function(_0x2365ac){console['log'](_0x2365ac);});}main();
\ No newline at end of file
+var _0xa8b3=['./rpc/smsQueue','./rpc/faxQueue','resolve','getAgents','initAgents','then','getIntervals','initIntervals','initOpenchannelQueues','getChatQueues','getSmsQueues','getMailQueues','initMailQueues','getFaxQueues','initFaxQueues','getWhatsappQueues','initWhatsappQueues','listen','log','bluebird','./server','./rpc/user','./rpc/interval','./rpc/openchannelQueue','./rpc/chatQueue'];(function(_0x5493e8,_0x129c8a){var _0xafda0c=function(_0x2d566f){while(--_0x2d566f){_0x5493e8['push'](_0x5493e8['shift']());}};_0xafda0c(++_0x129c8a);}(_0xa8b3,0x18a));var _0x3a8b=function(_0x2df1f2,_0x58d388){_0x2df1f2=_0x2df1f2-0x0;var _0x38652b=_0xa8b3[_0x2df1f2];return _0x38652b;};'use strict';var BPromise=require(_0x3a8b('0x0'));var server=require(_0x3a8b('0x1'));var Realtime=require('./realtime');var user=require(_0x3a8b('0x2'));var interval=require(_0x3a8b('0x3'));var openchannelQueue=require(_0x3a8b('0x4'));var chatQueue=require(_0x3a8b('0x5'));var smsQueue=require(_0x3a8b('0x6'));var mailQueue=require('./rpc/mailQueue');var faxQueue=require(_0x3a8b('0x7'));var whatsappQueue=require('./rpc/whatsappQueue');var realtime=new Realtime();function initRealtime(){return BPromise[_0x3a8b('0x8')]()['then'](user[_0x3a8b('0x9')]())['then'](realtime[_0x3a8b('0xa')]())[_0x3a8b('0xb')](interval[_0x3a8b('0xc')]())[_0x3a8b('0xb')](realtime[_0x3a8b('0xd')]())[_0x3a8b('0xb')](openchannelQueue['getOpenchannelQueues']())['then'](realtime[_0x3a8b('0xe')]())['then'](chatQueue[_0x3a8b('0xf')]())[_0x3a8b('0xb')](realtime['initChatQueues']())[_0x3a8b('0xb')](smsQueue[_0x3a8b('0x10')]())[_0x3a8b('0xb')](realtime['initSmsQueues']())[_0x3a8b('0xb')](mailQueue[_0x3a8b('0x11')]())[_0x3a8b('0xb')](realtime[_0x3a8b('0x12')]())['then'](faxQueue[_0x3a8b('0x13')]())[_0x3a8b('0xb')](realtime[_0x3a8b('0x14')]())['then'](whatsappQueue[_0x3a8b('0x15')]())[_0x3a8b('0xb')](realtime[_0x3a8b('0x16')]())[_0x3a8b('0xb')](function(){return realtime;});}function main(){return server[_0x3a8b('0x17')](realtime)[_0x3a8b('0xb')](function(_0x31b365){return initRealtime();})['then'](function(_0x1d905a){return setInterval(initRealtime,0x1388);})['catch'](function(_0x38fa84){console[_0x3a8b('0x18')](_0x38fa84);});}main();
\ No newline at end of file
index 9ed1f5c..63c8009 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['lodash','util','EventEmitter','init','isNil','ignoreFactChanges','inherits','activeRules','prototype','register','isArray','rules','isObject','sync','orderBy','asc','execute','clone','ruleRef','name','index_','push','call','nextTick','next','isEqual','restart','length','condition','matchPath','noop','findRules','filter','prioritize','priority','toJSON','map','consequence','toString','fromJSON','isString','parse'];(function(_0x34ac43,_0x4ba863){var _0x4d4a7c=function(_0x29edfd){while(--_0x29edfd){_0x34ac43['push'](_0x34ac43['shift']());}};_0x4d4a7c(++_0x4ba863);}(_0x5fc3,0xa8));var _0x35fc=function(_0x5400b,_0x55943a){_0x5400b=_0x5400b-0x0;var _0x36a39b=_0x5fc3[_0x5400b];return _0x36a39b;};'use strict';var _=require(_0x35fc('0x0'));var util=require(_0x35fc('0x1'));var EventEmitter=require('events')[_0x35fc('0x2')];function RuleEngine(_0x2ac6da,_0x196bc2){this[_0x35fc('0x3')]();if(!_[_0x35fc('0x4')](_0x2ac6da)){this['register'](_0x2ac6da);}if(_0x196bc2){this[_0x35fc('0x5')]=_0x196bc2[_0x35fc('0x5')];}return this;}util[_0x35fc('0x6')](RuleEngine,EventEmitter);RuleEngine['prototype']['init']=function(_0x19a0d1){this['rules']=[];this[_0x35fc('0x7')]=[];};RuleEngine[_0x35fc('0x8')][_0x35fc('0x9')]=function(_0x1e5f90){if(Array[_0x35fc('0xa')](_0x1e5f90)){this[_0x35fc('0xb')]=this[_0x35fc('0xb')]['concat'](_0x1e5f90);}else if(_0x1e5f90!==null&&_[_0x35fc('0xc')](_0x1e5f90)){this[_0x35fc('0xb')]['push'](_0x1e5f90);}this[_0x35fc('0xd')]();};RuleEngine[_0x35fc('0x8')]['sync']=function(){this[_0x35fc('0x7')]=this[_0x35fc('0xb')]['filter'](function(_0x4cbe74){if(_[_0x35fc('0x4')](_0x4cbe74['on'])){_0x4cbe74['on']=!![];}if(_0x4cbe74['on']===!![]){return _0x4cbe74;}});this['activeRules']=_[_0x35fc('0xe')](this[_0x35fc('0x7')],['p'],[_0x35fc('0xf')]);};RuleEngine[_0x35fc('0x8')][_0x35fc('0x10')]=function(_0x5cfe94,_0x59507a){var _0x5eac0f=![];_0x5cfe94['result']=!![];var _0x398b67=_[_0x35fc('0x11')](_0x5cfe94);var _0x53b898=_[_0x35fc('0x11')](_0x5cfe94);var _0x227a49=this[_0x35fc('0x7')];var _0x480851=[];var _0x26ba54=this[_0x35fc('0x5')];(function FnRuleLoop(_0x553677){var _0x41e165={'rules':function(){return _0x227a49;},'rule':function(){return _0x227a49[_0x553677];},'when':function(_0x363e47){if(_0x363e47){var _0x2e513b=_0x227a49[_0x553677]['consequence'];_0x2e513b[_0x35fc('0x12')]=_0x227a49[_0x553677]['id']||_0x227a49[_0x553677][_0x35fc('0x13')]||_0x35fc('0x14')+_0x553677;process['nextTick'](function(){_0x480851[_0x35fc('0x15')](_0x2e513b[_0x35fc('0x12')]);_0x2e513b[_0x35fc('0x16')](_0x398b67,_0x41e165);});}else{process[_0x35fc('0x17')](function(){_0x41e165[_0x35fc('0x18')]();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x5eac0f=!![];return FnRuleLoop(0x0);},'next':function(_0x21f1a9){if(!_0x26ba54&&!_[_0x35fc('0x19')](_0x53b898,_0x398b67)){_0x53b898=_[_0x35fc('0x11')](_0x398b67);process[_0x35fc('0x17')](function(){_0x41e165[_0x35fc('0x1a')]();});}else{process['nextTick'](function(){if(_[_0x35fc('0x4')](_0x21f1a9)){return FnRuleLoop(_0x553677+0x1);}else{return FnRuleLoop(_0x21f1a9);}});}}};if(_0x553677<_0x227a49[_0x35fc('0x1b')]&&_0x5eac0f===![]){var _0x257719=_0x227a49[_0x553677][_0x35fc('0x1c')];_0x257719[_0x35fc('0x16')](_0x398b67,_0x41e165);}else{process['nextTick'](function(){_0x398b67[_0x35fc('0x1d')]=_0x480851;return _0x59507a?_0x59507a(_0x398b67):_[_0x35fc('0x1e')]();});}}(0x0));};RuleEngine['prototype'][_0x35fc('0x1f')]=function(_0x5a93df){if(_[_0x35fc('0x4')](_0x5a93df)){return this['rules'];}else{var _0x4086e9=_['matches'](_0x5a93df);return _[_0x35fc('0x20')](this[_0x35fc('0xb')],_0x4086e9);}};RuleEngine['prototype']['turn']=function(_0x47774c,_0x58edb6){var _0x274208=_0x47774c==='on'||_0x47774c==='ON'?!![]:![];var _0x1a5d92=this['findRules'](_0x58edb6);for(var _0x26b7cb=0x0,_0x645eac=_0x1a5d92[_0x35fc('0x1b')];_0x26b7cb<_0x645eac;_0x26b7cb+=0x1){_0x1a5d92[_0x26b7cb]['on']=_0x274208;}this[_0x35fc('0xd')]();};RuleEngine[_0x35fc('0x8')][_0x35fc('0x21')]=function(_0x11ccdb,_0x451f0c){_0x11ccdb=parseInt(_0x11ccdb,0xa);var _0x54aedc=this[_0x35fc('0x1f')](_0x451f0c);for(var _0x220931=0x0,_0x22af18=_0x54aedc['length'];_0x220931<_0x22af18;_0x220931+=0x1){_0x54aedc[_0x220931][_0x35fc('0x22')]=_0x11ccdb;}this[_0x35fc('0xd')]();};RuleEngine[_0x35fc('0x8')][_0x35fc('0x23')]=function(){var _0xd8a4ca=this[_0x35fc('0xb')];if(_0xd8a4ca instanceof Array){_0xd8a4ca=_0xd8a4ca[_0x35fc('0x24')](function(_0x37b435){_0x37b435[_0x35fc('0x1c')]=_0x37b435[_0x35fc('0x1c')]['toString']();_0x37b435['consequence']=_0x37b435[_0x35fc('0x25')]['toString']();return _0x37b435;});}else if(!_[_0x35fc('0x4')](_0xd8a4ca)){_0xd8a4ca[_0x35fc('0x1c')]=_0xd8a4ca[_0x35fc('0x1c')][_0x35fc('0x26')]();_0xd8a4ca[_0x35fc('0x25')]=_0xd8a4ca[_0x35fc('0x25')]['toString']();}return _0xd8a4ca;};RuleEngine[_0x35fc('0x8')][_0x35fc('0x27')]=function(_0x46b9ef){this[_0x35fc('0x3')]();if(_[_0x35fc('0x28')](_0x46b9ef)){_0x46b9ef=JSON[_0x35fc('0x29')](_0x46b9ef);}if(_0x46b9ef instanceof Array){_0x46b9ef=_0x46b9ef['map'](function(_0x2483be){_0x2483be[_0x35fc('0x1c')]=eval('('+_0x2483be[_0x35fc('0x1c')]+')');_0x2483be['consequence']=eval('('+_0x2483be[_0x35fc('0x25')]+')');return _0x2483be;});}else if(_0x46b9ef!==null&&typeof _0x46b9ef=='object'){_0x46b9ef[_0x35fc('0x1c')]=eval('('+_0x46b9ef[_0x35fc('0x1c')]+')');_0x46b9ef[_0x35fc('0x25')]=eval('('+_0x46b9ef[_0x35fc('0x25')]+')');}this['register'](_0x46b9ef);};module['exports']=RuleEngine;
\ No newline at end of file
+var _0x326f=['orderBy','asc','result','clone','consequence','nextTick','push','isEqual','condition','call','matchPath','noop','matches','filter','turn','length','prioritize','findRules','priority','toJSON','map','toString','fromJSON','isString','lodash','EventEmitter','init','isNil','register','ignoreFactChanges','inherits','prototype','rules','activeRules','concat','isObject','sync'];(function(_0x2d98c6,_0x89828e){var _0x1081eb=function(_0x56a7be){while(--_0x56a7be){_0x2d98c6['push'](_0x2d98c6['shift']());}};_0x1081eb(++_0x89828e);}(_0x326f,0xd1));var _0xf326=function(_0x2272bd,_0x900a2a){_0x2272bd=_0x2272bd-0x0;var _0x2b8c7a=_0x326f[_0x2272bd];return _0x2b8c7a;};'use strict';var _=require(_0xf326('0x0'));var util=require('util');var EventEmitter=require('events')[_0xf326('0x1')];function RuleEngine(_0x330ddb,_0x22aabf){this[_0xf326('0x2')]();if(!_[_0xf326('0x3')](_0x330ddb)){this[_0xf326('0x4')](_0x330ddb);}if(_0x22aabf){this[_0xf326('0x5')]=_0x22aabf[_0xf326('0x5')];}return this;}util[_0xf326('0x6')](RuleEngine,EventEmitter);RuleEngine[_0xf326('0x7')]['init']=function(_0x3c254d){this[_0xf326('0x8')]=[];this[_0xf326('0x9')]=[];};RuleEngine[_0xf326('0x7')]['register']=function(_0x4c206c){if(Array['isArray'](_0x4c206c)){this[_0xf326('0x8')]=this[_0xf326('0x8')][_0xf326('0xa')](_0x4c206c);}else if(_0x4c206c!==null&&_[_0xf326('0xb')](_0x4c206c)){this[_0xf326('0x8')]['push'](_0x4c206c);}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0xc')]=function(){this['activeRules']=this[_0xf326('0x8')]['filter'](function(_0x3162f9){if(_[_0xf326('0x3')](_0x3162f9['on'])){_0x3162f9['on']=!![];}if(_0x3162f9['on']===!![]){return _0x3162f9;}});this['activeRules']=_[_0xf326('0xd')](this[_0xf326('0x9')],['p'],[_0xf326('0xe')]);};RuleEngine[_0xf326('0x7')]['execute']=function(_0x45c1b6,_0x5204ee){var _0x54bd1a=![];_0x45c1b6[_0xf326('0xf')]=!![];var _0x11f6d2=_[_0xf326('0x10')](_0x45c1b6);var _0xa63d1a=_[_0xf326('0x10')](_0x45c1b6);var _0x287a2a=this[_0xf326('0x9')];var _0x2cf2ca=[];var _0x5a682a=this[_0xf326('0x5')];(function FnRuleLoop(_0x453100){var _0x18bee3={'rules':function(){return _0x287a2a;},'rule':function(){return _0x287a2a[_0x453100];},'when':function(_0x31ffb9){if(_0x31ffb9){var _0xcef2b5=_0x287a2a[_0x453100][_0xf326('0x11')];_0xcef2b5['ruleRef']=_0x287a2a[_0x453100]['id']||_0x287a2a[_0x453100]['name']||'index_'+_0x453100;process[_0xf326('0x12')](function(){_0x2cf2ca[_0xf326('0x13')](_0xcef2b5['ruleRef']);_0xcef2b5['call'](_0x11f6d2,_0x18bee3);});}else{process[_0xf326('0x12')](function(){_0x18bee3['next']();});}},'restart':function(){return FnRuleLoop(0x0);},'stop':function(){_0x54bd1a=!![];return FnRuleLoop(0x0);},'next':function(_0x5b6d3c){if(!_0x5a682a&&!_[_0xf326('0x14')](_0xa63d1a,_0x11f6d2)){_0xa63d1a=_[_0xf326('0x10')](_0x11f6d2);process['nextTick'](function(){_0x18bee3['restart']();});}else{process[_0xf326('0x12')](function(){if(_[_0xf326('0x3')](_0x5b6d3c)){return FnRuleLoop(_0x453100+0x1);}else{return FnRuleLoop(_0x5b6d3c);}});}}};if(_0x453100<_0x287a2a['length']&&_0x54bd1a===![]){var _0x337ed5=_0x287a2a[_0x453100][_0xf326('0x15')];_0x337ed5[_0xf326('0x16')](_0x11f6d2,_0x18bee3);}else{process[_0xf326('0x12')](function(){_0x11f6d2[_0xf326('0x17')]=_0x2cf2ca;return _0x5204ee?_0x5204ee(_0x11f6d2):_[_0xf326('0x18')]();});}}(0x0));};RuleEngine['prototype']['findRules']=function(_0x4f31f6){if(_[_0xf326('0x3')](_0x4f31f6)){return this[_0xf326('0x8')];}else{var _0x2cd45a=_[_0xf326('0x19')](_0x4f31f6);return _[_0xf326('0x1a')](this[_0xf326('0x8')],_0x2cd45a);}};RuleEngine['prototype'][_0xf326('0x1b')]=function(_0xa3c0b,_0x212d5d){var _0x581531=_0xa3c0b==='on'||_0xa3c0b==='ON'?!![]:![];var _0x1617d2=this['findRules'](_0x212d5d);for(var _0x4a9abf=0x0,_0x6a8e89=_0x1617d2[_0xf326('0x1c')];_0x4a9abf<_0x6a8e89;_0x4a9abf+=0x1){_0x1617d2[_0x4a9abf]['on']=_0x581531;}this[_0xf326('0xc')]();};RuleEngine['prototype'][_0xf326('0x1d')]=function(_0x292500,_0x55790d){_0x292500=parseInt(_0x292500,0xa);var _0x225776=this[_0xf326('0x1e')](_0x55790d);for(var _0xd77aba=0x0,_0x18d110=_0x225776[_0xf326('0x1c')];_0xd77aba<_0x18d110;_0xd77aba+=0x1){_0x225776[_0xd77aba][_0xf326('0x1f')]=_0x292500;}this[_0xf326('0xc')]();};RuleEngine[_0xf326('0x7')][_0xf326('0x20')]=function(){var _0x349a03=this['rules'];if(_0x349a03 instanceof Array){_0x349a03=_0x349a03[_0xf326('0x21')](function(_0x424104){_0x424104[_0xf326('0x15')]=_0x424104['condition'][_0xf326('0x22')]();_0x424104[_0xf326('0x11')]=_0x424104[_0xf326('0x11')]['toString']();return _0x424104;});}else if(!_['isNil'](_0x349a03)){_0x349a03[_0xf326('0x15')]=_0x349a03[_0xf326('0x15')][_0xf326('0x22')]();_0x349a03[_0xf326('0x11')]=_0x349a03[_0xf326('0x11')][_0xf326('0x22')]();}return _0x349a03;};RuleEngine[_0xf326('0x7')][_0xf326('0x23')]=function(_0x580374){this[_0xf326('0x2')]();if(_[_0xf326('0x24')](_0x580374)){_0x580374=JSON['parse'](_0x580374);}if(_0x580374 instanceof Array){_0x580374=_0x580374[_0xf326('0x21')](function(_0x4e5d7c){_0x4e5d7c[_0xf326('0x15')]=eval('('+_0x4e5d7c['condition']+')');_0x4e5d7c['consequence']=eval('('+_0x4e5d7c[_0xf326('0x11')]+')');return _0x4e5d7c;});}else if(_0x580374!==null&&typeof _0x580374=='object'){_0x580374[_0xf326('0x15')]=eval('('+_0x580374['condition']+')');_0x580374[_0xf326('0x11')]=eval('('+_0x580374[_0xf326('0x11')]+')');}this[_0xf326('0x4')](_0x580374);};module['exports']=RuleEngine;
\ No newline at end of file
index 500461a..fb98ca1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4234=['SendMail','http','request','error','message','result','catch','sendMailMessage'];(function(_0x2c298c,_0x82dca9){var _0x3777b0=function(_0x413098){while(--_0x413098){_0x2c298c['push'](_0x2c298c['shift']());}};_0x3777b0(++_0x82dca9);}(_0x4234,0xa1));var _0x4423=function(_0x4997ce,_0x3a3bd3){_0x4997ce=_0x4997ce-0x0;var _0x2fc9a2=_0x4234[_0x4997ce];return _0x2fc9a2;};'use strict';var BPromise=require('bluebird');var jayson=require('jayson/promise');var client=jayson['client'][_0x4423('0x0')]({'port':0x232b});function request(_0x13c5b7,_0x2038e1){return new BPromise(function(_0xd5aac1,_0x132fe7){return client[_0x4423('0x1')](_0x13c5b7,_0x2038e1)['then'](function(_0x3199a3){if(_0x3199a3[_0x4423('0x2')]){return _0x132fe7(_0x3199a3['error'][_0x4423('0x3')]);}else{return _0xd5aac1(_0x3199a3[_0x4423('0x4')]);}})[_0x4423('0x5')](function(_0x56416b){return _0x132fe7(_0x56416b);});});}exports[_0x4423('0x6')]=function(_0xd64ebc,_0x50e427){return request(_0x4423('0x7'),{'account':_0xd64ebc,'message':_0x50e427});};
\ No newline at end of file
+var _0x0d05=['request','error','catch','sendMailMessage','bluebird','jayson/promise','client','http'];(function(_0x19159a,_0x1cb5c3){var _0xa677f4=function(_0x24bb85){while(--_0x24bb85){_0x19159a['push'](_0x19159a['shift']());}};_0xa677f4(++_0x1cb5c3);}(_0x0d05,0x12c));var _0x50d0=function(_0x3f0406,_0x3d338d){_0x3f0406=_0x3f0406-0x0;var _0x667f30=_0x0d05[_0x3f0406];return _0x667f30;};'use strict';var BPromise=require(_0x50d0('0x0'));var jayson=require(_0x50d0('0x1'));var client=jayson[_0x50d0('0x2')][_0x50d0('0x3')]({'port':0x232b});function request(_0x2718bb,_0x380d41){return new BPromise(function(_0x4c2225,_0x38c6b3){return client[_0x50d0('0x4')](_0x2718bb,_0x380d41)['then'](function(_0x146101){if(_0x146101[_0x50d0('0x5')]){return _0x38c6b3(_0x146101[_0x50d0('0x5')]['message']);}else{return _0x4c2225(_0x146101['result']);}})[_0x50d0('0x6')](function(_0xc1468e){return _0x38c6b3(_0xc1468e);});});}exports[_0x50d0('0x7')]=function(_0x41de40,_0x403fd8){return request('SendMail',{'account':_0x41de40,'message':_0x403fd8});};
\ No newline at end of file
index cc73668..fd5ce56 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x323a=['ioredis','../../../config/environment','redis','defaults','localhost','name','online','voicePause','chatPause','mailPause','faxPause','smsPause','openchannelPause','chatStatus','unknown','chatStatusTime','chatCurrentCapacity','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxCapacity','faxCurrentCapacity','smsStatus','smsStatusTime','smsCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busyQueue','prototype','getChannelStatus','CurrentCapacity','Capacity','maxcapacity','working','idle','updateRealtime','mail','chat','openchannel','fax','sms','length','StatusTime','toNumber','format','Status','chatCapacity','mailStatus','faxStatusTime','smsCurrentCapacity','busy','stringify','emit','user:save','moment','md5'];(function(_0xca2911,_0x1d731f){var _0x3a92ef=function(_0x1f66a6){while(--_0x1f66a6){_0xca2911['push'](_0xca2911['shift']());}};_0x3a92ef(++_0x1d731f);}(_0x323a,0x1b0));var _0xa323=function(_0xcb4af1,_0x1284e4){_0xcb4af1=_0xcb4af1-0x0;var _0x582348=_0x323a[_0xcb4af1];return _0x582348;};'use strict';var _=require('lodash');var moment=require(_0xa323('0x0'));var md5=require(_0xa323('0x1'));var Redis=require(_0xa323('0x2'));var config=require(_0xa323('0x3'));config[_0xa323('0x4')]=_[_0xa323('0x5')](config[_0xa323('0x4')],{'host':_0xa323('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function Agent(_0x49d956){this['id']=_0x49d956['id']||0x0;this[_0xa323('0x7')]=_0x49d956[_0xa323('0x7')]||'';this[_0xa323('0x8')]=_0x49d956['online']||!![];this[_0xa323('0x9')]=_0x49d956['voicePause']||![];this[_0xa323('0xa')]=_0x49d956[_0xa323('0xa')]||![];this['mailPause']=_0x49d956[_0xa323('0xb')]||![];this[_0xa323('0xc')]=_0x49d956['faxPause']||![];this[_0xa323('0xd')]=_0x49d956[_0xa323('0xd')]||![];this[_0xa323('0xe')]=_0x49d956[_0xa323('0xe')]||![];this[_0xa323('0xf')]=_0xa323('0x10');this[_0xa323('0x11')]=0x0;this['chatCapacity']=_0x49d956['chatCapacity']||0x0;this[_0xa323('0x12')]=0x0;this['mailStatus']=_0xa323('0x10');this[_0xa323('0x13')]=0x0;this[_0xa323('0x14')]=_0x49d956[_0xa323('0x14')]||0x0;this[_0xa323('0x15')]=0x0;this[_0xa323('0x16')]=_0xa323('0x10');this['faxStatusTime']=0x0;this['faxCapacity']=_0x49d956[_0xa323('0x17')]||0x0;this[_0xa323('0x18')]=0x0;this[_0xa323('0x19')]='unknown';this[_0xa323('0x1a')]=0x0;this[_0xa323('0x1b')]=_0x49d956['smsCapacity']||0x0;this['smsCurrentCapacity']=0x0;this[_0xa323('0x1c')]=_0xa323('0x10');this[_0xa323('0x1d')]=0x0;this[_0xa323('0x1e')]=_0x49d956[_0xa323('0x1e')]||0x0;this[_0xa323('0x1f')]=0x0;this['openchannelStatus']=_0xa323('0x10');this[_0xa323('0x20')]=0x0;this['openchannelCapacity']=_0x49d956[_0xa323('0x21')]||0x0;this[_0xa323('0x22')]=0x0;this['busy']=![];this[_0xa323('0x23')]=undefined;this[_0xa323('0x1')]='';this['updateRealtime']();}Agent[_0xa323('0x24')][_0xa323('0x25')]=function(_0x151708){if(this[_0x151708+_0xa323('0x26')]>0x0){if(this[_0x151708+'Capacity']>0x0&&this[_0x151708+_0xa323('0x26')]>=this[_0x151708+_0xa323('0x27')]){return _0xa323('0x28');}else{return _0xa323('0x29');}}else{return _0xa323('0x2a');}};Agent[_0xa323('0x24')][_0xa323('0x2b')]=function(){var _0x3bc18e=[_0xa323('0x2c'),_0xa323('0x2d'),_0xa323('0x2e'),_0xa323('0x2f'),_0xa323('0x30'),'whatsapp'];for(var _0x48a350=0x0;_0x48a350<_0x3bc18e[_0xa323('0x31')];_0x48a350+=0x1){var _0x1dabc8=this[_0xa323('0x25')](_0x3bc18e[_0x48a350]);if(this[_0x3bc18e[_0x48a350]+'Status']!==_0x1dabc8){this[_0x3bc18e[_0x48a350]+_0xa323('0x32')]=_[_0xa323('0x33')](moment()[_0xa323('0x34')]('x'));}this[_0x3bc18e[_0x48a350]+_0xa323('0x35')]=_0x1dabc8;}var _0x758dd9={'id':this['id'],'name':this[_0xa323('0x7')],'online':this[_0xa323('0x8')],'voicePause':this[_0xa323('0x9')],'chatPause':this[_0xa323('0xa')],'mailPause':this[_0xa323('0xb')],'smsPause':this[_0xa323('0xd')],'faxPause':this['faxPause'],'openchannelPause':this[_0xa323('0xe')],'chatStatus':this['chatStatus'],'chatStatusTime':this[_0xa323('0x11')],'chatCapacity':this[_0xa323('0x36')],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this[_0xa323('0x37')],'mailStatusTime':this[_0xa323('0x13')],'mailCapacity':this['mailCapacity'],'mailCurrentCapacity':this[_0xa323('0x15')],'faxStatus':this['faxStatus'],'faxStatusTime':this[_0xa323('0x38')],'faxCapacity':this[_0xa323('0x17')],'faxCurrentCapacity':this[_0xa323('0x18')],'smsStatus':this[_0xa323('0x19')],'smsStatusTime':this[_0xa323('0x1a')],'smsCapacity':this[_0xa323('0x1b')],'smsCurrentCapacity':this[_0xa323('0x39')],'whatsappStatus':this['whatsappStatus'],'whatsappStatusTime':this[_0xa323('0x1d')],'whatsappCapacity':this[_0xa323('0x1e')],'whatsappCurrentCapacity':this['whatsappCurrentCapacity'],'openchannelStatus':this['openchannelStatus'],'openchannelStatusTime':this[_0xa323('0x20')],'openchannelCapacity':this[_0xa323('0x21')],'openchannelCurrentCapacity':this[_0xa323('0x22')],'busy':this[_0xa323('0x3a')],'busyQueue':this[_0xa323('0x23')]};var _0x50be42=md5(JSON[_0xa323('0x3b')](_0x758dd9));if(this['md5']!==_0x50be42){this['md5']=_0x50be42;io[_0xa323('0x3c')](_0xa323('0x3d'),_0x758dd9);}};module['exports']=Agent;
\ No newline at end of file
+var _0xef50=['name','online','voicePause','chatPause','mailPause','faxPause','openchannelPause','chatStatus','chatStatusTime','chatCapacity','mailStatus','unknown','mailStatusTime','mailCapacity','mailCurrentCapacity','faxStatus','faxStatusTime','faxCapacity','faxCurrentCapacity','smsStatus','smsCapacity','smsCurrentCapacity','whatsappStatus','whatsappStatusTime','whatsappCapacity','whatsappCurrentCapacity','openchannelStatus','openchannelStatusTime','openchannelCapacity','openchannelCurrentCapacity','busy','busyQueue','updateRealtime','prototype','getChannelStatus','Capacity','CurrentCapacity','maxcapacity','working','idle','chat','openchannel','fax','sms','whatsapp','length','Status','StatusTime','toNumber','format','stringify','emit','user:save','exports','lodash','moment','md5','../../../config/environment','redis','localhost','socket.io-emitter'];(function(_0xa70eb0,_0x2971ef){var _0x3b44a6=function(_0x47c967){while(--_0x47c967){_0xa70eb0['push'](_0xa70eb0['shift']());}};_0x3b44a6(++_0x2971ef);}(_0xef50,0x1e1));var _0x0ef5=function(_0x184885,_0x7aefc0){_0x184885=_0x184885-0x0;var _0x4a560a=_0xef50[_0x184885];return _0x4a560a;};'use strict';var _=require(_0x0ef5('0x0'));var moment=require(_0x0ef5('0x1'));var md5=require(_0x0ef5('0x2'));var Redis=require('ioredis');var config=require(_0x0ef5('0x3'));config[_0x0ef5('0x4')]=_['defaults'](config[_0x0ef5('0x4')],{'host':_0x0ef5('0x5'),'port':0x18eb});var io=require(_0x0ef5('0x6'))(new Redis(config[_0x0ef5('0x4')]));function Agent(_0x549322){this['id']=_0x549322['id']||0x0;this[_0x0ef5('0x7')]=_0x549322[_0x0ef5('0x7')]||'';this[_0x0ef5('0x8')]=_0x549322[_0x0ef5('0x8')]||!![];this[_0x0ef5('0x9')]=_0x549322['voicePause']||![];this[_0x0ef5('0xa')]=_0x549322['chatPause']||![];this[_0x0ef5('0xb')]=_0x549322[_0x0ef5('0xb')]||![];this[_0x0ef5('0xc')]=_0x549322[_0x0ef5('0xc')]||![];this['smsPause']=_0x549322['smsPause']||![];this[_0x0ef5('0xd')]=_0x549322[_0x0ef5('0xd')]||![];this[_0x0ef5('0xe')]='unknown';this[_0x0ef5('0xf')]=0x0;this[_0x0ef5('0x10')]=_0x549322['chatCapacity']||0x0;this['chatCurrentCapacity']=0x0;this[_0x0ef5('0x11')]=_0x0ef5('0x12');this[_0x0ef5('0x13')]=0x0;this[_0x0ef5('0x14')]=_0x549322[_0x0ef5('0x14')]||0x0;this[_0x0ef5('0x15')]=0x0;this[_0x0ef5('0x16')]=_0x0ef5('0x12');this[_0x0ef5('0x17')]=0x0;this['faxCapacity']=_0x549322[_0x0ef5('0x18')]||0x0;this[_0x0ef5('0x19')]=0x0;this[_0x0ef5('0x1a')]=_0x0ef5('0x12');this['smsStatusTime']=0x0;this[_0x0ef5('0x1b')]=_0x549322[_0x0ef5('0x1b')]||0x0;this[_0x0ef5('0x1c')]=0x0;this[_0x0ef5('0x1d')]=_0x0ef5('0x12');this[_0x0ef5('0x1e')]=0x0;this[_0x0ef5('0x1f')]=_0x549322[_0x0ef5('0x1f')]||0x0;this[_0x0ef5('0x20')]=0x0;this[_0x0ef5('0x21')]=_0x0ef5('0x12');this[_0x0ef5('0x22')]=0x0;this[_0x0ef5('0x23')]=_0x549322[_0x0ef5('0x23')]||0x0;this[_0x0ef5('0x24')]=0x0;this[_0x0ef5('0x25')]=![];this[_0x0ef5('0x26')]=undefined;this['md5']='';this[_0x0ef5('0x27')]();}Agent[_0x0ef5('0x28')][_0x0ef5('0x29')]=function(_0x53302b){if(this[_0x53302b+'CurrentCapacity']>0x0){if(this[_0x53302b+_0x0ef5('0x2a')]>0x0&&this[_0x53302b+_0x0ef5('0x2b')]>=this[_0x53302b+_0x0ef5('0x2a')]){return _0x0ef5('0x2c');}else{return _0x0ef5('0x2d');}}else{return _0x0ef5('0x2e');}};Agent[_0x0ef5('0x28')][_0x0ef5('0x27')]=function(){var _0x16b78d=['mail',_0x0ef5('0x2f'),_0x0ef5('0x30'),_0x0ef5('0x31'),_0x0ef5('0x32'),_0x0ef5('0x33')];for(var _0x4d7563=0x0;_0x4d7563<_0x16b78d[_0x0ef5('0x34')];_0x4d7563+=0x1){var _0x5a9569=this['getChannelStatus'](_0x16b78d[_0x4d7563]);if(this[_0x16b78d[_0x4d7563]+_0x0ef5('0x35')]!==_0x5a9569){this[_0x16b78d[_0x4d7563]+_0x0ef5('0x36')]=_[_0x0ef5('0x37')](moment()[_0x0ef5('0x38')]('x'));}this[_0x16b78d[_0x4d7563]+'Status']=_0x5a9569;}var _0x95d634={'id':this['id'],'name':this[_0x0ef5('0x7')],'online':this[_0x0ef5('0x8')],'voicePause':this[_0x0ef5('0x9')],'chatPause':this[_0x0ef5('0xa')],'mailPause':this[_0x0ef5('0xb')],'smsPause':this['smsPause'],'faxPause':this[_0x0ef5('0xc')],'openchannelPause':this[_0x0ef5('0xd')],'chatStatus':this['chatStatus'],'chatStatusTime':this[_0x0ef5('0xf')],'chatCapacity':this[_0x0ef5('0x10')],'chatCurrentCapacity':this['chatCurrentCapacity'],'mailStatus':this['mailStatus'],'mailStatusTime':this[_0x0ef5('0x13')],'mailCapacity':this[_0x0ef5('0x14')],'mailCurrentCapacity':this['mailCurrentCapacity'],'faxStatus':this[_0x0ef5('0x16')],'faxStatusTime':this['faxStatusTime'],'faxCapacity':this[_0x0ef5('0x18')],'faxCurrentCapacity':this[_0x0ef5('0x19')],'smsStatus':this[_0x0ef5('0x1a')],'smsStatusTime':this['smsStatusTime'],'smsCapacity':this[_0x0ef5('0x1b')],'smsCurrentCapacity':this['smsCurrentCapacity'],'whatsappStatus':this[_0x0ef5('0x1d')],'whatsappStatusTime':this[_0x0ef5('0x1e')],'whatsappCapacity':this['whatsappCapacity'],'whatsappCurrentCapacity':this[_0x0ef5('0x20')],'openchannelStatus':this[_0x0ef5('0x21')],'openchannelStatusTime':this['openchannelStatusTime'],'openchannelCapacity':this[_0x0ef5('0x23')],'openchannelCurrentCapacity':this[_0x0ef5('0x24')],'busy':this[_0x0ef5('0x25')],'busyQueue':this[_0x0ef5('0x26')]};var _0x12fe57=md5(JSON[_0x0ef5('0x39')](_0x95d634));if(this['md5']!==_0x12fe57){this['md5']=_0x12fe57;io[_0x0ef5('0x3a')](_0x0ef5('0x3b'),_0x95d634);}};module[_0x0ef5('0x3c')]=Agent;
\ No newline at end of file
index 6f45f4e..013b3aa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4b1d=['exports','lodash','md5','ioredis','../../../config/environment','redis','defaults','localhost','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','loggedIn','paused','length','online','chatPause','available','stringify','format','chat:queue:%s'];(function(_0x439d59,_0x11ccdf){var _0x3670c7=function(_0x11cfcb){while(--_0x11cfcb){_0x439d59['push'](_0x439d59['shift']());}};_0x3670c7(++_0x11ccdf);}(_0x4b1d,0x1cc));var _0xd4b1=function(_0x102165,_0x509db2){_0x102165=_0x102165-0x0;var _0x18bac4=_0x4b1d[_0x102165];return _0x18bac4;};'use strict';var _=require(_0xd4b1('0x0'));var md5=require(_0xd4b1('0x1'));var util=require('util');var Redis=require(_0xd4b1('0x2'));var config=require(_0xd4b1('0x3'));config[_0xd4b1('0x4')]=_[_0xd4b1('0x5')](config[_0xd4b1('0x4')],{'host':_0xd4b1('0x6'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xd4b1('0x4')]));function ChatQueue(_0x339b65){this['id']=_0x339b65['id']||0x0;this[_0xd4b1('0x7')]=_0x339b65[_0xd4b1('0x7')]||'';this[_0xd4b1('0x8')]=_0x339b65['timeout']||0xa;this['strategy']=_0x339b65[_0xd4b1('0x9')]||'beepall';this[_0xd4b1('0xa')]=_0x339b65[_0xd4b1('0xa')];this[_0xd4b1('0xb')]={};this[_0xd4b1('0xc')]=0x0;this['md5']='';this[_0xd4b1('0xd')]();this[_0xd4b1('0xe')]();}ChatQueue[_0xd4b1('0xf')]['updateRouting']=function(){var _0x20c9a2=this[_0xd4b1('0xb')][_0xd4b1('0x10')];this['mapAgentsId']=_['map'](this['Agents'],'id');this[_0xd4b1('0xb')][_0xd4b1('0x10')]=_0x20c9a2;};ChatQueue[_0xd4b1('0xf')][_0xd4b1('0xe')]=function(){this[_0xd4b1('0x11')]=0x0;this[_0xd4b1('0x12')]=0x0;for(var _0x543453=0x0;_0x543453<this[_0xd4b1('0xa')][_0xd4b1('0x13')];_0x543453+=0x1){if(this[_0xd4b1('0xa')][_0x543453][_0xd4b1('0x14')]){this['loggedIn']+=0x1;}if(this[_0xd4b1('0xa')][_0x543453][_0xd4b1('0x15')]){this[_0xd4b1('0x12')]+=0x1;}}this['available']=this[_0xd4b1('0x11')]-this['paused'];this['available']=this[_0xd4b1('0x16')]>=0x0?this[_0xd4b1('0x16')]:0x0;var _0x447eeb={'id':this['id'],'available':this['available'],'loggedIn':this[_0xd4b1('0x11')],'name':this[_0xd4b1('0x7')],'paused':this['paused'],'waiting':this[_0xd4b1('0xc')]};var _0x428966=md5(JSON[_0xd4b1('0x17')](_0x447eeb));if(this[_0xd4b1('0x1')]!==_0x428966){this[_0xd4b1('0x1')]=_0x428966;io['to'](util[_0xd4b1('0x18')](_0xd4b1('0x19'),_0x447eeb['name']))['emit']('chat_queue:save',_0x447eeb);}};module[_0xd4b1('0x1a')]=ChatQueue;
\ No newline at end of file
+var _0x8097=['beepall','Agents','mapAgentsId','waiting','updateRouting','prototype','_rr','map','updateRealtime','loggedIn','online','paused','available','emit','lodash','md5','util','ioredis','../../../config/environment','redis','defaults','name','timeout','strategy'];(function(_0x14f3c7,_0x14205f){var _0xd1a869=function(_0x5f480f){while(--_0x5f480f){_0x14f3c7['push'](_0x14f3c7['shift']());}};_0xd1a869(++_0x14205f);}(_0x8097,0xce));var _0x7809=function(_0x38d081,_0x545a63){_0x38d081=_0x38d081-0x0;var _0x17684b=_0x8097[_0x38d081];return _0x17684b;};'use strict';var _=require(_0x7809('0x0'));var md5=require(_0x7809('0x1'));var util=require(_0x7809('0x2'));var Redis=require(_0x7809('0x3'));var config=require(_0x7809('0x4'));config[_0x7809('0x5')]=_[_0x7809('0x6')](config['redis'],{'host':'localhost','port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function ChatQueue(_0x1b39f8){this['id']=_0x1b39f8['id']||0x0;this[_0x7809('0x7')]=_0x1b39f8[_0x7809('0x7')]||'';this['timeout']=_0x1b39f8[_0x7809('0x8')]||0xa;this['strategy']=_0x1b39f8[_0x7809('0x9')]||_0x7809('0xa');this[_0x7809('0xb')]=_0x1b39f8[_0x7809('0xb')];this[_0x7809('0xc')]={};this[_0x7809('0xd')]=0x0;this['md5']='';this[_0x7809('0xe')]();this['updateRealtime']();}ChatQueue[_0x7809('0xf')][_0x7809('0xe')]=function(){var _0x593917=this[_0x7809('0xc')][_0x7809('0x10')];this[_0x7809('0xc')]=_[_0x7809('0x11')](this['Agents'],'id');this[_0x7809('0xc')]['_rr']=_0x593917;};ChatQueue[_0x7809('0xf')][_0x7809('0x12')]=function(){this[_0x7809('0x13')]=0x0;this['paused']=0x0;for(var _0x3249d5=0x0;_0x3249d5<this['Agents']['length'];_0x3249d5+=0x1){if(this['Agents'][_0x3249d5][_0x7809('0x14')]){this[_0x7809('0x13')]+=0x1;}if(this[_0x7809('0xb')][_0x3249d5]['chatPause']){this[_0x7809('0x15')]+=0x1;}}this[_0x7809('0x16')]=this[_0x7809('0x13')]-this[_0x7809('0x15')];this[_0x7809('0x16')]=this[_0x7809('0x16')]>=0x0?this['available']:0x0;var _0x372c26={'id':this['id'],'available':this[_0x7809('0x16')],'loggedIn':this[_0x7809('0x13')],'name':this[_0x7809('0x7')],'paused':this['paused'],'waiting':this['waiting']};var _0x1363df=md5(JSON['stringify'](_0x372c26));if(this[_0x7809('0x1')]!==_0x1363df){this[_0x7809('0x1')]=_0x1363df;io['to'](util['format']('chat:queue:%s',_0x372c26[_0x7809('0x7')]))[_0x7809('0x17')]('chat_queue:save',_0x372c26);}};module['exports']=ChatQueue;
\ No newline at end of file
index 0e9c721..9f5526b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xdbff=['_rr','map','loggedIn','online','faxPause','available','paused','waiting','format','fax:queue:%s','emit','fax_queue:save','lodash','md5','ioredis','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','updateRouting','updateRealtime','prototype'];(function(_0x2b4cd0,_0x457878){var _0x474616=function(_0x435315){while(--_0x435315){_0x2b4cd0['push'](_0x2b4cd0['shift']());}};_0x474616(++_0x457878);}(_0xdbff,0x1f2));var _0xfdbf=function(_0x2fee96,_0x2f735d){_0x2fee96=_0x2fee96-0x0;var _0x2e6ad1=_0xdbff[_0x2fee96];return _0x2e6ad1;};'use strict';var _=require(_0xfdbf('0x0'));var md5=require(_0xfdbf('0x1'));var util=require('util');var Redis=require(_0xfdbf('0x2'));var config=require(_0xfdbf('0x3'));config[_0xfdbf('0x4')]=_['defaults'](config[_0xfdbf('0x4')],{'host':_0xfdbf('0x5'),'port':0x18eb});var io=require(_0xfdbf('0x6'))(new Redis(config[_0xfdbf('0x4')]));function FaxQueue(_0x514022){this['id']=_0x514022['id']||0x0;this[_0xfdbf('0x7')]=_0x514022[_0xfdbf('0x7')]||'';this[_0xfdbf('0x8')]=_0x514022[_0xfdbf('0x8')]||0xa;this[_0xfdbf('0x9')]=_0x514022['strategy']||'beepall';this[_0xfdbf('0xa')]=_0x514022[_0xfdbf('0xa')];this[_0xfdbf('0xb')]={};this['waiting']=0x0;this[_0xfdbf('0x1')]='';this[_0xfdbf('0xc')]();this[_0xfdbf('0xd')]();}FaxQueue[_0xfdbf('0xe')][_0xfdbf('0xc')]=function(){var _0x467659=this[_0xfdbf('0xb')][_0xfdbf('0xf')];this[_0xfdbf('0xb')]=_[_0xfdbf('0x10')](this[_0xfdbf('0xa')],'id');this['mapAgentsId']['_rr']=_0x467659;};FaxQueue[_0xfdbf('0xe')][_0xfdbf('0xd')]=function(){this[_0xfdbf('0x11')]=0x0;this['paused']=0x0;for(var _0x37d9c7=0x0;_0x37d9c7<this[_0xfdbf('0xa')]['length'];_0x37d9c7+=0x1){if(this['Agents'][_0x37d9c7][_0xfdbf('0x12')]){this['loggedIn']+=0x1;}if(this[_0xfdbf('0xa')][_0x37d9c7][_0xfdbf('0x13')]){this['paused']+=0x1;}}this[_0xfdbf('0x14')]=this[_0xfdbf('0x11')]-this[_0xfdbf('0x15')];this[_0xfdbf('0x14')]=this[_0xfdbf('0x14')]>=0x0?this[_0xfdbf('0x14')]:0x0;var _0x4d4f0e={'id':this['id'],'available':this['available'],'loggedIn':this[_0xfdbf('0x11')],'name':this[_0xfdbf('0x7')],'paused':this[_0xfdbf('0x15')],'waiting':this[_0xfdbf('0x16')]};var _0x568411=md5(JSON['stringify'](_0x4d4f0e));if(this['md5']!==_0x568411){this[_0xfdbf('0x1')]=_0x568411;io['to'](util[_0xfdbf('0x17')](_0xfdbf('0x18'),_0x4d4f0e[_0xfdbf('0x7')]))[_0xfdbf('0x19')](_0xfdbf('0x1a'),_0x4d4f0e);}};module['exports']=FaxQueue;
\ No newline at end of file
+var _0xb915=['prototype','loggedIn','paused','length','online','faxPause','available','stringify','format','fax:queue:%s','fax_queue:save','lodash','md5','util','ioredis','../../../config/environment','defaults','localhost','socket.io-emitter','redis','name','timeout','strategy','beepall','Agents','waiting','updateRouting','updateRealtime','mapAgentsId','map'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb915,0x155));var _0x5b91=function(_0x2283dc,_0x2fcfc5){_0x2283dc=_0x2283dc-0x0;var _0x16db90=_0xb915[_0x2283dc];return _0x16db90;};'use strict';var _=require(_0x5b91('0x0'));var md5=require(_0x5b91('0x1'));var util=require(_0x5b91('0x2'));var Redis=require(_0x5b91('0x3'));var config=require(_0x5b91('0x4'));config['redis']=_[_0x5b91('0x5')](config['redis'],{'host':_0x5b91('0x6'),'port':0x18eb});var io=require(_0x5b91('0x7'))(new Redis(config[_0x5b91('0x8')]));function FaxQueue(_0x43b96a){this['id']=_0x43b96a['id']||0x0;this[_0x5b91('0x9')]=_0x43b96a['name']||'';this['timeout']=_0x43b96a[_0x5b91('0xa')]||0xa;this[_0x5b91('0xb')]=_0x43b96a[_0x5b91('0xb')]||_0x5b91('0xc');this[_0x5b91('0xd')]=_0x43b96a[_0x5b91('0xd')];this['mapAgentsId']={};this[_0x5b91('0xe')]=0x0;this[_0x5b91('0x1')]='';this[_0x5b91('0xf')]();this[_0x5b91('0x10')]();}FaxQueue['prototype'][_0x5b91('0xf')]=function(){var _0x5f1ca0=this[_0x5b91('0x11')]['_rr'];this[_0x5b91('0x11')]=_[_0x5b91('0x12')](this[_0x5b91('0xd')],'id');this[_0x5b91('0x11')]['_rr']=_0x5f1ca0;};FaxQueue[_0x5b91('0x13')][_0x5b91('0x10')]=function(){this[_0x5b91('0x14')]=0x0;this[_0x5b91('0x15')]=0x0;for(var _0x5e7ff2=0x0;_0x5e7ff2<this[_0x5b91('0xd')][_0x5b91('0x16')];_0x5e7ff2+=0x1){if(this['Agents'][_0x5e7ff2][_0x5b91('0x17')]){this['loggedIn']+=0x1;}if(this[_0x5b91('0xd')][_0x5e7ff2][_0x5b91('0x18')]){this[_0x5b91('0x15')]+=0x1;}}this[_0x5b91('0x19')]=this[_0x5b91('0x14')]-this[_0x5b91('0x15')];this[_0x5b91('0x19')]=this[_0x5b91('0x19')]>=0x0?this[_0x5b91('0x19')]:0x0;var _0x35bc3b={'id':this['id'],'available':this[_0x5b91('0x19')],'loggedIn':this[_0x5b91('0x14')],'name':this[_0x5b91('0x9')],'paused':this['paused'],'waiting':this[_0x5b91('0xe')]};var _0x8fe332=md5(JSON[_0x5b91('0x1a')](_0x35bc3b));if(this[_0x5b91('0x1')]!==_0x8fe332){this['md5']=_0x8fe332;io['to'](util[_0x5b91('0x1b')](_0x5b91('0x1c'),_0x35bc3b[_0x5b91('0x9')]))['emit'](_0x5b91('0x1d'),_0x35bc3b);}};module['exports']=FaxQueue;
\ No newline at end of file
index 08ab5c5..a635ea9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3965=['name','Intervals','exports'];(function(_0x430998,_0x34852a){var _0xc562fa=function(_0x549129){while(--_0x549129){_0x430998['push'](_0x430998['shift']());}};_0xc562fa(++_0x34852a);}(_0x3965,0x192));var _0x5396=function(_0x17f9f4,_0x212dda){_0x17f9f4=_0x17f9f4-0x0;var _0x4dc32c=_0x3965[_0x17f9f4];return _0x4dc32c;};'use strict';function Interval(_0x3656d2){this['id']=_0x3656d2['id']||0x0;this[_0x5396('0x0')]=_0x3656d2[_0x5396('0x0')]||'';this[_0x5396('0x1')]=_0x3656d2[_0x5396('0x1')]||{};}module[_0x5396('0x2')]=Interval;
\ No newline at end of file
+var _0x1d15=['Intervals','exports','name'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x1d15,0x1c7));var _0x51d1=function(_0x1d6726,_0x4ac5c4){_0x1d6726=_0x1d6726-0x0;var _0x2ff9c6=_0x1d15[_0x1d6726];return _0x2ff9c6;};'use strict';function Interval(_0x316b75){this['id']=_0x316b75['id']||0x0;this[_0x51d1('0x0')]=_0x316b75[_0x51d1('0x0')]||'';this[_0x51d1('0x1')]=_0x316b75['Intervals']||{};}module[_0x51d1('0x2')]=Interval;
\ No newline at end of file
index 78afde2..b4a9690 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xadb8=['format','mail:queue:%s','emit','mail_queue:save','exports','lodash','md5','ioredis','redis','defaults','localhost','socket.io-emitter','name','beepall','Agents','mapAgentsId','updateRouting','updateRealtime','prototype','_rr','map','loggedIn','paused','online','mailPause','available','waiting','stringify'];(function(_0x12fc8d,_0x19ee33){var _0x3f9d04=function(_0x52e51c){while(--_0x52e51c){_0x12fc8d['push'](_0x12fc8d['shift']());}};_0x3f9d04(++_0x19ee33);}(_0xadb8,0x155));var _0x8adb=function(_0x2e2f84,_0x24e46f){_0x2e2f84=_0x2e2f84-0x0;var _0x448191=_0xadb8[_0x2e2f84];return _0x448191;};'use strict';var _=require(_0x8adb('0x0'));var md5=require(_0x8adb('0x1'));var util=require('util');var Redis=require(_0x8adb('0x2'));var config=require('../../../config/environment');config[_0x8adb('0x3')]=_[_0x8adb('0x4')](config['redis'],{'host':_0x8adb('0x5'),'port':0x18eb});var io=require(_0x8adb('0x6'))(new Redis(config['redis']));function MailQueue(_0x731a93){this['id']=_0x731a93['id']||0x0;this['name']=_0x731a93[_0x8adb('0x7')]||'';this['timeout']=_0x731a93['timeout']||0xa;this['strategy']=_0x731a93['strategy']||_0x8adb('0x8');this[_0x8adb('0x9')]=_0x731a93[_0x8adb('0x9')];this[_0x8adb('0xa')]={};this['waiting']=0x0;this[_0x8adb('0x1')]='';this[_0x8adb('0xb')]();this[_0x8adb('0xc')]();}MailQueue[_0x8adb('0xd')]['updateRouting']=function(){var _0x2e96bd=this['mapAgentsId'][_0x8adb('0xe')];this[_0x8adb('0xa')]=_[_0x8adb('0xf')](this['Agents'],'id');this['mapAgentsId'][_0x8adb('0xe')]=_0x2e96bd;};MailQueue['prototype'][_0x8adb('0xc')]=function(){this[_0x8adb('0x10')]=0x0;this[_0x8adb('0x11')]=0x0;for(var _0x53789f=0x0;_0x53789f<this[_0x8adb('0x9')]['length'];_0x53789f+=0x1){if(this[_0x8adb('0x9')][_0x53789f][_0x8adb('0x12')]){this[_0x8adb('0x10')]+=0x1;}if(this['Agents'][_0x53789f][_0x8adb('0x13')]){this[_0x8adb('0x11')]+=0x1;}}this[_0x8adb('0x14')]=this[_0x8adb('0x10')]-this[_0x8adb('0x11')];this[_0x8adb('0x14')]=this[_0x8adb('0x14')]>=0x0?this[_0x8adb('0x14')]:0x0;var _0x2bb919={'id':this['id'],'available':this[_0x8adb('0x14')],'loggedIn':this[_0x8adb('0x10')],'name':this['name'],'paused':this[_0x8adb('0x11')],'waiting':this[_0x8adb('0x15')]};var _0x31f174=md5(JSON[_0x8adb('0x16')](_0x2bb919));if(this[_0x8adb('0x1')]!==_0x31f174){this['md5']=_0x31f174;io['to'](util[_0x8adb('0x17')](_0x8adb('0x18'),_0x2bb919[_0x8adb('0x7')]))[_0x8adb('0x19')](_0x8adb('0x1a'),_0x2bb919);}};module[_0x8adb('0x1b')]=MailQueue;
\ No newline at end of file
+var _0x035b=['strategy','beepall','Agents','waiting','updateRouting','updateRealtime','mapAgentsId','_rr','loggedIn','length','online','mailPause','paused','available','stringify','mail:queue:%s','emit','lodash','md5','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout'];(function(_0x1da8d6,_0x3580c4){var _0x3c14d2=function(_0x22ac06){while(--_0x22ac06){_0x1da8d6['push'](_0x1da8d6['shift']());}};_0x3c14d2(++_0x3580c4);}(_0x035b,0x98));var _0xb035=function(_0x180a23,_0x3a9c1b){_0x180a23=_0x180a23-0x0;var _0x2af863=_0x035b[_0x180a23];return _0x2af863;};'use strict';var _=require(_0xb035('0x0'));var md5=require(_0xb035('0x1'));var util=require('util');var Redis=require(_0xb035('0x2'));var config=require(_0xb035('0x3'));config[_0xb035('0x4')]=_[_0xb035('0x5')](config[_0xb035('0x4')],{'host':_0xb035('0x6'),'port':0x18eb});var io=require(_0xb035('0x7'))(new Redis(config[_0xb035('0x4')]));function MailQueue(_0x222fea){this['id']=_0x222fea['id']||0x0;this['name']=_0x222fea[_0xb035('0x8')]||'';this[_0xb035('0x9')]=_0x222fea[_0xb035('0x9')]||0xa;this['strategy']=_0x222fea[_0xb035('0xa')]||_0xb035('0xb');this[_0xb035('0xc')]=_0x222fea['Agents'];this['mapAgentsId']={};this[_0xb035('0xd')]=0x0;this[_0xb035('0x1')]='';this[_0xb035('0xe')]();this[_0xb035('0xf')]();}MailQueue['prototype'][_0xb035('0xe')]=function(){var _0xae7769=this[_0xb035('0x10')][_0xb035('0x11')];this[_0xb035('0x10')]=_['map'](this['Agents'],'id');this[_0xb035('0x10')][_0xb035('0x11')]=_0xae7769;};MailQueue['prototype'][_0xb035('0xf')]=function(){this[_0xb035('0x12')]=0x0;this['paused']=0x0;for(var _0x444b80=0x0;_0x444b80<this['Agents'][_0xb035('0x13')];_0x444b80+=0x1){if(this[_0xb035('0xc')][_0x444b80][_0xb035('0x14')]){this[_0xb035('0x12')]+=0x1;}if(this[_0xb035('0xc')][_0x444b80][_0xb035('0x15')]){this[_0xb035('0x16')]+=0x1;}}this['available']=this[_0xb035('0x12')]-this[_0xb035('0x16')];this[_0xb035('0x17')]=this['available']>=0x0?this[_0xb035('0x17')]:0x0;var _0x47765a={'id':this['id'],'available':this['available'],'loggedIn':this[_0xb035('0x12')],'name':this[_0xb035('0x8')],'paused':this[_0xb035('0x16')],'waiting':this[_0xb035('0xd')]};var _0xc0380c=md5(JSON[_0xb035('0x18')](_0x47765a));if(this[_0xb035('0x1')]!==_0xc0380c){this[_0xb035('0x1')]=_0xc0380c;io['to'](util['format'](_0xb035('0x19'),_0x47765a[_0xb035('0x8')]))[_0xb035('0x1a')]('mail_queue:save',_0x47765a);}};module['exports']=MailQueue;
\ No newline at end of file
index 644b16e..aaf3731 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5fc3=['format','openchannel:queue:%s','name','emit','openchannel_queue:save','exports','lodash','md5','ioredis','../../../config/environment','redis','defaults','socket.io-emitter','timeout','strategy','beepall','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','_rr','prototype','loggedIn','paused','openchannelPause','available'];(function(_0x20cea6,_0x3a0611){var _0x29f2ae=function(_0x204b68){while(--_0x204b68){_0x20cea6['push'](_0x20cea6['shift']());}};_0x29f2ae(++_0x3a0611);}(_0x5fc3,0xa8));var _0x35fc=function(_0x28d18d,_0x55896b){_0x28d18d=_0x28d18d-0x0;var _0x470640=_0x5fc3[_0x28d18d];return _0x470640;};'use strict';var _=require(_0x35fc('0x0'));var md5=require(_0x35fc('0x1'));var util=require('util');var Redis=require(_0x35fc('0x2'));var config=require(_0x35fc('0x3'));config[_0x35fc('0x4')]=_[_0x35fc('0x5')](config[_0x35fc('0x4')],{'host':'localhost','port':0x18eb});var io=require(_0x35fc('0x6'))(new Redis(config[_0x35fc('0x4')]));function OpenchannelQueue(_0x186a06){this['id']=_0x186a06['id']||0x0;this['name']=_0x186a06['name']||'';this[_0x35fc('0x7')]=_0x186a06['timeout']||0xa;this[_0x35fc('0x8')]=_0x186a06[_0x35fc('0x8')]||_0x35fc('0x9');this[_0x35fc('0xa')]=_0x186a06[_0x35fc('0xa')];this[_0x35fc('0xb')]={};this[_0x35fc('0xc')]=0x0;this['md5']='';this[_0x35fc('0xd')]();this[_0x35fc('0xe')]();}OpenchannelQueue['prototype'][_0x35fc('0xd')]=function(){var _0x33f491=this['mapAgentsId'][_0x35fc('0xf')];this[_0x35fc('0xb')]=_['map'](this['Agents'],'id');this[_0x35fc('0xb')]['_rr']=_0x33f491;};OpenchannelQueue[_0x35fc('0x10')][_0x35fc('0xe')]=function(){this[_0x35fc('0x11')]=0x0;this[_0x35fc('0x12')]=0x0;for(var _0x38d9f2=0x0;_0x38d9f2<this['Agents']['length'];_0x38d9f2+=0x1){if(this['Agents'][_0x38d9f2]['online']){this[_0x35fc('0x11')]+=0x1;}if(this[_0x35fc('0xa')][_0x38d9f2][_0x35fc('0x13')]){this[_0x35fc('0x12')]+=0x1;}}this[_0x35fc('0x14')]=this[_0x35fc('0x11')]-this['paused'];this[_0x35fc('0x14')]=this[_0x35fc('0x14')]>=0x0?this['available']:0x0;var _0x41e165={'id':this['id'],'available':this[_0x35fc('0x14')],'loggedIn':this[_0x35fc('0x11')],'name':this['name'],'paused':this[_0x35fc('0x12')],'waiting':this[_0x35fc('0xc')]};var _0x465eb3=md5(JSON['stringify'](_0x41e165));if(this[_0x35fc('0x1')]!==_0x465eb3){this[_0x35fc('0x1')]=_0x465eb3;io['to'](util[_0x35fc('0x15')](_0x35fc('0x16'),_0x41e165[_0x35fc('0x17')]))[_0x35fc('0x18')](_0x35fc('0x19'),_0x41e165);}};module[_0x35fc('0x1a')]=OpenchannelQueue;
\ No newline at end of file
+var _0x7a54=['exports','lodash','md5','util','../../../config/environment','redis','localhost','socket.io-emitter','name','timeout','strategy','beepall','waiting','updateRealtime','mapAgentsId','_rr','map','Agents','prototype','loggedIn','paused','length','openchannelPause','available','stringify','format','openchannel:queue:%s','emit','openchannel_queue:save'];(function(_0x1ae5ab,_0xc5d441){var _0x1ce001=function(_0x5ef96d){while(--_0x5ef96d){_0x1ae5ab['push'](_0x1ae5ab['shift']());}};_0x1ce001(++_0xc5d441);}(_0x7a54,0x106));var _0x47a5=function(_0x3b8b46,_0x577b3f){_0x3b8b46=_0x3b8b46-0x0;var _0x48c5d0=_0x7a54[_0x3b8b46];return _0x48c5d0;};'use strict';var _=require(_0x47a5('0x0'));var md5=require(_0x47a5('0x1'));var util=require(_0x47a5('0x2'));var Redis=require('ioredis');var config=require(_0x47a5('0x3'));config[_0x47a5('0x4')]=_['defaults'](config[_0x47a5('0x4')],{'host':_0x47a5('0x5'),'port':0x18eb});var io=require(_0x47a5('0x6'))(new Redis(config[_0x47a5('0x4')]));function OpenchannelQueue(_0xfdf934){this['id']=_0xfdf934['id']||0x0;this['name']=_0xfdf934[_0x47a5('0x7')]||'';this['timeout']=_0xfdf934[_0x47a5('0x8')]||0xa;this[_0x47a5('0x9')]=_0xfdf934['strategy']||_0x47a5('0xa');this['Agents']=_0xfdf934['Agents'];this['mapAgentsId']={};this[_0x47a5('0xb')]=0x0;this[_0x47a5('0x1')]='';this['updateRouting']();this[_0x47a5('0xc')]();}OpenchannelQueue['prototype']['updateRouting']=function(){var _0x1f47f4=this[_0x47a5('0xd')][_0x47a5('0xe')];this[_0x47a5('0xd')]=_[_0x47a5('0xf')](this[_0x47a5('0x10')],'id');this[_0x47a5('0xd')]['_rr']=_0x1f47f4;};OpenchannelQueue[_0x47a5('0x11')][_0x47a5('0xc')]=function(){this[_0x47a5('0x12')]=0x0;this[_0x47a5('0x13')]=0x0;for(var _0x139f25=0x0;_0x139f25<this[_0x47a5('0x10')][_0x47a5('0x14')];_0x139f25+=0x1){if(this[_0x47a5('0x10')][_0x139f25]['online']){this[_0x47a5('0x12')]+=0x1;}if(this[_0x47a5('0x10')][_0x139f25][_0x47a5('0x15')]){this[_0x47a5('0x13')]+=0x1;}}this[_0x47a5('0x16')]=this['loggedIn']-this['paused'];this[_0x47a5('0x16')]=this['available']>=0x0?this['available']:0x0;var _0x423a81={'id':this['id'],'available':this[_0x47a5('0x16')],'loggedIn':this[_0x47a5('0x12')],'name':this[_0x47a5('0x7')],'paused':this[_0x47a5('0x13')],'waiting':this[_0x47a5('0xb')]};var _0x2763d6=md5(JSON[_0x47a5('0x17')](_0x423a81));if(this[_0x47a5('0x1')]!==_0x2763d6){this['md5']=_0x2763d6;io['to'](util[_0x47a5('0x18')](_0x47a5('0x19'),_0x423a81['name']))[_0x47a5('0x1a')](_0x47a5('0x1b'),_0x423a81);}};module[_0x47a5('0x1c')]=OpenchannelQueue;
\ No newline at end of file
index b043363..dfad358 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf6e=['loggedIn','paused','online','smsPause','available','stringify','format','emit','sms_queue:save','exports','util','ioredis','../../../config/environment','redis','defaults','localhost','name','timeout','strategy','beepall','Agents','waiting','md5','updateRealtime','prototype','updateRouting','mapAgentsId','_rr','map'];(function(_0x39cd25,_0x10d989){var _0x17367e=function(_0x480812){while(--_0x480812){_0x39cd25['push'](_0x39cd25['shift']());}};_0x17367e(++_0x10d989);}(_0xbf6e,0x149));var _0xebf6=function(_0x1cd61f,_0x22e7af){_0x1cd61f=_0x1cd61f-0x0;var _0x27cee9=_0xbf6e[_0x1cd61f];return _0x27cee9;};'use strict';var _=require('lodash');var md5=require('md5');var util=require(_0xebf6('0x0'));var Redis=require(_0xebf6('0x1'));var config=require(_0xebf6('0x2'));config[_0xebf6('0x3')]=_[_0xebf6('0x4')](config[_0xebf6('0x3')],{'host':_0xebf6('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xebf6('0x3')]));function SmsQueue(_0x6ff2a3){this['id']=_0x6ff2a3['id']||0x0;this[_0xebf6('0x6')]=_0x6ff2a3[_0xebf6('0x6')]||'';this[_0xebf6('0x7')]=_0x6ff2a3[_0xebf6('0x7')]||0xa;this[_0xebf6('0x8')]=_0x6ff2a3['strategy']||_0xebf6('0x9');this[_0xebf6('0xa')]=_0x6ff2a3[_0xebf6('0xa')];this['mapAgentsId']={};this[_0xebf6('0xb')]=0x0;this[_0xebf6('0xc')]='';this['updateRouting']();this[_0xebf6('0xd')]();}SmsQueue[_0xebf6('0xe')][_0xebf6('0xf')]=function(){var _0x3954f4=this[_0xebf6('0x10')][_0xebf6('0x11')];this['mapAgentsId']=_[_0xebf6('0x12')](this[_0xebf6('0xa')],'id');this['mapAgentsId'][_0xebf6('0x11')]=_0x3954f4;};SmsQueue[_0xebf6('0xe')][_0xebf6('0xd')]=function(){this[_0xebf6('0x13')]=0x0;this[_0xebf6('0x14')]=0x0;for(var _0x4dbf51=0x0;_0x4dbf51<this['Agents']['length'];_0x4dbf51+=0x1){if(this[_0xebf6('0xa')][_0x4dbf51][_0xebf6('0x15')]){this['loggedIn']+=0x1;}if(this[_0xebf6('0xa')][_0x4dbf51][_0xebf6('0x16')]){this[_0xebf6('0x14')]+=0x1;}}this[_0xebf6('0x17')]=this[_0xebf6('0x13')]-this[_0xebf6('0x14')];this[_0xebf6('0x17')]=this[_0xebf6('0x17')]>=0x0?this[_0xebf6('0x17')]:0x0;var _0x308480={'id':this['id'],'available':this['available'],'loggedIn':this['loggedIn'],'name':this[_0xebf6('0x6')],'paused':this[_0xebf6('0x14')],'waiting':this[_0xebf6('0xb')]};var _0x410f06=md5(JSON[_0xebf6('0x18')](_0x308480));if(this[_0xebf6('0xc')]!==_0x410f06){this[_0xebf6('0xc')]=_0x410f06;io['to'](util[_0xebf6('0x19')]('sms:queue:%s',_0x308480[_0xebf6('0x6')]))[_0xebf6('0x1a')](_0xebf6('0x1b'),_0x308480);}};module[_0xebf6('0x1c')]=SmsQueue;
\ No newline at end of file
+var _0xb205=['available','stringify','format','sms:queue:%s','emit','sms_queue:save','lodash','md5','util','ioredis','../../../config/environment','redis','socket.io-emitter','name','timeout','strategy','Agents','mapAgentsId','waiting','updateRouting','updateRealtime','prototype','_rr','paused','length','loggedIn'];(function(_0x43576f,_0x1356ed){var _0x4d2466=function(_0x865deb){while(--_0x865deb){_0x43576f['push'](_0x43576f['shift']());}};_0x4d2466(++_0x1356ed);}(_0xb205,0xf0));var _0x5b20=function(_0x199cac,_0x5ec7a3){_0x199cac=_0x199cac-0x0;var _0x1372ed=_0xb205[_0x199cac];return _0x1372ed;};'use strict';var _=require(_0x5b20('0x0'));var md5=require(_0x5b20('0x1'));var util=require(_0x5b20('0x2'));var Redis=require(_0x5b20('0x3'));var config=require(_0x5b20('0x4'));config['redis']=_['defaults'](config[_0x5b20('0x5')],{'host':'localhost','port':0x18eb});var io=require(_0x5b20('0x6'))(new Redis(config[_0x5b20('0x5')]));function SmsQueue(_0x5a4526){this['id']=_0x5a4526['id']||0x0;this[_0x5b20('0x7')]=_0x5a4526[_0x5b20('0x7')]||'';this[_0x5b20('0x8')]=_0x5a4526['timeout']||0xa;this[_0x5b20('0x9')]=_0x5a4526[_0x5b20('0x9')]||'beepall';this['Agents']=_0x5a4526[_0x5b20('0xa')];this[_0x5b20('0xb')]={};this[_0x5b20('0xc')]=0x0;this[_0x5b20('0x1')]='';this[_0x5b20('0xd')]();this[_0x5b20('0xe')]();}SmsQueue[_0x5b20('0xf')]['updateRouting']=function(){var _0xdec7cd=this[_0x5b20('0xb')][_0x5b20('0x10')];this['mapAgentsId']=_['map'](this[_0x5b20('0xa')],'id');this[_0x5b20('0xb')][_0x5b20('0x10')]=_0xdec7cd;};SmsQueue[_0x5b20('0xf')][_0x5b20('0xe')]=function(){this['loggedIn']=0x0;this[_0x5b20('0x11')]=0x0;for(var _0x32c2df=0x0;_0x32c2df<this[_0x5b20('0xa')][_0x5b20('0x12')];_0x32c2df+=0x1){if(this['Agents'][_0x32c2df]['online']){this[_0x5b20('0x13')]+=0x1;}if(this['Agents'][_0x32c2df]['smsPause']){this[_0x5b20('0x11')]+=0x1;}}this['available']=this[_0x5b20('0x13')]-this[_0x5b20('0x11')];this[_0x5b20('0x14')]=this['available']>=0x0?this[_0x5b20('0x14')]:0x0;var _0x301c9a={'id':this['id'],'available':this[_0x5b20('0x14')],'loggedIn':this[_0x5b20('0x13')],'name':this['name'],'paused':this[_0x5b20('0x11')],'waiting':this['waiting']};var _0x1a75d7=md5(JSON[_0x5b20('0x15')](_0x301c9a));if(this['md5']!==_0x1a75d7){this[_0x5b20('0x1')]=_0x1a75d7;io['to'](util[_0x5b20('0x16')](_0x5b20('0x17'),_0x301c9a['name']))[_0x5b20('0x18')](_0x5b20('0x19'),_0x301c9a);}};module['exports']=SmsQueue;
\ No newline at end of file
index 5ee6361..f98953d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc42e=['paused','online','whatsappPause','available','stringify','format','whatsapp:queue:%s','emit','exports','ioredis','../../../config/environment','redis','defaults','localhost','name','timeout','strategy','beepall','Agents','mapAgentsId','waiting','md5','updateRouting','updateRealtime','prototype','_rr','map','loggedIn'];(function(_0x789aca,_0x2a0c73){var _0x4da655=function(_0x34225e){while(--_0x34225e){_0x789aca['push'](_0x789aca['shift']());}};_0x4da655(++_0x2a0c73);}(_0xc42e,0x13d));var _0xec42=function(_0x2628b0,_0xa51fc9){_0x2628b0=_0x2628b0-0x0;var _0x44c69a=_0xc42e[_0x2628b0];return _0x44c69a;};'use strict';var _=require('lodash');var md5=require('md5');var util=require('util');var Redis=require(_0xec42('0x0'));var config=require(_0xec42('0x1'));config[_0xec42('0x2')]=_[_0xec42('0x3')](config[_0xec42('0x2')],{'host':_0xec42('0x4'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function WhatsappQueue(_0x29c39e){this['id']=_0x29c39e['id']||0x0;this[_0xec42('0x5')]=_0x29c39e[_0xec42('0x5')]||'';this[_0xec42('0x6')]=_0x29c39e[_0xec42('0x6')]||0xa;this[_0xec42('0x7')]=_0x29c39e[_0xec42('0x7')]||_0xec42('0x8');this[_0xec42('0x9')]=_0x29c39e[_0xec42('0x9')];this[_0xec42('0xa')]={};this[_0xec42('0xb')]=0x0;this[_0xec42('0xc')]='';this[_0xec42('0xd')]();this[_0xec42('0xe')]();}WhatsappQueue[_0xec42('0xf')]['updateRouting']=function(){var _0x209e51=this[_0xec42('0xa')][_0xec42('0x10')];this['mapAgentsId']=_[_0xec42('0x11')](this['Agents'],'id');this[_0xec42('0xa')][_0xec42('0x10')]=_0x209e51;};WhatsappQueue[_0xec42('0xf')]['updateRealtime']=function(){this[_0xec42('0x12')]=0x0;this[_0xec42('0x13')]=0x0;for(var _0x701bca=0x0;_0x701bca<this[_0xec42('0x9')]['length'];_0x701bca+=0x1){if(this[_0xec42('0x9')][_0x701bca][_0xec42('0x14')]){this[_0xec42('0x12')]+=0x1;}if(this[_0xec42('0x9')][_0x701bca][_0xec42('0x15')]){this[_0xec42('0x13')]+=0x1;}}this[_0xec42('0x16')]=this['loggedIn']-this[_0xec42('0x13')];this[_0xec42('0x16')]=this[_0xec42('0x16')]>=0x0?this['available']:0x0;var _0x46b2fe={'id':this['id'],'available':this[_0xec42('0x16')],'loggedIn':this[_0xec42('0x12')],'name':this[_0xec42('0x5')],'paused':this[_0xec42('0x13')],'waiting':this[_0xec42('0xb')]};var _0x3c3c57=md5(JSON[_0xec42('0x17')](_0x46b2fe));if(this[_0xec42('0xc')]!==_0x3c3c57){this[_0xec42('0xc')]=_0x3c3c57;io['to'](util[_0xec42('0x18')](_0xec42('0x19'),_0x46b2fe['name']))[_0xec42('0x1a')]('whatsapp_queue:save',_0x46b2fe);}};module[_0xec42('0x1b')]=WhatsappQueue;
\ No newline at end of file
+var _0x779d=['length','online','whatsappPause','available','stringify','md5','whatsapp:queue:%s','emit','whatsapp_queue:save','exports','lodash','util','ioredis','../../../config/environment','redis','defaults','localhost','socket.io-emitter','name','timeout','strategy','Agents','waiting','updateRouting','updateRealtime','prototype','mapAgentsId','map','_rr','loggedIn','paused'];(function(_0xf657a0,_0x1cbd02){var _0x3547c0=function(_0x697e78){while(--_0x697e78){_0xf657a0['push'](_0xf657a0['shift']());}};_0x3547c0(++_0x1cbd02);}(_0x779d,0x15f));var _0xd779=function(_0x358dda,_0x3dfe65){_0x358dda=_0x358dda-0x0;var _0x1cf6c8=_0x779d[_0x358dda];return _0x1cf6c8;};'use strict';var _=require(_0xd779('0x0'));var md5=require('md5');var util=require(_0xd779('0x1'));var Redis=require(_0xd779('0x2'));var config=require(_0xd779('0x3'));config[_0xd779('0x4')]=_[_0xd779('0x5')](config[_0xd779('0x4')],{'host':_0xd779('0x6'),'port':0x18eb});var io=require(_0xd779('0x7'))(new Redis(config[_0xd779('0x4')]));function WhatsappQueue(_0x223f04){this['id']=_0x223f04['id']||0x0;this[_0xd779('0x8')]=_0x223f04[_0xd779('0x8')]||'';this['timeout']=_0x223f04[_0xd779('0x9')]||0xa;this[_0xd779('0xa')]=_0x223f04[_0xd779('0xa')]||'beepall';this[_0xd779('0xb')]=_0x223f04[_0xd779('0xb')];this['mapAgentsId']={};this[_0xd779('0xc')]=0x0;this['md5']='';this[_0xd779('0xd')]();this[_0xd779('0xe')]();}WhatsappQueue[_0xd779('0xf')][_0xd779('0xd')]=function(){var _0x196aeb=this['mapAgentsId']['_rr'];this[_0xd779('0x10')]=_[_0xd779('0x11')](this[_0xd779('0xb')],'id');this[_0xd779('0x10')][_0xd779('0x12')]=_0x196aeb;};WhatsappQueue[_0xd779('0xf')]['updateRealtime']=function(){this[_0xd779('0x13')]=0x0;this[_0xd779('0x14')]=0x0;for(var _0x369bc0=0x0;_0x369bc0<this['Agents'][_0xd779('0x15')];_0x369bc0+=0x1){if(this['Agents'][_0x369bc0][_0xd779('0x16')]){this[_0xd779('0x13')]+=0x1;}if(this[_0xd779('0xb')][_0x369bc0][_0xd779('0x17')]){this[_0xd779('0x14')]+=0x1;}}this['available']=this['loggedIn']-this['paused'];this['available']=this[_0xd779('0x18')]>=0x0?this[_0xd779('0x18')]:0x0;var _0x70fba6={'id':this['id'],'available':this[_0xd779('0x18')],'loggedIn':this[_0xd779('0x13')],'name':this[_0xd779('0x8')],'paused':this['paused'],'waiting':this[_0xd779('0xc')]};var _0x428594=md5(JSON[_0xd779('0x19')](_0x70fba6));if(this[_0xd779('0x1a')]!==_0x428594){this[_0xd779('0x1a')]=_0x428594;io['to'](util['format'](_0xd779('0x1b'),_0x70fba6[_0xd779('0x8')]))[_0xd779('0x1c')](_0xd779('0x1d'),_0x70fba6);}};module[_0xd779('0x1e')]=WhatsappQueue;
\ No newline at end of file
index 478d34a..30a762f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-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(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xa9e0[_0x1facfa];return _0x9ec701;};'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
+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(_0x47e7cb,_0x4c1b8d){_0x47e7cb=_0x47e7cb-0x0;var _0x2a8874=_0xa9e0[_0x47e7cb];return _0x2a8874;};'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 95635e0..460d301 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5466=['UpdateChatInteraction','updateChatInteraction','AddTagsToChatInteraction','addTagsToChatInteraction','../client','Request'];(function(_0x3bd040,_0x28ff9a){var _0x5928fd=function(_0x21b765){while(--_0x21b765){_0x3bd040['push'](_0x3bd040['shift']());}};_0x5928fd(++_0x28ff9a);}(_0x5466,0xb8));var _0x6546=function(_0x294ff8,_0x51a22e){_0x294ff8=_0x294ff8-0x0;var _0x7e3eb7=_0x5466[_0x294ff8];return _0x7e3eb7;};'use strict';var client=require(_0x6546('0x0'));exports['update']=function(_0x4ee2ff,_0x3f76dc){return client[_0x6546('0x1')](_0x6546('0x2'),{'body':_0x3f76dc,'options':{'where':{'id':_0x4ee2ff}},'log':_0x6546('0x3')});};exports['addTags']=function(_0x123f26,_0x36d7f2){return client[_0x6546('0x1')](_0x6546('0x4'),{'body':_0x36d7f2,'options':{'where':{'id':_0x123f26}},'log':_0x6546('0x5')});};
\ No newline at end of file
+var _0xf034=['../client','update','Request','UpdateChatInteraction','updateChatInteraction','addTags','AddTagsToChatInteraction','addTagsToChatInteraction'];(function(_0x7d6eca,_0x59d54a){var _0x128263=function(_0x4019d6){while(--_0x4019d6){_0x7d6eca['push'](_0x7d6eca['shift']());}};_0x128263(++_0x59d54a);}(_0xf034,0x110));var _0x4f03=function(_0x356706,_0x3b8e03){_0x356706=_0x356706-0x0;var _0x15feed=_0xf034[_0x356706];return _0x15feed;};'use strict';var client=require(_0x4f03('0x0'));exports[_0x4f03('0x1')]=function(_0x37f745,_0x34e660){return client[_0x4f03('0x2')](_0x4f03('0x3'),{'body':_0x34e660,'options':{'where':{'id':_0x37f745}},'log':_0x4f03('0x4')});};exports[_0x4f03('0x5')]=function(_0x58dab7,_0x461a9a){return client[_0x4f03('0x2')](_0x4f03('0x6'),{'body':_0x461a9a,'options':{'where':{'id':_0x58dab7}},'log':_0x4f03('0x7')});};
\ No newline at end of file
index bf8e4df..be4c827 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1488=['Request','createChatMessage','../client','create'];(function(_0x1fb03b,_0x512605){var _0x5c392c=function(_0x358be2){while(--_0x358be2){_0x1fb03b['push'](_0x1fb03b['shift']());}};_0x5c392c(++_0x512605);}(_0x1488,0x86));var _0x8148=function(_0x1ba43c,_0x5bd2e8){_0x1ba43c=_0x1ba43c-0x0;var _0x2f60eb=_0x1488[_0x1ba43c];return _0x2f60eb;};'use strict';var client=require(_0x8148('0x0'));exports[_0x8148('0x1')]=function(_0x9974e3){return client[_0x8148('0x2')]('CreateChatMessage',{'body':_0x9974e3,'log':_0x8148('0x3')});};
\ No newline at end of file
+var _0x154b=['create','Request','CreateChatMessage','../client'];(function(_0x4cae38,_0x1f7372){var _0x4fc0d6=function(_0x105335){while(--_0x105335){_0x4cae38['push'](_0x4cae38['shift']());}};_0x4fc0d6(++_0x1f7372);}(_0x154b,0xeb));var _0xb154=function(_0x4e3ac5,_0x356da1){_0x4e3ac5=_0x4e3ac5-0x0;var _0xc55edf=_0x154b[_0x4e3ac5];return _0xc55edf;};'use strict';var client=require(_0xb154('0x0'));exports[_0xb154('0x1')]=function(_0x4d8b51){return client[_0xb154('0x2')](_0xb154('0x3'),{'body':_0x4d8b51,'log':'createChatMessage'});};
\ No newline at end of file
index 9c88efe..bfe9e90 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa631=['timeout','Agents','name','online','getChatQueues','Request','GetChatQueue'];(function(_0x5af0d7,_0x5aa551){var _0x267fef=function(_0xa71467){while(--_0xa71467){_0x5af0d7['push'](_0x5af0d7['shift']());}};_0x267fef(++_0x5aa551);}(_0xa631,0xe4));var _0x1a63=function(_0x10b03c,_0x453704){_0x10b03c=_0x10b03c-0x0;var _0x209573=_0xa631[_0x10b03c];return _0x209573;};'use strict';var client=require('../client');exports[_0x1a63('0x0')]=function(){return function(){return client[_0x1a63('0x1')](_0x1a63('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x1a63('0x3'),'strategy'],'include':[{'model':'User','as':_0x1a63('0x4'),'attributes':['id',_0x1a63('0x5'),_0x1a63('0x6'),'chatPause']}]},'log':'getChatQueues'});};};
\ No newline at end of file
+var _0x4553=['User','Agents','name','online','chatPause','getChatQueues','Request','GetChatQueue','strategy'];(function(_0x8a969d,_0x339d9f){var _0x1d8dc7=function(_0x283ec0){while(--_0x283ec0){_0x8a969d['push'](_0x8a969d['shift']());}};_0x1d8dc7(++_0x339d9f);}(_0x4553,0x1be));var _0x3455=function(_0x278e3c,_0x1c9cfd){_0x278e3c=_0x278e3c-0x0;var _0x3e2d9b=_0x4553[_0x278e3c];return _0x3e2d9b;};'use strict';var client=require('../client');exports[_0x3455('0x0')]=function(){return function(){return client[_0x3455('0x1')](_0x3455('0x2'),{'options':{'raw':![],'attributes':['id','name','timeout',_0x3455('0x3')],'include':[{'model':_0x3455('0x4'),'as':_0x3455('0x5'),'attributes':['id',_0x3455('0x6'),_0x3455('0x7'),_0x3455('0x8')]}]},'log':_0x3455('0x0')});};};
\ No newline at end of file
index 1dc9d41..08a3333 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x885e=['CreateChatQueueReport','update','UpdateChatQueueReport','DESC','../client','create','Request'];(function(_0x10d8c5,_0x5719ee){var _0x2d0e54=function(_0x4c557c){while(--_0x4c557c){_0x10d8c5['push'](_0x10d8c5['shift']());}};_0x2d0e54(++_0x5719ee);}(_0x885e,0xe4));var _0xe885=function(_0x4463d2,_0x470619){_0x4463d2=_0x4463d2-0x0;var _0x69c5f8=_0x885e[_0x4463d2];return _0x69c5f8;};'use strict';var client=require(_0xe885('0x0'));exports[_0xe885('0x1')]=function(_0x53d182){return client[_0xe885('0x2')](_0xe885('0x3'),{'body':_0x53d182,'log':_0xe885('0x3')});};exports[_0xe885('0x4')]=function(_0x861437,_0x4fcd9b){return client['Request'](_0xe885('0x5'),{'body':_0x4fcd9b,'options':{'where':{'uniqueid':_0x861437},'order':[['id',_0xe885('0x6')]],'limit':0x1},'log':_0xe885('0x5')});};
\ No newline at end of file
+var _0x222f=['../client','create','Request','update','DESC'];(function(_0x331f7e,_0xa66d77){var _0x2c82b7=function(_0x5c35b2){while(--_0x5c35b2){_0x331f7e['push'](_0x331f7e['shift']());}};_0x2c82b7(++_0xa66d77);}(_0x222f,0x1a4));var _0xf222=function(_0x1f1305,_0x2435f5){_0x1f1305=_0x1f1305-0x0;var _0x571a9d=_0x222f[_0x1f1305];return _0x571a9d;};'use strict';var client=require(_0xf222('0x0'));exports[_0xf222('0x1')]=function(_0x251440){return client[_0xf222('0x2')]('CreateChatQueueReport',{'body':_0x251440,'log':'CreateChatQueueReport'});};exports[_0xf222('0x3')]=function(_0x233e95,_0x307791){return client[_0xf222('0x2')]('UpdateChatQueueReport',{'body':_0x307791,'options':{'where':{'uniqueid':_0x233e95},'order':[['id',_0xf222('0x4')]],'limit':0x1},'log':'UpdateChatQueueReport'});};
\ No newline at end of file
index 366e63d..4b74dcf 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7a54=['Request','UpdateFaxInteraction','addTags','AddTagsToFaxInteraction','../client','update'];(function(_0x20bc10,_0x35bed9){var _0x3bd5ce=function(_0x8d1e4c){while(--_0x8d1e4c){_0x20bc10['push'](_0x20bc10['shift']());}};_0x3bd5ce(++_0x35bed9);}(_0x7a54,0x106));var _0x47a5=function(_0x1ffcac,_0x2652c0){_0x1ffcac=_0x1ffcac-0x0;var _0x21a2bb=_0x7a54[_0x1ffcac];return _0x21a2bb;};'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
+var _0x9957=['Request','AddTagsToFaxInteraction','addTagsToFaxInteraction','../client','update','UpdateFaxInteraction','updateFaxInteraction','addTags'];(function(_0x17bd6c,_0x505ef2){var _0x2ccb33=function(_0x16b0f7){while(--_0x16b0f7){_0x17bd6c['push'](_0x17bd6c['shift']());}};_0x2ccb33(++_0x505ef2);}(_0x9957,0x93));var _0x7995=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0x9957[_0x1facfa];return _0x9ec701;};'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
index fb3f55c..7fa0ab9 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1d82=['Request','CreateFaxMessage','../client','create'];(function(_0x3665b9,_0x3b5d4f){var _0x524099=function(_0x876977){while(--_0x876977){_0x3665b9['push'](_0x3665b9['shift']());}};_0x524099(++_0x3b5d4f);}(_0x1d82,0xe6));var _0x21d8=function(_0x3c0b4c,_0x473ea0){_0x3c0b4c=_0x3c0b4c-0x0;var _0x1f6916=_0x1d82[_0x3c0b4c];return _0x1f6916;};'use strict';var client=require(_0x21d8('0x0'));exports[_0x21d8('0x1')]=function(_0x91ba07){return client[_0x21d8('0x2')](_0x21d8('0x3'),{'body':_0x91ba07,'log':'createFaxMessage'});};
\ No newline at end of file
+var _0x43d7=['createFaxMessage','../client','CreateFaxMessage'];(function(_0x358906,_0x2bcb27){var _0x41a536=function(_0x125e60){while(--_0x125e60){_0x358906['push'](_0x358906['shift']());}};_0x41a536(++_0x2bcb27);}(_0x43d7,0x1a8));var _0x743d=function(_0x323d8c,_0x4c60c5){_0x323d8c=_0x323d8c-0x0;var _0x2428fa=_0x43d7[_0x323d8c];return _0x2428fa;};'use strict';var client=require(_0x743d('0x0'));exports['create']=function(_0x56c556){return client['Request'](_0x743d('0x1'),{'body':_0x56c556,'log':_0x743d('0x2')});};
\ No newline at end of file
index 1f6d6ad..53cf74f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8ac5=['../client','Request','GetFaxQueue','name','timeout','strategy','User','Agents','online','faxPause','getFaxQueues'];(function(_0x45beec,_0x120b1a){var _0x487aa9=function(_0x4b3cb7){while(--_0x4b3cb7){_0x45beec['push'](_0x45beec['shift']());}};_0x487aa9(++_0x120b1a);}(_0x8ac5,0x113));var _0x58ac=function(_0x25fd75,_0x249eca){_0x25fd75=_0x25fd75-0x0;var _0x30c67d=_0x8ac5[_0x25fd75];return _0x30c67d;};'use strict';var client=require(_0x58ac('0x0'));exports['getFaxQueues']=function(){return function(){return client[_0x58ac('0x1')](_0x58ac('0x2'),{'options':{'raw':![],'attributes':['id',_0x58ac('0x3'),_0x58ac('0x4'),_0x58ac('0x5')],'include':[{'model':_0x58ac('0x6'),'as':_0x58ac('0x7'),'attributes':['id','name',_0x58ac('0x8'),_0x58ac('0x9')]}]},'log':_0x58ac('0xa')});};};
\ No newline at end of file
+var _0x6572=['timeout','User','online','faxPause','../client','getFaxQueues','name'];(function(_0x2afd88,_0x20d2f8){var _0x4f9262=function(_0x11b99b){while(--_0x11b99b){_0x2afd88['push'](_0x2afd88['shift']());}};_0x4f9262(++_0x20d2f8);}(_0x6572,0x7b));var _0x2657=function(_0x289b0c,_0xe3df44){_0x289b0c=_0x289b0c-0x0;var _0x45e3cc=_0x6572[_0x289b0c];return _0x45e3cc;};'use strict';var client=require(_0x2657('0x0'));exports[_0x2657('0x1')]=function(){return function(){return client['Request']('GetFaxQueue',{'options':{'raw':![],'attributes':['id',_0x2657('0x2'),_0x2657('0x3'),'strategy'],'include':[{'model':_0x2657('0x4'),'as':'Agents','attributes':['id','name',_0x2657('0x5'),_0x2657('0x6')]}]},'log':'getFaxQueues'});};};
\ No newline at end of file
index c947e84..f231f14 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2536=['create','Request','CreateFaxQueueReport','update','UpdateFaxQueueReport','../client'];(function(_0x549f84,_0x165cab){var _0x2efa17=function(_0x49d5d2){while(--_0x49d5d2){_0x549f84['push'](_0x549f84['shift']());}};_0x2efa17(++_0x165cab);}(_0x2536,0x1eb));var _0x6253=function(_0x763d20,_0x2301f2){_0x763d20=_0x763d20-0x0;var _0x43f0e8=_0x2536[_0x763d20];return _0x43f0e8;};'use strict';var client=require(_0x6253('0x0'));exports[_0x6253('0x1')]=function(_0x2f58b9){return client[_0x6253('0x2')]('CreateFaxQueueReport',{'body':_0x2f58b9,'log':_0x6253('0x3')});};exports[_0x6253('0x4')]=function(_0x836459,_0x1f0eec){return client[_0x6253('0x2')](_0x6253('0x5'),{'body':_0x1f0eec,'options':{'where':{'uniqueid':_0x836459},'order':[['id','DESC']],'limit':0x1},'log':_0x6253('0x5')});};
\ No newline at end of file
+var _0xb467=['CreateFaxQueueReport','update','UpdateFaxQueueReport','../client','create','Request'];(function(_0x5aa1e2,_0x2b5adb){var _0x399098=function(_0xb129fb){while(--_0xb129fb){_0x5aa1e2['push'](_0x5aa1e2['shift']());}};_0x399098(++_0x2b5adb);}(_0xb467,0x111));var _0x7b46=function(_0x5c38cd,_0x5a6b4e){_0x5c38cd=_0x5c38cd-0x0;var _0xc985ef=_0xb467[_0x5c38cd];return _0xc985ef;};'use strict';var client=require(_0x7b46('0x0'));exports[_0x7b46('0x1')]=function(_0x5d3120){return client[_0x7b46('0x2')](_0x7b46('0x3'),{'body':_0x5d3120,'log':'CreateFaxQueueReport'});};exports[_0x7b46('0x4')]=function(_0x3e7a86,_0x5065a3){return client[_0x7b46('0x2')](_0x7b46('0x5'),{'body':_0x5065a3,'options':{'where':{'uniqueid':_0x3e7a86},'order':[['id','DESC']],'limit':0x1},'log':'UpdateFaxQueueReport'});};
\ No newline at end of file
index 26072fb..7670c53 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2a3f=['Intervals','interval','getIntervals','../client','Request','GetInterval','name','Interval'];(function(_0x4b34c1,_0x4dcff0){var _0xf2544d=function(_0x51214a){while(--_0x51214a){_0x4b34c1['push'](_0x4b34c1['shift']());}};_0xf2544d(++_0x4dcff0);}(_0x2a3f,0xcb));var _0xf2a3=function(_0x1678c8,_0x1c32f4){_0x1678c8=_0x1678c8-0x0;var _0x387aa9=_0x2a3f[_0x1678c8];return _0x387aa9;};'use strict';var client=require(_0xf2a3('0x0'));exports['getIntervals']=function(){return function(){return client[_0xf2a3('0x1')](_0xf2a3('0x2'),{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xf2a3('0x3')],'include':[{'model':_0xf2a3('0x4'),'as':_0xf2a3('0x5'),'attributes':['id',_0xf2a3('0x3'),_0xf2a3('0x6')]}]},'log':_0xf2a3('0x7')});};};
\ No newline at end of file
+var _0x361e=['../client','getIntervals','Request','name','Interval','Intervals','interval'];(function(_0x2f090f,_0x387a23){var _0x4edb0a=function(_0x40c390){while(--_0x40c390){_0x2f090f['push'](_0x2f090f['shift']());}};_0x4edb0a(++_0x387a23);}(_0x361e,0x13b));var _0xe361=function(_0x5c7841,_0x39b9b3){_0x5c7841=_0x5c7841-0x0;var _0x7e5475=_0x361e[_0x5c7841];return _0x7e5475;};'use strict';var client=require(_0xe361('0x0'));exports[_0xe361('0x1')]=function(){return function(){return client[_0xe361('0x2')]('GetInterval',{'options':{'raw':![],'where':{'IntervalId':null},'attributes':['id',_0xe361('0x3')],'include':[{'model':_0xe361('0x4'),'as':_0xe361('0x5'),'attributes':['id',_0xe361('0x3'),_0xe361('0x6')]}]},'log':_0xe361('0x1')});};};
\ No newline at end of file
index 326c381..5903cf8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x93e9=['addTagsToChatInteraction','../client','update','Request','UpdateMailInteraction','updateMailInteraction','AddTagsToMailInteraction'];(function(_0x54bf31,_0x59e4ad){var _0x184829=function(_0x349d33){while(--_0x349d33){_0x54bf31['push'](_0x54bf31['shift']());}};_0x184829(++_0x59e4ad);}(_0x93e9,0xcc));var _0x993e=function(_0x48524d,_0x10fe7f){_0x48524d=_0x48524d-0x0;var _0x2f619b=_0x93e9[_0x48524d];return _0x2f619b;};'use strict';var client=require(_0x993e('0x0'));exports[_0x993e('0x1')]=function(_0x444623,_0x4405ca){return client[_0x993e('0x2')](_0x993e('0x3'),{'body':_0x4405ca,'options':{'where':{'id':_0x444623}},'log':_0x993e('0x4')});};exports['addTags']=function(_0x55f739,_0x1b762e){return client[_0x993e('0x2')](_0x993e('0x5'),{'body':_0x1b762e,'options':{'where':{'id':_0x55f739}},'log':_0x993e('0x6')});};
\ No newline at end of file
+var _0xfef3=['../client','Request','UpdateMailInteraction','addTags','AddTagsToMailInteraction'];(function(_0x308c40,_0x4e8747){var _0xa153f0=function(_0x2f5aa7){while(--_0x2f5aa7){_0x308c40['push'](_0x308c40['shift']());}};_0xa153f0(++_0x4e8747);}(_0xfef3,0x118));var _0x3fef=function(_0x515e13,_0x3fabd7){_0x515e13=_0x515e13-0x0;var _0x1dd659=_0xfef3[_0x515e13];return _0x1dd659;};'use strict';var client=require(_0x3fef('0x0'));exports['update']=function(_0x3f2183,_0x494ae6){return client[_0x3fef('0x1')](_0x3fef('0x2'),{'body':_0x494ae6,'options':{'where':{'id':_0x3f2183}},'log':'updateMailInteraction'});};exports[_0x3fef('0x3')]=function(_0x3b71e5,_0x538f28){return client[_0x3fef('0x1')](_0x3fef('0x4'),{'body':_0x538f28,'options':{'where':{'id':_0x3b71e5}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 25508ef..cdc3529 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc2b6=['Request','createMailMessage','create'];(function(_0x2b91c5,_0x3b6db5){var _0xbd5531=function(_0x54783d){while(--_0x54783d){_0x2b91c5['push'](_0x2b91c5['shift']());}};_0xbd5531(++_0x3b6db5);}(_0xc2b6,0x10a));var _0x6c2b=function(_0x1d558c,_0x1e497c){_0x1d558c=_0x1d558c-0x0;var _0x15767d=_0xc2b6[_0x1d558c];return _0x15767d;};'use strict';var client=require('../client');exports[_0x6c2b('0x0')]=function(_0x158798){return client[_0x6c2b('0x1')]('CreateMailMessage',{'body':_0x158798,'log':_0x6c2b('0x2')});};
\ No newline at end of file
+var _0x1ee1=['../client','create','CreateMailMessage','createMailMessage'];(function(_0x3cdbe7,_0x3d6df1){var _0x38886e=function(_0x49bd6d){while(--_0x49bd6d){_0x3cdbe7['push'](_0x3cdbe7['shift']());}};_0x38886e(++_0x3d6df1);}(_0x1ee1,0x1b8));var _0x11ee=function(_0x17c28c,_0x216f08){_0x17c28c=_0x17c28c-0x0;var _0x585fdb=_0x1ee1[_0x17c28c];return _0x585fdb;};'use strict';var client=require(_0x11ee('0x0'));exports[_0x11ee('0x1')]=function(_0x36ab53){return client['Request'](_0x11ee('0x2'),{'body':_0x36ab53,'log':_0x11ee('0x3')});};
\ No newline at end of file
index f8fd03c..20f5cd8 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x09c2=['mailPause','../client','getMailQueues','GetMailQueue','name','timeout','User','Agents','online'];(function(_0x137c51,_0x1b0ab4){var _0x77b4d3=function(_0x246695){while(--_0x246695){_0x137c51['push'](_0x137c51['shift']());}};_0x77b4d3(++_0x1b0ab4);}(_0x09c2,0x1c3));var _0x209c=function(_0x3592ab,_0x4f669a){_0x3592ab=_0x3592ab-0x0;var _0x13298a=_0x09c2[_0x3592ab];return _0x13298a;};'use strict';var client=require(_0x209c('0x0'));exports[_0x209c('0x1')]=function(){return function(){return client['Request'](_0x209c('0x2'),{'options':{'raw':![],'attributes':['id',_0x209c('0x3'),_0x209c('0x4'),'strategy'],'include':[{'model':_0x209c('0x5'),'as':_0x209c('0x6'),'attributes':['id',_0x209c('0x3'),_0x209c('0x7'),_0x209c('0x8')]}]},'log':'getMailQueues'});};};
\ No newline at end of file
+var _0x9572=['../client','Request','GetMailQueue','timeout','strategy','User','Agents','online','mailPause','getMailQueues'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x9572,0x82));var _0x2957=function(_0x1c6afa,_0x1d9872){_0x1c6afa=_0x1c6afa-0x0;var _0x372ca7=_0x9572[_0x1c6afa];return _0x372ca7;};'use strict';var client=require(_0x2957('0x0'));exports['getMailQueues']=function(){return function(){return client[_0x2957('0x1')](_0x2957('0x2'),{'options':{'raw':![],'attributes':['id','name',_0x2957('0x3'),_0x2957('0x4')],'include':[{'model':_0x2957('0x5'),'as':_0x2957('0x6'),'attributes':['id','name',_0x2957('0x7'),_0x2957('0x8')]}]},'log':_0x2957('0x9')});};};
\ No newline at end of file
index 8fa84f6..43e12ab 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c35=['CreateMailQueueReport','UpdateMailQueueReport','../client','create','Request'];(function(_0x1c0f41,_0x26d95d){var _0x369a9f=function(_0x251234){while(--_0x251234){_0x1c0f41['push'](_0x1c0f41['shift']());}};_0x369a9f(++_0x26d95d);}(_0x2c35,0xac));var _0x52c3=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2c35[_0x3dd15e];return _0x231fd0;};'use strict';var client=require(_0x52c3('0x0'));exports[_0x52c3('0x1')]=function(_0x21155a){return client[_0x52c3('0x2')](_0x52c3('0x3'),{'body':_0x21155a,'log':'CreateMailQueueReport'});};exports['update']=function(_0xd5b8b0,_0x4ae702){return client['Request'](_0x52c3('0x4'),{'body':_0x4ae702,'options':{'where':{'uniqueid':_0xd5b8b0},'order':[['id','DESC']],'limit':0x1},'log':_0x52c3('0x4')});};
\ No newline at end of file
+var _0x12e8=['DESC','create','CreateMailQueueReport','update','Request','UpdateMailQueueReport'];(function(_0x243217,_0x522951){var _0x478029=function(_0x18d053){while(--_0x18d053){_0x243217['push'](_0x243217['shift']());}};_0x478029(++_0x522951);}(_0x12e8,0xeb));var _0x812e=function(_0x58e907,_0x2cd679){_0x58e907=_0x58e907-0x0;var _0x6306eb=_0x12e8[_0x58e907];return _0x6306eb;};'use strict';var client=require('../client');exports[_0x812e('0x0')]=function(_0x5f8358){return client['Request'](_0x812e('0x1'),{'body':_0x5f8358,'log':_0x812e('0x1')});};exports[_0x812e('0x2')]=function(_0x54ee10,_0x27c652){return client[_0x812e('0x3')](_0x812e('0x4'),{'body':_0x27c652,'options':{'where':{'uniqueid':_0x54ee10},'order':[['id',_0x812e('0x5')]],'limit':0x1},'log':_0x812e('0x4')});};
\ No newline at end of file
index 189323d..54c383f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb6f2=['Request','AddTagsToOpenchannelInteraction','addTagsToChatInteraction','../client','updateOpenchannelInteraction','addTags'];(function(_0x1127f9,_0x55532f){var _0x459f77=function(_0x19fca2){while(--_0x19fca2){_0x1127f9['push'](_0x1127f9['shift']());}};_0x459f77(++_0x55532f);}(_0xb6f2,0x93));var _0x2b6f=function(_0x2c7618,_0x26be9c){_0x2c7618=_0x2c7618-0x0;var _0x5ce3f0=_0xb6f2[_0x2c7618];return _0x5ce3f0;};'use strict';var client=require(_0x2b6f('0x0'));exports['update']=function(_0x226a23,_0x31d097){return client['Request']('UpdateOpenchannelInteraction',{'body':_0x31d097,'options':{'where':{'id':_0x226a23}},'log':_0x2b6f('0x1')});};exports[_0x2b6f('0x2')]=function(_0x508941,_0x2c13b2){return client[_0x2b6f('0x3')](_0x2b6f('0x4'),{'body':_0x2c13b2,'options':{'where':{'id':_0x508941}},'log':_0x2b6f('0x5')});};
\ No newline at end of file
+var _0x2c2a=['UpdateOpenchannelInteraction','updateOpenchannelInteraction','addTags','Request','AddTagsToOpenchannelInteraction','../client','update'];(function(_0x11a0b0,_0x13077c){var _0x1382e6=function(_0x562ed0){while(--_0x562ed0){_0x11a0b0['push'](_0x11a0b0['shift']());}};_0x1382e6(++_0x13077c);}(_0x2c2a,0x140));var _0xa2c2=function(_0x3b380d,_0x4bf247){_0x3b380d=_0x3b380d-0x0;var _0x54502b=_0x2c2a[_0x3b380d];return _0x54502b;};'use strict';var client=require(_0xa2c2('0x0'));exports[_0xa2c2('0x1')]=function(_0x387741,_0x311592){return client['Request'](_0xa2c2('0x2'),{'body':_0x311592,'options':{'where':{'id':_0x387741}},'log':_0xa2c2('0x3')});};exports[_0xa2c2('0x4')]=function(_0x46a911,_0x55715d){return client[_0xa2c2('0x5')](_0xa2c2('0x6'),{'body':_0x55715d,'options':{'where':{'id':_0x46a911}},'log':'addTagsToChatInteraction'});};
\ No newline at end of file
index 5b23704..4a8b74f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb280=['Request','CreateOpenchannelMessage'];(function(_0x4f6247,_0x1032f7){var _0x29e232=function(_0x2a7254){while(--_0x2a7254){_0x4f6247['push'](_0x4f6247['shift']());}};_0x29e232(++_0x1032f7);}(_0xb280,0x1b8));var _0x0b28=function(_0x8a439b,_0x131732){_0x8a439b=_0x8a439b-0x0;var _0x5e5b97=_0xb280[_0x8a439b];return _0x5e5b97;};'use strict';var client=require('../client');exports['create']=function(_0x150efa){return client[_0x0b28('0x0')](_0x0b28('0x1'),{'body':_0x150efa,'log':'createOpenchannelMessage'});};
\ No newline at end of file
+var _0x6fe7=['Request','CreateOpenchannelMessage','createOpenchannelMessage','../client'];(function(_0x5a778d,_0x1261ca){var _0x4a8a73=function(_0x178996){while(--_0x178996){_0x5a778d['push'](_0x5a778d['shift']());}};_0x4a8a73(++_0x1261ca);}(_0x6fe7,0x1ab));var _0x76fe=function(_0x167f80,_0x23a453){_0x167f80=_0x167f80-0x0;var _0x151ef0=_0x6fe7[_0x167f80];return _0x151ef0;};'use strict';var client=require(_0x76fe('0x0'));exports['create']=function(_0x58e290){return client[_0x76fe('0x1')](_0x76fe('0x2'),{'body':_0x58e290,'log':_0x76fe('0x3')});};
\ No newline at end of file
index 22f1463..0211960 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x067d=['timeout','strategy','User','online','openchannelPause','../client','getOpenchannelQueues','Request','GetOpenchannelQueue','name'];(function(_0x13ca3f,_0xd24627){var _0x36ce52=function(_0x5c2f35){while(--_0x5c2f35){_0x13ca3f['push'](_0x13ca3f['shift']());}};_0x36ce52(++_0xd24627);}(_0x067d,0x1db));var _0xd067=function(_0x23e33d,_0x31c8c8){_0x23e33d=_0x23e33d-0x0;var _0x818fc=_0x067d[_0x23e33d];return _0x818fc;};'use strict';var client=require(_0xd067('0x0'));exports[_0xd067('0x1')]=function(){return function(){return client[_0xd067('0x2')](_0xd067('0x3'),{'options':{'raw':![],'attributes':['id',_0xd067('0x4'),_0xd067('0x5'),_0xd067('0x6')],'include':[{'model':_0xd067('0x7'),'as':'Agents','attributes':['id','name',_0xd067('0x8'),_0xd067('0x9')]}]},'log':_0xd067('0x1')});};};
\ No newline at end of file
+var _0x4114=['User','Agents','openchannelPause','../client','getOpenchannelQueues','Request','GetOpenchannelQueue','name','strategy'];(function(_0x82129b,_0x484ae9){var _0x2ae5dc=function(_0x299e34){while(--_0x299e34){_0x82129b['push'](_0x82129b['shift']());}};_0x2ae5dc(++_0x484ae9);}(_0x4114,0x1ce));var _0x4411=function(_0x325dde,_0x5eea3f){_0x325dde=_0x325dde-0x0;var _0x30a90e=_0x4114[_0x325dde];return _0x30a90e;};'use strict';var client=require(_0x4411('0x0'));exports[_0x4411('0x1')]=function(){return function(){return client[_0x4411('0x2')](_0x4411('0x3'),{'options':{'raw':![],'attributes':['id',_0x4411('0x4'),'timeout',_0x4411('0x5')],'include':[{'model':_0x4411('0x6'),'as':_0x4411('0x7'),'attributes':['id','name','online',_0x4411('0x8')]}]},'log':'getOpenchannelQueues'});};};
\ No newline at end of file
index 773f556..895bf19 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x49f2=['Request','UpdateOpenchannelQueueReport','../client','create','CreateOpenchannelQueueReport','update'];(function(_0x47582f,_0x24131b){var _0x1784f0=function(_0x3609f0){while(--_0x3609f0){_0x47582f['push'](_0x47582f['shift']());}};_0x1784f0(++_0x24131b);}(_0x49f2,0x86));var _0x249f=function(_0x51e3bf,_0x2ffcaa){_0x51e3bf=_0x51e3bf-0x0;var _0x564435=_0x49f2[_0x51e3bf];return _0x564435;};'use strict';var client=require(_0x249f('0x0'));exports[_0x249f('0x1')]=function(_0x2ffac2){return client['Request'](_0x249f('0x2'),{'body':_0x2ffac2,'log':_0x249f('0x2')});};exports[_0x249f('0x3')]=function(_0x556f79,_0x33f3fc){return client[_0x249f('0x4')](_0x249f('0x5'),{'body':_0x33f3fc,'options':{'where':{'uniqueid':_0x556f79},'order':[['id','DESC']],'limit':0x1},'log':_0x249f('0x5')});};
\ No newline at end of file
+var _0x8f9b=['UpdateOpenchannelQueueReport','DESC','../client','CreateOpenchannelQueueReport'];(function(_0x7bc63a,_0x26422a){var _0xed898e=function(_0x4a222a){while(--_0x4a222a){_0x7bc63a['push'](_0x7bc63a['shift']());}};_0xed898e(++_0x26422a);}(_0x8f9b,0x162));var _0xb8f9=function(_0x21427d,_0x589c9c){_0x21427d=_0x21427d-0x0;var _0x4bc8e0=_0x8f9b[_0x21427d];return _0x4bc8e0;};'use strict';var client=require(_0xb8f9('0x0'));exports['create']=function(_0x3a09c5){return client['Request'](_0xb8f9('0x1'),{'body':_0x3a09c5,'log':_0xb8f9('0x1')});};exports['update']=function(_0x2ce9ec,_0x300ac2){return client['Request'](_0xb8f9('0x2'),{'body':_0x300ac2,'options':{'where':{'uniqueid':_0x2ce9ec},'order':[['id',_0xb8f9('0x3')]],'limit':0x1},'log':_0xb8f9('0x2')});};
\ No newline at end of file
index 013d06e..8a59fff 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xf8b2=['Request','UpdateSmsInteraction','updateSmsInteraction','addTags','AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update'];(function(_0x565bc6,_0x4d8057){var _0xdfdb71=function(_0x11f66f){while(--_0x11f66f){_0x565bc6['push'](_0x565bc6['shift']());}};_0xdfdb71(++_0x4d8057);}(_0xf8b2,0x15e));var _0x2f8b=function(_0x50db94,_0x536efd){_0x50db94=_0x50db94-0x0;var _0x320e48=_0xf8b2[_0x50db94];return _0x320e48;};'use strict';var client=require(_0x2f8b('0x0'));exports[_0x2f8b('0x1')]=function(_0x7325f5,_0x2f565c){return client[_0x2f8b('0x2')](_0x2f8b('0x3'),{'body':_0x2f565c,'options':{'where':{'id':_0x7325f5}},'log':_0x2f8b('0x4')});};exports[_0x2f8b('0x5')]=function(_0x50dae3,_0x4b33e9){return client[_0x2f8b('0x2')](_0x2f8b('0x6'),{'body':_0x4b33e9,'options':{'where':{'id':_0x50dae3}},'log':_0x2f8b('0x7')});};
\ No newline at end of file
+var _0x7e16=['AddTagsToSmsInteraction','addTagsToSmsInteraction','../client','update','updateSmsInteraction'];(function(_0xadca05,_0xcfd1ce){var _0x4066b9=function(_0x23c6bd){while(--_0x23c6bd){_0xadca05['push'](_0xadca05['shift']());}};_0x4066b9(++_0xcfd1ce);}(_0x7e16,0x16f));var _0x67e1=function(_0x434e96,_0x50f142){_0x434e96=_0x434e96-0x0;var _0x31a2fb=_0x7e16[_0x434e96];return _0x31a2fb;};'use strict';var client=require(_0x67e1('0x0'));exports[_0x67e1('0x1')]=function(_0x14f1a6,_0x3ca930){return client['Request']('UpdateSmsInteraction',{'body':_0x3ca930,'options':{'where':{'id':_0x14f1a6}},'log':_0x67e1('0x2')});};exports['addTags']=function(_0x268f07,_0x25d798){return client['Request'](_0x67e1('0x3'),{'body':_0x25d798,'options':{'where':{'id':_0x268f07}},'log':_0x67e1('0x4')});};
\ No newline at end of file
index e44a436..00c73d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8fb4=['createSmsMessage','../client','create','Request','CreateSmsMessage'];(function(_0xab3157,_0x28ef0c){var _0x4045dc=function(_0x193957){while(--_0x193957){_0xab3157['push'](_0xab3157['shift']());}};_0x4045dc(++_0x28ef0c);}(_0x8fb4,0x1e1));var _0x48fb=function(_0x19e35c,_0x29cd1e){_0x19e35c=_0x19e35c-0x0;var _0x3e1fe8=_0x8fb4[_0x19e35c];return _0x3e1fe8;};'use strict';var client=require(_0x48fb('0x0'));exports[_0x48fb('0x1')]=function(_0x8d05e7){return client[_0x48fb('0x2')](_0x48fb('0x3'),{'body':_0x8d05e7,'log':_0x48fb('0x4')});};
\ No newline at end of file
+var _0x3d6b=['create','Request','createSmsMessage'];(function(_0x35387d,_0x1ba72f){var _0x3aba56=function(_0x42cd08){while(--_0x42cd08){_0x35387d['push'](_0x35387d['shift']());}};_0x3aba56(++_0x1ba72f);}(_0x3d6b,0x165));var _0xb3d6=function(_0x1ca4cc,_0x402c23){_0x1ca4cc=_0x1ca4cc-0x0;var _0x108010=_0x3d6b[_0x1ca4cc];return _0x108010;};'use strict';var client=require('../client');exports[_0xb3d6('0x0')]=function(_0x26f267){return client[_0xb3d6('0x1')]('CreateSmsMessage',{'body':_0x26f267,'log':_0xb3d6('0x2')});};
\ No newline at end of file
index ef4cd03..b4785ba 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['name','online','smsPause','../client','getSmsQueues','Request','timeout','User','Agents'];(function(_0x52a2e3,_0x5327c9){var _0x356950=function(_0x14f9bc){while(--_0x14f9bc){_0x52a2e3['push'](_0x52a2e3['shift']());}};_0x356950(++_0x5327c9);}(_0xa9e0,0x123));var _0x0a9e=function(_0x5447fd,_0x52a6b5){_0x5447fd=_0x5447fd-0x0;var _0x15b28a=_0xa9e0[_0x5447fd];return _0x15b28a;};'use strict';var client=require(_0x0a9e('0x0'));exports[_0x0a9e('0x1')]=function(){return function(){return client[_0x0a9e('0x2')]('GetSmsQueue',{'options':{'raw':![],'attributes':['id','name',_0x0a9e('0x3'),'strategy'],'include':[{'model':_0x0a9e('0x4'),'as':_0x0a9e('0x5'),'attributes':['id',_0x0a9e('0x6'),_0x0a9e('0x7'),_0x0a9e('0x8')]}]},'log':'getSmsQueues'});};};
\ No newline at end of file
+var _0xb7e7=['online','../client','Request','name','strategy','Agents'];(function(_0x562d3c,_0x5e2605){var _0x4b236a=function(_0x282f99){while(--_0x282f99){_0x562d3c['push'](_0x562d3c['shift']());}};_0x4b236a(++_0x5e2605);}(_0xb7e7,0x121));var _0x7b7e=function(_0x5c9307,_0x5b97e4){_0x5c9307=_0x5c9307-0x0;var _0x373e29=_0xb7e7[_0x5c9307];return _0x373e29;};'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 6435375..112a3fc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x34e8=['create','Request','CreateSmsQueueReport','update','UpdateSmsQueueReport','DESC','../client'];(function(_0x379db9,_0x226672){var _0xf0d58e=function(_0x158bf5){while(--_0x158bf5){_0x379db9['push'](_0x379db9['shift']());}};_0xf0d58e(++_0x226672);}(_0x34e8,0x12c));var _0x834e=function(_0x39c2b5,_0x29f0fe){_0x39c2b5=_0x39c2b5-0x0;var _0xe10a2f=_0x34e8[_0x39c2b5];return _0xe10a2f;};'use strict';var client=require(_0x834e('0x0'));exports[_0x834e('0x1')]=function(_0x8b339){return client[_0x834e('0x2')]('CreateSmsQueueReport',{'body':_0x8b339,'log':_0x834e('0x3')});};exports[_0x834e('0x4')]=function(_0x472111,_0x31bf20){return client[_0x834e('0x2')](_0x834e('0x5'),{'body':_0x31bf20,'options':{'where':{'uniqueid':_0x472111},'order':[['id',_0x834e('0x6')]],'limit':0x1},'log':'UpdateSmsQueueReport'});};
\ No newline at end of file
+var _0x70e0=['create','CreateSmsQueueReport','update','UpdateSmsQueueReport','../client'];(function(_0x4a2b3c,_0xc69f59){var _0x4b081b=function(_0x3dfcb1){while(--_0x3dfcb1){_0x4a2b3c['push'](_0x4a2b3c['shift']());}};_0x4b081b(++_0xc69f59);}(_0x70e0,0x17b));var _0x070e=function(_0x2ef3d3,_0x431912){_0x2ef3d3=_0x2ef3d3-0x0;var _0x49b147=_0x70e0[_0x2ef3d3];return _0x49b147;};'use strict';var client=require(_0x070e('0x0'));exports[_0x070e('0x1')]=function(_0x198c2e){return client['Request']('CreateSmsQueueReport',{'body':_0x198c2e,'log':_0x070e('0x2')});};exports[_0x070e('0x3')]=function(_0x277d32,_0x2593e5){return client['Request'](_0x070e('0x4'),{'body':_0x2593e5,'options':{'where':{'uniqueid':_0x277d32},'order':[['id','DESC']],'limit':0x1},'log':_0x070e('0x4')});};
\ No newline at end of file
index 60e1530..1e4fa0e 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(_0x234301,_0x1d163d){var _0x35afaa=function(_0xd6aeeb){while(--_0xd6aeeb){_0x234301['push'](_0x234301['shift']());}};_0x35afaa(++_0x1d163d);}(_0xa9e0,0x123));var _0x0a9e=function(_0x3c4737,_0x2329ec){_0x3c4737=_0x3c4737-0x0;var _0x2bb926=_0xa9e0[_0x3c4737];return _0x2bb926;};'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(_0x148104,_0xaa6043){var _0x87706=function(_0x134bf4){while(--_0x134bf4){_0x148104['push'](_0x148104['shift']());}};_0x87706(++_0xaa6043);}(_0xa9e0,0x123));var _0x0a9e=function(_0xf0bcac,_0x531755){_0xf0bcac=_0xf0bcac-0x0;var _0x4e4c65=_0xa9e0[_0xf0bcac];return _0x4e4c65;};'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 86ccd1f..665fb02 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x7ea9=['AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction','update','Request','UpdateWhatsappInteraction','addTags'];(function(_0x4dc284,_0x445d66){var _0x3146d1=function(_0x1cf9c2){while(--_0x1cf9c2){_0x4dc284['push'](_0x4dc284['shift']());}};_0x3146d1(++_0x445d66);}(_0x7ea9,0xec));var _0x97ea=function(_0x5ee78e,_0x2d0dda){_0x5ee78e=_0x5ee78e-0x0;var _0x3ef330=_0x7ea9[_0x5ee78e];return _0x3ef330;};'use strict';var client=require('../client');exports[_0x97ea('0x0')]=function(_0x1b0376,_0x303e4d){return client[_0x97ea('0x1')](_0x97ea('0x2'),{'body':_0x303e4d,'options':{'where':{'id':_0x1b0376}},'log':'updateWhatsappInteraction'});};exports[_0x97ea('0x3')]=function(_0xd02076,_0x2c80e6){return client['Request'](_0x97ea('0x4'),{'body':_0x2c80e6,'options':{'where':{'id':_0xd02076}},'log':_0x97ea('0x5')});};
\ No newline at end of file
+var _0x0e76=['updateWhatsappInteraction','addTags','AddTagsToWhatsappInteraction','addTagsToWhatsappInteraction','../client','UpdateWhatsappInteraction'];(function(_0x1cfacc,_0x167cca){var _0x5e8766=function(_0x49819e){while(--_0x49819e){_0x1cfacc['push'](_0x1cfacc['shift']());}};_0x5e8766(++_0x167cca);}(_0x0e76,0xc4));var _0x60e7=function(_0x46e1b0,_0x145a6d){_0x46e1b0=_0x46e1b0-0x0;var _0x31520a=_0x0e76[_0x46e1b0];return _0x31520a;};'use strict';var client=require(_0x60e7('0x0'));exports['update']=function(_0x4f9548,_0x259dcb){return client['Request'](_0x60e7('0x1'),{'body':_0x259dcb,'options':{'where':{'id':_0x4f9548}},'log':_0x60e7('0x2')});};exports[_0x60e7('0x3')]=function(_0xd3886,_0x2f1ad1){return client['Request'](_0x60e7('0x4'),{'body':_0x2f1ad1,'options':{'where':{'id':_0xd3886}},'log':_0x60e7('0x5')});};
\ No newline at end of file
index 9041e2d..4004ffd 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc88e=['createWhatsappMessage','CreateWhatsappMessage'];(function(_0x57cc22,_0x2d351f){var _0x6f7bdc=function(_0x4935b5){while(--_0x4935b5){_0x57cc22['push'](_0x57cc22['shift']());}};_0x6f7bdc(++_0x2d351f);}(_0xc88e,0xbf));var _0xec88=function(_0x24c668,_0x1f4d95){_0x24c668=_0x24c668-0x0;var _0x1d35ad=_0xc88e[_0x24c668];return _0x1d35ad;};'use strict';var client=require('../client');exports['create']=function(_0x3647e2){return client['Request'](_0xec88('0x0'),{'body':_0x3647e2,'log':_0xec88('0x1')});};
\ No newline at end of file
+var _0x3814=['Request','CreateWhatsappMessage','createWhatsappMessage','../client'];(function(_0x429f1d,_0x80ee79){var _0xbc3342=function(_0x12a261){while(--_0x12a261){_0x429f1d['push'](_0x429f1d['shift']());}};_0xbc3342(++_0x80ee79);}(_0x3814,0xb3));var _0x4381=function(_0x3fd96f,_0x364b36){_0x3fd96f=_0x3fd96f-0x0;var _0x21b1fc=_0x3814[_0x3fd96f];return _0x21b1fc;};'use strict';var client=require(_0x4381('0x0'));exports['create']=function(_0xdb9197){return client[_0x4381('0x1')](_0x4381('0x2'),{'body':_0xdb9197,'log':_0x4381('0x3')});};
\ No newline at end of file
index 9224f06..c3c77dc 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfc11=['whatsappPause','getWhatsappQueues','Request','name','timeout','strategy','User','Agents','online'];(function(_0x5b6cf1,_0x32fdcd){var _0x46278c=function(_0x53fd9b){while(--_0x53fd9b){_0x5b6cf1['push'](_0x5b6cf1['shift']());}};_0x46278c(++_0x32fdcd);}(_0xfc11,0x88));var _0x1fc1=function(_0x519882,_0x480181){_0x519882=_0x519882-0x0;var _0x16b94d=_0xfc11[_0x519882];return _0x16b94d;};'use strict';var client=require('../client');exports[_0x1fc1('0x0')]=function(){return function(){return client[_0x1fc1('0x1')]('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id',_0x1fc1('0x2'),_0x1fc1('0x3'),_0x1fc1('0x4')],'include':[{'model':_0x1fc1('0x5'),'as':_0x1fc1('0x6'),'attributes':['id','name',_0x1fc1('0x7'),_0x1fc1('0x8')]}]},'log':_0x1fc1('0x0')});};};
\ No newline at end of file
+var _0x40bf=['timeout','strategy','Agents','whatsappPause','getWhatsappQueues','Request','name'];(function(_0xbb10f,_0x302a1b){var _0x21b3a9=function(_0xb08ed7){while(--_0xb08ed7){_0xbb10f['push'](_0xbb10f['shift']());}};_0x21b3a9(++_0x302a1b);}(_0x40bf,0x107));var _0xf40b=function(_0x515afd,_0x1a1e91){_0x515afd=_0x515afd-0x0;var _0x536d53=_0x40bf[_0x515afd];return _0x536d53;};'use strict';var client=require('../client');exports[_0xf40b('0x0')]=function(){return function(){return client[_0xf40b('0x1')]('GetWhatsappQueue',{'options':{'raw':![],'attributes':['id',_0xf40b('0x2'),_0xf40b('0x3'),_0xf40b('0x4')],'include':[{'model':'User','as':_0xf40b('0x5'),'attributes':['id','name','online',_0xf40b('0x6')]}]},'log':_0xf40b('0x0')});};};
\ No newline at end of file
index e9f6318..ed8450a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2129=['../client','create','CreateWhatsappQueueReport','update','UpdateWhatsappQueueReport','DESC'];(function(_0x574e53,_0xc03883){var _0x189f7a=function(_0x24436f){while(--_0x24436f){_0x574e53['push'](_0x574e53['shift']());}};_0x189f7a(++_0xc03883);}(_0x2129,0xae));var _0x9212=function(_0xffdbff,_0x174f40){_0xffdbff=_0xffdbff-0x0;var _0x595aa5=_0x2129[_0xffdbff];return _0x595aa5;};'use strict';var client=require(_0x9212('0x0'));exports[_0x9212('0x1')]=function(_0x49541b){return client['Request'](_0x9212('0x2'),{'body':_0x49541b,'log':'CreateWhatsappQueueReport'});};exports[_0x9212('0x3')]=function(_0x2b9f21,_0x4cc205){return client['Request'](_0x9212('0x4'),{'body':_0x4cc205,'options':{'where':{'uniqueid':_0x2b9f21},'order':[['id',_0x9212('0x5')]],'limit':0x1},'log':_0x9212('0x4')});};
\ No newline at end of file
+var _0x9f96=['update','UpdateWhatsappQueueReport','DESC','../client','CreateWhatsappQueueReport'];(function(_0x1c9203,_0x53736b){var _0x328c2e=function(_0x4489c2){while(--_0x4489c2){_0x1c9203['push'](_0x1c9203['shift']());}};_0x328c2e(++_0x53736b);}(_0x9f96,0x166));var _0x69f9=function(_0x3e286e,_0x516dff){_0x3e286e=_0x3e286e-0x0;var _0x5d3220=_0x9f96[_0x3e286e];return _0x5d3220;};'use strict';var client=require(_0x69f9('0x0'));exports['create']=function(_0x51e325){return client['Request'](_0x69f9('0x1'),{'body':_0x51e325,'log':_0x69f9('0x1')});};exports[_0x69f9('0x2')]=function(_0x4fd9c3,_0x5b52dd){return client['Request'](_0x69f9('0x3'),{'body':_0x5b52dd,'options':{'where':{'uniqueid':_0x4fd9c3},'order':[['id',_0x69f9('0x4')]],'limit':0x1},'log':'UpdateWhatsappQueueReport'});};
\ No newline at end of file
index 9df17ae..de6dc6b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8049=['complete','[%s][AGENT]\x20ROUTING\x20END','close','next','agent','log','[%s][QUEUE]\x20%s','validate','util','../../../../config/logger','routing','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','format','[%s][AGENT][NAME:%s][STATUS:%s]','name','toLowerCase','consequence','length','error','[%s][AGENT]\x20%s','map','message','stop','find','timeout','atimeout','START:%s','rules','end','info'];(function(_0x40a045,_0x516f0e){var _0x1a687c=function(_0x48c9fe){while(--_0x48c9fe){_0x40a045['push'](_0x40a045['shift']());}};_0x1a687c(++_0x516f0e);}(_0x8049,0xc1));var _0x9804=function(_0x149795,_0x3fe0fd){_0x149795=_0x149795-0x0;var _0x55d1de=_0x8049[_0x149795];return _0x55d1de;};'use strict';var schema=require(_0x9804('0x0'));var _=require('lodash');var util=require(_0x9804('0x1'));var seqqueue=require('seq-queue');var logger=require(_0x9804('0x2'))(_0x9804('0x3'));var strategy=require('./strategy');var queue=schema({'name':{'type':'string','required':!![],'message':_0x9804('0x4')},'timeout':{'type':_0x9804('0x5'),'message':'timeout\x20is\x20a\x20number'}});function writeLog(_0x4e4578,_0xa293ff,_0x6f43eb){return logger['info'](util[_0x9804('0x6')](_0x9804('0x7'),_0x4e4578,_0xa293ff[_0x9804('0x8')],_0x6f43eb));}function handleFindAgent(_0x22f801){return function(_0x463393){return _0x463393[_0x9804('0x8')][_0x9804('0x9')]()===_0x22f801[_0x9804('0x9')]();};}exports[_0x9804('0xa')]=function(_0x45ddba,_0xbb41ef,_0x526d1c,_0x363339){return function(_0x2558e3){try{var _0x891165={'name':_0xbb41ef[0x0],'timeout':_0xbb41ef[0x1]};var _0x272b41=queue[_0x9804('0x0')](_0x891165,{'typecast':!![]});if(_0x272b41[_0x9804('0xb')]){logger[_0x9804('0xc')](_0x9804('0xd'),_0x45ddba,_[_0x9804('0xe')](_0x272b41,_0x9804('0xf'))['join'](',\x20'));_0x2558e3[_0x9804('0x10')]();}else{var _0x19dfa6=_[_0x9804('0x11')](_0x526d1c['agents'],handleFindAgent(_0x891165[_0x9804('0x8')]));if(_0x19dfa6){var _0x5ad899=(_0x891165[_0x9804('0x12')]||0xa)*0x3e8;var _0x2d8c25,_0xbef796;var _0x2f0010=seqqueue['createQueue'](_0x5ad899);_0x2f0010['id']=_0x45ddba;_0x2f0010[_0x9804('0x13')]=_0x5ad899;_0x2f0010['channel']=_0x363339['channel'];writeLog(_0x45ddba,_0x19dfa6,util[_0x9804('0x6')](_0x9804('0x14'),_0x5ad899));_0x526d1c[_0x9804('0x15')][_0x45ddba]['on'](_0x9804('0x16'),function(){logger[_0x9804('0x17')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x45ddba);clearTimeout(_0xbef796);_0xbef796=undefined;_0x2f0010['close']();if(_0x526d1c[_0x9804('0x15')][_0x45ddba]){delete _0x526d1c[_0x9804('0x15')][_0x45ddba];}_0x2558e3[_0x9804('0x10')]();});_0x526d1c['rules'][_0x45ddba]['on'](_0x9804('0x18'),function(){if(_0x526d1c[_0x9804('0x15')][_0x45ddba]){delete _0x526d1c[_0x9804('0x15')][_0x45ddba];}});_0xbef796=setTimeout(function(){logger[_0x9804('0x17')](_0x9804('0x19'),_0x45ddba);clearTimeout(_0xbef796);_0x2f0010[_0x9804('0x1a')]();_0x2558e3[_0x9804('0x1b')]();},_0x5ad899);strategy[_0x9804('0x1c')](_0x2f0010,_0x19dfa6,_0x526d1c,_0x363339);}else{logger['error']('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0x45ddba,_0x891165[_0x9804('0x8')]);_0x2558e3[_0x9804('0x10')]();}}}catch(_0x5441d7){console[_0x9804('0x1d')](_0x5441d7);logger[_0x9804('0xc')](_0x9804('0x1e'),_0x45ddba,_0x5441d7['stack']);_0x2558e3[_0x9804('0x10')]();}};};
\ No newline at end of file
+var _0xfffc=['find','agents','createQueue','channel','rules','end','close','complete','[%s][AGENT]\x20ROUTING\x20END','next','agent','stack','validate','lodash','util','seq-queue','../../../../config/logger','routing','./strategy','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','error','map','message','join','stop'];(function(_0x4a9aa4,_0x342828){var _0x587322=function(_0x50f255){while(--_0x50f255){_0x4a9aa4['push'](_0x4a9aa4['shift']());}};_0x587322(++_0x342828);}(_0xfffc,0x1c6));var _0xcfff=function(_0x19113f,_0x8d435e){_0x19113f=_0x19113f-0x0;var _0x1e114a=_0xfffc[_0x19113f];return _0x1e114a;};'use strict';var schema=require(_0xcfff('0x0'));var _=require(_0xcfff('0x1'));var util=require(_0xcfff('0x2'));var seqqueue=require(_0xcfff('0x3'));var logger=require(_0xcfff('0x4'))(_0xcfff('0x5'));var strategy=require(_0xcfff('0x6'));var queue=schema({'name':{'type':'string','required':!![],'message':_0xcfff('0x7')},'timeout':{'type':_0xcfff('0x8'),'message':_0xcfff('0x9')}});function writeLog(_0x3aae05,_0x23ee4d,_0x415641){return logger[_0xcfff('0xa')](util[_0xcfff('0xb')](_0xcfff('0xc'),_0x3aae05,_0x23ee4d[_0xcfff('0xd')],_0x415641));}function handleFindAgent(_0x3f7d1d){return function(_0xca2d21){return _0xca2d21[_0xcfff('0xd')][_0xcfff('0xe')]()===_0x3f7d1d[_0xcfff('0xe')]();};}exports[_0xcfff('0xf')]=function(_0x47f92d,_0x16ab4a,_0x25d00a,_0x5b2090){return function(_0x517754){try{var _0x4424d1={'name':_0x16ab4a[0x0],'timeout':_0x16ab4a[0x1]};var _0x45fb2f=queue[_0xcfff('0x0')](_0x4424d1,{'typecast':!![]});if(_0x45fb2f[_0xcfff('0x10')]){logger[_0xcfff('0x11')]('[%s][AGENT]\x20%s',_0x47f92d,_[_0xcfff('0x12')](_0x45fb2f,_0xcfff('0x13'))[_0xcfff('0x14')](',\x20'));_0x517754[_0xcfff('0x15')]();}else{var _0x52486a=_[_0xcfff('0x16')](_0x25d00a[_0xcfff('0x17')],handleFindAgent(_0x4424d1[_0xcfff('0xd')]));if(_0x52486a){var _0x3872fd=(_0x4424d1['timeout']||0xa)*0x3e8;var _0xed0f70,_0x24b7b9;var _0x1a19d4=seqqueue[_0xcfff('0x18')](_0x3872fd);_0x1a19d4['id']=_0x47f92d;_0x1a19d4['atimeout']=_0x3872fd;_0x1a19d4[_0xcfff('0x19')]=_0x5b2090[_0xcfff('0x19')];writeLog(_0x47f92d,_0x52486a,util[_0xcfff('0xb')]('START:%s',_0x3872fd));_0x25d00a[_0xcfff('0x1a')][_0x47f92d]['on'](_0xcfff('0x1b'),function(){logger[_0xcfff('0xa')]('[%s][AGENT]\x20ROUTING\x20STOPPED',_0x47f92d);clearTimeout(_0x24b7b9);_0x24b7b9=undefined;_0x1a19d4[_0xcfff('0x1c')]();if(_0x25d00a['rules'][_0x47f92d]){delete _0x25d00a[_0xcfff('0x1a')][_0x47f92d];}_0x517754[_0xcfff('0x15')]();});_0x25d00a[_0xcfff('0x1a')][_0x47f92d]['on'](_0xcfff('0x1d'),function(){if(_0x25d00a[_0xcfff('0x1a')][_0x47f92d]){delete _0x25d00a[_0xcfff('0x1a')][_0x47f92d];}});_0x24b7b9=setTimeout(function(){logger[_0xcfff('0xa')](_0xcfff('0x1e'),_0x47f92d);clearTimeout(_0x24b7b9);_0x1a19d4[_0xcfff('0x1c')]();_0x517754[_0xcfff('0x1f')]();},_0x3872fd);strategy[_0xcfff('0x20')](_0x1a19d4,_0x52486a,_0x25d00a,_0x5b2090);}else{logger[_0xcfff('0x11')]('[%s][AGENT]\x20agent\x20not\x20found\x20%s',_0x47f92d,_0x4424d1[_0xcfff('0xd')]);_0x517754[_0xcfff('0x15')]();}}}catch(_0x404de9){console['log'](_0x404de9);logger[_0xcfff('0x11')]('[%s][QUEUE]\x20%s',_0x47f92d,_0x404de9[_0xcfff('0x21')]);_0x517754[_0xcfff('0x15')]();}};};
\ No newline at end of file
index 48803df..93b738b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfa31=['phone','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','created','isEmpty','Message','create','then','body','error','[%s][AMAZONLEX]\x20%s','stringify','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','LexRuntime','postText','message','providerName','amazonlex','dialogState','Failed','catch','moment','aws-sdk','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','channel','whatsapp'];(function(_0x5cecf7,_0x441ce1){var _0x2b2353=function(_0x4df08b){while(--_0x4df08b){_0x5cecf7['push'](_0x5cecf7['shift']());}};_0x2b2353(++_0x441ce1);}(_0xfa31,0x181));var _0x1fa3=function(_0x1904d5,_0x3c9b12){_0x1904d5=_0x1904d5-0x0;var _0x83368e=_0xfa31[_0x1904d5];return _0x83368e;};'use strict';var _=require('lodash');var moment=require(_0x1fa3('0x0'));var AWS=require(_0x1fa3('0x1'));var utils=require(_0x1fa3('0x2'));var logger=require(_0x1fa3('0x3'))(_0x1fa3('0x4'));var rpc={'chatMessage':require(_0x1fa3('0x5')),'openchannelMessage':require(_0x1fa3('0x6')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x1fa3('0x7')),'faxMessage':require(_0x1fa3('0x8')),'whatsappMessage':require(_0x1fa3('0x9'))};exports[_0x1fa3('0xa')]=function(_0x178b57,_0x1f9348){return function(_0x362ae6){try{if(!_[_0x1fa3('0xb')](this[_0x1fa3('0xc')][_0x1fa3('0xd')])){logger[_0x1fa3('0xe')]('[%s][AMAZONLEX]\x20%s',_0x178b57,_0x1fa3('0xf'));return _0x362ae6[_0x1fa3('0x10')]();}var _0x4ab33b={'ContactId':this[_0x1fa3('0x11')]['id'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'direction':'out'};if(this[_0x1fa3('0x12')]==='sms'||this['channel']===_0x1fa3('0x13')){_0x4ab33b[_0x1fa3('0x14')]=this[_0x1fa3('0xc')][_0x1fa3('0x14')];}var _0x2d682e=this[_0x1fa3('0x12')];if(_0x2d682e==='chat'){_0x4ab33b[_0x1fa3('0x15')]=this[_0x1fa3('0x16')]['id'];}else{_0x4ab33b[_[_0x1fa3('0x17')](_0x2d682e)+_0x1fa3('0x18')]=this[_0x1fa3('0x16')]['id'];}_0x4ab33b[_[_0x1fa3('0x17')](_0x2d682e)+_0x1fa3('0x19')]=this[_0x1fa3('0xc')]['id'];if(this[_0x1fa3('0xc')][_0x1fa3('0x1a')]){var _0x311fc9=_0x1f9348[0x4];if(!_[_0x1fa3('0x1b')](_0x311fc9)){_0x4ab33b['body']=utils['getMustacheRender'](_0x311fc9,this);return rpc[_0x2d682e+_0x1fa3('0x1c')][_0x1fa3('0x1d')](_0x4ab33b)[_0x1fa3('0x1e')](function(_0x30e2df){logger[_0x1fa3('0xe')]('[%s][AMAZONLEX]\x20%s',_0x178b57,_0x4ab33b[_0x1fa3('0x1f')]);})['catch'](function(_0x5cfce8){logger[_0x1fa3('0x20')](_0x1fa3('0x21'),_0x178b57,JSON[_0x1fa3('0x22')](_0x5cfce8));})['finally'](function(){logger[_0x1fa3('0xe')](_0x1fa3('0x23'),_0x178b57);_0x362ae6[_0x1fa3('0x24')]();});}else{logger['info']('[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x178b57);_0x362ae6[_0x1fa3('0x24')]();}}else{var _0x4cb37d=this;var _0x3c7179=new AWS[(_0x1fa3('0x25'))]({'accessKeyId':_0x1f9348[0x0],'secretAccessKey':_0x1f9348[0x1],'region':_0x1f9348[0x2]});var _0x222dc1={'botAlias':'$LATEST','botName':_0x1f9348[0x3],'inputText':this['message']['body'],'userId':this[_0x1fa3('0x12')]+':'+this[_0x1fa3('0xc')]['id']['toString']()};_0x3c7179[_0x1fa3('0x26')](_0x222dc1,function(_0x318578,_0x51f549){if(_0x318578){logger['error'](_0x1fa3('0x21'),_0x178b57,_0x318578[_0x1fa3('0x27')]);_0x362ae6[_0x1fa3('0x10')]();}else if(_0x51f549&&_0x51f549[_0x1fa3('0x27')]){_0x4cb37d['body']['amazonlex']=_0x51f549;_0x4ab33b[_0x1fa3('0x1f')]=_0x51f549[_0x1fa3('0x27')];_0x4ab33b[_0x1fa3('0x28')]=_0x1fa3('0x29');_0x4ab33b['providerResponse']=JSON[_0x1fa3('0x22')](_0x51f549);return rpc[_0x2d682e+'Message']['create'](_0x4ab33b)[_0x1fa3('0x1e')](function(_0x50ff6){logger['info'](_0x1fa3('0x21'),_0x178b57,_0x4ab33b[_0x1fa3('0x1f')]);if(_0x51f549[_0x1fa3('0x2a')]==_0x1fa3('0x2b')){_0x362ae6[_0x1fa3('0x10')]();}else{_0x362ae6[_0x1fa3('0x24')]();}})[_0x1fa3('0x2c')](function(_0x466ffe){logger[_0x1fa3('0x20')](_0x1fa3('0x21'),_0x178b57,JSON[_0x1fa3('0x22')](_0x466ffe));_0x362ae6[_0x1fa3('0x10')]();});}else{_0x362ae6['next']();}});}}catch(_0x99ea4c){logger['error'](_0x1fa3('0x21'),_0x178b57,JSON[_0x1fa3('0x22')](_0x99ea4c));_0x362ae6['stop']();}};};
\ No newline at end of file
+var _0x1cd1=['phone','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','interaction','isEmpty','body','getMustacheRender','Message','create','then','catch','stringify','finally','[%s][AMAZONLEX]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','message','postText','error','providerName','amazonlex','dialogState','lodash','moment','aws-sdk','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','isNil','UserId','info','[%s][AMAZONLEX]\x20%s','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','channel','sms','whatsapp'];(function(_0x550ede,_0x5e83ab){var _0x226292=function(_0x5ebdee){while(--_0x5ebdee){_0x550ede['push'](_0x550ede['shift']());}};_0x226292(++_0x5e83ab);}(_0x1cd1,0xdd));var _0x11cd=function(_0xe7a57c,_0x3830ed){_0xe7a57c=_0xe7a57c-0x0;var _0x2d3d63=_0x1cd1[_0xe7a57c];return _0x2d3d63;};'use strict';var _=require(_0x11cd('0x0'));var moment=require(_0x11cd('0x1'));var AWS=require(_0x11cd('0x2'));var utils=require(_0x11cd('0x3'));var logger=require(_0x11cd('0x4'))(_0x11cd('0x5'));var rpc={'chatMessage':require(_0x11cd('0x6')),'openchannelMessage':require(_0x11cd('0x7')),'mailMessage':require(_0x11cd('0x8')),'smsMessage':require(_0x11cd('0x9')),'faxMessage':require(_0x11cd('0xa')),'whatsappMessage':require(_0x11cd('0xb'))};exports['consequence']=function(_0x1c5ffc,_0x2a130b){return function(_0x5d6819){try{if(!_[_0x11cd('0xc')](this['interaction'][_0x11cd('0xd')])){logger[_0x11cd('0xe')](_0x11cd('0xf'),_0x1c5ffc,'Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.');return _0x5d6819[_0x11cd('0x10')]();}var _0x76a340={'ContactId':this[_0x11cd('0x11')]['id'],'sentAt':moment()[_0x11cd('0x12')](_0x11cd('0x13')),'direction':_0x11cd('0x14')};if(this[_0x11cd('0x15')]===_0x11cd('0x16')||this[_0x11cd('0x15')]===_0x11cd('0x17')){_0x76a340[_0x11cd('0x18')]=this['interaction'][_0x11cd('0x18')];}var _0x2052d6=this[_0x11cd('0x15')];if(_0x2052d6===_0x11cd('0x19')){_0x76a340[_0x11cd('0x1a')]=this[_0x11cd('0x1b')]['id'];}else{_0x76a340[_[_0x11cd('0x1c')](_0x2052d6)+_0x11cd('0x1d')]=this[_0x11cd('0x1b')]['id'];}_0x76a340[_[_0x11cd('0x1c')](_0x2052d6)+_0x11cd('0x1e')]=this[_0x11cd('0x1f')]['id'];if(this[_0x11cd('0x1f')]['created']){var _0x3dcf38=_0x2a130b[0x4];if(!_[_0x11cd('0x20')](_0x3dcf38)){_0x76a340[_0x11cd('0x21')]=utils[_0x11cd('0x22')](_0x3dcf38,this);return rpc[_0x2052d6+_0x11cd('0x23')][_0x11cd('0x24')](_0x76a340)[_0x11cd('0x25')](function(_0x21656f){logger[_0x11cd('0xe')]('[%s][AMAZONLEX]\x20%s',_0x1c5ffc,_0x76a340[_0x11cd('0x21')]);})[_0x11cd('0x26')](function(_0x2562f1){logger['error'](_0x11cd('0xf'),_0x1c5ffc,JSON[_0x11cd('0x27')](_0x2562f1));})[_0x11cd('0x28')](function(){logger[_0x11cd('0xe')](_0x11cd('0x29'),_0x1c5ffc);_0x5d6819[_0x11cd('0x2a')]();});}else{logger['info']('[%s][AMAZONLEX]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x1c5ffc);_0x5d6819[_0x11cd('0x2a')]();}}else{var _0x5e2f47=this;var _0x1c940a=new AWS['LexRuntime']({'accessKeyId':_0x2a130b[0x0],'secretAccessKey':_0x2a130b[0x1],'region':_0x2a130b[0x2]});var _0x33330f={'botAlias':'$LATEST','botName':_0x2a130b[0x3],'inputText':this[_0x11cd('0x2b')][_0x11cd('0x21')],'userId':this[_0x11cd('0x15')]+':'+this['interaction']['id']['toString']()};_0x1c940a[_0x11cd('0x2c')](_0x33330f,function(_0x3fb16b,_0xf92b45){if(_0x3fb16b){logger[_0x11cd('0x2d')](_0x11cd('0xf'),_0x1c5ffc,_0x3fb16b[_0x11cd('0x2b')]);_0x5d6819['next']();}else if(_0xf92b45&&_0xf92b45[_0x11cd('0x2b')]){_0x5e2f47[_0x11cd('0x21')]['amazonlex']=_0xf92b45;_0x76a340[_0x11cd('0x21')]=_0xf92b45['message'];_0x76a340[_0x11cd('0x2e')]=_0x11cd('0x2f');_0x76a340['providerResponse']=JSON[_0x11cd('0x27')](_0xf92b45);return rpc[_0x2052d6+'Message'][_0x11cd('0x24')](_0x76a340)['then'](function(_0x43b4d7){logger[_0x11cd('0xe')](_0x11cd('0xf'),_0x1c5ffc,_0x76a340[_0x11cd('0x21')]);if(_0xf92b45[_0x11cd('0x30')]=='Failed'){_0x5d6819['next']();}else{_0x5d6819[_0x11cd('0x2a')]();}})[_0x11cd('0x26')](function(_0x24b2d1){logger[_0x11cd('0x2d')](_0x11cd('0xf'),_0x1c5ffc,JSON[_0x11cd('0x27')](_0x24b2d1));_0x5d6819[_0x11cd('0x10')]();});}else{_0x5d6819['next']();}});}}catch(_0x1a550a){logger[_0x11cd('0x2d')](_0x11cd('0xf'),_0x1c5ffc,JSON['stringify'](_0x1a550a));_0x5d6819['stop']();}};};
\ No newline at end of file
index 008ef08..7a2259a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb522=['../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','mail','body','isAutoreply','next','isNil','interaction','created','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20already\x20sent','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','One\x20Time\x20already\x20sent','contact','YYYY-MM-DD\x20HH:mm:ss','out','message','from','phone','read','subject','startsWith','Re:','Re:\x20','chat','account','upperFirst','InteractionId','Message','inReplyTo','messageId','<div\x20id=\x22xm-mail-content\x22>','replace','<div\x20id=\x22xm-mail-content\x22','<div','</div>','headers','auto-replied','auto_reply','smtpOptions','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','catch','error','finally','resolve','autoreplyExecuted','Interaction','stringify','[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s','stop','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/faxMessage'];(function(_0x221abd,_0x621d76){var _0x47e399=function(_0x3c966f){while(--_0x3c966f){_0x221abd['push'](_0x221abd['shift']());}};_0x47e399(++_0x621d76);}(_0xb522,0x148));var _0x2b52=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xb522[_0x3dd15e];return _0x231fd0;};'use strict';var _=require(_0x2b52('0x0'));var moment=require('moment');var utils=require(_0x2b52('0x1'));var logger=require(_0x2b52('0x2'))(_0x2b52('0x3'));var rpc={'chatMessage':require(_0x2b52('0x4')),'openchannelMessage':require(_0x2b52('0x5')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x2b52('0x6')),'whatsappMessage':require(_0x2b52('0x7')),'chatInteraction':require(_0x2b52('0x8')),'openchannelInteraction':require(_0x2b52('0x9')),'mailInteraction':require(_0x2b52('0xa')),'smsInteraction':require('../../rpc/smsInteraction'),'faxInteraction':require(_0x2b52('0xb')),'whatsappInteraction':require(_0x2b52('0xc'))};var mailRpc=require(_0x2b52('0xd'));exports[_0x2b52('0xe')]=function(_0x7ce213,_0x2cab33,_0x29e57e,_0x445da5){return function(_0x881546){try{var _0x391e64=this[_0x2b52('0xf')];if(_0x391e64===_0x2b52('0x10')&&_0x445da5[_0x2b52('0x11')][_0x2b52('0x12')]){logger['info']('[%s][AUTOREPLY]\x20%s',_0x7ce213,'Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)');return _0x881546[_0x2b52('0x13')]();}if(_0x2cab33[0x0]==='1'&&(_[_0x2b52('0x14')](this[_0x2b52('0x15')][_0x2b52('0x16')])||!this['interaction']['created'])){logger[_0x2b52('0x17')](_0x2b52('0x18'),_0x7ce213,_0x2b52('0x19'));return _0x881546['next']();}if(_0x2cab33[0x0]==='2'&&this[_0x2b52('0x15')]['autoreplyExecuted']){logger[_0x2b52('0x17')](_0x2b52('0x1a'),_0x7ce213,_0x2b52('0x1b'));return _0x881546[_0x2b52('0x13')]();}var _0x282c31={'ContactId':this[_0x2b52('0x1c')]['id'],'sentAt':moment()['format'](_0x2b52('0x1d')),'direction':_0x2b52('0x1e')};if(this['channel']===_0x2b52('0x10')){_0x282c31[_0x2b52('0x11')]=utils['getMustacheRender'](_0x2cab33[0x2],this);}else{_0x282c31[_0x2b52('0x11')]=utils['getMustacheRender'](_0x2cab33[0x1],this);}if(this[_0x2b52('0x1f')]){_0x282c31['to']=this[_0x2b52('0x1f')]['from']||'';if(this[_0x2b52('0xf')]===_0x2b52('0x10')&&_0x2cab33[0x1]==='1'){_0x282c31['cc']=this[_0x2b52('0x1f')]['cc']||'';}_0x282c31[_0x2b52('0x20')]=this[_0x2b52('0x1f')]['to']||'';_0x282c31['phone']=this[_0x2b52('0x1f')][_0x2b52('0x21')]||'';_0x282c31[_0x2b52('0x22')]=!![];if(this[_0x2b52('0x1f')][_0x2b52('0x23')]){_0x282c31[_0x2b52('0x23')]='';_0x282c31[_0x2b52('0x23')]+=_[_0x2b52('0x24')](this[_0x2b52('0x1f')]['subject'],_0x2b52('0x25'))?'':_0x2b52('0x26');_0x282c31['subject']+=this[_0x2b52('0x1f')][_0x2b52('0x23')];}}if(this['channel']===_0x2b52('0x27')){_0x282c31['ChatWebsiteId']=this[_0x2b52('0x28')]['id'];}else{_0x282c31[_[_0x2b52('0x29')](this[_0x2b52('0xf')])+'AccountId']=this['account']['id'];}_0x282c31[_['upperFirst'](this[_0x2b52('0xf')])+_0x2b52('0x2a')]=this[_0x2b52('0x15')]['id'];var _0x29f6cb=this['interaction'];if(rpc[this[_0x2b52('0xf')]+_0x2b52('0x2b')]){if(this['channel']==='mail'){_0x282c31[_0x2b52('0x2c')]=this[_0x2b52('0x1f')][_0x2b52('0x2d')];_0x282c31['html']=_0x2b52('0x2e')+_[_0x2b52('0x2f')](_0x282c31[_0x2b52('0x11')],_0x2b52('0x30'),_0x2b52('0x31'))+_0x2b52('0x32');_0x282c31[_0x2b52('0x33')]={'Auto-Submitted':_0x2b52('0x34'),'X-Auto-Response-Suppress':'All','Precedence':_0x2b52('0x35')};return mailRpc['sendMailMessage'](this['account'][_0x2b52('0x36')],_0x282c31)[_0x2b52('0x37')](function(_0x247e91){logger[_0x2b52('0x17')](_0x2b52('0x38'),_0x7ce213);_0x282c31[_0x2b52('0x2d')]=_0x247e91[_0x2b52('0x1f')][_0x2b52('0x2d')];return rpc[_0x391e64+_0x2b52('0x2b')][_0x2b52('0x39')](_0x282c31);})[_0x2b52('0x37')](function(_0x43313e){logger['info']('[%s][AUTOREPLY]\x20%s',_0x7ce213,JSON['stringify'](_0x43313e));})[_0x2b52('0x3a')](function(_0x45be10){logger[_0x2b52('0x3b')]('[RPC][%s][AUTOREPLY]\x20%s',_0x7ce213,JSON['stringify'](_0x45be10));})[_0x2b52('0x3c')](function(){Promise[_0x2b52('0x3d')]()[_0x2b52('0x37')](function(){if(_0x2cab33[0x0]!=='2'||_0x29f6cb[_0x2b52('0x3e')])return;return rpc[_0x391e64+_0x2b52('0x3f')]['update'](_0x29f6cb['id'],{'autoreplyExecuted':!![]})[_0x2b52('0x37')](function(_0x44fcdc){logger[_0x2b52('0x17')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x7ce213,JSON['stringify'](_0x44fcdc));})['catch'](function(_0x2d751f){logger[_0x2b52('0x3b')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x7ce213,JSON[_0x2b52('0x40')](_0x2d751f));});})[_0x2b52('0x37')](function(){_0x881546['next']();});});}else{return rpc[this['channel']+_0x2b52('0x2b')][_0x2b52('0x39')](_0x282c31)[_0x2b52('0x37')](function(){logger['info'](_0x2b52('0x18'),_0x7ce213,_0x282c31[_0x2b52('0x11')]);})[_0x2b52('0x3a')](function(_0x22492e){logger[_0x2b52('0x3b')](_0x2b52('0x18'),_0x7ce213,JSON[_0x2b52('0x40')](_0x22492e));})[_0x2b52('0x3c')](function(){Promise[_0x2b52('0x3d')]()[_0x2b52('0x37')](function(){if(_0x2cab33[0x0]!=='2'||_0x29f6cb[_0x2b52('0x3e')])return;return rpc[_0x391e64+_0x2b52('0x3f')]['update'](_0x29f6cb['id'],{'autoreplyExecuted':!![]})[_0x2b52('0x37')](function(_0x423414){logger[_0x2b52('0x17')]('[%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x7ce213,JSON[_0x2b52('0x40')](_0x423414));})['catch'](function(_0x4bf800){logger[_0x2b52('0x3b')](_0x2b52('0x41'),_0x7ce213,JSON[_0x2b52('0x40')](_0x4bf800));});})[_0x2b52('0x37')](function(){_0x881546[_0x2b52('0x13')]();});});}}}catch(_0xfdc17){logger[_0x2b52('0x3b')](_0x2b52('0x18'),_0x7ce213,JSON[_0x2b52('0x40')](_0xfdc17));_0x881546[_0x2b52('0x42')]();}};};
\ No newline at end of file
+var _0x35f1=['./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/mailInteraction','../../rpc/smsInteraction','../../rpc/whatsappInteraction','../../mailRpc','consequence','channel','body','isAutoreply','info','[%s][AUTOREPLY]\x20%s','Autoreply\x20not\x20executed\x20(message\x20is\x20autoreply)','next','interaction','created','Autoreply\x20already\x20sent','autoreplyExecuted','[%s][AUTOREPLY][autoreplyExecuted]\x20%s','contact','format','YYYY-MM-DD\x20HH:mm:ss','out','mail','getMustacheRender','message','from','read','subject','startsWith','Re:','Re:\x20','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','Message','inReplyTo','messageId','html','<div\x20id=\x22xm-mail-content\x22>','<div\x20id=\x22xm-mail-content\x22','<div','</div>','auto-replied','All','auto_reply','sendMailMessage','smtpOptions','then','[%s][AUTOREPLY]\x20SMTP\x20SENT','create','catch','error','[RPC][%s][AUTOREPLY]\x20%s','stringify','finally','resolve','update','stop','lodash','moment'];(function(_0x57c625,_0x181023){var _0xf5e34b=function(_0x4d37dd){while(--_0x4d37dd){_0x57c625['push'](_0x57c625['shift']());}};_0xf5e34b(++_0x181023);}(_0x35f1,0x122));var _0x135f=function(_0x3d3817,_0x5d0b91){_0x3d3817=_0x3d3817-0x0;var _0x4f23ce=_0x35f1[_0x3d3817];return _0x4f23ce;};'use strict';var _=require(_0x135f('0x0'));var moment=require(_0x135f('0x1'));var utils=require(_0x135f('0x2'));var logger=require(_0x135f('0x3'))(_0x135f('0x4'));var rpc={'chatMessage':require(_0x135f('0x5')),'openchannelMessage':require(_0x135f('0x6')),'mailMessage':require(_0x135f('0x7')),'smsMessage':require(_0x135f('0x8')),'faxMessage':require(_0x135f('0x9')),'whatsappMessage':require(_0x135f('0xa')),'chatInteraction':require(_0x135f('0xb')),'openchannelInteraction':require(_0x135f('0xc')),'mailInteraction':require(_0x135f('0xd')),'smsInteraction':require(_0x135f('0xe')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0x135f('0xf'))};var mailRpc=require(_0x135f('0x10'));exports[_0x135f('0x11')]=function(_0x3a8849,_0x37aa9a,_0x26b9bd,_0x20388f){return function(_0x4115fe){try{var _0x8611d1=this[_0x135f('0x12')];if(_0x8611d1==='mail'&&_0x20388f[_0x135f('0x13')][_0x135f('0x14')]){logger[_0x135f('0x15')](_0x135f('0x16'),_0x3a8849,_0x135f('0x17'));return _0x4115fe[_0x135f('0x18')]();}if(_0x37aa9a[0x0]==='1'&&(_['isNil'](this[_0x135f('0x19')][_0x135f('0x1a')])||!this[_0x135f('0x19')][_0x135f('0x1a')])){logger[_0x135f('0x15')](_0x135f('0x16'),_0x3a8849,_0x135f('0x1b'));return _0x4115fe[_0x135f('0x18')]();}if(_0x37aa9a[0x0]==='2'&&this[_0x135f('0x19')][_0x135f('0x1c')]){logger['info'](_0x135f('0x1d'),_0x3a8849,'One\x20Time\x20already\x20sent');return _0x4115fe[_0x135f('0x18')]();}var _0x5b51f0={'ContactId':this[_0x135f('0x1e')]['id'],'sentAt':moment()[_0x135f('0x1f')](_0x135f('0x20')),'direction':_0x135f('0x21')};if(this[_0x135f('0x12')]===_0x135f('0x22')){_0x5b51f0[_0x135f('0x13')]=utils[_0x135f('0x23')](_0x37aa9a[0x2],this);}else{_0x5b51f0[_0x135f('0x13')]=utils[_0x135f('0x23')](_0x37aa9a[0x1],this);}if(this[_0x135f('0x24')]){_0x5b51f0['to']=this[_0x135f('0x24')]['from']||'';if(this['channel']===_0x135f('0x22')&&_0x37aa9a[0x1]==='1'){_0x5b51f0['cc']=this[_0x135f('0x24')]['cc']||'';}_0x5b51f0[_0x135f('0x25')]=this['message']['to']||'';_0x5b51f0['phone']=this['message']['phone']||'';_0x5b51f0[_0x135f('0x26')]=!![];if(this[_0x135f('0x24')][_0x135f('0x27')]){_0x5b51f0[_0x135f('0x27')]='';_0x5b51f0['subject']+=_[_0x135f('0x28')](this[_0x135f('0x24')][_0x135f('0x27')],_0x135f('0x29'))?'':_0x135f('0x2a');_0x5b51f0[_0x135f('0x27')]+=this[_0x135f('0x24')][_0x135f('0x27')];}}if(this['channel']===_0x135f('0x2b')){_0x5b51f0[_0x135f('0x2c')]=this[_0x135f('0x2d')]['id'];}else{_0x5b51f0[_[_0x135f('0x2e')](this[_0x135f('0x12')])+_0x135f('0x2f')]=this['account']['id'];}_0x5b51f0[_[_0x135f('0x2e')](this['channel'])+_0x135f('0x30')]=this[_0x135f('0x19')]['id'];var _0x45bc96=this[_0x135f('0x19')];if(rpc[this['channel']+_0x135f('0x31')]){if(this[_0x135f('0x12')]===_0x135f('0x22')){_0x5b51f0[_0x135f('0x32')]=this['message'][_0x135f('0x33')];_0x5b51f0[_0x135f('0x34')]=_0x135f('0x35')+_['replace'](_0x5b51f0[_0x135f('0x13')],_0x135f('0x36'),_0x135f('0x37'))+_0x135f('0x38');_0x5b51f0['headers']={'Auto-Submitted':_0x135f('0x39'),'X-Auto-Response-Suppress':_0x135f('0x3a'),'Precedence':_0x135f('0x3b')};return mailRpc[_0x135f('0x3c')](this[_0x135f('0x2d')][_0x135f('0x3d')],_0x5b51f0)[_0x135f('0x3e')](function(_0xeeeb8b){logger[_0x135f('0x15')](_0x135f('0x3f'),_0x3a8849);_0x5b51f0[_0x135f('0x33')]=_0xeeeb8b[_0x135f('0x24')][_0x135f('0x33')];return rpc[_0x8611d1+_0x135f('0x31')][_0x135f('0x40')](_0x5b51f0);})[_0x135f('0x3e')](function(_0x50fefb){logger[_0x135f('0x15')](_0x135f('0x16'),_0x3a8849,JSON['stringify'](_0x50fefb));})[_0x135f('0x41')](function(_0x20213a){logger[_0x135f('0x42')](_0x135f('0x43'),_0x3a8849,JSON[_0x135f('0x44')](_0x20213a));})[_0x135f('0x45')](function(){Promise[_0x135f('0x46')]()['then'](function(){if(_0x37aa9a[0x0]!=='2'||_0x45bc96[_0x135f('0x1c')])return;return rpc[_0x8611d1+'Interaction'][_0x135f('0x47')](_0x45bc96['id'],{'autoreplyExecuted':!![]})[_0x135f('0x3e')](function(_0x3bfe0c){logger[_0x135f('0x15')](_0x135f('0x1d'),_0x3a8849,JSON[_0x135f('0x44')](_0x3bfe0c));})[_0x135f('0x41')](function(_0x2c01ac){logger[_0x135f('0x42')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x3a8849,JSON[_0x135f('0x44')](_0x2c01ac));});})[_0x135f('0x3e')](function(){_0x4115fe[_0x135f('0x18')]();});});}else{return rpc[this[_0x135f('0x12')]+_0x135f('0x31')]['create'](_0x5b51f0)[_0x135f('0x3e')](function(){logger[_0x135f('0x15')](_0x135f('0x16'),_0x3a8849,_0x5b51f0[_0x135f('0x13')]);})[_0x135f('0x41')](function(_0xb7d1ee){logger[_0x135f('0x42')](_0x135f('0x16'),_0x3a8849,JSON['stringify'](_0xb7d1ee));})[_0x135f('0x45')](function(){Promise[_0x135f('0x46')]()[_0x135f('0x3e')](function(){if(_0x37aa9a[0x0]!=='2'||_0x45bc96['autoreplyExecuted'])return;return rpc[_0x8611d1+'Interaction']['update'](_0x45bc96['id'],{'autoreplyExecuted':!![]})[_0x135f('0x3e')](function(_0x4e04a1){logger['info'](_0x135f('0x1d'),_0x3a8849,JSON['stringify'](_0x4e04a1));})[_0x135f('0x41')](function(_0x1851b2){logger[_0x135f('0x42')]('[RPC][%s][AUTOREPLY][autoreplyExecuted]\x20%s',_0x3a8849,JSON['stringify'](_0x1851b2));});})[_0x135f('0x3e')](function(){_0x4115fe[_0x135f('0x18')]();});});}}}catch(_0x29b7e2){logger[_0x135f('0x42')](_0x135f('0x16'),_0x3a8849,JSON[_0x135f('0x44')](_0x29b7e2));_0x4115fe[_0x135f('0x48')]();}};};
\ No newline at end of file
index 7849bff..6e63f18 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9e5f=['info','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','system','channel','update','interaction','then','catch','error','finally','stop','[%s][CLOSE]\x20%s','stringify','moment','../../../../config/logger','routing','../../rpc/chatInteraction','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/faxInteraction','../../rpc/whatsappInteraction','consequence'];(function(_0x3c051b,_0x27ec6d){var _0xbdf42=function(_0x329855){while(--_0x329855){_0x3c051b['push'](_0x3c051b['shift']());}};_0xbdf42(++_0x27ec6d);}(_0x9e5f,0x177));var _0xf9e5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x9e5f[_0x3dd15e];return _0x231fd0;};'use strict';var moment=require(_0xf9e5('0x0'));var logger=require(_0xf9e5('0x1'))(_0xf9e5('0x2'));var rpc={'chatInteraction':require(_0xf9e5('0x3')),'openchannelInteraction':require(_0xf9e5('0x4')),'smsInteraction':require(_0xf9e5('0x5')),'mailInteraction':require('../../rpc/mailInteraction'),'faxInteraction':require(_0xf9e5('0x6')),'whatsappInteraction':require(_0xf9e5('0x7'))};exports[_0xf9e5('0x8')]=function(_0x2ec7a6,_0x556b7e,_0x428615,_0x22d69a){return function(_0x1475a0){try{logger[_0xf9e5('0x9')](_0xf9e5('0xa'),_0x2ec7a6,_0x556b7e[0x0]);var _0x1ec962={'closed':0x1,'closedAt':moment()[_0xf9e5('0xb')](_0xf9e5('0xc')),'closeReason':_0xf9e5('0xd'),'disposition':_0x556b7e[0x0]};if(rpc[_0x22d69a[_0xf9e5('0xe')]+'Interaction']){rpc[_0x22d69a['channel']+'Interaction'][_0xf9e5('0xf')](_0x22d69a[_0xf9e5('0x10')]['id'],_0x1ec962)[_0xf9e5('0x11')](function(_0x509afb){logger[_0xf9e5('0x9')]('[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!',_0x2ec7a6,_0x22d69a['interaction']['id']);})[_0xf9e5('0x12')](function(_0x4769a5){logger[_0xf9e5('0x13')]('[%s][CLOSE]\x20%s',_0x2ec7a6,JSON['stringify'](_0x4769a5));})[_0xf9e5('0x14')](function(){_0x1475a0[_0xf9e5('0x15')]();});}}catch(_0x1181b7){logger[_0xf9e5('0x13')](_0xf9e5('0x16'),_0x2ec7a6,JSON[_0xf9e5('0x17')](_0x1181b7));_0x1475a0[_0xf9e5('0x15')]();}};};
\ No newline at end of file
+var _0xe6cf=['catch','[%s][CLOSE]\x20%s','stringify','stop','error','moment','../../rpc/openchannelInteraction','../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/whatsappInteraction','consequence','[%s][CLOSE]\x20reason\x20%s','format','YYYY-MM-DD\x20HH:mm:ss','system','channel','Interaction','update','interaction','then','info','[%s][CLOSE]\x20interaction\x20%s\x20has\x20been\x20closed!'];(function(_0x57ac3b,_0x32e884){var _0x4204c9=function(_0x54a70e){while(--_0x54a70e){_0x57ac3b['push'](_0x57ac3b['shift']());}};_0x4204c9(++_0x32e884);}(_0xe6cf,0x1d3));var _0xfe6c=function(_0x1e62b8,_0x5eed4c){_0x1e62b8=_0x1e62b8-0x0;var _0x2ab271=_0xe6cf[_0x1e62b8];return _0x2ab271;};'use strict';var moment=require(_0xfe6c('0x0'));var logger=require('../../../../config/logger')('routing');var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require(_0xfe6c('0x1')),'smsInteraction':require(_0xfe6c('0x2')),'mailInteraction':require(_0xfe6c('0x3')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0xfe6c('0x4'))};exports[_0xfe6c('0x5')]=function(_0x45d2c8,_0x2291b5,_0x11fefd,_0x52bde7){return function(_0x459aae){try{logger['info'](_0xfe6c('0x6'),_0x45d2c8,_0x2291b5[0x0]);var _0x965bb6={'closed':0x1,'closedAt':moment()[_0xfe6c('0x7')](_0xfe6c('0x8')),'closeReason':_0xfe6c('0x9'),'disposition':_0x2291b5[0x0]};if(rpc[_0x52bde7[_0xfe6c('0xa')]+_0xfe6c('0xb')]){rpc[_0x52bde7[_0xfe6c('0xa')]+'Interaction'][_0xfe6c('0xc')](_0x52bde7[_0xfe6c('0xd')]['id'],_0x965bb6)[_0xfe6c('0xe')](function(_0x1f1a8f){logger[_0xfe6c('0xf')](_0xfe6c('0x10'),_0x45d2c8,_0x52bde7[_0xfe6c('0xd')]['id']);})[_0xfe6c('0x11')](function(_0x43bf9a){logger['error'](_0xfe6c('0x12'),_0x45d2c8,JSON[_0xfe6c('0x13')](_0x43bf9a));})['finally'](function(){_0x459aae[_0xfe6c('0x14')]();});}}catch(_0x3c5e7b){logger[_0xfe6c('0x15')]('[%s][CLOSE]\x20%s',_0x45d2c8,JSON[_0xfe6c('0x13')](_0x3c5e7b));_0x459aae[_0xfe6c('0x14')]();}};};
\ No newline at end of file
index 20b7d86..28bf8d2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xe928=['info','[%s][DIALOGFLOW]\x20%s','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','YYYY-MM-DD\x20HH:mm:ss','out','channel','whatsapp','phone','ChatWebsiteId','upperFirst','AccountId','created','isEmpty','body','getMustacheRender','Message','then','error','stop','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','dialogflow','result','speech','providerName','providerResponse','stringify','metadata','catch','message','lodash','moment','apiai-promise','./utils','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/faxMessage','consequence','interaction'];(function(_0x4bc112,_0x812afe){var _0x43a4cc=function(_0x31787f){while(--_0x31787f){_0x4bc112['push'](_0x4bc112['shift']());}};_0x43a4cc(++_0x812afe);}(_0xe928,0x145));var _0x8e92=function(_0x17f515,_0x26e47f){_0x17f515=_0x17f515-0x0;var _0x5ea54b=_0xe928[_0x17f515];return _0x5ea54b;};'use strict';var _=require(_0x8e92('0x0'));var moment=require(_0x8e92('0x1'));var apiai=require(_0x8e92('0x2'));var md5=require('md5');var utils=require(_0x8e92('0x3'));var logger=require('../../../../config/logger')(_0x8e92('0x4'));var rpc={'chatMessage':require(_0x8e92('0x5')),'openchannelMessage':require(_0x8e92('0x6')),'mailMessage':require(_0x8e92('0x7')),'smsMessage':require('../../rpc/smsMessage'),'faxMessage':require(_0x8e92('0x8')),'whatsappMessage':require('../../rpc/whatsappMessage')};exports[_0x8e92('0x9')]=function(_0xe4eff3,_0x14811b){return function(_0x76e11){try{if(!_['isNil'](this[_0x8e92('0xa')]['UserId'])){logger[_0x8e92('0xb')](_0x8e92('0xc'),_0xe4eff3,_0x8e92('0xd'));return _0x76e11[_0x8e92('0xe')]();}var _0x45c1a4={'ContactId':this[_0x8e92('0xf')]['id'],'sentAt':moment()['format'](_0x8e92('0x10')),'direction':_0x8e92('0x11')};if(this[_0x8e92('0x12')]==='sms'||this[_0x8e92('0x12')]===_0x8e92('0x13')){_0x45c1a4[_0x8e92('0x14')]=this[_0x8e92('0xa')][_0x8e92('0x14')];}var _0x2fe37b=this[_0x8e92('0x12')];if(_0x2fe37b==='chat'){_0x45c1a4[_0x8e92('0x15')]=this['account']['id'];}else{_0x45c1a4[_[_0x8e92('0x16')](_0x2fe37b)+_0x8e92('0x17')]=this['account']['id'];}_0x45c1a4[_[_0x8e92('0x16')](_0x2fe37b)+'InteractionId']=this[_0x8e92('0xa')]['id'];if(this[_0x8e92('0xa')][_0x8e92('0x18')]){var _0x1380ef=_0x14811b[0x2];if(!_[_0x8e92('0x19')](_0x1380ef)){_0x45c1a4[_0x8e92('0x1a')]=utils[_0x8e92('0x1b')](_0x1380ef,this);return rpc[_0x2fe37b+_0x8e92('0x1c')]['create'](_0x45c1a4)[_0x8e92('0x1d')](function(_0x192b0b){logger[_0x8e92('0xb')](_0x8e92('0xc'),_0xe4eff3,_0x45c1a4[_0x8e92('0x1a')]);})['catch'](function(_0x261b07){logger[_0x8e92('0x1e')]('[%s][DIALOGFLOW]\x20%s',_0xe4eff3,JSON['stringify'](_0x261b07));})['finally'](function(){logger[_0x8e92('0xb')]('[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!',_0xe4eff3);_0x76e11[_0x8e92('0x1f')]();});}else{logger[_0x8e92('0xb')](_0x8e92('0x20'),_0xe4eff3);_0x76e11[_0x8e92('0x1f')]();}}else{var _0x368253=this;var _0x70f846=apiai(_0x14811b[0x0],{'language':_0x14811b[0x1]||'en'});return _0x70f846['textRequest'](this['message']['body'],{'sessionId':md5(this['interaction']['id'])})[_0x8e92('0x1d')](function(_0x3a86e4){_0x368253[_0x8e92('0x1a')][_0x8e92('0x21')]=_0x3a86e4;_0x45c1a4[_0x8e92('0x1a')]=_0x3a86e4[_0x8e92('0x22')]['fulfillment'][_0x8e92('0x23')];_0x45c1a4[_0x8e92('0x24')]=_0x8e92('0x21');_0x45c1a4[_0x8e92('0x25')]=JSON[_0x8e92('0x26')](_0x3a86e4);return rpc[_0x2fe37b+_0x8e92('0x1c')]['create'](_0x45c1a4)['then'](function(_0x510349){logger[_0x8e92('0xb')]('[%s][DIALOGFLOW]\x20%s',_0xe4eff3,_0x45c1a4[_0x8e92('0x1a')]);if(_0x3a86e4['result'][_0x8e92('0x27')]['endConversation']){_0x76e11[_0x8e92('0xe')]();}else{_0x76e11[_0x8e92('0x1f')]();}})[_0x8e92('0x28')](function(_0x3c8897){logger[_0x8e92('0x1e')](_0x8e92('0xc'),_0xe4eff3,JSON['stringify'](_0x3c8897));_0x76e11[_0x8e92('0xe')]();});})[_0x8e92('0x28')](function(_0x4c11ef){logger[_0x8e92('0x1e')]('[%s][DIALOGFLOW]\x20%s',_0xe4eff3,_0x4c11ef[_0x8e92('0x29')]);_0x76e11[_0x8e92('0xe')]();});}}catch(_0x4fb57b){logger[_0x8e92('0x1e')](_0x8e92('0xc'),_0xe4eff3,JSON[_0x8e92('0x26')](_0x4fb57b));_0x76e11[_0x8e92('0x1f')]();}};};
\ No newline at end of file
+var _0x16ce=['catch','moment','apiai-promise','md5','./utils','../../../../config/logger','routing','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','isNil','interaction','UserId','[%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','phone','ChatWebsiteId','account','upperFirst','AccountId','created','isEmpty','body','getMustacheRender','Message','create','info','error','stringify','finally','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20has\x20been\x20sent!','[%s][DIALOGFLOW]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!','stop','textRequest','message','then','dialogflow','result','fulfillment','providerName','providerResponse','metadata','endConversation'];(function(_0x23f3b3,_0xef0281){var _0x3c8316=function(_0x3061c5){while(--_0x3061c5){_0x23f3b3['push'](_0x23f3b3['shift']());}};_0x3c8316(++_0xef0281);}(_0x16ce,0xfb));var _0xe16c=function(_0x8ffdb3,_0x34d4e2){_0x8ffdb3=_0x8ffdb3-0x0;var _0x26e1d7=_0x16ce[_0x8ffdb3];return _0x26e1d7;};'use strict';var _=require('lodash');var moment=require(_0xe16c('0x0'));var apiai=require(_0xe16c('0x1'));var md5=require(_0xe16c('0x2'));var utils=require(_0xe16c('0x3'));var logger=require(_0xe16c('0x4'))(_0xe16c('0x5'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require('../../rpc/openchannelMessage'),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0xe16c('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xe16c('0x7'))};exports[_0xe16c('0x8')]=function(_0x3b149c,_0x1cf3f9){return function(_0x1d8b72){try{if(!_[_0xe16c('0x9')](this[_0xe16c('0xa')][_0xe16c('0xb')])){logger['info'](_0xe16c('0xc'),_0x3b149c,_0xe16c('0xd'));return _0x1d8b72[_0xe16c('0xe')]();}var _0x2e59ad={'ContactId':this[_0xe16c('0xf')]['id'],'sentAt':moment()[_0xe16c('0x10')](_0xe16c('0x11')),'direction':_0xe16c('0x12')};if(this[_0xe16c('0x13')]===_0xe16c('0x14')||this[_0xe16c('0x13')]==='whatsapp'){_0x2e59ad[_0xe16c('0x15')]=this[_0xe16c('0xa')][_0xe16c('0x15')];}var _0x2c439f=this['channel'];if(_0x2c439f==='chat'){_0x2e59ad[_0xe16c('0x16')]=this[_0xe16c('0x17')]['id'];}else{_0x2e59ad[_[_0xe16c('0x18')](_0x2c439f)+_0xe16c('0x19')]=this['account']['id'];}_0x2e59ad[_[_0xe16c('0x18')](_0x2c439f)+'InteractionId']=this[_0xe16c('0xa')]['id'];if(this[_0xe16c('0xa')][_0xe16c('0x1a')]){var _0x5b7439=_0x1cf3f9[0x2];if(!_[_0xe16c('0x1b')](_0x5b7439)){_0x2e59ad[_0xe16c('0x1c')]=utils[_0xe16c('0x1d')](_0x5b7439,this);return rpc[_0x2c439f+_0xe16c('0x1e')][_0xe16c('0x1f')](_0x2e59ad)['then'](function(_0x99130d){logger[_0xe16c('0x20')](_0xe16c('0xc'),_0x3b149c,_0x2e59ad['body']);})['catch'](function(_0x533933){logger[_0xe16c('0x21')](_0xe16c('0xc'),_0x3b149c,JSON[_0xe16c('0x22')](_0x533933));})[_0xe16c('0x23')](function(){logger[_0xe16c('0x20')](_0xe16c('0x24'),_0x3b149c);_0x1d8b72['stop']();});}else{logger[_0xe16c('0x20')](_0xe16c('0x25'),_0x3b149c);_0x1d8b72[_0xe16c('0x26')]();}}else{var _0x9909dc=this;var _0x5a88ed=apiai(_0x1cf3f9[0x0],{'language':_0x1cf3f9[0x1]||'en'});return _0x5a88ed[_0xe16c('0x27')](this[_0xe16c('0x28')][_0xe16c('0x1c')],{'sessionId':md5(this[_0xe16c('0xa')]['id'])})[_0xe16c('0x29')](function(_0x18669a){_0x9909dc[_0xe16c('0x1c')][_0xe16c('0x2a')]=_0x18669a;_0x2e59ad['body']=_0x18669a[_0xe16c('0x2b')][_0xe16c('0x2c')]['speech'];_0x2e59ad[_0xe16c('0x2d')]='dialogflow';_0x2e59ad[_0xe16c('0x2e')]=JSON['stringify'](_0x18669a);return rpc[_0x2c439f+_0xe16c('0x1e')][_0xe16c('0x1f')](_0x2e59ad)[_0xe16c('0x29')](function(_0x156de3){logger[_0xe16c('0x20')](_0xe16c('0xc'),_0x3b149c,_0x2e59ad[_0xe16c('0x1c')]);if(_0x18669a[_0xe16c('0x2b')][_0xe16c('0x2f')][_0xe16c('0x30')]){_0x1d8b72['next']();}else{_0x1d8b72[_0xe16c('0x26')]();}})[_0xe16c('0x31')](function(_0x397682){logger['error'](_0xe16c('0xc'),_0x3b149c,JSON[_0xe16c('0x22')](_0x397682));_0x1d8b72['next']();});})[_0xe16c('0x31')](function(_0x25ec64){logger['error'](_0xe16c('0xc'),_0x3b149c,_0x25ec64[_0xe16c('0x28')]);_0x1d8b72[_0xe16c('0xe')]();});}}catch(_0x190c73){logger[_0xe16c('0x21')](_0xe16c('0xc'),_0x3b149c,JSON['stringify'](_0x190c73));_0x1d8b72[_0xe16c('0x26')]();}};};
\ No newline at end of file
index bb6381d..3805417 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8787=['ChatWebsiteId','account','upperFirst','InteractionId','created','isEmpty','catch','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','SessionsClient','sessionPath','detectIntent','length','diagnosticInfo','fields','end_conversation','boolValue','DIALOGFLOWV2_ACTION','action','queryResult','allRequiredParamsPresent','DIALOGFLOWV2_INTENTNAME','intent','name','DIALOGFLOWV2_ISFALLBACKINTENT','isFallback','DIALOGFLOWV2_LANGUAGECODE','languageCode','queryText','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','fulfillmentText','all','message','lodash','md5','moment','bluebird','../../../../config/logger','./utils','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/faxMessage','../../rpc/whatsappMessage','clone','body','create','then','[%s][DIALOGFLOWV2]\x20%s','error','stringify','isNil','interaction','UserId','info','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','out','channel','sms','whatsapp','phone','chat'];(function(_0x311633,_0x1cdc3a){var _0x4e6ea9=function(_0x2ea659){while(--_0x2ea659){_0x311633['push'](_0x311633['shift']());}};_0x4e6ea9(++_0x1cdc3a);}(_0x8787,0x1af));var _0x7878=function(_0x5aae48,_0x12050b){_0x5aae48=_0x5aae48-0x0;var _0x4be412=_0x8787[_0x5aae48];return _0x4be412;};'use strict';var _=require(_0x7878('0x0'));var dialogflow=require('dialogflow');var md5=require(_0x7878('0x1'));var moment=require(_0x7878('0x2'));var Promise=require(_0x7878('0x3'));var logger=require(_0x7878('0x4'))('routing');var utils=require(_0x7878('0x5'));var rpc={'chatMessage':require(_0x7878('0x6')),'openchannelMessage':require(_0x7878('0x7')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x7878('0x8')),'faxMessage':require(_0x7878('0x9')),'whatsappMessage':require(_0x7878('0xa'))};function createMessage(_0x3db5b7,_0x2b72a4,_0x2125ca,_0x4c703c){return new Promise(function(_0x1fd0d5,_0x38e84a){var _0xefdc80=_[_0x7878('0xb')](_0x2125ca);_0xefdc80[_0x7878('0xc')]=_0x4c703c;return rpc[_0x2b72a4+'Message'][_0x7878('0xd')](_0xefdc80)[_0x7878('0xe')](function(){logger['info'](_0x7878('0xf'),_0x3db5b7,_0xefdc80['body']);_0x1fd0d5();})['catch'](function(_0x1657fa){logger[_0x7878('0x10')](_0x7878('0xf'),_0x3db5b7,JSON[_0x7878('0x11')](_0x1657fa));_0x38e84a(_0x1657fa);});});}exports['consequence']=function(_0x79f745,_0x3bddad){return function(_0xc081df){try{if(!_[_0x7878('0x12')](this[_0x7878('0x13')][_0x7878('0x14')])){logger[_0x7878('0x15')]('[%s][DIALOGFLOWV2]\x20%s',_0x79f745,_0x7878('0x16'));return _0xc081df[_0x7878('0x17')]();}var _0x155995={'ContactId':this[_0x7878('0x18')]['id'],'sentAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'direction':_0x7878('0x19')};if(this[_0x7878('0x1a')]===_0x7878('0x1b')||this[_0x7878('0x1a')]===_0x7878('0x1c')){_0x155995[_0x7878('0x1d')]=this[_0x7878('0x13')][_0x7878('0x1d')];}var _0x2171b4=this[_0x7878('0x1a')];if(_0x2171b4===_0x7878('0x1e')){_0x155995[_0x7878('0x1f')]=this[_0x7878('0x20')]['id'];}else{_0x155995[_['upperFirst'](_0x2171b4)+'AccountId']=this[_0x7878('0x20')]['id'];}_0x155995[_[_0x7878('0x21')](_0x2171b4)+_0x7878('0x22')]=this[_0x7878('0x13')]['id'];if(this[_0x7878('0x13')][_0x7878('0x23')]){var _0x51248e=_0x3bddad[0x4];if(!_[_0x7878('0x24')](_0x51248e)){_0x155995[_0x7878('0xc')]=utils['getMustacheRender'](_0x51248e,this);return rpc[_0x2171b4+'Message'][_0x7878('0xd')](_0x155995)[_0x7878('0xe')](function(_0x78cf59){logger[_0x7878('0x15')](_0x7878('0xf'),_0x79f745,_0x155995[_0x7878('0xc')]);})[_0x7878('0x25')](function(_0x4f07df){logger['error']('[%s][DIALOGFLOWV2]\x20%s',_0x79f745,JSON[_0x7878('0x11')](_0x4f07df));})['finally'](function(){logger[_0x7878('0x15')](_0x7878('0x26'),_0x79f745);_0xc081df['stop']();});}else{logger['info']('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x79f745);_0xc081df[_0x7878('0x27')]();}}else{var _0x2cbebf=this;var _0x560bbf=_0x3bddad[0x2]['replace'](/\\n/g,'\x0a');var _0x315a91={'credentials':{'private_key':_0x560bbf,'client_email':_0x3bddad[0x1]}};var _0x567909=new dialogflow[(_0x7878('0x28'))](_0x315a91);var _0x42de61=_0x567909[_0x7878('0x29')](_0x3bddad[0x0],md5(_0x2cbebf['interaction']['id']));var _0x3ab1d9={'session':_0x42de61,'queryInput':{'text':{'text':_0x2cbebf['message'][_0x7878('0xc')],'languageCode':_0x3bddad[0x3]||'en'}}};return _0x567909[_0x7878('0x2a')](_0x3ab1d9)[_0x7878('0xe')](function(_0x266459){if(_0x266459&&_0x266459[_0x7878('0x2b')]){_0x2cbebf[_0x7878('0xc')]['dialogflowV2']=_0x266459;var _0x434792=_0x266459[0x0];var _0x38334c=_0x434792['queryResult']['diagnosticInfo']&&_0x434792['queryResult'][_0x7878('0x2c')][_0x7878('0x2d')]?_0x434792['queryResult']['diagnosticInfo'][_0x7878('0x2d')][_0x7878('0x2e')][_0x7878('0x2f')]:![];_0x2cbebf[_0x7878('0xc')][_0x7878('0x30')]=_0x434792['queryResult'][_0x7878('0x31')];_0x2cbebf['body']['DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT']=_0x434792[_0x7878('0x32')][_0x7878('0x33')];_0x2cbebf['body']['DIALOGFLOWV2_ENDCONVERSATION']=_0x434792['queryResult'][_0x7878('0x2c')]&&_0x434792[_0x7878('0x32')][_0x7878('0x2c')][_0x7878('0x2d')]?_0x434792[_0x7878('0x32')][_0x7878('0x2c')]['fields']['end_conversation']['boolValue']:![];_0x2cbebf[_0x7878('0xc')][_0x7878('0x34')]=_0x434792['queryResult'][_0x7878('0x35')][_0x7878('0x36')];_0x2cbebf['body']['DIALOGFLOWV2_INTENTDISPLAYNAME']=_0x434792[_0x7878('0x32')][_0x7878('0x35')]['displayName'];_0x2cbebf[_0x7878('0xc')][_0x7878('0x37')]=_0x434792[_0x7878('0x32')][_0x7878('0x35')][_0x7878('0x38')];_0x2cbebf['body'][_0x7878('0x39')]=_0x434792[_0x7878('0x32')][_0x7878('0x3a')];_0x2cbebf[_0x7878('0xc')]['DIALOGFLOWV2_QUERYTEXT']=_0x434792[_0x7878('0x32')][_0x7878('0x3b')];_0x2cbebf[_0x7878('0xc')][_0x7878('0x3c')]=_0x434792[_0x7878('0x32')][_0x7878('0x3d')];_0x155995[_0x7878('0x3e')]='dialogflowV2';_0x155995['providerResponse']=JSON[_0x7878('0x11')](_0x266459);var _0x420a9c=[];for(var _0xdeda53=0x0;_0xdeda53<_0x266459[_0x7878('0x2b')];_0xdeda53++){var _0x6363cd=_0x266459[_0xdeda53];if(_0x6363cd&&_0x6363cd['queryResult']&&_0x6363cd['queryResult'][_0x7878('0x3f')]){_0x420a9c['push'](createMessage(_0x79f745,_0x2171b4,_0x155995,_0x6363cd[_0x7878('0x32')][_0x7878('0x3f')]));}}return Promise[_0x7878('0x40')](_0x420a9c)['then'](function(){if(_0x38334c){_0xc081df['next']();}else{_0xc081df[_0x7878('0x27')]();}})['catch'](function(_0x3a8292){logger[_0x7878('0x10')](_0x7878('0xf'),_0x79f745,JSON[_0x7878('0x11')](_0x3a8292));_0xc081df['next']();});}})['catch'](function(_0x527b26){logger[_0x7878('0x10')]('[%s][DIALOGFLOWV2]\x20%s',_0x79f745,_0x527b26[_0x7878('0x41')]);_0xc081df[_0x7878('0x17')]();});}}catch(_0xc9229){logger['error'](_0x7878('0xf'),_0x79f745,JSON[_0x7878('0x11')](_0xc9229));_0xc081df['stop']();}};};
\ No newline at end of file
+var _0xe345=['dialogflowV2','queryResult','diagnosticInfo','fields','end_conversation','DIALOGFLOWV2_ACTION','action','allRequiredParamsPresent','DIALOGFLOWV2_ENDCONVERSATION','boolValue','DIALOGFLOWV2_INTENTNAME','intent','DIALOGFLOWV2_INTENTDISPLAYNAME','displayName','isFallback','DIALOGFLOWV2_SCORE','intentDetectionConfidence','providerName','providerResponse','fulfillmentText','all','md5','bluebird','../../../../config/logger','routing','./utils','../../rpc/openchannelMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','body','create','info','[%s][DIALOGFLOWV2]\x20%s','catch','error','stringify','consequence','interaction','UserId','Agent\x20is\x20managing\x20the\x20interaction.\x20Go\x20to\x20next\x20application.','next','contact','format','YYYY-MM-DD\x20HH:mm:ss','channel','sms','phone','chat','ChatWebsiteId','account','upperFirst','InteractionId','created','isEmpty','getMustacheRender','Message','finally','[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20has\x20been\x20sent!','stop','replace','SessionsClient','sessionPath','message','detectIntent','then','length'];(function(_0x3590d8,_0xd4450e){var _0x2acfd8=function(_0x40ef64){while(--_0x40ef64){_0x3590d8['push'](_0x3590d8['shift']());}};_0x2acfd8(++_0xd4450e);}(_0xe345,0x99));var _0x5e34=function(_0x1ca4cc,_0x402c23){_0x1ca4cc=_0x1ca4cc-0x0;var _0x108010=_0xe345[_0x1ca4cc];return _0x108010;};'use strict';var _=require('lodash');var dialogflow=require('dialogflow');var md5=require(_0x5e34('0x0'));var moment=require('moment');var Promise=require(_0x5e34('0x1'));var logger=require(_0x5e34('0x2'))(_0x5e34('0x3'));var utils=require(_0x5e34('0x4'));var rpc={'chatMessage':require('../../rpc/chatMessage'),'openchannelMessage':require(_0x5e34('0x5')),'mailMessage':require('../../rpc/mailMessage'),'smsMessage':require(_0x5e34('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x5e34('0x7'))};function createMessage(_0x7f4fcc,_0x1a7ca1,_0x1dc37f,_0x786ddd){return new Promise(function(_0x1424d1,_0x564759){var _0x5347ad=_['clone'](_0x1dc37f);_0x5347ad[_0x5e34('0x8')]=_0x786ddd;return rpc[_0x1a7ca1+'Message'][_0x5e34('0x9')](_0x5347ad)['then'](function(){logger[_0x5e34('0xa')](_0x5e34('0xb'),_0x7f4fcc,_0x5347ad['body']);_0x1424d1();})[_0x5e34('0xc')](function(_0x24f067){logger[_0x5e34('0xd')]('[%s][DIALOGFLOWV2]\x20%s',_0x7f4fcc,JSON[_0x5e34('0xe')](_0x24f067));_0x564759(_0x24f067);});});}exports[_0x5e34('0xf')]=function(_0x557f45,_0x2f299a){return function(_0x51d66f){try{if(!_['isNil'](this[_0x5e34('0x10')][_0x5e34('0x11')])){logger[_0x5e34('0xa')]('[%s][DIALOGFLOWV2]\x20%s',_0x557f45,_0x5e34('0x12'));return _0x51d66f[_0x5e34('0x13')]();}var _0x393bd6={'ContactId':this[_0x5e34('0x14')]['id'],'sentAt':moment()[_0x5e34('0x15')](_0x5e34('0x16')),'direction':'out'};if(this[_0x5e34('0x17')]===_0x5e34('0x18')||this[_0x5e34('0x17')]==='whatsapp'){_0x393bd6[_0x5e34('0x19')]=this[_0x5e34('0x10')][_0x5e34('0x19')];}var _0x28f85d=this['channel'];if(_0x28f85d===_0x5e34('0x1a')){_0x393bd6[_0x5e34('0x1b')]=this[_0x5e34('0x1c')]['id'];}else{_0x393bd6[_['upperFirst'](_0x28f85d)+'AccountId']=this[_0x5e34('0x1c')]['id'];}_0x393bd6[_[_0x5e34('0x1d')](_0x28f85d)+_0x5e34('0x1e')]=this['interaction']['id'];if(this[_0x5e34('0x10')][_0x5e34('0x1f')]){var _0x1661cb=_0x2f299a[0x4];if(!_[_0x5e34('0x20')](_0x1661cb)){_0x393bd6[_0x5e34('0x8')]=utils[_0x5e34('0x21')](_0x1661cb,this);return rpc[_0x28f85d+_0x5e34('0x22')]['create'](_0x393bd6)['then'](function(_0x305f5c){logger[_0x5e34('0xa')]('[%s][DIALOGFLOWV2]\x20%s',_0x557f45,_0x393bd6[_0x5e34('0x8')]);})['catch'](function(_0x51e585){logger[_0x5e34('0xd')](_0x5e34('0xb'),_0x557f45,JSON[_0x5e34('0xe')](_0x51e585));})[_0x5e34('0x23')](function(){logger[_0x5e34('0xa')](_0x5e34('0x24'),_0x557f45);_0x51d66f[_0x5e34('0x25')]();});}else{logger[_0x5e34('0xa')]('[%s][DIALOGFLOWV2]\x20Welcome\x20Message\x20is\x20empty.\x20It\x20will\x20wait\x20for\x20a\x20message\x20from\x20customer!',_0x557f45);_0x51d66f[_0x5e34('0x25')]();}}else{var _0x3640b0=this;var _0x25f6c3=_0x2f299a[0x2][_0x5e34('0x26')](/\\n/g,'\x0a');var _0x2d07e0={'credentials':{'private_key':_0x25f6c3,'client_email':_0x2f299a[0x1]}};var _0x4d8a7a=new dialogflow[(_0x5e34('0x27'))](_0x2d07e0);var _0x4d0d61=_0x4d8a7a[_0x5e34('0x28')](_0x2f299a[0x0],md5(_0x3640b0[_0x5e34('0x10')]['id']));var _0x303e6c={'session':_0x4d0d61,'queryInput':{'text':{'text':_0x3640b0[_0x5e34('0x29')][_0x5e34('0x8')],'languageCode':_0x2f299a[0x3]||'en'}}};return _0x4d8a7a[_0x5e34('0x2a')](_0x303e6c)[_0x5e34('0x2b')](function(_0x4b0c77){if(_0x4b0c77&&_0x4b0c77[_0x5e34('0x2c')]){_0x3640b0[_0x5e34('0x8')][_0x5e34('0x2d')]=_0x4b0c77;var _0x522d41=_0x4b0c77[0x0];var _0x4025b0=_0x522d41[_0x5e34('0x2e')][_0x5e34('0x2f')]&&_0x522d41[_0x5e34('0x2e')]['diagnosticInfo']['fields']?_0x522d41[_0x5e34('0x2e')]['diagnosticInfo'][_0x5e34('0x30')][_0x5e34('0x31')]['boolValue']:![];_0x3640b0['body'][_0x5e34('0x32')]=_0x522d41[_0x5e34('0x2e')][_0x5e34('0x33')];_0x3640b0[_0x5e34('0x8')]['DIALOGFLOWV2_ALLREQUIREDPARAMSPRESENT']=_0x522d41[_0x5e34('0x2e')][_0x5e34('0x34')];_0x3640b0[_0x5e34('0x8')][_0x5e34('0x35')]=_0x522d41['queryResult'][_0x5e34('0x2f')]&&_0x522d41['queryResult'][_0x5e34('0x2f')][_0x5e34('0x30')]?_0x522d41['queryResult'][_0x5e34('0x2f')][_0x5e34('0x30')][_0x5e34('0x31')][_0x5e34('0x36')]:![];_0x3640b0['body'][_0x5e34('0x37')]=_0x522d41[_0x5e34('0x2e')][_0x5e34('0x38')]['name'];_0x3640b0[_0x5e34('0x8')][_0x5e34('0x39')]=_0x522d41[_0x5e34('0x2e')][_0x5e34('0x38')][_0x5e34('0x3a')];_0x3640b0['body']['DIALOGFLOWV2_ISFALLBACKINTENT']=_0x522d41[_0x5e34('0x2e')][_0x5e34('0x38')][_0x5e34('0x3b')];_0x3640b0['body']['DIALOGFLOWV2_LANGUAGECODE']=_0x522d41[_0x5e34('0x2e')]['languageCode'];_0x3640b0[_0x5e34('0x8')]['DIALOGFLOWV2_QUERYTEXT']=_0x522d41[_0x5e34('0x2e')]['queryText'];_0x3640b0[_0x5e34('0x8')][_0x5e34('0x3c')]=_0x522d41['queryResult'][_0x5e34('0x3d')];_0x393bd6[_0x5e34('0x3e')]=_0x5e34('0x2d');_0x393bd6[_0x5e34('0x3f')]=JSON[_0x5e34('0xe')](_0x4b0c77);var _0x382aff=[];for(var _0x50d816=0x0;_0x50d816<_0x4b0c77[_0x5e34('0x2c')];_0x50d816++){var _0x54e725=_0x4b0c77[_0x50d816];if(_0x54e725&&_0x54e725[_0x5e34('0x2e')]&&_0x54e725['queryResult'][_0x5e34('0x40')]){_0x382aff['push'](createMessage(_0x557f45,_0x28f85d,_0x393bd6,_0x54e725[_0x5e34('0x2e')]['fulfillmentText']));}}return Promise[_0x5e34('0x41')](_0x382aff)[_0x5e34('0x2b')](function(){if(_0x4025b0){_0x51d66f['next']();}else{_0x51d66f[_0x5e34('0x25')]();}})[_0x5e34('0xc')](function(_0x2d1978){logger[_0x5e34('0xd')]('[%s][DIALOGFLOWV2]\x20%s',_0x557f45,JSON[_0x5e34('0xe')](_0x2d1978));_0x51d66f[_0x5e34('0x13')]();});}})[_0x5e34('0xc')](function(_0x2fe38a){logger['error'](_0x5e34('0xb'),_0x557f45,_0x2fe38a[_0x5e34('0x29')]);_0x51d66f[_0x5e34('0x13')]();});}}catch(_0x197ff7){logger[_0x5e34('0xd')](_0x5e34('0xb'),_0x557f45,JSON[_0x5e34('0xe')](_0x197ff7));_0x51d66f['stop']();}};};
\ No newline at end of file
index 4ba5a7f..61e3dfa 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5424=['map','message','join','stop','priorityFalse','info','[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s','condition','next','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20not\x20found','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','validate','./utils','../../../../config/logger','routing','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','priority\x20false\x20is\x20a\x20number','consequence','fromString','getMustacheRender','replace','[%s][GOTOIF]\x20%s'];(function(_0x38d7d6,_0x3c52ca){var _0x4be128=function(_0x4725e2){while(--_0x4725e2){_0x38d7d6['push'](_0x38d7d6['shift']());}};_0x4be128(++_0x3c52ca);}(_0x5424,0x7a));var _0x4542=function(_0x5b4615,_0x3fad71){_0x5b4615=_0x5b4615-0x0;var _0x44eb78=_0x5424[_0x5b4615];return _0x44eb78;};'use strict';var schema=require(_0x4542('0x0'));var _=require('lodash');var htmlToText=require('html-to-text');var utils=require(_0x4542('0x1'));var logger=require(_0x4542('0x2'))(_0x4542('0x3'));var gotoif=schema({'condition':{'type':_0x4542('0x4'),'required':!![],'message':_0x4542('0x5')},'priorityTrue':{'type':'number','message':'priority\x20true\x20is\x20a\x20number'},'priorityFalse':{'type':_0x4542('0x6'),'message':_0x4542('0x7')}});exports[_0x4542('0x8')]=function(_0x4baf58,_0x1fdc10){return function(_0x4f4cb6){try{var _0x3c2c03={'condition':htmlToText[_0x4542('0x9')](utils[_0x4542('0xa')](_0x1fdc10[0x0],this),{'wordwrap':![]})[_0x4542('0xb')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x1fdc10[0x1],'priorityFalse':_0x1fdc10[0x2]};var _0x555a40=gotoif[_0x4542('0x0')](_0x3c2c03,{'typecast':!![]});if(_0x555a40['length']){logger['error'](_0x4542('0xc'),_0x4baf58,_[_0x4542('0xd')](_0x555a40,_0x4542('0xe'))[_0x4542('0xf')](',\x20'));_0x4f4cb6[_0x4542('0x10')]();}else{try{var _0x5769f0=eval('('+_0x3c2c03['condition']+')');var _0x247362=_0x5769f0?_0x3c2c03['priorityTrue']:_0x3c2c03[_0x4542('0x11')];logger[_0x4542('0x12')](_0x4542('0x13'),_0x4baf58,_0x3c2c03[_0x4542('0x14')],_0x5769f0,_0x247362||_0x4542('0x15'));if(_0x247362){var _0x1e342a=_[_0x4542('0x16')](_0x4f4cb6[_0x4542('0x17')](),{'p':_0x247362});if(_0x1e342a>=0x0){logger['info']('[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s',_0x4baf58,_0x247362||_0x4542('0x15'),_0x1e342a);_0x4f4cb6[_0x4542('0x15')](_0x1e342a);}else{logger[_0x4542('0x12')](_0x4542('0x18'),_0x4baf58,_0x247362||_0x4542('0x15'));_0x4f4cb6[_0x4542('0x10')]();}}else{_0x4f4cb6[_0x4542('0x15')]();}}catch(_0x14168e){logger['error'](_0x4542('0x19'),_0x4baf58,_0x14168e['message']);_0x4f4cb6[_0x4542('0x10')]();}}}catch(_0x164302){logger['error'](_0x4542('0xc'),_0x4baf58,JSON[_0x4542('0x1a')](_0x164302));_0x4f4cb6['stop']();}};};
\ No newline at end of file
+var _0x0bb1=['info','next','findIndex','rules','[%s][GOTOIF]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','[%s][GOTOIF]\x20eval\x20error:\x20%s','stringify','validate','lodash','./utils','routing','string','condition\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','consequence','fromString','getMustacheRender','replace','error','[%s][GOTOIF]\x20%s','map','message','join','stop','priorityTrue','priorityFalse'];(function(_0x562e1e,_0x324936){var _0x9e7cc9=function(_0x1193ff){while(--_0x1193ff){_0x562e1e['push'](_0x562e1e['shift']());}};_0x9e7cc9(++_0x324936);}(_0x0bb1,0x13f));var _0x10bb=function(_0x1406c8,_0x40a801){_0x1406c8=_0x1406c8-0x0;var _0x3ec6f8=_0x0bb1[_0x1406c8];return _0x3ec6f8;};'use strict';var schema=require(_0x10bb('0x0'));var _=require(_0x10bb('0x1'));var htmlToText=require('html-to-text');var utils=require(_0x10bb('0x2'));var logger=require('../../../../config/logger')(_0x10bb('0x3'));var gotoif=schema({'condition':{'type':_0x10bb('0x4'),'required':!![],'message':_0x10bb('0x5')},'priorityTrue':{'type':_0x10bb('0x6'),'message':'priority\x20true\x20is\x20a\x20number'},'priorityFalse':{'type':_0x10bb('0x6'),'message':'priority\x20false\x20is\x20a\x20number'}});exports[_0x10bb('0x7')]=function(_0x51880c,_0x2c8e16){return function(_0x2264f0){try{var _0x505f72={'condition':htmlToText[_0x10bb('0x8')](utils[_0x10bb('0x9')](_0x2c8e16[0x0],this),{'wordwrap':![]})[_0x10bb('0xa')](/<\/?[^>]+(>|$)/g,''),'priorityTrue':_0x2c8e16[0x1],'priorityFalse':_0x2c8e16[0x2]};var _0x20fefb=gotoif['validate'](_0x505f72,{'typecast':!![]});if(_0x20fefb['length']){logger[_0x10bb('0xb')](_0x10bb('0xc'),_0x51880c,_[_0x10bb('0xd')](_0x20fefb,_0x10bb('0xe'))[_0x10bb('0xf')](',\x20'));_0x2264f0[_0x10bb('0x10')]();}else{try{var _0x17a338=eval('('+_0x505f72['condition']+')');var _0x25b886=_0x17a338?_0x505f72[_0x10bb('0x11')]:_0x505f72[_0x10bb('0x12')];logger[_0x10bb('0x13')]('[%s][GOTOIF]\x20condition\x20%s\x20is\x20%s\x20try\x20goto\x20priority\x20%s',_0x51880c,_0x505f72['condition'],_0x17a338,_0x25b886||_0x10bb('0x14'));if(_0x25b886){var _0x527516=_[_0x10bb('0x15')](_0x2264f0[_0x10bb('0x16')](),{'p':_0x25b886});if(_0x527516>=0x0){logger[_0x10bb('0x13')](_0x10bb('0x17'),_0x51880c,_0x25b886||_0x10bb('0x14'),_0x527516);_0x2264f0['next'](_0x527516);}else{logger[_0x10bb('0x13')]('[%s][GOTOIF]\x20priority\x20%s\x20not\x20found',_0x51880c,_0x25b886||_0x10bb('0x14'));_0x2264f0['stop']();}}else{_0x2264f0['next']();}}catch(_0x52503e){logger[_0x10bb('0xb')](_0x10bb('0x18'),_0x51880c,_0x52503e['message']);_0x2264f0[_0x10bb('0x10')]();}}}catch(_0x23b776){logger['error'](_0x10bb('0xc'),_0x51880c,JSON[_0x10bb('0x19')](_0x23b776));_0x2264f0[_0x10bb('0x10')]();}};};
\ No newline at end of file
index 5879cc5..9862dd2 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb736=['priority','findIndex','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','validate','lodash','../../../../config/logger','routing','number','error','[%s][GOTOP]\x20%s','map','message','join','stop','[%s][GOTOP]\x20priority\x20%s'];(function(_0xe17029,_0x36c395){var _0x5ce796=function(_0x123f12){while(--_0x123f12){_0xe17029['push'](_0xe17029['shift']());}};_0x5ce796(++_0x36c395);}(_0xb736,0x104));var _0x6b73=function(_0x3e3b5c,_0x1733c3){_0x3e3b5c=_0x3e3b5c-0x0;var _0x5009a3=_0xb736[_0x3e3b5c];return _0x5009a3;};'use strict';var schema=require(_0x6b73('0x0'));var _=require(_0x6b73('0x1'));var logger=require(_0x6b73('0x2'))(_0x6b73('0x3'));var gotop=schema({'priority':{'type':_0x6b73('0x4'),'required':!![],'message':'priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required'}});exports['consequence']=function(_0x587c60,_0x3a21fc){return function(_0xbaadd6){try{var _0x494de6={'priority':_0x3a21fc[0x0]};var _0xd1607d=gotop[_0x6b73('0x0')](_0x494de6,{'typecast':!![]});if(_0xd1607d['length']){logger[_0x6b73('0x5')](_0x6b73('0x6'),_0x587c60,_[_0x6b73('0x7')](_0xd1607d,_0x6b73('0x8'))[_0x6b73('0x9')](',\x20'));_0xbaadd6[_0x6b73('0xa')]();}else{logger['info'](_0x6b73('0xb'),_0x587c60,_0x494de6[_0x6b73('0xc')]);if(_0x494de6['priority']){var _0x2b03f0=_[_0x6b73('0xd')](_0xbaadd6['rules'](),{'p':_0x494de6[_0x6b73('0xc')]});if(_0x2b03f0>=0x0){logger['info'](_0x6b73('0xe'),_0x587c60,_0x494de6[_0x6b73('0xc')]||_0x6b73('0xf'),_0x2b03f0);_0xbaadd6[_0x6b73('0xf')](_0x2b03f0);}else{logger['info']('[%s][GOTOP]\x20priority\x20%s\x20not\x20found',_0x587c60,_0x494de6[_0x6b73('0xc')]||_0x6b73('0xf'));_0xbaadd6[_0x6b73('0xa')]();}}else{_0xbaadd6['next']();}}}catch(_0x45bc9e){logger[_0x6b73('0x5')](_0x6b73('0x6'),_0x587c60,JSON['stringify'](_0x45bc9e));_0xbaadd6[_0x6b73('0xa')]();}};};
\ No newline at end of file
+var _0xdefd=['[%s][GOTOP]\x20priority\x20%s','priority','findIndex','rules','[%s][GOTOP]\x20priority\x20%s\x20found\x20at\x20index:\x20%s','next','[%s][GOTOP]\x20priority\x20%s\x20not\x20found','stringify','validate','lodash','../../../../config/logger','number','priority\x20is\x20a\x20number\x20and\x20it\x20is\x20required','consequence','error','[%s][GOTOP]\x20%s','map','message','join','stop','info'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xdefd,0x197));var _0xddef=function(_0x12df79,_0x5e0282){_0x12df79=_0x12df79-0x0;var _0x435759=_0xdefd[_0x12df79];return _0x435759;};'use strict';var schema=require(_0xddef('0x0'));var _=require(_0xddef('0x1'));var logger=require(_0xddef('0x2'))('routing');var gotop=schema({'priority':{'type':_0xddef('0x3'),'required':!![],'message':_0xddef('0x4')}});exports[_0xddef('0x5')]=function(_0x1f1795,_0x7fc393){return function(_0x295536){try{var _0x57a4bd={'priority':_0x7fc393[0x0]};var _0x57c3f2=gotop[_0xddef('0x0')](_0x57a4bd,{'typecast':!![]});if(_0x57c3f2['length']){logger[_0xddef('0x6')](_0xddef('0x7'),_0x1f1795,_[_0xddef('0x8')](_0x57c3f2,_0xddef('0x9'))[_0xddef('0xa')](',\x20'));_0x295536[_0xddef('0xb')]();}else{logger[_0xddef('0xc')](_0xddef('0xd'),_0x1f1795,_0x57a4bd['priority']);if(_0x57a4bd[_0xddef('0xe')]){var _0x4eb837=_[_0xddef('0xf')](_0x295536[_0xddef('0x10')](),{'p':_0x57a4bd[_0xddef('0xe')]});if(_0x4eb837>=0x0){logger[_0xddef('0xc')](_0xddef('0x11'),_0x1f1795,_0x57a4bd[_0xddef('0xe')]||_0xddef('0x12'),_0x4eb837);_0x295536[_0xddef('0x12')](_0x4eb837);}else{logger[_0xddef('0xc')](_0xddef('0x13'),_0x1f1795,_0x57a4bd[_0xddef('0xe')]||_0xddef('0x12'));_0x295536[_0xddef('0xb')]();}}else{_0x295536[_0xddef('0x12')]();}}}catch(_0x17c825){logger[_0xddef('0x6')](_0xddef('0x7'),_0x1f1795,JSON[_0xddef('0x14')](_0x17c825));_0x295536['stop']();}};};
\ No newline at end of file
index 5fb7ff1..824ee7c 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbf77=['catch','error','stringify','stop','lodash','./utils','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage','../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','contact','channel','chat','ChatWebsiteId','upperFirst','AccountId','account','InteractionId','interaction','create','then','info','[%s][MESSAGE]\x20%s','body','next'];(function(_0x4ec74e,_0x14d343){var _0xf1ddd1=function(_0xa68883){while(--_0xa68883){_0x4ec74e['push'](_0x4ec74e['shift']());}};_0xf1ddd1(++_0x14d343);}(_0xbf77,0xec));var _0x7bf7=function(_0xa148b7,_0x2f3eb2){_0xa148b7=_0xa148b7-0x0;var _0x51efd3=_0xbf77[_0xa148b7];return _0x51efd3;};'use strict';var _=require(_0x7bf7('0x0'));var utils=require(_0x7bf7('0x1'));var logger=require(_0x7bf7('0x2'))(_0x7bf7('0x3'));var rpc={'chatMessage':require(_0x7bf7('0x4')),'openchannelMessage':require(_0x7bf7('0x5')),'mailMessage':require(_0x7bf7('0x6')),'smsMessage':require(_0x7bf7('0x7')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0x7bf7('0x8'))};exports[_0x7bf7('0x9')]=function(_0x3c943a,_0x49dc52){return function(_0x2cf3f5){try{var _0x291c94={'body':utils['getMustacheRender'](_0x49dc52[0x0],this),'ContactId':this[_0x7bf7('0xa')]['id']};if(this[_0x7bf7('0xb')]===_0x7bf7('0xc')){_0x291c94[_0x7bf7('0xd')]=this['account']['id'];}else{_0x291c94[_[_0x7bf7('0xe')](this[_0x7bf7('0xb')])+_0x7bf7('0xf')]=this[_0x7bf7('0x10')]['id'];}_0x291c94[_[_0x7bf7('0xe')](this[_0x7bf7('0xb')])+_0x7bf7('0x11')]=this[_0x7bf7('0x12')]['id'];if(rpc[this[_0x7bf7('0xb')]+'Message']){return rpc[this[_0x7bf7('0xb')]+'Message'][_0x7bf7('0x13')](_0x291c94)[_0x7bf7('0x14')](function(_0x4df560){logger[_0x7bf7('0x15')](_0x7bf7('0x16'),_0x3c943a,_0x291c94[_0x7bf7('0x17')]);_0x2cf3f5[_0x7bf7('0x18')]();})[_0x7bf7('0x19')](function(_0x16c12d){logger[_0x7bf7('0x1a')](_0x7bf7('0x16'),_0x3c943a,JSON[_0x7bf7('0x1b')](_0x16c12d));_0x2cf3f5['stop']();});}}catch(_0x1f1ff4){logger[_0x7bf7('0x1a')]('[%s][MESSAGE]\x20%s',_0x3c943a,JSON[_0x7bf7('0x1b')](_0x1f1ff4));_0x2cf3f5[_0x7bf7('0x1c')]();}};};
\ No newline at end of file
+var _0xd48a=['../../rpc/smsMessage','../../rpc/whatsappMessage','consequence','contact','channel','chat','ChatWebsiteId','account','upperFirst','AccountId','InteractionId','interaction','Message','then','[%s][MESSAGE]\x20%s','body','catch','error','stop','stringify','lodash','../../../../config/logger','routing','../../rpc/chatMessage','../../rpc/openchannelMessage','../../rpc/mailMessage'];(function(_0x266ddc,_0x45aa52){var _0x39c1d7=function(_0x4cd07c){while(--_0x4cd07c){_0x266ddc['push'](_0x266ddc['shift']());}};_0x39c1d7(++_0x45aa52);}(_0xd48a,0x96));var _0xad48=function(_0xf705d,_0x276840){_0xf705d=_0xf705d-0x0;var _0x150b01=_0xd48a[_0xf705d];return _0x150b01;};'use strict';var _=require(_0xad48('0x0'));var utils=require('./utils');var logger=require(_0xad48('0x1'))(_0xad48('0x2'));var rpc={'chatMessage':require(_0xad48('0x3')),'openchannelMessage':require(_0xad48('0x4')),'mailMessage':require(_0xad48('0x5')),'smsMessage':require(_0xad48('0x6')),'faxMessage':require('../../rpc/faxMessage'),'whatsappMessage':require(_0xad48('0x7'))};exports[_0xad48('0x8')]=function(_0x58367b,_0x143780){return function(_0x584cf0){try{var _0x4e5e0d={'body':utils['getMustacheRender'](_0x143780[0x0],this),'ContactId':this[_0xad48('0x9')]['id']};if(this[_0xad48('0xa')]===_0xad48('0xb')){_0x4e5e0d[_0xad48('0xc')]=this[_0xad48('0xd')]['id'];}else{_0x4e5e0d[_[_0xad48('0xe')](this[_0xad48('0xa')])+_0xad48('0xf')]=this['account']['id'];}_0x4e5e0d[_[_0xad48('0xe')](this['channel'])+_0xad48('0x10')]=this[_0xad48('0x11')]['id'];if(rpc[this['channel']+_0xad48('0x12')]){return rpc[this[_0xad48('0xa')]+'Message']['create'](_0x4e5e0d)[_0xad48('0x13')](function(_0x3fafa0){logger['info'](_0xad48('0x14'),_0x58367b,_0x4e5e0d[_0xad48('0x15')]);_0x584cf0['next']();})[_0xad48('0x16')](function(_0xb798e0){logger[_0xad48('0x17')](_0xad48('0x14'),_0x58367b,JSON['stringify'](_0xb798e0));_0x584cf0[_0xad48('0x18')]();});}}catch(_0x54a20f){logger['error']('[%s][MESSAGE]\x20%s',_0x58367b,JSON[_0xad48('0x19')](_0x54a20f));_0x584cf0[_0xad48('0x18')]();}};};
\ No newline at end of file
index e82746c..284433b 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x5755=['error','./utils','consequence','[%s][NOOP]\x20%s','getMustacheRender','next'];(function(_0x44abae,_0x22e779){var _0x38d996=function(_0x3e9ccc){while(--_0x3e9ccc){_0x44abae['push'](_0x44abae['shift']());}};_0x38d996(++_0x22e779);}(_0x5755,0x6d));var _0x5575=function(_0x415f7e,_0x4630b6){_0x415f7e=_0x415f7e-0x0;var _0x311ff4=_0x5755[_0x415f7e];return _0x311ff4;};'use strict';var utils=require(_0x5575('0x0'));var logger=require('../../../../config/logger')('routing');exports[_0x5575('0x1')]=function(_0x42631a,_0x21bda5){return function(_0x3885a1){try{logger['info'](_0x5575('0x2'),_0x42631a,utils[_0x5575('0x3')](_0x21bda5[0x0],this));_0x3885a1[_0x5575('0x4')]();}catch(_0x5ea13d){logger[_0x5575('0x5')]('[%s][NOOP]\x20%s',_0x42631a,JSON['stringify'](_0x5ea13d));_0x3885a1['stop']();}};};
\ No newline at end of file
+var _0xb59e=['stringify','stop','./utils','../../../../config/logger','routing','consequence','info','next','error'];(function(_0x477a65,_0x574fe8){var _0x35c3e8=function(_0x11ae8a){while(--_0x11ae8a){_0x477a65['push'](_0x477a65['shift']());}};_0x35c3e8(++_0x574fe8);}(_0xb59e,0x89));var _0xeb59=function(_0x3b23c5,_0x5dbc8f){_0x3b23c5=_0x3b23c5-0x0;var _0xa8332e=_0xb59e[_0x3b23c5];return _0xa8332e;};'use strict';var utils=require(_0xeb59('0x0'));var logger=require(_0xeb59('0x1'))(_0xeb59('0x2'));exports[_0xeb59('0x3')]=function(_0xb65431,_0x46173f){return function(_0x105e60){try{logger[_0xeb59('0x4')]('[%s][NOOP]\x20%s',_0xb65431,utils['getMustacheRender'](_0x46173f[0x0],this));_0x105e60[_0xeb59('0x5')]();}catch(_0x265eb0){logger[_0xeb59('0x6')]('[%s][NOOP]\x20%s',_0xb65431,JSON[_0xeb59('0x7')](_0x265eb0));_0x105e60[_0xeb59('0x8')]();}};};
\ No newline at end of file
index 044aea1..2f99491 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbd11=['contact','list','upperFirst','channel','QueueId','InteractionId','interaction','MessageId','message','AccountId','WebsiteId','info','name','QueueReport','create','catch','waiting','YYYY-MM-DD\x20HH:mm:ss','accepted','[%s][STOP:QUEUE][NAME:%s]','update','error','update\x20queue\x20report','timeout','[%s][END:QUEUE][NAME:%s]','consequence','[%s][QUEUE]\x20%s','map','join','stop','find','Queues','createQueue','atimeout','qtimeout','rules','[%s][QUEUE]\x20ROUTING\x20STOPPED','complete','[%s][QUEUE]\x20APPLICATION\x20END','close','next','strategy','rrmemory','beepall','stack','validate','lodash','seq-queue','moment','ioredis','../../../../config/environment','./strategy','redis','defaults','localhost','socket.io-emitter','queue_id','account','queue','joinAt','emit','clone','format','%sQueuesWaitingInteractions','pick','%s_queue_waiting_interaction:%s','save','remove','../../rpc/mailQueueReport','../../rpc/smsQueueReport','../../rpc/faxQueueReport','../../rpc/whatsappQueueReport','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','body','from'];(function(_0x538036,_0x55cdbd){var _0x3f757b=function(_0x3c966f){while(--_0x3c966f){_0x538036['push'](_0x538036['shift']());}};_0x3f757b(++_0x55cdbd);}(_0xbd11,0xc5));var _0x1bd1=function(_0x5d6456,_0x58ecc7){_0x5d6456=_0x5d6456-0x0;var _0x4d66c1=_0xbd11[_0x5d6456];return _0x4d66c1;};'use strict';var schema=require(_0x1bd1('0x0'));var _=require(_0x1bd1('0x1'));var util=require('util');var seqqueue=require(_0x1bd1('0x2'));var moment=require(_0x1bd1('0x3'));var Redis=require(_0x1bd1('0x4'));var config=require(_0x1bd1('0x5'));var logger=require('../../../../config/logger')('routing');var strategy=require(_0x1bd1('0x6'));config[_0x1bd1('0x7')]=_[_0x1bd1('0x8')](config[_0x1bd1('0x7')],{'host':_0x1bd1('0x9'),'port':0x18eb});var io=require(_0x1bd1('0xa'))(new Redis(config[_0x1bd1('0x7')]));var attributes=['id',_0x1bd1('0xb'),_0x1bd1('0xc'),_0x1bd1('0xd'),'from',_0x1bd1('0xe')];function emit(_0x1c55b5,_0x37a436,_0x46baa3){io['to'](_0x1c55b5)[_0x1bd1('0xf')](_0x37a436,_0x46baa3);}function emitChannelQueueInteraction(_0x190fe8,_0x1920e9,_0x590ad6,_0x107e9f,_0x12da8a,_0x53179f,_0x4e4de1,_0x5a2f54){var _0x2af93a=_[_0x1bd1('0x10')](_0x590ad6);_0x2af93a[_0x1bd1('0xb')]=_0x5a2f54;_0x2af93a[_0x1bd1('0xd')]=_0x1920e9;_0x2af93a[_0x1bd1('0xc')]=_0x107e9f;_0x2af93a['id']=_0x12da8a;if(_0x53179f){_0x4e4de1[util[_0x1bd1('0x11')](_0x1bd1('0x12'),_0x190fe8)][_0x12da8a]=_[_0x1bd1('0x13')](_0x2af93a,attributes);}else{delete _0x4e4de1[util['format'](_0x1bd1('0x12'),_0x190fe8)][_0x12da8a];}emit(util[_0x1bd1('0x11')]('%s:queue:%s',_0x190fe8,_0x1920e9),util[_0x1bd1('0x11')](_0x1bd1('0x14'),_0x190fe8,_0x53179f?_0x1bd1('0x15'):_0x1bd1('0x16')),_['pick'](_0x2af93a,attributes));}var rpc={'openchannelQueueReport':require('../../rpc/openchannelQueueReport'),'mailQueueReport':require(_0x1bd1('0x17')),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0x1bd1('0x18')),'faxQueueReport':require(_0x1bd1('0x19')),'whatsappQueueReport':require(_0x1bd1('0x1a'))};var queue=schema({'name':{'type':'string','required':!![],'message':_0x1bd1('0x1b')},'timeout':{'type':_0x1bd1('0x1c'),'message':'timeout\x20is\x20a\x20number'}});function startRouting(_0xd4b06a,_0x1c3b87,_0xd0e88f,_0x5bfc43){if(_0xd4b06a&&_0x1c3b87&&_0xd0e88f){_0x1c3b87['waiting']+=0x1;var _0x31d8ea={'uniqueid':_0xd4b06a,'from':_0xd0e88f[_0x1bd1('0x1d')]?_0xd0e88f[_0x1bd1('0x1d')][_0x1bd1('0x1e')]:'','joinAt':moment()['format']('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0xd0e88f[_0x1bd1('0x1f')]?_0xd0e88f[_0x1bd1('0x1f')]['id']:null,'ListId':_0xd0e88f[_0x1bd1('0x20')]?_0xd0e88f[_0x1bd1('0x20')]['id']:null};_0x31d8ea[_[_0x1bd1('0x21')](_0xd0e88f[_0x1bd1('0x22')])+_0x1bd1('0x23')]=_0x1c3b87['id']||null;_0x31d8ea[_['upperFirst'](_0xd0e88f[_0x1bd1('0x22')])+_0x1bd1('0x24')]=_0xd0e88f['interaction']?_0xd0e88f[_0x1bd1('0x25')]['id']:null;_0x31d8ea[_[_0x1bd1('0x21')](_0xd0e88f[_0x1bd1('0x22')])+_0x1bd1('0x26')]=_0xd0e88f[_0x1bd1('0x27')]?_0xd0e88f[_0x1bd1('0x27')]['id']:null;_0x31d8ea[_[_0x1bd1('0x21')](_0xd0e88f[_0x1bd1('0x22')])+(_0xd0e88f[_0x1bd1('0x22')]!=='chat'?_0x1bd1('0x28'):_0x1bd1('0x29'))]=_0xd0e88f['account']?_0xd0e88f['account']['id']:null;logger[_0x1bd1('0x2a')](util[_0x1bd1('0x11')]('[%s][START:QUEUE][NAME:%s]',_0xd4b06a,_0x1c3b87[_0x1bd1('0x2b')]));emitChannelQueueInteraction(_0xd0e88f[_0x1bd1('0x22')],_0x1c3b87[_0x1bd1('0x2b')],_0x31d8ea,_0xd0e88f[_0x1bd1('0xc')][_0x1bd1('0x2b')],_0xd0e88f[_0x1bd1('0x27')]['id'],!![],_0x5bfc43,_0x1c3b87['id']);if(rpc[_0xd0e88f[_0x1bd1('0x22')]+'QueueReport']){return rpc[_0xd0e88f[_0x1bd1('0x22')]+_0x1bd1('0x2c')][_0x1bd1('0x2d')](_0x31d8ea)[_0x1bd1('0x2e')](function(_0x43861c){logger['error']('create\x20queue\x20report');});}}}function stopRouting(_0x27b0af,_0x3cfecb,_0x4e89b8,_0x205d34){if(_0x27b0af&&_0x3cfecb){_0x3cfecb[_0x1bd1('0x2f')]-=0x1;var _0x256e31={'leaveAt':moment()[_0x1bd1('0x11')](_0x1bd1('0x30')),'acceptAt':moment()[_0x1bd1('0x11')](_0x1bd1('0x30')),'reason':_0x1bd1('0x31')};logger[_0x1bd1('0x2a')](util[_0x1bd1('0x11')](_0x1bd1('0x32'),_0x27b0af,_0x3cfecb['name']));emitChannelQueueInteraction(_0x4e89b8['channel'],_0x3cfecb['name'],_0x4e89b8[_0x1bd1('0x1d')],_0x4e89b8['account'][_0x1bd1('0x2b')],_0x4e89b8[_0x1bd1('0x27')]['id'],![],_0x205d34,_0x3cfecb['id']);if(rpc[_0x4e89b8[_0x1bd1('0x22')]+_0x1bd1('0x2c')]){return rpc[_0x4e89b8[_0x1bd1('0x22')]+'QueueReport'][_0x1bd1('0x33')](_0x27b0af,_0x256e31)[_0x1bd1('0x2e')](function(_0x1411fd){logger[_0x1bd1('0x34')](_0x1bd1('0x35'));});}}}function endRouting(_0x54546a,_0x4edf08,_0x3869fb,_0x415c88){if(_0x54546a&&_0x4edf08){_0x4edf08['waiting']-=0x1;var _0x22dd97={'leaveAt':moment()[_0x1bd1('0x11')](_0x1bd1('0x30')),'exitAt':moment()[_0x1bd1('0x11')]('YYYY-MM-DD\x20HH:mm:ss'),'reason':_0x1bd1('0x36')};logger[_0x1bd1('0x2a')](util[_0x1bd1('0x11')](_0x1bd1('0x37'),_0x54546a,_0x4edf08[_0x1bd1('0x2b')]));emitChannelQueueInteraction(_0x3869fb[_0x1bd1('0x22')],_0x4edf08[_0x1bd1('0x2b')],_0x3869fb[_0x1bd1('0x1d')],_0x3869fb[_0x1bd1('0xc')][_0x1bd1('0x2b')],_0x3869fb[_0x1bd1('0x27')]['id'],![],_0x415c88);if(rpc[_0x3869fb['channel']+_0x1bd1('0x2c')]){return rpc[_0x3869fb[_0x1bd1('0x22')]+_0x1bd1('0x2c')][_0x1bd1('0x33')](_0x54546a,_0x22dd97)[_0x1bd1('0x2e')](function(_0x18c070){logger[_0x1bd1('0x34')](_0x1bd1('0x35'));});}}}function handleFindQueue(_0x107ab1){return function(_0x32dcb9){return _0x32dcb9[_0x1bd1('0x2b')]['toLowerCase']()===_0x107ab1['toLowerCase']();};}exports[_0x1bd1('0x38')]=function(_0x475f7d,_0xcdd7f1,_0x8c1ff5,_0x31680d){return function(_0x26fad7){try{var _0x55bda5={'name':_0xcdd7f1[0x0],'timeout':_0xcdd7f1[0x1]};var _0x387fb7=queue['validate'](_0x55bda5,{'typecast':!![]});if(_0x387fb7['length']){logger['error'](_0x1bd1('0x39'),_0x475f7d,_[_0x1bd1('0x3a')](_0x387fb7,_0x1bd1('0x27'))[_0x1bd1('0x3b')](',\x20'));_0x26fad7[_0x1bd1('0x3c')]();}else{var _0x20b3d9=_[_0x1bd1('0x3d')](_0x8c1ff5[_0x31680d[_0x1bd1('0x22')]+_0x1bd1('0x3e')],handleFindQueue(_0x55bda5[_0x1bd1('0x2b')]));if(_0x20b3d9){startRouting(_0x475f7d,_0x20b3d9,_0x31680d,_0x8c1ff5);var _0x47d946=(_0x20b3d9[_0x1bd1('0x36')]||0xa)*0x3e8;var _0x319726=(_0x55bda5[_0x1bd1('0x36')]||0x14)*0x3e8;var _0x30e6d1,_0xf74b4c;if(_0x47d946>_0x319726){_0x319726=_0x47d946;}var _0x5cf479=seqqueue[_0x1bd1('0x3f')](_0x47d946);_0x5cf479['id']=_0x475f7d;_0x5cf479[_0x1bd1('0x40')]=_0x47d946;_0x5cf479[_0x1bd1('0x41')]=_0x319726;_0x5cf479[_0x1bd1('0x22')]=_0x31680d[_0x1bd1('0x22')];_0x8c1ff5[_0x1bd1('0x42')][_0x475f7d]['on']('end',function(){logger[_0x1bd1('0x2a')](_0x1bd1('0x43'),_0x475f7d);stopRouting(_0x475f7d,_0x20b3d9,_0x31680d,_0x8c1ff5);clearTimeout(_0x30e6d1);_0x30e6d1=undefined;_0x5cf479['close'](!![]);if(_0x8c1ff5[_0x1bd1('0x42')][_0x475f7d]){delete _0x8c1ff5[_0x1bd1('0x42')][_0x475f7d];}_0x26fad7[_0x1bd1('0x3c')]();});_0x8c1ff5[_0x1bd1('0x42')][_0x475f7d]['on'](_0x1bd1('0x44'),function(){if(_0x8c1ff5['rules'][_0x475f7d]){delete _0x8c1ff5[_0x1bd1('0x42')][_0x475f7d];}});_0x30e6d1=setTimeout(function(){logger['info'](_0x1bd1('0x45'),_0x475f7d);endRouting(_0x475f7d,_0x20b3d9,_0x31680d,_0x8c1ff5);clearTimeout(_0x30e6d1);_0x5cf479[_0x1bd1('0x46')](!![]);_0x26fad7[_0x1bd1('0x47')]();},_0x319726);switch(_0x20b3d9[_0x1bd1('0x48')]){case _0x1bd1('0x49'):strategy[_0x1bd1('0x49')](_0x5cf479,_0x20b3d9,_0x8c1ff5,_0x31680d);break;default:strategy[_0x1bd1('0x4a')](_0x5cf479,_0x20b3d9,_0x8c1ff5,_0x31680d);}}else{logger[_0x1bd1('0x34')]('[%s][QUEUE]\x20queue\x20not\x20found\x20%s',_0x475f7d,_0x55bda5[_0x1bd1('0x2b')]);_0x26fad7[_0x1bd1('0x3c')]();}}}catch(_0x227ab6){console['log'](_0x227ab6);logger[_0x1bd1('0x34')](_0x1bd1('0x39'),_0x475f7d,_0x227ab6[_0x1bd1('0x4b')]);_0x26fad7[_0x1bd1('0x3c')]();}};};
\ No newline at end of file
+var _0x21bb=['pick','%sQueuesWaitingInteractions','%s:queue:%s','%s_queue_waiting_interaction:%s','remove','../../rpc/openchannelQueueReport','../../rpc/smsQueueReport','../../rpc/whatsappQueueReport','string','name\x20is\x20a\x20string\x20and\x20it\x20is\x20required','number','timeout\x20is\x20a\x20number','body','contact','list','channel','upperFirst','InteractionId','interaction','MessageId','message','chat','AccountId','info','[%s][START:QUEUE][NAME:%s]','name','QueueReport','create','catch','error','create\x20queue\x20report','YYYY-MM-DD\x20HH:mm:ss','accepted','[%s][STOP:QUEUE][NAME:%s]','update','update\x20queue\x20report','waiting','timeout','[%s][END:QUEUE][NAME:%s]','toLowerCase','consequence','length','[%s][QUEUE]\x20%s','map','stop','find','createQueue','atimeout','qtimeout','rules','end','close','complete','strategy','rrmemory','beepall','[%s][QUEUE]\x20queue\x20not\x20found\x20%s','log','stack','lodash','util','seq-queue','ioredis','../../../../config/environment','routing','./strategy','redis','defaults','localhost','queue_id','account','from','joinAt','emit','clone','format'];(function(_0x3203a1,_0x46c498){var _0x24215e=function(_0x4ffab0){while(--_0x4ffab0){_0x3203a1['push'](_0x3203a1['shift']());}};_0x24215e(++_0x46c498);}(_0x21bb,0x16b));var _0xb21b=function(_0x5143ba,_0x256eb6){_0x5143ba=_0x5143ba-0x0;var _0x441e77=_0x21bb[_0x5143ba];return _0x441e77;};'use strict';var schema=require('validate');var _=require(_0xb21b('0x0'));var util=require(_0xb21b('0x1'));var seqqueue=require(_0xb21b('0x2'));var moment=require('moment');var Redis=require(_0xb21b('0x3'));var config=require(_0xb21b('0x4'));var logger=require('../../../../config/logger')(_0xb21b('0x5'));var strategy=require(_0xb21b('0x6'));config[_0xb21b('0x7')]=_[_0xb21b('0x8')](config[_0xb21b('0x7')],{'host':_0xb21b('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));var attributes=['id',_0xb21b('0xa'),_0xb21b('0xb'),'queue',_0xb21b('0xc'),_0xb21b('0xd')];function emit(_0xbebf51,_0x287293,_0x40c58b){io['to'](_0xbebf51)[_0xb21b('0xe')](_0x287293,_0x40c58b);}function emitChannelQueueInteraction(_0x557cab,_0xa6037c,_0x408a5,_0x52f1ff,_0x3a77cc,_0x95a184,_0x4b7474,_0x43f51b){var _0x4d5e87=_[_0xb21b('0xf')](_0x408a5);_0x4d5e87[_0xb21b('0xa')]=_0x43f51b;_0x4d5e87['queue']=_0xa6037c;_0x4d5e87[_0xb21b('0xb')]=_0x52f1ff;_0x4d5e87['id']=_0x3a77cc;if(_0x95a184){_0x4b7474[util[_0xb21b('0x10')]('%sQueuesWaitingInteractions',_0x557cab)][_0x3a77cc]=_[_0xb21b('0x11')](_0x4d5e87,attributes);}else{delete _0x4b7474[util[_0xb21b('0x10')](_0xb21b('0x12'),_0x557cab)][_0x3a77cc];}emit(util[_0xb21b('0x10')](_0xb21b('0x13'),_0x557cab,_0xa6037c),util[_0xb21b('0x10')](_0xb21b('0x14'),_0x557cab,_0x95a184?'save':_0xb21b('0x15')),_[_0xb21b('0x11')](_0x4d5e87,attributes));}var rpc={'openchannelQueueReport':require(_0xb21b('0x16')),'mailQueueReport':require('../../rpc/mailQueueReport'),'chatQueueReport':require('../../rpc/chatQueueReport'),'smsQueueReport':require(_0xb21b('0x17')),'faxQueueReport':require('../../rpc/faxQueueReport'),'whatsappQueueReport':require(_0xb21b('0x18'))};var queue=schema({'name':{'type':_0xb21b('0x19'),'required':!![],'message':_0xb21b('0x1a')},'timeout':{'type':_0xb21b('0x1b'),'message':_0xb21b('0x1c')}});function startRouting(_0x253303,_0x553cb7,_0x55337a,_0x187aa4){if(_0x253303&&_0x553cb7&&_0x55337a){_0x553cb7['waiting']+=0x1;var _0x265d89={'uniqueid':_0x253303,'from':_0x55337a[_0xb21b('0x1d')]?_0x55337a['body'][_0xb21b('0xc')]:'','joinAt':moment()[_0xb21b('0x10')]('YYYY-MM-DD\x20HH:mm:ss'),'ContactId':_0x55337a[_0xb21b('0x1e')]?_0x55337a[_0xb21b('0x1e')]['id']:null,'ListId':_0x55337a[_0xb21b('0x1f')]?_0x55337a[_0xb21b('0x1f')]['id']:null};_0x265d89[_['upperFirst'](_0x55337a[_0xb21b('0x20')])+'QueueId']=_0x553cb7['id']||null;_0x265d89[_[_0xb21b('0x21')](_0x55337a[_0xb21b('0x20')])+_0xb21b('0x22')]=_0x55337a[_0xb21b('0x23')]?_0x55337a['interaction']['id']:null;_0x265d89[_[_0xb21b('0x21')](_0x55337a[_0xb21b('0x20')])+_0xb21b('0x24')]=_0x55337a['message']?_0x55337a[_0xb21b('0x25')]['id']:null;_0x265d89[_['upperFirst'](_0x55337a[_0xb21b('0x20')])+(_0x55337a[_0xb21b('0x20')]!==_0xb21b('0x26')?_0xb21b('0x27'):'WebsiteId')]=_0x55337a['account']?_0x55337a[_0xb21b('0xb')]['id']:null;logger[_0xb21b('0x28')](util[_0xb21b('0x10')](_0xb21b('0x29'),_0x253303,_0x553cb7[_0xb21b('0x2a')]));emitChannelQueueInteraction(_0x55337a[_0xb21b('0x20')],_0x553cb7[_0xb21b('0x2a')],_0x265d89,_0x55337a[_0xb21b('0xb')][_0xb21b('0x2a')],_0x55337a[_0xb21b('0x25')]['id'],!![],_0x187aa4,_0x553cb7['id']);if(rpc[_0x55337a[_0xb21b('0x20')]+_0xb21b('0x2b')]){return rpc[_0x55337a['channel']+_0xb21b('0x2b')][_0xb21b('0x2c')](_0x265d89)[_0xb21b('0x2d')](function(_0x2cf4ab){logger[_0xb21b('0x2e')](_0xb21b('0x2f'));});}}}function stopRouting(_0x4b091b,_0x256913,_0x142aec,_0x466957){if(_0x4b091b&&_0x256913){_0x256913['waiting']-=0x1;var _0x1ea3c5={'leaveAt':moment()[_0xb21b('0x10')](_0xb21b('0x30')),'acceptAt':moment()[_0xb21b('0x10')](_0xb21b('0x30')),'reason':_0xb21b('0x31')};logger['info'](util[_0xb21b('0x10')](_0xb21b('0x32'),_0x4b091b,_0x256913[_0xb21b('0x2a')]));emitChannelQueueInteraction(_0x142aec[_0xb21b('0x20')],_0x256913[_0xb21b('0x2a')],_0x142aec[_0xb21b('0x1d')],_0x142aec[_0xb21b('0xb')][_0xb21b('0x2a')],_0x142aec[_0xb21b('0x25')]['id'],![],_0x466957,_0x256913['id']);if(rpc[_0x142aec['channel']+_0xb21b('0x2b')]){return rpc[_0x142aec[_0xb21b('0x20')]+'QueueReport'][_0xb21b('0x33')](_0x4b091b,_0x1ea3c5)[_0xb21b('0x2d')](function(_0x81f681){logger[_0xb21b('0x2e')](_0xb21b('0x34'));});}}}function endRouting(_0xd188aa,_0x3cc03d,_0x55fe34,_0x210911){if(_0xd188aa&&_0x3cc03d){_0x3cc03d[_0xb21b('0x35')]-=0x1;var _0x439903={'leaveAt':moment()[_0xb21b('0x10')]('YYYY-MM-DD\x20HH:mm:ss'),'exitAt':moment()[_0xb21b('0x10')](_0xb21b('0x30')),'reason':_0xb21b('0x36')};logger[_0xb21b('0x28')](util[_0xb21b('0x10')](_0xb21b('0x37'),_0xd188aa,_0x3cc03d[_0xb21b('0x2a')]));emitChannelQueueInteraction(_0x55fe34['channel'],_0x3cc03d[_0xb21b('0x2a')],_0x55fe34[_0xb21b('0x1d')],_0x55fe34[_0xb21b('0xb')][_0xb21b('0x2a')],_0x55fe34[_0xb21b('0x25')]['id'],![],_0x210911);if(rpc[_0x55fe34[_0xb21b('0x20')]+_0xb21b('0x2b')]){return rpc[_0x55fe34['channel']+'QueueReport'][_0xb21b('0x33')](_0xd188aa,_0x439903)[_0xb21b('0x2d')](function(_0x664693){logger[_0xb21b('0x2e')](_0xb21b('0x34'));});}}}function handleFindQueue(_0x178d85){return function(_0x5b2ec7){return _0x5b2ec7[_0xb21b('0x2a')][_0xb21b('0x38')]()===_0x178d85[_0xb21b('0x38')]();};}exports[_0xb21b('0x39')]=function(_0x3506e5,_0x128ab7,_0x2a2830,_0x2e6c80){return function(_0x2980a5){try{var _0x5986f0={'name':_0x128ab7[0x0],'timeout':_0x128ab7[0x1]};var _0x3b9634=queue['validate'](_0x5986f0,{'typecast':!![]});if(_0x3b9634[_0xb21b('0x3a')]){logger['error'](_0xb21b('0x3b'),_0x3506e5,_[_0xb21b('0x3c')](_0x3b9634,_0xb21b('0x25'))['join'](',\x20'));_0x2980a5[_0xb21b('0x3d')]();}else{var _0x42ee0f=_[_0xb21b('0x3e')](_0x2a2830[_0x2e6c80[_0xb21b('0x20')]+'Queues'],handleFindQueue(_0x5986f0[_0xb21b('0x2a')]));if(_0x42ee0f){startRouting(_0x3506e5,_0x42ee0f,_0x2e6c80,_0x2a2830);var _0x448824=(_0x42ee0f['timeout']||0xa)*0x3e8;var _0xf3afa5=(_0x5986f0[_0xb21b('0x36')]||0x14)*0x3e8;var _0x5a4100,_0x1365b4;if(_0x448824>_0xf3afa5){_0xf3afa5=_0x448824;}var _0x5cf9c0=seqqueue[_0xb21b('0x3f')](_0x448824);_0x5cf9c0['id']=_0x3506e5;_0x5cf9c0[_0xb21b('0x40')]=_0x448824;_0x5cf9c0[_0xb21b('0x41')]=_0xf3afa5;_0x5cf9c0['channel']=_0x2e6c80['channel'];_0x2a2830[_0xb21b('0x42')][_0x3506e5]['on'](_0xb21b('0x43'),function(){logger[_0xb21b('0x28')]('[%s][QUEUE]\x20ROUTING\x20STOPPED',_0x3506e5);stopRouting(_0x3506e5,_0x42ee0f,_0x2e6c80,_0x2a2830);clearTimeout(_0x5a4100);_0x5a4100=undefined;_0x5cf9c0[_0xb21b('0x44')](!![]);if(_0x2a2830[_0xb21b('0x42')][_0x3506e5]){delete _0x2a2830['rules'][_0x3506e5];}_0x2980a5[_0xb21b('0x3d')]();});_0x2a2830['rules'][_0x3506e5]['on'](_0xb21b('0x45'),function(){if(_0x2a2830[_0xb21b('0x42')][_0x3506e5]){delete _0x2a2830[_0xb21b('0x42')][_0x3506e5];}});_0x5a4100=setTimeout(function(){logger['info']('[%s][QUEUE]\x20APPLICATION\x20END',_0x3506e5);endRouting(_0x3506e5,_0x42ee0f,_0x2e6c80,_0x2a2830);clearTimeout(_0x5a4100);_0x5cf9c0['close'](!![]);_0x2980a5['next']();},_0xf3afa5);switch(_0x42ee0f[_0xb21b('0x46')]){case _0xb21b('0x47'):strategy[_0xb21b('0x47')](_0x5cf9c0,_0x42ee0f,_0x2a2830,_0x2e6c80);break;default:strategy[_0xb21b('0x48')](_0x5cf9c0,_0x42ee0f,_0x2a2830,_0x2e6c80);}}else{logger[_0xb21b('0x2e')](_0xb21b('0x49'),_0x3506e5,_0x5986f0['name']);_0x2980a5[_0xb21b('0x3d')]();}}}catch(_0x360641){console[_0xb21b('0x4a')](_0x360641);logger[_0xb21b('0x2e')](_0xb21b('0x3b'),_0x3506e5,_0x360641[_0xb21b('0x4b')]);_0x2980a5['stop']();}};};
\ No newline at end of file
index 539deae..1e2e1ea 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x12e9=['agent','push','handleRun','handleTimeout','bind','timeout','drained','handleDrained','prototype','[%s][AGENT]\x20try\x20with\x20%s','isNil','realtime','agents','info','[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s','forcedOwnership','isAgentAvailable','busyQueue','showNotification','writeLog','RINGING','busy','STOP','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue'];(function(_0x39f60c,_0x53ce1d){var _0x25c011=function(_0x3df665){while(--_0x3df665){_0x39f60c['push'](_0x39f60c['shift']());}};_0x25c011(++_0x53ce1d);}(_0x12e9,0x119));var _0x912e=function(_0x1599e6,_0x43ed40){_0x1599e6=_0x1599e6-0x0;var _0x170360=_0x12e9[_0x1599e6];return _0x170360;};'use strict';var _=require(_0x912e('0x0'));var uuid=require(_0x912e('0x1'));var util=require(_0x912e('0x2'));var logger=require(_0x912e('0x3'))(_0x912e('0x4'));var Agent=function(_0x474b29,_0x14b03f,_0x2eb829,_0x31c504){this[_0x912e('0x5')]=uuid['v4']();this[_0x912e('0x6')]=_0x474b29;this[_0x912e('0x7')]=_0x14b03f;this['realtime']=_0x2eb829;this[_0x912e('0x4')]=_0x31c504;this[_0x912e('0x6')][_0x912e('0x8')](this[_0x912e('0x9')]['bind'](this),this[_0x912e('0xa')][_0x912e('0xb')](this));this[_0x912e('0x6')]['on'](_0x912e('0xc'),this[_0x912e('0xa')][_0x912e('0xb')](this));this[_0x912e('0x6')]['on'](_0x912e('0xd'),this[_0x912e('0xe')][_0x912e('0xb')](this));};Agent['prototype'][_0x912e('0x8')]=function(){this[_0x912e('0x6')][_0x912e('0x8')](this[_0x912e('0x9')]['bind'](this),this[_0x912e('0xa')][_0x912e('0xb')](this));};Agent[_0x912e('0xf')][_0x912e('0xe')]=function(){this[_0x912e('0xa')](!![]);};Agent[_0x912e('0xf')][_0x912e('0x9')]=function(_0x2a7d38){logger['info'](_0x912e('0x10'),this[_0x912e('0x6')]['id'],this['agent']['id']);if(_[_0x912e('0x11')](this[_0x912e('0x12')][_0x912e('0x13')][this[_0x912e('0x7')]['id']])){logger[_0x912e('0x14')](_0x912e('0x15'),this[_0x912e('0x6')]['id'],this[_0x912e('0x7')]['id']);setTimeout(this[_0x912e('0x8')][_0x912e('0xb')](this),0x3e8);}else{if(this[_0x912e('0x4')][_0x912e('0x16')]||util[_0x912e('0x17')](this['squeue']['id'],this[_0x912e('0x12')][_0x912e('0x13')][this[_0x912e('0x7')]['id']],this[_0x912e('0x6')]['channel'],![])){this['realtime'][_0x912e('0x13')][this[_0x912e('0x7')]['id']]['busy']=!![];this[_0x912e('0x12')][_0x912e('0x13')][this[_0x912e('0x7')]['id']][_0x912e('0x18')]=undefined;util[_0x912e('0x19')](this['notificationId'],this[_0x912e('0x6')]['id'],this[_0x912e('0x12')][_0x912e('0x13')][this['agent']['id']],null,this[_0x912e('0x4')]);util[_0x912e('0x1a')](this['squeue']['id'],this[_0x912e('0x12')][_0x912e('0x13')][this[_0x912e('0x7')]['id']],_0x912e('0x1b')+(this[_0x912e('0x4')]['forcedOwnership']?':FORCED':''));}else{logger[_0x912e('0x14')]('[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available',this[_0x912e('0x6')]['id'],this[_0x912e('0x7')]['id']);setTimeout(this[_0x912e('0x8')][_0x912e('0xb')](this),0x3e8);}}};Agent[_0x912e('0xf')][_0x912e('0xa')]=function(_0x19f362){if(_['isNil'](this[_0x912e('0x12')][_0x912e('0x13')][this[_0x912e('0x7')]['id']])){return logger['info']('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this['squeue']['id'],this[_0x912e('0x7')]['id']);}else{logger['info']('[%s][AGENT]\x20timeout\x20with\x20%s',this['squeue']['id'],this['agent']['id']);util['hideNotification'](this['notificationId'],this[_0x912e('0x6')]['id'],this[_0x912e('0x12')]['agents'][this[_0x912e('0x7')]['id']],null,this[_0x912e('0x4')]);this[_0x912e('0x12')][_0x912e('0x13')][this[_0x912e('0x7')]['id']][_0x912e('0x1c')]=![];this['realtime'][_0x912e('0x13')][this[_0x912e('0x7')]['id']][_0x912e('0x18')]=undefined;util[_0x912e('0x1a')](this[_0x912e('0x6')]['id'],this[_0x912e('0x12')]['agents'][this[_0x912e('0x7')]['id']],_0x19f362?_0x912e('0x1d'):_0x912e('0x1e'));}if(!_0x19f362){setTimeout(this[_0x912e('0x8')][_0x912e('0xb')](this),0x3e8);}};function agent(_0xcd0130,_0x26ad23,_0x41ef6d,_0x257a7c){return new Agent(_0xcd0130,_0x26ad23,_0x41ef6d,_0x257a7c);}module[_0x912e('0x1f')]=agent;
\ No newline at end of file
+var _0x1553=['routing','notificationId','squeue','agent','realtime','push','handleRun','bind','timeout','handleTimeout','drained','prototype','handleDrained','[%s][AGENT]\x20try\x20with\x20%s','isNil','agents','forcedOwnership','channel','busy','busyQueue','showNotification','writeLog','RINGING',':FORCED','debug','hideNotification','TIMEOUT','exports','uuid','./util','../../../../../config/logger'];(function(_0x152121,_0x120c53){var _0x592a85=function(_0x241cab){while(--_0x241cab){_0x152121['push'](_0x152121['shift']());}};_0x592a85(++_0x120c53);}(_0x1553,0x133));var _0x3155=function(_0x50d2db,_0x47481f){_0x50d2db=_0x50d2db-0x0;var _0x1c7e27=_0x1553[_0x50d2db];return _0x1c7e27;};'use strict';var _=require('lodash');var uuid=require(_0x3155('0x0'));var util=require(_0x3155('0x1'));var logger=require(_0x3155('0x2'))(_0x3155('0x3'));var Agent=function(_0x2241cc,_0x1c3340,_0x2c3fc8,_0x14f207){this[_0x3155('0x4')]=uuid['v4']();this[_0x3155('0x5')]=_0x2241cc;this[_0x3155('0x6')]=_0x1c3340;this[_0x3155('0x7')]=_0x2c3fc8;this[_0x3155('0x3')]=_0x14f207;this[_0x3155('0x5')][_0x3155('0x8')](this[_0x3155('0x9')][_0x3155('0xa')](this),this['handleTimeout']['bind'](this));this[_0x3155('0x5')]['on'](_0x3155('0xb'),this[_0x3155('0xc')][_0x3155('0xa')](this));this[_0x3155('0x5')]['on'](_0x3155('0xd'),this['handleDrained'][_0x3155('0xa')](this));};Agent[_0x3155('0xe')][_0x3155('0x8')]=function(){this[_0x3155('0x5')][_0x3155('0x8')](this['handleRun'][_0x3155('0xa')](this),this['handleTimeout']['bind'](this));};Agent[_0x3155('0xe')][_0x3155('0xf')]=function(){this[_0x3155('0xc')](!![]);};Agent[_0x3155('0xe')][_0x3155('0x9')]=function(){logger['debug'](_0x3155('0x10'),this[_0x3155('0x5')]['id'],this['agent']['id']);if(_[_0x3155('0x11')](this[_0x3155('0x7')][_0x3155('0x12')][this[_0x3155('0x6')]['id']])){logger['debug']('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x3155('0x5')]['id'],this[_0x3155('0x6')]['id']);setTimeout(this[_0x3155('0x8')]['bind'](this),0x3e8);}else{if(this[_0x3155('0x3')][_0x3155('0x13')]||util['isAgentAvailable'](this['squeue']['id'],this[_0x3155('0x7')][_0x3155('0x12')][this[_0x3155('0x6')]['id']],this[_0x3155('0x5')][_0x3155('0x14')],![])){this['realtime'][_0x3155('0x12')][this[_0x3155('0x6')]['id']][_0x3155('0x15')]=!![];this['realtime'][_0x3155('0x12')][this[_0x3155('0x6')]['id']][_0x3155('0x16')]=undefined;util[_0x3155('0x17')](this[_0x3155('0x4')],this['squeue']['id'],this[_0x3155('0x7')][_0x3155('0x12')][this[_0x3155('0x6')]['id']],null,this[_0x3155('0x3')]);util[_0x3155('0x18')](this[_0x3155('0x5')]['id'],this[_0x3155('0x7')]['agents'][this[_0x3155('0x6')]['id']],_0x3155('0x19')+(this[_0x3155('0x3')][_0x3155('0x13')]?_0x3155('0x1a'):''));}else{logger[_0x3155('0x1b')]('[%s][AGENT]\x20agent\x20%s\x20is\x20not\x20available',this[_0x3155('0x5')]['id'],this[_0x3155('0x6')]['id']);setTimeout(this['push']['bind'](this),0x3e8);}}};Agent[_0x3155('0xe')][_0x3155('0xc')]=function(_0xcd32d){if(_[_0x3155('0x11')](this[_0x3155('0x7')][_0x3155('0x12')][this[_0x3155('0x6')]['id']])){return logger[_0x3155('0x1b')]('[%s][AGENT]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x3155('0x5')]['id'],this[_0x3155('0x6')]['id']);}else{logger[_0x3155('0x1b')]('[%s][AGENT]\x20timeout\x20with\x20%s',this['squeue']['id'],this['agent']['id']);util[_0x3155('0x1c')](this[_0x3155('0x4')],this[_0x3155('0x5')]['id'],this[_0x3155('0x7')][_0x3155('0x12')][this[_0x3155('0x6')]['id']],null,this[_0x3155('0x3')]);this['realtime'][_0x3155('0x12')][this[_0x3155('0x6')]['id']][_0x3155('0x15')]=![];this[_0x3155('0x7')]['agents'][this[_0x3155('0x6')]['id']]['busyQueue']=undefined;util[_0x3155('0x18')](this[_0x3155('0x5')]['id'],this[_0x3155('0x7')][_0x3155('0x12')][this[_0x3155('0x6')]['id']],_0xcd32d?'STOP':_0x3155('0x1d'));}if(!_0xcd32d){setTimeout(this['push']['bind'](this),0x3e8);}};function agent(_0x463084,_0x1a3597,_0x4c1208,_0x3521a6){return new Agent(_0x463084,_0x1a3597,_0x4c1208,_0x3521a6);}module[_0x3155('0x1e')]=agent;
\ No newline at end of file
index d7cb1bf..937a7ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2e8a=['name','showNotification','notificationId','hideNotification','STOP','TIMEOUT','busy','uuid','./util','routing','realtime','squeue','handleRun','bind','handleTimeout','timeout','drained','handleDrained','push','prototype','isNil','queue','Agents','length','agents','info','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','writeLog','RINGING','busyQueue'];(function(_0xb30eb,_0x744b17){var _0x543809=function(_0xe9b8eb){while(--_0xe9b8eb){_0xb30eb['push'](_0xb30eb['shift']());}};_0x543809(++_0x744b17);}(_0x2e8a,0xc7));var _0xa2e8=function(_0x13992d,_0x3029ea){_0x13992d=_0x13992d-0x0;var _0x3d15bf=_0x2e8a[_0x13992d];return _0x3d15bf;};'use strict';var _=require('lodash');var uuid=require(_0xa2e8('0x0'));var util=require(_0xa2e8('0x1'));var logger=require('../../../../../config/logger')(_0xa2e8('0x2'));var Beepall=function(_0x2b63d9,_0x4b770c,_0x426f9e,_0x522e76){this['notificationId']=uuid['v4']();this['squeue']=_0x2b63d9;this['queue']=_0x4b770c;this[_0xa2e8('0x3')]=_0x426f9e;this[_0xa2e8('0x2')]=_0x522e76;this[_0xa2e8('0x4')]['push'](this[_0xa2e8('0x5')][_0xa2e8('0x6')](this),this[_0xa2e8('0x7')][_0xa2e8('0x6')](this));this['squeue']['on'](_0xa2e8('0x8'),this['handleTimeout'][_0xa2e8('0x6')](this));this[_0xa2e8('0x4')]['on'](_0xa2e8('0x9'),this[_0xa2e8('0xa')][_0xa2e8('0x6')](this));};Beepall['prototype'][_0xa2e8('0xb')]=function(){this[_0xa2e8('0x4')]['push'](this[_0xa2e8('0x5')]['bind'](this),this[_0xa2e8('0x7')][_0xa2e8('0x6')](this));};Beepall[_0xa2e8('0xc')]['handleDrained']=function(_0x4d03bc){this['handleTimeout'](!![]);};Beepall[_0xa2e8('0xc')]['handleRun']=function(_0x2fdb19){var _0x51494d=!![];if(!_[_0xa2e8('0xd')](this[_0xa2e8('0xe')])&&!_[_0xa2e8('0xd')](this[_0xa2e8('0xe')][_0xa2e8('0xf')])&&this[_0xa2e8('0xe')]['Agents'][_0xa2e8('0x10')]>0x0){for(var _0x53ca1f=0x0,_0x4dfb8c;_0x53ca1f<this[_0xa2e8('0xe')][_0xa2e8('0xf')][_0xa2e8('0x10')];_0x53ca1f+=0x1){_0x4dfb8c=this[_0xa2e8('0xe')][_0xa2e8('0xf')][_0x53ca1f]['id'];if(_['isNil'](this['realtime'][_0xa2e8('0x11')][_0x4dfb8c])){logger[_0xa2e8('0x12')](_0xa2e8('0x13'),this[_0xa2e8('0x4')]['id'],_0x4dfb8c);}else{if(util[_0xa2e8('0x14')](this[_0xa2e8('0x4')]['id'],this['realtime'][_0xa2e8('0x11')][_0x4dfb8c],this[_0xa2e8('0x4')][_0xa2e8('0x15')],!![])){_0x51494d=![];util[_0xa2e8('0x16')](this['squeue']['id'],this['realtime'][_0xa2e8('0x11')][_0x4dfb8c],_0xa2e8('0x17'));this['realtime']['agents'][_0x4dfb8c]['busy']=!![];this[_0xa2e8('0x3')][_0xa2e8('0x11')][_0x4dfb8c][_0xa2e8('0x18')]=this[_0xa2e8('0xe')][_0xa2e8('0x19')];util[_0xa2e8('0x1a')](this[_0xa2e8('0x1b')],this[_0xa2e8('0x4')]['id'],this[_0xa2e8('0x3')][_0xa2e8('0x11')][_0x4dfb8c],this[_0xa2e8('0xe')],this[_0xa2e8('0x2')]);}}}if(_0x51494d){logger[_0xa2e8('0x12')]('[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY',this[_0xa2e8('0x4')]['id']);setTimeout(this[_0xa2e8('0xb')][_0xa2e8('0x6')](this),0x3e8);}}else{logger[_0xa2e8('0x12')]('[%s][QUEUE]\x20EMPTY',this['squeue']['id']);setTimeout(this[_0xa2e8('0xb')][_0xa2e8('0x6')](this),0x3e8);}};Beepall['prototype'][_0xa2e8('0x7')]=function(_0xdf0f7f){if(!_[_0xa2e8('0xd')](this[_0xa2e8('0xe')])&&!_[_0xa2e8('0xd')](this[_0xa2e8('0xe')][_0xa2e8('0xf')])){for(var _0x4a4904=0x0,_0x580ae1;_0x4a4904<this[_0xa2e8('0xe')][_0xa2e8('0xf')][_0xa2e8('0x10')];_0x4a4904+=0x1){_0x580ae1=this[_0xa2e8('0xe')][_0xa2e8('0xf')][_0x4a4904]['id'];if(_[_0xa2e8('0xd')](this[_0xa2e8('0x3')][_0xa2e8('0x11')][_0x580ae1])){logger['info'](_0xa2e8('0x13'),this[_0xa2e8('0x4')]['id'],_0x580ae1);}else{util[_0xa2e8('0x1c')](this['notificationId'],this[_0xa2e8('0x4')]['id'],this[_0xa2e8('0x3')][_0xa2e8('0x11')][_0x580ae1],this[_0xa2e8('0xe')],this[_0xa2e8('0x2')]);util[_0xa2e8('0x16')](this[_0xa2e8('0x4')]['id'],this[_0xa2e8('0x3')][_0xa2e8('0x11')][_0x580ae1],_0xdf0f7f?_0xa2e8('0x1d'):_0xa2e8('0x1e'));this[_0xa2e8('0x3')]['agents'][_0x580ae1][_0xa2e8('0x1f')]=![];this[_0xa2e8('0x3')][_0xa2e8('0x11')][_0x580ae1][_0xa2e8('0x18')]=undefined;}}}if(!_0xdf0f7f){setTimeout(this[_0xa2e8('0xb')][_0xa2e8('0x6')](this),0x3e8);}};function beepall(_0x347e53,_0x5f3402,_0x5e644c,_0x5755c4){return new Beepall(_0x347e53,_0x5f3402,_0x5e644c,_0x5755c4);}module['exports']=beepall;
\ No newline at end of file
+var _0xc17f=['isNil','queue','Agents','length','agents','debug','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','writeLog','RINGING','busyQueue','name','showNotification','[%s][QUEUE]\x20EMPTY','hideNotification','STOP','TIMEOUT','exports','lodash','uuid','./util','../../../../../config/logger','routing','notificationId','squeue','realtime','push','handleRun','bind','handleTimeout','timeout','prototype'];(function(_0x231337,_0xd1a833){var _0x11e243=function(_0x36f39f){while(--_0x36f39f){_0x231337['push'](_0x231337['shift']());}};_0x11e243(++_0xd1a833);}(_0xc17f,0xb8));var _0xfc17=function(_0x4f086f,_0x5e1205){_0x4f086f=_0x4f086f-0x0;var _0x24aa0b=_0xc17f[_0x4f086f];return _0x24aa0b;};'use strict';var _=require(_0xfc17('0x0'));var uuid=require(_0xfc17('0x1'));var util=require(_0xfc17('0x2'));var logger=require(_0xfc17('0x3'))(_0xfc17('0x4'));var Beepall=function(_0x218e7e,_0x50b38b,_0x224edf,_0x5f2b93){this[_0xfc17('0x5')]=uuid['v4']();this[_0xfc17('0x6')]=_0x218e7e;this['queue']=_0x50b38b;this[_0xfc17('0x7')]=_0x224edf;this[_0xfc17('0x4')]=_0x5f2b93;this[_0xfc17('0x6')][_0xfc17('0x8')](this[_0xfc17('0x9')][_0xfc17('0xa')](this),this[_0xfc17('0xb')][_0xfc17('0xa')](this));this['squeue']['on'](_0xfc17('0xc'),this[_0xfc17('0xb')][_0xfc17('0xa')](this));this[_0xfc17('0x6')]['on']('drained',this['handleDrained'][_0xfc17('0xa')](this));};Beepall[_0xfc17('0xd')][_0xfc17('0x8')]=function(){this[_0xfc17('0x6')][_0xfc17('0x8')](this[_0xfc17('0x9')][_0xfc17('0xa')](this),this[_0xfc17('0xb')][_0xfc17('0xa')](this));};Beepall[_0xfc17('0xd')]['handleDrained']=function(){this[_0xfc17('0xb')](!![]);};Beepall[_0xfc17('0xd')][_0xfc17('0x9')]=function(){var _0x47e84a=!![];if(!_[_0xfc17('0xe')](this[_0xfc17('0xf')])&&!_[_0xfc17('0xe')](this[_0xfc17('0xf')][_0xfc17('0x10')])&&this[_0xfc17('0xf')][_0xfc17('0x10')][_0xfc17('0x11')]>0x0){for(var _0x35f947=0x0,_0x477e68;_0x35f947<this[_0xfc17('0xf')][_0xfc17('0x10')][_0xfc17('0x11')];_0x35f947+=0x1){_0x477e68=this['queue']['Agents'][_0x35f947]['id'];if(_[_0xfc17('0xe')](this[_0xfc17('0x7')][_0xfc17('0x12')][_0x477e68])){logger[_0xfc17('0x13')](_0xfc17('0x14'),this[_0xfc17('0x6')]['id'],_0x477e68);}else{if(util[_0xfc17('0x15')](this[_0xfc17('0x6')]['id'],this['realtime'][_0xfc17('0x12')][_0x477e68],this[_0xfc17('0x6')][_0xfc17('0x16')],!![])){_0x47e84a=![];util[_0xfc17('0x17')](this[_0xfc17('0x6')]['id'],this[_0xfc17('0x7')][_0xfc17('0x12')][_0x477e68],_0xfc17('0x18'));this[_0xfc17('0x7')][_0xfc17('0x12')][_0x477e68]['busy']=!![];this[_0xfc17('0x7')][_0xfc17('0x12')][_0x477e68][_0xfc17('0x19')]=this[_0xfc17('0xf')][_0xfc17('0x1a')];util[_0xfc17('0x1b')](this['notificationId'],this[_0xfc17('0x6')]['id'],this[_0xfc17('0x7')]['agents'][_0x477e68],this[_0xfc17('0xf')],this[_0xfc17('0x4')]);}}}if(_0x47e84a){logger['debug']('[%s][QUEUE]\x20ALL\x20AGENTS\x20ARE\x20BUSY',this[_0xfc17('0x6')]['id']);setTimeout(this[_0xfc17('0x8')]['bind'](this),0x3e8);}}else{logger[_0xfc17('0x13')](_0xfc17('0x1c'),this['squeue']['id']);setTimeout(this[_0xfc17('0x8')][_0xfc17('0xa')](this),0x3e8);}};Beepall['prototype'][_0xfc17('0xb')]=function(_0xfbd493){if(!_['isNil'](this['queue'])&&!_[_0xfc17('0xe')](this[_0xfc17('0xf')][_0xfc17('0x10')])){for(var _0x23dd28=0x0,_0x3e5da3;_0x23dd28<this[_0xfc17('0xf')][_0xfc17('0x10')][_0xfc17('0x11')];_0x23dd28+=0x1){_0x3e5da3=this[_0xfc17('0xf')]['Agents'][_0x23dd28]['id'];if(_[_0xfc17('0xe')](this[_0xfc17('0x7')][_0xfc17('0x12')][_0x3e5da3])){logger['debug'](_0xfc17('0x14'),this['squeue']['id'],_0x3e5da3);}else{util[_0xfc17('0x1d')](this[_0xfc17('0x5')],this[_0xfc17('0x6')]['id'],this[_0xfc17('0x7')]['agents'][_0x3e5da3],this[_0xfc17('0xf')],this[_0xfc17('0x4')]);util['writeLog'](this['squeue']['id'],this['realtime'][_0xfc17('0x12')][_0x3e5da3],_0xfbd493?_0xfc17('0x1e'):_0xfc17('0x1f'));this[_0xfc17('0x7')][_0xfc17('0x12')][_0x3e5da3]['busy']=![];this[_0xfc17('0x7')][_0xfc17('0x12')][_0x3e5da3]['busyQueue']=undefined;}}}if(!_0xfbd493){setTimeout(this[_0xfc17('0x8')][_0xfc17('0xa')](this),0x3e8);}};function beepall(_0x5d08c9,_0x5c1368,_0x49d8e4,_0x578ed2){return new Beepall(_0x5d08c9,_0x5c1368,_0x49d8e4,_0x578ed2);}module[_0xfc17('0x20')]=beepall;
\ No newline at end of file
index 5f317da..00f05f6 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4584=['./agent','./rrmemory'];(function(_0x5bf420,_0x2d068d){var _0x1c5255=function(_0x4964a2){while(--_0x4964a2){_0x5bf420['push'](_0x5bf420['shift']());}};_0x1c5255(++_0x2d068d);}(_0x4584,0x175));var _0x4458=function(_0x92da37,_0x28d8a8){_0x92da37=_0x92da37-0x0;var _0x1a595c=_0x4584[_0x92da37];return _0x1a595c;};'use strict';module['exports']={'rrmemory':require(_0x4458('0x0')),'beepall':require('./beepall'),'agent':require(_0x4458('0x1'))};
\ No newline at end of file
+var _0x5d72=['exports'];(function(_0x4d8da1,_0x38eaba){var _0x395c97=function(_0x4703b8){while(--_0x4703b8){_0x4d8da1['push'](_0x4d8da1['shift']());}};_0x395c97(++_0x38eaba);}(_0x5d72,0x71));var _0x25d7=function(_0x256684,_0x529c1e){_0x256684=_0x256684-0x0;var _0x37a0c9=_0x5d72[_0x256684];return _0x37a0c9;};'use strict';module[_0x25d7('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require('./beepall'),'agent':require('./agent')};
\ No newline at end of file
index 33dc9ac..f292f96 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9606=['info','[%s][QUEUE]\x20available\x20again\x20%s','done','queue','mapAgentsId','[%s][QUEUE]\x20try\x20with\x20%s','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','isAgentAvailable','channel','busy','busyQueue','name','showNotification','writeLog','RINGING','hideNotification','exports','lodash','uuid','./util','../../../../../config/logger','notificationId','squeue','realtime','routing','intervals','push','handleRun','handleTimeout','module','timeout','bind','drained','handleDrained','prototype','handleCheckReject','agents','agentId'];(function(_0x32ad62,_0x56598c){var _0x2179ab=function(_0xf6ff36){while(--_0xf6ff36){_0x32ad62['push'](_0x32ad62['shift']());}};_0x2179ab(++_0x56598c);}(_0x9606,0x14a));var _0x6960=function(_0x3b1025,_0x17ccfc){_0x3b1025=_0x3b1025-0x0;var _0xbb4860=_0x9606[_0x3b1025];return _0xbb4860;};'use strict';var rr=require('rr');var _=require(_0x6960('0x0'));var uuid=require(_0x6960('0x1'));var util=require(_0x6960('0x2'));var logger=require(_0x6960('0x3'))('routing');var RRMemory=function(_0x4ad528,_0x5e79d3,_0xa92580,_0x11ee7c){this[_0x6960('0x4')]=uuid['v4']();this[_0x6960('0x5')]=_0x4ad528;this['queue']=_0x5e79d3;this[_0x6960('0x6')]=_0xa92580;this[_0x6960('0x7')]=_0x11ee7c;this[_0x6960('0x8')]={};this['squeue'][_0x6960('0x9')](this[_0x6960('0xa')]['bind'](this),this[_0x6960('0xb')]['bind'](this),this[_0x6960('0xc')]);this[_0x6960('0x5')]['on'](_0x6960('0xd'),this['handleTimeout'][_0x6960('0xe')](this));this[_0x6960('0x5')]['on'](_0x6960('0xf'),this[_0x6960('0x10')][_0x6960('0xe')](this));};RRMemory['prototype'][_0x6960('0x9')]=function(){this[_0x6960('0x5')]['push'](this[_0x6960('0xa')][_0x6960('0xe')](this),this[_0x6960('0xb')][_0x6960('0xe')](this));};RRMemory[_0x6960('0x11')][_0x6960('0x10')]=function(_0x5e200e){this[_0x6960('0xb')](!![]);};RRMemory[_0x6960('0x11')][_0x6960('0x12')]=function(_0x490e49){if(util['isAgentAvailable'](this['squeue']['id'],this[_0x6960('0x6')][_0x6960('0x13')][this[_0x6960('0x14')]],this[_0x6960('0x5')]['channel'],!![])){logger[_0x6960('0x15')](_0x6960('0x16'),this[_0x6960('0x5')]['id'],this[_0x6960('0x14')]);clearInterval(this[_0x6960('0x8')][this[_0x6960('0x14')]]);_0x490e49[_0x6960('0x17')]();setTimeout(this['push'][_0x6960('0xe')](this),0x3e8);}};RRMemory[_0x6960('0x11')][_0x6960('0xa')]=function(_0x31d1f8){this['agentId']=rr(this[_0x6960('0x18')][_0x6960('0x19')]);logger[_0x6960('0x15')](_0x6960('0x1a'),this[_0x6960('0x5')]['id'],this['agentId']);if(_[_0x6960('0x1b')](this[_0x6960('0x6')][_0x6960('0x13')][this[_0x6960('0x14')]])){logger[_0x6960('0x15')](_0x6960('0x1c'),this[_0x6960('0x5')]['id'],this['agentId']);_0x31d1f8[_0x6960('0x17')]();setTimeout(this['push']['bind'](this),0x3e8);}else{if(util[_0x6960('0x1d')](this[_0x6960('0x5')]['id'],this['realtime'][_0x6960('0x13')][this['agentId']],this[_0x6960('0x5')][_0x6960('0x1e')],!![])){this[_0x6960('0x6')][_0x6960('0x13')][this[_0x6960('0x14')]][_0x6960('0x1f')]=!![];this[_0x6960('0x6')][_0x6960('0x13')][this[_0x6960('0x14')]][_0x6960('0x20')]=this[_0x6960('0x18')][_0x6960('0x21')];util[_0x6960('0x22')](this[_0x6960('0x4')],this[_0x6960('0x5')]['id'],this[_0x6960('0x6')]['agents'][this[_0x6960('0x14')]],this['queue'],this['routing']);util[_0x6960('0x23')](this['squeue']['id'],this['realtime'][_0x6960('0x13')][this['agentId']],_0x6960('0x24'));this[_0x6960('0x8')][this[_0x6960('0x14')]]=setInterval(this[_0x6960('0x12')]['bind'](this,_0x31d1f8),0x3e8);}else{logger[_0x6960('0x15')]('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0x6960('0x5')]['id'],this[_0x6960('0x14')]);_0x31d1f8[_0x6960('0x17')]();setTimeout(this[_0x6960('0x9')][_0x6960('0xe')](this),0x3e8);}}};RRMemory[_0x6960('0x11')]['handleTimeout']=function(_0x2c4ef7){logger[_0x6960('0x15')]('[%s][QUEUE]\x20timeout\x20with\x20%s',this[_0x6960('0x5')]['id'],this[_0x6960('0x14')]);if(_[_0x6960('0x1b')](this[_0x6960('0x6')][_0x6960('0x13')][this[_0x6960('0x14')]])){logger[_0x6960('0x15')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x6960('0x5')]['id'],this['agentId']);}else{clearInterval(this['intervals'][this[_0x6960('0x14')]]);util[_0x6960('0x25')](this[_0x6960('0x4')],this['squeue']['id'],this[_0x6960('0x6')][_0x6960('0x13')][this[_0x6960('0x14')]],this[_0x6960('0x18')],this[_0x6960('0x7')]);util[_0x6960('0x23')](this['squeue']['id'],this['realtime'][_0x6960('0x13')][this[_0x6960('0x14')]],'TIMEOUT');this[_0x6960('0x6')][_0x6960('0x13')][this[_0x6960('0x14')]]['busy']=![];this['realtime']['agents'][this[_0x6960('0x14')]][_0x6960('0x20')]=undefined;}if(!_0x2c4ef7){setTimeout(this['push']['bind'](this),0x3e8);}};function rrmemory(_0x28145e,_0xbe1519,_0x3a1b2d,_0x2c79e0){return new RRMemory(_0x28145e,_0xbe1519,_0x3a1b2d,_0x2c79e0);}module[_0x6960('0x26')]=rrmemory;
\ No newline at end of file
+var _0x3024=['module','timeout','drained','handleDrained','prototype','handleCheckReject','isAgentAvailable','agents','agentId','channel','debug','[%s][QUEUE]\x20available\x20again\x20%s','intervals','done','queue','[%s][QUEUE]\x20try\x20with\x20%s','isNil','[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s','showNotification','writeLog','RINGING','[%s][QUEUE]\x20timeout\x20with\x20%s','hideNotification','TIMEOUT','busyQueue','exports','lodash','uuid','../../../../../config/logger','routing','notificationId','squeue','realtime','push','handleRun','bind','handleTimeout'];(function(_0x398294,_0x5ceb9d){var _0x2a872d=function(_0x390883){while(--_0x390883){_0x398294['push'](_0x398294['shift']());}};_0x2a872d(++_0x5ceb9d);}(_0x3024,0x64));var _0x4302=function(_0x4574d3,_0x3be983){_0x4574d3=_0x4574d3-0x0;var _0xc68f26=_0x3024[_0x4574d3];return _0xc68f26;};'use strict';var rr=require('rr');var _=require(_0x4302('0x0'));var uuid=require(_0x4302('0x1'));var util=require('./util');var logger=require(_0x4302('0x2'))(_0x4302('0x3'));var RRMemory=function(_0x583f26,_0x520133,_0x22cb7f,_0x4ba02d){this[_0x4302('0x4')]=uuid['v4']();this[_0x4302('0x5')]=_0x583f26;this['queue']=_0x520133;this[_0x4302('0x6')]=_0x22cb7f;this[_0x4302('0x3')]=_0x4ba02d;this['intervals']={};this[_0x4302('0x5')][_0x4302('0x7')](this[_0x4302('0x8')][_0x4302('0x9')](this),this[_0x4302('0xa')][_0x4302('0x9')](this),this[_0x4302('0xb')]);this['squeue']['on'](_0x4302('0xc'),this[_0x4302('0xa')][_0x4302('0x9')](this));this['squeue']['on'](_0x4302('0xd'),this[_0x4302('0xe')]['bind'](this));};RRMemory[_0x4302('0xf')][_0x4302('0x7')]=function(){this[_0x4302('0x5')]['push'](this[_0x4302('0x8')][_0x4302('0x9')](this),this['handleTimeout'][_0x4302('0x9')](this));};RRMemory[_0x4302('0xf')][_0x4302('0xe')]=function(){this['handleTimeout'](!![]);};RRMemory[_0x4302('0xf')][_0x4302('0x10')]=function(_0x5ab66e){if(util[_0x4302('0x11')](this[_0x4302('0x5')]['id'],this['realtime'][_0x4302('0x12')][this[_0x4302('0x13')]],this[_0x4302('0x5')][_0x4302('0x14')],!![])){logger[_0x4302('0x15')](_0x4302('0x16'),this[_0x4302('0x5')]['id'],this[_0x4302('0x13')]);clearInterval(this[_0x4302('0x17')][this[_0x4302('0x13')]]);_0x5ab66e[_0x4302('0x18')]();setTimeout(this[_0x4302('0x7')][_0x4302('0x9')](this),0x3e8);}};RRMemory[_0x4302('0xf')]['handleRun']=function(_0x161780){this['agentId']=rr(this[_0x4302('0x19')]['mapAgentsId']);logger['debug'](_0x4302('0x1a'),this[_0x4302('0x5')]['id'],this[_0x4302('0x13')]);if(_[_0x4302('0x1b')](this['realtime']['agents'][this[_0x4302('0x13')]])){logger[_0x4302('0x15')](_0x4302('0x1c'),this['squeue']['id'],this[_0x4302('0x13')]);_0x161780[_0x4302('0x18')]();setTimeout(this[_0x4302('0x7')][_0x4302('0x9')](this),0x3e8);}else{if(util['isAgentAvailable'](this['squeue']['id'],this['realtime']['agents'][this[_0x4302('0x13')]],this[_0x4302('0x5')]['channel'],!![])){this[_0x4302('0x6')][_0x4302('0x12')][this[_0x4302('0x13')]]['busy']=!![];this[_0x4302('0x6')]['agents'][this['agentId']]['busyQueue']=this[_0x4302('0x19')]['name'];util[_0x4302('0x1d')](this[_0x4302('0x4')],this['squeue']['id'],this[_0x4302('0x6')]['agents'][this[_0x4302('0x13')]],this[_0x4302('0x19')],this[_0x4302('0x3')]);util[_0x4302('0x1e')](this[_0x4302('0x5')]['id'],this[_0x4302('0x6')][_0x4302('0x12')][this[_0x4302('0x13')]],_0x4302('0x1f'));this['intervals'][this[_0x4302('0x13')]]=setInterval(this[_0x4302('0x10')][_0x4302('0x9')](this,_0x161780),0x3e8);}else{logger[_0x4302('0x15')]('[%s][QUEUE]\x20agent\x20skipped,\x20not\x20available\x20id\x20%s',this[_0x4302('0x5')]['id'],this[_0x4302('0x13')]);_0x161780[_0x4302('0x18')]();setTimeout(this[_0x4302('0x7')][_0x4302('0x9')](this),0x3e8);}}};RRMemory['prototype'][_0x4302('0xa')]=function(_0xeadc9a){logger[_0x4302('0x15')](_0x4302('0x20'),this[_0x4302('0x5')]['id'],this[_0x4302('0x13')]);if(_[_0x4302('0x1b')](this[_0x4302('0x6')][_0x4302('0x12')][this['agentId']])){logger[_0x4302('0x15')]('[%s][QUEUE]\x20agent\x20skipped,\x20unknown\x20id\x20%s',this[_0x4302('0x5')]['id'],this['agentId']);}else{clearInterval(this['intervals'][this[_0x4302('0x13')]]);util[_0x4302('0x21')](this[_0x4302('0x4')],this['squeue']['id'],this[_0x4302('0x6')][_0x4302('0x12')][this[_0x4302('0x13')]],this[_0x4302('0x19')],this['routing']);util[_0x4302('0x1e')](this['squeue']['id'],this[_0x4302('0x6')][_0x4302('0x12')][this[_0x4302('0x13')]],_0x4302('0x22'));this[_0x4302('0x6')]['agents'][this[_0x4302('0x13')]]['busy']=![];this['realtime']['agents'][this[_0x4302('0x13')]][_0x4302('0x23')]=undefined;}if(!_0xeadc9a){setTimeout(this[_0x4302('0x7')][_0x4302('0x9')](this),0x3e8);}};function rrmemory(_0x3fb639,_0x34f1b8,_0x3e8e3e,_0x263950){return new RRMemory(_0x3fb639,_0x34f1b8,_0x3e8e3e,_0x263950);}module[_0x4302('0x24')]=rrmemory;
\ No newline at end of file
index f8101ec..b1de0db 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x430c=['queue','msg','notificationTemplate','format','message','notification:%s','save','remove','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','online','OFFLINE','PAUSE','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','showNotification','hideNotification','writeLog','lodash','mustache','ioredis','../../../../../config/environment','redis','localhost','emit','user:%s','name','user:save','\x20interaction','account','notificationSound','notificationShake','body'];(function(_0x110cbb,_0x186ee7){var _0x145f91=function(_0x3d2195){while(--_0x3d2195){_0x110cbb['push'](_0x110cbb['shift']());}};_0x145f91(++_0x186ee7);}(_0x430c,0x1a1));var _0xc430=function(_0x540dcb,_0x4eacb6){_0x540dcb=_0x540dcb-0x0;var _0x49353c=_0x430c[_0x540dcb];return _0x49353c;};'use strict';var _=require(_0xc430('0x0'));var util=require('util');var utils=require('../utils');var Mustache=require(_0xc430('0x1'));var Redis=require(_0xc430('0x2'));var config=require(_0xc430('0x3'));var logger=require('../../../../../config/logger')('routing');config['redis']=_['defaults'](config[_0xc430('0x4')],{'host':_0xc430('0x5'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config[_0xc430('0x4')]));function emit(_0x4de44f,_0x212354,_0x2e51c6){io['to'](_0x4de44f)[_0xc430('0x6')](_0x212354,_0x2e51c6);}function sendNotification(_0x13ae66,_0x2e23f8,_0x11f4b0,_0x861581,_0x115814,_0x24737a){io['to'](util['format'](_0xc430('0x7'),_0x861581[_0xc430('0x8')]))['emit'](_0xc430('0x9'),_0x861581);var _0x5aeed9=_0x24737a||{};var _0x3b84bc=_0x11f4b0['split']('.');var _0x2ce28a={'uniqueid':_0x2e23f8,'channel':_0x3b84bc[0x0],'id':_0x3b84bc[0x1],'title':_0x3b84bc[0x0]+_0xc430('0xa'),'interactionId':_0x3b84bc[0x2],'queue':_0x115814?_0x115814[_0xc430('0x8')]:null,'sound':_0x5aeed9[_0xc430('0xb')][_0xc430('0xc')],'shake':_0x5aeed9[_0xc430('0xb')][_0xc430('0xd')]};try{if(!_0x5aeed9['body']){_0x5aeed9['body']={};}if(_0x115814){_0x5aeed9[_0xc430('0xe')][_0xc430('0xf')]=_0x115814;}else if(_0x5aeed9[_0xc430('0xe')][_0xc430('0xf')]){delete _0x5aeed9[_0xc430('0xe')]['queue'];}_0x2ce28a[_0xc430('0x10')]=utils['getMustacheRender'](_0x5aeed9['account'][_0xc430('0x11')],_0x5aeed9);}catch(_0x3d02df){_0x2ce28a[_0xc430('0x10')]='I\x20can\x27t\x20render\x20your\x20template';logger['error'](util[_0xc430('0x12')]('[%s][QUEUE]\x20%s',_0x2e23f8,_0x3d02df[_0xc430('0x13')]));}io['to'](util['format']('user:%s',_0x861581[_0xc430('0x8')]))['emit'](util[_0xc430('0x12')](_0xc430('0x14'),_0x13ae66?_0xc430('0x15'):_0xc430('0x16')),_0x2ce28a);}function writeLog(_0x2a1ea1,_0x5af282,_0x388a2f){return logger['info'](util['format'](_0xc430('0x17'),_0x2a1ea1,_0x5af282[_0xc430('0x8')],_0x388a2f));}exports[_0xc430('0x18')]=function(_0x56dd16,_0x3fd56b,_0x57d26e,_0x23425d){if(_0x3fd56b[_0xc430('0x19')]){writeLog(_0x56dd16,_0x3fd56b,'BUSY');return![];}if(!_0x3fd56b[_0xc430('0x1a')]){writeLog(_0x56dd16,_0x3fd56b,_0xc430('0x1b'));return![];}if(_0x3fd56b[_0x57d26e+'Pause']){writeLog(_0x56dd16,_0x3fd56b,_0xc430('0x1c'));return![];}if(_0x23425d&&_0x3fd56b['hasOwnProperty'](_0x57d26e+_0xc430('0x1d'))&&_0x3fd56b['hasOwnProperty'](_0x57d26e+_0xc430('0x1e'))){if(_0x3fd56b[_0x57d26e+_0xc430('0x1d')]>0x0&&_0x3fd56b[_0x57d26e+'CurrentCapacity']>=_0x3fd56b[_0x57d26e+_0xc430('0x1d')]){writeLog(_0x56dd16,_0x3fd56b,_0x57d26e[_0xc430('0x1f')]()+_0xc430('0x20'));return![];}}return!![];};exports[_0xc430('0x21')]=function(_0x285407,_0x57cd72,_0x2ccc13,_0x1a9512,_0x1c1da9){return sendNotification(!![],_0x285407,_0x57cd72,_0x2ccc13,_0x1a9512,_0x1c1da9);};exports[_0xc430('0x22')]=function(_0x542cba,_0x1f8086,_0x4cf56c,_0x1d65ee,_0x4ad29e){return sendNotification(![],_0x542cba,_0x1f8086,_0x4cf56c,_0x1d65ee,_0x4ad29e);};exports[_0xc430('0x23')]=writeLog;
\ No newline at end of file
+var _0x8d0e=['localhost','format','user:%s','emit','user:save','\x20interaction','name','account','notificationSound','body','queue','msg','getMustacheRender','notificationTemplate','error','[%s][QUEUE]\x20%s','notification:%s','save','[%s][QUEUE][AGENT:%s][STATUS:%s]','isAgentAvailable','busy','BUSY','OFFLINE','Pause','hasOwnProperty','Capacity','CurrentCapacity','toUpperCase','\x20MAXCAPACITY','showNotification','writeLog','lodash','util','../utils','ioredis','../../../../../config/environment','../../../../../config/logger','routing','redis','defaults'];(function(_0x36905c,_0xb31581){var _0x5712fb=function(_0x29e126){while(--_0x29e126){_0x36905c['push'](_0x36905c['shift']());}};_0x5712fb(++_0xb31581);}(_0x8d0e,0x1d7));var _0xe8d0=function(_0x1aa42d,_0xa00e80){_0x1aa42d=_0x1aa42d-0x0;var _0x48b4eb=_0x8d0e[_0x1aa42d];return _0x48b4eb;};'use strict';var _=require(_0xe8d0('0x0'));var util=require(_0xe8d0('0x1'));var utils=require(_0xe8d0('0x2'));var Redis=require(_0xe8d0('0x3'));var config=require(_0xe8d0('0x4'));var logger=require(_0xe8d0('0x5'))(_0xe8d0('0x6'));config[_0xe8d0('0x7')]=_[_0xe8d0('0x8')](config['redis'],{'host':_0xe8d0('0x9'),'port':0x18eb});var io=require('socket.io-emitter')(new Redis(config['redis']));function sendNotification(_0x2e2985,_0x92483d,_0x469d37,_0xcc03d0,_0x2b6dce,_0x13aa63){io['to'](util[_0xe8d0('0xa')](_0xe8d0('0xb'),_0xcc03d0['name']))[_0xe8d0('0xc')](_0xe8d0('0xd'),_0xcc03d0);var _0x463159=_0x13aa63||{};var _0x599bc3=_0x469d37['split']('.');var _0x42e0c2={'uniqueid':_0x92483d,'channel':_0x599bc3[0x0],'id':_0x599bc3[0x1],'title':_0x599bc3[0x0]+_0xe8d0('0xe'),'interactionId':_0x599bc3[0x2],'queue':_0x2b6dce?_0x2b6dce[_0xe8d0('0xf')]:null,'sound':_0x463159[_0xe8d0('0x10')][_0xe8d0('0x11')],'shake':_0x463159[_0xe8d0('0x10')]['notificationShake']};try{if(!_0x463159[_0xe8d0('0x12')]){_0x463159[_0xe8d0('0x12')]={};}if(_0x2b6dce){_0x463159['body'][_0xe8d0('0x13')]=_0x2b6dce;}else if(_0x463159['body']['queue']){delete _0x463159[_0xe8d0('0x12')][_0xe8d0('0x13')];}_0x42e0c2[_0xe8d0('0x14')]=utils[_0xe8d0('0x15')](_0x463159[_0xe8d0('0x10')][_0xe8d0('0x16')],_0x463159);}catch(_0x52818a){_0x42e0c2[_0xe8d0('0x14')]='I\x20can\x27t\x20render\x20your\x20template';logger[_0xe8d0('0x17')](util[_0xe8d0('0xa')](_0xe8d0('0x18'),_0x92483d,_0x52818a['message']));}io['to'](util['format']('user:%s',_0xcc03d0[_0xe8d0('0xf')]))[_0xe8d0('0xc')](util[_0xe8d0('0xa')](_0xe8d0('0x19'),_0x2e2985?_0xe8d0('0x1a'):'remove'),_0x42e0c2);}function writeLog(_0x105861,_0x12ebf4,_0x524b00){return logger['debug'](util['format'](_0xe8d0('0x1b'),_0x105861,_0x12ebf4[_0xe8d0('0xf')],_0x524b00));}exports[_0xe8d0('0x1c')]=function(_0x1fbfe8,_0x25f764,_0x23a945,_0x1bd25c){if(_0x25f764[_0xe8d0('0x1d')]){writeLog(_0x1fbfe8,_0x25f764,_0xe8d0('0x1e'));return![];}if(!_0x25f764['online']){writeLog(_0x1fbfe8,_0x25f764,_0xe8d0('0x1f'));return![];}if(_0x25f764[_0x23a945+_0xe8d0('0x20')]){writeLog(_0x1fbfe8,_0x25f764,'PAUSE');return![];}if(_0x1bd25c&&_0x25f764[_0xe8d0('0x21')](_0x23a945+_0xe8d0('0x22'))&&_0x25f764[_0xe8d0('0x21')](_0x23a945+_0xe8d0('0x23'))){if(_0x25f764[_0x23a945+_0xe8d0('0x22')]>0x0&&_0x25f764[_0x23a945+_0xe8d0('0x23')]>=_0x25f764[_0x23a945+_0xe8d0('0x22')]){writeLog(_0x1fbfe8,_0x25f764,_0x23a945[_0xe8d0('0x24')]()+_0xe8d0('0x25'));return![];}}return!![];};exports[_0xe8d0('0x26')]=function(_0x264de4,_0x539548,_0x24982c,_0x26dd52,_0x10dec2){return sendNotification(!![],_0x264de4,_0x539548,_0x24982c,_0x26dd52,_0x10dec2);};exports['hideNotification']=function(_0x10a30b,_0x343b08,_0x526240,_0x1519e2,_0x3ffcb7){return sendNotification(![],_0x10a30b,_0x343b08,_0x526240,_0x1519e2,_0x3ffcb7);};exports[_0xe8d0('0x27')]=writeLog;
\ No newline at end of file
index c20aef4..ce6ed68 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9d9d=['next','isObject','stringify','shelljs','lodash','./utils','../../../../config/logger','routing','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','error','[%s][SYSTEM]\x20%s','map','message','join','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','info','exec','replace','isEmpty','body'];(function(_0xd8594f,_0x18f5c7){var _0x26c2c8=function(_0x2ec068){while(--_0x2ec068){_0xd8594f['push'](_0xd8594f['shift']());}};_0x26c2c8(++_0x18f5c7);}(_0x9d9d,0x129));var _0xd9d9=function(_0x26b6f5,_0x277475){_0x26b6f5=_0x26b6f5-0x0;var _0x37d738=_0x9d9d[_0x26b6f5];return _0x37d738;};'use strict';var schema=require('validate');var sh=require(_0xd9d9('0x0'));var _=require(_0xd9d9('0x1'));var utils=require(_0xd9d9('0x2'));var logger=require(_0xd9d9('0x3'))(_0xd9d9('0x4'));var system=schema({'command':{'type':'string','required':!![],'message':_0xd9d9('0x5')}});exports[_0xd9d9('0x6')]=function(_0x403901,_0x36a43b){return function(_0x2eddcc){try{var _0x341c8c={'command':_0x36a43b[0x0]};var _0x315af7=system['validate'](_0x341c8c,{'typecast':!![]});if(_0x315af7['length']){logger[_0xd9d9('0x7')](_0xd9d9('0x8'),_0x403901,_[_0xd9d9('0x9')](_0x315af7,_0xd9d9('0xa'))[_0xd9d9('0xb')](',\x20'));logger['info'](_0xd9d9('0xc'),_0x403901);_0x2eddcc['next']();}else{var _0x3c174d=this;var _0x1a41e4=utils['getMustacheRender'](_0x36a43b[0x0],this);logger[_0xd9d9('0xd')]('[%s][SYSTEM]\x20commnad:\x20%s',_0x403901,_0x1a41e4);sh[_0xd9d9('0xe')](_['trim'](_0x1a41e4),function(_0x2b4fce,_0x248625){logger[_0xd9d9('0xd')]('[%s][SYSTEM]\x20result\x20code:\x20%s',_0x403901,_0x2b4fce);if(_0x2b4fce==0x0){var _0x3842f1=_0x248625[_0xd9d9('0xf')](/(\r\n|\n|\r)/gm,'');if(_['isNil'](_0x36a43b[0x1])||_[_0xd9d9('0x10')](_0x36a43b[0x1])){logger['info']('[%s][SYSTEM]\x20no\x20variable',_0x403901);_0x3c174d[_0xd9d9('0x11')][_0x36a43b[0x1]]=_0x3842f1;}else{logger[_0xd9d9('0xd')]('[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s',_0x403901,_0x36a43b[0x1],_0x3842f1);_0x3c174d[_0xd9d9('0x11')][_0x36a43b[0x1]]=_0x3842f1;}}_0x2eddcc[_0xd9d9('0x12')]();});}}catch(_0x54ef05){logger[_0xd9d9('0x7')]('[%s][SYSTEM]\x20%s',_0x403901,_[_0xd9d9('0x13')](_0x54ef05)?JSON[_0xd9d9('0x14')](_0x54ef05):_0x54ef05);logger[_0xd9d9('0xd')](_0xd9d9('0xc'),_0x403901);_0x2eddcc[_0xd9d9('0x12')]();}};};
\ No newline at end of file
+var _0x0db1=['stringify','validate','shelljs','lodash','./utils','routing','string','command\x20is\x20a\x20string\x20and\x20it\x20is\x20required','length','error','[%s][SYSTEM]\x20%s','map','message','join','info','[%s][SYSTEM]\x20no\x20command\x20executed,\x20force\x20next','next','getMustacheRender','[%s][SYSTEM]\x20commnad:\x20%s','[%s][SYSTEM]\x20result\x20code:\x20%s','isNil','isEmpty','[%s][SYSTEM]\x20no\x20variable','body','isObject'];(function(_0x5160b6,_0x261d95){var _0x200f73=function(_0x667484){while(--_0x667484){_0x5160b6['push'](_0x5160b6['shift']());}};_0x200f73(++_0x261d95);}(_0x0db1,0x114));var _0x10db=function(_0x5662bb,_0x38e971){_0x5662bb=_0x5662bb-0x0;var _0x7ec7c7=_0x0db1[_0x5662bb];return _0x7ec7c7;};'use strict';var schema=require(_0x10db('0x0'));var sh=require(_0x10db('0x1'));var _=require(_0x10db('0x2'));var utils=require(_0x10db('0x3'));var logger=require('../../../../config/logger')(_0x10db('0x4'));var system=schema({'command':{'type':_0x10db('0x5'),'required':!![],'message':_0x10db('0x6')}});exports['consequence']=function(_0xc0ae9d,_0x3a1129){return function(_0x57536b){try{var _0x176bd1={'command':_0x3a1129[0x0]};var _0x11d58c=system[_0x10db('0x0')](_0x176bd1,{'typecast':!![]});if(_0x11d58c[_0x10db('0x7')]){logger[_0x10db('0x8')](_0x10db('0x9'),_0xc0ae9d,_[_0x10db('0xa')](_0x11d58c,_0x10db('0xb'))[_0x10db('0xc')](',\x20'));logger[_0x10db('0xd')](_0x10db('0xe'),_0xc0ae9d);_0x57536b[_0x10db('0xf')]();}else{var _0x4a2c54=this;var _0x7a9d3c=utils[_0x10db('0x10')](_0x3a1129[0x0],this);logger[_0x10db('0xd')](_0x10db('0x11'),_0xc0ae9d,_0x7a9d3c);sh['exec'](_['trim'](_0x7a9d3c),function(_0x1c6b1f,_0x10b8db){logger[_0x10db('0xd')](_0x10db('0x12'),_0xc0ae9d,_0x1c6b1f);if(_0x1c6b1f==0x0){var _0x45f20d=_0x10b8db['replace'](/(\r\n|\n|\r)/gm,'');if(_[_0x10db('0x13')](_0x3a1129[0x1])||_[_0x10db('0x14')](_0x3a1129[0x1])){logger[_0x10db('0xd')](_0x10db('0x15'),_0xc0ae9d);_0x4a2c54[_0x10db('0x16')][_0x3a1129[0x1]]=_0x45f20d;}else{logger[_0x10db('0xd')]('[%s][SYSTEM]\x20set\x20variable\x20%s:\x20%s',_0xc0ae9d,_0x3a1129[0x1],_0x45f20d);_0x4a2c54[_0x10db('0x16')][_0x3a1129[0x1]]=_0x45f20d;}}_0x57536b[_0x10db('0xf')]();});}}catch(_0x148061){logger[_0x10db('0x8')](_0x10db('0x9'),_0xc0ae9d,_[_0x10db('0x17')](_0x148061)?JSON[_0x10db('0x18')](_0x148061):_0x148061);logger[_0x10db('0xd')](_0x10db('0xe'),_0xc0ae9d);_0x57536b[_0x10db('0xf')]();}};};
\ No newline at end of file
index 0dc55db..f78002d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xad0f=['../../rpc/smsInteraction','../../rpc/mailInteraction','../../rpc/whatsappInteraction','routing','number','consequence','error','[%s][TAG]\x20%s','map','message','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','addTags','interaction','then','[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','catch','stringify','validate','../../rpc/chatInteraction','../../rpc/openchannelInteraction'];(function(_0x514867,_0xbc5f43){var _0x3a1b64=function(_0x4d66c4){while(--_0x4d66c4){_0x514867['push'](_0x514867['shift']());}};_0x3a1b64(++_0xbc5f43);}(_0xad0f,0x75));var _0xfad0=function(_0x5f309e,_0x66e31){_0x5f309e=_0x5f309e-0x0;var _0x487b5e=_0xad0f[_0x5f309e];return _0x487b5e;};'use strict';var schema=require(_0xfad0('0x0'));var _=require('lodash');var rpc={'chatInteraction':require(_0xfad0('0x1')),'openchannelInteraction':require(_0xfad0('0x2')),'smsInteraction':require(_0xfad0('0x3')),'mailInteraction':require(_0xfad0('0x4')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require(_0xfad0('0x5'))};var logger=require('../../../../config/logger')(_0xfad0('0x6'));var tag=schema({'tag':{'type':_0xfad0('0x7'),'required':!![],'message':'TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required'}});exports[_0xfad0('0x8')]=function(_0x5b4c3f,_0x360885,_0x4781a5,_0x1a848b){return function(_0x4a3e7c){try{var _0x5f371c={'tag':_0x360885[0x0]};var _0x4de891=tag[_0xfad0('0x0')](_0x5f371c,{'typecast':!![]});if(_0x4de891['length']){logger[_0xfad0('0x9')](_0xfad0('0xa'),_0x5b4c3f,_[_0xfad0('0xb')](_0x4de891,_0xfad0('0xc'))[_0xfad0('0xd')](',\x20'));logger[_0xfad0('0xe')](_0xfad0('0xf'),_0x5b4c3f);_0x4a3e7c[_0xfad0('0x10')]();}else{var _0xf76e0e={'ids':[_0x360885[0x0]]};if(rpc[_0x1a848b[_0xfad0('0x11')]+'Interaction']){rpc[_0x1a848b[_0xfad0('0x11')]+'Interaction'][_0xfad0('0x12')](_0x1a848b[_0xfad0('0x13')]['id'],_0xf76e0e)[_0xfad0('0x14')](function(_0x1d99bc){logger[_0xfad0('0xe')](_0xfad0('0x15'),_0x5b4c3f,_0x360885[0x1],_0x1a848b[_0xfad0('0x11')],_0x1a848b['interaction']['id']);})[_0xfad0('0x16')](function(_0x13c0d1){logger['error'](_0xfad0('0xa'),_0x5b4c3f,JSON[_0xfad0('0x17')](_0x13c0d1));logger[_0xfad0('0xe')](_0xfad0('0xf'),_0x5b4c3f);})['finally'](function(){_0x4a3e7c[_0xfad0('0x10')]();});}}}catch(_0x2ca333){logger[_0xfad0('0x9')]('[%s][TAG]\x20%s',_0x5b4c3f,_['isObject'](_0x2ca333)?JSON['stringify'](_0x2ca333):_0x2ca333);logger[_0xfad0('0xe')]('[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next',_0x5b4c3f);_0x4a3e7c[_0xfad0('0x10')]();}};};
\ No newline at end of file
+var _0x4b38=['[%s][TAG]\x20tag\x20\x22%s\x22\x20added\x20to\x20%s\x20interaction\x20%s','finally','isObject','stringify','validate','../../rpc/smsInteraction','../../rpc/mailInteraction','routing','number','TagId\x20is\x20a\x20string\x20and\x20it\x20is\x20required','consequence','error','[%s][TAG]\x20%s','map','message','join','info','[%s][TAG]\x20no\x20tags\x20saved,\x20force\x20next','next','channel','Interaction','interaction'];(function(_0x3bf83f,_0x181cac){var _0x22c4a9=function(_0xb3ff0d){while(--_0xb3ff0d){_0x3bf83f['push'](_0x3bf83f['shift']());}};_0x22c4a9(++_0x181cac);}(_0x4b38,0x164));var _0x84b3=function(_0x5b25c2,_0x549b6e){_0x5b25c2=_0x5b25c2-0x0;var _0x370787=_0x4b38[_0x5b25c2];return _0x370787;};'use strict';var schema=require(_0x84b3('0x0'));var _=require('lodash');var rpc={'chatInteraction':require('../../rpc/chatInteraction'),'openchannelInteraction':require('../../rpc/openchannelInteraction'),'smsInteraction':require(_0x84b3('0x1')),'mailInteraction':require(_0x84b3('0x2')),'faxInteraction':require('../../rpc/faxInteraction'),'whatsappInteraction':require('../../rpc/whatsappInteraction')};var logger=require('../../../../config/logger')(_0x84b3('0x3'));var tag=schema({'tag':{'type':_0x84b3('0x4'),'required':!![],'message':_0x84b3('0x5')}});exports[_0x84b3('0x6')]=function(_0x2b5351,_0x212b63,_0x3c9ef5,_0x3e793d){return function(_0x334df1){try{var _0x54955c={'tag':_0x212b63[0x0]};var _0x115637=tag['validate'](_0x54955c,{'typecast':!![]});if(_0x115637['length']){logger[_0x84b3('0x7')](_0x84b3('0x8'),_0x2b5351,_[_0x84b3('0x9')](_0x115637,_0x84b3('0xa'))[_0x84b3('0xb')](',\x20'));logger[_0x84b3('0xc')](_0x84b3('0xd'),_0x2b5351);_0x334df1[_0x84b3('0xe')]();}else{var _0x5564ec={'ids':[_0x212b63[0x0]]};if(rpc[_0x3e793d[_0x84b3('0xf')]+_0x84b3('0x10')]){rpc[_0x3e793d[_0x84b3('0xf')]+_0x84b3('0x10')]['addTags'](_0x3e793d[_0x84b3('0x11')]['id'],_0x5564ec)['then'](function(_0x15cc44){logger[_0x84b3('0xc')](_0x84b3('0x12'),_0x2b5351,_0x212b63[0x1],_0x3e793d['channel'],_0x3e793d[_0x84b3('0x11')]['id']);})['catch'](function(_0x149901){logger[_0x84b3('0x7')](_0x84b3('0x8'),_0x2b5351,JSON['stringify'](_0x149901));logger['info'](_0x84b3('0xd'),_0x2b5351);})[_0x84b3('0x13')](function(){_0x334df1[_0x84b3('0xe')]();});}}}catch(_0xf193d9){logger[_0x84b3('0x7')](_0x84b3('0x8'),_0x2b5351,_[_0x84b3('0x14')](_0xf193d9)?JSON[_0x84b3('0x15')](_0xf193d9):_0xf193d9);logger[_0x84b3('0xc')](_0x84b3('0xd'),_0x2b5351);_0x334df1['next']();}};};
\ No newline at end of file
index ff54ed6..42028e5 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x30a1=['parse','result','Unable\x20to\x20login\x20with\x20TVox\x20application','channelId=','&data=','then','info','[%s][TVOX]\x20Request\x20sent\x20to\x20TVox:\x20%s','stop','catch','error','[%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','title','jsonrpc','2.0','login','stringify','POST','application/json-rpc'];(function(_0x2906ed,_0x1df34a){var _0x43bbb9=function(_0x11e9be){while(--_0x11e9be){_0x2906ed['push'](_0x2906ed['shift']());}};_0x43bbb9(++_0x1df34a);}(_0x30a1,0x1cd));var _0x130a=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x30a1[_0x14add3];return _0x4a174f;};'use strict';var rp=require(_0x130a('0x0'));var logger=require(_0x130a('0x1'))(_0x130a('0x2'));var _=require(_0x130a('0x3'));var arr=[];exports[_0x130a('0x4')]=function(_0x25cd83,_0x7aa1c8){return function(_0x26f5f4){var _0x177a96=_0x7aa1c8[0xa];var _0x1472a6=_0x7aa1c8[0xb];var _0x556546=_0x7aa1c8[0xc];var _0x55f2a9=_0x7aa1c8[0xd];var _0x37f368=_0x7aa1c8[0xe];var _0x2c6170=_0x7aa1c8[0xf][_0x130a('0x5')](/\n/g,_0x130a('0x6'));var _0x130202=_0x7aa1c8[0x10][_0x130a('0x5')](/\n/g,'\x20');if(!arr[_0x130a('0x7')](_0x1472a6)){arr[_0x130a('0x8')](_0x1472a6);var _0x2098d8=_0x7aa1c8[0x3];var _0x36c6d0=_0x7aa1c8[0x4];var _0x169703=_0x7aa1c8[0x1];var _0x22cc6e=_0x7aa1c8[0x0];var _0xc5daaa={};_0xc5daaa[_0x130a('0x9')]=_0x7aa1c8[0x8]+_0x130a('0xa')+_0x556546+'|'+_0x177a96+'|'+_0x55f2a9+'|'+_0x1472a6+'|'+_0x37f368;_0xc5daaa[_0x130a('0xb')]=_0x7aa1c8[0x7]+'?params='+_0x556546+'|'+_0x177a96+'|'+_0x55f2a9+'|'+_0x1472a6+'|'+_0x37f368+'|'+_0x2c6170+'|'+_0x130202;_0xc5daaa[_0x130a('0xc')]=_0x7aa1c8[0x9];var _0xb8be75={};_0xb8be75[_0x130a('0xd')]=_0x130a('0xe');_0xb8be75['method']=_0x130a('0xf');var _0x579e67=[];_0x579e67['push'](_0x7aa1c8[0x2]);_0x579e67[_0x130a('0x8')](_0x7aa1c8[0x5]);_0x579e67['push'](_0x7aa1c8[0x6]);_0xb8be75['params']=_0x579e67;_0xb8be75['id']=0x1;var _0x55e1f=JSON[_0x130a('0x10')](_0xb8be75);var _0x28c80b={'encoding':'utf8','method':_0x130a('0x11'),'timeout':0x2710,'url':_0x2098d8,'headers':{'Content-Type':_0x130a('0x12')},'body':_0x55e1f};return rp(_0x28c80b)['then'](function(_0x15b796){const _0x311f97=JSON[_0x130a('0x13')](_0x15b796);if(!_0x311f97[_0x130a('0x14')]['logged']){throw new Error(_0x130a('0x15'));}var _0x3cf791=_0x1472a6;var _0x17842=_0x130a('0x16')+_0x169703+'&serviceId='+_0x22cc6e+'&sessionId='+_0x3cf791+_0x130a('0x17')+JSON['stringify'](_0xc5daaa);var _0x3c9899=_0x36c6d0+'?'+_0x17842;return rp(_0x3c9899);})[_0x130a('0x18')](function(_0x21961b){logger[_0x130a('0x19')](_0x130a('0x1a'),_0x25cd83,_0x21961b);_0x26f5f4[_0x130a('0x1b')]();})[_0x130a('0x1c')](function(_0x37fd4b){logger[_0x130a('0x1d')]('[%s][TVOX]\x20%s',_0x25cd83,_['isObject'](_0x37fd4b)?JSON[_0x130a('0x10')](_0x37fd4b):_0x37fd4b);_0x26f5f4[_0x130a('0x1b')]();});}else{logger['info'](_0x130a('0x1e'),_0x25cd83);_0x26f5f4[_0x130a('0x1f')]();}};};
\ No newline at end of file
+var _0x0760=['../../../../config/logger','routing','lodash','consequence','\x20-\x20','replace','push','urlOnAnswer','?params=','urlOnRing','title','login','stringify','utf8','POST','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','error','isObject','[%s][TVOX]\x20Application\x20already\x20executed\x20for\x20the\x20current\x20session,\x20force\x20next','next','request-promise'];(function(_0x2b99e4,_0x4a6e6a){var _0x494f81=function(_0x13bea5){while(--_0x13bea5){_0x2b99e4['push'](_0x2b99e4['shift']());}};_0x494f81(++_0x4a6e6a);}(_0x0760,0x15f));var _0x0076=function(_0x3615ff,_0x2890c3){_0x3615ff=_0x3615ff-0x0;var _0x56dc5b=_0x0760[_0x3615ff];return _0x56dc5b;};'use strict';var rp=require(_0x0076('0x0'));var logger=require(_0x0076('0x1'))(_0x0076('0x2'));var _=require(_0x0076('0x3'));var arr=[];exports[_0x0076('0x4')]=function(_0x1a3cab,_0x5db8ee){return function(_0x5d6ea3){var _0x147a0b=_0x5db8ee[0xa];var _0x57dd19=_0x5db8ee[0xb];var _0x104bf4=_0x5db8ee[0xc];var _0x2b067c=_0x5db8ee[0xd];var _0x4c0194=_0x5db8ee[0xe];var _0x39d2f7=_0x5db8ee[0xf]['replace'](/\n/g,_0x0076('0x5'));var _0x3f3788=_0x5db8ee[0x10][_0x0076('0x6')](/\n/g,'\x20');if(!arr['includes'](_0x57dd19)){arr[_0x0076('0x7')](_0x57dd19);var _0x1a208e=_0x5db8ee[0x3];var _0x23045f=_0x5db8ee[0x4];var _0x16a0f0=_0x5db8ee[0x1];var _0x5bbb89=_0x5db8ee[0x0];var _0x15ff38={};_0x15ff38[_0x0076('0x8')]=_0x5db8ee[0x8]+_0x0076('0x9')+_0x104bf4+'|'+_0x147a0b+'|'+_0x2b067c+'|'+_0x57dd19+'|'+_0x4c0194;_0x15ff38[_0x0076('0xa')]=_0x5db8ee[0x7]+'?params='+_0x104bf4+'|'+_0x147a0b+'|'+_0x2b067c+'|'+_0x57dd19+'|'+_0x4c0194+'|'+_0x39d2f7+'|'+_0x3f3788;_0x15ff38[_0x0076('0xb')]=_0x5db8ee[0x9];var _0x56eb48={};_0x56eb48['jsonrpc']='2.0';_0x56eb48['method']=_0x0076('0xc');var _0x534d04=[];_0x534d04[_0x0076('0x7')](_0x5db8ee[0x2]);_0x534d04['push'](_0x5db8ee[0x5]);_0x534d04[_0x0076('0x7')](_0x5db8ee[0x6]);_0x56eb48['params']=_0x534d04;_0x56eb48['id']=0x1;var _0x1ac33c=JSON[_0x0076('0xd')](_0x56eb48);var _0x5bb86d={'encoding':_0x0076('0xe'),'method':_0x0076('0xf'),'timeout':0x2710,'url':_0x1a208e,'headers':{'Content-Type':_0x0076('0x10')},'body':_0x1ac33c};return rp(_0x5bb86d)['then'](function(_0x4983bf){const _0x5f2d65=JSON[_0x0076('0x11')](_0x4983bf);if(!_0x5f2d65[_0x0076('0x12')][_0x0076('0x13')]){throw new Error(_0x0076('0x14'));}var _0x545bfd=_0x57dd19;var _0x3ace74=_0x0076('0x15')+_0x16a0f0+_0x0076('0x16')+_0x5bbb89+_0x0076('0x17')+_0x545bfd+_0x0076('0x18')+JSON[_0x0076('0xd')](_0x15ff38);var _0x44f959=_0x23045f+'?'+_0x3ace74;return rp(_0x44f959);})['then'](function(_0x178df1){logger[_0x0076('0x19')](_0x0076('0x1a'),_0x1a3cab,_0x178df1);_0x5d6ea3[_0x0076('0x1b')]();})['catch'](function(_0xa07b12){logger[_0x0076('0x1c')]('[%s][TVOX]\x20%s',_0x1a3cab,_[_0x0076('0x1d')](_0xa07b12)?JSON[_0x0076('0xd')](_0xa07b12):_0xa07b12);_0x5d6ea3[_0x0076('0x1b')]();});}else{logger[_0x0076('0x19')](_0x0076('0x1e'),_0x1a3cab);_0x5d6ea3[_0x0076('0x1f')]();}};};
\ No newline at end of file
index ff10db9..1eae2c1 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(_0x1e516f,_0x1508cb){var _0x120bf3=function(_0x4e686a){while(--_0x4e686a){_0x1e516f['push'](_0x1e516f['shift']());}};_0x120bf3(++_0x1508cb);}(_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(_0xb2f410,_0x33f0a9){var _0x286d46=function(_0x218fe6){while(--_0x218fe6){_0xb2f410['push'](_0xb2f410['shift']());}};_0x286d46(++_0x33f0a9);}(_0xd8b0,0xad));var _0x0d8b=function(_0xa464c9,_0x7c86d8){_0xa464c9=_0xa464c9-0x0;var _0x3d73c4=_0xd8b0[_0xa464c9];return _0x3d73c4;};'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 6a733c2..1641095 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb9a7=['split','channel','mail','push','slice','join','dialogflowv2','appdata','tag','TagId','tvox','getMustacheRender','account','notificationTemplate','ChatWebsiteId','ContactId','body','isNil','format','%s:%s:%s','condition','intervals','./applications/','priority','Push\x20new\x20rule','on\x20interval','\x20|\x20','Please\x20create\x20a\x20new\x20file\x20under','execute','info','Applications\x20executed','emit','No\x20applications\x20to\x20execute','stack','routing\x20is\x20empty','agent','busy','agents','busyQueue','end','QueueReport','update','UserId','catch','error\x20update\x20queue\x20report','error','message\x20is\x20empty','hasOwnProperty','CurrentCapacity','agent\x20not\x20found','values','chatQueues','available','loggedIn','name','paused','mailQueues','openchannelQueues','waiting','smsQueues','faxQueues','whatsappQueues','chatQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','whatsappQueuesWaitingInteractions','server','http','stringify','listen','log','Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!','RPC\x20listening\x20on\x20port:','util','uuid','../../../config/environment','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/smsQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','IntervalId','Intervals','map','interval','rules','message','interaction','applications','isArray','length','existsSync','.js','app','autoreply'];(function(_0x55c7e4,_0x1746d7){var _0x48b877=function(_0x299ec0){while(--_0x299ec0){_0x55c7e4['push'](_0x55c7e4['shift']());}};_0x48b877(++_0x1746d7);}(_0xb9a7,0x112));var _0x7b9a=function(_0x4ff09b,_0x53f67d){_0x4ff09b=_0x4ff09b-0x0;var _0x3f5c2e=_0xb9a7[_0x4ff09b];return _0x3f5c2e;};'use strict';var _=require('lodash');var util=require(_0x7b9a('0x0'));var path=require('path');var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require('bluebird');var uuid=require(_0x7b9a('0x1'));var utils=require('./applications/utils');var config=require(_0x7b9a('0x2'));var logger=require(_0x7b9a('0x3'))(_0x7b9a('0x4'));var rpc={'openchannelQueueReport':require(_0x7b9a('0x5')),'mailQueueReport':require(_0x7b9a('0x6')),'chatQueueReport':require(_0x7b9a('0x7')),'smsQueueReport':require(_0x7b9a('0x8')),'faxQueueReport':require(_0x7b9a('0x9')),'whatsappQueueReport':require(_0x7b9a('0xa'))};var RuleEngine=require(_0x7b9a('0xb'));function getId(_0x4d3f20,_0x43d8e2,_0x3e84f1){return util['format']('%s.%s.%s',_0x4d3f20,_0x43d8e2||0x0,_0x3e84f1||0x0);}function getIntervals(_0x47e220,_0x15bc5b){var _0x31f3b7=[];if(!_['isNil'](_0x15bc5b[_0x7b9a('0xc')])&&!_['isNil'](_0x47e220[_0x15bc5b[_0x7b9a('0xc')]])&&!_['isNil'](_0x47e220[_0x15bc5b[_0x7b9a('0xc')]][_0x7b9a('0xd')])){_0x31f3b7=_[_0x7b9a('0xe')](_0x47e220[_0x15bc5b['IntervalId']][_0x7b9a('0xd')],_0x7b9a('0xf'));}else if(!_['isNil'](_0x15bc5b[_0x7b9a('0xf')])){_0x31f3b7=[_0x15bc5b[_0x7b9a('0xf')]];}return _0x31f3b7;}exports['listen']=function(_0xb157e5){_0xb157e5[_0x7b9a('0x10')]={};return new BPromise(function(_0x6fa16a,_0x2853f2){var _0x344fa7={'Start':function(_0x346daa){var _0x22a7e4=this;return new Promise(function(_0x35e602,_0x2f1899){if(_0x346daa){try{var _0x4996f1=[];var _0x34a82d=getId(_0x346daa['channel'],_0x346daa[_0x7b9a('0x11')]?_0x346daa[_0x7b9a('0x11')]['id']:0x0,_0x346daa[_0x7b9a('0x12')]?_0x346daa[_0x7b9a('0x12')]['id']:0x0);if(_0x346daa[_0x7b9a('0x13')]&&_[_0x7b9a('0x14')](_0x346daa[_0x7b9a('0x13')])&&_0x346daa[_0x7b9a('0x13')][_0x7b9a('0x15')]){for(var _0x588c48=0x0;_0x588c48<_0x346daa[_0x7b9a('0x13')][_0x7b9a('0x15')];_0x588c48+=0x1){var _0x3e65fa=_0x346daa['applications'][_0x588c48];if(fs[_0x7b9a('0x16')](path['join'](__dirname,_0x7b9a('0x13'),_0x3e65fa['app']+_0x7b9a('0x17')))){var _0x331ae6=[];switch(_0x3e65fa[_0x7b9a('0x18')]['toLowerCase']()){case _0x7b9a('0x19'):var _0x7f8972=_0x3e65fa['appdata'][_0x7b9a('0x1a')](',');if(_0x346daa[_0x7b9a('0x1b')]===_0x7b9a('0x1c')){_0x331ae6[_0x7b9a('0x1d')](_0x7f8972[0x0]);_0x331ae6[_0x7b9a('0x1d')](_0x7f8972[0x1]);_0x331ae6['push'](_0x7f8972[_0x7b9a('0x1e')](0x2,_0x7f8972[_0x7b9a('0x15')])['join'](','));}else{_0x331ae6[_0x7b9a('0x1d')](_0x7f8972[0x0]);_0x331ae6['push'](_0x7f8972[_0x7b9a('0x1e')](0x1,_0x7f8972[_0x7b9a('0x15')])['join'](','));}break;case'dialogflow':var _0x24d886=_0x3e65fa['appdata']['split'](',');_0x331ae6[_0x7b9a('0x1d')](_0x24d886[0x0]);_0x331ae6['push'](_0x24d886[0x1]);_0x331ae6['push'](_0x24d886[_0x7b9a('0x1e')](0x2,_0x24d886['length'])[_0x7b9a('0x1f')](','));break;case _0x7b9a('0x20'):var _0x4fee38=_0x3e65fa[_0x7b9a('0x21')][_0x7b9a('0x1a')](',');_0x331ae6[_0x7b9a('0x1d')](_0x4fee38[0x0]);_0x331ae6['push'](_0x4fee38[0x1]);_0x331ae6[_0x7b9a('0x1d')](_0x4fee38[0x2]);_0x331ae6[_0x7b9a('0x1d')](_0x4fee38[0x3]);_0x331ae6[_0x7b9a('0x1d')](_0x4fee38[_0x7b9a('0x1e')](0x4,_0x4fee38[_0x7b9a('0x15')])[_0x7b9a('0x1f')](','));break;case'amazonlex':var _0x4aa495=_0x3e65fa[_0x7b9a('0x21')][_0x7b9a('0x1a')](',');_0x331ae6[_0x7b9a('0x1d')](_0x4aa495[0x0]);_0x331ae6['push'](_0x4aa495[0x1]);_0x331ae6[_0x7b9a('0x1d')](_0x4aa495[0x2]);_0x331ae6[_0x7b9a('0x1d')](_0x4aa495[0x3]);_0x331ae6['push'](_0x4aa495['slice'](0x4,_0x4aa495[_0x7b9a('0x15')])[_0x7b9a('0x1f')](','));break;case'message':_0x331ae6[_0x7b9a('0x1d')](_0x3e65fa[_0x7b9a('0x21')]);break;case _0x7b9a('0x22'):_0x331ae6[_0x7b9a('0x1d')](_0x3e65fa[_0x7b9a('0x23')]);_0x331ae6['push'](_0x3e65fa[_0x7b9a('0x21')]);break;case _0x7b9a('0x24'):var _0x14c227=utils[_0x7b9a('0x25')](_0x346daa[_0x7b9a('0x26')][_0x7b9a('0x27')],_0x346daa);var _0x5f1da4=_0x3e65fa['appdata'][_0x7b9a('0x1a')](',');_0x331ae6[_0x7b9a('0x1d')](_0x5f1da4[0x0]);_0x331ae6['push'](_0x5f1da4[0x1]);_0x331ae6[_0x7b9a('0x1d')](_0x5f1da4[0x2]);_0x331ae6[_0x7b9a('0x1d')](_0x5f1da4[0x3]);_0x331ae6[_0x7b9a('0x1d')](_0x5f1da4[0x4]);_0x331ae6['push'](_0x5f1da4[0x5]);_0x331ae6[_0x7b9a('0x1d')](_0x5f1da4[0x6]);_0x331ae6[_0x7b9a('0x1d')](_0x5f1da4[0x7]);_0x331ae6['push'](_0x5f1da4[0x8]);_0x331ae6['push'](_0x5f1da4[0x9]);_0x331ae6[_0x7b9a('0x1d')](_0x5f1da4[0xa]);_0x331ae6[_0x7b9a('0x1d')](_0x346daa[_0x7b9a('0x12')]['id']);_0x331ae6[_0x7b9a('0x1d')](_0x346daa[_0x7b9a('0x11')]['id']);_0x331ae6[_0x7b9a('0x1d')](_0x3e65fa[_0x7b9a('0x28')]);_0x331ae6[_0x7b9a('0x1d')](_0x346daa['interaction'][_0x7b9a('0x29')]);_0x331ae6['push'](_0x346daa[_0x7b9a('0x2a')][_0x7b9a('0x2a')]);_0x331ae6[_0x7b9a('0x1d')](_0x14c227);break;default:_0x331ae6=_[_0x7b9a('0x2b')](_0x3e65fa[_0x7b9a('0x21')])?[]:_0x3e65fa[_0x7b9a('0x21')]['split'](',');}var _0x34eebe={'id':util[_0x7b9a('0x2c')](_0x7b9a('0x2d'),_0x34a82d,_0x3e65fa['id'],_0x3e65fa[_0x7b9a('0x18')]),'condition':require('./interval')[_0x7b9a('0x2e')](_0x34a82d,getIntervals(_0xb157e5[_0x7b9a('0x2f')],_0x3e65fa),_0xb157e5),'consequence':require(_0x7b9a('0x30')+_0x3e65fa[_0x7b9a('0x18')])['consequence'](_0x34a82d,_0x331ae6,_0xb157e5,_0x346daa),'p':_0x3e65fa[_0x7b9a('0x31')]||0x0};logger['info'](_0x7b9a('0x32'),_0x34eebe['id'],_0x7b9a('0x33'),getIntervals(_0xb157e5[_0x7b9a('0x2f')],_0x3e65fa)[_0x7b9a('0x1f')](_0x7b9a('0x34')));_0x4996f1[_0x7b9a('0x1d')](_0x34eebe);}else{logger['error'](_0x7b9a('0x35'),path[_0x7b9a('0x1f')](__dirname,_0x7b9a('0x13'),_0x3e65fa['app']+'.js'));}}_0xb157e5[_0x7b9a('0x10')][_0x34a82d]=new RuleEngine(_0x4996f1);_0xb157e5[_0x7b9a('0x10')][_0x34a82d][_0x7b9a('0x36')](_0x346daa,function(_0x5cd3dd){logger[_0x7b9a('0x37')](_0x7b9a('0x38'),JSON['stringify'](_0x5cd3dd['matchPath']));if(_0xb157e5['rules'][_0x34a82d]){_0xb157e5[_0x7b9a('0x10')][_0x34a82d][_0x7b9a('0x39')]('complete');}});return _0x35e602({'code':0xc8,'message':_0x346daa});}else{logger[_0x7b9a('0x37')](_0x7b9a('0x3a'));return _0x35e602({'code':0xc8,'message':_0x346daa});}}catch(_0x3e6549){logger['error'](_0x3e6549[_0x7b9a('0x3b')]);return _0x2f1899(_0x22a7e4['error'](0x1f4,_0x3e6549));}}return _0x2f1899(_0x7b9a('0x3c'));});},'AcceptMessage':function(_0x102d0c){var _0x365643=this;return new Promise(function(_0xeaa48c,_0x349bb8){if(_0x102d0c['agent']&&_0x102d0c[_0x7b9a('0x3d')]['id']){if(_0xb157e5['agents'][_0x102d0c[_0x7b9a('0x3d')]['id']]){_0xb157e5['agents'][_0x102d0c['agent']['id']][_0x7b9a('0x3e')]=![];_0xb157e5[_0x7b9a('0x3f')][_0x102d0c[_0x7b9a('0x3d')]['id']][_0x7b9a('0x40')]=undefined;}}if(_0x102d0c[_0x7b9a('0x11')]&&_0x102d0c[_0x7b9a('0x11')]['id']){try{var _0xd38628=getId(_0x102d0c[_0x7b9a('0x1b')],_0x102d0c[_0x7b9a('0x11')]?_0x102d0c['message']['id']:0x0,_0x102d0c[_0x7b9a('0x12')]?_0x102d0c[_0x7b9a('0x12')]['id']:0x0);if(_0xb157e5['rules'][_0xd38628]){_0xb157e5['rules'][_0xd38628]['emit'](_0x7b9a('0x41'));if(rpc[_0x102d0c[_0x7b9a('0x1b')]+_0x7b9a('0x42')]){rpc[_0x102d0c[_0x7b9a('0x1b')]+'QueueReport'][_0x7b9a('0x43')](_0xd38628,{'UserId':_0x102d0c[_0x7b9a('0x11')][_0x7b9a('0x44')]})[_0x7b9a('0x45')](function(_0x2d083b){logger['error'](_0x7b9a('0x46'));});}}return _0xeaa48c({'code':0xc8,'message':_0x102d0c});}catch(_0x54eb5f){logger[_0x7b9a('0x47')](_0x54eb5f[_0x7b9a('0x3b')]);return _0x349bb8(_0x365643[_0x7b9a('0x47')](0x1f4,_0x54eb5f));}}logger[_0x7b9a('0x47')]('message\x20is\x20empty');return _0x349bb8(_0x365643[_0x7b9a('0x47')](0x1f4,_0x7b9a('0x48')));});},'RejectMessage':function(_0x354a87){var _0x28855a=this;return new Promise(function(_0x2b0db5,_0x3e2f1b){if(_0x354a87[_0x7b9a('0x3d')]&&_0x354a87['agent']['id']){try{if(_0xb157e5['agents'][_0x354a87['agent']['id']]){_0xb157e5[_0x7b9a('0x3f')][_0x354a87[_0x7b9a('0x3d')]['id']]['busy']=![];_0xb157e5['agents'][_0x354a87['agent']['id']]['busyQueue']=undefined;}return _0x2b0db5({'code':0xc8,'message':_0x354a87});}catch(_0x7c800f){logger[_0x7b9a('0x47')](_0x7c800f[_0x7b9a('0x3b')]);return _0x3e2f1b(_0x28855a[_0x7b9a('0x47')](0x1f4,_0x7c800f));}}logger[_0x7b9a('0x47')](_0x7b9a('0x48'));return _0x3e2f1b(_0x28855a[_0x7b9a('0x47')](0x1f4,_0x7b9a('0x48')));});},'AbandonInteraction':function(_0x5dc17e){var _0x1f99f5=this;return new Promise(function(_0x5d499f,_0x23a0cb){if(_0x5dc17e[_0x7b9a('0x1b')]&&_0x5dc17e[_0x7b9a('0x12')]&&_0x5dc17e[_0x7b9a('0x12')]['id']){try{var _0x19e6e9=getId(_0x5dc17e['channel'],_0x5dc17e[_0x7b9a('0x11')]?_0x5dc17e['message']['id']:0x0,_0x5dc17e[_0x7b9a('0x12')]?_0x5dc17e[_0x7b9a('0x12')]['id']:0x0);if(_0xb157e5[_0x7b9a('0x10')][_0x19e6e9]){_0xb157e5['rules'][_0x19e6e9]['emit']('end');}return _0x5d499f({'code':0xc8,'message':_0x5dc17e});}catch(_0x4f6843){logger[_0x7b9a('0x47')](_0x4f6843[_0x7b9a('0x3b')]);return _0x23a0cb(_0x1f99f5[_0x7b9a('0x47')](0x1f4,_0x4f6843));}}logger['error'](_0x7b9a('0x48'));return _0x23a0cb(_0x1f99f5[_0x7b9a('0x47')](0x1f4,_0x7b9a('0x48')));});},'AgentCapacity':function(_0x3c70bf){var _0xea7b37=this;return new Promise(function(_0x4c3939,_0x8bd047){if(_0xb157e5[_0x7b9a('0x3f')][_0x7b9a('0x49')](_0x3c70bf['id'])){for(var _0x4fe869 in _0x3c70bf['capacity']){if(_0x3c70bf['capacity'][_0x7b9a('0x49')](_0x4fe869)){if(_0xb157e5[_0x7b9a('0x3f')][_0x3c70bf['id']][_0x7b9a('0x49')](_0x4fe869+'CurrentCapacity')){_0xb157e5[_0x7b9a('0x3f')][_0x3c70bf['id']][_0x4fe869+_0x7b9a('0x4a')]=parseInt(_0x3c70bf['capacity'][_0x4fe869],0xa);}}}_0xb157e5[_0x7b9a('0x3f')][_0x3c70bf['id']]['updateRealtime']();return _0x4c3939({'code':0xc8,'message':_0xb157e5[_0x7b9a('0x3f')][_0x3c70bf['id']]});}else{return _0x8bd047(_0xea7b37['error'](0x1f4,_0x7b9a('0x4b')));}});},'Agents':function(_0xfa4a89){return new Promise(function(_0x302f71,_0x4121d5){var _0x5d45ae=_[_0x7b9a('0x4c')](_0xb157e5[_0x7b9a('0x3f')]);_0x302f71({'count':_0x5d45ae[_0x7b9a('0x15')],'rows':_0x5d45ae});});},'ChatQueues':function(_0x273134){return new Promise(function(_0x567328,_0x239b62){var _0x551362=[];for(var _0x3ab2cb in _0xb157e5['chatQueues']){if(_0xb157e5[_0x7b9a('0x4d')]['hasOwnProperty'](_0x3ab2cb)){var _0x58fbd2=_0xb157e5['chatQueues'][_0x3ab2cb];var _0x48442a={'id':_0x58fbd2['id'],'available':_0x58fbd2[_0x7b9a('0x4e')],'loggedIn':_0x58fbd2[_0x7b9a('0x4f')],'name':_0x58fbd2[_0x7b9a('0x50')],'paused':_0x58fbd2[_0x7b9a('0x51')],'waiting':_0x58fbd2['waiting']};_0x551362[_0x7b9a('0x1d')](_0x48442a);}}_0x567328({'count':_0x551362['length'],'rows':_0x551362});});},'MailQueues':function(_0x50b6f1){return new Promise(function(_0x15679c,_0x564e51){var _0x54066a=[];for(var _0x7ad607 in _0xb157e5[_0x7b9a('0x52')]){if(_0xb157e5['mailQueues'][_0x7b9a('0x49')](_0x7ad607)){var _0x4a441c=_0xb157e5[_0x7b9a('0x52')][_0x7ad607];var _0x23ffd0={'id':_0x4a441c['id'],'available':_0x4a441c[_0x7b9a('0x4e')],'loggedIn':_0x4a441c['loggedIn'],'name':_0x4a441c['name'],'paused':_0x4a441c['paused'],'waiting':_0x4a441c['waiting']};_0x54066a[_0x7b9a('0x1d')](_0x23ffd0);}}_0x15679c({'count':_0x54066a[_0x7b9a('0x15')],'rows':_0x54066a});});},'OpenchannelQueues':function(_0x3fd697){return new Promise(function(_0x2092b6,_0x261a43){var _0x147d23=[];for(var _0x45014b in _0xb157e5['openchannelQueues']){if(_0xb157e5[_0x7b9a('0x53')][_0x7b9a('0x49')](_0x45014b)){var _0x4f312a=_0xb157e5[_0x7b9a('0x53')][_0x45014b];var _0x3f01dc={'id':_0x4f312a['id'],'available':_0x4f312a[_0x7b9a('0x4e')],'loggedIn':_0x4f312a['loggedIn'],'name':_0x4f312a['name'],'paused':_0x4f312a[_0x7b9a('0x51')],'waiting':_0x4f312a[_0x7b9a('0x54')]};_0x147d23['push'](_0x3f01dc);}}_0x2092b6({'count':_0x147d23[_0x7b9a('0x15')],'rows':_0x147d23});});},'SmsQueues':function(_0x5ab25f){return new Promise(function(_0x46aa05,_0xbbb057){var _0x3a46e9=[];for(var _0x59d4fa in _0xb157e5[_0x7b9a('0x55')]){if(_0xb157e5[_0x7b9a('0x55')][_0x7b9a('0x49')](_0x59d4fa)){var _0xe229ed=_0xb157e5[_0x7b9a('0x55')][_0x59d4fa];var _0x575c9e={'id':_0xe229ed['id'],'available':_0xe229ed['available'],'loggedIn':_0xe229ed[_0x7b9a('0x4f')],'name':_0xe229ed[_0x7b9a('0x50')],'paused':_0xe229ed['paused'],'waiting':_0xe229ed[_0x7b9a('0x54')]};_0x3a46e9[_0x7b9a('0x1d')](_0x575c9e);}}_0x46aa05({'count':_0x3a46e9[_0x7b9a('0x15')],'rows':_0x3a46e9});});},'FaxQueues':function(_0x5b02a6){return new Promise(function(_0x4af252,_0x17a29){var _0x13cea6=[];for(var _0x38b0da in _0xb157e5[_0x7b9a('0x56')]){if(_0xb157e5['faxQueues'][_0x7b9a('0x49')](_0x38b0da)){var _0x276da1=_0xb157e5[_0x7b9a('0x56')][_0x38b0da];var _0x4fdc1a={'id':_0x276da1['id'],'available':_0x276da1['available'],'loggedIn':_0x276da1[_0x7b9a('0x4f')],'name':_0x276da1[_0x7b9a('0x50')],'paused':_0x276da1[_0x7b9a('0x51')],'waiting':_0x276da1[_0x7b9a('0x54')]};_0x13cea6['push'](_0x4fdc1a);}}_0x4af252({'count':_0x13cea6[_0x7b9a('0x15')],'rows':_0x13cea6});});},'WhatsappQueues':function(_0x300a44){return new Promise(function(_0x52cc35,_0x26ea95){var _0x1ae9c5=[];for(var _0x471b37 in _0xb157e5[_0x7b9a('0x57')]){if(_0xb157e5[_0x7b9a('0x57')][_0x7b9a('0x49')](_0x471b37)){var _0xc408dd=_0xb157e5[_0x7b9a('0x57')][_0x471b37];var _0x449c2e={'id':_0xc408dd['id'],'available':_0xc408dd[_0x7b9a('0x4e')],'loggedIn':_0xc408dd[_0x7b9a('0x4f')],'name':_0xc408dd['name'],'paused':_0xc408dd['paused'],'waiting':_0xc408dd[_0x7b9a('0x54')]};_0x1ae9c5[_0x7b9a('0x1d')](_0x449c2e);}}_0x52cc35({'count':_0x1ae9c5['length'],'rows':_0x1ae9c5});});},'ChatQueuesWaitingInteractions':function(_0x2c0819){return new Promise(function(_0xa76006,_0x52f55c){var _0xff5477=_[_0x7b9a('0x4c')](_0xb157e5[_0x7b9a('0x58')]);_0xa76006({'count':_0xff5477[_0x7b9a('0x15')],'rows':_0xff5477});});},'MailQueuesWaitingInteractions':function(_0x449836){return new Promise(function(_0x327a74,_0x432405){var _0x237399=_[_0x7b9a('0x4c')](_0xb157e5['mailQueuesWaitingInteractions']);_0x327a74({'count':_0x237399[_0x7b9a('0x15')],'rows':_0x237399});});},'OpenchannelQueuesWaitingInteractions':function(_0x141340){return new Promise(function(_0x6d2d50,_0x3321b6){var _0x3d928e=_[_0x7b9a('0x4c')](_0xb157e5[_0x7b9a('0x59')]);_0x6d2d50({'count':_0x3d928e[_0x7b9a('0x15')],'rows':_0x3d928e});});},'SmsQueuesWaitingInteractions':function(_0x5d522b){return new Promise(function(_0x6937b9,_0x217ae5){var _0x3022e0=_['values'](_0xb157e5[_0x7b9a('0x5a')]);_0x6937b9({'count':_0x3022e0[_0x7b9a('0x15')],'rows':_0x3022e0});});},'FaxQueuesWaitingInteractions':function(_0x1c077d){return new Promise(function(_0x43e57d,_0x6e01d1){var _0x14f27e=_[_0x7b9a('0x4c')](_0xb157e5[_0x7b9a('0x5b')]);_0x43e57d({'count':_0x14f27e['length'],'rows':_0x14f27e});});},'WhatsappQueuesWaitingInteractions':function(_0x5260ca){return new Promise(function(_0x178ebc,_0x220146){var _0x16e506=_[_0x7b9a('0x4c')](_0xb157e5[_0x7b9a('0x5c')]);_0x178ebc({'count':_0x16e506[_0x7b9a('0x15')],'rows':_0x16e506});});}};var _0x18c96f=jayson[_0x7b9a('0x5d')](_0x344fa7)[_0x7b9a('0x5e')]();_0x18c96f['on'](_0x7b9a('0x47'),function(_0x5b0ab3){logger[_0x7b9a('0x47')](JSON[_0x7b9a('0x5f')](_0x5b0ab3));return _0x2853f2(_0x5b0ab3);});_0x18c96f[_0x7b9a('0x60')](0x232c,'127.0.0.1',function(){console[_0x7b9a('0x61')](_0x7b9a('0x62'),0x232c);return _0x6fa16a(_0x7b9a('0x63')+0x232c);});});};
\ No newline at end of file
+var _0xd9dc=['emit','complete','No\x20applications\x20to\x20execute','routing\x20is\x20empty','agent','agents','busy','busyQueue','QueueReport','update','UserId','catch','error','error\x20update\x20queue\x20report','message\x20is\x20empty','stack','end','hasOwnProperty','capacity','CurrentCapacity','updateRealtime','agent\x20not\x20found','chatQueues','loggedIn','waiting','mailQueues','available','name','paused','openchannelQueues','smsQueues','faxQueues','whatsappQueues','values','chatQueuesWaitingInteractions','openchannelQueuesWaitingInteractions','smsQueuesWaitingInteractions','faxQueuesWaitingInteractions','server','127.0.0.1','log','RPC\x20listening\x20on\x20port:','util','path','bluebird','uuid','./applications/utils','../../../config/logger','routing','../rpc/openchannelQueueReport','../rpc/mailQueueReport','../rpc/chatQueueReport','../rpc/faxQueueReport','../rpc/whatsappQueueReport','../lib/rule-engine','format','%s.%s.%s','isNil','IntervalId','Intervals','interval','listen','rules','channel','message','interaction','applications','isArray','length','existsSync','join','app','.js','toLowerCase','appdata','split','mail','push','slice','dialogflow','amazonlex','tag','tvox','getMustacheRender','account','notificationTemplate','ChatWebsiteId','ContactId','body','%s:%s:%s','./interval','intervals','./applications/','consequence','priority','info','Push\x20new\x20rule','on\x20interval','\x20|\x20','Applications\x20executed','stringify'];(function(_0x3e9a9c,_0x19c96a){var _0x568a31=function(_0x4ffeb4){while(--_0x4ffeb4){_0x3e9a9c['push'](_0x3e9a9c['shift']());}};_0x568a31(++_0x19c96a);}(_0xd9dc,0x1be));var _0xcd9d=function(_0x388b2b,_0x4bcdfb){_0x388b2b=_0x388b2b-0x0;var _0x491672=_0xd9dc[_0x388b2b];return _0x491672;};'use strict';var _=require('lodash');var util=require(_0xcd9d('0x0'));var path=require(_0xcd9d('0x1'));var fs=require('fs');var jayson=require('jayson/promise');var BPromise=require(_0xcd9d('0x2'));var uuid=require(_0xcd9d('0x3'));var utils=require(_0xcd9d('0x4'));var config=require('../../../config/environment');var logger=require(_0xcd9d('0x5'))(_0xcd9d('0x6'));var rpc={'openchannelQueueReport':require(_0xcd9d('0x7')),'mailQueueReport':require(_0xcd9d('0x8')),'chatQueueReport':require(_0xcd9d('0x9')),'smsQueueReport':require('../rpc/smsQueueReport'),'faxQueueReport':require(_0xcd9d('0xa')),'whatsappQueueReport':require(_0xcd9d('0xb'))};var RuleEngine=require(_0xcd9d('0xc'));function getId(_0x285e75,_0x45130c,_0x549558){return util[_0xcd9d('0xd')](_0xcd9d('0xe'),_0x285e75,_0x45130c||0x0,_0x549558||0x0);}function getIntervals(_0x32dce7,_0x112c01){var _0x18f6a7=[];if(!_[_0xcd9d('0xf')](_0x112c01[_0xcd9d('0x10')])&&!_[_0xcd9d('0xf')](_0x32dce7[_0x112c01['IntervalId']])&&!_[_0xcd9d('0xf')](_0x32dce7[_0x112c01['IntervalId']][_0xcd9d('0x11')])){_0x18f6a7=_['map'](_0x32dce7[_0x112c01[_0xcd9d('0x10')]][_0xcd9d('0x11')],_0xcd9d('0x12'));}else if(!_['isNil'](_0x112c01[_0xcd9d('0x12')])){_0x18f6a7=[_0x112c01['interval']];}return _0x18f6a7;}exports[_0xcd9d('0x13')]=function(_0x957089){_0x957089[_0xcd9d('0x14')]={};return new BPromise(function(_0x582a92,_0x12edfc){var _0x64d51c={'Start':function(_0x50f14d){var _0x40d5aa=this;return new Promise(function(_0x5a7248,_0x3ea72c){if(_0x50f14d){try{var _0x534c8f=[];var _0x3e5e23=getId(_0x50f14d[_0xcd9d('0x15')],_0x50f14d[_0xcd9d('0x16')]?_0x50f14d[_0xcd9d('0x16')]['id']:0x0,_0x50f14d[_0xcd9d('0x17')]?_0x50f14d[_0xcd9d('0x17')]['id']:0x0);if(_0x50f14d[_0xcd9d('0x18')]&&_[_0xcd9d('0x19')](_0x50f14d[_0xcd9d('0x18')])&&_0x50f14d[_0xcd9d('0x18')][_0xcd9d('0x1a')]){for(var _0x497425=0x0;_0x497425<_0x50f14d[_0xcd9d('0x18')][_0xcd9d('0x1a')];_0x497425+=0x1){var _0x3599eb=_0x50f14d['applications'][_0x497425];if(fs[_0xcd9d('0x1b')](path[_0xcd9d('0x1c')](__dirname,_0xcd9d('0x18'),_0x3599eb[_0xcd9d('0x1d')]+_0xcd9d('0x1e')))){var _0x2891b6=[];switch(_0x3599eb[_0xcd9d('0x1d')][_0xcd9d('0x1f')]()){case'autoreply':var _0x5d7613=_0x3599eb[_0xcd9d('0x20')][_0xcd9d('0x21')](',');if(_0x50f14d[_0xcd9d('0x15')]===_0xcd9d('0x22')){_0x2891b6['push'](_0x5d7613[0x0]);_0x2891b6[_0xcd9d('0x23')](_0x5d7613[0x1]);_0x2891b6[_0xcd9d('0x23')](_0x5d7613[_0xcd9d('0x24')](0x2,_0x5d7613[_0xcd9d('0x1a')])[_0xcd9d('0x1c')](','));}else{_0x2891b6[_0xcd9d('0x23')](_0x5d7613[0x0]);_0x2891b6[_0xcd9d('0x23')](_0x5d7613[_0xcd9d('0x24')](0x1,_0x5d7613[_0xcd9d('0x1a')])[_0xcd9d('0x1c')](','));}break;case _0xcd9d('0x25'):var _0x3b1abd=_0x3599eb[_0xcd9d('0x20')]['split'](',');_0x2891b6[_0xcd9d('0x23')](_0x3b1abd[0x0]);_0x2891b6[_0xcd9d('0x23')](_0x3b1abd[0x1]);_0x2891b6['push'](_0x3b1abd['slice'](0x2,_0x3b1abd[_0xcd9d('0x1a')])[_0xcd9d('0x1c')](','));break;case'dialogflowv2':var _0xcf8b36=_0x3599eb[_0xcd9d('0x20')][_0xcd9d('0x21')](',');_0x2891b6[_0xcd9d('0x23')](_0xcf8b36[0x0]);_0x2891b6[_0xcd9d('0x23')](_0xcf8b36[0x1]);_0x2891b6['push'](_0xcf8b36[0x2]);_0x2891b6[_0xcd9d('0x23')](_0xcf8b36[0x3]);_0x2891b6[_0xcd9d('0x23')](_0xcf8b36[_0xcd9d('0x24')](0x4,_0xcf8b36['length'])[_0xcd9d('0x1c')](','));break;case _0xcd9d('0x26'):var _0x38e3e2=_0x3599eb['appdata'][_0xcd9d('0x21')](',');_0x2891b6[_0xcd9d('0x23')](_0x38e3e2[0x0]);_0x2891b6[_0xcd9d('0x23')](_0x38e3e2[0x1]);_0x2891b6[_0xcd9d('0x23')](_0x38e3e2[0x2]);_0x2891b6['push'](_0x38e3e2[0x3]);_0x2891b6['push'](_0x38e3e2[_0xcd9d('0x24')](0x4,_0x38e3e2['length'])['join'](','));break;case _0xcd9d('0x16'):_0x2891b6[_0xcd9d('0x23')](_0x3599eb[_0xcd9d('0x20')]);break;case _0xcd9d('0x27'):_0x2891b6['push'](_0x3599eb['TagId']);_0x2891b6[_0xcd9d('0x23')](_0x3599eb[_0xcd9d('0x20')]);break;case _0xcd9d('0x28'):var _0x57ac64=utils[_0xcd9d('0x29')](_0x50f14d[_0xcd9d('0x2a')][_0xcd9d('0x2b')],_0x50f14d);var _0x1cac92=_0x3599eb[_0xcd9d('0x20')][_0xcd9d('0x21')](',');_0x2891b6[_0xcd9d('0x23')](_0x1cac92[0x0]);_0x2891b6[_0xcd9d('0x23')](_0x1cac92[0x1]);_0x2891b6[_0xcd9d('0x23')](_0x1cac92[0x2]);_0x2891b6[_0xcd9d('0x23')](_0x1cac92[0x3]);_0x2891b6[_0xcd9d('0x23')](_0x1cac92[0x4]);_0x2891b6[_0xcd9d('0x23')](_0x1cac92[0x5]);_0x2891b6['push'](_0x1cac92[0x6]);_0x2891b6[_0xcd9d('0x23')](_0x1cac92[0x7]);_0x2891b6[_0xcd9d('0x23')](_0x1cac92[0x8]);_0x2891b6['push'](_0x1cac92[0x9]);_0x2891b6['push'](_0x1cac92[0xa]);_0x2891b6[_0xcd9d('0x23')](_0x50f14d['interaction']['id']);_0x2891b6['push'](_0x50f14d[_0xcd9d('0x16')]['id']);_0x2891b6[_0xcd9d('0x23')](_0x3599eb[_0xcd9d('0x2c')]);_0x2891b6[_0xcd9d('0x23')](_0x50f14d['interaction'][_0xcd9d('0x2d')]);_0x2891b6[_0xcd9d('0x23')](_0x50f14d['body'][_0xcd9d('0x2e')]);_0x2891b6[_0xcd9d('0x23')](_0x57ac64);break;default:_0x2891b6=_[_0xcd9d('0xf')](_0x3599eb[_0xcd9d('0x20')])?[]:_0x3599eb['appdata']['split'](',');}var _0x308488={'id':util['format'](_0xcd9d('0x2f'),_0x3e5e23,_0x3599eb['id'],_0x3599eb[_0xcd9d('0x1d')]),'condition':require(_0xcd9d('0x30'))['condition'](_0x3e5e23,getIntervals(_0x957089[_0xcd9d('0x31')],_0x3599eb),_0x957089),'consequence':require(_0xcd9d('0x32')+_0x3599eb[_0xcd9d('0x1d')])[_0xcd9d('0x33')](_0x3e5e23,_0x2891b6,_0x957089,_0x50f14d),'p':_0x3599eb[_0xcd9d('0x34')]||0x0};logger[_0xcd9d('0x35')](_0xcd9d('0x36'),_0x308488['id'],_0xcd9d('0x37'),getIntervals(_0x957089[_0xcd9d('0x31')],_0x3599eb)[_0xcd9d('0x1c')](_0xcd9d('0x38')));_0x534c8f['push'](_0x308488);}else{logger['error']('Please\x20create\x20a\x20new\x20file\x20under',path[_0xcd9d('0x1c')](__dirname,_0xcd9d('0x18'),_0x3599eb[_0xcd9d('0x1d')]+'.js'));}}_0x957089[_0xcd9d('0x14')][_0x3e5e23]=new RuleEngine(_0x534c8f);_0x957089[_0xcd9d('0x14')][_0x3e5e23]['execute'](_0x50f14d,function(_0x44d0ca){logger['info'](_0xcd9d('0x39'),JSON[_0xcd9d('0x3a')](_0x44d0ca['matchPath']));if(_0x957089['rules'][_0x3e5e23]){_0x957089[_0xcd9d('0x14')][_0x3e5e23][_0xcd9d('0x3b')](_0xcd9d('0x3c'));}});return _0x5a7248({'code':0xc8,'message':_0x50f14d});}else{logger[_0xcd9d('0x35')](_0xcd9d('0x3d'));return _0x5a7248({'code':0xc8,'message':_0x50f14d});}}catch(_0x1081cd){logger['error'](_0x1081cd['stack']);return _0x3ea72c(_0x40d5aa['error'](0x1f4,_0x1081cd));}}return _0x3ea72c(_0xcd9d('0x3e'));});},'AcceptMessage':function(_0x3d1bc0){var _0x53a8b2=this;return new Promise(function(_0x45233f,_0x3cf390){if(_0x3d1bc0[_0xcd9d('0x3f')]&&_0x3d1bc0[_0xcd9d('0x3f')]['id']){if(_0x957089[_0xcd9d('0x40')][_0x3d1bc0[_0xcd9d('0x3f')]['id']]){_0x957089[_0xcd9d('0x40')][_0x3d1bc0[_0xcd9d('0x3f')]['id']][_0xcd9d('0x41')]=![];_0x957089[_0xcd9d('0x40')][_0x3d1bc0['agent']['id']][_0xcd9d('0x42')]=undefined;}}if(_0x3d1bc0[_0xcd9d('0x16')]&&_0x3d1bc0[_0xcd9d('0x16')]['id']){try{var _0x2b927c=getId(_0x3d1bc0[_0xcd9d('0x15')],_0x3d1bc0[_0xcd9d('0x16')]?_0x3d1bc0[_0xcd9d('0x16')]['id']:0x0,_0x3d1bc0[_0xcd9d('0x17')]?_0x3d1bc0['interaction']['id']:0x0);if(_0x957089[_0xcd9d('0x14')][_0x2b927c]){_0x957089[_0xcd9d('0x14')][_0x2b927c][_0xcd9d('0x3b')]('end');if(rpc[_0x3d1bc0[_0xcd9d('0x15')]+_0xcd9d('0x43')]){rpc[_0x3d1bc0[_0xcd9d('0x15')]+_0xcd9d('0x43')][_0xcd9d('0x44')](_0x2b927c,{'UserId':_0x3d1bc0[_0xcd9d('0x16')][_0xcd9d('0x45')]})[_0xcd9d('0x46')](function(_0x5c541e){logger[_0xcd9d('0x47')](_0xcd9d('0x48'));});}}return _0x45233f({'code':0xc8,'message':_0x3d1bc0});}catch(_0x293d30){logger[_0xcd9d('0x47')](_0x293d30['stack']);return _0x3cf390(_0x53a8b2[_0xcd9d('0x47')](0x1f4,_0x293d30));}}logger[_0xcd9d('0x47')](_0xcd9d('0x49'));return _0x3cf390(_0x53a8b2[_0xcd9d('0x47')](0x1f4,'message\x20is\x20empty'));});},'RejectMessage':function(_0x27a363){var _0x3e6754=this;return new Promise(function(_0x1bf893,_0x425e86){if(_0x27a363[_0xcd9d('0x3f')]&&_0x27a363['agent']['id']){try{if(_0x957089[_0xcd9d('0x40')][_0x27a363[_0xcd9d('0x3f')]['id']]){_0x957089['agents'][_0x27a363[_0xcd9d('0x3f')]['id']][_0xcd9d('0x41')]=![];_0x957089['agents'][_0x27a363[_0xcd9d('0x3f')]['id']][_0xcd9d('0x42')]=undefined;}return _0x1bf893({'code':0xc8,'message':_0x27a363});}catch(_0x28f4bd){logger[_0xcd9d('0x47')](_0x28f4bd[_0xcd9d('0x4a')]);return _0x425e86(_0x3e6754[_0xcd9d('0x47')](0x1f4,_0x28f4bd));}}logger['error']('message\x20is\x20empty');return _0x425e86(_0x3e6754['error'](0x1f4,_0xcd9d('0x49')));});},'AbandonInteraction':function(_0x372bce){var _0x36ab7d=this;return new Promise(function(_0x4ba03e,_0x18d427){if(_0x372bce[_0xcd9d('0x15')]&&_0x372bce['interaction']&&_0x372bce[_0xcd9d('0x17')]['id']){try{var _0x1877fd=getId(_0x372bce[_0xcd9d('0x15')],_0x372bce['message']?_0x372bce[_0xcd9d('0x16')]['id']:0x0,_0x372bce[_0xcd9d('0x17')]?_0x372bce['interaction']['id']:0x0);if(_0x957089[_0xcd9d('0x14')][_0x1877fd]){_0x957089['rules'][_0x1877fd][_0xcd9d('0x3b')](_0xcd9d('0x4b'));}return _0x4ba03e({'code':0xc8,'message':_0x372bce});}catch(_0x1e350c){logger['error'](_0x1e350c[_0xcd9d('0x4a')]);return _0x18d427(_0x36ab7d[_0xcd9d('0x47')](0x1f4,_0x1e350c));}}logger[_0xcd9d('0x47')](_0xcd9d('0x49'));return _0x18d427(_0x36ab7d[_0xcd9d('0x47')](0x1f4,_0xcd9d('0x49')));});},'AgentCapacity':function(_0x2d1b93){var _0x288d3e=this;return new Promise(function(_0xf9b506,_0x542546){if(_0x957089[_0xcd9d('0x40')][_0xcd9d('0x4c')](_0x2d1b93['id'])){for(var _0x303584 in _0x2d1b93['capacity']){if(_0x2d1b93[_0xcd9d('0x4d')][_0xcd9d('0x4c')](_0x303584)){if(_0x957089[_0xcd9d('0x40')][_0x2d1b93['id']][_0xcd9d('0x4c')](_0x303584+_0xcd9d('0x4e'))){_0x957089[_0xcd9d('0x40')][_0x2d1b93['id']][_0x303584+'CurrentCapacity']=parseInt(_0x2d1b93['capacity'][_0x303584],0xa);}}}_0x957089[_0xcd9d('0x40')][_0x2d1b93['id']][_0xcd9d('0x4f')]();return _0xf9b506({'code':0xc8,'message':_0x957089[_0xcd9d('0x40')][_0x2d1b93['id']]});}else{return _0x542546(_0x288d3e[_0xcd9d('0x47')](0x1f4,_0xcd9d('0x50')));}});},'Agents':function(_0x55e3df){return new Promise(function(_0x39a73c,_0x55e1a3){var _0xe4aace=_['values'](_0x957089[_0xcd9d('0x40')]);_0x39a73c({'count':_0xe4aace['length'],'rows':_0xe4aace});});},'ChatQueues':function(_0x380e8b){return new Promise(function(_0x32fd7e,_0x5608f1){var _0x2f4bfa=[];for(var _0x5a7e9f in _0x957089[_0xcd9d('0x51')]){if(_0x957089[_0xcd9d('0x51')]['hasOwnProperty'](_0x5a7e9f)){var _0x305eff=_0x957089[_0xcd9d('0x51')][_0x5a7e9f];var _0x23998d={'id':_0x305eff['id'],'available':_0x305eff['available'],'loggedIn':_0x305eff[_0xcd9d('0x52')],'name':_0x305eff['name'],'paused':_0x305eff['paused'],'waiting':_0x305eff[_0xcd9d('0x53')]};_0x2f4bfa[_0xcd9d('0x23')](_0x23998d);}}_0x32fd7e({'count':_0x2f4bfa[_0xcd9d('0x1a')],'rows':_0x2f4bfa});});},'MailQueues':function(_0x538c53){return new Promise(function(_0x1b5467,_0x1787fb){var _0x251e68=[];for(var _0x26cad2 in _0x957089[_0xcd9d('0x54')]){if(_0x957089[_0xcd9d('0x54')]['hasOwnProperty'](_0x26cad2)){var _0x30fdc2=_0x957089[_0xcd9d('0x54')][_0x26cad2];var _0x52933d={'id':_0x30fdc2['id'],'available':_0x30fdc2[_0xcd9d('0x55')],'loggedIn':_0x30fdc2['loggedIn'],'name':_0x30fdc2[_0xcd9d('0x56')],'paused':_0x30fdc2[_0xcd9d('0x57')],'waiting':_0x30fdc2[_0xcd9d('0x53')]};_0x251e68[_0xcd9d('0x23')](_0x52933d);}}_0x1b5467({'count':_0x251e68[_0xcd9d('0x1a')],'rows':_0x251e68});});},'OpenchannelQueues':function(_0x2e1b36){return new Promise(function(_0xf8932c,_0xb62b90){var _0x2e7eef=[];for(var _0x4a16f8 in _0x957089[_0xcd9d('0x58')]){if(_0x957089['openchannelQueues'][_0xcd9d('0x4c')](_0x4a16f8)){var _0x124c5d=_0x957089[_0xcd9d('0x58')][_0x4a16f8];var _0x2f3c93={'id':_0x124c5d['id'],'available':_0x124c5d[_0xcd9d('0x55')],'loggedIn':_0x124c5d['loggedIn'],'name':_0x124c5d[_0xcd9d('0x56')],'paused':_0x124c5d[_0xcd9d('0x57')],'waiting':_0x124c5d[_0xcd9d('0x53')]};_0x2e7eef[_0xcd9d('0x23')](_0x2f3c93);}}_0xf8932c({'count':_0x2e7eef[_0xcd9d('0x1a')],'rows':_0x2e7eef});});},'SmsQueues':function(_0x5353ef){return new Promise(function(_0x5b4a56,_0xb6d303){var _0x47da2b=[];for(var _0x24f307 in _0x957089[_0xcd9d('0x59')]){if(_0x957089['smsQueues'][_0xcd9d('0x4c')](_0x24f307)){var _0x110be1=_0x957089[_0xcd9d('0x59')][_0x24f307];var _0x1e7665={'id':_0x110be1['id'],'available':_0x110be1['available'],'loggedIn':_0x110be1[_0xcd9d('0x52')],'name':_0x110be1['name'],'paused':_0x110be1['paused'],'waiting':_0x110be1['waiting']};_0x47da2b[_0xcd9d('0x23')](_0x1e7665);}}_0x5b4a56({'count':_0x47da2b['length'],'rows':_0x47da2b});});},'FaxQueues':function(_0x3d1bd0){return new Promise(function(_0x3f9a2d,_0x43374b){var _0x36e6ca=[];for(var _0x24684b in _0x957089[_0xcd9d('0x5a')]){if(_0x957089['faxQueues'][_0xcd9d('0x4c')](_0x24684b)){var _0x470a1d=_0x957089[_0xcd9d('0x5a')][_0x24684b];var _0x5527b8={'id':_0x470a1d['id'],'available':_0x470a1d[_0xcd9d('0x55')],'loggedIn':_0x470a1d[_0xcd9d('0x52')],'name':_0x470a1d[_0xcd9d('0x56')],'paused':_0x470a1d['paused'],'waiting':_0x470a1d[_0xcd9d('0x53')]};_0x36e6ca['push'](_0x5527b8);}}_0x3f9a2d({'count':_0x36e6ca[_0xcd9d('0x1a')],'rows':_0x36e6ca});});},'WhatsappQueues':function(_0x2fbeee){return new Promise(function(_0x26630d,_0x1cc657){var _0x2eefbc=[];for(var _0xa40477 in _0x957089[_0xcd9d('0x5b')]){if(_0x957089[_0xcd9d('0x5b')][_0xcd9d('0x4c')](_0xa40477)){var _0x7732f1=_0x957089['whatsappQueues'][_0xa40477];var _0x4b2edc={'id':_0x7732f1['id'],'available':_0x7732f1[_0xcd9d('0x55')],'loggedIn':_0x7732f1[_0xcd9d('0x52')],'name':_0x7732f1[_0xcd9d('0x56')],'paused':_0x7732f1[_0xcd9d('0x57')],'waiting':_0x7732f1['waiting']};_0x2eefbc['push'](_0x4b2edc);}}_0x26630d({'count':_0x2eefbc['length'],'rows':_0x2eefbc});});},'ChatQueuesWaitingInteractions':function(_0x339b4d){return new Promise(function(_0x4b2acf,_0x1aabf5){var _0xe82822=_[_0xcd9d('0x5c')](_0x957089[_0xcd9d('0x5d')]);_0x4b2acf({'count':_0xe82822[_0xcd9d('0x1a')],'rows':_0xe82822});});},'MailQueuesWaitingInteractions':function(_0x413a95){return new Promise(function(_0x1a64b3,_0x292303){var _0xb56e5a=_[_0xcd9d('0x5c')](_0x957089['mailQueuesWaitingInteractions']);_0x1a64b3({'count':_0xb56e5a[_0xcd9d('0x1a')],'rows':_0xb56e5a});});},'OpenchannelQueuesWaitingInteractions':function(_0x5d613d){return new Promise(function(_0x59490,_0x1cf4d3){var _0x3212fd=_[_0xcd9d('0x5c')](_0x957089[_0xcd9d('0x5e')]);_0x59490({'count':_0x3212fd[_0xcd9d('0x1a')],'rows':_0x3212fd});});},'SmsQueuesWaitingInteractions':function(_0x13d9e7){return new Promise(function(_0x1588d3,_0x21d255){var _0x4b1288=_[_0xcd9d('0x5c')](_0x957089[_0xcd9d('0x5f')]);_0x1588d3({'count':_0x4b1288[_0xcd9d('0x1a')],'rows':_0x4b1288});});},'FaxQueuesWaitingInteractions':function(_0x69da4c){return new Promise(function(_0x2d1581,_0x2def56){var _0x53da0f=_[_0xcd9d('0x5c')](_0x957089[_0xcd9d('0x60')]);_0x2d1581({'count':_0x53da0f[_0xcd9d('0x1a')],'rows':_0x53da0f});});},'WhatsappQueuesWaitingInteractions':function(_0x572afd){return new Promise(function(_0x14e45b,_0x591b4b){var _0x55dbdf=_[_0xcd9d('0x5c')](_0x957089['whatsappQueuesWaitingInteractions']);_0x14e45b({'count':_0x55dbdf[_0xcd9d('0x1a')],'rows':_0x55dbdf});});}};var _0x2620ac=jayson[_0xcd9d('0x61')](_0x64d51c)['http']();_0x2620ac['on'](_0xcd9d('0x47'),function(_0x10b945){logger['error'](JSON[_0xcd9d('0x3a')](_0x10b945));return _0x12edfc(_0x10b945);});_0x2620ac['listen'](0x232c,_0xcd9d('0x62'),function(){console[_0xcd9d('0x63')]('Routing\x20RPC\x20server\x20listening\x20on\x20127.0.0.1:%d!',0x232c);return _0x582a92(_0xcd9d('0x64')+0x232c);});});};
\ No newline at end of file
index dd2f613..1991954 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc5e1=['client','then','error','message','result','catch','condition','rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','stop','length','Command','format','indexOf','true','[%s][INTERVAL]\x20%s','some','\x20|\x20','[%s][INTERVAL]\x20%s\x20%s','join','util','jayson/promise','../../../config/logger','routing'];(function(_0x3e799f,_0x407546){var _0x1a0c62=function(_0x5c243b){while(--_0x5c243b){_0x3e799f['push'](_0x3e799f['shift']());}};_0x1a0c62(++_0x407546);}(_0xc5e1,0x79));var _0x1c5e=function(_0x5c586e,_0x558134){_0x5c586e=_0x5c586e-0x0;var _0x493e38=_0xc5e1[_0x5c586e];return _0x493e38;};'use strict';var util=require(_0x1c5e('0x0'));var BPromise=require('bluebird');var jayson=require(_0x1c5e('0x1'));var _=require('lodash');var logger=require(_0x1c5e('0x2'))(_0x1c5e('0x3'));var client=jayson[_0x1c5e('0x4')]['http']({'port':0x232a});function request(_0x3ebaea,_0x1009a1){return new BPromise(function(_0x46f8f5,_0x1b59ca){return client['request'](_0x3ebaea,_0x1009a1)[_0x1c5e('0x5')](function(_0x389f08){if(_0x389f08[_0x1c5e('0x6')]){return _0x1b59ca(_0x389f08[_0x1c5e('0x6')][_0x1c5e('0x7')]);}else{return _0x46f8f5(_0x389f08[_0x1c5e('0x8')]);}})[_0x1c5e('0x9')](function(_0xd5f487){return _0x1b59ca(_0xd5f487);});});}exports[_0x1c5e('0xa')]=function(_0x410e45,_0x32f070,_0x1ec017){return function(_0x3e35bd){if(_0x1ec017[_0x1c5e('0xb')]&&!_0x1ec017['rules'][_0x410e45]){logger[_0x1c5e('0xc')](_0x1c5e('0xd'),_0x410e45);return _0x3e35bd[_0x1c5e('0xe')]();}var _0x3e35d6=[];for(var _0x85b365=0x0;_0x85b365<_0x32f070[_0x1c5e('0xf')];_0x85b365+=0x1){_0x3e35d6['push'](request(_0x1c5e('0x10'),{'command':util[_0x1c5e('0x11')]('iftime\x20%s',_0x32f070[_0x85b365])})['then'](function(_0x36f417){return _0x36f417&&_0x36f417[_0x1c5e('0x7')]&&_0x36f417[_0x1c5e('0x7')][_0x1c5e('0x12')](_0x1c5e('0x13'))>=0x0?!![]:![];})['catch'](function(_0x50d9d1){logger[_0x1c5e('0x6')](_0x1c5e('0x14'),_0x410e45,_0x32f070[_0x85b365]);}));}BPromise['all'](_0x3e35d6)['then'](function(_0x35476d){var _0x9c6a40=_[_0x1c5e('0x15')](_0x35476d);logger['info']('[%s][INTERVAL]\x20%s\x20%s',_0x410e45,_0x32f070['join'](_0x1c5e('0x16')),_0x9c6a40);_0x3e35bd['when'](_0x9c6a40);})[_0x1c5e('0x9')](function(_0xc97152){console['log'](_0xc97152);logger[_0x1c5e('0x6')](_0x1c5e('0x17'),_0x410e45,_0x32f070[_0x1c5e('0x18')](_0x1c5e('0x16')),_0xc97152['stack']);_0x3e35bd[_0x1c5e('0xe')]();});};};
\ No newline at end of file
+var _0xb053=['rules','info','[%s][INTERVAL]\x20ROUTING\x20STOPPED','length','Command','format','true','[%s][INTERVAL]\x20%s','all','then','some','[%s][INTERVAL]\x20%s\x20%s','join','\x20|\x20','stop','util','bluebird','lodash','routing','http','error','message','catch','condition'];(function(_0x298064,_0x1d2bfb){var _0x2512ea=function(_0x3e5b28){while(--_0x3e5b28){_0x298064['push'](_0x298064['shift']());}};_0x2512ea(++_0x1d2bfb);}(_0xb053,0x12f));var _0x3b05=function(_0x416748,_0x1a5df4){_0x416748=_0x416748-0x0;var _0x1429dc=_0xb053[_0x416748];return _0x1429dc;};'use strict';var util=require(_0x3b05('0x0'));var BPromise=require(_0x3b05('0x1'));var jayson=require('jayson/promise');var _=require(_0x3b05('0x2'));var logger=require('../../../config/logger')(_0x3b05('0x3'));var client=jayson['client'][_0x3b05('0x4')]({'port':0x232a});function request(_0x14973a,_0x1f4d16){return new BPromise(function(_0x121113,_0x5e59f5){return client['request'](_0x14973a,_0x1f4d16)['then'](function(_0x5e0ab1){if(_0x5e0ab1[_0x3b05('0x5')]){return _0x5e59f5(_0x5e0ab1[_0x3b05('0x5')][_0x3b05('0x6')]);}else{return _0x121113(_0x5e0ab1['result']);}})[_0x3b05('0x7')](function(_0x1c1e0f){return _0x5e59f5(_0x1c1e0f);});});}exports[_0x3b05('0x8')]=function(_0x80e29e,_0x265deb,_0x3331ba){return function(_0x4ca24f){if(_0x3331ba['rules']&&!_0x3331ba[_0x3b05('0x9')][_0x80e29e]){logger[_0x3b05('0xa')](_0x3b05('0xb'),_0x80e29e);return _0x4ca24f['stop']();}var _0x354974=[];for(var _0x309566=0x0;_0x309566<_0x265deb[_0x3b05('0xc')];_0x309566+=0x1){_0x354974['push'](request(_0x3b05('0xd'),{'command':util[_0x3b05('0xe')]('iftime\x20%s',_0x265deb[_0x309566])})['then'](function(_0x4a60dd){return _0x4a60dd&&_0x4a60dd[_0x3b05('0x6')]&&_0x4a60dd['message']['indexOf'](_0x3b05('0xf'))>=0x0?!![]:![];})[_0x3b05('0x7')](function(_0x2740f1){logger['error'](_0x3b05('0x10'),_0x80e29e,_0x265deb[_0x309566]);}));}BPromise[_0x3b05('0x11')](_0x354974)[_0x3b05('0x12')](function(_0x13ce31){var _0x17753d=_[_0x3b05('0x13')](_0x13ce31);logger['info'](_0x3b05('0x14'),_0x80e29e,_0x265deb[_0x3b05('0x15')]('\x20|\x20'),_0x17753d);_0x4ca24f['when'](_0x17753d);})[_0x3b05('0x7')](function(_0x40d8dd){console['log'](_0x40d8dd);logger[_0x3b05('0x5')](_0x3b05('0x14'),_0x80e29e,_0x265deb[_0x3b05('0x15')](_0x3b05('0x16')),_0x40d8dd['stack']);_0x4ca24f[_0x3b05('0x17')]();});};};
\ No newline at end of file
index 0e66443..aa15f39 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xbee3=['answeredelsewheremembername','[%s][agents][agentconnect]','[%s][agents][agentcomplete]','[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete','diffTime','complete','blindtransfer','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfereruniqueid','transfer','extension','transferuniqueid','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','ATTENDED','transferexten','transfereeuniqueid','agententerreason','clone','calleridnum','secondtransfererlinkedid','[%s][agents][attendedtransfer]\x20agent:%s','secondtransfererexten','transfertargetuniqueid','calleridname','agentconnectAt','hangup','[%s][agents][hangup]','timeout','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','indexOf','splice','agentcompleteAt','agent','util','info','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid','channel','membername','interface','connectedlinenum','lastevent','queue','getVoiceQueueByName','then','type','agentacw','agentcomplete','acw','acwtime','request','CreateVoiceAgentReport','destuniqueid','agentcalled','debug','[%s][agents][agentcalled]','agentcalledAt','format','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswer','agentringnoanswerAt','now','reason','holdtime','ringtime','talktime','push','queuecallerabandon','forIn','includes','abandoned','[%s][agents][queuecallerabandon]','agentconnect','[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect','connectedlinename','answered_elsewhere','answeredelsewheredestinationuniqueid'];(function(_0x9235c2,_0x35eb35){var _0x5beb11=function(_0x3ccb25){while(--_0x3ccb25){_0x9235c2['push'](_0x9235c2['shift']());}};_0x5beb11(++_0x35eb35);}(_0xbee3,0xd5));var _0x3bee=function(_0x543928,_0x4d21c2){_0x543928=_0x543928-0x0;var _0x30c11d=_0xbee3[_0x543928];return _0x30c11d;};'use strict';var _=require('lodash');var util=require(_0x3bee('0x0'));var utils=require('./utils');var agents={};var transfers={};var unanswered=[];function writeDB(_0x56a879,_0x45a1bf){utils[_0x3bee('0x1')](util['format'](_0x3bee('0x2'),_0x56a879[_0x3bee('0x3')],_0x56a879[_0x3bee('0x4')],_0x56a879['queue'],_0x56a879[_0x3bee('0x5')],_0x56a879[_0x3bee('0x6')],_0x56a879['calleridnum'],_0x56a879[_0x3bee('0x7')],_0x56a879[_0x3bee('0x8')]));if(_0x56a879[_0x3bee('0x9')]){utils[_0x3bee('0xa')](_0x56a879[_0x3bee('0x9')])[_0x3bee('0xb')](function(_0x3485b8){if(_0x3485b8){_0x56a879['type']=_0x3485b8[_0x3bee('0xc')];_0x56a879[_0x3bee('0xd')]=_0x56a879[_0x3bee('0xe')]?_0x3485b8[_0x3bee('0xf')]:![];_0x56a879[_0x3bee('0x10')]=_0x56a879[_0x3bee('0xd')]?_0x3485b8['acwTimeout']:0x0;}utils[_0x3bee('0x11')]('CreateVoiceAgentReport',_0x56a879);});}else{utils[_0x3bee('0x11')](_0x3bee('0x12'),_0x56a879);}if(_0x45a1bf){delete transfers[_0x56a879[_0x3bee('0x3')]];}else{delete agents[_0x56a879[_0x3bee('0x13')]];}}exports[_0x3bee('0x14')]=function(_0x459129){try{utils[_0x3bee('0x15')](util['format'](_0x3bee('0x16'),_0x459129[_0x3bee('0x3')]),_0x459129);agents[_0x459129[_0x3bee('0x13')]]=_0x459129;agents[_0x459129[_0x3bee('0x13')]][_0x3bee('0x17')]=utils['now']();agents[_0x459129['destuniqueid']][_0x3bee('0x8')]='called';agents[_0x459129[_0x3bee('0x13')]][_0x3bee('0x7')]=null;agents[_0x459129['destuniqueid']]['connectedlinename']=null;utils[_0x3bee('0x1')](util[_0x3bee('0x18')](_0x3bee('0x19'),_0x459129[_0x3bee('0x3')],agents[_0x459129['destuniqueid']][_0x3bee('0x5')],_0x459129[_0x3bee('0x13')]));}catch(_0x440644){utils[_0x3bee('0x1a')](util[_0x3bee('0x18')](_0x3bee('0x16'),_0x459129[_0x3bee('0x3')]),_0x440644);}};exports['agentringnoanswer']=function(_0x4f36af){try{if(!_[_0x3bee('0x1b')](agents[_0x4f36af[_0x3bee('0x13')]])){utils['debug'](util[_0x3bee('0x18')](_0x3bee('0x1c'),_0x4f36af[_0x3bee('0x3')]),_0x4f36af);utils[_0x3bee('0x1')](util[_0x3bee('0x18')](_0x3bee('0x1d'),_0x4f36af[_0x3bee('0x3')],agents[_0x4f36af['destuniqueid']][_0x3bee('0x5')],_0x4f36af[_0x3bee('0x13')]));agents[_0x4f36af[_0x3bee('0x13')]][_0x3bee('0x1e')]=!![];agents[_0x4f36af['destuniqueid']][_0x3bee('0x1f')]=utils[_0x3bee('0x20')]();agents[_0x4f36af[_0x3bee('0x13')]]['lastevent']='timeout';agents[_0x4f36af[_0x3bee('0x13')]][_0x3bee('0x21')]='timeout';agents[_0x4f36af[_0x3bee('0x13')]][_0x3bee('0x22')]=_0x4f36af[_0x3bee('0x23')]?parseInt(_0x4f36af['ringtime'])/0x3e8:0x0;agents[_0x4f36af[_0x3bee('0x13')]][_0x3bee('0x24')]=0x0;unanswered[_0x3bee('0x25')](_0x4f36af['destuniqueid']);}}catch(_0x239fa4){utils[_0x3bee('0x1a')](util[_0x3bee('0x18')]('[%s][agents][agentringnoanswer]',_0x4f36af[_0x3bee('0x3')]),_0x239fa4);}};exports[_0x3bee('0x26')]=function(_0x27ed99){try{_[_0x3bee('0x27')](agents,function(_0x3433aa,_0x559c2b){if(_0x3433aa['uniqueid']==_0x27ed99[_0x3bee('0x3')]&&!_[_0x3bee('0x28')](unanswered,_0x3433aa[_0x3bee('0x13')])){utils[_0x3bee('0x15')](util['format']('[%s][agents][queuecallerabandon]',_0x27ed99[_0x3bee('0x3')]),_0x27ed99);utils[_0x3bee('0x1')](util['format']('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x27ed99[_0x3bee('0x3')],_0x3433aa[_0x3bee('0x5')],_0x3433aa[_0x3bee('0x13')]));_0x3433aa[_0x3bee('0x1e')]=!![];_0x3433aa[_0x3bee('0x1f')]=utils[_0x3bee('0x20')]();_0x3433aa[_0x3bee('0x8')]=_0x3bee('0x29');_0x3433aa[_0x3bee('0x21')]=_0x3bee('0x29');_0x3433aa['holdtime']=_0x27ed99['holdtime'];_0x3433aa[_0x3bee('0x24')]=0x0;writeDB(_0x3433aa);}});}catch(_0x4a4706){utils['error'](util[_0x3bee('0x18')](_0x3bee('0x2a'),_0x27ed99[_0x3bee('0x3')]),_0x4a4706);}};exports[_0x3bee('0x2b')]=function(_0xd926f8){try{if(agents[_0xd926f8[_0x3bee('0x13')]]){utils[_0x3bee('0x15')](util[_0x3bee('0x18')]('[%s][agents][agentconnect]',_0xd926f8[_0x3bee('0x3')]),_0xd926f8);utils[_0x3bee('0x1')](util['format'](_0x3bee('0x2c'),_0xd926f8[_0x3bee('0x3')],agents[_0xd926f8[_0x3bee('0x13')]][_0x3bee('0x5')],_0xd926f8[_0x3bee('0x13')]));agents[_0xd926f8['destuniqueid']]['agentconnectAt']=utils[_0x3bee('0x20')]();agents[_0xd926f8[_0x3bee('0x13')]][_0x3bee('0x7')]=_0xd926f8[_0x3bee('0x7')];agents[_0xd926f8[_0x3bee('0x13')]][_0x3bee('0x2d')]=_0xd926f8[_0x3bee('0x2d')];agents[_0xd926f8[_0x3bee('0x13')]][_0x3bee('0x22')]=_0xd926f8[_0x3bee('0x23')];agents[_0xd926f8[_0x3bee('0x13')]][_0x3bee('0x8')]='connect';_[_0x3bee('0x27')](agents,function(_0x1b5eca,_0x25158b){if(_0x1b5eca[_0x3bee('0x13')]!=_0xd926f8[_0x3bee('0x13')]&&_0x1b5eca[_0x3bee('0x3')]==_0xd926f8[_0x3bee('0x3')]){_0x1b5eca[_0x3bee('0x24')]=0x0;_0x1b5eca[_0x3bee('0x22')]=_0xd926f8[_0x3bee('0x23')];_0x1b5eca[_0x3bee('0x1e')]=!![];_0x1b5eca[_0x3bee('0x1f')]=utils[_0x3bee('0x20')]();_0x1b5eca['lastevent']=_0x3bee('0x2e');_0x1b5eca[_0x3bee('0x21')]=_0x3bee('0x2e');_0x1b5eca[_0x3bee('0x2f')]=_0xd926f8[_0x3bee('0x13')];_0x1b5eca[_0x3bee('0x30')]=_0xd926f8[_0x3bee('0x5')];writeDB(_0x1b5eca);}});}}catch(_0xd1140d){utils['error'](util[_0x3bee('0x18')](_0x3bee('0x31'),_0xd926f8[_0x3bee('0x3')]),_0xd1140d);}};exports['agentcomplete']=function(_0x4567f2){try{if(!_['isNil'](agents[_0x4567f2[_0x3bee('0x13')]])){utils['debug'](util['format'](_0x3bee('0x32'),_0x4567f2[_0x3bee('0x3')]),_0x4567f2);utils[_0x3bee('0x1')](util[_0x3bee('0x18')](_0x3bee('0x33'),_0x4567f2['uniqueid'],agents[_0x4567f2['destuniqueid']][_0x3bee('0x5')],_0x4567f2['destuniqueid']));agents[_0x4567f2[_0x3bee('0x13')]]['agentcomplete']=!![];agents[_0x4567f2[_0x3bee('0x13')]]['agentcompleteAt']=utils[_0x3bee('0x20')]();agents[_0x4567f2[_0x3bee('0x13')]][_0x3bee('0x24')]=utils[_0x3bee('0x34')](agents[_0x4567f2['destuniqueid']]['agentcompleteAt'],agents[_0x4567f2[_0x3bee('0x13')]]['agentconnectAt']);agents[_0x4567f2['destuniqueid']]['reason']=_0x4567f2[_0x3bee('0x21')];agents[_0x4567f2['destuniqueid']][_0x3bee('0x8')]=_0x3bee('0x35');writeDB(agents[_0x4567f2[_0x3bee('0x13')]]);}}catch(_0x593427){utils[_0x3bee('0x1a')](util['format'](_0x3bee('0x32'),_0x4567f2['uniqueid']),_0x593427);}};exports[_0x3bee('0x36')]=function(_0x16b096){try{if(!_[_0x3bee('0x1b')](agents[_0x16b096['transfereruniqueid']])){utils[_0x3bee('0x15')](util[_0x3bee('0x18')](_0x3bee('0x37'),_0x16b096['uniqueid']),_0x16b096);utils['info'](util[_0x3bee('0x18')](_0x3bee('0x38'),_0x16b096[_0x3bee('0x3')],agents[_0x16b096[_0x3bee('0x39')]][_0x3bee('0x5')],agents[_0x16b096[_0x3bee('0x39')]][_0x3bee('0x3')]));agents[_0x16b096['transfereruniqueid']][_0x3bee('0x3a')]=!![];agents[_0x16b096[_0x3bee('0x39')]]['transfertype']='blind';agents[_0x16b096[_0x3bee('0x39')]]['transferexten']=_0x16b096[_0x3bee('0x3b')];agents[_0x16b096[_0x3bee('0x39')]][_0x3bee('0x3c')]=agents[_0x16b096['transfereruniqueid']][_0x3bee('0x3')];}}catch(_0x3beac9){utils[_0x3bee('0x1a')](util['format'](_0x3bee('0x37'),_0x16b096[_0x3bee('0x3')]),_0x3beac9);}};exports['attendedtransfer']=function(_0x7e37ed){try{utils[_0x3bee('0x15')](util['format'](_0x3bee('0x3d'),_0x7e37ed[_0x3bee('0x3e')]),_0x7e37ed);if(_0x7e37ed[_0x3bee('0x3e')]==_0x7e37ed[_0x3bee('0x3f')]){if(!_[_0x3bee('0x1b')](agents[_0x7e37ed[_0x3bee('0x40')]])){utils[_0x3bee('0x1')](util[_0x3bee('0x18')]('[%s][agents][attendedtransfer]\x20agent:%s',_0x7e37ed['origtransfereruniqueid'],agents[_0x7e37ed[_0x3bee('0x40')]]['membername']));agents[_0x7e37ed[_0x3bee('0x40')]][_0x3bee('0x3a')]=!![];agents[_0x7e37ed[_0x3bee('0x40')]]['transfertype']=_0x3bee('0x41');agents[_0x7e37ed[_0x3bee('0x40')]][_0x3bee('0x42')]=_0x7e37ed['origtransfererexten'];agents[_0x7e37ed[_0x3bee('0x40')]]['transferuniqueid']=_0x7e37ed[_0x3bee('0x3e')];}if(_0x7e37ed[_0x3bee('0x43')]&&agents[_0x7e37ed[_0x3bee('0x43')]]){agents[_0x7e37ed['transfereeuniqueid']][_0x3bee('0x44')]=0x1;transfers[_0x7e37ed[_0x3bee('0x43')]]=_[_0x3bee('0x45')](agents[_0x7e37ed['transfereeuniqueid']]);transfers[_0x7e37ed['transfereeuniqueid']][_0x3bee('0x46')]=agents[_0x7e37ed[_0x3bee('0x40')]][_0x3bee('0x46')];transfers[_0x7e37ed['transfereeuniqueid']]['calleridname']=agents[_0x7e37ed[_0x3bee('0x40')]]['calleridname'];transfers[_0x7e37ed['transfereeuniqueid']][_0x3bee('0x17')]=utils[_0x3bee('0x20')]();transfers[_0x7e37ed[_0x3bee('0x43')]]['agentconnectAt']=utils['now']();transfers[_0x7e37ed[_0x3bee('0x43')]][_0x3bee('0x22')]=0x0;transfers[_0x7e37ed['transfereeuniqueid']][_0x3bee('0x44')]=0x2;}}else if(_0x7e37ed['secondtransfereruniqueid']==_0x7e37ed[_0x3bee('0x47')]){if(!_[_0x3bee('0x1b')](agents[_0x7e37ed[_0x3bee('0x3e')]])){utils[_0x3bee('0x1')](util[_0x3bee('0x18')](_0x3bee('0x48'),_0x7e37ed[_0x3bee('0x3e')],agents[_0x7e37ed[_0x3bee('0x3e')]][_0x3bee('0x5')]));agents[_0x7e37ed[_0x3bee('0x3e')]][_0x3bee('0x3a')]=!![];agents[_0x7e37ed['origtransfereruniqueid']]['transfertype']='ATTENDED';agents[_0x7e37ed[_0x3bee('0x3e')]][_0x3bee('0x42')]=_0x7e37ed[_0x3bee('0x49')];agents[_0x7e37ed[_0x3bee('0x3e')]]['transferuniqueid']=_0x7e37ed[_0x3bee('0x40')];}if(_0x7e37ed[_0x3bee('0x4a')]&&agents[_0x7e37ed['transfertargetuniqueid']]){agents[_0x7e37ed['transfertargetuniqueid']][_0x3bee('0x44')]=0x1;transfers[_0x7e37ed[_0x3bee('0x4a')]]=_[_0x3bee('0x45')](agents[_0x7e37ed['transfertargetuniqueid']]);transfers[_0x7e37ed[_0x3bee('0x4a')]][_0x3bee('0x46')]=agents[_0x7e37ed[_0x3bee('0x3e')]]['calleridnum'];transfers[_0x7e37ed[_0x3bee('0x4a')]][_0x3bee('0x4b')]=agents[_0x7e37ed[_0x3bee('0x3e')]][_0x3bee('0x4b')];transfers[_0x7e37ed['transfertargetuniqueid']]['agentcalledAt']=utils[_0x3bee('0x20')]();transfers[_0x7e37ed[_0x3bee('0x4a')]][_0x3bee('0x4c')]=utils[_0x3bee('0x20')]();transfers[_0x7e37ed[_0x3bee('0x4a')]]['holdtime']=0x0;transfers[_0x7e37ed[_0x3bee('0x4a')]]['agententerreason']=0x2;}}}catch(_0xddc56b){utils[_0x3bee('0x1a')](util[_0x3bee('0x18')](_0x3bee('0x3d'),_0x7e37ed[_0x3bee('0x3e')]),_0xddc56b);}};exports[_0x3bee('0x4d')]=function(_0x3f7dad){try{utils['debug'](util[_0x3bee('0x18')](_0x3bee('0x4e'),_0x3f7dad[_0x3bee('0x3')]),_0x3f7dad);if(agents[_0x3f7dad[_0x3bee('0x3')]]&&agents[_0x3f7dad['uniqueid']][_0x3bee('0x21')]===_0x3bee('0x4f')){if(_0x3f7dad[_0x3bee('0x50')]==='21'){agents[_0x3f7dad[_0x3bee('0x3')]][_0x3bee('0x21')]=_0x3bee('0x51');agents[_0x3f7dad[_0x3bee('0x3')]][_0x3bee('0x8')]='rejected';}utils[_0x3bee('0x1')](util[_0x3bee('0x18')](_0x3bee('0x52'),_0x3f7dad['uniqueid'],agents[_0x3f7dad[_0x3bee('0x3')]][_0x3bee('0x5')],agents[_0x3f7dad[_0x3bee('0x3')]][_0x3bee('0x21')],agents[_0x3f7dad[_0x3bee('0x3')]][_0x3bee('0x8')]));writeDB(agents[_0x3f7dad[_0x3bee('0x3')]]);var _0x204843=unanswered[_0x3bee('0x53')](_0x3f7dad[_0x3bee('0x3')]);if(_0x204843>-0x1){unanswered[_0x3bee('0x54')](_0x204843,0x1);}}if(transfers[_0x3f7dad[_0x3bee('0x3')]]){transfers[_0x3f7dad[_0x3bee('0x3')]][_0x3bee('0xe')]=!![];transfers[_0x3f7dad[_0x3bee('0x3')]][_0x3bee('0x55')]=utils[_0x3bee('0x20')]();transfers[_0x3f7dad[_0x3bee('0x3')]][_0x3bee('0x24')]=utils[_0x3bee('0x34')](transfers[_0x3f7dad[_0x3bee('0x3')]][_0x3bee('0x55')],transfers[_0x3f7dad[_0x3bee('0x3')]][_0x3bee('0x4c')]);transfers[_0x3f7dad[_0x3bee('0x3')]]['reason']=_0x3bee('0x56');transfers[_0x3f7dad[_0x3bee('0x3')]][_0x3bee('0x8')]=_0x3bee('0x35');utils[_0x3bee('0x1')](util[_0x3bee('0x18')](_0x3bee('0x52'),_0x3f7dad[_0x3bee('0x3')],transfers[_0x3f7dad[_0x3bee('0x3')]]['membername'],transfers[_0x3f7dad[_0x3bee('0x3')]][_0x3bee('0x21')],transfers[_0x3f7dad['uniqueid']][_0x3bee('0x8')]));writeDB(transfers[_0x3f7dad['uniqueid']],!![]);}if(agents[_0x3f7dad[_0x3bee('0x3')]]&&agents[_0x3f7dad[_0x3bee('0x3')]][_0x3bee('0x4c')]){agents[_0x3f7dad['uniqueid']]['agentcomplete']=!![];agents[_0x3f7dad[_0x3bee('0x3')]][_0x3bee('0x55')]=utils[_0x3bee('0x20')]();agents[_0x3f7dad[_0x3bee('0x3')]][_0x3bee('0x24')]=utils[_0x3bee('0x34')](agents[_0x3f7dad[_0x3bee('0x3')]][_0x3bee('0x55')],agents[_0x3f7dad['uniqueid']][_0x3bee('0x4c')]);agents[_0x3f7dad[_0x3bee('0x3')]][_0x3bee('0x21')]=agents[_0x3f7dad[_0x3bee('0x3')]][_0x3bee('0x3a')]?_0x3bee('0x3a'):_0x3bee('0x56');agents[_0x3f7dad['uniqueid']][_0x3bee('0x8')]=_0x3bee('0x35');utils['info'](util[_0x3bee('0x18')](_0x3bee('0x52'),_0x3f7dad['uniqueid'],agents[_0x3f7dad[_0x3bee('0x3')]]['membername'],agents[_0x3f7dad[_0x3bee('0x3')]][_0x3bee('0x21')],agents[_0x3f7dad[_0x3bee('0x3')]][_0x3bee('0x8')]));writeDB(agents[_0x3f7dad['uniqueid']]);}}catch(_0x62900b){utils[_0x3bee('0x1a')](util[_0x3bee('0x18')]('[%s][agents][hangup]',_0x3f7dad[_0x3bee('0x3')]),_0x62900b);}};
\ No newline at end of file
+var _0xd404=['channel','queue','membername','interface','calleridnum','connectedlinenum','getVoiceQueueByName','then','type','agentacw','agentcomplete','acw','acwtime','acwTimeout','request','CreateVoiceAgentReport','destuniqueid','agentcalled','debug','[%s][agents][agentcalled]','agentcalledAt','now','lastevent','called','connectedlinename','[%s][agents][agentcalled]\x20agent:%s\x20destuniqueid:%s\x20lastevent:called','error','isNil','[%s][agents][agentringnoanswer]','[%s][agents][agentringnoanswer]\x20agent:%s\x20destuniqueid:%s\x20lastevent:timeout','agentringnoanswer','agentringnoanswerAt','reason','timeout','holdtime','ringtime','talktime','push','queuecallerabandon','forIn','[%s][agents][queuecallerabandon]','abandoned','agentconnect','info','agentconnectAt','connect','answered_elsewhere','answeredelsewheredestinationuniqueid','answeredelsewheremembername','[%s][agents][agentcomplete]','agentcompleteAt','blindtransfer','[%s][agents][blindtransfer]','[%s][agents][blindtransfer]\x20agent:%s\x20transferuniqueid:%s','transfereruniqueid','transfer','transfertype','blind','transferexten','extension','transferuniqueid','attendedtransfer','[%s][agents][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfereruniqueid','[%s][agents][attendedtransfer]\x20agent:%s','ATTENDED','origtransfererexten','transfereeuniqueid','agententerreason','clone','secondtransfererlinkedid','transfertargetuniqueid','calleridname','cause','rejected','[%s][agents][hangup]\x20agent:%s\x20reason:%s\x20lastevent:%s','splice','diffTime','agent','complete','[%s][agents][hangup]','lodash','util','format','[%s][agents][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','uniqueid'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd404,0x15b));var _0x4d40=function(_0x4fd5d3,_0x214090){_0x4fd5d3=_0x4fd5d3-0x0;var _0xf62a8b=_0xd404[_0x4fd5d3];return _0xf62a8b;};'use strict';var _=require(_0x4d40('0x0'));var util=require(_0x4d40('0x1'));var utils=require('./utils');var agents={};var transfers={};var unanswered=[];function writeDB(_0xb6576c,_0x2322e5){utils['info'](util[_0x4d40('0x2')](_0x4d40('0x3'),_0xb6576c[_0x4d40('0x4')],_0xb6576c[_0x4d40('0x5')],_0xb6576c[_0x4d40('0x6')],_0xb6576c[_0x4d40('0x7')],_0xb6576c[_0x4d40('0x8')],_0xb6576c[_0x4d40('0x9')],_0xb6576c[_0x4d40('0xa')],_0xb6576c['lastevent']));if(_0xb6576c[_0x4d40('0x6')]){utils[_0x4d40('0xb')](_0xb6576c['queue'])[_0x4d40('0xc')](function(_0x5e31bc){if(_0x5e31bc){_0xb6576c['type']=_0x5e31bc[_0x4d40('0xd')];_0xb6576c[_0x4d40('0xe')]=_0xb6576c[_0x4d40('0xf')]?_0x5e31bc[_0x4d40('0x10')]:![];_0xb6576c[_0x4d40('0x11')]=_0xb6576c[_0x4d40('0xe')]?_0x5e31bc[_0x4d40('0x12')]:0x0;}utils[_0x4d40('0x13')](_0x4d40('0x14'),_0xb6576c);});}else{utils[_0x4d40('0x13')](_0x4d40('0x14'),_0xb6576c);}if(_0x2322e5){delete transfers[_0xb6576c[_0x4d40('0x4')]];}else{delete agents[_0xb6576c[_0x4d40('0x15')]];}}exports[_0x4d40('0x16')]=function(_0x5162f9){try{utils[_0x4d40('0x17')](util[_0x4d40('0x2')](_0x4d40('0x18'),_0x5162f9[_0x4d40('0x4')]),_0x5162f9);agents[_0x5162f9[_0x4d40('0x15')]]=_0x5162f9;agents[_0x5162f9['destuniqueid']][_0x4d40('0x19')]=utils[_0x4d40('0x1a')]();agents[_0x5162f9[_0x4d40('0x15')]][_0x4d40('0x1b')]=_0x4d40('0x1c');agents[_0x5162f9[_0x4d40('0x15')]][_0x4d40('0xa')]=null;agents[_0x5162f9[_0x4d40('0x15')]][_0x4d40('0x1d')]=null;utils['info'](util['format'](_0x4d40('0x1e'),_0x5162f9[_0x4d40('0x4')],agents[_0x5162f9['destuniqueid']][_0x4d40('0x7')],_0x5162f9[_0x4d40('0x15')]));}catch(_0x4eec1d){utils[_0x4d40('0x1f')](util['format'](_0x4d40('0x18'),_0x5162f9[_0x4d40('0x4')]),_0x4eec1d);}};exports['agentringnoanswer']=function(_0x57c997){try{if(!_[_0x4d40('0x20')](agents[_0x57c997[_0x4d40('0x15')]])){utils['debug'](util[_0x4d40('0x2')](_0x4d40('0x21'),_0x57c997[_0x4d40('0x4')]),_0x57c997);utils['info'](util[_0x4d40('0x2')](_0x4d40('0x22'),_0x57c997[_0x4d40('0x4')],agents[_0x57c997['destuniqueid']]['membername'],_0x57c997[_0x4d40('0x15')]));agents[_0x57c997[_0x4d40('0x15')]][_0x4d40('0x23')]=!![];agents[_0x57c997[_0x4d40('0x15')]][_0x4d40('0x24')]=utils['now']();agents[_0x57c997[_0x4d40('0x15')]][_0x4d40('0x1b')]='timeout';agents[_0x57c997['destuniqueid']][_0x4d40('0x25')]=_0x4d40('0x26');agents[_0x57c997[_0x4d40('0x15')]][_0x4d40('0x27')]=_0x57c997[_0x4d40('0x28')]?parseInt(_0x57c997[_0x4d40('0x28')])/0x3e8:0x0;agents[_0x57c997[_0x4d40('0x15')]][_0x4d40('0x29')]=0x0;unanswered[_0x4d40('0x2a')](_0x57c997[_0x4d40('0x15')]);}}catch(_0x1c0fcf){utils['error'](util['format']('[%s][agents][agentringnoanswer]',_0x57c997[_0x4d40('0x4')]),_0x1c0fcf);}};exports[_0x4d40('0x2b')]=function(_0x1ac240){try{_[_0x4d40('0x2c')](agents,function(_0x598ca9,_0x18e601){if(_0x598ca9[_0x4d40('0x4')]==_0x1ac240[_0x4d40('0x4')]&&!_['includes'](unanswered,_0x598ca9[_0x4d40('0x15')])){utils[_0x4d40('0x17')](util[_0x4d40('0x2')](_0x4d40('0x2d'),_0x1ac240[_0x4d40('0x4')]),_0x1ac240);utils['info'](util[_0x4d40('0x2')]('[%s][agents][queuecallerabandon]\x20agent:%s\x20destuniqueid:%s\x20lastevent:abandoned',_0x1ac240[_0x4d40('0x4')],_0x598ca9[_0x4d40('0x7')],_0x598ca9[_0x4d40('0x15')]));_0x598ca9[_0x4d40('0x23')]=!![];_0x598ca9['agentringnoanswerAt']=utils['now']();_0x598ca9[_0x4d40('0x1b')]=_0x4d40('0x2e');_0x598ca9[_0x4d40('0x25')]=_0x4d40('0x2e');_0x598ca9['holdtime']=_0x1ac240[_0x4d40('0x27')];_0x598ca9['talktime']=0x0;writeDB(_0x598ca9);}});}catch(_0x2fde16){utils[_0x4d40('0x1f')](util[_0x4d40('0x2')](_0x4d40('0x2d'),_0x1ac240[_0x4d40('0x4')]),_0x2fde16);}};exports[_0x4d40('0x2f')]=function(_0x1d1ba9){try{if(agents[_0x1d1ba9[_0x4d40('0x15')]]){utils[_0x4d40('0x17')](util[_0x4d40('0x2')]('[%s][agents][agentconnect]',_0x1d1ba9[_0x4d40('0x4')]),_0x1d1ba9);utils[_0x4d40('0x30')](util['format']('[%s][agents][agentconnect]\x20agent:%s\x20destuniqueid:%s\x20lastevent:connect',_0x1d1ba9['uniqueid'],agents[_0x1d1ba9[_0x4d40('0x15')]][_0x4d40('0x7')],_0x1d1ba9['destuniqueid']));agents[_0x1d1ba9[_0x4d40('0x15')]][_0x4d40('0x31')]=utils[_0x4d40('0x1a')]();agents[_0x1d1ba9[_0x4d40('0x15')]][_0x4d40('0xa')]=_0x1d1ba9['connectedlinenum'];agents[_0x1d1ba9[_0x4d40('0x15')]][_0x4d40('0x1d')]=_0x1d1ba9['connectedlinename'];agents[_0x1d1ba9['destuniqueid']][_0x4d40('0x27')]=_0x1d1ba9[_0x4d40('0x28')];agents[_0x1d1ba9['destuniqueid']][_0x4d40('0x1b')]=_0x4d40('0x32');_['forIn'](agents,function(_0x1e8427,_0x1a9586){if(_0x1e8427['destuniqueid']!=_0x1d1ba9[_0x4d40('0x15')]&&_0x1e8427[_0x4d40('0x4')]==_0x1d1ba9['uniqueid']){_0x1e8427[_0x4d40('0x29')]=0x0;_0x1e8427['holdtime']=_0x1d1ba9[_0x4d40('0x28')];_0x1e8427[_0x4d40('0x23')]=!![];_0x1e8427[_0x4d40('0x24')]=utils[_0x4d40('0x1a')]();_0x1e8427[_0x4d40('0x1b')]=_0x4d40('0x33');_0x1e8427[_0x4d40('0x25')]=_0x4d40('0x33');_0x1e8427[_0x4d40('0x34')]=_0x1d1ba9['destuniqueid'];_0x1e8427[_0x4d40('0x35')]=_0x1d1ba9[_0x4d40('0x7')];writeDB(_0x1e8427);}});}}catch(_0x1c2fa8){utils[_0x4d40('0x1f')](util[_0x4d40('0x2')]('[%s][agents][agentconnect]',_0x1d1ba9[_0x4d40('0x4')]),_0x1c2fa8);}};exports['agentcomplete']=function(_0x2e7f75){try{if(!_[_0x4d40('0x20')](agents[_0x2e7f75[_0x4d40('0x15')]])){utils[_0x4d40('0x17')](util['format'](_0x4d40('0x36'),_0x2e7f75[_0x4d40('0x4')]),_0x2e7f75);utils['info'](util[_0x4d40('0x2')]('[%s][agents][agentcomplete]\x20agent:%s\x20destuniqueid:%s\x20lastevent:complete',_0x2e7f75[_0x4d40('0x4')],agents[_0x2e7f75[_0x4d40('0x15')]][_0x4d40('0x7')],_0x2e7f75[_0x4d40('0x15')]));agents[_0x2e7f75['destuniqueid']][_0x4d40('0xf')]=!![];agents[_0x2e7f75['destuniqueid']][_0x4d40('0x37')]=utils[_0x4d40('0x1a')]();agents[_0x2e7f75[_0x4d40('0x15')]][_0x4d40('0x29')]=utils['diffTime'](agents[_0x2e7f75[_0x4d40('0x15')]][_0x4d40('0x37')],agents[_0x2e7f75[_0x4d40('0x15')]][_0x4d40('0x31')]);agents[_0x2e7f75['destuniqueid']][_0x4d40('0x25')]=_0x2e7f75[_0x4d40('0x25')];agents[_0x2e7f75['destuniqueid']][_0x4d40('0x1b')]='complete';writeDB(agents[_0x2e7f75[_0x4d40('0x15')]]);}}catch(_0x1777e8){utils[_0x4d40('0x1f')](util[_0x4d40('0x2')](_0x4d40('0x36'),_0x2e7f75[_0x4d40('0x4')]),_0x1777e8);}};exports[_0x4d40('0x38')]=function(_0x37b6bf){try{if(!_[_0x4d40('0x20')](agents[_0x37b6bf['transfereruniqueid']])){utils[_0x4d40('0x17')](util[_0x4d40('0x2')](_0x4d40('0x39'),_0x37b6bf[_0x4d40('0x4')]),_0x37b6bf);utils[_0x4d40('0x30')](util['format'](_0x4d40('0x3a'),_0x37b6bf[_0x4d40('0x4')],agents[_0x37b6bf['transfereruniqueid']][_0x4d40('0x7')],agents[_0x37b6bf['transfereruniqueid']][_0x4d40('0x4')]));agents[_0x37b6bf[_0x4d40('0x3b')]][_0x4d40('0x3c')]=!![];agents[_0x37b6bf['transfereruniqueid']][_0x4d40('0x3d')]=_0x4d40('0x3e');agents[_0x37b6bf[_0x4d40('0x3b')]][_0x4d40('0x3f')]=_0x37b6bf[_0x4d40('0x40')];agents[_0x37b6bf['transfereruniqueid']][_0x4d40('0x41')]=agents[_0x37b6bf[_0x4d40('0x3b')]]['uniqueid'];}}catch(_0x1000f4){utils['error'](util[_0x4d40('0x2')]('[%s][agents][blindtransfer]',_0x37b6bf[_0x4d40('0x4')]),_0x1000f4);}};exports[_0x4d40('0x42')]=function(_0x539df4){try{utils[_0x4d40('0x17')](util[_0x4d40('0x2')](_0x4d40('0x43'),_0x539df4[_0x4d40('0x44')]),_0x539df4);if(_0x539df4[_0x4d40('0x44')]==_0x539df4[_0x4d40('0x45')]){if(!_[_0x4d40('0x20')](agents[_0x539df4[_0x4d40('0x46')]])){utils[_0x4d40('0x30')](util[_0x4d40('0x2')](_0x4d40('0x47'),_0x539df4[_0x4d40('0x44')],agents[_0x539df4[_0x4d40('0x46')]][_0x4d40('0x7')]));agents[_0x539df4[_0x4d40('0x46')]][_0x4d40('0x3c')]=!![];agents[_0x539df4[_0x4d40('0x46')]][_0x4d40('0x3d')]=_0x4d40('0x48');agents[_0x539df4['secondtransfereruniqueid']][_0x4d40('0x3f')]=_0x539df4[_0x4d40('0x49')];agents[_0x539df4['secondtransfereruniqueid']]['transferuniqueid']=_0x539df4[_0x4d40('0x44')];}if(_0x539df4[_0x4d40('0x4a')]&&agents[_0x539df4['transfereeuniqueid']]){agents[_0x539df4['transfereeuniqueid']][_0x4d40('0x4b')]=0x1;transfers[_0x539df4['transfereeuniqueid']]=_[_0x4d40('0x4c')](agents[_0x539df4['transfereeuniqueid']]);transfers[_0x539df4[_0x4d40('0x4a')]][_0x4d40('0x9')]=agents[_0x539df4[_0x4d40('0x46')]][_0x4d40('0x9')];transfers[_0x539df4[_0x4d40('0x4a')]]['calleridname']=agents[_0x539df4['secondtransfereruniqueid']]['calleridname'];transfers[_0x539df4[_0x4d40('0x4a')]][_0x4d40('0x19')]=utils[_0x4d40('0x1a')]();transfers[_0x539df4[_0x4d40('0x4a')]][_0x4d40('0x31')]=utils['now']();transfers[_0x539df4[_0x4d40('0x4a')]]['holdtime']=0x0;transfers[_0x539df4[_0x4d40('0x4a')]][_0x4d40('0x4b')]=0x2;}}else if(_0x539df4[_0x4d40('0x46')]==_0x539df4[_0x4d40('0x4d')]){if(!_[_0x4d40('0x20')](agents[_0x539df4[_0x4d40('0x44')]])){utils['info'](util['format'](_0x4d40('0x47'),_0x539df4[_0x4d40('0x44')],agents[_0x539df4[_0x4d40('0x44')]][_0x4d40('0x7')]));agents[_0x539df4[_0x4d40('0x44')]][_0x4d40('0x3c')]=!![];agents[_0x539df4[_0x4d40('0x44')]][_0x4d40('0x3d')]='ATTENDED';agents[_0x539df4[_0x4d40('0x44')]]['transferexten']=_0x539df4['secondtransfererexten'];agents[_0x539df4['origtransfereruniqueid']][_0x4d40('0x41')]=_0x539df4[_0x4d40('0x46')];}if(_0x539df4[_0x4d40('0x4e')]&&agents[_0x539df4[_0x4d40('0x4e')]]){agents[_0x539df4['transfertargetuniqueid']][_0x4d40('0x4b')]=0x1;transfers[_0x539df4[_0x4d40('0x4e')]]=_[_0x4d40('0x4c')](agents[_0x539df4[_0x4d40('0x4e')]]);transfers[_0x539df4[_0x4d40('0x4e')]]['calleridnum']=agents[_0x539df4['origtransfereruniqueid']][_0x4d40('0x9')];transfers[_0x539df4['transfertargetuniqueid']][_0x4d40('0x4f')]=agents[_0x539df4[_0x4d40('0x44')]][_0x4d40('0x4f')];transfers[_0x539df4['transfertargetuniqueid']]['agentcalledAt']=utils[_0x4d40('0x1a')]();transfers[_0x539df4['transfertargetuniqueid']][_0x4d40('0x31')]=utils[_0x4d40('0x1a')]();transfers[_0x539df4['transfertargetuniqueid']][_0x4d40('0x27')]=0x0;transfers[_0x539df4[_0x4d40('0x4e')]][_0x4d40('0x4b')]=0x2;}}}catch(_0x3bce3d){utils[_0x4d40('0x1f')](util[_0x4d40('0x2')]('[%s][agents][attendedtransfer]',_0x539df4['origtransfereruniqueid']),_0x3bce3d);}};exports['hangup']=function(_0x13872b){try{utils[_0x4d40('0x17')](util[_0x4d40('0x2')]('[%s][agents][hangup]',_0x13872b[_0x4d40('0x4')]),_0x13872b);if(agents[_0x13872b[_0x4d40('0x4')]]&&agents[_0x13872b['uniqueid']]['reason']===_0x4d40('0x26')){if(_0x13872b[_0x4d40('0x50')]==='21'){agents[_0x13872b['uniqueid']][_0x4d40('0x25')]=_0x4d40('0x51');agents[_0x13872b[_0x4d40('0x4')]][_0x4d40('0x1b')]=_0x4d40('0x51');}utils[_0x4d40('0x30')](util['format'](_0x4d40('0x52'),_0x13872b['uniqueid'],agents[_0x13872b[_0x4d40('0x4')]][_0x4d40('0x7')],agents[_0x13872b['uniqueid']][_0x4d40('0x25')],agents[_0x13872b[_0x4d40('0x4')]]['lastevent']));writeDB(agents[_0x13872b[_0x4d40('0x4')]]);var _0x7df23=unanswered['indexOf'](_0x13872b[_0x4d40('0x4')]);if(_0x7df23>-0x1){unanswered[_0x4d40('0x53')](_0x7df23,0x1);}}if(transfers[_0x13872b[_0x4d40('0x4')]]){transfers[_0x13872b[_0x4d40('0x4')]][_0x4d40('0xf')]=!![];transfers[_0x13872b['uniqueid']][_0x4d40('0x37')]=utils[_0x4d40('0x1a')]();transfers[_0x13872b[_0x4d40('0x4')]][_0x4d40('0x29')]=utils[_0x4d40('0x54')](transfers[_0x13872b[_0x4d40('0x4')]]['agentcompleteAt'],transfers[_0x13872b[_0x4d40('0x4')]]['agentconnectAt']);transfers[_0x13872b[_0x4d40('0x4')]][_0x4d40('0x25')]=_0x4d40('0x55');transfers[_0x13872b[_0x4d40('0x4')]][_0x4d40('0x1b')]='complete';utils[_0x4d40('0x30')](util[_0x4d40('0x2')](_0x4d40('0x52'),_0x13872b[_0x4d40('0x4')],transfers[_0x13872b['uniqueid']][_0x4d40('0x7')],transfers[_0x13872b[_0x4d40('0x4')]][_0x4d40('0x25')],transfers[_0x13872b[_0x4d40('0x4')]]['lastevent']));writeDB(transfers[_0x13872b[_0x4d40('0x4')]],!![]);}if(agents[_0x13872b['uniqueid']]&&agents[_0x13872b[_0x4d40('0x4')]][_0x4d40('0x31')]){agents[_0x13872b[_0x4d40('0x4')]][_0x4d40('0xf')]=!![];agents[_0x13872b['uniqueid']]['agentcompleteAt']=utils[_0x4d40('0x1a')]();agents[_0x13872b[_0x4d40('0x4')]]['talktime']=utils[_0x4d40('0x54')](agents[_0x13872b[_0x4d40('0x4')]][_0x4d40('0x37')],agents[_0x13872b[_0x4d40('0x4')]][_0x4d40('0x31')]);agents[_0x13872b['uniqueid']][_0x4d40('0x25')]=agents[_0x13872b[_0x4d40('0x4')]][_0x4d40('0x3c')]?_0x4d40('0x3c'):_0x4d40('0x55');agents[_0x13872b[_0x4d40('0x4')]][_0x4d40('0x1b')]=_0x4d40('0x56');utils[_0x4d40('0x30')](util[_0x4d40('0x2')](_0x4d40('0x52'),_0x13872b['uniqueid'],agents[_0x13872b[_0x4d40('0x4')]][_0x4d40('0x7')],agents[_0x13872b['uniqueid']][_0x4d40('0x25')],agents[_0x13872b[_0x4d40('0x4')]]['lastevent']));writeDB(agents[_0x13872b['uniqueid']]);}}catch(_0x33b8f3){utils[_0x4d40('0x1f')](util['format'](_0x4d40('0x57'),_0x13872b[_0x4d40('0x4')]),_0x33b8f3);}};
\ No newline at end of file
index 1f129c8..4e19972 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x1939=['substring','lastIndexOf','includes','hangup','gotoif','lodash','./utils','./transfers.controller','NO\x20ANSWER','FAILED','BUSY','blinds','uniqueid','transfereeuniqueid','info','channel','membername','interface','connectedlinenum','lastevent','accountcode','getUserByInternal','then','UserId','request','CreateVoiceCallReport','newchannel','debug','format','[%s][calls][newchannel]','linkedid','OutgoingSpoolFailed','[%s][calls][newchannel]\x20context:%s\x20exten:%s','exten','calleridnum','context','now','DOCUMENTATION','error','newstate','[%s][calls][newstate]','channelstate','[%s][calls][newstate]\x20context:%s\x20channel:%s','isNil','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','disposition','toNumber','ANSWERED','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','duration','diffTime','starttime','[%s][calls][hangup]','attendedtransfer','localtwolinkedid','[%s][calls][attendedtransfer]','transfereechannel','origtransfereruniqueid','secondtransfererchannel','userfield','_attended','transfertargetchannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfererchannel','musiconholdstart','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','musiconholdstartAt','[%s][calls][musiconholdstart]','musiconholdstop','[%s][calls][musiconholdstop]','mohtime','varset','[%s][calls][varset]','variable','[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s','value','source','xmd-phone','[%s][calls][varset]\x20variable:xmd-phone\x20value:%s','destination','\x22\x20<','xmd-callerid','xmd-callerid-preview','xmcs-queue','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','lastapplication','Queue','lastdata','queue','xmd-contactid','[%s][calls][varset]\x20variable:xmd-contactid\x20value:%s','xmd-cdrtype','[%s][calls][varset]\x20variable:xmd-cdrtype\x20value:%s','type','[%s][calls][varset]\x20variable:outboundrouteid\x20value:%s','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','[%s][calls][newexten]','[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','toLowerCase','set','startsWith','cdr','split'];(function(_0x3ec1da,_0x1e36f5){var _0x472358=function(_0x1d41b1){while(--_0x1d41b1){_0x3ec1da['push'](_0x3ec1da['shift']());}};_0x472358(++_0x1e36f5);}(_0x1939,0x1d1));var _0x9193=function(_0xdb951d,_0x1dc42b){_0xdb951d=_0xdb951d-0x0;var _0x5e789e=_0x1939[_0xdb951d];return _0x5e789e;};'use strict';var _=require(_0x9193('0x0'));var util=require('util');var utils=require(_0x9193('0x1'));var transfers=require(_0x9193('0x2'));var dispositions=[_0x9193('0x3'),'FAILED',_0x9193('0x4'),_0x9193('0x3'),_0x9193('0x3'),_0x9193('0x3'),'ANSWERED',_0x9193('0x5'),_0x9193('0x4'),'FAILED',_0x9193('0x4')];var channels={};function writeDB(_0x162e3a){var _0x488d01;if(transfers[_0x9193('0x6')][_0x162e3a[_0x9193('0x7')]]){_0x488d01=_0x162e3a['uniqueid'];_0x162e3a[_0x9193('0x7')]=transfers[_0x9193('0x6')][_0x162e3a[_0x9193('0x7')]][_0x9193('0x8')];}utils[_0x9193('0x9')](util['format']('[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s',_0x162e3a['uniqueid'],_0x162e3a[_0x9193('0xa')],_0x162e3a['queue'],_0x162e3a[_0x9193('0xb')],_0x162e3a[_0x9193('0xc')],_0x162e3a['calleridnum'],_0x162e3a[_0x9193('0xd')],_0x162e3a[_0x9193('0xe')]));if(_0x162e3a[_0x9193('0xf')]){utils[_0x9193('0x10')](_0x162e3a[_0x9193('0xf')])[_0x9193('0x11')](function(_0xf10273){if(_0xf10273){_0x162e3a[_0x9193('0x12')]=_0xf10273['id'];}utils[_0x9193('0x13')]('CreateVoiceCallReport',_0x162e3a);});}else{utils[_0x9193('0x13')](_0x9193('0x14'),_0x162e3a);}if(channels[_0x162e3a[_0x9193('0x7')]]){delete channels[_0x162e3a[_0x9193('0x7')]];}else if(_0x488d01&&channels[_0x488d01]){if(!transfers[_0x9193('0x6')][_0x488d01]['recording'])delete transfers[_0x9193('0x6')][_0x488d01];delete channels[_0x488d01];}}exports[_0x9193('0x15')]=function(_0x29fe95){try{utils[_0x9193('0x16')](util[_0x9193('0x17')](_0x9193('0x18'),_0x29fe95[_0x9193('0x7')]),_0x29fe95);if(_0x29fe95['uniqueid']==_0x29fe95[_0x9193('0x19')]&&_0x29fe95[_0x9193('0xa')]!=_0x9193('0x1a')){utils['info'](util[_0x9193('0x17')](_0x9193('0x1b'),_0x29fe95[_0x9193('0x7')],_0x29fe95['context'],_0x29fe95[_0x9193('0x1c')]));channels[_0x29fe95[_0x9193('0x7')]]={'uniqueid':_0x29fe95[_0x9193('0x7')],'accountcode':_0x29fe95[_0x9193('0xf')],'source':_0x29fe95[_0x9193('0x1d')],'destination':_0x29fe95['exten'],'destinationcontext':_0x29fe95[_0x9193('0x1e')],'channel':_0x29fe95[_0x9193('0xa')],'starttime':utils[_0x9193('0x1f')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x9193('0x3'),'amaflags':_0x9193('0x20')};}}catch(_0x59868a){utils[_0x9193('0x21')](util[_0x9193('0x17')](_0x9193('0x18'),_0x29fe95[_0x9193('0x7')]),_0x59868a);}};exports[_0x9193('0x22')]=function(_0x4c1406){try{utils[_0x9193('0x16')](util[_0x9193('0x17')](_0x9193('0x23'),_0x4c1406[_0x9193('0x7')]),_0x4c1406);if(!_['isNil'](channels[_0x4c1406['uniqueid']])&&_0x4c1406[_0x9193('0x24')]==0x6){utils[_0x9193('0x9')](util[_0x9193('0x17')](_0x9193('0x25'),_0x4c1406[_0x9193('0x7')],_0x4c1406['context'],_0x4c1406[_0x9193('0xa')]));if(_[_0x9193('0x26')](channels[_0x4c1406[_0x9193('0x7')]]['systemanswertime'])){channels[_0x4c1406[_0x9193('0x7')]][_0x9193('0x27')]=utils[_0x9193('0x1f')]();}}else if(!_[_0x9193('0x26')](channels[_0x4c1406[_0x9193('0x19')]])&&_0x4c1406['channelstate']==0x6&&_0x4c1406[_0x9193('0x1e')]!=_0x9193('0x28')){utils['info'](util[_0x9193('0x17')](_0x9193('0x29'),_0x4c1406[_0x9193('0x7')],_0x4c1406[_0x9193('0x19')],_0x4c1406[_0x9193('0x1e')],_0x4c1406[_0x9193('0xa')]));channels[_0x4c1406['linkedid']][_0x9193('0xf')]=_0x4c1406[_0x9193('0xf')];channels[_0x4c1406[_0x9193('0x19')]][_0x9193('0x2a')]=_0x4c1406[_0x9193('0xa')];if(_[_0x9193('0x26')](channels[_0x4c1406['linkedid']][_0x9193('0x2b')])){channels[_0x4c1406[_0x9193('0x19')]][_0x9193('0x2b')]=utils['now']();}channels[_0x4c1406[_0x9193('0x19')]][_0x9193('0x2c')]=dispositions[_[_0x9193('0x2d')](_0x4c1406['channelstate'])]||_0x9193('0x2e');}}catch(_0x2e95e6){utils[_0x9193('0x21')](util['format']('[%s][calls][newstate]',_0x4c1406[_0x9193('0x7')]),_0x2e95e6);}};exports['hangup']=function(_0x47b1ab){try{if(!_[_0x9193('0x26')](channels[_0x47b1ab[_0x9193('0x7')]])){utils[_0x9193('0x16')](util[_0x9193('0x17')]('[%s][calls][hangup]',_0x47b1ab['uniqueid']),_0x47b1ab);if(_[_0x9193('0x26')](channels[_0x47b1ab[_0x9193('0x7')]][_0x9193('0x2f')])){channels[_0x47b1ab[_0x9193('0x7')]][_0x9193('0x2f')]=_0x47b1ab[_0x9193('0x30')]+'\x20<'+_0x47b1ab[_0x9193('0x1d')]+'>';}utils[_0x9193('0x9')](util['format'](_0x9193('0x31'),_0x47b1ab['uniqueid'],channels[_0x47b1ab[_0x9193('0x7')]][_0x9193('0x2f')],_0x47b1ab[_0x9193('0x32')]));channels[_0x47b1ab['uniqueid']][_0x9193('0x33')]=utils[_0x9193('0x1f')]();channels[_0x47b1ab['uniqueid']][_0x9193('0x34')]=utils[_0x9193('0x35')](channels[_0x47b1ab[_0x9193('0x7')]][_0x9193('0x33')],channels[_0x47b1ab[_0x9193('0x7')]][_0x9193('0x36')]);channels[_0x47b1ab[_0x9193('0x7')]]['billableseconds']=channels[_0x47b1ab[_0x9193('0x7')]][_0x9193('0x2b')]?utils[_0x9193('0x35')](channels[_0x47b1ab[_0x9193('0x7')]]['endtime'],channels[_0x47b1ab[_0x9193('0x7')]][_0x9193('0x2b')]):0x0;writeDB(channels[_0x47b1ab[_0x9193('0x7')]]);}}catch(_0x396acc){utils[_0x9193('0x21')](util[_0x9193('0x17')](_0x9193('0x37'),_0x47b1ab[_0x9193('0x7')]),_0x396acc);}};exports[_0x9193('0x38')]=function(_0x2f44c1){try{if(!_[_0x9193('0x26')](channels[_0x2f44c1[_0x9193('0x39')]])){utils[_0x9193('0x16')](util[_0x9193('0x17')](_0x9193('0x3a'),_0x2f44c1['origtransfereruniqueid']),_0x2f44c1);if(channels[_0x2f44c1[_0x9193('0x39')]]['channel']==_0x2f44c1[_0x9193('0x3b')]){utils['info'](util[_0x9193('0x17')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x2f44c1[_0x9193('0x3c')],_0x2f44c1[_0x9193('0x39')],_0x2f44c1[_0x9193('0x3d')]));channels[_0x2f44c1[_0x9193('0x39')]][_0x9193('0x2a')]=_0x2f44c1['secondtransfererchannel'];channels[_0x2f44c1['localtwolinkedid']][_0x9193('0x3e')]=_0x9193('0x3f');}else if(channels[_0x2f44c1['localtwolinkedid']]['channel']=_0x2f44c1[_0x9193('0x40')]){utils[_0x9193('0x9')](util['format'](_0x9193('0x41'),_0x2f44c1[_0x9193('0x3c')],_0x2f44c1[_0x9193('0x39')],_0x2f44c1[_0x9193('0x42')]));channels[_0x2f44c1[_0x9193('0x39')]][_0x9193('0x2a')]=_0x2f44c1['origtransfererchannel'];channels[_0x2f44c1[_0x9193('0x39')]]['userfield']=_0x9193('0x3f');}}}catch(_0x4ebcfb){utils[_0x9193('0x21')](util[_0x9193('0x17')](_0x9193('0x3a'),_0x2f44c1['origtransfereruniqueid']),_0x4ebcfb);}};exports[_0x9193('0x43')]=function(_0xd0399e){try{if(!_[_0x9193('0x26')](channels[_0xd0399e[_0x9193('0x7')]])){utils[_0x9193('0x16')](util[_0x9193('0x17')]('[%s][calls][musiconholdstart]',_0xd0399e[_0x9193('0x7')]),_0xd0399e);channels[_0xd0399e[_0x9193('0x7')]]['musiconholdstartAt']=utils[_0x9193('0x1f')]();utils['info'](util[_0x9193('0x17')](_0x9193('0x44'),_0xd0399e['uniqueid'],channels[_0xd0399e[_0x9193('0x7')]][_0x9193('0x45')]));}}catch(_0x56ea54){utils[_0x9193('0x21')](util[_0x9193('0x17')](_0x9193('0x46'),_0xd0399e['uniqueid']),_0x56ea54);}};exports[_0x9193('0x47')]=function(_0x9cc9da){try{if(!_[_0x9193('0x26')](channels[_0x9cc9da[_0x9193('0x7')]])){utils[_0x9193('0x16')](util[_0x9193('0x17')](_0x9193('0x48'),_0x9cc9da[_0x9193('0x7')]),_0x9cc9da);if(!_[_0x9193('0x26')](channels[_0x9cc9da[_0x9193('0x7')]][_0x9193('0x45')])){channels[_0x9cc9da[_0x9193('0x7')]][_0x9193('0x49')]+=utils[_0x9193('0x35')](utils[_0x9193('0x1f')](),channels[_0x9cc9da[_0x9193('0x7')]]['musiconholdstartAt']);utils[_0x9193('0x9')](util[_0x9193('0x17')]('[%s][calls][musiconholdstop]\x20mohtime:%s',_0x9cc9da[_0x9193('0x7')],channels[_0x9cc9da[_0x9193('0x7')]]['mohtime']));delete channels[_0x9cc9da[_0x9193('0x7')]][_0x9193('0x45')];}}}catch(_0x1cd102){utils['error'](util[_0x9193('0x17')](_0x9193('0x48'),_0x9cc9da['uniqueid']),_0x1cd102);}};exports[_0x9193('0x4a')]=function(_0x2fa1bc){try{if(!_['isNil'](channels[_0x2fa1bc['uniqueid']])){utils['debug'](util[_0x9193('0x17')](_0x9193('0x4b'),_0x2fa1bc['uniqueid']),_0x2fa1bc);if(!_[_0x9193('0x26')](_0x2fa1bc[_0x9193('0x4c')]['xmd-originatecalleridnum'])){utils[_0x9193('0x9')](util[_0x9193('0x17')](_0x9193('0x4d'),_0x2fa1bc['uniqueid'],_0x2fa1bc[_0x9193('0x4e')]));channels[_0x2fa1bc[_0x9193('0x7')]][_0x9193('0x4f')]=_0x2fa1bc[_0x9193('0x4e')];}if(!_['isNil'](_0x2fa1bc[_0x9193('0x4c')][_0x9193('0x50')])){utils['info'](util[_0x9193('0x17')](_0x9193('0x51'),_0x2fa1bc['uniqueid'],_0x2fa1bc[_0x9193('0x4e')]));channels[_0x2fa1bc[_0x9193('0x7')]][_0x9193('0x52')]=_0x2fa1bc[_0x9193('0x4e')];channels[_0x2fa1bc[_0x9193('0x7')]][_0x9193('0x2f')]='\x22'+_0x2fa1bc['value']+_0x9193('0x53')+_0x2fa1bc[_0x9193('0x4e')]+'>';}if(!_[_0x9193('0x26')](_0x2fa1bc[_0x9193('0x4c')]['xmd-callerid-preview'])||!_[_0x9193('0x26')](_0x2fa1bc[_0x9193('0x4c')][_0x9193('0x54')])){utils['info'](util[_0x9193('0x17')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x2fa1bc[_0x9193('0x7')],!_['isNil'](_0x2fa1bc['variable'][_0x9193('0x55')])?'xmd-callerid-preview':_0x9193('0x54'),_0x2fa1bc[_0x9193('0x4e')]));channels[_0x2fa1bc[_0x9193('0x7')]][_0x9193('0x2f')]=_0x2fa1bc[_0x9193('0x4e')];}if(!_['isNil'](_0x2fa1bc[_0x9193('0x4c')]['xmd-queue'])||!_[_0x9193('0x26')](_0x2fa1bc[_0x9193('0x4c')][_0x9193('0x56')])){utils[_0x9193('0x9')](util['format'](_0x9193('0x57'),_0x2fa1bc['uniqueid'],!_[_0x9193('0x26')](_0x2fa1bc['variable']['xmd-queue'])?_0x9193('0x58'):_0x9193('0x56'),_0x2fa1bc[_0x9193('0x4e')]));channels[_0x2fa1bc[_0x9193('0x7')]][_0x9193('0x59')]=_0x9193('0x5a');channels[_0x2fa1bc[_0x9193('0x7')]][_0x9193('0x5b')]=_0x2fa1bc[_0x9193('0x4e')];channels[_0x2fa1bc[_0x9193('0x7')]][_0x9193('0x5c')]=!![];}if(!_[_0x9193('0x26')](_0x2fa1bc[_0x9193('0x4c')][_0x9193('0x5d')])){utils[_0x9193('0x9')](util['format'](_0x9193('0x5e'),_0x2fa1bc[_0x9193('0x7')],_0x2fa1bc[_0x9193('0x4e')]));channels[_0x2fa1bc[_0x9193('0x7')]]['ContactId']=_0x2fa1bc[_0x9193('0x4e')];}if(!_['isNil'](_0x2fa1bc[_0x9193('0x4c')][_0x9193('0x5f')])){utils['info'](util[_0x9193('0x17')](_0x9193('0x60'),_0x2fa1bc[_0x9193('0x7')],_0x2fa1bc['value']));channels[_0x2fa1bc['uniqueid']][_0x9193('0x61')]=_0x2fa1bc['value'];}if(!_['isNil'](_0x2fa1bc['variable']['outboundrouteid'])){utils[_0x9193('0x9')](util[_0x9193('0x17')](_0x9193('0x62'),_0x2fa1bc[_0x9193('0x7')],_0x2fa1bc['value']));channels[_0x2fa1bc[_0x9193('0x7')]]['routeid']=_0x2fa1bc[_0x9193('0x4e')];}if(!_[_0x9193('0x26')](_0x2fa1bc[_0x9193('0x4c')][_0x9193('0x63')])){utils[_0x9193('0x9')](util[_0x9193('0x17')](_0x9193('0x64'),_0x2fa1bc['uniqueid'],_0x2fa1bc[_0x9193('0x4e')]));channels[_0x2fa1bc['uniqueid']][_0x9193('0x63')]=_0x2fa1bc[_0x9193('0x4e')];}}}catch(_0x4ebf03){utils['error'](util[_0x9193('0x17')](_0x9193('0x4b'),_0x2fa1bc[_0x9193('0x7')]),_0x4ebf03);}};exports['newexten']=function(_0x1deba4){try{if(!_[_0x9193('0x26')](channels[_0x1deba4[_0x9193('0x7')]])){utils['debug'](util[_0x9193('0x17')](_0x9193('0x65'),_0x1deba4['uniqueid']),_0x1deba4);utils[_0x9193('0x9')](util[_0x9193('0x17')](_0x9193('0x66'),_0x1deba4[_0x9193('0x7')],_0x1deba4[_0x9193('0x67')],_0x1deba4[_0x9193('0x68')]));if(_0x1deba4[_0x9193('0x67')][_0x9193('0x69')]()==_0x9193('0x6a')&&_[_0x9193('0x6b')](_0x1deba4[_0x9193('0x68')][_0x9193('0x69')](),_0x9193('0x6c'))){var _0x393e0b=_0x1deba4[_0x9193('0x68')][_0x9193('0x6d')]('=');var _0x55e25f=_0x393e0b[0x0][_0x9193('0x6e')](_0x393e0b[0x0][_0x9193('0x6f')]('(')+0x1,_0x393e0b[0x0][_0x9193('0x6f')](')'));var _0x2c5dc=_0x393e0b[0x1];channels[_0x1deba4['uniqueid']][_0x55e25f]=_0x2c5dc;}if(!_[_0x9193('0x70')]([_0x9193('0x71'),'noop','execif',_0x9193('0x6a'),_0x9193('0x72')],_0x1deba4[_0x9193('0x67')][_0x9193('0x69')]())){channels[_0x1deba4[_0x9193('0x7')]][_0x9193('0x59')]=_0x1deba4[_0x9193('0x67')];channels[_0x1deba4[_0x9193('0x7')]][_0x9193('0x5b')]=_0x1deba4['appdata'];}}}catch(_0x50986f){utils[_0x9193('0x21')](util[_0x9193('0x17')](_0x9193('0x65'),_0x1deba4[_0x9193('0x7')]),_0x50986f);}};
\ No newline at end of file
+var _0xce27=['[%s][calls][newexten]\x20application:%s\x20appdata:%s','application','appdata','set','startsWith','toLowerCase','substring','lastIndexOf','noop','execif','gotoif','lastdata','[%s][calls][newexten]','lodash','util','./utils','./transfers.controller','NO\x20ANSWER','FAILED','ANSWERED','BUSY','uniqueid','blinds','transfereeuniqueid','format','[%s][calls][writeDB]\x20channel:%s\x20queue:%s\x20agent:%s\x20interface:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20lastevent:%s','channel','queue','membername','interface','calleridnum','connectedlinenum','accountcode','then','UserId','request','CreateVoiceCallReport','recording','newchannel','debug','[%s][calls][newchannel]','linkedid','info','exten','context','now','DOCUMENTATION','error','newstate','[%s][calls][newstate]','isNil','channelstate','systemanswertime','transfer','[%s][calls][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','destinationchannel','answertime','toNumber','hangup','[%s][calls][hangup]','callerid','calleridname','[%s][calls][hangup]\x20callerid:%s\x20reason:%s','cause-txt','endtime','billableseconds','attendedtransfer','[%s][calls][attendedtransfer]','localtwolinkedid','transfereechannel','secondtransfererchannel','userfield','transfertargetchannel','[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s','origtransfereruniqueid','origtransfererchannel','_attended','musiconholdstart','[%s][calls][musiconholdstart]','musiconholdstartAt','[%s][calls][musiconholdstart]\x20musiconholdstartAt:%s','[%s][calls][musiconholdstop]','mohtime','diffTime','[%s][calls][musiconholdstop]\x20mohtime:%s','varset','[%s][calls][varset]','variable','xmd-originatecalleridnum','source','value','xmd-phone','destination','\x22\x20<','xmd-callerid-preview','xmd-callerid','[%s][calls][varset]\x20variable:%s\x20value:%s','xmd-queue','xmcs-queue','lastapplication','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','sipcallid','[%s][calls][varset]\x20variable:sipcallid\x20value:%s','newexten'];(function(_0x134dde,_0x312de7){var _0x284398=function(_0x2cef72){while(--_0x2cef72){_0x134dde['push'](_0x134dde['shift']());}};_0x284398(++_0x312de7);}(_0xce27,0xef));var _0x7ce2=function(_0x445682,_0x5ddcc0){_0x445682=_0x445682-0x0;var _0x1d3c6b=_0xce27[_0x445682];return _0x1d3c6b;};'use strict';var _=require(_0x7ce2('0x0'));var util=require(_0x7ce2('0x1'));var utils=require(_0x7ce2('0x2'));var transfers=require(_0x7ce2('0x3'));var dispositions=[_0x7ce2('0x4'),_0x7ce2('0x5'),_0x7ce2('0x5'),_0x7ce2('0x4'),'NO\x20ANSWER','NO\x20ANSWER',_0x7ce2('0x6'),_0x7ce2('0x7'),_0x7ce2('0x5'),'FAILED','FAILED'];var channels={};function writeDB(_0x1eb216){var _0x258865;if(transfers['blinds'][_0x1eb216[_0x7ce2('0x8')]]){_0x258865=_0x1eb216[_0x7ce2('0x8')];_0x1eb216['uniqueid']=transfers[_0x7ce2('0x9')][_0x1eb216['uniqueid']][_0x7ce2('0xa')];}utils['info'](util[_0x7ce2('0xb')](_0x7ce2('0xc'),_0x1eb216[_0x7ce2('0x8')],_0x1eb216[_0x7ce2('0xd')],_0x1eb216[_0x7ce2('0xe')],_0x1eb216[_0x7ce2('0xf')],_0x1eb216[_0x7ce2('0x10')],_0x1eb216[_0x7ce2('0x11')],_0x1eb216[_0x7ce2('0x12')],_0x1eb216['lastevent']));if(_0x1eb216[_0x7ce2('0x13')]){utils['getUserByInternal'](_0x1eb216[_0x7ce2('0x13')])[_0x7ce2('0x14')](function(_0x4a0138){if(_0x4a0138){_0x1eb216[_0x7ce2('0x15')]=_0x4a0138['id'];}utils[_0x7ce2('0x16')](_0x7ce2('0x17'),_0x1eb216);});}else{utils[_0x7ce2('0x16')](_0x7ce2('0x17'),_0x1eb216);}if(channels[_0x1eb216[_0x7ce2('0x8')]]){delete channels[_0x1eb216[_0x7ce2('0x8')]];}else if(_0x258865&&channels[_0x258865]){if(!transfers[_0x7ce2('0x9')][_0x258865][_0x7ce2('0x18')])delete transfers[_0x7ce2('0x9')][_0x258865];delete channels[_0x258865];}}exports[_0x7ce2('0x19')]=function(_0x3beb39){try{utils[_0x7ce2('0x1a')](util[_0x7ce2('0xb')](_0x7ce2('0x1b'),_0x3beb39[_0x7ce2('0x8')]),_0x3beb39);if(_0x3beb39[_0x7ce2('0x8')]==_0x3beb39[_0x7ce2('0x1c')]&&_0x3beb39[_0x7ce2('0xd')]!='OutgoingSpoolFailed'){utils[_0x7ce2('0x1d')](util[_0x7ce2('0xb')]('[%s][calls][newchannel]\x20context:%s\x20exten:%s',_0x3beb39[_0x7ce2('0x8')],_0x3beb39['context'],_0x3beb39['exten']));channels[_0x3beb39['uniqueid']]={'uniqueid':_0x3beb39[_0x7ce2('0x8')],'accountcode':_0x3beb39[_0x7ce2('0x13')],'source':_0x3beb39['calleridnum'],'destination':_0x3beb39[_0x7ce2('0x1e')],'destinationcontext':_0x3beb39[_0x7ce2('0x1f')],'channel':_0x3beb39[_0x7ce2('0xd')],'starttime':utils[_0x7ce2('0x20')](),'answertime':null,'systemanswertime':null,'mohtime':0x0,'disposition':_0x7ce2('0x4'),'amaflags':_0x7ce2('0x21')};}}catch(_0x1a970a){utils[_0x7ce2('0x22')](util[_0x7ce2('0xb')](_0x7ce2('0x1b'),_0x3beb39[_0x7ce2('0x8')]),_0x1a970a);}};exports[_0x7ce2('0x23')]=function(_0x57c06d){try{utils[_0x7ce2('0x1a')](util[_0x7ce2('0xb')](_0x7ce2('0x24'),_0x57c06d[_0x7ce2('0x8')]),_0x57c06d);if(!_[_0x7ce2('0x25')](channels[_0x57c06d[_0x7ce2('0x8')]])&&_0x57c06d[_0x7ce2('0x26')]==0x6){utils[_0x7ce2('0x1d')](util['format']('[%s][calls][newstate]\x20context:%s\x20channel:%s',_0x57c06d[_0x7ce2('0x8')],_0x57c06d[_0x7ce2('0x1f')],_0x57c06d['channel']));if(_[_0x7ce2('0x25')](channels[_0x57c06d['uniqueid']][_0x7ce2('0x27')])){channels[_0x57c06d[_0x7ce2('0x8')]][_0x7ce2('0x27')]=utils[_0x7ce2('0x20')]();}}else if(!_['isNil'](channels[_0x57c06d[_0x7ce2('0x1c')]])&&_0x57c06d[_0x7ce2('0x26')]==0x6&&_0x57c06d[_0x7ce2('0x1f')]!=_0x7ce2('0x28')){utils[_0x7ce2('0x1d')](util['format'](_0x7ce2('0x29'),_0x57c06d[_0x7ce2('0x8')],_0x57c06d['linkedid'],_0x57c06d[_0x7ce2('0x1f')],_0x57c06d[_0x7ce2('0xd')]));channels[_0x57c06d[_0x7ce2('0x1c')]][_0x7ce2('0x13')]=_0x57c06d[_0x7ce2('0x13')];channels[_0x57c06d['linkedid']][_0x7ce2('0x2a')]=_0x57c06d['channel'];if(_[_0x7ce2('0x25')](channels[_0x57c06d[_0x7ce2('0x1c')]][_0x7ce2('0x2b')])){channels[_0x57c06d['linkedid']]['answertime']=utils[_0x7ce2('0x20')]();}channels[_0x57c06d[_0x7ce2('0x1c')]]['disposition']=dispositions[_[_0x7ce2('0x2c')](_0x57c06d[_0x7ce2('0x26')])]||_0x7ce2('0x6');}}catch(_0x45b28c){utils['error'](util[_0x7ce2('0xb')]('[%s][calls][newstate]',_0x57c06d['uniqueid']),_0x45b28c);}};exports[_0x7ce2('0x2d')]=function(_0x36bb29){try{if(!_[_0x7ce2('0x25')](channels[_0x36bb29[_0x7ce2('0x8')]])){utils['debug'](util[_0x7ce2('0xb')](_0x7ce2('0x2e'),_0x36bb29['uniqueid']),_0x36bb29);if(_['isNil'](channels[_0x36bb29[_0x7ce2('0x8')]][_0x7ce2('0x2f')])){channels[_0x36bb29[_0x7ce2('0x8')]][_0x7ce2('0x2f')]=_0x36bb29[_0x7ce2('0x30')]+'\x20<'+_0x36bb29['calleridnum']+'>';}utils['info'](util[_0x7ce2('0xb')](_0x7ce2('0x31'),_0x36bb29[_0x7ce2('0x8')],channels[_0x36bb29[_0x7ce2('0x8')]][_0x7ce2('0x2f')],_0x36bb29[_0x7ce2('0x32')]));channels[_0x36bb29[_0x7ce2('0x8')]][_0x7ce2('0x33')]=utils[_0x7ce2('0x20')]();channels[_0x36bb29['uniqueid']]['duration']=utils['diffTime'](channels[_0x36bb29[_0x7ce2('0x8')]][_0x7ce2('0x33')],channels[_0x36bb29['uniqueid']]['starttime']);channels[_0x36bb29[_0x7ce2('0x8')]][_0x7ce2('0x34')]=channels[_0x36bb29[_0x7ce2('0x8')]][_0x7ce2('0x2b')]?utils['diffTime'](channels[_0x36bb29[_0x7ce2('0x8')]][_0x7ce2('0x33')],channels[_0x36bb29[_0x7ce2('0x8')]][_0x7ce2('0x2b')]):0x0;writeDB(channels[_0x36bb29[_0x7ce2('0x8')]]);}}catch(_0x2b0922){utils[_0x7ce2('0x22')](util[_0x7ce2('0xb')](_0x7ce2('0x2e'),_0x36bb29[_0x7ce2('0x8')]),_0x2b0922);}};exports[_0x7ce2('0x35')]=function(_0x2fc89e){try{if(!_[_0x7ce2('0x25')](channels[_0x2fc89e['localtwolinkedid']])){utils[_0x7ce2('0x1a')](util[_0x7ce2('0xb')](_0x7ce2('0x36'),_0x2fc89e['origtransfereruniqueid']),_0x2fc89e);if(channels[_0x2fc89e[_0x7ce2('0x37')]][_0x7ce2('0xd')]==_0x2fc89e[_0x7ce2('0x38')]){utils['info'](util[_0x7ce2('0xb')]('[%s][calls][attendedtransfer]\x20localtwolinkedid:%s\x20destinationchannel:%s',_0x2fc89e['origtransfereruniqueid'],_0x2fc89e[_0x7ce2('0x37')],_0x2fc89e[_0x7ce2('0x39')]));channels[_0x2fc89e[_0x7ce2('0x37')]]['destinationchannel']=_0x2fc89e[_0x7ce2('0x39')];channels[_0x2fc89e[_0x7ce2('0x37')]][_0x7ce2('0x3a')]='_attended';}else if(channels[_0x2fc89e[_0x7ce2('0x37')]][_0x7ce2('0xd')]=_0x2fc89e[_0x7ce2('0x3b')]){utils[_0x7ce2('0x1d')](util['format'](_0x7ce2('0x3c'),_0x2fc89e[_0x7ce2('0x3d')],_0x2fc89e[_0x7ce2('0x37')],_0x2fc89e[_0x7ce2('0x3e')]));channels[_0x2fc89e[_0x7ce2('0x37')]]['destinationchannel']=_0x2fc89e['origtransfererchannel'];channels[_0x2fc89e[_0x7ce2('0x37')]][_0x7ce2('0x3a')]=_0x7ce2('0x3f');}}}catch(_0x4145f7){utils[_0x7ce2('0x22')](util[_0x7ce2('0xb')]('[%s][calls][attendedtransfer]',_0x2fc89e[_0x7ce2('0x3d')]),_0x4145f7);}};exports[_0x7ce2('0x40')]=function(_0x30d163){try{if(!_[_0x7ce2('0x25')](channels[_0x30d163[_0x7ce2('0x8')]])){utils[_0x7ce2('0x1a')](util[_0x7ce2('0xb')](_0x7ce2('0x41'),_0x30d163[_0x7ce2('0x8')]),_0x30d163);channels[_0x30d163[_0x7ce2('0x8')]][_0x7ce2('0x42')]=utils['now']();utils[_0x7ce2('0x1d')](util['format'](_0x7ce2('0x43'),_0x30d163[_0x7ce2('0x8')],channels[_0x30d163[_0x7ce2('0x8')]][_0x7ce2('0x42')]));}}catch(_0x257ba6){utils[_0x7ce2('0x22')](util[_0x7ce2('0xb')](_0x7ce2('0x41'),_0x30d163[_0x7ce2('0x8')]),_0x257ba6);}};exports['musiconholdstop']=function(_0x540a76){try{if(!_[_0x7ce2('0x25')](channels[_0x540a76['uniqueid']])){utils[_0x7ce2('0x1a')](util[_0x7ce2('0xb')](_0x7ce2('0x44'),_0x540a76[_0x7ce2('0x8')]),_0x540a76);if(!_[_0x7ce2('0x25')](channels[_0x540a76[_0x7ce2('0x8')]][_0x7ce2('0x42')])){channels[_0x540a76[_0x7ce2('0x8')]][_0x7ce2('0x45')]+=utils[_0x7ce2('0x46')](utils[_0x7ce2('0x20')](),channels[_0x540a76['uniqueid']]['musiconholdstartAt']);utils[_0x7ce2('0x1d')](util[_0x7ce2('0xb')](_0x7ce2('0x47'),_0x540a76[_0x7ce2('0x8')],channels[_0x540a76['uniqueid']][_0x7ce2('0x45')]));delete channels[_0x540a76[_0x7ce2('0x8')]][_0x7ce2('0x42')];}}}catch(_0x263efb){utils[_0x7ce2('0x22')](util[_0x7ce2('0xb')]('[%s][calls][musiconholdstop]',_0x540a76[_0x7ce2('0x8')]),_0x263efb);}};exports[_0x7ce2('0x48')]=function(_0x5db548){try{if(!_[_0x7ce2('0x25')](channels[_0x5db548[_0x7ce2('0x8')]])){utils['debug'](util[_0x7ce2('0xb')](_0x7ce2('0x49'),_0x5db548[_0x7ce2('0x8')]),_0x5db548);if(!_[_0x7ce2('0x25')](_0x5db548[_0x7ce2('0x4a')][_0x7ce2('0x4b')])){utils[_0x7ce2('0x1d')](util['format']('[%s][calls][varset]\x20variable:xmd-originatecalleridnum\x20value:%s',_0x5db548[_0x7ce2('0x8')],_0x5db548['value']));channels[_0x5db548[_0x7ce2('0x8')]][_0x7ce2('0x4c')]=_0x5db548[_0x7ce2('0x4d')];}if(!_['isNil'](_0x5db548[_0x7ce2('0x4a')][_0x7ce2('0x4e')])){utils[_0x7ce2('0x1d')](util[_0x7ce2('0xb')]('[%s][calls][varset]\x20variable:xmd-phone\x20value:%s',_0x5db548['uniqueid'],_0x5db548[_0x7ce2('0x4d')]));channels[_0x5db548['uniqueid']][_0x7ce2('0x4f')]=_0x5db548['value'];channels[_0x5db548[_0x7ce2('0x8')]][_0x7ce2('0x2f')]='\x22'+_0x5db548[_0x7ce2('0x4d')]+_0x7ce2('0x50')+_0x5db548[_0x7ce2('0x4d')]+'>';}if(!_[_0x7ce2('0x25')](_0x5db548['variable'][_0x7ce2('0x51')])||!_[_0x7ce2('0x25')](_0x5db548['variable'][_0x7ce2('0x52')])){utils[_0x7ce2('0x1d')](util[_0x7ce2('0xb')](_0x7ce2('0x53'),_0x5db548['uniqueid'],!_[_0x7ce2('0x25')](_0x5db548['variable'][_0x7ce2('0x51')])?_0x7ce2('0x51'):_0x7ce2('0x52'),_0x5db548[_0x7ce2('0x4d')]));channels[_0x5db548[_0x7ce2('0x8')]][_0x7ce2('0x2f')]=_0x5db548['value'];}if(!_[_0x7ce2('0x25')](_0x5db548['variable'][_0x7ce2('0x54')])||!_[_0x7ce2('0x25')](_0x5db548[_0x7ce2('0x4a')]['xmcs-queue'])){utils['info'](util[_0x7ce2('0xb')]('[%s][calls][varset]\x20variable:%s\x20value:%s',_0x5db548[_0x7ce2('0x8')],!_[_0x7ce2('0x25')](_0x5db548[_0x7ce2('0x4a')][_0x7ce2('0x54')])?_0x7ce2('0x54'):_0x7ce2('0x55'),_0x5db548[_0x7ce2('0x4d')]));channels[_0x5db548[_0x7ce2('0x8')]][_0x7ce2('0x56')]=_0x7ce2('0x57');channels[_0x5db548[_0x7ce2('0x8')]]['lastdata']=_0x5db548[_0x7ce2('0x4d')];channels[_0x5db548[_0x7ce2('0x8')]][_0x7ce2('0xe')]=!![];}if(!_['isNil'](_0x5db548[_0x7ce2('0x4a')][_0x7ce2('0x58')])){utils[_0x7ce2('0x1d')](util[_0x7ce2('0xb')](_0x7ce2('0x59'),_0x5db548[_0x7ce2('0x8')],_0x5db548[_0x7ce2('0x4d')]));channels[_0x5db548[_0x7ce2('0x8')]][_0x7ce2('0x5a')]=_0x5db548[_0x7ce2('0x4d')];}if(!_[_0x7ce2('0x25')](_0x5db548[_0x7ce2('0x4a')][_0x7ce2('0x5b')])){utils['info'](util[_0x7ce2('0xb')](_0x7ce2('0x5c'),_0x5db548[_0x7ce2('0x8')],_0x5db548[_0x7ce2('0x4d')]));channels[_0x5db548[_0x7ce2('0x8')]][_0x7ce2('0x5d')]=_0x5db548[_0x7ce2('0x4d')];}if(!_[_0x7ce2('0x25')](_0x5db548[_0x7ce2('0x4a')][_0x7ce2('0x5e')])){utils[_0x7ce2('0x1d')](util[_0x7ce2('0xb')](_0x7ce2('0x5f'),_0x5db548[_0x7ce2('0x8')],_0x5db548[_0x7ce2('0x4d')]));channels[_0x5db548[_0x7ce2('0x8')]][_0x7ce2('0x60')]=_0x5db548[_0x7ce2('0x4d')];}if(!_['isNil'](_0x5db548['variable'][_0x7ce2('0x61')])){utils[_0x7ce2('0x1d')](util[_0x7ce2('0xb')](_0x7ce2('0x62'),_0x5db548[_0x7ce2('0x8')],_0x5db548[_0x7ce2('0x4d')]));channels[_0x5db548[_0x7ce2('0x8')]][_0x7ce2('0x61')]=_0x5db548['value'];}}}catch(_0x28b120){utils[_0x7ce2('0x22')](util['format'](_0x7ce2('0x49'),_0x5db548[_0x7ce2('0x8')]),_0x28b120);}};exports[_0x7ce2('0x63')]=function(_0x5df0be){try{if(!_[_0x7ce2('0x25')](channels[_0x5df0be[_0x7ce2('0x8')]])){utils[_0x7ce2('0x1a')](util[_0x7ce2('0xb')]('[%s][calls][newexten]',_0x5df0be[_0x7ce2('0x8')]),_0x5df0be);utils['info'](util[_0x7ce2('0xb')](_0x7ce2('0x64'),_0x5df0be[_0x7ce2('0x8')],_0x5df0be[_0x7ce2('0x65')],_0x5df0be[_0x7ce2('0x66')]));if(_0x5df0be[_0x7ce2('0x65')]['toLowerCase']()==_0x7ce2('0x67')&&_[_0x7ce2('0x68')](_0x5df0be[_0x7ce2('0x66')][_0x7ce2('0x69')](),'cdr')){var _0x20a664=_0x5df0be[_0x7ce2('0x66')]['split']('=');var _0x2f0b08=_0x20a664[0x0][_0x7ce2('0x6a')](_0x20a664[0x0][_0x7ce2('0x6b')]('(')+0x1,_0x20a664[0x0][_0x7ce2('0x6b')](')'));var _0x23a2e7=_0x20a664[0x1];channels[_0x5df0be[_0x7ce2('0x8')]][_0x2f0b08]=_0x23a2e7;}if(!_['includes']([_0x7ce2('0x2d'),_0x7ce2('0x6c'),_0x7ce2('0x6d'),'set',_0x7ce2('0x6e')],_0x5df0be[_0x7ce2('0x65')]['toLowerCase']())){channels[_0x5df0be['uniqueid']]['lastapplication']=_0x5df0be[_0x7ce2('0x65')];channels[_0x5df0be[_0x7ce2('0x8')]][_0x7ce2('0x6f')]=_0x5df0be['appdata'];}}}catch(_0x14a8bb){utils['error'](util[_0x7ce2('0xb')](_0x7ce2('0x70'),_0x5df0be[_0x7ce2('0x8')]),_0x14a8bb);}};
\ No newline at end of file
index b61ff51..5d41dad 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x9269=['managerevent','./utils','connect','info','[core]\x20connected','shutdown','[core]\x20shutdown','fullybooted','[core]\x20fullybooted','error','[core]\x20error','[core]\x20close'];(function(_0x3f5438,_0x172688){var _0x960edc=function(_0x2b02aa){while(--_0x2b02aa){_0x3f5438['push'](_0x3f5438['shift']());}};_0x960edc(++_0x172688);}(_0x9269,0x9d));var _0x9926=function(_0x15d18f,_0x126b0e){_0x15d18f=_0x15d18f-0x0;var _0xd12bf7=_0x9269[_0x15d18f];return _0xd12bf7;};'use strict';var utils=require(_0x9926('0x0'));exports[_0x9926('0x1')]=function(){utils[_0x9926('0x2')](_0x9926('0x3'));};exports[_0x9926('0x4')]=function(){utils[_0x9926('0x2')](_0x9926('0x5'));};exports[_0x9926('0x6')]=function(){utils[_0x9926('0x2')](_0x9926('0x7'));};exports[_0x9926('0x8')]=function(_0x2a34bc){utils['error'](_0x9926('0x9'),_0x2a34bc);};exports['close']=function(){utils[_0x9926('0x2')](_0x9926('0xa'));};exports[_0x9926('0xb')]=function(_0x41a150){};
\ No newline at end of file
+var _0x0c75=['connect','info','shutdown','[core]\x20shutdown','fullybooted','[core]\x20fullybooted','error','close','managerevent','./utils'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x0c75,0x185));var _0x50c7=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x0c75[_0x321bb2];return _0x9c12ed;};'use strict';var utils=require(_0x50c7('0x0'));exports[_0x50c7('0x1')]=function(){utils[_0x50c7('0x2')]('[core]\x20connected');};exports[_0x50c7('0x3')]=function(){utils[_0x50c7('0x2')](_0x50c7('0x4'));};exports[_0x50c7('0x5')]=function(){utils['info'](_0x50c7('0x6'));};exports[_0x50c7('0x7')]=function(_0x3ef317){utils[_0x50c7('0x7')]('[core]\x20error',_0x3ef317);};exports[_0x50c7('0x8')]=function(){utils[_0x50c7('0x2')]('[core]\x20close');};exports[_0x50c7('0x9')]=function(_0x1bc779){};
\ No newline at end of file
index 10e83b9..3241a21 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x6f65=['variable','outboundrouteid','[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s','value','dialbegin','debug','[%s][dials][dialbegin]','assign','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','dialend','dialstatus','ANSWER','answertime','now','connect','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect','[%s][dials][dialend]\x20dialstatus:%s','[%s][dials][dialend]','[%s][dials][hangup]','[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s','calleridnum','calleridname','complete','duration','endtime','starttime','holdtime','diffTime','billableseconds','lodash','./utils','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','uniqueid','dialstring','connectedlinenum','CreateVoiceDialReport','newexten','[%s][dials][newexten]','[%s][dials][newexten]\x20application:%s\x20appdata:%s','appdata','application','set','toLowerCase','split','error','varset','[%s][dials][varset]','isNil'];(function(_0x10004b,_0x1c8f2e){var _0x21c20e=function(_0x31ee37){while(--_0x31ee37){_0x10004b['push'](_0x10004b['shift']());}};_0x21c20e(++_0x1c8f2e);}(_0x6f65,0x1bf));var _0x56f6=function(_0x4f3d21,_0x4f247d){_0x4f3d21=_0x4f3d21-0x0;var _0x12f12d=_0x6f65[_0x4f3d21];return _0x12f12d;};'use strict';var _=require(_0x56f6('0x0'));var util=require('util');var utils=require(_0x56f6('0x1'));var dials={};function writeDB(_0x406ed7){utils[_0x56f6('0x2')](util[_0x56f6('0x3')](_0x56f6('0x4'),_0x406ed7[_0x56f6('0x5')],_0x406ed7['channel'],_0x406ed7[_0x56f6('0x6')],_0x406ed7['calleridnum'],_0x406ed7[_0x56f6('0x7')],_0x406ed7['dialstatus']));utils['request'](_0x56f6('0x8'),_0x406ed7);delete dials[_0x406ed7['uniqueid']];}exports[_0x56f6('0x9')]=function(_0x56d255){try{utils['debug'](util['format'](_0x56f6('0xa'),_0x56d255[_0x56f6('0x5')]),_0x56d255);utils[_0x56f6('0x2')](util[_0x56f6('0x3')](_0x56f6('0xb'),_0x56d255[_0x56f6('0x5')],_0x56d255['application'],_0x56d255[_0x56f6('0xc')]));if(_0x56d255[_0x56f6('0xd')]['toLowerCase']()==_0x56f6('0xe')&&_['startsWith'](_0x56d255['appdata'][_0x56f6('0xf')](),'cdr(routeid)')){var _0x106cf6=_0x56d255[_0x56f6('0xc')][_0x56f6('0x10')]('=');dials[_0x56d255[_0x56f6('0x5')]]={'routeId':_0x106cf6[0x1]};}}catch(_0x5797a6){utils[_0x56f6('0x11')](util[_0x56f6('0x3')](_0x56f6('0xa'),_0x56d255[_0x56f6('0x5')]),_0x5797a6);}};exports[_0x56f6('0x12')]=function(_0x56140a){try{utils['debug'](util['format'](_0x56f6('0x13'),_0x56140a[_0x56f6('0x5')]),_0x56140a);if(!_[_0x56f6('0x14')](_0x56140a[_0x56f6('0x15')][_0x56f6('0x16')])){utils[_0x56f6('0x2')](util['format'](_0x56f6('0x17'),_0x56140a[_0x56f6('0x5')],_0x56140a[_0x56f6('0x18')]));dials[_0x56140a[_0x56f6('0x5')]]={'routeId':_0x56140a[_0x56f6('0x18')]};}}catch(_0x382fab){utils['error'](util[_0x56f6('0x3')]('[%s][dials][varset]',_0x56140a[_0x56f6('0x5')]),_0x382fab);}};exports[_0x56f6('0x19')]=function(_0x359e0b){try{if(!_['isNil'](dials[_0x359e0b['uniqueid']])){utils[_0x56f6('0x1a')](util[_0x56f6('0x3')](_0x56f6('0x1b'),_0x359e0b['uniqueid']),_0x359e0b);dials[_0x359e0b[_0x56f6('0x5')]]=_[_0x56f6('0x1c')](dials[_0x359e0b[_0x56f6('0x5')]],_0x359e0b);dials[_0x359e0b['uniqueid']]['starttime']=utils['now']();dials[_0x359e0b[_0x56f6('0x5')]][_0x56f6('0x1d')]=_0x56f6('0x1e');utils[_0x56f6('0x2')](util[_0x56f6('0x3')](_0x56f6('0x1f'),_0x359e0b[_0x56f6('0x5')],dials[_0x359e0b[_0x56f6('0x5')]]['starttime']));}}catch(_0x41f76e){utils['error'](util[_0x56f6('0x3')](_0x56f6('0x1b'),_0x359e0b[_0x56f6('0x5')]),_0x41f76e);}};exports[_0x56f6('0x20')]=function(_0x4bd210){try{if(!_[_0x56f6('0x14')](dials[_0x4bd210['uniqueid']])){utils['debug'](util[_0x56f6('0x3')]('[%s][dials][dialend]',_0x4bd210[_0x56f6('0x5')]),_0x4bd210);dials[_0x4bd210[_0x56f6('0x5')]][_0x56f6('0x21')]=_0x4bd210[_0x56f6('0x21')];if(_0x4bd210[_0x56f6('0x21')]==_0x56f6('0x22')){dials[_0x4bd210['uniqueid']]=_[_0x56f6('0x1c')](dials[_0x4bd210['uniqueid']],_0x4bd210);dials[_0x4bd210[_0x56f6('0x5')]][_0x56f6('0x23')]=utils[_0x56f6('0x24')]();dials[_0x4bd210[_0x56f6('0x5')]][_0x56f6('0x1d')]=_0x56f6('0x25');utils[_0x56f6('0x2')](util[_0x56f6('0x3')](_0x56f6('0x26'),_0x4bd210[_0x56f6('0x5')],_0x4bd210['dialstatus'],dials[_0x4bd210[_0x56f6('0x5')]]['answertime']));}else{utils[_0x56f6('0x2')](util['format'](_0x56f6('0x27'),_0x4bd210['uniqueid'],_0x4bd210[_0x56f6('0x21')]));}}}catch(_0x36d197){utils[_0x56f6('0x11')](util[_0x56f6('0x3')](_0x56f6('0x28'),_0x4bd210[_0x56f6('0x5')]),_0x36d197);}};exports['hangup']=function(_0x21fe4f){try{if(!_[_0x56f6('0x14')](dials[_0x21fe4f[_0x56f6('0x5')]])){utils[_0x56f6('0x1a')](util[_0x56f6('0x3')](_0x56f6('0x29'),_0x21fe4f[_0x56f6('0x5')]),_0x21fe4f);utils[_0x56f6('0x2')](util['format'](_0x56f6('0x2a'),_0x21fe4f[_0x56f6('0x5')],_0x21fe4f[_0x56f6('0x2b')],_0x21fe4f[_0x56f6('0x2c')],_0x21fe4f['cause-txt']));dials[_0x21fe4f[_0x56f6('0x5')]]=_[_0x56f6('0x1c')](dials[_0x21fe4f[_0x56f6('0x5')]],{'endtime':utils[_0x56f6('0x24')](),'lastevent':_0x56f6('0x2d')});dials[_0x21fe4f[_0x56f6('0x5')]][_0x56f6('0x2e')]=utils['diffTime'](dials[_0x21fe4f[_0x56f6('0x5')]][_0x56f6('0x2f')],dials[_0x21fe4f[_0x56f6('0x5')]][_0x56f6('0x30')]);dials[_0x21fe4f[_0x56f6('0x5')]][_0x56f6('0x31')]=utils[_0x56f6('0x32')](dials[_0x21fe4f['uniqueid']]['answertime']||dials[_0x21fe4f[_0x56f6('0x5')]][_0x56f6('0x2f')],dials[_0x21fe4f[_0x56f6('0x5')]][_0x56f6('0x30')]);dials[_0x21fe4f[_0x56f6('0x5')]][_0x56f6('0x33')]=dials[_0x21fe4f[_0x56f6('0x5')]]['answertime']?utils[_0x56f6('0x32')](dials[_0x21fe4f[_0x56f6('0x5')]]['endtime'],dials[_0x21fe4f['uniqueid']]['answertime']):0x0;writeDB(dials[_0x21fe4f[_0x56f6('0x5')]]);}}catch(_0x22a906){utils[_0x56f6('0x11')](util[_0x56f6('0x3')]('[%s][dials][hangup]',_0x21fe4f[_0x56f6('0x5')]),_0x22a906);}};
\ No newline at end of file
+var _0xdd95=['answertime','hangup','[%s][dials][hangup]','calleridname','complete','duration','diffTime','endtime','billableseconds','lodash','util','info','format','[%s][dials][writeDB]\x20channel:%s\x20dialstring:%s\x20calleridnum:%s\x20connectedlinenum:%s\x20dialstatus:%s','channel','dialstring','calleridnum','connectedlinenum','dialstatus','request','CreateVoiceDialReport','uniqueid','debug','[%s][dials][newexten]','application','appdata','set','startsWith','toLowerCase','cdr(routeid)','split','varset','[%s][dials][varset]','isNil','outboundrouteid','value','dialbegin','assign','starttime','now','lastevent','called','[%s][dials][hangup]\x20starttime:%s\x20lastevent:called','error','[%s][dials][dialbegin]','[%s][dials][dialend]','ANSWER','[%s][dials][dialend]\x20dialstatus:%s\x20answertime:%s\x20lastevent:connect'];(function(_0x15fd74,_0x3d4c70){var _0xc035de=function(_0x372c00){while(--_0x372c00){_0x15fd74['push'](_0x15fd74['shift']());}};_0xc035de(++_0x3d4c70);}(_0xdd95,0x159));var _0x5dd9=function(_0x26c323,_0x559fa7){_0x26c323=_0x26c323-0x0;var _0xaa4f94=_0xdd95[_0x26c323];return _0xaa4f94;};'use strict';var _=require(_0x5dd9('0x0'));var util=require(_0x5dd9('0x1'));var utils=require('./utils');var dials={};function writeDB(_0x486c8d){utils[_0x5dd9('0x2')](util[_0x5dd9('0x3')](_0x5dd9('0x4'),_0x486c8d['uniqueid'],_0x486c8d[_0x5dd9('0x5')],_0x486c8d[_0x5dd9('0x6')],_0x486c8d[_0x5dd9('0x7')],_0x486c8d[_0x5dd9('0x8')],_0x486c8d[_0x5dd9('0x9')]));utils[_0x5dd9('0xa')](_0x5dd9('0xb'),_0x486c8d);delete dials[_0x486c8d[_0x5dd9('0xc')]];}exports['newexten']=function(_0x28da42){try{utils[_0x5dd9('0xd')](util[_0x5dd9('0x3')](_0x5dd9('0xe'),_0x28da42[_0x5dd9('0xc')]),_0x28da42);utils[_0x5dd9('0x2')](util['format']('[%s][dials][newexten]\x20application:%s\x20appdata:%s',_0x28da42[_0x5dd9('0xc')],_0x28da42[_0x5dd9('0xf')],_0x28da42[_0x5dd9('0x10')]));if(_0x28da42[_0x5dd9('0xf')]['toLowerCase']()==_0x5dd9('0x11')&&_[_0x5dd9('0x12')](_0x28da42['appdata'][_0x5dd9('0x13')](),_0x5dd9('0x14'))){var _0x1b7709=_0x28da42[_0x5dd9('0x10')][_0x5dd9('0x15')]('=');dials[_0x28da42[_0x5dd9('0xc')]]={'routeId':_0x1b7709[0x1]};}}catch(_0x124646){utils['error'](util[_0x5dd9('0x3')]('[%s][dials][newexten]',_0x28da42[_0x5dd9('0xc')]),_0x124646);}};exports[_0x5dd9('0x16')]=function(_0x199763){try{utils[_0x5dd9('0xd')](util[_0x5dd9('0x3')](_0x5dd9('0x17'),_0x199763[_0x5dd9('0xc')]),_0x199763);if(!_[_0x5dd9('0x18')](_0x199763['variable'][_0x5dd9('0x19')])){utils['info'](util[_0x5dd9('0x3')]('[%s][dials][varset]\x20variable:outboundrouteid\x20value:%s',_0x199763[_0x5dd9('0xc')],_0x199763[_0x5dd9('0x1a')]));dials[_0x199763['uniqueid']]={'routeId':_0x199763['value']};}}catch(_0x3966a6){utils['error'](util[_0x5dd9('0x3')](_0x5dd9('0x17'),_0x199763[_0x5dd9('0xc')]),_0x3966a6);}};exports[_0x5dd9('0x1b')]=function(_0x2111e1){try{if(!_[_0x5dd9('0x18')](dials[_0x2111e1['uniqueid']])){utils['debug'](util[_0x5dd9('0x3')]('[%s][dials][dialbegin]',_0x2111e1[_0x5dd9('0xc')]),_0x2111e1);dials[_0x2111e1[_0x5dd9('0xc')]]=_[_0x5dd9('0x1c')](dials[_0x2111e1[_0x5dd9('0xc')]],_0x2111e1);dials[_0x2111e1[_0x5dd9('0xc')]][_0x5dd9('0x1d')]=utils[_0x5dd9('0x1e')]();dials[_0x2111e1['uniqueid']][_0x5dd9('0x1f')]=_0x5dd9('0x20');utils[_0x5dd9('0x2')](util[_0x5dd9('0x3')](_0x5dd9('0x21'),_0x2111e1[_0x5dd9('0xc')],dials[_0x2111e1[_0x5dd9('0xc')]][_0x5dd9('0x1d')]));}}catch(_0x147737){utils[_0x5dd9('0x22')](util[_0x5dd9('0x3')](_0x5dd9('0x23'),_0x2111e1[_0x5dd9('0xc')]),_0x147737);}};exports['dialend']=function(_0x15fd57){try{if(!_['isNil'](dials[_0x15fd57[_0x5dd9('0xc')]])){utils[_0x5dd9('0xd')](util[_0x5dd9('0x3')](_0x5dd9('0x24'),_0x15fd57[_0x5dd9('0xc')]),_0x15fd57);dials[_0x15fd57['uniqueid']]['dialstatus']=_0x15fd57['dialstatus'];if(_0x15fd57[_0x5dd9('0x9')]==_0x5dd9('0x25')){dials[_0x15fd57[_0x5dd9('0xc')]]=_[_0x5dd9('0x1c')](dials[_0x15fd57['uniqueid']],_0x15fd57);dials[_0x15fd57['uniqueid']]['answertime']=utils[_0x5dd9('0x1e')]();dials[_0x15fd57[_0x5dd9('0xc')]]['lastevent']='connect';utils[_0x5dd9('0x2')](util[_0x5dd9('0x3')](_0x5dd9('0x26'),_0x15fd57['uniqueid'],_0x15fd57['dialstatus'],dials[_0x15fd57[_0x5dd9('0xc')]][_0x5dd9('0x27')]));}else{utils[_0x5dd9('0x2')](util['format']('[%s][dials][dialend]\x20dialstatus:%s',_0x15fd57[_0x5dd9('0xc')],_0x15fd57[_0x5dd9('0x9')]));}}}catch(_0x380f6e){utils[_0x5dd9('0x22')](util[_0x5dd9('0x3')]('[%s][dials][dialend]',_0x15fd57[_0x5dd9('0xc')]),_0x380f6e);}};exports[_0x5dd9('0x28')]=function(_0x571ece){try{if(!_[_0x5dd9('0x18')](dials[_0x571ece[_0x5dd9('0xc')]])){utils[_0x5dd9('0xd')](util[_0x5dd9('0x3')](_0x5dd9('0x29'),_0x571ece[_0x5dd9('0xc')]),_0x571ece);utils[_0x5dd9('0x2')](util[_0x5dd9('0x3')]('[%s][dials][hangup]\x20calleridnum:%s\x20calleridname:%s\x20lastevent:complete\x20reason:%s',_0x571ece[_0x5dd9('0xc')],_0x571ece[_0x5dd9('0x7')],_0x571ece[_0x5dd9('0x2a')],_0x571ece['cause-txt']));dials[_0x571ece[_0x5dd9('0xc')]]=_[_0x5dd9('0x1c')](dials[_0x571ece[_0x5dd9('0xc')]],{'endtime':utils[_0x5dd9('0x1e')](),'lastevent':_0x5dd9('0x2b')});dials[_0x571ece[_0x5dd9('0xc')]][_0x5dd9('0x2c')]=utils[_0x5dd9('0x2d')](dials[_0x571ece[_0x5dd9('0xc')]][_0x5dd9('0x2e')],dials[_0x571ece['uniqueid']][_0x5dd9('0x1d')]);dials[_0x571ece[_0x5dd9('0xc')]]['holdtime']=utils['diffTime'](dials[_0x571ece[_0x5dd9('0xc')]][_0x5dd9('0x27')]||dials[_0x571ece['uniqueid']][_0x5dd9('0x2e')],dials[_0x571ece[_0x5dd9('0xc')]][_0x5dd9('0x1d')]);dials[_0x571ece[_0x5dd9('0xc')]][_0x5dd9('0x2f')]=dials[_0x571ece[_0x5dd9('0xc')]][_0x5dd9('0x27')]?utils[_0x5dd9('0x2d')](dials[_0x571ece[_0x5dd9('0xc')]]['endtime'],dials[_0x571ece['uniqueid']][_0x5dd9('0x27')]):0x0;writeDB(dials[_0x571ece[_0x5dd9('0xc')]]);}}catch(_0x6f3ac1){utils[_0x5dd9('0x22')](util[_0x5dd9('0x3')](_0x5dd9('0x29'),_0x571ece['uniqueid']),_0x6f3ac1);}};
\ No newline at end of file
index 3ac0493..089d9d4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb26d=['fullybooted','error','close','managerevent','devicestatechange','debug','format','[%s][index][devicestatechange]','device','[%s][index][agentcalled]','uniqueid','agentcalled','agentringnoanswer','[%s][index][agentringnoanswer]','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]','[%s][index][queuecallerleave]','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]','[%s][index][attendedtransfer]','origtransfereruniqueid','attendedtransfer','varset','newexten','[%s][index][newexten]','newchannel','[%s][index][newchannel]','dialbegin','[%s][index][dialbegin]','[%s]dialbegin','dialend','[%s][index][dialend]','asterisk-manager','../../config/environment','./utils','util','xdr','disabled','env','production','asterisk','keepConnected','info','XDR\x20DISABLED','./agents.controller','./calls.controller','./recordings.controller','./dials.controller','connect','shutdown'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xb26d,0x1c3));var _0xdb26=function(_0x2591b8,_0x1efeee){_0x2591b8=_0x2591b8-0x0;var _0x1b4fdc=_0xb26d[_0x2591b8];return _0x1b4fdc;};var AsteriskManager=require(_0xdb26('0x0'));var config=require(_0xdb26('0x1'));var utils=require(_0xdb26('0x2'));var util=require(_0xdb26('0x3'));var isXDREnabled=config[_0xdb26('0x4')]&&config[_0xdb26('0x4')][_0xdb26('0x5')]?!config[_0xdb26('0x4')][_0xdb26('0x5')]:!![];var isProduction=config[_0xdb26('0x6')]===_0xdb26('0x7')||![];var isLocalAsterisk=config[_0xdb26('0x4')]&&config[_0xdb26('0x4')]['local']===!![]||![];var ami=new AsteriskManager(config[_0xdb26('0x8')]['port'],config[_0xdb26('0x8')]['ip'],config[_0xdb26('0x8')]['username'],config['asterisk']['password'],!![]);ami[_0xdb26('0x9')]();if(!isXDREnabled){utils[_0xdb26('0xa')](_0xdb26('0xb'));}else if(!isProduction&&!isLocalAsterisk){utils[_0xdb26('0xa')]('Asterisk\x20disabled\x20on\x20localhost');}else{var agents=require(_0xdb26('0xc'));var calls=require(_0xdb26('0xd'));var queues=require('./queues.controller');var recordings=require(_0xdb26('0xe'));var members=require('./members.controller');var dials=require(_0xdb26('0xf'));var transfers=require('./transfers.controller');var core=require('./core.controller');ami['on'](_0xdb26('0x10'),core['connect']);ami['on'](_0xdb26('0x11'),core[_0xdb26('0x11')]);ami['on'](_0xdb26('0x12'),core[_0xdb26('0x12')]);ami['on'](_0xdb26('0x13'),core[_0xdb26('0x13')]);ami['on'](_0xdb26('0x14'),core[_0xdb26('0x14')]);ami['on'](_0xdb26('0x15'),core[_0xdb26('0x15')]);ami['on'](_0xdb26('0x16'),function(_0x54b2c2){try{utils[_0xdb26('0x17')](util[_0xdb26('0x18')](_0xdb26('0x19'),_0x54b2c2['device']),_0x54b2c2);members[_0xdb26('0x16')](_0x54b2c2);}catch(_0x11d95d){utils[_0xdb26('0x13')](util[_0xdb26('0x18')](_0xdb26('0x19'),_0x54b2c2[_0xdb26('0x1a')]),_0x11d95d);}});ami['on']('agentcalled',function(_0x22fc8c){try{utils[_0xdb26('0x17')](util[_0xdb26('0x18')](_0xdb26('0x1b'),_0x22fc8c[_0xdb26('0x1c')]),_0x22fc8c);agents[_0xdb26('0x1d')](_0x22fc8c);}catch(_0x4be00f){utils[_0xdb26('0x13')](util[_0xdb26('0x18')]('[%s][index][agentcalled]',_0x22fc8c[_0xdb26('0x1c')]),_0x4be00f);}});ami['on'](_0xdb26('0x1e'),function(_0x5d4c0d){try{utils[_0xdb26('0x17')](util['format'](_0xdb26('0x1f'),_0x5d4c0d[_0xdb26('0x1c')]),_0x5d4c0d);agents[_0xdb26('0x1e')](_0x5d4c0d);}catch(_0x4a76bc){utils[_0xdb26('0x13')](util[_0xdb26('0x18')](_0xdb26('0x1f'),_0x5d4c0d['uniqueid']),_0x4a76bc);}});ami['on'](_0xdb26('0x20'),function(_0x131f9c){try{utils[_0xdb26('0x17')](util[_0xdb26('0x18')](_0xdb26('0x21'),_0x131f9c[_0xdb26('0x1c')]),_0x131f9c);agents['agentconnect'](_0x131f9c);queues[_0xdb26('0x20')](_0x131f9c);}catch(_0x5e4cdd){utils['error'](util[_0xdb26('0x18')](_0xdb26('0x21'),_0x131f9c['uniqueid']),_0x5e4cdd);}});ami['on'](_0xdb26('0x22'),function(_0x4aa586){try{utils[_0xdb26('0x17')](util['format'](_0xdb26('0x23'),_0x4aa586[_0xdb26('0x1c')]),_0x4aa586);agents[_0xdb26('0x22')](_0x4aa586);queues[_0xdb26('0x22')](_0x4aa586);members['agentcomplete'](_0x4aa586);}catch(_0x3b82c7){utils[_0xdb26('0x13')](util['format'](_0xdb26('0x23'),_0x4aa586[_0xdb26('0x1c')]),_0x3b82c7);}});ami['on'](_0xdb26('0x24'),function(_0x2f8e30){try{utils['debug'](util[_0xdb26('0x18')]('[%s][index][queuecallerabandon]',_0x2f8e30[_0xdb26('0x1c')]),_0x2f8e30);agents['queuecallerabandon'](_0x2f8e30);queues[_0xdb26('0x24')](_0x2f8e30);}catch(_0x3dcbb0){utils[_0xdb26('0x13')](util['format'](_0xdb26('0x25'),_0x2f8e30['uniqueid']),_0x3dcbb0);}});ami['on'](_0xdb26('0x26'),function(_0x25b136){try{utils[_0xdb26('0x17')](util[_0xdb26('0x18')](_0xdb26('0x27'),_0x25b136['uniqueid']),_0x25b136);queues[_0xdb26('0x26')](_0x25b136);recordings[_0xdb26('0x26')](_0x25b136);}catch(_0x306f04){utils[_0xdb26('0x13')](util[_0xdb26('0x18')](_0xdb26('0x27'),_0x25b136[_0xdb26('0x1c')]),_0x306f04);}});ami['on']('queuecallerleave',function(_0x51b61d){try{utils['debug'](util[_0xdb26('0x18')](_0xdb26('0x28'),_0x51b61d[_0xdb26('0x1c')]),_0x51b61d);queues[_0xdb26('0x29')](_0x51b61d);}catch(_0x497d94){utils[_0xdb26('0x13')](util[_0xdb26('0x18')](_0xdb26('0x28'),_0x51b61d[_0xdb26('0x1c')]),_0x497d94);}});ami['on'](_0xdb26('0x2a'),function(_0x40467e){try{utils[_0xdb26('0x17')](util[_0xdb26('0x18')]('[%s][index][musiconholdstart]',_0x40467e['uniqueid']),_0x40467e);queues['musiconholdstart'](_0x40467e);calls[_0xdb26('0x2a')](_0x40467e);}catch(_0x34b233){utils['error'](util[_0xdb26('0x18')](_0xdb26('0x2b'),_0x40467e['uniqueid']),_0x34b233);}});ami['on'](_0xdb26('0x2c'),function(_0x297050){try{utils[_0xdb26('0x17')](util['format'](_0xdb26('0x2d'),_0x297050['uniqueid']),_0x297050);queues[_0xdb26('0x2c')](_0x297050);calls['musiconholdstop'](_0x297050);}catch(_0x34c08a){utils[_0xdb26('0x13')](util[_0xdb26('0x18')]('[%s][index][musiconholdstop]',_0x297050[_0xdb26('0x1c')]),_0x34c08a);}});ami['on'](_0xdb26('0x2e'),function(_0x3689f6){try{utils[_0xdb26('0x17')](util[_0xdb26('0x18')](_0xdb26('0x2f'),_0x3689f6[_0xdb26('0x1c')]),_0x3689f6);calls['newstate'](_0x3689f6);recordings['newstate'](_0x3689f6);}catch(_0x1567dc){utils[_0xdb26('0x13')](util[_0xdb26('0x18')](_0xdb26('0x2f'),_0x3689f6[_0xdb26('0x1c')]),_0x1567dc);}});ami['on'](_0xdb26('0x30'),function(_0x5e8893){try{utils[_0xdb26('0x17')](util[_0xdb26('0x18')](_0xdb26('0x31'),_0x5e8893[_0xdb26('0x1c')]),_0x5e8893);calls[_0xdb26('0x30')](_0x5e8893);recordings['hangup'](_0x5e8893);dials[_0xdb26('0x30')](_0x5e8893);agents[_0xdb26('0x30')](_0x5e8893);queues[_0xdb26('0x30')](_0x5e8893);}catch(_0x1a51a9){utils[_0xdb26('0x13')](util[_0xdb26('0x18')](_0xdb26('0x31'),_0x5e8893[_0xdb26('0x1c')]),_0x1a51a9);}});ami['on'](_0xdb26('0x32'),function(_0x46b08d){try{utils[_0xdb26('0x17')](util['format'](_0xdb26('0x33'),_0x46b08d[_0xdb26('0x1c')]),_0x46b08d);members[_0xdb26('0x32')](_0x46b08d);}catch(_0x74a1d){utils[_0xdb26('0x13')](util[_0xdb26('0x18')](_0xdb26('0x33'),_0x46b08d[_0xdb26('0x1c')]),_0x74a1d);}});ami['on'](_0xdb26('0x34'),function(_0x3051bb){try{utils[_0xdb26('0x17')](util[_0xdb26('0x18')](_0xdb26('0x35'),_0x3051bb[_0xdb26('0x1c')]),_0x3051bb);queues['blindtransfer'](_0x3051bb);agents['blindtransfer'](_0x3051bb);transfers['blindtransfer'](_0x3051bb);recordings['blindtransfer'](_0x3051bb);}catch(_0x34fb2e){utils[_0xdb26('0x13')](util[_0xdb26('0x18')](_0xdb26('0x35'),_0x3051bb[_0xdb26('0x1c')]),_0x34fb2e);}});ami['on']('attendedtransfer',function(_0x41a639){try{utils['debug'](util[_0xdb26('0x18')](_0xdb26('0x36'),_0x41a639[_0xdb26('0x37')]),_0x41a639);queues['attendedtransfer'](_0x41a639);transfers['attendedtransfer'](_0x41a639);agents['attendedtransfer'](_0x41a639);calls[_0xdb26('0x38')](_0x41a639);}catch(_0x15854e){utils[_0xdb26('0x13')](util[_0xdb26('0x18')](_0xdb26('0x36'),_0x41a639[_0xdb26('0x37')]),_0x15854e);}});ami['on']('varset',function(_0x38b0ee){try{utils[_0xdb26('0x17')](util['format']('[%s][index][varset]',_0x38b0ee['uniqueid']),_0x38b0ee);queues[_0xdb26('0x39')](_0x38b0ee);recordings[_0xdb26('0x39')](_0x38b0ee);calls['varset'](_0x38b0ee);dials['varset'](_0x38b0ee);}catch(_0x2dac72){utils[_0xdb26('0x13')](util[_0xdb26('0x18')]('[%s][index][varset]',_0x38b0ee[_0xdb26('0x1c')]),_0x2dac72);}});ami['on'](_0xdb26('0x3a'),function(_0x5a7a73){try{utils['debug'](util[_0xdb26('0x18')](_0xdb26('0x3b'),_0x5a7a73[_0xdb26('0x1c')]),_0x5a7a73);calls[_0xdb26('0x3a')](_0x5a7a73);recordings['newexten'](_0x5a7a73);dials['newexten'](_0x5a7a73);}catch(_0x367f1d){utils[_0xdb26('0x13')](util[_0xdb26('0x18')](_0xdb26('0x3b'),_0x5a7a73[_0xdb26('0x1c')]),_0x367f1d);}});ami['on'](_0xdb26('0x3c'),function(_0x2193f6){try{utils[_0xdb26('0x17')](util[_0xdb26('0x18')]('[%s][index][newchannel]',_0x2193f6[_0xdb26('0x1c')]),_0x2193f6);calls[_0xdb26('0x3c')](_0x2193f6);recordings[_0xdb26('0x3c')](_0x2193f6);}catch(_0x1c3c05){utils['error'](util[_0xdb26('0x18')](_0xdb26('0x3d'),_0x2193f6[_0xdb26('0x1c')]),_0x1c3c05);}});ami['on'](_0xdb26('0x3e'),function(_0x3cf85a){try{utils[_0xdb26('0x17')](util['format'](_0xdb26('0x3f'),_0x3cf85a['uniqueid']),_0x3cf85a);dials[_0xdb26('0x3e')](_0x3cf85a);}catch(_0x4ce677){utils['error'](util[_0xdb26('0x18')](_0xdb26('0x40'),_0x3cf85a['uniqueid']),_0x4ce677);}});ami['on'](_0xdb26('0x41'),function(_0xf88d63){try{utils[_0xdb26('0x17')](util[_0xdb26('0x18')](_0xdb26('0x42'),_0xf88d63[_0xdb26('0x1c')]),_0xf88d63);dials['dialend'](_0xf88d63);}catch(_0x58924e){utils[_0xdb26('0x13')](util[_0xdb26('0x18')](_0xdb26('0x42'),_0xf88d63['uniqueid']),_0x58924e);}});}
\ No newline at end of file
+var _0xdb78=['queuecallerleave','[%s][index][queuecallerleave]','musiconholdstart','[%s][index][musiconholdstart]','musiconholdstop','[%s][index][musiconholdstop]','[%s][index][newstate]','newstate','hangup','[%s][index][hangup]','cdr','[%s][index][cdr]','blindtransfer','[%s][index][blindtransfer]','attendedtransfer','[%s][index][attendedtransfer]','origtransfereruniqueid','varset','[%s][index][varset]','newexten','[%s][index][newexten]','newchannel','dialbegin','[%s][index][dialbegin]','dialend','[%s][index][dialend]','asterisk-manager','./utils','util','xdr','disabled','local','asterisk','port','username','password','keepConnected','info','Asterisk\x20disabled\x20on\x20localhost','./agents.controller','./calls.controller','./recordings.controller','./members.controller','./transfers.controller','./core.controller','shutdown','fullybooted','error','close','managerevent','devicestatechange','format','[%s][index][devicestatechange]','device','debug','agentringnoanswer','[%s][index][agentringnoanswer]','uniqueid','agentconnect','[%s][index][agentconnect]','agentcomplete','[%s][index][agentcomplete]','queuecallerabandon','[%s][index][queuecallerabandon]','queuecallerjoin','[%s][index][queuecallerjoin]'];(function(_0xa1c6fa,_0x2a0d6f){var _0x53bb7d=function(_0x1e28ae){while(--_0x1e28ae){_0xa1c6fa['push'](_0xa1c6fa['shift']());}};_0x53bb7d(++_0x2a0d6f);}(_0xdb78,0x164));var _0x8db7=function(_0x4ebfdd,_0x2e84e5){_0x4ebfdd=_0x4ebfdd-0x0;var _0x1c8e68=_0xdb78[_0x4ebfdd];return _0x1c8e68;};var AsteriskManager=require(_0x8db7('0x0'));var config=require('../../config/environment');var utils=require(_0x8db7('0x1'));var util=require(_0x8db7('0x2'));var isXDREnabled=config[_0x8db7('0x3')]&&config['xdr'][_0x8db7('0x4')]?!config[_0x8db7('0x3')][_0x8db7('0x4')]:!![];var isProduction=config['env']==='production'||![];var isLocalAsterisk=config[_0x8db7('0x3')]&&config['xdr'][_0x8db7('0x5')]===!![]||![];var ami=new AsteriskManager(config[_0x8db7('0x6')][_0x8db7('0x7')],config[_0x8db7('0x6')]['ip'],config[_0x8db7('0x6')][_0x8db7('0x8')],config['asterisk'][_0x8db7('0x9')],!![]);ami[_0x8db7('0xa')]();if(!isXDREnabled){utils[_0x8db7('0xb')]('XDR\x20DISABLED');}else if(!isProduction&&!isLocalAsterisk){utils['info'](_0x8db7('0xc'));}else{var agents=require(_0x8db7('0xd'));var calls=require(_0x8db7('0xe'));var queues=require('./queues.controller');var recordings=require(_0x8db7('0xf'));var members=require(_0x8db7('0x10'));var dials=require('./dials.controller');var transfers=require(_0x8db7('0x11'));var core=require(_0x8db7('0x12'));ami['on']('connect',core['connect']);ami['on'](_0x8db7('0x13'),core[_0x8db7('0x13')]);ami['on']('fullybooted',core[_0x8db7('0x14')]);ami['on']('error',core[_0x8db7('0x15')]);ami['on'](_0x8db7('0x16'),core[_0x8db7('0x16')]);ami['on'](_0x8db7('0x17'),core[_0x8db7('0x17')]);ami['on'](_0x8db7('0x18'),function(_0x3a983f){try{utils['debug'](util[_0x8db7('0x19')](_0x8db7('0x1a'),_0x3a983f[_0x8db7('0x1b')]),_0x3a983f);members[_0x8db7('0x18')](_0x3a983f);}catch(_0x454181){utils[_0x8db7('0x15')](util[_0x8db7('0x19')](_0x8db7('0x1a'),_0x3a983f['device']),_0x454181);}});ami['on']('agentcalled',function(_0x2a8762){try{utils[_0x8db7('0x1c')](util[_0x8db7('0x19')]('[%s][index][agentcalled]',_0x2a8762['uniqueid']),_0x2a8762);agents['agentcalled'](_0x2a8762);}catch(_0x504c74){utils[_0x8db7('0x15')](util[_0x8db7('0x19')]('[%s][index][agentcalled]',_0x2a8762['uniqueid']),_0x504c74);}});ami['on'](_0x8db7('0x1d'),function(_0x5beb69){try{utils[_0x8db7('0x1c')](util[_0x8db7('0x19')](_0x8db7('0x1e'),_0x5beb69[_0x8db7('0x1f')]),_0x5beb69);agents[_0x8db7('0x1d')](_0x5beb69);}catch(_0x1c55c5){utils[_0x8db7('0x15')](util['format']('[%s][index][agentringnoanswer]',_0x5beb69['uniqueid']),_0x1c55c5);}});ami['on'](_0x8db7('0x20'),function(_0xd19d0a){try{utils[_0x8db7('0x1c')](util['format'](_0x8db7('0x21'),_0xd19d0a[_0x8db7('0x1f')]),_0xd19d0a);agents[_0x8db7('0x20')](_0xd19d0a);queues['agentconnect'](_0xd19d0a);}catch(_0x3a564c){utils['error'](util[_0x8db7('0x19')](_0x8db7('0x21'),_0xd19d0a[_0x8db7('0x1f')]),_0x3a564c);}});ami['on'](_0x8db7('0x22'),function(_0x428a26){try{utils[_0x8db7('0x1c')](util[_0x8db7('0x19')](_0x8db7('0x23'),_0x428a26[_0x8db7('0x1f')]),_0x428a26);agents[_0x8db7('0x22')](_0x428a26);queues[_0x8db7('0x22')](_0x428a26);members['agentcomplete'](_0x428a26);}catch(_0x129ec8){utils[_0x8db7('0x15')](util[_0x8db7('0x19')]('[%s][index][agentcomplete]',_0x428a26['uniqueid']),_0x129ec8);}});ami['on'](_0x8db7('0x24'),function(_0x3c1f15){try{utils[_0x8db7('0x1c')](util[_0x8db7('0x19')](_0x8db7('0x25'),_0x3c1f15[_0x8db7('0x1f')]),_0x3c1f15);agents[_0x8db7('0x24')](_0x3c1f15);queues[_0x8db7('0x24')](_0x3c1f15);}catch(_0x4b1d79){utils[_0x8db7('0x15')](util[_0x8db7('0x19')](_0x8db7('0x25'),_0x3c1f15[_0x8db7('0x1f')]),_0x4b1d79);}});ami['on'](_0x8db7('0x26'),function(_0x5e97e1){try{utils['debug'](util['format'](_0x8db7('0x27'),_0x5e97e1[_0x8db7('0x1f')]),_0x5e97e1);queues['queuecallerjoin'](_0x5e97e1);recordings[_0x8db7('0x26')](_0x5e97e1);}catch(_0x29f290){utils['error'](util['format'](_0x8db7('0x27'),_0x5e97e1[_0x8db7('0x1f')]),_0x29f290);}});ami['on'](_0x8db7('0x28'),function(_0x5b10bf){try{utils[_0x8db7('0x1c')](util[_0x8db7('0x19')](_0x8db7('0x29'),_0x5b10bf[_0x8db7('0x1f')]),_0x5b10bf);queues['queuecallerleave'](_0x5b10bf);}catch(_0x1bfb35){utils[_0x8db7('0x15')](util[_0x8db7('0x19')]('[%s][index][queuecallerleave]',_0x5b10bf[_0x8db7('0x1f')]),_0x1bfb35);}});ami['on'](_0x8db7('0x2a'),function(_0x1936e1){try{utils[_0x8db7('0x1c')](util['format'](_0x8db7('0x2b'),_0x1936e1[_0x8db7('0x1f')]),_0x1936e1);queues[_0x8db7('0x2a')](_0x1936e1);calls[_0x8db7('0x2a')](_0x1936e1);}catch(_0x242eb4){utils[_0x8db7('0x15')](util[_0x8db7('0x19')](_0x8db7('0x2b'),_0x1936e1[_0x8db7('0x1f')]),_0x242eb4);}});ami['on'](_0x8db7('0x2c'),function(_0x3882dd){try{utils['debug'](util[_0x8db7('0x19')](_0x8db7('0x2d'),_0x3882dd[_0x8db7('0x1f')]),_0x3882dd);queues[_0x8db7('0x2c')](_0x3882dd);calls['musiconholdstop'](_0x3882dd);}catch(_0xe0bb36){utils[_0x8db7('0x15')](util[_0x8db7('0x19')](_0x8db7('0x2d'),_0x3882dd[_0x8db7('0x1f')]),_0xe0bb36);}});ami['on']('newstate',function(_0x117de7){try{utils[_0x8db7('0x1c')](util[_0x8db7('0x19')](_0x8db7('0x2e'),_0x117de7[_0x8db7('0x1f')]),_0x117de7);calls[_0x8db7('0x2f')](_0x117de7);recordings[_0x8db7('0x2f')](_0x117de7);}catch(_0x4ab09b){utils[_0x8db7('0x15')](util[_0x8db7('0x19')](_0x8db7('0x2e'),_0x117de7['uniqueid']),_0x4ab09b);}});ami['on'](_0x8db7('0x30'),function(_0x4ee7bc){try{utils[_0x8db7('0x1c')](util[_0x8db7('0x19')](_0x8db7('0x31'),_0x4ee7bc[_0x8db7('0x1f')]),_0x4ee7bc);calls['hangup'](_0x4ee7bc);recordings[_0x8db7('0x30')](_0x4ee7bc);dials[_0x8db7('0x30')](_0x4ee7bc);agents[_0x8db7('0x30')](_0x4ee7bc);queues[_0x8db7('0x30')](_0x4ee7bc);}catch(_0x264a40){utils[_0x8db7('0x15')](util[_0x8db7('0x19')](_0x8db7('0x31'),_0x4ee7bc[_0x8db7('0x1f')]),_0x264a40);}});ami['on'](_0x8db7('0x32'),function(_0x5114cd){try{utils[_0x8db7('0x1c')](util['format'](_0x8db7('0x33'),_0x5114cd[_0x8db7('0x1f')]),_0x5114cd);members[_0x8db7('0x32')](_0x5114cd);}catch(_0x4f151f){utils[_0x8db7('0x15')](util[_0x8db7('0x19')](_0x8db7('0x33'),_0x5114cd[_0x8db7('0x1f')]),_0x4f151f);}});ami['on'](_0x8db7('0x34'),function(_0x1b0fa2){try{utils[_0x8db7('0x1c')](util[_0x8db7('0x19')](_0x8db7('0x35'),_0x1b0fa2[_0x8db7('0x1f')]),_0x1b0fa2);queues['blindtransfer'](_0x1b0fa2);agents[_0x8db7('0x34')](_0x1b0fa2);transfers[_0x8db7('0x34')](_0x1b0fa2);recordings['blindtransfer'](_0x1b0fa2);}catch(_0x14e0c9){utils[_0x8db7('0x15')](util[_0x8db7('0x19')](_0x8db7('0x35'),_0x1b0fa2[_0x8db7('0x1f')]),_0x14e0c9);}});ami['on'](_0x8db7('0x36'),function(_0x209d92){try{utils[_0x8db7('0x1c')](util['format'](_0x8db7('0x37'),_0x209d92[_0x8db7('0x38')]),_0x209d92);queues['attendedtransfer'](_0x209d92);transfers[_0x8db7('0x36')](_0x209d92);agents[_0x8db7('0x36')](_0x209d92);calls[_0x8db7('0x36')](_0x209d92);}catch(_0x2cd153){utils[_0x8db7('0x15')](util[_0x8db7('0x19')](_0x8db7('0x37'),_0x209d92[_0x8db7('0x38')]),_0x2cd153);}});ami['on'](_0x8db7('0x39'),function(_0x2f45b3){try{utils[_0x8db7('0x1c')](util[_0x8db7('0x19')]('[%s][index][varset]',_0x2f45b3[_0x8db7('0x1f')]),_0x2f45b3);queues[_0x8db7('0x39')](_0x2f45b3);recordings['varset'](_0x2f45b3);calls['varset'](_0x2f45b3);dials[_0x8db7('0x39')](_0x2f45b3);}catch(_0x45a0a6){utils['error'](util[_0x8db7('0x19')](_0x8db7('0x3a'),_0x2f45b3[_0x8db7('0x1f')]),_0x45a0a6);}});ami['on'](_0x8db7('0x3b'),function(_0x20a2a2){try{utils[_0x8db7('0x1c')](util[_0x8db7('0x19')](_0x8db7('0x3c'),_0x20a2a2[_0x8db7('0x1f')]),_0x20a2a2);calls[_0x8db7('0x3b')](_0x20a2a2);recordings[_0x8db7('0x3b')](_0x20a2a2);dials[_0x8db7('0x3b')](_0x20a2a2);}catch(_0x5b0741){utils[_0x8db7('0x15')](util['format']('[%s][index][newexten]',_0x20a2a2[_0x8db7('0x1f')]),_0x5b0741);}});ami['on'](_0x8db7('0x3d'),function(_0x56ef2a){try{utils[_0x8db7('0x1c')](util['format']('[%s][index][newchannel]',_0x56ef2a[_0x8db7('0x1f')]),_0x56ef2a);calls[_0x8db7('0x3d')](_0x56ef2a);recordings['newchannel'](_0x56ef2a);}catch(_0x307eb0){utils[_0x8db7('0x15')](util[_0x8db7('0x19')]('[%s][index][newchannel]',_0x56ef2a[_0x8db7('0x1f')]),_0x307eb0);}});ami['on'](_0x8db7('0x3e'),function(_0x1c5954){try{utils[_0x8db7('0x1c')](util[_0x8db7('0x19')](_0x8db7('0x3f'),_0x1c5954[_0x8db7('0x1f')]),_0x1c5954);dials[_0x8db7('0x3e')](_0x1c5954);}catch(_0x264f95){utils[_0x8db7('0x15')](util[_0x8db7('0x19')]('[%s]dialbegin',_0x1c5954[_0x8db7('0x1f')]),_0x264f95);}});ami['on'](_0x8db7('0x40'),function(_0x215257){try{utils['debug'](util[_0x8db7('0x19')](_0x8db7('0x41'),_0x215257[_0x8db7('0x1f')]),_0x215257);dials['dialend'](_0x215257);}catch(_0x18b618){utils[_0x8db7('0x15')](util[_0x8db7('0x19')](_0x8db7('0x41'),_0x215257[_0x8db7('0x1f')]),_0x18b618);}});}
\ No newline at end of file
index 3479e6c..bb0cb91 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x83ed=['internal','request','CreateMemberReport','getUserByName','split','catch','[%s][members][writeDB]','some','devicestatechange','[%s][members][devicestatechange]','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','INUSE','BUSY','voice','now','NOT_INUSE','isNil','exitAt','duration','diffTime','error','agentcomplete','debug','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','assign','cdr','[%s][members][cdr]','channel','source','data3','destination','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','util','./utils','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','data2','membername','type','then','name'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x83ed,0xb7));var _0xd83e=function(_0x2dea24,_0x2fc021){_0x2dea24=_0x2dea24-0x0;var _0x309d58=_0x83ed[_0x2dea24];return _0x309d58;};'use strict';var _=require('lodash');var util=require(_0xd83e('0x0'));var utils=require(_0xd83e('0x1'));var members={};var exclude=['Local/_attended@transfer',_0xd83e('0x2')];function writeDB(_0x3a4575){utils[_0xd83e('0x3')](util[_0xd83e('0x4')](_0xd83e('0x5'),_0x3a4575[_0xd83e('0x6')],_0x3a4575[_0xd83e('0x7')],_0x3a4575['channel'],_0x3a4575[_0xd83e('0x8')],_0x3a4575[_0xd83e('0x9')],_0x3a4575[_0xd83e('0xa')]));if(_0x3a4575[_0xd83e('0x7')]){utils['getUserByInterface'](_0x3a4575[_0xd83e('0x7')])[_0xd83e('0xb')](function(_0x3906fb){if(_0x3906fb){_0x3a4575[_0xd83e('0x9')]=_0x3906fb[_0xd83e('0xc')];_0x3a4575[_0xd83e('0xd')]=_0x3906fb['internal'];utils[_0xd83e('0xe')](_0xd83e('0xf'),_0x3a4575);}else{utils[_0xd83e('0x10')](_0x3a4575[_0xd83e('0x7')][_0xd83e('0x11')]('/')[0x1])['then'](function(_0x29df0a){if(_0x29df0a){_0x3a4575[_0xd83e('0x9')]=_0x29df0a[_0xd83e('0xc')];_0x3a4575['internal']=_0x29df0a['internal'];utils[_0xd83e('0xe')](_0xd83e('0xf'),_0x3a4575);}});}})[_0xd83e('0x12')](function(_0x17ea2f){utils['error'](util[_0xd83e('0x4')](_0xd83e('0x13'),_0x3a4575[_0xd83e('0x6')]),_0x17ea2f);});}delete members[_0x3a4575['interface']];}function startsWith(_0x53367a,_0xd7ff84){return _[_0xd83e('0x14')](_0x53367a,function(_0xc6105b){return _['startsWith'](_0xd7ff84,_0xc6105b);});}exports[_0xd83e('0x15')]=function(_0x53a3aa){try{utils['debug'](util[_0xd83e('0x4')](_0xd83e('0x16'),members[_0x53a3aa[_0xd83e('0x17')]]?members[_0x53a3aa[_0xd83e('0x17')]][_0xd83e('0x6')]:_0x53a3aa['device']),_0x53a3aa);utils[_0xd83e('0x3')](util['format'](_0xd83e('0x18'),members[_0x53a3aa[_0xd83e('0x17')]]?members[_0x53a3aa[_0xd83e('0x17')]][_0xd83e('0x6')]:_0x53a3aa[_0xd83e('0x17')],_0x53a3aa['state'],_0x53a3aa['device']));switch(_0x53a3aa['state']){case _0xd83e('0x19'):case _0xd83e('0x1a'):if(!startsWith(exclude,_0x53a3aa[_0xd83e('0x17')])){members[_0x53a3aa[_0xd83e('0x17')]]={'channel':_0xd83e('0x1b'),'interface':_0x53a3aa[_0xd83e('0x17')],'type':'TALKING','enterAt':utils[_0xd83e('0x1c')](),'role':'agent'};}break;case _0xd83e('0x1d'):if(!_[_0xd83e('0x1e')](members[_0x53a3aa[_0xd83e('0x17')]])){members[_0x53a3aa[_0xd83e('0x17')]][_0xd83e('0x1f')]=utils[_0xd83e('0x1c')]();members[_0x53a3aa[_0xd83e('0x17')]][_0xd83e('0x20')]=utils[_0xd83e('0x21')](members[_0x53a3aa[_0xd83e('0x17')]]['exitAt'],members[_0x53a3aa[_0xd83e('0x17')]]['enterAt']);if(members[_0x53a3aa[_0xd83e('0x17')]][_0xd83e('0x6')]){writeDB(members[_0x53a3aa[_0xd83e('0x17')]]);}}break;default:break;}}catch(_0x49d60c){utils[_0xd83e('0x22')](util[_0xd83e('0x4')](_0xd83e('0x16'),members[_0x53a3aa[_0xd83e('0x17')]]?members[_0x53a3aa[_0xd83e('0x17')]][_0xd83e('0x6')]:_0x53a3aa[_0xd83e('0x17')]),_0x49d60c);}};exports[_0xd83e('0x23')]=function(_0x2a8900){try{if(!_[_0xd83e('0x1e')](members[_0x2a8900[_0xd83e('0x7')]])){utils[_0xd83e('0x24')](util[_0xd83e('0x4')](_0xd83e('0x25'),_0x2a8900['uniqueid']),_0x2a8900);utils[_0xd83e('0x3')](util[_0xd83e('0x4')](_0xd83e('0x26'),_0x2a8900[_0xd83e('0x6')],_0x2a8900[_0xd83e('0x7')],_0x2a8900[_0xd83e('0x27')]));members[_0x2a8900[_0xd83e('0x7')]]=_[_0xd83e('0x28')](members[_0x2a8900[_0xd83e('0x7')]],{'data4':_0x2a8900[_0xd83e('0x27')],'uniqueid':_0x2a8900['uniqueid']});}}catch(_0x2295aa){utils[_0xd83e('0x22')](util[_0xd83e('0x4')]('[%s][members][agentcomplete]',_0x2a8900['uniqueid']),_0x2295aa);}};exports[_0xd83e('0x29')]=function(_0x2b570f){try{utils['debug'](util['format'](_0xd83e('0x2a'),_0x2b570f[_0xd83e('0x6')]),_0x2b570f);if(_0x2b570f[_0xd83e('0x2b')]){var _0xf95b62=_0x2b570f[_0xd83e('0x2b')][_0xd83e('0x11')]('-')[0x0];if(!_['isNil'](members[_0xf95b62])){members[_0xf95b62]=_[_0xd83e('0x28')](members[_0xf95b62],{'data1':members[_0xf95b62]['data1']||_0x2b570f[_0xd83e('0xa')],'data2':members[_0xf95b62][_0xd83e('0x8')]||_0x2b570f[_0xd83e('0x2c')],'data3':members[_0xf95b62][_0xd83e('0x2d')]||_0x2b570f[_0xd83e('0x2e')],'uniqueid':members[_0xf95b62][_0xd83e('0x6')]||_0x2b570f[_0xd83e('0x6')]});utils[_0xd83e('0x3')](util[_0xd83e('0x4')](_0xd83e('0x2f'),_0x2b570f[_0xd83e('0x6')],members[_0xf95b62]['data1'],members[_0xf95b62][_0xd83e('0x8')],members[_0xf95b62]['data3']));if(members[_0xf95b62]['exitAt']){writeDB(members[_0xf95b62]);}}}if(_0x2b570f[_0xd83e('0x30')]){var _0x2f5cc4=_0x2b570f[_0xd83e('0x30')]['split']('-')[0x0];if(!_['isNil'](members[_0x2f5cc4])){members[_0x2f5cc4]=_[_0xd83e('0x28')](members[_0x2f5cc4],{'data1':members[_0x2f5cc4]['data1']||_0x2b570f['type'],'data2':members[_0x2f5cc4]['data2']||_0x2b570f[_0xd83e('0x2c')],'data3':members[_0x2f5cc4][_0xd83e('0x2d')]||_0x2b570f[_0xd83e('0x2e')],'uniqueid':members[_0x2f5cc4][_0xd83e('0x6')]||_0x2b570f[_0xd83e('0x6')]});utils[_0xd83e('0x3')](util[_0xd83e('0x4')](_0xd83e('0x2f'),_0x2b570f[_0xd83e('0x6')],members[_0x2f5cc4]['data1'],members[_0x2f5cc4][_0xd83e('0x8')],members[_0x2f5cc4][_0xd83e('0x2d')]));if(members[_0x2f5cc4][_0xd83e('0x1f')]){writeDB(members[_0x2f5cc4]);}}}}catch(_0x2a681a){utils[_0xd83e('0x22')](util[_0xd83e('0x4')](_0xd83e('0x2a'),_0x2b570f[_0xd83e('0x6')]),_0x2a681a);}};
\ No newline at end of file
+var _0xf9bc=['agentcomplete','[%s][members][agentcomplete]','[%s][members][agentcomplete]\x20interface:%s\x20queue:%s','queue','cdr','[%s][members][cdr]','channel','assign','data1','data2','data3','[%s][members][cdr]\x20type:%s\x20source:%s\x20destination:%s','destinationchannel','split','source','destination','util','./utils','Local/_attended@transfer','Queue:','info','format','[%s][members][writeDB]\x20interface:%s\x20channel:%s\x20data2:%s\x20agent:%s\x20type:%s','uniqueid','interface','membername','type','getUserByInterface','then','name','internal','request','getUserByName','CreateMemberReport','catch','error','[%s][members][writeDB]','startsWith','devicestatechange','debug','device','[%s][members][devicestatechange]\x20state:%s\x20interface:%s','state','INUSE','BUSY','voice','TALKING','now','agent','isNil','exitAt','duration','diffTime','enterAt','[%s][members][devicestatechange]'];(function(_0x502c7d,_0x2f1285){var _0x30b7ed=function(_0x2d92f3){while(--_0x2d92f3){_0x502c7d['push'](_0x502c7d['shift']());}};_0x30b7ed(++_0x2f1285);}(_0xf9bc,0x7e));var _0xcf9b=function(_0x58ec9f,_0x504582){_0x58ec9f=_0x58ec9f-0x0;var _0x2b9b99=_0xf9bc[_0x58ec9f];return _0x2b9b99;};'use strict';var _=require('lodash');var util=require(_0xcf9b('0x0'));var utils=require(_0xcf9b('0x1'));var members={};var exclude=[_0xcf9b('0x2'),_0xcf9b('0x3')];function writeDB(_0x2c385a){utils[_0xcf9b('0x4')](util[_0xcf9b('0x5')](_0xcf9b('0x6'),_0x2c385a[_0xcf9b('0x7')],_0x2c385a[_0xcf9b('0x8')],_0x2c385a['channel'],_0x2c385a['data2'],_0x2c385a[_0xcf9b('0x9')],_0x2c385a[_0xcf9b('0xa')]));if(_0x2c385a[_0xcf9b('0x8')]){utils[_0xcf9b('0xb')](_0x2c385a[_0xcf9b('0x8')])[_0xcf9b('0xc')](function(_0x182df7){if(_0x182df7){_0x2c385a[_0xcf9b('0x9')]=_0x182df7[_0xcf9b('0xd')];_0x2c385a['internal']=_0x182df7[_0xcf9b('0xe')];utils[_0xcf9b('0xf')]('CreateMemberReport',_0x2c385a);}else{utils[_0xcf9b('0x10')](_0x2c385a['interface']['split']('/')[0x1])['then'](function(_0x1c6b7c){if(_0x1c6b7c){_0x2c385a['membername']=_0x1c6b7c[_0xcf9b('0xd')];_0x2c385a[_0xcf9b('0xe')]=_0x1c6b7c['internal'];utils[_0xcf9b('0xf')](_0xcf9b('0x11'),_0x2c385a);}});}})[_0xcf9b('0x12')](function(_0x24e525){utils[_0xcf9b('0x13')](util['format'](_0xcf9b('0x14'),_0x2c385a[_0xcf9b('0x7')]),_0x24e525);});}delete members[_0x2c385a[_0xcf9b('0x8')]];}function startsWith(_0x1ee95f,_0x49d7f8){return _['some'](_0x1ee95f,function(_0x1cb45f){return _[_0xcf9b('0x15')](_0x49d7f8,_0x1cb45f);});}exports[_0xcf9b('0x16')]=function(_0x3276a8){try{utils[_0xcf9b('0x17')](util[_0xcf9b('0x5')]('[%s][members][devicestatechange]',members[_0x3276a8[_0xcf9b('0x18')]]?members[_0x3276a8[_0xcf9b('0x18')]][_0xcf9b('0x7')]:_0x3276a8[_0xcf9b('0x18')]),_0x3276a8);utils['info'](util[_0xcf9b('0x5')](_0xcf9b('0x19'),members[_0x3276a8['device']]?members[_0x3276a8[_0xcf9b('0x18')]]['uniqueid']:_0x3276a8[_0xcf9b('0x18')],_0x3276a8[_0xcf9b('0x1a')],_0x3276a8[_0xcf9b('0x18')]));switch(_0x3276a8[_0xcf9b('0x1a')]){case _0xcf9b('0x1b'):case _0xcf9b('0x1c'):if(!startsWith(exclude,_0x3276a8[_0xcf9b('0x18')])){members[_0x3276a8[_0xcf9b('0x18')]]={'channel':_0xcf9b('0x1d'),'interface':_0x3276a8[_0xcf9b('0x18')],'type':_0xcf9b('0x1e'),'enterAt':utils[_0xcf9b('0x1f')](),'role':_0xcf9b('0x20')};}break;case'NOT_INUSE':if(!_[_0xcf9b('0x21')](members[_0x3276a8[_0xcf9b('0x18')]])){members[_0x3276a8[_0xcf9b('0x18')]][_0xcf9b('0x22')]=utils[_0xcf9b('0x1f')]();members[_0x3276a8['device']][_0xcf9b('0x23')]=utils[_0xcf9b('0x24')](members[_0x3276a8[_0xcf9b('0x18')]]['exitAt'],members[_0x3276a8[_0xcf9b('0x18')]][_0xcf9b('0x25')]);if(members[_0x3276a8[_0xcf9b('0x18')]]['uniqueid']){writeDB(members[_0x3276a8[_0xcf9b('0x18')]]);}}break;default:break;}}catch(_0x3dd36b){utils[_0xcf9b('0x13')](util['format'](_0xcf9b('0x26'),members[_0x3276a8['device']]?members[_0x3276a8[_0xcf9b('0x18')]][_0xcf9b('0x7')]:_0x3276a8[_0xcf9b('0x18')]),_0x3dd36b);}};exports[_0xcf9b('0x27')]=function(_0x30c6dc){try{if(!_[_0xcf9b('0x21')](members[_0x30c6dc['interface']])){utils[_0xcf9b('0x17')](util[_0xcf9b('0x5')](_0xcf9b('0x28'),_0x30c6dc[_0xcf9b('0x7')]),_0x30c6dc);utils[_0xcf9b('0x4')](util[_0xcf9b('0x5')](_0xcf9b('0x29'),_0x30c6dc[_0xcf9b('0x7')],_0x30c6dc[_0xcf9b('0x8')],_0x30c6dc['queue']));members[_0x30c6dc[_0xcf9b('0x8')]]=_['assign'](members[_0x30c6dc[_0xcf9b('0x8')]],{'data4':_0x30c6dc[_0xcf9b('0x2a')],'uniqueid':_0x30c6dc['uniqueid']});}}catch(_0x2b8c46){utils[_0xcf9b('0x13')](util[_0xcf9b('0x5')](_0xcf9b('0x28'),_0x30c6dc[_0xcf9b('0x7')]),_0x2b8c46);}};exports[_0xcf9b('0x2b')]=function(_0x34a485){try{utils['debug'](util[_0xcf9b('0x5')](_0xcf9b('0x2c'),_0x34a485[_0xcf9b('0x7')]),_0x34a485);if(_0x34a485[_0xcf9b('0x2d')]){var _0x5e7722=_0x34a485[_0xcf9b('0x2d')]['split']('-')[0x0];if(!_[_0xcf9b('0x21')](members[_0x5e7722])){members[_0x5e7722]=_[_0xcf9b('0x2e')](members[_0x5e7722],{'data1':members[_0x5e7722][_0xcf9b('0x2f')]||_0x34a485['type'],'data2':members[_0x5e7722][_0xcf9b('0x30')]||_0x34a485['source'],'data3':members[_0x5e7722][_0xcf9b('0x31')]||_0x34a485['destination'],'uniqueid':members[_0x5e7722][_0xcf9b('0x7')]||_0x34a485[_0xcf9b('0x7')]});utils[_0xcf9b('0x4')](util[_0xcf9b('0x5')](_0xcf9b('0x32'),_0x34a485[_0xcf9b('0x7')],members[_0x5e7722][_0xcf9b('0x2f')],members[_0x5e7722][_0xcf9b('0x30')],members[_0x5e7722][_0xcf9b('0x31')]));if(members[_0x5e7722][_0xcf9b('0x22')]){writeDB(members[_0x5e7722]);}}}if(_0x34a485[_0xcf9b('0x33')]){var _0x303aa6=_0x34a485['destinationchannel'][_0xcf9b('0x34')]('-')[0x0];if(!_[_0xcf9b('0x21')](members[_0x303aa6])){members[_0x303aa6]=_[_0xcf9b('0x2e')](members[_0x303aa6],{'data1':members[_0x303aa6][_0xcf9b('0x2f')]||_0x34a485['type'],'data2':members[_0x303aa6][_0xcf9b('0x30')]||_0x34a485[_0xcf9b('0x35')],'data3':members[_0x303aa6][_0xcf9b('0x31')]||_0x34a485[_0xcf9b('0x36')],'uniqueid':members[_0x303aa6][_0xcf9b('0x7')]||_0x34a485['uniqueid']});utils[_0xcf9b('0x4')](util[_0xcf9b('0x5')](_0xcf9b('0x32'),_0x34a485['uniqueid'],members[_0x303aa6][_0xcf9b('0x2f')],members[_0x303aa6][_0xcf9b('0x30')],members[_0x303aa6]['data3']));if(members[_0x303aa6]['exitAt']){writeDB(members[_0x303aa6]);}}}}catch(_0x49d21a){utils[_0xcf9b('0x13')](util[_0xcf9b('0x5')](_0xcf9b('0x2c'),_0x34a485['uniqueid']),_0x49d21a);}};
\ No newline at end of file
index 64eae54..abb6e0e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x352f=['blindtransfer','transfereeuniqueid','transfertype','BLIND','transferuniqueid','BLINDTRANSFER','[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER','extension','origtransfereruniqueid','secondtransfererlinkedid','origtransfererexten','ATTENDED','transferexten','ATTENDEDTRANSFER','origtransfererlinkedid','transfereelinkedid','queuecallerenterreason','clone','calleridname','holdtime','[%s][queues][attendedtransfer]\x20name:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s','secondtransfereruniqueid','secondtransfererexten','transfertargetlinkedid','transfertargetuniqueid','[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s','[%s][queues][attendedtransfer]','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','[%s][queues][musiconholdstop]','mohtime','util','./utils','format','uniqueid','queue','lastAssignedTo','calleridnum','accountcode','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','transfereduniqueid','queuecallerjoin','debug','[%s][queues][queuecallerjoin]','info','[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s','position','assign','now','error','isNil','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercomplete','queuecallercompleteAt','queuecallerexitreason','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','name','[%s][queues][varset]','variable','queuestatus','value','CONTINUE','queuecallerabandonAt','queuecallerexitAt','toUpperCase','[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s','queueposition','[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','[%s][queues][queuecallerleave]','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinename','queuecallerleave','diffTime','queuecallerjoinAt','count','connectedlinenum','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','agentcomplete','[%s][queues][agentcomplete]','assigned','reason','transfer','TRANSFER','COMPLETEDBY'];(function(_0x411add,_0x1aed38){var _0x238242=function(_0x4a1cd5){while(--_0x4a1cd5){_0x411add['push'](_0x411add['shift']());}};_0x238242(++_0x1aed38);}(_0x352f,0x1ba));var _0xf352=function(_0x17d9e3,_0x1f969c){_0x17d9e3=_0x17d9e3-0x0;var _0x14192d=_0x352f[_0x17d9e3];return _0x14192d;};'use strict';var _=require('lodash');var util=require(_0xf352('0x0'));var utils=require(_0xf352('0x1'));var queues={};function writeDB(_0x3582bd){utils['info'](util[_0xf352('0x2')]('[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s',_0x3582bd[_0xf352('0x3')],_0x3582bd['channel'],_0x3582bd[_0xf352('0x4')],_0x3582bd[_0xf352('0x5')],_0x3582bd[_0xf352('0x6')],_0x3582bd[_0xf352('0x7')],_0x3582bd['queuecallerexitreason']));if(_0x3582bd[_0xf352('0x4')]){utils[_0xf352('0x8')](_0x3582bd[_0xf352('0x4')])[_0xf352('0x9')](function(_0x1d4367){if(_0x1d4367){_0x3582bd[_0xf352('0xa')]=_0x1d4367['type'];}utils[_0xf352('0xb')](_0xf352('0xc'),_0x3582bd);});}else{utils[_0xf352('0xb')](_0xf352('0xc'),_0x3582bd);}if(_0x3582bd[_0xf352('0xd')]){delete queues[_0x3582bd[_0xf352('0xd')]];}else{delete queues[_0x3582bd[_0xf352('0x3')]];}}exports[_0xf352('0xe')]=function(_0x3dc0c1){try{utils[_0xf352('0xf')](util['format'](_0xf352('0x10'),_0x3dc0c1[_0xf352('0x3')]),_0x3dc0c1);utils[_0xf352('0x11')](util[_0xf352('0x2')](_0xf352('0x12'),_0x3dc0c1[_0xf352('0x3')],_0x3dc0c1['queue'],_0x3dc0c1[_0xf352('0x13')]));queues[_0x3dc0c1[_0xf352('0x3')]]=_[_0xf352('0x14')](_0x3dc0c1,{'originalposition':_0x3dc0c1[_0xf352('0x13')],'queuecallerjoinAt':utils[_0xf352('0x15')](),'mohtime':0x0});}catch(_0x8d16b9){utils[_0xf352('0x16')](util[_0xf352('0x2')]('[%s][queues][queuecallerjoin]',_0x3dc0c1['uniqueid']),_0x8d16b9);}};exports['hangup']=function(_0x2411d4){try{if(!_[_0xf352('0x17')](queues[_0x2411d4[_0xf352('0x3')]])){utils['debug'](util[_0xf352('0x2')](_0xf352('0x18'),_0x2411d4[_0xf352('0x3')]),_0x2411d4);if(queues[_0x2411d4[_0xf352('0x3')]][_0xf352('0x19')]){if(!queues[_0x2411d4[_0xf352('0x3')]][_0xf352('0x1a')]&&!queues[_0x2411d4[_0xf352('0x3')]][_0xf352('0x1b')]){queues[_0x2411d4[_0xf352('0x3')]][_0xf352('0x1c')]=!![];queues[_0x2411d4[_0xf352('0x3')]][_0xf352('0x1d')]=utils[_0xf352('0x15')]();queues[_0x2411d4['uniqueid']][_0xf352('0x1e')]=_0xf352('0x1f');}utils[_0xf352('0x11')](util['format']('[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s',_0x2411d4[_0xf352('0x3')],queues[_0x2411d4['uniqueid']]['name'],queues[_0x2411d4[_0xf352('0x3')]]['queuecallerexitreason']));writeDB(queues[_0x2411d4[_0xf352('0x3')]]);}else if(queues[_0x2411d4['uniqueid']][_0xf352('0xd')]){utils[_0xf352('0x11')](util['format'](_0xf352('0x20'),_0x2411d4[_0xf352('0x3')],queues[_0x2411d4[_0xf352('0x3')]][_0xf352('0x21')],queues[_0x2411d4[_0xf352('0x3')]][_0xf352('0xd')]));queues[queues[_0x2411d4[_0xf352('0x3')]][_0xf352('0xd')]]=queues[_0x2411d4[_0xf352('0x3')]];queues[queues[_0x2411d4[_0xf352('0x3')]]['transfereduniqueid']]['queuecallerenterreason']=0x2;delete queues[_0x2411d4[_0xf352('0x3')]];}}}catch(_0x19bd21){utils[_0xf352('0x16')](util[_0xf352('0x2')](_0xf352('0x18'),_0x2411d4[_0xf352('0x3')]),_0x19bd21);}};exports['varset']=function(_0x5604b9){try{utils['debug'](util[_0xf352('0x2')](_0xf352('0x22'),_0x5604b9[_0xf352('0x3')]),_0x5604b9);if(!_[_0xf352('0x17')](_0x5604b9[_0xf352('0x23')][_0xf352('0x24')])&&_0x5604b9[_0xf352('0x25')]['toUpperCase']()!==_0xf352('0x26')){if(!_[_0xf352('0x17')](queues[_0x5604b9['uniqueid']])){queues[_0x5604b9['uniqueid']][_0xf352('0x1a')]=![];queues[_0x5604b9['uniqueid']][_0xf352('0x27')]=null;queues[_0x5604b9[_0xf352('0x3')]][_0xf352('0x1b')]=!![];queues[_0x5604b9[_0xf352('0x3')]][_0xf352('0x28')]=utils[_0xf352('0x15')]();queues[_0x5604b9[_0xf352('0x3')]][_0xf352('0x1e')]=_0x5604b9[_0xf352('0x25')][_0xf352('0x29')]();utils[_0xf352('0x11')](util['format'](_0xf352('0x2a'),_0x5604b9[_0xf352('0x3')],queues[_0x5604b9[_0xf352('0x3')]]['name'],_0x5604b9['value'],queues[_0x5604b9['uniqueid']][_0xf352('0x1e')]));writeDB(queues[_0x5604b9['uniqueid']]);}}else if(!_[_0xf352('0x17')](_0x5604b9['variable'][_0xf352('0x2b')])){if(!_[_0xf352('0x17')](queues[_0x5604b9[_0xf352('0x3')]])&&!queues[_0x5604b9[_0xf352('0x3')]][_0xf352('0x1a')]){queues[_0x5604b9[_0xf352('0x3')]]['queuecallerabandon']=![];queues[_0x5604b9['uniqueid']][_0xf352('0x27')]=null;queues[_0x5604b9['uniqueid']][_0xf352('0x1b')]=!![];queues[_0x5604b9[_0xf352('0x3')]][_0xf352('0x28')]=utils[_0xf352('0x15')]();queues[_0x5604b9['uniqueid']][_0xf352('0x1e')]='EXITWITHKEY';utils[_0xf352('0x11')](util[_0xf352('0x2')](_0xf352('0x2c'),_0x5604b9[_0xf352('0x3')],queues[_0x5604b9['uniqueid']][_0xf352('0x21')],_0x5604b9[_0xf352('0x25')],queues[_0x5604b9[_0xf352('0x3')]][_0xf352('0x1e')]));}}}catch(_0x50e3f0){utils[_0xf352('0x16')](util[_0xf352('0x2')](_0xf352('0x22'),_0x5604b9['uniqueid']),_0x50e3f0);}};exports['queuecallerabandon']=function(_0x1a57b9){try{if(!_['isNil'](queues[_0x1a57b9[_0xf352('0x3')]])){utils[_0xf352('0xf')](util[_0xf352('0x2')](_0xf352('0x2d'),_0x1a57b9['uniqueid']),_0x1a57b9);queues[_0x1a57b9[_0xf352('0x3')]][_0xf352('0x1b')]=![];queues[_0x1a57b9[_0xf352('0x3')]][_0xf352('0x28')]=null;queues[_0x1a57b9['uniqueid']]['queuecallerabandon']=!![];queues[_0x1a57b9['uniqueid']][_0xf352('0x27')]=utils['now']();queues[_0x1a57b9[_0xf352('0x3')]]['queuecallerexitreason']=_0xf352('0x2e');utils[_0xf352('0x11')](util[_0xf352('0x2')](_0xf352('0x2f'),_0x1a57b9[_0xf352('0x3')],queues[_0x1a57b9[_0xf352('0x3')]][_0xf352('0x21')],queues[_0x1a57b9[_0xf352('0x3')]][_0xf352('0x1e')]));}}catch(_0x4c0a26){utils[_0xf352('0x16')](util['format'](_0xf352('0x2d'),_0x1a57b9['uniqueid']),_0x4c0a26);}};exports['queuecallerleave']=function(_0x126b57){try{if(!_[_0xf352('0x17')](queues[_0x126b57[_0xf352('0x3')]])){utils[_0xf352('0xf')](util[_0xf352('0x2')](_0xf352('0x30'),_0x126b57['uniqueid']),_0x126b57);utils[_0xf352('0x11')](util[_0xf352('0x2')](_0xf352('0x31'),_0x126b57[_0xf352('0x3')],queues[_0x126b57['uniqueid']][_0xf352('0x21')],_0x126b57['connectedlinenum'],_0x126b57[_0xf352('0x32')]));queues[_0x126b57[_0xf352('0x3')]][_0xf352('0x33')]=!![];queues[_0x126b57[_0xf352('0x3')]]['queuecallerleaveAt']=utils[_0xf352('0x15')]();queues[_0x126b57[_0xf352('0x3')]]['holdtime']=utils[_0xf352('0x34')](queues[_0x126b57[_0xf352('0x3')]][_0xf352('0x19')],queues[_0x126b57[_0xf352('0x3')]][_0xf352('0x35')]);queues[_0x126b57['uniqueid']][_0xf352('0x13')]=_0x126b57[_0xf352('0x13')];queues[_0x126b57[_0xf352('0x3')]][_0xf352('0x36')]=_0x126b57[_0xf352('0x36')];queues[_0x126b57[_0xf352('0x3')]]['connectedlinenum']=_0x126b57[_0xf352('0x37')];queues[_0x126b57[_0xf352('0x3')]]['connectedlinename']=_0x126b57[_0xf352('0x32')];}}catch(_0x404252){utils['error'](util[_0xf352('0x2')]('[%s][queues][queuecallerleave]',_0x126b57[_0xf352('0x3')]),_0x404252);}};exports[_0xf352('0x38')]=function(_0x116d3c){try{if(!_['isNil'](queues[_0x116d3c[_0xf352('0x3')]])){utils[_0xf352('0xf')](util[_0xf352('0x2')](_0xf352('0x39'),_0x116d3c[_0xf352('0x3')]),_0x116d3c);utils['info'](util[_0xf352('0x2')](_0xf352('0x3a'),_0x116d3c[_0xf352('0x3')],queues[_0x116d3c[_0xf352('0x3')]][_0xf352('0x21')],_0x116d3c[_0xf352('0x3b')],_0x116d3c[_0xf352('0x3c')]));queues[_0x116d3c['uniqueid']][_0xf352('0x1a')]=![];queues[_0x116d3c[_0xf352('0x3')]][_0xf352('0x1a')]=![];queues[_0x116d3c[_0xf352('0x3')]][_0xf352('0x27')]=null;queues[_0x116d3c[_0xf352('0x3')]][_0xf352('0x1b')]=![];queues[_0x116d3c[_0xf352('0x3')]][_0xf352('0x1e')]=null;queues[_0x116d3c['uniqueid']][_0xf352('0x28')]=null;queues[_0x116d3c[_0xf352('0x3')]]['assigned']=!![];queues[_0x116d3c[_0xf352('0x3')]][_0xf352('0x7')]=_0x116d3c['destaccountcode'];queues[_0x116d3c['uniqueid']][_0xf352('0x5')]=_0x116d3c[_0xf352('0x3b')];}}catch(_0x55e46d){utils[_0xf352('0x16')](util['format'](_0xf352('0x39'),_0x116d3c[_0xf352('0x3')]),_0x55e46d);}};exports[_0xf352('0x3d')]=function(_0x4e41d8){try{if(!_[_0xf352('0x17')](queues[_0x4e41d8[_0xf352('0x3')]])){if(queues[_0x4e41d8[_0xf352('0x3')]][_0xf352('0x19')]){utils[_0xf352('0xf')](util[_0xf352('0x2')](_0xf352('0x3e'),_0x4e41d8[_0xf352('0x3')]),_0x4e41d8);queues[_0x4e41d8[_0xf352('0x3')]][_0xf352('0x1a')]=![];queues[_0x4e41d8[_0xf352('0x3')]][_0xf352('0x1a')]=![];queues[_0x4e41d8['uniqueid']][_0xf352('0x27')]=null;queues[_0x4e41d8[_0xf352('0x3')]][_0xf352('0x1b')]=![];queues[_0x4e41d8[_0xf352('0x3')]][_0xf352('0x28')]=null;queues[_0x4e41d8[_0xf352('0x3')]][_0xf352('0x3f')]=!![];queues[_0x4e41d8[_0xf352('0x3')]][_0xf352('0x5')]=_0x4e41d8[_0xf352('0x3b')];queues[_0x4e41d8[_0xf352('0x3')]][_0xf352('0x1c')]=!![];queues[_0x4e41d8[_0xf352('0x3')]]['queuecallercompleteAt']=utils[_0xf352('0x15')]();if(_0x4e41d8[_0xf352('0x40')]==_0xf352('0x41')){if(!queues[_0x4e41d8[_0xf352('0x3')]][_0xf352('0x41')]){queues[_0x4e41d8[_0xf352('0x3')]][_0xf352('0x1e')]=_0xf352('0x42');}}else{queues[_0x4e41d8[_0xf352('0x3')]][_0xf352('0x1e')]=_0xf352('0x43')+_0x4e41d8[_0xf352('0x40')]['toUpperCase']();}utils[_0xf352('0x11')](util[_0xf352('0x2')]('[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s',_0x4e41d8[_0xf352('0x3')],queues[_0x4e41d8[_0xf352('0x3')]][_0xf352('0x21')],_0x4e41d8[_0xf352('0x3b')],queues[_0x4e41d8[_0xf352('0x3')]][_0xf352('0x1e')]));writeDB(queues[_0x4e41d8['uniqueid']]);}}}catch(_0x3617a7){utils[_0xf352('0x16')](util['format']('[%s][queues][agentcomplete]',_0x4e41d8[_0xf352('0x3')]),_0x3617a7);}};exports[_0xf352('0x44')]=function(_0x4e937a){try{if(!_['isNil'](queues[_0x4e937a['transfereeuniqueid']])){utils['debug'](util['format']('[%s][queues][blindtransfer]',_0x4e937a[_0xf352('0x3')]),_0x4e937a);queues[_0x4e937a['transfereeuniqueid']][_0xf352('0x41')]=!![];queues[_0x4e937a[_0xf352('0x45')]][_0xf352('0x46')]=_0xf352('0x47');queues[_0x4e937a[_0xf352('0x45')]]['transferexten']=_0x4e937a['extension'];queues[_0x4e937a['transfereeuniqueid']][_0xf352('0x48')]=_0x4e937a[_0xf352('0x45')];queues[_0x4e937a[_0xf352('0x45')]][_0xf352('0x1e')]=_0xf352('0x49');utils[_0xf352('0x11')](util['format'](_0xf352('0x4a'),_0x4e937a['uniqueid'],queues[_0x4e937a[_0xf352('0x45')]][_0xf352('0x21')],_0x4e937a['transfereeuniqueid'],_0x4e937a[_0xf352('0x4b')]));}}catch(_0xf5ba8b){utils[_0xf352('0x16')](util[_0xf352('0x2')]('[%s][queues][blindtransfer]',_0x4e937a[_0xf352('0x3')]),_0xf5ba8b);}};exports['attendedtransfer']=function(_0xa98943){try{utils['debug'](util[_0xf352('0x2')]('[%s][queues][attendedtransfer]',_0xa98943[_0xf352('0x4c')]),_0xa98943);if(_0xa98943[_0xf352('0x4c')]==_0xa98943['origtransfererlinkedid']){if(!_[_0xf352('0x17')](queues[_0xa98943[_0xf352('0x4d')]])){utils[_0xf352('0x11')](util[_0xf352('0x2')]('[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0xa98943[_0xf352('0x4c')],queues[_0xa98943[_0xf352('0x4d')]]['name'],_0xa98943[_0xf352('0x4e')]));queues[_0xa98943['secondtransfererlinkedid']]['transfer']=!![];queues[_0xa98943['secondtransfererlinkedid']][_0xf352('0x46')]=_0xf352('0x4f');queues[_0xa98943['secondtransfererlinkedid']][_0xf352('0x50')]=_0xa98943[_0xf352('0x4e')];queues[_0xa98943[_0xf352('0x4d')]]['transferuniqueid']=_0xa98943[_0xf352('0x4c')];queues[_0xa98943[_0xf352('0x4d')]][_0xf352('0x1e')]=_0xf352('0x51');}if(!_[_0xf352('0x17')](queues[_0xa98943[_0xf352('0x52')]])){if(_0xa98943['transfereelinkedid']&&queues[_0xa98943[_0xf352('0x53')]]){queues[_0xa98943['transfereelinkedid']][_0xf352('0x54')]=0x1;queues[_0xa98943[_0xf352('0x45')]]=_[_0xf352('0x55')](queues[_0xa98943[_0xf352('0x53')]]);queues[_0xa98943[_0xf352('0x45')]]['transfereduniqueid']=_0xa98943['transfertargetuniqueid'];queues[_0xa98943[_0xf352('0x45')]][_0xf352('0x54')]=0x2;queues[_0xa98943[_0xf352('0x45')]]['calleridnum']=queues[_0xa98943[_0xf352('0x4d')]]['calleridnum'];queues[_0xa98943[_0xf352('0x45')]][_0xf352('0x56')]=queues[_0xa98943[_0xf352('0x4d')]][_0xf352('0x56')];queues[_0xa98943[_0xf352('0x45')]]['queuecallerjoinAt']=utils[_0xf352('0x15')]();queues[_0xa98943[_0xf352('0x45')]][_0xf352('0x19')]=utils[_0xf352('0x15')]();queues[_0xa98943['transfereeuniqueid']][_0xf352('0x57')]=0x0;queues[_0xa98943[_0xf352('0x45')]]['mohtime']=0x0;utils['info'](util[_0xf352('0x2')](_0xf352('0x58'),_0xa98943[_0xf352('0x4c')],queues[_0xa98943[_0xf352('0x45')]][_0xf352('0x21')],queues[_0xa98943[_0xf352('0x45')]][_0xf352('0x6')],queues[_0xa98943['transfereeuniqueid']][_0xf352('0x56')]));}else{utils[_0xf352('0x11')](util[_0xf352('0x2')](_0xf352('0x59'),_0xa98943[_0xf352('0x4c')],queues[_0xa98943[_0xf352('0x52')]][_0xf352('0x21')],_0xa98943[_0xf352('0x4d')]));queues[_0xa98943[_0xf352('0x52')]][_0xf352('0xd')]=_0xa98943[_0xf352('0x4d')];}}}else if(_0xa98943['secondtransfereruniqueid']==_0xa98943[_0xf352('0x4d')]){if(!_[_0xf352('0x17')](queues[_0xa98943[_0xf352('0x52')]])){utils[_0xf352('0x11')](util['format']('[%s][queues][attendedtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER',_0xa98943['origtransfereruniqueid'],queues[_0xa98943[_0xf352('0x52')]]['name'],_0xa98943[_0xf352('0x5a')],_0xa98943[_0xf352('0x5b')]));queues[_0xa98943[_0xf352('0x52')]][_0xf352('0x41')]=!![];queues[_0xa98943['origtransfererlinkedid']][_0xf352('0x46')]=_0xf352('0x4f');queues[_0xa98943['origtransfererlinkedid']]['transferexten']=_0xa98943[_0xf352('0x5b')];queues[_0xa98943[_0xf352('0x52')]]['transferuniqueid']=_0xa98943[_0xf352('0x5a')];queues[_0xa98943[_0xf352('0x52')]]['queuecallerexitreason']=_0xf352('0x51');}if(!_['isNil'](queues[_0xa98943[_0xf352('0x4d')]])){if(_0xa98943[_0xf352('0x5c')]&&queues[_0xa98943[_0xf352('0x5c')]]){queues[_0xa98943[_0xf352('0x5c')]][_0xf352('0x54')]=0x1;queues[_0xa98943[_0xf352('0x5d')]]=_['clone'](queues[_0xa98943[_0xf352('0x5c')]]);queues[_0xa98943[_0xf352('0x5d')]][_0xf352('0xd')]=_0xa98943[_0xf352('0x5d')];queues[_0xa98943['transfertargetuniqueid']][_0xf352('0x54')]=0x2;queues[_0xa98943[_0xf352('0x5d')]][_0xf352('0x6')]=queues[_0xa98943[_0xf352('0x52')]][_0xf352('0x6')];queues[_0xa98943['transfertargetuniqueid']][_0xf352('0x56')]=queues[_0xa98943['origtransfererlinkedid']][_0xf352('0x56')];queues[_0xa98943[_0xf352('0x5d')]][_0xf352('0x35')]=utils['now']();queues[_0xa98943['transfertargetuniqueid']][_0xf352('0x19')]=utils[_0xf352('0x15')]();queues[_0xa98943[_0xf352('0x5d')]][_0xf352('0x57')]=0x0;queues[_0xa98943[_0xf352('0x5d')]]['mohtime']=0x0;utils[_0xf352('0x11')](util['format'](_0xf352('0x5e'),_0xa98943[_0xf352('0x4c')],queues[_0xa98943['transfertargetuniqueid']][_0xf352('0x21')],queues[_0xa98943['transfertargetuniqueid']]['transfereduniqueid'],queues[_0xa98943['transfertargetuniqueid']]['calleridnum'],queues[_0xa98943['transfertargetuniqueid']]['calleridname']));}else{utils[_0xf352('0x11')](util[_0xf352('0x2')](_0xf352('0x59'),_0xa98943[_0xf352('0x4c')],queues[_0xa98943[_0xf352('0x4d')]]['name'],_0xa98943[_0xf352('0x52')]));queues[_0xa98943[_0xf352('0x4d')]][_0xf352('0xd')]=_0xa98943['origtransfererlinkedid'];}}}}catch(_0x42b2b5){utils[_0xf352('0x16')](util[_0xf352('0x2')](_0xf352('0x5f'),_0xa98943[_0xf352('0x4c')]),_0x42b2b5);}};exports['musiconholdstart']=function(_0x2adcd0){try{if(!_[_0xf352('0x17')](queues[_0x2adcd0['uniqueid']])){utils[_0xf352('0xf')](util[_0xf352('0x2')](_0xf352('0x60'),_0x2adcd0[_0xf352('0x3')]),_0x2adcd0);queues[_0x2adcd0[_0xf352('0x3')]][_0xf352('0x61')]=utils['now']();utils[_0xf352('0x11')](util[_0xf352('0x2')](_0xf352('0x62'),_0x2adcd0[_0xf352('0x3')],queues[_0x2adcd0['uniqueid']][_0xf352('0x21')],queues[_0x2adcd0[_0xf352('0x3')]][_0xf352('0x61')]));}}catch(_0x43cf4b){utils[_0xf352('0x16')](util[_0xf352('0x2')](_0xf352('0x60'),_0x2adcd0[_0xf352('0x3')]),_0x43cf4b);}};exports[_0xf352('0x63')]=function(_0x323f87){try{if(!_['isNil'](queues[_0x323f87[_0xf352('0x3')]])){if(!_['isNil'](queues[_0x323f87[_0xf352('0x3')]]['musiconholdstartAt'])){utils['debug'](util[_0xf352('0x2')](_0xf352('0x64'),_0x323f87[_0xf352('0x3')]),_0x323f87);queues[_0x323f87[_0xf352('0x3')]][_0xf352('0x65')]+=utils[_0xf352('0x34')](utils[_0xf352('0x15')](),queues[_0x323f87[_0xf352('0x3')]][_0xf352('0x61')]);utils[_0xf352('0x11')](util[_0xf352('0x2')]('[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s',_0x323f87[_0xf352('0x3')],queues[_0x323f87[_0xf352('0x3')]][_0xf352('0x21')],queues[_0x323f87[_0xf352('0x3')]]['mohtime']));delete queues[_0x323f87[_0xf352('0x3')]][_0xf352('0x61')];}}}catch(_0x418326){utils['error'](util[_0xf352('0x2')](_0xf352('0x64'),_0x323f87['uniqueid']),_0x418326);}};
\ No newline at end of file
+var _0x8937=['[%s][queues][attendedtransfer]\x20name:%s\x20transferexten:%s\x20queuecallerexitreason:ATTENDEDTRANSFER','origtransfererexten','ATTENDED','transfereelinkedid','clone','transfertargetuniqueid','calleridname','queuecallerjoinAt','[%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','transferuniqueid','transfertargetlinkedid','queuecallerenterreason','mohtime','[%s][queues][musiconholdstart]','musiconholdstartAt','[%s][queues][musiconholdstop]\x20name:%s\x20musiconholdstartAt:%s','musiconholdstop','[%s][queues][musiconholdstop]\x20name:%s\x20mohtime:%s','[%s][queues][musiconholdstop]','lodash','util','./utils','format','[%s][queues][writeDB]\x20channel:%s\x20queue:%s\x20lastAssignedTo:%s\x20calleridnum:%s\x20accountcode:%s\x20queuecallerexitreason:%s','channel','calleridnum','accountcode','queue','getVoiceQueueByName','then','type','request','CreateVoiceQueueReport','queuecallerjoin','[%s][queues][queuecallerjoin]','info','uniqueid','assign','now','error','isNil','[%s][queues][hangup]','queuecallerleaveAt','queuecallerabandon','queuecallerexit','queuecallercompleteAt','COMPLETEDBYAGENT','[%s][queues][hangup]\x20name:%s\x20queuecallerexitreason:%s','queuecallerexitreason','transfereduniqueid','[%s][queues][hangup]\x20name:%s\x20transfereduniqueid:%s','name','varset','debug','[%s][queues][varset]','variable','queuestatus','value','CONTINUE','queuecallerabandonAt','queuecallerexitAt','EXITWITHKEY','[%s][queues][queuecallerabandon]','ABANDONED','[%s][queues][queuecallerabandon]\x20name:%s\x20queuecallerexitreason:%s','queuecallerleave','[%s][queues][queuecallerleave]\x20name:%s\x20connectedlinenum:%s\x20connectedlinename:%s','connectedlinenum','connectedlinename','holdtime','diffTime','position','agentconnect','[%s][queues][agentconnect]','[%s][queues][agentconnect]\x20name:%s\x20agent:%s\x20accountcode:%s','membername','destaccountcode','assigned','lastAssignedTo','[%s][queues][agentcomplete]','reason','transfer','TRANSFER','COMPLETEDBY','[%s][queues][agentcomplete]\x20name:%s\x20agent:%s\x20queuecallerexitreason:%s','blindtransfer','transfereeuniqueid','[%s][queues][blindtransfer]','transfertype','BLIND','transferexten','BLINDTRANSFER','extension','attendedtransfer','[%s][queues][attendedtransfer]','origtransfereruniqueid','origtransfererlinkedid','secondtransfererlinkedid'];(function(_0x2cfc7f,_0x4f0d1b){var _0x21e2fc=function(_0x2cf09b){while(--_0x2cf09b){_0x2cfc7f['push'](_0x2cfc7f['shift']());}};_0x21e2fc(++_0x4f0d1b);}(_0x8937,0xe3));var _0x7893=function(_0x43c202,_0x43eaa4){_0x43c202=_0x43c202-0x0;var _0x5ce16a=_0x8937[_0x43c202];return _0x5ce16a;};'use strict';var _=require(_0x7893('0x0'));var util=require(_0x7893('0x1'));var utils=require(_0x7893('0x2'));var queues={};function writeDB(_0xfc378a){utils['info'](util[_0x7893('0x3')](_0x7893('0x4'),_0xfc378a['uniqueid'],_0xfc378a[_0x7893('0x5')],_0xfc378a['queue'],_0xfc378a['lastAssignedTo'],_0xfc378a[_0x7893('0x6')],_0xfc378a[_0x7893('0x7')],_0xfc378a['queuecallerexitreason']));if(_0xfc378a[_0x7893('0x8')]){utils[_0x7893('0x9')](_0xfc378a['queue'])[_0x7893('0xa')](function(_0x45c67f){if(_0x45c67f){_0xfc378a[_0x7893('0xb')]=_0x45c67f['type'];}utils[_0x7893('0xc')](_0x7893('0xd'),_0xfc378a);});}else{utils[_0x7893('0xc')](_0x7893('0xd'),_0xfc378a);}if(_0xfc378a['transfereduniqueid']){delete queues[_0xfc378a['transfereduniqueid']];}else{delete queues[_0xfc378a['uniqueid']];}}exports[_0x7893('0xe')]=function(_0xafd7b5){try{utils['debug'](util['format'](_0x7893('0xf'),_0xafd7b5['uniqueid']),_0xafd7b5);utils[_0x7893('0x10')](util['format']('[%s][queues][queuecallerjoin]\x20name:%s\x20position:%s',_0xafd7b5['uniqueid'],_0xafd7b5[_0x7893('0x8')],_0xafd7b5['position']));queues[_0xafd7b5[_0x7893('0x11')]]=_[_0x7893('0x12')](_0xafd7b5,{'originalposition':_0xafd7b5['position'],'queuecallerjoinAt':utils[_0x7893('0x13')](),'mohtime':0x0});}catch(_0x176a75){utils[_0x7893('0x14')](util[_0x7893('0x3')](_0x7893('0xf'),_0xafd7b5['uniqueid']),_0x176a75);}};exports['hangup']=function(_0xa3b388){try{if(!_[_0x7893('0x15')](queues[_0xa3b388[_0x7893('0x11')]])){utils['debug'](util[_0x7893('0x3')](_0x7893('0x16'),_0xa3b388[_0x7893('0x11')]),_0xa3b388);if(queues[_0xa3b388[_0x7893('0x11')]][_0x7893('0x17')]){if(!queues[_0xa3b388[_0x7893('0x11')]][_0x7893('0x18')]&&!queues[_0xa3b388[_0x7893('0x11')]][_0x7893('0x19')]){queues[_0xa3b388[_0x7893('0x11')]]['queuecallercomplete']=!![];queues[_0xa3b388[_0x7893('0x11')]][_0x7893('0x1a')]=utils[_0x7893('0x13')]();queues[_0xa3b388['uniqueid']]['queuecallerexitreason']=_0x7893('0x1b');}utils[_0x7893('0x10')](util['format'](_0x7893('0x1c'),_0xa3b388[_0x7893('0x11')],queues[_0xa3b388[_0x7893('0x11')]]['name'],queues[_0xa3b388['uniqueid']][_0x7893('0x1d')]));writeDB(queues[_0xa3b388['uniqueid']]);}else if(queues[_0xa3b388[_0x7893('0x11')]][_0x7893('0x1e')]){utils[_0x7893('0x10')](util[_0x7893('0x3')](_0x7893('0x1f'),_0xa3b388['uniqueid'],queues[_0xa3b388[_0x7893('0x11')]][_0x7893('0x20')],queues[_0xa3b388[_0x7893('0x11')]][_0x7893('0x1e')]));queues[queues[_0xa3b388[_0x7893('0x11')]]['transfereduniqueid']]=queues[_0xa3b388[_0x7893('0x11')]];queues[queues[_0xa3b388[_0x7893('0x11')]][_0x7893('0x1e')]]['queuecallerenterreason']=0x2;delete queues[_0xa3b388[_0x7893('0x11')]];}}}catch(_0xdb4134){utils[_0x7893('0x14')](util[_0x7893('0x3')](_0x7893('0x16'),_0xa3b388['uniqueid']),_0xdb4134);}};exports[_0x7893('0x21')]=function(_0x149a03){try{utils[_0x7893('0x22')](util['format'](_0x7893('0x23'),_0x149a03[_0x7893('0x11')]),_0x149a03);if(!_[_0x7893('0x15')](_0x149a03[_0x7893('0x24')][_0x7893('0x25')])&&_0x149a03[_0x7893('0x26')]['toUpperCase']()!==_0x7893('0x27')){if(!_[_0x7893('0x15')](queues[_0x149a03[_0x7893('0x11')]])){queues[_0x149a03[_0x7893('0x11')]]['queuecallerabandon']=![];queues[_0x149a03[_0x7893('0x11')]]['queuecallerabandonAt']=null;queues[_0x149a03[_0x7893('0x11')]]['queuecallerexit']=!![];queues[_0x149a03[_0x7893('0x11')]]['queuecallerexitAt']=utils[_0x7893('0x13')]();queues[_0x149a03[_0x7893('0x11')]][_0x7893('0x1d')]=_0x149a03[_0x7893('0x26')]['toUpperCase']();utils['info'](util[_0x7893('0x3')]('[%s][queues][varset]\x20name:%s\x20variable:queuestatus\x20value:%s\x20queuecallerexitreason:%s',_0x149a03[_0x7893('0x11')],queues[_0x149a03[_0x7893('0x11')]][_0x7893('0x20')],_0x149a03[_0x7893('0x26')],queues[_0x149a03[_0x7893('0x11')]]['queuecallerexitreason']));writeDB(queues[_0x149a03['uniqueid']]);}}else if(!_[_0x7893('0x15')](_0x149a03[_0x7893('0x24')]['queueposition'])){if(!_[_0x7893('0x15')](queues[_0x149a03[_0x7893('0x11')]])&&!queues[_0x149a03[_0x7893('0x11')]][_0x7893('0x18')]){queues[_0x149a03[_0x7893('0x11')]][_0x7893('0x18')]=![];queues[_0x149a03[_0x7893('0x11')]][_0x7893('0x28')]=null;queues[_0x149a03[_0x7893('0x11')]][_0x7893('0x19')]=!![];queues[_0x149a03[_0x7893('0x11')]][_0x7893('0x29')]=utils[_0x7893('0x13')]();queues[_0x149a03[_0x7893('0x11')]][_0x7893('0x1d')]=_0x7893('0x2a');utils[_0x7893('0x10')](util[_0x7893('0x3')]('[%s][queues][varset]\x20name:%s\x20variable:queueposition\x20value:%s\x20queuecallerexitreason:%s',_0x149a03[_0x7893('0x11')],queues[_0x149a03[_0x7893('0x11')]][_0x7893('0x20')],_0x149a03[_0x7893('0x26')],queues[_0x149a03[_0x7893('0x11')]][_0x7893('0x1d')]));}}}catch(_0x16d095){utils[_0x7893('0x14')](util[_0x7893('0x3')]('[%s][queues][varset]',_0x149a03[_0x7893('0x11')]),_0x16d095);}};exports['queuecallerabandon']=function(_0x4ab948){try{if(!_['isNil'](queues[_0x4ab948[_0x7893('0x11')]])){utils[_0x7893('0x22')](util[_0x7893('0x3')](_0x7893('0x2b'),_0x4ab948[_0x7893('0x11')]),_0x4ab948);queues[_0x4ab948[_0x7893('0x11')]][_0x7893('0x19')]=![];queues[_0x4ab948[_0x7893('0x11')]][_0x7893('0x29')]=null;queues[_0x4ab948['uniqueid']][_0x7893('0x18')]=!![];queues[_0x4ab948['uniqueid']][_0x7893('0x28')]=utils[_0x7893('0x13')]();queues[_0x4ab948[_0x7893('0x11')]][_0x7893('0x1d')]=_0x7893('0x2c');utils[_0x7893('0x10')](util[_0x7893('0x3')](_0x7893('0x2d'),_0x4ab948[_0x7893('0x11')],queues[_0x4ab948[_0x7893('0x11')]][_0x7893('0x20')],queues[_0x4ab948[_0x7893('0x11')]][_0x7893('0x1d')]));}}catch(_0x4d658a){utils[_0x7893('0x14')](util[_0x7893('0x3')](_0x7893('0x2b'),_0x4ab948['uniqueid']),_0x4d658a);}};exports[_0x7893('0x2e')]=function(_0x2adc97){try{if(!_['isNil'](queues[_0x2adc97[_0x7893('0x11')]])){utils[_0x7893('0x22')](util[_0x7893('0x3')]('[%s][queues][queuecallerleave]',_0x2adc97[_0x7893('0x11')]),_0x2adc97);utils[_0x7893('0x10')](util['format'](_0x7893('0x2f'),_0x2adc97[_0x7893('0x11')],queues[_0x2adc97[_0x7893('0x11')]][_0x7893('0x20')],_0x2adc97[_0x7893('0x30')],_0x2adc97[_0x7893('0x31')]));queues[_0x2adc97[_0x7893('0x11')]]['queuecallerleave']=!![];queues[_0x2adc97['uniqueid']][_0x7893('0x17')]=utils[_0x7893('0x13')]();queues[_0x2adc97[_0x7893('0x11')]][_0x7893('0x32')]=utils[_0x7893('0x33')](queues[_0x2adc97[_0x7893('0x11')]][_0x7893('0x17')],queues[_0x2adc97[_0x7893('0x11')]]['queuecallerjoinAt']);queues[_0x2adc97[_0x7893('0x11')]][_0x7893('0x34')]=_0x2adc97[_0x7893('0x34')];queues[_0x2adc97[_0x7893('0x11')]]['count']=_0x2adc97['count'];queues[_0x2adc97[_0x7893('0x11')]]['connectedlinenum']=_0x2adc97[_0x7893('0x30')];queues[_0x2adc97[_0x7893('0x11')]][_0x7893('0x31')]=_0x2adc97['connectedlinename'];}}catch(_0xc19a60){utils[_0x7893('0x14')](util[_0x7893('0x3')]('[%s][queues][queuecallerleave]',_0x2adc97['uniqueid']),_0xc19a60);}};exports[_0x7893('0x35')]=function(_0x23d82a){try{if(!_[_0x7893('0x15')](queues[_0x23d82a[_0x7893('0x11')]])){utils[_0x7893('0x22')](util['format'](_0x7893('0x36'),_0x23d82a[_0x7893('0x11')]),_0x23d82a);utils['info'](util['format'](_0x7893('0x37'),_0x23d82a[_0x7893('0x11')],queues[_0x23d82a['uniqueid']][_0x7893('0x20')],_0x23d82a[_0x7893('0x38')],_0x23d82a[_0x7893('0x39')]));queues[_0x23d82a[_0x7893('0x11')]][_0x7893('0x18')]=![];queues[_0x23d82a[_0x7893('0x11')]]['queuecallerabandon']=![];queues[_0x23d82a[_0x7893('0x11')]][_0x7893('0x28')]=null;queues[_0x23d82a[_0x7893('0x11')]]['queuecallerexit']=![];queues[_0x23d82a[_0x7893('0x11')]][_0x7893('0x1d')]=null;queues[_0x23d82a[_0x7893('0x11')]]['queuecallerexitAt']=null;queues[_0x23d82a[_0x7893('0x11')]][_0x7893('0x3a')]=!![];queues[_0x23d82a[_0x7893('0x11')]]['accountcode']=_0x23d82a[_0x7893('0x39')];queues[_0x23d82a[_0x7893('0x11')]][_0x7893('0x3b')]=_0x23d82a[_0x7893('0x38')];}}catch(_0x38e336){utils[_0x7893('0x14')](util[_0x7893('0x3')](_0x7893('0x36'),_0x23d82a['uniqueid']),_0x38e336);}};exports['agentcomplete']=function(_0x36493d){try{if(!_[_0x7893('0x15')](queues[_0x36493d[_0x7893('0x11')]])){if(queues[_0x36493d[_0x7893('0x11')]][_0x7893('0x17')]){utils[_0x7893('0x22')](util[_0x7893('0x3')](_0x7893('0x3c'),_0x36493d[_0x7893('0x11')]),_0x36493d);queues[_0x36493d[_0x7893('0x11')]][_0x7893('0x18')]=![];queues[_0x36493d[_0x7893('0x11')]][_0x7893('0x18')]=![];queues[_0x36493d[_0x7893('0x11')]][_0x7893('0x28')]=null;queues[_0x36493d[_0x7893('0x11')]][_0x7893('0x19')]=![];queues[_0x36493d['uniqueid']]['queuecallerexitAt']=null;queues[_0x36493d[_0x7893('0x11')]][_0x7893('0x3a')]=!![];queues[_0x36493d['uniqueid']][_0x7893('0x3b')]=_0x36493d[_0x7893('0x38')];queues[_0x36493d[_0x7893('0x11')]]['queuecallercomplete']=!![];queues[_0x36493d[_0x7893('0x11')]][_0x7893('0x1a')]=utils[_0x7893('0x13')]();if(_0x36493d[_0x7893('0x3d')]==_0x7893('0x3e')){if(!queues[_0x36493d[_0x7893('0x11')]][_0x7893('0x3e')]){queues[_0x36493d[_0x7893('0x11')]][_0x7893('0x1d')]=_0x7893('0x3f');}}else{queues[_0x36493d[_0x7893('0x11')]][_0x7893('0x1d')]=_0x7893('0x40')+_0x36493d[_0x7893('0x3d')]['toUpperCase']();}utils[_0x7893('0x10')](util['format'](_0x7893('0x41'),_0x36493d[_0x7893('0x11')],queues[_0x36493d[_0x7893('0x11')]]['name'],_0x36493d['membername'],queues[_0x36493d[_0x7893('0x11')]][_0x7893('0x1d')]));writeDB(queues[_0x36493d[_0x7893('0x11')]]);}}}catch(_0x540993){utils[_0x7893('0x14')](util[_0x7893('0x3')](_0x7893('0x3c'),_0x36493d['uniqueid']),_0x540993);}};exports[_0x7893('0x42')]=function(_0x369ce6){try{if(!_['isNil'](queues[_0x369ce6[_0x7893('0x43')]])){utils['debug'](util[_0x7893('0x3')](_0x7893('0x44'),_0x369ce6[_0x7893('0x11')]),_0x369ce6);queues[_0x369ce6[_0x7893('0x43')]][_0x7893('0x3e')]=!![];queues[_0x369ce6[_0x7893('0x43')]][_0x7893('0x45')]=_0x7893('0x46');queues[_0x369ce6['transfereeuniqueid']][_0x7893('0x47')]=_0x369ce6['extension'];queues[_0x369ce6[_0x7893('0x43')]]['transferuniqueid']=_0x369ce6[_0x7893('0x43')];queues[_0x369ce6[_0x7893('0x43')]][_0x7893('0x1d')]=_0x7893('0x48');utils[_0x7893('0x10')](util[_0x7893('0x3')]('[%s][queues][blindtransfer]\x20name:%s\x20transferuniqueid:%s\x20transferexten:%s\x20queuecallerexitreason:BLINDTRANSFER',_0x369ce6[_0x7893('0x11')],queues[_0x369ce6[_0x7893('0x43')]][_0x7893('0x20')],_0x369ce6[_0x7893('0x43')],_0x369ce6[_0x7893('0x49')]));}}catch(_0x120cbe){utils[_0x7893('0x14')](util[_0x7893('0x3')](_0x7893('0x44'),_0x369ce6[_0x7893('0x11')]),_0x120cbe);}};exports[_0x7893('0x4a')]=function(_0x18725f){try{utils['debug'](util[_0x7893('0x3')](_0x7893('0x4b'),_0x18725f[_0x7893('0x4c')]),_0x18725f);if(_0x18725f['origtransfereruniqueid']==_0x18725f[_0x7893('0x4d')]){if(!_[_0x7893('0x15')](queues[_0x18725f[_0x7893('0x4e')]])){utils[_0x7893('0x10')](util['format'](_0x7893('0x4f'),_0x18725f[_0x7893('0x4c')],queues[_0x18725f[_0x7893('0x4e')]][_0x7893('0x20')],_0x18725f[_0x7893('0x50')]));queues[_0x18725f[_0x7893('0x4e')]][_0x7893('0x3e')]=!![];queues[_0x18725f[_0x7893('0x4e')]][_0x7893('0x45')]=_0x7893('0x51');queues[_0x18725f['secondtransfererlinkedid']][_0x7893('0x47')]=_0x18725f[_0x7893('0x50')];queues[_0x18725f['secondtransfererlinkedid']]['transferuniqueid']=_0x18725f[_0x7893('0x4c')];queues[_0x18725f[_0x7893('0x4e')]][_0x7893('0x1d')]='ATTENDEDTRANSFER';}if(!_[_0x7893('0x15')](queues[_0x18725f[_0x7893('0x4d')]])){if(_0x18725f[_0x7893('0x52')]&&queues[_0x18725f[_0x7893('0x52')]]){queues[_0x18725f[_0x7893('0x52')]]['queuecallerenterreason']=0x1;queues[_0x18725f[_0x7893('0x43')]]=_[_0x7893('0x53')](queues[_0x18725f[_0x7893('0x52')]]);queues[_0x18725f[_0x7893('0x43')]][_0x7893('0x1e')]=_0x18725f[_0x7893('0x54')];queues[_0x18725f[_0x7893('0x43')]]['queuecallerenterreason']=0x2;queues[_0x18725f['transfereeuniqueid']]['calleridnum']=queues[_0x18725f['secondtransfererlinkedid']][_0x7893('0x6')];queues[_0x18725f[_0x7893('0x43')]][_0x7893('0x55')]=queues[_0x18725f[_0x7893('0x4e')]][_0x7893('0x55')];queues[_0x18725f[_0x7893('0x43')]][_0x7893('0x56')]=utils[_0x7893('0x13')]();queues[_0x18725f[_0x7893('0x43')]][_0x7893('0x17')]=utils['now']();queues[_0x18725f[_0x7893('0x43')]]['holdtime']=0x0;queues[_0x18725f['transfereeuniqueid']]['mohtime']=0x0;utils[_0x7893('0x10')](util[_0x7893('0x3')](_0x7893('0x57'),_0x18725f[_0x7893('0x4c')],queues[_0x18725f[_0x7893('0x43')]][_0x7893('0x20')],queues[_0x18725f[_0x7893('0x43')]]['calleridnum'],queues[_0x18725f[_0x7893('0x43')]][_0x7893('0x55')]));}else{utils[_0x7893('0x10')](util[_0x7893('0x3')](_0x7893('0x58'),_0x18725f[_0x7893('0x4c')],queues[_0x18725f['origtransfererlinkedid']][_0x7893('0x20')],_0x18725f[_0x7893('0x4e')]));queues[_0x18725f['origtransfererlinkedid']][_0x7893('0x1e')]=_0x18725f[_0x7893('0x4e')];}}}else if(_0x18725f[_0x7893('0x59')]==_0x18725f['secondtransfererlinkedid']){if(!_['isNil'](queues[_0x18725f[_0x7893('0x4d')]])){utils[_0x7893('0x10')](util[_0x7893('0x3')](_0x7893('0x5a'),_0x18725f['origtransfereruniqueid'],queues[_0x18725f[_0x7893('0x4d')]][_0x7893('0x20')],_0x18725f[_0x7893('0x59')],_0x18725f['secondtransfererexten']));queues[_0x18725f['origtransfererlinkedid']][_0x7893('0x3e')]=!![];queues[_0x18725f[_0x7893('0x4d')]][_0x7893('0x45')]=_0x7893('0x51');queues[_0x18725f[_0x7893('0x4d')]]['transferexten']=_0x18725f[_0x7893('0x5b')];queues[_0x18725f[_0x7893('0x4d')]][_0x7893('0x5c')]=_0x18725f[_0x7893('0x59')];queues[_0x18725f[_0x7893('0x4d')]][_0x7893('0x1d')]='ATTENDEDTRANSFER';}if(!_[_0x7893('0x15')](queues[_0x18725f[_0x7893('0x4e')]])){if(_0x18725f[_0x7893('0x5d')]&&queues[_0x18725f[_0x7893('0x5d')]]){queues[_0x18725f['transfertargetlinkedid']][_0x7893('0x5e')]=0x1;queues[_0x18725f[_0x7893('0x54')]]=_['clone'](queues[_0x18725f['transfertargetlinkedid']]);queues[_0x18725f['transfertargetuniqueid']]['transfereduniqueid']=_0x18725f[_0x7893('0x54')];queues[_0x18725f[_0x7893('0x54')]][_0x7893('0x5e')]=0x2;queues[_0x18725f['transfertargetuniqueid']][_0x7893('0x6')]=queues[_0x18725f['origtransfererlinkedid']][_0x7893('0x6')];queues[_0x18725f[_0x7893('0x54')]][_0x7893('0x55')]=queues[_0x18725f[_0x7893('0x4d')]][_0x7893('0x55')];queues[_0x18725f['transfertargetuniqueid']][_0x7893('0x56')]=utils['now']();queues[_0x18725f[_0x7893('0x54')]][_0x7893('0x17')]=utils['now']();queues[_0x18725f['transfertargetuniqueid']][_0x7893('0x32')]=0x0;queues[_0x18725f['transfertargetuniqueid']][_0x7893('0x5f')]=0x0;utils[_0x7893('0x10')](util[_0x7893('0x3')]('[%s][queues][attendedtransfer]\x20name:%s\x20transfereduniqueid:%s\x20calleridnum:%s\x20calleridname:%s',_0x18725f[_0x7893('0x4c')],queues[_0x18725f[_0x7893('0x54')]]['name'],queues[_0x18725f[_0x7893('0x54')]]['transfereduniqueid'],queues[_0x18725f['transfertargetuniqueid']]['calleridnum'],queues[_0x18725f[_0x7893('0x54')]][_0x7893('0x55')]));}else{utils[_0x7893('0x10')](util[_0x7893('0x3')](_0x7893('0x58'),_0x18725f[_0x7893('0x4c')],queues[_0x18725f[_0x7893('0x4e')]][_0x7893('0x20')],_0x18725f[_0x7893('0x4d')]));queues[_0x18725f[_0x7893('0x4e')]][_0x7893('0x1e')]=_0x18725f[_0x7893('0x4d')];}}}}catch(_0x7dc4ec){utils[_0x7893('0x14')](util[_0x7893('0x3')](_0x7893('0x4b'),_0x18725f[_0x7893('0x4c')]),_0x7dc4ec);}};exports['musiconholdstart']=function(_0x40c49d){try{if(!_[_0x7893('0x15')](queues[_0x40c49d[_0x7893('0x11')]])){utils[_0x7893('0x22')](util[_0x7893('0x3')](_0x7893('0x60'),_0x40c49d[_0x7893('0x11')]),_0x40c49d);queues[_0x40c49d[_0x7893('0x11')]][_0x7893('0x61')]=utils[_0x7893('0x13')]();utils['info'](util['format'](_0x7893('0x62'),_0x40c49d[_0x7893('0x11')],queues[_0x40c49d[_0x7893('0x11')]][_0x7893('0x20')],queues[_0x40c49d[_0x7893('0x11')]][_0x7893('0x61')]));}}catch(_0x20b6c9){utils[_0x7893('0x14')](util[_0x7893('0x3')](_0x7893('0x60'),_0x40c49d[_0x7893('0x11')]),_0x20b6c9);}};exports[_0x7893('0x63')]=function(_0x5e18ea){try{if(!_[_0x7893('0x15')](queues[_0x5e18ea['uniqueid']])){if(!_[_0x7893('0x15')](queues[_0x5e18ea[_0x7893('0x11')]]['musiconholdstartAt'])){utils[_0x7893('0x22')](util[_0x7893('0x3')]('[%s][queues][musiconholdstop]',_0x5e18ea[_0x7893('0x11')]),_0x5e18ea);queues[_0x5e18ea[_0x7893('0x11')]]['mohtime']+=utils[_0x7893('0x33')](utils[_0x7893('0x13')](),queues[_0x5e18ea[_0x7893('0x11')]]['musiconholdstartAt']);utils[_0x7893('0x10')](util[_0x7893('0x3')](_0x7893('0x64'),_0x5e18ea[_0x7893('0x11')],queues[_0x5e18ea[_0x7893('0x11')]]['name'],queues[_0x5e18ea[_0x7893('0x11')]][_0x7893('0x5f')]));delete queues[_0x5e18ea[_0x7893('0x11')]][_0x7893('0x61')];}}}catch(_0xad8d9){utils[_0x7893('0x14')](util[_0x7893('0x3')](_0x7893('0x65'),_0x5e18ea['uniqueid']),_0xad8d9);}};
\ No newline at end of file
index 2673556..d88d7e1 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb36b=['calleridname','cause-txt','calleridnum','connectedlinenum','connectedlinename','type','clone','[%s][recordings][hangup]','newexten','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','appdata','application','toLowerCase','set','cdr','split','substring','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','blindtransfer','[%s][recordings][blindtransfer]','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','transfereruniqueid','recording','lodash','util','./utils','./transfers.controller','info','format','[%s][recordings][writeDB]','uniqueid','blinds','transfereeuniqueid','accountcode','then','UserId','request','CreateVoiceRecording','newchannel','debug','linkedid','context','exten','channel','error','newstate','[%s][recordings][newstate]','isNil','channelstate','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','variable','mixmonitor_filename','[%s][recordings][varset]','[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','replace','.wav49','.WAV','find','monitors','push','hangup','[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s'];(function(_0x10ca64,_0x110ece){var _0x397fb8=function(_0x177404){while(--_0x177404){_0x10ca64['push'](_0x10ca64['shift']());}};_0x397fb8(++_0x110ece);}(_0xb36b,0x148));var _0xbb36=function(_0x15660e,_0x1b2b74){_0x15660e=_0x15660e-0x0;var _0x36e231=_0xb36b[_0x15660e];return _0x36e231;};'use strict';var _=require(_0xbb36('0x0'));var util=require(_0xbb36('0x1'));var utils=require(_0xbb36('0x2'));var transfers=require(_0xbb36('0x3'));var recordings={};function writeDB(_0x35451b){var _0x39c9cf;utils[_0xbb36('0x4')](util[_0xbb36('0x5')](_0xbb36('0x6'),_0x35451b[_0xbb36('0x7')]));if(transfers['blinds'][_0x35451b['uniqueid']]){_0x39c9cf=_0x35451b[_0xbb36('0x7')];_0x35451b[_0xbb36('0x7')]=transfers[_0xbb36('0x8')][_0x35451b['uniqueid']][_0xbb36('0x9')];}if(_0x35451b[_0xbb36('0xa')]){utils['getUserByInternal'](_0x35451b[_0xbb36('0xa')])[_0xbb36('0xb')](function(_0x2d9529){if(_0x2d9529){_0x35451b['membername']=_0x2d9529['name'];_0x35451b[_0xbb36('0xc')]=_0x2d9529['id'];}utils[_0xbb36('0xd')](_0xbb36('0xe'),_0x35451b);});}else{utils[_0xbb36('0xd')](_0xbb36('0xe'),_0x35451b);}if(_0x39c9cf)delete transfers[_0xbb36('0x8')][_0x39c9cf];}exports[_0xbb36('0xf')]=function(_0x90fa0b){try{utils[_0xbb36('0x10')](util[_0xbb36('0x5')]('[%s][recordings][newchannel]',_0x90fa0b['uniqueid']),_0x90fa0b);if(_0x90fa0b[_0xbb36('0x7')]==_0x90fa0b[_0xbb36('0x11')]){utils[_0xbb36('0x4')](util[_0xbb36('0x5')]('[%s][recordings][newchannel]\x20context:%s\x20exten:%s',_0x90fa0b[_0xbb36('0x7')],_0x90fa0b[_0xbb36('0x12')],_0x90fa0b['exten']));recordings[_0x90fa0b[_0xbb36('0x7')]]={'uniqueid':_0x90fa0b[_0xbb36('0x7')],'accountcode':_0x90fa0b[_0xbb36('0xa')],'exten':_0x90fa0b[_0xbb36('0x13')],'context':_0x90fa0b[_0xbb36('0x12')],'channel':_0x90fa0b[_0xbb36('0x14')],'monitors':[]};}}catch(_0x161d80){utils[_0xbb36('0x15')](util[_0xbb36('0x5')]('[%s][recordings][newchannel]',_0x90fa0b['uniqueid']),_0x161d80);}};exports[_0xbb36('0x16')]=function(_0x3bccfb){try{utils[_0xbb36('0x10')](util[_0xbb36('0x5')](_0xbb36('0x17'),_0x3bccfb['uniqueid']),_0x3bccfb);if(!_[_0xbb36('0x18')](recordings[_0x3bccfb[_0xbb36('0x7')]])&&_0x3bccfb['channelstate']==0x6){utils[_0xbb36('0x4')](util[_0xbb36('0x5')]('[%s][recordings][newstate]\x20context:%s\x20channel:%s',_0x3bccfb[_0xbb36('0x7')],_0x3bccfb['context'],_0x3bccfb[_0xbb36('0x14')]));}else if(!_[_0xbb36('0x18')](recordings[_0x3bccfb[_0xbb36('0x11')]])&&_0x3bccfb[_0xbb36('0x19')]==0x6&&_0x3bccfb[_0xbb36('0x12')]!=_0xbb36('0x1a')){utils[_0xbb36('0x4')](util[_0xbb36('0x5')](_0xbb36('0x1b'),_0x3bccfb[_0xbb36('0x7')],_0x3bccfb['linkedid'],_0x3bccfb[_0xbb36('0x12')],_0x3bccfb[_0xbb36('0x14')]));recordings[_0x3bccfb[_0xbb36('0x11')]][_0xbb36('0xa')]=_0x3bccfb[_0xbb36('0xa')];}}catch(_0x441ba){utils[_0xbb36('0x15')](util[_0xbb36('0x5')](_0xbb36('0x17'),_0x3bccfb[_0xbb36('0x7')]),_0x441ba);}};exports['varset']=function(_0x4fd148){try{if(!_[_0xbb36('0x18')](_0x4fd148[_0xbb36('0x1c')])&&!_[_0xbb36('0x18')](_0x4fd148[_0xbb36('0x1c')][_0xbb36('0x1d')])){utils['debug'](util['format'](_0xbb36('0x1e'),_0x4fd148[_0xbb36('0x7')]),_0x4fd148);utils[_0xbb36('0x4')](util[_0xbb36('0x5')](_0xbb36('0x1f'),_0x4fd148[_0xbb36('0x7')],_0x4fd148[_0xbb36('0x1c')],_0x4fd148[_0xbb36('0x20')]));if(_[_0xbb36('0x21')](_0x4fd148[_0xbb36('0x20')],'.wav49')){_0x4fd148[_0xbb36('0x20')]=_0x4fd148[_0xbb36('0x20')][_0xbb36('0x22')](_0xbb36('0x23'),_0xbb36('0x24'));}if(recordings[_0x4fd148[_0xbb36('0x11')]]){var _0x5d9639=_[_0xbb36('0x25')](recordings[_0x4fd148[_0xbb36('0x11')]]['monitors'],{'value':_0x4fd148[_0xbb36('0x20')]});if(_[_0xbb36('0x18')](_0x5d9639)){recordings[_0x4fd148[_0xbb36('0x11')]][_0xbb36('0x26')][_0xbb36('0x27')]({'value':_0x4fd148[_0xbb36('0x20')]});}}}}catch(_0x2ea5e1){utils[_0xbb36('0x15')](util[_0xbb36('0x5')](_0xbb36('0x1e'),_0x4fd148[_0xbb36('0x7')]),_0x2ea5e1);}};exports[_0xbb36('0x28')]=function(_0x1182cc){try{if(!_[_0xbb36('0x18')](recordings[_0x1182cc[_0xbb36('0x7')]])){utils[_0xbb36('0x10')](util[_0xbb36('0x5')]('[%s][recordings][hangup]',_0x1182cc[_0xbb36('0x7')]),_0x1182cc);utils[_0xbb36('0x4')](util[_0xbb36('0x5')](_0xbb36('0x29'),_0x1182cc[_0xbb36('0x7')],_0x1182cc['calleridnum'],_0x1182cc[_0xbb36('0x2a')],_0x1182cc[_0xbb36('0x2b')]));recordings[_0x1182cc[_0xbb36('0x7')]][_0xbb36('0x2c')]=_0x1182cc[_0xbb36('0x2c')];recordings[_0x1182cc[_0xbb36('0x7')]][_0xbb36('0x2a')]=_0x1182cc['calleridname'];recordings[_0x1182cc[_0xbb36('0x7')]][_0xbb36('0x2d')]=_0x1182cc['connectedlinenum'];recordings[_0x1182cc[_0xbb36('0x7')]][_0xbb36('0x2e')]=_0x1182cc['connectedlinename'];if(recordings[_0x1182cc[_0xbb36('0x7')]][_0xbb36('0x2f')]=='outbound'&&recordings[_0x1182cc[_0xbb36('0x7')]][_0xbb36('0xa')]){recordings[_0x1182cc[_0xbb36('0x7')]]['connectedlinenum']=recordings[_0x1182cc['uniqueid']][_0xbb36('0xa')];recordings[_0x1182cc[_0xbb36('0x7')]]['connectedlinename']='';}recordings[_0x1182cc[_0xbb36('0x7')]]['monitors']['forEach'](function(_0x12607d){var _0x4ed8bb=_[_0xbb36('0x30')](recordings[_0x1182cc['uniqueid']]);_0x4ed8bb[_0xbb36('0x20')]=_0x12607d[_0xbb36('0x20')];writeDB(_0x4ed8bb);});delete recordings[_0x1182cc[_0xbb36('0x7')]];}}catch(_0xaa373b){utils[_0xbb36('0x15')](util['format'](_0xbb36('0x31'),_0x1182cc[_0xbb36('0x7')]),_0xaa373b);}};exports[_0xbb36('0x32')]=function(_0x4fea0b){try{if(!_[_0xbb36('0x18')](recordings[_0x4fea0b[_0xbb36('0x7')]])){utils[_0xbb36('0x10')](util['format'](_0xbb36('0x33'),_0x4fea0b[_0xbb36('0x7')]),_0x4fea0b);utils[_0xbb36('0x4')](util[_0xbb36('0x5')](_0xbb36('0x34'),_0x4fea0b[_0xbb36('0x7')],_0x4fea0b['application'],_0x4fea0b[_0xbb36('0x35')]));if(_0x4fea0b[_0xbb36('0x36')][_0xbb36('0x37')]()==_0xbb36('0x38')&&_['startsWith'](_0x4fea0b['appdata'][_0xbb36('0x37')](),_0xbb36('0x39'))){var _0x2c3d97=_0x4fea0b[_0xbb36('0x35')][_0xbb36('0x3a')]('=');var _0x3be366=_0x2c3d97[0x0][_0xbb36('0x3b')](_0x2c3d97[0x0][_0xbb36('0x3c')]('(')+0x1,_0x2c3d97[0x0][_0xbb36('0x3c')](')'));var _0x59160f=_0x2c3d97[0x1];recordings[_0x4fea0b['uniqueid']][_0x3be366]=_0x59160f;}}}catch(_0x4fa2f1){utils[_0xbb36('0x15')](util[_0xbb36('0x5')](_0xbb36('0x33'),_0x4fea0b[_0xbb36('0x7')]),_0x4fa2f1);}};exports[_0xbb36('0x3d')]=function(_0x182fb3){try{if(!_['isNil'](recordings[_0x182fb3['uniqueid']])){utils[_0xbb36('0x10')](util[_0xbb36('0x5')](_0xbb36('0x3e'),_0x182fb3[_0xbb36('0x7')]),_0x182fb3);utils[_0xbb36('0x4')](util[_0xbb36('0x5')](_0xbb36('0x3f'),_0x182fb3[_0xbb36('0x7')],_0x182fb3[_0xbb36('0x40')]));recordings[_0x182fb3[_0xbb36('0x7')]]['queue']=_0x182fb3[_0xbb36('0x40')];}}catch(_0xb451bf){utils[_0xbb36('0x15')](util[_0xbb36('0x5')](_0xbb36('0x3e'),_0x182fb3[_0xbb36('0x7')]),_0xb451bf);}};exports[_0xbb36('0x41')]=function(_0x4312e5){try{utils[_0xbb36('0x10')](util[_0xbb36('0x5')](_0xbb36('0x42'),_0x4312e5[_0xbb36('0x7')]),_0x4312e5);utils[_0xbb36('0x4')](util['format'](_0xbb36('0x43'),_0x4312e5['uniqueid'],_0x4312e5[_0xbb36('0x44')],_0x4312e5[_0xbb36('0x45')],_0x4312e5[_0xbb36('0x46')],_0x4312e5[_0xbb36('0x47')]));if(recordings[_0x4312e5[_0xbb36('0x48')]]&&transfers[_0xbb36('0x8')][_0x4312e5[_0xbb36('0x48')]]){transfers[_0xbb36('0x8')][_0x4312e5['transfereruniqueid']][_0xbb36('0x49')]=!![];}}catch(_0x67ce2e){utils[_0xbb36('0x15')](util['format'](_0xbb36('0x42'),_0x4312e5[_0xbb36('0x7')]),_0x67ce2e);}};
\ No newline at end of file
+var _0x2c06=['[%s][recordings][varset]\x20variable:%s\x20value:%s','value','endsWith','.wav49','replace','.WAV','find','monitors','hangup','calleridnum','calleridname','cause-txt','connectedlinenum','connectedlinename','type','outbound','forEach','clone','[%s][recordings][hangup]','[%s][recordings][newexten]','[%s][recordings][newexten]\x20application:%s\x20appdata:%s','application','appdata','startsWith','toLowerCase','split','lastIndexOf','queuecallerjoin','[%s][recordings][queuecallerjoin]\x20queue:%s','queue','[%s][recordings][queuecallerjoin]','blindtransfer','[%s][recordings][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','transfereruniqueid','recording','[%s][recordings][blindtransfer]','util','./utils','./transfers.controller','format','[%s][recordings][writeDB]','uniqueid','blinds','transfereeuniqueid','accountcode','getUserByInternal','then','membername','name','UserId','request','CreateVoiceRecording','linkedid','info','[%s][recordings][newchannel]\x20context:%s\x20exten:%s','context','exten','channel','error','newstate','debug','[%s][recordings][newstate]','channelstate','[%s][recordings][newstate]\x20context:%s\x20channel:%s','isNil','transfer','[%s][recordings][newstate]\x20linkedid:%s\x20context:%s\x20channel:%s','varset','variable'];(function(_0x3c60aa,_0x458925){var _0x514d8f=function(_0x134a58){while(--_0x134a58){_0x3c60aa['push'](_0x3c60aa['shift']());}};_0x514d8f(++_0x458925);}(_0x2c06,0x195));var _0x62c0=function(_0x58d221,_0x24bd39){_0x58d221=_0x58d221-0x0;var _0x10536b=_0x2c06[_0x58d221];return _0x10536b;};'use strict';var _=require('lodash');var util=require(_0x62c0('0x0'));var utils=require(_0x62c0('0x1'));var transfers=require(_0x62c0('0x2'));var recordings={};function writeDB(_0x16329e){var _0xc20df9;utils['info'](util[_0x62c0('0x3')](_0x62c0('0x4'),_0x16329e[_0x62c0('0x5')]));if(transfers[_0x62c0('0x6')][_0x16329e['uniqueid']]){_0xc20df9=_0x16329e[_0x62c0('0x5')];_0x16329e[_0x62c0('0x5')]=transfers[_0x62c0('0x6')][_0x16329e['uniqueid']][_0x62c0('0x7')];}if(_0x16329e[_0x62c0('0x8')]){utils[_0x62c0('0x9')](_0x16329e['accountcode'])[_0x62c0('0xa')](function(_0x538ba4){if(_0x538ba4){_0x16329e[_0x62c0('0xb')]=_0x538ba4[_0x62c0('0xc')];_0x16329e[_0x62c0('0xd')]=_0x538ba4['id'];}utils[_0x62c0('0xe')](_0x62c0('0xf'),_0x16329e);});}else{utils[_0x62c0('0xe')](_0x62c0('0xf'),_0x16329e);}if(_0xc20df9)delete transfers[_0x62c0('0x6')][_0xc20df9];}exports['newchannel']=function(_0x4af0a1){try{utils['debug'](util[_0x62c0('0x3')]('[%s][recordings][newchannel]',_0x4af0a1[_0x62c0('0x5')]),_0x4af0a1);if(_0x4af0a1['uniqueid']==_0x4af0a1[_0x62c0('0x10')]){utils[_0x62c0('0x11')](util['format'](_0x62c0('0x12'),_0x4af0a1[_0x62c0('0x5')],_0x4af0a1[_0x62c0('0x13')],_0x4af0a1[_0x62c0('0x14')]));recordings[_0x4af0a1[_0x62c0('0x5')]]={'uniqueid':_0x4af0a1[_0x62c0('0x5')],'accountcode':_0x4af0a1['accountcode'],'exten':_0x4af0a1[_0x62c0('0x14')],'context':_0x4af0a1[_0x62c0('0x13')],'channel':_0x4af0a1[_0x62c0('0x15')],'monitors':[]};}}catch(_0x4e014c){utils[_0x62c0('0x16')](util['format']('[%s][recordings][newchannel]',_0x4af0a1[_0x62c0('0x5')]),_0x4e014c);}};exports[_0x62c0('0x17')]=function(_0x73ab72){try{utils[_0x62c0('0x18')](util[_0x62c0('0x3')](_0x62c0('0x19'),_0x73ab72[_0x62c0('0x5')]),_0x73ab72);if(!_['isNil'](recordings[_0x73ab72['uniqueid']])&&_0x73ab72[_0x62c0('0x1a')]==0x6){utils['info'](util[_0x62c0('0x3')](_0x62c0('0x1b'),_0x73ab72[_0x62c0('0x5')],_0x73ab72[_0x62c0('0x13')],_0x73ab72['channel']));}else if(!_[_0x62c0('0x1c')](recordings[_0x73ab72[_0x62c0('0x10')]])&&_0x73ab72['channelstate']==0x6&&_0x73ab72[_0x62c0('0x13')]!=_0x62c0('0x1d')){utils[_0x62c0('0x11')](util[_0x62c0('0x3')](_0x62c0('0x1e'),_0x73ab72[_0x62c0('0x5')],_0x73ab72[_0x62c0('0x10')],_0x73ab72[_0x62c0('0x13')],_0x73ab72[_0x62c0('0x15')]));recordings[_0x73ab72[_0x62c0('0x10')]]['accountcode']=_0x73ab72[_0x62c0('0x8')];}}catch(_0x540e10){utils[_0x62c0('0x16')](util['format'](_0x62c0('0x19'),_0x73ab72[_0x62c0('0x5')]),_0x540e10);}};exports[_0x62c0('0x1f')]=function(_0x3b1897){try{if(!_['isNil'](_0x3b1897[_0x62c0('0x20')])&&!_[_0x62c0('0x1c')](_0x3b1897[_0x62c0('0x20')]['mixmonitor_filename'])){utils[_0x62c0('0x18')](util[_0x62c0('0x3')]('[%s][recordings][varset]',_0x3b1897[_0x62c0('0x5')]),_0x3b1897);utils[_0x62c0('0x11')](util[_0x62c0('0x3')](_0x62c0('0x21'),_0x3b1897[_0x62c0('0x5')],_0x3b1897[_0x62c0('0x20')],_0x3b1897[_0x62c0('0x22')]));if(_[_0x62c0('0x23')](_0x3b1897[_0x62c0('0x22')],_0x62c0('0x24'))){_0x3b1897['value']=_0x3b1897[_0x62c0('0x22')][_0x62c0('0x25')](_0x62c0('0x24'),_0x62c0('0x26'));}if(recordings[_0x3b1897['linkedid']]){var _0x1dfc01=_[_0x62c0('0x27')](recordings[_0x3b1897[_0x62c0('0x10')]][_0x62c0('0x28')],{'value':_0x3b1897['value']});if(_[_0x62c0('0x1c')](_0x1dfc01)){recordings[_0x3b1897[_0x62c0('0x10')]]['monitors']['push']({'value':_0x3b1897['value']});}}}}catch(_0x1c1b86){utils[_0x62c0('0x16')](util[_0x62c0('0x3')]('[%s][recordings][varset]',_0x3b1897['uniqueid']),_0x1c1b86);}};exports[_0x62c0('0x29')]=function(_0x163ddf){try{if(!_[_0x62c0('0x1c')](recordings[_0x163ddf[_0x62c0('0x5')]])){utils['debug'](util['format']('[%s][recordings][hangup]',_0x163ddf[_0x62c0('0x5')]),_0x163ddf);utils[_0x62c0('0x11')](util[_0x62c0('0x3')]('[%s][recordings][hangup]\x20calleridnum:%s\x20calleridname:%s\x20reason:%s',_0x163ddf[_0x62c0('0x5')],_0x163ddf[_0x62c0('0x2a')],_0x163ddf[_0x62c0('0x2b')],_0x163ddf[_0x62c0('0x2c')]));recordings[_0x163ddf[_0x62c0('0x5')]]['calleridnum']=_0x163ddf['calleridnum'];recordings[_0x163ddf[_0x62c0('0x5')]][_0x62c0('0x2b')]=_0x163ddf[_0x62c0('0x2b')];recordings[_0x163ddf['uniqueid']]['connectedlinenum']=_0x163ddf[_0x62c0('0x2d')];recordings[_0x163ddf['uniqueid']][_0x62c0('0x2e')]=_0x163ddf['connectedlinename'];if(recordings[_0x163ddf['uniqueid']][_0x62c0('0x2f')]==_0x62c0('0x30')&&recordings[_0x163ddf['uniqueid']][_0x62c0('0x8')]){recordings[_0x163ddf[_0x62c0('0x5')]]['connectedlinenum']=recordings[_0x163ddf[_0x62c0('0x5')]][_0x62c0('0x8')];recordings[_0x163ddf['uniqueid']]['connectedlinename']='';}recordings[_0x163ddf['uniqueid']][_0x62c0('0x28')][_0x62c0('0x31')](function(_0xfc2d5c){var _0x2cc7bb=_[_0x62c0('0x32')](recordings[_0x163ddf[_0x62c0('0x5')]]);_0x2cc7bb['value']=_0xfc2d5c[_0x62c0('0x22')];writeDB(_0x2cc7bb);});delete recordings[_0x163ddf[_0x62c0('0x5')]];}}catch(_0x273623){utils[_0x62c0('0x16')](util['format'](_0x62c0('0x33'),_0x163ddf[_0x62c0('0x5')]),_0x273623);}};exports['newexten']=function(_0x37a8b8){try{if(!_[_0x62c0('0x1c')](recordings[_0x37a8b8[_0x62c0('0x5')]])){utils[_0x62c0('0x18')](util['format'](_0x62c0('0x34'),_0x37a8b8['uniqueid']),_0x37a8b8);utils[_0x62c0('0x11')](util[_0x62c0('0x3')](_0x62c0('0x35'),_0x37a8b8[_0x62c0('0x5')],_0x37a8b8[_0x62c0('0x36')],_0x37a8b8[_0x62c0('0x37')]));if(_0x37a8b8[_0x62c0('0x36')]['toLowerCase']()=='set'&&_[_0x62c0('0x38')](_0x37a8b8['appdata'][_0x62c0('0x39')](),'cdr')){var _0x5b4d41=_0x37a8b8['appdata'][_0x62c0('0x3a')]('=');var _0x2de35=_0x5b4d41[0x0]['substring'](_0x5b4d41[0x0][_0x62c0('0x3b')]('(')+0x1,_0x5b4d41[0x0][_0x62c0('0x3b')](')'));var _0x288e56=_0x5b4d41[0x1];recordings[_0x37a8b8[_0x62c0('0x5')]][_0x2de35]=_0x288e56;}}}catch(_0x3e0719){utils[_0x62c0('0x16')](util[_0x62c0('0x3')]('[%s][recordings][newexten]',_0x37a8b8[_0x62c0('0x5')]),_0x3e0719);}};exports[_0x62c0('0x3c')]=function(_0x7e7898){try{if(!_[_0x62c0('0x1c')](recordings[_0x7e7898[_0x62c0('0x5')]])){utils[_0x62c0('0x18')](util['format']('[%s][recordings][queuecallerjoin]',_0x7e7898['uniqueid']),_0x7e7898);utils[_0x62c0('0x11')](util[_0x62c0('0x3')](_0x62c0('0x3d'),_0x7e7898[_0x62c0('0x5')],_0x7e7898['queue']));recordings[_0x7e7898[_0x62c0('0x5')]][_0x62c0('0x3e')]=_0x7e7898['queue'];}}catch(_0xd2afb5){utils['error'](util[_0x62c0('0x3')](_0x62c0('0x3f'),_0x7e7898[_0x62c0('0x5')]),_0xd2afb5);}};exports[_0x62c0('0x40')]=function(_0x26b829){try{utils['debug'](util[_0x62c0('0x3')]('[%s][recordings][blindtransfer]',_0x26b829[_0x62c0('0x5')]),_0x26b829);utils[_0x62c0('0x11')](util[_0x62c0('0x3')](_0x62c0('0x41'),_0x26b829[_0x62c0('0x5')],_0x26b829[_0x62c0('0x42')],_0x26b829[_0x62c0('0x43')],_0x26b829[_0x62c0('0x44')],_0x26b829[_0x62c0('0x45')]));if(recordings[_0x26b829[_0x62c0('0x46')]]&&transfers['blinds'][_0x26b829[_0x62c0('0x46')]]){transfers[_0x62c0('0x6')][_0x26b829['transfereruniqueid']][_0x62c0('0x47')]=!![];}}catch(_0x588e58){utils[_0x62c0('0x16')](util[_0x62c0('0x3')](_0x62c0('0x48'),_0x26b829[_0x62c0('0x5')]),_0x588e58);}};
\ No newline at end of file
index 54d62d3..bebc6eb 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xc6fd=['[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transferercalleridname','transfereecalleridnum','transfereecalleridname','blind','blinds','transfereruniqueid','attendedtransfer','[%s][transfers][attendedtransfer]','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','transfertargetcalleridname','secondtransfererconnectedlinenum','origtransfereraccountcode','secondtransferercontext','secondtransfererexten','origtransfererlinkedid','origtransferercontext','origtransfererexten','attended','isNil','transfereechannel','assign','transfertargetchannel','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','transfertargetlinkedid','error','lodash','util','./utils','info','[%s][transfers][writeDB]\x20type:%s','type','origtransfereruniqueid','uniqueid','CreateVoiceTransferReport','debug','format'];(function(_0x458d43,_0x583fba){var _0x3860e8=function(_0x26f8ff){while(--_0x26f8ff){_0x458d43['push'](_0x458d43['shift']());}};_0x3860e8(++_0x583fba);}(_0xc6fd,0x1e4));var _0xdc6f=function(_0x4c61d2,_0x39aecc){_0x4c61d2=_0x4c61d2-0x0;var _0x9d2bbc=_0xc6fd[_0x4c61d2];return _0x9d2bbc;};'use strict';var _=require(_0xdc6f('0x0'));var util=require(_0xdc6f('0x1'));var utils=require(_0xdc6f('0x2'));function writeDB(_0x12db85){utils[_0xdc6f('0x3')](util['format'](_0xdc6f('0x4'),_0x12db85[_0xdc6f('0x5')]==='attended'?_0x12db85[_0xdc6f('0x6')]:_0x12db85[_0xdc6f('0x7')],_0x12db85['type']));utils['request'](_0xdc6f('0x8'),_0x12db85);}exports['blinds']={};exports['blindtransfer']=function(_0x563941){try{utils[_0xdc6f('0x9')](util[_0xdc6f('0xa')](_0xdc6f('0xb'),_0x563941['uniqueid']),_0x563941);utils[_0xdc6f('0x3')](util['format'](_0xdc6f('0xc'),_0x563941[_0xdc6f('0x7')],_0x563941[_0xdc6f('0xd')],_0x563941[_0xdc6f('0xe')],_0x563941[_0xdc6f('0xf')],_0x563941[_0xdc6f('0x10')]));_0x563941[_0xdc6f('0x5')]=_0xdc6f('0x11');exports[_0xdc6f('0x12')][_0x563941[_0xdc6f('0x13')]]=_0x563941;writeDB(_0x563941);}catch(_0x219194){utils['error'](util[_0xdc6f('0xa')]('[%s][transfers][blindtransfer]',_0x563941[_0xdc6f('0x7')]),_0x219194);}};exports[_0xdc6f('0x14')]=function(_0x476864){try{utils[_0xdc6f('0x9')](util[_0xdc6f('0xa')](_0xdc6f('0x15'),_0x476864['origtransfereruniqueid']),_0x476864);utils[_0xdc6f('0x3')](util[_0xdc6f('0xa')]('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0x476864[_0xdc6f('0x6')],_0x476864[_0xdc6f('0x16')],_0x476864[_0xdc6f('0x17')],_0x476864[_0xdc6f('0x18')],_0x476864[_0xdc6f('0x19')]));_0x476864=_['assign'](_0x476864,{'transfererchannel':_0x476864['origtransfererchannel'],'transferercalleridnum':_0x476864['origtransferercalleridnum'],'transferercalleridname':_0x476864[_0xdc6f('0x17')],'transfererconnectedlinenum':_0x476864[_0xdc6f('0x1a')],'transfererconnectedlinename':_0x476864['secondtransfererconnectedlinename'],'transfereraccountcode':_0x476864[_0xdc6f('0x1b')],'transferercontext':_0x476864[_0xdc6f('0x1c')],'transfererexten':_0x476864[_0xdc6f('0x1d')],'transfererlinkedid':_0x476864[_0xdc6f('0x1e')],'context':_0x476864[_0xdc6f('0x1f')],'extension':_0x476864[_0xdc6f('0x20')],'type':_0xdc6f('0x21')});if(_[_0xdc6f('0x22')](_0x476864[_0xdc6f('0x23')])){_0x476864=_[_0xdc6f('0x24')](_0x476864,{'transfereechannel':_0x476864[_0xdc6f('0x25')],'transfereecalleridnum':_0x476864['transfertargetcalleridnum'],'transfereecalleridname':_0x476864[_0xdc6f('0x19')],'transfereeconnectedlinenum':_0x476864[_0xdc6f('0x26')],'transfereeconnectedlinename':_0x476864[_0xdc6f('0x27')],'transfereeaccountcode':_0x476864[_0xdc6f('0x28')],'transfereecontext':_0x476864[_0xdc6f('0x29')],'transfereeexten':_0x476864[_0xdc6f('0x2a')],'transfereelinkedid':_0x476864[_0xdc6f('0x2b')]});}writeDB(_0x476864);}catch(_0x6139a9){utils[_0xdc6f('0x2c')](util[_0xdc6f('0xa')](_0xdc6f('0x15'),_0x476864[_0xdc6f('0x6')]),_0x6139a9);}};
\ No newline at end of file
+var _0x5705=['transfertargetcalleridname','transfertargetconnectedlinenum','transfertargetconnectedlinename','transfertargetaccountcode','transfertargetcontext','transfertargetexten','lodash','util','info','format','[%s][transfers][writeDB]\x20type:%s','attended','origtransfereruniqueid','uniqueid','type','request','CreateVoiceTransferReport','blindtransfer','[%s][transfers][blindtransfer]','[%s][transfers][blindtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s','transferercalleridnum','transfereecalleridnum','transfereecalleridname','blind','blinds','transfereruniqueid','error','attendedtransfer','[%s][transfers][attendedtransfer]','origtransferercalleridnum','origtransferercalleridname','transfertargetcalleridnum','assign','origtransfererchannel','secondtransfererconnectedlinenum','secondtransfererconnectedlinename','origtransferercontext','origtransfererexten','transfereechannel','transfertargetchannel'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0x5705,0x196));var _0x5570=function(_0x2a83af,_0x4fa9ed){_0x2a83af=_0x2a83af-0x0;var _0x2e1648=_0x5705[_0x2a83af];return _0x2e1648;};'use strict';var _=require(_0x5570('0x0'));var util=require(_0x5570('0x1'));var utils=require('./utils');function writeDB(_0x5dd12c){utils[_0x5570('0x2')](util[_0x5570('0x3')](_0x5570('0x4'),_0x5dd12c['type']===_0x5570('0x5')?_0x5dd12c[_0x5570('0x6')]:_0x5dd12c[_0x5570('0x7')],_0x5dd12c[_0x5570('0x8')]));utils[_0x5570('0x9')](_0x5570('0xa'),_0x5dd12c);}exports['blinds']={};exports[_0x5570('0xb')]=function(_0x207ead){try{utils['debug'](util[_0x5570('0x3')](_0x5570('0xc'),_0x207ead[_0x5570('0x7')]),_0x207ead);utils[_0x5570('0x2')](util[_0x5570('0x3')](_0x5570('0xd'),_0x207ead[_0x5570('0x7')],_0x207ead[_0x5570('0xe')],_0x207ead['transferercalleridname'],_0x207ead[_0x5570('0xf')],_0x207ead[_0x5570('0x10')]));_0x207ead[_0x5570('0x8')]=_0x5570('0x11');exports[_0x5570('0x12')][_0x207ead[_0x5570('0x13')]]=_0x207ead;writeDB(_0x207ead);}catch(_0xbb2596){utils[_0x5570('0x14')](util[_0x5570('0x3')](_0x5570('0xc'),_0x207ead[_0x5570('0x7')]),_0xbb2596);}};exports[_0x5570('0x15')]=function(_0xaff461){try{utils['debug'](util[_0x5570('0x3')](_0x5570('0x16'),_0xaff461[_0x5570('0x6')]),_0xaff461);utils['info'](util[_0x5570('0x3')]('[%s][transfers][attendedtransfer]\x20transferercalleridnum:%s\x20transferercalleridname:%s\x20transfereecalleridnum:%s\x20transfereecalleridname:%s',_0xaff461[_0x5570('0x6')],_0xaff461[_0x5570('0x17')],_0xaff461[_0x5570('0x18')],_0xaff461[_0x5570('0x19')],_0xaff461['transfertargetcalleridname']));_0xaff461=_[_0x5570('0x1a')](_0xaff461,{'transfererchannel':_0xaff461[_0x5570('0x1b')],'transferercalleridnum':_0xaff461[_0x5570('0x17')],'transferercalleridname':_0xaff461[_0x5570('0x18')],'transfererconnectedlinenum':_0xaff461[_0x5570('0x1c')],'transfererconnectedlinename':_0xaff461[_0x5570('0x1d')],'transfereraccountcode':_0xaff461['origtransfereraccountcode'],'transferercontext':_0xaff461['secondtransferercontext'],'transfererexten':_0xaff461['secondtransfererexten'],'transfererlinkedid':_0xaff461['origtransfererlinkedid'],'context':_0xaff461[_0x5570('0x1e')],'extension':_0xaff461[_0x5570('0x1f')],'type':_0x5570('0x5')});if(_['isNil'](_0xaff461[_0x5570('0x20')])){_0xaff461=_[_0x5570('0x1a')](_0xaff461,{'transfereechannel':_0xaff461[_0x5570('0x21')],'transfereecalleridnum':_0xaff461[_0x5570('0x19')],'transfereecalleridname':_0xaff461[_0x5570('0x22')],'transfereeconnectedlinenum':_0xaff461[_0x5570('0x23')],'transfereeconnectedlinename':_0xaff461[_0x5570('0x24')],'transfereeaccountcode':_0xaff461[_0x5570('0x25')],'transfereecontext':_0xaff461[_0x5570('0x26')],'transfereeexten':_0xaff461[_0x5570('0x27')],'transfereelinkedid':_0xaff461['transfertargetlinkedid']});}writeDB(_0xaff461);}catch(_0x1b3f98){utils['error'](util[_0x5570('0x3')](_0x5570('0x16'),_0xaff461[_0x5570('0x6')]),_0x1b3f98);}};
\ No newline at end of file
index 69e4b37..b53857e 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x19d1=['client','xdr','info','inspect','debug','error','request','then','catch','GetUser','internal','name','[utils][getUser]\x20where:%s','stringify','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','notfound','[utils][getUserByInternal]','getUserByInterface','[utils][getUserByInterface]\x20interface:%s\x20%s','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]\x20name:%s\x20%s','getVoiceQueueByName','GetVoiceQueue','acw','acwTimeout','[utils][getVoiceQueueByName]\x20name:%s\x20%s','[utils][getVoiceQueueByName]','add','seconds','format','subtractTime','subtract','YYYY-MM-DD\x20HH:mm:ss','diffTime','sumTime','isAfter','isBefore','jayson/promise'];(function(_0x24d726,_0x4c5428){var _0x41965d=function(_0x20481a){while(--_0x20481a){_0x24d726['push'](_0x24d726['shift']());}};_0x41965d(++_0x4c5428);}(_0x19d1,0xd6));var _0x119d=function(_0x1a96bb,_0x25bd16){_0x1a96bb=_0x1a96bb-0x0;var _0x59206a=_0x19d1[_0x1a96bb];return _0x59206a;};'use strict';var BPromise=require('bluebird');var jayson=require(_0x119d('0x0'));var moment=require('moment');var util=require('util');var client=jayson[_0x119d('0x1')]['http']({'port':0x2329});var logger=require('../../config/logger')(_0x119d('0x2'));exports[_0x119d('0x3')]=function(_0x5e9cfc,_0x52ce16){logger['info'](_0x5e9cfc,_0x52ce16?util[_0x119d('0x4')](_0x52ce16,{'showHidden':![],'depth':null}):'');};exports[_0x119d('0x5')]=function(_0x3df733,_0x34127c){logger[_0x119d('0x5')](_0x3df733,_0x34127c?util[_0x119d('0x4')](_0x34127c,{'showHidden':![],'depth':null}):'');};exports[_0x119d('0x6')]=function(_0x56a310,_0x364a87){logger[_0x119d('0x6')](_0x56a310,_0x364a87?util[_0x119d('0x4')](_0x364a87,{'showHidden':![],'depth':null}):'');};exports[_0x119d('0x7')]=function(_0x5548df,_0x5f24c7){return client[_0x119d('0x7')](_0x5548df,{'body':_0x5f24c7})[_0x119d('0x8')](function(_0x131a18){logger[_0x119d('0x5')]('[utils][request]\x20name:%s',_0x5548df,_0x131a18?util[_0x119d('0x4')](_0x131a18,{'showHidden':![],'depth':null}):'');})[_0x119d('0x9')](function(_0x44e281){logger['error']('[utils][request]\x20name:%s',_0x5548df,_0x44e281?util[_0x119d('0x4')](_0x44e281,{'showHidden':![],'depth':null}):'');});};function getUser(_0x42cdef){return client[_0x119d('0x7')](_0x119d('0xa'),{'options':{'raw':!![],'attributes':['id',_0x119d('0xb'),_0x119d('0xc'),'interface'],'where':_0x42cdef,'limit':0x1}})[_0x119d('0x8')](function(_0x5022c2){logger['debug'](_0x119d('0xd'),JSON[_0x119d('0xe')](_0x42cdef),_0x5022c2?util[_0x119d('0x4')](_0x5022c2,{'showHidden':![],'depth':null}):'');return _0x5022c2[_0x119d('0xf')][_0x119d('0x10')]?_0x5022c2[_0x119d('0xf')][0x0]:null;});}exports[_0x119d('0x11')]=function(_0x5ed1a6){return new BPromise(function(_0x465cb2,_0x544784){if(_0x5ed1a6){return getUser({'internal':_0x5ed1a6})[_0x119d('0x8')](function(_0x5896c1){logger[_0x119d('0x3')](_0x119d('0x12'),_0x5ed1a6,_0x5896c1?_0x119d('0x13'):_0x119d('0x14'));return _0x465cb2(_0x5896c1);})[_0x119d('0x9')](function(_0x509635){logger['error'](_0x119d('0x15'),_0x509635?util[_0x119d('0x4')](_0x509635,{'showHidden':![],'depth':null}):'');return _0x465cb2(null);});}return _0x465cb2(null);});};exports[_0x119d('0x16')]=function(_0x5020bf){return new BPromise(function(_0x27db0a,_0x25db82){if(_0x5020bf){return getUser({'interface':_0x5020bf})[_0x119d('0x8')](function(_0x58245b){logger['info'](_0x119d('0x17'),_0x5020bf,_0x58245b?_0x119d('0x13'):'notfound');return _0x27db0a(_0x58245b);})[_0x119d('0x9')](function(_0x5e07aa){logger[_0x119d('0x6')](_0x119d('0x18'),_0x5e07aa?util[_0x119d('0x4')](_0x5e07aa,{'showHidden':![],'depth':null}):'');return _0x27db0a(null);});}return _0x27db0a(null);});};exports[_0x119d('0x19')]=function(_0x1a04e4){return new BPromise(function(_0x4fd794,_0x28a56e){if(_0x1a04e4){return getUser({'name':_0x1a04e4})[_0x119d('0x8')](function(_0x38ba40){logger[_0x119d('0x3')](_0x119d('0x1a'),_0x1a04e4,_0x38ba40?_0x119d('0x13'):_0x119d('0x14'));return _0x4fd794(_0x38ba40);})['catch'](function(_0x11bcb2){logger[_0x119d('0x6')]('[utils][getUserByName]',_0x11bcb2?util[_0x119d('0x4')](_0x11bcb2,{'showHidden':![],'depth':null}):'');return _0x4fd794(null);});}return _0x4fd794(null);});};exports[_0x119d('0x1b')]=function(_0xbf08bc){return new BPromise(function(_0x569358,_0x573d50){if(_0xbf08bc){return client[_0x119d('0x7')](_0x119d('0x1c'),{'options':{'raw':!![],'attributes':['id',_0x119d('0xc'),'type',_0x119d('0x1d'),_0x119d('0x1e')],'where':{'name':_0xbf08bc},'limit':0x1}})[_0x119d('0x8')](function(_0x29cab8){logger[_0x119d('0x5')]('[utils][getVoiceQueueByName]\x20name:%s',_0xbf08bc,_0x29cab8?util[_0x119d('0x4')](_0x29cab8,{'showHidden':![],'depth':null}):'');logger['info'](_0x119d('0x1f'),_0xbf08bc,_0x29cab8?'found':_0x119d('0x14'));return _0x569358(_0x29cab8[_0x119d('0xf')][_0x119d('0x10')]?_0x29cab8[_0x119d('0xf')][0x0]:null);})[_0x119d('0x9')](function(_0x3991fe){logger[_0x119d('0x6')](_0x119d('0x20'),_0x3991fe?util[_0x119d('0x4')](_0x3991fe,{'showHidden':![],'depth':null}):'');return _0x569358(null);});}return _0x569358(null);});};exports['addTime']=function(_0x32fd6b,_0x2a85c6){return moment(_0x32fd6b)[_0x119d('0x21')](_0x2a85c6,_0x119d('0x22'))[_0x119d('0x23')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x119d('0x24')]=function(_0xb2421e,_0xc49ec3){return moment(_0xb2421e)[_0x119d('0x25')](_0xc49ec3,_0x119d('0x22'))[_0x119d('0x23')](_0x119d('0x26'));};exports[_0x119d('0x27')]=function(_0x1e062e,_0x5da885){return moment(_0x1e062e)['diff'](moment(_0x5da885),_0x119d('0x22'));};exports[_0x119d('0x28')]=function(_0x59ebc8,_0x41b16a){return parseInt(_0x59ebc8,0xa)+parseInt(_0x41b16a,0xa);};exports['now']=function(){return moment()[_0x119d('0x23')](_0x119d('0x26'));};exports['isAfter']=function(_0x944ac2,_0x208722){if(_0x208722){return moment(_0x944ac2)[_0x119d('0x29')](_0x208722);}return!![];};exports[_0x119d('0x2a')]=function(_0xb782d0,_0x1ea82c){if(_0x1ea82c){return moment(_0xb782d0)[_0x119d('0x2a')](_0x1ea82c);}else if(_0xb782d0){return!![];}return![];};
\ No newline at end of file
+var _0x0f25=['diffTime','isAfter','isBefore','bluebird','jayson/promise','util','client','http','../../config/logger','info','inspect','debug','error','request','then','[utils][request]\x20name:%s','catch','GetUser','name','interface','[utils][getUser]\x20where:%s','stringify','result','length','getUserByInternal','[utils][getUserByInternal]\x20internal:%s\x20%s','found','[utils][getUserByInternal]','[utils][getUserByInterface]\x20interface:%s\x20%s','notfound','[utils][getUserByInterface]','getUserByName','[utils][getUserByName]','type','acw','[utils][getVoiceQueueByName]\x20name:%s','[utils][getVoiceQueueByName]','addTime','add','seconds','YYYY-MM-DD\x20HH:mm:ss','subtractTime','subtract','format'];(function(_0x4005fe,_0x1fc3c1){var _0x50022d=function(_0x2ce718){while(--_0x2ce718){_0x4005fe['push'](_0x4005fe['shift']());}};_0x50022d(++_0x1fc3c1);}(_0x0f25,0xdf));var _0x50f2=function(_0x47579b,_0x4ea44e){_0x47579b=_0x47579b-0x0;var _0x4e47f5=_0x0f25[_0x47579b];return _0x4e47f5;};'use strict';var BPromise=require(_0x50f2('0x0'));var jayson=require(_0x50f2('0x1'));var moment=require('moment');var util=require(_0x50f2('0x2'));var client=jayson[_0x50f2('0x3')][_0x50f2('0x4')]({'port':0x2329});var logger=require(_0x50f2('0x5'))('xdr');exports['info']=function(_0x19e72e,_0x101e24){logger[_0x50f2('0x6')](_0x19e72e,_0x101e24?util[_0x50f2('0x7')](_0x101e24,{'showHidden':![],'depth':null}):'');};exports[_0x50f2('0x8')]=function(_0x379d0b,_0x19e3ce){logger[_0x50f2('0x8')](_0x379d0b,_0x19e3ce?util[_0x50f2('0x7')](_0x19e3ce,{'showHidden':![],'depth':null}):'');};exports[_0x50f2('0x9')]=function(_0x519b84,_0x58ce92){logger[_0x50f2('0x9')](_0x519b84,_0x58ce92?util[_0x50f2('0x7')](_0x58ce92,{'showHidden':![],'depth':null}):'');};exports[_0x50f2('0xa')]=function(_0x134bb4,_0xaca1fd){return client[_0x50f2('0xa')](_0x134bb4,{'body':_0xaca1fd})[_0x50f2('0xb')](function(_0x31cb73){logger[_0x50f2('0x8')](_0x50f2('0xc'),_0x134bb4,_0x31cb73?util[_0x50f2('0x7')](_0x31cb73,{'showHidden':![],'depth':null}):'');})[_0x50f2('0xd')](function(_0x2c513f){logger[_0x50f2('0x9')](_0x50f2('0xc'),_0x134bb4,_0x2c513f?util['inspect'](_0x2c513f,{'showHidden':![],'depth':null}):'');});};function getUser(_0x437fb7){return client[_0x50f2('0xa')](_0x50f2('0xe'),{'options':{'raw':!![],'attributes':['id','internal',_0x50f2('0xf'),_0x50f2('0x10')],'where':_0x437fb7,'limit':0x1}})['then'](function(_0x5c6c2b){logger['debug'](_0x50f2('0x11'),JSON[_0x50f2('0x12')](_0x437fb7),_0x5c6c2b?util[_0x50f2('0x7')](_0x5c6c2b,{'showHidden':![],'depth':null}):'');return _0x5c6c2b[_0x50f2('0x13')][_0x50f2('0x14')]?_0x5c6c2b[_0x50f2('0x13')][0x0]:null;});}exports[_0x50f2('0x15')]=function(_0xedbb5a){return new BPromise(function(_0x3caca9,_0x36a5f7){if(_0xedbb5a){return getUser({'internal':_0xedbb5a})['then'](function(_0x173ce6){logger[_0x50f2('0x6')](_0x50f2('0x16'),_0xedbb5a,_0x173ce6?_0x50f2('0x17'):'notfound');return _0x3caca9(_0x173ce6);})[_0x50f2('0xd')](function(_0x1779cb){logger['error'](_0x50f2('0x18'),_0x1779cb?util[_0x50f2('0x7')](_0x1779cb,{'showHidden':![],'depth':null}):'');return _0x3caca9(null);});}return _0x3caca9(null);});};exports['getUserByInterface']=function(_0x4b6eda){return new BPromise(function(_0x2592bd,_0x234703){if(_0x4b6eda){return getUser({'interface':_0x4b6eda})[_0x50f2('0xb')](function(_0x54a53d){logger['info'](_0x50f2('0x19'),_0x4b6eda,_0x54a53d?_0x50f2('0x17'):_0x50f2('0x1a'));return _0x2592bd(_0x54a53d);})['catch'](function(_0x5523bd){logger[_0x50f2('0x9')](_0x50f2('0x1b'),_0x5523bd?util[_0x50f2('0x7')](_0x5523bd,{'showHidden':![],'depth':null}):'');return _0x2592bd(null);});}return _0x2592bd(null);});};exports[_0x50f2('0x1c')]=function(_0x549f7f){return new BPromise(function(_0x4a4577,_0x4b26ad){if(_0x549f7f){return getUser({'name':_0x549f7f})[_0x50f2('0xb')](function(_0x13da77){logger[_0x50f2('0x6')]('[utils][getUserByName]\x20name:%s\x20%s',_0x549f7f,_0x13da77?'found':_0x50f2('0x1a'));return _0x4a4577(_0x13da77);})[_0x50f2('0xd')](function(_0x29ce54){logger[_0x50f2('0x9')](_0x50f2('0x1d'),_0x29ce54?util['inspect'](_0x29ce54,{'showHidden':![],'depth':null}):'');return _0x4a4577(null);});}return _0x4a4577(null);});};exports['getVoiceQueueByName']=function(_0xbb398c){return new BPromise(function(_0x5c6703,_0x24df1f){if(_0xbb398c){return client[_0x50f2('0xa')]('GetVoiceQueue',{'options':{'raw':!![],'attributes':['id',_0x50f2('0xf'),_0x50f2('0x1e'),_0x50f2('0x1f'),'acwTimeout'],'where':{'name':_0xbb398c},'limit':0x1}})[_0x50f2('0xb')](function(_0x55cf78){logger[_0x50f2('0x8')](_0x50f2('0x20'),_0xbb398c,_0x55cf78?util[_0x50f2('0x7')](_0x55cf78,{'showHidden':![],'depth':null}):'');logger[_0x50f2('0x6')]('[utils][getVoiceQueueByName]\x20name:%s\x20%s',_0xbb398c,_0x55cf78?_0x50f2('0x17'):_0x50f2('0x1a'));return _0x5c6703(_0x55cf78[_0x50f2('0x13')]['length']?_0x55cf78[_0x50f2('0x13')][0x0]:null);})[_0x50f2('0xd')](function(_0x4ba4c2){logger[_0x50f2('0x9')](_0x50f2('0x21'),_0x4ba4c2?util[_0x50f2('0x7')](_0x4ba4c2,{'showHidden':![],'depth':null}):'');return _0x5c6703(null);});}return _0x5c6703(null);});};exports[_0x50f2('0x22')]=function(_0x320807,_0x2e7e7e){return moment(_0x320807)[_0x50f2('0x23')](_0x2e7e7e,_0x50f2('0x24'))['format'](_0x50f2('0x25'));};exports[_0x50f2('0x26')]=function(_0x2801eb,_0xde6926){return moment(_0x2801eb)[_0x50f2('0x27')](_0xde6926,'seconds')[_0x50f2('0x28')]('YYYY-MM-DD\x20HH:mm:ss');};exports[_0x50f2('0x29')]=function(_0x253d6b,_0x2dd13a){return moment(_0x253d6b)['diff'](moment(_0x2dd13a),_0x50f2('0x24'));};exports['sumTime']=function(_0x51b501,_0x5ed302){return parseInt(_0x51b501,0xa)+parseInt(_0x5ed302,0xa);};exports['now']=function(){return moment()[_0x50f2('0x28')](_0x50f2('0x25'));};exports[_0x50f2('0x2a')]=function(_0x31b6ff,_0x4b8eb4){if(_0x4b8eb4){return moment(_0x31b6ff)['isAfter'](_0x4b8eb4);}return!![];};exports[_0x50f2('0x2b')]=function(_0x200004,_0x31bd7a){if(_0x31bd7a){return moment(_0x200004)['isBefore'](_0x31bd7a);}else if(_0x200004){return!![];}return![];};
\ No newline at end of file
index 94c3596..43508d0 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x25d1=['data','timestamp','api','auth','set','use','logger','body','\x20body=%s','format','method','headers','x-forwarded-for','connection','remoteAddress','url','statusCode','responseTime','role','device','agent_id','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)','other','agent_name','setupLoggers','lodash','path','util','./loggers','./safe-template','safeTemplate','./mask-sensitive-data','maskSensitiveData','join','/var','log','xcally','client','name','user','then','no-user'];(function(_0x321bb2,_0x202794){var _0x9c12ed=function(_0x263dd3){while(--_0x263dd3){_0x321bb2['push'](_0x321bb2['shift']());}};_0x9c12ed(++_0x202794);}(_0x25d1,0x6d));var _0x125d=function(_0x1e9dcc,_0x461662){_0x1e9dcc=_0x1e9dcc-0x0;var _0x49637d=_0x25d1[_0x1e9dcc];return _0x49637d;};var fs=require('fs-extra');var _=require(_0x125d('0x0'));var ewinston=require('express-winston');var path=require(_0x125d('0x1'));var util=require(_0x125d('0x2'));var fileLogger=require(_0x125d('0x3'))['fileLogger'];var safeTemplate=require(_0x125d('0x4'))[_0x125d('0x5')];var maskSensitiveData=require(_0x125d('0x6'))[_0x125d('0x7')];function ClientSideLogger(){function _0x2c5371(_0x1f9b8c){var _0x1fe204=path[_0x125d('0x8')](_0x125d('0x9'),_0x125d('0xa'),_0x125d('0xb'));var _0x473de4=path[_0x125d('0x8')](_0x125d('0xc'),_0x1f9b8c['role']+'-'+_0x1f9b8c[_0x125d('0xd')]);return fs['ensureDir'](path['join'](_0x1fe204,_0x473de4))['then'](function(){var _0x244f6b=fileLogger(_0x125d('0xc'),path[_0x125d('0x8')](_0x1fe204,_0x473de4));return _0x244f6b;})['catch'](function(_0x1a0729){throw _0x1a0729;});}this['log']=function(_0x1a6de3,_0x407607,_0x30165a,_0x620c60){return _0x2c5371(_0x1a6de3[_0x125d('0xe')])[_0x125d('0xf')](function(_0x1c0931){var _0x567a14=_0x1c0931[_0x407607];return _0x567a14;})[_0x125d('0xf')](function(_0x59e6e0){var _0x5330d8=_0x1a6de3['user']?_0x1a6de3[_0x125d('0xe')]['id']:_0x125d('0x10');var _0x35ed55=_0x620c60[_0x125d('0x11')];var _0x4c4d1d=_0x620c60[_0x125d('0x12')];var _0x18ec45=new Date(Number(_0x4c4d1d));return _0x59e6e0(_0x5330d8,_0x18ec45,_0x30165a,_0x35ed55);})['catch'](function(_0x5ae25d){fileLogger(_0x125d('0xc'))['error'](_0x5ae25d);});};}function setupLoggers(_0x4a072e){return new Promise(function(_0x21cd03){var _0x55501d=new ClientSideLogger();var _0x50b535=fileLogger(_0x125d('0x13'));var _0x5e9bf6=fileLogger(_0x125d('0x14'));_0x4a072e[_0x125d('0x15')]('client-side-logger',_0x55501d);_0x4a072e[_0x125d('0x16')](ewinston[_0x125d('0x17')]({'winstonInstance':_0x50b535,'meta':![],'statusLevels':!![],'msg':function(_0x12307f,_0x1de4ff){var _0x4ca998='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s';if(!_['isEmpty'](_0x12307f[_0x125d('0x18')])){_0x4ca998+=_0x125d('0x19');var _0xedc87c=_0x12307f[_0x125d('0x18')];maskSensitiveData(_0xedc87c);}return safeTemplate(util[_0x125d('0x1a')](_0x4ca998,_0x12307f[_0x125d('0x1b')],_0x12307f[_0x125d('0x1c')][_0x125d('0x1d')]?_0x12307f[_0x125d('0x1c')][_0x125d('0x1d')]:_0x12307f[_0x125d('0x1e')][_0x125d('0x1f')]||_0x12307f['ip'],_0x12307f[_0x125d('0x20')],_0x1de4ff[_0x125d('0x21')],_0x1de4ff[_0x125d('0x22')],_0x12307f['user']?_0x12307f[_0x125d('0xe')]['id']:null,_0x12307f[_0x125d('0xe')]?_0x12307f['user'][_0x125d('0xd')]:null,_0x12307f[_0x125d('0xe')]?_0x12307f[_0x125d('0xe')][_0x125d('0x23')]:null,_0xedc87c?util['inspect'](_0xedc87c,![],null):''));}}));_0x4a072e[_0x125d('0x16')](ewinston[_0x125d('0x17')]({'winstonInstance':_0x5e9bf6,'meta':![],'statusLevels':!![],'msg':function(_0x410036,_0x38f77d){var _0x35951f='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s';if(_0x410036[_0x125d('0x18')]&&_0x410036[_0x125d('0x18')][_0x125d('0x24')]&&_0x410036['body'][_0x125d('0x25')]){_0x35951f=_0x125d('0x26');}return util[_0x125d('0x1a')](_0x35951f,_0x410036[_0x125d('0x1b')],_0x410036['headers'][_0x125d('0x1d')]?_0x410036['headers']['x-forwarded-for']:_0x410036[_0x125d('0x1e')][_0x125d('0x1f')]||_0x410036['ip'],_0x410036['url'],_0x38f77d[_0x125d('0x21')],_0x38f77d[_0x125d('0x22')],_0x410036[_0x125d('0xe')]?_0x410036[_0x125d('0xe')]['id']:null,_0x410036[_0x125d('0xe')]?_0x410036[_0x125d('0xe')]['name']:null,_0x410036['user']?_0x410036[_0x125d('0xe')][_0x125d('0x23')]:null,_0x410036[_0x125d('0x18')]&&_0x410036[_0x125d('0x18')][_0x125d('0x24')]?_0x410036[_0x125d('0x18')][_0x125d('0x24')]:_0x125d('0x27'),_0x410036[_0x125d('0x18')]&&_0x410036['body'][_0x125d('0x25')]?_0x410036['body'][_0x125d('0x25')]:'',_0x410036[_0x125d('0x18')]&&_0x410036[_0x125d('0x18')][_0x125d('0x28')]?_0x410036[_0x125d('0x18')][_0x125d('0x28')]:'');},'ignoreRoute':function(_0x360689){var _0x1171d2=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x1171d2['test'](_0x360689[_0x125d('0x20')]);}}));return _0x21cd03();});}exports[_0x125d('0x29')]=setupLoggers;
\ No newline at end of file
+var _0xe6e5=['body','\x20body=%s','format','method','headers','x-forwarded-for','connection','remoteAddress','url','statusCode','responseTime','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s','device','agent_id','other','agent_name','test','lodash','path','util','./loggers','safeTemplate','./mask-sensitive-data','maskSensitiveData','join','log','role','name','ensureDir','then','catch','user','no-user','data','timestamp','client','error','api','auth','use','logger','%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s'];(function(_0x49b207,_0x408ade){var _0x2dc8fa=function(_0x150975){while(--_0x150975){_0x49b207['push'](_0x49b207['shift']());}};_0x2dc8fa(++_0x408ade);}(_0xe6e5,0x8f));var _0x5e6e=function(_0x1b6c6d,_0x2983b0){_0x1b6c6d=_0x1b6c6d-0x0;var _0x290d9d=_0xe6e5[_0x1b6c6d];return _0x290d9d;};var fs=require('fs-extra');var _=require(_0x5e6e('0x0'));var ewinston=require('express-winston');var path=require(_0x5e6e('0x1'));var util=require(_0x5e6e('0x2'));var fileLogger=require(_0x5e6e('0x3'))['fileLogger'];var safeTemplate=require('./safe-template')[_0x5e6e('0x4')];var maskSensitiveData=require(_0x5e6e('0x5'))[_0x5e6e('0x6')];function ClientSideLogger(){function _0x28b928(_0x51a65d){var _0x2d1864=path[_0x5e6e('0x7')]('/var',_0x5e6e('0x8'),'xcally');var _0x3cb485=path[_0x5e6e('0x7')]('client',_0x51a65d[_0x5e6e('0x9')]+'-'+_0x51a65d[_0x5e6e('0xa')]);return fs[_0x5e6e('0xb')](path[_0x5e6e('0x7')](_0x2d1864,_0x3cb485))[_0x5e6e('0xc')](function(){var _0x4f79d2=fileLogger('client',path['join'](_0x2d1864,_0x3cb485));return _0x4f79d2;})[_0x5e6e('0xd')](function(_0x460279){throw _0x460279;});}this[_0x5e6e('0x8')]=function(_0x478f58,_0x304367,_0x3c858f,_0x1cda70){return _0x28b928(_0x478f58[_0x5e6e('0xe')])[_0x5e6e('0xc')](function(_0x50d8b6){var _0xb226d8=_0x50d8b6[_0x304367];return _0xb226d8;})['then'](function(_0x3a6dcf){var _0x32e704=_0x478f58[_0x5e6e('0xe')]?_0x478f58[_0x5e6e('0xe')]['id']:_0x5e6e('0xf');var _0x587554=_0x1cda70[_0x5e6e('0x10')];var _0x5c126e=_0x1cda70[_0x5e6e('0x11')];var _0x323986=new Date(Number(_0x5c126e));return _0x3a6dcf(_0x32e704,_0x323986,_0x3c858f,_0x587554);})[_0x5e6e('0xd')](function(_0x125c74){fileLogger(_0x5e6e('0x12'))[_0x5e6e('0x13')](_0x125c74);});};}function setupLoggers(_0x27bf4c){return new Promise(function(_0x2655a7){var _0xafc6df=new ClientSideLogger();var _0x421781=fileLogger(_0x5e6e('0x14'));var _0x58e9fb=fileLogger(_0x5e6e('0x15'));_0x27bf4c['set']('client-side-logger',_0xafc6df);_0x27bf4c[_0x5e6e('0x16')](ewinston[_0x5e6e('0x17')]({'winstonInstance':_0x421781,'meta':![],'statusLevels':!![],'msg':function(_0x1790c0,_0x4bb378){var _0x76d4c7=_0x5e6e('0x18');if(!_['isEmpty'](_0x1790c0[_0x5e6e('0x19')])){_0x76d4c7+=_0x5e6e('0x1a');var _0x5a3433=_0x1790c0[_0x5e6e('0x19')];maskSensitiveData(_0x5a3433);}return safeTemplate(util[_0x5e6e('0x1b')](_0x76d4c7,_0x1790c0[_0x5e6e('0x1c')],_0x1790c0[_0x5e6e('0x1d')]['x-forwarded-for']?_0x1790c0[_0x5e6e('0x1d')][_0x5e6e('0x1e')]:_0x1790c0[_0x5e6e('0x1f')][_0x5e6e('0x20')]||_0x1790c0['ip'],_0x1790c0[_0x5e6e('0x21')],_0x4bb378[_0x5e6e('0x22')],_0x4bb378[_0x5e6e('0x23')],_0x1790c0[_0x5e6e('0xe')]?_0x1790c0[_0x5e6e('0xe')]['id']:null,_0x1790c0['user']?_0x1790c0[_0x5e6e('0xe')][_0x5e6e('0xa')]:null,_0x1790c0['user']?_0x1790c0[_0x5e6e('0xe')][_0x5e6e('0x9')]:null,_0x5a3433?util['inspect'](_0x5a3433,![],null):''));}}));_0x27bf4c[_0x5e6e('0x16')](ewinston[_0x5e6e('0x17')]({'winstonInstance':_0x58e9fb,'meta':![],'statusLevels':!![],'msg':function(_0x142157,_0x6bbc50){var _0x22446e=_0x5e6e('0x24');if(_0x142157[_0x5e6e('0x19')]&&_0x142157[_0x5e6e('0x19')][_0x5e6e('0x25')]&&_0x142157[_0x5e6e('0x19')][_0x5e6e('0x26')]){_0x22446e='%s\x20%s\x20%s\x20%s\x20%sms\x20id=%s\x20name=%s\x20role=%s\x20device=%s\x20(id=%s\x20name=%s)';}return util[_0x5e6e('0x1b')](_0x22446e,_0x142157['method'],_0x142157[_0x5e6e('0x1d')][_0x5e6e('0x1e')]?_0x142157[_0x5e6e('0x1d')][_0x5e6e('0x1e')]:_0x142157[_0x5e6e('0x1f')][_0x5e6e('0x20')]||_0x142157['ip'],_0x142157[_0x5e6e('0x21')],_0x6bbc50[_0x5e6e('0x22')],_0x6bbc50[_0x5e6e('0x23')],_0x142157[_0x5e6e('0xe')]?_0x142157['user']['id']:null,_0x142157[_0x5e6e('0xe')]?_0x142157[_0x5e6e('0xe')][_0x5e6e('0xa')]:null,_0x142157[_0x5e6e('0xe')]?_0x142157['user'][_0x5e6e('0x9')]:null,_0x142157[_0x5e6e('0x19')]&&_0x142157[_0x5e6e('0x19')][_0x5e6e('0x25')]?_0x142157[_0x5e6e('0x19')][_0x5e6e('0x25')]:_0x5e6e('0x27'),_0x142157[_0x5e6e('0x19')]&&_0x142157['body'][_0x5e6e('0x26')]?_0x142157[_0x5e6e('0x19')]['agent_id']:'',_0x142157[_0x5e6e('0x19')]&&_0x142157[_0x5e6e('0x19')][_0x5e6e('0x28')]?_0x142157['body']['agent_name']:'');},'ignoreRoute':function(_0x249185){var _0x169314=/\/api\/users\/[0-9]+\/(login|logout)/gi;return!_0x169314[_0x5e6e('0x29')](_0x249185[_0x5e6e('0x21')]);}}));return _0x2655a7();});}exports['setupLoggers']=setupLoggers;
\ No newline at end of file
index 1e1f8b5..1ec9192 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x3f3c=['%s-%s','error','path','util','../config/environment','debugLevel','toLowerCase','info','redBG\x20white','red','bold\x20yellow','white','bold\x20white','bold\x20green','gray','bold\x20cyan','addColors','/var/log/xcally','join','format','message','{{{','replace','YYYY-MM-DD\x20HH:mm:ss','level','toUpperCase','}}}','meta','keys','stringify','Logger','transports','Console','warn','File'];(function(_0x1a6d81,_0x5ca8a8){var _0x13b334=function(_0x2d8e2a){while(--_0x2d8e2a){_0x1a6d81['push'](_0x1a6d81['shift']());}};_0x13b334(++_0x5ca8a8);}(_0x3f3c,0x183));var _0xc3f3=function(_0x168137,_0x527a71){_0x168137=_0x168137-0x0;var _0x3c8cef=_0x3f3c[_0x168137];return _0x3c8cef;};'use strict';var path=require(_0xc3f3('0x0'));var util=require(_0xc3f3('0x1'));var moment=require('moment');var winston=require('winston');var config=require(_0xc3f3('0x2'));var debugLevel=config[_0xc3f3('0x3')]?config['debugLevel'][_0xc3f3('0x4')]():_0xc3f3('0x5');var XC_LOG_LEVELS={'fatal':0x0,'error':0x0,'warn':0x1,'info':0x2,'print':0x2,'success':0x2,'http':0x3,'verbose':0x4,'debug':0x5,'silly':0x6};var XC_LOG_COLORS={'fatal':_0xc3f3('0x6'),'error':_0xc3f3('0x7'),'warn':_0xc3f3('0x8'),'info':_0xc3f3('0x9'),'print':_0xc3f3('0xa'),'success':_0xc3f3('0xb'),'http':_0xc3f3('0xc'),'verbose':'bold\x20magenta','debug':'bold\x20blue','silly':_0xc3f3('0xd')};winston[_0xc3f3('0xe')](XC_LOG_COLORS);function getLogFileName(_0x59adc9,_0x32a653,_0x2c3e43){var _0x2ec611=_0x59adc9||_0xc3f3('0xf');return path[_0xc3f3('0x10')](_0x2ec611,util[_0xc3f3('0x11')]('%s-%s.log',_0x32a653,_0x2c3e43));}function formatter(_0x3feadf,_0x22d2b1){_0x22d2b1[_0xc3f3('0x12')]=_0x22d2b1[_0xc3f3('0x12')]['replace'](/@@{/g,_0xc3f3('0x13'))[_0xc3f3('0x14')](/}@@/g,'}}}')[_0xc3f3('0x14')](/@{/g,'{{')[_0xc3f3('0x14')](/}@/g,'}}');return util[_0xc3f3('0x11')]('[%s]\x20[%s]\x20%s\x20-\x20%s',moment()[_0xc3f3('0x11')](_0xc3f3('0x15')),_0x22d2b1[_0xc3f3('0x16')][_0xc3f3('0x17')](),_0x3feadf,_0x22d2b1[_0xc3f3('0x12')]);}function fileFormat(_0x5c64ac,_0x36ecd6){_0x36ecd6['message']=_0x36ecd6[_0xc3f3('0x12')][_0xc3f3('0x14')](/@@{/g,_0xc3f3('0x13'))[_0xc3f3('0x14')](/}@@/g,_0xc3f3('0x18'))[_0xc3f3('0x14')](/@{/g,'{{')[_0xc3f3('0x14')](/}@/g,'}}');var _0x4ca0ca=_0x36ecd6[_0xc3f3('0x19')]&&Object[_0xc3f3('0x1a')](_0x36ecd6[_0xc3f3('0x19')])['length']?'\x0a\x09'+JSON[_0xc3f3('0x1b')](_0x36ecd6[_0xc3f3('0x19')]):'';return util['format']('[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s',moment()[_0xc3f3('0x11')](_0xc3f3('0x15')),_0x36ecd6[_0xc3f3('0x16')][_0xc3f3('0x17')](),_0x5c64ac,_0x36ecd6[_0xc3f3('0x12')],_0x4ca0ca);}function consoleLogger(){var _0x5048d3=new winston[(_0xc3f3('0x1c'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xc3f3('0x1d'))][(_0xc3f3('0x1e'))]({'level':_0xc3f3('0x1f'),'json':![],'formatter':function(_0x6eb6db){return formatter('',_0x6eb6db);}})]});return _0x5048d3;}function fileLogger(_0x42d78f,_0x3bada5){var _0x1d8d52=new winston[(_0xc3f3('0x1c'))]({'levels':XC_LOG_LEVELS,'transports':[new winston['transports'][(_0xc3f3('0x20'))]({'name':util[_0xc3f3('0x11')](_0xc3f3('0x21'),_0x42d78f,_0xc3f3('0x22')),'filename':getLogFileName(_0x3bada5,_0x42d78f,_0xc3f3('0x22')),'level':'error','json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x45a215){return fileFormat(_0x42d78f,_0x45a215);}}),new winston[(_0xc3f3('0x1d'))][(_0xc3f3('0x20'))]({'name':util[_0xc3f3('0x11')](_0xc3f3('0x21'),_0x42d78f,debugLevel),'filename':getLogFileName(_0x3bada5,_0x42d78f,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x3f2ca5){return fileFormat(_0x42d78f,_0x3f2ca5);}}),new winston['transports'][(_0xc3f3('0x1e'))]({'level':_0xc3f3('0x1f'),'json':![],'formatter':function(_0x520ad4){return fileFormat(_0x42d78f,_0x520ad4);}})]});return _0x1d8d52;}exports['consoleLogger']=consoleLogger;exports['fileLogger']=fileLogger;
\ No newline at end of file
+var _0x93bd=['bold\x20green','bold\x20magenta','bold\x20blue','bold\x20cyan','addColors','/var/log/xcally','join','%s-%s.log','message','replace','{{{','}}}','format','[%s]\x20[%s]\x20%s\x20-\x20%s','level','toUpperCase','meta','length','stringify','[%s]\x20[%s]\x20%s\x20-\x20%s\x20%s','Logger','transports','warn','File','%s-%s','error','Console','consoleLogger','util','winston','../config/environment','debugLevel','toLowerCase','info','redBG\x20white','red','bold\x20yellow','white','bold\x20white'];(function(_0x561f25,_0x2d95c1){var _0x150e4c=function(_0x266e99){while(--_0x266e99){_0x561f25['push'](_0x561f25['shift']());}};_0x150e4c(++_0x2d95c1);}(_0x93bd,0x1f0));var _0xd93b=function(_0x5a9896,_0x29fb94){_0x5a9896=_0x5a9896-0x0;var _0x4c5295=_0x93bd[_0x5a9896];return _0x4c5295;};'use strict';var path=require('path');var util=require(_0xd93b('0x0'));var moment=require('moment');var winston=require(_0xd93b('0x1'));var config=require(_0xd93b('0x2'));var debugLevel=config[_0xd93b('0x3')]?config[_0xd93b('0x3')][_0xd93b('0x4')]():_0xd93b('0x5');var XC_LOG_LEVELS={'fatal':0x0,'error':0x0,'warn':0x1,'info':0x2,'print':0x2,'success':0x2,'http':0x3,'verbose':0x4,'debug':0x5,'silly':0x6};var XC_LOG_COLORS={'fatal':_0xd93b('0x6'),'error':_0xd93b('0x7'),'warn':_0xd93b('0x8'),'info':_0xd93b('0x9'),'print':_0xd93b('0xa'),'success':_0xd93b('0xb'),'http':'gray','verbose':_0xd93b('0xc'),'debug':_0xd93b('0xd'),'silly':_0xd93b('0xe')};winston[_0xd93b('0xf')](XC_LOG_COLORS);function getLogFileName(_0x13ab23,_0x64d150,_0x41371c){var _0x234893=_0x13ab23||_0xd93b('0x10');return path[_0xd93b('0x11')](_0x234893,util['format'](_0xd93b('0x12'),_0x64d150,_0x41371c));}function formatter(_0x14dde4,_0x267dc2){_0x267dc2['message']=_0x267dc2[_0xd93b('0x13')][_0xd93b('0x14')](/@@{/g,_0xd93b('0x15'))[_0xd93b('0x14')](/}@@/g,_0xd93b('0x16'))[_0xd93b('0x14')](/@{/g,'{{')['replace'](/}@/g,'}}');return util[_0xd93b('0x17')](_0xd93b('0x18'),moment()[_0xd93b('0x17')]('YYYY-MM-DD\x20HH:mm:ss'),_0x267dc2[_0xd93b('0x19')][_0xd93b('0x1a')](),_0x14dde4,_0x267dc2['message']);}function fileFormat(_0x591c1d,_0x10cc6b){_0x10cc6b[_0xd93b('0x13')]=_0x10cc6b[_0xd93b('0x13')][_0xd93b('0x14')](/@@{/g,_0xd93b('0x15'))['replace'](/}@@/g,_0xd93b('0x16'))[_0xd93b('0x14')](/@{/g,'{{')[_0xd93b('0x14')](/}@/g,'}}');var _0x471721=_0x10cc6b[_0xd93b('0x1b')]&&Object['keys'](_0x10cc6b['meta'])[_0xd93b('0x1c')]?'\x0a\x09'+JSON[_0xd93b('0x1d')](_0x10cc6b[_0xd93b('0x1b')]):'';return util[_0xd93b('0x17')](_0xd93b('0x1e'),moment()[_0xd93b('0x17')]('YYYY-MM-DD\x20HH:mm:ss'),_0x10cc6b[_0xd93b('0x19')][_0xd93b('0x1a')](),_0x591c1d,_0x10cc6b[_0xd93b('0x13')],_0x471721);}function consoleLogger(){var _0x1de14d=new winston[(_0xd93b('0x1f'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xd93b('0x20'))]['Console']({'level':_0xd93b('0x21'),'json':![],'formatter':function(_0x154b35){return formatter('',_0x154b35);}})]});return _0x1de14d;}function fileLogger(_0x2653d4,_0x58084a){var _0x3a94fb=new winston[(_0xd93b('0x1f'))]({'levels':XC_LOG_LEVELS,'transports':[new winston[(_0xd93b('0x20'))][(_0xd93b('0x22'))]({'name':util[_0xd93b('0x17')](_0xd93b('0x23'),_0x2653d4,_0xd93b('0x24')),'filename':getLogFileName(_0x58084a,_0x2653d4,'error'),'level':_0xd93b('0x24'),'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x29b436){return fileFormat(_0x2653d4,_0x29b436);}}),new winston[(_0xd93b('0x20'))]['File']({'name':util[_0xd93b('0x17')](_0xd93b('0x23'),_0x2653d4,debugLevel),'filename':getLogFileName(_0x58084a,_0x2653d4,debugLevel),'level':debugLevel,'json':![],'maxsize':0xa00000,'maxFiles':0xa,'tailable':!![],'formatter':function(_0x1a1a50){return fileFormat(_0x2653d4,_0x1a1a50);}}),new winston[(_0xd93b('0x20'))][(_0xd93b('0x25'))]({'level':_0xd93b('0x21'),'json':![],'formatter':function(_0x2666e0){return fileFormat(_0x2653d4,_0x2666e0);}})]});return _0x3a94fb;}exports[_0xd93b('0x26')]=consoleLogger;exports['fileLogger']=fileLogger;
\ No newline at end of file
index 8d5787a..472b2a4 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4975=['replace','}@@','includes','exports','maskSensitiveData','lodash','password','newPassword','apiKey','firstName','lastName','street','phone','mobile','fax','email','clientSecret','code','accessKey','tenantId','channelSecret','accessTokenSecret','authToken','consumerKey','consumerSecret','membername','calleridname','calleridnum','exten','accesskeyid','secretaccesskey','key','user','pass','accountSid','localstationid','dsn','secret','registry','isPlainObject','isArray','length','isString'];(function(_0x17b0d4,_0x377add){var _0x2d02c7=function(_0x56e627){while(--_0x56e627){_0x17b0d4['push'](_0x17b0d4['shift']());}};_0x2d02c7(++_0x377add);}(_0x4975,0x86));var _0x5497=function(_0x3db08e,_0x4fe404){_0x3db08e=_0x3db08e-0x0;var _0x20e923=_0x4975[_0x3db08e];return _0x20e923;};var _=require(_0x5497('0x0'));var sensitiveFields=['username',_0x5497('0x1'),_0x5497('0x2'),_0x5497('0x3'),_0x5497('0x4'),_0x5497('0x5'),_0x5497('0x6'),_0x5497('0x7'),_0x5497('0x8'),_0x5497('0x9'),_0x5497('0xa'),'clientId',_0x5497('0xb'),'securityToken',_0x5497('0xc'),_0x5497('0xd'),_0x5497('0xe'),'token',_0x5497('0xf'),'accessToken',_0x5497('0x10'),_0x5497('0x11'),_0x5497('0x12'),_0x5497('0x13'),_0x5497('0x14'),_0x5497('0x15'),_0x5497('0x16'),_0x5497('0x17'),'vidaooApiKey','clientEmail','privateKey',_0x5497('0x18'),_0x5497('0x19'),_0x5497('0x1a'),_0x5497('0x1b'),_0x5497('0x1c'),_0x5497('0x1d'),_0x5497('0x1e'),_0x5497('0x1f'),_0x5497('0x20'),_0x5497('0x21'),'oldPassword'];function maskSensitiveData(_0x11b0a9){const _0x4fb8e9=/(?!^)[\s\S](?!$)/g;if(_[_0x5497('0x22')](_0x11b0a9)){for(const _0x2bfd8a in _0x11b0a9){if(_[_0x5497('0x23')](_0x11b0a9[_0x2bfd8a])){for(let _0x3ce50b=0x0;_0x3ce50b<_0x11b0a9[_0x2bfd8a][_0x5497('0x24')];_0x3ce50b++){maskSensitiveData(_0x11b0a9[_0x2bfd8a][_0x3ce50b]);}}else if(_[_0x5497('0x22')](_0x11b0a9[_0x2bfd8a])){maskSensitiveData(_0x11b0a9[_0x2bfd8a]);}else if(_[_0x5497('0x25')](_0x11b0a9[_0x2bfd8a])){_0x11b0a9[_0x2bfd8a]=_0x11b0a9[_0x2bfd8a]['replace'](/{{{/g,'@@{')[_0x5497('0x26')](/}}}/g,_0x5497('0x27'))[_0x5497('0x26')](/{{/g,'@{')['replace'](/}}/g,'}@');if(_[_0x5497('0x28')](sensitiveFields,_0x2bfd8a)){_0x11b0a9[_0x2bfd8a]=_0x11b0a9[_0x2bfd8a][_0x5497('0x26')](_0x4fb8e9,'*');}}}}}module[_0x5497('0x29')][_0x5497('0x2a')]=maskSensitiveData;
\ No newline at end of file
+var _0x0b0e=['}@@','lodash','password','apiKey','firstName','lastName','street','phone','mobile','fax','email','clientId','clientSecret','securityToken','tenantId','token','channelSecret','accessToken','authToken','consumerKey','membername','calleridname','exten','vidaooApiKey','clientEmail','accesskeyid','secretaccesskey','key','user','pass','localstationid','dsn','secret','registry','oldPassword','isArray','length','isString','replace'];(function(_0xa694e0,_0x446e26){var _0x34fc0a=function(_0x330e88){while(--_0x330e88){_0xa694e0['push'](_0xa694e0['shift']());}};_0x34fc0a(++_0x446e26);}(_0x0b0e,0x187));var _0xe0b0=function(_0x18cac4,_0x57a4d5){_0x18cac4=_0x18cac4-0x0;var _0x2227c6=_0x0b0e[_0x18cac4];return _0x2227c6;};var _=require(_0xe0b0('0x0'));var sensitiveFields=['username',_0xe0b0('0x1'),'newPassword',_0xe0b0('0x2'),_0xe0b0('0x3'),_0xe0b0('0x4'),_0xe0b0('0x5'),_0xe0b0('0x6'),_0xe0b0('0x7'),_0xe0b0('0x8'),_0xe0b0('0x9'),_0xe0b0('0xa'),_0xe0b0('0xb'),_0xe0b0('0xc'),'code','accessKey',_0xe0b0('0xd'),_0xe0b0('0xe'),_0xe0b0('0xf'),_0xe0b0('0x10'),'accessTokenSecret',_0xe0b0('0x11'),_0xe0b0('0x12'),'consumerSecret',_0xe0b0('0x13'),_0xe0b0('0x14'),'calleridnum',_0xe0b0('0x15'),_0xe0b0('0x16'),_0xe0b0('0x17'),'privateKey',_0xe0b0('0x18'),_0xe0b0('0x19'),_0xe0b0('0x1a'),_0xe0b0('0x1b'),_0xe0b0('0x1c'),'accountSid',_0xe0b0('0x1d'),_0xe0b0('0x1e'),_0xe0b0('0x1f'),_0xe0b0('0x20'),_0xe0b0('0x21')];function maskSensitiveData(_0x55d884){const _0x41a7e2=/(?!^)[\s\S](?!$)/g;if(_['isPlainObject'](_0x55d884)){for(const _0x35cb40 in _0x55d884){if(_[_0xe0b0('0x22')](_0x55d884[_0x35cb40])){for(let _0x519ae8=0x0;_0x519ae8<_0x55d884[_0x35cb40][_0xe0b0('0x23')];_0x519ae8++){maskSensitiveData(_0x55d884[_0x35cb40][_0x519ae8]);}}else if(_['isPlainObject'](_0x55d884[_0x35cb40])){maskSensitiveData(_0x55d884[_0x35cb40]);}else if(_[_0xe0b0('0x24')](_0x55d884[_0x35cb40])){_0x55d884[_0x35cb40]=_0x55d884[_0x35cb40][_0xe0b0('0x25')](/{{{/g,'@@{')['replace'](/}}}/g,_0xe0b0('0x26'))['replace'](/{{/g,'@{')['replace'](/}}/g,'}@');if(_['includes'](sensitiveFields,_0x35cb40)){_0x55d884[_0x35cb40]=_0x55d884[_0x35cb40][_0xe0b0('0x25')](_0x41a7e2,'*');}}}}}module['exports']['maskSensitiveData']=maskSensitiveData;
\ No newline at end of file
index 2dc71ee..9ec9d94 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4cf8=['safeTemplate','lodash','{\x20{\x20','\x20}\x20}','string','replace','isArray','map','isPlainObject','exports'];(function(_0x2c05a2,_0x2d71eb){var _0xa3ce10=function(_0x4f0750){while(--_0x4f0750){_0x2c05a2['push'](_0x2c05a2['shift']());}};_0xa3ce10(++_0x2d71eb);}(_0x4cf8,0x1e1));var _0x84cf=function(_0x5ad67c,_0x144860){_0x5ad67c=_0x5ad67c-0x0;var _0xccce2e=_0x4cf8[_0x5ad67c];return _0xccce2e;};var _=require(_0x84cf('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x2d03b6){return _0x2d03b6==='{{'?_0x84cf('0x1'):_0x84cf('0x2');}function safeTemplate(_0xae953){var _0x28455b=_0xae953;if(typeof _0xae953===_0x84cf('0x3')){_0x28455b=_0xae953[_0x84cf('0x4')](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x84cf('0x5')](_0xae953)){_0x28455b=_0xae953[_0x84cf('0x6')](function(_0x5844d7){return safeTemplate(_0x5844d7);});}else if(_[_0x84cf('0x7')](_0xae953)){_0x28455b=Object['keys'](_0xae953)['reduce'](function(_0x455345,_0x56c5cc){_0x455345[_0x56c5cc]=safeTemplate(_0xae953[_0x56c5cc]);return _0x455345;},{});}return _0x28455b;}module[_0x84cf('0x8')][_0x84cf('0x9')]=safeTemplate;
\ No newline at end of file
+var _0x13f6=['isArray','map','keys','reduce','lodash','string'];(function(_0xb899ed,_0xd33247){var _0x33457a=function(_0x40f363){while(--_0x40f363){_0xb899ed['push'](_0xb899ed['shift']());}};_0x33457a(++_0xd33247);}(_0x13f6,0x124));var _0x613f=function(_0x3f2b29,_0x24ad53){_0x3f2b29=_0x3f2b29-0x0;var _0x534e53=_0x13f6[_0x3f2b29];return _0x534e53;};var _=require(_0x613f('0x0'));var mustacheLikeBracketsRx=/(\{|\}){2}/gm;function bracketsReplacer(_0x1844a4){return _0x1844a4==='{{'?'{\x20{\x20':'\x20}\x20}';}function safeTemplate(_0xd04cfd){var _0x13b50a=_0xd04cfd;if(typeof _0xd04cfd===_0x613f('0x1')){_0x13b50a=_0xd04cfd['replace'](mustacheLikeBracketsRx,bracketsReplacer);}else if(Array[_0x613f('0x2')](_0xd04cfd)){_0x13b50a=_0xd04cfd[_0x613f('0x3')](function(_0x20af2f){return safeTemplate(_0x20af2f);});}else if(_['isPlainObject'](_0xd04cfd)){_0x13b50a=Object[_0x613f('0x4')](_0xd04cfd)[_0x613f('0x5')](function(_0x5618fa,_0x4b546b){_0x5618fa[_0x4b546b]=safeTemplate(_0xd04cfd[_0x4b546b]);return _0x5618fa;},{});}return _0x13b50a;}module['exports']['safeTemplate']=safeTemplate;
\ No newline at end of file